From 513d14013bc207de2097bb3b9346ed0717c46a14 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Thu, 30 Oct 2025 10:26:50 +0100 Subject: [PATCH 001/235] Make sure all variables occuring in type annotations are quantified --- interpreter/binary/decode.ml | 1 + spectec/src/frontend/elab.ml | 959 ++++++++++++++++++++--------------- spectec/src/il/debug.ml | 1 + spectec/src/il/eval.ml | 4 + spectec/src/il/print.ml | 4 +- spectec/src/il/subst.ml | 3 +- spectec/src/il/valid.ml | 49 +- 7 files changed, 582 insertions(+), 439 deletions(-) diff --git a/interpreter/binary/decode.ml b/interpreter/binary/decode.ml index 433b092ed..f817ff260 100644 --- a/interpreter/binary/decode.ml +++ b/interpreter/binary/decode.ml @@ -920,6 +920,7 @@ let rec instr s = | 0xebl -> f32x4_pmax | 0xecl -> f64x2_abs | 0xedl -> f64x2_neg + | 0xeel as n -> illegal s pos (I32.to_int_u n) | 0xefl -> f64x2_sqrt | 0xf0l -> f64x2_add | 0xf1l -> f64x2_sub diff --git a/spectec/src/frontend/elab.ml b/spectec/src/frontend/elab.ml index aebf818eb..4327acd50 100644 --- a/spectec/src/frontend/elab.ml +++ b/spectec/src/frontend/elab.ml @@ -709,21 +709,31 @@ let check_atoms phrase item list at = (* Iteration *) -let rec elab_iter env iter : Il.iter = +let rec elab_iter env iter : Il.bind list * Il.iter = match iter with - | Opt -> Il.Opt - | List -> Il.List - | List1 -> Il.List1 + | Opt -> [], Il.Opt + | List -> [], Il.List + | List1 -> [], Il.List1 | ListN (e, id_opt) -> Option.iter (fun id -> - let e' = checkpoint (elab_exp env (VarE (id, []) $ id.at) (NumT `NatT $ id.at)) in + let bs', e' = checkpoint (elab_exp env (VarE (id, []) $ id.at) (NumT `NatT $ id.at)) in (* TODO(4, rossberg): extend IL to allow arbitrary pattern exps *) match e'.it with - | Il.VarE _ -> () + | Il.VarE _ -> assert (bs' = []) | _ -> error_typ env id.at "iteration variable" (NumT `NatT $ id.at) ) id_opt; - let e' = checkpoint (elab_exp env e (NumT `NatT $ e.at)) in - Il.ListN (e', id_opt) + let bs', e' = checkpoint (elab_exp env e (NumT `NatT $ e.at)) in + bs', Il.ListN (e', id_opt) + +and elab_typiter env iter : Il.iter = + let iter = + match iter with + | List1 | ListN _ -> List + | _ -> iter + in + let bs', iter' = elab_iter env iter in + assert (bs' = []); + iter' (* Types *) @@ -734,7 +744,9 @@ and elab_typ env t : Il.typ = let id' = strip_var_suffix id in if id'.it <> id.it && as_ = [] then elab_typ env (Convert.typ_of_varid id') else let ps, _ = find "syntax type" env.typs id' in - let as', _s = elab_args `Rhs env as_ ps t.at in + let bs', as', _s = elab_args `Rhs env as_ ps t.at in + if bs' <> [] then + error t.at "illegal expression forms in type instantiation"; Il.VarT (id', as') $ t.at | BoolT -> Il.BoolT $ t.at | NumT t' -> Il.NumT t' $ t.at @@ -743,13 +755,9 @@ and elab_typ env t : Il.typ = | ParenT t1 -> elab_typ env t1 | TupT ts -> tup_typ' (List.map (elab_typ env) ts) t.at | IterT (t1, iter) -> - (match iter with - | List1 | ListN _ -> error t.at "illegal iterator in syntax type" - | _ -> - let iter' = elab_iter env iter in - let t1' = elab_typ env t1 in - Il.IterT (t1', iter') $ t.at - ) + let iter' = elab_typiter env iter in + let t1' = elab_typ env t1 in + Il.IterT (t1', iter') $ t.at | StrT _ | CaseT _ | ConT _ | RangeT _ | AtomT _ | SeqT _ | InfixT _ | BrackT _ -> error t.at "this type is only allowed in type definitions" @@ -836,7 +844,16 @@ and typ_rep env t : typ = ) (fst (List.hd ts_fes')) (List.tl ts_fes') | _ -> t -and elab_typfield env tid at ((atom, (t, prems), hints) as tf) : Il.typfield = +and elab_typfield env tid at (atom, (t, prems), hints) : Il.typfield = + let _mixop, bs', t', prems', _ = elab_typ_notation' env tid at t prems in + let hints' = elab_hints tid [] hints in + let t'' = (* TODO(4, rossberg): remove this hack *) + match t'.it with + | Il.TupT [(_, t1')] when prems' = [] -> t1' + | _ -> t' + in + (elab_atom atom tid, (bs', t'', prems'), hints') +(* assert (valid_tid tid); let env' = local_env env in let _mixop, ts', ts = elab_typ_notation env' tid t in @@ -848,7 +865,7 @@ and elab_typfield env tid at ((atom, (t, prems), hints) as tf) : Il.typfield = let prems' = List.map (Dim.annot_prem dims') (concat_map_filter_nl_list (elab_prem env') prems) in let det = Free.(diff (union (free_list det_exp es) (det_prems prems)) (bound_env env)) in - let free = Free.(diff (free_typfield tf) (union det (bound_env env))) in + let free = Free.(diff (union (free_typ t) (free_prems prems)) (union det (bound_env env))) in if free <> Free.empty then error at ("type field contains indeterminate variable(s) `" ^ String.concat "`, `" (Free.Set.elements free.varid) ^ "`"); @@ -860,15 +877,20 @@ and elab_typfield env tid at ((atom, (t, prems), hints) as tf) : Il.typfield = (!acc_bs', (if prems = [] then tup_typ' else tup_typ_bind' es') ts' t.at, prems'), elab_hints tid [] hints ) +*) -and elab_typcase env tid at ((_atom, (t, prems), hints) as tc) : Il.typcase = +and elab_typcase env tid at (_atom, (t, prems), hints) : Il.typcase = + let mixop, bs', t', prems', _ = elab_typ_notation' env tid at t prems in + let hints' = elab_hints tid [] hints in + (mixop, (bs', t', prems'), hints') +(* assert (valid_tid tid); let env' = local_env env in let mixop, ts', ts = elab_typ_notation env' tid t in let es = Convert.pats_of_typs ts in let dims = Dim.check_typdef (vars env) t prems in let dims' = Dim.Env.map (List.map (elab_iter env')) dims in - let es' = checkpoint (map_attempt Fun.id (List.map2 (elab_exp env') es ts)) in + let es' = checkpoint (map2_attempt (elab_exp env') es ts) in let es' = List.map (Dim.annot_exp dims') es' in let prems' = List.map (Dim.annot_prem dims') (concat_map_filter_nl_list (elab_prem env') prems) in @@ -890,8 +912,13 @@ and elab_typcase env tid at ((_atom, (t, prems), hints) as tc) : Il.typcase = (!acc_bs', tup_typ_bind' es' ts' at, prems'), elab_hints tid [] hints ) +*) -and elab_typcon env tid at (((t, prems), hints) as tc) : Il.typcase = +and elab_typcon env tid at ((t, prems), hints) : Il.typcase = + let mixop, bs', t', prems', _ = elab_typ_notation' env tid at t prems in + let hints' = elab_hints tid [Atom.Atom tid.it $$ tid.at % Atom.info ""] hints in + (mixop, (bs', t', prems'), hints') +(* assert (valid_tid tid); let env' = local_env env in let mixop, ts', ts = elab_typ_notation env' tid t in @@ -903,7 +930,7 @@ and elab_typcon env tid at (((t, prems), hints) as tc) : Il.typcase = let prems' = List.map (Dim.annot_prem dims') (concat_map_filter_nl_list (elab_prem env') prems) in let det = Free.(diff (union (free_list det_exp es) (det_prems prems)) (bound_env env)) in - let free = Free.(diff (free_typcon tc) (union det (bound_env env))) in + let free = Free.(diff (union (free_typ t) (free_prems prems)) (union det (bound_env env))) in if free <> Free.empty then error at ("type constraint contains indeterminate variable(s) `" ^ String.concat "`, `" (Free.Set.elements free.varid) ^ "`"); @@ -915,30 +942,64 @@ and elab_typcon env tid at (((t, prems), hints) as tc) : Il.typcase = (!acc_bs', tup_typ_bind' es' ts' at, prems'), elab_hints tid [Atom.Atom tid.it $$ tid.at % Atom.info ""] hints ) +*) and elab_typenum env tid (e1, e2o) : typ * (Il.exp -> numtyp -> Il.exp) = assert (valid_tid tid); let _e1' = elab_exp env e1 (NumT `IntT $ e1.at) in (* ensure it's <= int *) - let _, t1 = checkpoint (infer_exp env e1) in (* get precise type *) + let _bs1', _, t1 = checkpoint (infer_exp env e1) in (* get precise type *) match e2o with | None -> t1, fun eid' nt -> - let e1' = checkpoint (elab_exp env e1 (NumT nt $ e1.at)) in (* redo with overall type *) + let bs1', e1' = checkpoint (elab_exp env e1 (NumT nt $ e1.at)) in (* redo with overall type *) + if bs1' <> [] then + error e1.at "illegal expression form in range type"; Il.(CmpE (`EqOp, `BoolT, eid', e1') $$ e1'.at % (BoolT $ e1.at)) | Some e2 -> let at = Source.over_region [e1.at; e2.at] in - let _e2' = elab_exp env e2 (NumT `IntT $ e2.at) in - let _, t2 = checkpoint (infer_exp env e2) in + let _bs21', _e2' = checkpoint (elab_exp env e2 (NumT `IntT $ e2.at)) in + let _bs22, _, t2 = checkpoint (infer_exp env e2) in (if narrow_typ env t2 t1 then t1 else t2).it $ at, fun eid' nt -> - let e1' = checkpoint (elab_exp env e1 (NumT nt $ e1.at)) in - let e2' = checkpoint (elab_exp env e2 (NumT nt $ e2.at)) in + let bs1', e1' = checkpoint (elab_exp env e1 (NumT nt $ e1.at)) in + let bs2', e2' = checkpoint (elab_exp env e2 (NumT nt $ e2.at)) in + if bs1' <> [] then + error e1.at "illegal expression form in range type"; + if bs2' <> [] then + error e2.at "illegal expression form in range type"; Il.(BinE (`AndOp, `BoolT, CmpE (`GeOp, (nt :> Il.optyp), eid', e1') $$ e1'.at % (BoolT $ e1.at), CmpE (`LeOp, (nt :> Il.optyp), eid', e2') $$ e2'.at % (BoolT $ e2.at) ) $$ at % (BoolT $ at)) +and elab_typ_notation' env tid at t prems : Il.mixop * Il.bind list * Il.typ * Il.prem list * typ list = + assert (valid_tid tid); + let env' = local_env env in + let mixop, ts', ts = elab_typ_notation env' tid t in + let es = Convert.pats_of_typs ts in + let dims = Dim.check_typdef (vars env) t prems in + let dims' = Dim.Env.map (List.map (elab_typiter env')) dims in + let bss1', es' = List.split (checkpoint (map2_attempt (elab_exp env') es ts)) in + let es' = List.map (Dim.annot_exp dims') es' in + let bss2', premss' = List.split (map_filter_nl_list (elab_prem env') prems) in + let prems' = List.map (Dim.annot_prem dims') (List.concat premss') in + let det = Free.(diff (union (free_list det_exp es) (det_prems prems)) (bound_env env)) in + let free = Free.(diff (union (free_typ t) (free_prems prems)) (union det (bound_env env))) in + if free <> Free.empty then +(Printf.printf "[notation] t = %s\n%!" (Print.string_of_typ t); +List.iteri (fun i e -> Printf.printf "[notation] t%d = %s\n%!" i (Print.string_of_typ e)) ts; +List.iteri (fun i e -> Printf.printf "[notation] t%d' = %s\n%!" i (Il.Print.string_of_typ e)) ts'; +List.iteri (fun i e -> Printf.printf "[notation] e%d = %s\n%!" i (Print.string_of_exp e)) es; + error at ("premise contains indeterminate variable(s) `" ^ + String.concat "`, `" (Free.Set.elements free.varid) ^ "`"); +); + let acc_bs', (module Arg : Iter.Arg) = make_binds_iter_arg env' det dims in + let module Acc = Iter.Make(Arg) in + List.iter Acc.exp es; + Acc.prems prems; + mixop, !acc_bs' @ List.concat (bss1' @ bss2'), tup_typ_bind' es' ts' t.at, prems', ts + and elab_typ_notation env tid t : Il.mixop * Il.typ list * typ list = Debug.(log_at "el.elab_typ_notation" t.at (fun _ -> fmt "(%s) %s" tid.it (el_typ t)) @@ -953,7 +1014,9 @@ and elab_typ_notation env tid t : Il.mixop * Il.typ list * typ list = (match find "syntax type" env.typs id' with | _, Transp -> error_id id "invalid forward reference to syntax type" | ps, _ -> - let as', _s = elab_args `Rhs env as_ ps t.at in + let bs', as', _s = elab_args `Rhs env as_ ps t.at in + if bs' <> [] then + error t.at "illegal expression forms in type instantiation"; [[]; []], [Il.VarT (id', as') $ t.at], [t] ) | t' -> @@ -991,16 +1054,16 @@ and (!!!) env tid t = * - Fail (at, s) when it cannot, where s is the name of the failing construct * - raises Error.Error on fatal, unrecoverable errors *) -and infer_exp env e : (Il.exp * typ) attempt = +and infer_exp env e : (Il.bind list * Il.exp * typ) attempt = Debug.(log_at "el.infer_exp" e.at (fun _ -> fmt "%s" (el_exp e)) - (function Ok (e', t) -> fmt "%s : %s" (il_exp e') (el_typ t) | _ -> "fail") + (function Ok (bs', e', t) -> fmt "%s%s : %s" (il_binds bs') (il_exp e') (el_typ t) | _ -> "fail") ) @@ fun _ -> - let* e', t' = infer_exp' env e in + let* bs', e', t' = infer_exp' env e in let t = t' $ e.at in - Ok (e' $$ e.at % elab_typ env t, t) + Ok (bs', e' $$ e.at % elab_typ env t, t) -and infer_exp' env e : (Il.exp' * typ') attempt = +and infer_exp' env e : (Il.bind list * Il.exp' * typ') attempt = match e.it with | VarE (id, args) -> (* Args may only occur due to syntactic overloading with types *) @@ -1015,98 +1078,99 @@ and infer_exp' env e : (Il.exp' * typ') attempt = env.vars <- bind "variable" env.vars id t; Ok t else fail_infer e.at "variable" - in Ok (Il.VarE id, t.it) + in Ok ([], Il.VarE id, t.it) | AtomE _ -> fail_infer e.at "atom" | BoolE b -> - Ok (Il.BoolE b, BoolT) + Ok ([], Il.BoolE b, BoolT) | NumE (_op, n) -> - Ok (Il.NumE n, NumT (Num.to_typ n)) + Ok ([], Il.NumE n, NumT (Num.to_typ n)) | TextE s -> - Ok (Il.TextE s, TextT) + Ok ([], Il.TextE s, TextT) | CvtE (e1, nt) -> - let* e1', t1 = infer_exp env e1 in + let* bs1', e1', t1 = infer_exp env e1 in let* nt1 = as_num_typ "conversion" env Infer t1 e1.at in - let* e1'' = cast_exp "operand" env e1' t1 (NumT nt1 $ e1.at) in - Ok (Il.CvtE (e1'', nt1, nt), NumT nt) + let* bs1'', e1'' = cast_exp "operand" env e1' t1 (NumT nt1 $ e1.at) in + Ok (bs1' @ bs1'', Il.CvtE (e1'', nt1, nt), NumT nt) | UnE (op, e1) -> - let* e1', t1 = infer_exp env e1 in + let* bs1', e1', t1 = infer_exp env e1 in let* op', ot, t1', t = infer_unop env op (typ_rep env t1) e.at in - let* e1'' = cast_exp "operand" env e1' t1 t1' in + let* bs1'', e1'' = cast_exp "operand" env e1' t1 t1' in if op = `PlusMinusOp || op = `MinusPlusOp then env.pm <- true; - Ok (Il.UnE (op', ot, e1''), t.it) + Ok (bs1' @ bs1'', Il.UnE (op', ot, e1''), t.it) | BinE (e1, op, e2) -> - let* e1', t1 = infer_exp env e1 in - let* e2', t2 = infer_exp env e2 in + let* bs1', e1', t1 = infer_exp env e1 in + let* bs2', e2', t2 = infer_exp env e2 in let* op', ot, t1', t2', t = infer_binop env op (typ_rep env t1) (typ_rep env t2) e.at in - let* e1'' = cast_exp "operand" env e1' t1 t1' in - let* e2'' = cast_exp "operand" env e2' t2 t2' in - Ok (Il.BinE (op', ot, e1'', e2''), t.it) + let* bs1'', e1'' = cast_exp "operand" env e1' t1 t1' in + let* bs2'', e2'' = cast_exp "operand" env e2' t2 t2' in + Ok (bs1' @ bs1'' @ bs2' @ bs2'', Il.BinE (op', ot, e1'', e2''), t.it) | CmpE (e1, op, ({it = CmpE (e21, _, _); _} as e2)) -> - let* e1', _t1 = infer_exp env (CmpE (e1, op, e21) $ e.at) in - let* e2', _t2 = infer_exp env e2 in - Ok (Il.BinE (`AndOp, `BoolT, e1', e2'), BoolT) + let* bs1', e1', _t1 = infer_exp env (CmpE (e1, op, e21) $ e.at) in + let* bs2', e2', _t2 = infer_exp env e2 in + Ok (bs1' @ bs2', Il.BinE (`AndOp, `BoolT, e1', e2'), BoolT) | CmpE (e1, op, e2) -> (match infer_cmpop env op with | `Poly op' -> - let* e1', e2' = + let* bs', e1', e2' = choice env [ (fun env -> - let* e2', t2 = infer_exp env e2 in - let* e1' = elab_exp env e1 t2 in - Ok (e1', e2') + let* bs2', e2', t2 = infer_exp env e2 in + let* bs1', e1' = elab_exp env e1 t2 in + Ok (bs1' @ bs2', e1', e2') ); (fun env -> - let* e1', t1 = infer_exp env e1 in - let* e2' = elab_exp env e2 t1 in - Ok (e1', e2') + let* bs1', e1', t1 = infer_exp env e1 in + let* bs2', e2' = elab_exp env e2 t1 in + Ok (bs1' @ bs2', e1', e2') ); ] in - Ok (Il.CmpE (op', `BoolT, e1', e2'), BoolT) + Ok (bs', Il.CmpE (op', `BoolT, e1', e2'), BoolT) | `Over elab_cmpop' -> - let* e1', t1 = infer_exp env e1 in - let* e2', t2 = infer_exp env e2 in + let* bs1', e1', t1 = infer_exp env e1 in + let* bs2', e2', t2 = infer_exp env e2 in let* op', ot, t = elab_cmpop' (typ_rep env t1) (typ_rep env t2) e.at in - let* e1'' = cast_exp "operand" env e1' t1 t in - let* e2'' = cast_exp "operand" env e2' t2 t in - Ok (Il.CmpE (op', ot, e1'', e2''), BoolT) + let* bs1'', e1'' = cast_exp "operand" env e1' t1 t in + let* bs2'', e2'' = cast_exp "operand" env e2' t2 t in + Ok (bs1' @ bs1'' @ bs2' @ bs2'', Il.CmpE (op', ot, e1'', e2''), BoolT) ) | IdxE (e1, e2) -> - let* e1', t1 = infer_exp env e1 in + let* bs1', e1', t1 = infer_exp env e1 in let* t = as_list_typ "expression" env Infer t1 e1.at in - let* e2' = elab_exp env e2 (NumT `NatT $ e2.at) in - Ok (Il.IdxE (e1', e2'), t.it) + let* bs2', e2' = elab_exp env e2 (NumT `NatT $ e2.at) in + Ok (bs1' @ bs2', Il.IdxE (e1', e2'), t.it) | SliceE (e1, e2, e3) -> - let* e1', t1 = infer_exp env e1 in + let* bs1', e1', t1 = infer_exp env e1 in let* _t' = as_list_typ "expression" env Infer t1 e1.at in - let* e2' = elab_exp env e2 (NumT `NatT $ e2.at) in - let* e3' = elab_exp env e3 (NumT `NatT $ e3.at) in - Ok (Il.SliceE (e1', e2', e3'), t1.it) + let* bs2', e2' = elab_exp env e2 (NumT `NatT $ e2.at) in + let* bs3', e3' = elab_exp env e3 (NumT `NatT $ e3.at) in + Ok (bs1' @ bs2' @ bs3', Il.SliceE (e1', e2', e3'), t1.it) | UpdE (e1, p, e2) -> - let* e1', t1 = infer_exp env e1 in - let* p', t2 = elab_path env p t1 in - let* e2' = elab_exp env e2 t2 in - Ok (Il.UpdE (e1', p', e2'), t1.it) + let* bs1', e1', t1 = infer_exp env e1 in + let* bs', p', t2 = elab_path env p t1 in + let* bs2', e2' = elab_exp env e2 t2 in + Ok (bs1' @ bs' @ bs2', Il.UpdE (e1', p', e2'), t1.it) | ExtE (e1, p, e2) -> - let* e1', t1 = infer_exp env e1 in - let* p', t2 = elab_path env p t1 in + let* bs1', e1', t1 = infer_exp env e1 in + let* bs', p', t2 = elab_path env p t1 in let* _t21 = as_list_typ "path" env Infer t2 p.at in - let* e2' = elab_exp env e2 t2 in - Ok (Il.ExtE (e1', p', e2'), t1.it) + let* bs2', e2' = elab_exp env e2 t2 in + Ok (bs1' @ bs' @ bs2', Il.ExtE (e1', p', e2'), t1.it) | StrE _ -> fail_infer e.at "record" | DotE (e1, atom) -> - let* e1', t1 = infer_exp env e1 in + let* bs1', e1', t1 = infer_exp env e1 in let* tfs, dots1 = as_struct_typ "expression" env Infer t1 e1.at in if dots1 = Dots then error e1.at "used record type is only partially defined at this point"; +(*TODO*) let* t, prems = attempt (find_field tfs atom e1.at) t1 in let e' = Il.DotE (e1', elab_atom atom (expand_id env t1)) in let e'' = if prems = [] then e' else Il.ProjE (e' $$ e.at % elab_typ env t, 0) in - Ok (e'', t.it) + Ok (bs1', e'', t.it) | CommaE (e1, e2) -> - let* e1', t1 = infer_exp env e1 in + let* bs1', e1', t1 = infer_exp env e1 in let* tfs, dots1 = as_struct_typ "expression" env Infer t1 e1.at in if dots1 = Dots then error e1.at "used record type is only partially defined at this point"; @@ -1116,83 +1180,84 @@ and infer_exp' env e : (Il.exp' * typ') attempt = | SeqE ({it = AtomE atom; at; _} :: es2) -> let* _t2 = attempt (find_field tfs atom at) t1 in let e2 = match es2 with [e2] -> e2 | _ -> SeqE es2 $ e2.at in - let* e2' = elab_exp env (StrE [Elem (atom, e2)] $ e2.at) t1 in - Ok (Il.CompE (e2', e1'), t1.it) + let* bs2', e2' = elab_exp env (StrE [Elem (atom, e2)] $ e2.at) t1 in + Ok (bs1' @ bs2', Il.CompE (e2', e1'), t1.it) | _ -> error e.at "malformed comma operator" ) | CatE (e1, e2) -> - let* e1', t1 = infer_exp env e1 in + let* bs1', e1', t1 = infer_exp env e1 in let* _ = as_cat_typ "operand" env Infer t1 e1.at in - let* e2' = elab_exp env e2 t1 in - Ok ((if is_iter_typ env t1 then Il.CatE (e1', e2') else Il.CompE (e1', e2')), t1.it) + let* bs2', e2' = elab_exp env e2 t1 in + Ok (bs1' @ bs2', + (if is_iter_typ env t1 then Il.CatE (e1', e2') else Il.CompE (e1', e2')), t1.it) | MemE (e1, e2) -> choice env [ (fun env -> - let* e1', t1 = infer_exp env e1 in - let* e2' = elab_exp env e2 (IterT (t1, List) $ e2.at) in - Ok (Il.MemE (e1', e2'), BoolT) + let* bs1', e1', t1 = infer_exp env e1 in + let* bs2', e2' = elab_exp env e2 (IterT (t1, List) $ e2.at) in + Ok (bs1' @ bs2', Il.MemE (e1', e2'), BoolT) ); (fun env -> - let* e2', t2 = infer_exp env e2 in + let* bs2', e2', t2 = infer_exp env e2 in let* t1 = as_list_typ "operand" env Infer t2 e2.at in - let* e1' = elab_exp env e1 t1 in - Ok (Il.MemE (e1', e2'), BoolT) + let* bs1', e1' = elab_exp env e1 t1 in + Ok (bs1' @ bs2', Il.MemE (e1', e2'), BoolT) ); ] | LenE e1 -> - let* e1', t1 = infer_exp env e1 in + let* bs1', e1', t1 = infer_exp env e1 in let* _t11 = as_list_typ "expression" env Infer t1 e1.at in - Ok (Il.LenE e1', NumT `NatT) + Ok (bs1', Il.LenE e1', NumT `NatT) | SizeE id -> let _ = find "grammar" env.grams id in - Ok (Il.NumE (`Nat Z.zero), NumT `NatT) + Ok ([], Il.NumE (`Nat Z.zero), NumT `NatT) | ParenE e1 | ArithE e1 -> infer_exp' env e1 | TupE es -> - let* es', ts = infer_exp_list env es in - Ok (Il.TupE es', TupT ts) + let* bs', es', ts = infer_exp_list env es in + Ok (bs', Il.TupE es', TupT ts) | CallE (id, as_) -> let ps, t, _ = find "definition" env.defs id in - let as', s = elab_args `Rhs env as_ ps e.at in - Ok (Il.CallE (id, as'), (Subst.subst_typ s t).it) + let bs', as', s = elab_args `Rhs env as_ ps e.at in + Ok (bs', Il.CallE (id, as'), (Subst.subst_typ s t).it) | EpsE -> fail_infer e.at "empty sequence" | SeqE [] -> (* treat as empty tuple, not principal *) - Ok (Il.TupE [], TupT []) + Ok ([], Il.TupE [], TupT []) | SeqE es | ListE es -> (* treat as homogeneous sequence, not principal *) - let* es', ts = infer_exp_list env es in + let* bs', es', ts = infer_exp_list env es in let t = List.hd ts in if List.for_all (equiv_typ env t) (List.tl ts) then - Ok (Il.ListE es', IterT (t, List)) + Ok (bs', Il.ListE es', IterT (t, List)) else fail_infer e.at "expression sequence" | InfixE _ -> fail_infer e.at "infix expression" | BrackE _ -> fail_infer e.at "bracket expression" | IterE (e1, iter) -> - let iter' = elab_iterexp env iter in - let* e1', t1 = infer_exp env e1 in - Ok (Il.IterE (e1', iter'), IterT (t1, match iter with ListN _ -> List | _ -> iter)) + let bs', iter' = elab_iterexp env iter in + let* bs1', e1', t1 = infer_exp env e1 in + Ok (bs1' @ bs', Il.IterE (e1', iter'), IterT (t1, match iter with ListN _ -> List | _ -> iter)) | TypE (e1, t) -> let _t' = elab_typ env t in - let* e1' = elab_exp env e1 t in - Ok (e1'.it, t.it) + let* bs1', e1' = elab_exp env e1 t in + Ok (bs1', e1'.it, t.it) | HoleE _ -> error e.at "misplaced hole" | FuseE _ -> error e.at "misplaced token concatenation" | UnparenE _ -> error e.at "misplaced unparenthesize" | LatexE _ -> error e.at "misplaced latex literal" and infer_exp_list env = function - | [] -> Ok ([], []) + | [] -> Ok ([], [], []) | e::es -> - let* e', t = infer_exp env e in - let* es', ts = infer_exp_list env es in - Ok (e'::es', t::ts) + let* bs1', e', t = infer_exp env e in + let* bs2', es', ts = infer_exp_list env es in + Ok (bs1' @ bs2', e'::es', t::ts) -and elab_exp env e t : Il.exp attempt = +and elab_exp env e t : (Il.bind list * Il.exp) attempt = Debug.(log_at "el.elab_exp" e.at (fun _ -> fmt "%s : %s" (el_exp e) (el_typ t)) - (function Ok e' -> fmt "%s" (il_exp e') | _ -> "fail") + (function Ok (bs', e') -> fmt "%s%s" (il_binds bs') (il_exp e') | _ -> "fail") ) @@ fun _ -> nest e.at t ( if is_iter_typ env t then @@ -1208,9 +1273,9 @@ and elab_exp env e t : Il.exp attempt = match e.it with | VarE ({it = "_"; _}, []) | EpsE | SeqE [] -> fail_silent | _ -> - let* e' = elab_exp env e t1 in + let* bs', e' = elab_exp env e t1 in let t' = elab_typ env t in - Ok (lift_exp' e' iter $$ e.at % t') + Ok (bs', lift_exp' e' iter $$ e.at % t') ); (fun env -> elab_exp_plain env e t); ] @@ -1224,22 +1289,23 @@ and elab_exp env e t : Il.exp attempt = elab_exp_plain env e t ) -and elab_exp_plain env e t : Il.exp attempt = +and elab_exp_plain env e t : (Il.bind list * Il.exp) attempt = Debug.(log_at "el.elab_exp_plain" e.at (fun _ -> fmt "%s : %s" (el_exp e) (el_typ t)) - (function Ok e' -> fmt "%s" (il_exp e') | _ -> "fail") + (function Ok (bs', e') -> fmt "%s%s" (il_binds bs') (il_exp e') | _ -> "fail") ) @@ fun _ -> - let* e' = elab_exp_plain' env e t in + let* bs', e' = elab_exp_plain' env e t in let t' = elab_typ env t in - Ok (e' $$ e.at % t') + Ok (bs', e' $$ e.at % t') -and elab_exp_plain' env e t : Il.exp' attempt = +and elab_exp_plain' env e t : (Il.bind list * Il.exp') attempt = match e.it with | BoolE _ | NumE _ | CvtE _ | UnE _ | BinE _ | CmpE _ | IdxE _ | DotE _ | MemE _ | LenE _ | SizeE _ | CallE _ | TypE _ | HoleE _ | FuseE _ | UnparenE _ | LatexE _ -> - let* e', t' = infer_exp env e in - cast_exp' "expression" env e' t' t + let* bs1', e', t' = infer_exp env e in + let* bs2', e'' = cast_exp' "expression" env e' t' t in + Ok (bs1' @ bs2', e'') | TextE s -> let cs = try Utf8.decode s with Utf8.Utf8 -> [] in (* Allow treatment as character constant *) @@ -1248,55 +1314,57 @@ and elab_exp_plain' env e t : Il.exp' attempt = (Il.NumT `NatT $ e.at) in cast_exp' "character" env e' (NumT `NatT $ e.at) t else - let* e', t' = infer_exp env e in - cast_exp' "expression" env e' t' t + let* bs1', e', t' = infer_exp env e in + let* bs2', e'' = cast_exp' "expression" env e' t' t in + Ok (bs1' @ bs2', e'') | VarE (id, _) when id.it = "_" -> - Ok (Il.VarE id) + Ok ([], Il.VarE id) | VarE (id, _) -> choice env [ (fun env -> - let* e', t' = infer_exp env e in - cast_exp' "expression" env e' t' t + let* bs1', e', t' = infer_exp env e in + let* bs2', e'' = cast_exp' "expression" env e' t' t in + Ok (bs1' @ bs2', e'') ); (fun env -> if is_iter_typ env t && id.it <> "_" then (* Never infer an iteration type for a variable *) let* t1, iter = as_iter_typ "" env Check t e.at in - let* e' = elab_exp env e t1 in - Ok (lift_exp' e' iter) + let* bs', e' = elab_exp env e t1 in + Ok (bs', lift_exp' e' iter) else if not (bound env.vars id || bound env.gvars (strip_var_suffix id)) then let _ = () in env.vars <- bind "variable" env.vars id t; - Ok (Il.VarE id) + Ok ([], Il.VarE id) else fail_silent (* suitable error was produced by infer_exp already *) ); ] | SliceE (e1, e2, e3) -> let* _t' = as_list_typ "expression" env Check t e1.at in - let* e1' = elab_exp env e1 t in - let* e2' = elab_exp env e2 (NumT `NatT $ e2.at) in - let* e3' = elab_exp env e3 (NumT `NatT $ e3.at) in - Ok (Il.SliceE (e1', e2', e3')) + let* bs1', e1' = elab_exp env e1 t in + let* bs2', e2' = elab_exp env e2 (NumT `NatT $ e2.at) in + let* bs3', e3' = elab_exp env e3 (NumT `NatT $ e3.at) in + Ok (bs1' @ bs2' @ bs3', Il.SliceE (e1', e2', e3')) | UpdE (e1, p, e2) -> - let* e1' = elab_exp env e1 t in - let* p', t2 = elab_path env p t in - let* e2' = elab_exp env e2 t2 in - Ok (Il.UpdE (e1', p', e2')) + let* bs1', e1' = elab_exp env e1 t in + let* bs', p', t2 = elab_path env p t in + let* bs2', e2' = elab_exp env e2 t2 in + Ok (bs1' @ bs' @ bs2', Il.UpdE (e1', p', e2')) | ExtE (e1, p, e2) -> - let* e1' = elab_exp env e1 t in - let* p', t2 = elab_path env p t in + let* bs1', e1' = elab_exp env e1 t in + let* bs', p', t2 = elab_path env p t in let* _t21 = as_list_typ "path" env Check t2 p.at in - let* e2' = elab_exp env e2 t2 in - Ok (Il.ExtE (e1', p', e2')) + let* bs2', e2' = elab_exp env e2 t2 in + Ok (bs1' @ bs' @ bs2', Il.ExtE (e1', p', e2')) | StrE efs -> let* tfs, dots = as_struct_typ "record" env Check t e.at in if dots = Dots then error e.at "used record type is only partially defined at this point"; - let* efs' = elab_expfields env (expand_id env t) (filter_nl efs) tfs t e.at in - Ok (Il.StrE efs') + let* bs', efs' = elab_expfields env (expand_id env t) (filter_nl efs) tfs t e.at in + Ok (bs', Il.StrE efs') | CommaE (e1, e2) -> - let* e1' = elab_exp env e1 t in + let* bs1', e1' = elab_exp env e1 t in let* tfs, dots1 = as_struct_typ "expression" env Check t e1.at in if dots1 = Dots then error e1.at "used record type is only partially defined at this point"; @@ -1306,30 +1374,32 @@ and elab_exp_plain' env e t : Il.exp' attempt = | SeqE ({it = AtomE atom; at; _} :: es2) -> let* _t2 = attempt (find_field tfs atom at) t in let e2 = match es2 with [e2] -> e2 | _ -> SeqE es2 $ e2.at in - let* e2' = elab_exp env (StrE [Elem (atom, e2)] $ e2.at) t in - Ok (Il.CompE (e2', e1')) + let* bs2', e2' = elab_exp env (StrE [Elem (atom, e2)] $ e2.at) t in + Ok (bs1' @ bs2', Il.CompE (e2', e1')) | _ -> error e.at "malformed comma operator" ) | CatE (e1, e2) -> let* _ = as_cat_typ "expression" env Check t e.at in - let* e1' = elab_exp env e1 t in - let* e2' = elab_exp env e2 t in - Ok (if is_iter_typ env t then Il.CatE (e1', e2') else Il.CompE (e1', e2')) + let* bs1', e1' = elab_exp env e1 t in + let* bs2', e2' = elab_exp env e2 t in + Ok (bs1' @ bs2', + if is_iter_typ env t then Il.CatE (e1', e2') else Il.CompE (e1', e2')) | ParenE e1 | ArithE e1 -> elab_exp_plain' env e1 t | TupE es -> let* ts = as_tup_typ "tuple" env Check t e.at in - let* es' = elab_exp_list env es ts e.at in - Ok (Il.TupE es') + let* bs', es' = elab_exp_list env es ts e.at in + Ok (bs', Il.TupE es') | ListE es -> let* t1, iter = as_iter_typ "list" env Check t e.at in if iter <> List then fail_typ env e.at "list" t else let ts = List.init (List.length es) (fun _ -> t1) in - let* es' = elab_exp_list env es ts e.at in - Ok (Il.ListE es') + let* bs', es' = elab_exp_list env es ts e.at in + Ok (bs', Il.ListE es') | SeqE [] when is_empty_typ env t -> - let* e', t' = infer_exp env e in - cast_exp' "empty expression" env e' t' t + let* bs1', e', t' = infer_exp env e in + let* bs2', e'' = cast_exp' "empty expression" env e' t' t in + Ok (bs1' @ bs2', e'') | EpsE | SeqE _ when is_iter_typ env t -> let* t1, iter = as_iter_typ "" env Check t e.at in elab_exp_iter' env (unseq_exp e) (t1, iter) t e.at @@ -1343,12 +1413,12 @@ and elab_exp_plain' env e t : Il.exp' attempt = * the latter case is already captured above *) if is_notation_typ env t then let* nt = as_notation_typ "" env Check t e.at in - let* e' = elab_exp_notation env (expand_id env t) e nt t in - Ok e'.it + let* bs', e' = elab_exp_notation env (expand_id env t) e nt t in + Ok (bs', e'.it) else if is_variant_typ env t then let* tcs, _ = as_variant_typ "" env Check t e.at in - let* e' = elab_exp_variant env (expand_id env t) e tcs t e.at in - Ok e'.it + let* bs', e' = elab_exp_variant env (expand_id env t) e tcs t e.at in + Ok (bs', e'.it) else let name = match e.it with @@ -1361,106 +1431,112 @@ and elab_exp_plain' env e t : Il.exp' attempt = in fail_typ env e.at name t | IterE (e1, iter2) -> let* t1, iter = as_iter_typ "iteration" env Check t e.at in - let iter2' = elab_iterexp env iter2 in - let* e1' = elab_exp env e1 t1 in + let bs2', iter2' = elab_iterexp env iter2 in + let* bs1', e1' = elab_exp env e1 t1 in + let bs' = bs1' @ bs2' in let e' = Il.IterE (e1', iter2') in match iter2, iter with - | Opt, Opt -> Ok e' + | Opt, Opt -> Ok (bs', e') | Opt, List -> - Ok (Il.LiftE (e' $$ e.at % (Il.IterT (elab_typ env t1, Opt) $ e1.at))) + Ok (bs', Il.LiftE (e' $$ e.at % (Il.IterT (elab_typ env t1, Opt) $ e1.at))) | _, Opt -> fail_typ env e.at "iteration" t - | _, _ -> Ok e' + | _, _ -> Ok (bs', e') -and elab_exp_list env es ts at : Il.exp list attempt = +and elab_exp_list env es ts at : (Il.bind list * Il.exp list) attempt = match es, ts with - | [], [] -> Ok [] + | [], [] -> Ok ([], []) | e::es, t::ts -> - let* e' = elab_exp env e t in - let* es' = elab_exp_list env es ts at in - Ok (e'::es') + let* bs1', e' = elab_exp env e t in + let* bs2', es' = elab_exp_list env es ts at in + Ok (bs1' @ bs2', e'::es') | _, _ -> fail at "arity mismatch for expression list" -and elab_expfields env tid efs tfs t0 at : Il.expfield list attempt = +and elab_expfields env tid efs tfs t0 at : (Il.bind list * Il.expfield list) attempt = Debug.(log_in_at "el.elab_expfields" at (fun _ -> fmt "{%s} : {%s} = %s" (list el_expfield efs) (list el_typfield tfs) (el_typ t0)) ); assert (valid_tid tid); match efs, tfs with - | [], [] -> Ok [] + | [], [] -> Ok ([], []) | (atom1, e)::efs2, (atom2, (t, prems), _)::tfs2 when atom1.it = atom2.it -> - let* es', _s = elab_exp_notation' env tid e t in - let* efs2' = elab_expfields env tid efs2 tfs2 t0 at in + let* bs1', es', _s = elab_exp_notation' env tid e t in + let* bs2', efs2' = elab_expfields env tid efs2 tfs2 t0 at in let e' = (if prems = [] then tup_exp' else tup_exp_bind') es' e.at in - Ok ((elab_atom atom1 tid, e') :: efs2') + Ok (bs1' @ bs2', (elab_atom atom1 tid, e') :: efs2') | _, (atom, (t, prems), _)::tfs2 -> let atom' = string_of_atom atom in - let* e1' = + let* bs1', e1' = cast_empty ("omitted record field `" ^ atom' ^ "`") env t at (elab_typ env t) in let e' = (if prems = [] then tup_exp' else tup_exp_bind') [e1'] at in - let* efs2' = elab_expfields env tid efs tfs2 t0 at in - Ok ((elab_atom atom tid, e') :: efs2') + let* bs2', efs2' = elab_expfields env tid efs tfs2 t0 at in + Ok (bs1' @ bs2', (elab_atom atom tid, e') :: efs2') | (atom, e)::_, [] -> fail_atom e.at atom t0 "undefined or misplaced record field" -and elab_exp_iter env es (t1, iter) t at : Il.exp attempt = - let* e' = elab_exp_iter' env es (t1, iter) t at in - Ok (e' $$ at % elab_typ env t) +and elab_exp_iter env es (t1, iter) t at : (Il.bind list * Il.exp) attempt = + let* bs', e' = elab_exp_iter' env es (t1, iter) t at in + Ok (bs', e' $$ at % elab_typ env t) -and elab_exp_iter' env es (t1, iter) t at : Il.exp' attempt = +and elab_exp_iter' env es (t1, iter) t at : (Il.bind list * Il.exp') attempt = Debug.(log_at "el.elab_exp_iter" at (fun _ -> fmt "%s : %s = (%s)%s" (seq el_exp es) (el_typ t) (el_typ t1) (el_iter iter)) - (function Ok e' -> fmt "%s" (il_exp (e' $$ at % elab_typ env t)) | _ -> "fail") + (function Ok (bs', e') -> fmt "%s%s" (il_binds bs') (il_exp (e' $$ at % elab_typ env t)) | _ -> "fail") ) @@ fun _ -> match es, iter with | [], Opt -> - Ok (Il.OptE None) + Ok ([], Il.OptE None) | [e1], Opt -> - let* e1' = elab_exp env e1 t1 in - Ok (Il.OptE (Some e1')) + let* bs1', e1' = elab_exp env e1 t1 in + Ok (bs1', Il.OptE (Some e1')) | _::_::_, Opt -> fail_typ env at "expression" t | [], List -> - Ok (Il.ListE []) + Ok ([], Il.ListE []) | e1::es2, List -> - let* e1' = elab_exp env e1 t in + let* bs1', e1' = elab_exp env e1 t in let at' = Source.over_region (after_region e1.at :: List.map Source.at es2) in - let* e2' = elab_exp_iter env es2 (t1, iter) t at' in - Ok (cat_exp' e1' e2') + let* bs2', e2' = elab_exp_iter env es2 (t1, iter) t at' in + Ok (bs1' @ bs2', cat_exp' e1' e2') | _, (List1 | ListN _) -> assert false -and elab_exp_notation env tid e nt t : Il.exp attempt = +and elab_exp_notation env tid e nt t : (Il.bind list * Il.exp) attempt = (* Convert notation into applications of mixin operators *) assert (valid_tid tid); - let* es', _s = elab_exp_notation' env tid e nt in + let* bs1', es', _s = elab_exp_notation' env tid e nt in + + let mixop, bs2', t', _prems', _ = elab_typ_notation' env tid e.at nt [] in + Ok (bs1' @ bs2', Il.CaseE (mixop, Il.TupE es' $$ e.at % t') $$ e.at % elab_typ env t) +(* let mixop, ts', _ = elab_typ_notation env tid nt in assert (List.length es' = List.length ts'); Ok (Il.CaseE (mixop, tup_exp_bind' es' e.at) $$ e.at % elab_typ env t) +*) -and elab_exp_notation' env tid e t : (Il.exp list * Subst.t) attempt = +and elab_exp_notation' env tid e t : (Il.bind list * Il.exp list * Subst.t) attempt = Debug.(log_at "el.elab_exp_notation" e.at (fun _ -> fmt "%s : %s" (el_exp e) (el_typ t)) - (function Ok (es', _) -> fmt "%s" (seq il_exp es') | _ -> "fail") + (function Ok (bs', es', _) -> fmt "%s %s" (il_binds bs') (seq il_exp es') | _ -> "fail") ) @@ fun _ -> assert (valid_tid tid); match e.it, t.it with | AtomE atom, AtomT atom' -> if atom.it <> atom'.it then fail_typ env e.at "atom" t else let _ = elab_atom atom tid in - Ok ([], Subst.empty) + Ok ([], [], Subst.empty) | InfixE (e1, atom, e2), InfixT (_, atom', _) when Atom.sub atom' atom -> let e21 = ParenE (SeqE [] $ e2.at) $ e2.at in elab_exp_notation' env tid (InfixE (e1, atom', SeqE [e21; e2] $ e2.at) $ e.at) t | InfixE (e1, atom, e2), InfixT (t1, atom', t2) -> if atom.it <> atom'.it then fail_typ env e.at "infix expression" t else - let* es1', s1 = elab_exp_notation' env tid e1 t1 in - let* es2', s2 = elab_exp_notation' env tid e2 (Subst.subst_typ s1 t2) in + let* bs1', es1', s1 = elab_exp_notation' env tid e1 t1 in + let* bs2', es2', s2 = elab_exp_notation' env tid e2 (Subst.subst_typ s1 t2) in let _ = elab_atom atom tid in - Ok (es1' @ es2', Subst.union s1 s2) + Ok (bs1' @ bs2', es1' @ es2', Subst.union s1 s2) | BrackE (l, e1, r), BrackT (l', t1, r') -> if (l.it, r.it) <> (l'.it, r'.it) then fail_typ env e.at "bracket expression" t else let _ = elab_atom l tid in @@ -1468,7 +1544,7 @@ and elab_exp_notation' env tid e t : (Il.exp list * Subst.t) attempt = elab_exp_notation' env tid e1 t1 | SeqE [], SeqT [] -> - Ok ([], Subst.empty) + Ok ([], [], Subst.empty) | _, SeqT (t1::ts2) when is_iter_typ env t1 -> let* t11, iter = as_iter_typ "iteration" env Check t1 e.at in elab_exp_notation_iter env tid (unseq_exp e) (t11, iter) t1 ts2 e.at @@ -1480,29 +1556,29 @@ and elab_exp_notation' env tid e t : (Il.exp list * Subst.t) attempt = | SeqE (e1::es2), SeqT [t1] -> choice env [ (fun env -> - let* es1', s1 = elab_exp_notation' env tid (unparen_exp e1) t1 in + let* bs1', es1', s1 = elab_exp_notation' env tid (unparen_exp e1) t1 in let e2 = SeqE es2 $ Source.over_region (after_region e1.at :: List.map Source.at es2) in let t2 = SeqT [] $ Source.after_region t1.at in - let* es2', s2 = elab_exp_notation' env tid e2 (Subst.subst_typ s1 t2) in - Ok (es1' @ es2', Subst.union s1 s2) + let* bs2', es2', s2 = elab_exp_notation' env tid e2 (Subst.subst_typ s1 t2) in + Ok (bs1' @ bs2', es1' @ es2', Subst.union s1 s2) ); (fun env -> - let* e' = elab_exp env e t1 in - Ok ([e'], Subst.empty) + let* bs', e' = elab_exp env e t1 in + Ok (bs', [e'], Subst.empty) ) ] | SeqE (e1::es2), SeqT (t1::ts2) -> - let* es1', s1 = elab_exp_notation' env tid (unparen_exp e1) t1 in + let* bs1', es1', s1 = elab_exp_notation' env tid (unparen_exp e1) t1 in let e2 = SeqE es2 $ Source.over_region (after_region e1.at :: List.map Source.at es2) in let t2 = SeqT ts2 $ Source.over_region (after_region t1.at :: List.map Source.at ts2) in - let* es2', s2 = elab_exp_notation' env tid e2 (Subst.subst_typ s1 t2) in - Ok (es1' @ es2', Subst.union s1 s2) + let* bs2', es2', s2 = elab_exp_notation' env tid e2 (Subst.subst_typ s1 t2) in + Ok (bs1' @ bs2', es1' @ es2', Subst.union s1 s2) (* Trailing elements can be omitted if they can be eps *) | SeqE [], SeqT (t1::ts2) -> - let* e1' = cast_empty "omitted sequence tail" env t1 e.at (!!!env tid t1) in + let* bs1', e1' = cast_empty "omitted sequence tail" env t1 e.at (!!!env tid t1) in let t2 = SeqT ts2 $ Source.over_region (after_region t1.at :: List.map Source.at ts2) in - let* es2', s2 = elab_exp_notation' env tid e t2 in - Ok (e1' :: es2', s2) + let* bs2', es2', s2 = elab_exp_notation' env tid e t2 in + Ok (bs1' @ bs2', e1' :: es2', s2) | SeqE (e1::_), SeqT [] -> fail e1.at "expression is not empty" (* Since trailing elements can be omitted, a singleton may match a sequence *) @@ -1519,63 +1595,63 @@ and elab_exp_notation' env tid e t : (Il.exp list * Subst.t) attempt = fail_typ env e.at "expression" t | _, _ -> - let* e' = elab_exp env e t in - Ok ([e'], Subst.add_varid Subst.empty (Convert.varid_of_typ t) e) + let* bs', e' = elab_exp env e t in + Ok (bs', [e'], Subst.add_varid Subst.empty (Convert.varid_of_typ t) e) -and elab_exp_notation_iter env tid es (t1, iter) t ts at : (Il.exp list * Subst.t) attempt = +and elab_exp_notation_iter env tid es (t1, iter) t ts at : (Il.bind list * Il.exp list * Subst.t) attempt = assert (valid_tid tid); let t' = elab_typ env t in - let* e', es', s = elab_exp_notation_iter' env tid es (t1, iter) t ts t' at in - Ok (e'::es', s) + let* bs', e', es', s = elab_exp_notation_iter' env tid es (t1, iter) t ts t' at in + Ok (bs', e'::es', s) -and elab_exp_notation_iter' env tid es (t1, iter) t ts t' at : (Il.exp * Il.exp list * Subst.t) attempt = +and elab_exp_notation_iter' env tid es (t1, iter) t ts t' at : (Il.bind list * Il.exp * Il.exp list * Subst.t) attempt = Debug.(log_at "el.elab_exp_notation_iter" at (fun _ -> fmt "%s : %s = (%s)%s" (seq el_exp es) (el_typ t) (el_typ t1) (el_iter iter)) - (function Ok (e', es', _) -> fmt "%s" (seq il_exp (e'::es')) | _ -> "fail") + (function Ok (bs', e', es', _) -> fmt "%s %s" (il_binds bs') (seq il_exp (e'::es')) | _ -> "fail") ) @@ fun _ -> let tat' = Source.over_region (after_region t.at :: List.map Source.at ts) in match es, iter with | [], Opt -> - let* es', s = elab_exp_notation' env tid (SeqE [] $ at) (SeqT ts $ tat') in - Ok (Il.OptE None $$ at % t', es', s) + let* bs', es', s = elab_exp_notation' env tid (SeqE [] $ at) (SeqT ts $ tat') in + Ok (bs', Il.OptE None $$ at % t', es', s) | e1::es2, Opt -> choice env [ (fun env -> - let* es', s = elab_exp_notation' env tid (SeqE (e1::es2) $ at) (SeqT ts $ tat') in - Ok (Il.OptE None $$ Source.before_region e1.at % t', es', s) + let* bs', es', s = elab_exp_notation' env tid (SeqE (e1::es2) $ at) (SeqT ts $ tat') in + Ok (bs', Il.OptE None $$ Source.before_region e1.at % t', es', s) ); (fun env -> - let* e1' = elab_exp env e1 t in + let* bs1', e1' = elab_exp env e1 t in let at' = Source.over_region (after_region e1.at :: List.map Source.at es2) in - let* es2', s = elab_exp_notation' env tid (SeqE es2 $ at') (SeqT ts $ tat') in - Ok (e1', es2', s) + let* bs2', es2', s = elab_exp_notation' env tid (SeqE es2 $ at') (SeqT ts $ tat') in + Ok (bs1' @ bs2', e1', es2', s) ); ] | [], List -> - let* es', s = elab_exp_notation' env tid (SeqE [] $ at) (SeqT ts $ tat') in - Ok (Il.ListE [] $$ at % t', es', s) + let* bs', es', s = elab_exp_notation' env tid (SeqE [] $ at) (SeqT ts $ tat') in + Ok (bs', Il.ListE [] $$ at % t', es', s) | e1::es2, List -> choice env [ (fun env -> - let* es', s = elab_exp_notation' env tid (SeqE (e1::es2) $ at) (SeqT ts $ tat') in - Ok (Il.ListE [] $$ at % t', es', s) + let* bs', es', s = elab_exp_notation' env tid (SeqE (e1::es2) $ at) (SeqT ts $ tat') in + Ok (bs', Il.ListE [] $$ at % t', es', s) ); (fun env -> - let* e1' = elab_exp env e1 t in + let* bs1', e1' = elab_exp env e1 t in let at' = Source.over_region (after_region e1.at :: List.map Source.at es2) in - let* e2', es2', s = elab_exp_notation_iter' env tid es2 (t1, iter) t ts t' at' in - Ok (cat_exp' e1' e2' $$ Source.over_region [e1'.at; e2'.at] % t', es2', s) + let* bs2', e2', es2', s = elab_exp_notation_iter' env tid es2 (t1, iter) t ts t' at' in + Ok (bs1' @ bs2', cat_exp' e1' e2' $$ Source.over_region [e1'.at; e2'.at] % t', es2', s) ); ] | _, (List1 | ListN _) -> assert false -and elab_exp_variant env tid e cases t at : Il.exp attempt = +and elab_exp_variant env tid e cases t at : (Il.bind list * Il.exp) attempt = Debug.(log_at "el.elab_exp_variant" e.at (fun _ -> fmt "%s : %s = %s" (el_exp e) tid.it (el_typ t)) - (function Ok e' -> fmt "%s" (il_exp e') | _ -> "fail") + (function Ok (bs', e') -> fmt "%s%s" (il_binds bs') (il_exp e') | _ -> "fail") ) @@ fun _ -> assert (valid_tid tid); let* atom = @@ -1587,167 +1663,200 @@ and elab_exp_variant env tid e cases t at : Il.exp attempt = | _ -> fail_typ env at "expression" t in let* t1, _prems = attempt (find_case_sub cases atom atom.at) t in - let* es', _s = elab_exp_notation' env tid e t1 in + let* bs1', es', _s = elab_exp_notation' env tid e t1 in let t2 = expand env t $ at in let t2' = elab_typ env t2 in + + let mixop, bs2', t1', _prems', _ = elab_typ_notation' env tid e.at t1 [] in + let* bs3', e' = cast_exp "variant case" env + (Il.CaseE (mixop, Il.TupE es' $$ at % t1') $$ at % t2') t2 t in + Ok (bs1' @ bs2' @ bs3', e') +(* let mixop, ts', _ = elab_typ_notation env tid t1 in assert (List.length es' = List.length ts'); cast_exp "variant case" env (Il.CaseE (mixop, tup_exp_bind' es' at) $$ at % t2') t2 t +*) +and elab_path env p t : (Il.bind list * Il.path * typ) attempt = + let* bs', p', t' = elab_path' env p t in + Ok (bs', p' $$ p.at % elab_typ env t', t') -and elab_path env p t : (Il.path * typ) attempt = - let* p', t' = elab_path' env p t in - Ok (p' $$ p.at % elab_typ env t', t') - -and elab_path' env p t : (Il.path' * typ) attempt = +and elab_path' env p t : (Il.bind list * Il.path' * typ) attempt = match p.it with | RootP -> - Ok (Il.RootP, t) + Ok ([], Il.RootP, t) | IdxP (p1, e1) -> - let* p1', t1 = elab_path env p1 t in - let e1' = checkpoint (elab_exp env e1 (NumT `NatT $ e1.at)) in + let* bs1', p1', t1 = elab_path env p1 t in + let bs2', e1' = checkpoint (elab_exp env e1 (NumT `NatT $ e1.at)) in let* t' = as_list_typ "path" env Check t1 p1.at in - Ok (Il.IdxP (p1', e1'), t') + Ok (bs1' @ bs2', Il.IdxP (p1', e1'), t') | SliceP (p1, e1, e2) -> - let* p1', t1 = elab_path env p1 t in - let e1' = checkpoint (elab_exp env e1 (NumT `NatT $ e1.at)) in - let e2' = checkpoint (elab_exp env e2 (NumT `NatT $ e2.at)) in + let* bs', p1', t1 = elab_path env p1 t in + let bs1', e1' = checkpoint (elab_exp env e1 (NumT `NatT $ e1.at)) in + let bs2', e2' = checkpoint (elab_exp env e2 (NumT `NatT $ e2.at)) in let* _ = as_list_typ "path" env Check t1 p1.at in - Ok (Il.SliceP (p1', e1', e2'), t1) + Ok (bs' @ bs1' @ bs2', Il.SliceP (p1', e1', e2'), t1) | DotP (p1, atom) -> - let* p1', t1 = elab_path env p1 t in + let* bs1', p1', t1 = elab_path env p1 t in let* tfs, dots1 = as_struct_typ "path" env Check t1 p1.at in if dots1 = Dots then error p1.at "used record type is only partially defined at this point"; +(*TODO*) let* t', _prems = attempt (find_field tfs atom p1.at) t1 in - Ok (Il.DotP (p1', elab_atom atom (expand_id env t1)), t') + Ok (bs1', Il.DotP (p1', elab_atom atom (expand_id env t1)), t') -and cast_empty phrase env t at t' : Il.exp attempt = +and cast_empty phrase env t at t' : (Il.bind list * Il.exp) attempt = Debug.(log_at "el.elab_exp_cast_empty" at (fun _ -> fmt "%s >> (%s)" (el_typ t) (el_typ (expand_notation env t $ t.at))) - (function Ok r -> fmt "%s" (il_exp r) | _ -> "fail") + (function Ok (bs', e') -> fmt "%s%s" (il_binds bs') (il_exp e') | _ -> "fail") ) @@ fun _ -> nest at t ( match expand_notation env t with - | SeqT [] -> Ok (Il.ListE [] $$ at % t') - | IterT (_, Opt) -> Ok (Il.OptE None $$ at % t') - | IterT (_, List) -> Ok (Il.ListE [] $$ at % t') + | SeqT [] -> Ok ([], Il.ListE [] $$ at % t') + | IterT (_, Opt) -> Ok ([], Il.OptE None $$ at % t') + | IterT (_, List) -> Ok ([], Il.ListE [] $$ at % t') | VarT _ when is_iter_notation_typ env t -> (match expand_iter_notation env t with | IterT (_, iter) as t1 -> +(*TODO*) let mixop, ts', _ts = elab_typ_notation env (expand_id env t) (t1 $ t.at) in assert (List.length ts' = 1); let e1' = if iter = Opt then Il.OptE None else Il.ListE [] in - Ok (Il.CaseE (mixop, tup_exp_bind' [e1' $$ at % List.hd ts'] at) $$ at % t') + Ok ([], Il.CaseE (mixop, tup_exp_bind' [e1' $$ at % List.hd ts'] at) $$ at % t') | _ -> fail_typ env at phrase t ) | _ -> fail_typ env at phrase t ) -and cast_exp phrase env e' t1 t2 : Il.exp attempt = - let* e'' = nest e'.at t2 (cast_exp' phrase env e' t1 t2) in - Ok (e'' $$ e'.at % elab_typ env (expand_nondef env t2)) +and cast_exp phrase env e' t1 t2 : (Il.bind list * Il.exp) attempt = + let* bs', e'' = nest e'.at t2 (cast_exp' phrase env e' t1 t2) in + Ok (bs', e'' $$ e'.at % elab_typ env (expand_nondef env t2)) -and cast_exp' phrase env e' t1 t2 : Il.exp' attempt = +and cast_exp' phrase env e' t1 t2 : (Il.bind list * Il.exp') attempt = Debug.(log_at "el.elab_exp_cast" e'.at (fun _ -> fmt "%s <: %s >> (%s) <: (%s) = (%s)" (el_typ t1) (el_typ t2) (el_typ (expand_def env t1 $ t1.at)) (el_typ (expand_def env t2 $ t2.at)) (el_typ (expand_nondef env t2)) ) - (function Ok r -> fmt "%s" (il_exp (r $$ e'.at % elab_typ env t2)) | _ -> "fail") + (function Ok (bs', e'') -> fmt "%s%s" (il_binds bs') (il_exp (e'' $$ e'.at % elab_typ env t2)) | _ -> "fail") ) @@ fun _ -> - if equiv_typ env t1 t2 then Ok e'.it else + if equiv_typ env t1 t2 then Ok ([], e'.it) else match expand_def env t1, expand_def env t2 with | _, _ when sub_typ env t1 t2 -> let t1' = elab_typ env (expand_nondef env t1) in let t2' = elab_typ env (expand_nondef env t2) in - Ok (Il.SubE (e', t1', t2')) + Ok ([], Il.SubE (e', t1', t2')) | NumT nt1, NumT nt2 when nt1 < nt2 || lax_num && nt1 <> `RealT -> - Ok (Il.CvtE (e', nt1, nt2)) + Ok ([], Il.CvtE (e', nt1, nt2)) | TupT [], SeqT [] -> - Ok e'.it + Ok ([], e'.it) | ConT ((t11, _), _), ConT ((t21, _), _) -> choice env [ (fun env -> + (* Two ConT's with the same operator can be cast pointwise *) + let mixop1, bs1', t1', _prems1', ts1 = elab_typ_notation' env (expand_id env t1) t1.at t11 [] in + let mixop2, bs2', _t2', _prems2', ts2 = elab_typ_notation' env (expand_id env t2) t2.at t21 [] in +(* let mixop1, ts1', ts1 = elab_typ_notation env (expand_id env t1) t11 in let mixop2, _ts2', ts2 = elab_typ_notation env (expand_id env t2) t21 in +*) if mixop1 <> mixop2 then fail_typ2 env e'.at phrase t1 t2 "" else - let e'' = Il.UncaseE (e', mixop1) $$ e'.at % tup_typ' ts1' e'.at in + let e'' = Il.UncaseE (e', mixop1) $$ e'.at % t1' in +Printf.printf "[1] %s => %s\n%!" (Debug.el_typ t1) (Debug.il_typ t1'); + let ts1' = match t1'.it with Il.TupT ets -> List.map snd ets | _ -> [t1'] in let es' = List.mapi (fun i t1I' -> Il.ProjE (e'', i) $$ e''.at % t1I') ts1' in - let* es'' = map2_attempt (fun eI' (t1I, t2I) -> + let* bss'_es'' = map2_attempt (fun eI' (t1I, t2I) -> cast_exp phrase env eI' t1I t2I) es' (List.combine ts1 ts2) in - Ok (Il.CaseE (mixop2, tup_exp_bind' es'' e'.at)) + let bss', es'' = List.split bss'_es'' in + Ok (bs1' @ bs2' @ List.concat bss', Il.CaseE (mixop2, tup_exp_bind' es'' e'.at)) ); (fun env -> + (* Two unary ConT's can be cast transitively *) Debug.(log_in_at "el.cast_exp" e'.at (fun _ -> fmt "%s <: %s >> (%s) <: (%s) = (%s) # backtrack 1" (el_typ t1) (el_typ t2) (el_typ (expand_def env t1 $ t1.at)) (el_typ (expand_def env t2 $ t2.at)) (el_typ (expand_nondef env t2)) ) ); + let mixop, bs', t1', _prems', ts = elab_typ_notation' env (expand_id env t1) t1.at t11 [] in +(* let mixop, ts', ts = elab_typ_notation env (expand_id env t1) t11 in - let* t111, t111' = match ts, ts' with [t111], [t111'] -> Ok (t111, t111') | _ -> +*) + let* t111, t111' = match ts, t1'.it with [t111], Il.TupT [_, t111'] -> Ok (t111, t111') | _ -> fail_typ2 env e'.at phrase t1 t2 "" in - let e'' = Il.UncaseE (e', mixop) $$ e'.at % tup_typ' ts' e'.at in - cast_exp' phrase env (Il.ProjE (e'', 0) $$ e'.at % t111') t111 t2 +Printf.printf "[2] %s => %s\n%!" (Debug.el_typ t1) (Debug.il_typ t1'); + let e'' = Il.UncaseE (e', mixop) $$ e'.at % t1' in + let* bs'', e''' = cast_exp' phrase env (Il.ProjE (e'', 0) $$ e'.at % t111') t111 t2 in + Ok (bs' @ bs'', e''') ); ] | ConT ((t11, _), _), t2' -> choice env [ (fun env -> - let* e'' = + let* bs', e'' = match t2' with | IterT (t21, iter) -> - let* e1' = cast_exp phrase env e' t1 t21 in + let* bs1', e1' = cast_exp phrase env e' t1 t21 in (match iter with - | Opt -> Ok (Il.OptE (Some e1')) - | List -> Ok (Il.ListE [e1']) + | Opt -> Ok (bs1', Il.OptE (Some e1')) + | List -> Ok (bs1', Il.ListE [e1']) | _ -> assert false ) | _ -> fail_silent in - Ok e'' + Ok (bs', e'') ); (fun env -> + (* A ConT can be cast to its payload *) Debug.(log_in_at "el.cast_exp" e'.at (fun _ -> fmt "%s <: %s >> (%s) <: (%s) = (%s) # backtrack 2" (el_typ t1) (el_typ t2) (el_typ (expand_def env t1 $ t1.at)) (el_typ (expand_def env t2 $ t2.at)) (el_typ (expand_nondef env t2)) ) ); + let mixop, bs', t1', _prems', ts = elab_typ_notation' env (expand_id env t1) t1.at t11 [] in +(* let mixop, ts', ts = elab_typ_notation env (expand_id env t1) t11 in - let* t111, t111' = match ts, ts' with [t111], [t111'] -> Ok (t111, t111') | _ -> +*) + let* t111, t111' = match ts, t1'.it with [t111], Il.TupT [_, t111'] -> Ok (t111, t111') | _ -> fail_typ2 env e'.at phrase t1 t2 "" in - let e'' = Il.UncaseE (e', mixop) $$ e'.at % tup_typ' ts' e'.at in - cast_exp' phrase env (Il.ProjE (e'', 0) $$ e'.at % t111') t111 t2 +Printf.printf "[3] %s => %s\n%!" (Debug.el_typ t1) (Debug.il_typ t1'); + let e'' = Il.UncaseE (e', mixop) $$ e'.at % t1' in + let* bs'', e''' = cast_exp' phrase env (Il.ProjE (e'', 0) $$ e'.at % t111') t111 t2 in + Ok (bs' @ bs'', e''') ); ] | _, ConT ((t21, _), _) -> + (* A ConT payload can be cast to the ConT *) + let mixop, bs', t', _prems', ts = elab_typ_notation' env (expand_id env t2) t2.at t21 [] in +(* let mixop, _ts', ts = elab_typ_notation env (expand_id env t2) t21 in +*) let* t211 = match ts with [t211] -> Ok t211 | _ -> fail_typ2 env e'.at phrase t1 t2 "" in - let* e1' = cast_exp phrase env e' t1 t211 in - Ok (Il.CaseE (mixop, tup_exp_bind' [e1'] e'.at)) + let* bs1', e1' = cast_exp phrase env e' t1 t211 in + Ok (bs' @ bs1', Il.CaseE (mixop, Il.TupE [e1'] $$ e'.at % t')) | RangeT _, t2' -> choice env [ (fun env -> - let* e'' = + let* bs', e'' = match t2' with | IterT (t21, iter) -> - let* e1' = cast_exp phrase env e' t1 t21 in + let* bs1', e1' = cast_exp phrase env e' t1 t21 in (match iter with - | Opt -> Ok (Il.OptE (Some e1')) - | List -> Ok (Il.ListE [e1']) + | Opt -> Ok (bs1', Il.OptE (Some e1')) + | List -> Ok (bs1', Il.ListE [e1']) | _ -> assert false ) | _ -> fail_silent in - Ok e'' + Ok (bs', e'') ); (fun env -> + (* A RangeT can be cast to its carrier type *) Debug.(log_in_at "el.cast_exp" e'.at (fun _ -> fmt "%s <: %s >> (%s) <: (%s) = (%s) # backtrack 3" (el_typ t1) (el_typ t2) (el_typ (expand_def env t1 $ t1.at)) (el_typ (expand_def env t2 $ t2.at)) @@ -1756,30 +1865,32 @@ and cast_exp' phrase env e' t1 t2 : Il.exp' attempt = ); let t11 = typ_rep env t1 in let t11' = elab_typ env t11 in - let e'' = Il.UncaseE (e', [[]; []]) $$ e'.at % tup_typ' [t11'] e'.at in +Printf.printf "[4] %s => %s\n%!" (Debug.el_typ t11) (Debug.il_typ t11'); + let e'' = Il.UncaseE (e', [[]; []]) $$ e'.at % t11' in let e''' = Il.ProjE (e'', 0) $$ e'.at % t11' in cast_exp' phrase env e''' t11 t2 ); ] | _, RangeT _ -> + (* A respective carrier type can be cast to RangeT *) let t21 = typ_rep env t2 in - let* e'' = cast_exp phrase env e' t1 t21 in - Ok (Il.CaseE ([[]; []], tup_exp_bind' [e''] e'.at)) + let* bs', e'' = cast_exp phrase env e' t1 t21 in + Ok (bs', Il.CaseE ([[]; []], Il.TupE [e''] $$ e'.at % elab_typ env t21)) | _, IterT (t21, Opt) -> - let* e'' = cast_exp phrase env e' t1 t21 in - Ok (Il.OptE (Some e'')) + let* bs', e'' = cast_exp phrase env e' t1 t21 in + Ok (bs', Il.OptE (Some e'')) (* TODO(3, rossberg): enable; violates invariant that all iterexps are initially empty | IterT (t11, List), IterT (t21, List) -> choice env [ (fun env -> let id = x $ e'.at in let t11' = elab_typ env t11 in - let* e'' = cast_exp phrase env (Il.VarE id $$ e'.at % t11') t11 t21 in - Ok (Il.IterE (e'', (List, [x, e']))) + let* bs', e'' = cast_exp phrase env (Il.VarE id $$ e'.at % t11') t11 t21 in + Ok (bs', Il.IterE (e'', (List, [x, e']))) ); (fun env -> - let* e'' = cast_exp phrase env e' t1 t21 in - Ok (Il.ListE [e'']) + let* bs', e'' = cast_exp phrase env e' t1 t21 in + Ok (bs', Il.ListE [e'']) ); ] *) @@ -1791,13 +1902,13 @@ and cast_exp' phrase env e' t1 t2 : Il.exp' attempt = cast_exp' phrase env e'' (IterT (t11, List) $ e'.at) t2 ); (fun env -> - let* e'' = cast_exp phrase env e' t1 t21 in - Ok (Il.ListE [e'']) + let* bs', e'' = cast_exp phrase env e' t1 t21 in + Ok (bs', Il.ListE [e'']) ); ] | _, IterT (t21, (List | List1)) -> - let* e'' = cast_exp phrase env e' t1 t21 in - Ok (Il.ListE [e'']) + let* bs', e'' = cast_exp phrase env e' t1 t21 in + Ok (bs', Il.ListE [e'']) | _, _ when is_variant_typ env t1 && is_variant_typ env t2 && not (is_iter_typ env t1) -> let cases1, dots1 = checkpoint (as_variant_typ "" env Check t1 e'.at) in let cases2, _dots2 = checkpoint (as_variant_typ "" env Check t2 e'.at) in @@ -1821,55 +1932,58 @@ and cast_exp' phrase env e' t1 t2 : Il.exp' attempt = let t21 = expand env t2 $ t2.at in let t11' = elab_typ env (expand_nondef env t1) in let t21' = elab_typ env (expand_nondef env t2) in - let* e'' = cast_exp phrase env e' t1 t11 in + let* bs1', e'' = cast_exp phrase env e' t1 t11 in let e''' = Il.SubE (e'', t11', t21') in - cast_exp' phrase env (e''' $$ e'.at % t21') t21 t2 + let* bs2', e'''' = cast_exp' phrase env (e''' $$ e'.at % t21') t21 t2 in + Ok (bs1' @ bs2', e'''') | _, _ -> fail_typ2 env e'.at phrase t1 t2 "" -and elab_iterexp env iter : Il.iterexp = - (elab_iter env iter, []) +and elab_iterexp env iter : Il.bind list * Il.iterexp = + let bs', iter' = elab_iter env iter in + (bs', (iter', [])) (* Premises *) -and elab_prem env prem : Il.prem list = +and elab_prem env prem : Il.bind list * Il.prem list = match prem.it with | VarPr (id, t) -> env.vars <- bind "variable" env.vars id t; - [] + [], [] | RulePr (id, e) -> let t, _ = find "relation" env.rels id in let mixop, _, _ = elab_typ_notation env id t in - let es', _s = checkpoint (elab_exp_notation' env id e t) in - [Il.RulePr (id, mixop, tup_exp' es' e.at) $ prem.at] + let bs', es', _s = checkpoint (elab_exp_notation' env id e t) in + bs', [Il.RulePr (id, mixop, tup_exp' es' e.at) $ prem.at] | IfPr e -> - let e' = checkpoint (elab_exp env e (BoolT $ e.at)) in - [Il.IfPr e' $ prem.at] + let bs', e' = checkpoint (elab_exp env e (BoolT $ e.at)) in + bs', [Il.IfPr e' $ prem.at] | ElsePr -> - [Il.ElsePr $ prem.at] + [], [Il.ElsePr $ prem.at] | IterPr ({it = VarPr _; at; _}, _iter) -> error at "misplaced variable premise" | IterPr (prem1, iter) -> - let iter' = elab_iterexp env iter in - let prem1' = List.hd (elab_prem env prem1) in - [Il.IterPr (prem1', iter') $ prem.at] + let bs', iter' = elab_iterexp env iter in + let bs1', prems1' = elab_prem env prem1 in + assert (List.length prems1' = 1); + bs' @ bs1', [Il.IterPr (List.hd prems1', iter') $ prem.at] (* Grammars *) -and infer_sym env g : (Il.sym * typ) attempt = +and infer_sym env g : (Il.bind list * Il.sym * typ) attempt = Debug.(log_at "el.infer_sym" g.at (fun _ -> fmt "%s" (el_sym g)) - (function Ok (g', t) -> fmt "%s : %s" (il_sym g') (el_typ t) | _ -> "fail") + (function Ok (bs', g', t) -> fmt "%s %s : %s" (il_binds bs') (il_sym g') (el_typ t) | _ -> "fail") ) @@ fun _ -> nest g.at (TupT [] $ g.at) ( match g.it with | VarG (id, as_) -> let ps, t, _gram, _prods' = find "grammar" env.grams id in - let as', s = elab_args `Rhs env as_ ps g.at in - Ok (Il.VarG (id, as') $ g.at, Subst.subst_typ s t) + let bs', as', s = elab_args `Rhs env as_ ps g.at in + Ok (bs', Il.VarG (id, as') $ g.at, Subst.subst_typ s t) | NumG (`CharOp, n) -> (* let s = try Utf8.encode [Z.to_int n] with Z.Overflow | Utf8.Utf8 -> @@ -1879,56 +1993,59 @@ and infer_sym env g : (Il.sym * typ) attempt = if n < Z.of_int 0x00 || n > Z.of_int 0x10ffff then fail g.at "unicode value out of range" else - Ok (Il.NumG (Z.to_int n) $ g.at, NumT `NatT $ g.at) + Ok ([], Il.NumG (Z.to_int n) $ g.at, NumT `NatT $ g.at) | NumG (_, n) -> if n < Z.of_int 0x00 || n > Z.of_int 0xff then fail g.at "byte value out of range" else - Ok (Il.NumG (Z.to_int n) $ g.at, NumT `NatT $ g.at) + Ok ([], Il.NumG (Z.to_int n) $ g.at, NumT `NatT $ g.at) | TextG s -> - Ok (Il.TextG s $ g.at, TextT $ g.at) + Ok ([], Il.TextG s $ g.at, TextT $ g.at) | EpsG -> - Ok (Il.EpsG $ g.at, TupT [] $ g.at) + Ok ([], Il.EpsG $ g.at, TupT [] $ g.at) | SeqG gs -> - let* gs' = elab_sym_list env (filter_nl gs) (TupT [] $ g.at) in - Ok (Il.SeqG gs' $ g.at, TupT [] $ g.at) + let* bs', gs' = elab_sym_list env (filter_nl gs) (TupT [] $ g.at) in + Ok (bs', Il.SeqG gs' $ g.at, TupT [] $ g.at) | AltG gs -> choice env [ (fun env -> - let* gs', ts = infer_sym_list env (filter_nl gs) in - if ts <> [] && List.for_all (equiv_typ env (List.hd ts)) ts then - Ok (Il.AltG gs' $ g.at, List.hd ts) + let* bs', gs', ts = infer_sym_list env (filter_nl gs) in + if bs' <> [] then + fail g.at "invalid expressions in alternative" + else if ts <> [] && List.for_all (equiv_typ env (List.hd ts)) ts then + Ok ([], Il.AltG gs' $ g.at, List.hd ts) else fail g.at "inconsistent types" ); (fun env -> (* HACK to treat singleton strings in short grammar as characters *) - let* g' = elab_sym env g (NumT `NatT $ g.at) in - Ok (g', NumT `NatT $ g.at) + let* bs', g' = elab_sym env g (NumT `NatT $ g.at) in + Ok (bs', g', NumT `NatT $ g.at) ); (fun env -> - let* g' = elab_sym env g (TupT [] $ g.at) in - Ok (g', TupT [] $ g.at) + let* bs', g' = elab_sym env g (TupT [] $ g.at) in + Ok (bs', g', TupT [] $ g.at) ) ] | RangeG (g1, g2) -> let env1 = local_env env in let env2 = local_env env in - let* g1' = elab_sym env1 g1 (NumT `NatT $ g1.at) in - let* g2' = elab_sym env2 g2 (NumT `NatT $ g2.at) in + let* bs1', g1' = elab_sym env1 g1 (NumT `NatT $ g1.at) in + let* bs2', g2' = elab_sym env2 g2 (NumT `NatT $ g2.at) in if env1.vars != env.vars then error g1.at "invalid symbol in range"; if env2.vars != env.vars then error g2.at "invalid symbol in range"; - Ok (Il.RangeG (g1', g2') $ g.at, NumT `NatT $ g.at) + Ok (bs1' @ bs2', Il.RangeG (g1', g2') $ g.at, NumT `NatT $ g.at) | ParenG g1 -> infer_sym env g1 | TupG _ -> error g.at "malformed grammar" | ArithG e -> infer_sym env (sym_of_exp e) | IterG (g1, iter) -> - let iterexp' = elab_iterexp env iter in - let* g1', t1 = infer_sym env g1 in + let bs', iterexp' = elab_iterexp env iter in + let* bs1', g1', t1 = infer_sym env g1 in Ok ( + bs1' @ bs', Il.IterG (g1', iterexp') $ g.at, IterT (t1, match iter with Opt -> Opt | _ -> List) $ g.at ) @@ -1937,37 +2054,37 @@ and infer_sym env g : (Il.sym * typ) attempt = (fun env -> (* HACK to treat singleton strings in short grammar as characters *) let t1 = NumT `NatT $ g1.at in - let* g1' = elab_sym env g1 t1 in - let* e' = elab_exp env e t1 in - Ok (Il.AttrG (e', g1') $ g.at, t1) + let* bs1', g1' = elab_sym env g1 t1 in + let* bs2', e' = elab_exp env e t1 in + Ok (bs2' @ bs1', Il.AttrG (e', g1') $ g.at, t1) ); (fun env -> - let* g1', t1 = infer_sym env g1 in - let* e' = elab_exp env e t1 in - Ok (Il.AttrG (e', g1') $ g.at, t1) + let* bs1', g1', t1 = infer_sym env g1 in + let* bs2', e' = elab_exp env e t1 in + Ok (bs1' @ bs2', Il.AttrG (e', g1') $ g.at, t1) ); ] (* - let g1', t1 = infer_sym env g1 in - let e' = checkpoint (elab_exp env e t1) in - Il.AttrG (e', g1') $ g.at, t1 + let bs1', g1', t1 = infer_sym env g1 in + let bs2', e' = checkpoint (elab_exp env e t1) in + Ok (bs1' @ bs2', Il.AttrG (e', g1') $ g.at, t1) *) | FuseG _ -> error g.at "misplaced token concatenation" | UnparenG _ -> error g.at "misplaced token unparenthesize" ) -and infer_sym_list env es : (Il.sym list * typ list) attempt = +and infer_sym_list env es : (Il.bind list * Il.sym list * typ list) attempt = match es with - | [] -> Ok ([], []) + | [] -> Ok ([], [], []) | g::gs -> - let* g', t = infer_sym env g in - let* gs', ts = infer_sym_list env gs in - Ok (g'::gs', t::ts) + let* bs1', g', t = infer_sym env g in + let* bs2', gs', ts = infer_sym_list env gs in + Ok (bs1' @ bs2', g'::gs', t::ts) -and elab_sym env g t : Il.sym attempt = +and elab_sym env g t : (Il.bind list * Il.sym) attempt = Debug.(log_at "el.elab_sym" g.at (fun _ -> fmt "%s : %s" (el_sym g) (el_typ t)) - (function Ok g' -> fmt "%s" (il_sym g') | _ -> "fail") + (function Ok (bs', g') -> fmt "%s%s" (il_binds bs') (il_sym g') | _ -> "fail") ) @@ fun _ -> nest g.at t ( match g.it with @@ -1975,38 +2092,40 @@ and elab_sym env g t : Il.sym attempt = let cs = try Utf8.decode s with Utf8.Utf8 -> [] in (* Allow treatment as character constant *) if List.length cs = 1 then - Ok (Il.NumG (List.hd cs) $ g.at) + Ok ([], Il.NumG (List.hd cs) $ g.at) else - let* g', t' = infer_sym env g in - cast_sym env g' t' t + let* bs1', g', t' = infer_sym env g in + let* bs2', g'' = cast_sym env g' t' t in + Ok (bs1' @ bs2', g'') | AltG gs -> - let* gs' = elab_sym_list env (filter_nl gs) t in - Ok (Il.AltG gs' $ g.at) + let* bs', gs' = elab_sym_list env (filter_nl gs) t in + Ok (bs', Il.AltG gs' $ g.at) | ParenG g1 -> elab_sym env g1 t | _ -> - let* g', t' = infer_sym env g in - cast_sym env g' t' t + let* bs1', g', t' = infer_sym env g in + let* bs2', g'' = cast_sym env g' t' t in + Ok (bs1' @ bs2', g'') ) -and elab_sym_list env es t : Il.sym list attempt = +and elab_sym_list env es t : (Il.bind list * Il.sym list) attempt = match es with - | [] -> Ok [] + | [] -> Ok ([], []) | g::gs -> - let* g' = elab_sym env g t in - let* gs' = elab_sym_list env gs t in - Ok (g'::gs') + let* bs1', g' = elab_sym env g t in + let* bs2', gs' = elab_sym_list env gs t in + Ok (bs1' @ bs2', g'::gs') -and cast_sym env g' t1 t2 : Il.sym attempt = +and cast_sym env g' t1 t2 : (Il.bind list * Il.sym) attempt = Debug.(log_at "el.elab_cast_sym" g'.at (fun _ -> fmt "%s : %s :> %s" (il_sym g') (el_typ t1) (el_typ t2)) - (function Ok g'' -> fmt "%s" (il_sym g'') | _ -> "fail") + (function Ok (bs', g'') -> fmt "%s%s" (il_binds bs') (il_sym g'') | _ -> "fail") ) @@ fun _ -> nest g'.at t2 ( if equiv_typ env t1 t2 then - Ok g' + Ok ([], g') else if equiv_typ env t2 (TupT [] $ t2.at) then - Ok (Il.SeqG [g'] $ g'.at) + Ok ([], Il.SeqG [g'] $ g'.at) else fail_typ2 env g'.at "symbol" t1 t2 "" ) @@ -2020,18 +2139,18 @@ and elab_prod env prod t : Il.prod list = let env' = local_env env in env'.pm <- false; let dims = Dim.check_prod (vars env) prod in - let dims' = Dim.Env.map (List.map (elab_iter env')) dims in - let g', _t = checkpoint (infer_sym env' g) in + let dims' = Dim.Env.map (List.map (elab_typiter env')) dims in + let bs1', g', _t = checkpoint (infer_sym env' g) in let g' = Dim.annot_sym dims' g' in - let e' = + let bs2', e' = checkpoint ( if equiv_typ env' t (TupT [] $ e.at) then (* Special case: ignore unit attributes *) (* TODO(4, rossberg): introduce proper top type? *) - let* e', _t = infer_exp env' e in + let* bs', e', _t = infer_exp env' e in let t'_unit = Il.TupT [] $ e.at in let joker () = Il.VarE ("_" $ e.at) $$ e.at % t'_unit in - Ok (Il.ProjE ( + Ok (bs', Il.ProjE ( Il.TupE [ e'; Il.TupE [] $$ e.at % t'_unit ] $$ e.at % (Il.TupT [joker (), e'.note; joker (), t'_unit] $ e.at), 1 @@ -2041,8 +2160,8 @@ and elab_prod env prod t : Il.prod list = ) in let e' = Dim.annot_exp dims' e' in - let prems' = List.map (Dim.annot_prem dims') - (concat_map_filter_nl_list (elab_prem env') prems) in + let bss3', premss' = List.split (map_filter_nl_list (elab_prem env') prems) in + let prems' = List.map (Dim.annot_prem dims') (List.concat premss') in let det = Free.(diff (union (det_sym g) (det_prems prems)) (bound_env env)) in let free = Free.(diff (free_prod prod) (union (det_prod prod) (bound_env env'))) in if free <> Free.empty then @@ -2053,17 +2172,17 @@ and elab_prod env prod t : Il.prod list = Acc.sym g; Acc.exp e; Acc.prems prems; - let prod' = Il.ProdD (!acc_bs', g', e', prems') $ prod.at in + let prod' = Il.ProdD (!acc_bs' @ bs1' @ bs2' @ List.concat bss3', g', e', prems') $ prod.at in if not env'.pm then [prod'] else prod' :: elab_prod env Subst.(subst_prod pm_snd (Iter.clone_prod prod)) t | RangeP (g1, e1, g2, e2) -> let t = NumT `NatT $ prod.at in - let g1' = checkpoint (elab_sym env g1 t) in - let e1' = checkpoint (elab_exp env e1 t) in - let g2' = checkpoint (elab_sym env g2 t) in - let e2' = checkpoint (elab_exp env e2 t) in + let bs11', g1' = checkpoint (elab_sym env g1 t) in + let bs12', e1' = checkpoint (elab_exp env e1 t) in + let bs21', g2' = checkpoint (elab_sym env g2 t) in + let bs22', e2' = checkpoint (elab_exp env e2 t) in let c1 = match g1'.it with | Il.NumG c1 -> c1 @@ -2092,19 +2211,19 @@ and elab_prod env prod t : Il.prod list = let n = `Nat Z.(n1 + Z.of_int i) in let g' = {(if i = 0 then g1' else g2') with it = Il.NumG (c1 + i)} in let e' = {(if i = 0 then e1' else e2') with it = Il.NumE n} in - Il.ProdD ([], g', e', []) $ prod.at + Il.ProdD (bs11' @ bs12' @ bs21' @ bs22', g', e', []) $ prod.at ) | EquivP (g1, g2, prems) -> let env' = local_env env in env'.pm <- false; let dims = Dim.check_prod (vars env) prod in - let dims' = Dim.Env.map (List.map (elab_iter env')) dims in - let g1', _t1 = checkpoint (infer_sym env' g1) in + let dims' = Dim.Env.map (List.map (elab_typiter env')) dims in + let bs1', g1', _t1 = checkpoint (infer_sym env' g1) in let g1' = Dim.annot_sym dims' g1' in - let g2', _t2 = checkpoint (infer_sym env' g2) in + let bs2', g2', _t2 = checkpoint (infer_sym env' g2) in let g2' = Dim.annot_sym dims' g2' in - let prems' = List.map (Dim.annot_prem dims') - (concat_map_filter_nl_list (elab_prem env') prems) in + let bss3', premss' = List.split (map_filter_nl_list (elab_prem env') prems) in + let prems' = List.map (Dim.annot_prem dims') (List.concat premss') in let det = Free.(diff (union (det_sym g1) (det_prems prems)) (bound_env env)) in let free = Free.(diff (free_prod prod) (union (det_prod prod) (bound_env env'))) in if free <> Free.empty then @@ -2115,8 +2234,8 @@ and elab_prod env prod t : Il.prod list = Acc.sym g1; Acc.sym g2; Acc.prems prems; -ignore (acc_bs', g1', g2', prems'); -[] + ignore (!acc_bs' @ bs1' @ bs2' @ List.concat bss3', g1', g2', prems'); + [] (* TODO(4, rossberg): translate equiv grammars properly *) (* let prod' = Il.ProdD (!acc_bs', g1', e', prems') $ prod.at in if not env'.pm then @@ -2206,7 +2325,7 @@ and make_binds_iter_arg env free dims : Il.bind list ref * (module Iter.Arg) = end in Arg.acc, (module Arg) -and elab_arg in_lhs env a p s : Il.arg list * Subst.subst = +and elab_arg in_lhs env a p s : Il.bind list * Il.arg list * Subst.subst = (match !(a.it), p.it with (* HACK: handle shorthands *) | ExpA e, TypP _ -> a.it := TypA (typ_of_exp e) | ExpA e, GramP _ -> a.it := GramA (sym_of_exp e) @@ -2215,8 +2334,8 @@ and elab_arg in_lhs env a p s : Il.arg list * Subst.subst = ); match !(a.it), (Subst.subst_param s p).it with | ExpA e, ExpP (id, t) -> - let e' = checkpoint (elab_exp env e t) in - [Il.ExpA e' $ a.at], Subst.add_varid s id e + let bs', e' = checkpoint (elab_exp env e t) in + bs', [Il.ExpA e' $ a.at], Subst.add_varid s id e | TypA ({it = VarT (id', []); _} as t), TypP id when in_lhs = `Lhs -> let id'' = strip_var_suffix id' in let is_prim = @@ -2227,24 +2346,24 @@ and elab_arg in_lhs env a p s : Il.arg list * Subst.subst = env.typs <- bind "syntax type" env.typs id'' ([], Opaque); if not is_prim then env.gvars <- bind "variable" env.gvars (strip_var_sub id'') (VarT (id'', []) $ id''.at); - [Il.TypA (Il.VarT (id'', []) $ t.at) $ a.at], Subst.add_typid s id t + [], [Il.TypA (Il.VarT (id'', []) $ t.at) $ a.at], Subst.add_typid s id t | TypA t, TypP _ when in_lhs = `Lhs -> error t.at "misplaced syntax type" | TypA t, TypP id -> let t' = elab_typ env t in - [Il.TypA t' $ a.at], Subst.add_typid s id t + [], [Il.TypA t' $ a.at], Subst.add_typid s id t | GramA g, GramP _ when in_lhs = `Lhs -> error g.at "misplaced grammar symbol" | GramA g, GramP (id', t) -> - let g', t' = checkpoint (infer_sym env g) in + let bs', g', t' = checkpoint (infer_sym env g) in let s' = subst_implicit env s t t' in if not (equiv_typ env t' (Subst.subst_typ s' t)) then error_typ2 env a.at "argument" t' t ""; let as' = List.map (fun (_id, t) -> Il.TypA (elab_typ env t) $ t.at) Subst.(Map.bindings s'.typid) in - as' @ [Il.GramA g' $ a.at], Subst.add_gramid s' id' g + bs', as' @ [Il.GramA g' $ a.at], Subst.add_gramid s' id' g | DefA id, DefP (id', ps', t') when in_lhs = `Lhs -> env.defs <- bind "definition" env.defs id (ps', t', []); - [Il.DefA id $ a.at], Subst.add_defid s id' id + [], [Il.DefA id $ a.at], Subst.add_defid s id' id | DefA id, DefP (id', ps', t') -> let ps, t, _ = find "definition" env.defs id in if not (Eval.equiv_functyp (to_eval_env env) (ps, t) (ps', t')) then @@ -2253,25 +2372,25 @@ and elab_arg in_lhs env a p s : Il.arg list * Subst.subst = "` but got `" ^ (spaceid "definition" id).it ^ Print.(string_of_params ps ^ " : " ^ string_of_typ ~short:true t ^ "`") ); - [Il.DefA id $ a.at], Subst.add_defid s id id' + [], [Il.DefA id $ a.at], Subst.add_defid s id id' | _, _ -> error a.at "sort mismatch for argument" -and elab_args in_lhs env as_ ps at : Il.arg list * Subst.subst = +and elab_args in_lhs env as_ ps at : Il.bind list * Il.arg list * Subst.subst = Debug.(log_at "el.elab_args" at (fun _ -> fmt "(%s) : (%s)" (list el_arg as_) (list el_param ps)) - (fun (r, _) -> fmt "(%s)" (list il_arg r)) + (fun (bs', as', _) -> fmt "%s(%s)" (il_binds bs') (list il_arg as')) ) @@ fun _ -> - elab_args' in_lhs env as_ ps [] Subst.empty at + elab_args' in_lhs env as_ ps [] [] Subst.empty at -and elab_args' in_lhs env as_ ps as' s at : Il.arg list * Subst.subst = +and elab_args' in_lhs env as_ ps bs' as' s at : Il.bind list * Il.arg list * Subst.subst = match as_, ps with - | [], [] -> List.concat (List.rev as'), s + | [], [] -> bs', List.concat (List.rev as'), s | a::_, [] -> error a.at "too many arguments" | [], _::_ -> error at "too few arguments" | a::as1, p::ps1 -> - let a', s' = elab_arg in_lhs env a p s in - elab_args' in_lhs env as1 ps1 (a'::as') s' at + let bs'', a', s' = elab_arg in_lhs env a p s in + elab_args' in_lhs env as1 ps1 (bs' @ bs'') (a'::as') s' at and subst_implicit env s t t' : Subst.subst = let free = Free.(Set.filter (fun id -> not (Map.mem id env.typs)) (free_typ t).typid) in @@ -2492,12 +2611,12 @@ let rec elab_def env d : Il.def list = let env' = local_env env in env'.pm <- false; let ps1, k1 = find "syntax type" env.typs id1 in - let as', _s = elab_args `Lhs env' as_ ps1 d.at in + let bs1', as', _s = elab_args `Lhs env' as_ ps1 d.at in let dt' = elab_typ_definition env' id1 t in let dims = Dim.check_def d in - let dims' = Dim.Env.map (List.map (elab_iter env')) dims in + let dims' = Dim.Env.map (List.map (elab_typiter env')) dims in let bs' = infer_binds env env' dims d in - let inst' = Il.InstD (bs', List.map (Dim.annot_arg dims') as', dt') $ d.at in + let inst' = Il.InstD (bs' @ bs1', List.map (Dim.annot_arg dims') as', dt') $ d.at in let k1', closed = match k1, t.it with | Opaque, (CaseT (Dots, _, _, _) | StrT (Dots, _, _, _)) -> @@ -2594,18 +2713,18 @@ let rec elab_def env d : Il.def list = let env' = local_env env in env'.pm <- false; let dims = Dim.check_def d in - let dims' = Dim.Env.map (List.map (elab_iter env')) dims in + let dims' = Dim.Env.map (List.map (elab_typiter env')) dims in let t, rules' = find "relation" env.rels id1 in if List.exists (fun (id, _) -> id.it = id2.it) rules' then error d.at ("duplicate rule name `" ^ id1.it ^ (if id2.it = "" then "" else "/" ^ id2.it) ^ "`"); let mixop, _, _ = elab_typ_notation env id1 t in - let es', _ = checkpoint (elab_exp_notation' env' id1 e t) in + let bs1', es', _ = checkpoint (elab_exp_notation' env' id1 e t) in let es' = List.map (Dim.annot_exp dims') es' in - let prems' = List.map (Dim.annot_prem dims') - (concat_map_filter_nl_list (elab_prem env') prems) in + let bss2', premss' = List.split (map_filter_nl_list (elab_prem env') prems) in + let prems' = List.map (Dim.annot_prem dims') (List.concat premss') in let bs' = infer_binds env env' dims d in - let rule' = Il.RuleD (id2, bs', mixop, tup_exp' es' e.at, prems') $ d.at in + let rule' = Il.RuleD (id2, bs' @ bs1' @ List.concat bss2', mixop, tup_exp' es' e.at, prems') $ d.at in env.rels <- rebind "relation" env.rels id1 (t, rules' @ [id2, rule']); if not env'.pm then [] else elab_def env Subst.(subst_def pm_snd (Iter.clone_def d)) | VarD (id, t, _hints) -> @@ -2631,16 +2750,16 @@ let rec elab_def env d : Il.def list = let env' = local_env env in env'.pm <- false; let dims = Dim.check_def d in - let dims' = Dim.Env.map (List.map (elab_iter env')) dims in + let dims' = Dim.Env.map (List.map (elab_typiter env')) dims in let ps, t, clauses' = find "definition" env.defs id in - let as', s = elab_args `Lhs env' as_ ps d.at in + let bs1', as', s = elab_args `Lhs env' as_ ps d.at in let as' = List.map (Dim.annot_arg dims') as' in - let prems' = concat_map_filter_nl_list (elab_prem env') prems in - let e' = checkpoint (elab_exp env' e (Subst.subst_typ s t)) in + let bss2', premss' = List.split (map_filter_nl_list (elab_prem env') prems) in + let prems' = List.map (Dim.annot_prem dims') (List.concat premss') in + let bs3', e' = checkpoint (elab_exp env' e (Subst.subst_typ s t)) in let e' = Dim.annot_exp dims' e' in - let prems' = List.map (Dim.annot_prem dims') prems' in let bs' = infer_binds env env' dims d in - let clause' = Il.DefD (bs', as', e', prems') $ d.at in + let clause' = Il.DefD (bs' @ bs1' @ List.concat bss2' @ bs3', as', e', prems') $ d.at in env.defs <- rebind "definition" env.defs id (ps, t, clauses' @ [(d, clause')]); if not env'.pm then [] else elab_def env Subst.(subst_def pm_snd (Iter.clone_def d)) | SepD -> @@ -2780,10 +2899,10 @@ let elab ds : Il.script * env = let elab_exp env e t : Il.exp = let env' = local_env env in let _ = elab_typ env' t in - checkpoint (elab_exp env' e t) + snd (checkpoint (elab_exp env' e t)) let elab_rel env e id : Il.exp = let env' = local_env env in match elab_prem env' (RulePr (id, e) $ e.at) with - | [{it = Il.RulePr (_, _, e'); _}] -> e' + | _, [{it = Il.RulePr (_, _, e'); _}] -> e' | _ -> assert false diff --git a/spectec/src/il/debug.ml b/spectec/src/il/debug.ml index e3dd99fe8..c080fa080 100644 --- a/spectec/src/il/debug.ml +++ b/spectec/src/il/debug.ml @@ -12,6 +12,7 @@ let il_deftyp = string_of_deftyp `H let il_exp = string_of_exp let il_sym = string_of_sym let il_prod = string_of_prod +let il_clause = string_of_clause let il_prem = string_of_prem let il_arg = string_of_arg let il_bind = string_of_bind diff --git a/spectec/src/il/eval.ml b/spectec/src/il/eval.ml index be9321624..2f374036e 100644 --- a/spectec/src/il/eval.ml +++ b/spectec/src/il/eval.ml @@ -521,6 +521,10 @@ and match_iter env s iter1 iter2 : subst option = (* Types *) and match_typ env s t1 t2 : subst option = + Debug.(log "il.match_typ" + (fun _ -> fmt "%s =: %s" (il_typ t1) (il_typ (Subst.subst_typ s t2))) + (fun r -> fmt "%s" (opt il_subst r)) + ) @@ fun _ -> match t1.it, t2.it with | _, VarT (id, []) when Subst.mem_typid s id -> match_typ env s t1 (Subst.subst_typ s t2) diff --git a/spectec/src/il/print.ml b/spectec/src/il/print.ml index 3d3a69f95..3fb92c4a6 100644 --- a/spectec/src/il/print.ml +++ b/spectec/src/il/print.ml @@ -106,6 +106,8 @@ and string_of_typcase (op, (bs, t, prems), _hints) = (* Expressions *) and string_of_exp e = +"{" ^ string_of_exp' e ^ " :: " ^ string_of_typ e.note ^ "}" +and string_of_exp' e = match e.it with | VarE id -> string_of_id id | BoolE b -> string_of_bool b @@ -132,7 +134,7 @@ and string_of_exp e = | CompE (e1, e2) -> string_of_exp e1 ^ " +++ " ^ string_of_exp e2 | MemE (e1, e2) -> "(" ^ string_of_exp e1 ^ " <- " ^ string_of_exp e2 ^ ")" | LenE e1 -> "|" ^ string_of_exp e1 ^ "|" - | TupE es -> "(" ^ string_of_exps ", " es ^ ")" + | TupE es -> "(" ^ string_of_exps ", " es ^ ")_" ^ string_of_typ e.note | CallE (id, as1) -> "$" ^ string_of_id id ^ string_of_args as1 | IterE (e1, iter) -> string_of_exp e1 ^ string_of_iterexp iter | ProjE (e1, i) -> string_of_exp e1 ^ "." ^ string_of_int i diff --git a/spectec/src/il/subst.ml b/spectec/src/il/subst.ml index 7e1bde028..b159eed12 100644 --- a/spectec/src/il/subst.ml +++ b/spectec/src/il/subst.ml @@ -53,6 +53,7 @@ let remove_varids s ids' = let subst_opt subst_x s xo = Option.map (subst_x s) xo let subst_list subst_x s xs = List.map (subst_x s) xs +let subst_pair subst_x subst_y s (x, y) = subst_x s x, subst_y s y let rec subst_list_dep subst_x bound_x s = function | [] -> [], s @@ -102,7 +103,7 @@ and subst_typ s t = | Some t' -> assert (as_ = []); t'.it (* We do not support higher-order substitutions yet *) ) | BoolT | NumT _ | TextT -> t.it - | TupT ets -> TupT (fst (subst_list_dep subst_typbind Free.bound_typbind s ets)) + | TupT ets -> TupT (subst_list (subst_pair subst_exp subst_typ) s ets) | IterT (t1, iter) -> let iter', s' = subst_iter s iter in IterT (subst_typ s' t1, iter') diff --git a/spectec/src/il/valid.ml b/spectec/src/il/valid.ml index 86ef948a2..1f60fd006 100644 --- a/spectec/src/il/valid.ml +++ b/spectec/src/il/valid.ml @@ -231,16 +231,16 @@ and valid_typcase envr (mixop, (bs, t, prems), _hints) = List.iter (valid_prem !envr') prems -and proj_tup_typ env s e ets i : typ option = - match ets, i with - | (_eI, tI)::_, 0 -> Some tI - | (eI, tI)::ets', i -> - (match Eval.match_exp env s (ProjE (e, i) $$ e.at % tI) eI with - | None -> None - | Some s' -> proj_tup_typ env s' e ets' (i - 1) - | exception Eval.Irred -> None - ) - | [], _ -> assert false +and inst_tup_typ env s e i ets : (exp * typ) list = + match ets with + | [] -> [] + | (eI, tI)::ets' -> + let eI' = Subst.subst_exp s eI in + let tI' = Subst.subst_typ s tI in + match Eval.match_exp env s (ProjE (e, i) $$ e.at % tI') eI' with + | Some s' -> (eI', tI') :: inst_tup_typ env s' e (i + 1) ets' + | None -> error e.at "tuple does not match its own type" + | exception Eval.Irred -> error e.at "tuple does not match its own type" (* Expressions *) @@ -282,8 +282,9 @@ and infer_exp (env : Env.t) e : typ = let ets = as_tup_typ "expression" env Infer t1 e1.at in if i >= List.length ets then error e.at "invalid tuple projection"; - (match proj_tup_typ env Subst.empty e1 ets i with - | Some tI -> tI + let ets' = inst_tup_typ env Subst.empty e1 0 ets in + (match List.nth_opt ets' i with + | Some (_, tI) -> tI | None -> error e.at "cannot infer type of tuple projection" ) | UncaseE (e1, op) -> @@ -325,6 +326,13 @@ and valid_exp ?(side = `Rhs) env e t = (Fun.const "ok") ) @@ fun _ -> try + (try + valid_typ env t + with exn -> + let bt = Printexc.get_raw_backtrace () in + Printf.eprintf "[valid_exp] %s : %s\n%!" (Debug.il_exp e) (Debug.il_typ t); + Printexc.raise_with_backtrace exn bt + ); match e.it with | VarE id when id.it = "_" && side = `Lhs -> () | VarE id -> @@ -423,9 +431,10 @@ try if i >= List.length ets then error e.at "invalid tuple projection"; let side' = if List.length ets > 1 then `Rhs else side in - valid_exp ~side:side' env e1 t1; - (match proj_tup_typ env Subst.empty e1 ets i with - | Some tI -> equiv_typ env tI t e.at + let ets' = inst_tup_typ env Subst.empty e1 0 ets in + valid_exp ~side:side' env e1 (TupT ets' $ t1.at); + (match List.nth_opt ets i with + | Some (_, tI) -> equiv_typ env tI t e.at | None -> error e.at "invalid tuple projection, cannot match pattern" ) | UncaseE (e1, op) -> @@ -501,6 +510,7 @@ and valid_expfield ~side env (atom1, e) (atom2, (_binds, t, _prems), _) = valid_exp ~side env e t and valid_path env p t : typ = + valid_typ env t; let t' = match p.it with | RootP -> t @@ -698,11 +708,12 @@ let valid_rule envr mixop t rule = valid_expmix ~side:`Lhs !envr' mixop' e (mixop, t) e.at; List.iter (valid_prem !envr') prems -let valid_clause envr ps t clause = +let valid_clause envr id ps t clause = Debug.(log_in "il.valid_clause" line); Debug.(log_in_at "il.valid_clause" clause.at (fun _ -> fmt ": (%s) -> %s" (il_params ps) (il_typ t)) ); +try match clause.it with | DefD (bs, as_, e, prems) -> let envr' = local_env envr in @@ -710,6 +721,10 @@ let valid_clause envr ps t clause = let s = valid_args !envr' as_ ps Subst.empty clause.at in valid_exp !envr' e (Subst.subst_typ s t); List.iter (valid_prem !envr') prems +with exn -> + let bt = Printexc.get_raw_backtrace () in + Printf.eprintf "[valid_clause] %s\n%!" (Debug.il_clause id clause); + Printexc.raise_with_backtrace exn bt let valid_prod envr ps t prod = Debug.(log_in "il.valid_prod" line); @@ -763,7 +778,7 @@ let rec valid_def envr d = let envr' = local_env envr in List.iter (valid_param envr') ps; valid_typ !envr' t; - List.iter (valid_clause envr ps t) clauses; + List.iter (valid_clause envr id ps t) clauses; envr := Env.bind_def !envr id (ps, t, clauses) | GramD (id, ps, t, prods) -> let envr' = local_env envr in From 9823ef2f11f9c224e2f6d472d00a68155876ad09 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Tue, 4 Nov 2025 10:16:12 +0100 Subject: [PATCH 002/235] Add args to CaseE, UncaseE, DotE, DotP, expfield; unify params and binds --- spectec/src/al/al_util.ml | 2 +- spectec/src/al/valid.ml | 2 +- spectec/src/backend-ast/print.ml | 49 +- spectec/src/backend-prose/gen.ml | 6 +- spectec/src/frontend/dim.ml | 25 +- spectec/src/frontend/elab.ml | 865 +++++++++++++------------ spectec/src/il/ast.ml | 125 ++-- spectec/src/il/debug.ml | 7 +- spectec/src/il/dune | 2 +- spectec/src/il/eq.ml | 44 +- spectec/src/il/eval.ml | 165 ++--- spectec/src/il/free.ml | 122 ++-- spectec/src/il/free.mli | 3 +- spectec/src/il/fresh.ml | 30 + spectec/src/il/fresh.mli | 11 + spectec/src/il/iter.ml | 34 +- spectec/src/il/print.ml | 172 ++--- spectec/src/il/print.mli | 5 +- spectec/src/il/subst.ml | 158 +++-- spectec/src/il/subst.mli | 3 +- spectec/src/il/valid.ml | 269 ++++---- spectec/src/il2al/animate.ml | 4 +- spectec/src/il2al/encode.ml | 10 +- spectec/src/il2al/free.ml | 10 +- spectec/src/il2al/il2al_util.ml | 4 +- spectec/src/il2al/il_walk.ml | 34 +- spectec/src/il2al/il_walk.mli | 2 +- spectec/src/il2al/translate.ml | 42 +- spectec/src/il2al/unify.ml | 32 +- spectec/src/middlend/sideconditions.ml | 25 +- spectec/src/middlend/sub.ml | 75 +-- spectec/src/middlend/totalize.ml | 57 +- spectec/src/middlend/unthe.ml | 47 +- 33 files changed, 1222 insertions(+), 1219 deletions(-) create mode 100644 spectec/src/il/fresh.ml create mode 100644 spectec/src/il/fresh.mli diff --git a/spectec/src/al/al_util.ml b/spectec/src/al/al_util.ml index 9d2e79495..5d329c348 100644 --- a/spectec/src/al/al_util.ml +++ b/spectec/src/al/al_util.ml @@ -312,7 +312,7 @@ let name_of_mixop = Mixop.name (* Il Types *) (* name for tuple type *) -let no_name = Il.Ast.VarE ("_" $ no_region) $$ no_region % (Il.Ast.TextT $ no_region) +let no_name = "_" $ no_region let varT id args = Il.Ast.VarT (id $ no_region, args) $ no_region let iterT ty iter = Il.Ast.IterT (ty, iter) $ no_region let listT ty = iterT ty Il.Ast.List diff --git a/spectec/src/al/valid.ml b/spectec/src/al/valid.ml index a6d5cc61b..a81650d7c 100644 --- a/spectec/src/al/valid.ml +++ b/spectec/src/al/valid.ml @@ -402,7 +402,7 @@ let check_inv_call source id indices args result_typ = | _ -> let arg2typ arg = ( match arg.it with - | ExpA exp -> (Il.Ast.VarE ("" $ no_region) $$ no_region % exp.note, exp.note) + | ExpA exp -> ("_" $ no_region, exp.note) | a -> error_valid (Printf.sprintf "wrong result argument") source (Print.string_of_arg (a $ no_region)) ) in diff --git a/spectec/src/backend-ast/print.ml b/spectec/src/backend-ast/print.ml index 3f853328d..243f0e253 100644 --- a/spectec/src/backend-ast/print.ml +++ b/spectec/src/backend-ast/print.ml @@ -86,14 +86,14 @@ and deftyp dt = | StructT tfs -> Node ("struct", List.map typfield tfs) | VariantT tcs -> Node ("variant", List.map typcase tcs) -and typbind (e, t) = - Node ("bind", [exp e; typ t]) +and typbind (x, t) = + Node ("bind", [id x; typ t]) -and typfield (at, (bs, t, prs), _hints) = - Node ("field", mixop [[at]] :: List.map bind bs @ typ t :: List.map prem prs) +and typfield (at, (ps, t, prs), _hints) = + Node ("field", mixop [[at]] :: List.map param ps @ typ t :: List.map prem prs) -and typcase (op, (bs, t, prs), _hints) = - Node ("case", mixop op :: List.map bind bs @ typ t :: List.map prem prs) +and typcase (op, (ps, t, prs), _hints) = + Node ("case", mixop op :: List.map param ps @ typ t :: List.map prem prs) (* Expressions *) @@ -112,7 +112,7 @@ and exp e = | UpdE (e1, p, e2) -> Node ("upd", [exp e1; path p; exp e2]) | ExtE (e1, p, e2) -> Node ("ext", [exp e1; path p; exp e2]) | StrE efs -> Node ("struct", List.map expfield efs) - | DotE (e1, at) -> Node ("dot", [exp e1; mixop [[at]]]) + | DotE (e1, at, as_) -> Node ("dot", [exp e1; mixop [[at]]] @ List.map arg as_) | CompE (e1, e2) -> Node ("comp", [exp e1; exp e2]) | MemE (e1, e2) -> Node ("mem", [exp e1; exp e2]) | LenE e1 -> Node ("len", [exp e1]) @@ -120,8 +120,8 @@ and exp e = | CallE (x, as1) -> Node ("call", id x :: List.map arg as1) | IterE (e1, it) -> Node ("iter", [exp e1] @ iterexp it) | ProjE (e1, i) -> Node ("proj", [exp e1; Atom (string_of_int i)]) - | CaseE (op, e1) -> Node ("case", [mixop op; exp e1]) - | UncaseE (e1, op) -> Node ("uncase", [exp e1; mixop op]) + | CaseE (op, as_, e1) -> Node ("case", [mixop op] @ List.map arg as_ @ [exp e1]) + | UncaseE (e1, op, as_) -> Node ("uncase", [exp e1; mixop op] @ List.map arg as_) | OptE eo -> Node ("opt", List.map exp (Option.to_list eo)) | TheE e1 -> Node ("unopt", [exp e1]) | ListE es -> Node ("list", List.map exp es) @@ -130,15 +130,15 @@ and exp e = | CvtE (e1, nt1, nt2) -> Node ("cvt", [numtyp nt1; numtyp nt2; exp e1]) | SubE (e1, t1, t2) -> Node ("sub", [typ t1; typ t2; exp e1]) -and expfield (at, e) = - Node ("field", [mixop [[at]]; exp e]) +and expfield (at, as_, e) = + Node ("field", [mixop [[at]]] @ List.map arg as_ @ [exp e]) and path p = match p.it with | RootP -> Atom "root" | IdxP (p1, e) -> Node ("idx", [path p1; exp e]) | SliceP (p1, e1, e2) -> Node ("slice", [path p1; exp e1; exp e2]) - | DotP (p1, at) -> Node ("dot", [path p1; mixop [[at]]]) + | DotP (p1, at, as_) -> Node ("dot", [path p1; mixop [[at]]] @ List.map arg as_) and iterexp (it, xes) = iter it :: List.map (fun (x, e) -> Node ("dom", [id x; exp e])) xes @@ -179,39 +179,32 @@ and arg a = | DefA x -> Node ("def", [id x]) | GramA g -> Node ("gram", [sym g]) -and bind bind = - match bind.it with - | ExpB (x, t) -> Node ("exp", [id x; typ t]) - | TypB x -> Node ("typ", [id x]) - | DefB (x, ps, t) -> Node ("def", [id x] @ List.map param ps @ [typ t]) - | GramB (x, ps, t) -> Node ("gram", [id x] @ List.map param ps @ [typ t]) - and param p = match p.it with | ExpP (x, t) -> Node ("exp", [id x; typ t]) | TypP x -> Node ("typ", [id x]) | DefP (x, ps, t) -> Node ("def", [id x] @ List.map param ps @ [typ t]) - | GramP (x, t) -> Node ("gram", [id x; typ t]) + | GramP (x, ps, t) -> Node ("gram", [id x] @ List.map param ps @ [typ t]) let inst inst = match inst.it with - | InstD (bs, as_, dt) -> - Node ("inst", List.map bind bs @ List.map arg as_ @ [deftyp dt]) + | InstD (ps, as_, dt) -> + Node ("inst", List.map param ps @ List.map arg as_ @ [deftyp dt]) let rule rule = match rule.it with - | RuleD (x, bs, op, e, prs) -> - Node ("rule", [id x] @ List.map bind bs @ [mixop op; exp e] @ List.map prem prs) + | RuleD (x, ps, op, e, prs) -> + Node ("rule", [id x] @ List.map param ps @ [mixop op; exp e] @ List.map prem prs) let clause clause = match clause.it with - | DefD (bs, as_, e, prs) -> - Node ("clause", List.map bind bs @ List.map arg as_ @ [exp e] @ List.map prem prs) + | DefD (ps, as_, e, prs) -> + Node ("clause", List.map param ps @ List.map arg as_ @ [exp e] @ List.map prem prs) let prod prod = match prod.it with - | ProdD (bs, g, e, prs) -> - Node ("prod", List.map bind bs @ [sym g; exp e] @ List.map prem prs) + | ProdD (ps, g, e, prs) -> + Node ("prod", List.map param ps @ [sym g; exp e] @ List.map prem prs) let rec def d = match d.it with diff --git a/spectec/src/backend-prose/gen.ml b/spectec/src/backend-prose/gen.ml index 4c88ce6b0..f9a5d05ea 100644 --- a/spectec/src/backend-prose/gen.ml +++ b/spectec/src/backend-prose/gen.ml @@ -410,9 +410,9 @@ let preprocess_exp frees m exp = let preprocess_rule m rule = { rule with it = match rule.it with - | Ast.RuleD (id, bs, ops, exp, prems) -> - let frees = Free.(union (free_rule rule) (free_list bound_bind bs)).varid in - Ast.RuleD (id, bs, ops, preprocess_exp frees m exp, prems)} + | Ast.RuleD (id, ps, ops, exp, prems) -> + let frees = Free.(union (free_rule rule) (free_list bound_param ps)).varid in + Ast.RuleD (id, ps, ops, preprocess_exp frees m exp, prems)} let postprocess_rules m rule = let binds = Map.fold (fun _ (v, e) acc -> diff --git a/spectec/src/frontend/dim.ml b/spectec/src/frontend/dim.ml index a671f4ab8..4637c1dba 100644 --- a/spectec/src/frontend/dim.ml +++ b/spectec/src/frontend/dim.ml @@ -431,9 +431,10 @@ and annot_exp env e : Il.Ast.exp * occur = | StrE efs -> let efs', occurs = List.split (List.map (annot_expfield env) efs) in StrE efs', List.fold_left union Env.empty occurs - | DotE (e1, atom) -> + | DotE (e1, atom, as_) -> let e1', occur1 = annot_exp env e1 in - DotE (e1', atom), occur1 + let as', occurs = List.split (List.map (annot_arg env) as_) in + DotE (e1', atom, as'), List.fold_left union occur1 occurs | CompE (e1, e2) -> let e1', occur1 = annot_exp env e1 in let e2', occur2 = annot_exp env e2 in @@ -454,9 +455,10 @@ and annot_exp env e : Il.Ast.exp * occur = | ProjE (e1, i) -> let e1', occur1 = annot_exp env e1 in ProjE (e1', i), occur1 - | UncaseE (e1, op) -> + | UncaseE (e1, op, as_) -> let e1', occur1 = annot_exp env e1 in - UncaseE (e1', op), occur1 + let as', occurs = List.split (List.map (annot_arg env) as_) in + UncaseE (e1', op, as'), List.fold_left union occur1 occurs | OptE None -> OptE None, Env.empty | OptE (Some e1) -> @@ -479,9 +481,10 @@ and annot_exp env e : Il.Ast.exp * occur = let e1', occur1 = annot_exp env e1 in let e2', occur2 = annot_exp env e2 in CatE (e1', e2'), union occur1 occur2 - | CaseE (atom, e1) -> + | CaseE (atom, as_, e1) -> + let as', occurs = List.split (List.map (annot_arg env) as_) in let e1', occur1 = annot_exp env e1 in - CaseE (atom, e1'), occur1 + CaseE (atom, as', e1'), List.fold_left union occur1 occurs | CvtE (e1, nt1, nt2) -> let e1', occur1 = annot_exp env e1 in CvtE (e1', nt1, nt2), occur1 @@ -490,9 +493,10 @@ and annot_exp env e : Il.Ast.exp * occur = SubE (e1', t1, t2), occur1 in {e with it}, occur -and annot_expfield env (atom, e) : Il.Ast.expfield * occur = +and annot_expfield env (atom, as_, e) : Il.Ast.expfield * occur = + let as', occurs = List.split (List.map (annot_arg env) as_) in let e', occur = annot_exp env e in - (atom, e'), occur + (atom, as', e'), List.fold_left union occur occurs and annot_path env p : Il.Ast.path * occur = let it, occur = @@ -507,9 +511,10 @@ and annot_path env p : Il.Ast.path * occur = let e1', occur2 = annot_exp env e1 in let e2', occur3 = annot_exp env e2 in SliceP (p1', e1', e2'), union occur1 (union occur2 occur3) - | DotP (p1, atom) -> + | DotP (p1, atom, as_) -> let p1', occur1 = annot_path env p1 in - DotP (p1', atom), occur1 + let as', occurs = List.split (List.map (annot_arg env) as_) in + DotP (p1', atom, as'), List.fold_left union occur1 occurs in {p with it}, occur and annot_iterexp env occur1 (iter, xes) at : Il.Ast.iterexp * occur = diff --git a/spectec/src/frontend/elab.ml b/spectec/src/frontend/elab.ml index 4327acd50..0009e86aa 100644 --- a/spectec/src/frontend/elab.ml +++ b/spectec/src/frontend/elab.ml @@ -47,10 +47,34 @@ let unseq_exp e = let tup_typ' ts' at = match ts' with | [t'] -> t' - | _ -> Il.TupT (List.map (fun t' -> wild_exp t', t') ts') $ at + | _ -> Il.TupT (List.map (fun t' -> "_" $ t'.at, t') ts') $ at let tup_typ_bind' es' ts' at = - Il.TupT (List.combine es' ts') $ at + (* Translate a pattern into suitable path expressions on a variable *) + let rec decompose e' p' s = + match e'.it with + | Il.VarE x -> Il.Subst.add_varid s x p' + | Il.TupE es' -> + List.fold_left (fun (s', i) eI' -> + decompose eI' (Il.ProjE (p', i) $$ eI'.at % eI'.note) s', i + 1 + ) (s, 0) es' |> fst + | Il.IterE _ -> s (* TODO *) + | _ -> assert false + and combine es' ts' s = + match es', ts' with + | [], [] -> [] + | e'::es', t'::ts' -> + let x', s' = + match e'.it with + | Il.VarE x -> x, s + | _ -> + let x' = Il.Fresh.fresh_varid "pat" $ e'.at in + x', decompose e' (Il.VarE x' $$ e'.at % e'.note) s + in + let xts'' = combine es' ts' s' in + (x', Il.Subst.subst_typ s t')::xts'' + | _, _ -> assert false + in Il.TupT (combine es' ts' Il.Subst.empty) $ at let tup_exp' es' at = match es' with @@ -709,21 +733,21 @@ let check_atoms phrase item list at = (* Iteration *) -let rec elab_iter env iter : Il.bind list * Il.iter = +let rec elab_iter env iter : Il.param list * Il.iter = match iter with | Opt -> [], Il.Opt | List -> [], Il.List | List1 -> [], Il.List1 | ListN (e, id_opt) -> Option.iter (fun id -> - let bs', e' = checkpoint (elab_exp env (VarE (id, []) $ id.at) (NumT `NatT $ id.at)) in + let qs', e' = checkpoint (elab_exp env (VarE (id, []) $ id.at) (NumT `NatT $ id.at)) in (* TODO(4, rossberg): extend IL to allow arbitrary pattern exps *) match e'.it with - | Il.VarE _ -> assert (bs' = []) + | Il.VarE _ -> assert (qs' = []) | _ -> error_typ env id.at "iteration variable" (NumT `NatT $ id.at) ) id_opt; - let bs', e' = checkpoint (elab_exp env e (NumT `NatT $ e.at)) in - bs', Il.ListN (e', id_opt) + let qs', e' = checkpoint (elab_exp env e (NumT `NatT $ e.at)) in + qs', Il.ListN (e', id_opt) and elab_typiter env iter : Il.iter = let iter = @@ -731,8 +755,8 @@ and elab_typiter env iter : Il.iter = | List1 | ListN _ -> List | _ -> iter in - let bs', iter' = elab_iter env iter in - assert (bs' = []); + let qs', iter' = elab_iter env iter in + assert (qs' = []); iter' @@ -744,8 +768,8 @@ and elab_typ env t : Il.typ = let id' = strip_var_suffix id in if id'.it <> id.it && as_ = [] then elab_typ env (Convert.typ_of_varid id') else let ps, _ = find "syntax type" env.typs id' in - let bs', as', _s = elab_args `Rhs env as_ ps t.at in - if bs' <> [] then + let qs', as', _s = elab_args `Rhs env as_ ps t.at in + if qs' <> [] then error t.at "illegal expression forms in type instantiation"; Il.VarT (id', as') $ t.at | BoolT -> Il.BoolT $ t.at @@ -821,9 +845,9 @@ and elab_typ_definition env tid t : Il.deftyp = let nt = match t1.it with NumT nt -> nt | _ -> assert false in let id' = "i" $ t.at in let eid' = Il.VarE id' $$ t.at % t' in - let bs' = [Il.ExpB (id', t') $ t.at] in + let qs' = [Il.ExpP (id', t') $ t.at] in let prems' = [Il.IfPr (fe' eid' nt) $ t.at] in - let tc' = ([[]; []], (bs', Il.TupT [(eid', t')] $ t.at, prems'), []) in + let tc' = ([[]; []], (qs', Il.TupT [(id', t')] $ t.at, prems'), []) in Il.VariantT [tc'] | _ -> let t' = elab_typ env t in @@ -845,14 +869,14 @@ and typ_rep env t : typ = | _ -> t and elab_typfield env tid at (atom, (t, prems), hints) : Il.typfield = - let _mixop, bs', t', prems', _ = elab_typ_notation' env tid at t prems in + let _mixop, qs', t', prems', _ = elab_typ_notation' env tid at t prems in let hints' = elab_hints tid [] hints in let t'' = (* TODO(4, rossberg): remove this hack *) match t'.it with | Il.TupT [(_, t1')] when prems' = [] -> t1' | _ -> t' in - (elab_atom atom tid, (bs', t'', prems'), hints') + (elab_atom atom tid, (qs', t'', prems'), hints') (* assert (valid_tid tid); let env' = local_env env in @@ -869,20 +893,20 @@ and elab_typfield env tid at (atom, (t, prems), hints) : Il.typfield = if free <> Free.empty then error at ("type field contains indeterminate variable(s) `" ^ String.concat "`, `" (Free.Set.elements free.varid) ^ "`"); - let acc_bs', (module Arg : Iter.Arg) = make_binds_iter_arg env' det dims in + let acc_qs', (module Arg : Iter.Arg) = make_quants_iter_arg env' det dims in let module Acc = Iter.Make(Arg) in List.iter Acc.exp es; Acc.prems prems; ( elab_atom atom tid, - (!acc_bs', (if prems = [] then tup_typ' else tup_typ_bind' es') ts' t.at, prems'), + (!acc_qs', (if prems = [] then tup_typ' else tup_typ_bind' es') ts' t.at, prems'), elab_hints tid [] hints ) *) and elab_typcase env tid at (_atom, (t, prems), hints) : Il.typcase = - let mixop, bs', t', prems', _ = elab_typ_notation' env tid at t prems in + let mixop, qs', t', prems', _ = elab_typ_notation' env tid at t prems in let hints' = elab_hints tid [] hints in - (mixop, (bs', t', prems'), hints') + (mixop, (qs', t', prems'), hints') (* assert (valid_tid tid); let env' = local_env env in @@ -904,20 +928,20 @@ and elab_typcase env tid at (_atom, (t, prems), hints) : Il.typcase = error at ("type case contains indeterminate variable(s) `" ^ String.concat "`, `" (Free.Set.elements free.varid) ^ "`"); ); - let acc_bs', (module Arg : Iter.Arg) = make_binds_iter_arg env' det dims in + let acc_qs', (module Arg : Iter.Arg) = make_quants_iter_arg env' det dims in let module Acc = Iter.Make(Arg) in List.iter Acc.exp es; Acc.prems prems; ( mixop, - (!acc_bs', tup_typ_bind' es' ts' at, prems'), + (!acc_qs', tup_typ_bind' es' ts' at, prems'), elab_hints tid [] hints ) *) and elab_typcon env tid at ((t, prems), hints) : Il.typcase = - let mixop, bs', t', prems', _ = elab_typ_notation' env tid at t prems in + let mixop, qs', t', prems', _ = elab_typ_notation' env tid at t prems in let hints' = elab_hints tid [Atom.Atom tid.it $$ tid.at % Atom.info ""] hints in - (mixop, (bs', t', prems'), hints') + (mixop, (qs', t', prems'), hints') (* assert (valid_tid tid); let env' = local_env env in @@ -934,12 +958,12 @@ and elab_typcon env tid at ((t, prems), hints) : Il.typcase = if free <> Free.empty then error at ("type constraint contains indeterminate variable(s) `" ^ String.concat "`, `" (Free.Set.elements free.varid) ^ "`"); - let acc_bs', (module Arg : Iter.Arg) = make_binds_iter_arg env' det dims in + let acc_qs', (module Arg : Iter.Arg) = make_quants_iter_arg env' det dims in let module Acc = Iter.Make(Arg) in List.iter Acc.exp es; Acc.prems prems; ( mixop, - (!acc_bs', tup_typ_bind' es' ts' at, prems'), + (!acc_qs', tup_typ_bind' es' ts' at, prems'), elab_hints tid [Atom.Atom tid.it $$ tid.at % Atom.info ""] hints ) *) @@ -947,42 +971,42 @@ and elab_typcon env tid at ((t, prems), hints) : Il.typcase = and elab_typenum env tid (e1, e2o) : typ * (Il.exp -> numtyp -> Il.exp) = assert (valid_tid tid); let _e1' = elab_exp env e1 (NumT `IntT $ e1.at) in (* ensure it's <= int *) - let _bs1', _, t1 = checkpoint (infer_exp env e1) in (* get precise type *) + let _qs1', _, t1 = checkpoint (infer_exp env e1) in (* get precise type *) match e2o with | None -> t1, fun eid' nt -> - let bs1', e1' = checkpoint (elab_exp env e1 (NumT nt $ e1.at)) in (* redo with overall type *) - if bs1' <> [] then + let qs1', e1' = checkpoint (elab_exp env e1 (NumT nt $ e1.at)) in (* redo with overall type *) + if qs1' <> [] then error e1.at "illegal expression form in range type"; Il.(CmpE (`EqOp, `BoolT, eid', e1') $$ e1'.at % (BoolT $ e1.at)) | Some e2 -> let at = Source.over_region [e1.at; e2.at] in - let _bs21', _e2' = checkpoint (elab_exp env e2 (NumT `IntT $ e2.at)) in - let _bs22, _, t2 = checkpoint (infer_exp env e2) in + let _qs21', _e2' = checkpoint (elab_exp env e2 (NumT `IntT $ e2.at)) in + let _qs22, _, t2 = checkpoint (infer_exp env e2) in (if narrow_typ env t2 t1 then t1 else t2).it $ at, fun eid' nt -> - let bs1', e1' = checkpoint (elab_exp env e1 (NumT nt $ e1.at)) in - let bs2', e2' = checkpoint (elab_exp env e2 (NumT nt $ e2.at)) in - if bs1' <> [] then + let qs1', e1' = checkpoint (elab_exp env e1 (NumT nt $ e1.at)) in + let qs2', e2' = checkpoint (elab_exp env e2 (NumT nt $ e2.at)) in + if qs1' <> [] then error e1.at "illegal expression form in range type"; - if bs2' <> [] then + if qs2' <> [] then error e2.at "illegal expression form in range type"; Il.(BinE (`AndOp, `BoolT, CmpE (`GeOp, (nt :> Il.optyp), eid', e1') $$ e1'.at % (BoolT $ e1.at), CmpE (`LeOp, (nt :> Il.optyp), eid', e2') $$ e2'.at % (BoolT $ e2.at) ) $$ at % (BoolT $ at)) -and elab_typ_notation' env tid at t prems : Il.mixop * Il.bind list * Il.typ * Il.prem list * typ list = +and elab_typ_notation' env tid at t prems : Il.mixop * Il.param list * Il.typ * Il.prem list * typ list = assert (valid_tid tid); let env' = local_env env in let mixop, ts', ts = elab_typ_notation env' tid t in let es = Convert.pats_of_typs ts in let dims = Dim.check_typdef (vars env) t prems in let dims' = Dim.Env.map (List.map (elab_typiter env')) dims in - let bss1', es' = List.split (checkpoint (map2_attempt (elab_exp env') es ts)) in + let qss1', es' = List.split (checkpoint (map2_attempt (elab_exp env') es ts)) in let es' = List.map (Dim.annot_exp dims') es' in - let bss2', premss' = List.split (map_filter_nl_list (elab_prem env') prems) in + let qss2', premss' = List.split (map_filter_nl_list (elab_prem env') prems) in let prems' = List.map (Dim.annot_prem dims') (List.concat premss') in let det = Free.(diff (union (free_list det_exp es) (det_prems prems)) (bound_env env)) in let free = Free.(diff (union (free_typ t) (free_prems prems)) (union det (bound_env env))) in @@ -994,11 +1018,11 @@ List.iteri (fun i e -> Printf.printf "[notation] e%d = %s\n%!" i (Print.string_o error at ("premise contains indeterminate variable(s) `" ^ String.concat "`, `" (Free.Set.elements free.varid) ^ "`"); ); - let acc_bs', (module Arg : Iter.Arg) = make_binds_iter_arg env' det dims in + let acc_qs', (module Arg : Iter.Arg) = make_quants_iter_arg env' det dims in let module Acc = Iter.Make(Arg) in List.iter Acc.exp es; Acc.prems prems; - mixop, !acc_bs' @ List.concat (bss1' @ bss2'), tup_typ_bind' es' ts' t.at, prems', ts + mixop, !acc_qs' @ List.concat (qss1' @ qss2'), tup_typ_bind' es' ts' t.at, prems', ts and elab_typ_notation env tid t : Il.mixop * Il.typ list * typ list = Debug.(log_at "el.elab_typ_notation" t.at @@ -1014,8 +1038,8 @@ and elab_typ_notation env tid t : Il.mixop * Il.typ list * typ list = (match find "syntax type" env.typs id' with | _, Transp -> error_id id "invalid forward reference to syntax type" | ps, _ -> - let bs', as', _s = elab_args `Rhs env as_ ps t.at in - if bs' <> [] then + let qs', as', _s = elab_args `Rhs env as_ ps t.at in + if qs' <> [] then error t.at "illegal expression forms in type instantiation"; [[]; []], [Il.VarT (id', as') $ t.at], [t] ) @@ -1054,16 +1078,16 @@ and (!!!) env tid t = * - Fail (at, s) when it cannot, where s is the name of the failing construct * - raises Error.Error on fatal, unrecoverable errors *) -and infer_exp env e : (Il.bind list * Il.exp * typ) attempt = +and infer_exp env e : (Il.param list * Il.exp * typ) attempt = Debug.(log_at "el.infer_exp" e.at (fun _ -> fmt "%s" (el_exp e)) - (function Ok (bs', e', t) -> fmt "%s%s : %s" (il_binds bs') (il_exp e') (el_typ t) | _ -> "fail") + (function Ok (qs', e', t) -> fmt "%s%s : %s" (il_quants qs') (il_exp e') (el_typ t) | _ -> "fail") ) @@ fun _ -> - let* bs', e', t' = infer_exp' env e in + let* qs', e', t' = infer_exp' env e in let t = t' $ e.at in - Ok (bs', e' $$ e.at % elab_typ env t, t) + Ok (qs', e' $$ e.at % elab_typ env t, t) -and infer_exp' env e : (Il.bind list * Il.exp' * typ') attempt = +and infer_exp' env e : (Il.param list * Il.exp' * typ') attempt = match e.it with | VarE (id, args) -> (* Args may only occur due to syntactic overloading with types *) @@ -1088,79 +1112,79 @@ and infer_exp' env e : (Il.bind list * Il.exp' * typ') attempt = | TextE s -> Ok ([], Il.TextE s, TextT) | CvtE (e1, nt) -> - let* bs1', e1', t1 = infer_exp env e1 in + let* qs1', e1', t1 = infer_exp env e1 in let* nt1 = as_num_typ "conversion" env Infer t1 e1.at in - let* bs1'', e1'' = cast_exp "operand" env e1' t1 (NumT nt1 $ e1.at) in - Ok (bs1' @ bs1'', Il.CvtE (e1'', nt1, nt), NumT nt) + let* qs1'', e1'' = cast_exp "operand" env e1' t1 (NumT nt1 $ e1.at) in + Ok (qs1' @ qs1'', Il.CvtE (e1'', nt1, nt), NumT nt) | UnE (op, e1) -> - let* bs1', e1', t1 = infer_exp env e1 in + let* qs1', e1', t1 = infer_exp env e1 in let* op', ot, t1', t = infer_unop env op (typ_rep env t1) e.at in - let* bs1'', e1'' = cast_exp "operand" env e1' t1 t1' in + let* qs1'', e1'' = cast_exp "operand" env e1' t1 t1' in if op = `PlusMinusOp || op = `MinusPlusOp then env.pm <- true; - Ok (bs1' @ bs1'', Il.UnE (op', ot, e1''), t.it) + Ok (qs1' @ qs1'', Il.UnE (op', ot, e1''), t.it) | BinE (e1, op, e2) -> - let* bs1', e1', t1 = infer_exp env e1 in - let* bs2', e2', t2 = infer_exp env e2 in + let* qs1', e1', t1 = infer_exp env e1 in + let* qs2', e2', t2 = infer_exp env e2 in let* op', ot, t1', t2', t = infer_binop env op (typ_rep env t1) (typ_rep env t2) e.at in - let* bs1'', e1'' = cast_exp "operand" env e1' t1 t1' in - let* bs2'', e2'' = cast_exp "operand" env e2' t2 t2' in - Ok (bs1' @ bs1'' @ bs2' @ bs2'', Il.BinE (op', ot, e1'', e2''), t.it) + let* qs1'', e1'' = cast_exp "operand" env e1' t1 t1' in + let* qs2'', e2'' = cast_exp "operand" env e2' t2 t2' in + Ok (qs1' @ qs1'' @ qs2' @ qs2'', Il.BinE (op', ot, e1'', e2''), t.it) | CmpE (e1, op, ({it = CmpE (e21, _, _); _} as e2)) -> - let* bs1', e1', _t1 = infer_exp env (CmpE (e1, op, e21) $ e.at) in - let* bs2', e2', _t2 = infer_exp env e2 in - Ok (bs1' @ bs2', Il.BinE (`AndOp, `BoolT, e1', e2'), BoolT) + let* qs1', e1', _t1 = infer_exp env (CmpE (e1, op, e21) $ e.at) in + let* qs2', e2', _t2 = infer_exp env e2 in + Ok (qs1' @ qs2', Il.BinE (`AndOp, `BoolT, e1', e2'), BoolT) | CmpE (e1, op, e2) -> (match infer_cmpop env op with | `Poly op' -> - let* bs', e1', e2' = + let* qs', e1', e2' = choice env [ (fun env -> - let* bs2', e2', t2 = infer_exp env e2 in - let* bs1', e1' = elab_exp env e1 t2 in - Ok (bs1' @ bs2', e1', e2') + let* qs2', e2', t2 = infer_exp env e2 in + let* qs1', e1' = elab_exp env e1 t2 in + Ok (qs1' @ qs2', e1', e2') ); (fun env -> - let* bs1', e1', t1 = infer_exp env e1 in - let* bs2', e2' = elab_exp env e2 t1 in - Ok (bs1' @ bs2', e1', e2') + let* qs1', e1', t1 = infer_exp env e1 in + let* qs2', e2' = elab_exp env e2 t1 in + Ok (qs1' @ qs2', e1', e2') ); ] in - Ok (bs', Il.CmpE (op', `BoolT, e1', e2'), BoolT) + Ok (qs', Il.CmpE (op', `BoolT, e1', e2'), BoolT) | `Over elab_cmpop' -> - let* bs1', e1', t1 = infer_exp env e1 in - let* bs2', e2', t2 = infer_exp env e2 in + let* qs1', e1', t1 = infer_exp env e1 in + let* qs2', e2', t2 = infer_exp env e2 in let* op', ot, t = elab_cmpop' (typ_rep env t1) (typ_rep env t2) e.at in - let* bs1'', e1'' = cast_exp "operand" env e1' t1 t in - let* bs2'', e2'' = cast_exp "operand" env e2' t2 t in - Ok (bs1' @ bs1'' @ bs2' @ bs2'', Il.CmpE (op', ot, e1'', e2''), BoolT) + let* qs1'', e1'' = cast_exp "operand" env e1' t1 t in + let* qs2'', e2'' = cast_exp "operand" env e2' t2 t in + Ok (qs1' @ qs1'' @ qs2' @ qs2'', Il.CmpE (op', ot, e1'', e2''), BoolT) ) | IdxE (e1, e2) -> - let* bs1', e1', t1 = infer_exp env e1 in + let* qs1', e1', t1 = infer_exp env e1 in let* t = as_list_typ "expression" env Infer t1 e1.at in - let* bs2', e2' = elab_exp env e2 (NumT `NatT $ e2.at) in - Ok (bs1' @ bs2', Il.IdxE (e1', e2'), t.it) + let* qs2', e2' = elab_exp env e2 (NumT `NatT $ e2.at) in + Ok (qs1' @ qs2', Il.IdxE (e1', e2'), t.it) | SliceE (e1, e2, e3) -> - let* bs1', e1', t1 = infer_exp env e1 in + let* qs1', e1', t1 = infer_exp env e1 in let* _t' = as_list_typ "expression" env Infer t1 e1.at in - let* bs2', e2' = elab_exp env e2 (NumT `NatT $ e2.at) in - let* bs3', e3' = elab_exp env e3 (NumT `NatT $ e3.at) in - Ok (bs1' @ bs2' @ bs3', Il.SliceE (e1', e2', e3'), t1.it) + let* qs2', e2' = elab_exp env e2 (NumT `NatT $ e2.at) in + let* qs3', e3' = elab_exp env e3 (NumT `NatT $ e3.at) in + Ok (qs1' @ qs2' @ qs3', Il.SliceE (e1', e2', e3'), t1.it) | UpdE (e1, p, e2) -> - let* bs1', e1', t1 = infer_exp env e1 in - let* bs', p', t2 = elab_path env p t1 in - let* bs2', e2' = elab_exp env e2 t2 in - Ok (bs1' @ bs' @ bs2', Il.UpdE (e1', p', e2'), t1.it) + let* qs1', e1', t1 = infer_exp env e1 in + let* qs', p', t2 = elab_path env p t1 in + let* qs2', e2' = elab_exp env e2 t2 in + Ok (qs1' @ qs' @ qs2', Il.UpdE (e1', p', e2'), t1.it) | ExtE (e1, p, e2) -> - let* bs1', e1', t1 = infer_exp env e1 in - let* bs', p', t2 = elab_path env p t1 in + let* qs1', e1', t1 = infer_exp env e1 in + let* qs', p', t2 = elab_path env p t1 in let* _t21 = as_list_typ "path" env Infer t2 p.at in - let* bs2', e2' = elab_exp env e2 t2 in - Ok (bs1' @ bs' @ bs2', Il.ExtE (e1', p', e2'), t1.it) + let* qs2', e2' = elab_exp env e2 t2 in + Ok (qs1' @ qs' @ qs2', Il.ExtE (e1', p', e2'), t1.it) | StrE _ -> fail_infer e.at "record" | DotE (e1, atom) -> - let* bs1', e1', t1 = infer_exp env e1 in + let* qs1', e1', t1 = infer_exp env e1 in let* tfs, dots1 = as_struct_typ "expression" env Infer t1 e1.at in if dots1 = Dots then error e1.at "used record type is only partially defined at this point"; @@ -1168,9 +1192,9 @@ and infer_exp' env e : (Il.bind list * Il.exp' * typ') attempt = let* t, prems = attempt (find_field tfs atom e1.at) t1 in let e' = Il.DotE (e1', elab_atom atom (expand_id env t1)) in let e'' = if prems = [] then e' else Il.ProjE (e' $$ e.at % elab_typ env t, 0) in - Ok (bs1', e'', t.it) + Ok (qs1', e'', t.it) | CommaE (e1, e2) -> - let* bs1', e1', t1 = infer_exp env e1 in + let* qs1', e1', t1 = infer_exp env e1 in let* tfs, dots1 = as_struct_typ "expression" env Infer t1 e1.at in if dots1 = Dots then error e1.at "used record type is only partially defined at this point"; @@ -1180,67 +1204,67 @@ and infer_exp' env e : (Il.bind list * Il.exp' * typ') attempt = | SeqE ({it = AtomE atom; at; _} :: es2) -> let* _t2 = attempt (find_field tfs atom at) t1 in let e2 = match es2 with [e2] -> e2 | _ -> SeqE es2 $ e2.at in - let* bs2', e2' = elab_exp env (StrE [Elem (atom, e2)] $ e2.at) t1 in - Ok (bs1' @ bs2', Il.CompE (e2', e1'), t1.it) + let* qs2', e2' = elab_exp env (StrE [Elem (atom, e2)] $ e2.at) t1 in + Ok (qs1' @ qs2', Il.CompE (e2', e1'), t1.it) | _ -> error e.at "malformed comma operator" ) | CatE (e1, e2) -> - let* bs1', e1', t1 = infer_exp env e1 in + let* qs1', e1', t1 = infer_exp env e1 in let* _ = as_cat_typ "operand" env Infer t1 e1.at in - let* bs2', e2' = elab_exp env e2 t1 in - Ok (bs1' @ bs2', + let* qs2', e2' = elab_exp env e2 t1 in + Ok (qs1' @ qs2', (if is_iter_typ env t1 then Il.CatE (e1', e2') else Il.CompE (e1', e2')), t1.it) | MemE (e1, e2) -> choice env [ (fun env -> - let* bs1', e1', t1 = infer_exp env e1 in - let* bs2', e2' = elab_exp env e2 (IterT (t1, List) $ e2.at) in - Ok (bs1' @ bs2', Il.MemE (e1', e2'), BoolT) + let* qs1', e1', t1 = infer_exp env e1 in + let* qs2', e2' = elab_exp env e2 (IterT (t1, List) $ e2.at) in + Ok (qs1' @ qs2', Il.MemE (e1', e2'), BoolT) ); (fun env -> - let* bs2', e2', t2 = infer_exp env e2 in + let* qs2', e2', t2 = infer_exp env e2 in let* t1 = as_list_typ "operand" env Infer t2 e2.at in - let* bs1', e1' = elab_exp env e1 t1 in - Ok (bs1' @ bs2', Il.MemE (e1', e2'), BoolT) + let* qs1', e1' = elab_exp env e1 t1 in + Ok (qs1' @ qs2', Il.MemE (e1', e2'), BoolT) ); ] | LenE e1 -> - let* bs1', e1', t1 = infer_exp env e1 in + let* qs1', e1', t1 = infer_exp env e1 in let* _t11 = as_list_typ "expression" env Infer t1 e1.at in - Ok (bs1', Il.LenE e1', NumT `NatT) + Ok (qs1', Il.LenE e1', NumT `NatT) | SizeE id -> let _ = find "grammar" env.grams id in Ok ([], Il.NumE (`Nat Z.zero), NumT `NatT) | ParenE e1 | ArithE e1 -> infer_exp' env e1 | TupE es -> - let* bs', es', ts = infer_exp_list env es in - Ok (bs', Il.TupE es', TupT ts) + let* qs', es', ts = infer_exp_list env es in + Ok (qs', Il.TupE es', TupT ts) | CallE (id, as_) -> let ps, t, _ = find "definition" env.defs id in - let bs', as', s = elab_args `Rhs env as_ ps e.at in - Ok (bs', Il.CallE (id, as'), (Subst.subst_typ s t).it) + let qs', as', s = elab_args `Rhs env as_ ps e.at in + Ok (qs', Il.CallE (id, as'), (Subst.subst_typ s t).it) | EpsE -> fail_infer e.at "empty sequence" | SeqE [] -> (* treat as empty tuple, not principal *) Ok ([], Il.TupE [], TupT []) | SeqE es | ListE es -> (* treat as homogeneous sequence, not principal *) - let* bs', es', ts = infer_exp_list env es in + let* qs', es', ts = infer_exp_list env es in let t = List.hd ts in if List.for_all (equiv_typ env t) (List.tl ts) then - Ok (bs', Il.ListE es', IterT (t, List)) + Ok (qs', Il.ListE es', IterT (t, List)) else fail_infer e.at "expression sequence" | InfixE _ -> fail_infer e.at "infix expression" | BrackE _ -> fail_infer e.at "bracket expression" | IterE (e1, iter) -> - let bs', iter' = elab_iterexp env iter in - let* bs1', e1', t1 = infer_exp env e1 in - Ok (bs1' @ bs', Il.IterE (e1', iter'), IterT (t1, match iter with ListN _ -> List | _ -> iter)) + let qs', iter' = elab_iterexp env iter in + let* qs1', e1', t1 = infer_exp env e1 in + Ok (qs1' @ qs', Il.IterE (e1', iter'), IterT (t1, match iter with ListN _ -> List | _ -> iter)) | TypE (e1, t) -> let _t' = elab_typ env t in - let* bs1', e1' = elab_exp env e1 t in - Ok (bs1', e1'.it, t.it) + let* qs1', e1' = elab_exp env e1 t in + Ok (qs1', e1'.it, t.it) | HoleE _ -> error e.at "misplaced hole" | FuseE _ -> error e.at "misplaced token concatenation" | UnparenE _ -> error e.at "misplaced unparenthesize" @@ -1249,15 +1273,15 @@ and infer_exp' env e : (Il.bind list * Il.exp' * typ') attempt = and infer_exp_list env = function | [] -> Ok ([], [], []) | e::es -> - let* bs1', e', t = infer_exp env e in - let* bs2', es', ts = infer_exp_list env es in - Ok (bs1' @ bs2', e'::es', t::ts) + let* qs1', e', t = infer_exp env e in + let* qs2', es', ts = infer_exp_list env es in + Ok (qs1' @ qs2', e'::es', t::ts) -and elab_exp env e t : (Il.bind list * Il.exp) attempt = +and elab_exp env e t : (Il.param list * Il.exp) attempt = Debug.(log_at "el.elab_exp" e.at (fun _ -> fmt "%s : %s" (el_exp e) (el_typ t)) - (function Ok (bs', e') -> fmt "%s%s" (il_binds bs') (il_exp e') | _ -> "fail") + (function Ok (qs', e') -> fmt "%s%s" (il_quants qs') (il_exp e') | _ -> "fail") ) @@ fun _ -> nest e.at t ( if is_iter_typ env t then @@ -1273,9 +1297,9 @@ and elab_exp env e t : (Il.bind list * Il.exp) attempt = match e.it with | VarE ({it = "_"; _}, []) | EpsE | SeqE [] -> fail_silent | _ -> - let* bs', e' = elab_exp env e t1 in + let* qs', e' = elab_exp env e t1 in let t' = elab_typ env t in - Ok (bs', lift_exp' e' iter $$ e.at % t') + Ok (qs', lift_exp' e' iter $$ e.at % t') ); (fun env -> elab_exp_plain env e t); ] @@ -1289,23 +1313,23 @@ and elab_exp env e t : (Il.bind list * Il.exp) attempt = elab_exp_plain env e t ) -and elab_exp_plain env e t : (Il.bind list * Il.exp) attempt = +and elab_exp_plain env e t : (Il.param list * Il.exp) attempt = Debug.(log_at "el.elab_exp_plain" e.at (fun _ -> fmt "%s : %s" (el_exp e) (el_typ t)) - (function Ok (bs', e') -> fmt "%s%s" (il_binds bs') (il_exp e') | _ -> "fail") + (function Ok (qs', e') -> fmt "%s%s" (il_quants qs') (il_exp e') | _ -> "fail") ) @@ fun _ -> - let* bs', e' = elab_exp_plain' env e t in + let* qs', e' = elab_exp_plain' env e t in let t' = elab_typ env t in - Ok (bs', e' $$ e.at % t') + Ok (qs', e' $$ e.at % t') -and elab_exp_plain' env e t : (Il.bind list * Il.exp') attempt = +and elab_exp_plain' env e t : (Il.param list * Il.exp') attempt = match e.it with | BoolE _ | NumE _ | CvtE _ | UnE _ | BinE _ | CmpE _ | IdxE _ | DotE _ | MemE _ | LenE _ | SizeE _ | CallE _ | TypE _ | HoleE _ | FuseE _ | UnparenE _ | LatexE _ -> - let* bs1', e', t' = infer_exp env e in - let* bs2', e'' = cast_exp' "expression" env e' t' t in - Ok (bs1' @ bs2', e'') + let* qs1', e', t' = infer_exp env e in + let* qs2', e'' = cast_exp' "expression" env e' t' t in + Ok (qs1' @ qs2', e'') | TextE s -> let cs = try Utf8.decode s with Utf8.Utf8 -> [] in (* Allow treatment as character constant *) @@ -1314,24 +1338,24 @@ and elab_exp_plain' env e t : (Il.bind list * Il.exp') attempt = (Il.NumT `NatT $ e.at) in cast_exp' "character" env e' (NumT `NatT $ e.at) t else - let* bs1', e', t' = infer_exp env e in - let* bs2', e'' = cast_exp' "expression" env e' t' t in - Ok (bs1' @ bs2', e'') + let* qs1', e', t' = infer_exp env e in + let* qs2', e'' = cast_exp' "expression" env e' t' t in + Ok (qs1' @ qs2', e'') | VarE (id, _) when id.it = "_" -> Ok ([], Il.VarE id) | VarE (id, _) -> choice env [ (fun env -> - let* bs1', e', t' = infer_exp env e in - let* bs2', e'' = cast_exp' "expression" env e' t' t in - Ok (bs1' @ bs2', e'') + let* qs1', e', t' = infer_exp env e in + let* qs2', e'' = cast_exp' "expression" env e' t' t in + Ok (qs1' @ qs2', e'') ); (fun env -> if is_iter_typ env t && id.it <> "_" then (* Never infer an iteration type for a variable *) let* t1, iter = as_iter_typ "" env Check t e.at in - let* bs', e' = elab_exp env e t1 in - Ok (bs', lift_exp' e' iter) + let* qs', e' = elab_exp env e t1 in + Ok (qs', lift_exp' e' iter) else if not (bound env.vars id || bound env.gvars (strip_var_suffix id)) then let _ = () in env.vars <- bind "variable" env.vars id t; @@ -1342,29 +1366,29 @@ and elab_exp_plain' env e t : (Il.bind list * Il.exp') attempt = ] | SliceE (e1, e2, e3) -> let* _t' = as_list_typ "expression" env Check t e1.at in - let* bs1', e1' = elab_exp env e1 t in - let* bs2', e2' = elab_exp env e2 (NumT `NatT $ e2.at) in - let* bs3', e3' = elab_exp env e3 (NumT `NatT $ e3.at) in - Ok (bs1' @ bs2' @ bs3', Il.SliceE (e1', e2', e3')) + let* qs1', e1' = elab_exp env e1 t in + let* qs2', e2' = elab_exp env e2 (NumT `NatT $ e2.at) in + let* qs3', e3' = elab_exp env e3 (NumT `NatT $ e3.at) in + Ok (qs1' @ qs2' @ qs3', Il.SliceE (e1', e2', e3')) | UpdE (e1, p, e2) -> - let* bs1', e1' = elab_exp env e1 t in - let* bs', p', t2 = elab_path env p t in - let* bs2', e2' = elab_exp env e2 t2 in - Ok (bs1' @ bs' @ bs2', Il.UpdE (e1', p', e2')) + let* qs1', e1' = elab_exp env e1 t in + let* qs', p', t2 = elab_path env p t in + let* qs2', e2' = elab_exp env e2 t2 in + Ok (qs1' @ qs' @ qs2', Il.UpdE (e1', p', e2')) | ExtE (e1, p, e2) -> - let* bs1', e1' = elab_exp env e1 t in - let* bs', p', t2 = elab_path env p t in + let* qs1', e1' = elab_exp env e1 t in + let* qs', p', t2 = elab_path env p t in let* _t21 = as_list_typ "path" env Check t2 p.at in - let* bs2', e2' = elab_exp env e2 t2 in - Ok (bs1' @ bs' @ bs2', Il.ExtE (e1', p', e2')) + let* qs2', e2' = elab_exp env e2 t2 in + Ok (qs1' @ qs' @ qs2', Il.ExtE (e1', p', e2')) | StrE efs -> let* tfs, dots = as_struct_typ "record" env Check t e.at in if dots = Dots then error e.at "used record type is only partially defined at this point"; - let* bs', efs' = elab_expfields env (expand_id env t) (filter_nl efs) tfs t e.at in - Ok (bs', Il.StrE efs') + let* qs', efs' = elab_expfields env (expand_id env t) (filter_nl efs) tfs t e.at in + Ok (qs', Il.StrE efs') | CommaE (e1, e2) -> - let* bs1', e1' = elab_exp env e1 t in + let* qs1', e1' = elab_exp env e1 t in let* tfs, dots1 = as_struct_typ "expression" env Check t e1.at in if dots1 = Dots then error e1.at "used record type is only partially defined at this point"; @@ -1374,32 +1398,32 @@ and elab_exp_plain' env e t : (Il.bind list * Il.exp') attempt = | SeqE ({it = AtomE atom; at; _} :: es2) -> let* _t2 = attempt (find_field tfs atom at) t in let e2 = match es2 with [e2] -> e2 | _ -> SeqE es2 $ e2.at in - let* bs2', e2' = elab_exp env (StrE [Elem (atom, e2)] $ e2.at) t in - Ok (bs1' @ bs2', Il.CompE (e2', e1')) + let* qs2', e2' = elab_exp env (StrE [Elem (atom, e2)] $ e2.at) t in + Ok (qs1' @ qs2', Il.CompE (e2', e1')) | _ -> error e.at "malformed comma operator" ) | CatE (e1, e2) -> let* _ = as_cat_typ "expression" env Check t e.at in - let* bs1', e1' = elab_exp env e1 t in - let* bs2', e2' = elab_exp env e2 t in - Ok (bs1' @ bs2', + let* qs1', e1' = elab_exp env e1 t in + let* qs2', e2' = elab_exp env e2 t in + Ok (qs1' @ qs2', if is_iter_typ env t then Il.CatE (e1', e2') else Il.CompE (e1', e2')) | ParenE e1 | ArithE e1 -> elab_exp_plain' env e1 t | TupE es -> let* ts = as_tup_typ "tuple" env Check t e.at in - let* bs', es' = elab_exp_list env es ts e.at in - Ok (bs', Il.TupE es') + let* qs', es' = elab_exp_list env es ts e.at in + Ok (qs', Il.TupE es') | ListE es -> let* t1, iter = as_iter_typ "list" env Check t e.at in if iter <> List then fail_typ env e.at "list" t else let ts = List.init (List.length es) (fun _ -> t1) in - let* bs', es' = elab_exp_list env es ts e.at in - Ok (bs', Il.ListE es') + let* qs', es' = elab_exp_list env es ts e.at in + Ok (qs', Il.ListE es') | SeqE [] when is_empty_typ env t -> - let* bs1', e', t' = infer_exp env e in - let* bs2', e'' = cast_exp' "empty expression" env e' t' t in - Ok (bs1' @ bs2', e'') + let* qs1', e', t' = infer_exp env e in + let* qs2', e'' = cast_exp' "empty expression" env e' t' t in + Ok (qs1' @ qs2', e'') | EpsE | SeqE _ when is_iter_typ env t -> let* t1, iter = as_iter_typ "" env Check t e.at in elab_exp_iter' env (unseq_exp e) (t1, iter) t e.at @@ -1413,12 +1437,12 @@ and elab_exp_plain' env e t : (Il.bind list * Il.exp') attempt = * the latter case is already captured above *) if is_notation_typ env t then let* nt = as_notation_typ "" env Check t e.at in - let* bs', e' = elab_exp_notation env (expand_id env t) e nt t in - Ok (bs', e'.it) + let* qs', e' = elab_exp_notation env (expand_id env t) e nt t in + Ok (qs', e'.it) else if is_variant_typ env t then let* tcs, _ = as_variant_typ "" env Check t e.at in - let* bs', e' = elab_exp_variant env (expand_id env t) e tcs t e.at in - Ok (bs', e'.it) + let* qs', e' = elab_exp_variant env (expand_id env t) e tcs t e.at in + Ok (qs', e'.it) else let name = match e.it with @@ -1431,28 +1455,28 @@ and elab_exp_plain' env e t : (Il.bind list * Il.exp') attempt = in fail_typ env e.at name t | IterE (e1, iter2) -> let* t1, iter = as_iter_typ "iteration" env Check t e.at in - let bs2', iter2' = elab_iterexp env iter2 in - let* bs1', e1' = elab_exp env e1 t1 in - let bs' = bs1' @ bs2' in + let qs2', iter2' = elab_iterexp env iter2 in + let* qs1', e1' = elab_exp env e1 t1 in + let qs' = qs1' @ qs2' in let e' = Il.IterE (e1', iter2') in match iter2, iter with - | Opt, Opt -> Ok (bs', e') + | Opt, Opt -> Ok (qs', e') | Opt, List -> - Ok (bs', Il.LiftE (e' $$ e.at % (Il.IterT (elab_typ env t1, Opt) $ e1.at))) + Ok (qs', Il.LiftE (e' $$ e.at % (Il.IterT (elab_typ env t1, Opt) $ e1.at))) | _, Opt -> fail_typ env e.at "iteration" t - | _, _ -> Ok (bs', e') + | _, _ -> Ok (qs', e') -and elab_exp_list env es ts at : (Il.bind list * Il.exp list) attempt = +and elab_exp_list env es ts at : (Il.param list * Il.exp list) attempt = match es, ts with | [], [] -> Ok ([], []) | e::es, t::ts -> - let* bs1', e' = elab_exp env e t in - let* bs2', es' = elab_exp_list env es ts at in - Ok (bs1' @ bs2', e'::es') + let* qs1', e' = elab_exp env e t in + let* qs2', es' = elab_exp_list env es ts at in + Ok (qs1' @ qs2', e'::es') | _, _ -> fail at "arity mismatch for expression list" -and elab_expfields env tid efs tfs t0 at : (Il.bind list * Il.expfield list) attempt = +and elab_expfields env tid efs tfs t0 at : (Il.param list * Il.expfield list) attempt = Debug.(log_in_at "el.elab_expfields" at (fun _ -> fmt "{%s} : {%s} = %s" (list el_expfield efs) (list el_typfield tfs) (el_typ t0)) ); @@ -1460,66 +1484,66 @@ and elab_expfields env tid efs tfs t0 at : (Il.bind list * Il.expfield list) att match efs, tfs with | [], [] -> Ok ([], []) | (atom1, e)::efs2, (atom2, (t, prems), _)::tfs2 when atom1.it = atom2.it -> - let* bs1', es', _s = elab_exp_notation' env tid e t in - let* bs2', efs2' = elab_expfields env tid efs2 tfs2 t0 at in + let* qs1', es', _s = elab_exp_notation' env tid e t in + let* qs2', efs2' = elab_expfields env tid efs2 tfs2 t0 at in let e' = (if prems = [] then tup_exp' else tup_exp_bind') es' e.at in - Ok (bs1' @ bs2', (elab_atom atom1 tid, e') :: efs2') + Ok (qs1' @ qs2', (elab_atom atom1 tid, e') :: efs2') | _, (atom, (t, prems), _)::tfs2 -> let atom' = string_of_atom atom in - let* bs1', e1' = + let* qs1', e1' = cast_empty ("omitted record field `" ^ atom' ^ "`") env t at (elab_typ env t) in let e' = (if prems = [] then tup_exp' else tup_exp_bind') [e1'] at in - let* bs2', efs2' = elab_expfields env tid efs tfs2 t0 at in - Ok (bs1' @ bs2', (elab_atom atom tid, e') :: efs2') + let* qs2', efs2' = elab_expfields env tid efs tfs2 t0 at in + Ok (qs1' @ qs2', (elab_atom atom tid, e') :: efs2') | (atom, e)::_, [] -> fail_atom e.at atom t0 "undefined or misplaced record field" -and elab_exp_iter env es (t1, iter) t at : (Il.bind list * Il.exp) attempt = - let* bs', e' = elab_exp_iter' env es (t1, iter) t at in - Ok (bs', e' $$ at % elab_typ env t) +and elab_exp_iter env es (t1, iter) t at : (Il.param list * Il.exp) attempt = + let* qs', e' = elab_exp_iter' env es (t1, iter) t at in + Ok (qs', e' $$ at % elab_typ env t) -and elab_exp_iter' env es (t1, iter) t at : (Il.bind list * Il.exp') attempt = +and elab_exp_iter' env es (t1, iter) t at : (Il.param list * Il.exp') attempt = Debug.(log_at "el.elab_exp_iter" at (fun _ -> fmt "%s : %s = (%s)%s" (seq el_exp es) (el_typ t) (el_typ t1) (el_iter iter)) - (function Ok (bs', e') -> fmt "%s%s" (il_binds bs') (il_exp (e' $$ at % elab_typ env t)) | _ -> "fail") + (function Ok (qs', e') -> fmt "%s%s" (il_quants qs') (il_exp (e' $$ at % elab_typ env t)) | _ -> "fail") ) @@ fun _ -> match es, iter with | [], Opt -> Ok ([], Il.OptE None) | [e1], Opt -> - let* bs1', e1' = elab_exp env e1 t1 in - Ok (bs1', Il.OptE (Some e1')) + let* qs1', e1' = elab_exp env e1 t1 in + Ok (qs1', Il.OptE (Some e1')) | _::_::_, Opt -> fail_typ env at "expression" t | [], List -> Ok ([], Il.ListE []) | e1::es2, List -> - let* bs1', e1' = elab_exp env e1 t in + let* qs1', e1' = elab_exp env e1 t in let at' = Source.over_region (after_region e1.at :: List.map Source.at es2) in - let* bs2', e2' = elab_exp_iter env es2 (t1, iter) t at' in - Ok (bs1' @ bs2', cat_exp' e1' e2') + let* qs2', e2' = elab_exp_iter env es2 (t1, iter) t at' in + Ok (qs1' @ qs2', cat_exp' e1' e2') | _, (List1 | ListN _) -> assert false -and elab_exp_notation env tid e nt t : (Il.bind list * Il.exp) attempt = +and elab_exp_notation env tid e nt t : (Il.param list * Il.exp) attempt = (* Convert notation into applications of mixin operators *) assert (valid_tid tid); - let* bs1', es', _s = elab_exp_notation' env tid e nt in + let* qs1', es', _s = elab_exp_notation' env tid e nt in - let mixop, bs2', t', _prems', _ = elab_typ_notation' env tid e.at nt [] in - Ok (bs1' @ bs2', Il.CaseE (mixop, Il.TupE es' $$ e.at % t') $$ e.at % elab_typ env t) + let mixop, qs2', t', _prems', _ = elab_typ_notation' env tid e.at nt [] in + Ok (qs1' @ qs2', Il.CaseE (mixop, Il.TupE es' $$ e.at % t') $$ e.at % elab_typ env t) (* let mixop, ts', _ = elab_typ_notation env tid nt in assert (List.length es' = List.length ts'); Ok (Il.CaseE (mixop, tup_exp_bind' es' e.at) $$ e.at % elab_typ env t) *) -and elab_exp_notation' env tid e t : (Il.bind list * Il.exp list * Subst.t) attempt = +and elab_exp_notation' env tid e t : (Il.param list * Il.exp list * Subst.t) attempt = Debug.(log_at "el.elab_exp_notation" e.at (fun _ -> fmt "%s : %s" (el_exp e) (el_typ t)) - (function Ok (bs', es', _) -> fmt "%s %s" (il_binds bs') (seq il_exp es') | _ -> "fail") + (function Ok (qs', es', _) -> fmt "%s %s" (il_quants qs') (seq il_exp es') | _ -> "fail") ) @@ fun _ -> assert (valid_tid tid); match e.it, t.it with @@ -1533,10 +1557,10 @@ and elab_exp_notation' env tid e t : (Il.bind list * Il.exp list * Subst.t) atte (InfixE (e1, atom', SeqE [e21; e2] $ e2.at) $ e.at) t | InfixE (e1, atom, e2), InfixT (t1, atom', t2) -> if atom.it <> atom'.it then fail_typ env e.at "infix expression" t else - let* bs1', es1', s1 = elab_exp_notation' env tid e1 t1 in - let* bs2', es2', s2 = elab_exp_notation' env tid e2 (Subst.subst_typ s1 t2) in + let* qs1', es1', s1 = elab_exp_notation' env tid e1 t1 in + let* qs2', es2', s2 = elab_exp_notation' env tid e2 (Subst.subst_typ s1 t2) in let _ = elab_atom atom tid in - Ok (bs1' @ bs2', es1' @ es2', Subst.union s1 s2) + Ok (qs1' @ qs2', es1' @ es2', Subst.union s1 s2) | BrackE (l, e1, r), BrackT (l', t1, r') -> if (l.it, r.it) <> (l'.it, r'.it) then fail_typ env e.at "bracket expression" t else let _ = elab_atom l tid in @@ -1556,29 +1580,29 @@ and elab_exp_notation' env tid e t : (Il.bind list * Il.exp list * Subst.t) atte | SeqE (e1::es2), SeqT [t1] -> choice env [ (fun env -> - let* bs1', es1', s1 = elab_exp_notation' env tid (unparen_exp e1) t1 in + let* qs1', es1', s1 = elab_exp_notation' env tid (unparen_exp e1) t1 in let e2 = SeqE es2 $ Source.over_region (after_region e1.at :: List.map Source.at es2) in let t2 = SeqT [] $ Source.after_region t1.at in - let* bs2', es2', s2 = elab_exp_notation' env tid e2 (Subst.subst_typ s1 t2) in - Ok (bs1' @ bs2', es1' @ es2', Subst.union s1 s2) + let* qs2', es2', s2 = elab_exp_notation' env tid e2 (Subst.subst_typ s1 t2) in + Ok (qs1' @ qs2', es1' @ es2', Subst.union s1 s2) ); (fun env -> - let* bs', e' = elab_exp env e t1 in - Ok (bs', [e'], Subst.empty) + let* qs', e' = elab_exp env e t1 in + Ok (qs', [e'], Subst.empty) ) ] | SeqE (e1::es2), SeqT (t1::ts2) -> - let* bs1', es1', s1 = elab_exp_notation' env tid (unparen_exp e1) t1 in + let* qs1', es1', s1 = elab_exp_notation' env tid (unparen_exp e1) t1 in let e2 = SeqE es2 $ Source.over_region (after_region e1.at :: List.map Source.at es2) in let t2 = SeqT ts2 $ Source.over_region (after_region t1.at :: List.map Source.at ts2) in - let* bs2', es2', s2 = elab_exp_notation' env tid e2 (Subst.subst_typ s1 t2) in - Ok (bs1' @ bs2', es1' @ es2', Subst.union s1 s2) + let* qs2', es2', s2 = elab_exp_notation' env tid e2 (Subst.subst_typ s1 t2) in + Ok (qs1' @ qs2', es1' @ es2', Subst.union s1 s2) (* Trailing elements can be omitted if they can be eps *) | SeqE [], SeqT (t1::ts2) -> - let* bs1', e1' = cast_empty "omitted sequence tail" env t1 e.at (!!!env tid t1) in + let* qs1', e1' = cast_empty "omitted sequence tail" env t1 e.at (!!!env tid t1) in let t2 = SeqT ts2 $ Source.over_region (after_region t1.at :: List.map Source.at ts2) in - let* bs2', es2', s2 = elab_exp_notation' env tid e t2 in - Ok (bs1' @ bs2', e1' :: es2', s2) + let* qs2', es2', s2 = elab_exp_notation' env tid e t2 in + Ok (qs1' @ qs2', e1' :: es2', s2) | SeqE (e1::_), SeqT [] -> fail e1.at "expression is not empty" (* Since trailing elements can be omitted, a singleton may match a sequence *) @@ -1595,63 +1619,63 @@ and elab_exp_notation' env tid e t : (Il.bind list * Il.exp list * Subst.t) atte fail_typ env e.at "expression" t | _, _ -> - let* bs', e' = elab_exp env e t in - Ok (bs', [e'], Subst.add_varid Subst.empty (Convert.varid_of_typ t) e) + let* qs', e' = elab_exp env e t in + Ok (qs', [e'], Subst.add_varid Subst.empty (Convert.varid_of_typ t) e) -and elab_exp_notation_iter env tid es (t1, iter) t ts at : (Il.bind list * Il.exp list * Subst.t) attempt = +and elab_exp_notation_iter env tid es (t1, iter) t ts at : (Il.param list * Il.exp list * Subst.t) attempt = assert (valid_tid tid); let t' = elab_typ env t in - let* bs', e', es', s = elab_exp_notation_iter' env tid es (t1, iter) t ts t' at in - Ok (bs', e'::es', s) + let* qs', e', es', s = elab_exp_notation_iter' env tid es (t1, iter) t ts t' at in + Ok (qs', e'::es', s) -and elab_exp_notation_iter' env tid es (t1, iter) t ts t' at : (Il.bind list * Il.exp * Il.exp list * Subst.t) attempt = +and elab_exp_notation_iter' env tid es (t1, iter) t ts t' at : (Il.param list * Il.exp * Il.exp list * Subst.t) attempt = Debug.(log_at "el.elab_exp_notation_iter" at (fun _ -> fmt "%s : %s = (%s)%s" (seq el_exp es) (el_typ t) (el_typ t1) (el_iter iter)) - (function Ok (bs', e', es', _) -> fmt "%s %s" (il_binds bs') (seq il_exp (e'::es')) | _ -> "fail") + (function Ok (qs', e', es', _) -> fmt "%s %s" (il_quants qs') (seq il_exp (e'::es')) | _ -> "fail") ) @@ fun _ -> let tat' = Source.over_region (after_region t.at :: List.map Source.at ts) in match es, iter with | [], Opt -> - let* bs', es', s = elab_exp_notation' env tid (SeqE [] $ at) (SeqT ts $ tat') in - Ok (bs', Il.OptE None $$ at % t', es', s) + let* qs', es', s = elab_exp_notation' env tid (SeqE [] $ at) (SeqT ts $ tat') in + Ok (qs', Il.OptE None $$ at % t', es', s) | e1::es2, Opt -> choice env [ (fun env -> - let* bs', es', s = elab_exp_notation' env tid (SeqE (e1::es2) $ at) (SeqT ts $ tat') in - Ok (bs', Il.OptE None $$ Source.before_region e1.at % t', es', s) + let* qs', es', s = elab_exp_notation' env tid (SeqE (e1::es2) $ at) (SeqT ts $ tat') in + Ok (qs', Il.OptE None $$ Source.before_region e1.at % t', es', s) ); (fun env -> - let* bs1', e1' = elab_exp env e1 t in + let* qs1', e1' = elab_exp env e1 t in let at' = Source.over_region (after_region e1.at :: List.map Source.at es2) in - let* bs2', es2', s = elab_exp_notation' env tid (SeqE es2 $ at') (SeqT ts $ tat') in - Ok (bs1' @ bs2', e1', es2', s) + let* qs2', es2', s = elab_exp_notation' env tid (SeqE es2 $ at') (SeqT ts $ tat') in + Ok (qs1' @ qs2', e1', es2', s) ); ] | [], List -> - let* bs', es', s = elab_exp_notation' env tid (SeqE [] $ at) (SeqT ts $ tat') in - Ok (bs', Il.ListE [] $$ at % t', es', s) + let* qs', es', s = elab_exp_notation' env tid (SeqE [] $ at) (SeqT ts $ tat') in + Ok (qs', Il.ListE [] $$ at % t', es', s) | e1::es2, List -> choice env [ (fun env -> - let* bs', es', s = elab_exp_notation' env tid (SeqE (e1::es2) $ at) (SeqT ts $ tat') in - Ok (bs', Il.ListE [] $$ at % t', es', s) + let* qs', es', s = elab_exp_notation' env tid (SeqE (e1::es2) $ at) (SeqT ts $ tat') in + Ok (qs', Il.ListE [] $$ at % t', es', s) ); (fun env -> - let* bs1', e1' = elab_exp env e1 t in + let* qs1', e1' = elab_exp env e1 t in let at' = Source.over_region (after_region e1.at :: List.map Source.at es2) in - let* bs2', e2', es2', s = elab_exp_notation_iter' env tid es2 (t1, iter) t ts t' at' in - Ok (bs1' @ bs2', cat_exp' e1' e2' $$ Source.over_region [e1'.at; e2'.at] % t', es2', s) + let* qs2', e2', es2', s = elab_exp_notation_iter' env tid es2 (t1, iter) t ts t' at' in + Ok (qs1' @ qs2', cat_exp' e1' e2' $$ Source.over_region [e1'.at; e2'.at] % t', es2', s) ); ] | _, (List1 | ListN _) -> assert false -and elab_exp_variant env tid e cases t at : (Il.bind list * Il.exp) attempt = +and elab_exp_variant env tid e cases t at : (Il.param list * Il.exp) attempt = Debug.(log_at "el.elab_exp_variant" e.at (fun _ -> fmt "%s : %s = %s" (el_exp e) tid.it (el_typ t)) - (function Ok (bs', e') -> fmt "%s%s" (il_binds bs') (il_exp e') | _ -> "fail") + (function Ok (qs', e') -> fmt "%s%s" (il_quants qs') (il_exp e') | _ -> "fail") ) @@ fun _ -> assert (valid_tid tid); let* atom = @@ -1663,14 +1687,14 @@ and elab_exp_variant env tid e cases t at : (Il.bind list * Il.exp) attempt = | _ -> fail_typ env at "expression" t in let* t1, _prems = attempt (find_case_sub cases atom atom.at) t in - let* bs1', es', _s = elab_exp_notation' env tid e t1 in + let* qs1', es', _s = elab_exp_notation' env tid e t1 in let t2 = expand env t $ at in let t2' = elab_typ env t2 in - let mixop, bs2', t1', _prems', _ = elab_typ_notation' env tid e.at t1 [] in - let* bs3', e' = cast_exp "variant case" env + let mixop, qs2', t1', _prems', _ = elab_typ_notation' env tid e.at t1 [] in + let* qs3', e' = cast_exp "variant case" env (Il.CaseE (mixop, Il.TupE es' $$ at % t1') $$ at % t2') t2 t in - Ok (bs1' @ bs2' @ bs3', e') + Ok (qs1' @ qs2' @ qs3', e') (* let mixop, ts', _ = elab_typ_notation env tid t1 in assert (List.length es' = List.length ts'); @@ -1678,39 +1702,39 @@ and elab_exp_variant env tid e cases t at : (Il.bind list * Il.exp) attempt = (Il.CaseE (mixop, tup_exp_bind' es' at) $$ at % t2') t2 t *) -and elab_path env p t : (Il.bind list * Il.path * typ) attempt = - let* bs', p', t' = elab_path' env p t in - Ok (bs', p' $$ p.at % elab_typ env t', t') +and elab_path env p t : (Il.param list * Il.path * typ) attempt = + let* qs', p', t' = elab_path' env p t in + Ok (qs', p' $$ p.at % elab_typ env t', t') -and elab_path' env p t : (Il.bind list * Il.path' * typ) attempt = +and elab_path' env p t : (Il.param list * Il.path' * typ) attempt = match p.it with | RootP -> Ok ([], Il.RootP, t) | IdxP (p1, e1) -> - let* bs1', p1', t1 = elab_path env p1 t in - let bs2', e1' = checkpoint (elab_exp env e1 (NumT `NatT $ e1.at)) in + let* qs1', p1', t1 = elab_path env p1 t in + let qs2', e1' = checkpoint (elab_exp env e1 (NumT `NatT $ e1.at)) in let* t' = as_list_typ "path" env Check t1 p1.at in - Ok (bs1' @ bs2', Il.IdxP (p1', e1'), t') + Ok (qs1' @ qs2', Il.IdxP (p1', e1'), t') | SliceP (p1, e1, e2) -> - let* bs', p1', t1 = elab_path env p1 t in - let bs1', e1' = checkpoint (elab_exp env e1 (NumT `NatT $ e1.at)) in - let bs2', e2' = checkpoint (elab_exp env e2 (NumT `NatT $ e2.at)) in + let* qs', p1', t1 = elab_path env p1 t in + let qs1', e1' = checkpoint (elab_exp env e1 (NumT `NatT $ e1.at)) in + let qs2', e2' = checkpoint (elab_exp env e2 (NumT `NatT $ e2.at)) in let* _ = as_list_typ "path" env Check t1 p1.at in - Ok (bs' @ bs1' @ bs2', Il.SliceP (p1', e1', e2'), t1) + Ok (qs' @ qs1' @ qs2', Il.SliceP (p1', e1', e2'), t1) | DotP (p1, atom) -> - let* bs1', p1', t1 = elab_path env p1 t in + let* qs1', p1', t1 = elab_path env p1 t in let* tfs, dots1 = as_struct_typ "path" env Check t1 p1.at in if dots1 = Dots then error p1.at "used record type is only partially defined at this point"; (*TODO*) let* t', _prems = attempt (find_field tfs atom p1.at) t1 in - Ok (bs1', Il.DotP (p1', elab_atom atom (expand_id env t1)), t') + Ok (qs1', Il.DotP (p1', elab_atom atom (expand_id env t1)), t') -and cast_empty phrase env t at t' : (Il.bind list * Il.exp) attempt = +and cast_empty phrase env t at t' : (Il.param list * Il.exp) attempt = Debug.(log_at "el.elab_exp_cast_empty" at (fun _ -> fmt "%s >> (%s)" (el_typ t) (el_typ (expand_notation env t $ t.at))) - (function Ok (bs', e') -> fmt "%s%s" (il_binds bs') (il_exp e') | _ -> "fail") + (function Ok (qs', e') -> fmt "%s%s" (il_quants qs') (il_exp e') | _ -> "fail") ) @@ fun _ -> nest at t ( match expand_notation env t with @@ -1730,17 +1754,17 @@ and cast_empty phrase env t at t' : (Il.bind list * Il.exp) attempt = | _ -> fail_typ env at phrase t ) -and cast_exp phrase env e' t1 t2 : (Il.bind list * Il.exp) attempt = - let* bs', e'' = nest e'.at t2 (cast_exp' phrase env e' t1 t2) in - Ok (bs', e'' $$ e'.at % elab_typ env (expand_nondef env t2)) +and cast_exp phrase env e' t1 t2 : (Il.param list * Il.exp) attempt = + let* qs', e'' = nest e'.at t2 (cast_exp' phrase env e' t1 t2) in + Ok (qs', e'' $$ e'.at % elab_typ env (expand_nondef env t2)) -and cast_exp' phrase env e' t1 t2 : (Il.bind list * Il.exp') attempt = +and cast_exp' phrase env e' t1 t2 : (Il.param list * Il.exp') attempt = Debug.(log_at "el.elab_exp_cast" e'.at (fun _ -> fmt "%s <: %s >> (%s) <: (%s) = (%s)" (el_typ t1) (el_typ t2) (el_typ (expand_def env t1 $ t1.at)) (el_typ (expand_def env t2 $ t2.at)) (el_typ (expand_nondef env t2)) ) - (function Ok (bs', e'') -> fmt "%s%s" (il_binds bs') (il_exp (e'' $$ e'.at % elab_typ env t2)) | _ -> "fail") + (function Ok (qs', e'') -> fmt "%s%s" (il_quants qs') (il_exp (e'' $$ e'.at % elab_typ env t2)) | _ -> "fail") ) @@ fun _ -> if equiv_typ env t1 t2 then Ok ([], e'.it) else match expand_def env t1, expand_def env t2 with @@ -1756,8 +1780,8 @@ and cast_exp' phrase env e' t1 t2 : (Il.bind list * Il.exp') attempt = choice env [ (fun env -> (* Two ConT's with the same operator can be cast pointwise *) - let mixop1, bs1', t1', _prems1', ts1 = elab_typ_notation' env (expand_id env t1) t1.at t11 [] in - let mixop2, bs2', _t2', _prems2', ts2 = elab_typ_notation' env (expand_id env t2) t2.at t21 [] in + let mixop1, qs1', t1', _prems1', ts1 = elab_typ_notation' env (expand_id env t1) t1.at t11 [] in + let mixop2, qs2', _t2', _prems2', ts2 = elab_typ_notation' env (expand_id env t2) t2.at t21 [] in (* let mixop1, ts1', ts1 = elab_typ_notation env (expand_id env t1) t11 in let mixop2, _ts2', ts2 = elab_typ_notation env (expand_id env t2) t21 in @@ -1765,13 +1789,12 @@ and cast_exp' phrase env e' t1 t2 : (Il.bind list * Il.exp') attempt = if mixop1 <> mixop2 then fail_typ2 env e'.at phrase t1 t2 "" else let e'' = Il.UncaseE (e', mixop1) $$ e'.at % t1' in -Printf.printf "[1] %s => %s\n%!" (Debug.el_typ t1) (Debug.il_typ t1'); - let ts1' = match t1'.it with Il.TupT ets -> List.map snd ets | _ -> [t1'] in + let ts1' = match t1'.it with Il.TupT xts -> List.map snd xts | _ -> [t1'] in let es' = List.mapi (fun i t1I' -> Il.ProjE (e'', i) $$ e''.at % t1I') ts1' in - let* bss'_es'' = map2_attempt (fun eI' (t1I, t2I) -> + let* qss'_es'' = map2_attempt (fun eI' (t1I, t2I) -> cast_exp phrase env eI' t1I t2I) es' (List.combine ts1 ts2) in - let bss', es'' = List.split bss'_es'' in - Ok (bs1' @ bs2' @ List.concat bss', Il.CaseE (mixop2, tup_exp_bind' es'' e'.at)) + let qss', es'' = List.split qss'_es'' in + Ok (qs1' @ qs2' @ List.concat qss', Il.CaseE (mixop2, tup_exp_bind' es'' e'.at)) ); (fun env -> (* Two unary ConT's can be cast transitively *) @@ -1781,33 +1804,32 @@ Printf.printf "[1] %s => %s\n%!" (Debug.el_typ t1) (Debug.il_typ t1'); (el_typ (expand_nondef env t2)) ) ); - let mixop, bs', t1', _prems', ts = elab_typ_notation' env (expand_id env t1) t1.at t11 [] in + let mixop, qs', t1', _prems', ts = elab_typ_notation' env (expand_id env t1) t1.at t11 [] in (* let mixop, ts', ts = elab_typ_notation env (expand_id env t1) t11 in *) let* t111, t111' = match ts, t1'.it with [t111], Il.TupT [_, t111'] -> Ok (t111, t111') | _ -> fail_typ2 env e'.at phrase t1 t2 "" in -Printf.printf "[2] %s => %s\n%!" (Debug.el_typ t1) (Debug.il_typ t1'); let e'' = Il.UncaseE (e', mixop) $$ e'.at % t1' in - let* bs'', e''' = cast_exp' phrase env (Il.ProjE (e'', 0) $$ e'.at % t111') t111 t2 in - Ok (bs' @ bs'', e''') + let* qs'', e''' = cast_exp' phrase env (Il.ProjE (e'', 0) $$ e'.at % t111') t111 t2 in + Ok (qs' @ qs'', e''') ); ] | ConT ((t11, _), _), t2' -> choice env [ (fun env -> - let* bs', e'' = + let* qs', e'' = match t2' with | IterT (t21, iter) -> - let* bs1', e1' = cast_exp phrase env e' t1 t21 in + let* qs1', e1' = cast_exp phrase env e' t1 t21 in (match iter with - | Opt -> Ok (bs1', Il.OptE (Some e1')) - | List -> Ok (bs1', Il.ListE [e1']) + | Opt -> Ok (qs1', Il.OptE (Some e1')) + | List -> Ok (qs1', Il.ListE [e1']) | _ -> assert false ) | _ -> fail_silent in - Ok (bs', e'') + Ok (qs', e'') ); (fun env -> (* A ConT can be cast to its payload *) @@ -1817,7 +1839,7 @@ Printf.printf "[2] %s => %s\n%!" (Debug.el_typ t1) (Debug.il_typ t1'); (el_typ (expand_nondef env t2)) ) ); - let mixop, bs', t1', _prems', ts = elab_typ_notation' env (expand_id env t1) t1.at t11 [] in + let mixop, qs', t1', _prems', ts = elab_typ_notation' env (expand_id env t1) t1.at t11 [] in (* let mixop, ts', ts = elab_typ_notation env (expand_id env t1) t11 in *) @@ -1825,35 +1847,35 @@ Printf.printf "[2] %s => %s\n%!" (Debug.el_typ t1) (Debug.il_typ t1'); fail_typ2 env e'.at phrase t1 t2 "" in Printf.printf "[3] %s => %s\n%!" (Debug.el_typ t1) (Debug.il_typ t1'); let e'' = Il.UncaseE (e', mixop) $$ e'.at % t1' in - let* bs'', e''' = cast_exp' phrase env (Il.ProjE (e'', 0) $$ e'.at % t111') t111 t2 in - Ok (bs' @ bs'', e''') + let* qs'', e''' = cast_exp' phrase env (Il.ProjE (e'', 0) $$ e'.at % t111') t111 t2 in + Ok (qs' @ qs'', e''') ); ] | _, ConT ((t21, _), _) -> (* A ConT payload can be cast to the ConT *) - let mixop, bs', t', _prems', ts = elab_typ_notation' env (expand_id env t2) t2.at t21 [] in + let mixop, qs', t', _prems', ts = elab_typ_notation' env (expand_id env t2) t2.at t21 [] in (* let mixop, _ts', ts = elab_typ_notation env (expand_id env t2) t21 in *) let* t211 = match ts with [t211] -> Ok t211 | _ -> fail_typ2 env e'.at phrase t1 t2 "" in - let* bs1', e1' = cast_exp phrase env e' t1 t211 in - Ok (bs' @ bs1', Il.CaseE (mixop, Il.TupE [e1'] $$ e'.at % t')) + let* qs1', e1' = cast_exp phrase env e' t1 t211 in + Ok (qs' @ qs1', Il.CaseE (mixop, Il.TupE [e1'] $$ e'.at % t')) | RangeT _, t2' -> choice env [ (fun env -> - let* bs', e'' = + let* qs', e'' = match t2' with | IterT (t21, iter) -> - let* bs1', e1' = cast_exp phrase env e' t1 t21 in + let* qs1', e1' = cast_exp phrase env e' t1 t21 in (match iter with - | Opt -> Ok (bs1', Il.OptE (Some e1')) - | List -> Ok (bs1', Il.ListE [e1']) + | Opt -> Ok (qs1', Il.OptE (Some e1')) + | List -> Ok (qs1', Il.ListE [e1']) | _ -> assert false ) | _ -> fail_silent in - Ok (bs', e'') + Ok (qs', e'') ); (fun env -> (* A RangeT can be cast to its carrier type *) @@ -1874,23 +1896,23 @@ Printf.printf "[4] %s => %s\n%!" (Debug.el_typ t11) (Debug.il_typ t11'); | _, RangeT _ -> (* A respective carrier type can be cast to RangeT *) let t21 = typ_rep env t2 in - let* bs', e'' = cast_exp phrase env e' t1 t21 in - Ok (bs', Il.CaseE ([[]; []], Il.TupE [e''] $$ e'.at % elab_typ env t21)) + let* qs', e'' = cast_exp phrase env e' t1 t21 in + Ok (qs', Il.CaseE ([[]; []], Il.TupE [e''] $$ e'.at % elab_typ env t21)) | _, IterT (t21, Opt) -> - let* bs', e'' = cast_exp phrase env e' t1 t21 in - Ok (bs', Il.OptE (Some e'')) + let* qs', e'' = cast_exp phrase env e' t1 t21 in + Ok (qs', Il.OptE (Some e'')) (* TODO(3, rossberg): enable; violates invariant that all iterexps are initially empty | IterT (t11, List), IterT (t21, List) -> choice env [ (fun env -> let id = x $ e'.at in let t11' = elab_typ env t11 in - let* bs', e'' = cast_exp phrase env (Il.VarE id $$ e'.at % t11') t11 t21 in - Ok (bs', Il.IterE (e'', (List, [x, e']))) + let* qs', e'' = cast_exp phrase env (Il.VarE id $$ e'.at % t11') t11 t21 in + Ok (qs', Il.IterE (e'', (List, [x, e']))) ); (fun env -> - let* bs', e'' = cast_exp phrase env e' t1 t21 in - Ok (bs', Il.ListE [e'']) + let* qs', e'' = cast_exp phrase env e' t1 t21 in + Ok (qs', Il.ListE [e'']) ); ] *) @@ -1902,13 +1924,13 @@ Printf.printf "[4] %s => %s\n%!" (Debug.el_typ t11) (Debug.il_typ t11'); cast_exp' phrase env e'' (IterT (t11, List) $ e'.at) t2 ); (fun env -> - let* bs', e'' = cast_exp phrase env e' t1 t21 in - Ok (bs', Il.ListE [e'']) + let* qs', e'' = cast_exp phrase env e' t1 t21 in + Ok (qs', Il.ListE [e'']) ); ] | _, IterT (t21, (List | List1)) -> - let* bs', e'' = cast_exp phrase env e' t1 t21 in - Ok (bs', Il.ListE [e'']) + let* qs', e'' = cast_exp phrase env e' t1 t21 in + Ok (qs', Il.ListE [e'']) | _, _ when is_variant_typ env t1 && is_variant_typ env t2 && not (is_iter_typ env t1) -> let cases1, dots1 = checkpoint (as_variant_typ "" env Check t1 e'.at) in let cases2, _dots2 = checkpoint (as_variant_typ "" env Check t2 e'.at) in @@ -1932,22 +1954,22 @@ Printf.printf "[4] %s => %s\n%!" (Debug.el_typ t11) (Debug.il_typ t11'); let t21 = expand env t2 $ t2.at in let t11' = elab_typ env (expand_nondef env t1) in let t21' = elab_typ env (expand_nondef env t2) in - let* bs1', e'' = cast_exp phrase env e' t1 t11 in + let* qs1', e'' = cast_exp phrase env e' t1 t11 in let e''' = Il.SubE (e'', t11', t21') in - let* bs2', e'''' = cast_exp' phrase env (e''' $$ e'.at % t21') t21 t2 in - Ok (bs1' @ bs2', e'''') + let* qs2', e'''' = cast_exp' phrase env (e''' $$ e'.at % t21') t21 t2 in + Ok (qs1' @ qs2', e'''') | _, _ -> fail_typ2 env e'.at phrase t1 t2 "" -and elab_iterexp env iter : Il.bind list * Il.iterexp = - let bs', iter' = elab_iter env iter in - (bs', (iter', [])) +and elab_iterexp env iter : Il.param list * Il.iterexp = + let qs', iter' = elab_iter env iter in + (qs', (iter', [])) (* Premises *) -and elab_prem env prem : Il.bind list * Il.prem list = +and elab_prem env prem : Il.param list * Il.prem list = match prem.it with | VarPr (id, t) -> env.vars <- bind "variable" env.vars id t; @@ -1955,35 +1977,35 @@ and elab_prem env prem : Il.bind list * Il.prem list = | RulePr (id, e) -> let t, _ = find "relation" env.rels id in let mixop, _, _ = elab_typ_notation env id t in - let bs', es', _s = checkpoint (elab_exp_notation' env id e t) in - bs', [Il.RulePr (id, mixop, tup_exp' es' e.at) $ prem.at] + let qs', es', _s = checkpoint (elab_exp_notation' env id e t) in + qs', [Il.RulePr (id, mixop, tup_exp' es' e.at) $ prem.at] | IfPr e -> - let bs', e' = checkpoint (elab_exp env e (BoolT $ e.at)) in - bs', [Il.IfPr e' $ prem.at] + let qs', e' = checkpoint (elab_exp env e (BoolT $ e.at)) in + qs', [Il.IfPr e' $ prem.at] | ElsePr -> [], [Il.ElsePr $ prem.at] | IterPr ({it = VarPr _; at; _}, _iter) -> error at "misplaced variable premise" | IterPr (prem1, iter) -> - let bs', iter' = elab_iterexp env iter in - let bs1', prems1' = elab_prem env prem1 in + let qs', iter' = elab_iterexp env iter in + let qs1', prems1' = elab_prem env prem1 in assert (List.length prems1' = 1); - bs' @ bs1', [Il.IterPr (List.hd prems1', iter') $ prem.at] + qs' @ qs1', [Il.IterPr (List.hd prems1', iter') $ prem.at] (* Grammars *) -and infer_sym env g : (Il.bind list * Il.sym * typ) attempt = +and infer_sym env g : (Il.param list * Il.sym * typ) attempt = Debug.(log_at "el.infer_sym" g.at (fun _ -> fmt "%s" (el_sym g)) - (function Ok (bs', g', t) -> fmt "%s %s : %s" (il_binds bs') (il_sym g') (el_typ t) | _ -> "fail") + (function Ok (qs', g', t) -> fmt "%s %s : %s" (il_quants qs') (il_sym g') (el_typ t) | _ -> "fail") ) @@ fun _ -> nest g.at (TupT [] $ g.at) ( match g.it with | VarG (id, as_) -> let ps, t, _gram, _prods' = find "grammar" env.grams id in - let bs', as', s = elab_args `Rhs env as_ ps g.at in - Ok (bs', Il.VarG (id, as') $ g.at, Subst.subst_typ s t) + let qs', as', s = elab_args `Rhs env as_ ps g.at in + Ok (qs', Il.VarG (id, as') $ g.at, Subst.subst_typ s t) | NumG (`CharOp, n) -> (* let s = try Utf8.encode [Z.to_int n] with Z.Overflow | Utf8.Utf8 -> @@ -2004,13 +2026,13 @@ and infer_sym env g : (Il.bind list * Il.sym * typ) attempt = | EpsG -> Ok ([], Il.EpsG $ g.at, TupT [] $ g.at) | SeqG gs -> - let* bs', gs' = elab_sym_list env (filter_nl gs) (TupT [] $ g.at) in - Ok (bs', Il.SeqG gs' $ g.at, TupT [] $ g.at) + let* qs', gs' = elab_sym_list env (filter_nl gs) (TupT [] $ g.at) in + Ok (qs', Il.SeqG gs' $ g.at, TupT [] $ g.at) | AltG gs -> choice env [ (fun env -> - let* bs', gs', ts = infer_sym_list env (filter_nl gs) in - if bs' <> [] then + let* qs', gs', ts = infer_sym_list env (filter_nl gs) in + if qs' <> [] then fail g.at "invalid expressions in alternative" else if ts <> [] && List.for_all (equiv_typ env (List.hd ts)) ts then Ok ([], Il.AltG gs' $ g.at, List.hd ts) @@ -2018,34 +2040,34 @@ and infer_sym env g : (Il.bind list * Il.sym * typ) attempt = ); (fun env -> (* HACK to treat singleton strings in short grammar as characters *) - let* bs', g' = elab_sym env g (NumT `NatT $ g.at) in - Ok (bs', g', NumT `NatT $ g.at) + let* qs', g' = elab_sym env g (NumT `NatT $ g.at) in + Ok (qs', g', NumT `NatT $ g.at) ); (fun env -> - let* bs', g' = elab_sym env g (TupT [] $ g.at) in - Ok (bs', g', TupT [] $ g.at) + let* qs', g' = elab_sym env g (TupT [] $ g.at) in + Ok (qs', g', TupT [] $ g.at) ) ] | RangeG (g1, g2) -> let env1 = local_env env in let env2 = local_env env in - let* bs1', g1' = elab_sym env1 g1 (NumT `NatT $ g1.at) in - let* bs2', g2' = elab_sym env2 g2 (NumT `NatT $ g2.at) in + let* qs1', g1' = elab_sym env1 g1 (NumT `NatT $ g1.at) in + let* qs2', g2' = elab_sym env2 g2 (NumT `NatT $ g2.at) in if env1.vars != env.vars then error g1.at "invalid symbol in range"; if env2.vars != env.vars then error g2.at "invalid symbol in range"; - Ok (bs1' @ bs2', Il.RangeG (g1', g2') $ g.at, NumT `NatT $ g.at) + Ok (qs1' @ qs2', Il.RangeG (g1', g2') $ g.at, NumT `NatT $ g.at) | ParenG g1 -> infer_sym env g1 | TupG _ -> error g.at "malformed grammar" | ArithG e -> infer_sym env (sym_of_exp e) | IterG (g1, iter) -> - let bs', iterexp' = elab_iterexp env iter in - let* bs1', g1', t1 = infer_sym env g1 in + let qs', iterexp' = elab_iterexp env iter in + let* qs1', g1', t1 = infer_sym env g1 in Ok ( - bs1' @ bs', + qs1' @ qs', Il.IterG (g1', iterexp') $ g.at, IterT (t1, match iter with Opt -> Opt | _ -> List) $ g.at ) @@ -2054,37 +2076,37 @@ and infer_sym env g : (Il.bind list * Il.sym * typ) attempt = (fun env -> (* HACK to treat singleton strings in short grammar as characters *) let t1 = NumT `NatT $ g1.at in - let* bs1', g1' = elab_sym env g1 t1 in - let* bs2', e' = elab_exp env e t1 in - Ok (bs2' @ bs1', Il.AttrG (e', g1') $ g.at, t1) + let* qs1', g1' = elab_sym env g1 t1 in + let* qs2', e' = elab_exp env e t1 in + Ok (qs2' @ qs1', Il.AttrG (e', g1') $ g.at, t1) ); (fun env -> - let* bs1', g1', t1 = infer_sym env g1 in - let* bs2', e' = elab_exp env e t1 in - Ok (bs1' @ bs2', Il.AttrG (e', g1') $ g.at, t1) + let* qs1', g1', t1 = infer_sym env g1 in + let* qs2', e' = elab_exp env e t1 in + Ok (qs1' @ qs2', Il.AttrG (e', g1') $ g.at, t1) ); ] (* - let bs1', g1', t1 = infer_sym env g1 in - let bs2', e' = checkpoint (elab_exp env e t1) in - Ok (bs1' @ bs2', Il.AttrG (e', g1') $ g.at, t1) + let qs1', g1', t1 = infer_sym env g1 in + let qs2', e' = checkpoint (elab_exp env e t1) in + Ok (qs1' @ qs2', Il.AttrG (e', g1') $ g.at, t1) *) | FuseG _ -> error g.at "misplaced token concatenation" | UnparenG _ -> error g.at "misplaced token unparenthesize" ) -and infer_sym_list env es : (Il.bind list * Il.sym list * typ list) attempt = +and infer_sym_list env es : (Il.param list * Il.sym list * typ list) attempt = match es with | [] -> Ok ([], [], []) | g::gs -> - let* bs1', g', t = infer_sym env g in - let* bs2', gs', ts = infer_sym_list env gs in - Ok (bs1' @ bs2', g'::gs', t::ts) + let* qs1', g', t = infer_sym env g in + let* qs2', gs', ts = infer_sym_list env gs in + Ok (qs1' @ qs2', g'::gs', t::ts) -and elab_sym env g t : (Il.bind list * Il.sym) attempt = +and elab_sym env g t : (Il.param list * Il.sym) attempt = Debug.(log_at "el.elab_sym" g.at (fun _ -> fmt "%s : %s" (el_sym g) (el_typ t)) - (function Ok (bs', g') -> fmt "%s%s" (il_binds bs') (il_sym g') | _ -> "fail") + (function Ok (qs', g') -> fmt "%s%s" (il_quants qs') (il_sym g') | _ -> "fail") ) @@ fun _ -> nest g.at t ( match g.it with @@ -2094,32 +2116,32 @@ and elab_sym env g t : (Il.bind list * Il.sym) attempt = if List.length cs = 1 then Ok ([], Il.NumG (List.hd cs) $ g.at) else - let* bs1', g', t' = infer_sym env g in - let* bs2', g'' = cast_sym env g' t' t in - Ok (bs1' @ bs2', g'') + let* qs1', g', t' = infer_sym env g in + let* qs2', g'' = cast_sym env g' t' t in + Ok (qs1' @ qs2', g'') | AltG gs -> - let* bs', gs' = elab_sym_list env (filter_nl gs) t in - Ok (bs', Il.AltG gs' $ g.at) + let* qs', gs' = elab_sym_list env (filter_nl gs) t in + Ok (qs', Il.AltG gs' $ g.at) | ParenG g1 -> elab_sym env g1 t | _ -> - let* bs1', g', t' = infer_sym env g in - let* bs2', g'' = cast_sym env g' t' t in - Ok (bs1' @ bs2', g'') + let* qs1', g', t' = infer_sym env g in + let* qs2', g'' = cast_sym env g' t' t in + Ok (qs1' @ qs2', g'') ) -and elab_sym_list env es t : (Il.bind list * Il.sym list) attempt = +and elab_sym_list env es t : (Il.param list * Il.sym list) attempt = match es with | [] -> Ok ([], []) | g::gs -> - let* bs1', g' = elab_sym env g t in - let* bs2', gs' = elab_sym_list env gs t in - Ok (bs1' @ bs2', g'::gs') + let* qs1', g' = elab_sym env g t in + let* qs2', gs' = elab_sym_list env gs t in + Ok (qs1' @ qs2', g'::gs') -and cast_sym env g' t1 t2 : (Il.bind list * Il.sym) attempt = +and cast_sym env g' t1 t2 : (Il.param list * Il.sym) attempt = Debug.(log_at "el.elab_cast_sym" g'.at (fun _ -> fmt "%s : %s :> %s" (il_sym g') (el_typ t1) (el_typ t2)) - (function Ok (bs', g'') -> fmt "%s%s" (il_binds bs') (il_sym g'') | _ -> "fail") + (function Ok (qs', g'') -> fmt "%s%s" (il_quants qs') (il_sym g'') | _ -> "fail") ) @@ fun _ -> nest g'.at t2 ( if equiv_typ env t1 t2 then @@ -2140,49 +2162,48 @@ and elab_prod env prod t : Il.prod list = env'.pm <- false; let dims = Dim.check_prod (vars env) prod in let dims' = Dim.Env.map (List.map (elab_typiter env')) dims in - let bs1', g', _t = checkpoint (infer_sym env' g) in + let qs1', g', _t = checkpoint (infer_sym env' g) in let g' = Dim.annot_sym dims' g' in - let bs2', e' = + let qs2', e' = checkpoint ( if equiv_typ env' t (TupT [] $ e.at) then (* Special case: ignore unit attributes *) (* TODO(4, rossberg): introduce proper top type? *) - let* bs', e', _t = infer_exp env' e in + let* qs', e', _t = infer_exp env' e in let t'_unit = Il.TupT [] $ e.at in - let joker () = Il.VarE ("_" $ e.at) $$ e.at % t'_unit in - Ok (bs', Il.ProjE ( + Ok (qs', Il.ProjE ( Il.TupE [ e'; Il.TupE [] $$ e.at % t'_unit - ] $$ e.at % (Il.TupT [joker (), e'.note; joker (), t'_unit] $ e.at), 1 + ] $$ e.at % (Il.TupT ["_" $ e.at, e'.note; "_" $ e.at, t'_unit] $ e.at), 1 ) $$ e.at % t'_unit) else elab_exp env' e t ) in let e' = Dim.annot_exp dims' e' in - let bss3', premss' = List.split (map_filter_nl_list (elab_prem env') prems) in + let qss3', premss' = List.split (map_filter_nl_list (elab_prem env') prems) in let prems' = List.map (Dim.annot_prem dims') (List.concat premss') in let det = Free.(diff (union (det_sym g) (det_prems prems)) (bound_env env)) in let free = Free.(diff (free_prod prod) (union (det_prod prod) (bound_env env'))) in if free <> Free.empty then error prod.at ("grammar rule contains indeterminate variable(s) `" ^ String.concat "`, `" (Free.Set.elements free.varid) ^ "`"); - let acc_bs', (module Arg : Iter.Arg) = make_binds_iter_arg env' det dims in + let acc_qs', (module Arg : Iter.Arg) = make_quants_iter_arg env' det dims in let module Acc = Iter.Make(Arg) in Acc.sym g; Acc.exp e; Acc.prems prems; - let prod' = Il.ProdD (!acc_bs' @ bs1' @ bs2' @ List.concat bss3', g', e', prems') $ prod.at in + let prod' = Il.ProdD (!acc_qs' @ qs1' @ qs2' @ List.concat qss3', g', e', prems') $ prod.at in if not env'.pm then [prod'] else prod' :: elab_prod env Subst.(subst_prod pm_snd (Iter.clone_prod prod)) t | RangeP (g1, e1, g2, e2) -> let t = NumT `NatT $ prod.at in - let bs11', g1' = checkpoint (elab_sym env g1 t) in - let bs12', e1' = checkpoint (elab_exp env e1 t) in - let bs21', g2' = checkpoint (elab_sym env g2 t) in - let bs22', e2' = checkpoint (elab_exp env e2 t) in + let qs11', g1' = checkpoint (elab_sym env g1 t) in + let qs12', e1' = checkpoint (elab_exp env e1 t) in + let qs21', g2' = checkpoint (elab_sym env g2 t) in + let qs22', e2' = checkpoint (elab_exp env e2 t) in let c1 = match g1'.it with | Il.NumG c1 -> c1 @@ -2211,33 +2232,33 @@ and elab_prod env prod t : Il.prod list = let n = `Nat Z.(n1 + Z.of_int i) in let g' = {(if i = 0 then g1' else g2') with it = Il.NumG (c1 + i)} in let e' = {(if i = 0 then e1' else e2') with it = Il.NumE n} in - Il.ProdD (bs11' @ bs12' @ bs21' @ bs22', g', e', []) $ prod.at + Il.ProdD (qs11' @ qs12' @ qs21' @ qs22', g', e', []) $ prod.at ) | EquivP (g1, g2, prems) -> let env' = local_env env in env'.pm <- false; let dims = Dim.check_prod (vars env) prod in let dims' = Dim.Env.map (List.map (elab_typiter env')) dims in - let bs1', g1', _t1 = checkpoint (infer_sym env' g1) in + let qs1', g1', _t1 = checkpoint (infer_sym env' g1) in let g1' = Dim.annot_sym dims' g1' in - let bs2', g2', _t2 = checkpoint (infer_sym env' g2) in + let qs2', g2', _t2 = checkpoint (infer_sym env' g2) in let g2' = Dim.annot_sym dims' g2' in - let bss3', premss' = List.split (map_filter_nl_list (elab_prem env') prems) in + let qss3', premss' = List.split (map_filter_nl_list (elab_prem env') prems) in let prems' = List.map (Dim.annot_prem dims') (List.concat premss') in let det = Free.(diff (union (det_sym g1) (det_prems prems)) (bound_env env)) in let free = Free.(diff (free_prod prod) (union (det_prod prod) (bound_env env'))) in if free <> Free.empty then error prod.at ("grammar rule contains indeterminate variable(s) `" ^ String.concat "`, `" (Free.Set.elements free.varid) ^ "`"); - let acc_bs', (module Arg : Iter.Arg) = make_binds_iter_arg env' det dims in + let acc_qs', (module Arg : Iter.Arg) = make_quants_iter_arg env' det dims in let module Acc = Iter.Make(Arg) in Acc.sym g1; Acc.sym g2; Acc.prems prems; - ignore (!acc_bs' @ bs1' @ bs2' @ List.concat bss3', g1', g2', prems'); + ignore (!acc_qs' @ qs1' @ qs2' @ List.concat qss3', g1', g2', prems'); [] (* TODO(4, rossberg): translate equiv grammars properly *) (* - let prod' = Il.ProdD (!acc_bs', g1', e', prems') $ prod.at in + let prod' = Il.ProdD (!acc_qs', g1', e', prems') $ prod.at in if not env'.pm then [prod'] else @@ -2251,7 +2272,7 @@ and elab_gram env gram t : Il.prod list = (* Definitions *) -and make_binds_iter_arg env free dims : Il.bind list ref * (module Iter.Arg) = +and make_quants_iter_arg env free dims : Il.param list ref * (module Iter.Arg) = let module Arg = struct include Iter.Skip @@ -2261,7 +2282,7 @@ and make_binds_iter_arg env free dims : Il.bind list ref * (module Iter.Arg) = let visit_typid id = if Free.Set.mem id.it !left.typid then ( - acc := !acc @ [Il.TypB id $ id.at]; + acc := !acc @ [Il.TypP id $ id.at]; left := Free.{!left with typid = Set.remove id.it !left.typid}; ) @@ -2287,7 +2308,7 @@ and make_binds_iter_arg env free dims : Il.bind list ref * (module Iter.Arg) = Il.IterT (t, iter) $ t.at ) (elab_typ env t) ctx' in - acc := !acc @ [Il.ExpB (Dim.annot_varid id ctx', t') $ id.at]; + acc := !acc @ [Il.ExpP (Dim.annot_varid id ctx', t') $ id.at]; left := Free.{!left with varid = Set.remove id.it !left.varid}; ) @@ -2319,13 +2340,13 @@ and make_binds_iter_arg env free dims : Il.bind list ref * (module Iter.Arg) = List.map (fun id -> "`" ^ id ^ "`") |> String.concat ", " ) ^ ", which only occur(s) to its right; try to reorder parameters or premises"); - acc := !acc @ [Il.DefB (id, ps', t') $ id.at]; + acc := !acc @ [Il.DefP (id, ps', t') $ id.at]; left := Free.{!left with defid = Set.remove id.it !left.defid}; ) end in Arg.acc, (module Arg) -and elab_arg in_lhs env a p s : Il.bind list * Il.arg list * Subst.subst = +and elab_arg in_lhs env a p s : Il.param list * Il.arg list * Subst.subst = (match !(a.it), p.it with (* HACK: handle shorthands *) | ExpA e, TypP _ -> a.it := TypA (typ_of_exp e) | ExpA e, GramP _ -> a.it := GramA (sym_of_exp e) @@ -2334,8 +2355,8 @@ and elab_arg in_lhs env a p s : Il.bind list * Il.arg list * Subst.subst = ); match !(a.it), (Subst.subst_param s p).it with | ExpA e, ExpP (id, t) -> - let bs', e' = checkpoint (elab_exp env e t) in - bs', [Il.ExpA e' $ a.at], Subst.add_varid s id e + let qs', e' = checkpoint (elab_exp env e t) in + qs', [Il.ExpA e' $ a.at], Subst.add_varid s id e | TypA ({it = VarT (id', []); _} as t), TypP id when in_lhs = `Lhs -> let id'' = strip_var_suffix id' in let is_prim = @@ -2355,12 +2376,12 @@ and elab_arg in_lhs env a p s : Il.bind list * Il.arg list * Subst.subst = | GramA g, GramP _ when in_lhs = `Lhs -> error g.at "misplaced grammar symbol" | GramA g, GramP (id', t) -> - let bs', g', t' = checkpoint (infer_sym env g) in + let qs', g', t' = checkpoint (infer_sym env g) in let s' = subst_implicit env s t t' in if not (equiv_typ env t' (Subst.subst_typ s' t)) then error_typ2 env a.at "argument" t' t ""; let as' = List.map (fun (_id, t) -> Il.TypA (elab_typ env t) $ t.at) Subst.(Map.bindings s'.typid) in - bs', as' @ [Il.GramA g' $ a.at], Subst.add_gramid s' id' g + qs', as' @ [Il.GramA g' $ a.at], Subst.add_gramid s' id' g | DefA id, DefP (id', ps', t') when in_lhs = `Lhs -> env.defs <- bind "definition" env.defs id (ps', t', []); [], [Il.DefA id $ a.at], Subst.add_defid s id' id @@ -2376,21 +2397,21 @@ and elab_arg in_lhs env a p s : Il.bind list * Il.arg list * Subst.subst = | _, _ -> error a.at "sort mismatch for argument" -and elab_args in_lhs env as_ ps at : Il.bind list * Il.arg list * Subst.subst = +and elab_args in_lhs env as_ ps at : Il.param list * Il.arg list * Subst.subst = Debug.(log_at "el.elab_args" at (fun _ -> fmt "(%s) : (%s)" (list el_arg as_) (list el_param ps)) - (fun (bs', as', _) -> fmt "%s(%s)" (il_binds bs') (list il_arg as')) + (fun (qs', as', _) -> fmt "%s(%s)" (il_quants qs') (list il_arg as')) ) @@ fun _ -> elab_args' in_lhs env as_ ps [] [] Subst.empty at -and elab_args' in_lhs env as_ ps bs' as' s at : Il.bind list * Il.arg list * Subst.subst = +and elab_args' in_lhs env as_ ps qs' as' s at : Il.param list * Il.arg list * Subst.subst = match as_, ps with - | [], [] -> bs', List.concat (List.rev as'), s + | [], [] -> qs', List.concat (List.rev as'), s | a::_, [] -> error a.at "too many arguments" | [], _::_ -> error at "too few arguments" | a::as1, p::ps1 -> - let bs'', a', s' = elab_arg in_lhs env a p s in - elab_args' in_lhs env as1 ps1 (bs' @ bs'') (a'::as') s' at + let qs'', a', s' = elab_arg in_lhs env a p s in + elab_args' in_lhs env as1 ps1 (qs' @ qs'') (a'::as') s' at and subst_implicit env s t t' : Subst.subst = let free = Free.(Set.filter (fun id -> not (Map.mem id env.typs)) (free_typ t).typid) in @@ -2571,8 +2592,8 @@ let elab_hintdef _env hd : Il.def list = [] -let infer_binds env env' dims d : Il.bind list = - Debug.(log_in_at "el.infer_binds" d.at +let infer_quants env env' dims d : Il.param list = + Debug.(log_in_at "el.infer_quants" d.at (fun _ -> Map.fold (fun id _ ids -> if Map.mem id env.vars then ids else id::ids @@ -2584,14 +2605,14 @@ let infer_binds env env' dims d : Il.bind list = if free <> Free.empty then error d.at ("definition contains indeterminate variable(s) `" ^ String.concat "`, `" (Free.Set.elements free.varid) ^ "`"); - let acc_bs', (module Arg : Iter.Arg) = make_binds_iter_arg env' det dims in + let acc_qs', (module Arg : Iter.Arg) = make_quants_iter_arg env' det dims in let module Acc = Iter.Make(Arg) in Acc.def d; - !acc_bs' + !acc_qs' -let infer_no_binds env dims d = - let bs' = infer_binds env env dims d in - assert (bs' = []) +let infer_no_quants env dims d = + let qs' = infer_quants env env dims d in + assert (qs' = []) let rec elab_def env d : Il.def list = @@ -2603,7 +2624,7 @@ let rec elab_def env d : Il.def list = let ps' = elab_params (local_env env) ps in if env.pm then error d.at "misplaced +- or -+ operator in syntax type declaration"; let dims = Dim.check_def d in - infer_no_binds env dims d; + infer_no_quants env dims d; env.typs <- rebind "syntax type" env.typs id (ps, Family []); [Il.TypD (id, ps', []) $ d.at] @ elab_hintdef env (TypH (id, "" $ id.at, hints) $ d.at) @@ -2611,12 +2632,12 @@ let rec elab_def env d : Il.def list = let env' = local_env env in env'.pm <- false; let ps1, k1 = find "syntax type" env.typs id1 in - let bs1', as', _s = elab_args `Lhs env' as_ ps1 d.at in + let qs1', as', _s = elab_args `Lhs env' as_ ps1 d.at in let dt' = elab_typ_definition env' id1 t in let dims = Dim.check_def d in let dims' = Dim.Env.map (List.map (elab_typiter env')) dims in - let bs' = infer_binds env env' dims d in - let inst' = Il.InstD (bs' @ bs1', List.map (Dim.annot_arg dims') as', dt') $ d.at in + let qs' = infer_quants env env' dims d in + let inst' = Il.InstD (qs' @ qs1', List.map (Dim.annot_arg dims') as', dt') $ d.at in let k1', closed = match k1, t.it with | Opaque, (CaseT (Dots, _, _, _) | StrT (Dots, _, _, _)) -> @@ -2674,7 +2695,7 @@ let rec elab_def env d : Il.def list = if env'.pm then error d.at "misplaced +- or -+ operator in grammar"; let prods' = List.map (fun pr -> id2, pr) (elab_gram env' gram t) in let dims = Dim.check_def d in - infer_no_binds env' dims d; + infer_no_quants env' dims d; let ps1, t1, gram1_opt, prods1' = find "grammar" env.grams id1 in let gram', last = match gram1_opt, gram.it with @@ -2705,7 +2726,7 @@ let rec elab_def env d : Il.def list = let mixop, ts', _ts = elab_typ_notation env id t in if env.pm then error d.at "misplaced +- or -+ operator in relation"; let dims = Dim.check_def d in - infer_no_binds env dims d; + infer_no_quants env dims d; env.rels <- bind "relation" env.rels id (t, []); [Il.RelD (id, mixop, tup_typ' ts' t.at, []) $ d.at] @ elab_hintdef env (RelH (id, hints) $ d.at) @@ -2719,12 +2740,12 @@ let rec elab_def env d : Il.def list = error d.at ("duplicate rule name `" ^ id1.it ^ (if id2.it = "" then "" else "/" ^ id2.it) ^ "`"); let mixop, _, _ = elab_typ_notation env id1 t in - let bs1', es', _ = checkpoint (elab_exp_notation' env' id1 e t) in + let qs1', es', _ = checkpoint (elab_exp_notation' env' id1 e t) in let es' = List.map (Dim.annot_exp dims') es' in - let bss2', premss' = List.split (map_filter_nl_list (elab_prem env') prems) in + let qss2', premss' = List.split (map_filter_nl_list (elab_prem env') prems) in let prems' = List.map (Dim.annot_prem dims') (List.concat premss') in - let bs' = infer_binds env env' dims d in - let rule' = Il.RuleD (id2, bs' @ bs1' @ List.concat bss2', mixop, tup_exp' es' e.at, prems') $ d.at in + let qs' = infer_quants env env' dims d in + let rule' = Il.RuleD (id2, qs' @ qs1' @ List.concat qss2', mixop, tup_exp' es' e.at, prems') $ d.at in env.rels <- rebind "relation" env.rels id1 (t, rules' @ [id2, rule']); if not env'.pm then [] else elab_def env Subst.(subst_def pm_snd (Iter.clone_def d)) | VarD (id, t, _hints) -> @@ -2732,7 +2753,7 @@ let rec elab_def env d : Il.def list = let _t' = elab_typ env t in if env.pm then error d.at "misplaced +- or -+ operator in variable declaration"; let dims = Dim.check_def d in - infer_no_binds env dims d; + infer_no_quants env dims d; env.gvars <- rebind "variable" env.gvars id t; [] | DecD (id, ps, t, hints) -> @@ -2742,7 +2763,7 @@ let rec elab_def env d : Il.def list = let t' = elab_typ env' t in if env'.pm then error d.at "misplaced +- or -+ operator in declaration"; let dims = Dim.check_def d in - infer_no_binds env dims d; + infer_no_quants env dims d; env.defs <- bind "definition" env.defs id (ps, t, []); [Il.DecD (id, ps', t', []) $ d.at] @ elab_hintdef env (DecH (id, hints) $ d.at) @@ -2752,14 +2773,14 @@ let rec elab_def env d : Il.def list = let dims = Dim.check_def d in let dims' = Dim.Env.map (List.map (elab_typiter env')) dims in let ps, t, clauses' = find "definition" env.defs id in - let bs1', as', s = elab_args `Lhs env' as_ ps d.at in + let qs1', as', s = elab_args `Lhs env' as_ ps d.at in let as' = List.map (Dim.annot_arg dims') as' in - let bss2', premss' = List.split (map_filter_nl_list (elab_prem env') prems) in + let qss2', premss' = List.split (map_filter_nl_list (elab_prem env') prems) in let prems' = List.map (Dim.annot_prem dims') (List.concat premss') in - let bs3', e' = checkpoint (elab_exp env' e (Subst.subst_typ s t)) in + let qs3', e' = checkpoint (elab_exp env' e (Subst.subst_typ s t)) in let e' = Dim.annot_exp dims' e' in - let bs' = infer_binds env env' dims d in - let clause' = Il.DefD (bs' @ bs1' @ List.concat bss2' @ bs3', as', e', prems') $ d.at in + let qs' = infer_quants env env' dims d in + let clause' = Il.DefD (qs' @ qs1' @ List.concat qss2' @ qs3', as', e', prems') $ d.at in env.defs <- rebind "definition" env.defs id (ps, t, clauses' @ [(d, clause')]); if not env'.pm then [] else elab_def env Subst.(subst_def pm_snd (Iter.clone_def d)) | SepD -> diff --git a/spectec/src/il/ast.ml b/spectec/src/il/ast.ml index 913268734..51520efe3 100644 --- a/spectec/src/il/ast.ml +++ b/spectec/src/il/ast.ml @@ -31,7 +31,7 @@ and typ' = | BoolT (* `bool` *) | NumT of numtyp (* numtyp *) | TextT (* `text` *) - | TupT of (exp * typ) list (* typ * ... * typ *) + | TupT of (id * typ) list (* (id : typ, ..., id : typ) *) | IterT of typ * iter (* typ iter *) and deftyp = deftyp' phrase @@ -40,8 +40,8 @@ and deftyp' = | StructT of typfield list (* record type *) | VariantT of typcase list (* variant type *) -and typfield = atom * (bind list * typ * prem list) * hint list (* record field *) -and typcase = mixop * (bind list * typ * prem list) * hint list (* variant case *) +and typfield = atom * (param list * typ * prem list) * hint list (* record field *) +and typcase = mixop * (param list * typ * prem list) * hint list (* variant case *) (* Expressions *) @@ -52,44 +52,44 @@ and cmpop = [Bool.cmpop | Num.cmpop] and exp = (exp', typ) note_phrase and exp' = - | VarE of id (* varid *) - | BoolE of bool (* bool *) - | NumE of num (* num *) - | TextE of text (* text *) - | UnE of unop * optyp * exp (* unop exp *) - | BinE of binop * optyp * exp * exp (* exp binop exp *) - | CmpE of cmpop * optyp * exp * exp (* exp cmpop exp *) - | TupE of exp list (* ( exp* ) *) - | ProjE of exp * int (* exp.i *) - | CaseE of mixop * exp (* atom exp? *) - | UncaseE of exp * mixop (* exp!mixop *) - | OptE of exp option (* exp? *) - | TheE of exp (* exp! *) - | StrE of expfield list (* { expfield* } *) - | DotE of exp * atom (* exp.atom *) - | CompE of exp * exp (* exp @ exp *) - | ListE of exp list (* [exp ... exp] *) - | LiftE of exp (* exp : _? <: _* *) - | MemE of exp * exp (* exp `<-` exp *) - | LenE of exp (* |exp| *) - | CatE of exp * exp (* exp :: exp *) - | IdxE of exp * exp (* exp[exp]` *) - | SliceE of exp * exp * exp (* exp[exp : exp] *) - | UpdE of exp * path * exp (* exp[path = exp] *) - | ExtE of exp * path * exp (* exp[path =.. exp] *) - | CallE of id * arg list (* defid( arg* ) *) - | IterE of exp * iterexp (* exp iter *) - | CvtE of exp * numtyp * numtyp (* exp : typ1 <:> typ2 *) - | SubE of exp * typ * typ (* exp : typ1 <: typ2 *) - -and expfield = atom * exp (* atom exp *) + | VarE of id (* varid *) + | BoolE of bool (* bool *) + | NumE of num (* num *) + | TextE of text (* text *) + | UnE of unop * optyp * exp (* unop exp *) + | BinE of binop * optyp * exp * exp (* exp binop exp *) + | CmpE of cmpop * optyp * exp * exp (* exp cmpop exp *) + | TupE of exp list (* ( exp* ) *) + | ProjE of exp * int (* exp.i *) + | CaseE of mixop * arg list * exp (* atom exp? *) + | UncaseE of exp * mixop * arg list (* exp!mixop *) + | OptE of exp option (* exp? *) + | TheE of exp (* exp! *) + | StrE of expfield list (* { expfield* } *) + | DotE of exp * atom * arg list (* exp.atom *) + | CompE of exp * exp (* exp @ exp *) + | ListE of exp list (* [exp ... exp] *) + | LiftE of exp (* exp : _? <: _* *) + | MemE of exp * exp (* exp `<-` exp *) + | LenE of exp (* |exp| *) + | CatE of exp * exp (* exp :: exp *) + | IdxE of exp * exp (* exp[exp]` *) + | SliceE of exp * exp * exp (* exp[exp : exp] *) + | UpdE of exp * path * exp (* exp[path = exp] *) + | ExtE of exp * path * exp (* exp[path =.. exp] *) + | CallE of id * arg list (* defid( arg* ) *) + | IterE of exp * iterexp (* exp iter *) + | CvtE of exp * numtyp * numtyp (* exp : typ1 <:> typ2 *) + | SubE of exp * typ * typ (* exp : typ1 <: typ2 *) + +and expfield = atom * arg list * exp (* atom exp *) and path = (path', typ) note_phrase and path' = - | RootP (* *) - | IdxP of path * exp (* path `[` exp `]` *) - | SliceP of path * exp * exp (* path `[` exp `:` exp `]` *) - | DotP of path * atom (* path `.` atom *) + | RootP (* *) + | IdxP of path * exp (* path[exp] *) + | SliceP of path * exp * exp (* path[exp : exp] *) + | DotP of path * atom * arg list (* path.atom *) and iterexp = iter * (id * exp) list @@ -98,39 +98,32 @@ and iterexp = iter * (id * exp) list and sym = sym' phrase and sym' = - | VarG of id * arg list (* gramid (`(` arg,* `)`)? *) - | NumG of int (* num *) - | TextG of string (* `"`text`"` *) - | EpsG (* `eps` *) - | SeqG of sym list (* sym sym *) - | AltG of sym list (* sym `|` sym *) - | RangeG of sym * sym (* sym `|` `...` `|` sym *) - | IterG of sym * iterexp (* sym iter *) - | AttrG of exp * sym (* exp `:` sym *) + | VarG of id * arg list (* gramid( arg* ) *) + | NumG of int (* num *) + | TextG of string (* text *) + | EpsG (* epsilon *) + | SeqG of sym list (* sym sym *) + | AltG of sym list (* sym | sym *) + | RangeG of sym * sym (* sym | ... | sym *) + | IterG of sym * iterexp (* sym iter *) + | AttrG of exp * sym (* exp : sym *) (* Definitions *) and arg = arg' phrase and arg' = - | ExpA of exp (* exp *) - | TypA of typ (* `syntax` typ *) - | DefA of id (* `def` defid *) - | GramA of sym (* `grammar` sym *) - -and bind = bind' phrase -and bind' = - | ExpB of id * typ - | TypB of id - | DefB of id * param list * typ - | GramB of id * param list * typ + | ExpA of exp (* exp *) + | TypA of typ (* `syntax` typ *) + | DefA of id (* `def` defid *) + | GramA of sym (* `grammar` sym *) and param = param' phrase and param' = - | ExpP of id * typ (* varid `:` typ *) - | TypP of id (* `syntax` varid *) - | DefP of id * param list * typ (* `def` defid params `:` typ *) - | GramP of id * typ (* `grammar` gramid params `:` typ *) + | ExpP of id * typ (* varid : typ *) + | TypP of id (* `syntax` varid *) + | DefP of id * param list * typ (* `def` defid params : typ *) + | GramP of id * param list * typ (* `grammar` gramid param : typ *) and def = def' phrase and def' = @@ -143,19 +136,19 @@ and def' = and inst = inst' phrase and inst' = - | InstD of bind list * arg list * deftyp (* family instance clause *) + | InstD of param list * arg list * deftyp (* family instance clause *) and rule = rule' phrase and rule' = - | RuleD of id * bind list * mixop * exp * prem list (* relation rule *) + | RuleD of id * param list * mixop * exp * prem list (* relation rule *) and clause = clause' phrase and clause' = - | DefD of bind list * arg list * exp * prem list (* definition clause *) + | DefD of param list * arg list * exp * prem list (* definition clause *) and prod = prod' phrase and prod' = - | ProdD of bind list * sym * exp * prem list (* grammar production *) + | ProdD of param list * sym * exp * prem list (* grammar production *) and prem = prem' phrase and prem' = diff --git a/spectec/src/il/debug.ml b/spectec/src/il/debug.ml index c080fa080..935ffbd7d 100644 --- a/spectec/src/il/debug.ml +++ b/spectec/src/il/debug.ml @@ -15,11 +15,10 @@ let il_prod = string_of_prod let il_clause = string_of_clause let il_prem = string_of_prem let il_arg = string_of_arg -let il_bind = string_of_bind +let il_args = string_of_args 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_params = string_of_params +let il_quants = string_of_quants let il_def = string_of_def let il_free s = String.concat " " Free.[ diff --git a/spectec/src/il/dune b/spectec/src/il/dune index dc411c64e..7ed9035a8 100644 --- a/spectec/src/il/dune +++ b/spectec/src/il/dune @@ -1,5 +1,5 @@ (library (name il) (libraries util zarith xl el) - (modules ast eq free subst iter env eval print debug valid) + (modules ast eq free fresh subst iter env eval print debug valid) ) diff --git a/spectec/src/il/eq.ml b/spectec/src/il/eq.ml index c00287753..83a13f072 100644 --- a/spectec/src/il/eq.ml +++ b/spectec/src/il/eq.ml @@ -19,8 +19,8 @@ let eq_pair eq_x eq_y (x1, y1) (x2, y2) = (* Ids *) -let eq_id i1 i2 = - i1.it = i2.it +let eq_id x1 x2 = + x1.it = x2.it let eq_atom atom1 atom2 = Atom.eq atom1 atom2 @@ -33,7 +33,7 @@ let eq_mixop op1 op2 = let rec eq_iter iter1 iter2 = match iter1, iter2 with - | ListN (e1, ido1), ListN (e2, ido2) -> eq_exp e1 e2 && eq_opt eq_id ido1 ido2 + | ListN (e1, xo1), ListN (e2, xo2) -> eq_exp e1 e2 && eq_opt eq_id xo1 xo2 | _, _ -> iter1 = iter2 @@ -41,8 +41,8 @@ let rec eq_iter iter1 iter2 = and eq_typ t1 t2 = match t1.it, t2.it with - | VarT (id1, as1), VarT (id2, as2) -> eq_id id1 id2 && eq_list eq_arg as1 as2 - | TupT xts1, TupT xts2 -> eq_list (eq_pair eq_exp eq_typ) xts1 xts2 + | VarT (x1, as1), VarT (x2, as2) -> eq_id x1 x2 && eq_list eq_arg as1 as2 + | TupT xts1, TupT xts2 -> eq_list (eq_pair eq_id eq_typ) xts1 xts2 | IterT (t11, iter1), IterT (t21, iter2) -> eq_typ t11 t21 && eq_iter iter1 iter2 | _, _ -> t1.it = t2.it @@ -65,7 +65,7 @@ and eq_typcase (op1, (_binds1, t1, prems1), _) (op2, (_binds2, t2, prems2), _) = and eq_exp e1 e2 = match e1.it, e2.it with - | VarE id1, VarE id2 -> eq_id id1 id2 + | VarE x1, VarE x2 -> eq_id x1 x2 | UnE (op1, ot1, e11), UnE (op2, ot2, e21) -> op1 = op2 && ot1 = ot2 && eq_exp e11 e21 | BinE (op1, ot1, e11, e12), BinE (op2, ot2, e21, e22) -> @@ -86,23 +86,26 @@ and eq_exp e1 e2 = | TupE es1, TupE es2 | ListE es1, ListE es2 -> eq_list eq_exp es1 es2 | StrE efs1, StrE efs2 -> eq_list eq_expfield efs1 efs2 - | DotE (e11, atom1), DotE (e21, atom2) -> eq_exp e11 e21 && eq_atom atom1 atom2 - | UncaseE (e1, op1), UncaseE (e2, op2) -> eq_mixop op1 op2 && eq_exp e1 e2 - | CallE (id1, as1), CallE (id2, as2) -> eq_id id1 id2 && eq_list eq_arg as1 as2 + | DotE (e11, atom1, as1), DotE (e21, atom2, as2) -> + eq_exp e11 e21 && eq_atom atom1 atom2 && eq_list eq_arg as1 as2 + | UncaseE (e1, op1, as1), UncaseE (e2, op2, as2) -> + eq_mixop op1 op2 && eq_exp e1 e2 && eq_list eq_arg as1 as2 + | CallE (x1, as1), CallE (x2, as2) -> eq_id x1 x2 && eq_list eq_arg as1 as2 | IterE (e11, iter1), IterE (e21, iter2) -> eq_exp e11 e21 && eq_iterexp iter1 iter2 | OptE eo1, OptE eo2 -> eq_opt eq_exp eo1 eo2 | ProjE (e1, i1), ProjE (e2, i2) -> eq_exp e1 e2 && i1 = i2 | TheE e1, TheE e2 -> eq_exp e1 e2 - | CaseE (op1, e1), CaseE (op2, e2) -> eq_mixop op1 op2 && eq_exp e1 e2 + | CaseE (op1, as1, e1), CaseE (op2, as2, e2) -> + eq_mixop op1 op2 && eq_list eq_arg as1 as2 && eq_exp e1 e2 | CvtE (e1, nt11, nt12), CvtE (e2, nt21, nt22) -> eq_exp e1 e2 && nt11 = nt21 && nt12 = nt22 | SubE (e1, t11, t12), SubE (e2, t21, t22) -> eq_exp e1 e2 && eq_typ t11 t21 && eq_typ t12 t22 | _, _ -> e1.it = e2.it -and eq_expfield (atom1, e1) (atom2, e2) = - eq_atom atom1 atom2 && eq_exp e1 e2 +and eq_expfield (atom1, as1, e1) (atom2, as2, e2) = + eq_atom atom1 atom2 && eq_list eq_arg as1 as2 && eq_exp e1 e2 and eq_path p1 p2 = match p1.it, p2.it with @@ -110,7 +113,8 @@ and eq_path p1 p2 = | IdxP (p11, e1), IdxP (p21, e2) -> eq_path p11 p21 && eq_exp e1 e2 | SliceP (p11, e11, e12), SliceP (p21, e21, e22) -> eq_path p11 p21 && eq_exp e11 e21 && eq_exp e12 e22 - | DotP (p11, atom1), DotP (p21, atom2) -> eq_path p11 p21 && eq_atom atom1 atom2 + | DotP (p11, atom1, as1), DotP (p21, atom2, as2) -> + eq_path p11 p21 && eq_atom atom1 atom2 && eq_list eq_arg as1 as2 | _, _ -> p1.it = p2.it and eq_iterexp (iter1, xes1) (iter2, xes2) = @@ -121,8 +125,8 @@ and eq_iterexp (iter1, xes1) (iter2, xes2) = and eq_sym g1 g2 = match g1.it, g2.it with - | VarG (id1, args1), VarG (id2, args2) -> - eq_id id1 id2 && eq_list eq_arg args1 args2 + | VarG (x1, args1), VarG (x2, args2) -> + eq_id x1 x2 && eq_list eq_arg args1 args2 | SeqG gs1, SeqG gs2 | AltG gs1, AltG gs2 -> eq_list eq_sym gs1 gs2 | RangeG (g11, g12), RangeG (g21, g22) -> eq_sym g11 g21 && eq_sym g12 g22 @@ -136,13 +140,13 @@ and eq_sym g1 g2 = and eq_prem prem1 prem2 = match prem1.it, prem2.it with - | RulePr (id1, op1, e1), RulePr (id2, op2, e2) -> - eq_id id1 id2 && eq_mixop op1 op2 && eq_exp e1 e2 + | RulePr (x1, op1, e1), RulePr (x2, op2, e2) -> + eq_id x1 x2 && eq_mixop op1 op2 && eq_exp e1 e2 | IfPr e1, IfPr e2 -> eq_exp e1 e2 | IterPr (prem1, e1), IterPr (prem2, e2) -> eq_prem prem1 prem2 && eq_iterexp e1 e2 - | LetPr (e1, e1', ids1), LetPr (e2, e2', ids2) -> - eq_exp e1 e2 && eq_exp e1' e2' && ids1 = ids2 + | LetPr (e1, e1', xs1), LetPr (e2, e2', xs2) -> + eq_exp e1 e2 && eq_exp e1' e2' && xs1 = xs2 | _, _ -> prem1.it = prem2.it @@ -152,6 +156,6 @@ and eq_arg a1 a2 = match a1.it, a2.it with | ExpA e1, ExpA e2 -> eq_exp e1 e2 | TypA t1, TypA t2 -> eq_typ t1 t2 - | DefA id1, DefA id2 -> eq_id id1 id2 + | DefA x1, DefA x2 -> eq_id x1 x2 | GramA g1, GramA g2 -> eq_sym g1 g2 | _, _ -> false diff --git a/spectec/src/il/eval.ml b/spectec/src/il/eval.ml index 2f374036e..04f332123 100644 --- a/spectec/src/il/eval.ml +++ b/spectec/src/il/eval.ml @@ -112,7 +112,7 @@ and reduce_typ_app' env id args at = function if !assume_coherent_matches then None else Error.error at "validation" ("undefined instance of partial type `" ^ id.it ^ "`") - | Some (ps, {it = InstD (_binds, args', dt); _}::insts') -> + | Some (ps, {it = InstD (_ps, args', dt); _}::insts') -> Debug.(log "il.reduce_typ_app'" (fun _ -> fmt "%s(%s) =: %s(%s)" id.it (il_args args) id.it (il_args args')) (fun r -> fmt "%s" (opt (Fun.const "!") r)) @@ -139,8 +139,8 @@ and is_normal_exp e = | BoolE _ | NumE _ | TextE _ -> true | ListE es | TupE es -> List.for_all is_normal_exp es | OptE None -> true - | OptE (Some e) | CaseE (_, e) | SubE (e, _, _) -> is_normal_exp e - | StrE efs -> List.for_all (fun (_, e) -> is_normal_exp e) efs + | OptE (Some e) | CaseE (_, _, e) | SubE (e, _, _) -> is_normal_exp e + | StrE efs -> List.for_all (fun (_, _, e) -> is_normal_exp e) efs | _ -> false and reduce_exp env e : exp = @@ -224,11 +224,13 @@ and reduce_exp env e : exp = else ExtE (e', p', e2') $> e' ) | StrE efs -> StrE (List.map (reduce_expfield env) efs) $> e - | DotE (e1, atom) -> + | DotE (e1, atom, as_) -> let e1' = reduce_exp env e1 in (match e1'.it with - | StrE efs -> snd (List.find (fun (atomN, _) -> Atom.eq atomN atom) efs) - | _ -> DotE (e1', atom) $> e + | StrE efs -> + let _, _, e = List.find (fun (atomN, _, _) -> Atom.eq atomN atom) efs in + e + | _ -> DotE (e1', atom, List.map (reduce_arg env) as_) $> e ) | CompE (e1, e2) -> (* TODO(4, rossberg): avoid overlap with CatE? *) @@ -239,10 +241,16 @@ and reduce_exp env e : exp = | OptE None, OptE _ -> e2'.it | OptE _, OptE None -> e1'.it | StrE efs1, StrE efs2 -> - let merge (atom1, e1) (atom2, e2) = + let merge (atom1, as1, e1) (atom2, as2, e2) = assert (Atom.eq atom1 atom2); - (atom1, reduce_exp env (CompE (e1, e2) $> e1)) - in StrE (List.map2 merge efs1 efs2) + let s = Option.get (match_list match_arg env Subst.empty as1 as2) in + (atom1, as1, reduce_exp env (CompE (e1, Subst.subst_exp s e2) $> e1)) + in + (try + StrE (List.map2 merge efs1 efs2) + with Irred | Failure _ -> + CompE (e1', e2') + ) | _ -> CompE (e1', e2') ) $> e | MemE (e1, e2) -> @@ -264,13 +272,13 @@ and reduce_exp env e : exp = | _ -> LenE e1' ) $> e | TupE es -> TupE (List.map (reduce_exp env) es) $> e - | CallE (id, args) -> - let args' = List.map (reduce_arg env) args in + | CallE (id, as_) -> + let as' = List.map (reduce_arg env) as_ in let _ps, _t, clauses = Env.find_def env id in (* Allow for uninterpreted functions *) - if not !assume_coherent_matches && clauses = [] then CallE (id, args') $> e else - (match reduce_exp_call env id args' e.at clauses with - | None -> CallE (id, args') $> e + if not !assume_coherent_matches && clauses = [] then CallE (id, as') $> e else + (match reduce_exp_call env id as' e.at clauses with + | None -> CallE (id, as') $> e | Some e -> e ) | IterE (e1, iterexp) -> @@ -324,11 +332,11 @@ and reduce_exp env e : exp = | TupE es -> List.nth es i | _ -> ProjE (e1', i) $> e ) - | UncaseE (e1, mixop) -> + | UncaseE (e1, mixop, as_) -> let e1' = reduce_exp env e1 in (match e1'.it with - | CaseE (_, e11') -> e11' - | _ -> UncaseE (e1', mixop) $> e + | CaseE (_, _, e11') -> e11' + | _ -> UncaseE (e1', mixop, List.map (reduce_arg env) as_) $> e ) | OptE eo -> OptE (Option.map (reduce_exp env) eo) $> e | TheE e1 -> @@ -354,7 +362,8 @@ and reduce_exp env e : exp = | OptE _, OptE None -> e1'.it | _ -> CatE (e1', e2') ) $> e - | CaseE (op, e1) -> CaseE (op, reduce_exp env e1) $> e + | CaseE (op, as_, e1) -> + CaseE (op, List.map (reduce_arg env) as_, reduce_exp env e1) $> e | CvtE (e1, _nt1, nt2) -> let e1' = reduce_exp env e1 in (match e1'.it with @@ -375,19 +384,17 @@ and reduce_exp env e : exp = reduce_exp env (SubE (e11', t11', t2') $> e) | TupE es' -> (match t1.it, t2.it with - | TupT ets1, TupT ets2 -> + | TupT xts1, TupT xts2 -> (match - List.fold_left2 (fun opt eI ((e1I, t1I), (e2I, t2I)) -> + List.fold_left2 (fun opt eI ((x1I, t1I), (x2I, t2I)) -> let* (s1, s2, res') = opt in let t1I' = Subst.subst_typ s1 t1I in let t2I' = Subst.subst_typ s2 t2I in - let e1I' = reduce_exp env (Subst.subst_exp s1 e1I) in - let e2I' = reduce_exp env (Subst.subst_exp s2 e2I) in - let* s1' = try match_exp env s1 eI e1I' with Irred -> None in - let* s2' = try match_exp env s2 eI e2I' with Irred -> None in + let s1' = Subst.add_varid s1 x1I eI in + let s2' = Subst.add_varid s2 x2I eI in let eI' = reduce_exp env (SubE (eI, t1I', t2I') $$ eI.at % t2I') in Some (s1', s2', eI'::res') - ) (Some (Subst.empty, Subst.empty, [])) es' (List.combine ets1 ets2) + ) (Some (Subst.empty, Subst.empty, [])) es' (List.combine xts1 xts2) with | Some (_, _, res') -> TupE (List.rev res') $> e | None -> SubE (e1', t1', t2') $> e @@ -406,7 +413,8 @@ and reduce_iter env = function and reduce_iterexp env (iter, xes) = (reduce_iter env iter, List.map (fun (id, e) -> id, reduce_exp env e) xes) -and reduce_expfield env (atom, e) : expfield = (atom, reduce_exp env e) +and reduce_expfield env (atom, as_, e) : expfield = + (atom, List.map (reduce_arg env) as_, reduce_exp env e) and reduce_path env e p f = match p.it with @@ -435,14 +443,17 @@ and reduce_path env e p f = f e' (SliceP (p1', e1', e2') $> p) in reduce_path env e p1 f' - | DotP (p1, atom) -> + | DotP (p1, atom, as_) -> let f' e' p1' = match e'.it with | StrE efs -> - StrE (List.map (fun (atomI, eI) -> - if Eq.eq_atom atomI atom then (atomI, f eI p1') else (atomI, eI)) efs) $> e' + StrE (List.map (fun (atomI, asI, eI) -> + if Eq.eq_atom atomI atom + then (atomI, asI, f eI p1') + else (atomI, asI, eI) + ) efs) $> e' | _ -> - f e' (DotP (p1', atom) $> p) + f e' (DotP (p1', atom, as_) $> p) in reduce_path env e p1 f' @@ -462,7 +473,7 @@ and reduce_exp_call env id args at = function if !assume_coherent_matches then None else Error.error at "validation" ("undefined call to partial function `$" ^ id.it ^ "`") - | {it = DefD (_binds, args', e, prems); _}::clauses' -> + | {it = DefD (_ps, args', e, prems); _}::clauses' -> Debug.(log "il.reduce_exp_call" (fun _ -> fmt "$%s(%s) =: $%s(%s)" id.it (il_args args) id.it (il_args args')) (function None -> "-" | Some e' -> fmt "%s" (il_exp e')) @@ -555,8 +566,8 @@ and match_typ env s t1 t2 : subst option = let* s' = match_typ env s t11 t21 in match_iter env s' iter1 iter2 | _, _ -> None -and match_typbind env s (e1, t1) (e2, t2) = - let* s' = match_exp env s e1 (Subst.subst_exp s e2) in +and match_typbind env s (x1, t1) (x2, t2) = + let s' = Subst.add_varid s x2 (VarE x1 $$ x1.at % t1) in let* s'' = match_typ env s' t1 (Subst.subst_typ s t2) in Some s'' @@ -635,14 +646,15 @@ and match_exp' env s e1 e2 : subst option = match_exp' env s e11 e21 | LenE e11, LenE e21 -> match_exp' env s e11 e21 *) - | CaseE (op1, e11), CaseE (op2, e21) when Eq.eq_mixop op1 op2 -> - match_exp' env s e11 e21 + | CaseE (op1, as1, e11), CaseE (op2, as2, e21) when Eq.eq_mixop op1 op2 -> + let* s' = match_list match_arg env s as1 as2 in + match_exp' env s' e11 e21 (* | CallE (id1, args1), CallE (id2, args2) when id1.it = id2.it -> match_list match_arg env s args1 args2 *) - | _, UncaseE (e21, mixop) -> - match_exp' env s (CaseE (mixop, e1) $$ e1.at % e21.note) e21 + | _, UncaseE (e21, mixop, as_) -> + match_exp' env s (CaseE (mixop, as_, e1) $$ e1.at % e21.note) e21 | _, ProjE (e21, 0) -> (* only valid on unary tuples! *) match_exp' env s (TupE [e1] $$ e1.at % e21.note) e21 (* @@ -718,7 +730,7 @@ and match_exp' env s e1 e2 : subst option = | BoolE _, BoolT | NumE _, NumT _ | TextE _, TextT -> true - | CaseE (op, _), VarT _ -> + | CaseE (op, _, _), VarT _ -> (match (reduce_typdef env t21).it with | VariantT tcs -> (* Assumes that we only have shallow subtyping. *) @@ -736,27 +748,28 @@ and match_exp' env s e1 e2 : subst option = | _, _ -> raise Irred -and match_expfield env s (atom1, e1) (atom2, e2) = +and match_expfield env s (atom1, as1, e1) (atom2, as2, e2) = if not (Eq.eq_atom atom1 atom2) then None else - match_exp' env s e1 e2 + let* s' = match_list match_arg env s as1 as2 in + match_exp' env s' e1 (Subst.subst_exp s e2) and match_iterexp env s (iter1, _ids1) (iter2, _ids2) = match_iter env s iter1 iter2 and eta_tup_exp env e : exp list option = - let ets = + let xts = match (reduce_typ env e.note).it with - | TupT ets -> ets + | TupT xts -> xts | _ -> assert false in let* es' = - List.fold_left (fun opt (eI, tI) -> + List.fold_left (fun opt (xI, tI) -> let* res', i, s = opt in let eI' = ProjE (e, i) $$ e.at % Subst.subst_typ s tI in - let* s' = try match_exp env s eI' eI with Irred -> None in + let s' = Subst.add_varid s xI eI' in Some (eI'::res', i + 1, s') - ) (Some ([], 0, Subst.empty)) ets |> Option.map fst3 |> Option.map List.rev + ) (Some ([], 0, Subst.empty)) xts |> Option.map fst3 |> Option.map List.rev in Some es' and eta_iter_exp env e : exp * iterexp = @@ -824,16 +837,12 @@ and equiv_typ env t1 t2 = | _, _ -> t1.it = t2.it -and equiv_tup env s ets1 ets2 = - match ets1, ets2 with - | (e1, t1)::ets1', (e2, t2)::ets2' -> +and equiv_tup env s xts1 xts2 = + match xts1, xts2 with + | (x1, t1)::xts1', (x2, t2)::xts2' -> equiv_typ env t1 (Subst.subst_typ s t2) && - (match match_exp env s e1 e2 with - | None -> false - | Some s' -> equiv_tup env s' ets1' ets2' - | exception Irred -> false - ) - | _, _ -> ets1 = ets2 + equiv_tup env (Subst.add_varid s x2 (VarE x1 $$ x1.at % t1)) xts1' xts2' + | _, _ -> xts1 = xts2 and equiv_iter env iter1 iter2 = match iter1, iter2 with @@ -896,8 +905,8 @@ and equiv_params env ps1 ps2 = | DefP (id1, ps1, t1), DefP (id2, ps2, t2) -> if not (equiv_functyp env (ps1, t1) (ps2, t2)) then None else Some (Subst.add_defid s id2 id1) - | GramP (id1, t1), GramP (id2, t2) -> - if not (equiv_typ env t1 t2) then None else + | GramP (id1, ps1, t1), GramP (id2, ps2, t2) -> + if not (equiv_functyp env (ps1, t1) (ps2, t2)) then None else Some (Subst.add_gramid s id2 (VarG (id1, []) $ p1.at)) | _, _ -> assert false ) (Some Subst.empty) ps1 ps2 @@ -921,16 +930,16 @@ and sub_typ env t1 t2 = | VarT _, VarT _ -> (match (reduce_typdef env t1').it, (reduce_typdef env t2').it with | StructT tfs1, StructT tfs2 -> - List.for_all (fun (atom, (_binds2, t2, prems2), _) -> + List.for_all (fun (atom, (_ps2, t2, prems2), _) -> match find_field tfs1 atom with - | Some (_binds1, t1, prems1) -> + | Some (_ps1, t1, prems1) -> sub_typ env t1 t2 && sub_prems env prems1 prems2 | None -> false ) tfs2 | VariantT tcs1, VariantT tcs2 -> - List.for_all (fun (mixop, (_binds1, t1, prems1), _) -> + List.for_all (fun (mixop, (_ps1, t1, prems1), _) -> match find_case tcs2 mixop with - | Some (_binds2, t2, prems2) -> + | Some (_ps2, t2, prems2) -> sub_typ env t1 t2 && sub_prems env prems1 prems2 | None -> false ) tcs1 @@ -939,16 +948,12 @@ and sub_typ env t1 t2 = | _, _ -> false -and sub_tup env s ets1 ets2 = - match ets1, ets2 with - | (e1, t1)::ets1', (e2, t2)::ets2' -> +and sub_tup env s xts1 xts2 = + match xts1, xts2 with + | (x1, t1)::xts1', (x2, t2)::xts2' -> sub_typ env t1 (Subst.subst_typ s t2) && - (match match_exp env s e1 e2 with - | None -> false - | Some s' -> sub_tup env s' ets1' ets2' - | exception Irred -> false - ) - | _, _ -> ets1 = ets2 + sub_tup env (Subst.add_varid s x2 (VarE x1 $$ x1.at % t1)) xts1' xts2' + | _, _ -> xts1 = xts2 and find_field tfs atom = @@ -969,16 +974,16 @@ and disj_typ env t1 t2 = (match (reduce_typdef env t1).it, (reduce_typdef env t2).it with | StructT tfs1, StructT tfs2 -> unordered (atoms tfs1) (atoms tfs2) || - List.exists (fun (atom, (_binds2, t2, _prems2), _) -> + List.exists (fun (atom, (_ps2, t2, _prems2), _) -> match find_field tfs1 atom with - | Some (_binds1, t1, _prems1) -> disj_typ env t1 t2 + | Some (_ps1, t1, _prems1) -> disj_typ env t1 t2 | None -> true ) tfs2 | VariantT tcs1, VariantT tcs2 -> Set.disjoint (mixops tcs1) (mixops tcs2) || - List.exists (fun (atom, (_binds1, t1, _prems1), _) -> + List.exists (fun (atom, (_ps1, t1, _prems1), _) -> match find_case tcs2 atom with - | Some (_binds2, t2, _prems2) -> disj_typ env t1 t2 + | Some (_ps2, t2, _prems2) -> disj_typ env t1 t2 | None -> false ) tcs1 | _, _ -> true @@ -998,13 +1003,9 @@ and disj_typ env t1 t2 = and atoms xs = Set.of_list (List.map Print.string_of_atom (List.map fst3 xs)) and mixops xs = Set.of_list (List.map Print.string_of_mixop (List.map fst3 xs)) -and disj_tup env s ets1 ets2 = - match ets1, ets2 with - | (e1, t1)::ets1', (e2, t2)::ets2' -> +and disj_tup env s xts1 xts2 = + match xts1, xts2 with + | (x1, t1)::xts1', (x2, t2)::xts2' -> disj_typ env t1 (Subst.subst_typ s t2) || - (match match_exp env s e1 e2 with - | None -> false - | Some s' -> disj_tup env s' ets1' ets2' - | exception Irred -> false - ) - | _, _ -> ets1 = ets2 + disj_tup env (Subst.add_varid s x2 (VarE x1 $$ x1.at % t1)) xts1' xts2' + | _, _ -> xts1 = xts2 diff --git a/spectec/src/il/free.ml b/spectec/src/il/free.ml index bce500e9c..8627bf6aa 100644 --- a/spectec/src/il/free.ml +++ b/spectec/src/il/free.ml @@ -62,17 +62,17 @@ let rec free_list_dep free_x bound_x = function (* Identifiers *) -let free_typid id = {empty with typid = Set.singleton id.it} -let free_relid id = {empty with relid = Set.singleton id.it} -let free_varid id = {empty with varid = Set.singleton id.it} -let free_defid id = {empty with defid = Set.singleton id.it} -let free_gramid id = {empty with gramid = Set.singleton id.it} +let free_typid x = {empty with typid = Set.singleton x.it} +let free_relid x = {empty with relid = Set.singleton x.it} +let free_varid x = {empty with varid = Set.singleton x.it} +let free_defid x = {empty with defid = Set.singleton x.it} +let free_gramid x = {empty with gramid = Set.singleton x.it} -let bound_typid id = if id.it = "_" then empty else free_typid id -let bound_relid id = if id.it = "_" then empty else free_relid id -let bound_varid id = if id.it = "_" then empty else free_varid id -let bound_defid id = if id.it = "_" then empty else free_defid id -let bound_gramid id = if id.it = "_" then empty else free_gramid id +let bound_typid x = if x.it = "_" then empty else free_typid x +let bound_relid x = if x.it = "_" then empty else free_relid x +let bound_varid x = if x.it = "_" then empty else free_varid x +let bound_defid x = if x.it = "_" then empty else free_defid x +let bound_gramid x = if x.it = "_" then empty else free_gramid x (* Iterations *) @@ -85,14 +85,14 @@ let rec free_iter iter = and bound_iter iter = match iter with | Opt | List | List1 -> empty - | ListN (_, id_opt) -> free_opt bound_varid id_opt + | ListN (_, xo) -> free_opt bound_varid xo (* Types *) and free_typ t = match t.it with - | VarT (id, as_) -> free_typid id + free_args as_ + | VarT (x, as_) -> free_typid x + free_args as_ | BoolT | NumT _ | TextT -> empty | TupT ets -> free_typbinds ets | IterT (t1, iter) -> free_typ t1 + free_iter iter @@ -103,8 +103,8 @@ and bound_typ t = | TupT ets -> bound_list bound_typbind ets | IterT (t1, _iter) -> bound_typ t1 -and free_typbind (_e, t) = free_typ t -and bound_typbind (e, _t) = free_exp e +and free_typbind (_x, t) = free_typ t +and bound_typbind (x, _t) = free_varid x and free_typbinds xts = free_list_dep free_typbind bound_typbind xts and free_deftyp dt = @@ -113,19 +113,19 @@ and free_deftyp dt = | StructT tfs -> free_list free_typfield tfs | VariantT tcs -> free_list free_typcase tcs -and free_typfield (_, (bs, t, prems), _) = - free_binds bs + (free_typ t + (free_prems prems - bound_typ t) - bound_binds bs) -and free_typcase (_, (bs, t, prems), _) = - free_binds bs + (free_typ t + (free_prems prems - bound_typ t) - bound_binds bs) +and free_typfield (_, (ps, t, prems), _) = + free_params ps + (free_typ t + (free_prems prems - bound_typ t) - bound_params ps) +and free_typcase (_, (ps, t, prems), _) = + free_params ps + (free_typ t + (free_prems prems - bound_typ t) - bound_params ps) (* Expressions *) and free_exp e = match e.it with - | VarE id -> free_varid id + | VarE x -> free_varid x | BoolE _ | NumE _ | TextE _ -> empty - | UnE (_, _, e1) | LiftE e1 | LenE e1 | ProjE (e1, _) | TheE e1 | DotE (e1, _) -> free_exp e1 + | UnE (_, _, e1) | LiftE e1 | LenE e1 | ProjE (e1, _) | TheE e1 -> free_exp e1 | BinE (_, _, e1, e2) | CmpE (_, _, e1, e2) | IdxE (e1, e2) | CompE (e1, e2) | MemE (e1, e2) | CatE (e1, e2) -> free_exp e1 + free_exp e2 | SliceE (e1, e2, e3) -> free_list free_exp [e1; e2; e3] @@ -133,20 +133,21 @@ and free_exp e = | TupE es | ListE es -> free_list free_exp es | UpdE (e1, p, e2) | ExtE (e1, p, e2) -> free_exp e1 + free_path p + free_exp e2 | StrE efs -> free_list free_expfield efs - | CaseE (_, e1) | UncaseE (e1, _) -> free_exp e1 - | CallE (id, as1) -> free_defid id + free_args as1 + | DotE (e1, _, as_) -> free_exp e1 + free_args as_ + | CaseE (_, as_, e1) | UncaseE (e1, _, as_) -> free_args as_ + free_exp e1 + | CallE (x, as1) -> free_defid x + free_args as1 | IterE (e1, iter) -> (free_exp e1 - bound_iterexp iter) + free_iterexp iter | CvtE (e1, _nt1, _nt2) -> free_exp e1 | SubE (e1, t1, t2) -> free_exp e1 + free_typ t1 + free_typ t2 -and free_expfield (_, e) = free_exp e +and free_expfield (_, as_, e) = free_args as_ + free_exp e and free_path p = match p.it with | RootP -> empty | IdxP (p1, e) -> free_path p1 + free_exp e | SliceP (p1, e1, e2) -> free_path p1 + free_exp e1 + free_exp e2 - | DotP (p1, _atom) -> free_path p1 + | DotP (p1, _atom, as_) -> free_path p1 + free_args as_ and free_iterexp (iter, xes) = free_iter iter + free_list (free_pair free_varid free_exp) xes @@ -159,7 +160,7 @@ and bound_iterexp (iter, xes) = and free_sym g = match g.it with - | VarG (id, as_) -> free_gramid id + free_args as_ + | VarG (x, as_) -> free_gramid x + free_args as_ | NumG _ | TextG _ | EpsG -> empty | SeqG gs | AltG gs -> free_list free_sym gs | RangeG (g1, g2) -> free_sym g1 + free_sym g2 @@ -171,7 +172,7 @@ and free_sym g = and free_prem prem = match prem.it with - | RulePr (id, _op, e) -> free_relid id + free_exp e + | RulePr (x, _op, e) -> free_relid x + free_exp e | IfPr e -> free_exp e | LetPr (e1, e2, _) -> free_exp e1 + free_exp e2 | ElsePr -> empty @@ -186,88 +187,71 @@ and free_arg a = match a.it with | ExpA e -> free_exp e | TypA t -> free_typ t - | DefA id -> free_defid id + | DefA x -> free_defid x | GramA g -> free_sym g -and free_bind b = - match b.it with - | ExpB (_, t) -> free_typ t - | TypB _ -> empty - | DefB (_, ps, t) -> free_params ps + (free_typ t - bound_params ps) - | GramB (_, ps, t) -> free_params ps + (free_typ t - bound_params ps) - and free_param p = match p.it with | ExpP (_, t) -> free_typ t | TypP _ -> empty | DefP (_, ps, t) -> free_params ps + (free_typ t - bound_params ps) - | GramP (_, t) -> free_typ t - -and bound_bind b = - match b.it with - | ExpB (id, _) -> bound_varid id - | TypB id -> bound_typid id - | DefB (id, _, _) -> bound_defid id - | GramB (id, _, _) -> bound_gramid id + | GramP (_, ps, t) -> free_params ps + (free_typ t - bound_params ps) and bound_param p = match p.it with - | ExpP (id, _) -> bound_varid id - | TypP id -> bound_typid id - | DefP (id, _, _) -> bound_defid id - | GramP (id, _) -> bound_gramid id + | ExpP (x, _) -> bound_varid x + | TypP x -> bound_typid x + | DefP (x, _, _) -> bound_defid x + | GramP (x, _, _) -> bound_gramid x and free_args as_ = free_list free_arg as_ -and free_binds bs = free_list_dep free_bind bound_bind bs and free_params ps = free_list_dep free_param bound_param ps - -and bound_binds bs = free_list bound_bind bs and bound_params ps = free_list bound_param ps let free_inst inst = match inst.it with - | InstD (bs, as_, dt) -> - free_binds bs + (free_args as_ + free_deftyp dt - bound_binds bs) + | InstD (ps, as_, dt) -> + free_params ps + (free_args as_ + free_deftyp dt - bound_params ps) let free_rule rule = match rule.it with - | RuleD (_id, bs, _op, e, prems) -> - free_binds bs + (free_exp e + free_prems prems - bound_binds bs) + | RuleD (_x, ps, _op, e, prems) -> + free_params ps + (free_exp e + free_prems prems - bound_params ps) let free_clause clause = match clause.it with - | DefD (bs, as_, e, prems) -> - free_binds bs + (free_args as_ + free_exp e + free_prems prems - bound_binds bs) + | DefD (ps, as_, e, prems) -> + free_params ps + (free_args as_ + free_exp e + free_prems prems - bound_params ps) let free_prod prod = match prod.it with - | ProdD (bs, g, e, prems) -> - free_binds bs + (free_sym g + free_exp e + free_prems prems - bound_binds bs) + | ProdD (ps, g, e, prems) -> + free_params ps + (free_sym g + free_exp e + free_prems prems - bound_params ps) let free_hintdef hd = match hd.it with - | TypH (id, _) -> free_typid id - | RelH (id, _) -> free_relid id - | DecH (id, _) -> free_defid id - | GramH (id, _) -> free_gramid id + | TypH (x, _) -> free_typid x + | RelH (x, _) -> free_relid x + | DecH (x, _) -> free_defid x + | GramH (x, _) -> free_gramid x let rec free_def d = match d.it with - | TypD (_id, ps, insts) -> free_params ps + free_list free_inst insts - | RelD (_id, _mixop, t, rules) -> free_typ t + free_list free_rule rules - | DecD (_id, ps, t, clauses) -> + | TypD (_x, ps, insts) -> free_params ps + free_list free_inst insts + | RelD (_x, _mixop, t, rules) -> free_typ t + free_list free_rule rules + | DecD (_x, ps, t, clauses) -> free_params ps + (free_typ t - bound_params ps) + free_list free_clause clauses - | GramD (_id, ps, t, prods) -> + | GramD (_x, ps, t, prods) -> free_params ps + (free_typ t + free_list free_prod prods - bound_params ps) | RecD ds -> free_list free_def ds | HintD hd -> free_hintdef hd let rec bound_def d = match d.it with - | TypD (id, _, _) -> bound_typid id - | RelD (id, _, _, _) -> bound_relid id - | DecD (id, _, _, _) -> bound_defid id - | GramD (id, _, _, _) -> bound_gramid id + | TypD (x, _, _) -> bound_typid x + | RelD (x, _, _, _) -> bound_relid x + | DecD (x, _, _, _) -> bound_defid x + | GramD (x, _, _, _) -> bound_gramid x | RecD ds -> free_list bound_def ds | HintD _ -> empty diff --git a/spectec/src/il/free.mli b/spectec/src/il/free.mli index ba5d3aaac..71e9c1eae 100644 --- a/spectec/src/il/free.mli +++ b/spectec/src/il/free.mli @@ -29,7 +29,6 @@ val free_prod : prod -> sets val free_deftyp : deftyp -> sets val free_param : param -> sets -val bound_typbind : exp * typ -> sets -val bound_bind : bind -> sets +val bound_typbind : id * typ -> sets val bound_param : param -> sets val bound_def : def -> sets diff --git a/spectec/src/il/fresh.ml b/spectec/src/il/fresh.ml new file mode 100644 index 000000000..918b6bad0 --- /dev/null +++ b/spectec/src/il/fresh.ml @@ -0,0 +1,30 @@ +open Util.Source + +module Map = Map.Make(String) + +let typids = ref Map.empty +let varids = ref Map.empty +let defids = ref Map.empty +let gramids = ref Map.empty + +let fresh_id map s = + if s = "_" then s else + let i = + match Map.find_opt s !map with + | None -> 1 + | Some i -> i + 1 + in + map := Map.add s i !map; + s ^ "#" ^ string_of_int i + +let refresh_id map x = fresh_id map x.it $ x.at + +let fresh_typid = fresh_id typids +let fresh_varid = fresh_id varids +let fresh_defid = fresh_id defids +let fresh_gramid = fresh_id gramids + +let refresh_typid = refresh_id typids +let refresh_varid = refresh_id varids +let refresh_defid = refresh_id defids +let refresh_gramid = refresh_id gramids diff --git a/spectec/src/il/fresh.mli b/spectec/src/il/fresh.mli new file mode 100644 index 000000000..dfa1edffa --- /dev/null +++ b/spectec/src/il/fresh.mli @@ -0,0 +1,11 @@ +open Ast + +val fresh_typid : string -> string +val fresh_varid : string -> string +val fresh_defid : string -> string +val fresh_gramid : string -> string + +val refresh_typid : id -> id +val refresh_varid : id -> id +val refresh_defid : id -> id +val refresh_gramid : id -> id diff --git a/spectec/src/il/iter.ml b/spectec/src/il/iter.ml index 7db263fbc..12e79e688 100644 --- a/spectec/src/il/iter.ml +++ b/spectec/src/il/iter.ml @@ -100,7 +100,7 @@ and typ t = | VarT (x, as_) -> typid x; args as_ | BoolT | TextT -> () | NumT nt -> numtyp nt - | TupT ets -> list (pair exp typ) ets + | TupT ets -> list (pair varid typ) ets | IterT (t1, it) -> typ t1; iter it and deftyp t = @@ -110,8 +110,8 @@ and deftyp t = | StructT tfs -> list typfield tfs | VariantT tcs -> list typcase tcs -and typfield (at, (bs, t, prs), hs) = atom at; binds bs; typ t; prems prs; hints hs -and typcase (op, (bs, t, prs), hs) = mixop op; binds bs; typ t; prems prs; hints hs +and typfield (at, (ps, t, prs), hs) = atom at; params ps; typ t; prems prs; hints hs +and typcase (op, (ps, t, prs), hs) = mixop op; params ps; typ t; prems prs; hints hs (* Expressions *) @@ -128,11 +128,11 @@ and exp e = | CmpE (op, ot, e1, e2) -> cmpop op; optyp ot; exp e1; exp e2 | TupE es | ListE es -> list exp es | ProjE (e1, _) | TheE e1 | LiftE e1 | LenE e1 -> exp e1 - | CaseE (op, e1) -> mixop op; exp e1 - | UncaseE (e1, op) -> exp e1; mixop op + | CaseE (op, as_, e1) -> mixop op; args as_; exp e1 + | UncaseE (e1, op, as_) -> exp e1; mixop op; args as_ | OptE eo -> opt exp eo | StrE efs -> list expfield efs - | DotE (e1, at) -> exp e1; atom at + | DotE (e1, at, as_) -> exp e1; atom at; args as_ | CompE (e1, e2) | MemE (e1, e2) | CatE (e1, e2) | IdxE (e1, e2) -> exp e1; exp e2 | SliceE (e1, e2, e3) -> exp e1; exp e2; exp e3 | UpdE (e1, p, e2) | ExtE (e1, p, e2) -> exp e1; path p; exp e2 @@ -141,7 +141,7 @@ and exp e = | CvtE (e1, nt1, nt2) -> exp e1; numtyp nt1; numtyp nt2 | SubE (e1, t1, t2) -> exp e1; typ t1; typ t2 -and expfield (at, e) = atom at; exp e +and expfield (at, as_, e) = atom at; args as_; exp e and path p = visit_path p; @@ -149,7 +149,7 @@ and path p = | RootP -> () | IdxP (p1, e) -> path p1; exp e | SliceP (p1, e1, e2) -> path p1; exp e1; exp e2 - | DotP (p1, at) -> path p1; atom at + | DotP (p1, at, as_) -> path p1; atom at; args as_ and iterexp (it, xes) = iter it; list (pair varid exp) xes @@ -192,22 +192,14 @@ and arg a = | DefA x -> defid x | GramA g -> sym g -and bind b = - match b.it with - | ExpB (id, t) -> varid id; typ t - | TypB id -> typid id - | DefB (id, ps, t) -> defid id; params ps; typ t - | GramB (id, ps, t) -> gramid id; params ps; typ t - and param p = match p.it with | ExpP (x, t) -> varid x; typ t | TypP x -> typid x | DefP (x, ps, t) -> defid x; params ps; typ t - | GramP (x, t) -> gramid x; typ t + | GramP (x, ps, t) -> gramid x; params ps; typ t and args as_ = list arg as_ -and binds bs = list bind bs and params ps = list param ps let hintdef d = @@ -219,19 +211,19 @@ let hintdef d = let inst i = match i.it with - | InstD (bs, as_, dt) -> binds bs; args as_; deftyp dt + | InstD (ps, as_, dt) -> params ps; args as_; deftyp dt let rule r = match r.it with - | RuleD (x, bs, op, e, prs) -> ruleid x; binds bs; mixop op; exp e; prems prs + | RuleD (x, ps, op, e, prs) -> ruleid x; params ps; mixop op; exp e; prems prs let clause c = match c.it with - | DefD (bs, as_, e, prs) -> binds bs; args as_; exp e; prems prs + | DefD (ps, as_, e, prs) -> params ps; args as_; exp e; prems prs let prod p = match p.it with - | ProdD (bs, g, e, prs) -> binds bs; sym g; exp e; prems prs + | ProdD (ps, g, e, prs) -> params ps; sym g; exp e; prems prs let rec def d = visit_def d; diff --git a/spectec/src/il/print.ml b/spectec/src/il/print.ml index 3fb92c4a6..41833f98a 100644 --- a/spectec/src/il/print.ml +++ b/spectec/src/il/print.ml @@ -20,10 +20,10 @@ let is_alphanum = function | '_' | '.' | '\'' -> true | _ -> false -let string_of_id id = - if String.for_all is_alphanum id.it - then id.it - else "`" ^ id.it ^ "`" +let string_of_id x = + if String.for_all is_alphanum x.it + then x.it + else "`" ^ x.it ^ "`" (* Operators *) @@ -52,23 +52,22 @@ let rec string_of_iter iter = | List -> "*" | List1 -> "+" | ListN (e, None) -> "^" ^ string_of_exp e - | ListN (e, Some id) -> - "^(" ^ string_of_id id ^ "<" ^ string_of_exp e ^ ")" + | ListN (e, Some x) -> "^(" ^ string_of_id x ^ "<" ^ string_of_exp e ^ ")" and string_of_numtyp = Num.string_of_typ and string_of_typ t = match t.it with - | VarT (id, as1) -> string_of_id id ^ string_of_args as1 + | VarT (x, as1) -> string_of_id x ^ string_of_args as1 | BoolT -> "bool" | NumT t -> string_of_numtyp t | TextT -> "text" - | TupT ets -> "(" ^ concat ", " (List.map string_of_typbind ets) ^ ")" + | TupT xts -> "(" ^ concat ", " (List.map string_of_typbind xts) ^ ")" | IterT (t1, iter) -> string_of_typ t1 ^ string_of_iter iter and string_of_typ_name t = match t.it with - | VarT (id, _) -> string_of_id id + | VarT (x, _) -> string_of_id x | _ -> assert false and string_of_typ_args t = @@ -77,10 +76,10 @@ and string_of_typ_args t = | TupT _ -> string_of_typ t | _ -> "(" ^ string_of_typ t ^ ")" -and string_of_typbind (e, t) = - match e.it with - | VarE {it = "_"; _} -> string_of_typ t - | _ -> string_of_exp e ^ " : " ^ string_of_typ t +and string_of_typbind (x, t) = + match x.it with + | "_" -> string_of_typ t + | _ -> string_of_id x ^ " : " ^ string_of_typ t and string_of_deftyp layout dt = match dt.it with @@ -94,22 +93,20 @@ and string_of_deftyp layout dt = | VariantT tcs -> "\n | " ^ concat "\n | " (List.map string_of_typcase tcs) -and string_of_typfield (atom, (bs, t, prems), _hints) = - string_of_mixop [[atom]] ^ string_of_binds bs ^ " " ^ string_of_typ t ^ +and string_of_typfield (atom, (qs, t, prems), _hints) = + string_of_mixop [[atom]] ^ string_of_quants qs ^ " " ^ string_of_typ t ^ concat "" (List.map (prefix "\n -- " string_of_prem) prems) -and string_of_typcase (op, (bs, t, prems), _hints) = - string_of_mixop op ^ string_of_binds bs ^ string_of_typ_args t ^ +and string_of_typcase (op, (qs, t, prems), _hints) = + string_of_mixop op ^ string_of_quants qs ^ string_of_typ_args t ^ concat "" (List.map (prefix "\n -- " string_of_prem) prems) (* Expressions *) and string_of_exp e = -"{" ^ string_of_exp' e ^ " :: " ^ string_of_typ e.note ^ "}" -and string_of_exp' e = match e.it with - | VarE id -> string_of_id id + | VarE x -> string_of_id x | BoolE b -> string_of_bool b | NumE n -> Num.to_string n | TextE t -> "\"" ^ String.escaped t ^ "\"" @@ -129,24 +126,30 @@ and string_of_exp' e = string_of_exp e1 ^ "[" ^ string_of_path p ^ " =++ " ^ string_of_exp e2 ^ "]" | StrE efs -> "{" ^ concat ", " (List.map string_of_expfield efs) ^ "}" - | DotE (e1, atom) -> - string_of_exp e1 ^ "." ^ string_of_mixop [[atom]] ^ "_" ^ string_of_typ_name e1.note + | DotE (e1, atom, as_) -> + string_of_exp e1 ^ "." ^ + string_of_mixop [[atom]] ^ "_" ^ string_of_typ_name e1.note ^ + string_of_quantargs as_ | CompE (e1, e2) -> string_of_exp e1 ^ " +++ " ^ string_of_exp e2 | MemE (e1, e2) -> "(" ^ string_of_exp e1 ^ " <- " ^ string_of_exp e2 ^ ")" | LenE e1 -> "|" ^ string_of_exp e1 ^ "|" - | TupE es -> "(" ^ string_of_exps ", " es ^ ")_" ^ string_of_typ e.note - | CallE (id, as1) -> "$" ^ string_of_id id ^ string_of_args as1 + | TupE es -> "(" ^ string_of_exps ", " es ^ ")" + | CallE (x, as1) -> "$" ^ string_of_id x ^ string_of_args as1 | IterE (e1, iter) -> string_of_exp e1 ^ string_of_iterexp iter | ProjE (e1, i) -> string_of_exp e1 ^ "." ^ string_of_int i - | UncaseE (e1, op) -> - string_of_exp e1 ^ "!" ^ string_of_mixop op ^ "_" ^ string_of_typ_name e1.note + | UncaseE (e1, op, as_) -> + string_of_exp e1 ^ "!" ^ + string_of_mixop op ^ "_" ^ string_of_typ_name e1.note ^ + string_of_quantargs as_ | OptE eo -> "?(" ^ string_of_exps "" (Option.to_list eo) ^ ")" | TheE e1 -> "!(" ^ string_of_exp e1 ^ ")" | ListE es -> "[" ^ string_of_exps " " es ^ "]" | LiftE e1 -> "lift(" ^ string_of_exp e1 ^ ")" | CatE (e1, e2) -> string_of_exp e1 ^ " ++ " ^ string_of_exp e2 - | CaseE (op, e1) -> - string_of_mixop op ^ "_" ^ string_of_typ_name e.note ^ string_of_exp_args e1 + | CaseE (op, as_, e1) -> + string_of_mixop op ^ "_" ^ string_of_typ_name e.note ^ + string_of_quantargs as_ ^ + string_of_exp_args e1 | CvtE (e1, nt1, nt2) -> "(" ^ string_of_exp e1 ^ " : " ^ string_of_numtyp nt1 ^ " <:> " ^ string_of_numtyp nt2 ^ ")" | SubE (e1, t1, t2) -> @@ -161,8 +164,10 @@ and string_of_exp_args e = and string_of_exps sep es = concat sep (List.map string_of_exp es) -and string_of_expfield (atom, e) = - string_of_mixop [[atom]] ^ " " ^ string_of_exp e +and string_of_expfield (atom, as_, e) = + string_of_mixop [[atom]] ^ + string_of_quantargs as_ ^ + " " ^ string_of_exp e and string_of_path p = match p.it with @@ -171,21 +176,24 @@ and string_of_path p = string_of_path p1 ^ "[" ^ string_of_exp e ^ "]" | SliceP (p1, e1, e2) -> string_of_path p1 ^ "[" ^ string_of_exp e1 ^ " : " ^ string_of_exp e2 ^ "]" - | DotP ({it = RootP; note; _}, atom) -> - string_of_mixop [[atom]] ^ "_" ^ string_of_typ_name note - | DotP (p1, atom) -> - string_of_path p1 ^ "." ^ string_of_mixop [[atom]] ^ "_" ^ string_of_typ_name p1.note + | DotP ({it = RootP; note; _}, atom, as_) -> + string_of_mixop [[atom]] ^ "_" ^ string_of_typ_name note ^ + string_of_quantargs as_ + | DotP (p1, atom, as_) -> + string_of_path p1 ^ "." ^ + string_of_mixop [[atom]] ^ "_" ^ string_of_typ_name p1.note ^ + string_of_quantargs as_ and string_of_iterexp (iter, xes) = string_of_iter iter ^ "{" ^ String.concat ", " - (List.map (fun (id, e) -> string_of_id id ^ " <- " ^ string_of_exp e) xes) ^ "}" + (List.map (fun (x, e) -> string_of_id x ^ " <- " ^ string_of_exp e) xes) ^ "}" (* Grammars *) and string_of_sym g = match g.it with - | VarG (id, args) -> string_of_id id ^ string_of_args args + | VarG (x, args) -> string_of_id x ^ string_of_args args | NumG n -> Printf.sprintf "0x%02X" n | TextG t -> "\"" ^ String.escaped t ^ "\"" | EpsG -> "eps" @@ -200,13 +208,13 @@ and string_of_sym g = and string_of_prem prem = match prem.it with - | RulePr (id, mixop, e) -> - string_of_id id ^ ": " ^ string_of_mixop mixop ^ string_of_exp_args e + | RulePr (x, mixop, e) -> + string_of_id x ^ ": " ^ string_of_mixop mixop ^ string_of_exp_args e | IfPr e -> "if " ^ string_of_exp e - | LetPr (e1, e2, ids) -> - let ids' = List.map (fun x -> x $ no_region) ids in + | LetPr (e1, e2, xs) -> + let xs' = List.map (fun x -> x $ no_region) xs in "where " ^ string_of_exp e1 ^ " = " ^ string_of_exp e2 ^ - " {" ^ (String.concat ", " (List.map string_of_id ids')) ^ "}" + " {" ^ (String.concat ", " (List.map string_of_id xs')) ^ "}" | ElsePr -> "otherwise" | IterPr ({it = IterPr _; _} as prem', iter) -> string_of_prem prem' ^ string_of_iterexp iter @@ -220,96 +228,92 @@ and string_of_arg a = match a.it with | ExpA e -> string_of_exp e | TypA t -> "syntax " ^ string_of_typ t - | DefA id -> "def $" ^ string_of_id id + | DefA x -> "def $" ^ string_of_id x | GramA g -> "grammar " ^ string_of_sym g and string_of_args = function | [] -> "" | as_ -> "(" ^ concat ", " (List.map string_of_arg as_) ^ ")" -and string_of_bind bind = - match bind.it with - | ExpB (id, t) -> string_of_id id ^ " : " ^ string_of_typ t - | TypB id -> "syntax " ^ string_of_id id - | DefB (id, ps, t) -> - "def $" ^ string_of_id id ^ string_of_params ps ^ " : " ^ string_of_typ t - | GramB (id, ps, t) -> - "grammar " ^ string_of_id id ^ string_of_params ps ^ " : " ^ string_of_typ t - -and string_of_binds = function +and string_of_quantargs = function | [] -> "" - | bs -> "{" ^ concat ", " (List.map string_of_bind bs) ^ "}" + | as_ -> "{" ^ concat ", " (List.map string_of_arg as_) ^ "}" and string_of_param p = match p.it with - | ExpP (id, t) -> - (if string_of_id id = "_" then "" else string_of_id id ^ " : ") ^ string_of_typ t - | TypP id -> - "syntax " ^ string_of_id id - | DefP (id, ps, t) -> - "def $" ^ string_of_id id ^ string_of_params ps ^ " : " ^ string_of_typ t - | GramP (id, t) -> - "grammar " ^ string_of_id id ^ " : " ^ string_of_typ t + | ExpP (x, t) -> + (if string_of_id x = "_" then "" else string_of_id x ^ " : ") ^ string_of_typ t + | TypP x -> + "syntax " ^ string_of_id x + | DefP (x, ps, t) -> + "def $" ^ string_of_id x ^ string_of_params ps ^ " : " ^ string_of_typ t + | GramP (x, ps, t) -> + "grammar " ^ string_of_id x ^ string_of_params ps ^ " : " ^ string_of_typ t and string_of_params = function | [] -> "" | ps -> "(" ^ concat ", " (List.map string_of_param ps) ^ ")" +and string_of_quants = function + | [] -> "" + | ps -> "{" ^ concat ", " (List.map string_of_param ps) ^ "}" + + let region_comment ?(suppress_pos = false) indent at = if at = no_region then "" else let s = if suppress_pos then at.left.file else string_of_region at in indent ^ ";; " ^ s ^ "\n" -let string_of_inst ?(suppress_pos = false) id inst = +let string_of_inst ?(suppress_pos = false) x inst = match inst.it with - | InstD (bs, as_, dt) -> + | InstD (qs, as_, dt) -> "\n" ^ region_comment ~suppress_pos " " inst.at ^ - " syntax " ^ string_of_id id ^ string_of_binds bs ^ string_of_args as_ ^ " = " ^ + " syntax " ^ string_of_id x ^ string_of_quants qs ^ string_of_args as_ ^ " = " ^ string_of_deftyp `V dt ^ "\n" let string_of_rule ?(suppress_pos = false) rule = match rule.it with - | RuleD (id, bs, mixop, e, prems) -> - let id' = if id.it = "" then "_" else string_of_id id in + | RuleD (x, qs, mixop, e, prems) -> + let x' = if x.it = "" then "_" else string_of_id x in "\n" ^ region_comment ~suppress_pos " " rule.at ^ - " rule " ^ id' ^ string_of_binds bs ^ ":\n " ^ + " rule " ^ x' ^ string_of_quants qs ^ ":\n " ^ string_of_mixop mixop ^ string_of_exp_args e ^ concat "" (List.map (prefix "\n -- " string_of_prem) prems) -let string_of_clause ?(suppress_pos = false) id clause = +let string_of_clause ?(suppress_pos = false) x clause = match clause.it with - | DefD (bs, as_, e, prems) -> + | DefD (qs, as_, e, prems) -> "\n" ^ region_comment ~suppress_pos " " clause.at ^ - " def $" ^ string_of_id id ^ string_of_binds bs ^ string_of_args as_ ^ " = " ^ + " def $" ^ string_of_id x ^ string_of_quants qs ^ string_of_args as_ ^ " = " ^ string_of_exp e ^ concat "" (List.map (prefix "\n -- " string_of_prem) prems) let string_of_prod ?(suppress_pos = false) prod = match prod.it with - | ProdD (bs, g, e, prems) -> + | ProdD (qs, g, e, prems) -> "\n" ^ region_comment ~suppress_pos " " prod.at ^ - " prod" ^ string_of_binds bs ^ " " ^ string_of_sym g ^ " => " ^ + " prod" ^ string_of_quants qs ^ " " ^ string_of_sym g ^ " => " ^ string_of_exp e ^ concat "" (List.map (prefix "\n -- " string_of_prem) prems) let rec string_of_def ?(suppress_pos = false) d = let pre = "\n" ^ region_comment ~suppress_pos "" d.at in match d.it with - | TypD (id, _ps, [{it = InstD (bs, as_, dt); _}]) -> - pre ^ "syntax " ^ string_of_id id ^ string_of_binds bs ^ string_of_args as_ ^ " = " ^ + | TypD (x, _ps, [{it = InstD (ps, as_, dt); _}]) -> + pre ^ "syntax " ^ string_of_id x ^ string_of_params ps ^ string_of_args as_ ^ " = " ^ string_of_deftyp `V dt ^ "\n" - | TypD (id, ps, insts) -> - pre ^ "syntax " ^ string_of_id id ^ string_of_params ps ^ - concat "\n" (List.map (string_of_inst ~suppress_pos id) insts) ^ "\n" - | RelD (id, mixop, t, rules) -> - pre ^ "relation " ^ string_of_id id ^ ": " ^ + | TypD (x, ps, insts) -> + pre ^ "syntax " ^ string_of_id x ^ string_of_params ps ^ + concat "\n" (List.map (string_of_inst ~suppress_pos x) insts) ^ "\n" + | RelD (x, mixop, t, rules) -> + pre ^ "relation " ^ string_of_id x ^ ": " ^ string_of_mixop mixop ^ string_of_typ_args t ^ concat "\n" (List.map (string_of_rule ~suppress_pos) rules) ^ "\n" - | DecD (id, ps, t, clauses) -> - pre ^ "def $" ^ string_of_id id ^ string_of_params ps ^ " : " ^ string_of_typ t ^ - concat "" (List.map (string_of_clause ~suppress_pos id) clauses) ^ "\n" - | GramD (id, ps, t, prods) -> - pre ^ "grammar " ^ string_of_id id ^ string_of_params ps ^ " : " ^ string_of_typ t ^ + | DecD (x, ps, t, clauses) -> + pre ^ "def $" ^ string_of_id x ^ string_of_params ps ^ " : " ^ string_of_typ t ^ + concat "" (List.map (string_of_clause ~suppress_pos x) clauses) ^ "\n" + | GramD (x, ps, t, prods) -> + pre ^ "grammar " ^ string_of_id x ^ string_of_params ps ^ " : " ^ string_of_typ t ^ concat "" (List.map (string_of_prod ~suppress_pos) prods) ^ "\n" | RecD ds -> pre ^ "rec {\n" ^ concat "" (List.map string_of_def ds) ^ "}" ^ "\n" diff --git a/spectec/src/il/print.mli b/spectec/src/il/print.mli index 4f6cd9359..cf33752fb 100644 --- a/spectec/src/il/print.mli +++ b/spectec/src/il/print.mli @@ -15,9 +15,10 @@ val string_of_path : path -> string val string_of_sym : sym -> string val string_of_prem : prem -> string val string_of_arg : arg -> string -val string_of_bind : bind -> string -val string_of_binds : bind list -> string +val string_of_args : arg list -> string val string_of_param : param -> string +val string_of_params : param list -> string +val string_of_quants : param list -> string val string_of_deftyp : [`H | `V] -> deftyp -> string val string_of_def : ?suppress_pos:bool -> def -> string val string_of_rule : ?suppress_pos:bool -> rule -> string diff --git a/spectec/src/il/subst.ml b/spectec/src/il/subst.ml index b159eed12..afc291e0d 100644 --- a/spectec/src/il/subst.ml +++ b/spectec/src/il/subst.ml @@ -17,36 +17,35 @@ let empty = gramid = Map.empty; } -let mem_varid s id = Map.mem id.it s.varid -let mem_typid s id = Map.mem id.it s.typid -let mem_defid s id = Map.mem id.it s.defid -let mem_gramid s id = Map.mem id.it s.gramid - -let find_varid s id = Map.find id.it s.varid -let find_typid s id = Map.find id.it s.typid -let find_defid s id = Map.find id.it s.defid -let find_gramid s id = Map.find id.it s.gramid - -let add_varid s id e = if id.it = "_" then s else {s with varid = Map.add id.it e s.varid} -let add_typid s id t = if id.it = "_" then s else {s with typid = Map.add id.it t s.typid} -let add_defid s id x = if id.it = "_" then s else {s with defid = Map.add id.it x s.defid} -let add_gramid s id g = if id.it = "_" then s else {s with gramid = Map.add id.it g s.gramid} - -let remove_varid s id = if id.it = "_" then s else {s with varid = Map.remove id.it s.varid} -let remove_typid s id = if id.it = "_" then s else {s with typid = Map.remove id.it s.typid} -let remove_defid s id = if id.it = "_" then s else {s with defid = Map.remove id.it s.defid} -let remove_gramid s id = if id.it = "_" then s else {s with gramid = Map.remove id.it s.gramid} +let mem_varid s x = Map.mem x.it s.varid +let mem_typid s x = Map.mem x.it s.typid +let mem_defid s x = Map.mem x.it s.defid +let mem_gramid s x = Map.mem x.it s.gramid + +let find_varid s x = Map.find x.it s.varid +let find_typid s x = Map.find x.it s.typid +let find_defid s x = Map.find x.it s.defid +let find_gramid s x = Map.find x.it s.gramid + +let add_varid s x e = if x.it = "_" then s else {s with varid = Map.add x.it e s.varid} +let add_typid s x t = if x.it = "_" then s else {s with typid = Map.add x.it t s.typid} +let add_defid s x x' = if x.it = "_" then s else {s with defid = Map.add x.it x' s.defid} +let add_gramid s x g = if x.it = "_" then s else {s with gramid = Map.add x.it g s.gramid} + +let remove_varid s x = if x.it = "_" then s else {s with varid = Map.remove x.it s.varid} +let remove_typid s x = if x.it = "_" then s else {s with typid = Map.remove x.it s.typid} +let remove_defid s x = if x.it = "_" then s else {s with defid = Map.remove x.it s.defid} +let remove_gramid s x = if x.it = "_" then s else {s with gramid = Map.remove x.it s.gramid} let union s1 s2 = { varid = Map.union (fun _ _e1 e2 -> Some e2) s1.varid s2.varid; typid = Map.union (fun _ _t1 t2 -> Some t2) s1.typid s2.typid; defid = Map.union (fun _ _x1 x2 -> Some x2) s1.defid s2.defid; - gramid = Map.union (fun _ _x1 x2 -> Some x2) s1.gramid s2.gramid; + gramid = Map.union (fun _ _g1 g2 -> Some g2) s1.gramid s2.gramid; } -let remove_varid' s id' = {s with varid = Map.remove id' s.varid} -let remove_varids s ids' = - Free.Set.(fold (fun id' s -> remove_varid' s id') ids' s) +let remove_varid' s x' = {s with varid = Map.remove x' s.varid} +let remove_varids s xs' = Free.Set.(fold (fun x' s -> remove_varid' s x') xs' s) (* Helpers *) @@ -65,21 +64,21 @@ let rec subst_list_dep subst_x bound_x s = function (* Identifiers *) -let subst_varid s id = - match Map.find_opt id.it s.varid with - | None -> id - | Some {it = VarE id'; _} -> id' +let subst_varid s x = + match Map.find_opt x.it s.varid with + | None -> x + | Some {it = VarE x'; _} -> x' | Some _ -> raise (Invalid_argument "subst_varid") -let subst_defid s id = - match Map.find_opt id.it s.defid with - | None -> id - | Some id' -> id' +let subst_defid s x = + match Map.find_opt x.it s.defid with + | None -> x + | Some x' -> x' -let subst_gramid s id = - match Map.find_opt id.it s.gramid with - | None -> id - | Some {it = VarG (id', []); _} -> id' +let subst_gramid s x = + match Map.find_opt x.it s.gramid with + | None -> x + | Some {it = VarG (x', []); _} -> x' | Some _ -> raise (Invalid_argument "subst_varid") @@ -88,30 +87,27 @@ let subst_gramid s id = let rec subst_iter s iter = match iter with | Opt | List | List1 -> iter, s - | ListN (e, id_opt) -> - ListN (subst_exp s e, subst_opt subst_varid s id_opt), - Option.fold id_opt ~none:s ~some:(remove_varid s) + | ListN (e, xo) -> + ListN (subst_exp s e, subst_opt subst_varid s xo), + Option.fold xo ~none:s ~some:(remove_varid s) (* Types *) and subst_typ s t = (match t.it with - | VarT (id, as_) -> - (match Map.find_opt id.it s.typid with - | None -> VarT (id, subst_args s as_) + | VarT (x, as_) -> + (match Map.find_opt x.it s.typid with + | None -> VarT (x, subst_args s as_) | Some t' -> assert (as_ = []); t'.it (* We do not support higher-order substitutions yet *) ) | BoolT | NumT _ | TextT -> t.it - | TupT ets -> TupT (subst_list (subst_pair subst_exp subst_typ) s ets) + | TupT xts -> TupT (subst_list (subst_pair subst_varid subst_typ) s xts) | IterT (t1, iter) -> let iter', s' = subst_iter s iter in IterT (subst_typ s' t1, iter') ) $ t.at -and subst_typbind s (e, t) = - (e, subst_typ s t) - and subst_deftyp s dt = (match dt.it with | AliasT t -> AliasT (subst_typ s t) @@ -119,22 +115,25 @@ and subst_deftyp s dt = | VariantT tcs -> VariantT (subst_list subst_typcase s tcs) ) $ dt.at -and subst_typfield s (atom, (bs, t, prems), hints) = - let bs', s' = subst_binds s bs in - (atom, (bs', subst_typ s' t, subst_list subst_prem s' prems), hints) +and subst_typfield s (atom, (ps, t, prems), hints) = + let ps', s' = subst_params s ps in + (atom, (ps', subst_typ s' t, subst_list subst_prem s' prems), hints) + +and subst_typcase s (op, (ps, t, prems), hints) = + let ps', s' = subst_params s ps in + (op, (ps', subst_typ s' t, subst_list subst_prem s' prems), hints) -and subst_typcase s (op, (bs, t, prems), hints) = - let bs', s' = subst_binds s bs in - (op, (bs', subst_typ s' t, subst_list subst_prem s' prems), hints) +and subst_typbind s (x, t) = + (subst_varid s x, subst_typ s t) (* Expressions *) and subst_exp s e = (match e.it with - | VarE id -> - (match Map.find_opt id.it s.varid with - | None -> VarE id + | VarE x -> + (match Map.find_opt x.it s.varid with + | None -> VarE x | Some e' -> e'.it ) | BoolE _ | NumE _ | TextE _ -> e.it @@ -146,33 +145,33 @@ and subst_exp s e = | UpdE (e1, p, e2) -> UpdE (subst_exp s e1, subst_path s p, subst_exp s e2) | ExtE (e1, p, e2) -> ExtE (subst_exp s e1, subst_path s p, subst_exp s e2) | StrE efs -> StrE (subst_list subst_expfield s efs) - | DotE (e1, atom) -> DotE (subst_exp s e1, atom) + | DotE (e1, atom, as_) -> DotE (subst_exp s e1, atom, subst_args s as_) | CompE (e1, e2) -> CompE (subst_exp s e1, subst_exp s e2) | MemE (e1, e2) -> MemE (subst_exp s e1, subst_exp s e2) | LenE e1 -> LenE (subst_exp s e1) | TupE es -> TupE (subst_list subst_exp s es) - | CallE (id, as_) -> CallE (subst_defid s id, subst_args s as_) + | CallE (x, as_) -> CallE (subst_defid s x, subst_args s as_) | IterE (e1, iterexp) -> let it', s' = subst_iterexp s iterexp in IterE (subst_exp s' e1, it') | ProjE (e1, i) -> ProjE (subst_exp s e1, i) - | UncaseE (e1, op) -> + | UncaseE (e1, op, as_) -> let e1' = subst_exp s e1 in assert (match e1'.note.it with VarT _ -> true | _ -> false); - UncaseE (subst_exp s e1, op) + UncaseE (subst_exp s e1, op, subst_args s as_) | OptE eo -> OptE (subst_opt subst_exp s eo) | TheE e -> TheE (subst_exp s e) | ListE es -> ListE (subst_list subst_exp s es) | LiftE e -> LiftE (subst_exp s e) | CatE (e1, e2) -> CatE (subst_exp s e1, subst_exp s e2) - | CaseE (op, e1) -> + | CaseE (op, as_, e1) -> assert (match e.note.it with VarT _ -> true | _ -> false); - CaseE (op, subst_exp s e1) + CaseE (op, subst_args s as_, subst_exp s e1) | CvtE (e1, nt1, nt2) -> CvtE (subst_exp s e1, nt1, nt2) | SubE (e1, t1, t2) -> SubE (subst_exp s e1, subst_typ s t1, subst_typ s t2) ) $$ e.at % subst_typ s e.note -and subst_expfield s (atom, e) = (atom, subst_exp s e) +and subst_expfield s (atom, as_, e) = (atom, subst_args s as_, subst_exp s e) and subst_path s p = (match p.it with @@ -180,13 +179,13 @@ and subst_path s p = | IdxP (p1, e) -> IdxP (subst_path s p1, subst_exp s e) | SliceP (p1, e1, e2) -> SliceP (subst_path s p1, subst_exp s e1, subst_exp s e2) - | DotP (p1, atom) -> DotP (subst_path s p1, atom) + | DotP (p1, atom, as_) -> DotP (subst_path s p1, atom, subst_args s as_) ) $$ p.at % subst_typ s p.note and subst_iterexp s (iter, xes) = (* TODO(3, rossberg): This is assuming expressions in s are closed, is that okay? *) let iter', s' = subst_iter s iter in - (iter', List.map (fun (id, e) -> (id, subst_exp s e)) xes), + (iter', List.map (fun (x, e) -> (x, subst_exp s e)) xes), List.fold_left remove_varid s' (List.map fst xes) @@ -194,7 +193,7 @@ and subst_iterexp s (iter, xes) = and subst_sym s g = (match g.it with - | VarG (id, args) -> VarG (subst_gramid s id, List.map (subst_arg s) args) + | VarG (x, args) -> VarG (subst_gramid s x, List.map (subst_arg s) args) | NumG _ | TextG _ -> g.it | EpsG -> EpsG | SeqG gs -> SeqG (subst_list subst_sym s gs) @@ -211,13 +210,13 @@ and subst_sym s g = and subst_prem s prem = (match prem.it with - | RulePr (id, op, e) -> RulePr (id, op, subst_exp s e) + | RulePr (x, op, e) -> RulePr (x, op, subst_exp s e) | IfPr e -> IfPr (subst_exp s e) | ElsePr -> ElsePr | IterPr (prem1, iterexp) -> let it', s' = subst_iterexp s iterexp in IterPr (subst_prem s' prem1, it') - | LetPr (e1, e2, ids) -> LetPr (subst_exp s e1, subst_exp s e2, ids) + | LetPr (e1, e2, xs) -> LetPr (subst_exp s e1, subst_exp s e2, xs) ) $ prem.at @@ -227,34 +226,23 @@ and subst_arg s a = (match a.it with | ExpA e -> ExpA (subst_exp s e) | TypA t -> TypA (subst_typ s t) - | DefA id -> DefA (subst_defid s id) + | DefA x -> DefA (subst_defid s x) | GramA g -> GramA (subst_sym s g) ) $ a.at -and subst_bind s b = - (match b.it with - | ExpB (id, t) -> ExpB (id, subst_typ s t) - | TypB id -> TypB id - | DefB (id, ps, t) -> - let ps', s' = subst_params s ps in - DefB (id, ps', subst_typ s' t) - | GramB (id, ps, t) -> - let ps', s' = subst_params s ps in - GramB (id, ps', subst_typ s' t) - ) $ b.at - and subst_param s p = (match p.it with - | ExpP (id, t) -> ExpP (id, subst_typ s t) - | TypP id -> TypP id - | DefP (id, ps, t) -> + | ExpP (x, t) -> ExpP (x, subst_typ s t) + | TypP x -> TypP x + | DefP (x, ps, t) -> + let ps', s' = subst_params s ps in + DefP (x, ps', subst_typ s' t) + | GramP (x, ps, t) -> let ps', s' = subst_params s ps in - DefP (id, ps', subst_typ s' t) - | GramP (id, t) -> GramP (id, subst_typ s t) + GramP (x, ps', subst_typ s' t) ) $ p.at and subst_args s as_ = subst_list subst_arg s as_ -and subst_binds s bs = subst_list_dep subst_bind Free.bound_bind s bs and subst_params s ps = subst_list_dep subst_param Free.bound_param s ps diff --git a/spectec/src/il/subst.mli b/spectec/src/il/subst.mli index 37c98645b..94be50c92 100644 --- a/spectec/src/il/subst.mli +++ b/spectec/src/il/subst.mli @@ -38,10 +38,9 @@ val subst_param : subst -> param -> param val subst_deftyp : subst -> deftyp -> deftyp val subst_typcase : subst -> typcase -> typcase val subst_typfield : subst -> typfield -> typfield -val subst_typbind : subst -> exp * typ -> exp * typ +val subst_typbind : subst -> id * typ -> id * typ val subst_args : subst -> arg list -> arg list -val subst_binds : subst -> bind list -> bind list * subst val subst_params : subst -> param list -> param list * subst val subst_list : (subst -> 'a -> 'a) -> subst -> 'a list -> 'a list diff --git a/spectec/src/il/valid.ml b/spectec/src/il/valid.ml index 1f60fd006..44e3026e3 100644 --- a/spectec/src/il/valid.ml +++ b/spectec/src/il/valid.ml @@ -63,9 +63,9 @@ let as_list_typ phrase env dir t at : typ = | IterT (t1, (List | List1 | ListN _)) -> t1 | _ -> as_error at phrase dir t "(_)*" -let as_tup_typ phrase env dir t at : (exp * typ) list = +let as_tup_typ phrase env dir t at : (id * typ) list = match expand_typ env t with - | TupT ets -> ets + | TupT xts -> xts | _ -> as_error at phrase dir t "(_,...,_)" @@ -88,6 +88,16 @@ let rec as_comp_typ phrase env dir t at = error at (phrase ^ "'s type `" ^ string_of_typ t ^ "` is not composable") +let rec inst_tup_typ env s xts : (id * typ) list = + match xts with + | [] -> [] + | (xI, tI)::xts' -> + let xI' = Fresh.refresh_varid xI in + let tI' = Subst.subst_typ s tI in + let s' = Subst.add_varid s xI (VarE xI' $$ xI.at % tI') in + (xI', tI') :: inst_tup_typ env s' xts' + + (* Type Equivalence and Subtyping *) let equiv_typ env t1 t2 at = @@ -182,8 +192,8 @@ and valid_typ env t = | NumT _ | TextT -> () - | TupT ets -> - List.iter (valid_typbind env) ets + | TupT xts -> + List.iter (valid_typbind env) xts | IterT (t1, iter) -> match iter with | ListN (e, _) -> error e.at "definite iterator not allowed in type" @@ -191,9 +201,10 @@ and valid_typ env t = let env' = valid_iter env iter in valid_typ env' t1 -and valid_typbind env (e, t) = +and valid_typbind env (x, t) = valid_typ env t; - valid_exp ~side:`Lhs env e t + let t' = Env.find_var env x in + equiv_typ env t' t x.at and valid_deftyp envr dt = match dt.it with @@ -206,15 +217,15 @@ and valid_deftyp envr dt = check_mixops "variant" "case" (List.map (fun (op, _, _) -> op) tcs) dt.at; List.iter (valid_typcase envr) tcs -and valid_typfield envr (_atom, (bs, t, prems), _hints) = +and valid_typfield envr (_atom, (qs, t, prems), _hints) = let envr' = local_env envr in - List.iter (valid_bind envr') bs; + List.iter (valid_param envr') qs; valid_typ !envr' t; List.iter (valid_prem !envr') prems -and valid_typcase envr (mixop, (bs, t, prems), _hints) = +and valid_typcase envr (mixop, (qs, t, prems), _hints) = Debug.(log_at "il.valid_typcase" t.at - (fun _ -> fmt "%s %s" (il_binds bs) (il_typ t)) + (fun _ -> fmt "%s %s" (il_quants qs) (il_typ t)) (fun _ -> "ok") ) @@ fun _ -> let arity = @@ -226,23 +237,11 @@ and valid_typcase envr (mixop, (bs, t, prems), _hints) = error t.at ("inconsistent arity in mixin notation, `" ^ string_of_mixop mixop ^ "` applied to " ^ typ_string !envr t); let envr' = local_env envr in - List.iter (valid_bind envr') bs; + List.iter (valid_param envr') qs; valid_typ !envr' t; List.iter (valid_prem !envr') prems -and inst_tup_typ env s e i ets : (exp * typ) list = - match ets with - | [] -> [] - | (eI, tI)::ets' -> - let eI' = Subst.subst_exp s eI in - let tI' = Subst.subst_typ s tI in - match Eval.match_exp env s (ProjE (e, i) $$ e.at % tI') eI' with - | Some s' -> (eI', tI') :: inst_tup_typ env s' e (i + 1) ets' - | None -> error e.at "tuple does not match its own type" - | exception Eval.Irred -> error e.at "tuple does not match its own type" - - (* Expressions *) and infer_exp (env : Env.t) e : typ = @@ -251,7 +250,7 @@ and infer_exp (env : Env.t) e : typ = (fun r -> fmt "%s" (il_typ r)) ) @@ fun _ -> match e.it with - | VarE id -> Env.find_var env id + | VarE x -> Env.find_var env x | BoolE _ -> BoolT $ e.at | NumE n -> NumT (Num.to_typ n) $ e.at | TextE _ -> TextT $ e.at @@ -264,14 +263,15 @@ and infer_exp (env : Env.t) e : typ = | ExtE (e1, _, _) | CompE (e1, _) -> infer_exp env e1 | StrE _ -> error e.at "cannot infer type of record" - | DotE (e1, atom) -> + | DotE (e1, atom, as_) -> let tfs = as_struct_typ "expression" env Infer (infer_exp env e1) e1.at in - let _binds, t, _prems = find_field tfs atom e1.at in - t + let qs, t, _prems = find_field tfs atom e1.at in + let s = valid_args env as_ qs Subst.empty e.at in + Subst.subst_typ s t | TupE es -> - TupT (List.map (fun eI -> eI, infer_exp env eI) es) $ e.at - | CallE (id, as_) -> - let ps, t, _ = Env.find_def env id in + TupT (List.map (fun eI -> "_" $ eI.at, infer_exp env eI) es) $ e.at + | CallE (x, as_) -> + let ps, t, _ = Env.find_def env x in let s = valid_args env as_ ps Subst.empty e.at in Subst.subst_typ s t | IterE (e1, iterexp) -> @@ -279,18 +279,20 @@ and infer_exp (env : Env.t) e : typ = IterT (infer_exp env' e1, iter) $ e.at | ProjE (e1, i) -> let t1 = infer_exp env e1 in - let ets = as_tup_typ "expression" env Infer t1 e1.at in - if i >= List.length ets then + let xts = as_tup_typ "expression" env Infer t1 e1.at in + if i >= List.length xts then error e.at "invalid tuple projection"; - let ets' = inst_tup_typ env Subst.empty e1 0 ets in - (match List.nth_opt ets' i with + let xts' = inst_tup_typ env Subst.empty xts in + (match List.nth_opt xts' i with | Some (_, tI) -> tI | None -> error e.at "cannot infer type of tuple projection" ) - | UncaseE (e1, op) -> + | UncaseE (e1, op, as_) -> let t1 = infer_exp env e1 in (match as_variant_typ "expression" env Infer t1 e1.at with - | [(op', (_, t, _), _)] when Eq.eq_mixop op op' -> t + | [(op', (ps, t, _), _)] when Eq.eq_mixop op op' -> + let s = valid_args env as_ ps Subst.empty e.at in + Subst.subst_typ s t | _ -> error e.at "invalid case projection"; ) | OptE _ -> error e.at "cannot infer type of option" @@ -334,9 +336,9 @@ try Printexc.raise_with_backtrace exn bt ); match e.it with - | VarE id when id.it = "_" && side = `Lhs -> () - | VarE id -> - let t' = Env.find_var env id in + | VarE x when x.it = "_" && side = `Lhs -> () + | VarE x -> + let t' = Env.find_var env x in equiv_typ env t' t e.at | BoolE _ | NumE _ | TextE _ -> let t' = infer_exp env e in @@ -389,12 +391,13 @@ try | StrE efs -> let tfs = as_struct_typ "record" env Check t e.at in valid_list (valid_expfield ~side) env efs tfs e.at - | DotE (e1, atom) -> + | DotE (e1, atom, as_) -> let t1 = infer_exp env e1 in valid_exp env e1 t1; let tfs = as_struct_typ "expression" env Check t1 e1.at in - let _binds, t', _prems = find_field tfs atom e1.at in - equiv_typ env t' t e.at + let qs, t', _prems = find_field tfs atom e1.at in + let s = valid_args env as_ qs Subst.empty e.at in + equiv_typ env (Subst.subst_typ s t') t e.at | CompE (e1, e2) -> let _ = as_comp_typ "expression" env Check t e.at in valid_exp env e1 t; @@ -417,8 +420,8 @@ try string_of_int (List.length ets) ^ ", got " ^ string_of_int (List.length es)); if not (valid_tup_exp ~side env Subst.empty es ets) then as_error e.at "tuple" Check t "" - | CallE (id, as_) -> - let ps, t', _ = Env.find_def env id in + | CallE (x, as_) -> + let ps, t', _ = Env.find_def env x in let s = valid_args env as_ ps Subst.empty e.at in equiv_typ env (Subst.subst_typ s t') t e.at | IterE (e1, iterexp) -> @@ -427,21 +430,23 @@ try valid_exp ~side env' e1 t1 | ProjE (e1, i) -> let t1 = infer_exp env e1 in - let ets = as_tup_typ "expression" env Infer t1 e1.at in - if i >= List.length ets then + let xts = as_tup_typ "expression" env Infer t1 e1.at in + if i >= List.length xts then error e.at "invalid tuple projection"; - let side' = if List.length ets > 1 then `Rhs else side in - let ets' = inst_tup_typ env Subst.empty e1 0 ets in - valid_exp ~side:side' env e1 (TupT ets' $ t1.at); - (match List.nth_opt ets i with + let side' = if List.length xts > 1 then `Rhs else side in + let xts' = inst_tup_typ env Subst.empty xts in + valid_exp ~side:side' env e1 (TupT xts' $ t1.at); + (match List.nth_opt xts i with | Some (_, tI) -> equiv_typ env tI t e.at | None -> error e.at "invalid tuple projection, cannot match pattern" ) - | UncaseE (e1, op) -> + | UncaseE (e1, op, as_) -> let t1 = infer_exp env e1 in valid_exp ~side env e1 t1; (match as_variant_typ "expression" env Infer t1 e1.at with - | [(op', (_, t', _), _)] when Eq.eq_mixop op op' -> equiv_typ env t' t e.at + | [(op', (ps, t', _), _)] when Eq.eq_mixop op op' -> + let s = valid_args env as_ ps Subst.empty e.at in + equiv_typ env (Subst.subst_typ s t') t e.at | _ -> error e.at "invalid case projection"; ) | OptE eo -> @@ -464,10 +469,11 @@ try let _typ1 = as_iter_typ List "list" env Check t e.at in valid_exp env e1 t; valid_exp env e2 t - | CaseE (op, e1) -> + | CaseE (op, as_, e1) -> let cases = as_variant_typ "case" env Check t e.at in - let _binds, t1, _prems = find_case cases op e1.at in - valid_exp ~side env e1 t1 + let qs, t1, _prems = find_case cases op e1.at in + let s = valid_args env as_ qs Subst.empty e.at in + valid_exp ~side env e1 (Subst.subst_typ s t1) | CvtE (e1, nt1, nt2) -> valid_exp ~side env e1 (NumT nt1 $ e1.at); equiv_typ env (NumT nt2 $e.at) t e.at; @@ -491,23 +497,21 @@ and valid_expmix ?(side = `Rhs) env mixop e (mixop', t) at = ); valid_exp ~side env e t -and valid_tup_exp ?(side = `Rhs) env s es ets = +and valid_tup_exp ?(side = `Rhs) env s es xts = Debug.(log_in "il.valid_tup_exp" - (fun _ -> fmt "(%s) :%s (%s)[%s]" (list il_exp es) (il_side side) (list il_typ (List.map snd ets)) (il_subst s)) + (fun _ -> fmt "(%s) :%s (%s)[%s]" (list il_exp es) (il_side side) (list il_typ (List.map snd xts)) (il_subst s)) ); - match es, ets with - | e1::es', (e2, t)::ets' -> - valid_exp ~side env e1 (Subst.subst_typ s t); - (match Eval.match_exp env s e1 e2 with - | Some s' -> valid_tup_exp ~side env s' es' ets' - | None -> false - | exception Eval.Irred -> false - ) + match es, xts with + | e::es', (x, t)::xts' -> + valid_exp ~side env e (Subst.subst_typ s t); + let s' = Subst.add_varid s x e in + valid_tup_exp ~side env s' es' xts' | _, _ -> true -and valid_expfield ~side env (atom1, e) (atom2, (_binds, t, _prems), _) = +and valid_expfield ~side env (atom1, as_, e) (atom2, (ps, t, _prems), _) = if not (Eq.eq_atom atom1 atom2) then error e.at "unexpected record field"; - valid_exp ~side env e t + let s = valid_args env as_ ps Subst.empty e.at in + valid_exp ~side env e (Subst.subst_typ s t) and valid_path env p t : typ = valid_typ env t; @@ -524,11 +528,12 @@ and valid_path env p t : typ = valid_exp env e2 (NumT `NatT $ e2.at); let _ = as_list_typ "path" env Check t1 p1.at in t1 - | DotP (p1, atom) -> + | DotP (p1, atom, as_) -> let t1 = valid_path env p1 t in let tfs = as_struct_typ "path" env Check t1 p1.at in - let _bs, t, _prems = find_field tfs atom p1.at in - t + let qs, t, _prems = find_field tfs atom p1.at in + let s = valid_args env as_ qs Subst.empty p.at in + Subst.subst_typ s t in equiv_typ env p.note t' p.at; t' @@ -538,11 +543,11 @@ and valid_iterexp ?(side = `Rhs) env (iter, xes) at : iter * Env.t = if xes = [] && iter <= List1 && side = `Rhs then error at "empty iteration"; let iter' = match iter with Opt -> Opt | _ -> List in iter', - List.fold_left (fun env' (id, e) -> + List.fold_left (fun env' (x, e) -> let t = infer_exp env e in valid_exp ~side env e t; let t1 = as_iter_typ iter' "iterator" env Check t e.at in - Env.bind_var env' id t1 + Env.bind_var env' x t1 ) env' xes @@ -551,8 +556,8 @@ and valid_iterexp ?(side = `Rhs) env (iter, xes) at : iter * Env.t = and valid_sym env g : typ = Debug.(log_at "il.valid_sym" g.at (fun _ -> il_sym g) (fun t -> il_typ t)) @@ fun _ -> match g.it with - | VarG (id, as_) -> - let ps, t, _ = Env.find_gram env id in + | VarG (x, as_) -> + let ps, t, _ = Env.find_gram env x in let s = valid_args env as_ ps Subst.empty g.at in Subst.subst_typ s t | NumG _ -> @@ -590,22 +595,22 @@ and valid_sym env g : typ = and valid_prem env prem = Debug.(log_in_at "il.valid_prem" prem.at (fun _ -> il_prem prem)); match prem.it with - | RulePr (id, mixop, e) -> - let mixop', t, _rules = Env.find_rel env id in + | RulePr (x, mixop, e) -> + let mixop', t, _rules = Env.find_rel env x in assert (Mixop.eq mixop mixop'); valid_expmix env mixop e (mixop, t) e.at | IfPr e -> valid_exp env e (BoolT $ e.at) - | LetPr (e1, e2, ids) -> + | LetPr (e1, e2, xs) -> let t = infer_exp env e2 in valid_exp ~side:`Lhs env e1 t; valid_exp env e2 t; - let target_ids = Free.{empty with varid = Set.of_list ids} in + let target_ids = Free.{empty with varid = Set.of_list xs} in let free_ids = Free.(free_exp e1) in if not (Free.subset target_ids free_ids) then error prem.at ("target identifier(s) " ^ ( Free.Set.elements (Free.diff target_ids free_ids).varid |> - List.map (fun id -> "`" ^ id ^ "`") |> + List.map (fun x -> "`" ^ x ^ "`") |> String.concat ", " ) ^ " do not occur in left-hand side expression") | ElsePr -> @@ -622,18 +627,18 @@ and valid_arg env a p s = (fun _ -> fmt "%s : %s" (il_arg a) (il_param p)) (Fun.const "ok") ) @@ fun _ -> match a.it, (Subst.subst_param s p).it with - | ExpA e, ExpP (id, t) -> valid_exp ~side:`Lhs env e t; Subst.add_varid s id e - | TypA t, TypP id -> valid_typ env t; Subst.add_typid s id t - | DefA id', DefP (id, ps, t) -> - let ps', t', _ = Env.find_def env id' in + | ExpA e, ExpP (x, t) -> valid_exp ~side:`Lhs env e t; Subst.add_varid s x e + | TypA t, TypP x -> valid_typ env t; Subst.add_typid s x t + | DefA x', DefP (x, ps, t) -> + let ps', t', _ = Env.find_def env x' in if not (Eval.equiv_functyp env (ps', t') (ps, t)) then error a.at "type mismatch in function argument"; - Subst.add_defid s id id' - | GramA g, GramP (id, t) -> + Subst.add_defid s x x' + | GramA g, GramP (x, ps, t) -> let t' = valid_sym env g in - if not (Eval.equiv_typ env t' t) then + if not (Eval.equiv_functyp env ([], t') (ps, t)) then error a.at "type mismatch in grammar argument"; - Subst.add_gramid s id g + Subst.add_gramid s x g | _, _ -> error a.at ("sort mismatch for argument, expected `" ^ Print.string_of_param p ^ "`, got `" ^ Print.string_of_arg a ^ "`") @@ -650,39 +655,23 @@ and valid_args env as_ ps s at : Subst.t = let s' = valid_arg env a p s in valid_args env as' ps' s' at -and valid_bind envr b = - match b.it with - | ExpB (id, t) -> +and valid_param envr p = + match p.it with + | ExpP (x, t) -> valid_typ !envr t; - envr := Env.bind_var !envr id t - | TypB id -> - envr := Env.bind_typ !envr id ([], []) - | DefB (id, ps, t) -> + envr := Env.bind_var !envr x t + | TypP x -> + envr := Env.bind_typ !envr x ([], []) + | DefP (x, ps, t) -> let envr' = local_env envr in List.iter (valid_param envr') ps; valid_typ !envr' t; - envr := Env.bind_def !envr id (ps, t, []) - | GramB (id, ps, t) -> + envr := Env.bind_def !envr x (ps, t, []) + | GramP (x, ps, t) -> let envr' = local_env envr in List.iter (valid_param envr') ps; valid_typ !envr' t; - envr := Env.bind_gram !envr id (ps, t, []) - -and valid_param envr p = - match p.it with - | ExpP (id, t) -> - valid_typ !envr t; - envr := Env.bind_var !envr id t - | TypP id -> - envr := Env.bind_typ !envr id ([], []) - | DefP (id, ps, t) -> - let envr' = local_env envr in - List.iter (valid_param envr') ps; - valid_typ !envr' t; - envr := Env.bind_def !envr id (ps, t, []) - | GramP (id, t) -> - valid_typ !envr t; - envr := Env.bind_gram !envr id ([], t, []) + envr := Env.bind_gram !envr x (ps, t, []) let valid_inst envr ps inst = Debug.(log_in "il.valid_inst" line); @@ -690,9 +679,9 @@ let valid_inst envr ps inst = (fun _ -> fmt "(%s) = ..." (il_params ps)) ); match inst.it with - | InstD (bs, as_, dt) -> + | InstD (qs, as_, dt) -> let envr' = local_env envr in - List.iter (valid_bind envr') bs; + List.iter (valid_param envr') qs; let _s = valid_args !envr' as_ ps Subst.empty inst.at in valid_deftyp envr' dt @@ -702,28 +691,28 @@ let valid_rule envr mixop t rule = (fun _ -> fmt "%s : %s = ..." (il_mixop mixop) (il_typ t)) ); match rule.it with - | RuleD (_id, bs, mixop', e, prems) -> + | RuleD (_x, qs, mixop', e, prems) -> let envr' = local_env envr in - List.iter (valid_bind envr') bs; + List.iter (valid_param envr') qs; valid_expmix ~side:`Lhs !envr' mixop' e (mixop, t) e.at; List.iter (valid_prem !envr') prems -let valid_clause envr id ps t clause = +let valid_clause envr x ps t clause = Debug.(log_in "il.valid_clause" line); Debug.(log_in_at "il.valid_clause" clause.at (fun _ -> fmt ": (%s) -> %s" (il_params ps) (il_typ t)) ); try match clause.it with - | DefD (bs, as_, e, prems) -> + | DefD (qs, as_, e, prems) -> let envr' = local_env envr in - List.iter (valid_bind envr') bs; + List.iter (valid_param envr') qs; let s = valid_args !envr' as_ ps Subst.empty clause.at in valid_exp !envr' e (Subst.subst_typ s t); List.iter (valid_prem !envr') prems with exn -> let bt = Printexc.get_raw_backtrace () in - Printf.eprintf "[valid_clause] %s\n%!" (Debug.il_clause id clause); + Printf.eprintf "[valid_clause] %s\n%!" (Debug.il_clause x clause); Printexc.raise_with_backtrace exn bt let valid_prod envr ps t prod = @@ -732,32 +721,32 @@ let valid_prod envr ps t prod = (fun _ -> fmt ": (%s) -> %s" (il_params ps) (il_typ t)) ); match prod.it with - | ProdD (bs, g, e, prems) -> + | ProdD (qs, g, e, prems) -> let envr' = local_env envr in - List.iter (valid_bind envr') bs; + List.iter (valid_param envr') qs; let _t' = valid_sym !envr' g in valid_exp !envr' e t; List.iter (valid_prem !envr') prems let infer_def envr d = match d.it with - | TypD (id, ps, _insts) -> + | TypD (x, ps, _insts) -> let envr' = local_env envr in List.iter (valid_param envr') ps; - envr := Env.bind_typ !envr id (ps, []) - | RelD (id, mixop, t, rules) -> + envr := Env.bind_typ !envr x (ps, []) + | RelD (x, mixop, t, rules) -> valid_typcase envr (mixop, ([], t, []), []); - envr := Env.bind_rel !envr id (mixop, t, rules) - | DecD (id, ps, t, clauses) -> + envr := Env.bind_rel !envr x (mixop, t, rules) + | DecD (x, ps, t, clauses) -> let envr' = local_env envr in List.iter (valid_param envr') ps; valid_typ !envr' t; - envr := Env.bind_def !envr id (ps, t, clauses) - | GramD (id, ps, t, prods) -> + envr := Env.bind_def !envr x (ps, t, clauses) + | GramD (x, ps, t, prods) -> let envr' = local_env envr in List.iter (valid_param envr') ps; valid_typ !envr' t; - envr := Env.bind_gram !envr id (ps, t, prods) + envr := Env.bind_gram !envr x (ps, t, prods) | _ -> () @@ -765,27 +754,27 @@ let rec valid_def envr d = Debug.(log_in "il.valid_def" line); Debug.(log_in_at "il.valid_def" d.at (fun _ -> il_def d)); match d.it with - | TypD (id, ps, insts) -> + | TypD (x, ps, insts) -> let envr' = local_env envr in List.iter (valid_param envr') ps; List.iter (valid_inst envr ps) insts; - envr := Env.bind_typ !envr id (ps, insts); - | RelD (id, mixop, t, rules) -> + envr := Env.bind_typ !envr x (ps, insts); + | RelD (x, mixop, t, rules) -> valid_typcase envr (mixop, ([], t, []), []); List.iter (valid_rule envr mixop t) rules; - envr := Env.bind_rel !envr id (mixop, t, rules) - | DecD (id, ps, t, clauses) -> + envr := Env.bind_rel !envr x (mixop, t, rules) + | DecD (x, ps, t, clauses) -> let envr' = local_env envr in List.iter (valid_param envr') ps; valid_typ !envr' t; - List.iter (valid_clause envr id ps t) clauses; - envr := Env.bind_def !envr id (ps, t, clauses) - | GramD (id, ps, t, prods) -> + List.iter (valid_clause envr x ps t) clauses; + envr := Env.bind_def !envr x (ps, t, clauses) + | GramD (x, ps, t, prods) -> let envr' = local_env envr in List.iter (valid_param envr') ps; valid_typ !envr' t; List.iter (valid_prod envr' ps t) prods; - envr := Env.bind_gram !envr id (ps, t, prods) + envr := Env.bind_gram !envr x (ps, t, prods) | RecD ds -> List.iter (infer_def envr) ds; List.iter (valid_def envr) ds; diff --git a/spectec/src/il2al/animate.ml b/spectec/src/il2al/animate.ml index 8d70ddf83..10dd24137 100644 --- a/spectec/src/il2al/animate.ml +++ b/spectec/src/il2al/animate.ml @@ -114,7 +114,7 @@ and recover_iterexp iterexp pr = Source.map (recover_iterexp' iterexp) pr (* is this assign premise a if-let? *) let is_cond_assign prem = match prem.it with - | LetPr ({it = CaseE (_, _); _}, _, _) -> true + | LetPr ({it = CaseE (_, _, _); _}, _, _) -> true | _ -> false (* is this assign premise encoded premise for popping one value? *) @@ -251,7 +251,7 @@ let is_not_lhs e = match e.it with (* Hack to handle RETURN_CALL_ADDR, eventually should be removed *) let is_atomic_lhs e = match e.it with -| CaseE ([{it = Atom "FUNC"; _}]::_, { it = CaseE ([[]; [{it = Arrow; _}]; []], { it = TupE [ { it = IterE (_, (ListN _, _)); _} ; { it = IterE (_, (ListN _, _)); _} ] ; _} ); _ }) -> true +| CaseE ([{it = Atom "FUNC"; _}]::_, _, { it = CaseE ([[]; [{it = Arrow; _}]; []], _, { it = TupE [ { it = IterE (_, (ListN _, _)); _} ; { it = IterE (_, (ListN _, _)); _} ] ; _} ); _ }) -> true | _ -> false (* Hack to handle ARRAY.INIT_DATA, eventually should be removed *) diff --git a/spectec/src/il2al/encode.ml b/spectec/src/il2al/encode.ml index f926d01cd..2eb6c532d 100644 --- a/spectec/src/il2al/encode.ml +++ b/spectec/src/il2al/encode.ml @@ -33,12 +33,12 @@ let is_case e = | _ -> false let case_of_case e = match e.it with - | CaseE (mixop, _) -> mixop + | CaseE (mixop, _, _) -> mixop | _ -> error e.at "cannot get case of case expression" let args_of_case e = match e.it with - | CaseE (_, { it = TupE exps; _ }) -> exps - | CaseE (_, exp) -> [ exp ] + | CaseE (_, _, { it = TupE exps; _ }) -> exps + | CaseE (_, _, exp) -> [ exp ] | _ -> error e.at "cannot get arguments of case expression" let is_context e = @@ -142,7 +142,7 @@ let encode_stack stack = let args', inner_stack = Lib.List.split_last args in let mixop', _ = Lib.List.split_last mixop in - let e1 = { e with it = CaseE (mixop', TupE args' $$ no_region % (mk_varT "")) } in + let e1 = { e with it = CaseE (mixop', [], TupE args' $$ no_region % (mk_varT "")) } in let e2 = (mk_varE "ctxt" "contextT") in let pr = LetPr (e1, e2, free_ids e1) $ e2.at in @@ -159,7 +159,7 @@ let encode_stack stack = (* Encode lhs *) let encode_lhs lhs = match lhs.it with - | CaseE ([[]; [{it = Semicolon; _}]; []], {it = TupE [z; stack]; _}) -> + | CaseE ([[]; [{it = Semicolon; _}]; []], [], {it = TupE [z; stack]; _}) -> let prem = LetPr (z, mk_varE "state" "stateT", free_ids z) $ z.at in prem :: encode_stack stack | _ -> diff --git a/spectec/src/il2al/free.ml b/spectec/src/il2al/free.ml index 5418adf19..2eb0d2341 100644 --- a/spectec/src/il2al/free.ml +++ b/spectec/src/il2al/free.ml @@ -26,8 +26,10 @@ let rec free_exp ignore_listN e = | VarE id -> free_varid id | BoolE _ | NumE _ | TextE _ -> empty | CvtE (e1, _, _) | UnE (_, _, e1) | LiftE e1 | LenE e1 | TheE e1 | SubE (e1, _, _) - | DotE (e1, _) | CaseE (_, e1) | ProjE (e1, _) | UncaseE (e1, _) -> + | ProjE (e1, _) -> f e1 + | DotE (e1, _, al) | CaseE (_, al, e1) | UncaseE (e1, _, al) -> + f e1 + free_list fa al | BinE (_, _, e1, e2) | CmpE (_, _, e1, e2) | IdxE (e1, e2) | CompE (e1, e2) | MemE (e1, e2) | CatE (e1, e2) -> free_list f [e1; e2] | SliceE (e1, e2, e3) -> free_list f [e1; e2; e3] @@ -42,7 +44,8 @@ let rec free_exp ignore_listN e = let bound, free2 = fi iter in diff free1 bound + free2 -and free_expfield ignore_listN (_, e) = free_exp ignore_listN e +and free_expfield ignore_listN (_, al, e) = + free_list (free_arg ignore_listN) al + free_exp ignore_listN e and free_arg ignore_listN arg = let f = free_exp ignore_listN in @@ -55,12 +58,13 @@ and free_arg ignore_listN arg = and free_path ignore_listN p = let f = free_exp ignore_listN in let fp = free_path ignore_listN in + let fa = free_arg ignore_listN in match p.it with | RootP -> empty | IdxP (p1, e) -> fp p1 + f e | SliceP (p1, e1, e2) -> fp p1 + f e1 + f e2 - | DotP (p1, _) -> fp p1 + | DotP (p1, _, al) -> fp p1 + free_list fa al and free_iterexp ignore_listN (iter, xes) = let f = free_exp ignore_listN in diff --git a/spectec/src/il2al/il2al_util.ml b/spectec/src/il2al/il2al_util.ml index 42423fc77..76bd09700 100644 --- a/spectec/src/il2al/il2al_util.ml +++ b/spectec/src/il2al/il2al_util.ml @@ -52,7 +52,7 @@ let replace_lhs lhs pr = let case_of_case e = match e.it with - | CaseE (mixop, _) -> mixop + | CaseE (mixop, _, _) -> mixop | _ -> error e.at (Printf.sprintf "expected a CaseE, but got `%s`" (Il.Print.string_of_exp e)) @@ -279,7 +279,7 @@ let is_val exp = | _ -> () ); match exp.it with - | CaseE (mixop, _) -> ( + | CaseE (mixop, _, _) -> ( match List.find_opt (Il.Eq.eq_mixop mixop) !val_mixops with | Some _ -> true | None -> false diff --git a/spectec/src/il2al/il_walk.ml b/spectec/src/il2al/il_walk.ml index 03532befc..02757fdaa 100644 --- a/spectec/src/il2al/il_walk.ml +++ b/spectec/src/il2al/il_walk.ml @@ -5,7 +5,7 @@ open Il.Ast type transformer = { transform_exp: exp -> exp; - transform_bind: bind -> bind; + transform_param: param -> param; transform_prem: prem -> prem; transform_iterexp: iterexp -> iterexp; } @@ -13,7 +13,7 @@ type transformer = { let id = Fun.id let base_transformer = { transform_exp = id; - transform_bind = id; + transform_param = id; transform_prem = id; transform_iterexp = id; } @@ -35,22 +35,22 @@ let rec transform_exp t e = | SliceE (e1, e2, e3) -> SliceE (t_exp e1, t_exp e2, t_exp e3) | UpdE (e1, p, e2) -> UpdE (t_exp e1, p, t_exp e2) | ExtE (e1, p, e2) -> ExtE (t_exp e1, p, t_exp e2) - | StrE efs -> StrE (List.map (fun (a, e) -> (a, t_exp e)) efs) - | DotE (e1, atom) -> DotE (t_exp e1, atom) + | StrE efs -> StrE (List.map (fun (a, as_, e) -> (a, List.map (transform_arg t) as_, t_exp e)) efs) + | DotE (e1, atom, as1) -> DotE (t_exp e1, atom, List.map (transform_arg t) as1) | CompE (e1, e2) -> CompE (t_exp e1, t_exp e2) | LenE e1 -> LenE (t_exp e1) | TupE es -> TupE ((List.map t_exp) es) | CallE (id, as1) -> CallE (id, List.map (transform_arg t) as1) | IterE (e1, iter) -> IterE (t_exp e1, transform_iterexp t iter) (* TODO iter *) | ProjE (e1, i) -> ProjE (t_exp e1, i) - | UncaseE (e1, op) -> UncaseE (t_exp e1, op) + | UncaseE (e1, op, as1) -> UncaseE (t_exp e1, op, List.map (transform_arg t) as1) | OptE eo -> OptE ((Option.map t_exp) eo) | TheE e1 -> TheE (t_exp e1) | ListE es -> ListE ((List.map t_exp) es) | LiftE e1 -> LiftE (t_exp e1) | CatE (e1, e2) -> CatE (t_exp e1, t_exp e2) | MemE (e1, e2) -> MemE (t_exp e1, t_exp e2) - | CaseE (mixop, e1) -> CaseE (mixop, t_exp e1) + | CaseE (mixop, as1, e1) -> CaseE (mixop, List.map (transform_arg t) as1, t_exp e1) | SubE (e1, _t1, t2) -> SubE (t_exp e1, _t1, t2) in f { e with it } @@ -78,20 +78,20 @@ and transform_prem t p = in f { p with it } -and transform_bind t b = - let f = t.transform_bind in - let it = match b.it with - | ExpB (id, typ) -> ExpB (id, typ) - | TypB id -> TypB id - | DefB (id, params, typ) -> DefB (id, params, typ) - | GramB (id, params, typ) -> GramB (id, params, typ) +and transform_param t p = + let f = t.transform_param in + let it = match p.it with + | ExpP (id, typ) -> ExpP (id, typ) + | TypP id -> TypP id + | DefP (id, params, typ) -> DefP (id, params, typ) + | GramP (id, params, typ) -> GramP (id, params, typ) in - f { b with it } + f { p with it } and transform_clause t c = { c with it = match c.it with | DefD (bs, args, e, ps) -> - DefD (List.map (transform_bind t) bs, List.map (transform_arg t) args, transform_exp t e, List.map (transform_prem t) ps) } + DefD (List.map (transform_param t) bs, List.map (transform_arg t) args, transform_exp t e, List.map (transform_prem t) ps) } (* For unification *) @@ -109,5 +109,5 @@ and transform_helper_def t hd = | (id, cs, partial) -> (id, List.map (transform_clause t) cs, partial) } and transform_rule t r = - let RuleD (id, binds, mixop, exp, prems) = r.it in - RuleD (id, binds, mixop, transform_exp t exp, List.map (transform_prem t) prems) $ r.at + let RuleD (id, params, mixop, exp, prems) = r.it in + RuleD (id, params, mixop, transform_exp t exp, List.map (transform_prem t) prems) $ r.at diff --git a/spectec/src/il2al/il_walk.mli b/spectec/src/il2al/il_walk.mli index 34752bf48..895b79436 100644 --- a/spectec/src/il2al/il_walk.mli +++ b/spectec/src/il2al/il_walk.mli @@ -3,7 +3,7 @@ open Def type transformer = { transform_exp: exp -> exp; - transform_bind: bind -> bind; + transform_param: param -> param; transform_prem: prem -> prem; transform_iterexp: iterexp -> iterexp; } diff --git a/spectec/src/il2al/translate.ml b/spectec/src/il2al/translate.ml index 62121c002..8ec8c5e36 100644 --- a/spectec/src/il2al/translate.ml +++ b/spectec/src/il2al/translate.ml @@ -35,7 +35,7 @@ let is_store: Il.exp -> bool = check_typ_of_exp "store" let is_frame: Il.exp -> bool = check_typ_of_exp "frame" let is_config: Il.exp -> bool = check_typ_of_exp "config" -let field t = Il.VarE ("_" $ Source.no_region) $$ Source.no_region % t, t +let field t = "_" $ Source.no_region, t let typ_store = Il.VarT ("store" $ Source.no_region, []) $ Source.no_region let typ_frame = Il.VarT ("frame" $ Source.no_region, []) $ Source.no_region let typ_state = Il.VarT ("state" $ Source.no_region, []) $ Source.no_region @@ -44,17 +44,17 @@ let typ_state_arg = Il.TupT [field typ_store; field typ_frame] $ Source.no_regio let split_config (exp: Il.exp): Il.exp * Il.exp = assert(is_config exp); match exp.it with - | Il.CaseE ([[]; [{it = Atom.Semicolon; _}]; []], {it = TupE [ e1; e2 ]; _}) + | Il.CaseE ([[]; [{it = Atom.Semicolon; _}]; []], _, {it = TupE [ e1; e2 ]; _}) when is_state e1 -> e1, e2 - | Il.CaseE ([[]; [{it = Atom.Semicolon; _}]; []], {it = TupE [ e1; e2 ]; _}) + | Il.CaseE ([[]; [{it = Atom.Semicolon; _}]; []], _, {it = TupE [ e1; e2 ]; _}) when is_frame e1 -> let store = Il.StrE [] $$ e1.at % typ_store in - let state = Il.CaseE ([[]; [Atom.Semicolon $$ e1.at % Atom.info ""]; []], Il.TupE [ store; e1 ] $$ e1.at % typ_state_arg) $$ e1.at % typ_state in + let state = Il.CaseE ([[]; [Atom.Semicolon $$ e1.at % Atom.info ""]; []], [], Il.TupE [ store; e1 ] $$ e1.at % typ_state_arg) $$ e1.at % typ_state in state, e2 - | Il.CaseE ([[]; [{it = Atom.Semicolon; _}]; []], {it = TupE [ e1; e2 ]; _}) + | Il.CaseE ([[]; [{it = Atom.Semicolon; _}]; []], _, {it = TupE [ e1; e2 ]; _}) when is_store e1 -> let frame = Il.StrE [] $$ e1.at % typ_frame in - let state = Il.CaseE ([[]; [Atom.Semicolon $$ e1.at % Atom.info ""]; []], Il.TupE [ e1; frame ] $$ e1.at % typ_state_arg) $$ e1.at % typ_state in + let state = Il.CaseE ([[]; [Atom.Semicolon $$ e1.at % Atom.info ""]; []], [], Il.TupE [ e1; frame ] $$ e1.at % typ_state_arg) $$ e1.at % typ_state in state, e2 | _ -> error exp.at (sprintf "can not recognize `%s` as a `config` expression" (Il.Print.string_of_exp exp)) @@ -62,7 +62,7 @@ let split_config (exp: Il.exp): Il.exp * Il.exp = let split_state (exp: Il.exp): Il.exp * Il.exp = assert(is_state exp); match exp.it with - | Il.CaseE ([[]; [{it = Atom.Semicolon; _}]; []], {it = TupE [ e1; e2 ]; _}) + | Il.CaseE ([[]; [{it = Atom.Semicolon; _}]; []], _, {it = TupE [ e1; e2 ]; _}) when is_store e1 && is_frame e2 -> e1, e2 | _ -> error exp.at (sprintf "can not recognize `%s` as a `state` expression" (Il.Print.string_of_exp exp)) @@ -87,8 +87,8 @@ let is_case e = | _ -> false let args_of_case e = match e.it with - | Il.CaseE (_, { it = Il.TupE exps; _ }) -> exps - | Il.CaseE (_, exp) -> [ exp ] + | Il.CaseE (_, _, { it = Il.TupE exps; _ }) -> exps + | Il.CaseE (_, _, exp) -> [ exp ] | _ -> error e.at (sprintf "cannot get arguments of case expression `%s`" (Il.Print.string_of_exp e)) let is_simple_separator = function @@ -146,7 +146,7 @@ let rec is_wasm_value e = (* TODO: use hint? *) match e.it with | Il.SubE (e, _, _) -> is_wasm_value e - | Il.CaseE ([{it = Atom id; _}]::_, _) when + | Il.CaseE ([{it = Atom id; _}]::_, _, _) when List.mem id [ "CONST"; "VCONST"; @@ -198,7 +198,7 @@ and translate_exp exp = | Il.IterE (inner_exp, iterexp) -> iterE (translate_exp inner_exp, translate_iterexp iterexp) ~at ~note (* property access *) - | Il.DotE (inner_exp, ({it = Atom _; _} as atom)) -> + | Il.DotE (inner_exp, ({it = Atom _; _} as atom), _) -> accE (translate_exp inner_exp, dotP atom) ~at ~note (* concatenation of records *) | Il.CompE (exp1, exp2) -> compE (translate_exp exp1, translate_exp exp2) ~at ~note @@ -237,7 +237,7 @@ and translate_exp exp = (* Record expression *) | Il.StrE expfields -> let f acc = function - | {it = Atom.Atom _; _} as atom, fieldexp -> + | {it = Atom.Atom _; _} as atom, _, fieldexp -> let expr = translate_exp fieldexp in Record.add atom expr acc | _ -> error_exp exp "AL record expression" @@ -245,7 +245,7 @@ and translate_exp exp = let record = List.fold_left f Record.empty expfields in strE record ~at ~note (* CaseE *) - | Il.CaseE (op, e) -> ( + | Il.CaseE (op, _, e) -> ( let exps = match e.it with | TupE exps -> exps @@ -267,7 +267,7 @@ and translate_exp exp = else error_exp exp "arity mismatch for CaseE mixop and args" ) - | Il.UncaseE (e, op) -> + | Il.UncaseE (e, op, _) -> (match op with | [ []; [] ] -> translate_exp e | _ -> yetE (Il.Print.string_of_exp exp) ~at ~note @@ -304,7 +304,7 @@ and translate_path path = | Il.RootP -> [] | Il.IdxP (p, e) -> (translate_path' p) @ [ idxP (translate_exp e) ~at ] | Il.SliceP (p, e1, e2) -> (translate_path' p) @ [ sliceP (translate_exp e1, translate_exp e2) ~at ] - | Il.DotP (p, ({it = Atom _; _} as atom)) -> + | Il.DotP (p, ({it = Atom _; _} as atom), _) -> (translate_path' p) @ [ dotP atom ~at ] | _ -> assert false in @@ -319,12 +319,12 @@ and translate_iterexp (iter, xes) = let insert_assert exp = let at = exp.at in match exp.it with - | Il.CaseE ([{it = Atom.Atom id; _}]::_, _) when List.mem id context_names -> + | Il.CaseE ([{it = Atom.Atom id; _}]::_, _, _) when List.mem id context_names -> assertI (contextKindE (atom_of_name id "evalctx") ~note:boolT) ~at:at | Il.IterE (_, (Il.ListN (e, None), _)) -> assertI (topValuesE (translate_exp e) ~at ~note:boolT) ~at:at | Il.IterE (_, (Il.List, _)) -> nopI () ~at:at - | Il.CaseE ([{it = Atom.Atom "CONST"; _}]::_, { it = Il.TupE (ty' :: _); _ }) -> + | Il.CaseE ([{it = Atom.Atom "CONST"; _}]::_, _, { it = Il.TupE (ty' :: _); _ }) -> assertI (topValueE (Some (translate_exp ty')) ~note:boolT) ~at:at | _ -> assertI (topValueE None ~note:boolT) ~at:at @@ -333,7 +333,7 @@ let cond_of_pop_value e = let at = e.at in let bt = boolT in match e.it with - (* | CaseE (op, [t; _]) -> + (* | CaseE (op, _, [t; _]) -> (match get_atom op with | Some {it = Atom.Atom "CONST"; _} -> topValueE (Some t) ~note:bt | Some {it = Atom.Atom "VCONST"; _} -> topValueE (Some t) ~note:bt @@ -425,7 +425,7 @@ let rec translate_rhs exp = let at = exp.at in match exp.it with (* Trap *) - | Il.CaseE ([{it = Atom "TRAP"; _}]::_, _) -> [ trapI () ~at ] + | Il.CaseE ([{it = Atom "TRAP"; _}]::_, _, _) -> [ trapI () ~at ] (* Context *) | _ when is_context exp -> translate_context_rhs exp (* Config *) @@ -1041,7 +1041,7 @@ let to_frame_instr r = let rec e_to_frame_instr e = match e with - | {it = Il.Ast.CaseE ([[]; [{it = Semicolon; _}]; []], {it = TupE [lhs; rhs]; _}); _} -> + | {it = Il.Ast.CaseE ([[]; [{it = Semicolon; _}]; []], _, {it = TupE [lhs; rhs]; _}); _} -> let i = e_to_frame_instr lhs in if i = [] then e_to_frame_instr rhs else i | {it = Il.Ast.VarE _; note = {it = Il.Ast.VarT ({it = "frame"; _}, _); _}; _} -> @@ -1101,7 +1101,7 @@ let translate_context ctx = let at = ctx.at in match ctx.it with - | Il.CaseE ([{it = Atom.Atom id; _} as atom]::_ as case, { it = Il.TupE args; _ }) when List.mem id context_names -> + | Il.CaseE ([{it = Atom.Atom id; _} as atom]::_ as case, _, { it = Il.TupE args; _ }) when List.mem id context_names -> let destruct = caseE (case, List.map translate_exp args) ~note:evalctxT ~at in [ letI (destruct, getCurContextE atom ~note:evalctxT) ~at:at; diff --git a/spectec/src/il2al/unify.ml b/spectec/src/il2al/unify.ml index 90b42f6e6..190005c3f 100644 --- a/spectec/src/il2al/unify.ml +++ b/spectec/src/il2al/unify.ml @@ -122,10 +122,10 @@ let rec overlap env e1 e2 = if eq_exp e1 e2 then e1 else UpdE (overlap env e1 e2, path1, overlap env e1' e2') |> replace_it | ExtE (e1, path1, e1'), ExtE (e2, path2, e2') when eq_path path1 path2 -> ExtE (overlap env e1 e2, path1, overlap env e1' e2') |> replace_it - | StrE efs1, StrE efs2 when List.map fst efs1 = List.map fst efs2 -> - StrE (List.map2 (fun (a1, e1) (_, e2) -> (a1, overlap env e1 e2)) efs1 efs2) |> replace_it - | DotE (e1, atom1), DotE (e2, atom2) when eq_atom atom1 atom2 -> - DotE (overlap env e1 e2, atom1) |> replace_it + | StrE efs1, StrE efs2 when List.map (fun (a, _, _) -> a) efs1 = List.map (fun (a, _, _) -> a) efs2 -> + StrE (List.map2 (fun (a1, as1, e1) (_, as2, e2) -> (a1, List.map2 (overlap_arg env) as1 as2, overlap env e1 e2)) efs1 efs2) |> replace_it + | DotE (e1, atom1, as1), DotE (e2, atom2, as2) when eq_atom atom1 atom2 -> + DotE (overlap env e1 e2, atom1, List.map2 (overlap_arg env) as1 as2) |> replace_it | CompE (e1, e1'), CompE (e2, e2') -> CompE (overlap env e1 e2, overlap env e1' e2') |> replace_it | LenE e1, LenE e2 -> @@ -138,8 +138,8 @@ let rec overlap env e1 e2 = if eq_exp e1 e2 then e1 else IterE (overlap env e1 e2, itere1) |> replace_it | ProjE (e1, i1), ProjE (e2, i2) when i1 = i2 -> ProjE (overlap env e1 e2, i1) |> replace_it - | UncaseE (e1, op1), UncaseE (e2, op2) when eq_mixop op1 op2 -> - UncaseE (overlap env e1 e2, op1) |> replace_it + | UncaseE (e1, op1, as1), UncaseE (e2, op2, as2) when eq_mixop op1 op2 -> + UncaseE (overlap env e1 e2, op1, List.map2 (overlap_arg env) as1 as2) |> replace_it | OptE (Some e1), OptE (Some e2) -> OptE (Some (overlap env e1 e2)) |> replace_it | TheE e1, TheE e2 -> @@ -152,8 +152,8 @@ let rec overlap env e1 e2 = if eq_exp e1 e2 then e1 else CatE (overlap env e1 e2, overlap env e1' e2') |> replace_it | MemE (e1, e1'), MemE (e2, e2') -> MemE (overlap env e1 e2, overlap env e1' e2') |> replace_it - | CaseE (mixop1, e1), CaseE (mixop2, e2) when eq_mixop mixop1 mixop2 -> - CaseE (mixop1, overlap env e1 e2) |> replace_it + | CaseE (mixop1, as1, e1), CaseE (mixop2, as2, e2) when eq_mixop mixop1 mixop2 -> + CaseE (mixop1, List.map2 (overlap_arg env) as1 as2, overlap env e1 e2) |> replace_it | SubE (e1, typ1, typ1'), SubE (e2, typ2, typ2') when eq_typ typ1 typ2 && eq_typ typ1' typ2' -> SubE (overlap env e1 e2, typ1, typ1') |> replace_it (* HARDCODE: Prevent vals overlapped into instr *) @@ -203,8 +203,8 @@ and overlap_typ env t1 t2 = if eq_typ t1 t2 then t1 else (match t1.it, t2.it with | VarT (id1, args1), VarT (id2, args2) when id1 = id2 -> VarT (id1, List.map2 (overlap_arg env) args1 args2) - | TupT ets1, TupT ets2 when List.for_all2 (fun (e1, _) (e2, _) -> eq_exp e1 e2) ets1 ets2 -> - TupT (List.map2 (fun (e1, t1) (_, t2) -> (e1, (overlap_typ env) t1 t2)) ets1 ets2) + | TupT xts1, TupT xts2 when List.for_all2 (fun (x1, _) (x2, _) -> eq_id x1 x2) xts1 xts2 -> + TupT (List.map2 (fun (x1, t1) (_, t2) -> (x1, (overlap_typ env) t1 t2)) xts1 xts2) | IterT (t1, iter1), IterT (t2, iter2) when eq_iter iter1 iter2 -> IterT (overlap_typ env t1 t2, iter1) | _ -> assert false (* Unreachable due to IL validation *) @@ -218,17 +218,14 @@ let rec collect_unified template e = if eq_exp template e then [], [] else | IterE ({ it = VarE id; _}, _) , _ when is_unified_id id.it -> [IfPr (CmpE (`EqOp, `BoolT, template, e) $$ e.at % (BoolT $ e.at)) $ e.at], - [ExpB (id, template.note) $ e.at] + [ExpP (id, template.note) $ e.at] | UnE (_, _, e1), UnE (_, _, e2) - | DotE (e1, _), DotE (e2, _) | LiftE e1, LiftE e2 | LenE e1, LenE e2 | IterE (e1, _), IterE (e2, _) | ProjE (e1, _), ProjE (e2, _) - | UncaseE (e1, _), UncaseE (e2, _) | OptE (Some e1), OptE (Some e2) | TheE e1, TheE e2 - | CaseE (_, e1), CaseE (_, e2) | SubE (e1, _, _), SubE (e2, _, _) -> collect_unified e1 e2 | BinE (_, _, e1, e1'), BinE (_, _, e2, e2') | CmpE (_, _, e1, e1'), CmpE (_, _, e2, e2') @@ -236,12 +233,15 @@ let rec collect_unified template e = if eq_exp template e then [], [] else | UpdE (e1, _, e1'), UpdE (e2, _, e2') | ExtE (e1, _, e1'), ExtE (e2, _, e2') | CompE (e1, e1'), CompE (e2, e2') - | CatE (e1, e1'), CatE (e2, e2') -> pairwise_concat (collect_unified e1 e2) (collect_unified e1' e2') + | CatE (e1, e1'), CatE (e2, e2') | MemE (e1, e1'), MemE (e2, e2') -> pairwise_concat (collect_unified e1 e2) (collect_unified e1' e2') + | DotE (e1, _, as1), DotE (e2, _, as2) + | UncaseE (e1, _, as1), UncaseE (e2, _, as2) + | CaseE (_, as1, e1), CaseE (_, as2, e2) -> pairwise_concat (collect_unified e1 e2) (collect_unified_args as1 as2) | SliceE (e1, e1', e1''), SliceE (e2, e2', e2'') -> pairwise_concat (pairwise_concat (collect_unified e1 e2) (collect_unified e1' e2')) (collect_unified e1'' e2'') | StrE efs1, StrE efs2 -> - List.fold_left2 (fun acc (_, e1) (_, e2) -> pairwise_concat acc (collect_unified e1 e2)) ([], []) efs1 efs2 + List.fold_left2 (fun acc (_, as1, e1) (_, as2, e2) -> pairwise_concat acc (pairwise_concat (collect_unified e1 e2) (collect_unified_args as1 as2))) ([], []) efs1 efs2 | TupE es1, TupE es2 | ListE es1, ListE es2 -> List.fold_left2 (fun acc e1 e2 -> pairwise_concat acc (collect_unified e1 e2)) ([], []) es1 es2 diff --git a/spectec/src/middlend/sideconditions.ml b/spectec/src/middlend/sideconditions.ml index 5e3fa7181..43a616b77 100644 --- a/spectec/src/middlend/sideconditions.ml +++ b/spectec/src/middlend/sideconditions.ml @@ -74,14 +74,11 @@ let rec t_exp env e : prem list = | VarE _ | BoolE _ | NumE _ | TextE _ | OptE None -> [] | UnE (_, _, exp) - | DotE (exp, _) | LenE exp | ProjE (exp, _) - | UncaseE (exp, _) | OptE (Some exp) | TheE exp | LiftE exp - | CaseE (_, exp) | CvtE (exp, _, _) | SubE (exp, _, _) -> t_exp env exp @@ -99,8 +96,13 @@ let rec t_exp env e : prem list = -> t_exp env exp1 @ t_path env path @ t_exp env exp2 | CallE (_, args) -> List.concat_map (t_arg env) args + | CaseE (_, args, exp) + | UncaseE (exp, _, args) + | DotE (exp, _, args) + -> List.concat_map (t_arg env) args @ t_exp env exp | StrE fields - -> List.concat_map (fun (_, e) -> t_exp env e) fields + -> List.concat_map (fun (_, args, exp) -> + List.concat_map (t_arg env) args @ t_exp env exp) fields | TupE es | ListE es -> List.concat_map (t_exp env) es | IterE (e1, iterexp) @@ -119,7 +121,7 @@ and t_path env path = match path.it with | RootP -> [] | IdxP (path, e) -> t_path env path @ t_exp env e | SliceP (path, e1, e2) -> t_path env path @ t_exp env e1 @ t_exp env e2 - | DotP (path, _) -> t_path env path + | DotP (path, _, args) -> t_path env path @ List.concat_map (t_arg env) args and t_arg env arg = match arg.it with | ExpA exp -> t_exp env exp @@ -167,16 +169,17 @@ let reduce_prems prems = prems |> Util.Lib.List.nub implies let t_rule' = function - | RuleD (id, binds, mixop, exp, prems) -> - let env = List.fold_left (fun env bind -> - match bind.it with - | ExpB (v, t) -> Env.add v.it t env - | TypB _ | DefB _ | GramB _ -> error bind.at "unexpected type argument in rule") Env.empty binds + | RuleD (id, params, mixop, exp, prems) -> + let env = List.fold_left (fun env param -> + match param.it with + | ExpP (v, t) -> Env.add v.it t env + | TypP _ | DefP _ | GramP _ -> error param.at "unexpected type argument in rule" + ) Env.empty params in let prems' = t_prems env prems in let extra_prems = t_exp env exp in let reduced_prems = reduce_prems (extra_prems @ prems') in - RuleD (id, binds, mixop, exp, reduced_prems) + RuleD (id, params, mixop, exp, reduced_prems) let t_rule x = { x with it = t_rule' x.it } diff --git a/spectec/src/middlend/sub.ml b/spectec/src/middlend/sub.ml index 97de47859..2c0180853 100644 --- a/spectec/src/middlend/sub.ml +++ b/spectec/src/middlend/sub.ml @@ -63,7 +63,7 @@ let arg_of_param param = | ExpP (id, t) -> ExpA (VarE id $$ param.at % t) $ param.at | TypP id -> TypA (VarT (id, []) $ param.at) $ param.at | DefP (id, _ps, _t) -> DefA id $ param.at - | GramP (id, _t) -> GramA (VarG (id, []) $ param.at) $ param.at + | GramP (id, _ps, _t) -> GramA (VarG (id, []) $ param.at) $ param.at let register_variant (env : env) (id : id) params (cases : typcase list) = if M.mem id.it env.typ then @@ -132,10 +132,10 @@ and t_deftyp' env = function | StructT typfields -> StructT (List.map (t_typfield env) typfields) | VariantT typcases -> VariantT (List.map (t_typcase env) typcases) -and t_typfield env (atom, (binds, t, prems), hints) = - (atom, (t_binds env binds, t_typ env t, t_prems env prems), hints) -and t_typcase env (atom, (binds, t, prems), hints) = - (atom, (t_binds env binds, t_typ env t, t_prems env prems), hints) +and t_typfield env (atom, (params, t, prems), hints) = + (atom, (t_params env params, t_typ env t, t_prems env prems), hints) +and t_typcase env (atom, (params, t, prems), hints) = + (atom, (t_params env params, t_typ env t, t_prems env prems), hints) and t_exp2 env x = { x with it = t_exp' env x.it; note = t_typ env x.note } @@ -148,8 +148,8 @@ and t_exp' env = function | SliceE (exp1, exp2, exp3) -> SliceE (t_exp env exp1, t_exp env exp2, t_exp env exp3) | UpdE (exp1, path, exp2) -> UpdE (t_exp env exp1, t_path env path, t_exp env exp2) | ExtE (exp1, path, exp2) -> ExtE (t_exp env exp1, t_path env path, t_exp env exp2) - | StrE fields -> StrE (List.map (fun (a, e) -> a, t_exp env e) fields) - | DotE (e, a) -> DotE (t_exp env e, a) + | StrE fields -> StrE (List.map (fun (a, args, e) -> a, t_args env args, t_exp env e) fields) + | DotE (e, a, args) -> DotE (t_exp env e, a, t_args env args) | CompE (exp1, exp2) -> CompE (t_exp env exp1, t_exp env exp2) | LiftE exp -> LiftE (t_exp env exp) | LenE exp -> LenE (t_exp env exp) @@ -157,14 +157,14 @@ and t_exp' env = function | CallE (a, args) -> CallE (a, t_args env args) | IterE (e, iterexp) -> IterE (t_exp env e, t_iterexp env iterexp) | ProjE (e, i) -> ProjE (t_exp env e, i) - | UncaseE (e, mixop) -> UncaseE (t_exp env e, mixop) + | UncaseE (e, mixop, args) -> UncaseE (t_exp env e, mixop, t_args env args) | OptE None -> OptE None | OptE (Some exp) -> OptE (Some exp) | TheE exp -> TheE exp | ListE es -> ListE (List.map (t_exp env) es) | CatE (exp1, exp2) -> CatE (t_exp env exp1, t_exp env exp2) | MemE (exp1, exp2) -> MemE (t_exp env exp1, t_exp env exp2) - | CaseE (mixop, e) -> CaseE (mixop, t_exp env e) + | CaseE (mixop, args, e) -> CaseE (mixop, t_args env args, t_exp env e) | CvtE (exp, t1, t2) -> CvtE (t_exp env exp, t1, t2) | SubE (e, t1, t2) -> SubE (e, t1, t2) @@ -179,7 +179,7 @@ and t_path' env = function | RootP -> RootP | IdxP (path, e) -> IdxP (t_path env path, t_exp env e) | SliceP (path, e1, e2) -> SliceP (t_path env path, t_exp env e1, t_exp env e2) - | DotP (path, a) -> DotP (t_path env path, a) + | DotP (path, a, args) -> DotP (t_path env path, a, t_args env args) and t_path env x = { x with it = t_path' env x.it; note = t_typ env x.note } @@ -202,24 +202,15 @@ and t_arg' env = function and t_arg env x = { x with it = t_arg' env x.it } -and t_bind' env = function - | ExpB (id, t) -> ExpB (id, t_typ env t) - | TypB id -> TypB id - | DefB (id, ps, t) -> DefB (id, t_params env ps, t_typ env t) - | GramB (id, ps, t) -> GramB (id, t_params env ps, t_typ env t) - -and t_bind env x = { x with it = t_bind' env x.it } - and t_param' env = function | ExpP (id, t) -> ExpP (id, t_typ env t) | TypP id -> TypP id | DefP (id, ps, t) -> DefP (id, t_params env ps, t_typ env t) - | GramP (id, t) -> GramP (id, t_typ env t) + | GramP (id, ps, t) -> GramP (id, t_params env ps, t_typ env t) and t_param env x = { x with it = t_param' env x.it } and t_args env = List.map (t_arg env) -and t_binds env = List.map (t_bind env) and t_params env = List.map (t_param env) and t_prem' env = function @@ -234,32 +225,32 @@ and t_prem env x = { x with it = t_prem' env x.it } and t_prems env = List.map (t_prem env) let t_clause' env = function - | DefD (binds, lhs, rhs, prems) -> - DefD (t_binds env binds, (*DO NOT intro calls on LHS: t_args env*) lhs, t_exp env rhs, t_prems env prems) + | DefD (params, lhs, rhs, prems) -> + DefD (t_params env params, (*DO NOT intro calls on LHS: t_args env*) lhs, t_exp env rhs, t_prems env prems) let t_clause env (clause : clause) = { clause with it = t_clause' env clause.it } let t_clauses env = List.map (t_clause env) let t_inst' env = function - | InstD (binds, args, deftyp) -> - InstD (t_binds env binds, (*DO NOT intro calls on LHS: t_args env*) args, t_deftyp env deftyp) + | InstD (params, args, deftyp) -> + InstD (t_params env params, (*DO NOT intro calls on LHS: t_args env*) args, t_deftyp env deftyp) let t_inst env (inst : inst) = { inst with it = t_inst' env inst.it } let t_insts env = List.map (t_inst env) let t_prod' env = function - | ProdD (binds, lhs, rhs, prems) -> - ProdD (t_binds env binds, t_sym env lhs, t_exp env rhs, t_prems env prems) + | ProdD (params, lhs, rhs, prems) -> + ProdD (t_params env params, t_sym env lhs, t_exp env rhs, t_prems env prems) let t_prod env (prod : prod) = { prod with it = t_prod' env prod.it } let t_prods env = List.map (t_prod env) let t_rule' env = function - | RuleD (id, binds, mixop, exp, prems) -> - RuleD (id, t_binds env binds, mixop, t_exp env exp, t_prems env prems) + | RuleD (id, params, mixop, exp, prems) -> + RuleD (id, t_params env params, mixop, t_exp env exp, t_prems env prems) let t_rule env x = { x with it = t_rule' env x.it } @@ -315,9 +306,9 @@ let rec rename_params s = function let id' = (id.it ^ "_2") $ id.at in (DefP (id', ps, t) $ at) :: rename_params (Il.Subst.add_defid s id id') params - | { it = GramP (id, t); at; _ } :: params -> + | { it = GramP (id, ps, t); at; _ } :: params -> let id' = (id.it ^ "_2") $ id.at in - (GramP (id', t) $ at) :: + (GramP (id', ps, t) $ at) :: rename_params (Il.Subst.add_gramid s id (VarG (id', []) $ id.at)) params let insert_injections env (def : def) : def list = @@ -332,25 +323,25 @@ let insert_injections env (def : def) : def list = let sub_ty = VarT (sub, List.map arg_of_param params_sub) $ no_region in let sup_ty = VarT (sup, List.map arg_of_param params_sup') $ no_region in let real_ty = VarT (real_id_sub, args_sub) $ no_region in - let clauses = List.map (fun (a, (_binds, arg_typ, _prems), _hints) -> + let clauses = List.map (fun (a, (_params, arg_typ, _prems), _hints) -> match arg_typ.it with | TupT ts -> - let binds = List.mapi (fun i (_, arg_typ_i) -> ExpB ("x" ^ string_of_int i $ no_region, arg_typ_i) $ no_region) ts in - let xes = List.map (fun bind -> - match bind.it with - | ExpB (x, arg_typ_i) -> VarE x $$ no_region % arg_typ_i - | TypB _ | DefB _ | GramB _ -> assert false) binds + let params = List.mapi (fun i (_, arg_typ_i) -> ExpP ("x" ^ string_of_int i $ no_region, arg_typ_i) $ no_region) ts in + let xes = List.map (fun param -> + match param.it with + | ExpP (x, arg_typ_i) -> VarE x $$ no_region % arg_typ_i + | TypP _ | DefP _ | GramP _ -> assert false) params in let xe = TupE xes $$ no_region % arg_typ in - DefD (binds, - [ExpA (CaseE (a, xe) $$ no_region % real_ty) $ no_region], - CaseE (a, xe) $$ no_region % sup_ty, []) $ no_region + DefD (params, + [ExpA (CaseE (a, [], xe) $$ no_region % real_ty) $ no_region], + CaseE (a, [], xe) $$ no_region % sup_ty, []) $ no_region | _ -> let x = "x" $ no_region in let xe = VarE x $$ no_region % arg_typ in - DefD ([ExpB (x, arg_typ) $ x.at], - [ExpA (CaseE (a, xe) $$ no_region % real_ty) $ no_region], - CaseE (a, xe) $$ no_region % sup_ty, []) $ no_region + DefD ([ExpP (x, arg_typ) $ x.at], + [ExpA (CaseE (a, [], xe) $$ no_region % real_ty) $ no_region], + CaseE (a, [], xe) $$ no_region % sup_ty, []) $ no_region ) cases_sub in DecD (name, params_sub @ params_sup' @ [ExpP ("_" $ no_region, sub_ty) $ no_region], sup_ty, clauses) $ no_region ) pairs diff --git a/spectec/src/middlend/totalize.ml b/spectec/src/middlend/totalize.ml index ea995d35d..b4495e351 100644 --- a/spectec/src/middlend/totalize.ml +++ b/spectec/src/middlend/totalize.ml @@ -67,10 +67,10 @@ and t_deftyp' env = function | StructT typfields -> StructT (List.map (t_typfield env) typfields) | VariantT typcases -> VariantT (List.map (t_typcase env) typcases) -and t_typfield env (atom, (binds, t, prems), hints) = - (atom, (t_binds env binds, t_typ env t, t_prems env prems), hints) -and t_typcase env (atom, (binds, t, prems), hints) = - (atom, (t_binds env binds, t_typ env t, t_prems env prems), hints) +and t_typfield env (atom, (params, t, prems), hints) = + (atom, (t_params env params, t_typ env t, t_prems env prems), hints) +and t_typcase env (atom, (params, t, prems), hints) = + (atom, (t_params env params, t_typ env t, t_prems env prems), hints) (* Expr traversal *) @@ -86,15 +86,15 @@ and t_exp' env = function | SliceE (exp1, exp2, exp3) -> SliceE (t_exp env exp1, t_exp env exp2, t_exp env exp3) | UpdE (exp1, path, exp2) -> UpdE (t_exp env exp1, t_path env path, t_exp env exp2) | ExtE (exp1, path, exp2) -> ExtE (t_exp env exp1, t_path env path, t_exp env exp2) - | StrE fields -> StrE (List.map (fun (a, e) -> a, t_exp env e) fields) - | DotE (e, a) -> DotE (t_exp env e, a) + | StrE fields -> StrE (List.map (fun (a, args, e) -> a, List.map (t_arg env) args, t_exp env e) fields) + | DotE (e, a, args) -> DotE (t_exp env e, a, List.map (t_arg env) args) | CompE (exp1, exp2) -> CompE (t_exp env exp1, t_exp env exp2) | LenE exp -> LenE (t_exp env exp) | TupE es -> TupE (List.map (t_exp env) es) | CallE (a, args) -> CallE (a, List.map (t_arg env) args) | IterE (e, iterexp) -> IterE (t_exp env e, t_iterexp env iterexp) | ProjE (e, i) -> ProjE (t_exp env e, i) - | UncaseE (e, mixop) -> UncaseE (t_exp env e, mixop) + | UncaseE (e, mixop, args) -> UncaseE (t_exp env e, mixop, List.map (t_arg env) args) | OptE None -> OptE None | OptE (Some exp) -> OptE (Some (t_exp env exp)) | TheE exp -> TheE (t_exp env exp) @@ -102,7 +102,7 @@ and t_exp' env = function | LiftE exp -> LiftE (t_exp env exp) | CatE (exp1, exp2) -> CatE (t_exp env exp1, t_exp env exp2) | MemE (exp1, exp2) -> MemE (t_exp env exp1, t_exp env exp2) - | CaseE (mixop, e) -> CaseE (mixop, t_exp env e) + | CaseE (mixop, args, e) -> CaseE (mixop, List.map (t_arg env) args, t_exp env e) | CvtE (exp, t1, t2) -> CvtE (t_exp env exp, t1, t2) | SubE (exp, t1, t2) -> SubE (t_exp env exp, t_typ env t1, t_typ env t2) @@ -117,7 +117,7 @@ and t_path' env = function | RootP -> RootP | IdxP (path, e) -> IdxP (t_path env path, t_exp env e) | SliceP (path, e1, e2) -> SliceP (t_path env path, t_exp env e1, t_exp env e2) - | DotP (path, a) -> DotP (t_path env path, a) + | DotP (path, a, args) -> DotP (t_path env path, a, List.map (t_arg env) args) and t_path env x = { x with it = t_path' env x.it; note = t_typ env x.note } @@ -140,24 +140,15 @@ and t_arg' env = function and t_arg env x = { x with it = t_arg' env x.it } -and t_bind' env = function - | ExpB (id, t) -> ExpB (id, t_typ env t) - | TypB id -> TypB id - | DefB (id, ps, t) -> DefB (id, t_params env ps, t_typ env t) - | GramB (id, ps, t) -> GramB (id, t_params env ps, t_typ env t) - -and t_bind env x = { x with it = t_bind' env x.it } - and t_param' env = function | ExpP (id, t) -> ExpP (id, t_typ env t) | TypP id -> TypP id | DefP (id, ps, t) -> DefP (id, t_params env ps, t_typ env t) - | GramP (id, t) -> GramP (id, t_typ env t) + | GramP (id, ps, t) -> GramP (id, t_params env ps, t_typ env t) and t_param env x = { x with it = t_param' env x.it } and t_args env = List.map (t_arg env) -and t_binds env = List.map (t_bind env) and t_params env = List.map (t_param env) and t_prem' env = function @@ -172,28 +163,28 @@ and t_prem env x = { x with it = t_prem' env x.it } and t_prems env = List.map (t_prem env) let t_clause' env = function - | DefD (binds, lhs, rhs, prems) -> - DefD (t_binds env binds, t_args env lhs, t_exp env rhs, t_prems env prems) + | DefD (params, lhs, rhs, prems) -> + DefD (t_params env params, t_args env lhs, t_exp env rhs, t_prems env prems) let t_clause env (clause : clause) = { clause with it = t_clause' env clause.it } let t_inst' env = function - | InstD (binds, args, deftyp) -> - InstD (t_binds env binds, t_args env args, t_deftyp env deftyp) + | InstD (params, args, deftyp) -> + InstD (t_params env params, t_args env args, t_deftyp env deftyp) let t_inst env (inst : inst) = { inst with it = t_inst' env inst.it } let t_insts env = List.map (t_inst env) let t_prod' env = function - | ProdD (binds, lhs, rhs, prems) -> - ProdD (t_binds env binds, t_sym env lhs, t_exp env rhs, t_prems env prems) + | ProdD (params, lhs, rhs, prems) -> + ProdD (t_params env params, t_sym env lhs, t_exp env rhs, t_prems env prems) let t_prod env (prod : prod) = { prod with it = t_prod' env prod.it } let t_rule' env = function - | RuleD (id, binds, mixop, exp, prems) -> - RuleD (id, t_binds env binds, mixop, t_exp env exp, t_prems env prems) + | RuleD (id, params, mixop, exp, prems) -> + RuleD (id, t_params env params, mixop, t_exp env exp, t_prems env prems) let t_rule env x = { x with it = t_rule' env x.it } @@ -206,19 +197,19 @@ let rec t_def' env = function if is_partial env id then let typ'' = IterT (typ', Opt) $ no_region in let clauses'' = List.map (fun clause -> match clause.it with - DefD (binds, lhs, rhs, prems) -> + DefD (params, lhs, rhs, prems) -> { clause with - it = DefD (t_binds env binds, lhs, OptE (Some rhs) $$ no_region % typ'', prems) } + it = DefD (t_params env params, lhs, OptE (Some rhs) $$ no_region % typ'', prems) } ) clauses' in - let binds, args = List.mapi (fun i param -> match param.it with + let params, args = List.mapi (fun i param -> match param.it with | ExpP (_, typI) -> let x = ("x" ^ string_of_int i) $ no_region in - [ExpB (x, typI) $ x.at], ExpA (VarE x $$ no_region % typI) $ no_region + [ExpP (x, typI) $ x.at], ExpA (VarE x $$ no_region % typI) $ no_region | TypP id -> [], TypA (VarT (id, []) $ no_region) $ no_region | DefP (id, _, _) -> [], DefA id $ no_region - | GramP (id, _) -> [], GramA (VarG (id, []) $ no_region) $ no_region + | GramP (id, _, _) -> [], GramA (VarG (id, []) $ no_region) $ no_region ) params' |> List.split in - let catch_all = DefD (List.concat binds, args, + let catch_all = DefD (List.concat params, args, OptE None $$ no_region % typ'', []) $ no_region in DecD (id, params', typ'', clauses'' @ [ catch_all ]) else diff --git a/spectec/src/middlend/unthe.ml b/spectec/src/middlend/unthe.ml index f1ec243a0..2d3d5c9a1 100644 --- a/spectec/src/middlend/unthe.ml +++ b/spectec/src/middlend/unthe.ml @@ -19,7 +19,7 @@ let error at msg = Error.error at "option projection" msg (* We pull out fresh variables and equating side conditions. *) -type eqn = bind * prem +type eqn = param * prem type eqns = eqn list (* Fresh name generation *) @@ -42,19 +42,19 @@ let update_iterexp_vars (sets : Il.Free.sets) ((iter, vs) : iterexp) : iterexp = | _ -> [List.hd vs] (* prevent empty iterator list *) in (iter, vs'') -(* If a bind and premise is generated under an iteration, wrap them accordingly *) +(* If a param and premise is generated under an iteration, wrap them accordingly *) let under_iterexp (iter, vs) eqns : iterexp * eqns = - let new_vs = List.map (fun (bind, _) -> - match bind.it with - | ExpB (v, t) -> + let new_vs = List.map (fun (param, _) -> + match param.it with + | ExpP (v, t) -> (v, VarE v $$ v.at % (IterT (t, match iter with Opt -> Opt | _ -> List) $ v.at)) - | TypB _ | DefB _ | GramB _ -> error bind.at "unexpected type binding" + | TypP _ | DefP _ | GramP _ -> error param.at "unexpected sort of parameter" ) eqns in - let eqns' = List.map2 (fun (bind, pr) (v, e) -> + let eqns' = List.map2 (fun (param, pr) (v, e) -> let iterexp' = update_iterexp_vars (Il.Free.free_prem pr) (iter, vs @ [(v, e)]) in let pr' = IterPr (pr, iterexp') $ no_region in - (ExpB (v, e.note) $ bind.at, pr') + (ExpP (v, e.note) $ param.at, pr') ) eqns new_vs in (iter, vs @ new_vs), eqns' @@ -104,11 +104,11 @@ let rec t_exp n e : eqns * exp = in let x = fresh_id n in let xe = VarE x $$ no_region % t in - let bind = ExpB (x, t) $ no_region in + let param = ExpP (x, t) $ no_region in let prem = IfPr ( CmpE (`EqOp, `BoolT, exp, OptE (Some xe) $$ no_region % ot) $$ no_region % (BoolT $ no_region) ) $ no_region in - eqns @ [(bind, prem)], xe + eqns @ [(param, prem)], xe | _ -> eqns, e' (* Traversal helpers *) @@ -117,6 +117,7 @@ and t_exp2 n = phrase t_exp' n and t_e n x k = unary t_exp n x k and t_ee n x k = binary t_exp t_exp n x k +and t_eas n x k = binary t_exp (fun n xs -> t_list t_arg n xs Fun.id) n x k and t_eee n x k = ternary t_exp t_exp t_exp n x k and t_epe n x k = ternary t_exp t_path t_exp n x k @@ -125,15 +126,15 @@ and t_exp' n e : eqns * exp' = | VarE _ | BoolE _ | NumE _ | TextE _ | OptE None -> [], e | UnE (uo, nto, exp) -> t_e n exp (fun exp' -> UnE (uo, nto, exp')) - | DotE (exp, a) -> t_e n exp (fun exp' -> DotE (exp', a)) + | DotE (exp, a, args) -> t_eas n (exp, args) (fun (exp', args') -> DotE (exp', a, args')) | LenE exp -> t_e n exp (fun exp' -> LenE exp') | CallE (f, args) -> t_list t_arg n args (fun args' -> CallE (f, args')) | ProjE (exp, i) -> t_e n exp (fun exp' -> ProjE (exp', i)) - | UncaseE (exp, mo) -> t_e n exp (fun exp' -> UncaseE (exp', mo)) + | UncaseE (exp, mo, args) -> t_eas n (exp, args) (fun (exp', args') -> UncaseE (exp', mo, args')) | OptE (Some exp) -> t_e n exp (fun exp' -> OptE (Some exp')) | TheE exp -> t_e n exp (fun exp' -> TheE exp') | LiftE exp -> t_e n exp (fun exp' -> LiftE exp') - | CaseE (mixop, exp) -> t_e n exp (fun exp' -> CaseE (mixop, exp')) + | CaseE (mixop, args, exp) -> t_eas n (exp, args) (fun (exp', args') -> CaseE (mixop, args', exp')) | CvtE (exp, a, b) -> t_e n exp (fun exp' -> CvtE (exp', a, b)) | SubE (exp, a, b) -> t_e n exp (fun exp' -> SubE (exp', a, b)) @@ -160,16 +161,16 @@ and t_exp' n e : eqns * exp' = let iterexp''' = update_iterexp_vars (Il.Free.free_exp e') iterexp'' in eqns1' @ eqns2, IterE (e', iterexp''') -and t_field n ((a, e) : expfield) = - unary t_exp n e (fun e' -> (a, e')) +and t_field n ((a, args, e) : expfield) = + binary (fun n xs -> t_list t_arg n xs Fun.id) t_exp n (args, e) (fun (args', e') -> (a, args', e')) and t_iterexp n iterexp = - binary t_iter t_iterbinds n iterexp Fun.id + binary t_iter t_iterparams n iterexp Fun.id -and t_iterbinds n binds = - t_list t_iterbind n binds Fun.id +and t_iterparams n params = + t_list t_iterparam n params Fun.id -and t_iterbind n (id, e) = +and t_iterparam n (id, e) = unary t_exp n e (fun e' -> (id, e')) and t_iter n iter = match iter with @@ -182,7 +183,7 @@ and t_path' n path = match path with | RootP -> [], path | IdxP (path, e) -> binary t_path t_exp n (path, e) (fun (path', e') -> IdxP (path', e')) | SliceP (path, e1, e2) -> ternary t_path t_exp t_exp n (path, e1, e2) (fun (path', e1', e2') -> SliceP (path', e1', e2')) - | DotP (path, a) -> unary t_path n path (fun path' -> DotP (path', a)) + | DotP (path, a, args) -> binary t_path (fun n xs -> t_list t_arg n xs Fun.id) n (path, args) (fun (path', args') -> DotP (path', a, args')) and t_arg n = phrase t_arg' n @@ -211,12 +212,12 @@ and t_prem' n prem : eqns * prem' = let t_prems n k = t_list t_prem n k (fun x -> x) let t_rule' = function - | RuleD (id, binds, mixop, exp, prems) -> + | RuleD (id, params, mixop, exp, prems) -> (* Counter for fresh variables *) let n = ref 0 in let eqns, (exp', prems') = binary t_exp t_prems n (exp, prems) (fun x -> x) in - let extra_binds, extra_prems = List.split eqns in - RuleD (id, binds @ extra_binds, mixop, exp', extra_prems @ prems') + let extra_params, extra_prems = List.split eqns in + RuleD (id, params @ extra_params, mixop, exp', extra_prems @ prems') let t_rule x = { x with it = t_rule' x.it } From eee7845deda4056a9ed055099a2cdfcf8b401e3f Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Tue, 18 Nov 2025 11:41:24 +0100 Subject: [PATCH 003/235] WIP --- .../wasm-3.0/6.3-text.modules.spectec | 6 +- spectec/src/al/al_util.ml | 10 +- spectec/src/al/ast.ml | 2 +- spectec/src/al/print.ml | 6 +- spectec/src/al/valid.ml | 9 +- spectec/src/backend-ast/print.ml | 13 +- .../src/backend-interpreter/interpreter.ml | 6 +- spectec/src/backend-prose/gen.ml | 33 +- spectec/src/backend-prose/print.ml | 4 +- spectec/src/backend-prose/prose_util.ml | 6 +- spectec/src/backend-prose/prose_util.mli | 2 +- spectec/src/backend-prose/render.ml | 37 +- spectec/src/el/free.mli | 1 + spectec/src/el/print.ml | 8 +- spectec/src/el/print.mli | 4 +- spectec/src/frontend/elab.ml | 1987 +++++++++-------- spectec/src/il/ast.ml | 16 +- spectec/src/il/debug.ml | 2 + spectec/src/il/free.ml | 29 +- spectec/src/il/free.mli | 2 + spectec/src/il/fresh.ml | 29 + spectec/src/il/fresh.mli | 2 + spectec/src/il/print.ml | 27 +- spectec/src/il/print.mli | 14 +- spectec/src/il/subst.ml | 13 +- spectec/src/il/valid.ml | 18 +- spectec/src/il2al/animate.ml | 5 +- spectec/src/il2al/encode.ml | 15 +- spectec/src/il2al/il2al_util.ml | 29 + spectec/src/il2al/postprocess.ml | 16 +- spectec/src/il2al/preprocess.ml | 2 +- spectec/src/il2al/translate.ml | 62 +- spectec/src/il2al/transpile.ml | 19 +- spectec/src/xl/mixop.ml | 73 +- 34 files changed, 1399 insertions(+), 1108 deletions(-) diff --git a/specification/wasm-3.0/6.3-text.modules.spectec b/specification/wasm-3.0/6.3-text.modules.spectec index 48e877ad8..3dac9343b 100644 --- a/specification/wasm-3.0/6.3-text.modules.spectec +++ b/specification/wasm-3.0/6.3-text.modules.spectec @@ -56,7 +56,7 @@ grammar Tlocal_(I)/plain : (local*, idctxt) = | ... grammar Tlocal_(I)/abbrev : (local*, idctxt) = - ... | "(" "local" t:Tvaltype_(I)* ")" == ("(" "local" t:Tvaltype_(I) ")")* + ... | "(" "local" Tvaltype_(I)* ")" == ("(" "local" Tvaltype_(I) ")")* ;; Data segments @@ -97,8 +97,8 @@ grammar Telem_(I)/plain : (elem, idctxt) = | ... grammar Telem_(I)/abbrev : (elem, idctxt) = ... - | "(" "elem" e':Toffset_(I) Tlist(Tfuncidx_(I)) ")" == - "(" "elem" e':Toffset_(I) "func" Tlist(Tfuncidx_(I)) ")" + | "(" "elem" Toffset_(I) Tlist(Tfuncidx_(I)) ")" == + "(" "elem" Toffset_(I) "func" Tlist(Tfuncidx_(I)) ")" grammar Telemlist_(I)/plain : (reftype, expr*) = | rt:Treftype_(I) e*:Tlist(Texpr_(I)) => (rt, e*) diff --git a/spectec/src/al/al_util.ml b/spectec/src/al/al_util.ml index 5d329c348..59bb296ed 100644 --- a/spectec/src/al/al_util.ml +++ b/spectec/src/al/al_util.ml @@ -298,17 +298,9 @@ let atom_of_atom' atom' typ = atom' $$ no_region % (Atom.info typ) let frame_atom = atom_of_name "FRAME_" "evalctx" let frameE ?(at = no) ~note (arity, e) = - let frame_mixop = [[frame_atom]; [atom_of_atom' Atom.LBrace "evalctx"]; [atom_of_atom' Atom.RBrace "evalctx"]] in + let frame_mixop = Mixop.(Seq [Atom frame_atom; Brack (atom_of_atom' Atom.LBrace "evalctx", Arg (), atom_of_atom' Atom.RBrace "evalctx")]) in caseE (frame_mixop, [arity; e]) ~at:at ~note:note - -let get_atom op = - match List.find_opt (fun al -> al <> []) op with - | Some al -> Some (List.hd al) - | None -> None - -let name_of_mixop = Mixop.name - (* Il Types *) (* name for tuple type *) diff --git a/spectec/src/al/ast.ml b/spectec/src/al/ast.ml index 1f51f2b4e..53ef0a2ee 100644 --- a/spectec/src/al/ast.ml +++ b/spectec/src/al/ast.ml @@ -4,7 +4,7 @@ open Xl (* Terminals *) type atom = Atom.atom -type mixop = Mixop.mixop +type mixop = unit Mixop.mixop (* Types *) diff --git a/spectec/src/al/print.ml b/spectec/src/al/print.ml index 19077d84c..4d8ff82fd 100644 --- a/spectec/src/al/print.ml +++ b/spectec/src/al/print.ml @@ -152,11 +152,11 @@ and string_of_expr expr = | VarE id -> id | SubE (id, _) -> id | IterE (e, ie) -> string_of_expr e ^ string_of_iterexp ie - | CaseE ([{ it=Atom.Atom ("CONST" | "VCONST"); _ }]::_tl, hd::tl) -> + | CaseE (Mixop.(Seq (Atom { it=Atom.Atom ("CONST" | "VCONST"); _ }::_tl)), hd::tl) -> "(" ^ string_of_expr hd ^ ".CONST " ^ string_of_exprs " " tl ^ ")" - | CaseE ([[ atom ]], []) -> string_of_atom atom + | CaseE (Mixop.Atom atom, []) -> string_of_atom atom | CaseE (op, el) -> - let op' = List.map (fun al -> String.concat "" (List.map string_of_atom al)) op in + let op' = List.map (fun al -> String.concat "" (List.map string_of_atom al)) (Mixop.flatten op) in (match op' with | [] -> "()" | _::tl when List.length tl != List.length el -> diff --git a/spectec/src/al/valid.ml b/spectec/src/al/valid.ml index a81650d7c..a202345b8 100644 --- a/spectec/src/al/valid.ml +++ b/spectec/src/al/valid.ml @@ -68,7 +68,10 @@ let il_env: IlEnv.t ref = ref IlEnv.empty let varT s = VarT (s $ no_region, []) $ no_region -let is_trivial_mixop = List.for_all (fun atoms -> List.length atoms = 0) +let rec is_trivial_mixop = function + | Mixop.Arg () -> true + | Mixop.Seq mixops -> List.for_all is_trivial_mixop mixops + | _ -> false (* Subtyping *) @@ -555,14 +558,14 @@ and valid_expr env (expr: expr) : unit = | CaseE (op, exprs) -> let is_evalctx_id id = let evalctx_ids = List.filter_map (fun (mixop, _, _) -> - let atom = mixop |> List.hd |> List.hd in + let atom = Mixop.flatten mixop |> List.hd |> List.hd in match atom.it with | Atom.Atom s -> Some s | _ -> None ) (get_typcases source evalctxT) in List.mem id evalctx_ids in - (match op with + (match Mixop.flatten op with | [[{ it=Atom id; _ }]] when is_evalctx_id id -> check_case source exprs (TupT [] $ no_region) | _ -> diff --git a/spectec/src/backend-ast/print.ml b/spectec/src/backend-ast/print.ml index 243f0e253..64fc50288 100644 --- a/spectec/src/backend-ast/print.ml +++ b/spectec/src/backend-ast/print.ml @@ -11,10 +11,7 @@ open Ast let bool b = Atom (Bool.to_string b) let text t = Atom ("\"" ^ String.escaped t ^ "\"") let id x = text x.it -let mixop op = - String.concat "%" (List.map ( - fun ats -> String.concat "" (List.map Atom.to_string ats)) op - ) |> text +let mixop op = text (Mixop.to_string op) let num = function | `Nat n -> Node ("nat", [Atom (Z.to_string n)]) @@ -90,7 +87,7 @@ and typbind (x, t) = Node ("bind", [id x; typ t]) and typfield (at, (ps, t, prs), _hints) = - Node ("field", mixop [[at]] :: List.map param ps @ typ t :: List.map prem prs) + Node ("field", mixop (Mixop.Atom at) :: List.map param ps @ typ t :: List.map prem prs) and typcase (op, (ps, t, prs), _hints) = Node ("case", mixop op :: List.map param ps @ typ t :: List.map prem prs) @@ -112,7 +109,7 @@ and exp e = | UpdE (e1, p, e2) -> Node ("upd", [exp e1; path p; exp e2]) | ExtE (e1, p, e2) -> Node ("ext", [exp e1; path p; exp e2]) | StrE efs -> Node ("struct", List.map expfield efs) - | DotE (e1, at, as_) -> Node ("dot", [exp e1; mixop [[at]]] @ List.map arg as_) + | DotE (e1, at, as_) -> Node ("dot", [exp e1; mixop (Mixop.Atom at)] @ List.map arg as_) | CompE (e1, e2) -> Node ("comp", [exp e1; exp e2]) | MemE (e1, e2) -> Node ("mem", [exp e1; exp e2]) | LenE e1 -> Node ("len", [exp e1]) @@ -131,14 +128,14 @@ and exp e = | SubE (e1, t1, t2) -> Node ("sub", [typ t1; typ t2; exp e1]) and expfield (at, as_, e) = - Node ("field", [mixop [[at]]] @ List.map arg as_ @ [exp e]) + Node ("field", [mixop (Mixop.Atom at)] @ List.map arg as_ @ [exp e]) and path p = match p.it with | RootP -> Atom "root" | IdxP (p1, e) -> Node ("idx", [path p1; exp e]) | SliceP (p1, e1, e2) -> Node ("slice", [path p1; exp e1; exp e2]) - | DotP (p1, at, as_) -> Node ("dot", [path p1; mixop [[at]]] @ List.map arg as_) + | DotP (p1, at, as_) -> Node ("dot", [path p1; mixop (Mixop.Atom at)] @ List.map arg as_) and iterexp (it, xes) = iter it :: List.map (fun (x, e) -> Node ("dom", [id x; exp e])) xes diff --git a/spectec/src/backend-interpreter/interpreter.ml b/spectec/src/backend-interpreter/interpreter.ml index cf790df3f..d069883cb 100644 --- a/spectec/src/backend-interpreter/interpreter.ml +++ b/spectec/src/backend-interpreter/interpreter.ml @@ -342,7 +342,7 @@ and eval_expr env expr = | [] -> eval_expr env e2 in eval_expr env e1 |> replace ps | CaseE (op, el) -> - (match (get_atom op) with + (match Mixop.head op with | Some a -> caseV (Print.string_of_atom a, List.map (eval_expr env) el) | None -> caseV ("", List.map (eval_expr env) el) ) @@ -480,7 +480,7 @@ and assign lhs rhs env = when List.length lhs_s = Array.length !rhs_s -> List.fold_right2 assign lhs_s (Array.to_list !rhs_s) env | CaseE (op, lhs_s), CaseV (rhs_tag, rhs_s) when List.length lhs_s = List.length rhs_s -> - (match get_atom op with + (match Mixop.head op with | Some lhs_tag when (Print.string_of_atom lhs_tag) = rhs_tag -> List.fold_right2 assign lhs_s rhs_s env | None when "" = rhs_tag -> @@ -600,7 +600,7 @@ and step_instr (fname: string) (ctx: AlContext.t) (env: value Env.t) (instr: ins ) | PopI e -> (match e.it with - | CaseE ([{it = Atom.Atom "FRAME_"; _}] :: _, [_; inner_e]) -> + | CaseE (op, [_; inner_e]) when (Option.get (Mixop.head op)).it = Atom.Atom "FRAME_" -> (match WasmContext.pop_context () with | CaseV ("FRAME_", [_; inner_v]), _, _ -> let new_env = assign inner_e inner_v env in diff --git a/spectec/src/backend-prose/gen.ml b/spectec/src/backend-prose/gen.ml index f9a5d05ea..9412078ab 100644 --- a/spectec/src/backend-prose/gen.ml +++ b/spectec/src/backend-prose/gen.ml @@ -38,7 +38,7 @@ let is_validation_helper_relation def = let is_validation_relation def = match def.it with | Ast.RelD (_, mixop, _, _) -> - List.exists (List.exists (fun atom -> atom.it = Atom.Turnstile)) mixop + List.exists (List.exists (fun atom -> atom.it = Atom.Turnstile)) (Mixop.flatten mixop) | _ -> false let extract_validation_il il = @@ -47,8 +47,6 @@ let extract_validation_il il = |> List.filter (fun rel -> is_validation_relation rel || is_validation_helper_relation rel) -let atomize atom' = atom' $$ no_region % (Atom.info "") - let rel_has_id id rel = match rel.it with | Ast.RelD (id', _, _, _) -> id.it = id'.it @@ -72,11 +70,11 @@ let swap = function `LtOp -> `GtOp | `GtOp -> `LtOp | `LeOp -> `GeOp | `GeOp -> CASE (?()) ~> () *) let recover_optional_singleton_constructor e = match e.it with - | Al.Ast.CaseE ([[atom]; [{it = Quest; _}]], [{it = OptE opt; _ }]) -> + | Al.Ast.CaseE (Mixop.(Seq [Atom atom; Arg ()]), [{it = OptE opt; _ }]) -> ( match opt with - | None -> Al.Ast.CaseE ([[]], []) - | Some _ -> Al.Ast.CaseE ([[atom]], []) + | Some _ -> Al.Ast.CaseE (Mixop.Atom atom, []) + | None -> Al.Ast.CaseE (Mixop.Seq [], []) ) |> (fun it -> {e with it}) | _ -> e @@ -84,10 +82,10 @@ let recover_optional_singleton_constructor e = let remove_empty_arrow_sub e = match e.it with | Al.Ast.CaseE ( - [[]; [{it = ArrowSub; _} as arrow]; []; []], + Mixop.(Infix (Arg (), ({it = ArrowSub; _} as arrow), Seq [Arg (); Arg ()])), [lhs; {it = ListE []; _}; rhs] ) -> - let it = Al.Ast.CaseE ([[];[{arrow with it = Arrow}];[]], [lhs; rhs]) in + let it = Al.Ast.CaseE (Mixop.(Infix (Arg (), {arrow with it = Arrow}, Arg ())), [lhs; rhs]) in {e with it} | _ -> e @@ -135,14 +133,14 @@ type rel_kind = let get_rel_kind def = let open Atom in - let valid_pattern = [[]; [atomize Turnstile]; [atomize Colon; atomize (Atom "OK")]] in - let valid_with_pattern = [[]; [atomize Turnstile]; [atomize Colon]; []] in - let match_pattern = [[]; [atomize Turnstile]; [atomize Sub]; []] in - let const_pattern = [[]; [atomize Turnstile]; [atomize (Atom "CONST")]] in - let valid_const_pattern = [[]; [atomize Turnstile]; [atomize Colon]; [atomize (Atom "CONST")]] in - let valid_with2_pattern = [[]; [atomize Turnstile]; [atomize Colon]; []; []] in - let defaultable_pattern = [[]; [atomize Turnstile]; [atomize (Atom "DEFAULTABLE")]] in - let nondefaultable_pattern = [[]; [atomize Turnstile]; [atomize (Atom "NONDEFAULTABLE")]] in + let valid_pattern = [[]; [Turnstile]; [Colon; Atom "OK"]] in + let valid_with_pattern = [[]; [Turnstile]; [Colon]; []] in + let match_pattern = [[]; [Turnstile]; [Sub]; []] in + let const_pattern = [[]; [Turnstile]; [Atom "CONST"]] in + let valid_const_pattern = [[]; [Turnstile]; [Colon]; [Atom "CONST"]] in + let valid_with2_pattern = [[]; [Turnstile]; [Colon]; []; []] in + let defaultable_pattern = [[]; [Turnstile]; [Atom "DEFAULTABLE"]] in + let nondefaultable_pattern = [[]; [Turnstile]; [Atom "NONDEFAULTABLE"]] in let has_instr_as_second typ = match typ.it with @@ -153,7 +151,8 @@ let get_rel_kind def = match def.it with | Ast.RelD (id, mixop, typ, _) -> - let match_mixop pattern = Mixop.(eq mixop pattern || eq mixop (List.tl pattern)) in + let mixop' = List.map (List.map Util.Source.it) (Mixop.flatten mixop) in + let match_mixop pattern = mixop' = pattern || mixop' = List.tl pattern in if match_mixop valid_pattern then ValidRel else if match_mixop valid_with_pattern then diff --git a/spectec/src/backend-prose/print.ml b/spectec/src/backend-prose/print.ml index 806f26958..c12405a63 100644 --- a/spectec/src/backend-prose/print.ml +++ b/spectec/src/backend-prose/print.ml @@ -136,13 +136,13 @@ and string_of_expr expr = | VarE id -> id | SubE (id, _) -> id | IterE (e, ie) -> string_of_expr e ^ string_of_iterexp ie - | CaseE ([{ it=Atom.Atom ("CONST" | "VCONST"); _ }]::_tl, hd::tl) -> + | CaseE (op, hd::tl) when Xl.Mixop.head op <> None && List.mem (Option.get (Xl.Mixop.head op)).it Xl.Atom.[Atom "CONST"; Atom "VCONST"] -> "(" ^ string_of_expr hd ^ ".CONST " ^ string_of_exprs " " tl ^ ")" | CaseE (op, el) -> (* Current rules for omitting parenthesis around a CaseE: 1) Has no argument 2) Is infix notation *) - let op' = List.map (string_of_list string_of_atom "" "" "") op in + let op' = List.map (string_of_list string_of_atom "" "" "") (Mixop.flatten op) in let el' = List.map string_of_expr el in let s = Prose_util.alternate op' el' diff --git a/spectec/src/backend-prose/prose_util.ml b/spectec/src/backend-prose/prose_util.ml index 263465b41..37e20e051 100644 --- a/spectec/src/backend-prose/prose_util.ml +++ b/spectec/src/backend-prose/prose_util.ml @@ -256,6 +256,8 @@ let apply_prose_hint hint args = ) template; |> String.concat "" +let mixop_name mixop = "`" ^ Xl.Atom.to_string (Option.get (Xl.Mixop.head mixop)) ^ "`" + let string_of_stack_prefix expr = let open Al.Ast in match expr.it with @@ -263,7 +265,7 @@ let string_of_stack_prefix expr = | VarE ("F" | "L") -> "" | _ when Il.Eq.eq_typ expr.note Al.Al_util.frameT -> "the :ref:`frame `" | CaseE (mixop, _) when Il.Eq.eq_typ expr.note Al.Al_util.evalctxT -> - let evalctx_name = Xl.Mixop.name (List.nth mixop 0) + let evalctx_name = mixop_name mixop |> fun s -> String.sub s 0 (String.length s - 1) |> String.lowercase_ascii in Printf.sprintf "the %s" evalctx_name @@ -315,7 +317,7 @@ let find_case_typ s a: El.Ast.typ = let extract_case_hint t mixop = let id1 = Il.Print.string_of_typ t in - let id2 = Xl.Mixop.name (List.nth mixop 0) in + let id2 = mixop_name mixop in let id = id1 ^ "." ^ id2 in match Map.find_opt id !(hintenv.prose_hints) with | Some (Some e, _) -> Some e diff --git a/spectec/src/backend-prose/prose_util.mli b/spectec/src/backend-prose/prose_util.mli index fe4a3c238..bb140ddbc 100644 --- a/spectec/src/backend-prose/prose_util.mli +++ b/spectec/src/backend-prose/prose_util.mli @@ -12,7 +12,7 @@ val alternate : 'a list -> 'a list -> 'a list val apply_prose_hint : string -> string list -> string val string_of_stack_prefix : Al.Ast.expr -> string val find_case_typ : string -> Xl.Atom.atom -> El.Ast.typ -val extract_case_hint : Il.Ast.typ -> Xl.Mixop.mixop -> El.Ast.exp option +val extract_case_hint : Il.Ast.typ -> 'a Xl.Mixop.mixop -> El.Ast.exp option val extract_call_hint : string -> El.Ast.exp option val is_allocxs : string -> bool val fill_hole : El.Ast.exp list -> El.Ast.exp -> El.Ast.exp diff --git a/spectec/src/backend-prose/render.ml b/spectec/src/backend-prose/render.ml index aa34ec1b2..9a6378f7e 100644 --- a/spectec/src/backend-prose/render.ml +++ b/spectec/src/backend-prose/render.ml @@ -119,8 +119,8 @@ let get_context_var e = | Al.Ast.CaseE (_, [_; {it = Al.Ast.VarE x; _} as e']) when x <> "_" -> e' (* HARDCODE for frame *) | Al.Ast.CaseE (mixop, _) -> let x = mixop - |> List.hd - |> List.hd + |> Mixop.head + |> Option.get |> Atom.to_string |> (fun s -> String.sub s 0 1) in @@ -370,17 +370,6 @@ and al_to_el_expr expr = 2) Is infix notation 3) Is bracketed -> render into BrackE 4) Is argument of CallE -> add first, omit later at CallE *) - let atom_of atom = atom $$ no_region % (Atom.info "") in - let find_brace_opt mixop = - let s = Mixop.to_string mixop in - let first = String.get s 1 in - let last = String.get s (String.length s - 2) in - match first, last with - | '(', ')' -> Some (atom_of Atom.LParen, atom_of Atom.RParen) - | '[', ']' -> Some (atom_of Atom.LBrack, atom_of Atom.RBrack) - | '{', '}' -> Some (atom_of Atom.LBrace, atom_of Atom.RBrace) - | _ -> None - in let elal = mixop_to_el_exprs op in let* elel = al_to_el_exprs el in let eles = case_to_el_exprs elal elel in @@ -389,8 +378,8 @@ and al_to_el_expr expr = | _, [] -> Some ele | None :: Some _ :: _, _ -> Some ele | _ -> - (match find_brace_opt op with - | Some (lbr, rbr) -> + (match op with + | Mixop.Brack (lbr, _, rbr) -> (* Split braces of el expressions *) let _, eles = Util.Lib.List.split_hd eles in let eles, _ = Util.Lib.List.split_last eles in @@ -402,7 +391,7 @@ and al_to_el_expr expr = | _ -> El.Ast.SeqE eles ) in Some (El.Ast.BrackE (lbr, eles $ no_region, rbr)) - | None -> Some (El.Ast.ParenE (ele $ no_region)) + | _ -> Some (El.Ast.ParenE (ele $ no_region)) ) ) ) @@ -438,7 +427,7 @@ and mixop_to_el_exprs op = | [ a ] -> Some((El.Ast.AtomE a) $ no_region) | _ -> None ) - op + (Mixop.flatten op) and al_to_el_exprs exprs = List.fold_left @@ -721,7 +710,7 @@ and render_expr' env expr = (render_math "=") (render_expr env erhs) | Al.Ast.CaseE (mixop, [ arity; arg ]) when Al.Valid.sub_typ expr.note Al.Al_util.evalctxT -> - let atom_name = mixop |> List.hd |> List.hd |> Atom.to_string in + let atom_name = mixop |> Mixop.head |> Option.get |> Atom.to_string in let context_var = get_context_var expr in let rendered_arity = match arity.it with @@ -1047,7 +1036,7 @@ let render_control_frame env expr = let open Al in match expr.it with | Ast.CaseE (mixop, [ arity; arg ]) -> - let atom = mixop |> List.hd |> List.hd in + let atom = mixop |> Mixop.head |> Option.get in let atom_name = Atom.to_string atom in let control_frame_name, rendered_arg = match atom_name with @@ -1322,7 +1311,7 @@ let rec render_instr env algoname index depth instr = ) | Al.Ast.PushI ({ it = Al.Ast.CaseE (mixop, _); _ } as e) when Al.Valid.sub_typ e.note Al.Al_util.evalctxT -> - let atom = mixop |> List.hd |> List.hd in + let atom = mixop |> Mixop.head |> Option.get in let context_var = get_context_var e in let context_var' = to_fresh_var env context_var in sprintf "%s Let %s be %s.\n\n%s%s Push the %s %s." @@ -1338,7 +1327,7 @@ let rec render_instr env algoname index depth instr = (render_stack_prefix e) (render_expr env e) | Al.Ast.PopI ({ it = Al.Ast.CaseE (mixop, _); _ } as expr) when Al.Valid.sub_typ expr.note Al.Al_util.evalctxT -> - let atom = mixop |> List.hd |> List.hd in + let atom = mixop |> Mixop.head |> Option.get in let control_frame_kind = render_atom env atom in sprintf "%s Pop the %s from the stack." (render_order index depth) @@ -1357,7 +1346,7 @@ let rec render_instr env algoname index depth instr = (match e1.it with (* NOTE: This assumes that the first argument of control frame is arity *) | Al.Ast.CaseE (mixop, [ arity; arg ] ) when Al.Valid.sub_typ e1.note Al.Al_util.evalctxT -> - let atom_name = mixop |> List.hd |> List.hd |> Atom.to_string in + let atom_name = mixop |> Mixop.head |> Option.get |> Atom.to_string in let context_var = get_context_var e1 in let rendered_let = sprintf "%s Let %s be %s." @@ -1437,7 +1426,7 @@ let rec render_instr env algoname index depth instr = sprintf "%s Return%s." (render_order index depth) (render_opt " " (render_expr env) "" e_opt) | Al.Ast.EnterI ({ it = Al.Ast.CaseE (mixop, _); _ } as e1, e2, il) -> - let atom = mixop |> List.hd |> List.hd in + let atom = mixop |> Mixop.head |> Option.get in let context_var = (get_context_var e1) in sprintf "%s Let %s be %s.\n\n%s%s Enter the block %s with the %s %s.%s" (render_order index depth) @@ -1500,7 +1489,7 @@ let render_atom_title env name params = | _ -> name.it in let name = name' $$ no_region % name.note in - let op = [name] :: List.init (List.length params) (fun _ -> []) in + let op = Mixop.(Seq (Atom name :: List.init (List.length params) (fun _ -> Arg ()))) in let params = List.filter_map (fun a -> match a.it with Al.Ast.ExpA e -> Some e | _ -> None) params in let expr = Al.Al_util.caseE (op, params) ~at:no_region ~note:Al.Al_util.no_note in match al_to_el_expr expr with diff --git a/spectec/src/el/free.mli b/spectec/src/el/free.mli index 650d4fe1d..a3c0c5758 100644 --- a/spectec/src/el/free.mli +++ b/spectec/src/el/free.mli @@ -42,6 +42,7 @@ val free_def : def -> sets (this case is to handle function inverses) This is a pragmatic criterium, intended only for sanity checks. *) +val det_typ : typ -> sets val det_exp : exp -> sets val det_sym : sym -> sets val det_prems : prem nl_list -> sets diff --git a/spectec/src/el/print.ml b/spectec/src/el/print.ml index 37252b052..629507dc0 100644 --- a/spectec/src/el/print.ml +++ b/spectec/src/el/print.ml @@ -69,7 +69,7 @@ let rec string_of_iter iter = and string_of_numtyp = Num.string_of_typ -and string_of_typ ?(short=false) t = +and string_of_typ ?(short = false) t = match t.it with | VarT (id, args) -> string_of_typid id ^ string_of_args args | BoolT -> "bool" @@ -120,17 +120,17 @@ and string_of_typ ?(short=false) t = and string_of_typs sep ts = concat sep (List.map string_of_typ ts) -and string_of_typfield ?(short=false) (atom, (t, prems), _hints) = +and string_of_typfield ?(short = false) (atom, (t, prems), _hints) = string_of_atom atom ^ " " ^ string_of_typ t ^ if short && prems <> [] then " -- .." else concat "" (map_filter_nl_list (prefix "\n -- " string_of_prem) prems) -and string_of_typcase ?(short=false) (_atom, (t, prems), _hints) = +and string_of_typcase ?(short = false) (_atom, (t, prems), _hints) = string_of_typ t ^ if short && prems <> [] then " -- .." else concat "" (map_filter_nl_list (prefix "\n -- " string_of_prem) prems) -and string_of_typcon ?(short=false) ((t, prems), _hints) = +and string_of_typcon ?(short = false) ((t, prems), _hints) = string_of_typ t ^ if short && prems <> [] then " -- .." else concat "" (map_filter_nl_list (prefix "\n -- " string_of_prem) prems) diff --git a/spectec/src/el/print.mli b/spectec/src/el/print.mli index 72e872d84..114685753 100644 --- a/spectec/src/el/print.mli +++ b/spectec/src/el/print.mli @@ -5,8 +5,8 @@ val string_of_unop : unop -> string val string_of_binop : binop -> string val string_of_cmpop : cmpop -> string val string_of_iter : iter -> string -val string_of_typ : ?short:bool -> typ -> string -val string_of_typfield : ?short:bool -> typfield -> string +val string_of_typ : ?short: bool -> typ -> string +val string_of_typfield : ?short: bool -> typfield -> string val string_of_exp : exp -> string val string_of_exps : string -> exp list -> string val string_of_expfield : expfield -> string diff --git a/spectec/src/frontend/elab.ml b/spectec/src/frontend/elab.ml index 0009e86aa..eb1cebf66 100644 --- a/spectec/src/frontend/elab.ml +++ b/spectec/src/frontend/elab.ml @@ -6,7 +6,7 @@ open Ast open Convert open Print -module Il = struct include Il include Ast end +module Il = struct include Il include Ast include Print end module Set = Free.Set module Map = Map.Make (String) @@ -23,7 +23,8 @@ exception Error = Error.Error let error at msg = Error.error at "type" msg let error_atom at atom t msg = - error at (msg ^ " `" ^ string_of_atom atom ^ "` in type `" ^ string_of_typ ~short:true t ^ "`") + error at (msg ^ " `" ^ string_of_atom atom ^ + "` in type `" ^ Il.string_of_typ t ^ "`") let error_id id msg = error id.at (msg ^ " `" ^ id.it ^ "`") @@ -31,8 +32,6 @@ let error_id id msg = (* Helpers *) -let wild_exp t' = Il.VarE ("_" $ t'.at) $$ t'.at % t' - let unparen_exp e = match e.it with | ParenE e1 -> e1 @@ -44,6 +43,11 @@ let unseq_exp e = | SeqE es -> es | _ -> [e] +let untup_typ' t' = + match t'.it with + | Il.TupT xts' -> List.map snd xts' + | _ -> [t'] + let tup_typ' ts' at = match ts' with | [t'] -> t' @@ -76,17 +80,16 @@ let tup_typ_bind' es' ts' at = | _, _ -> assert false in Il.TupT (combine es' ts' Il.Subst.empty) $ at +let tup_exp_bind' es' at = + Il.TupE es' $$ (at, tup_typ' (List.map note es') at) + let tup_exp' es' at = match es' with | [e'] -> e' - | _ -> Il.TupE es' $$ (at, tup_typ' (List.map note es') at) - -let tup_exp_bind' es' at = - let ts' = List.map note es' in - Il.TupE es' $$ (at, tup_typ_bind' (List.map wild_exp ts') ts' at) + | _ -> tup_exp_bind' es' at let lift_exp' e' iter' = - if iter' = Opt then + if iter' = Il.Opt then Il.OptE (Some e') else Il.ListE [e'] @@ -99,19 +102,67 @@ let cat_exp' e1' e2' = | _ -> Il.CatE (e1', e2') +(* Notation *) + +type notation = Il.typ Mixop.mixop + + +let rec subst_notation s not = + let open Mixop in + match not with + | Arg t -> Arg (Il.Subst.subst_typ s t) + | Seq nots -> Seq (List.map (subst_notation s) nots) + | Atom at -> Atom at + | Brack (at1, not, at2) -> Brack (at1, subst_notation s not, at2) + | Infix (not1, at, not2) -> + Infix (subst_notation s not1, at, subst_notation s not2) + +let rec apply_notation' ts not = + let open Mixop in + match not with + | Arg () -> List.tl ts, Arg (List.hd ts) + | Seq nots -> + let ts', nots' = List.fold_left_map apply_notation' ts nots in + ts', Seq nots' + | Atom at -> ts, Atom at + | Brack (at1, not, at2) -> + let ts', not' = apply_notation' ts not in + ts', Brack (at1, not', at2) + | Infix (not1, at, not2) -> + let ts', not1' = apply_notation' ts not1 in + let ts'', not2' = apply_notation' ts' not2 in + ts'', Infix (not1', at, not2') + +let apply_notation not ts = + let ts', not' = apply_notation' ts not in + assert (ts' = []); + not' + +let rec string_of_notation = function + | Mixop.Arg t -> Il.string_of_typ t + | Mixop.Seq nots -> + "{" ^ String.concat " " (List.map string_of_notation nots) ^ "}" + | Mixop.Atom atom -> string_of_atom atom + | Mixop.Brack (l, not, r) -> + "`" ^ string_of_atom l ^ string_of_notation not ^ string_of_atom r + | Mixop.Infix (not1, atom, not2) -> + string_of_notation not1 ^ " " ^ string_of_atom atom ^ " " ^ + string_of_notation not2 + + (* Environment *) type kind = - | Transp (* alias types, notation types *) - | Opaque (* structures or variants, type parameter *) - | Defined of typ * id list * Il.deftyp - | Family of (arg list * typ * Il.inst) list (* family of types *) + | Transp (* forward alias types or notation types *) + | Opaque (* forward structures or variants, type parameter *) + | Defined of Il.deftyp * id list * dots + | Family of Il.inst list (* family of types *) -type var_typ = typ -type typ_typ = param list * kind -type gram_typ = param list * typ * gram option * (id * Il.prod) list -type rel_typ = typ * (id * Il.rule) list -type def_typ = param list * typ * (def * Il.clause) list +type var_typ = Il.typ +type typ_typ = Il.param list * kind +type gram_typ = Il.param list * Il.typ * gram option * (id * Il.prod) list +type rel_typ = Il.typ * (id * Il.rule) list +type def_typ = Il.param list * Il.typ * (def * Il.clause) list type 'a env' = (region * 'a) Map.t type env = @@ -127,12 +178,12 @@ type env = let new_env () = { gvars = Map.empty - |> Map.add "bool" (no_region, BoolT $ no_region) - |> Map.add "nat" (no_region, NumT `NatT $ no_region) - |> Map.add "int" (no_region, NumT `IntT $ no_region) - |> Map.add "rat" (no_region, NumT `RatT $ no_region) - |> Map.add "real" (no_region, NumT `RealT $ no_region) - |> Map.add "text" (no_region, TextT $ no_region); + |> Map.add "bool" (no_region, Il.BoolT $ no_region) + |> Map.add "nat" (no_region, Il.NumT `NatT $ no_region) + |> Map.add "int" (no_region, Il.NumT `IntT $ no_region) + |> Map.add "rat" (no_region, Il.NumT `RatT $ no_region) + |> Map.add "real" (no_region, Il.NumT `RealT $ no_region) + |> Map.add "text" (no_region, Il.TextT $ no_region); vars = Map.empty; typs = Map.empty; (* @@ -182,13 +233,19 @@ let find_field fs atom at t = | Some (_, x, _) -> x | None -> error_atom at atom t "unbound field" -let find_case cases atom at t = - match List.find_opt (fun (atom', _, _) -> Atom.eq atom' atom) cases with +let find_case cs atom at t = + match List.find_opt + (function ((atom'::_)::_, _, _) -> Atom.eq atom' atom | _ -> false) cs + with | Some (_, x, _) -> x | None -> error_atom at atom t "unknown case" let find_case_sub cases atom at t = - match List.find_opt (fun (atom', _, _) -> Atom.eq atom' atom || Atom.sub atom' atom) cases with + match List.find_opt + (function ((atom'::_)::_, _, _) -> Atom.(eq atom' atom || sub atom' atom) + | _ -> false + ) cases + with | Some (_, x, _) -> x | None -> error_atom at atom t "unknown case" @@ -202,35 +259,52 @@ let bound_env env = gramid = bound_env' env.grams; } +let bind_quant env q = + match q.it with + | Il.ExpP (x, t) -> env.vars <- bind "variable" env.vars x t + | Il.TypP x -> env.typs <- bind "syntax type" env.typs x ([], Opaque) + | Il.DefP (x, ps, t) -> env.defs <- bind "definition" env.defs x (ps, t, []) + | Il.GramP (x, ps, t) -> env.grams <- bind "grammar" env.grams x (ps, t, None, []) + + let vars env = Map.fold (fun id (at, _) ids -> (id $ at)::ids) env.vars [] -let to_eval_var (_at, t) = t +let il_arg_of_param p = + (match p.it with + | Il.ExpP (id, t) -> Il.ExpA (Il.VarE id $$ id.at % t) + | Il.TypP id -> Il.TypA (Il.VarT (id, []) $ id.at) + | Il.DefP (id, _, _) -> Il.DefA id + | Il.GramP (id, _, _) -> Il.GramA (Il.VarG (id, []) $ id.at) + ) $ p.at -let to_eval_typ id (_at, (ps, k)) = +let il_args_of_params = List.map il_arg_of_param + +let to_il_var (_at, t) = t +let to_il_def (_at, (ps, t, clauses)) = (ps, t, List.map snd clauses) +let to_il_gram (_at, (ps, t, _, prods)) = (ps, t, List.map snd prods) + +let to_il_typ id (at, (ps, k)) = match k with - | Opaque | Transp -> - let args' = List.map Convert.arg_of_param ps in - [(args', VarT (id $ no_region, args') $ no_region)] - | Defined (t, _ids, _dt') -> - [(List.map Convert.arg_of_param ps, t)] - | Family insts -> - List.map (fun (args, t, _inst') -> (args, t)) insts - -let to_eval_def (_at, (_ps, _t, clauses)) = - List.map (fun (d, _) -> - match d.it with - | DefD (_id, args, e, prems) -> (args, e, Convert.filter_nl prems) - | _ -> assert false - ) clauses + | Opaque | Transp -> ps, [] + | Family insts -> ps, insts + | Defined (dt, _, _) -> + ps, [Il.InstD ([], List.map il_arg_of_param ps, dt) $ dt.at] -let to_eval_env env = +let to_il_env env = (* Need to include gvars, since matching can encounter implicit vars *) - let gvars = Map.map to_eval_var env.gvars in - let vars = Map.map to_eval_var env.vars in - let typs = Map.mapi to_eval_typ env.typs in - let defs = Map.map to_eval_def env.defs in - let grams = Map.map ignore env.grams in - Eval.{vars = Map.union (fun _ _ t -> Some t) gvars vars; typs; defs; grams} + let gvars = Map.map to_il_var env.gvars in + let vars = Map.map to_il_var env.vars in + let typs = Map.mapi to_il_typ env.typs in + let defs = Map.map to_il_def env.defs in + let grams = Map.map to_il_gram env.grams in + Il.Env.{ + vars = Map.union (fun _ _ t -> Some t) gvars vars; + typs; + defs; + rels = Map.empty; + grams; + } + let valid_tid id = id.it <> "" @@ -260,7 +334,7 @@ let nest at t r = match r with | Ok _ -> r | Fail traces -> - Fail [Trace (at, "cannot parse expression as `" ^ string_of_typ ~short:true t ^ "`", traces)] + Fail [Trace (at, "cannot parse expression as `" ^ Il.string_of_typ t ^ "`", traces)] let rec map_attempt f = function | [] -> Ok [] @@ -279,7 +353,7 @@ let fail at msg = Fail [Trace (at, msg, [])] let fail_silent = Fail [] let fail_atom at atom t msg = - fail at (msg ^ " `" ^ string_of_atom atom ^ "` in type `" ^ string_of_typ ~short:true t ^ "`") + fail at (msg ^ " `" ^ string_of_atom atom ^ "` in type `" ^ Il.string_of_typ t ^ "`") let fail_infer at construct = fail at ("cannot infer type of " ^ construct) @@ -310,9 +384,9 @@ let attempt f x = (* More Errors *) let typ_string env t = - let t' = Eval.reduce_typ (to_eval_env env) t in - let s = string_of_typ ~short:true t in - let s' = string_of_typ ~short:true t' in + let t' = Il.Eval.reduce_typ (to_il_env env) t in + let s = Il.string_of_typ t in + let s' = Il.string_of_typ t' in if s = s' then "`" ^ s ^ "`" else @@ -325,6 +399,9 @@ let msg_typ2 env phrase t1 t2 reason = phrase ^ "'s type " ^ typ_string env t1 ^ " does not match type " ^ typ_string env t2 ^ reason +let msg_not _env phrase not = + phrase ^ " does not match notation " ^ string_of_notation not + let error_typ env at phrase t = error at (msg_typ env phrase t) @@ -337,18 +414,23 @@ let fail_typ env at phrase t = let fail_typ2 env at phrase t1 t2 reason = fail at (msg_typ2 env phrase t1 t2 reason) +let fail_not env at phrase not = + fail at (msg_not env phrase not) + + type direction = Infer | Check let fail_dir_typ env at phrase dir t expected = match dir with | Check -> fail_typ env at phrase t | Infer -> - fail at (phrase ^ "'s type `" ^ string_of_typ ~short:true t ^ "`" ^ + fail at (phrase ^ "'s type " ^ typ_string env t ^ " does not match type " ^ expected) (* Type Accessors *) +(* let rec arg_subst s ps args = match ps, args with | [], [] -> s @@ -373,7 +455,7 @@ let aliased_inst inst' = aliased dt' (* TODO(4, rossberg): replace with reduce_typ *) -let as_defined_typid' env id args at : typ' * [`Alias | `NoAlias] = +let as_defined_typid' env x as' at : Il.deftyp' = match find "syntax type" env.typs (strip_var_suffix id) with | ps, Defined (t, _ids, dt') -> let t' = if ps = [] then t else (* optimization *) @@ -399,20 +481,44 @@ let as_defined_typid' env id args at : typ' * [`Alias | `NoAlias] = | exception _ -> lookup insts' (* assume coherent matches *) (* error at "cannot reduce type family application" *) in lookup insts +*) -(* Only expand aliases *) -let rec expand' env = function - | VarT (id, args) as t' -> - (match as_defined_typid' env id args id.at with - | t1', `Alias -> expand' env t1' - | _, `NoAlias -> t' - | exception Error _ -> t' + +(* TODO(2, rossberg): avoid repeated env conversion *) +let expand env t : Il.typ' = (Il.Eval.reduce_typ (to_il_env env) t).it + +let expand_def env t : Il.deftyp' * dots = + match expand env t with + | Il.VarT (x, as') -> + let x' = strip_var_suffix x in + let _ps, k = find "syntax type" env.typs x' in + (Il.Eval.reduce_typdef (to_il_env env) (Il.VarT (x', as') $ x.at)).it, + (match k with Defined (_, _, dots) -> dots | _ -> NoDots) + | t' -> Il.AliasT (t' $ t.at), NoDots + +let expand_notation env t = + match expand env t with + | Il.VarT (x, as') as t' -> + let x' = strip_var_suffix x in + (match find "syntax type" env.typs x' with + | ps, Defined ({it = Il.VariantT [tc]; _}, _, _) -> + let as_ = List.map il_arg_of_param ps in + Il.Eval.(match_list match_arg (to_il_env env) Il.Subst.empty as' as_) |> + Option.map (fun s -> + let mixop, (qs, t, _prems), _ = Il.Subst.subst_typcase s tc in + qs, t, mixop, apply_notation mixop (untup_typ' t) + ) + | _, _ -> None ) - | ParenT t -> expand' env t.it - | t' -> t' + | _ -> None + +let expand_id env t = + match expand env t with + | Il.VarT (id, _) -> id + | _ -> "" $ no_region -let expand env t = expand' env t.it +(* (* Expand all but the last alias. TODO(4, rossberg): remove *) exception Last let rec expand_nondef' env t = @@ -430,22 +536,17 @@ let expand_nondef env t = try expand_nondef' env t with Last -> t (* Expand definitions *) let expand_def env t = - match expand' env t.it with - | VarT (id, args) as t' -> + match (Il.reduce_typ (to_il_env env) t).it with + | Il.VarT (x, as_) as t' -> (match as_defined_typid' env id args id.at with | t1', _ -> t1' | exception Error _ -> t' ) | t' -> t' -let expand_id env t = - match (expand_nondef env t).it with - | VarT (id, _) -> strip_var_suffix id - | _ -> "" $ no_region - let rec expand_notation env t = match expand env t with - | VarT (id, args) as t' -> + | Il.VarT (x, as') as t' -> (match as_defined_typid' env id args t.at with | ConT ((t1, _), _), _ -> expand_notation env t1 | RangeT _ as t', _ -> t' @@ -466,34 +567,44 @@ let rec expand_iter_notation env t = ) | ConT ((t1, _), _) -> expand_iter_notation env t1 | t' -> t' +*) let as_nat_typ_opt env t : unit option = - match expand_notation env t with - | NumT `NatT -> Some () - | RangeT _ -> Some () + match expand env t with + | Il.NumT `NatT -> Some () | _ -> None let as_num_typ_opt env t : numtyp option = - match expand_notation env t with - | NumT nt -> Some nt - | RangeT _ -> Some `IntT + match expand env t with + | Il.NumT nt -> Some nt + | _ -> None + +let as_iter_typ_opt env t : (Il.typ * Il.iter) option = + match expand env t with + | Il.IterT (t1, iter) -> Some (t1, iter) | _ -> None -let as_iter_typ_opt env t : (typ * iter) option = - match expand env t with IterT (t1, iter) -> Some (t1, iter) | _ -> None +let as_list_typ_opt env t : Il.typ option = + match expand env t with + | Il.IterT (t1, Il.List) -> Some t1 + | _ -> None -let as_list_typ_opt env t : typ option = - match expand env t with IterT (t1, List) -> Some t1 | _ -> None +let as_tup_typ_opt env t : (Il.id * Il.typ) list option = + match expand env t with + | Il.TupT xts -> Some xts + | _ -> None +(* let as_iter_notation_typ_opt env t : (typ * iter) option = - match expand_iter_notation env t with IterT (t1, iter) -> Some (t1, iter) | _ -> None - -let as_tup_typ_opt env t : typ list option = - match expand env t with TupT ts -> Some ts | _ -> None + match expand_iter_notation env t with + | Il.IterT (t1, iter) -> Some (t1, iter) | _ -> None +*) -let as_empty_typ_opt env t : unit option = - match expand_notation env t with SeqT [] -> Some () | _ -> None +let as_empty_notation_typ_opt env t : unit option = + match expand_notation env t with + | Some (_, _, _, Seq []) -> Some () + | _ -> None let as_x_typ as_t_opt phrase env dir t at shape = @@ -510,79 +621,43 @@ let as_iter_typ phrase env dir t at = let as_list_typ phrase env dir t at = as_x_typ as_list_typ_opt phrase env dir t at "(_)*" let as_tup_typ phrase env dir t at = - as_x_typ as_tup_typ_opt phrase env dir t at "(_, ..., _)" + as_x_typ as_tup_typ_opt phrase env dir t at "(_,...,_)" +(* let as_iter_notation_typ phrase env dir t at = as_x_typ as_iter_notation_typ_opt phrase env dir t at "(_)*" -let as_empty_typ phrase env dir t at = - as_x_typ as_empty_typ_opt phrase env dir t at "()" - - -let rec as_notation_typid' phrase env id args at : typ attempt = - match as_defined_typid' env id args at with - | VarT (id', args'), `Alias -> as_notation_typid' phrase env id' args' at - | ConT ((t, _), _), _ -> Ok t - | (AtomT _ | SeqT _ | InfixT _ | BrackT _ | IterT _) as t, _ -> Ok (t $ at) - | _ -> fail_dir_typ env at phrase Infer (VarT (id, args) $ id.at) "_ ... _" - | exception Error (at', msg) -> fail at' msg - -let as_notation_typ phrase env dir t at : typ attempt = - match expand env t with - | VarT (id, args) -> as_notation_typid' phrase env id args at - | _ -> fail_dir_typ env at phrase dir t "_ ... _" +*) +let as_empty_notation_typ phrase env dir t at = + as_x_typ as_empty_notation_typ_opt phrase env dir t at "()" -let rec as_struct_typid' phrase env id args at : (typfield list * dots) attempt = - match as_defined_typid' env id args at with - | VarT (id', args'), `Alias -> as_struct_typid' phrase env id' args' at - | StrT (_dots1, ts, tfs, dots2), _ -> - let* tfss = map_attempt (fun t -> as_struct_typ "" env Infer t at) (filter_nl ts) in - Ok (List.concat (filter_nl tfs :: List.map fst tfss), dots2) - | _ -> fail_dir_typ env at phrase Infer (VarT (id, args) $ id.at) "{...}" - | exception Error (at', msg) -> fail at' msg -and as_struct_typ phrase env dir t at : (typfield list * dots) attempt = - match expand env t with - | VarT (id, args) -> as_struct_typid' phrase env id args at +let as_struct_typ phrase env dir t at : (Il.typfield list * dots) attempt = + match expand_def env t with + | Il.StructT tfs, dots -> Ok (tfs, dots) | _ -> fail_dir_typ env at phrase dir t "{...}" -let rec as_cat_typid' phrase env dir id args at = - match as_defined_typid' env id args at with - | VarT (id', args'), `Alias -> as_cat_typid' phrase env dir id' args' at - | IterT _, _ -> Ok () - | StrT (_dots1, ts, tfs, dots2), _ -> - let* tfss = map_attempt (fun t -> as_struct_typ "" env Infer t at) (filter_nl ts) in - let tfs' = List.concat (filter_nl tfs :: List.map fst tfss) in - if dots2 = Dots then - error at "used record type is only partially defined at this point"; - iter_attempt (fun (_, (t, _), _) -> as_cat_typ phrase env dir t at) tfs' - | _ -> - fail at (phrase ^ "'s type `" ^ string_of_typ ~short:true (VarT (id, args) $ id.at) ^ - "` is not concatenable") - | exception Error (at', msg) -> fail at' msg +let as_variant_typ phrase env dir t at : (Il.typcase list * dots) attempt = + match expand_def env t with + | Il.VariantT tcs, dots -> Ok (tcs, dots) + | _ -> fail_dir_typ env at phrase dir t "| ..." -and as_cat_typ phrase env dir t at = - match expand env t with - | VarT (id, args) -> as_cat_typid' phrase env dir id args at - | IterT _ -> Ok () +let rec as_cat_typ phrase env dir t at : unit attempt = + match expand_def env t with + | Il.AliasT {it = Il.IterT _; _}, _ -> Ok () + | Il.StructT tfs, dots -> + if dots = Dots then + error at "used record type is only partially defined at this point"; + iter_attempt (fun (_, (qs, t, _), _) -> + let env' = if qs = [] then env else local_env env in + List.iter (bind_quant env') qs; + as_cat_typ phrase env' dir t at + ) tfs | _ -> - fail at (phrase ^ "'s type `" ^ string_of_typ ~short:true t ^ "` is not concatenable") - -let rec as_variant_typid' phrase env id args at : (typcase list * dots) attempt = - match as_defined_typid' env id args at with - | VarT (id', args'), `Alias -> as_variant_typid' phrase env id' args' at - | CaseT (_dots1, ts, tcs, dots2), _ -> - let* tcss = map_attempt (fun t -> as_variant_typ "" env Infer t at) (filter_nl ts) in - Ok (List.concat (filter_nl tcs :: List.map fst tcss), dots2) - | _ -> fail_dir_typ env id.at phrase Infer (VarT (id, args) $ id.at) "| ..." - | exception Error (at', msg) -> fail at' msg - -and as_variant_typid phrase env id args : (typcase list * dots) attempt = - as_variant_typid' phrase env id args id.at - -and as_variant_typ phrase env dir t at : (typcase list * dots) attempt = - match expand env t with - | VarT (id, args) -> as_variant_typid' phrase env id args at - | _ -> fail_dir_typ env at phrase dir t "| ..." + fail at (phrase ^ "'s type " ^ typ_string env t ^ " is not concatenable") +let as_notation_typ phrase env dir t at : (Il.quant list * Il.typ * _ Mixop.mixop * notation) attempt = + match expand_notation env t with + | Some x -> Ok x + | _ -> fail_dir_typ env at phrase dir t "_ ... _" let is_x_typ as_x_typ env t = match as_x_typ "" env Check t no_region with @@ -590,28 +665,35 @@ let is_x_typ as_x_typ env t = | Fail _ -> false let is_nat_typ = is_x_typ as_nat_typ -let is_empty_typ = is_x_typ as_empty_typ let is_iter_typ = is_x_typ as_iter_typ +(* let is_iter_notation_typ = is_x_typ as_iter_notation_typ -let is_notation_typ = is_x_typ as_notation_typ +*) let is_variant_typ = is_x_typ as_variant_typ +let is_notation_typ = is_x_typ as_notation_typ +let is_empty_notation_typ = is_x_typ as_empty_notation_typ (* Type Equivalence and Shallow Numeric Subtyping *) let equiv_typ env t1 t2 = - Eval.equiv_typ (to_eval_env env) t1 t2 + Il.Eval.equiv_typ (to_il_env env) t1 t2 let sub_typ env t1 t2 = - Eval.sub_typ (to_eval_env env) t1 t2 + Il.Eval.sub_typ (to_il_env env) t1 t2 let narrow_typ env t1 t2 = - Eval.narrow_typ (to_eval_env env) t1 t2 + Debug.(log "el.narrow_typ" + (fun _ -> fmt "%s <: %s" (il_typ t1) (il_typ t2)) Bool.to_string + ) @@ fun _ -> + match expand env t1, expand env t2 with + | Il.NumT nt1, Il.NumT nt2 -> Num.sub nt1 nt2 + | _, _ -> equiv_typ env t1 t2 (* Hints *) -let elab_hint tid mixop {hintid; hintexp} : Il.hint = +let elab_hint tid case {hintid; hintexp} : Il.hint = let module IterAtoms = Iter.Make( struct @@ -620,18 +702,24 @@ let elab_hint tid mixop {hintid; hintexp} : Il.hint = assert (valid_tid tid); assert (atom.note.Atom.def = ""); atom.note.Atom.def <- tid.it; - atom.note.Atom.case <- Mixop.name mixop + atom.note.Atom.case <- case end ) in IterAtoms.exp hintexp; {Il.hintid; Il.hintexp} -let elab_hints tid mixop = List.map (elab_hint tid mixop) +let elab_hints tid case = List.map (elab_hint tid case) (* Atoms and Operators *) +let fresh_note note = Atom.{note with def = ""} +let fresh_atom atom = {atom with note = fresh_note atom.note} +let fresh_mixop mixop = Mixop.map_atoms fresh_atom mixop +let fresh_typfield (atom, t_prs, hints) = (fresh_atom atom, t_prs, hints) +let fresh_typcase (mixop, t_prs, hints) = (fresh_mixop mixop, t_prs, hints) + let elab_atom atom tid = assert (valid_tid tid); (* @@ -644,22 +732,22 @@ Printf.eprintf "[elab_atom %s @ %s] def=%s/%s\n%!" atom let infer_unop'' op ts = - List.map (fun t -> op, (t :> Il.optyp), NumT t, NumT t) ts + List.map (fun t -> op, (t :> Il.optyp), Il.NumT t, Il.NumT t) ts let infer_binop'' op ts = - List.map (fun t -> op, (t :> Il.optyp), NumT t, NumT t, NumT t) ts + List.map (fun t -> op, (t :> Il.optyp), Il.NumT t, Il.NumT t, Il.NumT t) ts let infer_cmpop'' op ts = - List.map (fun t -> op, (t :> Il.optyp), NumT t) ts + List.map (fun t -> op, (t :> Il.optyp), Il.NumT t) ts let infer_unop' = function - | #Bool.unop as op -> [op, `BoolT, BoolT, BoolT] + | #Bool.unop as op -> [op, `BoolT, Il.BoolT, Il.BoolT] | #Num.unop as op -> infer_unop'' op [`IntT; `RatT; `RealT] | `PlusMinusOp -> infer_unop'' `PlusOp [`IntT; `RatT; `RealT] | `MinusPlusOp -> infer_unop'' `MinusOp [`IntT; `RatT; `RealT] let infer_binop' = function - | #Bool.binop as op -> [op, `BoolT, BoolT, BoolT, BoolT] + | #Bool.binop as op -> [op, `BoolT, Il.BoolT, Il.BoolT, Il.BoolT] | `AddOp as op -> infer_binop'' op [`NatT; `IntT; `RatT; `RealT] | `SubOp as op -> infer_binop'' op [`IntT; `RatT; `RealT] | `MulOp as op -> infer_binop'' op [`NatT; `IntT; `RatT; `RealT] @@ -668,21 +756,22 @@ let infer_binop' = function | `PowOp as op -> infer_binop'' op [`NatT; `RatT; `RealT] |> List.map (fun (op, nt, t1, t2, t3) -> - (op, nt, t1, (if t2 = NumT `NatT then t2 else NumT `IntT), t3)) + (op, nt, t1, (if t2 = Il.NumT `NatT then t2 else Il.NumT `IntT), t3)) let infer_cmpop' = function | #Bool.cmpop as op -> `Poly op | #Num.cmpop as op -> `Over (infer_cmpop'' op [`NatT; `IntT; `RatT; `RealT]) -let infer_unop env op t1 at : (Il.unop * Il.optyp * typ * typ) attempt = +let infer_unop env op t1 at : (Il.unop * Il.optyp * Il.typ * Il.typ) attempt = let ops = infer_unop' op in match List.find_opt (fun (_, _, t1', _) -> narrow_typ env t1 (t1' $ at)) ops with | Some (op', nt, t1', t2') -> Ok (op', nt, t1' $ at, t2' $ at) | None -> fail at ("unary operator `" ^ string_of_unop op ^ - "` is not defined for operand type `" ^ string_of_typ ~short:true t1 ^ "`") + "` is not defined for operand type " ^ typ_string env t1 + ) -let infer_binop env op t1 t2 at : (Il.binop * Il.optyp * typ * typ * typ) attempt = +let infer_binop env op t1 t2 at : (Il.binop * Il.optyp * Il.typ * Il.typ * Il.typ) attempt = let ops = infer_binop' op in match List.find_opt (fun (_, _, t1', t2', _) -> @@ -691,11 +780,12 @@ let infer_binop env op t1 t2 at : (Il.binop * Il.optyp * typ * typ * typ) attemp | Some (op', nt, t1', t2', t3') -> Ok (op', nt, t1' $ at, t2' $ at, t3' $ at) | None -> fail at ("binary operator `" ^ string_of_binop op ^ - "` is not defined for operand types `" ^ - string_of_typ ~short:true t1 ^ "` and `" ^ string_of_typ ~short:true t2 ^ "`") + "` is not defined for operand types `" ^ typ_string env t1 ^ + " and " ^ typ_string env t2 + ) let infer_cmpop env op - : [`Poly of Il.cmpop | `Over of (typ -> typ -> region -> (Il.cmpop * Il.optyp * typ) attempt)] = + : [`Poly of Il.cmpop | `Over of (Il.typ -> Il.typ -> region -> (Il.cmpop * Il.optyp * Il.typ) attempt)] = match infer_cmpop' op with | `Poly op' -> `Poly op' | `Over ops -> `Over (fun t1 t2 at -> @@ -706,8 +796,9 @@ let infer_cmpop env op | Some (op', nt, t) -> Ok (op', nt, t $ at) | None -> fail at ("comparison operator `" ^ string_of_cmpop op ^ - "` is not defined for operand types `" ^ - string_of_typ ~short:true t1 ^ "` and `" ^ string_of_typ ~short:true t2 ^ "`") + "` is not defined for operand types " ^ typ_string env t1 ^ + " and " ^ typ_string env t2 + ) ) let merge_mixop mixop1 mixop2 = @@ -719,10 +810,10 @@ let merge_mixop mixop1 mixop2 = mixop1' @ [atoms1 @ atoms2] @ mixop2' -let check_atoms phrase item list at = +let check_atoms phrase item to_atom list at = let _, dups = - List.fold_right (fun (atom, _, _) (set, dups) -> - let s = Print.string_of_atom atom in + List.fold_right (fun (op, _, _) (set, dups) -> + let s = Print.string_of_atom (to_atom op) in if Set.mem s set then (set, s::dups) else (Set.add s set, dups) ) list (Set.empty, []) in @@ -733,21 +824,21 @@ let check_atoms phrase item list at = (* Iteration *) -let rec elab_iter env iter : Il.param list * Il.iter = +let rec elab_iter env iter : Il.quant list * Il.iter = match iter with | Opt -> [], Il.Opt | List -> [], Il.List | List1 -> [], Il.List1 - | ListN (e, id_opt) -> - Option.iter (fun id -> - let qs', e' = checkpoint (elab_exp env (VarE (id, []) $ id.at) (NumT `NatT $ id.at)) in - (* TODO(4, rossberg): extend IL to allow arbitrary pattern exps *) + | ListN (e, xo) -> + Option.iter (fun x -> + let t = Il.NumT `NatT $ x.at in + let qs, e' = checkpoint (elab_exp env (VarE (x, []) $ x.at) t) in match e'.it with - | Il.VarE _ -> assert (qs' = []) - | _ -> error_typ env id.at "iteration variable" (NumT `NatT $ id.at) - ) id_opt; - let qs', e' = checkpoint (elab_exp env e (NumT `NatT $ e.at)) in - qs', Il.ListN (e', id_opt) + | Il.VarE _ -> assert (qs = []) + | _ -> error_typ env x.at "iteration variable" t + ) xo; + let qs, e' = checkpoint (elab_exp env e (Il.NumT `NatT $ e.at)) in + qs, Il.ListN (e', xo) and elab_typiter env iter : Il.iter = let iter = @@ -755,8 +846,8 @@ and elab_typiter env iter : Il.iter = | List1 | ListN _ -> List | _ -> iter in - let qs', iter' = elab_iter env iter in - assert (qs' = []); + let qs, iter' = elab_iter env iter in + assert (qs = []); iter' @@ -764,14 +855,16 @@ and elab_typiter env iter : Il.iter = and elab_typ env t : Il.typ = match t.it with - | VarT (id, as_) -> - let id' = strip_var_suffix id in - if id'.it <> id.it && as_ = [] then elab_typ env (Convert.typ_of_varid id') else - let ps, _ = find "syntax type" env.typs id' in - let qs', as', _s = elab_args `Rhs env as_ ps t.at in - if qs' <> [] then - error t.at "illegal expression forms in type instantiation"; - Il.VarT (id', as') $ t.at + | VarT (x, as_) -> + let x' = strip_var_suffix x in + if x'.it <> x.it && as_ = [] then + elab_typ env (Convert.typ_of_varid x') + else + let ps, _ = find "syntax type" env.typs x' in + let qs, as', _s = elab_args `Rhs env as_ ps t.at in + if qs <> [] then + error t.at "illegal expression form in type instantiation"; + Il.VarT (x', as') $ t.at | BoolT -> Il.BoolT $ t.at | NumT t' -> Il.NumT t' $ t.at | TextT -> Il.TextT $ t.at @@ -782,293 +875,281 @@ and elab_typ env t : Il.typ = let iter' = elab_typiter env iter in let t1' = elab_typ env t1 in Il.IterT (t1', iter') $ t.at - | StrT _ | CaseT _ | ConT _ | RangeT _ | AtomT _ | SeqT _ | InfixT _ | BrackT _ -> + | StrT _ | CaseT _ | ConT _ | RangeT _ + | AtomT _ | SeqT _ | InfixT _ | BrackT _ -> error t.at "this type is only allowed in type definitions" -and elab_typ_definition env tid t : Il.deftyp = +and elab_typ_definition env tid t : Il.deftyp * dots = Debug.(log_at "el.elab_typ_definition" t.at - (fun _ -> fmt "%s = %s" tid.it (el_typ t)) il_deftyp + (fun _ -> fmt "%s = %s" tid.it (el_typ t)) + (fun (dt, _) -> il_deftyp dt) ) @@ fun _ -> assert (valid_tid tid); - (match t.it with - | StrT (dots1, ts, tfs, _dots2) -> - let tfs0 = - if dots1 = Dots then - fst (checkpoint (as_struct_typid' "own type" env tid [] t.at)) - else [] + match t.it with + | StrT (dots1, ts, tfs, dots2) -> + let tfs1 = + if dots1 = NoDots then [] else + let t1 = Il.VarT (tid, []) $ tid.at in + if not (bound env.typs tid) then + error t.at "extension of previously undefined syntax type"; + let tfs1, dots = checkpoint (as_struct_typ "own type" env Check t1 t1.at) in + if dots = NoDots then + error t.at "extension of non-extensible syntax type"; + List.map fresh_typfield tfs1 (* ensure atom annotations are fresh *) in - let tfss = - map_filter_nl_list (fun t -> - let tfs, dots = checkpoint (as_struct_typ "parent type" env Infer t t.at) in + let tfs2 = + concat_map_filter_nl_list (fun t -> + let t' = elab_typ env t in + let tfs, dots = checkpoint (as_struct_typ "parent type" env Infer t' t'.at) in if dots = Dots then - error t.at "cannot include incomplete syntax type"; - List.map Iter.clone_typfield tfs (* ensure atom annotations are fresh *) + error t.at "inclusion of incomplete syntax type"; + List.map fresh_typfield tfs (* ensure atom annotations are fresh *) ) ts in - let tfs1 = List.flatten (List.map Iter.clone_typfield tfs0 :: tfss @ [filter_nl tfs]) in - let tfs' = List.map (elab_typfield env tid t.at) tfs1 in - check_atoms "record" "field" tfs' t.at; - Il.StructT tfs' - | CaseT (dots1, ts, tcs, _dots2) -> - let tcs0 = - if dots1 = Dots then - fst (checkpoint (as_variant_typid "own type" env tid [])) - else [] + let tfs' = tfs1 @ tfs2 @ map_filter_nl_list (elab_typfield env tid t.at) tfs in + check_atoms "record" "field" Fun.id tfs' t.at; + Il.StructT tfs' $ t.at, dots2 + | CaseT (dots1, ts, tcs, dots2) -> + let tcs1 = + if dots1 = NoDots then [] else + let t1 = Il.VarT (tid, []) $ tid.at in + if not (bound env.typs tid) then + error t.at "extension of previously undefined syntax type"; + let tcs1, dots = checkpoint (as_variant_typ "own type" env Check t1 t1.at) in + if dots = NoDots then + error t.at "extension of non-extensible syntax type"; + List.map fresh_typcase tcs1 (* ensure atom annotations are fresh *) in - let tcss = - map_filter_nl_list (fun t -> - let tcs, dots = checkpoint (as_variant_typ "parent type" env Infer t t.at) in + let tcs2 = + concat_map_filter_nl_list (fun t -> + let t' = elab_typ env t in + let tcs, dots = checkpoint (as_variant_typ "parent type" env Infer t' t'.at) in if dots = Dots then - error t.at "cannot include incomplete syntax type"; - List.map Iter.clone_typcase tcs (* ensure atom annotations are fresh *) + error t.at "inclusion of incomplete syntax type"; + List.map fresh_typcase tcs (* ensure atom annotations are fresh *) ) ts in - let tcs1 = List.flatten (List.map Iter.clone_typcase tcs0 :: tcss @ [filter_nl tcs]) in - let tcs' = List.map (elab_typcase env tid t.at) tcs1 in - check_atoms "variant" "case" tcs1 t.at; - Il.VariantT tcs' + let tcs' = tcs1 @ tcs2 @ map_filter_nl_list (elab_typcase env tid t.at) tcs in + check_atoms "variant" "case" (fun op -> Option.get (Mixop.head op)) tcs' t.at; + Il.VariantT tcs' $ t.at, dots2 | ConT tc -> let tc' = elab_typcon env tid t.at tc in - Il.VariantT [tc'] + Il.VariantT [tc'] $ t.at, NoDots | RangeT tes -> let ts_fes' = map_filter_nl_list (elab_typenum env tid) tes in - let t1, fe' = + let t', fe' = List.fold_left (fun (t, fe') (tI, feI') -> (if narrow_typ env tI t then t else tI), fun eid' nt -> let e' = fe' eid' nt and eI' = feI' eid' nt in let at = Source.over_region [e'.at; eI'.at] in - Il.(BinE (`OrOp, `BoolT, e', eI') $$ at % (BoolT $ at)) + Il.(BinE (`OrOp, `BoolT, e', eI') $$ at % (Il.BoolT $ at)) ) (List.hd ts_fes') (List.tl ts_fes') in - let t' = elab_typ env t1 in - let nt = match t1.it with NumT nt -> nt | _ -> assert false in - let id' = "i" $ t.at in - let eid' = Il.VarE id' $$ t.at % t' in - let qs' = [Il.ExpP (id', t') $ t.at] in + let nt = match t'.it with Il.NumT nt -> nt | _ -> assert false in + let x = "i" $ t.at in + let eid' = Il.VarE x $$ t.at % t' in + let qs = [Il.ExpP (x, t') $ t.at] in let prems' = [Il.IfPr (fe' eid' nt) $ t.at] in - let tc' = ([[]; []], (qs', Il.TupT [(id', t')] $ t.at, prems'), []) in - Il.VariantT [tc'] + let tc' = (Mixop.Arg (), (qs, Il.TupT [(x, t')] $ t.at, prems'), []) in + Il.VariantT [tc'] $ t.at, NoDots | _ -> let t' = elab_typ env t in - Il.AliasT t' - ) $ t.at + Il.AliasT t' $ t.at, NoDots -and typ_rep env t : typ = +and typ_rep env t : Il.typ = Debug.(log_at "el.typ_rep" t.at - (fun _ -> fmt "%s" (el_typ t)) - (fun r -> fmt "%s" (el_typ r)) + (fun _ -> fmt "%s" (il_typ t)) + (fun r -> fmt "%s" (il_typ r)) ) @@ fun _ -> - match expand_def env t with - | ConT ((t1, _), _) -> t1 - | RangeT tes -> - let ts_fes' = map_filter_nl_list (elab_typenum env (expand_id env t)) tes in - List.fold_left (fun t (tI, _) -> - if sub_typ env tI t then t else tI - ) (fst (List.hd ts_fes')) (List.tl ts_fes') - | _ -> t + match expand env t with + | Il.VarT _ as t' -> + (match expand_def env (t' $ t.at) with + | Il.VariantT [_, (_, t1, _), _], NoDots -> t1 + | _ -> t' $ t.at + ) + | t' -> t' $ t.at and elab_typfield env tid at (atom, (t, prems), hints) : Il.typfield = - let _mixop, qs', t', prems', _ = elab_typ_notation' env tid at t prems in - let hints' = elab_hints tid [] hints in + let _mixop, qs, t', prems' = elab_typ_notation' env tid at t prems in + let hints' = elab_hints tid "" hints in let t'' = (* TODO(4, rossberg): remove this hack *) match t'.it with | Il.TupT [(_, t1')] when prems' = [] -> t1' | _ -> t' in - (elab_atom atom tid, (qs', t'', prems'), hints') -(* - assert (valid_tid tid); - let env' = local_env env in - let _mixop, ts', ts = elab_typ_notation env' tid t in - let es = Convert.pats_of_typs ts in - let dims = Dim.check_typdef (vars env) t prems in - let dims' = Dim.Env.map (List.map (elab_iter env')) dims in - let es' = checkpoint (map2_attempt (elab_exp env') es ts) in - let es' = List.map (Dim.annot_exp dims') es' in - let prems' = List.map (Dim.annot_prem dims') - (concat_map_filter_nl_list (elab_prem env') prems) in - let det = Free.(diff (union (free_list det_exp es) (det_prems prems)) (bound_env env)) in - let free = Free.(diff (union (free_typ t) (free_prems prems)) (union det (bound_env env))) in - if free <> Free.empty then - error at ("type field contains indeterminate variable(s) `" ^ - String.concat "`, `" (Free.Set.elements free.varid) ^ "`"); - let acc_qs', (module Arg : Iter.Arg) = make_quants_iter_arg env' det dims in - let module Acc = Iter.Make(Arg) in - List.iter Acc.exp es; - Acc.prems prems; - ( elab_atom atom tid, - (!acc_qs', (if prems = [] then tup_typ' else tup_typ_bind' es') ts' t.at, prems'), - elab_hints tid [] hints - ) -*) + (elab_atom atom tid, (qs, t'', prems'), hints') and elab_typcase env tid at (_atom, (t, prems), hints) : Il.typcase = - let mixop, qs', t', prems', _ = elab_typ_notation' env tid at t prems in - let hints' = elab_hints tid [] hints in - (mixop, (qs', t', prems'), hints') -(* - assert (valid_tid tid); - let env' = local_env env in - let mixop, ts', ts = elab_typ_notation env' tid t in - let es = Convert.pats_of_typs ts in - let dims = Dim.check_typdef (vars env) t prems in - let dims' = Dim.Env.map (List.map (elab_iter env')) dims in - let es' = checkpoint (map2_attempt (elab_exp env') es ts) in - let es' = List.map (Dim.annot_exp dims') es' in - let prems' = List.map (Dim.annot_prem dims') - (concat_map_filter_nl_list (elab_prem env') prems) in - let det = Free.(diff (union (free_list det_exp es) (det_prems prems)) (bound_env env)) in - let free = Free.(diff (free_typcase tc) (union det (bound_env env))) in - if free <> Free.empty then -(Printf.printf "[typcase] t = %s\n%!" (Print.string_of_typ t); - List.iteri (fun i e -> Printf.printf "[typcase] t%d = %s\n%!" i (Print.string_of_typ e)) ts; - List.iteri (fun i e -> Printf.printf "[typcase] t%d' = %s\n%!" i (Il.Print.string_of_typ e)) ts'; - List.iteri (fun i e -> Printf.printf "[typcase] e%d = %s\n%!" i (Print.string_of_exp e)) es; - error at ("type case contains indeterminate variable(s) `" ^ - String.concat "`, `" (Free.Set.elements free.varid) ^ "`"); -); - let acc_qs', (module Arg : Iter.Arg) = make_quants_iter_arg env' det dims in - let module Acc = Iter.Make(Arg) in - List.iter Acc.exp es; - Acc.prems prems; - ( mixop, - (!acc_qs', tup_typ_bind' es' ts' at, prems'), - elab_hints tid [] hints - ) -*) + let mixop, qs, t', prems' = elab_typ_notation' env tid at t prems in + let hints' = elab_hints tid "" hints in + (mixop, (qs, t', prems'), hints') and elab_typcon env tid at ((t, prems), hints) : Il.typcase = - let mixop, qs', t', prems', _ = elab_typ_notation' env tid at t prems in - let hints' = elab_hints tid [Atom.Atom tid.it $$ tid.at % Atom.info ""] hints in - (mixop, (qs', t', prems'), hints') -(* - assert (valid_tid tid); - let env' = local_env env in - let mixop, ts', ts = elab_typ_notation env' tid t in - let es = Convert.pats_of_typs ts in - let dims = Dim.check_typdef (vars env) t prems in - let dims' = Dim.Env.map (List.map (elab_iter env')) dims in - let es' = checkpoint (map_attempt Fun.id (List.map2 (elab_exp env') es ts)) in - let es' = List.map (Dim.annot_exp dims') es' in - let prems' = List.map (Dim.annot_prem dims') - (concat_map_filter_nl_list (elab_prem env') prems) in - let det = Free.(diff (union (free_list det_exp es) (det_prems prems)) (bound_env env)) in - let free = Free.(diff (union (free_typ t) (free_prems prems)) (union det (bound_env env))) in - if free <> Free.empty then - error at ("type constraint contains indeterminate variable(s) `" ^ - String.concat "`, `" (Free.Set.elements free.varid) ^ "`"); - let acc_qs', (module Arg : Iter.Arg) = make_quants_iter_arg env' det dims in - let module Acc = Iter.Make(Arg) in - List.iter Acc.exp es; - Acc.prems prems; - ( mixop, - (!acc_qs', tup_typ_bind' es' ts' at, prems'), - elab_hints tid [Atom.Atom tid.it $$ tid.at % Atom.info ""] hints - ) -*) + let mixop, qs, t', prems' = elab_typ_notation' env tid at t prems in + let hints' = elab_hints tid tid.it hints in + (mixop, (qs, t', prems'), hints') -and elab_typenum env tid (e1, e2o) : typ * (Il.exp -> numtyp -> Il.exp) = +and elab_typenum env tid (e1, e2o) : Il.typ * (Il.exp -> numtyp -> Il.exp) = assert (valid_tid tid); - let _e1' = elab_exp env e1 (NumT `IntT $ e1.at) in (* ensure it's <= int *) - let _qs1', _, t1 = checkpoint (infer_exp env e1) in (* get precise type *) + let _e1' = elab_exp env e1 (Il.NumT `IntT $ e1.at) in (* ensure it's <= int *) + let _qs1, _, t1 = checkpoint (infer_exp env e1) in (* get precise type *) match e2o with | None -> t1, fun eid' nt -> - let qs1', e1' = checkpoint (elab_exp env e1 (NumT nt $ e1.at)) in (* redo with overall type *) - if qs1' <> [] then + let qs1, e1' = checkpoint (elab_exp env e1 (Il.NumT nt $ e1.at)) in (* redo with overall type *) + if qs1 <> [] then error e1.at "illegal expression form in range type"; - Il.(CmpE (`EqOp, `BoolT, eid', e1') $$ e1'.at % (BoolT $ e1.at)) + Il.(CmpE (`EqOp, `BoolT, eid', e1') $$ e1'.at % (Il.BoolT $ e1.at)) | Some e2 -> let at = Source.over_region [e1.at; e2.at] in - let _qs21', _e2' = checkpoint (elab_exp env e2 (NumT `IntT $ e2.at)) in + let _qs21', _e2' = checkpoint (elab_exp env e2 (Il.NumT `IntT $ e2.at)) in let _qs22, _, t2 = checkpoint (infer_exp env e2) in (if narrow_typ env t2 t1 then t1 else t2).it $ at, fun eid' nt -> - let qs1', e1' = checkpoint (elab_exp env e1 (NumT nt $ e1.at)) in - let qs2', e2' = checkpoint (elab_exp env e2 (NumT nt $ e2.at)) in - if qs1' <> [] then + let qs1, e1' = checkpoint (elab_exp env e1 (Il.NumT nt $ e1.at)) in + let qs2, e2' = checkpoint (elab_exp env e2 (Il.NumT nt $ e2.at)) in + if qs1 <> [] then error e1.at "illegal expression form in range type"; - if qs2' <> [] then + if qs2 <> [] then error e2.at "illegal expression form in range type"; Il.(BinE (`AndOp, `BoolT, - CmpE (`GeOp, (nt :> Il.optyp), eid', e1') $$ e1'.at % (BoolT $ e1.at), - CmpE (`LeOp, (nt :> Il.optyp), eid', e2') $$ e2'.at % (BoolT $ e2.at) - ) $$ at % (BoolT $ at)) + CmpE (`GeOp, (nt :> Il.optyp), eid', e1') $$ e1'.at % (Il.BoolT $ e1.at), + CmpE (`LeOp, (nt :> Il.optyp), eid', e2') $$ e2'.at % (Il.BoolT $ e2.at) + ) $$ at % (Il.BoolT $ at)) + + + +(* Like Convert.* but for IL *) +and varid_of_typ' t = + (match t.it with + | Il.VarT (id, _) -> id.it + | Il.BoolT -> "bool" + | Il.NumT `NatT -> "nat" + | Il.NumT `IntT -> "int" + | Il.NumT `RatT -> "rat" + | Il.NumT `RealT -> "real" + | Il.TextT -> "text" + | _ -> "_" + ) $ t.at + +and expify' t = function + | Some e -> e + | None -> Il.VarE ("_" $ t.at) $$ t.at % t -and elab_typ_notation' env tid at t prems : Il.mixop * Il.param list * Il.typ * Il.prem list * typ list = +and pat'_of_typ' s t : Il.exp option = + let (let*) = Option.bind in + let module Il = Il.Ast in + match t.it with + | Il.VarT (id, _args) -> + if Set.mem id.it !s then None else + ( + (* Suppress duplicates. *) + s := Set.add id.it !s; + Some (Il.VarE id $$ t.at % t) + ) + | Il.BoolT | Il.NumT _ | Il.TextT -> + let id = varid_of_typ' t in + if Set.mem id.it !s then None else + ( + (* Suppress duplicates. *) + s := Set.add id.it !s; + Some (Il.VarE id $$ t.at % t) + ) + | Il.TupT xts -> + let* es = pats'_of_typs' s (List.map snd xts) in + Some (Il.TupE es $$ t.at % t) + | Il.IterT (t1, iter) -> + let* e1 = pat'_of_typ' s t1 in + Some (Il.IterE (e1, (iter, [])) $$ t.at % t) + +and pats'_of_typs' s ts : Il.exp list option = + let eos = List.map (pat'_of_typ' s) ts in + if List.for_all ((=) None) eos then None else + Some (List.map2 expify' ts eos) + +and pat'_of_typ t = expify' t (pat'_of_typ' (ref Set.empty) t) +and pats'_of_typs ts = List.map2 expify' ts (List.map (pat'_of_typ' (ref Set.empty)) ts) + +and elab_typ_notation' env tid at t prems : + Il.mixop * Il.quant list * Il.typ * Il.prem list = assert (valid_tid tid); let env' = local_env env in - let mixop, ts', ts = elab_typ_notation env' tid t in - let es = Convert.pats_of_typs ts in + let mixop, ts' = elab_typ_notation env' tid t in + let es' = pats'_of_typs ts' in let dims = Dim.check_typdef (vars env) t prems in let dims' = Dim.Env.map (List.map (elab_typiter env')) dims in - let qss1', es' = List.split (checkpoint (map2_attempt (elab_exp env') es ts)) in let es' = List.map (Dim.annot_exp dims') es' in - let qss2', premss' = List.split (map_filter_nl_list (elab_prem env') prems) in + let qss, premss' = List.split (map_filter_nl_list (elab_prem env') prems) in let prems' = List.map (Dim.annot_prem dims') (List.concat premss') in - let det = Free.(diff (union (free_list det_exp es) (det_prems prems)) (bound_env env)) in + let det = Free.(diff (union (det_typ t) (det_prems prems)) (bound_env env)) in let free = Free.(diff (union (free_typ t) (free_prems prems)) (union det (bound_env env))) in if free <> Free.empty then -(Printf.printf "[notation] t = %s\n%!" (Print.string_of_typ t); -List.iteri (fun i e -> Printf.printf "[notation] t%d = %s\n%!" i (Print.string_of_typ e)) ts; +(Printf.printf "[notation] t = %s\n%!" (Debug.el_typ t); List.iteri (fun i e -> Printf.printf "[notation] t%d' = %s\n%!" i (Il.Print.string_of_typ e)) ts'; -List.iteri (fun i e -> Printf.printf "[notation] e%d = %s\n%!" i (Print.string_of_exp e)) es; +List.iteri (fun i e -> Printf.printf "[notation] e%d' = %s\n%!" i (Il.Print.string_of_exp e)) es'; error at ("premise contains indeterminate variable(s) `" ^ String.concat "`, `" (Free.Set.elements free.varid) ^ "`"); ); - let acc_qs', (module Arg : Iter.Arg) = make_quants_iter_arg env' det dims in + let acc_qs, (module Arg : Iter.Arg) = make_quants_iter_arg env' det dims in let module Acc = Iter.Make(Arg) in - List.iter Acc.exp es; + Acc.typ t; Acc.prems prems; - mixop, !acc_qs' @ List.concat (qss1' @ qss2'), tup_typ_bind' es' ts' t.at, prems', ts + mixop, !acc_qs @ List.concat qss, tup_typ_bind' es' ts' t.at, prems' -and elab_typ_notation env tid t : Il.mixop * Il.typ list * typ list = +and elab_typ_notation env tid t : Il.mixop * Il.typ list = Debug.(log_at "el.elab_typ_notation" t.at (fun _ -> fmt "(%s) %s" tid.it (el_typ t)) - (fun (mixop, ts', _) -> fmt "%s(%s)" (il_mixop mixop) (list il_typ ts')) + (fun (mixop, ts') -> fmt "%s(%s)" (il_mixop mixop) (list il_typ ts')) ) @@ fun _ -> assert (valid_tid tid); match t.it with - | VarT (id, as_) -> - let id' = strip_var_suffix id in - (match (Convert.typ_of_varid id').it with + | VarT (x, as_) -> + let x' = strip_var_suffix x in + (match (Convert.typ_of_varid x').it with | VarT _ -> - (match find "syntax type" env.typs id' with - | _, Transp -> error_id id "invalid forward reference to syntax type" + (match find "syntax type" env.typs x' with + | _, Transp -> error_id x "invalid forward reference to syntax type" | ps, _ -> - let qs', as', _s = elab_args `Rhs env as_ ps t.at in - if qs' <> [] then + let qs, as', _s = elab_args `Rhs env as_ ps t.at in + if qs <> [] then error t.at "illegal expression forms in type instantiation"; - [[]; []], [Il.VarT (id', as') $ t.at], [t] + let t' = Il.VarT (x', as') $ t.at in + Arg (), [t'] ) - | t' -> - [[]; []], [elab_typ env (t' $ id.at)], [t] + | t1 -> + assert (as_ = []); + let t' = elab_typ env (t1 $ x.at) in + Arg (), [t'] ) | AtomT atom -> - [[elab_atom atom tid]], [], [] + let atom' = elab_atom atom tid in + Atom atom', [] | SeqT [] -> - [[]], [], [] + Seq [], [] | SeqT (t1::ts2) -> - let mixop1, ts1', ts1 = elab_typ_notation env tid t1 in - let mixop2, ts2', ts2 = elab_typ_notation env tid (SeqT ts2 $ t.at) in - merge_mixop mixop1 mixop2, ts1' @ ts2', ts1 @ ts2 + let mixop1, ts1' = elab_typ_notation env tid t1 in + let mixop2, ts2' = elab_typ_notation env tid (SeqT ts2 $ t.at) in + (match mixop2 with Seq mixops2 -> Seq (mixop1::mixops2) | _ -> assert false), + ts1' @ ts2' | InfixT (t1, atom, t2) -> - let mixop1, ts1', ts1 = elab_typ_notation env tid t1 in - let mixop2, ts2', ts2 = elab_typ_notation env tid t2 in - merge_mixop (merge_mixop mixop1 [[elab_atom atom tid]]) mixop2, - ts1' @ ts2', ts1 @ ts2 + let mixop1, ts1' = elab_typ_notation env tid t1 in + let mixop2, ts2' = elab_typ_notation env tid t2 in + let atom' = elab_atom atom tid in + Infix (mixop1, atom', mixop2), ts1' @ ts2' | BrackT (l, t1, r) -> - let mixop1, ts1', ts1 = elab_typ_notation env tid t1 in - merge_mixop (merge_mixop [[elab_atom l tid]] mixop1) [[elab_atom r tid]], - ts1', ts1 + let mixop1, ts1' = elab_typ_notation env tid t1 in + let l' = elab_atom l tid in + let r' = elab_atom r tid in + Brack (l', mixop1, r'), ts1' | _ -> - [[]; []], [elab_typ env t], [t] + let t' = elab_typ env t in + Arg (), [t'] and (!!!) env tid t = - let _, ts', _ = elab_typ_notation env tid t in tup_typ' ts' t.at + let _, ts' = elab_typ_notation env tid t in tup_typ' ts' t.at (* Expressions *) @@ -1078,193 +1159,196 @@ and (!!!) env tid t = * - Fail (at, s) when it cannot, where s is the name of the failing construct * - raises Error.Error on fatal, unrecoverable errors *) -and infer_exp env e : (Il.param list * Il.exp * typ) attempt = +and infer_exp env e : (Il.quant list * Il.exp * Il.typ) attempt = Debug.(log_at "el.infer_exp" e.at (fun _ -> fmt "%s" (el_exp e)) - (function Ok (qs', e', t) -> fmt "%s%s : %s" (il_quants qs') (il_exp e') (el_typ t) | _ -> "fail") + (function Ok (qs, e', t) -> fmt "%s%s : %s" (il_quants qs) (il_exp e') (il_typ t) | _ -> "fail") ) @@ fun _ -> - let* qs', e', t' = infer_exp' env e in + let* qs, e', t' = infer_exp' env e in let t = t' $ e.at in - Ok (qs', e' $$ e.at % elab_typ env t, t) + Ok (qs, e' $$ e.at % t, t) -and infer_exp' env e : (Il.param list * Il.exp' * typ') attempt = +and infer_exp' env e : (Il.quant list * Il.exp' * Il.typ') attempt = match e.it with - | VarE (id, args) -> + | VarE (x, args) -> (* Args may only occur due to syntactic overloading with types *) if args <> [] then error e.at "malformed expression"; - if id.it = "_" then fail_infer e.at "wildcard" else + if x.it = "_" then fail_infer e.at "wildcard" else let* t = - if bound env.vars id then - Ok (find "variable" env.vars id) - else if bound env.gvars (strip_var_suffix id) then + if bound env.vars x then + Ok (find "variable" env.vars x) + else if bound env.gvars (strip_var_suffix x) then (* If the variable itself is not yet declared, use type hint. *) - let t = find "variable" env.gvars (strip_var_suffix id) in - env.vars <- bind "variable" env.vars id t; + let t = find "variable" env.gvars (strip_var_suffix x) in + env.vars <- bind "variable" env.vars x t; Ok t else fail_infer e.at "variable" - in Ok ([], Il.VarE id, t.it) + in Ok ([], Il.VarE x, t.it) | AtomE _ -> fail_infer e.at "atom" | BoolE b -> - Ok ([], Il.BoolE b, BoolT) + Ok ([], Il.BoolE b, Il.BoolT) | NumE (_op, n) -> - Ok ([], Il.NumE n, NumT (Num.to_typ n)) + Ok ([], Il.NumE n, Il.NumT (Num.to_typ n)) | TextE s -> - Ok ([], Il.TextE s, TextT) + Ok ([], Il.TextE s, Il.TextT) | CvtE (e1, nt) -> - let* qs1', e1', t1 = infer_exp env e1 in + let* qs1, e1', t1 = infer_exp env e1 in let* nt1 = as_num_typ "conversion" env Infer t1 e1.at in - let* qs1'', e1'' = cast_exp "operand" env e1' t1 (NumT nt1 $ e1.at) in - Ok (qs1' @ qs1'', Il.CvtE (e1'', nt1, nt), NumT nt) + let* qs1', e1'' = cast_exp "operand" env e1' t1 (Il.NumT nt1 $ e1.at) in + Ok (qs1 @ qs1', Il.CvtE (e1'', nt1, nt), Il.NumT nt) | UnE (op, e1) -> - let* qs1', e1', t1 = infer_exp env e1 in + let* qs1, e1', t1 = infer_exp env e1 in let* op', ot, t1', t = infer_unop env op (typ_rep env t1) e.at in - let* qs1'', e1'' = cast_exp "operand" env e1' t1 t1' in + let* qs1', e1'' = cast_exp "operand" env e1' t1 t1' in if op = `PlusMinusOp || op = `MinusPlusOp then env.pm <- true; - Ok (qs1' @ qs1'', Il.UnE (op', ot, e1''), t.it) + Ok (qs1 @ qs1', Il.UnE (op', ot, e1''), t.it) | BinE (e1, op, e2) -> - let* qs1', e1', t1 = infer_exp env e1 in - let* qs2', e2', t2 = infer_exp env e2 in + let* qs1, e1', t1 = infer_exp env e1 in + let* qs2, e2', t2 = infer_exp env e2 in let* op', ot, t1', t2', t = infer_binop env op (typ_rep env t1) (typ_rep env t2) e.at in - let* qs1'', e1'' = cast_exp "operand" env e1' t1 t1' in - let* qs2'', e2'' = cast_exp "operand" env e2' t2 t2' in - Ok (qs1' @ qs1'' @ qs2' @ qs2'', Il.BinE (op', ot, e1'', e2''), t.it) + let* qs1', e1'' = cast_exp "operand" env e1' t1 t1' in + let* qs2', e2'' = cast_exp "operand" env e2' t2 t2' in + Ok (qs1 @ qs1' @ qs2 @ qs2', Il.BinE (op', ot, e1'', e2''), t.it) | CmpE (e1, op, ({it = CmpE (e21, _, _); _} as e2)) -> - let* qs1', e1', _t1 = infer_exp env (CmpE (e1, op, e21) $ e.at) in - let* qs2', e2', _t2 = infer_exp env e2 in - Ok (qs1' @ qs2', Il.BinE (`AndOp, `BoolT, e1', e2'), BoolT) + let* qs1, e1', _t1 = infer_exp env (CmpE (e1, op, e21) $ e.at) in + let* qs2, e2', _t2 = infer_exp env e2 in + Ok (qs1 @ qs2, Il.BinE (`AndOp, `BoolT, e1', e2'), Il.BoolT) | CmpE (e1, op, e2) -> (match infer_cmpop env op with | `Poly op' -> - let* qs', e1', e2' = + let* qs, e1', e2' = choice env [ (fun env -> - let* qs2', e2', t2 = infer_exp env e2 in - let* qs1', e1' = elab_exp env e1 t2 in - Ok (qs1' @ qs2', e1', e2') + let* qs2, e2', t2 = infer_exp env e2 in + let* qs1, e1' = elab_exp env e1 t2 in + Ok (qs1 @ qs2, e1', e2') ); (fun env -> - let* qs1', e1', t1 = infer_exp env e1 in - let* qs2', e2' = elab_exp env e2 t1 in - Ok (qs1' @ qs2', e1', e2') + let* qs1, e1', t1 = infer_exp env e1 in + let* qs2, e2' = elab_exp env e2 t1 in + Ok (qs1 @ qs2, e1', e2') ); ] in - Ok (qs', Il.CmpE (op', `BoolT, e1', e2'), BoolT) + Ok (qs, Il.CmpE (op', `BoolT, e1', e2'), Il.BoolT) | `Over elab_cmpop' -> - let* qs1', e1', t1 = infer_exp env e1 in - let* qs2', e2', t2 = infer_exp env e2 in + let* qs1, e1', t1 = infer_exp env e1 in + let* qs2, e2', t2 = infer_exp env e2 in let* op', ot, t = elab_cmpop' (typ_rep env t1) (typ_rep env t2) e.at in - let* qs1'', e1'' = cast_exp "operand" env e1' t1 t in - let* qs2'', e2'' = cast_exp "operand" env e2' t2 t in - Ok (qs1' @ qs1'' @ qs2' @ qs2'', Il.CmpE (op', ot, e1'', e2''), BoolT) + let* qs1', e1'' = cast_exp "operand" env e1' t1 t in + let* qs2', e2'' = cast_exp "operand" env e2' t2 t in + Ok (qs1 @ qs1' @ qs2 @ qs2', Il.CmpE (op', ot, e1'', e2''), Il.BoolT) ) | IdxE (e1, e2) -> - let* qs1', e1', t1 = infer_exp env e1 in + let* qs1, e1', t1 = infer_exp env e1 in let* t = as_list_typ "expression" env Infer t1 e1.at in - let* qs2', e2' = elab_exp env e2 (NumT `NatT $ e2.at) in - Ok (qs1' @ qs2', Il.IdxE (e1', e2'), t.it) + let* qs2, e2' = elab_exp env e2 (Il.NumT `NatT $ e2.at) in + Ok (qs1 @ qs2, Il.IdxE (e1', e2'), t.it) | SliceE (e1, e2, e3) -> - let* qs1', e1', t1 = infer_exp env e1 in + let* qs1, e1', t1 = infer_exp env e1 in let* _t' = as_list_typ "expression" env Infer t1 e1.at in - let* qs2', e2' = elab_exp env e2 (NumT `NatT $ e2.at) in - let* qs3', e3' = elab_exp env e3 (NumT `NatT $ e3.at) in - Ok (qs1' @ qs2' @ qs3', Il.SliceE (e1', e2', e3'), t1.it) + let* qs2, e2' = elab_exp env e2 (Il.NumT `NatT $ e2.at) in + let* qs3, e3' = elab_exp env e3 (Il.NumT `NatT $ e3.at) in + Ok (qs1 @ qs2 @ qs3, Il.SliceE (e1', e2', e3'), t1.it) | UpdE (e1, p, e2) -> - let* qs1', e1', t1 = infer_exp env e1 in - let* qs', p', t2 = elab_path env p t1 in - let* qs2', e2' = elab_exp env e2 t2 in - Ok (qs1' @ qs' @ qs2', Il.UpdE (e1', p', e2'), t1.it) + let* qs1, e1', t1 = infer_exp env e1 in + let* qs, p', t2 = elab_path env p t1 in + let* qs2, e2' = elab_exp env e2 t2 in + Ok (qs1 @ qs @ qs2, Il.UpdE (e1', p', e2'), t1.it) | ExtE (e1, p, e2) -> - let* qs1', e1', t1 = infer_exp env e1 in - let* qs', p', t2 = elab_path env p t1 in + let* qs1, e1', t1 = infer_exp env e1 in + let* qs, p', t2 = elab_path env p t1 in let* _t21 = as_list_typ "path" env Infer t2 p.at in - let* qs2', e2' = elab_exp env e2 t2 in - Ok (qs1' @ qs' @ qs2', Il.ExtE (e1', p', e2'), t1.it) + let* qs2, e2' = elab_exp env e2 t2 in + Ok (qs1 @ qs @ qs2, Il.ExtE (e1', p', e2'), t1.it) | StrE _ -> fail_infer e.at "record" | DotE (e1, atom) -> - let* qs1', e1', t1 = infer_exp env e1 in - let* tfs, dots1 = as_struct_typ "expression" env Infer t1 e1.at in - if dots1 = Dots then + let* qs1, e1', t1 = infer_exp env e1 in + let* tfs, dots = as_struct_typ "expression" env Infer t1 e1.at in + if dots = Dots then error e1.at "used record type is only partially defined at this point"; -(*TODO*) - let* t, prems = attempt (find_field tfs atom e1.at) t1 in - let e' = Il.DotE (e1', elab_atom atom (expand_id env t1)) in - let e'' = if prems = [] then e' else Il.ProjE (e' $$ e.at % elab_typ env t, 0) in - Ok (qs1', e'', t.it) + let* qsF, tF, prems = attempt (find_field tfs atom e1.at) t1 in + let qs', s = Il.Fresh.refresh_quants qsF in + let as' = il_args_of_params qs' in + let tF' = Il.Subst.subst_typ s tF in + let e' = Il.DotE (e1', elab_atom atom (expand_id env t1), as') in + let e'' = if prems = [] then e' else Il.ProjE (e' $$ e.at % tF', 0) in + Ok (qs1 @ qs', e'', tF'.it) | CommaE (e1, e2) -> - let* qs1', e1', t1 = infer_exp env e1 in - let* tfs, dots1 = as_struct_typ "expression" env Infer t1 e1.at in - if dots1 = Dots then + let* qs1, e1', t1 = infer_exp env e1 in + let* tfs, dots = as_struct_typ "expression" env Infer t1 e1.at in + if dots = Dots then error e1.at "used record type is only partially defined at this point"; - let* _ = as_cat_typ "expression" env Infer t1 e.at in + let* () = as_cat_typ "expression" env Infer t1 e.at in (* TODO(4, rossberg): this is a bit of a hack, can we avoid it? *) (match e2.it with | SeqE ({it = AtomE atom; at; _} :: es2) -> let* _t2 = attempt (find_field tfs atom at) t1 in let e2 = match es2 with [e2] -> e2 | _ -> SeqE es2 $ e2.at in - let* qs2', e2' = elab_exp env (StrE [Elem (atom, e2)] $ e2.at) t1 in - Ok (qs1' @ qs2', Il.CompE (e2', e1'), t1.it) + let* qs2, e2' = elab_exp env (StrE [Elem (atom, e2)] $ e2.at) t1 in + Ok (qs1 @ qs2, Il.CompE (e2', e1'), t1.it) | _ -> error e.at "malformed comma operator" ) | CatE (e1, e2) -> - let* qs1', e1', t1 = infer_exp env e1 in - let* _ = as_cat_typ "operand" env Infer t1 e1.at in - let* qs2', e2' = elab_exp env e2 t1 in - Ok (qs1' @ qs2', + let* qs1, e1', t1 = infer_exp env e1 in + let* () = as_cat_typ "operand" env Infer t1 e1.at in + let* qs2, e2' = elab_exp env e2 t1 in + Ok (qs1 @ qs2, (if is_iter_typ env t1 then Il.CatE (e1', e2') else Il.CompE (e1', e2')), t1.it) | MemE (e1, e2) -> choice env [ (fun env -> - let* qs1', e1', t1 = infer_exp env e1 in - let* qs2', e2' = elab_exp env e2 (IterT (t1, List) $ e2.at) in - Ok (qs1' @ qs2', Il.MemE (e1', e2'), BoolT) + let* qs1, e1', t1 = infer_exp env e1 in + let* qs2, e2' = elab_exp env e2 (Il.IterT (t1, Il.List) $ e2.at) in + Ok (qs1 @ qs2, Il.MemE (e1', e2'), Il.BoolT) ); (fun env -> - let* qs2', e2', t2 = infer_exp env e2 in + let* qs2, e2', t2 = infer_exp env e2 in let* t1 = as_list_typ "operand" env Infer t2 e2.at in - let* qs1', e1' = elab_exp env e1 t1 in - Ok (qs1' @ qs2', Il.MemE (e1', e2'), BoolT) + let* qs1, e1' = elab_exp env e1 t1 in + Ok (qs1 @ qs2, Il.MemE (e1', e2'), Il.BoolT) ); ] | LenE e1 -> - let* qs1', e1', t1 = infer_exp env e1 in + let* qs1, e1', t1 = infer_exp env e1 in let* _t11 = as_list_typ "expression" env Infer t1 e1.at in - Ok (qs1', Il.LenE e1', NumT `NatT) + Ok (qs1, Il.LenE e1', Il.NumT `NatT) | SizeE id -> let _ = find "grammar" env.grams id in - Ok ([], Il.NumE (`Nat Z.zero), NumT `NatT) + Ok ([], Il.NumE (`Nat Z.zero), Il.NumT `NatT) | ParenE e1 | ArithE e1 -> infer_exp' env e1 | TupE es -> - let* qs', es', ts = infer_exp_list env es in - Ok (qs', Il.TupE es', TupT ts) + let* qs, es', ts = infer_exp_list env es in + Ok (qs, Il.TupE es', (tup_typ' ts e.at).it) | CallE (id, as_) -> let ps, t, _ = find "definition" env.defs id in - let qs', as', s = elab_args `Rhs env as_ ps e.at in - Ok (qs', Il.CallE (id, as'), (Subst.subst_typ s t).it) + let qs, as', s = elab_args `Rhs env as_ ps e.at in + Ok (qs, Il.CallE (id, as'), (Il.Subst.subst_typ s t).it) | EpsE -> fail_infer e.at "empty sequence" | SeqE [] -> (* treat as empty tuple, not principal *) - Ok ([], Il.TupE [], TupT []) + Ok ([], Il.TupE [], Il.TupT []) | SeqE es | ListE es -> (* treat as homogeneous sequence, not principal *) - let* qs', es', ts = infer_exp_list env es in + let* qs, es', ts = infer_exp_list env es in let t = List.hd ts in if List.for_all (equiv_typ env t) (List.tl ts) then - Ok (qs', Il.ListE es', IterT (t, List)) + Ok (qs, Il.ListE es', Il.IterT (t, Il.List)) else fail_infer e.at "expression sequence" | InfixE _ -> fail_infer e.at "infix expression" | BrackE _ -> fail_infer e.at "bracket expression" | IterE (e1, iter) -> - let qs', iter' = elab_iterexp env iter in - let* qs1', e1', t1 = infer_exp env e1 in - Ok (qs1' @ qs', Il.IterE (e1', iter'), IterT (t1, match iter with ListN _ -> List | _ -> iter)) + let qs, iter' = elab_iterexp env iter in + let* qs1, e1', t1 = infer_exp env e1 in + let iter'' = match fst iter' with Il.Opt -> Il.Opt | _ -> Il.List in + Ok (qs1 @ qs, Il.IterE (e1', iter'), Il.IterT (t1, iter'')) | TypE (e1, t) -> - let _t' = elab_typ env t in - let* qs1', e1' = elab_exp env e1 t in - Ok (qs1', e1'.it, t.it) + let t' = elab_typ env t in + let* qs1, e1' = elab_exp env e1 t' in + Ok (qs1, e1'.it, t'.it) | HoleE _ -> error e.at "misplaced hole" | FuseE _ -> error e.at "misplaced token concatenation" | UnparenE _ -> error e.at "misplaced unparenthesize" @@ -1273,15 +1357,15 @@ and infer_exp' env e : (Il.param list * Il.exp' * typ') attempt = and infer_exp_list env = function | [] -> Ok ([], [], []) | e::es -> - let* qs1', e', t = infer_exp env e in - let* qs2', es', ts = infer_exp_list env es in - Ok (qs1' @ qs2', e'::es', t::ts) + let* qs1, e', t = infer_exp env e in + let* qs2, es', ts = infer_exp_list env es in + Ok (qs1 @ qs2, e'::es', t::ts) -and elab_exp env e t : (Il.param list * Il.exp) attempt = +and elab_exp env e t : (Il.quant list * Il.exp) attempt = Debug.(log_at "el.elab_exp" e.at - (fun _ -> fmt "%s : %s" (el_exp e) (el_typ t)) - (function Ok (qs', e') -> fmt "%s%s" (il_quants qs') (il_exp e') | _ -> "fail") + (fun _ -> fmt "%s : %s" (el_exp e) (il_typ t)) + (function Ok (qs, e') -> fmt "%s%s" (il_quants qs) (il_exp e') | _ -> "fail") ) @@ fun _ -> nest e.at t ( if is_iter_typ env t then @@ -1297,65 +1381,63 @@ and elab_exp env e t : (Il.param list * Il.exp) attempt = match e.it with | VarE ({it = "_"; _}, []) | EpsE | SeqE [] -> fail_silent | _ -> - let* qs', e' = elab_exp env e t1 in - let t' = elab_typ env t in - Ok (qs', lift_exp' e' iter $$ e.at % t') + let* qs, e' = elab_exp env e t1 in + Ok (qs, lift_exp' e' iter $$ e.at % t) ); (fun env -> elab_exp_plain env e t); ] else if is_notation_typ env t then - let* t1 = as_notation_typ "" env Check t e.at in + let* not = as_notation_typ "" env Check t e.at in choice env [ (fun env -> elab_exp_plain env e t); - (fun env -> elab_exp_notation env (expand_id env t) e t1 t); + (fun env -> elab_exp_notation env (expand_id env t) e not t); ] else elab_exp_plain env e t ) -and elab_exp_plain env e t : (Il.param list * Il.exp) attempt = +and elab_exp_plain env e t : (Il.quant list * Il.exp) attempt = Debug.(log_at "el.elab_exp_plain" e.at - (fun _ -> fmt "%s : %s" (el_exp e) (el_typ t)) - (function Ok (qs', e') -> fmt "%s%s" (il_quants qs') (il_exp e') | _ -> "fail") + (fun _ -> fmt "%s : %s" (el_exp e) (il_typ t)) + (function Ok (qs, e') -> fmt "%s%s" (il_quants qs) (il_exp e') | _ -> "fail") ) @@ fun _ -> - let* qs', e' = elab_exp_plain' env e t in - let t' = elab_typ env t in - Ok (qs', e' $$ e.at % t') + let* qs, e' = elab_exp_plain' env e t in + Ok (qs, e' $$ e.at % t) -and elab_exp_plain' env e t : (Il.param list * Il.exp') attempt = +and elab_exp_plain' env e t : (Il.quant list * Il.exp') attempt = match e.it with | BoolE _ | NumE _ | CvtE _ | UnE _ | BinE _ | CmpE _ | IdxE _ | DotE _ | MemE _ | LenE _ | SizeE _ | CallE _ | TypE _ | HoleE _ | FuseE _ | UnparenE _ | LatexE _ -> - let* qs1', e', t' = infer_exp env e in - let* qs2', e'' = cast_exp' "expression" env e' t' t in - Ok (qs1' @ qs2', e'') + let* qs1, e', t' = infer_exp env e in + let* qs2, e'' = cast_exp' "expression" env e' t' t in + Ok (qs1 @ qs2, e'') | TextE s -> let cs = try Utf8.decode s with Utf8.Utf8 -> [] in (* Allow treatment as character constant *) if List.length cs = 1 && is_nat_typ env t then let e' = Il.NumE (`Nat (Z.of_int (List.hd cs))) $$ e.at % (Il.NumT `NatT $ e.at) in - cast_exp' "character" env e' (NumT `NatT $ e.at) t + cast_exp' "character" env e' (Il.NumT `NatT $ e.at) t else - let* qs1', e', t' = infer_exp env e in - let* qs2', e'' = cast_exp' "expression" env e' t' t in - Ok (qs1' @ qs2', e'') + let* qs1, e', t' = infer_exp env e in + let* qs2, e'' = cast_exp' "expression" env e' t' t in + Ok (qs1 @ qs2, e'') | VarE (id, _) when id.it = "_" -> Ok ([], Il.VarE id) | VarE (id, _) -> choice env [ (fun env -> - let* qs1', e', t' = infer_exp env e in - let* qs2', e'' = cast_exp' "expression" env e' t' t in - Ok (qs1' @ qs2', e'') + let* qs1, e', t' = infer_exp env e in + let* qs2, e'' = cast_exp' "expression" env e' t' t in + Ok (qs1 @ qs2, e'') ); (fun env -> if is_iter_typ env t && id.it <> "_" then (* Never infer an iteration type for a variable *) let* t1, iter = as_iter_typ "" env Check t e.at in - let* qs', e' = elab_exp env e t1 in - Ok (qs', lift_exp' e' iter) + let* qs, e' = elab_exp env e t1 in + Ok (qs, lift_exp' e' iter) else if not (bound env.vars id || bound env.gvars (strip_var_suffix id)) then let _ = () in env.vars <- bind "variable" env.vars id t; @@ -1366,64 +1448,64 @@ and elab_exp_plain' env e t : (Il.param list * Il.exp') attempt = ] | SliceE (e1, e2, e3) -> let* _t' = as_list_typ "expression" env Check t e1.at in - let* qs1', e1' = elab_exp env e1 t in - let* qs2', e2' = elab_exp env e2 (NumT `NatT $ e2.at) in - let* qs3', e3' = elab_exp env e3 (NumT `NatT $ e3.at) in - Ok (qs1' @ qs2' @ qs3', Il.SliceE (e1', e2', e3')) + let* qs1, e1' = elab_exp env e1 t in + let* qs2, e2' = elab_exp env e2 (Il.NumT `NatT $ e2.at) in + let* qs3, e3' = elab_exp env e3 (Il.NumT `NatT $ e3.at) in + Ok (qs1 @ qs2 @ qs3, Il.SliceE (e1', e2', e3')) | UpdE (e1, p, e2) -> - let* qs1', e1' = elab_exp env e1 t in - let* qs', p', t2 = elab_path env p t in - let* qs2', e2' = elab_exp env e2 t2 in - Ok (qs1' @ qs' @ qs2', Il.UpdE (e1', p', e2')) + let* qs1, e1' = elab_exp env e1 t in + let* qs, p', t2 = elab_path env p t in + let* qs2, e2' = elab_exp env e2 t2 in + Ok (qs1 @ qs @ qs2, Il.UpdE (e1', p', e2')) | ExtE (e1, p, e2) -> - let* qs1', e1' = elab_exp env e1 t in - let* qs', p', t2 = elab_path env p t in + let* qs1, e1' = elab_exp env e1 t in + let* qs, p', t2 = elab_path env p t in let* _t21 = as_list_typ "path" env Check t2 p.at in - let* qs2', e2' = elab_exp env e2 t2 in - Ok (qs1' @ qs' @ qs2', Il.ExtE (e1', p', e2')) + let* qs2, e2' = elab_exp env e2 t2 in + Ok (qs1 @ qs @ qs2, Il.ExtE (e1', p', e2')) | StrE efs -> let* tfs, dots = as_struct_typ "record" env Check t e.at in if dots = Dots then error e.at "used record type is only partially defined at this point"; - let* qs', efs' = elab_expfields env (expand_id env t) (filter_nl efs) tfs t e.at in - Ok (qs', Il.StrE efs') + let* qs, efs' = elab_expfields env (expand_id env t) (filter_nl efs) tfs t e.at in + Ok (qs, Il.StrE efs') | CommaE (e1, e2) -> - let* qs1', e1' = elab_exp env e1 t in + let* qs1, e1' = elab_exp env e1 t in let* tfs, dots1 = as_struct_typ "expression" env Check t e1.at in if dots1 = Dots then error e1.at "used record type is only partially defined at this point"; - let* _ = as_cat_typ "expression" env Check t e.at in + let* () = as_cat_typ "expression" env Check t e.at in (* TODO(4, rossberg): this is a bit of a hack, can we avoid it? *) (match e2.it with | SeqE ({it = AtomE atom; at; _} :: es2) -> let* _t2 = attempt (find_field tfs atom at) t in let e2 = match es2 with [e2] -> e2 | _ -> SeqE es2 $ e2.at in - let* qs2', e2' = elab_exp env (StrE [Elem (atom, e2)] $ e2.at) t in - Ok (qs1' @ qs2', Il.CompE (e2', e1')) + let* qs2, e2' = elab_exp env (StrE [Elem (atom, e2)] $ e2.at) t in + Ok (qs1 @ qs2, Il.CompE (e2', e1')) | _ -> error e.at "malformed comma operator" ) | CatE (e1, e2) -> - let* _ = as_cat_typ "expression" env Check t e.at in - let* qs1', e1' = elab_exp env e1 t in - let* qs2', e2' = elab_exp env e2 t in - Ok (qs1' @ qs2', + let* () = as_cat_typ "expression" env Check t e.at in + let* qs1, e1' = elab_exp env e1 t in + let* qs2, e2' = elab_exp env e2 t in + Ok (qs1 @ qs2, if is_iter_typ env t then Il.CatE (e1', e2') else Il.CompE (e1', e2')) | ParenE e1 | ArithE e1 -> elab_exp_plain' env e1 t | TupE es -> - let* ts = as_tup_typ "tuple" env Check t e.at in - let* qs', es' = elab_exp_list env es ts e.at in - Ok (qs', Il.TupE es') + let* xts = as_tup_typ "tuple" env Check t e.at in + let* qs, es' = elab_exp_list env es xts e.at in + Ok (qs, Il.TupE es') | ListE es -> let* t1, iter = as_iter_typ "list" env Check t e.at in - if iter <> List then fail_typ env e.at "list" t else - let ts = List.init (List.length es) (fun _ -> t1) in - let* qs', es' = elab_exp_list env es ts e.at in - Ok (qs', Il.ListE es') - | SeqE [] when is_empty_typ env t -> - let* qs1', e', t' = infer_exp env e in - let* qs2', e'' = cast_exp' "empty expression" env e' t' t in - Ok (qs1' @ qs2', e'') + if iter <> Il.List then fail_typ env e.at "list" t else + let xts = List.init (List.length es) (fun _ -> "_" $ t1.at, t1) in + let* qs, es' = elab_exp_list env es xts e.at in + Ok (qs, Il.ListE es') + | SeqE [] when is_empty_notation_typ env t -> + let* qs1, e', t' = infer_exp env e in + let* qs2, e'' = cast_exp' "empty expression" env e' t' t in + Ok (qs1 @ qs2, e'') | EpsE | SeqE _ when is_iter_typ env t -> let* t1, iter = as_iter_typ "" env Check t e.at in elab_exp_iter' env (unseq_exp e) (t1, iter) t e.at @@ -1436,13 +1518,13 @@ and elab_exp_plain' env e t : (Il.param list * Il.exp') attempt = * either a defined notation/variant type or (for SeqE) an iteration type; * the latter case is already captured above *) if is_notation_typ env t then - let* nt = as_notation_typ "" env Check t e.at in - let* qs', e' = elab_exp_notation env (expand_id env t) e nt t in - Ok (qs', e'.it) + let* not = as_notation_typ "" env Check t e.at in + let* qs, e' = elab_exp_notation env (expand_id env t) e not t in + Ok (qs, e'.it) else if is_variant_typ env t then let* tcs, _ = as_variant_typ "" env Check t e.at in - let* qs', e' = elab_exp_variant env (expand_id env t) e tcs t e.at in - Ok (qs', e'.it) + let* qs, e' = elab_exp_variant env (expand_id env t) e tcs t e.at in + Ok (qs, e'.it) else let name = match e.it with @@ -1455,227 +1537,219 @@ and elab_exp_plain' env e t : (Il.param list * Il.exp') attempt = in fail_typ env e.at name t | IterE (e1, iter2) -> let* t1, iter = as_iter_typ "iteration" env Check t e.at in - let qs2', iter2' = elab_iterexp env iter2 in - let* qs1', e1' = elab_exp env e1 t1 in - let qs' = qs1' @ qs2' in + let qs2, iter2' = elab_iterexp env iter2 in + let* qs1, e1' = elab_exp env e1 t1 in + let qs = qs1 @ qs2 in let e' = Il.IterE (e1', iter2') in match iter2, iter with - | Opt, Opt -> Ok (qs', e') - | Opt, List -> - Ok (qs', Il.LiftE (e' $$ e.at % (Il.IterT (elab_typ env t1, Opt) $ e1.at))) - | _, Opt -> fail_typ env e.at "iteration" t - | _, _ -> Ok (qs', e') - -and elab_exp_list env es ts at : (Il.param list * Il.exp list) attempt = - match es, ts with + | Opt, Il.Opt -> Ok (qs, e') + | Opt, Il.List -> + Ok (qs, Il.LiftE (e' $$ e.at % (Il.IterT (t1, Il.Opt) $ e1.at))) + | _, Il.Opt -> fail_typ env e.at "iteration" t + | _, _ -> Ok (qs, e') + +and elab_exp_list env es xts at : (Il.quant list * Il.exp list) attempt = + match es, xts with | [], [] -> Ok ([], []) - | e::es, t::ts -> - let* qs1', e' = elab_exp env e t in - let* qs2', es' = elab_exp_list env es ts at in - Ok (qs1' @ qs2', e'::es') + | e::es, (_x, t)::xts -> + let* qs1, e' = elab_exp env e t in + let* qs2, es' = elab_exp_list env es xts at in + Ok (qs1 @ qs2, e'::es') | _, _ -> fail at "arity mismatch for expression list" -and elab_expfields env tid efs tfs t0 at : (Il.param list * Il.expfield list) attempt = +and elab_expfields env tid efs tfs t0 at : (Il.quant list * Il.expfield list) attempt = Debug.(log_in_at "el.elab_expfields" at - (fun _ -> fmt "{%s} : {%s} = %s" (list el_expfield efs) (list el_typfield tfs) (el_typ t0)) + (fun _ -> fmt "{%s} : {%s} = %s" (list el_expfield efs) (list (il_typfield `H) tfs) (il_typ t0)) ); assert (valid_tid tid); match efs, tfs with | [], [] -> Ok ([], []) - | (atom1, e)::efs2, (atom2, (t, prems), _)::tfs2 when atom1.it = atom2.it -> - let* qs1', es', _s = elab_exp_notation' env tid e t in - let* qs2', efs2' = elab_expfields env tid efs2 tfs2 t0 at in + | (atom1, e)::efs2, (atom2, (qs, t, prems), _)::tfs2 when atom1.it = atom2.it -> + let not = Mixop.(Seq [Atom atom2; Arg t]) in + let* qs1, es', s = elab_exp_notation' env tid e not in + let* qs2, efs2' = elab_expfields env tid efs2 tfs2 t0 at in let e' = (if prems = [] then tup_exp' else tup_exp_bind') es' e.at in - Ok (qs1' @ qs2', (elab_atom atom1 tid, e') :: efs2') - | _, (atom, (t, prems), _)::tfs2 -> + let as' = Il.Subst.subst_args s (il_args_of_params qs) in + Ok (qs1 @ qs2, (elab_atom atom1 tid, as', e') :: efs2') + | _, (atom, (_qs, t, prems), _)::tfs2 -> let atom' = string_of_atom atom in - let* qs1', e1' = - cast_empty ("omitted record field `" ^ atom' ^ "`") env t at (elab_typ env t) in + let* qs1, e1' = cast_empty ("omitted record field `" ^ atom' ^ "`") env t at in let e' = (if prems = [] then tup_exp' else tup_exp_bind') [e1'] at in - let* qs2', efs2' = elab_expfields env tid efs tfs2 t0 at in - Ok (qs1' @ qs2', (elab_atom atom tid, e') :: efs2') + let* qs2, efs2' = elab_expfields env tid efs tfs2 t0 at in +(*TODO*) + Ok (qs1 @ qs2, (elab_atom atom tid, [], e') :: efs2') | (atom, e)::_, [] -> fail_atom e.at atom t0 "undefined or misplaced record field" -and elab_exp_iter env es (t1, iter) t at : (Il.param list * Il.exp) attempt = - let* qs', e' = elab_exp_iter' env es (t1, iter) t at in - Ok (qs', e' $$ at % elab_typ env t) +and elab_exp_iter env es (t1, iter) t at : (Il.quant list * Il.exp) attempt = + let* qs, e' = elab_exp_iter' env es (t1, iter) t at in + Ok (qs, e' $$ at % t) -and elab_exp_iter' env es (t1, iter) t at : (Il.param list * Il.exp') attempt = +and elab_exp_iter' env es (t1, iter) t at : (Il.quant list * Il.exp') attempt = Debug.(log_at "el.elab_exp_iter" at - (fun _ -> fmt "%s : %s = (%s)%s" (seq el_exp es) (el_typ t) (el_typ t1) (el_iter iter)) - (function Ok (qs', e') -> fmt "%s%s" (il_quants qs') (il_exp (e' $$ at % elab_typ env t)) | _ -> "fail") + (fun _ -> fmt "%s : %s = (%s)%s" (seq el_exp es) (il_typ t) (il_typ t1) (il_iter iter)) + (function Ok (qs, e') -> fmt "%s%s" (il_quants qs) (il_exp (e' $$ at % t)) | _ -> "fail") ) @@ fun _ -> match es, iter with | [], Opt -> Ok ([], Il.OptE None) | [e1], Opt -> - let* qs1', e1' = elab_exp env e1 t1 in - Ok (qs1', Il.OptE (Some e1')) + let* qs1, e1' = elab_exp env e1 t1 in + Ok (qs1, Il.OptE (Some e1')) | _::_::_, Opt -> fail_typ env at "expression" t | [], List -> Ok ([], Il.ListE []) | e1::es2, List -> - let* qs1', e1' = elab_exp env e1 t in + let* qs1, e1' = elab_exp env e1 t in let at' = Source.over_region (after_region e1.at :: List.map Source.at es2) in - let* qs2', e2' = elab_exp_iter env es2 (t1, iter) t at' in - Ok (qs1' @ qs2', cat_exp' e1' e2') + let* qs2, e2' = elab_exp_iter env es2 (t1, iter) t at' in + Ok (qs1 @ qs2, cat_exp' e1' e2') | _, (List1 | ListN _) -> assert false -and elab_exp_notation env tid e nt t : (Il.param list * Il.exp) attempt = +and elab_exp_notation env tid e (qs, t1, mixop, not) t : (Il.quant list * Il.exp) attempt = (* Convert notation into applications of mixin operators *) assert (valid_tid tid); - let* qs1', es', _s = elab_exp_notation' env tid e nt in + let* qs', es', s = elab_exp_notation' env tid e not in + let as' = Il.Subst.subst_args s (il_args_of_params qs) in + Ok (qs', Il.CaseE (mixop, as', Il.TupE es' $$ e.at % t1) $$ e.at % t) - let mixop, qs2', t', _prems', _ = elab_typ_notation' env tid e.at nt [] in - Ok (qs1' @ qs2', Il.CaseE (mixop, Il.TupE es' $$ e.at % t') $$ e.at % elab_typ env t) -(* - let mixop, ts', _ = elab_typ_notation env tid nt in - assert (List.length es' = List.length ts'); - Ok (Il.CaseE (mixop, tup_exp_bind' es' e.at) $$ e.at % elab_typ env t) -*) - -and elab_exp_notation' env tid e t : (Il.param list * Il.exp list * Subst.t) attempt = +and elab_exp_notation' env tid e not : (Il.quant list * Il.exp list * Il.Subst.t) attempt = Debug.(log_at "el.elab_exp_notation" e.at - (fun _ -> fmt "%s : %s" (el_exp e) (el_typ t)) - (function Ok (qs', es', _) -> fmt "%s %s" (il_quants qs') (seq il_exp es') | _ -> "fail") + (fun _ -> fmt "%s : %s" (el_exp e) (string_of_notation not)) + (function Ok (qs, es', _) -> fmt "%s %s" (il_quants qs) (seq il_exp es') | _ -> "fail") ) @@ fun _ -> assert (valid_tid tid); - match e.it, t.it with - | AtomE atom, AtomT atom' -> - if atom.it <> atom'.it then fail_typ env e.at "atom" t else + match e.it, not with + | AtomE atom, Atom atom' -> + if atom.it <> atom'.it then fail_not env e.at "atom" not else let _ = elab_atom atom tid in - Ok ([], [], Subst.empty) - | InfixE (e1, atom, e2), InfixT (_, atom', _) when Atom.sub atom' atom -> + Ok ([], [], Il.Subst.empty) + | InfixE (e1, atom, e2), Infix (_, atom', _) when Atom.sub atom' atom -> let e21 = ParenE (SeqE [] $ e2.at) $ e2.at in elab_exp_notation' env tid - (InfixE (e1, atom', SeqE [e21; e2] $ e2.at) $ e.at) t - | InfixE (e1, atom, e2), InfixT (t1, atom', t2) -> - if atom.it <> atom'.it then fail_typ env e.at "infix expression" t else - let* qs1', es1', s1 = elab_exp_notation' env tid e1 t1 in - let* qs2', es2', s2 = elab_exp_notation' env tid e2 (Subst.subst_typ s1 t2) in + (InfixE (e1, atom', SeqE [e21; e2] $ e2.at) $ e.at) not + | InfixE (e1, atom, e2), Infix (not1, atom', not2) -> + if atom.it <> atom'.it then fail_not env e.at "infix expression" not else + let* qs1, es1', s1 = elab_exp_notation' env tid e1 not1 in + let* qs2, es2', s2 = elab_exp_notation' env tid e2 (subst_notation s1 not2) in let _ = elab_atom atom tid in - Ok (qs1' @ qs2', es1' @ es2', Subst.union s1 s2) - | BrackE (l, e1, r), BrackT (l', t1, r') -> - if (l.it, r.it) <> (l'.it, r'.it) then fail_typ env e.at "bracket expression" t else + Ok (qs1 @ qs2, es1' @ es2', Il.Subst.union s1 s2) + | BrackE (l, e1, r), Brack (l', not1, r') -> + if (l.it, r.it) <> (l'.it, r'.it) then fail_not env e.at "bracket expression" not else let _ = elab_atom l tid in let _ = elab_atom r tid in - elab_exp_notation' env tid e1 t1 + elab_exp_notation' env tid e1 not1 - | SeqE [], SeqT [] -> - Ok ([], [], Subst.empty) - | _, SeqT (t1::ts2) when is_iter_typ env t1 -> + | SeqE [], Seq [] -> + Ok ([], [], Il.Subst.empty) + | _, Seq ((Arg t1)::nots2) when is_iter_typ env t1 -> let* t11, iter = as_iter_typ "iteration" env Check t1 e.at in - elab_exp_notation_iter env tid (unseq_exp e) (t11, iter) t1 ts2 e.at - | SeqE ({it = AtomE atom; at; _}::es2), SeqT ({it = AtomT atom'; _}::_) + elab_exp_notation_iter env tid (unseq_exp e) (t11, iter) t1 nots2 e.at + | SeqE ({it = AtomE atom; at; _}::es2), Seq ((Atom atom')::_) when Atom.sub atom' atom -> let e21 = ParenE (SeqE [] $ at) $ at in - elab_exp_notation' env tid (SeqE ((AtomE atom' $ at) :: e21 :: es2) $ e.at) t + elab_exp_notation' env tid (SeqE ((AtomE atom' $ at) :: e21 :: es2) $ e.at) not (* Trailing notation can be flattened *) - | SeqE (e1::es2), SeqT [t1] -> + | SeqE (e1::es2), Seq [Arg t1 as not1] -> choice env [ (fun env -> - let* qs1', es1', s1 = elab_exp_notation' env tid (unparen_exp e1) t1 in + let* qs1, es1', s1 = elab_exp_notation' env tid (unparen_exp e1) not1 in let e2 = SeqE es2 $ Source.over_region (after_region e1.at :: List.map Source.at es2) in - let t2 = SeqT [] $ Source.after_region t1.at in - let* qs2', es2', s2 = elab_exp_notation' env tid e2 (Subst.subst_typ s1 t2) in - Ok (qs1' @ qs2', es1' @ es2', Subst.union s1 s2) + let* qs2, es2', s2 = elab_exp_notation' env tid e2 (Seq []) in + Ok (qs1 @ qs2, es1' @ es2', Il.Subst.union s1 s2) ); (fun env -> - let* qs', e' = elab_exp env e t1 in - Ok (qs', [e'], Subst.empty) + let* qs, e' = elab_exp env e t1 in + Ok (qs, [e'], Il.Subst.empty) ) ] - | SeqE (e1::es2), SeqT (t1::ts2) -> - let* qs1', es1', s1 = elab_exp_notation' env tid (unparen_exp e1) t1 in + | SeqE (e1::es2), Seq (not1::nots2) -> + let* qs1, es1', s1 = elab_exp_notation' env tid (unparen_exp e1) not1 in let e2 = SeqE es2 $ Source.over_region (after_region e1.at :: List.map Source.at es2) in - let t2 = SeqT ts2 $ Source.over_region (after_region t1.at :: List.map Source.at ts2) in - let* qs2', es2', s2 = elab_exp_notation' env tid e2 (Subst.subst_typ s1 t2) in - Ok (qs1' @ qs2', es1' @ es2', Subst.union s1 s2) + let not2 = Mixop.Seq nots2 in + let* qs2, es2', s2 = elab_exp_notation' env tid e2 (subst_notation s1 not2) in + Ok (qs1 @ qs2, es1' @ es2', Il.Subst.union s1 s2) (* Trailing elements can be omitted if they can be eps *) - | SeqE [], SeqT (t1::ts2) -> - let* qs1', e1' = cast_empty "omitted sequence tail" env t1 e.at (!!!env tid t1) in - let t2 = SeqT ts2 $ Source.over_region (after_region t1.at :: List.map Source.at ts2) in - let* qs2', es2', s2 = elab_exp_notation' env tid e t2 in - Ok (qs1' @ qs2', e1' :: es2', s2) - | SeqE (e1::_), SeqT [] -> + | SeqE [], Seq ((Arg t1)::nots2) -> + let* qs1, e1' = cast_empty "omitted sequence tail" env t1 e.at in + let* qs2, es2', s2 = elab_exp_notation' env tid e (Seq nots2) in + Ok (qs1 @ qs2, e1' :: es2', s2) + | SeqE (e1::_), Seq [] -> fail e1.at "expression is not empty" (* Since trailing elements can be omitted, a singleton may match a sequence *) - | _, SeqT _ -> - elab_exp_notation' env tid (SeqE [e] $ e.at) t + | _, Seq _ -> + elab_exp_notation' env tid (SeqE [e] $ e.at) not +(* | ParenE e1, _ | ArithE e1, _ -> - elab_exp_notation' env tid e1 t - | _, ParenT t1 -> - elab_exp_notation' env tid e t1 + elab_exp_notation' env tid e1 not +*) - | _, (AtomT _ | InfixT _ | BrackT _) -> - fail_typ env e.at "expression" t + | _, Arg t -> + let* qs, e' = elab_exp env e t in + Ok (qs, [e'], Il.Subst.add_varid Il.Subst.empty (varid_of_typ' t) e') - | _, _ -> - let* qs', e' = elab_exp env e t in - Ok (qs', [e'], Subst.add_varid Subst.empty (Convert.varid_of_typ t) e) + | _, (Atom _ | Brack _ | Infix _) -> + fail e.at "expression does not match expected notation" -and elab_exp_notation_iter env tid es (t1, iter) t ts at : (Il.param list * Il.exp list * Subst.t) attempt = +and elab_exp_notation_iter env tid es (t1, iter) t nots at : (Il.quant list * Il.exp list * Il.Subst.t) attempt = assert (valid_tid tid); - let t' = elab_typ env t in - let* qs', e', es', s = elab_exp_notation_iter' env tid es (t1, iter) t ts t' at in - Ok (qs', e'::es', s) + let* qs, e', es', s = elab_exp_notation_iter' env tid es (t1, iter) t nots at in + Ok (qs, e'::es', s) -and elab_exp_notation_iter' env tid es (t1, iter) t ts t' at : (Il.param list * Il.exp * Il.exp list * Subst.t) attempt = +and elab_exp_notation_iter' env tid es (t1, iter) t nots at : (Il.quant list * Il.exp * Il.exp list * Il.Subst.t) attempt = Debug.(log_at "el.elab_exp_notation_iter" at - (fun _ -> fmt "%s : %s = (%s)%s" (seq el_exp es) (el_typ t) (el_typ t1) (el_iter iter)) - (function Ok (qs', e', es', _) -> fmt "%s %s" (il_quants qs') (seq il_exp (e'::es')) | _ -> "fail") + (fun _ -> fmt "%s : %s = (%s)%s" (seq el_exp es) (il_typ t) (il_typ t1) (il_iter iter)) + (function Ok (qs, e', es', _) -> fmt "%s %s" (il_quants qs) (seq il_exp (e'::es')) | _ -> "fail") ) @@ fun _ -> - let tat' = Source.over_region (after_region t.at :: List.map Source.at ts) in match es, iter with - | [], Opt -> - let* qs', es', s = elab_exp_notation' env tid (SeqE [] $ at) (SeqT ts $ tat') in - Ok (qs', Il.OptE None $$ at % t', es', s) + | [], Il.Opt -> + let* qs, es', s = elab_exp_notation' env tid (SeqE [] $ at) (Seq nots) in + Ok (qs, Il.OptE None $$ at % t, es', s) | e1::es2, Opt -> choice env [ (fun env -> - let* qs', es', s = elab_exp_notation' env tid (SeqE (e1::es2) $ at) (SeqT ts $ tat') in - Ok (qs', Il.OptE None $$ Source.before_region e1.at % t', es', s) + let* qs, es', s = elab_exp_notation' env tid (SeqE (e1::es2) $ at) (Seq nots) in + Ok (qs, Il.OptE None $$ Source.before_region e1.at % t, es', s) ); (fun env -> - let* qs1', e1' = elab_exp env e1 t in + let* qs1, e1' = elab_exp env e1 t in let at' = Source.over_region (after_region e1.at :: List.map Source.at es2) in - let* qs2', es2', s = elab_exp_notation' env tid (SeqE es2 $ at') (SeqT ts $ tat') in - Ok (qs1' @ qs2', e1', es2', s) + let* qs2, es2', s = elab_exp_notation' env tid (SeqE es2 $ at') (Seq nots) in + Ok (qs1 @ qs2, e1', es2', s) ); ] | [], List -> - let* qs', es', s = elab_exp_notation' env tid (SeqE [] $ at) (SeqT ts $ tat') in - Ok (qs', Il.ListE [] $$ at % t', es', s) + let* qs, es', s = elab_exp_notation' env tid (SeqE [] $ at) (Seq nots) in + Ok (qs, Il.ListE [] $$ at % t, es', s) | e1::es2, List -> choice env [ (fun env -> - let* qs', es', s = elab_exp_notation' env tid (SeqE (e1::es2) $ at) (SeqT ts $ tat') in - Ok (qs', Il.ListE [] $$ at % t', es', s) + let* qs, es', s = elab_exp_notation' env tid (SeqE (e1::es2) $ at) (Seq nots) in + Ok (qs, Il.ListE [] $$ at % t, es', s) ); (fun env -> - let* qs1', e1' = elab_exp env e1 t in + let* qs1, e1' = elab_exp env e1 t in let at' = Source.over_region (after_region e1.at :: List.map Source.at es2) in - let* qs2', e2', es2', s = elab_exp_notation_iter' env tid es2 (t1, iter) t ts t' at' in - Ok (qs1' @ qs2', cat_exp' e1' e2' $$ Source.over_region [e1'.at; e2'.at] % t', es2', s) + let* qs2, e2', es2', s = elab_exp_notation_iter' env tid es2 (t1, iter) t nots at' in + Ok (qs1 @ qs2, cat_exp' e1' e2' $$ Source.over_region [e1'.at; e2'.at] % t, es2', s) ); ] | _, (List1 | ListN _) -> assert false -and elab_exp_variant env tid e cases t at : (Il.param list * Il.exp) attempt = +and elab_exp_variant env tid e cases t at : (Il.quant list * Il.exp) attempt = Debug.(log_at "el.elab_exp_variant" e.at - (fun _ -> fmt "%s : %s = %s" (el_exp e) tid.it (el_typ t)) - (function Ok (qs', e') -> fmt "%s%s" (il_quants qs') (il_exp e') | _ -> "fail") + (fun _ -> fmt "%s : %s = %s" (el_exp e) tid.it (il_typ t)) + (function Ok (qs, e') -> fmt "%s%s" (il_quants qs) (il_exp e') | _ -> "fail") ) @@ fun _ -> assert (valid_tid tid); let* atom = @@ -1686,15 +1760,16 @@ and elab_exp_variant env tid e cases t at : (Il.param list * Il.exp) attempt = | BrackE (atom, _, _) -> Ok atom | _ -> fail_typ env at "expression" t in - let* t1, _prems = attempt (find_case_sub cases atom atom.at) t in - let* qs1', es', _s = elab_exp_notation' env tid e t1 in + let* not1, _prems = attempt (find_case_sub cases atom atom.at) t in + let* qs1, es', _s = elab_exp_notation' env tid e not1 in let t2 = expand env t $ at in let t2' = elab_typ env t2 in - let mixop, qs2', t1', _prems', _ = elab_typ_notation' env tid e.at t1 [] in - let* qs3', e' = cast_exp "variant case" env + let mixop, qs2, t1', _prems', _ = elab_typ_notation' env tid e.at not1 [] in +(*TODO*) + let* qs3, e' = cast_exp "variant case" env (Il.CaseE (mixop, Il.TupE es' $$ at % t1') $$ at % t2') t2 t in - Ok (qs1' @ qs2' @ qs3', e') + Ok (qs1 @ qs2 @ qs3, e') (* let mixop, ts', _ = elab_typ_notation env tid t1 in assert (List.length es' = List.length ts'); @@ -1702,45 +1777,50 @@ and elab_exp_variant env tid e cases t at : (Il.param list * Il.exp) attempt = (Il.CaseE (mixop, tup_exp_bind' es' at) $$ at % t2') t2 t *) -and elab_path env p t : (Il.param list * Il.path * typ) attempt = - let* qs', p', t' = elab_path' env p t in - Ok (qs', p' $$ p.at % elab_typ env t', t') +and elab_path env p t : (Il.quant list * Il.path * Il.typ) attempt = + let* qs, p', t' = elab_path' env p t in + Ok (qs, p' $$ p.at % t', t') -and elab_path' env p t : (Il.param list * Il.path' * typ) attempt = +and elab_path' env p t : (Il.quant list * Il.path' * Il.typ) attempt = match p.it with | RootP -> Ok ([], Il.RootP, t) | IdxP (p1, e1) -> - let* qs1', p1', t1 = elab_path env p1 t in - let qs2', e1' = checkpoint (elab_exp env e1 (NumT `NatT $ e1.at)) in + let* qs1, p1', t1 = elab_path env p1 t in + let qs2, e1' = checkpoint (elab_exp env e1 (Il.NumT `NatT $ e1.at)) in let* t' = as_list_typ "path" env Check t1 p1.at in - Ok (qs1' @ qs2', Il.IdxP (p1', e1'), t') + Ok (qs1 @ qs2, Il.IdxP (p1', e1'), t') | SliceP (p1, e1, e2) -> - let* qs', p1', t1 = elab_path env p1 t in - let qs1', e1' = checkpoint (elab_exp env e1 (NumT `NatT $ e1.at)) in - let qs2', e2' = checkpoint (elab_exp env e2 (NumT `NatT $ e2.at)) in + let* qs, p1', t1 = elab_path env p1 t in + let qs1, e1' = checkpoint (elab_exp env e1 (Il.NumT `NatT $ e1.at)) in + let qs2, e2' = checkpoint (elab_exp env e2 (Il.NumT `NatT $ e2.at)) in let* _ = as_list_typ "path" env Check t1 p1.at in - Ok (qs' @ qs1' @ qs2', Il.SliceP (p1', e1', e2'), t1) + Ok (qs @ qs1 @ qs2, Il.SliceP (p1', e1', e2'), t1) | DotP (p1, atom) -> - let* qs1', p1', t1 = elab_path env p1 t in - let* tfs, dots1 = as_struct_typ "path" env Check t1 p1.at in - if dots1 = Dots then + let* qs1, p1', t1 = elab_path env p1 t in + let* tfs, dots = as_struct_typ "path" env Check t1 p1.at in + if dots = Dots then error p1.at "used record type is only partially defined at this point"; (*TODO*) let* t', _prems = attempt (find_field tfs atom p1.at) t1 in - Ok (qs1', Il.DotP (p1', elab_atom atom (expand_id env t1)), t') + Ok (qs1, Il.DotP (p1', elab_atom atom (expand_id env t1)), t') -and cast_empty phrase env t at t' : (Il.param list * Il.exp) attempt = +and cast_empty phrase env t at : (Il.quant list * Il.exp) attempt = Debug.(log_at "el.elab_exp_cast_empty" at - (fun _ -> fmt "%s >> (%s)" (el_typ t) (el_typ (expand_notation env t $ t.at))) - (function Ok (qs', e') -> fmt "%s%s" (il_quants qs') (il_exp e') | _ -> "fail") + (fun _ -> fmt "%s >> (%s)" (il_typ t) (il_typ t)) + (function Ok (qs, e') -> fmt "%s%s" (il_quants qs) (il_exp e') | _ -> "fail") ) @@ fun _ -> nest at t ( - match expand_notation env t with - | SeqT [] -> Ok ([], Il.ListE [] $$ at % t') - | IterT (_, Opt) -> Ok ([], Il.OptE None $$ at % t') - | IterT (_, List) -> Ok ([], Il.ListE [] $$ at % t') + match expand env t with + | Il.IterT (_, Opt) -> Ok ([], Il.OptE None $$ at % t') + | Il.IterT (_, List) -> Ok ([], Il.ListE [] $$ at % t') + | VarT _ when is_notation_typ env t -> + (match expand_notation env t with + | SeqT [] -> Ok ([], Il.ListE [] $$ at % t') + | _ -> fail_typ env at phrase t + ) +(* | VarT _ when is_iter_notation_typ env t -> (match expand_iter_notation env t with | IterT (_, iter) as t1 -> @@ -1751,37 +1831,156 @@ and cast_empty phrase env t at t' : (Il.param list * Il.exp) attempt = Ok ([], Il.CaseE (mixop, tup_exp_bind' [e1' $$ at % List.hd ts'] at) $$ at % t') | _ -> fail_typ env at phrase t ) +*) | _ -> fail_typ env at phrase t ) -and cast_exp phrase env e' t1 t2 : (Il.param list * Il.exp) attempt = - let* qs', e'' = nest e'.at t2 (cast_exp' phrase env e' t1 t2) in - Ok (qs', e'' $$ e'.at % elab_typ env (expand_nondef env t2)) +and cast_exp phrase env e' t1 t2 : (Il.quant list * Il.exp) attempt = + let* qs, e'' = nest e'.at t2 (cast_exp' phrase env e' t1 t2) in + Ok (qs, e'' $$ e'.at % elab_typ env (expand_nondef env t2)) -and cast_exp' phrase env e' t1 t2 : (Il.param list * Il.exp') attempt = +and cast_exp' phrase env e' t1 t2 : (Il.quant list * Il.exp') attempt = Debug.(log_at "el.elab_exp_cast" e'.at - (fun _ -> fmt "%s <: %s >> (%s) <: (%s) = (%s)" (el_typ t1) (el_typ t2) - (el_typ (expand_def env t1 $ t1.at)) (el_typ (expand_def env t2 $ t2.at)) - (el_typ (expand_nondef env t2)) + (fun _ -> fmt "%s <: %s >> (%s) <: (%s) = (%s)" (il_typ t1) (il_typ t2) + (il_deftyp (expand_def env t1 $ t1.at)) (il_deftyp (expand_def env t2 $ t2.at)) + (il_typ (expand_nondef env t2)) ) - (function Ok (qs', e'') -> fmt "%s%s" (il_quants qs') (il_exp (e'' $$ e'.at % elab_typ env t2)) | _ -> "fail") + (function Ok (qs, e'') -> fmt "%s%s" (il_quants qs) (il_exp (e'' $$ e'.at % t2)) | _ -> "fail") ) @@ fun _ -> if equiv_typ env t1 t2 then Ok ([], e'.it) else - match expand_def env t1, expand_def env t2 with - | _, _ when sub_typ env t1 t2 -> - let t1' = elab_typ env (expand_nondef env t1) in - let t2' = elab_typ env (expand_nondef env t2) in + match expand env t1, expand env t2 with + | t1', t2' when sub_typ env t1' t2' -> Ok ([], Il.SubE (e', t1', t2')) - | NumT nt1, NumT nt2 when nt1 < nt2 || lax_num && nt1 <> `RealT -> + | Il.NumT nt1, Il.NumT nt2 when nt1 < nt2 || lax_num && nt1 <> `RealT -> Ok ([], Il.CvtE (e', nt1, nt2)) - | TupT [], SeqT [] -> + + | Il.TupT [], Il.VarT _ as t2' when is_empty_typ t2' -> Ok ([], e'.it) + + | IterT (t11, Opt), IterT (t21, List) -> + choice env [ + (fun env -> + let t1' = Il.IterT (t11, Il.List) $ e'.at in + let e'' = Il.LiftE e' $$ e'.at % t1' in + cast_exp' phrase env e'' t1' t2 + ); + (fun env -> + let* qs, e'' = cast_exp phrase env e' t1 t21 in + Ok (qs, Il.ListE [e'']) + ); + ] + | _, IterT (t21, (List | List1)) -> + let* qs, e'' = cast_exp phrase env e' t1 t21 in + Ok (qs, Il.ListE [e'']) + + | Il.VarT _ as t1', Il.VarT _ as t2' -> + (match expand_def env t1', expand_def env t2' with + | Il.VariantT [mixop1, (qs1, t11, _), _], + Il.VariantT [mixop2, (qs2, t21, _), _] -> + if mixop1 = mixop2 then + (* Two ConT's with the same operator can be cast pointwise *) + let e'' = Il.UncaseE (e', mixop1) $$ e'.at % t1' in + let ts1 = match t11.it with Il.TupT xts -> List.map snd xts | _ -> [t11] in + let es' = List.mapi (fun i t1I -> Il.ProjE (e'', i) $$ e''.at % t1I) ts1 in + let* qss_es'' = map2_attempt (fun eI' (t1I, t2I) -> + cast_exp phrase env eI' t1I t2I) es' (List.combine ts1 ts2) in + let qss, es'' = List.split qss_es'' in + Ok (qs1 @ qs2 @ List.concat qss, Il.CaseE (mixop2, tup_exp_bind' es'' e'.at)) + else + (* Two unary ConT's can be cast transitively *) + Debug.(log_in_at "el.cast_exp" e'.at + (fun _ -> fmt "%s <: %s >> (%s) <: (%s) = (%s) # backtrack 1" (el_typ t1) (el_typ t2) + (el_typ (expand_def env t1 $ t1.at)) (el_typ (expand_def env t2 $ t2.at)) + (el_typ (expand_nondef env t2)) + ) + ); + let* t111, t111' = match ts, t11.it with [t111], Il.TupT [_, t111'] -> Ok (t111, t111') | _ -> + fail_typ2 env e'.at phrase t1 t2 "" in + let e'' = Il.UncaseE (e', mixop) $$ e'.at % t11 in + let* qs, e''' = cast_exp' phrase env (Il.ProjE (e'', 0) $$ e'.at % t111') t111 t2' in + Ok (qs @ qs, e''') + + | Il.VariantT [mixop1, (qs1, t11, _), _], _ -> + choice env [ + (fun env -> + let* qs, e'' = + match t2' with + | IterT (t21, iter) -> + let* qs1, e1' = cast_exp phrase env e' t1 t21 in + (match iter with + | Opt -> Ok (qs1, Il.OptE (Some e1')) + | List -> Ok (qs1, Il.ListE [e1']) + | _ -> assert false + ) + | _ -> fail_silent + in + Ok (qs, e'') + ); + (fun env -> + (* A ConT can be cast to its payload *) + Debug.(log_in_at "el.cast_exp" e'.at + (fun _ -> fmt "%s <: %s >> (%s) <: (%s) = (%s) # backtrack 2" (el_typ t1) (el_typ t2) + (el_typ (expand_def env t1 $ t1.at)) (el_typ (expand_def env t2 $ t2.at)) + (el_typ (expand_nondef env t2)) + ) + ); + let* t111, t111' = match ts, t11.it with [t111], Il.TupT [_, t111'] -> Ok (t111, t111') | _ -> + fail_typ2 env e'.at phrase t1 t2 "" in +(*TODO*) + let e'' = Il.UncaseE (e', mixop) $$ e'.at % t11 in + let* qs, e''' = cast_exp' phrase env (Il.ProjE (e'', 0) $$ e'.at % t111') t111 t2 in + Ok (qs @ qs, e''') + ); + ] + + | _, Il.VariantT [mixop2, (qs2, t21, _), _] -> + (* A ConT payload can be cast to the ConT *) + let* t211 = match ts with [t211] -> Ok t211 | _ -> + fail_typ2 env e'.at phrase t1 t2 "" in + let* qs, e1' = cast_exp phrase env e' t1 t211 in +(*TODO*) + Ok (qs2 @ qs, Il.CaseE (mixop2, Il.TupE [e1'] $$ e'.at % t')) + + | (Il.VariantT tcs1, dots1), (Il.VariantT tcs2, dots2) -> + if dots2 = Dots then + error e'.at "used variant type is only partially defined at this point"; + let* () = + match + iter_attempt (fun (atom, (t1', _prems1), _) -> + let* t2', _prems2 = attempt (find_case cases2 atom t1.at) t2 in + (* Shallow subtyping on variants *) + let env' = to_eval_env env in + if Eq.eq_typ (Eval.reduce_typ env' t1') (Eval.reduce_typ env' t2') then Ok () else + fail_atom e'.at atom t1 "type mismatch for case" + ) cases1 + with + | Ok () -> Ok () + | Fail (Trace (_, msg, _) :: _) -> fail_typ2 env e'.at phrase t1 t2 (", " ^ msg) + | Fail [] -> assert false + in + let t11 = expand env t1 $ t1.at in + let t21 = expand env t2 $ t2.at in + let t11' = elab_typ env (expand env t1) in + let t21' = elab_typ env (expand env t2) in + let* qs1, e'' = cast_exp phrase env e' t1 t11 in + let e''' = Il.SubE (e'', t11', t21') in + let* qs2, e'''' = cast_exp' phrase env (e''' $$ e'.at % t21') t21 t2 in + Ok (qs1 @ qs2, e'''') + + | _, _ -> + fail_typ2 env e'.at phrase t1 t2 "" + ) + + | _, _ -> + fail_typ2 env e'.at phrase t1 t2 "" + +(* | ConT ((t11, _), _), ConT ((t21, _), _) -> choice env [ (fun env -> (* Two ConT's with the same operator can be cast pointwise *) - let mixop1, qs1', t1', _prems1', ts1 = elab_typ_notation' env (expand_id env t1) t1.at t11 [] in - let mixop2, qs2', _t2', _prems2', ts2 = elab_typ_notation' env (expand_id env t2) t2.at t21 [] in + let mixop1, qs1, t1', _prems1', ts1 = elab_typ_notation' env (expand_id env t1) t1.at t11 [] in + let mixop2, qs2, _t2', _prems2', ts2 = elab_typ_notation' env (expand_id env t2) t2.at t21 [] in (* let mixop1, ts1', ts1 = elab_typ_notation env (expand_id env t1) t11 in let mixop2, _ts2', ts2 = elab_typ_notation env (expand_id env t2) t21 in @@ -1791,10 +1990,10 @@ and cast_exp' phrase env e' t1 t2 : (Il.param list * Il.exp') attempt = let e'' = Il.UncaseE (e', mixop1) $$ e'.at % t1' in let ts1' = match t1'.it with Il.TupT xts -> List.map snd xts | _ -> [t1'] in let es' = List.mapi (fun i t1I' -> Il.ProjE (e'', i) $$ e''.at % t1I') ts1' in - let* qss'_es'' = map2_attempt (fun eI' (t1I, t2I) -> + let* qss_es'' = map2_attempt (fun eI' (t1I, t2I) -> cast_exp phrase env eI' t1I t2I) es' (List.combine ts1 ts2) in - let qss', es'' = List.split qss'_es'' in - Ok (qs1' @ qs2' @ List.concat qss', Il.CaseE (mixop2, tup_exp_bind' es'' e'.at)) + let qss, es'' = List.split qss_es'' in + Ok (qs1 @ qs2 @ List.concat qss, Il.CaseE (mixop2, tup_exp_bind' es'' e'.at)) ); (fun env -> (* Two unary ConT's can be cast transitively *) @@ -1804,32 +2003,32 @@ and cast_exp' phrase env e' t1 t2 : (Il.param list * Il.exp') attempt = (el_typ (expand_nondef env t2)) ) ); - let mixop, qs', t1', _prems', ts = elab_typ_notation' env (expand_id env t1) t1.at t11 [] in + let mixop, qs, t1', _prems', ts = elab_typ_notation' env (expand_id env t1) t1.at t11 [] in (* let mixop, ts', ts = elab_typ_notation env (expand_id env t1) t11 in *) let* t111, t111' = match ts, t1'.it with [t111], Il.TupT [_, t111'] -> Ok (t111, t111') | _ -> fail_typ2 env e'.at phrase t1 t2 "" in let e'' = Il.UncaseE (e', mixop) $$ e'.at % t1' in - let* qs'', e''' = cast_exp' phrase env (Il.ProjE (e'', 0) $$ e'.at % t111') t111 t2 in - Ok (qs' @ qs'', e''') + let* qs, e''' = cast_exp' phrase env (Il.ProjE (e'', 0) $$ e'.at % t111') t111 t2 in + Ok (qs @ qs, e''') ); ] | ConT ((t11, _), _), t2' -> choice env [ (fun env -> - let* qs', e'' = + let* qs, e'' = match t2' with | IterT (t21, iter) -> - let* qs1', e1' = cast_exp phrase env e' t1 t21 in + let* qs1, e1' = cast_exp phrase env e' t1 t21 in (match iter with - | Opt -> Ok (qs1', Il.OptE (Some e1')) - | List -> Ok (qs1', Il.ListE [e1']) + | Opt -> Ok (qs1, Il.OptE (Some e1')) + | List -> Ok (qs1, Il.ListE [e1']) | _ -> assert false ) | _ -> fail_silent in - Ok (qs', e'') + Ok (qs, e'') ); (fun env -> (* A ConT can be cast to its payload *) @@ -1839,7 +2038,7 @@ and cast_exp' phrase env e' t1 t2 : (Il.param list * Il.exp') attempt = (el_typ (expand_nondef env t2)) ) ); - let mixop, qs', t1', _prems', ts = elab_typ_notation' env (expand_id env t1) t1.at t11 [] in + let mixop, qs, t1', _prems', ts = elab_typ_notation' env (expand_id env t1) t1.at t11 [] in (* let mixop, ts', ts = elab_typ_notation env (expand_id env t1) t11 in *) @@ -1847,35 +2046,35 @@ and cast_exp' phrase env e' t1 t2 : (Il.param list * Il.exp') attempt = fail_typ2 env e'.at phrase t1 t2 "" in Printf.printf "[3] %s => %s\n%!" (Debug.el_typ t1) (Debug.il_typ t1'); let e'' = Il.UncaseE (e', mixop) $$ e'.at % t1' in - let* qs'', e''' = cast_exp' phrase env (Il.ProjE (e'', 0) $$ e'.at % t111') t111 t2 in - Ok (qs' @ qs'', e''') + let* qs, e''' = cast_exp' phrase env (Il.ProjE (e'', 0) $$ e'.at % t111') t111 t2 in + Ok (qs @ qs, e''') ); ] | _, ConT ((t21, _), _) -> (* A ConT payload can be cast to the ConT *) - let mixop, qs', t', _prems', ts = elab_typ_notation' env (expand_id env t2) t2.at t21 [] in + let mixop, qs, t', _prems', ts = elab_typ_notation' env (expand_id env t2) t2.at t21 [] in (* let mixop, _ts', ts = elab_typ_notation env (expand_id env t2) t21 in *) let* t211 = match ts with [t211] -> Ok t211 | _ -> fail_typ2 env e'.at phrase t1 t2 "" in - let* qs1', e1' = cast_exp phrase env e' t1 t211 in - Ok (qs' @ qs1', Il.CaseE (mixop, Il.TupE [e1'] $$ e'.at % t')) + let* qs1, e1' = cast_exp phrase env e' t1 t211 in + Ok (qs @ qs1, Il.CaseE (mixop, Il.TupE [e1'] $$ e'.at % t')) | RangeT _, t2' -> choice env [ (fun env -> - let* qs', e'' = + let* qs, e'' = match t2' with | IterT (t21, iter) -> - let* qs1', e1' = cast_exp phrase env e' t1 t21 in + let* qs1, e1' = cast_exp phrase env e' t1 t21 in (match iter with - | Opt -> Ok (qs1', Il.OptE (Some e1')) - | List -> Ok (qs1', Il.ListE [e1']) + | Opt -> Ok (qs1, Il.OptE (Some e1')) + | List -> Ok (qs1, Il.ListE [e1']) | _ -> assert false ) | _ -> fail_silent in - Ok (qs', e'') + Ok (qs, e'') ); (fun env -> (* A RangeT can be cast to its carrier type *) @@ -1896,41 +2095,27 @@ Printf.printf "[4] %s => %s\n%!" (Debug.el_typ t11) (Debug.il_typ t11'); | _, RangeT _ -> (* A respective carrier type can be cast to RangeT *) let t21 = typ_rep env t2 in - let* qs', e'' = cast_exp phrase env e' t1 t21 in - Ok (qs', Il.CaseE ([[]; []], Il.TupE [e''] $$ e'.at % elab_typ env t21)) + let* qs, e'' = cast_exp phrase env e' t1 t21 in + Ok (qs, Il.CaseE ([[]; []], Il.TupE [e''] $$ e'.at % elab_typ env t21)) | _, IterT (t21, Opt) -> - let* qs', e'' = cast_exp phrase env e' t1 t21 in - Ok (qs', Il.OptE (Some e'')) + let* qs, e'' = cast_exp phrase env e' t1 t21 in + Ok (qs, Il.OptE (Some e'')) (* TODO(3, rossberg): enable; violates invariant that all iterexps are initially empty | IterT (t11, List), IterT (t21, List) -> choice env [ (fun env -> let id = x $ e'.at in let t11' = elab_typ env t11 in - let* qs', e'' = cast_exp phrase env (Il.VarE id $$ e'.at % t11') t11 t21 in - Ok (qs', Il.IterE (e'', (List, [x, e']))) + let* qs, e'' = cast_exp phrase env (Il.VarE id $$ e'.at % t11') t11 t21 in + Ok (qs, Il.IterE (e'', (List, [x, e']))) ); (fun env -> - let* qs', e'' = cast_exp phrase env e' t1 t21 in - Ok (qs', Il.ListE [e'']) + let* qs, e'' = cast_exp phrase env e' t1 t21 in + Ok (qs, Il.ListE [e'']) ); ] *) - | IterT (t11, Opt), IterT (t21, List) -> - choice env [ - (fun env -> - let t11' = elab_typ env t11 in - let e'' = Il.LiftE e' $$ e'.at % (Il.IterT (t11', Il.List) $ e'.at) in - cast_exp' phrase env e'' (IterT (t11, List) $ e'.at) t2 - ); - (fun env -> - let* qs', e'' = cast_exp phrase env e' t1 t21 in - Ok (qs', Il.ListE [e'']) - ); - ] - | _, IterT (t21, (List | List1)) -> - let* qs', e'' = cast_exp phrase env e' t1 t21 in - Ok (qs', Il.ListE [e'']) + | _, _ when is_variant_typ env t1 && is_variant_typ env t2 && not (is_iter_typ env t1) -> let cases1, dots1 = checkpoint (as_variant_typ "" env Check t1 e'.at) in let cases2, _dots2 = checkpoint (as_variant_typ "" env Check t2 e'.at) in @@ -1954,58 +2139,56 @@ Printf.printf "[4] %s => %s\n%!" (Debug.el_typ t11) (Debug.il_typ t11'); let t21 = expand env t2 $ t2.at in let t11' = elab_typ env (expand_nondef env t1) in let t21' = elab_typ env (expand_nondef env t2) in - let* qs1', e'' = cast_exp phrase env e' t1 t11 in + let* qs1, e'' = cast_exp phrase env e' t1 t11 in let e''' = Il.SubE (e'', t11', t21') in - let* qs2', e'''' = cast_exp' phrase env (e''' $$ e'.at % t21') t21 t2 in - Ok (qs1' @ qs2', e'''') - | _, _ -> - fail_typ2 env e'.at phrase t1 t2 "" + let* qs2, e'''' = cast_exp' phrase env (e''' $$ e'.at % t21') t21 t2 in + Ok (qs1 @ qs2, e'''') +*) -and elab_iterexp env iter : Il.param list * Il.iterexp = - let qs', iter' = elab_iter env iter in - (qs', (iter', [])) +and elab_iterexp env iter : Il.quant list * Il.iterexp = + let qs, iter' = elab_iter env iter in + (qs, (iter', [])) (* Premises *) -and elab_prem env prem : Il.param list * Il.prem list = +and elab_prem env prem : Il.quant list * Il.prem list = match prem.it with | VarPr (id, t) -> env.vars <- bind "variable" env.vars id t; [], [] | RulePr (id, e) -> - let t, _ = find "relation" env.rels id in - let mixop, _, _ = elab_typ_notation env id t in - let qs', es', _s = checkpoint (elab_exp_notation' env id e t) in - qs', [Il.RulePr (id, mixop, tup_exp' es' e.at) $ prem.at] + let mixop, not, _ = find "relation" env.rels id in + let qs, es', _s = checkpoint (elab_exp_notation' env id e not) in + qs, [Il.RulePr (id, mixop, tup_exp' es' e.at) $ prem.at] | IfPr e -> - let qs', e' = checkpoint (elab_exp env e (BoolT $ e.at)) in - qs', [Il.IfPr e' $ prem.at] + let qs, e' = checkpoint (elab_exp env e (BoolT $ e.at)) in + qs, [Il.IfPr e' $ prem.at] | ElsePr -> [], [Il.ElsePr $ prem.at] | IterPr ({it = VarPr _; at; _}, _iter) -> error at "misplaced variable premise" | IterPr (prem1, iter) -> - let qs', iter' = elab_iterexp env iter in - let qs1', prems1' = elab_prem env prem1 in + let qs, iter' = elab_iterexp env iter in + let qs1, prems1' = elab_prem env prem1 in assert (List.length prems1' = 1); - qs' @ qs1', [Il.IterPr (List.hd prems1', iter') $ prem.at] + qs @ qs1, [Il.IterPr (List.hd prems1', iter') $ prem.at] (* Grammars *) -and infer_sym env g : (Il.param list * Il.sym * typ) attempt = +and infer_sym env g : (Il.quant list * Il.sym * Il.typ) attempt = Debug.(log_at "el.infer_sym" g.at (fun _ -> fmt "%s" (el_sym g)) - (function Ok (qs', g', t) -> fmt "%s %s : %s" (il_quants qs') (il_sym g') (el_typ t) | _ -> "fail") + (function Ok (qs, g', t) -> fmt "%s %s : %s" (il_quants qs) (il_sym g') (il_typ t) | _ -> "fail") ) @@ fun _ -> nest g.at (TupT [] $ g.at) ( match g.it with - | VarG (id, as_) -> - let ps, t, _gram, _prods' = find "grammar" env.grams id in - let qs', as', s = elab_args `Rhs env as_ ps g.at in - Ok (qs', Il.VarG (id, as') $ g.at, Subst.subst_typ s t) + | VarG (x, as_) -> + let ps, t, _gram, _prods' = find "grammar" env.grams x in + let qs, as', s = elab_args `Rhs env as_ ps g.at in + Ok (qs, Il.VarG (x, as') $ g.at, Il.Subst.subst_typ s t) | NumG (`CharOp, n) -> (* let s = try Utf8.encode [Z.to_int n] with Z.Overflow | Utf8.Utf8 -> @@ -2015,24 +2198,24 @@ and infer_sym env g : (Il.param list * Il.sym * typ) attempt = if n < Z.of_int 0x00 || n > Z.of_int 0x10ffff then fail g.at "unicode value out of range" else - Ok ([], Il.NumG (Z.to_int n) $ g.at, NumT `NatT $ g.at) + Ok ([], Il.NumG (Z.to_int n) $ g.at, Il.NumT `NatT $ g.at) | NumG (_, n) -> if n < Z.of_int 0x00 || n > Z.of_int 0xff then fail g.at "byte value out of range" else - Ok ([], Il.NumG (Z.to_int n) $ g.at, NumT `NatT $ g.at) + Ok ([], Il.NumG (Z.to_int n) $ g.at, Il.NumT `NatT $ g.at) | TextG s -> - Ok ([], Il.TextG s $ g.at, TextT $ g.at) + Ok ([], Il.TextG s $ g.at, Il.TextT $ g.at) | EpsG -> - Ok ([], Il.EpsG $ g.at, TupT [] $ g.at) + Ok ([], Il.EpsG $ g.at, Il.TupT [] $ g.at) | SeqG gs -> - let* qs', gs' = elab_sym_list env (filter_nl gs) (TupT [] $ g.at) in - Ok (qs', Il.SeqG gs' $ g.at, TupT [] $ g.at) + let* qs, gs' = elab_sym_list env (filter_nl gs) (Il.TupT [] $ g.at) in + Ok (qs, Il.SeqG gs' $ g.at, Il.TupT [] $ g.at) | AltG gs -> choice env [ (fun env -> - let* qs', gs', ts = infer_sym_list env (filter_nl gs) in - if qs' <> [] then + let* qs, gs', ts = infer_sym_list env (filter_nl gs) in + if qs <> [] then fail g.at "invalid expressions in alternative" else if ts <> [] && List.for_all (equiv_typ env (List.hd ts)) ts then Ok ([], Il.AltG gs' $ g.at, List.hd ts) @@ -2040,73 +2223,73 @@ and infer_sym env g : (Il.param list * Il.sym * typ) attempt = ); (fun env -> (* HACK to treat singleton strings in short grammar as characters *) - let* qs', g' = elab_sym env g (NumT `NatT $ g.at) in - Ok (qs', g', NumT `NatT $ g.at) + let* qs, g' = elab_sym env g (Il.NumT `NatT $ g.at) in + Ok (qs, g', Il.NumT `NatT $ g.at) ); (fun env -> - let* qs', g' = elab_sym env g (TupT [] $ g.at) in - Ok (qs', g', TupT [] $ g.at) + let* qs, g' = elab_sym env g (Il.TupT [] $ g.at) in + Ok (qs, g', Il.TupT [] $ g.at) ) ] | RangeG (g1, g2) -> let env1 = local_env env in let env2 = local_env env in - let* qs1', g1' = elab_sym env1 g1 (NumT `NatT $ g1.at) in - let* qs2', g2' = elab_sym env2 g2 (NumT `NatT $ g2.at) in + let* qs1, g1' = elab_sym env1 g1 (Il.NumT `NatT $ g1.at) in + let* qs2, g2' = elab_sym env2 g2 (Il.NumT `NatT $ g2.at) in if env1.vars != env.vars then error g1.at "invalid symbol in range"; if env2.vars != env.vars then error g2.at "invalid symbol in range"; - Ok (qs1' @ qs2', Il.RangeG (g1', g2') $ g.at, NumT `NatT $ g.at) + Ok (qs1 @ qs2, Il.RangeG (g1', g2') $ g.at, Il.NumT `NatT $ g.at) | ParenG g1 -> infer_sym env g1 | TupG _ -> error g.at "malformed grammar" | ArithG e -> infer_sym env (sym_of_exp e) | IterG (g1, iter) -> - let qs', iterexp' = elab_iterexp env iter in - let* qs1', g1', t1 = infer_sym env g1 in + let qs, iterexp' = elab_iterexp env iter in + let* qs1, g1', t1 = infer_sym env g1 in Ok ( - qs1' @ qs', + qs1 @ qs, Il.IterG (g1', iterexp') $ g.at, - IterT (t1, match iter with Opt -> Opt | _ -> List) $ g.at + Il.IterT (t1, match iter with Opt -> Il.Opt | _ -> Il.List) $ g.at ) | AttrG (e, g1) -> choice env [ (fun env -> (* HACK to treat singleton strings in short grammar as characters *) - let t1 = NumT `NatT $ g1.at in - let* qs1', g1' = elab_sym env g1 t1 in - let* qs2', e' = elab_exp env e t1 in - Ok (qs2' @ qs1', Il.AttrG (e', g1') $ g.at, t1) + let t1 = Il.NumT `NatT $ g1.at in + let* qs1, g1' = elab_sym env g1 t1 in + let* qs2, e' = elab_exp env e t1 in + Ok (qs2 @ qs1, Il.AttrG (e', g1') $ g.at, t1) ); (fun env -> - let* qs1', g1', t1 = infer_sym env g1 in - let* qs2', e' = elab_exp env e t1 in - Ok (qs1' @ qs2', Il.AttrG (e', g1') $ g.at, t1) + let* qs1, g1', t1 = infer_sym env g1 in + let* qs2, e' = elab_exp env e t1 in + Ok (qs1 @ qs2, Il.AttrG (e', g1') $ g.at, t1) ); ] (* - let qs1', g1', t1 = infer_sym env g1 in - let qs2', e' = checkpoint (elab_exp env e t1) in - Ok (qs1' @ qs2', Il.AttrG (e', g1') $ g.at, t1) + let qs1, g1', t1 = infer_sym env g1 in + let qs2, e' = checkpoint (elab_exp env e t1) in + Ok (qs1 @ qs2, Il.AttrG (e', g1') $ g.at, t1) *) | FuseG _ -> error g.at "misplaced token concatenation" | UnparenG _ -> error g.at "misplaced token unparenthesize" ) -and infer_sym_list env es : (Il.param list * Il.sym list * typ list) attempt = +and infer_sym_list env es : (Il.quant list * Il.sym list * Il.typ list) attempt = match es with | [] -> Ok ([], [], []) | g::gs -> - let* qs1', g', t = infer_sym env g in - let* qs2', gs', ts = infer_sym_list env gs in - Ok (qs1' @ qs2', g'::gs', t::ts) + let* qs1, g', t = infer_sym env g in + let* qs2, gs', ts = infer_sym_list env gs in + Ok (qs1 @ qs2, g'::gs', t::ts) -and elab_sym env g t : (Il.param list * Il.sym) attempt = +and elab_sym env g t : (Il.quant list * Il.sym) attempt = Debug.(log_at "el.elab_sym" g.at - (fun _ -> fmt "%s : %s" (el_sym g) (el_typ t)) - (function Ok (qs', g') -> fmt "%s%s" (il_quants qs') (il_sym g') | _ -> "fail") + (fun _ -> fmt "%s : %s" (el_sym g) (il_typ t)) + (function Ok (qs, g') -> fmt "%s%s" (il_quants qs) (il_sym g') | _ -> "fail") ) @@ fun _ -> nest g.at t ( match g.it with @@ -2116,37 +2299,37 @@ and elab_sym env g t : (Il.param list * Il.sym) attempt = if List.length cs = 1 then Ok ([], Il.NumG (List.hd cs) $ g.at) else - let* qs1', g', t' = infer_sym env g in - let* qs2', g'' = cast_sym env g' t' t in - Ok (qs1' @ qs2', g'') + let* qs1, g', t' = infer_sym env g in + let* qs2, g'' = cast_sym env g' t' t in + Ok (qs1 @ qs2, g'') | AltG gs -> - let* qs', gs' = elab_sym_list env (filter_nl gs) t in - Ok (qs', Il.AltG gs' $ g.at) + let* qs, gs' = elab_sym_list env (filter_nl gs) t in + Ok (qs, Il.AltG gs' $ g.at) | ParenG g1 -> elab_sym env g1 t | _ -> - let* qs1', g', t' = infer_sym env g in - let* qs2', g'' = cast_sym env g' t' t in - Ok (qs1' @ qs2', g'') + let* qs1, g', t' = infer_sym env g in + let* qs2, g'' = cast_sym env g' t' t in + Ok (qs1 @ qs2, g'') ) -and elab_sym_list env es t : (Il.param list * Il.sym list) attempt = +and elab_sym_list env es t : (Il.quant list * Il.sym list) attempt = match es with | [] -> Ok ([], []) | g::gs -> - let* qs1', g' = elab_sym env g t in - let* qs2', gs' = elab_sym_list env gs t in - Ok (qs1' @ qs2', g'::gs') + let* qs1, g' = elab_sym env g t in + let* qs2, gs' = elab_sym_list env gs t in + Ok (qs1 @ qs2, g'::gs') -and cast_sym env g' t1 t2 : (Il.param list * Il.sym) attempt = +and cast_sym env g' t1 t2 : (Il.quant list * Il.sym) attempt = Debug.(log_at "el.elab_cast_sym" g'.at - (fun _ -> fmt "%s : %s :> %s" (il_sym g') (el_typ t1) (el_typ t2)) - (function Ok (qs', g'') -> fmt "%s%s" (il_quants qs') (il_sym g'') | _ -> "fail") + (fun _ -> fmt "%s : %s :> %s" (il_sym g') (il_typ t1) (il_typ t2)) + (function Ok (qs, g'') -> fmt "%s%s" (il_quants qs) (il_sym g'') | _ -> "fail") ) @@ fun _ -> nest g'.at t2 ( if equiv_typ env t1 t2 then Ok ([], g') - else if equiv_typ env t2 (TupT [] $ t2.at) then + else if equiv_typ env t2 (Il.TupT [] $ t2.at) then Ok ([], Il.SeqG [g'] $ g'.at) else fail_typ2 env g'.at "symbol" t1 t2 "" @@ -2162,44 +2345,44 @@ and elab_prod env prod t : Il.prod list = env'.pm <- false; let dims = Dim.check_prod (vars env) prod in let dims' = Dim.Env.map (List.map (elab_typiter env')) dims in - let qs1', g', _t = checkpoint (infer_sym env' g) in + let qs1, g', _t = checkpoint (infer_sym env' g) in let g' = Dim.annot_sym dims' g' in - let qs2', e' = + let qs2, e' = checkpoint ( - if equiv_typ env' t (TupT [] $ e.at) then + let t_unit = Il.TupT [] $ e.at in + if equiv_typ env' t t_unit then (* Special case: ignore unit attributes *) (* TODO(4, rossberg): introduce proper top type? *) - let* qs', e', _t = infer_exp env' e in - let t'_unit = Il.TupT [] $ e.at in - Ok (qs', Il.ProjE ( + let* qs, e', _t = infer_exp env' e in + Ok (qs, Il.ProjE ( Il.TupE [ - e'; Il.TupE [] $$ e.at % t'_unit - ] $$ e.at % (Il.TupT ["_" $ e.at, e'.note; "_" $ e.at, t'_unit] $ e.at), 1 + e'; Il.TupE [] $$ e.at % t_unit + ] $$ e.at % (Il.TupT ["_" $ e.at, e'.note; "_" $ e.at, t_unit] $ e.at), 1 ) $$ e.at % t'_unit) else elab_exp env' e t ) in let e' = Dim.annot_exp dims' e' in - let qss3', premss' = List.split (map_filter_nl_list (elab_prem env') prems) in + let qss3, premss' = List.split (map_filter_nl_list (elab_prem env') prems) in let prems' = List.map (Dim.annot_prem dims') (List.concat premss') in let det = Free.(diff (union (det_sym g) (det_prems prems)) (bound_env env)) in let free = Free.(diff (free_prod prod) (union (det_prod prod) (bound_env env'))) in if free <> Free.empty then error prod.at ("grammar rule contains indeterminate variable(s) `" ^ String.concat "`, `" (Free.Set.elements free.varid) ^ "`"); - let acc_qs', (module Arg : Iter.Arg) = make_quants_iter_arg env' det dims in + let acc_qs, (module Arg : Iter.Arg) = make_quants_iter_arg env' det dims in let module Acc = Iter.Make(Arg) in Acc.sym g; Acc.exp e; Acc.prems prems; - let prod' = Il.ProdD (!acc_qs' @ qs1' @ qs2' @ List.concat qss3', g', e', prems') $ prod.at in + let prod' = Il.ProdD (!acc_qs @ qs1 @ qs2 @ List.concat qss3, g', e', prems') $ prod.at in if not env'.pm then [prod'] else prod' :: elab_prod env Subst.(subst_prod pm_snd (Iter.clone_prod prod)) t | RangeP (g1, e1, g2, e2) -> - let t = NumT `NatT $ prod.at in + let t = Il.NumT `NatT $ prod.at in let qs11', g1' = checkpoint (elab_sym env g1 t) in let qs12', e1' = checkpoint (elab_exp env e1 t) in let qs21', g2' = checkpoint (elab_sym env g2 t) in @@ -2239,26 +2422,26 @@ and elab_prod env prod t : Il.prod list = env'.pm <- false; let dims = Dim.check_prod (vars env) prod in let dims' = Dim.Env.map (List.map (elab_typiter env')) dims in - let qs1', g1', _t1 = checkpoint (infer_sym env' g1) in + let qs1, g1', _t1 = checkpoint (infer_sym env' g1) in let g1' = Dim.annot_sym dims' g1' in - let qs2', g2', _t2 = checkpoint (infer_sym env' g2) in + let qs2, g2', _t2 = checkpoint (infer_sym env' g2) in let g2' = Dim.annot_sym dims' g2' in - let qss3', premss' = List.split (map_filter_nl_list (elab_prem env') prems) in + let qss3, premss' = List.split (map_filter_nl_list (elab_prem env') prems) in let prems' = List.map (Dim.annot_prem dims') (List.concat premss') in let det = Free.(diff (union (det_sym g1) (det_prems prems)) (bound_env env)) in let free = Free.(diff (free_prod prod) (union (det_prod prod) (bound_env env'))) in if free <> Free.empty then error prod.at ("grammar rule contains indeterminate variable(s) `" ^ String.concat "`, `" (Free.Set.elements free.varid) ^ "`"); - let acc_qs', (module Arg : Iter.Arg) = make_quants_iter_arg env' det dims in + let acc_qs, (module Arg : Iter.Arg) = make_quants_iter_arg env' det dims in let module Acc = Iter.Make(Arg) in Acc.sym g1; Acc.sym g2; Acc.prems prems; - ignore (!acc_qs' @ qs1' @ qs2' @ List.concat qss3', g1', g2', prems'); + ignore (!acc_qs @ qs1 @ qs2 @ List.concat qss3, g1', g2', prems'); [] (* TODO(4, rossberg): translate equiv grammars properly *) (* - let prod' = Il.ProdD (!acc_qs', g1', e', prems') $ prod.at in + let prod' = Il.ProdD (!acc_qs, g1', e', prems') $ prod.at in if not env'.pm then [prod'] else @@ -2272,7 +2455,7 @@ and elab_gram env gram t : Il.prod list = (* Definitions *) -and make_quants_iter_arg env free dims : Il.param list ref * (module Iter.Arg) = +and make_quants_iter_arg env free dims : Il.quant list ref * (module Iter.Arg) = let module Arg = struct include Iter.Skip @@ -2346,7 +2529,7 @@ and make_quants_iter_arg env free dims : Il.param list ref * (module Iter.Arg) = end in Arg.acc, (module Arg) -and elab_arg in_lhs env a p s : Il.param list * Il.arg list * Subst.subst = +and elab_arg in_lhs env a p s : Il.quant list * Il.arg list * Subst.subst = (match !(a.it), p.it with (* HACK: handle shorthands *) | ExpA e, TypP _ -> a.it := TypA (typ_of_exp e) | ExpA e, GramP _ -> a.it := GramA (sym_of_exp e) @@ -2355,8 +2538,8 @@ and elab_arg in_lhs env a p s : Il.param list * Il.arg list * Subst.subst = ); match !(a.it), (Subst.subst_param s p).it with | ExpA e, ExpP (id, t) -> - let qs', e' = checkpoint (elab_exp env e t) in - qs', [Il.ExpA e' $ a.at], Subst.add_varid s id e + let qs, e' = checkpoint (elab_exp env e t) in + qs, [Il.ExpA e' $ a.at], Subst.add_varid s id e | TypA ({it = VarT (id', []); _} as t), TypP id when in_lhs = `Lhs -> let id'' = strip_var_suffix id' in let is_prim = @@ -2376,12 +2559,12 @@ and elab_arg in_lhs env a p s : Il.param list * Il.arg list * Subst.subst = | GramA g, GramP _ when in_lhs = `Lhs -> error g.at "misplaced grammar symbol" | GramA g, GramP (id', t) -> - let qs', g', t' = checkpoint (infer_sym env g) in + let qs, g', t' = checkpoint (infer_sym env g) in let s' = subst_implicit env s t t' in if not (equiv_typ env t' (Subst.subst_typ s' t)) then error_typ2 env a.at "argument" t' t ""; let as' = List.map (fun (_id, t) -> Il.TypA (elab_typ env t) $ t.at) Subst.(Map.bindings s'.typid) in - qs', as' @ [Il.GramA g' $ a.at], Subst.add_gramid s' id' g + qs, as' @ [Il.GramA g' $ a.at], Subst.add_gramid s' id' g | DefA id, DefP (id', ps', t') when in_lhs = `Lhs -> env.defs <- bind "definition" env.defs id (ps', t', []); [], [Il.DefA id $ a.at], Subst.add_defid s id' id @@ -2397,23 +2580,23 @@ and elab_arg in_lhs env a p s : Il.param list * Il.arg list * Subst.subst = | _, _ -> error a.at "sort mismatch for argument" -and elab_args in_lhs env as_ ps at : Il.param list * Il.arg list * Subst.subst = +and elab_args in_lhs env as_ ps at : Il.quant list * Il.arg list * Il.Subst.subst = Debug.(log_at "el.elab_args" at (fun _ -> fmt "(%s) : (%s)" (list el_arg as_) (list el_param ps)) - (fun (qs', as', _) -> fmt "%s(%s)" (il_quants qs') (list il_arg as')) + (fun (qs, as', _) -> fmt "%s(%s)" (il_quants qs) (list il_arg as')) ) @@ fun _ -> elab_args' in_lhs env as_ ps [] [] Subst.empty at -and elab_args' in_lhs env as_ ps qs' as' s at : Il.param list * Il.arg list * Subst.subst = +and elab_args' in_lhs env as_ ps qs as' s at : Il.quant list * Il.arg list * Il.Subst.subst = match as_, ps with - | [], [] -> qs', List.concat (List.rev as'), s + | [], [] -> qs, List.concat (List.rev as'), s | a::_, [] -> error a.at "too many arguments" | [], _::_ -> error at "too few arguments" | a::as1, p::ps1 -> - let qs'', a', s' = elab_arg in_lhs env a p s in - elab_args' in_lhs env as1 ps1 (qs' @ qs'') (a'::as') s' at + let qs', a', s' = elab_arg in_lhs env a p s in + elab_args' in_lhs env as1 ps1 (qs @ qs') (a'::as') s' at -and subst_implicit env s t t' : Subst.subst = +and subst_implicit env s t t' : Il.Subst.subst = let free = Free.(Set.filter (fun id -> not (Map.mem id env.typs)) (free_typ t).typid) in let rec inst s t t' = match t.it, t'.it with @@ -2579,20 +2762,20 @@ let elab_hintdef _env hd : Il.def list = match hd.it with | TypH (id1, _id2, hints) -> if hints = [] then [] else - [Il.HintD (Il.TypH (id1, elab_hints id1 [] hints) $ hd.at) $ hd.at] + [Il.HintD (Il.TypH (id1, elab_hints id1 "" hints) $ hd.at) $ hd.at] | RelH (id, hints) -> if hints = [] then [] else - [Il.HintD (Il.RelH (id, elab_hints id [] hints) $ hd.at) $ hd.at] + [Il.HintD (Il.RelH (id, elab_hints id "" hints) $ hd.at) $ hd.at] | DecH (id, hints) -> if hints = [] then [] else - [Il.HintD (Il.DecH (id, elab_hints id [] hints) $ hd.at) $ hd.at] + [Il.HintD (Il.DecH (id, elab_hints id "" hints) $ hd.at) $ hd.at] | AtomH (id, atom, _hints) -> let _ = elab_atom atom id in [] | GramH _ | VarH _ -> [] -let infer_quants env env' dims d : Il.param list = +let infer_quants env env' dims d : Il.quant list = Debug.(log_in_at "el.infer_quants" d.at (fun _ -> Map.fold (fun id _ ids -> @@ -2605,14 +2788,14 @@ let infer_quants env env' dims d : Il.param list = if free <> Free.empty then error d.at ("definition contains indeterminate variable(s) `" ^ String.concat "`, `" (Free.Set.elements free.varid) ^ "`"); - let acc_qs', (module Arg : Iter.Arg) = make_quants_iter_arg env' det dims in + let acc_qs, (module Arg : Iter.Arg) = make_quants_iter_arg env' det dims in let module Acc = Iter.Make(Arg) in Acc.def d; - !acc_qs' + !acc_qs let infer_no_quants env dims d = - let qs' = infer_quants env env dims d in - assert (qs' = []) + let qs = infer_quants env env dims d in + assert (qs = []) let rec elab_def env d : Il.def list = @@ -2632,12 +2815,12 @@ let rec elab_def env d : Il.def list = let env' = local_env env in env'.pm <- false; let ps1, k1 = find "syntax type" env.typs id1 in - let qs1', as', _s = elab_args `Lhs env' as_ ps1 d.at in + let qs1, as', _s = elab_args `Lhs env' as_ ps1 d.at in let dt' = elab_typ_definition env' id1 t in let dims = Dim.check_def d in let dims' = Dim.Env.map (List.map (elab_typiter env')) dims in - let qs' = infer_quants env env' dims d in - let inst' = Il.InstD (qs' @ qs1', List.map (Dim.annot_arg dims') as', dt') $ d.at in + let qs = infer_quants env env' dims d in + let inst' = Il.InstD (qs @ qs1, List.map (Dim.annot_arg dims') as', dt') $ d.at in let k1', closed = match k1, t.it with | Opaque, (CaseT (Dots, _, _, _) | StrT (Dots, _, _, _)) -> @@ -2740,12 +2923,12 @@ let rec elab_def env d : Il.def list = error d.at ("duplicate rule name `" ^ id1.it ^ (if id2.it = "" then "" else "/" ^ id2.it) ^ "`"); let mixop, _, _ = elab_typ_notation env id1 t in - let qs1', es', _ = checkpoint (elab_exp_notation' env' id1 e t) in + let qs1, es', _ = checkpoint (elab_exp_notation' env' id1 e t) in let es' = List.map (Dim.annot_exp dims') es' in - let qss2', premss' = List.split (map_filter_nl_list (elab_prem env') prems) in + let qss2, premss' = List.split (map_filter_nl_list (elab_prem env') prems) in let prems' = List.map (Dim.annot_prem dims') (List.concat premss') in - let qs' = infer_quants env env' dims d in - let rule' = Il.RuleD (id2, qs' @ qs1' @ List.concat qss2', mixop, tup_exp' es' e.at, prems') $ d.at in + let qs = infer_quants env env' dims d in + let rule' = Il.RuleD (id2, qs @ qs1 @ List.concat qss2, mixop, tup_exp' es' e.at, prems') $ d.at in env.rels <- rebind "relation" env.rels id1 (t, rules' @ [id2, rule']); if not env'.pm then [] else elab_def env Subst.(subst_def pm_snd (Iter.clone_def d)) | VarD (id, t, _hints) -> @@ -2773,14 +2956,14 @@ let rec elab_def env d : Il.def list = let dims = Dim.check_def d in let dims' = Dim.Env.map (List.map (elab_typiter env')) dims in let ps, t, clauses' = find "definition" env.defs id in - let qs1', as', s = elab_args `Lhs env' as_ ps d.at in + let qs1, as', s = elab_args `Lhs env' as_ ps d.at in let as' = List.map (Dim.annot_arg dims') as' in - let qss2', premss' = List.split (map_filter_nl_list (elab_prem env') prems) in + let qss2, premss' = List.split (map_filter_nl_list (elab_prem env') prems) in let prems' = List.map (Dim.annot_prem dims') (List.concat premss') in - let qs3', e' = checkpoint (elab_exp env' e (Subst.subst_typ s t)) in + let qs3, e' = checkpoint (elab_exp env' e (Subst.subst_typ s t)) in let e' = Dim.annot_exp dims' e' in - let qs' = infer_quants env env' dims d in - let clause' = Il.DefD (qs' @ qs1' @ List.concat qss2' @ qs3', as', e', prems') $ d.at in + let qs = infer_quants env env' dims d in + let clause' = Il.DefD (qs @ qs1 @ List.concat qss2 @ qs3, as', e', prems') $ d.at in env.defs <- rebind "definition" env.defs id (ps, t, clauses' @ [(d, clause')]); if not env'.pm then [] else elab_def env Subst.(subst_def pm_snd (Iter.clone_def d)) | SepD -> diff --git a/spectec/src/il/ast.ml b/spectec/src/il/ast.ml index 51520efe3..20fc47e75 100644 --- a/spectec/src/il/ast.ml +++ b/spectec/src/il/ast.ml @@ -8,7 +8,7 @@ type num = Num.num type text = string type id = string phrase type atom = Atom.atom -type mixop = Mixop.mixop +type mixop = unit Mixop.mixop (* Iteration *) @@ -40,8 +40,8 @@ and deftyp' = | StructT of typfield list (* record type *) | VariantT of typcase list (* variant type *) -and typfield = atom * (param list * typ * prem list) * hint list (* record field *) -and typcase = mixop * (param list * typ * prem list) * hint list (* variant case *) +and typfield = atom * (quant list * typ * prem list) * hint list (* record field *) +and typcase = mixop * (quant list * typ * prem list) * hint list (* variant case *) (* Expressions *) @@ -125,6 +125,8 @@ and param' = | DefP of id * param list * typ (* `def` defid params : typ *) | GramP of id * param list * typ (* `grammar` gramid param : typ *) +and quant = param + and def = def' phrase and def' = | TypD of id * param list * inst list (* syntax type (family) *) @@ -136,19 +138,19 @@ and def' = and inst = inst' phrase and inst' = - | InstD of param list * arg list * deftyp (* family instance clause *) + | InstD of quant list * arg list * deftyp (* family instance clause *) and rule = rule' phrase and rule' = - | RuleD of id * param list * mixop * exp * prem list (* relation rule *) + | RuleD of id * quant list * mixop * exp * prem list (* relation rule *) and clause = clause' phrase and clause' = - | DefD of param list * arg list * exp * prem list (* definition clause *) + | DefD of quant list * arg list * exp * prem list (* definition clause *) and prod = prod' phrase and prod' = - | ProdD of param list * sym * exp * prem list (* grammar production *) + | ProdD of quant list * sym * exp * prem list (* grammar production *) and prem = prem' phrase and prem' = diff --git a/spectec/src/il/debug.ml b/spectec/src/il/debug.ml index 935ffbd7d..d2a56299e 100644 --- a/spectec/src/il/debug.ml +++ b/spectec/src/il/debug.ml @@ -8,6 +8,8 @@ let il_atom = string_of_atom let il_mixop = string_of_mixop let il_iter = string_of_iter let il_typ = string_of_typ +let il_typfield = string_of_typfield +let il_typcase = string_of_typcase let il_deftyp = string_of_deftyp `H let il_exp = string_of_exp let il_sym = string_of_sym diff --git a/spectec/src/il/free.ml b/spectec/src/il/free.ml index 8627bf6aa..1f9d58cb8 100644 --- a/spectec/src/il/free.ml +++ b/spectec/src/il/free.ml @@ -113,10 +113,10 @@ and free_deftyp dt = | StructT tfs -> free_list free_typfield tfs | VariantT tcs -> free_list free_typcase tcs -and free_typfield (_, (ps, t, prems), _) = - free_params ps + (free_typ t + (free_prems prems - bound_typ t) - bound_params ps) -and free_typcase (_, (ps, t, prems), _) = - free_params ps + (free_typ t + (free_prems prems - bound_typ t) - bound_params ps) +and free_typfield (_, (qs, t, prems), _) = + free_quants qs + (free_typ t + (free_prems prems - bound_typ t) - bound_quants qs) +and free_typcase (_, (qs, t, prems), _) = + free_quants qs + (free_typ t + (free_prems prems - bound_typ t) - bound_quants qs) (* Expressions *) @@ -204,29 +204,34 @@ and bound_param p = | DefP (x, _, _) -> bound_defid x | GramP (x, _, _) -> bound_gramid x +and free_quant q = free_param q +and bound_quant q = bound_param q + and free_args as_ = free_list free_arg as_ and free_params ps = free_list_dep free_param bound_param ps +and free_quants qs = free_list_dep free_quant bound_quant qs and bound_params ps = free_list bound_param ps +and bound_quants qs = free_list bound_quant qs let free_inst inst = match inst.it with - | InstD (ps, as_, dt) -> - free_params ps + (free_args as_ + free_deftyp dt - bound_params ps) + | InstD (qs, as_, dt) -> + free_quants qs + (free_args as_ + free_deftyp dt - bound_quants qs) let free_rule rule = match rule.it with - | RuleD (_x, ps, _op, e, prems) -> - free_params ps + (free_exp e + free_prems prems - bound_params ps) + | RuleD (_x, qs, _op, e, prems) -> + free_quants qs + (free_exp e + free_prems prems - bound_quants qs) let free_clause clause = match clause.it with - | DefD (ps, as_, e, prems) -> - free_params ps + (free_args as_ + free_exp e + free_prems prems - bound_params ps) + | DefD (qs, as_, e, prems) -> + free_quants qs + (free_args as_ + free_exp e + free_prems prems - bound_quants qs) let free_prod prod = match prod.it with - | ProdD (ps, g, e, prems) -> - free_params ps + (free_sym g + free_exp e + free_prems prems - bound_params ps) + | ProdD (qs, g, e, prems) -> + free_quants qs + (free_sym g + free_exp e + free_prems prems - bound_quants qs) let free_hintdef hd = match hd.it with diff --git a/spectec/src/il/free.mli b/spectec/src/il/free.mli index 71e9c1eae..d286d6abe 100644 --- a/spectec/src/il/free.mli +++ b/spectec/src/il/free.mli @@ -27,8 +27,10 @@ val free_rule : rule -> sets val free_clause : clause -> sets val free_prod : prod -> sets val free_deftyp : deftyp -> sets +val free_quant : quant -> sets val free_param : param -> sets val bound_typbind : id * typ -> sets +val bound_quant : quant -> sets val bound_param : param -> sets val bound_def : def -> sets diff --git a/spectec/src/il/fresh.ml b/spectec/src/il/fresh.ml index 918b6bad0..e7b735c3b 100644 --- a/spectec/src/il/fresh.ml +++ b/spectec/src/il/fresh.ml @@ -1,3 +1,4 @@ +open Ast open Util.Source module Map = Map.Make(String) @@ -28,3 +29,31 @@ let refresh_typid = refresh_id typids let refresh_varid = refresh_id varids let refresh_defid = refresh_id defids let refresh_gramid = refresh_id gramids + + +let refresh_quant s q = + match q.it with + | ExpP (x, t) -> + let x' = refresh_varid x in + let t' = Subst.subst_typ s t in + let s' = Subst.add_varid s x (VarE x' $$ x.at % t') in + s', ExpP (x', t') $ q.at + | TypP x -> + let x' = refresh_typid x in + let s' = Subst.add_typid s x (VarT (x', []) $ x.at) in + s', TypP x' $ q.at + | DefP (x, ps, t) -> + let x' = refresh_defid x in + let ps', s' = Subst.subst_params s ps in + let t' = Subst.subst_typ s' t in + let s' = Subst.add_defid s x x' in + s', DefP (x', ps', t') $ q.at + | GramP (x, ps, t) -> + let x' = refresh_gramid x in + let ps', s' = Subst.subst_params s ps in + let t' = Subst.subst_typ s' t in + let s' = Subst.add_gramid s x (VarG (x', []) $ x.at) in + s', GramP (x', ps', t') $ q.at + +let refresh_quants qs = + let s, qs' = List.fold_left_map refresh_quant Subst.empty qs in qs', s diff --git a/spectec/src/il/fresh.mli b/spectec/src/il/fresh.mli index dfa1edffa..2ce6fea07 100644 --- a/spectec/src/il/fresh.mli +++ b/spectec/src/il/fresh.mli @@ -9,3 +9,5 @@ val refresh_typid : id -> id val refresh_varid : id -> id val refresh_defid : id -> id val refresh_gramid : id -> id + +val refresh_quants : quant list -> quant list * Subst.t diff --git a/spectec/src/il/print.ml b/spectec/src/il/print.ml index 41833f98a..f8034049e 100644 --- a/spectec/src/il/print.ml +++ b/spectec/src/il/print.ml @@ -41,7 +41,7 @@ let string_of_cmpop = function | #Num.cmpop as op -> Num.string_of_cmpop op let string_of_atom = Atom.to_string -let string_of_mixop = Mixop.to_string +let string_of_mixop mixop = "`" ^ Mixop.to_string mixop ^ "`" (* Types *) @@ -85,20 +85,23 @@ and string_of_deftyp layout dt = match dt.it with | AliasT t -> string_of_typ t | StructT tfs when layout = `H -> - "{" ^ concat ", " (List.map string_of_typfield tfs) ^ "}" + "{" ^ concat ", " (List.map (string_of_typfield layout) tfs) ^ "}" | StructT tfs -> - "\n{\n " ^ concat ",\n " (List.map string_of_typfield tfs) ^ "\n}" + "\n{\n " ^ concat ",\n " (List.map (string_of_typfield layout) tfs) ^ "\n}" | VariantT tcs when layout = `H -> - "| " ^ concat " | " (List.map string_of_typcase tcs) + "| " ^ concat " | " (List.map (string_of_typcase layout) tcs) | VariantT tcs -> - "\n | " ^ concat "\n | " (List.map string_of_typcase tcs) + "\n | " ^ concat "\n | " (List.map (string_of_typcase layout) tcs) -and string_of_typfield (atom, (qs, t, prems), _hints) = - string_of_mixop [[atom]] ^ string_of_quants qs ^ " " ^ string_of_typ t ^ +and string_of_typfield layout (atom, (qs, t, prems), _hints) = + string_of_mixop (Mixop.Atom atom) ^ + string_of_quants qs ^ " " ^ string_of_typ t ^ + if layout = `H && prems <> [] then " -- .." else concat "" (List.map (prefix "\n -- " string_of_prem) prems) -and string_of_typcase (op, (qs, t, prems), _hints) = +and string_of_typcase layout (op, (qs, t, prems), _hints) = string_of_mixop op ^ string_of_quants qs ^ string_of_typ_args t ^ + if layout = `H && prems <> [] then " -- .." else concat "" (List.map (prefix "\n -- " string_of_prem) prems) @@ -128,7 +131,7 @@ and string_of_exp e = | StrE efs -> "{" ^ concat ", " (List.map string_of_expfield efs) ^ "}" | DotE (e1, atom, as_) -> string_of_exp e1 ^ "." ^ - string_of_mixop [[atom]] ^ "_" ^ string_of_typ_name e1.note ^ + string_of_mixop (Mixop.Atom atom) ^ "_" ^ string_of_typ_name e1.note ^ string_of_quantargs as_ | CompE (e1, e2) -> string_of_exp e1 ^ " +++ " ^ string_of_exp e2 | MemE (e1, e2) -> "(" ^ string_of_exp e1 ^ " <- " ^ string_of_exp e2 ^ ")" @@ -165,7 +168,7 @@ and string_of_exps sep es = concat sep (List.map string_of_exp es) and string_of_expfield (atom, as_, e) = - string_of_mixop [[atom]] ^ + string_of_mixop (Mixop.Atom atom) ^ string_of_quantargs as_ ^ " " ^ string_of_exp e @@ -177,11 +180,11 @@ and string_of_path p = | SliceP (p1, e1, e2) -> string_of_path p1 ^ "[" ^ string_of_exp e1 ^ " : " ^ string_of_exp e2 ^ "]" | DotP ({it = RootP; note; _}, atom, as_) -> - string_of_mixop [[atom]] ^ "_" ^ string_of_typ_name note ^ + string_of_mixop (Mixop.Atom atom) ^ "_" ^ string_of_typ_name note ^ string_of_quantargs as_ | DotP (p1, atom, as_) -> string_of_path p1 ^ "." ^ - string_of_mixop [[atom]] ^ "_" ^ string_of_typ_name p1.note ^ + string_of_mixop (Mixop.Atom atom) ^ "_" ^ string_of_typ_name p1.note ^ string_of_quantargs as_ and string_of_iterexp (iter, xes) = diff --git a/spectec/src/il/print.mli b/spectec/src/il/print.mli index cf33752fb..99b9ef9a4 100644 --- a/spectec/src/il/print.mli +++ b/spectec/src/il/print.mli @@ -19,10 +19,12 @@ val string_of_args : arg list -> string val string_of_param : param -> string val string_of_params : param list -> string val string_of_quants : param list -> string +val string_of_typfield : [`H | `V] -> typfield -> string +val string_of_typcase : [`H | `V] -> typcase -> string val string_of_deftyp : [`H | `V] -> deftyp -> string -val string_of_def : ?suppress_pos:bool -> def -> string -val string_of_rule : ?suppress_pos:bool -> rule -> string -val string_of_prod : ?suppress_pos:bool -> prod -> string -val string_of_inst : ?suppress_pos:bool -> id -> inst -> string -val string_of_clause : ?suppress_pos:bool -> id -> clause -> string -val string_of_script : ?suppress_pos:bool -> script -> string +val string_of_def : ?suppress_pos: bool -> def -> string +val string_of_rule : ?suppress_pos: bool -> rule -> string +val string_of_prod : ?suppress_pos: bool -> prod -> string +val string_of_inst : ?suppress_pos: bool -> id -> inst -> string +val string_of_clause : ?suppress_pos: bool -> id -> clause -> string +val string_of_script : ?suppress_pos: bool -> script -> string diff --git a/spectec/src/il/subst.ml b/spectec/src/il/subst.ml index afc291e0d..07436613e 100644 --- a/spectec/src/il/subst.ml +++ b/spectec/src/il/subst.ml @@ -115,13 +115,13 @@ and subst_deftyp s dt = | VariantT tcs -> VariantT (subst_list subst_typcase s tcs) ) $ dt.at -and subst_typfield s (atom, (ps, t, prems), hints) = - let ps', s' = subst_params s ps in - (atom, (ps', subst_typ s' t, subst_list subst_prem s' prems), hints) +and subst_typfield s (atom, (qs, t, prems), hints) = + let qs', s' = subst_quants s qs in + (atom, (qs', subst_typ s' t, subst_list subst_prem s' prems), hints) -and subst_typcase s (op, (ps, t, prems), hints) = - let ps', s' = subst_params s ps in - (op, (ps', subst_typ s' t, subst_list subst_prem s' prems), hints) +and subst_typcase s (op, (qs, t, prems), hints) = + let qs', s' = subst_quants s qs in + (op, (qs', subst_typ s' t, subst_list subst_prem s' prems), hints) and subst_typbind s (x, t) = (subst_varid s x, subst_typ s t) @@ -244,6 +244,7 @@ and subst_param s p = and subst_args s as_ = subst_list subst_arg s as_ and subst_params s ps = subst_list_dep subst_param Free.bound_param s ps +and subst_quants s ps = subst_list_dep subst_param Free.bound_quant s ps (* Optimizations *) diff --git a/spectec/src/il/valid.ml b/spectec/src/il/valid.ml index 44e3026e3..612675e42 100644 --- a/spectec/src/il/valid.ml +++ b/spectec/src/il/valid.ml @@ -211,7 +211,7 @@ and valid_deftyp envr dt = | AliasT t -> valid_typ !envr t | StructT tfs -> - check_mixops "record" "field" (List.map (fun (atom, _, _) -> [[atom]]) tfs) dt.at; + check_mixops "record" "field" (List.map (fun (atom, _, _) -> Mixop.Atom atom) tfs) dt.at; List.iter (valid_typfield envr) tfs | VariantT tcs -> check_mixops "variant" "case" (List.map (fun (op, _, _) -> op) tcs) dt.at; @@ -219,7 +219,7 @@ and valid_deftyp envr dt = and valid_typfield envr (_atom, (qs, t, prems), _hints) = let envr' = local_env envr in - List.iter (valid_param envr') qs; + List.iter (valid_quant envr') qs; valid_typ !envr' t; List.iter (valid_prem !envr') prems @@ -233,11 +233,11 @@ and valid_typcase envr (mixop, (qs, t, prems), _hints) = | TupT ts -> List.length ts | _ -> 1 in - if List.length mixop <> arity + 1 then + if Mixop.arity mixop <> arity then error t.at ("inconsistent arity in mixin notation, `" ^ string_of_mixop mixop ^ "` applied to " ^ typ_string !envr t); let envr' = local_env envr in - List.iter (valid_param envr') qs; + List.iter (valid_quant envr') qs; valid_typ !envr' t; List.iter (valid_prem !envr') prems @@ -673,6 +673,8 @@ and valid_param envr p = valid_typ !envr' t; envr := Env.bind_gram !envr x (ps, t, []) +and valid_quant envr q = valid_param envr q + let valid_inst envr ps inst = Debug.(log_in "il.valid_inst" line); Debug.(log_in_at "il.valid_inst" inst.at @@ -681,7 +683,7 @@ let valid_inst envr ps inst = match inst.it with | InstD (qs, as_, dt) -> let envr' = local_env envr in - List.iter (valid_param envr') qs; + List.iter (valid_quant envr') qs; let _s = valid_args !envr' as_ ps Subst.empty inst.at in valid_deftyp envr' dt @@ -693,7 +695,7 @@ let valid_rule envr mixop t rule = match rule.it with | RuleD (_x, qs, mixop', e, prems) -> let envr' = local_env envr in - List.iter (valid_param envr') qs; + List.iter (valid_quant envr') qs; valid_expmix ~side:`Lhs !envr' mixop' e (mixop, t) e.at; List.iter (valid_prem !envr') prems @@ -706,7 +708,7 @@ try match clause.it with | DefD (qs, as_, e, prems) -> let envr' = local_env envr in - List.iter (valid_param envr') qs; + List.iter (valid_quant envr') qs; let s = valid_args !envr' as_ ps Subst.empty clause.at in valid_exp !envr' e (Subst.subst_typ s t); List.iter (valid_prem !envr') prems @@ -723,7 +725,7 @@ let valid_prod envr ps t prod = match prod.it with | ProdD (qs, g, e, prems) -> let envr' = local_env envr in - List.iter (valid_param envr') qs; + List.iter (valid_quant envr') qs; let _t' = valid_sym !envr' g in valid_exp !envr' e t; List.iter (valid_prem !envr') prems diff --git a/spectec/src/il2al/animate.ml b/spectec/src/il2al/animate.ml index 10dd24137..2ab200995 100644 --- a/spectec/src/il2al/animate.ml +++ b/spectec/src/il2al/animate.ml @@ -251,7 +251,8 @@ let is_not_lhs e = match e.it with (* Hack to handle RETURN_CALL_ADDR, eventually should be removed *) let is_atomic_lhs e = match e.it with -| CaseE ([{it = Atom "FUNC"; _}]::_, _, { it = CaseE ([[]; [{it = Arrow; _}]; []], _, { it = TupE [ { it = IterE (_, (ListN _, _)); _} ; { it = IterE (_, (ListN _, _)); _} ] ; _} ); _ }) -> true +| CaseE (op, _, { it = CaseE (Xl.Mixop.(Infix (Arg (), {it = Arrow; _}, Arg ())), _, { it = TupE [ { it = IterE (_, (ListN _, _)); _} ; { it = IterE (_, (ListN _, _)); _} ] ; _} ); _ }) -> + Il2al_util.case_head op = "FUNC" | _ -> false (* Hack to handle ARRAY.INIT_DATA, eventually should be removed *) @@ -349,7 +350,7 @@ let animate_rule r = match r.it with | RuleD(id, binds, mixop, args, prems) -> ( match (mixop, args.it) with (* lhs ~> rhs *) - | ([ [] ; [{it = SqArrow; _}] ; []] , TupE ([_lhs; _rhs])) -> + | (Xl.Mixop.(Infix (Arg (), {it = SqArrow; _}, Arg ())) , TupE ([_lhs; _rhs])) -> let new_prems = animate_prems {empty with varid = Set.of_list Encode.input_vars} prems in RuleD(id, binds, mixop, args, new_prems) $ r.at | _ -> r diff --git a/spectec/src/il2al/encode.ml b/spectec/src/il2al/encode.ml index 2eb6c532d..79728a0df 100644 --- a/spectec/src/il2al/encode.ml +++ b/spectec/src/il2al/encode.ml @@ -42,14 +42,7 @@ let args_of_case e = | _ -> error e.at "cannot get arguments of case expression" let is_context e = - is_case e && - match case_of_case e with - | (atom :: _) :: _ -> - (match it atom with - - | Atom a -> List.mem a Al.Al_util.context_names - | _ -> false) - | _ -> false + is_case e && List.mem (Il2al_util.case_head (case_of_case e)) Al.Al_util.context_names let rec stack_to_list e = match e.it with @@ -140,7 +133,7 @@ let encode_stack stack = (* ASSUMPTION: the inner stack of the ctxt instruction is always the last arg *) let args', inner_stack = Lib.List.split_last args in - let mixop', _ = Lib.List.split_last mixop in + let mixop' = Il2al_util.split_last_case mixop in let e1 = { e with it = CaseE (mixop', [], TupE args' $$ no_region % (mk_varT "")) } in let e2 = (mk_varE "ctxt" "contextT") in @@ -159,7 +152,7 @@ let encode_stack stack = (* Encode lhs *) let encode_lhs lhs = match lhs.it with - | CaseE ([[]; [{it = Semicolon; _}]; []], [], {it = TupE [z; stack]; _}) -> + | CaseE (Xl.Mixop.(Infix (Arg (), {it = Semicolon; _}, Arg ())), [], {it = TupE [z; stack]; _}) -> let prem = LetPr (z, mk_varE "state" "stateT", free_ids z) $ z.at in prem :: encode_stack stack | _ -> @@ -172,7 +165,7 @@ let encode_rule r = | RuleD(id, binds, mixop, args, prems) -> match (mixop, args.it) with (* lhs ~> rhs *) - | ([ [] ; [{it = SqArrow; _}] ; []] , TupE ([lhs; _rhs])) -> + | (Xl.Mixop.(Infix (Arg (), {it = SqArrow; _}, Arg ())), TupE ([lhs; _rhs])) -> let name = String.split_on_char '-' id.it |> List.hd in if List.mem name ["pure"; "read"; "trap"; "ctxt"] then (* Administrative rules *) r diff --git a/spectec/src/il2al/il2al_util.ml b/spectec/src/il2al/il2al_util.ml index 76bd09700..30ae84708 100644 --- a/spectec/src/il2al/il2al_util.ml +++ b/spectec/src/il2al/il2al_util.ml @@ -56,6 +56,35 @@ let case_of_case e = | _ -> error e.at (Printf.sprintf "expected a CaseE, but got `%s`" (Il.Print.string_of_exp e)) +let case_head mixop = + match Mixop.head mixop with + | Some {it = Atom.Atom id; _} -> id + | _ -> "" + +let rec split_last_case' = function + | Mixop.Arg () -> Some (Mixop.Seq []) + | Mixop.Seq [] | Mixop.Atom _ -> None + | Mixop.Seq mixops -> + let mixops', mixop = Lib.List.split_last mixops in + (match split_last_case' mixop with + | Some (Mixop.Seq []) -> Some (Mixop.Seq mixops') + | Some mixop' -> Some (Mixop.Seq (mixops' @ [mixop'])) + | None -> split_last_case' (Mixop.Seq mixops') + ) + | Mixop.Brack (l, mixop, _) -> + (match split_last_case' mixop with + | Some (Mixop.Seq []) -> Some (Mixop.Atom l) + | Some mixop' -> Some (Mixop.Seq [Mixop.Atom l; mixop']) + | None -> None + ) + | Mixop.Infix (mixop1, atom, mixop2) -> + (match split_last_case' mixop2 with + | Some mixop2' -> Some (Mixop.Infix (mixop1, atom, mixop2')) + | None -> split_last_case' mixop1 + ) + +let split_last_case mixop = Option.get (split_last_case' mixop) + let is_let_prem_with_rhs_type t prem = match prem.it with | LetPr (_, e, _) -> diff --git a/spectec/src/il2al/postprocess.ml b/spectec/src/il2al/postprocess.ml index 5820f018d..9192e2daa 100644 --- a/spectec/src/il2al/postprocess.ml +++ b/spectec/src/il2al/postprocess.ml @@ -1,7 +1,7 @@ open Al -open Xl open Ast open Util +open Il2al_util open Source let rec merge_pop_assert' instrs = @@ -11,8 +11,8 @@ let rec merge_pop_assert' instrs = ({ it = PopI e2; _ } as i2) :: ({ it = AssertI ({ it = BinE (`EqOp, e31, e32); _ }); _ } as i3) :: il -> (match e2.it, e32.it with - | CaseE ([{ it = Atom.Atom ("CONST" | "VCONST"); _ }]::_, hd::_), VarE _ - when Eq.eq_expr e31 hd -> + | CaseE (op, hd::_), VarE _ + when List.mem (case_head op) ["CONST"; "VCONST"] && Eq.eq_expr e31 hd -> let e1 = { e1 with it = TopValueE (Some e32) } in let i1 = { i1 with it = AssertI e1 } in merge_helper (i2 :: i1 :: acc) il @@ -22,15 +22,15 @@ let rec merge_pop_assert' instrs = | ({ it = AssertI ({ it = TopValueE None; _ } as e1); _ } as i1) :: ({ it = PopI e2; _ } as i2) :: il -> (match e2.it with - | CaseE ([{ it = Atom.Atom ("CONST" | "VCONST"); _ }]::_, - ({ it = CaseE (_, []); _ } as hd)::_tl) -> + | CaseE (op, ({ it = CaseE (_, []); _ } as hd)::_tl) + when List.mem (case_head op) ["CONST"; "VCONST"] -> let e1 = { e1 with it = TopValueE (Some hd) } in let i1 = { i1 with it = AssertI e1 } in merge_helper (i2 :: i1 :: acc) il - | CaseE ([{ it = Atom.Atom ("CONST" | "VCONST" as cons); _ }]::_ , - { it = VarE _; _ }::_tl) -> + | CaseE (op, { it = VarE _; _ }::_tl) + when List.mem (case_head op) ["CONST"; "VCONST"] -> (* HARDCODE: name of type according to constructor *) - let vt = if cons = "CONST" then "num" else "vec" in + let vt = if case_head op = "CONST" then "num" else "vec" in let hd = VarE vt $$ no_region % (Il.Ast.VarT (vt $ no_region, []) $ no_region) in let e1 = { e1 with it = TopValueE (Some hd) } in let i1 = { i1 with it = AssertI e1 } in diff --git a/spectec/src/il2al/preprocess.ml b/spectec/src/il2al/preprocess.ml index 98f7e3030..6a79fa26a 100644 --- a/spectec/src/il2al/preprocess.ml +++ b/spectec/src/il2al/preprocess.ml @@ -130,7 +130,7 @@ let rec preprocess_prem prem = |> List.map (fun new_prem -> IterPr (new_prem, iterexp) $ prem.at) | RulePr (id, mixop, exp) -> let lhs_rhs_opt = - match mixop, exp.it with + match Xl.Mixop.flatten mixop, exp.it with (* `id`: |- `lhs` : `rhs` *) | [[turnstile]; [colon]; []], TupE [lhs; rhs] (* `id`: C |- `lhs` : `rhs` *) diff --git a/spectec/src/il2al/translate.ml b/spectec/src/il2al/translate.ml index 8ec8c5e36..1b94ae1a5 100644 --- a/spectec/src/il2al/translate.ml +++ b/spectec/src/il2al/translate.ml @@ -44,17 +44,17 @@ let typ_state_arg = Il.TupT [field typ_store; field typ_frame] $ Source.no_regio let split_config (exp: Il.exp): Il.exp * Il.exp = assert(is_config exp); match exp.it with - | Il.CaseE ([[]; [{it = Atom.Semicolon; _}]; []], _, {it = TupE [ e1; e2 ]; _}) + | Il.CaseE (Mixop.(Infix (Arg (), {it = Atom.Semicolon; _}, Arg ())), _, {it = TupE [ e1; e2 ]; _}) when is_state e1 -> e1, e2 - | Il.CaseE ([[]; [{it = Atom.Semicolon; _}]; []], _, {it = TupE [ e1; e2 ]; _}) + | Il.CaseE (Mixop.(Infix (Arg (), {it = Atom.Semicolon; _}, Arg ())), _, {it = TupE [ e1; e2 ]; _}) when is_frame e1 -> let store = Il.StrE [] $$ e1.at % typ_store in - let state = Il.CaseE ([[]; [Atom.Semicolon $$ e1.at % Atom.info ""]; []], [], Il.TupE [ store; e1 ] $$ e1.at % typ_state_arg) $$ e1.at % typ_state in + let state = Il.CaseE (Mixop.(Infix (Arg (), Atom.Semicolon $$ e1.at % Atom.info "", Arg ())), [], Il.TupE [ store; e1 ] $$ e1.at % typ_state_arg) $$ e1.at % typ_state in state, e2 - | Il.CaseE ([[]; [{it = Atom.Semicolon; _}]; []], _, {it = TupE [ e1; e2 ]; _}) + | Il.CaseE (Mixop.(Infix (Arg (), {it = Atom.Semicolon; _}, Arg ())), _, {it = TupE [ e1; e2 ]; _}) when is_store e1 -> let frame = Il.StrE [] $$ e1.at % typ_frame in - let state = Il.CaseE ([[]; [Atom.Semicolon $$ e1.at % Atom.info ""]; []], [], Il.TupE [ e1; frame ] $$ e1.at % typ_state_arg) $$ e1.at % typ_state in + let state = Il.CaseE (Mixop.(Infix (Arg (), Atom.Semicolon $$ e1.at % Atom.info "", Arg ())), [], Il.TupE [ e1; frame ] $$ e1.at % typ_state_arg) $$ e1.at % typ_state in state, e2 | _ -> error exp.at (sprintf "can not recognize `%s` as a `config` expression" (Il.Print.string_of_exp exp)) @@ -62,7 +62,7 @@ let split_config (exp: Il.exp): Il.exp * Il.exp = let split_state (exp: Il.exp): Il.exp * Il.exp = assert(is_state exp); match exp.it with - | Il.CaseE ([[]; [{it = Atom.Semicolon; _}]; []], _, {it = TupE [ e1; e2 ]; _}) + | Il.CaseE (Mixop.(Infix (Arg (), {it = Atom.Semicolon; _}, Arg ())), _, {it = TupE [ e1; e2 ]; _}) when is_store e1 && is_frame e2 -> e1, e2 | _ -> error exp.at (sprintf "can not recognize `%s` as a `state` expression" (Il.Print.string_of_exp exp)) @@ -97,7 +97,7 @@ let is_simple_separator = function let is_context exp = is_case exp && - match case_of_case exp with + match Mixop.flatten (case_of_case exp) with | (atom :: _) :: _ -> (match it atom with | Atom a -> List.mem a context_names @@ -146,8 +146,8 @@ let rec is_wasm_value e = (* TODO: use hint? *) match e.it with | Il.SubE (e, _, _) -> is_wasm_value e - | Il.CaseE ([{it = Atom id; _}]::_, _, _) when - List.mem id [ + | Il.CaseE (op, _, _) when + List.mem (case_head op) [ "CONST"; "VCONST"; "REF.I31_NUM"; @@ -253,23 +253,23 @@ and translate_exp exp = in match (op, exps) with (* Singleton *) - | [ []; [] ], [ e1 ] -> + | Mixop.Arg (), [ e1 ] -> { (translate_exp e1) with note=note } (* State *) - | _ when List.for_all is_simple_separator op + | _ when List.for_all is_simple_separator (Mixop.flatten op) && Il.Print.string_of_typ_name exp.note = "state" -> tupE (List.map translate_exp exps) ~at ~note (* Normal Case *) | _ -> - if List.length op = List.length exps + 1 then + if Mixop.arity op = List.length exps then caseE (op, translate_argexp e) ~at ~note else error_exp exp "arity mismatch for CaseE mixop and args" ) | Il.UncaseE (e, op, _) -> (match op with - | [ []; [] ] -> translate_exp e + | Mixop.Arg () -> translate_exp e | _ -> yetE (Il.Print.string_of_exp exp) ~at ~note ) | Il.ProjE (e, 0) -> translate_exp e @@ -319,12 +319,13 @@ and translate_iterexp (iter, xes) = let insert_assert exp = let at = exp.at in match exp.it with - | Il.CaseE ([{it = Atom.Atom id; _}]::_, _, _) when List.mem id context_names -> - assertI (contextKindE (atom_of_name id "evalctx") ~note:boolT) ~at:at + | Il.CaseE (op, _, _) when List.mem (case_head op) context_names -> + assertI (contextKindE (atom_of_name (case_head op) "evalctx") ~note:boolT) ~at:at | Il.IterE (_, (Il.ListN (e, None), _)) -> assertI (topValuesE (translate_exp e) ~at ~note:boolT) ~at:at | Il.IterE (_, (Il.List, _)) -> nopI () ~at:at - | Il.CaseE ([{it = Atom.Atom "CONST"; _}]::_, _, { it = Il.TupE (ty' :: _); _ }) -> + | Il.CaseE (op, _, { it = Il.TupE (ty' :: _); _ }) + when case_head op = "CONST" -> assertI (topValueE (Some (translate_exp ty')) ~note:boolT) ~at:at | _ -> assertI (topValueE None ~note:boolT) ~at:at @@ -334,7 +335,7 @@ let cond_of_pop_value e = let bt = boolT in match e.it with (* | CaseE (op, _, [t; _]) -> - (match get_atom op with + (match Mixop.head op with | Some {it = Atom.Atom "CONST"; _} -> topValueE (Some t) ~note:bt | Some {it = Atom.Atom "VCONST"; _} -> topValueE (Some t) ~note:bt | _ -> topValueE None ~note:bt @@ -425,7 +426,7 @@ let rec translate_rhs exp = let at = exp.at in match exp.it with (* Trap *) - | Il.CaseE ([{it = Atom "TRAP"; _}]::_, _, _) -> [ trapI () ~at ] + | Il.CaseE (op, _, _) when case_head op = "TRAP" -> [ trapI () ~at ] (* Context *) | _ when is_context exp -> translate_context_rhs exp (* Config *) @@ -492,13 +493,13 @@ and translate_context_rhs exp = let at = exp.at in let case = case_of_case exp in - let atom = case |> List.hd |> List.hd in + let atom = Option.get (Mixop.head case) in let args = args_of_case exp in - let case', _ = Lib.List.split_last case in + let case' = split_last_case case in let args, instrs = Lib.List.split_last args in let args' = List.map translate_exp args in - let e' = caseE ([[atom]], []) ~at:instrs.at ~note:instrT in + let e' = caseE (Mixop.Atom atom, []) ~at:instrs.at ~note:instrT in let instrs', al = translate_context_instrs e' instrs in let ectx = caseE (case', args') ~at ~note:evalctxT in [ @@ -791,7 +792,7 @@ and handle_special_lhs lhs rhs free_ids = )] (* Normal cases *) | CaseE (op, es) -> - let tag_opt = get_atom op in + let tag_opt = Mixop.head op in let bindings, es' = extract_non_names es in let rec inject_isCaseOf tag expr = match expr.it with @@ -1041,7 +1042,7 @@ let to_frame_instr r = let rec e_to_frame_instr e = match e with - | {it = Il.Ast.CaseE ([[]; [{it = Semicolon; _}]; []], _, {it = TupE [lhs; rhs]; _}); _} -> + | {it = Il.Ast.CaseE (Mixop.(Infix (Arg (), {it = Semicolon; _}, Arg ())), _, {it = TupE [lhs; rhs]; _}); _} -> let i = e_to_frame_instr lhs in if i = [] then e_to_frame_instr rhs else i | {it = Il.Ast.VarE _; note = {it = Il.Ast.VarT ({it = "frame"; _}, _); _}; _} -> @@ -1082,11 +1083,11 @@ let translate_context_winstr winstr = let at = winstr.at in let case = case_of_case winstr in - let kind = case |> List.hd |> List.hd in + let kind = Option.get (Mixop.head case) in let args = args_of_case winstr in let args, vals = Lib.List.split_last args in (* The last element of case is for instr*, which should not be present in the context record *) - let case, _ = Lib.List.split_last case in + let case = split_last_case case in let destruct = caseE (case, List.map translate_exp args) ~note:evalctxT ~at in [ @@ -1101,7 +1102,8 @@ let translate_context ctx = let at = ctx.at in match ctx.it with - | Il.CaseE ([{it = Atom.Atom id; _} as atom]::_ as case, _, { it = Il.TupE args; _ }) when List.mem id context_names -> + | Il.CaseE (case, _, { it = Il.TupE args; _ }) when List.mem (case_head case) context_names -> + let atom = Option.get (Mixop.head case) in let destruct = caseE (case, List.map translate_exp args) ~note:evalctxT ~at in [ letI (destruct, getCurContextE atom ~note:evalctxT) ~at:at; @@ -1136,7 +1138,7 @@ let rec translate_rgroup' (rule: rule_def) = | Some _ -> let pops, u_group = extract_pops subgroup in let ctxt = extract_context (List.hd u_group) |> Option.get in - let atom = case_of_case ctxt |> List.hd |> List.hd in + let atom = case_of_case ctxt |> Mixop.head |> Option.get in let cond = ContextKindE atom $$ atom.at % boolT in let head_instrs, middle_instr = translate_context ctxt in let is_otherwise = function [{it = OtherwiseI _; _}] -> true | _ -> false in @@ -1202,10 +1204,10 @@ and translate_rgroup (rule: rule_def) = let name = try - match case_of_case winstr with - | (atom :: _) :: _ -> atom + match Mixop.head (case_of_case winstr) with + | Some atom -> atom | _ -> failwith "" - with | _ -> error rule.at "The reduction rules do not have valid or consistent target Wasm instructions." + with _ -> error rule.at "The reduction rules do not have valid or consistent target Wasm instructions." in let anchor = rel_id.it ^ "/" ^ instr_name in let al_params = diff --git a/spectec/src/il2al/transpile.ml b/spectec/src/il2al/transpile.ml index d0c4d4a29..7c81e6373 100644 --- a/spectec/src/il2al/transpile.ml +++ b/spectec/src/il2al/transpile.ml @@ -158,7 +158,7 @@ let is_case e = let atom_of_case e = match e.it with - | CaseE ((atom :: _) :: _, _) -> atom + | CaseE (op, _) when Mixop.head op <> None -> Option.get (Mixop.head op) | _ -> Error.error e.at "prose transformation" "expected a CaseE" let rec replace_names binds instr = @@ -795,7 +795,7 @@ let remove_trivial_case_check instr = | IsCaseOfE (expr, atom) -> (match get_typ_cases expr.note with | Some [ mixop, _, _ ] -> - List.exists (List.mem atom) mixop + List.exists (List.mem atom) (Mixop.flatten mixop) | _ -> false ) | _ -> false @@ -1292,7 +1292,7 @@ let remove_exit algo = let unused_var = varE "_" ~note:no_note in let control_frame_expr = caseE ( - [[atom]; [{ atom with it=Atom.LBrace}]; [{ atom with it=Atom.RBrace}]; []], + Mixop.(Seq [Atom atom; Arg (); Brack ({ atom with it=Atom.LBrace}, Arg (), { atom with it=Atom.RBrace}); Arg ()]), [ unused_var; unused_var ] ) ~note:evalctxT in @@ -1313,7 +1313,8 @@ let remove_exit algo = let remove_enter algo = let enter_frame_to_push instr = match instr.it with - | EnterI (e_frame, { it = ListE ([ { it = CaseE ([[{ it = Atom.Atom "FRAME_"; _ }]], []); _ } ]); _ }, il) -> + | EnterI (e_frame, { it = ListE ([ { it = CaseE (op, []); _ } ]); _ }, il) + when case_head op = "FRAME_" -> pushI e_frame ~at:instr.at :: il | _ -> [ instr ] in @@ -1322,13 +1323,13 @@ let remove_enter algo = match instr.it with | EnterI ( e_label, - { it = CatE (e_instrs, { it = ListE ([ { it = CaseE ([[{ it = Atom.Atom "LABEL_"; _ }]], []); _ } ]); _ }); note; _ }, - [ { it = PushI e_vals; _ } ]) -> + { it = CatE (e_instrs, { it = ListE ([ { it = CaseE (op, []); _ } ]); _ }); note; _ }, + [ { it = PushI e_vals; _ } ]) when case_head op = "LABEL_" -> enterI (e_label, catE (e_vals, e_instrs) ~note:note, []) ~at:instr.at | EnterI ( e_label, - { it = CatE (e_instrs, { it = ListE ([ { it = CaseE ([[{ it = Atom.Atom "LABEL_"; _ }]], []); _ } ]); _ }); _ }, - []) -> + { it = CatE (e_instrs, { it = ListE ([ { it = CaseE (op, []); _ } ]); _ }); _ }, + []) when case_head op = "LABEL_" -> enterI (e_label, e_instrs, []) ~at:instr.at | _ -> instr in @@ -1382,7 +1383,7 @@ let prosify_control_frame algo = let walk_instr walker instr = match instr.it with - | LetI ({ it = CaseE ([{ it = Atom "LABEL_"; _ }] :: _, [ _; cont ]); _ }, _) -> + | LetI ({ it = CaseE (op, [ _; cont ]); _ }, _) when case_head op = "LABEL_" -> cont_ref := cont; [ instr ] | ExecuteSeqI expr when Eq.eq_expr expr !cont_ref -> [ { instr with it = ExecuteSeqI (callE ("__prose:_jump_to_the_cont", [expA expr]) ~note:no_note) } ] diff --git a/spectec/src/xl/mixop.ml b/spectec/src/xl/mixop.ml index 0a61c6744..6527629be 100644 --- a/spectec/src/xl/mixop.ml +++ b/spectec/src/xl/mixop.ml @@ -1,25 +1,74 @@ +open Util open Util.Source type atom = Atom.atom -type mixop = atom list list +type 'a mixop = + | Arg of 'a + | Seq of 'a mixop list + | Atom of atom + | Brack of atom * 'a mixop * atom + | Infix of 'a mixop * atom * 'a mixop + + +let rec map f mixop = + match mixop with + | Arg x -> Arg (f x) + | Seq mixops -> Seq (List.map (map f) mixops) + | Atom at -> Atom at + | Brack (at1, mixop, at2) -> Brack (at1, map f mixop, at2) + | Infix (mixop1, at, mixop2) -> Infix (map f mixop1, at, map f mixop2) + +let rec fold f x mixop = + match mixop with + | Arg y -> f x y + | Seq mixops -> List.fold_left (fold f) x mixops + | Atom _ -> x + | Brack (_, mixop, _) -> fold f x mixop + | Infix (mixop1, _, mixop2) -> fold f (fold f x mixop1) mixop2 + +let rec map_atoms f mixop = + match mixop with + | Arg x -> Arg x + | Seq mixops -> Seq (List.map (map_atoms f) mixops) + | Atom at -> Atom (f at) + | Brack (at1, mixop, at2) -> Brack (f at1, map_atoms f mixop, f at2) + | Infix (mixop1, at, mixop2) -> + Infix (map_atoms f mixop1, f at, map_atoms f mixop2) + + +let arity mixop = fold (fun n _ -> n + 1) 0 mixop + + +let (++) atomss1 atomss2 = + let atomss1', atoms1 = Lib.List.split_last atomss1 in + let atoms2, atomss2' = Lib.List.split_hd atomss2 in + atomss1' @ [atoms1 @ atoms2] @ atomss2' + +let rec head = function + | Arg _ | Seq [] -> None + | Seq (mixop::_) -> head mixop + | Atom atom | Brack (atom, _, _) | Infix (_, atom, _) -> Some atom + +let rec flatten = function + | Arg _ -> [[]; []] + | Seq mixops -> List.fold_left (++) [[]] (List.map flatten mixops) + | Atom atom -> [[atom]] + | Brack (l, mixop, r) -> [[l]] ++ flatten mixop ++ [[r]] + | Infix (mixop1, atom, mixop2) -> flatten mixop1 ++ [[atom]] ++ flatten mixop2 let compare mixop1 mixop2 = - List.compare (List.compare Atom.compare) mixop1 mixop2 + List.compare (List.compare Atom.compare) (flatten mixop1) (flatten mixop2) let eq mixop1 mixop2 = compare mixop1 mixop2 = 0 -let to_string = function +let to_string' = function | [{it = Atom.Atom a; _}]::tail when List.for_all ((=) []) tail -> a | mixop -> - let s = - String.concat "%" (List.map ( - fun atoms -> String.concat "" (List.map Atom.to_string atoms)) mixop - ) - in - "`" ^ s ^ "`" - -let name mixop = - String.concat "" (List.map Atom.name mixop) + String.concat "%" (List.map ( + fun atoms -> String.concat "" (List.map Atom.to_string atoms)) mixop + ) + +let to_string mixop = to_string' (flatten mixop) From dcc03d98911f4841c9e931d2c6f0ffff184f9e56 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Mon, 1 Dec 2025 16:09:01 +0100 Subject: [PATCH 004/235] WIP2 (now compiles again) --- spectec/doc/Language.md | 2 +- spectec/src/backend-latex/render.ml | 2 +- spectec/src/el/ast.ml | 2 +- spectec/src/el/convert.ml | 6 +- spectec/src/el/eq.ml | 3 +- spectec/src/el/free.ml | 72 +- spectec/src/el/free.mli | 25 +- spectec/src/el/iter.ml | 4 +- spectec/src/el/print.ml | 2 +- spectec/src/el/subst.ml | 2 +- spectec/src/frontend/dim.ml | 3 +- spectec/src/frontend/elab.ml | 995 ++++++++++++++-------------- spectec/src/frontend/eval.ml | 4 +- spectec/src/frontend/parser.mly | 4 +- spectec/src/il/eq.ml | 10 + spectec/src/il/eq.mli | 1 + spectec/src/il/free.ml | 69 +- spectec/src/il/free.mli | 24 +- spectec/src/il/subst.ml | 5 + spectec/src/il/valid.ml | 8 +- spectec/src/xl/dune | 2 +- spectec/src/xl/mixop.ml | 7 + 22 files changed, 553 insertions(+), 699 deletions(-) diff --git a/spectec/doc/Language.md b/spectec/doc/Language.md index b26cee6e9..24fd7b6ce 100644 --- a/spectec/doc/Language.md +++ b/spectec/doc/Language.md @@ -1547,7 +1547,7 @@ params ::= ("(" param*"," ")")? param ::= (varid ":") typ "syntax" synid - "grammar" gramid ":" typ + "grammar" gramid params ":" typ "def" "$" defid params ":" typ def ::= diff --git a/spectec/src/backend-latex/render.ml b/spectec/src/backend-latex/render.ml index 4434e93cb..b91719144 100644 --- a/spectec/src/backend-latex/render.ml +++ b/spectec/src/backend-latex/render.ml @@ -1676,7 +1676,7 @@ let render_param env p = match p.it with | ExpP (id, t) -> if id.it = "_" then render_typ env t else render_varid env id | TypP id -> render_typid env id - | GramP (id, _t) -> render_gramid env id + | GramP (id, _ps, _t) -> render_gramid env id | DefP (id, _ps, _t) -> render_defid env id let _render_params env = function diff --git a/spectec/src/el/ast.ml b/spectec/src/el/ast.ml index b56ee187a..89291e880 100644 --- a/spectec/src/el/ast.ml +++ b/spectec/src/el/ast.ml @@ -158,7 +158,7 @@ and param = param' phrase and param' = | ExpP of id * typ (* varid `:` typ *) | TypP of id (* `syntax` varid *) - | GramP of id * typ (* `grammar` gramid `:` typ *) + | GramP of id * param list * typ (* `grammar` gramid `:` typ *) | DefP of id * param list * typ (* `def` `$` defid params `:` typ *) and arg = arg' ref phrase diff --git a/spectec/src/el/convert.ml b/spectec/src/el/convert.ml index f3464870c..932d30353 100644 --- a/spectec/src/el/convert.ml +++ b/spectec/src/el/convert.ml @@ -206,7 +206,7 @@ let rec param_of_arg a = error id.at "invalid identifer suffix in binding position"; TypP id | GramA {it = AttrG ({it = VarE (id, []); _}, g); _} -> - GramP (id, typ_of_exp (exp_of_sym g)) + GramP (id, [], typ_of_exp (exp_of_sym g)) | _ -> error a.at "malformed parameter" ) $ a.at @@ -214,6 +214,6 @@ let arg_of_param p = (match p.it with | ExpP (id, _t) -> ExpA ((*TypE ( *)VarE (id, []) $ id.at(*, t) $ p.at*)) | TypP id -> TypA (VarT (id, []) $ id.at) - | GramP (id, _t) -> GramA (VarG (id, []) $ id.at) - | DefP (id, _params, _t) -> DefA id + | GramP (id, _ps, _t) -> GramA (VarG (id, []) $ id.at) + | DefP (id, _ps, _t) -> DefA id ) |> ref $ p.at diff --git a/spectec/src/el/eq.ml b/spectec/src/el/eq.ml index f012ed66a..ddeffdb3f 100644 --- a/spectec/src/el/eq.ml +++ b/spectec/src/el/eq.ml @@ -179,7 +179,8 @@ and eq_param p1 p2 = match p1.it, p2.it with | ExpP (id1, t1), ExpP (id2, t2) -> eq_id id1 id2 && eq_typ t1 t2 | TypP id1, TypP id2 -> eq_id id1 id2 - | GramP (id1, t1), GramP (id2, t2) -> eq_id id1 id2 && eq_typ t1 t2 + | GramP (id1, ps1, t1), GramP (id2, ps2, t2) -> + eq_id id1 id2 && eq_list eq_param ps1 ps2 && eq_typ t1 t2 | DefP (id1, ps1, t1), DefP (id2, ps2, t2) -> eq_id id1 id2 && eq_list eq_param ps1 ps2 && eq_typ t1 t2 | _, _ -> false diff --git a/spectec/src/el/free.ml b/spectec/src/el/free.ml index 731441e95..afc1bb298 100644 --- a/spectec/src/el/free.ml +++ b/spectec/src/el/free.ml @@ -3,84 +3,26 @@ open Ast open Xl -(* Data Structure *) - -module Set = Set.Make(String) - -type sets = - { typid : Set.t; - gramid : Set.t; - relid : Set.t; - varid : Set.t; - defid : Set.t; - } - -let empty = - { typid = Set.empty; - gramid = Set.empty; - relid = Set.empty; - varid = Set.empty; - defid = Set.empty; - } - -let union sets1 sets2 = - { typid = Set.union sets1.typid sets2.typid; - gramid = Set.union sets1.gramid sets2.gramid; - relid = Set.union sets1.relid sets2.relid; - varid = Set.union sets1.varid sets2.varid; - defid = Set.union sets1.defid sets2.defid; - } - -let inter sets1 sets2 = - { typid = Set.inter sets1.typid sets2.typid; - gramid = Set.inter sets1.gramid sets2.gramid; - relid = Set.inter sets1.relid sets2.relid; - varid = Set.inter sets1.varid sets2.varid; - defid = Set.inter sets1.defid sets2.defid; - } - -let diff sets1 sets2 = - { typid = Set.diff sets1.typid sets2.typid; - gramid = Set.diff sets1.gramid sets2.gramid; - relid = Set.diff sets1.relid sets2.relid; - varid = Set.diff sets1.varid sets2.varid; - defid = Set.diff sets1.defid sets2.defid; - } +include Xl.Gen_free let (+) = union let (-) = diff -let free_opt free_x xo = Option.(value (map free_x xo) ~default:empty) -let free_list free_x xs = List.(fold_left (+) empty (map free_x xs)) -let rec free_list_dep free_x bound_x = function - | [] -> empty - | x::xs -> free_x x + (free_list_dep free_x bound_x xs - bound_x x) +(* Aggregates *) let free_nl_elem free_x = function Nl -> empty | Elem x -> free_x x let free_nl_list free_x xs = List.(fold_left (+) empty (map (free_nl_elem free_x) xs)) -let bound_list = free_list - (* Identifiers *) let free_typid id = let id' = Convert.strip_var_suffix id in match (Convert.typ_of_varid id').it with - | VarT _ -> {empty with typid = Set.singleton id'.it} + | VarT _ -> Xl.Gen_free.free_typid id' | _ -> empty -let free_gramid id = {empty with gramid = Set.singleton id.it} -let free_relid id = {empty with relid = Set.singleton id.it} -let free_varid id = {empty with varid = Set.singleton id.it} -let free_defid id = {empty with defid = Set.singleton id.it} - -let bound_typid id = if id.it = "_" then empty else free_typid id -let bound_gramid id = if id.it = "_" then empty else free_gramid id -let bound_varid id = if id.it = "_" then empty else free_varid id -let bound_defid id = if id.it = "_" then empty else free_defid id - let free_op op = {empty with varid = Set.singleton op} let bound_op op = free_op op @@ -329,16 +271,16 @@ and free_param p = match p.it with | ExpP (_, t) -> free_typ t | TypP _ -> empty - | GramP (_, t) -> free_typ t - impl_bound_typ t + | GramP (_, ps, t) -> free_params ps + free_typ t - bound_params ps - impl_bound_typ ps t | DefP (_, ps, t) -> free_params ps + free_typ t - bound_params ps -and impl_bound_typ t = {empty with typid = (free_typ t).typid} +and impl_bound_typ ps t = {empty with typid = (free_typ t).typid} - bound_params ps and bound_param p = match p.it with | ExpP (id, _) -> bound_varid id | TypP id -> bound_typid id - | GramP (id, t) -> bound_gramid id + impl_bound_typ t + | GramP (id, ps, t) -> bound_gramid id + impl_bound_typ ps t | DefP (id, _, _) -> bound_defid id and free_args as_ = free_list free_arg as_ @@ -354,7 +296,7 @@ let free_def d = | TypD (_id1, _id2, as_, t, _hints) -> free_args as_ + free_typ t | GramD (_id1, _id2, ps, t, gram, _hints) -> - free_params ps + (free_typ t + free_gram gram - bound_params ps - impl_bound_typ t) + free_params ps + (free_typ t + free_gram gram - bound_params ps - impl_bound_typ ps t) | VarD (_id, t, _hints) -> free_typ t | SepD -> empty | RelD (_id, t, _hints) -> free_typ t diff --git a/spectec/src/el/free.mli b/spectec/src/el/free.mli index a3c0c5758..fb8bad9d3 100644 --- a/spectec/src/el/free.mli +++ b/spectec/src/el/free.mli @@ -1,21 +1,8 @@ open Ast -module Set : Set.S with type elt = string with type t = Set.Make(String).t +include module type of Xl.Gen_free -type sets = - { typid : Set.t; - gramid : Set.t; - relid : Set.t; - varid : Set.t; - defid : Set.t; - } - -val empty : sets -val union : sets -> sets -> sets -val inter : sets -> sets -> sets -val diff : sets -> sets -> sets - -val free_list : ('a -> sets) -> 'a list -> sets +val free_nl_elem : ('a -> sets) -> 'a nl_elem -> sets val free_nl_list : ('a -> sets) -> 'a nl_list -> sets val free_iter : iter -> sets @@ -26,13 +13,15 @@ val free_typcon : typcon -> sets val free_exp : exp -> sets val free_path : path -> sets val free_arg : arg -> sets -val free_args : arg list -> sets val free_prem : prem -> sets -val free_prems : prem nl_list -> sets -val free_params : param list -> sets +val free_param : param -> sets val free_prod : prod -> sets val free_def : def -> sets +val free_prems : prem nl_list -> sets +val free_args : arg list -> sets +val free_params : param list -> sets + (* A free variable is "determinate" if: - it occurs as an iteration variable - it occurs in destructuring position on the lhs diff --git a/spectec/src/el/iter.ml b/spectec/src/el/iter.ml index 521a0c8c0..d060083f8 100644 --- a/spectec/src/el/iter.ml +++ b/spectec/src/el/iter.ml @@ -213,7 +213,7 @@ and param p = match p.it with | ExpP (x, t) -> varid x; typ t | TypP x -> typid x - | GramP (x, t) -> gramid x; typ t + | GramP (x, ps, t) -> gramid x; params ps; typ t | DefP (x, ps, t) -> defid x; params ps; typ t and args as_ = list arg as_ @@ -377,7 +377,7 @@ and clone_param p = (match p.it with | ExpP (x, t) -> ExpP (x, clone_typ t) | TypP x -> TypP x - | GramP (x, t) -> GramP (x, clone_typ t) + | GramP (x, ps, t) -> GramP (x, List.map clone_param ps, clone_typ t) | DefP (x, ps, t) -> DefP (x, List.map clone_param ps, clone_typ t) ) $ p.at diff --git a/spectec/src/el/print.ml b/spectec/src/el/print.ml index 629507dc0..c9858920b 100644 --- a/spectec/src/el/print.ml +++ b/spectec/src/el/print.ml @@ -289,7 +289,7 @@ let rec string_of_param p = match p.it with | ExpP (id, t) -> (if id.it = "_" then "" else string_of_varid id ^ " : ") ^ string_of_typ t | TypP id -> "syntax " ^ string_of_typid id - | GramP (id, t) -> "grammar " ^ string_of_gramid id ^ " : " ^ string_of_typ t + | GramP (id, ps, t) -> "grammar " ^ string_of_gramid id ^ string_of_params ps ^ " : " ^ string_of_typ t | DefP (id, ps, t) -> "def " ^ string_of_defid id ^ string_of_params ps ^ " : " ^ string_of_typ t and string_of_params = function diff --git a/spectec/src/el/subst.ml b/spectec/src/el/subst.ml index 23fa722ac..09c8da368 100644 --- a/spectec/src/el/subst.ml +++ b/spectec/src/el/subst.ml @@ -252,7 +252,7 @@ and subst_param s p = (match p.it with | ExpP (id, t) -> ExpP (id, subst_typ s t) | TypP id -> TypP id - | GramP (id, t) -> GramP (id, subst_typ s t) + | GramP (id, ps, t) -> GramP (id, List.map (subst_param s) ps, subst_typ s t) | DefP (id, ps, t) -> DefP (id, List.map (subst_param s) ps, subst_typ s t) ) $ p.at diff --git a/spectec/src/frontend/dim.ml b/spectec/src/frontend/dim.ml index 4637c1dba..e84288b37 100644 --- a/spectec/src/frontend/dim.ml +++ b/spectec/src/frontend/dim.ml @@ -291,8 +291,9 @@ and check_param env ctx p = | TypP id -> check_typid env ctx id; check_varid env ctx `Impl id - | GramP (id, t) -> + | GramP (id, ps, t) -> check_gramid env ctx id; + List.iter (check_param env ctx) ps; check_typ env ctx t | DefP (_id, ps, t) -> List.iter (check_param env ctx) ps; diff --git a/spectec/src/frontend/elab.ml b/spectec/src/frontend/elab.ml index eb1cebf66..da9074119 100644 --- a/spectec/src/frontend/elab.ml +++ b/spectec/src/frontend/elab.ml @@ -102,56 +102,10 @@ let cat_exp' e1' e2' = | _ -> Il.CatE (e1', e2') -(* Notation *) +(* Environment *) type notation = Il.typ Mixop.mixop - -let rec subst_notation s not = - let open Mixop in - match not with - | Arg t -> Arg (Il.Subst.subst_typ s t) - | Seq nots -> Seq (List.map (subst_notation s) nots) - | Atom at -> Atom at - | Brack (at1, not, at2) -> Brack (at1, subst_notation s not, at2) - | Infix (not1, at, not2) -> - Infix (subst_notation s not1, at, subst_notation s not2) - -let rec apply_notation' ts not = - let open Mixop in - match not with - | Arg () -> List.tl ts, Arg (List.hd ts) - | Seq nots -> - let ts', nots' = List.fold_left_map apply_notation' ts nots in - ts', Seq nots' - | Atom at -> ts, Atom at - | Brack (at1, not, at2) -> - let ts', not' = apply_notation' ts not in - ts', Brack (at1, not', at2) - | Infix (not1, at, not2) -> - let ts', not1' = apply_notation' ts not1 in - let ts'', not2' = apply_notation' ts' not2 in - ts'', Infix (not1', at, not2') - -let apply_notation not ts = - let ts', not' = apply_notation' ts not in - assert (ts' = []); - not' - -let rec string_of_notation = function - | Mixop.Arg t -> Il.string_of_typ t - | Mixop.Seq nots -> - "{" ^ String.concat " " (List.map string_of_notation nots) ^ "}" - | Mixop.Atom atom -> string_of_atom atom - | Mixop.Brack (l, not, r) -> - "`" ^ string_of_atom l ^ string_of_notation not ^ string_of_atom r - | Mixop.Infix (not1, atom, not2) -> - string_of_notation not1 ^ " " ^ string_of_atom atom ^ " " ^ - string_of_notation not2 - - -(* Environment *) - type kind = | Transp (* forward alias types or notation types *) | Opaque (* forward structures or variants, type parameter *) @@ -160,8 +114,8 @@ type kind = type var_typ = Il.typ type typ_typ = Il.param list * kind -type gram_typ = Il.param list * Il.typ * gram option * (id * Il.prod) list -type rel_typ = Il.typ * (id * Il.rule) list +type gram_typ = Il.param list * Il.typ * dots option * (id * Il.prod) list +type rel_typ = Il.mixop * notation * Il.typ * (id * Il.rule) list type def_typ = Il.param list * Il.typ * (def * Il.clause) list type 'a env' = (region * 'a) Map.t @@ -228,26 +182,24 @@ let rebind _space env' id t = assert (bound env' id); Map.add id.it (id.at, t) env' -let find_field fs atom at t = - match List.find_opt (fun (atom', _, _) -> Atom.eq atom' atom) fs with - | Some (_, x, _) -> x +let find_field tfs atom at t = + match List.find_opt (fun (atom', _, _) -> Atom.eq atom' atom) tfs with + | Some tf -> tf | None -> error_atom at atom t "unbound field" -let find_case cs atom at t = +let find_case' f tcs atom at t = match List.find_opt - (function ((atom'::_)::_, _, _) -> Atom.eq atom' atom | _ -> false) cs + (fun (mixop, _, _) -> + match Mixop.head mixop with + | Some atom' -> f atom' atom + | None -> false + ) tcs with - | Some (_, x, _) -> x + | Some tc -> tc | None -> error_atom at atom t "unknown case" -let find_case_sub cases atom at t = - match List.find_opt - (function ((atom'::_)::_, _, _) -> Atom.(eq atom' atom || sub atom' atom) - | _ -> false - ) cases - with - | Some (_, x, _) -> x - | None -> error_atom at atom t "unknown case" +let find_case = find_case' Atom.eq +let find_case_sub = find_case' (fun a' a -> Atom.(eq a' a || sub a' a)) let bound_env' env' = Map.fold (fun id _ s -> Free.Set.add id s) env' Free.Set.empty let bound_env env = @@ -283,7 +235,7 @@ let to_il_var (_at, t) = t let to_il_def (_at, (ps, t, clauses)) = (ps, t, List.map snd clauses) let to_il_gram (_at, (ps, t, _, prods)) = (ps, t, List.map snd prods) -let to_il_typ id (at, (ps, k)) = +let to_il_typ (_at, (ps, k)) = match k with | Opaque | Transp -> ps, [] | Family insts -> ps, insts @@ -294,7 +246,7 @@ let to_il_env env = (* Need to include gvars, since matching can encounter implicit vars *) let gvars = Map.map to_il_var env.gvars in let vars = Map.map to_il_var env.vars in - let typs = Map.mapi to_il_typ env.typs in + let typs = Map.map to_il_typ env.typs in let defs = Map.map to_il_def env.defs in let grams = Map.map to_il_gram env.grams in Il.Env.{ @@ -400,7 +352,7 @@ let msg_typ2 env phrase t1 t2 reason = " does not match type " ^ typ_string env t2 ^ reason let msg_not _env phrase not = - phrase ^ " does not match notation " ^ string_of_notation not + phrase ^ " does not match notation " ^ Mixop.to_string not let error_typ env at phrase t = error at (msg_typ env phrase t) @@ -439,7 +391,7 @@ let rec arg_subst s ps args = match p.it, !((Subst.subst_arg s a).it) with | ExpP (id, _), ExpA e -> Subst.add_varid s id e | TypP id, TypA t -> Subst.add_typid s id t - | GramP (id, _), GramA g -> Subst.add_gramid s id g + | GramP (id, _, _), GramA g -> Subst.add_gramid s id g | DefP (id, _, _), DefA id' -> Subst.add_defid s id id' | _, _ -> assert false in arg_subst s' ps' as' @@ -485,7 +437,8 @@ let as_defined_typid' env x as' at : Il.deftyp' = (* TODO(2, rossberg): avoid repeated env conversion *) -let expand env t : Il.typ' = (Il.Eval.reduce_typ (to_il_env env) t).it +let reduce env t : Il.typ = Il.Eval.reduce_typ (to_il_env env) t +let expand env t : Il.typ' = (reduce env t).it let expand_def env t : Il.deftyp' * dots = match expand env t with @@ -498,7 +451,7 @@ let expand_def env t : Il.deftyp' * dots = let expand_notation env t = match expand env t with - | Il.VarT (x, as') as t' -> + | Il.VarT (x, as') -> let x' = strip_var_suffix x in (match find "syntax type" env.typs x' with | ps, Defined ({it = Il.VariantT [tc]; _}, _, _) -> @@ -506,7 +459,7 @@ let expand_notation env t = Il.Eval.(match_list match_arg (to_il_env env) Il.Subst.empty as' as_) |> Option.map (fun s -> let mixop, (qs, t, _prems), _ = Il.Subst.subst_typcase s tc in - qs, t, mixop, apply_notation mixop (untup_typ' t) + qs, t, mixop, Mixop.apply mixop (untup_typ' t) ) | _, _ -> None ) @@ -801,14 +754,6 @@ let infer_cmpop env op ) ) -let merge_mixop mixop1 mixop2 = - match mixop1, mixop2 with - | _, [] -> mixop1 - | [], _ -> mixop2 - | mixop1, atoms2::mixop2' -> - let mixop1', atoms1 = Lib.List.split_last mixop1 in - mixop1' @ [atoms1 @ atoms2] @ mixop2' - let check_atoms phrase item to_atom list at = let _, dups = @@ -824,8 +769,8 @@ let check_atoms phrase item to_atom list at = (* Iteration *) -let rec elab_iter env iter : Il.quant list * Il.iter = - match iter with +let rec elab_iter env (it : iter) : Il.quant list * Il.iter = + match it with | Opt -> [], Il.Opt | List -> [], Il.List | List1 -> [], Il.List1 @@ -840,20 +785,20 @@ let rec elab_iter env iter : Il.quant list * Il.iter = let qs, e' = checkpoint (elab_exp env e (Il.NumT `NatT $ e.at)) in qs, Il.ListN (e', xo) -and elab_typiter env iter : Il.iter = - let iter = - match iter with +and elab_typiter env (it : iter) : Il.iter = + let it = + match it with | List1 | ListN _ -> List - | _ -> iter + | _ -> it in - let qs, iter' = elab_iter env iter in + let qs, it' = elab_iter env it in assert (qs = []); - iter' + it' (* Types *) -and elab_typ env t : Il.typ = +and elab_typ env (t : typ) : Il.typ = match t.it with | VarT (x, as_) -> let x' = strip_var_suffix x in @@ -879,10 +824,10 @@ and elab_typ env t : Il.typ = | AtomT _ | SeqT _ | InfixT _ | BrackT _ -> error t.at "this type is only allowed in type definitions" -and elab_typ_definition env tid t : Il.deftyp * dots = +and elab_typ_definition env tid (t : typ) : dots * Il.deftyp * dots = Debug.(log_at "el.elab_typ_definition" t.at (fun _ -> fmt "%s = %s" tid.it (el_typ t)) - (fun (dt, _) -> il_deftyp dt) + (fun (_, dt, _) -> il_deftyp dt) ) @@ fun _ -> assert (valid_tid tid); match t.it with @@ -908,7 +853,7 @@ and elab_typ_definition env tid t : Il.deftyp * dots = in let tfs' = tfs1 @ tfs2 @ map_filter_nl_list (elab_typfield env tid t.at) tfs in check_atoms "record" "field" Fun.id tfs' t.at; - Il.StructT tfs' $ t.at, dots2 + dots1, Il.StructT tfs' $ t.at, dots2 | CaseT (dots1, ts, tcs, dots2) -> let tcs1 = if dots1 = NoDots then [] else @@ -931,10 +876,10 @@ and elab_typ_definition env tid t : Il.deftyp * dots = in let tcs' = tcs1 @ tcs2 @ map_filter_nl_list (elab_typcase env tid t.at) tcs in check_atoms "variant" "case" (fun op -> Option.get (Mixop.head op)) tcs' t.at; - Il.VariantT tcs' $ t.at, dots2 + dots1, Il.VariantT tcs' $ t.at, dots2 | ConT tc -> let tc' = elab_typcon env tid t.at tc in - Il.VariantT [tc'] $ t.at, NoDots + NoDots, Il.VariantT [tc'] $ t.at, NoDots | RangeT tes -> let ts_fes' = map_filter_nl_list (elab_typenum env tid) tes in let t', fe' = @@ -952,10 +897,10 @@ and elab_typ_definition env tid t : Il.deftyp * dots = let qs = [Il.ExpP (x, t') $ t.at] in let prems' = [Il.IfPr (fe' eid' nt) $ t.at] in let tc' = (Mixop.Arg (), (qs, Il.TupT [(x, t')] $ t.at, prems'), []) in - Il.VariantT [tc'] $ t.at, NoDots + NoDots, Il.VariantT [tc'] $ t.at, NoDots | _ -> let t' = elab_typ env t in - Il.AliasT t' $ t.at, NoDots + NoDots, Il.AliasT t' $ t.at, NoDots and typ_rep env t : Il.typ = Debug.(log_at "el.typ_rep" t.at @@ -970,7 +915,8 @@ and typ_rep env t : Il.typ = ) | t' -> t' $ t.at -and elab_typfield env tid at (atom, (t, prems), hints) : Il.typfield = +and elab_typfield env tid at (tf : typfield) : Il.typfield = + let atom, (t, prems), hints = tf in let _mixop, qs, t', prems' = elab_typ_notation' env tid at t prems in let hints' = elab_hints tid "" hints in let t'' = (* TODO(4, rossberg): remove this hack *) @@ -980,18 +926,21 @@ and elab_typfield env tid at (atom, (t, prems), hints) : Il.typfield = in (elab_atom atom tid, (qs, t'', prems'), hints') -and elab_typcase env tid at (_atom, (t, prems), hints) : Il.typcase = +and elab_typcase env tid at (tc : typcase) : Il.typcase = + let _atom, (t, prems), hints = tc in let mixop, qs, t', prems' = elab_typ_notation' env tid at t prems in let hints' = elab_hints tid "" hints in (mixop, (qs, t', prems'), hints') -and elab_typcon env tid at ((t, prems), hints) : Il.typcase = +and elab_typcon env tid at (tc : typcon) : Il.typcase = + let (t, prems), hints = tc in let mixop, qs, t', prems' = elab_typ_notation' env tid at t prems in let hints' = elab_hints tid tid.it hints in (mixop, (qs, t', prems'), hints') -and elab_typenum env tid (e1, e2o) : Il.typ * (Il.exp -> numtyp -> Il.exp) = +and elab_typenum env tid (te : typenum) : Il.typ * (Il.exp -> numtyp -> Il.exp) = assert (valid_tid tid); + let e1, e2o = te in let _e1' = elab_exp env e1 (Il.NumT `IntT $ e1.at) in (* ensure it's <= int *) let _qs1, _, t1 = checkpoint (infer_exp env e1) in (* get precise type *) match e2o with @@ -1069,10 +1018,9 @@ and pats'_of_typs' s ts : Il.exp list option = if List.for_all ((=) None) eos then None else Some (List.map2 expify' ts eos) -and pat'_of_typ t = expify' t (pat'_of_typ' (ref Set.empty) t) and pats'_of_typs ts = List.map2 expify' ts (List.map (pat'_of_typ' (ref Set.empty)) ts) -and elab_typ_notation' env tid at t prems : +and elab_typ_notation' env tid at (t : typ) (prems : prem nl_list) : Il.mixop * Il.quant list * Il.typ * Il.prem list = assert (valid_tid tid); let env' = local_env env in @@ -1098,7 +1046,7 @@ List.iteri (fun i e -> Printf.printf "[notation] e%d' = %s\n%!" i (Il.Print.stri Acc.prems prems; mixop, !acc_qs @ List.concat qss, tup_typ_bind' es' ts' t.at, prems' -and elab_typ_notation env tid t : Il.mixop * Il.typ list = +and elab_typ_notation env tid (t : typ) : Il.mixop * Il.typ list = Debug.(log_at "el.elab_typ_notation" t.at (fun _ -> fmt "(%s) %s" tid.it (el_typ t)) (fun (mixop, ts') -> fmt "%s(%s)" (il_mixop mixop) (list il_typ ts')) @@ -1148,10 +1096,6 @@ and elab_typ_notation env tid t : Il.mixop * Il.typ list = Arg (), [t'] -and (!!!) env tid t = - let _, ts' = elab_typ_notation env tid t in tup_typ' ts' t.at - - (* Expressions *) (* Returns @@ -1253,15 +1197,15 @@ and infer_exp' env e : (Il.quant list * Il.exp' * Il.typ') attempt = Ok (qs1 @ qs2 @ qs3, Il.SliceE (e1', e2', e3'), t1.it) | UpdE (e1, p, e2) -> let* qs1, e1', t1 = infer_exp env e1 in - let* qs, p', t2 = elab_path env p t1 in + let* qsP, p', t2 = elab_path env p t1 in let* qs2, e2' = elab_exp env e2 t2 in - Ok (qs1 @ qs @ qs2, Il.UpdE (e1', p', e2'), t1.it) + Ok (qs1 @ qsP @ qs2, Il.UpdE (e1', p', e2'), t1.it) | ExtE (e1, p, e2) -> let* qs1, e1', t1 = infer_exp env e1 in - let* qs, p', t2 = elab_path env p t1 in - let* _t21 = as_list_typ "path" env Infer t2 p.at in + let* qsP, p', t2 = elab_path env p t1 in + let* _ = as_list_typ "path" env Infer t2 p.at in let* qs2, e2' = elab_exp env e2 t2 in - Ok (qs1 @ qs @ qs2, Il.ExtE (e1', p', e2'), t1.it) + Ok (qs1 @ qsP @ qs2, Il.ExtE (e1', p', e2'), t1.it) | StrE _ -> fail_infer e.at "record" | DotE (e1, atom) -> @@ -1269,13 +1213,13 @@ and infer_exp' env e : (Il.quant list * Il.exp' * Il.typ') attempt = let* tfs, dots = as_struct_typ "expression" env Infer t1 e1.at in if dots = Dots then error e1.at "used record type is only partially defined at this point"; - let* qsF, tF, prems = attempt (find_field tfs atom e1.at) t1 in - let qs', s = Il.Fresh.refresh_quants qsF in - let as' = il_args_of_params qs' in + let* _, (qsF, tF, prems), _ = attempt (find_field tfs atom e1.at) t1 in + let qsF', s = Il.Fresh.refresh_quants qsF in + let as' = il_args_of_params qsF' in let tF' = Il.Subst.subst_typ s tF in let e' = Il.DotE (e1', elab_atom atom (expand_id env t1), as') in let e'' = if prems = [] then e' else Il.ProjE (e' $$ e.at % tF', 0) in - Ok (qs1 @ qs', e'', tF'.it) + Ok (qs1 @ qsF', e'', tF'.it) | CommaE (e1, e2) -> let* qs1, e1', t1 = infer_exp env e1 in let* tfs, dots = as_struct_typ "expression" env Infer t1 e1.at in @@ -1362,7 +1306,7 @@ and infer_exp_list env = function Ok (qs1 @ qs2, e'::es', t::ts) -and elab_exp env e t : (Il.quant list * Il.exp) attempt = +and elab_exp env (e : exp) (t : Il.typ) : (Il.quant list * Il.exp) attempt = Debug.(log_at "el.elab_exp" e.at (fun _ -> fmt "%s : %s" (el_exp e) (il_typ t)) (function Ok (qs, e') -> fmt "%s%s" (il_quants qs) (il_exp e') | _ -> "fail") @@ -1396,7 +1340,7 @@ and elab_exp env e t : (Il.quant list * Il.exp) attempt = elab_exp_plain env e t ) -and elab_exp_plain env e t : (Il.quant list * Il.exp) attempt = +and elab_exp_plain env (e : exp) (t : Il.typ) : (Il.quant list * Il.exp) attempt = Debug.(log_at "el.elab_exp_plain" e.at (fun _ -> fmt "%s : %s" (el_exp e) (il_typ t)) (function Ok (qs, e') -> fmt "%s%s" (il_quants qs) (il_exp e') | _ -> "fail") @@ -1404,7 +1348,7 @@ and elab_exp_plain env e t : (Il.quant list * Il.exp) attempt = let* qs, e' = elab_exp_plain' env e t in Ok (qs, e' $$ e.at % t) -and elab_exp_plain' env e t : (Il.quant list * Il.exp') attempt = +and elab_exp_plain' env (e : exp) (t : Il.typ) : (Il.quant list * Il.exp') attempt = match e.it with | BoolE _ | NumE _ | CvtE _ | UnE _ | BinE _ | CmpE _ | IdxE _ | DotE _ | MemE _ | LenE _ | SizeE _ | CallE _ | TypE _ @@ -1454,15 +1398,15 @@ and elab_exp_plain' env e t : (Il.quant list * Il.exp') attempt = Ok (qs1 @ qs2 @ qs3, Il.SliceE (e1', e2', e3')) | UpdE (e1, p, e2) -> let* qs1, e1' = elab_exp env e1 t in - let* qs, p', t2 = elab_path env p t in + let* qsP, p', t2 = elab_path env p t in let* qs2, e2' = elab_exp env e2 t2 in - Ok (qs1 @ qs @ qs2, Il.UpdE (e1', p', e2')) + Ok (qs1 @ qsP @ qs2, Il.UpdE (e1', p', e2')) | ExtE (e1, p, e2) -> let* qs1, e1' = elab_exp env e1 t in - let* qs, p', t2 = elab_path env p t in - let* _t21 = as_list_typ "path" env Check t2 p.at in + let* qsP, p', t2 = elab_path env p t in + let* _ = as_list_typ "path" env Check t2 p.at in let* qs2, e2' = elab_exp env e2 t2 in - Ok (qs1 @ qs @ qs2, Il.ExtE (e1', p', e2')) + Ok (qs1 @ qsP @ qs2, Il.ExtE (e1', p', e2')) | StrE efs -> let* tfs, dots = as_struct_typ "record" env Check t e.at in if dots = Dots then @@ -1548,7 +1492,8 @@ and elab_exp_plain' env e t : (Il.quant list * Il.exp') attempt = | _, Il.Opt -> fail_typ env e.at "iteration" t | _, _ -> Ok (qs, e') -and elab_exp_list env es xts at : (Il.quant list * Il.exp list) attempt = +and elab_exp_list env (es : exp list) (xts : (id * Il.typ) list) at + : (Il.quant list * Il.exp list) attempt = match es, xts with | [], [] -> Ok ([], []) | e::es, (_x, t)::xts -> @@ -1558,19 +1503,20 @@ and elab_exp_list env es xts at : (Il.quant list * Il.exp list) attempt = | _, _ -> fail at "arity mismatch for expression list" -and elab_expfields env tid efs tfs t0 at : (Il.quant list * Il.expfield list) attempt = +and elab_expfields env tid (efs : expfield list) (tfs : Il.typfield list) (t0 : Il.typ) at + : (Il.quant list * Il.expfield list) attempt = Debug.(log_in_at "el.elab_expfields" at (fun _ -> fmt "{%s} : {%s} = %s" (list el_expfield efs) (list (il_typfield `H) tfs) (il_typ t0)) ); assert (valid_tid tid); match efs, tfs with | [], [] -> Ok ([], []) - | (atom1, e)::efs2, (atom2, (qs, t, prems), _)::tfs2 when atom1.it = atom2.it -> - let not = Mixop.(Seq [Atom atom2; Arg t]) in + | (atom1, e)::efs2, (atom2, (qsF, tF, prems), _)::tfs2 when atom1.it = atom2.it -> + let not = Mixop.(Seq [Atom atom2; Arg tF]) in let* qs1, es', s = elab_exp_notation' env tid e not in let* qs2, efs2' = elab_expfields env tid efs2 tfs2 t0 at in let e' = (if prems = [] then tup_exp' else tup_exp_bind') es' e.at in - let as' = Il.Subst.subst_args s (il_args_of_params qs) in + let as' = Il.Subst.subst_args s (il_args_of_params qsF) in Ok (qs1 @ qs2, (elab_atom atom1 tid, as', e') :: efs2') | _, (atom, (_qs, t, prems), _)::tfs2 -> let atom' = string_of_atom atom in @@ -1582,11 +1528,11 @@ and elab_expfields env tid efs tfs t0 at : (Il.quant list * Il.expfield list) at | (atom, e)::_, [] -> fail_atom e.at atom t0 "undefined or misplaced record field" -and elab_exp_iter env es (t1, iter) t at : (Il.quant list * Il.exp) attempt = +and elab_exp_iter env (es : exp list) (t1, iter) t at : (Il.quant list * Il.exp) attempt = let* qs, e' = elab_exp_iter' env es (t1, iter) t at in Ok (qs, e' $$ at % t) -and elab_exp_iter' env es (t1, iter) t at : (Il.quant list * Il.exp') attempt = +and elab_exp_iter' env (es : exp list) (t1, iter) t at : (Il.quant list * Il.exp') attempt = Debug.(log_at "el.elab_exp_iter" at (fun _ -> fmt "%s : %s = (%s)%s" (seq el_exp es) (il_typ t) (il_typ t1) (il_iter iter)) (function Ok (qs, e') -> fmt "%s%s" (il_quants qs) (il_exp (e' $$ at % t)) | _ -> "fail") @@ -1611,16 +1557,16 @@ and elab_exp_iter' env es (t1, iter) t at : (Il.quant list * Il.exp') attempt = | _, (List1 | ListN _) -> assert false -and elab_exp_notation env tid e (qs, t1, mixop, not) t : (Il.quant list * Il.exp) attempt = +and elab_exp_notation env tid (e : exp) (qs, t1, mixop, not) t : (Il.quant list * Il.exp) attempt = (* Convert notation into applications of mixin operators *) assert (valid_tid tid); let* qs', es', s = elab_exp_notation' env tid e not in let as' = Il.Subst.subst_args s (il_args_of_params qs) in Ok (qs', Il.CaseE (mixop, as', Il.TupE es' $$ e.at % t1) $$ e.at % t) -and elab_exp_notation' env tid e not : (Il.quant list * Il.exp list * Il.Subst.t) attempt = +and elab_exp_notation' env tid (e : exp) not : (Il.quant list * Il.exp list * Il.Subst.t) attempt = Debug.(log_at "el.elab_exp_notation" e.at - (fun _ -> fmt "%s : %s" (el_exp e) (string_of_notation not)) + (fun _ -> fmt "%s : %s" (el_exp e) (Mixop.to_string not)) (function Ok (qs, es', _) -> fmt "%s %s" (il_quants qs) (seq il_exp es') | _ -> "fail") ) @@ fun _ -> assert (valid_tid tid); @@ -1636,7 +1582,7 @@ and elab_exp_notation' env tid e not : (Il.quant list * Il.exp list * Il.Subst.t | InfixE (e1, atom, e2), Infix (not1, atom', not2) -> if atom.it <> atom'.it then fail_not env e.at "infix expression" not else let* qs1, es1', s1 = elab_exp_notation' env tid e1 not1 in - let* qs2, es2', s2 = elab_exp_notation' env tid e2 (subst_notation s1 not2) in + let* qs2, es2', s2 = elab_exp_notation' env tid e2 (Mixop.map (Il.Subst.subst_typ s1) not2) in let _ = elab_atom atom tid in Ok (qs1 @ qs2, es1' @ es2', Il.Subst.union s1 s2) | BrackE (l, e1, r), Brack (l', not1, r') -> @@ -1672,7 +1618,7 @@ and elab_exp_notation' env tid e not : (Il.quant list * Il.exp list * Il.Subst.t let* qs1, es1', s1 = elab_exp_notation' env tid (unparen_exp e1) not1 in let e2 = SeqE es2 $ Source.over_region (after_region e1.at :: List.map Source.at es2) in let not2 = Mixop.Seq nots2 in - let* qs2, es2', s2 = elab_exp_notation' env tid e2 (subst_notation s1 not2) in + let* qs2, es2', s2 = elab_exp_notation' env tid e2 (Mixop.map (Il.Subst.subst_typ s1) not2) in Ok (qs1 @ qs2, es1' @ es2', Il.Subst.union s1 s2) (* Trailing elements can be omitted if they can be eps *) | SeqE [], Seq ((Arg t1)::nots2) -> @@ -1698,12 +1644,12 @@ and elab_exp_notation' env tid e not : (Il.quant list * Il.exp list * Il.Subst.t | _, (Atom _ | Brack _ | Infix _) -> fail e.at "expression does not match expected notation" -and elab_exp_notation_iter env tid es (t1, iter) t nots at : (Il.quant list * Il.exp list * Il.Subst.t) attempt = +and elab_exp_notation_iter env tid (es : exp list) (t1, iter) t nots at : (Il.quant list * Il.exp list * Il.Subst.t) attempt = assert (valid_tid tid); let* qs, e', es', s = elab_exp_notation_iter' env tid es (t1, iter) t nots at in Ok (qs, e'::es', s) -and elab_exp_notation_iter' env tid es (t1, iter) t nots at : (Il.quant list * Il.exp * Il.exp list * Il.Subst.t) attempt = +and elab_exp_notation_iter' env tid (es : exp list) (t1, iter) t nots at : (Il.quant list * Il.exp * Il.exp list * Il.Subst.t) attempt = Debug.(log_at "el.elab_exp_notation_iter" at (fun _ -> fmt "%s : %s = (%s)%s" (seq el_exp es) (il_typ t) (il_typ t1) (il_iter iter)) (function Ok (qs, e', es', _) -> fmt "%s %s" (il_quants qs) (seq il_exp (e'::es')) | _ -> "fail") @@ -1746,42 +1692,40 @@ and elab_exp_notation_iter' env tid es (t1, iter) t nots at : (Il.quant list * I | _, (List1 | ListN _) -> assert false -and elab_exp_variant env tid e cases t at : (Il.quant list * Il.exp) attempt = +and elab_exp_variant env tid (e : exp) (tcs : Il.typcase list) t at : (Il.quant list * Il.exp) attempt = Debug.(log_at "el.elab_exp_variant" e.at (fun _ -> fmt "%s : %s = %s" (el_exp e) tid.it (il_typ t)) (function Ok (qs, e') -> fmt "%s%s" (il_quants qs) (il_exp e') | _ -> "fail") ) @@ fun _ -> assert (valid_tid tid); - let* atom = + let rec head e = match e.it with | AtomE atom - | SeqE ({it = AtomE atom; _}::_) | InfixE (_, atom, _) | BrackE (atom, _, _) -> Ok atom + | SeqE (e1::_) -> head e1 | _ -> fail_typ env at "expression" t in - let* not1, _prems = attempt (find_case_sub cases atom atom.at) t in - let* qs1, es', _s = elab_exp_notation' env tid e not1 in - let t2 = expand env t $ at in - let t2' = elab_typ env t2 in + let* atom = head e in + let* mixop, (qsC, tC, _prems), _ = attempt (find_case_sub tcs atom atom.at) t in + let* xtsC = as_tup_typ "tuple" env Check tC e.at in + let not = Mixop.apply mixop (List.map snd xtsC) in + let* qs, es', s = elab_exp_notation' env tid e not in + let as' = Il.Subst.subst_args s (il_args_of_params qsC) in + Ok (qs, Il.CaseE (mixop, as', tup_exp_bind' es' e.at) $$ at % t) + - let mixop, qs2, t1', _prems', _ = elab_typ_notation' env tid e.at not1 [] in -(*TODO*) - let* qs3, e' = cast_exp "variant case" env - (Il.CaseE (mixop, Il.TupE es' $$ at % t1') $$ at % t2') t2 t in - Ok (qs1 @ qs2 @ qs3, e') (* - let mixop, ts', _ = elab_typ_notation env tid t1 in - assert (List.length es' = List.length ts'); - cast_exp "variant case" env - (Il.CaseE (mixop, tup_exp_bind' es' at) $$ at % t2') t2 t +r[. = e] ~> e +r[[i] = e] ~> [r0,...,e,...,rN] if r = [r0,...,rN] +r[.l = e] ~> {l0 a0*=r0,...,l a*=e,...,lN aN*=rN} if r = {l0 a0*=r0,...,lN aN*=rN} + a* = q* *) - -and elab_path env p t : (Il.quant list * Il.path * Il.typ) attempt = +and elab_path env (p : path) (t : Il.typ) : (Il.quant list * Il.path * Il.typ) attempt = let* qs, p', t' = elab_path' env p t in Ok (qs, p' $$ p.at % t', t') -and elab_path' env p t : (Il.quant list * Il.path' * Il.typ) attempt = +and elab_path' env (p : path) (t : Il.typ) : (Il.quant list * Il.path' * Il.typ) attempt = match p.it with | RootP -> Ok ([], Il.RootP, t) @@ -1801,23 +1745,25 @@ and elab_path' env p t : (Il.quant list * Il.path' * Il.typ) attempt = let* tfs, dots = as_struct_typ "path" env Check t1 p1.at in if dots = Dots then error p1.at "used record type is only partially defined at this point"; -(*TODO*) - let* t', _prems = attempt (find_field tfs atom p1.at) t1 in - Ok (qs1, Il.DotP (p1', elab_atom atom (expand_id env t1)), t') + let* _, (qsF, tF, _prems), _ = attempt (find_field tfs atom p1.at) t1 in + let qsF', s = Il.Fresh.refresh_quants qsF in + let as' = il_args_of_params qsF' in + let tF' = Il.Subst.subst_typ s tF in + Ok (qs1 @ qsF, Il.DotP (p1', elab_atom atom (expand_id env t1), as'), tF') -and cast_empty phrase env t at : (Il.quant list * Il.exp) attempt = +and cast_empty phrase env (t : Il.typ) at : (Il.quant list * Il.exp) attempt = Debug.(log_at "el.elab_exp_cast_empty" at (fun _ -> fmt "%s >> (%s)" (il_typ t) (il_typ t)) (function Ok (qs, e') -> fmt "%s%s" (il_quants qs) (il_exp e') | _ -> "fail") ) @@ fun _ -> nest at t ( match expand env t with - | Il.IterT (_, Opt) -> Ok ([], Il.OptE None $$ at % t') - | Il.IterT (_, List) -> Ok ([], Il.ListE [] $$ at % t') + | Il.IterT (_, Opt) -> Ok ([], Il.OptE None $$ at % t) + | Il.IterT (_, List) -> Ok ([], Il.ListE [] $$ at % t) | VarT _ when is_notation_typ env t -> (match expand_notation env t with - | SeqT [] -> Ok ([], Il.ListE [] $$ at % t') + | Some (_, _, _, Mixop.Seq []) -> Ok ([], Il.ListE [] $$ at % t) | _ -> fail_typ env at phrase t ) (* @@ -1835,26 +1781,28 @@ and cast_empty phrase env t at : (Il.quant list * Il.exp) attempt = | _ -> fail_typ env at phrase t ) -and cast_exp phrase env e' t1 t2 : (Il.quant list * Il.exp) attempt = +and cast_exp phrase env (e' : Il.exp) t1 t2 : (Il.quant list * Il.exp) attempt = let* qs, e'' = nest e'.at t2 (cast_exp' phrase env e' t1 t2) in - Ok (qs, e'' $$ e'.at % elab_typ env (expand_nondef env t2)) + Ok (qs, e'' $$ e'.at % t2) -and cast_exp' phrase env e' t1 t2 : (Il.quant list * Il.exp') attempt = +and cast_exp' phrase env (e' : Il.exp) t1 t2 : (Il.quant list * Il.exp') attempt = Debug.(log_at "el.elab_exp_cast" e'.at (fun _ -> fmt "%s <: %s >> (%s) <: (%s) = (%s)" (il_typ t1) (il_typ t2) - (il_deftyp (expand_def env t1 $ t1.at)) (il_deftyp (expand_def env t2 $ t2.at)) - (il_typ (expand_nondef env t2)) + (il_deftyp (fst (expand_def env t1) $ t1.at)) + (il_deftyp (fst (expand_def env t2) $ t2.at)) + (il_typ (reduce env t2)) ) (function Ok (qs, e'') -> fmt "%s%s" (il_quants qs) (il_exp (e'' $$ e'.at % t2)) | _ -> "fail") ) @@ fun _ -> if equiv_typ env t1 t2 then Ok ([], e'.it) else - match expand env t1, expand env t2 with - | t1', t2' when sub_typ env t1' t2' -> + let t1', t2' = reduce env t1, reduce env t2 in + match t1'.it, t2'.it with + | _, _ when sub_typ env t1' t2' -> Ok ([], Il.SubE (e', t1', t2')) | Il.NumT nt1, Il.NumT nt2 when nt1 < nt2 || lax_num && nt1 <> `RealT -> Ok ([], Il.CvtE (e', nt1, nt2)) - | Il.TupT [], Il.VarT _ as t2' when is_empty_typ t2' -> + | Il.TupT [], Il.VarT _ when is_empty_notation_typ env t2' -> Ok ([], e'.it) | IterT (t11, Opt), IterT (t21, List) -> @@ -1873,39 +1821,55 @@ and cast_exp' phrase env e' t1 t2 : (Il.quant list * Il.exp') attempt = let* qs, e'' = cast_exp phrase env e' t1 t21 in Ok (qs, Il.ListE [e'']) - | Il.VarT _ as t1', Il.VarT _ as t2' -> + | Il.VarT _, Il.VarT _ -> (match expand_def env t1', expand_def env t2' with - | Il.VariantT [mixop1, (qs1, t11, _), _], - Il.VariantT [mixop2, (qs2, t21, _), _] -> + | (Il.VariantT [mixop1, (qs1, tC1, _), _], NoDots), + (Il.VariantT [mixop2, (qs2, tC2, _), _], NoDots) -> + let qs1', s1 = Il.Fresh.refresh_quants qs1 in + let qs2', s2 = Il.Fresh.refresh_quants qs2 in + let tC1' = Il.Subst.subst_typ s1 tC1 in + let tC2' = Il.Subst.subst_typ s2 tC2 in + let as1' = il_args_of_params qs1' in + let as2' = il_args_of_params qs2' in if mixop1 = mixop2 then - (* Two ConT's with the same operator can be cast pointwise *) - let e'' = Il.UncaseE (e', mixop1) $$ e'.at % t1' in - let ts1 = match t11.it with Il.TupT xts -> List.map snd xts | _ -> [t11] in + ( + (* Two ConT's with the same operator can be cast pointwise *) + let ts1 = match tC1'.it with Il.TupT xts -> List.map snd xts | _ -> [tC1'] in + let ts2 = match tC2'.it with Il.TupT xts -> List.map snd xts | _ -> [tC2'] in + let e'' = Il.UncaseE (e', mixop1, as1') $$ e'.at % tC1' in let es' = List.mapi (fun i t1I -> Il.ProjE (e'', i) $$ e''.at % t1I) ts1 in let* qss_es'' = map2_attempt (fun eI' (t1I, t2I) -> cast_exp phrase env eI' t1I t2I) es' (List.combine ts1 ts2) in let qss, es'' = List.split qss_es'' in - Ok (qs1 @ qs2 @ List.concat qss, Il.CaseE (mixop2, tup_exp_bind' es'' e'.at)) + Ok (qs1' @ qs2' @ List.concat qss, Il.CaseE (mixop2, as2', tup_exp_bind' es'' e'.at)) + ) else - (* Two unary ConT's can be cast transitively *) - Debug.(log_in_at "el.cast_exp" e'.at - (fun _ -> fmt "%s <: %s >> (%s) <: (%s) = (%s) # backtrack 1" (el_typ t1) (el_typ t2) - (el_typ (expand_def env t1 $ t1.at)) (el_typ (expand_def env t2 $ t2.at)) - (el_typ (expand_nondef env t2)) + ( + (* Two unary ConT's can be cast transitively + * (composing the to/from payload cases below). *) + let _ = Debug.(log_in_at "el.cast_exp" e'.at + (fun _ -> fmt "%s <: %s >> (%s) <: (%s) = (%s) # backtrack 1" + (il_typ t1) (il_typ t2) + (il_deftyp (fst (expand_def env t1) $ t1.at)) + (il_deftyp (fst (expand_def env t2) $ t2.at)) + (il_typ (reduce env t2)) ) - ); - let* t111, t111' = match ts, t11.it with [t111], Il.TupT [_, t111'] -> Ok (t111, t111') | _ -> - fail_typ2 env e'.at phrase t1 t2 "" in - let e'' = Il.UncaseE (e', mixop) $$ e'.at % t11 in - let* qs, e''' = cast_exp' phrase env (Il.ProjE (e'', 0) $$ e'.at % t111') t111 t2' in - Ok (qs @ qs, e''') + ) in + match expand env tC1' with + | Il.TupT [_, t11'] -> + let e'' = Il.UncaseE (e', mixop1, as1') $$ e'.at % t11' in + let* qs, e''' = cast_exp' phrase env (Il.ProjE (e'', 0) $$ e'.at % t11') t11' t2' in + Ok (qs1' @ qs, e''') + | _ -> fail_typ2 env e'.at phrase t1 t2 "" + ) - | Il.VariantT [mixop1, (qs1, t11, _), _], _ -> + | (Il.VariantT [mixop1, (qs1, tC1, _), _], NoDots), _ -> choice env [ (fun env -> + (* A ConT can always be cast to a (singleton) iteration *) let* qs, e'' = - match t2' with - | IterT (t21, iter) -> + match t2'.it with + | Il.IterT (t21, iter) -> let* qs1, e1' = cast_exp phrase env e' t1 t21 in (match iter with | Opt -> Ok (qs1, Il.OptE (Some e1')) @@ -1919,53 +1883,63 @@ and cast_exp' phrase env e' t1 t2 : (Il.quant list * Il.exp') attempt = (fun env -> (* A ConT can be cast to its payload *) Debug.(log_in_at "el.cast_exp" e'.at - (fun _ -> fmt "%s <: %s >> (%s) <: (%s) = (%s) # backtrack 2" (el_typ t1) (el_typ t2) - (el_typ (expand_def env t1 $ t1.at)) (el_typ (expand_def env t2 $ t2.at)) - (el_typ (expand_nondef env t2)) + (fun _ -> fmt "%s <: %s >> (%s) <: (%s) = (%s) # backtrack 2" + (il_typ t1) (il_typ t2) + (il_deftyp (fst (expand_def env t1) $ t1.at)) + (il_deftyp (fst (expand_def env t2) $ t2.at)) + (il_typ (reduce env t2)) ) ); - let* t111, t111' = match ts, t11.it with [t111], Il.TupT [_, t111'] -> Ok (t111, t111') | _ -> - fail_typ2 env e'.at phrase t1 t2 "" in -(*TODO*) - let e'' = Il.UncaseE (e', mixop) $$ e'.at % t11 in - let* qs, e''' = cast_exp' phrase env (Il.ProjE (e'', 0) $$ e'.at % t111') t111 t2 in - Ok (qs @ qs, e''') + let qs1', s1 = Il.Fresh.refresh_quants qs1 in + let tC1' = Il.Subst.subst_typ s1 tC1 in + let as1' = il_args_of_params qs1' in + match expand env tC1' with + | Il.TupT [_, t11'] -> + let e'' = Il.UncaseE (e', mixop1, as1') $$ e'.at % t11' in + let* qs, e''' = cast_exp' phrase env (Il.ProjE (e'', 0) $$ e'.at % t11') t11' t2' in + Ok (qs1' @ qs, e''') + | _ -> fail_typ2 env e'.at phrase t1 t2 "" ); ] - | _, Il.VariantT [mixop2, (qs2, t21, _), _] -> + | _, (Il.VariantT [mixop2, (qs2, tC2, _), _], NoDots) -> (* A ConT payload can be cast to the ConT *) - let* t211 = match ts with [t211] -> Ok t211 | _ -> - fail_typ2 env e'.at phrase t1 t2 "" in - let* qs, e1' = cast_exp phrase env e' t1 t211 in -(*TODO*) - Ok (qs2 @ qs, Il.CaseE (mixop2, Il.TupE [e1'] $$ e'.at % t')) + let qs2', s2 = Il.Fresh.refresh_quants qs2 in + let tC2' = Il.Subst.subst_typ s2 tC2 in + let as2' = il_args_of_params qs2' in + (match expand env tC2' with + | Il.TupT [_, t21'] -> + let* qs, e1' = cast_exp phrase env e' t1' t21' in + Ok (qs2' @ qs, Il.CaseE (mixop2, as2', Il.TupE [e1'] $$ e'.at % tC2')) + | _ -> fail_typ2 env e'.at phrase t1 t2 "" + ) | (Il.VariantT tcs1, dots1), (Il.VariantT tcs2, dots2) -> - if dots2 = Dots then + if dots1 = Dots || dots2 = Dots then error e'.at "used variant type is only partially defined at this point"; let* () = + (* Shallow breadth subtyping on variants *) match - iter_attempt (fun (atom, (t1', _prems1), _) -> - let* t2', _prems2 = attempt (find_case cases2 atom t1.at) t2 in - (* Shallow subtyping on variants *) - let env' = to_eval_env env in - if Eq.eq_typ (Eval.reduce_typ env' t1') (Eval.reduce_typ env' t2') then Ok () else - fail_atom e'.at atom t1 "type mismatch for case" - ) cases1 + iter_attempt (fun (mixop1, (qs1, tC1, _prems1), _) -> + match Mixop.head mixop1 with + | None -> fail_silent + | Some atom -> + let* mixop2, (qs2, tC2, _prems2), _ = + attempt (find_case tcs2 atom t1.at) t2 in + (* TODO(2, rossberg): this should take alpha-equivalence into account *) + if Mixop.eq mixop1 mixop2 + && Il.Eq.(eq_list eq_param qs1 qs2) + && equiv_typ env tC1 tC2 then + Ok () + else + fail_atom e'.at atom t1 "type mismatch for case" + ) tcs1 with | Ok () -> Ok () | Fail (Trace (_, msg, _) :: _) -> fail_typ2 env e'.at phrase t1 t2 (", " ^ msg) | Fail [] -> assert false in - let t11 = expand env t1 $ t1.at in - let t21 = expand env t2 $ t2.at in - let t11' = elab_typ env (expand env t1) in - let t21' = elab_typ env (expand env t2) in - let* qs1, e'' = cast_exp phrase env e' t1 t11 in - let e''' = Il.SubE (e'', t11', t21') in - let* qs2, e'''' = cast_exp' phrase env (e''' $$ e'.at % t21') t21 t2 in - Ok (qs1 @ qs2, e'''') + Ok ([], Il.SubE (e', t1', t2')) | _, _ -> fail_typ2 env e'.at phrase t1 t2 "" @@ -2146,44 +2120,45 @@ Printf.printf "[4] %s => %s\n%!" (Debug.el_typ t11) (Debug.il_typ t11'); *) -and elab_iterexp env iter : Il.quant list * Il.iterexp = - let qs, iter' = elab_iter env iter in - (qs, (iter', [])) +and elab_iterexp env (it : iter) : Il.quant list * Il.iterexp = + let qs, it' = elab_iter env it in + (qs, (it', [])) (* Premises *) -and elab_prem env prem : Il.quant list * Il.prem list = - match prem.it with +and elab_prem env (pr : prem) : Il.quant list * Il.prem list = + match pr.it with | VarPr (id, t) -> - env.vars <- bind "variable" env.vars id t; + let t' = elab_typ env t in + env.vars <- bind "variable" env.vars id t'; [], [] | RulePr (id, e) -> - let mixop, not, _ = find "relation" env.rels id in + let mixop, not, _, _ = find "relation" env.rels id in let qs, es', _s = checkpoint (elab_exp_notation' env id e not) in - qs, [Il.RulePr (id, mixop, tup_exp' es' e.at) $ prem.at] + qs, [Il.RulePr (id, mixop, tup_exp' es' e.at) $ pr.at] | IfPr e -> - let qs, e' = checkpoint (elab_exp env e (BoolT $ e.at)) in - qs, [Il.IfPr e' $ prem.at] + let qs, e' = checkpoint (elab_exp env e (Il.BoolT $ e.at)) in + qs, [Il.IfPr e' $ pr.at] | ElsePr -> - [], [Il.ElsePr $ prem.at] + [], [Il.ElsePr $ pr.at] | IterPr ({it = VarPr _; at; _}, _iter) -> error at "misplaced variable premise" - | IterPr (prem1, iter) -> + | IterPr (pr1, iter) -> let qs, iter' = elab_iterexp env iter in - let qs1, prems1' = elab_prem env prem1 in - assert (List.length prems1' = 1); - qs @ qs1, [Il.IterPr (List.hd prems1', iter') $ prem.at] + let qs1, prs1' = elab_prem env pr1 in + assert (List.length prs1' = 1); + qs @ qs1, [Il.IterPr (List.hd prs1', iter') $ pr.at] (* Grammars *) -and infer_sym env g : (Il.quant list * Il.sym * Il.typ) attempt = +and infer_sym env (g : sym) : (Il.quant list * Il.sym * Il.typ) attempt = Debug.(log_at "el.infer_sym" g.at (fun _ -> fmt "%s" (el_sym g)) (function Ok (qs, g', t) -> fmt "%s %s : %s" (il_quants qs) (il_sym g') (il_typ t) | _ -> "fail") ) @@ fun _ -> - nest g.at (TupT [] $ g.at) ( + nest g.at (Il.TupT [] $ g.at) ( match g.it with | VarG (x, as_) -> let ps, t, _gram, _prods' = find "grammar" env.grams x in @@ -2278,15 +2253,15 @@ and infer_sym env g : (Il.quant list * Il.sym * Il.typ) attempt = | UnparenG _ -> error g.at "misplaced token unparenthesize" ) -and infer_sym_list env es : (Il.quant list * Il.sym list * Il.typ list) attempt = - match es with +and infer_sym_list env (gs : sym list) : (Il.quant list * Il.sym list * Il.typ list) attempt = + match gs with | [] -> Ok ([], [], []) | g::gs -> let* qs1, g', t = infer_sym env g in let* qs2, gs', ts = infer_sym_list env gs in Ok (qs1 @ qs2, g'::gs', t::ts) -and elab_sym env g t : (Il.quant list * Il.sym) attempt = +and elab_sym env (g : sym) (t : Il.typ) : (Il.quant list * Il.sym) attempt = Debug.(log_at "el.elab_sym" g.at (fun _ -> fmt "%s : %s" (el_sym g) (il_typ t)) (function Ok (qs, g') -> fmt "%s%s" (il_quants qs) (il_sym g') | _ -> "fail") @@ -2313,15 +2288,15 @@ and elab_sym env g t : (Il.quant list * Il.sym) attempt = Ok (qs1 @ qs2, g'') ) -and elab_sym_list env es t : (Il.quant list * Il.sym list) attempt = - match es with +and elab_sym_list env (gs : sym list) (t : Il.typ) : (Il.quant list * Il.sym list) attempt = + match gs with | [] -> Ok ([], []) | g::gs -> let* qs1, g' = elab_sym env g t in let* qs2, gs' = elab_sym_list env gs t in Ok (qs1 @ qs2, g'::gs') -and cast_sym env g' t1 t2 : (Il.quant list * Il.sym) attempt = +and cast_sym env (g' : Il.sym) t1 t2 : (Il.quant list * Il.sym) attempt = Debug.(log_at "el.elab_cast_sym" g'.at (fun _ -> fmt "%s : %s :> %s" (il_sym g') (il_typ t1) (il_typ t2)) (function Ok (qs, g'') -> fmt "%s%s" (il_quants qs) (il_sym g'') | _ -> "fail") @@ -2335,9 +2310,9 @@ and cast_sym env g' t1 t2 : (Il.quant list * Il.sym) attempt = fail_typ2 env g'.at "symbol" t1 t2 "" ) -and elab_prod env prod t : Il.prod list = +and elab_prod env (prod : prod) (t : Il.typ) : Il.prod list = Debug.(log_in_at "el.elab_prod" prod.at - (fun _ -> fmt "%s : %s" (el_prod prod) (el_typ t)) + (fun _ -> fmt "%s : %s" (el_prod prod) (il_typ t)) ); match prod.it with | SynthP (g, e, prems) -> @@ -2358,7 +2333,7 @@ and elab_prod env prod t : Il.prod list = Il.TupE [ e'; Il.TupE [] $$ e.at % t_unit ] $$ e.at % (Il.TupT ["_" $ e.at, e'.note; "_" $ e.at, t_unit] $ e.at), 1 - ) $$ e.at % t'_unit) + ) $$ e.at % t_unit) else elab_exp env' e t ) @@ -2448,7 +2423,7 @@ and elab_prod env prod t : Il.prod list = prod' :: elab_prod env Subst.(subst_prod pm_snd (Iter.clone_prod prod)) t *) -and elab_gram env gram t : Il.prod list = +and elab_gram env (gram : gram) (t : Il.typ) : Il.prod list = let (_dots1, prods, _dots2) = gram.it in concat_map_filter_nl_list (fun prod -> elab_prod env prod t) prods @@ -2464,21 +2439,21 @@ and make_quants_iter_arg env free dims : Il.quant list ref * (module Iter.Arg) = let acc = ref [] let visit_typid id = - if Free.Set.mem id.it !left.typid then ( + if Il.Free.Set.mem id.it !left.typid then ( acc := !acc @ [Il.TypP id $ id.at]; - left := Free.{!left with typid = Set.remove id.it !left.typid}; + left := Il.Free.{!left with typid = Set.remove id.it !left.typid}; ) let visit_varid id = - if Free.(Set.mem id.it !left.varid) && Dim.Env.mem id.it dims then ( + if Il.Free.(Set.mem id.it !left.varid) && Dim.Env.mem id.it dims then ( let t = try find "variable" env.vars id with Error _ -> find "variable" env.gvars (strip_var_suffix id) in - let fwd = Free.(inter (free_typ t) !left) in - if fwd <> Free.empty then + let fwd = Il.Free.(inter (free_typ t) !left) in + if fwd <> Il.Free.empty then error id.at ("the type of `" ^ id.it ^ "` depends on " ^ - ( Free.Set.(elements fwd.typid @ elements fwd.gramid @ elements fwd.varid @ elements fwd.defid) |> + ( Il.Free.Set.(elements fwd.typid @ elements fwd.gramid @ elements fwd.varid @ elements fwd.defid) |> List.map (fun id -> "`" ^ id ^ "`") |> String.concat ", " ) ^ ", which only occur(s) to its right; try to reorder parameters or premises"); @@ -2489,20 +2464,20 @@ and make_quants_iter_arg env free dims : Il.quant list ref * (module Iter.Arg) = let t' = List.fold_left (fun t iter -> Il.IterT (t, iter) $ t.at - ) (elab_typ env t) ctx' + ) t ctx' in acc := !acc @ [Il.ExpP (Dim.annot_varid id ctx', t') $ id.at]; - left := Free.{!left with varid = Set.remove id.it !left.varid}; + left := Il.Free.{!left with varid = Set.remove id.it !left.varid}; ) let visit_gramid id = - if Free.(Set.mem id.it !left.gramid) then ( + if Il.Free.(Set.mem id.it !left.gramid) then ( let ps, t, _gram, _prods' = find "grammar" env.grams id in - let free' = Free.(union (free_params ps) (diff (free_typ t) (bound_params ps))) in - let fwd = Free.(inter free' !left) in - if fwd <> Free.empty then + let free' = Il.Free.(union (free_params ps) (diff (free_typ t) (bound_params ps))) in + let fwd = Il.Free.(inter free' !left) in + if fwd <> Il.Free.empty then error id.at ("the type of `" ^ id.it ^ "` depends on " ^ - ( Free.Set.(elements fwd.typid @ elements fwd.gramid @ elements fwd.varid @ elements fwd.defid) |> + ( Il.Free.Set.(elements fwd.typid @ elements fwd.gramid @ elements fwd.varid @ elements fwd.defid) |> List.map (fun id -> "`" ^ id ^ "`") |> String.concat ", " ) ^ ", which only occur(s) to its right; try to reorder parameters or premises"); @@ -2510,84 +2485,97 @@ and make_quants_iter_arg env free dims : Il.quant list ref * (module Iter.Arg) = ) let visit_defid id = - if Free.Set.mem id.it !left.defid then ( + if Il.Free.Set.mem id.it !left.defid then ( let ps, t, _ = find "definition" env.defs id in - let env' = local_env env in - let ps' = elab_params env' ps in - let t' = elab_typ env' t in - let free' = Free.(union (free_params ps) (diff (free_typ t) (bound_params ps))) in - let fwd = Free.(inter free' !left) in - if fwd <> Free.empty then + let free' = Il.Free.(union (free_params ps) (diff (free_typ t) (bound_params ps))) in + let fwd = Il.Free.(inter free' !left) in + if fwd <> Il.Free.empty then error id.at ("the type of `" ^ (spaceid "definition" id).it ^ "` depends on " ^ - ( Free.Set.(elements fwd.typid @ elements fwd.gramid @ elements fwd.varid @ elements fwd.defid) |> + ( Il.Free.Set.(elements fwd.typid @ elements fwd.gramid @ elements fwd.varid @ elements fwd.defid) |> List.map (fun id -> "`" ^ id ^ "`") |> String.concat ", " ) ^ ", which only occur(s) to its right; try to reorder parameters or premises"); - acc := !acc @ [Il.DefP (id, ps', t') $ id.at]; - left := Free.{!left with defid = Set.remove id.it !left.defid}; + acc := !acc @ [Il.DefP (id, ps, t) $ id.at]; + left := Il.Free.{!left with defid = Set.remove id.it !left.defid}; ) end in Arg.acc, (module Arg) -and elab_arg in_lhs env a p s : Il.quant list * Il.arg list * Subst.subst = +and elab_arg in_lhs env (a : arg) (p : Il.param) s : Il.quant list * Il.arg list * Il.Subst.subst = (match !(a.it), p.it with (* HACK: handle shorthands *) - | ExpA e, TypP _ -> a.it := TypA (typ_of_exp e) - | ExpA e, GramP _ -> a.it := GramA (sym_of_exp e) - | ExpA {it = CallE (id, []); _}, DefP _ -> a.it := DefA id + | ExpA e, Il.TypP _ -> a.it := TypA (typ_of_exp e) + | ExpA e, Il.GramP _ -> a.it := GramA (sym_of_exp e) + | ExpA {it = CallE (id, []); _}, Il.DefP _ -> a.it := DefA id | _, _ -> () ); - match !(a.it), (Subst.subst_param s p).it with - | ExpA e, ExpP (id, t) -> + match !(a.it), (Il.Subst.subst_param s p).it with + | ExpA e, Il.ExpP (x, t) -> let qs, e' = checkpoint (elab_exp env e t) in - qs, [Il.ExpA e' $ a.at], Subst.add_varid s id e - | TypA ({it = VarT (id', []); _} as t), TypP id when in_lhs = `Lhs -> - let id'' = strip_var_suffix id' in + qs, [Il.ExpA e' $ a.at], Il.Subst.add_varid s x e' + | TypA {it = VarT (x', []); _}, Il.TypP x when in_lhs = `Lhs -> + let x'' = strip_var_suffix x' in let is_prim = - match (Convert.typ_of_varid id'').it with + match (Convert.typ_of_varid x'').it with | VarT _ -> false | _ -> true in - env.typs <- bind "syntax type" env.typs id'' ([], Opaque); + let t' = Il.VarT (x'', []) $ x''.at in + env.typs <- bind "syntax type" env.typs x'' ([], Opaque); if not is_prim then - env.gvars <- bind "variable" env.gvars (strip_var_sub id'') (VarT (id'', []) $ id''.at); - [], [Il.TypA (Il.VarT (id'', []) $ t.at) $ a.at], Subst.add_typid s id t - | TypA t, TypP _ when in_lhs = `Lhs -> + env.gvars <- bind "variable" env.gvars (strip_var_sub x'') t'; + [], [Il.TypA t' $ a.at], Il.Subst.add_typid s x t' + | TypA t, Il.TypP _ when in_lhs = `Lhs -> error t.at "misplaced syntax type" - | TypA t, TypP id -> + | TypA t, Il.TypP x -> let t' = elab_typ env t in - [], [Il.TypA t' $ a.at], Subst.add_typid s id t - | GramA g, GramP _ when in_lhs = `Lhs -> + [], [Il.TypA t' $ a.at], Il.Subst.add_typid s x t' + | GramA g, Il.GramP _ when in_lhs = `Lhs -> error g.at "misplaced grammar symbol" - | GramA g, GramP (id', t) -> + | GramA g, Il.GramP (x', [], t) -> let qs, g', t' = checkpoint (infer_sym env g) in let s' = subst_implicit env s t t' in - if not (equiv_typ env t' (Subst.subst_typ s' t)) then + if not (equiv_typ env t' (Il.Subst.subst_typ s' t)) then error_typ2 env a.at "argument" t' t ""; - let as' = List.map (fun (_id, t) -> Il.TypA (elab_typ env t) $ t.at) Subst.(Map.bindings s'.typid) in - qs, as' @ [Il.GramA g' $ a.at], Subst.add_gramid s' id' g - | DefA id, DefP (id', ps', t') when in_lhs = `Lhs -> - env.defs <- bind "definition" env.defs id (ps', t', []); - [], [Il.DefA id $ a.at], Subst.add_defid s id' id - | DefA id, DefP (id', ps', t') -> - let ps, t, _ = find "definition" env.defs id in - if not (Eval.equiv_functyp (to_eval_env env) (ps, t) (ps', t')) then + let as' = List.map (fun (_x, t) -> Il.TypA t $ t.at) Il.Subst.(Map.bindings s'.typid) in + qs, as' @ [Il.GramA g' $ a.at], Il.Subst.add_gramid s' x' g' + | GramA g, Il.GramP (x', ps', t') -> + (match g.it with + | VarG (x, []) -> + let ps, t, _ = find "grammar" env.defs x in + if not (Il.Eval.equiv_functyp (to_il_env env) (ps, t) (ps', t')) then + error a.at ("type mismatch in grammar argument, expected `" ^ + (spaceid "grammar" x').it ^ Il.Print.(string_of_params ps' ^ " : " ^ typ_string env t') ^ + "` but got `" ^ + (spaceid "grammar" x).it ^ Il.Print.(string_of_params ps ^ " : " ^ typ_string env t ^ "`") + ); + let g' = Il.VarG (x, []) $ a.at in + [], [Il.GramA g' $ a.at], Il.Subst.add_gramid s x g' + | _ -> + error g.at "grammar identifier expected for paramaterised grammar parameter" + ) + | DefA x, Il.DefP (x', ps', t') when in_lhs = `Lhs -> + env.defs <- bind "definition" env.defs x (ps', t', []); + [], [Il.DefA x $ a.at], Il.Subst.add_defid s x' x + | DefA x, Il.DefP (x', ps', t') -> + let ps, t, _ = find "definition" env.defs x in + if not (Il.Eval.equiv_functyp (to_il_env env) (ps, t) (ps', t')) then error a.at ("type mismatch in function argument, expected `" ^ - (spaceid "definition" id').it ^ Print.(string_of_params ps' ^ " : " ^ string_of_typ ~short:true t') ^ + (spaceid "definition" x').it ^ Il.Print.(string_of_params ps' ^ " : " ^ typ_string env t') ^ "` but got `" ^ - (spaceid "definition" id).it ^ Print.(string_of_params ps ^ " : " ^ string_of_typ ~short:true t ^ "`") + (spaceid "definition" x).it ^ Il.Print.(string_of_params ps ^ " : " ^ typ_string env t ^ "`") ); - [], [Il.DefA id $ a.at], Subst.add_defid s id id' + [], [Il.DefA x $ a.at], Il.Subst.add_defid s x x' | _, _ -> error a.at "sort mismatch for argument" -and elab_args in_lhs env as_ ps at : Il.quant list * Il.arg list * Il.Subst.subst = +and elab_args in_lhs env (as_ : arg list) (ps : Il.param list) at : Il.quant list * Il.arg list * Il.Subst.subst = Debug.(log_at "el.elab_args" at - (fun _ -> fmt "(%s) : (%s)" (list el_arg as_) (list el_param ps)) + (fun _ -> fmt "(%s) : (%s)" (list el_arg as_) (list il_param ps)) (fun (qs, as', _) -> fmt "%s(%s)" (il_quants qs) (list il_arg as')) ) @@ fun _ -> - elab_args' in_lhs env as_ ps [] [] Subst.empty at + elab_args' in_lhs env as_ ps [] [] Il.Subst.empty at -and elab_args' in_lhs env as_ ps qs as' s at : Il.quant list * Il.arg list * Il.Subst.subst = +and elab_args' in_lhs env (as_ : arg list) (ps : Il.param list) qs as' s at : Il.quant list * Il.arg list * Il.Subst.subst = match as_, ps with | [], [] -> qs, List.concat (List.rev as'), s | a::_, [] -> error a.at "too many arguments" @@ -2597,77 +2585,79 @@ and elab_args' in_lhs env as_ ps qs as' s at : Il.quant list * Il.arg list * Il. elab_args' in_lhs env as1 ps1 (qs @ qs') (a'::as') s' at and subst_implicit env s t t' : Il.Subst.subst = - let free = Free.(Set.filter (fun id -> not (Map.mem id env.typs)) (free_typ t).typid) in + let free = Il.Free.(Set.filter (fun x -> not (Map.mem x env.typs)) (free_typ t).typid) in let rec inst s t t' = match t.it, t'.it with - | VarT (id, []), _ - when Free.Set.mem id.it free && not (Subst.mem_typid s id) -> - Subst.add_typid s id t' - | ParenT t1, _ -> inst s t1 t' - | _, ParenT t1' -> inst s t t1' - | TupT (t1::ts), TupT (t1'::ts') -> - inst (inst s t1 t1') (TupT ts $ t.at) (TupT ts' $ t'.at) - | IterT (t1, _), IterT (t1', _) -> inst s t1 t1' + | Il.VarT (x, []), _ + when Il.Free.Set.mem x.it free && not (Il.Subst.mem_typid s x) -> + Il.Subst.add_typid s x t' + | Il.TupT ((x, t1)::ts), Il.TupT ((x', t1')::ts') -> + let s' = Il.Subst.add_varid (inst s t1 t1') x' (Il.VarE x $$ x.at % t1) in + inst s' (Il.TupT ts $ t.at) (Il.TupT ts' $ t'.at) + | Il.IterT (t1, _), Il.IterT (t1', _) -> inst s t1 t1' | _ -> s in inst s t t' -and elab_param env p : Il.param list = +and elab_param env (p : param) : Il.param list = match p.it with - | ExpP (id, t) -> + | ExpP (x, t) -> let t' = elab_typ env t in (* If a variable isn't globally declared, this is a local declaration. *) - let id' = strip_var_suffix id in - if bound env.gvars id' then ( - let t2 = find "" env.gvars id' in - if not (sub_typ env t t2) then - error_typ2 env id.at "local variable" t t2 ", shadowing with different type" + let x' = strip_var_suffix x in + if bound env.gvars x' then ( + let t2 = find "" env.gvars x' in + if not (sub_typ env t' t2) then + error_typ2 env x.at "local variable" t' t2 ", shadowing with different type" ); (* Shadowing is allowed, but only with consistent type. *) - if bound env.vars id' then ( - let t2 = find "" env.vars id' in - if not (equiv_typ env t t2) then - error_typ2 env id.at "local variable" t t2 ", shadowing with different type" + if bound env.vars x' then ( + let t2 = find "" env.vars x' in + if not (equiv_typ env t' t2) then + error_typ2 env x.at "local variable" t' t2 ", shadowing with different type" ) else - env.vars <- bind "variable" env.vars id t; - [Il.ExpP (id, t') $ p.at] - | TypP id -> - env.typs <- bind "syntax type" env.typs id ([], Opaque); - env.gvars <- bind "variable" env.gvars (strip_var_sub id) (VarT (id, []) $ id.at); - [Il.TypP id $ p.at] - | GramP (id, t) -> + env.vars <- bind "variable" env.vars x t'; + [Il.ExpP (x, t') $ p.at] + | TypP x -> + env.typs <- bind "syntax type" env.typs x ([], Opaque); + env.gvars <- bind "variable" env.gvars (strip_var_sub x) (Il.VarT (x, []) $ x.at); + [Il.TypP x $ p.at] + | GramP (x, ps, t) -> + let env' = local_env env in + let ps' = elab_params env' ps in (* Treat unbound type identifiers in t as implicitly bound. *) let free = Free.free_typ t in - env.grams <- bind "grammar" env.grams id ([], t, None, []); - let ps' = - Free.Set.fold (fun id' ps' -> - if Map.mem id' env.typs then ps' else ( - let id = id' $ t.at in - if id.it <> (strip_var_suffix id).it then - error_id id "invalid identifer suffix in binding position"; - env.typs <- bind "syntax type" env.typs id ([], Opaque); - env.gvars <- bind "variable" env.gvars (strip_var_sub id) (VarT (id, []) $ id.at); - (Il.TypP id $ id.at) :: ps' + let ps_implicit' = + Free.Set.fold (fun x' ps' -> + if Map.mem x' env'.typs then ps' else ( + let x = x' $ t.at in + if x.it <> (strip_var_suffix x).it then + error_id x "invalid identifer suffix in binding position"; + env'.typs <- bind "syntax type" env.typs x ([], Opaque); + env.typs <- bind "syntax type" env.typs x ([], Opaque); + env.gvars <- bind "variable" env.gvars (strip_var_sub x) (Il.VarT (x, []) $ x.at); + (Il.TypP x $ x.at) :: ps' ) ) free.typid [] in - let t' = elab_typ env t in - ps' @ [Il.GramP (id, t') $ p.at] - | DefP (id, ps, t) -> + let t' = elab_typ env' t in + env.grams <- bind "grammar" env.grams x ([], t', None, []); + ps_implicit' @ [Il.GramP (x, ps', t') $ p.at] + | DefP (x, ps, t) -> let env' = local_env env in let ps' = elab_params env' ps in let t' = elab_typ env' t in - env.defs <- bind "definition" env.defs id (ps, t, []); - [Il.DefP (id, ps', t') $ p.at] + env.defs <- bind "definition" env.defs x (ps', t', []); + [Il.DefP (x, ps', t') $ p.at] -and elab_params env ps : Il.param list = +and elab_params env (ps : param list) : Il.param list = List.concat_map (elab_param env) ps (* To allow optional atoms such as `MUT?`, preprocess type * definitions to insert implicit type definition * `syntax MUT hint(show MUT) = MUT` and replace atom with type id. *) -and infer_typ_notation env is_con t : typ = +and infer_typ_notation env is_con (t : typ) : typ = (match t.it with | VarT _ | BoolT | NumT _ | TextT | ParenT _ | TupT _ | RangeT _ -> t.it | AtomT _ -> is_con := true; t.it @@ -2701,64 +2691,65 @@ and infer_typ_notation env is_con t : typ = | IterT (t1, iter) -> IterT (infer_typ_notation env is_con t1, iter) ) $ t.at -let infer_typ_definition _env t : kind = +let infer_typ_definition _env (t : typ) : kind = match t.it with | StrT _ | CaseT _ -> Opaque | ConT _ | RangeT _ -> Transp | _ -> Transp -let infer_typdef env d : def = +let infer_typdef env (d : def) : def = match d.it with - | FamD (id, ps, _hints) -> - let _ps' = elab_params (local_env env) ps in - env.typs <- bind "syntax type" env.typs id (ps, Family []); + | FamD (x, ps, _hints) -> + let ps' = elab_params (local_env env) ps in + env.typs <- bind "syntax type" env.typs x (ps', Family []); if ps = [] then (* only types without parameters double as variables *) - env.gvars <- bind "variable" env.gvars (strip_var_sub id) (VarT (id, []) $ id.at); + env.gvars <- bind "variable" env.gvars (strip_var_sub x) (Il.VarT (x, []) $ x.at); d - | TypD (id1, id2, as_, t, hints) -> + | TypD (x1, x2, as_, t, hints) -> let is_con = ref false in let t = infer_typ_notation env is_con t in - if bound env.typs id1 then ( - let _ps, k = find "syntax type" env.typs id1 in + if bound env.typs x1 then ( + let _ps, k = find "syntax type" env.typs x1 in let extension = match t.it with | CaseT (Dots, _, _, _) | StrT (Dots, _, _, _) -> true | _ -> false in if k <> Family [] && not extension then (* force error *) - ignore (env.typs <- bind "syntax type" env.typs id1 ([], Family [])) + ignore (env.typs <- bind "syntax type" env.typs x1 ([], Family [])) ) else ( let ps = List.map Convert.param_of_arg as_ in let env' = local_env env in - let _ps' = elab_params env' ps in + let ps' = elab_params env' ps in let k = infer_typ_definition env' t in - env.typs <- bind "syntax type" env.typs id1 (ps, k); + env.typs <- bind "syntax type" env.typs x1 (ps', k); if ps = [] then (* only types without parameters double as variables *) - env.gvars <- bind "variable" env.gvars (strip_var_sub id1) (VarT (id1, []) $ id1.at); + env.gvars <- bind "variable" env.gvars (strip_var_sub x1) (Il.VarT (x1, []) $ x1.at); ); - TypD (id1, id2, as_, t, hints) $ d.at - | VarD (id, t, _hints) -> + TypD (x1, x2, as_, t, hints) $ d.at + | VarD (x, t, _hints) -> + let t' = elab_typ env t in (* This is to ensure that we get rebind errors in syntactic order. *) - env.gvars <- bind "variable" env.gvars id t; + env.gvars <- bind "variable" env.gvars x t'; d | _ -> d -let infer_gramdef env d = +let infer_gramdef env (d : def) = match d.it with - | GramD (id1, _id2, ps, t, _gram, _hints) -> + | GramD (x1, _x2, ps, t, _gram, _hints) -> (* Printf.eprintf "[el.infer_gramdef %s]\n%!" (string_of_region d.at); *) - if not (bound env.grams id1) then ( + if not (bound env.grams x1) then ( let env' = local_env env in - let _ps' = elab_params env' ps in - let _t' = elab_typ env' t in - env.grams <- bind "grammar" env.grams id1 (ps, t, None, []); + let ps' = elab_params env' ps in + let t' = elab_typ env' t in + env.grams <- bind "grammar" env.grams x1 (ps', t', None, []); ) | _ -> () -let elab_hintdef _env hd : Il.def list = +let elab_hintdef _env (hd : hintdef) : Il.def list = match hd.it with | TypH (id1, _id2, hints) -> if hints = [] then [] else @@ -2775,7 +2766,7 @@ let elab_hintdef _env hd : Il.def list = [] -let infer_quants env env' dims d : Il.quant list = +let infer_quants env env' dims (d : def) : Il.quant list = Debug.(log_in_at "el.infer_quants" d.at (fun _ -> Map.fold (fun id _ ids -> @@ -2793,153 +2784,130 @@ let infer_quants env env' dims d : Il.quant list = Acc.def d; !acc_qs -let infer_no_quants env dims d = +let infer_no_quants env dims (d : def) = let qs = infer_quants env env dims d in assert (qs = []) -let rec elab_def env d : Il.def list = +let rec elab_def env (d : def) : Il.def list = Debug.(log_in "el.elab_def" line); Debug.(log_in_at "el.elab_def" d.at (fun _ -> el_def d)); match d.it with - | FamD (id, ps, hints) -> + | FamD (x, ps, hints) -> env.pm <- false; let ps' = elab_params (local_env env) ps in if env.pm then error d.at "misplaced +- or -+ operator in syntax type declaration"; let dims = Dim.check_def d in infer_no_quants env dims d; - env.typs <- rebind "syntax type" env.typs id (ps, Family []); - [Il.TypD (id, ps', []) $ d.at] - @ elab_hintdef env (TypH (id, "" $ id.at, hints) $ d.at) - | TypD (id1, id2, as_, t, hints) -> + env.typs <- rebind "syntax type" env.typs x (ps', Family []); + [Il.TypD (x, ps', []) $ d.at] + @ elab_hintdef env (TypH (x, "" $ x.at, hints) $ d.at) + | TypD (x1, x2, as_, t, hints) -> let env' = local_env env in env'.pm <- false; - let ps1, k1 = find "syntax type" env.typs id1 in - let qs1, as', _s = elab_args `Lhs env' as_ ps1 d.at in - let dt' = elab_typ_definition env' id1 t in + let ps', k = find "syntax type" env.typs x1 in + let qs1, as', _s = elab_args `Lhs env' as_ ps' d.at in + let dots1, dt', dots2 = elab_typ_definition env' x1 t in let dims = Dim.check_def d in let dims' = Dim.Env.map (List.map (elab_typiter env')) dims in let qs = infer_quants env env' dims d in let inst' = Il.InstD (qs @ qs1, List.map (Dim.annot_arg dims') as', dt') $ d.at in - let k1', closed = - match k1, t.it with - | Opaque, (CaseT (Dots, _, _, _) | StrT (Dots, _, _, _)) -> - error_id id1 "extension of not yet defined syntax type" - | Opaque, (CaseT (NoDots, _, _, dots2) | StrT (NoDots, _, _, dots2)) -> - Defined (t, [id2], dt'), dots2 = NoDots - | (Opaque | Transp), _ -> - Defined (t, [id2], dt'), true - | Defined ({it = CaseT (dots1, ts1, tcs1, Dots); at; _}, ids, _), - CaseT (Dots, ts2, tcs2, dots2) -> - let ps = List.map Convert.param_of_arg as_ in - if List.exists (fun id -> id.it = id2.it) ids then - error d.at ("duplicate syntax fragment name `" ^ id1.it ^ - (if id2.it = "" then "" else "/" ^ id2.it) ^ "`"); - if not Eq.(eq_list eq_param ps ps1) then - error d.at "syntax parameters differ from previous fragment"; - let t1 = CaseT (dots1, ts1 @ ts2, tcs1 @ tcs2, dots2) $ over_region [at; t.at] in - Defined (t1, id2::ids, dt'), dots2 = NoDots - | Defined ({it = StrT (dots1, ts1, tfs1, Dots); at; _}, ids, _), - StrT (Dots, ts2, tfs2, dots2) -> - let ps = List.map Convert.param_of_arg as_ in - if List.exists (fun id -> id.it = id2.it) ids then - error d.at ("duplicate syntax fragment name `" ^ id1.it ^ - (if id2.it = "" then "" else "/" ^ id2.it) ^ "`"); - if not Eq.(eq_list eq_param ps ps1) then - error d.at "syntax parameters differ from previous fragment"; - let t1 = StrT (dots1, ts1 @ ts2, tfs1 @ tfs2, dots2) $ over_region [at; t.at] in - Defined (t1, id2::ids, dt'), dots2 = NoDots - | Defined _, (CaseT (Dots, _, _, _) | StrT (Dots, _, _, _)) -> - error_id id1 "extension of non-extensible syntax type" - | Defined _, _ -> - error_id id1 "duplicate declaration for syntax type"; - | Family _, (CaseT (dots1, _, _, dots2) | StrT (dots1, _, _, dots2)) - when dots1 = Dots || dots2 = Dots -> - error_id id1 "syntax type family cases are not extensible" - | Family insts, _ -> - Family (insts @ [(as_, t, inst')]), false + let k', last = + match k with + | (Opaque | Transp) -> + if dots1 = Dots then + error_id x1 "extension of not yet defined syntax type"; + Defined (dt', [x2], dots2), dots2 = NoDots + | Defined (_, xs, dots) -> + if dots = NoDots then + error_id x1 "extension of non-extensible syntax type"; + if List.exists (fun x -> x.it = x2.it) xs then + error d.at ("duplicate syntax fragment name `" ^ x1.it ^ + (if x2.it = "" then "" else "/" ^ x2.it) ^ "`"); + Defined (dt', x2::xs, dots2), dots2 = NoDots + | Family insts -> + if dots1 = Dots || dots2 = Dots then + error_id x1 "syntax type family cases are not extensible"; + Family (insts @ [Il.InstD (qs1 @ qs, as', dt') $ d.at]), false in (* Printf.eprintf "[syntax %s] %s ~> %s\n%!" id1.it (string_of_typ t) (Il.Print.string_of_deftyp dt'); *) - env.typs <- rebind "syntax type" env.typs id1 (ps1, k1'); - (if not closed then [] else - let ps = List.map Convert.param_of_arg as_ in - let ps' = elab_params (local_env env) ps in - [Il.TypD (id1, ps', [inst']) $ d.at] - ) @ elab_hintdef env (TypH (id1, id2, hints) $ d.at) @ + env.typs <- rebind "syntax type" env.typs x1 (ps', k'); + (if not last then [] else [Il.TypD (x1, ps', [inst']) $ d.at]) + @ elab_hintdef env (TypH (x1, x2, hints) $ d.at) @ (if not env'.pm then [] else elab_def env Subst.(subst_def pm_snd (Iter.clone_def d))) - | GramD (id1, id2, ps, t, gram, hints) -> + | GramD (x1, x2, ps, t, gram, hints) -> let env' = local_env env in env'.pm <- false; let ps' = elab_params env' ps in let t' = elab_typ env' t in if env'.pm then error d.at "misplaced +- or -+ operator in grammar"; - let prods' = List.map (fun pr -> id2, pr) (elab_gram env' gram t) in + let xprods2' = List.map (fun pr -> x2, pr) (elab_gram env' gram t') in let dims = Dim.check_def d in infer_no_quants env' dims d; - let ps1, t1, gram1_opt, prods1' = find "grammar" env.grams id1 in - let gram', last = - match gram1_opt, gram.it with - | None, (Dots, _, _) -> - error_id id1 "extension of not yet defined grammar" - | None, (_, _, dots2) -> - gram, dots2 = NoDots - | Some {it = (dots1, prods1, Dots); at; _}, (Dots, prods2, dots2) -> - if List.exists (fun (id, _) -> id.it = id2.it) prods1' then - error d.at ("duplicate grammar fragment name `" ^ id1.it ^ - (if id2.it = "" then "" else "/" ^ id2.it) ^ "`"); - if not Eq.(eq_list eq_param ps ps1) then + let ps1', t1', dots_opt, xprods1' = find "grammar" env.grams x1 in + let dots1, _, dots2 = gram.it in + let xprods' = + match dots_opt with + | None -> + if dots1 = Dots then + error_id x1 "extension of not yet defined grammar"; + xprods2' + | Some dots -> + if dots = NoDots then + error_id x1 "extension of non-extensible grammar"; + if List.exists (fun (x, _) -> x.it = x2.it) xprods1' then + error d.at ("duplicate grammar fragment name `" ^ x1.it ^ + (if x2.it = "" then "" else "/" ^ x2.it) ^ "`"); + if not Il.Eq.(eq_list eq_param ps' ps1') then error d.at "grammar parameters differ from previous fragment"; - if not (equiv_typ env' t t1) then - error_typ2 env d.at "grammar" t1 t " of previous fragment"; - (dots1, prods1 @ prods2, dots2) $ over_region [at; t.at], dots2 = NoDots - | Some _, (Dots, _, _) -> - error_id id1 "extension of non-extensible grammar" - | Some _, _ -> - error_id id1 "duplicate declaration for grammar"; + if not (equiv_typ env' t' t1') then + error_typ2 env d.at "grammar" t1' t' " of previous fragment"; + xprods1' @ xprods2' in - env.grams <- rebind "grammar" env.grams id1 (ps, t, Some gram', prods1' @ prods'); + env.grams <- rebind "grammar" env.grams x1 (ps', t', Some dots2, xprods'); (* Only add last fragment to IL defs, so that populate finds it only once *) - (if last then [Il.GramD (id1, ps', t', []) $ d.at] else []) - @ elab_hintdef env (GramH (id1, id2, hints) $ d.at) - | RelD (id, t, hints) -> + (if dots2 = Dots then [] else [Il.GramD (x1, ps', t', []) $ d.at]) + @ elab_hintdef env (GramH (x1, x2, hints) $ d.at) + | RelD (x, t, hints) -> env.pm <- false; - let mixop, ts', _ts = elab_typ_notation env id t in + let mixop, ts' = elab_typ_notation env x t in + let t' = tup_typ' ts' t.at in + let not = Mixop.apply mixop ts' in if env.pm then error d.at "misplaced +- or -+ operator in relation"; let dims = Dim.check_def d in infer_no_quants env dims d; - env.rels <- bind "relation" env.rels id (t, []); - [Il.RelD (id, mixop, tup_typ' ts' t.at, []) $ d.at] - @ elab_hintdef env (RelH (id, hints) $ d.at) - | RuleD (id1, id2, e, prems) -> + env.rels <- bind "relation" env.rels x (mixop, not, t', []); + [Il.RelD (x, mixop, t', []) $ d.at] + @ elab_hintdef env (RelH (x, hints) $ d.at) + | RuleD (x1, x2, e, prems) -> let env' = local_env env in env'.pm <- false; let dims = Dim.check_def d in let dims' = Dim.Env.map (List.map (elab_typiter env')) dims in - let t, rules' = find "relation" env.rels id1 in - if List.exists (fun (id, _) -> id.it = id2.it) rules' then - error d.at ("duplicate rule name `" ^ id1.it ^ - (if id2.it = "" then "" else "/" ^ id2.it) ^ "`"); - let mixop, _, _ = elab_typ_notation env id1 t in - let qs1, es', _ = checkpoint (elab_exp_notation' env' id1 e t) in + let mixop, not', t', rules' = find "relation" env.rels x1 in + if List.exists (fun (x, _) -> x.it = x2.it) rules' then + error d.at ("duplicate rule name `" ^ x1.it ^ + (if x2.it = "" then "" else "/" ^ x2.it) ^ "`"); + let qs1, es', _ = checkpoint (elab_exp_notation' env' x1 e not') in let es' = List.map (Dim.annot_exp dims') es' in let qss2, premss' = List.split (map_filter_nl_list (elab_prem env') prems) in let prems' = List.map (Dim.annot_prem dims') (List.concat premss') in let qs = infer_quants env env' dims d in - let rule' = Il.RuleD (id2, qs @ qs1 @ List.concat qss2, mixop, tup_exp' es' e.at, prems') $ d.at in - env.rels <- rebind "relation" env.rels id1 (t, rules' @ [id2, rule']); + let rule' = Il.RuleD (x2, qs @ qs1 @ List.concat qss2, mixop, tup_exp' es' e.at, prems') $ d.at in + env.rels <- rebind "relation" env.rels x1 (mixop, not', t', rules' @ [x2, rule']); if not env'.pm then [] else elab_def env Subst.(subst_def pm_snd (Iter.clone_def d)) - | VarD (id, t, _hints) -> + | VarD (x, t, _hints) -> env.pm <- false; - let _t' = elab_typ env t in + let t' = elab_typ env t in if env.pm then error d.at "misplaced +- or -+ operator in variable declaration"; let dims = Dim.check_def d in infer_no_quants env dims d; - env.gvars <- rebind "variable" env.gvars id t; + env.gvars <- rebind "variable" env.gvars x t'; [] - | DecD (id, ps, t, hints) -> + | DecD (x, ps, t, hints) -> let env' = local_env env in env'.pm <- false; let ps' = elab_params env' ps in @@ -2947,24 +2915,24 @@ let rec elab_def env d : Il.def list = if env'.pm then error d.at "misplaced +- or -+ operator in declaration"; let dims = Dim.check_def d in infer_no_quants env dims d; - env.defs <- bind "definition" env.defs id (ps, t, []); - [Il.DecD (id, ps', t', []) $ d.at] - @ elab_hintdef env (DecH (id, hints) $ d.at) - | DefD (id, as_, e, prems) -> + env.defs <- bind "definition" env.defs x (ps', t', []); + [Il.DecD (x, ps', t', []) $ d.at] + @ elab_hintdef env (DecH (x, hints) $ d.at) + | DefD (x, as_, e, prems) -> let env' = local_env env in env'.pm <- false; let dims = Dim.check_def d in let dims' = Dim.Env.map (List.map (elab_typiter env')) dims in - let ps, t, clauses' = find "definition" env.defs id in + let ps, t, clauses' = find "definition" env.defs x in let qs1, as', s = elab_args `Lhs env' as_ ps d.at in let as' = List.map (Dim.annot_arg dims') as' in let qss2, premss' = List.split (map_filter_nl_list (elab_prem env') prems) in let prems' = List.map (Dim.annot_prem dims') (List.concat premss') in - let qs3, e' = checkpoint (elab_exp env' e (Subst.subst_typ s t)) in + let qs3, e' = checkpoint (elab_exp env' e (Il.Subst.subst_typ s t)) in let e' = Dim.annot_exp dims' e' in let qs = infer_quants env env' dims d in let clause' = Il.DefD (qs @ qs1 @ List.concat qss2 @ qs3, as', e', prems') $ d.at in - env.defs <- rebind "definition" env.defs id (ps, t, clauses' @ [(d, clause')]); + env.defs <- rebind "definition" env.defs x (ps, t, clauses' @ [(d, clause')]); if not env'.pm then [] else elab_def env Subst.(subst_def pm_snd (Iter.clone_def d)) | SepD -> [] @@ -2973,52 +2941,49 @@ let rec elab_def env d : Il.def list = let check_dots env = - Map.iter (fun id (at, (_ps, k)) -> + Map.iter (fun x (at, (_ps, k)) -> match k with | Transp | Opaque -> assert false - | Defined ({it = (CaseT (_, _, _, Dots) | StrT (_, _, _, Dots)); _}, _, _) -> - error_id (id $ at) "missing final extension to syntax type" + | Defined (_, _, Dots) -> + error_id (x $ at) "missing final extension to syntax type" | Family [] -> - error_id (id $ at) "no defined cases for syntax type family" + error_id (x $ at) "no defined cases for syntax type family" | Defined _ | Family _ -> () ) env.typs; - Map.iter (fun id (at, (_ps, _t, gram_opt, _prods')) -> + Map.iter (fun x (at, (_ps, _t, gram_opt, _prods')) -> match gram_opt with | None -> assert false - | Some {it = (_, _, Dots); _} -> - error_id (id $ at) "missing final extension to grammar" - | _ -> () + | Some Dots -> + error_id (x $ at) "missing final extension to grammar" + | Some _ -> () ) env.grams -let populate_hint env hd' = +let populate_hint env (hd' : Il.hintdef) = match hd'.it with - | Il.TypH (id, _) -> ignore (find "syntax type" env.typs id) - | Il.RelH (id, _) -> ignore (find "relation" env.rels id) - | Il.DecH (id, _) -> ignore (find "definition" env.defs id) - | Il.GramH (id, _) -> ignore (find "grammar" env.grams id) + | Il.TypH (x, _) -> ignore (find "syntax type" env.typs x) + | Il.RelH (x, _) -> ignore (find "relation" env.rels x) + | Il.DecH (x, _) -> ignore (find "definition" env.defs x) + | Il.GramH (x, _) -> ignore (find "grammar" env.grams x) -let populate_def env d' : Il.def = +let populate_def env (d' : Il.def) : Il.def = Debug.(log_in "el.populate_def" dline); Debug.(log_in_at "el.populate_def" d'.at (Fun.const "")); match d'.it with - | Il.TypD (id, ps', _dt') -> - (match find "syntax type" env.typs id with - | _ps, Family insts -> - let insts' = List.map (fun (_, _, inst') -> inst') insts in - Il.TypD (id, ps', insts') $ d'.at - | _ps, _k -> - d' + | Il.TypD (x, ps', _dt') -> + (match find "syntax type" env.typs x with + | _ps, Family insts' -> Il.TypD (x, ps', insts') $ d'.at + | _ps, _k -> d' ) - | Il.RelD (id, mixop, t', []) -> - let _, rules' = find "relation" env.rels id in - Il.RelD (id, mixop, t', List.map snd rules') $ d'.at - | Il.DecD (id, ps', t', []) -> - let _, _, clauses' = find "definition" env.defs id in - Il.DecD (id, ps', t', List.map snd clauses') $ d'.at - | Il.GramD (id, ps', t', []) -> - let _, _, _, prods' = find "grammar" env.grams id in - Il.GramD (id, ps', t', List.map snd prods') $ d'.at + | Il.RelD (x, mixop, t', []) -> + let _, _, _, rules' = find "relation" env.rels x in + Il.RelD (x, mixop, t', List.map snd rules') $ d'.at + | Il.DecD (x, ps', t', []) -> + let _, _, clauses' = find "definition" env.defs x in + Il.DecD (x, ps', t', List.map snd clauses') $ d'.at + | Il.GramD (x, ps', t', []) -> + let _, _, _, prods' = find "grammar" env.grams x in + Il.GramD (x, ps', t', List.map snd prods') $ d'.at | Il.HintD hd' -> populate_hint env hd'; d' | _ -> assert false @@ -3034,7 +2999,7 @@ let deps (map : int Map.t) (set : Il.Free.Set.t) : int array = ) (Array.of_seq (Il.Free.Set.to_seq set)) -let check_recursion ds' = +let check_recursion (ds' : Il.def list) = List.iter (fun d' -> match d'.it, (List.hd ds').it with | Il.HintD _, _ | _, Il.HintD _ @@ -3048,7 +3013,7 @@ let check_recursion ds' = ) ds' (* TODO(4, rossberg): check that notations are non-recursive and defs are inductive? *) -let recursify_defs ds' : Il.def list = +let recursify_defs (ds' : Il.def list) : Il.def list = let open Il.Free in let da = Array.of_list ds' in let map_typid = ref Map.empty in @@ -3084,13 +3049,13 @@ let recursify_defs ds' : Il.def list = ) sccs -let implicit_typdef id (at, atom) ds = +let implicit_typdef id (at, atom) (ds : def list) : def list = let hint = {hintid = "show" $ at; hintexp = AtomE atom $ at} in let t = ConT ((AtomT (El.Iter.clone_atom atom) $ at, []), []) $ at in let d = TypD (id $ at, "" $ at, [], t, [hint]) $ at in d :: ds -let elab ds : Il.script * env = +let elab (ds : script) : Il.script * env = let env = new_env () in let ds = List.map (infer_typdef env) ds in let ds = Map.fold implicit_typdef env.atoms ds in @@ -3100,13 +3065,13 @@ let elab ds : Il.script * env = let ds' = List.map (populate_def env) ds' in recursify_defs ds', env -let elab_exp env e t : Il.exp = +let elab_exp env (e : exp) (t : typ) : Il.exp = let env' = local_env env in - let _ = elab_typ env' t in - snd (checkpoint (elab_exp env' e t)) + let t' = elab_typ env' t in + snd (checkpoint (elab_exp env' e t')) -let elab_rel env e id : Il.exp = +let elab_rel env (e : exp) (x : id) : Il.exp = let env' = local_env env in - match elab_prem env' (RulePr (id, e) $ e.at) with + match elab_prem env' (RulePr (x, e) $ e.at) with | _, [{it = Il.RulePr (_, _, e'); _}] -> e' | _ -> assert false diff --git a/spectec/src/frontend/eval.ml b/spectec/src/frontend/eval.ml index d8be4a396..507b02bd8 100644 --- a/spectec/src/frontend/eval.ml +++ b/spectec/src/frontend/eval.ml @@ -746,8 +746,8 @@ and equiv_params env ps1 ps2 = if not (equiv_typ env t1 t2) then None else Some (Subst.add_varid s id2 (VarE (id1, []) $ p1.at)) | TypP _, TypP _ -> Some s - | GramP (id1, t1), GramP (id2, t2) -> - if not (equiv_typ env t1 t2) then None else + | GramP (id1, ps1, t1), GramP (id2, ps2, t2) -> + if not (equiv_functyp env (ps1, t1) (ps2, t2)) then None else Some (Subst.add_gramid s id2 (VarG (id1, []) $ p1.at)) | DefP (id1, ps1, t1), DefP (id2, ps2, t2) -> if not (equiv_functyp env (ps1, t1) (ps2, t2)) then None else diff --git a/spectec/src/frontend/parser.mly b/spectec/src/frontend/parser.mly index 2607b27f9..1c20fab6b 100644 --- a/spectec/src/frontend/parser.mly +++ b/spectec/src/frontend/parser.mly @@ -1028,7 +1028,9 @@ param_ : try El.Convert.varid_of_typ $1 with Error.Error _ -> "" $ $sloc in ExpP (id, $1) } | SYNTAX varid_bind { TypP $2 } - | GRAMMAR gramid COLON typ { GramP ($2, $4) } + | GRAMMAR gramid COLON typ { GramP ($2, [], $4) } + | GRAMMAR gramid_lparen enter_scope comma_list(param) RPAREN COLON typ exit_scope + { GramP ($2, $4, $7) } | DEF DOLLAR defid COLON typ { DefP ($3, [], $5) } | DEF DOLLAR defid_lparen enter_scope comma_list(param) RPAREN COLON typ exit_scope diff --git a/spectec/src/il/eq.ml b/spectec/src/il/eq.ml index 83a13f072..e4400ad89 100644 --- a/spectec/src/il/eq.ml +++ b/spectec/src/il/eq.ml @@ -159,3 +159,13 @@ and eq_arg a1 a2 = | DefA x1, DefA x2 -> eq_id x1 x2 | GramA g1, GramA g2 -> eq_sym g1 g2 | _, _ -> false + +and eq_param p1 p2 = + match p1.it, p2.it with + | ExpP (x1, t1), ExpP (x2, t2) -> eq_id x1 x2 && eq_typ t1 t2 + | TypP x1, TypP x2 -> eq_id x1 x2 + | DefP (x1, ps1, t1), DefP (x2, ps2, t2) -> + eq_id x1 x2 && eq_list eq_param ps1 ps2 && eq_typ t1 t2 + | GramP (x1, ps1, t1), GramP (x2, ps2, t2) -> + eq_id x1 x2 && eq_list eq_param ps1 ps2 && eq_typ t1 t2 + | _, _ -> false diff --git a/spectec/src/il/eq.mli b/spectec/src/il/eq.mli index ba6113168..18f0b69b9 100644 --- a/spectec/src/il/eq.mli +++ b/spectec/src/il/eq.mli @@ -12,6 +12,7 @@ val eq_path : path -> path -> bool val eq_sym : sym -> sym -> bool val eq_prem : prem -> prem -> bool val eq_arg : arg -> arg -> bool +val eq_param : param -> param -> bool val eq_opt : ('a -> 'a -> bool) -> 'a option -> 'a option -> bool val eq_list : ('a -> 'a -> bool) -> 'a list -> 'a list -> bool diff --git a/spectec/src/il/free.ml b/spectec/src/il/free.ml index 1f9d58cb8..b05015710 100644 --- a/spectec/src/il/free.ml +++ b/spectec/src/il/free.ml @@ -2,78 +2,11 @@ open Util.Source open Ast -(* Data Structure *) - -module Set = Env.Set - -type sets = - {typid : Set.t; relid : Set.t; varid : Set.t; defid : Set.t; gramid : Set.t} - -let empty = - { typid = Set.empty; - relid = Set.empty; - varid = Set.empty; - defid = Set.empty; - gramid = Set.empty - } - -let union sets1 sets2 = - { typid = Set.union sets1.typid sets2.typid; - relid = Set.union sets1.relid sets2.relid; - varid = Set.union sets1.varid sets2.varid; - defid = Set.union sets1.defid sets2.defid; - gramid = Set.union sets1.gramid sets2.gramid; - } - -let diff sets1 sets2 = - { typid = Set.diff sets1.typid sets2.typid; - relid = Set.diff sets1.relid sets2.relid; - varid = Set.diff sets1.varid sets2.varid; - defid = Set.diff sets1.defid sets2.defid; - gramid = Set.diff sets1.gramid sets2.gramid; - } +include Xl.Gen_free let (+) = union let (-) = diff -let subset sets1 sets2 = - Set.subset sets1.typid sets2.typid && - Set.subset sets1.relid sets2.relid && - Set.subset sets1.varid sets2.varid && - Set.subset sets1.defid sets2.defid && - Set.subset sets1.gramid sets2.gramid - -let disjoint sets1 sets2 = - Set.disjoint sets1.typid sets2.typid && - Set.disjoint sets1.relid sets2.relid && - Set.disjoint sets1.varid sets2.varid && - Set.disjoint sets1.defid sets2.defid && - Set.disjoint sets1.gramid sets2.gramid - -let free_opt free_x xo = Option.(value (map free_x xo) ~default:empty) -let free_list free_x xs = List.(fold_left (+) empty (map free_x xs)) -let free_pair free_x free_y (x, y) = free_x x + free_y y -let bound_list = free_list - -let rec free_list_dep free_x bound_x = function - | [] -> empty - | x::xs -> free_x x + (free_list_dep free_x bound_x xs - bound_x x) - - -(* Identifiers *) - -let free_typid x = {empty with typid = Set.singleton x.it} -let free_relid x = {empty with relid = Set.singleton x.it} -let free_varid x = {empty with varid = Set.singleton x.it} -let free_defid x = {empty with defid = Set.singleton x.it} -let free_gramid x = {empty with gramid = Set.singleton x.it} - -let bound_typid x = if x.it = "_" then empty else free_typid x -let bound_relid x = if x.it = "_" then empty else free_relid x -let bound_varid x = if x.it = "_" then empty else free_varid x -let bound_defid x = if x.it = "_" then empty else free_defid x -let bound_gramid x = if x.it = "_" then empty else free_gramid x - (* Iterations *) diff --git a/spectec/src/il/free.mli b/spectec/src/il/free.mli index d286d6abe..1e75e6cc4 100644 --- a/spectec/src/il/free.mli +++ b/spectec/src/il/free.mli @@ -1,20 +1,6 @@ open Ast -module Set : Set.S with type elt = string with type t = Set.Make(String).t - -type sets = {typid : Set.t; relid : Set.t; varid : Set.t; defid : Set.t; gramid : Set.t} - -val empty : sets -val union : sets -> sets -> sets -val diff : sets -> sets -> sets - -val subset : sets -> sets -> bool -val disjoint : sets -> sets -> bool - -val free_opt : ('a -> sets) -> 'a option -> sets -val free_list : ('a -> sets) -> 'a list -> sets - -val free_varid : id -> sets +include module type of Xl.Gen_free val free_iter : iter -> sets val free_typ : typ -> sets @@ -30,7 +16,15 @@ val free_deftyp : deftyp -> sets val free_quant : quant -> sets val free_param : param -> sets +val free_prems : prem list -> sets +val free_args : arg list -> sets +val free_quants : param list -> sets +val free_params : param list -> sets + val bound_typbind : id * typ -> sets val bound_quant : quant -> sets val bound_param : param -> sets val bound_def : def -> sets + +val bound_quants : quant list -> sets +val bound_params : param list -> sets diff --git a/spectec/src/il/subst.ml b/spectec/src/il/subst.ml index 07436613e..b87df656e 100644 --- a/spectec/src/il/subst.ml +++ b/spectec/src/il/subst.ml @@ -193,6 +193,11 @@ and subst_iterexp s (iter, xes) = and subst_sym s g = (match g.it with + | VarG (x, []) -> + (match Map.find_opt x.it s.gramid with + | None -> VarG (x, []) + | Some g' -> g'.it + ) | VarG (x, args) -> VarG (subst_gramid s x, List.map (subst_arg s) args) | NumG _ | TextG _ -> g.it | EpsG -> EpsG diff --git a/spectec/src/il/valid.ml b/spectec/src/il/valid.ml index 612675e42..efffdfffe 100644 --- a/spectec/src/il/valid.ml +++ b/spectec/src/il/valid.ml @@ -634,9 +634,13 @@ and valid_arg env a p s = if not (Eval.equiv_functyp env (ps', t') (ps, t)) then error a.at "type mismatch in function argument"; Subst.add_defid s x x' - | GramA g, GramP (x, ps, t) -> + | GramA g, GramP (x, [], t) -> let t' = valid_sym env g in - if not (Eval.equiv_functyp env ([], t') (ps, t)) then + equiv_typ env t' t a.at; + Subst.add_gramid s x g + | GramA ({it = VarG (x', as'); _} as g), GramP (x, ps, t) -> + let ps', t', _ = Env.find_gram env x' in + if as' <> [] || not (Eval.equiv_functyp env (ps', t') (ps, t)) then error a.at "type mismatch in grammar argument"; Subst.add_gramid s x g | _, _ -> diff --git a/spectec/src/xl/dune b/spectec/src/xl/dune index 95adcc4b4..ab8ef18e0 100644 --- a/spectec/src/xl/dune +++ b/spectec/src/xl/dune @@ -1,5 +1,5 @@ (library (name xl) (libraries util zarith) - (modules bool num atom mixop) + (modules bool num atom mixop gen_free) ) diff --git a/spectec/src/xl/mixop.ml b/spectec/src/xl/mixop.ml index 6527629be..9bb003295 100644 --- a/spectec/src/xl/mixop.ml +++ b/spectec/src/xl/mixop.ml @@ -39,6 +39,13 @@ let rec map_atoms f mixop = let arity mixop = fold (fun n _ -> n + 1) 0 mixop +let apply mixop xs = + let rxs = ref xs in + let mixop' = + map (fun _ -> let xs = !rxs in rxs := List.tl xs; List.hd xs) mixop in + assert (!rxs = []); + mixop' + let (++) atomss1 atomss2 = let atomss1', atoms1 = Lib.List.split_last atomss1 in From 953a15215f8c1e359c648804a9de4f0b57055af3 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Tue, 2 Dec 2025 16:57:12 +0100 Subject: [PATCH 005/235] Make Wasm 1.0 elaborate again --- spectec/src/frontend/elab.ml | 167 ++++++++++++++++++++--------------- spectec/src/xl/mixop.ml | 40 +++++---- 2 files changed, 119 insertions(+), 88 deletions(-) diff --git a/spectec/src/frontend/elab.ml b/spectec/src/frontend/elab.ml index da9074119..9b6839f84 100644 --- a/spectec/src/frontend/elab.ml +++ b/spectec/src/frontend/elab.ml @@ -26,6 +26,10 @@ let error_atom at atom t msg = error at (msg ^ " `" ^ string_of_atom atom ^ "` in type `" ^ Il.string_of_typ t ^ "`") +let error_mixop at mixop t msg = + error at (msg ^ " `" ^ Il.string_of_mixop mixop ^ + "` in type `" ^ Il.string_of_typ t ^ "`") + let error_id id msg = error id.at (msg ^ " `" ^ id.it ^ "`") @@ -114,7 +118,7 @@ type kind = type var_typ = Il.typ type typ_typ = Il.param list * kind -type gram_typ = Il.param list * Il.typ * dots option * (id * Il.prod) list +type gram_typ = Il.param list * Il.typ * (id * Il.prod) list * dots option type rel_typ = Il.mixop * notation * Il.typ * (id * Il.rule) list type def_typ = Il.param list * Il.typ * (def * Il.clause) list @@ -187,20 +191,22 @@ let find_field tfs atom at t = | Some tf -> tf | None -> error_atom at atom t "unbound field" -let find_case' f tcs atom at t = +let find_case tcs mixop at t = + match List.find_opt (fun (mixop', _, _) -> Mixop.eq mixop' mixop) tcs with + | Some tc -> tc + | None -> error_mixop at mixop t "unknown case" + +let find_case_atom tcs atom at t = match List.find_opt (fun (mixop, _, _) -> match Mixop.head mixop with - | Some atom' -> f atom' atom + | Some atom' -> Atom.(eq atom' atom || sub atom' atom) | None -> false ) tcs with | Some tc -> tc | None -> error_atom at atom t "unknown case" -let find_case = find_case' Atom.eq -let find_case_sub = find_case' (fun a' a -> Atom.(eq a' a || sub a' a)) - let bound_env' env' = Map.fold (fun id _ s -> Free.Set.add id s) env' Free.Set.empty let bound_env env = Free.{ @@ -216,7 +222,7 @@ let bind_quant env q = | Il.ExpP (x, t) -> env.vars <- bind "variable" env.vars x t | Il.TypP x -> env.typs <- bind "syntax type" env.typs x ([], Opaque) | Il.DefP (x, ps, t) -> env.defs <- bind "definition" env.defs x (ps, t, []) - | Il.GramP (x, ps, t) -> env.grams <- bind "grammar" env.grams x (ps, t, None, []) + | Il.GramP (x, ps, t) -> env.grams <- bind "grammar" env.grams x (ps, t, [], None) let vars env = Map.fold (fun id (at, _) ids -> (id $ at)::ids) env.vars [] @@ -233,7 +239,7 @@ let il_args_of_params = List.map il_arg_of_param let to_il_var (_at, t) = t let to_il_def (_at, (ps, t, clauses)) = (ps, t, List.map snd clauses) -let to_il_gram (_at, (ps, t, _, prods)) = (ps, t, List.map snd prods) +let to_il_gram (_at, (ps, t, prods, _)) = (ps, t, List.map snd prods) let to_il_typ (_at, (ps, k)) = match k with @@ -307,6 +313,9 @@ let fail_silent = Fail [] let fail_atom at atom t msg = fail at (msg ^ " `" ^ string_of_atom atom ^ "` in type `" ^ Il.string_of_typ t ^ "`") +let fail_mixop at mixop t msg = + fail at (msg ^ " `" ^ Il.string_of_mixop mixop ^ "` in type `" ^ Il.string_of_typ t ^ "`") + let fail_infer at construct = fail at ("cannot infer type of " ^ construct) @@ -910,9 +919,10 @@ and typ_rep env t : Il.typ = match expand env t with | Il.VarT _ as t' -> (match expand_def env (t' $ t.at) with - | Il.VariantT [_, (_, t1, _), _], NoDots -> t1 + | Il.VariantT [_, (_, t1, _), _], NoDots -> typ_rep env t1 | _ -> t' $ t.at - ) + ) + | Il.TupT [_, t1] -> typ_rep env t1 | t' -> t' $ t.at and elab_typfield env tid at (tf : typfield) : Il.typfield = @@ -1512,18 +1522,16 @@ and elab_expfields env tid (efs : expfield list) (tfs : Il.typfield list) (t0 : match efs, tfs with | [], [] -> Ok ([], []) | (atom1, e)::efs2, (atom2, (qsF, tF, prems), _)::tfs2 when atom1.it = atom2.it -> - let not = Mixop.(Seq [Atom atom2; Arg tF]) in - let* qs1, es', s = elab_exp_notation' env tid e not in + let* qs1, e' = elab_exp env e tF in let* qs2, efs2' = elab_expfields env tid efs2 tfs2 t0 at in - let e' = (if prems = [] then tup_exp' else tup_exp_bind') es' e.at in - let as' = Il.Subst.subst_args s (il_args_of_params qsF) in + let e' = if prems = [] then e' else tup_exp_bind' [e'] e.at in + let as' = il_args_of_params qsF in Ok (qs1 @ qs2, (elab_atom atom1 tid, as', e') :: efs2') | _, (atom, (_qs, t, prems), _)::tfs2 -> let atom' = string_of_atom atom in let* qs1, e1' = cast_empty ("omitted record field `" ^ atom' ^ "`") env t at in - let e' = (if prems = [] then tup_exp' else tup_exp_bind') [e1'] at in + let e' = if prems = [] then e1' else tup_exp_bind' [e1'] at in let* qs2, efs2' = elab_expfields env tid efs tfs2 t0 at in -(*TODO*) Ok (qs1 @ qs2, (elab_atom atom tid, [], e') :: efs2') | (atom, e)::_, [] -> fail_atom e.at atom t0 "undefined or misplaced record field" @@ -1703,11 +1711,12 @@ and elab_exp_variant env tid (e : exp) (tcs : Il.typcase list) t at : (Il.quant | AtomE atom | InfixE (_, atom, _) | BrackE (atom, _, _) -> Ok atom - | SeqE (e1::_) -> head e1 + | SeqE (e1::es) -> + (match head e1 with Ok _ as ok -> ok | _ -> head (SeqE es $ e.at)) | _ -> fail_typ env at "expression" t in let* atom = head e in - let* mixop, (qsC, tC, _prems), _ = attempt (find_case_sub tcs atom atom.at) t in + let* mixop, (qsC, tC, _prems), _ = attempt (find_case_atom tcs atom atom.at) t in let* xtsC = as_tup_typ "tuple" env Check tC e.at in let not = Mixop.apply mixop (List.map snd xtsC) in let* qs, es', s = elab_exp_notation' env tid e not in @@ -1805,22 +1814,6 @@ and cast_exp' phrase env (e' : Il.exp) t1 t2 : (Il.quant list * Il.exp') attempt | Il.TupT [], Il.VarT _ when is_empty_notation_typ env t2' -> Ok ([], e'.it) - | IterT (t11, Opt), IterT (t21, List) -> - choice env [ - (fun env -> - let t1' = Il.IterT (t11, Il.List) $ e'.at in - let e'' = Il.LiftE e' $$ e'.at % t1' in - cast_exp' phrase env e'' t1' t2 - ); - (fun env -> - let* qs, e'' = cast_exp phrase env e' t1 t21 in - Ok (qs, Il.ListE [e'']) - ); - ] - | _, IterT (t21, (List | List1)) -> - let* qs, e'' = cast_exp phrase env e' t1 t21 in - Ok (qs, Il.ListE [e'']) - | Il.VarT _, Il.VarT _ -> (match expand_def env t1', expand_def env t2' with | (Il.VariantT [mixop1, (qs1, tC1, _), _], NoDots), @@ -1863,7 +1856,35 @@ and cast_exp' phrase env (e' : Il.exp) t1 t2 : (Il.quant list * Il.exp') attempt | _ -> fail_typ2 env e'.at phrase t1 t2 "" ) - | (Il.VariantT [mixop1, (qs1, tC1, _), _], NoDots), _ -> + | (Il.VariantT tcs1, dots1), (Il.VariantT tcs2, dots2) -> + if dots1 = Dots || dots2 = Dots then + error e'.at "used variant type is only partially defined at this point"; + let* () = + (* Shallow breadth subtyping on variants *) + match + iter_attempt (fun (mixop, (qs1, tC1, _prems1), _) -> + let* _, (qs2, tC2, _prems2), _ = + attempt (find_case tcs2 mixop t1.at) t2 in + (* TODO(2, rossberg): this should take alpha-equivalence into account *) + if Il.Eq.(eq_list eq_param qs1 qs2) && equiv_typ env tC1 tC2 then + Ok () + else + fail_mixop e'.at mixop t1 "type mismatch for case" + ) tcs1 + with + | Ok () -> Ok () + | Fail (Trace (_, msg, _) :: _) -> fail_typ2 env e'.at phrase t1 t2 (", " ^ msg) + | Fail [] -> assert false + in + Ok ([], Il.SubE (e', t1', t2')) + + | _, _ -> + fail_typ2 env e'.at phrase t1 t2 "" + ) + + | Il.VarT _, _ -> + (match expand_def env t1' with + | Il.VariantT [mixop1, (qs1, tC1, _), _], NoDots -> choice env [ (fun env -> (* A ConT can always be cast to a (singleton) iteration *) @@ -1902,7 +1923,13 @@ and cast_exp' phrase env (e' : Il.exp) t1 t2 : (Il.quant list * Il.exp') attempt ); ] - | _, (Il.VariantT [mixop2, (qs2, tC2, _), _], NoDots) -> + | _ -> + fail_typ2 env e'.at phrase t1 t2 "" + ) + + | _, Il.VarT _ -> + (match expand_def env t2' with + | Il.VariantT [mixop2, (qs2, tC2, _), _], NoDots -> (* A ConT payload can be cast to the ConT *) let qs2', s2 = Il.Fresh.refresh_quants qs2 in let tC2' = Il.Subst.subst_typ s2 tC2 in @@ -1914,37 +1941,26 @@ and cast_exp' phrase env (e' : Il.exp) t1 t2 : (Il.quant list * Il.exp') attempt | _ -> fail_typ2 env e'.at phrase t1 t2 "" ) - | (Il.VariantT tcs1, dots1), (Il.VariantT tcs2, dots2) -> - if dots1 = Dots || dots2 = Dots then - error e'.at "used variant type is only partially defined at this point"; - let* () = - (* Shallow breadth subtyping on variants *) - match - iter_attempt (fun (mixop1, (qs1, tC1, _prems1), _) -> - match Mixop.head mixop1 with - | None -> fail_silent - | Some atom -> - let* mixop2, (qs2, tC2, _prems2), _ = - attempt (find_case tcs2 atom t1.at) t2 in - (* TODO(2, rossberg): this should take alpha-equivalence into account *) - if Mixop.eq mixop1 mixop2 - && Il.Eq.(eq_list eq_param qs1 qs2) - && equiv_typ env tC1 tC2 then - Ok () - else - fail_atom e'.at atom t1 "type mismatch for case" - ) tcs1 - with - | Ok () -> Ok () - | Fail (Trace (_, msg, _) :: _) -> fail_typ2 env e'.at phrase t1 t2 (", " ^ msg) - | Fail [] -> assert false - in - Ok ([], Il.SubE (e', t1', t2')) - - | _, _ -> + | _ -> fail_typ2 env e'.at phrase t1 t2 "" ) + | Il.IterT (t11, Opt), Il.IterT (t21, List) -> + choice env [ + (fun env -> + let t1' = Il.IterT (t11, Il.List) $ e'.at in + let e'' = Il.LiftE e' $$ e'.at % t1' in + cast_exp' phrase env e'' t1' t2 + ); + (fun env -> + let* qs, e'' = cast_exp phrase env e' t1 t21 in + Ok (qs, Il.ListE [e'']) + ); + ] + | _, Il.IterT (t21, (List | List1)) -> + let* qs, e'' = cast_exp phrase env e' t1 t21 in + Ok (qs, Il.ListE [e'']) + | _, _ -> fail_typ2 env e'.at phrase t1 t2 "" @@ -2580,6 +2596,9 @@ and elab_args' in_lhs env (as_ : arg list) (ps : Il.param list) qs as' s at : Il | [], [] -> qs, List.concat (List.rev as'), s | a::_, [] -> error a.at "too many arguments" | [], _::_ -> error at "too few arguments" + | _, {it = Il.TypP _; at; _}::ps1 when at = Source.no_region -> + (* Implicitly inserted type parameter *) + elab_args' in_lhs env as_ ps1 qs as' s at | a::as1, p::ps1 -> let qs', a', s' = elab_arg in_lhs env a p s in elab_args' in_lhs env as1 ps1 (qs @ qs') (a'::as') s' at @@ -2635,13 +2654,15 @@ and elab_param env (p : param) : Il.param list = error_id x "invalid identifer suffix in binding position"; env'.typs <- bind "syntax type" env.typs x ([], Opaque); env.typs <- bind "syntax type" env.typs x ([], Opaque); - env.gvars <- bind "variable" env.gvars (strip_var_sub x) (Il.VarT (x, []) $ x.at); - (Il.TypP x $ x.at) :: ps' + env.gvars <- bind "variable" env.gvars (strip_var_sub x) + (Il.VarT (x, []) $ x.at); + (* Mark as implicit type parameter via empty region. *) + (Il.TypP x $ Source.no_region) :: ps' ) ) free.typid [] in let t' = elab_typ env' t in - env.grams <- bind "grammar" env.grams x ([], t', None, []); + env.grams <- bind "grammar" env.grams x ([], t', [], None); ps_implicit' @ [Il.GramP (x, ps', t') $ p.at] | DefP (x, ps, t) -> let env' = local_env env in @@ -2745,7 +2766,7 @@ let infer_gramdef env (d : def) = let env' = local_env env in let ps' = elab_params env' ps in let t' = elab_typ env' t in - env.grams <- bind "grammar" env.grams x1 (ps', t', None, []); + env.grams <- bind "grammar" env.grams x1 (ps', t', [], None); ) | _ -> () @@ -2847,7 +2868,7 @@ let rec elab_def env (d : def) : Il.def list = let xprods2' = List.map (fun pr -> x2, pr) (elab_gram env' gram t') in let dims = Dim.check_def d in infer_no_quants env' dims d; - let ps1', t1', dots_opt, xprods1' = find "grammar" env.grams x1 in + let ps1', t1', xprods1', dots_opt = find "grammar" env.grams x1 in let dots1, _, dots2 = gram.it in let xprods' = match dots_opt with @@ -2867,7 +2888,7 @@ let rec elab_def env (d : def) : Il.def list = error_typ2 env d.at "grammar" t1' t' " of previous fragment"; xprods1' @ xprods2' in - env.grams <- rebind "grammar" env.grams x1 (ps', t', Some dots2, xprods'); + env.grams <- rebind "grammar" env.grams x1 (ps', t', xprods', Some dots2); (* Only add last fragment to IL defs, so that populate finds it only once *) (if dots2 = Dots then [] else [Il.GramD (x1, ps', t', []) $ d.at]) @ elab_hintdef env (GramH (x1, x2, hints) $ d.at) @@ -2950,8 +2971,8 @@ let check_dots env = error_id (x $ at) "no defined cases for syntax type family" | Defined _ | Family _ -> () ) env.typs; - Map.iter (fun x (at, (_ps, _t, gram_opt, _prods')) -> - match gram_opt with + Map.iter (fun x (at, (_ps, _t, _prods', dots_opt)) -> + match dots_opt with | None -> assert false | Some Dots -> error_id (x $ at) "missing final extension to grammar" @@ -2982,7 +3003,7 @@ let populate_def env (d' : Il.def) : Il.def = let _, _, clauses' = find "definition" env.defs x in Il.DecD (x, ps', t', List.map snd clauses') $ d'.at | Il.GramD (x, ps', t', []) -> - let _, _, _, prods' = find "grammar" env.grams x in + let _, _, prods', _ = find "grammar" env.grams x in Il.GramD (x, ps', t', List.map snd prods') $ d'.at | Il.HintD hd' -> populate_hint env hd'; d' | _ -> assert false diff --git a/spectec/src/xl/mixop.ml b/spectec/src/xl/mixop.ml index 9bb003295..221fb279a 100644 --- a/spectec/src/xl/mixop.ml +++ b/spectec/src/xl/mixop.ml @@ -1,40 +1,42 @@ open Util -open Util.Source type atom = Atom.atom type 'a mixop = | Arg of 'a - | Seq of 'a mixop list | Atom of atom | Brack of atom * 'a mixop * atom | Infix of 'a mixop * atom * 'a mixop + | Seq of 'a mixop list let rec map f mixop = match mixop with | Arg x -> Arg (f x) - | Seq mixops -> Seq (List.map (map f) mixops) | Atom at -> Atom at | Brack (at1, mixop, at2) -> Brack (at1, map f mixop, at2) - | Infix (mixop1, at, mixop2) -> Infix (map f mixop1, at, map f mixop2) + | Infix (mixop1, at, mixop2) -> + let mixop1' = map f mixop1 in + let mixop2' = map f mixop2 in + Infix (mixop1', at, mixop2') + | Seq mixops -> Seq (List.map (map f) mixops) let rec fold f x mixop = match mixop with | Arg y -> f x y - | Seq mixops -> List.fold_left (fold f) x mixops | Atom _ -> x | Brack (_, mixop, _) -> fold f x mixop | Infix (mixop1, _, mixop2) -> fold f (fold f x mixop1) mixop2 + | Seq mixops -> List.fold_left (fold f) x mixops let rec map_atoms f mixop = match mixop with | Arg x -> Arg x - | Seq mixops -> Seq (List.map (map_atoms f) mixops) | Atom at -> Atom (f at) | Brack (at1, mixop, at2) -> Brack (f at1, map_atoms f mixop, f at2) | Infix (mixop1, at, mixop2) -> Infix (map_atoms f mixop1, f at, map_atoms f mixop2) + | Seq mixops -> Seq (List.map (map_atoms f) mixops) let arity mixop = fold (fun n _ -> n + 1) 0 mixop @@ -54,15 +56,18 @@ let (++) atomss1 atomss2 = let rec head = function | Arg _ | Seq [] -> None - | Seq (mixop::_) -> head mixop | Atom atom | Brack (atom, _, _) | Infix (_, atom, _) -> Some atom + | Seq (mixop::mixops) -> + match head mixop with + | None -> head (Seq mixops) + | some -> some let rec flatten = function | Arg _ -> [[]; []] - | Seq mixops -> List.fold_left (++) [[]] (List.map flatten mixops) | Atom atom -> [[atom]] | Brack (l, mixop, r) -> [[l]] ++ flatten mixop ++ [[r]] | Infix (mixop1, atom, mixop2) -> flatten mixop1 ++ [[atom]] ++ flatten mixop2 + | Seq mixops -> List.fold_left (++) [[]] (List.map flatten mixops) let compare mixop1 mixop2 = List.compare (List.compare Atom.compare) (flatten mixop1) (flatten mixop2) @@ -71,11 +76,16 @@ let eq mixop1 mixop2 = compare mixop1 mixop2 = 0 -let to_string' = function - | [{it = Atom.Atom a; _}]::tail when List.for_all ((=) []) tail -> a - | mixop -> - String.concat "%" (List.map ( - fun atoms -> String.concat "" (List.map Atom.to_string atoms)) mixop - ) +let rec to_string_with f s = function + | Arg x -> f x + | Seq mixops -> String.concat s (List.map (to_string_with f s) mixops) + | Atom atom -> Atom.to_string atom + | Brack (l, mixop, r) -> + Atom.to_string l ^ to_string_with f s mixop ^ Atom.to_string r + | Infix (mixop1, atom, mixop2) -> + to_string_with f s mixop1 ^ Atom.to_string atom ^ to_string_with f s mixop2 -let to_string mixop = to_string' (flatten mixop) +let is_arg = function Arg _ -> true | _ -> false +let to_string = function + | Seq (Atom a :: tail) when List.for_all is_arg tail -> Atom.to_string a + | mixop -> to_string_with (Fun.const "%") "" mixop From 87778a250d47d082d0e4e6ce1fd2a5e09380f611 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Wed, 3 Dec 2025 09:31:24 +0100 Subject: [PATCH 006/235] Treat tuple type vars --- spectec/src/frontend/dim.ml | 53 ++++++++++++++++++++++++++++++------ spectec/src/frontend/elab.ml | 6 +++- spectec/src/il/free.ml | 15 +++------- spectec/src/il/free.mli | 1 - spectec/src/il/valid.ml | 5 ++-- 5 files changed, 57 insertions(+), 23 deletions(-) diff --git a/spectec/src/frontend/dim.ml b/spectec/src/frontend/dim.ml index e84288b37..07b982e60 100644 --- a/spectec/src/frontend/dim.ml +++ b/spectec/src/frontend/dim.ml @@ -388,6 +388,39 @@ let rec annot_iter env iter : Il.Ast.iter * (occur * occur) = in ListN (e', id_opt), (occur1, occur2) +and annot_typ env t : Il.Ast.typ * occur = + Il.Debug.(log "il.annot_typ" + (fun _ -> fmt "%s" (il_typ t)) + (fun (t', occur') -> fmt "%s %s" (il_typ t') (il_occur occur')) + ) @@ fun _ -> + let it, occur = + match t.it with + | VarT (x, as1) -> + let as1', occurs = List.split (List.map (annot_arg env) as1) in + VarT (x, as1'), List.fold_left union Env.empty occurs + | BoolT | NumT _ | TextT -> + t.it, Env.empty + | TupT xts -> + let xts', occurs = List.split (List.map (annot_typbind env) xts) in + TupT xts', List.fold_left union Env.empty occurs + | IterT (t, iter) -> + let t', occur1 = annot_typ env t in + let iter', (occur2, occur3) = annot_iter env iter in + assert (occur1 = Env.empty); + assert (occur3 = Env.empty); + IterT (t', iter'), occur2 + in {t with it}, occur + +and annot_typbind env (x, t) : (Il.Ast.id * Il.Ast.typ) * occur = + let occur1 = + if x.it <> "_" && Env.mem x.it env then + Env.singleton x.it (t, Env.find x.it env) + else + Env.empty + in + let t', occur2 = annot_typ env t in + (x, t'), union occur1 occur2 + and annot_exp env e : Il.Ast.exp * occur = Il.Debug.(log "il.annot_exp" (fun _ -> fmt "%s" (il_exp e)) @@ -395,8 +428,8 @@ and annot_exp env e : Il.Ast.exp * occur = ) @@ fun _ -> let it, occur = match e.it with - | VarE id when id.it <> "_" && Env.mem id.it env -> - VarE id, Env.singleton id.it (e.note, Env.find id.it env) + | VarE x when x.it <> "_" && Env.mem x.it env -> + VarE x, Env.singleton x.it (e.note, Env.find x.it env) | VarE _ | BoolE _ | NumE _ | TextE _ -> e.it, Env.empty | UnE (op, nt, e1) -> @@ -491,7 +524,9 @@ and annot_exp env e : Il.Ast.exp * occur = CvtE (e1', nt1, nt2), occur1 | SubE (e1, t1, t2) -> let e1', occur1 = annot_exp env e1 in - SubE (e1', t1, t2), occur1 + let t1', occur2 = annot_typ env t1 in + let t2', occur3 = annot_typ env t2 in + SubE (e1', t1', t2'), union occur1 (union occur2 occur3) in {e with it}, occur and annot_expfield env (atom, as_, e) : Il.Ast.expfield * occur = @@ -550,9 +585,9 @@ and annot_sym env g : Il.Ast.sym * occur = Il.Debug.(log_in "il.annot_sym" (fun _ -> il_sym g)); let it, occur = match g.it with - | VarG (id, as1) -> + | VarG (x, as1) -> let as1', occurs = List.split (List.map (annot_arg env) as1) in - VarG (id, as1'), List.fold_left union Env.empty occurs + VarG (x, as1'), List.fold_left union Env.empty occurs | NumG _ | TextG _ | EpsG -> g.it, Env.empty | SeqG gs -> @@ -581,7 +616,9 @@ and annot_arg env a : Il.Ast.arg * occur = | ExpA e -> let e', occur1 = annot_exp env e in ExpA e', occur1 - | TypA t -> TypA t, Env.empty + | TypA t -> + let t', occur1 = annot_typ env t in + TypA t', occur1 | DefA id -> DefA id, Env.empty | GramA g -> let g', occur1 = annot_sym env g in @@ -591,9 +628,9 @@ and annot_arg env a : Il.Ast.arg * occur = and annot_prem env prem : Il.Ast.prem * occur = let it, occur = match prem.it with - | RulePr (id, op, e) -> + | RulePr (x, op, e) -> let e', occur = annot_exp env e in - RulePr (id, op, e'), occur + RulePr (x, op, e'), occur | IfPr e -> let e', occur = annot_exp env e in IfPr e', occur diff --git a/spectec/src/frontend/elab.ml b/spectec/src/frontend/elab.ml index 9b6839f84..7421f6cb1 100644 --- a/spectec/src/frontend/elab.ml +++ b/spectec/src/frontend/elab.ml @@ -77,7 +77,11 @@ let tup_typ_bind' es' ts' at = | Il.VarE x -> x, s | _ -> let x' = Il.Fresh.fresh_varid "pat" $ e'.at in - x', decompose e' (Il.VarE x' $$ e'.at % e'.note) s + let s' = decompose e' (Il.VarE x' $$ e'.at % e'.note) Il.Subst.empty in + if s' = Il.Subst.empty then + "_" $ e'.at, s + else + x', Il.Subst.union s s' in let xts'' = combine es' ts' s' in (x', Il.Subst.subst_typ s t')::xts'' diff --git a/spectec/src/il/free.ml b/spectec/src/il/free.ml index b05015710..51951f176 100644 --- a/spectec/src/il/free.ml +++ b/spectec/src/il/free.ml @@ -30,15 +30,8 @@ and free_typ t = | TupT ets -> free_typbinds ets | IterT (t1, iter) -> free_typ t1 + free_iter iter -and bound_typ t = - match t.it with - | VarT _ | BoolT | NumT _ | TextT -> empty - | TupT ets -> bound_list bound_typbind ets - | IterT (t1, _iter) -> bound_typ t1 - -and free_typbind (_x, t) = free_typ t -and bound_typbind (x, _t) = free_varid x -and free_typbinds xts = free_list_dep free_typbind bound_typbind xts +and free_typbind (x, t) = bound_varid x + free_typ t +and free_typbinds xts = free_list free_typbind xts and free_deftyp dt = match dt.it with @@ -47,9 +40,9 @@ and free_deftyp dt = | VariantT tcs -> free_list free_typcase tcs and free_typfield (_, (qs, t, prems), _) = - free_quants qs + (free_typ t + (free_prems prems - bound_typ t) - bound_quants qs) + free_quants qs + (free_typ t + free_prems prems - bound_quants qs) and free_typcase (_, (qs, t, prems), _) = - free_quants qs + (free_typ t + (free_prems prems - bound_typ t) - bound_quants qs) + free_quants qs + (free_typ t + free_prems prems - bound_quants qs) (* Expressions *) diff --git a/spectec/src/il/free.mli b/spectec/src/il/free.mli index 1e75e6cc4..4adba6f06 100644 --- a/spectec/src/il/free.mli +++ b/spectec/src/il/free.mli @@ -21,7 +21,6 @@ val free_args : arg list -> sets val free_quants : param list -> sets val free_params : param list -> sets -val bound_typbind : id * typ -> sets val bound_quant : quant -> sets val bound_param : param -> sets val bound_def : def -> sets diff --git a/spectec/src/il/valid.ml b/spectec/src/il/valid.ml index efffdfffe..54615c6c7 100644 --- a/spectec/src/il/valid.ml +++ b/spectec/src/il/valid.ml @@ -203,8 +203,9 @@ and valid_typ env t = and valid_typbind env (x, t) = valid_typ env t; - let t' = Env.find_var env x in - equiv_typ env t' t x.at + if x.it <> "_" then + let t' = Env.find_var env x in + equiv_typ env t' t x.at and valid_deftyp envr dt = match dt.it with From 9e50b246f81cce01514a4ae93608f051955c6864 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Wed, 3 Dec 2025 14:41:07 +0100 Subject: [PATCH 007/235] Do dimension analysis on IL --- spectec/src/frontend/dim.ml | 324 +++++++++++++++++++---------------- spectec/src/frontend/dim.mli | 29 ++-- spectec/src/frontend/elab.ml | 175 ++++++++++--------- 3 files changed, 283 insertions(+), 245 deletions(-) diff --git a/spectec/src/frontend/dim.ml b/spectec/src/frontend/dim.ml index 07b982e60..47aa84601 100644 --- a/spectec/src/frontend/dim.ml +++ b/spectec/src/frontend/dim.ml @@ -1,8 +1,7 @@ open Util open Source -open El +open Il open Ast -open Convert (* Errors *) @@ -113,76 +112,64 @@ let rec check_iter env ctx iter = and check_typ env ctx t = match t.it with - | VarT (id, args) -> - check_typid env ctx (Convert.strip_var_suffix id); - check_varid env ctx `Impl id; + | VarT (x, args) -> + check_typid env ctx x; List.iter (check_arg env ctx) args | BoolT | NumT _ - | TextT -> - check_varid env ctx `Impl (Convert.varid_of_typ t) - | AtomT _ -> () - | ParenT t1 - | BrackT (_, t1, _) -> check_typ env ctx t1 - | TupT ts - | SeqT ts -> List.iter (check_typ env ctx) ts + | TextT -> () + | TupT xts -> List.iter (check_typbind env ctx) xts | IterT (t1, iter) -> check_iter env ctx iter; check_typ env (strip_index iter::ctx) t1 - | StrT (_, ts, tfs, _) -> - iter_nl_list (check_typ env ctx) ts; - iter_nl_list (fun (_, (tI, prems), _) -> + +and check_typbind env ctx (x, t) = + check_varid env ctx `Impl x; + check_typ env ctx t + +and check_deftyp env ctx dt = + match dt.it with + | AliasT t -> + check_typ env ctx t + | StructT tfs -> + List.iter (fun (_, (qs, tI, prems), _) -> let env' = ref Env.empty in + assert (qs = []); check_typ env' ctx tI; - iter_nl_list (check_prem env' ctx) prems + List.iter (check_prem env' ctx) prems ) tfs - | CaseT (_, ts, tcs, _) -> - iter_nl_list (check_typ env ctx) ts; - iter_nl_list (fun (_, (tI, prems), _) -> + | VariantT tcs -> + List.iter (fun (_, (qs, tI, prems), _) -> let env' = ref Env.empty in + assert (qs = []); check_typ env' ctx tI; - iter_nl_list (check_prem env' ctx) prems + List.iter (check_prem env' ctx) prems ) tcs - | ConT ((t1, prems), _) -> - let env' = ref Env.empty in - check_typ env' ctx t1; - iter_nl_list (check_prem env' ctx) prems - | RangeT tes -> - iter_nl_list (fun (eI1, eoI2) -> - let env' = ref Env.empty in - check_exp env' ctx eI1; - Option.iter (check_exp env' ctx) eoI2; - ) tes - | InfixT (t1, _, t2) -> - check_typ env ctx t1; - check_typ env ctx t2 + +and check_iterexp env ctx (iter, xes) = + check_iter env ctx iter; + assert (xes = []) and check_exp env ctx e = match e.it with - | VarE (id, args) -> - check_varid env ctx `Expl id; - List.iter (check_arg env ctx) args - | AtomE _ + | VarE x -> + check_varid env ctx `Expl x | BoolE _ | NumE _ - | TextE _ - | SizeE _ - | EpsE -> () - | CvtE (e1, _) - | UnE (_, e1) - | DotE (e1, _) + | TextE _ -> () + | CvtE (e1, _, _) + | UnE (_, _, e1) | LenE e1 - | ParenE e1 - | BrackE (_, e1, _) - | TypE (e1, _) - | ArithE e1 -> check_exp env ctx e1 - | BinE (e1, _, e2) - | CmpE (e1, _, e2) + | ProjE (e1, _) + | TheE e1 + | LiftE e1 -> + check_exp env ctx e1 + | BinE (_, _, e1, e2) + | CmpE (_, _, e1, e2) | IdxE (e1, e2) - | CommaE (e1, e2) | CatE (e1, e2) | MemE (e1, e2) - | InfixE (e1, _, e2) -> + | CompE (e1, e2) -> check_exp env ctx e1; check_exp env ctx e2 | SliceE (e1, e2, e3) -> @@ -194,18 +181,31 @@ and check_exp env ctx e = check_exp env ctx e1; check_path env ctx p; check_exp env ctx e2 - | SeqE es + | OptE eo -> + Option.iter (check_exp env ctx) eo | ListE es - | TupE es -> List.iter (check_exp env ctx) es - | StrE efs -> iter_nl_list (fun (_, eI) -> check_exp env ctx eI) efs - | CallE (_, args) -> List.iter (check_arg env ctx) args - | IterE (e1, iter) -> - check_iter env ctx iter; - check_exp env (strip_index iter::ctx) e1 - | HoleE _ - | FuseE _ - | UnparenE _ - | LatexE _ -> assert false + | TupE es -> + List.iter (check_exp env ctx) es + | StrE efs -> + List.iter (check_expfield env ctx) efs + | DotE (e1, _, as_) + | CaseE (_, as_, e1) + | UncaseE (e1, _, as_) -> + check_exp env ctx e1; + List.iter (check_arg env ctx) as_ + | CallE (_, as_) -> + List.iter (check_arg env ctx) as_ + | IterE (e1, ite) -> + check_iterexp env ctx ite; + check_exp env (strip_index (fst ite)::ctx) e1 + | SubE (e1, t1, t2) -> + check_exp env ctx e1; + check_typ env ctx t1; + check_typ env ctx t2 + +and check_expfield env ctx (_, as_, e) = + List.iter (check_arg env ctx) as_; + check_exp env ctx e and check_path env ctx p = match p.it with @@ -217,142 +217,155 @@ and check_path env ctx p = check_path env ctx p1; check_exp env ctx e1; check_exp env ctx e2 - | DotP (p1, _) -> - check_path env ctx p1 + | DotP (p1, _, as_) -> + check_path env ctx p1; + List.iter (check_arg env ctx) as_ and check_sym env ctx g = match g.it with - | VarG (id, args) -> - check_gramid env ctx id; + | VarG (x, args) -> + check_gramid env ctx x; List.iter (check_arg env ctx) args | NumG _ | TextG _ | EpsG -> () | SeqG gs - | AltG gs -> iter_nl_list (check_sym env ctx) gs + | AltG gs -> + List.iter (check_sym env ctx) gs | RangeG (g1, g2) -> check_sym env ctx g1; check_sym env ctx g2 - | ParenG g1 -> - check_sym env ctx g1 - | TupG gs -> List.iter (check_sym env ctx) gs - | ArithG e -> check_exp env ctx e | AttrG (e, g1) -> check_exp env ctx e; check_sym env ctx g1 - | IterG (g1, iter) -> - check_iter env ctx iter; - check_sym env (strip_index iter::ctx) g1 - | FuseG _ - | UnparenG _ -> assert false + | IterG (g1, ite) -> + check_iterexp env ctx ite; + check_sym env (strip_index (fst ite)::ctx) g1 -and check_prod env ctx prod = - match prod.it with - | SynthP (g, e, prems) -> - check_sym env ctx g; - check_exp env ctx e; - iter_nl_list (check_prem env ctx) prems - | RangeP (g1, e1, g2, e2) -> - check_sym env ctx g1; - check_exp env ctx e1; - check_sym env ctx g2; - check_exp env ctx e2 - | EquivP (g1, g2, prems) -> - check_sym env ctx g1; - check_sym env ctx g2; - iter_nl_list (check_prem env ctx) prems - -and check_gram env ctx gram = - let (_dots1, prods, _dots2) = gram.it in - iter_nl_list (check_prod env ctx) prods and check_prem env ctx prem = match prem.it with - | VarPr _ -> () (* skip, since var decls need not be under iterations *) - | RulePr (_id, e) -> check_exp env ctx e + | RulePr (_x, _mixop, e) -> check_exp env ctx e | IfPr e -> check_exp env ctx e | ElsePr -> () - | IterPr (prem', iter) -> - check_iter env ctx iter; - check_prem env (strip_index iter::ctx) prem' + | LetPr (e1, e2, _xs) -> + check_exp env ctx e1; + check_exp env ctx e2 + | IterPr (prem', ite) -> + check_iterexp env ctx ite; + check_prem env (strip_index (fst ite)::ctx) prem' and check_arg env ctx a = - match !(a.it) with + match a.it with | ExpA e -> check_exp env ctx e | TypA t -> check_typ env ctx t | GramA g -> check_sym env ctx g - | DefA _id -> () + | DefA _x -> () and check_param env ctx p = match p.it with - | ExpP (id, t) -> - check_varid env ctx `Expl id; + | ExpP (x, t) -> + check_varid env ctx `Expl x; check_typ env ctx t - | TypP id -> - check_typid env ctx id; - check_varid env ctx `Impl id - | GramP (id, ps, t) -> - check_gramid env ctx id; + | TypP x -> + check_typid env ctx x; + check_varid env ctx `Impl x + | GramP (x, ps, t) -> + check_gramid env ctx x; List.iter (check_param env ctx) ps; check_typ env ctx t - | DefP (_id, ps, t) -> + | DefP (_x, ps, t) -> List.iter (check_param env ctx) ps; check_typ env ctx t -let check_def d : env = +let rec check_def d : env = let env = new_env [] in match d.it with - | FamD (_id, ps, _hints) -> + | TypD (_x, ps, insts) -> List.iter (check_param env []) ps; + List.iter (check_inst env) insts; check_env env - | TypD (_id1, _id2, args, t, _hints) -> - List.iter (check_arg env []) args; + | RelD (_x, _mixop, t, rules) -> check_typ env [] t; + List.iter (check_rule env) rules; check_env env - | GramD (_id1, _id2, ps, t, gram, _hints) -> + | DecD (_x, ps, t, clauses) -> List.iter (check_param env []) ps; check_typ env [] t; - check_gram env [] gram; - check_env env - | RelD (_id, t, _hints) -> - check_typ env [] t; - check_env env - | RuleD (_id1, _id2, e, prems) -> - check_exp env [] e; - iter_nl_list (check_prem env []) prems; - check_env env - | VarD (_id, t, _hints) -> - check_typ env [] t; + List.iter (check_clause env) clauses; check_env env - | DecD (_id, ps, t, _hints) -> + | GramD (_x, ps, t, prods) -> List.iter (check_param env []) ps; check_typ env [] t; + List.iter (check_prod env) prods; check_env env - | DefD (_id, args, e, prems) -> - List.iter (check_arg env []) args; - check_exp env [] e; - iter_nl_list (check_prem env []) prems; + | RecD _ds -> + assert false + | HintD _ -> check_env env - | SepD | HintD _ -> Env.empty +and check_inst env inst = + match inst.it with + | InstD (qs, as_, dt) -> + assert (qs = []); + List.iter (check_arg env []) as_; + check_deftyp env [] dt + +and check_rule env rule = + match rule.it with + | RuleD (_x, qs, _mixop, e, prems) -> + assert (qs = []); + check_exp env [] e; + List.iter (check_prem env []) prems + +and check_clause env clause = + match clause.it with + | DefD (qs, as_, e, prems) -> + assert (qs = []); + List.iter (check_arg env []) as_; + check_exp env [] e; + List.iter (check_prem env []) prems + +and check_prod env prod = + match prod.it with + | ProdD (qs, g, e, prems) -> + assert (qs = []); + check_sym env [] g; + check_exp env [] e; + List.iter (check_prem env []) prems -let check_prod outer prod : env = + +(* External interface *) + +let check_inst outer as_ dt : env = let env = new_env outer in - check_prod env [] prod; + List.iter (check_arg env []) as_; + check_deftyp env [] dt; localize outer (check_env env) -let check_typdef outer t prems : env = +let check_prod outer g e prems : env = let env = new_env outer in - check_typ env [] t; - iter_nl_list (check_prem env []) prems; + check_sym env [] g; + check_exp env [] e; + List.iter (check_prem env []) prems; localize outer (check_env env) +let check_abbr outer g1 g2 prems : env = + let env = new_env outer in + check_sym env [] g1; + check_sym env [] g2; + List.iter (check_prem env []) prems; + localize outer (check_env env) -(* Annotating iterations *) +let check_deftyp outer ts prems : env = + let env = new_env outer in + List.iter (check_typ env []) ts; + List.iter (check_prem env []) prems; + localize outer (check_env env) -open Il.Ast -type env' = iter list Env.t +(* Annotating iterations *) + type occur = (typ * iter list) Env.t let union = Env.union (fun _ (_, ctx1 as occ1) (_, ctx2 as occ2) -> @@ -371,7 +384,7 @@ let rec annot_varid id = function | [] -> id | iter::iters -> annot_varid (annot_varid' id.it iter $ id.at) iters -let rec annot_iter env iter : Il.Ast.iter * (occur * occur) = +let rec annot_iter env iter : iter * (occur * occur) = Il.Debug.(log "il.annot_iter" (fun _ -> fmt "%s" (il_iter iter)) (fun (iter', (occur1, occur2)) -> fmt "%s %s %s" (il_iter iter') @@ -388,7 +401,7 @@ let rec annot_iter env iter : Il.Ast.iter * (occur * occur) = in ListN (e', id_opt), (occur1, occur2) -and annot_typ env t : Il.Ast.typ * occur = +and annot_typ env t : typ * occur = Il.Debug.(log "il.annot_typ" (fun _ -> fmt "%s" (il_typ t)) (fun (t', occur') -> fmt "%s %s" (il_typ t') (il_occur occur')) @@ -411,7 +424,7 @@ and annot_typ env t : Il.Ast.typ * occur = IterT (t', iter'), occur2 in {t with it}, occur -and annot_typbind env (x, t) : (Il.Ast.id * Il.Ast.typ) * occur = +and annot_typbind env (x, t) : (id * typ) * occur = let occur1 = if x.it <> "_" && Env.mem x.it env then Env.singleton x.it (t, Env.find x.it env) @@ -421,7 +434,8 @@ and annot_typbind env (x, t) : (Il.Ast.id * Il.Ast.typ) * occur = let t', occur2 = annot_typ env t in (x, t'), union occur1 occur2 -and annot_exp env e : Il.Ast.exp * occur = + +and annot_exp env e : exp * occur = Il.Debug.(log "il.annot_exp" (fun _ -> fmt "%s" (il_exp e)) (fun (e', occur') -> fmt "%s %s" (il_exp e') (il_occur occur')) @@ -529,12 +543,12 @@ and annot_exp env e : Il.Ast.exp * occur = SubE (e1', t1', t2'), union occur1 (union occur2 occur3) in {e with it}, occur -and annot_expfield env (atom, as_, e) : Il.Ast.expfield * occur = +and annot_expfield env (atom, as_, e) : expfield * occur = let as', occurs = List.split (List.map (annot_arg env) as_) in let e', occur = annot_exp env e in (atom, as', e'), List.fold_left union occur occurs -and annot_path env p : Il.Ast.path * occur = +and annot_path env p : path * occur = let it, occur = match p.it with | RootP -> RootP, Env.empty @@ -553,7 +567,7 @@ and annot_path env p : Il.Ast.path * occur = DotP (p1', atom, as'), List.fold_left union occur1 occurs in {p with it}, occur -and annot_iterexp env occur1 (iter, xes) at : Il.Ast.iterexp * occur = +and annot_iterexp env occur1 (iter, xes) at : iterexp * occur = Il.Debug.(log "il.annot_iterexp" (fun _ -> fmt "%s %s" (il_iter iter) (il_occur occur1)) (fun ((iter', _), occur') -> fmt "%s %s" (il_iter iter') (il_occur occur')) @@ -581,7 +595,7 @@ and annot_iterexp env occur1 (iter, xes) at : Il.Ast.iterexp * occur = List.map (fun (x, (x', (t, _))) -> x $ at, VarE (x' $ at) $$ at % t) occur1'_l in (iter', xes'), union (Env.of_seq (List.to_seq (List.map snd occur1'_l))) occur2 -and annot_sym env g : Il.Ast.sym * occur = +and annot_sym env g : sym * occur = Il.Debug.(log_in "il.annot_sym" (fun _ -> il_sym g)); let it, occur = match g.it with @@ -610,7 +624,7 @@ and annot_sym env g : Il.Ast.sym * occur = AttrG (e1', g2'), union occur1 occur2 in {g with it}, occur -and annot_arg env a : Il.Ast.arg * occur = +and annot_arg env a : arg * occur = let it, occur = match a.it with | ExpA e -> @@ -625,7 +639,7 @@ and annot_arg env a : Il.Ast.arg * occur = GramA g', occur1 in {a with it}, occur -and annot_prem env prem : Il.Ast.prem * occur = +and annot_prem env prem : prem * occur = let it, occur = match prem.it with | RulePr (x, op, e) -> @@ -646,6 +660,15 @@ and annot_prem env prem : Il.Ast.prem * occur = IterPr (prem1', iter'), occur' in {prem with it}, occur +let annot_inst env inst : inst * occur = + let InstD (qs, as_, dt) = inst.it in + assert (qs = []); + let as', occurs = List.split (List.map (annot_arg env) as_) in + let dt', occur = dt, Env.empty in (* assume dt was already annotated *) + {inst with it = InstD (qs, as', dt')}, List.fold_left union occur occurs + + +(* Top-level entry points *) let annot_top annot_x env x = let x', occurs = annot_x env x in @@ -657,3 +680,4 @@ let annot_exp = annot_top annot_exp let annot_sym = annot_top annot_sym let annot_arg = annot_top annot_arg let annot_prem = annot_top annot_prem +let annot_inst = annot_top annot_inst diff --git a/spectec/src/frontend/dim.mli b/spectec/src/frontend/dim.mli index c21cbae8d..205aee209 100644 --- a/spectec/src/frontend/dim.mli +++ b/spectec/src/frontend/dim.mli @@ -1,18 +1,21 @@ +open Il.Ast + module Env : Map.S with type key = string -type outer = El.Ast.id list -type env = El.Ast.iter list Env.t -type env' = Il.Ast.iter list Env.t +type outer = id list +type env = iter list Env.t -val annot_varid : Il.Ast.id -> Il.Ast.iter list -> Il.Ast.id +val annot_varid : id -> iter list -> id -val check_def : El.Ast.def -> env (* raises Error.Error *) -val check_prod : outer -> El.Ast.prod -> env (* raises Error.Error *) -val check_typdef : outer -> El.Ast.typ -> El.Ast.prem El.Ast.nl_list -> env - (* raises Error.Error *) +val check_def : def -> env (* raises Error.Error *) +val check_inst : outer -> arg list -> deftyp -> env (* raises Error.Error *) +val check_prod : outer -> sym -> exp -> prem list -> env (* raises Error.Error *) +val check_abbr : outer -> sym -> sym -> prem list -> env (* raises Error.Error *) +val check_deftyp : outer -> typ list -> prem list -> env (* raises Error.Error *) -val annot_iter : env' -> Il.Ast.iter -> Il.Ast.iter -val annot_exp : env' -> Il.Ast.exp -> Il.Ast.exp -val annot_sym : env' -> Il.Ast.sym -> Il.Ast.sym -val annot_arg : env' -> Il.Ast.arg -> Il.Ast.arg -val annot_prem : env' -> Il.Ast.prem -> Il.Ast.prem +val annot_iter : env -> iter -> iter +val annot_exp : env -> exp -> exp +val annot_sym : env -> sym -> sym +val annot_arg : env -> arg -> arg +val annot_prem : env -> prem -> prem +val annot_inst : env -> inst -> inst diff --git a/spectec/src/frontend/elab.ml b/spectec/src/frontend/elab.ml index 7421f6cb1..fccc5a264 100644 --- a/spectec/src/frontend/elab.ml +++ b/spectec/src/frontend/elab.ml @@ -933,7 +933,7 @@ and elab_typfield env tid at (tf : typfield) : Il.typfield = let atom, (t, prems), hints = tf in let _mixop, qs, t', prems' = elab_typ_notation' env tid at t prems in let hints' = elab_hints tid "" hints in - let t'' = (* TODO(4, rossberg): remove this hack *) + let t'' = match t'.it with | Il.TupT [(_, t1')] when prems' = [] -> t1' | _ -> t' @@ -1039,12 +1039,13 @@ and elab_typ_notation' env tid at (t : typ) (prems : prem nl_list) : assert (valid_tid tid); let env' = local_env env in let mixop, ts' = elab_typ_notation env' tid t in - let es' = pats'_of_typs ts' in - let dims = Dim.check_typdef (vars env) t prems in - let dims' = Dim.Env.map (List.map (elab_typiter env')) dims in - let es' = List.map (Dim.annot_exp dims') es' in let qss, premss' = List.split (map_filter_nl_list (elab_prem env') prems) in - let prems' = List.map (Dim.annot_prem dims') (List.concat premss') in + let es' = pats'_of_typs ts' in + let prems' = List.concat premss' in + let dims = Dim.check_deftyp (vars env) ts' prems' in + let es' = List.map (Dim.annot_exp dims) es' in + let t' = tup_typ_bind' es' ts' t.at in + let prems' = List.map (Dim.annot_prem dims) prems' in let det = Free.(diff (union (det_typ t) (det_prems prems)) (bound_env env)) in let free = Free.(diff (union (free_typ t) (free_prems prems)) (union det (bound_env env))) in if free <> Free.empty then @@ -1054,11 +1055,11 @@ List.iteri (fun i e -> Printf.printf "[notation] e%d' = %s\n%!" i (Il.Print.stri error at ("premise contains indeterminate variable(s) `" ^ String.concat "`, `" (Free.Set.elements free.varid) ^ "`"); ); - let acc_qs, (module Arg : Iter.Arg) = make_quants_iter_arg env' det dims in - let module Acc = Iter.Make(Arg) in - Acc.typ t; - Acc.prems prems; - mixop, !acc_qs @ List.concat qss, tup_typ_bind' es' ts' t.at, prems' + let acc_qs, (module Arg : Il.Iter.Arg) = make_quants_iter_arg env' det dims in + let module Acc = Il.Iter.Make(Arg) in + Acc.typ t'; + Acc.prems prems'; + mixop, !acc_qs @ List.concat qss, t', prems' and elab_typ_notation env tid (t : typ) : Il.mixop * Il.typ list = Debug.(log_at "el.elab_typ_notation" t.at @@ -2338,10 +2339,7 @@ and elab_prod env (prod : prod) (t : Il.typ) : Il.prod list = | SynthP (g, e, prems) -> let env' = local_env env in env'.pm <- false; - let dims = Dim.check_prod (vars env) prod in - let dims' = Dim.Env.map (List.map (elab_typiter env')) dims in - let qs1, g', _t = checkpoint (infer_sym env' g) in - let g' = Dim.annot_sym dims' g' in + let qs1, g', _t' = checkpoint (infer_sym env' g) in let qs2, e' = checkpoint ( let t_unit = Il.TupT [] $ e.at in @@ -2358,19 +2356,22 @@ and elab_prod env (prod : prod) (t : Il.typ) : Il.prod list = elab_exp env' e t ) in - let e' = Dim.annot_exp dims' e' in let qss3, premss' = List.split (map_filter_nl_list (elab_prem env') prems) in - let prems' = List.map (Dim.annot_prem dims') (List.concat premss') in + let prems' = List.concat premss' in + let dims = Dim.check_prod (vars env) g' e' prems' in + let g' = Dim.annot_sym dims g' in + let e' = Dim.annot_exp dims e' in + let prems' = List.map (Dim.annot_prem dims) prems' in let det = Free.(diff (union (det_sym g) (det_prems prems)) (bound_env env)) in let free = Free.(diff (free_prod prod) (union (det_prod prod) (bound_env env'))) in if free <> Free.empty then error prod.at ("grammar rule contains indeterminate variable(s) `" ^ String.concat "`, `" (Free.Set.elements free.varid) ^ "`"); - let acc_qs, (module Arg : Iter.Arg) = make_quants_iter_arg env' det dims in - let module Acc = Iter.Make(Arg) in - Acc.sym g; - Acc.exp e; - Acc.prems prems; + let acc_qs, (module Arg : Il.Iter.Arg) = make_quants_iter_arg env' det dims in + let module Acc = Il.Iter.Make(Arg) in + Acc.sym g'; + Acc.exp e'; + Acc.prems prems'; let prod' = Il.ProdD (!acc_qs @ qs1 @ qs2 @ List.concat qss3, g', e', prems') $ prod.at in if not env'.pm then [prod'] @@ -2415,24 +2416,24 @@ and elab_prod env (prod : prod) (t : Il.typ) : Il.prod list = | EquivP (g1, g2, prems) -> let env' = local_env env in env'.pm <- false; - let dims = Dim.check_prod (vars env) prod in - let dims' = Dim.Env.map (List.map (elab_typiter env')) dims in - let qs1, g1', _t1 = checkpoint (infer_sym env' g1) in - let g1' = Dim.annot_sym dims' g1' in - let qs2, g2', _t2 = checkpoint (infer_sym env' g2) in - let g2' = Dim.annot_sym dims' g2' in + let qs1, g1', _t1' = checkpoint (infer_sym env' g1) in + let qs2, g2', _t2' = checkpoint (infer_sym env' g2) in let qss3, premss' = List.split (map_filter_nl_list (elab_prem env') prems) in - let prems' = List.map (Dim.annot_prem dims') (List.concat premss') in + let prems' = List.concat premss' in + let dims = Dim.check_abbr (vars env) g1' g2' prems' in + let g1' = Dim.annot_sym dims g1' in + let g2' = Dim.annot_sym dims g2' in + let prems' = List.map (Dim.annot_prem dims) prems' in let det = Free.(diff (union (det_sym g1) (det_prems prems)) (bound_env env)) in let free = Free.(diff (free_prod prod) (union (det_prod prod) (bound_env env'))) in if free <> Free.empty then error prod.at ("grammar rule contains indeterminate variable(s) `" ^ String.concat "`, `" (Free.Set.elements free.varid) ^ "`"); - let acc_qs, (module Arg : Iter.Arg) = make_quants_iter_arg env' det dims in - let module Acc = Iter.Make(Arg) in - Acc.sym g1; - Acc.sym g2; - Acc.prems prems; + let acc_qs, (module Arg : Il.Iter.Arg) = make_quants_iter_arg env' det dims in + let module Acc = Il.Iter.Make(Arg) in + Acc.sym g1'; + Acc.sym g2'; + Acc.prems prems'; ignore (!acc_qs @ qs1 @ qs2 @ List.concat qss3, g1', g2', prems'); [] (* TODO(4, rossberg): translate equiv grammars properly *) (* @@ -2450,10 +2451,10 @@ and elab_gram env (gram : gram) (t : Il.typ) : Il.prod list = (* Definitions *) -and make_quants_iter_arg env free dims : Il.quant list ref * (module Iter.Arg) = +and make_quants_iter_arg env free dims : Il.quant list ref * (module Il.Iter.Arg) = let module Arg = struct - include Iter.Skip + include Il.Iter.Skip let left = ref free let acc = ref [] @@ -2478,7 +2479,7 @@ and make_quants_iter_arg env free dims : Il.quant list ref * (module Iter.Arg) = String.concat ", " ) ^ ", which only occur(s) to its right; try to reorder parameters or premises"); let ctx' = - List.map (function Opt -> Il.Opt | _ -> Il.List) + List.map (function Il.Opt -> Il.Opt | _ -> Il.List) (Dim.Env.find id.it dims) in let t' = @@ -2791,7 +2792,7 @@ let elab_hintdef _env (hd : hintdef) : Il.def list = [] -let infer_quants env env' dims (d : def) : Il.quant list = +let infer_quants env env' dims (d : def) (d' : Il.def) : Il.quant list = Debug.(log_in_at "el.infer_quants" d.at (fun _ -> Map.fold (fun id _ ids -> @@ -2804,13 +2805,13 @@ let infer_quants env env' dims (d : def) : Il.quant list = if free <> Free.empty then error d.at ("definition contains indeterminate variable(s) `" ^ String.concat "`, `" (Free.Set.elements free.varid) ^ "`"); - let acc_qs, (module Arg : Iter.Arg) = make_quants_iter_arg env' det dims in - let module Acc = Iter.Make(Arg) in - Acc.def d; + let acc_qs, (module Arg : Il.Iter.Arg) = make_quants_iter_arg env' det dims in + let module Acc = Il.Iter.Make(Arg) in + Acc.def d'; !acc_qs -let infer_no_quants env dims (d : def) = - let qs = infer_quants env env dims d in +let infer_no_quants env dims (d : def) (d' : Il.def) = + let qs = infer_quants env env dims d d' in assert (qs = []) @@ -2822,21 +2823,23 @@ let rec elab_def env (d : def) : Il.def list = env.pm <- false; let ps' = elab_params (local_env env) ps in if env.pm then error d.at "misplaced +- or -+ operator in syntax type declaration"; - let dims = Dim.check_def d in - infer_no_quants env dims d; + let d' = Il.TypD (x, ps', []) $ d.at in + let dims = Dim.check_def d' in + infer_no_quants env dims d d'; env.typs <- rebind "syntax type" env.typs x (ps', Family []); - [Il.TypD (x, ps', []) $ d.at] - @ elab_hintdef env (TypH (x, "" $ x.at, hints) $ d.at) + [d'] @ elab_hintdef env (TypH (x, "" $ x.at, hints) $ d.at) | TypD (x1, x2, as_, t, hints) -> let env' = local_env env in env'.pm <- false; let ps', k = find "syntax type" env.typs x1 in let qs1, as', _s = elab_args `Lhs env' as_ ps' d.at in let dots1, dt', dots2 = elab_typ_definition env' x1 t in - let dims = Dim.check_def d in - let dims' = Dim.Env.map (List.map (elab_typiter env')) dims in - let qs = infer_quants env env' dims d in - let inst' = Il.InstD (qs @ qs1, List.map (Dim.annot_arg dims') as', dt') $ d.at in + let inst' = Il.InstD ([], as', dt') $ d.at in (* dummy *) + let d' = Il.TypD (x1, ps', [inst']) $ d.at in (* dummy *) + let dims = Dim.check_inst [] as' dt' in + let as' = List.map (Dim.annot_arg dims) as' in + let qs = infer_quants env env' dims d d' in + let inst' = Il.InstD (qs @ qs1, as', dt') $ d.at in let k', last = match k with | (Opaque | Transp) -> @@ -2853,7 +2856,7 @@ let rec elab_def env (d : def) : Il.def list = | Family insts -> if dots1 = Dots || dots2 = Dots then error_id x1 "syntax type family cases are not extensible"; - Family (insts @ [Il.InstD (qs1 @ qs, as', dt') $ d.at]), false + Family (insts @ [inst']), false in (* Printf.eprintf "[syntax %s] %s ~> %s\n%!" id1.it @@ -2869,9 +2872,11 @@ let rec elab_def env (d : def) : Il.def list = let ps' = elab_params env' ps in let t' = elab_typ env' t in if env'.pm then error d.at "misplaced +- or -+ operator in grammar"; - let xprods2' = List.map (fun pr -> x2, pr) (elab_gram env' gram t') in - let dims = Dim.check_def d in - infer_no_quants env' dims d; + let prods' = elab_gram env' gram t' in + let xprods2' = List.map (fun pr -> x2, pr) prods' in + let d' = Il.GramD (x1, ps', t', prods') $ d.at in (* dummy *) + let dims = Dim.check_def d' in + infer_no_quants env' dims d d'; let ps1', t1', xprods1', dots_opt = find "grammar" env.grams x1 in let dots1, _, dots2 = gram.it in let xprods' = @@ -2902,25 +2907,27 @@ let rec elab_def env (d : def) : Il.def list = let t' = tup_typ' ts' t.at in let not = Mixop.apply mixop ts' in if env.pm then error d.at "misplaced +- or -+ operator in relation"; - let dims = Dim.check_def d in - infer_no_quants env dims d; + let d' = Il.RelD (x, mixop, t', []) $ d.at in + let dims = Dim.check_def d' in + infer_no_quants env dims d d'; env.rels <- bind "relation" env.rels x (mixop, not, t', []); - [Il.RelD (x, mixop, t', []) $ d.at] - @ elab_hintdef env (RelH (x, hints) $ d.at) + [d'] @ elab_hintdef env (RelH (x, hints) $ d.at) | RuleD (x1, x2, e, prems) -> let env' = local_env env in env'.pm <- false; - let dims = Dim.check_def d in - let dims' = Dim.Env.map (List.map (elab_typiter env')) dims in let mixop, not', t', rules' = find "relation" env.rels x1 in if List.exists (fun (x, _) -> x.it = x2.it) rules' then error d.at ("duplicate rule name `" ^ x1.it ^ (if x2.it = "" then "" else "/" ^ x2.it) ^ "`"); let qs1, es', _ = checkpoint (elab_exp_notation' env' x1 e not') in - let es' = List.map (Dim.annot_exp dims') es' in let qss2, premss' = List.split (map_filter_nl_list (elab_prem env') prems) in - let prems' = List.map (Dim.annot_prem dims') (List.concat premss') in - let qs = infer_quants env env' dims d in + let prems' = List.concat premss' in + let rule' = Il.RuleD (x2, [], mixop, tup_exp' es' e.at, prems') $ d.at in (* dummy *) + let d' = Il.RelD (x1, mixop, t', [rule']) $ d.at in (* dummy *) + let dims = Dim.check_def d' in + let qs = infer_quants env env' dims d d' in + let es' = List.map (Dim.annot_exp dims) es' in + let prems' = List.map (Dim.annot_prem dims) prems' in let rule' = Il.RuleD (x2, qs @ qs1 @ List.concat qss2, mixop, tup_exp' es' e.at, prems') $ d.at in env.rels <- rebind "relation" env.rels x1 (mixop, not', t', rules' @ [x2, rule']); if not env'.pm then [] else elab_def env Subst.(subst_def pm_snd (Iter.clone_def d)) @@ -2928,8 +2935,9 @@ let rec elab_def env (d : def) : Il.def list = env.pm <- false; let t' = elab_typ env t in if env.pm then error d.at "misplaced +- or -+ operator in variable declaration"; - let dims = Dim.check_def d in - infer_no_quants env dims d; + let d' = Il.DecD (x, [], t', []) $ d.at in (* dummy *) + let dims = Dim.check_def d' in + infer_no_quants env dims d d'; env.gvars <- rebind "variable" env.gvars x t'; [] | DecD (x, ps, t, hints) -> @@ -2938,26 +2946,29 @@ let rec elab_def env (d : def) : Il.def list = let ps' = elab_params env' ps in let t' = elab_typ env' t in if env'.pm then error d.at "misplaced +- or -+ operator in declaration"; - let dims = Dim.check_def d in - infer_no_quants env dims d; + let d' = Il.DecD (x, ps', t', []) $ d.at in + let dims = Dim.check_def d' in + infer_no_quants env dims d d'; env.defs <- bind "definition" env.defs x (ps', t', []); - [Il.DecD (x, ps', t', []) $ d.at] - @ elab_hintdef env (DecH (x, hints) $ d.at) + [d'] @ elab_hintdef env (DecH (x, hints) $ d.at) | DefD (x, as_, e, prems) -> let env' = local_env env in env'.pm <- false; - let dims = Dim.check_def d in - let dims' = Dim.Env.map (List.map (elab_typiter env')) dims in - let ps, t, clauses' = find "definition" env.defs x in - let qs1, as', s = elab_args `Lhs env' as_ ps d.at in - let as' = List.map (Dim.annot_arg dims') as' in - let qss2, premss' = List.split (map_filter_nl_list (elab_prem env') prems) in - let prems' = List.map (Dim.annot_prem dims') (List.concat premss') in - let qs3, e' = checkpoint (elab_exp env' e (Il.Subst.subst_typ s t)) in - let e' = Dim.annot_exp dims' e' in - let qs = infer_quants env env' dims d in - let clause' = Il.DefD (qs @ qs1 @ List.concat qss2 @ qs3, as', e', prems') $ d.at in - env.defs <- rebind "definition" env.defs x (ps, t, clauses' @ [(d, clause')]); + let ps', t', clauses' = find "definition" env.defs x in + let qs1, as', s = elab_args `Lhs env' as_ ps' d.at in + let qss3, premss' = List.split (map_filter_nl_list (elab_prem env') prems) in + (* Elab e after premises, so that type information can flow to it *) + let qs2, e' = checkpoint (elab_exp env' e (Il.Subst.subst_typ s t')) in + let prems' = List.concat premss' in + let clause' = Il.DefD ([], as', e', prems') $ d.at in (* dummy *) + let d' = Il.DecD (x, ps', t', [clause']) $ d.at in (* dummy *) + let dims = Dim.check_def d' in + let qs = infer_quants env env' dims d d' in + let as' = List.map (Dim.annot_arg dims) as' in + let e' = Dim.annot_exp dims e' in + let prems' = List.map (Dim.annot_prem dims) prems' in + let clause' = Il.DefD (qs @ qs1 @ qs2 @ List.concat qss3, as', e', prems') $ d.at in + env.defs <- rebind "definition" env.defs x (ps', t', clauses' @ [(d, clause')]); if not env'.pm then [] else elab_def env Subst.(subst_def pm_snd (Iter.clone_def d)) | SepD -> [] From bc1f143cbd0f531bce5cf3045155f94467ee9847 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Tue, 13 Jan 2026 13:49:30 +0100 Subject: [PATCH 008/235] WIP3 --- spectec/src/al/valid.ml | 4 +- spectec/src/el/free.ml | 136 +++-- spectec/src/frontend/det.ml | 197 ++++++++ spectec/src/frontend/det.mli | 11 + spectec/src/frontend/dim.ml | 645 +++++++++++++----------- spectec/src/frontend/dim.mli | 28 +- spectec/src/frontend/dune | 4 +- spectec/src/frontend/elab.ml | 850 +++++++++++++++++++------------- spectec/src/frontend/eval.mli | 2 +- spectec/src/frontend/parser.mly | 2 +- spectec/src/il/env.ml | 3 +- spectec/src/il/eval.ml | 4 +- spectec/src/il/free.ml | 88 ++-- spectec/src/il/free.mli | 2 + spectec/src/il/fresh.ml | 8 +- spectec/src/il/subst.ml | 9 +- spectec/src/il/subst.mli | 3 +- spectec/src/il/valid.ml | 80 ++- spectec/src/il2al/free.ml | 44 +- spectec/src/util/debug_log.ml | 11 +- spectec/src/xl/gen_free.ml | 90 ++++ spectec/src/xl/gen_free.mli | 37 ++ 22 files changed, 1415 insertions(+), 843 deletions(-) create mode 100644 spectec/src/frontend/det.ml create mode 100644 spectec/src/frontend/det.mli create mode 100644 spectec/src/xl/gen_free.ml create mode 100644 spectec/src/xl/gen_free.mli diff --git a/spectec/src/al/valid.ml b/spectec/src/al/valid.ml index a202345b8..c66a6d976 100644 --- a/spectec/src/al/valid.ml +++ b/spectec/src/al/valid.ml @@ -175,7 +175,7 @@ and unify_typs_opt : typ list -> typ option = function and ground_typ_of (typ: typ) : typ = match typ.it with | VarT (id, _) when IlEnv.mem_var !il_env id -> - let typ' = IlEnv.find_var !il_env id in + let typ', _ = IlEnv.find_var !il_env id in if Il.Eq.eq_typ typ typ' then typ else ground_typ_of typ' (* NOTE: Consider `fN` as a `NumT` to prevent diverging ground type *) | VarT (id, _) when id.it = "fN" -> NumT `RealT $ typ.at @@ -316,7 +316,7 @@ let check_call source id args result_typ = match arg.it, param.it with | ExpA expr, ExpP (_, typ') -> check_match source expr.note typ' (* Add local variable typ *) - | TypA typ1, TypP id -> il_env := IlEnv.bind_var !il_env id typ1 + | TypA typ1, TypP id -> il_env := IlEnv.bind_var !il_env id (typ1, Reg) | DefA aid, DefP (_, pparams, ptyp) -> (match IlEnv.find_opt_def !il_env (aid $ no_region) with | Some (aparams, atyp, _) -> diff --git a/spectec/src/el/free.ml b/spectec/src/el/free.ml index afc1bb298..7af8432c9 100644 --- a/spectec/src/el/free.ml +++ b/spectec/src/el/free.ml @@ -2,17 +2,13 @@ open Util.Source open Ast open Xl - include Xl.Gen_free -let (+) = union -let (-) = diff - (* Aggregates *) let free_nl_elem free_x = function Nl -> empty | Elem x -> free_x x -let free_nl_list free_x xs = List.(fold_left (+) empty (map (free_nl_elem free_x) xs)) +let free_nl_list free_x xs = List.(fold_left (++) empty (map (free_nl_elem free_x) xs)) (* Identifiers *) @@ -32,43 +28,43 @@ let bound_op op = free_op op let rec free_iter iter = match iter with | Opt | List | List1 -> empty - | ListN (e, id_opt) -> free_exp e + free_opt free_varid id_opt + | ListN (e, id_opt) -> free_exp e ++ free_opt free_varid id_opt (* Types *) and free_typ t = match t.it with - | VarT (id, as_) -> free_typid id + free_args as_ + | VarT (id, as_) -> free_typid id ++ free_args as_ | BoolT | NumT _ | TextT -> empty | ParenT t1 -> free_typ t1 | TupT ts -> free_list free_typ ts - | IterT (t1, iter) -> free_typ t1 + free_iter iter + | IterT (t1, iter) -> free_typ t1 ++ free_iter iter | StrT (_, ts, tfs, _) -> - free_nl_list free_typ ts + - free_nl_list (fun tf -> free_typfield tf - det_typfield tf) tfs + free_nl_list free_typ ts ++ + free_nl_list (fun tf -> free_typfield tf -- det_typfield tf) tfs | CaseT (_, ts, tcs, _) -> - free_nl_list free_typ ts + - free_nl_list (fun tc -> free_typcase tc - det_typcase tc) tcs - | ConT tc -> free_typcon tc - det_typcon tc + free_nl_list free_typ ts ++ + free_nl_list (fun tc -> free_typcase tc -- det_typcase tc) tcs + | ConT tc -> free_typcon tc -- det_typcon tc | RangeT tes -> free_nl_list free_typenum tes | AtomT _ -> empty | SeqT ts -> free_list free_typ ts - | InfixT (t1, _, t2) -> free_typ t1 + free_typ t2 + | InfixT (t1, _, t2) -> free_typ t1 ++ free_typ t2 | BrackT (_, t1, _) -> free_typ t1 -and free_typfield (_, (t, prems), _) = free_typ t + free_prems prems -and free_typcase (_, (t, prems), _) = free_typ t + free_prems prems -and free_typcon ((t, prems), _) = free_typ t + free_prems prems -and free_typenum (e, eo) = free_exp e + free_opt free_exp eo +and free_typfield (_, (t, prems), _) = free_typ t ++ free_prems prems +and free_typcase (_, (t, prems), _) = free_typ t ++ free_prems prems +and free_typcon ((t, prems), _) = free_typ t ++ free_prems prems +and free_typenum (e, eo) = free_exp e ++ free_opt free_exp eo (* Variables can be determined by types through implicit binders *) and det_typ t = det_exp (Convert.pat_of_typ t) -and det_typfield (_, (t, prems), _) = det_typ t + det_prems prems -and det_typcase (_, (t, prems), _) = det_typ t + det_prems prems -and det_typcon ((t, prems), _) = det_typ t + det_prems prems +and det_typfield (_, (t, prems), _) = det_typ t ++ det_prems prems +and det_typcase (_, (t, prems), _) = det_typ t ++ det_prems prems +and det_typcon ((t, prems), _) = det_typ t ++ det_prems prems (* Expressions *) @@ -79,38 +75,38 @@ and free_unop = function and free_exp e = match e.it with - | VarE (id, as_) -> free_varid id + free_list free_arg as_ + | VarE (id, as_) -> free_varid id ++ free_list free_arg as_ | AtomE _ | BoolE _ | NumE _ | TextE _ | EpsE | HoleE _ | LatexE _ -> empty - | UnE (op, e1) -> free_unop op + free_exp e1 + | UnE (op, e1) -> free_unop op ++ free_exp e1 | CvtE (e1, _) | DotE (e1, _) | LenE e1 | ParenE e1 | BrackE (_, e1, _) | ArithE e1 | UnparenE e1 -> free_exp e1 | SizeE id -> free_gramid id | BinE (e1, _, e2) | CmpE (e1, _, e2) | IdxE (e1, e2) | CommaE (e1, e2) | CatE (e1, e2) | MemE (e1, e2) - | InfixE (e1, _, e2) | FuseE (e1, e2) -> free_exp e1 + free_exp e2 - | SliceE (e1, e2, e3) -> free_exp e1 + free_exp e2 + free_exp e3 + | InfixE (e1, _, e2) | FuseE (e1, e2) -> free_exp e1 ++ free_exp e2 + | SliceE (e1, e2, e3) -> free_exp e1 ++ free_exp e2 ++ free_exp e3 | SeqE es | ListE es | TupE es -> free_list free_exp es | UpdE (e1, p, e2) | ExtE (e1, p, e2) -> - free_exp e1 + free_path p + free_exp e2 + free_exp e1 ++ free_path p ++ free_exp e2 | StrE efs -> free_nl_list free_expfield efs - | CallE (id, as_) -> free_defid id + free_list free_arg as_ - | IterE (e1, iter) -> free_exp e1 + free_iter iter - | TypE (e1, t) -> free_exp e1 + free_typ t + | CallE (id, as_) -> free_defid id ++ free_list free_arg as_ + | IterE (e1, iter) -> free_exp e1 ++ free_iter iter + | TypE (e1, t) -> free_exp e1 ++ free_typ t and free_expfield (_, e) = free_exp e and free_path p = match p.it with | RootP -> empty - | IdxP (p1, e) -> free_path p1 + free_exp e - | SliceP (p1, e1, e2) -> free_path p1 + free_exp e1 + free_exp e2 + | IdxP (p1, e) -> free_path p1 ++ free_exp e + | SliceP (p1, e1, e2) -> free_path p1 ++ free_exp e1 ++ free_exp e2 | DotP (p1, _) -> free_path p1 and det_unop = function | #signop -> - bound_op (Print.string_of_unop `PlusMinusOp) + + bound_op (Print.string_of_unop `PlusMinusOp) ++ bound_op (Print.string_of_unop `MinusPlusOp) | _ -> empty @@ -118,21 +114,21 @@ and det_exp e = match e.it with | VarE (id, []) -> bound_varid id | VarE _ -> assert false - | UnE (#signop as op, e1) -> det_unop op + det_exp e1 + | UnE (#signop as op, e1) -> det_unop op ++ det_exp e1 | CvtE (e1, _) | UnE (#Num.unop, e1) | ParenE e1 | BrackE (_, e1, _) | ArithE e1 -> det_exp e1 (* We consider arithmetic expressions determinate, * since we sometimes need to use invertible formulas. *) | BinE (e1, #Num.binop, e2) - | InfixE (e1, _, e2) -> det_exp e1 + det_exp e2 + | InfixE (e1, _, e2) -> det_exp e1 ++ det_exp e2 | SeqE es | ListE es | TupE es -> free_list det_exp es | StrE efs -> free_nl_list det_expfield efs - | IterE (e1, iter) -> det_exp e1 + det_iter iter + | IterE (e1, iter) -> det_exp e1 ++ det_iter iter (* As a special hack to work with bijective functions, * we treat last position of a call as a pattern, too. *) | CallE (_, []) -> empty | CallE (_, as_) -> - free_list idx_arg as_ + det_arg (Util.Lib.List.last as_) + free_list idx_arg as_ ++ det_arg (Util.Lib.List.last as_) | TypE (e1, _) -> det_exp e1 | AtomE _ | BoolE _ | NumE _ | TextE _ | EpsE -> empty | UnE _ | BinE _ | CmpE _ @@ -145,16 +141,16 @@ and det_expfield (_, e) = det_exp e and det_iter iter = match iter with | Opt | List | List1 -> empty - | ListN (e, id_opt) -> det_exp e + free_opt bound_varid id_opt + | ListN (e, id_opt) -> det_exp e ++ free_opt bound_varid id_opt and idx_exp e = match e.it with | VarE _ -> empty | ParenE e1 | BrackE (_, e1, _) | ArithE e1 -> idx_exp e1 - | InfixE (e1, _, e2) -> idx_exp e1 + idx_exp e2 + | InfixE (e1, _, e2) -> idx_exp e1 ++ idx_exp e2 | SeqE es | ListE es | TupE es -> free_list idx_exp es | StrE efs -> free_nl_list idx_expfield efs - | IterE (e1, iter) -> idx_exp e1 + idx_iter iter + | IterE (e1, iter) -> idx_exp e1 ++ idx_iter iter | CallE (_, as_) -> free_list idx_arg as_ | TypE (e1, _) -> idx_exp e1 | IdxE (_, e2) -> det_exp e2 @@ -165,13 +161,13 @@ and idx_expfield (_, e) = idx_exp e and idx_iter iter = match iter with | Opt | List | List1 -> empty - | ListN (e, id_opt) -> idx_exp e + free_opt bound_varid id_opt + | ListN (e, id_opt) -> idx_exp e ++ free_opt bound_varid id_opt and det_cond_exp e = match e.it with | UnE (#Bool.unop, e1) -> det_cond_exp e1 - | BinE (e1, #Bool.binop, e2) -> det_cond_exp e1 + det_cond_exp e2 - | CmpE (e1, `EqOp, e2) -> det_exp e1 + det_exp e2 + | BinE (e1, #Bool.binop, e2) -> det_cond_exp e1 ++ det_cond_exp e2 + | CmpE (e1, `EqOp, e2) -> det_exp e1 ++ det_exp e2 | MemE (e1, _) -> det_exp e1 | ParenE e1 | ArithE e1 -> det_cond_exp e1 | _ -> empty @@ -181,40 +177,40 @@ and det_cond_exp e = and free_sym g = match g.it with - | VarG (id, as_) -> free_gramid id + free_args as_ + | VarG (id, as_) -> free_gramid id ++ free_args as_ | NumG _ | TextG _ | EpsG -> empty | SeqG gs | AltG gs -> free_nl_list free_sym gs - | RangeG (g1, g2) | FuseG (g1, g2) -> free_sym g1 + free_sym g2 + | RangeG (g1, g2) | FuseG (g1, g2) -> free_sym g1 ++ free_sym g2 | ParenG g1 | UnparenG g1 -> free_sym g1 | TupG gs -> free_list free_sym gs - | IterG (g1, iter) -> free_sym g1 + free_iter iter + | IterG (g1, iter) -> free_sym g1 ++ free_iter iter | ArithG e -> free_exp e - | AttrG (e, g1) -> free_exp e + free_sym g1 + | AttrG (e, g1) -> free_exp e ++ free_sym g1 and det_sym g = match g.it with | VarG _ | NumG _ | TextG _ | EpsG -> empty | SeqG gs | AltG gs -> free_nl_list det_sym gs - | RangeG (g1, g2) -> det_sym g1 + det_sym g2 + | RangeG (g1, g2) -> det_sym g1 ++ det_sym g2 | ParenG g1 -> det_sym g1 | TupG gs -> free_list det_sym gs - | IterG (g1, iter) -> det_sym g1 + det_iter iter + | IterG (g1, iter) -> det_sym g1 ++ det_iter iter | ArithG e -> det_exp e - | AttrG (e, g1) -> det_exp e + det_sym g1 + | AttrG (e, g1) -> det_exp e ++ det_sym g1 | FuseG _ | UnparenG _ -> assert false and free_prod prod = match prod.it with - | SynthP (g, e, prems) -> free_sym g + free_exp e + free_prems prems + | SynthP (g, e, prems) -> free_sym g ++ free_exp e ++ free_prems prems | RangeP (g1, e1, g2, e2) -> - free_sym g1 + free_exp e1 + free_sym g2 + free_exp e2 - | EquivP (g1, g2, prems) -> free_sym g1 + free_sym g2 + free_prems prems + free_sym g1 ++ free_exp e1 ++ free_sym g2 ++ free_exp e2 + | EquivP (g1, g2, prems) -> free_sym g1 ++ free_sym g2 ++ free_prems prems and det_prod prod = match prod.it with - | SynthP (g, _e, prems) -> det_sym g + det_prems prems - | RangeP (g1, _e1, g2, _e2) -> det_sym g1 + det_sym g2 - | EquivP (g1, _g2, prems) -> det_sym g1 + det_prems prems + | SynthP (g, _e, prems) -> det_sym g ++ det_prems prems + | RangeP (g1, _e1, g2, _e2) -> det_sym g1 ++ det_sym g2 + | EquivP (g1, _g2, prems) -> det_sym g1 ++ det_prems prems and free_gram gram = let (_dots1, prods, _dots2) = gram.it in @@ -226,11 +222,11 @@ and free_gram gram = and free_prem prem = match prem.it with - | VarPr (id, t) -> free_varid id + free_typ t - | RulePr (id, e) -> free_relid id + free_exp e + | VarPr (id, t) -> free_varid id ++ free_typ t + | RulePr (id, e) -> free_relid id ++ free_exp e | IfPr e -> free_exp e | ElsePr -> empty - | IterPr (prem1, iter) -> free_prem prem1 + free_iter iter + | IterPr (prem1, iter) -> free_prem prem1 ++ free_iter iter and det_prem prem = match prem.it with @@ -238,7 +234,7 @@ and det_prem prem = | RulePr (_id, e) -> det_exp e | IfPr e -> det_cond_exp e | ElsePr -> empty - | IterPr (prem1, iter) -> det_prem prem1 + det_iter iter + | IterPr (prem1, iter) -> det_prem prem1 ++ det_iter iter and free_prems prems = free_nl_list free_prem prems and det_prems prems = free_nl_list det_prem prems @@ -271,16 +267,16 @@ and free_param p = match p.it with | ExpP (_, t) -> free_typ t | TypP _ -> empty - | GramP (_, ps, t) -> free_params ps + free_typ t - bound_params ps - impl_bound_typ ps t - | DefP (_, ps, t) -> free_params ps + free_typ t - bound_params ps + | GramP (_, ps, t) -> free_params ps ++ free_typ t -- bound_params ps -- impl_bound_typ ps t + | DefP (_, ps, t) -> free_params ps ++ free_typ t -- bound_params ps -and impl_bound_typ ps t = {empty with typid = (free_typ t).typid} - bound_params ps +and impl_bound_typ ps t = {empty with typid = (free_typ t).typid} -- bound_params ps and bound_param p = match p.it with | ExpP (id, _) -> bound_varid id | TypP id -> bound_typid id - | GramP (id, ps, t) -> bound_gramid id + impl_bound_typ ps t + | GramP (id, ps, t) -> bound_gramid id ++ impl_bound_typ ps t | DefP (id, _, _) -> bound_defid id and free_args as_ = free_list free_arg as_ @@ -294,23 +290,23 @@ let free_def d = | FamD (_id, ps, _hints) -> free_list free_param ps | TypD (_id1, _id2, as_, t, _hints) -> - free_args as_ + free_typ t + free_args as_ ++ free_typ t | GramD (_id1, _id2, ps, t, gram, _hints) -> - free_params ps + (free_typ t + free_gram gram - bound_params ps - impl_bound_typ ps t) + free_params ps ++ (free_typ t ++ free_gram gram -- bound_params ps -- impl_bound_typ ps t) | VarD (_id, t, _hints) -> free_typ t | SepD -> empty | RelD (_id, t, _hints) -> free_typ t | RuleD (id1, _id2, e, prems) -> - free_relid id1 + free_exp e + free_prems prems + free_relid id1 ++ free_exp e ++ free_prems prems | DecD (_id, ps, t, _hints) -> - free_params ps + free_typ t - bound_params ps + free_params ps ++ free_typ t -- bound_params ps | DefD (id, as_, e, prems) -> - free_defid id + free_args as_ + free_exp e + free_prems prems + free_defid id ++ free_args as_ ++ free_exp e ++ free_prems prems | HintD _ -> empty let det_def d = match d.it with | FamD _ | GramD _ | VarD _ | SepD | RelD _ | DecD _ | HintD _ -> empty | TypD (_id1, _id2, as_, _t, _hints) -> det_args as_ - | RuleD (_id1, _id2, e, prems) -> det_exp e + det_prems prems - | DefD (_id, as_, e, prems) -> det_args as_ + idx_exp e + det_prems prems + | RuleD (_id1, _id2, e, prems) -> det_exp e ++ det_prems prems + | DefD (_id, as_, e, prems) -> det_args as_ ++ idx_exp e ++ det_prems prems diff --git a/spectec/src/frontend/det.ml b/spectec/src/frontend/det.ml new file mode 100644 index 000000000..d7261f486 --- /dev/null +++ b/spectec/src/frontend/det.ml @@ -0,0 +1,197 @@ +open Util.Source +open Il.Ast +open Il.Free + +include Xl.Gen_free + +let det_list = free_list + + +(* Iterations *) + +let rec det_iter iter = + match iter with + | Opt | List | List1 -> empty + | ListN (e, x_opt) -> det_exp e ++ free_opt bound_varid x_opt + + +(* Types *) + +and det_typ t = + Il.Debug.(log_at "il.det_typ" t.at + (fun _ -> fmt "%s" (il_typ t)) + (fun s -> String.concat ", " (Set.elements s.varid)) + ) @@ fun _ -> + match t.it with + | VarT (_x, as_) -> det_list det_arg as_ + | BoolT | NumT _ | TextT -> empty + | TupT xts -> det_list det_typbind xts + | IterT (t1, iter) -> det_typ t1 ++ det_iter iter + +and det_typbind (x, t) = bound_varid x ++ det_typ t + + +(* Expressions *) + +and det_exp e = + Il.Debug.(log_at "il.det_exp" e.at + (fun _ -> fmt "%s" (il_exp e)) + (fun s -> String.concat ", " (Set.elements s.varid)) + ) @@ fun _ -> + match e.it with + | VarE x -> bound_varid x + | BoolE _ | NumE _ | TextE _ -> empty + (* We consider arithmetic expressions determinate, + * since we sometimes need to use invertible formulas. *) + | CvtE (e1, _, _) | UnE (#Xl.Num.unop, _, e1) | TheE e1 | LiftE e1 + | SubE (e1, _, _) -> det_exp e1 + | BinE (#Xl.Num.binop, _, e1, e2) | CatE (e1, e2) -> det_exp e1 ++ det_exp e2 + | OptE eo -> free_opt det_exp eo + | ListE es | TupE es -> det_list det_exp es + | CaseE (_, as_, e1) | UncaseE (e1, _, as_) -> det_exp e1 ++ det_list det_arg as_ + | StrE efs -> det_list det_expfield efs + | IterE (e1, ite) -> det_iterexp (det_exp e1) ite + (* As a special hack to work with bijective functions, + * we treat last position of a call as a pattern, too. *) + | CallE (_, []) -> empty + | CallE (_, as_) -> det_list det_idx_arg as_ ++ det_arg (Util.Lib.List.last as_) + | UnE _ | BinE _ | CmpE _ + | IdxE _ | SliceE _ | UpdE _ | ExtE _ | CompE _ | MemE _ + | ProjE _ | DotE _ | LenE _ -> det_idx_exp e + +and det_expfield (_, _, e) = det_exp e + +and det_iterexp s1 (iter, xes) = + s1 -- free_list bound_varid (List.map fst xes) ++ + det_iter iter ++ + det_list det_exp (List.filter_map + (fun (x, e) -> if Set.mem x.it s1.varid then Some e else None) xes) + + +and det_cond_exp e = + Il.Debug.(log_at "il.det_cond_exp" e.at + (fun _ -> fmt "%s" (il_exp e)) + (fun s -> String.concat ", " (Set.elements s.varid)) + ) @@ fun _ -> + match e.it with + | UnE (#Xl.Bool.unop, _, e1) -> det_cond_exp e1 + | BinE (#Xl.Bool.binop, _, e1, e2) -> det_cond_exp e1 ++ det_cond_exp e2 + | CmpE (`EqOp, _, e1, e2) -> det_exp e1 ++ det_exp e2 + | MemE (e1, e2) -> det_exp e1 ++ det_quant_exp e2 + | _ -> det_quant_exp e + + +and det_idx_exp e = + Il.Debug.(log_at "il.det_idx_exp" e.at + (fun _ -> fmt "%s" (il_exp e)) + (fun s -> String.concat ", " (Set.elements s.varid)) + ) @@ fun _ -> + match e.it with + | VarE _ -> empty + | LiftE e1 | SubE (e1, _, _) -> det_idx_exp e1 + | CaseE (_, as_, e1) -> det_list det_quant_arg as_ ++ det_idx_exp e1 + | OptE eo -> free_opt det_idx_exp eo + | ListE es | TupE es -> det_list det_idx_exp es + | StrE efs -> det_list det_idx_expfield efs + | IterE (e1, iter) -> det_idx_exp e1 ++ det_idx_iter (fst iter) + | CallE (_, as_) -> det_list det_idx_arg as_ + | IdxE (e1, e2) -> det_quant_exp e1 ++ det_exp e2 + | _ -> det_quant_exp e + +and det_idx_expfield (_, _, e) = det_idx_exp e + +and det_idx_iter iter = + match iter with + | Opt | List | List1 -> empty + | ListN (e, x_opt) -> det_idx_exp e ++ free_opt bound_varid x_opt + + +and det_quant_exp e = + Il.Debug.(log_at "il.det_quant_exp" e.at + (fun _ -> fmt "%s" (il_exp e)) + (fun s -> String.concat ", " (Set.elements s.varid)) + ) @@ fun _ -> + match e.it with + | VarE _ | BoolE _ | NumE _ | TextE _ -> empty + | UnE (_, _, e1) | ProjE (e1, _) | TheE e1 | LiftE e1 | LenE e1 + | CvtE (e1, _, _) | SubE (e1, _, _) -> + det_quant_exp e1 + | BinE (_, _, e1, e2) | CmpE (_, _, e1, e2) + | IdxE (e1, e2) | MemE (e1, e2) | CatE (e1, e2) | CompE (e1, e2) -> + det_quant_exp e1 ++ det_quant_exp e2 + | SliceE (e1, e2, e3) -> + det_quant_exp e1 ++ det_quant_exp e2 ++ det_quant_exp e3 + | UpdE (e1, p, e2) | ExtE (e1, p, e2) -> + det_quant_exp e1 ++ det_quant_path p ++ det_quant_exp e2 + | DotE (e1, _, as_) | CaseE (_, as_, e1) | UncaseE(e1, _, as_) -> + det_list det_arg as_ ++ det_quant_exp e1 + | OptE eo -> free_opt det_quant_exp eo + | ListE es | TupE es -> det_list det_quant_exp es + | StrE efs -> det_list det_quant_expfield efs + | IterE (e1, iter) -> det_quant_exp e1 ++ det_quant_iter (fst iter) + | CallE (_, as_) -> det_list det_quant_arg as_ + +and det_quant_expfield (_, _, e) = det_quant_exp e + +and det_quant_path p = + match p.it with + | RootP -> empty + | IdxP (p1, e) -> det_quant_path p1 ++ det_quant_exp e + | SliceP (p1, e1, e2) -> + det_quant_path p1 ++ det_quant_exp e1 ++ det_quant_exp e2 + | DotP (p1, _, as_) -> det_quant_path p1 ++ det_list det_quant_arg as_ + +and det_quant_iter iter = + match iter with + | Opt | List | List1 -> empty + | ListN (e, _x_opt) -> det_quant_exp e + + +(* Grammars *) + +and det_sym g = + match g.it with + | VarG _ | NumG _ | TextG _ | EpsG -> empty + | SeqG gs | AltG gs -> det_list det_sym gs + | RangeG (g1, g2) -> det_sym g1 ++ det_sym g2 + | IterG (g1, ite) -> det_iterexp (det_sym g1) ite + | AttrG (e, g1) -> det_exp e ++ det_sym g1 + + +(* Premises *) + +and det_prem pr = + Il.Debug.(log_at "il.det_prem" pr.at + (fun _ -> fmt "%s" (il_prem pr)) + (fun s -> String.concat ", " (Set.elements s.varid)) + ) @@ fun _ -> + match pr.it with + | RulePr (_x, _mixop, e) -> det_exp e + | IfPr e -> det_cond_exp e + | LetPr (e1, _e2, _xs) -> det_exp e1 + | ElsePr -> empty + | IterPr (pr1, ite) -> det_iterexp (det_prem pr1) ite + + +(* Definitions *) + +and det_arg a = + match a.it with + | ExpA e -> det_exp e + | TypA t -> free_typ t (* must be an id *) + | GramA g -> free_sym g (* must be an id *) + | DefA x -> bound_defid x + +and det_idx_arg a = + match a.it with + | ExpA e -> det_idx_exp e + | TypA _ -> empty + | GramA _ -> empty + | DefA _ -> empty + +and det_quant_arg a = + match a.it with + | ExpA e -> det_quant_exp e + | TypA _ -> empty + | GramA _ -> empty + | DefA _ -> empty diff --git a/spectec/src/frontend/det.mli b/spectec/src/frontend/det.mli new file mode 100644 index 000000000..fe6c7f0f7 --- /dev/null +++ b/spectec/src/frontend/det.mli @@ -0,0 +1,11 @@ +open Il.Ast + +include module type of Xl.Gen_free + +val det_typ : typ -> sets +val det_exp : exp -> sets +val det_sym : sym -> sets +val det_prem : prem -> sets +val det_arg : arg -> sets + +val det_list : ('a -> sets) -> 'a list -> sets diff --git a/spectec/src/frontend/dim.ml b/spectec/src/frontend/dim.ml index 47aa84601..4f2542ce5 100644 --- a/spectec/src/frontend/dim.ml +++ b/spectec/src/frontend/dim.ml @@ -11,19 +11,18 @@ let error at msg = Error.error at "dimension" msg (* Environment *) -module Env = Map.Make(String) +module Map = Map.Make(String) -type outer = id list type ctx = iter list -type env = ctx Env.t -type renv = (region * ctx * [`Impl | `Expl]) list Env.t +type dims = (region * ctx) Map.t +type outer = dims +type rdims = (region * ctx * [`Impl | `Expl | `Outer]) list Map.t -let new_env outer = - List.fold_left (fun env id -> - Env.add id.it [(id.at, [], `Expl)] env) Env.empty outer |> ref +let new_dims outer = + ref (Map.map (fun (at, ctx) -> [(at, ctx, `Outer)]) outer) -let localize outer env = - List.fold_left (fun env id -> Env.remove id.it env) env outer +let localize outer dims = + Map.fold (fun x _ dims -> Map.remove x dims) outer dims let il_occur occur = @@ -31,7 +30,7 @@ let il_occur occur = List.map (fun (x, (t, iters)) -> x ^ ":" ^ Il.Debug.il_typ t ^ String.concat "" (List.map Il.Debug.il_iter iters) - ) (Env.bindings occur) + ) (Map.bindings occur) in "{" ^ String.concat ", " ss ^ "}" @@ -51,14 +50,15 @@ let rec is_prefix ctx1 ctx2 = let rec check_ctx id (at0, ctx0, mode0) = function | [] -> () | (at, ctx, mode)::ctxs -> - if not (is_prefix ctx0 ctx) && (mode0 = `Expl || mode = `Expl) then + if not (is_prefix ctx0 ctx) && (mode0 <> `Impl || mode <> `Impl) then error at ("inconsistent variable context, " ^ string_of_ctx id ctx0 ^ " vs " ^ string_of_ctx id ctx ^ " (" ^ string_of_region at0 ^ ")"); check_ctx id (at0, ctx0, mode0) ctxs -let check_ctxs id ctxs : ctx = +let check_ctxs id ctxs : region * ctx = + (* Invariant: there is at most one Outer occurrence per id. *) let sorted = if List.for_all (fun (_, _, mode) -> mode = `Impl) ctxs then (* Take first occurrence *) @@ -67,18 +67,19 @@ let check_ctxs id ctxs : ctx = ctxs else let sorted = List.stable_sort - (fun (_, ctx1, _) (_, ctx2, _) -> + (fun (_, ctx1, mode1) (_, ctx2, mode2) -> + if mode1 = `Outer then -1 else if mode2 = `Outer then +1 else compare (List.length ctx1) (List.length ctx2)) ctxs in check_ctx id (List.hd sorted) (List.tl sorted); sorted in - let _, ctx, _ = List.hd sorted in - ctx + let at, ctx, _ = List.hd sorted in + at, ctx -let check_env (env : renv ref) : env = - Env.mapi check_ctxs !env +let check_dims (dims : rdims ref) : dims = + Map.mapi check_ctxs !dims (* Collecting constraints *) @@ -87,18 +88,18 @@ let strip_index = function | ListN (e, Some _) -> ListN (e, None) | iter -> iter -let check_typid _env _ctx _id = () (* Types are always global *) -let check_gramid _env _ctx _id = () (* Grammars are always global *) +let check_typid _dims _ctx _id = () (* Types are always global *) +let check_gramid _dims _ctx _id = () (* Grammars are always global *) -let check_varid env ctx mode id = - let ctxs = Option.value (Env.find_opt id.it !env) ~default:[] in - env := Env.add id.it ((id.at, ctx, mode)::ctxs) !env +let check_varid dims ctx mode id = + let ctxs = Option.value (Map.find_opt id.it !dims) ~default:[] in + dims := Map.add id.it ((id.at, ctx, mode)::ctxs) !dims -let rec check_iter env ctx iter = +let rec check_iter dims ctx iter = match iter with | Opt | List | List1 -> () | ListN (e, id_opt) -> - check_exp env ctx e; + check_exp dims ctx e; (* TODO(2, rossberg): The dimension for id should match that of e: * for example, if we b^(i check_varid env [strip_index iter] `Expl id) id_opt + Option.iter (fun id -> check_varid dims [strip_index iter] `Expl id) id_opt -and check_typ env ctx t = +and check_typ dims ctx t = match t.it with | VarT (x, args) -> - check_typid env ctx x; - List.iter (check_arg env ctx) args + check_typid dims ctx x; + List.iter (check_arg dims ctx) args | BoolT | NumT _ | TextT -> () - | TupT xts -> List.iter (check_typbind env ctx) xts + | TupT xts -> List.iter (check_typbind dims ctx) xts | IterT (t1, iter) -> - check_iter env ctx iter; - check_typ env (strip_index iter::ctx) t1 + check_iter dims ctx iter; + check_typ dims (strip_index iter::ctx) t1 -and check_typbind env ctx (x, t) = - check_varid env ctx `Impl x; - check_typ env ctx t +and check_typbind dims ctx (x, t) = + check_varid dims ctx `Impl x; + check_typ dims ctx t -and check_deftyp env ctx dt = +(* +and check_deftyp dims ctx dt = match dt.it with | AliasT t -> - check_typ env ctx t + check_typ dims ctx t | StructT tfs -> List.iter (fun (_, (qs, tI, prems), _) -> - let env' = ref Env.empty in + let dims' = ref Map.empty in assert (qs = []); - check_typ env' ctx tI; - List.iter (check_prem env' ctx) prems + check_typ dims' ctx tI; + List.iter (check_prem dims' ctx) prems ) tfs | VariantT tcs -> List.iter (fun (_, (qs, tI, prems), _) -> - let env' = ref Env.empty in + let dims' = ref Map.empty in assert (qs = []); - check_typ env' ctx tI; - List.iter (check_prem env' ctx) prems + check_typ dims' ctx tI; + List.iter (check_prem dims' ctx) prems ) tcs +*) -and check_iterexp env ctx (iter, xes) = - check_iter env ctx iter; +and check_iterexp dims ctx (iter, xes) = + check_iter dims ctx iter; assert (xes = []) -and check_exp env ctx e = +and check_exp dims ctx e = match e.it with | VarE x -> - check_varid env ctx `Expl x + check_varid dims ctx `Expl x | BoolE _ | NumE _ | TextE _ -> () @@ -163,212 +166,225 @@ and check_exp env ctx e = | ProjE (e1, _) | TheE e1 | LiftE e1 -> - check_exp env ctx e1 + check_exp dims ctx e1 | BinE (_, _, e1, e2) | CmpE (_, _, e1, e2) | IdxE (e1, e2) | CatE (e1, e2) | MemE (e1, e2) | CompE (e1, e2) -> - check_exp env ctx e1; - check_exp env ctx e2 + check_exp dims ctx e1; + check_exp dims ctx e2 | SliceE (e1, e2, e3) -> - check_exp env ctx e1; - check_exp env ctx e2; - check_exp env ctx e3 + check_exp dims ctx e1; + check_exp dims ctx e2; + check_exp dims ctx e3 | UpdE (e1, p, e2) | ExtE (e1, p, e2) -> - check_exp env ctx e1; - check_path env ctx p; - check_exp env ctx e2 + check_exp dims ctx e1; + check_path dims ctx p; + check_exp dims ctx e2 | OptE eo -> - Option.iter (check_exp env ctx) eo + Option.iter (check_exp dims ctx) eo | ListE es | TupE es -> - List.iter (check_exp env ctx) es + List.iter (check_exp dims ctx) es | StrE efs -> - List.iter (check_expfield env ctx) efs + List.iter (check_expfield dims ctx) efs | DotE (e1, _, as_) | CaseE (_, as_, e1) | UncaseE (e1, _, as_) -> - check_exp env ctx e1; - List.iter (check_arg env ctx) as_ + check_exp dims ctx e1; + List.iter (check_arg dims ctx) as_ | CallE (_, as_) -> - List.iter (check_arg env ctx) as_ + List.iter (check_arg dims ctx) as_ | IterE (e1, ite) -> - check_iterexp env ctx ite; - check_exp env (strip_index (fst ite)::ctx) e1 + check_iterexp dims ctx ite; + check_exp dims (strip_index (fst ite)::ctx) e1 | SubE (e1, t1, t2) -> - check_exp env ctx e1; - check_typ env ctx t1; - check_typ env ctx t2 + check_exp dims ctx e1; + check_typ dims ctx t1; + check_typ dims ctx t2 -and check_expfield env ctx (_, as_, e) = - List.iter (check_arg env ctx) as_; - check_exp env ctx e +and check_expfield dims ctx (_, as_, e) = + List.iter (check_arg dims ctx) as_; + check_exp dims ctx e -and check_path env ctx p = +and check_path dims ctx p = match p.it with | RootP -> () | IdxP (p1, e) -> - check_path env ctx p1; - check_exp env ctx e + check_path dims ctx p1; + check_exp dims ctx e | SliceP (p1, e1, e2) -> - check_path env ctx p1; - check_exp env ctx e1; - check_exp env ctx e2 + check_path dims ctx p1; + check_exp dims ctx e1; + check_exp dims ctx e2 | DotP (p1, _, as_) -> - check_path env ctx p1; - List.iter (check_arg env ctx) as_ + check_path dims ctx p1; + List.iter (check_arg dims ctx) as_ -and check_sym env ctx g = +and check_sym dims ctx g = match g.it with | VarG (x, args) -> - check_gramid env ctx x; - List.iter (check_arg env ctx) args + check_gramid dims ctx x; + List.iter (check_arg dims ctx) args | NumG _ | TextG _ | EpsG -> () | SeqG gs | AltG gs -> - List.iter (check_sym env ctx) gs + List.iter (check_sym dims ctx) gs | RangeG (g1, g2) -> - check_sym env ctx g1; - check_sym env ctx g2 + check_sym dims ctx g1; + check_sym dims ctx g2 | AttrG (e, g1) -> - check_exp env ctx e; - check_sym env ctx g1 + check_exp dims ctx e; + check_sym dims ctx g1 | IterG (g1, ite) -> - check_iterexp env ctx ite; - check_sym env (strip_index (fst ite)::ctx) g1 + check_iterexp dims ctx ite; + check_sym dims (strip_index (fst ite)::ctx) g1 -and check_prem env ctx prem = +and check_prem dims ctx prem = match prem.it with - | RulePr (_x, _mixop, e) -> check_exp env ctx e - | IfPr e -> check_exp env ctx e + | RulePr (_x, _mixop, e) -> check_exp dims ctx e + | IfPr e -> check_exp dims ctx e | ElsePr -> () | LetPr (e1, e2, _xs) -> - check_exp env ctx e1; - check_exp env ctx e2 + check_exp dims ctx e1; + check_exp dims ctx e2 | IterPr (prem', ite) -> - check_iterexp env ctx ite; - check_prem env (strip_index (fst ite)::ctx) prem' + check_iterexp dims ctx ite; + check_prem dims (strip_index (fst ite)::ctx) prem' -and check_arg env ctx a = +and check_arg dims ctx a = match a.it with - | ExpA e -> check_exp env ctx e - | TypA t -> check_typ env ctx t - | GramA g -> check_sym env ctx g + | ExpA e -> check_exp dims ctx e + | TypA t -> check_typ dims ctx t + | GramA g -> check_sym dims ctx g | DefA _x -> () -and check_param env ctx p = +and check_param dims p = match p.it with | ExpP (x, t) -> - check_varid env ctx `Expl x; - check_typ env ctx t + check_varid dims [] `Expl x; + check_typ dims [] t | TypP x -> - check_typid env ctx x; - check_varid env ctx `Impl x + check_typid dims [] x; + check_varid dims [] `Impl x | GramP (x, ps, t) -> - check_gramid env ctx x; - List.iter (check_param env ctx) ps; - check_typ env ctx t + check_gramid dims [] x; + List.iter (check_param dims) ps; + check_typ dims [] t | DefP (_x, ps, t) -> - List.iter (check_param env ctx) ps; - check_typ env ctx t + List.iter (check_param dims) ps; + check_typ dims [] t + -let rec check_def d : env = - let env = new_env [] in +(* External interface *) + +let check outer ps as_ ts es gs prs : dims = + let dims = new_dims outer in + List.iter (check_param dims) ps; + List.iter (check_arg dims []) as_; + List.iter (check_typ dims []) ts; + List.iter (check_exp dims []) es; + List.iter (check_sym dims []) gs; + List.iter (check_prem dims []) prs; + localize outer (check_dims dims) + +(* +let rec check_def d : dims = + let dims = new_dims Map.empty in match d.it with | TypD (_x, ps, insts) -> - List.iter (check_param env []) ps; - List.iter (check_inst env) insts; - check_env env + List.iter (check_param dims) ps; + List.iter (check_inst dims) insts; + check_dims dims | RelD (_x, _mixop, t, rules) -> - check_typ env [] t; - List.iter (check_rule env) rules; - check_env env + check_typ dims [] t; + List.iter (check_rule dims) rules; + check_dims dims | DecD (_x, ps, t, clauses) -> - List.iter (check_param env []) ps; - check_typ env [] t; - List.iter (check_clause env) clauses; - check_env env + List.iter (check_param dims) ps; + check_typ dims [] t; + List.iter (check_clause dims) clauses; + check_dims dims | GramD (_x, ps, t, prods) -> - List.iter (check_param env []) ps; - check_typ env [] t; - List.iter (check_prod env) prods; - check_env env + List.iter (check_param dims) ps; + check_typ dims [] t; + List.iter (check_prod dims) prods; + check_dims dims | RecD _ds -> assert false | HintD _ -> - check_env env + check_dims dims -and check_inst env inst = +and check_inst dims inst = match inst.it with | InstD (qs, as_, dt) -> assert (qs = []); - List.iter (check_arg env []) as_; - check_deftyp env [] dt + List.iter (check_arg dims []) as_; + check_deftyp dims [] dt -and check_rule env rule = +and check_rule dims rule = match rule.it with | RuleD (_x, qs, _mixop, e, prems) -> assert (qs = []); - check_exp env [] e; - List.iter (check_prem env []) prems + check_exp dims [] e; + List.iter (check_prem dims []) prems -and check_clause env clause = +and check_clause dims clause = match clause.it with | DefD (qs, as_, e, prems) -> assert (qs = []); - List.iter (check_arg env []) as_; - check_exp env [] e; - List.iter (check_prem env []) prems + List.iter (check_arg dims []) as_; + check_exp dims [] e; + List.iter (check_prem dims []) prems -and check_prod env prod = +and check_prod dims prod = match prod.it with | ProdD (qs, g, e, prems) -> assert (qs = []); - check_sym env [] g; - check_exp env [] e; - List.iter (check_prem env []) prems - - -(* External interface *) - -let check_inst outer as_ dt : env = - let env = new_env outer in - List.iter (check_arg env []) as_; - check_deftyp env [] dt; - localize outer (check_env env) - -let check_prod outer g e prems : env = - let env = new_env outer in - check_sym env [] g; - check_exp env [] e; - List.iter (check_prem env []) prems; - localize outer (check_env env) - -let check_abbr outer g1 g2 prems : env = - let env = new_env outer in - check_sym env [] g1; - check_sym env [] g2; - List.iter (check_prem env []) prems; - localize outer (check_env env) - -let check_deftyp outer ts prems : env = - let env = new_env outer in - List.iter (check_typ env []) ts; - List.iter (check_prem env []) prems; - localize outer (check_env env) + check_sym dims [] g; + check_exp dims [] e; + List.iter (check_prem dims []) prems + + +let check_inst outer as_ dt : dims = + let dims = new_dims outer in + List.iter (check_arg dims []) as_; + check_deftyp dims [] dt; + localize outer (check_dims dims) + +let check_prod outer g e prems : dims = + let dims = new_dims outer in + check_sym dims [] g; + check_exp dims [] e; + List.iter (check_prem dims []) prems; + localize outer (check_dims dims) + +let check_abbr outer g1 g2 prems : dims = + let dims = new_dims outer in + check_sym dims [] g1; + check_sym dims [] g2; + List.iter (check_prem dims []) prems; + localize outer (check_dims dims) + +let check_deftyp outer ts prems : dims = + let dims = new_dims outer in + List.iter (check_typ dims []) ts; + List.iter (check_prem dims []) prems; + localize outer (check_dims dims) +*) (* Annotating iterations *) -type occur = (typ * iter list) Env.t +type occur = (typ * iter list) Map.t -let union = Env.union (fun _ (_, ctx1 as occ1) (_, ctx2 as occ2) -> +let union = Map.union (fun _ (_, ctx1 as occ1) (_, ctx2 as occ2) -> (* For well-typed scripts, t1 == t2. *) Some (if List.length ctx1 < List.length ctx2 then occ1 else occ2)) @@ -384,24 +400,29 @@ let rec annot_varid id = function | [] -> id | iter::iters -> annot_varid (annot_varid' id.it iter $ id.at) iters -let rec annot_iter env iter : iter * (occur * occur) = + +let rec annot_iter dims iter : iter * (occur * occur) = Il.Debug.(log "il.annot_iter" (fun _ -> fmt "%s" (il_iter iter)) (fun (iter', (occur1, occur2)) -> fmt "%s %s %s" (il_iter iter') (il_occur occur1) (il_occur occur2)) ) @@ fun _ -> match iter with - | Opt | List | List1 -> iter, Env.(empty, empty) - | ListN (e, id_opt) -> - let e', occur1 = annot_exp env e in + | Opt | List | List1 -> iter, Map.(empty, empty) + | ListN (e, x_opt) -> + let e', occur1 = annot_exp dims e in let occur2 = - match id_opt with - | None -> Env.empty - | Some id -> Env.singleton id.it (NumT `NatT $ id.at, Env.find id.it env) + match x_opt with + | None -> Map.empty + | Some x -> + if x.it <> "_" && Map.mem x.it dims then + Map.singleton x.it (NumT `NatT $ x.at, snd (Map.find x.it dims)) + else + Map.empty in - ListN (e', id_opt), (occur1, occur2) + ListN (e', x_opt), (occur1, occur2) -and annot_typ env t : typ * occur = +and annot_typ dims t : typ * occur = Il.Debug.(log "il.annot_typ" (fun _ -> fmt "%s" (il_typ t)) (fun (t', occur') -> fmt "%s %s" (il_typ t') (il_occur occur')) @@ -409,171 +430,169 @@ and annot_typ env t : typ * occur = let it, occur = match t.it with | VarT (x, as1) -> - let as1', occurs = List.split (List.map (annot_arg env) as1) in - VarT (x, as1'), List.fold_left union Env.empty occurs + let as1', occurs = List.split (List.map (annot_arg dims) as1) in + VarT (x, as1'), List.fold_left union Map.empty occurs | BoolT | NumT _ | TextT -> - t.it, Env.empty + t.it, Map.empty | TupT xts -> - let xts', occurs = List.split (List.map (annot_typbind env) xts) in - TupT xts', List.fold_left union Env.empty occurs - | IterT (t, iter) -> - let t', occur1 = annot_typ env t in - let iter', (occur2, occur3) = annot_iter env iter in - assert (occur1 = Env.empty); - assert (occur3 = Env.empty); - IterT (t', iter'), occur2 + let xts', occurs = List.split (List.map (annot_typbind dims) xts) in + TupT xts', List.fold_left union Map.empty occurs + | IterT (t1, iter) -> + let t1', occur1 = annot_typ dims t1 in + let (iter', _), occur = annot_iterexp dims occur1 (iter, []) t.at in + IterT (t1', iter'), occur in {t with it}, occur -and annot_typbind env (x, t) : (id * typ) * occur = +and annot_typbind dims (x, t) : (id * typ) * occur = let occur1 = - if x.it <> "_" && Env.mem x.it env then - Env.singleton x.it (t, Env.find x.it env) + if x.it <> "_" && Map.mem x.it dims then + Map.singleton x.it (t, snd (Map.find x.it dims)) else - Env.empty + Map.empty in - let t', occur2 = annot_typ env t in + let t', occur2 = annot_typ dims t in (x, t'), union occur1 occur2 -and annot_exp env e : exp * occur = +and annot_exp dims e : exp * occur = Il.Debug.(log "il.annot_exp" (fun _ -> fmt "%s" (il_exp e)) (fun (e', occur') -> fmt "%s %s" (il_exp e') (il_occur occur')) ) @@ fun _ -> let it, occur = match e.it with - | VarE x when x.it <> "_" && Env.mem x.it env -> - VarE x, Env.singleton x.it (e.note, Env.find x.it env) + | VarE x when x.it <> "_" && Map.mem x.it dims -> + VarE x, Map.singleton x.it (e.note, snd (Map.find x.it dims)) | VarE _ | BoolE _ | NumE _ | TextE _ -> - e.it, Env.empty + e.it, Map.empty | UnE (op, nt, e1) -> - let e1', occur1 = annot_exp env e1 in + let e1', occur1 = annot_exp dims e1 in UnE (op, nt, e1'), occur1 | BinE (op, nt, e1, e2) -> - let e1', occur1 = annot_exp env e1 in - let e2', occur2 = annot_exp env e2 in + let e1', occur1 = annot_exp dims e1 in + let e2', occur2 = annot_exp dims e2 in BinE (op, nt, e1', e2'), union occur1 occur2 | CmpE (op, nt, e1, e2) -> - let e1', occur1 = annot_exp env e1 in - let e2', occur2 = annot_exp env e2 in + let e1', occur1 = annot_exp dims e1 in + let e2', occur2 = annot_exp dims e2 in CmpE (op, nt, e1', e2'), union occur1 occur2 | IdxE (e1, e2) -> - let e1', occur1 = annot_exp env e1 in - let e2', occur2 = annot_exp env e2 in + let e1', occur1 = annot_exp dims e1 in + let e2', occur2 = annot_exp dims e2 in IdxE (e1', e2'), union occur1 occur2 | SliceE (e1, e2, e3) -> - let e1', occur1 = annot_exp env e1 in - let e2', occur2 = annot_exp env e2 in - let e3', occur3 = annot_exp env e3 in + let e1', occur1 = annot_exp dims e1 in + let e2', occur2 = annot_exp dims e2 in + let e3', occur3 = annot_exp dims e3 in SliceE (e1', e2', e3'), union (union occur1 occur2) occur3 | UpdE (e1, p, e2) -> - let e1', occur1 = annot_exp env e1 in - let p', occur2 = annot_path env p in - let e2', occur3 = annot_exp env e2 in + let e1', occur1 = annot_exp dims e1 in + let p', occur2 = annot_path dims p in + let e2', occur3 = annot_exp dims e2 in UpdE (e1', p', e2'), union (union occur1 occur2) occur3 | ExtE (e1, p, e2) -> - let e1', occur1 = annot_exp env e1 in - let p', occur2 = annot_path env p in - let e2', occur3 = annot_exp env e2 in + let e1', occur1 = annot_exp dims e1 in + let p', occur2 = annot_path dims p in + let e2', occur3 = annot_exp dims e2 in ExtE (e1', p', e2'), union (union occur1 occur2) occur3 | StrE efs -> - let efs', occurs = List.split (List.map (annot_expfield env) efs) in - StrE efs', List.fold_left union Env.empty occurs + let efs', occurs = List.split (List.map (annot_expfield dims) efs) in + StrE efs', List.fold_left union Map.empty occurs | DotE (e1, atom, as_) -> - let e1', occur1 = annot_exp env e1 in - let as', occurs = List.split (List.map (annot_arg env) as_) in + let e1', occur1 = annot_exp dims e1 in + let as', occurs = List.split (List.map (annot_arg dims) as_) in DotE (e1', atom, as'), List.fold_left union occur1 occurs | CompE (e1, e2) -> - let e1', occur1 = annot_exp env e1 in - let e2', occur2 = annot_exp env e2 in + let e1', occur1 = annot_exp dims e1 in + let e2', occur2 = annot_exp dims e2 in CompE (e1', e2'), union occur1 occur2 | LenE e1 -> - let e1', occur1 = annot_exp env e1 in + let e1', occur1 = annot_exp dims e1 in LenE e1', occur1 | TupE es -> - let es', occurs = List.split (List.map (annot_exp env) es) in - TupE es', List.fold_left union Env.empty occurs + let es', occurs = List.split (List.map (annot_exp dims) es) in + TupE es', List.fold_left union Map.empty occurs | CallE (id, as1) -> - let as1', occurs = List.split (List.map (annot_arg env) as1) in - CallE (id, as1'), List.fold_left union Env.empty occurs + let as1', occurs = List.split (List.map (annot_arg dims) as1) in + CallE (id, as1'), List.fold_left union Map.empty occurs | IterE (e1, iter) -> - let e1', occur1 = annot_exp env e1 in - let iter', occur' = annot_iterexp env occur1 iter e.at in + let e1', occur1 = annot_exp dims e1 in + let iter', occur' = annot_iterexp dims occur1 iter e.at in IterE (e1', iter'), occur' | ProjE (e1, i) -> - let e1', occur1 = annot_exp env e1 in + let e1', occur1 = annot_exp dims e1 in ProjE (e1', i), occur1 | UncaseE (e1, op, as_) -> - let e1', occur1 = annot_exp env e1 in - let as', occurs = List.split (List.map (annot_arg env) as_) in + let e1', occur1 = annot_exp dims e1 in + let as', occurs = List.split (List.map (annot_arg dims) as_) in UncaseE (e1', op, as'), List.fold_left union occur1 occurs | OptE None -> - OptE None, Env.empty + OptE None, Map.empty | OptE (Some e1) -> - let e1', occur1 = annot_exp env e1 in + let e1', occur1 = annot_exp dims e1 in OptE (Some e1'), occur1 | TheE e1 -> - let e1', occur1 = annot_exp env e1 in + let e1', occur1 = annot_exp dims e1 in TheE e1', occur1 | ListE es -> - let es', occurs = List.split (List.map (annot_exp env) es) in - ListE es', List.fold_left union Env.empty occurs + let es', occurs = List.split (List.map (annot_exp dims) es) in + ListE es', List.fold_left union Map.empty occurs | LiftE e1 -> - let e1', occur1 = annot_exp env e1 in + let e1', occur1 = annot_exp dims e1 in LiftE e1', occur1 | MemE (e1, e2) -> - let e1', occur1 = annot_exp env e1 in - let e2', occur2 = annot_exp env e2 in + let e1', occur1 = annot_exp dims e1 in + let e2', occur2 = annot_exp dims e2 in MemE (e1', e2'), union occur1 occur2 | CatE (e1, e2) -> - let e1', occur1 = annot_exp env e1 in - let e2', occur2 = annot_exp env e2 in + let e1', occur1 = annot_exp dims e1 in + let e2', occur2 = annot_exp dims e2 in CatE (e1', e2'), union occur1 occur2 | CaseE (atom, as_, e1) -> - let as', occurs = List.split (List.map (annot_arg env) as_) in - let e1', occur1 = annot_exp env e1 in + let as', occurs = List.split (List.map (annot_arg dims) as_) in + let e1', occur1 = annot_exp dims e1 in CaseE (atom, as', e1'), List.fold_left union occur1 occurs | CvtE (e1, nt1, nt2) -> - let e1', occur1 = annot_exp env e1 in + let e1', occur1 = annot_exp dims e1 in CvtE (e1', nt1, nt2), occur1 | SubE (e1, t1, t2) -> - let e1', occur1 = annot_exp env e1 in - let t1', occur2 = annot_typ env t1 in - let t2', occur3 = annot_typ env t2 in + let e1', occur1 = annot_exp dims e1 in + let t1', occur2 = annot_typ dims t1 in + let t2', occur3 = annot_typ dims t2 in SubE (e1', t1', t2'), union occur1 (union occur2 occur3) in {e with it}, occur -and annot_expfield env (atom, as_, e) : expfield * occur = - let as', occurs = List.split (List.map (annot_arg env) as_) in - let e', occur = annot_exp env e in +and annot_expfield dims (atom, as_, e) : expfield * occur = + let as', occurs = List.split (List.map (annot_arg dims) as_) in + let e', occur = annot_exp dims e in (atom, as', e'), List.fold_left union occur occurs -and annot_path env p : path * occur = +and annot_path dims p : path * occur = let it, occur = match p.it with - | RootP -> RootP, Env.empty + | RootP -> RootP, Map.empty | IdxP (p1, e) -> - let p1', occur1 = annot_path env p1 in - let e', occur2 = annot_exp env e in + let p1', occur1 = annot_path dims p1 in + let e', occur2 = annot_exp dims e in IdxP (p1', e'), union occur1 occur2 | SliceP (p1, e1, e2) -> - let p1', occur1 = annot_path env p1 in - let e1', occur2 = annot_exp env e1 in - let e2', occur3 = annot_exp env e2 in + let p1', occur1 = annot_path dims p1 in + let e1', occur2 = annot_exp dims e1 in + let e2', occur3 = annot_exp dims e2 in SliceP (p1', e1', e2'), union occur1 (union occur2 occur3) | DotP (p1, atom, as_) -> - let p1', occur1 = annot_path env p1 in - let as', occurs = List.split (List.map (annot_arg env) as_) in + let p1', occur1 = annot_path dims p1 in + let as', occurs = List.split (List.map (annot_arg dims) as_) in DotP (p1', atom, as'), List.fold_left union occur1 occurs in {p with it}, occur -and annot_iterexp env occur1 (iter, xes) at : iterexp * occur = +and annot_iterexp dims occur1 (iter, xes) at : iterexp * occur = Il.Debug.(log "il.annot_iterexp" (fun _ -> fmt "%s %s" (il_iter iter) (il_occur occur1)) (fun ((iter', _), occur') -> fmt "%s %s" (il_iter iter') (il_occur occur')) ) @@ fun _ -> assert (xes = []); - let iter', (occur2, occur3) = annot_iter env iter in + let iter', (occur2, occur3) = annot_iter dims iter in let occur1'_l = List.filter_map (fun (x, (t, iters)) -> match iters with @@ -585,7 +604,7 @@ and annot_iterexp env occur1 (iter, xes) at : iterexp * occur = *) ignore strip_index; Some (x, (annot_varid' x iter, (IterT (t, iter) $ at, iters'))) - ) (Env.bindings (union occur1 occur3)) + ) (Map.bindings (union occur1 occur3)) in (* TODO(2, rossberg): this should be active if occur1'_l = [] then @@ -593,91 +612,119 @@ and annot_iterexp env occur1 (iter, xes) at : iterexp * occur = *) let xes' = List.map (fun (x, (x', (t, _))) -> x $ at, VarE (x' $ at) $$ at % t) occur1'_l in - (iter', xes'), union (Env.of_seq (List.to_seq (List.map snd occur1'_l))) occur2 + (iter', xes'), union (Map.of_seq (List.to_seq (List.map snd occur1'_l))) occur2 -and annot_sym env g : sym * occur = +and annot_sym dims g : sym * occur = Il.Debug.(log_in "il.annot_sym" (fun _ -> il_sym g)); let it, occur = match g.it with | VarG (x, as1) -> - let as1', occurs = List.split (List.map (annot_arg env) as1) in - VarG (x, as1'), List.fold_left union Env.empty occurs + let as1', occurs = List.split (List.map (annot_arg dims) as1) in + VarG (x, as1'), List.fold_left union Map.empty occurs | NumG _ | TextG _ | EpsG -> - g.it, Env.empty + g.it, Map.empty | SeqG gs -> - let gs', occurs = List.split (List.map (annot_sym env) gs) in - SeqG gs', List.fold_left union Env.empty occurs + let gs', occurs = List.split (List.map (annot_sym dims) gs) in + SeqG gs', List.fold_left union Map.empty occurs | AltG gs -> - let gs', occurs = List.split (List.map (annot_sym env) gs) in - AltG gs', List.fold_left union Env.empty occurs + let gs', occurs = List.split (List.map (annot_sym dims) gs) in + AltG gs', List.fold_left union Map.empty occurs | RangeG (g1, g2) -> - let g1', occur1 = annot_sym env g1 in - let g2', occur2 = annot_sym env g2 in + let g1', occur1 = annot_sym dims g1 in + let g2', occur2 = annot_sym dims g2 in RangeG (g1', g2'), union occur1 occur2 | IterG (g1, iter) -> - let g1', occur1 = annot_sym env g1 in - let iter', occur' = annot_iterexp env occur1 iter g.at in + let g1', occur1 = annot_sym dims g1 in + let iter', occur' = annot_iterexp dims occur1 iter g.at in IterG (g1', iter'), occur' | AttrG (e1, g2) -> - let e1', occur1 = annot_exp env e1 in - let g2', occur2 = annot_sym env g2 in + let e1', occur1 = annot_exp dims e1 in + let g2', occur2 = annot_sym dims g2 in AttrG (e1', g2'), union occur1 occur2 in {g with it}, occur -and annot_arg env a : arg * occur = +and annot_arg dims a : arg * occur = let it, occur = match a.it with | ExpA e -> - let e', occur1 = annot_exp env e in + let e', occur1 = annot_exp dims e in ExpA e', occur1 | TypA t -> - let t', occur1 = annot_typ env t in + let t', occur1 = annot_typ dims t in TypA t', occur1 - | DefA id -> DefA id, Env.empty + | DefA x -> + DefA x, Map.empty | GramA g -> - let g', occur1 = annot_sym env g in + let g', occur1 = annot_sym dims g in GramA g', occur1 in {a with it}, occur -and annot_prem env prem : prem * occur = +and annot_param dims p : param * occur = + let it, occur = + match p.it with + | ExpP (x, t) -> + let occur1 = + if x.it <> "_" && Map.mem x.it dims then + Map.singleton x.it (t, snd (Map.find x.it dims)) + else + Map.empty + in + let t', occur2 = annot_typ dims t in + ExpP (x, t'), union occur1 occur2 + | TypP x -> + TypP x, Map.empty + | DefP (x, ps, t) -> + let ps', occurs = List.split (List.map (annot_param dims) ps) in + let t', occur2 = annot_typ dims t in + DefP (x, ps', t'), List.fold_left union occur2 occurs + | GramP (x, ps, t) -> + let ps', occurs = List.split (List.map (annot_param dims) ps) in + let t', occur2 = annot_typ dims t in + GramP (x, ps', t'), List.fold_left union occur2 occurs + in {p with it}, occur + +and annot_prem dims prem : prem * occur = let it, occur = match prem.it with | RulePr (x, op, e) -> - let e', occur = annot_exp env e in + let e', occur = annot_exp dims e in RulePr (x, op, e'), occur | IfPr e -> - let e', occur = annot_exp env e in + let e', occur = annot_exp dims e in IfPr e', occur | LetPr (e1, e2, ids) -> - let e1', occur1 = annot_exp env e1 in - let e2', occur2 = annot_exp env e2 in + let e1', occur1 = annot_exp dims e1 in + let e2', occur2 = annot_exp dims e2 in LetPr (e1', e2', ids), union occur1 occur2 | ElsePr -> - ElsePr, Env.empty + ElsePr, Map.empty | IterPr (prem1, iter) -> - let prem1', occur1 = annot_prem env prem1 in - let iter', occur' = annot_iterexp env occur1 iter prem.at in + let prem1', occur1 = annot_prem dims prem1 in + let iter', occur' = annot_iterexp dims occur1 iter prem.at in IterPr (prem1', iter'), occur' in {prem with it}, occur -let annot_inst env inst : inst * occur = +(* +let annot_inst dims inst : inst * occur = let InstD (qs, as_, dt) = inst.it in assert (qs = []); - let as', occurs = List.split (List.map (annot_arg env) as_) in - let dt', occur = dt, Env.empty in (* assume dt was already annotated *) + let as', occurs = List.split (List.map (annot_arg dims) as_) in + let dt', occur = dt, Map.empty in (* assume dt was already annotated *) {inst with it = InstD (qs, as', dt')}, List.fold_left union occur occurs +*) (* Top-level entry points *) -let annot_top annot_x env x = - let x', occurs = annot_x env x in - assert (Env.for_all (fun _ (_t, ctx) -> ctx = []) occurs); +let annot_top annot_x dims x = + let x', occurs = annot_x dims x in + assert (Map.for_all (fun _ (_t, ctx) -> ctx = []) occurs); x' -let annot_iter = annot_top (fun env x -> let x', (y, _) = annot_iter env x in x', y) +let annot_iter = annot_top (fun dims x -> let x', (y, _) = annot_iter dims x in x', y) +let annot_typ = annot_top annot_typ let annot_exp = annot_top annot_exp let annot_sym = annot_top annot_sym -let annot_arg = annot_top annot_arg let annot_prem = annot_top annot_prem -let annot_inst = annot_top annot_inst +let annot_arg = annot_top annot_arg +let annot_param = annot_top annot_param diff --git a/spectec/src/frontend/dim.mli b/spectec/src/frontend/dim.mli index 205aee209..55ad85754 100644 --- a/spectec/src/frontend/dim.mli +++ b/spectec/src/frontend/dim.mli @@ -1,21 +1,21 @@ open Il.Ast -module Env : Map.S with type key = string +module Map : module type of Map.Make(String) -type outer = id list -type env = iter list Env.t +type dims = (Util.Source.region * iter list) Map.t +type outer = dims val annot_varid : id -> iter list -> id -val check_def : def -> env (* raises Error.Error *) -val check_inst : outer -> arg list -> deftyp -> env (* raises Error.Error *) -val check_prod : outer -> sym -> exp -> prem list -> env (* raises Error.Error *) -val check_abbr : outer -> sym -> sym -> prem list -> env (* raises Error.Error *) -val check_deftyp : outer -> typ list -> prem list -> env (* raises Error.Error *) +val check : + outer -> + param list -> arg list -> typ list -> exp list -> sym list -> prem list -> + dims (* raises Error.Error *) -val annot_iter : env -> iter -> iter -val annot_exp : env -> exp -> exp -val annot_sym : env -> sym -> sym -val annot_arg : env -> arg -> arg -val annot_prem : env -> prem -> prem -val annot_inst : env -> inst -> inst +val annot_iter : dims -> iter -> iter +val annot_typ : dims -> typ -> typ +val annot_exp : dims -> exp -> exp +val annot_sym : dims -> sym -> sym +val annot_prem : dims -> prem -> prem +val annot_arg : dims -> arg -> arg +val annot_param : dims -> param -> param diff --git a/spectec/src/frontend/dune b/spectec/src/frontend/dune index c627edcd4..4f21e18c8 100644 --- a/spectec/src/frontend/dune +++ b/spectec/src/frontend/dune @@ -1,7 +1,7 @@ (library (name frontend) - (libraries util el il) - (modules lexer id parser parse dim eval elab) + (libraries util el il xl) + (modules lexer id parser parse dim det eval elab) ) (ocamllex diff --git a/spectec/src/frontend/elab.ml b/spectec/src/frontend/elab.ml index fccc5a264..d40424977 100644 --- a/spectec/src/frontend/elab.ml +++ b/spectec/src/frontend/elab.ml @@ -33,6 +33,8 @@ let error_mixop at mixop t msg = let error_id id msg = error id.at (msg ^ " `" ^ id.it ^ "`") +let quote s = "`" ^ s ^ "`" + (* Helpers *) @@ -57,7 +59,61 @@ let tup_typ' ts' at = | [t'] -> t' | _ -> Il.TupT (List.map (fun t' -> "_" $ t'.at, t') ts') $ at -let tup_typ_bind' es' ts' at = +(* Like El.Convert but for IL *) +let varid_of_typ' t = + (match t.it with + | Il.VarT (id, []) -> id.it + | Il.BoolT -> "bool" + | Il.NumT `NatT -> "nat" + | Il.NumT `IntT -> "int" + | Il.NumT `RatT -> "rat" + | Il.NumT `RealT -> "real" + | Il.TextT -> "text" + | _ -> "_" + ) $ t.at + +(* +let tup_typ_bind' xts' at = +(* + in + let expify' t = function + | Some e -> e + | None -> Il.VarE ("_" $ t.at) $$ t.at % t + in + let rec pat'_of_typ' s t : Il.exp option = + let (let* ) = Option.bind in + let module Il = Il.Ast in + match t.it with + | Il.VarT (id, _args) -> + if Set.mem id.it !s then None else + ( + (* Suppress duplicates. *) + s := Set.add id.it !s; + Some (Il.VarE id $$ t.at % t) + ) + | Il.BoolT | Il.NumT _ | Il.TextT -> + let id = varid_of_typ' t in + if Set.mem id.it !s then None else + ( + (* Suppress duplicates. *) + s := Set.add id.it !s; + Some (Il.VarE id $$ t.at % t) + ) + | Il.TupT xts -> + let* es = pats'_of_typs' s (List.map snd xts) in + Some (Il.TupE es $$ t.at % t) + | Il.IterT (t1, iter) -> + let* e1 = pat'_of_typ' s t1 in + Some (Il.IterE (e1, (iter, [])) $$ t.at % t) + + and pats'_of_typs' s ts : Il.exp list option = + let eos = List.map (pat'_of_typ' s) ts in + if List.for_all ((=) None) eos then None else + Some (List.map2 expify' ts eos) + + and pats'_of_typs ts = + List.map2 expify' ts (List.map (pat'_of_typ' (ref Set.empty)) ts) + in (* Translate a pattern into suitable path expressions on a variable *) let rec decompose e' p' s = match e'.it with @@ -66,8 +122,17 @@ let tup_typ_bind' es' ts' at = List.fold_left (fun (s', i) eI' -> decompose eI' (Il.ProjE (p', i) $$ eI'.at % eI'.note) s', i + 1 ) (s, 0) es' |> fst - | Il.IterE _ -> s (* TODO *) + | Il.IterE _ -> + (match decompose_iter e' with + | Some (x, ctx) -> + | None -> s + ) | _ -> assert false + and decompose_iter e' ctx = + match e'.it with + | Il.VarE x -> Some (x, ctx) + | Il.IterE (e1', Il.(Opt | List) as iter) -> decompose_iter e1' (iter::ctx) + | _ -> None and combine es' ts' s = match es', ts' with | [], [] -> [] @@ -86,15 +151,60 @@ let tup_typ_bind' es' ts' at = let xts'' = combine es' ts' s' in (x', Il.Subst.subst_typ s t')::xts'' | _, _ -> assert false - in Il.TupT (combine es' ts' Il.Subst.empty) $ at +*) + let rec decompose t' p' s = + match t'.it with + | Il.VarT (x, []) -> Il.Subst.add_varid s x p' + | Il.TupT xts' -> + List.fold_left (fun (s', i) (_xI', tI') -> + decompose tI' (Il.ProjE (p', i) $$ tI'.at % Il.Subst.subst_typ s' tI') s', i + 1 + ) (s, 0) xts' |> fst + | Il.IterT _ -> + (match decompose_iter t' [] with + | None -> s + | Some x -> Il.Subst.add_varid s x p' + ) + | _ -> s + and decompose_iter t' ctx = + match t'.it with + | Il.VarT (x, []) -> Some (Dim.annot_varid x ctx) + | Il.IterT (t1', iter) -> decompose_iter t1' (iter::ctx) + | _ -> None + and bind_var s x t' = + (* Suppress duplicates to handle non-linear patterns *) + if Il.Subst.mem_varid s x then s else + Il.Subst.add_varid s x (Il.VarE x $$ x.at % t') + and to_bind s = function + | [] -> [] + | t'::ts' -> + let t' = Il.Subst.subst_typ s t' in + let x', s' = + match t'.it with + | Il.VarT (_, []) | Il.BoolT | Il.NumT _ | Il.TextT -> + let x = varid_of_typ' t' in + x, bind_var s x t' + | Il.IterT _ -> + (match decompose_iter t' [] with + | None -> "_" $ t'.at, s + | Some x -> x, bind_var s x t' + ) + | _ -> + let x' = Il.Fresh.fresh_varid "pat" $ t'.at in + let s' = decompose t' (Il.VarE x' $$ t'.at % t') Il.Subst.empty in + (if s' = Il.Subst.empty then "_" $ t'.at else x'), Il.Subst.union s s' + in + (x', t') :: to_bind s' ts' + in + Il.TupT (to_bind Il.Subst.empty ts') $ at +*) -let tup_exp_bind' es' at = +let tup_exp' es' at = Il.TupE es' $$ (at, tup_typ' (List.map note es') at) -let tup_exp' es' at = +let tup_exp_nary' es' at = match es' with | [e'] -> e' - | _ -> tup_exp_bind' es' at + | _ -> tup_exp' es' at let lift_exp' e' iter' = if iter' = Il.Opt then @@ -221,6 +331,7 @@ let bound_env env = gramid = bound_env' env.grams; } + let bind_quant env q = match q.it with | Il.ExpP (x, t) -> env.vars <- bind "variable" env.vars x t @@ -228,8 +339,17 @@ let bind_quant env q = | Il.DefP (x, ps, t) -> env.defs <- bind "definition" env.defs x (ps, t, []) | Il.GramP (x, ps, t) -> env.grams <- bind "grammar" env.grams x (ps, t, [], None) +let refresh_quants env qs = + let qs', s = Il.Fresh.refresh_quants qs in + List.iter (bind_quant env) qs'; + qs', s -let vars env = Map.fold (fun id (at, _) ids -> (id $ at)::ids) env.vars [] + +(* +let vars env outer_dims = + Map.union (fun _ _ y -> Some y) + (Map.map (fun (at, _) -> (at, [])) env.vars) outer_dims +*) let il_arg_of_param p = (match p.it with @@ -241,7 +361,7 @@ let il_arg_of_param p = let il_args_of_params = List.map il_arg_of_param -let to_il_var (_at, t) = t +let to_il_var (_at, t) = (t, Il.Env.Reg) let to_il_def (_at, (ps, t, clauses)) = (ps, t, List.map snd clauses) let to_il_gram (_at, (ps, t, prods, _)) = (ps, t, List.map snd prods) @@ -271,6 +391,148 @@ let to_il_env env = let valid_tid id = id.it <> "" +(* Quantifiers inference *) + +let annot_env env dims = + let vars = + Map.fold (fun x (at, t) vars -> + let x', t' = + match Map.find_opt x dims with + | None -> x, t + | Some (_at, ctx) -> + (Dim.annot_varid (x $ at) ctx).it, + List.fold_left (fun t iter -> Il.IterT (t, iter) $ t.at) t ctx + in Map.add x' (at, t') vars + ) env.vars Map.empty + in {env with vars} + +let make_quants_iter_arg env (free : Il.Free.sets) dims : Il.quant list ref * (module Il.Iter.Arg) = + let module Arg = + struct + include Il.Iter.Skip + + let left = ref free + let acc = ref [] + + let visit_typid id = + if Il.Free.Set.mem id.it !left.typid then ( + acc := !acc @ [Il.TypP id $ id.at]; + left := Il.Free.{!left with typid = Set.remove id.it !left.typid}; + ) + +let visit_exp e = Printf.printf "[visit_exp %s]\n%!" (Il.Debug.il_exp e) + let visit_varid id = +if not Il.Free.(Set.mem id.it !left.varid) then Printf.printf "[visit_id %s] not free\n%!" id.it; +if not (Map.mem id.it dims) then Printf.printf "[visit_id %s] no dims\n%!" id.it; + if Il.Free.(Set.mem id.it !left.varid) then ( +Printf.printf "[visit_id %s]\n%!" id.it; + let t = + try find "variable" env.vars id with Error _ -> + find "variable" env.gvars (strip_var_suffix id) + in + let fwd = Il.Free.(inter (free_typ t) !left) in + if fwd <> Il.Free.empty then + error id.at ("the type of `" ^ id.it ^ "` depends on " ^ + ( Il.Free.Set.(elements fwd.typid @ elements fwd.gramid @ elements fwd.varid @ elements fwd.defid) |> + List.map (fun id -> "`" ^ id ^ "`") |> + String.concat ", " ) ^ + ", which only occur(s) to its right; try to reorder parameters or premises"); + let ctx' = + match Map.find_opt id.it dims with + | None -> [] (* for inherited variables *) + | Some (_, ctx) -> List.map Il.(function Opt -> Opt | _ -> List) ctx + in + let t' = + List.fold_left (fun t iter -> + Il.IterT (t, iter) $ t.at + ) t ctx' + in + acc := !acc @ [Il.ExpP (Dim.annot_varid id ctx', t') $ id.at]; + left := Il.Free.{!left with varid = Set.remove id.it !left.varid}; + ) + + let visit_gramid id = + if Il.Free.(Set.mem id.it !left.gramid) then ( + let ps, t, _gram, _prods' = find "grammar" env.grams id in + let free' = Il.Free.(union (free_params ps) (diff (free_typ t) (bound_params ps))) in + let fwd = Il.Free.(inter free' !left) in + if fwd <> Il.Free.empty then + error id.at ("the type of `" ^ id.it ^ "` depends on " ^ + ( Il.Free.Set.(elements fwd.typid @ elements fwd.gramid @ elements fwd.varid @ elements fwd.defid) |> + List.map (fun id -> "`" ^ id ^ "`") |> + String.concat ", " ) ^ + ", which only occur(s) to its right; try to reorder parameters or premises"); + left := Free.{!left with varid = Set.remove id.it !left.gramid}; + ) + + let visit_defid id = + if Il.Free.Set.mem id.it !left.defid then ( + let ps, t, _ = find "definition" env.defs id in + let free' = Il.Free.(union (free_params ps) (diff (free_typ t) (bound_params ps))) in + let fwd = Il.Free.(inter free' !left) in + if fwd <> Il.Free.empty then + error id.at ("the type of `" ^ (spaceid "definition" id).it ^ "` depends on " ^ + ( Il.Free.Set.(elements fwd.typid @ elements fwd.gramid @ elements fwd.varid @ elements fwd.defid) |> + List.map (fun id -> "`" ^ id ^ "`") |> + String.concat ", " ) ^ + ", which only occur(s) to its right; try to reorder parameters or premises"); + acc := !acc @ [Il.DefP (id, ps, t) $ id.at]; + left := Il.Free.{!left with defid = Set.remove id.it !left.defid}; + ) + end + in Arg.acc, (module Arg) + +let infer_quants env env' dims det ps' as' ts' es' gs' prs' at : Il.quant list = + let env' = annot_env env' dims in + Debug.(log_in_at "il.infer_quants" at + (fun _ -> +Printf.sprintf "as'=[%s] " Il.Debug.(list il_arg as') ^ +Printf.sprintf "es'=[%s] " Il.Debug.(list il_exp es') ^ + "local: " ^ + (Map.fold (fun id _ ids -> + if Map.mem id env.vars then ids else id::ids + ) env'.vars [] |> List.rev |> String.concat " ") ^ + " dims: " ^ + (Map.fold (fun id (_, ctx) ids -> + (id ^ ":" ^ String.concat "" (List.map Il.Print.string_of_iter ctx)) :: ids + ) dims [] |> List.rev |> String.concat " ") ^ + " det: " ^ + (Set.elements det.Det.varid |> String.concat " ") + ) + ); + let bound = bound_env env in + let free = Il.Free.( + free_list free_param ps' ++ + free_list free_arg as' ++ + free_list free_typ ts' ++ + free_list free_exp es' ++ + free_list free_sym gs' ++ + free_list free_prem prs' + -- bound -- bound_list bound_param ps' -- det + ) + in + let det' = Il.Free.(det -- bound) in + if free <> Free.empty then + error at ("definition contains indeterminate variable(s) " ^ + String.concat ", " (List.map quote (Il.Free.Set.elements free.varid))); + let acc_qs, (module Arg : Il.Iter.Arg) = make_quants_iter_arg env' det' dims in + let module Acc = Il.Iter.Make(Arg) in + Acc.(list param ps'); + Acc.(list arg as'); + Acc.(list typ ts'); + Acc.(list exp es'); + Acc.(list sym gs'); + Acc.(list prem prs'); + !acc_qs + +let infer_no_quants env dims det ps' as' ts' es' gs' prs' at = + let qs = infer_quants env env dims det ps' as' ts' es' gs' prs' at in + if qs <> [] then + let bound = Il.Free.bound_quants qs in + error at ("definition contains free variable(s) " ^ + String.concat ", " (List.map quote (Il.Free.Set.elements bound.varid))) + + (* Backtracking *) type trace = Trace of region * string * trace list @@ -680,11 +942,11 @@ let elab_hints tid case = List.map (elab_hint tid case) (* Atoms and Operators *) -let fresh_note note = Atom.{note with def = ""} -let fresh_atom atom = {atom with note = fresh_note atom.note} -let fresh_mixop mixop = Mixop.map_atoms fresh_atom mixop -let fresh_typfield (atom, t_prs, hints) = (fresh_atom atom, t_prs, hints) -let fresh_typcase (mixop, t_prs, hints) = (fresh_mixop mixop, t_prs, hints) +let new_note note = Atom.{note with def = ""} +let new_atom atom = {atom with note = new_note atom.note} +let new_mixop mixop = Mixop.map_atoms new_atom mixop +let new_typfield (atom, t_prs, hints) = (new_atom atom, t_prs, hints) +let new_typcase (mixop, t_prs, hints) = (new_mixop mixop, t_prs, hints) let elab_atom atom tid = assert (valid_tid tid); @@ -776,8 +1038,8 @@ let check_atoms phrase item to_atom list at = ) list (Set.empty, []) in if dups <> [] then - error at (phrase ^ " contains duplicate " ^ item ^ "(s) `" ^ - String.concat "`, `" dups ^ "`") + error at (phrase ^ " contains duplicate " ^ item ^ "(s) " ^ + String.concat ", " (List.map quote dups)) (* Iteration *) @@ -811,14 +1073,16 @@ and elab_typiter env (it : iter) : Il.iter = (* Types *) -and elab_typ env (t : typ) : Il.typ = +and elab_typ env ?(fwd = true) (t : typ) : Il.typ = match t.it with | VarT (x, as_) -> let x' = strip_var_suffix x in if x'.it <> x.it && as_ = [] then elab_typ env (Convert.typ_of_varid x') else - let ps, _ = find "syntax type" env.typs x' in + let ps, k = find "syntax type" env.typs x' in + if not fwd && k = Transp then + error_id x "invalid forward reference to syntax type"; let qs, as', _s = elab_args `Rhs env as_ ps t.at in if qs <> [] then error t.at "illegal expression form in type instantiation"; @@ -837,7 +1101,7 @@ and elab_typ env (t : typ) : Il.typ = | AtomT _ | SeqT _ | InfixT _ | BrackT _ -> error t.at "this type is only allowed in type definitions" -and elab_typ_definition env tid (t : typ) : dots * Il.deftyp * dots = +and elab_typ_definition env dims tid (t : typ) : dots * Il.deftyp * dots = Debug.(log_at "el.elab_typ_definition" t.at (fun _ -> fmt "%s = %s" tid.it (el_typ t)) (fun (_, dt, _) -> il_deftyp dt) @@ -853,7 +1117,7 @@ and elab_typ_definition env tid (t : typ) : dots * Il.deftyp * dots = let tfs1, dots = checkpoint (as_struct_typ "own type" env Check t1 t1.at) in if dots = NoDots then error t.at "extension of non-extensible syntax type"; - List.map fresh_typfield tfs1 (* ensure atom annotations are fresh *) + List.map new_typfield tfs1 (* ensure atom annotations are fresh *) in let tfs2 = concat_map_filter_nl_list (fun t -> @@ -861,10 +1125,10 @@ and elab_typ_definition env tid (t : typ) : dots * Il.deftyp * dots = let tfs, dots = checkpoint (as_struct_typ "parent type" env Infer t' t'.at) in if dots = Dots then error t.at "inclusion of incomplete syntax type"; - List.map fresh_typfield tfs (* ensure atom annotations are fresh *) + List.map new_typfield tfs (* ensure atom annotations are fresh *) ) ts in - let tfs' = tfs1 @ tfs2 @ map_filter_nl_list (elab_typfield env tid t.at) tfs in + let tfs' = tfs1 @ tfs2 @ map_filter_nl_list (elab_typfield env dims tid t.at) tfs in check_atoms "record" "field" Fun.id tfs' t.at; dots1, Il.StructT tfs' $ t.at, dots2 | CaseT (dots1, ts, tcs, dots2) -> @@ -876,7 +1140,7 @@ and elab_typ_definition env tid (t : typ) : dots * Il.deftyp * dots = let tcs1, dots = checkpoint (as_variant_typ "own type" env Check t1 t1.at) in if dots = NoDots then error t.at "extension of non-extensible syntax type"; - List.map fresh_typcase tcs1 (* ensure atom annotations are fresh *) + List.map new_typcase tcs1 (* ensure atom annotations are fresh *) in let tcs2 = concat_map_filter_nl_list (fun t -> @@ -884,17 +1148,17 @@ and elab_typ_definition env tid (t : typ) : dots * Il.deftyp * dots = let tcs, dots = checkpoint (as_variant_typ "parent type" env Infer t' t'.at) in if dots = Dots then error t.at "inclusion of incomplete syntax type"; - List.map fresh_typcase tcs (* ensure atom annotations are fresh *) + List.map new_typcase tcs (* ensure atom annotations are fresh *) ) ts in - let tcs' = tcs1 @ tcs2 @ map_filter_nl_list (elab_typcase env tid t.at) tcs in + let tcs' = tcs1 @ tcs2 @ map_filter_nl_list (elab_typcase env dims tid t.at) tcs in check_atoms "variant" "case" (fun op -> Option.get (Mixop.head op)) tcs' t.at; dots1, Il.VariantT tcs' $ t.at, dots2 | ConT tc -> - let tc' = elab_typcon env tid t.at tc in + let tc' = elab_typcon env dims tid t.at tc in NoDots, Il.VariantT [tc'] $ t.at, NoDots | RangeT tes -> - let ts_fes' = map_filter_nl_list (elab_typenum env tid) tes in + let ts_fes' = map_filter_nl_list (elab_typenum env dims tid) tes in let t', fe' = List.fold_left (fun (t, fe') (tI, feI') -> (if narrow_typ env tI t then t else tI), @@ -929,9 +1193,9 @@ and typ_rep env t : Il.typ = | Il.TupT [_, t1] -> typ_rep env t1 | t' -> t' $ t.at -and elab_typfield env tid at (tf : typfield) : Il.typfield = +and elab_typfield env dims tid at (tf : typfield) : Il.typfield = let atom, (t, prems), hints = tf in - let _mixop, qs, t', prems' = elab_typ_notation' env tid at t prems in + let _mixop, qs, t', prems' = elab_typ_notation env dims tid at t prems in let hints' = elab_hints tid "" hints in let t'' = match t'.it with @@ -940,19 +1204,19 @@ and elab_typfield env tid at (tf : typfield) : Il.typfield = in (elab_atom atom tid, (qs, t'', prems'), hints') -and elab_typcase env tid at (tc : typcase) : Il.typcase = +and elab_typcase env dims tid at (tc : typcase) : Il.typcase = let _atom, (t, prems), hints = tc in - let mixop, qs, t', prems' = elab_typ_notation' env tid at t prems in + let mixop, qs, t', prems' = elab_typ_notation env dims tid at t prems in let hints' = elab_hints tid "" hints in (mixop, (qs, t', prems'), hints') -and elab_typcon env tid at (tc : typcon) : Il.typcase = +and elab_typcon env dims tid at (tc : typcon) : Il.typcase = let (t, prems), hints = tc in - let mixop, qs, t', prems' = elab_typ_notation' env tid at t prems in + let mixop, qs, t', prems' = elab_typ_notation env dims tid at t prems in let hints' = elab_hints tid tid.it hints in (mixop, (qs, t', prems'), hints') -and elab_typenum env tid (te : typenum) : Il.typ * (Il.exp -> numtyp -> Il.exp) = +and elab_typenum env outer_dims tid (te : typenum) : Il.typ * (Il.exp -> numtyp -> Il.exp) = assert (valid_tid tid); let e1, e2o = te in let _e1' = elab_exp env e1 (Il.NumT `IntT $ e1.at) in (* ensure it's <= int *) @@ -962,6 +1226,9 @@ and elab_typenum env tid (te : typenum) : Il.typ * (Il.exp -> numtyp -> Il.exp) t1, fun eid' nt -> let qs1, e1' = checkpoint (elab_exp env e1 (Il.NumT nt $ e1.at)) in (* redo with overall type *) + let dims = Dim.check outer_dims [] [] [] [e1'] [] [] in + let e1' = Dim.annot_exp dims e1' in + infer_no_quants env dims Det.empty [] [] [] [e1'] [] [] e1.at; if qs1 <> [] then error e1.at "illegal expression form in range type"; Il.(CmpE (`EqOp, `BoolT, eid', e1') $$ e1'.at % (Il.BoolT $ e1.at)) @@ -973,6 +1240,10 @@ and elab_typenum env tid (te : typenum) : Il.typ * (Il.exp -> numtyp -> Il.exp) fun eid' nt -> let qs1, e1' = checkpoint (elab_exp env e1 (Il.NumT nt $ e1.at)) in let qs2, e2' = checkpoint (elab_exp env e2 (Il.NumT nt $ e2.at)) in + let dims = Dim.check outer_dims [] [] [] [e1'; e2'] [] [] in + let e1' = Dim.annot_exp dims e1' in + let e2' = Dim.annot_exp dims e2' in + infer_no_quants env dims Det.empty [] [] [] [e1'; e2'] [] [] at; if qs1 <> [] then error e1.at "illegal expression form in range type"; if qs2 <> [] then @@ -983,132 +1254,119 @@ and elab_typenum env tid (te : typenum) : Il.typ * (Il.exp -> numtyp -> Il.exp) ) $$ at % (Il.BoolT $ at)) - -(* Like Convert.* but for IL *) -and varid_of_typ' t = - (match t.it with - | Il.VarT (id, _) -> id.it - | Il.BoolT -> "bool" - | Il.NumT `NatT -> "nat" - | Il.NumT `IntT -> "int" - | Il.NumT `RatT -> "rat" - | Il.NumT `RealT -> "real" - | Il.TextT -> "text" - | _ -> "_" - ) $ t.at - -and expify' t = function - | Some e -> e - | None -> Il.VarE ("_" $ t.at) $$ t.at % t - -and pat'_of_typ' s t : Il.exp option = - let (let*) = Option.bind in - let module Il = Il.Ast in - match t.it with - | Il.VarT (id, _args) -> - if Set.mem id.it !s then None else - ( - (* Suppress duplicates. *) - s := Set.add id.it !s; - Some (Il.VarE id $$ t.at % t) - ) - | Il.BoolT | Il.NumT _ | Il.TextT -> - let id = varid_of_typ' t in - if Set.mem id.it !s then None else - ( - (* Suppress duplicates. *) - s := Set.add id.it !s; - Some (Il.VarE id $$ t.at % t) - ) - | Il.TupT xts -> - let* es = pats'_of_typs' s (List.map snd xts) in - Some (Il.TupE es $$ t.at % t) - | Il.IterT (t1, iter) -> - let* e1 = pat'_of_typ' s t1 in - Some (Il.IterE (e1, (iter, [])) $$ t.at % t) - -and pats'_of_typs' s ts : Il.exp list option = - let eos = List.map (pat'_of_typ' s) ts in - if List.for_all ((=) None) eos then None else - Some (List.map2 expify' ts eos) - -and pats'_of_typs ts = List.map2 expify' ts (List.map (pat'_of_typ' (ref Set.empty)) ts) - -and elab_typ_notation' env tid at (t : typ) (prems : prem nl_list) : +and elab_typ_notation env outer_dims tid at (t : typ) (prems : prem nl_list) : Il.mixop * Il.quant list * Il.typ * Il.prem list = assert (valid_tid tid); let env' = local_env env in - let mixop, ts' = elab_typ_notation env' tid t in + let mixop, xts' = elab_typ_notation' env' tid t in + let xs', ts' = List.split xts' in let qss, premss' = List.split (map_filter_nl_list (elab_prem env') prems) in - let es' = pats'_of_typs ts' in let prems' = List.concat premss' in - let dims = Dim.check_deftyp (vars env) ts' prems' in - let es' = List.map (Dim.annot_exp dims) es' in - let t' = tup_typ_bind' es' ts' t.at in +Printf.printf "--- 1 ---\n%!"; + let dims = Dim.check outer_dims [] [] ts' [] [] prems' in +Printf.printf "--- 2 ---\n%!"; + let ts' = List.map (Dim.annot_typ dims) ts' in let prems' = List.map (Dim.annot_prem dims) prems' in - let det = Free.(diff (union (det_typ t) (det_prems prems)) (bound_env env)) in - let free = Free.(diff (union (free_typ t) (free_prems prems)) (union det (bound_env env))) in - if free <> Free.empty then -(Printf.printf "[notation] t = %s\n%!" (Debug.el_typ t); -List.iteri (fun i e -> Printf.printf "[notation] t%d' = %s\n%!" i (Il.Print.string_of_typ e)) ts'; -List.iteri (fun i e -> Printf.printf "[notation] e%d' = %s\n%!" i (Il.Print.string_of_exp e)) es'; - error at ("premise contains indeterminate variable(s) `" ^ - String.concat "`, `" (Free.Set.elements free.varid) ^ "`"); -); +Printf.printf "--- 3 ---\n%!"; + let t' = Il.TupT (List.combine xs' ts') $ t.at in + let det = Det.(det_typ t' ++ det_list det_prem prems') in +Printf.printf "--- 4 ---\n%!"; + let qs = infer_quants env env' dims det [] [] [t'] [] [] prems' at in + mixop, qs @ List.concat qss, t', prems' +(* + Debug.(log_in_at "il.infer_quants" at + (fun _ -> + "local: " ^ + (Map.fold (fun id _ ids -> + if Map.mem id env.vars then ids else id::ids + ) env'.vars [] |> List.rev |> String.concat " ") ^ + " dims: " ^ + (Map.fold (fun id (_, ctx) ids -> + (id ^ ":" ^ String.concat "" (List.map Il.Print.string_of_iter ctx)) :: ids + ) dims [] |> List.rev |> String.concat " ") ^ + " det: " ^ + (Set.elements det.Det.varid |> String.concat " ") + ) + ); + let env' = annot_env env' dims in let acc_qs, (module Arg : Il.Iter.Arg) = make_quants_iter_arg env' det dims in +Printf.printf "--- 5 ---\n%!"; let module Acc = Il.Iter.Make(Arg) in Acc.typ t'; Acc.prems prems'; +Printf.printf "--- 6 ---\n%!"; + let free = + Il.Free.( + free_prems prems' + -- bound_env env -- bound_params (!acc_qs @ List.concat qss) -- det + ) + in + if free <> Free.empty then +(Printf.printf "[notation] t = %s\n%!" (Debug.el_typ t); +List.iteri (fun i t -> Printf.printf "[notation] t%d' = %s\n%!" (i+1) (Il.Print.string_of_typ t)) ts'; +List.iteri (fun i pr -> Printf.printf "[notation] pr%d' = %s\n%!" (i+1) (Il.Print.string_of_prem pr)) prems'; +Printf.printf "X in env = %b\n%!" (Map.mem "X" env.vars); +Printf.printf "X* in env = %b\n%!" (Map.mem "X*" env.vars); +let frt = Il.Free.free_typ t' in +let frp = Il.Free.free_prems prems' in +let detp = Det.(det_list det_prem prems') in +let bp = Il.Free.bound_params (!acc_qs @ List.concat qss) in +Printf.printf "free(t') = %s\n%!" (String.concat ", " (List.map quote (Free.Set.elements frt.varid))); +Printf.printf "free(prs') = %s\n%!" (String.concat ", " (List.map quote (Free.Set.elements frp.varid))); +Printf.printf "det(prs') = %s\n%!" (String.concat ", " (List.map quote (Free.Set.elements detp.varid))); +Printf.printf "bound(qs') = %s\n%!" (String.concat ", " (List.map quote (Free.Set.elements bp.varid))); + error at ("premise contains indeterminate variable(s) " ^ + String.concat ", " (List.map quote (Free.Set.elements free.varid))); +); mixop, !acc_qs @ List.concat qss, t', prems' +*) -and elab_typ_notation env tid (t : typ) : Il.mixop * Il.typ list = +and elab_typ_notation' env tid (t : typ) : Il.mixop * (Il.id * Il.typ) list = Debug.(log_at "el.elab_typ_notation" t.at (fun _ -> fmt "(%s) %s" tid.it (el_typ t)) - (fun (mixop, ts') -> fmt "%s(%s)" (il_mixop mixop) (list il_typ ts')) + (fun (mixop, xts') -> fmt "%s(%s)" (il_mixop mixop) (list (pair il_id ":" il_typ) xts')) ) @@ fun _ -> assert (valid_tid tid); match t.it with - | VarT (x, as_) -> - let x' = strip_var_suffix x in - (match (Convert.typ_of_varid x').it with - | VarT _ -> - (match find "syntax type" env.typs x' with - | _, Transp -> error_id x "invalid forward reference to syntax type" - | ps, _ -> - let qs, as', _s = elab_args `Rhs env as_ ps t.at in - if qs <> [] then - error t.at "illegal expression forms in type instantiation"; - let t' = Il.VarT (x', as') $ t.at in - Arg (), [t'] - ) - | t1 -> - assert (as_ = []); - let t' = elab_typ env (t1 $ x.at) in - Arg (), [t'] - ) | AtomT atom -> let atom' = elab_atom atom tid in Atom atom', [] | SeqT [] -> Seq [], [] | SeqT (t1::ts2) -> - let mixop1, ts1' = elab_typ_notation env tid t1 in - let mixop2, ts2' = elab_typ_notation env tid (SeqT ts2 $ t.at) in + let mixop1, xts1' = elab_typ_notation' env tid t1 in + let mixop2, xts2' = elab_typ_notation' env tid (SeqT ts2 $ t.at) in (match mixop2 with Seq mixops2 -> Seq (mixop1::mixops2) | _ -> assert false), - ts1' @ ts2' + xts1' @ xts2' | InfixT (t1, atom, t2) -> - let mixop1, ts1' = elab_typ_notation env tid t1 in - let mixop2, ts2' = elab_typ_notation env tid t2 in + let mixop1, xts1' = elab_typ_notation' env tid t1 in + let mixop2, xts2' = elab_typ_notation' env tid t2 in let atom' = elab_atom atom tid in - Infix (mixop1, atom', mixop2), ts1' @ ts2' + Infix (mixop1, atom', mixop2), xts1' @ xts2' | BrackT (l, t1, r) -> - let mixop1, ts1' = elab_typ_notation env tid t1 in + let mixop1, xts1' = elab_typ_notation' env tid t1 in let l' = elab_atom l tid in let r' = elab_atom r tid in - Brack (l', mixop1, r'), ts1' + Brack (l', mixop1, r'), xts1' + | VarT _ | IterT _ | ParenT _ -> + let rec id_of t ctx = + match t.it with + | VarT (x, []) -> Dim.annot_varid x ctx + | ParenT t1 -> id_of t1 ctx + | IterT (t1, iter) -> + let iter' = match iter with Opt -> Il.Opt | _ -> Il.List in + id_of t1 (iter'::ctx) + | _ -> "_" $ t.at + in + let x' = id_of t [] in + let t' = elab_typ env ~fwd: false t in + (* Ignore name if already bound. This may happen if the same type name + * occurs multiple times as a parameter. *) + if not (bound env.vars x') then env.vars <- bind "variable" env.vars x' t'; + Arg (), [x', t'] | _ -> let t' = elab_typ env t in - Arg (), [t'] + Arg (), ["_" $ t.at, t'] (* Expressions *) @@ -1229,10 +1487,10 @@ and infer_exp' env e : (Il.quant list * Il.exp' * Il.typ') attempt = if dots = Dots then error e1.at "used record type is only partially defined at this point"; let* _, (qsF, tF, prems), _ = attempt (find_field tfs atom e1.at) t1 in - let qsF', s = Il.Fresh.refresh_quants qsF in - let as' = il_args_of_params qsF' in + let qsF', s = refresh_quants env qsF in + let qas' = il_args_of_params qsF' in let tF' = Il.Subst.subst_typ s tF in - let e' = Il.DotE (e1', elab_atom atom (expand_id env t1), as') in + let e' = Il.DotE (e1', elab_atom atom (expand_id env t1), qas') in let e'' = if prems = [] then e' else Il.ProjE (e' $$ e.at % tF', 0) in Ok (qs1 @ qsF', e'', tF'.it) | CommaE (e1, e2) -> @@ -1528,14 +1786,15 @@ and elab_expfields env tid (efs : expfield list) (tfs : Il.typfield list) (t0 : | [], [] -> Ok ([], []) | (atom1, e)::efs2, (atom2, (qsF, tF, prems), _)::tfs2 when atom1.it = atom2.it -> let* qs1, e' = elab_exp env e tF in - let* qs2, efs2' = elab_expfields env tid efs2 tfs2 t0 at in - let e' = if prems = [] then e' else tup_exp_bind' [e'] e.at in - let as' = il_args_of_params qsF in - Ok (qs1 @ qs2, (elab_atom atom1 tid, as', e') :: efs2') + let qsF', s = refresh_quants env qsF in + let* qs2, efs2' = elab_expfields env tid efs2 (List.map (Il.Subst.subst_typfield s) tfs2) t0 at in + let e' = if prems = [] then e' else tup_exp' [e'] e.at in + let qas' = il_args_of_params qsF' in + Ok (qs1 @ qs2, (elab_atom atom1 tid, qas', e') :: efs2') | _, (atom, (_qs, t, prems), _)::tfs2 -> let atom' = string_of_atom atom in let* qs1, e1' = cast_empty ("omitted record field `" ^ atom' ^ "`") env t at in - let e' = if prems = [] then e1' else tup_exp_bind' [e1'] at in + let e' = if prems = [] then e1' else tup_exp' [e1'] at in let* qs2, efs2' = elab_expfields env tid efs tfs2 t0 at in Ok (qs1 @ qs2, (elab_atom atom tid, [], e') :: efs2') | (atom, e)::_, [] -> @@ -1574,8 +1833,8 @@ and elab_exp_notation env tid (e : exp) (qs, t1, mixop, not) t : (Il.quant list (* Convert notation into applications of mixin operators *) assert (valid_tid tid); let* qs', es', s = elab_exp_notation' env tid e not in - let as' = Il.Subst.subst_args s (il_args_of_params qs) in - Ok (qs', Il.CaseE (mixop, as', Il.TupE es' $$ e.at % t1) $$ e.at % t) + let qas' = Il.Subst.subst_args s (il_args_of_params qs) in + Ok (qs', Il.CaseE (mixop, qas', Il.TupE es' $$ e.at % t1) $$ e.at % t) and elab_exp_notation' env tid (e : exp) not : (Il.quant list * Il.exp list * Il.Subst.t) attempt = Debug.(log_at "el.elab_exp_notation" e.at @@ -1722,11 +1981,12 @@ and elab_exp_variant env tid (e : exp) (tcs : Il.typcase list) t at : (Il.quant in let* atom = head e in let* mixop, (qsC, tC, _prems), _ = attempt (find_case_atom tcs atom atom.at) t in - let* xtsC = as_tup_typ "tuple" env Check tC e.at in + let qsC', s = refresh_quants env qsC in + let* xtsC = as_tup_typ "tuple" env Check (Il.Subst.subst_typ s tC) e.at in let not = Mixop.apply mixop (List.map snd xtsC) in let* qs, es', s = elab_exp_notation' env tid e not in - let as' = Il.Subst.subst_args s (il_args_of_params qsC) in - Ok (qs, Il.CaseE (mixop, as', tup_exp_bind' es' e.at) $$ at % t) + let qas' = Il.Subst.subst_args s (il_args_of_params qsC') in + Ok (qs, Il.CaseE (mixop, qas', tup_exp' es' e.at) $$ at % t) (* @@ -1760,7 +2020,7 @@ and elab_path' env (p : path) (t : Il.typ) : (Il.quant list * Il.path' * Il.typ) if dots = Dots then error p1.at "used record type is only partially defined at this point"; let* _, (qsF, tF, _prems), _ = attempt (find_field tfs atom p1.at) t1 in - let qsF', s = Il.Fresh.refresh_quants qsF in + let qsF', s = refresh_quants env qsF in let as' = il_args_of_params qsF' in let tF' = Il.Subst.subst_typ s tF in Ok (qs1 @ qsF, Il.DotP (p1', elab_atom atom (expand_id env t1), as'), tF') @@ -1785,10 +2045,10 @@ and cast_empty phrase env (t : Il.typ) at : (Il.quant list * Il.exp) attempt = (match expand_iter_notation env t with | IterT (_, iter) as t1 -> (*TODO*) - let mixop, ts', _ts = elab_typ_notation env (expand_id env t) (t1 $ t.at) in + let mixop, ts', _ts = elab_typ_notation' env (expand_id env t) (t1 $ t.at) in assert (List.length ts' = 1); let e1' = if iter = Opt then Il.OptE None else Il.ListE [] in - Ok ([], Il.CaseE (mixop, tup_exp_bind' [e1' $$ at % List.hd ts'] at) $$ at % t') + Ok ([], Il.CaseE (mixop, tup_exp' [e1' $$ at % List.hd ts'] at) $$ at % t') | _ -> fail_typ env at phrase t ) *) @@ -1823,23 +2083,23 @@ and cast_exp' phrase env (e' : Il.exp) t1 t2 : (Il.quant list * Il.exp') attempt (match expand_def env t1', expand_def env t2' with | (Il.VariantT [mixop1, (qs1, tC1, _), _], NoDots), (Il.VariantT [mixop2, (qs2, tC2, _), _], NoDots) -> - let qs1', s1 = Il.Fresh.refresh_quants qs1 in - let qs2', s2 = Il.Fresh.refresh_quants qs2 in + let qs1', s1 = refresh_quants env qs1 in + let qs2', s2 = refresh_quants env qs2 in let tC1' = Il.Subst.subst_typ s1 tC1 in let tC2' = Il.Subst.subst_typ s2 tC2 in - let as1' = il_args_of_params qs1' in - let as2' = il_args_of_params qs2' in + let qas1' = il_args_of_params qs1' in + let qas2' = il_args_of_params qs2' in if mixop1 = mixop2 then ( (* Two ConT's with the same operator can be cast pointwise *) let ts1 = match tC1'.it with Il.TupT xts -> List.map snd xts | _ -> [tC1'] in let ts2 = match tC2'.it with Il.TupT xts -> List.map snd xts | _ -> [tC2'] in - let e'' = Il.UncaseE (e', mixop1, as1') $$ e'.at % tC1' in + let e'' = Il.UncaseE (e', mixop1, qas1') $$ e'.at % tC1' in let es' = List.mapi (fun i t1I -> Il.ProjE (e'', i) $$ e''.at % t1I) ts1 in let* qss_es'' = map2_attempt (fun eI' (t1I, t2I) -> cast_exp phrase env eI' t1I t2I) es' (List.combine ts1 ts2) in let qss, es'' = List.split qss_es'' in - Ok (qs1' @ qs2' @ List.concat qss, Il.CaseE (mixop2, as2', tup_exp_bind' es'' e'.at)) + Ok (qs1' @ qs2' @ List.concat qss, Il.CaseE (mixop2, qas2', tup_exp' es'' e'.at)) ) else ( @@ -1855,7 +2115,7 @@ and cast_exp' phrase env (e' : Il.exp) t1 t2 : (Il.quant list * Il.exp') attempt ) in match expand env tC1' with | Il.TupT [_, t11'] -> - let e'' = Il.UncaseE (e', mixop1, as1') $$ e'.at % t11' in + let e'' = Il.UncaseE (e', mixop1, qas1') $$ e'.at % t11' in let* qs, e''' = cast_exp' phrase env (Il.ProjE (e'', 0) $$ e'.at % t11') t11' t2' in Ok (qs1' @ qs, e''') | _ -> fail_typ2 env e'.at phrase t1 t2 "" @@ -1916,12 +2176,12 @@ and cast_exp' phrase env (e' : Il.exp) t1 t2 : (Il.quant list * Il.exp') attempt (il_typ (reduce env t2)) ) ); - let qs1', s1 = Il.Fresh.refresh_quants qs1 in + let qs1', s1 = refresh_quants env qs1 in let tC1' = Il.Subst.subst_typ s1 tC1 in - let as1' = il_args_of_params qs1' in + let qas1' = il_args_of_params qs1' in match expand env tC1' with | Il.TupT [_, t11'] -> - let e'' = Il.UncaseE (e', mixop1, as1') $$ e'.at % t11' in + let e'' = Il.UncaseE (e', mixop1, qas1') $$ e'.at % t11' in let* qs, e''' = cast_exp' phrase env (Il.ProjE (e'', 0) $$ e'.at % t11') t11' t2' in Ok (qs1' @ qs, e''') | _ -> fail_typ2 env e'.at phrase t1 t2 "" @@ -1936,13 +2196,13 @@ and cast_exp' phrase env (e' : Il.exp) t1 t2 : (Il.quant list * Il.exp') attempt (match expand_def env t2' with | Il.VariantT [mixop2, (qs2, tC2, _), _], NoDots -> (* A ConT payload can be cast to the ConT *) - let qs2', s2 = Il.Fresh.refresh_quants qs2 in + let qs2', s2 = refresh_quants env qs2 in let tC2' = Il.Subst.subst_typ s2 tC2 in - let as2' = il_args_of_params qs2' in + let qas2' = il_args_of_params qs2' in (match expand env tC2' with | Il.TupT [_, t21'] -> let* qs, e1' = cast_exp phrase env e' t1' t21' in - Ok (qs2' @ qs, Il.CaseE (mixop2, as2', Il.TupE [e1'] $$ e'.at % tC2')) + Ok (qs2' @ qs, Il.CaseE (mixop2, qas2', Il.TupE [e1'] $$ e'.at % tC2')) | _ -> fail_typ2 env e'.at phrase t1 t2 "" ) @@ -1974,11 +2234,11 @@ and cast_exp' phrase env (e' : Il.exp) t1 t2 : (Il.quant list * Il.exp') attempt choice env [ (fun env -> (* Two ConT's with the same operator can be cast pointwise *) - let mixop1, qs1, t1', _prems1', ts1 = elab_typ_notation' env (expand_id env t1) t1.at t11 [] in - let mixop2, qs2, _t2', _prems2', ts2 = elab_typ_notation' env (expand_id env t2) t2.at t21 [] in + let mixop1, qs1, t1', _prems1', ts1 = elab_typ_notation env (expand_id env t1) t1.at t11 [] in + let mixop2, qs2, _t2', _prems2', ts2 = elab_typ_notation env (expand_id env t2) t2.at t21 [] in (* - let mixop1, ts1', ts1 = elab_typ_notation env (expand_id env t1) t11 in - let mixop2, _ts2', ts2 = elab_typ_notation env (expand_id env t2) t21 in + let mixop1, ts1', ts1 = elab_typ_notation' env (expand_id env t1) t11 in + let mixop2, _ts2', ts2 = elab_typ_notation' env (expand_id env t2) t21 in *) if mixop1 <> mixop2 then fail_typ2 env e'.at phrase t1 t2 "" else @@ -1988,7 +2248,7 @@ and cast_exp' phrase env (e' : Il.exp) t1 t2 : (Il.quant list * Il.exp') attempt let* qss_es'' = map2_attempt (fun eI' (t1I, t2I) -> cast_exp phrase env eI' t1I t2I) es' (List.combine ts1 ts2) in let qss, es'' = List.split qss_es'' in - Ok (qs1 @ qs2 @ List.concat qss, Il.CaseE (mixop2, tup_exp_bind' es'' e'.at)) + Ok (qs1 @ qs2 @ List.concat qss, Il.CaseE (mixop2, tup_exp' es'' e'.at)) ); (fun env -> (* Two unary ConT's can be cast transitively *) @@ -1998,9 +2258,9 @@ and cast_exp' phrase env (e' : Il.exp) t1 t2 : (Il.quant list * Il.exp') attempt (el_typ (expand_nondef env t2)) ) ); - let mixop, qs, t1', _prems', ts = elab_typ_notation' env (expand_id env t1) t1.at t11 [] in + let mixop, qs, t1', _prems', ts = elab_typ_notation env (expand_id env t1) t1.at t11 [] in (* - let mixop, ts', ts = elab_typ_notation env (expand_id env t1) t11 in + let mixop, ts', ts = elab_typ_notation' env (expand_id env t1) t11 in *) let* t111, t111' = match ts, t1'.it with [t111], Il.TupT [_, t111'] -> Ok (t111, t111') | _ -> fail_typ2 env e'.at phrase t1 t2 "" in @@ -2033,9 +2293,9 @@ and cast_exp' phrase env (e' : Il.exp) t1 t2 : (Il.quant list * Il.exp') attempt (el_typ (expand_nondef env t2)) ) ); - let mixop, qs, t1', _prems', ts = elab_typ_notation' env (expand_id env t1) t1.at t11 [] in + let mixop, qs, t1', _prems', ts = elab_typ_notation env (expand_id env t1) t1.at t11 [] in (* - let mixop, ts', ts = elab_typ_notation env (expand_id env t1) t11 in + let mixop, ts', ts = elab_typ_notation' env (expand_id env t1) t11 in *) let* t111, t111' = match ts, t1'.it with [t111], Il.TupT [_, t111'] -> Ok (t111, t111') | _ -> fail_typ2 env e'.at phrase t1 t2 "" in @@ -2047,9 +2307,9 @@ Printf.printf "[3] %s => %s\n%!" (Debug.el_typ t1) (Debug.il_typ t1'); ] | _, ConT ((t21, _), _) -> (* A ConT payload can be cast to the ConT *) - let mixop, qs, t', _prems', ts = elab_typ_notation' env (expand_id env t2) t2.at t21 [] in + let mixop, qs, t', _prems', ts = elab_typ_notation env (expand_id env t2) t2.at t21 [] in (* - let mixop, _ts', ts = elab_typ_notation env (expand_id env t2) t21 in + let mixop, _ts', ts = elab_typ_notation' env (expand_id env t2) t21 in *) let* t211 = match ts with [t211] -> Ok t211 | _ -> fail_typ2 env e'.at phrase t1 t2 "" in @@ -2157,7 +2417,7 @@ and elab_prem env (pr : prem) : Il.quant list * Il.prem list = | RulePr (id, e) -> let mixop, not, _, _ = find "relation" env.rels id in let qs, es', _s = checkpoint (elab_exp_notation' env id e not) in - qs, [Il.RulePr (id, mixop, tup_exp' es' e.at) $ pr.at] + qs, [Il.RulePr (id, mixop, tup_exp_nary' es' e.at) $ pr.at] | IfPr e -> let qs, e' = checkpoint (elab_exp env e (Il.BoolT $ e.at)) in qs, [Il.IfPr e' $ pr.at] @@ -2331,7 +2591,7 @@ and cast_sym env (g' : Il.sym) t1 t2 : (Il.quant list * Il.sym) attempt = fail_typ2 env g'.at "symbol" t1 t2 "" ) -and elab_prod env (prod : prod) (t : Il.typ) : Il.prod list = +and elab_prod env outer_dims (prod : prod) (t : Il.typ) : Il.prod list = Debug.(log_in_at "el.elab_prod" prod.at (fun _ -> fmt "%s : %s" (el_prod prod) (il_typ t)) ); @@ -2358,31 +2618,35 @@ and elab_prod env (prod : prod) (t : Il.typ) : Il.prod list = in let qss3, premss' = List.split (map_filter_nl_list (elab_prem env') prems) in let prems' = List.concat premss' in - let dims = Dim.check_prod (vars env) g' e' prems' in + let dims = Dim.check outer_dims [] [] [] [e'] [g'] prems' in let g' = Dim.annot_sym dims g' in let e' = Dim.annot_exp dims e' in let prems' = List.map (Dim.annot_prem dims) prems' in - let det = Free.(diff (union (det_sym g) (det_prems prems)) (bound_env env)) in - let free = Free.(diff (free_prod prod) (union (det_prod prod) (bound_env env'))) in - if free <> Free.empty then - error prod.at ("grammar rule contains indeterminate variable(s) `" ^ - String.concat "`, `" (Free.Set.elements free.varid) ^ "`"); - let acc_qs, (module Arg : Il.Iter.Arg) = make_quants_iter_arg env' det dims in - let module Acc = Il.Iter.Make(Arg) in - Acc.sym g'; - Acc.exp e'; - Acc.prems prems'; - let prod' = Il.ProdD (!acc_qs @ qs1 @ qs2 @ List.concat qss3, g', e', prems') $ prod.at in + let det = Det.(det_exp e' ++ det_sym g' ++ det_list det_prem prems') in + let qs = infer_quants env env' dims det [] [] [] [e'] [g'] prems' prod.at in + let prod' = Il.ProdD (qs @ qs1 @ qs2 @ List.concat qss3, g', e', prems') $ prod.at in + let free = Il.Free.(free_prod prod' -- bound_env env') in + if free <> Il.Free.empty then + error prod.at ("grammar rule contains indeterminate variable(s) " ^ + String.concat ", " (List.map quote (Free.Set.elements free.varid))); if not env'.pm then [prod'] else - prod' :: elab_prod env Subst.(subst_prod pm_snd (Iter.clone_prod prod)) t + prod' :: + elab_prod env outer_dims Subst.(subst_prod pm_snd (Iter.clone_prod prod)) t | RangeP (g1, e1, g2, e2) -> let t = Il.NumT `NatT $ prod.at in let qs11', g1' = checkpoint (elab_sym env g1 t) in let qs12', e1' = checkpoint (elab_exp env e1 t) in let qs21', g2' = checkpoint (elab_sym env g2 t) in let qs22', e2' = checkpoint (elab_exp env e2 t) in + let dims = Dim.check outer_dims [] [] [] [e1'; e2'] [g1'; g2'] [] in + let g1' = Dim.annot_sym dims g1' in + let g2' = Dim.annot_sym dims g2' in + let e1' = Dim.annot_exp dims e1' in + let e2' = Dim.annot_exp dims e2' in + let det = Det.(det_list det_exp [e1'; e2'] ++ det_list det_sym [g1'; g2']) in + infer_no_quants env dims det [] [] [] [e1'; e2'] [g1'; g2'] [] prod.at; let c1 = match g1'.it with | Il.NumG c1 -> c1 @@ -2416,25 +2680,16 @@ and elab_prod env (prod : prod) (t : Il.typ) : Il.prod list = | EquivP (g1, g2, prems) -> let env' = local_env env in env'.pm <- false; - let qs1, g1', _t1' = checkpoint (infer_sym env' g1) in - let qs2, g2', _t2' = checkpoint (infer_sym env' g2) in - let qss3, premss' = List.split (map_filter_nl_list (elab_prem env') prems) in + let _qs1, g1', _t1' = checkpoint (infer_sym env' g1) in + let _qs2, g2', _t2' = checkpoint (infer_sym env' g2) in + let _qss3, premss' = List.split (map_filter_nl_list (elab_prem env') prems) in let prems' = List.concat premss' in - let dims = Dim.check_abbr (vars env) g1' g2' prems' in + let dims = Dim.check outer_dims [] [] [] [] [g1'; g2'] prems' in let g1' = Dim.annot_sym dims g1' in let g2' = Dim.annot_sym dims g2' in let prems' = List.map (Dim.annot_prem dims) prems' in - let det = Free.(diff (union (det_sym g1) (det_prems prems)) (bound_env env)) in - let free = Free.(diff (free_prod prod) (union (det_prod prod) (bound_env env'))) in - if free <> Free.empty then - error prod.at ("grammar rule contains indeterminate variable(s) `" ^ - String.concat "`, `" (Free.Set.elements free.varid) ^ "`"); - let acc_qs, (module Arg : Il.Iter.Arg) = make_quants_iter_arg env' det dims in - let module Acc = Il.Iter.Make(Arg) in - Acc.sym g1'; - Acc.sym g2'; - Acc.prems prems'; - ignore (!acc_qs @ qs1 @ qs2 @ List.concat qss3, g1', g2', prems'); + let det = Det.(det_sym g1' ++ det_list det_prem prems') in + ignore (infer_quants env env' dims det [] [] [] [] [g1'; g2'] prems' prod.at); [] (* TODO(4, rossberg): translate equiv grammars properly *) (* let prod' = Il.ProdD (!acc_qs, g1', e', prems') $ prod.at in @@ -2444,84 +2699,13 @@ and elab_prod env (prod : prod) (t : Il.typ) : Il.prod list = prod' :: elab_prod env Subst.(subst_prod pm_snd (Iter.clone_prod prod)) t *) -and elab_gram env (gram : gram) (t : Il.typ) : Il.prod list = +and elab_gram env dims (gram : gram) (t : Il.typ) : Il.prod list = let (_dots1, prods, _dots2) = gram.it in - concat_map_filter_nl_list (fun prod -> elab_prod env prod t) prods + concat_map_filter_nl_list (fun prod -> elab_prod env dims prod t) prods (* Definitions *) -and make_quants_iter_arg env free dims : Il.quant list ref * (module Il.Iter.Arg) = - let module Arg = - struct - include Il.Iter.Skip - - let left = ref free - let acc = ref [] - - let visit_typid id = - if Il.Free.Set.mem id.it !left.typid then ( - acc := !acc @ [Il.TypP id $ id.at]; - left := Il.Free.{!left with typid = Set.remove id.it !left.typid}; - ) - - let visit_varid id = - if Il.Free.(Set.mem id.it !left.varid) && Dim.Env.mem id.it dims then ( - let t = - try find "variable" env.vars id with Error _ -> - find "variable" env.gvars (strip_var_suffix id) - in - let fwd = Il.Free.(inter (free_typ t) !left) in - if fwd <> Il.Free.empty then - error id.at ("the type of `" ^ id.it ^ "` depends on " ^ - ( Il.Free.Set.(elements fwd.typid @ elements fwd.gramid @ elements fwd.varid @ elements fwd.defid) |> - List.map (fun id -> "`" ^ id ^ "`") |> - String.concat ", " ) ^ - ", which only occur(s) to its right; try to reorder parameters or premises"); - let ctx' = - List.map (function Il.Opt -> Il.Opt | _ -> Il.List) - (Dim.Env.find id.it dims) - in - let t' = - List.fold_left (fun t iter -> - Il.IterT (t, iter) $ t.at - ) t ctx' - in - acc := !acc @ [Il.ExpP (Dim.annot_varid id ctx', t') $ id.at]; - left := Il.Free.{!left with varid = Set.remove id.it !left.varid}; - ) - - let visit_gramid id = - if Il.Free.(Set.mem id.it !left.gramid) then ( - let ps, t, _gram, _prods' = find "grammar" env.grams id in - let free' = Il.Free.(union (free_params ps) (diff (free_typ t) (bound_params ps))) in - let fwd = Il.Free.(inter free' !left) in - if fwd <> Il.Free.empty then - error id.at ("the type of `" ^ id.it ^ "` depends on " ^ - ( Il.Free.Set.(elements fwd.typid @ elements fwd.gramid @ elements fwd.varid @ elements fwd.defid) |> - List.map (fun id -> "`" ^ id ^ "`") |> - String.concat ", " ) ^ - ", which only occur(s) to its right; try to reorder parameters or premises"); - left := Free.{!left with varid = Set.remove id.it !left.gramid}; - ) - - let visit_defid id = - if Il.Free.Set.mem id.it !left.defid then ( - let ps, t, _ = find "definition" env.defs id in - let free' = Il.Free.(union (free_params ps) (diff (free_typ t) (bound_params ps))) in - let fwd = Il.Free.(inter free' !left) in - if fwd <> Il.Free.empty then - error id.at ("the type of `" ^ (spaceid "definition" id).it ^ "` depends on " ^ - ( Il.Free.Set.(elements fwd.typid @ elements fwd.gramid @ elements fwd.varid @ elements fwd.defid) |> - List.map (fun id -> "`" ^ id ^ "`") |> - String.concat ", " ) ^ - ", which only occur(s) to its right; try to reorder parameters or premises"); - acc := !acc @ [Il.DefP (id, ps, t) $ id.at]; - left := Il.Free.{!left with defid = Set.remove id.it !left.defid}; - ) - end - in Arg.acc, (module Arg) - and elab_arg in_lhs env (a : arg) (p : Il.param) s : Il.quant list * Il.arg list * Il.Subst.subst = (match !(a.it), p.it with (* HACK: handle shorthands *) | ExpA e, Il.TypP _ -> a.it := TypA (typ_of_exp e) @@ -2792,53 +2976,30 @@ let elab_hintdef _env (hd : hintdef) : Il.def list = [] -let infer_quants env env' dims (d : def) (d' : Il.def) : Il.quant list = - Debug.(log_in_at "el.infer_quants" d.at - (fun _ -> - Map.fold (fun id _ ids -> - if Map.mem id env.vars then ids else id::ids - ) env'.vars [] |> List.rev |> String.concat " " - ) - ); - let det = Free.det_def d in - let free = Free.(diff (free_def d) (union det (bound_env env))) in - if free <> Free.empty then - error d.at ("definition contains indeterminate variable(s) `" ^ - String.concat "`, `" (Free.Set.elements free.varid) ^ "`"); - let acc_qs, (module Arg : Il.Iter.Arg) = make_quants_iter_arg env' det dims in - let module Acc = Il.Iter.Make(Arg) in - Acc.def d'; - !acc_qs - -let infer_no_quants env dims (d : def) (d' : Il.def) = - let qs = infer_quants env env dims d d' in - assert (qs = []) - - let rec elab_def env (d : def) : Il.def list = Debug.(log_in "el.elab_def" line); Debug.(log_in_at "el.elab_def" d.at (fun _ -> el_def d)); + let env' = local_env env in + env'.pm <- false; match d.it with | FamD (x, ps, hints) -> - env.pm <- false; - let ps' = elab_params (local_env env) ps in - if env.pm then error d.at "misplaced +- or -+ operator in syntax type declaration"; - let d' = Il.TypD (x, ps', []) $ d.at in - let dims = Dim.check_def d' in - infer_no_quants env dims d d'; + let ps' = elab_params env' ps in + if env'.pm then + error d.at "misplaced +- or -+ operator in syntax type declaration"; + let dims = Dim.check Map.empty ps' [] [] [] [] [] in + let ps' = List.map (Dim.annot_param dims) ps' in + infer_no_quants env dims Det.empty ps' [] [] [] [] [] d.at; env.typs <- rebind "syntax type" env.typs x (ps', Family []); - [d'] @ elab_hintdef env (TypH (x, "" $ x.at, hints) $ d.at) + [Il.TypD (x, ps', []) $ d.at] + @ elab_hintdef env (TypH (x, "" $ x.at, hints) $ d.at) | TypD (x1, x2, as_, t, hints) -> - let env' = local_env env in - env'.pm <- false; let ps', k = find "syntax type" env.typs x1 in let qs1, as', _s = elab_args `Lhs env' as_ ps' d.at in - let dots1, dt', dots2 = elab_typ_definition env' x1 t in - let inst' = Il.InstD ([], as', dt') $ d.at in (* dummy *) - let d' = Il.TypD (x1, ps', [inst']) $ d.at in (* dummy *) - let dims = Dim.check_inst [] as' dt' in + let dims = Dim.check Map.empty [] as' [] [] [] [] in + let dots1, dt', dots2 = elab_typ_definition env' dims x1 t in let as' = List.map (Dim.annot_arg dims) as' in - let qs = infer_quants env env' dims d d' in + let det = Det.(det_list det_arg as') in + let qs = infer_quants env env' dims det [] as' [] [] [] [] d.at in let inst' = Il.InstD (qs @ qs1, as', dt') $ d.at in let k', last = match k with @@ -2867,16 +3028,14 @@ let rec elab_def env (d : def) : Il.def list = @ elab_hintdef env (TypH (x1, x2, hints) $ d.at) @ (if not env'.pm then [] else elab_def env Subst.(subst_def pm_snd (Iter.clone_def d))) | GramD (x1, x2, ps, t, gram, hints) -> - let env' = local_env env in - env'.pm <- false; let ps' = elab_params env' ps in let t' = elab_typ env' t in - if env'.pm then error d.at "misplaced +- or -+ operator in grammar"; - let prods' = elab_gram env' gram t' in + let dims = Dim.check Map.empty ps' [] [t'] [] [] [] in + let prods' = elab_gram env' dims gram t' in let xprods2' = List.map (fun pr -> x2, pr) prods' in - let d' = Il.GramD (x1, ps', t', prods') $ d.at in (* dummy *) - let dims = Dim.check_def d' in - infer_no_quants env' dims d d'; + if env'.pm then error d.at "misplaced +- or -+ operator in grammar"; + let t' = Dim.annot_typ dims t' in + infer_no_quants env' dims Det.empty ps' [] [t'] [] [] [] d.at; let ps1', t1', xprods1', dots_opt = find "grammar" env.grams x1 in let dots1, _, dots2 = gram.it in let xprods' = @@ -2902,19 +3061,18 @@ let rec elab_def env (d : def) : Il.def list = (if dots2 = Dots then [] else [Il.GramD (x1, ps', t', []) $ d.at]) @ elab_hintdef env (GramH (x1, x2, hints) $ d.at) | RelD (x, t, hints) -> - env.pm <- false; - let mixop, ts' = elab_typ_notation env x t in - let t' = tup_typ' ts' t.at in + let mixop, xts' = elab_typ_notation' env' x t in + let ts' = List.map snd xts' in + if env'.pm then error d.at "misplaced +- or -+ operator in relation"; + let dims = Dim.check Map.empty [] [] ts' [] [] [] in + let ts' = List.map (Dim.annot_typ dims) ts' in + infer_no_quants env' dims Det.empty [] [] ts' [] [] [] d.at; let not = Mixop.apply mixop ts' in - if env.pm then error d.at "misplaced +- or -+ operator in relation"; - let d' = Il.RelD (x, mixop, t', []) $ d.at in - let dims = Dim.check_def d' in - infer_no_quants env dims d d'; + let t' = tup_typ' ts' t.at in env.rels <- bind "relation" env.rels x (mixop, not, t', []); - [d'] @ elab_hintdef env (RelH (x, hints) $ d.at) + [Il.RelD (x, mixop, t', []) $ d.at] + @ elab_hintdef env (RelH (x, hints) $ d.at) | RuleD (x1, x2, e, prems) -> - let env' = local_env env in - env'.pm <- false; let mixop, not', t', rules' = find "relation" env.rels x1 in if List.exists (fun (x, _) -> x.it = x2.it) rules' then error d.at ("duplicate rule name `" ^ x1.it ^ @@ -2922,58 +3080,56 @@ let rec elab_def env (d : def) : Il.def list = let qs1, es', _ = checkpoint (elab_exp_notation' env' x1 e not') in let qss2, premss' = List.split (map_filter_nl_list (elab_prem env') prems) in let prems' = List.concat premss' in - let rule' = Il.RuleD (x2, [], mixop, tup_exp' es' e.at, prems') $ d.at in (* dummy *) - let d' = Il.RelD (x1, mixop, t', [rule']) $ d.at in (* dummy *) - let dims = Dim.check_def d' in - let qs = infer_quants env env' dims d d' in + let dims = Dim.check Map.empty [] [] [] es' [] prems' in let es' = List.map (Dim.annot_exp dims) es' in + let e' = tup_exp_nary' es' e.at in let prems' = List.map (Dim.annot_prem dims) prems' in - let rule' = Il.RuleD (x2, qs @ qs1 @ List.concat qss2, mixop, tup_exp' es' e.at, prems') $ d.at in + let det = Det.(det_exp e' ++ det_list det_prem prems') in + let qs = infer_quants env env' dims det [] [] [] es' [] prems' d.at in + let rule' = Il.RuleD (x2, qs @ qs1 @ List.concat qss2, mixop, e', prems') $ d.at in env.rels <- rebind "relation" env.rels x1 (mixop, not', t', rules' @ [x2, rule']); if not env'.pm then [] else elab_def env Subst.(subst_def pm_snd (Iter.clone_def d)) | VarD (x, t, _hints) -> - env.pm <- false; - let t' = elab_typ env t in - if env.pm then error d.at "misplaced +- or -+ operator in variable declaration"; - let d' = Il.DecD (x, [], t', []) $ d.at in (* dummy *) - let dims = Dim.check_def d' in - infer_no_quants env dims d d'; + let t' = elab_typ env' t in + if env'.pm then + error d.at "misplaced +- or -+ operator in variable declaration"; + let dims = Dim.check Map.empty [] [] [t'] [] [] [] in + let t' = Dim.annot_typ dims t' in + infer_no_quants env' dims Det.empty [] [] [t'] [] [] [] d.at; env.gvars <- rebind "variable" env.gvars x t'; [] | DecD (x, ps, t, hints) -> - let env' = local_env env in - env'.pm <- false; let ps' = elab_params env' ps in let t' = elab_typ env' t in if env'.pm then error d.at "misplaced +- or -+ operator in declaration"; let d' = Il.DecD (x, ps', t', []) $ d.at in - let dims = Dim.check_def d' in - infer_no_quants env dims d d'; + let dims = Dim.check Map.empty ps' [] [t'] [] [] [] in + let t' = Dim.annot_typ dims t' in +Printf.printf "DecD %s%s : %s\n%!" x.it (Il.Print.string_of_params ps') (Il.Print.string_of_typ t'); + infer_no_quants env dims Det.empty ps' [] [t'] [] [] [] d.at; env.defs <- bind "definition" env.defs x (ps', t', []); [d'] @ elab_hintdef env (DecH (x, hints) $ d.at) | DefD (x, as_, e, prems) -> - let env' = local_env env in - env'.pm <- false; let ps', t', clauses' = find "definition" env.defs x in let qs1, as', s = elab_args `Lhs env' as_ ps' d.at in let qss3, premss' = List.split (map_filter_nl_list (elab_prem env') prems) in (* Elab e after premises, so that type information can flow to it *) let qs2, e' = checkpoint (elab_exp env' e (Il.Subst.subst_typ s t')) in let prems' = List.concat premss' in - let clause' = Il.DefD ([], as', e', prems') $ d.at in (* dummy *) - let d' = Il.DecD (x, ps', t', [clause']) $ d.at in (* dummy *) - let dims = Dim.check_def d' in - let qs = infer_quants env env' dims d d' in + let dims = Dim.check Map.empty [] as' [] [e'] [] prems' in let as' = List.map (Dim.annot_arg dims) as' in let e' = Dim.annot_exp dims e' in let prems' = List.map (Dim.annot_prem dims) prems' in + let det = Det.(det_list det_arg as' ++ det_exp e' ++ det_list det_prem prems') in + let qs = infer_quants env env' dims det [] as' [] [e'] [] prems' d.at in let clause' = Il.DefD (qs @ qs1 @ qs2 @ List.concat qss3, as', e', prems') $ d.at in +Printf.printf "=> %s\n%!" (Il.Print.string_of_clause ~suppress_pos: true x clause'); env.defs <- rebind "definition" env.defs x (ps', t', clauses' @ [(d, clause')]); if not env'.pm then [] else elab_def env Subst.(subst_def pm_snd (Iter.clone_def d)) | SepD -> [] | HintD hd -> - elab_hintdef env hd + elab_hintdef env' hd let check_dots env = diff --git a/spectec/src/frontend/eval.mli b/spectec/src/frontend/eval.mli index ae743d5cf..90baf0eee 100644 --- a/spectec/src/frontend/eval.mli +++ b/spectec/src/frontend/eval.mli @@ -1,6 +1,6 @@ open El.Ast -module Map : Map.S with type key = string with type 'a t = 'a Map.Make(String).t +module Map : module type of Map.Make(String) type typ_def = (arg list * typ) list type def_def = (arg list * exp * prem list) list diff --git a/spectec/src/frontend/parser.mly b/spectec/src/frontend/parser.mly index 1c20fab6b..f768a128d 100644 --- a/spectec/src/frontend/parser.mly +++ b/spectec/src/frontend/parser.mly @@ -1025,7 +1025,7 @@ param_ : | varid_bind_with_suffix COLON typ { ExpP ($1, $3) } | typ { let id = - try El.Convert.varid_of_typ $1 with Error.Error _ -> "" $ $sloc + try El.Convert.varid_of_typ $1 with Error.Error _ -> "_" $ $sloc in ExpP (id, $1) } | SYNTAX varid_bind { TypP $2 } | GRAMMAR gramid COLON typ { GramP ($2, [], $4) } diff --git a/spectec/src/il/env.ml b/spectec/src/il/env.ml index c81136f0a..bba12ebe8 100644 --- a/spectec/src/il/env.ml +++ b/spectec/src/il/env.ml @@ -14,7 +14,8 @@ let error at msg = Util.Error.error at !phase msg module Set = Set.Make(String) module Map = Map.Make(String) -type var_def = typ +type var_sort = Reg | Quant +type var_def = typ * var_sort type typ_def = param list * inst list type rel_def = mixop * typ * rule list type def_def = param list * typ * clause list diff --git a/spectec/src/il/eval.ml b/spectec/src/il/eval.ml index 04f332123..b6f7961a2 100644 --- a/spectec/src/il/eval.ml +++ b/spectec/src/il/eval.ml @@ -738,8 +738,8 @@ and match_exp' env s e1 e2 : subst option = | _ -> false ) | VarE id1, _ -> - let t1 = reduce_typ env (Env.find_var env id1) in - sub_typ env t1 t21 || raise Irred + let t1, _ = Env.find_var env id1 in + sub_typ env (reduce_typ env t1) t21 || raise Irred | _, _ -> false then match_exp' env s {e1 with note = t21} e21 else None diff --git a/spectec/src/il/free.ml b/spectec/src/il/free.ml index 51951f176..b5258b26b 100644 --- a/spectec/src/il/free.ml +++ b/spectec/src/il/free.ml @@ -1,12 +1,8 @@ open Util.Source open Ast - include Xl.Gen_free -let (+) = union -let (-) = diff - (* Iterations *) @@ -24,13 +20,17 @@ and bound_iter iter = (* Types *) and free_typ t = + Util.Debug_log.(log "il.free_typ" + (fun _ -> Print.string_of_typ t) + (fun s -> list quote (Set.elements s.typid @ Set.elements s.varid)) + ) @@ fun _ -> match t.it with - | VarT (x, as_) -> free_typid x + free_args as_ + | VarT (x, as_) -> free_typid x ++ free_args as_ | BoolT | NumT _ | TextT -> empty | TupT ets -> free_typbinds ets - | IterT (t1, iter) -> free_typ t1 + free_iter iter + | IterT (t1, iter) -> free_typ t1 ++ free_iter iter -and free_typbind (x, t) = bound_varid x + free_typ t +and free_typbind (x, t) = bound_varid x (* exclude `_` *) ++ free_typ t and free_typbinds xts = free_list free_typbind xts and free_deftyp dt = @@ -40,69 +40,73 @@ and free_deftyp dt = | VariantT tcs -> free_list free_typcase tcs and free_typfield (_, (qs, t, prems), _) = - free_quants qs + (free_typ t + free_prems prems - bound_quants qs) + free_quants qs ++ (free_typ t ++ free_prems prems -- bound_quants qs) and free_typcase (_, (qs, t, prems), _) = - free_quants qs + (free_typ t + free_prems prems - bound_quants qs) + free_quants qs ++ (free_typ t ++ free_prems prems -- bound_quants qs) (* Expressions *) and free_exp e = + Util.Debug_log.(log "il.free_exp" + (fun _ -> Print.string_of_exp e) + (fun s -> list quote (Set.elements s.typid @ Set.elements s.varid)) + ) @@ fun _ -> match e.it with | VarE x -> free_varid x | BoolE _ | NumE _ | TextE _ -> empty | UnE (_, _, e1) | LiftE e1 | LenE e1 | ProjE (e1, _) | TheE e1 -> free_exp e1 | BinE (_, _, e1, e2) | CmpE (_, _, e1, e2) - | IdxE (e1, e2) | CompE (e1, e2) | MemE (e1, e2) | CatE (e1, e2) -> free_exp e1 + free_exp e2 + | IdxE (e1, e2) | CompE (e1, e2) | MemE (e1, e2) | CatE (e1, e2) -> free_exp e1 ++ free_exp e2 | SliceE (e1, e2, e3) -> free_list free_exp [e1; e2; e3] | OptE eo -> free_opt free_exp eo | TupE es | ListE es -> free_list free_exp es - | UpdE (e1, p, e2) | ExtE (e1, p, e2) -> free_exp e1 + free_path p + free_exp e2 + | UpdE (e1, p, e2) | ExtE (e1, p, e2) -> free_exp e1 ++ free_path p ++ free_exp e2 | StrE efs -> free_list free_expfield efs - | DotE (e1, _, as_) -> free_exp e1 + free_args as_ - | CaseE (_, as_, e1) | UncaseE (e1, _, as_) -> free_args as_ + free_exp e1 - | CallE (x, as1) -> free_defid x + free_args as1 - | IterE (e1, iter) -> (free_exp e1 - bound_iterexp iter) + free_iterexp iter + | DotE (e1, _, as_) -> free_exp e1 ++ free_args as_ + | CaseE (_, as_, e1) | UncaseE (e1, _, as_) -> free_args as_ ++ free_exp e1 + | CallE (x, as1) -> free_defid x ++ free_args as1 + | IterE (e1, ite) -> (free_exp e1 -- bound_iterexp ite) ++ free_iterexp ite | CvtE (e1, _nt1, _nt2) -> free_exp e1 - | SubE (e1, t1, t2) -> free_exp e1 + free_typ t1 + free_typ t2 + | SubE (e1, t1, t2) -> free_exp e1 ++ free_typ t1 ++ free_typ t2 -and free_expfield (_, as_, e) = free_args as_ + free_exp e +and free_expfield (_, as_, e) = free_args as_ ++ free_exp e and free_path p = match p.it with | RootP -> empty - | IdxP (p1, e) -> free_path p1 + free_exp e - | SliceP (p1, e1, e2) -> free_path p1 + free_exp e1 + free_exp e2 - | DotP (p1, _atom, as_) -> free_path p1 + free_args as_ + | IdxP (p1, e) -> free_path p1 ++ free_exp e + | SliceP (p1, e1, e2) -> free_path p1 ++ free_exp e1 ++ free_exp e2 + | DotP (p1, _atom, as_) -> free_path p1 ++ free_args as_ and free_iterexp (iter, xes) = - free_iter iter + free_list (free_pair free_varid free_exp) xes + free_iter iter ++ free_list free_exp (List.map snd xes) and bound_iterexp (iter, xes) = - bound_iter iter + free_list bound_varid (List.map fst xes) + bound_iter iter ++ free_list bound_varid (List.map fst xes) (* Grammars *) and free_sym g = match g.it with - | VarG (x, as_) -> free_gramid x + free_args as_ + | VarG (x, as_) -> free_gramid x ++ free_args as_ | NumG _ | TextG _ | EpsG -> empty | SeqG gs | AltG gs -> free_list free_sym gs - | RangeG (g1, g2) -> free_sym g1 + free_sym g2 - | IterG (g1, iter) -> (free_sym g1 - bound_iterexp iter) + free_iterexp iter - | AttrG (e, g1) -> free_exp e + free_sym g1 + | RangeG (g1, g2) -> free_sym g1 ++ free_sym g2 + | IterG (g1, ite) -> (free_sym g1 -- bound_iterexp ite) ++ free_iterexp ite + | AttrG (e, g1) -> free_exp e ++ free_sym g1 (* Premises *) and free_prem prem = match prem.it with - | RulePr (x, _op, e) -> free_relid x + free_exp e + | RulePr (x, _op, e) -> free_relid x ++ free_exp e | IfPr e -> free_exp e - | LetPr (e1, e2, _) -> free_exp e1 + free_exp e2 + | LetPr (e1, e2, _) -> free_exp e1 ++ free_exp e2 | ElsePr -> empty - | IterPr (prem1, iter) -> (free_prem prem1 - bound_iterexp iter) + free_iterexp iter + | IterPr (prem1, ite) -> (free_prem prem1 -- bound_iterexp ite) ++ free_iterexp ite and free_prems prems = free_list free_prem prems @@ -117,11 +121,15 @@ and free_arg a = | GramA g -> free_sym g and free_param p = + Util.Debug_log.(log "il.free_param" + (fun _ -> Print.string_of_param p) + (fun s -> list quote (Set.elements s.typid @ Set.elements s.varid)) + ) @@ fun _ -> match p.it with | ExpP (_, t) -> free_typ t | TypP _ -> empty - | DefP (_, ps, t) -> free_params ps + (free_typ t - bound_params ps) - | GramP (_, ps, t) -> free_params ps + (free_typ t - bound_params ps) + | DefP (_, ps, t) -> free_params ps ++ (free_typ t -- bound_params ps) + | GramP (_, ps, t) -> free_params ps ++ (free_typ t -- bound_params ps) and bound_param p = match p.it with @@ -142,22 +150,22 @@ and bound_quants qs = free_list bound_quant qs let free_inst inst = match inst.it with | InstD (qs, as_, dt) -> - free_quants qs + (free_args as_ + free_deftyp dt - bound_quants qs) + free_quants qs ++ (free_args as_ ++ free_deftyp dt -- bound_quants qs) let free_rule rule = match rule.it with | RuleD (_x, qs, _op, e, prems) -> - free_quants qs + (free_exp e + free_prems prems - bound_quants qs) + free_quants qs ++ (free_exp e ++ free_prems prems -- bound_quants qs) let free_clause clause = match clause.it with | DefD (qs, as_, e, prems) -> - free_quants qs + (free_args as_ + free_exp e + free_prems prems - bound_quants qs) + free_quants qs ++ (free_args as_ ++ free_exp e ++ free_prems prems -- bound_quants qs) let free_prod prod = match prod.it with | ProdD (qs, g, e, prems) -> - free_quants qs + (free_sym g + free_exp e + free_prems prems - bound_quants qs) + free_quants qs ++ (free_sym g ++ free_exp e ++ free_prems prems -- bound_quants qs) let free_hintdef hd = match hd.it with @@ -168,13 +176,13 @@ let free_hintdef hd = let rec free_def d = match d.it with - | TypD (_x, ps, insts) -> free_params ps + free_list free_inst insts - | RelD (_x, _mixop, t, rules) -> free_typ t + free_list free_rule rules + | TypD (_x, ps, insts) -> free_params ps ++ free_list free_inst insts + | RelD (_x, _mixop, t, rules) -> free_typ t ++ free_list free_rule rules | DecD (_x, ps, t, clauses) -> - free_params ps + (free_typ t - bound_params ps) - + free_list free_clause clauses + free_params ps ++ (free_typ t -- bound_params ps) + ++ free_list free_clause clauses | GramD (_x, ps, t, prods) -> - free_params ps + (free_typ t + free_list free_prod prods - bound_params ps) + free_params ps ++ (free_typ t ++ free_list free_prod prods -- bound_params ps) | RecD ds -> free_list free_def ds | HintD hd -> free_hintdef hd diff --git a/spectec/src/il/free.mli b/spectec/src/il/free.mli index 4adba6f06..00acbfc4c 100644 --- a/spectec/src/il/free.mli +++ b/spectec/src/il/free.mli @@ -6,6 +6,7 @@ val free_iter : iter -> sets val free_typ : typ -> sets val free_exp : exp -> sets val free_path : path -> sets +val free_sym : sym -> sets val free_prem : prem -> sets val free_arg : arg -> sets val free_def : def -> sets @@ -21,6 +22,7 @@ val free_args : arg list -> sets val free_quants : param list -> sets val free_params : param list -> sets +val bound_iterexp : iterexp -> sets val bound_quant : quant -> sets val bound_param : param -> sets val bound_def : def -> sets diff --git a/spectec/src/il/fresh.ml b/spectec/src/il/fresh.ml index e7b735c3b..dc57cc55e 100644 --- a/spectec/src/il/fresh.ml +++ b/spectec/src/il/fresh.ml @@ -18,7 +18,13 @@ let fresh_id map s = map := Map.add s i !map; s ^ "#" ^ string_of_int i -let refresh_id map x = fresh_id map x.it $ x.at +let refresh_id map x = + let s = + match String.rindex_opt x.it '#' with + | None -> x.it + | Some i -> String.sub x.it 0 i + in + fresh_id map s $ x.at let fresh_typid = fresh_id typids let fresh_varid = fresh_id varids diff --git a/spectec/src/il/subst.ml b/spectec/src/il/subst.ml index b87df656e..bb5e1d1b6 100644 --- a/spectec/src/il/subst.ml +++ b/spectec/src/il/subst.ml @@ -68,7 +68,9 @@ let subst_varid s x = match Map.find_opt x.it s.varid with | None -> x | Some {it = VarE x'; _} -> x' - | Some _ -> raise (Invalid_argument "subst_varid") + | Some e -> +Printf.printf "!!!! e = %s\n%!" (Print.string_of_exp e); + raise (Invalid_argument "subst_varid") let subst_defid s x = match Map.find_opt x.it s.defid with @@ -79,7 +81,7 @@ let subst_gramid s x = match Map.find_opt x.it s.gramid with | None -> x | Some {it = VarG (x', []); _} -> x' - | Some _ -> raise (Invalid_argument "subst_varid") + | Some _ -> raise (Invalid_argument "subst_gramid") (* Iterations *) @@ -123,9 +125,6 @@ and subst_typcase s (op, (qs, t, prems), hints) = let qs', s' = subst_quants s qs in (op, (qs', subst_typ s' t, subst_list subst_prem s' prems), hints) -and subst_typbind s (x, t) = - (subst_varid s x, subst_typ s t) - (* Expressions *) diff --git a/spectec/src/il/subst.mli b/spectec/src/il/subst.mli index 94be50c92..c8fd8fc5d 100644 --- a/spectec/src/il/subst.mli +++ b/spectec/src/il/subst.mli @@ -1,6 +1,6 @@ open Ast -module Map : Map.S with type key = string with type 'a t = 'a Map.Make(String).t +module Map : module type of Map.Make(String) type subst = {varid : exp Map.t; typid : typ Map.t; defid : id Map.t; gramid : sym Map.t} type t = subst @@ -38,7 +38,6 @@ val subst_param : subst -> param -> param val subst_deftyp : subst -> deftyp -> deftyp val subst_typcase : subst -> typcase -> typcase val subst_typfield : subst -> typfield -> typfield -val subst_typbind : subst -> id * typ -> id * typ val subst_args : subst -> arg list -> arg list val subst_params : subst -> param list -> param list * subst diff --git a/spectec/src/il/valid.ml b/spectec/src/il/valid.ml index 54615c6c7..e3e50287e 100644 --- a/spectec/src/il/valid.ml +++ b/spectec/src/il/valid.ml @@ -33,6 +33,18 @@ let typ_string env t = "`" ^ string_of_typ t ^ "` = `" ^ string_of_typ t' ^ "`" +(* Quantifier variables *) + +let is_qvar env x = + let _, sort = Env.find_var env x in + sort = Quant + +let is_qvar_exp env e = + match e.it with + | VarE x -> is_qvar env x + | _ -> false + + (* Type Accessors *) let expand_typ (env : Env.t) t = (Eval.reduce_typ env t).it @@ -87,7 +99,7 @@ let rec as_comp_typ phrase env dir t at = | _ -> error at (phrase ^ "'s type `" ^ string_of_typ t ^ "` is not composable") - +(* let rec inst_tup_typ env s xts : (id * typ) list = match xts with | [] -> [] @@ -96,6 +108,7 @@ let rec inst_tup_typ env s xts : (id * typ) list = let tI' = Subst.subst_typ s tI in let s' = Subst.add_varid s xI (VarE xI' $$ xI.at % tI') in (xI', tI') :: inst_tup_typ env s' xts' +*) (* Type Equivalence and Subtyping *) @@ -174,7 +187,7 @@ let rec valid_iter ?(side = `Rhs) env iter : Env.t = | ListN (e, id_opt) -> valid_exp ~side env e (NumT `NatT $ e.at); Option.fold id_opt ~none:env ~some:(fun id -> - Env.bind_var env id (NumT `NatT $ e.at) + Env.bind_var env id (NumT `NatT $ e.at, Reg) ) @@ -204,7 +217,9 @@ and valid_typ env t = and valid_typbind env (x, t) = valid_typ env t; if x.it <> "_" then - let t' = Env.find_var env x in + let t', sort = Env.find_var env x in + if sort <> Quant then + error x.at "field name must be quantifier variable"; equiv_typ env t' t x.at and valid_deftyp envr dt = @@ -251,7 +266,7 @@ and infer_exp (env : Env.t) e : typ = (fun r -> fmt "%s" (il_typ r)) ) @@ fun _ -> match e.it with - | VarE x -> Env.find_var env x + | VarE x -> fst (Env.find_var env x) | BoolE _ -> BoolT $ e.at | NumE n -> NumT (Num.to_typ n) $ e.at | TextE _ -> TextT $ e.at @@ -267,7 +282,7 @@ and infer_exp (env : Env.t) e : typ = | DotE (e1, atom, as_) -> let tfs = as_struct_typ "expression" env Infer (infer_exp env e1) e1.at in let qs, t, _prems = find_field tfs atom e1.at in - let s = valid_args env as_ qs Subst.empty e.at in + let s = valid_qargs env as_ qs Subst.empty e.at in Subst.subst_typ s t | TupE es -> TupT (List.map (fun eI -> "_" $ eI.at, infer_exp env eI) es) $ e.at @@ -283,16 +298,18 @@ and infer_exp (env : Env.t) e : typ = let xts = as_tup_typ "expression" env Infer t1 e1.at in if i >= List.length xts then error e.at "invalid tuple projection"; +(* let xts' = inst_tup_typ env Subst.empty xts in - (match List.nth_opt xts' i with +*) + (match List.nth_opt xts i with | Some (_, tI) -> tI | None -> error e.at "cannot infer type of tuple projection" ) | UncaseE (e1, op, as_) -> let t1 = infer_exp env e1 in (match as_variant_typ "expression" env Infer t1 e1.at with - | [(op', (ps, t, _), _)] when Eq.eq_mixop op op' -> - let s = valid_args env as_ ps Subst.empty e.at in + | [(op', (qs, t, _), _)] when Eq.eq_mixop op op' -> + let s = valid_qargs env as_ qs Subst.empty e.at in Subst.subst_typ s t | _ -> error e.at "invalid case projection"; ) @@ -339,7 +356,7 @@ try match e.it with | VarE x when x.it = "_" && side = `Lhs -> () | VarE x -> - let t' = Env.find_var env x in + let t', _ = Env.find_var env x in equiv_typ env t' t e.at | BoolE _ | NumE _ | TextE _ -> let t' = infer_exp env e in @@ -397,7 +414,7 @@ try valid_exp env e1 t1; let tfs = as_struct_typ "expression" env Check t1 e1.at in let qs, t', _prems = find_field tfs atom e1.at in - let s = valid_args env as_ qs Subst.empty e.at in + let s = valid_qargs env as_ qs Subst.empty e.at in equiv_typ env (Subst.subst_typ s t') t e.at | CompE (e1, e2) -> let _ = as_comp_typ "expression" env Check t e.at in @@ -435,8 +452,10 @@ try if i >= List.length xts then error e.at "invalid tuple projection"; let side' = if List.length xts > 1 then `Rhs else side in +(* let xts' = inst_tup_typ env Subst.empty xts in - valid_exp ~side:side' env e1 (TupT xts' $ t1.at); +*) + valid_exp ~side:side' env e1 (TupT xts $ t1.at); (match List.nth_opt xts i with | Some (_, tI) -> equiv_typ env tI t e.at | None -> error e.at "invalid tuple projection, cannot match pattern" @@ -445,8 +464,8 @@ try let t1 = infer_exp env e1 in valid_exp ~side env e1 t1; (match as_variant_typ "expression" env Infer t1 e1.at with - | [(op', (ps, t', _), _)] when Eq.eq_mixop op op' -> - let s = valid_args env as_ ps Subst.empty e.at in + | [(op', (qs, t', _), _)] when Eq.eq_mixop op op' -> + let s = valid_qargs env as_ qs Subst.empty e.at in equiv_typ env (Subst.subst_typ s t') t e.at | _ -> error e.at "invalid case projection"; ) @@ -473,7 +492,7 @@ try | CaseE (op, as_, e1) -> let cases = as_variant_typ "case" env Check t e.at in let qs, t1, _prems = find_case cases op e1.at in - let s = valid_args env as_ qs Subst.empty e.at in + let s = valid_qargs env as_ qs Subst.empty e.at in valid_exp ~side env e1 (Subst.subst_typ s t1) | CvtE (e1, nt1, nt2) -> valid_exp ~side env e1 (NumT nt1 $ e1.at); @@ -509,9 +528,9 @@ and valid_tup_exp ?(side = `Rhs) env s es xts = valid_tup_exp ~side env s' es' xts' | _, _ -> true -and valid_expfield ~side env (atom1, as_, e) (atom2, (ps, t, _prems), _) = +and valid_expfield ~side env (atom1, as_, e) (atom2, (qs, t, _prems), _) = if not (Eq.eq_atom atom1 atom2) then error e.at "unexpected record field"; - let s = valid_args env as_ ps Subst.empty e.at in + let s = valid_qargs env as_ qs Subst.empty e.at in valid_exp ~side env e (Subst.subst_typ s t) and valid_path env p t : typ = @@ -533,7 +552,7 @@ and valid_path env p t : typ = let t1 = valid_path env p1 t in let tfs = as_struct_typ "path" env Check t1 p1.at in let qs, t, _prems = find_field tfs atom p1.at in - let s = valid_args env as_ qs Subst.empty p.at in + let s = valid_qargs env as_ qs Subst.empty p.at in Subst.subst_typ s t in equiv_typ env p.note t' p.at; @@ -548,7 +567,7 @@ and valid_iterexp ?(side = `Rhs) env (iter, xes) at : iter * Env.t = let t = infer_exp env e in valid_exp ~side env e t; let t1 = as_iter_typ iter' "iterator" env Check t e.at in - Env.bind_var env' x t1 + Env.bind_var env' x (t1, Reg) ) env' xes @@ -623,12 +642,15 @@ and valid_prem env prem = (* Definitions *) -and valid_arg env a p s = +and valid_arg' isq env a p s = Debug.(log_at "il.valid_arg" a.at (fun _ -> fmt "%s : %s" (il_arg a) (il_param p)) (Fun.const "ok") ) @@ fun _ -> match a.it, (Subst.subst_param s p).it with - | ExpA e, ExpP (x, t) -> valid_exp ~side:`Lhs env e t; Subst.add_varid s x e + | ExpA e, ExpP (x, t) -> + if isq && not (is_qvar_exp env e) then + error e.at "quantifier argument expression must be quantified variable"; + valid_exp ~side:`Lhs env e t; Subst.add_varid s x e | TypA t, TypP x -> valid_typ env t; Subst.add_typid s x t | DefA x', DefP (x, ps, t) -> let ps', t', _ = Env.find_def env x' in @@ -648,23 +670,26 @@ and valid_arg env a p s = error a.at ("sort mismatch for argument, expected `" ^ Print.string_of_param p ^ "`, got `" ^ Print.string_of_arg a ^ "`") -and valid_args env as_ ps s at : Subst.t = +and valid_args' isq env as_ ps s at : Subst.t = Debug.(log_if "il.valid_args" (as_ <> [] || ps <> []) - (fun _ -> fmt "(%s) : (%s)" (il_args as_) (il_params ps)) (Fun.const "ok") + (fun _ -> fmt "{%s} : {%s}" (il_args as_) (il_params ps)) (Fun.const "ok") ) @@ fun _ -> match as_, ps with | [], [] -> s | a::_, [] -> error a.at "too many arguments" | [], _::_ -> error at "too few arguments" | a::as', p::ps' -> - let s' = valid_arg env a p s in - valid_args env as' ps' s' at + let s' = valid_arg' isq env a p s in + valid_args' isq env as' ps' s' at + +and valid_args env = valid_args' false env +and valid_qargs env = valid_args' true env -and valid_param envr p = +and valid_param' isq envr p = match p.it with | ExpP (x, t) -> valid_typ !envr t; - envr := Env.bind_var !envr x t + envr := Env.bind_var !envr x (t, if isq then Quant else Reg) | TypP x -> envr := Env.bind_typ !envr x ([], []) | DefP (x, ps, t) -> @@ -678,7 +703,8 @@ and valid_param envr p = valid_typ !envr' t; envr := Env.bind_gram !envr x (ps, t, []) -and valid_quant envr q = valid_param envr q +and valid_param envr = valid_param' false envr +and valid_quant envr = valid_param' true envr let valid_inst envr ps inst = Debug.(log_in "il.valid_inst" line); diff --git a/spectec/src/il2al/free.ml b/spectec/src/il2al/free.ml index 2eb0d2341..8b3edc17b 100644 --- a/spectec/src/il2al/free.ml +++ b/spectec/src/il2al/free.ml @@ -12,10 +12,6 @@ include Il.Free let free_varid id = {empty with varid = Set.singleton id.it} let free_defid id = {empty with defid = Set.singleton id.it} -(* TODO: Make a .mli file *) -let tmp = (+) -let (+) = union - let rec free_exp ignore_listN e = let f = free_exp ignore_listN in let fp = free_path ignore_listN in @@ -29,23 +25,23 @@ let rec free_exp ignore_listN e = | ProjE (e1, _) -> f e1 | DotE (e1, _, al) | CaseE (_, al, e1) | UncaseE (e1, _, al) -> - f e1 + free_list fa al + f e1 ++ free_list fa al | BinE (_, _, e1, e2) | CmpE (_, _, e1, e2) | IdxE (e1, e2) | CompE (e1, e2) | MemE (e1, e2) | CatE (e1, e2) -> free_list f [e1; e2] | SliceE (e1, e2, e3) -> free_list f [e1; e2; e3] | OptE eo -> free_opt f eo | TupE es | ListE es -> free_list f es | UpdE (e1, p, e2) | ExtE (e1, p, e2) -> - free_list f [e1; e2] + fp p + free_list f [e1; e2] ++ fp p | StrE efs -> free_list fef efs | CallE (_, args) -> free_list fa args | IterE (e1, iter) -> let free1 = f e1 in let bound, free2 = fi iter in - diff free1 bound + free2 + free1 -- bound ++ free2 and free_expfield ignore_listN (_, al, e) = - free_list (free_arg ignore_listN) al + free_exp ignore_listN e + free_list (free_arg ignore_listN) al ++ free_exp ignore_listN e and free_arg ignore_listN arg = let f = free_exp ignore_listN in @@ -61,10 +57,10 @@ and free_path ignore_listN p = let fa = free_arg ignore_listN in match p.it with | RootP -> empty - | IdxP (p1, e) -> fp p1 + f e + | IdxP (p1, e) -> fp p1 ++ f e | SliceP (p1, e1, e2) -> - fp p1 + f e1 + f e2 - | DotP (p1, _, al) -> fp p1 + free_list fa al + fp p1 ++ f e1 ++ f e2 + | DotP (p1, _, al) -> fp p1 ++ free_list fa al and free_iterexp ignore_listN (iter, xes) = let f = free_exp ignore_listN in @@ -72,12 +68,12 @@ and free_iterexp ignore_listN (iter, xes) = let free = free_list f (List.map snd xes) in match iter with | ListN (e, None) -> - bound, if ignore_listN then free else free + f e + bound, if ignore_listN then free else free ++ f e | ListN (e, Some id) -> (* Do not regard i* as free *) let snd' = (fun (x, e) -> if Il.Eq.eq_id id x then None else Some e) in let free = free_list f (List.filter_map snd' xes) in - bound + free_varid id, if ignore_listN then empty else free + f e + bound ++ free_varid id, if ignore_listN then empty else free ++ f e | _ -> bound, free let rec free_prem ignore_listN prem = @@ -87,12 +83,12 @@ let rec free_prem ignore_listN prem = match prem.it with | RulePr (_id, _op, e) -> f e | IfPr e -> f e - | LetPr (e1, e2, _ids) -> f e1 + f e2 + | LetPr (e1, e2, _ids) -> f e1 ++ f e2 | ElsePr -> empty | IterPr (prem', iter) -> let free1 = fp prem' in let bound, free2 = fi iter in - diff (free1 + free2) bound + (free1 ++ free2) -- bound (* For unification *) @@ -101,7 +97,7 @@ let free_rule rule = match rule.it with | RuleD (_id, _bs, _op, e, prems) -> List.fold_left - (+) + (++) (Il.Free.free_exp e) (List.map Il.Free.free_prem prems) @@ -109,30 +105,28 @@ let free_clause clause = match clause.it with | DefD (_bs, as_, e, prems) -> List.fold_left - (+) + (++) (Il.Free.free_exp e) (List.map Il.Free.free_prem prems @ List.map Il.Free.free_arg as_) let free_params params = - List.fold_left (fun s param -> s + free_param param) empty params + List.fold_left (fun s param -> s ++ free_param param) empty params let free_clauses clss = - List.fold_left (fun s c -> s + free_clause c) empty clss + List.fold_left (fun s c -> s ++ free_clause c) empty clss let free_rules rules = - List.fold_left (fun s r -> s + free_rule r) empty rules + List.fold_left (fun s r -> s ++ free_rule r) empty rules let free_rule_def rd = let (_, _, clauses) = rd.it in List.fold_left (fun s c -> let _, lhs, rhs, prems = c in - List.fold_left (fun s p -> s + Il.Free.free_prem p) s prems - |> union (Il.Free.free_exp lhs) - |> union (Il.Free.free_exp rhs) + List.fold_left (fun s p -> s ++ Il.Free.free_prem p) s prems + |> (++) (Il.Free.free_exp lhs) + |> (++) (Il.Free.free_exp rhs) ) empty clauses let free_helper_def hd = let (_, clauses, _) = hd.it in free_clauses clauses - -let (+) = tmp diff --git a/spectec/src/util/debug_log.ml b/spectec/src/util/debug_log.ml index 5b38b10d6..e55a2f188 100644 --- a/spectec/src/util/debug_log.ml +++ b/spectec/src/util/debug_log.ml @@ -8,7 +8,7 @@ let log_exn _exn = if !active <> [] then Printf.eprintf "\n%s\n%!" (Printexc.get_backtrace ()) -let log_at (type a) label at (arg_f : unit -> string) (res_f : a -> string) (f : unit -> a) : a = +let log_at' (type a) label at (arg_f : unit -> string) (res_f : a -> string option) (f : unit -> a) : a = if not (label = "" || List.exists (fun s -> String.starts_with ~prefix: s label) !active) then f () else let ats = if at = Source.no_region then "" else " " ^ Source.string_of_region at in let arg = arg_f () in @@ -19,11 +19,12 @@ let log_at (type a) label at (arg_f : unit -> string) (res_f : a -> string) (f : Printf.eprintf "[%s%s] %s => raise %s\n%!" label ats arg (Printexc.to_string exn); Printexc.raise_with_backtrace exn bt | x -> - let res = res_f x in - if res <> "" then Printf.eprintf "[%s%s] %s => %s\n%!" label ats arg res; + res_f x |> Option.iter (fun res -> + Printf.eprintf "[%s%s] %s => %s\n%!" label ats arg res); x -let log_in_at label at arg_f = log_at label at arg_f (Fun.const "") Fun.id +let log_at label at arg_f res_f = log_at' label at arg_f (fun x -> Some (res_f x)) +let log_in_at label at arg_f = log_at' label at arg_f (Fun.const None) Fun.id let log_in label = log_in_at label Source.no_region let log label = log_at label Source.no_region let log_if_at label at b arg_f res_f f = if b then log_at label at arg_f res_f f else f () @@ -32,6 +33,8 @@ let log_if label = log_if_at label Source.no_region module MySet = Set.Make(String) module MyMap = Map.Make(String) +let quote x = "`" ^ x ^ "`" +let pair f s g (x, y) = f x ^ s ^ g y let opt f = function None -> "-" | Some x -> f x let result f g = function Ok x -> f x | Error y -> g y let seq f xs = String.concat " " (List.map f xs) diff --git a/spectec/src/xl/gen_free.ml b/spectec/src/xl/gen_free.ml new file mode 100644 index 000000000..231dda5d8 --- /dev/null +++ b/spectec/src/xl/gen_free.ml @@ -0,0 +1,90 @@ +open Util.Source + + +(* Data Structure *) + +module Set = Set.Make(String) + +type id = string phrase + +type sets = + {typid : Set.t; relid : Set.t; varid : Set.t; defid : Set.t; gramid : Set.t} + +let empty = + { typid = Set.empty; + relid = Set.empty; + varid = Set.empty; + defid = Set.empty; + gramid = Set.empty + } + +let union sets1 sets2 = + { typid = Set.union sets1.typid sets2.typid; + relid = Set.union sets1.relid sets2.relid; + varid = Set.union sets1.varid sets2.varid; + defid = Set.union sets1.defid sets2.defid; + gramid = Set.union sets1.gramid sets2.gramid; + } + +let inter sets1 sets2 = + { typid = Set.inter sets1.typid sets2.typid; + gramid = Set.inter sets1.gramid sets2.gramid; + relid = Set.inter sets1.relid sets2.relid; + varid = Set.inter sets1.varid sets2.varid; + defid = Set.inter sets1.defid sets2.defid; + } + +let diff sets1 sets2 = + { typid = Set.diff sets1.typid sets2.typid; + relid = Set.diff sets1.relid sets2.relid; + varid = Set.diff sets1.varid sets2.varid; + defid = Set.diff sets1.defid sets2.defid; + gramid = Set.diff sets1.gramid sets2.gramid; + } + +let ( ++ ) = union +let ( ** ) = inter +let ( -- ) = diff + +let subset sets1 sets2 = + Set.subset sets1.typid sets2.typid && + Set.subset sets1.relid sets2.relid && + Set.subset sets1.varid sets2.varid && + Set.subset sets1.defid sets2.defid && + Set.subset sets1.gramid sets2.gramid + +let disjoint sets1 sets2 = + Set.disjoint sets1.typid sets2.typid && + Set.disjoint sets1.relid sets2.relid && + Set.disjoint sets1.varid sets2.varid && + Set.disjoint sets1.defid sets2.defid && + Set.disjoint sets1.gramid sets2.gramid + + +(* Identifiers *) + +let free_typid x = {empty with typid = Set.singleton x.it} +let free_relid x = {empty with relid = Set.singleton x.it} +let free_varid x = {empty with varid = Set.singleton x.it} +let free_defid x = {empty with defid = Set.singleton x.it} +let free_gramid x = {empty with gramid = Set.singleton x.it} + +let bound_typid x = if x.it = "_" then empty else free_typid x +let bound_relid x = if x.it = "_" then empty else free_relid x +let bound_varid x = if x.it = "_" then empty else free_varid x +let bound_defid x = if x.it = "_" then empty else free_defid x +let bound_gramid x = if x.it = "_" then empty else free_gramid x + + +(* Aggregates *) + +let free_empty _ = empty +let free_pair free_x free_y (x, y) = free_x x ++ free_y y +let free_opt free_x xo = Option.(value (map free_x xo) ~default:empty) +let free_list free_x xs = List.(fold_left (++) empty (map free_x xs)) + +let rec free_list_dep free_x bound_x = function + | [] -> empty + | x::xs -> free_x x ++ (free_list_dep free_x bound_x xs -- bound_x x) + +let bound_list = free_list diff --git a/spectec/src/xl/gen_free.mli b/spectec/src/xl/gen_free.mli new file mode 100644 index 000000000..8c2983fe8 --- /dev/null +++ b/spectec/src/xl/gen_free.mli @@ -0,0 +1,37 @@ +module Set : Set.S with type elt = string with type t = Set.Make(String).t + +type id = string Util.Source.phrase + +type sets = {typid : Set.t; relid : Set.t; varid : Set.t; defid : Set.t; gramid : Set.t} + +val empty : sets +val union : sets -> sets -> sets +val inter : sets -> sets -> sets +val diff : sets -> sets -> sets + +val ( ++ ) : sets -> sets -> sets (* union *) +val ( ** ) : sets -> sets -> sets (* intersection *) +val ( -- ) : sets -> sets -> sets (* difference *) + +val subset : sets -> sets -> bool +val disjoint : sets -> sets -> bool + +val free_typid : id -> sets +val free_relid : id -> sets +val free_varid : id -> sets +val free_defid : id -> sets +val free_gramid : id -> sets + +val bound_typid : id -> sets +val bound_relid : id -> sets +val bound_varid : id -> sets +val bound_defid : id -> sets +val bound_gramid : id -> sets + +val free_empty : 'a -> sets +val free_pair : ('a -> sets) -> ('b -> sets) -> 'a * 'b -> sets +val free_opt : ('a -> sets) -> 'a option -> sets +val free_list : ('a -> sets) -> 'a list -> sets +val free_list_dep : ('a -> sets) -> ('a -> sets) -> 'a list -> sets + +val bound_list : ('a -> sets) -> 'a list -> sets From 0fce79c7696c1aaf03dab381d58da845d18ce1ad Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Sun, 18 Jan 2026 17:44:58 +0100 Subject: [PATCH 009/235] WIP4 (Wasm 1.0 validates again) --- spectec/src/al/valid.ml | 4 +- spectec/src/backend-interpreter/host.ml | 4 +- spectec/src/frontend/det.ml | 28 +- spectec/src/frontend/dim.ml | 242 +++--- spectec/src/frontend/dim.mli | 6 +- spectec/src/frontend/elab.ml | 1036 ++++++++++++----------- spectec/src/il/debug.ml | 1 + spectec/src/il/env.ml | 3 +- spectec/src/il/eval.ml | 2 +- spectec/src/il/free.ml | 17 +- spectec/src/il/fresh.ml | 2 + spectec/src/il/iter.ml | 33 +- spectec/src/il/print.ml | 2 + spectec/src/il/subst.ml | 76 +- spectec/src/il/subst.mli | 2 + spectec/src/il/valid.ml | 184 ++-- spectec/src/util/debug_log.ml | 1 + 17 files changed, 863 insertions(+), 780 deletions(-) diff --git a/spectec/src/al/valid.ml b/spectec/src/al/valid.ml index c66a6d976..a202345b8 100644 --- a/spectec/src/al/valid.ml +++ b/spectec/src/al/valid.ml @@ -175,7 +175,7 @@ and unify_typs_opt : typ list -> typ option = function and ground_typ_of (typ: typ) : typ = match typ.it with | VarT (id, _) when IlEnv.mem_var !il_env id -> - let typ', _ = IlEnv.find_var !il_env id in + let typ' = IlEnv.find_var !il_env id in if Il.Eq.eq_typ typ typ' then typ else ground_typ_of typ' (* NOTE: Consider `fN` as a `NumT` to prevent diverging ground type *) | VarT (id, _) when id.it = "fN" -> NumT `RealT $ typ.at @@ -316,7 +316,7 @@ let check_call source id args result_typ = match arg.it, param.it with | ExpA expr, ExpP (_, typ') -> check_match source expr.note typ' (* Add local variable typ *) - | TypA typ1, TypP id -> il_env := IlEnv.bind_var !il_env id (typ1, Reg) + | TypA typ1, TypP id -> il_env := IlEnv.bind_var !il_env id typ1 | DefA aid, DefP (_, pparams, ptyp) -> (match IlEnv.find_opt_def !il_env (aid $ no_region) with | Some (aparams, atyp, _) -> diff --git a/spectec/src/backend-interpreter/host.ml b/spectec/src/backend-interpreter/host.ml index 8e7e3784e..fad576a6b 100644 --- a/spectec/src/backend-interpreter/host.ml +++ b/spectec/src/backend-interpreter/host.ml @@ -41,9 +41,9 @@ let spectest () = "VALUE", v |> ref ] in - let create_tableinst t elems = StrV [ + let create_tableinst t refs = StrV [ "TYPE", t |> ref; - "REFS", elems |> ref + "REFS", refs |> ref ] in let create_meminst t bytes_ = StrV [ diff --git a/spectec/src/frontend/det.ml b/spectec/src/frontend/det.ml index d7261f486..9e269982d 100644 --- a/spectec/src/frontend/det.ml +++ b/spectec/src/frontend/det.ml @@ -59,11 +59,11 @@ and det_exp e = | IdxE _ | SliceE _ | UpdE _ | ExtE _ | CompE _ | MemE _ | ProjE _ | DotE _ | LenE _ -> det_idx_exp e -and det_expfield (_, _, e) = det_exp e +and det_expfield (_, as_, e) = det_list det_quant_arg as_ ++ det_exp e -and det_iterexp s1 (iter, xes) = +and det_iterexp s1 (it, xes) = s1 -- free_list bound_varid (List.map fst xes) ++ - det_iter iter ++ + det_iter it ++ det_list det_exp (List.filter_map (fun (x, e) -> if Set.mem x.it s1.varid then Some e else None) xes) @@ -93,7 +93,7 @@ and det_idx_exp e = | OptE eo -> free_opt det_idx_exp eo | ListE es | TupE es -> det_list det_idx_exp es | StrE efs -> det_list det_idx_expfield efs - | IterE (e1, iter) -> det_idx_exp e1 ++ det_idx_iter (fst iter) + | IterE (e1, ite) -> det_idx_iterexp (det_idx_exp e1) ite | CallE (_, as_) -> det_list det_idx_arg as_ | IdxE (e1, e2) -> det_quant_exp e1 ++ det_exp e2 | _ -> det_quant_exp e @@ -105,6 +105,12 @@ and det_idx_iter iter = | Opt | List | List1 -> empty | ListN (e, x_opt) -> det_idx_exp e ++ free_opt bound_varid x_opt +and det_idx_iterexp s1 (it, xes) = + s1 -- free_list bound_varid (List.map fst xes) ++ + det_idx_iter it ++ + det_list det_idx_exp (List.filter_map + (fun (x, e) -> if Set.mem x.it s1.varid then Some e else None) xes) + and det_quant_exp e = Il.Debug.(log_at "il.det_quant_exp" e.at @@ -112,7 +118,8 @@ and det_quant_exp e = (fun s -> String.concat ", " (Set.elements s.varid)) ) @@ fun _ -> match e.it with - | VarE _ | BoolE _ | NumE _ | TextE _ -> empty + | VarE x -> bound_varid x + | BoolE _ | NumE _ | TextE _ -> empty | UnE (_, _, e1) | ProjE (e1, _) | TheE e1 | LiftE e1 | LenE e1 | CvtE (e1, _, _) | SubE (e1, _, _) -> det_quant_exp e1 @@ -128,10 +135,17 @@ and det_quant_exp e = | OptE eo -> free_opt det_quant_exp eo | ListE es | TupE es -> det_list det_quant_exp es | StrE efs -> det_list det_quant_expfield efs - | IterE (e1, iter) -> det_quant_exp e1 ++ det_quant_iter (fst iter) + | IterE (e1, ite) -> det_quant_iterexp (det_quant_exp e1) ite | CallE (_, as_) -> det_list det_quant_arg as_ -and det_quant_expfield (_, _, e) = det_quant_exp e +and det_quant_expfield (_, as_, e) = + det_list det_quant_arg as_ ++ det_quant_exp e + +and det_quant_iterexp s1 (it, xes) = + s1 -- free_list bound_varid (List.map fst xes) ++ + det_quant_iter it ++ + det_list det_quant_exp (List.filter_map + (fun (x, e) -> if Set.mem x.it s1.varid then Some e else None) xes) and det_quant_path p = match p.it with diff --git a/spectec/src/frontend/dim.ml b/spectec/src/frontend/dim.ml index 4f2542ce5..ca0fe2613 100644 --- a/spectec/src/frontend/dim.ml +++ b/spectec/src/frontend/dim.ml @@ -79,6 +79,7 @@ let check_ctxs id ctxs : region * ctx = at, ctx let check_dims (dims : rdims ref) : dims = +Printf.printf "[check_dims] %s\n%!" (Debug.domain !dims); Map.mapi check_ctxs !dims @@ -92,24 +93,32 @@ let check_typid _dims _ctx _id = () (* Types are always global *) let check_gramid _dims _ctx _id = () (* Grammars are always global *) let check_varid dims ctx mode id = - let ctxs = Option.value (Map.find_opt id.it !dims) ~default:[] in - dims := Map.add id.it ((id.at, ctx, mode)::ctxs) !dims + dims := Map.add_to_list id.it (id.at, ctx, mode) !dims -let rec check_iter dims ctx iter = - match iter with +let uncheck_varid dims id = + dims := Map.add id.it (List.tl (Map.find id.it !dims)) !dims + +let rec check_iter dims ctx it = + match it with | Opt | List | List1 -> () - | ListN (e, id_opt) -> + | ListN (e, x_opt) -> check_exp dims ctx e; - (* TODO(2, rossberg): The dimension for id should match that of e: - * for example, if we b^(i check_varid dims [strip_index iter] `Expl id) id_opt + Option.iter (check_varid dims [] `Expl) x_opt + +and check_iterexp : 'a. _ -> _ -> (_ -> _ -> 'a -> unit) -> 'a -> _ -> unit = + fun dims ctx f body (it, xes) -> + check_iter dims ctx it; + List.iter (fun (x, e) -> check_varid dims [] `Expl x; check_exp dims ctx e) xes; + (* Only check body if iteration isn't annotated already. + * That may happen when e.g. an expression got substituted originating from + * a type definition already processed earlier. *) + if xes = [] then f dims (strip_index it::ctx) body; + (* Remove locals. + * All locals are scalar, so no checking or annotation is needed for them. *) + List.iter (fun (x, _) -> uncheck_varid dims x) xes; + match it with + | ListN (_, Some x) -> uncheck_varid dims x + | _ -> () and check_typ dims ctx t = match t.it with @@ -149,11 +158,11 @@ and check_deftyp dims ctx dt = ) tcs *) -and check_iterexp dims ctx (iter, xes) = - check_iter dims ctx iter; - assert (xes = []) - and check_exp dims ctx e = + Debug.(log "il.check_exp" + (fun _ -> il_exp e) + (fun _ -> domain !dims) + ) @@ fun _ -> match e.it with | VarE x -> check_varid dims ctx `Expl x @@ -199,8 +208,7 @@ and check_exp dims ctx e = | CallE (_, as_) -> List.iter (check_arg dims ctx) as_ | IterE (e1, ite) -> - check_iterexp dims ctx ite; - check_exp dims (strip_index (fst ite)::ctx) e1 + check_iterexp dims ctx check_exp e1 ite | SubE (e1, t1, t2) -> check_exp dims ctx e1; check_typ dims ctx t1; @@ -242,8 +250,7 @@ and check_sym dims ctx g = check_exp dims ctx e; check_sym dims ctx g1 | IterG (g1, ite) -> - check_iterexp dims ctx ite; - check_sym dims (strip_index (fst ite)::ctx) g1 + check_iterexp dims ctx check_sym g1 ite and check_prem dims ctx prem = @@ -254,9 +261,8 @@ and check_prem dims ctx prem = | LetPr (e1, e2, _xs) -> check_exp dims ctx e1; check_exp dims ctx e2 - | IterPr (prem', ite) -> - check_iterexp dims ctx ite; - check_prem dims (strip_index (fst ite)::ctx) prem' + | IterPr (prem1, ite) -> + check_iterexp dims ctx check_prem prem1 ite and check_arg dims ctx a = match a.it with @@ -388,10 +394,6 @@ let union = Map.union (fun _ (_, ctx1 as occ1) (_, ctx2 as occ2) -> (* For well-typed scripts, t1 == t2. *) Some (if List.length ctx1 < List.length ctx2 then occ1 else occ2)) -let strip_index = function - | ListN (e, Some _) -> ListN (e, None) - | iter -> iter - let annot_varid' id' = function | Opt -> id' ^ Il.Print.string_of_iter Opt | _ -> id' ^ Il.Print.string_of_iter List @@ -401,26 +403,38 @@ let rec annot_varid id = function | iter::iters -> annot_varid (annot_varid' id.it iter $ id.at) iters -let rec annot_iter dims iter : iter * (occur * occur) = +let rec annot_iter side dims iter : iter * occur = Il.Debug.(log "il.annot_iter" (fun _ -> fmt "%s" (il_iter iter)) - (fun (iter', (occur1, occur2)) -> fmt "%s %s %s" (il_iter iter') - (il_occur occur1) (il_occur occur2)) + (fun (iter', occur) -> fmt "%s %s" (il_iter iter') (il_occur occur)) ) @@ fun _ -> match iter with - | Opt | List | List1 -> iter, Map.(empty, empty) + | Opt | List | List1 -> iter, Map.empty | ListN (e, x_opt) -> - let e', occur1 = annot_exp dims e in - let occur2 = - match x_opt with - | None -> Map.empty - | Some x -> - if x.it <> "_" && Map.mem x.it dims then - Map.singleton x.it (NumT `NatT $ x.at, snd (Map.find x.it dims)) - else - Map.empty - in - ListN (e', x_opt), (occur1, occur2) + let e', occur = annot_exp side dims e in + ListN (e', x_opt), occur + +and annot_iterexp side dims occur1 (it, xes) at : iterexp * occur = + Il.Debug.(log_at "il.annot_iterexp" at + (fun _ -> fmt "%s %s" (il_iter it) (il_occur occur1)) + (fun ((it', _), occur') -> fmt "%s %s" (il_iter it') (il_occur occur')) + ) @@ fun _ -> + assert (xes = []); + let it', occur2 = annot_iter side dims it in + (* Remove locals and lower context level of non-locals *) + let occur1' = + List.filter_map (fun (x, (t, its)) -> + match its with + | [] -> None + | it::its' -> Some (x, (annot_varid' x it, (IterT (t, it) $ at, its'))) + ) (Map.bindings occur1) + in + List.iter (fun (x, _) -> assert (not (Map.mem x.it dims))) xes; + if side = `Rhs && occur1' = [] && match it with Opt | ListN _ -> false | _ -> true then + error at "iteration does not contain iterable variable"; + let xes' = + List.map (fun (x, (x', (t, _))) -> x $ at, VarE (x' $ at) $$ at % t) occur1' in + (it', xes'), union (Map.of_seq (List.to_seq (List.map snd occur1'))) occur2 and annot_typ dims t : typ * occur = Il.Debug.(log "il.annot_typ" @@ -439,7 +453,7 @@ and annot_typ dims t : typ * occur = TupT xts', List.fold_left union Map.empty occurs | IterT (t1, iter) -> let t1', occur1 = annot_typ dims t1 in - let (iter', _), occur = annot_iterexp dims occur1 (iter, []) t.at in + let (iter', _), occur = annot_iterexp `Lhs dims occur1 (iter, []) t.at in IterT (t1', iter'), occur in {t with it}, occur @@ -454,7 +468,7 @@ and annot_typbind dims (x, t) : (id * typ) * occur = (x, t'), union occur1 occur2 -and annot_exp dims e : exp * occur = +and annot_exp side dims e : exp * occur = Il.Debug.(log "il.annot_exp" (fun _ -> fmt "%s" (il_exp e)) (fun (e', occur') -> fmt "%s %s" (il_exp e') (il_occur occur')) @@ -466,105 +480,105 @@ and annot_exp dims e : exp * occur = | VarE _ | BoolE _ | NumE _ | TextE _ -> e.it, Map.empty | UnE (op, nt, e1) -> - let e1', occur1 = annot_exp dims e1 in + let e1', occur1 = annot_exp side dims e1 in UnE (op, nt, e1'), occur1 | BinE (op, nt, e1, e2) -> - let e1', occur1 = annot_exp dims e1 in - let e2', occur2 = annot_exp dims e2 in + let e1', occur1 = annot_exp side dims e1 in + let e2', occur2 = annot_exp side dims e2 in BinE (op, nt, e1', e2'), union occur1 occur2 | CmpE (op, nt, e1, e2) -> - let e1', occur1 = annot_exp dims e1 in - let e2', occur2 = annot_exp dims e2 in + let e1', occur1 = annot_exp side dims e1 in + let e2', occur2 = annot_exp side dims e2 in CmpE (op, nt, e1', e2'), union occur1 occur2 | IdxE (e1, e2) -> - let e1', occur1 = annot_exp dims e1 in - let e2', occur2 = annot_exp dims e2 in + let e1', occur1 = annot_exp side dims e1 in + let e2', occur2 = annot_exp side dims e2 in IdxE (e1', e2'), union occur1 occur2 | SliceE (e1, e2, e3) -> - let e1', occur1 = annot_exp dims e1 in - let e2', occur2 = annot_exp dims e2 in - let e3', occur3 = annot_exp dims e3 in + let e1', occur1 = annot_exp side dims e1 in + let e2', occur2 = annot_exp side dims e2 in + let e3', occur3 = annot_exp side dims e3 in SliceE (e1', e2', e3'), union (union occur1 occur2) occur3 | UpdE (e1, p, e2) -> - let e1', occur1 = annot_exp dims e1 in + let e1', occur1 = annot_exp side dims e1 in let p', occur2 = annot_path dims p in - let e2', occur3 = annot_exp dims e2 in + let e2', occur3 = annot_exp side dims e2 in UpdE (e1', p', e2'), union (union occur1 occur2) occur3 | ExtE (e1, p, e2) -> - let e1', occur1 = annot_exp dims e1 in + let e1', occur1 = annot_exp side dims e1 in let p', occur2 = annot_path dims p in - let e2', occur3 = annot_exp dims e2 in + let e2', occur3 = annot_exp side dims e2 in ExtE (e1', p', e2'), union (union occur1 occur2) occur3 | StrE efs -> - let efs', occurs = List.split (List.map (annot_expfield dims) efs) in + let efs', occurs = List.split (List.map (annot_expfield side dims) efs) in StrE efs', List.fold_left union Map.empty occurs | DotE (e1, atom, as_) -> - let e1', occur1 = annot_exp dims e1 in + let e1', occur1 = annot_exp side dims e1 in let as', occurs = List.split (List.map (annot_arg dims) as_) in DotE (e1', atom, as'), List.fold_left union occur1 occurs | CompE (e1, e2) -> - let e1', occur1 = annot_exp dims e1 in - let e2', occur2 = annot_exp dims e2 in + let e1', occur1 = annot_exp side dims e1 in + let e2', occur2 = annot_exp side dims e2 in CompE (e1', e2'), union occur1 occur2 | LenE e1 -> - let e1', occur1 = annot_exp dims e1 in + let e1', occur1 = annot_exp side dims e1 in LenE e1', occur1 | TupE es -> - let es', occurs = List.split (List.map (annot_exp dims) es) in + let es', occurs = List.split (List.map (annot_exp side dims) es) in TupE es', List.fold_left union Map.empty occurs | CallE (id, as1) -> let as1', occurs = List.split (List.map (annot_arg dims) as1) in CallE (id, as1'), List.fold_left union Map.empty occurs | IterE (e1, iter) -> - let e1', occur1 = annot_exp dims e1 in - let iter', occur' = annot_iterexp dims occur1 iter e.at in + let e1', occur1 = annot_exp side dims e1 in + let iter', occur' = annot_iterexp side dims occur1 iter e.at in IterE (e1', iter'), occur' | ProjE (e1, i) -> - let e1', occur1 = annot_exp dims e1 in + let e1', occur1 = annot_exp side dims e1 in ProjE (e1', i), occur1 | UncaseE (e1, op, as_) -> - let e1', occur1 = annot_exp dims e1 in + let e1', occur1 = annot_exp side dims e1 in let as', occurs = List.split (List.map (annot_arg dims) as_) in UncaseE (e1', op, as'), List.fold_left union occur1 occurs | OptE None -> OptE None, Map.empty | OptE (Some e1) -> - let e1', occur1 = annot_exp dims e1 in + let e1', occur1 = annot_exp side dims e1 in OptE (Some e1'), occur1 | TheE e1 -> - let e1', occur1 = annot_exp dims e1 in + let e1', occur1 = annot_exp side dims e1 in TheE e1', occur1 | ListE es -> - let es', occurs = List.split (List.map (annot_exp dims) es) in + let es', occurs = List.split (List.map (annot_exp side dims) es) in ListE es', List.fold_left union Map.empty occurs | LiftE e1 -> - let e1', occur1 = annot_exp dims e1 in + let e1', occur1 = annot_exp side dims e1 in LiftE e1', occur1 | MemE (e1, e2) -> - let e1', occur1 = annot_exp dims e1 in - let e2', occur2 = annot_exp dims e2 in + let e1', occur1 = annot_exp side dims e1 in + let e2', occur2 = annot_exp side dims e2 in MemE (e1', e2'), union occur1 occur2 | CatE (e1, e2) -> - let e1', occur1 = annot_exp dims e1 in - let e2', occur2 = annot_exp dims e2 in + let e1', occur1 = annot_exp side dims e1 in + let e2', occur2 = annot_exp side dims e2 in CatE (e1', e2'), union occur1 occur2 | CaseE (atom, as_, e1) -> let as', occurs = List.split (List.map (annot_arg dims) as_) in - let e1', occur1 = annot_exp dims e1 in + let e1', occur1 = annot_exp side dims e1 in CaseE (atom, as', e1'), List.fold_left union occur1 occurs | CvtE (e1, nt1, nt2) -> - let e1', occur1 = annot_exp dims e1 in + let e1', occur1 = annot_exp side dims e1 in CvtE (e1', nt1, nt2), occur1 | SubE (e1, t1, t2) -> - let e1', occur1 = annot_exp dims e1 in + let e1', occur1 = annot_exp side dims e1 in let t1', occur2 = annot_typ dims t1 in let t2', occur3 = annot_typ dims t2 in SubE (e1', t1', t2'), union occur1 (union occur2 occur3) in {e with it}, occur -and annot_expfield dims (atom, as_, e) : expfield * occur = +and annot_expfield side dims (atom, as_, e) : expfield * occur = let as', occurs = List.split (List.map (annot_arg dims) as_) in - let e', occur = annot_exp dims e in + let e', occur = annot_exp side dims e in (atom, as', e'), List.fold_left union occur occurs and annot_path dims p : path * occur = @@ -573,12 +587,12 @@ and annot_path dims p : path * occur = | RootP -> RootP, Map.empty | IdxP (p1, e) -> let p1', occur1 = annot_path dims p1 in - let e', occur2 = annot_exp dims e in + let e', occur2 = annot_exp `Rhs dims e in IdxP (p1', e'), union occur1 occur2 | SliceP (p1, e1, e2) -> let p1', occur1 = annot_path dims p1 in - let e1', occur2 = annot_exp dims e1 in - let e2', occur3 = annot_exp dims e2 in + let e1', occur2 = annot_exp `Rhs dims e1 in + let e2', occur3 = annot_exp `Rhs dims e2 in SliceP (p1', e1', e2'), union occur1 (union occur2 occur3) | DotP (p1, atom, as_) -> let p1', occur1 = annot_path dims p1 in @@ -586,34 +600,6 @@ and annot_path dims p : path * occur = DotP (p1', atom, as'), List.fold_left union occur1 occurs in {p with it}, occur -and annot_iterexp dims occur1 (iter, xes) at : iterexp * occur = - Il.Debug.(log "il.annot_iterexp" - (fun _ -> fmt "%s %s" (il_iter iter) (il_occur occur1)) - (fun ((iter', _), occur') -> fmt "%s %s" (il_iter iter') (il_occur occur')) - ) @@ fun _ -> - assert (xes = []); - let iter', (occur2, occur3) = annot_iter dims iter in - let occur1'_l = - List.filter_map (fun (x, (t, iters)) -> - match iters with - | [] -> None - | iter::iters' -> -(* TODO(2, rossberg): this doesn't quite work, since it's comparing - annotated and unannotated expressions: - assert (Il.Eq.eq_iter (strip_index iter') iter); -*) - ignore strip_index; - Some (x, (annot_varid' x iter, (IterT (t, iter) $ at, iters'))) - ) (Map.bindings (union occur1 occur3)) - in -(* TODO(2, rossberg): this should be active - if occur1'_l = [] then - error at "iteration does not contain iterable variable"; -*) - let xes' = - List.map (fun (x, (x', (t, _))) -> x $ at, VarE (x' $ at) $$ at % t) occur1'_l in - (iter', xes'), union (Map.of_seq (List.to_seq (List.map snd occur1'_l))) occur2 - and annot_sym dims g : sym * occur = Il.Debug.(log_in "il.annot_sym" (fun _ -> il_sym g)); let it, occur = @@ -635,10 +621,10 @@ and annot_sym dims g : sym * occur = RangeG (g1', g2'), union occur1 occur2 | IterG (g1, iter) -> let g1', occur1 = annot_sym dims g1 in - let iter', occur' = annot_iterexp dims occur1 iter g.at in + let iter', occur' = annot_iterexp `Lhs dims occur1 iter g.at in IterG (g1', iter'), occur' | AttrG (e1, g2) -> - let e1', occur1 = annot_exp dims e1 in + let e1', occur1 = annot_exp `Lhs dims e1 in let g2', occur2 = annot_sym dims g2 in AttrG (e1', g2'), union occur1 occur2 in {g with it}, occur @@ -647,7 +633,7 @@ and annot_arg dims a : arg * occur = let it, occur = match a.it with | ExpA e -> - let e', occur1 = annot_exp dims e in + let e', occur1 = annot_exp `Rhs dims e in ExpA e', occur1 | TypA t -> let t', occur1 = annot_typ dims t in @@ -687,20 +673,20 @@ and annot_prem dims prem : prem * occur = let it, occur = match prem.it with | RulePr (x, op, e) -> - let e', occur = annot_exp dims e in + let e', occur = annot_exp `Rhs dims e in RulePr (x, op, e'), occur | IfPr e -> - let e', occur = annot_exp dims e in + let e', occur = annot_exp `Rhs dims e in IfPr e', occur | LetPr (e1, e2, ids) -> - let e1', occur1 = annot_exp dims e1 in - let e2', occur2 = annot_exp dims e2 in + let e1', occur1 = annot_exp `Lhs dims e1 in + let e2', occur2 = annot_exp `Rhs dims e2 in LetPr (e1', e2', ids), union occur1 occur2 | ElsePr -> ElsePr, Map.empty | IterPr (prem1, iter) -> let prem1', occur1 = annot_prem dims prem1 in - let iter', occur' = annot_iterexp dims occur1 iter prem.at in + let iter', occur' = annot_iterexp `Rhs dims occur1 iter prem.at in IterPr (prem1', iter'), occur' in {prem with it}, occur @@ -721,10 +707,16 @@ let annot_top annot_x dims x = assert (Map.for_all (fun _ (_t, ctx) -> ctx = []) occurs); x' -let annot_iter = annot_top (fun dims x -> let x', (y, _) = annot_iter dims x in x', y) +let annot_iter = annot_top (annot_iter `Rhs) let annot_typ = annot_top annot_typ -let annot_exp = annot_top annot_exp +let annot_exp = annot_top (annot_exp `Rhs) let annot_sym = annot_top annot_sym let annot_prem = annot_top annot_prem let annot_arg = annot_top annot_arg let annot_param = annot_top annot_param + + +(* Restriction *) + +let restrict dims bound = + Map.filter Il.Free.(fun x _ -> Set.mem x bound.varid) dims diff --git a/spectec/src/frontend/dim.mli b/spectec/src/frontend/dim.mli index 55ad85754..f358818ff 100644 --- a/spectec/src/frontend/dim.mli +++ b/spectec/src/frontend/dim.mli @@ -5,13 +5,13 @@ module Map : module type of Map.Make(String) type dims = (Util.Source.region * iter list) Map.t type outer = dims -val annot_varid : id -> iter list -> id - val check : outer -> param list -> arg list -> typ list -> exp list -> sym list -> prem list -> dims (* raises Error.Error *) +val annot_varid : id -> iter list -> id + val annot_iter : dims -> iter -> iter val annot_typ : dims -> typ -> typ val annot_exp : dims -> exp -> exp @@ -19,3 +19,5 @@ val annot_sym : dims -> sym -> sym val annot_prem : dims -> prem -> prem val annot_arg : dims -> arg -> arg val annot_param : dims -> param -> param + +val restrict : dims -> Il.Free.sets -> dims diff --git a/spectec/src/frontend/elab.ml b/spectec/src/frontend/elab.ml index d40424977..5962ef590 100644 --- a/spectec/src/frontend/elab.ml +++ b/spectec/src/frontend/elab.ml @@ -51,27 +51,14 @@ let unseq_exp e = let untup_typ' t' = match t'.it with - | Il.TupT xts' -> List.map snd xts' - | _ -> [t'] + | Il.TupT xts' -> xts' + | _ -> [("_" $ t'.at, t')] let tup_typ' ts' at = match ts' with | [t'] -> t' | _ -> Il.TupT (List.map (fun t' -> "_" $ t'.at, t') ts') $ at -(* Like El.Convert but for IL *) -let varid_of_typ' t = - (match t.it with - | Il.VarT (id, []) -> id.it - | Il.BoolT -> "bool" - | Il.NumT `NatT -> "nat" - | Il.NumT `IntT -> "int" - | Il.NumT `RatT -> "rat" - | Il.NumT `RealT -> "real" - | Il.TextT -> "text" - | _ -> "_" - ) $ t.at - (* let tup_typ_bind' xts' at = (* @@ -222,7 +209,7 @@ let cat_exp' e1' e2' = (* Environment *) -type notation = Il.typ Mixop.mixop +type notation = (Il.id * Il.typ) Mixop.mixop type kind = | Transp (* forward alias types or notation types *) @@ -361,7 +348,7 @@ let il_arg_of_param p = let il_args_of_params = List.map il_arg_of_param -let to_il_var (_at, t) = (t, Il.Env.Reg) +let to_il_var (_at, t) = t let to_il_def (_at, (ps, t, clauses)) = (ps, t, List.map snd clauses) let to_il_gram (_at, (ps, t, prods, _)) = (ps, t, List.map snd prods) @@ -401,7 +388,10 @@ let annot_env env dims = | None -> x, t | Some (_at, ctx) -> (Dim.annot_varid (x $ at) ctx).it, - List.fold_left (fun t iter -> Il.IterT (t, iter) $ t.at) t ctx + List.fold_left (fun t iter -> + let iter' = match iter with Il.Opt -> Il.Opt | _ -> Il.List in + Il.IterT (t, iter') $ t.at + ) t ctx in Map.add x' (at, t') vars ) env.vars Map.empty in {env with vars} @@ -411,6 +401,8 @@ let make_quants_iter_arg env (free : Il.Free.sets) dims : Il.quant list ref * (m struct include Il.Iter.Skip + type scope = var_typ env' + let left = ref free let acc = ref [] @@ -420,7 +412,19 @@ let make_quants_iter_arg env (free : Il.Free.sets) dims : Il.quant list ref * (m left := Il.Free.{!left with typid = Set.remove id.it !left.typid}; ) -let visit_exp e = Printf.printf "[visit_exp %s]\n%!" (Il.Debug.il_exp e) + let scope_enter x t = +Printf.printf "[scope_enter %s]\n%!" x.it; + let varenv = env.vars in + env.vars <- bind "variable" env.vars x t; + varenv + + let scope_exit x varenv = +Printf.printf "[scope_exit %s]\n%!" x.it; + env.vars <- varenv + +let visit_exp e = +Printf.printf "[visit_exp %s]\n%!" (Il.Debug.il_exp e) + let visit_varid id = if not Il.Free.(Set.mem id.it !left.varid) then Printf.printf "[visit_id %s] not free\n%!" id.it; if not (Map.mem id.it dims) then Printf.printf "[visit_id %s] no dims\n%!" id.it; @@ -484,22 +488,24 @@ Printf.printf "[visit_id %s]\n%!" id.it; let infer_quants env env' dims det ps' as' ts' es' gs' prs' at : Il.quant list = let env' = annot_env env' dims in - Debug.(log_in_at "il.infer_quants" at + Debug.(log_at "il.infer_quants" at (fun _ -> -Printf.sprintf "as'=[%s] " Il.Debug.(list il_arg as') ^ -Printf.sprintf "es'=[%s] " Il.Debug.(list il_exp es') ^ - "local: " ^ +Printf.sprintf "\n as'=[%s]" Il.Debug.(list il_arg as') ^ +Printf.sprintf "\n es'=[%s]" Il.Debug.(list il_exp es') ^ +Printf.sprintf "\n prs'=[%s]" Il.Debug.(list il_prem prs') ^ + "\n locals=" ^ (Map.fold (fun id _ ids -> if Map.mem id env.vars then ids else id::ids ) env'.vars [] |> List.rev |> String.concat " ") ^ - " dims: " ^ + "\n dims=" ^ (Map.fold (fun id (_, ctx) ids -> (id ^ ":" ^ String.concat "" (List.map Il.Print.string_of_iter ctx)) :: ids ) dims [] |> List.rev |> String.concat " ") ^ - " det: " ^ + "\n dets=" ^ (Set.elements det.Det.varid |> String.concat " ") ) - ); + (fun qs -> fmt "\n... %s" (il_quants qs)) + ) @@ fun _ -> let bound = bound_env env in let free = Il.Free.( free_list free_param ps' ++ @@ -734,7 +740,9 @@ let expand_notation env t = Il.Eval.(match_list match_arg (to_il_env env) Il.Subst.empty as' as_) |> Option.map (fun s -> let mixop, (qs, t, _prems), _ = Il.Subst.subst_typcase s tc in - qs, t, mixop, Mixop.apply mixop (untup_typ' t) + let qs', s' = refresh_quants env qs in + let t' = Il.Subst.subst_typ s' t in + qs', t', mixop, Mixop.apply mixop (untup_typ' t') ) | _, _ -> None ) @@ -1044,31 +1052,44 @@ let check_atoms phrase item to_atom list at = (* Iteration *) -let rec elab_iter env (it : iter) : Il.quant list * Il.iter = +let rec elab_iter env (it : iter) : Il.iter = match it with - | Opt -> [], Il.Opt - | List -> [], Il.List - | List1 -> [], Il.List1 + | Opt -> Il.Opt + | List -> Il.List + | List1 -> Il.List1 | ListN (e, xo) -> Option.iter (fun x -> let t = Il.NumT `NatT $ x.at in - let qs, e' = checkpoint (elab_exp env (VarE (x, []) $ x.at) t) in + let e' = checkpoint (elab_exp env (VarE (x, []) $ x.at) t) in match e'.it with - | Il.VarE _ -> assert (qs = []) + | Il.VarE _ -> () | _ -> error_typ env x.at "iteration variable" t ) xo; - let qs, e' = checkpoint (elab_exp env e (Il.NumT `NatT $ e.at)) in - qs, Il.ListN (e', xo) + let e' = checkpoint (elab_exp env e (Il.NumT `NatT $ e.at)) in + Il.ListN (e', xo) -and elab_typiter env (it : iter) : Il.iter = +and elab_itertyp env (it : iter) : Il.iter = let it = match it with | List1 | ListN _ -> List | _ -> it in - let qs, it' = elab_iter env it in - assert (qs = []); - it' + elab_iter env it + +and elab_iterexp : 'a 'b. env -> (env -> 'a -> 'b attempt) -> 'a -> iter -> ('b * Il.iterexp * Il.iter) attempt = + fun env f body (it : iter) -> + let xo = match it with ListN (_, xo) -> xo | _ -> None in + let to_ = Option.join (Option.map (fun x -> Map.find_opt x.it env.vars) xo) in + let it' = elab_iter env it in + let* body' = f env body in + (* Remove local and restore outer if present *) + Option.iter (fun x -> + env.vars <- + match to_ with + | None -> Map.remove x.it env.vars + | Some t -> Map.add x.it t env.vars + ) xo; + Ok (body', (it', []), match it with Opt -> Il.Opt | _ -> Il.List) (* Types *) @@ -1083,9 +1104,7 @@ and elab_typ env ?(fwd = true) (t : typ) : Il.typ = let ps, k = find "syntax type" env.typs x' in if not fwd && k = Transp then error_id x "invalid forward reference to syntax type"; - let qs, as', _s = elab_args `Rhs env as_ ps t.at in - if qs <> [] then - error t.at "illegal expression form in type instantiation"; + let as', _s = elab_args `Rhs env as_ ps t.at in Il.VarT (x', as') $ t.at | BoolT -> Il.BoolT $ t.at | NumT t' -> Il.NumT t' $ t.at @@ -1094,14 +1113,14 @@ and elab_typ env ?(fwd = true) (t : typ) : Il.typ = | ParenT t1 -> elab_typ env t1 | TupT ts -> tup_typ' (List.map (elab_typ env) ts) t.at | IterT (t1, iter) -> - let iter' = elab_typiter env iter in + let iter' = elab_itertyp env iter in let t1' = elab_typ env t1 in Il.IterT (t1', iter') $ t.at | StrT _ | CaseT _ | ConT _ | RangeT _ | AtomT _ | SeqT _ | InfixT _ | BrackT _ -> error t.at "this type is only allowed in type definitions" -and elab_typ_definition env dims tid (t : typ) : dots * Il.deftyp * dots = +and elab_typ_definition env outer_dims tid (t : typ) : dots * Il.deftyp * dots = Debug.(log_at "el.elab_typ_definition" t.at (fun _ -> fmt "%s = %s" tid.it (el_typ t)) (fun (_, dt, _) -> il_deftyp dt) @@ -1128,7 +1147,7 @@ and elab_typ_definition env dims tid (t : typ) : dots * Il.deftyp * dots = List.map new_typfield tfs (* ensure atom annotations are fresh *) ) ts in - let tfs' = tfs1 @ tfs2 @ map_filter_nl_list (elab_typfield env dims tid t.at) tfs in + let tfs' = tfs1 @ tfs2 @ map_filter_nl_list (elab_typfield env outer_dims tid t.at) tfs in check_atoms "record" "field" Fun.id tfs' t.at; dots1, Il.StructT tfs' $ t.at, dots2 | CaseT (dots1, ts, tcs, dots2) -> @@ -1151,14 +1170,14 @@ and elab_typ_definition env dims tid (t : typ) : dots * Il.deftyp * dots = List.map new_typcase tcs (* ensure atom annotations are fresh *) ) ts in - let tcs' = tcs1 @ tcs2 @ map_filter_nl_list (elab_typcase env dims tid t.at) tcs in + let tcs' = tcs1 @ tcs2 @ map_filter_nl_list (elab_typcase env outer_dims tid t.at) tcs in check_atoms "variant" "case" (fun op -> Option.get (Mixop.head op)) tcs' t.at; dots1, Il.VariantT tcs' $ t.at, dots2 | ConT tc -> - let tc' = elab_typcon env dims tid t.at tc in + let tc' = elab_typcon env outer_dims tid t.at tc in NoDots, Il.VariantT [tc'] $ t.at, NoDots | RangeT tes -> - let ts_fes' = map_filter_nl_list (elab_typenum env dims tid) tes in + let ts_fes' = map_filter_nl_list (elab_typenum env outer_dims tid) tes in let t', fe' = List.fold_left (fun (t, fe') (tI, feI') -> (if narrow_typ env tI t then t else tI), @@ -1193,9 +1212,9 @@ and typ_rep env t : Il.typ = | Il.TupT [_, t1] -> typ_rep env t1 | t' -> t' $ t.at -and elab_typfield env dims tid at (tf : typfield) : Il.typfield = +and elab_typfield env outer_dims tid at (tf : typfield) : Il.typfield = let atom, (t, prems), hints = tf in - let _mixop, qs, t', prems' = elab_typ_notation env dims tid at t prems in + let _mixop, qs, t', prems' = elab_typ_notation env outer_dims tid at t prems in let hints' = elab_hints tid "" hints in let t'' = match t'.it with @@ -1204,15 +1223,15 @@ and elab_typfield env dims tid at (tf : typfield) : Il.typfield = in (elab_atom atom tid, (qs, t'', prems'), hints') -and elab_typcase env dims tid at (tc : typcase) : Il.typcase = +and elab_typcase env outer_dims tid at (tc : typcase) : Il.typcase = let _atom, (t, prems), hints = tc in - let mixop, qs, t', prems' = elab_typ_notation env dims tid at t prems in + let mixop, qs, t', prems' = elab_typ_notation env outer_dims tid at t prems in let hints' = elab_hints tid "" hints in (mixop, (qs, t', prems'), hints') -and elab_typcon env dims tid at (tc : typcon) : Il.typcase = +and elab_typcon env outer_dims tid at (tc : typcon) : Il.typcase = let (t, prems), hints = tc in - let mixop, qs, t', prems' = elab_typ_notation env dims tid at t prems in + let mixop, qs, t', prems' = elab_typ_notation env outer_dims tid at t prems in let hints' = elab_hints tid tid.it hints in (mixop, (qs, t', prems'), hints') @@ -1220,34 +1239,28 @@ and elab_typenum env outer_dims tid (te : typenum) : Il.typ * (Il.exp -> numtyp assert (valid_tid tid); let e1, e2o = te in let _e1' = elab_exp env e1 (Il.NumT `IntT $ e1.at) in (* ensure it's <= int *) - let _qs1, _, t1 = checkpoint (infer_exp env e1) in (* get precise type *) + let _, t1 = checkpoint (infer_exp env e1) in (* get precise type *) match e2o with | None -> t1, fun eid' nt -> - let qs1, e1' = checkpoint (elab_exp env e1 (Il.NumT nt $ e1.at)) in (* redo with overall type *) + let e1' = checkpoint (elab_exp env e1 (Il.NumT nt $ e1.at)) in (* redo with overall type *) let dims = Dim.check outer_dims [] [] [] [e1'] [] [] in let e1' = Dim.annot_exp dims e1' in infer_no_quants env dims Det.empty [] [] [] [e1'] [] [] e1.at; - if qs1 <> [] then - error e1.at "illegal expression form in range type"; Il.(CmpE (`EqOp, `BoolT, eid', e1') $$ e1'.at % (Il.BoolT $ e1.at)) | Some e2 -> let at = Source.over_region [e1.at; e2.at] in - let _qs21', _e2' = checkpoint (elab_exp env e2 (Il.NumT `IntT $ e2.at)) in - let _qs22, _, t2 = checkpoint (infer_exp env e2) in + let _e2' = checkpoint (elab_exp env e2 (Il.NumT `IntT $ e2.at)) in + let _, t2 = checkpoint (infer_exp env e2) in (if narrow_typ env t2 t1 then t1 else t2).it $ at, fun eid' nt -> - let qs1, e1' = checkpoint (elab_exp env e1 (Il.NumT nt $ e1.at)) in - let qs2, e2' = checkpoint (elab_exp env e2 (Il.NumT nt $ e2.at)) in + let e1' = checkpoint (elab_exp env e1 (Il.NumT nt $ e1.at)) in + let e2' = checkpoint (elab_exp env e2 (Il.NumT nt $ e2.at)) in let dims = Dim.check outer_dims [] [] [] [e1'; e2'] [] [] in let e1' = Dim.annot_exp dims e1' in let e2' = Dim.annot_exp dims e2' in infer_no_quants env dims Det.empty [] [] [] [e1'; e2'] [] [] at; - if qs1 <> [] then - error e1.at "illegal expression form in range type"; - if qs2 <> [] then - error e2.at "illegal expression form in range type"; Il.(BinE (`AndOp, `BoolT, CmpE (`GeOp, (nt :> Il.optyp), eid', e1') $$ e1'.at % (Il.BoolT $ e1.at), CmpE (`LeOp, (nt :> Il.optyp), eid', e2') $$ e2'.at % (Il.BoolT $ e2.at) @@ -1260,8 +1273,7 @@ and elab_typ_notation env outer_dims tid at (t : typ) (prems : prem nl_list) : let env' = local_env env in let mixop, xts' = elab_typ_notation' env' tid t in let xs', ts' = List.split xts' in - let qss, premss' = List.split (map_filter_nl_list (elab_prem env') prems) in - let prems' = List.concat premss' in + let prems' = List.concat (map_filter_nl_list (elab_prem env') prems) in Printf.printf "--- 1 ---\n%!"; let dims = Dim.check outer_dims [] [] ts' [] [] prems' in Printf.printf "--- 2 ---\n%!"; @@ -1272,7 +1284,7 @@ Printf.printf "--- 3 ---\n%!"; let det = Det.(det_typ t' ++ det_list det_prem prems') in Printf.printf "--- 4 ---\n%!"; let qs = infer_quants env env' dims det [] [] [t'] [] [] prems' at in - mixop, qs @ List.concat qss, t', prems' + mixop, qs, t', prems' (* Debug.(log_in_at "il.infer_quants" at (fun _ -> @@ -1376,16 +1388,16 @@ and elab_typ_notation' env tid (t : typ) : Il.mixop * (Il.id * Il.typ) list = * - Fail (at, s) when it cannot, where s is the name of the failing construct * - raises Error.Error on fatal, unrecoverable errors *) -and infer_exp env e : (Il.quant list * Il.exp * Il.typ) attempt = +and infer_exp env e : (Il.exp * Il.typ) attempt = Debug.(log_at "el.infer_exp" e.at (fun _ -> fmt "%s" (el_exp e)) - (function Ok (qs, e', t) -> fmt "%s%s : %s" (il_quants qs) (il_exp e') (il_typ t) | _ -> "fail") + (function Ok (e', t) -> fmt "%s : %s" (il_exp e') (il_typ t) | _ -> "fail") ) @@ fun _ -> - let* qs, e', t' = infer_exp' env e in + let* e', t' = infer_exp' env e in let t = t' $ e.at in - Ok (qs, e' $$ e.at % t, t) + Ok (e' $$ e.at % t, t) -and infer_exp' env e : (Il.quant list * Il.exp' * Il.typ') attempt = +and infer_exp' env e : (Il.exp' * Il.typ') attempt = match e.it with | VarE (x, args) -> (* Args may only occur due to syntactic overloading with types *) @@ -1400,101 +1412,101 @@ and infer_exp' env e : (Il.quant list * Il.exp' * Il.typ') attempt = env.vars <- bind "variable" env.vars x t; Ok t else fail_infer e.at "variable" - in Ok ([], Il.VarE x, t.it) + in Ok (Il.VarE x, t.it) | AtomE _ -> fail_infer e.at "atom" | BoolE b -> - Ok ([], Il.BoolE b, Il.BoolT) + Ok (Il.BoolE b, Il.BoolT) | NumE (_op, n) -> - Ok ([], Il.NumE n, Il.NumT (Num.to_typ n)) + Ok (Il.NumE n, Il.NumT (Num.to_typ n)) | TextE s -> - Ok ([], Il.TextE s, Il.TextT) + Ok (Il.TextE s, Il.TextT) | CvtE (e1, nt) -> - let* qs1, e1', t1 = infer_exp env e1 in + let* e1', t1 = infer_exp env e1 in let* nt1 = as_num_typ "conversion" env Infer t1 e1.at in - let* qs1', e1'' = cast_exp "operand" env e1' t1 (Il.NumT nt1 $ e1.at) in - Ok (qs1 @ qs1', Il.CvtE (e1'', nt1, nt), Il.NumT nt) + let* e1'' = cast_exp "operand" env e1' t1 (Il.NumT nt1 $ e1.at) in + Ok (Il.CvtE (e1'', nt1, nt), Il.NumT nt) | UnE (op, e1) -> - let* qs1, e1', t1 = infer_exp env e1 in + let* e1', t1 = infer_exp env e1 in let* op', ot, t1', t = infer_unop env op (typ_rep env t1) e.at in - let* qs1', e1'' = cast_exp "operand" env e1' t1 t1' in + let* e1'' = cast_exp "operand" env e1' t1 t1' in if op = `PlusMinusOp || op = `MinusPlusOp then env.pm <- true; - Ok (qs1 @ qs1', Il.UnE (op', ot, e1''), t.it) + Ok (Il.UnE (op', ot, e1''), t.it) | BinE (e1, op, e2) -> - let* qs1, e1', t1 = infer_exp env e1 in - let* qs2, e2', t2 = infer_exp env e2 in + let* e1', t1 = infer_exp env e1 in + let* e2', t2 = infer_exp env e2 in let* op', ot, t1', t2', t = infer_binop env op (typ_rep env t1) (typ_rep env t2) e.at in - let* qs1', e1'' = cast_exp "operand" env e1' t1 t1' in - let* qs2', e2'' = cast_exp "operand" env e2' t2 t2' in - Ok (qs1 @ qs1' @ qs2 @ qs2', Il.BinE (op', ot, e1'', e2''), t.it) + let* e1'' = cast_exp "operand" env e1' t1 t1' in + let* e2'' = cast_exp "operand" env e2' t2 t2' in + Ok (Il.BinE (op', ot, e1'', e2''), t.it) | CmpE (e1, op, ({it = CmpE (e21, _, _); _} as e2)) -> - let* qs1, e1', _t1 = infer_exp env (CmpE (e1, op, e21) $ e.at) in - let* qs2, e2', _t2 = infer_exp env e2 in - Ok (qs1 @ qs2, Il.BinE (`AndOp, `BoolT, e1', e2'), Il.BoolT) + let* e1', _t1 = infer_exp env (CmpE (e1, op, e21) $ e.at) in + let* e2', _t2 = infer_exp env e2 in + Ok (Il.BinE (`AndOp, `BoolT, e1', e2'), Il.BoolT) | CmpE (e1, op, e2) -> (match infer_cmpop env op with | `Poly op' -> - let* qs, e1', e2' = + let* e1', e2' = choice env [ (fun env -> - let* qs2, e2', t2 = infer_exp env e2 in - let* qs1, e1' = elab_exp env e1 t2 in - Ok (qs1 @ qs2, e1', e2') + let* e2', t2 = infer_exp env e2 in + let* e1' = elab_exp env e1 t2 in + Ok (e1', e2') ); (fun env -> - let* qs1, e1', t1 = infer_exp env e1 in - let* qs2, e2' = elab_exp env e2 t1 in - Ok (qs1 @ qs2, e1', e2') + let* e1', t1 = infer_exp env e1 in + let* e2' = elab_exp env e2 t1 in + Ok (e1', e2') ); ] in - Ok (qs, Il.CmpE (op', `BoolT, e1', e2'), Il.BoolT) + Ok (Il.CmpE (op', `BoolT, e1', e2'), Il.BoolT) | `Over elab_cmpop' -> - let* qs1, e1', t1 = infer_exp env e1 in - let* qs2, e2', t2 = infer_exp env e2 in + let* e1', t1 = infer_exp env e1 in + let* e2', t2 = infer_exp env e2 in let* op', ot, t = elab_cmpop' (typ_rep env t1) (typ_rep env t2) e.at in - let* qs1', e1'' = cast_exp "operand" env e1' t1 t in - let* qs2', e2'' = cast_exp "operand" env e2' t2 t in - Ok (qs1 @ qs1' @ qs2 @ qs2', Il.CmpE (op', ot, e1'', e2''), Il.BoolT) + let* e1'' = cast_exp "operand" env e1' t1 t in + let* e2'' = cast_exp "operand" env e2' t2 t in + Ok (Il.CmpE (op', ot, e1'', e2''), Il.BoolT) ) | IdxE (e1, e2) -> - let* qs1, e1', t1 = infer_exp env e1 in + let* e1', t1 = infer_exp env e1 in let* t = as_list_typ "expression" env Infer t1 e1.at in - let* qs2, e2' = elab_exp env e2 (Il.NumT `NatT $ e2.at) in - Ok (qs1 @ qs2, Il.IdxE (e1', e2'), t.it) + let* e2' = elab_exp env e2 (Il.NumT `NatT $ e2.at) in + Ok (Il.IdxE (e1', e2'), t.it) | SliceE (e1, e2, e3) -> - let* qs1, e1', t1 = infer_exp env e1 in + let* e1', t1 = infer_exp env e1 in let* _t' = as_list_typ "expression" env Infer t1 e1.at in - let* qs2, e2' = elab_exp env e2 (Il.NumT `NatT $ e2.at) in - let* qs3, e3' = elab_exp env e3 (Il.NumT `NatT $ e3.at) in - Ok (qs1 @ qs2 @ qs3, Il.SliceE (e1', e2', e3'), t1.it) + let* e2' = elab_exp env e2 (Il.NumT `NatT $ e2.at) in + let* e3' = elab_exp env e3 (Il.NumT `NatT $ e3.at) in + Ok (Il.SliceE (e1', e2', e3'), t1.it) | UpdE (e1, p, e2) -> - let* qs1, e1', t1 = infer_exp env e1 in - let* qsP, p', t2 = elab_path env p t1 in - let* qs2, e2' = elab_exp env e2 t2 in - Ok (qs1 @ qsP @ qs2, Il.UpdE (e1', p', e2'), t1.it) + let* e1', t1 = infer_exp env e1 in + let* p', t2 = elab_path env p t1 in + let* e2' = elab_exp env e2 t2 in + Ok (Il.UpdE (e1', p', e2'), t1.it) | ExtE (e1, p, e2) -> - let* qs1, e1', t1 = infer_exp env e1 in - let* qsP, p', t2 = elab_path env p t1 in + let* e1', t1 = infer_exp env e1 in + let* p', t2 = elab_path env p t1 in let* _ = as_list_typ "path" env Infer t2 p.at in - let* qs2, e2' = elab_exp env e2 t2 in - Ok (qs1 @ qsP @ qs2, Il.ExtE (e1', p', e2'), t1.it) + let* e2' = elab_exp env e2 t2 in + Ok (Il.ExtE (e1', p', e2'), t1.it) | StrE _ -> fail_infer e.at "record" | DotE (e1, atom) -> - let* qs1, e1', t1 = infer_exp env e1 in + let* e1', t1 = infer_exp env e1 in let* tfs, dots = as_struct_typ "expression" env Infer t1 e1.at in if dots = Dots then error e1.at "used record type is only partially defined at this point"; - let* _, (qsF, tF, prems), _ = attempt (find_field tfs atom e1.at) t1 in - let qsF', s = refresh_quants env qsF in - let qas' = il_args_of_params qsF' in + let* _, (qs, tF, prems), _ = attempt (find_field tfs atom e1.at) t1 in + let qs', s = refresh_quants env qs in + let qas' = il_args_of_params qs' in let tF' = Il.Subst.subst_typ s tF in let e' = Il.DotE (e1', elab_atom atom (expand_id env t1), qas') in let e'' = if prems = [] then e' else Il.ProjE (e' $$ e.at % tF', 0) in - Ok (qs1 @ qsF', e'', tF'.it) + Ok (e'', tF'.it) | CommaE (e1, e2) -> - let* qs1, e1', t1 = infer_exp env e1 in + let* e1', t1 = infer_exp env e1 in let* tfs, dots = as_struct_typ "expression" env Infer t1 e1.at in if dots = Dots then error e1.at "used record type is only partially defined at this point"; @@ -1504,85 +1516,82 @@ and infer_exp' env e : (Il.quant list * Il.exp' * Il.typ') attempt = | SeqE ({it = AtomE atom; at; _} :: es2) -> let* _t2 = attempt (find_field tfs atom at) t1 in let e2 = match es2 with [e2] -> e2 | _ -> SeqE es2 $ e2.at in - let* qs2, e2' = elab_exp env (StrE [Elem (atom, e2)] $ e2.at) t1 in - Ok (qs1 @ qs2, Il.CompE (e2', e1'), t1.it) + let* e2' = elab_exp env (StrE [Elem (atom, e2)] $ e2.at) t1 in + Ok (Il.CompE (e2', e1'), t1.it) | _ -> error e.at "malformed comma operator" ) | CatE (e1, e2) -> - let* qs1, e1', t1 = infer_exp env e1 in + let* e1', t1 = infer_exp env e1 in let* () = as_cat_typ "operand" env Infer t1 e1.at in - let* qs2, e2' = elab_exp env e2 t1 in - Ok (qs1 @ qs2, - (if is_iter_typ env t1 then Il.CatE (e1', e2') else Il.CompE (e1', e2')), t1.it) + let* e2' = elab_exp env e2 t1 in + Ok ((if is_iter_typ env t1 then Il.CatE (e1', e2') else Il.CompE (e1', e2')), t1.it) | MemE (e1, e2) -> choice env [ (fun env -> - let* qs1, e1', t1 = infer_exp env e1 in - let* qs2, e2' = elab_exp env e2 (Il.IterT (t1, Il.List) $ e2.at) in - Ok (qs1 @ qs2, Il.MemE (e1', e2'), Il.BoolT) + let* e1', t1 = infer_exp env e1 in + let* e2' = elab_exp env e2 (Il.IterT (t1, Il.List) $ e2.at) in + Ok (Il.MemE (e1', e2'), Il.BoolT) ); (fun env -> - let* qs2, e2', t2 = infer_exp env e2 in + let* e2', t2 = infer_exp env e2 in let* t1 = as_list_typ "operand" env Infer t2 e2.at in - let* qs1, e1' = elab_exp env e1 t1 in - Ok (qs1 @ qs2, Il.MemE (e1', e2'), Il.BoolT) + let* e1' = elab_exp env e1 t1 in + Ok (Il.MemE (e1', e2'), Il.BoolT) ); ] | LenE e1 -> - let* qs1, e1', t1 = infer_exp env e1 in + let* e1', t1 = infer_exp env e1 in let* _t11 = as_list_typ "expression" env Infer t1 e1.at in - Ok (qs1, Il.LenE e1', Il.NumT `NatT) + Ok (Il.LenE e1', Il.NumT `NatT) | SizeE id -> let _ = find "grammar" env.grams id in - Ok ([], Il.NumE (`Nat Z.zero), Il.NumT `NatT) + Ok (Il.NumE (`Nat Z.zero), Il.NumT `NatT) | ParenE e1 | ArithE e1 -> infer_exp' env e1 | TupE es -> - let* qs, es', ts = infer_exp_list env es in - Ok (qs, Il.TupE es', (tup_typ' ts e.at).it) + let* es', ts = infer_exp_list env es in + Ok (Il.TupE es', (tup_typ' ts e.at).it) | CallE (id, as_) -> let ps, t, _ = find "definition" env.defs id in - let qs, as', s = elab_args `Rhs env as_ ps e.at in - Ok (qs, Il.CallE (id, as'), (Il.Subst.subst_typ s t).it) + let as', s = elab_args `Rhs env as_ ps e.at in + Ok (Il.CallE (id, as'), (Il.Subst.subst_typ s t).it) | EpsE -> fail_infer e.at "empty sequence" | SeqE [] -> (* treat as empty tuple, not principal *) - Ok ([], Il.TupE [], Il.TupT []) + Ok (Il.TupE [], Il.TupT []) | SeqE es | ListE es -> (* treat as homogeneous sequence, not principal *) - let* qs, es', ts = infer_exp_list env es in + let* es', ts = infer_exp_list env es in let t = List.hd ts in if List.for_all (equiv_typ env t) (List.tl ts) then - Ok (qs, Il.ListE es', Il.IterT (t, Il.List)) + Ok (Il.ListE es', Il.IterT (t, Il.List)) else fail_infer e.at "expression sequence" | InfixE _ -> fail_infer e.at "infix expression" | BrackE _ -> fail_infer e.at "bracket expression" - | IterE (e1, iter) -> - let qs, iter' = elab_iterexp env iter in - let* qs1, e1', t1 = infer_exp env e1 in - let iter'' = match fst iter' with Il.Opt -> Il.Opt | _ -> Il.List in - Ok (qs1 @ qs, Il.IterE (e1', iter'), Il.IterT (t1, iter'')) + | IterE (e1, it) -> + let* (e1', t1), ite', itt' = elab_iterexp env infer_exp e1 it in + Ok (Il.IterE (e1', ite'), Il.IterT (t1, itt')) | TypE (e1, t) -> let t' = elab_typ env t in - let* qs1, e1' = elab_exp env e1 t' in - Ok (qs1, e1'.it, t'.it) + let* e1' = elab_exp env e1 t' in + Ok (e1'.it, t'.it) | HoleE _ -> error e.at "misplaced hole" | FuseE _ -> error e.at "misplaced token concatenation" | UnparenE _ -> error e.at "misplaced unparenthesize" | LatexE _ -> error e.at "misplaced latex literal" and infer_exp_list env = function - | [] -> Ok ([], [], []) + | [] -> Ok ([], []) | e::es -> - let* qs1, e', t = infer_exp env e in - let* qs2, es', ts = infer_exp_list env es in - Ok (qs1 @ qs2, e'::es', t::ts) + let* e', t = infer_exp env e in + let* es', ts = infer_exp_list env es in + Ok (e'::es', t::ts) -and elab_exp env (e : exp) (t : Il.typ) : (Il.quant list * Il.exp) attempt = +and elab_exp env (e : exp) (t : Il.typ) : Il.exp attempt = Debug.(log_at "el.elab_exp" e.at (fun _ -> fmt "%s : %s" (el_exp e) (il_typ t)) - (function Ok (qs, e') -> fmt "%s%s" (il_quants qs) (il_exp e') | _ -> "fail") + (function Ok e' -> fmt "%s" (il_exp e') | _ -> "fail") ) @@ fun _ -> nest e.at t ( if is_iter_typ env t then @@ -1598,8 +1607,8 @@ and elab_exp env (e : exp) (t : Il.typ) : (Il.quant list * Il.exp) attempt = match e.it with | VarE ({it = "_"; _}, []) | EpsE | SeqE [] -> fail_silent | _ -> - let* qs, e' = elab_exp env e t1 in - Ok (qs, lift_exp' e' iter $$ e.at % t) + let* e' = elab_exp env e t1 in + Ok (lift_exp' e' iter $$ e.at % t) ); (fun env -> elab_exp_plain env e t); ] @@ -1613,22 +1622,21 @@ and elab_exp env (e : exp) (t : Il.typ) : (Il.quant list * Il.exp) attempt = elab_exp_plain env e t ) -and elab_exp_plain env (e : exp) (t : Il.typ) : (Il.quant list * Il.exp) attempt = +and elab_exp_plain env (e : exp) (t : Il.typ) : Il.exp attempt = Debug.(log_at "el.elab_exp_plain" e.at (fun _ -> fmt "%s : %s" (el_exp e) (il_typ t)) - (function Ok (qs, e') -> fmt "%s%s" (il_quants qs) (il_exp e') | _ -> "fail") + (function Ok e' -> fmt "%s" (il_exp e') | _ -> "fail") ) @@ fun _ -> - let* qs, e' = elab_exp_plain' env e t in - Ok (qs, e' $$ e.at % t) + let* e' = elab_exp_plain' env e t in + Ok (e' $$ e.at % t) -and elab_exp_plain' env (e : exp) (t : Il.typ) : (Il.quant list * Il.exp') attempt = +and elab_exp_plain' env (e : exp) (t : Il.typ) : Il.exp' attempt = match e.it with | BoolE _ | NumE _ | CvtE _ | UnE _ | BinE _ | CmpE _ | IdxE _ | DotE _ | MemE _ | LenE _ | SizeE _ | CallE _ | TypE _ | HoleE _ | FuseE _ | UnparenE _ | LatexE _ -> - let* qs1, e', t' = infer_exp env e in - let* qs2, e'' = cast_exp' "expression" env e' t' t in - Ok (qs1 @ qs2, e'') + let* e', t' = infer_exp env e in + cast_exp' "expression" env e' t' t | TextE s -> let cs = try Utf8.decode s with Utf8.Utf8 -> [] in (* Allow treatment as character constant *) @@ -1637,57 +1645,55 @@ and elab_exp_plain' env (e : exp) (t : Il.typ) : (Il.quant list * Il.exp') attem (Il.NumT `NatT $ e.at) in cast_exp' "character" env e' (Il.NumT `NatT $ e.at) t else - let* qs1, e', t' = infer_exp env e in - let* qs2, e'' = cast_exp' "expression" env e' t' t in - Ok (qs1 @ qs2, e'') + let* e', t' = infer_exp env e in + cast_exp' "expression" env e' t' t | VarE (id, _) when id.it = "_" -> - Ok ([], Il.VarE id) + Ok (Il.VarE id) | VarE (id, _) -> choice env [ (fun env -> - let* qs1, e', t' = infer_exp env e in - let* qs2, e'' = cast_exp' "expression" env e' t' t in - Ok (qs1 @ qs2, e'') + let* e', t' = infer_exp env e in + cast_exp' "expression" env e' t' t ); (fun env -> if is_iter_typ env t && id.it <> "_" then (* Never infer an iteration type for a variable *) let* t1, iter = as_iter_typ "" env Check t e.at in - let* qs, e' = elab_exp env e t1 in - Ok (qs, lift_exp' e' iter) + let* e' = elab_exp env e t1 in + Ok (lift_exp' e' iter) else if not (bound env.vars id || bound env.gvars (strip_var_suffix id)) then let _ = () in env.vars <- bind "variable" env.vars id t; - Ok ([], Il.VarE id) + Ok (Il.VarE id) else fail_silent (* suitable error was produced by infer_exp already *) ); ] | SliceE (e1, e2, e3) -> let* _t' = as_list_typ "expression" env Check t e1.at in - let* qs1, e1' = elab_exp env e1 t in - let* qs2, e2' = elab_exp env e2 (Il.NumT `NatT $ e2.at) in - let* qs3, e3' = elab_exp env e3 (Il.NumT `NatT $ e3.at) in - Ok (qs1 @ qs2 @ qs3, Il.SliceE (e1', e2', e3')) + let* e1' = elab_exp env e1 t in + let* e2' = elab_exp env e2 (Il.NumT `NatT $ e2.at) in + let* e3' = elab_exp env e3 (Il.NumT `NatT $ e3.at) in + Ok (Il.SliceE (e1', e2', e3')) | UpdE (e1, p, e2) -> - let* qs1, e1' = elab_exp env e1 t in - let* qsP, p', t2 = elab_path env p t in - let* qs2, e2' = elab_exp env e2 t2 in - Ok (qs1 @ qsP @ qs2, Il.UpdE (e1', p', e2')) + let* e1' = elab_exp env e1 t in + let* p', t2 = elab_path env p t in + let* e2' = elab_exp env e2 t2 in + Ok (Il.UpdE (e1', p', e2')) | ExtE (e1, p, e2) -> - let* qs1, e1' = elab_exp env e1 t in - let* qsP, p', t2 = elab_path env p t in + let* e1' = elab_exp env e1 t in + let* p', t2 = elab_path env p t in let* _ = as_list_typ "path" env Check t2 p.at in - let* qs2, e2' = elab_exp env e2 t2 in - Ok (qs1 @ qsP @ qs2, Il.ExtE (e1', p', e2')) + let* e2' = elab_exp env e2 t2 in + Ok (Il.ExtE (e1', p', e2')) | StrE efs -> let* tfs, dots = as_struct_typ "record" env Check t e.at in if dots = Dots then error e.at "used record type is only partially defined at this point"; - let* qs, efs' = elab_expfields env (expand_id env t) (filter_nl efs) tfs t e.at in - Ok (qs, Il.StrE efs') + let* efs' = elab_expfields env (expand_id env t) (filter_nl efs) tfs t e.at in + Ok (Il.StrE efs') | CommaE (e1, e2) -> - let* qs1, e1' = elab_exp env e1 t in + let* e1' = elab_exp env e1 t in let* tfs, dots1 = as_struct_typ "expression" env Check t e1.at in if dots1 = Dots then error e1.at "used record type is only partially defined at this point"; @@ -1697,32 +1703,31 @@ and elab_exp_plain' env (e : exp) (t : Il.typ) : (Il.quant list * Il.exp') attem | SeqE ({it = AtomE atom; at; _} :: es2) -> let* _t2 = attempt (find_field tfs atom at) t in let e2 = match es2 with [e2] -> e2 | _ -> SeqE es2 $ e2.at in - let* qs2, e2' = elab_exp env (StrE [Elem (atom, e2)] $ e2.at) t in - Ok (qs1 @ qs2, Il.CompE (e2', e1')) + let* e2' = elab_exp env (StrE [Elem (atom, e2)] $ e2.at) t in + Ok (Il.CompE (e2', e1')) | _ -> error e.at "malformed comma operator" ) | CatE (e1, e2) -> let* () = as_cat_typ "expression" env Check t e.at in - let* qs1, e1' = elab_exp env e1 t in - let* qs2, e2' = elab_exp env e2 t in - Ok (qs1 @ qs2, - if is_iter_typ env t then Il.CatE (e1', e2') else Il.CompE (e1', e2')) + let* e1' = elab_exp env e1 t in + let* e2' = elab_exp env e2 t in + Ok (if is_iter_typ env t then Il.CatE (e1', e2') else Il.CompE (e1', e2')) | ParenE e1 | ArithE e1 -> elab_exp_plain' env e1 t | TupE es -> let* xts = as_tup_typ "tuple" env Check t e.at in - let* qs, es' = elab_exp_list env es xts e.at in - Ok (qs, Il.TupE es') + let* es' = elab_exp_list env es xts e.at in + Ok (Il.TupE es') | ListE es -> let* t1, iter = as_iter_typ "list" env Check t e.at in if iter <> Il.List then fail_typ env e.at "list" t else let xts = List.init (List.length es) (fun _ -> "_" $ t1.at, t1) in - let* qs, es' = elab_exp_list env es xts e.at in - Ok (qs, Il.ListE es') + let* es' = elab_exp_list env es xts e.at in + Ok (Il.ListE es') | SeqE [] when is_empty_notation_typ env t -> - let* qs1, e', t' = infer_exp env e in - let* qs2, e'' = cast_exp' "empty expression" env e' t' t in - Ok (qs1 @ qs2, e'') + let* e', t' = infer_exp env e in + let* e'' = cast_exp' "empty expression" env e' t' t in + Ok (e'') | EpsE | SeqE _ when is_iter_typ env t -> let* t1, iter = as_iter_typ "" env Check t e.at in elab_exp_iter' env (unseq_exp e) (t1, iter) t e.at @@ -1736,12 +1741,12 @@ and elab_exp_plain' env (e : exp) (t : Il.typ) : (Il.quant list * Il.exp') attem * the latter case is already captured above *) if is_notation_typ env t then let* not = as_notation_typ "" env Check t e.at in - let* qs, e' = elab_exp_notation env (expand_id env t) e not t in - Ok (qs, e'.it) + let* e' = elab_exp_notation env (expand_id env t) e not t in + Ok e'.it else if is_variant_typ env t then let* tcs, _ = as_variant_typ "" env Check t e.at in - let* qs, e' = elab_exp_variant env (expand_id env t) e tcs t e.at in - Ok (qs, e'.it) + let* e' = elab_exp_variant env (expand_id env t) e tcs t e.at in + Ok e'.it else let name = match e.it with @@ -1752,111 +1757,112 @@ and elab_exp_plain' env (e : exp) (t : Il.typ) : (Il.quant list * Il.exp') attem | SeqE _ -> "expression sequence" | _ -> assert false in fail_typ env e.at name t - | IterE (e1, iter2) -> - let* t1, iter = as_iter_typ "iteration" env Check t e.at in - let qs2, iter2' = elab_iterexp env iter2 in - let* qs1, e1' = elab_exp env e1 t1 in - let qs = qs1 @ qs2 in - let e' = Il.IterE (e1', iter2') in - match iter2, iter with - | Opt, Il.Opt -> Ok (qs, e') + | IterE (e1, it2) -> + let* t1, it = as_iter_typ "iteration" env Check t e.at in + let* e1', ite2', itt2' = elab_iterexp env + (fun env (e, t) -> elab_exp env e t) (e1, t1) it2 in + let e' = Il.IterE (e1', ite2') in + match it2, it with + | Opt, Il.Opt -> Ok e' | Opt, Il.List -> - Ok (qs, Il.LiftE (e' $$ e.at % (Il.IterT (t1, Il.Opt) $ e1.at))) + Ok (Il.LiftE (e' $$ e.at % (Il.IterT (t1, itt2') $ e1.at))) | _, Il.Opt -> fail_typ env e.at "iteration" t - | _, _ -> Ok (qs, e') + | _, _ -> Ok e' and elab_exp_list env (es : exp list) (xts : (id * Il.typ) list) at - : (Il.quant list * Il.exp list) attempt = + : Il.exp list attempt = match es, xts with - | [], [] -> Ok ([], []) + | [], [] -> Ok [] | e::es, (_x, t)::xts -> - let* qs1, e' = elab_exp env e t in - let* qs2, es' = elab_exp_list env es xts at in - Ok (qs1 @ qs2, e'::es') + let* e' = elab_exp env e t in + let* es' = elab_exp_list env es xts at in + Ok (e'::es') | _, _ -> fail at "arity mismatch for expression list" and elab_expfields env tid (efs : expfield list) (tfs : Il.typfield list) (t0 : Il.typ) at - : (Il.quant list * Il.expfield list) attempt = + : Il.expfield list attempt = Debug.(log_in_at "el.elab_expfields" at (fun _ -> fmt "{%s} : {%s} = %s" (list el_expfield efs) (list (il_typfield `H) tfs) (il_typ t0)) ); assert (valid_tid tid); match efs, tfs with - | [], [] -> Ok ([], []) - | (atom1, e)::efs2, (atom2, (qsF, tF, prems), _)::tfs2 when atom1.it = atom2.it -> - let* qs1, e' = elab_exp env e tF in - let qsF', s = refresh_quants env qsF in - let* qs2, efs2' = elab_expfields env tid efs2 (List.map (Il.Subst.subst_typfield s) tfs2) t0 at in + | [], [] -> Ok [] + | (atom1, e)::efs2, (atom2, (qs, tF, prems), _)::tfs2 when atom1.it = atom2.it -> + let* e' = elab_exp env e tF in + let qs', s = refresh_quants env qs in + let* efs2' = elab_expfields env tid efs2 (List.map (Il.Subst.subst_typfield s) tfs2) t0 at in let e' = if prems = [] then e' else tup_exp' [e'] e.at in - let qas' = il_args_of_params qsF' in - Ok (qs1 @ qs2, (elab_atom atom1 tid, qas', e') :: efs2') - | _, (atom, (_qs, t, prems), _)::tfs2 -> + Ok ((elab_atom atom1 tid, il_args_of_params qs', e') :: efs2') + | _, (atom, (qs, t, prems), _)::tfs2 -> let atom' = string_of_atom atom in - let* qs1, e1' = cast_empty ("omitted record field `" ^ atom' ^ "`") env t at in + let qs', s = refresh_quants env qs in + let t' = Il.Subst.subst_typ s t in + let* e1' = cast_empty ("omitted record field `" ^ atom' ^ "`") env t' at in let e' = if prems = [] then e1' else tup_exp' [e1'] at in - let* qs2, efs2' = elab_expfields env tid efs tfs2 t0 at in - Ok (qs1 @ qs2, (elab_atom atom tid, [], e') :: efs2') + let* efs2' = elab_expfields env tid efs tfs2 t0 at in + Ok ((elab_atom atom tid, il_args_of_params qs', e') :: efs2') | (atom, e)::_, [] -> fail_atom e.at atom t0 "undefined or misplaced record field" -and elab_exp_iter env (es : exp list) (t1, iter) t at : (Il.quant list * Il.exp) attempt = - let* qs, e' = elab_exp_iter' env es (t1, iter) t at in - Ok (qs, e' $$ at % t) +and elab_exp_iter env (es : exp list) (t1, iter) t at : Il.exp attempt = + let* e' = elab_exp_iter' env es (t1, iter) t at in + Ok (e' $$ at % t) -and elab_exp_iter' env (es : exp list) (t1, iter) t at : (Il.quant list * Il.exp') attempt = +and elab_exp_iter' env (es : exp list) (t1, iter) t at : Il.exp' attempt = Debug.(log_at "el.elab_exp_iter" at (fun _ -> fmt "%s : %s = (%s)%s" (seq el_exp es) (il_typ t) (il_typ t1) (il_iter iter)) - (function Ok (qs, e') -> fmt "%s%s" (il_quants qs) (il_exp (e' $$ at % t)) | _ -> "fail") + (function Ok e' -> fmt "%s" (il_exp (e' $$ at % t)) | _ -> "fail") ) @@ fun _ -> match es, iter with | [], Opt -> - Ok ([], Il.OptE None) + Ok (Il.OptE None) | [e1], Opt -> - let* qs1, e1' = elab_exp env e1 t1 in - Ok (qs1, Il.OptE (Some e1')) + let* e1' = elab_exp env e1 t1 in + Ok (Il.OptE (Some e1')) | _::_::_, Opt -> fail_typ env at "expression" t | [], List -> - Ok ([], Il.ListE []) + Ok (Il.ListE []) | e1::es2, List -> - let* qs1, e1' = elab_exp env e1 t in + let* e1' = elab_exp env e1 t in let at' = Source.over_region (after_region e1.at :: List.map Source.at es2) in - let* qs2, e2' = elab_exp_iter env es2 (t1, iter) t at' in - Ok (qs1 @ qs2, cat_exp' e1' e2') + let* e2' = elab_exp_iter env es2 (t1, iter) t at' in + Ok (cat_exp' e1' e2') | _, (List1 | ListN _) -> assert false -and elab_exp_notation env tid (e : exp) (qs, t1, mixop, not) t : (Il.quant list * Il.exp) attempt = +and elab_exp_notation env tid (e : exp) (qs, t1, mixop, not) t : Il.exp attempt = (* Convert notation into applications of mixin operators *) assert (valid_tid tid); - let* qs', es', s = elab_exp_notation' env tid e not in + let* es', s = elab_exp_notation' env tid e not in let qas' = Il.Subst.subst_args s (il_args_of_params qs) in - Ok (qs', Il.CaseE (mixop, qas', Il.TupE es' $$ e.at % t1) $$ e.at % t) + Ok (Il.CaseE (mixop, qas', Il.TupE es' $$ e.at % t1) $$ e.at % t) -and elab_exp_notation' env tid (e : exp) not : (Il.quant list * Il.exp list * Il.Subst.t) attempt = +and elab_exp_notation' env tid (e : exp) not : (Il.exp list * Il.Subst.t) attempt = Debug.(log_at "el.elab_exp_notation" e.at - (fun _ -> fmt "%s : %s" (el_exp e) (Mixop.to_string not)) - (function Ok (qs, es', _) -> fmt "%s %s" (il_quants qs) (seq il_exp es') | _ -> "fail") + (fun _ -> fmt "%s : %s" (el_exp e) (Mixop.to_string_with il_typbind " " not)) + (function Ok (es', s) -> fmt "{%s} [%s]" (seq il_exp es') (il_subst s) | _ -> "fail") ) @@ fun _ -> assert (valid_tid tid); match e.it, not with | AtomE atom, Atom atom' -> if atom.it <> atom'.it then fail_not env e.at "atom" not else let _ = elab_atom atom tid in - Ok ([], [], Il.Subst.empty) + Ok ([], Il.Subst.empty) | InfixE (e1, atom, e2), Infix (_, atom', _) when Atom.sub atom' atom -> let e21 = ParenE (SeqE [] $ e2.at) $ e2.at in elab_exp_notation' env tid (InfixE (e1, atom', SeqE [e21; e2] $ e2.at) $ e.at) not | InfixE (e1, atom, e2), Infix (not1, atom', not2) -> if atom.it <> atom'.it then fail_not env e.at "infix expression" not else - let* qs1, es1', s1 = elab_exp_notation' env tid e1 not1 in - let* qs2, es2', s2 = elab_exp_notation' env tid e2 (Mixop.map (Il.Subst.subst_typ s1) not2) in + let* es1', s1 = elab_exp_notation' env tid e1 not1 in + let not2' = Mixop.map (fun (x, t) -> x, Il.Subst.subst_typ s1 t) not2 in + let* es2', s2 = elab_exp_notation' env tid e2 not2' in let _ = elab_atom atom tid in - Ok (qs1 @ qs2, es1' @ es2', Il.Subst.union s1 s2) + Ok (es1' @ es2', Il.Subst.union s1 s2) | BrackE (l, e1, r), Brack (l', not1, r') -> if (l.it, r.it) <> (l'.it, r'.it) then fail_not env e.at "bracket expression" not else let _ = elab_atom l tid in @@ -1864,39 +1870,43 @@ and elab_exp_notation' env tid (e : exp) not : (Il.quant list * Il.exp list * Il elab_exp_notation' env tid e1 not1 | SeqE [], Seq [] -> - Ok ([], [], Il.Subst.empty) - | _, Seq ((Arg t1)::nots2) when is_iter_typ env t1 -> + Ok ([], Il.Subst.empty) + | _, Seq ((Arg (x1, t1))::nots2) when is_iter_typ env t1 -> let* t11, iter = as_iter_typ "iteration" env Check t1 e.at in - elab_exp_notation_iter env tid (unseq_exp e) (t11, iter) t1 nots2 e.at + elab_exp_notation_iter env tid (unseq_exp e) (t11, iter) x1 t1 nots2 e.at | SeqE ({it = AtomE atom; at; _}::es2), Seq ((Atom atom')::_) when Atom.sub atom' atom -> let e21 = ParenE (SeqE [] $ at) $ at in elab_exp_notation' env tid (SeqE ((AtomE atom' $ at) :: e21 :: es2) $ e.at) not (* Trailing notation can be flattened *) - | SeqE (e1::es2), Seq [Arg t1 as not1] -> + | SeqE (e1::es2), Seq [Arg (x1, t1) as not1] -> choice env [ (fun env -> - let* qs1, es1', s1 = elab_exp_notation' env tid (unparen_exp e1) not1 in + let* es1', s1 = elab_exp_notation' env tid (unparen_exp e1) not1 in let e2 = SeqE es2 $ Source.over_region (after_region e1.at :: List.map Source.at es2) in - let* qs2, es2', s2 = elab_exp_notation' env tid e2 (Seq []) in - Ok (qs1 @ qs2, es1' @ es2', Il.Subst.union s1 s2) + let* es2', s2 = elab_exp_notation' env tid e2 (Seq []) in + Ok (es1' @ es2', Il.Subst.union s1 s2) ); (fun env -> - let* qs, e' = elab_exp env e t1 in - Ok (qs, [e'], Il.Subst.empty) + let* e' = elab_exp env e t1 in + Ok ([e'], Il.Subst.add_varid Il.Subst.empty x1 e') ) ] | SeqE (e1::es2), Seq (not1::nots2) -> - let* qs1, es1', s1 = elab_exp_notation' env tid (unparen_exp e1) not1 in + let* es1', s1 = elab_exp_notation' env tid (unparen_exp e1) not1 in let e2 = SeqE es2 $ Source.over_region (after_region e1.at :: List.map Source.at es2) in let not2 = Mixop.Seq nots2 in - let* qs2, es2', s2 = elab_exp_notation' env tid e2 (Mixop.map (Il.Subst.subst_typ s1) not2) in - Ok (qs1 @ qs2, es1' @ es2', Il.Subst.union s1 s2) + let not2' = Mixop.map (fun (x, t) -> x, Il.Subst.subst_typ s1 t) not2 in + let* es2', s2 = elab_exp_notation' env tid e2 not2' in + Ok (es1' @ es2', Il.Subst.union s1 s2) (* Trailing elements can be omitted if they can be eps *) - | SeqE [], Seq ((Arg t1)::nots2) -> - let* qs1, e1' = cast_empty "omitted sequence tail" env t1 e.at in - let* qs2, es2', s2 = elab_exp_notation' env tid e (Seq nots2) in - Ok (qs1 @ qs2, e1' :: es2', s2) + | SeqE [], Seq ((Arg (x1, t1))::nots2) -> + let* e1' = cast_empty "omitted sequence tail" env t1 e.at in + let s1 = Il.Subst.add_varid Il.Subst.empty x1 e1' in + let not2 = Mixop.Seq nots2 in + let not2' = Mixop.map (fun (x, t) -> x, Il.Subst.subst_typ s1 t) not2 in + let* es2', s2 = elab_exp_notation' env tid e not2' in + Ok (e1' :: es2', Il.Subst.union s1 s2) | SeqE (e1::_), Seq [] -> fail e1.at "expression is not empty" (* Since trailing elements can be omitted, a singleton may match a sequence *) @@ -1909,65 +1919,108 @@ and elab_exp_notation' env tid (e : exp) not : (Il.quant list * Il.exp list * Il elab_exp_notation' env tid e1 not *) - | _, Arg t -> - let* qs, e' = elab_exp env e t in - Ok (qs, [e'], Il.Subst.add_varid Il.Subst.empty (varid_of_typ' t) e') + | _, Arg (x, t) -> + let* e' = elab_exp env e t in + Ok ([e'], Il.Subst.add_varid Il.Subst.empty x e') | _, (Atom _ | Brack _ | Infix _) -> fail e.at "expression does not match expected notation" -and elab_exp_notation_iter env tid (es : exp list) (t1, iter) t nots at : (Il.quant list * Il.exp list * Il.Subst.t) attempt = +and elab_exp_notation_iter env tid (es : exp list) (t1, iter) x t nots at + : (Il.exp list * Il.Subst.t) attempt = assert (valid_tid tid); - let* qs, e', es', s = elab_exp_notation_iter' env tid es (t1, iter) t nots at in - Ok (qs, e'::es', s) + let* e', es', s = elab_exp_notation_iter' env tid es (t1, iter) x t None nots at in + Ok (e'::es', s) -and elab_exp_notation_iter' env tid (es : exp list) (t1, iter) t nots at : (Il.quant list * Il.exp * Il.exp list * Il.Subst.t) attempt = +and elab_exp_notation_iter' env tid (es : exp list) (t1, iter) x t eo' nots at + : (Il.exp * Il.exp list * Il.Subst.t) attempt = Debug.(log_at "el.elab_exp_notation_iter" at (fun _ -> fmt "%s : %s = (%s)%s" (seq el_exp es) (il_typ t) (il_typ t1) (il_iter iter)) - (function Ok (qs, e', es', _) -> fmt "%s %s" (il_quants qs) (seq il_exp (e'::es')) | _ -> "fail") + (function Ok (e', es', _) -> fmt "%s" (seq il_exp (e'::es')) | _ -> "fail") ) @@ fun _ -> match es, iter with | [], Il.Opt -> - let* qs, es', s = elab_exp_notation' env tid (SeqE [] $ at) (Seq nots) in - Ok (qs, Il.OptE None $$ at % t, es', s) - | e1::es2, Opt -> + (* Empty option *) + assert (eo' = None); + let e0' = Il.OptE None $$ at % t in + let s0 = Il.Subst.add_varid Il.Subst.empty x e0' in + let not = Mixop.Seq nots in + let not' = Mixop.map (fun (x, t) -> x, Il.Subst.subst_typ s0 t) not in + let* es', s = elab_exp_notation' env tid (SeqE [] $ at) not' in + Ok (e0', es', Il.Subst.union s0 s) + | e1::es2, Il.Opt -> + assert (eo' = None); choice env [ (fun env -> - let* qs, es', s = elab_exp_notation' env tid (SeqE (e1::es2) $ at) (Seq nots) in - Ok (qs, Il.OptE None $$ Source.before_region e1.at % t, es', s) + (* Try parsing as empty option *) + let e0' = Il.OptE None $$ Source.before_region e1.at % t in + let s0 = Il.Subst.add_varid Il.Subst.empty x e0' in + let not = Mixop.Seq nots in + let not' = Mixop.map (fun (x, t) -> x, Il.Subst.subst_typ s0 t) not in + let* es', s = elab_exp_notation' env tid (SeqE es $ at) not' in + Ok (e0', es', Il.Subst.union s0 s) ); (fun env -> - let* qs1, e1' = elab_exp env e1 t in + (* Parse as non-empty option *) + let* e1' = elab_exp env e1 t in + let s1 = Il.Subst.add_varid Il.Subst.empty x e1' in + let not = Mixop.Seq nots in + let not' = Mixop.map (fun (x, t) -> x, Il.Subst.subst_typ s1 t) not in let at' = Source.over_region (after_region e1.at :: List.map Source.at es2) in - let* qs2, es2', s = elab_exp_notation' env tid (SeqE es2 $ at') (Seq nots) in - Ok (qs1 @ qs2, e1', es2', s) + let* es2', s = elab_exp_notation' env tid (SeqE es2 $ at') not' in + Ok (e1', es2', Il.Subst.union s1 s) ); ] - | [], List -> - let* qs, es', s = elab_exp_notation' env tid (SeqE [] $ at) (Seq nots) in - Ok (qs, Il.ListE [] $$ at % t, es', s) - | e1::es2, List -> + | [], Il.List -> + (* Empty list *) + let e' = + match eo' with + | Some e0' -> e0' + | None -> Il.ListE [] $$ at % t + in + let s1 = Il.Subst.add_varid Il.Subst.empty x e' in + let not = Mixop.Seq nots in + let not' = Mixop.map (fun (x, t) -> x, Il.Subst.subst_typ s1 t) not in + let* es', s2 = elab_exp_notation' env tid (SeqE [] $ at) not' in + Ok (e', es', Il.Subst.union s1 s2) + | e1::es2, Il.List -> choice env [ (fun env -> - let* qs, es', s = elab_exp_notation' env tid (SeqE (e1::es2) $ at) (Seq nots) in - Ok (qs, Il.ListE [] $$ at % t, es', s) + (* Try parsing as empty list *) + let e' = + match eo' with + | Some e0' -> e0' + | None -> Il.ListE [] $$ at % t + in + let s1 = Il.Subst.add_varid Il.Subst.empty x e' in + let not = Mixop.Seq nots in + let not' = Mixop.map (fun (x, t) -> x, Il.Subst.subst_typ s1 t) not in + let* es', s2 = elab_exp_notation' env tid (SeqE es $ at) not' in + Ok (e', es', Il.Subst.union s1 s2) ); (fun env -> - let* qs1, e1' = elab_exp env e1 t in + (* Try parsing as list element or concatenation *) + let* e1' = elab_exp env e1 t in + let e0'' = + match eo' with + | None -> e1' + | Some e0' -> cat_exp' e0' e1' $$ Source.over_region [e0'.at; e1'.at] % t + in let at' = Source.over_region (after_region e1.at :: List.map Source.at es2) in - let* qs2, e2', es2', s = elab_exp_notation_iter' env tid es2 (t1, iter) t nots at' in - Ok (qs1 @ qs2, cat_exp' e1' e2' $$ Source.over_region [e1'.at; e2'.at] % t, es2', s) + let* e', es2', s = + elab_exp_notation_iter' env tid es2 (t1, iter) x t (Some e0'') nots at' in + Ok (e', es2', s) ); ] - | _, (List1 | ListN _) -> + | _, Il.(List1 | ListN _) -> assert false -and elab_exp_variant env tid (e : exp) (tcs : Il.typcase list) t at : (Il.quant list * Il.exp) attempt = +and elab_exp_variant env tid (e : exp) (tcs : Il.typcase list) t at : Il.exp attempt = Debug.(log_at "el.elab_exp_variant" e.at (fun _ -> fmt "%s : %s = %s" (el_exp e) tid.it (il_typ t)) - (function Ok (qs, e') -> fmt "%s%s" (il_quants qs) (il_exp e') | _ -> "fail") + (function Ok e' -> fmt "%s" (il_exp e') | _ -> "fail") ) @@ fun _ -> assert (valid_tid tid); let rec head e = @@ -1980,13 +2033,13 @@ and elab_exp_variant env tid (e : exp) (tcs : Il.typcase list) t at : (Il.quant | _ -> fail_typ env at "expression" t in let* atom = head e in - let* mixop, (qsC, tC, _prems), _ = attempt (find_case_atom tcs atom atom.at) t in - let qsC', s = refresh_quants env qsC in - let* xtsC = as_tup_typ "tuple" env Check (Il.Subst.subst_typ s tC) e.at in - let not = Mixop.apply mixop (List.map snd xtsC) in - let* qs, es', s = elab_exp_notation' env tid e not in - let qas' = Il.Subst.subst_args s (il_args_of_params qsC') in - Ok (qs, Il.CaseE (mixop, qas', tup_exp' es' e.at) $$ at % t) + let* mixop, (qs, tC, _prems), _ = attempt (find_case_atom tcs atom atom.at) t in + let qs', s = refresh_quants env qs in + let* xts = as_tup_typ "tuple" env Check (Il.Subst.subst_typ s tC) e.at in + let not = Mixop.apply mixop xts in + let* es', s = elab_exp_notation' env tid e not in + let qas' = Il.Subst.subst_args s (il_args_of_params qs') in + Ok (Il.CaseE (mixop, qas', tup_exp' es' e.at) $$ at % t) (* @@ -1995,49 +2048,49 @@ r[[i] = e] ~> [r0,...,e,...,rN] if r = [r0,...,rN] r[.l = e] ~> {l0 a0*=r0,...,l a*=e,...,lN aN*=rN} if r = {l0 a0*=r0,...,lN aN*=rN} a* = q* *) -and elab_path env (p : path) (t : Il.typ) : (Il.quant list * Il.path * Il.typ) attempt = - let* qs, p', t' = elab_path' env p t in - Ok (qs, p' $$ p.at % t', t') +and elab_path env (p : path) (t : Il.typ) : (Il.path * Il.typ) attempt = + let* p', t' = elab_path' env p t in + Ok (p' $$ p.at % t', t') -and elab_path' env (p : path) (t : Il.typ) : (Il.quant list * Il.path' * Il.typ) attempt = +and elab_path' env (p : path) (t : Il.typ) : (Il.path' * Il.typ) attempt = match p.it with | RootP -> - Ok ([], Il.RootP, t) + Ok (Il.RootP, t) | IdxP (p1, e1) -> - let* qs1, p1', t1 = elab_path env p1 t in - let qs2, e1' = checkpoint (elab_exp env e1 (Il.NumT `NatT $ e1.at)) in + let* p1', t1 = elab_path env p1 t in + let e1' = checkpoint (elab_exp env e1 (Il.NumT `NatT $ e1.at)) in let* t' = as_list_typ "path" env Check t1 p1.at in - Ok (qs1 @ qs2, Il.IdxP (p1', e1'), t') + Ok (Il.IdxP (p1', e1'), t') | SliceP (p1, e1, e2) -> - let* qs, p1', t1 = elab_path env p1 t in - let qs1, e1' = checkpoint (elab_exp env e1 (Il.NumT `NatT $ e1.at)) in - let qs2, e2' = checkpoint (elab_exp env e2 (Il.NumT `NatT $ e2.at)) in + let* p1', t1 = elab_path env p1 t in + let e1' = checkpoint (elab_exp env e1 (Il.NumT `NatT $ e1.at)) in + let e2' = checkpoint (elab_exp env e2 (Il.NumT `NatT $ e2.at)) in let* _ = as_list_typ "path" env Check t1 p1.at in - Ok (qs @ qs1 @ qs2, Il.SliceP (p1', e1', e2'), t1) + Ok (Il.SliceP (p1', e1', e2'), t1) | DotP (p1, atom) -> - let* qs1, p1', t1 = elab_path env p1 t in + let* p1', t1 = elab_path env p1 t in let* tfs, dots = as_struct_typ "path" env Check t1 p1.at in if dots = Dots then error p1.at "used record type is only partially defined at this point"; - let* _, (qsF, tF, _prems), _ = attempt (find_field tfs atom p1.at) t1 in - let qsF', s = refresh_quants env qsF in - let as' = il_args_of_params qsF' in + let* _, (qs, tF, _prems), _ = attempt (find_field tfs atom p1.at) t1 in + let qs', s = refresh_quants env qs in + let qas' = il_args_of_params qs' in let tF' = Il.Subst.subst_typ s tF in - Ok (qs1 @ qsF, Il.DotP (p1', elab_atom atom (expand_id env t1), as'), tF') + Ok (Il.DotP (p1', elab_atom atom (expand_id env t1), qas'), tF') -and cast_empty phrase env (t : Il.typ) at : (Il.quant list * Il.exp) attempt = +and cast_empty phrase env (t : Il.typ) at : Il.exp attempt = Debug.(log_at "el.elab_exp_cast_empty" at (fun _ -> fmt "%s >> (%s)" (il_typ t) (il_typ t)) - (function Ok (qs, e') -> fmt "%s%s" (il_quants qs) (il_exp e') | _ -> "fail") + (function Ok e' -> fmt "%s" (il_exp e') | _ -> "fail") ) @@ fun _ -> nest at t ( match expand env t with - | Il.IterT (_, Opt) -> Ok ([], Il.OptE None $$ at % t) - | Il.IterT (_, List) -> Ok ([], Il.ListE [] $$ at % t) + | Il.IterT (_, Opt) -> Ok (Il.OptE None $$ at % t) + | Il.IterT (_, List) -> Ok (Il.ListE [] $$ at % t) | VarT _ when is_notation_typ env t -> (match expand_notation env t with - | Some (_, _, _, Mixop.Seq []) -> Ok ([], Il.ListE [] $$ at % t) + | Some (_, _, _, Mixop.Seq []) -> Ok (Il.ListE [] $$ at % t) | _ -> fail_typ env at phrase t ) (* @@ -2055,29 +2108,29 @@ and cast_empty phrase env (t : Il.typ) at : (Il.quant list * Il.exp) attempt = | _ -> fail_typ env at phrase t ) -and cast_exp phrase env (e' : Il.exp) t1 t2 : (Il.quant list * Il.exp) attempt = - let* qs, e'' = nest e'.at t2 (cast_exp' phrase env e' t1 t2) in - Ok (qs, e'' $$ e'.at % t2) +and cast_exp phrase env (e' : Il.exp) t1 t2 : Il.exp attempt = + let* e'' = nest e'.at t2 (cast_exp' phrase env e' t1 t2) in + Ok (e'' $$ e'.at % t2) -and cast_exp' phrase env (e' : Il.exp) t1 t2 : (Il.quant list * Il.exp') attempt = +and cast_exp' phrase env (e' : Il.exp) t1 t2 : Il.exp' attempt = Debug.(log_at "el.elab_exp_cast" e'.at (fun _ -> fmt "%s <: %s >> (%s) <: (%s) = (%s)" (il_typ t1) (il_typ t2) (il_deftyp (fst (expand_def env t1) $ t1.at)) (il_deftyp (fst (expand_def env t2) $ t2.at)) (il_typ (reduce env t2)) ) - (function Ok (qs, e'') -> fmt "%s%s" (il_quants qs) (il_exp (e'' $$ e'.at % t2)) | _ -> "fail") + (function Ok e'' -> fmt "%s" (il_exp (e'' $$ e'.at % t2)) | _ -> "fail") ) @@ fun _ -> - if equiv_typ env t1 t2 then Ok ([], e'.it) else + if equiv_typ env t1 t2 then Ok e'.it else let t1', t2' = reduce env t1, reduce env t2 in match t1'.it, t2'.it with | _, _ when sub_typ env t1' t2' -> - Ok ([], Il.SubE (e', t1', t2')) + Ok (Il.SubE (e', t1', t2')) | Il.NumT nt1, Il.NumT nt2 when nt1 < nt2 || lax_num && nt1 <> `RealT -> - Ok ([], Il.CvtE (e', nt1, nt2)) + Ok (Il.CvtE (e', nt1, nt2)) | Il.TupT [], Il.VarT _ when is_empty_notation_typ env t2' -> - Ok ([], e'.it) + Ok e'.it | Il.VarT _, Il.VarT _ -> (match expand_def env t1', expand_def env t2' with @@ -2096,10 +2149,9 @@ and cast_exp' phrase env (e' : Il.exp) t1 t2 : (Il.quant list * Il.exp') attempt let ts2 = match tC2'.it with Il.TupT xts -> List.map snd xts | _ -> [tC2'] in let e'' = Il.UncaseE (e', mixop1, qas1') $$ e'.at % tC1' in let es' = List.mapi (fun i t1I -> Il.ProjE (e'', i) $$ e''.at % t1I) ts1 in - let* qss_es'' = map2_attempt (fun eI' (t1I, t2I) -> + let* es'' = map2_attempt (fun eI' (t1I, t2I) -> cast_exp phrase env eI' t1I t2I) es' (List.combine ts1 ts2) in - let qss, es'' = List.split qss_es'' in - Ok (qs1' @ qs2' @ List.concat qss, Il.CaseE (mixop2, qas2', tup_exp' es'' e'.at)) + Ok (Il.CaseE (mixop2, qas2', tup_exp' es'' e'.at)) ) else ( @@ -2116,8 +2168,7 @@ and cast_exp' phrase env (e' : Il.exp) t1 t2 : (Il.quant list * Il.exp') attempt match expand env tC1' with | Il.TupT [_, t11'] -> let e'' = Il.UncaseE (e', mixop1, qas1') $$ e'.at % t11' in - let* qs, e''' = cast_exp' phrase env (Il.ProjE (e'', 0) $$ e'.at % t11') t11' t2' in - Ok (qs1' @ qs, e''') + cast_exp' phrase env (Il.ProjE (e'', 0) $$ e'.at % t11') t11' t2' | _ -> fail_typ2 env e'.at phrase t1 t2 "" ) @@ -2141,7 +2192,7 @@ and cast_exp' phrase env (e' : Il.exp) t1 t2 : (Il.quant list * Il.exp') attempt | Fail (Trace (_, msg, _) :: _) -> fail_typ2 env e'.at phrase t1 t2 (", " ^ msg) | Fail [] -> assert false in - Ok ([], Il.SubE (e', t1', t2')) + Ok (Il.SubE (e', t1', t2')) | _, _ -> fail_typ2 env e'.at phrase t1 t2 "" @@ -2153,18 +2204,15 @@ and cast_exp' phrase env (e' : Il.exp) t1 t2 : (Il.quant list * Il.exp') attempt choice env [ (fun env -> (* A ConT can always be cast to a (singleton) iteration *) - let* qs, e'' = - match t2'.it with - | Il.IterT (t21, iter) -> - let* qs1, e1' = cast_exp phrase env e' t1 t21 in - (match iter with - | Opt -> Ok (qs1, Il.OptE (Some e1')) - | List -> Ok (qs1, Il.ListE [e1']) - | _ -> assert false - ) - | _ -> fail_silent - in - Ok (qs, e'') + match t2'.it with + | Il.IterT (t21, iter) -> + let* e1' = cast_exp phrase env e' t1 t21 in + (match iter with + | Opt -> Ok (Il.OptE (Some e1')) + | List -> Ok (Il.ListE [e1']) + | _ -> assert false + ) + | _ -> fail_silent ); (fun env -> (* A ConT can be cast to its payload *) @@ -2182,8 +2230,7 @@ and cast_exp' phrase env (e' : Il.exp) t1 t2 : (Il.quant list * Il.exp') attempt match expand env tC1' with | Il.TupT [_, t11'] -> let e'' = Il.UncaseE (e', mixop1, qas1') $$ e'.at % t11' in - let* qs, e''' = cast_exp' phrase env (Il.ProjE (e'', 0) $$ e'.at % t11') t11' t2' in - Ok (qs1' @ qs, e''') + cast_exp' phrase env (Il.ProjE (e'', 0) $$ e'.at % t11') t11' t2' | _ -> fail_typ2 env e'.at phrase t1 t2 "" ); ] @@ -2201,8 +2248,8 @@ and cast_exp' phrase env (e' : Il.exp) t1 t2 : (Il.quant list * Il.exp') attempt let qas2' = il_args_of_params qs2' in (match expand env tC2' with | Il.TupT [_, t21'] -> - let* qs, e1' = cast_exp phrase env e' t1' t21' in - Ok (qs2' @ qs, Il.CaseE (mixop2, qas2', Il.TupE [e1'] $$ e'.at % tC2')) + let* e1' = cast_exp phrase env e' t1' t21' in + Ok (Il.CaseE (mixop2, qas2', Il.TupE [e1'] $$ e'.at % tC2')) | _ -> fail_typ2 env e'.at phrase t1 t2 "" ) @@ -2218,13 +2265,13 @@ and cast_exp' phrase env (e' : Il.exp) t1 t2 : (Il.quant list * Il.exp') attempt cast_exp' phrase env e'' t1' t2 ); (fun env -> - let* qs, e'' = cast_exp phrase env e' t1 t21 in - Ok (qs, Il.ListE [e'']) + let* e'' = cast_exp phrase env e' t1 t21 in + Ok (Il.ListE [e'']) ); ] | _, Il.IterT (t21, (List | List1)) -> - let* qs, e'' = cast_exp phrase env e' t1 t21 in - Ok (qs, Il.ListE [e'']) + let* e'' = cast_exp phrase env e' t1 t21 in + Ok (Il.ListE [e'']) | _, _ -> fail_typ2 env e'.at phrase t1 t2 "" @@ -2401,50 +2448,45 @@ Printf.printf "[4] %s => %s\n%!" (Debug.el_typ t11) (Debug.il_typ t11'); *) -and elab_iterexp env (it : iter) : Il.quant list * Il.iterexp = - let qs, it' = elab_iter env it in - (qs, (it', [])) - - (* Premises *) -and elab_prem env (pr : prem) : Il.quant list * Il.prem list = +and elab_prem env (pr : prem) : Il.prem list = match pr.it with | VarPr (id, t) -> let t' = elab_typ env t in env.vars <- bind "variable" env.vars id t'; - [], [] + [] | RulePr (id, e) -> let mixop, not, _, _ = find "relation" env.rels id in - let qs, es', _s = checkpoint (elab_exp_notation' env id e not) in - qs, [Il.RulePr (id, mixop, tup_exp_nary' es' e.at) $ pr.at] + let es', _s = checkpoint (elab_exp_notation' env id e not) in + [Il.RulePr (id, mixop, tup_exp_nary' es' e.at) $ pr.at] | IfPr e -> - let qs, e' = checkpoint (elab_exp env e (Il.BoolT $ e.at)) in - qs, [Il.IfPr e' $ pr.at] + let e' = checkpoint (elab_exp env e (Il.BoolT $ e.at)) in + [Il.IfPr e' $ pr.at] | ElsePr -> - [], [Il.ElsePr $ pr.at] + [Il.ElsePr $ pr.at] | IterPr ({it = VarPr _; at; _}, _iter) -> error at "misplaced variable premise" - | IterPr (pr1, iter) -> - let qs, iter' = elab_iterexp env iter in - let qs1, prs1' = elab_prem env pr1 in + | IterPr (pr1, it) -> + let prs1', ite', _itt' = checkpoint (elab_iterexp env + (fun env pr -> Ok (elab_prem env pr)) pr1 it) in assert (List.length prs1' = 1); - qs @ qs1, [Il.IterPr (List.hd prs1', iter') $ pr.at] + [Il.IterPr (List.hd prs1', ite') $ pr.at] (* Grammars *) -and infer_sym env (g : sym) : (Il.quant list * Il.sym * Il.typ) attempt = +and infer_sym env (g : sym) : (Il.sym * Il.typ) attempt = Debug.(log_at "el.infer_sym" g.at (fun _ -> fmt "%s" (el_sym g)) - (function Ok (qs, g', t) -> fmt "%s %s : %s" (il_quants qs) (il_sym g') (il_typ t) | _ -> "fail") + (function Ok (g', t) -> fmt "%s : %s" (il_sym g') (il_typ t) | _ -> "fail") ) @@ fun _ -> nest g.at (Il.TupT [] $ g.at) ( match g.it with | VarG (x, as_) -> let ps, t, _gram, _prods' = find "grammar" env.grams x in - let qs, as', s = elab_args `Rhs env as_ ps g.at in - Ok (qs, Il.VarG (x, as') $ g.at, Il.Subst.subst_typ s t) + let as', s = elab_args `Rhs env as_ ps g.at in + Ok (Il.VarG (x, as') $ g.at, Il.Subst.subst_typ s t) | NumG (`CharOp, n) -> (* let s = try Utf8.encode [Z.to_int n] with Z.Overflow | Utf8.Utf8 -> @@ -2454,98 +2496,91 @@ and infer_sym env (g : sym) : (Il.quant list * Il.sym * Il.typ) attempt = if n < Z.of_int 0x00 || n > Z.of_int 0x10ffff then fail g.at "unicode value out of range" else - Ok ([], Il.NumG (Z.to_int n) $ g.at, Il.NumT `NatT $ g.at) + Ok (Il.NumG (Z.to_int n) $ g.at, Il.NumT `NatT $ g.at) | NumG (_, n) -> if n < Z.of_int 0x00 || n > Z.of_int 0xff then fail g.at "byte value out of range" else - Ok ([], Il.NumG (Z.to_int n) $ g.at, Il.NumT `NatT $ g.at) + Ok (Il.NumG (Z.to_int n) $ g.at, Il.NumT `NatT $ g.at) | TextG s -> - Ok ([], Il.TextG s $ g.at, Il.TextT $ g.at) + Ok (Il.TextG s $ g.at, Il.TextT $ g.at) | EpsG -> - Ok ([], Il.EpsG $ g.at, Il.TupT [] $ g.at) + Ok (Il.EpsG $ g.at, Il.TupT [] $ g.at) | SeqG gs -> - let* qs, gs' = elab_sym_list env (filter_nl gs) (Il.TupT [] $ g.at) in - Ok (qs, Il.SeqG gs' $ g.at, Il.TupT [] $ g.at) + let* gs' = elab_sym_list env (filter_nl gs) (Il.TupT [] $ g.at) in + Ok (Il.SeqG gs' $ g.at, Il.TupT [] $ g.at) | AltG gs -> choice env [ (fun env -> - let* qs, gs', ts = infer_sym_list env (filter_nl gs) in - if qs <> [] then - fail g.at "invalid expressions in alternative" - else if ts <> [] && List.for_all (equiv_typ env (List.hd ts)) ts then - Ok ([], Il.AltG gs' $ g.at, List.hd ts) + let* gs', ts = infer_sym_list env (filter_nl gs) in + if ts <> [] && List.for_all (equiv_typ env (List.hd ts)) ts then + Ok (Il.AltG gs' $ g.at, List.hd ts) else fail g.at "inconsistent types" ); (fun env -> (* HACK to treat singleton strings in short grammar as characters *) - let* qs, g' = elab_sym env g (Il.NumT `NatT $ g.at) in - Ok (qs, g', Il.NumT `NatT $ g.at) + let* g' = elab_sym env g (Il.NumT `NatT $ g.at) in + Ok (g', Il.NumT `NatT $ g.at) ); (fun env -> - let* qs, g' = elab_sym env g (Il.TupT [] $ g.at) in - Ok (qs, g', Il.TupT [] $ g.at) + let* g' = elab_sym env g (Il.TupT [] $ g.at) in + Ok (g', Il.TupT [] $ g.at) ) ] | RangeG (g1, g2) -> let env1 = local_env env in let env2 = local_env env in - let* qs1, g1' = elab_sym env1 g1 (Il.NumT `NatT $ g1.at) in - let* qs2, g2' = elab_sym env2 g2 (Il.NumT `NatT $ g2.at) in + let* g1' = elab_sym env1 g1 (Il.NumT `NatT $ g1.at) in + let* g2' = elab_sym env2 g2 (Il.NumT `NatT $ g2.at) in if env1.vars != env.vars then error g1.at "invalid symbol in range"; if env2.vars != env.vars then error g2.at "invalid symbol in range"; - Ok (qs1 @ qs2, Il.RangeG (g1', g2') $ g.at, Il.NumT `NatT $ g.at) + Ok (Il.RangeG (g1', g2') $ g.at, Il.NumT `NatT $ g.at) | ParenG g1 -> infer_sym env g1 | TupG _ -> error g.at "malformed grammar" | ArithG e -> infer_sym env (sym_of_exp e) - | IterG (g1, iter) -> - let qs, iterexp' = elab_iterexp env iter in - let* qs1, g1', t1 = infer_sym env g1 in - Ok ( - qs1 @ qs, - Il.IterG (g1', iterexp') $ g.at, - Il.IterT (t1, match iter with Opt -> Il.Opt | _ -> Il.List) $ g.at - ) + | IterG (g1, it) -> + let* (g1', t1), ite', itt' = elab_iterexp env infer_sym g1 it in + Ok (Il.IterG (g1', ite') $ g.at, Il.IterT (t1, itt') $ g.at) | AttrG (e, g1) -> choice env [ (fun env -> (* HACK to treat singleton strings in short grammar as characters *) let t1 = Il.NumT `NatT $ g1.at in - let* qs1, g1' = elab_sym env g1 t1 in - let* qs2, e' = elab_exp env e t1 in - Ok (qs2 @ qs1, Il.AttrG (e', g1') $ g.at, t1) + let* g1' = elab_sym env g1 t1 in + let* e' = elab_exp env e t1 in + Ok (Il.AttrG (e', g1') $ g.at, t1) ); (fun env -> - let* qs1, g1', t1 = infer_sym env g1 in - let* qs2, e' = elab_exp env e t1 in - Ok (qs1 @ qs2, Il.AttrG (e', g1') $ g.at, t1) + let* g1', t1 = infer_sym env g1 in + let* e' = elab_exp env e t1 in + Ok (Il.AttrG (e', g1') $ g.at, t1) ); ] (* - let qs1, g1', t1 = infer_sym env g1 in - let qs2, e' = checkpoint (elab_exp env e t1) in - Ok (qs1 @ qs2, Il.AttrG (e', g1') $ g.at, t1) + let g1', t1 = infer_sym env g1 in + let e' = checkpoint (elab_exp env e t1) in + Ok (Il.AttrG (e', g1') $ g.at, t1) *) | FuseG _ -> error g.at "misplaced token concatenation" | UnparenG _ -> error g.at "misplaced token unparenthesize" ) -and infer_sym_list env (gs : sym list) : (Il.quant list * Il.sym list * Il.typ list) attempt = +and infer_sym_list env (gs : sym list) : (Il.sym list * Il.typ list) attempt = match gs with - | [] -> Ok ([], [], []) + | [] -> Ok ([], []) | g::gs -> - let* qs1, g', t = infer_sym env g in - let* qs2, gs', ts = infer_sym_list env gs in - Ok (qs1 @ qs2, g'::gs', t::ts) + let* g', t = infer_sym env g in + let* gs', ts = infer_sym_list env gs in + Ok (g'::gs', t::ts) -and elab_sym env (g : sym) (t : Il.typ) : (Il.quant list * Il.sym) attempt = +and elab_sym env (g : sym) (t : Il.typ) : Il.sym attempt = Debug.(log_at "el.elab_sym" g.at (fun _ -> fmt "%s : %s" (el_sym g) (il_typ t)) - (function Ok (qs, g') -> fmt "%s%s" (il_quants qs) (il_sym g') | _ -> "fail") + (function Ok g' -> fmt "%s" (il_sym g') | _ -> "fail") ) @@ fun _ -> nest g.at t ( match g.it with @@ -2553,40 +2588,38 @@ and elab_sym env (g : sym) (t : Il.typ) : (Il.quant list * Il.sym) attempt = let cs = try Utf8.decode s with Utf8.Utf8 -> [] in (* Allow treatment as character constant *) if List.length cs = 1 then - Ok ([], Il.NumG (List.hd cs) $ g.at) + Ok (Il.NumG (List.hd cs) $ g.at) else - let* qs1, g', t' = infer_sym env g in - let* qs2, g'' = cast_sym env g' t' t in - Ok (qs1 @ qs2, g'') + let* g', t' = infer_sym env g in + cast_sym env g' t' t | AltG gs -> - let* qs, gs' = elab_sym_list env (filter_nl gs) t in - Ok (qs, Il.AltG gs' $ g.at) + let* gs' = elab_sym_list env (filter_nl gs) t in + Ok (Il.AltG gs' $ g.at) | ParenG g1 -> elab_sym env g1 t | _ -> - let* qs1, g', t' = infer_sym env g in - let* qs2, g'' = cast_sym env g' t' t in - Ok (qs1 @ qs2, g'') + let* g', t' = infer_sym env g in + cast_sym env g' t' t ) -and elab_sym_list env (gs : sym list) (t : Il.typ) : (Il.quant list * Il.sym list) attempt = +and elab_sym_list env (gs : sym list) (t : Il.typ) : Il.sym list attempt = match gs with - | [] -> Ok ([], []) + | [] -> Ok ([]) | g::gs -> - let* qs1, g' = elab_sym env g t in - let* qs2, gs' = elab_sym_list env gs t in - Ok (qs1 @ qs2, g'::gs') + let* g' = elab_sym env g t in + let* gs' = elab_sym_list env gs t in + Ok (g'::gs') -and cast_sym env (g' : Il.sym) t1 t2 : (Il.quant list * Il.sym) attempt = +and cast_sym env (g' : Il.sym) t1 t2 : Il.sym attempt = Debug.(log_at "el.elab_cast_sym" g'.at (fun _ -> fmt "%s : %s :> %s" (il_sym g') (il_typ t1) (il_typ t2)) - (function Ok (qs, g'') -> fmt "%s%s" (il_quants qs) (il_sym g'') | _ -> "fail") + (function Ok g'' -> fmt "%s" (il_sym g'') | _ -> "fail") ) @@ fun _ -> nest g'.at t2 ( if equiv_typ env t1 t2 then - Ok ([], g') + Ok g' else if equiv_typ env t2 (Il.TupT [] $ t2.at) then - Ok ([], Il.SeqG [g'] $ g'.at) + Ok (Il.SeqG [g'] $ g'.at) else fail_typ2 env g'.at "symbol" t1 t2 "" ) @@ -2599,15 +2632,15 @@ and elab_prod env outer_dims (prod : prod) (t : Il.typ) : Il.prod list = | SynthP (g, e, prems) -> let env' = local_env env in env'.pm <- false; - let qs1, g', _t' = checkpoint (infer_sym env' g) in - let qs2, e' = + let g', _t' = checkpoint (infer_sym env' g) in + let e' = checkpoint ( let t_unit = Il.TupT [] $ e.at in if equiv_typ env' t t_unit then (* Special case: ignore unit attributes *) (* TODO(4, rossberg): introduce proper top type? *) - let* qs, e', _t = infer_exp env' e in - Ok (qs, Il.ProjE ( + let* e', _t = infer_exp env' e in + Ok (Il.ProjE ( Il.TupE [ e'; Il.TupE [] $$ e.at % t_unit ] $$ e.at % (Il.TupT ["_" $ e.at, e'.note; "_" $ e.at, t_unit] $ e.at), 1 @@ -2616,15 +2649,15 @@ and elab_prod env outer_dims (prod : prod) (t : Il.typ) : Il.prod list = elab_exp env' e t ) in - let qss3, premss' = List.split (map_filter_nl_list (elab_prem env') prems) in - let prems' = List.concat premss' in + let prems' = List.concat (map_filter_nl_list (elab_prem env') prems) in let dims = Dim.check outer_dims [] [] [] [e'] [g'] prems' in +Printf.printf "dims \\ %s = %s\n%!" (Debug.domain outer_dims) (Debug.(list Fun.id (List.map fst (Map.bindings dims)))); let g' = Dim.annot_sym dims g' in let e' = Dim.annot_exp dims e' in let prems' = List.map (Dim.annot_prem dims) prems' in let det = Det.(det_exp e' ++ det_sym g' ++ det_list det_prem prems') in let qs = infer_quants env env' dims det [] [] [] [e'] [g'] prems' prod.at in - let prod' = Il.ProdD (qs @ qs1 @ qs2 @ List.concat qss3, g', e', prems') $ prod.at in + let prod' = Il.ProdD (qs, g', e', prems') $ prod.at in let free = Il.Free.(free_prod prod' -- bound_env env') in if free <> Il.Free.empty then error prod.at ("grammar rule contains indeterminate variable(s) " ^ @@ -2636,10 +2669,10 @@ and elab_prod env outer_dims (prod : prod) (t : Il.typ) : Il.prod list = elab_prod env outer_dims Subst.(subst_prod pm_snd (Iter.clone_prod prod)) t | RangeP (g1, e1, g2, e2) -> let t = Il.NumT `NatT $ prod.at in - let qs11', g1' = checkpoint (elab_sym env g1 t) in - let qs12', e1' = checkpoint (elab_exp env e1 t) in - let qs21', g2' = checkpoint (elab_sym env g2 t) in - let qs22', e2' = checkpoint (elab_exp env e2 t) in + let g1' = checkpoint (elab_sym env g1 t) in + let e1' = checkpoint (elab_exp env e1 t) in + let g2' = checkpoint (elab_sym env g2 t) in + let e2' = checkpoint (elab_exp env e2 t) in let dims = Dim.check outer_dims [] [] [] [e1'; e2'] [g1'; g2'] [] in let g1' = Dim.annot_sym dims g1' in let g2' = Dim.annot_sym dims g2' in @@ -2675,15 +2708,14 @@ and elab_prod env outer_dims (prod : prod) (t : Il.typ) : Il.prod list = let n = `Nat Z.(n1 + Z.of_int i) in let g' = {(if i = 0 then g1' else g2') with it = Il.NumG (c1 + i)} in let e' = {(if i = 0 then e1' else e2') with it = Il.NumE n} in - Il.ProdD (qs11' @ qs12' @ qs21' @ qs22', g', e', []) $ prod.at + Il.ProdD ([], g', e', []) $ prod.at ) | EquivP (g1, g2, prems) -> let env' = local_env env in env'.pm <- false; - let _qs1, g1', _t1' = checkpoint (infer_sym env' g1) in - let _qs2, g2', _t2' = checkpoint (infer_sym env' g2) in - let _qss3, premss' = List.split (map_filter_nl_list (elab_prem env') prems) in - let prems' = List.concat premss' in + let g1', _t1' = checkpoint (infer_sym env' g1) in + let g2', _t2' = checkpoint (infer_sym env' g2) in + let prems' = List.concat (map_filter_nl_list (elab_prem env') prems) in let dims = Dim.check outer_dims [] [] [] [] [g1'; g2'] prems' in let g1' = Dim.annot_sym dims g1' in let g2' = Dim.annot_sym dims g2' in @@ -2699,14 +2731,14 @@ and elab_prod env outer_dims (prod : prod) (t : Il.typ) : Il.prod list = prod' :: elab_prod env Subst.(subst_prod pm_snd (Iter.clone_prod prod)) t *) -and elab_gram env dims (gram : gram) (t : Il.typ) : Il.prod list = +and elab_gram env outer_dims (gram : gram) (t : Il.typ) : Il.prod list = let (_dots1, prods, _dots2) = gram.it in - concat_map_filter_nl_list (fun prod -> elab_prod env dims prod t) prods + concat_map_filter_nl_list (fun prod -> elab_prod env outer_dims prod t) prods (* Definitions *) -and elab_arg in_lhs env (a : arg) (p : Il.param) s : Il.quant list * Il.arg list * Il.Subst.subst = +and elab_arg in_lhs env (a : arg) (p : Il.param) s : Il.arg list * Il.Subst.subst = (match !(a.it), p.it with (* HACK: handle shorthands *) | ExpA e, Il.TypP _ -> a.it := TypA (typ_of_exp e) | ExpA e, Il.GramP _ -> a.it := GramA (sym_of_exp e) @@ -2715,8 +2747,8 @@ and elab_arg in_lhs env (a : arg) (p : Il.param) s : Il.quant list * Il.arg list ); match !(a.it), (Il.Subst.subst_param s p).it with | ExpA e, Il.ExpP (x, t) -> - let qs, e' = checkpoint (elab_exp env e t) in - qs, [Il.ExpA e' $ a.at], Il.Subst.add_varid s x e' + let e' = checkpoint (elab_exp env e t) in + [Il.ExpA e' $ a.at], Il.Subst.add_varid s x e' | TypA {it = VarT (x', []); _}, Il.TypP x when in_lhs = `Lhs -> let x'' = strip_var_suffix x' in let is_prim = @@ -2728,21 +2760,21 @@ and elab_arg in_lhs env (a : arg) (p : Il.param) s : Il.quant list * Il.arg list env.typs <- bind "syntax type" env.typs x'' ([], Opaque); if not is_prim then env.gvars <- bind "variable" env.gvars (strip_var_sub x'') t'; - [], [Il.TypA t' $ a.at], Il.Subst.add_typid s x t' + [Il.TypA t' $ a.at], Il.Subst.add_typid s x t' | TypA t, Il.TypP _ when in_lhs = `Lhs -> error t.at "misplaced syntax type" | TypA t, Il.TypP x -> let t' = elab_typ env t in - [], [Il.TypA t' $ a.at], Il.Subst.add_typid s x t' + [Il.TypA t' $ a.at], Il.Subst.add_typid s x t' | GramA g, Il.GramP _ when in_lhs = `Lhs -> error g.at "misplaced grammar symbol" | GramA g, Il.GramP (x', [], t) -> - let qs, g', t' = checkpoint (infer_sym env g) in + let g', t' = checkpoint (infer_sym env g) in let s' = subst_implicit env s t t' in if not (equiv_typ env t' (Il.Subst.subst_typ s' t)) then error_typ2 env a.at "argument" t' t ""; let as' = List.map (fun (_x, t) -> Il.TypA t $ t.at) Il.Subst.(Map.bindings s'.typid) in - qs, as' @ [Il.GramA g' $ a.at], Il.Subst.add_gramid s' x' g' + as' @ [Il.GramA g' $ a.at], Il.Subst.add_gramid s' x' g' | GramA g, Il.GramP (x', ps', t') -> (match g.it with | VarG (x, []) -> @@ -2754,13 +2786,13 @@ and elab_arg in_lhs env (a : arg) (p : Il.param) s : Il.quant list * Il.arg list (spaceid "grammar" x).it ^ Il.Print.(string_of_params ps ^ " : " ^ typ_string env t ^ "`") ); let g' = Il.VarG (x, []) $ a.at in - [], [Il.GramA g' $ a.at], Il.Subst.add_gramid s x g' + [Il.GramA g' $ a.at], Il.Subst.add_gramid s x g' | _ -> error g.at "grammar identifier expected for paramaterised grammar parameter" ) | DefA x, Il.DefP (x', ps', t') when in_lhs = `Lhs -> env.defs <- bind "definition" env.defs x (ps', t', []); - [], [Il.DefA x $ a.at], Il.Subst.add_defid s x' x + [Il.DefA x $ a.at], Il.Subst.add_defid s x' x | DefA x, Il.DefP (x', ps', t') -> let ps, t, _ = find "definition" env.defs x in if not (Il.Eval.equiv_functyp (to_il_env env) (ps, t) (ps', t')) then @@ -2769,28 +2801,28 @@ and elab_arg in_lhs env (a : arg) (p : Il.param) s : Il.quant list * Il.arg list "` but got `" ^ (spaceid "definition" x).it ^ Il.Print.(string_of_params ps ^ " : " ^ typ_string env t ^ "`") ); - [], [Il.DefA x $ a.at], Il.Subst.add_defid s x x' + [Il.DefA x $ a.at], Il.Subst.add_defid s x x' | _, _ -> error a.at "sort mismatch for argument" -and elab_args in_lhs env (as_ : arg list) (ps : Il.param list) at : Il.quant list * Il.arg list * Il.Subst.subst = +and elab_args in_lhs env (as_ : arg list) (ps : Il.param list) at : Il.arg list * Il.Subst.subst = Debug.(log_at "el.elab_args" at (fun _ -> fmt "(%s) : (%s)" (list el_arg as_) (list il_param ps)) - (fun (qs, as', _) -> fmt "%s(%s)" (il_quants qs) (list il_arg as')) + (fun (as', _) -> fmt "(%s)" (list il_arg as')) ) @@ fun _ -> - elab_args' in_lhs env as_ ps [] [] Il.Subst.empty at + elab_args' in_lhs env as_ ps [] Il.Subst.empty at -and elab_args' in_lhs env (as_ : arg list) (ps : Il.param list) qs as' s at : Il.quant list * Il.arg list * Il.Subst.subst = +and elab_args' in_lhs env (as_ : arg list) (ps : Il.param list) as' s at : Il.arg list * Il.Subst.subst = match as_, ps with - | [], [] -> qs, List.concat (List.rev as'), s + | [], [] -> List.concat (List.rev as'), s | a::_, [] -> error a.at "too many arguments" | [], _::_ -> error at "too few arguments" | _, {it = Il.TypP _; at; _}::ps1 when at = Source.no_region -> (* Implicitly inserted type parameter *) - elab_args' in_lhs env as_ ps1 qs as' s at + elab_args' in_lhs env as_ ps1 as' s at | a::as1, p::ps1 -> - let qs', a', s' = elab_arg in_lhs env a p s in - elab_args' in_lhs env as1 ps1 (qs @ qs') (a'::as') s' at + let a', s' = elab_arg in_lhs env a p s in + elab_args' in_lhs env as1 ps1 (a'::as') s' at and subst_implicit env s t t' : Il.Subst.subst = let free = Il.Free.(Set.filter (fun x -> not (Map.mem x env.typs)) (free_typ t).typid) in @@ -2994,13 +3026,13 @@ let rec elab_def env (d : def) : Il.def list = @ elab_hintdef env (TypH (x, "" $ x.at, hints) $ d.at) | TypD (x1, x2, as_, t, hints) -> let ps', k = find "syntax type" env.typs x1 in - let qs1, as', _s = elab_args `Lhs env' as_ ps' d.at in + let as', _s = elab_args `Lhs env' as_ ps' d.at in let dims = Dim.check Map.empty [] as' [] [] [] [] in let dots1, dt', dots2 = elab_typ_definition env' dims x1 t in let as' = List.map (Dim.annot_arg dims) as' in let det = Det.(det_list det_arg as') in let qs = infer_quants env env' dims det [] as' [] [] [] [] d.at in - let inst' = Il.InstD (qs @ qs1, as', dt') $ d.at in + let inst' = Il.InstD (qs, as', dt') $ d.at in let k', last = match k with | (Opaque | Transp) -> @@ -3030,12 +3062,14 @@ let rec elab_def env (d : def) : Il.def list = | GramD (x1, x2, ps, t, gram, hints) -> let ps' = elab_params env' ps in let t' = elab_typ env' t in +Printf.printf "ps' = %s\n%!" (Debug.il_params ps'); let dims = Dim.check Map.empty ps' [] [t'] [] [] [] in - let prods' = elab_gram env' dims gram t' in + let outer_dims = Dim.restrict dims (Il.Free.bound_params ps') in + let prods' = elab_gram env' outer_dims gram t' in let xprods2' = List.map (fun pr -> x2, pr) prods' in if env'.pm then error d.at "misplaced +- or -+ operator in grammar"; let t' = Dim.annot_typ dims t' in - infer_no_quants env' dims Det.empty ps' [] [t'] [] [] [] d.at; + infer_no_quants env' outer_dims Det.empty ps' [] [t'] [] [] [] d.at; let ps1', t1', xprods1', dots_opt = find "grammar" env.grams x1 in let dots1, _, dots2 = gram.it in let xprods' = @@ -3067,7 +3101,7 @@ let rec elab_def env (d : def) : Il.def list = let dims = Dim.check Map.empty [] [] ts' [] [] [] in let ts' = List.map (Dim.annot_typ dims) ts' in infer_no_quants env' dims Det.empty [] [] ts' [] [] [] d.at; - let not = Mixop.apply mixop ts' in + let not = Mixop.apply mixop (List.map (fun t' -> "_" $ d.at, t') ts') in let t' = tup_typ' ts' t.at in env.rels <- bind "relation" env.rels x (mixop, not, t', []); [Il.RelD (x, mixop, t', []) $ d.at] @@ -3077,16 +3111,15 @@ let rec elab_def env (d : def) : Il.def list = if List.exists (fun (x, _) -> x.it = x2.it) rules' then error d.at ("duplicate rule name `" ^ x1.it ^ (if x2.it = "" then "" else "/" ^ x2.it) ^ "`"); - let qs1, es', _ = checkpoint (elab_exp_notation' env' x1 e not') in - let qss2, premss' = List.split (map_filter_nl_list (elab_prem env') prems) in - let prems' = List.concat premss' in + let es', _ = checkpoint (elab_exp_notation' env' x1 e not') in + let prems' = List.concat (map_filter_nl_list (elab_prem env') prems) in let dims = Dim.check Map.empty [] [] [] es' [] prems' in let es' = List.map (Dim.annot_exp dims) es' in let e' = tup_exp_nary' es' e.at in let prems' = List.map (Dim.annot_prem dims) prems' in let det = Det.(det_exp e' ++ det_list det_prem prems') in let qs = infer_quants env env' dims det [] [] [] es' [] prems' d.at in - let rule' = Il.RuleD (x2, qs @ qs1 @ List.concat qss2, mixop, e', prems') $ d.at in + let rule' = Il.RuleD (x2, qs, mixop, e', prems') $ d.at in env.rels <- rebind "relation" env.rels x1 (mixop, not', t', rules' @ [x2, rule']); if not env'.pm then [] else elab_def env Subst.(subst_def pm_snd (Iter.clone_def d)) | VarD (x, t, _hints) -> @@ -3111,18 +3144,17 @@ Printf.printf "DecD %s%s : %s\n%!" x.it (Il.Print.string_of_params ps') (Il.Prin [d'] @ elab_hintdef env (DecH (x, hints) $ d.at) | DefD (x, as_, e, prems) -> let ps', t', clauses' = find "definition" env.defs x in - let qs1, as', s = elab_args `Lhs env' as_ ps' d.at in - let qss3, premss' = List.split (map_filter_nl_list (elab_prem env') prems) in + let as', s = elab_args `Lhs env' as_ ps' d.at in + let prems' = List.concat (map_filter_nl_list (elab_prem env') prems) in (* Elab e after premises, so that type information can flow to it *) - let qs2, e' = checkpoint (elab_exp env' e (Il.Subst.subst_typ s t')) in - let prems' = List.concat premss' in + let e' = checkpoint (elab_exp env' e (Il.Subst.subst_typ s t')) in let dims = Dim.check Map.empty [] as' [] [e'] [] prems' in let as' = List.map (Dim.annot_arg dims) as' in let e' = Dim.annot_exp dims e' in let prems' = List.map (Dim.annot_prem dims) prems' in let det = Det.(det_list det_arg as' ++ det_exp e' ++ det_list det_prem prems') in let qs = infer_quants env env' dims det [] as' [] [e'] [] prems' d.at in - let clause' = Il.DefD (qs @ qs1 @ qs2 @ List.concat qss3, as', e', prems') $ d.at in + let clause' = Il.DefD (qs, as', e', prems') $ d.at in Printf.printf "=> %s\n%!" (Il.Print.string_of_clause ~suppress_pos: true x clause'); env.defs <- rebind "definition" env.defs x (ps', t', clauses' @ [(d, clause')]); if not env'.pm then [] else elab_def env Subst.(subst_def pm_snd (Iter.clone_def d)) @@ -3260,10 +3292,10 @@ let elab (ds : script) : Il.script * env = let elab_exp env (e : exp) (t : typ) : Il.exp = let env' = local_env env in let t' = elab_typ env' t in - snd (checkpoint (elab_exp env' e t')) + checkpoint (elab_exp env' e t') let elab_rel env (e : exp) (x : id) : Il.exp = let env' = local_env env in match elab_prem env' (RulePr (x, e) $ e.at) with - | _, [{it = Il.RulePr (_, _, e'); _}] -> e' + | [{it = Il.RulePr (_, _, e'); _}] -> e' | _ -> assert false diff --git a/spectec/src/il/debug.ml b/spectec/src/il/debug.ml index d2a56299e..d19d0cfcf 100644 --- a/spectec/src/il/debug.ml +++ b/spectec/src/il/debug.ml @@ -8,6 +8,7 @@ let il_atom = string_of_atom let il_mixop = string_of_mixop let il_iter = string_of_iter let il_typ = string_of_typ +let il_typbind (x, t) = "(" ^ il_id x ^ ":" ^ il_typ t ^ ")" let il_typfield = string_of_typfield let il_typcase = string_of_typcase let il_deftyp = string_of_deftyp `H diff --git a/spectec/src/il/env.ml b/spectec/src/il/env.ml index bba12ebe8..c81136f0a 100644 --- a/spectec/src/il/env.ml +++ b/spectec/src/il/env.ml @@ -14,8 +14,7 @@ let error at msg = Util.Error.error at !phase msg module Set = Set.Make(String) module Map = Map.Make(String) -type var_sort = Reg | Quant -type var_def = typ * var_sort +type var_def = typ type typ_def = param list * inst list type rel_def = mixop * typ * rule list type def_def = param list * typ * clause list diff --git a/spectec/src/il/eval.ml b/spectec/src/il/eval.ml index b6f7961a2..0950705e9 100644 --- a/spectec/src/il/eval.ml +++ b/spectec/src/il/eval.ml @@ -738,7 +738,7 @@ and match_exp' env s e1 e2 : subst option = | _ -> false ) | VarE id1, _ -> - let t1, _ = Env.find_var env id1 in + let t1 = Env.find_var env id1 in sub_typ env (reduce_typ env t1) t21 || raise Irred | _, _ -> false then match_exp' env s {e1 with note = t21} e21 diff --git a/spectec/src/il/free.ml b/spectec/src/il/free.ml index b5258b26b..f30659388 100644 --- a/spectec/src/il/free.ml +++ b/spectec/src/il/free.ml @@ -27,11 +27,18 @@ and free_typ t = match t.it with | VarT (x, as_) -> free_typid x ++ free_args as_ | BoolT | NumT _ | TextT -> empty - | TupT ets -> free_typbinds ets + | TupT xts -> free_typbinds xts | IterT (t1, iter) -> free_typ t1 ++ free_iter iter -and free_typbind (x, t) = bound_varid x (* exclude `_` *) ++ free_typ t -and free_typbinds xts = free_list free_typbind xts +and bound_typ t = + match t.it with + | TupT xts -> bound_typbinds xts + | _ -> empty + +and free_typbind (_, t) = free_typ t +and bound_typbind (x, _) = bound_varid x +and free_typbinds xts = free_list_dep free_typbind bound_typbind xts +and bound_typbinds xts = free_list bound_typbind xts and free_deftyp dt = match dt.it with @@ -40,9 +47,9 @@ and free_deftyp dt = | VariantT tcs -> free_list free_typcase tcs and free_typfield (_, (qs, t, prems), _) = - free_quants qs ++ (free_typ t ++ free_prems prems -- bound_quants qs) + free_quants qs ++ (free_typ t ++ free_prems prems -- bound_quants qs -- bound_typ t) and free_typcase (_, (qs, t, prems), _) = - free_quants qs ++ (free_typ t ++ free_prems prems -- bound_quants qs) + free_quants qs ++ (free_typ t ++ free_prems prems -- bound_quants qs -- bound_typ t) (* Expressions *) diff --git a/spectec/src/il/fresh.ml b/spectec/src/il/fresh.ml index dc57cc55e..222eb026a 100644 --- a/spectec/src/il/fresh.ml +++ b/spectec/src/il/fresh.ml @@ -36,6 +36,8 @@ let refresh_varid = refresh_id varids let refresh_defid = refresh_id defids let refresh_gramid = refresh_id gramids +let _ = Subst.Fresh.refresh_varid := refresh_varid + let refresh_quant s q = match q.it with diff --git a/spectec/src/il/iter.ml b/spectec/src/il/iter.ml index 12e79e688..7877ec342 100644 --- a/spectec/src/il/iter.ml +++ b/spectec/src/il/iter.ml @@ -5,6 +5,8 @@ open Xl module type Arg = sig + type scope + val visit_atom : atom -> unit val visit_mixop : mixop -> unit val visit_typid : id -> unit @@ -23,10 +25,15 @@ sig val visit_def : def -> unit val visit_hint : hint -> unit + + val scope_enter : id -> typ -> scope + val scope_exit : id -> scope -> unit end module Skip = struct + type scope = unit + let visit_atom _ = () let visit_mixop _ = () let visit_typid _ = () @@ -45,6 +52,9 @@ struct let visit_def _ = () let visit_hint _ = () + + let scope_enter _ _ = () + let scope_exit _ _ = () end @@ -87,6 +97,19 @@ let rec iter it = | Opt | List | List1 -> () | ListN (e, xo) -> exp e; opt varid xo +and iterexp : 'a. ('a -> unit) -> 'a -> _ -> unit = fun f body (it, xes) -> + let xts1 = + match it with + | ListN (_, Some x) -> [(x, NumT `NatT $ x.at)] + | _ -> [] + in + let xts = xts1 @ List.map (fun (x, e) -> x, e.note) xes in + let old_scopes = List.map (fun (x, t) -> scope_enter x t) xts in + f body; + List.iter2 (fun (x, _) scope -> scope_exit x scope) + (List.rev xts) (List.rev old_scopes); + iter it; list (pair varid exp) xes + (* Types *) @@ -137,10 +160,10 @@ and exp e = | SliceE (e1, e2, e3) -> exp e1; exp e2; exp e3 | UpdE (e1, p, e2) | ExtE (e1, p, e2) -> exp e1; path p; exp e2 | CallE (x, as_) -> defid x; args as_ - | IterE (e1, it) -> exp e1; iterexp it + | IterE (e1, it) -> iterexp exp e1 it | CvtE (e1, nt1, nt2) -> exp e1; numtyp nt1; numtyp nt2 | SubE (e1, t1, t2) -> exp e1; typ t1; typ t2 - + and expfield (at, as_, e) = atom at; args as_; exp e and path p = @@ -151,8 +174,6 @@ and path p = | SliceP (p1, e1, e2) -> path p1; exp e1; exp e2 | DotP (p1, at, as_) -> path p1; atom at; args as_ -and iterexp (it, xes) = iter it; list (pair varid exp) xes - (* Grammars *) @@ -165,7 +186,7 @@ and sym g = | EpsG -> () | SeqG gs | AltG gs -> list sym gs | RangeG (g1, g2) -> sym g1; sym g2 - | IterG (g1, it) -> sym g1; iterexp it + | IterG (g1, it) -> iterexp sym g1 it | AttrG (e, g1) -> exp e; sym g1 @@ -177,7 +198,7 @@ and prem pr = | RulePr (x, op, e) -> relid x; mixop op; exp e | IfPr e -> exp e | ElsePr -> () - | IterPr (pr1, it) -> prem pr1; iterexp it + | IterPr (pr1, it) -> iterexp prem pr1 it | LetPr (e1, e2, _) -> exp e1; exp e2 and prems prs = list prem prs diff --git a/spectec/src/il/print.ml b/spectec/src/il/print.ml index f8034049e..c95d2efed 100644 --- a/spectec/src/il/print.ml +++ b/spectec/src/il/print.ml @@ -108,6 +108,7 @@ and string_of_typcase layout (op, (qs, t, prems), _hints) = (* Expressions *) and string_of_exp e = +"(" ^ ( match e.it with | VarE x -> string_of_id x | BoolE b -> string_of_bool b @@ -157,6 +158,7 @@ and string_of_exp e = "(" ^ string_of_exp e1 ^ " : " ^ string_of_numtyp nt1 ^ " <:> " ^ string_of_numtyp nt2 ^ ")" | SubE (e1, t1, t2) -> "(" ^ string_of_exp e1 ^ " : " ^ string_of_typ t1 ^ " <: " ^ string_of_typ t2 ^ ")" +) ^ ")@[" ^ string_of_typ e.note ^ "]" and string_of_exp_args e = match e.it with diff --git a/spectec/src/il/subst.ml b/spectec/src/il/subst.ml index bb5e1d1b6..a009bd5a0 100644 --- a/spectec/src/il/subst.ml +++ b/spectec/src/il/subst.ml @@ -1,6 +1,11 @@ open Util.Source open Ast +module Fresh = +struct + let refresh_varid = ref (fun _ -> assert false) +end + (* Data Structure *) @@ -52,7 +57,6 @@ let remove_varids s xs' = Free.Set.(fold (fun x' s -> remove_varid' s x') xs' s) let subst_opt subst_x s xo = Option.map (subst_x s) xo let subst_list subst_x s xs = List.map (subst_x s) xs -let subst_pair subst_x subst_y s (x, y) = subst_x s x, subst_y s y let rec subst_list_dep subst_x bound_x s = function | [] -> [], s @@ -88,10 +92,28 @@ let subst_gramid s x = let rec subst_iter s iter = match iter with - | Opt | List | List1 -> iter, s - | ListN (e, xo) -> - ListN (subst_exp s e, subst_opt subst_varid s xo), - Option.fold xo ~none:s ~some:(remove_varid s) + | Opt | List | List1 -> iter + | ListN (e, xo) -> ListN (subst_exp s e, subst_opt subst_varid s xo) + +and subst_iterexp : 'a. subst -> (subst -> 'a -> 'a) -> 'a -> _ -> 'a * _ = + fun s f body (it, xes) -> + let it', xxts1 = + match it with + | ListN (e, Some x) -> + let x' = !Fresh.refresh_varid x in + ListN (e, Some x'), [(x, x', NumT `NatT $ x.at)] + | _ -> it, [] + in + let it'' = subst_iter s it' in + let xes' = List.map (fun (x, e) -> !Fresh.refresh_varid x, subst_exp s e) xes in + let xxts = List.map2 (fun (x, _) (x', e') -> x, x', e'.note) xes xes' in + let s' = + List.fold_left (fun s (x, x', t) -> + add_varid s x (VarE x' $$ x'.at % t) + ) s (xxts1 @ xxts) + in + f s' body, + (it'', xes') (* Types *) @@ -104,12 +126,24 @@ and subst_typ s t = | Some t' -> assert (as_ = []); t'.it (* We do not support higher-order substitutions yet *) ) | BoolT | NumT _ | TextT -> t.it - | TupT xts -> TupT (subst_list (subst_pair subst_varid subst_typ) s xts) - | IterT (t1, iter) -> - let iter', s' = subst_iter s iter in - IterT (subst_typ s' t1, iter') + | TupT xts -> TupT (fst (subst_tup_typ s xts)) + | IterT (t1, it) -> IterT (subst_typ s t1, subst_iter s it) ) $ t.at +and subst_typ' s t = + match t.it with + | TupT xts -> let xts', s' = subst_tup_typ s xts in TupT xts' $ t.at, s' + | _ -> subst_typ s t, s + +and subst_tup_typ s = function + | [] -> [], s + | (x, t)::xts -> + let x' = !Fresh.refresh_varid x in + let t' = subst_typ s t in + let s' = add_varid s x (VarE x' $$ x'.at % t') in + let xts', s'' = subst_tup_typ s' xts in + (x', t') :: xts', s'' + and subst_deftyp s dt = (match dt.it with | AliasT t -> AliasT (subst_typ s t) @@ -119,11 +153,13 @@ and subst_deftyp s dt = and subst_typfield s (atom, (qs, t, prems), hints) = let qs', s' = subst_quants s qs in - (atom, (qs', subst_typ s' t, subst_list subst_prem s' prems), hints) + let t', s'' = subst_typ' s' t in + (atom, (qs', t', subst_list subst_prem s'' prems), hints) and subst_typcase s (op, (qs, t, prems), hints) = let qs', s' = subst_quants s qs in - (op, (qs', subst_typ s' t, subst_list subst_prem s' prems), hints) + let t', s'' = subst_typ' s' t in + (op, (qs', t', subst_list subst_prem s'' prems), hints) (* Expressions *) @@ -151,8 +187,8 @@ and subst_exp s e = | TupE es -> TupE (subst_list subst_exp s es) | CallE (x, as_) -> CallE (subst_defid s x, subst_args s as_) | IterE (e1, iterexp) -> - let it', s' = subst_iterexp s iterexp in - IterE (subst_exp s' e1, it') + let e1', it' = subst_iterexp s subst_exp e1 iterexp in + IterE (e1', it') | ProjE (e1, i) -> ProjE (subst_exp s e1, i) | UncaseE (e1, op, as_) -> let e1' = subst_exp s e1 in @@ -181,12 +217,6 @@ and subst_path s p = | DotP (p1, atom, as_) -> DotP (subst_path s p1, atom, subst_args s as_) ) $$ p.at % subst_typ s p.note -and subst_iterexp s (iter, xes) = - (* TODO(3, rossberg): This is assuming expressions in s are closed, is that okay? *) - let iter', s' = subst_iter s iter in - (iter', List.map (fun (x, e) -> (x, subst_exp s e)) xes), - List.fold_left remove_varid s' (List.map fst xes) - (* Grammars *) @@ -204,8 +234,8 @@ and subst_sym s g = | AltG gs -> AltG (subst_list subst_sym s gs) | RangeG (g1, g2) -> RangeG (subst_sym s g1, subst_sym s g2) | IterG (g1, iterexp) -> - let it', s' = subst_iterexp s iterexp in - IterG (subst_sym s' g1, it') + let g1', it' = subst_iterexp s subst_sym g1 iterexp in + IterG (g1', it') | AttrG (e, g1) -> AttrG (subst_exp s e, subst_sym s g1) ) $ g.at @@ -218,8 +248,8 @@ and subst_prem s prem = | IfPr e -> IfPr (subst_exp s e) | ElsePr -> ElsePr | IterPr (prem1, iterexp) -> - let it', s' = subst_iterexp s iterexp in - IterPr (subst_prem s' prem1, it') + let prem1', it' = subst_iterexp s subst_prem prem1 iterexp in + IterPr (prem1', it') | LetPr (e1, e2, xs) -> LetPr (subst_exp s e1, subst_exp s e2, xs) ) $ prem.at diff --git a/spectec/src/il/subst.mli b/spectec/src/il/subst.mli index c8fd8fc5d..a0f51bc7d 100644 --- a/spectec/src/il/subst.mli +++ b/spectec/src/il/subst.mli @@ -43,3 +43,5 @@ val subst_args : subst -> arg list -> arg list val subst_params : subst -> param list -> param list * subst val subst_list : (subst -> 'a -> 'a) -> subst -> 'a list -> 'a list + +module Fresh : sig val refresh_varid : (id -> id) ref end diff --git a/spectec/src/il/valid.ml b/spectec/src/il/valid.ml index e3e50287e..9fbd23ff0 100644 --- a/spectec/src/il/valid.ml +++ b/spectec/src/il/valid.ml @@ -33,18 +33,6 @@ let typ_string env t = "`" ^ string_of_typ t ^ "` = `" ^ string_of_typ t' ^ "`" -(* Quantifier variables *) - -let is_qvar env x = - let _, sort = Env.find_var env x in - sort = Quant - -let is_qvar_exp env e = - match e.it with - | VarE x -> is_qvar env x - | _ -> false - - (* Type Accessors *) let expand_typ (env : Env.t) t = (Eval.reduce_typ env t).it @@ -110,6 +98,16 @@ let rec inst_tup_typ env s xts : (id * typ) list = (xI', tI') :: inst_tup_typ env s' xts' *) +let proj_tup_typ i xts e at = + let rec loop i xts s = + match i, xts with + | _, [] -> error at "invalid tuple projection" + | 0, (_, tI)::_ -> Subst.subst_typ s tI + | i, (xI, tI)::xts' -> + let eI = ProjE (e, i) $$ at % Subst.subst_typ s tI in + loop (i - 1) xts' (Subst.add_varid s xI eI) + in loop i xts Subst.empty + (* Type Equivalence and Subtyping *) @@ -187,9 +185,26 @@ let rec valid_iter ?(side = `Rhs) env iter : Env.t = | ListN (e, id_opt) -> valid_exp ~side env e (NumT `NatT $ e.at); Option.fold id_opt ~none:env ~some:(fun id -> - Env.bind_var env id (NumT `NatT $ e.at, Reg) + Env.bind_var env id (NumT `NatT $ e.at) ) +and valid_iterexp ?(side = `Rhs) env (it, xes) at : iter * Env.t = + Debug.(log_at "il.valid_iterexp" at + (fun _ -> il_iter it) + (fun (it', _) -> il_iter it') + ) @@ fun _ -> + let env' = valid_iter ~side env it in + if xes = [] && it <= List1 && side = `Rhs then error at "empty iteration"; + let it' = match it with Opt -> Opt | _ -> List in + it', + List.fold_left (fun env' (x, e) -> + let t = infer_exp env e in +Printf.printf "[] %s %s\n%!" (Debug.il_typ t) (Debug.il_typ e.note); + valid_exp ~side env e t; + let t1 = as_iter_typ it' "iterator" env Check t e.at in + Env.bind_var env' x t1 + ) env' xes + (* Types *) @@ -205,8 +220,11 @@ and valid_typ env t = | NumT _ | TextT -> () - | TupT xts -> - List.iter (valid_typbind env) xts + | TupT [] -> + () + | TupT ((x, t)::xts) -> + valid_typ env t; + valid_typ (Env.bind_var env x t) (TupT xts $ t.at) | IterT (t1, iter) -> match iter with | ListN (e, _) -> error e.at "definite iterator not allowed in type" @@ -214,14 +232,6 @@ and valid_typ env t = let env' = valid_iter env iter in valid_typ env' t1 -and valid_typbind env (x, t) = - valid_typ env t; - if x.it <> "_" then - let t', sort = Env.find_var env x in - if sort <> Quant then - error x.at "field name must be quantifier variable"; - equiv_typ env t' t x.at - and valid_deftyp envr dt = match dt.it with | AliasT t -> @@ -266,7 +276,7 @@ and infer_exp (env : Env.t) e : typ = (fun r -> fmt "%s" (il_typ r)) ) @@ fun _ -> match e.it with - | VarE x -> fst (Env.find_var env x) + | VarE x -> Env.find_var env x | BoolE _ -> BoolT $ e.at | NumE n -> NumT (Num.to_typ n) $ e.at | TextE _ -> TextT $ e.at @@ -282,7 +292,7 @@ and infer_exp (env : Env.t) e : typ = | DotE (e1, atom, as_) -> let tfs = as_struct_typ "expression" env Infer (infer_exp env e1) e1.at in let qs, t, _prems = find_field tfs atom e1.at in - let s = valid_qargs env as_ qs Subst.empty e.at in + let s = valid_args env as_ qs Subst.empty e.at in Subst.subst_typ s t | TupE es -> TupT (List.map (fun eI -> "_" $ eI.at, infer_exp env eI) es) $ e.at @@ -290,26 +300,18 @@ and infer_exp (env : Env.t) e : typ = let ps, t, _ = Env.find_def env x in let s = valid_args env as_ ps Subst.empty e.at in Subst.subst_typ s t - | IterE (e1, iterexp) -> - let iter, env' = valid_iterexp env iterexp e.at in - IterT (infer_exp env' e1, iter) $ e.at + | IterE (e1, ite) -> + let it, env' = valid_iterexp env ite e.at in + IterT (infer_exp env' e1, it) $ e.at | ProjE (e1, i) -> let t1 = infer_exp env e1 in let xts = as_tup_typ "expression" env Infer t1 e1.at in - if i >= List.length xts then - error e.at "invalid tuple projection"; -(* - let xts' = inst_tup_typ env Subst.empty xts in -*) - (match List.nth_opt xts i with - | Some (_, tI) -> tI - | None -> error e.at "cannot infer type of tuple projection" - ) + proj_tup_typ i xts e1 e.at | UncaseE (e1, op, as_) -> let t1 = infer_exp env e1 in (match as_variant_typ "expression" env Infer t1 e1.at with | [(op', (qs, t, _), _)] when Eq.eq_mixop op op' -> - let s = valid_qargs env as_ qs Subst.empty e.at in + let s = valid_args env as_ qs Subst.empty e.at in Subst.subst_typ s t | _ -> error e.at "invalid case projection"; ) @@ -356,7 +358,7 @@ try match e.it with | VarE x when x.it = "_" && side = `Lhs -> () | VarE x -> - let t', _ = Env.find_var env x in + let t' = Env.find_var env x in equiv_typ env t' t e.at | BoolE _ | NumE _ | TextE _ -> let t' = infer_exp env e in @@ -414,7 +416,7 @@ try valid_exp env e1 t1; let tfs = as_struct_typ "expression" env Check t1 e1.at in let qs, t', _prems = find_field tfs atom e1.at in - let s = valid_qargs env as_ qs Subst.empty e.at in + let s = valid_args env as_ qs Subst.empty e.at in equiv_typ env (Subst.subst_typ s t') t e.at | CompE (e1, e2) -> let _ = as_comp_typ "expression" env Check t e.at in @@ -432,40 +434,39 @@ try valid_exp env e1 t1; equiv_typ env (NumT `NatT $ e.at) t e.at | TupE es -> - let ets = as_tup_typ "tuple" env Check t e.at in - if List.length es <> List.length ets then - error e.at ("arity mismatch for tuple, expected " ^ - string_of_int (List.length ets) ^ ", got " ^ string_of_int (List.length es)); - if not (valid_tup_exp ~side env Subst.empty es ets) then - as_error e.at "tuple" Check t "" + let xts = as_tup_typ "tuple" env Check t e.at in + let rec loop i es xts s = + match es, xts with + | [], [] -> () + | eI::es', (xI, tI)::xts' -> + valid_exp ~side env eI (Subst.subst_typ s tI); + let s' = Subst.add_varid s xI eI in + loop (i + 1) es' xts' s' + | _, _ -> + error e.at ("arity mismatch for tuple, expected " ^ + string_of_int (i + List.length xts) ^ ", got " ^ + string_of_int (i + List.length es)); + in loop 0 es xts Subst.empty | CallE (x, as_) -> let ps, t', _ = Env.find_def env x in let s = valid_args env as_ ps Subst.empty e.at in equiv_typ env (Subst.subst_typ s t') t e.at - | IterE (e1, iterexp) -> - let iter, env' = valid_iterexp ~side env iterexp e.at in - let t1 = as_iter_typ iter "iteration" env Check t e.at in + | IterE (e1, ite) -> + let it, env' = valid_iterexp ~side env ite e.at in + let t1 = as_iter_typ it "iteration" env Check t e.at in valid_exp ~side env' e1 t1 | ProjE (e1, i) -> let t1 = infer_exp env e1 in let xts = as_tup_typ "expression" env Infer t1 e1.at in - if i >= List.length xts then - error e.at "invalid tuple projection"; let side' = if List.length xts > 1 then `Rhs else side in -(* - let xts' = inst_tup_typ env Subst.empty xts in -*) valid_exp ~side:side' env e1 (TupT xts $ t1.at); - (match List.nth_opt xts i with - | Some (_, tI) -> equiv_typ env tI t e.at - | None -> error e.at "invalid tuple projection, cannot match pattern" - ) + equiv_typ env (proj_tup_typ i xts e1 e.at) t e.at | UncaseE (e1, op, as_) -> let t1 = infer_exp env e1 in valid_exp ~side env e1 t1; (match as_variant_typ "expression" env Infer t1 e1.at with | [(op', (qs, t', _), _)] when Eq.eq_mixop op op' -> - let s = valid_qargs env as_ qs Subst.empty e.at in + let s = valid_args env as_ qs Subst.empty e.at in equiv_typ env (Subst.subst_typ s t') t e.at | _ -> error e.at "invalid case projection"; ) @@ -492,7 +493,7 @@ try | CaseE (op, as_, e1) -> let cases = as_variant_typ "case" env Check t e.at in let qs, t1, _prems = find_case cases op e1.at in - let s = valid_qargs env as_ qs Subst.empty e.at in + let s = valid_args env as_ qs Subst.empty e.at in valid_exp ~side env e1 (Subst.subst_typ s t1) | CvtE (e1, nt1, nt2) -> valid_exp ~side env e1 (NumT nt1 $ e1.at); @@ -517,20 +518,15 @@ and valid_expmix ?(side = `Rhs) env mixop e (mixop', t) at = ); valid_exp ~side env e t -and valid_tup_exp ?(side = `Rhs) env s es xts = - Debug.(log_in "il.valid_tup_exp" - (fun _ -> fmt "(%s) :%s (%s)[%s]" (list il_exp es) (il_side side) (list il_typ (List.map snd xts)) (il_subst s)) - ); - match es, xts with - | e::es', (x, t)::xts' -> - valid_exp ~side env e (Subst.subst_typ s t); - let s' = Subst.add_varid s x e in - valid_tup_exp ~side env s' es' xts' - | _, _ -> true - and valid_expfield ~side env (atom1, as_, e) (atom2, (qs, t, _prems), _) = + Debug.(log_in_at "il.valid_expfield" e.at + (fun _ -> fmt "%s%s %s :%s %s%s %s" + (il_atom atom1) (il_args as_) (il_exp e) (il_side side) + (il_atom atom2) (il_quants qs) (il_typ t) + ) + ); if not (Eq.eq_atom atom1 atom2) then error e.at "unexpected record field"; - let s = valid_qargs env as_ qs Subst.empty e.at in + let s = valid_args env as_ qs Subst.empty e.at in valid_exp ~side env e (Subst.subst_typ s t) and valid_path env p t : typ = @@ -552,24 +548,12 @@ and valid_path env p t : typ = let t1 = valid_path env p1 t in let tfs = as_struct_typ "path" env Check t1 p1.at in let qs, t, _prems = find_field tfs atom p1.at in - let s = valid_qargs env as_ qs Subst.empty p.at in + let s = valid_args env as_ qs Subst.empty p.at in Subst.subst_typ s t in equiv_typ env p.note t' p.at; t' -and valid_iterexp ?(side = `Rhs) env (iter, xes) at : iter * Env.t = - let env' = valid_iter ~side env iter in - if xes = [] && iter <= List1 && side = `Rhs then error at "empty iteration"; - let iter' = match iter with Opt -> Opt | _ -> List in - iter', - List.fold_left (fun env' (x, e) -> - let t = infer_exp env e in - valid_exp ~side env e t; - let t1 = as_iter_typ iter' "iterator" env Check t e.at in - Env.bind_var env' x (t1, Reg) - ) env' xes - (* Grammars *) @@ -600,10 +584,10 @@ and valid_sym env g : typ = equiv_typ env t1 (NumT `NatT $ g1.at) g.at; equiv_typ env t2 (NumT `NatT $ g2.at) g.at; NumT `NatT $ g.at - | IterG (g1, iterexp) -> - let iter, env' = valid_iterexp ~side:`Lhs env iterexp g.at in + | IterG (g1, ite) -> + let it, env' = valid_iterexp ~side:`Lhs env ite g.at in let t1 = valid_sym env' g1 in - IterT (t1, iter) $ g.at + IterT (t1, it) $ g.at | AttrG (e, g1) -> let t1 = valid_sym env g1 in valid_exp ~side:`Lhs env e t1; @@ -635,21 +619,19 @@ and valid_prem env prem = " do not occur in left-hand side expression") | ElsePr -> () - | IterPr (prem', iterexp) -> - let _iter, env' = valid_iterexp env iterexp prem.at in + | IterPr (prem', ite) -> + let _it, env' = valid_iterexp env ite prem.at in valid_prem env' prem' (* Definitions *) -and valid_arg' isq env a p s = +and valid_arg env a p s = Debug.(log_at "il.valid_arg" a.at (fun _ -> fmt "%s : %s" (il_arg a) (il_param p)) (Fun.const "ok") ) @@ fun _ -> match a.it, (Subst.subst_param s p).it with | ExpA e, ExpP (x, t) -> - if isq && not (is_qvar_exp env e) then - error e.at "quantifier argument expression must be quantified variable"; valid_exp ~side:`Lhs env e t; Subst.add_varid s x e | TypA t, TypP x -> valid_typ env t; Subst.add_typid s x t | DefA x', DefP (x, ps, t) -> @@ -670,7 +652,7 @@ and valid_arg' isq env a p s = error a.at ("sort mismatch for argument, expected `" ^ Print.string_of_param p ^ "`, got `" ^ Print.string_of_arg a ^ "`") -and valid_args' isq env as_ ps s at : Subst.t = +and valid_args env as_ ps s at : Subst.t = Debug.(log_if "il.valid_args" (as_ <> [] || ps <> []) (fun _ -> fmt "{%s} : {%s}" (il_args as_) (il_params ps)) (Fun.const "ok") ) @@ fun _ -> @@ -679,17 +661,14 @@ and valid_args' isq env as_ ps s at : Subst.t = | a::_, [] -> error a.at "too many arguments" | [], _::_ -> error at "too few arguments" | a::as', p::ps' -> - let s' = valid_arg' isq env a p s in - valid_args' isq env as' ps' s' at - -and valid_args env = valid_args' false env -and valid_qargs env = valid_args' true env + let s' = valid_arg env a p s in + valid_args env as' ps' s' at -and valid_param' isq envr p = +and valid_param envr p = match p.it with | ExpP (x, t) -> valid_typ !envr t; - envr := Env.bind_var !envr x (t, if isq then Quant else Reg) + envr := Env.bind_var !envr x t | TypP x -> envr := Env.bind_typ !envr x ([], []) | DefP (x, ps, t) -> @@ -703,8 +682,7 @@ and valid_param' isq envr p = valid_typ !envr' t; envr := Env.bind_gram !envr x (ps, t, []) -and valid_param envr = valid_param' false envr -and valid_quant envr = valid_param' true envr +and valid_quant envr q = valid_param envr q let valid_inst envr ps inst = Debug.(log_in "il.valid_inst" line); diff --git a/spectec/src/util/debug_log.ml b/spectec/src/util/debug_log.ml index e55a2f188..2442fce9b 100644 --- a/spectec/src/util/debug_log.ml +++ b/spectec/src/util/debug_log.ml @@ -40,6 +40,7 @@ let result f g = function Ok x -> f x | Error y -> g y let seq f xs = String.concat " " (List.map f xs) let list f xs = String.concat ", " (List.map f xs) let set s = seq Fun.id (MySet.elements s) +let domain m = seq fst (MyMap.bindings m) let mapping f m = seq (fun (x, y) -> x ^ "=" ^ f y) (MyMap.bindings m) let qline _ = "--------------------" From c3aee6c367a640172b05c4b165a9941d9c51c318 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Sun, 18 Jan 2026 19:00:52 +0100 Subject: [PATCH 010/235] WIP4 (Wasm 2.0 validates again) --- spectec/src/frontend/elab.ml | 66 +++++++++++++++++++++++++++--------- spectec/src/frontend/eval.ml | 9 ++--- spectec/src/il/eval.ml | 13 +++---- spectec/src/il/print.ml | 4 ++- spectec/src/il/print.mli | 3 +- spectec/src/util/lib.ml | 4 +++ spectec/src/util/lib.mli | 4 +++ 7 files changed, 71 insertions(+), 32 deletions(-) diff --git a/spectec/src/frontend/elab.ml b/spectec/src/frontend/elab.ml index 5962ef590..78f6b68b7 100644 --- a/spectec/src/frontend/elab.ml +++ b/spectec/src/frontend/elab.ml @@ -403,14 +403,8 @@ let make_quants_iter_arg env (free : Il.Free.sets) dims : Il.quant list ref * (m type scope = var_typ env' - let left = ref free - let acc = ref [] - - let visit_typid id = - if Il.Free.Set.mem id.it !left.typid then ( - acc := !acc @ [Il.TypP id $ id.at]; - left := Il.Free.{!left with typid = Set.remove id.it !left.typid}; - ) + let left = ref free (* free variables not yet quantified *) + let acc = ref [] (* quantifiers introduced so far *) let scope_enter x t = Printf.printf "[scope_enter %s]\n%!" x.it; @@ -422,6 +416,12 @@ Printf.printf "[scope_enter %s]\n%!" x.it; Printf.printf "[scope_exit %s]\n%!" x.it; env.vars <- varenv + let visit_typid id = + if Il.Free.Set.mem id.it !left.typid then ( + acc := !acc @ [Il.TypP id $ id.at]; + left := Il.Free.{!left with typid = Set.remove id.it !left.typid}; + ) + let visit_exp e = Printf.printf "[visit_exp %s]\n%!" (Il.Debug.il_exp e) @@ -434,6 +434,8 @@ Printf.printf "[visit_id %s]\n%!" id.it; try find "variable" env.vars id with Error _ -> find "variable" env.gvars (strip_var_suffix id) in +(* + (* Check that quantifier will not depend on later ones *) let fwd = Il.Free.(inter (free_typ t) !left) in if fwd <> Il.Free.empty then error id.at ("the type of `" ^ id.it ^ "` depends on " ^ @@ -441,16 +443,15 @@ Printf.printf "[visit_id %s]\n%!" id.it; List.map (fun id -> "`" ^ id ^ "`") |> String.concat ", " ) ^ ", which only occur(s) to its right; try to reorder parameters or premises"); +*) + (* Raise variable type to its inferred dimension *) let ctx' = match Map.find_opt id.it dims with | None -> [] (* for inherited variables *) | Some (_, ctx) -> List.map Il.(function Opt -> Opt | _ -> List) ctx in let t' = - List.fold_left (fun t iter -> - Il.IterT (t, iter) $ t.at - ) t ctx' - in + List.fold_left (fun t iter -> Il.IterT (t, iter) $ t.at) t ctx' in acc := !acc @ [Il.ExpP (Dim.annot_varid id ctx', t') $ id.at]; left := Il.Free.{!left with varid = Set.remove id.it !left.varid}; ) @@ -458,7 +459,9 @@ Printf.printf "[visit_id %s]\n%!" id.it; let visit_gramid id = if Il.Free.(Set.mem id.it !left.gramid) then ( let ps, t, _gram, _prods' = find "grammar" env.grams id in - let free' = Il.Free.(union (free_params ps) (diff (free_typ t) (bound_params ps))) in +(* + (* Check that quantifier will not depend on later ones *) + let free' = Il.Free.(free_params ps ++ (free_typ t -- bound_params ps)) in let fwd = Il.Free.(inter free' !left) in if fwd <> Il.Free.empty then error id.at ("the type of `" ^ id.it ^ "` depends on " ^ @@ -466,13 +469,17 @@ Printf.printf "[visit_id %s]\n%!" id.it; List.map (fun id -> "`" ^ id ^ "`") |> String.concat ", " ) ^ ", which only occur(s) to its right; try to reorder parameters or premises"); +*) + acc := !acc @ [Il.GramP (id, ps, t) $ id.at]; left := Free.{!left with varid = Set.remove id.it !left.gramid}; ) let visit_defid id = if Il.Free.Set.mem id.it !left.defid then ( let ps, t, _ = find "definition" env.defs id in - let free' = Il.Free.(union (free_params ps) (diff (free_typ t) (bound_params ps))) in +(* + (* Check that quantifier will not depend on later ones *) + let free' = Il.Free.(free_params ps ++ (free_typ t -- bound_params ps)) in let fwd = Il.Free.(inter free' !left) in if fwd <> Il.Free.empty then error id.at ("the type of `" ^ (spaceid "definition" id).it ^ "` depends on " ^ @@ -480,6 +487,7 @@ Printf.printf "[visit_id %s]\n%!" id.it; List.map (fun id -> "`" ^ id ^ "`") |> String.concat ", " ) ^ ", which only occur(s) to its right; try to reorder parameters or premises"); +*) acc := !acc @ [Il.DefP (id, ps, t) $ id.at]; left := Il.Free.{!left with defid = Set.remove id.it !left.defid}; ) @@ -506,6 +514,8 @@ Printf.sprintf "\n prs'=[%s]" Il.Debug.(list il_prem prs') ^ ) (fun qs -> fmt "\n... %s" (il_quants qs)) ) @@ fun _ -> + + (* Check that everything is determined (this is an approximation!) *) let bound = bound_env env in let free = Il.Free.( free_list free_param ps' ++ @@ -517,10 +527,12 @@ Printf.sprintf "\n prs'=[%s]" Il.Debug.(list il_prem prs') ^ -- bound -- bound_list bound_param ps' -- det ) in - let det' = Il.Free.(det -- bound) in if free <> Free.empty then error at ("definition contains indeterminate variable(s) " ^ String.concat ", " (List.map quote (Il.Free.Set.elements free.varid))); + + (* Gather quantifiers *) + let det' = Il.Free.(det -- bound) in let acc_qs, (module Arg : Il.Iter.Arg) = make_quants_iter_arg env' det' dims in let module Acc = Il.Iter.Make(Arg) in Acc.(list param ps'); @@ -529,7 +541,28 @@ Printf.sprintf "\n prs'=[%s]" Il.Debug.(list il_prem prs') ^ Acc.(list exp es'); Acc.(list sym gs'); Acc.(list prem prs'); - !acc_qs + + (* Order quantifiers for dependencies by simple fixpoint iteration *) + let qsf = List.map Il.Free.(fun q -> q, bound_quant q, free_quant q) !acc_qs in + let rec iterate bound_ok ok qfs defer progress = + match qfs with + | (q, bound, free)::qfs when Il.Free.subset free bound_ok -> + iterate Il.Free.(bound_ok ++ bound) (q::ok) qfs defer true + | qf1::qfs -> iterate bound_ok ok qfs (qf1::defer) progress + | [] -> + match defer with + | [] -> List.rev ok + | _ when progress -> iterate bound_ok ok (List.rev defer) [] false + | (q, _, free)::_ -> + let fwd = Il.Free.(free -- bound_ok) in + error q.at ("the type of `" ^ Il.Print.string_of_quant q ^ "` depends on " ^ + ( Il.Free.Set.(elements fwd.typid @ elements fwd.gramid @ elements fwd.varid @ elements fwd.defid) |> + List.map (fun id -> "`" ^ id ^ "`") |> + String.concat ", " ) ^ + ", which only occur(s) to its right; " ^ + "try to reorder parameters or premises or introduce an extra parameter") + in + iterate bound [] qsf [] false let infer_no_quants env dims det ps' as' ts' es' gs' prs' at = let qs = infer_quants env env dims det ps' as' ts' es' gs' prs' at in @@ -1089,6 +1122,7 @@ and elab_iterexp : 'a 'b. env -> (env -> 'a -> 'b attempt) -> 'a -> iter -> ('b | None -> Map.remove x.it env.vars | Some t -> Map.add x.it t env.vars ) xo; + (* Iterator list is injected after dimension analysis, leave it empty here *) Ok (body', (it', []), match it with Opt -> Il.Opt | _ -> Il.List) diff --git a/spectec/src/frontend/eval.ml b/spectec/src/frontend/eval.ml index 507b02bd8..0d8cb290e 100644 --- a/spectec/src/frontend/eval.ml +++ b/spectec/src/frontend/eval.ml @@ -816,14 +816,11 @@ and sub_typ env t1 t2 = and find_field tfs atom = El.Convert.find_nl_list (fun (atom', _, _) -> atom'.it = atom.it) tfs - |> Option.map snd3 + |> Option.map Lib.snd3 and find_case tcs atom = El.Convert.find_nl_list (fun (atom', _, _) -> atom'.it = atom.it) tcs - |> Option.map snd3 - -and fst3 (x, _, _) = x -and snd3 (_, x, _) = x + |> Option.map Lib.snd3 (* Type Disjointness *) @@ -887,7 +884,7 @@ and narrow_typ env t1 t2 = and atoms xs = Set.of_list (List.map Print.string_of_atom - (El.Convert.map_filter_nl_list fst3 xs)) + (El.Convert.map_filter_nl_list Lib.fst3 xs)) and unordered s1 s2 = not Set.(subset s1 s2 || subset s2 s1) diff --git a/spectec/src/il/eval.ml b/spectec/src/il/eval.ml index 0950705e9..2d1f2d883 100644 --- a/spectec/src/il/eval.ml +++ b/spectec/src/il/eval.ml @@ -25,9 +25,6 @@ let (let*) = Option.bind let ($>) it e = {e with it} -let fst3 (x, _, _) = x -let snd3 (_, x, _) = x - let unordered s1 s2 = not Set.(subset s1 s2 || subset s2 s1) @@ -769,7 +766,7 @@ and eta_tup_exp env e : exp list option = let eI' = ProjE (e, i) $$ e.at % Subst.subst_typ s tI in let s' = Subst.add_varid s xI eI' in Some (eI'::res', i + 1, s') - ) (Some ([], 0, Subst.empty)) xts |> Option.map fst3 |> Option.map List.rev + ) (Some ([], 0, Subst.empty)) xts |> Option.map Lib.fst3 |> Option.map List.rev in Some es' and eta_iter_exp env e : exp * iterexp = @@ -957,10 +954,10 @@ and sub_tup env s xts1 xts2 = and find_field tfs atom = - List.find_opt (fun (atom', _, _) -> Eq.eq_atom atom' atom) tfs |> Option.map snd3 + List.find_opt (fun (atom', _, _) -> Eq.eq_atom atom' atom) tfs |> Option.map Lib.snd3 and find_case tcs op = - List.find_opt (fun (op', _, _) -> Eq.eq_mixop op' op) tcs |> Option.map snd3 + List.find_opt (fun (op', _, _) -> Eq.eq_mixop op' op) tcs |> Option.map Lib.snd3 (* Type Disjointness *) @@ -1000,8 +997,8 @@ and disj_typ env t1 t2 = | _, _ -> t1.it <> t2.it -and atoms xs = Set.of_list (List.map Print.string_of_atom (List.map fst3 xs)) -and mixops xs = Set.of_list (List.map Print.string_of_mixop (List.map fst3 xs)) +and atoms xs = Set.of_list (List.map Print.string_of_atom (List.map Lib.fst3 xs)) +and mixops xs = Set.of_list (List.map Print.string_of_mixop (List.map Lib.fst3 xs)) and disj_tup env s xts1 xts2 = match xts1, xts2 with diff --git a/spectec/src/il/print.ml b/spectec/src/il/print.ml index c95d2efed..36fb9fe07 100644 --- a/spectec/src/il/print.ml +++ b/spectec/src/il/print.ml @@ -255,13 +255,15 @@ and string_of_param p = | GramP (x, ps, t) -> "grammar " ^ string_of_id x ^ string_of_params ps ^ " : " ^ string_of_typ t +and string_of_quant q = string_of_param q + and string_of_params = function | [] -> "" | ps -> "(" ^ concat ", " (List.map string_of_param ps) ^ ")" and string_of_quants = function | [] -> "" - | ps -> "{" ^ concat ", " (List.map string_of_param ps) ^ "}" + | ps -> "{" ^ concat ", " (List.map string_of_quant ps) ^ "}" let region_comment ?(suppress_pos = false) indent at = diff --git a/spectec/src/il/print.mli b/spectec/src/il/print.mli index 99b9ef9a4..de38d7639 100644 --- a/spectec/src/il/print.mli +++ b/spectec/src/il/print.mli @@ -18,7 +18,8 @@ val string_of_arg : arg -> string val string_of_args : arg list -> string val string_of_param : param -> string val string_of_params : param list -> string -val string_of_quants : param list -> string +val string_of_quant : quant -> string +val string_of_quants : quant list -> string val string_of_typfield : [`H | `V] -> typfield -> string val string_of_typcase : [`H | `V] -> typcase -> string val string_of_deftyp : [`H | `V] -> deftyp -> string diff --git a/spectec/src/util/lib.ml b/spectec/src/util/lib.ml index 351ed0a24..6ad5a3102 100644 --- a/spectec/src/util/lib.ml +++ b/spectec/src/util/lib.ml @@ -1,3 +1,7 @@ +let fst3 (x, _, _) = x +let snd3 (_, y, _) = y +let thd3 (_, _, z) = z + module List = struct include List diff --git a/spectec/src/util/lib.mli b/spectec/src/util/lib.mli index 56e29ffc5..b959912e8 100644 --- a/spectec/src/util/lib.mli +++ b/spectec/src/util/lib.mli @@ -1,5 +1,9 @@ (* Things that should be in the OCaml library... *) +val fst3 : 'a * 'b * 'c -> 'a +val snd3 : 'a * 'b * 'c -> 'b +val thd3 : 'a * 'b * 'c -> 'c + module List : sig val take : int -> 'a list -> 'a list (* raises Failure *) From cc8eabd1a52bbde258822c434fb98710df204d04 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Mon, 19 Jan 2026 09:03:48 +0100 Subject: [PATCH 011/235] Configurable annotation printing --- .../wasm-3.0/1.3-syntax.instructions.spectec | 1 - spectec/src/exe-spectec/main.ml | 1 + spectec/src/frontend/det.ml | 4 +-- spectec/src/frontend/elab.ml | 12 ++++--- spectec/src/il/debug.ml | 6 ++-- spectec/src/il/print.ml | 34 +++++++++++-------- spectec/src/il/print.mli | 8 +++-- 7 files changed, 39 insertions(+), 27 deletions(-) diff --git a/specification/wasm-3.0/1.3-syntax.instructions.spectec b/specification/wasm-3.0/1.3-syntax.instructions.spectec index d6622bf91..da6475cfa 100644 --- a/specification/wasm-3.0/1.3-syntax.instructions.spectec +++ b/specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -384,7 +384,6 @@ syntax instr/vec hint(desc "vector instruction") = ... | VEXTRACT_LANE shape sx? laneidx hint(show ##%.EXTRACT_LANE %) hint(show ##%.EXTRACT_LANE#_#% %) hint(macro "VEXTRACT_LANE") -- if sx? = eps <=> $lanetype(shape) <- I32 I64 F32 F64 | VREPLACE_LANE shape laneidx hint(show ##%.REPLACE_LANE %) hint(macro "VREPLACE_LANE") - | ... ;; Expressions diff --git a/spectec/src/exe-spectec/main.ml b/spectec/src/exe-spectec/main.ml index d17c1baa5..04b317f46 100644 --- a/spectec/src/exe-spectec/main.ml +++ b/spectec/src/exe-spectec/main.ml @@ -152,6 +152,7 @@ let argspec = Arg.align ( "--print-all-il", Arg.Set print_all_il, " Print IL after each step"; "--print-al", Arg.Set print_al, " Print al"; "--print-al-o", Arg.Set_string print_al_o, " Print al with given name"; + "--print-il-notes", Arg.Set Il.Print.print_notes, " Print IL with type annotations"; "--print-no-pos", Arg.Set print_no_pos, " Suppress position info in output"; ] @ List.map pass_argspec all_passes @ [ "--all-passes", Arg.Unit (fun () -> List.iter enable_pass all_passes)," Run all passes"; diff --git a/spectec/src/frontend/det.ml b/spectec/src/frontend/det.ml index 9e269982d..a78589ebf 100644 --- a/spectec/src/frontend/det.ml +++ b/spectec/src/frontend/det.ml @@ -108,7 +108,7 @@ and det_idx_iter iter = and det_idx_iterexp s1 (it, xes) = s1 -- free_list bound_varid (List.map fst xes) ++ det_idx_iter it ++ - det_list det_idx_exp (List.filter_map + det_list det_exp (List.filter_map (fun (x, e) -> if Set.mem x.it s1.varid then Some e else None) xes) @@ -144,7 +144,7 @@ and det_quant_expfield (_, as_, e) = and det_quant_iterexp s1 (it, xes) = s1 -- free_list bound_varid (List.map fst xes) ++ det_quant_iter it ++ - det_list det_quant_exp (List.filter_map + det_list det_exp (List.filter_map (fun (x, e) -> if Set.mem x.it s1.varid then Some e else None) xes) and det_quant_path p = diff --git a/spectec/src/frontend/elab.ml b/spectec/src/frontend/elab.ml index 78f6b68b7..c47132570 100644 --- a/spectec/src/frontend/elab.ml +++ b/spectec/src/frontend/elab.ml @@ -1817,7 +1817,7 @@ and elab_exp_list env (es : exp list) (xts : (id * Il.typ) list) at and elab_expfields env tid (efs : expfield list) (tfs : Il.typfield list) (t0 : Il.typ) at : Il.expfield list attempt = Debug.(log_in_at "el.elab_expfields" at - (fun _ -> fmt "{%s} : {%s} = %s" (list el_expfield efs) (list (il_typfield `H) tfs) (il_typ t0)) + (fun _ -> fmt "{%s} : {%s} = %s" (list el_expfield efs) (list il_typfield tfs) (il_typ t0)) ); assert (valid_tid tid); match efs, tfs with @@ -2166,7 +2166,7 @@ and cast_exp' phrase env (e' : Il.exp) t1 t2 : Il.exp' attempt = | Il.TupT [], Il.VarT _ when is_empty_notation_typ env t2' -> Ok e'.it - | Il.VarT _, Il.VarT _ -> + | Il.VarT (x1, _), Il.VarT (x2, _) -> (match expand_def env t1', expand_def env t2' with | (Il.VariantT [mixop1, (qs1, tC1, _), _], NoDots), (Il.VariantT [mixop2, (qs2, tC2, _), _], NoDots) -> @@ -2207,8 +2207,12 @@ and cast_exp' phrase env (e' : Il.exp) t1 t2 : Il.exp' attempt = ) | (Il.VariantT tcs1, dots1), (Il.VariantT tcs2, dots2) -> - if dots1 = Dots || dots2 = Dots then - error e'.at "used variant type is only partially defined at this point"; + if dots1 = Dots then + error e'.at ("used variant type `" ^ x1.it ^ + "` is only partially defined at this point") + else if dots2 = Dots then + error e'.at ("used variant type `" ^ x2.it ^ + "` is only partially defined at this point"); let* () = (* Shallow breadth subtyping on variants *) match diff --git a/spectec/src/il/debug.ml b/spectec/src/il/debug.ml index d19d0cfcf..f35055942 100644 --- a/spectec/src/il/debug.ml +++ b/spectec/src/il/debug.ml @@ -9,9 +9,9 @@ let il_mixop = string_of_mixop let il_iter = string_of_iter let il_typ = string_of_typ let il_typbind (x, t) = "(" ^ il_id x ^ ":" ^ il_typ t ^ ")" -let il_typfield = string_of_typfield -let il_typcase = string_of_typcase -let il_deftyp = string_of_deftyp `H +let il_typfield = string_of_typfield ~layout: `H +let il_typcase = string_of_typcase ~layout: `H +let il_deftyp = string_of_deftyp ~layout: `H let il_exp = string_of_exp let il_sym = string_of_sym let il_prod = string_of_prod diff --git a/spectec/src/il/print.ml b/spectec/src/il/print.ml index 36fb9fe07..38c539a6e 100644 --- a/spectec/src/il/print.ml +++ b/spectec/src/il/print.ml @@ -10,6 +10,8 @@ let concat = String.concat let prefix s f x = s ^ f x let space f x = " " ^ f x ^ " " +let print_notes = ref false + (* Identifiers *) @@ -17,7 +19,7 @@ let is_alphanum = function | '0'..'9' | 'A'..'Z' | 'a'..'z' - | '_' | '.' | '\'' -> true + | '_' | '.' | '\'' | '#' -> true | _ -> false let string_of_id x = @@ -81,25 +83,25 @@ and string_of_typbind (x, t) = | "_" -> string_of_typ t | _ -> string_of_id x ^ " : " ^ string_of_typ t -and string_of_deftyp layout dt = +and string_of_deftyp ?(layout = `H) dt = match dt.it with | AliasT t -> string_of_typ t | StructT tfs when layout = `H -> - "{" ^ concat ", " (List.map (string_of_typfield layout) tfs) ^ "}" + "{" ^ concat ", " (List.map (string_of_typfield ~layout) tfs) ^ "}" | StructT tfs -> - "\n{\n " ^ concat ",\n " (List.map (string_of_typfield layout) tfs) ^ "\n}" + "\n{\n " ^ concat ",\n " (List.map (string_of_typfield ~layout) tfs) ^ "\n}" | VariantT tcs when layout = `H -> - "| " ^ concat " | " (List.map (string_of_typcase layout) tcs) + "| " ^ concat " | " (List.map (string_of_typcase ~layout) tcs) | VariantT tcs -> - "\n | " ^ concat "\n | " (List.map (string_of_typcase layout) tcs) + "\n | " ^ concat "\n | " (List.map (string_of_typcase ~layout) tcs) -and string_of_typfield layout (atom, (qs, t, prems), _hints) = +and string_of_typfield ?(layout = `H) (atom, (qs, t, prems), _hints) = string_of_mixop (Mixop.Atom atom) ^ string_of_quants qs ^ " " ^ string_of_typ t ^ if layout = `H && prems <> [] then " -- .." else concat "" (List.map (prefix "\n -- " string_of_prem) prems) -and string_of_typcase layout (op, (qs, t, prems), _hints) = +and string_of_typcase ?(layout = `H) (op, (qs, t, prems), _hints) = string_of_mixop op ^ string_of_quants qs ^ string_of_typ_args t ^ if layout = `H && prems <> [] then " -- .." else concat "" (List.map (prefix "\n -- " string_of_prem) prems) @@ -108,8 +110,8 @@ and string_of_typcase layout (op, (qs, t, prems), _hints) = (* Expressions *) and string_of_exp e = -"(" ^ ( - match e.it with + (if !print_notes then "(" else "") ^ + (match e.it with | VarE x -> string_of_id x | BoolE b -> string_of_bool b | NumE n -> Num.to_string n @@ -158,7 +160,8 @@ and string_of_exp e = "(" ^ string_of_exp e1 ^ " : " ^ string_of_numtyp nt1 ^ " <:> " ^ string_of_numtyp nt2 ^ ")" | SubE (e1, t1, t2) -> "(" ^ string_of_exp e1 ^ " : " ^ string_of_typ t1 ^ " <: " ^ string_of_typ t2 ^ ")" -) ^ ")@[" ^ string_of_typ e.note ^ "]" + ) ^ + (if !print_notes then ")@[" ^ string_of_typ e.note ^ "]" else "") and string_of_exp_args e = match e.it with @@ -175,7 +178,8 @@ and string_of_expfield (atom, as_, e) = " " ^ string_of_exp e and string_of_path p = - match p.it with + (if !print_notes then "(" else "") ^ + (match p.it with | RootP -> "" | IdxP (p1, e) -> string_of_path p1 ^ "[" ^ string_of_exp e ^ "]" @@ -188,6 +192,8 @@ and string_of_path p = string_of_path p1 ^ "." ^ string_of_mixop (Mixop.Atom atom) ^ "_" ^ string_of_typ_name p1.note ^ string_of_quantargs as_ + ) ^ + (if !print_notes then ")@[" ^ string_of_typ p.note ^ "]" else "") and string_of_iterexp (iter, xes) = string_of_iter iter ^ "{" ^ String.concat ", " @@ -276,7 +282,7 @@ let string_of_inst ?(suppress_pos = false) x inst = | InstD (qs, as_, dt) -> "\n" ^ region_comment ~suppress_pos " " inst.at ^ " syntax " ^ string_of_id x ^ string_of_quants qs ^ string_of_args as_ ^ " = " ^ - string_of_deftyp `V dt ^ "\n" + string_of_deftyp ~layout: `V dt ^ "\n" let string_of_rule ?(suppress_pos = false) rule = match rule.it with @@ -308,7 +314,7 @@ let rec string_of_def ?(suppress_pos = false) d = match d.it with | TypD (x, _ps, [{it = InstD (ps, as_, dt); _}]) -> pre ^ "syntax " ^ string_of_id x ^ string_of_params ps ^ string_of_args as_ ^ " = " ^ - string_of_deftyp `V dt ^ "\n" + string_of_deftyp ~layout: `V dt ^ "\n" | TypD (x, ps, insts) -> pre ^ "syntax " ^ string_of_id x ^ string_of_params ps ^ concat "\n" (List.map (string_of_inst ~suppress_pos x) insts) ^ "\n" diff --git a/spectec/src/il/print.mli b/spectec/src/il/print.mli index de38d7639..c7289a6da 100644 --- a/spectec/src/il/print.mli +++ b/spectec/src/il/print.mli @@ -20,12 +20,14 @@ val string_of_param : param -> string val string_of_params : param list -> string val string_of_quant : quant -> string val string_of_quants : quant list -> string -val string_of_typfield : [`H | `V] -> typfield -> string -val string_of_typcase : [`H | `V] -> typcase -> string -val string_of_deftyp : [`H | `V] -> deftyp -> string +val string_of_typfield : ?layout: [`H | `V] -> typfield -> string +val string_of_typcase : ?layout: [`H | `V] -> typcase -> string +val string_of_deftyp : ?layout: [`H | `V] -> deftyp -> string val string_of_def : ?suppress_pos: bool -> def -> string val string_of_rule : ?suppress_pos: bool -> rule -> string val string_of_prod : ?suppress_pos: bool -> prod -> string val string_of_inst : ?suppress_pos: bool -> id -> inst -> string val string_of_clause : ?suppress_pos: bool -> id -> clause -> string val string_of_script : ?suppress_pos: bool -> script -> string + +val print_notes : bool ref From 354f700154a64d8553754ad41f76a2addf7783a5 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Mon, 19 Jan 2026 10:01:16 +0100 Subject: [PATCH 012/235] WIP6 (Wasm 3.0 validates again ignoring quant equality) --- .../wasm-3.0/1.3-syntax.instructions.spectec | 1 + .../wasm-3.0/6.1-text.values.spectec | 2 +- spectec/src/frontend/det.ml | 10 ++++++++-- spectec/src/frontend/elab.ml | 15 +++++++------- spectec/src/il/eq.ml | 20 +++++++++---------- 5 files changed, 28 insertions(+), 20 deletions(-) diff --git a/specification/wasm-3.0/1.3-syntax.instructions.spectec b/specification/wasm-3.0/1.3-syntax.instructions.spectec index da6475cfa..d6622bf91 100644 --- a/specification/wasm-3.0/1.3-syntax.instructions.spectec +++ b/specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -384,6 +384,7 @@ syntax instr/vec hint(desc "vector instruction") = ... | VEXTRACT_LANE shape sx? laneidx hint(show ##%.EXTRACT_LANE %) hint(show ##%.EXTRACT_LANE#_#% %) hint(macro "VEXTRACT_LANE") -- if sx? = eps <=> $lanetype(shape) <- I32 I64 F32 F64 | VREPLACE_LANE shape laneidx hint(show ##%.REPLACE_LANE %) hint(macro "VREPLACE_LANE") + | ... ;; Expressions diff --git a/specification/wasm-3.0/6.1-text.values.spectec b/specification/wasm-3.0/6.1-text.values.spectec index 41d8a00e2..cc1541b6e 100644 --- a/specification/wasm-3.0/6.1-text.values.spectec +++ b/specification/wasm-3.0/6.1-text.values.spectec @@ -154,7 +154,7 @@ syntax I = idctxt def $concat_idctxt(idctxt*) : idctxt hint(show (++) %) def $concat_idctxt(eps) = {} -def $concat_idctxt(I I') = I ++ $concat_idctxt(I'*) +def $concat_idctxt(I I'*) = I ++ $concat_idctxt(I'*) relation Idctxt_ok: |- idctxt : OK diff --git a/spectec/src/frontend/det.ml b/spectec/src/frontend/det.ml index a78589ebf..00cb5ca03 100644 --- a/spectec/src/frontend/det.ml +++ b/spectec/src/frontend/det.ml @@ -98,7 +98,8 @@ and det_idx_exp e = | IdxE (e1, e2) -> det_quant_exp e1 ++ det_exp e2 | _ -> det_quant_exp e -and det_idx_expfield (_, _, e) = det_idx_exp e +and det_idx_expfield (_, as_, e) = + det_list det_quant_arg as_ ++ det_idx_exp e and det_idx_iter iter = match iter with @@ -164,8 +165,13 @@ and det_quant_iter iter = (* Grammars *) and det_sym g = + Il.Debug.(log_at "il.det_sym" g.at + (fun _ -> fmt "%s" (il_sym g)) + (fun s -> String.concat ", " (Set.elements s.varid)) + ) @@ fun _ -> match g.it with - | VarG _ | NumG _ | TextG _ | EpsG -> empty + | VarG (_x, as_) -> det_list det_arg as_ + | NumG _ | TextG _ | EpsG -> empty | SeqG gs | AltG gs -> det_list det_sym gs | RangeG (g1, g2) -> det_sym g1 ++ det_sym g2 | IterG (g1, ite) -> det_iterexp (det_sym g1) ite diff --git a/spectec/src/frontend/elab.ml b/spectec/src/frontend/elab.ml index c47132570..4e5ce4610 100644 --- a/spectec/src/frontend/elab.ml +++ b/spectec/src/frontend/elab.ml @@ -500,6 +500,7 @@ let infer_quants env env' dims det ps' as' ts' es' gs' prs' at : Il.quant list = (fun _ -> Printf.sprintf "\n as'=[%s]" Il.Debug.(list il_arg as') ^ Printf.sprintf "\n es'=[%s]" Il.Debug.(list il_exp es') ^ +Printf.sprintf "\n gs'=[%s]" Il.Debug.(list il_sym gs') ^ Printf.sprintf "\n prs'=[%s]" Il.Debug.(list il_prem prs') ^ "\n locals=" ^ (Map.fold (fun id _ ids -> @@ -2207,12 +2208,6 @@ and cast_exp' phrase env (e' : Il.exp) t1 t2 : Il.exp' attempt = ) | (Il.VariantT tcs1, dots1), (Il.VariantT tcs2, dots2) -> - if dots1 = Dots then - error e'.at ("used variant type `" ^ x1.it ^ - "` is only partially defined at this point") - else if dots2 = Dots then - error e'.at ("used variant type `" ^ x2.it ^ - "` is only partially defined at this point"); let* () = (* Shallow breadth subtyping on variants *) match @@ -2230,6 +2225,12 @@ and cast_exp' phrase env (e' : Il.exp) t1 t2 : Il.exp' attempt = | Fail (Trace (_, msg, _) :: _) -> fail_typ2 env e'.at phrase t1 t2 (", " ^ msg) | Fail [] -> assert false in + if dots1 = Dots then + error e'.at ("used variant type `" ^ x1.it ^ + "` is only partially defined at this point") + else if dots2 = Dots then + error e'.at ("used variant type `" ^ x2.it ^ + "` is only partially defined at this point"); Ok (Il.SubE (e', t1', t2')) | _, _ -> @@ -2758,7 +2759,7 @@ Printf.printf "dims \\ %s = %s\n%!" (Debug.domain outer_dims) (Debug.(list Fun.i let g1' = Dim.annot_sym dims g1' in let g2' = Dim.annot_sym dims g2' in let prems' = List.map (Dim.annot_prem dims) prems' in - let det = Det.(det_sym g1' ++ det_list det_prem prems') in + let det = Det.(det_sym g1' ++ det_sym g2' ++ det_list det_prem prems') in ignore (infer_quants env env' dims det [] [] [] [] [g1'; g2'] prems' prod.at); [] (* TODO(4, rossberg): translate equiv grammars properly *) (* diff --git a/spectec/src/il/eq.ml b/spectec/src/il/eq.ml index e4400ad89..91787ad3b 100644 --- a/spectec/src/il/eq.ml +++ b/spectec/src/il/eq.ml @@ -86,26 +86,26 @@ and eq_exp e1 e2 = | TupE es1, TupE es2 | ListE es1, ListE es2 -> eq_list eq_exp es1 es2 | StrE efs1, StrE efs2 -> eq_list eq_expfield efs1 efs2 - | DotE (e11, atom1, as1), DotE (e21, atom2, as2) -> - eq_exp e11 e21 && eq_atom atom1 atom2 && eq_list eq_arg as1 as2 - | UncaseE (e1, op1, as1), UncaseE (e2, op2, as2) -> - eq_mixop op1 op2 && eq_exp e1 e2 && eq_list eq_arg as1 as2 + | DotE (e11, atom1, _as1), DotE (e21, atom2, _as2) -> + eq_exp e11 e21 && eq_atom atom1 atom2 (*&& eq_list eq_arg as1 as2*) + | UncaseE (e1, op1, _as1), UncaseE (e2, op2, _as2) -> + eq_mixop op1 op2 && eq_exp e1 e2 (*&& eq_list eq_arg as1 as2*) | CallE (x1, as1), CallE (x2, as2) -> eq_id x1 x2 && eq_list eq_arg as1 as2 | IterE (e11, iter1), IterE (e21, iter2) -> eq_exp e11 e21 && eq_iterexp iter1 iter2 | OptE eo1, OptE eo2 -> eq_opt eq_exp eo1 eo2 | ProjE (e1, i1), ProjE (e2, i2) -> eq_exp e1 e2 && i1 = i2 | TheE e1, TheE e2 -> eq_exp e1 e2 - | CaseE (op1, as1, e1), CaseE (op2, as2, e2) -> - eq_mixop op1 op2 && eq_list eq_arg as1 as2 && eq_exp e1 e2 + | CaseE (op1, _as1, e1), CaseE (op2, _as2, e2) -> + eq_mixop op1 op2 (*&& eq_list eq_arg as1 as2*) && eq_exp e1 e2 | CvtE (e1, nt11, nt12), CvtE (e2, nt21, nt22) -> eq_exp e1 e2 && nt11 = nt21 && nt12 = nt22 | SubE (e1, t11, t12), SubE (e2, t21, t22) -> eq_exp e1 e2 && eq_typ t11 t21 && eq_typ t12 t22 | _, _ -> e1.it = e2.it -and eq_expfield (atom1, as1, e1) (atom2, as2, e2) = - eq_atom atom1 atom2 && eq_list eq_arg as1 as2 && eq_exp e1 e2 +and eq_expfield (atom1, _as1, e1) (atom2, _as2, e2) = + eq_atom atom1 atom2 (*&& eq_list eq_arg as1 as2*) && eq_exp e1 e2 and eq_path p1 p2 = match p1.it, p2.it with @@ -113,8 +113,8 @@ and eq_path p1 p2 = | IdxP (p11, e1), IdxP (p21, e2) -> eq_path p11 p21 && eq_exp e1 e2 | SliceP (p11, e11, e12), SliceP (p21, e21, e22) -> eq_path p11 p21 && eq_exp e11 e21 && eq_exp e12 e22 - | DotP (p11, atom1, as1), DotP (p21, atom2, as2) -> - eq_path p11 p21 && eq_atom atom1 atom2 && eq_list eq_arg as1 as2 + | DotP (p11, atom1, _as1), DotP (p21, atom2, _as2) -> + eq_path p11 p21 && eq_atom atom1 atom2 (*&& eq_list eq_arg as1 as2*) | _, _ -> p1.it = p2.it and eq_iterexp (iter1, xes1) (iter2, xes2) = From 6a11bce4322c6d75db0120a8ea6bb516febd7f78 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Mon, 19 Jan 2026 10:50:30 +0100 Subject: [PATCH 013/235] WIP7 (all frontend tests pass) --- spectec/src/frontend/dim.ml | 7 +- spectec/src/il/iter.ml | 13 +- spectec/test-frontend/TEST.md | 121790 +++++++++++++++++++++++++- spectec/test-frontend/test.spectec | 3 + 4 files changed, 117950 insertions(+), 3863 deletions(-) diff --git a/spectec/src/frontend/dim.ml b/spectec/src/frontend/dim.ml index ca0fe2613..c95059888 100644 --- a/spectec/src/frontend/dim.ml +++ b/spectec/src/frontend/dim.ml @@ -96,7 +96,12 @@ let check_varid dims ctx mode id = dims := Map.add_to_list id.it (id.at, ctx, mode) !dims let uncheck_varid dims id = - dims := Map.add id.it (List.tl (Map.find id.it !dims)) !dims + let ctxs' = List.tl (Map.find id.it !dims) in + dims := + if ctxs' = [] then + Map.remove id.it !dims + else + Map.add id.it ctxs' !dims let rec check_iter dims ctx it = match it with diff --git a/spectec/src/il/iter.ml b/spectec/src/il/iter.ml index 7877ec342..f87220293 100644 --- a/spectec/src/il/iter.ml +++ b/spectec/src/il/iter.ml @@ -95,20 +95,23 @@ let hints = list hint let rec iter it = match it with | Opt | List | List1 -> () - | ListN (e, xo) -> exp e; opt varid xo + | ListN _ -> assert false and iterexp : 'a. ('a -> unit) -> 'a -> _ -> unit = fun f body (it, xes) -> - let xts1 = + let eo, xo, xts1 = match it with - | ListN (_, Some x) -> [(x, NumT `NatT $ x.at)] - | _ -> [] + | ListN (e, Some x) -> Some e, Some x, [(x, NumT `NatT $ x.at)] + | ListN (e, None) -> Some e, None, [] + | _ -> None, None, [] in let xts = xts1 @ List.map (fun (x, e) -> x, e.note) xes in let old_scopes = List.map (fun (x, t) -> scope_enter x t) xts in f body; + opt varid xo; + list (pair varid ignore) xes; List.iter2 (fun (x, _) scope -> scope_exit x scope) (List.rev xts) (List.rev old_scopes); - iter it; list (pair varid exp) xes + opt exp eo; list (pair ignore exp) xes (* Types *) diff --git a/spectec/test-frontend/TEST.md b/spectec/test-frontend/TEST.md index 1daf35ebd..b0f48b723 100644 --- a/spectec/test-frontend/TEST.md +++ b/spectec/test-frontend/TEST.md @@ -2,6 +2,3550 @@ ```sh $ (../src/exe-spectec/main.exe test.spectec -o test.tex && cat test.tex) +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id _] not free +[visit_id _] no dims +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id _] not free +[visit_id _] no dims +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id _] not free +[visit_id _] no dims +[visit_id _] not free +[visit_id _] no dims +[check_dims] testmixfix +DecD testmixfix(testmixfix : testmixfix) : nat* +[visit_id testmixfix] not free +[check_dims] nat +[visit_exp `{%}`_testmixfix(nat*{nat <- `nat*`})] +[visit_exp (nat*{nat <- `nat*`})] +[visit_exp nat*{nat <- `nat*`}] +[scope_enter nat] +[visit_exp nat] +[visit_id nat] not free +[visit_id nat] not free +[scope_exit nat] +[visit_exp `nat*`] +[visit_id nat*] no dims +[visit_id nat*] +[visit_exp nat*{nat <- `nat*`}] +[scope_enter nat] +[visit_exp nat] +[visit_id nat] not free +[visit_id nat] not free +[scope_exit nat] +[visit_exp `nat*`] +[visit_id nat*] not free +[visit_id nat*] no dims +=> + ;; test.spectec + def $testmixfix{`nat*` : nat*}(`{%}`_testmixfix(nat*{nat <- `nat*`})) = nat*{nat <- `nat*`} +[check_dims] nat +[visit_exp `[%]`_testmixfix(nat*{nat <- `nat*`})] +[visit_exp (nat*{nat <- `nat*`})] +[visit_exp nat*{nat <- `nat*`}] +[scope_enter nat] +[visit_exp nat] +[visit_id nat] not free +[visit_id nat] not free +[scope_exit nat] +[visit_exp `nat*`] +[visit_id nat*] no dims +[visit_id nat*] +[visit_exp nat*{nat <- `nat*`}] +[scope_enter nat] +[visit_exp nat] +[visit_id nat] not free +[visit_id nat] not free +[scope_exit nat] +[visit_exp `nat*`] +[visit_id nat*] not free +[visit_id nat*] no dims +=> + ;; test.spectec + def $testmixfix{`nat*` : nat*}(`[%]`_testmixfix(nat*{nat <- `nat*`})) = nat*{nat <- `nat*`} +[check_dims] nat_1 nat_2 +[visit_exp `%->%`_testmixfix(nat_1, nat_2)] +[visit_exp (nat_1, nat_2)] +[visit_exp nat_1] +[visit_id nat_1] +[visit_exp nat_2] +[visit_id nat_2] +[visit_exp [nat_1 nat_2]] +[visit_exp nat_1] +[visit_id nat_1] not free +[visit_exp nat_2] +[visit_id nat_2] not free +=> + ;; test.spectec + def $testmixfix{nat_1 : nat, nat_2 : nat}(`%->%`_testmixfix(nat_1, nat_2)) = [nat_1 nat_2] +[check_dims] +[check_dims] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id opt] no dims +[visit_id opt] +[visit_id _] not free +[visit_id _] no dims +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id O?] no dims +[visit_id O?] +[visit_id _] not free +[visit_id _] no dims +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id _] not free +[visit_id _] no dims +[visit_id _] not free +[visit_id _] no dims +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id list] no dims +[visit_id list] +[visit_id _] not free +[visit_id _] no dims +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id L*] no dims +[visit_id L*] +[visit_id _] not free +[visit_id _] no dims +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id _] not free +[visit_id _] no dims +[visit_id _] not free +[visit_id _] no dims +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id opt] no dims +[visit_id opt] +[visit_id _] not free +[visit_id _] no dims +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id O?] no dims +[visit_id O?] +[visit_id _] not free +[visit_id _] no dims +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id _] not free +[visit_id _] no dims +[visit_id _] not free +[visit_id _] no dims +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id list] no dims +[visit_id list] +[visit_id _] not free +[visit_id _] no dims +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id L*] no dims +[visit_id L*] +[visit_id _] not free +[visit_id _] no dims +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id _] not free +[visit_id _] no dims +[visit_id _] not free +[visit_id _] no dims +[check_dims] variant +DecD testemptyv1(variant : variant) : nat +[visit_id variant] not free +[check_dims] opt opt#1 +[visit_exp `V1`_variant{opt#1}(opt, 0)] +[visit_exp opt#1] +[visit_id opt#1] +[visit_exp (opt, 0)] +[visit_exp opt] +[visit_id opt] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyv1{opt#1 : opt, opt : opt}(`V1`_variant{opt#1}(opt, 0)) = 0 +[check_dims] opt#3 +[visit_exp `V1`_variant{opt#3}(?(), 0)] +[visit_exp opt#3] +[visit_id opt#3] +[visit_exp (?(), 0)] +[visit_exp ?()] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyv1{opt#3 : opt}(`V1`_variant{opt#3}(?(), 0)) = 0 +[check_dims] opt#5 +[visit_exp `V1`_variant{opt#5}(?(), 0)] +[visit_exp opt#5] +[visit_id opt#5] +[visit_exp (?(), 0)] +[visit_exp ?()] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyv1{opt#5 : opt}(`V1`_variant{opt#5}(?(), 0)) = 0 +[check_dims] opt#7 +[visit_exp `V1`_variant{opt#7}(?(`O`_O), 0)] +[visit_exp opt#7] +[visit_id opt#7] +[visit_exp (?(`O`_O), 0)] +[visit_exp ?(`O`_O)] +[visit_exp `O`_O] +[visit_exp ()] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyv1{opt#7 : opt}(`V1`_variant{opt#7}(?(`O`_O), 0)) = 0 +[check_dims] variant +DecD testemptyv2(variant : variant) : nat +[visit_id variant] not free +[check_dims] O?#1 +[visit_exp `V2`_variant{`O?#1`}(?(), 0)] +[visit_exp `O?#1`] +[visit_id O?#1] +[visit_exp (?(), 0)] +[visit_exp ?()] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyv2{`O?#1` : O?}(`V2`_variant{`O?#1`}(?(), 0)) = 0 +[check_dims] O?#3 +[visit_exp `V2`_variant{`O?#3`}(?(), 0)] +[visit_exp `O?#3`] +[visit_id O?#3] +[visit_exp (?(), 0)] +[visit_exp ?()] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyv2{`O?#3` : O?}(`V2`_variant{`O?#3`}(?(), 0)) = 0 +[check_dims] O?#5 +[visit_exp `V2`_variant{`O?#5`}(?(`O`_O), 0)] +[visit_exp `O?#5`] +[visit_id O?#5] +[visit_exp (?(`O`_O), 0)] +[visit_exp ?(`O`_O)] +[visit_exp `O`_O] +[visit_exp ()] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyv2{`O?#5` : O?}(`V2`_variant{`O?#5`}(?(`O`_O), 0)) = 0 +[check_dims] variant +DecD testemptyv3(variant : variant) : nat +[visit_id variant] not free +[check_dims] +[visit_exp `V3`_variant(?(), 0)] +[visit_exp (?(), 0)] +[visit_exp ?()] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyv3(`V3`_variant(?(), 0)) = 0 +[check_dims] +[visit_exp `V3`_variant(?(), 0)] +[visit_exp (?(), 0)] +[visit_exp ?()] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyv3(`V3`_variant(?(), 0)) = 0 +[check_dims] +[visit_exp `V3`_variant(?(""), 0)] +[visit_exp (?(""), 0)] +[visit_exp ?("")] +[visit_exp ""] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyv3(`V3`_variant(?(""), 0)) = 0 +[check_dims] variant +DecD testemptyv4(variant : variant) : nat +[visit_id variant] not free +[check_dims] list list#1 +[visit_exp `V4`_variant{list#1}(list, 0)] +[visit_exp list#1] +[visit_id list#1] +[visit_exp (list, 0)] +[visit_exp list] +[visit_id list] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyv4{list#1 : list, list : list}(`V4`_variant{list#1}(list, 0)) = 0 +[check_dims] list#3 +[visit_exp `V4`_variant{list#3}([], 0)] +[visit_exp list#3] +[visit_id list#3] +[visit_exp ([], 0)] +[visit_exp []] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyv4{list#3 : list}(`V4`_variant{list#3}([], 0)) = 0 +[check_dims] list#5 +[visit_exp `V4`_variant{list#5}([], 0)] +[visit_exp list#5] +[visit_id list#5] +[visit_exp ([], 0)] +[visit_exp []] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyv4{list#5 : list}(`V4`_variant{list#5}([], 0)) = 0 +[check_dims] list#7 +[visit_exp `V4`_variant{list#7}([`L`_L], 0)] +[visit_exp list#7] +[visit_id list#7] +[visit_exp ([`L`_L], 0)] +[visit_exp [`L`_L]] +[visit_exp `L`_L] +[visit_exp ()] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyv4{list#7 : list}(`V4`_variant{list#7}([`L`_L], 0)) = 0 +[check_dims] list#9 +[visit_exp `V4`_variant{list#9}([`L`_L `L`_L `L`_L], 0)] +[visit_exp list#9] +[visit_id list#9] +[visit_exp ([`L`_L `L`_L `L`_L], 0)] +[visit_exp [`L`_L `L`_L `L`_L]] +[visit_exp `L`_L] +[visit_exp ()] +[visit_exp `L`_L] +[visit_exp ()] +[visit_exp `L`_L] +[visit_exp ()] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyv4{list#9 : list}(`V4`_variant{list#9}([`L`_L `L`_L `L`_L], 0)) = 0 +[check_dims] list#11 +[visit_exp `V4`_variant{list#11}([], 0)] +[visit_exp list#11] +[visit_id list#11] +[visit_exp ([], 0)] +[visit_exp []] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyv4{list#11 : list}(`V4`_variant{list#11}([], 0)) = 0 +[check_dims] list#13 +[visit_exp `V4`_variant{list#13}([`L`_L], 0)] +[visit_exp list#13] +[visit_id list#13] +[visit_exp ([`L`_L], 0)] +[visit_exp [`L`_L]] +[visit_exp `L`_L] +[visit_exp ()] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyv4{list#13 : list}(`V4`_variant{list#13}([`L`_L], 0)) = 0 +[check_dims] list#15 +[visit_exp `V4`_variant{list#15}([`L`_L `L`_L `L`_L], 0)] +[visit_exp list#15] +[visit_id list#15] +[visit_exp ([`L`_L `L`_L `L`_L], 0)] +[visit_exp [`L`_L `L`_L `L`_L]] +[visit_exp `L`_L] +[visit_exp ()] +[visit_exp `L`_L] +[visit_exp ()] +[visit_exp `L`_L] +[visit_exp ()] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyv4{list#15 : list}(`V4`_variant{list#15}([`L`_L `L`_L `L`_L], 0)) = 0 +[check_dims] variant +DecD testemptyv5(variant : variant) : nat +[visit_id variant] not free +[check_dims] L*#1 +[visit_exp `V5`_variant{`L*#1`}([], 0)] +[visit_exp `L*#1`] +[visit_id L*#1] +[visit_exp ([], 0)] +[visit_exp []] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyv5{`L*#1` : L*}(`V5`_variant{`L*#1`}([], 0)) = 0 +[check_dims] L*#3 +[visit_exp `V5`_variant{`L*#3`}([], 0)] +[visit_exp `L*#3`] +[visit_id L*#3] +[visit_exp ([], 0)] +[visit_exp []] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyv5{`L*#3` : L*}(`V5`_variant{`L*#3`}([], 0)) = 0 +[check_dims] L*#5 +[visit_exp `V5`_variant{`L*#5`}([`L`_L], 0)] +[visit_exp `L*#5`] +[visit_id L*#5] +[visit_exp ([`L`_L], 0)] +[visit_exp [`L`_L]] +[visit_exp `L`_L] +[visit_exp ()] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyv5{`L*#5` : L*}(`V5`_variant{`L*#5`}([`L`_L], 0)) = 0 +[check_dims] L*#7 +[visit_exp `V5`_variant{`L*#7`}([`L`_L `L`_L `L`_L], 0)] +[visit_exp `L*#7`] +[visit_id L*#7] +[visit_exp ([`L`_L `L`_L `L`_L], 0)] +[visit_exp [`L`_L `L`_L `L`_L]] +[visit_exp `L`_L] +[visit_exp ()] +[visit_exp `L`_L] +[visit_exp ()] +[visit_exp `L`_L] +[visit_exp ()] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyv5{`L*#7` : L*}(`V5`_variant{`L*#7`}([`L`_L `L`_L `L`_L], 0)) = 0 +[check_dims] L*#9 +[visit_exp `V5`_variant{`L*#9`}([], 0)] +[visit_exp `L*#9`] +[visit_id L*#9] +[visit_exp ([], 0)] +[visit_exp []] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyv5{`L*#9` : L*}(`V5`_variant{`L*#9`}([], 0)) = 0 +[check_dims] L*#11 +[visit_exp `V5`_variant{`L*#11`}([`L`_L], 0)] +[visit_exp `L*#11`] +[visit_id L*#11] +[visit_exp ([`L`_L], 0)] +[visit_exp [`L`_L]] +[visit_exp `L`_L] +[visit_exp ()] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyv5{`L*#11` : L*}(`V5`_variant{`L*#11`}([`L`_L], 0)) = 0 +[check_dims] L*#13 +[visit_exp `V5`_variant{`L*#13`}([`L`_L `L`_L `L`_L], 0)] +[visit_exp `L*#13`] +[visit_id L*#13] +[visit_exp ([`L`_L `L`_L `L`_L], 0)] +[visit_exp [`L`_L `L`_L `L`_L]] +[visit_exp `L`_L] +[visit_exp ()] +[visit_exp `L`_L] +[visit_exp ()] +[visit_exp `L`_L] +[visit_exp ()] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyv5{`L*#13` : L*}(`V5`_variant{`L*#13`}([`L`_L `L`_L `L`_L], 0)) = 0 +[check_dims] variant +DecD testemptyv6(variant : variant) : nat +[visit_id variant] not free +[check_dims] +[visit_exp `V6`_variant([], 0)] +[visit_exp ([], 0)] +[visit_exp []] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyv6(`V6`_variant([], 0)) = 0 +[check_dims] +[visit_exp `V6`_variant([], 0)] +[visit_exp ([], 0)] +[visit_exp []] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyv6(`V6`_variant([], 0)) = 0 +[check_dims] +[visit_exp `V6`_variant([""], 0)] +[visit_exp ([""], 0)] +[visit_exp [""]] +[visit_exp ""] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyv6(`V6`_variant([""], 0)) = 0 +[check_dims] +[visit_exp `V6`_variant(["" ""], 0)] +[visit_exp (["" ""], 0)] +[visit_exp ["" ""]] +[visit_exp ""] +[visit_exp ""] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyv6(`V6`_variant(["" ""], 0)) = 0 +[check_dims] +[visit_exp `V6`_variant([], 0)] +[visit_exp ([], 0)] +[visit_exp []] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyv6(`V6`_variant([], 0)) = 0 +[check_dims] +[visit_exp `V6`_variant([""], 0)] +[visit_exp ([""], 0)] +[visit_exp [""]] +[visit_exp ""] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyv6(`V6`_variant([""], 0)) = 0 +[check_dims] +[visit_exp `V6`_variant(["" ""], 0)] +[visit_exp (["" ""], 0)] +[visit_exp ["" ""]] +[visit_exp ""] +[visit_exp ""] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyv6(`V6`_variant(["" ""], 0)) = 0 +[check_dims] notation1 +DecD testemptyn1(notation1 : notation1) : nat +[visit_id notation1] not free +[check_dims] opt opt#19 +[visit_exp `%%`_notation1{opt#19}(opt, 0)] +[visit_exp opt#19] +[visit_id opt#19] +[visit_exp (opt, 0)] +[visit_exp opt] +[visit_id opt] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyn1{opt#19 : opt, opt : opt}(`%%`_notation1{opt#19}(opt, 0)) = 0 +[check_dims] opt#31 +[visit_exp `%%`_notation1{opt#31}(?(), 0)] +[visit_exp opt#31] +[visit_id opt#31] +[visit_exp (?(), 0)] +[visit_exp ?()] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyn1{opt#31 : opt}(`%%`_notation1{opt#31}(?(), 0)) = 0 +[check_dims] opt#37 +[visit_exp `%%`_notation1{opt#37}(?(), 0)] +[visit_exp opt#37] +[visit_id opt#37] +[visit_exp (?(), 0)] +[visit_exp ?()] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyn1{opt#37 : opt}(`%%`_notation1{opt#37}(?(), 0)) = 0 +[check_dims] opt#51 +[visit_exp `%%`_notation1{opt#51}(?(`O`_O), 0)] +[visit_exp opt#51] +[visit_id opt#51] +[visit_exp (?(`O`_O), 0)] +[visit_exp ?(`O`_O)] +[visit_exp `O`_O] +[visit_exp ()] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyn1{opt#51 : opt}(`%%`_notation1{opt#51}(?(`O`_O), 0)) = 0 +[check_dims] notation2 +DecD testemptyn2(notation2 : notation2) : nat +[visit_id notation2] not free +[check_dims] O?#17 +[visit_exp `%%`_notation2{`O?#17`}(?(), 0)] +[visit_exp `O?#17`] +[visit_id O?#17] +[visit_exp (?(), 0)] +[visit_exp ?()] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyn2{`O?#17` : O?}(`%%`_notation2{`O?#17`}(?(), 0)) = 0 +[check_dims] O?#23 +[visit_exp `%%`_notation2{`O?#23`}(?(), 0)] +[visit_exp `O?#23`] +[visit_id O?#23] +[visit_exp (?(), 0)] +[visit_exp ?()] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyn2{`O?#23` : O?}(`%%`_notation2{`O?#23`}(?(), 0)) = 0 +[check_dims] O?#37 +[visit_exp `%%`_notation2{`O?#37`}(?(`O`_O), 0)] +[visit_exp `O?#37`] +[visit_id O?#37] +[visit_exp (?(`O`_O), 0)] +[visit_exp ?(`O`_O)] +[visit_exp `O`_O] +[visit_exp ()] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyn2{`O?#37` : O?}(`%%`_notation2{`O?#37`}(?(`O`_O), 0)) = 0 +[check_dims] notation3 +DecD testemptyn3(notation3 : notation3) : nat +[visit_id notation3] not free +[check_dims] +[visit_exp `%%`_notation3(?(), 0)] +[visit_exp (?(), 0)] +[visit_exp ?()] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyn3(`%%`_notation3(?(), 0)) = 0 +[check_dims] +[visit_exp `%%`_notation3(?(), 0)] +[visit_exp (?(), 0)] +[visit_exp ?()] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyn3(`%%`_notation3(?(), 0)) = 0 +[check_dims] +[visit_exp `%%`_notation3(?(""), 0)] +[visit_exp (?(""), 0)] +[visit_exp ?("")] +[visit_exp ""] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyn3(`%%`_notation3(?(""), 0)) = 0 +[check_dims] notation4 +DecD testemptyn4(notation4 : notation4) : nat +[visit_id notation4] not free +[check_dims] list list#27 +[visit_exp `%%`_notation4{list#27}(list, 0)] +[visit_exp list#27] +[visit_id list#27] +[visit_exp (list, 0)] +[visit_exp list] +[visit_id list] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyn4{list#27 : list, list : list}(`%%`_notation4{list#27}(list, 0)) = 0 +[check_dims] list#39 +[visit_exp `%%`_notation4{list#39}([], 0)] +[visit_exp list#39] +[visit_id list#39] +[visit_exp ([], 0)] +[visit_exp []] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyn4{list#39 : list}(`%%`_notation4{list#39}([], 0)) = 0 +[check_dims] list#45 +[visit_exp `%%`_notation4{list#45}([], 0)] +[visit_exp list#45] +[visit_id list#45] +[visit_exp ([], 0)] +[visit_exp []] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyn4{list#45 : list}(`%%`_notation4{list#45}([], 0)) = 0 +[check_dims] list#59 +[visit_exp `%%`_notation4{list#59}([`L`_L], 0)] +[visit_exp list#59] +[visit_id list#59] +[visit_exp ([`L`_L], 0)] +[visit_exp [`L`_L]] +[visit_exp `L`_L] +[visit_exp ()] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyn4{list#59 : list}(`%%`_notation4{list#59}([`L`_L], 0)) = 0 +[check_dims] list#71 +[visit_exp `%%`_notation4{list#71}([`L`_L `L`_L `L`_L], 0)] +[visit_exp list#71] +[visit_id list#71] +[visit_exp ([`L`_L `L`_L `L`_L], 0)] +[visit_exp [`L`_L `L`_L `L`_L]] +[visit_exp `L`_L] +[visit_exp ()] +[visit_exp `L`_L] +[visit_exp ()] +[visit_exp `L`_L] +[visit_exp ()] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyn4{list#71 : list}(`%%`_notation4{list#71}([`L`_L `L`_L `L`_L], 0)) = 0 +[check_dims] list#83 +[visit_exp `%%`_notation4{list#83}([], 0)] +[visit_exp list#83] +[visit_id list#83] +[visit_exp ([], 0)] +[visit_exp []] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyn4{list#83 : list}(`%%`_notation4{list#83}([], 0)) = 0 +[check_dims] list#95 +[visit_exp `%%`_notation4{list#95}([`L`_L], 0)] +[visit_exp list#95] +[visit_id list#95] +[visit_exp ([`L`_L], 0)] +[visit_exp [`L`_L]] +[visit_exp `L`_L] +[visit_exp ()] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyn4{list#95 : list}(`%%`_notation4{list#95}([`L`_L], 0)) = 0 +[check_dims] list#107 +[visit_exp `%%`_notation4{list#107}([`L`_L `L`_L `L`_L], 0)] +[visit_exp list#107] +[visit_id list#107] +[visit_exp ([`L`_L `L`_L `L`_L], 0)] +[visit_exp [`L`_L `L`_L `L`_L]] +[visit_exp `L`_L] +[visit_exp ()] +[visit_exp `L`_L] +[visit_exp ()] +[visit_exp `L`_L] +[visit_exp ()] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyn4{list#107 : list}(`%%`_notation4{list#107}([`L`_L `L`_L `L`_L], 0)) = 0 +[check_dims] notation5 +DecD testemptyn5(notation5 : notation5) : nat +[visit_id notation5] not free +[check_dims] L*#25 +[visit_exp `%%`_notation5{`L*#25`}([], 0)] +[visit_exp `L*#25`] +[visit_id L*#25] +[visit_exp ([], 0)] +[visit_exp []] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyn5{`L*#25` : L*}(`%%`_notation5{`L*#25`}([], 0)) = 0 +[check_dims] L*#31 +[visit_exp `%%`_notation5{`L*#31`}([], 0)] +[visit_exp `L*#31`] +[visit_id L*#31] +[visit_exp ([], 0)] +[visit_exp []] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyn5{`L*#31` : L*}(`%%`_notation5{`L*#31`}([], 0)) = 0 +[check_dims] L*#45 +[visit_exp `%%`_notation5{`L*#45`}([`L`_L], 0)] +[visit_exp `L*#45`] +[visit_id L*#45] +[visit_exp ([`L`_L], 0)] +[visit_exp [`L`_L]] +[visit_exp `L`_L] +[visit_exp ()] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyn5{`L*#45` : L*}(`%%`_notation5{`L*#45`}([`L`_L], 0)) = 0 +[check_dims] L*#57 +[visit_exp `%%`_notation5{`L*#57`}([`L`_L `L`_L `L`_L], 0)] +[visit_exp `L*#57`] +[visit_id L*#57] +[visit_exp ([`L`_L `L`_L `L`_L], 0)] +[visit_exp [`L`_L `L`_L `L`_L]] +[visit_exp `L`_L] +[visit_exp ()] +[visit_exp `L`_L] +[visit_exp ()] +[visit_exp `L`_L] +[visit_exp ()] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyn5{`L*#57` : L*}(`%%`_notation5{`L*#57`}([`L`_L `L`_L `L`_L], 0)) = 0 +[check_dims] L*#69 +[visit_exp `%%`_notation5{`L*#69`}([], 0)] +[visit_exp `L*#69`] +[visit_id L*#69] +[visit_exp ([], 0)] +[visit_exp []] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyn5{`L*#69` : L*}(`%%`_notation5{`L*#69`}([], 0)) = 0 +[check_dims] L*#81 +[visit_exp `%%`_notation5{`L*#81`}([`L`_L], 0)] +[visit_exp `L*#81`] +[visit_id L*#81] +[visit_exp ([`L`_L], 0)] +[visit_exp [`L`_L]] +[visit_exp `L`_L] +[visit_exp ()] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyn5{`L*#81` : L*}(`%%`_notation5{`L*#81`}([`L`_L], 0)) = 0 +[check_dims] L*#93 +[visit_exp `%%`_notation5{`L*#93`}([`L`_L `L`_L `L`_L], 0)] +[visit_exp `L*#93`] +[visit_id L*#93] +[visit_exp ([`L`_L `L`_L `L`_L], 0)] +[visit_exp [`L`_L `L`_L `L`_L]] +[visit_exp `L`_L] +[visit_exp ()] +[visit_exp `L`_L] +[visit_exp ()] +[visit_exp `L`_L] +[visit_exp ()] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyn5{`L*#93` : L*}(`%%`_notation5{`L*#93`}([`L`_L `L`_L `L`_L], 0)) = 0 +[check_dims] notation6 +DecD testemptyn6(notation6 : notation6) : nat +[visit_id notation6] not free +[check_dims] +[visit_exp `%%`_notation6([], 0)] +[visit_exp ([], 0)] +[visit_exp []] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyn6(`%%`_notation6([], 0)) = 0 +[check_dims] +[visit_exp `%%`_notation6([], 0)] +[visit_exp ([], 0)] +[visit_exp []] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyn6(`%%`_notation6([], 0)) = 0 +[check_dims] +[visit_exp `%%`_notation6([""], 0)] +[visit_exp ([""], 0)] +[visit_exp [""]] +[visit_exp ""] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyn6(`%%`_notation6([""], 0)) = 0 +[check_dims] +[visit_exp `%%`_notation6(["" "" ""], 0)] +[visit_exp (["" "" ""], 0)] +[visit_exp ["" "" ""]] +[visit_exp ""] +[visit_exp ""] +[visit_exp ""] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyn6(`%%`_notation6(["" "" ""], 0)) = 0 +[check_dims] +[visit_exp `%%`_notation6([], 0)] +[visit_exp ([], 0)] +[visit_exp []] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyn6(`%%`_notation6([], 0)) = 0 +[check_dims] +[visit_exp `%%`_notation6([""], 0)] +[visit_exp ([""], 0)] +[visit_exp [""]] +[visit_exp ""] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyn6(`%%`_notation6([""], 0)) = 0 +[check_dims] +[visit_exp `%%`_notation6(["" "" ""], 0)] +[visit_exp (["" "" ""], 0)] +[visit_exp ["" "" ""]] +[visit_exp ""] +[visit_exp ""] +[visit_exp ""] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyn6(`%%`_notation6(["" "" ""], 0)) = 0 +[check_dims] +[visit_exp `%%`_notation6([], 0)] +[visit_exp ([], 0)] +[visit_exp []] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyn6(`%%`_notation6([], 0)) = 0 +[check_dims] +[visit_exp `%%`_notation6([""], 0)] +[visit_exp ([""], 0)] +[visit_exp [""]] +[visit_exp ""] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyn6(`%%`_notation6([""], 0)) = 0 +[check_dims] +[visit_exp `%%`_notation6(["" "" ""], 0)] +[visit_exp (["" "" ""], 0)] +[visit_exp ["" "" ""]] +[visit_exp ""] +[visit_exp ""] +[visit_exp ""] +[visit_exp 0] +[visit_exp 0] +=> + ;; test.spectec + def $testemptyn6(`%%`_notation6(["" "" ""], 0)) = 0 +[check_dims] _ +DecD fnest(nat**) : nat* +[visit_id _] not free +[check_dims] j k l n +[visit_exp n^(i + ;; test.spectec + def $fnest{i : nat, j : nat, `k*` : nat*, `n**` : nat**, `l*` : nat*}(n^(i + ;; test.spectec + def $f{syntax X, x : X}(syntax X, x) = x +[check_dims] X Y +DecD g(def $h(syntax X, X : X) : X, syntax Y, Y : Y) : Y +[visit_id X] not free +[visit_id Y] not free +[check_dims] y +[visit_exp y] +[visit_id y] +[visit_exp $h(syntax Y, y)] +[visit_exp y] +[visit_id y] not free +=> + ;; test.spectec + def $g{def $h(syntax X, X : X) : X, syntax Y, y : Y}(def $h, syntax Y, y) = $h(syntax Y, y) +[check_dims] +DecD x : nat +[check_dims] +[visit_exp ($g(def $f, syntax nat, 1) + $g(def $f, syntax nat, 2))] +[visit_exp $g(def $f, syntax nat, 1)] +[visit_exp 1] +[visit_exp $g(def $f, syntax nat, 2)] +[visit_exp 2] +=> + ;; test.spectec + def $x = ($g(def $f, syntax nat, 1) + $g(def $f, syntax nat, 2)) +[check_dims] +[check_dims] +[check_dims] int +DecD pppp(int : int, int : int) : int +[visit_id int] not free +[visit_id int] not free +[check_dims] int +DecD pppm(int : int, int : int) : int +[visit_id int] not free +[visit_id int] not free +[check_dims] int +DecD ppmp(int : int, int : int) : int +[visit_id int] not free +[visit_id int] not free +[check_dims] int +DecD ppmm(int : int, int : int) : int +[visit_id int] not free +[visit_id int] not free +[check_dims] int +DecD pmpp(int : int, int : int) : int +[visit_id int] not free +[visit_id int] not free +[check_dims] int +DecD pmpm(int : int, int : int) : int +[visit_id int] not free +[visit_id int] not free +[check_dims] int +DecD pmmp(int : int, int : int) : int +[visit_id int] not free +[visit_id int] not free +[check_dims] int +DecD pmmm(int : int, int : int) : int +[visit_id int] not free +[visit_id int] not free +[check_dims] int +DecD mppp(int : int, int : int) : int +[visit_id int] not free +[visit_id int] not free +[check_dims] int +DecD mppm(int : int, int : int) : int +[visit_id int] not free +[visit_id int] not free +[check_dims] int +DecD mpmp(int : int, int : int) : int +[visit_id int] not free +[visit_id int] not free +[check_dims] int +DecD mpmm(int : int, int : int) : int +[visit_id int] not free +[visit_id int] not free +[check_dims] int +DecD mmpp(int : int, int : int) : int +[visit_id int] not free +[visit_id int] not free +[check_dims] int +DecD mmpm(int : int, int : int) : int +[visit_id int] not free +[visit_id int] not free +[check_dims] int +DecD mmmp(int : int, int : int) : int +[visit_id int] not free +[visit_id int] not free +[check_dims] int +DecD mmmm(int : int, int : int) : int +[visit_id int] not free +[visit_id int] not free +[check_dims] m n +[visit_exp + (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] +[visit_exp + (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] +[visit_exp (+ (n : nat <:> int) + + (m : nat <:> int))] +[visit_exp + (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp + (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] not free +=> + ;; test.spectec + def $pppp{n : nat, m : nat}(+ (n : nat <:> int), + (m : nat <:> int)) = (+ (n : nat <:> int) + + (m : nat <:> int)) +[check_dims] m n +[visit_exp - (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] +[visit_exp - (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] +[visit_exp (- (n : nat <:> int) + - (m : nat <:> int))] +[visit_exp - (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp - (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] not free +=> + ;; test.spectec + def $pppp{n : nat, m : nat}(- (n : nat <:> int), - (m : nat <:> int)) = (- (n : nat <:> int) + - (m : nat <:> int)) +[check_dims] m n +[visit_exp + (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] +[visit_exp + (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] +[visit_exp (+ (n : nat <:> int) + - (m : nat <:> int))] +[visit_exp + (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp - (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] not free +=> + ;; test.spectec + def $pppm{n : nat, m : nat}(+ (n : nat <:> int), + (m : nat <:> int)) = (+ (n : nat <:> int) + - (m : nat <:> int)) +[check_dims] m n +[visit_exp - (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] +[visit_exp - (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] +[visit_exp (- (n : nat <:> int) + + (m : nat <:> int))] +[visit_exp - (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp + (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] not free +=> + ;; test.spectec + def $pppm{n : nat, m : nat}(- (n : nat <:> int), - (m : nat <:> int)) = (- (n : nat <:> int) + + (m : nat <:> int)) +[check_dims] m n +[visit_exp + (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] +[visit_exp + (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] +[visit_exp (- (n : nat <:> int) + + (m : nat <:> int))] +[visit_exp - (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp + (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] not free +=> + ;; test.spectec + def $ppmp{n : nat, m : nat}(+ (n : nat <:> int), + (m : nat <:> int)) = (- (n : nat <:> int) + + (m : nat <:> int)) +[check_dims] m n +[visit_exp - (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] +[visit_exp - (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] +[visit_exp (+ (n : nat <:> int) + - (m : nat <:> int))] +[visit_exp + (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp - (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] not free +=> + ;; test.spectec + def $ppmp{n : nat, m : nat}(- (n : nat <:> int), - (m : nat <:> int)) = (+ (n : nat <:> int) + - (m : nat <:> int)) +[check_dims] m n +[visit_exp + (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] +[visit_exp + (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] +[visit_exp (- (n : nat <:> int) + - (m : nat <:> int))] +[visit_exp - (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp - (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] not free +=> + ;; test.spectec + def $ppmm{n : nat, m : nat}(+ (n : nat <:> int), + (m : nat <:> int)) = (- (n : nat <:> int) + - (m : nat <:> int)) +[check_dims] m n +[visit_exp - (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] +[visit_exp - (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] +[visit_exp (+ (n : nat <:> int) + + (m : nat <:> int))] +[visit_exp + (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp + (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] not free +=> + ;; test.spectec + def $ppmm{n : nat, m : nat}(- (n : nat <:> int), - (m : nat <:> int)) = (+ (n : nat <:> int) + + (m : nat <:> int)) +[check_dims] m n +[visit_exp + (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] +[visit_exp - (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] +[visit_exp (+ (n : nat <:> int) + + (m : nat <:> int))] +[visit_exp + (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp + (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] not free +=> + ;; test.spectec + def $pmpp{n : nat, m : nat}(+ (n : nat <:> int), - (m : nat <:> int)) = (+ (n : nat <:> int) + + (m : nat <:> int)) +[check_dims] m n +[visit_exp - (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] +[visit_exp + (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] +[visit_exp (- (n : nat <:> int) + - (m : nat <:> int))] +[visit_exp - (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp - (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] not free +=> + ;; test.spectec + def $pmpp{n : nat, m : nat}(- (n : nat <:> int), + (m : nat <:> int)) = (- (n : nat <:> int) + - (m : nat <:> int)) +[check_dims] m n +[visit_exp + (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] +[visit_exp - (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] +[visit_exp (+ (n : nat <:> int) + - (m : nat <:> int))] +[visit_exp + (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp - (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] not free +=> + ;; test.spectec + def $pmpm{n : nat, m : nat}(+ (n : nat <:> int), - (m : nat <:> int)) = (+ (n : nat <:> int) + - (m : nat <:> int)) +[check_dims] m n +[visit_exp - (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] +[visit_exp + (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] +[visit_exp (- (n : nat <:> int) + + (m : nat <:> int))] +[visit_exp - (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp + (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] not free +=> + ;; test.spectec + def $pmpm{n : nat, m : nat}(- (n : nat <:> int), + (m : nat <:> int)) = (- (n : nat <:> int) + + (m : nat <:> int)) +[check_dims] m n +[visit_exp + (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] +[visit_exp - (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] +[visit_exp (- (n : nat <:> int) + + (m : nat <:> int))] +[visit_exp - (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp + (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] not free +=> + ;; test.spectec + def $pmmp{n : nat, m : nat}(+ (n : nat <:> int), - (m : nat <:> int)) = (- (n : nat <:> int) + + (m : nat <:> int)) +[check_dims] m n +[visit_exp - (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] +[visit_exp + (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] +[visit_exp (+ (n : nat <:> int) + - (m : nat <:> int))] +[visit_exp + (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp - (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] not free +=> + ;; test.spectec + def $pmmp{n : nat, m : nat}(- (n : nat <:> int), + (m : nat <:> int)) = (+ (n : nat <:> int) + - (m : nat <:> int)) +[check_dims] m n +[visit_exp + (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] +[visit_exp - (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] +[visit_exp (- (n : nat <:> int) + - (m : nat <:> int))] +[visit_exp - (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp - (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] not free +=> + ;; test.spectec + def $pmmm{n : nat, m : nat}(+ (n : nat <:> int), - (m : nat <:> int)) = (- (n : nat <:> int) + - (m : nat <:> int)) +[check_dims] m n +[visit_exp - (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] +[visit_exp + (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] +[visit_exp (+ (n : nat <:> int) + + (m : nat <:> int))] +[visit_exp + (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp + (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] not free +=> + ;; test.spectec + def $pmmm{n : nat, m : nat}(- (n : nat <:> int), + (m : nat <:> int)) = (+ (n : nat <:> int) + + (m : nat <:> int)) +[check_dims] m n +[visit_exp - (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] +[visit_exp + (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] +[visit_exp (+ (n : nat <:> int) + + (m : nat <:> int))] +[visit_exp + (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp + (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] not free +=> + ;; test.spectec + def $mppp{n : nat, m : nat}(- (n : nat <:> int), + (m : nat <:> int)) = (+ (n : nat <:> int) + + (m : nat <:> int)) +[check_dims] m n +[visit_exp + (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] +[visit_exp - (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] +[visit_exp (- (n : nat <:> int) + - (m : nat <:> int))] +[visit_exp - (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp - (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] not free +=> + ;; test.spectec + def $mppp{n : nat, m : nat}(+ (n : nat <:> int), - (m : nat <:> int)) = (- (n : nat <:> int) + - (m : nat <:> int)) +[check_dims] m n +[visit_exp - (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] +[visit_exp + (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] +[visit_exp (+ (n : nat <:> int) + - (m : nat <:> int))] +[visit_exp + (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp - (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] not free +=> + ;; test.spectec + def $mppm{n : nat, m : nat}(- (n : nat <:> int), + (m : nat <:> int)) = (+ (n : nat <:> int) + - (m : nat <:> int)) +[check_dims] m n +[visit_exp + (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] +[visit_exp - (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] +[visit_exp (- (n : nat <:> int) + + (m : nat <:> int))] +[visit_exp - (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp + (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] not free +=> + ;; test.spectec + def $mppm{n : nat, m : nat}(+ (n : nat <:> int), - (m : nat <:> int)) = (- (n : nat <:> int) + + (m : nat <:> int)) +[check_dims] m n +[visit_exp - (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] +[visit_exp + (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] +[visit_exp (- (n : nat <:> int) + + (m : nat <:> int))] +[visit_exp - (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp + (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] not free +=> + ;; test.spectec + def $mpmp{n : nat, m : nat}(- (n : nat <:> int), + (m : nat <:> int)) = (- (n : nat <:> int) + + (m : nat <:> int)) +[check_dims] m n +[visit_exp + (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] +[visit_exp - (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] +[visit_exp (+ (n : nat <:> int) + - (m : nat <:> int))] +[visit_exp + (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp - (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] not free +=> + ;; test.spectec + def $mpmp{n : nat, m : nat}(+ (n : nat <:> int), - (m : nat <:> int)) = (+ (n : nat <:> int) + - (m : nat <:> int)) +[check_dims] m n +[visit_exp - (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] +[visit_exp + (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] +[visit_exp (- (n : nat <:> int) + - (m : nat <:> int))] +[visit_exp - (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp - (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] not free +=> + ;; test.spectec + def $mpmm{n : nat, m : nat}(- (n : nat <:> int), + (m : nat <:> int)) = (- (n : nat <:> int) + - (m : nat <:> int)) +[check_dims] m n +[visit_exp + (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] +[visit_exp - (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] +[visit_exp (+ (n : nat <:> int) + + (m : nat <:> int))] +[visit_exp + (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp + (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] not free +=> + ;; test.spectec + def $mpmm{n : nat, m : nat}(+ (n : nat <:> int), - (m : nat <:> int)) = (+ (n : nat <:> int) + + (m : nat <:> int)) +[check_dims] m n +[visit_exp - (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] +[visit_exp - (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] +[visit_exp (+ (n : nat <:> int) + + (m : nat <:> int))] +[visit_exp + (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp + (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] not free +=> + ;; test.spectec + def $mmpp{n : nat, m : nat}(- (n : nat <:> int), - (m : nat <:> int)) = (+ (n : nat <:> int) + + (m : nat <:> int)) +[check_dims] m n +[visit_exp + (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] +[visit_exp + (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] +[visit_exp (- (n : nat <:> int) + - (m : nat <:> int))] +[visit_exp - (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp - (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] not free +=> + ;; test.spectec + def $mmpp{n : nat, m : nat}(+ (n : nat <:> int), + (m : nat <:> int)) = (- (n : nat <:> int) + - (m : nat <:> int)) +[check_dims] m n +[visit_exp - (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] +[visit_exp - (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] +[visit_exp (+ (n : nat <:> int) + - (m : nat <:> int))] +[visit_exp + (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp - (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] not free +=> + ;; test.spectec + def $mmpm{n : nat, m : nat}(- (n : nat <:> int), - (m : nat <:> int)) = (+ (n : nat <:> int) + - (m : nat <:> int)) +[check_dims] m n +[visit_exp + (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] +[visit_exp + (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] +[visit_exp (- (n : nat <:> int) + + (m : nat <:> int))] +[visit_exp - (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp + (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] not free +=> + ;; test.spectec + def $mmpm{n : nat, m : nat}(+ (n : nat <:> int), + (m : nat <:> int)) = (- (n : nat <:> int) + + (m : nat <:> int)) +[check_dims] m n +[visit_exp - (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] +[visit_exp - (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] +[visit_exp (- (n : nat <:> int) + + (m : nat <:> int))] +[visit_exp - (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp + (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] not free +=> + ;; test.spectec + def $mmmp{n : nat, m : nat}(- (n : nat <:> int), - (m : nat <:> int)) = (- (n : nat <:> int) + + (m : nat <:> int)) +[check_dims] m n +[visit_exp + (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] +[visit_exp + (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] +[visit_exp (+ (n : nat <:> int) + - (m : nat <:> int))] +[visit_exp + (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp - (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] not free +=> + ;; test.spectec + def $mmmp{n : nat, m : nat}(+ (n : nat <:> int), + (m : nat <:> int)) = (+ (n : nat <:> int) + - (m : nat <:> int)) +[check_dims] m n +[visit_exp - (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] +[visit_exp - (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] +[visit_exp (- (n : nat <:> int) + - (m : nat <:> int))] +[visit_exp - (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp - (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] not free +=> + ;; test.spectec + def $mmmm{n : nat, m : nat}(- (n : nat <:> int), - (m : nat <:> int)) = (- (n : nat <:> int) + - (m : nat <:> int)) +[check_dims] m n +[visit_exp + (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] +[visit_exp + (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] +[visit_exp (+ (n : nat <:> int) + + (m : nat <:> int))] +[visit_exp + (n : nat <:> int)] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp + (m : nat <:> int)] +[visit_exp (m : nat <:> int)] +[visit_exp m] +[visit_id m] not free +=> + ;; test.spectec + def $mmmm{n : nat, m : nat}(+ (n : nat <:> int), + (m : nat <:> int)) = (+ (n : nat <:> int) + + (m : nat <:> int)) +[check_dims] int +[visit_id int] not free +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_exp + (1 : nat <:> int)] +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_exp + (7 : nat <:> int)] +[visit_exp (7 : nat <:> int)] +[visit_exp 7] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_exp - (1 : nat <:> int)] +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_exp - (7 : nat <:> int)] +[visit_exp (7 : nat <:> int)] +[visit_exp 7] +[check_dims] int_1 int_2 val +DecD eq(int_1 : int, int_2 : int, val : val(int_1)) : val(int_2) +[visit_id int_1] not free +[visit_id int_2] not free +[visit_id val] not free +[visit_exp int_1] +[visit_id int_1] not free +[visit_exp int_2] +[visit_id int_2] not free +[check_dims] x +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +=> + ;; test.spectec + def $eq{x : val((1 : nat <:> int))}((1 : nat <:> int), (1 : nat <:> int), x) = x +[check_dims] x +[visit_exp $pppp((3 : nat <:> int), (4 : nat <:> int))] +[visit_exp (3 : nat <:> int)] +[visit_exp 3] +[visit_exp (4 : nat <:> int)] +[visit_exp 4] +[visit_exp (7 : nat <:> int)] +[visit_exp 7] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +=> + ;; test.spectec + def $eq{x : val($pppp((3 : nat <:> int), (4 : nat <:> int)))}($pppp((3 : nat <:> int), (4 : nat <:> int)), (7 : nat <:> int), x) = x +[check_dims] x +[visit_exp $pppp(- (3 : nat <:> int), - (4 : nat <:> int))] +[visit_exp - (3 : nat <:> int)] +[visit_exp (3 : nat <:> int)] +[visit_exp 3] +[visit_exp - (4 : nat <:> int)] +[visit_exp (4 : nat <:> int)] +[visit_exp 4] +[visit_exp - (7 : nat <:> int)] +[visit_exp (7 : nat <:> int)] +[visit_exp 7] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +=> + ;; test.spectec + def $eq{x : val($pppp(- (3 : nat <:> int), - (4 : nat <:> int)))}($pppp(- (3 : nat <:> int), - (4 : nat <:> int)), - (7 : nat <:> int), x) = x +[check_dims] x +[visit_exp $pppm((3 : nat <:> int), (4 : nat <:> int))] +[visit_exp (3 : nat <:> int)] +[visit_exp 3] +[visit_exp (4 : nat <:> int)] +[visit_exp 4] +[visit_exp - (1 : nat <:> int)] +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +=> + ;; test.spectec + def $eq{x : val($pppm((3 : nat <:> int), (4 : nat <:> int)))}($pppm((3 : nat <:> int), (4 : nat <:> int)), - (1 : nat <:> int), x) = x +[check_dims] x +[visit_exp $pppm(- (3 : nat <:> int), - (4 : nat <:> int))] +[visit_exp - (3 : nat <:> int)] +[visit_exp (3 : nat <:> int)] +[visit_exp 3] +[visit_exp - (4 : nat <:> int)] +[visit_exp (4 : nat <:> int)] +[visit_exp 4] +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +=> + ;; test.spectec + def $eq{x : val($pppm(- (3 : nat <:> int), - (4 : nat <:> int)))}($pppm(- (3 : nat <:> int), - (4 : nat <:> int)), (1 : nat <:> int), x) = x +[check_dims] x +[visit_exp $ppmp((3 : nat <:> int), (4 : nat <:> int))] +[visit_exp (3 : nat <:> int)] +[visit_exp 3] +[visit_exp (4 : nat <:> int)] +[visit_exp 4] +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +=> + ;; test.spectec + def $eq{x : val($ppmp((3 : nat <:> int), (4 : nat <:> int)))}($ppmp((3 : nat <:> int), (4 : nat <:> int)), (1 : nat <:> int), x) = x +[check_dims] x +[visit_exp $ppmp(- (3 : nat <:> int), - (4 : nat <:> int))] +[visit_exp - (3 : nat <:> int)] +[visit_exp (3 : nat <:> int)] +[visit_exp 3] +[visit_exp - (4 : nat <:> int)] +[visit_exp (4 : nat <:> int)] +[visit_exp 4] +[visit_exp - (1 : nat <:> int)] +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +=> + ;; test.spectec + def $eq{x : val($ppmp(- (3 : nat <:> int), - (4 : nat <:> int)))}($ppmp(- (3 : nat <:> int), - (4 : nat <:> int)), - (1 : nat <:> int), x) = x +[check_dims] x +[visit_exp $ppmm((3 : nat <:> int), (4 : nat <:> int))] +[visit_exp (3 : nat <:> int)] +[visit_exp 3] +[visit_exp (4 : nat <:> int)] +[visit_exp 4] +[visit_exp - (7 : nat <:> int)] +[visit_exp (7 : nat <:> int)] +[visit_exp 7] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +=> + ;; test.spectec + def $eq{x : val($ppmm((3 : nat <:> int), (4 : nat <:> int)))}($ppmm((3 : nat <:> int), (4 : nat <:> int)), - (7 : nat <:> int), x) = x +[check_dims] x +[visit_exp $ppmm(- (3 : nat <:> int), - (4 : nat <:> int))] +[visit_exp - (3 : nat <:> int)] +[visit_exp (3 : nat <:> int)] +[visit_exp 3] +[visit_exp - (4 : nat <:> int)] +[visit_exp (4 : nat <:> int)] +[visit_exp 4] +[visit_exp (7 : nat <:> int)] +[visit_exp 7] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +=> + ;; test.spectec + def $eq{x : val($ppmm(- (3 : nat <:> int), - (4 : nat <:> int)))}($ppmm(- (3 : nat <:> int), - (4 : nat <:> int)), (7 : nat <:> int), x) = x +[check_dims] x +[visit_exp $pmpp((3 : nat <:> int), - (4 : nat <:> int))] +[visit_exp (3 : nat <:> int)] +[visit_exp 3] +[visit_exp - (4 : nat <:> int)] +[visit_exp (4 : nat <:> int)] +[visit_exp 4] +[visit_exp (7 : nat <:> int)] +[visit_exp 7] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +=> + ;; test.spectec + def $eq{x : val($pmpp((3 : nat <:> int), - (4 : nat <:> int)))}($pmpp((3 : nat <:> int), - (4 : nat <:> int)), (7 : nat <:> int), x) = x +[check_dims] x +[visit_exp $pmpp(- (3 : nat <:> int), (4 : nat <:> int))] +[visit_exp - (3 : nat <:> int)] +[visit_exp (3 : nat <:> int)] +[visit_exp 3] +[visit_exp (4 : nat <:> int)] +[visit_exp 4] +[visit_exp - (7 : nat <:> int)] +[visit_exp (7 : nat <:> int)] +[visit_exp 7] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +=> + ;; test.spectec + def $eq{x : val($pmpp(- (3 : nat <:> int), (4 : nat <:> int)))}($pmpp(- (3 : nat <:> int), (4 : nat <:> int)), - (7 : nat <:> int), x) = x +[check_dims] x +[visit_exp $pmpm((3 : nat <:> int), - (4 : nat <:> int))] +[visit_exp (3 : nat <:> int)] +[visit_exp 3] +[visit_exp - (4 : nat <:> int)] +[visit_exp (4 : nat <:> int)] +[visit_exp 4] +[visit_exp - (1 : nat <:> int)] +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +=> + ;; test.spectec + def $eq{x : val($pmpm((3 : nat <:> int), - (4 : nat <:> int)))}($pmpm((3 : nat <:> int), - (4 : nat <:> int)), - (1 : nat <:> int), x) = x +[check_dims] x +[visit_exp $pmpm(- (3 : nat <:> int), (4 : nat <:> int))] +[visit_exp - (3 : nat <:> int)] +[visit_exp (3 : nat <:> int)] +[visit_exp 3] +[visit_exp (4 : nat <:> int)] +[visit_exp 4] +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +=> + ;; test.spectec + def $eq{x : val($pmpm(- (3 : nat <:> int), (4 : nat <:> int)))}($pmpm(- (3 : nat <:> int), (4 : nat <:> int)), (1 : nat <:> int), x) = x +[check_dims] x +[visit_exp $pmmp((3 : nat <:> int), - (4 : nat <:> int))] +[visit_exp (3 : nat <:> int)] +[visit_exp 3] +[visit_exp - (4 : nat <:> int)] +[visit_exp (4 : nat <:> int)] +[visit_exp 4] +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +=> + ;; test.spectec + def $eq{x : val($pmmp((3 : nat <:> int), - (4 : nat <:> int)))}($pmmp((3 : nat <:> int), - (4 : nat <:> int)), (1 : nat <:> int), x) = x +[check_dims] x +[visit_exp $pmmp(- (3 : nat <:> int), (4 : nat <:> int))] +[visit_exp - (3 : nat <:> int)] +[visit_exp (3 : nat <:> int)] +[visit_exp 3] +[visit_exp (4 : nat <:> int)] +[visit_exp 4] +[visit_exp - (1 : nat <:> int)] +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +=> + ;; test.spectec + def $eq{x : val($pmmp(- (3 : nat <:> int), (4 : nat <:> int)))}($pmmp(- (3 : nat <:> int), (4 : nat <:> int)), - (1 : nat <:> int), x) = x +[check_dims] x +[visit_exp $pmmm((3 : nat <:> int), - (4 : nat <:> int))] +[visit_exp (3 : nat <:> int)] +[visit_exp 3] +[visit_exp - (4 : nat <:> int)] +[visit_exp (4 : nat <:> int)] +[visit_exp 4] +[visit_exp - (7 : nat <:> int)] +[visit_exp (7 : nat <:> int)] +[visit_exp 7] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +=> + ;; test.spectec + def $eq{x : val($pmmm((3 : nat <:> int), - (4 : nat <:> int)))}($pmmm((3 : nat <:> int), - (4 : nat <:> int)), - (7 : nat <:> int), x) = x +[check_dims] x +[visit_exp $pmmm(- (3 : nat <:> int), (4 : nat <:> int))] +[visit_exp - (3 : nat <:> int)] +[visit_exp (3 : nat <:> int)] +[visit_exp 3] +[visit_exp (4 : nat <:> int)] +[visit_exp 4] +[visit_exp (7 : nat <:> int)] +[visit_exp 7] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +=> + ;; test.spectec + def $eq{x : val($pmmm(- (3 : nat <:> int), (4 : nat <:> int)))}($pmmm(- (3 : nat <:> int), (4 : nat <:> int)), (7 : nat <:> int), x) = x +[check_dims] x +[visit_exp $mppp((3 : nat <:> int), - (4 : nat <:> int))] +[visit_exp (3 : nat <:> int)] +[visit_exp 3] +[visit_exp - (4 : nat <:> int)] +[visit_exp (4 : nat <:> int)] +[visit_exp 4] +[visit_exp - (7 : nat <:> int)] +[visit_exp (7 : nat <:> int)] +[visit_exp 7] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +=> + ;; test.spectec + def $eq{x : val($mppp((3 : nat <:> int), - (4 : nat <:> int)))}($mppp((3 : nat <:> int), - (4 : nat <:> int)), - (7 : nat <:> int), x) = x +[check_dims] x +[visit_exp $mppp(- (3 : nat <:> int), (4 : nat <:> int))] +[visit_exp - (3 : nat <:> int)] +[visit_exp (3 : nat <:> int)] +[visit_exp 3] +[visit_exp (4 : nat <:> int)] +[visit_exp 4] +[visit_exp (7 : nat <:> int)] +[visit_exp 7] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +=> + ;; test.spectec + def $eq{x : val($mppp(- (3 : nat <:> int), (4 : nat <:> int)))}($mppp(- (3 : nat <:> int), (4 : nat <:> int)), (7 : nat <:> int), x) = x +[check_dims] x +[visit_exp $mppm((3 : nat <:> int), - (4 : nat <:> int))] +[visit_exp (3 : nat <:> int)] +[visit_exp 3] +[visit_exp - (4 : nat <:> int)] +[visit_exp (4 : nat <:> int)] +[visit_exp 4] +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +=> + ;; test.spectec + def $eq{x : val($mppm((3 : nat <:> int), - (4 : nat <:> int)))}($mppm((3 : nat <:> int), - (4 : nat <:> int)), (1 : nat <:> int), x) = x +[check_dims] x +[visit_exp $mppm(- (3 : nat <:> int), (4 : nat <:> int))] +[visit_exp - (3 : nat <:> int)] +[visit_exp (3 : nat <:> int)] +[visit_exp 3] +[visit_exp (4 : nat <:> int)] +[visit_exp 4] +[visit_exp - (1 : nat <:> int)] +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +=> + ;; test.spectec + def $eq{x : val($mppm(- (3 : nat <:> int), (4 : nat <:> int)))}($mppm(- (3 : nat <:> int), (4 : nat <:> int)), - (1 : nat <:> int), x) = x +[check_dims] x +[visit_exp $mpmp((3 : nat <:> int), - (4 : nat <:> int))] +[visit_exp (3 : nat <:> int)] +[visit_exp 3] +[visit_exp - (4 : nat <:> int)] +[visit_exp (4 : nat <:> int)] +[visit_exp 4] +[visit_exp - (1 : nat <:> int)] +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +=> + ;; test.spectec + def $eq{x : val($mpmp((3 : nat <:> int), - (4 : nat <:> int)))}($mpmp((3 : nat <:> int), - (4 : nat <:> int)), - (1 : nat <:> int), x) = x +[check_dims] x +[visit_exp $mpmp(- (3 : nat <:> int), (4 : nat <:> int))] +[visit_exp - (3 : nat <:> int)] +[visit_exp (3 : nat <:> int)] +[visit_exp 3] +[visit_exp (4 : nat <:> int)] +[visit_exp 4] +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +=> + ;; test.spectec + def $eq{x : val($mpmp(- (3 : nat <:> int), (4 : nat <:> int)))}($mpmp(- (3 : nat <:> int), (4 : nat <:> int)), (1 : nat <:> int), x) = x +[check_dims] x +[visit_exp $mpmm((3 : nat <:> int), - (4 : nat <:> int))] +[visit_exp (3 : nat <:> int)] +[visit_exp 3] +[visit_exp - (4 : nat <:> int)] +[visit_exp (4 : nat <:> int)] +[visit_exp 4] +[visit_exp (7 : nat <:> int)] +[visit_exp 7] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +=> + ;; test.spectec + def $eq{x : val($mpmm((3 : nat <:> int), - (4 : nat <:> int)))}($mpmm((3 : nat <:> int), - (4 : nat <:> int)), (7 : nat <:> int), x) = x +[check_dims] x +[visit_exp $mpmm(- (3 : nat <:> int), (4 : nat <:> int))] +[visit_exp - (3 : nat <:> int)] +[visit_exp (3 : nat <:> int)] +[visit_exp 3] +[visit_exp (4 : nat <:> int)] +[visit_exp 4] +[visit_exp - (7 : nat <:> int)] +[visit_exp (7 : nat <:> int)] +[visit_exp 7] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +=> + ;; test.spectec + def $eq{x : val($mpmm(- (3 : nat <:> int), (4 : nat <:> int)))}($mpmm(- (3 : nat <:> int), (4 : nat <:> int)), - (7 : nat <:> int), x) = x +[check_dims] x +[visit_exp $mmpp((3 : nat <:> int), (4 : nat <:> int))] +[visit_exp (3 : nat <:> int)] +[visit_exp 3] +[visit_exp (4 : nat <:> int)] +[visit_exp 4] +[visit_exp - (7 : nat <:> int)] +[visit_exp (7 : nat <:> int)] +[visit_exp 7] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +=> + ;; test.spectec + def $eq{x : val($mmpp((3 : nat <:> int), (4 : nat <:> int)))}($mmpp((3 : nat <:> int), (4 : nat <:> int)), - (7 : nat <:> int), x) = x +[check_dims] x +[visit_exp $mmpp(- (3 : nat <:> int), - (4 : nat <:> int))] +[visit_exp - (3 : nat <:> int)] +[visit_exp (3 : nat <:> int)] +[visit_exp 3] +[visit_exp - (4 : nat <:> int)] +[visit_exp (4 : nat <:> int)] +[visit_exp 4] +[visit_exp (7 : nat <:> int)] +[visit_exp 7] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +=> + ;; test.spectec + def $eq{x : val($mmpp(- (3 : nat <:> int), - (4 : nat <:> int)))}($mmpp(- (3 : nat <:> int), - (4 : nat <:> int)), (7 : nat <:> int), x) = x +[check_dims] x +[visit_exp $mmpm((3 : nat <:> int), (4 : nat <:> int))] +[visit_exp (3 : nat <:> int)] +[visit_exp 3] +[visit_exp (4 : nat <:> int)] +[visit_exp 4] +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +=> + ;; test.spectec + def $eq{x : val($mmpm((3 : nat <:> int), (4 : nat <:> int)))}($mmpm((3 : nat <:> int), (4 : nat <:> int)), (1 : nat <:> int), x) = x +[check_dims] x +[visit_exp $mmpm(- (3 : nat <:> int), - (4 : nat <:> int))] +[visit_exp - (3 : nat <:> int)] +[visit_exp (3 : nat <:> int)] +[visit_exp 3] +[visit_exp - (4 : nat <:> int)] +[visit_exp (4 : nat <:> int)] +[visit_exp 4] +[visit_exp - (1 : nat <:> int)] +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +=> + ;; test.spectec + def $eq{x : val($mmpm(- (3 : nat <:> int), - (4 : nat <:> int)))}($mmpm(- (3 : nat <:> int), - (4 : nat <:> int)), - (1 : nat <:> int), x) = x +[check_dims] x +[visit_exp $mmmp((3 : nat <:> int), (4 : nat <:> int))] +[visit_exp (3 : nat <:> int)] +[visit_exp 3] +[visit_exp (4 : nat <:> int)] +[visit_exp 4] +[visit_exp - (1 : nat <:> int)] +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +=> + ;; test.spectec + def $eq{x : val($mmmp((3 : nat <:> int), (4 : nat <:> int)))}($mmmp((3 : nat <:> int), (4 : nat <:> int)), - (1 : nat <:> int), x) = x +[check_dims] x +[visit_exp $mmmp(- (3 : nat <:> int), - (4 : nat <:> int))] +[visit_exp - (3 : nat <:> int)] +[visit_exp (3 : nat <:> int)] +[visit_exp 3] +[visit_exp - (4 : nat <:> int)] +[visit_exp (4 : nat <:> int)] +[visit_exp 4] +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +=> + ;; test.spectec + def $eq{x : val($mmmp(- (3 : nat <:> int), - (4 : nat <:> int)))}($mmmp(- (3 : nat <:> int), - (4 : nat <:> int)), (1 : nat <:> int), x) = x +[check_dims] x +[visit_exp $mmmm((3 : nat <:> int), (4 : nat <:> int))] +[visit_exp (3 : nat <:> int)] +[visit_exp 3] +[visit_exp (4 : nat <:> int)] +[visit_exp 4] +[visit_exp (7 : nat <:> int)] +[visit_exp 7] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +=> + ;; test.spectec + def $eq{x : val($mmmm((3 : nat <:> int), (4 : nat <:> int)))}($mmmm((3 : nat <:> int), (4 : nat <:> int)), (7 : nat <:> int), x) = x +[check_dims] x +[visit_exp $mmmm(- (3 : nat <:> int), - (4 : nat <:> int))] +[visit_exp - (3 : nat <:> int)] +[visit_exp (3 : nat <:> int)] +[visit_exp 3] +[visit_exp - (4 : nat <:> int)] +[visit_exp (4 : nat <:> int)] +[visit_exp 4] +[visit_exp - (7 : nat <:> int)] +[visit_exp (7 : nat <:> int)] +[visit_exp 7] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +=> + ;; test.spectec + def $eq{x : val($mmmm(- (3 : nat <:> int), - (4 : nat <:> int)))}($mmmm(- (3 : nat <:> int), - (4 : nat <:> int)), - (7 : nat <:> int), x) = x +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp 0] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp 0] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp 0] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp 0] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp 0] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp 0] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp 0] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp 0] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp 0] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp 0] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp 0] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp 0] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp 0] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp 0] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp 0] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp 0] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp 0] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp 0] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp 0] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp 0] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp 0] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp 0] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp 0] +[check_dims] +dims \ = +[visit_exp 1] +[check_dims] +dims \ = +[visit_exp 2] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp 0] +[check_dims] +dims \ = +[visit_exp 1] +[check_dims] +dims \ = +[visit_exp 2] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp 0] +[check_dims] +dims \ = +[visit_exp 1] +[check_dims] +dims \ = +[visit_exp 2] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp 0] +[check_dims] +dims \ = +[visit_exp 1] +[check_dims] +dims \ = +[visit_exp 2] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp 0] +[check_dims] +dims \ = +[visit_exp 1] +[check_dims] +dims \ = +[visit_exp 2] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp 0] +[check_dims] +dims \ = +[visit_exp 1] +[check_dims] +dims \ = +[visit_exp 2] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp 0] +[check_dims] +dims \ = +[visit_exp 1] +[check_dims] +dims \ = +[visit_exp 2] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp 0] +[check_dims] +dims \ = +[visit_exp 1] +[check_dims] +dims \ = +[visit_exp 2] +ps' = +[check_dims] +[check_dims] +[visit_exp 0] +[visit_exp 255] +ps' = +[check_dims] +[check_dims] +[visit_exp 0] +[visit_exp 255] +ps' = +[check_dims] +[check_dims] +[visit_exp 1] +[visit_exp 26] +ps' = +[check_dims] +[check_dims] +[visit_exp 0] +[visit_exp 65] +ps' = +[check_dims] +[check_dims] +[visit_exp 65] +[visit_exp 255] +ps' = +[check_dims] +[check_dims] +[visit_exp 0] +[visit_exp 255] +ps' = +[check_dims] +[check_dims] +[visit_exp 0] +[visit_exp 255] +ps' = +[check_dims] +[check_dims] +[visit_exp 1] +[visit_exp 26] +ps' = +[check_dims] +[check_dims] +[visit_exp 0] +[visit_exp 127] +[check_dims] +dims \ = +[visit_exp 255] +ps' = +[check_dims] +[check_dims] +[visit_exp 0] +[visit_exp 127] +[check_dims] +dims \ = +[visit_exp 255] +ps' = +[check_dims] +[check_dims] +[visit_exp 0] +[visit_exp 5] +[check_dims] +dims \ = +[visit_exp 10] +ps' = +[check_dims] +[check_dims] +[visit_exp 0] +[visit_exp 127] +[check_dims] +dims \ = +[visit_exp 255] +ps' = +[check_dims] +[check_dims] +[visit_exp 0] +[visit_exp 127] +[check_dims] +dims \ = +[visit_exp 255] +ps' = +[check_dims] +[check_dims] +[visit_exp 0] +[visit_exp 5] +[check_dims] +dims \ = +[visit_exp 10] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp 255] +[check_dims] +[visit_exp 0] +[visit_exp 127] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp 255] +[check_dims] +[visit_exp 0] +[visit_exp 127] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp 10] +[check_dims] +[visit_exp 0] +[visit_exp 5] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp 255] +[check_dims] +[visit_exp 0] +[visit_exp 127] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp 255] +[check_dims] +[visit_exp 0] +[visit_exp 127] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp 10] +[check_dims] +[visit_exp 0] +[visit_exp 5] +ps' = +[check_dims] +[check_dims] +[visit_exp 0] +[visit_exp 31] +[check_dims] +[visit_exp 128] +[visit_exp 143] +ps' = +[check_dims] +[check_dims] +[visit_exp 0] +[visit_exp 31] +[check_dims] +[visit_exp 128] +[visit_exp 143] +ps' = +[check_dims] +[check_dims] +[visit_exp 0] +[visit_exp 5] +[check_dims] +[visit_exp 0] +[visit_exp 5] +ps' = +[check_dims] +[check_dims] +[visit_exp 0] +[visit_exp 31] +[check_dims] +[visit_exp 128] +[visit_exp 143] +ps' = +[check_dims] +[check_dims] +[visit_exp 0] +[visit_exp 31] +[check_dims] +[visit_exp 128] +[visit_exp 143] +ps' = +[check_dims] +[check_dims] +[visit_exp 0] +[visit_exp 5] +[check_dims] +[visit_exp 0] +[visit_exp 5] +ps' = +[check_dims] +[check_dims] +[visit_exp 0] +[visit_exp 31] +[check_dims] +dims \ = +[visit_exp 0] +[check_dims] +[visit_exp 127] +[visit_exp 143] +ps' = +[check_dims] +[check_dims] +[visit_exp 0] +[visit_exp 31] +[check_dims] +dims \ = +[visit_exp 0] +[check_dims] +[visit_exp 90] +[visit_exp 143] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp 0] +[check_dims] +dims \ = +[visit_exp 1] +[check_dims] +[visit_exp 0] +[visit_exp 9] +[check_dims] +[visit_exp 10] +[visit_exp 35] +[check_dims] +dims \ = +[visit_exp 0] +[check_dims] +dims \ = +[visit_exp 0] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp 0] +[check_dims] +[visit_exp 0] +[visit_exp 9] +[check_dims] +[visit_exp 10] +[visit_exp 35] +[check_dims] +dims \ = +[visit_exp 0] +[check_dims] +dims \ = +[visit_exp 0] +[] nat* nat* +[] nat* nat* +[] nat* nat* +[] nat* nat* +[] nat* nat^j +[] nat** nat^k^j +[] nat* nat^k +[] nat* nat^j +[] nat* nat^j +[] nat* nat^j +[] nat** nat^k^j +[] nat* nat^k +[] nat* nat^k cat: test.tex: No such file or directory [1] ``` @@ -14,6 +3558,108021 @@ $ (../src/exe-spectec/main.exe ../../../../specification/wasm-3.0/*.spectec -v - spectec 0.5 generator == Parsing... == Elaboration... +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] nat +DecD min(nat : nat, nat : nat) : nat +[visit_id nat] not free +[visit_id nat] not free +[check_dims] i j +[visit_exp i] +[visit_id i] +[visit_exp j] +[visit_id j] +[visit_exp i] +[visit_id i] not free +[visit_exp (i <= j)] +[visit_exp i] +[visit_id i] not free +[visit_exp j] +[visit_id j] not free +=> + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec + def $min{i : nat, j : nat}(i, j) = i + -- if (i <= j) +[check_dims] i j +[visit_exp i] +[visit_id i] +[visit_exp j] +[visit_id j] +[visit_exp j] +[visit_id j] not free +=> + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec + def $min{i : nat, j : nat}(i, j) = j + -- otherwise +[check_dims] _ +DecD sum(nat*) : nat +[visit_id _] not free +[check_dims] +[visit_exp []] +[visit_exp 0] +=> + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec + def $sum([]) = 0 +[check_dims] n n' +[visit_exp [n] ++ n'*{n' <- `n'*`}] +[visit_exp [n]] +[visit_exp n] +[visit_id n] +[visit_exp n'*{n' <- `n'*`}] +[scope_enter n'] +[visit_exp n'] +[visit_id n'] not free +[visit_id n'] not free +[scope_exit n'] +[visit_exp `n'*`] +[visit_id n'*] no dims +[visit_id n'*] +[visit_exp (n + $sum(n'*{n' <- `n'*`}))] +[visit_exp n] +[visit_id n] not free +[visit_exp $sum(n'*{n' <- `n'*`})] +[visit_exp n'*{n' <- `n'*`}] +[scope_enter n'] +[visit_exp n'] +[visit_id n'] not free +[visit_id n'] not free +[scope_exit n'] +[visit_exp `n'*`] +[visit_id n'*] not free +[visit_id n'*] no dims +=> + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec + def $sum{n : n, `n'*` : n*}([n] ++ n'*{n' <- `n'*`}) = (n + $sum(n'*{n' <- `n'*`})) +[check_dims] _ +DecD prod(nat*) : nat +[visit_id _] not free +[check_dims] +[visit_exp []] +[visit_exp 1] +=> + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec + def $prod([]) = 1 +[check_dims] n n' +[visit_exp [n] ++ n'*{n' <- `n'*`}] +[visit_exp [n]] +[visit_exp n] +[visit_id n] +[visit_exp n'*{n' <- `n'*`}] +[scope_enter n'] +[visit_exp n'] +[visit_id n'] not free +[visit_id n'] not free +[scope_exit n'] +[visit_exp `n'*`] +[visit_id n'*] no dims +[visit_id n'*] +[visit_exp (n * $prod(n'*{n' <- `n'*`}))] +[visit_exp n] +[visit_id n] not free +[visit_exp $prod(n'*{n' <- `n'*`})] +[visit_exp n'*{n' <- `n'*`}] +[scope_enter n'] +[visit_exp n'] +[visit_id n'] not free +[visit_id n'] not free +[scope_exit n'] +[visit_exp `n'*`] +[visit_id n'*] not free +[visit_id n'*] no dims +=> + ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec + def $prod{n : n, `n'*` : n*}([n] ++ n'*{n' <- `n'*`}) = (n * $prod(n'*{n' <- `n'*`})) +[check_dims] X _ +DecD opt_(syntax X, X*) : X? +[visit_id _] not free +[check_dims] +[visit_exp []] +[visit_exp ?()] +=> + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $opt_{syntax X}(syntax X, []) = ?() +[check_dims] w +[visit_exp [w]] +[visit_exp w] +[visit_id w] +[visit_exp ?(w)] +[visit_exp w] +[visit_id w] not free +=> + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $opt_{syntax X, w : X}(syntax X, [w]) = ?(w) +[check_dims] X _ +DecD concat_(syntax X, X**) : X* +[visit_id _] not free +[check_dims] +[visit_exp []] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $concat_{syntax X}(syntax X, []) = [] +[check_dims] w w' +[visit_exp [w*{w <- `w*`}] ++ w'*{w' <- `w'*`}*{`w'*` <- `w'**`}] +[visit_exp [w*{w <- `w*`}]] +[visit_exp w*{w <- `w*`}] +[scope_enter w] +[visit_exp w] +[visit_id w] not free +[visit_id w] not free +[scope_exit w] +[visit_exp `w*`] +[visit_id w*] no dims +[visit_id w*] +[visit_exp w'*{w' <- `w'*`}*{`w'*` <- `w'**`}] +[scope_enter w'*] +[visit_exp w'*{w' <- `w'*`}] +[scope_enter w'] +[visit_exp w'] +[visit_id w'] not free +[visit_id w'] not free +[scope_exit w'] +[visit_exp `w'*`] +[visit_id w'*] not free +[visit_id w'*] no dims +[visit_id w'*] not free +[visit_id w'*] no dims +[scope_exit w'*] +[visit_exp `w'**`] +[visit_id w'**] no dims +[visit_id w'**] +[visit_exp w*{w <- `w*`} ++ $concat_(syntax X, w'*{w' <- `w'*`}*{`w'*` <- `w'**`})] +[visit_exp w*{w <- `w*`}] +[scope_enter w] +[visit_exp w] +[visit_id w] not free +[visit_id w] not free +[scope_exit w] +[visit_exp `w*`] +[visit_id w*] not free +[visit_id w*] no dims +[visit_exp $concat_(syntax X, w'*{w' <- `w'*`}*{`w'*` <- `w'**`})] +[visit_exp w'*{w' <- `w'*`}*{`w'*` <- `w'**`}] +[scope_enter w'*] +[visit_exp w'*{w' <- `w'*`}] +[scope_enter w'] +[visit_exp w'] +[visit_id w'] not free +[visit_id w'] not free +[scope_exit w'] +[visit_exp `w'*`] +[visit_id w'*] not free +[visit_id w'*] no dims +[visit_id w'*] not free +[visit_id w'*] no dims +[scope_exit w'*] +[visit_exp `w'**`] +[visit_id w'**] not free +[visit_id w'**] no dims +=> + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + 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'**`}) +[check_dims] X _ nat +DecD concatn_(syntax X, X**, nat : nat) : X* +[visit_id _] not free +[visit_id nat] not free +[check_dims] n +[visit_exp []] +[visit_exp n] +[visit_id n] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $concatn_{syntax X, n : n}(syntax X, [], n) = [] +[check_dims] n w w' +[visit_exp [w^n{w <- `w*`}] ++ w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}] +[visit_exp [w^n{w <- `w*`}]] +[visit_exp w^n{w <- `w*`}] +[scope_enter w] +[visit_exp w] +[visit_id w] not free +[visit_id w] not free +[scope_exit w] +[visit_exp n] +[visit_id n] +[visit_exp `w*`] +[visit_id w*] no dims +[visit_id w*] +[visit_exp w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}] +[scope_enter w'*] +[visit_exp w'^n{w' <- `w'*`}] +[scope_enter w'] +[visit_exp w'] +[visit_id w'] not free +[visit_id w'] not free +[scope_exit w'] +[visit_exp n] +[visit_id n] not free +[visit_exp `w'*`] +[visit_id w'*] not free +[visit_id w'*] no dims +[visit_id w'*] not free +[visit_id w'*] no dims +[scope_exit w'*] +[visit_exp `w'**`] +[visit_id w'**] no dims +[visit_id w'**] +[visit_exp n] +[visit_id n] not free +[visit_exp w^n{w <- `w*`} ++ $concatn_(syntax X, w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}, n)] +[visit_exp w^n{w <- `w*`}] +[scope_enter w] +[visit_exp w] +[visit_id w] not free +[visit_id w] not free +[scope_exit w] +[visit_exp n] +[visit_id n] not free +[visit_exp `w*`] +[visit_id w*] not free +[visit_id w*] no dims +[visit_exp $concatn_(syntax X, w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}, n)] +[visit_exp w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}] +[scope_enter w'*] +[visit_exp w'^n{w' <- `w'*`}] +[scope_enter w'] +[visit_exp w'] +[visit_id w'] not free +[visit_id w'] not free +[scope_exit w'] +[visit_exp n] +[visit_id n] not free +[visit_exp `w'*`] +[visit_id w'*] not free +[visit_id w'*] no dims +[visit_id w'*] not free +[visit_id w'*] no dims +[scope_exit w'*] +[visit_exp `w'**`] +[visit_id w'**] not free +[visit_id w'**] no dims +[visit_exp n] +[visit_id n] not free +=> + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $concatn_{syntax X, n : n, `w*` : X*, `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) +[check_dims] X _ +DecD concatopt_(syntax X, X?*) : X* +[visit_id _] not free +[check_dims] +[visit_exp []] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $concatopt_{syntax X}(syntax X, []) = [] +[check_dims] w w' +[visit_exp [w?{w <- `w?`}] ++ w'?{w' <- `w'?`}*{`w'?` <- `w'?*`}] +[visit_exp [w?{w <- `w?`}]] +[visit_exp w?{w <- `w?`}] +[scope_enter w] +[visit_exp w] +[visit_id w] not free +[visit_id w] not free +[scope_exit w] +[visit_exp `w?`] +[visit_id w?] no dims +[visit_id w?] +[visit_exp w'?{w' <- `w'?`}*{`w'?` <- `w'?*`}] +[scope_enter w'?] +[visit_exp w'?{w' <- `w'?`}] +[scope_enter w'] +[visit_exp w'] +[visit_id w'] not free +[visit_id w'] not free +[scope_exit w'] +[visit_exp `w'?`] +[visit_id w'?] not free +[visit_id w'?] no dims +[visit_id w'?] not free +[visit_id w'?] no dims +[scope_exit w'?] +[visit_exp `w'?*`] +[visit_id w'?*] no dims +[visit_id w'?*] +[visit_exp lift(w?{w <- `w?`}) ++ $concat_(syntax X, lift(w'?{w' <- `w'?`})*{`w'?` <- `w'?*`})] +[visit_exp lift(w?{w <- `w?`})] +[visit_exp w?{w <- `w?`}] +[scope_enter w] +[visit_exp w] +[visit_id w] not free +[visit_id w] not free +[scope_exit w] +[visit_exp `w?`] +[visit_id w?] not free +[visit_id w?] no dims +[visit_exp $concat_(syntax X, lift(w'?{w' <- `w'?`})*{`w'?` <- `w'?*`})] +[visit_exp lift(w'?{w' <- `w'?`})*{`w'?` <- `w'?*`}] +[scope_enter w'?] +[visit_exp lift(w'?{w' <- `w'?`})] +[visit_exp w'?{w' <- `w'?`}] +[scope_enter w'] +[visit_exp w'] +[visit_id w'] not free +[visit_id w'] not free +[scope_exit w'] +[visit_exp `w'?`] +[visit_id w'?] not free +[visit_id w'?] no dims +[visit_id w'?] not free +[visit_id w'?] no dims +[scope_exit w'?] +[visit_exp `w'?*`] +[visit_id w'?*] not free +[visit_id w'?*] no dims +=> + ;; ../../../../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'?*`}) +[check_dims] X _ +DecD inv_concat_(syntax X, X*) : X** +[visit_id _] not free +[check_dims] X _ nat +DecD inv_concatn_(syntax X, nat : nat, X*) : X** +[visit_id nat] not free +[visit_id _] not free +[check_dims] X _ +DecD disjoint_(syntax X, X*) : bool +[visit_id _] not free +[check_dims] +[visit_exp []] +[visit_exp true] +=> + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $disjoint_{syntax X}(syntax X, []) = true +[check_dims] w w' +[visit_exp [w] ++ w'*{w' <- `w'*`}] +[visit_exp [w]] +[visit_exp w] +[visit_id w] +[visit_exp w'*{w' <- `w'*`}] +[scope_enter w'] +[visit_exp w'] +[visit_id w'] not free +[visit_id w'] not free +[scope_exit w'] +[visit_exp `w'*`] +[visit_id w'*] no dims +[visit_id w'*] +[visit_exp (~ (w <- w'*{w' <- `w'*`}) /\ $disjoint_(syntax X, w'*{w' <- `w'*`}))] +[visit_exp ~ (w <- w'*{w' <- `w'*`})] +[visit_exp (w <- w'*{w' <- `w'*`})] +[visit_exp w] +[visit_id w] not free +[visit_exp w'*{w' <- `w'*`}] +[scope_enter w'] +[visit_exp w'] +[visit_id w'] not free +[visit_id w'] not free +[scope_exit w'] +[visit_exp `w'*`] +[visit_id w'*] not free +[visit_id w'*] no dims +[visit_exp $disjoint_(syntax X, w'*{w' <- `w'*`})] +[visit_exp w'*{w' <- `w'*`}] +[scope_enter w'] +[visit_exp w'] +[visit_id w'] not free +[visit_id w'] not free +[scope_exit w'] +[visit_exp `w'*`] +[visit_id w'*] not free +[visit_id w'*] no dims +=> + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $disjoint_{syntax X, w : X, `w'*` : X*}(syntax X, [w] ++ w'*{w' <- `w'*`}) = (~ (w <- w'*{w' <- `w'*`}) /\ $disjoint_(syntax X, w'*{w' <- `w'*`})) +[check_dims] X _ +DecD setminus_(syntax X, X*, X*) : X* +[visit_id _] not free +[visit_id _] not free +[check_dims] X _ +DecD setminus1_(syntax X, X : X, X*) : X* +[visit_id X] not free +[visit_id _] not free +[check_dims] w +[visit_exp []] +[visit_exp w*{w <- `w*`}] +[scope_enter w] +[visit_exp w] +[visit_id w] not free +[visit_id w] not free +[scope_exit w] +[visit_exp `w*`] +[visit_id w*] no dims +[visit_id w*] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $setminus_{syntax X, `w*` : X*}(syntax X, [], w*{w <- `w*`}) = [] +[check_dims] w w' w_1 +[visit_exp [w_1] ++ w'*{w' <- `w'*`}] +[visit_exp [w_1]] +[visit_exp w_1] +[visit_id w_1] +[visit_exp w'*{w' <- `w'*`}] +[scope_enter w'] +[visit_exp w'] +[visit_id w'] not free +[visit_id w'] not free +[scope_exit w'] +[visit_exp `w'*`] +[visit_id w'*] no dims +[visit_id w'*] +[visit_exp w*{w <- `w*`}] +[scope_enter w] +[visit_exp w] +[visit_id w] not free +[visit_id w] not free +[scope_exit w] +[visit_exp `w*`] +[visit_id w*] no dims +[visit_id w*] +[visit_exp $setminus1_(syntax X, w_1, w*{w <- `w*`}) ++ $setminus_(syntax X, w'*{w' <- `w'*`}, w*{w <- `w*`})] +[visit_exp $setminus1_(syntax X, w_1, w*{w <- `w*`})] +[visit_exp w_1] +[visit_id w_1] not free +[visit_exp w*{w <- `w*`}] +[scope_enter w] +[visit_exp w] +[visit_id w] not free +[visit_id w] not free +[scope_exit w] +[visit_exp `w*`] +[visit_id w*] not free +[visit_id w*] no dims +[visit_exp $setminus_(syntax X, w'*{w' <- `w'*`}, w*{w <- `w*`})] +[visit_exp w'*{w' <- `w'*`}] +[scope_enter w'] +[visit_exp w'] +[visit_id w'] not free +[visit_id w'] not free +[scope_exit w'] +[visit_exp `w'*`] +[visit_id w'*] not free +[visit_id w'*] no dims +[visit_exp w*{w <- `w*`}] +[scope_enter w] +[visit_exp w] +[visit_id w] not free +[visit_id w] not free +[scope_exit w] +[visit_exp `w*`] +[visit_id w*] not free +[visit_id w*] no dims +=> + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + 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*`}) +[check_dims] w +[visit_exp w] +[visit_id w] +[visit_exp []] +[visit_exp [w]] +[visit_exp w] +[visit_id w] not free +=> + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $setminus1_{syntax X, w : X}(syntax X, w, []) = [w] +[check_dims] w w' w_1 +[visit_exp w] +[visit_id w] +[visit_exp [w_1] ++ w'*{w' <- `w'*`}] +[visit_exp [w_1]] +[visit_exp w_1] +[visit_id w_1] +[visit_exp w'*{w' <- `w'*`}] +[scope_enter w'] +[visit_exp w'] +[visit_id w'] not free +[visit_id w'] not free +[scope_exit w'] +[visit_exp `w'*`] +[visit_id w'*] no dims +[visit_id w'*] +[visit_exp []] +[visit_exp (w = w_1)] +[visit_exp w] +[visit_id w] not free +[visit_exp w_1] +[visit_id w_1] not free +=> + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $setminus1_{syntax X, w : X, w_1 : X, `w'*` : X*}(syntax X, w, [w_1] ++ w'*{w' <- `w'*`}) = [] + -- if (w = w_1) +[check_dims] w w' w_1 +[visit_exp w] +[visit_id w] +[visit_exp [w_1] ++ w'*{w' <- `w'*`}] +[visit_exp [w_1]] +[visit_exp w_1] +[visit_id w_1] +[visit_exp w'*{w' <- `w'*`}] +[scope_enter w'] +[visit_exp w'] +[visit_id w'] not free +[visit_id w'] not free +[scope_exit w'] +[visit_exp `w'*`] +[visit_id w'*] no dims +[visit_id w'*] +[visit_exp $setminus1_(syntax X, w, w'*{w' <- `w'*`})] +[visit_exp w] +[visit_id w] not free +[visit_exp w'*{w' <- `w'*`}] +[scope_enter w'] +[visit_exp w'] +[visit_id w'] not free +[visit_id w'] not free +[scope_exit w'] +[visit_exp `w'*`] +[visit_id w'*] not free +[visit_id w'*] no dims +=> + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $setminus1_{syntax X, w : X, w_1 : X, `w'*` : X*}(syntax X, w, [w_1] ++ w'*{w' <- `w'*`}) = $setminus1_(syntax X, w, w'*{w' <- `w'*`}) + -- otherwise +[check_dims] X _ +DecD setproduct_(syntax X, X**) : X** +[visit_id _] not free +[check_dims] X _ +DecD setproduct1_(syntax X, X*, X**) : X** +[visit_id _] not free +[visit_id _] not free +[check_dims] X _ +DecD setproduct2_(syntax X, X : X, X**) : X** +[visit_id X] not free +[visit_id _] not free +[check_dims] +[visit_exp []] +[visit_exp [[]]] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $setproduct_{syntax X}(syntax X, []) = [[]] +[check_dims] w w_1 +[visit_exp [w_1*{w_1 <- `w_1*`}] ++ w*{w <- `w*`}*{`w*` <- `w**`}] +[visit_exp [w_1*{w_1 <- `w_1*`}]] +[visit_exp w_1*{w_1 <- `w_1*`}] +[scope_enter w_1] +[visit_exp w_1] +[visit_id w_1] not free +[visit_id w_1] not free +[scope_exit w_1] +[visit_exp `w_1*`] +[visit_id w_1*] no dims +[visit_id w_1*] +[visit_exp w*{w <- `w*`}*{`w*` <- `w**`}] +[scope_enter w*] +[visit_exp w*{w <- `w*`}] +[scope_enter w] +[visit_exp w] +[visit_id w] not free +[visit_id w] not free +[scope_exit w] +[visit_exp `w*`] +[visit_id w*] not free +[visit_id w*] no dims +[visit_id w*] not free +[visit_id w*] no dims +[scope_exit w*] +[visit_exp `w**`] +[visit_id w**] no dims +[visit_id w**] +[visit_exp $setproduct1_(syntax X, w_1*{w_1 <- `w_1*`}, $setproduct_(syntax X, w*{w <- `w*`}*{`w*` <- `w**`}))] +[visit_exp w_1*{w_1 <- `w_1*`}] +[scope_enter w_1] +[visit_exp w_1] +[visit_id w_1] not free +[visit_id w_1] not free +[scope_exit w_1] +[visit_exp `w_1*`] +[visit_id w_1*] not free +[visit_id w_1*] no dims +[visit_exp $setproduct_(syntax X, w*{w <- `w*`}*{`w*` <- `w**`})] +[visit_exp w*{w <- `w*`}*{`w*` <- `w**`}] +[scope_enter w*] +[visit_exp w*{w <- `w*`}] +[scope_enter w] +[visit_exp w] +[visit_id w] not free +[visit_id w] not free +[scope_exit w] +[visit_exp `w*`] +[visit_id w*] not free +[visit_id w*] no dims +[visit_id w*] not free +[visit_id w*] no dims +[scope_exit w*] +[visit_exp `w**`] +[visit_id w**] not free +[visit_id w**] no dims +=> + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + 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**`})) +[check_dims] w +[visit_exp []] +[visit_exp w*{w <- `w*`}*{`w*` <- `w**`}] +[scope_enter w*] +[visit_exp w*{w <- `w*`}] +[scope_enter w] +[visit_exp w] +[visit_id w] not free +[visit_id w] not free +[scope_exit w] +[visit_exp `w*`] +[visit_id w*] not free +[visit_id w*] no dims +[visit_id w*] not free +[visit_id w*] no dims +[scope_exit w*] +[visit_exp `w**`] +[visit_id w**] no dims +[visit_id w**] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $setproduct1_{syntax X, `w**` : X**}(syntax X, [], w*{w <- `w*`}*{`w*` <- `w**`}) = [] +[check_dims] w w' w_1 +[visit_exp [w_1] ++ w'*{w' <- `w'*`}] +[visit_exp [w_1]] +[visit_exp w_1] +[visit_id w_1] +[visit_exp w'*{w' <- `w'*`}] +[scope_enter w'] +[visit_exp w'] +[visit_id w'] not free +[visit_id w'] not free +[scope_exit w'] +[visit_exp `w'*`] +[visit_id w'*] no dims +[visit_id w'*] +[visit_exp w*{w <- `w*`}*{`w*` <- `w**`}] +[scope_enter w*] +[visit_exp w*{w <- `w*`}] +[scope_enter w] +[visit_exp w] +[visit_id w] not free +[visit_id w] not free +[scope_exit w] +[visit_exp `w*`] +[visit_id w*] not free +[visit_id w*] no dims +[visit_id w*] not free +[visit_id w*] no dims +[scope_exit w*] +[visit_exp `w**`] +[visit_id w**] no dims +[visit_id w**] +[visit_exp $setproduct2_(syntax X, w_1, w*{w <- `w*`}*{`w*` <- `w**`}) ++ $setproduct1_(syntax X, w'*{w' <- `w'*`}, w*{w <- `w*`}*{`w*` <- `w**`})] +[visit_exp $setproduct2_(syntax X, w_1, w*{w <- `w*`}*{`w*` <- `w**`})] +[visit_exp w_1] +[visit_id w_1] not free +[visit_exp w*{w <- `w*`}*{`w*` <- `w**`}] +[scope_enter w*] +[visit_exp w*{w <- `w*`}] +[scope_enter w] +[visit_exp w] +[visit_id w] not free +[visit_id w] not free +[scope_exit w] +[visit_exp `w*`] +[visit_id w*] not free +[visit_id w*] no dims +[visit_id w*] not free +[visit_id w*] no dims +[scope_exit w*] +[visit_exp `w**`] +[visit_id w**] not free +[visit_id w**] no dims +[visit_exp $setproduct1_(syntax X, w'*{w' <- `w'*`}, w*{w <- `w*`}*{`w*` <- `w**`})] +[visit_exp w'*{w' <- `w'*`}] +[scope_enter w'] +[visit_exp w'] +[visit_id w'] not free +[visit_id w'] not free +[scope_exit w'] +[visit_exp `w'*`] +[visit_id w'*] not free +[visit_id w'*] no dims +[visit_exp w*{w <- `w*`}*{`w*` <- `w**`}] +[scope_enter w*] +[visit_exp w*{w <- `w*`}] +[scope_enter w] +[visit_exp w] +[visit_id w] not free +[visit_id w] not free +[scope_exit w] +[visit_exp `w*`] +[visit_id w*] not free +[visit_id w*] no dims +[visit_id w*] not free +[visit_id w*] no dims +[scope_exit w*] +[visit_exp `w**`] +[visit_id w**] not free +[visit_id w**] no dims +=> + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + 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**`}) +[check_dims] w_1 +[visit_exp w_1] +[visit_id w_1] +[visit_exp []] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + def $setproduct2_{syntax X, w_1 : X}(syntax X, w_1, []) = [] +[check_dims] w w' w_1 +[visit_exp w_1] +[visit_id w_1] +[visit_exp [w'*{w' <- `w'*`}] ++ w*{w <- `w*`}*{`w*` <- `w**`}] +[visit_exp [w'*{w' <- `w'*`}]] +[visit_exp w'*{w' <- `w'*`}] +[scope_enter w'] +[visit_exp w'] +[visit_id w'] not free +[visit_id w'] not free +[scope_exit w'] +[visit_exp `w'*`] +[visit_id w'*] no dims +[visit_id w'*] +[visit_exp w*{w <- `w*`}*{`w*` <- `w**`}] +[scope_enter w*] +[visit_exp w*{w <- `w*`}] +[scope_enter w] +[visit_exp w] +[visit_id w] not free +[visit_id w] not free +[scope_exit w] +[visit_exp `w*`] +[visit_id w*] not free +[visit_id w*] no dims +[visit_id w*] not free +[visit_id w*] no dims +[scope_exit w*] +[visit_exp `w**`] +[visit_id w**] no dims +[visit_id w**] +[visit_exp [[w_1] ++ w'*{w' <- `w'*`}] ++ $setproduct2_(syntax X, w_1, w*{w <- `w*`}*{`w*` <- `w**`})] +[visit_exp [[w_1] ++ w'*{w' <- `w'*`}]] +[visit_exp [w_1] ++ w'*{w' <- `w'*`}] +[visit_exp [w_1]] +[visit_exp w_1] +[visit_id w_1] not free +[visit_exp w'*{w' <- `w'*`}] +[scope_enter w'] +[visit_exp w'] +[visit_id w'] not free +[visit_id w'] not free +[scope_exit w'] +[visit_exp `w'*`] +[visit_id w'*] not free +[visit_id w'*] no dims +[visit_exp $setproduct2_(syntax X, w_1, w*{w <- `w*`}*{`w*` <- `w**`})] +[visit_exp w_1] +[visit_id w_1] not free +[visit_exp w*{w <- `w*`}*{`w*` <- `w**`}] +[scope_enter w*] +[visit_exp w*{w <- `w*`}] +[scope_enter w] +[visit_exp w] +[visit_id w] not free +[visit_id w] not free +[scope_exit w] +[visit_exp `w*`] +[visit_id w*] not free +[visit_id w*] no dims +[visit_id w*] not free +[visit_id w*] no dims +[scope_exit w*] +[visit_exp `w**`] +[visit_id w**] not free +[visit_id w**] no dims +=> + ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + 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**`}) +[check_dims] +DecD ND : bool +[check_dims] +[check_dims] +[visit_exp 0] +[check_dims] +[visit_exp 1] +[check_dims] +[check_dims] +[visit_exp 0] +[visit_exp 255] +[check_dims] N +[check_dims] N +[visit_exp 0] +[visit_exp ((((2 ^ N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp (((2 ^ N) : nat <:> int) - (1 : nat <:> int))] +[visit_exp ((2 ^ N) : nat <:> int)] +[visit_exp (2 ^ N)] +[visit_exp 2] +[visit_exp N] +[visit_id N] not free +[visit_id N] no dims +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp N] +[visit_id N] +[check_dims] N +[check_dims] N +[visit_exp - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)] +[visit_exp ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)] +[visit_exp (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp 2] +[visit_exp (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp ((N : nat <:> int) - (1 : nat <:> int))] +[visit_exp (N : nat <:> int)] +[visit_exp N] +[visit_id N] not free +[visit_id N] no dims +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp - (1 : nat <:> int)] +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[check_dims] N +[visit_exp (0 : nat <:> int)] +[visit_exp 0] +[check_dims] N +[visit_exp + (1 : nat <:> int)] +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp (+ ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))] +[visit_exp + ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)] +[visit_exp ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)] +[visit_exp (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp 2] +[visit_exp (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp ((N : nat <:> int) - (1 : nat <:> int))] +[visit_exp (N : nat <:> int)] +[visit_exp N] +[visit_id N] not free +[visit_id N] no dims +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp N] +[visit_id N] +[check_dims] N +[visit_exp N] +[visit_id N] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] N +DecD signif(N : N) : nat +[visit_id N] not free +[check_dims] +[visit_exp 32] +[visit_exp 23] +=> + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $signif(32) = 23 +[check_dims] +[visit_exp 64] +[visit_exp 52] +=> + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $signif(64) = 52 +[check_dims] N +DecD expon(N : N) : nat +[visit_id N] not free +[check_dims] +[visit_exp 32] +[visit_exp 8] +=> + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $expon(32) = 8 +[check_dims] +[visit_exp 64] +[visit_exp 11] +=> + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $expon(64) = 11 +[check_dims] N +DecD M(N : N) : nat +[visit_id N] not free +[check_dims] N +[visit_exp N] +[visit_id N] +[visit_exp $signif(N)] +[visit_exp N] +[visit_id N] not free +=> + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $M{N : N}(N) = $signif(N) +[check_dims] N +DecD E(N : N) : nat +[visit_id N] not free +[check_dims] N +[visit_exp N] +[visit_id N] +[visit_exp $expon(N)] +[visit_exp N] +[visit_id N] not free +=> + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $E{N : N}(N) = $expon(N) +[check_dims] N +--- 1 --- +[check_dims] N +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id _] not free +[visit_id _] no dims +[visit_exp N] +[visit_id N] not free +[visit_id N] no dims +--- 1 --- +[check_dims] N +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id _] not free +[visit_id _] no dims +[visit_exp N] +[visit_id N] not free +[visit_id N] no dims +[visit_exp N] +[visit_id N] +[check_dims] +[check_dims] N +--- 1 --- +[check_dims] N exp m +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id m] +[visit_id exp] +[visit_exp ((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)))))] +[visit_exp (m < (2 ^ $M(N)))] +[visit_exp m] +[visit_id m] not free +[visit_exp (2 ^ $M(N))] +[visit_exp 2] +[visit_exp $M(N)] +[visit_exp N] +[visit_id N] not free +[visit_id N] no dims +[visit_exp ((((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))))] +[visit_exp (((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) <= exp)] +[visit_exp ((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))] +[visit_exp (2 : nat <:> int)] +[visit_exp 2] +[visit_exp ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)] +[visit_exp (2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp 2] +[visit_exp ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp (($E(N) : nat <:> int) - (1 : nat <:> int))] +[visit_exp ($E(N) : nat <:> int)] +[visit_exp $E(N)] +[visit_exp N] +[visit_id N] not free +[visit_id N] no dims +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp exp] +[visit_id exp] not free +[visit_exp (exp <= (((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int)))] +[visit_exp exp] +[visit_id exp] not free +[visit_exp (((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))] +[visit_exp ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)] +[visit_exp (2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp 2] +[visit_exp ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp (($E(N) : nat <:> int) - (1 : nat <:> int))] +[visit_exp ($E(N) : nat <:> int)] +[visit_exp $E(N)] +[visit_exp N] +[visit_id N] not free +[visit_id N] no dims +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +--- 1 --- +[check_dims] N exp m +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id m] +[visit_exp ((m < (2 ^ $M(N))) /\ (((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) = exp))] +[visit_exp (m < (2 ^ $M(N)))] +[visit_exp m] +[visit_id m] not free +[visit_exp (2 ^ $M(N))] +[visit_exp 2] +[visit_exp $M(N)] +[visit_exp N] +[visit_id N] not free +[visit_id N] no dims +[visit_exp (((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) = exp)] +[visit_exp ((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))] +[visit_exp (2 : nat <:> int)] +[visit_exp 2] +[visit_exp ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)] +[visit_exp (2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp 2] +[visit_exp ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp (($E(N) : nat <:> int) - (1 : nat <:> int))] +[visit_exp ($E(N) : nat <:> int)] +[visit_exp $E(N)] +[visit_exp N] +[visit_id N] not free +[visit_id N] no dims +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp exp] +[visit_id exp] +--- 1 --- +[check_dims] N +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] N m +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id m] +[visit_exp ((1 <= m) /\ (m < (2 ^ $M(N))))] +[visit_exp (1 <= m)] +[visit_exp 1] +[visit_exp m] +[visit_id m] not free +[visit_exp (m < (2 ^ $M(N)))] +[visit_exp m] +[visit_id m] not free +[visit_exp (2 ^ $M(N))] +[visit_exp 2] +[visit_exp $M(N)] +[visit_exp N] +[visit_id N] not free +[visit_id N] no dims +[visit_exp N] +[visit_id N] +[check_dims] +[check_dims] +[check_dims] N +DecD fzero(N : N) : fN(N) +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N exp#1 m#1 +[visit_exp N] +[visit_id N] +[visit_exp `POS`_fN(`SUBNORM`_fNmag{m#1, exp#1}(0))] +[visit_exp (`SUBNORM`_fNmag{m#1, exp#1}(0))] +[visit_exp `SUBNORM`_fNmag{m#1, exp#1}(0)] +[visit_exp m#1] +[visit_id m#1] +[visit_exp exp#1] +[visit_id exp#1] +[visit_exp (0)] +[visit_exp 0] +=> + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $fzero{N : N, m#1 : m, exp#1 : exp}(N) = `POS`_fN(`SUBNORM`_fNmag{m#1, exp#1}(0)) +[check_dims] N nat +DecD fnat(N : N, nat : nat) : fN(N) +[visit_id N] not free +[visit_id nat] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N exp#2 m#3 n +[visit_exp N] +[visit_id N] +[visit_exp n] +[visit_id n] +[visit_exp `POS`_fN(`NORM`_fNmag{m#3, exp#2}(n, (0 : nat <:> int)))] +[visit_exp (`NORM`_fNmag{m#3, exp#2}(n, (0 : nat <:> int)))] +[visit_exp `NORM`_fNmag{m#3, exp#2}(n, (0 : nat <:> int))] +[visit_exp m#3] +[visit_id m#3] +[visit_exp exp#2] +[visit_id exp#2] +[visit_exp (n, (0 : nat <:> int))] +[visit_exp n] +[visit_id n] not free +[visit_exp (0 : nat <:> int)] +[visit_exp 0] +=> + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $fnat{N : N, n : n, m#3 : m, exp#2 : exp}(N, n) = `POS`_fN(`NORM`_fNmag{m#3, exp#2}(n, (0 : nat <:> int))) +[check_dims] N +DecD fone(N : N) : fN(N) +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N exp#4 m#5 +[visit_exp N] +[visit_id N] +[visit_exp `POS`_fN(`NORM`_fNmag{m#5, exp#4}(1, (0 : nat <:> int)))] +[visit_exp (`NORM`_fNmag{m#5, exp#4}(1, (0 : nat <:> int)))] +[visit_exp `NORM`_fNmag{m#5, exp#4}(1, (0 : nat <:> int))] +[visit_exp m#5] +[visit_id m#5] +[visit_exp exp#4] +[visit_id exp#4] +[visit_exp (1, (0 : nat <:> int))] +[visit_exp 1] +[visit_exp (0 : nat <:> int)] +[visit_exp 0] +=> + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $fone{N : N, m#5 : m, exp#4 : exp}(N) = `POS`_fN(`NORM`_fNmag{m#5, exp#4}(1, (0 : nat <:> int))) +[check_dims] N +DecD canon_(N : N) : nat +[visit_id N] not free +[check_dims] N +[visit_exp N] +[visit_id N] +[visit_exp (2 ^ ((($signif(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp 2] +[visit_exp ((($signif(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp (($signif(N) : nat <:> int) - (1 : nat <:> int))] +[visit_exp ($signif(N) : nat <:> int)] +[visit_exp $signif(N)] +[visit_exp N] +[visit_id N] not free +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +=> + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $canon_{N : N}(N) = (2 ^ ((($signif(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) +[check_dims] N +[visit_exp N] +[visit_id N] +[check_dims] +[check_dims] +--- 1 --- +[check_dims] X +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id X*] no dims +[visit_id X*] +[visit_exp (|X*{X <- `X*`}| < (2 ^ 32))] +[visit_exp |X*{X <- `X*`}|] +[visit_exp X*{X <- `X*`}] +[scope_enter X] +[visit_exp X] +[visit_id X] not free +[visit_id X] not free +[scope_exit X] +[visit_exp `X*`] +[visit_id X*] not free +[visit_id X*] no dims +[visit_exp (2 ^ 32)] +[visit_exp 2] +[visit_exp 32] +[check_dims] +[check_dims] +[visit_exp 0] +[visit_exp 55295] +[check_dims] +[visit_exp 57344] +[visit_exp 1114111] +[check_dims] _ +DecD utf8(char*) : byte* +[visit_id _] not free +[check_dims] +--- 1 --- +[check_dims] char +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id char*] no dims +[visit_id char*] +[visit_exp (|$utf8(char*{char <- `char*`})| < (2 ^ 32))] +[visit_exp |$utf8(char*{char <- `char*`})|] +[visit_exp $utf8(char*{char <- `char*`})] +[visit_exp char*{char <- `char*`}] +[scope_enter char] +[visit_exp char] +[visit_id char] not free +[visit_id char] not free +[scope_exit char] +[visit_exp `char*`] +[visit_id char*] not free +[visit_id char*] no dims +[visit_exp (2 ^ 32)] +[visit_exp 2] +[visit_exp 32] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id funcidx] no dims +[visit_id funcidx] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id globalidx] no dims +[visit_id globalidx] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id tableidx] no dims +[visit_id tableidx] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id memidx] no dims +[visit_id memidx] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id tagidx] no dims +[visit_id tagidx] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] _ +DecD funcsxx(externidx*) : typeidx* +[visit_id _] not free +[check_dims] _ +DecD globalsxx(externidx*) : globalidx* +[visit_id _] not free +[check_dims] _ +DecD tablesxx(externidx*) : tableidx* +[visit_id _] not free +[check_dims] _ +DecD memsxx(externidx*) : memidx* +[visit_id _] not free +[check_dims] _ +DecD tagsxx(externidx*) : tagidx* +[visit_id _] not free +[check_dims] +[visit_exp []] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $funcsxx([]) = [] +[check_dims] funcidx#1 x xx +[visit_exp [`FUNC`_externidx{funcidx#1}(x)] ++ xx*{xx <- `xx*`}] +[visit_exp [`FUNC`_externidx{funcidx#1}(x)]] +[visit_exp `FUNC`_externidx{funcidx#1}(x)] +[visit_exp funcidx#1] +[visit_id funcidx#1] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp xx*{xx <- `xx*`}] +[scope_enter xx] +[visit_exp xx] +[visit_id xx] not free +[visit_id xx] not free +[scope_exit xx] +[visit_exp `xx*`] +[visit_id xx*] no dims +[visit_id xx*] +[visit_exp [x] ++ $funcsxx(xx*{xx <- `xx*`})] +[visit_exp [x]] +[visit_exp x] +[visit_id x] not free +[visit_exp $funcsxx(xx*{xx <- `xx*`})] +[visit_exp xx*{xx <- `xx*`}] +[scope_enter xx] +[visit_exp xx] +[visit_id xx] not free +[visit_id xx] not free +[scope_exit xx] +[visit_exp `xx*`] +[visit_id xx*] not free +[visit_id xx*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $funcsxx{funcidx#1 : funcidx, x : idx, `xx*` : externidx*}([`FUNC`_externidx{funcidx#1}(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $funcsxx(xx*{xx <- `xx*`}) +[check_dims] externidx xx +[visit_exp [externidx] ++ xx*{xx <- `xx*`}] +[visit_exp [externidx]] +[visit_exp externidx] +[visit_id externidx] +[visit_exp xx*{xx <- `xx*`}] +[scope_enter xx] +[visit_exp xx] +[visit_id xx] not free +[visit_id xx] not free +[scope_exit xx] +[visit_exp `xx*`] +[visit_id xx*] no dims +[visit_id xx*] +[visit_exp $funcsxx(xx*{xx <- `xx*`})] +[visit_exp xx*{xx <- `xx*`}] +[scope_enter xx] +[visit_exp xx] +[visit_id xx] not free +[visit_id xx] not free +[scope_exit xx] +[visit_exp `xx*`] +[visit_id xx*] not free +[visit_id xx*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $funcsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $funcsxx(xx*{xx <- `xx*`}) + -- otherwise +[check_dims] +[visit_exp []] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $globalsxx([]) = [] +[check_dims] globalidx#1 x xx +[visit_exp [`GLOBAL`_externidx{globalidx#1}(x)] ++ xx*{xx <- `xx*`}] +[visit_exp [`GLOBAL`_externidx{globalidx#1}(x)]] +[visit_exp `GLOBAL`_externidx{globalidx#1}(x)] +[visit_exp globalidx#1] +[visit_id globalidx#1] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp xx*{xx <- `xx*`}] +[scope_enter xx] +[visit_exp xx] +[visit_id xx] not free +[visit_id xx] not free +[scope_exit xx] +[visit_exp `xx*`] +[visit_id xx*] no dims +[visit_id xx*] +[visit_exp [x] ++ $globalsxx(xx*{xx <- `xx*`})] +[visit_exp [x]] +[visit_exp x] +[visit_id x] not free +[visit_exp $globalsxx(xx*{xx <- `xx*`})] +[visit_exp xx*{xx <- `xx*`}] +[scope_enter xx] +[visit_exp xx] +[visit_id xx] not free +[visit_id xx] not free +[scope_exit xx] +[visit_exp `xx*`] +[visit_id xx*] not free +[visit_id xx*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $globalsxx{globalidx#1 : globalidx, x : idx, `xx*` : externidx*}([`GLOBAL`_externidx{globalidx#1}(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $globalsxx(xx*{xx <- `xx*`}) +[check_dims] externidx xx +[visit_exp [externidx] ++ xx*{xx <- `xx*`}] +[visit_exp [externidx]] +[visit_exp externidx] +[visit_id externidx] +[visit_exp xx*{xx <- `xx*`}] +[scope_enter xx] +[visit_exp xx] +[visit_id xx] not free +[visit_id xx] not free +[scope_exit xx] +[visit_exp `xx*`] +[visit_id xx*] no dims +[visit_id xx*] +[visit_exp $globalsxx(xx*{xx <- `xx*`})] +[visit_exp xx*{xx <- `xx*`}] +[scope_enter xx] +[visit_exp xx] +[visit_id xx] not free +[visit_id xx] not free +[scope_exit xx] +[visit_exp `xx*`] +[visit_id xx*] not free +[visit_id xx*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $globalsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $globalsxx(xx*{xx <- `xx*`}) + -- otherwise +[check_dims] +[visit_exp []] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $tablesxx([]) = [] +[check_dims] tableidx#1 x xx +[visit_exp [`TABLE`_externidx{tableidx#1}(x)] ++ xx*{xx <- `xx*`}] +[visit_exp [`TABLE`_externidx{tableidx#1}(x)]] +[visit_exp `TABLE`_externidx{tableidx#1}(x)] +[visit_exp tableidx#1] +[visit_id tableidx#1] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp xx*{xx <- `xx*`}] +[scope_enter xx] +[visit_exp xx] +[visit_id xx] not free +[visit_id xx] not free +[scope_exit xx] +[visit_exp `xx*`] +[visit_id xx*] no dims +[visit_id xx*] +[visit_exp [x] ++ $tablesxx(xx*{xx <- `xx*`})] +[visit_exp [x]] +[visit_exp x] +[visit_id x] not free +[visit_exp $tablesxx(xx*{xx <- `xx*`})] +[visit_exp xx*{xx <- `xx*`}] +[scope_enter xx] +[visit_exp xx] +[visit_id xx] not free +[visit_id xx] not free +[scope_exit xx] +[visit_exp `xx*`] +[visit_id xx*] not free +[visit_id xx*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $tablesxx{tableidx#1 : tableidx, x : idx, `xx*` : externidx*}([`TABLE`_externidx{tableidx#1}(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $tablesxx(xx*{xx <- `xx*`}) +[check_dims] externidx xx +[visit_exp [externidx] ++ xx*{xx <- `xx*`}] +[visit_exp [externidx]] +[visit_exp externidx] +[visit_id externidx] +[visit_exp xx*{xx <- `xx*`}] +[scope_enter xx] +[visit_exp xx] +[visit_id xx] not free +[visit_id xx] not free +[scope_exit xx] +[visit_exp `xx*`] +[visit_id xx*] no dims +[visit_id xx*] +[visit_exp $tablesxx(xx*{xx <- `xx*`})] +[visit_exp xx*{xx <- `xx*`}] +[scope_enter xx] +[visit_exp xx] +[visit_id xx] not free +[visit_id xx] not free +[scope_exit xx] +[visit_exp `xx*`] +[visit_id xx*] not free +[visit_id xx*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $tablesxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $tablesxx(xx*{xx <- `xx*`}) + -- otherwise +[check_dims] +[visit_exp []] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $memsxx([]) = [] +[check_dims] memidx#1 x xx +[visit_exp [`MEM`_externidx{memidx#1}(x)] ++ xx*{xx <- `xx*`}] +[visit_exp [`MEM`_externidx{memidx#1}(x)]] +[visit_exp `MEM`_externidx{memidx#1}(x)] +[visit_exp memidx#1] +[visit_id memidx#1] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp xx*{xx <- `xx*`}] +[scope_enter xx] +[visit_exp xx] +[visit_id xx] not free +[visit_id xx] not free +[scope_exit xx] +[visit_exp `xx*`] +[visit_id xx*] no dims +[visit_id xx*] +[visit_exp [x] ++ $memsxx(xx*{xx <- `xx*`})] +[visit_exp [x]] +[visit_exp x] +[visit_id x] not free +[visit_exp $memsxx(xx*{xx <- `xx*`})] +[visit_exp xx*{xx <- `xx*`}] +[scope_enter xx] +[visit_exp xx] +[visit_id xx] not free +[visit_id xx] not free +[scope_exit xx] +[visit_exp `xx*`] +[visit_id xx*] not free +[visit_id xx*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $memsxx{memidx#1 : memidx, x : idx, `xx*` : externidx*}([`MEM`_externidx{memidx#1}(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $memsxx(xx*{xx <- `xx*`}) +[check_dims] externidx xx +[visit_exp [externidx] ++ xx*{xx <- `xx*`}] +[visit_exp [externidx]] +[visit_exp externidx] +[visit_id externidx] +[visit_exp xx*{xx <- `xx*`}] +[scope_enter xx] +[visit_exp xx] +[visit_id xx] not free +[visit_id xx] not free +[scope_exit xx] +[visit_exp `xx*`] +[visit_id xx*] no dims +[visit_id xx*] +[visit_exp $memsxx(xx*{xx <- `xx*`})] +[visit_exp xx*{xx <- `xx*`}] +[scope_enter xx] +[visit_exp xx] +[visit_id xx] not free +[visit_id xx] not free +[scope_exit xx] +[visit_exp `xx*`] +[visit_id xx*] not free +[visit_id xx*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $memsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $memsxx(xx*{xx <- `xx*`}) + -- otherwise +[check_dims] +[visit_exp []] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $tagsxx([]) = [] +[check_dims] tagidx#1 x xx +[visit_exp [`TAG`_externidx{tagidx#1}(x)] ++ xx*{xx <- `xx*`}] +[visit_exp [`TAG`_externidx{tagidx#1}(x)]] +[visit_exp `TAG`_externidx{tagidx#1}(x)] +[visit_exp tagidx#1] +[visit_id tagidx#1] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp xx*{xx <- `xx*`}] +[scope_enter xx] +[visit_exp xx] +[visit_id xx] not free +[visit_id xx] not free +[scope_exit xx] +[visit_exp `xx*`] +[visit_id xx*] no dims +[visit_id xx*] +[visit_exp [x] ++ $tagsxx(xx*{xx <- `xx*`})] +[visit_exp [x]] +[visit_exp x] +[visit_id x] not free +[visit_exp $tagsxx(xx*{xx <- `xx*`})] +[visit_exp xx*{xx <- `xx*`}] +[scope_enter xx] +[visit_exp xx] +[visit_id xx] not free +[visit_id xx] not free +[scope_exit xx] +[visit_exp `xx*`] +[visit_id xx*] not free +[visit_id xx*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $tagsxx{tagidx#1 : tagidx, x : idx, `xx*` : externidx*}([`TAG`_externidx{tagidx#1}(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $tagsxx(xx*{xx <- `xx*`}) +[check_dims] externidx xx +[visit_exp [externidx] ++ xx*{xx <- `xx*`}] +[visit_exp [externidx]] +[visit_exp externidx] +[visit_id externidx] +[visit_exp xx*{xx <- `xx*`}] +[scope_enter xx] +[visit_exp xx] +[visit_id xx] not free +[visit_id xx] not free +[scope_exit xx] +[visit_exp `xx*`] +[visit_id xx*] no dims +[visit_id xx*] +[visit_exp $tagsxx(xx*{xx <- `xx*`})] +[visit_exp xx*{xx <- `xx*`}] +[scope_enter xx] +[visit_exp xx] +[visit_id xx] not free +[visit_id xx] not free +[scope_exit xx] +[visit_exp `xx*`] +[visit_id xx*] not free +[visit_id xx*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $tagsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $tagsxx(xx*{xx <- `xx*`}) + -- otherwise +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id typeidx*] no dims +[visit_id typeidx*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id funcidx*] no dims +[visit_id funcidx*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id globalidx*] no dims +[visit_id globalidx*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id tableidx*] no dims +[visit_id tableidx*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id memidx*] no dims +[visit_id memidx*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id elemidx*] no dims +[visit_id elemidx*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id dataidx*] no dims +[visit_id dataidx*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id localidx*] no dims +[visit_id localidx*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id labelidx*] no dims +[visit_id labelidx*] +[check_dims] _ +DecD free_opt(free?) : free +[visit_id _] not free +[check_dims] _ +DecD free_list(free*) : free +[visit_id _] not free +[check_dims] dataidx*#1 elemidx*#1 funcidx*#1 globalidx*#1 labelidx*#1 localidx*#1 memidx*#1 tableidx*#1 typeidx*#1 +[visit_exp ?()] +[visit_exp {`TYPES`{`typeidx*#1`} [], `FUNCS`{`funcidx*#1`} [], `GLOBALS`{`globalidx*#1`} [], `TABLES`{`tableidx*#1`} [], `MEMS`{`memidx*#1`} [], `ELEMS`{`elemidx*#1`} [], `DATAS`{`dataidx*#1`} [], `LOCALS`{`localidx*#1`} [], `LABELS`{`labelidx*#1`} []}] +[visit_exp `typeidx*#1`] +[visit_id typeidx*#1] +[visit_exp []] +[visit_exp `funcidx*#1`] +[visit_id funcidx*#1] +[visit_exp []] +[visit_exp `globalidx*#1`] +[visit_id globalidx*#1] +[visit_exp []] +[visit_exp `tableidx*#1`] +[visit_id tableidx*#1] +[visit_exp []] +[visit_exp `memidx*#1`] +[visit_id memidx*#1] +[visit_exp []] +[visit_exp `elemidx*#1`] +[visit_id elemidx*#1] +[visit_exp []] +[visit_exp `dataidx*#1`] +[visit_id dataidx*#1] +[visit_exp []] +[visit_exp `localidx*#1`] +[visit_id localidx*#1] +[visit_exp []] +[visit_exp `labelidx*#1`] +[visit_id labelidx*#1] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_opt{`typeidx*#1` : typeidx*, `funcidx*#1` : funcidx*, `globalidx*#1` : globalidx*, `tableidx*#1` : tableidx*, `memidx*#1` : memidx*, `elemidx*#1` : elemidx*, `dataidx*#1` : dataidx*, `localidx*#1` : localidx*, `labelidx*#1` : labelidx*}(?()) = {`TYPES`{`typeidx*#1`} [], `FUNCS`{`funcidx*#1`} [], `GLOBALS`{`globalidx*#1`} [], `TABLES`{`tableidx*#1`} [], `MEMS`{`memidx*#1`} [], `ELEMS`{`elemidx*#1`} [], `DATAS`{`dataidx*#1`} [], `LOCALS`{`localidx*#1`} [], `LABELS`{`labelidx*#1`} []} +[check_dims] free +[visit_exp ?(free)] +[visit_exp free] +[visit_id free] +[visit_exp free] +[visit_id free] not free +=> + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_opt{free : free}(?(free)) = free +[check_dims] dataidx*#2 elemidx*#2 funcidx*#2 globalidx*#2 labelidx*#2 localidx*#2 memidx*#2 tableidx*#2 typeidx*#2 +[visit_exp []] +[visit_exp {`TYPES`{`typeidx*#2`} [], `FUNCS`{`funcidx*#2`} [], `GLOBALS`{`globalidx*#2`} [], `TABLES`{`tableidx*#2`} [], `MEMS`{`memidx*#2`} [], `ELEMS`{`elemidx*#2`} [], `DATAS`{`dataidx*#2`} [], `LOCALS`{`localidx*#2`} [], `LABELS`{`labelidx*#2`} []}] +[visit_exp `typeidx*#2`] +[visit_id typeidx*#2] +[visit_exp []] +[visit_exp `funcidx*#2`] +[visit_id funcidx*#2] +[visit_exp []] +[visit_exp `globalidx*#2`] +[visit_id globalidx*#2] +[visit_exp []] +[visit_exp `tableidx*#2`] +[visit_id tableidx*#2] +[visit_exp []] +[visit_exp `memidx*#2`] +[visit_id memidx*#2] +[visit_exp []] +[visit_exp `elemidx*#2`] +[visit_id elemidx*#2] +[visit_exp []] +[visit_exp `dataidx*#2`] +[visit_id dataidx*#2] +[visit_exp []] +[visit_exp `localidx*#2`] +[visit_id localidx*#2] +[visit_exp []] +[visit_exp `labelidx*#2`] +[visit_id labelidx*#2] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_list{`typeidx*#2` : typeidx*, `funcidx*#2` : funcidx*, `globalidx*#2` : globalidx*, `tableidx*#2` : tableidx*, `memidx*#2` : memidx*, `elemidx*#2` : elemidx*, `dataidx*#2` : dataidx*, `localidx*#2` : localidx*, `labelidx*#2` : labelidx*}([]) = {`TYPES`{`typeidx*#2`} [], `FUNCS`{`funcidx*#2`} [], `GLOBALS`{`globalidx*#2`} [], `TABLES`{`tableidx*#2`} [], `MEMS`{`memidx*#2`} [], `ELEMS`{`elemidx*#2`} [], `DATAS`{`dataidx*#2`} [], `LOCALS`{`localidx*#2`} [], `LABELS`{`labelidx*#2`} []} +[check_dims] free free' +[visit_exp [free] ++ free'*{free' <- `free'*`}] +[visit_exp [free]] +[visit_exp free] +[visit_id free] +[visit_exp free'*{free' <- `free'*`}] +[scope_enter free'] +[visit_exp free'] +[visit_id free'] not free +[visit_id free'] not free +[scope_exit free'] +[visit_exp `free'*`] +[visit_id free'*] no dims +[visit_id free'*] +[visit_exp free +++ $free_list(free'*{free' <- `free'*`})] +[visit_exp free] +[visit_id free] not free +[visit_exp $free_list(free'*{free' <- `free'*`})] +[visit_exp free'*{free' <- `free'*`}] +[scope_enter free'] +[visit_exp free'] +[visit_id free'] not free +[visit_id free'] not free +[scope_exit free'] +[visit_exp `free'*`] +[visit_id free'*] not free +[visit_id free'*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) +[check_dims] typeidx +DecD free_typeidx(typeidx : typeidx) : free +[visit_id typeidx] not free +[check_dims] funcidx +DecD free_funcidx(funcidx : funcidx) : free +[visit_id funcidx] not free +[check_dims] globalidx +DecD free_globalidx(globalidx : globalidx) : free +[visit_id globalidx] not free +[check_dims] tableidx +DecD free_tableidx(tableidx : tableidx) : free +[visit_id tableidx] not free +[check_dims] memidx +DecD free_memidx(memidx : memidx) : free +[visit_id memidx] not free +[check_dims] elemidx +DecD free_elemidx(elemidx : elemidx) : free +[visit_id elemidx] not free +[check_dims] dataidx +DecD free_dataidx(dataidx : dataidx) : free +[visit_id dataidx] not free +[check_dims] localidx +DecD free_localidx(localidx : localidx) : free +[visit_id localidx] not free +[check_dims] labelidx +DecD free_labelidx(labelidx : labelidx) : free +[visit_id labelidx] not free +[check_dims] externidx +DecD free_externidx(externidx : externidx) : free +[visit_id externidx] not free +[check_dims] dataidx*#3 elemidx*#3 funcidx*#3 globalidx*#3 labelidx*#3 localidx*#3 memidx*#3 tableidx*#3 typeidx typeidx*#3 +[visit_exp typeidx] +[visit_id typeidx] +[visit_exp {`TYPES`{`typeidx*#3`} [typeidx], `FUNCS`{`funcidx*#3`} [], `GLOBALS`{`globalidx*#3`} [], `TABLES`{`tableidx*#3`} [], `MEMS`{`memidx*#3`} [], `ELEMS`{`elemidx*#3`} [], `DATAS`{`dataidx*#3`} [], `LOCALS`{`localidx*#3`} [], `LABELS`{`labelidx*#3`} []}] +[visit_exp `typeidx*#3`] +[visit_id typeidx*#3] +[visit_exp [typeidx]] +[visit_exp typeidx] +[visit_id typeidx] not free +[visit_exp `funcidx*#3`] +[visit_id funcidx*#3] +[visit_exp []] +[visit_exp `globalidx*#3`] +[visit_id globalidx*#3] +[visit_exp []] +[visit_exp `tableidx*#3`] +[visit_id tableidx*#3] +[visit_exp []] +[visit_exp `memidx*#3`] +[visit_id memidx*#3] +[visit_exp []] +[visit_exp `elemidx*#3`] +[visit_id elemidx*#3] +[visit_exp []] +[visit_exp `dataidx*#3`] +[visit_id dataidx*#3] +[visit_exp []] +[visit_exp `localidx*#3`] +[visit_id localidx*#3] +[visit_exp []] +[visit_exp `labelidx*#3`] +[visit_id labelidx*#3] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_typeidx{typeidx : typeidx, `typeidx*#3` : typeidx*, `funcidx*#3` : funcidx*, `globalidx*#3` : globalidx*, `tableidx*#3` : tableidx*, `memidx*#3` : memidx*, `elemidx*#3` : elemidx*, `dataidx*#3` : dataidx*, `localidx*#3` : localidx*, `labelidx*#3` : labelidx*}(typeidx) = {`TYPES`{`typeidx*#3`} [typeidx], `FUNCS`{`funcidx*#3`} [], `GLOBALS`{`globalidx*#3`} [], `TABLES`{`tableidx*#3`} [], `MEMS`{`memidx*#3`} [], `ELEMS`{`elemidx*#3`} [], `DATAS`{`dataidx*#3`} [], `LOCALS`{`localidx*#3`} [], `LABELS`{`labelidx*#3`} []} +[check_dims] dataidx*#4 elemidx*#4 funcidx funcidx*#4 globalidx*#4 labelidx*#4 localidx*#4 memidx*#4 tableidx*#4 typeidx*#4 +[visit_exp funcidx] +[visit_id funcidx] +[visit_exp {`TYPES`{`typeidx*#4`} [], `FUNCS`{`funcidx*#4`} [funcidx], `GLOBALS`{`globalidx*#4`} [], `TABLES`{`tableidx*#4`} [], `MEMS`{`memidx*#4`} [], `ELEMS`{`elemidx*#4`} [], `DATAS`{`dataidx*#4`} [], `LOCALS`{`localidx*#4`} [], `LABELS`{`labelidx*#4`} []}] +[visit_exp `typeidx*#4`] +[visit_id typeidx*#4] +[visit_exp []] +[visit_exp `funcidx*#4`] +[visit_id funcidx*#4] +[visit_exp [funcidx]] +[visit_exp funcidx] +[visit_id funcidx] not free +[visit_exp `globalidx*#4`] +[visit_id globalidx*#4] +[visit_exp []] +[visit_exp `tableidx*#4`] +[visit_id tableidx*#4] +[visit_exp []] +[visit_exp `memidx*#4`] +[visit_id memidx*#4] +[visit_exp []] +[visit_exp `elemidx*#4`] +[visit_id elemidx*#4] +[visit_exp []] +[visit_exp `dataidx*#4`] +[visit_id dataidx*#4] +[visit_exp []] +[visit_exp `localidx*#4`] +[visit_id localidx*#4] +[visit_exp []] +[visit_exp `labelidx*#4`] +[visit_id labelidx*#4] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_funcidx{funcidx : funcidx, `typeidx*#4` : typeidx*, `funcidx*#4` : funcidx*, `globalidx*#4` : globalidx*, `tableidx*#4` : tableidx*, `memidx*#4` : memidx*, `elemidx*#4` : elemidx*, `dataidx*#4` : dataidx*, `localidx*#4` : localidx*, `labelidx*#4` : labelidx*}(funcidx) = {`TYPES`{`typeidx*#4`} [], `FUNCS`{`funcidx*#4`} [funcidx], `GLOBALS`{`globalidx*#4`} [], `TABLES`{`tableidx*#4`} [], `MEMS`{`memidx*#4`} [], `ELEMS`{`elemidx*#4`} [], `DATAS`{`dataidx*#4`} [], `LOCALS`{`localidx*#4`} [], `LABELS`{`labelidx*#4`} []} +[check_dims] dataidx*#5 elemidx*#5 funcidx*#5 globalidx globalidx*#5 labelidx*#5 localidx*#5 memidx*#5 tableidx*#5 typeidx*#5 +[visit_exp globalidx] +[visit_id globalidx] +[visit_exp {`TYPES`{`typeidx*#5`} [], `FUNCS`{`funcidx*#5`} [], `GLOBALS`{`globalidx*#5`} [globalidx], `TABLES`{`tableidx*#5`} [], `MEMS`{`memidx*#5`} [], `ELEMS`{`elemidx*#5`} [], `DATAS`{`dataidx*#5`} [], `LOCALS`{`localidx*#5`} [], `LABELS`{`labelidx*#5`} []}] +[visit_exp `typeidx*#5`] +[visit_id typeidx*#5] +[visit_exp []] +[visit_exp `funcidx*#5`] +[visit_id funcidx*#5] +[visit_exp []] +[visit_exp `globalidx*#5`] +[visit_id globalidx*#5] +[visit_exp [globalidx]] +[visit_exp globalidx] +[visit_id globalidx] not free +[visit_exp `tableidx*#5`] +[visit_id tableidx*#5] +[visit_exp []] +[visit_exp `memidx*#5`] +[visit_id memidx*#5] +[visit_exp []] +[visit_exp `elemidx*#5`] +[visit_id elemidx*#5] +[visit_exp []] +[visit_exp `dataidx*#5`] +[visit_id dataidx*#5] +[visit_exp []] +[visit_exp `localidx*#5`] +[visit_id localidx*#5] +[visit_exp []] +[visit_exp `labelidx*#5`] +[visit_id labelidx*#5] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_globalidx{globalidx : globalidx, `typeidx*#5` : typeidx*, `funcidx*#5` : funcidx*, `globalidx*#5` : globalidx*, `tableidx*#5` : tableidx*, `memidx*#5` : memidx*, `elemidx*#5` : elemidx*, `dataidx*#5` : dataidx*, `localidx*#5` : localidx*, `labelidx*#5` : labelidx*}(globalidx) = {`TYPES`{`typeidx*#5`} [], `FUNCS`{`funcidx*#5`} [], `GLOBALS`{`globalidx*#5`} [globalidx], `TABLES`{`tableidx*#5`} [], `MEMS`{`memidx*#5`} [], `ELEMS`{`elemidx*#5`} [], `DATAS`{`dataidx*#5`} [], `LOCALS`{`localidx*#5`} [], `LABELS`{`labelidx*#5`} []} +[check_dims] dataidx*#6 elemidx*#6 funcidx*#6 globalidx*#6 labelidx*#6 localidx*#6 memidx*#6 tableidx tableidx*#6 typeidx*#6 +[visit_exp tableidx] +[visit_id tableidx] +[visit_exp {`TYPES`{`typeidx*#6`} [], `FUNCS`{`funcidx*#6`} [], `GLOBALS`{`globalidx*#6`} [], `TABLES`{`tableidx*#6`} [tableidx], `MEMS`{`memidx*#6`} [], `ELEMS`{`elemidx*#6`} [], `DATAS`{`dataidx*#6`} [], `LOCALS`{`localidx*#6`} [], `LABELS`{`labelidx*#6`} []}] +[visit_exp `typeidx*#6`] +[visit_id typeidx*#6] +[visit_exp []] +[visit_exp `funcidx*#6`] +[visit_id funcidx*#6] +[visit_exp []] +[visit_exp `globalidx*#6`] +[visit_id globalidx*#6] +[visit_exp []] +[visit_exp `tableidx*#6`] +[visit_id tableidx*#6] +[visit_exp [tableidx]] +[visit_exp tableidx] +[visit_id tableidx] not free +[visit_exp `memidx*#6`] +[visit_id memidx*#6] +[visit_exp []] +[visit_exp `elemidx*#6`] +[visit_id elemidx*#6] +[visit_exp []] +[visit_exp `dataidx*#6`] +[visit_id dataidx*#6] +[visit_exp []] +[visit_exp `localidx*#6`] +[visit_id localidx*#6] +[visit_exp []] +[visit_exp `labelidx*#6`] +[visit_id labelidx*#6] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_tableidx{tableidx : tableidx, `typeidx*#6` : typeidx*, `funcidx*#6` : funcidx*, `globalidx*#6` : globalidx*, `tableidx*#6` : tableidx*, `memidx*#6` : memidx*, `elemidx*#6` : elemidx*, `dataidx*#6` : dataidx*, `localidx*#6` : localidx*, `labelidx*#6` : labelidx*}(tableidx) = {`TYPES`{`typeidx*#6`} [], `FUNCS`{`funcidx*#6`} [], `GLOBALS`{`globalidx*#6`} [], `TABLES`{`tableidx*#6`} [tableidx], `MEMS`{`memidx*#6`} [], `ELEMS`{`elemidx*#6`} [], `DATAS`{`dataidx*#6`} [], `LOCALS`{`localidx*#6`} [], `LABELS`{`labelidx*#6`} []} +[check_dims] dataidx*#7 elemidx*#7 funcidx*#7 globalidx*#7 labelidx*#7 localidx*#7 memidx memidx*#7 tableidx*#7 typeidx*#7 +[visit_exp memidx] +[visit_id memidx] +[visit_exp {`TYPES`{`typeidx*#7`} [], `FUNCS`{`funcidx*#7`} [], `GLOBALS`{`globalidx*#7`} [], `TABLES`{`tableidx*#7`} [], `MEMS`{`memidx*#7`} [memidx], `ELEMS`{`elemidx*#7`} [], `DATAS`{`dataidx*#7`} [], `LOCALS`{`localidx*#7`} [], `LABELS`{`labelidx*#7`} []}] +[visit_exp `typeidx*#7`] +[visit_id typeidx*#7] +[visit_exp []] +[visit_exp `funcidx*#7`] +[visit_id funcidx*#7] +[visit_exp []] +[visit_exp `globalidx*#7`] +[visit_id globalidx*#7] +[visit_exp []] +[visit_exp `tableidx*#7`] +[visit_id tableidx*#7] +[visit_exp []] +[visit_exp `memidx*#7`] +[visit_id memidx*#7] +[visit_exp [memidx]] +[visit_exp memidx] +[visit_id memidx] not free +[visit_exp `elemidx*#7`] +[visit_id elemidx*#7] +[visit_exp []] +[visit_exp `dataidx*#7`] +[visit_id dataidx*#7] +[visit_exp []] +[visit_exp `localidx*#7`] +[visit_id localidx*#7] +[visit_exp []] +[visit_exp `labelidx*#7`] +[visit_id labelidx*#7] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_memidx{memidx : memidx, `typeidx*#7` : typeidx*, `funcidx*#7` : funcidx*, `globalidx*#7` : globalidx*, `tableidx*#7` : tableidx*, `memidx*#7` : memidx*, `elemidx*#7` : elemidx*, `dataidx*#7` : dataidx*, `localidx*#7` : localidx*, `labelidx*#7` : labelidx*}(memidx) = {`TYPES`{`typeidx*#7`} [], `FUNCS`{`funcidx*#7`} [], `GLOBALS`{`globalidx*#7`} [], `TABLES`{`tableidx*#7`} [], `MEMS`{`memidx*#7`} [memidx], `ELEMS`{`elemidx*#7`} [], `DATAS`{`dataidx*#7`} [], `LOCALS`{`localidx*#7`} [], `LABELS`{`labelidx*#7`} []} +[check_dims] dataidx*#8 elemidx elemidx*#8 funcidx*#8 globalidx*#8 labelidx*#8 localidx*#8 memidx*#8 tableidx*#8 typeidx*#8 +[visit_exp elemidx] +[visit_id elemidx] +[visit_exp {`TYPES`{`typeidx*#8`} [], `FUNCS`{`funcidx*#8`} [], `GLOBALS`{`globalidx*#8`} [], `TABLES`{`tableidx*#8`} [], `MEMS`{`memidx*#8`} [], `ELEMS`{`elemidx*#8`} [elemidx], `DATAS`{`dataidx*#8`} [], `LOCALS`{`localidx*#8`} [], `LABELS`{`labelidx*#8`} []}] +[visit_exp `typeidx*#8`] +[visit_id typeidx*#8] +[visit_exp []] +[visit_exp `funcidx*#8`] +[visit_id funcidx*#8] +[visit_exp []] +[visit_exp `globalidx*#8`] +[visit_id globalidx*#8] +[visit_exp []] +[visit_exp `tableidx*#8`] +[visit_id tableidx*#8] +[visit_exp []] +[visit_exp `memidx*#8`] +[visit_id memidx*#8] +[visit_exp []] +[visit_exp `elemidx*#8`] +[visit_id elemidx*#8] +[visit_exp [elemidx]] +[visit_exp elemidx] +[visit_id elemidx] not free +[visit_exp `dataidx*#8`] +[visit_id dataidx*#8] +[visit_exp []] +[visit_exp `localidx*#8`] +[visit_id localidx*#8] +[visit_exp []] +[visit_exp `labelidx*#8`] +[visit_id labelidx*#8] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_elemidx{elemidx : elemidx, `typeidx*#8` : typeidx*, `funcidx*#8` : funcidx*, `globalidx*#8` : globalidx*, `tableidx*#8` : tableidx*, `memidx*#8` : memidx*, `elemidx*#8` : elemidx*, `dataidx*#8` : dataidx*, `localidx*#8` : localidx*, `labelidx*#8` : labelidx*}(elemidx) = {`TYPES`{`typeidx*#8`} [], `FUNCS`{`funcidx*#8`} [], `GLOBALS`{`globalidx*#8`} [], `TABLES`{`tableidx*#8`} [], `MEMS`{`memidx*#8`} [], `ELEMS`{`elemidx*#8`} [elemidx], `DATAS`{`dataidx*#8`} [], `LOCALS`{`localidx*#8`} [], `LABELS`{`labelidx*#8`} []} +[check_dims] dataidx dataidx*#9 elemidx*#9 funcidx*#9 globalidx*#9 labelidx*#9 localidx*#9 memidx*#9 tableidx*#9 typeidx*#9 +[visit_exp dataidx] +[visit_id dataidx] +[visit_exp {`TYPES`{`typeidx*#9`} [], `FUNCS`{`funcidx*#9`} [], `GLOBALS`{`globalidx*#9`} [], `TABLES`{`tableidx*#9`} [], `MEMS`{`memidx*#9`} [], `ELEMS`{`elemidx*#9`} [], `DATAS`{`dataidx*#9`} [dataidx], `LOCALS`{`localidx*#9`} [], `LABELS`{`labelidx*#9`} []}] +[visit_exp `typeidx*#9`] +[visit_id typeidx*#9] +[visit_exp []] +[visit_exp `funcidx*#9`] +[visit_id funcidx*#9] +[visit_exp []] +[visit_exp `globalidx*#9`] +[visit_id globalidx*#9] +[visit_exp []] +[visit_exp `tableidx*#9`] +[visit_id tableidx*#9] +[visit_exp []] +[visit_exp `memidx*#9`] +[visit_id memidx*#9] +[visit_exp []] +[visit_exp `elemidx*#9`] +[visit_id elemidx*#9] +[visit_exp []] +[visit_exp `dataidx*#9`] +[visit_id dataidx*#9] +[visit_exp [dataidx]] +[visit_exp dataidx] +[visit_id dataidx] not free +[visit_exp `localidx*#9`] +[visit_id localidx*#9] +[visit_exp []] +[visit_exp `labelidx*#9`] +[visit_id labelidx*#9] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_dataidx{dataidx : dataidx, `typeidx*#9` : typeidx*, `funcidx*#9` : funcidx*, `globalidx*#9` : globalidx*, `tableidx*#9` : tableidx*, `memidx*#9` : memidx*, `elemidx*#9` : elemidx*, `dataidx*#9` : dataidx*, `localidx*#9` : localidx*, `labelidx*#9` : labelidx*}(dataidx) = {`TYPES`{`typeidx*#9`} [], `FUNCS`{`funcidx*#9`} [], `GLOBALS`{`globalidx*#9`} [], `TABLES`{`tableidx*#9`} [], `MEMS`{`memidx*#9`} [], `ELEMS`{`elemidx*#9`} [], `DATAS`{`dataidx*#9`} [dataidx], `LOCALS`{`localidx*#9`} [], `LABELS`{`labelidx*#9`} []} +[check_dims] dataidx*#10 elemidx*#10 funcidx*#10 globalidx*#10 labelidx*#10 localidx localidx*#10 memidx*#10 tableidx*#10 typeidx*#10 +[visit_exp localidx] +[visit_id localidx] +[visit_exp {`TYPES`{`typeidx*#10`} [], `FUNCS`{`funcidx*#10`} [], `GLOBALS`{`globalidx*#10`} [], `TABLES`{`tableidx*#10`} [], `MEMS`{`memidx*#10`} [], `ELEMS`{`elemidx*#10`} [], `DATAS`{`dataidx*#10`} [], `LOCALS`{`localidx*#10`} [localidx], `LABELS`{`labelidx*#10`} []}] +[visit_exp `typeidx*#10`] +[visit_id typeidx*#10] +[visit_exp []] +[visit_exp `funcidx*#10`] +[visit_id funcidx*#10] +[visit_exp []] +[visit_exp `globalidx*#10`] +[visit_id globalidx*#10] +[visit_exp []] +[visit_exp `tableidx*#10`] +[visit_id tableidx*#10] +[visit_exp []] +[visit_exp `memidx*#10`] +[visit_id memidx*#10] +[visit_exp []] +[visit_exp `elemidx*#10`] +[visit_id elemidx*#10] +[visit_exp []] +[visit_exp `dataidx*#10`] +[visit_id dataidx*#10] +[visit_exp []] +[visit_exp `localidx*#10`] +[visit_id localidx*#10] +[visit_exp [localidx]] +[visit_exp localidx] +[visit_id localidx] not free +[visit_exp `labelidx*#10`] +[visit_id labelidx*#10] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_localidx{localidx : localidx, `typeidx*#10` : typeidx*, `funcidx*#10` : funcidx*, `globalidx*#10` : globalidx*, `tableidx*#10` : tableidx*, `memidx*#10` : memidx*, `elemidx*#10` : elemidx*, `dataidx*#10` : dataidx*, `localidx*#10` : localidx*, `labelidx*#10` : labelidx*}(localidx) = {`TYPES`{`typeidx*#10`} [], `FUNCS`{`funcidx*#10`} [], `GLOBALS`{`globalidx*#10`} [], `TABLES`{`tableidx*#10`} [], `MEMS`{`memidx*#10`} [], `ELEMS`{`elemidx*#10`} [], `DATAS`{`dataidx*#10`} [], `LOCALS`{`localidx*#10`} [localidx], `LABELS`{`labelidx*#10`} []} +[check_dims] dataidx*#11 elemidx*#11 funcidx*#11 globalidx*#11 labelidx labelidx*#11 localidx*#11 memidx*#11 tableidx*#11 typeidx*#11 +[visit_exp labelidx] +[visit_id labelidx] +[visit_exp {`TYPES`{`typeidx*#11`} [], `FUNCS`{`funcidx*#11`} [], `GLOBALS`{`globalidx*#11`} [], `TABLES`{`tableidx*#11`} [], `MEMS`{`memidx*#11`} [], `ELEMS`{`elemidx*#11`} [], `DATAS`{`dataidx*#11`} [], `LOCALS`{`localidx*#11`} [], `LABELS`{`labelidx*#11`} [labelidx]}] +[visit_exp `typeidx*#11`] +[visit_id typeidx*#11] +[visit_exp []] +[visit_exp `funcidx*#11`] +[visit_id funcidx*#11] +[visit_exp []] +[visit_exp `globalidx*#11`] +[visit_id globalidx*#11] +[visit_exp []] +[visit_exp `tableidx*#11`] +[visit_id tableidx*#11] +[visit_exp []] +[visit_exp `memidx*#11`] +[visit_id memidx*#11] +[visit_exp []] +[visit_exp `elemidx*#11`] +[visit_id elemidx*#11] +[visit_exp []] +[visit_exp `dataidx*#11`] +[visit_id dataidx*#11] +[visit_exp []] +[visit_exp `localidx*#11`] +[visit_id localidx*#11] +[visit_exp []] +[visit_exp `labelidx*#11`] +[visit_id labelidx*#11] +[visit_exp [labelidx]] +[visit_exp labelidx] +[visit_id labelidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_labelidx{labelidx : labelidx, `typeidx*#11` : typeidx*, `funcidx*#11` : funcidx*, `globalidx*#11` : globalidx*, `tableidx*#11` : tableidx*, `memidx*#11` : memidx*, `elemidx*#11` : elemidx*, `dataidx*#11` : dataidx*, `localidx*#11` : localidx*, `labelidx*#11` : labelidx*}(labelidx) = {`TYPES`{`typeidx*#11`} [], `FUNCS`{`funcidx*#11`} [], `GLOBALS`{`globalidx*#11`} [], `TABLES`{`tableidx*#11`} [], `MEMS`{`memidx*#11`} [], `ELEMS`{`elemidx*#11`} [], `DATAS`{`dataidx*#11`} [], `LOCALS`{`localidx*#11`} [], `LABELS`{`labelidx*#11`} [labelidx]} +[check_dims] funcidx funcidx#3 +[visit_exp `FUNC`_externidx{funcidx#3}(funcidx)] +[visit_exp funcidx#3] +[visit_id funcidx#3] +[visit_exp (funcidx)] +[visit_exp funcidx] +[visit_id funcidx] +[visit_exp $free_funcidx(funcidx)] +[visit_exp funcidx] +[visit_id funcidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{funcidx#3 : funcidx, funcidx : funcidx}(`FUNC`_externidx{funcidx#3}(funcidx)) = $free_funcidx(funcidx) +[check_dims] globalidx globalidx#3 +[visit_exp `GLOBAL`_externidx{globalidx#3}(globalidx)] +[visit_exp globalidx#3] +[visit_id globalidx#3] +[visit_exp (globalidx)] +[visit_exp globalidx] +[visit_id globalidx] +[visit_exp $free_globalidx(globalidx)] +[visit_exp globalidx] +[visit_id globalidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{globalidx#3 : globalidx, globalidx : globalidx}(`GLOBAL`_externidx{globalidx#3}(globalidx)) = $free_globalidx(globalidx) +[check_dims] tableidx tableidx#3 +[visit_exp `TABLE`_externidx{tableidx#3}(tableidx)] +[visit_exp tableidx#3] +[visit_id tableidx#3] +[visit_exp (tableidx)] +[visit_exp tableidx] +[visit_id tableidx] +[visit_exp $free_tableidx(tableidx)] +[visit_exp tableidx] +[visit_id tableidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{tableidx#3 : tableidx, tableidx : tableidx}(`TABLE`_externidx{tableidx#3}(tableidx)) = $free_tableidx(tableidx) +[check_dims] memidx memidx#3 +[visit_exp `MEM`_externidx{memidx#3}(memidx)] +[visit_exp memidx#3] +[visit_id memidx#3] +[visit_exp (memidx)] +[visit_exp memidx] +[visit_id memidx] +[visit_exp $free_memidx(memidx)] +[visit_exp memidx] +[visit_id memidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{memidx#3 : memidx, memidx : memidx}(`MEM`_externidx{memidx#3}(memidx)) = $free_memidx(memidx) +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[check_dims] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id rectype] no dims +[visit_id rectype] +[visit_id n] no dims +[visit_id n] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id typeidx] no dims +[visit_id typeidx] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id n] no dims +[visit_id n] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id typeidx] no dims +[visit_id typeidx] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id n] no dims +[visit_id n] +[check_dims] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id null?] no dims +[visit_id null?] +[visit_id heaptype] no dims +[visit_id heaptype] +[check_dims] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[check_dims] +[check_dims] +DecD ANYREF : reftype +[check_dims] +DecD EQREF : reftype +[check_dims] +DecD I31REF : reftype +[check_dims] +DecD STRUCTREF : reftype +[check_dims] +DecD ARRAYREF : reftype +[check_dims] +DecD FUNCREF : reftype +[check_dims] +DecD EXNREF : reftype +[check_dims] +DecD EXTERNREF : reftype +[check_dims] +DecD NULLREF : reftype +[check_dims] +DecD NULLFUNCREF : reftype +[check_dims] +DecD NULLEXNREF : reftype +[check_dims] +DecD NULLEXTERNREF : reftype +[check_dims] heaptype#11 null?#11 +[visit_exp `REF`_reftype{`null?#11`, heaptype#11}(?(`NULL`_null), `ANY`_heaptype)] +[visit_exp `null?#11`] +[visit_id null?#11] +[visit_exp heaptype#11] +[visit_id heaptype#11] +[visit_exp (?(`NULL`_null), `ANY`_heaptype)] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp `ANY`_heaptype] +[visit_exp ()] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $ANYREF{`null?#11` : null?, heaptype#11 : heaptype} = `REF`_reftype{`null?#11`, heaptype#11}(?(`NULL`_null), `ANY`_heaptype) +[check_dims] heaptype#23 null?#23 +[visit_exp `REF`_reftype{`null?#23`, heaptype#23}(?(`NULL`_null), `EQ`_heaptype)] +[visit_exp `null?#23`] +[visit_id null?#23] +[visit_exp heaptype#23] +[visit_id heaptype#23] +[visit_exp (?(`NULL`_null), `EQ`_heaptype)] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp `EQ`_heaptype] +[visit_exp ()] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $EQREF{`null?#23` : null?, heaptype#23 : heaptype} = `REF`_reftype{`null?#23`, heaptype#23}(?(`NULL`_null), `EQ`_heaptype) +[check_dims] heaptype#35 null?#35 +[visit_exp `REF`_reftype{`null?#35`, heaptype#35}(?(`NULL`_null), `I31`_heaptype)] +[visit_exp `null?#35`] +[visit_id null?#35] +[visit_exp heaptype#35] +[visit_id heaptype#35] +[visit_exp (?(`NULL`_null), `I31`_heaptype)] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp `I31`_heaptype] +[visit_exp ()] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $I31REF{`null?#35` : null?, heaptype#35 : heaptype} = `REF`_reftype{`null?#35`, heaptype#35}(?(`NULL`_null), `I31`_heaptype) +[check_dims] heaptype#47 null?#47 +[visit_exp `REF`_reftype{`null?#47`, heaptype#47}(?(`NULL`_null), `STRUCT`_heaptype)] +[visit_exp `null?#47`] +[visit_id null?#47] +[visit_exp heaptype#47] +[visit_id heaptype#47] +[visit_exp (?(`NULL`_null), `STRUCT`_heaptype)] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp `STRUCT`_heaptype] +[visit_exp ()] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $STRUCTREF{`null?#47` : null?, heaptype#47 : heaptype} = `REF`_reftype{`null?#47`, heaptype#47}(?(`NULL`_null), `STRUCT`_heaptype) +[check_dims] heaptype#59 null?#59 +[visit_exp `REF`_reftype{`null?#59`, heaptype#59}(?(`NULL`_null), `ARRAY`_heaptype)] +[visit_exp `null?#59`] +[visit_id null?#59] +[visit_exp heaptype#59] +[visit_id heaptype#59] +[visit_exp (?(`NULL`_null), `ARRAY`_heaptype)] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp `ARRAY`_heaptype] +[visit_exp ()] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $ARRAYREF{`null?#59` : null?, heaptype#59 : heaptype} = `REF`_reftype{`null?#59`, heaptype#59}(?(`NULL`_null), `ARRAY`_heaptype) +[check_dims] heaptype#71 null?#71 +[visit_exp `REF`_reftype{`null?#71`, heaptype#71}(?(`NULL`_null), `FUNC`_heaptype)] +[visit_exp `null?#71`] +[visit_id null?#71] +[visit_exp heaptype#71] +[visit_id heaptype#71] +[visit_exp (?(`NULL`_null), `FUNC`_heaptype)] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp `FUNC`_heaptype] +[visit_exp ()] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $FUNCREF{`null?#71` : null?, heaptype#71 : heaptype} = `REF`_reftype{`null?#71`, heaptype#71}(?(`NULL`_null), `FUNC`_heaptype) +[check_dims] heaptype#83 null?#83 +[visit_exp `REF`_reftype{`null?#83`, heaptype#83}(?(`NULL`_null), `EXN`_heaptype)] +[visit_exp `null?#83`] +[visit_id null?#83] +[visit_exp heaptype#83] +[visit_id heaptype#83] +[visit_exp (?(`NULL`_null), `EXN`_heaptype)] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp `EXN`_heaptype] +[visit_exp ()] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $EXNREF{`null?#83` : null?, heaptype#83 : heaptype} = `REF`_reftype{`null?#83`, heaptype#83}(?(`NULL`_null), `EXN`_heaptype) +[check_dims] heaptype#95 null?#95 +[visit_exp `REF`_reftype{`null?#95`, heaptype#95}(?(`NULL`_null), `EXTERN`_heaptype)] +[visit_exp `null?#95`] +[visit_id null?#95] +[visit_exp heaptype#95] +[visit_id heaptype#95] +[visit_exp (?(`NULL`_null), `EXTERN`_heaptype)] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp `EXTERN`_heaptype] +[visit_exp ()] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $EXTERNREF{`null?#95` : null?, heaptype#95 : heaptype} = `REF`_reftype{`null?#95`, heaptype#95}(?(`NULL`_null), `EXTERN`_heaptype) +[check_dims] heaptype#107 null?#107 +[visit_exp `REF`_reftype{`null?#107`, heaptype#107}(?(`NULL`_null), `NONE`_heaptype)] +[visit_exp `null?#107`] +[visit_id null?#107] +[visit_exp heaptype#107] +[visit_id heaptype#107] +[visit_exp (?(`NULL`_null), `NONE`_heaptype)] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp `NONE`_heaptype] +[visit_exp ()] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $NULLREF{`null?#107` : null?, heaptype#107 : heaptype} = `REF`_reftype{`null?#107`, heaptype#107}(?(`NULL`_null), `NONE`_heaptype) +[check_dims] heaptype#119 null?#119 +[visit_exp `REF`_reftype{`null?#119`, heaptype#119}(?(`NULL`_null), `NOFUNC`_heaptype)] +[visit_exp `null?#119`] +[visit_id null?#119] +[visit_exp heaptype#119] +[visit_id heaptype#119] +[visit_exp (?(`NULL`_null), `NOFUNC`_heaptype)] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp `NOFUNC`_heaptype] +[visit_exp ()] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $NULLFUNCREF{`null?#119` : null?, heaptype#119 : heaptype} = `REF`_reftype{`null?#119`, heaptype#119}(?(`NULL`_null), `NOFUNC`_heaptype) +[check_dims] heaptype#131 null?#131 +[visit_exp `REF`_reftype{`null?#131`, heaptype#131}(?(`NULL`_null), `NOEXN`_heaptype)] +[visit_exp `null?#131`] +[visit_id null?#131] +[visit_exp heaptype#131] +[visit_id heaptype#131] +[visit_exp (?(`NULL`_null), `NOEXN`_heaptype)] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp `NOEXN`_heaptype] +[visit_exp ()] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $NULLEXNREF{`null?#131` : null?, heaptype#131 : heaptype} = `REF`_reftype{`null?#131`, heaptype#131}(?(`NULL`_null), `NOEXN`_heaptype) +[check_dims] heaptype#143 null?#143 +[visit_exp `REF`_reftype{`null?#143`, heaptype#143}(?(`NULL`_null), `NOEXTERN`_heaptype)] +[visit_exp `null?#143`] +[visit_id null?#143] +[visit_exp heaptype#143] +[visit_id heaptype#143] +[visit_exp (?(`NULL`_null), `NOEXTERN`_heaptype)] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp `NOEXTERN`_heaptype] +[visit_exp ()] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $NULLEXTERNREF{`null?#143` : null?, heaptype#143 : heaptype} = `REF`_reftype{`null?#143`, heaptype#143}(?(`NULL`_null), `NOEXTERN`_heaptype) +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id mut?] no dims +[visit_id mut?] +[visit_id storagetype] no dims +[visit_id storagetype] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id _] not free +[visit_id _] no dims +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id fieldtype] no dims +[visit_id fieldtype] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id resulttype] no dims +[visit_id resulttype] +[visit_id resulttype] not free +[visit_id resulttype] no dims +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id final?] no dims +[visit_id final?] +[visit_id typeuse*] no dims +[visit_id typeuse*] +[visit_id comptype] no dims +[visit_id comptype] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id _] not free +[visit_id _] no dims +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id u64] no dims +[visit_id u64] +[visit_id u64?] no dims +[visit_id u64?] +[check_dims] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id mut?] no dims +[visit_id mut?] +[visit_id valtype] no dims +[visit_id valtype] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id addrtype] no dims +[visit_id addrtype] +[visit_id limits] no dims +[visit_id limits] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id addrtype] no dims +[visit_id addrtype] +[visit_id limits] no dims +[visit_id limits] +[visit_id reftype] no dims +[visit_id reftype] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[check_dims] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id tagtype] no dims +[visit_id tagtype] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id globaltype] no dims +[visit_id globaltype] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id memtype] no dims +[visit_id memtype] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id tabletype] no dims +[visit_id tabletype] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id typeuse] no dims +[visit_id typeuse] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id externtype*] no dims +[visit_id externtype*] +[visit_id externtype*] not free +[visit_id externtype*] no dims +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] N +DecD IN(N : N) : Inn +[visit_id N] not free +[check_dims] +[visit_exp 32] +[visit_exp `I32`_Inn] +[visit_exp ()] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $IN(32) = `I32`_Inn +[check_dims] +[visit_exp 64] +[visit_exp `I64`_Inn] +[visit_exp ()] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $IN(64) = `I64`_Inn +[check_dims] N +DecD FN(N : N) : Fnn +[visit_id N] not free +[check_dims] +[visit_exp 32] +[visit_exp `F32`_Fnn] +[visit_exp ()] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $FN(32) = `F32`_Fnn +[check_dims] +[visit_exp 64] +[visit_exp `F64`_Fnn] +[visit_exp ()] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $FN(64) = `F64`_Fnn +[check_dims] N +DecD JN(N : N) : Jnn +[visit_id N] not free +[check_dims] +[visit_exp 8] +[visit_exp `I8`_Jnn] +[visit_exp ()] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(8) = `I8`_Jnn +[check_dims] +[visit_exp 16] +[visit_exp `I16`_Jnn] +[visit_exp ()] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(16) = `I16`_Jnn +[check_dims] +[visit_exp 32] +[visit_exp `I32`_Jnn] +[visit_exp ()] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(32) = `I32`_Jnn +[check_dims] +[visit_exp 64] +[visit_exp `I64`_Jnn] +[visit_exp ()] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $JN(64) = `I64`_Jnn +[check_dims] numtype +DecD size(numtype : numtype) : nat +[visit_id numtype] not free +[check_dims] vectype +DecD vsize(vectype : vectype) : nat +[visit_id vectype] not free +[check_dims] packtype +DecD psize(packtype : packtype) : nat +[visit_id packtype] not free +[check_dims] lanetype +DecD lsize(lanetype : lanetype) : nat +[visit_id lanetype] not free +[check_dims] storagetype +DecD zsize(storagetype : storagetype) : nat +[visit_id storagetype] not free +[check_dims] Inn +DecD isize(Inn : Inn) : nat +[visit_id Inn] not free +[check_dims] Jnn +DecD jsize(Jnn : Jnn) : nat +[visit_id Jnn] not free +[check_dims] Fnn +DecD fsize(Fnn : Fnn) : nat +[visit_id Fnn] not free +[check_dims] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp 32] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(`I32`_numtype) = 32 +[check_dims] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp 64] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(`I64`_numtype) = 64 +[check_dims] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp 32] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(`F32`_numtype) = 32 +[check_dims] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp 64] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $size(`F64`_numtype) = 64 +[check_dims] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp 128] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $vsize(`V128`_vectype) = 128 +[check_dims] +[visit_exp `I8`_packtype] +[visit_exp ()] +[visit_exp 8] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $psize(`I8`_packtype) = 8 +[check_dims] +[visit_exp `I16`_packtype] +[visit_exp ()] +[visit_exp 16] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $psize(`I16`_packtype) = 16 +[check_dims] numtype +[visit_exp (numtype : numtype <: lanetype)] +[visit_exp numtype] +[visit_id numtype] +[visit_exp $size(numtype)] +[visit_exp numtype] +[visit_id numtype] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize{numtype : numtype}((numtype : numtype <: lanetype)) = $size(numtype) +[check_dims] packtype +[visit_exp (packtype : packtype <: lanetype)] +[visit_exp packtype] +[visit_id packtype] +[visit_exp $psize(packtype)] +[visit_exp packtype] +[visit_id packtype] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsize{packtype : packtype}((packtype : packtype <: lanetype)) = $psize(packtype) +[check_dims] numtype +[visit_exp (numtype : numtype <: storagetype)] +[visit_exp numtype] +[visit_id numtype] +[visit_exp $size(numtype)] +[visit_exp numtype] +[visit_id numtype] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize{numtype : numtype}((numtype : numtype <: storagetype)) = $size(numtype) +[check_dims] vectype +[visit_exp (vectype : vectype <: storagetype)] +[visit_exp vectype] +[visit_id vectype] +[visit_exp $vsize(vectype)] +[visit_exp vectype] +[visit_id vectype] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize{vectype : vectype}((vectype : vectype <: storagetype)) = $vsize(vectype) +[check_dims] packtype +[visit_exp (packtype : packtype <: storagetype)] +[visit_exp packtype] +[visit_id packtype] +[visit_exp $psize(packtype)] +[visit_exp packtype] +[visit_id packtype] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $zsize{packtype : packtype}((packtype : packtype <: storagetype)) = $psize(packtype) +[check_dims] Inn +[visit_exp Inn] +[visit_id Inn] +[visit_exp $size((Inn : Inn <: numtype))] +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $isize{Inn : Inn}(Inn) = $size((Inn : Inn <: numtype)) +[check_dims] Fnn +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp $size((Fnn : Fnn <: numtype))] +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $fsize{Fnn : Fnn}(Fnn) = $size((Fnn : Fnn <: numtype)) +[check_dims] Jnn +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp $lsize((Jnn : Jnn <: lanetype))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $jsize{Jnn : Jnn}(Jnn) = $lsize((Jnn : Jnn <: lanetype)) +[check_dims] nat +DecD inv_isize(nat : nat) : Inn +[visit_id nat] not free +[check_dims] nat +DecD inv_jsize(nat : nat) : Jnn +[visit_id nat] not free +[check_dims] nat +DecD inv_fsize(nat : nat) : Fnn +[visit_id nat] not free +[check_dims] +[visit_exp 32] +[visit_exp `I32`_Inn] +[visit_exp ()] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_isize(32) = `I32`_Inn +[check_dims] +[visit_exp 64] +[visit_exp `I64`_Inn] +[visit_exp ()] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_isize(64) = `I64`_Inn +[check_dims] +[visit_exp 32] +[visit_exp `F32`_Fnn] +[visit_exp ()] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_fsize(32) = `F32`_Fnn +[check_dims] +[visit_exp 64] +[visit_exp `F64`_Fnn] +[visit_exp ()] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_fsize(64) = `F64`_Fnn +[check_dims] +[visit_exp 8] +[visit_exp `I8`_Jnn] +[visit_exp ()] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(8) = `I8`_Jnn +[check_dims] +[visit_exp 16] +[visit_exp `I16`_Jnn] +[visit_exp ()] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize(16) = `I16`_Jnn +[check_dims] n +[visit_exp n] +[visit_id n] +[visit_exp ($inv_isize(n) : Inn <: Jnn)] +[visit_exp $inv_isize(n)] +[visit_exp n] +[visit_id n] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsize{n : n}(n) = ($inv_isize(n) : Inn <: Jnn) +[check_dims] numtype +DecD sizenn(numtype : numtype) : nat +[visit_id numtype] not free +[check_dims] numtype +DecD sizenn1(numtype : numtype) : nat +[visit_id numtype] not free +[check_dims] numtype +DecD sizenn2(numtype : numtype) : nat +[visit_id numtype] not free +[check_dims] nt +[visit_exp nt] +[visit_id nt] +[visit_exp $size(nt)] +[visit_exp nt] +[visit_id nt] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $sizenn{nt : numtype}(nt) = $size(nt) +[check_dims] nt +[visit_exp nt] +[visit_id nt] +[visit_exp $size(nt)] +[visit_exp nt] +[visit_id nt] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $sizenn1{nt : numtype}(nt) = $size(nt) +[check_dims] nt +[visit_exp nt] +[visit_id nt] +[visit_exp $size(nt)] +[visit_exp nt] +[visit_id nt] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $sizenn2{nt : numtype}(nt) = $size(nt) +[check_dims] vectype +DecD vsizenn(vectype : vectype) : nat +[visit_id vectype] not free +[check_dims] vt +[visit_exp vt] +[visit_id vt] +[visit_exp $vsize(vt)] +[visit_exp vt] +[visit_id vt] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $vsizenn{vt : vectype}(vt) = $vsize(vt) +[check_dims] packtype +DecD psizenn(packtype : packtype) : nat +[visit_id packtype] not free +[check_dims] pt +[visit_exp pt] +[visit_id pt] +[visit_exp $psize(pt)] +[visit_exp pt] +[visit_id pt] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $psizenn{pt : packtype}(pt) = $psize(pt) +[check_dims] lanetype +DecD lsizenn(lanetype : lanetype) : nat +[visit_id lanetype] not free +[check_dims] lanetype +DecD lsizenn1(lanetype : lanetype) : nat +[visit_id lanetype] not free +[check_dims] lanetype +DecD lsizenn2(lanetype : lanetype) : nat +[visit_id lanetype] not free +[check_dims] lt +[visit_exp lt] +[visit_id lt] +[visit_exp $lsize(lt)] +[visit_exp lt] +[visit_id lt] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsizenn{lt : lanetype}(lt) = $lsize(lt) +[check_dims] lt +[visit_exp lt] +[visit_id lt] +[visit_exp $lsize(lt)] +[visit_exp lt] +[visit_id lt] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsizenn1{lt : lanetype}(lt) = $lsize(lt) +[check_dims] lt +[visit_exp lt] +[visit_id lt] +[visit_exp $lsize(lt)] +[visit_exp lt] +[visit_id lt] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lsizenn2{lt : lanetype}(lt) = $lsize(lt) +[check_dims] Jnn +DecD jsizenn(Jnn : Jnn) : nat +[visit_id Jnn] not free +[check_dims] Jnn +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp $lsize((Jnn : Jnn <: lanetype))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $jsizenn{Jnn : Jnn}(Jnn) = $lsize((Jnn : Jnn <: lanetype)) +[check_dims] nat +DecD inv_jsizenn(nat : nat) : Jnn +[visit_id nat] not free +[check_dims] n +[visit_exp n] +[visit_id n] +[visit_exp $inv_jsize(n)] +[visit_exp n] +[visit_id n] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $inv_jsizenn{n : n}(n) = $inv_jsize(n) +[check_dims] lanetype +DecD lunpack(lanetype : lanetype) : numtype +[visit_id lanetype] not free +[check_dims] numtype +[visit_exp (numtype : numtype <: lanetype)] +[visit_exp numtype] +[visit_id numtype] +[visit_exp numtype] +[visit_id numtype] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack{numtype : numtype}((numtype : numtype <: lanetype)) = numtype +[check_dims] packtype +[visit_exp (packtype : packtype <: lanetype)] +[visit_exp packtype] +[visit_id packtype] +[visit_exp `I32`_numtype] +[visit_exp ()] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $lunpack{packtype : packtype}((packtype : packtype <: lanetype)) = `I32`_numtype +[check_dims] storagetype +DecD unpack(storagetype : storagetype) : valtype +[visit_id storagetype] not free +[check_dims] valtype +[visit_exp (valtype : valtype <: storagetype)] +[visit_exp valtype] +[visit_id valtype] +[visit_exp valtype] +[visit_id valtype] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack{valtype : valtype}((valtype : valtype <: storagetype)) = valtype +[check_dims] packtype +[visit_exp (packtype : packtype <: storagetype)] +[visit_exp packtype] +[visit_id packtype] +[visit_exp `I32`_valtype] +[visit_exp ()] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unpack{packtype : packtype}((packtype : packtype <: storagetype)) = `I32`_valtype +[check_dims] storagetype +DecD nunpack(storagetype : storagetype) : numtype +[visit_id storagetype] not free +[check_dims] numtype +[visit_exp (numtype : numtype <: storagetype)] +[visit_exp numtype] +[visit_id numtype] +[visit_exp numtype] +[visit_id numtype] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack{numtype : numtype}((numtype : numtype <: storagetype)) = numtype +[check_dims] packtype +[visit_exp (packtype : packtype <: storagetype)] +[visit_exp packtype] +[visit_id packtype] +[visit_exp `I32`_numtype] +[visit_exp ()] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $nunpack{packtype : packtype}((packtype : packtype <: storagetype)) = `I32`_numtype +[check_dims] storagetype +DecD vunpack(storagetype : storagetype) : vectype +[visit_id storagetype] not free +[check_dims] vectype +[visit_exp (vectype : vectype <: storagetype)] +[visit_exp vectype] +[visit_id vectype] +[visit_exp vectype] +[visit_id vectype] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $vunpack{vectype : vectype}((vectype : vectype <: storagetype)) = vectype +[check_dims] storagetype +DecD cunpack(storagetype : storagetype) : consttype +[visit_id storagetype] not free +[check_dims] consttype +[visit_exp (consttype : consttype <: storagetype)] +[visit_exp consttype] +[visit_id consttype] +[visit_exp consttype] +[visit_id consttype] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack{consttype : consttype}((consttype : consttype <: storagetype)) = consttype +[check_dims] packtype +[visit_exp (packtype : packtype <: storagetype)] +[visit_exp packtype] +[visit_id packtype] +[visit_exp `I32`_consttype] +[visit_exp ()] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack{packtype : packtype}((packtype : packtype <: storagetype)) = `I32`_consttype +[check_dims] lanetype +[visit_exp (lanetype : lanetype <: storagetype)] +[visit_exp lanetype] +[visit_id lanetype] +[visit_exp ($lunpack(lanetype) : numtype <: consttype)] +[visit_exp $lunpack(lanetype)] +[visit_exp lanetype] +[visit_id lanetype] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $cunpack{lanetype : lanetype}((lanetype : lanetype <: storagetype)) = ($lunpack(lanetype) : numtype <: consttype) +[check_dims] addrtype +DecD minat(addrtype : addrtype, addrtype : addrtype) : addrtype +[visit_id addrtype] not free +[visit_id addrtype] not free +[check_dims] at_1 at_2 +[visit_exp at_1] +[visit_id at_1] +[visit_exp at_2] +[visit_id at_2] +[visit_exp at_1] +[visit_id at_1] not free +[visit_exp ($size((at_1 : addrtype <: numtype)) <= $size((at_2 : addrtype <: numtype)))] +[visit_exp $size((at_1 : addrtype <: numtype))] +[visit_exp (at_1 : addrtype <: numtype)] +[visit_exp at_1] +[visit_id at_1] not free +[visit_exp $size((at_2 : addrtype <: numtype))] +[visit_exp (at_2 : addrtype <: numtype)] +[visit_exp at_2] +[visit_id at_2] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $minat{at_1 : addrtype, at_2 : addrtype}(at_1, at_2) = at_1 + -- if ($size((at_1 : addrtype <: numtype)) <= $size((at_2 : addrtype <: numtype))) +[check_dims] at_1 at_2 +[visit_exp at_1] +[visit_id at_1] +[visit_exp at_2] +[visit_id at_2] +[visit_exp at_2] +[visit_id at_2] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $minat{at_1 : addrtype, at_2 : addrtype}(at_1, at_2) = at_2 + -- otherwise +[check_dims] reftype +DecD diffrt(reftype : reftype, reftype : reftype) : reftype +[visit_id reftype] not free +[visit_id reftype] not free +[check_dims] heaptype#155 heaptype#167 heaptype#179 ht_1 ht_2 null?#155 null?#167 null?#179 null_1 +[visit_exp `REF`_reftype{`null?#155`, heaptype#155}(null_1?{null_1 <- `null_1?`}, ht_1)] +[visit_exp `null?#155`] +[visit_id null?#155] +[visit_exp heaptype#155] +[visit_id heaptype#155] +[visit_exp (null_1?{null_1 <- `null_1?`}, ht_1)] +[visit_exp null_1?{null_1 <- `null_1?`}] +[scope_enter null_1] +[visit_exp null_1] +[visit_id null_1] not free +[visit_id null_1] not free +[scope_exit null_1] +[visit_exp `null_1?`] +[visit_id null_1?] no dims +[visit_id null_1?] +[visit_exp ht_1] +[visit_id ht_1] +[visit_exp `REF`_reftype{`null?#167`, heaptype#167}(?(`NULL`_null), ht_2)] +[visit_exp `null?#167`] +[visit_id null?#167] +[visit_exp heaptype#167] +[visit_id heaptype#167] +[visit_exp (?(`NULL`_null), ht_2)] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp ht_2] +[visit_id ht_2] +[visit_exp `REF`_reftype{`null?#179`, heaptype#179}(?(), ht_1)] +[visit_exp `null?#179`] +[visit_id null?#179] +[visit_exp heaptype#179] +[visit_id heaptype#179] +[visit_exp (?(), ht_1)] +[visit_exp ?()] +[visit_exp ht_1] +[visit_id ht_1] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $diffrt{`null?#155` : null?, heaptype#155 : heaptype, `null_1?` : null?, ht_1 : heaptype, `null?#167` : null?, heaptype#167 : heaptype, ht_2 : heaptype, `null?#179` : null?, heaptype#179 : heaptype}(`REF`_reftype{`null?#155`, heaptype#155}(null_1?{null_1 <- `null_1?`}, ht_1), `REF`_reftype{`null?#167`, heaptype#167}(?(`NULL`_null), ht_2)) = `REF`_reftype{`null?#179`, heaptype#179}(?(), ht_1) +[check_dims] heaptype#191 heaptype#203 heaptype#215 ht_1 ht_2 null?#191 null?#203 null?#215 null_1 +[visit_exp `REF`_reftype{`null?#191`, heaptype#191}(null_1?{null_1 <- `null_1?`}, ht_1)] +[visit_exp `null?#191`] +[visit_id null?#191] +[visit_exp heaptype#191] +[visit_id heaptype#191] +[visit_exp (null_1?{null_1 <- `null_1?`}, ht_1)] +[visit_exp null_1?{null_1 <- `null_1?`}] +[scope_enter null_1] +[visit_exp null_1] +[visit_id null_1] not free +[visit_id null_1] not free +[scope_exit null_1] +[visit_exp `null_1?`] +[visit_id null_1?] no dims +[visit_id null_1?] +[visit_exp ht_1] +[visit_id ht_1] +[visit_exp `REF`_reftype{`null?#203`, heaptype#203}(?(), ht_2)] +[visit_exp `null?#203`] +[visit_id null?#203] +[visit_exp heaptype#203] +[visit_id heaptype#203] +[visit_exp (?(), ht_2)] +[visit_exp ?()] +[visit_exp ht_2] +[visit_id ht_2] +[visit_exp `REF`_reftype{`null?#215`, heaptype#215}(null_1?{null_1 <- `null_1?`}, ht_1)] +[visit_exp `null?#215`] +[visit_id null?#215] +[visit_exp heaptype#215] +[visit_id heaptype#215] +[visit_exp (null_1?{null_1 <- `null_1?`}, ht_1)] +[visit_exp null_1?{null_1 <- `null_1?`}] +[scope_enter null_1] +[visit_exp null_1] +[visit_id null_1] not free +[visit_id null_1] not free +[scope_exit null_1] +[visit_exp `null_1?`] +[visit_id null_1?] not free +[visit_id null_1?] no dims +[visit_exp ht_1] +[visit_id ht_1] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $diffrt{`null?#191` : null?, heaptype#191 : heaptype, `null_1?` : null?, ht_1 : heaptype, `null?#203` : null?, heaptype#203 : heaptype, ht_2 : heaptype, `null?#215` : null?, heaptype#215 : heaptype}(`REF`_reftype{`null?#191`, heaptype#191}(null_1?{null_1 <- `null_1?`}, ht_1), `REF`_reftype{`null?#203`, heaptype#203}(?(), ht_2)) = `REF`_reftype{`null?#215`, heaptype#215}(null_1?{null_1 <- `null_1?`}, ht_1) +[check_dims] typeuse +DecD as_deftype(typeuse : typeuse) : deftype +[visit_id typeuse] not free +[check_dims] dt +[visit_exp (dt : deftype <: typeuse)] +[visit_exp dt] +[visit_id dt] +[visit_exp dt] +[visit_id dt] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $as_deftype{dt : deftype}((dt : deftype <: typeuse)) = dt +[check_dims] _ +DecD tagsxt(externtype*) : tagtype* +[visit_id _] not free +[check_dims] _ +DecD globalsxt(externtype*) : globaltype* +[visit_id _] not free +[check_dims] _ +DecD memsxt(externtype*) : memtype* +[visit_id _] not free +[check_dims] _ +DecD tablesxt(externtype*) : tabletype* +[visit_id _] not free +[check_dims] _ +DecD funcsxt(externtype*) : deftype* +[visit_id _] not free +[check_dims] +[visit_exp []] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $tagsxt([]) = [] +[check_dims] jt tagtype#1 xt +[visit_exp [`TAG`_externtype{tagtype#1}(jt)] ++ xt*{xt <- `xt*`}] +[visit_exp [`TAG`_externtype{tagtype#1}(jt)]] +[visit_exp `TAG`_externtype{tagtype#1}(jt)] +[visit_exp tagtype#1] +[visit_id tagtype#1] +[visit_exp (jt)] +[visit_exp jt] +[visit_id jt] +[visit_exp xt*{xt <- `xt*`}] +[scope_enter xt] +[visit_exp xt] +[visit_id xt] not free +[visit_id xt] not free +[scope_exit xt] +[visit_exp `xt*`] +[visit_id xt*] no dims +[visit_id xt*] +[visit_exp [jt] ++ $tagsxt(xt*{xt <- `xt*`})] +[visit_exp [jt]] +[visit_exp jt] +[visit_id jt] not free +[visit_exp $tagsxt(xt*{xt <- `xt*`})] +[visit_exp xt*{xt <- `xt*`}] +[scope_enter xt] +[visit_exp xt] +[visit_id xt] not free +[visit_id xt] not free +[scope_exit xt] +[visit_exp `xt*`] +[visit_id xt*] not free +[visit_id xt*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $tagsxt{tagtype#1 : tagtype, jt : tagtype, `xt*` : externtype*}([`TAG`_externtype{tagtype#1}(jt)] ++ xt*{xt <- `xt*`}) = [jt] ++ $tagsxt(xt*{xt <- `xt*`}) +[check_dims] externtype xt +[visit_exp [externtype] ++ xt*{xt <- `xt*`}] +[visit_exp [externtype]] +[visit_exp externtype] +[visit_id externtype] +[visit_exp xt*{xt <- `xt*`}] +[scope_enter xt] +[visit_exp xt] +[visit_id xt] not free +[visit_id xt] not free +[scope_exit xt] +[visit_exp `xt*`] +[visit_id xt*] no dims +[visit_id xt*] +[visit_exp $tagsxt(xt*{xt <- `xt*`})] +[visit_exp xt*{xt <- `xt*`}] +[scope_enter xt] +[visit_exp xt] +[visit_id xt] not free +[visit_id xt] not free +[scope_exit xt] +[visit_exp `xt*`] +[visit_id xt*] not free +[visit_id xt*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $tagsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tagsxt(xt*{xt <- `xt*`}) + -- otherwise +[check_dims] +[visit_exp []] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $globalsxt([]) = [] +[check_dims] globaltype#1 gt xt +[visit_exp [`GLOBAL`_externtype{globaltype#1}(gt)] ++ xt*{xt <- `xt*`}] +[visit_exp [`GLOBAL`_externtype{globaltype#1}(gt)]] +[visit_exp `GLOBAL`_externtype{globaltype#1}(gt)] +[visit_exp globaltype#1] +[visit_id globaltype#1] +[visit_exp (gt)] +[visit_exp gt] +[visit_id gt] +[visit_exp xt*{xt <- `xt*`}] +[scope_enter xt] +[visit_exp xt] +[visit_id xt] not free +[visit_id xt] not free +[scope_exit xt] +[visit_exp `xt*`] +[visit_id xt*] no dims +[visit_id xt*] +[visit_exp [gt] ++ $globalsxt(xt*{xt <- `xt*`})] +[visit_exp [gt]] +[visit_exp gt] +[visit_id gt] not free +[visit_exp $globalsxt(xt*{xt <- `xt*`})] +[visit_exp xt*{xt <- `xt*`}] +[scope_enter xt] +[visit_exp xt] +[visit_id xt] not free +[visit_id xt] not free +[scope_exit xt] +[visit_exp `xt*`] +[visit_id xt*] not free +[visit_id xt*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $globalsxt{globaltype#1 : globaltype, gt : globaltype, `xt*` : externtype*}([`GLOBAL`_externtype{globaltype#1}(gt)] ++ xt*{xt <- `xt*`}) = [gt] ++ $globalsxt(xt*{xt <- `xt*`}) +[check_dims] externtype xt +[visit_exp [externtype] ++ xt*{xt <- `xt*`}] +[visit_exp [externtype]] +[visit_exp externtype] +[visit_id externtype] +[visit_exp xt*{xt <- `xt*`}] +[scope_enter xt] +[visit_exp xt] +[visit_id xt] not free +[visit_id xt] not free +[scope_exit xt] +[visit_exp `xt*`] +[visit_id xt*] no dims +[visit_id xt*] +[visit_exp $globalsxt(xt*{xt <- `xt*`})] +[visit_exp xt*{xt <- `xt*`}] +[scope_enter xt] +[visit_exp xt] +[visit_id xt] not free +[visit_id xt] not free +[scope_exit xt] +[visit_exp `xt*`] +[visit_id xt*] not free +[visit_id xt*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $globalsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $globalsxt(xt*{xt <- `xt*`}) + -- otherwise +[check_dims] +[visit_exp []] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $memsxt([]) = [] +[check_dims] memtype#1 mt xt +[visit_exp [`MEM`_externtype{memtype#1}(mt)] ++ xt*{xt <- `xt*`}] +[visit_exp [`MEM`_externtype{memtype#1}(mt)]] +[visit_exp `MEM`_externtype{memtype#1}(mt)] +[visit_exp memtype#1] +[visit_id memtype#1] +[visit_exp (mt)] +[visit_exp mt] +[visit_id mt] +[visit_exp xt*{xt <- `xt*`}] +[scope_enter xt] +[visit_exp xt] +[visit_id xt] not free +[visit_id xt] not free +[scope_exit xt] +[visit_exp `xt*`] +[visit_id xt*] no dims +[visit_id xt*] +[visit_exp [mt] ++ $memsxt(xt*{xt <- `xt*`})] +[visit_exp [mt]] +[visit_exp mt] +[visit_id mt] not free +[visit_exp $memsxt(xt*{xt <- `xt*`})] +[visit_exp xt*{xt <- `xt*`}] +[scope_enter xt] +[visit_exp xt] +[visit_id xt] not free +[visit_id xt] not free +[scope_exit xt] +[visit_exp `xt*`] +[visit_id xt*] not free +[visit_id xt*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $memsxt{memtype#1 : memtype, mt : memtype, `xt*` : externtype*}([`MEM`_externtype{memtype#1}(mt)] ++ xt*{xt <- `xt*`}) = [mt] ++ $memsxt(xt*{xt <- `xt*`}) +[check_dims] externtype xt +[visit_exp [externtype] ++ xt*{xt <- `xt*`}] +[visit_exp [externtype]] +[visit_exp externtype] +[visit_id externtype] +[visit_exp xt*{xt <- `xt*`}] +[scope_enter xt] +[visit_exp xt] +[visit_id xt] not free +[visit_id xt] not free +[scope_exit xt] +[visit_exp `xt*`] +[visit_id xt*] no dims +[visit_id xt*] +[visit_exp $memsxt(xt*{xt <- `xt*`})] +[visit_exp xt*{xt <- `xt*`}] +[scope_enter xt] +[visit_exp xt] +[visit_id xt] not free +[visit_id xt] not free +[scope_exit xt] +[visit_exp `xt*`] +[visit_id xt*] not free +[visit_id xt*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $memsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $memsxt(xt*{xt <- `xt*`}) + -- otherwise +[check_dims] +[visit_exp []] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $tablesxt([]) = [] +[check_dims] tabletype#1 tt xt +[visit_exp [`TABLE`_externtype{tabletype#1}(tt)] ++ xt*{xt <- `xt*`}] +[visit_exp [`TABLE`_externtype{tabletype#1}(tt)]] +[visit_exp `TABLE`_externtype{tabletype#1}(tt)] +[visit_exp tabletype#1] +[visit_id tabletype#1] +[visit_exp (tt)] +[visit_exp tt] +[visit_id tt] +[visit_exp xt*{xt <- `xt*`}] +[scope_enter xt] +[visit_exp xt] +[visit_id xt] not free +[visit_id xt] not free +[scope_exit xt] +[visit_exp `xt*`] +[visit_id xt*] no dims +[visit_id xt*] +[visit_exp [tt] ++ $tablesxt(xt*{xt <- `xt*`})] +[visit_exp [tt]] +[visit_exp tt] +[visit_id tt] not free +[visit_exp $tablesxt(xt*{xt <- `xt*`})] +[visit_exp xt*{xt <- `xt*`}] +[scope_enter xt] +[visit_exp xt] +[visit_id xt] not free +[visit_id xt] not free +[scope_exit xt] +[visit_exp `xt*`] +[visit_id xt*] not free +[visit_id xt*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $tablesxt{tabletype#1 : tabletype, tt : tabletype, `xt*` : externtype*}([`TABLE`_externtype{tabletype#1}(tt)] ++ xt*{xt <- `xt*`}) = [tt] ++ $tablesxt(xt*{xt <- `xt*`}) +[check_dims] externtype xt +[visit_exp [externtype] ++ xt*{xt <- `xt*`}] +[visit_exp [externtype]] +[visit_exp externtype] +[visit_id externtype] +[visit_exp xt*{xt <- `xt*`}] +[scope_enter xt] +[visit_exp xt] +[visit_id xt] not free +[visit_id xt] not free +[scope_exit xt] +[visit_exp `xt*`] +[visit_id xt*] no dims +[visit_id xt*] +[visit_exp $tablesxt(xt*{xt <- `xt*`})] +[visit_exp xt*{xt <- `xt*`}] +[scope_enter xt] +[visit_exp xt] +[visit_id xt] not free +[visit_id xt] not free +[scope_exit xt] +[visit_exp `xt*`] +[visit_id xt*] not free +[visit_id xt*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $tablesxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tablesxt(xt*{xt <- `xt*`}) + -- otherwise +[check_dims] +[visit_exp []] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $funcsxt([]) = [] +[check_dims] dt typeuse#1 xt +[visit_exp [`FUNC`_externtype{typeuse#1}((dt : deftype <: typeuse))] ++ xt*{xt <- `xt*`}] +[visit_exp [`FUNC`_externtype{typeuse#1}((dt : deftype <: typeuse))]] +[visit_exp `FUNC`_externtype{typeuse#1}((dt : deftype <: typeuse))] +[visit_exp typeuse#1] +[visit_id typeuse#1] +[visit_exp ((dt : deftype <: typeuse))] +[visit_exp (dt : deftype <: typeuse)] +[visit_exp dt] +[visit_id dt] +[visit_exp xt*{xt <- `xt*`}] +[scope_enter xt] +[visit_exp xt] +[visit_id xt] not free +[visit_id xt] not free +[scope_exit xt] +[visit_exp `xt*`] +[visit_id xt*] no dims +[visit_id xt*] +[visit_exp [dt] ++ $funcsxt(xt*{xt <- `xt*`})] +[visit_exp [dt]] +[visit_exp dt] +[visit_id dt] not free +[visit_exp $funcsxt(xt*{xt <- `xt*`})] +[visit_exp xt*{xt <- `xt*`}] +[scope_enter xt] +[visit_exp xt] +[visit_id xt] not free +[visit_id xt] not free +[scope_exit xt] +[visit_exp `xt*`] +[visit_id xt*] not free +[visit_id xt*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $funcsxt{typeuse#1 : typeuse, dt : deftype, `xt*` : externtype*}([`FUNC`_externtype{typeuse#1}((dt : deftype <: typeuse))] ++ xt*{xt <- `xt*`}) = [dt] ++ $funcsxt(xt*{xt <- `xt*`}) +[check_dims] externtype xt +[visit_exp [externtype] ++ xt*{xt <- `xt*`}] +[visit_exp [externtype]] +[visit_exp externtype] +[visit_id externtype] +[visit_exp xt*{xt <- `xt*`}] +[scope_enter xt] +[visit_exp xt] +[visit_id xt] not free +[visit_id xt] not free +[scope_exit xt] +[visit_exp `xt*`] +[visit_id xt*] no dims +[visit_id xt*] +[visit_exp $funcsxt(xt*{xt <- `xt*`})] +[visit_exp xt*{xt <- `xt*`}] +[scope_enter xt] +[visit_exp xt] +[visit_id xt] not free +[visit_id xt] not free +[scope_exit xt] +[visit_exp `xt*`] +[visit_id xt*] not free +[visit_id xt*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $funcsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $funcsxt(xt*{xt <- `xt*`}) + -- otherwise +[check_dims] _ typevar +DecD subst_typevar(typevar : typevar, typevar*, typeuse*) : typeuse +[visit_id typevar] not free +[visit_id _] not free +[visit_id _] not free +[check_dims] _ typeuse +DecD subst_typeuse(typeuse : typeuse, typevar*, typeuse*) : typeuse +[visit_id typeuse] not free +[visit_id _] not free +[visit_id _] not free +[check_dims] _ addrtype +DecD subst_addrtype(addrtype : addrtype, typevar*, typeuse*) : addrtype +[visit_id addrtype] not free +[visit_id _] not free +[visit_id _] not free +[check_dims] _ numtype +DecD subst_numtype(numtype : numtype, typevar*, typeuse*) : numtype +[visit_id numtype] not free +[visit_id _] not free +[visit_id _] not free +[check_dims] _ vectype +DecD subst_vectype(vectype : vectype, typevar*, typeuse*) : vectype +[visit_id vectype] not free +[visit_id _] not free +[visit_id _] not free +[check_dims] _ heaptype +DecD subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype +[visit_id heaptype] not free +[visit_id _] not free +[visit_id _] not free +[check_dims] _ reftype +DecD subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype +[visit_id reftype] not free +[visit_id _] not free +[visit_id _] not free +[check_dims] _ valtype +DecD subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype +[visit_id valtype] not free +[visit_id _] not free +[visit_id _] not free +[check_dims] _ packtype +DecD subst_packtype(packtype : packtype, typevar*, typeuse*) : packtype +[visit_id packtype] not free +[visit_id _] not free +[visit_id _] not free +[check_dims] _ storagetype +DecD subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype +[visit_id storagetype] not free +[visit_id _] not free +[visit_id _] not free +[check_dims] _ fieldtype +DecD subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype +[visit_id fieldtype] not free +[visit_id _] not free +[visit_id _] not free +[check_dims] _ comptype +DecD subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype +[visit_id comptype] not free +[visit_id _] not free +[visit_id _] not free +[check_dims] _ subtype +DecD subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype +[visit_id subtype] not free +[visit_id _] not free +[visit_id _] not free +[check_dims] _ rectype +DecD subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype +[visit_id rectype] not free +[visit_id _] not free +[visit_id _] not free +[check_dims] _ deftype +DecD subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype +[visit_id deftype] not free +[visit_id _] not free +[visit_id _] not free +[check_dims] _ tagtype +DecD subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype +[visit_id tagtype] not free +[visit_id _] not free +[visit_id _] not free +[check_dims] _ globaltype +DecD subst_globaltype(globaltype : globaltype, typevar*, typeuse*) : globaltype +[visit_id globaltype] not free +[visit_id _] not free +[visit_id _] not free +[check_dims] _ memtype +DecD subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype +[visit_id memtype] not free +[visit_id _] not free +[visit_id _] not free +[check_dims] _ tabletype +DecD subst_tabletype(tabletype : tabletype, typevar*, typeuse*) : tabletype +[visit_id tabletype] not free +[visit_id _] not free +[visit_id _] not free +[check_dims] _ externtype +DecD subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype +[visit_id externtype] not free +[visit_id _] not free +[visit_id _] not free +[check_dims] _ moduletype +DecD subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype +[visit_id moduletype] not free +[visit_id _] not free +[visit_id _] not free +[check_dims] tv +[visit_exp tv] +[visit_id tv] +[visit_exp []] +[visit_exp []] +[visit_exp (tv : typevar <: typeuse)] +[visit_exp tv] +[visit_id tv] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_typevar{tv : typevar}(tv, [], []) = (tv : typevar <: typeuse) +[check_dims] tu' tu_1 tv tv' tv_1 +[visit_exp tv] +[visit_id tv] +[visit_exp [tv_1] ++ tv'*{tv' <- `tv'*`}] +[visit_exp [tv_1]] +[visit_exp tv_1] +[visit_id tv_1] +[visit_exp tv'*{tv' <- `tv'*`}] +[scope_enter tv'] +[visit_exp tv'] +[visit_id tv'] not free +[visit_id tv'] not free +[scope_exit tv'] +[visit_exp `tv'*`] +[visit_id tv'*] no dims +[visit_id tv'*] +[visit_exp [tu_1] ++ tu'*{tu' <- `tu'*`}] +[visit_exp [tu_1]] +[visit_exp tu_1] +[visit_id tu_1] +[visit_exp tu'*{tu' <- `tu'*`}] +[scope_enter tu'] +[visit_exp tu'] +[visit_id tu'] not free +[visit_id tu'] not free +[scope_exit tu'] +[visit_exp `tu'*`] +[visit_id tu'*] no dims +[visit_id tu'*] +[visit_exp tu_1] +[visit_id tu_1] not free +[visit_exp (tv = tv_1)] +[visit_exp tv] +[visit_id tv] not free +[visit_exp tv_1] +[visit_id tv_1] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + 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) +[check_dims] tu' tu_1 tv tv' tv_1 +[visit_exp tv] +[visit_id tv] +[visit_exp [tv_1] ++ tv'*{tv' <- `tv'*`}] +[visit_exp [tv_1]] +[visit_exp tv_1] +[visit_id tv_1] +[visit_exp tv'*{tv' <- `tv'*`}] +[scope_enter tv'] +[visit_exp tv'] +[visit_id tv'] not free +[visit_id tv'] not free +[scope_exit tv'] +[visit_exp `tv'*`] +[visit_id tv'*] no dims +[visit_id tv'*] +[visit_exp [tu_1] ++ tu'*{tu' <- `tu'*`}] +[visit_exp [tu_1]] +[visit_exp tu_1] +[visit_id tu_1] +[visit_exp tu'*{tu' <- `tu'*`}] +[scope_enter tu'] +[visit_exp tu'] +[visit_id tu'] not free +[visit_id tu'] not free +[scope_exit tu'] +[visit_exp `tu'*`] +[visit_id tu'*] no dims +[visit_id tu'*] +[visit_exp $subst_typevar(tv, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})] +[visit_exp tv] +[visit_id tv] not free +[visit_exp tv'*{tv' <- `tv'*`}] +[scope_enter tv'] +[visit_exp tv'] +[visit_id tv'] not free +[visit_id tv'] not free +[scope_exit tv'] +[visit_exp `tv'*`] +[visit_id tv'*] not free +[visit_id tv'*] no dims +[visit_exp tu'*{tu' <- `tu'*`}] +[scope_enter tu'] +[visit_exp tu'] +[visit_id tu'] not free +[visit_id tu'] not free +[scope_exit tu'] +[visit_exp `tu'*`] +[visit_id tu'*] not free +[visit_id tu'*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + 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 +[check_dims] tu tv tv' +[visit_exp (tv' : typevar <: typeuse)] +[visit_exp tv'] +[visit_id tv'] +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] no dims +[visit_id tv*] +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] no dims +[visit_id tu*] +[visit_exp $subst_typevar(tv', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] +[visit_exp tv'] +[visit_id tv'] not free +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] not free +[visit_id tv*] no dims +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] not free +[visit_id tu*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + 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*`}) +[check_dims] dt tu tv +[visit_exp (dt : deftype <: typeuse)] +[visit_exp dt] +[visit_id dt] +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] no dims +[visit_id tv*] +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] no dims +[visit_id tu*] +[visit_exp ($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse)] +[visit_exp $subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] +[visit_exp dt] +[visit_id dt] not free +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] not free +[visit_id tv*] no dims +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] not free +[visit_id tu*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + 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) +[check_dims] at tu tv +[visit_exp at] +[visit_id at] +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] no dims +[visit_id tv*] +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] no dims +[visit_id tu*] +[visit_exp at] +[visit_id at] not free +=> + ;; ../../../../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 +[check_dims] nt tu tv +[visit_exp nt] +[visit_id nt] +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] no dims +[visit_id tv*] +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] no dims +[visit_id tu*] +[visit_exp nt] +[visit_id nt] not free +=> + ;; ../../../../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 +[check_dims] tu tv vt +[visit_exp vt] +[visit_id vt] +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] no dims +[visit_id tv*] +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] no dims +[visit_id tu*] +[visit_exp vt] +[visit_id vt] not free +=> + ;; ../../../../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 +[check_dims] tu tv tv' +[visit_exp (tv' : typevar <: heaptype)] +[visit_exp tv'] +[visit_id tv'] +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] no dims +[visit_id tv*] +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] no dims +[visit_id tu*] +[visit_exp ($subst_typevar(tv', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : typeuse <: heaptype)] +[visit_exp $subst_typevar(tv', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] +[visit_exp tv'] +[visit_id tv'] not free +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] not free +[visit_id tv*] no dims +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] not free +[visit_id tu*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + 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) +[check_dims] dt tu tv +[visit_exp (dt : deftype <: heaptype)] +[visit_exp dt] +[visit_id dt] +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] no dims +[visit_id tv*] +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] no dims +[visit_id tu*] +[visit_exp ($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: heaptype)] +[visit_exp $subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] +[visit_exp dt] +[visit_id dt] not free +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] not free +[visit_id tv*] no dims +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] not free +[visit_id tu*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + 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) +[check_dims] ht tu tv +[visit_exp ht] +[visit_id ht] +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] no dims +[visit_id tv*] +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] no dims +[visit_id tu*] +[visit_exp ht] +[visit_id ht] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_heaptype{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ht + -- otherwise +[check_dims] heaptype#227 heaptype#239 ht null null?#227 null?#239 tu tv +[visit_exp `REF`_reftype{`null?#227`, heaptype#227}(null?{null <- `null?`}, ht)] +[visit_exp `null?#227`] +[visit_id null?#227] +[visit_exp heaptype#227] +[visit_id heaptype#227] +[visit_exp (null?{null <- `null?`}, ht)] +[visit_exp null?{null <- `null?`}] +[scope_enter null] +[visit_exp null] +[visit_id null] not free +[visit_id null] not free +[scope_exit null] +[visit_exp `null?`] +[visit_id null?] no dims +[visit_id null?] +[visit_exp ht] +[visit_id ht] +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] no dims +[visit_id tv*] +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] no dims +[visit_id tu*] +[visit_exp `REF`_reftype{`null?#239`, heaptype#239}(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] +[visit_exp `null?#239`] +[visit_id null?#239] +[visit_exp heaptype#239] +[visit_id heaptype#239] +[visit_exp (null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] +[visit_exp null?{null <- `null?`}] +[scope_enter null] +[visit_exp null] +[visit_id null] not free +[visit_id null] not free +[scope_exit null] +[visit_exp `null?`] +[visit_id null?] not free +[visit_id null?] no dims +[visit_exp $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] +[visit_exp ht] +[visit_id ht] not free +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] not free +[visit_id tv*] no dims +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] not free +[visit_id tu*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_reftype{`null?#227` : null?, heaptype#227 : heaptype, `null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*, `null?#239` : null?, heaptype#239 : heaptype}(`REF`_reftype{`null?#227`, heaptype#227}(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `REF`_reftype{`null?#239`, heaptype#239}(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) +[check_dims] nt tu tv +[visit_exp (nt : numtype <: valtype)] +[visit_exp nt] +[visit_id nt] +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] no dims +[visit_id tv*] +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] no dims +[visit_id tu*] +[visit_exp ($subst_numtype(nt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : numtype <: valtype)] +[visit_exp $subst_numtype(nt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] +[visit_exp nt] +[visit_id nt] not free +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] not free +[visit_id tv*] no dims +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] not free +[visit_id tu*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + 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) +[check_dims] tu tv vt +[visit_exp (vt : vectype <: valtype)] +[visit_exp vt] +[visit_id vt] +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] no dims +[visit_id tv*] +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] no dims +[visit_id tu*] +[visit_exp ($subst_vectype(vt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : vectype <: valtype)] +[visit_exp $subst_vectype(vt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] +[visit_exp vt] +[visit_id vt] not free +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] not free +[visit_id tv*] no dims +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] not free +[visit_id tu*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + 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) +[check_dims] rt tu tv +[visit_exp (rt : reftype <: valtype)] +[visit_exp rt] +[visit_id rt] +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] no dims +[visit_id tv*] +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] no dims +[visit_id tu*] +[visit_exp ($subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : reftype <: valtype)] +[visit_exp $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] +[visit_exp rt] +[visit_id rt] not free +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] not free +[visit_id tv*] no dims +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] not free +[visit_id tu*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + 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) +[check_dims] tu tv +[visit_exp `BOT`_valtype] +[visit_exp ()] +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] no dims +[visit_id tv*] +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] no dims +[visit_id tu*] +[visit_exp `BOT`_valtype] +[visit_exp ()] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(`BOT`_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `BOT`_valtype +[check_dims] pt tu tv +[visit_exp pt] +[visit_id pt] +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] no dims +[visit_id tv*] +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] no dims +[visit_id tu*] +[visit_exp pt] +[visit_id pt] not free +=> + ;; ../../../../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 +[check_dims] t tu tv +[visit_exp (t : valtype <: storagetype)] +[visit_exp t] +[visit_id t] +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] no dims +[visit_id tv*] +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] no dims +[visit_id tu*] +[visit_exp ($subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : valtype <: storagetype)] +[visit_exp $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] +[visit_exp t] +[visit_id t] not free +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] not free +[visit_id tv*] no dims +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] not free +[visit_id tu*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + 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) +[check_dims] pt tu tv +[visit_exp (pt : packtype <: storagetype)] +[visit_exp pt] +[visit_id pt] +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] no dims +[visit_id tv*] +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] no dims +[visit_id tu*] +[visit_exp ($subst_packtype(pt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : packtype <: storagetype)] +[visit_exp $subst_packtype(pt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] +[visit_exp pt] +[visit_id pt] not free +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] not free +[visit_id tv*] no dims +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] not free +[visit_id tu*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + 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) +[check_dims] mut mut?#67 mut?#79 storagetype#11 storagetype#23 tu tv zt +[visit_exp `%%`_fieldtype{`mut?#67`, storagetype#11}(mut?{mut <- `mut?`}, zt)] +[visit_exp `mut?#67`] +[visit_id mut?#67] +[visit_exp storagetype#11] +[visit_id storagetype#11] +[visit_exp (mut?{mut <- `mut?`}, zt)] +[visit_exp mut?{mut <- `mut?`}] +[scope_enter mut] +[visit_exp mut] +[visit_id mut] not free +[visit_id mut] not free +[scope_exit mut] +[visit_exp `mut?`] +[visit_id mut?] no dims +[visit_id mut?] +[visit_exp zt] +[visit_id zt] +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] no dims +[visit_id tv*] +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] no dims +[visit_id tu*] +[visit_exp `%%`_fieldtype{`mut?#79`, storagetype#23}(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] +[visit_exp `mut?#79`] +[visit_id mut?#79] +[visit_exp storagetype#23] +[visit_id storagetype#23] +[visit_exp (mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] +[visit_exp mut?{mut <- `mut?`}] +[scope_enter mut] +[visit_exp mut] +[visit_id mut] not free +[visit_id mut] not free +[scope_exit mut] +[visit_exp `mut?`] +[visit_id mut?] not free +[visit_id mut?] no dims +[visit_exp $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] +[visit_exp zt] +[visit_id zt] not free +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] not free +[visit_id tv*] no dims +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] not free +[visit_id tu*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_fieldtype{`mut?#67` : mut?, storagetype#11 : storagetype, `mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*, `mut?#79` : mut?, storagetype#23 : storagetype}(`%%`_fieldtype{`mut?#67`, storagetype#11}(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype{`mut?#79`, storagetype#23}(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) +[check_dims] X*#11 X*#26 ft tu tv +[visit_exp `STRUCT`_comptype(`%`_list{`X*#11`}(ft*{ft <- `ft*`}))] +[visit_exp (`%`_list{`X*#11`}(ft*{ft <- `ft*`}))] +[visit_exp `%`_list{`X*#11`}(ft*{ft <- `ft*`})] +[visit_exp `X*#11`] +[visit_id X*#11] +[visit_exp (ft*{ft <- `ft*`})] +[visit_exp ft*{ft <- `ft*`}] +[scope_enter ft] +[visit_exp ft] +[visit_id ft] not free +[visit_id ft] not free +[scope_exit ft] +[visit_exp `ft*`] +[visit_id ft*] no dims +[visit_id ft*] +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] no dims +[visit_id tv*] +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] no dims +[visit_id tu*] +[visit_exp `STRUCT`_comptype(`%`_list{`X*#26`}($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}))] +[visit_exp (`%`_list{`X*#26`}($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}))] +[visit_exp `%`_list{`X*#26`}($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})] +[visit_exp `X*#26`] +[visit_id X*#26] +[visit_exp ($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})] +[visit_exp $subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}] +[scope_enter ft] +[visit_exp $subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] +[visit_exp ft] +[visit_id ft] not free +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] not free +[visit_id tv*] no dims +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] not free +[visit_id tu*] no dims +[visit_id ft] not free +[scope_exit ft] +[visit_exp `ft*`] +[visit_id ft*] not free +[visit_id ft*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_comptype{`X*#11` : fieldtype*, `ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*, `X*#26` : fieldtype*}(`STRUCT`_comptype(`%`_list{`X*#11`}(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `STRUCT`_comptype(`%`_list{`X*#26`}($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) +[check_dims] fieldtype#1 fieldtype#3 ft tu tv +[visit_exp `ARRAY`_comptype{fieldtype#1}(ft)] +[visit_exp fieldtype#1] +[visit_id fieldtype#1] +[visit_exp (ft)] +[visit_exp ft] +[visit_id ft] +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] no dims +[visit_id tv*] +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] no dims +[visit_id tu*] +[visit_exp `ARRAY`_comptype{fieldtype#3}($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] +[visit_exp fieldtype#3] +[visit_id fieldtype#3] +[visit_exp ($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] +[visit_exp $subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] +[visit_exp ft] +[visit_id ft] not free +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] not free +[visit_id tv*] no dims +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] not free +[visit_id tu*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_comptype{fieldtype#1 : fieldtype, ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*, fieldtype#3 : fieldtype}(`ARRAY`_comptype{fieldtype#1}(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `ARRAY`_comptype{fieldtype#3}($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) +[check_dims] X*#41 X*#54 X*#69 X*#82 resulttype#1 resulttype#4 t_1 t_2 tu tv +[visit_exp `FUNC%->%`_comptype{resulttype#1}(`%`_resulttype{`X*#41`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#54`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#1] +[visit_id resulttype#1] +[visit_exp (`%`_resulttype{`X*#41`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#54`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#41`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#41`] +[visit_id X*#41] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] no dims +[visit_id t_1*] +[visit_exp `%`_resulttype{`X*#54`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#54`] +[visit_id X*#54] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] no dims +[visit_id t_2*] +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] no dims +[visit_id tv*] +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] no dims +[visit_id tu*] +[visit_exp `FUNC%->%`_comptype{resulttype#4}(`%`_resulttype{`X*#69`}($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype{`X*#82`}($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`}))] +[visit_exp resulttype#4] +[visit_id resulttype#4] +[visit_exp (`%`_resulttype{`X*#69`}($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype{`X*#82`}($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#69`}($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`})] +[visit_exp `X*#69`] +[visit_id X*#69] +[visit_exp ($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`})] +[visit_exp $subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp $subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] +[visit_exp t_1] +[visit_id t_1] not free +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] not free +[visit_id tv*] no dims +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] not free +[visit_id tu*] no dims +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] not free +[visit_id t_1*] no dims +[visit_exp `%`_resulttype{`X*#82`}($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})] +[visit_exp `X*#82`] +[visit_id X*#82] +[visit_exp ($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})] +[visit_exp $subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp $subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] +[visit_exp t_2] +[visit_id t_2] not free +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] not free +[visit_id tv*] no dims +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] not free +[visit_id tu*] no dims +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] not free +[visit_id t_2*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_comptype{resulttype#1 : resulttype, `X*#41` : valtype*, `t_1*` : valtype*, `X*#54` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*, resulttype#4 : resulttype, `X*#69` : valtype*, `X*#82` : valtype*}(`FUNC%->%`_comptype{resulttype#1}(`%`_resulttype{`X*#41`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#54`}(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype{resulttype#4}(`%`_resulttype{`X*#69`}($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype{`X*#82`}($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) +[check_dims] comptype#11 comptype#23 ct final final?#11 final?#23 tu tu' tv typeuse*#11 typeuse*#23 +[visit_exp `SUB`_subtype{`final?#11`, `typeuse*#11`, comptype#11}(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct)] +[visit_exp `final?#11`] +[visit_id final?#11] +[visit_exp `typeuse*#11`] +[visit_id typeuse*#11] +[visit_exp comptype#11] +[visit_id comptype#11] +[visit_exp (final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct)] +[visit_exp final?{final <- `final?`}] +[scope_enter final] +[visit_exp final] +[visit_id final] not free +[visit_id final] not free +[scope_exit final] +[visit_exp `final?`] +[visit_id final?] no dims +[visit_id final?] +[visit_exp tu'*{tu' <- `tu'*`}] +[scope_enter tu'] +[visit_exp tu'] +[visit_id tu'] not free +[visit_id tu'] not free +[scope_exit tu'] +[visit_exp `tu'*`] +[visit_id tu'*] no dims +[visit_id tu'*] +[visit_exp ct] +[visit_id ct] +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] no dims +[visit_id tv*] +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] no dims +[visit_id tu*] +[visit_exp `SUB`_subtype{`final?#23`, `typeuse*#23`, comptype#23}(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] +[visit_exp `final?#23`] +[visit_id final?#23] +[visit_exp `typeuse*#23`] +[visit_id typeuse*#23] +[visit_exp comptype#23] +[visit_id comptype#23] +[visit_exp (final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] +[visit_exp final?{final <- `final?`}] +[scope_enter final] +[visit_exp final] +[visit_id final] not free +[visit_id final] not free +[scope_exit final] +[visit_exp `final?`] +[visit_id final?] not free +[visit_id final?] no dims +[visit_exp $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}] +[scope_enter tu'] +[visit_exp $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] +[visit_exp tu'] +[visit_id tu'] not free +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] not free +[visit_id tv*] no dims +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] not free +[visit_id tu*] no dims +[visit_id tu'] not free +[scope_exit tu'] +[visit_exp `tu'*`] +[visit_id tu'*] not free +[visit_id tu'*] no dims +[visit_exp $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] +[visit_exp ct] +[visit_id ct] not free +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] not free +[visit_id tv*] no dims +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] not free +[visit_id tu*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_subtype{`final?#11` : final?, `typeuse*#11` : typeuse*, comptype#11 : comptype, `final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*, `final?#23` : final?, `typeuse*#23` : typeuse*, comptype#23 : comptype}(`SUB`_subtype{`final?#11`, `typeuse*#11`, comptype#11}(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `SUB`_subtype{`final?#23`, `typeuse*#23`, comptype#23}(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) +[check_dims] _ +DecD minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[check_dims] +[visit_exp []] +[visit_exp []] +[visit_exp ([], [])] +[visit_exp []] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $minus_recs([], []) = ([], []) +[check_dims] n n#53 tu tu_1 tv +[visit_exp [`REC`_typevar{n#53}(n)] ++ tv*{tv <- `tv*`}] +[visit_exp [`REC`_typevar{n#53}(n)]] +[visit_exp `REC`_typevar{n#53}(n)] +[visit_exp n#53] +[visit_id n#53] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] no dims +[visit_id tv*] +[visit_exp [tu_1] ++ tu*{tu <- `tu*`}] +[visit_exp [tu_1]] +[visit_exp tu_1] +[visit_id tu_1] +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] no dims +[visit_id tu*] +[visit_exp $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] not free +[visit_id tv*] no dims +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] not free +[visit_id tu*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $minus_recs{n#53 : n, n : n, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([`REC`_typevar{n#53}(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) +[check_dims] tu tu' tu_1 tv tv' typeidx#1 typeidx#3 x +[visit_exp [`_IDX`_typevar{typeidx#1}(x)] ++ tv*{tv <- `tv*`}] +[visit_exp [`_IDX`_typevar{typeidx#1}(x)]] +[visit_exp `_IDX`_typevar{typeidx#1}(x)] +[visit_exp typeidx#1] +[visit_id typeidx#1] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] no dims +[visit_id tv*] +[visit_exp [tu_1] ++ tu*{tu <- `tu*`}] +[visit_exp [tu_1]] +[visit_exp tu_1] +[visit_id tu_1] +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] no dims +[visit_id tu*] +[visit_exp ([`_IDX`_typevar{typeidx#3}(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`})] +[visit_exp [`_IDX`_typevar{typeidx#3}(x)] ++ tv'*{tv' <- `tv'*`}] +[visit_exp [`_IDX`_typevar{typeidx#3}(x)]] +[visit_exp `_IDX`_typevar{typeidx#3}(x)] +[visit_exp typeidx#3] +[visit_id typeidx#3] +[visit_exp (x)] +[visit_exp x] +[visit_id x] not free +[visit_exp tv'*{tv' <- `tv'*`}] +[scope_enter tv'] +[visit_exp tv'] +[visit_id tv'] not free +[visit_id tv'] not free +[scope_exit tv'] +[visit_exp `tv'*`] +[visit_id tv'*] no dims +[visit_id tv'*] +[visit_exp [tu_1] ++ tu'*{tu' <- `tu'*`}] +[visit_exp [tu_1]] +[visit_exp tu_1] +[visit_id tu_1] not free +[visit_exp tu'*{tu' <- `tu'*`}] +[scope_enter tu'] +[visit_exp tu'] +[visit_id tu'] not free +[visit_id tu'] not free +[scope_exit tu'] +[visit_exp `tu'*`] +[visit_id tu'*] no dims +[visit_id tu'*] +[visit_exp ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] +[visit_exp (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})] +[visit_exp tv'*{tv' <- `tv'*`}] +[scope_enter tv'] +[visit_exp tv'] +[visit_id tv'] not free +[visit_id tv'] not free +[scope_exit tv'] +[visit_exp `tv'*`] +[visit_id tv'*] not free +[visit_id tv'*] no dims +[visit_exp tu'*{tu' <- `tu'*`}] +[scope_enter tu'] +[visit_exp tu'] +[visit_id tu'] not free +[visit_id tu'] not free +[scope_exit tu'] +[visit_exp `tu'*`] +[visit_id tu'*] not free +[visit_id tu'*] no dims +[visit_exp $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] not free +[visit_id tv*] no dims +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] not free +[visit_id tu*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $minus_recs{typeidx#1 : typeidx, x : idx, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, typeidx#3 : typeidx, `tv'*` : typevar*, `tu'*` : typeuse*}([`_IDX`_typevar{typeidx#1}(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ([`_IDX`_typevar{typeidx#3}(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) + -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) +[check_dims] X*#112 X*#97 st tu tu' tv tv' +[visit_exp `REC`_rectype(`%`_list{`X*#97`}(st*{st <- `st*`}))] +[visit_exp (`%`_list{`X*#97`}(st*{st <- `st*`}))] +[visit_exp `%`_list{`X*#97`}(st*{st <- `st*`})] +[visit_exp `X*#97`] +[visit_id X*#97] +[visit_exp (st*{st <- `st*`})] +[visit_exp st*{st <- `st*`}] +[scope_enter st] +[visit_exp st] +[visit_id st] not free +[visit_id st] not free +[scope_exit st] +[visit_exp `st*`] +[visit_id st*] no dims +[visit_id st*] +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] no dims +[visit_id tv*] +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] no dims +[visit_id tu*] +[visit_exp `REC`_rectype(`%`_list{`X*#112`}($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`}))] +[visit_exp (`%`_list{`X*#112`}($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`}))] +[visit_exp `%`_list{`X*#112`}($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})] +[visit_exp `X*#112`] +[visit_id X*#112] +[visit_exp ($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})] +[visit_exp $subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`}] +[scope_enter st] +[visit_exp $subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})] +[visit_exp st] +[visit_id st] not free +[visit_exp tv'*{tv' <- `tv'*`}] +[scope_enter tv'] +[visit_exp tv'] +[visit_id tv'] not free +[visit_id tv'] not free +[scope_exit tv'] +[visit_exp `tv'*`] +[visit_id tv'*] no dims +[visit_id tv'*] +[visit_exp tu'*{tu' <- `tu'*`}] +[scope_enter tu'] +[visit_exp tu'] +[visit_id tu'] not free +[visit_id tu'] not free +[scope_exit tu'] +[visit_exp `tu'*`] +[visit_id tu'*] no dims +[visit_id tu'*] +[visit_id st] not free +[scope_exit st] +[visit_exp `st*`] +[visit_id st*] not free +[visit_id st*] no dims +[visit_exp ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] +[visit_exp (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})] +[visit_exp tv'*{tv' <- `tv'*`}] +[scope_enter tv'] +[visit_exp tv'] +[visit_id tv'] not free +[visit_id tv'] not free +[scope_exit tv'] +[visit_exp `tv'*`] +[visit_id tv'*] not free +[visit_id tv'*] no dims +[visit_exp tu'*{tu' <- `tu'*`}] +[scope_enter tu'] +[visit_exp tu'] +[visit_id tu'] not free +[visit_id tu'] not free +[scope_exit tu'] +[visit_exp `tu'*`] +[visit_id tu'*] not free +[visit_id tu'*] no dims +[visit_exp $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] not free +[visit_id tv*] no dims +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] not free +[visit_id tu*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_rectype{`X*#97` : subtype*, `st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `X*#112` : subtype*, `tv'*` : typevar*, `tu'*` : typeuse*}(`REC`_rectype(`%`_list{`X*#97`}(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `REC`_rectype(`%`_list{`X*#112`}($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*`})) +[check_dims] i n#65 n#77 qt rectype#63 rectype#75 tu tv +[visit_exp `_DEF`_deftype{rectype#63, n#65}(qt, i)] +[visit_exp rectype#63] +[visit_id rectype#63] +[visit_exp n#65] +[visit_id n#65] +[visit_exp (qt, i)] +[visit_exp qt] +[visit_id qt] +[visit_exp i] +[visit_id i] +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] no dims +[visit_id tv*] +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] no dims +[visit_id tu*] +[visit_exp `_DEF`_deftype{rectype#75, n#77}($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i)] +[visit_exp rectype#75] +[visit_id rectype#75] +[visit_exp n#77] +[visit_id n#77] +[visit_exp ($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i)] +[visit_exp $subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] +[visit_exp qt] +[visit_id qt] not free +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] not free +[visit_id tv*] no dims +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] not free +[visit_id tu*] no dims +[visit_exp i] +[visit_id i] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_deftype{rectype#63 : rectype, n#65 : n, qt : rectype, i : n, `tv*` : typevar*, `tu*` : typeuse*, rectype#75 : rectype, n#77 : n}(`_DEF`_deftype{rectype#63, n#65}(qt, i), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `_DEF`_deftype{rectype#75, n#77}($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i) +[check_dims] tu tu' tv +[visit_exp tu'] +[visit_id tu'] +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] no dims +[visit_id tv*] +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] no dims +[visit_id tu*] +[visit_exp $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] +[visit_exp tu'] +[visit_id tu'] not free +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] not free +[visit_id tv*] no dims +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] not free +[visit_id tu*] no dims +=> + ;; ../../../../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*`}) +[check_dims] mut mut?#149 mut?#161 t tu tv valtype#67 valtype#79 +[visit_exp `%%`_globaltype{`mut?#149`, valtype#67}(mut?{mut <- `mut?`}, t)] +[visit_exp `mut?#149`] +[visit_id mut?#149] +[visit_exp valtype#67] +[visit_id valtype#67] +[visit_exp (mut?{mut <- `mut?`}, t)] +[visit_exp mut?{mut <- `mut?`}] +[scope_enter mut] +[visit_exp mut] +[visit_id mut] not free +[visit_id mut] not free +[scope_exit mut] +[visit_exp `mut?`] +[visit_id mut?] no dims +[visit_id mut?] +[visit_exp t] +[visit_id t] +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] no dims +[visit_id tv*] +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] no dims +[visit_id tu*] +[visit_exp `%%`_globaltype{`mut?#161`, valtype#79}(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] +[visit_exp `mut?#161`] +[visit_id mut?#161] +[visit_exp valtype#79] +[visit_id valtype#79] +[visit_exp (mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] +[visit_exp mut?{mut <- `mut?`}] +[scope_enter mut] +[visit_exp mut] +[visit_id mut] not free +[visit_id mut] not free +[scope_exit mut] +[visit_exp `mut?`] +[visit_id mut?] not free +[visit_id mut?] no dims +[visit_exp $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] +[visit_exp t] +[visit_id t] not free +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] not free +[visit_id tv*] no dims +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] not free +[visit_id tu*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_globaltype{`mut?#149` : mut?, valtype#67 : valtype, `mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*, `mut?#161` : mut?, valtype#79 : valtype}(`%%`_globaltype{`mut?#149`, valtype#67}(mut?{mut <- `mut?`}, t), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_globaltype{`mut?#161`, valtype#79}(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) +[check_dims] addrtype#103 addrtype#91 at lim limits#103 limits#91 tu tv +[visit_exp `%%PAGE`_memtype{addrtype#91, limits#91}(at, lim)] +[visit_exp addrtype#91] +[visit_id addrtype#91] +[visit_exp limits#91] +[visit_id limits#91] +[visit_exp (at, lim)] +[visit_exp at] +[visit_id at] +[visit_exp lim] +[visit_id lim] +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] no dims +[visit_id tv*] +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] no dims +[visit_id tu*] +[visit_exp `%%PAGE`_memtype{addrtype#103, limits#103}(at, lim)] +[visit_exp addrtype#103] +[visit_id addrtype#103] +[visit_exp limits#103] +[visit_id limits#103] +[visit_exp (at, lim)] +[visit_exp at] +[visit_id at] not free +[visit_exp lim] +[visit_id lim] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_memtype{addrtype#91 : addrtype, limits#91 : limits, at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*, addrtype#103 : addrtype, limits#103 : limits}(`%%PAGE`_memtype{addrtype#91, limits#91}(at, lim), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%PAGE`_memtype{addrtype#103, limits#103}(at, lim) +[check_dims] addrtype#115 addrtype#127 at lim limits#115 limits#127 reftype#51 reftype#63 rt tu tv +[visit_exp `%%%`_tabletype{addrtype#115, limits#115, reftype#51}(at, lim, rt)] +[visit_exp addrtype#115] +[visit_id addrtype#115] +[visit_exp limits#115] +[visit_id limits#115] +[visit_exp reftype#51] +[visit_id reftype#51] +[visit_exp (at, lim, rt)] +[visit_exp at] +[visit_id at] +[visit_exp lim] +[visit_id lim] +[visit_exp rt] +[visit_id rt] +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] no dims +[visit_id tv*] +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] no dims +[visit_id tu*] +[visit_exp `%%%`_tabletype{addrtype#127, limits#127, reftype#63}(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] +[visit_exp addrtype#127] +[visit_id addrtype#127] +[visit_exp limits#127] +[visit_id limits#127] +[visit_exp reftype#63] +[visit_id reftype#63] +[visit_exp (at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] +[visit_exp at] +[visit_id at] not free +[visit_exp lim] +[visit_id lim] not free +[visit_exp $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] +[visit_exp rt] +[visit_id rt] not free +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] not free +[visit_id tv*] no dims +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] not free +[visit_id tu*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_tabletype{addrtype#115 : addrtype, limits#115 : limits, reftype#51 : reftype, at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*, addrtype#127 : addrtype, limits#127 : limits, reftype#63 : reftype}(`%%%`_tabletype{addrtype#115, limits#115, reftype#51}(at, lim, rt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%%`_tabletype{addrtype#127, limits#127, reftype#63}(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) +[check_dims] jt tagtype#3 tagtype#5 tu tv +[visit_exp `TAG`_externtype{tagtype#3}(jt)] +[visit_exp tagtype#3] +[visit_id tagtype#3] +[visit_exp (jt)] +[visit_exp jt] +[visit_id jt] +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] no dims +[visit_id tv*] +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] no dims +[visit_id tu*] +[visit_exp `TAG`_externtype{tagtype#5}($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] +[visit_exp tagtype#5] +[visit_id tagtype#5] +[visit_exp ($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] +[visit_exp $subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] +[visit_exp jt] +[visit_id jt] not free +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] not free +[visit_id tv*] no dims +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] not free +[visit_id tu*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_externtype{tagtype#3 : tagtype, jt : tagtype, `tv*` : typevar*, `tu*` : typeuse*, tagtype#5 : tagtype}(`TAG`_externtype{tagtype#3}(jt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `TAG`_externtype{tagtype#5}($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) +[check_dims] globaltype#3 globaltype#5 gt tu tv +[visit_exp `GLOBAL`_externtype{globaltype#3}(gt)] +[visit_exp globaltype#3] +[visit_id globaltype#3] +[visit_exp (gt)] +[visit_exp gt] +[visit_id gt] +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] no dims +[visit_id tv*] +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] no dims +[visit_id tu*] +[visit_exp `GLOBAL`_externtype{globaltype#5}($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] +[visit_exp globaltype#5] +[visit_id globaltype#5] +[visit_exp ($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] +[visit_exp $subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] +[visit_exp gt] +[visit_id gt] not free +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] not free +[visit_id tv*] no dims +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] not free +[visit_id tu*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_externtype{globaltype#3 : globaltype, gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*, globaltype#5 : globaltype}(`GLOBAL`_externtype{globaltype#3}(gt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `GLOBAL`_externtype{globaltype#5}($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) +[check_dims] tabletype#3 tabletype#5 tt tu tv +[visit_exp `TABLE`_externtype{tabletype#3}(tt)] +[visit_exp tabletype#3] +[visit_id tabletype#3] +[visit_exp (tt)] +[visit_exp tt] +[visit_id tt] +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] no dims +[visit_id tv*] +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] no dims +[visit_id tu*] +[visit_exp `TABLE`_externtype{tabletype#5}($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] +[visit_exp tabletype#5] +[visit_id tabletype#5] +[visit_exp ($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] +[visit_exp $subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] +[visit_exp tt] +[visit_id tt] not free +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] not free +[visit_id tv*] no dims +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] not free +[visit_id tu*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_externtype{tabletype#3 : tabletype, tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*, tabletype#5 : tabletype}(`TABLE`_externtype{tabletype#3}(tt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `TABLE`_externtype{tabletype#5}($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) +[check_dims] memtype#3 memtype#5 mt tu tv +[visit_exp `MEM`_externtype{memtype#3}(mt)] +[visit_exp memtype#3] +[visit_id memtype#3] +[visit_exp (mt)] +[visit_exp mt] +[visit_id mt] +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] no dims +[visit_id tv*] +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] no dims +[visit_id tu*] +[visit_exp `MEM`_externtype{memtype#5}($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] +[visit_exp memtype#5] +[visit_id memtype#5] +[visit_exp ($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] +[visit_exp $subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] +[visit_exp mt] +[visit_id mt] not free +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] not free +[visit_id tv*] no dims +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] not free +[visit_id tu*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_externtype{memtype#3 : memtype, mt : memtype, `tv*` : typevar*, `tu*` : typeuse*, memtype#5 : memtype}(`MEM`_externtype{memtype#3}(mt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `MEM`_externtype{memtype#5}($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) +[check_dims] dt tu tv typeuse#3 typeuse#5 +[visit_exp `FUNC`_externtype{typeuse#3}((dt : deftype <: typeuse))] +[visit_exp typeuse#3] +[visit_id typeuse#3] +[visit_exp ((dt : deftype <: typeuse))] +[visit_exp (dt : deftype <: typeuse)] +[visit_exp dt] +[visit_id dt] +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] no dims +[visit_id tv*] +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] no dims +[visit_id tu*] +[visit_exp `FUNC`_externtype{typeuse#5}(($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse))] +[visit_exp typeuse#5] +[visit_id typeuse#5] +[visit_exp (($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse))] +[visit_exp ($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse)] +[visit_exp $subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] +[visit_exp dt] +[visit_id dt] not free +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] not free +[visit_id tv*] no dims +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] not free +[visit_id tu*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_externtype{typeuse#3 : typeuse, dt : deftype, `tv*` : typevar*, `tu*` : typeuse*, typeuse#5 : typeuse}(`FUNC`_externtype{typeuse#3}((dt : deftype <: typeuse)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC`_externtype{typeuse#5}(($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse)) +[check_dims] externtype*#18 externtype*#38 tu tv xt_1 xt_2 +[visit_exp `%->%`_moduletype{`externtype*#18`}(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`})] +[visit_exp `externtype*#18`] +[visit_id externtype*#18] +[visit_exp (xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`})] +[visit_exp xt_1*{xt_1 <- `xt_1*`}] +[scope_enter xt_1] +[visit_exp xt_1] +[visit_id xt_1] not free +[visit_id xt_1] not free +[scope_exit xt_1] +[visit_exp `xt_1*`] +[visit_id xt_1*] no dims +[visit_id xt_1*] +[visit_exp xt_2*{xt_2 <- `xt_2*`}] +[scope_enter xt_2] +[visit_exp xt_2] +[visit_id xt_2] not free +[visit_id xt_2] not free +[scope_exit xt_2] +[visit_exp `xt_2*`] +[visit_id xt_2*] no dims +[visit_id xt_2*] +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] no dims +[visit_id tv*] +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] no dims +[visit_id tu*] +[visit_exp `%->%`_moduletype{`externtype*#38`}($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*`})] +[visit_exp `externtype*#38`] +[visit_id externtype*#38] +[visit_exp ($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*`})] +[visit_exp $subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}] +[scope_enter xt_1] +[visit_exp $subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] +[visit_exp xt_1] +[visit_id xt_1] not free +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] not free +[visit_id tv*] no dims +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] not free +[visit_id tu*] no dims +[visit_id xt_1] not free +[scope_exit xt_1] +[visit_exp `xt_1*`] +[visit_id xt_1*] not free +[visit_id xt_1*] no dims +[visit_exp $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}] +[scope_enter xt_2] +[visit_exp $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] +[visit_exp xt_2] +[visit_id xt_2] not free +[visit_exp tv*{tv <- `tv*`}] +[scope_enter tv] +[visit_exp tv] +[visit_id tv] not free +[visit_id tv] not free +[scope_exit tv] +[visit_exp `tv*`] +[visit_id tv*] not free +[visit_id tv*] no dims +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] not free +[visit_id tu*] no dims +[visit_id xt_2] not free +[scope_exit xt_2] +[visit_exp `xt_2*`] +[visit_id xt_2*] not free +[visit_id xt_2*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_moduletype{`externtype*#18` : externtype*, `xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*, `externtype*#38` : externtype*}(`%->%`_moduletype{`externtype*#18`}(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`}), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%->%`_moduletype{`externtype*#38`}($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*`}) +[check_dims] _ valtype +DecD subst_all_valtype(valtype : valtype, typeuse*) : valtype +[visit_id valtype] not free +[visit_id _] not free +[check_dims] _ reftype +DecD subst_all_reftype(reftype : reftype, typeuse*) : reftype +[visit_id reftype] not free +[visit_id _] not free +[check_dims] _ deftype +DecD subst_all_deftype(deftype : deftype, typeuse*) : deftype +[visit_id deftype] not free +[visit_id _] not free +[check_dims] _ tagtype +DecD subst_all_tagtype(tagtype : tagtype, typeuse*) : tagtype +[visit_id tagtype] not free +[visit_id _] not free +[check_dims] _ globaltype +DecD subst_all_globaltype(globaltype : globaltype, typeuse*) : globaltype +[visit_id globaltype] not free +[visit_id _] not free +[check_dims] _ memtype +DecD subst_all_memtype(memtype : memtype, typeuse*) : memtype +[visit_id memtype] not free +[visit_id _] not free +[check_dims] _ tabletype +DecD subst_all_tabletype(tabletype : tabletype, typeuse*) : tabletype +[visit_id tabletype] not free +[visit_id _] not free +[check_dims] _ externtype +DecD subst_all_externtype(externtype : externtype, typeuse*) : externtype +[visit_id externtype] not free +[visit_id _] not free +[check_dims] _ moduletype +DecD subst_all_moduletype(moduletype : moduletype, typeuse*) : moduletype +[visit_id moduletype] not free +[visit_id _] not free +[check_dims] i i#779 n t tu typeidx#5 +[visit_exp t] +[visit_id t] +[visit_exp tu^n{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp n] +[visit_id n] +[visit_exp `tu*`] +[visit_id tu*] no dims +[visit_id tu*] +[visit_exp $subst_valtype(t, `_IDX`_typevar{typeidx#5}(`%`_typeidx{i#779}(i))^(i + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_all_valtype{t : valtype, n : n, `tu*` : typeuse*, i : nat, `i#779*` : nat*, `typeidx#5*` : typeidx*}(t, tu^n{tu <- `tu*`}) = $subst_valtype(t, `_IDX`_typevar{typeidx#5}(`%`_typeidx{i#779}(i))^(i + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_all_reftype{rt : reftype, n : n, `tu*` : typeuse*, i : nat, `i#801*` : nat*, `typeidx#7*` : typeidx*}(rt, tu^n{tu <- `tu*`}) = $subst_reftype(rt, `_IDX`_typevar{typeidx#7}(`%`_typeidx{i#801}(i))^(i + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_all_deftype{dt : deftype, n : n, `tu*` : typeuse*, i : nat, `i#823*` : nat*, `typeidx#9*` : typeidx*}(dt, tu^n{tu <- `tu*`}) = $subst_deftype(dt, `_IDX`_typevar{typeidx#9}(`%`_typeidx{i#823}(i))^(i + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_all_tagtype{jt : tagtype, n : n, `tu*` : typeuse*, i : nat, `i#845*` : nat*, `typeidx#11*` : typeidx*}(jt, tu^n{tu <- `tu*`}) = $subst_tagtype(jt, `_IDX`_typevar{typeidx#11}(`%`_typeidx{i#845}(i))^(i + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_all_globaltype{gt : globaltype, n : n, `tu*` : typeuse*, i : nat, `i#867*` : nat*, `typeidx#13*` : typeidx*}(gt, tu^n{tu <- `tu*`}) = $subst_globaltype(gt, `_IDX`_typevar{typeidx#13}(`%`_typeidx{i#867}(i))^(i + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_all_memtype{mt : memtype, n : n, `tu*` : typeuse*, i : nat, `i#889*` : nat*, `typeidx#15*` : typeidx*}(mt, tu^n{tu <- `tu*`}) = $subst_memtype(mt, `_IDX`_typevar{typeidx#15}(`%`_typeidx{i#889}(i))^(i + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_all_tabletype{tt : tabletype, n : n, `tu*` : typeuse*, i : nat, `i#911*` : nat*, `typeidx#17*` : typeidx*}(tt, tu^n{tu <- `tu*`}) = $subst_tabletype(tt, `_IDX`_typevar{typeidx#17}(`%`_typeidx{i#911}(i))^(i + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_all_externtype{xt : externtype, n : n, `tu*` : typeuse*, i : nat, `i#933*` : nat*, `typeidx#19*` : typeidx*}(xt, tu^n{tu <- `tu*`}) = $subst_externtype(xt, `_IDX`_typevar{typeidx#19}(`%`_typeidx{i#933}(i))^(i + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_all_moduletype{mmt : moduletype, n : n, `tu*` : typeuse*, i : nat, `i#955*` : nat*, `typeidx#21*` : typeidx*}(mmt, tu^n{tu <- `tu*`}) = $subst_moduletype(mmt, `_IDX`_typevar{typeidx#21}(`%`_typeidx{i#955}(i))^(i + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $subst_all_deftypes{`tu*` : typeuse*}([], tu*{tu <- `tu*`}) = [] +[check_dims] dt dt_1 tu +[visit_exp [dt_1] ++ dt*{dt <- `dt*`}] +[visit_exp [dt_1]] +[visit_exp dt_1] +[visit_id dt_1] +[visit_exp dt*{dt <- `dt*`}] +[scope_enter dt] +[visit_exp dt] +[visit_id dt] not free +[visit_id dt] not free +[scope_exit dt] +[visit_exp `dt*`] +[visit_id dt*] no dims +[visit_id dt*] +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] no dims +[visit_id tu*] +[visit_exp [$subst_all_deftype(dt_1, tu*{tu <- `tu*`})] ++ $subst_all_deftypes(dt*{dt <- `dt*`}, tu*{tu <- `tu*`})] +[visit_exp [$subst_all_deftype(dt_1, tu*{tu <- `tu*`})]] +[visit_exp $subst_all_deftype(dt_1, tu*{tu <- `tu*`})] +[visit_exp dt_1] +[visit_id dt_1] not free +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] not free +[visit_id tu*] no dims +[visit_exp $subst_all_deftypes(dt*{dt <- `dt*`}, tu*{tu <- `tu*`})] +[visit_exp dt*{dt <- `dt*`}] +[scope_enter dt] +[visit_exp dt] +[visit_id dt] not free +[visit_id dt] not free +[scope_exit dt] +[visit_exp `dt*`] +[visit_id dt*] not free +[visit_id dt*] no dims +[visit_exp tu*{tu <- `tu*`}] +[scope_enter tu] +[visit_exp tu] +[visit_id tu] not free +[visit_id tu] not free +[scope_exit tu] +[visit_exp `tu*`] +[visit_id tu*] not free +[visit_id tu*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + 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*`}) +[check_dims] rectype typeidx +DecD rollrt(typeidx : typeidx, rectype : rectype) : rectype +[visit_id typeidx] not free +[visit_id rectype] not free +[check_dims] rectype +DecD unrollrt(rectype : rectype) : rectype +[visit_id rectype] not free +[check_dims] rectype typeidx +DecD rolldt(typeidx : typeidx, rectype : rectype) : deftype* +[visit_id typeidx] not free +[visit_id rectype] not free +[check_dims] deftype +DecD unrolldt(deftype : deftype) : subtype +[visit_id deftype] not free +[check_dims] deftype +DecD expanddt(deftype : deftype) : comptype +[visit_id deftype] not free +[check_dims] X*#127 X*#142 i i#1003 i#993 n n#189 rectype subtype typeidx#23 x +[visit_exp x] +[visit_id x] +[visit_exp rectype] +[visit_id rectype] +[visit_exp `REC`_rectype(`%`_list{`X*#142`}($subst_subtype(subtype, `_IDX`_typevar{typeidx#23}(`%`_typeidx{i#1003}((x!`%`_idx{i#993}.0 + i)))^(i + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $rollrt{x : idx, rectype : rectype, `X*#142` : subtype*, i : nat, n : n, `i#1003**` : nat**, `i#993**` : nat**, `n#189**` : n**, `subtype*` : subtype*, `typeidx#23**` : typeidx**, `X*#127` : subtype*}(x, rectype) = `REC`_rectype(`%`_list{`X*#142`}($subst_subtype(subtype, `_IDX`_typevar{typeidx#23}(`%`_typeidx{i#1003}((x!`%`_idx{i#993}.0 + i)))^(i + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unrollrt{rectype : rectype, `X*#172` : subtype*, i : nat, n : n, `n#191**` : n**, `n#193**` : n**, `rectype#187**` : rectype**, `subtype*` : subtype*, `X*#157` : subtype*}(rectype) = `REC`_rectype(`%`_list{`X*#172`}($subst_subtype(subtype, `REC`_typevar{n#191}(i)^(i + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $rolldt{x : idx, rectype : rectype, n : n, `subtype*` : subtype*, i : nat, `X*#202*` : subtype**, `n#211*` : n*, `rectype#205*` : rectype*, `X*#187` : subtype*}(x, rectype) = `_DEF`_deftype{rectype#205, n#211}(`REC`_rectype(`%`_list{`X*#202`}(subtype^n{subtype <- `subtype*`})), i)^(i + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $unrolldt{rectype#217 : rectype, n#223 : n, rectype : rectype, i : n, `subtype*` : subtype*, `X*#217` : subtype*}(`_DEF`_deftype{rectype#217, n#223}(rectype, i)) = subtype*{subtype <- `subtype*`}[i] + -- if ($unrollrt(rectype) = `REC`_rectype(`%`_list{`X*#217`}(subtype*{subtype <- `subtype*`}))) +[check_dims] comptype comptype#167 deftype final final?#167 typeuse typeuse*#167 +[visit_exp deftype] +[visit_id deftype] +[visit_exp comptype] +[visit_id comptype] +[visit_exp ($unrolldt(deftype) = `SUB`_subtype{`final?#167`, `typeuse*#167`, comptype#167}(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype))] +[visit_exp $unrolldt(deftype)] +[visit_exp deftype] +[visit_id deftype] not free +[visit_exp `SUB`_subtype{`final?#167`, `typeuse*#167`, comptype#167}(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)] +[visit_exp `final?#167`] +[visit_id final?#167] +[visit_exp `typeuse*#167`] +[visit_id typeuse*#167] +[visit_exp comptype#167] +[visit_id comptype#167] +[visit_exp (final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)] +[visit_exp final?{final <- `final?`}] +[scope_enter final] +[visit_exp final] +[visit_id final] not free +[visit_id final] not free +[scope_exit final] +[visit_exp `final?`] +[visit_id final?] no dims +[visit_id final?] +[visit_exp typeuse*{typeuse <- `typeuse*`}] +[scope_enter typeuse] +[visit_exp typeuse] +[visit_id typeuse] not free +[visit_id typeuse] not free +[scope_exit typeuse] +[visit_exp `typeuse*`] +[visit_id typeuse*] no dims +[visit_id typeuse*] +[visit_exp comptype] +[visit_id comptype] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $expanddt{deftype : deftype, comptype : comptype, `final?#167` : final?, `typeuse*#167` : typeuse*, comptype#167 : comptype, `final?` : final?, `typeuse*` : typeuse*}(deftype) = comptype + -- if ($unrolldt(deftype) = `SUB`_subtype{`final?#167`, `typeuse*#167`, comptype#167}(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) +[check_dims] numtype +DecD free_addrtype(numtype : numtype) : free +[visit_id numtype] not free +[check_dims] numtype +DecD free_numtype(numtype : numtype) : free +[visit_id numtype] not free +[check_dims] packtype +DecD free_packtype(packtype : packtype) : free +[visit_id packtype] not free +[check_dims] lanetype +DecD free_lanetype(lanetype : lanetype) : free +[visit_id lanetype] not free +[check_dims] vectype +DecD free_vectype(vectype : vectype) : free +[visit_id vectype] not free +[check_dims] consttype +DecD free_consttype(consttype : consttype) : free +[visit_id consttype] not free +[check_dims] absheaptype +DecD free_absheaptype(absheaptype : absheaptype) : free +[visit_id absheaptype] not free +[check_dims] heaptype +DecD free_heaptype(heaptype : heaptype) : free +[visit_id heaptype] not free +[check_dims] reftype +DecD free_reftype(reftype : reftype) : free +[visit_id reftype] not free +[check_dims] typevar +DecD free_typevar(typevar : typevar) : free +[visit_id typevar] not free +[check_dims] typeuse +DecD free_typeuse(typeuse : typeuse) : free +[visit_id typeuse] not free +[check_dims] valtype +DecD free_valtype(valtype : valtype) : free +[visit_id valtype] not free +[check_dims] resulttype +DecD free_resulttype(resulttype : resulttype) : free +[visit_id resulttype] not free +[check_dims] storagetype +DecD free_storagetype(storagetype : storagetype) : free +[visit_id storagetype] not free +[check_dims] fieldtype +DecD free_fieldtype(fieldtype : fieldtype) : free +[visit_id fieldtype] not free +[check_dims] comptype +DecD free_comptype(comptype : comptype) : free +[visit_id comptype] not free +[check_dims] subtype +DecD free_subtype(subtype : subtype) : free +[visit_id subtype] not free +[check_dims] rectype +DecD free_rectype(rectype : rectype) : free +[visit_id rectype] not free +[check_dims] tagtype +DecD free_tagtype(tagtype : tagtype) : free +[visit_id tagtype] not free +[check_dims] globaltype +DecD free_globaltype(globaltype : globaltype) : free +[visit_id globaltype] not free +[check_dims] memtype +DecD free_memtype(memtype : memtype) : free +[visit_id memtype] not free +[check_dims] tabletype +DecD free_tabletype(tabletype : tabletype) : free +[visit_id tabletype] not free +[check_dims] datatype +DecD free_datatype(datatype : datatype) : free +[visit_id datatype] not free +[check_dims] elemtype +DecD free_elemtype(elemtype : elemtype) : free +[visit_id elemtype] not free +[check_dims] externtype +DecD free_externtype(externtype : externtype) : free +[visit_id externtype] not free +[check_dims] moduletype +DecD free_moduletype(moduletype : moduletype) : free +[visit_id moduletype] not free +[check_dims] addrtype dataidx*#12 elemidx*#12 funcidx*#12 globalidx*#12 labelidx*#12 localidx*#12 memidx*#12 tableidx*#12 typeidx*#12 +[visit_exp (addrtype : addrtype <: numtype)] +[visit_exp addrtype] +[visit_id addrtype] +[visit_exp {`TYPES`{`typeidx*#12`} [], `FUNCS`{`funcidx*#12`} [], `GLOBALS`{`globalidx*#12`} [], `TABLES`{`tableidx*#12`} [], `MEMS`{`memidx*#12`} [], `ELEMS`{`elemidx*#12`} [], `DATAS`{`dataidx*#12`} [], `LOCALS`{`localidx*#12`} [], `LABELS`{`labelidx*#12`} []}] +[visit_exp `typeidx*#12`] +[visit_id typeidx*#12] +[visit_exp []] +[visit_exp `funcidx*#12`] +[visit_id funcidx*#12] +[visit_exp []] +[visit_exp `globalidx*#12`] +[visit_id globalidx*#12] +[visit_exp []] +[visit_exp `tableidx*#12`] +[visit_id tableidx*#12] +[visit_exp []] +[visit_exp `memidx*#12`] +[visit_id memidx*#12] +[visit_exp []] +[visit_exp `elemidx*#12`] +[visit_id elemidx*#12] +[visit_exp []] +[visit_exp `dataidx*#12`] +[visit_id dataidx*#12] +[visit_exp []] +[visit_exp `localidx*#12`] +[visit_id localidx*#12] +[visit_exp []] +[visit_exp `labelidx*#12`] +[visit_id labelidx*#12] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_addrtype{addrtype : addrtype, `typeidx*#12` : typeidx*, `funcidx*#12` : funcidx*, `globalidx*#12` : globalidx*, `tableidx*#12` : tableidx*, `memidx*#12` : memidx*, `elemidx*#12` : elemidx*, `dataidx*#12` : dataidx*, `localidx*#12` : localidx*, `labelidx*#12` : labelidx*}((addrtype : addrtype <: numtype)) = {`TYPES`{`typeidx*#12`} [], `FUNCS`{`funcidx*#12`} [], `GLOBALS`{`globalidx*#12`} [], `TABLES`{`tableidx*#12`} [], `MEMS`{`memidx*#12`} [], `ELEMS`{`elemidx*#12`} [], `DATAS`{`dataidx*#12`} [], `LOCALS`{`localidx*#12`} [], `LABELS`{`labelidx*#12`} []} +[check_dims] dataidx*#13 elemidx*#13 funcidx*#13 globalidx*#13 labelidx*#13 localidx*#13 memidx*#13 numtype tableidx*#13 typeidx*#13 +[visit_exp numtype] +[visit_id numtype] +[visit_exp {`TYPES`{`typeidx*#13`} [], `FUNCS`{`funcidx*#13`} [], `GLOBALS`{`globalidx*#13`} [], `TABLES`{`tableidx*#13`} [], `MEMS`{`memidx*#13`} [], `ELEMS`{`elemidx*#13`} [], `DATAS`{`dataidx*#13`} [], `LOCALS`{`localidx*#13`} [], `LABELS`{`labelidx*#13`} []}] +[visit_exp `typeidx*#13`] +[visit_id typeidx*#13] +[visit_exp []] +[visit_exp `funcidx*#13`] +[visit_id funcidx*#13] +[visit_exp []] +[visit_exp `globalidx*#13`] +[visit_id globalidx*#13] +[visit_exp []] +[visit_exp `tableidx*#13`] +[visit_id tableidx*#13] +[visit_exp []] +[visit_exp `memidx*#13`] +[visit_id memidx*#13] +[visit_exp []] +[visit_exp `elemidx*#13`] +[visit_id elemidx*#13] +[visit_exp []] +[visit_exp `dataidx*#13`] +[visit_id dataidx*#13] +[visit_exp []] +[visit_exp `localidx*#13`] +[visit_id localidx*#13] +[visit_exp []] +[visit_exp `labelidx*#13`] +[visit_id labelidx*#13] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_numtype{numtype : numtype, `typeidx*#13` : typeidx*, `funcidx*#13` : funcidx*, `globalidx*#13` : globalidx*, `tableidx*#13` : tableidx*, `memidx*#13` : memidx*, `elemidx*#13` : elemidx*, `dataidx*#13` : dataidx*, `localidx*#13` : localidx*, `labelidx*#13` : labelidx*}(numtype) = {`TYPES`{`typeidx*#13`} [], `FUNCS`{`funcidx*#13`} [], `GLOBALS`{`globalidx*#13`} [], `TABLES`{`tableidx*#13`} [], `MEMS`{`memidx*#13`} [], `ELEMS`{`elemidx*#13`} [], `DATAS`{`dataidx*#13`} [], `LOCALS`{`localidx*#13`} [], `LABELS`{`labelidx*#13`} []} +[check_dims] dataidx*#14 elemidx*#14 funcidx*#14 globalidx*#14 labelidx*#14 localidx*#14 memidx*#14 packtype tableidx*#14 typeidx*#14 +[visit_exp packtype] +[visit_id packtype] +[visit_exp {`TYPES`{`typeidx*#14`} [], `FUNCS`{`funcidx*#14`} [], `GLOBALS`{`globalidx*#14`} [], `TABLES`{`tableidx*#14`} [], `MEMS`{`memidx*#14`} [], `ELEMS`{`elemidx*#14`} [], `DATAS`{`dataidx*#14`} [], `LOCALS`{`localidx*#14`} [], `LABELS`{`labelidx*#14`} []}] +[visit_exp `typeidx*#14`] +[visit_id typeidx*#14] +[visit_exp []] +[visit_exp `funcidx*#14`] +[visit_id funcidx*#14] +[visit_exp []] +[visit_exp `globalidx*#14`] +[visit_id globalidx*#14] +[visit_exp []] +[visit_exp `tableidx*#14`] +[visit_id tableidx*#14] +[visit_exp []] +[visit_exp `memidx*#14`] +[visit_id memidx*#14] +[visit_exp []] +[visit_exp `elemidx*#14`] +[visit_id elemidx*#14] +[visit_exp []] +[visit_exp `dataidx*#14`] +[visit_id dataidx*#14] +[visit_exp []] +[visit_exp `localidx*#14`] +[visit_id localidx*#14] +[visit_exp []] +[visit_exp `labelidx*#14`] +[visit_id labelidx*#14] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_packtype{packtype : packtype, `typeidx*#14` : typeidx*, `funcidx*#14` : funcidx*, `globalidx*#14` : globalidx*, `tableidx*#14` : tableidx*, `memidx*#14` : memidx*, `elemidx*#14` : elemidx*, `dataidx*#14` : dataidx*, `localidx*#14` : localidx*, `labelidx*#14` : labelidx*}(packtype) = {`TYPES`{`typeidx*#14`} [], `FUNCS`{`funcidx*#14`} [], `GLOBALS`{`globalidx*#14`} [], `TABLES`{`tableidx*#14`} [], `MEMS`{`memidx*#14`} [], `ELEMS`{`elemidx*#14`} [], `DATAS`{`dataidx*#14`} [], `LOCALS`{`localidx*#14`} [], `LABELS`{`labelidx*#14`} []} +[check_dims] numtype +[visit_exp (numtype : numtype <: lanetype)] +[visit_exp numtype] +[visit_id numtype] +[visit_exp $free_numtype(numtype)] +[visit_exp numtype] +[visit_id numtype] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_lanetype{numtype : numtype}((numtype : numtype <: lanetype)) = $free_numtype(numtype) +[check_dims] packtype +[visit_exp (packtype : packtype <: lanetype)] +[visit_exp packtype] +[visit_id packtype] +[visit_exp $free_packtype(packtype)] +[visit_exp packtype] +[visit_id packtype] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_lanetype{packtype : packtype}((packtype : packtype <: lanetype)) = $free_packtype(packtype) +[check_dims] dataidx*#15 elemidx*#15 funcidx*#15 globalidx*#15 labelidx*#15 localidx*#15 memidx*#15 tableidx*#15 typeidx*#15 vectype +[visit_exp vectype] +[visit_id vectype] +[visit_exp {`TYPES`{`typeidx*#15`} [], `FUNCS`{`funcidx*#15`} [], `GLOBALS`{`globalidx*#15`} [], `TABLES`{`tableidx*#15`} [], `MEMS`{`memidx*#15`} [], `ELEMS`{`elemidx*#15`} [], `DATAS`{`dataidx*#15`} [], `LOCALS`{`localidx*#15`} [], `LABELS`{`labelidx*#15`} []}] +[visit_exp `typeidx*#15`] +[visit_id typeidx*#15] +[visit_exp []] +[visit_exp `funcidx*#15`] +[visit_id funcidx*#15] +[visit_exp []] +[visit_exp `globalidx*#15`] +[visit_id globalidx*#15] +[visit_exp []] +[visit_exp `tableidx*#15`] +[visit_id tableidx*#15] +[visit_exp []] +[visit_exp `memidx*#15`] +[visit_id memidx*#15] +[visit_exp []] +[visit_exp `elemidx*#15`] +[visit_id elemidx*#15] +[visit_exp []] +[visit_exp `dataidx*#15`] +[visit_id dataidx*#15] +[visit_exp []] +[visit_exp `localidx*#15`] +[visit_id localidx*#15] +[visit_exp []] +[visit_exp `labelidx*#15`] +[visit_id labelidx*#15] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_vectype{vectype : vectype, `typeidx*#15` : typeidx*, `funcidx*#15` : funcidx*, `globalidx*#15` : globalidx*, `tableidx*#15` : tableidx*, `memidx*#15` : memidx*, `elemidx*#15` : elemidx*, `dataidx*#15` : dataidx*, `localidx*#15` : localidx*, `labelidx*#15` : labelidx*}(vectype) = {`TYPES`{`typeidx*#15`} [], `FUNCS`{`funcidx*#15`} [], `GLOBALS`{`globalidx*#15`} [], `TABLES`{`tableidx*#15`} [], `MEMS`{`memidx*#15`} [], `ELEMS`{`elemidx*#15`} [], `DATAS`{`dataidx*#15`} [], `LOCALS`{`localidx*#15`} [], `LABELS`{`labelidx*#15`} []} +[check_dims] numtype +[visit_exp (numtype : numtype <: consttype)] +[visit_exp numtype] +[visit_id numtype] +[visit_exp $free_numtype(numtype)] +[visit_exp numtype] +[visit_id numtype] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_consttype{numtype : numtype}((numtype : numtype <: consttype)) = $free_numtype(numtype) +[check_dims] vectype +[visit_exp (vectype : vectype <: consttype)] +[visit_exp vectype] +[visit_id vectype] +[visit_exp $free_vectype(vectype)] +[visit_exp vectype] +[visit_id vectype] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_consttype{vectype : vectype}((vectype : vectype <: consttype)) = $free_vectype(vectype) +[check_dims] absheaptype dataidx*#16 elemidx*#16 funcidx*#16 globalidx*#16 labelidx*#16 localidx*#16 memidx*#16 tableidx*#16 typeidx*#16 +[visit_exp absheaptype] +[visit_id absheaptype] +[visit_exp {`TYPES`{`typeidx*#16`} [], `FUNCS`{`funcidx*#16`} [], `GLOBALS`{`globalidx*#16`} [], `TABLES`{`tableidx*#16`} [], `MEMS`{`memidx*#16`} [], `ELEMS`{`elemidx*#16`} [], `DATAS`{`dataidx*#16`} [], `LOCALS`{`localidx*#16`} [], `LABELS`{`labelidx*#16`} []}] +[visit_exp `typeidx*#16`] +[visit_id typeidx*#16] +[visit_exp []] +[visit_exp `funcidx*#16`] +[visit_id funcidx*#16] +[visit_exp []] +[visit_exp `globalidx*#16`] +[visit_id globalidx*#16] +[visit_exp []] +[visit_exp `tableidx*#16`] +[visit_id tableidx*#16] +[visit_exp []] +[visit_exp `memidx*#16`] +[visit_id memidx*#16] +[visit_exp []] +[visit_exp `elemidx*#16`] +[visit_id elemidx*#16] +[visit_exp []] +[visit_exp `dataidx*#16`] +[visit_id dataidx*#16] +[visit_exp []] +[visit_exp `localidx*#16`] +[visit_id localidx*#16] +[visit_exp []] +[visit_exp `labelidx*#16`] +[visit_id labelidx*#16] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_absheaptype{absheaptype : absheaptype, `typeidx*#16` : typeidx*, `funcidx*#16` : funcidx*, `globalidx*#16` : globalidx*, `tableidx*#16` : tableidx*, `memidx*#16` : memidx*, `elemidx*#16` : elemidx*, `dataidx*#16` : dataidx*, `localidx*#16` : localidx*, `labelidx*#16` : labelidx*}(absheaptype) = {`TYPES`{`typeidx*#16`} [], `FUNCS`{`funcidx*#16`} [], `GLOBALS`{`globalidx*#16`} [], `TABLES`{`tableidx*#16`} [], `MEMS`{`memidx*#16`} [], `ELEMS`{`elemidx*#16`} [], `DATAS`{`dataidx*#16`} [], `LOCALS`{`localidx*#16`} [], `LABELS`{`labelidx*#16`} []} +[check_dims] deftype +DecD free_deftype(deftype : deftype) : free +[visit_id deftype] not free +[check_dims] n n#247 rectype rectype#241 +[visit_exp `_DEF`_deftype{rectype#241, n#247}(rectype, n)] +[visit_exp rectype#241] +[visit_id rectype#241] +[visit_exp n#247] +[visit_id n#247] +[visit_exp (rectype, n)] +[visit_exp rectype] +[visit_id rectype] +[visit_exp n] +[visit_id n] +[visit_exp $free_rectype(rectype)] +[visit_exp rectype] +[visit_id rectype] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_deftype{rectype#241 : rectype, n#247 : n, rectype : rectype, n : n}(`_DEF`_deftype{rectype#241, n#247}(rectype, n)) = $free_rectype(rectype) +[check_dims] typeidx typeidx#25 +[visit_exp `_IDX`_typevar{typeidx#25}(typeidx)] +[visit_exp typeidx#25] +[visit_id typeidx#25] +[visit_exp (typeidx)] +[visit_exp typeidx] +[visit_id typeidx] +[visit_exp $free_typeidx(typeidx)] +[visit_exp typeidx] +[visit_id typeidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_typevar{typeidx#25 : typeidx, typeidx : typeidx}(`_IDX`_typevar{typeidx#25}(typeidx)) = $free_typeidx(typeidx) +[check_dims] dataidx*#17 elemidx*#17 funcidx*#17 globalidx*#17 labelidx*#17 localidx*#17 memidx*#17 n n#249 tableidx*#17 typeidx*#17 +[visit_exp `REC`_typevar{n#249}(n)] +[visit_exp n#249] +[visit_id n#249] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp {`TYPES`{`typeidx*#17`} [], `FUNCS`{`funcidx*#17`} [], `GLOBALS`{`globalidx*#17`} [], `TABLES`{`tableidx*#17`} [], `MEMS`{`memidx*#17`} [], `ELEMS`{`elemidx*#17`} [], `DATAS`{`dataidx*#17`} [], `LOCALS`{`localidx*#17`} [], `LABELS`{`labelidx*#17`} []}] +[visit_exp `typeidx*#17`] +[visit_id typeidx*#17] +[visit_exp []] +[visit_exp `funcidx*#17`] +[visit_id funcidx*#17] +[visit_exp []] +[visit_exp `globalidx*#17`] +[visit_id globalidx*#17] +[visit_exp []] +[visit_exp `tableidx*#17`] +[visit_id tableidx*#17] +[visit_exp []] +[visit_exp `memidx*#17`] +[visit_id memidx*#17] +[visit_exp []] +[visit_exp `elemidx*#17`] +[visit_id elemidx*#17] +[visit_exp []] +[visit_exp `dataidx*#17`] +[visit_id dataidx*#17] +[visit_exp []] +[visit_exp `localidx*#17`] +[visit_id localidx*#17] +[visit_exp []] +[visit_exp `labelidx*#17`] +[visit_id labelidx*#17] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_typevar{n#249 : n, n : n, `typeidx*#17` : typeidx*, `funcidx*#17` : funcidx*, `globalidx*#17` : globalidx*, `tableidx*#17` : tableidx*, `memidx*#17` : memidx*, `elemidx*#17` : elemidx*, `dataidx*#17` : dataidx*, `localidx*#17` : localidx*, `labelidx*#17` : labelidx*}(`REC`_typevar{n#249}(n)) = {`TYPES`{`typeidx*#17`} [], `FUNCS`{`funcidx*#17`} [], `GLOBALS`{`globalidx*#17`} [], `TABLES`{`tableidx*#17`} [], `MEMS`{`memidx*#17`} [], `ELEMS`{`elemidx*#17`} [], `DATAS`{`dataidx*#17`} [], `LOCALS`{`localidx*#17`} [], `LABELS`{`labelidx*#17`} []} +[check_dims] typevar +[visit_exp (typevar : typevar <: typeuse)] +[visit_exp typevar] +[visit_id typevar] +[visit_exp $free_typevar(typevar)] +[visit_exp typevar] +[visit_id typevar] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_typeuse{typevar : typevar}((typevar : typevar <: typeuse)) = $free_typevar(typevar) +[check_dims] deftype +[visit_exp (deftype : deftype <: typeuse)] +[visit_exp deftype] +[visit_id deftype] +[visit_exp $free_deftype(deftype)] +[visit_exp deftype] +[visit_id deftype] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_typeuse{deftype : deftype}((deftype : deftype <: typeuse)) = $free_deftype(deftype) +[check_dims] absheaptype +[visit_exp (absheaptype : absheaptype <: heaptype)] +[visit_exp absheaptype] +[visit_id absheaptype] +[visit_exp $free_absheaptype(absheaptype)] +[visit_exp absheaptype] +[visit_id absheaptype] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_heaptype{absheaptype : absheaptype}((absheaptype : absheaptype <: heaptype)) = $free_absheaptype(absheaptype) +[check_dims] typeuse +[visit_exp (typeuse : typeuse <: heaptype)] +[visit_exp typeuse] +[visit_id typeuse] +[visit_exp $free_typeuse(typeuse)] +[visit_exp typeuse] +[visit_id typeuse] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_heaptype{typeuse : typeuse}((typeuse : typeuse <: heaptype)) = $free_typeuse(typeuse) +[check_dims] heaptype heaptype#293 null null?#293 +[visit_exp `REF`_reftype{`null?#293`, heaptype#293}(null?{null <- `null?`}, heaptype)] +[visit_exp `null?#293`] +[visit_id null?#293] +[visit_exp heaptype#293] +[visit_id heaptype#293] +[visit_exp (null?{null <- `null?`}, heaptype)] +[visit_exp null?{null <- `null?`}] +[scope_enter null] +[visit_exp null] +[visit_id null] not free +[visit_id null] not free +[scope_exit null] +[visit_exp `null?`] +[visit_id null?] no dims +[visit_id null?] +[visit_exp heaptype] +[visit_id heaptype] +[visit_exp $free_heaptype(heaptype)] +[visit_exp heaptype] +[visit_id heaptype] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_reftype{`null?#293` : null?, heaptype#293 : heaptype, `null?` : null?, heaptype : heaptype}(`REF`_reftype{`null?#293`, heaptype#293}(null?{null <- `null?`}, heaptype)) = $free_heaptype(heaptype) +[check_dims] numtype +[visit_exp (numtype : numtype <: valtype)] +[visit_exp numtype] +[visit_id numtype] +[visit_exp $free_numtype(numtype)] +[visit_exp numtype] +[visit_id numtype] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_valtype{numtype : numtype}((numtype : numtype <: valtype)) = $free_numtype(numtype) +[check_dims] vectype +[visit_exp (vectype : vectype <: valtype)] +[visit_exp vectype] +[visit_id vectype] +[visit_exp $free_vectype(vectype)] +[visit_exp vectype] +[visit_id vectype] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_valtype{vectype : vectype}((vectype : vectype <: valtype)) = $free_vectype(vectype) +[check_dims] reftype +[visit_exp (reftype : reftype <: valtype)] +[visit_exp reftype] +[visit_id reftype] +[visit_exp $free_reftype(reftype)] +[visit_exp reftype] +[visit_id reftype] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_valtype{reftype : reftype}((reftype : reftype <: valtype)) = $free_reftype(reftype) +[check_dims] dataidx*#18 elemidx*#18 funcidx*#18 globalidx*#18 labelidx*#18 localidx*#18 memidx*#18 tableidx*#18 typeidx*#18 +[visit_exp `BOT`_valtype] +[visit_exp ()] +[visit_exp {`TYPES`{`typeidx*#18`} [], `FUNCS`{`funcidx*#18`} [], `GLOBALS`{`globalidx*#18`} [], `TABLES`{`tableidx*#18`} [], `MEMS`{`memidx*#18`} [], `ELEMS`{`elemidx*#18`} [], `DATAS`{`dataidx*#18`} [], `LOCALS`{`localidx*#18`} [], `LABELS`{`labelidx*#18`} []}] +[visit_exp `typeidx*#18`] +[visit_id typeidx*#18] +[visit_exp []] +[visit_exp `funcidx*#18`] +[visit_id funcidx*#18] +[visit_exp []] +[visit_exp `globalidx*#18`] +[visit_id globalidx*#18] +[visit_exp []] +[visit_exp `tableidx*#18`] +[visit_id tableidx*#18] +[visit_exp []] +[visit_exp `memidx*#18`] +[visit_id memidx*#18] +[visit_exp []] +[visit_exp `elemidx*#18`] +[visit_id elemidx*#18] +[visit_exp []] +[visit_exp `dataidx*#18`] +[visit_id dataidx*#18] +[visit_exp []] +[visit_exp `localidx*#18`] +[visit_id localidx*#18] +[visit_exp []] +[visit_exp `labelidx*#18`] +[visit_id labelidx*#18] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_valtype{`typeidx*#18` : typeidx*, `funcidx*#18` : funcidx*, `globalidx*#18` : globalidx*, `tableidx*#18` : tableidx*, `memidx*#18` : memidx*, `elemidx*#18` : elemidx*, `dataidx*#18` : dataidx*, `localidx*#18` : localidx*, `labelidx*#18` : labelidx*}(`BOT`_valtype) = {`TYPES`{`typeidx*#18`} [], `FUNCS`{`funcidx*#18`} [], `GLOBALS`{`globalidx*#18`} [], `TABLES`{`tableidx*#18`} [], `MEMS`{`memidx*#18`} [], `ELEMS`{`elemidx*#18`} [], `DATAS`{`dataidx*#18`} [], `LOCALS`{`localidx*#18`} [], `LABELS`{`labelidx*#18`} []} +[check_dims] X*#230 valtype +[visit_exp `%`_resulttype{`X*#230`}(valtype*{valtype <- `valtype*`})] +[visit_exp `X*#230`] +[visit_id X*#230] +[visit_exp (valtype*{valtype <- `valtype*`})] +[visit_exp valtype*{valtype <- `valtype*`}] +[scope_enter valtype] +[visit_exp valtype] +[visit_id valtype] not free +[visit_id valtype] not free +[scope_exit valtype] +[visit_exp `valtype*`] +[visit_id valtype*] no dims +[visit_id valtype*] +[visit_exp $free_list($free_valtype(valtype)*{valtype <- `valtype*`})] +[visit_exp $free_valtype(valtype)*{valtype <- `valtype*`}] +[scope_enter valtype] +[visit_exp $free_valtype(valtype)] +[visit_exp valtype] +[visit_id valtype] not free +[visit_id valtype] not free +[scope_exit valtype] +[visit_exp `valtype*`] +[visit_id valtype*] not free +[visit_id valtype*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_resulttype{`X*#230` : valtype*, `valtype*` : valtype*}(`%`_resulttype{`X*#230`}(valtype*{valtype <- `valtype*`})) = $free_list($free_valtype(valtype)*{valtype <- `valtype*`}) +[check_dims] valtype +[visit_exp (valtype : valtype <: storagetype)] +[visit_exp valtype] +[visit_id valtype] +[visit_exp $free_valtype(valtype)] +[visit_exp valtype] +[visit_id valtype] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_storagetype{valtype : valtype}((valtype : valtype <: storagetype)) = $free_valtype(valtype) +[check_dims] packtype +[visit_exp (packtype : packtype <: storagetype)] +[visit_exp packtype] +[visit_id packtype] +[visit_exp $free_packtype(packtype)] +[visit_exp packtype] +[visit_id packtype] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_storagetype{packtype : packtype}((packtype : packtype <: storagetype)) = $free_packtype(packtype) +[check_dims] mut mut?#209 storagetype storagetype#93 +[visit_exp `%%`_fieldtype{`mut?#209`, storagetype#93}(mut?{mut <- `mut?`}, storagetype)] +[visit_exp `mut?#209`] +[visit_id mut?#209] +[visit_exp storagetype#93] +[visit_id storagetype#93] +[visit_exp (mut?{mut <- `mut?`}, storagetype)] +[visit_exp mut?{mut <- `mut?`}] +[scope_enter mut] +[visit_exp mut] +[visit_id mut] not free +[visit_id mut] not free +[scope_exit mut] +[visit_exp `mut?`] +[visit_id mut?] no dims +[visit_id mut?] +[visit_exp storagetype] +[visit_id storagetype] +[visit_exp $free_storagetype(storagetype)] +[visit_exp storagetype] +[visit_id storagetype] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_fieldtype{`mut?#209` : mut?, storagetype#93 : storagetype, `mut?` : mut?, storagetype : storagetype}(`%%`_fieldtype{`mut?#209`, storagetype#93}(mut?{mut <- `mut?`}, storagetype)) = $free_storagetype(storagetype) +[check_dims] X*#245 fieldtype +[visit_exp `STRUCT`_comptype(`%`_list{`X*#245`}(fieldtype*{fieldtype <- `fieldtype*`}))] +[visit_exp (`%`_list{`X*#245`}(fieldtype*{fieldtype <- `fieldtype*`}))] +[visit_exp `%`_list{`X*#245`}(fieldtype*{fieldtype <- `fieldtype*`})] +[visit_exp `X*#245`] +[visit_id X*#245] +[visit_exp (fieldtype*{fieldtype <- `fieldtype*`})] +[visit_exp fieldtype*{fieldtype <- `fieldtype*`}] +[scope_enter fieldtype] +[visit_exp fieldtype] +[visit_id fieldtype] not free +[visit_id fieldtype] not free +[scope_exit fieldtype] +[visit_exp `fieldtype*`] +[visit_id fieldtype*] no dims +[visit_id fieldtype*] +[visit_exp $free_list($free_fieldtype(fieldtype)*{fieldtype <- `fieldtype*`})] +[visit_exp $free_fieldtype(fieldtype)*{fieldtype <- `fieldtype*`}] +[scope_enter fieldtype] +[visit_exp $free_fieldtype(fieldtype)] +[visit_exp fieldtype] +[visit_id fieldtype] not free +[visit_id fieldtype] not free +[scope_exit fieldtype] +[visit_exp `fieldtype*`] +[visit_id fieldtype*] not free +[visit_id fieldtype*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_comptype{`X*#245` : fieldtype*, `fieldtype*` : fieldtype*}(`STRUCT`_comptype(`%`_list{`X*#245`}(fieldtype*{fieldtype <- `fieldtype*`}))) = $free_list($free_fieldtype(fieldtype)*{fieldtype <- `fieldtype*`}) +[check_dims] fieldtype fieldtype#5 +[visit_exp `ARRAY`_comptype{fieldtype#5}(fieldtype)] +[visit_exp fieldtype#5] +[visit_id fieldtype#5] +[visit_exp (fieldtype)] +[visit_exp fieldtype] +[visit_id fieldtype] +[visit_exp $free_fieldtype(fieldtype)] +[visit_exp fieldtype] +[visit_id fieldtype] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_comptype{fieldtype#5 : fieldtype, fieldtype : fieldtype}(`ARRAY`_comptype{fieldtype#5}(fieldtype)) = $free_fieldtype(fieldtype) +[check_dims] resulttype#7 resulttype_1 resulttype_2 +[visit_exp `FUNC%->%`_comptype{resulttype#7}(resulttype_1, resulttype_2)] +[visit_exp resulttype#7] +[visit_id resulttype#7] +[visit_exp (resulttype_1, resulttype_2)] +[visit_exp resulttype_1] +[visit_id resulttype_1] +[visit_exp resulttype_2] +[visit_id resulttype_2] +[visit_exp $free_resulttype(resulttype_1) +++ $free_resulttype(resulttype_2)] +[visit_exp $free_resulttype(resulttype_1)] +[visit_exp resulttype_1] +[visit_id resulttype_1] not free +[visit_exp $free_resulttype(resulttype_2)] +[visit_exp resulttype_2] +[visit_id resulttype_2] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_comptype{resulttype#7 : resulttype, resulttype_1 : resulttype, resulttype_2 : resulttype}(`FUNC%->%`_comptype{resulttype#7}(resulttype_1, resulttype_2)) = $free_resulttype(resulttype_1) +++ $free_resulttype(resulttype_2) +[check_dims] comptype comptype#179 final final?#179 typeuse typeuse*#179 +[visit_exp `SUB`_subtype{`final?#179`, `typeuse*#179`, comptype#179}(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)] +[visit_exp `final?#179`] +[visit_id final?#179] +[visit_exp `typeuse*#179`] +[visit_id typeuse*#179] +[visit_exp comptype#179] +[visit_id comptype#179] +[visit_exp (final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)] +[visit_exp final?{final <- `final?`}] +[scope_enter final] +[visit_exp final] +[visit_id final] not free +[visit_id final] not free +[scope_exit final] +[visit_exp `final?`] +[visit_id final?] no dims +[visit_id final?] +[visit_exp typeuse*{typeuse <- `typeuse*`}] +[scope_enter typeuse] +[visit_exp typeuse] +[visit_id typeuse] not free +[visit_id typeuse] not free +[scope_exit typeuse] +[visit_exp `typeuse*`] +[visit_id typeuse*] no dims +[visit_id typeuse*] +[visit_exp comptype] +[visit_id comptype] +[visit_exp $free_list($free_typeuse(typeuse)*{typeuse <- `typeuse*`}) +++ $free_comptype(comptype)] +[visit_exp $free_list($free_typeuse(typeuse)*{typeuse <- `typeuse*`})] +[visit_exp $free_typeuse(typeuse)*{typeuse <- `typeuse*`}] +[scope_enter typeuse] +[visit_exp $free_typeuse(typeuse)] +[visit_exp typeuse] +[visit_id typeuse] not free +[visit_id typeuse] not free +[scope_exit typeuse] +[visit_exp `typeuse*`] +[visit_id typeuse*] not free +[visit_id typeuse*] no dims +[visit_exp $free_comptype(comptype)] +[visit_exp comptype] +[visit_id comptype] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_subtype{`final?#179` : final?, `typeuse*#179` : typeuse*, comptype#179 : comptype, `final?` : final?, `typeuse*` : typeuse*, comptype : comptype}(`SUB`_subtype{`final?#179`, `typeuse*#179`, comptype#179}(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) = $free_list($free_typeuse(typeuse)*{typeuse <- `typeuse*`}) +++ $free_comptype(comptype) +[check_dims] X*#302 subtype +[visit_exp `REC`_rectype(`%`_list{`X*#302`}(subtype*{subtype <- `subtype*`}))] +[visit_exp (`%`_list{`X*#302`}(subtype*{subtype <- `subtype*`}))] +[visit_exp `%`_list{`X*#302`}(subtype*{subtype <- `subtype*`})] +[visit_exp `X*#302`] +[visit_id X*#302] +[visit_exp (subtype*{subtype <- `subtype*`})] +[visit_exp subtype*{subtype <- `subtype*`}] +[scope_enter subtype] +[visit_exp subtype] +[visit_id subtype] not free +[visit_id subtype] not free +[scope_exit subtype] +[visit_exp `subtype*`] +[visit_id subtype*] no dims +[visit_id subtype*] +[visit_exp $free_list($free_subtype(subtype)*{subtype <- `subtype*`})] +[visit_exp $free_subtype(subtype)*{subtype <- `subtype*`}] +[scope_enter subtype] +[visit_exp $free_subtype(subtype)] +[visit_exp subtype] +[visit_id subtype] not free +[visit_id subtype] not free +[scope_exit subtype] +[visit_exp `subtype*`] +[visit_id subtype*] not free +[visit_id subtype*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_rectype{`X*#302` : subtype*, `subtype*` : subtype*}(`REC`_rectype(`%`_list{`X*#302`}(subtype*{subtype <- `subtype*`}))) = $free_list($free_subtype(subtype)*{subtype <- `subtype*`}) +[check_dims] deftype +[visit_exp (deftype : deftype <: typeuse)] +[visit_exp deftype] +[visit_id deftype] +[visit_exp $free_deftype(deftype)] +[visit_exp deftype] +[visit_id deftype] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_tagtype{deftype : deftype}((deftype : deftype <: typeuse)) = $free_deftype(deftype) +[check_dims] mut mut?#253 valtype valtype#127 +[visit_exp `%%`_globaltype{`mut?#253`, valtype#127}(mut?{mut <- `mut?`}, valtype)] +[visit_exp `mut?#253`] +[visit_id mut?#253] +[visit_exp valtype#127] +[visit_id valtype#127] +[visit_exp (mut?{mut <- `mut?`}, valtype)] +[visit_exp mut?{mut <- `mut?`}] +[scope_enter mut] +[visit_exp mut] +[visit_id mut] not free +[visit_id mut] not free +[scope_exit mut] +[visit_exp `mut?`] +[visit_id mut?] no dims +[visit_id mut?] +[visit_exp valtype] +[visit_id valtype] +[visit_exp $free_valtype(valtype)] +[visit_exp valtype] +[visit_id valtype] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_globaltype{`mut?#253` : mut?, valtype#127 : valtype, `mut?` : mut?, valtype : valtype}(`%%`_globaltype{`mut?#253`, valtype#127}(mut?{mut <- `mut?`}, valtype)) = $free_valtype(valtype) +[check_dims] addrtype addrtype#211 limits limits#211 +[visit_exp `%%PAGE`_memtype{addrtype#211, limits#211}(addrtype, limits)] +[visit_exp addrtype#211] +[visit_id addrtype#211] +[visit_exp limits#211] +[visit_id limits#211] +[visit_exp (addrtype, limits)] +[visit_exp addrtype] +[visit_id addrtype] +[visit_exp limits] +[visit_id limits] +[visit_exp $free_addrtype((addrtype : addrtype <: numtype))] +[visit_exp (addrtype : addrtype <: numtype)] +[visit_exp addrtype] +[visit_id addrtype] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_memtype{addrtype#211 : addrtype, limits#211 : limits, addrtype : addrtype, limits : limits}(`%%PAGE`_memtype{addrtype#211, limits#211}(addrtype, limits)) = $free_addrtype((addrtype : addrtype <: numtype)) +[check_dims] addrtype addrtype#223 limits limits#223 reftype reftype#111 +[visit_exp `%%%`_tabletype{addrtype#223, limits#223, reftype#111}(addrtype, limits, reftype)] +[visit_exp addrtype#223] +[visit_id addrtype#223] +[visit_exp limits#223] +[visit_id limits#223] +[visit_exp reftype#111] +[visit_id reftype#111] +[visit_exp (addrtype, limits, reftype)] +[visit_exp addrtype] +[visit_id addrtype] +[visit_exp limits] +[visit_id limits] +[visit_exp reftype] +[visit_id reftype] +[visit_exp $free_addrtype((addrtype : addrtype <: numtype)) +++ $free_reftype(reftype)] +[visit_exp $free_addrtype((addrtype : addrtype <: numtype))] +[visit_exp (addrtype : addrtype <: numtype)] +[visit_exp addrtype] +[visit_id addrtype] not free +[visit_exp $free_reftype(reftype)] +[visit_exp reftype] +[visit_id reftype] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_tabletype{addrtype#223 : addrtype, limits#223 : limits, reftype#111 : reftype, addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype{addrtype#223, limits#223, reftype#111}(addrtype, limits, reftype)) = $free_addrtype((addrtype : addrtype <: numtype)) +++ $free_reftype(reftype) +[check_dims] dataidx*#19 elemidx*#19 funcidx*#19 globalidx*#19 labelidx*#19 localidx*#19 memidx*#19 tableidx*#19 typeidx*#19 +[visit_exp `OK`_datatype] +[visit_exp ()] +[visit_exp {`TYPES`{`typeidx*#19`} [], `FUNCS`{`funcidx*#19`} [], `GLOBALS`{`globalidx*#19`} [], `TABLES`{`tableidx*#19`} [], `MEMS`{`memidx*#19`} [], `ELEMS`{`elemidx*#19`} [], `DATAS`{`dataidx*#19`} [], `LOCALS`{`localidx*#19`} [], `LABELS`{`labelidx*#19`} []}] +[visit_exp `typeidx*#19`] +[visit_id typeidx*#19] +[visit_exp []] +[visit_exp `funcidx*#19`] +[visit_id funcidx*#19] +[visit_exp []] +[visit_exp `globalidx*#19`] +[visit_id globalidx*#19] +[visit_exp []] +[visit_exp `tableidx*#19`] +[visit_id tableidx*#19] +[visit_exp []] +[visit_exp `memidx*#19`] +[visit_id memidx*#19] +[visit_exp []] +[visit_exp `elemidx*#19`] +[visit_id elemidx*#19] +[visit_exp []] +[visit_exp `dataidx*#19`] +[visit_id dataidx*#19] +[visit_exp []] +[visit_exp `localidx*#19`] +[visit_id localidx*#19] +[visit_exp []] +[visit_exp `labelidx*#19`] +[visit_id labelidx*#19] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_datatype{`typeidx*#19` : typeidx*, `funcidx*#19` : funcidx*, `globalidx*#19` : globalidx*, `tableidx*#19` : tableidx*, `memidx*#19` : memidx*, `elemidx*#19` : elemidx*, `dataidx*#19` : dataidx*, `localidx*#19` : localidx*, `labelidx*#19` : labelidx*}(`OK`_datatype) = {`TYPES`{`typeidx*#19`} [], `FUNCS`{`funcidx*#19`} [], `GLOBALS`{`globalidx*#19`} [], `TABLES`{`tableidx*#19`} [], `MEMS`{`memidx*#19`} [], `ELEMS`{`elemidx*#19`} [], `DATAS`{`dataidx*#19`} [], `LOCALS`{`localidx*#19`} [], `LABELS`{`labelidx*#19`} []} +[check_dims] reftype +[visit_exp reftype] +[visit_id reftype] +[visit_exp $free_reftype(reftype)] +[visit_exp reftype] +[visit_id reftype] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_elemtype{reftype : reftype}(reftype) = $free_reftype(reftype) +[check_dims] tagtype tagtype#7 +[visit_exp `TAG`_externtype{tagtype#7}(tagtype)] +[visit_exp tagtype#7] +[visit_id tagtype#7] +[visit_exp (tagtype)] +[visit_exp tagtype] +[visit_id tagtype] +[visit_exp $free_tagtype(tagtype)] +[visit_exp tagtype] +[visit_id tagtype] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_externtype{tagtype#7 : tagtype, tagtype : tagtype}(`TAG`_externtype{tagtype#7}(tagtype)) = $free_tagtype(tagtype) +[check_dims] globaltype globaltype#7 +[visit_exp `GLOBAL`_externtype{globaltype#7}(globaltype)] +[visit_exp globaltype#7] +[visit_id globaltype#7] +[visit_exp (globaltype)] +[visit_exp globaltype] +[visit_id globaltype] +[visit_exp $free_globaltype(globaltype)] +[visit_exp globaltype] +[visit_id globaltype] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_externtype{globaltype#7 : globaltype, globaltype : globaltype}(`GLOBAL`_externtype{globaltype#7}(globaltype)) = $free_globaltype(globaltype) +[check_dims] memtype memtype#7 +[visit_exp `MEM`_externtype{memtype#7}(memtype)] +[visit_exp memtype#7] +[visit_id memtype#7] +[visit_exp (memtype)] +[visit_exp memtype] +[visit_id memtype] +[visit_exp $free_memtype(memtype)] +[visit_exp memtype] +[visit_id memtype] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_externtype{memtype#7 : memtype, memtype : memtype}(`MEM`_externtype{memtype#7}(memtype)) = $free_memtype(memtype) +[check_dims] tabletype tabletype#7 +[visit_exp `TABLE`_externtype{tabletype#7}(tabletype)] +[visit_exp tabletype#7] +[visit_id tabletype#7] +[visit_exp (tabletype)] +[visit_exp tabletype] +[visit_id tabletype] +[visit_exp $free_tabletype(tabletype)] +[visit_exp tabletype] +[visit_id tabletype] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_externtype{tabletype#7 : tabletype, tabletype : tabletype}(`TABLE`_externtype{tabletype#7}(tabletype)) = $free_tabletype(tabletype) +[check_dims] typeuse typeuse#7 +[visit_exp `FUNC`_externtype{typeuse#7}(typeuse)] +[visit_exp typeuse#7] +[visit_id typeuse#7] +[visit_exp (typeuse)] +[visit_exp typeuse] +[visit_id typeuse] +[visit_exp $free_typeuse(typeuse)] +[visit_exp typeuse] +[visit_id typeuse] not free +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_externtype{typeuse#7 : typeuse, typeuse : typeuse}(`FUNC`_externtype{typeuse#7}(typeuse)) = $free_typeuse(typeuse) +[check_dims] externtype*#88 externtype_1 externtype_2 +[visit_exp `%->%`_moduletype{`externtype*#88`}(externtype_1*{externtype_1 <- `externtype_1*`}, externtype_2*{externtype_2 <- `externtype_2*`})] +[visit_exp `externtype*#88`] +[visit_id externtype*#88] +[visit_exp (externtype_1*{externtype_1 <- `externtype_1*`}, externtype_2*{externtype_2 <- `externtype_2*`})] +[visit_exp externtype_1*{externtype_1 <- `externtype_1*`}] +[scope_enter externtype_1] +[visit_exp externtype_1] +[visit_id externtype_1] not free +[visit_id externtype_1] not free +[scope_exit externtype_1] +[visit_exp `externtype_1*`] +[visit_id externtype_1*] no dims +[visit_id externtype_1*] +[visit_exp externtype_2*{externtype_2 <- `externtype_2*`}] +[scope_enter externtype_2] +[visit_exp externtype_2] +[visit_id externtype_2] not free +[visit_id externtype_2] not free +[scope_exit externtype_2] +[visit_exp `externtype_2*`] +[visit_id externtype_2*] no dims +[visit_id externtype_2*] +[visit_exp $free_list($free_externtype(externtype_1)*{externtype_1 <- `externtype_1*`}) +++ $free_list($free_externtype(externtype_2)*{externtype_2 <- `externtype_2*`})] +[visit_exp $free_list($free_externtype(externtype_1)*{externtype_1 <- `externtype_1*`})] +[visit_exp $free_externtype(externtype_1)*{externtype_1 <- `externtype_1*`}] +[scope_enter externtype_1] +[visit_exp $free_externtype(externtype_1)] +[visit_exp externtype_1] +[visit_id externtype_1] not free +[visit_id externtype_1] not free +[scope_exit externtype_1] +[visit_exp `externtype_1*`] +[visit_id externtype_1*] not free +[visit_id externtype_1*] no dims +[visit_exp $free_list($free_externtype(externtype_2)*{externtype_2 <- `externtype_2*`})] +[visit_exp $free_externtype(externtype_2)*{externtype_2 <- `externtype_2*`}] +[scope_enter externtype_2] +[visit_exp $free_externtype(externtype_2)] +[visit_exp externtype_2] +[visit_id externtype_2] not free +[visit_id externtype_2] not free +[scope_exit externtype_2] +[visit_exp `externtype_2*`] +[visit_id externtype_2*] not free +[visit_id externtype_2*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + def $free_moduletype{`externtype*#88` : externtype*, `externtype_1*` : externtype*, `externtype_2*` : externtype*}(`%->%`_moduletype{`externtype*#88`}(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*`}) +[check_dims] numtype +[visit_id numtype] not free +[check_dims] Inn +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] +[check_dims] Fnn +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] +[check_dims] Pnn +[visit_exp Pnn] +[visit_id Pnn] +[check_dims] lanetype +[visit_id lanetype] not free +[check_dims] numtype +[visit_exp (numtype : numtype <: lanetype)] +[visit_exp numtype] +[visit_id numtype] +[check_dims] packtype +[visit_exp (packtype : packtype <: lanetype)] +[visit_exp packtype] +[visit_id packtype] +[check_dims] Jnn +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[check_dims] Vnn +[visit_exp Vnn] +[visit_id Vnn] +[check_dims] storagetype +[visit_id storagetype] not free +[check_dims] numtype +[visit_exp (numtype : numtype <: storagetype)] +[visit_exp numtype] +[visit_id numtype] +[check_dims] vectype +[visit_exp (vectype : vectype <: storagetype)] +[visit_exp vectype] +[visit_id vectype] +[check_dims] packtype +[visit_exp (packtype : packtype <: storagetype)] +[visit_exp packtype] +[visit_id packtype] +[check_dims] +[check_dims] +[visit_exp 8] +[check_dims] +[visit_exp 16] +[check_dims] +[visit_exp 32] +[check_dims] +[visit_exp 64] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[check_dims] numtype +[visit_id numtype] not free +[check_dims] Inn +--- 1 --- +[check_dims] Inn +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Inn +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Inn +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Inn i#1051 sz +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id sz] +[visit_exp (sz!`%`_sz{i#1051}.0 < $sizenn((Inn : Inn <: numtype)))] +[visit_exp sz!`%`_sz{i#1051}.0] +[visit_exp sz!`%`_sz{i#1051}] +[visit_exp sz] +[visit_id sz] not free +[visit_exp i#1051] +[visit_id i#1051] +[visit_exp $sizenn((Inn : Inn <: numtype))] +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] not free +[visit_id Inn] no dims +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] +[check_dims] Fnn +--- 1 --- +[check_dims] Fnn +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Fnn +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Fnn +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Fnn +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Fnn +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Fnn +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Fnn +--- 2 --- +--- 3 --- +--- 4 --- +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] +[check_dims] numtype +[visit_id numtype] not free +[check_dims] Inn +--- 1 --- +[check_dims] Inn +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Inn +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Inn +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Inn +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id sx] no dims +[visit_id sx] +--- 1 --- +[check_dims] Inn +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id sx] no dims +[visit_id sx] +--- 1 --- +[check_dims] Inn +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Inn +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Inn +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Inn +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Inn +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id sx] no dims +[visit_id sx] +--- 1 --- +[check_dims] Inn +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Inn +--- 2 --- +--- 3 --- +--- 4 --- +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] +[check_dims] Fnn +--- 1 --- +[check_dims] Fnn +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Fnn +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Fnn +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Fnn +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Fnn +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Fnn +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Fnn +--- 2 --- +--- 3 --- +--- 4 --- +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] +[check_dims] numtype +[visit_id numtype] not free +[check_dims] Inn +--- 1 --- +[check_dims] Inn +--- 2 --- +--- 3 --- +--- 4 --- +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] +[check_dims] numtype +[visit_id numtype] not free +[check_dims] Inn +--- 1 --- +[check_dims] Inn +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Inn +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Inn +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id sx] no dims +[visit_id sx] +--- 1 --- +[check_dims] Inn +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id sx] no dims +[visit_id sx] +--- 1 --- +[check_dims] Inn +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id sx] no dims +[visit_id sx] +--- 1 --- +[check_dims] Inn +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id sx] no dims +[visit_id sx] +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] +[check_dims] Fnn +--- 1 --- +[check_dims] Fnn +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Fnn +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Fnn +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Fnn +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Fnn +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Fnn +--- 2 --- +--- 3 --- +--- 4 --- +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] +[check_dims] numtype_1 numtype_2 +[visit_id numtype_1] not free +[visit_id numtype_2] not free +[check_dims] Inn_1 Inn_2 +--- 1 --- +[check_dims] Inn_1 Inn_2 +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id sx] no dims +[visit_id sx] +[visit_exp ($sizenn1((Inn_1 : Inn <: numtype)) < $sizenn2((Inn_2 : Inn <: numtype)))] +[visit_exp $sizenn1((Inn_1 : Inn <: numtype))] +[visit_exp (Inn_1 : Inn <: numtype)] +[visit_exp Inn_1] +[visit_id Inn_1] not free +[visit_id Inn_1] no dims +[visit_exp $sizenn2((Inn_2 : Inn <: numtype))] +[visit_exp (Inn_2 : Inn <: numtype)] +[visit_exp Inn_2] +[visit_id Inn_2] not free +[visit_id Inn_2] no dims +--- 1 --- +[check_dims] Inn_1 Inn_2 +--- 2 --- +--- 3 --- +--- 4 --- +[visit_exp ($sizenn1((Inn_1 : Inn <: numtype)) > $sizenn2((Inn_2 : Inn <: numtype)))] +[visit_exp $sizenn1((Inn_1 : Inn <: numtype))] +[visit_exp (Inn_1 : Inn <: numtype)] +[visit_exp Inn_1] +[visit_id Inn_1] not free +[visit_id Inn_1] no dims +[visit_exp $sizenn2((Inn_2 : Inn <: numtype))] +[visit_exp (Inn_2 : Inn <: numtype)] +[visit_exp Inn_2] +[visit_id Inn_2] not free +[visit_id Inn_2] no dims +[visit_exp (Inn_1 : Inn <: numtype)] +[visit_exp Inn_1] +[visit_id Inn_1] +[visit_exp (Inn_2 : Inn <: numtype)] +[visit_exp Inn_2] +[visit_id Inn_2] +[check_dims] Fnn_2 Inn_1 +--- 1 --- +[check_dims] Fnn_2 Inn_1 +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id sx] no dims +[visit_id sx] +--- 1 --- +[check_dims] Fnn_2 Inn_1 +--- 2 --- +--- 3 --- +--- 4 --- +[visit_exp ($sizenn1((Inn_1 : Inn <: numtype)) = $sizenn2((Fnn_2 : Fnn <: numtype)))] +[visit_exp $sizenn1((Inn_1 : Inn <: numtype))] +[visit_exp (Inn_1 : Inn <: numtype)] +[visit_exp Inn_1] +[visit_id Inn_1] not free +[visit_id Inn_1] no dims +[visit_exp $sizenn2((Fnn_2 : Fnn <: numtype))] +[visit_exp (Fnn_2 : Fnn <: numtype)] +[visit_exp Fnn_2] +[visit_id Fnn_2] not free +[visit_id Fnn_2] no dims +[visit_exp (Inn_1 : Inn <: numtype)] +[visit_exp Inn_1] +[visit_id Inn_1] +[visit_exp (Fnn_2 : Fnn <: numtype)] +[visit_exp Fnn_2] +[visit_id Fnn_2] +[check_dims] Fnn_1 Inn_2 +--- 1 --- +[check_dims] Fnn_1 Inn_2 +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id sx] no dims +[visit_id sx] +--- 1 --- +[check_dims] Fnn_1 Inn_2 +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id sx] no dims +[visit_id sx] +--- 1 --- +[check_dims] Fnn_1 Inn_2 +--- 2 --- +--- 3 --- +--- 4 --- +[visit_exp ($sizenn1((Fnn_1 : Fnn <: numtype)) = $sizenn2((Inn_2 : Inn <: numtype)))] +[visit_exp $sizenn1((Fnn_1 : Fnn <: numtype))] +[visit_exp (Fnn_1 : Fnn <: numtype)] +[visit_exp Fnn_1] +[visit_id Fnn_1] not free +[visit_id Fnn_1] no dims +[visit_exp $sizenn2((Inn_2 : Inn <: numtype))] +[visit_exp (Inn_2 : Inn <: numtype)] +[visit_exp Inn_2] +[visit_id Inn_2] not free +[visit_id Inn_2] no dims +[visit_exp (Fnn_1 : Fnn <: numtype)] +[visit_exp Fnn_1] +[visit_id Fnn_1] +[visit_exp (Inn_2 : Inn <: numtype)] +[visit_exp Inn_2] +[visit_id Inn_2] +[check_dims] Fnn_1 Fnn_2 +--- 1 --- +[check_dims] Fnn_1 Fnn_2 +--- 2 --- +--- 3 --- +--- 4 --- +[visit_exp ($sizenn1((Fnn_1 : Fnn <: numtype)) < $sizenn2((Fnn_2 : Fnn <: numtype)))] +[visit_exp $sizenn1((Fnn_1 : Fnn <: numtype))] +[visit_exp (Fnn_1 : Fnn <: numtype)] +[visit_exp Fnn_1] +[visit_id Fnn_1] not free +[visit_id Fnn_1] no dims +[visit_exp $sizenn2((Fnn_2 : Fnn <: numtype))] +[visit_exp (Fnn_2 : Fnn <: numtype)] +[visit_exp Fnn_2] +[visit_id Fnn_2] not free +[visit_id Fnn_2] no dims +--- 1 --- +[check_dims] Fnn_1 Fnn_2 +--- 2 --- +--- 3 --- +--- 4 --- +[visit_exp ($sizenn1((Fnn_1 : Fnn <: numtype)) > $sizenn2((Fnn_2 : Fnn <: numtype)))] +[visit_exp $sizenn1((Fnn_1 : Fnn <: numtype))] +[visit_exp (Fnn_1 : Fnn <: numtype)] +[visit_exp Fnn_1] +[visit_id Fnn_1] not free +[visit_id Fnn_1] no dims +[visit_exp $sizenn2((Fnn_2 : Fnn <: numtype))] +[visit_exp (Fnn_2 : Fnn <: numtype)] +[visit_exp Fnn_2] +[visit_id Fnn_2] not free +[visit_id Fnn_2] no dims +[visit_exp (Fnn_1 : Fnn <: numtype)] +[visit_exp Fnn_1] +[visit_id Fnn_1] +[visit_exp (Fnn_2 : Fnn <: numtype)] +[visit_exp Fnn_2] +[visit_id Fnn_2] +[check_dims] +[check_dims] +[visit_exp 1] +[check_dims] +[visit_exp 2] +[check_dims] +[visit_exp 4] +[check_dims] +[visit_exp 8] +[check_dims] +[visit_exp 16] +[check_dims] +--- 1 --- +[check_dims] dim i#1053 lanetype +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id lanetype] +[visit_id dim] +[visit_exp (($lsize(lanetype) * dim!`%`_dim{i#1053}.0) = 128)] +[visit_exp ($lsize(lanetype) * dim!`%`_dim{i#1053}.0)] +[visit_exp $lsize(lanetype)] +[visit_exp lanetype] +[visit_id lanetype] not free +[visit_exp dim!`%`_dim{i#1053}.0] +[visit_exp dim!`%`_dim{i#1053}] +[visit_exp dim] +[visit_id dim] not free +[visit_exp i#1053] +[visit_id i#1053] +[visit_exp 128] +[check_dims] shape +DecD dim(shape : shape) : dim +[visit_id shape] not free +[check_dims] Lnn N dim#11 i#1058 i#1065 i#1073 lanetype#11 +[visit_exp `%X%`_shape{lanetype#11, dim#11, i#1058}(Lnn, `%`_dim{i#1065}(N))] +[visit_exp lanetype#11] +[visit_id lanetype#11] +[visit_exp dim#11] +[visit_id dim#11] +[visit_exp i#1058] +[visit_id i#1058] +[visit_exp (Lnn, `%`_dim{i#1065}(N))] +[visit_exp Lnn] +[visit_id Lnn] +[visit_exp `%`_dim{i#1065}(N)] +[visit_exp i#1065] +[visit_id i#1065] +[visit_exp (N)] +[visit_exp N] +[visit_id N] +[visit_exp `%`_dim{i#1073}(N)] +[visit_exp i#1073] +[visit_id i#1073] +[visit_exp (N)] +[visit_exp N] +[visit_id N] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $dim{lanetype#11 : lanetype, dim#11 : dim, i#1058 : nat, Lnn : Lnn, i#1065 : nat, N : N, i#1073 : nat}(`%X%`_shape{lanetype#11, dim#11, i#1058}(Lnn, `%`_dim{i#1065}(N))) = `%`_dim{i#1073}(N) +[check_dims] shape +DecD lanetype(shape : shape) : lanetype +[visit_id shape] not free +[check_dims] Lnn N dim#23 i#1078 i#1085 lanetype#23 +[visit_exp `%X%`_shape{lanetype#23, dim#23, i#1078}(Lnn, `%`_dim{i#1085}(N))] +[visit_exp lanetype#23] +[visit_id lanetype#23] +[visit_exp dim#23] +[visit_id dim#23] +[visit_exp i#1078] +[visit_id i#1078] +[visit_exp (Lnn, `%`_dim{i#1085}(N))] +[visit_exp Lnn] +[visit_id Lnn] +[visit_exp `%`_dim{i#1085}(N)] +[visit_exp i#1085] +[visit_id i#1085] +[visit_exp (N)] +[visit_exp N] +[visit_id N] +[visit_exp Lnn] +[visit_id Lnn] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $lanetype{lanetype#23 : lanetype, dim#23 : dim, i#1078 : nat, Lnn : Lnn, i#1085 : nat, N : N}(`%X%`_shape{lanetype#23, dim#23, i#1078}(Lnn, `%`_dim{i#1085}(N))) = Lnn +[check_dims] shape +DecD unpackshape(shape : shape) : numtype +[visit_id shape] not free +[check_dims] Lnn N dim#35 i#1090 i#1097 lanetype#35 +[visit_exp `%X%`_shape{lanetype#35, dim#35, i#1090}(Lnn, `%`_dim{i#1097}(N))] +[visit_exp lanetype#35] +[visit_id lanetype#35] +[visit_exp dim#35] +[visit_id dim#35] +[visit_exp i#1090] +[visit_id i#1090] +[visit_exp (Lnn, `%`_dim{i#1097}(N))] +[visit_exp Lnn] +[visit_id Lnn] +[visit_exp `%`_dim{i#1097}(N)] +[visit_exp i#1097] +[visit_id i#1097] +[visit_exp (N)] +[visit_exp N] +[visit_id N] +[visit_exp $lunpack(Lnn)] +[visit_exp Lnn] +[visit_id Lnn] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $unpackshape{lanetype#35 : lanetype, dim#35 : dim, i#1090 : nat, Lnn : Lnn, i#1097 : nat, N : N}(`%X%`_shape{lanetype#35, dim#35, i#1090}(Lnn, `%`_dim{i#1097}(N))) = $lunpack(Lnn) +[check_dims] +--- 1 --- +[check_dims] Jnn shape +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id shape] +[visit_exp ($lanetype(shape) = (Jnn : Jnn <: lanetype))] +[visit_exp $lanetype(shape)] +[visit_exp shape] +[visit_id shape] not free +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[check_dims] +--- 1 --- +[check_dims] shape +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id shape] +[visit_exp ($lanetype(shape) = `I8`_lanetype)] +[visit_exp $lanetype(shape)] +[visit_exp shape] +[visit_id shape] not free +[visit_exp `I8`_lanetype] +[visit_exp ()] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[check_dims] shape +[visit_id shape] not free +[check_dims] Jnn M dim#65 i#1108 i#1115 lanetype#65 +--- 1 --- +[check_dims] Jnn M dim#65 i#1108 i#1115 lanetype#65 +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Jnn M dim#65 i#1108 i#1115 lanetype#65 +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Jnn M dim#65 i#1108 i#1115 lanetype#65 +--- 2 --- +--- 3 --- +--- 4 --- +[visit_exp ($lsizenn((Jnn : Jnn <: lanetype)) = 8)] +[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_id Jnn] no dims +[visit_exp 8] +[visit_exp `%X%`_shape{lanetype#65, dim#65, i#1108}((Jnn : Jnn <: lanetype), `%`_dim{i#1115}(M))] +[visit_exp lanetype#65] +[visit_id lanetype#65] +[visit_exp dim#65] +[visit_id dim#65] +[visit_exp i#1108] +[visit_id i#1108] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#1115}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp `%`_dim{i#1115}(M)] +[visit_exp i#1115] +[visit_id i#1115] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[check_dims] Fnn M dim#77 i#1120 i#1127 lanetype#77 +--- 1 --- +[check_dims] Fnn M dim#77 i#1120 i#1127 lanetype#77 +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Fnn M dim#77 i#1120 i#1127 lanetype#77 +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Fnn M dim#77 i#1120 i#1127 lanetype#77 +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Fnn M dim#77 i#1120 i#1127 lanetype#77 +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Fnn M dim#77 i#1120 i#1127 lanetype#77 +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Fnn M dim#77 i#1120 i#1127 lanetype#77 +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Fnn M dim#77 i#1120 i#1127 lanetype#77 +--- 2 --- +--- 3 --- +--- 4 --- +[visit_exp `%X%`_shape{lanetype#77, dim#77, i#1120}((Fnn : Fnn <: lanetype), `%`_dim{i#1127}(M))] +[visit_exp lanetype#77] +[visit_id lanetype#77] +[visit_exp dim#77] +[visit_id dim#77] +[visit_exp i#1120] +[visit_id i#1120] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#1127}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `%`_dim{i#1127}(M)] +[visit_exp i#1127] +[visit_id i#1127] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[check_dims] shape +[visit_id shape] not free +[check_dims] Jnn M dim#89 i#1132 i#1139 lanetype#89 +--- 1 --- +[check_dims] Jnn M dim#89 i#1132 i#1139 lanetype#89 +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Jnn M dim#89 i#1132 i#1139 lanetype#89 +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Jnn M dim#89 i#1132 i#1139 lanetype#89 +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id sx] no dims +[visit_id sx] +[visit_exp ($lsizenn((Jnn : Jnn <: lanetype)) <= 16)] +[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_id Jnn] no dims +[visit_exp 16] +--- 1 --- +[check_dims] Jnn M dim#89 i#1132 i#1139 lanetype#89 +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id sx] no dims +[visit_id sx] +[visit_exp ($lsizenn((Jnn : Jnn <: lanetype)) <= 16)] +[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_id Jnn] no dims +[visit_exp 16] +--- 1 --- +[check_dims] Jnn M dim#89 i#1132 i#1139 lanetype#89 +--- 2 --- +--- 3 --- +--- 4 --- +[visit_exp ($lsizenn((Jnn : Jnn <: lanetype)) >= 16)] +[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_id Jnn] no dims +[visit_exp 16] +--- 1 --- +[check_dims] Jnn M dim#89 i#1132 i#1139 lanetype#89 +--- 2 --- +--- 3 --- +--- 4 --- +[visit_exp ($lsizenn((Jnn : Jnn <: lanetype)) <= 16)] +[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_id Jnn] no dims +[visit_exp 16] +--- 1 --- +[check_dims] Jnn M dim#89 i#1132 i#1139 lanetype#89 +--- 2 --- +--- 3 --- +--- 4 --- +[visit_exp ($lsizenn((Jnn : Jnn <: lanetype)) = 16)] +[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_id Jnn] no dims +[visit_exp 16] +--- 1 --- +[check_dims] Jnn M dim#89 i#1132 i#1139 lanetype#89 +--- 2 --- +--- 3 --- +--- 4 --- +[visit_exp ($lsizenn((Jnn : Jnn <: lanetype)) = 16)] +[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_id Jnn] no dims +[visit_exp 16] +--- 1 --- +[check_dims] Jnn M dim#89 i#1132 i#1139 lanetype#89 +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id sx] no dims +[visit_id sx] +[visit_exp ($lsizenn((Jnn : Jnn <: lanetype)) <= 32)] +[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_id Jnn] no dims +[visit_exp 32] +--- 1 --- +[check_dims] Jnn M dim#89 i#1132 i#1139 lanetype#89 +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id sx] no dims +[visit_id sx] +[visit_exp ($lsizenn((Jnn : Jnn <: lanetype)) <= 32)] +[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_id Jnn] no dims +[visit_exp 32] +[visit_exp `%X%`_shape{lanetype#89, dim#89, i#1132}((Jnn : Jnn <: lanetype), `%`_dim{i#1139}(M))] +[visit_exp lanetype#89] +[visit_id lanetype#89] +[visit_exp dim#89] +[visit_id dim#89] +[visit_exp i#1132] +[visit_id i#1132] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#1139}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp `%`_dim{i#1139}(M)] +[visit_exp i#1139] +[visit_id i#1139] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[check_dims] Fnn M dim#101 i#1144 i#1151 lanetype#101 +--- 1 --- +[check_dims] Fnn M dim#101 i#1144 i#1151 lanetype#101 +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Fnn M dim#101 i#1144 i#1151 lanetype#101 +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Fnn M dim#101 i#1144 i#1151 lanetype#101 +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Fnn M dim#101 i#1144 i#1151 lanetype#101 +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Fnn M dim#101 i#1144 i#1151 lanetype#101 +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Fnn M dim#101 i#1144 i#1151 lanetype#101 +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Fnn M dim#101 i#1144 i#1151 lanetype#101 +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Fnn M dim#101 i#1144 i#1151 lanetype#101 +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Fnn M dim#101 i#1144 i#1151 lanetype#101 +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Fnn M dim#101 i#1144 i#1151 lanetype#101 +--- 2 --- +--- 3 --- +--- 4 --- +[visit_exp `%X%`_shape{lanetype#101, dim#101, i#1144}((Fnn : Fnn <: lanetype), `%`_dim{i#1151}(M))] +[visit_exp lanetype#101] +[visit_id lanetype#101] +[visit_exp dim#101] +[visit_id dim#101] +[visit_exp i#1144] +[visit_id i#1144] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#1151}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `%`_dim{i#1151}(M)] +[visit_exp i#1151] +[visit_id i#1151] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[check_dims] shape +[visit_id shape] not free +[check_dims] Jnn M dim#113 i#1156 i#1163 lanetype#113 +--- 1 --- +[check_dims] Jnn M dim#113 i#1156 i#1163 lanetype#113 +--- 2 --- +--- 3 --- +--- 4 --- +[visit_exp `%X%`_shape{lanetype#113, dim#113, i#1156}((Jnn : Jnn <: lanetype), `%`_dim{i#1163}(M))] +[visit_exp lanetype#113] +[visit_id lanetype#113] +[visit_exp dim#113] +[visit_id dim#113] +[visit_exp i#1156] +[visit_id i#1156] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#1163}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp `%`_dim{i#1163}(M)] +[visit_exp i#1163] +[visit_id i#1163] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[check_dims] Fnn M dim#125 i#1168 i#1175 lanetype#125 +--- 1 --- +[check_dims] Fnn M dim#125 i#1168 i#1175 lanetype#125 +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Fnn M dim#125 i#1168 i#1175 lanetype#125 +--- 2 --- +--- 3 --- +--- 4 --- +[visit_exp `%X%`_shape{lanetype#125, dim#125, i#1168}((Fnn : Fnn <: lanetype), `%`_dim{i#1175}(M))] +[visit_exp lanetype#125] +[visit_id lanetype#125] +[visit_exp dim#125] +[visit_id dim#125] +[visit_exp i#1168] +[visit_id i#1168] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#1175}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `%`_dim{i#1175}(M)] +[visit_exp i#1175] +[visit_id i#1175] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[check_dims] shape +[visit_id shape] not free +[check_dims] Jnn M dim#137 i#1180 i#1187 lanetype#137 +--- 1 --- +[check_dims] Jnn M dim#137 i#1180 i#1187 lanetype#137 +--- 2 --- +--- 3 --- +--- 4 --- +[visit_exp `%X%`_shape{lanetype#137, dim#137, i#1180}((Jnn : Jnn <: lanetype), `%`_dim{i#1187}(M))] +[visit_exp lanetype#137] +[visit_id lanetype#137] +[visit_exp dim#137] +[visit_id dim#137] +[visit_exp i#1180] +[visit_id i#1180] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#1187}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp `%`_dim{i#1187}(M)] +[visit_exp i#1187] +[visit_id i#1187] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[check_dims] shape +[visit_id shape] not free +[check_dims] Jnn M dim#149 i#1192 i#1199 lanetype#149 +--- 1 --- +[check_dims] Jnn M dim#149 i#1192 i#1199 lanetype#149 +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Jnn M dim#149 i#1192 i#1199 lanetype#149 +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Jnn M dim#149 i#1192 i#1199 lanetype#149 sx +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id sx] +[visit_exp (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = `S`_sx))] +[visit_exp ($lsizenn((Jnn : Jnn <: lanetype)) =/= 64)] +[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_id Jnn] no dims +[visit_exp 64] +[visit_exp (sx = `S`_sx)] +[visit_exp sx] +[visit_id sx] not free +[visit_exp `S`_sx] +[visit_exp ()] +--- 1 --- +[check_dims] Jnn M dim#149 i#1192 i#1199 lanetype#149 sx +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id sx] +[visit_exp (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = `S`_sx))] +[visit_exp ($lsizenn((Jnn : Jnn <: lanetype)) =/= 64)] +[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_id Jnn] no dims +[visit_exp 64] +[visit_exp (sx = `S`_sx)] +[visit_exp sx] +[visit_id sx] not free +[visit_exp `S`_sx] +[visit_exp ()] +--- 1 --- +[check_dims] Jnn M dim#149 i#1192 i#1199 lanetype#149 sx +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id sx] +[visit_exp (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = `S`_sx))] +[visit_exp ($lsizenn((Jnn : Jnn <: lanetype)) =/= 64)] +[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_id Jnn] no dims +[visit_exp 64] +[visit_exp (sx = `S`_sx)] +[visit_exp sx] +[visit_id sx] not free +[visit_exp `S`_sx] +[visit_exp ()] +--- 1 --- +[check_dims] Jnn M dim#149 i#1192 i#1199 lanetype#149 sx +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id sx] +[visit_exp (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = `S`_sx))] +[visit_exp ($lsizenn((Jnn : Jnn <: lanetype)) =/= 64)] +[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_id Jnn] no dims +[visit_exp 64] +[visit_exp (sx = `S`_sx)] +[visit_exp sx] +[visit_id sx] not free +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%X%`_shape{lanetype#149, dim#149, i#1192}((Jnn : Jnn <: lanetype), `%`_dim{i#1199}(M))] +[visit_exp lanetype#149] +[visit_id lanetype#149] +[visit_exp dim#149] +[visit_id dim#149] +[visit_exp i#1192] +[visit_id i#1192] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#1199}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp `%`_dim{i#1199}(M)] +[visit_exp i#1199] +[visit_id i#1199] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[check_dims] Fnn M dim#161 i#1204 i#1211 lanetype#161 +--- 1 --- +[check_dims] Fnn M dim#161 i#1204 i#1211 lanetype#161 +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Fnn M dim#161 i#1204 i#1211 lanetype#161 +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Fnn M dim#161 i#1204 i#1211 lanetype#161 +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Fnn M dim#161 i#1204 i#1211 lanetype#161 +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Fnn M dim#161 i#1204 i#1211 lanetype#161 +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Fnn M dim#161 i#1204 i#1211 lanetype#161 +--- 2 --- +--- 3 --- +--- 4 --- +[visit_exp `%X%`_shape{lanetype#161, dim#161, i#1204}((Fnn : Fnn <: lanetype), `%`_dim{i#1211}(M))] +[visit_exp lanetype#161] +[visit_id lanetype#161] +[visit_exp dim#161] +[visit_id dim#161] +[visit_exp i#1204] +[visit_id i#1204] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#1211}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `%`_dim{i#1211}(M)] +[visit_exp i#1211] +[visit_id i#1211] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[check_dims] ishape +[visit_id ishape] not free +[check_dims] Jnn Jnn#4 M dim#173 i#1216 i#1223 lanetype#173 shape#11 +--- 1 --- +[check_dims] Jnn Jnn#4 M dim#173 i#1216 i#1223 lanetype#173 shape#11 +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] Jnn Jnn#4 M dim#173 i#1216 i#1223 lanetype#173 shape#11 +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id sx] no dims +[visit_id sx] +[visit_exp `%`_ishape{shape#11, Jnn#4}(`%X%`_shape{lanetype#173, dim#173, i#1216}((Jnn : Jnn <: lanetype), `%`_dim{i#1223}(M)))] +[visit_exp shape#11] +[visit_id shape#11] +[visit_exp Jnn#4] +[visit_id Jnn#4] +[visit_exp (`%X%`_shape{lanetype#173, dim#173, i#1216}((Jnn : Jnn <: lanetype), `%`_dim{i#1223}(M)))] +[visit_exp `%X%`_shape{lanetype#173, dim#173, i#1216}((Jnn : Jnn <: lanetype), `%`_dim{i#1223}(M))] +[visit_exp lanetype#173] +[visit_id lanetype#173] +[visit_exp dim#173] +[visit_id dim#173] +[visit_exp i#1216] +[visit_id i#1216] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#1223}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp `%`_dim{i#1223}(M)] +[visit_exp i#1223] +[visit_id i#1223] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[check_dims] bshape +[visit_id bshape] not free +[check_dims] M dim#185 i#1228 i#1235 lanetype#185 shape#23 +--- 1 --- +[check_dims] M dim#185 i#1228 i#1235 lanetype#185 shape#23 +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] M dim#185 i#1228 i#1235 lanetype#185 shape#23 +--- 2 --- +--- 3 --- +--- 4 --- +[visit_exp `%`_bshape{shape#23}(`%X%`_shape{lanetype#185, dim#185, i#1228}(`I8`_lanetype, `%`_dim{i#1235}(M)))] +[visit_exp shape#23] +[visit_id shape#23] +[visit_exp (`%X%`_shape{lanetype#185, dim#185, i#1228}(`I8`_lanetype, `%`_dim{i#1235}(M)))] +[visit_exp `%X%`_shape{lanetype#185, dim#185, i#1228}(`I8`_lanetype, `%`_dim{i#1235}(M))] +[visit_exp lanetype#185] +[visit_id lanetype#185] +[visit_exp dim#185] +[visit_id dim#185] +[visit_exp i#1228] +[visit_id i#1228] +[visit_exp (`I8`_lanetype, `%`_dim{i#1235}(M))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#1235}(M)] +[visit_exp i#1235] +[visit_id i#1235] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[check_dims] ishape_1 ishape_2 +[visit_id ishape_1] not free +[visit_id ishape_2] not free +[check_dims] Jnn#12 Jnn#8 Jnn_1 Jnn_2 M_1 M_2 dim#197 dim#209 i#1240 i#1247 i#1252 i#1259 lanetype#197 lanetype#209 shape#35 shape#47 +--- 1 --- +[check_dims] Jnn#12 Jnn#8 Jnn_1 Jnn_2 M_1 M_2 dim#197 dim#209 i#1240 i#1247 i#1252 i#1259 lanetype#197 lanetype#209 shape#35 shape#47 +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id sx] no dims +[visit_id sx] +[visit_exp ((16 <= (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) /\ (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) <= 32)))] +[visit_exp (16 <= (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))))] +[visit_exp 16] +[visit_exp (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))] +[visit_exp 2] +[visit_exp $lsizenn1((Jnn_1 : Jnn <: lanetype))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] not free +[visit_id Jnn_1] no dims +[visit_exp (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) <= 32))] +[visit_exp ((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype)))] +[visit_exp (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))] +[visit_exp 2] +[visit_exp $lsizenn1((Jnn_1 : Jnn <: lanetype))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] not free +[visit_id Jnn_1] no dims +[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] not free +[visit_id Jnn_2] no dims +[visit_exp ($lsizenn2((Jnn_2 : Jnn <: lanetype)) <= 32)] +[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] not free +[visit_id Jnn_2] no dims +[visit_exp 32] +[visit_exp `%`_ishape{shape#35, Jnn#8}(`%X%`_shape{lanetype#197, dim#197, i#1240}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#1247}(M_1)))] +[visit_exp shape#35] +[visit_id shape#35] +[visit_exp Jnn#8] +[visit_id Jnn#8] +[visit_exp (`%X%`_shape{lanetype#197, dim#197, i#1240}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#1247}(M_1)))] +[visit_exp `%X%`_shape{lanetype#197, dim#197, i#1240}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#1247}(M_1))] +[visit_exp lanetype#197] +[visit_id lanetype#197] +[visit_exp dim#197] +[visit_id dim#197] +[visit_exp i#1240] +[visit_id i#1240] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#1247}(M_1))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] +[visit_exp `%`_dim{i#1247}(M_1)] +[visit_exp i#1247] +[visit_id i#1247] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] +[visit_exp `%`_ishape{shape#47, Jnn#12}(`%X%`_shape{lanetype#209, dim#209, i#1252}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#1259}(M_2)))] +[visit_exp shape#47] +[visit_id shape#47] +[visit_exp Jnn#12] +[visit_id Jnn#12] +[visit_exp (`%X%`_shape{lanetype#209, dim#209, i#1252}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#1259}(M_2)))] +[visit_exp `%X%`_shape{lanetype#209, dim#209, i#1252}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#1259}(M_2))] +[visit_exp lanetype#209] +[visit_id lanetype#209] +[visit_exp dim#209] +[visit_id dim#209] +[visit_exp i#1252] +[visit_id i#1252] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#1259}(M_2))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] +[visit_exp `%`_dim{i#1259}(M_2)] +[visit_exp i#1259] +[visit_id i#1259] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] +[check_dims] ishape_1 ishape_2 +[visit_id ishape_1] not free +[visit_id ishape_2] not free +[check_dims] Jnn#16 Jnn#20 Jnn_1 Jnn_2 M_1 M_2 dim#221 dim#233 i#1264 i#1271 i#1276 i#1283 lanetype#221 lanetype#233 shape#59 shape#71 +--- 1 --- +[check_dims] Jnn#16 Jnn#20 Jnn_1 Jnn_2 M_1 M_2 dim#221 dim#233 i#1264 i#1271 i#1276 i#1283 lanetype#221 lanetype#233 shape#59 shape#71 +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id half] no dims +[visit_id half] +[visit_id sx] no dims +[visit_id sx] +[visit_exp (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) >= 16))] +[visit_exp ((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype)))] +[visit_exp (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))] +[visit_exp 2] +[visit_exp $lsizenn1((Jnn_1 : Jnn <: lanetype))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] not free +[visit_id Jnn_1] no dims +[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] not free +[visit_id Jnn_2] no dims +[visit_exp ($lsizenn2((Jnn_2 : Jnn <: lanetype)) >= 16)] +[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] not free +[visit_id Jnn_2] no dims +[visit_exp 16] +--- 1 --- +[check_dims] Jnn#16 Jnn#20 Jnn_1 Jnn_2 M_1 M_2 dim#221 dim#233 i#1264 i#1271 i#1276 i#1283 lanetype#221 lanetype#233 shape#59 shape#71 +--- 2 --- +--- 3 --- +--- 4 --- +[visit_exp (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32))] +[visit_exp ((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype)))] +[visit_exp (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))] +[visit_exp 2] +[visit_exp $lsizenn1((Jnn_1 : Jnn <: lanetype))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] not free +[visit_id Jnn_1] no dims +[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] not free +[visit_id Jnn_2] no dims +[visit_exp ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)] +[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] not free +[visit_id Jnn_2] no dims +[visit_exp 32] +--- 1 --- +[check_dims] Jnn#16 Jnn#20 Jnn_1 Jnn_2 M_1 M_2 dim#221 dim#233 i#1264 i#1271 i#1276 i#1283 lanetype#221 lanetype#233 shape#59 shape#71 +--- 2 --- +--- 3 --- +--- 4 --- +[visit_exp (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 16))] +[visit_exp ((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype)))] +[visit_exp (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))] +[visit_exp 2] +[visit_exp $lsizenn1((Jnn_1 : Jnn <: lanetype))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] not free +[visit_id Jnn_1] no dims +[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] not free +[visit_id Jnn_2] no dims +[visit_exp ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 16)] +[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] not free +[visit_id Jnn_2] no dims +[visit_exp 16] +[visit_exp `%`_ishape{shape#59, Jnn#16}(`%X%`_shape{lanetype#221, dim#221, i#1264}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#1271}(M_1)))] +[visit_exp shape#59] +[visit_id shape#59] +[visit_exp Jnn#16] +[visit_id Jnn#16] +[visit_exp (`%X%`_shape{lanetype#221, dim#221, i#1264}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#1271}(M_1)))] +[visit_exp `%X%`_shape{lanetype#221, dim#221, i#1264}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#1271}(M_1))] +[visit_exp lanetype#221] +[visit_id lanetype#221] +[visit_exp dim#221] +[visit_id dim#221] +[visit_exp i#1264] +[visit_id i#1264] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#1271}(M_1))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] +[visit_exp `%`_dim{i#1271}(M_1)] +[visit_exp i#1271] +[visit_id i#1271] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] +[visit_exp `%`_ishape{shape#71, Jnn#20}(`%X%`_shape{lanetype#233, dim#233, i#1276}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#1283}(M_2)))] +[visit_exp shape#71] +[visit_id shape#71] +[visit_exp Jnn#20] +[visit_id Jnn#20] +[visit_exp (`%X%`_shape{lanetype#233, dim#233, i#1276}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#1283}(M_2)))] +[visit_exp `%X%`_shape{lanetype#233, dim#233, i#1276}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#1283}(M_2))] +[visit_exp lanetype#233] +[visit_id lanetype#233] +[visit_exp dim#233] +[visit_id dim#233] +[visit_exp i#1276] +[visit_id i#1276] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#1283}(M_2))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] +[visit_exp `%`_dim{i#1283}(M_2)] +[visit_exp i#1283] +[visit_id i#1283] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] +[check_dims] ishape_1 ishape_2 +[visit_id ishape_1] not free +[visit_id ishape_2] not free +[check_dims] Jnn#24 Jnn#28 Jnn_1 Jnn_2 M_1 M_2 dim#245 dim#257 i#1288 i#1295 i#1300 i#1307 lanetype#245 lanetype#257 shape#83 shape#95 +--- 1 --- +[check_dims] Jnn#24 Jnn#28 Jnn_1 Jnn_2 M_1 M_2 dim#245 dim#257 i#1288 i#1295 i#1300 i#1307 lanetype#245 lanetype#257 shape#83 shape#95 +--- 2 --- +--- 3 --- +--- 4 --- +[visit_exp (((4 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32))] +[visit_exp ((4 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype)))] +[visit_exp (4 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))] +[visit_exp 4] +[visit_exp $lsizenn1((Jnn_1 : Jnn <: lanetype))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] not free +[visit_id Jnn_1] no dims +[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] not free +[visit_id Jnn_2] no dims +[visit_exp ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)] +[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] not free +[visit_id Jnn_2] no dims +[visit_exp 32] +[visit_exp `%`_ishape{shape#83, Jnn#24}(`%X%`_shape{lanetype#245, dim#245, i#1288}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#1295}(M_1)))] +[visit_exp shape#83] +[visit_id shape#83] +[visit_exp Jnn#24] +[visit_id Jnn#24] +[visit_exp (`%X%`_shape{lanetype#245, dim#245, i#1288}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#1295}(M_1)))] +[visit_exp `%X%`_shape{lanetype#245, dim#245, i#1288}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#1295}(M_1))] +[visit_exp lanetype#245] +[visit_id lanetype#245] +[visit_exp dim#245] +[visit_id dim#245] +[visit_exp i#1288] +[visit_id i#1288] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#1295}(M_1))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] +[visit_exp `%`_dim{i#1295}(M_1)] +[visit_exp i#1295] +[visit_id i#1295] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] +[visit_exp `%`_ishape{shape#95, Jnn#28}(`%X%`_shape{lanetype#257, dim#257, i#1300}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#1307}(M_2)))] +[visit_exp shape#95] +[visit_id shape#95] +[visit_exp Jnn#28] +[visit_id Jnn#28] +[visit_exp (`%X%`_shape{lanetype#257, dim#257, i#1300}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#1307}(M_2)))] +[visit_exp `%X%`_shape{lanetype#257, dim#257, i#1300}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#1307}(M_2))] +[visit_exp lanetype#257] +[visit_id lanetype#257] +[visit_exp dim#257] +[visit_id dim#257] +[visit_exp i#1300] +[visit_id i#1300] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#1307}(M_2))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] +[visit_exp `%`_dim{i#1307}(M_2)] +[visit_exp i#1307] +[visit_id i#1307] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] +[check_dims] shape_1 shape_2 +[visit_id shape_1] not free +[visit_id shape_2] not free +[check_dims] Jnn_1 Jnn_2 M_1 M_2 dim#269 dim#281 i#1312 i#1319 i#1324 i#1331 lanetype#269 lanetype#281 +--- 1 --- +[check_dims] Jnn_1 Jnn_2 M_1 M_2 dim#269 dim#281 i#1312 i#1319 i#1324 i#1331 lanetype#269 lanetype#281 +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id half] no dims +[visit_id half] +[visit_id sx] no dims +[visit_id sx] +[visit_exp ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))))] +[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] not free +[visit_id Jnn_2] no dims +[visit_exp (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))] +[visit_exp 2] +[visit_exp $lsizenn1((Jnn_1 : Jnn <: lanetype))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] not free +[visit_id Jnn_1] no dims +[visit_exp `%X%`_shape{lanetype#269, dim#269, i#1312}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#1319}(M_1))] +[visit_exp lanetype#269] +[visit_id lanetype#269] +[visit_exp dim#269] +[visit_id dim#269] +[visit_exp i#1312] +[visit_id i#1312] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#1319}(M_1))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] +[visit_exp `%`_dim{i#1319}(M_1)] +[visit_exp i#1319] +[visit_id i#1319] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] +[visit_exp `%X%`_shape{lanetype#281, dim#281, i#1324}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#1331}(M_2))] +[visit_exp lanetype#281] +[visit_id lanetype#281] +[visit_exp dim#281] +[visit_id dim#281] +[visit_exp i#1324] +[visit_id i#1324] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#1331}(M_2))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] +[visit_exp `%`_dim{i#1331}(M_2)] +[visit_exp i#1331] +[visit_id i#1331] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] +[check_dims] Fnn_2 Jnn_1 M_1 M_2 dim#293 dim#305 i#1336 i#1343 i#1348 i#1355 lanetype#293 lanetype#305 +--- 1 --- +[check_dims] Fnn_2 Jnn_1 M_1 M_2 dim#293 dim#305 half i#1336 i#1343 i#1348 i#1355 lanetype#293 lanetype#305 +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id half?] no dims +[visit_id half?] +[visit_id sx] no dims +[visit_id sx] +[visit_exp (((($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))))] +[visit_exp ((($sizenn2((Fnn_2 : Fnn <: numtype)) = $lsizenn1((Jnn_1 : Jnn <: lanetype))) /\ ($lsizenn1((Jnn_1 : Jnn <: lanetype)) = 32)) /\ (half?{half <- `half?`} = ?()))] +[visit_exp (($sizenn2((Fnn_2 : Fnn <: numtype)) = $lsizenn1((Jnn_1 : Jnn <: lanetype))) /\ ($lsizenn1((Jnn_1 : Jnn <: lanetype)) = 32))] +[visit_exp ($sizenn2((Fnn_2 : Fnn <: numtype)) = $lsizenn1((Jnn_1 : Jnn <: lanetype)))] +[visit_exp $sizenn2((Fnn_2 : Fnn <: numtype))] +[visit_exp (Fnn_2 : Fnn <: numtype)] +[visit_exp Fnn_2] +[visit_id Fnn_2] not free +[visit_id Fnn_2] no dims +[visit_exp $lsizenn1((Jnn_1 : Jnn <: lanetype))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] not free +[visit_id Jnn_1] no dims +[visit_exp ($lsizenn1((Jnn_1 : Jnn <: lanetype)) = 32)] +[visit_exp $lsizenn1((Jnn_1 : Jnn <: lanetype))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] not free +[visit_id Jnn_1] no dims +[visit_exp 32] +[visit_exp (half?{half <- `half?`} = ?())] +[visit_exp half?{half <- `half?`}] +[scope_enter half] +[visit_exp half] +[visit_id half] not free +[visit_id half] not free +[scope_exit half] +[visit_exp `half?`] +[visit_id half?] not free +[visit_id half?] no dims +[visit_exp ?()] +[visit_exp (($sizenn2((Fnn_2 : Fnn <: numtype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) /\ (half?{half <- `half?`} = ?(`LOW`_half)))] +[visit_exp ($sizenn2((Fnn_2 : Fnn <: numtype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))))] +[visit_exp $sizenn2((Fnn_2 : Fnn <: numtype))] +[visit_exp (Fnn_2 : Fnn <: numtype)] +[visit_exp Fnn_2] +[visit_id Fnn_2] not free +[visit_id Fnn_2] no dims +[visit_exp (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))] +[visit_exp 2] +[visit_exp $lsizenn1((Jnn_1 : Jnn <: lanetype))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] not free +[visit_id Jnn_1] no dims +[visit_exp (half?{half <- `half?`} = ?(`LOW`_half))] +[visit_exp half?{half <- `half?`}] +[scope_enter half] +[visit_exp half] +[visit_id half] not free +[visit_id half] not free +[scope_exit half] +[visit_exp `half?`] +[visit_id half?] not free +[visit_id half?] no dims +[visit_exp ?(`LOW`_half)] +[visit_exp `LOW`_half] +[visit_exp ()] +[visit_exp `%X%`_shape{lanetype#293, dim#293, i#1336}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#1343}(M_1))] +[visit_exp lanetype#293] +[visit_id lanetype#293] +[visit_exp dim#293] +[visit_id dim#293] +[visit_exp i#1336] +[visit_id i#1336] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#1343}(M_1))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] +[visit_exp `%`_dim{i#1343}(M_1)] +[visit_exp i#1343] +[visit_id i#1343] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] +[visit_exp `%X%`_shape{lanetype#305, dim#305, i#1348}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#1355}(M_2))] +[visit_exp lanetype#305] +[visit_id lanetype#305] +[visit_exp dim#305] +[visit_id dim#305] +[visit_exp i#1348] +[visit_id i#1348] +[visit_exp ((Fnn_2 : Fnn <: lanetype), `%`_dim{i#1355}(M_2))] +[visit_exp (Fnn_2 : Fnn <: lanetype)] +[visit_exp Fnn_2] +[visit_id Fnn_2] +[visit_exp `%`_dim{i#1355}(M_2)] +[visit_exp i#1355] +[visit_id i#1355] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] +[check_dims] Fnn_1 Jnn_2 M_1 M_2 dim#317 dim#329 i#1360 i#1367 i#1372 i#1379 lanetype#317 lanetype#329 +--- 1 --- +[check_dims] Fnn_1 Jnn_2 M_1 M_2 dim#317 dim#329 i#1360 i#1367 i#1372 i#1379 lanetype#317 lanetype#329 zero +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id sx] no dims +[visit_id sx] +[visit_id zero?] no dims +[visit_id zero?] +[visit_exp (((($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))))] +[visit_exp ((($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) /\ (zero?{zero <- `zero?`} = ?()))] +[visit_exp (($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32))] +[visit_exp ($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype)))] +[visit_exp $sizenn1((Fnn_1 : Fnn <: numtype))] +[visit_exp (Fnn_1 : Fnn <: numtype)] +[visit_exp Fnn_1] +[visit_id Fnn_1] not free +[visit_id Fnn_1] no dims +[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] not free +[visit_id Jnn_2] no dims +[visit_exp ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)] +[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] not free +[visit_id Jnn_2] no dims +[visit_exp 32] +[visit_exp (zero?{zero <- `zero?`} = ?())] +[visit_exp zero?{zero <- `zero?`}] +[scope_enter zero] +[visit_exp zero] +[visit_id zero] not free +[visit_id zero] not free +[scope_exit zero] +[visit_exp `zero?`] +[visit_id zero?] not free +[visit_id zero?] no dims +[visit_exp ?()] +[visit_exp (($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $lsizenn2((Jnn_2 : Jnn <: lanetype)))) /\ (zero?{zero <- `zero?`} = ?(`ZERO`_zero)))] +[visit_exp ($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $lsizenn2((Jnn_2 : Jnn <: lanetype))))] +[visit_exp $sizenn1((Fnn_1 : Fnn <: numtype))] +[visit_exp (Fnn_1 : Fnn <: numtype)] +[visit_exp Fnn_1] +[visit_id Fnn_1] not free +[visit_id Fnn_1] no dims +[visit_exp (2 * $lsizenn2((Jnn_2 : Jnn <: lanetype)))] +[visit_exp 2] +[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] not free +[visit_id Jnn_2] no dims +[visit_exp (zero?{zero <- `zero?`} = ?(`ZERO`_zero))] +[visit_exp zero?{zero <- `zero?`}] +[scope_enter zero] +[visit_exp zero] +[visit_id zero] not free +[visit_id zero] not free +[scope_exit zero] +[visit_exp `zero?`] +[visit_id zero?] not free +[visit_id zero?] no dims +[visit_exp ?(`ZERO`_zero)] +[visit_exp `ZERO`_zero] +[visit_exp ()] +--- 1 --- +[check_dims] Fnn_1 Jnn_2 M_1 M_2 dim#317 dim#329 i#1360 i#1367 i#1372 i#1379 lanetype#317 lanetype#329 zero +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id sx] no dims +[visit_id sx] +[visit_id zero?] no dims +[visit_id zero?] +[visit_exp (((($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))))] +[visit_exp ((($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) /\ (zero?{zero <- `zero?`} = ?()))] +[visit_exp (($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32))] +[visit_exp ($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype)))] +[visit_exp $sizenn1((Fnn_1 : Fnn <: numtype))] +[visit_exp (Fnn_1 : Fnn <: numtype)] +[visit_exp Fnn_1] +[visit_id Fnn_1] not free +[visit_id Fnn_1] no dims +[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] not free +[visit_id Jnn_2] no dims +[visit_exp ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)] +[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] not free +[visit_id Jnn_2] no dims +[visit_exp 32] +[visit_exp (zero?{zero <- `zero?`} = ?())] +[visit_exp zero?{zero <- `zero?`}] +[scope_enter zero] +[visit_exp zero] +[visit_id zero] not free +[visit_id zero] not free +[scope_exit zero] +[visit_exp `zero?`] +[visit_id zero?] not free +[visit_id zero?] no dims +[visit_exp ?()] +[visit_exp (($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $lsizenn2((Jnn_2 : Jnn <: lanetype)))) /\ (zero?{zero <- `zero?`} = ?(`ZERO`_zero)))] +[visit_exp ($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $lsizenn2((Jnn_2 : Jnn <: lanetype))))] +[visit_exp $sizenn1((Fnn_1 : Fnn <: numtype))] +[visit_exp (Fnn_1 : Fnn <: numtype)] +[visit_exp Fnn_1] +[visit_id Fnn_1] not free +[visit_id Fnn_1] no dims +[visit_exp (2 * $lsizenn2((Jnn_2 : Jnn <: lanetype)))] +[visit_exp 2] +[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] not free +[visit_id Jnn_2] no dims +[visit_exp (zero?{zero <- `zero?`} = ?(`ZERO`_zero))] +[visit_exp zero?{zero <- `zero?`}] +[scope_enter zero] +[visit_exp zero] +[visit_id zero] not free +[visit_id zero] not free +[scope_exit zero] +[visit_exp `zero?`] +[visit_id zero?] not free +[visit_id zero?] no dims +[visit_exp ?(`ZERO`_zero)] +[visit_exp `ZERO`_zero] +[visit_exp ()] +[visit_exp `%X%`_shape{lanetype#317, dim#317, i#1360}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#1367}(M_1))] +[visit_exp lanetype#317] +[visit_id lanetype#317] +[visit_exp dim#317] +[visit_id dim#317] +[visit_exp i#1360] +[visit_id i#1360] +[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim{i#1367}(M_1))] +[visit_exp (Fnn_1 : Fnn <: lanetype)] +[visit_exp Fnn_1] +[visit_id Fnn_1] +[visit_exp `%`_dim{i#1367}(M_1)] +[visit_exp i#1367] +[visit_id i#1367] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] +[visit_exp `%X%`_shape{lanetype#329, dim#329, i#1372}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#1379}(M_2))] +[visit_exp lanetype#329] +[visit_id lanetype#329] +[visit_exp dim#329] +[visit_id dim#329] +[visit_exp i#1372] +[visit_id i#1372] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#1379}(M_2))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] +[visit_exp `%`_dim{i#1379}(M_2)] +[visit_exp i#1379] +[visit_id i#1379] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] +[check_dims] Fnn_1 Fnn_2 M_1 M_2 dim#341 dim#353 i#1384 i#1391 i#1396 i#1403 lanetype#341 lanetype#353 +--- 1 --- +[check_dims] Fnn_1 Fnn_2 M_1 M_2 dim#341 dim#353 i#1384 i#1391 i#1396 i#1403 lanetype#341 lanetype#353 +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id zero] no dims +[visit_id zero] +[visit_exp ($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $sizenn2((Fnn_2 : Fnn <: numtype))))] +[visit_exp $sizenn1((Fnn_1 : Fnn <: numtype))] +[visit_exp (Fnn_1 : Fnn <: numtype)] +[visit_exp Fnn_1] +[visit_id Fnn_1] not free +[visit_id Fnn_1] no dims +[visit_exp (2 * $sizenn2((Fnn_2 : Fnn <: numtype)))] +[visit_exp 2] +[visit_exp $sizenn2((Fnn_2 : Fnn <: numtype))] +[visit_exp (Fnn_2 : Fnn <: numtype)] +[visit_exp Fnn_2] +[visit_id Fnn_2] not free +[visit_id Fnn_2] no dims +--- 1 --- +[check_dims] Fnn_1 Fnn_2 M_1 M_2 dim#341 dim#353 i#1384 i#1391 i#1396 i#1403 lanetype#341 lanetype#353 +--- 2 --- +--- 3 --- +--- 4 --- +[visit_exp ((2 * $sizenn1((Fnn_1 : Fnn <: numtype))) = $sizenn2((Fnn_2 : Fnn <: numtype)))] +[visit_exp (2 * $sizenn1((Fnn_1 : Fnn <: numtype)))] +[visit_exp 2] +[visit_exp $sizenn1((Fnn_1 : Fnn <: numtype))] +[visit_exp (Fnn_1 : Fnn <: numtype)] +[visit_exp Fnn_1] +[visit_id Fnn_1] not free +[visit_id Fnn_1] no dims +[visit_exp $sizenn2((Fnn_2 : Fnn <: numtype))] +[visit_exp (Fnn_2 : Fnn <: numtype)] +[visit_exp Fnn_2] +[visit_id Fnn_2] not free +[visit_id Fnn_2] no dims +[visit_exp `%X%`_shape{lanetype#341, dim#341, i#1384}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#1391}(M_1))] +[visit_exp lanetype#341] +[visit_id lanetype#341] +[visit_exp dim#341] +[visit_id dim#341] +[visit_exp i#1384] +[visit_id i#1384] +[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim{i#1391}(M_1))] +[visit_exp (Fnn_1 : Fnn <: lanetype)] +[visit_exp Fnn_1] +[visit_id Fnn_1] +[visit_exp `%`_dim{i#1391}(M_1)] +[visit_exp i#1391] +[visit_id i#1391] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] +[visit_exp `%X%`_shape{lanetype#353, dim#353, i#1396}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#1403}(M_2))] +[visit_exp lanetype#353] +[visit_id lanetype#353] +[visit_exp dim#353] +[visit_id dim#353] +[visit_exp i#1396] +[visit_id i#1396] +[visit_exp ((Fnn_2 : Fnn <: lanetype), `%`_dim{i#1403}(M_2))] +[visit_exp (Fnn_2 : Fnn <: lanetype)] +[visit_exp Fnn_2] +[visit_id Fnn_2] +[visit_exp `%`_dim{i#1403}(M_2)] +[visit_exp i#1403] +[visit_id i#1403] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id u32] no dims +[visit_id u32] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id u64] no dims +[visit_id u64] +[check_dims] +[check_dims] numtype +[visit_id numtype] not free +[check_dims] Inn +--- 1 --- +[check_dims] Inn i#1405 sz +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id sz] +[visit_id sx] no dims +[visit_id sx] +[visit_exp (sz!`%`_sz{i#1405}.0 < $sizenn((Inn : Inn <: numtype)))] +[visit_exp sz!`%`_sz{i#1405}.0] +[visit_exp sz!`%`_sz{i#1405}] +[visit_exp sz] +[visit_id sz] not free +[visit_exp i#1405] +[visit_id i#1405] +[visit_exp $sizenn((Inn : Inn <: numtype))] +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] not free +[visit_id Inn] no dims +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] +[check_dims] numtype +[visit_id numtype] not free +[check_dims] Inn +--- 1 --- +[check_dims] Inn i#1407 sz +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id sz] +[visit_exp (sz!`%`_sz{i#1407}.0 < $sizenn((Inn : Inn <: numtype)))] +[visit_exp sz!`%`_sz{i#1407}.0] +[visit_exp sz!`%`_sz{i#1407}] +[visit_exp sz] +[visit_id sz] not free +[visit_exp i#1407] +[visit_id i#1407] +[visit_exp $sizenn((Inn : Inn <: numtype))] +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] not free +[visit_id Inn] no dims +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] +[check_dims] vectype +--- 1 --- +[check_dims] M i#1409 sz vectype +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id sz] +[visit_id M] +[visit_id sx] no dims +[visit_id sx] +[visit_exp (((sz!`%`_sz{i#1409}.0 * M) : nat <:> rat) = (($vsize(vectype) : nat <:> rat) / (2 : nat <:> rat)))] +[visit_exp ((sz!`%`_sz{i#1409}.0 * M) : nat <:> rat)] +[visit_exp (sz!`%`_sz{i#1409}.0 * M)] +[visit_exp sz!`%`_sz{i#1409}.0] +[visit_exp sz!`%`_sz{i#1409}] +[visit_exp sz] +[visit_id sz] not free +[visit_exp i#1409] +[visit_id i#1409] +[visit_exp M] +[visit_id M] not free +[visit_exp (($vsize(vectype) : nat <:> rat) / (2 : nat <:> rat))] +[visit_exp ($vsize(vectype) : nat <:> rat)] +[visit_exp $vsize(vectype)] +[visit_exp vectype] +[visit_id vectype] not free +[visit_id vectype] no dims +[visit_exp (2 : nat <:> rat)] +[visit_exp 2] +--- 1 --- +[check_dims] vectype +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id sz] no dims +[visit_id sz] +--- 1 --- +[check_dims] i#1411 sz vectype +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id sz] +[visit_exp (sz!`%`_sz{i#1411}.0 >= 32)] +[visit_exp sz!`%`_sz{i#1411}.0] +[visit_exp sz!`%`_sz{i#1411}] +[visit_exp sz] +[visit_id sz] not free +[visit_exp i#1411] +[visit_id i#1411] +[visit_exp 32] +[visit_exp vectype] +[visit_id vectype] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id valtype?] no dims +[visit_id valtype?] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id typeidx] no dims +[visit_id typeidx] +[check_dims] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id valtype*?] no dims +[visit_id valtype*?] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id blocktype] no dims +[visit_id blocktype] +[visit_id instr*] no dims +[visit_id instr*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id blocktype] no dims +[visit_id blocktype] +[visit_id instr*] no dims +[visit_id instr*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id blocktype] no dims +[visit_id blocktype] +[visit_id instr*] no dims +[visit_id instr*] +[visit_id instr*] not free +[visit_id instr*] no dims +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id labelidx] no dims +[visit_id labelidx] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id labelidx] no dims +[visit_id labelidx] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id labelidx*] no dims +[visit_id labelidx*] +[visit_id labelidx] no dims +[visit_id labelidx] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id labelidx] no dims +[visit_id labelidx] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id labelidx] no dims +[visit_id labelidx] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id labelidx] no dims +[visit_id labelidx] +[visit_id reftype] no dims +[visit_id reftype] +[visit_id reftype] not free +[visit_id reftype] no dims +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id labelidx] no dims +[visit_id labelidx] +[visit_id reftype] no dims +[visit_id reftype] +[visit_id reftype] not free +[visit_id reftype] no dims +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id funcidx] no dims +[visit_id funcidx] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id typeuse] no dims +[visit_id typeuse] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id tableidx] no dims +[visit_id tableidx] +[visit_id typeuse] no dims +[visit_id typeuse] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id funcidx] no dims +[visit_id funcidx] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id typeuse] no dims +[visit_id typeuse] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id tableidx] no dims +[visit_id tableidx] +[visit_id typeuse] no dims +[visit_id typeuse] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id tagidx] no dims +[visit_id tagidx] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id blocktype] no dims +[visit_id blocktype] +[visit_id _] not free +[visit_id _] no dims +[visit_id instr*] no dims +[visit_id instr*] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id tagidx] no dims +[visit_id tagidx] +[visit_id labelidx] no dims +[visit_id labelidx] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id tagidx] no dims +[visit_id tagidx] +[visit_id labelidx] no dims +[visit_id labelidx] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id labelidx] no dims +[visit_id labelidx] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id labelidx] no dims +[visit_id labelidx] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id localidx] no dims +[visit_id localidx] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id localidx] no dims +[visit_id localidx] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id localidx] no dims +[visit_id localidx] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id globalidx] no dims +[visit_id globalidx] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id globalidx] no dims +[visit_id globalidx] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id tableidx] no dims +[visit_id tableidx] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id tableidx] no dims +[visit_id tableidx] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id tableidx] no dims +[visit_id tableidx] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id tableidx] no dims +[visit_id tableidx] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id tableidx] no dims +[visit_id tableidx] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id tableidx] no dims +[visit_id tableidx] +[visit_id tableidx] not free +[visit_id tableidx] no dims +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id tableidx] no dims +[visit_id tableidx] +[visit_id elemidx] no dims +[visit_id elemidx] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id elemidx] no dims +[visit_id elemidx] +[check_dims] +--- 1 --- +[check_dims] numtype +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id numtype] +[visit_id _] not free +[visit_id _] no dims +[visit_exp numtype] +[visit_id numtype] not free +[visit_id memidx] no dims +[visit_id memidx] +[visit_id memarg] no dims +[visit_id memarg] +--- 1 --- +[check_dims] numtype +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id numtype] +[visit_id _] not free +[visit_id _] no dims +[visit_exp numtype] +[visit_id numtype] not free +[visit_id memidx] no dims +[visit_id memidx] +[visit_id memarg] no dims +[visit_id memarg] +--- 1 --- +[check_dims] vectype +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id vectype] +[visit_id _] not free +[visit_id _] no dims +[visit_exp vectype] +[visit_id vectype] not free +[visit_id memidx] no dims +[visit_id memidx] +[visit_id memarg] no dims +[visit_id memarg] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id vectype] no dims +[visit_id vectype] +[visit_id sz] no dims +[visit_id sz] +[visit_id memidx] no dims +[visit_id memidx] +[visit_id memarg] no dims +[visit_id memarg] +[visit_id laneidx] no dims +[visit_id laneidx] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id vectype] no dims +[visit_id vectype] +[visit_id memidx] no dims +[visit_id memidx] +[visit_id memarg] no dims +[visit_id memarg] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id vectype] no dims +[visit_id vectype] +[visit_id sz] no dims +[visit_id sz] +[visit_id memidx] no dims +[visit_id memidx] +[visit_id memarg] no dims +[visit_id memarg] +[visit_id laneidx] no dims +[visit_id laneidx] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id memidx] no dims +[visit_id memidx] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id memidx] no dims +[visit_id memidx] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id memidx] no dims +[visit_id memidx] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id memidx] no dims +[visit_id memidx] +[visit_id memidx] not free +[visit_id memidx] no dims +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id memidx] no dims +[visit_id memidx] +[visit_id dataidx] no dims +[visit_id dataidx] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id dataidx] no dims +[visit_id dataidx] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id heaptype] no dims +[visit_id heaptype] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id reftype] no dims +[visit_id reftype] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id reftype] no dims +[visit_id reftype] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id funcidx] no dims +[visit_id funcidx] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id sx] no dims +[visit_id sx] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id typeidx] no dims +[visit_id typeidx] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id typeidx] no dims +[visit_id typeidx] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id sx?] no dims +[visit_id sx?] +[visit_id typeidx] no dims +[visit_id typeidx] +[visit_id u32] no dims +[visit_id u32] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id typeidx] no dims +[visit_id typeidx] +[visit_id u32] no dims +[visit_id u32] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id typeidx] no dims +[visit_id typeidx] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id typeidx] no dims +[visit_id typeidx] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id typeidx] no dims +[visit_id typeidx] +[visit_id u32] no dims +[visit_id u32] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id typeidx] no dims +[visit_id typeidx] +[visit_id dataidx] no dims +[visit_id dataidx] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id typeidx] no dims +[visit_id typeidx] +[visit_id elemidx] no dims +[visit_id elemidx] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id sx?] no dims +[visit_id sx?] +[visit_id typeidx] no dims +[visit_id typeidx] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id typeidx] no dims +[visit_id typeidx] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id typeidx] no dims +[visit_id typeidx] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id typeidx] no dims +[visit_id typeidx] +[visit_id typeidx] not free +[visit_id typeidx] no dims +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id typeidx] no dims +[visit_id typeidx] +[visit_id dataidx] no dims +[visit_id dataidx] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id typeidx] no dims +[visit_id typeidx] +[visit_id elemidx] no dims +[visit_id elemidx] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[check_dims] +--- 1 --- +[check_dims] numtype +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id numtype] +[visit_id _] not free +[visit_id _] no dims +[visit_exp numtype] +[visit_id numtype] not free +--- 1 --- +[check_dims] numtype +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id numtype] +[visit_id _] not free +[visit_id _] no dims +[visit_exp numtype] +[visit_id numtype] not free +--- 1 --- +[check_dims] numtype +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id numtype] +[visit_id _] not free +[visit_id _] no dims +[visit_exp numtype] +[visit_id numtype] not free +--- 1 --- +[check_dims] numtype +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id numtype] +[visit_id _] not free +[visit_id _] no dims +[visit_exp numtype] +[visit_id numtype] not free +--- 1 --- +[check_dims] numtype +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id numtype] +[visit_id _] not free +[visit_id _] no dims +[visit_exp numtype] +[visit_id numtype] not free +--- 1 --- +[check_dims] numtype_1 numtype_2 +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id numtype_1] +[visit_id numtype_2] +[visit_id _] not free +[visit_id _] no dims +[visit_exp numtype_2] +[visit_id numtype_2] not free +[visit_exp numtype_1] +[visit_id numtype_1] not free +[check_dims] +--- 1 --- +[check_dims] vectype +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id vectype] +[visit_id _] not free +[visit_id _] no dims +[visit_exp vectype] +[visit_id vectype] not free +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id vectype] no dims +[visit_id vectype] +[visit_id vvunop] no dims +[visit_id vvunop] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id vectype] no dims +[visit_id vectype] +[visit_id vvbinop] no dims +[visit_id vvbinop] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id vectype] no dims +[visit_id vectype] +[visit_id vvternop] no dims +[visit_id vvternop] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id vectype] no dims +[visit_id vectype] +[visit_id vvtestop] no dims +[visit_id vvtestop] +--- 1 --- +[check_dims] shape +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id shape] +[visit_id _] not free +[visit_id _] no dims +[visit_exp shape] +[visit_id shape] not free +--- 1 --- +[check_dims] shape +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id shape] +[visit_id _] not free +[visit_id _] no dims +[visit_exp shape] +[visit_id shape] not free +--- 1 --- +[check_dims] shape +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id shape] +[visit_id _] not free +[visit_id _] no dims +[visit_exp shape] +[visit_id shape] not free +--- 1 --- +[check_dims] shape +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id shape] +[visit_id _] not free +[visit_id _] no dims +[visit_exp shape] +[visit_id shape] not free +--- 1 --- +[check_dims] shape +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id shape] +[visit_id _] not free +[visit_id _] no dims +[visit_exp shape] +[visit_id shape] not free +--- 1 --- +[check_dims] ishape +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id ishape] +[visit_id _] not free +[visit_id _] no dims +[visit_exp ishape] +[visit_id ishape] not free +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id ishape] no dims +[visit_id ishape] +--- 1 --- +[check_dims] bshape +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id bshape] +[visit_id _] not free +[visit_id _] no dims +[visit_exp bshape] +[visit_id bshape] not free +--- 1 --- +[check_dims] bshape i#1432 laneidx shape#109 +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id bshape] +[visit_id laneidx*] no dims +[visit_id laneidx*] +[visit_exp (`%`_dim{i#1432}(|laneidx*{laneidx <- `laneidx*`}|) = $dim(bshape!`%`_bshape{shape#109}.0))] +[visit_exp `%`_dim{i#1432}(|laneidx*{laneidx <- `laneidx*`}|)] +[visit_exp i#1432] +[visit_id i#1432] +[visit_exp (|laneidx*{laneidx <- `laneidx*`}|)] +[visit_exp |laneidx*{laneidx <- `laneidx*`}|] +[visit_exp laneidx*{laneidx <- `laneidx*`}] +[scope_enter laneidx] +[visit_exp laneidx] +[visit_id laneidx] not free +[visit_id laneidx] not free +[scope_exit laneidx] +[visit_exp `laneidx*`] +[visit_id laneidx*] not free +[visit_id laneidx*] no dims +[visit_exp $dim(bshape!`%`_bshape{shape#109}.0)] +[visit_exp bshape!`%`_bshape{shape#109}.0] +[visit_exp bshape!`%`_bshape{shape#109}] +[visit_exp bshape] +[visit_id bshape] not free +[visit_exp shape#109] +[visit_id shape#109] +--- 1 --- +[check_dims] ishape_1 ishape_2 +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id ishape_1] +[visit_id ishape_2] +[visit_id _] not free +[visit_id _] no dims +[visit_exp ishape_2] +[visit_id ishape_2] not free +[visit_exp ishape_1] +[visit_id ishape_1] not free +--- 1 --- +[check_dims] ishape_1 ishape_2 +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id ishape_1] +[visit_id ishape_2] +[visit_id _] not free +[visit_id _] no dims +[visit_exp ishape_2] +[visit_id ishape_2] not free +[visit_exp ishape_1] +[visit_id ishape_1] not free +--- 1 --- +[check_dims] ishape_1 ishape_2 +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id ishape_1] +[visit_id ishape_2] +[visit_id _] not free +[visit_id _] no dims +[visit_exp ishape_2] +[visit_id ishape_2] not free +[visit_exp ishape_1] +[visit_id ishape_1] not free +--- 1 --- +[check_dims] Jnn#43 Jnn#44 Jnn#45 ishape_1 ishape_2 shape#147 shape#149 shape#151 +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id ishape_1] +[visit_id ishape_2] +[visit_id sx] no dims +[visit_id sx] +[visit_exp (($lsize($lanetype(ishape_2!`%`_ishape{shape#149, Jnn#44}.0)) = (2 * $lsize($lanetype(ishape_1!`%`_ishape{shape#147, Jnn#43}.0)))) /\ ((2 * $lsize($lanetype(ishape_1!`%`_ishape{shape#151, Jnn#45}.0))) <= 32))] +[visit_exp ($lsize($lanetype(ishape_2!`%`_ishape{shape#149, Jnn#44}.0)) = (2 * $lsize($lanetype(ishape_1!`%`_ishape{shape#147, Jnn#43}.0))))] +[visit_exp $lsize($lanetype(ishape_2!`%`_ishape{shape#149, Jnn#44}.0))] +[visit_exp $lanetype(ishape_2!`%`_ishape{shape#149, Jnn#44}.0)] +[visit_exp ishape_2!`%`_ishape{shape#149, Jnn#44}.0] +[visit_exp ishape_2!`%`_ishape{shape#149, Jnn#44}] +[visit_exp ishape_2] +[visit_id ishape_2] not free +[visit_exp shape#149] +[visit_id shape#149] +[visit_exp Jnn#44] +[visit_id Jnn#44] +[visit_exp (2 * $lsize($lanetype(ishape_1!`%`_ishape{shape#147, Jnn#43}.0)))] +[visit_exp 2] +[visit_exp $lsize($lanetype(ishape_1!`%`_ishape{shape#147, Jnn#43}.0))] +[visit_exp $lanetype(ishape_1!`%`_ishape{shape#147, Jnn#43}.0)] +[visit_exp ishape_1!`%`_ishape{shape#147, Jnn#43}.0] +[visit_exp ishape_1!`%`_ishape{shape#147, Jnn#43}] +[visit_exp ishape_1] +[visit_id ishape_1] not free +[visit_exp shape#147] +[visit_id shape#147] +[visit_exp Jnn#43] +[visit_id Jnn#43] +[visit_exp ((2 * $lsize($lanetype(ishape_1!`%`_ishape{shape#151, Jnn#45}.0))) <= 32)] +[visit_exp (2 * $lsize($lanetype(ishape_1!`%`_ishape{shape#151, Jnn#45}.0)))] +[visit_exp 2] +[visit_exp $lsize($lanetype(ishape_1!`%`_ishape{shape#151, Jnn#45}.0))] +[visit_exp $lanetype(ishape_1!`%`_ishape{shape#151, Jnn#45}.0)] +[visit_exp ishape_1!`%`_ishape{shape#151, Jnn#45}.0] +[visit_exp ishape_1!`%`_ishape{shape#151, Jnn#45}] +[visit_exp ishape_1] +[visit_id ishape_1] not free +[visit_exp shape#151] +[visit_id shape#151] +[visit_exp Jnn#45] +[visit_id Jnn#45] +[visit_exp 32] +--- 1 --- +[check_dims] shape_1 shape_2 +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id shape_1] +[visit_id shape_2] +[visit_id _] not free +[visit_id _] no dims +[visit_exp shape_2] +[visit_id shape_2] not free +[visit_exp shape_1] +[visit_id shape_1] not free +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id shape] no dims +[visit_id shape] +--- 1 --- +[check_dims] shape sx +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id shape] +[visit_id sx?] no dims +[visit_id sx?] +[visit_id laneidx] no dims +[visit_id laneidx] +[visit_exp ((sx?{sx <- `sx?`} = ?()) <=> ($lanetype(shape) <- [`I32`_lanetype `I64`_lanetype `F32`_lanetype `F64`_lanetype]))] +[visit_exp (sx?{sx <- `sx?`} = ?())] +[visit_exp sx?{sx <- `sx?`}] +[scope_enter sx] +[visit_exp sx] +[visit_id sx] not free +[visit_id sx] not free +[scope_exit sx] +[visit_exp `sx?`] +[visit_id sx?] not free +[visit_id sx?] no dims +[visit_exp ?()] +[visit_exp ($lanetype(shape) <- [`I32`_lanetype `I64`_lanetype `F32`_lanetype `F64`_lanetype])] +[visit_exp $lanetype(shape)] +[visit_exp shape] +[visit_id shape] not free +[visit_exp [`I32`_lanetype `I64`_lanetype `F32`_lanetype `F64`_lanetype]] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `F64`_lanetype] +[visit_exp ()] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id shape] no dims +[visit_id shape] +[visit_id laneidx] no dims +[visit_id laneidx] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +DecD memarg0 : memarg +[check_dims] i#1467 i#1487 u32#1 u64#37 +[visit_exp {`ALIGN`{u32#1} `%`_u32{i#1467}(0), `OFFSET`{u64#37} `%`_u64{i#1487}(0)}] +[visit_exp u32#1] +[visit_id u32#1] +[visit_exp `%`_u32{i#1467}(0)] +[visit_exp i#1467] +[visit_id i#1467] +[visit_exp (0)] +[visit_exp 0] +[visit_exp u64#37] +[visit_id u64#37] +[visit_exp `%`_u64{i#1487}(0)] +[visit_exp i#1487] +[visit_id i#1487] +[visit_exp (0)] +[visit_exp 0] +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $memarg0{u32#1 : u32, i#1467 : nat, u64#37 : u64, i#1487 : nat} = {`ALIGN`{u32#1} `%`_u32{i#1467}(0), `OFFSET`{u64#37} `%`_u64{i#1487}(0)} +[check_dims] consttype lit_ +DecD const(consttype : consttype, lit_ : lit_((consttype : consttype <: storagetype))) : instr +[visit_id consttype] not free +[visit_id lit_] not free +[visit_exp (consttype : consttype <: storagetype)] +[visit_exp consttype] +[visit_id consttype] not free +[check_dims] c numtype numtype#1 +[visit_exp (numtype : numtype <: consttype)] +[visit_exp numtype] +[visit_id numtype] +[visit_exp c] +[visit_id c] +[visit_exp `CONST`_instr{numtype#1}(numtype, c)] +[visit_exp numtype#1] +[visit_id numtype#1] +[visit_exp (numtype, c)] +[visit_exp numtype] +[visit_id numtype] not free +[visit_exp c] +[visit_id c] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $const{numtype : numtype, c : lit_(((numtype : numtype <: consttype) : consttype <: storagetype)), numtype#1 : numtype}((numtype : numtype <: consttype), c) = `CONST`_instr{numtype#1}(numtype, c) +[check_dims] c vectype vectype#1 +[visit_exp (vectype : vectype <: consttype)] +[visit_exp vectype] +[visit_id vectype] +[visit_exp c] +[visit_id c] +[visit_exp `VCONST`_instr{vectype#1}(vectype, c)] +[visit_exp vectype#1] +[visit_id vectype#1] +[visit_exp (vectype, c)] +[visit_exp vectype] +[visit_id vectype] not free +[visit_exp c] +[visit_id c] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $const{vectype : vectype, c : lit_(((vectype : vectype <: consttype) : consttype <: storagetype)), vectype#1 : vectype}((vectype : vectype <: consttype), c) = `VCONST`_instr{vectype#1}(vectype, c) +[check_dims] shape +DecD free_shape(shape : shape) : free +[visit_id shape] not free +[check_dims] blocktype +DecD free_blocktype(blocktype : blocktype) : free +[visit_id blocktype] not free +[check_dims] instr +DecD free_instr(instr : instr) : free +[visit_id instr] not free +[check_dims] _ +DecD free_block(instr*) : free +[visit_id _] not free +[check_dims] expr +DecD free_expr(expr : expr) : free +[visit_id expr] not free +[check_dims] dim dim#445 i#1518 lanetype lanetype#445 +[visit_exp `%X%`_shape{lanetype#445, dim#445, i#1518}(lanetype, dim)] +[visit_exp lanetype#445] +[visit_id lanetype#445] +[visit_exp dim#445] +[visit_id dim#445] +[visit_exp i#1518] +[visit_id i#1518] +[visit_exp (lanetype, dim)] +[visit_exp lanetype] +[visit_id lanetype] +[visit_exp dim] +[visit_id dim] +[visit_exp $free_lanetype(lanetype)] +[visit_exp lanetype] +[visit_id lanetype] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_shape{lanetype#445 : lanetype, dim#445 : dim, i#1518 : nat, lanetype : lanetype, dim : dim}(`%X%`_shape{lanetype#445, dim#445, i#1518}(lanetype, dim)) = $free_lanetype(lanetype) +[check_dims] valtype valtype?#1 +[visit_exp `_RESULT`_blocktype{`valtype?#1`}(valtype?{valtype <- `valtype?`})] +[visit_exp `valtype?#1`] +[visit_id valtype?#1] +[visit_exp (valtype?{valtype <- `valtype?`})] +[visit_exp valtype?{valtype <- `valtype?`}] +[scope_enter valtype] +[visit_exp valtype] +[visit_id valtype] not free +[visit_id valtype] not free +[scope_exit valtype] +[visit_exp `valtype?`] +[visit_id valtype?] no dims +[visit_id valtype?] +[visit_exp $free_opt($free_valtype(valtype)?{valtype <- `valtype?`})] +[visit_exp $free_valtype(valtype)?{valtype <- `valtype?`}] +[scope_enter valtype] +[visit_exp $free_valtype(valtype)] +[visit_exp valtype] +[visit_id valtype] not free +[visit_id valtype] not free +[scope_exit valtype] +[visit_exp `valtype?`] +[visit_id valtype?] not free +[visit_id valtype?] no dims +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_blocktype{`valtype?#1` : valtype?, `valtype?` : valtype?}(`_RESULT`_blocktype{`valtype?#1`}(valtype?{valtype <- `valtype?`})) = $free_opt($free_valtype(valtype)?{valtype <- `valtype?`}) +[check_dims] typeidx typeidx#27 +[visit_exp `_IDX`_blocktype{typeidx#27}(typeidx)] +[visit_exp typeidx#27] +[visit_id typeidx#27] +[visit_exp (typeidx)] +[visit_exp typeidx] +[visit_id typeidx] +[visit_exp $free_typeidx(typeidx)] +[visit_exp typeidx] +[visit_id typeidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_blocktype{typeidx#27 : typeidx, typeidx : typeidx}(`_IDX`_blocktype{typeidx#27}(typeidx)) = $free_typeidx(typeidx) +[check_dims] dataidx*#20 elemidx*#20 funcidx*#20 globalidx*#20 labelidx*#20 localidx*#20 memidx*#20 tableidx*#20 typeidx*#20 +[visit_exp `NOP`_instr] +[visit_exp ()] +[visit_exp {`TYPES`{`typeidx*#20`} [], `FUNCS`{`funcidx*#20`} [], `GLOBALS`{`globalidx*#20`} [], `TABLES`{`tableidx*#20`} [], `MEMS`{`memidx*#20`} [], `ELEMS`{`elemidx*#20`} [], `DATAS`{`dataidx*#20`} [], `LOCALS`{`localidx*#20`} [], `LABELS`{`labelidx*#20`} []}] +[visit_exp `typeidx*#20`] +[visit_id typeidx*#20] +[visit_exp []] +[visit_exp `funcidx*#20`] +[visit_id funcidx*#20] +[visit_exp []] +[visit_exp `globalidx*#20`] +[visit_id globalidx*#20] +[visit_exp []] +[visit_exp `tableidx*#20`] +[visit_id tableidx*#20] +[visit_exp []] +[visit_exp `memidx*#20`] +[visit_id memidx*#20] +[visit_exp []] +[visit_exp `elemidx*#20`] +[visit_id elemidx*#20] +[visit_exp []] +[visit_exp `dataidx*#20`] +[visit_id dataidx*#20] +[visit_exp []] +[visit_exp `localidx*#20`] +[visit_id localidx*#20] +[visit_exp []] +[visit_exp `labelidx*#20`] +[visit_id labelidx*#20] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{`typeidx*#20` : typeidx*, `funcidx*#20` : funcidx*, `globalidx*#20` : globalidx*, `tableidx*#20` : tableidx*, `memidx*#20` : memidx*, `elemidx*#20` : elemidx*, `dataidx*#20` : dataidx*, `localidx*#20` : localidx*, `labelidx*#20` : labelidx*}(`NOP`_instr) = {`TYPES`{`typeidx*#20`} [], `FUNCS`{`funcidx*#20`} [], `GLOBALS`{`globalidx*#20`} [], `TABLES`{`tableidx*#20`} [], `MEMS`{`memidx*#20`} [], `ELEMS`{`elemidx*#20`} [], `DATAS`{`dataidx*#20`} [], `LOCALS`{`localidx*#20`} [], `LABELS`{`labelidx*#20`} []} +[check_dims] dataidx*#21 elemidx*#21 funcidx*#21 globalidx*#21 labelidx*#21 localidx*#21 memidx*#21 tableidx*#21 typeidx*#21 +[visit_exp `UNREACHABLE`_instr] +[visit_exp ()] +[visit_exp {`TYPES`{`typeidx*#21`} [], `FUNCS`{`funcidx*#21`} [], `GLOBALS`{`globalidx*#21`} [], `TABLES`{`tableidx*#21`} [], `MEMS`{`memidx*#21`} [], `ELEMS`{`elemidx*#21`} [], `DATAS`{`dataidx*#21`} [], `LOCALS`{`localidx*#21`} [], `LABELS`{`labelidx*#21`} []}] +[visit_exp `typeidx*#21`] +[visit_id typeidx*#21] +[visit_exp []] +[visit_exp `funcidx*#21`] +[visit_id funcidx*#21] +[visit_exp []] +[visit_exp `globalidx*#21`] +[visit_id globalidx*#21] +[visit_exp []] +[visit_exp `tableidx*#21`] +[visit_id tableidx*#21] +[visit_exp []] +[visit_exp `memidx*#21`] +[visit_id memidx*#21] +[visit_exp []] +[visit_exp `elemidx*#21`] +[visit_id elemidx*#21] +[visit_exp []] +[visit_exp `dataidx*#21`] +[visit_id dataidx*#21] +[visit_exp []] +[visit_exp `localidx*#21`] +[visit_id localidx*#21] +[visit_exp []] +[visit_exp `labelidx*#21`] +[visit_id labelidx*#21] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{`typeidx*#21` : typeidx*, `funcidx*#21` : funcidx*, `globalidx*#21` : globalidx*, `tableidx*#21` : tableidx*, `memidx*#21` : memidx*, `elemidx*#21` : elemidx*, `dataidx*#21` : dataidx*, `localidx*#21` : localidx*, `labelidx*#21` : labelidx*}(`UNREACHABLE`_instr) = {`TYPES`{`typeidx*#21`} [], `FUNCS`{`funcidx*#21`} [], `GLOBALS`{`globalidx*#21`} [], `TABLES`{`tableidx*#21`} [], `MEMS`{`memidx*#21`} [], `ELEMS`{`elemidx*#21`} [], `DATAS`{`dataidx*#21`} [], `LOCALS`{`localidx*#21`} [], `LABELS`{`labelidx*#21`} []} +[check_dims] dataidx*#22 elemidx*#22 funcidx*#22 globalidx*#22 labelidx*#22 localidx*#22 memidx*#22 tableidx*#22 typeidx*#22 +[visit_exp `DROP`_instr] +[visit_exp ()] +[visit_exp {`TYPES`{`typeidx*#22`} [], `FUNCS`{`funcidx*#22`} [], `GLOBALS`{`globalidx*#22`} [], `TABLES`{`tableidx*#22`} [], `MEMS`{`memidx*#22`} [], `ELEMS`{`elemidx*#22`} [], `DATAS`{`dataidx*#22`} [], `LOCALS`{`localidx*#22`} [], `LABELS`{`labelidx*#22`} []}] +[visit_exp `typeidx*#22`] +[visit_id typeidx*#22] +[visit_exp []] +[visit_exp `funcidx*#22`] +[visit_id funcidx*#22] +[visit_exp []] +[visit_exp `globalidx*#22`] +[visit_id globalidx*#22] +[visit_exp []] +[visit_exp `tableidx*#22`] +[visit_id tableidx*#22] +[visit_exp []] +[visit_exp `memidx*#22`] +[visit_id memidx*#22] +[visit_exp []] +[visit_exp `elemidx*#22`] +[visit_id elemidx*#22] +[visit_exp []] +[visit_exp `dataidx*#22`] +[visit_id dataidx*#22] +[visit_exp []] +[visit_exp `localidx*#22`] +[visit_id localidx*#22] +[visit_exp []] +[visit_exp `labelidx*#22`] +[visit_id labelidx*#22] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{`typeidx*#22` : typeidx*, `funcidx*#22` : funcidx*, `globalidx*#22` : globalidx*, `tableidx*#22` : tableidx*, `memidx*#22` : memidx*, `elemidx*#22` : elemidx*, `dataidx*#22` : dataidx*, `localidx*#22` : localidx*, `labelidx*#22` : labelidx*}(`DROP`_instr) = {`TYPES`{`typeidx*#22`} [], `FUNCS`{`funcidx*#22`} [], `GLOBALS`{`globalidx*#22`} [], `TABLES`{`tableidx*#22`} [], `MEMS`{`memidx*#22`} [], `ELEMS`{`elemidx*#22`} [], `DATAS`{`dataidx*#22`} [], `LOCALS`{`localidx*#22`} [], `LABELS`{`labelidx*#22`} []} +[check_dims] valtype valtype*?#1 +[visit_exp `SELECT`_instr{`valtype*?#1`}(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})] +[visit_exp `valtype*?#1`] +[visit_id valtype*?#1] +[visit_exp (valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})] +[visit_exp valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`}] +[scope_enter valtype*] +[visit_exp valtype*{valtype <- `valtype*`}] +[scope_enter valtype] +[visit_exp valtype] +[visit_id valtype] not free +[visit_id valtype] not free +[scope_exit valtype] +[visit_exp `valtype*`] +[visit_id valtype*] not free +[visit_id valtype*] no dims +[visit_id valtype*] not free +[visit_id valtype*] no dims +[scope_exit valtype*] +[visit_exp `valtype*?`] +[visit_id valtype*?] no dims +[visit_id valtype*?] +[visit_exp $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`})] +[visit_exp $free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}] +[scope_enter valtype*] +[visit_exp $free_list($free_valtype(valtype)*{valtype <- `valtype*`})] +[visit_exp $free_valtype(valtype)*{valtype <- `valtype*`}] +[scope_enter valtype] +[visit_exp $free_valtype(valtype)] +[visit_exp valtype] +[visit_id valtype] not free +[visit_id valtype] not free +[scope_exit valtype] +[visit_exp `valtype*`] +[visit_id valtype*] not free +[visit_id valtype*] no dims +[visit_id valtype*] not free +[visit_id valtype*] no dims +[scope_exit valtype*] +[visit_exp `valtype*?`] +[visit_id valtype*?] not free +[visit_id valtype*?] no dims +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{`valtype*?#1` : valtype*?, `valtype*?` : valtype*?}(`SELECT`_instr{`valtype*?#1`}(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) +[check_dims] blocktype blocktype#1 instr instr*#1 +[visit_exp `BLOCK`_instr{blocktype#1, `instr*#1`}(blocktype, instr*{instr <- `instr*`})] +[visit_exp blocktype#1] +[visit_id blocktype#1] +[visit_exp `instr*#1`] +[visit_id instr*#1] +[visit_exp (blocktype, instr*{instr <- `instr*`})] +[visit_exp blocktype] +[visit_id blocktype] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] no dims +[visit_id instr*] +[visit_exp $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`})] +[visit_exp $free_blocktype(blocktype)] +[visit_exp blocktype] +[visit_id blocktype] not free +[visit_exp $free_block(instr*{instr <- `instr*`})] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] not free +[visit_id instr*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{blocktype#1 : blocktype, `instr*#1` : instr*, blocktype : blocktype, `instr*` : instr*}(`BLOCK`_instr{blocktype#1, `instr*#1`}(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) +[check_dims] blocktype blocktype#3 instr instr*#3 +[visit_exp `LOOP`_instr{blocktype#3, `instr*#3`}(blocktype, instr*{instr <- `instr*`})] +[visit_exp blocktype#3] +[visit_id blocktype#3] +[visit_exp `instr*#3`] +[visit_id instr*#3] +[visit_exp (blocktype, instr*{instr <- `instr*`})] +[visit_exp blocktype] +[visit_id blocktype] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] no dims +[visit_id instr*] +[visit_exp $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`})] +[visit_exp $free_blocktype(blocktype)] +[visit_exp blocktype] +[visit_id blocktype] not free +[visit_exp $free_block(instr*{instr <- `instr*`})] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] not free +[visit_id instr*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{blocktype#3 : blocktype, `instr*#3` : instr*, blocktype : blocktype, `instr*` : instr*}(`LOOP`_instr{blocktype#3, `instr*#3`}(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) +[check_dims] blocktype blocktype#5 instr*#5 instr_1 instr_2 +[visit_exp `IF%%ELSE%`_instr{blocktype#5, `instr*#5`}(blocktype, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})] +[visit_exp blocktype#5] +[visit_id blocktype#5] +[visit_exp `instr*#5`] +[visit_id instr*#5] +[visit_exp (blocktype, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})] +[visit_exp blocktype] +[visit_id blocktype] +[visit_exp instr_1*{instr_1 <- `instr_1*`}] +[scope_enter instr_1] +[visit_exp instr_1] +[visit_id instr_1] not free +[visit_id instr_1] not free +[scope_exit instr_1] +[visit_exp `instr_1*`] +[visit_id instr_1*] no dims +[visit_id instr_1*] +[visit_exp instr_2*{instr_2 <- `instr_2*`}] +[scope_enter instr_2] +[visit_exp instr_2] +[visit_id instr_2] not free +[visit_id instr_2] not free +[scope_exit instr_2] +[visit_exp `instr_2*`] +[visit_id instr_2*] no dims +[visit_id instr_2*] +[visit_exp $free_blocktype(blocktype) +++ $free_block(instr_1*{instr_1 <- `instr_1*`}) +++ $free_block(instr_2*{instr_2 <- `instr_2*`})] +[visit_exp $free_blocktype(blocktype) +++ $free_block(instr_1*{instr_1 <- `instr_1*`})] +[visit_exp $free_blocktype(blocktype)] +[visit_exp blocktype] +[visit_id blocktype] not free +[visit_exp $free_block(instr_1*{instr_1 <- `instr_1*`})] +[visit_exp instr_1*{instr_1 <- `instr_1*`}] +[scope_enter instr_1] +[visit_exp instr_1] +[visit_id instr_1] not free +[visit_id instr_1] not free +[scope_exit instr_1] +[visit_exp `instr_1*`] +[visit_id instr_1*] not free +[visit_id instr_1*] no dims +[visit_exp $free_block(instr_2*{instr_2 <- `instr_2*`})] +[visit_exp instr_2*{instr_2 <- `instr_2*`}] +[scope_enter instr_2] +[visit_exp instr_2] +[visit_id instr_2] not free +[visit_id instr_2] not free +[scope_exit instr_2] +[visit_exp `instr_2*`] +[visit_id instr_2*] not free +[visit_id instr_2*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{blocktype#5 : blocktype, `instr*#5` : instr*, blocktype : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}(`IF%%ELSE%`_instr{blocktype#5, `instr*#5`}(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*`}) +[check_dims] labelidx labelidx#1 +[visit_exp `BR`_instr{labelidx#1}(labelidx)] +[visit_exp labelidx#1] +[visit_id labelidx#1] +[visit_exp (labelidx)] +[visit_exp labelidx] +[visit_id labelidx] +[visit_exp $free_labelidx(labelidx)] +[visit_exp labelidx] +[visit_id labelidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{labelidx#1 : labelidx, labelidx : labelidx}(`BR`_instr{labelidx#1}(labelidx)) = $free_labelidx(labelidx) +[check_dims] labelidx labelidx#3 +[visit_exp `BR_IF`_instr{labelidx#3}(labelidx)] +[visit_exp labelidx#3] +[visit_id labelidx#3] +[visit_exp (labelidx)] +[visit_exp labelidx] +[visit_id labelidx] +[visit_exp $free_labelidx(labelidx)] +[visit_exp labelidx] +[visit_id labelidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{labelidx#3 : labelidx, labelidx : labelidx}(`BR_IF`_instr{labelidx#3}(labelidx)) = $free_labelidx(labelidx) +[check_dims] labelidx labelidx#5 labelidx' labelidx*#23 +[visit_exp `BR_TABLE`_instr{`labelidx*#23`, labelidx#5}(labelidx*{labelidx <- `labelidx*`}, labelidx')] +[visit_exp `labelidx*#23`] +[visit_id labelidx*#23] +[visit_exp labelidx#5] +[visit_id labelidx#5] +[visit_exp (labelidx*{labelidx <- `labelidx*`}, labelidx')] +[visit_exp labelidx*{labelidx <- `labelidx*`}] +[scope_enter labelidx] +[visit_exp labelidx] +[visit_id labelidx] not free +[visit_id labelidx] not free +[scope_exit labelidx] +[visit_exp `labelidx*`] +[visit_id labelidx*] no dims +[visit_id labelidx*] +[visit_exp labelidx'] +[visit_id labelidx'] +[visit_exp $free_list($free_labelidx(labelidx)*{labelidx <- `labelidx*`}) +++ $free_labelidx(labelidx')] +[visit_exp $free_list($free_labelidx(labelidx)*{labelidx <- `labelidx*`})] +[visit_exp $free_labelidx(labelidx)*{labelidx <- `labelidx*`}] +[scope_enter labelidx] +[visit_exp $free_labelidx(labelidx)] +[visit_exp labelidx] +[visit_id labelidx] not free +[visit_id labelidx] not free +[scope_exit labelidx] +[visit_exp `labelidx*`] +[visit_id labelidx*] not free +[visit_id labelidx*] no dims +[visit_exp $free_labelidx(labelidx')] +[visit_exp labelidx'] +[visit_id labelidx'] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{`labelidx*#23` : labelidx*, labelidx#5 : labelidx, `labelidx*` : labelidx*, labelidx' : labelidx}(`BR_TABLE`_instr{`labelidx*#23`, labelidx#5}(labelidx*{labelidx <- `labelidx*`}, labelidx')) = $free_list($free_labelidx(labelidx)*{labelidx <- `labelidx*`}) +++ $free_labelidx(labelidx') +[check_dims] labelidx labelidx#7 +[visit_exp `BR_ON_NULL`_instr{labelidx#7}(labelidx)] +[visit_exp labelidx#7] +[visit_id labelidx#7] +[visit_exp (labelidx)] +[visit_exp labelidx] +[visit_id labelidx] +[visit_exp $free_labelidx(labelidx)] +[visit_exp labelidx] +[visit_id labelidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{labelidx#7 : labelidx, labelidx : labelidx}(`BR_ON_NULL`_instr{labelidx#7}(labelidx)) = $free_labelidx(labelidx) +[check_dims] labelidx labelidx#9 +[visit_exp `BR_ON_NON_NULL`_instr{labelidx#9}(labelidx)] +[visit_exp labelidx#9] +[visit_id labelidx#9] +[visit_exp (labelidx)] +[visit_exp labelidx] +[visit_id labelidx] +[visit_exp $free_labelidx(labelidx)] +[visit_exp labelidx] +[visit_id labelidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{labelidx#9 : labelidx, labelidx : labelidx}(`BR_ON_NON_NULL`_instr{labelidx#9}(labelidx)) = $free_labelidx(labelidx) +[check_dims] labelidx labelidx#11 reftype#125 reftype_1 reftype_2 +[visit_exp `BR_ON_CAST`_instr{labelidx#11, reftype#125}(labelidx, reftype_1, reftype_2)] +[visit_exp labelidx#11] +[visit_id labelidx#11] +[visit_exp reftype#125] +[visit_id reftype#125] +[visit_exp (labelidx, reftype_1, reftype_2)] +[visit_exp labelidx] +[visit_id labelidx] +[visit_exp reftype_1] +[visit_id reftype_1] +[visit_exp reftype_2] +[visit_id reftype_2] +[visit_exp $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2)] +[visit_exp $free_labelidx(labelidx) +++ $free_reftype(reftype_1)] +[visit_exp $free_labelidx(labelidx)] +[visit_exp labelidx] +[visit_id labelidx] not free +[visit_exp $free_reftype(reftype_1)] +[visit_exp reftype_1] +[visit_id reftype_1] not free +[visit_exp $free_reftype(reftype_2)] +[visit_exp reftype_2] +[visit_id reftype_2] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{labelidx#11 : labelidx, reftype#125 : reftype, labelidx : labelidx, reftype_1 : reftype, reftype_2 : reftype}(`BR_ON_CAST`_instr{labelidx#11, reftype#125}(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) +[check_dims] labelidx labelidx#13 reftype#128 reftype_1 reftype_2 +[visit_exp `BR_ON_CAST_FAIL`_instr{labelidx#13, reftype#128}(labelidx, reftype_1, reftype_2)] +[visit_exp labelidx#13] +[visit_id labelidx#13] +[visit_exp reftype#128] +[visit_id reftype#128] +[visit_exp (labelidx, reftype_1, reftype_2)] +[visit_exp labelidx] +[visit_id labelidx] +[visit_exp reftype_1] +[visit_id reftype_1] +[visit_exp reftype_2] +[visit_id reftype_2] +[visit_exp $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2)] +[visit_exp $free_labelidx(labelidx) +++ $free_reftype(reftype_1)] +[visit_exp $free_labelidx(labelidx)] +[visit_exp labelidx] +[visit_id labelidx] not free +[visit_exp $free_reftype(reftype_1)] +[visit_exp reftype_1] +[visit_id reftype_1] not free +[visit_exp $free_reftype(reftype_2)] +[visit_exp reftype_2] +[visit_id reftype_2] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{labelidx#13 : labelidx, reftype#128 : reftype, labelidx : labelidx, reftype_1 : reftype, reftype_2 : reftype}(`BR_ON_CAST_FAIL`_instr{labelidx#13, reftype#128}(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) +[check_dims] funcidx funcidx#5 +[visit_exp `CALL`_instr{funcidx#5}(funcidx)] +[visit_exp funcidx#5] +[visit_id funcidx#5] +[visit_exp (funcidx)] +[visit_exp funcidx] +[visit_id funcidx] +[visit_exp $free_funcidx(funcidx)] +[visit_exp funcidx] +[visit_id funcidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{funcidx#5 : funcidx, funcidx : funcidx}(`CALL`_instr{funcidx#5}(funcidx)) = $free_funcidx(funcidx) +[check_dims] typeuse typeuse#9 +[visit_exp `CALL_REF`_instr{typeuse#9}(typeuse)] +[visit_exp typeuse#9] +[visit_id typeuse#9] +[visit_exp (typeuse)] +[visit_exp typeuse] +[visit_id typeuse] +[visit_exp $free_typeuse(typeuse)] +[visit_exp typeuse] +[visit_id typeuse] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{typeuse#9 : typeuse, typeuse : typeuse}(`CALL_REF`_instr{typeuse#9}(typeuse)) = $free_typeuse(typeuse) +[check_dims] tableidx tableidx#5 typeuse typeuse#11 +[visit_exp `CALL_INDIRECT`_instr{tableidx#5, typeuse#11}(tableidx, typeuse)] +[visit_exp tableidx#5] +[visit_id tableidx#5] +[visit_exp typeuse#11] +[visit_id typeuse#11] +[visit_exp (tableidx, typeuse)] +[visit_exp tableidx] +[visit_id tableidx] +[visit_exp typeuse] +[visit_id typeuse] +[visit_exp $free_tableidx(tableidx) +++ $free_typeuse(typeuse)] +[visit_exp $free_tableidx(tableidx)] +[visit_exp tableidx] +[visit_id tableidx] not free +[visit_exp $free_typeuse(typeuse)] +[visit_exp typeuse] +[visit_id typeuse] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{tableidx#5 : tableidx, typeuse#11 : typeuse, tableidx : tableidx, typeuse : typeuse}(`CALL_INDIRECT`_instr{tableidx#5, typeuse#11}(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) +[check_dims] dataidx*#23 elemidx*#23 funcidx*#23 globalidx*#23 labelidx*#25 localidx*#23 memidx*#23 tableidx*#23 typeidx*#23 +[visit_exp `RETURN`_instr] +[visit_exp ()] +[visit_exp {`TYPES`{`typeidx*#23`} [], `FUNCS`{`funcidx*#23`} [], `GLOBALS`{`globalidx*#23`} [], `TABLES`{`tableidx*#23`} [], `MEMS`{`memidx*#23`} [], `ELEMS`{`elemidx*#23`} [], `DATAS`{`dataidx*#23`} [], `LOCALS`{`localidx*#23`} [], `LABELS`{`labelidx*#25`} []}] +[visit_exp `typeidx*#23`] +[visit_id typeidx*#23] +[visit_exp []] +[visit_exp `funcidx*#23`] +[visit_id funcidx*#23] +[visit_exp []] +[visit_exp `globalidx*#23`] +[visit_id globalidx*#23] +[visit_exp []] +[visit_exp `tableidx*#23`] +[visit_id tableidx*#23] +[visit_exp []] +[visit_exp `memidx*#23`] +[visit_id memidx*#23] +[visit_exp []] +[visit_exp `elemidx*#23`] +[visit_id elemidx*#23] +[visit_exp []] +[visit_exp `dataidx*#23`] +[visit_id dataidx*#23] +[visit_exp []] +[visit_exp `localidx*#23`] +[visit_id localidx*#23] +[visit_exp []] +[visit_exp `labelidx*#25`] +[visit_id labelidx*#25] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{`typeidx*#23` : typeidx*, `funcidx*#23` : funcidx*, `globalidx*#23` : globalidx*, `tableidx*#23` : tableidx*, `memidx*#23` : memidx*, `elemidx*#23` : elemidx*, `dataidx*#23` : dataidx*, `localidx*#23` : localidx*, `labelidx*#25` : labelidx*}(`RETURN`_instr) = {`TYPES`{`typeidx*#23`} [], `FUNCS`{`funcidx*#23`} [], `GLOBALS`{`globalidx*#23`} [], `TABLES`{`tableidx*#23`} [], `MEMS`{`memidx*#23`} [], `ELEMS`{`elemidx*#23`} [], `DATAS`{`dataidx*#23`} [], `LOCALS`{`localidx*#23`} [], `LABELS`{`labelidx*#25`} []} +[check_dims] funcidx funcidx#7 +[visit_exp `RETURN_CALL`_instr{funcidx#7}(funcidx)] +[visit_exp funcidx#7] +[visit_id funcidx#7] +[visit_exp (funcidx)] +[visit_exp funcidx] +[visit_id funcidx] +[visit_exp $free_funcidx(funcidx)] +[visit_exp funcidx] +[visit_id funcidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{funcidx#7 : funcidx, funcidx : funcidx}(`RETURN_CALL`_instr{funcidx#7}(funcidx)) = $free_funcidx(funcidx) +[check_dims] typeuse typeuse#13 +[visit_exp `RETURN_CALL_REF`_instr{typeuse#13}(typeuse)] +[visit_exp typeuse#13] +[visit_id typeuse#13] +[visit_exp (typeuse)] +[visit_exp typeuse] +[visit_id typeuse] +[visit_exp $free_typeuse(typeuse)] +[visit_exp typeuse] +[visit_id typeuse] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{typeuse#13 : typeuse, typeuse : typeuse}(`RETURN_CALL_REF`_instr{typeuse#13}(typeuse)) = $free_typeuse(typeuse) +[check_dims] tableidx tableidx#7 typeuse typeuse#15 +[visit_exp `RETURN_CALL_INDIRECT`_instr{tableidx#7, typeuse#15}(tableidx, typeuse)] +[visit_exp tableidx#7] +[visit_id tableidx#7] +[visit_exp typeuse#15] +[visit_id typeuse#15] +[visit_exp (tableidx, typeuse)] +[visit_exp tableidx] +[visit_id tableidx] +[visit_exp typeuse] +[visit_id typeuse] +[visit_exp $free_tableidx(tableidx) +++ $free_typeuse(typeuse)] +[visit_exp $free_tableidx(tableidx)] +[visit_exp tableidx] +[visit_id tableidx] not free +[visit_exp $free_typeuse(typeuse)] +[visit_exp typeuse] +[visit_id typeuse] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{tableidx#7 : tableidx, typeuse#15 : typeuse, tableidx : tableidx, typeuse : typeuse}(`RETURN_CALL_INDIRECT`_instr{tableidx#7, typeuse#15}(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) +[check_dims] numlit numtype numtype#3 +[visit_exp `CONST`_instr{numtype#3}(numtype, numlit)] +[visit_exp numtype#3] +[visit_id numtype#3] +[visit_exp (numtype, numlit)] +[visit_exp numtype] +[visit_id numtype] +[visit_exp numlit] +[visit_id numlit] +[visit_exp $free_numtype(numtype)] +[visit_exp numtype] +[visit_id numtype] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{numtype#3 : numtype, numtype : numtype, numlit : num_(numtype)}(`CONST`_instr{numtype#3}(numtype, numlit)) = $free_numtype(numtype) +[check_dims] numtype numtype#5 unop +[visit_exp `UNOP`_instr{numtype#5}(numtype, unop)] +[visit_exp numtype#5] +[visit_id numtype#5] +[visit_exp (numtype, unop)] +[visit_exp numtype] +[visit_id numtype] +[visit_exp unop] +[visit_id unop] +[visit_exp $free_numtype(numtype)] +[visit_exp numtype] +[visit_id numtype] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{numtype#5 : numtype, numtype : numtype, unop : unop_(numtype)}(`UNOP`_instr{numtype#5}(numtype, unop)) = $free_numtype(numtype) +[check_dims] binop numtype numtype#7 +[visit_exp `BINOP`_instr{numtype#7}(numtype, binop)] +[visit_exp numtype#7] +[visit_id numtype#7] +[visit_exp (numtype, binop)] +[visit_exp numtype] +[visit_id numtype] +[visit_exp binop] +[visit_id binop] +[visit_exp $free_numtype(numtype)] +[visit_exp numtype] +[visit_id numtype] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{numtype#7 : numtype, numtype : numtype, binop : binop_(numtype)}(`BINOP`_instr{numtype#7}(numtype, binop)) = $free_numtype(numtype) +[check_dims] numtype numtype#9 testop +[visit_exp `TESTOP`_instr{numtype#9}(numtype, testop)] +[visit_exp numtype#9] +[visit_id numtype#9] +[visit_exp (numtype, testop)] +[visit_exp numtype] +[visit_id numtype] +[visit_exp testop] +[visit_id testop] +[visit_exp $free_numtype(numtype)] +[visit_exp numtype] +[visit_id numtype] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{numtype#9 : numtype, numtype : numtype, testop : testop_(numtype)}(`TESTOP`_instr{numtype#9}(numtype, testop)) = $free_numtype(numtype) +[check_dims] numtype numtype#11 relop +[visit_exp `RELOP`_instr{numtype#11}(numtype, relop)] +[visit_exp numtype#11] +[visit_id numtype#11] +[visit_exp (numtype, relop)] +[visit_exp numtype] +[visit_id numtype] +[visit_exp relop] +[visit_id relop] +[visit_exp $free_numtype(numtype)] +[visit_exp numtype] +[visit_id numtype] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{numtype#11 : numtype, numtype : numtype, relop : relop_(numtype)}(`RELOP`_instr{numtype#11}(numtype, relop)) = $free_numtype(numtype) +[check_dims] cvtop numtype_1 numtype_1#1 numtype_2 numtype_2#1 +[visit_exp `CVTOP`_instr{numtype_1#1, numtype_2#1}(numtype_1, numtype_2, cvtop)] +[visit_exp numtype_1#1] +[visit_id numtype_1#1] +[visit_exp numtype_2#1] +[visit_id numtype_2#1] +[visit_exp (numtype_1, numtype_2, cvtop)] +[visit_exp numtype_1] +[visit_id numtype_1] +[visit_exp numtype_2] +[visit_id numtype_2] +[visit_exp cvtop] +[visit_id cvtop] +[visit_exp $free_numtype(numtype_1) +++ $free_numtype(numtype_2)] +[visit_exp $free_numtype(numtype_1)] +[visit_exp numtype_1] +[visit_id numtype_1] not free +[visit_exp $free_numtype(numtype_2)] +[visit_exp numtype_2] +[visit_id numtype_2] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{numtype_1#1 : numtype, numtype_2#1 : numtype, numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop__(numtype_2, numtype_1)}(`CVTOP`_instr{numtype_1#1, numtype_2#1}(numtype_1, numtype_2, cvtop)) = $free_numtype(numtype_1) +++ $free_numtype(numtype_2) +[check_dims] veclit vectype vectype#3 +[visit_exp `VCONST`_instr{vectype#3}(vectype, veclit)] +[visit_exp vectype#3] +[visit_id vectype#3] +[visit_exp (vectype, veclit)] +[visit_exp vectype] +[visit_id vectype] +[visit_exp veclit] +[visit_id veclit] +[visit_exp $free_vectype(vectype)] +[visit_exp vectype] +[visit_id vectype] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{vectype#3 : vectype, vectype : vectype, veclit : vec_(vectype)}(`VCONST`_instr{vectype#3}(vectype, veclit)) = $free_vectype(vectype) +[check_dims] vectype vectype#5 vvunop vvunop#1 +[visit_exp `VVUNOP`_instr{vectype#5, vvunop#1}(vectype, vvunop)] +[visit_exp vectype#5] +[visit_id vectype#5] +[visit_exp vvunop#1] +[visit_id vvunop#1] +[visit_exp (vectype, vvunop)] +[visit_exp vectype] +[visit_id vectype] +[visit_exp vvunop] +[visit_id vvunop] +[visit_exp $free_vectype(vectype)] +[visit_exp vectype] +[visit_id vectype] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{vectype#5 : vectype, vvunop#1 : vvunop, vectype : vectype, vvunop : vvunop}(`VVUNOP`_instr{vectype#5, vvunop#1}(vectype, vvunop)) = $free_vectype(vectype) +[check_dims] vectype vectype#7 vvbinop vvbinop#1 +[visit_exp `VVBINOP`_instr{vectype#7, vvbinop#1}(vectype, vvbinop)] +[visit_exp vectype#7] +[visit_id vectype#7] +[visit_exp vvbinop#1] +[visit_id vvbinop#1] +[visit_exp (vectype, vvbinop)] +[visit_exp vectype] +[visit_id vectype] +[visit_exp vvbinop] +[visit_id vvbinop] +[visit_exp $free_vectype(vectype)] +[visit_exp vectype] +[visit_id vectype] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{vectype#7 : vectype, vvbinop#1 : vvbinop, vectype : vectype, vvbinop : vvbinop}(`VVBINOP`_instr{vectype#7, vvbinop#1}(vectype, vvbinop)) = $free_vectype(vectype) +[check_dims] vectype vectype#9 vvternop vvternop#1 +[visit_exp `VVTERNOP`_instr{vectype#9, vvternop#1}(vectype, vvternop)] +[visit_exp vectype#9] +[visit_id vectype#9] +[visit_exp vvternop#1] +[visit_id vvternop#1] +[visit_exp (vectype, vvternop)] +[visit_exp vectype] +[visit_id vectype] +[visit_exp vvternop] +[visit_id vvternop] +[visit_exp $free_vectype(vectype)] +[visit_exp vectype] +[visit_id vectype] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{vectype#9 : vectype, vvternop#1 : vvternop, vectype : vectype, vvternop : vvternop}(`VVTERNOP`_instr{vectype#9, vvternop#1}(vectype, vvternop)) = $free_vectype(vectype) +[check_dims] vectype vectype#11 vvtestop vvtestop#1 +[visit_exp `VVTESTOP`_instr{vectype#11, vvtestop#1}(vectype, vvtestop)] +[visit_exp vectype#11] +[visit_id vectype#11] +[visit_exp vvtestop#1] +[visit_id vvtestop#1] +[visit_exp (vectype, vvtestop)] +[visit_exp vectype] +[visit_id vectype] +[visit_exp vvtestop] +[visit_id vvtestop] +[visit_exp $free_vectype(vectype)] +[visit_exp vectype] +[visit_id vectype] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{vectype#11 : vectype, vvtestop#1 : vvtestop, vectype : vectype, vvtestop : vvtestop}(`VVTESTOP`_instr{vectype#11, vvtestop#1}(vectype, vvtestop)) = $free_vectype(vectype) +[check_dims] shape shape#153 vunop +[visit_exp `VUNOP`_instr{shape#153}(shape, vunop)] +[visit_exp shape#153] +[visit_id shape#153] +[visit_exp (shape, vunop)] +[visit_exp shape] +[visit_id shape] +[visit_exp vunop] +[visit_id vunop] +[visit_exp $free_shape(shape)] +[visit_exp shape] +[visit_id shape] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{shape#153 : shape, shape : shape, vunop : vunop_(shape)}(`VUNOP`_instr{shape#153}(shape, vunop)) = $free_shape(shape) +[check_dims] shape shape#155 vbinop +[visit_exp `VBINOP`_instr{shape#155}(shape, vbinop)] +[visit_exp shape#155] +[visit_id shape#155] +[visit_exp (shape, vbinop)] +[visit_exp shape] +[visit_id shape] +[visit_exp vbinop] +[visit_id vbinop] +[visit_exp $free_shape(shape)] +[visit_exp shape] +[visit_id shape] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{shape#155 : shape, shape : shape, vbinop : vbinop_(shape)}(`VBINOP`_instr{shape#155}(shape, vbinop)) = $free_shape(shape) +[check_dims] shape shape#157 vternop +[visit_exp `VTERNOP`_instr{shape#157}(shape, vternop)] +[visit_exp shape#157] +[visit_id shape#157] +[visit_exp (shape, vternop)] +[visit_exp shape] +[visit_id shape] +[visit_exp vternop] +[visit_id vternop] +[visit_exp $free_shape(shape)] +[visit_exp shape] +[visit_id shape] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{shape#157 : shape, shape : shape, vternop : vternop_(shape)}(`VTERNOP`_instr{shape#157}(shape, vternop)) = $free_shape(shape) +[check_dims] shape shape#159 vtestop +[visit_exp `VTESTOP`_instr{shape#159}(shape, vtestop)] +[visit_exp shape#159] +[visit_id shape#159] +[visit_exp (shape, vtestop)] +[visit_exp shape] +[visit_id shape] +[visit_exp vtestop] +[visit_id vtestop] +[visit_exp $free_shape(shape)] +[visit_exp shape] +[visit_id shape] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{shape#159 : shape, shape : shape, vtestop : vtestop_(shape)}(`VTESTOP`_instr{shape#159}(shape, vtestop)) = $free_shape(shape) +[check_dims] shape shape#161 vrelop +[visit_exp `VRELOP`_instr{shape#161}(shape, vrelop)] +[visit_exp shape#161] +[visit_id shape#161] +[visit_exp (shape, vrelop)] +[visit_exp shape] +[visit_id shape] +[visit_exp vrelop] +[visit_id vrelop] +[visit_exp $free_shape(shape)] +[visit_exp shape] +[visit_id shape] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{shape#161 : shape, shape : shape, vrelop : vrelop_(shape)}(`VRELOP`_instr{shape#161}(shape, vrelop)) = $free_shape(shape) +[check_dims] Jnn#48 ishape ishape#1 shape#169 vshiftop +[visit_exp `VSHIFTOP`_instr{ishape#1}(ishape, vshiftop)] +[visit_exp ishape#1] +[visit_id ishape#1] +[visit_exp (ishape, vshiftop)] +[visit_exp ishape] +[visit_id ishape] +[visit_exp vshiftop] +[visit_id vshiftop] +[visit_exp $free_shape(ishape!`%`_ishape{shape#169, Jnn#48}.0)] +[visit_exp ishape!`%`_ishape{shape#169, Jnn#48}.0] +[visit_exp ishape!`%`_ishape{shape#169, Jnn#48}] +[visit_exp ishape] +[visit_id ishape] not free +[visit_exp shape#169] +[visit_id shape#169] +[visit_exp Jnn#48] +[visit_id Jnn#48] +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{ishape#1 : ishape, ishape : ishape, vshiftop : vshiftop_(ishape), shape#169 : shape, Jnn#48 : Jnn}(`VSHIFTOP`_instr{ishape#1}(ishape, vshiftop)) = $free_shape(ishape!`%`_ishape{shape#169, Jnn#48}.0) +[check_dims] Jnn#51 ishape ishape#3 shape#177 +[visit_exp `VBITMASK`_instr{ishape#3}(ishape)] +[visit_exp ishape#3] +[visit_id ishape#3] +[visit_exp (ishape)] +[visit_exp ishape] +[visit_id ishape] +[visit_exp $free_shape(ishape!`%`_ishape{shape#177, Jnn#51}.0)] +[visit_exp ishape!`%`_ishape{shape#177, Jnn#51}.0] +[visit_exp ishape!`%`_ishape{shape#177, Jnn#51}] +[visit_exp ishape] +[visit_id ishape] not free +[visit_exp shape#177] +[visit_id shape#177] +[visit_exp Jnn#51] +[visit_id Jnn#51] +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{ishape#3 : ishape, ishape : ishape, shape#177 : shape, Jnn#51 : Jnn}(`VBITMASK`_instr{ishape#3}(ishape)) = $free_shape(ishape!`%`_ishape{shape#177, Jnn#51}.0) +[check_dims] bshape bshape#1 shape#185 vswizzlop +[visit_exp `VSWIZZLOP`_instr{bshape#1}(bshape, vswizzlop)] +[visit_exp bshape#1] +[visit_id bshape#1] +[visit_exp (bshape, vswizzlop)] +[visit_exp bshape] +[visit_id bshape] +[visit_exp vswizzlop] +[visit_id vswizzlop] +[visit_exp $free_shape(bshape!`%`_bshape{shape#185}.0)] +[visit_exp bshape!`%`_bshape{shape#185}.0] +[visit_exp bshape!`%`_bshape{shape#185}] +[visit_exp bshape] +[visit_id bshape] not free +[visit_exp shape#185] +[visit_id shape#185] +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{bshape#1 : bshape, bshape : bshape, vswizzlop : vswizzlop_(bshape), shape#185 : shape}(`VSWIZZLOP`_instr{bshape#1}(bshape, vswizzlop)) = $free_shape(bshape!`%`_bshape{shape#185}.0) +[check_dims] bshape bshape#3 i#1902 laneidx laneidx*#1 shape#187 shape#194 +[visit_exp `VSHUFFLE`_instr{bshape#3, `laneidx*#1`, i#1902, shape#187}(bshape, laneidx*{laneidx <- `laneidx*`})] +[visit_exp bshape#3] +[visit_id bshape#3] +[visit_exp `laneidx*#1`] +[visit_id laneidx*#1] +[visit_exp i#1902] +[visit_id i#1902] +[visit_exp shape#187] +[visit_id shape#187] +[visit_exp (bshape, laneidx*{laneidx <- `laneidx*`})] +[visit_exp bshape] +[visit_id bshape] +[visit_exp laneidx*{laneidx <- `laneidx*`}] +[scope_enter laneidx] +[visit_exp laneidx] +[visit_id laneidx] not free +[visit_id laneidx] not free +[scope_exit laneidx] +[visit_exp `laneidx*`] +[visit_id laneidx*] no dims +[visit_id laneidx*] +[visit_exp $free_shape(bshape!`%`_bshape{shape#194}.0)] +[visit_exp bshape!`%`_bshape{shape#194}.0] +[visit_exp bshape!`%`_bshape{shape#194}] +[visit_exp bshape] +[visit_id bshape] not free +[visit_exp shape#194] +[visit_id shape#194] +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{bshape#3 : bshape, `laneidx*#1` : laneidx*, i#1902 : nat, shape#187 : shape, bshape : bshape, `laneidx*` : laneidx*, shape#194 : shape}(`VSHUFFLE`_instr{bshape#3, `laneidx*#1`, i#1902, shape#187}(bshape, laneidx*{laneidx <- `laneidx*`})) = $free_shape(bshape!`%`_bshape{shape#194}.0) +[check_dims] Jnn#56 Jnn#57 ishape_1 ishape_1#1 ishape_2 ishape_2#1 shape#208 shape#210 vextunop +[visit_exp `VEXTUNOP`_instr{ishape_1#1, ishape_2#1}(ishape_1, ishape_2, vextunop)] +[visit_exp ishape_1#1] +[visit_id ishape_1#1] +[visit_exp ishape_2#1] +[visit_id ishape_2#1] +[visit_exp (ishape_1, ishape_2, vextunop)] +[visit_exp ishape_1] +[visit_id ishape_1] +[visit_exp ishape_2] +[visit_id ishape_2] +[visit_exp vextunop] +[visit_id vextunop] +[visit_exp $free_shape(ishape_1!`%`_ishape{shape#208, Jnn#56}.0) +++ $free_shape(ishape_2!`%`_ishape{shape#210, Jnn#57}.0)] +[visit_exp $free_shape(ishape_1!`%`_ishape{shape#208, Jnn#56}.0)] +[visit_exp ishape_1!`%`_ishape{shape#208, Jnn#56}.0] +[visit_exp ishape_1!`%`_ishape{shape#208, Jnn#56}] +[visit_exp ishape_1] +[visit_id ishape_1] not free +[visit_exp shape#208] +[visit_id shape#208] +[visit_exp Jnn#56] +[visit_id Jnn#56] +[visit_exp $free_shape(ishape_2!`%`_ishape{shape#210, Jnn#57}.0)] +[visit_exp ishape_2!`%`_ishape{shape#210, Jnn#57}.0] +[visit_exp ishape_2!`%`_ishape{shape#210, Jnn#57}] +[visit_exp ishape_2] +[visit_id ishape_2] not free +[visit_exp shape#210] +[visit_id shape#210] +[visit_exp Jnn#57] +[visit_id Jnn#57] +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{ishape_1#1 : ishape, ishape_2#1 : ishape, ishape_1 : ishape, ishape_2 : ishape, vextunop : vextunop__(ishape_2, ishape_1), shape#208 : shape, Jnn#56 : Jnn, shape#210 : shape, Jnn#57 : Jnn}(`VEXTUNOP`_instr{ishape_1#1, ishape_2#1}(ishape_1, ishape_2, vextunop)) = $free_shape(ishape_1!`%`_ishape{shape#208, Jnn#56}.0) +++ $free_shape(ishape_2!`%`_ishape{shape#210, Jnn#57}.0) +[check_dims] Jnn#62 Jnn#63 ishape_1 ishape_1#3 ishape_2 ishape_2#3 shape#224 shape#226 vextbinop +[visit_exp `VEXTBINOP`_instr{ishape_1#3, ishape_2#3}(ishape_1, ishape_2, vextbinop)] +[visit_exp ishape_1#3] +[visit_id ishape_1#3] +[visit_exp ishape_2#3] +[visit_id ishape_2#3] +[visit_exp (ishape_1, ishape_2, vextbinop)] +[visit_exp ishape_1] +[visit_id ishape_1] +[visit_exp ishape_2] +[visit_id ishape_2] +[visit_exp vextbinop] +[visit_id vextbinop] +[visit_exp $free_shape(ishape_1!`%`_ishape{shape#224, Jnn#62}.0) +++ $free_shape(ishape_2!`%`_ishape{shape#226, Jnn#63}.0)] +[visit_exp $free_shape(ishape_1!`%`_ishape{shape#224, Jnn#62}.0)] +[visit_exp ishape_1!`%`_ishape{shape#224, Jnn#62}.0] +[visit_exp ishape_1!`%`_ishape{shape#224, Jnn#62}] +[visit_exp ishape_1] +[visit_id ishape_1] not free +[visit_exp shape#224] +[visit_id shape#224] +[visit_exp Jnn#62] +[visit_id Jnn#62] +[visit_exp $free_shape(ishape_2!`%`_ishape{shape#226, Jnn#63}.0)] +[visit_exp ishape_2!`%`_ishape{shape#226, Jnn#63}.0] +[visit_exp ishape_2!`%`_ishape{shape#226, Jnn#63}] +[visit_exp ishape_2] +[visit_id ishape_2] not free +[visit_exp shape#226] +[visit_id shape#226] +[visit_exp Jnn#63] +[visit_id Jnn#63] +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{ishape_1#3 : ishape, ishape_2#3 : ishape, ishape_1 : ishape, ishape_2 : ishape, vextbinop : vextbinop__(ishape_2, ishape_1), shape#224 : shape, Jnn#62 : Jnn, shape#226 : shape, Jnn#63 : Jnn}(`VEXTBINOP`_instr{ishape_1#3, ishape_2#3}(ishape_1, ishape_2, vextbinop)) = $free_shape(ishape_1!`%`_ishape{shape#224, Jnn#62}.0) +++ $free_shape(ishape_2!`%`_ishape{shape#226, Jnn#63}.0) +[check_dims] Jnn#68 Jnn#69 ishape_1 ishape_1#5 ishape_2 ishape_2#5 shape#240 shape#242 vextternop +[visit_exp `VEXTTERNOP`_instr{ishape_1#5, ishape_2#5}(ishape_1, ishape_2, vextternop)] +[visit_exp ishape_1#5] +[visit_id ishape_1#5] +[visit_exp ishape_2#5] +[visit_id ishape_2#5] +[visit_exp (ishape_1, ishape_2, vextternop)] +[visit_exp ishape_1] +[visit_id ishape_1] +[visit_exp ishape_2] +[visit_id ishape_2] +[visit_exp vextternop] +[visit_id vextternop] +[visit_exp $free_shape(ishape_1!`%`_ishape{shape#240, Jnn#68}.0) +++ $free_shape(ishape_2!`%`_ishape{shape#242, Jnn#69}.0)] +[visit_exp $free_shape(ishape_1!`%`_ishape{shape#240, Jnn#68}.0)] +[visit_exp ishape_1!`%`_ishape{shape#240, Jnn#68}.0] +[visit_exp ishape_1!`%`_ishape{shape#240, Jnn#68}] +[visit_exp ishape_1] +[visit_id ishape_1] not free +[visit_exp shape#240] +[visit_id shape#240] +[visit_exp Jnn#68] +[visit_id Jnn#68] +[visit_exp $free_shape(ishape_2!`%`_ishape{shape#242, Jnn#69}.0)] +[visit_exp ishape_2!`%`_ishape{shape#242, Jnn#69}.0] +[visit_exp ishape_2!`%`_ishape{shape#242, Jnn#69}] +[visit_exp ishape_2] +[visit_id ishape_2] not free +[visit_exp shape#242] +[visit_id shape#242] +[visit_exp Jnn#69] +[visit_id Jnn#69] +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{ishape_1#5 : ishape, ishape_2#5 : ishape, ishape_1 : ishape, ishape_2 : ishape, vextternop : vextternop__(ishape_2, ishape_1), shape#240 : shape, Jnn#68 : Jnn, shape#242 : shape, Jnn#69 : Jnn}(`VEXTTERNOP`_instr{ishape_1#5, ishape_2#5}(ishape_1, ishape_2, vextternop)) = $free_shape(ishape_1!`%`_ishape{shape#240, Jnn#68}.0) +++ $free_shape(ishape_2!`%`_ishape{shape#242, Jnn#69}.0) +[check_dims] Jnn#70 Jnn#71 Jnn#72 Jnn#77 Jnn#78 ishape_1 ishape_1#7 ishape_2 ishape_2#7 shape#244 shape#245 shape#246 shape#259 shape#261 sx sx#1 +[visit_exp `VNARROW`_instr{ishape_1#7, ishape_2#7, sx#1, shape#244, Jnn#70, shape#245, Jnn#71, shape#246, Jnn#72}(ishape_1, ishape_2, sx)] +[visit_exp ishape_1#7] +[visit_id ishape_1#7] +[visit_exp ishape_2#7] +[visit_id ishape_2#7] +[visit_exp sx#1] +[visit_id sx#1] +[visit_exp shape#244] +[visit_id shape#244] +[visit_exp Jnn#70] +[visit_id Jnn#70] +[visit_exp shape#245] +[visit_id shape#245] +[visit_exp Jnn#71] +[visit_id Jnn#71] +[visit_exp shape#246] +[visit_id shape#246] +[visit_exp Jnn#72] +[visit_id Jnn#72] +[visit_exp (ishape_1, ishape_2, sx)] +[visit_exp ishape_1] +[visit_id ishape_1] +[visit_exp ishape_2] +[visit_id ishape_2] +[visit_exp sx] +[visit_id sx] +[visit_exp $free_shape(ishape_1!`%`_ishape{shape#259, Jnn#77}.0) +++ $free_shape(ishape_2!`%`_ishape{shape#261, Jnn#78}.0)] +[visit_exp $free_shape(ishape_1!`%`_ishape{shape#259, Jnn#77}.0)] +[visit_exp ishape_1!`%`_ishape{shape#259, Jnn#77}.0] +[visit_exp ishape_1!`%`_ishape{shape#259, Jnn#77}] +[visit_exp ishape_1] +[visit_id ishape_1] not free +[visit_exp shape#259] +[visit_id shape#259] +[visit_exp Jnn#77] +[visit_id Jnn#77] +[visit_exp $free_shape(ishape_2!`%`_ishape{shape#261, Jnn#78}.0)] +[visit_exp ishape_2!`%`_ishape{shape#261, Jnn#78}.0] +[visit_exp ishape_2!`%`_ishape{shape#261, Jnn#78}] +[visit_exp ishape_2] +[visit_id ishape_2] not free +[visit_exp shape#261] +[visit_id shape#261] +[visit_exp Jnn#78] +[visit_id Jnn#78] +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{ishape_1#7 : ishape, ishape_2#7 : ishape, sx#1 : sx, shape#244 : shape, Jnn#70 : Jnn, shape#245 : shape, Jnn#71 : Jnn, shape#246 : shape, Jnn#72 : Jnn, ishape_1 : ishape, ishape_2 : ishape, sx : sx, shape#259 : shape, Jnn#77 : Jnn, shape#261 : shape, Jnn#78 : Jnn}(`VNARROW`_instr{ishape_1#7, ishape_2#7, sx#1, shape#244, Jnn#70, shape#245, Jnn#71, shape#246, Jnn#72}(ishape_1, ishape_2, sx)) = $free_shape(ishape_1!`%`_ishape{shape#259, Jnn#77}.0) +++ $free_shape(ishape_2!`%`_ishape{shape#261, Jnn#78}.0) +[check_dims] shape_1 shape_1#1 shape_2 shape_2#1 vcvtop +[visit_exp `VCVTOP`_instr{shape_1#1, shape_2#1}(shape_1, shape_2, vcvtop)] +[visit_exp shape_1#1] +[visit_id shape_1#1] +[visit_exp shape_2#1] +[visit_id shape_2#1] +[visit_exp (shape_1, shape_2, vcvtop)] +[visit_exp shape_1] +[visit_id shape_1] +[visit_exp shape_2] +[visit_id shape_2] +[visit_exp vcvtop] +[visit_id vcvtop] +[visit_exp $free_shape(shape_1) +++ $free_shape(shape_2)] +[visit_exp $free_shape(shape_1)] +[visit_exp shape_1] +[visit_id shape_1] not free +[visit_exp $free_shape(shape_2)] +[visit_exp shape_2] +[visit_id shape_2] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{shape_1#1 : shape, shape_2#1 : shape, shape_1 : shape, shape_2 : shape, vcvtop : vcvtop__(shape_2, shape_1)}(`VCVTOP`_instr{shape_1#1, shape_2#1}(shape_1, shape_2, vcvtop)) = $free_shape(shape_1) +++ $free_shape(shape_2) +[check_dims] shape shape#263 +[visit_exp `VSPLAT`_instr{shape#263}(shape)] +[visit_exp shape#263] +[visit_id shape#263] +[visit_exp (shape)] +[visit_exp shape] +[visit_id shape] +[visit_exp $free_shape(shape)] +[visit_exp shape] +[visit_id shape] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{shape#263 : shape, shape : shape}(`VSPLAT`_instr{shape#263}(shape)) = $free_shape(shape) +[check_dims] laneidx laneidx#1 shape shape#265 sx sx?#1 +[visit_exp `VEXTRACT_LANE`_instr{shape#265, `sx?#1`, laneidx#1}(shape, sx?{sx <- `sx?`}, laneidx)] +[visit_exp shape#265] +[visit_id shape#265] +[visit_exp `sx?#1`] +[visit_id sx?#1] +[visit_exp laneidx#1] +[visit_id laneidx#1] +[visit_exp (shape, sx?{sx <- `sx?`}, laneidx)] +[visit_exp shape] +[visit_id shape] +[visit_exp sx?{sx <- `sx?`}] +[scope_enter sx] +[visit_exp sx] +[visit_id sx] not free +[visit_id sx] not free +[scope_exit sx] +[visit_exp `sx?`] +[visit_id sx?] no dims +[visit_id sx?] +[visit_exp laneidx] +[visit_id laneidx] +[visit_exp $free_shape(shape)] +[visit_exp shape] +[visit_id shape] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{shape#265 : shape, `sx?#1` : sx?, laneidx#1 : laneidx, shape : shape, `sx?` : sx?, laneidx : laneidx}(`VEXTRACT_LANE`_instr{shape#265, `sx?#1`, laneidx#1}(shape, sx?{sx <- `sx?`}, laneidx)) = $free_shape(shape) +[check_dims] laneidx laneidx#3 shape shape#267 +[visit_exp `VREPLACE_LANE`_instr{shape#267, laneidx#3}(shape, laneidx)] +[visit_exp shape#267] +[visit_id shape#267] +[visit_exp laneidx#3] +[visit_id laneidx#3] +[visit_exp (shape, laneidx)] +[visit_exp shape] +[visit_id shape] +[visit_exp laneidx] +[visit_id laneidx] +[visit_exp $free_shape(shape)] +[visit_exp shape] +[visit_id shape] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{shape#267 : shape, laneidx#3 : laneidx, shape : shape, laneidx : laneidx}(`VREPLACE_LANE`_instr{shape#267, laneidx#3}(shape, laneidx)) = $free_shape(shape) +[check_dims] heaptype heaptype#373 +[visit_exp `REF.NULL`_instr{heaptype#373}(heaptype)] +[visit_exp heaptype#373] +[visit_id heaptype#373] +[visit_exp (heaptype)] +[visit_exp heaptype] +[visit_id heaptype] +[visit_exp $free_heaptype(heaptype)] +[visit_exp heaptype] +[visit_id heaptype] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{heaptype#373 : heaptype, heaptype : heaptype}(`REF.NULL`_instr{heaptype#373}(heaptype)) = $free_heaptype(heaptype) +[check_dims] dataidx*#24 elemidx*#24 funcidx*#24 globalidx*#24 labelidx*#26 localidx*#24 memidx*#24 tableidx*#24 typeidx*#24 +[visit_exp `REF.IS_NULL`_instr] +[visit_exp ()] +[visit_exp {`TYPES`{`typeidx*#24`} [], `FUNCS`{`funcidx*#24`} [], `GLOBALS`{`globalidx*#24`} [], `TABLES`{`tableidx*#24`} [], `MEMS`{`memidx*#24`} [], `ELEMS`{`elemidx*#24`} [], `DATAS`{`dataidx*#24`} [], `LOCALS`{`localidx*#24`} [], `LABELS`{`labelidx*#26`} []}] +[visit_exp `typeidx*#24`] +[visit_id typeidx*#24] +[visit_exp []] +[visit_exp `funcidx*#24`] +[visit_id funcidx*#24] +[visit_exp []] +[visit_exp `globalidx*#24`] +[visit_id globalidx*#24] +[visit_exp []] +[visit_exp `tableidx*#24`] +[visit_id tableidx*#24] +[visit_exp []] +[visit_exp `memidx*#24`] +[visit_id memidx*#24] +[visit_exp []] +[visit_exp `elemidx*#24`] +[visit_id elemidx*#24] +[visit_exp []] +[visit_exp `dataidx*#24`] +[visit_id dataidx*#24] +[visit_exp []] +[visit_exp `localidx*#24`] +[visit_id localidx*#24] +[visit_exp []] +[visit_exp `labelidx*#26`] +[visit_id labelidx*#26] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{`typeidx*#24` : typeidx*, `funcidx*#24` : funcidx*, `globalidx*#24` : globalidx*, `tableidx*#24` : tableidx*, `memidx*#24` : memidx*, `elemidx*#24` : elemidx*, `dataidx*#24` : dataidx*, `localidx*#24` : localidx*, `labelidx*#26` : labelidx*}(`REF.IS_NULL`_instr) = {`TYPES`{`typeidx*#24`} [], `FUNCS`{`funcidx*#24`} [], `GLOBALS`{`globalidx*#24`} [], `TABLES`{`tableidx*#24`} [], `MEMS`{`memidx*#24`} [], `ELEMS`{`elemidx*#24`} [], `DATAS`{`dataidx*#24`} [], `LOCALS`{`localidx*#24`} [], `LABELS`{`labelidx*#26`} []} +[check_dims] dataidx*#25 elemidx*#25 funcidx*#25 globalidx*#25 labelidx*#27 localidx*#25 memidx*#25 tableidx*#25 typeidx*#25 +[visit_exp `REF.AS_NON_NULL`_instr] +[visit_exp ()] +[visit_exp {`TYPES`{`typeidx*#25`} [], `FUNCS`{`funcidx*#25`} [], `GLOBALS`{`globalidx*#25`} [], `TABLES`{`tableidx*#25`} [], `MEMS`{`memidx*#25`} [], `ELEMS`{`elemidx*#25`} [], `DATAS`{`dataidx*#25`} [], `LOCALS`{`localidx*#25`} [], `LABELS`{`labelidx*#27`} []}] +[visit_exp `typeidx*#25`] +[visit_id typeidx*#25] +[visit_exp []] +[visit_exp `funcidx*#25`] +[visit_id funcidx*#25] +[visit_exp []] +[visit_exp `globalidx*#25`] +[visit_id globalidx*#25] +[visit_exp []] +[visit_exp `tableidx*#25`] +[visit_id tableidx*#25] +[visit_exp []] +[visit_exp `memidx*#25`] +[visit_id memidx*#25] +[visit_exp []] +[visit_exp `elemidx*#25`] +[visit_id elemidx*#25] +[visit_exp []] +[visit_exp `dataidx*#25`] +[visit_id dataidx*#25] +[visit_exp []] +[visit_exp `localidx*#25`] +[visit_id localidx*#25] +[visit_exp []] +[visit_exp `labelidx*#27`] +[visit_id labelidx*#27] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{`typeidx*#25` : typeidx*, `funcidx*#25` : funcidx*, `globalidx*#25` : globalidx*, `tableidx*#25` : tableidx*, `memidx*#25` : memidx*, `elemidx*#25` : elemidx*, `dataidx*#25` : dataidx*, `localidx*#25` : localidx*, `labelidx*#27` : labelidx*}(`REF.AS_NON_NULL`_instr) = {`TYPES`{`typeidx*#25`} [], `FUNCS`{`funcidx*#25`} [], `GLOBALS`{`globalidx*#25`} [], `TABLES`{`tableidx*#25`} [], `MEMS`{`memidx*#25`} [], `ELEMS`{`elemidx*#25`} [], `DATAS`{`dataidx*#25`} [], `LOCALS`{`localidx*#25`} [], `LABELS`{`labelidx*#27`} []} +[check_dims] dataidx*#26 elemidx*#26 funcidx*#26 globalidx*#26 labelidx*#28 localidx*#26 memidx*#26 tableidx*#26 typeidx*#26 +[visit_exp `REF.EQ`_instr] +[visit_exp ()] +[visit_exp {`TYPES`{`typeidx*#26`} [], `FUNCS`{`funcidx*#26`} [], `GLOBALS`{`globalidx*#26`} [], `TABLES`{`tableidx*#26`} [], `MEMS`{`memidx*#26`} [], `ELEMS`{`elemidx*#26`} [], `DATAS`{`dataidx*#26`} [], `LOCALS`{`localidx*#26`} [], `LABELS`{`labelidx*#28`} []}] +[visit_exp `typeidx*#26`] +[visit_id typeidx*#26] +[visit_exp []] +[visit_exp `funcidx*#26`] +[visit_id funcidx*#26] +[visit_exp []] +[visit_exp `globalidx*#26`] +[visit_id globalidx*#26] +[visit_exp []] +[visit_exp `tableidx*#26`] +[visit_id tableidx*#26] +[visit_exp []] +[visit_exp `memidx*#26`] +[visit_id memidx*#26] +[visit_exp []] +[visit_exp `elemidx*#26`] +[visit_id elemidx*#26] +[visit_exp []] +[visit_exp `dataidx*#26`] +[visit_id dataidx*#26] +[visit_exp []] +[visit_exp `localidx*#26`] +[visit_id localidx*#26] +[visit_exp []] +[visit_exp `labelidx*#28`] +[visit_id labelidx*#28] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{`typeidx*#26` : typeidx*, `funcidx*#26` : funcidx*, `globalidx*#26` : globalidx*, `tableidx*#26` : tableidx*, `memidx*#26` : memidx*, `elemidx*#26` : elemidx*, `dataidx*#26` : dataidx*, `localidx*#26` : localidx*, `labelidx*#28` : labelidx*}(`REF.EQ`_instr) = {`TYPES`{`typeidx*#26`} [], `FUNCS`{`funcidx*#26`} [], `GLOBALS`{`globalidx*#26`} [], `TABLES`{`tableidx*#26`} [], `MEMS`{`memidx*#26`} [], `ELEMS`{`elemidx*#26`} [], `DATAS`{`dataidx*#26`} [], `LOCALS`{`localidx*#26`} [], `LABELS`{`labelidx*#28`} []} +[check_dims] reftype reftype#131 +[visit_exp `REF.TEST`_instr{reftype#131}(reftype)] +[visit_exp reftype#131] +[visit_id reftype#131] +[visit_exp (reftype)] +[visit_exp reftype] +[visit_id reftype] +[visit_exp $free_reftype(reftype)] +[visit_exp reftype] +[visit_id reftype] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{reftype#131 : reftype, reftype : reftype}(`REF.TEST`_instr{reftype#131}(reftype)) = $free_reftype(reftype) +[check_dims] reftype reftype#133 +[visit_exp `REF.CAST`_instr{reftype#133}(reftype)] +[visit_exp reftype#133] +[visit_id reftype#133] +[visit_exp (reftype)] +[visit_exp reftype] +[visit_id reftype] +[visit_exp $free_reftype(reftype)] +[visit_exp reftype] +[visit_id reftype] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{reftype#133 : reftype, reftype : reftype}(`REF.CAST`_instr{reftype#133}(reftype)) = $free_reftype(reftype) +[check_dims] funcidx funcidx#9 +[visit_exp `REF.FUNC`_instr{funcidx#9}(funcidx)] +[visit_exp funcidx#9] +[visit_id funcidx#9] +[visit_exp (funcidx)] +[visit_exp funcidx] +[visit_id funcidx] +[visit_exp $free_funcidx(funcidx)] +[visit_exp funcidx] +[visit_id funcidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{funcidx#9 : funcidx, funcidx : funcidx}(`REF.FUNC`_instr{funcidx#9}(funcidx)) = $free_funcidx(funcidx) +[check_dims] dataidx*#27 elemidx*#27 funcidx*#27 globalidx*#27 labelidx*#29 localidx*#27 memidx*#27 tableidx*#27 typeidx*#27 +[visit_exp `REF.I31`_instr] +[visit_exp ()] +[visit_exp {`TYPES`{`typeidx*#27`} [], `FUNCS`{`funcidx*#27`} [], `GLOBALS`{`globalidx*#27`} [], `TABLES`{`tableidx*#27`} [], `MEMS`{`memidx*#27`} [], `ELEMS`{`elemidx*#27`} [], `DATAS`{`dataidx*#27`} [], `LOCALS`{`localidx*#27`} [], `LABELS`{`labelidx*#29`} []}] +[visit_exp `typeidx*#27`] +[visit_id typeidx*#27] +[visit_exp []] +[visit_exp `funcidx*#27`] +[visit_id funcidx*#27] +[visit_exp []] +[visit_exp `globalidx*#27`] +[visit_id globalidx*#27] +[visit_exp []] +[visit_exp `tableidx*#27`] +[visit_id tableidx*#27] +[visit_exp []] +[visit_exp `memidx*#27`] +[visit_id memidx*#27] +[visit_exp []] +[visit_exp `elemidx*#27`] +[visit_id elemidx*#27] +[visit_exp []] +[visit_exp `dataidx*#27`] +[visit_id dataidx*#27] +[visit_exp []] +[visit_exp `localidx*#27`] +[visit_id localidx*#27] +[visit_exp []] +[visit_exp `labelidx*#29`] +[visit_id labelidx*#29] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{`typeidx*#27` : typeidx*, `funcidx*#27` : funcidx*, `globalidx*#27` : globalidx*, `tableidx*#27` : tableidx*, `memidx*#27` : memidx*, `elemidx*#27` : elemidx*, `dataidx*#27` : dataidx*, `localidx*#27` : localidx*, `labelidx*#29` : labelidx*}(`REF.I31`_instr) = {`TYPES`{`typeidx*#27`} [], `FUNCS`{`funcidx*#27`} [], `GLOBALS`{`globalidx*#27`} [], `TABLES`{`tableidx*#27`} [], `MEMS`{`memidx*#27`} [], `ELEMS`{`elemidx*#27`} [], `DATAS`{`dataidx*#27`} [], `LOCALS`{`localidx*#27`} [], `LABELS`{`labelidx*#29`} []} +[check_dims] dataidx*#28 elemidx*#28 funcidx*#28 globalidx*#28 labelidx*#30 localidx*#28 memidx*#28 sx sx#3 tableidx*#28 typeidx*#28 +[visit_exp `I31.GET`_instr{sx#3}(sx)] +[visit_exp sx#3] +[visit_id sx#3] +[visit_exp (sx)] +[visit_exp sx] +[visit_id sx] +[visit_exp {`TYPES`{`typeidx*#28`} [], `FUNCS`{`funcidx*#28`} [], `GLOBALS`{`globalidx*#28`} [], `TABLES`{`tableidx*#28`} [], `MEMS`{`memidx*#28`} [], `ELEMS`{`elemidx*#28`} [], `DATAS`{`dataidx*#28`} [], `LOCALS`{`localidx*#28`} [], `LABELS`{`labelidx*#30`} []}] +[visit_exp `typeidx*#28`] +[visit_id typeidx*#28] +[visit_exp []] +[visit_exp `funcidx*#28`] +[visit_id funcidx*#28] +[visit_exp []] +[visit_exp `globalidx*#28`] +[visit_id globalidx*#28] +[visit_exp []] +[visit_exp `tableidx*#28`] +[visit_id tableidx*#28] +[visit_exp []] +[visit_exp `memidx*#28`] +[visit_id memidx*#28] +[visit_exp []] +[visit_exp `elemidx*#28`] +[visit_id elemidx*#28] +[visit_exp []] +[visit_exp `dataidx*#28`] +[visit_id dataidx*#28] +[visit_exp []] +[visit_exp `localidx*#28`] +[visit_id localidx*#28] +[visit_exp []] +[visit_exp `labelidx*#30`] +[visit_id labelidx*#30] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{sx#3 : sx, sx : sx, `typeidx*#28` : typeidx*, `funcidx*#28` : funcidx*, `globalidx*#28` : globalidx*, `tableidx*#28` : tableidx*, `memidx*#28` : memidx*, `elemidx*#28` : elemidx*, `dataidx*#28` : dataidx*, `localidx*#28` : localidx*, `labelidx*#30` : labelidx*}(`I31.GET`_instr{sx#3}(sx)) = {`TYPES`{`typeidx*#28`} [], `FUNCS`{`funcidx*#28`} [], `GLOBALS`{`globalidx*#28`} [], `TABLES`{`tableidx*#28`} [], `MEMS`{`memidx*#28`} [], `ELEMS`{`elemidx*#28`} [], `DATAS`{`dataidx*#28`} [], `LOCALS`{`localidx*#28`} [], `LABELS`{`labelidx*#30`} []} +[check_dims] dataidx*#29 elemidx*#29 funcidx*#29 globalidx*#29 labelidx*#31 localidx*#29 memidx*#29 tableidx*#29 typeidx typeidx#29 typeidx*#29 +[visit_exp `STRUCT.NEW`_instr{typeidx#29}(typeidx)] +[visit_exp typeidx#29] +[visit_id typeidx#29] +[visit_exp (typeidx)] +[visit_exp typeidx] +[visit_id typeidx] +[visit_exp {`TYPES`{`typeidx*#29`} [], `FUNCS`{`funcidx*#29`} [], `GLOBALS`{`globalidx*#29`} [], `TABLES`{`tableidx*#29`} [], `MEMS`{`memidx*#29`} [], `ELEMS`{`elemidx*#29`} [], `DATAS`{`dataidx*#29`} [], `LOCALS`{`localidx*#29`} [], `LABELS`{`labelidx*#31`} []}] +[visit_exp `typeidx*#29`] +[visit_id typeidx*#29] +[visit_exp []] +[visit_exp `funcidx*#29`] +[visit_id funcidx*#29] +[visit_exp []] +[visit_exp `globalidx*#29`] +[visit_id globalidx*#29] +[visit_exp []] +[visit_exp `tableidx*#29`] +[visit_id tableidx*#29] +[visit_exp []] +[visit_exp `memidx*#29`] +[visit_id memidx*#29] +[visit_exp []] +[visit_exp `elemidx*#29`] +[visit_id elemidx*#29] +[visit_exp []] +[visit_exp `dataidx*#29`] +[visit_id dataidx*#29] +[visit_exp []] +[visit_exp `localidx*#29`] +[visit_id localidx*#29] +[visit_exp []] +[visit_exp `labelidx*#31`] +[visit_id labelidx*#31] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{typeidx#29 : typeidx, typeidx : typeidx, `typeidx*#29` : typeidx*, `funcidx*#29` : funcidx*, `globalidx*#29` : globalidx*, `tableidx*#29` : tableidx*, `memidx*#29` : memidx*, `elemidx*#29` : elemidx*, `dataidx*#29` : dataidx*, `localidx*#29` : localidx*, `labelidx*#31` : labelidx*}(`STRUCT.NEW`_instr{typeidx#29}(typeidx)) = {`TYPES`{`typeidx*#29`} [], `FUNCS`{`funcidx*#29`} [], `GLOBALS`{`globalidx*#29`} [], `TABLES`{`tableidx*#29`} [], `MEMS`{`memidx*#29`} [], `ELEMS`{`elemidx*#29`} [], `DATAS`{`dataidx*#29`} [], `LOCALS`{`localidx*#29`} [], `LABELS`{`labelidx*#31`} []} +[check_dims] typeidx typeidx#31 +[visit_exp `STRUCT.NEW_DEFAULT`_instr{typeidx#31}(typeidx)] +[visit_exp typeidx#31] +[visit_id typeidx#31] +[visit_exp (typeidx)] +[visit_exp typeidx] +[visit_id typeidx] +[visit_exp $free_typeidx(typeidx)] +[visit_exp typeidx] +[visit_id typeidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{typeidx#31 : typeidx, typeidx : typeidx}(`STRUCT.NEW_DEFAULT`_instr{typeidx#31}(typeidx)) = $free_typeidx(typeidx) +[check_dims] sx sx?#3 typeidx typeidx#33 u32 u32#2 +[visit_exp `STRUCT.GET`_instr{`sx?#3`, typeidx#33, u32#2}(sx?{sx <- `sx?`}, typeidx, u32)] +[visit_exp `sx?#3`] +[visit_id sx?#3] +[visit_exp typeidx#33] +[visit_id typeidx#33] +[visit_exp u32#2] +[visit_id u32#2] +[visit_exp (sx?{sx <- `sx?`}, typeidx, u32)] +[visit_exp sx?{sx <- `sx?`}] +[scope_enter sx] +[visit_exp sx] +[visit_id sx] not free +[visit_id sx] not free +[scope_exit sx] +[visit_exp `sx?`] +[visit_id sx?] no dims +[visit_id sx?] +[visit_exp typeidx] +[visit_id typeidx] +[visit_exp u32] +[visit_id u32] +[visit_exp $free_typeidx(typeidx)] +[visit_exp typeidx] +[visit_id typeidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{`sx?#3` : sx?, typeidx#33 : typeidx, u32#2 : u32, `sx?` : sx?, typeidx : typeidx, u32 : u32}(`STRUCT.GET`_instr{`sx?#3`, typeidx#33, u32#2}(sx?{sx <- `sx?`}, typeidx, u32)) = $free_typeidx(typeidx) +[check_dims] typeidx typeidx#35 u32 u32#4 +[visit_exp `STRUCT.SET`_instr{typeidx#35, u32#4}(typeidx, u32)] +[visit_exp typeidx#35] +[visit_id typeidx#35] +[visit_exp u32#4] +[visit_id u32#4] +[visit_exp (typeidx, u32)] +[visit_exp typeidx] +[visit_id typeidx] +[visit_exp u32] +[visit_id u32] +[visit_exp $free_typeidx(typeidx)] +[visit_exp typeidx] +[visit_id typeidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{typeidx#35 : typeidx, u32#4 : u32, typeidx : typeidx, u32 : u32}(`STRUCT.SET`_instr{typeidx#35, u32#4}(typeidx, u32)) = $free_typeidx(typeidx) +[check_dims] typeidx typeidx#37 +[visit_exp `ARRAY.NEW`_instr{typeidx#37}(typeidx)] +[visit_exp typeidx#37] +[visit_id typeidx#37] +[visit_exp (typeidx)] +[visit_exp typeidx] +[visit_id typeidx] +[visit_exp $free_typeidx(typeidx)] +[visit_exp typeidx] +[visit_id typeidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{typeidx#37 : typeidx, typeidx : typeidx}(`ARRAY.NEW`_instr{typeidx#37}(typeidx)) = $free_typeidx(typeidx) +[check_dims] typeidx typeidx#39 +[visit_exp `ARRAY.NEW_DEFAULT`_instr{typeidx#39}(typeidx)] +[visit_exp typeidx#39] +[visit_id typeidx#39] +[visit_exp (typeidx)] +[visit_exp typeidx] +[visit_id typeidx] +[visit_exp $free_typeidx(typeidx)] +[visit_exp typeidx] +[visit_id typeidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{typeidx#39 : typeidx, typeidx : typeidx}(`ARRAY.NEW_DEFAULT`_instr{typeidx#39}(typeidx)) = $free_typeidx(typeidx) +[check_dims] typeidx typeidx#41 u32 u32#6 +[visit_exp `ARRAY.NEW_FIXED`_instr{typeidx#41, u32#6}(typeidx, u32)] +[visit_exp typeidx#41] +[visit_id typeidx#41] +[visit_exp u32#6] +[visit_id u32#6] +[visit_exp (typeidx, u32)] +[visit_exp typeidx] +[visit_id typeidx] +[visit_exp u32] +[visit_id u32] +[visit_exp $free_typeidx(typeidx)] +[visit_exp typeidx] +[visit_id typeidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{typeidx#41 : typeidx, u32#6 : u32, typeidx : typeidx, u32 : u32}(`ARRAY.NEW_FIXED`_instr{typeidx#41, u32#6}(typeidx, u32)) = $free_typeidx(typeidx) +[check_dims] dataidx dataidx#1 typeidx typeidx#43 +[visit_exp `ARRAY.NEW_DATA`_instr{typeidx#43, dataidx#1}(typeidx, dataidx)] +[visit_exp typeidx#43] +[visit_id typeidx#43] +[visit_exp dataidx#1] +[visit_id dataidx#1] +[visit_exp (typeidx, dataidx)] +[visit_exp typeidx] +[visit_id typeidx] +[visit_exp dataidx] +[visit_id dataidx] +[visit_exp $free_typeidx(typeidx) +++ $free_dataidx(dataidx)] +[visit_exp $free_typeidx(typeidx)] +[visit_exp typeidx] +[visit_id typeidx] not free +[visit_exp $free_dataidx(dataidx)] +[visit_exp dataidx] +[visit_id dataidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{typeidx#43 : typeidx, dataidx#1 : dataidx, typeidx : typeidx, dataidx : dataidx}(`ARRAY.NEW_DATA`_instr{typeidx#43, dataidx#1}(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) +[check_dims] elemidx elemidx#1 typeidx typeidx#45 +[visit_exp `ARRAY.NEW_ELEM`_instr{typeidx#45, elemidx#1}(typeidx, elemidx)] +[visit_exp typeidx#45] +[visit_id typeidx#45] +[visit_exp elemidx#1] +[visit_id elemidx#1] +[visit_exp (typeidx, elemidx)] +[visit_exp typeidx] +[visit_id typeidx] +[visit_exp elemidx] +[visit_id elemidx] +[visit_exp $free_typeidx(typeidx) +++ $free_elemidx(elemidx)] +[visit_exp $free_typeidx(typeidx)] +[visit_exp typeidx] +[visit_id typeidx] not free +[visit_exp $free_elemidx(elemidx)] +[visit_exp elemidx] +[visit_id elemidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{typeidx#45 : typeidx, elemidx#1 : elemidx, typeidx : typeidx, elemidx : elemidx}(`ARRAY.NEW_ELEM`_instr{typeidx#45, elemidx#1}(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) +[check_dims] sx sx?#5 typeidx typeidx#47 +[visit_exp `ARRAY.GET`_instr{`sx?#5`, typeidx#47}(sx?{sx <- `sx?`}, typeidx)] +[visit_exp `sx?#5`] +[visit_id sx?#5] +[visit_exp typeidx#47] +[visit_id typeidx#47] +[visit_exp (sx?{sx <- `sx?`}, typeidx)] +[visit_exp sx?{sx <- `sx?`}] +[scope_enter sx] +[visit_exp sx] +[visit_id sx] not free +[visit_id sx] not free +[scope_exit sx] +[visit_exp `sx?`] +[visit_id sx?] no dims +[visit_id sx?] +[visit_exp typeidx] +[visit_id typeidx] +[visit_exp $free_typeidx(typeidx)] +[visit_exp typeidx] +[visit_id typeidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{`sx?#5` : sx?, typeidx#47 : typeidx, `sx?` : sx?, typeidx : typeidx}(`ARRAY.GET`_instr{`sx?#5`, typeidx#47}(sx?{sx <- `sx?`}, typeidx)) = $free_typeidx(typeidx) +[check_dims] typeidx typeidx#49 +[visit_exp `ARRAY.SET`_instr{typeidx#49}(typeidx)] +[visit_exp typeidx#49] +[visit_id typeidx#49] +[visit_exp (typeidx)] +[visit_exp typeidx] +[visit_id typeidx] +[visit_exp $free_typeidx(typeidx)] +[visit_exp typeidx] +[visit_id typeidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{typeidx#49 : typeidx, typeidx : typeidx}(`ARRAY.SET`_instr{typeidx#49}(typeidx)) = $free_typeidx(typeidx) +[check_dims] dataidx*#30 elemidx*#30 funcidx*#30 globalidx*#30 labelidx*#32 localidx*#30 memidx*#30 tableidx*#30 typeidx*#30 +[visit_exp `ARRAY.LEN`_instr] +[visit_exp ()] +[visit_exp {`TYPES`{`typeidx*#30`} [], `FUNCS`{`funcidx*#30`} [], `GLOBALS`{`globalidx*#30`} [], `TABLES`{`tableidx*#30`} [], `MEMS`{`memidx*#30`} [], `ELEMS`{`elemidx*#30`} [], `DATAS`{`dataidx*#30`} [], `LOCALS`{`localidx*#30`} [], `LABELS`{`labelidx*#32`} []}] +[visit_exp `typeidx*#30`] +[visit_id typeidx*#30] +[visit_exp []] +[visit_exp `funcidx*#30`] +[visit_id funcidx*#30] +[visit_exp []] +[visit_exp `globalidx*#30`] +[visit_id globalidx*#30] +[visit_exp []] +[visit_exp `tableidx*#30`] +[visit_id tableidx*#30] +[visit_exp []] +[visit_exp `memidx*#30`] +[visit_id memidx*#30] +[visit_exp []] +[visit_exp `elemidx*#30`] +[visit_id elemidx*#30] +[visit_exp []] +[visit_exp `dataidx*#30`] +[visit_id dataidx*#30] +[visit_exp []] +[visit_exp `localidx*#30`] +[visit_id localidx*#30] +[visit_exp []] +[visit_exp `labelidx*#32`] +[visit_id labelidx*#32] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{`typeidx*#30` : typeidx*, `funcidx*#30` : funcidx*, `globalidx*#30` : globalidx*, `tableidx*#30` : tableidx*, `memidx*#30` : memidx*, `elemidx*#30` : elemidx*, `dataidx*#30` : dataidx*, `localidx*#30` : localidx*, `labelidx*#32` : labelidx*}(`ARRAY.LEN`_instr) = {`TYPES`{`typeidx*#30`} [], `FUNCS`{`funcidx*#30`} [], `GLOBALS`{`globalidx*#30`} [], `TABLES`{`tableidx*#30`} [], `MEMS`{`memidx*#30`} [], `ELEMS`{`elemidx*#30`} [], `DATAS`{`dataidx*#30`} [], `LOCALS`{`localidx*#30`} [], `LABELS`{`labelidx*#32`} []} +[check_dims] typeidx typeidx#51 +[visit_exp `ARRAY.FILL`_instr{typeidx#51}(typeidx)] +[visit_exp typeidx#51] +[visit_id typeidx#51] +[visit_exp (typeidx)] +[visit_exp typeidx] +[visit_id typeidx] +[visit_exp $free_typeidx(typeidx)] +[visit_exp typeidx] +[visit_id typeidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{typeidx#51 : typeidx, typeidx : typeidx}(`ARRAY.FILL`_instr{typeidx#51}(typeidx)) = $free_typeidx(typeidx) +[check_dims] typeidx#53 typeidx_1 typeidx_2 +[visit_exp `ARRAY.COPY`_instr{typeidx#53}(typeidx_1, typeidx_2)] +[visit_exp typeidx#53] +[visit_id typeidx#53] +[visit_exp (typeidx_1, typeidx_2)] +[visit_exp typeidx_1] +[visit_id typeidx_1] +[visit_exp typeidx_2] +[visit_id typeidx_2] +[visit_exp $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2)] +[visit_exp $free_typeidx(typeidx_1)] +[visit_exp typeidx_1] +[visit_id typeidx_1] not free +[visit_exp $free_typeidx(typeidx_2)] +[visit_exp typeidx_2] +[visit_id typeidx_2] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{typeidx#53 : typeidx, typeidx_1 : typeidx, typeidx_2 : typeidx}(`ARRAY.COPY`_instr{typeidx#53}(typeidx_1, typeidx_2)) = $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2) +[check_dims] dataidx dataidx#3 typeidx typeidx#56 +[visit_exp `ARRAY.INIT_DATA`_instr{typeidx#56, dataidx#3}(typeidx, dataidx)] +[visit_exp typeidx#56] +[visit_id typeidx#56] +[visit_exp dataidx#3] +[visit_id dataidx#3] +[visit_exp (typeidx, dataidx)] +[visit_exp typeidx] +[visit_id typeidx] +[visit_exp dataidx] +[visit_id dataidx] +[visit_exp $free_typeidx(typeidx) +++ $free_dataidx(dataidx)] +[visit_exp $free_typeidx(typeidx)] +[visit_exp typeidx] +[visit_id typeidx] not free +[visit_exp $free_dataidx(dataidx)] +[visit_exp dataidx] +[visit_id dataidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{typeidx#56 : typeidx, dataidx#3 : dataidx, typeidx : typeidx, dataidx : dataidx}(`ARRAY.INIT_DATA`_instr{typeidx#56, dataidx#3}(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) +[check_dims] elemidx elemidx#3 typeidx typeidx#58 +[visit_exp `ARRAY.INIT_ELEM`_instr{typeidx#58, elemidx#3}(typeidx, elemidx)] +[visit_exp typeidx#58] +[visit_id typeidx#58] +[visit_exp elemidx#3] +[visit_id elemidx#3] +[visit_exp (typeidx, elemidx)] +[visit_exp typeidx] +[visit_id typeidx] +[visit_exp elemidx] +[visit_id elemidx] +[visit_exp $free_typeidx(typeidx) +++ $free_elemidx(elemidx)] +[visit_exp $free_typeidx(typeidx)] +[visit_exp typeidx] +[visit_id typeidx] not free +[visit_exp $free_elemidx(elemidx)] +[visit_exp elemidx] +[visit_id elemidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{typeidx#58 : typeidx, elemidx#3 : elemidx, typeidx : typeidx, elemidx : elemidx}(`ARRAY.INIT_ELEM`_instr{typeidx#58, elemidx#3}(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) +[check_dims] dataidx*#31 elemidx*#31 funcidx*#31 globalidx*#31 labelidx*#33 localidx*#31 memidx*#31 tableidx*#31 typeidx*#31 +[visit_exp `EXTERN.CONVERT_ANY`_instr] +[visit_exp ()] +[visit_exp {`TYPES`{`typeidx*#31`} [], `FUNCS`{`funcidx*#31`} [], `GLOBALS`{`globalidx*#31`} [], `TABLES`{`tableidx*#31`} [], `MEMS`{`memidx*#31`} [], `ELEMS`{`elemidx*#31`} [], `DATAS`{`dataidx*#31`} [], `LOCALS`{`localidx*#31`} [], `LABELS`{`labelidx*#33`} []}] +[visit_exp `typeidx*#31`] +[visit_id typeidx*#31] +[visit_exp []] +[visit_exp `funcidx*#31`] +[visit_id funcidx*#31] +[visit_exp []] +[visit_exp `globalidx*#31`] +[visit_id globalidx*#31] +[visit_exp []] +[visit_exp `tableidx*#31`] +[visit_id tableidx*#31] +[visit_exp []] +[visit_exp `memidx*#31`] +[visit_id memidx*#31] +[visit_exp []] +[visit_exp `elemidx*#31`] +[visit_id elemidx*#31] +[visit_exp []] +[visit_exp `dataidx*#31`] +[visit_id dataidx*#31] +[visit_exp []] +[visit_exp `localidx*#31`] +[visit_id localidx*#31] +[visit_exp []] +[visit_exp `labelidx*#33`] +[visit_id labelidx*#33] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{`typeidx*#31` : typeidx*, `funcidx*#31` : funcidx*, `globalidx*#31` : globalidx*, `tableidx*#31` : tableidx*, `memidx*#31` : memidx*, `elemidx*#31` : elemidx*, `dataidx*#31` : dataidx*, `localidx*#31` : localidx*, `labelidx*#33` : labelidx*}(`EXTERN.CONVERT_ANY`_instr) = {`TYPES`{`typeidx*#31`} [], `FUNCS`{`funcidx*#31`} [], `GLOBALS`{`globalidx*#31`} [], `TABLES`{`tableidx*#31`} [], `MEMS`{`memidx*#31`} [], `ELEMS`{`elemidx*#31`} [], `DATAS`{`dataidx*#31`} [], `LOCALS`{`localidx*#31`} [], `LABELS`{`labelidx*#33`} []} +[check_dims] dataidx*#32 elemidx*#32 funcidx*#32 globalidx*#32 labelidx*#34 localidx*#32 memidx*#32 tableidx*#32 typeidx*#32 +[visit_exp `ANY.CONVERT_EXTERN`_instr] +[visit_exp ()] +[visit_exp {`TYPES`{`typeidx*#32`} [], `FUNCS`{`funcidx*#32`} [], `GLOBALS`{`globalidx*#32`} [], `TABLES`{`tableidx*#32`} [], `MEMS`{`memidx*#32`} [], `ELEMS`{`elemidx*#32`} [], `DATAS`{`dataidx*#32`} [], `LOCALS`{`localidx*#32`} [], `LABELS`{`labelidx*#34`} []}] +[visit_exp `typeidx*#32`] +[visit_id typeidx*#32] +[visit_exp []] +[visit_exp `funcidx*#32`] +[visit_id funcidx*#32] +[visit_exp []] +[visit_exp `globalidx*#32`] +[visit_id globalidx*#32] +[visit_exp []] +[visit_exp `tableidx*#32`] +[visit_id tableidx*#32] +[visit_exp []] +[visit_exp `memidx*#32`] +[visit_id memidx*#32] +[visit_exp []] +[visit_exp `elemidx*#32`] +[visit_id elemidx*#32] +[visit_exp []] +[visit_exp `dataidx*#32`] +[visit_id dataidx*#32] +[visit_exp []] +[visit_exp `localidx*#32`] +[visit_id localidx*#32] +[visit_exp []] +[visit_exp `labelidx*#34`] +[visit_id labelidx*#34] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{`typeidx*#32` : typeidx*, `funcidx*#32` : funcidx*, `globalidx*#32` : globalidx*, `tableidx*#32` : tableidx*, `memidx*#32` : memidx*, `elemidx*#32` : elemidx*, `dataidx*#32` : dataidx*, `localidx*#32` : localidx*, `labelidx*#34` : labelidx*}(`ANY.CONVERT_EXTERN`_instr) = {`TYPES`{`typeidx*#32`} [], `FUNCS`{`funcidx*#32`} [], `GLOBALS`{`globalidx*#32`} [], `TABLES`{`tableidx*#32`} [], `MEMS`{`memidx*#32`} [], `ELEMS`{`elemidx*#32`} [], `DATAS`{`dataidx*#32`} [], `LOCALS`{`localidx*#32`} [], `LABELS`{`labelidx*#34`} []} +[check_dims] localidx localidx#1 +[visit_exp `LOCAL.GET`_instr{localidx#1}(localidx)] +[visit_exp localidx#1] +[visit_id localidx#1] +[visit_exp (localidx)] +[visit_exp localidx] +[visit_id localidx] +[visit_exp $free_localidx(localidx)] +[visit_exp localidx] +[visit_id localidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{localidx#1 : localidx, localidx : localidx}(`LOCAL.GET`_instr{localidx#1}(localidx)) = $free_localidx(localidx) +[check_dims] localidx localidx#3 +[visit_exp `LOCAL.SET`_instr{localidx#3}(localidx)] +[visit_exp localidx#3] +[visit_id localidx#3] +[visit_exp (localidx)] +[visit_exp localidx] +[visit_id localidx] +[visit_exp $free_localidx(localidx)] +[visit_exp localidx] +[visit_id localidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{localidx#3 : localidx, localidx : localidx}(`LOCAL.SET`_instr{localidx#3}(localidx)) = $free_localidx(localidx) +[check_dims] localidx localidx#5 +[visit_exp `LOCAL.TEE`_instr{localidx#5}(localidx)] +[visit_exp localidx#5] +[visit_id localidx#5] +[visit_exp (localidx)] +[visit_exp localidx] +[visit_id localidx] +[visit_exp $free_localidx(localidx)] +[visit_exp localidx] +[visit_id localidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{localidx#5 : localidx, localidx : localidx}(`LOCAL.TEE`_instr{localidx#5}(localidx)) = $free_localidx(localidx) +[check_dims] globalidx globalidx#5 +[visit_exp `GLOBAL.GET`_instr{globalidx#5}(globalidx)] +[visit_exp globalidx#5] +[visit_id globalidx#5] +[visit_exp (globalidx)] +[visit_exp globalidx] +[visit_id globalidx] +[visit_exp $free_globalidx(globalidx)] +[visit_exp globalidx] +[visit_id globalidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{globalidx#5 : globalidx, globalidx : globalidx}(`GLOBAL.GET`_instr{globalidx#5}(globalidx)) = $free_globalidx(globalidx) +[check_dims] globalidx globalidx#7 +[visit_exp `GLOBAL.SET`_instr{globalidx#7}(globalidx)] +[visit_exp globalidx#7] +[visit_id globalidx#7] +[visit_exp (globalidx)] +[visit_exp globalidx] +[visit_id globalidx] +[visit_exp $free_globalidx(globalidx)] +[visit_exp globalidx] +[visit_id globalidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{globalidx#7 : globalidx, globalidx : globalidx}(`GLOBAL.SET`_instr{globalidx#7}(globalidx)) = $free_globalidx(globalidx) +[check_dims] tableidx tableidx#9 +[visit_exp `TABLE.GET`_instr{tableidx#9}(tableidx)] +[visit_exp tableidx#9] +[visit_id tableidx#9] +[visit_exp (tableidx)] +[visit_exp tableidx] +[visit_id tableidx] +[visit_exp $free_tableidx(tableidx)] +[visit_exp tableidx] +[visit_id tableidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{tableidx#9 : tableidx, tableidx : tableidx}(`TABLE.GET`_instr{tableidx#9}(tableidx)) = $free_tableidx(tableidx) +[check_dims] tableidx tableidx#11 +[visit_exp `TABLE.SET`_instr{tableidx#11}(tableidx)] +[visit_exp tableidx#11] +[visit_id tableidx#11] +[visit_exp (tableidx)] +[visit_exp tableidx] +[visit_id tableidx] +[visit_exp $free_tableidx(tableidx)] +[visit_exp tableidx] +[visit_id tableidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{tableidx#11 : tableidx, tableidx : tableidx}(`TABLE.SET`_instr{tableidx#11}(tableidx)) = $free_tableidx(tableidx) +[check_dims] tableidx tableidx#13 +[visit_exp `TABLE.SIZE`_instr{tableidx#13}(tableidx)] +[visit_exp tableidx#13] +[visit_id tableidx#13] +[visit_exp (tableidx)] +[visit_exp tableidx] +[visit_id tableidx] +[visit_exp $free_tableidx(tableidx)] +[visit_exp tableidx] +[visit_id tableidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{tableidx#13 : tableidx, tableidx : tableidx}(`TABLE.SIZE`_instr{tableidx#13}(tableidx)) = $free_tableidx(tableidx) +[check_dims] tableidx tableidx#15 +[visit_exp `TABLE.GROW`_instr{tableidx#15}(tableidx)] +[visit_exp tableidx#15] +[visit_id tableidx#15] +[visit_exp (tableidx)] +[visit_exp tableidx] +[visit_id tableidx] +[visit_exp $free_tableidx(tableidx)] +[visit_exp tableidx] +[visit_id tableidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{tableidx#15 : tableidx, tableidx : tableidx}(`TABLE.GROW`_instr{tableidx#15}(tableidx)) = $free_tableidx(tableidx) +[check_dims] tableidx tableidx#17 +[visit_exp `TABLE.FILL`_instr{tableidx#17}(tableidx)] +[visit_exp tableidx#17] +[visit_id tableidx#17] +[visit_exp (tableidx)] +[visit_exp tableidx] +[visit_id tableidx] +[visit_exp $free_tableidx(tableidx)] +[visit_exp tableidx] +[visit_id tableidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{tableidx#17 : tableidx, tableidx : tableidx}(`TABLE.FILL`_instr{tableidx#17}(tableidx)) = $free_tableidx(tableidx) +[check_dims] tableidx#19 tableidx_1 tableidx_2 +[visit_exp `TABLE.COPY`_instr{tableidx#19}(tableidx_1, tableidx_2)] +[visit_exp tableidx#19] +[visit_id tableidx#19] +[visit_exp (tableidx_1, tableidx_2)] +[visit_exp tableidx_1] +[visit_id tableidx_1] +[visit_exp tableidx_2] +[visit_id tableidx_2] +[visit_exp $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2)] +[visit_exp $free_tableidx(tableidx_1)] +[visit_exp tableidx_1] +[visit_id tableidx_1] not free +[visit_exp $free_tableidx(tableidx_2)] +[visit_exp tableidx_2] +[visit_id tableidx_2] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{tableidx#19 : tableidx, tableidx_1 : tableidx, tableidx_2 : tableidx}(`TABLE.COPY`_instr{tableidx#19}(tableidx_1, tableidx_2)) = $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2) +[check_dims] elemidx elemidx#5 tableidx tableidx#22 +[visit_exp `TABLE.INIT`_instr{tableidx#22, elemidx#5}(tableidx, elemidx)] +[visit_exp tableidx#22] +[visit_id tableidx#22] +[visit_exp elemidx#5] +[visit_id elemidx#5] +[visit_exp (tableidx, elemidx)] +[visit_exp tableidx] +[visit_id tableidx] +[visit_exp elemidx] +[visit_id elemidx] +[visit_exp $free_tableidx(tableidx) +++ $free_elemidx(elemidx)] +[visit_exp $free_tableidx(tableidx)] +[visit_exp tableidx] +[visit_id tableidx] not free +[visit_exp $free_elemidx(elemidx)] +[visit_exp elemidx] +[visit_id elemidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{tableidx#22 : tableidx, elemidx#5 : elemidx, tableidx : tableidx, elemidx : elemidx}(`TABLE.INIT`_instr{tableidx#22, elemidx#5}(tableidx, elemidx)) = $free_tableidx(tableidx) +++ $free_elemidx(elemidx) +[check_dims] elemidx elemidx#7 +[visit_exp `ELEM.DROP`_instr{elemidx#7}(elemidx)] +[visit_exp elemidx#7] +[visit_id elemidx#7] +[visit_exp (elemidx)] +[visit_exp elemidx] +[visit_id elemidx] +[visit_exp $free_elemidx(elemidx)] +[visit_exp elemidx] +[visit_id elemidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{elemidx#7 : elemidx, elemidx : elemidx}(`ELEM.DROP`_instr{elemidx#7}(elemidx)) = $free_elemidx(elemidx) +[check_dims] loadop memarg memarg#1 memidx memidx#5 numtype numtype?#1 +[visit_exp `LOAD`_instr{`numtype?#1`, memidx#5, memarg#1}(numtype, loadop?{loadop <- `loadop?`}, memidx, memarg)] +[visit_exp `numtype?#1`] +[visit_id numtype?#1] +[visit_exp memidx#5] +[visit_id memidx#5] +[visit_exp memarg#1] +[visit_id memarg#1] +[visit_exp (numtype, loadop?{loadop <- `loadop?`}, memidx, memarg)] +[visit_exp numtype] +[visit_id numtype] +[visit_exp loadop?{loadop <- `loadop?`}] +[scope_enter loadop] +[visit_exp loadop] +[visit_id loadop] not free +[visit_id loadop] not free +[scope_exit loadop] +[visit_exp `loadop?`] +[visit_id loadop?] no dims +[visit_id loadop?] +[visit_exp memidx] +[visit_id memidx] +[visit_exp memarg] +[visit_id memarg] +[visit_exp $free_numtype(numtype) +++ $free_memidx(memidx)] +[visit_exp $free_numtype(numtype)] +[visit_exp numtype] +[visit_id numtype] not free +[visit_exp $free_memidx(memidx)] +[visit_exp memidx] +[visit_id memidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{`numtype?#1` : numtype?, memidx#5 : memidx, memarg#1 : memarg, numtype : numtype, `loadop?` : loadop_(numtype)?, memidx : memidx, memarg : memarg}(`LOAD`_instr{`numtype?#1`, memidx#5, memarg#1}(numtype, loadop?{loadop <- `loadop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) +[check_dims] memarg memarg#3 memidx memidx#7 numtype numtype?#2 storeop +[visit_exp `STORE`_instr{`numtype?#2`, memidx#7, memarg#3}(numtype, storeop?{storeop <- `storeop?`}, memidx, memarg)] +[visit_exp `numtype?#2`] +[visit_id numtype?#2] +[visit_exp memidx#7] +[visit_id memidx#7] +[visit_exp memarg#3] +[visit_id memarg#3] +[visit_exp (numtype, storeop?{storeop <- `storeop?`}, memidx, memarg)] +[visit_exp numtype] +[visit_id numtype] +[visit_exp storeop?{storeop <- `storeop?`}] +[scope_enter storeop] +[visit_exp storeop] +[visit_id storeop] not free +[visit_id storeop] not free +[scope_exit storeop] +[visit_exp `storeop?`] +[visit_id storeop?] no dims +[visit_id storeop?] +[visit_exp memidx] +[visit_id memidx] +[visit_exp memarg] +[visit_id memarg] +[visit_exp $free_numtype(numtype) +++ $free_memidx(memidx)] +[visit_exp $free_numtype(numtype)] +[visit_exp numtype] +[visit_id numtype] not free +[visit_exp $free_memidx(memidx)] +[visit_exp memidx] +[visit_id memidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{`numtype?#2` : numtype?, memidx#7 : memidx, memarg#3 : memarg, numtype : numtype, `storeop?` : storeop_(numtype)?, memidx : memidx, memarg : memarg}(`STORE`_instr{`numtype?#2`, memidx#7, memarg#3}(numtype, storeop?{storeop <- `storeop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) +[check_dims] memarg memarg#5 memidx memidx#9 vectype vectype?#1 vloadop +[visit_exp `VLOAD`_instr{`vectype?#1`, memidx#9, memarg#5}(vectype, vloadop?{vloadop <- `vloadop?`}, memidx, memarg)] +[visit_exp `vectype?#1`] +[visit_id vectype?#1] +[visit_exp memidx#9] +[visit_id memidx#9] +[visit_exp memarg#5] +[visit_id memarg#5] +[visit_exp (vectype, vloadop?{vloadop <- `vloadop?`}, memidx, memarg)] +[visit_exp vectype] +[visit_id vectype] +[visit_exp vloadop?{vloadop <- `vloadop?`}] +[scope_enter vloadop] +[visit_exp vloadop] +[visit_id vloadop] not free +[visit_id vloadop] not free +[scope_exit vloadop] +[visit_exp `vloadop?`] +[visit_id vloadop?] no dims +[visit_id vloadop?] +[visit_exp memidx] +[visit_id memidx] +[visit_exp memarg] +[visit_id memarg] +[visit_exp $free_vectype(vectype) +++ $free_memidx(memidx)] +[visit_exp $free_vectype(vectype)] +[visit_exp vectype] +[visit_id vectype] not free +[visit_exp $free_memidx(memidx)] +[visit_exp memidx] +[visit_id memidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{`vectype?#1` : vectype?, memidx#9 : memidx, memarg#5 : memarg, vectype : vectype, `vloadop?` : vloadop_(vectype)?, memidx : memidx, memarg : memarg}(`VLOAD`_instr{`vectype?#1`, memidx#9, memarg#5}(vectype, vloadop?{vloadop <- `vloadop?`}, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) +[check_dims] laneidx laneidx#5 memarg memarg#7 memidx memidx#11 sz sz#1 vectype vectype#14 +[visit_exp `VLOAD_LANE`_instr{vectype#14, sz#1, memidx#11, memarg#7, laneidx#5}(vectype, sz, memidx, memarg, laneidx)] +[visit_exp vectype#14] +[visit_id vectype#14] +[visit_exp sz#1] +[visit_id sz#1] +[visit_exp memidx#11] +[visit_id memidx#11] +[visit_exp memarg#7] +[visit_id memarg#7] +[visit_exp laneidx#5] +[visit_id laneidx#5] +[visit_exp (vectype, sz, memidx, memarg, laneidx)] +[visit_exp vectype] +[visit_id vectype] +[visit_exp sz] +[visit_id sz] +[visit_exp memidx] +[visit_id memidx] +[visit_exp memarg] +[visit_id memarg] +[visit_exp laneidx] +[visit_id laneidx] +[visit_exp $free_vectype(vectype) +++ $free_memidx(memidx)] +[visit_exp $free_vectype(vectype)] +[visit_exp vectype] +[visit_id vectype] not free +[visit_exp $free_memidx(memidx)] +[visit_exp memidx] +[visit_id memidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{vectype#14 : vectype, sz#1 : sz, memidx#11 : memidx, memarg#7 : memarg, laneidx#5 : laneidx, vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(`VLOAD_LANE`_instr{vectype#14, sz#1, memidx#11, memarg#7, laneidx#5}(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) +[check_dims] memarg memarg#9 memidx memidx#13 vectype vectype#16 +[visit_exp `VSTORE`_instr{vectype#16, memidx#13, memarg#9}(vectype, memidx, memarg)] +[visit_exp vectype#16] +[visit_id vectype#16] +[visit_exp memidx#13] +[visit_id memidx#13] +[visit_exp memarg#9] +[visit_id memarg#9] +[visit_exp (vectype, memidx, memarg)] +[visit_exp vectype] +[visit_id vectype] +[visit_exp memidx] +[visit_id memidx] +[visit_exp memarg] +[visit_id memarg] +[visit_exp $free_vectype(vectype) +++ $free_memidx(memidx)] +[visit_exp $free_vectype(vectype)] +[visit_exp vectype] +[visit_id vectype] not free +[visit_exp $free_memidx(memidx)] +[visit_exp memidx] +[visit_id memidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{vectype#16 : vectype, memidx#13 : memidx, memarg#9 : memarg, vectype : vectype, memidx : memidx, memarg : memarg}(`VSTORE`_instr{vectype#16, memidx#13, memarg#9}(vectype, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) +[check_dims] laneidx laneidx#7 memarg memarg#11 memidx memidx#15 sz sz#3 vectype vectype#18 +[visit_exp `VSTORE_LANE`_instr{vectype#18, sz#3, memidx#15, memarg#11, laneidx#7}(vectype, sz, memidx, memarg, laneidx)] +[visit_exp vectype#18] +[visit_id vectype#18] +[visit_exp sz#3] +[visit_id sz#3] +[visit_exp memidx#15] +[visit_id memidx#15] +[visit_exp memarg#11] +[visit_id memarg#11] +[visit_exp laneidx#7] +[visit_id laneidx#7] +[visit_exp (vectype, sz, memidx, memarg, laneidx)] +[visit_exp vectype] +[visit_id vectype] +[visit_exp sz] +[visit_id sz] +[visit_exp memidx] +[visit_id memidx] +[visit_exp memarg] +[visit_id memarg] +[visit_exp laneidx] +[visit_id laneidx] +[visit_exp $free_vectype(vectype) +++ $free_memidx(memidx)] +[visit_exp $free_vectype(vectype)] +[visit_exp vectype] +[visit_id vectype] not free +[visit_exp $free_memidx(memidx)] +[visit_exp memidx] +[visit_id memidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{vectype#18 : vectype, sz#3 : sz, memidx#15 : memidx, memarg#11 : memarg, laneidx#7 : laneidx, vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(`VSTORE_LANE`_instr{vectype#18, sz#3, memidx#15, memarg#11, laneidx#7}(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) +[check_dims] memidx memidx#17 +[visit_exp `MEMORY.SIZE`_instr{memidx#17}(memidx)] +[visit_exp memidx#17] +[visit_id memidx#17] +[visit_exp (memidx)] +[visit_exp memidx] +[visit_id memidx] +[visit_exp $free_memidx(memidx)] +[visit_exp memidx] +[visit_id memidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{memidx#17 : memidx, memidx : memidx}(`MEMORY.SIZE`_instr{memidx#17}(memidx)) = $free_memidx(memidx) +[check_dims] memidx memidx#19 +[visit_exp `MEMORY.GROW`_instr{memidx#19}(memidx)] +[visit_exp memidx#19] +[visit_id memidx#19] +[visit_exp (memidx)] +[visit_exp memidx] +[visit_id memidx] +[visit_exp $free_memidx(memidx)] +[visit_exp memidx] +[visit_id memidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{memidx#19 : memidx, memidx : memidx}(`MEMORY.GROW`_instr{memidx#19}(memidx)) = $free_memidx(memidx) +[check_dims] memidx memidx#21 +[visit_exp `MEMORY.FILL`_instr{memidx#21}(memidx)] +[visit_exp memidx#21] +[visit_id memidx#21] +[visit_exp (memidx)] +[visit_exp memidx] +[visit_id memidx] +[visit_exp $free_memidx(memidx)] +[visit_exp memidx] +[visit_id memidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{memidx#21 : memidx, memidx : memidx}(`MEMORY.FILL`_instr{memidx#21}(memidx)) = $free_memidx(memidx) +[check_dims] memidx#23 memidx_1 memidx_2 +[visit_exp `MEMORY.COPY`_instr{memidx#23}(memidx_1, memidx_2)] +[visit_exp memidx#23] +[visit_id memidx#23] +[visit_exp (memidx_1, memidx_2)] +[visit_exp memidx_1] +[visit_id memidx_1] +[visit_exp memidx_2] +[visit_id memidx_2] +[visit_exp $free_memidx(memidx_1) +++ $free_memidx(memidx_2)] +[visit_exp $free_memidx(memidx_1)] +[visit_exp memidx_1] +[visit_id memidx_1] not free +[visit_exp $free_memidx(memidx_2)] +[visit_exp memidx_2] +[visit_id memidx_2] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{memidx#23 : memidx, memidx_1 : memidx, memidx_2 : memidx}(`MEMORY.COPY`_instr{memidx#23}(memidx_1, memidx_2)) = $free_memidx(memidx_1) +++ $free_memidx(memidx_2) +[check_dims] dataidx dataidx#5 memidx memidx#26 +[visit_exp `MEMORY.INIT`_instr{memidx#26, dataidx#5}(memidx, dataidx)] +[visit_exp memidx#26] +[visit_id memidx#26] +[visit_exp dataidx#5] +[visit_id dataidx#5] +[visit_exp (memidx, dataidx)] +[visit_exp memidx] +[visit_id memidx] +[visit_exp dataidx] +[visit_id dataidx] +[visit_exp $free_memidx(memidx) +++ $free_dataidx(dataidx)] +[visit_exp $free_memidx(memidx)] +[visit_exp memidx] +[visit_id memidx] not free +[visit_exp $free_dataidx(dataidx)] +[visit_exp dataidx] +[visit_id dataidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{memidx#26 : memidx, dataidx#5 : dataidx, memidx : memidx, dataidx : dataidx}(`MEMORY.INIT`_instr{memidx#26, dataidx#5}(memidx, dataidx)) = $free_memidx(memidx) +++ $free_dataidx(dataidx) +[check_dims] dataidx dataidx#7 +[visit_exp `DATA.DROP`_instr{dataidx#7}(dataidx)] +[visit_exp dataidx#7] +[visit_id dataidx#7] +[visit_exp (dataidx)] +[visit_exp dataidx] +[visit_id dataidx] +[visit_exp $free_dataidx(dataidx)] +[visit_exp dataidx] +[visit_id dataidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_instr{dataidx#7 : dataidx, dataidx : dataidx}(`DATA.DROP`_instr{dataidx#7}(dataidx)) = $free_dataidx(dataidx) +[check_dims] _ +DecD shift_labelidxs(labelidx*) : labelidx* +[visit_id _] not free +[check_dims] +[visit_exp []] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $shift_labelidxs([]) = [] +[check_dims] i#3333 labelidx' +[visit_exp [`%`_labelidx{i#3333}(0)] ++ labelidx'*{labelidx' <- `labelidx'*`}] +[visit_exp [`%`_labelidx{i#3333}(0)]] +[visit_exp `%`_labelidx{i#3333}(0)] +[visit_exp i#3333] +[visit_id i#3333] +[visit_exp (0)] +[visit_exp 0] +[visit_exp labelidx'*{labelidx' <- `labelidx'*`}] +[scope_enter labelidx'] +[visit_exp labelidx'] +[visit_id labelidx'] not free +[visit_id labelidx'] not free +[scope_exit labelidx'] +[visit_exp `labelidx'*`] +[visit_id labelidx'*] no dims +[visit_id labelidx'*] +[visit_exp $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`})] +[visit_exp labelidx'*{labelidx' <- `labelidx'*`}] +[scope_enter labelidx'] +[visit_exp labelidx'] +[visit_id labelidx'] not free +[visit_id labelidx'] not free +[scope_exit labelidx'] +[visit_exp `labelidx'*`] +[visit_id labelidx'*] not free +[visit_id labelidx'*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $shift_labelidxs{i#3333 : nat, `labelidx'*` : labelidx*}([`%`_labelidx{i#3333}(0)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) +[check_dims] i#3547 i#3557 labelidx labelidx' +[visit_exp [labelidx] ++ labelidx'*{labelidx' <- `labelidx'*`}] +[visit_exp [labelidx]] +[visit_exp labelidx] +[visit_id labelidx] +[visit_exp labelidx'*{labelidx' <- `labelidx'*`}] +[scope_enter labelidx'] +[visit_exp labelidx'] +[visit_id labelidx'] not free +[visit_id labelidx'] not free +[scope_exit labelidx'] +[visit_exp `labelidx'*`] +[visit_id labelidx'*] no dims +[visit_id labelidx'*] +[visit_exp [`%`_labelidx{i#3557}((((labelidx!`%`_labelidx{i#3547}.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`})] +[visit_exp [`%`_labelidx{i#3557}((((labelidx!`%`_labelidx{i#3547}.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))]] +[visit_exp `%`_labelidx{i#3557}((((labelidx!`%`_labelidx{i#3547}.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp i#3557] +[visit_id i#3557] +[visit_exp ((((labelidx!`%`_labelidx{i#3547}.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp (((labelidx!`%`_labelidx{i#3547}.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp ((labelidx!`%`_labelidx{i#3547}.0 : nat <:> int) - (1 : nat <:> int))] +[visit_exp (labelidx!`%`_labelidx{i#3547}.0 : nat <:> int)] +[visit_exp labelidx!`%`_labelidx{i#3547}.0] +[visit_exp labelidx!`%`_labelidx{i#3547}] +[visit_exp labelidx] +[visit_id labelidx] not free +[visit_exp i#3547] +[visit_id i#3547] +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`})] +[visit_exp labelidx'*{labelidx' <- `labelidx'*`}] +[scope_enter labelidx'] +[visit_exp labelidx'] +[visit_id labelidx'] not free +[visit_id labelidx'] not free +[scope_exit labelidx'] +[visit_exp `labelidx'*`] +[visit_id labelidx'*] not free +[visit_id labelidx'*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $shift_labelidxs{labelidx : labelidx, `labelidx'*` : labelidx*, i#3557 : nat, i#3547 : nat}([labelidx] ++ labelidx'*{labelidx' <- `labelidx'*`}) = [`%`_labelidx{i#3557}((((labelidx!`%`_labelidx{i#3547}.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) +[check_dims] free instr labelidx*#35 labelidx*#44 +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] no dims +[visit_id instr*] +[visit_exp free[`LABELS`_free{`labelidx*#35`} = $shift_labelidxs(free.`LABELS`_free{`labelidx*#44`})]] +[visit_exp free] +[visit_id free] +[visit_exp `labelidx*#35`] +[visit_id labelidx*#35] +[visit_exp $shift_labelidxs(free.`LABELS`_free{`labelidx*#44`})] +[visit_exp free.`LABELS`_free{`labelidx*#44`}] +[visit_exp free] +[visit_id free] not free +[visit_exp `labelidx*#44`] +[visit_id labelidx*#44] +[visit_exp (free = $free_list($free_instr(instr)*{instr <- `instr*`}))] +[visit_exp free] +[visit_id free] not free +[visit_exp $free_list($free_instr(instr)*{instr <- `instr*`})] +[visit_exp $free_instr(instr)*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp $free_instr(instr)] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] not free +[visit_id instr*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_block{`instr*` : instr*, free : free, `labelidx*#35` : labelidx*, `labelidx*#44` : labelidx*}(instr*{instr <- `instr*`}) = free[`LABELS`_free{`labelidx*#35`} = $shift_labelidxs(free.`LABELS`_free{`labelidx*#44`})] + -- if (free = $free_list($free_instr(instr)*{instr <- `instr*`})) +[check_dims] instr +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] no dims +[visit_id instr*] +[visit_exp $free_list($free_instr(instr)*{instr <- `instr*`})] +[visit_exp $free_instr(instr)*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp $free_instr(instr)] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] not free +[visit_id instr*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_expr{`instr*` : instr*}(instr*{instr <- `instr*`}) = $free_list($free_instr(instr)*{instr <- `instr*`}) +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id tableidx] no dims +[visit_id tableidx] +[visit_id expr] no dims +[visit_id expr] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id memidx] no dims +[visit_id memidx] +[visit_id expr] no dims +[visit_id expr] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id rectype] no dims +[visit_id rectype] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id tagtype] no dims +[visit_id tagtype] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id globaltype] no dims +[visit_id globaltype] +[visit_id expr] no dims +[visit_id expr] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id memtype] no dims +[visit_id memtype] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id tabletype] no dims +[visit_id tabletype] +[visit_id expr] no dims +[visit_id expr] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id byte*] no dims +[visit_id byte*] +[visit_id datamode] no dims +[visit_id datamode] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id valtype] no dims +[visit_id valtype] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id typeidx] no dims +[visit_id typeidx] +[visit_id local*] no dims +[visit_id local*] +[visit_id expr] no dims +[visit_id expr] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id reftype] no dims +[visit_id reftype] +[visit_id expr*] no dims +[visit_id expr*] +[visit_id elemmode] no dims +[visit_id elemmode] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id funcidx] no dims +[visit_id funcidx] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id name] no dims +[visit_id name] +[visit_id name] not free +[visit_id name] no dims +[visit_id externtype] no dims +[visit_id externtype] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id name] no dims +[visit_id name] +[visit_id externidx] no dims +[visit_id externidx] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id type*] no dims +[visit_id type*] +[visit_id import*] no dims +[visit_id import*] +[visit_id tag*] no dims +[visit_id tag*] +[visit_id global*] no dims +[visit_id global*] +[visit_id mem*] no dims +[visit_id mem*] +[visit_id table*] no dims +[visit_id table*] +[visit_id func*] no dims +[visit_id func*] +[visit_id data*] no dims +[visit_id data*] +[visit_id elem*] no dims +[visit_id elem*] +[visit_id start?] no dims +[visit_id start?] +[visit_id export*] no dims +[visit_id export*] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] type +DecD free_type(type : type) : free +[visit_id type] not free +[check_dims] tag +DecD free_tag(tag : tag) : free +[visit_id tag] not free +[check_dims] global +DecD free_global(global : global) : free +[visit_id global] not free +[check_dims] mem +DecD free_mem(mem : mem) : free +[visit_id mem] not free +[check_dims] table +DecD free_table(table : table) : free +[visit_id table] not free +[check_dims] local +DecD free_local(local : local) : free +[visit_id local] not free +[check_dims] func +DecD free_func(func : func) : free +[visit_id func] not free +[check_dims] data +DecD free_data(data : data) : free +[visit_id data] not free +[check_dims] elem +DecD free_elem(elem : elem) : free +[visit_id elem] not free +[check_dims] datamode +DecD free_datamode(datamode : datamode) : free +[visit_id datamode] not free +[check_dims] elemmode +DecD free_elemmode(elemmode : elemmode) : free +[visit_id elemmode] not free +[check_dims] start +DecD free_start(start : start) : free +[visit_id start] not free +[check_dims] import +DecD free_import(import : import) : free +[visit_id import] not free +[check_dims] export +DecD free_export(export : export) : free +[visit_id export] not free +[check_dims] module +DecD free_module(module : module) : free +[visit_id module] not free +[check_dims] rectype rectype#265 +[visit_exp `TYPE`_type{rectype#265}(rectype)] +[visit_exp rectype#265] +[visit_id rectype#265] +[visit_exp (rectype)] +[visit_exp rectype] +[visit_id rectype] +[visit_exp $free_rectype(rectype)] +[visit_exp rectype] +[visit_id rectype] not free +=> + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_type{rectype#265 : rectype, rectype : rectype}(`TYPE`_type{rectype#265}(rectype)) = $free_rectype(rectype) +[check_dims] tagtype tagtype#19 +[visit_exp `TAG`_tag{tagtype#19}(tagtype)] +[visit_exp tagtype#19] +[visit_id tagtype#19] +[visit_exp (tagtype)] +[visit_exp tagtype] +[visit_id tagtype] +[visit_exp $free_tagtype(tagtype)] +[visit_exp tagtype] +[visit_id tagtype] not free +=> + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_tag{tagtype#19 : tagtype, tagtype : tagtype}(`TAG`_tag{tagtype#19}(tagtype)) = $free_tagtype(tagtype) +[check_dims] expr expr#11 globaltype globaltype#19 +[visit_exp `GLOBAL`_global{globaltype#19, expr#11}(globaltype, expr)] +[visit_exp globaltype#19] +[visit_id globaltype#19] +[visit_exp expr#11] +[visit_id expr#11] +[visit_exp (globaltype, expr)] +[visit_exp globaltype] +[visit_id globaltype] +[visit_exp expr] +[visit_id expr] +[visit_exp $free_globaltype(globaltype) +++ $free_expr(expr)] +[visit_exp $free_globaltype(globaltype)] +[visit_exp globaltype] +[visit_id globaltype] not free +[visit_exp $free_expr(expr)] +[visit_exp expr] +[visit_id expr] not free +=> + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_global{globaltype#19 : globaltype, expr#11 : expr, globaltype : globaltype, expr : expr}(`GLOBAL`_global{globaltype#19, expr#11}(globaltype, expr)) = $free_globaltype(globaltype) +++ $free_expr(expr) +[check_dims] memtype memtype#19 +[visit_exp `MEMORY`_mem{memtype#19}(memtype)] +[visit_exp memtype#19] +[visit_id memtype#19] +[visit_exp (memtype)] +[visit_exp memtype] +[visit_id memtype] +[visit_exp $free_memtype(memtype)] +[visit_exp memtype] +[visit_id memtype] not free +=> + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_mem{memtype#19 : memtype, memtype : memtype}(`MEMORY`_mem{memtype#19}(memtype)) = $free_memtype(memtype) +[check_dims] expr expr#23 tabletype tabletype#19 +[visit_exp `TABLE`_table{tabletype#19, expr#23}(tabletype, expr)] +[visit_exp tabletype#19] +[visit_id tabletype#19] +[visit_exp expr#23] +[visit_id expr#23] +[visit_exp (tabletype, expr)] +[visit_exp tabletype] +[visit_id tabletype] +[visit_exp expr] +[visit_id expr] +[visit_exp $free_tabletype(tabletype) +++ $free_expr(expr)] +[visit_exp $free_tabletype(tabletype)] +[visit_exp tabletype] +[visit_id tabletype] not free +[visit_exp $free_expr(expr)] +[visit_exp expr] +[visit_id expr] not free +=> + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_table{tabletype#19 : tabletype, expr#23 : expr, tabletype : tabletype, expr : expr}(`TABLE`_table{tabletype#19, expr#23}(tabletype, expr)) = $free_tabletype(tabletype) +++ $free_expr(expr) +[check_dims] t valtype#163 +[visit_exp `LOCAL`_local{valtype#163}(t)] +[visit_exp valtype#163] +[visit_id valtype#163] +[visit_exp (t)] +[visit_exp t] +[visit_id t] +[visit_exp $free_valtype(t)] +[visit_exp t] +[visit_id t] not free +=> + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_local{valtype#163 : valtype, t : valtype}(`LOCAL`_local{valtype#163}(t)) = $free_valtype(t) +[check_dims] expr expr#35 local local*#11 localidx*#33 typeidx typeidx#70 +[visit_exp `FUNC`_func{typeidx#70, `local*#11`, expr#35}(typeidx, local*{local <- `local*`}, expr)] +[visit_exp typeidx#70] +[visit_id typeidx#70] +[visit_exp `local*#11`] +[visit_id local*#11] +[visit_exp expr#35] +[visit_id expr#35] +[visit_exp (typeidx, local*{local <- `local*`}, expr)] +[visit_exp typeidx] +[visit_id typeidx] +[visit_exp local*{local <- `local*`}] +[scope_enter local] +[visit_exp local] +[visit_id local] not free +[visit_id local] not free +[scope_exit local] +[visit_exp `local*`] +[visit_id local*] no dims +[visit_id local*] +[visit_exp expr] +[visit_id expr] +[visit_exp $free_typeidx(typeidx) +++ $free_list($free_local(local)*{local <- `local*`}) +++ $free_block(expr)[`LOCALS`_free{`localidx*#33`} = []]] +[visit_exp $free_typeidx(typeidx) +++ $free_list($free_local(local)*{local <- `local*`})] +[visit_exp $free_typeidx(typeidx)] +[visit_exp typeidx] +[visit_id typeidx] not free +[visit_exp $free_list($free_local(local)*{local <- `local*`})] +[visit_exp $free_local(local)*{local <- `local*`}] +[scope_enter local] +[visit_exp $free_local(local)] +[visit_exp local] +[visit_id local] not free +[visit_id local] not free +[scope_exit local] +[visit_exp `local*`] +[visit_id local*] not free +[visit_id local*] no dims +[visit_exp $free_block(expr)[`LOCALS`_free{`localidx*#33`} = []]] +[visit_exp $free_block(expr)] +[visit_exp expr] +[visit_id expr] not free +[visit_exp `localidx*#33`] +[visit_id localidx*#33] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_func{typeidx#70 : typeidx, `local*#11` : local*, expr#35 : expr, typeidx : typeidx, `local*` : local*, expr : expr, `localidx*#33` : localidx*}(`FUNC`_func{typeidx#70, `local*#11`, expr#35}(typeidx, local*{local <- `local*`}, expr)) = $free_typeidx(typeidx) +++ $free_list($free_local(local)*{local <- `local*`}) +++ $free_block(expr)[`LOCALS`_free{`localidx*#33`} = []] +[check_dims] byte byte*#11 datamode datamode#11 +[visit_exp `DATA`_data{`byte*#11`, datamode#11}(byte*{byte <- `byte*`}, datamode)] +[visit_exp `byte*#11`] +[visit_id byte*#11] +[visit_exp datamode#11] +[visit_id datamode#11] +[visit_exp (byte*{byte <- `byte*`}, datamode)] +[visit_exp byte*{byte <- `byte*`}] +[scope_enter byte] +[visit_exp byte] +[visit_id byte] not free +[visit_id byte] not free +[scope_exit byte] +[visit_exp `byte*`] +[visit_id byte*] no dims +[visit_id byte*] +[visit_exp datamode] +[visit_id datamode] +[visit_exp $free_datamode(datamode)] +[visit_exp datamode] +[visit_id datamode] not free +=> + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_data{`byte*#11` : byte*, datamode#11 : datamode, `byte*` : byte*, datamode : datamode}(`DATA`_data{`byte*#11`, datamode#11}(byte*{byte <- `byte*`}, datamode)) = $free_datamode(datamode) +[check_dims] elemmode elemmode#11 expr expr*#11 reftype reftype#157 +[visit_exp `ELEM`_elem{reftype#157, `expr*#11`, elemmode#11}(reftype, expr*{expr <- `expr*`}, elemmode)] +[visit_exp reftype#157] +[visit_id reftype#157] +[visit_exp `expr*#11`] +[visit_id expr*#11] +[visit_exp elemmode#11] +[visit_id elemmode#11] +[visit_exp (reftype, expr*{expr <- `expr*`}, elemmode)] +[visit_exp reftype] +[visit_id reftype] +[visit_exp expr*{expr <- `expr*`}] +[scope_enter expr] +[visit_exp expr] +[visit_id expr] not free +[visit_id expr] not free +[scope_exit expr] +[visit_exp `expr*`] +[visit_id expr*] no dims +[visit_id expr*] +[visit_exp elemmode] +[visit_id elemmode] +[visit_exp $free_reftype(reftype) +++ $free_list($free_expr(expr)*{expr <- `expr*`}) +++ $free_elemmode(elemmode)] +[visit_exp $free_reftype(reftype) +++ $free_list($free_expr(expr)*{expr <- `expr*`})] +[visit_exp $free_reftype(reftype)] +[visit_exp reftype] +[visit_id reftype] not free +[visit_exp $free_list($free_expr(expr)*{expr <- `expr*`})] +[visit_exp $free_expr(expr)*{expr <- `expr*`}] +[scope_enter expr] +[visit_exp $free_expr(expr)] +[visit_exp expr] +[visit_id expr] not free +[visit_id expr] not free +[scope_exit expr] +[visit_exp `expr*`] +[visit_id expr*] not free +[visit_id expr*] no dims +[visit_exp $free_elemmode(elemmode)] +[visit_exp elemmode] +[visit_id elemmode] not free +=> + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_elem{reftype#157 : reftype, `expr*#11` : expr*, elemmode#11 : elemmode, reftype : reftype, `expr*` : expr*, elemmode : elemmode}(`ELEM`_elem{reftype#157, `expr*#11`, elemmode#11}(reftype, expr*{expr <- `expr*`}, elemmode)) = $free_reftype(reftype) +++ $free_list($free_expr(expr)*{expr <- `expr*`}) +++ $free_elemmode(elemmode) +[check_dims] expr expr#37 tableidx tableidx#24 +[visit_exp `ACTIVE`_elemmode{tableidx#24, expr#37}(tableidx, expr)] +[visit_exp tableidx#24] +[visit_id tableidx#24] +[visit_exp expr#37] +[visit_id expr#37] +[visit_exp (tableidx, expr)] +[visit_exp tableidx] +[visit_id tableidx] +[visit_exp expr] +[visit_id expr] +[visit_exp $free_tableidx(tableidx) +++ $free_expr(expr)] +[visit_exp $free_tableidx(tableidx)] +[visit_exp tableidx] +[visit_id tableidx] not free +[visit_exp $free_expr(expr)] +[visit_exp expr] +[visit_id expr] not free +=> + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_elemmode{tableidx#24 : tableidx, expr#37 : expr, tableidx : tableidx, expr : expr}(`ACTIVE`_elemmode{tableidx#24, expr#37}(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) +[check_dims] dataidx*#33 elemidx*#33 funcidx*#33 globalidx*#33 labelidx*#45 localidx*#34 memidx*#33 tableidx*#33 typeidx*#33 +[visit_exp `PASSIVE`_elemmode] +[visit_exp ()] +[visit_exp {`TYPES`{`typeidx*#33`} [], `FUNCS`{`funcidx*#33`} [], `GLOBALS`{`globalidx*#33`} [], `TABLES`{`tableidx*#33`} [], `MEMS`{`memidx*#33`} [], `ELEMS`{`elemidx*#33`} [], `DATAS`{`dataidx*#33`} [], `LOCALS`{`localidx*#34`} [], `LABELS`{`labelidx*#45`} []}] +[visit_exp `typeidx*#33`] +[visit_id typeidx*#33] +[visit_exp []] +[visit_exp `funcidx*#33`] +[visit_id funcidx*#33] +[visit_exp []] +[visit_exp `globalidx*#33`] +[visit_id globalidx*#33] +[visit_exp []] +[visit_exp `tableidx*#33`] +[visit_id tableidx*#33] +[visit_exp []] +[visit_exp `memidx*#33`] +[visit_id memidx*#33] +[visit_exp []] +[visit_exp `elemidx*#33`] +[visit_id elemidx*#33] +[visit_exp []] +[visit_exp `dataidx*#33`] +[visit_id dataidx*#33] +[visit_exp []] +[visit_exp `localidx*#34`] +[visit_id localidx*#34] +[visit_exp []] +[visit_exp `labelidx*#45`] +[visit_id labelidx*#45] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_elemmode{`typeidx*#33` : typeidx*, `funcidx*#33` : funcidx*, `globalidx*#33` : globalidx*, `tableidx*#33` : tableidx*, `memidx*#33` : memidx*, `elemidx*#33` : elemidx*, `dataidx*#33` : dataidx*, `localidx*#34` : localidx*, `labelidx*#45` : labelidx*}(`PASSIVE`_elemmode) = {`TYPES`{`typeidx*#33`} [], `FUNCS`{`funcidx*#33`} [], `GLOBALS`{`globalidx*#33`} [], `TABLES`{`tableidx*#33`} [], `MEMS`{`memidx*#33`} [], `ELEMS`{`elemidx*#33`} [], `DATAS`{`dataidx*#33`} [], `LOCALS`{`localidx*#34`} [], `LABELS`{`labelidx*#45`} []} +[check_dims] dataidx*#34 elemidx*#34 funcidx*#34 globalidx*#34 labelidx*#46 localidx*#35 memidx*#34 tableidx*#34 typeidx*#34 +[visit_exp `DECLARE`_elemmode] +[visit_exp ()] +[visit_exp {`TYPES`{`typeidx*#34`} [], `FUNCS`{`funcidx*#34`} [], `GLOBALS`{`globalidx*#34`} [], `TABLES`{`tableidx*#34`} [], `MEMS`{`memidx*#34`} [], `ELEMS`{`elemidx*#34`} [], `DATAS`{`dataidx*#34`} [], `LOCALS`{`localidx*#35`} [], `LABELS`{`labelidx*#46`} []}] +[visit_exp `typeidx*#34`] +[visit_id typeidx*#34] +[visit_exp []] +[visit_exp `funcidx*#34`] +[visit_id funcidx*#34] +[visit_exp []] +[visit_exp `globalidx*#34`] +[visit_id globalidx*#34] +[visit_exp []] +[visit_exp `tableidx*#34`] +[visit_id tableidx*#34] +[visit_exp []] +[visit_exp `memidx*#34`] +[visit_id memidx*#34] +[visit_exp []] +[visit_exp `elemidx*#34`] +[visit_id elemidx*#34] +[visit_exp []] +[visit_exp `dataidx*#34`] +[visit_id dataidx*#34] +[visit_exp []] +[visit_exp `localidx*#35`] +[visit_id localidx*#35] +[visit_exp []] +[visit_exp `labelidx*#46`] +[visit_id labelidx*#46] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_elemmode{`typeidx*#34` : typeidx*, `funcidx*#34` : funcidx*, `globalidx*#34` : globalidx*, `tableidx*#34` : tableidx*, `memidx*#34` : memidx*, `elemidx*#34` : elemidx*, `dataidx*#34` : dataidx*, `localidx*#35` : localidx*, `labelidx*#46` : labelidx*}(`DECLARE`_elemmode) = {`TYPES`{`typeidx*#34`} [], `FUNCS`{`funcidx*#34`} [], `GLOBALS`{`globalidx*#34`} [], `TABLES`{`tableidx*#34`} [], `MEMS`{`memidx*#34`} [], `ELEMS`{`elemidx*#34`} [], `DATAS`{`dataidx*#34`} [], `LOCALS`{`localidx*#35`} [], `LABELS`{`labelidx*#46`} []} +[check_dims] expr expr#39 memidx memidx#28 +[visit_exp `ACTIVE`_datamode{memidx#28, expr#39}(memidx, expr)] +[visit_exp memidx#28] +[visit_id memidx#28] +[visit_exp expr#39] +[visit_id expr#39] +[visit_exp (memidx, expr)] +[visit_exp memidx] +[visit_id memidx] +[visit_exp expr] +[visit_id expr] +[visit_exp $free_memidx(memidx) +++ $free_expr(expr)] +[visit_exp $free_memidx(memidx)] +[visit_exp memidx] +[visit_id memidx] not free +[visit_exp $free_expr(expr)] +[visit_exp expr] +[visit_id expr] not free +=> + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_datamode{memidx#28 : memidx, expr#39 : expr, memidx : memidx, expr : expr}(`ACTIVE`_datamode{memidx#28, expr#39}(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) +[check_dims] dataidx*#35 elemidx*#35 funcidx*#35 globalidx*#35 labelidx*#47 localidx*#36 memidx*#35 tableidx*#35 typeidx*#35 +[visit_exp `PASSIVE`_datamode] +[visit_exp ()] +[visit_exp {`TYPES`{`typeidx*#35`} [], `FUNCS`{`funcidx*#35`} [], `GLOBALS`{`globalidx*#35`} [], `TABLES`{`tableidx*#35`} [], `MEMS`{`memidx*#35`} [], `ELEMS`{`elemidx*#35`} [], `DATAS`{`dataidx*#35`} [], `LOCALS`{`localidx*#36`} [], `LABELS`{`labelidx*#47`} []}] +[visit_exp `typeidx*#35`] +[visit_id typeidx*#35] +[visit_exp []] +[visit_exp `funcidx*#35`] +[visit_id funcidx*#35] +[visit_exp []] +[visit_exp `globalidx*#35`] +[visit_id globalidx*#35] +[visit_exp []] +[visit_exp `tableidx*#35`] +[visit_id tableidx*#35] +[visit_exp []] +[visit_exp `memidx*#35`] +[visit_id memidx*#35] +[visit_exp []] +[visit_exp `elemidx*#35`] +[visit_id elemidx*#35] +[visit_exp []] +[visit_exp `dataidx*#35`] +[visit_id dataidx*#35] +[visit_exp []] +[visit_exp `localidx*#36`] +[visit_id localidx*#36] +[visit_exp []] +[visit_exp `labelidx*#47`] +[visit_id labelidx*#47] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_datamode{`typeidx*#35` : typeidx*, `funcidx*#35` : funcidx*, `globalidx*#35` : globalidx*, `tableidx*#35` : tableidx*, `memidx*#35` : memidx*, `elemidx*#35` : elemidx*, `dataidx*#35` : dataidx*, `localidx*#36` : localidx*, `labelidx*#47` : labelidx*}(`PASSIVE`_datamode) = {`TYPES`{`typeidx*#35`} [], `FUNCS`{`funcidx*#35`} [], `GLOBALS`{`globalidx*#35`} [], `TABLES`{`tableidx*#35`} [], `MEMS`{`memidx*#35`} [], `ELEMS`{`elemidx*#35`} [], `DATAS`{`dataidx*#35`} [], `LOCALS`{`localidx*#36`} [], `LABELS`{`labelidx*#47`} []} +[check_dims] funcidx funcidx#21 +[visit_exp `START`_start{funcidx#21}(funcidx)] +[visit_exp funcidx#21] +[visit_id funcidx#21] +[visit_exp (funcidx)] +[visit_exp funcidx] +[visit_id funcidx] +[visit_exp $free_funcidx(funcidx)] +[visit_exp funcidx] +[visit_id funcidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_start{funcidx#21 : funcidx, funcidx : funcidx}(`START`_start{funcidx#21}(funcidx)) = $free_funcidx(funcidx) +[check_dims] externtype externtype#11 name#18 name_1 name_2 +[visit_exp `IMPORT`_import{name#18, externtype#11}(name_1, name_2, externtype)] +[visit_exp name#18] +[visit_id name#18] +[visit_exp externtype#11] +[visit_id externtype#11] +[visit_exp (name_1, name_2, externtype)] +[visit_exp name_1] +[visit_id name_1] +[visit_exp name_2] +[visit_id name_2] +[visit_exp externtype] +[visit_id externtype] +[visit_exp $free_externtype(externtype)] +[visit_exp externtype] +[visit_id externtype] not free +=> + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_import{name#18 : name, externtype#11 : externtype, name_1 : name, name_2 : name, externtype : externtype}(`IMPORT`_import{name#18, externtype#11}(name_1, name_2, externtype)) = $free_externtype(externtype) +[check_dims] externidx externidx#11 name name#31 +[visit_exp `EXPORT`_export{name#31, externidx#11}(name, externidx)] +[visit_exp name#31] +[visit_id name#31] +[visit_exp externidx#11] +[visit_id externidx#11] +[visit_exp (name, externidx)] +[visit_exp name] +[visit_id name] +[visit_exp externidx] +[visit_id externidx] +[visit_exp $free_externidx(externidx)] +[visit_exp externidx] +[visit_id externidx] not free +=> + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_export{name#31 : name, externidx#11 : externidx, name : name, externidx : externidx}(`EXPORT`_export{name#31, externidx#11}(name, externidx)) = $free_externidx(externidx) +[check_dims] data data*#11 elem elem*#11 export export*#11 func func*#11 global global*#11 import import*#11 mem mem*#11 start start?#11 table table*#11 tag tag*#11 type type*#11 +[visit_exp `MODULE`_module{`type*#11`, `import*#11`, `tag*#11`, `global*#11`, `mem*#11`, `table*#11`, `func*#11`, `data*#11`, `elem*#11`, `start?#11`, `export*#11`}(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*`})] +[visit_exp `type*#11`] +[visit_id type*#11] +[visit_exp `import*#11`] +[visit_id import*#11] +[visit_exp `tag*#11`] +[visit_id tag*#11] +[visit_exp `global*#11`] +[visit_id global*#11] +[visit_exp `mem*#11`] +[visit_id mem*#11] +[visit_exp `table*#11`] +[visit_id table*#11] +[visit_exp `func*#11`] +[visit_id func*#11] +[visit_exp `data*#11`] +[visit_id data*#11] +[visit_exp `elem*#11`] +[visit_id elem*#11] +[visit_exp `start?#11`] +[visit_id start?#11] +[visit_exp `export*#11`] +[visit_id export*#11] +[visit_exp (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*`})] +[visit_exp type*{type <- `type*`}] +[scope_enter type] +[visit_exp type] +[visit_id type] not free +[visit_id type] not free +[scope_exit type] +[visit_exp `type*`] +[visit_id type*] no dims +[visit_id type*] +[visit_exp import*{import <- `import*`}] +[scope_enter import] +[visit_exp import] +[visit_id import] not free +[visit_id import] not free +[scope_exit import] +[visit_exp `import*`] +[visit_id import*] no dims +[visit_id import*] +[visit_exp tag*{tag <- `tag*`}] +[scope_enter tag] +[visit_exp tag] +[visit_id tag] not free +[visit_id tag] not free +[scope_exit tag] +[visit_exp `tag*`] +[visit_id tag*] no dims +[visit_id tag*] +[visit_exp global*{global <- `global*`}] +[scope_enter global] +[visit_exp global] +[visit_id global] not free +[visit_id global] not free +[scope_exit global] +[visit_exp `global*`] +[visit_id global*] no dims +[visit_id global*] +[visit_exp mem*{mem <- `mem*`}] +[scope_enter mem] +[visit_exp mem] +[visit_id mem] not free +[visit_id mem] not free +[scope_exit mem] +[visit_exp `mem*`] +[visit_id mem*] no dims +[visit_id mem*] +[visit_exp table*{table <- `table*`}] +[scope_enter table] +[visit_exp table] +[visit_id table] not free +[visit_id table] not free +[scope_exit table] +[visit_exp `table*`] +[visit_id table*] no dims +[visit_id table*] +[visit_exp func*{func <- `func*`}] +[scope_enter func] +[visit_exp func] +[visit_id func] not free +[visit_id func] not free +[scope_exit func] +[visit_exp `func*`] +[visit_id func*] no dims +[visit_id func*] +[visit_exp data*{data <- `data*`}] +[scope_enter data] +[visit_exp data] +[visit_id data] not free +[visit_id data] not free +[scope_exit data] +[visit_exp `data*`] +[visit_id data*] no dims +[visit_id data*] +[visit_exp elem*{elem <- `elem*`}] +[scope_enter elem] +[visit_exp elem] +[visit_id elem] not free +[visit_id elem] not free +[scope_exit elem] +[visit_exp `elem*`] +[visit_id elem*] no dims +[visit_id elem*] +[visit_exp start?{start <- `start?`}] +[scope_enter start] +[visit_exp start] +[visit_id start] not free +[visit_id start] not free +[scope_exit start] +[visit_exp `start?`] +[visit_id start?] no dims +[visit_id start?] +[visit_exp export*{export <- `export*`}] +[scope_enter export] +[visit_exp export] +[visit_id export] not free +[visit_id export] not free +[scope_exit export] +[visit_exp `export*`] +[visit_id export*] no dims +[visit_id export*] +[visit_exp $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*`})] +[visit_exp $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*`})] +[visit_exp $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?`})] +[visit_exp $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*`})] +[visit_exp $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*`})] +[visit_exp $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*`})] +[visit_exp $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*`})] +[visit_exp $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*`})] +[visit_exp $free_list($free_type(type)*{type <- `type*`}) +++ $free_list($free_tag(tag)*{tag <- `tag*`}) +++ $free_list($free_global(global)*{global <- `global*`})] +[visit_exp $free_list($free_type(type)*{type <- `type*`}) +++ $free_list($free_tag(tag)*{tag <- `tag*`})] +[visit_exp $free_list($free_type(type)*{type <- `type*`})] +[visit_exp $free_type(type)*{type <- `type*`}] +[scope_enter type] +[visit_exp $free_type(type)] +[visit_exp type] +[visit_id type] not free +[visit_id type] not free +[scope_exit type] +[visit_exp `type*`] +[visit_id type*] not free +[visit_id type*] no dims +[visit_exp $free_list($free_tag(tag)*{tag <- `tag*`})] +[visit_exp $free_tag(tag)*{tag <- `tag*`}] +[scope_enter tag] +[visit_exp $free_tag(tag)] +[visit_exp tag] +[visit_id tag] not free +[visit_id tag] not free +[scope_exit tag] +[visit_exp `tag*`] +[visit_id tag*] not free +[visit_id tag*] no dims +[visit_exp $free_list($free_global(global)*{global <- `global*`})] +[visit_exp $free_global(global)*{global <- `global*`}] +[scope_enter global] +[visit_exp $free_global(global)] +[visit_exp global] +[visit_id global] not free +[visit_id global] not free +[scope_exit global] +[visit_exp `global*`] +[visit_id global*] not free +[visit_id global*] no dims +[visit_exp $free_list($free_mem(mem)*{mem <- `mem*`})] +[visit_exp $free_mem(mem)*{mem <- `mem*`}] +[scope_enter mem] +[visit_exp $free_mem(mem)] +[visit_exp mem] +[visit_id mem] not free +[visit_id mem] not free +[scope_exit mem] +[visit_exp `mem*`] +[visit_id mem*] not free +[visit_id mem*] no dims +[visit_exp $free_list($free_table(table)*{table <- `table*`})] +[visit_exp $free_table(table)*{table <- `table*`}] +[scope_enter table] +[visit_exp $free_table(table)] +[visit_exp table] +[visit_id table] not free +[visit_id table] not free +[scope_exit table] +[visit_exp `table*`] +[visit_id table*] not free +[visit_id table*] no dims +[visit_exp $free_list($free_func(func)*{func <- `func*`})] +[visit_exp $free_func(func)*{func <- `func*`}] +[scope_enter func] +[visit_exp $free_func(func)] +[visit_exp func] +[visit_id func] not free +[visit_id func] not free +[scope_exit func] +[visit_exp `func*`] +[visit_id func*] not free +[visit_id func*] no dims +[visit_exp $free_list($free_data(data)*{data <- `data*`})] +[visit_exp $free_data(data)*{data <- `data*`}] +[scope_enter data] +[visit_exp $free_data(data)] +[visit_exp data] +[visit_id data] not free +[visit_id data] not free +[scope_exit data] +[visit_exp `data*`] +[visit_id data*] not free +[visit_id data*] no dims +[visit_exp $free_list($free_elem(elem)*{elem <- `elem*`})] +[visit_exp $free_elem(elem)*{elem <- `elem*`}] +[scope_enter elem] +[visit_exp $free_elem(elem)] +[visit_exp elem] +[visit_id elem] not free +[visit_id elem] not free +[scope_exit elem] +[visit_exp `elem*`] +[visit_id elem*] not free +[visit_id elem*] no dims +[visit_exp $free_opt($free_start(start)?{start <- `start?`})] +[visit_exp $free_start(start)?{start <- `start?`}] +[scope_enter start] +[visit_exp $free_start(start)] +[visit_exp start] +[visit_id start] not free +[visit_id start] not free +[scope_exit start] +[visit_exp `start?`] +[visit_id start?] not free +[visit_id start?] no dims +[visit_exp $free_list($free_import(import)*{import <- `import*`})] +[visit_exp $free_import(import)*{import <- `import*`}] +[scope_enter import] +[visit_exp $free_import(import)] +[visit_exp import] +[visit_id import] not free +[visit_id import] not free +[scope_exit import] +[visit_exp `import*`] +[visit_id import*] not free +[visit_id import*] no dims +[visit_exp $free_list($free_export(export)*{export <- `export*`})] +[visit_exp $free_export(export)*{export <- `export*`}] +[scope_enter export] +[visit_exp $free_export(export)] +[visit_exp export] +[visit_id export] not free +[visit_id export] not free +[scope_exit export] +[visit_exp `export*`] +[visit_id export*] not free +[visit_id export*] no dims +=> + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $free_module{`type*#11` : type*, `import*#11` : import*, `tag*#11` : tag*, `global*#11` : global*, `mem*#11` : mem*, `table*#11` : table*, `func*#11` : func*, `data*#11` : data*, `elem*#11` : elem*, `start?#11` : start?, `export*#11` : export*, `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*#11`, `import*#11`, `tag*#11`, `global*#11`, `mem*#11`, `table*#11`, `func*#11`, `data*#11`, `elem*#11`, `start?#11`, `export*#11`}(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*`}) +[check_dims] module +DecD funcidx_module(module : module) : funcidx* +[visit_id module] not free +[check_dims] funcidx*#38 module +[visit_exp module] +[visit_id module] +[visit_exp $free_module(module).`FUNCS`_free{`funcidx*#38`}] +[visit_exp $free_module(module)] +[visit_exp module] +[visit_id module] not free +[visit_exp `funcidx*#38`] +[visit_id funcidx*#38] +=> + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $funcidx_module{module : module, `funcidx*#38` : funcidx*}(module) = $free_module(module).`FUNCS`_free{`funcidx*#38`} +[check_dims] _ +DecD dataidx_funcs(func*) : dataidx* +[visit_id _] not free +[check_dims] dataidx*#38 func +[visit_exp func*{func <- `func*`}] +[scope_enter func] +[visit_exp func] +[visit_id func] not free +[visit_id func] not free +[scope_exit func] +[visit_exp `func*`] +[visit_id func*] no dims +[visit_id func*] +[visit_exp $free_list($free_func(func)*{func <- `func*`}).`DATAS`_free{`dataidx*#38`}] +[visit_exp $free_list($free_func(func)*{func <- `func*`})] +[visit_exp $free_func(func)*{func <- `func*`}] +[scope_enter func] +[visit_exp $free_func(func)] +[visit_exp func] +[visit_id func] not free +[visit_id func] not free +[scope_exit func] +[visit_exp `func*`] +[visit_id func*] not free +[visit_id func*] no dims +[visit_exp `dataidx*#38`] +[visit_id dataidx*#38] +=> + ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + def $dataidx_funcs{`func*` : func*, `dataidx*#38` : dataidx*}(func*{func <- `func*`}) = $free_list($free_func(func)*{func <- `func*`}).`DATAS`_free{`dataidx*#38`} +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id init] no dims +[visit_id init] +[visit_id valtype] no dims +[visit_id valtype] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id resulttype] no dims +[visit_id resulttype] +[visit_id localidx*] no dims +[visit_id localidx*] +[visit_id resulttype] not free +[visit_id resulttype] no dims +[check_dims] +[check_dims] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id deftype*] no dims +[visit_id deftype*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id subtype*] no dims +[visit_id subtype*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id tagtype*] no dims +[visit_id tagtype*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id globaltype*] no dims +[visit_id globaltype*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id memtype*] no dims +[visit_id memtype*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id tabletype*] no dims +[visit_id tabletype*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id deftype*] no dims +[visit_id deftype*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id datatype*] no dims +[visit_id datatype*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id elemtype*] no dims +[visit_id elemtype*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id localtype*] no dims +[visit_id localtype*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id resulttype*] no dims +[visit_id resulttype*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id resulttype?] no dims +[visit_id resulttype?] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id funcidx*] no dims +[visit_id funcidx*] +[check_dims] +[check_dims] _ context +DecD with_locals(context : context, localidx*, localtype*) : context +[visit_id context] not free +[visit_id _] not free +[visit_id _] not free +[check_dims] C +[visit_exp C] +[visit_id C] +[visit_exp []] +[visit_exp []] +[visit_exp C] +[visit_id C] not free +=> + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + def $with_locals{C : context}(C, [], []) = C +[check_dims] C i#3970 lct lct_1 localtype*#1 x x_1 +[visit_exp C] +[visit_id C] +[visit_exp [x_1] ++ x*{x <- `x*`}] +[visit_exp [x_1]] +[visit_exp x_1] +[visit_id x_1] +[visit_exp x*{x <- `x*`}] +[scope_enter x] +[visit_exp x] +[visit_id x] not free +[visit_id x] not free +[scope_exit x] +[visit_exp `x*`] +[visit_id x*] no dims +[visit_id x*] +[visit_exp [lct_1] ++ lct*{lct <- `lct*`}] +[visit_exp [lct_1]] +[visit_exp lct_1] +[visit_id lct_1] +[visit_exp lct*{lct <- `lct*`}] +[scope_enter lct] +[visit_exp lct] +[visit_id lct] not free +[visit_id lct] not free +[scope_exit lct] +[visit_exp `lct*`] +[visit_id lct*] no dims +[visit_id lct*] +[visit_exp $with_locals(C[`LOCALS`_context{`localtype*#1`}[x_1!`%`_idx{i#3970}.0] = lct_1], x*{x <- `x*`}, lct*{lct <- `lct*`})] +[visit_exp C[`LOCALS`_context{`localtype*#1`}[x_1!`%`_idx{i#3970}.0] = lct_1]] +[visit_exp C] +[visit_id C] not free +[visit_exp `localtype*#1`] +[visit_id localtype*#1] +[visit_exp x_1!`%`_idx{i#3970}.0] +[visit_exp x_1!`%`_idx{i#3970}] +[visit_exp x_1] +[visit_id x_1] not free +[visit_exp i#3970] +[visit_id i#3970] +[visit_exp lct_1] +[visit_id lct_1] not free +[visit_exp x*{x <- `x*`}] +[scope_enter x] +[visit_exp x] +[visit_id x] not free +[visit_id x] not free +[scope_exit x] +[visit_exp `x*`] +[visit_id x*] not free +[visit_id x*] no dims +[visit_exp lct*{lct <- `lct*`}] +[scope_enter lct] +[visit_exp lct] +[visit_id lct] not free +[visit_id lct] not free +[scope_exit lct] +[visit_exp `lct*`] +[visit_id lct*] not free +[visit_id lct*] no dims +=> + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + def $with_locals{C : context, x_1 : idx, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*, `localtype*#1` : localtype*, i#3970 : nat}(C, [x_1] ++ x*{x <- `x*`}, [lct_1] ++ lct*{lct <- `lct*`}) = $with_locals(C[`LOCALS`_context{`localtype*#1`}[x_1!`%`_idx{i#3970}.0] = lct_1], x*{x <- `x*`}, lct*{lct <- `lct*`}) +[check_dims] context valtype +DecD clos_valtype(context : context, valtype : valtype) : valtype +[visit_id context] not free +[visit_id valtype] not free +[check_dims] context deftype +DecD clos_deftype(context : context, deftype : deftype) : deftype +[visit_id context] not free +[visit_id deftype] not free +[check_dims] context tagtype +DecD clos_tagtype(context : context, tagtype : tagtype) : tagtype +[visit_id context] not free +[visit_id tagtype] not free +[check_dims] context externtype +DecD clos_externtype(context : context, externtype : externtype) : externtype +[visit_id context] not free +[visit_id externtype] not free +[check_dims] context moduletype +DecD clos_moduletype(context : context, moduletype : moduletype) : moduletype +[visit_id context] not free +[visit_id moduletype] not free +[check_dims] _ +DecD clos_deftypes(deftype*) : deftype* +[visit_id _] not free +[check_dims] C deftype*#2 dt t +[visit_exp C] +[visit_id C] +[visit_exp t] +[visit_id t] +[visit_exp $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`})] +[visit_exp t] +[visit_id t] not free +[visit_exp (dt : deftype <: typeuse)*{dt <- `dt*`}] +[scope_enter dt] +[visit_exp (dt : deftype <: typeuse)] +[visit_exp dt] +[visit_id dt] not free +[visit_id dt] not free +[scope_exit dt] +[visit_exp `dt*`] +[visit_id dt*] no dims +[visit_id dt*] +[visit_exp (dt*{dt <- `dt*`} = $clos_deftypes(C.`TYPES`_context{`deftype*#2`}))] +[visit_exp dt*{dt <- `dt*`}] +[scope_enter dt] +[visit_exp dt] +[visit_id dt] not free +[visit_id dt] not free +[scope_exit dt] +[visit_exp `dt*`] +[visit_id dt*] not free +[visit_id dt*] no dims +[visit_exp $clos_deftypes(C.`TYPES`_context{`deftype*#2`})] +[visit_exp C.`TYPES`_context{`deftype*#2`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `deftype*#2`] +[visit_id deftype*#2] +=> + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + def $clos_valtype{C : context, t : valtype, `dt*` : deftype*, `deftype*#2` : deftype*}(C, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.`TYPES`_context{`deftype*#2`})) +[check_dims] C deftype*#4 dt dt' +[visit_exp C] +[visit_id C] +[visit_exp dt] +[visit_id dt] +[visit_exp $subst_all_deftype(dt, (dt' : deftype <: typeuse)*{dt' <- `dt'*`})] +[visit_exp dt] +[visit_id dt] not free +[visit_exp (dt' : deftype <: typeuse)*{dt' <- `dt'*`}] +[scope_enter dt'] +[visit_exp (dt' : deftype <: typeuse)] +[visit_exp dt'] +[visit_id dt'] not free +[visit_id dt'] not free +[scope_exit dt'] +[visit_exp `dt'*`] +[visit_id dt'*] no dims +[visit_id dt'*] +[visit_exp (dt'*{dt' <- `dt'*`} = $clos_deftypes(C.`TYPES`_context{`deftype*#4`}))] +[visit_exp dt'*{dt' <- `dt'*`}] +[scope_enter dt'] +[visit_exp dt'] +[visit_id dt'] not free +[visit_id dt'] not free +[scope_exit dt'] +[visit_exp `dt'*`] +[visit_id dt'*] not free +[visit_id dt'*] no dims +[visit_exp $clos_deftypes(C.`TYPES`_context{`deftype*#4`})] +[visit_exp C.`TYPES`_context{`deftype*#4`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `deftype*#4`] +[visit_id deftype*#4] +=> + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + def $clos_deftype{C : context, dt : deftype, `dt'*` : deftype*, `deftype*#4` : deftype*}(C, dt) = $subst_all_deftype(dt, (dt' : deftype <: typeuse)*{dt' <- `dt'*`}) + -- if (dt'*{dt' <- `dt'*`} = $clos_deftypes(C.`TYPES`_context{`deftype*#4`})) +[check_dims] C deftype*#6 dt jt +[visit_exp C] +[visit_id C] +[visit_exp jt] +[visit_id jt] +[visit_exp $subst_all_tagtype(jt, (dt : deftype <: typeuse)*{dt <- `dt*`})] +[visit_exp jt] +[visit_id jt] not free +[visit_exp (dt : deftype <: typeuse)*{dt <- `dt*`}] +[scope_enter dt] +[visit_exp (dt : deftype <: typeuse)] +[visit_exp dt] +[visit_id dt] not free +[visit_id dt] not free +[scope_exit dt] +[visit_exp `dt*`] +[visit_id dt*] no dims +[visit_id dt*] +[visit_exp (dt*{dt <- `dt*`} = $clos_deftypes(C.`TYPES`_context{`deftype*#6`}))] +[visit_exp dt*{dt <- `dt*`}] +[scope_enter dt] +[visit_exp dt] +[visit_id dt] not free +[visit_id dt] not free +[scope_exit dt] +[visit_exp `dt*`] +[visit_id dt*] not free +[visit_id dt*] no dims +[visit_exp $clos_deftypes(C.`TYPES`_context{`deftype*#6`})] +[visit_exp C.`TYPES`_context{`deftype*#6`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `deftype*#6`] +[visit_id deftype*#6] +=> + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + def $clos_tagtype{C : context, jt : tagtype, `dt*` : deftype*, `deftype*#6` : deftype*}(C, jt) = $subst_all_tagtype(jt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.`TYPES`_context{`deftype*#6`})) +[check_dims] C deftype*#8 dt xt +[visit_exp C] +[visit_id C] +[visit_exp xt] +[visit_id xt] +[visit_exp $subst_all_externtype(xt, (dt : deftype <: typeuse)*{dt <- `dt*`})] +[visit_exp xt] +[visit_id xt] not free +[visit_exp (dt : deftype <: typeuse)*{dt <- `dt*`}] +[scope_enter dt] +[visit_exp (dt : deftype <: typeuse)] +[visit_exp dt] +[visit_id dt] not free +[visit_id dt] not free +[scope_exit dt] +[visit_exp `dt*`] +[visit_id dt*] no dims +[visit_id dt*] +[visit_exp (dt*{dt <- `dt*`} = $clos_deftypes(C.`TYPES`_context{`deftype*#8`}))] +[visit_exp dt*{dt <- `dt*`}] +[scope_enter dt] +[visit_exp dt] +[visit_id dt] not free +[visit_id dt] not free +[scope_exit dt] +[visit_exp `dt*`] +[visit_id dt*] not free +[visit_id dt*] no dims +[visit_exp $clos_deftypes(C.`TYPES`_context{`deftype*#8`})] +[visit_exp C.`TYPES`_context{`deftype*#8`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `deftype*#8`] +[visit_id deftype*#8] +=> + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + def $clos_externtype{C : context, xt : externtype, `dt*` : deftype*, `deftype*#8` : deftype*}(C, xt) = $subst_all_externtype(xt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.`TYPES`_context{`deftype*#8`})) +[check_dims] C deftype*#10 dt mmt +[visit_exp C] +[visit_id C] +[visit_exp mmt] +[visit_id mmt] +[visit_exp $subst_all_moduletype(mmt, (dt : deftype <: typeuse)*{dt <- `dt*`})] +[visit_exp mmt] +[visit_id mmt] not free +[visit_exp (dt : deftype <: typeuse)*{dt <- `dt*`}] +[scope_enter dt] +[visit_exp (dt : deftype <: typeuse)] +[visit_exp dt] +[visit_id dt] not free +[visit_id dt] not free +[scope_exit dt] +[visit_exp `dt*`] +[visit_id dt*] no dims +[visit_id dt*] +[visit_exp (dt*{dt <- `dt*`} = $clos_deftypes(C.`TYPES`_context{`deftype*#10`}))] +[visit_exp dt*{dt <- `dt*`}] +[scope_enter dt] +[visit_exp dt] +[visit_id dt] not free +[visit_id dt] not free +[scope_exit dt] +[visit_exp `dt*`] +[visit_id dt*] not free +[visit_id dt*] no dims +[visit_exp $clos_deftypes(C.`TYPES`_context{`deftype*#10`})] +[visit_exp C.`TYPES`_context{`deftype*#10`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `deftype*#10`] +[visit_id deftype*#10] +=> + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + def $clos_moduletype{C : context, mmt : moduletype, `dt*` : deftype*, `deftype*#10` : deftype*}(C, mmt) = $subst_all_moduletype(mmt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.`TYPES`_context{`deftype*#10`})) +[check_dims] +[visit_exp []] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + def $clos_deftypes([]) = [] +[check_dims] dt dt' dt_n +[visit_exp dt*{dt <- `dt*`} ++ [dt_n]] +[visit_exp dt*{dt <- `dt*`}] +[scope_enter dt] +[visit_exp dt] +[visit_id dt] not free +[visit_id dt] not free +[scope_exit dt] +[visit_exp `dt*`] +[visit_id dt*] no dims +[visit_id dt*] +[visit_exp [dt_n]] +[visit_exp dt_n] +[visit_id dt_n] +[visit_exp dt'*{dt' <- `dt'*`} ++ [$subst_all_deftype(dt_n, (dt' : deftype <: typeuse)*{dt' <- `dt'*`})]] +[visit_exp dt'*{dt' <- `dt'*`}] +[scope_enter dt'] +[visit_exp dt'] +[visit_id dt'] not free +[visit_id dt'] not free +[scope_exit dt'] +[visit_exp `dt'*`] +[visit_id dt'*] no dims +[visit_id dt'*] +[visit_exp [$subst_all_deftype(dt_n, (dt' : deftype <: typeuse)*{dt' <- `dt'*`})]] +[visit_exp $subst_all_deftype(dt_n, (dt' : deftype <: typeuse)*{dt' <- `dt'*`})] +[visit_exp dt_n] +[visit_id dt_n] not free +[visit_exp (dt' : deftype <: typeuse)*{dt' <- `dt'*`}] +[scope_enter dt'] +[visit_exp (dt' : deftype <: typeuse)] +[visit_exp dt'] +[visit_id dt'] not free +[visit_id dt'] not free +[scope_exit dt'] +[visit_exp `dt'*`] +[visit_id dt'*] not free +[visit_id dt'*] no dims +[visit_exp (dt'*{dt' <- `dt'*`} = $clos_deftypes(dt*{dt <- `dt*`}))] +[visit_exp dt'*{dt' <- `dt'*`}] +[scope_enter dt'] +[visit_exp dt'] +[visit_id dt'] not free +[visit_id dt'] not free +[scope_exit dt'] +[visit_exp `dt'*`] +[visit_id dt'*] not free +[visit_id dt'*] no dims +[visit_exp $clos_deftypes(dt*{dt <- `dt*`})] +[visit_exp dt*{dt <- `dt*`}] +[scope_enter dt] +[visit_exp dt] +[visit_id dt] not free +[visit_id dt] not free +[scope_exit dt] +[visit_exp `dt*`] +[visit_id dt*] not free +[visit_id dt*] no dims +=> + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + 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*`})) +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] C numtype +[visit_exp C] +[visit_id C] +[visit_exp numtype] +[visit_id numtype] +[check_dims] C vectype +[visit_exp C] +[visit_id C] +[visit_exp vectype] +[visit_id vectype] +[check_dims] C absheaptype +[visit_exp C] +[visit_id C] +[visit_exp (absheaptype : absheaptype <: heaptype)] +[visit_exp absheaptype] +[visit_id absheaptype] +[check_dims] C typeuse +[visit_exp C] +[visit_id C] +[visit_exp (typeuse : typeuse <: heaptype)] +[visit_exp typeuse] +[visit_id typeuse] +[visit_exp (C, typeuse)] +[visit_exp C] +[visit_id C] not free +[visit_exp typeuse] +[visit_id typeuse] not free +[check_dims] C heaptype heaptype#421 null?#419 +[visit_exp C] +[visit_id C] +[visit_exp `REF`_reftype{`null?#419`, heaptype#421}(`NULL`_null?{}, heaptype)] +[visit_exp `null?#419`] +[visit_id null?#419] +[visit_exp heaptype#421] +[visit_id heaptype#421] +[visit_exp (`NULL`_null?{}, heaptype)] +[visit_exp `NULL`_null?{}] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp heaptype] +[visit_id heaptype] +[visit_exp (C, heaptype)] +[visit_exp C] +[visit_id C] not free +[visit_exp heaptype] +[visit_id heaptype] not free +[check_dims] C numtype +[visit_exp C] +[visit_id C] +[visit_exp (numtype : numtype <: valtype)] +[visit_exp numtype] +[visit_id numtype] +[visit_exp (C, numtype)] +[visit_exp C] +[visit_id C] not free +[visit_exp numtype] +[visit_id numtype] not free +[check_dims] C vectype +[visit_exp C] +[visit_id C] +[visit_exp (vectype : vectype <: valtype)] +[visit_exp vectype] +[visit_id vectype] +[visit_exp (C, vectype)] +[visit_exp C] +[visit_id C] not free +[visit_exp vectype] +[visit_id vectype] not free +[check_dims] C reftype +[visit_exp C] +[visit_id C] +[visit_exp (reftype : reftype <: valtype)] +[visit_exp reftype] +[visit_id reftype] +[visit_exp (C, reftype)] +[visit_exp C] +[visit_id C] not free +[visit_exp reftype] +[visit_id reftype] not free +[check_dims] C +[visit_exp C] +[visit_id C] +[visit_exp `BOT`_valtype] +[visit_exp ()] +[check_dims] +[check_dims] +[check_dims] C X*#465 t +[visit_exp C] +[visit_id C] +[visit_exp `%`_resulttype{`X*#465`}(t*{t <- `t*`})] +[visit_exp `X*#465`] +[visit_id X*#465] +[visit_exp (t*{t <- `t*`})] +[visit_exp t*{t <- `t*`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] no dims +[visit_id t*] +[scope_enter t] +[visit_exp (C, t)] +[visit_exp C] +[visit_id C] not free +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] not free +[visit_id t*] no dims +[check_dims] C X*#478 X*#530 X*#543 X*#556 i#4081 lct localidx*#47 localtype*#2 resulttype#27 t_1 t_2 x +[visit_exp C] +[visit_id C] +[visit_exp `%->_%%`_instrtype{resulttype#27, `localidx*#47`}(`%`_resulttype{`X*#478`}(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype{`X*#530`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#27] +[visit_id resulttype#27] +[visit_exp `localidx*#47`] +[visit_id localidx*#47] +[visit_exp (`%`_resulttype{`X*#478`}(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype{`X*#530`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#478`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#478`] +[visit_id X*#478] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] no dims +[visit_id t_1*] +[visit_exp x*{x <- `x*`}] +[scope_enter x] +[visit_exp x] +[visit_id x] not free +[visit_id x] not free +[scope_exit x] +[visit_exp `x*`] +[visit_id x*] no dims +[visit_id x*] +[visit_exp `%`_resulttype{`X*#530`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#530`] +[visit_id X*#530] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] no dims +[visit_id t_2*] +[visit_exp (C, `%`_resulttype{`X*#543`}(t_1*{t_1 <- `t_1*`}))] +[visit_exp C] +[visit_id C] not free +[visit_exp `%`_resulttype{`X*#543`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#543`] +[visit_id X*#543] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] not free +[visit_id t_1*] no dims +[visit_exp (C, `%`_resulttype{`X*#556`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp C] +[visit_id C] not free +[visit_exp `%`_resulttype{`X*#556`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#556`] +[visit_id X*#556] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] not free +[visit_id t_2*] no dims +[scope_enter i#4081] +[scope_enter lct] +[scope_enter localtype*#2] +[scope_enter x] +[visit_exp (C.`LOCALS`_context{`localtype*#2`}[x!`%`_idx{i#4081}.0] = lct)] +[visit_exp C.`LOCALS`_context{`localtype*#2`}[x!`%`_idx{i#4081}.0]] +[visit_exp C.`LOCALS`_context{`localtype*#2`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `localtype*#2`] +[visit_id localtype*#2] not free +[visit_exp x!`%`_idx{i#4081}.0] +[visit_exp x!`%`_idx{i#4081}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#4081] +[visit_id i#4081] not free +[visit_exp lct] +[visit_id lct] not free +[visit_id i#4081] not free +[visit_id lct] not free +[visit_id localtype*#2] not free +[visit_id x] not free +[scope_exit x] +[scope_exit localtype*#2] +[scope_exit lct] +[scope_exit i#4081] +[visit_exp `i#4081*`] +[visit_id i#4081*] no dims +[visit_id i#4081*] +[visit_exp `lct*`] +[visit_id lct*] no dims +[visit_id lct*] +[visit_exp `localtype*#2*`] +[visit_id localtype*#2*] no dims +[visit_id localtype*#2*] +[visit_exp `x*`] +[visit_id x*] not free +[visit_id x*] no dims +[check_dims] +[check_dims] +[check_dims] comptype deftype +[visit_exp deftype] +[visit_id deftype] +[visit_exp comptype] +[visit_id comptype] +[visit_exp ($expanddt(deftype) = comptype)] +[visit_exp $expanddt(deftype)] +[visit_exp deftype] +[visit_id deftype] not free +[visit_exp comptype] +[visit_id comptype] not free +[check_dims] C comptype deftype +[visit_exp (deftype : deftype <: typeuse)] +[visit_exp deftype] +[visit_id deftype] +[visit_exp C] +[visit_id C] +[visit_exp comptype] +[visit_id comptype] +[visit_exp (deftype, comptype)] +[visit_exp deftype] +[visit_id deftype] not free +[visit_exp comptype] +[visit_id comptype] not free +[check_dims] C comptype deftype*#11 i#4103 typeidx typeidx#220 +[visit_exp `_IDX`_typeuse{typeidx#220}(typeidx)] +[visit_exp typeidx#220] +[visit_id typeidx#220] +[visit_exp (typeidx)] +[visit_exp typeidx] +[visit_id typeidx] +[visit_exp C] +[visit_id C] +[visit_exp comptype] +[visit_id comptype] +[visit_exp (C.`TYPES`_context{`deftype*#11`}[typeidx!`%`_typeidx{i#4103}.0], comptype)] +[visit_exp C.`TYPES`_context{`deftype*#11`}[typeidx!`%`_typeidx{i#4103}.0]] +[visit_exp C.`TYPES`_context{`deftype*#11`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `deftype*#11`] +[visit_id deftype*#11] +[visit_exp typeidx!`%`_typeidx{i#4103}.0] +[visit_exp typeidx!`%`_typeidx{i#4103}] +[visit_exp typeidx] +[visit_id typeidx] not free +[visit_exp i#4103] +[visit_id i#4103] +[visit_exp comptype] +[visit_id comptype] not free +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id typeidx] no dims +[visit_id typeidx] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id typeidx] no dims +[visit_id typeidx] +[visit_id _] not free +[visit_id _] no dims +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] C deftype*#12 dt i#4125 typeidx typeidx#222 +[visit_exp C] +[visit_id C] +[visit_exp `_IDX`_typeuse{typeidx#222}(typeidx)] +[visit_exp typeidx#222] +[visit_id typeidx#222] +[visit_exp (typeidx)] +[visit_exp typeidx] +[visit_id typeidx] +[visit_exp (C.`TYPES`_context{`deftype*#12`}[typeidx!`%`_typeidx{i#4125}.0] = dt)] +[visit_exp C.`TYPES`_context{`deftype*#12`}[typeidx!`%`_typeidx{i#4125}.0]] +[visit_exp C.`TYPES`_context{`deftype*#12`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `deftype*#12`] +[visit_id deftype*#12] +[visit_exp typeidx!`%`_typeidx{i#4125}.0] +[visit_exp typeidx!`%`_typeidx{i#4125}] +[visit_exp typeidx] +[visit_id typeidx] not free +[visit_exp i#4125] +[visit_id i#4125] +[visit_exp dt] +[visit_id dt] +[check_dims] C i n#501 st subtype*#1 +[visit_exp C] +[visit_id C] +[visit_exp `REC`_typeuse{n#501}(i)] +[visit_exp n#501] +[visit_id n#501] +[visit_exp (i)] +[visit_exp i] +[visit_id i] +[visit_exp (C.`RECS`_context{`subtype*#1`}[i] = st)] +[visit_exp C.`RECS`_context{`subtype*#1`}[i]] +[visit_exp C.`RECS`_context{`subtype*#1`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `subtype*#1`] +[visit_id subtype*#1] +[visit_exp i] +[visit_id i] not free +[visit_exp st] +[visit_id st] +[check_dims] C deftype +[visit_exp C] +[visit_id C] +[visit_exp (deftype : deftype <: typeuse)] +[visit_exp deftype] +[visit_id deftype] +[visit_exp (C, deftype)] +[visit_exp C] +[visit_id C] not free +[visit_exp deftype] +[visit_id deftype] not free +[check_dims] C packtype +[visit_exp C] +[visit_id C] +[visit_exp packtype] +[visit_id packtype] +[check_dims] C valtype +[visit_exp C] +[visit_id C] +[visit_exp (valtype : valtype <: storagetype)] +[visit_exp valtype] +[visit_id valtype] +[visit_exp (C, valtype)] +[visit_exp C] +[visit_id C] not free +[visit_exp valtype] +[visit_id valtype] not free +[check_dims] C packtype +[visit_exp C] +[visit_id C] +[visit_exp (packtype : packtype <: storagetype)] +[visit_exp packtype] +[visit_id packtype] +[visit_exp (C, packtype)] +[visit_exp C] +[visit_id C] not free +[visit_exp packtype] +[visit_id packtype] not free +[check_dims] C mut?#289 storagetype storagetype#137 +[visit_exp C] +[visit_id C] +[visit_exp `%%`_fieldtype{`mut?#289`, storagetype#137}(`MUT`_mut?{}, storagetype)] +[visit_exp `mut?#289`] +[visit_id mut?#289] +[visit_exp storagetype#137] +[visit_id storagetype#137] +[visit_exp (`MUT`_mut?{}, storagetype)] +[visit_exp `MUT`_mut?{}] +[visit_exp `MUT`_mut] +[visit_exp ()] +[visit_exp storagetype] +[visit_id storagetype] +[visit_exp (C, storagetype)] +[visit_exp C] +[visit_id C] not free +[visit_exp storagetype] +[visit_id storagetype] not free +[check_dims] C X*#571 fieldtype +[visit_exp C] +[visit_id C] +[visit_exp `STRUCT`_comptype(`%`_list{`X*#571`}(fieldtype*{fieldtype <- `fieldtype*`}))] +[visit_exp (`%`_list{`X*#571`}(fieldtype*{fieldtype <- `fieldtype*`}))] +[visit_exp `%`_list{`X*#571`}(fieldtype*{fieldtype <- `fieldtype*`})] +[visit_exp `X*#571`] +[visit_id X*#571] +[visit_exp (fieldtype*{fieldtype <- `fieldtype*`})] +[visit_exp fieldtype*{fieldtype <- `fieldtype*`}] +[scope_enter fieldtype] +[visit_exp fieldtype] +[visit_id fieldtype] not free +[visit_id fieldtype] not free +[scope_exit fieldtype] +[visit_exp `fieldtype*`] +[visit_id fieldtype*] no dims +[visit_id fieldtype*] +[scope_enter fieldtype] +[visit_exp (C, fieldtype)] +[visit_exp C] +[visit_id C] not free +[visit_exp fieldtype] +[visit_id fieldtype] not free +[visit_id fieldtype] not free +[scope_exit fieldtype] +[visit_exp `fieldtype*`] +[visit_id fieldtype*] not free +[visit_id fieldtype*] no dims +[check_dims] C fieldtype fieldtype#7 +[visit_exp C] +[visit_id C] +[visit_exp `ARRAY`_comptype{fieldtype#7}(fieldtype)] +[visit_exp fieldtype#7] +[visit_id fieldtype#7] +[visit_exp (fieldtype)] +[visit_exp fieldtype] +[visit_id fieldtype] +[visit_exp (C, fieldtype)] +[visit_exp C] +[visit_id C] not free +[visit_exp fieldtype] +[visit_id fieldtype] not free +[check_dims] C X*#586 X*#599 X*#612 X*#625 resulttype#30 t_1 t_2 +[visit_exp C] +[visit_id C] +[visit_exp `FUNC%->%`_comptype{resulttype#30}(`%`_resulttype{`X*#586`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#599`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#30] +[visit_id resulttype#30] +[visit_exp (`%`_resulttype{`X*#586`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#599`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#586`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#586`] +[visit_id X*#586] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] no dims +[visit_id t_1*] +[visit_exp `%`_resulttype{`X*#599`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#599`] +[visit_id X*#599] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] no dims +[visit_id t_2*] +[visit_exp (C, `%`_resulttype{`X*#612`}(t_1*{t_1 <- `t_1*`}))] +[visit_exp C] +[visit_id C] not free +[visit_exp `%`_resulttype{`X*#612`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#612`] +[visit_id X*#612] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] not free +[visit_id t_1*] no dims +[visit_exp (C, `%`_resulttype{`X*#625`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp C] +[visit_id C] not free +[visit_exp `%`_resulttype{`X*#625`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#625`] +[visit_id X*#625] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] not free +[visit_id t_2*] no dims +[check_dims] C comptype comptype#215 comptype#227 comptype' deftype*#13 final?#215 final?#227 i#4171 i#4181 i#4191 typeidx#224 typeidx#236 typeidx#238 typeuse*#215 typeuse*#227 x x' x_0 +[visit_exp C] +[visit_id C] +[visit_exp `SUB`_subtype{`final?#215`, `typeuse*#215`, comptype#215}(`FINAL`_final?{}, `_IDX`_typeuse{typeidx#224}(x)*{typeidx#224 <- `typeidx#224*`, x <- `x*`}, comptype)] +[visit_exp `final?#215`] +[visit_id final?#215] +[visit_exp `typeuse*#215`] +[visit_id typeuse*#215] +[visit_exp comptype#215] +[visit_id comptype#215] +[visit_exp (`FINAL`_final?{}, `_IDX`_typeuse{typeidx#224}(x)*{typeidx#224 <- `typeidx#224*`, x <- `x*`}, comptype)] +[visit_exp `FINAL`_final?{}] +[visit_exp `FINAL`_final] +[visit_exp ()] +[visit_exp `_IDX`_typeuse{typeidx#224}(x)*{typeidx#224 <- `typeidx#224*`, x <- `x*`}] +[scope_enter typeidx#224] +[scope_enter x] +[visit_exp `_IDX`_typeuse{typeidx#224}(x)] +[visit_exp typeidx#224] +[visit_id typeidx#224] not free +[visit_exp (x)] +[visit_exp x] +[visit_id x] not free +[visit_id typeidx#224] not free +[visit_id x] not free +[scope_exit x] +[scope_exit typeidx#224] +[visit_exp `typeidx#224*`] +[visit_id typeidx#224*] no dims +[visit_id typeidx#224*] +[visit_exp `x*`] +[visit_id x*] no dims +[visit_id x*] +[visit_exp comptype] +[visit_id comptype] +[visit_exp `OK`_oktypeidx{typeidx#236}(x_0)] +[visit_exp typeidx#236] +[visit_id typeidx#236] +[visit_exp (x_0)] +[visit_exp x_0] +[visit_id x_0] +[visit_exp (|x*{x <- `x*`}| <= 1)] +[visit_exp |x*{x <- `x*`}|] +[visit_exp x*{x <- `x*`}] +[scope_enter x] +[visit_exp x] +[visit_id x] not free +[visit_id x] not free +[scope_exit x] +[visit_exp `x*`] +[visit_id x*] not free +[visit_id x*] no dims +[visit_exp 1] +[scope_enter i#4171] +[scope_enter i#4181] +[scope_enter x] +[visit_exp (x!`%`_idx{i#4171}.0 < x_0!`%`_idx{i#4181}.0)] +[visit_exp x!`%`_idx{i#4171}.0] +[visit_exp x!`%`_idx{i#4171}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#4171] +[visit_id i#4171] not free +[visit_exp x_0!`%`_idx{i#4181}.0] +[visit_exp x_0!`%`_idx{i#4181}] +[visit_exp x_0] +[visit_id x_0] not free +[visit_exp i#4181] +[visit_id i#4181] not free +[visit_id i#4171] not free +[visit_id i#4181] not free +[visit_id x] not free +[scope_exit x] +[scope_exit i#4181] +[scope_exit i#4171] +[visit_exp `i#4171*`] +[visit_id i#4171*] no dims +[visit_id i#4171*] +[visit_exp `i#4181*`] +[visit_id i#4181*] no dims +[visit_id i#4181*] +[visit_exp `x*`] +[visit_id x*] not free +[visit_id x*] no dims +[scope_enter comptype#227] +[scope_enter comptype'] +[scope_enter deftype*#13] +[scope_enter final?#227] +[scope_enter i#4191] +[scope_enter typeidx#238*] +[scope_enter typeuse*#227] +[scope_enter x] +[scope_enter x'*] +[visit_exp ($unrolldt(C.`TYPES`_context{`deftype*#13`}[x!`%`_idx{i#4191}.0]) = `SUB`_subtype{`final?#227`, `typeuse*#227`, comptype#227}(?(), `_IDX`_typeuse{typeidx#238}(x')*{typeidx#238 <- `typeidx#238*`, x' <- `x'*`}, comptype'))] +[visit_exp $unrolldt(C.`TYPES`_context{`deftype*#13`}[x!`%`_idx{i#4191}.0])] +[visit_exp C.`TYPES`_context{`deftype*#13`}[x!`%`_idx{i#4191}.0]] +[visit_exp C.`TYPES`_context{`deftype*#13`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `deftype*#13`] +[visit_id deftype*#13] not free +[visit_exp x!`%`_idx{i#4191}.0] +[visit_exp x!`%`_idx{i#4191}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#4191] +[visit_id i#4191] not free +[visit_exp `SUB`_subtype{`final?#227`, `typeuse*#227`, comptype#227}(?(), `_IDX`_typeuse{typeidx#238}(x')*{typeidx#238 <- `typeidx#238*`, x' <- `x'*`}, comptype')] +[visit_exp `final?#227`] +[visit_id final?#227] not free +[visit_exp `typeuse*#227`] +[visit_id typeuse*#227] not free +[visit_exp comptype#227] +[visit_id comptype#227] not free +[visit_exp (?(), `_IDX`_typeuse{typeidx#238}(x')*{typeidx#238 <- `typeidx#238*`, x' <- `x'*`}, comptype')] +[visit_exp ?()] +[visit_exp `_IDX`_typeuse{typeidx#238}(x')*{typeidx#238 <- `typeidx#238*`, x' <- `x'*`}] +[scope_enter typeidx#238] +[scope_enter x'] +[visit_exp `_IDX`_typeuse{typeidx#238}(x')] +[visit_exp typeidx#238] +[visit_id typeidx#238] not free +[visit_exp (x')] +[visit_exp x'] +[visit_id x'] not free +[visit_id typeidx#238] not free +[visit_id x'] not free +[scope_exit x'] +[scope_exit typeidx#238] +[visit_exp `typeidx#238*`] +[visit_id typeidx#238*] not free +[visit_id typeidx#238*] no dims +[visit_exp `x'*`] +[visit_id x'*] not free +[visit_id x'*] no dims +[visit_exp comptype'] +[visit_id comptype'] not free +[visit_id comptype#227] not free +[visit_id comptype'] not free +[visit_id deftype*#13] not free +[visit_id final?#227] not free +[visit_id i#4191] not free +[visit_id typeidx#238*] not free +[visit_id typeidx#238*] no dims +[visit_id typeuse*#227] not free +[visit_id x] not free +[visit_id x'*] not free +[visit_id x'*] no dims +[scope_exit x'*] +[scope_exit x] +[scope_exit typeuse*#227] +[scope_exit typeidx#238*] +[scope_exit i#4191] +[scope_exit final?#227] +[scope_exit deftype*#13] +[scope_exit comptype'] +[scope_exit comptype#227] +[visit_exp `comptype#227*`] +[visit_id comptype#227*] no dims +[visit_id comptype#227*] +[visit_exp `comptype'*`] +[visit_id comptype'*] no dims +[visit_id comptype'*] +[visit_exp `deftype*#13*`] +[visit_id deftype*#13*] no dims +[visit_id deftype*#13*] +[visit_exp `final?#227*`] +[visit_id final?#227*] no dims +[visit_id final?#227*] +[visit_exp `i#4191*`] +[visit_id i#4191*] no dims +[visit_id i#4191*] +[visit_exp `typeidx#238**`] +[visit_id typeidx#238**] no dims +[visit_id typeidx#238**] +[visit_exp `typeuse*#227*`] +[visit_id typeuse*#227*] no dims +[visit_id typeuse*#227*] +[visit_exp `x*`] +[visit_id x*] not free +[visit_id x*] no dims +[visit_exp `x'**`] +[visit_id x'**] no dims +[visit_id x'**] +[visit_exp (C, comptype)] +[visit_exp C] +[visit_id C] not free +[visit_exp comptype] +[visit_id comptype] not free +[scope_enter comptype'] +[visit_exp (C, comptype, comptype')] +[visit_exp C] +[visit_id C] not free +[visit_exp comptype] +[visit_id comptype] not free +[visit_exp comptype'] +[visit_id comptype'] not free +[visit_id comptype'] not free +[scope_exit comptype'] +[visit_exp `comptype'*`] +[visit_id comptype'*] not free +[visit_id comptype'*] no dims +[check_dims] nat typeidx typeuse +DecD before(typeuse : typeuse, typeidx : typeidx, nat : nat) : bool +[visit_id typeuse] not free +[visit_id typeidx] not free +[visit_id nat] not free +[check_dims] deftype i x +[visit_exp (deftype : deftype <: typeuse)] +[visit_exp deftype] +[visit_id deftype] +[visit_exp x] +[visit_id x] +[visit_exp i] +[visit_id i] +[visit_exp true] +=> + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $before{deftype : deftype, x : idx, i : nat}((deftype : deftype <: typeuse), x, i) = true +[check_dims] i i#4259 i#4269 typeidx typeidx#240 x +[visit_exp `_IDX`_typeuse{typeidx#240}(typeidx)] +[visit_exp typeidx#240] +[visit_id typeidx#240] +[visit_exp (typeidx)] +[visit_exp typeidx] +[visit_id typeidx] +[visit_exp x] +[visit_id x] +[visit_exp i] +[visit_id i] +[visit_exp (typeidx!`%`_typeidx{i#4259}.0 < x!`%`_idx{i#4269}.0)] +[visit_exp typeidx!`%`_typeidx{i#4259}.0] +[visit_exp typeidx!`%`_typeidx{i#4259}] +[visit_exp typeidx] +[visit_id typeidx] not free +[visit_exp i#4259] +[visit_id i#4259] +[visit_exp x!`%`_idx{i#4269}.0] +[visit_exp x!`%`_idx{i#4269}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#4269] +[visit_id i#4269] +=> + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $before{typeidx#240 : typeidx, typeidx : typeidx, x : idx, i : nat, i#4259 : nat, i#4269 : nat}(`_IDX`_typeuse{typeidx#240}(typeidx), x, i) = (typeidx!`%`_typeidx{i#4259}.0 < x!`%`_idx{i#4269}.0) +[check_dims] i j n#515 x +[visit_exp `REC`_typeuse{n#515}(j)] +[visit_exp n#515] +[visit_id n#515] +[visit_exp (j)] +[visit_exp j] +[visit_id j] +[visit_exp x] +[visit_id x] +[visit_exp i] +[visit_id i] +[visit_exp (j < i)] +[visit_exp j] +[visit_id j] not free +[visit_exp i] +[visit_id i] not free +=> + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $before{n#515 : n, j : n, x : idx, i : nat}(`REC`_typeuse{n#515}(j), x, i) = (j < i) +[check_dims] context heaptype +DecD unrollht(context : context, heaptype : heaptype) : subtype +[visit_id context] not free +[visit_id heaptype] not free +[check_dims] C deftype +[visit_exp C] +[visit_id C] +[visit_exp (deftype : deftype <: heaptype)] +[visit_exp deftype] +[visit_id deftype] +[visit_exp $unrolldt(deftype)] +[visit_exp deftype] +[visit_id deftype] not free +=> + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $unrollht{C : context, deftype : deftype}(C, (deftype : deftype <: heaptype)) = $unrolldt(deftype) +[check_dims] C deftype*#14 i#4303 typeidx typeidx#242 +[visit_exp C] +[visit_id C] +[visit_exp `_IDX`_heaptype{typeidx#242}(typeidx)] +[visit_exp typeidx#242] +[visit_id typeidx#242] +[visit_exp (typeidx)] +[visit_exp typeidx] +[visit_id typeidx] +[visit_exp $unrolldt(C.`TYPES`_context{`deftype*#14`}[typeidx!`%`_typeidx{i#4303}.0])] +[visit_exp C.`TYPES`_context{`deftype*#14`}[typeidx!`%`_typeidx{i#4303}.0]] +[visit_exp C.`TYPES`_context{`deftype*#14`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `deftype*#14`] +[visit_id deftype*#14] +[visit_exp typeidx!`%`_typeidx{i#4303}.0] +[visit_exp typeidx!`%`_typeidx{i#4303}] +[visit_exp typeidx] +[visit_id typeidx] not free +[visit_exp i#4303] +[visit_id i#4303] +=> + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $unrollht{C : context, typeidx#242 : typeidx, typeidx : typeidx, `deftype*#14` : deftype*, i#4303 : nat}(C, `_IDX`_heaptype{typeidx#242}(typeidx)) = $unrolldt(C.`TYPES`_context{`deftype*#14`}[typeidx!`%`_typeidx{i#4303}.0]) +[check_dims] C i n#529 subtype*#2 +[visit_exp C] +[visit_id C] +[visit_exp `REC`_heaptype{n#529}(i)] +[visit_exp n#529] +[visit_id n#529] +[visit_exp (i)] +[visit_exp i] +[visit_id i] +[visit_exp C.`RECS`_context{`subtype*#2`}[i]] +[visit_exp C.`RECS`_context{`subtype*#2`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `subtype*#2`] +[visit_id subtype*#2] +[visit_exp i] +[visit_id i] not free +=> + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + def $unrollht{C : context, n#529 : n, i : n, `subtype*#2` : subtype*}(C, `REC`_heaptype{n#529}(i)) = C.`RECS`_context{`subtype*#2`}[i] +[check_dims] C compttype comptype comptype#257 comptype#269 comptype' final?#257 final?#269 i typeidx#254 typeuse typeuse' typeuse*#257 typeuse*#269 x +[visit_exp C] +[visit_id C] +[visit_exp `SUB`_subtype{`final?#257`, `typeuse*#257`, comptype#257}(`FINAL`_final?{}, typeuse*{typeuse <- `typeuse*`}, compttype)] +[visit_exp `final?#257`] +[visit_id final?#257] +[visit_exp `typeuse*#257`] +[visit_id typeuse*#257] +[visit_exp comptype#257] +[visit_id comptype#257] +[visit_exp (`FINAL`_final?{}, typeuse*{typeuse <- `typeuse*`}, compttype)] +[visit_exp `FINAL`_final?{}] +[visit_exp `FINAL`_final] +[visit_exp ()] +[visit_exp typeuse*{typeuse <- `typeuse*`}] +[scope_enter typeuse] +[visit_exp typeuse] +[visit_id typeuse] not free +[visit_id typeuse] not free +[scope_exit typeuse] +[visit_exp `typeuse*`] +[visit_id typeuse*] no dims +[visit_id typeuse*] +[visit_exp compttype] +[visit_id compttype] +[visit_exp `OK`_oktypeidxnat{typeidx#254}(x, i)] +[visit_exp typeidx#254] +[visit_id typeidx#254] +[visit_exp (x, i)] +[visit_exp x] +[visit_id x] +[visit_exp i] +[visit_id i] +[visit_exp (|typeuse*{typeuse <- `typeuse*`}| <= 1)] +[visit_exp |typeuse*{typeuse <- `typeuse*`}|] +[visit_exp typeuse*{typeuse <- `typeuse*`}] +[scope_enter typeuse] +[visit_exp typeuse] +[visit_id typeuse] not free +[visit_id typeuse] not free +[scope_exit typeuse] +[visit_exp `typeuse*`] +[visit_id typeuse*] not free +[visit_id typeuse*] no dims +[visit_exp 1] +[scope_enter typeuse] +[visit_exp $before(typeuse, x, i)] +[visit_exp typeuse] +[visit_id typeuse] not free +[visit_exp x] +[visit_id x] not free +[visit_exp i] +[visit_id i] not free +[visit_id typeuse] not free +[scope_exit typeuse] +[visit_exp `typeuse*`] +[visit_id typeuse*] not free +[visit_id typeuse*] no dims +[scope_enter comptype#269] +[scope_enter comptype'] +[scope_enter final?#269] +[scope_enter typeuse] +[scope_enter typeuse'*] +[scope_enter typeuse*#269] +[visit_exp ($unrollht(C, (typeuse : typeuse <: heaptype)) = `SUB`_subtype{`final?#269`, `typeuse*#269`, comptype#269}(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype'))] +[visit_exp $unrollht(C, (typeuse : typeuse <: heaptype))] +[visit_exp C] +[visit_id C] not free +[visit_exp (typeuse : typeuse <: heaptype)] +[visit_exp typeuse] +[visit_id typeuse] not free +[visit_exp `SUB`_subtype{`final?#269`, `typeuse*#269`, comptype#269}(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')] +[visit_exp `final?#269`] +[visit_id final?#269] not free +[visit_exp `typeuse*#269`] +[visit_id typeuse*#269] not free +[visit_exp comptype#269] +[visit_id comptype#269] not free +[visit_exp (?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')] +[visit_exp ?()] +[visit_exp typeuse'*{typeuse' <- `typeuse'*`}] +[scope_enter typeuse'] +[visit_exp typeuse'] +[visit_id typeuse'] not free +[visit_id typeuse'] not free +[scope_exit typeuse'] +[visit_exp `typeuse'*`] +[visit_id typeuse'*] not free +[visit_id typeuse'*] no dims +[visit_exp comptype'] +[visit_id comptype'] not free +[visit_id comptype#269] not free +[visit_id comptype'] not free +[visit_id final?#269] not free +[visit_id typeuse] not free +[visit_id typeuse'*] not free +[visit_id typeuse'*] no dims +[visit_id typeuse*#269] not free +[scope_exit typeuse*#269] +[scope_exit typeuse'*] +[scope_exit typeuse] +[scope_exit final?#269] +[scope_exit comptype'] +[scope_exit comptype#269] +[visit_exp `comptype#269*`] +[visit_id comptype#269*] no dims +[visit_id comptype#269*] +[visit_exp `comptype'*`] +[visit_id comptype'*] no dims +[visit_id comptype'*] +[visit_exp `final?#269*`] +[visit_id final?#269*] no dims +[visit_id final?#269*] +[visit_exp `typeuse*`] +[visit_id typeuse*] not free +[visit_id typeuse*] no dims +[visit_exp `typeuse'**`] +[visit_id typeuse'**] no dims +[visit_id typeuse'**] +[visit_exp `typeuse*#269*`] +[visit_id typeuse*#269*] no dims +[visit_id typeuse*#269*] +[visit_exp (C, comptype)] +[visit_exp C] +[visit_id C] not free +[visit_exp comptype] +[visit_id comptype] +[scope_enter comptype'] +[visit_exp (C, comptype, comptype')] +[visit_exp C] +[visit_id C] not free +[visit_exp comptype] +[visit_id comptype] not free +[visit_exp comptype'] +[visit_id comptype'] not free +[visit_id comptype'] not free +[scope_exit comptype'] +[visit_exp `comptype'*`] +[visit_id comptype'*] not free +[visit_id comptype'*] no dims +[check_dims] C X*#650 typeidx#266 x +[visit_exp C] +[visit_id C] +[visit_exp `REC`_rectype(`%`_list{`X*#650`}([]))] +[visit_exp (`%`_list{`X*#650`}([]))] +[visit_exp `%`_list{`X*#650`}([])] +[visit_exp `X*#650`] +[visit_id X*#650] +[visit_exp ([])] +[visit_exp []] +[visit_exp `OK`_oktypeidx{typeidx#266}(x)] +[visit_exp typeidx#266] +[visit_id typeidx#266] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[check_dims] C X*#673 X*#686 i#4397 i#4407 subtype subtype_1 typeidx#278 typeidx#290 typeidx#302 x +[visit_exp C] +[visit_id C] +[visit_exp `REC`_rectype(`%`_list{`X*#673`}([subtype_1] ++ subtype*{subtype <- `subtype*`}))] +[visit_exp (`%`_list{`X*#673`}([subtype_1] ++ subtype*{subtype <- `subtype*`}))] +[visit_exp `%`_list{`X*#673`}([subtype_1] ++ subtype*{subtype <- `subtype*`})] +[visit_exp `X*#673`] +[visit_id X*#673] +[visit_exp ([subtype_1] ++ subtype*{subtype <- `subtype*`})] +[visit_exp [subtype_1] ++ subtype*{subtype <- `subtype*`}] +[visit_exp [subtype_1]] +[visit_exp subtype_1] +[visit_id subtype_1] +[visit_exp subtype*{subtype <- `subtype*`}] +[scope_enter subtype] +[visit_exp subtype] +[visit_id subtype] not free +[visit_id subtype] not free +[scope_exit subtype] +[visit_exp `subtype*`] +[visit_id subtype*] no dims +[visit_id subtype*] +[visit_exp `OK`_oktypeidx{typeidx#278}(x)] +[visit_exp typeidx#278] +[visit_id typeidx#278] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp (C, subtype_1, `OK`_oktypeidx{typeidx#290}(x))] +[visit_exp C] +[visit_id C] not free +[visit_exp subtype_1] +[visit_id subtype_1] not free +[visit_exp `OK`_oktypeidx{typeidx#290}(x)] +[visit_exp typeidx#290] +[visit_id typeidx#290] +[visit_exp (x)] +[visit_exp x] +[visit_id x] not free +[visit_exp (C, `REC`_rectype(`%`_list{`X*#686`}(subtype*{subtype <- `subtype*`})), `OK`_oktypeidx{typeidx#302}(`%`_typeidx{i#4407}((x!`%`_idx{i#4397}.0 + 1))))] +[visit_exp C] +[visit_id C] not free +[visit_exp `REC`_rectype(`%`_list{`X*#686`}(subtype*{subtype <- `subtype*`}))] +[visit_exp (`%`_list{`X*#686`}(subtype*{subtype <- `subtype*`}))] +[visit_exp `%`_list{`X*#686`}(subtype*{subtype <- `subtype*`})] +[visit_exp `X*#686`] +[visit_id X*#686] +[visit_exp (subtype*{subtype <- `subtype*`})] +[visit_exp subtype*{subtype <- `subtype*`}] +[scope_enter subtype] +[visit_exp subtype] +[visit_id subtype] not free +[visit_id subtype] not free +[scope_exit subtype] +[visit_exp `subtype*`] +[visit_id subtype*] not free +[visit_id subtype*] no dims +[visit_exp `OK`_oktypeidx{typeidx#302}(`%`_typeidx{i#4407}((x!`%`_idx{i#4397}.0 + 1)))] +[visit_exp typeidx#302] +[visit_id typeidx#302] +[visit_exp (`%`_typeidx{i#4407}((x!`%`_idx{i#4397}.0 + 1)))] +[visit_exp `%`_typeidx{i#4407}((x!`%`_idx{i#4397}.0 + 1))] +[visit_exp i#4407] +[visit_id i#4407] +[visit_exp ((x!`%`_idx{i#4397}.0 + 1))] +[visit_exp (x!`%`_idx{i#4397}.0 + 1)] +[visit_exp x!`%`_idx{i#4397}.0] +[visit_exp x!`%`_idx{i#4397}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#4397] +[visit_id i#4397] +[visit_exp 1] +[check_dims] C X*#701 X*#716 datatype*#1 deftype*#15 deftype*#16 elemtype*#1 funcidx*#39 globaltype*#1 localtype*#3 memtype*#1 resulttype*#1 resulttype?#1 subtype subtype*#3 tabletype*#1 tagtype*#1 typeidx#314 typeidx#326 x +[visit_exp C] +[visit_id C] +[visit_exp `REC`_rectype(`%`_list{`X*#701`}(subtype*{subtype <- `subtype*`}))] +[visit_exp (`%`_list{`X*#701`}(subtype*{subtype <- `subtype*`}))] +[visit_exp `%`_list{`X*#701`}(subtype*{subtype <- `subtype*`})] +[visit_exp `X*#701`] +[visit_id X*#701] +[visit_exp (subtype*{subtype <- `subtype*`})] +[visit_exp subtype*{subtype <- `subtype*`}] +[scope_enter subtype] +[visit_exp subtype] +[visit_id subtype] not free +[visit_id subtype] not free +[scope_exit subtype] +[visit_exp `subtype*`] +[visit_id subtype*] no dims +[visit_id subtype*] +[visit_exp `OK`_oktypeidx{typeidx#314}(x)] +[visit_exp typeidx#314] +[visit_id typeidx#314] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp ({`TYPES`{`deftype*#15`} [], `RECS`{`subtype*#3`} subtype*{subtype <- `subtype*`}, `TAGS`{`tagtype*#1`} [], `GLOBALS`{`globaltype*#1`} [], `MEMS`{`memtype*#1`} [], `TABLES`{`tabletype*#1`} [], `FUNCS`{`deftype*#16`} [], `DATAS`{`datatype*#1`} [], `ELEMS`{`elemtype*#1`} [], `LOCALS`{`localtype*#3`} [], `LABELS`{`resulttype*#1`} [], `RETURN`{`resulttype?#1`} ?(), `REFS`{`funcidx*#39`} []} +++ C, `REC`_rectype(`%`_list{`X*#716`}(subtype*{subtype <- `subtype*`})), `OK`_oktypeidxnat{typeidx#326}(x, 0))] +[visit_exp {`TYPES`{`deftype*#15`} [], `RECS`{`subtype*#3`} subtype*{subtype <- `subtype*`}, `TAGS`{`tagtype*#1`} [], `GLOBALS`{`globaltype*#1`} [], `MEMS`{`memtype*#1`} [], `TABLES`{`tabletype*#1`} [], `FUNCS`{`deftype*#16`} [], `DATAS`{`datatype*#1`} [], `ELEMS`{`elemtype*#1`} [], `LOCALS`{`localtype*#3`} [], `LABELS`{`resulttype*#1`} [], `RETURN`{`resulttype?#1`} ?(), `REFS`{`funcidx*#39`} []} +++ C] +[visit_exp {`TYPES`{`deftype*#15`} [], `RECS`{`subtype*#3`} subtype*{subtype <- `subtype*`}, `TAGS`{`tagtype*#1`} [], `GLOBALS`{`globaltype*#1`} [], `MEMS`{`memtype*#1`} [], `TABLES`{`tabletype*#1`} [], `FUNCS`{`deftype*#16`} [], `DATAS`{`datatype*#1`} [], `ELEMS`{`elemtype*#1`} [], `LOCALS`{`localtype*#3`} [], `LABELS`{`resulttype*#1`} [], `RETURN`{`resulttype?#1`} ?(), `REFS`{`funcidx*#39`} []}] +[visit_exp `deftype*#15`] +[visit_id deftype*#15] +[visit_exp []] +[visit_exp `subtype*#3`] +[visit_id subtype*#3] +[visit_exp subtype*{subtype <- `subtype*`}] +[scope_enter subtype] +[visit_exp subtype] +[visit_id subtype] not free +[visit_id subtype] not free +[scope_exit subtype] +[visit_exp `subtype*`] +[visit_id subtype*] not free +[visit_id subtype*] no dims +[visit_exp `tagtype*#1`] +[visit_id tagtype*#1] +[visit_exp []] +[visit_exp `globaltype*#1`] +[visit_id globaltype*#1] +[visit_exp []] +[visit_exp `memtype*#1`] +[visit_id memtype*#1] +[visit_exp []] +[visit_exp `tabletype*#1`] +[visit_id tabletype*#1] +[visit_exp []] +[visit_exp `deftype*#16`] +[visit_id deftype*#16] +[visit_exp []] +[visit_exp `datatype*#1`] +[visit_id datatype*#1] +[visit_exp []] +[visit_exp `elemtype*#1`] +[visit_id elemtype*#1] +[visit_exp []] +[visit_exp `localtype*#3`] +[visit_id localtype*#3] +[visit_exp []] +[visit_exp `resulttype*#1`] +[visit_id resulttype*#1] +[visit_exp []] +[visit_exp `resulttype?#1`] +[visit_id resulttype?#1] +[visit_exp ?()] +[visit_exp `funcidx*#39`] +[visit_id funcidx*#39] +[visit_exp []] +[visit_exp C] +[visit_id C] not free +[visit_exp `REC`_rectype(`%`_list{`X*#716`}(subtype*{subtype <- `subtype*`}))] +[visit_exp (`%`_list{`X*#716`}(subtype*{subtype <- `subtype*`}))] +[visit_exp `%`_list{`X*#716`}(subtype*{subtype <- `subtype*`})] +[visit_exp `X*#716`] +[visit_id X*#716] +[visit_exp (subtype*{subtype <- `subtype*`})] +[visit_exp subtype*{subtype <- `subtype*`}] +[scope_enter subtype] +[visit_exp subtype] +[visit_id subtype] not free +[visit_id subtype] not free +[scope_exit subtype] +[visit_exp `subtype*`] +[visit_id subtype*] not free +[visit_id subtype*] no dims +[visit_exp `OK`_oktypeidxnat{typeidx#326}(x, 0)] +[visit_exp typeidx#326] +[visit_id typeidx#326] +[visit_exp (x, 0)] +[visit_exp x] +[visit_id x] not free +[visit_exp 0] +[check_dims] C X*#741 i typeidx#338 x +[visit_exp C] +[visit_id C] +[visit_exp `REC`_rectype(`%`_list{`X*#741`}([]))] +[visit_exp (`%`_list{`X*#741`}([]))] +[visit_exp `%`_list{`X*#741`}([])] +[visit_exp `X*#741`] +[visit_id X*#741] +[visit_exp ([])] +[visit_exp []] +[visit_exp `OK`_oktypeidxnat{typeidx#338}(x, i)] +[visit_exp typeidx#338] +[visit_id typeidx#338] +[visit_exp (x, i)] +[visit_exp x] +[visit_id x] +[visit_exp i] +[visit_id i] +[check_dims] C X*#764 X*#777 i i#4503 i#4513 subtype subtype_1 typeidx#350 typeidx#362 typeidx#374 x +[visit_exp C] +[visit_id C] +[visit_exp `REC`_rectype(`%`_list{`X*#764`}([subtype_1] ++ subtype*{subtype <- `subtype*`}))] +[visit_exp (`%`_list{`X*#764`}([subtype_1] ++ subtype*{subtype <- `subtype*`}))] +[visit_exp `%`_list{`X*#764`}([subtype_1] ++ subtype*{subtype <- `subtype*`})] +[visit_exp `X*#764`] +[visit_id X*#764] +[visit_exp ([subtype_1] ++ subtype*{subtype <- `subtype*`})] +[visit_exp [subtype_1] ++ subtype*{subtype <- `subtype*`}] +[visit_exp [subtype_1]] +[visit_exp subtype_1] +[visit_id subtype_1] +[visit_exp subtype*{subtype <- `subtype*`}] +[scope_enter subtype] +[visit_exp subtype] +[visit_id subtype] not free +[visit_id subtype] not free +[scope_exit subtype] +[visit_exp `subtype*`] +[visit_id subtype*] no dims +[visit_id subtype*] +[visit_exp `OK`_oktypeidxnat{typeidx#350}(x, i)] +[visit_exp typeidx#350] +[visit_id typeidx#350] +[visit_exp (x, i)] +[visit_exp x] +[visit_id x] +[visit_exp i] +[visit_id i] +[visit_exp (C, subtype_1, `OK`_oktypeidxnat{typeidx#362}(x, i))] +[visit_exp C] +[visit_id C] not free +[visit_exp subtype_1] +[visit_id subtype_1] not free +[visit_exp `OK`_oktypeidxnat{typeidx#362}(x, i)] +[visit_exp typeidx#362] +[visit_id typeidx#362] +[visit_exp (x, i)] +[visit_exp x] +[visit_id x] not free +[visit_exp i] +[visit_id i] not free +[visit_exp (C, `REC`_rectype(`%`_list{`X*#777`}(subtype*{subtype <- `subtype*`})), `OK`_oktypeidxnat{typeidx#374}(`%`_typeidx{i#4513}((x!`%`_idx{i#4503}.0 + 1)), (i + 1)))] +[visit_exp C] +[visit_id C] not free +[visit_exp `REC`_rectype(`%`_list{`X*#777`}(subtype*{subtype <- `subtype*`}))] +[visit_exp (`%`_list{`X*#777`}(subtype*{subtype <- `subtype*`}))] +[visit_exp `%`_list{`X*#777`}(subtype*{subtype <- `subtype*`})] +[visit_exp `X*#777`] +[visit_id X*#777] +[visit_exp (subtype*{subtype <- `subtype*`})] +[visit_exp subtype*{subtype <- `subtype*`}] +[scope_enter subtype] +[visit_exp subtype] +[visit_id subtype] not free +[visit_id subtype] not free +[scope_exit subtype] +[visit_exp `subtype*`] +[visit_id subtype*] not free +[visit_id subtype*] no dims +[visit_exp `OK`_oktypeidxnat{typeidx#374}(`%`_typeidx{i#4513}((x!`%`_idx{i#4503}.0 + 1)), (i + 1))] +[visit_exp typeidx#374] +[visit_id typeidx#374] +[visit_exp (`%`_typeidx{i#4513}((x!`%`_idx{i#4503}.0 + 1)), (i + 1))] +[visit_exp `%`_typeidx{i#4513}((x!`%`_idx{i#4503}.0 + 1))] +[visit_exp i#4513] +[visit_id i#4513] +[visit_exp ((x!`%`_idx{i#4503}.0 + 1))] +[visit_exp (x!`%`_idx{i#4503}.0 + 1)] +[visit_exp x!`%`_idx{i#4503}.0] +[visit_exp x!`%`_idx{i#4503}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#4503] +[visit_id i#4503] +[visit_exp 1] +[visit_exp (i + 1)] +[visit_exp i] +[visit_id i] not free +[visit_exp 1] +[check_dims] C X*#792 i n n#541 rectype rectype#577 subtype typeidx#386 x +[visit_exp C] +[visit_id C] +[visit_exp `_DEF`_deftype{rectype#577, n#541}(rectype, i)] +[visit_exp rectype#577] +[visit_id rectype#577] +[visit_exp n#541] +[visit_id n#541] +[visit_exp (rectype, i)] +[visit_exp rectype] +[visit_id rectype] +[visit_exp i] +[visit_id i] +[visit_exp (C, rectype, `OK`_oktypeidx{typeidx#386}(x))] +[visit_exp C] +[visit_id C] not free +[visit_exp rectype] +[visit_id rectype] not free +[visit_exp `OK`_oktypeidx{typeidx#386}(x)] +[visit_exp typeidx#386] +[visit_id typeidx#386] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp (rectype = `REC`_rectype(`%`_list{`X*#792`}(subtype^n{subtype <- `subtype*`})))] +[visit_exp rectype] +[visit_id rectype] not free +[visit_exp `REC`_rectype(`%`_list{`X*#792`}(subtype^n{subtype <- `subtype*`}))] +[visit_exp (`%`_list{`X*#792`}(subtype^n{subtype <- `subtype*`}))] +[visit_exp `%`_list{`X*#792`}(subtype^n{subtype <- `subtype*`})] +[visit_exp `X*#792`] +[visit_id X*#792] +[visit_exp (subtype^n{subtype <- `subtype*`})] +[visit_exp subtype^n{subtype <- `subtype*`}] +[scope_enter subtype] +[visit_exp subtype] +[visit_id subtype] not free +[visit_id subtype] not free +[scope_exit subtype] +[visit_exp n] +[visit_id n] +[visit_exp `subtype*`] +[visit_id subtype*] no dims +[visit_id subtype*] +[visit_exp (i < n)] +[visit_exp i] +[visit_id i] not free +[visit_exp n] +[visit_id n] not free +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] C i#4549 i#4584 k m n u64#48 u64?#47 +[visit_exp C] +[visit_id C] +[visit_exp `[%..%]`_limits{u64#48, `u64?#47`}(`%`_u64{i#4549}(n), `%`_u64{i#4584}(m)?{i#4584 <- `i#4584?`, m <- `m?`})] +[visit_exp u64#48] +[visit_id u64#48] +[visit_exp `u64?#47`] +[visit_id u64?#47] +[visit_exp (`%`_u64{i#4549}(n), `%`_u64{i#4584}(m)?{i#4584 <- `i#4584?`, m <- `m?`})] +[visit_exp `%`_u64{i#4549}(n)] +[visit_exp i#4549] +[visit_id i#4549] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `%`_u64{i#4584}(m)?{i#4584 <- `i#4584?`, m <- `m?`}] +[scope_enter i#4584] +[scope_enter m] +[visit_exp `%`_u64{i#4584}(m)] +[visit_exp i#4584] +[visit_id i#4584] not free +[visit_exp (m)] +[visit_exp m] +[visit_id m] not free +[visit_id i#4584] not free +[visit_id m] not free +[scope_exit m] +[scope_exit i#4584] +[visit_exp `i#4584?`] +[visit_id i#4584?] no dims +[visit_id i#4584?] +[visit_exp `m?`] +[visit_id m?] no dims +[visit_id m?] +[visit_exp k] +[visit_id k] +[visit_exp (n <= k)] +[visit_exp n] +[visit_id n] not free +[visit_exp k] +[visit_id k] not free +[scope_enter m] +[visit_exp ((n <= m) /\ (m <= k))] +[visit_exp (n <= m)] +[visit_exp n] +[visit_id n] not free +[visit_exp m] +[visit_id m] not free +[visit_exp (m <= k)] +[visit_exp m] +[visit_id m] not free +[visit_exp k] +[visit_id k] not free +[visit_id m] not free +[scope_exit m] +[visit_exp `m?`] +[visit_id m?] not free +[visit_id m?] no dims +[check_dims] C X*#807 X*#820 resulttype#33 t_1 t_2 typeuse +[visit_exp C] +[visit_id C] +[visit_exp typeuse] +[visit_id typeuse] +[visit_exp (C, typeuse)] +[visit_exp C] +[visit_id C] not free +[visit_exp typeuse] +[visit_id typeuse] not free +[visit_exp (typeuse, C, `FUNC%->%`_comptype{resulttype#33}(`%`_resulttype{`X*#807`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#820`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp typeuse] +[visit_id typeuse] not free +[visit_exp C] +[visit_id C] not free +[visit_exp `FUNC%->%`_comptype{resulttype#33}(`%`_resulttype{`X*#807`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#820`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#33] +[visit_id resulttype#33] +[visit_exp (`%`_resulttype{`X*#807`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#820`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#807`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#807`] +[visit_id X*#807] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] no dims +[visit_id t_1*] +[visit_exp `%`_resulttype{`X*#820`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#820`] +[visit_id X*#820] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] no dims +[visit_id t_2*] +[check_dims] C mut?#333 t valtype#247 +[visit_exp C] +[visit_id C] +[visit_exp `%%`_globaltype{`mut?#333`, valtype#247}(`MUT`_mut?{}, t)] +[visit_exp `mut?#333`] +[visit_id mut?#333] +[visit_exp valtype#247] +[visit_id valtype#247] +[visit_exp (`MUT`_mut?{}, t)] +[visit_exp `MUT`_mut?{}] +[visit_exp `MUT`_mut] +[visit_exp ()] +[visit_exp t] +[visit_id t] +[visit_exp (C, t)] +[visit_exp C] +[visit_id C] not free +[visit_exp t] +[visit_id t] not free +[check_dims] C addrtype addrtype#297 limits limits#297 +[visit_exp C] +[visit_id C] +[visit_exp `%%PAGE`_memtype{addrtype#297, limits#297}(addrtype, limits)] +[visit_exp addrtype#297] +[visit_id addrtype#297] +[visit_exp limits#297] +[visit_id limits#297] +[visit_exp (addrtype, limits)] +[visit_exp addrtype] +[visit_id addrtype] +[visit_exp limits] +[visit_id limits] +[visit_exp (C, limits, (2 ^ 16))] +[visit_exp C] +[visit_id C] not free +[visit_exp limits] +[visit_id limits] not free +[visit_exp (2 ^ 16)] +[visit_exp 2] +[visit_exp 16] +[check_dims] C addrtype addrtype#309 limits limits#309 reftype reftype#311 +[visit_exp C] +[visit_id C] +[visit_exp `%%%`_tabletype{addrtype#309, limits#309, reftype#311}(addrtype, limits, reftype)] +[visit_exp addrtype#309] +[visit_id addrtype#309] +[visit_exp limits#309] +[visit_id limits#309] +[visit_exp reftype#311] +[visit_id reftype#311] +[visit_exp (addrtype, limits, reftype)] +[visit_exp addrtype] +[visit_id addrtype] +[visit_exp limits] +[visit_id limits] +[visit_exp reftype] +[visit_id reftype] +[visit_exp (C, limits, ((((2 ^ 32) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp C] +[visit_id C] not free +[visit_exp limits] +[visit_id limits] not free +[visit_exp ((((2 ^ 32) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp (((2 ^ 32) : nat <:> int) - (1 : nat <:> int))] +[visit_exp ((2 ^ 32) : nat <:> int)] +[visit_exp (2 ^ 32)] +[visit_exp 2] +[visit_exp 32] +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp (C, reftype)] +[visit_exp C] +[visit_id C] not free +[visit_exp reftype] +[visit_id reftype] not free +[check_dims] C tagtype tagtype#89 +[visit_exp C] +[visit_id C] +[visit_exp `TAG`_externtype{tagtype#89}(tagtype)] +[visit_exp tagtype#89] +[visit_id tagtype#89] +[visit_exp (tagtype)] +[visit_exp tagtype] +[visit_id tagtype] +[visit_exp (C, tagtype)] +[visit_exp C] +[visit_id C] not free +[visit_exp tagtype] +[visit_id tagtype] not free +[check_dims] C globaltype globaltype#101 +[visit_exp C] +[visit_id C] +[visit_exp `GLOBAL`_externtype{globaltype#101}(globaltype)] +[visit_exp globaltype#101] +[visit_id globaltype#101] +[visit_exp (globaltype)] +[visit_exp globaltype] +[visit_id globaltype] +[visit_exp (C, globaltype)] +[visit_exp C] +[visit_id C] not free +[visit_exp globaltype] +[visit_id globaltype] not free +[check_dims] C memtype memtype#113 +[visit_exp C] +[visit_id C] +[visit_exp `MEM`_externtype{memtype#113}(memtype)] +[visit_exp memtype#113] +[visit_id memtype#113] +[visit_exp (memtype)] +[visit_exp memtype] +[visit_id memtype] +[visit_exp (C, memtype)] +[visit_exp C] +[visit_id C] not free +[visit_exp memtype] +[visit_id memtype] not free +[check_dims] C tabletype tabletype#127 +[visit_exp C] +[visit_id C] +[visit_exp `TABLE`_externtype{tabletype#127}(tabletype)] +[visit_exp tabletype#127] +[visit_id tabletype#127] +[visit_exp (tabletype)] +[visit_exp tabletype] +[visit_id tabletype] +[visit_exp (C, tabletype)] +[visit_exp C] +[visit_id C] not free +[visit_exp tabletype] +[visit_id tabletype] not free +[check_dims] C X*#835 X*#848 resulttype#36 t_1 t_2 typeuse typeuse#17 +[visit_exp C] +[visit_id C] +[visit_exp `FUNC`_externtype{typeuse#17}(typeuse)] +[visit_exp typeuse#17] +[visit_id typeuse#17] +[visit_exp (typeuse)] +[visit_exp typeuse] +[visit_id typeuse] +[visit_exp (C, typeuse)] +[visit_exp C] +[visit_id C] not free +[visit_exp typeuse] +[visit_id typeuse] not free +[visit_exp (typeuse, C, `FUNC%->%`_comptype{resulttype#36}(`%`_resulttype{`X*#835`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#848`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp typeuse] +[visit_id typeuse] not free +[visit_exp C] +[visit_id C] not free +[visit_exp `FUNC%->%`_comptype{resulttype#36}(`%`_resulttype{`X*#835`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#848`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#36] +[visit_id resulttype#36] +[visit_exp (`%`_resulttype{`X*#835`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#848`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#835`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#835`] +[visit_id X*#835] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] no dims +[visit_id t_1*] +[visit_exp `%`_resulttype{`X*#848`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#848`] +[visit_id X*#848] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] no dims +[visit_id t_2*] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] C numtype +[visit_exp C] +[visit_id C] +[visit_exp numtype] +[visit_id numtype] +[visit_exp numtype] +[visit_id numtype] not free +[check_dims] C vectype +[visit_exp C] +[visit_id C] +[visit_exp vectype] +[visit_id vectype] +[visit_exp vectype] +[visit_id vectype] not free +[check_dims] C heaptype +[visit_exp C] +[visit_id C] +[visit_exp heaptype] +[visit_id heaptype] +[visit_exp heaptype] +[visit_id heaptype] not free +[check_dims] C heaptype' heaptype_1 heaptype_2 +[visit_exp C] +[visit_id C] +[visit_exp heaptype_1] +[visit_id heaptype_1] +[visit_exp heaptype_2] +[visit_id heaptype_2] +[visit_exp (C, heaptype')] +[visit_exp C] +[visit_id C] not free +[visit_exp heaptype'] +[visit_id heaptype'] +[visit_exp (C, heaptype_1, heaptype')] +[visit_exp C] +[visit_id C] not free +[visit_exp heaptype_1] +[visit_id heaptype_1] not free +[visit_exp heaptype'] +[visit_id heaptype'] not free +[visit_exp (C, heaptype', heaptype_2)] +[visit_exp C] +[visit_id C] not free +[visit_exp heaptype'] +[visit_id heaptype'] not free +[visit_exp heaptype_2] +[visit_id heaptype_2] not free +[check_dims] C +[visit_exp C] +[visit_id C] +[visit_exp `EQ`_heaptype] +[visit_exp ()] +[visit_exp `ANY`_heaptype] +[visit_exp ()] +[check_dims] C +[visit_exp C] +[visit_id C] +[visit_exp `I31`_heaptype] +[visit_exp ()] +[visit_exp `EQ`_heaptype] +[visit_exp ()] +[check_dims] C +[visit_exp C] +[visit_id C] +[visit_exp `STRUCT`_heaptype] +[visit_exp ()] +[visit_exp `EQ`_heaptype] +[visit_exp ()] +[check_dims] C +[visit_exp C] +[visit_id C] +[visit_exp `ARRAY`_heaptype] +[visit_exp ()] +[visit_exp `EQ`_heaptype] +[visit_exp ()] +[check_dims] C X*#863 deftype fieldtype +[visit_exp C] +[visit_id C] +[visit_exp (deftype : deftype <: heaptype)] +[visit_exp deftype] +[visit_id deftype] +[visit_exp `STRUCT`_heaptype] +[visit_exp ()] +[visit_exp (deftype, `STRUCT`_comptype(`%`_list{`X*#863`}(fieldtype*{fieldtype <- `fieldtype*`})))] +[visit_exp deftype] +[visit_id deftype] not free +[visit_exp `STRUCT`_comptype(`%`_list{`X*#863`}(fieldtype*{fieldtype <- `fieldtype*`}))] +[visit_exp (`%`_list{`X*#863`}(fieldtype*{fieldtype <- `fieldtype*`}))] +[visit_exp `%`_list{`X*#863`}(fieldtype*{fieldtype <- `fieldtype*`})] +[visit_exp `X*#863`] +[visit_id X*#863] +[visit_exp (fieldtype*{fieldtype <- `fieldtype*`})] +[visit_exp fieldtype*{fieldtype <- `fieldtype*`}] +[scope_enter fieldtype] +[visit_exp fieldtype] +[visit_id fieldtype] not free +[visit_id fieldtype] not free +[scope_exit fieldtype] +[visit_exp `fieldtype*`] +[visit_id fieldtype*] no dims +[visit_id fieldtype*] +[check_dims] C deftype fieldtype fieldtype#9 +[visit_exp C] +[visit_id C] +[visit_exp (deftype : deftype <: heaptype)] +[visit_exp deftype] +[visit_id deftype] +[visit_exp `ARRAY`_heaptype] +[visit_exp ()] +[visit_exp (deftype, `ARRAY`_comptype{fieldtype#9}(fieldtype))] +[visit_exp deftype] +[visit_id deftype] not free +[visit_exp `ARRAY`_comptype{fieldtype#9}(fieldtype)] +[visit_exp fieldtype#9] +[visit_id fieldtype#9] +[visit_exp (fieldtype)] +[visit_exp fieldtype] +[visit_id fieldtype] +[check_dims] C X*#878 X*#891 deftype resulttype#39 t_1 t_2 +[visit_exp C] +[visit_id C] +[visit_exp (deftype : deftype <: heaptype)] +[visit_exp deftype] +[visit_id deftype] +[visit_exp `FUNC`_heaptype] +[visit_exp ()] +[visit_exp (deftype, `FUNC%->%`_comptype{resulttype#39}(`%`_resulttype{`X*#878`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#891`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp deftype] +[visit_id deftype] not free +[visit_exp `FUNC%->%`_comptype{resulttype#39}(`%`_resulttype{`X*#878`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#891`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#39] +[visit_id resulttype#39] +[visit_exp (`%`_resulttype{`X*#878`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#891`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#878`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#878`] +[visit_id X*#878] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] no dims +[visit_id t_1*] +[visit_exp `%`_resulttype{`X*#891`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#891`] +[visit_id X*#891] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] no dims +[visit_id t_2*] +[check_dims] C deftype_1 deftype_2 +[visit_exp C] +[visit_id C] +[visit_exp (deftype_1 : deftype <: heaptype)] +[visit_exp deftype_1] +[visit_id deftype_1] +[visit_exp (deftype_2 : deftype <: heaptype)] +[visit_exp deftype_2] +[visit_id deftype_2] +[visit_exp (C, deftype_1, deftype_2)] +[visit_exp C] +[visit_id C] not free +[visit_exp deftype_1] +[visit_id deftype_1] not free +[visit_exp deftype_2] +[visit_id deftype_2] not free +[check_dims] C deftype*#17 heaptype i#4606 typeidx typeidx#388 +[visit_exp C] +[visit_id C] +[visit_exp `_IDX`_heaptype{typeidx#388}(typeidx)] +[visit_exp typeidx#388] +[visit_id typeidx#388] +[visit_exp (typeidx)] +[visit_exp typeidx] +[visit_id typeidx] +[visit_exp heaptype] +[visit_id heaptype] +[visit_exp (C, (C.`TYPES`_context{`deftype*#17`}[typeidx!`%`_typeidx{i#4606}.0] : deftype <: heaptype), heaptype)] +[visit_exp C] +[visit_id C] not free +[visit_exp (C.`TYPES`_context{`deftype*#17`}[typeidx!`%`_typeidx{i#4606}.0] : deftype <: heaptype)] +[visit_exp C.`TYPES`_context{`deftype*#17`}[typeidx!`%`_typeidx{i#4606}.0]] +[visit_exp C.`TYPES`_context{`deftype*#17`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `deftype*#17`] +[visit_id deftype*#17] +[visit_exp typeidx!`%`_typeidx{i#4606}.0] +[visit_exp typeidx!`%`_typeidx{i#4606}] +[visit_exp typeidx] +[visit_id typeidx] not free +[visit_exp i#4606] +[visit_id i#4606] +[visit_exp heaptype] +[visit_id heaptype] not free +[check_dims] C deftype*#18 heaptype i#4628 typeidx typeidx#390 +[visit_exp C] +[visit_id C] +[visit_exp heaptype] +[visit_id heaptype] +[visit_exp `_IDX`_heaptype{typeidx#390}(typeidx)] +[visit_exp typeidx#390] +[visit_id typeidx#390] +[visit_exp (typeidx)] +[visit_exp typeidx] +[visit_id typeidx] +[visit_exp (C, heaptype, (C.`TYPES`_context{`deftype*#18`}[typeidx!`%`_typeidx{i#4628}.0] : deftype <: heaptype))] +[visit_exp C] +[visit_id C] not free +[visit_exp heaptype] +[visit_id heaptype] not free +[visit_exp (C.`TYPES`_context{`deftype*#18`}[typeidx!`%`_typeidx{i#4628}.0] : deftype <: heaptype)] +[visit_exp C.`TYPES`_context{`deftype*#18`}[typeidx!`%`_typeidx{i#4628}.0]] +[visit_exp C.`TYPES`_context{`deftype*#18`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `deftype*#18`] +[visit_id deftype*#18] +[visit_exp typeidx!`%`_typeidx{i#4628}.0] +[visit_exp typeidx!`%`_typeidx{i#4628}] +[visit_exp typeidx] +[visit_id typeidx] not free +[visit_exp i#4628] +[visit_id i#4628] +[check_dims] C comptype#425 ct final final?#425 i j n#573 subtype*#4 typeuse typeuse*#425 +[visit_exp C] +[visit_id C] +[visit_exp `REC`_heaptype{n#573}(i)] +[visit_exp n#573] +[visit_id n#573] +[visit_exp (i)] +[visit_exp i] +[visit_id i] +[visit_exp (typeuse*{typeuse <- `typeuse*`}[j] : typeuse <: heaptype)] +[visit_exp typeuse*{typeuse <- `typeuse*`}[j]] +[visit_exp typeuse*{typeuse <- `typeuse*`}] +[scope_enter typeuse] +[visit_exp typeuse] +[visit_id typeuse] not free +[visit_id typeuse] not free +[scope_exit typeuse] +[visit_exp `typeuse*`] +[visit_id typeuse*] no dims +[visit_id typeuse*] +[visit_exp j] +[visit_id j] +[visit_exp (C.`RECS`_context{`subtype*#4`}[i] = `SUB`_subtype{`final?#425`, `typeuse*#425`, comptype#425}(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct))] +[visit_exp C.`RECS`_context{`subtype*#4`}[i]] +[visit_exp C.`RECS`_context{`subtype*#4`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `subtype*#4`] +[visit_id subtype*#4] +[visit_exp i] +[visit_id i] not free +[visit_exp `SUB`_subtype{`final?#425`, `typeuse*#425`, comptype#425}(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)] +[visit_exp `final?#425`] +[visit_id final?#425] +[visit_exp `typeuse*#425`] +[visit_id typeuse*#425] +[visit_exp comptype#425] +[visit_id comptype#425] +[visit_exp (final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)] +[visit_exp final?{final <- `final?`}] +[scope_enter final] +[visit_exp final] +[visit_id final] not free +[visit_id final] not free +[scope_exit final] +[visit_exp `final?`] +[visit_id final?] no dims +[visit_id final?] +[visit_exp typeuse*{typeuse <- `typeuse*`}] +[scope_enter typeuse] +[visit_exp typeuse] +[visit_id typeuse] not free +[visit_id typeuse] not free +[scope_exit typeuse] +[visit_exp `typeuse*`] +[visit_id typeuse*] not free +[visit_id typeuse*] no dims +[visit_exp ct] +[visit_id ct] +[check_dims] C heaptype +[visit_exp C] +[visit_id C] +[visit_exp `NONE`_heaptype] +[visit_exp ()] +[visit_exp heaptype] +[visit_id heaptype] +[visit_exp (C, heaptype, `ANY`_heaptype)] +[visit_exp C] +[visit_id C] not free +[visit_exp heaptype] +[visit_id heaptype] not free +[visit_exp `ANY`_heaptype] +[visit_exp ()] +[check_dims] C heaptype +[visit_exp C] +[visit_id C] +[visit_exp `NOFUNC`_heaptype] +[visit_exp ()] +[visit_exp heaptype] +[visit_id heaptype] +[visit_exp (C, heaptype, `FUNC`_heaptype)] +[visit_exp C] +[visit_id C] not free +[visit_exp heaptype] +[visit_id heaptype] not free +[visit_exp `FUNC`_heaptype] +[visit_exp ()] +[check_dims] C heaptype +[visit_exp C] +[visit_id C] +[visit_exp `NOEXN`_heaptype] +[visit_exp ()] +[visit_exp heaptype] +[visit_id heaptype] +[visit_exp (C, heaptype, `EXN`_heaptype)] +[visit_exp C] +[visit_id C] not free +[visit_exp heaptype] +[visit_id heaptype] not free +[visit_exp `EXN`_heaptype] +[visit_exp ()] +[check_dims] C heaptype +[visit_exp C] +[visit_id C] +[visit_exp `NOEXTERN`_heaptype] +[visit_exp ()] +[visit_exp heaptype] +[visit_id heaptype] +[visit_exp (C, heaptype, `EXTERN`_heaptype)] +[visit_exp C] +[visit_id C] not free +[visit_exp heaptype] +[visit_id heaptype] not free +[visit_exp `EXTERN`_heaptype] +[visit_exp ()] +[check_dims] C heaptype +[visit_exp C] +[visit_id C] +[visit_exp `BOT`_heaptype] +[visit_exp ()] +[visit_exp heaptype] +[visit_id heaptype] +[check_dims] C heaptype#451 heaptype#463 ht_1 ht_2 null?#449 null?#461 +[visit_exp C] +[visit_id C] +[visit_exp `REF`_reftype{`null?#449`, heaptype#451}(?(), ht_1)] +[visit_exp `null?#449`] +[visit_id null?#449] +[visit_exp heaptype#451] +[visit_id heaptype#451] +[visit_exp (?(), ht_1)] +[visit_exp ?()] +[visit_exp ht_1] +[visit_id ht_1] +[visit_exp `REF`_reftype{`null?#461`, heaptype#463}(?(), ht_2)] +[visit_exp `null?#461`] +[visit_id null?#461] +[visit_exp heaptype#463] +[visit_id heaptype#463] +[visit_exp (?(), ht_2)] +[visit_exp ?()] +[visit_exp ht_2] +[visit_id ht_2] +[visit_exp (C, ht_1, ht_2)] +[visit_exp C] +[visit_id C] not free +[visit_exp ht_1] +[visit_id ht_1] not free +[visit_exp ht_2] +[visit_id ht_2] not free +[check_dims] C heaptype#475 heaptype#487 ht_1 ht_2 null?#473 null?#485 +[visit_exp C] +[visit_id C] +[visit_exp `REF`_reftype{`null?#473`, heaptype#475}(`NULL`_null?{}, ht_1)] +[visit_exp `null?#473`] +[visit_id null?#473] +[visit_exp heaptype#475] +[visit_id heaptype#475] +[visit_exp (`NULL`_null?{}, ht_1)] +[visit_exp `NULL`_null?{}] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp ht_1] +[visit_id ht_1] +[visit_exp `REF`_reftype{`null?#485`, heaptype#487}(?(`NULL`_null), ht_2)] +[visit_exp `null?#485`] +[visit_id null?#485] +[visit_exp heaptype#487] +[visit_id heaptype#487] +[visit_exp (?(`NULL`_null), ht_2)] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp ht_2] +[visit_id ht_2] +[visit_exp (C, ht_1, ht_2)] +[visit_exp C] +[visit_id C] not free +[visit_exp ht_1] +[visit_id ht_1] not free +[visit_exp ht_2] +[visit_id ht_2] not free +[check_dims] C numtype_1 numtype_2 +[visit_exp C] +[visit_id C] +[visit_exp (numtype_1 : numtype <: valtype)] +[visit_exp numtype_1] +[visit_id numtype_1] +[visit_exp (numtype_2 : numtype <: valtype)] +[visit_exp numtype_2] +[visit_id numtype_2] +[visit_exp (C, numtype_1, numtype_2)] +[visit_exp C] +[visit_id C] not free +[visit_exp numtype_1] +[visit_id numtype_1] not free +[visit_exp numtype_2] +[visit_id numtype_2] not free +[check_dims] C vectype_1 vectype_2 +[visit_exp C] +[visit_id C] +[visit_exp (vectype_1 : vectype <: valtype)] +[visit_exp vectype_1] +[visit_id vectype_1] +[visit_exp (vectype_2 : vectype <: valtype)] +[visit_exp vectype_2] +[visit_id vectype_2] +[visit_exp (C, vectype_1, vectype_2)] +[visit_exp C] +[visit_id C] not free +[visit_exp vectype_1] +[visit_id vectype_1] not free +[visit_exp vectype_2] +[visit_id vectype_2] not free +[check_dims] C reftype_1 reftype_2 +[visit_exp C] +[visit_id C] +[visit_exp (reftype_1 : reftype <: valtype)] +[visit_exp reftype_1] +[visit_id reftype_1] +[visit_exp (reftype_2 : reftype <: valtype)] +[visit_exp reftype_2] +[visit_id reftype_2] +[visit_exp (C, reftype_1, reftype_2)] +[visit_exp C] +[visit_id C] not free +[visit_exp reftype_1] +[visit_id reftype_1] not free +[visit_exp reftype_2] +[visit_id reftype_2] not free +[check_dims] C valtype +[visit_exp C] +[visit_id C] +[visit_exp `BOT`_valtype] +[visit_exp ()] +[visit_exp valtype] +[visit_id valtype] +[check_dims] +[check_dims] +[check_dims] C X*#904 X*#917 t_1 t_2 +[visit_exp C] +[visit_id C] +[visit_exp `%`_resulttype{`X*#904`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#904`] +[visit_id X*#904] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] no dims +[visit_id t_1*] +[visit_exp `%`_resulttype{`X*#917`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#917`] +[visit_id X*#917] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] no dims +[visit_id t_2*] +[scope_enter t_1] +[scope_enter t_2] +[visit_exp (C, t_1, t_2)] +[visit_exp C] +[visit_id C] not free +[visit_exp t_1] +[visit_id t_1] not free +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_1] not free +[visit_id t_2] not free +[scope_exit t_2] +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] not free +[visit_id t_1*] no dims +[visit_exp `t_2*`] +[visit_id t_2*] not free +[visit_id t_2*] no dims +[check_dims] C X*#1047 X*#1060 X*#1073 X*#1086 X*#1099 X*#930 X*#982 X*#995 i#4865 init#65 localidx*#59 localidx*#71 localtype*#4 resulttype#59 resulttype#79 t t_11 t_12 t_21 t_22 valtype#271 x x_1 x_2 +[visit_exp C] +[visit_id C] +[visit_exp `%->_%%`_instrtype{resulttype#59, `localidx*#59`}(`%`_resulttype{`X*#930`}(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype{`X*#982`}(t_12*{t_12 <- `t_12*`}))] +[visit_exp resulttype#59] +[visit_id resulttype#59] +[visit_exp `localidx*#59`] +[visit_id localidx*#59] +[visit_exp (`%`_resulttype{`X*#930`}(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype{`X*#982`}(t_12*{t_12 <- `t_12*`}))] +[visit_exp `%`_resulttype{`X*#930`}(t_11*{t_11 <- `t_11*`})] +[visit_exp `X*#930`] +[visit_id X*#930] +[visit_exp (t_11*{t_11 <- `t_11*`})] +[visit_exp t_11*{t_11 <- `t_11*`}] +[scope_enter t_11] +[visit_exp t_11] +[visit_id t_11] not free +[visit_id t_11] not free +[scope_exit t_11] +[visit_exp `t_11*`] +[visit_id t_11*] no dims +[visit_id t_11*] +[visit_exp x_1*{x_1 <- `x_1*`}] +[scope_enter x_1] +[visit_exp x_1] +[visit_id x_1] not free +[visit_id x_1] not free +[scope_exit x_1] +[visit_exp `x_1*`] +[visit_id x_1*] no dims +[visit_id x_1*] +[visit_exp `%`_resulttype{`X*#982`}(t_12*{t_12 <- `t_12*`})] +[visit_exp `X*#982`] +[visit_id X*#982] +[visit_exp (t_12*{t_12 <- `t_12*`})] +[visit_exp t_12*{t_12 <- `t_12*`}] +[scope_enter t_12] +[visit_exp t_12] +[visit_id t_12] not free +[visit_id t_12] not free +[scope_exit t_12] +[visit_exp `t_12*`] +[visit_id t_12*] no dims +[visit_id t_12*] +[visit_exp `%->_%%`_instrtype{resulttype#79, `localidx*#71`}(`%`_resulttype{`X*#995`}(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype{`X*#1047`}(t_22*{t_22 <- `t_22*`}))] +[visit_exp resulttype#79] +[visit_id resulttype#79] +[visit_exp `localidx*#71`] +[visit_id localidx*#71] +[visit_exp (`%`_resulttype{`X*#995`}(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype{`X*#1047`}(t_22*{t_22 <- `t_22*`}))] +[visit_exp `%`_resulttype{`X*#995`}(t_21*{t_21 <- `t_21*`})] +[visit_exp `X*#995`] +[visit_id X*#995] +[visit_exp (t_21*{t_21 <- `t_21*`})] +[visit_exp t_21*{t_21 <- `t_21*`}] +[scope_enter t_21] +[visit_exp t_21] +[visit_id t_21] not free +[visit_id t_21] not free +[scope_exit t_21] +[visit_exp `t_21*`] +[visit_id t_21*] no dims +[visit_id t_21*] +[visit_exp x_2*{x_2 <- `x_2*`}] +[scope_enter x_2] +[visit_exp x_2] +[visit_id x_2] not free +[visit_id x_2] not free +[scope_exit x_2] +[visit_exp `x_2*`] +[visit_id x_2*] no dims +[visit_id x_2*] +[visit_exp `%`_resulttype{`X*#1047`}(t_22*{t_22 <- `t_22*`})] +[visit_exp `X*#1047`] +[visit_id X*#1047] +[visit_exp (t_22*{t_22 <- `t_22*`})] +[visit_exp t_22*{t_22 <- `t_22*`}] +[scope_enter t_22] +[visit_exp t_22] +[visit_id t_22] not free +[visit_id t_22] not free +[scope_exit t_22] +[visit_exp `t_22*`] +[visit_id t_22*] no dims +[visit_id t_22*] +[visit_exp (C, `%`_resulttype{`X*#1060`}(t_21*{t_21 <- `t_21*`}), `%`_resulttype{`X*#1073`}(t_11*{t_11 <- `t_11*`}))] +[visit_exp C] +[visit_id C] not free +[visit_exp `%`_resulttype{`X*#1060`}(t_21*{t_21 <- `t_21*`})] +[visit_exp `X*#1060`] +[visit_id X*#1060] +[visit_exp (t_21*{t_21 <- `t_21*`})] +[visit_exp t_21*{t_21 <- `t_21*`}] +[scope_enter t_21] +[visit_exp t_21] +[visit_id t_21] not free +[visit_id t_21] not free +[scope_exit t_21] +[visit_exp `t_21*`] +[visit_id t_21*] not free +[visit_id t_21*] no dims +[visit_exp `%`_resulttype{`X*#1073`}(t_11*{t_11 <- `t_11*`})] +[visit_exp `X*#1073`] +[visit_id X*#1073] +[visit_exp (t_11*{t_11 <- `t_11*`})] +[visit_exp t_11*{t_11 <- `t_11*`}] +[scope_enter t_11] +[visit_exp t_11] +[visit_id t_11] not free +[visit_id t_11] not free +[scope_exit t_11] +[visit_exp `t_11*`] +[visit_id t_11*] not free +[visit_id t_11*] no dims +[visit_exp (C, `%`_resulttype{`X*#1086`}(t_12*{t_12 <- `t_12*`}), `%`_resulttype{`X*#1099`}(t_22*{t_22 <- `t_22*`}))] +[visit_exp C] +[visit_id C] not free +[visit_exp `%`_resulttype{`X*#1086`}(t_12*{t_12 <- `t_12*`})] +[visit_exp `X*#1086`] +[visit_id X*#1086] +[visit_exp (t_12*{t_12 <- `t_12*`})] +[visit_exp t_12*{t_12 <- `t_12*`}] +[scope_enter t_12] +[visit_exp t_12] +[visit_id t_12] not free +[visit_id t_12] not free +[scope_exit t_12] +[visit_exp `t_12*`] +[visit_id t_12*] not free +[visit_id t_12*] no dims +[visit_exp `%`_resulttype{`X*#1099`}(t_22*{t_22 <- `t_22*`})] +[visit_exp `X*#1099`] +[visit_id X*#1099] +[visit_exp (t_22*{t_22 <- `t_22*`})] +[visit_exp t_22*{t_22 <- `t_22*`}] +[scope_enter t_22] +[visit_exp t_22] +[visit_id t_22] not free +[visit_id t_22] not free +[scope_exit t_22] +[visit_exp `t_22*`] +[visit_id t_22*] not free +[visit_id t_22*] no dims +[visit_exp (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`}))] +[visit_exp x*{x <- `x*`}] +[scope_enter x] +[visit_exp x] +[visit_id x] not free +[visit_id x] not free +[scope_exit x] +[visit_exp `x*`] +[visit_id x*] no dims +[visit_id x*] +[visit_exp $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})] +[visit_exp x_2*{x_2 <- `x_2*`}] +[scope_enter x_2] +[visit_exp x_2] +[visit_id x_2] not free +[visit_id x_2] not free +[scope_exit x_2] +[visit_exp `x_2*`] +[visit_id x_2*] not free +[visit_id x_2*] no dims +[visit_exp x_1*{x_1 <- `x_1*`}] +[scope_enter x_1] +[visit_exp x_1] +[visit_id x_1] not free +[visit_id x_1] not free +[scope_exit x_1] +[visit_exp `x_1*`] +[visit_id x_1*] not free +[visit_id x_1*] no dims +[scope_enter i#4865] +[scope_enter init#65] +[scope_enter localtype*#4] +[scope_enter t] +[scope_enter valtype#271] +[scope_enter x] +[visit_exp (C.`LOCALS`_context{`localtype*#4`}[x!`%`_idx{i#4865}.0] = `%%`_localtype{init#65, valtype#271}(`SET`_init, t))] +[visit_exp C.`LOCALS`_context{`localtype*#4`}[x!`%`_idx{i#4865}.0]] +[visit_exp C.`LOCALS`_context{`localtype*#4`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `localtype*#4`] +[visit_id localtype*#4] not free +[visit_exp x!`%`_idx{i#4865}.0] +[visit_exp x!`%`_idx{i#4865}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#4865] +[visit_id i#4865] not free +[visit_exp `%%`_localtype{init#65, valtype#271}(`SET`_init, t)] +[visit_exp init#65] +[visit_id init#65] not free +[visit_exp valtype#271] +[visit_id valtype#271] not free +[visit_exp (`SET`_init, t)] +[visit_exp `SET`_init] +[visit_exp ()] +[visit_exp t] +[visit_id t] not free +[visit_id i#4865] not free +[visit_id init#65] not free +[visit_id localtype*#4] not free +[visit_id t] not free +[visit_id valtype#271] not free +[visit_id x] not free +[scope_exit x] +[scope_exit valtype#271] +[scope_exit t] +[scope_exit localtype*#4] +[scope_exit init#65] +[scope_exit i#4865] +[visit_exp `i#4865*`] +[visit_id i#4865*] no dims +[visit_id i#4865*] +[visit_exp `init#65*`] +[visit_id init#65*] no dims +[visit_id init#65*] +[visit_exp `localtype*#4*`] +[visit_id localtype*#4*] no dims +[visit_id localtype*#4*] +[visit_exp `t*`] +[visit_id t*] no dims +[visit_id t*] +[visit_exp `valtype#271*`] +[visit_id valtype#271*] no dims +[visit_id valtype#271*] +[visit_exp `x*`] +[visit_id x*] not free +[visit_id x*] no dims +[check_dims] +[check_dims] +[check_dims] +[check_dims] C packtype +[visit_exp C] +[visit_id C] +[visit_exp packtype] +[visit_id packtype] +[visit_exp packtype] +[visit_id packtype] not free +[check_dims] C valtype_1 valtype_2 +[visit_exp C] +[visit_id C] +[visit_exp (valtype_1 : valtype <: storagetype)] +[visit_exp valtype_1] +[visit_id valtype_1] +[visit_exp (valtype_2 : valtype <: storagetype)] +[visit_exp valtype_2] +[visit_id valtype_2] +[visit_exp (C, valtype_1, valtype_2)] +[visit_exp C] +[visit_id C] not free +[visit_exp valtype_1] +[visit_id valtype_1] not free +[visit_exp valtype_2] +[visit_id valtype_2] not free +[check_dims] C packtype_1 packtype_2 +[visit_exp C] +[visit_id C] +[visit_exp (packtype_1 : packtype <: storagetype)] +[visit_exp packtype_1] +[visit_id packtype_1] +[visit_exp (packtype_2 : packtype <: storagetype)] +[visit_exp packtype_2] +[visit_id packtype_2] +[visit_exp (C, packtype_1, packtype_2)] +[visit_exp C] +[visit_id C] not free +[visit_exp packtype_1] +[visit_id packtype_1] not free +[visit_exp packtype_2] +[visit_id packtype_2] not free +[check_dims] C mut?#371 mut?#377 storagetype#195 storagetype#201 zt_1 zt_2 +[visit_exp C] +[visit_id C] +[visit_exp `%%`_fieldtype{`mut?#371`, storagetype#195}(?(), zt_1)] +[visit_exp `mut?#371`] +[visit_id mut?#371] +[visit_exp storagetype#195] +[visit_id storagetype#195] +[visit_exp (?(), zt_1)] +[visit_exp ?()] +[visit_exp zt_1] +[visit_id zt_1] +[visit_exp `%%`_fieldtype{`mut?#377`, storagetype#201}(?(), zt_2)] +[visit_exp `mut?#377`] +[visit_id mut?#377] +[visit_exp storagetype#201] +[visit_id storagetype#201] +[visit_exp (?(), zt_2)] +[visit_exp ?()] +[visit_exp zt_2] +[visit_id zt_2] +[visit_exp (C, zt_1, zt_2)] +[visit_exp C] +[visit_id C] not free +[visit_exp zt_1] +[visit_id zt_1] not free +[visit_exp zt_2] +[visit_id zt_2] not free +[check_dims] C mut?#389 mut?#401 storagetype#213 storagetype#225 zt_1 zt_2 +[visit_exp C] +[visit_id C] +[visit_exp `%%`_fieldtype{`mut?#389`, storagetype#213}(?(`MUT`_mut), zt_1)] +[visit_exp `mut?#389`] +[visit_id mut?#389] +[visit_exp storagetype#213] +[visit_id storagetype#213] +[visit_exp (?(`MUT`_mut), zt_1)] +[visit_exp ?(`MUT`_mut)] +[visit_exp `MUT`_mut] +[visit_exp ()] +[visit_exp zt_1] +[visit_id zt_1] +[visit_exp `%%`_fieldtype{`mut?#401`, storagetype#225}(?(`MUT`_mut), zt_2)] +[visit_exp `mut?#401`] +[visit_id mut?#401] +[visit_exp storagetype#225] +[visit_id storagetype#225] +[visit_exp (?(`MUT`_mut), zt_2)] +[visit_exp ?(`MUT`_mut)] +[visit_exp `MUT`_mut] +[visit_exp ()] +[visit_exp zt_2] +[visit_id zt_2] +[visit_exp (C, zt_1, zt_2)] +[visit_exp C] +[visit_id C] not free +[visit_exp zt_1] +[visit_id zt_1] not free +[visit_exp zt_2] +[visit_id zt_2] not free +[visit_exp (C, zt_2, zt_1)] +[visit_exp C] +[visit_id C] not free +[visit_exp zt_2] +[visit_id zt_2] not free +[visit_exp zt_1] +[visit_id zt_1] not free +[check_dims] C X*#1124 X*#1137 ft'_1 ft_1 ft_2 +[visit_exp C] +[visit_id C] +[visit_exp `STRUCT`_comptype(`%`_list{`X*#1124`}(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))] +[visit_exp (`%`_list{`X*#1124`}(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))] +[visit_exp `%`_list{`X*#1124`}(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})] +[visit_exp `X*#1124`] +[visit_id X*#1124] +[visit_exp (ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})] +[visit_exp ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}] +[visit_exp ft_1*{ft_1 <- `ft_1*`}] +[scope_enter ft_1] +[visit_exp ft_1] +[visit_id ft_1] not free +[visit_id ft_1] not free +[scope_exit ft_1] +[visit_exp `ft_1*`] +[visit_id ft_1*] no dims +[visit_id ft_1*] +[visit_exp ft'_1*{ft'_1 <- `ft'_1*`}] +[scope_enter ft'_1] +[visit_exp ft'_1] +[visit_id ft'_1] not free +[visit_id ft'_1] not free +[scope_exit ft'_1] +[visit_exp `ft'_1*`] +[visit_id ft'_1*] no dims +[visit_id ft'_1*] +[visit_exp `STRUCT`_comptype(`%`_list{`X*#1137`}(ft_2*{ft_2 <- `ft_2*`}))] +[visit_exp (`%`_list{`X*#1137`}(ft_2*{ft_2 <- `ft_2*`}))] +[visit_exp `%`_list{`X*#1137`}(ft_2*{ft_2 <- `ft_2*`})] +[visit_exp `X*#1137`] +[visit_id X*#1137] +[visit_exp (ft_2*{ft_2 <- `ft_2*`})] +[visit_exp ft_2*{ft_2 <- `ft_2*`}] +[scope_enter ft_2] +[visit_exp ft_2] +[visit_id ft_2] not free +[visit_id ft_2] not free +[scope_exit ft_2] +[visit_exp `ft_2*`] +[visit_id ft_2*] no dims +[visit_id ft_2*] +[scope_enter ft_1] +[scope_enter ft_2] +[visit_exp (C, ft_1, ft_2)] +[visit_exp C] +[visit_id C] not free +[visit_exp ft_1] +[visit_id ft_1] not free +[visit_exp ft_2] +[visit_id ft_2] not free +[visit_id ft_1] not free +[visit_id ft_2] not free +[scope_exit ft_2] +[scope_exit ft_1] +[visit_exp `ft_1*`] +[visit_id ft_1*] not free +[visit_id ft_1*] no dims +[visit_exp `ft_2*`] +[visit_id ft_2*] not free +[visit_id ft_2*] no dims +[check_dims] C fieldtype#11 fieldtype#13 ft_1 ft_2 +[visit_exp C] +[visit_id C] +[visit_exp `ARRAY`_comptype{fieldtype#11}(ft_1)] +[visit_exp fieldtype#11] +[visit_id fieldtype#11] +[visit_exp (ft_1)] +[visit_exp ft_1] +[visit_id ft_1] +[visit_exp `ARRAY`_comptype{fieldtype#13}(ft_2)] +[visit_exp fieldtype#13] +[visit_id fieldtype#13] +[visit_exp (ft_2)] +[visit_exp ft_2] +[visit_id ft_2] +[visit_exp (C, ft_1, ft_2)] +[visit_exp C] +[visit_id C] not free +[visit_exp ft_1] +[visit_id ft_1] not free +[visit_exp ft_2] +[visit_id ft_2] not free +[check_dims] C X*#1152 X*#1165 X*#1180 X*#1193 X*#1206 X*#1219 X*#1232 X*#1245 resulttype#82 resulttype#85 t_11 t_12 t_21 t_22 +[visit_exp C] +[visit_id C] +[visit_exp `FUNC%->%`_comptype{resulttype#82}(`%`_resulttype{`X*#1152`}(t_11*{t_11 <- `t_11*`}), `%`_resulttype{`X*#1165`}(t_12*{t_12 <- `t_12*`}))] +[visit_exp resulttype#82] +[visit_id resulttype#82] +[visit_exp (`%`_resulttype{`X*#1152`}(t_11*{t_11 <- `t_11*`}), `%`_resulttype{`X*#1165`}(t_12*{t_12 <- `t_12*`}))] +[visit_exp `%`_resulttype{`X*#1152`}(t_11*{t_11 <- `t_11*`})] +[visit_exp `X*#1152`] +[visit_id X*#1152] +[visit_exp (t_11*{t_11 <- `t_11*`})] +[visit_exp t_11*{t_11 <- `t_11*`}] +[scope_enter t_11] +[visit_exp t_11] +[visit_id t_11] not free +[visit_id t_11] not free +[scope_exit t_11] +[visit_exp `t_11*`] +[visit_id t_11*] no dims +[visit_id t_11*] +[visit_exp `%`_resulttype{`X*#1165`}(t_12*{t_12 <- `t_12*`})] +[visit_exp `X*#1165`] +[visit_id X*#1165] +[visit_exp (t_12*{t_12 <- `t_12*`})] +[visit_exp t_12*{t_12 <- `t_12*`}] +[scope_enter t_12] +[visit_exp t_12] +[visit_id t_12] not free +[visit_id t_12] not free +[scope_exit t_12] +[visit_exp `t_12*`] +[visit_id t_12*] no dims +[visit_id t_12*] +[visit_exp `FUNC%->%`_comptype{resulttype#85}(`%`_resulttype{`X*#1180`}(t_21*{t_21 <- `t_21*`}), `%`_resulttype{`X*#1193`}(t_22*{t_22 <- `t_22*`}))] +[visit_exp resulttype#85] +[visit_id resulttype#85] +[visit_exp (`%`_resulttype{`X*#1180`}(t_21*{t_21 <- `t_21*`}), `%`_resulttype{`X*#1193`}(t_22*{t_22 <- `t_22*`}))] +[visit_exp `%`_resulttype{`X*#1180`}(t_21*{t_21 <- `t_21*`})] +[visit_exp `X*#1180`] +[visit_id X*#1180] +[visit_exp (t_21*{t_21 <- `t_21*`})] +[visit_exp t_21*{t_21 <- `t_21*`}] +[scope_enter t_21] +[visit_exp t_21] +[visit_id t_21] not free +[visit_id t_21] not free +[scope_exit t_21] +[visit_exp `t_21*`] +[visit_id t_21*] no dims +[visit_id t_21*] +[visit_exp `%`_resulttype{`X*#1193`}(t_22*{t_22 <- `t_22*`})] +[visit_exp `X*#1193`] +[visit_id X*#1193] +[visit_exp (t_22*{t_22 <- `t_22*`})] +[visit_exp t_22*{t_22 <- `t_22*`}] +[scope_enter t_22] +[visit_exp t_22] +[visit_id t_22] not free +[visit_id t_22] not free +[scope_exit t_22] +[visit_exp `t_22*`] +[visit_id t_22*] no dims +[visit_id t_22*] +[visit_exp (C, `%`_resulttype{`X*#1206`}(t_21*{t_21 <- `t_21*`}), `%`_resulttype{`X*#1219`}(t_11*{t_11 <- `t_11*`}))] +[visit_exp C] +[visit_id C] not free +[visit_exp `%`_resulttype{`X*#1206`}(t_21*{t_21 <- `t_21*`})] +[visit_exp `X*#1206`] +[visit_id X*#1206] +[visit_exp (t_21*{t_21 <- `t_21*`})] +[visit_exp t_21*{t_21 <- `t_21*`}] +[scope_enter t_21] +[visit_exp t_21] +[visit_id t_21] not free +[visit_id t_21] not free +[scope_exit t_21] +[visit_exp `t_21*`] +[visit_id t_21*] not free +[visit_id t_21*] no dims +[visit_exp `%`_resulttype{`X*#1219`}(t_11*{t_11 <- `t_11*`})] +[visit_exp `X*#1219`] +[visit_id X*#1219] +[visit_exp (t_11*{t_11 <- `t_11*`})] +[visit_exp t_11*{t_11 <- `t_11*`}] +[scope_enter t_11] +[visit_exp t_11] +[visit_id t_11] not free +[visit_id t_11] not free +[scope_exit t_11] +[visit_exp `t_11*`] +[visit_id t_11*] not free +[visit_id t_11*] no dims +[visit_exp (C, `%`_resulttype{`X*#1232`}(t_12*{t_12 <- `t_12*`}), `%`_resulttype{`X*#1245`}(t_22*{t_22 <- `t_22*`}))] +[visit_exp C] +[visit_id C] not free +[visit_exp `%`_resulttype{`X*#1232`}(t_12*{t_12 <- `t_12*`})] +[visit_exp `X*#1232`] +[visit_id X*#1232] +[visit_exp (t_12*{t_12 <- `t_12*`})] +[visit_exp t_12*{t_12 <- `t_12*`}] +[scope_enter t_12] +[visit_exp t_12] +[visit_id t_12] not free +[visit_id t_12] not free +[scope_exit t_12] +[visit_exp `t_12*`] +[visit_id t_12*] not free +[visit_id t_12*] no dims +[visit_exp `%`_resulttype{`X*#1245`}(t_22*{t_22 <- `t_22*`})] +[visit_exp `X*#1245`] +[visit_id X*#1245] +[visit_exp (t_22*{t_22 <- `t_22*`})] +[visit_exp t_22*{t_22 <- `t_22*`}] +[scope_enter t_22] +[visit_exp t_22] +[visit_id t_22] not free +[visit_id t_22] not free +[scope_exit t_22] +[visit_exp `t_22*`] +[visit_id t_22*] not free +[visit_id t_22*] no dims +[check_dims] C deftype_1 deftype_2 +[visit_exp C] +[visit_id C] +[visit_exp deftype_1] +[visit_id deftype_1] +[visit_exp deftype_2] +[visit_id deftype_2] +[visit_exp ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2))] +[visit_exp $clos_deftype(C, deftype_1)] +[visit_exp C] +[visit_id C] not free +[visit_exp deftype_1] +[visit_id deftype_1] not free +[visit_exp $clos_deftype(C, deftype_2)] +[visit_exp C] +[visit_id C] not free +[visit_exp deftype_2] +[visit_id deftype_2] not free +[check_dims] C comptype#437 ct deftype_1 deftype_2 final final?#437 i typeuse typeuse*#437 +[visit_exp C] +[visit_id C] +[visit_exp deftype_1] +[visit_id deftype_1] +[visit_exp deftype_2] +[visit_id deftype_2] +[visit_exp ($unrolldt(deftype_1) = `SUB`_subtype{`final?#437`, `typeuse*#437`, comptype#437}(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct))] +[visit_exp $unrolldt(deftype_1)] +[visit_exp deftype_1] +[visit_id deftype_1] not free +[visit_exp `SUB`_subtype{`final?#437`, `typeuse*#437`, comptype#437}(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)] +[visit_exp `final?#437`] +[visit_id final?#437] +[visit_exp `typeuse*#437`] +[visit_id typeuse*#437] +[visit_exp comptype#437] +[visit_id comptype#437] +[visit_exp (final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)] +[visit_exp final?{final <- `final?`}] +[scope_enter final] +[visit_exp final] +[visit_id final] not free +[visit_id final] not free +[scope_exit final] +[visit_exp `final?`] +[visit_id final?] no dims +[visit_id final?] +[visit_exp typeuse*{typeuse <- `typeuse*`}] +[scope_enter typeuse] +[visit_exp typeuse] +[visit_id typeuse] not free +[visit_id typeuse] not free +[scope_exit typeuse] +[visit_exp `typeuse*`] +[visit_id typeuse*] no dims +[visit_id typeuse*] +[visit_exp ct] +[visit_id ct] +[visit_exp (C, (typeuse*{typeuse <- `typeuse*`}[i] : typeuse <: heaptype), (deftype_2 : deftype <: heaptype))] +[visit_exp C] +[visit_id C] not free +[visit_exp (typeuse*{typeuse <- `typeuse*`}[i] : typeuse <: heaptype)] +[visit_exp typeuse*{typeuse <- `typeuse*`}[i]] +[visit_exp typeuse*{typeuse <- `typeuse*`}] +[scope_enter typeuse] +[visit_exp typeuse] +[visit_id typeuse] not free +[visit_id typeuse] not free +[scope_exit typeuse] +[visit_exp `typeuse*`] +[visit_id typeuse*] not free +[visit_id typeuse*] no dims +[visit_exp i] +[visit_id i] +[visit_exp (deftype_2 : deftype <: heaptype)] +[visit_exp deftype_2] +[visit_id deftype_2] not free +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] C i#4887 i#4909 i#4931 i#4966 m_1 m_2 n_1 n_2 u64#84 u64#96 u64?#83 u64?#95 +[visit_exp C] +[visit_id C] +[visit_exp `[%..%]`_limits{u64#84, `u64?#83`}(`%`_u64{i#4887}(n_1), ?(`%`_u64{i#4909}(m_1)))] +[visit_exp u64#84] +[visit_id u64#84] +[visit_exp `u64?#83`] +[visit_id u64?#83] +[visit_exp (`%`_u64{i#4887}(n_1), ?(`%`_u64{i#4909}(m_1)))] +[visit_exp `%`_u64{i#4887}(n_1)] +[visit_exp i#4887] +[visit_id i#4887] +[visit_exp (n_1)] +[visit_exp n_1] +[visit_id n_1] +[visit_exp ?(`%`_u64{i#4909}(m_1))] +[visit_exp `%`_u64{i#4909}(m_1)] +[visit_exp i#4909] +[visit_id i#4909] +[visit_exp (m_1)] +[visit_exp m_1] +[visit_id m_1] +[visit_exp `[%..%]`_limits{u64#96, `u64?#95`}(`%`_u64{i#4931}(n_2), `%`_u64{i#4966}(m_2)?{i#4966 <- `i#4966?`, m_2 <- `m_2?`})] +[visit_exp u64#96] +[visit_id u64#96] +[visit_exp `u64?#95`] +[visit_id u64?#95] +[visit_exp (`%`_u64{i#4931}(n_2), `%`_u64{i#4966}(m_2)?{i#4966 <- `i#4966?`, m_2 <- `m_2?`})] +[visit_exp `%`_u64{i#4931}(n_2)] +[visit_exp i#4931] +[visit_id i#4931] +[visit_exp (n_2)] +[visit_exp n_2] +[visit_id n_2] +[visit_exp `%`_u64{i#4966}(m_2)?{i#4966 <- `i#4966?`, m_2 <- `m_2?`}] +[scope_enter i#4966] +[scope_enter m_2] +[visit_exp `%`_u64{i#4966}(m_2)] +[visit_exp i#4966] +[visit_id i#4966] not free +[visit_exp (m_2)] +[visit_exp m_2] +[visit_id m_2] not free +[visit_id i#4966] not free +[visit_id m_2] not free +[scope_exit m_2] +[scope_exit i#4966] +[visit_exp `i#4966?`] +[visit_id i#4966?] no dims +[visit_id i#4966?] +[visit_exp `m_2?`] +[visit_id m_2?] no dims +[visit_id m_2?] +[visit_exp (n_1 >= n_2)] +[visit_exp n_1] +[visit_id n_1] not free +[visit_exp n_2] +[visit_id n_2] not free +[scope_enter m_2] +[visit_exp (m_1 <= m_2)] +[visit_exp m_1] +[visit_id m_1] not free +[visit_exp m_2] +[visit_id m_2] not free +[visit_id m_2] not free +[scope_exit m_2] +[visit_exp `m_2?`] +[visit_id m_2?] not free +[visit_id m_2?] no dims +[check_dims] C i#4988 i#5010 n_1 n_2 u64#108 u64#120 u64?#107 u64?#119 +[visit_exp C] +[visit_id C] +[visit_exp `[%..%]`_limits{u64#108, `u64?#107`}(`%`_u64{i#4988}(n_1), ?())] +[visit_exp u64#108] +[visit_id u64#108] +[visit_exp `u64?#107`] +[visit_id u64?#107] +[visit_exp (`%`_u64{i#4988}(n_1), ?())] +[visit_exp `%`_u64{i#4988}(n_1)] +[visit_exp i#4988] +[visit_id i#4988] +[visit_exp (n_1)] +[visit_exp n_1] +[visit_id n_1] +[visit_exp ?()] +[visit_exp `[%..%]`_limits{u64#120, `u64?#119`}(`%`_u64{i#5010}(n_2), ?())] +[visit_exp u64#120] +[visit_id u64#120] +[visit_exp `u64?#119`] +[visit_id u64?#119] +[visit_exp (`%`_u64{i#5010}(n_2), ?())] +[visit_exp `%`_u64{i#5010}(n_2)] +[visit_exp i#5010] +[visit_id i#5010] +[visit_exp (n_2)] +[visit_exp n_2] +[visit_id n_2] +[visit_exp ?()] +[visit_exp (n_1 >= n_2)] +[visit_exp n_1] +[visit_id n_1] not free +[visit_exp n_2] +[visit_id n_2] not free +[check_dims] C deftype_1 deftype_2 +[visit_exp C] +[visit_id C] +[visit_exp (deftype_1 : deftype <: typeuse)] +[visit_exp deftype_1] +[visit_id deftype_1] +[visit_exp (deftype_2 : deftype <: typeuse)] +[visit_exp deftype_2] +[visit_id deftype_2] +[visit_exp (C, deftype_1, deftype_2)] +[visit_exp C] +[visit_id C] not free +[visit_exp deftype_1] +[visit_id deftype_1] not free +[visit_exp deftype_2] +[visit_id deftype_2] not free +[visit_exp (C, deftype_2, deftype_1)] +[visit_exp C] +[visit_id C] not free +[visit_exp deftype_2] +[visit_id deftype_2] not free +[visit_exp deftype_1] +[visit_id deftype_1] not free +[check_dims] C mut?#501 mut?#507 valtype#277 valtype#283 valtype_1 valtype_2 +[visit_exp C] +[visit_id C] +[visit_exp `%%`_globaltype{`mut?#501`, valtype#277}(?(), valtype_1)] +[visit_exp `mut?#501`] +[visit_id mut?#501] +[visit_exp valtype#277] +[visit_id valtype#277] +[visit_exp (?(), valtype_1)] +[visit_exp ?()] +[visit_exp valtype_1] +[visit_id valtype_1] +[visit_exp `%%`_globaltype{`mut?#507`, valtype#283}(?(), valtype_2)] +[visit_exp `mut?#507`] +[visit_id mut?#507] +[visit_exp valtype#283] +[visit_id valtype#283] +[visit_exp (?(), valtype_2)] +[visit_exp ?()] +[visit_exp valtype_2] +[visit_id valtype_2] +[visit_exp (C, valtype_1, valtype_2)] +[visit_exp C] +[visit_id C] not free +[visit_exp valtype_1] +[visit_id valtype_1] not free +[visit_exp valtype_2] +[visit_id valtype_2] not free +[check_dims] C mut?#519 mut?#531 valtype#295 valtype#307 valtype_1 valtype_2 +[visit_exp C] +[visit_id C] +[visit_exp `%%`_globaltype{`mut?#519`, valtype#295}(?(`MUT`_mut), valtype_1)] +[visit_exp `mut?#519`] +[visit_id mut?#519] +[visit_exp valtype#295] +[visit_id valtype#295] +[visit_exp (?(`MUT`_mut), valtype_1)] +[visit_exp ?(`MUT`_mut)] +[visit_exp `MUT`_mut] +[visit_exp ()] +[visit_exp valtype_1] +[visit_id valtype_1] +[visit_exp `%%`_globaltype{`mut?#531`, valtype#307}(?(`MUT`_mut), valtype_2)] +[visit_exp `mut?#531`] +[visit_id mut?#531] +[visit_exp valtype#307] +[visit_id valtype#307] +[visit_exp (?(`MUT`_mut), valtype_2)] +[visit_exp ?(`MUT`_mut)] +[visit_exp `MUT`_mut] +[visit_exp ()] +[visit_exp valtype_2] +[visit_id valtype_2] +[visit_exp (C, valtype_1, valtype_2)] +[visit_exp C] +[visit_id C] not free +[visit_exp valtype_1] +[visit_id valtype_1] not free +[visit_exp valtype_2] +[visit_id valtype_2] not free +[visit_exp (C, valtype_2, valtype_1)] +[visit_exp C] +[visit_id C] not free +[visit_exp valtype_2] +[visit_id valtype_2] not free +[visit_exp valtype_1] +[visit_id valtype_1] not free +[check_dims] C addrtype addrtype#345 addrtype#357 limits#345 limits#357 limits_1 limits_2 +[visit_exp C] +[visit_id C] +[visit_exp `%%PAGE`_memtype{addrtype#345, limits#345}(addrtype, limits_1)] +[visit_exp addrtype#345] +[visit_id addrtype#345] +[visit_exp limits#345] +[visit_id limits#345] +[visit_exp (addrtype, limits_1)] +[visit_exp addrtype] +[visit_id addrtype] +[visit_exp limits_1] +[visit_id limits_1] +[visit_exp `%%PAGE`_memtype{addrtype#357, limits#357}(addrtype, limits_2)] +[visit_exp addrtype#357] +[visit_id addrtype#357] +[visit_exp limits#357] +[visit_id limits#357] +[visit_exp (addrtype, limits_2)] +[visit_exp addrtype] +[visit_id addrtype] not free +[visit_exp limits_2] +[visit_id limits_2] +[visit_exp (C, limits_1, limits_2)] +[visit_exp C] +[visit_id C] not free +[visit_exp limits_1] +[visit_id limits_1] not free +[visit_exp limits_2] +[visit_id limits_2] not free +[check_dims] C addrtype addrtype#369 addrtype#381 limits#369 limits#381 limits_1 limits_2 reftype#335 reftype#347 reftype_1 reftype_2 +[visit_exp C] +[visit_id C] +[visit_exp `%%%`_tabletype{addrtype#369, limits#369, reftype#335}(addrtype, limits_1, reftype_1)] +[visit_exp addrtype#369] +[visit_id addrtype#369] +[visit_exp limits#369] +[visit_id limits#369] +[visit_exp reftype#335] +[visit_id reftype#335] +[visit_exp (addrtype, limits_1, reftype_1)] +[visit_exp addrtype] +[visit_id addrtype] +[visit_exp limits_1] +[visit_id limits_1] +[visit_exp reftype_1] +[visit_id reftype_1] +[visit_exp `%%%`_tabletype{addrtype#381, limits#381, reftype#347}(addrtype, limits_2, reftype_2)] +[visit_exp addrtype#381] +[visit_id addrtype#381] +[visit_exp limits#381] +[visit_id limits#381] +[visit_exp reftype#347] +[visit_id reftype#347] +[visit_exp (addrtype, limits_2, reftype_2)] +[visit_exp addrtype] +[visit_id addrtype] not free +[visit_exp limits_2] +[visit_id limits_2] +[visit_exp reftype_2] +[visit_id reftype_2] +[visit_exp (C, limits_1, limits_2)] +[visit_exp C] +[visit_id C] not free +[visit_exp limits_1] +[visit_id limits_1] not free +[visit_exp limits_2] +[visit_id limits_2] not free +[visit_exp (C, reftype_1, reftype_2)] +[visit_exp C] +[visit_id C] not free +[visit_exp reftype_1] +[visit_id reftype_1] not free +[visit_exp reftype_2] +[visit_id reftype_2] not free +[visit_exp (C, reftype_2, reftype_1)] +[visit_exp C] +[visit_id C] not free +[visit_exp reftype_2] +[visit_id reftype_2] not free +[visit_exp reftype_1] +[visit_id reftype_1] not free +[check_dims] C tagtype#91 tagtype#93 tagtype_1 tagtype_2 +[visit_exp C] +[visit_id C] +[visit_exp `TAG`_externtype{tagtype#91}(tagtype_1)] +[visit_exp tagtype#91] +[visit_id tagtype#91] +[visit_exp (tagtype_1)] +[visit_exp tagtype_1] +[visit_id tagtype_1] +[visit_exp `TAG`_externtype{tagtype#93}(tagtype_2)] +[visit_exp tagtype#93] +[visit_id tagtype#93] +[visit_exp (tagtype_2)] +[visit_exp tagtype_2] +[visit_id tagtype_2] +[visit_exp (C, tagtype_1, tagtype_2)] +[visit_exp C] +[visit_id C] not free +[visit_exp tagtype_1] +[visit_id tagtype_1] not free +[visit_exp tagtype_2] +[visit_id tagtype_2] not free +[check_dims] C globaltype#103 globaltype#105 globaltype_1 globaltype_2 +[visit_exp C] +[visit_id C] +[visit_exp `GLOBAL`_externtype{globaltype#103}(globaltype_1)] +[visit_exp globaltype#103] +[visit_id globaltype#103] +[visit_exp (globaltype_1)] +[visit_exp globaltype_1] +[visit_id globaltype_1] +[visit_exp `GLOBAL`_externtype{globaltype#105}(globaltype_2)] +[visit_exp globaltype#105] +[visit_id globaltype#105] +[visit_exp (globaltype_2)] +[visit_exp globaltype_2] +[visit_id globaltype_2] +[visit_exp (C, globaltype_1, globaltype_2)] +[visit_exp C] +[visit_id C] not free +[visit_exp globaltype_1] +[visit_id globaltype_1] not free +[visit_exp globaltype_2] +[visit_id globaltype_2] not free +[check_dims] C memtype#115 memtype#117 memtype_1 memtype_2 +[visit_exp C] +[visit_id C] +[visit_exp `MEM`_externtype{memtype#115}(memtype_1)] +[visit_exp memtype#115] +[visit_id memtype#115] +[visit_exp (memtype_1)] +[visit_exp memtype_1] +[visit_id memtype_1] +[visit_exp `MEM`_externtype{memtype#117}(memtype_2)] +[visit_exp memtype#117] +[visit_id memtype#117] +[visit_exp (memtype_2)] +[visit_exp memtype_2] +[visit_id memtype_2] +[visit_exp (C, memtype_1, memtype_2)] +[visit_exp C] +[visit_id C] not free +[visit_exp memtype_1] +[visit_id memtype_1] not free +[visit_exp memtype_2] +[visit_id memtype_2] not free +[check_dims] C tabletype#129 tabletype#131 tabletype_1 tabletype_2 +[visit_exp C] +[visit_id C] +[visit_exp `TABLE`_externtype{tabletype#129}(tabletype_1)] +[visit_exp tabletype#129] +[visit_id tabletype#129] +[visit_exp (tabletype_1)] +[visit_exp tabletype_1] +[visit_id tabletype_1] +[visit_exp `TABLE`_externtype{tabletype#131}(tabletype_2)] +[visit_exp tabletype#131] +[visit_id tabletype#131] +[visit_exp (tabletype_2)] +[visit_exp tabletype_2] +[visit_id tabletype_2] +[visit_exp (C, tabletype_1, tabletype_2)] +[visit_exp C] +[visit_id C] not free +[visit_exp tabletype_1] +[visit_id tabletype_1] not free +[visit_exp tabletype_2] +[visit_id tabletype_2] not free +[check_dims] C deftype_1 deftype_2 typeuse#19 typeuse#21 +[visit_exp C] +[visit_id C] +[visit_exp `FUNC`_externtype{typeuse#19}((deftype_1 : deftype <: typeuse))] +[visit_exp typeuse#19] +[visit_id typeuse#19] +[visit_exp ((deftype_1 : deftype <: typeuse))] +[visit_exp (deftype_1 : deftype <: typeuse)] +[visit_exp deftype_1] +[visit_id deftype_1] +[visit_exp `FUNC`_externtype{typeuse#21}((deftype_2 : deftype <: typeuse))] +[visit_exp typeuse#21] +[visit_id typeuse#21] +[visit_exp ((deftype_2 : deftype <: typeuse))] +[visit_exp (deftype_2 : deftype <: typeuse)] +[visit_exp deftype_2] +[visit_id deftype_2] +[visit_exp (C, deftype_1, deftype_2)] +[visit_exp C] +[visit_id C] not free +[visit_exp deftype_1] +[visit_id deftype_1] not free +[visit_exp deftype_2] +[visit_id deftype_2] not free +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] C X*#1268 X*#1317 localidx*#83 resulttype#105 +[visit_exp C] +[visit_id C] +[visit_exp `NOP`_instr] +[visit_exp ()] +[visit_exp `%->_%%`_instrtype{resulttype#105, `localidx*#83`}(`%`_resulttype{`X*#1268`}([]), [], `%`_resulttype{`X*#1317`}([]))] +[visit_exp resulttype#105] +[visit_id resulttype#105] +[visit_exp `localidx*#83`] +[visit_id localidx*#83] +[visit_exp (`%`_resulttype{`X*#1268`}([]), [], `%`_resulttype{`X*#1317`}([]))] +[visit_exp `%`_resulttype{`X*#1268`}([])] +[visit_exp `X*#1268`] +[visit_id X*#1268] +[visit_exp ([])] +[visit_exp []] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#1317`}([])] +[visit_exp `X*#1317`] +[visit_id X*#1317] +[visit_exp ([])] +[visit_exp []] +[check_dims] C X*#1328 X*#1379 X*#1390 X*#1441 localidx*#107 localidx*#95 resulttype#125 resulttype#145 t_1 t_2 +[visit_exp C] +[visit_id C] +[visit_exp `UNREACHABLE`_instr] +[visit_exp ()] +[visit_exp `%->_%%`_instrtype{resulttype#125, `localidx*#95`}(`%`_resulttype{`X*#1328`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#1379`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#125] +[visit_id resulttype#125] +[visit_exp `localidx*#95`] +[visit_id localidx*#95] +[visit_exp (`%`_resulttype{`X*#1328`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#1379`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#1328`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#1328`] +[visit_id X*#1328] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] no dims +[visit_id t_1*] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#1379`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#1379`] +[visit_id X*#1379] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] no dims +[visit_id t_2*] +[visit_exp (C, `%->_%%`_instrtype{resulttype#145, `localidx*#107`}(`%`_resulttype{`X*#1390`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#1441`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp C] +[visit_id C] not free +[visit_exp `%->_%%`_instrtype{resulttype#145, `localidx*#107`}(`%`_resulttype{`X*#1390`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#1441`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#145] +[visit_id resulttype#145] +[visit_exp `localidx*#107`] +[visit_id localidx*#107] +[visit_exp (`%`_resulttype{`X*#1390`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#1441`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#1390`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#1390`] +[visit_id X*#1390] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] not free +[visit_id t_1*] no dims +[visit_exp []] +[visit_exp `%`_resulttype{`X*#1441`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#1441`] +[visit_id X*#1441] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] not free +[visit_id t_2*] no dims +[check_dims] C X*#1452 X*#1520 localidx*#119 resulttype#165 t +[visit_exp C] +[visit_id C] +[visit_exp `DROP`_instr] +[visit_exp ()] +[visit_exp `%->_%%`_instrtype{resulttype#165, `localidx*#119`}(`%`_resulttype{`X*#1452`}([t]), [], `%`_resulttype{`X*#1520`}([]))] +[visit_exp resulttype#165] +[visit_id resulttype#165] +[visit_exp `localidx*#119`] +[visit_id localidx*#119] +[visit_exp (`%`_resulttype{`X*#1452`}([t]), [], `%`_resulttype{`X*#1520`}([]))] +[visit_exp `%`_resulttype{`X*#1452`}([t])] +[visit_exp `X*#1452`] +[visit_id X*#1452] +[visit_exp ([t])] +[visit_exp [t]] +[visit_exp t] +[visit_id t] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#1520`}([])] +[visit_exp `X*#1520`] +[visit_id X*#1520] +[visit_exp ([])] +[visit_exp []] +[visit_exp (C, t)] +[visit_exp C] +[visit_id C] not free +[visit_exp t] +[visit_id t] not free +[check_dims] C X*#1541 X*#1590 localidx*#131 resulttype#185 t valtype*?#3 +[visit_exp C] +[visit_id C] +[visit_exp `SELECT`_instr{`valtype*?#3`}(?([t]))] +[visit_exp `valtype*?#3`] +[visit_id valtype*?#3] +[visit_exp (?([t]))] +[visit_exp ?([t])] +[visit_exp [t]] +[visit_exp t] +[visit_id t] +[visit_exp `%->_%%`_instrtype{resulttype#185, `localidx*#131`}(`%`_resulttype{`X*#1541`}([t t `I32`_valtype]), [], `%`_resulttype{`X*#1590`}([t]))] +[visit_exp resulttype#185] +[visit_id resulttype#185] +[visit_exp `localidx*#131`] +[visit_id localidx*#131] +[visit_exp (`%`_resulttype{`X*#1541`}([t t `I32`_valtype]), [], `%`_resulttype{`X*#1590`}([t]))] +[visit_exp `%`_resulttype{`X*#1541`}([t t `I32`_valtype])] +[visit_exp `X*#1541`] +[visit_id X*#1541] +[visit_exp ([t t `I32`_valtype])] +[visit_exp [t t `I32`_valtype]] +[visit_exp t] +[visit_id t] not free +[visit_exp t] +[visit_id t] not free +[visit_exp `I32`_valtype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#1590`}([t])] +[visit_exp `X*#1590`] +[visit_id X*#1590] +[visit_exp ([t])] +[visit_exp [t]] +[visit_exp t] +[visit_id t] not free +[visit_exp (C, t)] +[visit_exp C] +[visit_id C] not free +[visit_exp t] +[visit_id t] not free +[check_dims] C X*#1611 X*#1660 localidx*#143 numtype resulttype#205 t t' valtype*?#5 vectype +[visit_exp C] +[visit_id C] +[visit_exp `SELECT`_instr{`valtype*?#5`}(?())] +[visit_exp `valtype*?#5`] +[visit_id valtype*?#5] +[visit_exp (?())] +[visit_exp ?()] +[visit_exp `%->_%%`_instrtype{resulttype#205, `localidx*#143`}(`%`_resulttype{`X*#1611`}([t t `I32`_valtype]), [], `%`_resulttype{`X*#1660`}([t]))] +[visit_exp resulttype#205] +[visit_id resulttype#205] +[visit_exp `localidx*#143`] +[visit_id localidx*#143] +[visit_exp (`%`_resulttype{`X*#1611`}([t t `I32`_valtype]), [], `%`_resulttype{`X*#1660`}([t]))] +[visit_exp `%`_resulttype{`X*#1611`}([t t `I32`_valtype])] +[visit_exp `X*#1611`] +[visit_id X*#1611] +[visit_exp ([t t `I32`_valtype])] +[visit_exp [t t `I32`_valtype]] +[visit_exp t] +[visit_id t] +[visit_exp t] +[visit_id t] not free +[visit_exp `I32`_valtype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#1660`}([t])] +[visit_exp `X*#1660`] +[visit_id X*#1660] +[visit_exp ([t])] +[visit_exp [t]] +[visit_exp t] +[visit_id t] not free +[visit_exp (C, t)] +[visit_exp C] +[visit_id C] not free +[visit_exp t] +[visit_id t] not free +[visit_exp (C, t, t')] +[visit_exp C] +[visit_id C] not free +[visit_exp t] +[visit_id t] not free +[visit_exp t'] +[visit_id t'] +[visit_exp ((t' = (numtype : numtype <: valtype)) \/ (t' = (vectype : vectype <: valtype)))] +[visit_exp (t' = (numtype : numtype <: valtype))] +[visit_exp t'] +[visit_id t'] not free +[visit_exp (numtype : numtype <: valtype)] +[visit_exp numtype] +[visit_id numtype] +[visit_exp (t' = (vectype : vectype <: valtype))] +[visit_exp t'] +[visit_id t'] not free +[visit_exp (vectype : vectype <: valtype)] +[visit_exp vectype] +[visit_id vectype] +[check_dims] +[check_dims] C X*#1681 X*#1730 localidx*#155 resulttype#225 valtype valtype?#3 +[visit_exp C] +[visit_id C] +[visit_exp `_RESULT`_blocktype{`valtype?#3`}(valtype?{valtype <- `valtype?`})] +[visit_exp `valtype?#3`] +[visit_id valtype?#3] +[visit_exp (valtype?{valtype <- `valtype?`})] +[visit_exp valtype?{valtype <- `valtype?`}] +[scope_enter valtype] +[visit_exp valtype] +[visit_id valtype] not free +[visit_id valtype] not free +[scope_exit valtype] +[visit_exp `valtype?`] +[visit_id valtype?] no dims +[visit_id valtype?] +[visit_exp `%->_%%`_instrtype{resulttype#225, `localidx*#155`}(`%`_resulttype{`X*#1681`}([]), [], `%`_resulttype{`X*#1730`}(lift(valtype?{valtype <- `valtype?`})))] +[visit_exp resulttype#225] +[visit_id resulttype#225] +[visit_exp `localidx*#155`] +[visit_id localidx*#155] +[visit_exp (`%`_resulttype{`X*#1681`}([]), [], `%`_resulttype{`X*#1730`}(lift(valtype?{valtype <- `valtype?`})))] +[visit_exp `%`_resulttype{`X*#1681`}([])] +[visit_exp `X*#1681`] +[visit_id X*#1681] +[visit_exp ([])] +[visit_exp []] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#1730`}(lift(valtype?{valtype <- `valtype?`}))] +[visit_exp `X*#1730`] +[visit_id X*#1730] +[visit_exp (lift(valtype?{valtype <- `valtype?`}))] +[visit_exp lift(valtype?{valtype <- `valtype?`})] +[visit_exp valtype?{valtype <- `valtype?`}] +[scope_enter valtype] +[visit_exp valtype] +[visit_id valtype] not free +[visit_id valtype] not free +[scope_exit valtype] +[visit_exp `valtype?`] +[visit_id valtype?] not free +[visit_id valtype?] no dims +[scope_enter valtype] +[visit_exp (C, valtype)] +[visit_exp C] +[visit_id C] not free +[visit_exp valtype] +[visit_id valtype] not free +[visit_id valtype] not free +[scope_exit valtype] +[visit_exp `valtype?`] +[visit_id valtype?] not free +[visit_id valtype?] no dims +[check_dims] C X*#1741 X*#1792 X*#1805 X*#1818 deftype*#19 i#5032 localidx*#167 resulttype#245 resulttype#248 t_1 t_2 typeidx typeidx#392 +[visit_exp C] +[visit_id C] +[visit_exp `_IDX`_blocktype{typeidx#392}(typeidx)] +[visit_exp typeidx#392] +[visit_id typeidx#392] +[visit_exp (typeidx)] +[visit_exp typeidx] +[visit_id typeidx] +[visit_exp `%->_%%`_instrtype{resulttype#245, `localidx*#167`}(`%`_resulttype{`X*#1741`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#1792`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#245] +[visit_id resulttype#245] +[visit_exp `localidx*#167`] +[visit_id localidx*#167] +[visit_exp (`%`_resulttype{`X*#1741`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#1792`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#1741`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#1741`] +[visit_id X*#1741] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] no dims +[visit_id t_1*] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#1792`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#1792`] +[visit_id X*#1792] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] no dims +[visit_id t_2*] +[visit_exp (C.`TYPES`_context{`deftype*#19`}[typeidx!`%`_typeidx{i#5032}.0], `FUNC%->%`_comptype{resulttype#248}(`%`_resulttype{`X*#1805`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#1818`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp C.`TYPES`_context{`deftype*#19`}[typeidx!`%`_typeidx{i#5032}.0]] +[visit_exp C.`TYPES`_context{`deftype*#19`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `deftype*#19`] +[visit_id deftype*#19] +[visit_exp typeidx!`%`_typeidx{i#5032}.0] +[visit_exp typeidx!`%`_typeidx{i#5032}] +[visit_exp typeidx] +[visit_id typeidx] not free +[visit_exp i#5032] +[visit_id i#5032] +[visit_exp `FUNC%->%`_comptype{resulttype#248}(`%`_resulttype{`X*#1805`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#1818`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#248] +[visit_id resulttype#248] +[visit_exp (`%`_resulttype{`X*#1805`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#1818`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#1805`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#1805`] +[visit_id X*#1805] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] not free +[visit_id t_1*] no dims +[visit_exp `%`_resulttype{`X*#1818`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#1818`] +[visit_id X*#1818] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] not free +[visit_id t_2*] no dims +[check_dims] C X*#1831 X*#1882 X*#1893 X*#1944 X*#1955 X*#1968 X*#2020 blocktype#7 bt datatype*#2 deftype*#20 deftype*#21 elemtype*#2 funcidx*#40 globaltype*#2 instr instr*#8 localidx*#179 localidx*#191 localidx*#203 localtype*#5 memtype*#2 resulttype#268 resulttype#288 resulttype#308 resulttype*#2 resulttype?#2 subtype*#5 t_1 t_2 tabletype*#2 tagtype*#2 x +[visit_exp C] +[visit_id C] +[visit_exp `BLOCK`_instr{blocktype#7, `instr*#8`}(bt, instr*{instr <- `instr*`})] +[visit_exp blocktype#7] +[visit_id blocktype#7] +[visit_exp `instr*#8`] +[visit_id instr*#8] +[visit_exp (bt, instr*{instr <- `instr*`})] +[visit_exp bt] +[visit_id bt] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] no dims +[visit_id instr*] +[visit_exp `%->_%%`_instrtype{resulttype#268, `localidx*#179`}(`%`_resulttype{`X*#1831`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#1882`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#268] +[visit_id resulttype#268] +[visit_exp `localidx*#179`] +[visit_id localidx*#179] +[visit_exp (`%`_resulttype{`X*#1831`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#1882`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#1831`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#1831`] +[visit_id X*#1831] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] no dims +[visit_id t_1*] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#1882`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#1882`] +[visit_id X*#1882] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] no dims +[visit_id t_2*] +[visit_exp (C, bt, `%->_%%`_instrtype{resulttype#288, `localidx*#191`}(`%`_resulttype{`X*#1893`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#1944`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp C] +[visit_id C] not free +[visit_exp bt] +[visit_id bt] not free +[visit_exp `%->_%%`_instrtype{resulttype#288, `localidx*#191`}(`%`_resulttype{`X*#1893`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#1944`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#288] +[visit_id resulttype#288] +[visit_exp `localidx*#191`] +[visit_id localidx*#191] +[visit_exp (`%`_resulttype{`X*#1893`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#1944`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#1893`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#1893`] +[visit_id X*#1893] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] not free +[visit_id t_1*] no dims +[visit_exp []] +[visit_exp `%`_resulttype{`X*#1944`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#1944`] +[visit_id X*#1944] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] not free +[visit_id t_2*] no dims +[visit_exp ({`TYPES`{`deftype*#20`} [], `RECS`{`subtype*#5`} [], `TAGS`{`tagtype*#2`} [], `GLOBALS`{`globaltype*#2`} [], `MEMS`{`memtype*#2`} [], `TABLES`{`tabletype*#2`} [], `FUNCS`{`deftype*#21`} [], `DATAS`{`datatype*#2`} [], `ELEMS`{`elemtype*#2`} [], `LOCALS`{`localtype*#5`} [], `LABELS`{`resulttype*#2`} [`%`_resulttype{`X*#1955`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#2`} ?(), `REFS`{`funcidx*#40`} []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype{resulttype#308, `localidx*#203`}(`%`_resulttype{`X*#1968`}(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype{`X*#2020`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp {`TYPES`{`deftype*#20`} [], `RECS`{`subtype*#5`} [], `TAGS`{`tagtype*#2`} [], `GLOBALS`{`globaltype*#2`} [], `MEMS`{`memtype*#2`} [], `TABLES`{`tabletype*#2`} [], `FUNCS`{`deftype*#21`} [], `DATAS`{`datatype*#2`} [], `ELEMS`{`elemtype*#2`} [], `LOCALS`{`localtype*#5`} [], `LABELS`{`resulttype*#2`} [`%`_resulttype{`X*#1955`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#2`} ?(), `REFS`{`funcidx*#40`} []} +++ C] +[visit_exp {`TYPES`{`deftype*#20`} [], `RECS`{`subtype*#5`} [], `TAGS`{`tagtype*#2`} [], `GLOBALS`{`globaltype*#2`} [], `MEMS`{`memtype*#2`} [], `TABLES`{`tabletype*#2`} [], `FUNCS`{`deftype*#21`} [], `DATAS`{`datatype*#2`} [], `ELEMS`{`elemtype*#2`} [], `LOCALS`{`localtype*#5`} [], `LABELS`{`resulttype*#2`} [`%`_resulttype{`X*#1955`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#2`} ?(), `REFS`{`funcidx*#40`} []}] +[visit_exp `deftype*#20`] +[visit_id deftype*#20] +[visit_exp []] +[visit_exp `subtype*#5`] +[visit_id subtype*#5] +[visit_exp []] +[visit_exp `tagtype*#2`] +[visit_id tagtype*#2] +[visit_exp []] +[visit_exp `globaltype*#2`] +[visit_id globaltype*#2] +[visit_exp []] +[visit_exp `memtype*#2`] +[visit_id memtype*#2] +[visit_exp []] +[visit_exp `tabletype*#2`] +[visit_id tabletype*#2] +[visit_exp []] +[visit_exp `deftype*#21`] +[visit_id deftype*#21] +[visit_exp []] +[visit_exp `datatype*#2`] +[visit_id datatype*#2] +[visit_exp []] +[visit_exp `elemtype*#2`] +[visit_id elemtype*#2] +[visit_exp []] +[visit_exp `localtype*#5`] +[visit_id localtype*#5] +[visit_exp []] +[visit_exp `resulttype*#2`] +[visit_id resulttype*#2] +[visit_exp [`%`_resulttype{`X*#1955`}(t_2*{t_2 <- `t_2*`})]] +[visit_exp `%`_resulttype{`X*#1955`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#1955`] +[visit_id X*#1955] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] not free +[visit_id t_2*] no dims +[visit_exp `resulttype?#2`] +[visit_id resulttype?#2] +[visit_exp ?()] +[visit_exp `funcidx*#40`] +[visit_id funcidx*#40] +[visit_exp []] +[visit_exp C] +[visit_id C] not free +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] not free +[visit_id instr*] no dims +[visit_exp `%->_%%`_instrtype{resulttype#308, `localidx*#203`}(`%`_resulttype{`X*#1968`}(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype{`X*#2020`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#308] +[visit_id resulttype#308] +[visit_exp `localidx*#203`] +[visit_id localidx*#203] +[visit_exp (`%`_resulttype{`X*#1968`}(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype{`X*#2020`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#1968`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#1968`] +[visit_id X*#1968] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] not free +[visit_id t_1*] no dims +[visit_exp x*{x <- `x*`}] +[scope_enter x] +[visit_exp x] +[visit_id x] not free +[visit_id x] not free +[scope_exit x] +[visit_exp `x*`] +[visit_id x*] no dims +[visit_id x*] +[visit_exp `%`_resulttype{`X*#2020`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#2020`] +[visit_id X*#2020] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] not free +[visit_id t_2*] no dims +[check_dims] C X*#2033 X*#2084 X*#2095 X*#2146 X*#2157 X*#2170 X*#2222 blocktype#9 bt datatype*#3 deftype*#22 deftype*#23 elemtype*#3 funcidx*#41 globaltype*#3 instr instr*#10 localidx*#215 localidx*#227 localidx*#239 localtype*#6 memtype*#3 resulttype#328 resulttype#348 resulttype#368 resulttype*#3 resulttype?#3 subtype*#6 t_1 t_2 tabletype*#3 tagtype*#3 x +[visit_exp C] +[visit_id C] +[visit_exp `LOOP`_instr{blocktype#9, `instr*#10`}(bt, instr*{instr <- `instr*`})] +[visit_exp blocktype#9] +[visit_id blocktype#9] +[visit_exp `instr*#10`] +[visit_id instr*#10] +[visit_exp (bt, instr*{instr <- `instr*`})] +[visit_exp bt] +[visit_id bt] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] no dims +[visit_id instr*] +[visit_exp `%->_%%`_instrtype{resulttype#328, `localidx*#215`}(`%`_resulttype{`X*#2033`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#2084`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#328] +[visit_id resulttype#328] +[visit_exp `localidx*#215`] +[visit_id localidx*#215] +[visit_exp (`%`_resulttype{`X*#2033`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#2084`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#2033`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#2033`] +[visit_id X*#2033] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] no dims +[visit_id t_1*] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#2084`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#2084`] +[visit_id X*#2084] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] no dims +[visit_id t_2*] +[visit_exp (C, bt, `%->_%%`_instrtype{resulttype#348, `localidx*#227`}(`%`_resulttype{`X*#2095`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#2146`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp C] +[visit_id C] not free +[visit_exp bt] +[visit_id bt] not free +[visit_exp `%->_%%`_instrtype{resulttype#348, `localidx*#227`}(`%`_resulttype{`X*#2095`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#2146`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#348] +[visit_id resulttype#348] +[visit_exp `localidx*#227`] +[visit_id localidx*#227] +[visit_exp (`%`_resulttype{`X*#2095`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#2146`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#2095`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#2095`] +[visit_id X*#2095] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] not free +[visit_id t_1*] no dims +[visit_exp []] +[visit_exp `%`_resulttype{`X*#2146`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#2146`] +[visit_id X*#2146] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] not free +[visit_id t_2*] no dims +[visit_exp ({`TYPES`{`deftype*#22`} [], `RECS`{`subtype*#6`} [], `TAGS`{`tagtype*#3`} [], `GLOBALS`{`globaltype*#3`} [], `MEMS`{`memtype*#3`} [], `TABLES`{`tabletype*#3`} [], `FUNCS`{`deftype*#23`} [], `DATAS`{`datatype*#3`} [], `ELEMS`{`elemtype*#3`} [], `LOCALS`{`localtype*#6`} [], `LABELS`{`resulttype*#3`} [`%`_resulttype{`X*#2157`}(t_1*{t_1 <- `t_1*`})], `RETURN`{`resulttype?#3`} ?(), `REFS`{`funcidx*#41`} []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype{resulttype#368, `localidx*#239`}(`%`_resulttype{`X*#2170`}(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype{`X*#2222`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp {`TYPES`{`deftype*#22`} [], `RECS`{`subtype*#6`} [], `TAGS`{`tagtype*#3`} [], `GLOBALS`{`globaltype*#3`} [], `MEMS`{`memtype*#3`} [], `TABLES`{`tabletype*#3`} [], `FUNCS`{`deftype*#23`} [], `DATAS`{`datatype*#3`} [], `ELEMS`{`elemtype*#3`} [], `LOCALS`{`localtype*#6`} [], `LABELS`{`resulttype*#3`} [`%`_resulttype{`X*#2157`}(t_1*{t_1 <- `t_1*`})], `RETURN`{`resulttype?#3`} ?(), `REFS`{`funcidx*#41`} []} +++ C] +[visit_exp {`TYPES`{`deftype*#22`} [], `RECS`{`subtype*#6`} [], `TAGS`{`tagtype*#3`} [], `GLOBALS`{`globaltype*#3`} [], `MEMS`{`memtype*#3`} [], `TABLES`{`tabletype*#3`} [], `FUNCS`{`deftype*#23`} [], `DATAS`{`datatype*#3`} [], `ELEMS`{`elemtype*#3`} [], `LOCALS`{`localtype*#6`} [], `LABELS`{`resulttype*#3`} [`%`_resulttype{`X*#2157`}(t_1*{t_1 <- `t_1*`})], `RETURN`{`resulttype?#3`} ?(), `REFS`{`funcidx*#41`} []}] +[visit_exp `deftype*#22`] +[visit_id deftype*#22] +[visit_exp []] +[visit_exp `subtype*#6`] +[visit_id subtype*#6] +[visit_exp []] +[visit_exp `tagtype*#3`] +[visit_id tagtype*#3] +[visit_exp []] +[visit_exp `globaltype*#3`] +[visit_id globaltype*#3] +[visit_exp []] +[visit_exp `memtype*#3`] +[visit_id memtype*#3] +[visit_exp []] +[visit_exp `tabletype*#3`] +[visit_id tabletype*#3] +[visit_exp []] +[visit_exp `deftype*#23`] +[visit_id deftype*#23] +[visit_exp []] +[visit_exp `datatype*#3`] +[visit_id datatype*#3] +[visit_exp []] +[visit_exp `elemtype*#3`] +[visit_id elemtype*#3] +[visit_exp []] +[visit_exp `localtype*#6`] +[visit_id localtype*#6] +[visit_exp []] +[visit_exp `resulttype*#3`] +[visit_id resulttype*#3] +[visit_exp [`%`_resulttype{`X*#2157`}(t_1*{t_1 <- `t_1*`})]] +[visit_exp `%`_resulttype{`X*#2157`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#2157`] +[visit_id X*#2157] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] not free +[visit_id t_1*] no dims +[visit_exp `resulttype?#3`] +[visit_id resulttype?#3] +[visit_exp ?()] +[visit_exp `funcidx*#41`] +[visit_id funcidx*#41] +[visit_exp []] +[visit_exp C] +[visit_id C] not free +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] not free +[visit_id instr*] no dims +[visit_exp `%->_%%`_instrtype{resulttype#368, `localidx*#239`}(`%`_resulttype{`X*#2170`}(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype{`X*#2222`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#368] +[visit_id resulttype#368] +[visit_exp `localidx*#239`] +[visit_id localidx*#239] +[visit_exp (`%`_resulttype{`X*#2170`}(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype{`X*#2222`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#2170`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#2170`] +[visit_id X*#2170] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] not free +[visit_id t_1*] no dims +[visit_exp x*{x <- `x*`}] +[scope_enter x] +[visit_exp x] +[visit_id x] not free +[visit_id x] not free +[scope_exit x] +[visit_exp `x*`] +[visit_id x*] no dims +[visit_id x*] +[visit_exp `%`_resulttype{`X*#2222`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#2222`] +[visit_id X*#2222] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] not free +[visit_id t_2*] no dims +[check_dims] C X*#2245 X*#2294 X*#2305 X*#2356 X*#2367 X*#2380 X*#2432 X*#2445 X*#2458 X*#2510 blocktype#11 bt datatype*#4 datatype*#5 deftype*#24 deftype*#25 deftype*#26 deftype*#27 elemtype*#4 elemtype*#5 funcidx*#42 funcidx*#43 globaltype*#4 globaltype*#5 instr*#12 instr_1 instr_2 localidx*#251 localidx*#263 localidx*#275 localidx*#287 localtype*#7 localtype*#8 memtype*#4 memtype*#5 resulttype#388 resulttype#408 resulttype#428 resulttype#448 resulttype*#4 resulttype*#5 resulttype?#4 resulttype?#5 subtype*#7 subtype*#8 t_1 t_2 tabletype*#4 tabletype*#5 tagtype*#4 tagtype*#5 x_1 x_2 +[visit_exp C] +[visit_id C] +[visit_exp `IF%%ELSE%`_instr{blocktype#11, `instr*#12`}(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})] +[visit_exp blocktype#11] +[visit_id blocktype#11] +[visit_exp `instr*#12`] +[visit_id instr*#12] +[visit_exp (bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})] +[visit_exp bt] +[visit_id bt] +[visit_exp instr_1*{instr_1 <- `instr_1*`}] +[scope_enter instr_1] +[visit_exp instr_1] +[visit_id instr_1] not free +[visit_id instr_1] not free +[scope_exit instr_1] +[visit_exp `instr_1*`] +[visit_id instr_1*] no dims +[visit_id instr_1*] +[visit_exp instr_2*{instr_2 <- `instr_2*`}] +[scope_enter instr_2] +[visit_exp instr_2] +[visit_id instr_2] not free +[visit_id instr_2] not free +[scope_exit instr_2] +[visit_exp `instr_2*`] +[visit_id instr_2*] no dims +[visit_id instr_2*] +[visit_exp `%->_%%`_instrtype{resulttype#388, `localidx*#251`}(`%`_resulttype{`X*#2245`}(t_1*{t_1 <- `t_1*`} ++ [`I32`_valtype]), [], `%`_resulttype{`X*#2294`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#388] +[visit_id resulttype#388] +[visit_exp `localidx*#251`] +[visit_id localidx*#251] +[visit_exp (`%`_resulttype{`X*#2245`}(t_1*{t_1 <- `t_1*`} ++ [`I32`_valtype]), [], `%`_resulttype{`X*#2294`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#2245`}(t_1*{t_1 <- `t_1*`} ++ [`I32`_valtype])] +[visit_exp `X*#2245`] +[visit_id X*#2245] +[visit_exp (t_1*{t_1 <- `t_1*`} ++ [`I32`_valtype])] +[visit_exp t_1*{t_1 <- `t_1*`} ++ [`I32`_valtype]] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] no dims +[visit_id t_1*] +[visit_exp [`I32`_valtype]] +[visit_exp `I32`_valtype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#2294`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#2294`] +[visit_id X*#2294] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] no dims +[visit_id t_2*] +[visit_exp (C, bt, `%->_%%`_instrtype{resulttype#408, `localidx*#263`}(`%`_resulttype{`X*#2305`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#2356`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp C] +[visit_id C] not free +[visit_exp bt] +[visit_id bt] not free +[visit_exp `%->_%%`_instrtype{resulttype#408, `localidx*#263`}(`%`_resulttype{`X*#2305`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#2356`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#408] +[visit_id resulttype#408] +[visit_exp `localidx*#263`] +[visit_id localidx*#263] +[visit_exp (`%`_resulttype{`X*#2305`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#2356`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#2305`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#2305`] +[visit_id X*#2305] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] not free +[visit_id t_1*] no dims +[visit_exp []] +[visit_exp `%`_resulttype{`X*#2356`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#2356`] +[visit_id X*#2356] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] not free +[visit_id t_2*] no dims +[visit_exp ({`TYPES`{`deftype*#24`} [], `RECS`{`subtype*#7`} [], `TAGS`{`tagtype*#4`} [], `GLOBALS`{`globaltype*#4`} [], `MEMS`{`memtype*#4`} [], `TABLES`{`tabletype*#4`} [], `FUNCS`{`deftype*#25`} [], `DATAS`{`datatype*#4`} [], `ELEMS`{`elemtype*#4`} [], `LOCALS`{`localtype*#7`} [], `LABELS`{`resulttype*#4`} [`%`_resulttype{`X*#2367`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#4`} ?(), `REFS`{`funcidx*#42`} []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype{resulttype#428, `localidx*#275`}(`%`_resulttype{`X*#2380`}(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype{`X*#2432`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp {`TYPES`{`deftype*#24`} [], `RECS`{`subtype*#7`} [], `TAGS`{`tagtype*#4`} [], `GLOBALS`{`globaltype*#4`} [], `MEMS`{`memtype*#4`} [], `TABLES`{`tabletype*#4`} [], `FUNCS`{`deftype*#25`} [], `DATAS`{`datatype*#4`} [], `ELEMS`{`elemtype*#4`} [], `LOCALS`{`localtype*#7`} [], `LABELS`{`resulttype*#4`} [`%`_resulttype{`X*#2367`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#4`} ?(), `REFS`{`funcidx*#42`} []} +++ C] +[visit_exp {`TYPES`{`deftype*#24`} [], `RECS`{`subtype*#7`} [], `TAGS`{`tagtype*#4`} [], `GLOBALS`{`globaltype*#4`} [], `MEMS`{`memtype*#4`} [], `TABLES`{`tabletype*#4`} [], `FUNCS`{`deftype*#25`} [], `DATAS`{`datatype*#4`} [], `ELEMS`{`elemtype*#4`} [], `LOCALS`{`localtype*#7`} [], `LABELS`{`resulttype*#4`} [`%`_resulttype{`X*#2367`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#4`} ?(), `REFS`{`funcidx*#42`} []}] +[visit_exp `deftype*#24`] +[visit_id deftype*#24] +[visit_exp []] +[visit_exp `subtype*#7`] +[visit_id subtype*#7] +[visit_exp []] +[visit_exp `tagtype*#4`] +[visit_id tagtype*#4] +[visit_exp []] +[visit_exp `globaltype*#4`] +[visit_id globaltype*#4] +[visit_exp []] +[visit_exp `memtype*#4`] +[visit_id memtype*#4] +[visit_exp []] +[visit_exp `tabletype*#4`] +[visit_id tabletype*#4] +[visit_exp []] +[visit_exp `deftype*#25`] +[visit_id deftype*#25] +[visit_exp []] +[visit_exp `datatype*#4`] +[visit_id datatype*#4] +[visit_exp []] +[visit_exp `elemtype*#4`] +[visit_id elemtype*#4] +[visit_exp []] +[visit_exp `localtype*#7`] +[visit_id localtype*#7] +[visit_exp []] +[visit_exp `resulttype*#4`] +[visit_id resulttype*#4] +[visit_exp [`%`_resulttype{`X*#2367`}(t_2*{t_2 <- `t_2*`})]] +[visit_exp `%`_resulttype{`X*#2367`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#2367`] +[visit_id X*#2367] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] not free +[visit_id t_2*] no dims +[visit_exp `resulttype?#4`] +[visit_id resulttype?#4] +[visit_exp ?()] +[visit_exp `funcidx*#42`] +[visit_id funcidx*#42] +[visit_exp []] +[visit_exp C] +[visit_id C] not free +[visit_exp instr_1*{instr_1 <- `instr_1*`}] +[scope_enter instr_1] +[visit_exp instr_1] +[visit_id instr_1] not free +[visit_id instr_1] not free +[scope_exit instr_1] +[visit_exp `instr_1*`] +[visit_id instr_1*] not free +[visit_id instr_1*] no dims +[visit_exp `%->_%%`_instrtype{resulttype#428, `localidx*#275`}(`%`_resulttype{`X*#2380`}(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype{`X*#2432`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#428] +[visit_id resulttype#428] +[visit_exp `localidx*#275`] +[visit_id localidx*#275] +[visit_exp (`%`_resulttype{`X*#2380`}(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype{`X*#2432`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#2380`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#2380`] +[visit_id X*#2380] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] not free +[visit_id t_1*] no dims +[visit_exp x_1*{x_1 <- `x_1*`}] +[scope_enter x_1] +[visit_exp x_1] +[visit_id x_1] not free +[visit_id x_1] not free +[scope_exit x_1] +[visit_exp `x_1*`] +[visit_id x_1*] no dims +[visit_id x_1*] +[visit_exp `%`_resulttype{`X*#2432`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#2432`] +[visit_id X*#2432] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] not free +[visit_id t_2*] no dims +[visit_exp ({`TYPES`{`deftype*#26`} [], `RECS`{`subtype*#8`} [], `TAGS`{`tagtype*#5`} [], `GLOBALS`{`globaltype*#5`} [], `MEMS`{`memtype*#5`} [], `TABLES`{`tabletype*#5`} [], `FUNCS`{`deftype*#27`} [], `DATAS`{`datatype*#5`} [], `ELEMS`{`elemtype*#5`} [], `LOCALS`{`localtype*#8`} [], `LABELS`{`resulttype*#5`} [`%`_resulttype{`X*#2445`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#5`} ?(), `REFS`{`funcidx*#43`} []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype{resulttype#448, `localidx*#287`}(`%`_resulttype{`X*#2458`}(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype{`X*#2510`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp {`TYPES`{`deftype*#26`} [], `RECS`{`subtype*#8`} [], `TAGS`{`tagtype*#5`} [], `GLOBALS`{`globaltype*#5`} [], `MEMS`{`memtype*#5`} [], `TABLES`{`tabletype*#5`} [], `FUNCS`{`deftype*#27`} [], `DATAS`{`datatype*#5`} [], `ELEMS`{`elemtype*#5`} [], `LOCALS`{`localtype*#8`} [], `LABELS`{`resulttype*#5`} [`%`_resulttype{`X*#2445`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#5`} ?(), `REFS`{`funcidx*#43`} []} +++ C] +[visit_exp {`TYPES`{`deftype*#26`} [], `RECS`{`subtype*#8`} [], `TAGS`{`tagtype*#5`} [], `GLOBALS`{`globaltype*#5`} [], `MEMS`{`memtype*#5`} [], `TABLES`{`tabletype*#5`} [], `FUNCS`{`deftype*#27`} [], `DATAS`{`datatype*#5`} [], `ELEMS`{`elemtype*#5`} [], `LOCALS`{`localtype*#8`} [], `LABELS`{`resulttype*#5`} [`%`_resulttype{`X*#2445`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#5`} ?(), `REFS`{`funcidx*#43`} []}] +[visit_exp `deftype*#26`] +[visit_id deftype*#26] +[visit_exp []] +[visit_exp `subtype*#8`] +[visit_id subtype*#8] +[visit_exp []] +[visit_exp `tagtype*#5`] +[visit_id tagtype*#5] +[visit_exp []] +[visit_exp `globaltype*#5`] +[visit_id globaltype*#5] +[visit_exp []] +[visit_exp `memtype*#5`] +[visit_id memtype*#5] +[visit_exp []] +[visit_exp `tabletype*#5`] +[visit_id tabletype*#5] +[visit_exp []] +[visit_exp `deftype*#27`] +[visit_id deftype*#27] +[visit_exp []] +[visit_exp `datatype*#5`] +[visit_id datatype*#5] +[visit_exp []] +[visit_exp `elemtype*#5`] +[visit_id elemtype*#5] +[visit_exp []] +[visit_exp `localtype*#8`] +[visit_id localtype*#8] +[visit_exp []] +[visit_exp `resulttype*#5`] +[visit_id resulttype*#5] +[visit_exp [`%`_resulttype{`X*#2445`}(t_2*{t_2 <- `t_2*`})]] +[visit_exp `%`_resulttype{`X*#2445`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#2445`] +[visit_id X*#2445] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] not free +[visit_id t_2*] no dims +[visit_exp `resulttype?#5`] +[visit_id resulttype?#5] +[visit_exp ?()] +[visit_exp `funcidx*#43`] +[visit_id funcidx*#43] +[visit_exp []] +[visit_exp C] +[visit_id C] not free +[visit_exp instr_2*{instr_2 <- `instr_2*`}] +[scope_enter instr_2] +[visit_exp instr_2] +[visit_id instr_2] not free +[visit_id instr_2] not free +[scope_exit instr_2] +[visit_exp `instr_2*`] +[visit_id instr_2*] not free +[visit_id instr_2*] no dims +[visit_exp `%->_%%`_instrtype{resulttype#448, `localidx*#287`}(`%`_resulttype{`X*#2458`}(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype{`X*#2510`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#448] +[visit_id resulttype#448] +[visit_exp `localidx*#287`] +[visit_id localidx*#287] +[visit_exp (`%`_resulttype{`X*#2458`}(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype{`X*#2510`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#2458`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#2458`] +[visit_id X*#2458] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] not free +[visit_id t_1*] no dims +[visit_exp x_2*{x_2 <- `x_2*`}] +[scope_enter x_2] +[visit_exp x_2] +[visit_id x_2] not free +[visit_id x_2] not free +[scope_exit x_2] +[visit_exp `x_2*`] +[visit_id x_2*] no dims +[visit_id x_2*] +[visit_exp `%`_resulttype{`X*#2510`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#2510`] +[visit_id X*#2510] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] not free +[visit_id t_2*] no dims +[check_dims] C X*#2533 X*#2582 X*#2627 X*#2637 X*#2688 i#5368 l labelidx#15 localidx*#299 localidx*#311 resulttype#468 resulttype#488 resulttype*#7 t t_1 t_2 +[visit_exp C] +[visit_id C] +[visit_exp `BR`_instr{labelidx#15}(l)] +[visit_exp labelidx#15] +[visit_id labelidx#15] +[visit_exp (l)] +[visit_exp l] +[visit_id l] +[visit_exp `%->_%%`_instrtype{resulttype#468, `localidx*#299`}(`%`_resulttype{`X*#2533`}(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype{`X*#2582`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#468] +[visit_id resulttype#468] +[visit_exp `localidx*#299`] +[visit_id localidx*#299] +[visit_exp (`%`_resulttype{`X*#2533`}(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype{`X*#2582`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#2533`}(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`})] +[visit_exp `X*#2533`] +[visit_id X*#2533] +[visit_exp (t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`})] +[visit_exp t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] no dims +[visit_id t_1*] +[visit_exp t*{t <- `t*`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] no dims +[visit_id t*] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#2582`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#2582`] +[visit_id X*#2582] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] no dims +[visit_id t_2*] +[visit_exp (C.`LABELS`_context{`resulttype*#7`}[l!`%`_labelidx{i#5368}.0]!`%`_resulttype{`X*#2627`}.0 = t*{t <- `t*`})] +[visit_exp C.`LABELS`_context{`resulttype*#7`}[l!`%`_labelidx{i#5368}.0]!`%`_resulttype{`X*#2627`}.0] +[visit_exp C.`LABELS`_context{`resulttype*#7`}[l!`%`_labelidx{i#5368}.0]!`%`_resulttype{`X*#2627`}] +[visit_exp C.`LABELS`_context{`resulttype*#7`}[l!`%`_labelidx{i#5368}.0]] +[visit_exp C.`LABELS`_context{`resulttype*#7`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `resulttype*#7`] +[visit_id resulttype*#7] +[visit_exp l!`%`_labelidx{i#5368}.0] +[visit_exp l!`%`_labelidx{i#5368}] +[visit_exp l] +[visit_id l] not free +[visit_exp i#5368] +[visit_id i#5368] +[visit_exp `X*#2627`] +[visit_id X*#2627] +[visit_exp t*{t <- `t*`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] not free +[visit_id t*] no dims +[visit_exp (C, `%->_%%`_instrtype{resulttype#488, `localidx*#311`}(`%`_resulttype{`X*#2637`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#2688`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp C] +[visit_id C] not free +[visit_exp `%->_%%`_instrtype{resulttype#488, `localidx*#311`}(`%`_resulttype{`X*#2637`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#2688`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#488] +[visit_id resulttype#488] +[visit_exp `localidx*#311`] +[visit_id localidx*#311] +[visit_exp (`%`_resulttype{`X*#2637`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#2688`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#2637`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#2637`] +[visit_id X*#2637] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] not free +[visit_id t_1*] no dims +[visit_exp []] +[visit_exp `%`_resulttype{`X*#2688`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#2688`] +[visit_id X*#2688] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] not free +[visit_id t_2*] no dims +[check_dims] C X*#2709 X*#2758 X*#2803 i#5400 l labelidx#17 localidx*#323 resulttype#508 resulttype*#9 t +[visit_exp C] +[visit_id C] +[visit_exp `BR_IF`_instr{labelidx#17}(l)] +[visit_exp labelidx#17] +[visit_id labelidx#17] +[visit_exp (l)] +[visit_exp l] +[visit_id l] +[visit_exp `%->_%%`_instrtype{resulttype#508, `localidx*#323`}(`%`_resulttype{`X*#2709`}(t*{t <- `t*`} ++ [`I32`_valtype]), [], `%`_resulttype{`X*#2758`}(t*{t <- `t*`}))] +[visit_exp resulttype#508] +[visit_id resulttype#508] +[visit_exp `localidx*#323`] +[visit_id localidx*#323] +[visit_exp (`%`_resulttype{`X*#2709`}(t*{t <- `t*`} ++ [`I32`_valtype]), [], `%`_resulttype{`X*#2758`}(t*{t <- `t*`}))] +[visit_exp `%`_resulttype{`X*#2709`}(t*{t <- `t*`} ++ [`I32`_valtype])] +[visit_exp `X*#2709`] +[visit_id X*#2709] +[visit_exp (t*{t <- `t*`} ++ [`I32`_valtype])] +[visit_exp t*{t <- `t*`} ++ [`I32`_valtype]] +[visit_exp t*{t <- `t*`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] no dims +[visit_id t*] +[visit_exp [`I32`_valtype]] +[visit_exp `I32`_valtype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#2758`}(t*{t <- `t*`})] +[visit_exp `X*#2758`] +[visit_id X*#2758] +[visit_exp (t*{t <- `t*`})] +[visit_exp t*{t <- `t*`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] not free +[visit_id t*] no dims +[visit_exp (C.`LABELS`_context{`resulttype*#9`}[l!`%`_labelidx{i#5400}.0]!`%`_resulttype{`X*#2803`}.0 = t*{t <- `t*`})] +[visit_exp C.`LABELS`_context{`resulttype*#9`}[l!`%`_labelidx{i#5400}.0]!`%`_resulttype{`X*#2803`}.0] +[visit_exp C.`LABELS`_context{`resulttype*#9`}[l!`%`_labelidx{i#5400}.0]!`%`_resulttype{`X*#2803`}] +[visit_exp C.`LABELS`_context{`resulttype*#9`}[l!`%`_labelidx{i#5400}.0]] +[visit_exp C.`LABELS`_context{`resulttype*#9`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `resulttype*#9`] +[visit_id resulttype*#9] +[visit_exp l!`%`_labelidx{i#5400}.0] +[visit_exp l!`%`_labelidx{i#5400}] +[visit_exp l] +[visit_id l] not free +[visit_exp i#5400] +[visit_id i#5400] +[visit_exp `X*#2803`] +[visit_id X*#2803] +[visit_exp t*{t <- `t*`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] not free +[visit_id t*] no dims +[check_dims] C X*#2823 X*#2872 X*#2883 X*#2906 X*#2939 X*#2988 i#5482 i#5492 l l' labelidx#19 labelidx*#48 localidx*#335 localidx*#347 resulttype#528 resulttype#548 resulttype*#10 resulttype*#11 t t_1 t_2 +[visit_exp C] +[visit_id C] +[visit_exp `BR_TABLE`_instr{`labelidx*#48`, labelidx#19}(l*{l <- `l*`}, l')] +[visit_exp `labelidx*#48`] +[visit_id labelidx*#48] +[visit_exp labelidx#19] +[visit_id labelidx#19] +[visit_exp (l*{l <- `l*`}, l')] +[visit_exp l*{l <- `l*`}] +[scope_enter l] +[visit_exp l] +[visit_id l] not free +[visit_id l] not free +[scope_exit l] +[visit_exp `l*`] +[visit_id l*] no dims +[visit_id l*] +[visit_exp l'] +[visit_id l'] +[visit_exp `%->_%%`_instrtype{resulttype#528, `localidx*#335`}(`%`_resulttype{`X*#2823`}(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [`I32`_valtype]), [], `%`_resulttype{`X*#2872`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#528] +[visit_id resulttype#528] +[visit_exp `localidx*#335`] +[visit_id localidx*#335] +[visit_exp (`%`_resulttype{`X*#2823`}(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [`I32`_valtype]), [], `%`_resulttype{`X*#2872`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#2823`}(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [`I32`_valtype])] +[visit_exp `X*#2823`] +[visit_id X*#2823] +[visit_exp (t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [`I32`_valtype])] +[visit_exp t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [`I32`_valtype]] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] no dims +[visit_id t_1*] +[visit_exp t*{t <- `t*`} ++ [`I32`_valtype]] +[visit_exp t*{t <- `t*`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] no dims +[visit_id t*] +[visit_exp [`I32`_valtype]] +[visit_exp `I32`_valtype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#2872`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#2872`] +[visit_id X*#2872] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] no dims +[visit_id t_2*] +[scope_enter X*#2883] +[scope_enter i#5482] +[scope_enter l] +[scope_enter resulttype*#10] +[visit_exp (C, `%`_resulttype{`X*#2883`}(t*{t <- `t*`}), C.`LABELS`_context{`resulttype*#10`}[l!`%`_labelidx{i#5482}.0])] +[visit_exp C] +[visit_id C] not free +[visit_exp `%`_resulttype{`X*#2883`}(t*{t <- `t*`})] +[visit_exp `X*#2883`] +[visit_id X*#2883] not free +[visit_exp (t*{t <- `t*`})] +[visit_exp t*{t <- `t*`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] not free +[visit_id t*] no dims +[visit_exp C.`LABELS`_context{`resulttype*#10`}[l!`%`_labelidx{i#5482}.0]] +[visit_exp C.`LABELS`_context{`resulttype*#10`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `resulttype*#10`] +[visit_id resulttype*#10] not free +[visit_exp l!`%`_labelidx{i#5482}.0] +[visit_exp l!`%`_labelidx{i#5482}] +[visit_exp l] +[visit_id l] not free +[visit_exp i#5482] +[visit_id i#5482] not free +[visit_id X*#2883] not free +[visit_id i#5482] not free +[visit_id l] not free +[visit_id resulttype*#10] not free +[scope_exit resulttype*#10] +[scope_exit l] +[scope_exit i#5482] +[scope_exit X*#2883] +[visit_exp `X*#2883*`] +[visit_id X*#2883*] no dims +[visit_id X*#2883*] +[visit_exp `i#5482*`] +[visit_id i#5482*] no dims +[visit_id i#5482*] +[visit_exp `l*`] +[visit_id l*] not free +[visit_id l*] no dims +[visit_exp `resulttype*#10*`] +[visit_id resulttype*#10*] no dims +[visit_id resulttype*#10*] +[visit_exp (C, `%`_resulttype{`X*#2906`}(t*{t <- `t*`}), C.`LABELS`_context{`resulttype*#11`}[l'!`%`_labelidx{i#5492}.0])] +[visit_exp C] +[visit_id C] not free +[visit_exp `%`_resulttype{`X*#2906`}(t*{t <- `t*`})] +[visit_exp `X*#2906`] +[visit_id X*#2906] +[visit_exp (t*{t <- `t*`})] +[visit_exp t*{t <- `t*`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] not free +[visit_id t*] no dims +[visit_exp C.`LABELS`_context{`resulttype*#11`}[l'!`%`_labelidx{i#5492}.0]] +[visit_exp C.`LABELS`_context{`resulttype*#11`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `resulttype*#11`] +[visit_id resulttype*#11] +[visit_exp l'!`%`_labelidx{i#5492}.0] +[visit_exp l'!`%`_labelidx{i#5492}] +[visit_exp l'] +[visit_id l'] not free +[visit_exp i#5492] +[visit_id i#5492] +[visit_exp (C, `%->_%%`_instrtype{resulttype#548, `localidx*#347`}(`%`_resulttype{`X*#2939`}(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [`I32`_valtype]), [], `%`_resulttype{`X*#2988`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp C] +[visit_id C] not free +[visit_exp `%->_%%`_instrtype{resulttype#548, `localidx*#347`}(`%`_resulttype{`X*#2939`}(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [`I32`_valtype]), [], `%`_resulttype{`X*#2988`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#548] +[visit_id resulttype#548] +[visit_exp `localidx*#347`] +[visit_id localidx*#347] +[visit_exp (`%`_resulttype{`X*#2939`}(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [`I32`_valtype]), [], `%`_resulttype{`X*#2988`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#2939`}(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [`I32`_valtype])] +[visit_exp `X*#2939`] +[visit_id X*#2939] +[visit_exp (t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [`I32`_valtype])] +[visit_exp t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [`I32`_valtype]] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] not free +[visit_id t_1*] no dims +[visit_exp t*{t <- `t*`} ++ [`I32`_valtype]] +[visit_exp t*{t <- `t*`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] not free +[visit_id t*] no dims +[visit_exp [`I32`_valtype]] +[visit_exp `I32`_valtype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#2988`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#2988`] +[visit_id X*#2988] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] not free +[visit_id t_2*] no dims +[check_dims] C X*#3009 X*#3058 X*#3103 heaptype#537 heaptype#539 ht i#5524 l labelidx#21 localidx*#359 null?#535 null?#537 resulttype#568 resulttype*#13 t +[visit_exp C] +[visit_id C] +[visit_exp `BR_ON_NULL`_instr{labelidx#21}(l)] +[visit_exp labelidx#21] +[visit_id labelidx#21] +[visit_exp (l)] +[visit_exp l] +[visit_id l] +[visit_exp `%->_%%`_instrtype{resulttype#568, `localidx*#359`}(`%`_resulttype{`X*#3009`}(t*{t <- `t*`} ++ [`REF`_valtype{`null?#535`, heaptype#537}(?(`NULL`_null), ht)]), [], `%`_resulttype{`X*#3058`}(t*{t <- `t*`} ++ [`REF`_valtype{`null?#537`, heaptype#539}(?(), ht)]))] +[visit_exp resulttype#568] +[visit_id resulttype#568] +[visit_exp `localidx*#359`] +[visit_id localidx*#359] +[visit_exp (`%`_resulttype{`X*#3009`}(t*{t <- `t*`} ++ [`REF`_valtype{`null?#535`, heaptype#537}(?(`NULL`_null), ht)]), [], `%`_resulttype{`X*#3058`}(t*{t <- `t*`} ++ [`REF`_valtype{`null?#537`, heaptype#539}(?(), ht)]))] +[visit_exp `%`_resulttype{`X*#3009`}(t*{t <- `t*`} ++ [`REF`_valtype{`null?#535`, heaptype#537}(?(`NULL`_null), ht)])] +[visit_exp `X*#3009`] +[visit_id X*#3009] +[visit_exp (t*{t <- `t*`} ++ [`REF`_valtype{`null?#535`, heaptype#537}(?(`NULL`_null), ht)])] +[visit_exp t*{t <- `t*`} ++ [`REF`_valtype{`null?#535`, heaptype#537}(?(`NULL`_null), ht)]] +[visit_exp t*{t <- `t*`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] no dims +[visit_id t*] +[visit_exp [`REF`_valtype{`null?#535`, heaptype#537}(?(`NULL`_null), ht)]] +[visit_exp `REF`_valtype{`null?#535`, heaptype#537}(?(`NULL`_null), ht)] +[visit_exp `null?#535`] +[visit_id null?#535] +[visit_exp heaptype#537] +[visit_id heaptype#537] +[visit_exp (?(`NULL`_null), ht)] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp ht] +[visit_id ht] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#3058`}(t*{t <- `t*`} ++ [`REF`_valtype{`null?#537`, heaptype#539}(?(), ht)])] +[visit_exp `X*#3058`] +[visit_id X*#3058] +[visit_exp (t*{t <- `t*`} ++ [`REF`_valtype{`null?#537`, heaptype#539}(?(), ht)])] +[visit_exp t*{t <- `t*`} ++ [`REF`_valtype{`null?#537`, heaptype#539}(?(), ht)]] +[visit_exp t*{t <- `t*`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] not free +[visit_id t*] no dims +[visit_exp [`REF`_valtype{`null?#537`, heaptype#539}(?(), ht)]] +[visit_exp `REF`_valtype{`null?#537`, heaptype#539}(?(), ht)] +[visit_exp `null?#537`] +[visit_id null?#537] +[visit_exp heaptype#539] +[visit_id heaptype#539] +[visit_exp (?(), ht)] +[visit_exp ?()] +[visit_exp ht] +[visit_id ht] not free +[visit_exp (C.`LABELS`_context{`resulttype*#13`}[l!`%`_labelidx{i#5524}.0]!`%`_resulttype{`X*#3103`}.0 = t*{t <- `t*`})] +[visit_exp C.`LABELS`_context{`resulttype*#13`}[l!`%`_labelidx{i#5524}.0]!`%`_resulttype{`X*#3103`}.0] +[visit_exp C.`LABELS`_context{`resulttype*#13`}[l!`%`_labelidx{i#5524}.0]!`%`_resulttype{`X*#3103`}] +[visit_exp C.`LABELS`_context{`resulttype*#13`}[l!`%`_labelidx{i#5524}.0]] +[visit_exp C.`LABELS`_context{`resulttype*#13`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `resulttype*#13`] +[visit_id resulttype*#13] +[visit_exp l!`%`_labelidx{i#5524}.0] +[visit_exp l!`%`_labelidx{i#5524}] +[visit_exp l] +[visit_id l] not free +[visit_exp i#5524] +[visit_id i#5524] +[visit_exp `X*#3103`] +[visit_id X*#3103] +[visit_exp t*{t <- `t*`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] not free +[visit_id t*] no dims +[visit_exp (C, ht)] +[visit_exp C] +[visit_id C] not free +[visit_exp ht] +[visit_id ht] not free +[check_dims] C X*#3123 X*#3172 X*#3193 heaptype#541 heaptype#543 ht i#5546 l labelidx#23 localidx*#371 null?#539 null?#541 resulttype#588 resulttype*#14 t +[visit_exp C] +[visit_id C] +[visit_exp `BR_ON_NON_NULL`_instr{labelidx#23}(l)] +[visit_exp labelidx#23] +[visit_id labelidx#23] +[visit_exp (l)] +[visit_exp l] +[visit_id l] +[visit_exp `%->_%%`_instrtype{resulttype#588, `localidx*#371`}(`%`_resulttype{`X*#3123`}(t*{t <- `t*`} ++ [`REF`_valtype{`null?#539`, heaptype#541}(?(`NULL`_null), ht)]), [], `%`_resulttype{`X*#3172`}(t*{t <- `t*`}))] +[visit_exp resulttype#588] +[visit_id resulttype#588] +[visit_exp `localidx*#371`] +[visit_id localidx*#371] +[visit_exp (`%`_resulttype{`X*#3123`}(t*{t <- `t*`} ++ [`REF`_valtype{`null?#539`, heaptype#541}(?(`NULL`_null), ht)]), [], `%`_resulttype{`X*#3172`}(t*{t <- `t*`}))] +[visit_exp `%`_resulttype{`X*#3123`}(t*{t <- `t*`} ++ [`REF`_valtype{`null?#539`, heaptype#541}(?(`NULL`_null), ht)])] +[visit_exp `X*#3123`] +[visit_id X*#3123] +[visit_exp (t*{t <- `t*`} ++ [`REF`_valtype{`null?#539`, heaptype#541}(?(`NULL`_null), ht)])] +[visit_exp t*{t <- `t*`} ++ [`REF`_valtype{`null?#539`, heaptype#541}(?(`NULL`_null), ht)]] +[visit_exp t*{t <- `t*`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] no dims +[visit_id t*] +[visit_exp [`REF`_valtype{`null?#539`, heaptype#541}(?(`NULL`_null), ht)]] +[visit_exp `REF`_valtype{`null?#539`, heaptype#541}(?(`NULL`_null), ht)] +[visit_exp `null?#539`] +[visit_id null?#539] +[visit_exp heaptype#541] +[visit_id heaptype#541] +[visit_exp (?(`NULL`_null), ht)] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp ht] +[visit_id ht] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#3172`}(t*{t <- `t*`})] +[visit_exp `X*#3172`] +[visit_id X*#3172] +[visit_exp (t*{t <- `t*`})] +[visit_exp t*{t <- `t*`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] not free +[visit_id t*] no dims +[visit_exp (C.`LABELS`_context{`resulttype*#14`}[l!`%`_labelidx{i#5546}.0] = `%`_resulttype{`X*#3193`}(t*{t <- `t*`} ++ [`REF`_valtype{`null?#541`, heaptype#543}(`NULL`_null?{}, ht)]))] +[visit_exp C.`LABELS`_context{`resulttype*#14`}[l!`%`_labelidx{i#5546}.0]] +[visit_exp C.`LABELS`_context{`resulttype*#14`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `resulttype*#14`] +[visit_id resulttype*#14] +[visit_exp l!`%`_labelidx{i#5546}.0] +[visit_exp l!`%`_labelidx{i#5546}] +[visit_exp l] +[visit_id l] not free +[visit_exp i#5546] +[visit_id i#5546] +[visit_exp `%`_resulttype{`X*#3193`}(t*{t <- `t*`} ++ [`REF`_valtype{`null?#541`, heaptype#543}(`NULL`_null?{}, ht)])] +[visit_exp `X*#3193`] +[visit_id X*#3193] +[visit_exp (t*{t <- `t*`} ++ [`REF`_valtype{`null?#541`, heaptype#543}(`NULL`_null?{}, ht)])] +[visit_exp t*{t <- `t*`} ++ [`REF`_valtype{`null?#541`, heaptype#543}(`NULL`_null?{}, ht)]] +[visit_exp t*{t <- `t*`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] not free +[visit_id t*] no dims +[visit_exp [`REF`_valtype{`null?#541`, heaptype#543}(`NULL`_null?{}, ht)]] +[visit_exp `REF`_valtype{`null?#541`, heaptype#543}(`NULL`_null?{}, ht)] +[visit_exp `null?#541`] +[visit_id null?#541] +[visit_exp heaptype#543] +[visit_id heaptype#543] +[visit_exp (`NULL`_null?{}, ht)] +[visit_exp `NULL`_null?{}] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp ht] +[visit_id ht] not free +[check_dims] C X*#3214 X*#3263 X*#3284 i#5568 l labelidx#25 localidx*#383 reftype#373 resulttype#608 resulttype*#15 rt rt_1 rt_2 t +[visit_exp C] +[visit_id C] +[visit_exp `BR_ON_CAST`_instr{labelidx#25, reftype#373}(l, rt_1, rt_2)] +[visit_exp labelidx#25] +[visit_id labelidx#25] +[visit_exp reftype#373] +[visit_id reftype#373] +[visit_exp (l, rt_1, rt_2)] +[visit_exp l] +[visit_id l] +[visit_exp rt_1] +[visit_id rt_1] +[visit_exp rt_2] +[visit_id rt_2] +[visit_exp `%->_%%`_instrtype{resulttype#608, `localidx*#383`}(`%`_resulttype{`X*#3214`}(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype{`X*#3263`}(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))] +[visit_exp resulttype#608] +[visit_id resulttype#608] +[visit_exp `localidx*#383`] +[visit_id localidx*#383] +[visit_exp (`%`_resulttype{`X*#3214`}(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype{`X*#3263`}(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))] +[visit_exp `%`_resulttype{`X*#3214`}(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)])] +[visit_exp `X*#3214`] +[visit_id X*#3214] +[visit_exp (t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)])] +[visit_exp t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]] +[visit_exp t*{t <- `t*`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] no dims +[visit_id t*] +[visit_exp [(rt_1 : reftype <: valtype)]] +[visit_exp (rt_1 : reftype <: valtype)] +[visit_exp rt_1] +[visit_id rt_1] not free +[visit_exp []] +[visit_exp `%`_resulttype{`X*#3263`}(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)])] +[visit_exp `X*#3263`] +[visit_id X*#3263] +[visit_exp (t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)])] +[visit_exp t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]] +[visit_exp t*{t <- `t*`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] not free +[visit_id t*] no dims +[visit_exp [($diffrt(rt_1, rt_2) : reftype <: valtype)]] +[visit_exp ($diffrt(rt_1, rt_2) : reftype <: valtype)] +[visit_exp $diffrt(rt_1, rt_2)] +[visit_exp rt_1] +[visit_id rt_1] not free +[visit_exp rt_2] +[visit_id rt_2] not free +[visit_exp (C.`LABELS`_context{`resulttype*#15`}[l!`%`_labelidx{i#5568}.0] = `%`_resulttype{`X*#3284`}(t*{t <- `t*`} ++ [(rt : reftype <: valtype)]))] +[visit_exp C.`LABELS`_context{`resulttype*#15`}[l!`%`_labelidx{i#5568}.0]] +[visit_exp C.`LABELS`_context{`resulttype*#15`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `resulttype*#15`] +[visit_id resulttype*#15] +[visit_exp l!`%`_labelidx{i#5568}.0] +[visit_exp l!`%`_labelidx{i#5568}] +[visit_exp l] +[visit_id l] not free +[visit_exp i#5568] +[visit_id i#5568] +[visit_exp `%`_resulttype{`X*#3284`}(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])] +[visit_exp `X*#3284`] +[visit_id X*#3284] +[visit_exp (t*{t <- `t*`} ++ [(rt : reftype <: valtype)])] +[visit_exp t*{t <- `t*`} ++ [(rt : reftype <: valtype)]] +[visit_exp t*{t <- `t*`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] not free +[visit_id t*] no dims +[visit_exp [(rt : reftype <: valtype)]] +[visit_exp (rt : reftype <: valtype)] +[visit_exp rt] +[visit_id rt] +[visit_exp (C, rt_1)] +[visit_exp C] +[visit_id C] not free +[visit_exp rt_1] +[visit_id rt_1] not free +[visit_exp (C, rt_2)] +[visit_exp C] +[visit_id C] not free +[visit_exp rt_2] +[visit_id rt_2] not free +[visit_exp (C, rt_2, rt_1)] +[visit_exp C] +[visit_id C] not free +[visit_exp rt_2] +[visit_id rt_2] not free +[visit_exp rt_1] +[visit_id rt_1] not free +[visit_exp (C, rt_2, rt)] +[visit_exp C] +[visit_id C] not free +[visit_exp rt_2] +[visit_id rt_2] not free +[visit_exp rt] +[visit_id rt] not free +[check_dims] C X*#3305 X*#3354 X*#3375 i#5590 l labelidx#27 localidx*#395 reftype#376 resulttype#628 resulttype*#16 rt rt_1 rt_2 t +[visit_exp C] +[visit_id C] +[visit_exp `BR_ON_CAST_FAIL`_instr{labelidx#27, reftype#376}(l, rt_1, rt_2)] +[visit_exp labelidx#27] +[visit_id labelidx#27] +[visit_exp reftype#376] +[visit_id reftype#376] +[visit_exp (l, rt_1, rt_2)] +[visit_exp l] +[visit_id l] +[visit_exp rt_1] +[visit_id rt_1] +[visit_exp rt_2] +[visit_id rt_2] +[visit_exp `%->_%%`_instrtype{resulttype#628, `localidx*#395`}(`%`_resulttype{`X*#3305`}(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype{`X*#3354`}(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))] +[visit_exp resulttype#628] +[visit_id resulttype#628] +[visit_exp `localidx*#395`] +[visit_id localidx*#395] +[visit_exp (`%`_resulttype{`X*#3305`}(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype{`X*#3354`}(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))] +[visit_exp `%`_resulttype{`X*#3305`}(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)])] +[visit_exp `X*#3305`] +[visit_id X*#3305] +[visit_exp (t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)])] +[visit_exp t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]] +[visit_exp t*{t <- `t*`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] no dims +[visit_id t*] +[visit_exp [(rt_1 : reftype <: valtype)]] +[visit_exp (rt_1 : reftype <: valtype)] +[visit_exp rt_1] +[visit_id rt_1] not free +[visit_exp []] +[visit_exp `%`_resulttype{`X*#3354`}(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)])] +[visit_exp `X*#3354`] +[visit_id X*#3354] +[visit_exp (t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)])] +[visit_exp t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]] +[visit_exp t*{t <- `t*`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] not free +[visit_id t*] no dims +[visit_exp [(rt_2 : reftype <: valtype)]] +[visit_exp (rt_2 : reftype <: valtype)] +[visit_exp rt_2] +[visit_id rt_2] not free +[visit_exp (C.`LABELS`_context{`resulttype*#16`}[l!`%`_labelidx{i#5590}.0] = `%`_resulttype{`X*#3375`}(t*{t <- `t*`} ++ [(rt : reftype <: valtype)]))] +[visit_exp C.`LABELS`_context{`resulttype*#16`}[l!`%`_labelidx{i#5590}.0]] +[visit_exp C.`LABELS`_context{`resulttype*#16`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `resulttype*#16`] +[visit_id resulttype*#16] +[visit_exp l!`%`_labelidx{i#5590}.0] +[visit_exp l!`%`_labelidx{i#5590}] +[visit_exp l] +[visit_id l] not free +[visit_exp i#5590] +[visit_id i#5590] +[visit_exp `%`_resulttype{`X*#3375`}(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])] +[visit_exp `X*#3375`] +[visit_id X*#3375] +[visit_exp (t*{t <- `t*`} ++ [(rt : reftype <: valtype)])] +[visit_exp t*{t <- `t*`} ++ [(rt : reftype <: valtype)]] +[visit_exp t*{t <- `t*`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] not free +[visit_id t*] no dims +[visit_exp [(rt : reftype <: valtype)]] +[visit_exp (rt : reftype <: valtype)] +[visit_exp rt] +[visit_id rt] +[visit_exp (C, rt_1)] +[visit_exp C] +[visit_id C] not free +[visit_exp rt_1] +[visit_id rt_1] not free +[visit_exp (C, rt_2)] +[visit_exp C] +[visit_id C] not free +[visit_exp rt_2] +[visit_id rt_2] not free +[visit_exp (C, rt_2, rt_1)] +[visit_exp C] +[visit_id C] not free +[visit_exp rt_2] +[visit_id rt_2] not free +[visit_exp rt_1] +[visit_id rt_1] not free +[visit_exp (C, $diffrt(rt_1, rt_2), rt)] +[visit_exp C] +[visit_id C] not free +[visit_exp $diffrt(rt_1, rt_2)] +[visit_exp rt_1] +[visit_id rt_1] not free +[visit_exp rt_2] +[visit_id rt_2] not free +[visit_exp rt] +[visit_id rt] not free +[check_dims] C X*#3386 X*#3437 X*#3450 X*#3463 deftype*#28 funcidx#177 i#5614 localidx*#407 resulttype#648 resulttype#651 t_1 t_2 x +[visit_exp C] +[visit_id C] +[visit_exp `CALL`_instr{funcidx#177}(x)] +[visit_exp funcidx#177] +[visit_id funcidx#177] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%->_%%`_instrtype{resulttype#648, `localidx*#407`}(`%`_resulttype{`X*#3386`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#3437`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#648] +[visit_id resulttype#648] +[visit_exp `localidx*#407`] +[visit_id localidx*#407] +[visit_exp (`%`_resulttype{`X*#3386`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#3437`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#3386`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#3386`] +[visit_id X*#3386] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] no dims +[visit_id t_1*] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#3437`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#3437`] +[visit_id X*#3437] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] no dims +[visit_id t_2*] +[visit_exp (C.`FUNCS`_context{`deftype*#28`}[x!`%`_idx{i#5614}.0], `FUNC%->%`_comptype{resulttype#651}(`%`_resulttype{`X*#3450`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#3463`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp C.`FUNCS`_context{`deftype*#28`}[x!`%`_idx{i#5614}.0]] +[visit_exp C.`FUNCS`_context{`deftype*#28`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `deftype*#28`] +[visit_id deftype*#28] +[visit_exp x!`%`_idx{i#5614}.0] +[visit_exp x!`%`_idx{i#5614}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#5614] +[visit_id i#5614] +[visit_exp `FUNC%->%`_comptype{resulttype#651}(`%`_resulttype{`X*#3450`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#3463`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#651] +[visit_id resulttype#651] +[visit_exp (`%`_resulttype{`X*#3450`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#3463`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#3450`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#3450`] +[visit_id X*#3450] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] not free +[visit_id t_1*] no dims +[visit_exp `%`_resulttype{`X*#3463`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#3463`] +[visit_id X*#3463] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] not free +[visit_id t_2*] no dims +[check_dims] C X*#3486 X*#3535 X*#3548 X*#3561 deftype*#29 heaptype#665 i#5652 localidx*#419 null?#663 resulttype#671 resulttype#674 t_1 t_2 typeidx#394 typeidx#396 typeuse#23 x +[visit_exp C] +[visit_id C] +[visit_exp `CALL_REF`_instr{typeuse#23}(`_IDX`_typeuse{typeidx#394}(x))] +[visit_exp typeuse#23] +[visit_id typeuse#23] +[visit_exp (`_IDX`_typeuse{typeidx#394}(x))] +[visit_exp `_IDX`_typeuse{typeidx#394}(x)] +[visit_exp typeidx#394] +[visit_id typeidx#394] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%->_%%`_instrtype{resulttype#671, `localidx*#419`}(`%`_resulttype{`X*#3486`}(t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype{`null?#663`, heaptype#665}(?(`NULL`_null), `_IDX`_heaptype{typeidx#396}(x))]), [], `%`_resulttype{`X*#3535`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#671] +[visit_id resulttype#671] +[visit_exp `localidx*#419`] +[visit_id localidx*#419] +[visit_exp (`%`_resulttype{`X*#3486`}(t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype{`null?#663`, heaptype#665}(?(`NULL`_null), `_IDX`_heaptype{typeidx#396}(x))]), [], `%`_resulttype{`X*#3535`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#3486`}(t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype{`null?#663`, heaptype#665}(?(`NULL`_null), `_IDX`_heaptype{typeidx#396}(x))])] +[visit_exp `X*#3486`] +[visit_id X*#3486] +[visit_exp (t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype{`null?#663`, heaptype#665}(?(`NULL`_null), `_IDX`_heaptype{typeidx#396}(x))])] +[visit_exp t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype{`null?#663`, heaptype#665}(?(`NULL`_null), `_IDX`_heaptype{typeidx#396}(x))]] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] no dims +[visit_id t_1*] +[visit_exp [`REF`_valtype{`null?#663`, heaptype#665}(?(`NULL`_null), `_IDX`_heaptype{typeidx#396}(x))]] +[visit_exp `REF`_valtype{`null?#663`, heaptype#665}(?(`NULL`_null), `_IDX`_heaptype{typeidx#396}(x))] +[visit_exp `null?#663`] +[visit_id null?#663] +[visit_exp heaptype#665] +[visit_id heaptype#665] +[visit_exp (?(`NULL`_null), `_IDX`_heaptype{typeidx#396}(x))] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp `_IDX`_heaptype{typeidx#396}(x)] +[visit_exp typeidx#396] +[visit_id typeidx#396] +[visit_exp (x)] +[visit_exp x] +[visit_id x] not free +[visit_exp []] +[visit_exp `%`_resulttype{`X*#3535`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#3535`] +[visit_id X*#3535] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] no dims +[visit_id t_2*] +[visit_exp (C.`TYPES`_context{`deftype*#29`}[x!`%`_idx{i#5652}.0], `FUNC%->%`_comptype{resulttype#674}(`%`_resulttype{`X*#3548`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#3561`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp C.`TYPES`_context{`deftype*#29`}[x!`%`_idx{i#5652}.0]] +[visit_exp C.`TYPES`_context{`deftype*#29`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `deftype*#29`] +[visit_id deftype*#29] +[visit_exp x!`%`_idx{i#5652}.0] +[visit_exp x!`%`_idx{i#5652}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#5652] +[visit_id i#5652] +[visit_exp `FUNC%->%`_comptype{resulttype#674}(`%`_resulttype{`X*#3548`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#3561`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#674] +[visit_id resulttype#674] +[visit_exp (`%`_resulttype{`X*#3548`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#3561`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#3548`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#3548`] +[visit_id X*#3548] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] not free +[visit_id t_1*] no dims +[visit_exp `%`_resulttype{`X*#3561`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#3561`] +[visit_id X*#3561] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] not free +[visit_id t_2*] no dims +[check_dims] C X*#3584 X*#3633 X*#3646 X*#3659 addrtype#441 at deftype*#30 heaptype#689 i#5690 i#5700 lim limits#441 localidx*#431 null?#687 reftype#389 resulttype#694 resulttype#697 rt t_1 t_2 tableidx#26 tabletype*#6 typeidx#398 typeuse#25 x y +[visit_exp C] +[visit_id C] +[visit_exp `CALL_INDIRECT`_instr{tableidx#26, typeuse#25}(x, `_IDX`_typeuse{typeidx#398}(y))] +[visit_exp tableidx#26] +[visit_id tableidx#26] +[visit_exp typeuse#25] +[visit_id typeuse#25] +[visit_exp (x, `_IDX`_typeuse{typeidx#398}(y))] +[visit_exp x] +[visit_id x] +[visit_exp `_IDX`_typeuse{typeidx#398}(y)] +[visit_exp typeidx#398] +[visit_id typeidx#398] +[visit_exp (y)] +[visit_exp y] +[visit_id y] +[visit_exp `%->_%%`_instrtype{resulttype#694, `localidx*#431`}(`%`_resulttype{`X*#3584`}(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#3633`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#694] +[visit_id resulttype#694] +[visit_exp `localidx*#431`] +[visit_id localidx*#431] +[visit_exp (`%`_resulttype{`X*#3584`}(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#3633`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#3584`}(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)])] +[visit_exp `X*#3584`] +[visit_id X*#3584] +[visit_exp (t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)])] +[visit_exp t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] no dims +[visit_id t_1*] +[visit_exp [(at : addrtype <: valtype)]] +[visit_exp (at : addrtype <: valtype)] +[visit_exp at] +[visit_id at] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#3633`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#3633`] +[visit_id X*#3633] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] no dims +[visit_id t_2*] +[visit_exp (C.`TABLES`_context{`tabletype*#6`}[x!`%`_idx{i#5690}.0] = `%%%`_tabletype{addrtype#441, limits#441, reftype#389}(at, lim, rt))] +[visit_exp C.`TABLES`_context{`tabletype*#6`}[x!`%`_idx{i#5690}.0]] +[visit_exp C.`TABLES`_context{`tabletype*#6`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `tabletype*#6`] +[visit_id tabletype*#6] +[visit_exp x!`%`_idx{i#5690}.0] +[visit_exp x!`%`_idx{i#5690}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#5690] +[visit_id i#5690] +[visit_exp `%%%`_tabletype{addrtype#441, limits#441, reftype#389}(at, lim, rt)] +[visit_exp addrtype#441] +[visit_id addrtype#441] +[visit_exp limits#441] +[visit_id limits#441] +[visit_exp reftype#389] +[visit_id reftype#389] +[visit_exp (at, lim, rt)] +[visit_exp at] +[visit_id at] not free +[visit_exp lim] +[visit_id lim] +[visit_exp rt] +[visit_id rt] +[visit_exp (C, rt, `REF`_reftype{`null?#687`, heaptype#689}(?(`NULL`_null), `FUNC`_heaptype))] +[visit_exp C] +[visit_id C] not free +[visit_exp rt] +[visit_id rt] not free +[visit_exp `REF`_reftype{`null?#687`, heaptype#689}(?(`NULL`_null), `FUNC`_heaptype)] +[visit_exp `null?#687`] +[visit_id null?#687] +[visit_exp heaptype#689] +[visit_id heaptype#689] +[visit_exp (?(`NULL`_null), `FUNC`_heaptype)] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp `FUNC`_heaptype] +[visit_exp ()] +[visit_exp (C.`TYPES`_context{`deftype*#30`}[y!`%`_idx{i#5700}.0], `FUNC%->%`_comptype{resulttype#697}(`%`_resulttype{`X*#3646`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#3659`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp C.`TYPES`_context{`deftype*#30`}[y!`%`_idx{i#5700}.0]] +[visit_exp C.`TYPES`_context{`deftype*#30`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `deftype*#30`] +[visit_id deftype*#30] +[visit_exp y!`%`_idx{i#5700}.0] +[visit_exp y!`%`_idx{i#5700}] +[visit_exp y] +[visit_id y] not free +[visit_exp i#5700] +[visit_id i#5700] +[visit_exp `FUNC%->%`_comptype{resulttype#697}(`%`_resulttype{`X*#3646`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#3659`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#697] +[visit_id resulttype#697] +[visit_exp (`%`_resulttype{`X*#3646`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#3659`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#3646`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#3646`] +[visit_id X*#3646] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] not free +[visit_id t_1*] no dims +[visit_exp `%`_resulttype{`X*#3659`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#3659`] +[visit_id X*#3659] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] not free +[visit_id t_2*] no dims +[check_dims] C X*#3682 X*#3731 X*#3766 X*#3779 X*#3830 localidx*#443 localidx*#455 resulttype#717 resulttype#737 resulttype?#8 t t_1 t_2 +[visit_exp C] +[visit_id C] +[visit_exp `RETURN`_instr] +[visit_exp ()] +[visit_exp `%->_%%`_instrtype{resulttype#717, `localidx*#443`}(`%`_resulttype{`X*#3682`}(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype{`X*#3731`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#717] +[visit_id resulttype#717] +[visit_exp `localidx*#443`] +[visit_id localidx*#443] +[visit_exp (`%`_resulttype{`X*#3682`}(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype{`X*#3731`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#3682`}(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`})] +[visit_exp `X*#3682`] +[visit_id X*#3682] +[visit_exp (t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`})] +[visit_exp t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] no dims +[visit_id t_1*] +[visit_exp t*{t <- `t*`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] no dims +[visit_id t*] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#3731`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#3731`] +[visit_id X*#3731] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] no dims +[visit_id t_2*] +[visit_exp (C.`RETURN`_context{`resulttype?#8`} = ?(`%`_resulttype{`X*#3766`}(t*{t <- `t*`})))] +[visit_exp C.`RETURN`_context{`resulttype?#8`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `resulttype?#8`] +[visit_id resulttype?#8] +[visit_exp ?(`%`_resulttype{`X*#3766`}(t*{t <- `t*`}))] +[visit_exp `%`_resulttype{`X*#3766`}(t*{t <- `t*`})] +[visit_exp `X*#3766`] +[visit_id X*#3766] +[visit_exp (t*{t <- `t*`})] +[visit_exp t*{t <- `t*`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] not free +[visit_id t*] no dims +[visit_exp (C, `%->_%%`_instrtype{resulttype#737, `localidx*#455`}(`%`_resulttype{`X*#3779`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#3830`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp C] +[visit_id C] not free +[visit_exp `%->_%%`_instrtype{resulttype#737, `localidx*#455`}(`%`_resulttype{`X*#3779`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#3830`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#737] +[visit_id resulttype#737] +[visit_exp `localidx*#455`] +[visit_id localidx*#455] +[visit_exp (`%`_resulttype{`X*#3779`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#3830`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#3779`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#3779`] +[visit_id X*#3779] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] not free +[visit_id t_1*] no dims +[visit_exp []] +[visit_exp `%`_resulttype{`X*#3830`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#3830`] +[visit_id X*#3830] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] not free +[visit_id t_2*] no dims +[check_dims] C X*#3851 X*#3900 X*#3913 X*#3926 X*#3963 X*#3976 X*#3989 X*#4002 X*#4053 deftype*#31 funcidx#179 i#5724 localidx*#467 localidx*#479 resulttype#757 resulttype#760 resulttype#780 resulttype?#11 t'_2 t_1 t_2 t_3 t_4 x +[visit_exp C] +[visit_id C] +[visit_exp `RETURN_CALL`_instr{funcidx#179}(x)] +[visit_exp funcidx#179] +[visit_id funcidx#179] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%->_%%`_instrtype{resulttype#757, `localidx*#467`}(`%`_resulttype{`X*#3851`}(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#3900`}(t_4*{t_4 <- `t_4*`}))] +[visit_exp resulttype#757] +[visit_id resulttype#757] +[visit_exp `localidx*#467`] +[visit_id localidx*#467] +[visit_exp (`%`_resulttype{`X*#3851`}(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#3900`}(t_4*{t_4 <- `t_4*`}))] +[visit_exp `%`_resulttype{`X*#3851`}(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#3851`] +[visit_id X*#3851] +[visit_exp (t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`})] +[visit_exp t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}] +[visit_exp t_3*{t_3 <- `t_3*`}] +[scope_enter t_3] +[visit_exp t_3] +[visit_id t_3] not free +[visit_id t_3] not free +[scope_exit t_3] +[visit_exp `t_3*`] +[visit_id t_3*] no dims +[visit_id t_3*] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] no dims +[visit_id t_1*] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#3900`}(t_4*{t_4 <- `t_4*`})] +[visit_exp `X*#3900`] +[visit_id X*#3900] +[visit_exp (t_4*{t_4 <- `t_4*`})] +[visit_exp t_4*{t_4 <- `t_4*`}] +[scope_enter t_4] +[visit_exp t_4] +[visit_id t_4] not free +[visit_id t_4] not free +[scope_exit t_4] +[visit_exp `t_4*`] +[visit_id t_4*] no dims +[visit_id t_4*] +[visit_exp (C.`FUNCS`_context{`deftype*#31`}[x!`%`_idx{i#5724}.0], `FUNC%->%`_comptype{resulttype#760}(`%`_resulttype{`X*#3913`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#3926`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp C.`FUNCS`_context{`deftype*#31`}[x!`%`_idx{i#5724}.0]] +[visit_exp C.`FUNCS`_context{`deftype*#31`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `deftype*#31`] +[visit_id deftype*#31] +[visit_exp x!`%`_idx{i#5724}.0] +[visit_exp x!`%`_idx{i#5724}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#5724] +[visit_id i#5724] +[visit_exp `FUNC%->%`_comptype{resulttype#760}(`%`_resulttype{`X*#3913`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#3926`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#760] +[visit_id resulttype#760] +[visit_exp (`%`_resulttype{`X*#3913`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#3926`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#3913`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#3913`] +[visit_id X*#3913] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] not free +[visit_id t_1*] no dims +[visit_exp `%`_resulttype{`X*#3926`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#3926`] +[visit_id X*#3926] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] no dims +[visit_id t_2*] +[visit_exp (C.`RETURN`_context{`resulttype?#11`} = ?(`%`_resulttype{`X*#3963`}(t'_2*{t'_2 <- `t'_2*`})))] +[visit_exp C.`RETURN`_context{`resulttype?#11`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `resulttype?#11`] +[visit_id resulttype?#11] +[visit_exp ?(`%`_resulttype{`X*#3963`}(t'_2*{t'_2 <- `t'_2*`}))] +[visit_exp `%`_resulttype{`X*#3963`}(t'_2*{t'_2 <- `t'_2*`})] +[visit_exp `X*#3963`] +[visit_id X*#3963] +[visit_exp (t'_2*{t'_2 <- `t'_2*`})] +[visit_exp t'_2*{t'_2 <- `t'_2*`}] +[scope_enter t'_2] +[visit_exp t'_2] +[visit_id t'_2] not free +[visit_id t'_2] not free +[scope_exit t'_2] +[visit_exp `t'_2*`] +[visit_id t'_2*] no dims +[visit_id t'_2*] +[visit_exp (C, `%`_resulttype{`X*#3976`}(t_2*{t_2 <- `t_2*`}), `%`_resulttype{`X*#3989`}(t'_2*{t'_2 <- `t'_2*`}))] +[visit_exp C] +[visit_id C] not free +[visit_exp `%`_resulttype{`X*#3976`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#3976`] +[visit_id X*#3976] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] not free +[visit_id t_2*] no dims +[visit_exp `%`_resulttype{`X*#3989`}(t'_2*{t'_2 <- `t'_2*`})] +[visit_exp `X*#3989`] +[visit_id X*#3989] +[visit_exp (t'_2*{t'_2 <- `t'_2*`})] +[visit_exp t'_2*{t'_2 <- `t'_2*`}] +[scope_enter t'_2] +[visit_exp t'_2] +[visit_id t'_2] not free +[visit_id t'_2] not free +[scope_exit t'_2] +[visit_exp `t'_2*`] +[visit_id t'_2*] not free +[visit_id t'_2*] no dims +[visit_exp (C, `%->_%%`_instrtype{resulttype#780, `localidx*#479`}(`%`_resulttype{`X*#4002`}(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype{`X*#4053`}(t_4*{t_4 <- `t_4*`})))] +[visit_exp C] +[visit_id C] not free +[visit_exp `%->_%%`_instrtype{resulttype#780, `localidx*#479`}(`%`_resulttype{`X*#4002`}(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype{`X*#4053`}(t_4*{t_4 <- `t_4*`}))] +[visit_exp resulttype#780] +[visit_id resulttype#780] +[visit_exp `localidx*#479`] +[visit_id localidx*#479] +[visit_exp (`%`_resulttype{`X*#4002`}(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype{`X*#4053`}(t_4*{t_4 <- `t_4*`}))] +[visit_exp `%`_resulttype{`X*#4002`}(t_3*{t_3 <- `t_3*`})] +[visit_exp `X*#4002`] +[visit_id X*#4002] +[visit_exp (t_3*{t_3 <- `t_3*`})] +[visit_exp t_3*{t_3 <- `t_3*`}] +[scope_enter t_3] +[visit_exp t_3] +[visit_id t_3] not free +[visit_id t_3] not free +[scope_exit t_3] +[visit_exp `t_3*`] +[visit_id t_3*] not free +[visit_id t_3*] no dims +[visit_exp []] +[visit_exp `%`_resulttype{`X*#4053`}(t_4*{t_4 <- `t_4*`})] +[visit_exp `X*#4053`] +[visit_id X*#4053] +[visit_exp (t_4*{t_4 <- `t_4*`})] +[visit_exp t_4*{t_4 <- `t_4*`}] +[scope_enter t_4] +[visit_exp t_4] +[visit_id t_4] not free +[visit_id t_4] not free +[scope_exit t_4] +[visit_exp `t_4*`] +[visit_id t_4*] not free +[visit_id t_4*] no dims +[check_dims] C X*#4074 X*#4123 X*#4136 X*#4149 X*#4186 X*#4199 X*#4212 X*#4225 X*#4276 deftype*#32 heaptype#691 i#5762 localidx*#491 localidx*#503 null?#689 resulttype#800 resulttype#803 resulttype#823 resulttype?#14 t'_2 t_1 t_2 t_3 t_4 typeidx#400 typeidx#402 typeuse#27 x +[visit_exp C] +[visit_id C] +[visit_exp `RETURN_CALL_REF`_instr{typeuse#27}(`_IDX`_typeuse{typeidx#400}(x))] +[visit_exp typeuse#27] +[visit_id typeuse#27] +[visit_exp (`_IDX`_typeuse{typeidx#400}(x))] +[visit_exp `_IDX`_typeuse{typeidx#400}(x)] +[visit_exp typeidx#400] +[visit_id typeidx#400] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%->_%%`_instrtype{resulttype#800, `localidx*#491`}(`%`_resulttype{`X*#4074`}(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype{`null?#689`, heaptype#691}(?(`NULL`_null), `_IDX`_heaptype{typeidx#402}(x))]), [], `%`_resulttype{`X*#4123`}(t_4*{t_4 <- `t_4*`}))] +[visit_exp resulttype#800] +[visit_id resulttype#800] +[visit_exp `localidx*#491`] +[visit_id localidx*#491] +[visit_exp (`%`_resulttype{`X*#4074`}(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype{`null?#689`, heaptype#691}(?(`NULL`_null), `_IDX`_heaptype{typeidx#402}(x))]), [], `%`_resulttype{`X*#4123`}(t_4*{t_4 <- `t_4*`}))] +[visit_exp `%`_resulttype{`X*#4074`}(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype{`null?#689`, heaptype#691}(?(`NULL`_null), `_IDX`_heaptype{typeidx#402}(x))])] +[visit_exp `X*#4074`] +[visit_id X*#4074] +[visit_exp (t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype{`null?#689`, heaptype#691}(?(`NULL`_null), `_IDX`_heaptype{typeidx#402}(x))])] +[visit_exp t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype{`null?#689`, heaptype#691}(?(`NULL`_null), `_IDX`_heaptype{typeidx#402}(x))]] +[visit_exp t_3*{t_3 <- `t_3*`}] +[scope_enter t_3] +[visit_exp t_3] +[visit_id t_3] not free +[visit_id t_3] not free +[scope_exit t_3] +[visit_exp `t_3*`] +[visit_id t_3*] no dims +[visit_id t_3*] +[visit_exp t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype{`null?#689`, heaptype#691}(?(`NULL`_null), `_IDX`_heaptype{typeidx#402}(x))]] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] no dims +[visit_id t_1*] +[visit_exp [`REF`_valtype{`null?#689`, heaptype#691}(?(`NULL`_null), `_IDX`_heaptype{typeidx#402}(x))]] +[visit_exp `REF`_valtype{`null?#689`, heaptype#691}(?(`NULL`_null), `_IDX`_heaptype{typeidx#402}(x))] +[visit_exp `null?#689`] +[visit_id null?#689] +[visit_exp heaptype#691] +[visit_id heaptype#691] +[visit_exp (?(`NULL`_null), `_IDX`_heaptype{typeidx#402}(x))] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp `_IDX`_heaptype{typeidx#402}(x)] +[visit_exp typeidx#402] +[visit_id typeidx#402] +[visit_exp (x)] +[visit_exp x] +[visit_id x] not free +[visit_exp []] +[visit_exp `%`_resulttype{`X*#4123`}(t_4*{t_4 <- `t_4*`})] +[visit_exp `X*#4123`] +[visit_id X*#4123] +[visit_exp (t_4*{t_4 <- `t_4*`})] +[visit_exp t_4*{t_4 <- `t_4*`}] +[scope_enter t_4] +[visit_exp t_4] +[visit_id t_4] not free +[visit_id t_4] not free +[scope_exit t_4] +[visit_exp `t_4*`] +[visit_id t_4*] no dims +[visit_id t_4*] +[visit_exp (C.`TYPES`_context{`deftype*#32`}[x!`%`_idx{i#5762}.0], `FUNC%->%`_comptype{resulttype#803}(`%`_resulttype{`X*#4136`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#4149`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp C.`TYPES`_context{`deftype*#32`}[x!`%`_idx{i#5762}.0]] +[visit_exp C.`TYPES`_context{`deftype*#32`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `deftype*#32`] +[visit_id deftype*#32] +[visit_exp x!`%`_idx{i#5762}.0] +[visit_exp x!`%`_idx{i#5762}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#5762] +[visit_id i#5762] +[visit_exp `FUNC%->%`_comptype{resulttype#803}(`%`_resulttype{`X*#4136`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#4149`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#803] +[visit_id resulttype#803] +[visit_exp (`%`_resulttype{`X*#4136`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#4149`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#4136`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#4136`] +[visit_id X*#4136] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] not free +[visit_id t_1*] no dims +[visit_exp `%`_resulttype{`X*#4149`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#4149`] +[visit_id X*#4149] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] no dims +[visit_id t_2*] +[visit_exp (C.`RETURN`_context{`resulttype?#14`} = ?(`%`_resulttype{`X*#4186`}(t'_2*{t'_2 <- `t'_2*`})))] +[visit_exp C.`RETURN`_context{`resulttype?#14`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `resulttype?#14`] +[visit_id resulttype?#14] +[visit_exp ?(`%`_resulttype{`X*#4186`}(t'_2*{t'_2 <- `t'_2*`}))] +[visit_exp `%`_resulttype{`X*#4186`}(t'_2*{t'_2 <- `t'_2*`})] +[visit_exp `X*#4186`] +[visit_id X*#4186] +[visit_exp (t'_2*{t'_2 <- `t'_2*`})] +[visit_exp t'_2*{t'_2 <- `t'_2*`}] +[scope_enter t'_2] +[visit_exp t'_2] +[visit_id t'_2] not free +[visit_id t'_2] not free +[scope_exit t'_2] +[visit_exp `t'_2*`] +[visit_id t'_2*] no dims +[visit_id t'_2*] +[visit_exp (C, `%`_resulttype{`X*#4199`}(t_2*{t_2 <- `t_2*`}), `%`_resulttype{`X*#4212`}(t'_2*{t'_2 <- `t'_2*`}))] +[visit_exp C] +[visit_id C] not free +[visit_exp `%`_resulttype{`X*#4199`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#4199`] +[visit_id X*#4199] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] not free +[visit_id t_2*] no dims +[visit_exp `%`_resulttype{`X*#4212`}(t'_2*{t'_2 <- `t'_2*`})] +[visit_exp `X*#4212`] +[visit_id X*#4212] +[visit_exp (t'_2*{t'_2 <- `t'_2*`})] +[visit_exp t'_2*{t'_2 <- `t'_2*`}] +[scope_enter t'_2] +[visit_exp t'_2] +[visit_id t'_2] not free +[visit_id t'_2] not free +[scope_exit t'_2] +[visit_exp `t'_2*`] +[visit_id t'_2*] not free +[visit_id t'_2*] no dims +[visit_exp (C, `%->_%%`_instrtype{resulttype#823, `localidx*#503`}(`%`_resulttype{`X*#4225`}(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype{`X*#4276`}(t_4*{t_4 <- `t_4*`})))] +[visit_exp C] +[visit_id C] not free +[visit_exp `%->_%%`_instrtype{resulttype#823, `localidx*#503`}(`%`_resulttype{`X*#4225`}(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype{`X*#4276`}(t_4*{t_4 <- `t_4*`}))] +[visit_exp resulttype#823] +[visit_id resulttype#823] +[visit_exp `localidx*#503`] +[visit_id localidx*#503] +[visit_exp (`%`_resulttype{`X*#4225`}(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype{`X*#4276`}(t_4*{t_4 <- `t_4*`}))] +[visit_exp `%`_resulttype{`X*#4225`}(t_3*{t_3 <- `t_3*`})] +[visit_exp `X*#4225`] +[visit_id X*#4225] +[visit_exp (t_3*{t_3 <- `t_3*`})] +[visit_exp t_3*{t_3 <- `t_3*`}] +[scope_enter t_3] +[visit_exp t_3] +[visit_id t_3] not free +[visit_id t_3] not free +[scope_exit t_3] +[visit_exp `t_3*`] +[visit_id t_3*] not free +[visit_id t_3*] no dims +[visit_exp []] +[visit_exp `%`_resulttype{`X*#4276`}(t_4*{t_4 <- `t_4*`})] +[visit_exp `X*#4276`] +[visit_id X*#4276] +[visit_exp (t_4*{t_4 <- `t_4*`})] +[visit_exp t_4*{t_4 <- `t_4*`}] +[scope_enter t_4] +[visit_exp t_4] +[visit_id t_4] not free +[visit_id t_4] not free +[scope_exit t_4] +[visit_exp `t_4*`] +[visit_id t_4*] not free +[visit_id t_4*] no dims +[check_dims] C X*#4297 X*#4346 X*#4359 X*#4372 X*#4409 X*#4422 X*#4435 X*#4448 X*#4499 addrtype#453 at deftype*#33 heaptype#715 i#5800 i#5810 lim limits#453 localidx*#515 localidx*#527 null?#713 reftype#401 resulttype#843 resulttype#846 resulttype#866 resulttype?#17 rt t'_2 t_1 t_2 t_3 t_4 tableidx#28 tabletype*#7 typeidx#404 typeuse#29 x y +[visit_exp C] +[visit_id C] +[visit_exp `RETURN_CALL_INDIRECT`_instr{tableidx#28, typeuse#29}(x, `_IDX`_typeuse{typeidx#404}(y))] +[visit_exp tableidx#28] +[visit_id tableidx#28] +[visit_exp typeuse#29] +[visit_id typeuse#29] +[visit_exp (x, `_IDX`_typeuse{typeidx#404}(y))] +[visit_exp x] +[visit_id x] +[visit_exp `_IDX`_typeuse{typeidx#404}(y)] +[visit_exp typeidx#404] +[visit_id typeidx#404] +[visit_exp (y)] +[visit_exp y] +[visit_id y] +[visit_exp `%->_%%`_instrtype{resulttype#843, `localidx*#515`}(`%`_resulttype{`X*#4297`}(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#4346`}(t_4*{t_4 <- `t_4*`}))] +[visit_exp resulttype#843] +[visit_id resulttype#843] +[visit_exp `localidx*#515`] +[visit_id localidx*#515] +[visit_exp (`%`_resulttype{`X*#4297`}(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#4346`}(t_4*{t_4 <- `t_4*`}))] +[visit_exp `%`_resulttype{`X*#4297`}(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)])] +[visit_exp `X*#4297`] +[visit_id X*#4297] +[visit_exp (t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)])] +[visit_exp t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]] +[visit_exp t_3*{t_3 <- `t_3*`}] +[scope_enter t_3] +[visit_exp t_3] +[visit_id t_3] not free +[visit_id t_3] not free +[scope_exit t_3] +[visit_exp `t_3*`] +[visit_id t_3*] no dims +[visit_id t_3*] +[visit_exp t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] no dims +[visit_id t_1*] +[visit_exp [(at : addrtype <: valtype)]] +[visit_exp (at : addrtype <: valtype)] +[visit_exp at] +[visit_id at] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#4346`}(t_4*{t_4 <- `t_4*`})] +[visit_exp `X*#4346`] +[visit_id X*#4346] +[visit_exp (t_4*{t_4 <- `t_4*`})] +[visit_exp t_4*{t_4 <- `t_4*`}] +[scope_enter t_4] +[visit_exp t_4] +[visit_id t_4] not free +[visit_id t_4] not free +[scope_exit t_4] +[visit_exp `t_4*`] +[visit_id t_4*] no dims +[visit_id t_4*] +[visit_exp (C.`TABLES`_context{`tabletype*#7`}[x!`%`_idx{i#5800}.0] = `%%%`_tabletype{addrtype#453, limits#453, reftype#401}(at, lim, rt))] +[visit_exp C.`TABLES`_context{`tabletype*#7`}[x!`%`_idx{i#5800}.0]] +[visit_exp C.`TABLES`_context{`tabletype*#7`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `tabletype*#7`] +[visit_id tabletype*#7] +[visit_exp x!`%`_idx{i#5800}.0] +[visit_exp x!`%`_idx{i#5800}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#5800] +[visit_id i#5800] +[visit_exp `%%%`_tabletype{addrtype#453, limits#453, reftype#401}(at, lim, rt)] +[visit_exp addrtype#453] +[visit_id addrtype#453] +[visit_exp limits#453] +[visit_id limits#453] +[visit_exp reftype#401] +[visit_id reftype#401] +[visit_exp (at, lim, rt)] +[visit_exp at] +[visit_id at] not free +[visit_exp lim] +[visit_id lim] +[visit_exp rt] +[visit_id rt] +[visit_exp (C, rt, `REF`_reftype{`null?#713`, heaptype#715}(?(`NULL`_null), `FUNC`_heaptype))] +[visit_exp C] +[visit_id C] not free +[visit_exp rt] +[visit_id rt] not free +[visit_exp `REF`_reftype{`null?#713`, heaptype#715}(?(`NULL`_null), `FUNC`_heaptype)] +[visit_exp `null?#713`] +[visit_id null?#713] +[visit_exp heaptype#715] +[visit_id heaptype#715] +[visit_exp (?(`NULL`_null), `FUNC`_heaptype)] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp `FUNC`_heaptype] +[visit_exp ()] +[visit_exp (C.`TYPES`_context{`deftype*#33`}[y!`%`_idx{i#5810}.0], `FUNC%->%`_comptype{resulttype#846}(`%`_resulttype{`X*#4359`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#4372`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp C.`TYPES`_context{`deftype*#33`}[y!`%`_idx{i#5810}.0]] +[visit_exp C.`TYPES`_context{`deftype*#33`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `deftype*#33`] +[visit_id deftype*#33] +[visit_exp y!`%`_idx{i#5810}.0] +[visit_exp y!`%`_idx{i#5810}] +[visit_exp y] +[visit_id y] not free +[visit_exp i#5810] +[visit_id i#5810] +[visit_exp `FUNC%->%`_comptype{resulttype#846}(`%`_resulttype{`X*#4359`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#4372`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#846] +[visit_id resulttype#846] +[visit_exp (`%`_resulttype{`X*#4359`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#4372`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#4359`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#4359`] +[visit_id X*#4359] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] not free +[visit_id t_1*] no dims +[visit_exp `%`_resulttype{`X*#4372`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#4372`] +[visit_id X*#4372] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] no dims +[visit_id t_2*] +[visit_exp (C.`RETURN`_context{`resulttype?#17`} = ?(`%`_resulttype{`X*#4409`}(t'_2*{t'_2 <- `t'_2*`})))] +[visit_exp C.`RETURN`_context{`resulttype?#17`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `resulttype?#17`] +[visit_id resulttype?#17] +[visit_exp ?(`%`_resulttype{`X*#4409`}(t'_2*{t'_2 <- `t'_2*`}))] +[visit_exp `%`_resulttype{`X*#4409`}(t'_2*{t'_2 <- `t'_2*`})] +[visit_exp `X*#4409`] +[visit_id X*#4409] +[visit_exp (t'_2*{t'_2 <- `t'_2*`})] +[visit_exp t'_2*{t'_2 <- `t'_2*`}] +[scope_enter t'_2] +[visit_exp t'_2] +[visit_id t'_2] not free +[visit_id t'_2] not free +[scope_exit t'_2] +[visit_exp `t'_2*`] +[visit_id t'_2*] no dims +[visit_id t'_2*] +[visit_exp (C, `%`_resulttype{`X*#4422`}(t_2*{t_2 <- `t_2*`}), `%`_resulttype{`X*#4435`}(t'_2*{t'_2 <- `t'_2*`}))] +[visit_exp C] +[visit_id C] not free +[visit_exp `%`_resulttype{`X*#4422`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#4422`] +[visit_id X*#4422] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] not free +[visit_id t_2*] no dims +[visit_exp `%`_resulttype{`X*#4435`}(t'_2*{t'_2 <- `t'_2*`})] +[visit_exp `X*#4435`] +[visit_id X*#4435] +[visit_exp (t'_2*{t'_2 <- `t'_2*`})] +[visit_exp t'_2*{t'_2 <- `t'_2*`}] +[scope_enter t'_2] +[visit_exp t'_2] +[visit_id t'_2] not free +[visit_id t'_2] not free +[scope_exit t'_2] +[visit_exp `t'_2*`] +[visit_id t'_2*] not free +[visit_id t'_2*] no dims +[visit_exp (C, `%->_%%`_instrtype{resulttype#866, `localidx*#527`}(`%`_resulttype{`X*#4448`}(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype{`X*#4499`}(t_4*{t_4 <- `t_4*`})))] +[visit_exp C] +[visit_id C] not free +[visit_exp `%->_%%`_instrtype{resulttype#866, `localidx*#527`}(`%`_resulttype{`X*#4448`}(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype{`X*#4499`}(t_4*{t_4 <- `t_4*`}))] +[visit_exp resulttype#866] +[visit_id resulttype#866] +[visit_exp `localidx*#527`] +[visit_id localidx*#527] +[visit_exp (`%`_resulttype{`X*#4448`}(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype{`X*#4499`}(t_4*{t_4 <- `t_4*`}))] +[visit_exp `%`_resulttype{`X*#4448`}(t_3*{t_3 <- `t_3*`})] +[visit_exp `X*#4448`] +[visit_id X*#4448] +[visit_exp (t_3*{t_3 <- `t_3*`})] +[visit_exp t_3*{t_3 <- `t_3*`}] +[scope_enter t_3] +[visit_exp t_3] +[visit_id t_3] not free +[visit_id t_3] not free +[scope_exit t_3] +[visit_exp `t_3*`] +[visit_id t_3*] not free +[visit_id t_3*] no dims +[visit_exp []] +[visit_exp `%`_resulttype{`X*#4499`}(t_4*{t_4 <- `t_4*`})] +[visit_exp `X*#4499`] +[visit_id X*#4499] +[visit_exp (t_4*{t_4 <- `t_4*`})] +[visit_exp t_4*{t_4 <- `t_4*`}] +[scope_enter t_4] +[visit_exp t_4] +[visit_id t_4] not free +[visit_id t_4] not free +[scope_exit t_4] +[visit_exp `t_4*`] +[visit_id t_4*] not free +[visit_id t_4*] no dims +[check_dims] +[check_dims] C X*#4520 X*#4569 X*#4582 X*#4605 X*#4616 X*#4667 i#5834 localidx*#539 localidx*#551 resulttype#886 resulttype#889 resulttype#909 t t_1 t_2 tagidx#3 tagtype*#6 x +[visit_exp C] +[visit_id C] +[visit_exp `THROW`_instr{tagidx#3}(x)] +[visit_exp tagidx#3] +[visit_id tagidx#3] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%->_%%`_instrtype{resulttype#886, `localidx*#539`}(`%`_resulttype{`X*#4520`}(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype{`X*#4569`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#886] +[visit_id resulttype#886] +[visit_exp `localidx*#539`] +[visit_id localidx*#539] +[visit_exp (`%`_resulttype{`X*#4520`}(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype{`X*#4569`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#4520`}(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`})] +[visit_exp `X*#4520`] +[visit_id X*#4520] +[visit_exp (t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`})] +[visit_exp t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] no dims +[visit_id t_1*] +[visit_exp t*{t <- `t*`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] no dims +[visit_id t*] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#4569`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#4569`] +[visit_id X*#4569] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] no dims +[visit_id t_2*] +[visit_exp ($as_deftype(C.`TAGS`_context{`tagtype*#6`}[x!`%`_idx{i#5834}.0]), `FUNC%->%`_comptype{resulttype#889}(`%`_resulttype{`X*#4582`}(t*{t <- `t*`}), `%`_resulttype{`X*#4605`}([])))] +[visit_exp $as_deftype(C.`TAGS`_context{`tagtype*#6`}[x!`%`_idx{i#5834}.0])] +[visit_exp C.`TAGS`_context{`tagtype*#6`}[x!`%`_idx{i#5834}.0]] +[visit_exp C.`TAGS`_context{`tagtype*#6`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `tagtype*#6`] +[visit_id tagtype*#6] +[visit_exp x!`%`_idx{i#5834}.0] +[visit_exp x!`%`_idx{i#5834}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#5834] +[visit_id i#5834] +[visit_exp `FUNC%->%`_comptype{resulttype#889}(`%`_resulttype{`X*#4582`}(t*{t <- `t*`}), `%`_resulttype{`X*#4605`}([]))] +[visit_exp resulttype#889] +[visit_id resulttype#889] +[visit_exp (`%`_resulttype{`X*#4582`}(t*{t <- `t*`}), `%`_resulttype{`X*#4605`}([]))] +[visit_exp `%`_resulttype{`X*#4582`}(t*{t <- `t*`})] +[visit_exp `X*#4582`] +[visit_id X*#4582] +[visit_exp (t*{t <- `t*`})] +[visit_exp t*{t <- `t*`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] not free +[visit_id t*] no dims +[visit_exp `%`_resulttype{`X*#4605`}([])] +[visit_exp `X*#4605`] +[visit_id X*#4605] +[visit_exp ([])] +[visit_exp []] +[visit_exp (C, `%->_%%`_instrtype{resulttype#909, `localidx*#551`}(`%`_resulttype{`X*#4616`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#4667`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp C] +[visit_id C] not free +[visit_exp `%->_%%`_instrtype{resulttype#909, `localidx*#551`}(`%`_resulttype{`X*#4616`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#4667`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#909] +[visit_id resulttype#909] +[visit_exp `localidx*#551`] +[visit_id localidx*#551] +[visit_exp (`%`_resulttype{`X*#4616`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#4667`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#4616`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#4616`] +[visit_id X*#4616] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] not free +[visit_id t_1*] no dims +[visit_exp []] +[visit_exp `%`_resulttype{`X*#4667`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#4667`] +[visit_id X*#4667] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] not free +[visit_id t_2*] no dims +[check_dims] C X*#4688 X*#4737 X*#4748 X*#4799 heaptype#717 localidx*#563 localidx*#575 null?#715 resulttype#929 resulttype#949 t_1 t_2 +[visit_exp C] +[visit_id C] +[visit_exp `THROW_REF`_instr] +[visit_exp ()] +[visit_exp `%->_%%`_instrtype{resulttype#929, `localidx*#563`}(`%`_resulttype{`X*#4688`}(t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype{`null?#715`, heaptype#717}(?(`NULL`_null), `EXN`_heaptype)]), [], `%`_resulttype{`X*#4737`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#929] +[visit_id resulttype#929] +[visit_exp `localidx*#563`] +[visit_id localidx*#563] +[visit_exp (`%`_resulttype{`X*#4688`}(t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype{`null?#715`, heaptype#717}(?(`NULL`_null), `EXN`_heaptype)]), [], `%`_resulttype{`X*#4737`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#4688`}(t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype{`null?#715`, heaptype#717}(?(`NULL`_null), `EXN`_heaptype)])] +[visit_exp `X*#4688`] +[visit_id X*#4688] +[visit_exp (t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype{`null?#715`, heaptype#717}(?(`NULL`_null), `EXN`_heaptype)])] +[visit_exp t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype{`null?#715`, heaptype#717}(?(`NULL`_null), `EXN`_heaptype)]] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] no dims +[visit_id t_1*] +[visit_exp [`REF`_valtype{`null?#715`, heaptype#717}(?(`NULL`_null), `EXN`_heaptype)]] +[visit_exp `REF`_valtype{`null?#715`, heaptype#717}(?(`NULL`_null), `EXN`_heaptype)] +[visit_exp `null?#715`] +[visit_id null?#715] +[visit_exp heaptype#717] +[visit_id heaptype#717] +[visit_exp (?(`NULL`_null), `EXN`_heaptype)] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp `EXN`_heaptype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#4737`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#4737`] +[visit_id X*#4737] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] no dims +[visit_id t_2*] +[visit_exp (C, `%->_%%`_instrtype{resulttype#949, `localidx*#575`}(`%`_resulttype{`X*#4748`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#4799`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp C] +[visit_id C] not free +[visit_exp `%->_%%`_instrtype{resulttype#949, `localidx*#575`}(`%`_resulttype{`X*#4748`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#4799`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#949] +[visit_id resulttype#949] +[visit_exp `localidx*#575`] +[visit_id localidx*#575] +[visit_exp (`%`_resulttype{`X*#4748`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#4799`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#4748`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#4748`] +[visit_id X*#4748] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] not free +[visit_id t_1*] no dims +[visit_exp []] +[visit_exp `%`_resulttype{`X*#4799`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#4799`] +[visit_id X*#4799] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] not free +[visit_id t_2*] no dims +[check_dims] C X*#4812 X*#4825 X*#4876 X*#4887 X*#4938 X*#4949 X*#4962 X*#5014 blocktype#13 bt catch datatype*#6 deftype*#34 deftype*#35 elemtype*#6 funcidx*#44 globaltype*#6 instr instr*#15 localidx*#587 localidx*#599 localidx*#611 localtype*#9 memtype*#6 resulttype#1009 resulttype#969 resulttype#989 resulttype*#17 resulttype?#18 subtype*#9 t_1 t_2 tabletype*#8 tagtype*#7 x +[visit_exp C] +[visit_id C] +[visit_exp `TRY_TABLE`_instr{blocktype#13, `instr*#15`}(bt, `%`_list{`X*#4812`}(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})] +[visit_exp blocktype#13] +[visit_id blocktype#13] +[visit_exp `instr*#15`] +[visit_id instr*#15] +[visit_exp (bt, `%`_list{`X*#4812`}(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})] +[visit_exp bt] +[visit_id bt] +[visit_exp `%`_list{`X*#4812`}(catch*{catch <- `catch*`})] +[visit_exp `X*#4812`] +[visit_id X*#4812] +[visit_exp (catch*{catch <- `catch*`})] +[visit_exp catch*{catch <- `catch*`}] +[scope_enter catch] +[visit_exp catch] +[visit_id catch] not free +[visit_id catch] not free +[scope_exit catch] +[visit_exp `catch*`] +[visit_id catch*] no dims +[visit_id catch*] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] no dims +[visit_id instr*] +[visit_exp `%->_%%`_instrtype{resulttype#969, `localidx*#587`}(`%`_resulttype{`X*#4825`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#4876`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#969] +[visit_id resulttype#969] +[visit_exp `localidx*#587`] +[visit_id localidx*#587] +[visit_exp (`%`_resulttype{`X*#4825`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#4876`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#4825`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#4825`] +[visit_id X*#4825] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] no dims +[visit_id t_1*] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#4876`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#4876`] +[visit_id X*#4876] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] no dims +[visit_id t_2*] +[visit_exp (C, bt, `%->_%%`_instrtype{resulttype#989, `localidx*#599`}(`%`_resulttype{`X*#4887`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#4938`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp C] +[visit_id C] not free +[visit_exp bt] +[visit_id bt] not free +[visit_exp `%->_%%`_instrtype{resulttype#989, `localidx*#599`}(`%`_resulttype{`X*#4887`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#4938`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#989] +[visit_id resulttype#989] +[visit_exp `localidx*#599`] +[visit_id localidx*#599] +[visit_exp (`%`_resulttype{`X*#4887`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#4938`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#4887`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#4887`] +[visit_id X*#4887] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] not free +[visit_id t_1*] no dims +[visit_exp []] +[visit_exp `%`_resulttype{`X*#4938`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#4938`] +[visit_id X*#4938] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] not free +[visit_id t_2*] no dims +[visit_exp ({`TYPES`{`deftype*#34`} [], `RECS`{`subtype*#9`} [], `TAGS`{`tagtype*#7`} [], `GLOBALS`{`globaltype*#6`} [], `MEMS`{`memtype*#6`} [], `TABLES`{`tabletype*#8`} [], `FUNCS`{`deftype*#35`} [], `DATAS`{`datatype*#6`} [], `ELEMS`{`elemtype*#6`} [], `LOCALS`{`localtype*#9`} [], `LABELS`{`resulttype*#17`} [`%`_resulttype{`X*#4949`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#18`} ?(), `REFS`{`funcidx*#44`} []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype{resulttype#1009, `localidx*#611`}(`%`_resulttype{`X*#4962`}(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype{`X*#5014`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp {`TYPES`{`deftype*#34`} [], `RECS`{`subtype*#9`} [], `TAGS`{`tagtype*#7`} [], `GLOBALS`{`globaltype*#6`} [], `MEMS`{`memtype*#6`} [], `TABLES`{`tabletype*#8`} [], `FUNCS`{`deftype*#35`} [], `DATAS`{`datatype*#6`} [], `ELEMS`{`elemtype*#6`} [], `LOCALS`{`localtype*#9`} [], `LABELS`{`resulttype*#17`} [`%`_resulttype{`X*#4949`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#18`} ?(), `REFS`{`funcidx*#44`} []} +++ C] +[visit_exp {`TYPES`{`deftype*#34`} [], `RECS`{`subtype*#9`} [], `TAGS`{`tagtype*#7`} [], `GLOBALS`{`globaltype*#6`} [], `MEMS`{`memtype*#6`} [], `TABLES`{`tabletype*#8`} [], `FUNCS`{`deftype*#35`} [], `DATAS`{`datatype*#6`} [], `ELEMS`{`elemtype*#6`} [], `LOCALS`{`localtype*#9`} [], `LABELS`{`resulttype*#17`} [`%`_resulttype{`X*#4949`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#18`} ?(), `REFS`{`funcidx*#44`} []}] +[visit_exp `deftype*#34`] +[visit_id deftype*#34] +[visit_exp []] +[visit_exp `subtype*#9`] +[visit_id subtype*#9] +[visit_exp []] +[visit_exp `tagtype*#7`] +[visit_id tagtype*#7] +[visit_exp []] +[visit_exp `globaltype*#6`] +[visit_id globaltype*#6] +[visit_exp []] +[visit_exp `memtype*#6`] +[visit_id memtype*#6] +[visit_exp []] +[visit_exp `tabletype*#8`] +[visit_id tabletype*#8] +[visit_exp []] +[visit_exp `deftype*#35`] +[visit_id deftype*#35] +[visit_exp []] +[visit_exp `datatype*#6`] +[visit_id datatype*#6] +[visit_exp []] +[visit_exp `elemtype*#6`] +[visit_id elemtype*#6] +[visit_exp []] +[visit_exp `localtype*#9`] +[visit_id localtype*#9] +[visit_exp []] +[visit_exp `resulttype*#17`] +[visit_id resulttype*#17] +[visit_exp [`%`_resulttype{`X*#4949`}(t_2*{t_2 <- `t_2*`})]] +[visit_exp `%`_resulttype{`X*#4949`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#4949`] +[visit_id X*#4949] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] not free +[visit_id t_2*] no dims +[visit_exp `resulttype?#18`] +[visit_id resulttype?#18] +[visit_exp ?()] +[visit_exp `funcidx*#44`] +[visit_id funcidx*#44] +[visit_exp []] +[visit_exp C] +[visit_id C] not free +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] not free +[visit_id instr*] no dims +[visit_exp `%->_%%`_instrtype{resulttype#1009, `localidx*#611`}(`%`_resulttype{`X*#4962`}(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype{`X*#5014`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#1009] +[visit_id resulttype#1009] +[visit_exp `localidx*#611`] +[visit_id localidx*#611] +[visit_exp (`%`_resulttype{`X*#4962`}(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype{`X*#5014`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#4962`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#4962`] +[visit_id X*#4962] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] not free +[visit_id t_1*] no dims +[visit_exp x*{x <- `x*`}] +[scope_enter x] +[visit_exp x] +[visit_id x] not free +[visit_id x] not free +[scope_exit x] +[visit_exp `x*`] +[visit_id x*] no dims +[visit_id x*] +[visit_exp `%`_resulttype{`X*#5014`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#5014`] +[visit_id X*#5014] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] not free +[visit_id t_2*] no dims +[scope_enter catch] +[visit_exp (C, catch)] +[visit_exp C] +[visit_id C] not free +[visit_exp catch] +[visit_id catch] not free +[visit_id catch] not free +[scope_exit catch] +[visit_exp `catch*`] +[visit_id catch*] not free +[visit_id catch*] no dims +[check_dims] C X*#5029 X*#5052 X*#5063 i#5946 i#5956 l labelidx#29 resulttype#1012 resulttype*#18 t tagidx#5 tagtype*#8 x +[visit_exp C] +[visit_id C] +[visit_exp `CATCH`_catch{tagidx#5, labelidx#29}(x, l)] +[visit_exp tagidx#5] +[visit_id tagidx#5] +[visit_exp labelidx#29] +[visit_id labelidx#29] +[visit_exp (x, l)] +[visit_exp x] +[visit_id x] +[visit_exp l] +[visit_id l] +[visit_exp ($as_deftype(C.`TAGS`_context{`tagtype*#8`}[x!`%`_idx{i#5946}.0]), `FUNC%->%`_comptype{resulttype#1012}(`%`_resulttype{`X*#5029`}(t*{t <- `t*`}), `%`_resulttype{`X*#5052`}([])))] +[visit_exp $as_deftype(C.`TAGS`_context{`tagtype*#8`}[x!`%`_idx{i#5946}.0])] +[visit_exp C.`TAGS`_context{`tagtype*#8`}[x!`%`_idx{i#5946}.0]] +[visit_exp C.`TAGS`_context{`tagtype*#8`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `tagtype*#8`] +[visit_id tagtype*#8] +[visit_exp x!`%`_idx{i#5946}.0] +[visit_exp x!`%`_idx{i#5946}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#5946] +[visit_id i#5946] +[visit_exp `FUNC%->%`_comptype{resulttype#1012}(`%`_resulttype{`X*#5029`}(t*{t <- `t*`}), `%`_resulttype{`X*#5052`}([]))] +[visit_exp resulttype#1012] +[visit_id resulttype#1012] +[visit_exp (`%`_resulttype{`X*#5029`}(t*{t <- `t*`}), `%`_resulttype{`X*#5052`}([]))] +[visit_exp `%`_resulttype{`X*#5029`}(t*{t <- `t*`})] +[visit_exp `X*#5029`] +[visit_id X*#5029] +[visit_exp (t*{t <- `t*`})] +[visit_exp t*{t <- `t*`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] no dims +[visit_id t*] +[visit_exp `%`_resulttype{`X*#5052`}([])] +[visit_exp `X*#5052`] +[visit_id X*#5052] +[visit_exp ([])] +[visit_exp []] +[visit_exp (C, `%`_resulttype{`X*#5063`}(t*{t <- `t*`}), C.`LABELS`_context{`resulttype*#18`}[l!`%`_labelidx{i#5956}.0])] +[visit_exp C] +[visit_id C] not free +[visit_exp `%`_resulttype{`X*#5063`}(t*{t <- `t*`})] +[visit_exp `X*#5063`] +[visit_id X*#5063] +[visit_exp (t*{t <- `t*`})] +[visit_exp t*{t <- `t*`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] not free +[visit_id t*] no dims +[visit_exp C.`LABELS`_context{`resulttype*#18`}[l!`%`_labelidx{i#5956}.0]] +[visit_exp C.`LABELS`_context{`resulttype*#18`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `resulttype*#18`] +[visit_id resulttype*#18] +[visit_exp l!`%`_labelidx{i#5956}.0] +[visit_exp l!`%`_labelidx{i#5956}] +[visit_exp l] +[visit_id l] not free +[visit_exp i#5956] +[visit_id i#5956] +[check_dims] C X*#5088 X*#5111 X*#5132 heaptype#719 i#5992 i#6002 l labelidx#31 null?#717 resulttype#1015 resulttype*#19 t tagidx#7 tagtype*#9 x +[visit_exp C] +[visit_id C] +[visit_exp `CATCH_REF`_catch{tagidx#7, labelidx#31}(x, l)] +[visit_exp tagidx#7] +[visit_id tagidx#7] +[visit_exp labelidx#31] +[visit_id labelidx#31] +[visit_exp (x, l)] +[visit_exp x] +[visit_id x] +[visit_exp l] +[visit_id l] +[visit_exp ($as_deftype(C.`TAGS`_context{`tagtype*#9`}[x!`%`_idx{i#5992}.0]), `FUNC%->%`_comptype{resulttype#1015}(`%`_resulttype{`X*#5088`}(t*{t <- `t*`}), `%`_resulttype{`X*#5111`}([])))] +[visit_exp $as_deftype(C.`TAGS`_context{`tagtype*#9`}[x!`%`_idx{i#5992}.0])] +[visit_exp C.`TAGS`_context{`tagtype*#9`}[x!`%`_idx{i#5992}.0]] +[visit_exp C.`TAGS`_context{`tagtype*#9`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `tagtype*#9`] +[visit_id tagtype*#9] +[visit_exp x!`%`_idx{i#5992}.0] +[visit_exp x!`%`_idx{i#5992}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#5992] +[visit_id i#5992] +[visit_exp `FUNC%->%`_comptype{resulttype#1015}(`%`_resulttype{`X*#5088`}(t*{t <- `t*`}), `%`_resulttype{`X*#5111`}([]))] +[visit_exp resulttype#1015] +[visit_id resulttype#1015] +[visit_exp (`%`_resulttype{`X*#5088`}(t*{t <- `t*`}), `%`_resulttype{`X*#5111`}([]))] +[visit_exp `%`_resulttype{`X*#5088`}(t*{t <- `t*`})] +[visit_exp `X*#5088`] +[visit_id X*#5088] +[visit_exp (t*{t <- `t*`})] +[visit_exp t*{t <- `t*`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] no dims +[visit_id t*] +[visit_exp `%`_resulttype{`X*#5111`}([])] +[visit_exp `X*#5111`] +[visit_id X*#5111] +[visit_exp ([])] +[visit_exp []] +[visit_exp (C, `%`_resulttype{`X*#5132`}(t*{t <- `t*`} ++ [`REF`_valtype{`null?#717`, heaptype#719}(?(), `EXN`_heaptype)]), C.`LABELS`_context{`resulttype*#19`}[l!`%`_labelidx{i#6002}.0])] +[visit_exp C] +[visit_id C] not free +[visit_exp `%`_resulttype{`X*#5132`}(t*{t <- `t*`} ++ [`REF`_valtype{`null?#717`, heaptype#719}(?(), `EXN`_heaptype)])] +[visit_exp `X*#5132`] +[visit_id X*#5132] +[visit_exp (t*{t <- `t*`} ++ [`REF`_valtype{`null?#717`, heaptype#719}(?(), `EXN`_heaptype)])] +[visit_exp t*{t <- `t*`} ++ [`REF`_valtype{`null?#717`, heaptype#719}(?(), `EXN`_heaptype)]] +[visit_exp t*{t <- `t*`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] not free +[visit_id t*] no dims +[visit_exp [`REF`_valtype{`null?#717`, heaptype#719}(?(), `EXN`_heaptype)]] +[visit_exp `REF`_valtype{`null?#717`, heaptype#719}(?(), `EXN`_heaptype)] +[visit_exp `null?#717`] +[visit_id null?#717] +[visit_exp heaptype#719] +[visit_id heaptype#719] +[visit_exp (?(), `EXN`_heaptype)] +[visit_exp ?()] +[visit_exp `EXN`_heaptype] +[visit_exp ()] +[visit_exp C.`LABELS`_context{`resulttype*#19`}[l!`%`_labelidx{i#6002}.0]] +[visit_exp C.`LABELS`_context{`resulttype*#19`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `resulttype*#19`] +[visit_id resulttype*#19] +[visit_exp l!`%`_labelidx{i#6002}.0] +[visit_exp l!`%`_labelidx{i#6002}] +[visit_exp l] +[visit_id l] not free +[visit_exp i#6002] +[visit_id i#6002] +[check_dims] C X*#5163 i#6024 l labelidx#33 resulttype*#20 +[visit_exp C] +[visit_id C] +[visit_exp `CATCH_ALL`_catch{labelidx#33}(l)] +[visit_exp labelidx#33] +[visit_id labelidx#33] +[visit_exp (l)] +[visit_exp l] +[visit_id l] +[visit_exp (C, `%`_resulttype{`X*#5163`}([]), C.`LABELS`_context{`resulttype*#20`}[l!`%`_labelidx{i#6024}.0])] +[visit_exp C] +[visit_id C] not free +[visit_exp `%`_resulttype{`X*#5163`}([])] +[visit_exp `X*#5163`] +[visit_id X*#5163] +[visit_exp ([])] +[visit_exp []] +[visit_exp C.`LABELS`_context{`resulttype*#20`}[l!`%`_labelidx{i#6024}.0]] +[visit_exp C.`LABELS`_context{`resulttype*#20`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `resulttype*#20`] +[visit_id resulttype*#20] +[visit_exp l!`%`_labelidx{i#6024}.0] +[visit_exp l!`%`_labelidx{i#6024}] +[visit_exp l] +[visit_id l] not free +[visit_exp i#6024] +[visit_id i#6024] +[check_dims] C X*#5194 heaptype#721 i#6046 l labelidx#35 null?#719 resulttype*#21 +[visit_exp C] +[visit_id C] +[visit_exp `CATCH_ALL_REF`_catch{labelidx#35}(l)] +[visit_exp labelidx#35] +[visit_id labelidx#35] +[visit_exp (l)] +[visit_exp l] +[visit_id l] +[visit_exp (C, `%`_resulttype{`X*#5194`}([`REF`_valtype{`null?#719`, heaptype#721}(?(), `EXN`_heaptype)]), C.`LABELS`_context{`resulttype*#21`}[l!`%`_labelidx{i#6046}.0])] +[visit_exp C] +[visit_id C] not free +[visit_exp `%`_resulttype{`X*#5194`}([`REF`_valtype{`null?#719`, heaptype#721}(?(), `EXN`_heaptype)])] +[visit_exp `X*#5194`] +[visit_id X*#5194] +[visit_exp ([`REF`_valtype{`null?#719`, heaptype#721}(?(), `EXN`_heaptype)])] +[visit_exp [`REF`_valtype{`null?#719`, heaptype#721}(?(), `EXN`_heaptype)]] +[visit_exp `REF`_valtype{`null?#719`, heaptype#721}(?(), `EXN`_heaptype)] +[visit_exp `null?#719`] +[visit_id null?#719] +[visit_exp heaptype#721] +[visit_id heaptype#721] +[visit_exp (?(), `EXN`_heaptype)] +[visit_exp ?()] +[visit_exp `EXN`_heaptype] +[visit_exp ()] +[visit_exp C.`LABELS`_context{`resulttype*#21`}[l!`%`_labelidx{i#6046}.0]] +[visit_exp C.`LABELS`_context{`resulttype*#21`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `resulttype*#21`] +[visit_id resulttype*#21] +[visit_exp l!`%`_labelidx{i#6046}.0] +[visit_exp l!`%`_labelidx{i#6046}] +[visit_exp l] +[visit_id l] not free +[visit_exp i#6046] +[visit_id i#6046] +[check_dims] C X*#5225 X*#5274 heaptype#723 heaptype#725 ht localidx*#623 null?#721 resulttype#1035 +[visit_exp C] +[visit_id C] +[visit_exp `REF.NULL`_instr{heaptype#723}(ht)] +[visit_exp heaptype#723] +[visit_id heaptype#723] +[visit_exp (ht)] +[visit_exp ht] +[visit_id ht] +[visit_exp `%->_%%`_instrtype{resulttype#1035, `localidx*#623`}(`%`_resulttype{`X*#5225`}([]), [], `%`_resulttype{`X*#5274`}([`REF`_valtype{`null?#721`, heaptype#725}(?(`NULL`_null), ht)]))] +[visit_exp resulttype#1035] +[visit_id resulttype#1035] +[visit_exp `localidx*#623`] +[visit_id localidx*#623] +[visit_exp (`%`_resulttype{`X*#5225`}([]), [], `%`_resulttype{`X*#5274`}([`REF`_valtype{`null?#721`, heaptype#725}(?(`NULL`_null), ht)]))] +[visit_exp `%`_resulttype{`X*#5225`}([])] +[visit_exp `X*#5225`] +[visit_id X*#5225] +[visit_exp ([])] +[visit_exp []] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#5274`}([`REF`_valtype{`null?#721`, heaptype#725}(?(`NULL`_null), ht)])] +[visit_exp `X*#5274`] +[visit_id X*#5274] +[visit_exp ([`REF`_valtype{`null?#721`, heaptype#725}(?(`NULL`_null), ht)])] +[visit_exp [`REF`_valtype{`null?#721`, heaptype#725}(?(`NULL`_null), ht)]] +[visit_exp `REF`_valtype{`null?#721`, heaptype#725}(?(`NULL`_null), ht)] +[visit_exp `null?#721`] +[visit_id null?#721] +[visit_exp heaptype#725] +[visit_id heaptype#725] +[visit_exp (?(`NULL`_null), ht)] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp ht] +[visit_id ht] not free +[visit_exp (C, ht)] +[visit_exp C] +[visit_id C] not free +[visit_exp ht] +[visit_id ht] not free +[check_dims] C X*#5295 X*#5344 deftype*#36 dt funcidx#181 funcidx*#47 heaptype#727 i#6070 localidx*#635 null?#723 resulttype#1055 x +[visit_exp C] +[visit_id C] +[visit_exp `REF.FUNC`_instr{funcidx#181}(x)] +[visit_exp funcidx#181] +[visit_id funcidx#181] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%->_%%`_instrtype{resulttype#1055, `localidx*#635`}(`%`_resulttype{`X*#5295`}([]), [], `%`_resulttype{`X*#5344`}([`REF`_valtype{`null?#723`, heaptype#727}(?(), (dt : deftype <: heaptype))]))] +[visit_exp resulttype#1055] +[visit_id resulttype#1055] +[visit_exp `localidx*#635`] +[visit_id localidx*#635] +[visit_exp (`%`_resulttype{`X*#5295`}([]), [], `%`_resulttype{`X*#5344`}([`REF`_valtype{`null?#723`, heaptype#727}(?(), (dt : deftype <: heaptype))]))] +[visit_exp `%`_resulttype{`X*#5295`}([])] +[visit_exp `X*#5295`] +[visit_id X*#5295] +[visit_exp ([])] +[visit_exp []] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#5344`}([`REF`_valtype{`null?#723`, heaptype#727}(?(), (dt : deftype <: heaptype))])] +[visit_exp `X*#5344`] +[visit_id X*#5344] +[visit_exp ([`REF`_valtype{`null?#723`, heaptype#727}(?(), (dt : deftype <: heaptype))])] +[visit_exp [`REF`_valtype{`null?#723`, heaptype#727}(?(), (dt : deftype <: heaptype))]] +[visit_exp `REF`_valtype{`null?#723`, heaptype#727}(?(), (dt : deftype <: heaptype))] +[visit_exp `null?#723`] +[visit_id null?#723] +[visit_exp heaptype#727] +[visit_id heaptype#727] +[visit_exp (?(), (dt : deftype <: heaptype))] +[visit_exp ?()] +[visit_exp (dt : deftype <: heaptype)] +[visit_exp dt] +[visit_id dt] +[visit_exp (C.`FUNCS`_context{`deftype*#36`}[x!`%`_idx{i#6070}.0] = dt)] +[visit_exp C.`FUNCS`_context{`deftype*#36`}[x!`%`_idx{i#6070}.0]] +[visit_exp C.`FUNCS`_context{`deftype*#36`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `deftype*#36`] +[visit_id deftype*#36] +[visit_exp x!`%`_idx{i#6070}.0] +[visit_exp x!`%`_idx{i#6070}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#6070] +[visit_id i#6070] +[visit_exp dt] +[visit_id dt] not free +[visit_exp (x <- C.`REFS`_context{`funcidx*#47`})] +[visit_exp x] +[visit_id x] not free +[visit_exp C.`REFS`_context{`funcidx*#47`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `funcidx*#47`] +[visit_id funcidx*#47] +[check_dims] C X*#5363 X*#5412 heaptype#729 localidx*#647 null?#725 resulttype#1075 +[visit_exp C] +[visit_id C] +[visit_exp `REF.I31`_instr] +[visit_exp ()] +[visit_exp `%->_%%`_instrtype{resulttype#1075, `localidx*#647`}(`%`_resulttype{`X*#5363`}([`I32`_valtype]), [], `%`_resulttype{`X*#5412`}([`REF`_valtype{`null?#725`, heaptype#729}(?(), `I31`_heaptype)]))] +[visit_exp resulttype#1075] +[visit_id resulttype#1075] +[visit_exp `localidx*#647`] +[visit_id localidx*#647] +[visit_exp (`%`_resulttype{`X*#5363`}([`I32`_valtype]), [], `%`_resulttype{`X*#5412`}([`REF`_valtype{`null?#725`, heaptype#729}(?(), `I31`_heaptype)]))] +[visit_exp `%`_resulttype{`X*#5363`}([`I32`_valtype])] +[visit_exp `X*#5363`] +[visit_id X*#5363] +[visit_exp ([`I32`_valtype])] +[visit_exp [`I32`_valtype]] +[visit_exp `I32`_valtype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#5412`}([`REF`_valtype{`null?#725`, heaptype#729}(?(), `I31`_heaptype)])] +[visit_exp `X*#5412`] +[visit_id X*#5412] +[visit_exp ([`REF`_valtype{`null?#725`, heaptype#729}(?(), `I31`_heaptype)])] +[visit_exp [`REF`_valtype{`null?#725`, heaptype#729}(?(), `I31`_heaptype)]] +[visit_exp `REF`_valtype{`null?#725`, heaptype#729}(?(), `I31`_heaptype)] +[visit_exp `null?#725`] +[visit_id null?#725] +[visit_exp heaptype#729] +[visit_id heaptype#729] +[visit_exp (?(), `I31`_heaptype)] +[visit_exp ?()] +[visit_exp `I31`_heaptype] +[visit_exp ()] +[check_dims] C X*#5433 X*#5482 heaptype#731 ht localidx*#659 null?#727 resulttype#1095 +[visit_exp C] +[visit_id C] +[visit_exp `REF.IS_NULL`_instr] +[visit_exp ()] +[visit_exp `%->_%%`_instrtype{resulttype#1095, `localidx*#659`}(`%`_resulttype{`X*#5433`}([`REF`_valtype{`null?#727`, heaptype#731}(?(`NULL`_null), ht)]), [], `%`_resulttype{`X*#5482`}([`I32`_valtype]))] +[visit_exp resulttype#1095] +[visit_id resulttype#1095] +[visit_exp `localidx*#659`] +[visit_id localidx*#659] +[visit_exp (`%`_resulttype{`X*#5433`}([`REF`_valtype{`null?#727`, heaptype#731}(?(`NULL`_null), ht)]), [], `%`_resulttype{`X*#5482`}([`I32`_valtype]))] +[visit_exp `%`_resulttype{`X*#5433`}([`REF`_valtype{`null?#727`, heaptype#731}(?(`NULL`_null), ht)])] +[visit_exp `X*#5433`] +[visit_id X*#5433] +[visit_exp ([`REF`_valtype{`null?#727`, heaptype#731}(?(`NULL`_null), ht)])] +[visit_exp [`REF`_valtype{`null?#727`, heaptype#731}(?(`NULL`_null), ht)]] +[visit_exp `REF`_valtype{`null?#727`, heaptype#731}(?(`NULL`_null), ht)] +[visit_exp `null?#727`] +[visit_id null?#727] +[visit_exp heaptype#731] +[visit_id heaptype#731] +[visit_exp (?(`NULL`_null), ht)] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp ht] +[visit_id ht] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#5482`}([`I32`_valtype])] +[visit_exp `X*#5482`] +[visit_id X*#5482] +[visit_exp ([`I32`_valtype])] +[visit_exp [`I32`_valtype]] +[visit_exp `I32`_valtype] +[visit_exp ()] +[visit_exp (C, ht)] +[visit_exp C] +[visit_id C] not free +[visit_exp ht] +[visit_id ht] not free +[check_dims] C X*#5503 X*#5552 heaptype#733 heaptype#735 ht localidx*#671 null?#729 null?#731 resulttype#1115 +[visit_exp C] +[visit_id C] +[visit_exp `REF.AS_NON_NULL`_instr] +[visit_exp ()] +[visit_exp `%->_%%`_instrtype{resulttype#1115, `localidx*#671`}(`%`_resulttype{`X*#5503`}([`REF`_valtype{`null?#729`, heaptype#733}(?(`NULL`_null), ht)]), [], `%`_resulttype{`X*#5552`}([`REF`_valtype{`null?#731`, heaptype#735}(?(), ht)]))] +[visit_exp resulttype#1115] +[visit_id resulttype#1115] +[visit_exp `localidx*#671`] +[visit_id localidx*#671] +[visit_exp (`%`_resulttype{`X*#5503`}([`REF`_valtype{`null?#729`, heaptype#733}(?(`NULL`_null), ht)]), [], `%`_resulttype{`X*#5552`}([`REF`_valtype{`null?#731`, heaptype#735}(?(), ht)]))] +[visit_exp `%`_resulttype{`X*#5503`}([`REF`_valtype{`null?#729`, heaptype#733}(?(`NULL`_null), ht)])] +[visit_exp `X*#5503`] +[visit_id X*#5503] +[visit_exp ([`REF`_valtype{`null?#729`, heaptype#733}(?(`NULL`_null), ht)])] +[visit_exp [`REF`_valtype{`null?#729`, heaptype#733}(?(`NULL`_null), ht)]] +[visit_exp `REF`_valtype{`null?#729`, heaptype#733}(?(`NULL`_null), ht)] +[visit_exp `null?#729`] +[visit_id null?#729] +[visit_exp heaptype#733] +[visit_id heaptype#733] +[visit_exp (?(`NULL`_null), ht)] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp ht] +[visit_id ht] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#5552`}([`REF`_valtype{`null?#731`, heaptype#735}(?(), ht)])] +[visit_exp `X*#5552`] +[visit_id X*#5552] +[visit_exp ([`REF`_valtype{`null?#731`, heaptype#735}(?(), ht)])] +[visit_exp [`REF`_valtype{`null?#731`, heaptype#735}(?(), ht)]] +[visit_exp `REF`_valtype{`null?#731`, heaptype#735}(?(), ht)] +[visit_exp `null?#731`] +[visit_id null?#731] +[visit_exp heaptype#735] +[visit_id heaptype#735] +[visit_exp (?(), ht)] +[visit_exp ?()] +[visit_exp ht] +[visit_id ht] not free +[visit_exp (C, ht)] +[visit_exp C] +[visit_id C] not free +[visit_exp ht] +[visit_id ht] not free +[check_dims] C X*#5573 X*#5622 heaptype#737 heaptype#739 localidx*#683 null?#733 null?#735 resulttype#1135 +[visit_exp C] +[visit_id C] +[visit_exp `REF.EQ`_instr] +[visit_exp ()] +[visit_exp `%->_%%`_instrtype{resulttype#1135, `localidx*#683`}(`%`_resulttype{`X*#5573`}([`REF`_valtype{`null?#733`, heaptype#737}(?(`NULL`_null), `EQ`_heaptype) `REF`_valtype{`null?#735`, heaptype#739}(?(`NULL`_null), `EQ`_heaptype)]), [], `%`_resulttype{`X*#5622`}([`I32`_valtype]))] +[visit_exp resulttype#1135] +[visit_id resulttype#1135] +[visit_exp `localidx*#683`] +[visit_id localidx*#683] +[visit_exp (`%`_resulttype{`X*#5573`}([`REF`_valtype{`null?#733`, heaptype#737}(?(`NULL`_null), `EQ`_heaptype) `REF`_valtype{`null?#735`, heaptype#739}(?(`NULL`_null), `EQ`_heaptype)]), [], `%`_resulttype{`X*#5622`}([`I32`_valtype]))] +[visit_exp `%`_resulttype{`X*#5573`}([`REF`_valtype{`null?#733`, heaptype#737}(?(`NULL`_null), `EQ`_heaptype) `REF`_valtype{`null?#735`, heaptype#739}(?(`NULL`_null), `EQ`_heaptype)])] +[visit_exp `X*#5573`] +[visit_id X*#5573] +[visit_exp ([`REF`_valtype{`null?#733`, heaptype#737}(?(`NULL`_null), `EQ`_heaptype) `REF`_valtype{`null?#735`, heaptype#739}(?(`NULL`_null), `EQ`_heaptype)])] +[visit_exp [`REF`_valtype{`null?#733`, heaptype#737}(?(`NULL`_null), `EQ`_heaptype) `REF`_valtype{`null?#735`, heaptype#739}(?(`NULL`_null), `EQ`_heaptype)]] +[visit_exp `REF`_valtype{`null?#733`, heaptype#737}(?(`NULL`_null), `EQ`_heaptype)] +[visit_exp `null?#733`] +[visit_id null?#733] +[visit_exp heaptype#737] +[visit_id heaptype#737] +[visit_exp (?(`NULL`_null), `EQ`_heaptype)] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp `EQ`_heaptype] +[visit_exp ()] +[visit_exp `REF`_valtype{`null?#735`, heaptype#739}(?(`NULL`_null), `EQ`_heaptype)] +[visit_exp `null?#735`] +[visit_id null?#735] +[visit_exp heaptype#739] +[visit_id heaptype#739] +[visit_exp (?(`NULL`_null), `EQ`_heaptype)] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp `EQ`_heaptype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#5622`}([`I32`_valtype])] +[visit_exp `X*#5622`] +[visit_id X*#5622] +[visit_exp ([`I32`_valtype])] +[visit_exp [`I32`_valtype]] +[visit_exp `I32`_valtype] +[visit_exp ()] +[check_dims] C X*#5633 X*#5703 localidx*#695 reftype#403 resulttype#1155 rt rt' +[visit_exp C] +[visit_id C] +[visit_exp `REF.TEST`_instr{reftype#403}(rt)] +[visit_exp reftype#403] +[visit_id reftype#403] +[visit_exp (rt)] +[visit_exp rt] +[visit_id rt] +[visit_exp `%->_%%`_instrtype{resulttype#1155, `localidx*#695`}(`%`_resulttype{`X*#5633`}([(rt' : reftype <: valtype)]), [], `%`_resulttype{`X*#5703`}([`I32`_valtype]))] +[visit_exp resulttype#1155] +[visit_id resulttype#1155] +[visit_exp `localidx*#695`] +[visit_id localidx*#695] +[visit_exp (`%`_resulttype{`X*#5633`}([(rt' : reftype <: valtype)]), [], `%`_resulttype{`X*#5703`}([`I32`_valtype]))] +[visit_exp `%`_resulttype{`X*#5633`}([(rt' : reftype <: valtype)])] +[visit_exp `X*#5633`] +[visit_id X*#5633] +[visit_exp ([(rt' : reftype <: valtype)])] +[visit_exp [(rt' : reftype <: valtype)]] +[visit_exp (rt' : reftype <: valtype)] +[visit_exp rt'] +[visit_id rt'] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#5703`}([`I32`_valtype])] +[visit_exp `X*#5703`] +[visit_id X*#5703] +[visit_exp ([`I32`_valtype])] +[visit_exp [`I32`_valtype]] +[visit_exp `I32`_valtype] +[visit_exp ()] +[visit_exp (C, rt)] +[visit_exp C] +[visit_id C] not free +[visit_exp rt] +[visit_id rt] not free +[visit_exp (C, rt')] +[visit_exp C] +[visit_id C] not free +[visit_exp rt'] +[visit_id rt'] not free +[visit_exp (C, rt, rt')] +[visit_exp C] +[visit_id C] not free +[visit_exp rt] +[visit_id rt] not free +[visit_exp rt'] +[visit_id rt'] not free +[check_dims] C X*#5714 X*#5784 localidx*#707 reftype#405 resulttype#1175 rt rt' +[visit_exp C] +[visit_id C] +[visit_exp `REF.CAST`_instr{reftype#405}(rt)] +[visit_exp reftype#405] +[visit_id reftype#405] +[visit_exp (rt)] +[visit_exp rt] +[visit_id rt] +[visit_exp `%->_%%`_instrtype{resulttype#1175, `localidx*#707`}(`%`_resulttype{`X*#5714`}([(rt' : reftype <: valtype)]), [], `%`_resulttype{`X*#5784`}([(rt : reftype <: valtype)]))] +[visit_exp resulttype#1175] +[visit_id resulttype#1175] +[visit_exp `localidx*#707`] +[visit_id localidx*#707] +[visit_exp (`%`_resulttype{`X*#5714`}([(rt' : reftype <: valtype)]), [], `%`_resulttype{`X*#5784`}([(rt : reftype <: valtype)]))] +[visit_exp `%`_resulttype{`X*#5714`}([(rt' : reftype <: valtype)])] +[visit_exp `X*#5714`] +[visit_id X*#5714] +[visit_exp ([(rt' : reftype <: valtype)])] +[visit_exp [(rt' : reftype <: valtype)]] +[visit_exp (rt' : reftype <: valtype)] +[visit_exp rt'] +[visit_id rt'] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#5784`}([(rt : reftype <: valtype)])] +[visit_exp `X*#5784`] +[visit_id X*#5784] +[visit_exp ([(rt : reftype <: valtype)])] +[visit_exp [(rt : reftype <: valtype)]] +[visit_exp (rt : reftype <: valtype)] +[visit_exp rt] +[visit_id rt] not free +[visit_exp (C, rt)] +[visit_exp C] +[visit_id C] not free +[visit_exp rt] +[visit_id rt] not free +[visit_exp (C, rt')] +[visit_exp C] +[visit_id C] not free +[visit_exp rt'] +[visit_id rt'] not free +[visit_exp (C, rt, rt')] +[visit_exp C] +[visit_id C] not free +[visit_exp rt] +[visit_id rt] not free +[visit_exp rt'] +[visit_id rt'] not free +[check_dims] C X*#5805 X*#5854 heaptype#805 localidx*#719 null?#801 resulttype#1195 sx sx#5 +[visit_exp C] +[visit_id C] +[visit_exp `I31.GET`_instr{sx#5}(sx)] +[visit_exp sx#5] +[visit_id sx#5] +[visit_exp (sx)] +[visit_exp sx] +[visit_id sx] +[visit_exp `%->_%%`_instrtype{resulttype#1195, `localidx*#719`}(`%`_resulttype{`X*#5805`}([`REF`_valtype{`null?#801`, heaptype#805}(?(`NULL`_null), `I31`_heaptype)]), [], `%`_resulttype{`X*#5854`}([`I32`_valtype]))] +[visit_exp resulttype#1195] +[visit_id resulttype#1195] +[visit_exp `localidx*#719`] +[visit_id localidx*#719] +[visit_exp (`%`_resulttype{`X*#5805`}([`REF`_valtype{`null?#801`, heaptype#805}(?(`NULL`_null), `I31`_heaptype)]), [], `%`_resulttype{`X*#5854`}([`I32`_valtype]))] +[visit_exp `%`_resulttype{`X*#5805`}([`REF`_valtype{`null?#801`, heaptype#805}(?(`NULL`_null), `I31`_heaptype)])] +[visit_exp `X*#5805`] +[visit_id X*#5805] +[visit_exp ([`REF`_valtype{`null?#801`, heaptype#805}(?(`NULL`_null), `I31`_heaptype)])] +[visit_exp [`REF`_valtype{`null?#801`, heaptype#805}(?(`NULL`_null), `I31`_heaptype)]] +[visit_exp `REF`_valtype{`null?#801`, heaptype#805}(?(`NULL`_null), `I31`_heaptype)] +[visit_exp `null?#801`] +[visit_id null?#801] +[visit_exp heaptype#805] +[visit_id heaptype#805] +[visit_exp (?(`NULL`_null), `I31`_heaptype)] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp `I31`_heaptype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#5854`}([`I32`_valtype])] +[visit_exp `X*#5854`] +[visit_id X*#5854] +[visit_exp ([`I32`_valtype])] +[visit_exp [`I32`_valtype]] +[visit_exp `I32`_valtype] +[visit_exp ()] +[check_dims] C X*#5865 X*#5916 X*#5929 deftype*#37 heaptype#807 i#6131 localidx*#731 mut mut?#573 null?#803 resulttype#1215 storagetype#337 typeidx#406 typeidx#408 x zt +[visit_exp C] +[visit_id C] +[visit_exp `STRUCT.NEW`_instr{typeidx#406}(x)] +[visit_exp typeidx#406] +[visit_id typeidx#406] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%->_%%`_instrtype{resulttype#1215, `localidx*#731`}(`%`_resulttype{`X*#5865`}($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype{`X*#5916`}([`REF`_valtype{`null?#803`, heaptype#807}(?(), `_IDX`_heaptype{typeidx#408}(x))]))] +[visit_exp resulttype#1215] +[visit_id resulttype#1215] +[visit_exp `localidx*#731`] +[visit_id localidx*#731] +[visit_exp (`%`_resulttype{`X*#5865`}($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype{`X*#5916`}([`REF`_valtype{`null?#803`, heaptype#807}(?(), `_IDX`_heaptype{typeidx#408}(x))]))] +[visit_exp `%`_resulttype{`X*#5865`}($unpack(zt)*{zt <- `zt*`})] +[visit_exp `X*#5865`] +[visit_id X*#5865] +[visit_exp ($unpack(zt)*{zt <- `zt*`})] +[visit_exp $unpack(zt)*{zt <- `zt*`}] +[scope_enter zt] +[visit_exp $unpack(zt)] +[visit_exp zt] +[visit_id zt] not free +[visit_id zt] not free +[scope_exit zt] +[visit_exp `zt*`] +[visit_id zt*] no dims +[visit_id zt*] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#5916`}([`REF`_valtype{`null?#803`, heaptype#807}(?(), `_IDX`_heaptype{typeidx#408}(x))])] +[visit_exp `X*#5916`] +[visit_id X*#5916] +[visit_exp ([`REF`_valtype{`null?#803`, heaptype#807}(?(), `_IDX`_heaptype{typeidx#408}(x))])] +[visit_exp [`REF`_valtype{`null?#803`, heaptype#807}(?(), `_IDX`_heaptype{typeidx#408}(x))]] +[visit_exp `REF`_valtype{`null?#803`, heaptype#807}(?(), `_IDX`_heaptype{typeidx#408}(x))] +[visit_exp `null?#803`] +[visit_id null?#803] +[visit_exp heaptype#807] +[visit_id heaptype#807] +[visit_exp (?(), `_IDX`_heaptype{typeidx#408}(x))] +[visit_exp ?()] +[visit_exp `_IDX`_heaptype{typeidx#408}(x)] +[visit_exp typeidx#408] +[visit_id typeidx#408] +[visit_exp (x)] +[visit_exp x] +[visit_id x] not free +[visit_exp (C.`TYPES`_context{`deftype*#37`}[x!`%`_idx{i#6131}.0], `STRUCT`_comptype(`%`_list{`X*#5929`}(`%%`_fieldtype{`mut?#573`, storagetype#337}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#573` <- `mut?#573*`, storagetype#337 <- `storagetype#337*`, zt <- `zt*`})))] +[visit_exp C.`TYPES`_context{`deftype*#37`}[x!`%`_idx{i#6131}.0]] +[visit_exp C.`TYPES`_context{`deftype*#37`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `deftype*#37`] +[visit_id deftype*#37] +[visit_exp x!`%`_idx{i#6131}.0] +[visit_exp x!`%`_idx{i#6131}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#6131] +[visit_id i#6131] +[visit_exp `STRUCT`_comptype(`%`_list{`X*#5929`}(`%%`_fieldtype{`mut?#573`, storagetype#337}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#573` <- `mut?#573*`, storagetype#337 <- `storagetype#337*`, zt <- `zt*`}))] +[visit_exp (`%`_list{`X*#5929`}(`%%`_fieldtype{`mut?#573`, storagetype#337}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#573` <- `mut?#573*`, storagetype#337 <- `storagetype#337*`, zt <- `zt*`}))] +[visit_exp `%`_list{`X*#5929`}(`%%`_fieldtype{`mut?#573`, storagetype#337}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#573` <- `mut?#573*`, storagetype#337 <- `storagetype#337*`, zt <- `zt*`})] +[visit_exp `X*#5929`] +[visit_id X*#5929] +[visit_exp (`%%`_fieldtype{`mut?#573`, storagetype#337}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#573` <- `mut?#573*`, storagetype#337 <- `storagetype#337*`, zt <- `zt*`})] +[visit_exp `%%`_fieldtype{`mut?#573`, storagetype#337}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#573` <- `mut?#573*`, storagetype#337 <- `storagetype#337*`, zt <- `zt*`}] +[scope_enter mut?] +[scope_enter mut?#573] +[scope_enter storagetype#337] +[scope_enter zt] +[visit_exp `%%`_fieldtype{`mut?#573`, storagetype#337}(mut?{mut <- `mut?`}, zt)] +[visit_exp `mut?#573`] +[visit_id mut?#573] not free +[visit_exp storagetype#337] +[visit_id storagetype#337] not free +[visit_exp (mut?{mut <- `mut?`}, zt)] +[visit_exp mut?{mut <- `mut?`}] +[scope_enter mut] +[visit_exp mut] +[visit_id mut] not free +[visit_id mut] not free +[scope_exit mut] +[visit_exp `mut?`] +[visit_id mut?] not free +[visit_id mut?] no dims +[visit_exp zt] +[visit_id zt] not free +[visit_id mut?] not free +[visit_id mut?] no dims +[visit_id mut?#573] not free +[visit_id storagetype#337] not free +[visit_id zt] not free +[scope_exit zt] +[scope_exit storagetype#337] +[scope_exit mut?#573] +[scope_exit mut?] +[visit_exp `mut?*`] +[visit_id mut?*] no dims +[visit_id mut?*] +[visit_exp `mut?#573*`] +[visit_id mut?#573*] no dims +[visit_id mut?#573*] +[visit_exp `storagetype#337*`] +[visit_id storagetype#337*] no dims +[visit_id storagetype#337*] +[visit_exp `zt*`] +[visit_id zt*] not free +[visit_id zt*] no dims +[check_dims] C X*#5952 X*#6001 X*#6014 deftype*#38 heaptype#809 i#6169 localidx*#743 mut mut?#591 null?#805 resulttype#1235 storagetype#355 typeidx#410 typeidx#412 x zt +[visit_exp C] +[visit_id C] +[visit_exp `STRUCT.NEW_DEFAULT`_instr{typeidx#410}(x)] +[visit_exp typeidx#410] +[visit_id typeidx#410] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%->_%%`_instrtype{resulttype#1235, `localidx*#743`}(`%`_resulttype{`X*#5952`}([]), [], `%`_resulttype{`X*#6001`}([`REF`_valtype{`null?#805`, heaptype#809}(?(), `_IDX`_heaptype{typeidx#412}(x))]))] +[visit_exp resulttype#1235] +[visit_id resulttype#1235] +[visit_exp `localidx*#743`] +[visit_id localidx*#743] +[visit_exp (`%`_resulttype{`X*#5952`}([]), [], `%`_resulttype{`X*#6001`}([`REF`_valtype{`null?#805`, heaptype#809}(?(), `_IDX`_heaptype{typeidx#412}(x))]))] +[visit_exp `%`_resulttype{`X*#5952`}([])] +[visit_exp `X*#5952`] +[visit_id X*#5952] +[visit_exp ([])] +[visit_exp []] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#6001`}([`REF`_valtype{`null?#805`, heaptype#809}(?(), `_IDX`_heaptype{typeidx#412}(x))])] +[visit_exp `X*#6001`] +[visit_id X*#6001] +[visit_exp ([`REF`_valtype{`null?#805`, heaptype#809}(?(), `_IDX`_heaptype{typeidx#412}(x))])] +[visit_exp [`REF`_valtype{`null?#805`, heaptype#809}(?(), `_IDX`_heaptype{typeidx#412}(x))]] +[visit_exp `REF`_valtype{`null?#805`, heaptype#809}(?(), `_IDX`_heaptype{typeidx#412}(x))] +[visit_exp `null?#805`] +[visit_id null?#805] +[visit_exp heaptype#809] +[visit_id heaptype#809] +[visit_exp (?(), `_IDX`_heaptype{typeidx#412}(x))] +[visit_exp ?()] +[visit_exp `_IDX`_heaptype{typeidx#412}(x)] +[visit_exp typeidx#412] +[visit_id typeidx#412] +[visit_exp (x)] +[visit_exp x] +[visit_id x] not free +[visit_exp (C.`TYPES`_context{`deftype*#38`}[x!`%`_idx{i#6169}.0], `STRUCT`_comptype(`%`_list{`X*#6014`}(`%%`_fieldtype{`mut?#591`, storagetype#355}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#591` <- `mut?#591*`, storagetype#355 <- `storagetype#355*`, zt <- `zt*`})))] +[visit_exp C.`TYPES`_context{`deftype*#38`}[x!`%`_idx{i#6169}.0]] +[visit_exp C.`TYPES`_context{`deftype*#38`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `deftype*#38`] +[visit_id deftype*#38] +[visit_exp x!`%`_idx{i#6169}.0] +[visit_exp x!`%`_idx{i#6169}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#6169] +[visit_id i#6169] +[visit_exp `STRUCT`_comptype(`%`_list{`X*#6014`}(`%%`_fieldtype{`mut?#591`, storagetype#355}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#591` <- `mut?#591*`, storagetype#355 <- `storagetype#355*`, zt <- `zt*`}))] +[visit_exp (`%`_list{`X*#6014`}(`%%`_fieldtype{`mut?#591`, storagetype#355}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#591` <- `mut?#591*`, storagetype#355 <- `storagetype#355*`, zt <- `zt*`}))] +[visit_exp `%`_list{`X*#6014`}(`%%`_fieldtype{`mut?#591`, storagetype#355}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#591` <- `mut?#591*`, storagetype#355 <- `storagetype#355*`, zt <- `zt*`})] +[visit_exp `X*#6014`] +[visit_id X*#6014] +[visit_exp (`%%`_fieldtype{`mut?#591`, storagetype#355}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#591` <- `mut?#591*`, storagetype#355 <- `storagetype#355*`, zt <- `zt*`})] +[visit_exp `%%`_fieldtype{`mut?#591`, storagetype#355}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#591` <- `mut?#591*`, storagetype#355 <- `storagetype#355*`, zt <- `zt*`}] +[scope_enter mut?] +[scope_enter mut?#591] +[scope_enter storagetype#355] +[scope_enter zt] +[visit_exp `%%`_fieldtype{`mut?#591`, storagetype#355}(mut?{mut <- `mut?`}, zt)] +[visit_exp `mut?#591`] +[visit_id mut?#591] not free +[visit_exp storagetype#355] +[visit_id storagetype#355] not free +[visit_exp (mut?{mut <- `mut?`}, zt)] +[visit_exp mut?{mut <- `mut?`}] +[scope_enter mut] +[visit_exp mut] +[visit_id mut] not free +[visit_id mut] not free +[scope_exit mut] +[visit_exp `mut?`] +[visit_id mut?] not free +[visit_id mut?] no dims +[visit_exp zt] +[visit_id zt] not free +[visit_id mut?] not free +[visit_id mut?] no dims +[visit_id mut?#591] not free +[visit_id storagetype#355] not free +[visit_id zt] not free +[scope_exit zt] +[scope_exit storagetype#355] +[scope_exit mut?#591] +[scope_exit mut?] +[visit_exp `mut?*`] +[visit_id mut?*] no dims +[visit_id mut?*] +[visit_exp `mut?#591*`] +[visit_id mut?#591*] no dims +[visit_id mut?#591*] +[visit_exp `storagetype#355*`] +[visit_id storagetype#355*] no dims +[visit_id storagetype#355*] +[visit_exp `zt*`] +[visit_id zt*] no dims +[visit_id zt*] +[scope_enter zt] +[visit_exp $unpack(zt)] +[visit_exp zt] +[visit_id zt] not free +[visit_id zt] not free +[scope_exit zt] +[visit_exp `zt*`] +[visit_id zt*] not free +[visit_id zt*] no dims +[check_dims] storagetype +DecD is_packtype(storagetype : storagetype) : bool +[visit_id storagetype] not free +[check_dims] zt +[visit_exp zt] +[visit_id zt] +[visit_exp (zt = ($unpack(zt) : valtype <: storagetype))] +[visit_exp zt] +[visit_id zt] not free +[visit_exp ($unpack(zt) : valtype <: storagetype)] +[visit_exp $unpack(zt)] +[visit_exp zt] +[visit_id zt] not free +=> + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + def $is_packtype{zt : storagetype}(zt) = (zt = ($unpack(zt) : valtype <: storagetype)) +[check_dims] C X*#6037 X*#6086 X*#6099 deftype*#39 ft heaptype#811 i i#6236 i#6246 localidx*#755 mut mut?#617 null?#807 resulttype#1255 storagetype#381 sx sx?#7 typeidx#414 typeidx#416 u32#8 x zt +[visit_exp C] +[visit_id C] +[visit_exp `STRUCT.GET`_instr{`sx?#7`, typeidx#414, u32#8}(sx?{sx <- `sx?`}, x, i)] +[visit_exp `sx?#7`] +[visit_id sx?#7] +[visit_exp typeidx#414] +[visit_id typeidx#414] +[visit_exp u32#8] +[visit_id u32#8] +[visit_exp (sx?{sx <- `sx?`}, x, i)] +[visit_exp sx?{sx <- `sx?`}] +[scope_enter sx] +[visit_exp sx] +[visit_id sx] not free +[visit_id sx] not free +[scope_exit sx] +[visit_exp `sx?`] +[visit_id sx?] no dims +[visit_id sx?] +[visit_exp x] +[visit_id x] +[visit_exp i] +[visit_id i] +[visit_exp `%->_%%`_instrtype{resulttype#1255, `localidx*#755`}(`%`_resulttype{`X*#6037`}([`REF`_valtype{`null?#807`, heaptype#811}(?(`NULL`_null), `_IDX`_heaptype{typeidx#416}(x))]), [], `%`_resulttype{`X*#6086`}([$unpack(zt)]))] +[visit_exp resulttype#1255] +[visit_id resulttype#1255] +[visit_exp `localidx*#755`] +[visit_id localidx*#755] +[visit_exp (`%`_resulttype{`X*#6037`}([`REF`_valtype{`null?#807`, heaptype#811}(?(`NULL`_null), `_IDX`_heaptype{typeidx#416}(x))]), [], `%`_resulttype{`X*#6086`}([$unpack(zt)]))] +[visit_exp `%`_resulttype{`X*#6037`}([`REF`_valtype{`null?#807`, heaptype#811}(?(`NULL`_null), `_IDX`_heaptype{typeidx#416}(x))])] +[visit_exp `X*#6037`] +[visit_id X*#6037] +[visit_exp ([`REF`_valtype{`null?#807`, heaptype#811}(?(`NULL`_null), `_IDX`_heaptype{typeidx#416}(x))])] +[visit_exp [`REF`_valtype{`null?#807`, heaptype#811}(?(`NULL`_null), `_IDX`_heaptype{typeidx#416}(x))]] +[visit_exp `REF`_valtype{`null?#807`, heaptype#811}(?(`NULL`_null), `_IDX`_heaptype{typeidx#416}(x))] +[visit_exp `null?#807`] +[visit_id null?#807] +[visit_exp heaptype#811] +[visit_id heaptype#811] +[visit_exp (?(`NULL`_null), `_IDX`_heaptype{typeidx#416}(x))] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp `_IDX`_heaptype{typeidx#416}(x)] +[visit_exp typeidx#416] +[visit_id typeidx#416] +[visit_exp (x)] +[visit_exp x] +[visit_id x] not free +[visit_exp []] +[visit_exp `%`_resulttype{`X*#6086`}([$unpack(zt)])] +[visit_exp `X*#6086`] +[visit_id X*#6086] +[visit_exp ([$unpack(zt)])] +[visit_exp [$unpack(zt)]] +[visit_exp $unpack(zt)] +[visit_exp zt] +[visit_id zt] +[visit_exp (C.`TYPES`_context{`deftype*#39`}[x!`%`_idx{i#6236}.0], `STRUCT`_comptype(`%`_list{`X*#6099`}(ft*{ft <- `ft*`})))] +[visit_exp C.`TYPES`_context{`deftype*#39`}[x!`%`_idx{i#6236}.0]] +[visit_exp C.`TYPES`_context{`deftype*#39`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `deftype*#39`] +[visit_id deftype*#39] +[visit_exp x!`%`_idx{i#6236}.0] +[visit_exp x!`%`_idx{i#6236}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#6236] +[visit_id i#6236] +[visit_exp `STRUCT`_comptype(`%`_list{`X*#6099`}(ft*{ft <- `ft*`}))] +[visit_exp (`%`_list{`X*#6099`}(ft*{ft <- `ft*`}))] +[visit_exp `%`_list{`X*#6099`}(ft*{ft <- `ft*`})] +[visit_exp `X*#6099`] +[visit_id X*#6099] +[visit_exp (ft*{ft <- `ft*`})] +[visit_exp ft*{ft <- `ft*`}] +[scope_enter ft] +[visit_exp ft] +[visit_id ft] not free +[visit_id ft] not free +[scope_exit ft] +[visit_exp `ft*`] +[visit_id ft*] no dims +[visit_id ft*] +[visit_exp (ft*{ft <- `ft*`}[i!`%`_u32{i#6246}.0] = `%%`_fieldtype{`mut?#617`, storagetype#381}(mut?{mut <- `mut?`}, zt))] +[visit_exp ft*{ft <- `ft*`}[i!`%`_u32{i#6246}.0]] +[visit_exp ft*{ft <- `ft*`}] +[scope_enter ft] +[visit_exp ft] +[visit_id ft] not free +[visit_id ft] not free +[scope_exit ft] +[visit_exp `ft*`] +[visit_id ft*] not free +[visit_id ft*] no dims +[visit_exp i!`%`_u32{i#6246}.0] +[visit_exp i!`%`_u32{i#6246}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#6246] +[visit_id i#6246] +[visit_exp `%%`_fieldtype{`mut?#617`, storagetype#381}(mut?{mut <- `mut?`}, zt)] +[visit_exp `mut?#617`] +[visit_id mut?#617] +[visit_exp storagetype#381] +[visit_id storagetype#381] +[visit_exp (mut?{mut <- `mut?`}, zt)] +[visit_exp mut?{mut <- `mut?`}] +[scope_enter mut] +[visit_exp mut] +[visit_id mut] not free +[visit_id mut] not free +[scope_exit mut] +[visit_exp `mut?`] +[visit_id mut?] no dims +[visit_id mut?] +[visit_exp zt] +[visit_id zt] not free +[visit_exp ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt))] +[visit_exp (sx?{sx <- `sx?`} = ?())] +[visit_exp sx?{sx <- `sx?`}] +[scope_enter sx] +[visit_exp sx] +[visit_id sx] not free +[visit_id sx] not free +[scope_exit sx] +[visit_exp `sx?`] +[visit_id sx?] not free +[visit_id sx?] no dims +[visit_exp ?()] +[visit_exp $is_packtype(zt)] +[visit_exp zt] +[visit_id zt] not free +[check_dims] C X*#6122 X*#6171 X*#6184 deftype*#40 ft heaptype#813 i i#6298 i#6308 localidx*#767 mut?#643 null?#809 resulttype#1275 storagetype#407 typeidx#418 typeidx#420 u32#10 x zt +[visit_exp C] +[visit_id C] +[visit_exp `STRUCT.SET`_instr{typeidx#418, u32#10}(x, i)] +[visit_exp typeidx#418] +[visit_id typeidx#418] +[visit_exp u32#10] +[visit_id u32#10] +[visit_exp (x, i)] +[visit_exp x] +[visit_id x] +[visit_exp i] +[visit_id i] +[visit_exp `%->_%%`_instrtype{resulttype#1275, `localidx*#767`}(`%`_resulttype{`X*#6122`}([`REF`_valtype{`null?#809`, heaptype#813}(?(`NULL`_null), `_IDX`_heaptype{typeidx#420}(x)) $unpack(zt)]), [], `%`_resulttype{`X*#6171`}([]))] +[visit_exp resulttype#1275] +[visit_id resulttype#1275] +[visit_exp `localidx*#767`] +[visit_id localidx*#767] +[visit_exp (`%`_resulttype{`X*#6122`}([`REF`_valtype{`null?#809`, heaptype#813}(?(`NULL`_null), `_IDX`_heaptype{typeidx#420}(x)) $unpack(zt)]), [], `%`_resulttype{`X*#6171`}([]))] +[visit_exp `%`_resulttype{`X*#6122`}([`REF`_valtype{`null?#809`, heaptype#813}(?(`NULL`_null), `_IDX`_heaptype{typeidx#420}(x)) $unpack(zt)])] +[visit_exp `X*#6122`] +[visit_id X*#6122] +[visit_exp ([`REF`_valtype{`null?#809`, heaptype#813}(?(`NULL`_null), `_IDX`_heaptype{typeidx#420}(x)) $unpack(zt)])] +[visit_exp [`REF`_valtype{`null?#809`, heaptype#813}(?(`NULL`_null), `_IDX`_heaptype{typeidx#420}(x)) $unpack(zt)]] +[visit_exp `REF`_valtype{`null?#809`, heaptype#813}(?(`NULL`_null), `_IDX`_heaptype{typeidx#420}(x))] +[visit_exp `null?#809`] +[visit_id null?#809] +[visit_exp heaptype#813] +[visit_id heaptype#813] +[visit_exp (?(`NULL`_null), `_IDX`_heaptype{typeidx#420}(x))] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp `_IDX`_heaptype{typeidx#420}(x)] +[visit_exp typeidx#420] +[visit_id typeidx#420] +[visit_exp (x)] +[visit_exp x] +[visit_id x] not free +[visit_exp $unpack(zt)] +[visit_exp zt] +[visit_id zt] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#6171`}([])] +[visit_exp `X*#6171`] +[visit_id X*#6171] +[visit_exp ([])] +[visit_exp []] +[visit_exp (C.`TYPES`_context{`deftype*#40`}[x!`%`_idx{i#6298}.0], `STRUCT`_comptype(`%`_list{`X*#6184`}(ft*{ft <- `ft*`})))] +[visit_exp C.`TYPES`_context{`deftype*#40`}[x!`%`_idx{i#6298}.0]] +[visit_exp C.`TYPES`_context{`deftype*#40`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `deftype*#40`] +[visit_id deftype*#40] +[visit_exp x!`%`_idx{i#6298}.0] +[visit_exp x!`%`_idx{i#6298}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#6298] +[visit_id i#6298] +[visit_exp `STRUCT`_comptype(`%`_list{`X*#6184`}(ft*{ft <- `ft*`}))] +[visit_exp (`%`_list{`X*#6184`}(ft*{ft <- `ft*`}))] +[visit_exp `%`_list{`X*#6184`}(ft*{ft <- `ft*`})] +[visit_exp `X*#6184`] +[visit_id X*#6184] +[visit_exp (ft*{ft <- `ft*`})] +[visit_exp ft*{ft <- `ft*`}] +[scope_enter ft] +[visit_exp ft] +[visit_id ft] not free +[visit_id ft] not free +[scope_exit ft] +[visit_exp `ft*`] +[visit_id ft*] no dims +[visit_id ft*] +[visit_exp (ft*{ft <- `ft*`}[i!`%`_u32{i#6308}.0] = `%%`_fieldtype{`mut?#643`, storagetype#407}(?(`MUT`_mut), zt))] +[visit_exp ft*{ft <- `ft*`}[i!`%`_u32{i#6308}.0]] +[visit_exp ft*{ft <- `ft*`}] +[scope_enter ft] +[visit_exp ft] +[visit_id ft] not free +[visit_id ft] not free +[scope_exit ft] +[visit_exp `ft*`] +[visit_id ft*] not free +[visit_id ft*] no dims +[visit_exp i!`%`_u32{i#6308}.0] +[visit_exp i!`%`_u32{i#6308}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#6308] +[visit_id i#6308] +[visit_exp `%%`_fieldtype{`mut?#643`, storagetype#407}(?(`MUT`_mut), zt)] +[visit_exp `mut?#643`] +[visit_id mut?#643] +[visit_exp storagetype#407] +[visit_id storagetype#407] +[visit_exp (?(`MUT`_mut), zt)] +[visit_exp ?(`MUT`_mut)] +[visit_exp `MUT`_mut] +[visit_exp ()] +[visit_exp zt] +[visit_id zt] not free +[check_dims] C X*#6207 X*#6256 deftype*#41 fieldtype#15 heaptype#815 i#6346 localidx*#779 mut mut?#655 null?#811 resulttype#1295 storagetype#419 typeidx#422 typeidx#424 x zt +[visit_exp C] +[visit_id C] +[visit_exp `ARRAY.NEW`_instr{typeidx#422}(x)] +[visit_exp typeidx#422] +[visit_id typeidx#422] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%->_%%`_instrtype{resulttype#1295, `localidx*#779`}(`%`_resulttype{`X*#6207`}([$unpack(zt) `I32`_valtype]), [], `%`_resulttype{`X*#6256`}([`REF`_valtype{`null?#811`, heaptype#815}(?(), `_IDX`_heaptype{typeidx#424}(x))]))] +[visit_exp resulttype#1295] +[visit_id resulttype#1295] +[visit_exp `localidx*#779`] +[visit_id localidx*#779] +[visit_exp (`%`_resulttype{`X*#6207`}([$unpack(zt) `I32`_valtype]), [], `%`_resulttype{`X*#6256`}([`REF`_valtype{`null?#811`, heaptype#815}(?(), `_IDX`_heaptype{typeidx#424}(x))]))] +[visit_exp `%`_resulttype{`X*#6207`}([$unpack(zt) `I32`_valtype])] +[visit_exp `X*#6207`] +[visit_id X*#6207] +[visit_exp ([$unpack(zt) `I32`_valtype])] +[visit_exp [$unpack(zt) `I32`_valtype]] +[visit_exp $unpack(zt)] +[visit_exp zt] +[visit_id zt] +[visit_exp `I32`_valtype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#6256`}([`REF`_valtype{`null?#811`, heaptype#815}(?(), `_IDX`_heaptype{typeidx#424}(x))])] +[visit_exp `X*#6256`] +[visit_id X*#6256] +[visit_exp ([`REF`_valtype{`null?#811`, heaptype#815}(?(), `_IDX`_heaptype{typeidx#424}(x))])] +[visit_exp [`REF`_valtype{`null?#811`, heaptype#815}(?(), `_IDX`_heaptype{typeidx#424}(x))]] +[visit_exp `REF`_valtype{`null?#811`, heaptype#815}(?(), `_IDX`_heaptype{typeidx#424}(x))] +[visit_exp `null?#811`] +[visit_id null?#811] +[visit_exp heaptype#815] +[visit_id heaptype#815] +[visit_exp (?(), `_IDX`_heaptype{typeidx#424}(x))] +[visit_exp ?()] +[visit_exp `_IDX`_heaptype{typeidx#424}(x)] +[visit_exp typeidx#424] +[visit_id typeidx#424] +[visit_exp (x)] +[visit_exp x] +[visit_id x] not free +[visit_exp (C.`TYPES`_context{`deftype*#41`}[x!`%`_idx{i#6346}.0], `ARRAY`_comptype{fieldtype#15}(`%%`_fieldtype{`mut?#655`, storagetype#419}(mut?{mut <- `mut?`}, zt)))] +[visit_exp C.`TYPES`_context{`deftype*#41`}[x!`%`_idx{i#6346}.0]] +[visit_exp C.`TYPES`_context{`deftype*#41`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `deftype*#41`] +[visit_id deftype*#41] +[visit_exp x!`%`_idx{i#6346}.0] +[visit_exp x!`%`_idx{i#6346}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#6346] +[visit_id i#6346] +[visit_exp `ARRAY`_comptype{fieldtype#15}(`%%`_fieldtype{`mut?#655`, storagetype#419}(mut?{mut <- `mut?`}, zt))] +[visit_exp fieldtype#15] +[visit_id fieldtype#15] +[visit_exp (`%%`_fieldtype{`mut?#655`, storagetype#419}(mut?{mut <- `mut?`}, zt))] +[visit_exp `%%`_fieldtype{`mut?#655`, storagetype#419}(mut?{mut <- `mut?`}, zt)] +[visit_exp `mut?#655`] +[visit_id mut?#655] +[visit_exp storagetype#419] +[visit_id storagetype#419] +[visit_exp (mut?{mut <- `mut?`}, zt)] +[visit_exp mut?{mut <- `mut?`}] +[scope_enter mut] +[visit_exp mut] +[visit_id mut] not free +[visit_id mut] not free +[scope_exit mut] +[visit_exp `mut?`] +[visit_id mut?] no dims +[visit_id mut?] +[visit_exp zt] +[visit_id zt] not free +[check_dims] C X*#6275 X*#6324 deftype*#42 fieldtype#17 heaptype#817 i#6384 localidx*#791 mut mut?#667 null?#813 resulttype#1315 storagetype#431 typeidx#426 typeidx#428 x zt +[visit_exp C] +[visit_id C] +[visit_exp `ARRAY.NEW_DEFAULT`_instr{typeidx#426}(x)] +[visit_exp typeidx#426] +[visit_id typeidx#426] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%->_%%`_instrtype{resulttype#1315, `localidx*#791`}(`%`_resulttype{`X*#6275`}([`I32`_valtype]), [], `%`_resulttype{`X*#6324`}([`REF`_valtype{`null?#813`, heaptype#817}(?(), `_IDX`_heaptype{typeidx#428}(x))]))] +[visit_exp resulttype#1315] +[visit_id resulttype#1315] +[visit_exp `localidx*#791`] +[visit_id localidx*#791] +[visit_exp (`%`_resulttype{`X*#6275`}([`I32`_valtype]), [], `%`_resulttype{`X*#6324`}([`REF`_valtype{`null?#813`, heaptype#817}(?(), `_IDX`_heaptype{typeidx#428}(x))]))] +[visit_exp `%`_resulttype{`X*#6275`}([`I32`_valtype])] +[visit_exp `X*#6275`] +[visit_id X*#6275] +[visit_exp ([`I32`_valtype])] +[visit_exp [`I32`_valtype]] +[visit_exp `I32`_valtype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#6324`}([`REF`_valtype{`null?#813`, heaptype#817}(?(), `_IDX`_heaptype{typeidx#428}(x))])] +[visit_exp `X*#6324`] +[visit_id X*#6324] +[visit_exp ([`REF`_valtype{`null?#813`, heaptype#817}(?(), `_IDX`_heaptype{typeidx#428}(x))])] +[visit_exp [`REF`_valtype{`null?#813`, heaptype#817}(?(), `_IDX`_heaptype{typeidx#428}(x))]] +[visit_exp `REF`_valtype{`null?#813`, heaptype#817}(?(), `_IDX`_heaptype{typeidx#428}(x))] +[visit_exp `null?#813`] +[visit_id null?#813] +[visit_exp heaptype#817] +[visit_id heaptype#817] +[visit_exp (?(), `_IDX`_heaptype{typeidx#428}(x))] +[visit_exp ?()] +[visit_exp `_IDX`_heaptype{typeidx#428}(x)] +[visit_exp typeidx#428] +[visit_id typeidx#428] +[visit_exp (x)] +[visit_exp x] +[visit_id x] not free +[visit_exp (C.`TYPES`_context{`deftype*#42`}[x!`%`_idx{i#6384}.0], `ARRAY`_comptype{fieldtype#17}(`%%`_fieldtype{`mut?#667`, storagetype#431}(mut?{mut <- `mut?`}, zt)))] +[visit_exp C.`TYPES`_context{`deftype*#42`}[x!`%`_idx{i#6384}.0]] +[visit_exp C.`TYPES`_context{`deftype*#42`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `deftype*#42`] +[visit_id deftype*#42] +[visit_exp x!`%`_idx{i#6384}.0] +[visit_exp x!`%`_idx{i#6384}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#6384] +[visit_id i#6384] +[visit_exp `ARRAY`_comptype{fieldtype#17}(`%%`_fieldtype{`mut?#667`, storagetype#431}(mut?{mut <- `mut?`}, zt))] +[visit_exp fieldtype#17] +[visit_id fieldtype#17] +[visit_exp (`%%`_fieldtype{`mut?#667`, storagetype#431}(mut?{mut <- `mut?`}, zt))] +[visit_exp `%%`_fieldtype{`mut?#667`, storagetype#431}(mut?{mut <- `mut?`}, zt)] +[visit_exp `mut?#667`] +[visit_id mut?#667] +[visit_exp storagetype#431] +[visit_id storagetype#431] +[visit_exp (mut?{mut <- `mut?`}, zt)] +[visit_exp mut?{mut <- `mut?`}] +[scope_enter mut] +[visit_exp mut] +[visit_id mut] not free +[visit_id mut] not free +[scope_exit mut] +[visit_exp `mut?`] +[visit_id mut?] no dims +[visit_id mut?] +[visit_exp zt] +[visit_id zt] +[visit_exp $unpack(zt)] +[visit_exp zt] +[visit_id zt] not free +[check_dims] C X*#6335 X*#6386 deftype*#43 fieldtype#19 heaptype#819 i#6422 i#6446 localidx*#803 mut mut?#679 n null?#815 resulttype#1335 storagetype#443 typeidx#430 typeidx#432 u32#12 x zt +[visit_exp C] +[visit_id C] +[visit_exp `ARRAY.NEW_FIXED`_instr{typeidx#430, u32#12}(x, `%`_u32{i#6422}(n))] +[visit_exp typeidx#430] +[visit_id typeidx#430] +[visit_exp u32#12] +[visit_id u32#12] +[visit_exp (x, `%`_u32{i#6422}(n))] +[visit_exp x] +[visit_id x] +[visit_exp `%`_u32{i#6422}(n)] +[visit_exp i#6422] +[visit_id i#6422] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `%->_%%`_instrtype{resulttype#1335, `localidx*#803`}(`%`_resulttype{`X*#6335`}($unpack(zt)^n{}), [], `%`_resulttype{`X*#6386`}([`REF`_valtype{`null?#815`, heaptype#819}(?(), `_IDX`_heaptype{typeidx#432}(x))]))] +[visit_exp resulttype#1335] +[visit_id resulttype#1335] +[visit_exp `localidx*#803`] +[visit_id localidx*#803] +[visit_exp (`%`_resulttype{`X*#6335`}($unpack(zt)^n{}), [], `%`_resulttype{`X*#6386`}([`REF`_valtype{`null?#815`, heaptype#819}(?(), `_IDX`_heaptype{typeidx#432}(x))]))] +[visit_exp `%`_resulttype{`X*#6335`}($unpack(zt)^n{})] +[visit_exp `X*#6335`] +[visit_id X*#6335] +[visit_exp ($unpack(zt)^n{})] +[visit_exp $unpack(zt)^n{}] +[visit_exp $unpack(zt)] +[visit_exp zt] +[visit_id zt] +[visit_exp n] +[visit_id n] not free +[visit_exp []] +[visit_exp `%`_resulttype{`X*#6386`}([`REF`_valtype{`null?#815`, heaptype#819}(?(), `_IDX`_heaptype{typeidx#432}(x))])] +[visit_exp `X*#6386`] +[visit_id X*#6386] +[visit_exp ([`REF`_valtype{`null?#815`, heaptype#819}(?(), `_IDX`_heaptype{typeidx#432}(x))])] +[visit_exp [`REF`_valtype{`null?#815`, heaptype#819}(?(), `_IDX`_heaptype{typeidx#432}(x))]] +[visit_exp `REF`_valtype{`null?#815`, heaptype#819}(?(), `_IDX`_heaptype{typeidx#432}(x))] +[visit_exp `null?#815`] +[visit_id null?#815] +[visit_exp heaptype#819] +[visit_id heaptype#819] +[visit_exp (?(), `_IDX`_heaptype{typeidx#432}(x))] +[visit_exp ?()] +[visit_exp `_IDX`_heaptype{typeidx#432}(x)] +[visit_exp typeidx#432] +[visit_id typeidx#432] +[visit_exp (x)] +[visit_exp x] +[visit_id x] not free +[visit_exp (C.`TYPES`_context{`deftype*#43`}[x!`%`_idx{i#6446}.0], `ARRAY`_comptype{fieldtype#19}(`%%`_fieldtype{`mut?#679`, storagetype#443}(mut?{mut <- `mut?`}, zt)))] +[visit_exp C.`TYPES`_context{`deftype*#43`}[x!`%`_idx{i#6446}.0]] +[visit_exp C.`TYPES`_context{`deftype*#43`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `deftype*#43`] +[visit_id deftype*#43] +[visit_exp x!`%`_idx{i#6446}.0] +[visit_exp x!`%`_idx{i#6446}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#6446] +[visit_id i#6446] +[visit_exp `ARRAY`_comptype{fieldtype#19}(`%%`_fieldtype{`mut?#679`, storagetype#443}(mut?{mut <- `mut?`}, zt))] +[visit_exp fieldtype#19] +[visit_id fieldtype#19] +[visit_exp (`%%`_fieldtype{`mut?#679`, storagetype#443}(mut?{mut <- `mut?`}, zt))] +[visit_exp `%%`_fieldtype{`mut?#679`, storagetype#443}(mut?{mut <- `mut?`}, zt)] +[visit_exp `mut?#679`] +[visit_id mut?#679] +[visit_exp storagetype#443] +[visit_id storagetype#443] +[visit_exp (mut?{mut <- `mut?`}, zt)] +[visit_exp mut?{mut <- `mut?`}] +[scope_enter mut] +[visit_exp mut] +[visit_id mut] not free +[visit_id mut] not free +[scope_exit mut] +[visit_exp `mut?`] +[visit_id mut?] no dims +[visit_id mut?] +[visit_exp zt] +[visit_id zt] not free +[check_dims] C X*#6407 X*#6456 deftype*#44 elemidx#9 elemtype*#7 fieldtype#21 heaptype#821 i#6498 i#6508 localidx*#815 mut mut?#691 null?#817 resulttype#1355 rt storagetype#455 typeidx#434 typeidx#436 x y +[visit_exp C] +[visit_id C] +[visit_exp `ARRAY.NEW_ELEM`_instr{typeidx#434, elemidx#9}(x, y)] +[visit_exp typeidx#434] +[visit_id typeidx#434] +[visit_exp elemidx#9] +[visit_id elemidx#9] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] +[visit_exp y] +[visit_id y] +[visit_exp `%->_%%`_instrtype{resulttype#1355, `localidx*#815`}(`%`_resulttype{`X*#6407`}([`I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#6456`}([`REF`_valtype{`null?#817`, heaptype#821}(?(), `_IDX`_heaptype{typeidx#436}(x))]))] +[visit_exp resulttype#1355] +[visit_id resulttype#1355] +[visit_exp `localidx*#815`] +[visit_id localidx*#815] +[visit_exp (`%`_resulttype{`X*#6407`}([`I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#6456`}([`REF`_valtype{`null?#817`, heaptype#821}(?(), `_IDX`_heaptype{typeidx#436}(x))]))] +[visit_exp `%`_resulttype{`X*#6407`}([`I32`_valtype `I32`_valtype])] +[visit_exp `X*#6407`] +[visit_id X*#6407] +[visit_exp ([`I32`_valtype `I32`_valtype])] +[visit_exp [`I32`_valtype `I32`_valtype]] +[visit_exp `I32`_valtype] +[visit_exp ()] +[visit_exp `I32`_valtype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#6456`}([`REF`_valtype{`null?#817`, heaptype#821}(?(), `_IDX`_heaptype{typeidx#436}(x))])] +[visit_exp `X*#6456`] +[visit_id X*#6456] +[visit_exp ([`REF`_valtype{`null?#817`, heaptype#821}(?(), `_IDX`_heaptype{typeidx#436}(x))])] +[visit_exp [`REF`_valtype{`null?#817`, heaptype#821}(?(), `_IDX`_heaptype{typeidx#436}(x))]] +[visit_exp `REF`_valtype{`null?#817`, heaptype#821}(?(), `_IDX`_heaptype{typeidx#436}(x))] +[visit_exp `null?#817`] +[visit_id null?#817] +[visit_exp heaptype#821] +[visit_id heaptype#821] +[visit_exp (?(), `_IDX`_heaptype{typeidx#436}(x))] +[visit_exp ?()] +[visit_exp `_IDX`_heaptype{typeidx#436}(x)] +[visit_exp typeidx#436] +[visit_id typeidx#436] +[visit_exp (x)] +[visit_exp x] +[visit_id x] not free +[visit_exp (C.`TYPES`_context{`deftype*#44`}[x!`%`_idx{i#6498}.0], `ARRAY`_comptype{fieldtype#21}(`%%`_fieldtype{`mut?#691`, storagetype#455}(mut?{mut <- `mut?`}, (rt : reftype <: storagetype))))] +[visit_exp C.`TYPES`_context{`deftype*#44`}[x!`%`_idx{i#6498}.0]] +[visit_exp C.`TYPES`_context{`deftype*#44`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `deftype*#44`] +[visit_id deftype*#44] +[visit_exp x!`%`_idx{i#6498}.0] +[visit_exp x!`%`_idx{i#6498}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#6498] +[visit_id i#6498] +[visit_exp `ARRAY`_comptype{fieldtype#21}(`%%`_fieldtype{`mut?#691`, storagetype#455}(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))] +[visit_exp fieldtype#21] +[visit_id fieldtype#21] +[visit_exp (`%%`_fieldtype{`mut?#691`, storagetype#455}(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))] +[visit_exp `%%`_fieldtype{`mut?#691`, storagetype#455}(mut?{mut <- `mut?`}, (rt : reftype <: storagetype))] +[visit_exp `mut?#691`] +[visit_id mut?#691] +[visit_exp storagetype#455] +[visit_id storagetype#455] +[visit_exp (mut?{mut <- `mut?`}, (rt : reftype <: storagetype))] +[visit_exp mut?{mut <- `mut?`}] +[scope_enter mut] +[visit_exp mut] +[visit_id mut] not free +[visit_id mut] not free +[scope_exit mut] +[visit_exp `mut?`] +[visit_id mut?] no dims +[visit_id mut?] +[visit_exp (rt : reftype <: storagetype)] +[visit_exp rt] +[visit_id rt] +[visit_exp (C, C.`ELEMS`_context{`elemtype*#7`}[y!`%`_idx{i#6508}.0], rt)] +[visit_exp C] +[visit_id C] not free +[visit_exp C.`ELEMS`_context{`elemtype*#7`}[y!`%`_idx{i#6508}.0]] +[visit_exp C.`ELEMS`_context{`elemtype*#7`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `elemtype*#7`] +[visit_id elemtype*#7] +[visit_exp y!`%`_idx{i#6508}.0] +[visit_exp y!`%`_idx{i#6508}] +[visit_exp y] +[visit_id y] not free +[visit_exp i#6508] +[visit_id i#6508] +[visit_exp rt] +[visit_id rt] not free +[check_dims] C X*#6477 X*#6526 dataidx#9 datatype*#7 deftype*#45 fieldtype#23 heaptype#835 i#6560 i#6570 localidx*#827 mut mut?#703 null?#831 numtype resulttype#1375 storagetype#467 typeidx#438 typeidx#440 vectype x y zt +[visit_exp C] +[visit_id C] +[visit_exp `ARRAY.NEW_DATA`_instr{typeidx#438, dataidx#9}(x, y)] +[visit_exp typeidx#438] +[visit_id typeidx#438] +[visit_exp dataidx#9] +[visit_id dataidx#9] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] +[visit_exp y] +[visit_id y] +[visit_exp `%->_%%`_instrtype{resulttype#1375, `localidx*#827`}(`%`_resulttype{`X*#6477`}([`I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#6526`}([`REF`_valtype{`null?#831`, heaptype#835}(?(), `_IDX`_heaptype{typeidx#440}(x))]))] +[visit_exp resulttype#1375] +[visit_id resulttype#1375] +[visit_exp `localidx*#827`] +[visit_id localidx*#827] +[visit_exp (`%`_resulttype{`X*#6477`}([`I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#6526`}([`REF`_valtype{`null?#831`, heaptype#835}(?(), `_IDX`_heaptype{typeidx#440}(x))]))] +[visit_exp `%`_resulttype{`X*#6477`}([`I32`_valtype `I32`_valtype])] +[visit_exp `X*#6477`] +[visit_id X*#6477] +[visit_exp ([`I32`_valtype `I32`_valtype])] +[visit_exp [`I32`_valtype `I32`_valtype]] +[visit_exp `I32`_valtype] +[visit_exp ()] +[visit_exp `I32`_valtype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#6526`}([`REF`_valtype{`null?#831`, heaptype#835}(?(), `_IDX`_heaptype{typeidx#440}(x))])] +[visit_exp `X*#6526`] +[visit_id X*#6526] +[visit_exp ([`REF`_valtype{`null?#831`, heaptype#835}(?(), `_IDX`_heaptype{typeidx#440}(x))])] +[visit_exp [`REF`_valtype{`null?#831`, heaptype#835}(?(), `_IDX`_heaptype{typeidx#440}(x))]] +[visit_exp `REF`_valtype{`null?#831`, heaptype#835}(?(), `_IDX`_heaptype{typeidx#440}(x))] +[visit_exp `null?#831`] +[visit_id null?#831] +[visit_exp heaptype#835] +[visit_id heaptype#835] +[visit_exp (?(), `_IDX`_heaptype{typeidx#440}(x))] +[visit_exp ?()] +[visit_exp `_IDX`_heaptype{typeidx#440}(x)] +[visit_exp typeidx#440] +[visit_id typeidx#440] +[visit_exp (x)] +[visit_exp x] +[visit_id x] not free +[visit_exp (C.`TYPES`_context{`deftype*#45`}[x!`%`_idx{i#6560}.0], `ARRAY`_comptype{fieldtype#23}(`%%`_fieldtype{`mut?#703`, storagetype#467}(mut?{mut <- `mut?`}, zt)))] +[visit_exp C.`TYPES`_context{`deftype*#45`}[x!`%`_idx{i#6560}.0]] +[visit_exp C.`TYPES`_context{`deftype*#45`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `deftype*#45`] +[visit_id deftype*#45] +[visit_exp x!`%`_idx{i#6560}.0] +[visit_exp x!`%`_idx{i#6560}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#6560] +[visit_id i#6560] +[visit_exp `ARRAY`_comptype{fieldtype#23}(`%%`_fieldtype{`mut?#703`, storagetype#467}(mut?{mut <- `mut?`}, zt))] +[visit_exp fieldtype#23] +[visit_id fieldtype#23] +[visit_exp (`%%`_fieldtype{`mut?#703`, storagetype#467}(mut?{mut <- `mut?`}, zt))] +[visit_exp `%%`_fieldtype{`mut?#703`, storagetype#467}(mut?{mut <- `mut?`}, zt)] +[visit_exp `mut?#703`] +[visit_id mut?#703] +[visit_exp storagetype#467] +[visit_id storagetype#467] +[visit_exp (mut?{mut <- `mut?`}, zt)] +[visit_exp mut?{mut <- `mut?`}] +[scope_enter mut] +[visit_exp mut] +[visit_id mut] not free +[visit_id mut] not free +[scope_exit mut] +[visit_exp `mut?`] +[visit_id mut?] no dims +[visit_id mut?] +[visit_exp zt] +[visit_id zt] +[visit_exp (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype)))] +[visit_exp ($unpack(zt) = (numtype : numtype <: valtype))] +[visit_exp $unpack(zt)] +[visit_exp zt] +[visit_id zt] not free +[visit_exp (numtype : numtype <: valtype)] +[visit_exp numtype] +[visit_id numtype] +[visit_exp ($unpack(zt) = (vectype : vectype <: valtype))] +[visit_exp $unpack(zt)] +[visit_exp zt] +[visit_id zt] not free +[visit_exp (vectype : vectype <: valtype)] +[visit_exp vectype] +[visit_id vectype] +[visit_exp (C.`DATAS`_context{`datatype*#7`}[y!`%`_idx{i#6570}.0] = `OK`_datatype)] +[visit_exp C.`DATAS`_context{`datatype*#7`}[y!`%`_idx{i#6570}.0]] +[visit_exp C.`DATAS`_context{`datatype*#7`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `datatype*#7`] +[visit_id datatype*#7] +[visit_exp y!`%`_idx{i#6570}.0] +[visit_exp y!`%`_idx{i#6570}] +[visit_exp y] +[visit_id y] not free +[visit_exp i#6570] +[visit_id i#6570] +[visit_exp `OK`_datatype] +[visit_exp ()] +[check_dims] C X*#6547 X*#6596 deftype*#46 fieldtype#25 heaptype#837 i#6645 localidx*#839 mut mut?#715 null?#833 resulttype#1395 storagetype#479 sx sx?#9 typeidx#442 typeidx#444 x zt +[visit_exp C] +[visit_id C] +[visit_exp `ARRAY.GET`_instr{`sx?#9`, typeidx#442}(sx?{sx <- `sx?`}, x)] +[visit_exp `sx?#9`] +[visit_id sx?#9] +[visit_exp typeidx#442] +[visit_id typeidx#442] +[visit_exp (sx?{sx <- `sx?`}, x)] +[visit_exp sx?{sx <- `sx?`}] +[scope_enter sx] +[visit_exp sx] +[visit_id sx] not free +[visit_id sx] not free +[scope_exit sx] +[visit_exp `sx?`] +[visit_id sx?] no dims +[visit_id sx?] +[visit_exp x] +[visit_id x] +[visit_exp `%->_%%`_instrtype{resulttype#1395, `localidx*#839`}(`%`_resulttype{`X*#6547`}([`REF`_valtype{`null?#833`, heaptype#837}(?(`NULL`_null), `_IDX`_heaptype{typeidx#444}(x)) `I32`_valtype]), [], `%`_resulttype{`X*#6596`}([$unpack(zt)]))] +[visit_exp resulttype#1395] +[visit_id resulttype#1395] +[visit_exp `localidx*#839`] +[visit_id localidx*#839] +[visit_exp (`%`_resulttype{`X*#6547`}([`REF`_valtype{`null?#833`, heaptype#837}(?(`NULL`_null), `_IDX`_heaptype{typeidx#444}(x)) `I32`_valtype]), [], `%`_resulttype{`X*#6596`}([$unpack(zt)]))] +[visit_exp `%`_resulttype{`X*#6547`}([`REF`_valtype{`null?#833`, heaptype#837}(?(`NULL`_null), `_IDX`_heaptype{typeidx#444}(x)) `I32`_valtype])] +[visit_exp `X*#6547`] +[visit_id X*#6547] +[visit_exp ([`REF`_valtype{`null?#833`, heaptype#837}(?(`NULL`_null), `_IDX`_heaptype{typeidx#444}(x)) `I32`_valtype])] +[visit_exp [`REF`_valtype{`null?#833`, heaptype#837}(?(`NULL`_null), `_IDX`_heaptype{typeidx#444}(x)) `I32`_valtype]] +[visit_exp `REF`_valtype{`null?#833`, heaptype#837}(?(`NULL`_null), `_IDX`_heaptype{typeidx#444}(x))] +[visit_exp `null?#833`] +[visit_id null?#833] +[visit_exp heaptype#837] +[visit_id heaptype#837] +[visit_exp (?(`NULL`_null), `_IDX`_heaptype{typeidx#444}(x))] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp `_IDX`_heaptype{typeidx#444}(x)] +[visit_exp typeidx#444] +[visit_id typeidx#444] +[visit_exp (x)] +[visit_exp x] +[visit_id x] not free +[visit_exp `I32`_valtype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#6596`}([$unpack(zt)])] +[visit_exp `X*#6596`] +[visit_id X*#6596] +[visit_exp ([$unpack(zt)])] +[visit_exp [$unpack(zt)]] +[visit_exp $unpack(zt)] +[visit_exp zt] +[visit_id zt] +[visit_exp (C.`TYPES`_context{`deftype*#46`}[x!`%`_idx{i#6645}.0], `ARRAY`_comptype{fieldtype#25}(`%%`_fieldtype{`mut?#715`, storagetype#479}(mut?{mut <- `mut?`}, zt)))] +[visit_exp C.`TYPES`_context{`deftype*#46`}[x!`%`_idx{i#6645}.0]] +[visit_exp C.`TYPES`_context{`deftype*#46`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `deftype*#46`] +[visit_id deftype*#46] +[visit_exp x!`%`_idx{i#6645}.0] +[visit_exp x!`%`_idx{i#6645}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#6645] +[visit_id i#6645] +[visit_exp `ARRAY`_comptype{fieldtype#25}(`%%`_fieldtype{`mut?#715`, storagetype#479}(mut?{mut <- `mut?`}, zt))] +[visit_exp fieldtype#25] +[visit_id fieldtype#25] +[visit_exp (`%%`_fieldtype{`mut?#715`, storagetype#479}(mut?{mut <- `mut?`}, zt))] +[visit_exp `%%`_fieldtype{`mut?#715`, storagetype#479}(mut?{mut <- `mut?`}, zt)] +[visit_exp `mut?#715`] +[visit_id mut?#715] +[visit_exp storagetype#479] +[visit_id storagetype#479] +[visit_exp (mut?{mut <- `mut?`}, zt)] +[visit_exp mut?{mut <- `mut?`}] +[scope_enter mut] +[visit_exp mut] +[visit_id mut] not free +[visit_id mut] not free +[scope_exit mut] +[visit_exp `mut?`] +[visit_id mut?] no dims +[visit_id mut?] +[visit_exp zt] +[visit_id zt] not free +[visit_exp ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt))] +[visit_exp (sx?{sx <- `sx?`} = ?())] +[visit_exp sx?{sx <- `sx?`}] +[scope_enter sx] +[visit_exp sx] +[visit_id sx] not free +[visit_id sx] not free +[scope_exit sx] +[visit_exp `sx?`] +[visit_id sx?] not free +[visit_id sx?] no dims +[visit_exp ?()] +[visit_exp $is_packtype(zt)] +[visit_exp zt] +[visit_id zt] not free +[check_dims] C X*#6617 X*#6666 deftype*#47 fieldtype#27 heaptype#839 i#6683 localidx*#851 mut?#727 null?#835 resulttype#1415 storagetype#491 typeidx#446 typeidx#448 x zt +[visit_exp C] +[visit_id C] +[visit_exp `ARRAY.SET`_instr{typeidx#446}(x)] +[visit_exp typeidx#446] +[visit_id typeidx#446] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%->_%%`_instrtype{resulttype#1415, `localidx*#851`}(`%`_resulttype{`X*#6617`}([`REF`_valtype{`null?#835`, heaptype#839}(?(`NULL`_null), `_IDX`_heaptype{typeidx#448}(x)) `I32`_valtype $unpack(zt)]), [], `%`_resulttype{`X*#6666`}([]))] +[visit_exp resulttype#1415] +[visit_id resulttype#1415] +[visit_exp `localidx*#851`] +[visit_id localidx*#851] +[visit_exp (`%`_resulttype{`X*#6617`}([`REF`_valtype{`null?#835`, heaptype#839}(?(`NULL`_null), `_IDX`_heaptype{typeidx#448}(x)) `I32`_valtype $unpack(zt)]), [], `%`_resulttype{`X*#6666`}([]))] +[visit_exp `%`_resulttype{`X*#6617`}([`REF`_valtype{`null?#835`, heaptype#839}(?(`NULL`_null), `_IDX`_heaptype{typeidx#448}(x)) `I32`_valtype $unpack(zt)])] +[visit_exp `X*#6617`] +[visit_id X*#6617] +[visit_exp ([`REF`_valtype{`null?#835`, heaptype#839}(?(`NULL`_null), `_IDX`_heaptype{typeidx#448}(x)) `I32`_valtype $unpack(zt)])] +[visit_exp [`REF`_valtype{`null?#835`, heaptype#839}(?(`NULL`_null), `_IDX`_heaptype{typeidx#448}(x)) `I32`_valtype $unpack(zt)]] +[visit_exp `REF`_valtype{`null?#835`, heaptype#839}(?(`NULL`_null), `_IDX`_heaptype{typeidx#448}(x))] +[visit_exp `null?#835`] +[visit_id null?#835] +[visit_exp heaptype#839] +[visit_id heaptype#839] +[visit_exp (?(`NULL`_null), `_IDX`_heaptype{typeidx#448}(x))] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp `_IDX`_heaptype{typeidx#448}(x)] +[visit_exp typeidx#448] +[visit_id typeidx#448] +[visit_exp (x)] +[visit_exp x] +[visit_id x] not free +[visit_exp `I32`_valtype] +[visit_exp ()] +[visit_exp $unpack(zt)] +[visit_exp zt] +[visit_id zt] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#6666`}([])] +[visit_exp `X*#6666`] +[visit_id X*#6666] +[visit_exp ([])] +[visit_exp []] +[visit_exp (C.`TYPES`_context{`deftype*#47`}[x!`%`_idx{i#6683}.0], `ARRAY`_comptype{fieldtype#27}(`%%`_fieldtype{`mut?#727`, storagetype#491}(?(`MUT`_mut), zt)))] +[visit_exp C.`TYPES`_context{`deftype*#47`}[x!`%`_idx{i#6683}.0]] +[visit_exp C.`TYPES`_context{`deftype*#47`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `deftype*#47`] +[visit_id deftype*#47] +[visit_exp x!`%`_idx{i#6683}.0] +[visit_exp x!`%`_idx{i#6683}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#6683] +[visit_id i#6683] +[visit_exp `ARRAY`_comptype{fieldtype#27}(`%%`_fieldtype{`mut?#727`, storagetype#491}(?(`MUT`_mut), zt))] +[visit_exp fieldtype#27] +[visit_id fieldtype#27] +[visit_exp (`%%`_fieldtype{`mut?#727`, storagetype#491}(?(`MUT`_mut), zt))] +[visit_exp `%%`_fieldtype{`mut?#727`, storagetype#491}(?(`MUT`_mut), zt)] +[visit_exp `mut?#727`] +[visit_id mut?#727] +[visit_exp storagetype#491] +[visit_id storagetype#491] +[visit_exp (?(`MUT`_mut), zt)] +[visit_exp ?(`MUT`_mut)] +[visit_exp `MUT`_mut] +[visit_exp ()] +[visit_exp zt] +[visit_id zt] not free +[check_dims] C X*#6687 X*#6736 heaptype#841 localidx*#863 null?#837 resulttype#1435 +[visit_exp C] +[visit_id C] +[visit_exp `ARRAY.LEN`_instr] +[visit_exp ()] +[visit_exp `%->_%%`_instrtype{resulttype#1435, `localidx*#863`}(`%`_resulttype{`X*#6687`}([`REF`_valtype{`null?#837`, heaptype#841}(?(`NULL`_null), `ARRAY`_heaptype)]), [], `%`_resulttype{`X*#6736`}([`I32`_valtype]))] +[visit_exp resulttype#1435] +[visit_id resulttype#1435] +[visit_exp `localidx*#863`] +[visit_id localidx*#863] +[visit_exp (`%`_resulttype{`X*#6687`}([`REF`_valtype{`null?#837`, heaptype#841}(?(`NULL`_null), `ARRAY`_heaptype)]), [], `%`_resulttype{`X*#6736`}([`I32`_valtype]))] +[visit_exp `%`_resulttype{`X*#6687`}([`REF`_valtype{`null?#837`, heaptype#841}(?(`NULL`_null), `ARRAY`_heaptype)])] +[visit_exp `X*#6687`] +[visit_id X*#6687] +[visit_exp ([`REF`_valtype{`null?#837`, heaptype#841}(?(`NULL`_null), `ARRAY`_heaptype)])] +[visit_exp [`REF`_valtype{`null?#837`, heaptype#841}(?(`NULL`_null), `ARRAY`_heaptype)]] +[visit_exp `REF`_valtype{`null?#837`, heaptype#841}(?(`NULL`_null), `ARRAY`_heaptype)] +[visit_exp `null?#837`] +[visit_id null?#837] +[visit_exp heaptype#841] +[visit_id heaptype#841] +[visit_exp (?(`NULL`_null), `ARRAY`_heaptype)] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp `ARRAY`_heaptype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#6736`}([`I32`_valtype])] +[visit_exp `X*#6736`] +[visit_id X*#6736] +[visit_exp ([`I32`_valtype])] +[visit_exp [`I32`_valtype]] +[visit_exp `I32`_valtype] +[visit_exp ()] +[check_dims] C X*#6757 X*#6806 deftype*#48 fieldtype#29 heaptype#843 i#6721 localidx*#875 mut?#739 null?#839 resulttype#1455 storagetype#503 typeidx#450 typeidx#452 x zt +[visit_exp C] +[visit_id C] +[visit_exp `ARRAY.FILL`_instr{typeidx#450}(x)] +[visit_exp typeidx#450] +[visit_id typeidx#450] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%->_%%`_instrtype{resulttype#1455, `localidx*#875`}(`%`_resulttype{`X*#6757`}([`REF`_valtype{`null?#839`, heaptype#843}(?(`NULL`_null), `_IDX`_heaptype{typeidx#452}(x)) `I32`_valtype $unpack(zt) `I32`_valtype]), [], `%`_resulttype{`X*#6806`}([]))] +[visit_exp resulttype#1455] +[visit_id resulttype#1455] +[visit_exp `localidx*#875`] +[visit_id localidx*#875] +[visit_exp (`%`_resulttype{`X*#6757`}([`REF`_valtype{`null?#839`, heaptype#843}(?(`NULL`_null), `_IDX`_heaptype{typeidx#452}(x)) `I32`_valtype $unpack(zt) `I32`_valtype]), [], `%`_resulttype{`X*#6806`}([]))] +[visit_exp `%`_resulttype{`X*#6757`}([`REF`_valtype{`null?#839`, heaptype#843}(?(`NULL`_null), `_IDX`_heaptype{typeidx#452}(x)) `I32`_valtype $unpack(zt) `I32`_valtype])] +[visit_exp `X*#6757`] +[visit_id X*#6757] +[visit_exp ([`REF`_valtype{`null?#839`, heaptype#843}(?(`NULL`_null), `_IDX`_heaptype{typeidx#452}(x)) `I32`_valtype $unpack(zt) `I32`_valtype])] +[visit_exp [`REF`_valtype{`null?#839`, heaptype#843}(?(`NULL`_null), `_IDX`_heaptype{typeidx#452}(x)) `I32`_valtype $unpack(zt) `I32`_valtype]] +[visit_exp `REF`_valtype{`null?#839`, heaptype#843}(?(`NULL`_null), `_IDX`_heaptype{typeidx#452}(x))] +[visit_exp `null?#839`] +[visit_id null?#839] +[visit_exp heaptype#843] +[visit_id heaptype#843] +[visit_exp (?(`NULL`_null), `_IDX`_heaptype{typeidx#452}(x))] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp `_IDX`_heaptype{typeidx#452}(x)] +[visit_exp typeidx#452] +[visit_id typeidx#452] +[visit_exp (x)] +[visit_exp x] +[visit_id x] not free +[visit_exp `I32`_valtype] +[visit_exp ()] +[visit_exp $unpack(zt)] +[visit_exp zt] +[visit_id zt] +[visit_exp `I32`_valtype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#6806`}([])] +[visit_exp `X*#6806`] +[visit_id X*#6806] +[visit_exp ([])] +[visit_exp []] +[visit_exp (C.`TYPES`_context{`deftype*#48`}[x!`%`_idx{i#6721}.0], `ARRAY`_comptype{fieldtype#29}(`%%`_fieldtype{`mut?#739`, storagetype#503}(?(`MUT`_mut), zt)))] +[visit_exp C.`TYPES`_context{`deftype*#48`}[x!`%`_idx{i#6721}.0]] +[visit_exp C.`TYPES`_context{`deftype*#48`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `deftype*#48`] +[visit_id deftype*#48] +[visit_exp x!`%`_idx{i#6721}.0] +[visit_exp x!`%`_idx{i#6721}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#6721] +[visit_id i#6721] +[visit_exp `ARRAY`_comptype{fieldtype#29}(`%%`_fieldtype{`mut?#739`, storagetype#503}(?(`MUT`_mut), zt))] +[visit_exp fieldtype#29] +[visit_id fieldtype#29] +[visit_exp (`%%`_fieldtype{`mut?#739`, storagetype#503}(?(`MUT`_mut), zt))] +[visit_exp `%%`_fieldtype{`mut?#739`, storagetype#503}(?(`MUT`_mut), zt)] +[visit_exp `mut?#739`] +[visit_id mut?#739] +[visit_exp storagetype#503] +[visit_id storagetype#503] +[visit_exp (?(`MUT`_mut), zt)] +[visit_exp ?(`MUT`_mut)] +[visit_exp `MUT`_mut] +[visit_exp ()] +[visit_exp zt] +[visit_id zt] not free +[check_dims] C X*#6827 X*#6876 deftype*#49 deftype*#50 fieldtype#31 fieldtype#33 heaptype#845 heaptype#847 i#6787 i#6797 localidx*#887 mut mut?#751 mut?#763 null?#841 null?#843 resulttype#1475 storagetype#515 storagetype#527 typeidx#454 typeidx#457 typeidx#459 x_1 x_2 zt_1 zt_2 +[visit_exp C] +[visit_id C] +[visit_exp `ARRAY.COPY`_instr{typeidx#454}(x_1, x_2)] +[visit_exp typeidx#454] +[visit_id typeidx#454] +[visit_exp (x_1, x_2)] +[visit_exp x_1] +[visit_id x_1] +[visit_exp x_2] +[visit_id x_2] +[visit_exp `%->_%%`_instrtype{resulttype#1475, `localidx*#887`}(`%`_resulttype{`X*#6827`}([`REF`_valtype{`null?#841`, heaptype#845}(?(`NULL`_null), `_IDX`_heaptype{typeidx#457}(x_1)) `I32`_valtype `REF`_valtype{`null?#843`, heaptype#847}(?(`NULL`_null), `_IDX`_heaptype{typeidx#459}(x_2)) `I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#6876`}([]))] +[visit_exp resulttype#1475] +[visit_id resulttype#1475] +[visit_exp `localidx*#887`] +[visit_id localidx*#887] +[visit_exp (`%`_resulttype{`X*#6827`}([`REF`_valtype{`null?#841`, heaptype#845}(?(`NULL`_null), `_IDX`_heaptype{typeidx#457}(x_1)) `I32`_valtype `REF`_valtype{`null?#843`, heaptype#847}(?(`NULL`_null), `_IDX`_heaptype{typeidx#459}(x_2)) `I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#6876`}([]))] +[visit_exp `%`_resulttype{`X*#6827`}([`REF`_valtype{`null?#841`, heaptype#845}(?(`NULL`_null), `_IDX`_heaptype{typeidx#457}(x_1)) `I32`_valtype `REF`_valtype{`null?#843`, heaptype#847}(?(`NULL`_null), `_IDX`_heaptype{typeidx#459}(x_2)) `I32`_valtype `I32`_valtype])] +[visit_exp `X*#6827`] +[visit_id X*#6827] +[visit_exp ([`REF`_valtype{`null?#841`, heaptype#845}(?(`NULL`_null), `_IDX`_heaptype{typeidx#457}(x_1)) `I32`_valtype `REF`_valtype{`null?#843`, heaptype#847}(?(`NULL`_null), `_IDX`_heaptype{typeidx#459}(x_2)) `I32`_valtype `I32`_valtype])] +[visit_exp [`REF`_valtype{`null?#841`, heaptype#845}(?(`NULL`_null), `_IDX`_heaptype{typeidx#457}(x_1)) `I32`_valtype `REF`_valtype{`null?#843`, heaptype#847}(?(`NULL`_null), `_IDX`_heaptype{typeidx#459}(x_2)) `I32`_valtype `I32`_valtype]] +[visit_exp `REF`_valtype{`null?#841`, heaptype#845}(?(`NULL`_null), `_IDX`_heaptype{typeidx#457}(x_1))] +[visit_exp `null?#841`] +[visit_id null?#841] +[visit_exp heaptype#845] +[visit_id heaptype#845] +[visit_exp (?(`NULL`_null), `_IDX`_heaptype{typeidx#457}(x_1))] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp `_IDX`_heaptype{typeidx#457}(x_1)] +[visit_exp typeidx#457] +[visit_id typeidx#457] +[visit_exp (x_1)] +[visit_exp x_1] +[visit_id x_1] not free +[visit_exp `I32`_valtype] +[visit_exp ()] +[visit_exp `REF`_valtype{`null?#843`, heaptype#847}(?(`NULL`_null), `_IDX`_heaptype{typeidx#459}(x_2))] +[visit_exp `null?#843`] +[visit_id null?#843] +[visit_exp heaptype#847] +[visit_id heaptype#847] +[visit_exp (?(`NULL`_null), `_IDX`_heaptype{typeidx#459}(x_2))] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp `_IDX`_heaptype{typeidx#459}(x_2)] +[visit_exp typeidx#459] +[visit_id typeidx#459] +[visit_exp (x_2)] +[visit_exp x_2] +[visit_id x_2] not free +[visit_exp `I32`_valtype] +[visit_exp ()] +[visit_exp `I32`_valtype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#6876`}([])] +[visit_exp `X*#6876`] +[visit_id X*#6876] +[visit_exp ([])] +[visit_exp []] +[visit_exp (C.`TYPES`_context{`deftype*#49`}[x_1!`%`_idx{i#6787}.0], `ARRAY`_comptype{fieldtype#31}(`%%`_fieldtype{`mut?#751`, storagetype#515}(?(`MUT`_mut), zt_1)))] +[visit_exp C.`TYPES`_context{`deftype*#49`}[x_1!`%`_idx{i#6787}.0]] +[visit_exp C.`TYPES`_context{`deftype*#49`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `deftype*#49`] +[visit_id deftype*#49] +[visit_exp x_1!`%`_idx{i#6787}.0] +[visit_exp x_1!`%`_idx{i#6787}] +[visit_exp x_1] +[visit_id x_1] not free +[visit_exp i#6787] +[visit_id i#6787] +[visit_exp `ARRAY`_comptype{fieldtype#31}(`%%`_fieldtype{`mut?#751`, storagetype#515}(?(`MUT`_mut), zt_1))] +[visit_exp fieldtype#31] +[visit_id fieldtype#31] +[visit_exp (`%%`_fieldtype{`mut?#751`, storagetype#515}(?(`MUT`_mut), zt_1))] +[visit_exp `%%`_fieldtype{`mut?#751`, storagetype#515}(?(`MUT`_mut), zt_1)] +[visit_exp `mut?#751`] +[visit_id mut?#751] +[visit_exp storagetype#515] +[visit_id storagetype#515] +[visit_exp (?(`MUT`_mut), zt_1)] +[visit_exp ?(`MUT`_mut)] +[visit_exp `MUT`_mut] +[visit_exp ()] +[visit_exp zt_1] +[visit_id zt_1] +[visit_exp (C.`TYPES`_context{`deftype*#50`}[x_2!`%`_idx{i#6797}.0], `ARRAY`_comptype{fieldtype#33}(`%%`_fieldtype{`mut?#763`, storagetype#527}(mut?{mut <- `mut?`}, zt_2)))] +[visit_exp C.`TYPES`_context{`deftype*#50`}[x_2!`%`_idx{i#6797}.0]] +[visit_exp C.`TYPES`_context{`deftype*#50`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `deftype*#50`] +[visit_id deftype*#50] +[visit_exp x_2!`%`_idx{i#6797}.0] +[visit_exp x_2!`%`_idx{i#6797}] +[visit_exp x_2] +[visit_id x_2] not free +[visit_exp i#6797] +[visit_id i#6797] +[visit_exp `ARRAY`_comptype{fieldtype#33}(`%%`_fieldtype{`mut?#763`, storagetype#527}(mut?{mut <- `mut?`}, zt_2))] +[visit_exp fieldtype#33] +[visit_id fieldtype#33] +[visit_exp (`%%`_fieldtype{`mut?#763`, storagetype#527}(mut?{mut <- `mut?`}, zt_2))] +[visit_exp `%%`_fieldtype{`mut?#763`, storagetype#527}(mut?{mut <- `mut?`}, zt_2)] +[visit_exp `mut?#763`] +[visit_id mut?#763] +[visit_exp storagetype#527] +[visit_id storagetype#527] +[visit_exp (mut?{mut <- `mut?`}, zt_2)] +[visit_exp mut?{mut <- `mut?`}] +[scope_enter mut] +[visit_exp mut] +[visit_id mut] not free +[visit_id mut] not free +[scope_exit mut] +[visit_exp `mut?`] +[visit_id mut?] no dims +[visit_id mut?] +[visit_exp zt_2] +[visit_id zt_2] +[visit_exp (C, zt_2, zt_1)] +[visit_exp C] +[visit_id C] not free +[visit_exp zt_2] +[visit_id zt_2] not free +[visit_exp zt_1] +[visit_id zt_1] not free +[check_dims] C X*#6897 X*#6946 deftype*#51 elemidx#11 elemtype*#8 fieldtype#35 heaptype#849 i#6849 i#6859 localidx*#899 mut?#775 null?#845 resulttype#1495 storagetype#539 typeidx#461 typeidx#463 x y zt +[visit_exp C] +[visit_id C] +[visit_exp `ARRAY.INIT_ELEM`_instr{typeidx#461, elemidx#11}(x, y)] +[visit_exp typeidx#461] +[visit_id typeidx#461] +[visit_exp elemidx#11] +[visit_id elemidx#11] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] +[visit_exp y] +[visit_id y] +[visit_exp `%->_%%`_instrtype{resulttype#1495, `localidx*#899`}(`%`_resulttype{`X*#6897`}([`REF`_valtype{`null?#845`, heaptype#849}(?(`NULL`_null), `_IDX`_heaptype{typeidx#463}(x)) `I32`_valtype `I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#6946`}([]))] +[visit_exp resulttype#1495] +[visit_id resulttype#1495] +[visit_exp `localidx*#899`] +[visit_id localidx*#899] +[visit_exp (`%`_resulttype{`X*#6897`}([`REF`_valtype{`null?#845`, heaptype#849}(?(`NULL`_null), `_IDX`_heaptype{typeidx#463}(x)) `I32`_valtype `I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#6946`}([]))] +[visit_exp `%`_resulttype{`X*#6897`}([`REF`_valtype{`null?#845`, heaptype#849}(?(`NULL`_null), `_IDX`_heaptype{typeidx#463}(x)) `I32`_valtype `I32`_valtype `I32`_valtype])] +[visit_exp `X*#6897`] +[visit_id X*#6897] +[visit_exp ([`REF`_valtype{`null?#845`, heaptype#849}(?(`NULL`_null), `_IDX`_heaptype{typeidx#463}(x)) `I32`_valtype `I32`_valtype `I32`_valtype])] +[visit_exp [`REF`_valtype{`null?#845`, heaptype#849}(?(`NULL`_null), `_IDX`_heaptype{typeidx#463}(x)) `I32`_valtype `I32`_valtype `I32`_valtype]] +[visit_exp `REF`_valtype{`null?#845`, heaptype#849}(?(`NULL`_null), `_IDX`_heaptype{typeidx#463}(x))] +[visit_exp `null?#845`] +[visit_id null?#845] +[visit_exp heaptype#849] +[visit_id heaptype#849] +[visit_exp (?(`NULL`_null), `_IDX`_heaptype{typeidx#463}(x))] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp `_IDX`_heaptype{typeidx#463}(x)] +[visit_exp typeidx#463] +[visit_id typeidx#463] +[visit_exp (x)] +[visit_exp x] +[visit_id x] not free +[visit_exp `I32`_valtype] +[visit_exp ()] +[visit_exp `I32`_valtype] +[visit_exp ()] +[visit_exp `I32`_valtype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#6946`}([])] +[visit_exp `X*#6946`] +[visit_id X*#6946] +[visit_exp ([])] +[visit_exp []] +[visit_exp (C.`TYPES`_context{`deftype*#51`}[x!`%`_idx{i#6849}.0], `ARRAY`_comptype{fieldtype#35}(`%%`_fieldtype{`mut?#775`, storagetype#539}(?(`MUT`_mut), zt)))] +[visit_exp C.`TYPES`_context{`deftype*#51`}[x!`%`_idx{i#6849}.0]] +[visit_exp C.`TYPES`_context{`deftype*#51`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `deftype*#51`] +[visit_id deftype*#51] +[visit_exp x!`%`_idx{i#6849}.0] +[visit_exp x!`%`_idx{i#6849}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#6849] +[visit_id i#6849] +[visit_exp `ARRAY`_comptype{fieldtype#35}(`%%`_fieldtype{`mut?#775`, storagetype#539}(?(`MUT`_mut), zt))] +[visit_exp fieldtype#35] +[visit_id fieldtype#35] +[visit_exp (`%%`_fieldtype{`mut?#775`, storagetype#539}(?(`MUT`_mut), zt))] +[visit_exp `%%`_fieldtype{`mut?#775`, storagetype#539}(?(`MUT`_mut), zt)] +[visit_exp `mut?#775`] +[visit_id mut?#775] +[visit_exp storagetype#539] +[visit_id storagetype#539] +[visit_exp (?(`MUT`_mut), zt)] +[visit_exp ?(`MUT`_mut)] +[visit_exp `MUT`_mut] +[visit_exp ()] +[visit_exp zt] +[visit_id zt] +[visit_exp (C, (C.`ELEMS`_context{`elemtype*#8`}[y!`%`_idx{i#6859}.0] : reftype <: storagetype), zt)] +[visit_exp C] +[visit_id C] not free +[visit_exp (C.`ELEMS`_context{`elemtype*#8`}[y!`%`_idx{i#6859}.0] : reftype <: storagetype)] +[visit_exp C.`ELEMS`_context{`elemtype*#8`}[y!`%`_idx{i#6859}.0]] +[visit_exp C.`ELEMS`_context{`elemtype*#8`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `elemtype*#8`] +[visit_id elemtype*#8] +[visit_exp y!`%`_idx{i#6859}.0] +[visit_exp y!`%`_idx{i#6859}] +[visit_exp y] +[visit_id y] not free +[visit_exp i#6859] +[visit_id i#6859] +[visit_exp zt] +[visit_id zt] not free +[check_dims] C X*#6967 X*#7016 dataidx#11 datatype*#8 deftype*#52 fieldtype#37 heaptype#851 i#6911 i#6921 localidx*#911 mut?#787 null?#847 numtype resulttype#1515 storagetype#551 typeidx#465 typeidx#467 vectype x y zt +[visit_exp C] +[visit_id C] +[visit_exp `ARRAY.INIT_DATA`_instr{typeidx#465, dataidx#11}(x, y)] +[visit_exp typeidx#465] +[visit_id typeidx#465] +[visit_exp dataidx#11] +[visit_id dataidx#11] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] +[visit_exp y] +[visit_id y] +[visit_exp `%->_%%`_instrtype{resulttype#1515, `localidx*#911`}(`%`_resulttype{`X*#6967`}([`REF`_valtype{`null?#847`, heaptype#851}(?(`NULL`_null), `_IDX`_heaptype{typeidx#467}(x)) `I32`_valtype `I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#7016`}([]))] +[visit_exp resulttype#1515] +[visit_id resulttype#1515] +[visit_exp `localidx*#911`] +[visit_id localidx*#911] +[visit_exp (`%`_resulttype{`X*#6967`}([`REF`_valtype{`null?#847`, heaptype#851}(?(`NULL`_null), `_IDX`_heaptype{typeidx#467}(x)) `I32`_valtype `I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#7016`}([]))] +[visit_exp `%`_resulttype{`X*#6967`}([`REF`_valtype{`null?#847`, heaptype#851}(?(`NULL`_null), `_IDX`_heaptype{typeidx#467}(x)) `I32`_valtype `I32`_valtype `I32`_valtype])] +[visit_exp `X*#6967`] +[visit_id X*#6967] +[visit_exp ([`REF`_valtype{`null?#847`, heaptype#851}(?(`NULL`_null), `_IDX`_heaptype{typeidx#467}(x)) `I32`_valtype `I32`_valtype `I32`_valtype])] +[visit_exp [`REF`_valtype{`null?#847`, heaptype#851}(?(`NULL`_null), `_IDX`_heaptype{typeidx#467}(x)) `I32`_valtype `I32`_valtype `I32`_valtype]] +[visit_exp `REF`_valtype{`null?#847`, heaptype#851}(?(`NULL`_null), `_IDX`_heaptype{typeidx#467}(x))] +[visit_exp `null?#847`] +[visit_id null?#847] +[visit_exp heaptype#851] +[visit_id heaptype#851] +[visit_exp (?(`NULL`_null), `_IDX`_heaptype{typeidx#467}(x))] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp `_IDX`_heaptype{typeidx#467}(x)] +[visit_exp typeidx#467] +[visit_id typeidx#467] +[visit_exp (x)] +[visit_exp x] +[visit_id x] not free +[visit_exp `I32`_valtype] +[visit_exp ()] +[visit_exp `I32`_valtype] +[visit_exp ()] +[visit_exp `I32`_valtype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#7016`}([])] +[visit_exp `X*#7016`] +[visit_id X*#7016] +[visit_exp ([])] +[visit_exp []] +[visit_exp (C.`TYPES`_context{`deftype*#52`}[x!`%`_idx{i#6911}.0], `ARRAY`_comptype{fieldtype#37}(`%%`_fieldtype{`mut?#787`, storagetype#551}(?(`MUT`_mut), zt)))] +[visit_exp C.`TYPES`_context{`deftype*#52`}[x!`%`_idx{i#6911}.0]] +[visit_exp C.`TYPES`_context{`deftype*#52`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `deftype*#52`] +[visit_id deftype*#52] +[visit_exp x!`%`_idx{i#6911}.0] +[visit_exp x!`%`_idx{i#6911}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#6911] +[visit_id i#6911] +[visit_exp `ARRAY`_comptype{fieldtype#37}(`%%`_fieldtype{`mut?#787`, storagetype#551}(?(`MUT`_mut), zt))] +[visit_exp fieldtype#37] +[visit_id fieldtype#37] +[visit_exp (`%%`_fieldtype{`mut?#787`, storagetype#551}(?(`MUT`_mut), zt))] +[visit_exp `%%`_fieldtype{`mut?#787`, storagetype#551}(?(`MUT`_mut), zt)] +[visit_exp `mut?#787`] +[visit_id mut?#787] +[visit_exp storagetype#551] +[visit_id storagetype#551] +[visit_exp (?(`MUT`_mut), zt)] +[visit_exp ?(`MUT`_mut)] +[visit_exp `MUT`_mut] +[visit_exp ()] +[visit_exp zt] +[visit_id zt] +[visit_exp (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype)))] +[visit_exp ($unpack(zt) = (numtype : numtype <: valtype))] +[visit_exp $unpack(zt)] +[visit_exp zt] +[visit_id zt] not free +[visit_exp (numtype : numtype <: valtype)] +[visit_exp numtype] +[visit_id numtype] +[visit_exp ($unpack(zt) = (vectype : vectype <: valtype))] +[visit_exp $unpack(zt)] +[visit_exp zt] +[visit_id zt] not free +[visit_exp (vectype : vectype <: valtype)] +[visit_exp vectype] +[visit_id vectype] +[visit_exp (C.`DATAS`_context{`datatype*#8`}[y!`%`_idx{i#6921}.0] = `OK`_datatype)] +[visit_exp C.`DATAS`_context{`datatype*#8`}[y!`%`_idx{i#6921}.0]] +[visit_exp C.`DATAS`_context{`datatype*#8`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `datatype*#8`] +[visit_id datatype*#8] +[visit_exp y!`%`_idx{i#6921}.0] +[visit_exp y!`%`_idx{i#6921}] +[visit_exp y] +[visit_id y] not free +[visit_exp i#6921] +[visit_id i#6921] +[visit_exp `OK`_datatype] +[visit_exp ()] +[check_dims] C X*#7037 X*#7086 heaptype#853 heaptype#855 localidx*#923 null?#849 null?#851 null_1 null_2 resulttype#1535 +[visit_exp C] +[visit_id C] +[visit_exp `EXTERN.CONVERT_ANY`_instr] +[visit_exp ()] +[visit_exp `%->_%%`_instrtype{resulttype#1535, `localidx*#923`}(`%`_resulttype{`X*#7037`}([`REF`_valtype{`null?#849`, heaptype#853}(null_1?{null_1 <- `null_1?`}, `ANY`_heaptype)]), [], `%`_resulttype{`X*#7086`}([`REF`_valtype{`null?#851`, heaptype#855}(null_2?{null_2 <- `null_2?`}, `EXTERN`_heaptype)]))] +[visit_exp resulttype#1535] +[visit_id resulttype#1535] +[visit_exp `localidx*#923`] +[visit_id localidx*#923] +[visit_exp (`%`_resulttype{`X*#7037`}([`REF`_valtype{`null?#849`, heaptype#853}(null_1?{null_1 <- `null_1?`}, `ANY`_heaptype)]), [], `%`_resulttype{`X*#7086`}([`REF`_valtype{`null?#851`, heaptype#855}(null_2?{null_2 <- `null_2?`}, `EXTERN`_heaptype)]))] +[visit_exp `%`_resulttype{`X*#7037`}([`REF`_valtype{`null?#849`, heaptype#853}(null_1?{null_1 <- `null_1?`}, `ANY`_heaptype)])] +[visit_exp `X*#7037`] +[visit_id X*#7037] +[visit_exp ([`REF`_valtype{`null?#849`, heaptype#853}(null_1?{null_1 <- `null_1?`}, `ANY`_heaptype)])] +[visit_exp [`REF`_valtype{`null?#849`, heaptype#853}(null_1?{null_1 <- `null_1?`}, `ANY`_heaptype)]] +[visit_exp `REF`_valtype{`null?#849`, heaptype#853}(null_1?{null_1 <- `null_1?`}, `ANY`_heaptype)] +[visit_exp `null?#849`] +[visit_id null?#849] +[visit_exp heaptype#853] +[visit_id heaptype#853] +[visit_exp (null_1?{null_1 <- `null_1?`}, `ANY`_heaptype)] +[visit_exp null_1?{null_1 <- `null_1?`}] +[scope_enter null_1] +[visit_exp null_1] +[visit_id null_1] not free +[visit_id null_1] not free +[scope_exit null_1] +[visit_exp `null_1?`] +[visit_id null_1?] no dims +[visit_id null_1?] +[visit_exp `ANY`_heaptype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#7086`}([`REF`_valtype{`null?#851`, heaptype#855}(null_2?{null_2 <- `null_2?`}, `EXTERN`_heaptype)])] +[visit_exp `X*#7086`] +[visit_id X*#7086] +[visit_exp ([`REF`_valtype{`null?#851`, heaptype#855}(null_2?{null_2 <- `null_2?`}, `EXTERN`_heaptype)])] +[visit_exp [`REF`_valtype{`null?#851`, heaptype#855}(null_2?{null_2 <- `null_2?`}, `EXTERN`_heaptype)]] +[visit_exp `REF`_valtype{`null?#851`, heaptype#855}(null_2?{null_2 <- `null_2?`}, `EXTERN`_heaptype)] +[visit_exp `null?#851`] +[visit_id null?#851] +[visit_exp heaptype#855] +[visit_id heaptype#855] +[visit_exp (null_2?{null_2 <- `null_2?`}, `EXTERN`_heaptype)] +[visit_exp null_2?{null_2 <- `null_2?`}] +[scope_enter null_2] +[visit_exp null_2] +[visit_id null_2] not free +[visit_id null_2] not free +[scope_exit null_2] +[visit_exp `null_2?`] +[visit_id null_2?] no dims +[visit_id null_2?] +[visit_exp `EXTERN`_heaptype] +[visit_exp ()] +[visit_exp (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`})] +[visit_exp null_1?{null_1 <- `null_1?`}] +[scope_enter null_1] +[visit_exp null_1] +[visit_id null_1] not free +[visit_id null_1] not free +[scope_exit null_1] +[visit_exp `null_1?`] +[visit_id null_1?] not free +[visit_id null_1?] no dims +[visit_exp null_2?{null_2 <- `null_2?`}] +[scope_enter null_2] +[visit_exp null_2] +[visit_id null_2] not free +[visit_id null_2] not free +[scope_exit null_2] +[visit_exp `null_2?`] +[visit_id null_2?] not free +[visit_id null_2?] no dims +[check_dims] C X*#7107 X*#7156 heaptype#857 heaptype#859 localidx*#935 null?#853 null?#855 null_1 null_2 resulttype#1555 +[visit_exp C] +[visit_id C] +[visit_exp `ANY.CONVERT_EXTERN`_instr] +[visit_exp ()] +[visit_exp `%->_%%`_instrtype{resulttype#1555, `localidx*#935`}(`%`_resulttype{`X*#7107`}([`REF`_valtype{`null?#853`, heaptype#857}(null_1?{null_1 <- `null_1?`}, `EXTERN`_heaptype)]), [], `%`_resulttype{`X*#7156`}([`REF`_valtype{`null?#855`, heaptype#859}(null_2?{null_2 <- `null_2?`}, `ANY`_heaptype)]))] +[visit_exp resulttype#1555] +[visit_id resulttype#1555] +[visit_exp `localidx*#935`] +[visit_id localidx*#935] +[visit_exp (`%`_resulttype{`X*#7107`}([`REF`_valtype{`null?#853`, heaptype#857}(null_1?{null_1 <- `null_1?`}, `EXTERN`_heaptype)]), [], `%`_resulttype{`X*#7156`}([`REF`_valtype{`null?#855`, heaptype#859}(null_2?{null_2 <- `null_2?`}, `ANY`_heaptype)]))] +[visit_exp `%`_resulttype{`X*#7107`}([`REF`_valtype{`null?#853`, heaptype#857}(null_1?{null_1 <- `null_1?`}, `EXTERN`_heaptype)])] +[visit_exp `X*#7107`] +[visit_id X*#7107] +[visit_exp ([`REF`_valtype{`null?#853`, heaptype#857}(null_1?{null_1 <- `null_1?`}, `EXTERN`_heaptype)])] +[visit_exp [`REF`_valtype{`null?#853`, heaptype#857}(null_1?{null_1 <- `null_1?`}, `EXTERN`_heaptype)]] +[visit_exp `REF`_valtype{`null?#853`, heaptype#857}(null_1?{null_1 <- `null_1?`}, `EXTERN`_heaptype)] +[visit_exp `null?#853`] +[visit_id null?#853] +[visit_exp heaptype#857] +[visit_id heaptype#857] +[visit_exp (null_1?{null_1 <- `null_1?`}, `EXTERN`_heaptype)] +[visit_exp null_1?{null_1 <- `null_1?`}] +[scope_enter null_1] +[visit_exp null_1] +[visit_id null_1] not free +[visit_id null_1] not free +[scope_exit null_1] +[visit_exp `null_1?`] +[visit_id null_1?] no dims +[visit_id null_1?] +[visit_exp `EXTERN`_heaptype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#7156`}([`REF`_valtype{`null?#855`, heaptype#859}(null_2?{null_2 <- `null_2?`}, `ANY`_heaptype)])] +[visit_exp `X*#7156`] +[visit_id X*#7156] +[visit_exp ([`REF`_valtype{`null?#855`, heaptype#859}(null_2?{null_2 <- `null_2?`}, `ANY`_heaptype)])] +[visit_exp [`REF`_valtype{`null?#855`, heaptype#859}(null_2?{null_2 <- `null_2?`}, `ANY`_heaptype)]] +[visit_exp `REF`_valtype{`null?#855`, heaptype#859}(null_2?{null_2 <- `null_2?`}, `ANY`_heaptype)] +[visit_exp `null?#855`] +[visit_id null?#855] +[visit_exp heaptype#859] +[visit_id heaptype#859] +[visit_exp (null_2?{null_2 <- `null_2?`}, `ANY`_heaptype)] +[visit_exp null_2?{null_2 <- `null_2?`}] +[scope_enter null_2] +[visit_exp null_2] +[visit_id null_2] not free +[visit_id null_2] not free +[scope_exit null_2] +[visit_exp `null_2?`] +[visit_id null_2?] no dims +[visit_id null_2?] +[visit_exp `ANY`_heaptype] +[visit_exp ()] +[visit_exp (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`})] +[visit_exp null_1?{null_1 <- `null_1?`}] +[scope_enter null_1] +[visit_exp null_1] +[visit_id null_1] not free +[visit_id null_1] not free +[scope_exit null_1] +[visit_exp `null_1?`] +[visit_id null_1?] not free +[visit_id null_1?] no dims +[visit_exp null_2?{null_2 <- `null_2?`}] +[scope_enter null_2] +[visit_exp null_2] +[visit_id null_2] not free +[visit_id null_2] not free +[scope_exit null_2] +[visit_exp `null_2?`] +[visit_id null_2?] not free +[visit_id null_2?] no dims +[check_dims] C X*#7177 X*#7226 i#6945 init#77 localidx#7 localidx*#947 localtype*#10 resulttype#1575 t valtype#343 x +[visit_exp C] +[visit_id C] +[visit_exp `LOCAL.GET`_instr{localidx#7}(x)] +[visit_exp localidx#7] +[visit_id localidx#7] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%->_%%`_instrtype{resulttype#1575, `localidx*#947`}(`%`_resulttype{`X*#7177`}([]), [], `%`_resulttype{`X*#7226`}([t]))] +[visit_exp resulttype#1575] +[visit_id resulttype#1575] +[visit_exp `localidx*#947`] +[visit_id localidx*#947] +[visit_exp (`%`_resulttype{`X*#7177`}([]), [], `%`_resulttype{`X*#7226`}([t]))] +[visit_exp `%`_resulttype{`X*#7177`}([])] +[visit_exp `X*#7177`] +[visit_id X*#7177] +[visit_exp ([])] +[visit_exp []] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#7226`}([t])] +[visit_exp `X*#7226`] +[visit_id X*#7226] +[visit_exp ([t])] +[visit_exp [t]] +[visit_exp t] +[visit_id t] +[visit_exp (C.`LOCALS`_context{`localtype*#10`}[x!`%`_idx{i#6945}.0] = `%%`_localtype{init#77, valtype#343}(`SET`_init, t))] +[visit_exp C.`LOCALS`_context{`localtype*#10`}[x!`%`_idx{i#6945}.0]] +[visit_exp C.`LOCALS`_context{`localtype*#10`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `localtype*#10`] +[visit_id localtype*#10] +[visit_exp x!`%`_idx{i#6945}.0] +[visit_exp x!`%`_idx{i#6945}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#6945] +[visit_id i#6945] +[visit_exp `%%`_localtype{init#77, valtype#343}(`SET`_init, t)] +[visit_exp init#77] +[visit_id init#77] +[visit_exp valtype#343] +[visit_id valtype#343] +[visit_exp (`SET`_init, t)] +[visit_exp `SET`_init] +[visit_exp ()] +[visit_exp t] +[visit_id t] not free +[check_dims] C X*#7237 X*#7334 i#7182 init init#89 localidx#9 localidx*#959 localtype*#11 resulttype#1595 t valtype#355 x +[visit_exp C] +[visit_id C] +[visit_exp `LOCAL.SET`_instr{localidx#9}(x)] +[visit_exp localidx#9] +[visit_id localidx#9] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%->_%%`_instrtype{resulttype#1595, `localidx*#959`}(`%`_resulttype{`X*#7237`}([t]), [x], `%`_resulttype{`X*#7334`}([]))] +[visit_exp resulttype#1595] +[visit_id resulttype#1595] +[visit_exp `localidx*#959`] +[visit_id localidx*#959] +[visit_exp (`%`_resulttype{`X*#7237`}([t]), [x], `%`_resulttype{`X*#7334`}([]))] +[visit_exp `%`_resulttype{`X*#7237`}([t])] +[visit_exp `X*#7237`] +[visit_id X*#7237] +[visit_exp ([t])] +[visit_exp [t]] +[visit_exp t] +[visit_id t] +[visit_exp [x]] +[visit_exp x] +[visit_id x] not free +[visit_exp `%`_resulttype{`X*#7334`}([])] +[visit_exp `X*#7334`] +[visit_id X*#7334] +[visit_exp ([])] +[visit_exp []] +[visit_exp (C.`LOCALS`_context{`localtype*#11`}[x!`%`_idx{i#7182}.0] = `%%`_localtype{init#89, valtype#355}(init, t))] +[visit_exp C.`LOCALS`_context{`localtype*#11`}[x!`%`_idx{i#7182}.0]] +[visit_exp C.`LOCALS`_context{`localtype*#11`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `localtype*#11`] +[visit_id localtype*#11] +[visit_exp x!`%`_idx{i#7182}.0] +[visit_exp x!`%`_idx{i#7182}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#7182] +[visit_id i#7182] +[visit_exp `%%`_localtype{init#89, valtype#355}(init, t)] +[visit_exp init#89] +[visit_id init#89] +[visit_exp valtype#355] +[visit_id valtype#355] +[visit_exp (init, t)] +[visit_exp init] +[visit_id init] +[visit_exp t] +[visit_id t] not free +[check_dims] C X*#7345 X*#7432 i#7419 init init#101 localidx#11 localidx*#971 localtype*#12 resulttype#1615 t valtype#367 x +[visit_exp C] +[visit_id C] +[visit_exp `LOCAL.TEE`_instr{localidx#11}(x)] +[visit_exp localidx#11] +[visit_id localidx#11] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%->_%%`_instrtype{resulttype#1615, `localidx*#971`}(`%`_resulttype{`X*#7345`}([t]), [x], `%`_resulttype{`X*#7432`}([t]))] +[visit_exp resulttype#1615] +[visit_id resulttype#1615] +[visit_exp `localidx*#971`] +[visit_id localidx*#971] +[visit_exp (`%`_resulttype{`X*#7345`}([t]), [x], `%`_resulttype{`X*#7432`}([t]))] +[visit_exp `%`_resulttype{`X*#7345`}([t])] +[visit_exp `X*#7345`] +[visit_id X*#7345] +[visit_exp ([t])] +[visit_exp [t]] +[visit_exp t] +[visit_id t] +[visit_exp [x]] +[visit_exp x] +[visit_id x] not free +[visit_exp `%`_resulttype{`X*#7432`}([t])] +[visit_exp `X*#7432`] +[visit_id X*#7432] +[visit_exp ([t])] +[visit_exp [t]] +[visit_exp t] +[visit_id t] not free +[visit_exp (C.`LOCALS`_context{`localtype*#12`}[x!`%`_idx{i#7419}.0] = `%%`_localtype{init#101, valtype#367}(init, t))] +[visit_exp C.`LOCALS`_context{`localtype*#12`}[x!`%`_idx{i#7419}.0]] +[visit_exp C.`LOCALS`_context{`localtype*#12`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `localtype*#12`] +[visit_id localtype*#12] +[visit_exp x!`%`_idx{i#7419}.0] +[visit_exp x!`%`_idx{i#7419}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#7419] +[visit_id i#7419] +[visit_exp `%%`_localtype{init#101, valtype#367}(init, t)] +[visit_exp init#101] +[visit_id init#101] +[visit_exp valtype#367] +[visit_id valtype#367] +[visit_exp (init, t)] +[visit_exp init] +[visit_id init] +[visit_exp t] +[visit_id t] not free +[check_dims] C X*#7472 X*#7521 globalidx#9 globaltype*#7 i#7443 localidx*#983 mut mut?#799 resulttype#1635 t valtype#379 x +[visit_exp C] +[visit_id C] +[visit_exp `GLOBAL.GET`_instr{globalidx#9}(x)] +[visit_exp globalidx#9] +[visit_id globalidx#9] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%->_%%`_instrtype{resulttype#1635, `localidx*#983`}(`%`_resulttype{`X*#7472`}([]), [], `%`_resulttype{`X*#7521`}([t]))] +[visit_exp resulttype#1635] +[visit_id resulttype#1635] +[visit_exp `localidx*#983`] +[visit_id localidx*#983] +[visit_exp (`%`_resulttype{`X*#7472`}([]), [], `%`_resulttype{`X*#7521`}([t]))] +[visit_exp `%`_resulttype{`X*#7472`}([])] +[visit_exp `X*#7472`] +[visit_id X*#7472] +[visit_exp ([])] +[visit_exp []] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#7521`}([t])] +[visit_exp `X*#7521`] +[visit_id X*#7521] +[visit_exp ([t])] +[visit_exp [t]] +[visit_exp t] +[visit_id t] +[visit_exp (C.`GLOBALS`_context{`globaltype*#7`}[x!`%`_idx{i#7443}.0] = `%%`_globaltype{`mut?#799`, valtype#379}(mut?{mut <- `mut?`}, t))] +[visit_exp C.`GLOBALS`_context{`globaltype*#7`}[x!`%`_idx{i#7443}.0]] +[visit_exp C.`GLOBALS`_context{`globaltype*#7`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `globaltype*#7`] +[visit_id globaltype*#7] +[visit_exp x!`%`_idx{i#7443}.0] +[visit_exp x!`%`_idx{i#7443}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#7443] +[visit_id i#7443] +[visit_exp `%%`_globaltype{`mut?#799`, valtype#379}(mut?{mut <- `mut?`}, t)] +[visit_exp `mut?#799`] +[visit_id mut?#799] +[visit_exp valtype#379] +[visit_id valtype#379] +[visit_exp (mut?{mut <- `mut?`}, t)] +[visit_exp mut?{mut <- `mut?`}] +[scope_enter mut] +[visit_exp mut] +[visit_id mut] not free +[visit_id mut] not free +[scope_exit mut] +[visit_exp `mut?`] +[visit_id mut?] no dims +[visit_id mut?] +[visit_exp t] +[visit_id t] not free +[check_dims] C X*#7532 X*#7600 globalidx#11 globaltype*#8 i#7467 localidx*#995 mut?#811 resulttype#1655 t valtype#391 x +[visit_exp C] +[visit_id C] +[visit_exp `GLOBAL.SET`_instr{globalidx#11}(x)] +[visit_exp globalidx#11] +[visit_id globalidx#11] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%->_%%`_instrtype{resulttype#1655, `localidx*#995`}(`%`_resulttype{`X*#7532`}([t]), [], `%`_resulttype{`X*#7600`}([]))] +[visit_exp resulttype#1655] +[visit_id resulttype#1655] +[visit_exp `localidx*#995`] +[visit_id localidx*#995] +[visit_exp (`%`_resulttype{`X*#7532`}([t]), [], `%`_resulttype{`X*#7600`}([]))] +[visit_exp `%`_resulttype{`X*#7532`}([t])] +[visit_exp `X*#7532`] +[visit_id X*#7532] +[visit_exp ([t])] +[visit_exp [t]] +[visit_exp t] +[visit_id t] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#7600`}([])] +[visit_exp `X*#7600`] +[visit_id X*#7600] +[visit_exp ([])] +[visit_exp []] +[visit_exp (C.`GLOBALS`_context{`globaltype*#8`}[x!`%`_idx{i#7467}.0] = `%%`_globaltype{`mut?#811`, valtype#391}(?(`MUT`_mut), t))] +[visit_exp C.`GLOBALS`_context{`globaltype*#8`}[x!`%`_idx{i#7467}.0]] +[visit_exp C.`GLOBALS`_context{`globaltype*#8`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `globaltype*#8`] +[visit_id globaltype*#8] +[visit_exp x!`%`_idx{i#7467}.0] +[visit_exp x!`%`_idx{i#7467}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#7467] +[visit_id i#7467] +[visit_exp `%%`_globaltype{`mut?#811`, valtype#391}(?(`MUT`_mut), t)] +[visit_exp `mut?#811`] +[visit_id mut?#811] +[visit_exp valtype#391] +[visit_id valtype#391] +[visit_exp (?(`MUT`_mut), t)] +[visit_exp ?(`MUT`_mut)] +[visit_exp `MUT`_mut] +[visit_exp ()] +[visit_exp t] +[visit_id t] not free +[check_dims] C X*#7611 X*#7679 addrtype#465 at i#7491 lim limits#465 localidx*#1007 reftype#417 resulttype#1675 rt tableidx#30 tabletype*#9 x +[visit_exp C] +[visit_id C] +[visit_exp `TABLE.GET`_instr{tableidx#30}(x)] +[visit_exp tableidx#30] +[visit_id tableidx#30] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%->_%%`_instrtype{resulttype#1675, `localidx*#1007`}(`%`_resulttype{`X*#7611`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#7679`}([(rt : reftype <: valtype)]))] +[visit_exp resulttype#1675] +[visit_id resulttype#1675] +[visit_exp `localidx*#1007`] +[visit_id localidx*#1007] +[visit_exp (`%`_resulttype{`X*#7611`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#7679`}([(rt : reftype <: valtype)]))] +[visit_exp `%`_resulttype{`X*#7611`}([(at : addrtype <: valtype)])] +[visit_exp `X*#7611`] +[visit_id X*#7611] +[visit_exp ([(at : addrtype <: valtype)])] +[visit_exp [(at : addrtype <: valtype)]] +[visit_exp (at : addrtype <: valtype)] +[visit_exp at] +[visit_id at] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#7679`}([(rt : reftype <: valtype)])] +[visit_exp `X*#7679`] +[visit_id X*#7679] +[visit_exp ([(rt : reftype <: valtype)])] +[visit_exp [(rt : reftype <: valtype)]] +[visit_exp (rt : reftype <: valtype)] +[visit_exp rt] +[visit_id rt] +[visit_exp (C.`TABLES`_context{`tabletype*#9`}[x!`%`_idx{i#7491}.0] = `%%%`_tabletype{addrtype#465, limits#465, reftype#417}(at, lim, rt))] +[visit_exp C.`TABLES`_context{`tabletype*#9`}[x!`%`_idx{i#7491}.0]] +[visit_exp C.`TABLES`_context{`tabletype*#9`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `tabletype*#9`] +[visit_id tabletype*#9] +[visit_exp x!`%`_idx{i#7491}.0] +[visit_exp x!`%`_idx{i#7491}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#7491] +[visit_id i#7491] +[visit_exp `%%%`_tabletype{addrtype#465, limits#465, reftype#417}(at, lim, rt)] +[visit_exp addrtype#465] +[visit_id addrtype#465] +[visit_exp limits#465] +[visit_id limits#465] +[visit_exp reftype#417] +[visit_id reftype#417] +[visit_exp (at, lim, rt)] +[visit_exp at] +[visit_id at] not free +[visit_exp lim] +[visit_id lim] +[visit_exp rt] +[visit_id rt] not free +[check_dims] C X*#7700 X*#7749 addrtype#477 at i#7515 lim limits#477 localidx*#1019 reftype#429 resulttype#1695 rt tableidx#32 tabletype*#10 x +[visit_exp C] +[visit_id C] +[visit_exp `TABLE.SET`_instr{tableidx#32}(x)] +[visit_exp tableidx#32] +[visit_id tableidx#32] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%->_%%`_instrtype{resulttype#1695, `localidx*#1019`}(`%`_resulttype{`X*#7700`}([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype{`X*#7749`}([]))] +[visit_exp resulttype#1695] +[visit_id resulttype#1695] +[visit_exp `localidx*#1019`] +[visit_id localidx*#1019] +[visit_exp (`%`_resulttype{`X*#7700`}([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype{`X*#7749`}([]))] +[visit_exp `%`_resulttype{`X*#7700`}([(at : addrtype <: valtype) (rt : reftype <: valtype)])] +[visit_exp `X*#7700`] +[visit_id X*#7700] +[visit_exp ([(at : addrtype <: valtype) (rt : reftype <: valtype)])] +[visit_exp [(at : addrtype <: valtype) (rt : reftype <: valtype)]] +[visit_exp (at : addrtype <: valtype)] +[visit_exp at] +[visit_id at] +[visit_exp (rt : reftype <: valtype)] +[visit_exp rt] +[visit_id rt] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#7749`}([])] +[visit_exp `X*#7749`] +[visit_id X*#7749] +[visit_exp ([])] +[visit_exp []] +[visit_exp (C.`TABLES`_context{`tabletype*#10`}[x!`%`_idx{i#7515}.0] = `%%%`_tabletype{addrtype#477, limits#477, reftype#429}(at, lim, rt))] +[visit_exp C.`TABLES`_context{`tabletype*#10`}[x!`%`_idx{i#7515}.0]] +[visit_exp C.`TABLES`_context{`tabletype*#10`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `tabletype*#10`] +[visit_id tabletype*#10] +[visit_exp x!`%`_idx{i#7515}.0] +[visit_exp x!`%`_idx{i#7515}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#7515] +[visit_id i#7515] +[visit_exp `%%%`_tabletype{addrtype#477, limits#477, reftype#429}(at, lim, rt)] +[visit_exp addrtype#477] +[visit_id addrtype#477] +[visit_exp limits#477] +[visit_id limits#477] +[visit_exp reftype#429] +[visit_id reftype#429] +[visit_exp (at, lim, rt)] +[visit_exp at] +[visit_id at] not free +[visit_exp lim] +[visit_id lim] +[visit_exp rt] +[visit_id rt] not free +[check_dims] C X*#7770 X*#7819 addrtype#489 at i#7539 lim limits#489 localidx*#1031 reftype#441 resulttype#1715 rt tableidx#34 tabletype*#11 x +[visit_exp C] +[visit_id C] +[visit_exp `TABLE.SIZE`_instr{tableidx#34}(x)] +[visit_exp tableidx#34] +[visit_id tableidx#34] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%->_%%`_instrtype{resulttype#1715, `localidx*#1031`}(`%`_resulttype{`X*#7770`}([]), [], `%`_resulttype{`X*#7819`}([(at : addrtype <: valtype)]))] +[visit_exp resulttype#1715] +[visit_id resulttype#1715] +[visit_exp `localidx*#1031`] +[visit_id localidx*#1031] +[visit_exp (`%`_resulttype{`X*#7770`}([]), [], `%`_resulttype{`X*#7819`}([(at : addrtype <: valtype)]))] +[visit_exp `%`_resulttype{`X*#7770`}([])] +[visit_exp `X*#7770`] +[visit_id X*#7770] +[visit_exp ([])] +[visit_exp []] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#7819`}([(at : addrtype <: valtype)])] +[visit_exp `X*#7819`] +[visit_id X*#7819] +[visit_exp ([(at : addrtype <: valtype)])] +[visit_exp [(at : addrtype <: valtype)]] +[visit_exp (at : addrtype <: valtype)] +[visit_exp at] +[visit_id at] +[visit_exp (C.`TABLES`_context{`tabletype*#11`}[x!`%`_idx{i#7539}.0] = `%%%`_tabletype{addrtype#489, limits#489, reftype#441}(at, lim, rt))] +[visit_exp C.`TABLES`_context{`tabletype*#11`}[x!`%`_idx{i#7539}.0]] +[visit_exp C.`TABLES`_context{`tabletype*#11`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `tabletype*#11`] +[visit_id tabletype*#11] +[visit_exp x!`%`_idx{i#7539}.0] +[visit_exp x!`%`_idx{i#7539}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#7539] +[visit_id i#7539] +[visit_exp `%%%`_tabletype{addrtype#489, limits#489, reftype#441}(at, lim, rt)] +[visit_exp addrtype#489] +[visit_id addrtype#489] +[visit_exp limits#489] +[visit_id limits#489] +[visit_exp reftype#441] +[visit_id reftype#441] +[visit_exp (at, lim, rt)] +[visit_exp at] +[visit_id at] not free +[visit_exp lim] +[visit_id lim] +[visit_exp rt] +[visit_id rt] +[check_dims] C X*#7840 X*#7889 addrtype#501 at i#7563 lim limits#501 localidx*#1043 reftype#453 resulttype#1735 rt tableidx#36 tabletype*#12 x +[visit_exp C] +[visit_id C] +[visit_exp `TABLE.GROW`_instr{tableidx#36}(x)] +[visit_exp tableidx#36] +[visit_id tableidx#36] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%->_%%`_instrtype{resulttype#1735, `localidx*#1043`}(`%`_resulttype{`X*#7840`}([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype{`X*#7889`}([`I32`_valtype]))] +[visit_exp resulttype#1735] +[visit_id resulttype#1735] +[visit_exp `localidx*#1043`] +[visit_id localidx*#1043] +[visit_exp (`%`_resulttype{`X*#7840`}([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype{`X*#7889`}([`I32`_valtype]))] +[visit_exp `%`_resulttype{`X*#7840`}([(rt : reftype <: valtype) (at : addrtype <: valtype)])] +[visit_exp `X*#7840`] +[visit_id X*#7840] +[visit_exp ([(rt : reftype <: valtype) (at : addrtype <: valtype)])] +[visit_exp [(rt : reftype <: valtype) (at : addrtype <: valtype)]] +[visit_exp (rt : reftype <: valtype)] +[visit_exp rt] +[visit_id rt] +[visit_exp (at : addrtype <: valtype)] +[visit_exp at] +[visit_id at] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#7889`}([`I32`_valtype])] +[visit_exp `X*#7889`] +[visit_id X*#7889] +[visit_exp ([`I32`_valtype])] +[visit_exp [`I32`_valtype]] +[visit_exp `I32`_valtype] +[visit_exp ()] +[visit_exp (C.`TABLES`_context{`tabletype*#12`}[x!`%`_idx{i#7563}.0] = `%%%`_tabletype{addrtype#501, limits#501, reftype#453}(at, lim, rt))] +[visit_exp C.`TABLES`_context{`tabletype*#12`}[x!`%`_idx{i#7563}.0]] +[visit_exp C.`TABLES`_context{`tabletype*#12`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `tabletype*#12`] +[visit_id tabletype*#12] +[visit_exp x!`%`_idx{i#7563}.0] +[visit_exp x!`%`_idx{i#7563}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#7563] +[visit_id i#7563] +[visit_exp `%%%`_tabletype{addrtype#501, limits#501, reftype#453}(at, lim, rt)] +[visit_exp addrtype#501] +[visit_id addrtype#501] +[visit_exp limits#501] +[visit_id limits#501] +[visit_exp reftype#453] +[visit_id reftype#453] +[visit_exp (at, lim, rt)] +[visit_exp at] +[visit_id at] not free +[visit_exp lim] +[visit_id lim] +[visit_exp rt] +[visit_id rt] not free +[check_dims] C X*#7910 X*#7959 addrtype#513 at i#7587 lim limits#513 localidx*#1055 reftype#465 resulttype#1755 rt tableidx#38 tabletype*#13 x +[visit_exp C] +[visit_id C] +[visit_exp `TABLE.FILL`_instr{tableidx#38}(x)] +[visit_exp tableidx#38] +[visit_id tableidx#38] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%->_%%`_instrtype{resulttype#1755, `localidx*#1055`}(`%`_resulttype{`X*#7910`}([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype{`X*#7959`}([]))] +[visit_exp resulttype#1755] +[visit_id resulttype#1755] +[visit_exp `localidx*#1055`] +[visit_id localidx*#1055] +[visit_exp (`%`_resulttype{`X*#7910`}([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype{`X*#7959`}([]))] +[visit_exp `%`_resulttype{`X*#7910`}([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)])] +[visit_exp `X*#7910`] +[visit_id X*#7910] +[visit_exp ([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)])] +[visit_exp [(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]] +[visit_exp (at : addrtype <: valtype)] +[visit_exp at] +[visit_id at] +[visit_exp (rt : reftype <: valtype)] +[visit_exp rt] +[visit_id rt] +[visit_exp (at : addrtype <: valtype)] +[visit_exp at] +[visit_id at] not free +[visit_exp []] +[visit_exp `%`_resulttype{`X*#7959`}([])] +[visit_exp `X*#7959`] +[visit_id X*#7959] +[visit_exp ([])] +[visit_exp []] +[visit_exp (C.`TABLES`_context{`tabletype*#13`}[x!`%`_idx{i#7587}.0] = `%%%`_tabletype{addrtype#513, limits#513, reftype#465}(at, lim, rt))] +[visit_exp C.`TABLES`_context{`tabletype*#13`}[x!`%`_idx{i#7587}.0]] +[visit_exp C.`TABLES`_context{`tabletype*#13`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `tabletype*#13`] +[visit_id tabletype*#13] +[visit_exp x!`%`_idx{i#7587}.0] +[visit_exp x!`%`_idx{i#7587}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#7587] +[visit_id i#7587] +[visit_exp `%%%`_tabletype{addrtype#513, limits#513, reftype#465}(at, lim, rt)] +[visit_exp addrtype#513] +[visit_id addrtype#513] +[visit_exp limits#513] +[visit_id limits#513] +[visit_exp reftype#465] +[visit_id reftype#465] +[visit_exp (at, lim, rt)] +[visit_exp at] +[visit_id at] not free +[visit_exp lim] +[visit_id lim] +[visit_exp rt] +[visit_id rt] not free +[check_dims] C X*#7980 X*#8029 addrtype#525 addrtype#537 at_1 at_2 i#7625 i#7635 lim_1 lim_2 limits#525 limits#537 localidx*#1067 reftype#477 reftype#489 resulttype#1775 rt_1 rt_2 tableidx#40 tabletype*#14 tabletype*#15 x_1 x_2 +[visit_exp C] +[visit_id C] +[visit_exp `TABLE.COPY`_instr{tableidx#40}(x_1, x_2)] +[visit_exp tableidx#40] +[visit_id tableidx#40] +[visit_exp (x_1, x_2)] +[visit_exp x_1] +[visit_id x_1] +[visit_exp x_2] +[visit_id x_2] +[visit_exp `%->_%%`_instrtype{resulttype#1775, `localidx*#1067`}(`%`_resulttype{`X*#7980`}([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype{`X*#8029`}([]))] +[visit_exp resulttype#1775] +[visit_id resulttype#1775] +[visit_exp `localidx*#1067`] +[visit_id localidx*#1067] +[visit_exp (`%`_resulttype{`X*#7980`}([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype{`X*#8029`}([]))] +[visit_exp `%`_resulttype{`X*#7980`}([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)])] +[visit_exp `X*#7980`] +[visit_id X*#7980] +[visit_exp ([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)])] +[visit_exp [(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]] +[visit_exp (at_1 : addrtype <: valtype)] +[visit_exp at_1] +[visit_id at_1] +[visit_exp (at_2 : addrtype <: valtype)] +[visit_exp at_2] +[visit_id at_2] +[visit_exp ($minat(at_1, at_2) : addrtype <: valtype)] +[visit_exp $minat(at_1, at_2)] +[visit_exp at_1] +[visit_id at_1] not free +[visit_exp at_2] +[visit_id at_2] not free +[visit_exp []] +[visit_exp `%`_resulttype{`X*#8029`}([])] +[visit_exp `X*#8029`] +[visit_id X*#8029] +[visit_exp ([])] +[visit_exp []] +[visit_exp (C.`TABLES`_context{`tabletype*#14`}[x_1!`%`_idx{i#7625}.0] = `%%%`_tabletype{addrtype#525, limits#525, reftype#477}(at_1, lim_1, rt_1))] +[visit_exp C.`TABLES`_context{`tabletype*#14`}[x_1!`%`_idx{i#7625}.0]] +[visit_exp C.`TABLES`_context{`tabletype*#14`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `tabletype*#14`] +[visit_id tabletype*#14] +[visit_exp x_1!`%`_idx{i#7625}.0] +[visit_exp x_1!`%`_idx{i#7625}] +[visit_exp x_1] +[visit_id x_1] not free +[visit_exp i#7625] +[visit_id i#7625] +[visit_exp `%%%`_tabletype{addrtype#525, limits#525, reftype#477}(at_1, lim_1, rt_1)] +[visit_exp addrtype#525] +[visit_id addrtype#525] +[visit_exp limits#525] +[visit_id limits#525] +[visit_exp reftype#477] +[visit_id reftype#477] +[visit_exp (at_1, lim_1, rt_1)] +[visit_exp at_1] +[visit_id at_1] not free +[visit_exp lim_1] +[visit_id lim_1] +[visit_exp rt_1] +[visit_id rt_1] +[visit_exp (C.`TABLES`_context{`tabletype*#15`}[x_2!`%`_idx{i#7635}.0] = `%%%`_tabletype{addrtype#537, limits#537, reftype#489}(at_2, lim_2, rt_2))] +[visit_exp C.`TABLES`_context{`tabletype*#15`}[x_2!`%`_idx{i#7635}.0]] +[visit_exp C.`TABLES`_context{`tabletype*#15`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `tabletype*#15`] +[visit_id tabletype*#15] +[visit_exp x_2!`%`_idx{i#7635}.0] +[visit_exp x_2!`%`_idx{i#7635}] +[visit_exp x_2] +[visit_id x_2] not free +[visit_exp i#7635] +[visit_id i#7635] +[visit_exp `%%%`_tabletype{addrtype#537, limits#537, reftype#489}(at_2, lim_2, rt_2)] +[visit_exp addrtype#537] +[visit_id addrtype#537] +[visit_exp limits#537] +[visit_id limits#537] +[visit_exp reftype#489] +[visit_id reftype#489] +[visit_exp (at_2, lim_2, rt_2)] +[visit_exp at_2] +[visit_id at_2] not free +[visit_exp lim_2] +[visit_id lim_2] +[visit_exp rt_2] +[visit_id rt_2] +[visit_exp (C, rt_2, rt_1)] +[visit_exp C] +[visit_id C] not free +[visit_exp rt_2] +[visit_id rt_2] not free +[visit_exp rt_1] +[visit_id rt_1] not free +[check_dims] C X*#8050 X*#8099 addrtype#549 at elemidx#13 elemtype*#9 i#7673 i#7683 lim limits#549 localidx*#1079 reftype#501 resulttype#1795 rt_1 rt_2 tableidx#43 tabletype*#16 x y +[visit_exp C] +[visit_id C] +[visit_exp `TABLE.INIT`_instr{tableidx#43, elemidx#13}(x, y)] +[visit_exp tableidx#43] +[visit_id tableidx#43] +[visit_exp elemidx#13] +[visit_id elemidx#13] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] +[visit_exp y] +[visit_id y] +[visit_exp `%->_%%`_instrtype{resulttype#1795, `localidx*#1079`}(`%`_resulttype{`X*#8050`}([(at : addrtype <: valtype) `I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#8099`}([]))] +[visit_exp resulttype#1795] +[visit_id resulttype#1795] +[visit_exp `localidx*#1079`] +[visit_id localidx*#1079] +[visit_exp (`%`_resulttype{`X*#8050`}([(at : addrtype <: valtype) `I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#8099`}([]))] +[visit_exp `%`_resulttype{`X*#8050`}([(at : addrtype <: valtype) `I32`_valtype `I32`_valtype])] +[visit_exp `X*#8050`] +[visit_id X*#8050] +[visit_exp ([(at : addrtype <: valtype) `I32`_valtype `I32`_valtype])] +[visit_exp [(at : addrtype <: valtype) `I32`_valtype `I32`_valtype]] +[visit_exp (at : addrtype <: valtype)] +[visit_exp at] +[visit_id at] +[visit_exp `I32`_valtype] +[visit_exp ()] +[visit_exp `I32`_valtype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#8099`}([])] +[visit_exp `X*#8099`] +[visit_id X*#8099] +[visit_exp ([])] +[visit_exp []] +[visit_exp (C.`TABLES`_context{`tabletype*#16`}[x!`%`_idx{i#7673}.0] = `%%%`_tabletype{addrtype#549, limits#549, reftype#501}(at, lim, rt_1))] +[visit_exp C.`TABLES`_context{`tabletype*#16`}[x!`%`_idx{i#7673}.0]] +[visit_exp C.`TABLES`_context{`tabletype*#16`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `tabletype*#16`] +[visit_id tabletype*#16] +[visit_exp x!`%`_idx{i#7673}.0] +[visit_exp x!`%`_idx{i#7673}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#7673] +[visit_id i#7673] +[visit_exp `%%%`_tabletype{addrtype#549, limits#549, reftype#501}(at, lim, rt_1)] +[visit_exp addrtype#549] +[visit_id addrtype#549] +[visit_exp limits#549] +[visit_id limits#549] +[visit_exp reftype#501] +[visit_id reftype#501] +[visit_exp (at, lim, rt_1)] +[visit_exp at] +[visit_id at] not free +[visit_exp lim] +[visit_id lim] +[visit_exp rt_1] +[visit_id rt_1] +[visit_exp (C.`ELEMS`_context{`elemtype*#9`}[y!`%`_idx{i#7683}.0] = rt_2)] +[visit_exp C.`ELEMS`_context{`elemtype*#9`}[y!`%`_idx{i#7683}.0]] +[visit_exp C.`ELEMS`_context{`elemtype*#9`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `elemtype*#9`] +[visit_id elemtype*#9] +[visit_exp y!`%`_idx{i#7683}.0] +[visit_exp y!`%`_idx{i#7683}] +[visit_exp y] +[visit_id y] not free +[visit_exp i#7683] +[visit_id i#7683] +[visit_exp rt_2] +[visit_id rt_2] +[visit_exp (C, rt_2, rt_1)] +[visit_exp C] +[visit_id C] not free +[visit_exp rt_2] +[visit_id rt_2] not free +[visit_exp rt_1] +[visit_id rt_1] not free +[check_dims] C X*#8120 X*#8169 elemidx#15 elemtype*#10 i#7707 localidx*#1091 resulttype#1815 rt x +[visit_exp C] +[visit_id C] +[visit_exp `ELEM.DROP`_instr{elemidx#15}(x)] +[visit_exp elemidx#15] +[visit_id elemidx#15] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%->_%%`_instrtype{resulttype#1815, `localidx*#1091`}(`%`_resulttype{`X*#8120`}([]), [], `%`_resulttype{`X*#8169`}([]))] +[visit_exp resulttype#1815] +[visit_id resulttype#1815] +[visit_exp `localidx*#1091`] +[visit_id localidx*#1091] +[visit_exp (`%`_resulttype{`X*#8120`}([]), [], `%`_resulttype{`X*#8169`}([]))] +[visit_exp `%`_resulttype{`X*#8120`}([])] +[visit_exp `X*#8120`] +[visit_id X*#8120] +[visit_exp ([])] +[visit_exp []] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#8169`}([])] +[visit_exp `X*#8169`] +[visit_id X*#8169] +[visit_exp ([])] +[visit_exp []] +[visit_exp (C.`ELEMS`_context{`elemtype*#10`}[x!`%`_idx{i#7707}.0] = rt)] +[visit_exp C.`ELEMS`_context{`elemtype*#10`}[x!`%`_idx{i#7707}.0]] +[visit_exp C.`ELEMS`_context{`elemtype*#10`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `elemtype*#10`] +[visit_id elemtype*#10] +[visit_exp x!`%`_idx{i#7707}.0] +[visit_exp x!`%`_idx{i#7707}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#7707] +[visit_id i#7707] +[visit_exp rt] +[visit_id rt] +[check_dims] +[check_dims] N at i#7729 i#7751 m n u32#14 u64#230 +[visit_exp {`ALIGN`{u32#14} `%`_u32{i#7729}(n), `OFFSET`{u64#230} `%`_u64{i#7751}(m)}] +[visit_exp u32#14] +[visit_id u32#14] +[visit_exp `%`_u32{i#7729}(n)] +[visit_exp i#7729] +[visit_id i#7729] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp u64#230] +[visit_id u64#230] +[visit_exp `%`_u64{i#7751}(m)] +[visit_exp i#7751] +[visit_id i#7751] +[visit_exp (m)] +[visit_exp m] +[visit_id m] +[visit_exp at] +[visit_id at] +[visit_exp N] +[visit_id N] +[visit_exp (((2 ^ n) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat)))] +[visit_exp ((2 ^ n) : nat <:> rat)] +[visit_exp (2 ^ n)] +[visit_exp 2] +[visit_exp n] +[visit_id n] not free +[visit_exp ((N : nat <:> rat) / (8 : nat <:> rat))] +[visit_exp (N : nat <:> rat)] +[visit_exp N] +[visit_id N] not free +[visit_exp (8 : nat <:> rat)] +[visit_exp 8] +[visit_exp (m < (2 ^ $size((at : addrtype <: numtype))))] +[visit_exp m] +[visit_id m] not free +[visit_exp (2 ^ $size((at : addrtype <: numtype)))] +[visit_exp 2] +[visit_exp $size((at : addrtype <: numtype))] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] not free +[check_dims] C X*#8190 X*#8239 addrtype#561 at i#7775 lim limits#561 localidx*#1103 memidx#30 memtype*#7 resulttype#1835 x +[visit_exp C] +[visit_id C] +[visit_exp `MEMORY.SIZE`_instr{memidx#30}(x)] +[visit_exp memidx#30] +[visit_id memidx#30] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%->_%%`_instrtype{resulttype#1835, `localidx*#1103`}(`%`_resulttype{`X*#8190`}([]), [], `%`_resulttype{`X*#8239`}([(at : addrtype <: valtype)]))] +[visit_exp resulttype#1835] +[visit_id resulttype#1835] +[visit_exp `localidx*#1103`] +[visit_id localidx*#1103] +[visit_exp (`%`_resulttype{`X*#8190`}([]), [], `%`_resulttype{`X*#8239`}([(at : addrtype <: valtype)]))] +[visit_exp `%`_resulttype{`X*#8190`}([])] +[visit_exp `X*#8190`] +[visit_id X*#8190] +[visit_exp ([])] +[visit_exp []] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#8239`}([(at : addrtype <: valtype)])] +[visit_exp `X*#8239`] +[visit_id X*#8239] +[visit_exp ([(at : addrtype <: valtype)])] +[visit_exp [(at : addrtype <: valtype)]] +[visit_exp (at : addrtype <: valtype)] +[visit_exp at] +[visit_id at] +[visit_exp (C.`MEMS`_context{`memtype*#7`}[x!`%`_idx{i#7775}.0] = `%%PAGE`_memtype{addrtype#561, limits#561}(at, lim))] +[visit_exp C.`MEMS`_context{`memtype*#7`}[x!`%`_idx{i#7775}.0]] +[visit_exp C.`MEMS`_context{`memtype*#7`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `memtype*#7`] +[visit_id memtype*#7] +[visit_exp x!`%`_idx{i#7775}.0] +[visit_exp x!`%`_idx{i#7775}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#7775] +[visit_id i#7775] +[visit_exp `%%PAGE`_memtype{addrtype#561, limits#561}(at, lim)] +[visit_exp addrtype#561] +[visit_id addrtype#561] +[visit_exp limits#561] +[visit_id limits#561] +[visit_exp (at, lim)] +[visit_exp at] +[visit_id at] not free +[visit_exp lim] +[visit_id lim] +[check_dims] C X*#8250 X*#8318 addrtype#573 at i#7799 lim limits#573 localidx*#1115 memidx#32 memtype*#8 resulttype#1855 x +[visit_exp C] +[visit_id C] +[visit_exp `MEMORY.GROW`_instr{memidx#32}(x)] +[visit_exp memidx#32] +[visit_id memidx#32] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%->_%%`_instrtype{resulttype#1855, `localidx*#1115`}(`%`_resulttype{`X*#8250`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#8318`}([(at : addrtype <: valtype)]))] +[visit_exp resulttype#1855] +[visit_id resulttype#1855] +[visit_exp `localidx*#1115`] +[visit_id localidx*#1115] +[visit_exp (`%`_resulttype{`X*#8250`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#8318`}([(at : addrtype <: valtype)]))] +[visit_exp `%`_resulttype{`X*#8250`}([(at : addrtype <: valtype)])] +[visit_exp `X*#8250`] +[visit_id X*#8250] +[visit_exp ([(at : addrtype <: valtype)])] +[visit_exp [(at : addrtype <: valtype)]] +[visit_exp (at : addrtype <: valtype)] +[visit_exp at] +[visit_id at] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#8318`}([(at : addrtype <: valtype)])] +[visit_exp `X*#8318`] +[visit_id X*#8318] +[visit_exp ([(at : addrtype <: valtype)])] +[visit_exp [(at : addrtype <: valtype)]] +[visit_exp (at : addrtype <: valtype)] +[visit_exp at] +[visit_id at] not free +[visit_exp (C.`MEMS`_context{`memtype*#8`}[x!`%`_idx{i#7799}.0] = `%%PAGE`_memtype{addrtype#573, limits#573}(at, lim))] +[visit_exp C.`MEMS`_context{`memtype*#8`}[x!`%`_idx{i#7799}.0]] +[visit_exp C.`MEMS`_context{`memtype*#8`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `memtype*#8`] +[visit_id memtype*#8] +[visit_exp x!`%`_idx{i#7799}.0] +[visit_exp x!`%`_idx{i#7799}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#7799] +[visit_id i#7799] +[visit_exp `%%PAGE`_memtype{addrtype#573, limits#573}(at, lim)] +[visit_exp addrtype#573] +[visit_id addrtype#573] +[visit_exp limits#573] +[visit_id limits#573] +[visit_exp (at, lim)] +[visit_exp at] +[visit_id at] not free +[visit_exp lim] +[visit_id lim] +[check_dims] C X*#8339 X*#8388 addrtype#585 at i#7823 lim limits#585 localidx*#1127 memidx#34 memtype*#9 resulttype#1875 x +[visit_exp C] +[visit_id C] +[visit_exp `MEMORY.FILL`_instr{memidx#34}(x)] +[visit_exp memidx#34] +[visit_id memidx#34] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%->_%%`_instrtype{resulttype#1875, `localidx*#1127`}(`%`_resulttype{`X*#8339`}([(at : addrtype <: valtype) `I32`_valtype (at : addrtype <: valtype)]), [], `%`_resulttype{`X*#8388`}([]))] +[visit_exp resulttype#1875] +[visit_id resulttype#1875] +[visit_exp `localidx*#1127`] +[visit_id localidx*#1127] +[visit_exp (`%`_resulttype{`X*#8339`}([(at : addrtype <: valtype) `I32`_valtype (at : addrtype <: valtype)]), [], `%`_resulttype{`X*#8388`}([]))] +[visit_exp `%`_resulttype{`X*#8339`}([(at : addrtype <: valtype) `I32`_valtype (at : addrtype <: valtype)])] +[visit_exp `X*#8339`] +[visit_id X*#8339] +[visit_exp ([(at : addrtype <: valtype) `I32`_valtype (at : addrtype <: valtype)])] +[visit_exp [(at : addrtype <: valtype) `I32`_valtype (at : addrtype <: valtype)]] +[visit_exp (at : addrtype <: valtype)] +[visit_exp at] +[visit_id at] +[visit_exp `I32`_valtype] +[visit_exp ()] +[visit_exp (at : addrtype <: valtype)] +[visit_exp at] +[visit_id at] not free +[visit_exp []] +[visit_exp `%`_resulttype{`X*#8388`}([])] +[visit_exp `X*#8388`] +[visit_id X*#8388] +[visit_exp ([])] +[visit_exp []] +[visit_exp (C.`MEMS`_context{`memtype*#9`}[x!`%`_idx{i#7823}.0] = `%%PAGE`_memtype{addrtype#585, limits#585}(at, lim))] +[visit_exp C.`MEMS`_context{`memtype*#9`}[x!`%`_idx{i#7823}.0]] +[visit_exp C.`MEMS`_context{`memtype*#9`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `memtype*#9`] +[visit_id memtype*#9] +[visit_exp x!`%`_idx{i#7823}.0] +[visit_exp x!`%`_idx{i#7823}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#7823] +[visit_id i#7823] +[visit_exp `%%PAGE`_memtype{addrtype#585, limits#585}(at, lim)] +[visit_exp addrtype#585] +[visit_id addrtype#585] +[visit_exp limits#585] +[visit_id limits#585] +[visit_exp (at, lim)] +[visit_exp at] +[visit_id at] not free +[visit_exp lim] +[visit_id lim] +[check_dims] C X*#8409 X*#8458 addrtype#597 addrtype#609 at_1 at_2 i#7861 i#7871 lim_1 lim_2 limits#597 limits#609 localidx*#1139 memidx#36 memtype*#10 memtype*#11 resulttype#1895 x_1 x_2 +[visit_exp C] +[visit_id C] +[visit_exp `MEMORY.COPY`_instr{memidx#36}(x_1, x_2)] +[visit_exp memidx#36] +[visit_id memidx#36] +[visit_exp (x_1, x_2)] +[visit_exp x_1] +[visit_id x_1] +[visit_exp x_2] +[visit_id x_2] +[visit_exp `%->_%%`_instrtype{resulttype#1895, `localidx*#1139`}(`%`_resulttype{`X*#8409`}([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype{`X*#8458`}([]))] +[visit_exp resulttype#1895] +[visit_id resulttype#1895] +[visit_exp `localidx*#1139`] +[visit_id localidx*#1139] +[visit_exp (`%`_resulttype{`X*#8409`}([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype{`X*#8458`}([]))] +[visit_exp `%`_resulttype{`X*#8409`}([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)])] +[visit_exp `X*#8409`] +[visit_id X*#8409] +[visit_exp ([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)])] +[visit_exp [(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]] +[visit_exp (at_1 : addrtype <: valtype)] +[visit_exp at_1] +[visit_id at_1] +[visit_exp (at_2 : addrtype <: valtype)] +[visit_exp at_2] +[visit_id at_2] +[visit_exp ($minat(at_1, at_2) : addrtype <: valtype)] +[visit_exp $minat(at_1, at_2)] +[visit_exp at_1] +[visit_id at_1] not free +[visit_exp at_2] +[visit_id at_2] not free +[visit_exp []] +[visit_exp `%`_resulttype{`X*#8458`}([])] +[visit_exp `X*#8458`] +[visit_id X*#8458] +[visit_exp ([])] +[visit_exp []] +[visit_exp (C.`MEMS`_context{`memtype*#10`}[x_1!`%`_idx{i#7861}.0] = `%%PAGE`_memtype{addrtype#597, limits#597}(at_1, lim_1))] +[visit_exp C.`MEMS`_context{`memtype*#10`}[x_1!`%`_idx{i#7861}.0]] +[visit_exp C.`MEMS`_context{`memtype*#10`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `memtype*#10`] +[visit_id memtype*#10] +[visit_exp x_1!`%`_idx{i#7861}.0] +[visit_exp x_1!`%`_idx{i#7861}] +[visit_exp x_1] +[visit_id x_1] not free +[visit_exp i#7861] +[visit_id i#7861] +[visit_exp `%%PAGE`_memtype{addrtype#597, limits#597}(at_1, lim_1)] +[visit_exp addrtype#597] +[visit_id addrtype#597] +[visit_exp limits#597] +[visit_id limits#597] +[visit_exp (at_1, lim_1)] +[visit_exp at_1] +[visit_id at_1] not free +[visit_exp lim_1] +[visit_id lim_1] +[visit_exp (C.`MEMS`_context{`memtype*#11`}[x_2!`%`_idx{i#7871}.0] = `%%PAGE`_memtype{addrtype#609, limits#609}(at_2, lim_2))] +[visit_exp C.`MEMS`_context{`memtype*#11`}[x_2!`%`_idx{i#7871}.0]] +[visit_exp C.`MEMS`_context{`memtype*#11`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `memtype*#11`] +[visit_id memtype*#11] +[visit_exp x_2!`%`_idx{i#7871}.0] +[visit_exp x_2!`%`_idx{i#7871}] +[visit_exp x_2] +[visit_id x_2] not free +[visit_exp i#7871] +[visit_id i#7871] +[visit_exp `%%PAGE`_memtype{addrtype#609, limits#609}(at_2, lim_2)] +[visit_exp addrtype#609] +[visit_id addrtype#609] +[visit_exp limits#609] +[visit_id limits#609] +[visit_exp (at_2, lim_2)] +[visit_exp at_2] +[visit_id at_2] not free +[visit_exp lim_2] +[visit_id lim_2] +[check_dims] C X*#8479 X*#8528 addrtype#621 at dataidx#13 datatype*#9 i#7909 i#7919 lim limits#621 localidx*#1151 memidx#39 memtype*#12 resulttype#1915 x y +[visit_exp C] +[visit_id C] +[visit_exp `MEMORY.INIT`_instr{memidx#39, dataidx#13}(x, y)] +[visit_exp memidx#39] +[visit_id memidx#39] +[visit_exp dataidx#13] +[visit_id dataidx#13] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] +[visit_exp y] +[visit_id y] +[visit_exp `%->_%%`_instrtype{resulttype#1915, `localidx*#1151`}(`%`_resulttype{`X*#8479`}([(at : addrtype <: valtype) `I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#8528`}([]))] +[visit_exp resulttype#1915] +[visit_id resulttype#1915] +[visit_exp `localidx*#1151`] +[visit_id localidx*#1151] +[visit_exp (`%`_resulttype{`X*#8479`}([(at : addrtype <: valtype) `I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#8528`}([]))] +[visit_exp `%`_resulttype{`X*#8479`}([(at : addrtype <: valtype) `I32`_valtype `I32`_valtype])] +[visit_exp `X*#8479`] +[visit_id X*#8479] +[visit_exp ([(at : addrtype <: valtype) `I32`_valtype `I32`_valtype])] +[visit_exp [(at : addrtype <: valtype) `I32`_valtype `I32`_valtype]] +[visit_exp (at : addrtype <: valtype)] +[visit_exp at] +[visit_id at] +[visit_exp `I32`_valtype] +[visit_exp ()] +[visit_exp `I32`_valtype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#8528`}([])] +[visit_exp `X*#8528`] +[visit_id X*#8528] +[visit_exp ([])] +[visit_exp []] +[visit_exp (C.`MEMS`_context{`memtype*#12`}[x!`%`_idx{i#7909}.0] = `%%PAGE`_memtype{addrtype#621, limits#621}(at, lim))] +[visit_exp C.`MEMS`_context{`memtype*#12`}[x!`%`_idx{i#7909}.0]] +[visit_exp C.`MEMS`_context{`memtype*#12`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `memtype*#12`] +[visit_id memtype*#12] +[visit_exp x!`%`_idx{i#7909}.0] +[visit_exp x!`%`_idx{i#7909}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#7909] +[visit_id i#7909] +[visit_exp `%%PAGE`_memtype{addrtype#621, limits#621}(at, lim)] +[visit_exp addrtype#621] +[visit_id addrtype#621] +[visit_exp limits#621] +[visit_id limits#621] +[visit_exp (at, lim)] +[visit_exp at] +[visit_id at] not free +[visit_exp lim] +[visit_id lim] +[visit_exp (C.`DATAS`_context{`datatype*#9`}[y!`%`_idx{i#7919}.0] = `OK`_datatype)] +[visit_exp C.`DATAS`_context{`datatype*#9`}[y!`%`_idx{i#7919}.0]] +[visit_exp C.`DATAS`_context{`datatype*#9`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `datatype*#9`] +[visit_id datatype*#9] +[visit_exp y!`%`_idx{i#7919}.0] +[visit_exp y!`%`_idx{i#7919}] +[visit_exp y] +[visit_id y] not free +[visit_exp i#7919] +[visit_id i#7919] +[visit_exp `OK`_datatype] +[visit_exp ()] +[check_dims] C X*#8549 X*#8598 dataidx#15 datatype*#10 i#7943 localidx*#1163 resulttype#1935 x +[visit_exp C] +[visit_id C] +[visit_exp `DATA.DROP`_instr{dataidx#15}(x)] +[visit_exp dataidx#15] +[visit_id dataidx#15] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%->_%%`_instrtype{resulttype#1935, `localidx*#1163`}(`%`_resulttype{`X*#8549`}([]), [], `%`_resulttype{`X*#8598`}([]))] +[visit_exp resulttype#1935] +[visit_id resulttype#1935] +[visit_exp `localidx*#1163`] +[visit_id localidx*#1163] +[visit_exp (`%`_resulttype{`X*#8549`}([]), [], `%`_resulttype{`X*#8598`}([]))] +[visit_exp `%`_resulttype{`X*#8549`}([])] +[visit_exp `X*#8549`] +[visit_id X*#8549] +[visit_exp ([])] +[visit_exp []] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#8598`}([])] +[visit_exp `X*#8598`] +[visit_id X*#8598] +[visit_exp ([])] +[visit_exp []] +[visit_exp (C.`DATAS`_context{`datatype*#10`}[x!`%`_idx{i#7943}.0] = `OK`_datatype)] +[visit_exp C.`DATAS`_context{`datatype*#10`}[x!`%`_idx{i#7943}.0]] +[visit_exp C.`DATAS`_context{`datatype*#10`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `datatype*#10`] +[visit_id datatype*#10] +[visit_exp x!`%`_idx{i#7943}.0] +[visit_exp x!`%`_idx{i#7943}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#7943] +[visit_id i#7943] +[visit_exp `OK`_datatype] +[visit_exp ()] +[check_dims] C X*#8609 X*#8677 addrtype#633 at i#7967 lim limits#633 localidx*#1175 memarg memarg#13 memidx#41 memtype*#13 nt numtype?#3 resulttype#1955 x +[visit_exp C] +[visit_id C] +[visit_exp `LOAD`_instr{`numtype?#3`, memidx#41, memarg#13}(nt, ?(), x, memarg)] +[visit_exp `numtype?#3`] +[visit_id numtype?#3] +[visit_exp memidx#41] +[visit_id memidx#41] +[visit_exp memarg#13] +[visit_id memarg#13] +[visit_exp (nt, ?(), x, memarg)] +[visit_exp nt] +[visit_id nt] +[visit_exp ?()] +[visit_exp x] +[visit_id x] +[visit_exp memarg] +[visit_id memarg] +[visit_exp `%->_%%`_instrtype{resulttype#1955, `localidx*#1175`}(`%`_resulttype{`X*#8609`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#8677`}([(nt : numtype <: valtype)]))] +[visit_exp resulttype#1955] +[visit_id resulttype#1955] +[visit_exp `localidx*#1175`] +[visit_id localidx*#1175] +[visit_exp (`%`_resulttype{`X*#8609`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#8677`}([(nt : numtype <: valtype)]))] +[visit_exp `%`_resulttype{`X*#8609`}([(at : addrtype <: valtype)])] +[visit_exp `X*#8609`] +[visit_id X*#8609] +[visit_exp ([(at : addrtype <: valtype)])] +[visit_exp [(at : addrtype <: valtype)]] +[visit_exp (at : addrtype <: valtype)] +[visit_exp at] +[visit_id at] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#8677`}([(nt : numtype <: valtype)])] +[visit_exp `X*#8677`] +[visit_id X*#8677] +[visit_exp ([(nt : numtype <: valtype)])] +[visit_exp [(nt : numtype <: valtype)]] +[visit_exp (nt : numtype <: valtype)] +[visit_exp nt] +[visit_id nt] not free +[visit_exp (C.`MEMS`_context{`memtype*#13`}[x!`%`_idx{i#7967}.0] = `%%PAGE`_memtype{addrtype#633, limits#633}(at, lim))] +[visit_exp C.`MEMS`_context{`memtype*#13`}[x!`%`_idx{i#7967}.0]] +[visit_exp C.`MEMS`_context{`memtype*#13`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `memtype*#13`] +[visit_id memtype*#13] +[visit_exp x!`%`_idx{i#7967}.0] +[visit_exp x!`%`_idx{i#7967}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#7967] +[visit_id i#7967] +[visit_exp `%%PAGE`_memtype{addrtype#633, limits#633}(at, lim)] +[visit_exp addrtype#633] +[visit_id addrtype#633] +[visit_exp limits#633] +[visit_id limits#633] +[visit_exp (at, lim)] +[visit_exp at] +[visit_id at] not free +[visit_exp lim] +[visit_id lim] +[visit_exp (memarg, at, $size(nt))] +[visit_exp memarg] +[visit_id memarg] not free +[visit_exp at] +[visit_id at] not free +[visit_exp $size(nt)] +[visit_exp nt] +[visit_id nt] not free +[check_dims] C Inn M X*#8688 X*#8756 addrtype#645 at i#7993 i#8000 i#8024 lim limits#645 localidx*#1187 memarg memarg#15 memidx#43 memtype*#14 numtype?#4 resulttype#1975 sx sx#7 sz#5 x +[visit_exp C] +[visit_id C] +[visit_exp `LOAD`_instr{`numtype?#4`, memidx#43, memarg#15}((Inn : Inn <: numtype), ?(`%_%`_loadop_{sz#5, sx#7, i#7993}(`%`_sz{i#8000}(M), sx)), x, memarg)] +[visit_exp `numtype?#4`] +[visit_id numtype?#4] +[visit_exp memidx#43] +[visit_id memidx#43] +[visit_exp memarg#15] +[visit_id memarg#15] +[visit_exp ((Inn : Inn <: numtype), ?(`%_%`_loadop_{sz#5, sx#7, i#7993}(`%`_sz{i#8000}(M), sx)), x, memarg)] +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] +[visit_exp ?(`%_%`_loadop_{sz#5, sx#7, i#7993}(`%`_sz{i#8000}(M), sx))] +[visit_exp `%_%`_loadop_{sz#5, sx#7, i#7993}(`%`_sz{i#8000}(M), sx)] +[visit_exp sz#5] +[visit_id sz#5] +[visit_exp sx#7] +[visit_id sx#7] +[visit_exp i#7993] +[visit_id i#7993] +[visit_exp (`%`_sz{i#8000}(M), sx)] +[visit_exp `%`_sz{i#8000}(M)] +[visit_exp i#8000] +[visit_id i#8000] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp sx] +[visit_id sx] +[visit_exp x] +[visit_id x] +[visit_exp memarg] +[visit_id memarg] +[visit_exp `%->_%%`_instrtype{resulttype#1975, `localidx*#1187`}(`%`_resulttype{`X*#8688`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#8756`}([(Inn : Inn <: valtype)]))] +[visit_exp resulttype#1975] +[visit_id resulttype#1975] +[visit_exp `localidx*#1187`] +[visit_id localidx*#1187] +[visit_exp (`%`_resulttype{`X*#8688`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#8756`}([(Inn : Inn <: valtype)]))] +[visit_exp `%`_resulttype{`X*#8688`}([(at : addrtype <: valtype)])] +[visit_exp `X*#8688`] +[visit_id X*#8688] +[visit_exp ([(at : addrtype <: valtype)])] +[visit_exp [(at : addrtype <: valtype)]] +[visit_exp (at : addrtype <: valtype)] +[visit_exp at] +[visit_id at] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#8756`}([(Inn : Inn <: valtype)])] +[visit_exp `X*#8756`] +[visit_id X*#8756] +[visit_exp ([(Inn : Inn <: valtype)])] +[visit_exp [(Inn : Inn <: valtype)]] +[visit_exp (Inn : Inn <: valtype)] +[visit_exp Inn] +[visit_id Inn] not free +[visit_exp (C.`MEMS`_context{`memtype*#14`}[x!`%`_idx{i#8024}.0] = `%%PAGE`_memtype{addrtype#645, limits#645}(at, lim))] +[visit_exp C.`MEMS`_context{`memtype*#14`}[x!`%`_idx{i#8024}.0]] +[visit_exp C.`MEMS`_context{`memtype*#14`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `memtype*#14`] +[visit_id memtype*#14] +[visit_exp x!`%`_idx{i#8024}.0] +[visit_exp x!`%`_idx{i#8024}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#8024] +[visit_id i#8024] +[visit_exp `%%PAGE`_memtype{addrtype#645, limits#645}(at, lim)] +[visit_exp addrtype#645] +[visit_id addrtype#645] +[visit_exp limits#645] +[visit_id limits#645] +[visit_exp (at, lim)] +[visit_exp at] +[visit_id at] not free +[visit_exp lim] +[visit_id lim] +[visit_exp (memarg, at, M)] +[visit_exp memarg] +[visit_id memarg] not free +[visit_exp at] +[visit_id at] not free +[visit_exp M] +[visit_id M] not free +[check_dims] C X*#8777 X*#8826 addrtype#657 at i#8048 lim limits#657 localidx*#1199 memarg memarg#17 memidx#45 memtype*#15 nt numtype?#5 resulttype#1995 x +[visit_exp C] +[visit_id C] +[visit_exp `STORE`_instr{`numtype?#5`, memidx#45, memarg#17}(nt, ?(), x, memarg)] +[visit_exp `numtype?#5`] +[visit_id numtype?#5] +[visit_exp memidx#45] +[visit_id memidx#45] +[visit_exp memarg#17] +[visit_id memarg#17] +[visit_exp (nt, ?(), x, memarg)] +[visit_exp nt] +[visit_id nt] +[visit_exp ?()] +[visit_exp x] +[visit_id x] +[visit_exp memarg] +[visit_id memarg] +[visit_exp `%->_%%`_instrtype{resulttype#1995, `localidx*#1199`}(`%`_resulttype{`X*#8777`}([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype{`X*#8826`}([]))] +[visit_exp resulttype#1995] +[visit_id resulttype#1995] +[visit_exp `localidx*#1199`] +[visit_id localidx*#1199] +[visit_exp (`%`_resulttype{`X*#8777`}([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype{`X*#8826`}([]))] +[visit_exp `%`_resulttype{`X*#8777`}([(at : addrtype <: valtype) (nt : numtype <: valtype)])] +[visit_exp `X*#8777`] +[visit_id X*#8777] +[visit_exp ([(at : addrtype <: valtype) (nt : numtype <: valtype)])] +[visit_exp [(at : addrtype <: valtype) (nt : numtype <: valtype)]] +[visit_exp (at : addrtype <: valtype)] +[visit_exp at] +[visit_id at] +[visit_exp (nt : numtype <: valtype)] +[visit_exp nt] +[visit_id nt] not free +[visit_exp []] +[visit_exp `%`_resulttype{`X*#8826`}([])] +[visit_exp `X*#8826`] +[visit_id X*#8826] +[visit_exp ([])] +[visit_exp []] +[visit_exp (C.`MEMS`_context{`memtype*#15`}[x!`%`_idx{i#8048}.0] = `%%PAGE`_memtype{addrtype#657, limits#657}(at, lim))] +[visit_exp C.`MEMS`_context{`memtype*#15`}[x!`%`_idx{i#8048}.0]] +[visit_exp C.`MEMS`_context{`memtype*#15`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `memtype*#15`] +[visit_id memtype*#15] +[visit_exp x!`%`_idx{i#8048}.0] +[visit_exp x!`%`_idx{i#8048}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#8048] +[visit_id i#8048] +[visit_exp `%%PAGE`_memtype{addrtype#657, limits#657}(at, lim)] +[visit_exp addrtype#657] +[visit_id addrtype#657] +[visit_exp limits#657] +[visit_id limits#657] +[visit_exp (at, lim)] +[visit_exp at] +[visit_id at] not free +[visit_exp lim] +[visit_id lim] +[visit_exp (memarg, at, $size(nt))] +[visit_exp memarg] +[visit_id memarg] not free +[visit_exp at] +[visit_id at] not free +[visit_exp $size(nt)] +[visit_exp nt] +[visit_id nt] not free +[check_dims] C Inn M X*#8847 X*#8896 addrtype#669 at i#8091 i#8092 i#8116 lim limits#669 localidx*#1211 memarg memarg#19 memidx#47 memtype*#16 numtype?#6 resulttype#2015 sz#7 x +[visit_exp C] +[visit_id C] +[visit_exp `STORE`_instr{`numtype?#6`, memidx#47, memarg#19}((Inn : Inn <: numtype), ?(`%`_storeop_{sz#7, i#8091}(`%`_sz{i#8092}(M))), x, memarg)] +[visit_exp `numtype?#6`] +[visit_id numtype?#6] +[visit_exp memidx#47] +[visit_id memidx#47] +[visit_exp memarg#19] +[visit_id memarg#19] +[visit_exp ((Inn : Inn <: numtype), ?(`%`_storeop_{sz#7, i#8091}(`%`_sz{i#8092}(M))), x, memarg)] +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] +[visit_exp ?(`%`_storeop_{sz#7, i#8091}(`%`_sz{i#8092}(M)))] +[visit_exp `%`_storeop_{sz#7, i#8091}(`%`_sz{i#8092}(M))] +[visit_exp sz#7] +[visit_id sz#7] +[visit_exp i#8091] +[visit_id i#8091] +[visit_exp (`%`_sz{i#8092}(M))] +[visit_exp `%`_sz{i#8092}(M)] +[visit_exp i#8092] +[visit_id i#8092] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp x] +[visit_id x] +[visit_exp memarg] +[visit_id memarg] +[visit_exp `%->_%%`_instrtype{resulttype#2015, `localidx*#1211`}(`%`_resulttype{`X*#8847`}([(at : addrtype <: valtype) (Inn : Inn <: valtype)]), [], `%`_resulttype{`X*#8896`}([]))] +[visit_exp resulttype#2015] +[visit_id resulttype#2015] +[visit_exp `localidx*#1211`] +[visit_id localidx*#1211] +[visit_exp (`%`_resulttype{`X*#8847`}([(at : addrtype <: valtype) (Inn : Inn <: valtype)]), [], `%`_resulttype{`X*#8896`}([]))] +[visit_exp `%`_resulttype{`X*#8847`}([(at : addrtype <: valtype) (Inn : Inn <: valtype)])] +[visit_exp `X*#8847`] +[visit_id X*#8847] +[visit_exp ([(at : addrtype <: valtype) (Inn : Inn <: valtype)])] +[visit_exp [(at : addrtype <: valtype) (Inn : Inn <: valtype)]] +[visit_exp (at : addrtype <: valtype)] +[visit_exp at] +[visit_id at] +[visit_exp (Inn : Inn <: valtype)] +[visit_exp Inn] +[visit_id Inn] not free +[visit_exp []] +[visit_exp `%`_resulttype{`X*#8896`}([])] +[visit_exp `X*#8896`] +[visit_id X*#8896] +[visit_exp ([])] +[visit_exp []] +[visit_exp (C.`MEMS`_context{`memtype*#16`}[x!`%`_idx{i#8116}.0] = `%%PAGE`_memtype{addrtype#669, limits#669}(at, lim))] +[visit_exp C.`MEMS`_context{`memtype*#16`}[x!`%`_idx{i#8116}.0]] +[visit_exp C.`MEMS`_context{`memtype*#16`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `memtype*#16`] +[visit_id memtype*#16] +[visit_exp x!`%`_idx{i#8116}.0] +[visit_exp x!`%`_idx{i#8116}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#8116] +[visit_id i#8116] +[visit_exp `%%PAGE`_memtype{addrtype#669, limits#669}(at, lim)] +[visit_exp addrtype#669] +[visit_id addrtype#669] +[visit_exp limits#669] +[visit_id limits#669] +[visit_exp (at, lim)] +[visit_exp at] +[visit_id at] not free +[visit_exp lim] +[visit_id lim] +[visit_exp (memarg, at, M)] +[visit_exp memarg] +[visit_id memarg] not free +[visit_exp at] +[visit_id at] not free +[visit_exp M] +[visit_id M] not free +[check_dims] C X*#8907 X*#8975 addrtype#681 at i#8140 lim limits#681 localidx*#1223 memarg memarg#21 memidx#49 memtype*#17 resulttype#2035 vectype?#2 x +[visit_exp C] +[visit_id C] +[visit_exp `VLOAD`_instr{`vectype?#2`, memidx#49, memarg#21}(`V128`_vectype, ?(), x, memarg)] +[visit_exp `vectype?#2`] +[visit_id vectype?#2] +[visit_exp memidx#49] +[visit_id memidx#49] +[visit_exp memarg#21] +[visit_id memarg#21] +[visit_exp (`V128`_vectype, ?(), x, memarg)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp ?()] +[visit_exp x] +[visit_id x] +[visit_exp memarg] +[visit_id memarg] +[visit_exp `%->_%%`_instrtype{resulttype#2035, `localidx*#1223`}(`%`_resulttype{`X*#8907`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#8975`}([`V128`_valtype]))] +[visit_exp resulttype#2035] +[visit_id resulttype#2035] +[visit_exp `localidx*#1223`] +[visit_id localidx*#1223] +[visit_exp (`%`_resulttype{`X*#8907`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#8975`}([`V128`_valtype]))] +[visit_exp `%`_resulttype{`X*#8907`}([(at : addrtype <: valtype)])] +[visit_exp `X*#8907`] +[visit_id X*#8907] +[visit_exp ([(at : addrtype <: valtype)])] +[visit_exp [(at : addrtype <: valtype)]] +[visit_exp (at : addrtype <: valtype)] +[visit_exp at] +[visit_id at] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#8975`}([`V128`_valtype])] +[visit_exp `X*#8975`] +[visit_id X*#8975] +[visit_exp ([`V128`_valtype])] +[visit_exp [`V128`_valtype]] +[visit_exp `V128`_valtype] +[visit_exp ()] +[visit_exp (C.`MEMS`_context{`memtype*#17`}[x!`%`_idx{i#8140}.0] = `%%PAGE`_memtype{addrtype#681, limits#681}(at, lim))] +[visit_exp C.`MEMS`_context{`memtype*#17`}[x!`%`_idx{i#8140}.0]] +[visit_exp C.`MEMS`_context{`memtype*#17`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `memtype*#17`] +[visit_id memtype*#17] +[visit_exp x!`%`_idx{i#8140}.0] +[visit_exp x!`%`_idx{i#8140}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#8140] +[visit_id i#8140] +[visit_exp `%%PAGE`_memtype{addrtype#681, limits#681}(at, lim)] +[visit_exp addrtype#681] +[visit_id addrtype#681] +[visit_exp limits#681] +[visit_id limits#681] +[visit_exp (at, lim)] +[visit_exp at] +[visit_id at] not free +[visit_exp lim] +[visit_id lim] +[visit_exp (memarg, at, $vsize(`V128`_vectype))] +[visit_exp memarg] +[visit_id memarg] not free +[visit_exp at] +[visit_id at] not free +[visit_exp $vsize(`V128`_vectype)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[check_dims] C M M#16 N X*#8986 X*#9054 addrtype#693 at i#8166 i#8173 i#8197 lim limits#693 localidx*#1235 memarg memarg#23 memidx#51 memtype*#18 resulttype#2055 sx sx#24 sz#54 vectype?#3 x +[visit_exp C] +[visit_id C] +[visit_exp `VLOAD`_instr{`vectype?#3`, memidx#51, memarg#23}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#54, M#16, sx#24, i#8166}(`%`_sz{i#8173}(M), N, sx)), x, memarg)] +[visit_exp `vectype?#3`] +[visit_id vectype?#3] +[visit_exp memidx#51] +[visit_id memidx#51] +[visit_exp memarg#23] +[visit_id memarg#23] +[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#54, M#16, sx#24, i#8166}(`%`_sz{i#8173}(M), N, sx)), x, memarg)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp ?(`SHAPE%X%_%`_vloadop_{sz#54, M#16, sx#24, i#8166}(`%`_sz{i#8173}(M), N, sx))] +[visit_exp `SHAPE%X%_%`_vloadop_{sz#54, M#16, sx#24, i#8166}(`%`_sz{i#8173}(M), N, sx)] +[visit_exp sz#54] +[visit_id sz#54] +[visit_exp M#16] +[visit_id M#16] +[visit_exp sx#24] +[visit_id sx#24] +[visit_exp i#8166] +[visit_id i#8166] +[visit_exp (`%`_sz{i#8173}(M), N, sx)] +[visit_exp `%`_sz{i#8173}(M)] +[visit_exp i#8173] +[visit_id i#8173] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp N] +[visit_id N] +[visit_exp sx] +[visit_id sx] +[visit_exp x] +[visit_id x] +[visit_exp memarg] +[visit_id memarg] +[visit_exp `%->_%%`_instrtype{resulttype#2055, `localidx*#1235`}(`%`_resulttype{`X*#8986`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#9054`}([`V128`_valtype]))] +[visit_exp resulttype#2055] +[visit_id resulttype#2055] +[visit_exp `localidx*#1235`] +[visit_id localidx*#1235] +[visit_exp (`%`_resulttype{`X*#8986`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#9054`}([`V128`_valtype]))] +[visit_exp `%`_resulttype{`X*#8986`}([(at : addrtype <: valtype)])] +[visit_exp `X*#8986`] +[visit_id X*#8986] +[visit_exp ([(at : addrtype <: valtype)])] +[visit_exp [(at : addrtype <: valtype)]] +[visit_exp (at : addrtype <: valtype)] +[visit_exp at] +[visit_id at] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#9054`}([`V128`_valtype])] +[visit_exp `X*#9054`] +[visit_id X*#9054] +[visit_exp ([`V128`_valtype])] +[visit_exp [`V128`_valtype]] +[visit_exp `V128`_valtype] +[visit_exp ()] +[visit_exp (C.`MEMS`_context{`memtype*#18`}[x!`%`_idx{i#8197}.0] = `%%PAGE`_memtype{addrtype#693, limits#693}(at, lim))] +[visit_exp C.`MEMS`_context{`memtype*#18`}[x!`%`_idx{i#8197}.0]] +[visit_exp C.`MEMS`_context{`memtype*#18`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `memtype*#18`] +[visit_id memtype*#18] +[visit_exp x!`%`_idx{i#8197}.0] +[visit_exp x!`%`_idx{i#8197}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#8197] +[visit_id i#8197] +[visit_exp `%%PAGE`_memtype{addrtype#693, limits#693}(at, lim)] +[visit_exp addrtype#693] +[visit_id addrtype#693] +[visit_exp limits#693] +[visit_id limits#693] +[visit_exp (at, lim)] +[visit_exp at] +[visit_id at] not free +[visit_exp lim] +[visit_id lim] +[visit_exp (memarg, at, (M * N))] +[visit_exp memarg] +[visit_id memarg] not free +[visit_exp at] +[visit_id at] not free +[visit_exp (M * N)] +[visit_exp M] +[visit_id M] not free +[visit_exp N] +[visit_id N] not free +[check_dims] C N X*#9065 X*#9133 addrtype#705 at i#8229 i#8253 lim limits#705 localidx*#1247 memarg memarg#25 memidx#53 memtype*#19 resulttype#2075 sz#101 vectype?#4 x +[visit_exp C] +[visit_id C] +[visit_exp `VLOAD`_instr{`vectype?#4`, memidx#53, memarg#25}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#101}(`%`_sz{i#8229}(N))), x, memarg)] +[visit_exp `vectype?#4`] +[visit_id vectype?#4] +[visit_exp memidx#53] +[visit_id memidx#53] +[visit_exp memarg#25] +[visit_id memarg#25] +[visit_exp (`V128`_vectype, ?(`SPLAT`_vloadop_{sz#101}(`%`_sz{i#8229}(N))), x, memarg)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp ?(`SPLAT`_vloadop_{sz#101}(`%`_sz{i#8229}(N)))] +[visit_exp `SPLAT`_vloadop_{sz#101}(`%`_sz{i#8229}(N))] +[visit_exp sz#101] +[visit_id sz#101] +[visit_exp (`%`_sz{i#8229}(N))] +[visit_exp `%`_sz{i#8229}(N)] +[visit_exp i#8229] +[visit_id i#8229] +[visit_exp (N)] +[visit_exp N] +[visit_id N] +[visit_exp x] +[visit_id x] +[visit_exp memarg] +[visit_id memarg] +[visit_exp `%->_%%`_instrtype{resulttype#2075, `localidx*#1247`}(`%`_resulttype{`X*#9065`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#9133`}([`V128`_valtype]))] +[visit_exp resulttype#2075] +[visit_id resulttype#2075] +[visit_exp `localidx*#1247`] +[visit_id localidx*#1247] +[visit_exp (`%`_resulttype{`X*#9065`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#9133`}([`V128`_valtype]))] +[visit_exp `%`_resulttype{`X*#9065`}([(at : addrtype <: valtype)])] +[visit_exp `X*#9065`] +[visit_id X*#9065] +[visit_exp ([(at : addrtype <: valtype)])] +[visit_exp [(at : addrtype <: valtype)]] +[visit_exp (at : addrtype <: valtype)] +[visit_exp at] +[visit_id at] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#9133`}([`V128`_valtype])] +[visit_exp `X*#9133`] +[visit_id X*#9133] +[visit_exp ([`V128`_valtype])] +[visit_exp [`V128`_valtype]] +[visit_exp `V128`_valtype] +[visit_exp ()] +[visit_exp (C.`MEMS`_context{`memtype*#19`}[x!`%`_idx{i#8253}.0] = `%%PAGE`_memtype{addrtype#705, limits#705}(at, lim))] +[visit_exp C.`MEMS`_context{`memtype*#19`}[x!`%`_idx{i#8253}.0]] +[visit_exp C.`MEMS`_context{`memtype*#19`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `memtype*#19`] +[visit_id memtype*#19] +[visit_exp x!`%`_idx{i#8253}.0] +[visit_exp x!`%`_idx{i#8253}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#8253] +[visit_id i#8253] +[visit_exp `%%PAGE`_memtype{addrtype#705, limits#705}(at, lim)] +[visit_exp addrtype#705] +[visit_id addrtype#705] +[visit_exp limits#705] +[visit_id limits#705] +[visit_exp (at, lim)] +[visit_exp at] +[visit_id at] not free +[visit_exp lim] +[visit_id lim] +[visit_exp (memarg, at, N)] +[visit_exp memarg] +[visit_id memarg] not free +[visit_exp at] +[visit_id at] not free +[visit_exp N] +[visit_id N] not free +[check_dims] C N X*#9144 X*#9212 addrtype#717 at i#8279 i#8286 i#8310 lim limits#717 localidx*#1259 memarg memarg#27 memidx#55 memtype*#20 resulttype#2095 sz#148 vectype?#5 x +[visit_exp C] +[visit_id C] +[visit_exp `VLOAD`_instr{`vectype?#5`, memidx#55, memarg#27}(`V128`_vectype, ?(`ZERO`_vloadop_{sz#148, i#8279}(`%`_sz{i#8286}(N))), x, memarg)] +[visit_exp `vectype?#5`] +[visit_id vectype?#5] +[visit_exp memidx#55] +[visit_id memidx#55] +[visit_exp memarg#27] +[visit_id memarg#27] +[visit_exp (`V128`_vectype, ?(`ZERO`_vloadop_{sz#148, i#8279}(`%`_sz{i#8286}(N))), x, memarg)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp ?(`ZERO`_vloadop_{sz#148, i#8279}(`%`_sz{i#8286}(N)))] +[visit_exp `ZERO`_vloadop_{sz#148, i#8279}(`%`_sz{i#8286}(N))] +[visit_exp sz#148] +[visit_id sz#148] +[visit_exp i#8279] +[visit_id i#8279] +[visit_exp (`%`_sz{i#8286}(N))] +[visit_exp `%`_sz{i#8286}(N)] +[visit_exp i#8286] +[visit_id i#8286] +[visit_exp (N)] +[visit_exp N] +[visit_id N] +[visit_exp x] +[visit_id x] +[visit_exp memarg] +[visit_id memarg] +[visit_exp `%->_%%`_instrtype{resulttype#2095, `localidx*#1259`}(`%`_resulttype{`X*#9144`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#9212`}([`V128`_valtype]))] +[visit_exp resulttype#2095] +[visit_id resulttype#2095] +[visit_exp `localidx*#1259`] +[visit_id localidx*#1259] +[visit_exp (`%`_resulttype{`X*#9144`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#9212`}([`V128`_valtype]))] +[visit_exp `%`_resulttype{`X*#9144`}([(at : addrtype <: valtype)])] +[visit_exp `X*#9144`] +[visit_id X*#9144] +[visit_exp ([(at : addrtype <: valtype)])] +[visit_exp [(at : addrtype <: valtype)]] +[visit_exp (at : addrtype <: valtype)] +[visit_exp at] +[visit_id at] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#9212`}([`V128`_valtype])] +[visit_exp `X*#9212`] +[visit_id X*#9212] +[visit_exp ([`V128`_valtype])] +[visit_exp [`V128`_valtype]] +[visit_exp `V128`_valtype] +[visit_exp ()] +[visit_exp (C.`MEMS`_context{`memtype*#20`}[x!`%`_idx{i#8310}.0] = `%%PAGE`_memtype{addrtype#717, limits#717}(at, lim))] +[visit_exp C.`MEMS`_context{`memtype*#20`}[x!`%`_idx{i#8310}.0]] +[visit_exp C.`MEMS`_context{`memtype*#20`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `memtype*#20`] +[visit_id memtype*#20] +[visit_exp x!`%`_idx{i#8310}.0] +[visit_exp x!`%`_idx{i#8310}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#8310] +[visit_id i#8310] +[visit_exp `%%PAGE`_memtype{addrtype#717, limits#717}(at, lim)] +[visit_exp addrtype#717] +[visit_id addrtype#717] +[visit_exp limits#717] +[visit_id limits#717] +[visit_exp (at, lim)] +[visit_exp at] +[visit_id at] not free +[visit_exp lim] +[visit_id lim] +[visit_exp (memarg, at, N)] +[visit_exp memarg] +[visit_id memarg] not free +[visit_exp at] +[visit_id at] not free +[visit_exp N] +[visit_id N] not free +[check_dims] C N X*#9233 X*#9282 addrtype#729 at i i#8318 i#8356 i#8370 laneidx#9 lim limits#729 localidx*#1271 memarg memarg#29 memidx#57 memtype*#21 resulttype#2115 sz#150 vectype#24 x +[visit_exp C] +[visit_id C] +[visit_exp `VLOAD_LANE`_instr{vectype#24, sz#150, memidx#57, memarg#29, laneidx#9}(`V128`_vectype, `%`_sz{i#8318}(N), x, memarg, i)] +[visit_exp vectype#24] +[visit_id vectype#24] +[visit_exp sz#150] +[visit_id sz#150] +[visit_exp memidx#57] +[visit_id memidx#57] +[visit_exp memarg#29] +[visit_id memarg#29] +[visit_exp laneidx#9] +[visit_id laneidx#9] +[visit_exp (`V128`_vectype, `%`_sz{i#8318}(N), x, memarg, i)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp `%`_sz{i#8318}(N)] +[visit_exp i#8318] +[visit_id i#8318] +[visit_exp (N)] +[visit_exp N] +[visit_id N] +[visit_exp x] +[visit_id x] +[visit_exp memarg] +[visit_id memarg] +[visit_exp i] +[visit_id i] +[visit_exp `%->_%%`_instrtype{resulttype#2115, `localidx*#1271`}(`%`_resulttype{`X*#9233`}([(at : addrtype <: valtype) `V128`_valtype]), [], `%`_resulttype{`X*#9282`}([`V128`_valtype]))] +[visit_exp resulttype#2115] +[visit_id resulttype#2115] +[visit_exp `localidx*#1271`] +[visit_id localidx*#1271] +[visit_exp (`%`_resulttype{`X*#9233`}([(at : addrtype <: valtype) `V128`_valtype]), [], `%`_resulttype{`X*#9282`}([`V128`_valtype]))] +[visit_exp `%`_resulttype{`X*#9233`}([(at : addrtype <: valtype) `V128`_valtype])] +[visit_exp `X*#9233`] +[visit_id X*#9233] +[visit_exp ([(at : addrtype <: valtype) `V128`_valtype])] +[visit_exp [(at : addrtype <: valtype) `V128`_valtype]] +[visit_exp (at : addrtype <: valtype)] +[visit_exp at] +[visit_id at] +[visit_exp `V128`_valtype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#9282`}([`V128`_valtype])] +[visit_exp `X*#9282`] +[visit_id X*#9282] +[visit_exp ([`V128`_valtype])] +[visit_exp [`V128`_valtype]] +[visit_exp `V128`_valtype] +[visit_exp ()] +[visit_exp (C.`MEMS`_context{`memtype*#21`}[x!`%`_idx{i#8356}.0] = `%%PAGE`_memtype{addrtype#729, limits#729}(at, lim))] +[visit_exp C.`MEMS`_context{`memtype*#21`}[x!`%`_idx{i#8356}.0]] +[visit_exp C.`MEMS`_context{`memtype*#21`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `memtype*#21`] +[visit_id memtype*#21] +[visit_exp x!`%`_idx{i#8356}.0] +[visit_exp x!`%`_idx{i#8356}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#8356] +[visit_id i#8356] +[visit_exp `%%PAGE`_memtype{addrtype#729, limits#729}(at, lim)] +[visit_exp addrtype#729] +[visit_id addrtype#729] +[visit_exp limits#729] +[visit_id limits#729] +[visit_exp (at, lim)] +[visit_exp at] +[visit_id at] not free +[visit_exp lim] +[visit_id lim] +[visit_exp (memarg, at, N)] +[visit_exp memarg] +[visit_id memarg] not free +[visit_exp at] +[visit_id at] not free +[visit_exp N] +[visit_id N] not free +[visit_exp ((i!`%`_laneidx{i#8370}.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat)))] +[visit_exp (i!`%`_laneidx{i#8370}.0 : nat <:> rat)] +[visit_exp i!`%`_laneidx{i#8370}.0] +[visit_exp i!`%`_laneidx{i#8370}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#8370] +[visit_id i#8370] +[visit_exp ((128 : nat <:> rat) / (N : nat <:> rat))] +[visit_exp (128 : nat <:> rat)] +[visit_exp 128] +[visit_exp (N : nat <:> rat)] +[visit_exp N] +[visit_id N] not free +[check_dims] C X*#9303 X*#9352 addrtype#741 at i#8394 lim limits#741 localidx*#1283 memarg memarg#31 memidx#59 memtype*#22 resulttype#2135 vectype#26 x +[visit_exp C] +[visit_id C] +[visit_exp `VSTORE`_instr{vectype#26, memidx#59, memarg#31}(`V128`_vectype, x, memarg)] +[visit_exp vectype#26] +[visit_id vectype#26] +[visit_exp memidx#59] +[visit_id memidx#59] +[visit_exp memarg#31] +[visit_id memarg#31] +[visit_exp (`V128`_vectype, x, memarg)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp memarg] +[visit_id memarg] +[visit_exp `%->_%%`_instrtype{resulttype#2135, `localidx*#1283`}(`%`_resulttype{`X*#9303`}([(at : addrtype <: valtype) `V128`_valtype]), [], `%`_resulttype{`X*#9352`}([]))] +[visit_exp resulttype#2135] +[visit_id resulttype#2135] +[visit_exp `localidx*#1283`] +[visit_id localidx*#1283] +[visit_exp (`%`_resulttype{`X*#9303`}([(at : addrtype <: valtype) `V128`_valtype]), [], `%`_resulttype{`X*#9352`}([]))] +[visit_exp `%`_resulttype{`X*#9303`}([(at : addrtype <: valtype) `V128`_valtype])] +[visit_exp `X*#9303`] +[visit_id X*#9303] +[visit_exp ([(at : addrtype <: valtype) `V128`_valtype])] +[visit_exp [(at : addrtype <: valtype) `V128`_valtype]] +[visit_exp (at : addrtype <: valtype)] +[visit_exp at] +[visit_id at] +[visit_exp `V128`_valtype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#9352`}([])] +[visit_exp `X*#9352`] +[visit_id X*#9352] +[visit_exp ([])] +[visit_exp []] +[visit_exp (C.`MEMS`_context{`memtype*#22`}[x!`%`_idx{i#8394}.0] = `%%PAGE`_memtype{addrtype#741, limits#741}(at, lim))] +[visit_exp C.`MEMS`_context{`memtype*#22`}[x!`%`_idx{i#8394}.0]] +[visit_exp C.`MEMS`_context{`memtype*#22`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `memtype*#22`] +[visit_id memtype*#22] +[visit_exp x!`%`_idx{i#8394}.0] +[visit_exp x!`%`_idx{i#8394}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#8394] +[visit_id i#8394] +[visit_exp `%%PAGE`_memtype{addrtype#741, limits#741}(at, lim)] +[visit_exp addrtype#741] +[visit_id addrtype#741] +[visit_exp limits#741] +[visit_id limits#741] +[visit_exp (at, lim)] +[visit_exp at] +[visit_id at] not free +[visit_exp lim] +[visit_id lim] +[visit_exp (memarg, at, $vsize(`V128`_vectype))] +[visit_exp memarg] +[visit_id memarg] not free +[visit_exp at] +[visit_id at] not free +[visit_exp $vsize(`V128`_vectype)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[check_dims] C N X*#9373 X*#9422 addrtype#753 at i i#8402 i#8440 i#8454 laneidx#11 lim limits#753 localidx*#1295 memarg memarg#33 memidx#61 memtype*#23 resulttype#2155 sz#152 vectype#28 x +[visit_exp C] +[visit_id C] +[visit_exp `VSTORE_LANE`_instr{vectype#28, sz#152, memidx#61, memarg#33, laneidx#11}(`V128`_vectype, `%`_sz{i#8402}(N), x, memarg, i)] +[visit_exp vectype#28] +[visit_id vectype#28] +[visit_exp sz#152] +[visit_id sz#152] +[visit_exp memidx#61] +[visit_id memidx#61] +[visit_exp memarg#33] +[visit_id memarg#33] +[visit_exp laneidx#11] +[visit_id laneidx#11] +[visit_exp (`V128`_vectype, `%`_sz{i#8402}(N), x, memarg, i)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp `%`_sz{i#8402}(N)] +[visit_exp i#8402] +[visit_id i#8402] +[visit_exp (N)] +[visit_exp N] +[visit_id N] +[visit_exp x] +[visit_id x] +[visit_exp memarg] +[visit_id memarg] +[visit_exp i] +[visit_id i] +[visit_exp `%->_%%`_instrtype{resulttype#2155, `localidx*#1295`}(`%`_resulttype{`X*#9373`}([(at : addrtype <: valtype) `V128`_valtype]), [], `%`_resulttype{`X*#9422`}([]))] +[visit_exp resulttype#2155] +[visit_id resulttype#2155] +[visit_exp `localidx*#1295`] +[visit_id localidx*#1295] +[visit_exp (`%`_resulttype{`X*#9373`}([(at : addrtype <: valtype) `V128`_valtype]), [], `%`_resulttype{`X*#9422`}([]))] +[visit_exp `%`_resulttype{`X*#9373`}([(at : addrtype <: valtype) `V128`_valtype])] +[visit_exp `X*#9373`] +[visit_id X*#9373] +[visit_exp ([(at : addrtype <: valtype) `V128`_valtype])] +[visit_exp [(at : addrtype <: valtype) `V128`_valtype]] +[visit_exp (at : addrtype <: valtype)] +[visit_exp at] +[visit_id at] +[visit_exp `V128`_valtype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#9422`}([])] +[visit_exp `X*#9422`] +[visit_id X*#9422] +[visit_exp ([])] +[visit_exp []] +[visit_exp (C.`MEMS`_context{`memtype*#23`}[x!`%`_idx{i#8440}.0] = `%%PAGE`_memtype{addrtype#753, limits#753}(at, lim))] +[visit_exp C.`MEMS`_context{`memtype*#23`}[x!`%`_idx{i#8440}.0]] +[visit_exp C.`MEMS`_context{`memtype*#23`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `memtype*#23`] +[visit_id memtype*#23] +[visit_exp x!`%`_idx{i#8440}.0] +[visit_exp x!`%`_idx{i#8440}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#8440] +[visit_id i#8440] +[visit_exp `%%PAGE`_memtype{addrtype#753, limits#753}(at, lim)] +[visit_exp addrtype#753] +[visit_id addrtype#753] +[visit_exp limits#753] +[visit_id limits#753] +[visit_exp (at, lim)] +[visit_exp at] +[visit_id at] not free +[visit_exp lim] +[visit_id lim] +[visit_exp (memarg, at, N)] +[visit_exp memarg] +[visit_id memarg] not free +[visit_exp at] +[visit_id at] not free +[visit_exp N] +[visit_id N] not free +[visit_exp ((i!`%`_laneidx{i#8454}.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat)))] +[visit_exp (i!`%`_laneidx{i#8454}.0 : nat <:> rat)] +[visit_exp i!`%`_laneidx{i#8454}.0] +[visit_exp i!`%`_laneidx{i#8454}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#8454] +[visit_id i#8454] +[visit_exp ((128 : nat <:> rat) / (N : nat <:> rat))] +[visit_exp (128 : nat <:> rat)] +[visit_exp 128] +[visit_exp (N : nat <:> rat)] +[visit_exp N] +[visit_id N] not free +[check_dims] C X*#9443 X*#9492 c_nt localidx*#1307 nt numtype#19 resulttype#2175 +[visit_exp C] +[visit_id C] +[visit_exp `CONST`_instr{numtype#19}(nt, c_nt)] +[visit_exp numtype#19] +[visit_id numtype#19] +[visit_exp (nt, c_nt)] +[visit_exp nt] +[visit_id nt] +[visit_exp c_nt] +[visit_id c_nt] +[visit_exp `%->_%%`_instrtype{resulttype#2175, `localidx*#1307`}(`%`_resulttype{`X*#9443`}([]), [], `%`_resulttype{`X*#9492`}([(nt : numtype <: valtype)]))] +[visit_exp resulttype#2175] +[visit_id resulttype#2175] +[visit_exp `localidx*#1307`] +[visit_id localidx*#1307] +[visit_exp (`%`_resulttype{`X*#9443`}([]), [], `%`_resulttype{`X*#9492`}([(nt : numtype <: valtype)]))] +[visit_exp `%`_resulttype{`X*#9443`}([])] +[visit_exp `X*#9443`] +[visit_id X*#9443] +[visit_exp ([])] +[visit_exp []] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#9492`}([(nt : numtype <: valtype)])] +[visit_exp `X*#9492`] +[visit_id X*#9492] +[visit_exp ([(nt : numtype <: valtype)])] +[visit_exp [(nt : numtype <: valtype)]] +[visit_exp (nt : numtype <: valtype)] +[visit_exp nt] +[visit_id nt] not free +[check_dims] C X*#9503 X*#9571 localidx*#1319 nt numtype#21 resulttype#2195 unop_nt +[visit_exp C] +[visit_id C] +[visit_exp `UNOP`_instr{numtype#21}(nt, unop_nt)] +[visit_exp numtype#21] +[visit_id numtype#21] +[visit_exp (nt, unop_nt)] +[visit_exp nt] +[visit_id nt] +[visit_exp unop_nt] +[visit_id unop_nt] +[visit_exp `%->_%%`_instrtype{resulttype#2195, `localidx*#1319`}(`%`_resulttype{`X*#9503`}([(nt : numtype <: valtype)]), [], `%`_resulttype{`X*#9571`}([(nt : numtype <: valtype)]))] +[visit_exp resulttype#2195] +[visit_id resulttype#2195] +[visit_exp `localidx*#1319`] +[visit_id localidx*#1319] +[visit_exp (`%`_resulttype{`X*#9503`}([(nt : numtype <: valtype)]), [], `%`_resulttype{`X*#9571`}([(nt : numtype <: valtype)]))] +[visit_exp `%`_resulttype{`X*#9503`}([(nt : numtype <: valtype)])] +[visit_exp `X*#9503`] +[visit_id X*#9503] +[visit_exp ([(nt : numtype <: valtype)])] +[visit_exp [(nt : numtype <: valtype)]] +[visit_exp (nt : numtype <: valtype)] +[visit_exp nt] +[visit_id nt] not free +[visit_exp []] +[visit_exp `%`_resulttype{`X*#9571`}([(nt : numtype <: valtype)])] +[visit_exp `X*#9571`] +[visit_id X*#9571] +[visit_exp ([(nt : numtype <: valtype)])] +[visit_exp [(nt : numtype <: valtype)]] +[visit_exp (nt : numtype <: valtype)] +[visit_exp nt] +[visit_id nt] not free +[check_dims] C X*#9592 X*#9641 binop_nt localidx*#1331 nt numtype#23 resulttype#2215 +[visit_exp C] +[visit_id C] +[visit_exp `BINOP`_instr{numtype#23}(nt, binop_nt)] +[visit_exp numtype#23] +[visit_id numtype#23] +[visit_exp (nt, binop_nt)] +[visit_exp nt] +[visit_id nt] +[visit_exp binop_nt] +[visit_id binop_nt] +[visit_exp `%->_%%`_instrtype{resulttype#2215, `localidx*#1331`}(`%`_resulttype{`X*#9592`}([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype{`X*#9641`}([(nt : numtype <: valtype)]))] +[visit_exp resulttype#2215] +[visit_id resulttype#2215] +[visit_exp `localidx*#1331`] +[visit_id localidx*#1331] +[visit_exp (`%`_resulttype{`X*#9592`}([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype{`X*#9641`}([(nt : numtype <: valtype)]))] +[visit_exp `%`_resulttype{`X*#9592`}([(nt : numtype <: valtype) (nt : numtype <: valtype)])] +[visit_exp `X*#9592`] +[visit_id X*#9592] +[visit_exp ([(nt : numtype <: valtype) (nt : numtype <: valtype)])] +[visit_exp [(nt : numtype <: valtype) (nt : numtype <: valtype)]] +[visit_exp (nt : numtype <: valtype)] +[visit_exp nt] +[visit_id nt] not free +[visit_exp (nt : numtype <: valtype)] +[visit_exp nt] +[visit_id nt] not free +[visit_exp []] +[visit_exp `%`_resulttype{`X*#9641`}([(nt : numtype <: valtype)])] +[visit_exp `X*#9641`] +[visit_id X*#9641] +[visit_exp ([(nt : numtype <: valtype)])] +[visit_exp [(nt : numtype <: valtype)]] +[visit_exp (nt : numtype <: valtype)] +[visit_exp nt] +[visit_id nt] not free +[check_dims] C X*#9652 X*#9720 localidx*#1343 nt numtype#25 resulttype#2235 testop_nt +[visit_exp C] +[visit_id C] +[visit_exp `TESTOP`_instr{numtype#25}(nt, testop_nt)] +[visit_exp numtype#25] +[visit_id numtype#25] +[visit_exp (nt, testop_nt)] +[visit_exp nt] +[visit_id nt] +[visit_exp testop_nt] +[visit_id testop_nt] +[visit_exp `%->_%%`_instrtype{resulttype#2235, `localidx*#1343`}(`%`_resulttype{`X*#9652`}([(nt : numtype <: valtype)]), [], `%`_resulttype{`X*#9720`}([`I32`_valtype]))] +[visit_exp resulttype#2235] +[visit_id resulttype#2235] +[visit_exp `localidx*#1343`] +[visit_id localidx*#1343] +[visit_exp (`%`_resulttype{`X*#9652`}([(nt : numtype <: valtype)]), [], `%`_resulttype{`X*#9720`}([`I32`_valtype]))] +[visit_exp `%`_resulttype{`X*#9652`}([(nt : numtype <: valtype)])] +[visit_exp `X*#9652`] +[visit_id X*#9652] +[visit_exp ([(nt : numtype <: valtype)])] +[visit_exp [(nt : numtype <: valtype)]] +[visit_exp (nt : numtype <: valtype)] +[visit_exp nt] +[visit_id nt] not free +[visit_exp []] +[visit_exp `%`_resulttype{`X*#9720`}([`I32`_valtype])] +[visit_exp `X*#9720`] +[visit_id X*#9720] +[visit_exp ([`I32`_valtype])] +[visit_exp [`I32`_valtype]] +[visit_exp `I32`_valtype] +[visit_exp ()] +[check_dims] C X*#9741 X*#9790 localidx*#1355 nt numtype#27 relop_nt resulttype#2255 +[visit_exp C] +[visit_id C] +[visit_exp `RELOP`_instr{numtype#27}(nt, relop_nt)] +[visit_exp numtype#27] +[visit_id numtype#27] +[visit_exp (nt, relop_nt)] +[visit_exp nt] +[visit_id nt] +[visit_exp relop_nt] +[visit_id relop_nt] +[visit_exp `%->_%%`_instrtype{resulttype#2255, `localidx*#1355`}(`%`_resulttype{`X*#9741`}([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype{`X*#9790`}([`I32`_valtype]))] +[visit_exp resulttype#2255] +[visit_id resulttype#2255] +[visit_exp `localidx*#1355`] +[visit_id localidx*#1355] +[visit_exp (`%`_resulttype{`X*#9741`}([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype{`X*#9790`}([`I32`_valtype]))] +[visit_exp `%`_resulttype{`X*#9741`}([(nt : numtype <: valtype) (nt : numtype <: valtype)])] +[visit_exp `X*#9741`] +[visit_id X*#9741] +[visit_exp ([(nt : numtype <: valtype) (nt : numtype <: valtype)])] +[visit_exp [(nt : numtype <: valtype) (nt : numtype <: valtype)]] +[visit_exp (nt : numtype <: valtype)] +[visit_exp nt] +[visit_id nt] not free +[visit_exp (nt : numtype <: valtype)] +[visit_exp nt] +[visit_id nt] not free +[visit_exp []] +[visit_exp `%`_resulttype{`X*#9790`}([`I32`_valtype])] +[visit_exp `X*#9790`] +[visit_id X*#9790] +[visit_exp ([`I32`_valtype])] +[visit_exp [`I32`_valtype]] +[visit_exp `I32`_valtype] +[visit_exp ()] +[check_dims] C X*#9801 X*#9869 cvtop localidx*#1367 nt_1 nt_2 numtype_1#3 numtype_2#3 resulttype#2275 +[visit_exp C] +[visit_id C] +[visit_exp `CVTOP`_instr{numtype_1#3, numtype_2#3}(nt_1, nt_2, cvtop)] +[visit_exp numtype_1#3] +[visit_id numtype_1#3] +[visit_exp numtype_2#3] +[visit_id numtype_2#3] +[visit_exp (nt_1, nt_2, cvtop)] +[visit_exp nt_1] +[visit_id nt_1] +[visit_exp nt_2] +[visit_id nt_2] +[visit_exp cvtop] +[visit_id cvtop] +[visit_exp `%->_%%`_instrtype{resulttype#2275, `localidx*#1367`}(`%`_resulttype{`X*#9801`}([(nt_2 : numtype <: valtype)]), [], `%`_resulttype{`X*#9869`}([(nt_1 : numtype <: valtype)]))] +[visit_exp resulttype#2275] +[visit_id resulttype#2275] +[visit_exp `localidx*#1367`] +[visit_id localidx*#1367] +[visit_exp (`%`_resulttype{`X*#9801`}([(nt_2 : numtype <: valtype)]), [], `%`_resulttype{`X*#9869`}([(nt_1 : numtype <: valtype)]))] +[visit_exp `%`_resulttype{`X*#9801`}([(nt_2 : numtype <: valtype)])] +[visit_exp `X*#9801`] +[visit_id X*#9801] +[visit_exp ([(nt_2 : numtype <: valtype)])] +[visit_exp [(nt_2 : numtype <: valtype)]] +[visit_exp (nt_2 : numtype <: valtype)] +[visit_exp nt_2] +[visit_id nt_2] not free +[visit_exp []] +[visit_exp `%`_resulttype{`X*#9869`}([(nt_1 : numtype <: valtype)])] +[visit_exp `X*#9869`] +[visit_id X*#9869] +[visit_exp ([(nt_1 : numtype <: valtype)])] +[visit_exp [(nt_1 : numtype <: valtype)]] +[visit_exp (nt_1 : numtype <: valtype)] +[visit_exp nt_1] +[visit_id nt_1] not free +[check_dims] C X*#9890 X*#9939 c localidx*#1379 resulttype#2295 vectype#30 +[visit_exp C] +[visit_id C] +[visit_exp `VCONST`_instr{vectype#30}(`V128`_vectype, c)] +[visit_exp vectype#30] +[visit_id vectype#30] +[visit_exp (`V128`_vectype, c)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c] +[visit_id c] +[visit_exp `%->_%%`_instrtype{resulttype#2295, `localidx*#1379`}(`%`_resulttype{`X*#9890`}([]), [], `%`_resulttype{`X*#9939`}([`V128`_valtype]))] +[visit_exp resulttype#2295] +[visit_id resulttype#2295] +[visit_exp `localidx*#1379`] +[visit_id localidx*#1379] +[visit_exp (`%`_resulttype{`X*#9890`}([]), [], `%`_resulttype{`X*#9939`}([`V128`_valtype]))] +[visit_exp `%`_resulttype{`X*#9890`}([])] +[visit_exp `X*#9890`] +[visit_id X*#9890] +[visit_exp ([])] +[visit_exp []] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#9939`}([`V128`_valtype])] +[visit_exp `X*#9939`] +[visit_id X*#9939] +[visit_exp ([`V128`_valtype])] +[visit_exp [`V128`_valtype]] +[visit_exp `V128`_valtype] +[visit_exp ()] +[check_dims] C X*#10007 X*#9958 localidx*#1391 resulttype#2315 vectype#32 vvunop vvunop#3 +[visit_exp C] +[visit_id C] +[visit_exp `VVUNOP`_instr{vectype#32, vvunop#3}(`V128`_vectype, vvunop)] +[visit_exp vectype#32] +[visit_id vectype#32] +[visit_exp vvunop#3] +[visit_id vvunop#3] +[visit_exp (`V128`_vectype, vvunop)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp vvunop] +[visit_id vvunop] +[visit_exp `%->_%%`_instrtype{resulttype#2315, `localidx*#1391`}(`%`_resulttype{`X*#9958`}([`V128`_valtype]), [], `%`_resulttype{`X*#10007`}([`V128`_valtype]))] +[visit_exp resulttype#2315] +[visit_id resulttype#2315] +[visit_exp `localidx*#1391`] +[visit_id localidx*#1391] +[visit_exp (`%`_resulttype{`X*#9958`}([`V128`_valtype]), [], `%`_resulttype{`X*#10007`}([`V128`_valtype]))] +[visit_exp `%`_resulttype{`X*#9958`}([`V128`_valtype])] +[visit_exp `X*#9958`] +[visit_id X*#9958] +[visit_exp ([`V128`_valtype])] +[visit_exp [`V128`_valtype]] +[visit_exp `V128`_valtype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#10007`}([`V128`_valtype])] +[visit_exp `X*#10007`] +[visit_id X*#10007] +[visit_exp ([`V128`_valtype])] +[visit_exp [`V128`_valtype]] +[visit_exp `V128`_valtype] +[visit_exp ()] +[check_dims] C X*#10028 X*#10077 localidx*#1403 resulttype#2335 vectype#34 vvbinop vvbinop#3 +[visit_exp C] +[visit_id C] +[visit_exp `VVBINOP`_instr{vectype#34, vvbinop#3}(`V128`_vectype, vvbinop)] +[visit_exp vectype#34] +[visit_id vectype#34] +[visit_exp vvbinop#3] +[visit_id vvbinop#3] +[visit_exp (`V128`_vectype, vvbinop)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp vvbinop] +[visit_id vvbinop] +[visit_exp `%->_%%`_instrtype{resulttype#2335, `localidx*#1403`}(`%`_resulttype{`X*#10028`}([`V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#10077`}([`V128`_valtype]))] +[visit_exp resulttype#2335] +[visit_id resulttype#2335] +[visit_exp `localidx*#1403`] +[visit_id localidx*#1403] +[visit_exp (`%`_resulttype{`X*#10028`}([`V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#10077`}([`V128`_valtype]))] +[visit_exp `%`_resulttype{`X*#10028`}([`V128`_valtype `V128`_valtype])] +[visit_exp `X*#10028`] +[visit_id X*#10028] +[visit_exp ([`V128`_valtype `V128`_valtype])] +[visit_exp [`V128`_valtype `V128`_valtype]] +[visit_exp `V128`_valtype] +[visit_exp ()] +[visit_exp `V128`_valtype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#10077`}([`V128`_valtype])] +[visit_exp `X*#10077`] +[visit_id X*#10077] +[visit_exp ([`V128`_valtype])] +[visit_exp [`V128`_valtype]] +[visit_exp `V128`_valtype] +[visit_exp ()] +[check_dims] C X*#10098 X*#10147 localidx*#1415 resulttype#2355 vectype#36 vvternop vvternop#3 +[visit_exp C] +[visit_id C] +[visit_exp `VVTERNOP`_instr{vectype#36, vvternop#3}(`V128`_vectype, vvternop)] +[visit_exp vectype#36] +[visit_id vectype#36] +[visit_exp vvternop#3] +[visit_id vvternop#3] +[visit_exp (`V128`_vectype, vvternop)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp vvternop] +[visit_id vvternop] +[visit_exp `%->_%%`_instrtype{resulttype#2355, `localidx*#1415`}(`%`_resulttype{`X*#10098`}([`V128`_valtype `V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#10147`}([`V128`_valtype]))] +[visit_exp resulttype#2355] +[visit_id resulttype#2355] +[visit_exp `localidx*#1415`] +[visit_id localidx*#1415] +[visit_exp (`%`_resulttype{`X*#10098`}([`V128`_valtype `V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#10147`}([`V128`_valtype]))] +[visit_exp `%`_resulttype{`X*#10098`}([`V128`_valtype `V128`_valtype `V128`_valtype])] +[visit_exp `X*#10098`] +[visit_id X*#10098] +[visit_exp ([`V128`_valtype `V128`_valtype `V128`_valtype])] +[visit_exp [`V128`_valtype `V128`_valtype `V128`_valtype]] +[visit_exp `V128`_valtype] +[visit_exp ()] +[visit_exp `V128`_valtype] +[visit_exp ()] +[visit_exp `V128`_valtype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#10147`}([`V128`_valtype])] +[visit_exp `X*#10147`] +[visit_id X*#10147] +[visit_exp ([`V128`_valtype])] +[visit_exp [`V128`_valtype]] +[visit_exp `V128`_valtype] +[visit_exp ()] +[check_dims] C X*#10166 X*#10215 localidx*#1427 resulttype#2375 vectype#38 vvtestop vvtestop#3 +[visit_exp C] +[visit_id C] +[visit_exp `VVTESTOP`_instr{vectype#38, vvtestop#3}(`V128`_vectype, vvtestop)] +[visit_exp vectype#38] +[visit_id vectype#38] +[visit_exp vvtestop#3] +[visit_id vvtestop#3] +[visit_exp (`V128`_vectype, vvtestop)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp vvtestop] +[visit_id vvtestop] +[visit_exp `%->_%%`_instrtype{resulttype#2375, `localidx*#1427`}(`%`_resulttype{`X*#10166`}([`V128`_valtype]), [], `%`_resulttype{`X*#10215`}([`I32`_valtype]))] +[visit_exp resulttype#2375] +[visit_id resulttype#2375] +[visit_exp `localidx*#1427`] +[visit_id localidx*#1427] +[visit_exp (`%`_resulttype{`X*#10166`}([`V128`_valtype]), [], `%`_resulttype{`X*#10215`}([`I32`_valtype]))] +[visit_exp `%`_resulttype{`X*#10166`}([`V128`_valtype])] +[visit_exp `X*#10166`] +[visit_id X*#10166] +[visit_exp ([`V128`_valtype])] +[visit_exp [`V128`_valtype]] +[visit_exp `V128`_valtype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#10215`}([`I32`_valtype])] +[visit_exp `X*#10215`] +[visit_id X*#10215] +[visit_exp ([`I32`_valtype])] +[visit_exp [`I32`_valtype]] +[visit_exp `I32`_valtype] +[visit_exp ()] +[check_dims] C X*#10234 X*#10283 localidx*#1439 resulttype#2395 sh shape#269 vunop +[visit_exp C] +[visit_id C] +[visit_exp `VUNOP`_instr{shape#269}(sh, vunop)] +[visit_exp shape#269] +[visit_id shape#269] +[visit_exp (sh, vunop)] +[visit_exp sh] +[visit_id sh] +[visit_exp vunop] +[visit_id vunop] +[visit_exp `%->_%%`_instrtype{resulttype#2395, `localidx*#1439`}(`%`_resulttype{`X*#10234`}([`V128`_valtype]), [], `%`_resulttype{`X*#10283`}([`V128`_valtype]))] +[visit_exp resulttype#2395] +[visit_id resulttype#2395] +[visit_exp `localidx*#1439`] +[visit_id localidx*#1439] +[visit_exp (`%`_resulttype{`X*#10234`}([`V128`_valtype]), [], `%`_resulttype{`X*#10283`}([`V128`_valtype]))] +[visit_exp `%`_resulttype{`X*#10234`}([`V128`_valtype])] +[visit_exp `X*#10234`] +[visit_id X*#10234] +[visit_exp ([`V128`_valtype])] +[visit_exp [`V128`_valtype]] +[visit_exp `V128`_valtype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#10283`}([`V128`_valtype])] +[visit_exp `X*#10283`] +[visit_id X*#10283] +[visit_exp ([`V128`_valtype])] +[visit_exp [`V128`_valtype]] +[visit_exp `V128`_valtype] +[visit_exp ()] +[check_dims] C X*#10304 X*#10353 localidx*#1451 resulttype#2415 sh shape#271 vbinop +[visit_exp C] +[visit_id C] +[visit_exp `VBINOP`_instr{shape#271}(sh, vbinop)] +[visit_exp shape#271] +[visit_id shape#271] +[visit_exp (sh, vbinop)] +[visit_exp sh] +[visit_id sh] +[visit_exp vbinop] +[visit_id vbinop] +[visit_exp `%->_%%`_instrtype{resulttype#2415, `localidx*#1451`}(`%`_resulttype{`X*#10304`}([`V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#10353`}([`V128`_valtype]))] +[visit_exp resulttype#2415] +[visit_id resulttype#2415] +[visit_exp `localidx*#1451`] +[visit_id localidx*#1451] +[visit_exp (`%`_resulttype{`X*#10304`}([`V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#10353`}([`V128`_valtype]))] +[visit_exp `%`_resulttype{`X*#10304`}([`V128`_valtype `V128`_valtype])] +[visit_exp `X*#10304`] +[visit_id X*#10304] +[visit_exp ([`V128`_valtype `V128`_valtype])] +[visit_exp [`V128`_valtype `V128`_valtype]] +[visit_exp `V128`_valtype] +[visit_exp ()] +[visit_exp `V128`_valtype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#10353`}([`V128`_valtype])] +[visit_exp `X*#10353`] +[visit_id X*#10353] +[visit_exp ([`V128`_valtype])] +[visit_exp [`V128`_valtype]] +[visit_exp `V128`_valtype] +[visit_exp ()] +[check_dims] C X*#10374 X*#10423 localidx*#1463 resulttype#2435 sh shape#273 vternop +[visit_exp C] +[visit_id C] +[visit_exp `VTERNOP`_instr{shape#273}(sh, vternop)] +[visit_exp shape#273] +[visit_id shape#273] +[visit_exp (sh, vternop)] +[visit_exp sh] +[visit_id sh] +[visit_exp vternop] +[visit_id vternop] +[visit_exp `%->_%%`_instrtype{resulttype#2435, `localidx*#1463`}(`%`_resulttype{`X*#10374`}([`V128`_valtype `V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#10423`}([`V128`_valtype]))] +[visit_exp resulttype#2435] +[visit_id resulttype#2435] +[visit_exp `localidx*#1463`] +[visit_id localidx*#1463] +[visit_exp (`%`_resulttype{`X*#10374`}([`V128`_valtype `V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#10423`}([`V128`_valtype]))] +[visit_exp `%`_resulttype{`X*#10374`}([`V128`_valtype `V128`_valtype `V128`_valtype])] +[visit_exp `X*#10374`] +[visit_id X*#10374] +[visit_exp ([`V128`_valtype `V128`_valtype `V128`_valtype])] +[visit_exp [`V128`_valtype `V128`_valtype `V128`_valtype]] +[visit_exp `V128`_valtype] +[visit_exp ()] +[visit_exp `V128`_valtype] +[visit_exp ()] +[visit_exp `V128`_valtype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#10423`}([`V128`_valtype])] +[visit_exp `X*#10423`] +[visit_id X*#10423] +[visit_exp ([`V128`_valtype])] +[visit_exp [`V128`_valtype]] +[visit_exp `V128`_valtype] +[visit_exp ()] +[check_dims] C X*#10442 X*#10491 localidx*#1475 resulttype#2455 sh shape#275 vtestop +[visit_exp C] +[visit_id C] +[visit_exp `VTESTOP`_instr{shape#275}(sh, vtestop)] +[visit_exp shape#275] +[visit_id shape#275] +[visit_exp (sh, vtestop)] +[visit_exp sh] +[visit_id sh] +[visit_exp vtestop] +[visit_id vtestop] +[visit_exp `%->_%%`_instrtype{resulttype#2455, `localidx*#1475`}(`%`_resulttype{`X*#10442`}([`V128`_valtype]), [], `%`_resulttype{`X*#10491`}([`I32`_valtype]))] +[visit_exp resulttype#2455] +[visit_id resulttype#2455] +[visit_exp `localidx*#1475`] +[visit_id localidx*#1475] +[visit_exp (`%`_resulttype{`X*#10442`}([`V128`_valtype]), [], `%`_resulttype{`X*#10491`}([`I32`_valtype]))] +[visit_exp `%`_resulttype{`X*#10442`}([`V128`_valtype])] +[visit_exp `X*#10442`] +[visit_id X*#10442] +[visit_exp ([`V128`_valtype])] +[visit_exp [`V128`_valtype]] +[visit_exp `V128`_valtype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#10491`}([`I32`_valtype])] +[visit_exp `X*#10491`] +[visit_id X*#10491] +[visit_exp ([`I32`_valtype])] +[visit_exp [`I32`_valtype]] +[visit_exp `I32`_valtype] +[visit_exp ()] +[check_dims] C X*#10512 X*#10561 localidx*#1487 resulttype#2475 sh shape#277 vrelop +[visit_exp C] +[visit_id C] +[visit_exp `VRELOP`_instr{shape#277}(sh, vrelop)] +[visit_exp shape#277] +[visit_id shape#277] +[visit_exp (sh, vrelop)] +[visit_exp sh] +[visit_id sh] +[visit_exp vrelop] +[visit_id vrelop] +[visit_exp `%->_%%`_instrtype{resulttype#2475, `localidx*#1487`}(`%`_resulttype{`X*#10512`}([`V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#10561`}([`V128`_valtype]))] +[visit_exp resulttype#2475] +[visit_id resulttype#2475] +[visit_exp `localidx*#1487`] +[visit_id localidx*#1487] +[visit_exp (`%`_resulttype{`X*#10512`}([`V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#10561`}([`V128`_valtype]))] +[visit_exp `%`_resulttype{`X*#10512`}([`V128`_valtype `V128`_valtype])] +[visit_exp `X*#10512`] +[visit_id X*#10512] +[visit_exp ([`V128`_valtype `V128`_valtype])] +[visit_exp [`V128`_valtype `V128`_valtype]] +[visit_exp `V128`_valtype] +[visit_exp ()] +[visit_exp `V128`_valtype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#10561`}([`V128`_valtype])] +[visit_exp `X*#10561`] +[visit_id X*#10561] +[visit_exp ([`V128`_valtype])] +[visit_exp [`V128`_valtype]] +[visit_exp `V128`_valtype] +[visit_exp ()] +[check_dims] C X*#10582 X*#10631 ishape#5 localidx*#1499 resulttype#2495 sh vshiftop +[visit_exp C] +[visit_id C] +[visit_exp `VSHIFTOP`_instr{ishape#5}(sh, vshiftop)] +[visit_exp ishape#5] +[visit_id ishape#5] +[visit_exp (sh, vshiftop)] +[visit_exp sh] +[visit_id sh] +[visit_exp vshiftop] +[visit_id vshiftop] +[visit_exp `%->_%%`_instrtype{resulttype#2495, `localidx*#1499`}(`%`_resulttype{`X*#10582`}([`V128`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#10631`}([`V128`_valtype]))] +[visit_exp resulttype#2495] +[visit_id resulttype#2495] +[visit_exp `localidx*#1499`] +[visit_id localidx*#1499] +[visit_exp (`%`_resulttype{`X*#10582`}([`V128`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#10631`}([`V128`_valtype]))] +[visit_exp `%`_resulttype{`X*#10582`}([`V128`_valtype `I32`_valtype])] +[visit_exp `X*#10582`] +[visit_id X*#10582] +[visit_exp ([`V128`_valtype `I32`_valtype])] +[visit_exp [`V128`_valtype `I32`_valtype]] +[visit_exp `V128`_valtype] +[visit_exp ()] +[visit_exp `I32`_valtype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#10631`}([`V128`_valtype])] +[visit_exp `X*#10631`] +[visit_id X*#10631] +[visit_exp ([`V128`_valtype])] +[visit_exp [`V128`_valtype]] +[visit_exp `V128`_valtype] +[visit_exp ()] +[check_dims] C X*#10650 X*#10699 ishape#7 localidx*#1511 resulttype#2515 sh +[visit_exp C] +[visit_id C] +[visit_exp `VBITMASK`_instr{ishape#7}(sh)] +[visit_exp ishape#7] +[visit_id ishape#7] +[visit_exp (sh)] +[visit_exp sh] +[visit_id sh] +[visit_exp `%->_%%`_instrtype{resulttype#2515, `localidx*#1511`}(`%`_resulttype{`X*#10650`}([`V128`_valtype]), [], `%`_resulttype{`X*#10699`}([`I32`_valtype]))] +[visit_exp resulttype#2515] +[visit_id resulttype#2515] +[visit_exp `localidx*#1511`] +[visit_id localidx*#1511] +[visit_exp (`%`_resulttype{`X*#10650`}([`V128`_valtype]), [], `%`_resulttype{`X*#10699`}([`I32`_valtype]))] +[visit_exp `%`_resulttype{`X*#10650`}([`V128`_valtype])] +[visit_exp `X*#10650`] +[visit_id X*#10650] +[visit_exp ([`V128`_valtype])] +[visit_exp [`V128`_valtype]] +[visit_exp `V128`_valtype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#10699`}([`I32`_valtype])] +[visit_exp `X*#10699`] +[visit_id X*#10699] +[visit_exp ([`I32`_valtype])] +[visit_exp [`I32`_valtype]] +[visit_exp `I32`_valtype] +[visit_exp ()] +[check_dims] C X*#10720 X*#10769 bshape#5 localidx*#1523 resulttype#2535 sh vswizzlop +[visit_exp C] +[visit_id C] +[visit_exp `VSWIZZLOP`_instr{bshape#5}(sh, vswizzlop)] +[visit_exp bshape#5] +[visit_id bshape#5] +[visit_exp (sh, vswizzlop)] +[visit_exp sh] +[visit_id sh] +[visit_exp vswizzlop] +[visit_id vswizzlop] +[visit_exp `%->_%%`_instrtype{resulttype#2535, `localidx*#1523`}(`%`_resulttype{`X*#10720`}([`V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#10769`}([`V128`_valtype]))] +[visit_exp resulttype#2535] +[visit_id resulttype#2535] +[visit_exp `localidx*#1523`] +[visit_id localidx*#1523] +[visit_exp (`%`_resulttype{`X*#10720`}([`V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#10769`}([`V128`_valtype]))] +[visit_exp `%`_resulttype{`X*#10720`}([`V128`_valtype `V128`_valtype])] +[visit_exp `X*#10720`] +[visit_id X*#10720] +[visit_exp ([`V128`_valtype `V128`_valtype])] +[visit_exp [`V128`_valtype `V128`_valtype]] +[visit_exp `V128`_valtype] +[visit_exp ()] +[visit_exp `V128`_valtype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#10769`}([`V128`_valtype])] +[visit_exp `X*#10769`] +[visit_id X*#10769] +[visit_exp ([`V128`_valtype])] +[visit_exp [`V128`_valtype]] +[visit_exp `V128`_valtype] +[visit_exp ()] +[check_dims] C X*#10790 X*#10839 bshape#7 i i#8480 i#8509 i#8523 laneidx*#3 localidx*#1535 resulttype#2555 sh shape#297 shape#304 +[visit_exp C] +[visit_id C] +[visit_exp `VSHUFFLE`_instr{bshape#7, `laneidx*#3`, i#8480, shape#297}(sh, i*{i <- `i*`})] +[visit_exp bshape#7] +[visit_id bshape#7] +[visit_exp `laneidx*#3`] +[visit_id laneidx*#3] +[visit_exp i#8480] +[visit_id i#8480] +[visit_exp shape#297] +[visit_id shape#297] +[visit_exp (sh, i*{i <- `i*`})] +[visit_exp sh] +[visit_id sh] +[visit_exp i*{i <- `i*`}] +[scope_enter i] +[visit_exp i] +[visit_id i] not free +[visit_id i] not free +[scope_exit i] +[visit_exp `i*`] +[visit_id i*] no dims +[visit_id i*] +[visit_exp `%->_%%`_instrtype{resulttype#2555, `localidx*#1535`}(`%`_resulttype{`X*#10790`}([`V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#10839`}([`V128`_valtype]))] +[visit_exp resulttype#2555] +[visit_id resulttype#2555] +[visit_exp `localidx*#1535`] +[visit_id localidx*#1535] +[visit_exp (`%`_resulttype{`X*#10790`}([`V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#10839`}([`V128`_valtype]))] +[visit_exp `%`_resulttype{`X*#10790`}([`V128`_valtype `V128`_valtype])] +[visit_exp `X*#10790`] +[visit_id X*#10790] +[visit_exp ([`V128`_valtype `V128`_valtype])] +[visit_exp [`V128`_valtype `V128`_valtype]] +[visit_exp `V128`_valtype] +[visit_exp ()] +[visit_exp `V128`_valtype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#10839`}([`V128`_valtype])] +[visit_exp `X*#10839`] +[visit_id X*#10839] +[visit_exp ([`V128`_valtype])] +[visit_exp [`V128`_valtype]] +[visit_exp `V128`_valtype] +[visit_exp ()] +[scope_enter i] +[scope_enter i#8509] +[scope_enter i#8523] +[scope_enter shape#304] +[visit_exp (i!`%`_laneidx{i#8523}.0 < (2 * $dim(sh!`%`_bshape{shape#304}.0)!`%`_dim{i#8509}.0))] +[visit_exp i!`%`_laneidx{i#8523}.0] +[visit_exp i!`%`_laneidx{i#8523}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#8523] +[visit_id i#8523] not free +[visit_exp (2 * $dim(sh!`%`_bshape{shape#304}.0)!`%`_dim{i#8509}.0)] +[visit_exp 2] +[visit_exp $dim(sh!`%`_bshape{shape#304}.0)!`%`_dim{i#8509}.0] +[visit_exp $dim(sh!`%`_bshape{shape#304}.0)!`%`_dim{i#8509}] +[visit_exp $dim(sh!`%`_bshape{shape#304}.0)] +[visit_exp sh!`%`_bshape{shape#304}.0] +[visit_exp sh!`%`_bshape{shape#304}] +[visit_exp sh] +[visit_id sh] not free +[visit_exp shape#304] +[visit_id shape#304] not free +[visit_exp i#8509] +[visit_id i#8509] not free +[visit_id i] not free +[visit_id i#8509] not free +[visit_id i#8523] not free +[visit_id shape#304] not free +[scope_exit shape#304] +[scope_exit i#8523] +[scope_exit i#8509] +[scope_exit i] +[visit_exp `i*`] +[visit_id i*] not free +[visit_id i*] no dims +[visit_exp `i#8509*`] +[visit_id i#8509*] no dims +[visit_id i#8509*] +[visit_exp `i#8523*`] +[visit_id i#8523*] no dims +[visit_id i#8523*] +[visit_exp `shape#304*`] +[visit_id shape#304*] no dims +[visit_id shape#304*] +[check_dims] C X*#10850 X*#10916 localidx*#1547 resulttype#2575 sh shape#306 +[visit_exp C] +[visit_id C] +[visit_exp `VSPLAT`_instr{shape#306}(sh)] +[visit_exp shape#306] +[visit_id shape#306] +[visit_exp (sh)] +[visit_exp sh] +[visit_id sh] +[visit_exp `%->_%%`_instrtype{resulttype#2575, `localidx*#1547`}(`%`_resulttype{`X*#10850`}([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype{`X*#10916`}([`V128`_valtype]))] +[visit_exp resulttype#2575] +[visit_id resulttype#2575] +[visit_exp `localidx*#1547`] +[visit_id localidx*#1547] +[visit_exp (`%`_resulttype{`X*#10850`}([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype{`X*#10916`}([`V128`_valtype]))] +[visit_exp `%`_resulttype{`X*#10850`}([($unpackshape(sh) : numtype <: valtype)])] +[visit_exp `X*#10850`] +[visit_id X*#10850] +[visit_exp ([($unpackshape(sh) : numtype <: valtype)])] +[visit_exp [($unpackshape(sh) : numtype <: valtype)]] +[visit_exp ($unpackshape(sh) : numtype <: valtype)] +[visit_exp $unpackshape(sh)] +[visit_exp sh] +[visit_id sh] not free +[visit_exp []] +[visit_exp `%`_resulttype{`X*#10916`}([`V128`_valtype])] +[visit_exp `X*#10916`] +[visit_id X*#10916] +[visit_exp ([`V128`_valtype])] +[visit_exp [`V128`_valtype]] +[visit_exp `V128`_valtype] +[visit_exp ()] +[check_dims] C X*#10935 X*#10984 i i#8600 i#8602 laneidx#13 localidx*#1559 resulttype#2595 sh shape#308 sx sx?#11 +[visit_exp C] +[visit_id C] +[visit_exp `VEXTRACT_LANE`_instr{shape#308, `sx?#11`, laneidx#13}(sh, sx?{sx <- `sx?`}, i)] +[visit_exp shape#308] +[visit_id shape#308] +[visit_exp `sx?#11`] +[visit_id sx?#11] +[visit_exp laneidx#13] +[visit_id laneidx#13] +[visit_exp (sh, sx?{sx <- `sx?`}, i)] +[visit_exp sh] +[visit_id sh] +[visit_exp sx?{sx <- `sx?`}] +[scope_enter sx] +[visit_exp sx] +[visit_id sx] not free +[visit_id sx] not free +[scope_exit sx] +[visit_exp `sx?`] +[visit_id sx?] no dims +[visit_id sx?] +[visit_exp i] +[visit_id i] +[visit_exp `%->_%%`_instrtype{resulttype#2595, `localidx*#1559`}(`%`_resulttype{`X*#10935`}([`V128`_valtype]), [], `%`_resulttype{`X*#10984`}([($unpackshape(sh) : numtype <: valtype)]))] +[visit_exp resulttype#2595] +[visit_id resulttype#2595] +[visit_exp `localidx*#1559`] +[visit_id localidx*#1559] +[visit_exp (`%`_resulttype{`X*#10935`}([`V128`_valtype]), [], `%`_resulttype{`X*#10984`}([($unpackshape(sh) : numtype <: valtype)]))] +[visit_exp `%`_resulttype{`X*#10935`}([`V128`_valtype])] +[visit_exp `X*#10935`] +[visit_id X*#10935] +[visit_exp ([`V128`_valtype])] +[visit_exp [`V128`_valtype]] +[visit_exp `V128`_valtype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#10984`}([($unpackshape(sh) : numtype <: valtype)])] +[visit_exp `X*#10984`] +[visit_id X*#10984] +[visit_exp ([($unpackshape(sh) : numtype <: valtype)])] +[visit_exp [($unpackshape(sh) : numtype <: valtype)]] +[visit_exp ($unpackshape(sh) : numtype <: valtype)] +[visit_exp $unpackshape(sh)] +[visit_exp sh] +[visit_id sh] not free +[visit_exp (i!`%`_laneidx{i#8600}.0 < $dim(sh)!`%`_dim{i#8602}.0)] +[visit_exp i!`%`_laneidx{i#8600}.0] +[visit_exp i!`%`_laneidx{i#8600}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#8600] +[visit_id i#8600] +[visit_exp $dim(sh)!`%`_dim{i#8602}.0] +[visit_exp $dim(sh)!`%`_dim{i#8602}] +[visit_exp $dim(sh)] +[visit_exp sh] +[visit_id sh] not free +[visit_exp i#8602] +[visit_id i#8602] +[check_dims] C X*#11005 X*#11054 i i#8636 i#8638 laneidx#15 localidx*#1571 resulttype#2615 sh shape#310 +[visit_exp C] +[visit_id C] +[visit_exp `VREPLACE_LANE`_instr{shape#310, laneidx#15}(sh, i)] +[visit_exp shape#310] +[visit_id shape#310] +[visit_exp laneidx#15] +[visit_id laneidx#15] +[visit_exp (sh, i)] +[visit_exp sh] +[visit_id sh] +[visit_exp i] +[visit_id i] +[visit_exp `%->_%%`_instrtype{resulttype#2615, `localidx*#1571`}(`%`_resulttype{`X*#11005`}([`V128`_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype{`X*#11054`}([`V128`_valtype]))] +[visit_exp resulttype#2615] +[visit_id resulttype#2615] +[visit_exp `localidx*#1571`] +[visit_id localidx*#1571] +[visit_exp (`%`_resulttype{`X*#11005`}([`V128`_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype{`X*#11054`}([`V128`_valtype]))] +[visit_exp `%`_resulttype{`X*#11005`}([`V128`_valtype ($unpackshape(sh) : numtype <: valtype)])] +[visit_exp `X*#11005`] +[visit_id X*#11005] +[visit_exp ([`V128`_valtype ($unpackshape(sh) : numtype <: valtype)])] +[visit_exp [`V128`_valtype ($unpackshape(sh) : numtype <: valtype)]] +[visit_exp `V128`_valtype] +[visit_exp ()] +[visit_exp ($unpackshape(sh) : numtype <: valtype)] +[visit_exp $unpackshape(sh)] +[visit_exp sh] +[visit_id sh] not free +[visit_exp []] +[visit_exp `%`_resulttype{`X*#11054`}([`V128`_valtype])] +[visit_exp `X*#11054`] +[visit_id X*#11054] +[visit_exp ([`V128`_valtype])] +[visit_exp [`V128`_valtype]] +[visit_exp `V128`_valtype] +[visit_exp ()] +[visit_exp (i!`%`_laneidx{i#8636}.0 < $dim(sh)!`%`_dim{i#8638}.0)] +[visit_exp i!`%`_laneidx{i#8636}.0] +[visit_exp i!`%`_laneidx{i#8636}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#8636] +[visit_id i#8636] +[visit_exp $dim(sh)!`%`_dim{i#8638}.0] +[visit_exp $dim(sh)!`%`_dim{i#8638}] +[visit_exp $dim(sh)] +[visit_exp sh] +[visit_id sh] not free +[visit_exp i#8638] +[visit_id i#8638] +[check_dims] C X*#11073 X*#11122 ishape_1#9 ishape_2#9 localidx*#1583 resulttype#2635 sh_1 sh_2 vextunop +[visit_exp C] +[visit_id C] +[visit_exp `VEXTUNOP`_instr{ishape_1#9, ishape_2#9}(sh_1, sh_2, vextunop)] +[visit_exp ishape_1#9] +[visit_id ishape_1#9] +[visit_exp ishape_2#9] +[visit_id ishape_2#9] +[visit_exp (sh_1, sh_2, vextunop)] +[visit_exp sh_1] +[visit_id sh_1] +[visit_exp sh_2] +[visit_id sh_2] +[visit_exp vextunop] +[visit_id vextunop] +[visit_exp `%->_%%`_instrtype{resulttype#2635, `localidx*#1583`}(`%`_resulttype{`X*#11073`}([`V128`_valtype]), [], `%`_resulttype{`X*#11122`}([`V128`_valtype]))] +[visit_exp resulttype#2635] +[visit_id resulttype#2635] +[visit_exp `localidx*#1583`] +[visit_id localidx*#1583] +[visit_exp (`%`_resulttype{`X*#11073`}([`V128`_valtype]), [], `%`_resulttype{`X*#11122`}([`V128`_valtype]))] +[visit_exp `%`_resulttype{`X*#11073`}([`V128`_valtype])] +[visit_exp `X*#11073`] +[visit_id X*#11073] +[visit_exp ([`V128`_valtype])] +[visit_exp [`V128`_valtype]] +[visit_exp `V128`_valtype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#11122`}([`V128`_valtype])] +[visit_exp `X*#11122`] +[visit_id X*#11122] +[visit_exp ([`V128`_valtype])] +[visit_exp [`V128`_valtype]] +[visit_exp `V128`_valtype] +[visit_exp ()] +[check_dims] C X*#11143 X*#11192 ishape_1#11 ishape_2#11 localidx*#1595 resulttype#2655 sh_1 sh_2 vextbinop +[visit_exp C] +[visit_id C] +[visit_exp `VEXTBINOP`_instr{ishape_1#11, ishape_2#11}(sh_1, sh_2, vextbinop)] +[visit_exp ishape_1#11] +[visit_id ishape_1#11] +[visit_exp ishape_2#11] +[visit_id ishape_2#11] +[visit_exp (sh_1, sh_2, vextbinop)] +[visit_exp sh_1] +[visit_id sh_1] +[visit_exp sh_2] +[visit_id sh_2] +[visit_exp vextbinop] +[visit_id vextbinop] +[visit_exp `%->_%%`_instrtype{resulttype#2655, `localidx*#1595`}(`%`_resulttype{`X*#11143`}([`V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#11192`}([`V128`_valtype]))] +[visit_exp resulttype#2655] +[visit_id resulttype#2655] +[visit_exp `localidx*#1595`] +[visit_id localidx*#1595] +[visit_exp (`%`_resulttype{`X*#11143`}([`V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#11192`}([`V128`_valtype]))] +[visit_exp `%`_resulttype{`X*#11143`}([`V128`_valtype `V128`_valtype])] +[visit_exp `X*#11143`] +[visit_id X*#11143] +[visit_exp ([`V128`_valtype `V128`_valtype])] +[visit_exp [`V128`_valtype `V128`_valtype]] +[visit_exp `V128`_valtype] +[visit_exp ()] +[visit_exp `V128`_valtype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#11192`}([`V128`_valtype])] +[visit_exp `X*#11192`] +[visit_id X*#11192] +[visit_exp ([`V128`_valtype])] +[visit_exp [`V128`_valtype]] +[visit_exp `V128`_valtype] +[visit_exp ()] +[check_dims] C X*#11213 X*#11262 ishape_1#13 ishape_2#13 localidx*#1607 resulttype#2675 sh_1 sh_2 vextternop +[visit_exp C] +[visit_id C] +[visit_exp `VEXTTERNOP`_instr{ishape_1#13, ishape_2#13}(sh_1, sh_2, vextternop)] +[visit_exp ishape_1#13] +[visit_id ishape_1#13] +[visit_exp ishape_2#13] +[visit_id ishape_2#13] +[visit_exp (sh_1, sh_2, vextternop)] +[visit_exp sh_1] +[visit_id sh_1] +[visit_exp sh_2] +[visit_id sh_2] +[visit_exp vextternop] +[visit_id vextternop] +[visit_exp `%->_%%`_instrtype{resulttype#2675, `localidx*#1607`}(`%`_resulttype{`X*#11213`}([`V128`_valtype `V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#11262`}([`V128`_valtype]))] +[visit_exp resulttype#2675] +[visit_id resulttype#2675] +[visit_exp `localidx*#1607`] +[visit_id localidx*#1607] +[visit_exp (`%`_resulttype{`X*#11213`}([`V128`_valtype `V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#11262`}([`V128`_valtype]))] +[visit_exp `%`_resulttype{`X*#11213`}([`V128`_valtype `V128`_valtype `V128`_valtype])] +[visit_exp `X*#11213`] +[visit_id X*#11213] +[visit_exp ([`V128`_valtype `V128`_valtype `V128`_valtype])] +[visit_exp [`V128`_valtype `V128`_valtype `V128`_valtype]] +[visit_exp `V128`_valtype] +[visit_exp ()] +[visit_exp `V128`_valtype] +[visit_exp ()] +[visit_exp `V128`_valtype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#11262`}([`V128`_valtype])] +[visit_exp `X*#11262`] +[visit_id X*#11262] +[visit_exp ([`V128`_valtype])] +[visit_exp [`V128`_valtype]] +[visit_exp `V128`_valtype] +[visit_exp ()] +[check_dims] C Jnn#95 Jnn#96 Jnn#97 X*#11283 X*#11332 ishape_1#15 ishape_2#15 localidx*#1619 resulttype#2695 sh_1 sh_2 shape#348 shape#349 shape#350 sx sx#56 +[visit_exp C] +[visit_id C] +[visit_exp `VNARROW`_instr{ishape_1#15, ishape_2#15, sx#56, shape#348, Jnn#95, shape#349, Jnn#96, shape#350, Jnn#97}(sh_1, sh_2, sx)] +[visit_exp ishape_1#15] +[visit_id ishape_1#15] +[visit_exp ishape_2#15] +[visit_id ishape_2#15] +[visit_exp sx#56] +[visit_id sx#56] +[visit_exp shape#348] +[visit_id shape#348] +[visit_exp Jnn#95] +[visit_id Jnn#95] +[visit_exp shape#349] +[visit_id shape#349] +[visit_exp Jnn#96] +[visit_id Jnn#96] +[visit_exp shape#350] +[visit_id shape#350] +[visit_exp Jnn#97] +[visit_id Jnn#97] +[visit_exp (sh_1, sh_2, sx)] +[visit_exp sh_1] +[visit_id sh_1] +[visit_exp sh_2] +[visit_id sh_2] +[visit_exp sx] +[visit_id sx] +[visit_exp `%->_%%`_instrtype{resulttype#2695, `localidx*#1619`}(`%`_resulttype{`X*#11283`}([`V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#11332`}([`V128`_valtype]))] +[visit_exp resulttype#2695] +[visit_id resulttype#2695] +[visit_exp `localidx*#1619`] +[visit_id localidx*#1619] +[visit_exp (`%`_resulttype{`X*#11283`}([`V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#11332`}([`V128`_valtype]))] +[visit_exp `%`_resulttype{`X*#11283`}([`V128`_valtype `V128`_valtype])] +[visit_exp `X*#11283`] +[visit_id X*#11283] +[visit_exp ([`V128`_valtype `V128`_valtype])] +[visit_exp [`V128`_valtype `V128`_valtype]] +[visit_exp `V128`_valtype] +[visit_exp ()] +[visit_exp `V128`_valtype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#11332`}([`V128`_valtype])] +[visit_exp `X*#11332`] +[visit_id X*#11332] +[visit_exp ([`V128`_valtype])] +[visit_exp [`V128`_valtype]] +[visit_exp `V128`_valtype] +[visit_exp ()] +[check_dims] C X*#11351 X*#11400 localidx*#1631 resulttype#2715 sh_1 sh_2 shape_1#3 shape_2#3 vcvtop +[visit_exp C] +[visit_id C] +[visit_exp `VCVTOP`_instr{shape_1#3, shape_2#3}(sh_1, sh_2, vcvtop)] +[visit_exp shape_1#3] +[visit_id shape_1#3] +[visit_exp shape_2#3] +[visit_id shape_2#3] +[visit_exp (sh_1, sh_2, vcvtop)] +[visit_exp sh_1] +[visit_id sh_1] +[visit_exp sh_2] +[visit_id sh_2] +[visit_exp vcvtop] +[visit_id vcvtop] +[visit_exp `%->_%%`_instrtype{resulttype#2715, `localidx*#1631`}(`%`_resulttype{`X*#11351`}([`V128`_valtype]), [], `%`_resulttype{`X*#11400`}([`V128`_valtype]))] +[visit_exp resulttype#2715] +[visit_id resulttype#2715] +[visit_exp `localidx*#1631`] +[visit_id localidx*#1631] +[visit_exp (`%`_resulttype{`X*#11351`}([`V128`_valtype]), [], `%`_resulttype{`X*#11400`}([`V128`_valtype]))] +[visit_exp `%`_resulttype{`X*#11351`}([`V128`_valtype])] +[visit_exp `X*#11351`] +[visit_id X*#11351] +[visit_exp ([`V128`_valtype])] +[visit_exp [`V128`_valtype]] +[visit_exp `V128`_valtype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#11400`}([`V128`_valtype])] +[visit_exp `X*#11400`] +[visit_id X*#11400] +[visit_exp ([`V128`_valtype])] +[visit_exp [`V128`_valtype]] +[visit_exp `V128`_valtype] +[visit_exp ()] +[check_dims] C X*#11421 X*#11470 localidx*#1643 resulttype#2735 +[visit_exp C] +[visit_id C] +[visit_exp []] +[visit_exp `%->_%%`_instrtype{resulttype#2735, `localidx*#1643`}(`%`_resulttype{`X*#11421`}([]), [], `%`_resulttype{`X*#11470`}([]))] +[visit_exp resulttype#2735] +[visit_id resulttype#2735] +[visit_exp `localidx*#1643`] +[visit_id localidx*#1643] +[visit_exp (`%`_resulttype{`X*#11421`}([]), [], `%`_resulttype{`X*#11470`}([]))] +[visit_exp `%`_resulttype{`X*#11421`}([])] +[visit_exp `X*#11421`] +[visit_id X*#11421] +[visit_exp ([])] +[visit_exp []] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#11470`}([])] +[visit_exp `X*#11470`] +[visit_id X*#11470] +[visit_exp ([])] +[visit_exp []] +[check_dims] C X*#11481 X*#11542 X*#11555 X*#11607 X*#11620 X*#11672 i#8868 init init#113 init#131 instr_1 instr_2 localidx*#1655 localidx*#1667 localidx*#1679 localtype*#13 resulttype#2755 resulttype#2775 resulttype#2795 t t_1 t_2 t_3 valtype#403 valtype#421 x_1 x_2 +[visit_exp C] +[visit_id C] +[visit_exp [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}] +[visit_exp [instr_1]] +[visit_exp instr_1] +[visit_id instr_1] +[visit_exp instr_2*{instr_2 <- `instr_2*`}] +[scope_enter instr_2] +[visit_exp instr_2] +[visit_id instr_2] not free +[visit_id instr_2] not free +[scope_exit instr_2] +[visit_exp `instr_2*`] +[visit_id instr_2*] no dims +[visit_id instr_2*] +[visit_exp `%->_%%`_instrtype{resulttype#2755, `localidx*#1655`}(`%`_resulttype{`X*#11481`}(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype{`X*#11542`}(t_3*{t_3 <- `t_3*`}))] +[visit_exp resulttype#2755] +[visit_id resulttype#2755] +[visit_exp `localidx*#1655`] +[visit_id localidx*#1655] +[visit_exp (`%`_resulttype{`X*#11481`}(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype{`X*#11542`}(t_3*{t_3 <- `t_3*`}))] +[visit_exp `%`_resulttype{`X*#11481`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#11481`] +[visit_id X*#11481] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] no dims +[visit_id t_1*] +[visit_exp x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}] +[visit_exp x_1*{x_1 <- `x_1*`}] +[scope_enter x_1] +[visit_exp x_1] +[visit_id x_1] not free +[visit_id x_1] not free +[scope_exit x_1] +[visit_exp `x_1*`] +[visit_id x_1*] no dims +[visit_id x_1*] +[visit_exp x_2*{x_2 <- `x_2*`}] +[scope_enter x_2] +[visit_exp x_2] +[visit_id x_2] not free +[visit_id x_2] not free +[scope_exit x_2] +[visit_exp `x_2*`] +[visit_id x_2*] no dims +[visit_id x_2*] +[visit_exp `%`_resulttype{`X*#11542`}(t_3*{t_3 <- `t_3*`})] +[visit_exp `X*#11542`] +[visit_id X*#11542] +[visit_exp (t_3*{t_3 <- `t_3*`})] +[visit_exp t_3*{t_3 <- `t_3*`}] +[scope_enter t_3] +[visit_exp t_3] +[visit_id t_3] not free +[visit_id t_3] not free +[scope_exit t_3] +[visit_exp `t_3*`] +[visit_id t_3*] no dims +[visit_id t_3*] +[visit_exp (C, instr_1, `%->_%%`_instrtype{resulttype#2775, `localidx*#1667`}(`%`_resulttype{`X*#11555`}(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype{`X*#11607`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp C] +[visit_id C] not free +[visit_exp instr_1] +[visit_id instr_1] not free +[visit_exp `%->_%%`_instrtype{resulttype#2775, `localidx*#1667`}(`%`_resulttype{`X*#11555`}(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype{`X*#11607`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#2775] +[visit_id resulttype#2775] +[visit_exp `localidx*#1667`] +[visit_id localidx*#1667] +[visit_exp (`%`_resulttype{`X*#11555`}(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype{`X*#11607`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#11555`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#11555`] +[visit_id X*#11555] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] not free +[visit_id t_1*] no dims +[visit_exp x_1*{x_1 <- `x_1*`}] +[scope_enter x_1] +[visit_exp x_1] +[visit_id x_1] not free +[visit_id x_1] not free +[scope_exit x_1] +[visit_exp `x_1*`] +[visit_id x_1*] not free +[visit_id x_1*] no dims +[visit_exp `%`_resulttype{`X*#11607`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#11607`] +[visit_id X*#11607] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] no dims +[visit_id t_2*] +[scope_enter i#8868] +[scope_enter init] +[scope_enter init#113] +[scope_enter localtype*#13] +[scope_enter t] +[scope_enter valtype#403] +[scope_enter x_1] +[visit_exp (C.`LOCALS`_context{`localtype*#13`}[x_1!`%`_idx{i#8868}.0] = `%%`_localtype{init#113, valtype#403}(init, t))] +[visit_exp C.`LOCALS`_context{`localtype*#13`}[x_1!`%`_idx{i#8868}.0]] +[visit_exp C.`LOCALS`_context{`localtype*#13`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `localtype*#13`] +[visit_id localtype*#13] not free +[visit_exp x_1!`%`_idx{i#8868}.0] +[visit_exp x_1!`%`_idx{i#8868}] +[visit_exp x_1] +[visit_id x_1] not free +[visit_exp i#8868] +[visit_id i#8868] not free +[visit_exp `%%`_localtype{init#113, valtype#403}(init, t)] +[visit_exp init#113] +[visit_id init#113] not free +[visit_exp valtype#403] +[visit_id valtype#403] not free +[visit_exp (init, t)] +[visit_exp init] +[visit_id init] not free +[visit_exp t] +[visit_id t] not free +[visit_id i#8868] not free +[visit_id init] not free +[visit_id init#113] not free +[visit_id localtype*#13] not free +[visit_id t] not free +[visit_id valtype#403] not free +[visit_id x_1] not free +[scope_exit x_1] +[scope_exit valtype#403] +[scope_exit t] +[scope_exit localtype*#13] +[scope_exit init#113] +[scope_exit init] +[scope_exit i#8868] +[visit_exp `i#8868*`] +[visit_id i#8868*] no dims +[visit_id i#8868*] +[visit_exp `init*`] +[visit_id init*] no dims +[visit_id init*] +[visit_exp `init#113*`] +[visit_id init#113*] no dims +[visit_id init#113*] +[visit_exp `localtype*#13*`] +[visit_id localtype*#13*] no dims +[visit_id localtype*#13*] +[visit_exp `t*`] +[visit_id t*] no dims +[visit_id t*] +[visit_exp `valtype#403*`] +[visit_id valtype#403*] no dims +[visit_id valtype#403*] +[visit_exp `x_1*`] +[visit_id x_1*] not free +[visit_id x_1*] no dims +[visit_exp ($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype{init#131, valtype#421}(`SET`_init, t)*{init#131 <- `init#131*`, t <- `t*`, valtype#421 <- `valtype#421*`}), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype{resulttype#2795, `localidx*#1679`}(`%`_resulttype{`X*#11620`}(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype{`X*#11672`}(t_3*{t_3 <- `t_3*`})))] +[visit_exp $with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype{init#131, valtype#421}(`SET`_init, t)*{init#131 <- `init#131*`, t <- `t*`, valtype#421 <- `valtype#421*`})] +[visit_exp C] +[visit_id C] not free +[visit_exp x_1*{x_1 <- `x_1*`}] +[scope_enter x_1] +[visit_exp x_1] +[visit_id x_1] not free +[visit_id x_1] not free +[scope_exit x_1] +[visit_exp `x_1*`] +[visit_id x_1*] not free +[visit_id x_1*] no dims +[visit_exp `%%`_localtype{init#131, valtype#421}(`SET`_init, t)*{init#131 <- `init#131*`, t <- `t*`, valtype#421 <- `valtype#421*`}] +[scope_enter init#131] +[scope_enter t] +[scope_enter valtype#421] +[visit_exp `%%`_localtype{init#131, valtype#421}(`SET`_init, t)] +[visit_exp init#131] +[visit_id init#131] not free +[visit_exp valtype#421] +[visit_id valtype#421] not free +[visit_exp (`SET`_init, t)] +[visit_exp `SET`_init] +[visit_exp ()] +[visit_exp t] +[visit_id t] not free +[visit_id init#131] not free +[visit_id t] not free +[visit_id valtype#421] not free +[scope_exit valtype#421] +[scope_exit t] +[scope_exit init#131] +[visit_exp `init#131*`] +[visit_id init#131*] no dims +[visit_id init#131*] +[visit_exp `t*`] +[visit_id t*] not free +[visit_id t*] no dims +[visit_exp `valtype#421*`] +[visit_id valtype#421*] no dims +[visit_id valtype#421*] +[visit_exp instr_2*{instr_2 <- `instr_2*`}] +[scope_enter instr_2] +[visit_exp instr_2] +[visit_id instr_2] not free +[visit_id instr_2] not free +[scope_exit instr_2] +[visit_exp `instr_2*`] +[visit_id instr_2*] not free +[visit_id instr_2*] no dims +[visit_exp `%->_%%`_instrtype{resulttype#2795, `localidx*#1679`}(`%`_resulttype{`X*#11620`}(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype{`X*#11672`}(t_3*{t_3 <- `t_3*`}))] +[visit_exp resulttype#2795] +[visit_id resulttype#2795] +[visit_exp `localidx*#1679`] +[visit_id localidx*#1679] +[visit_exp (`%`_resulttype{`X*#11620`}(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype{`X*#11672`}(t_3*{t_3 <- `t_3*`}))] +[visit_exp `%`_resulttype{`X*#11620`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#11620`] +[visit_id X*#11620] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] not free +[visit_id t_2*] no dims +[visit_exp x_2*{x_2 <- `x_2*`}] +[scope_enter x_2] +[visit_exp x_2] +[visit_id x_2] not free +[visit_id x_2] not free +[scope_exit x_2] +[visit_exp `x_2*`] +[visit_id x_2*] not free +[visit_id x_2*] no dims +[visit_exp `%`_resulttype{`X*#11672`}(t_3*{t_3 <- `t_3*`})] +[visit_exp `X*#11672`] +[visit_id X*#11672] +[visit_exp (t_3*{t_3 <- `t_3*`})] +[visit_exp t_3*{t_3 <- `t_3*`}] +[scope_enter t_3] +[visit_exp t_3] +[visit_id t_3] not free +[visit_id t_3] not free +[scope_exit t_3] +[visit_exp `t_3*`] +[visit_id t_3*] not free +[visit_id t_3*] no dims +[check_dims] C instr it it' +[visit_exp C] +[visit_id C] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] no dims +[visit_id instr*] +[visit_exp it'] +[visit_id it'] +[visit_exp (C, instr*{instr <- `instr*`}, it)] +[visit_exp C] +[visit_id C] not free +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] not free +[visit_id instr*] no dims +[visit_exp it] +[visit_id it] +[visit_exp (C, it, it')] +[visit_exp C] +[visit_id C] not free +[visit_exp it] +[visit_id it] not free +[visit_exp it'] +[visit_id it'] not free +[visit_exp (C, it')] +[visit_exp C] +[visit_id C] not free +[visit_exp it'] +[visit_id it'] not free +[check_dims] C X*#11695 X*#11755 X*#11766 X*#11818 X*#11831 instr localidx*#1721 localidx*#1733 resulttype#2865 resulttype#2885 t t_1 t_2 x +[visit_exp C] +[visit_id C] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] no dims +[visit_id instr*] +[visit_exp `%->_%%`_instrtype{resulttype#2865, `localidx*#1721`}(`%`_resulttype{`X*#11695`}(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype{`X*#11755`}(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#2865] +[visit_id resulttype#2865] +[visit_exp `localidx*#1721`] +[visit_id localidx*#1721] +[visit_exp (`%`_resulttype{`X*#11695`}(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype{`X*#11755`}(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#11695`}(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#11695`] +[visit_id X*#11695] +[visit_exp (t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`})] +[visit_exp t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}] +[visit_exp t*{t <- `t*`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] no dims +[visit_id t*] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] no dims +[visit_id t_1*] +[visit_exp x*{x <- `x*`}] +[scope_enter x] +[visit_exp x] +[visit_id x] not free +[visit_id x] not free +[scope_exit x] +[visit_exp `x*`] +[visit_id x*] no dims +[visit_id x*] +[visit_exp `%`_resulttype{`X*#11755`}(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#11755`] +[visit_id X*#11755] +[visit_exp (t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`})] +[visit_exp t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}] +[visit_exp t*{t <- `t*`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] not free +[visit_id t*] no dims +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] no dims +[visit_id t_2*] +[visit_exp (C, instr*{instr <- `instr*`}, `%->_%%`_instrtype{resulttype#2885, `localidx*#1733`}(`%`_resulttype{`X*#11766`}(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype{`X*#11818`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp C] +[visit_id C] not free +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] not free +[visit_id instr*] no dims +[visit_exp `%->_%%`_instrtype{resulttype#2885, `localidx*#1733`}(`%`_resulttype{`X*#11766`}(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype{`X*#11818`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#2885] +[visit_id resulttype#2885] +[visit_exp `localidx*#1733`] +[visit_id localidx*#1733] +[visit_exp (`%`_resulttype{`X*#11766`}(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype{`X*#11818`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#11766`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#11766`] +[visit_id X*#11766] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] not free +[visit_id t_1*] no dims +[visit_exp x*{x <- `x*`}] +[scope_enter x] +[visit_exp x] +[visit_id x] not free +[visit_id x] not free +[scope_exit x] +[visit_exp `x*`] +[visit_id x*] not free +[visit_id x*] no dims +[visit_exp `%`_resulttype{`X*#11818`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#11818`] +[visit_id X*#11818] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] not free +[visit_id t_2*] no dims +[visit_exp (C, `%`_resulttype{`X*#11831`}(t*{t <- `t*`}))] +[visit_exp C] +[visit_id C] not free +[visit_exp `%`_resulttype{`X*#11831`}(t*{t <- `t*`})] +[visit_exp `X*#11831`] +[visit_id X*#11831] +[visit_exp (t*{t <- `t*`})] +[visit_exp t*{t <- `t*`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] not free +[visit_id t*] no dims +[check_dims] C X*#11844 X*#11867 X*#11911 instr localidx*#1745 resulttype#2905 t +[visit_exp C] +[visit_id C] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] no dims +[visit_id instr*] +[visit_exp `%`_resulttype{`X*#11844`}(t*{t <- `t*`})] +[visit_exp `X*#11844`] +[visit_id X*#11844] +[visit_exp (t*{t <- `t*`})] +[visit_exp t*{t <- `t*`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] no dims +[visit_id t*] +[visit_exp (C, instr*{instr <- `instr*`}, `%->_%%`_instrtype{resulttype#2905, `localidx*#1745`}(`%`_resulttype{`X*#11867`}([]), [], `%`_resulttype{`X*#11911`}(t*{t <- `t*`})))] +[visit_exp C] +[visit_id C] not free +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] not free +[visit_id instr*] no dims +[visit_exp `%->_%%`_instrtype{resulttype#2905, `localidx*#1745`}(`%`_resulttype{`X*#11867`}([]), [], `%`_resulttype{`X*#11911`}(t*{t <- `t*`}))] +[visit_exp resulttype#2905] +[visit_id resulttype#2905] +[visit_exp `localidx*#1745`] +[visit_id localidx*#1745] +[visit_exp (`%`_resulttype{`X*#11867`}([]), [], `%`_resulttype{`X*#11911`}(t*{t <- `t*`}))] +[visit_exp `%`_resulttype{`X*#11867`}([])] +[visit_exp `X*#11867`] +[visit_id X*#11867] +[visit_exp ([])] +[visit_exp []] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#11911`}(t*{t <- `t*`})] +[visit_exp `X*#11911`] +[visit_id X*#11911] +[visit_exp (t*{t <- `t*`})] +[visit_exp t*{t <- `t*`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] not free +[visit_id t*] no dims +[check_dims] +[check_dims] +[check_dims] +[check_dims] C c_nt nt numtype#29 +[visit_exp C] +[visit_id C] +[visit_exp `CONST`_instr{numtype#29}(nt, c_nt)] +[visit_exp numtype#29] +[visit_id numtype#29] +[visit_exp (nt, c_nt)] +[visit_exp nt] +[visit_id nt] +[visit_exp c_nt] +[visit_id c_nt] +[check_dims] C c_vt vectype#40 vt +[visit_exp C] +[visit_id C] +[visit_exp `VCONST`_instr{vectype#40}(vt, c_vt)] +[visit_exp vectype#40] +[visit_id vectype#40] +[visit_exp (vt, c_vt)] +[visit_exp vt] +[visit_id vt] +[visit_exp c_vt] +[visit_id c_vt] +[check_dims] C heaptype#945 ht +[visit_exp C] +[visit_id C] +[visit_exp `REF.NULL`_instr{heaptype#945}(ht)] +[visit_exp heaptype#945] +[visit_id heaptype#945] +[visit_exp (ht)] +[visit_exp ht] +[visit_id ht] +[check_dims] C +[visit_exp C] +[visit_id C] +[visit_exp `REF.I31`_instr] +[visit_exp ()] +[check_dims] C funcidx#183 x +[visit_exp C] +[visit_id C] +[visit_exp `REF.FUNC`_instr{funcidx#183}(x)] +[visit_exp funcidx#183] +[visit_id funcidx#183] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[check_dims] C typeidx#469 x +[visit_exp C] +[visit_id C] +[visit_exp `STRUCT.NEW`_instr{typeidx#469}(x)] +[visit_exp typeidx#469] +[visit_id typeidx#469] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[check_dims] C typeidx#471 x +[visit_exp C] +[visit_id C] +[visit_exp `STRUCT.NEW_DEFAULT`_instr{typeidx#471}(x)] +[visit_exp typeidx#471] +[visit_id typeidx#471] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[check_dims] C typeidx#473 x +[visit_exp C] +[visit_id C] +[visit_exp `ARRAY.NEW`_instr{typeidx#473}(x)] +[visit_exp typeidx#473] +[visit_id typeidx#473] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[check_dims] C typeidx#475 x +[visit_exp C] +[visit_id C] +[visit_exp `ARRAY.NEW_DEFAULT`_instr{typeidx#475}(x)] +[visit_exp typeidx#475] +[visit_id typeidx#475] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[check_dims] C i#9243 n typeidx#477 u32#15 x +[visit_exp C] +[visit_id C] +[visit_exp `ARRAY.NEW_FIXED`_instr{typeidx#477, u32#15}(x, `%`_u32{i#9243}(n))] +[visit_exp typeidx#477] +[visit_id typeidx#477] +[visit_exp u32#15] +[visit_id u32#15] +[visit_exp (x, `%`_u32{i#9243}(n))] +[visit_exp x] +[visit_id x] +[visit_exp `%`_u32{i#9243}(n)] +[visit_exp i#9243] +[visit_id i#9243] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[check_dims] C +[visit_exp C] +[visit_id C] +[visit_exp `ANY.CONVERT_EXTERN`_instr] +[visit_exp ()] +[check_dims] C +[visit_exp C] +[visit_id C] +[visit_exp `EXTERN.CONVERT_ANY`_instr] +[visit_exp ()] +[check_dims] C globalidx#13 globaltype*#10 i#9277 mut?#817 t valtype#427 x +[visit_exp C] +[visit_id C] +[visit_exp `GLOBAL.GET`_instr{globalidx#13}(x)] +[visit_exp globalidx#13] +[visit_id globalidx#13] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp (C.`GLOBALS`_context{`globaltype*#10`}[x!`%`_idx{i#9277}.0] = `%%`_globaltype{`mut?#817`, valtype#427}(?(), t))] +[visit_exp C.`GLOBALS`_context{`globaltype*#10`}[x!`%`_idx{i#9277}.0]] +[visit_exp C.`GLOBALS`_context{`globaltype*#10`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `globaltype*#10`] +[visit_id globaltype*#10] +[visit_exp x!`%`_idx{i#9277}.0] +[visit_exp x!`%`_idx{i#9277}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#9277] +[visit_id i#9277] +[visit_exp `%%`_globaltype{`mut?#817`, valtype#427}(?(), t)] +[visit_exp `mut?#817`] +[visit_id mut?#817] +[visit_exp valtype#427] +[visit_id valtype#427] +[visit_exp (?(), t)] +[visit_exp ?()] +[visit_exp t] +[visit_id t] +[check_dims] C Inn binop numtype#31 +[visit_exp C] +[visit_id C] +[visit_exp `BINOP`_instr{numtype#31}((Inn : Inn <: numtype), binop)] +[visit_exp numtype#31] +[visit_id numtype#31] +[visit_exp ((Inn : Inn <: numtype), binop)] +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] +[visit_exp binop] +[visit_id binop] +[visit_exp (Inn <- [`I32`_Inn `I64`_Inn])] +[visit_exp Inn] +[visit_id Inn] not free +[visit_exp [`I32`_Inn `I64`_Inn]] +[visit_exp `I32`_Inn] +[visit_exp ()] +[visit_exp `I64`_Inn] +[visit_exp ()] +[visit_exp (binop <- [`ADD`_binop_ `SUB`_binop_ `MUL`_binop_])] +[visit_exp binop] +[visit_id binop] not free +[visit_exp [`ADD`_binop_ `SUB`_binop_ `MUL`_binop_]] +[visit_exp `ADD`_binop_] +[visit_exp ()] +[visit_exp `SUB`_binop_] +[visit_exp ()] +[visit_exp `MUL`_binop_] +[visit_exp ()] +[check_dims] C instr +[visit_exp C] +[visit_id C] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] no dims +[visit_id instr*] +[scope_enter instr] +[visit_exp (C, instr)] +[visit_exp C] +[visit_id C] not free +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] not free +[visit_id instr*] no dims +[check_dims] C X*#11922 expr t +[visit_exp C] +[visit_id C] +[visit_exp expr] +[visit_id expr] +[visit_exp t] +[visit_id t] +[visit_exp (C, expr, `%`_resulttype{`X*#11922`}([t]))] +[visit_exp C] +[visit_id C] not free +[visit_exp expr] +[visit_id expr] not free +[visit_exp `%`_resulttype{`X*#11922`}([t])] +[visit_exp `X*#11922`] +[visit_id X*#11922] +[visit_exp ([t])] +[visit_exp [t]] +[visit_exp t] +[visit_id t] not free +[visit_exp (C, expr)] +[visit_exp C] +[visit_id C] not free +[visit_exp expr] +[visit_id expr] not free +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] C datatype*#11 deftype*#53 deftype*#54 deftype*#55 dt elemtype*#11 funcidx*#48 globaltype*#11 i#9287 localtype*#14 memtype*#24 rectype rectype#865 resulttype*#22 resulttype?#19 subtype*#10 tabletype*#17 tagtype*#10 typeidx#489 x +[visit_exp C] +[visit_id C] +[visit_exp `TYPE`_type{rectype#865}(rectype)] +[visit_exp rectype#865] +[visit_id rectype#865] +[visit_exp (rectype)] +[visit_exp rectype] +[visit_id rectype] +[visit_exp dt*{dt <- `dt*`}] +[scope_enter dt] +[visit_exp dt] +[visit_id dt] not free +[visit_id dt] not free +[scope_exit dt] +[visit_exp `dt*`] +[visit_id dt*] no dims +[visit_id dt*] +[visit_exp (x!`%`_idx{i#9287}.0 = |C.`TYPES`_context{`deftype*#53`}|)] +[visit_exp x!`%`_idx{i#9287}.0] +[visit_exp x!`%`_idx{i#9287}] +[visit_exp x] +[visit_id x] +[visit_exp i#9287] +[visit_id i#9287] +[visit_exp |C.`TYPES`_context{`deftype*#53`}|] +[visit_exp C.`TYPES`_context{`deftype*#53`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `deftype*#53`] +[visit_id deftype*#53] +[visit_exp (dt*{dt <- `dt*`} = $rolldt(x, rectype))] +[visit_exp dt*{dt <- `dt*`}] +[scope_enter dt] +[visit_exp dt] +[visit_id dt] not free +[visit_id dt] not free +[scope_exit dt] +[visit_exp `dt*`] +[visit_id dt*] not free +[visit_id dt*] no dims +[visit_exp $rolldt(x, rectype)] +[visit_exp x] +[visit_id x] not free +[visit_exp rectype] +[visit_id rectype] not free +[visit_exp (C +++ {`TYPES`{`deftype*#54`} dt*{dt <- `dt*`}, `RECS`{`subtype*#10`} [], `TAGS`{`tagtype*#10`} [], `GLOBALS`{`globaltype*#11`} [], `MEMS`{`memtype*#24`} [], `TABLES`{`tabletype*#17`} [], `FUNCS`{`deftype*#55`} [], `DATAS`{`datatype*#11`} [], `ELEMS`{`elemtype*#11`} [], `LOCALS`{`localtype*#14`} [], `LABELS`{`resulttype*#22`} [], `RETURN`{`resulttype?#19`} ?(), `REFS`{`funcidx*#48`} []}, rectype, `OK`_oktypeidx{typeidx#489}(x))] +[visit_exp C +++ {`TYPES`{`deftype*#54`} dt*{dt <- `dt*`}, `RECS`{`subtype*#10`} [], `TAGS`{`tagtype*#10`} [], `GLOBALS`{`globaltype*#11`} [], `MEMS`{`memtype*#24`} [], `TABLES`{`tabletype*#17`} [], `FUNCS`{`deftype*#55`} [], `DATAS`{`datatype*#11`} [], `ELEMS`{`elemtype*#11`} [], `LOCALS`{`localtype*#14`} [], `LABELS`{`resulttype*#22`} [], `RETURN`{`resulttype?#19`} ?(), `REFS`{`funcidx*#48`} []}] +[visit_exp C] +[visit_id C] not free +[visit_exp {`TYPES`{`deftype*#54`} dt*{dt <- `dt*`}, `RECS`{`subtype*#10`} [], `TAGS`{`tagtype*#10`} [], `GLOBALS`{`globaltype*#11`} [], `MEMS`{`memtype*#24`} [], `TABLES`{`tabletype*#17`} [], `FUNCS`{`deftype*#55`} [], `DATAS`{`datatype*#11`} [], `ELEMS`{`elemtype*#11`} [], `LOCALS`{`localtype*#14`} [], `LABELS`{`resulttype*#22`} [], `RETURN`{`resulttype?#19`} ?(), `REFS`{`funcidx*#48`} []}] +[visit_exp `deftype*#54`] +[visit_id deftype*#54] +[visit_exp dt*{dt <- `dt*`}] +[scope_enter dt] +[visit_exp dt] +[visit_id dt] not free +[visit_id dt] not free +[scope_exit dt] +[visit_exp `dt*`] +[visit_id dt*] not free +[visit_id dt*] no dims +[visit_exp `subtype*#10`] +[visit_id subtype*#10] +[visit_exp []] +[visit_exp `tagtype*#10`] +[visit_id tagtype*#10] +[visit_exp []] +[visit_exp `globaltype*#11`] +[visit_id globaltype*#11] +[visit_exp []] +[visit_exp `memtype*#24`] +[visit_id memtype*#24] +[visit_exp []] +[visit_exp `tabletype*#17`] +[visit_id tabletype*#17] +[visit_exp []] +[visit_exp `deftype*#55`] +[visit_id deftype*#55] +[visit_exp []] +[visit_exp `datatype*#11`] +[visit_id datatype*#11] +[visit_exp []] +[visit_exp `elemtype*#11`] +[visit_id elemtype*#11] +[visit_exp []] +[visit_exp `localtype*#14`] +[visit_id localtype*#14] +[visit_exp []] +[visit_exp `resulttype*#22`] +[visit_id resulttype*#22] +[visit_exp []] +[visit_exp `resulttype?#19`] +[visit_id resulttype?#19] +[visit_exp ?()] +[visit_exp `funcidx*#48`] +[visit_id funcidx*#48] +[visit_exp []] +[visit_exp rectype] +[visit_id rectype] not free +[visit_exp `OK`_oktypeidx{typeidx#489}(x)] +[visit_exp typeidx#489] +[visit_id typeidx#489] +[visit_exp (x)] +[visit_exp x] +[visit_id x] not free +[check_dims] C tagtype tagtype#105 +[visit_exp C] +[visit_id C] +[visit_exp `TAG`_tag{tagtype#105}(tagtype)] +[visit_exp tagtype#105] +[visit_id tagtype#105] +[visit_exp (tagtype)] +[visit_exp tagtype] +[visit_id tagtype] +[visit_exp $clos_tagtype(C, tagtype)] +[visit_exp C] +[visit_id C] not free +[visit_exp tagtype] +[visit_id tagtype] not free +[visit_exp (C, tagtype)] +[visit_exp C] +[visit_id C] not free +[visit_exp tagtype] +[visit_id tagtype] not free +[check_dims] C expr expr#385 globaltype globaltype#117 mut?#847 t valtype#457 +[visit_exp C] +[visit_id C] +[visit_exp `GLOBAL`_global{globaltype#117, expr#385}(globaltype, expr)] +[visit_exp globaltype#117] +[visit_id globaltype#117] +[visit_exp expr#385] +[visit_id expr#385] +[visit_exp (globaltype, expr)] +[visit_exp globaltype] +[visit_id globaltype] +[visit_exp expr] +[visit_id expr] +[visit_exp globaltype] +[visit_id globaltype] not free +[visit_exp (C, globaltype)] +[visit_exp C] +[visit_id C] not free +[visit_exp globaltype] +[visit_id globaltype] not free +[visit_exp (globaltype = `%%`_globaltype{`mut?#847`, valtype#457}(`MUT`_mut?{}, t))] +[visit_exp globaltype] +[visit_id globaltype] not free +[visit_exp `%%`_globaltype{`mut?#847`, valtype#457}(`MUT`_mut?{}, t)] +[visit_exp `mut?#847`] +[visit_id mut?#847] +[visit_exp valtype#457] +[visit_id valtype#457] +[visit_exp (`MUT`_mut?{}, t)] +[visit_exp `MUT`_mut?{}] +[visit_exp `MUT`_mut] +[visit_exp ()] +[visit_exp t] +[visit_id t] +[visit_exp (C, expr, t)] +[visit_exp C] +[visit_id C] not free +[visit_exp expr] +[visit_id expr] not free +[visit_exp t] +[visit_id t] not free +[check_dims] C memtype memtype#129 +[visit_exp C] +[visit_id C] +[visit_exp `MEMORY`_mem{memtype#129}(memtype)] +[visit_exp memtype#129] +[visit_id memtype#129] +[visit_exp (memtype)] +[visit_exp memtype] +[visit_id memtype] +[visit_exp memtype] +[visit_id memtype] not free +[visit_exp (C, memtype)] +[visit_exp C] +[visit_id C] not free +[visit_exp memtype] +[visit_id memtype] not free +[check_dims] C addrtype#801 at expr expr#397 lim limits#801 reftype#531 rt tabletype tabletype#143 +[visit_exp C] +[visit_id C] +[visit_exp `TABLE`_table{tabletype#143, expr#397}(tabletype, expr)] +[visit_exp tabletype#143] +[visit_id tabletype#143] +[visit_exp expr#397] +[visit_id expr#397] +[visit_exp (tabletype, expr)] +[visit_exp tabletype] +[visit_id tabletype] +[visit_exp expr] +[visit_id expr] +[visit_exp tabletype] +[visit_id tabletype] not free +[visit_exp (C, tabletype)] +[visit_exp C] +[visit_id C] not free +[visit_exp tabletype] +[visit_id tabletype] not free +[visit_exp (tabletype = `%%%`_tabletype{addrtype#801, limits#801, reftype#531}(at, lim, rt))] +[visit_exp tabletype] +[visit_id tabletype] not free +[visit_exp `%%%`_tabletype{addrtype#801, limits#801, reftype#531}(at, lim, rt)] +[visit_exp addrtype#801] +[visit_id addrtype#801] +[visit_exp limits#801] +[visit_id limits#801] +[visit_exp reftype#531] +[visit_id reftype#531] +[visit_exp (at, lim, rt)] +[visit_exp at] +[visit_id at] +[visit_exp lim] +[visit_id lim] +[visit_exp rt] +[visit_id rt] +[visit_exp (C, expr, (rt : reftype <: valtype))] +[visit_exp C] +[visit_id C] not free +[visit_exp expr] +[visit_id expr] not free +[visit_exp (rt : reftype <: valtype)] +[visit_exp rt] +[visit_id rt] not free +[check_dims] C init#143 t valtype#469 valtype#481 +[visit_exp C] +[visit_id C] +[visit_exp `LOCAL`_local{valtype#469}(t)] +[visit_exp valtype#469] +[visit_id valtype#469] +[visit_exp (t)] +[visit_exp t] +[visit_id t] +[visit_exp `%%`_localtype{init#143, valtype#481}(`SET`_init, t)] +[visit_exp init#143] +[visit_id init#143] +[visit_exp valtype#481] +[visit_id valtype#481] +[visit_exp (`SET`_init, t)] +[visit_exp `SET`_init] +[visit_exp ()] +[visit_exp t] +[visit_id t] not free +[visit_exp t] +[visit_id t] not free +[check_dims] C init#155 t valtype#493 valtype#505 +[visit_exp C] +[visit_id C] +[visit_exp `LOCAL`_local{valtype#493}(t)] +[visit_exp valtype#493] +[visit_id valtype#493] +[visit_exp (t)] +[visit_exp t] +[visit_id t] +[visit_exp `%%`_localtype{init#155, valtype#505}(`UNSET`_init, t)] +[visit_exp init#155] +[visit_id init#155] +[visit_exp valtype#505] +[visit_id valtype#505] +[visit_exp (`UNSET`_init, t)] +[visit_exp `UNSET`_init] +[visit_exp ()] +[visit_exp t] +[visit_id t] not free +[visit_exp t] +[visit_id t] not free +[check_dims] C X*#11954 X*#11967 X*#11980 X*#11993 X*#12006 datatype*#12 deftype*#56 deftype*#57 deftype*#58 deftype*#59 elemtype*#12 expr expr#409 funcidx*#49 globaltype*#12 i#9337 i#9347 init#191 lct local local*#171 localtype*#15 memtype*#25 resulttype#2908 resulttype*#23 resulttype?#20 subtype*#11 t_1 t_2 tabletype*#18 tagtype*#11 typeidx#501 valtype#559 x +[visit_exp C] +[visit_id C] +[visit_exp `FUNC`_func{typeidx#501, `local*#171`, expr#409}(x, local*{local <- `local*`}, expr)] +[visit_exp typeidx#501] +[visit_id typeidx#501] +[visit_exp `local*#171`] +[visit_id local*#171] +[visit_exp expr#409] +[visit_id expr#409] +[visit_exp (x, local*{local <- `local*`}, expr)] +[visit_exp x] +[visit_id x] +[visit_exp local*{local <- `local*`}] +[scope_enter local] +[visit_exp local] +[visit_id local] not free +[visit_id local] not free +[scope_exit local] +[visit_exp `local*`] +[visit_id local*] no dims +[visit_id local*] +[visit_exp expr] +[visit_id expr] +[visit_exp C.`TYPES`_context{`deftype*#56`}[x!`%`_idx{i#9337}.0]] +[visit_exp C.`TYPES`_context{`deftype*#56`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `deftype*#56`] +[visit_id deftype*#56] +[visit_exp x!`%`_idx{i#9337}.0] +[visit_exp x!`%`_idx{i#9337}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#9337] +[visit_id i#9337] +[visit_exp (C.`TYPES`_context{`deftype*#57`}[x!`%`_idx{i#9347}.0], `FUNC%->%`_comptype{resulttype#2908}(`%`_resulttype{`X*#11954`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#11967`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp C.`TYPES`_context{`deftype*#57`}[x!`%`_idx{i#9347}.0]] +[visit_exp C.`TYPES`_context{`deftype*#57`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `deftype*#57`] +[visit_id deftype*#57] +[visit_exp x!`%`_idx{i#9347}.0] +[visit_exp x!`%`_idx{i#9347}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#9347] +[visit_id i#9347] +[visit_exp `FUNC%->%`_comptype{resulttype#2908}(`%`_resulttype{`X*#11954`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#11967`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#2908] +[visit_id resulttype#2908] +[visit_exp (`%`_resulttype{`X*#11954`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#11967`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#11954`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#11954`] +[visit_id X*#11954] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] no dims +[visit_id t_1*] +[visit_exp `%`_resulttype{`X*#11967`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#11967`] +[visit_id X*#11967] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] no dims +[visit_id t_2*] +[scope_enter lct] +[scope_enter local] +[visit_exp (C, local, lct)] +[visit_exp C] +[visit_id C] not free +[visit_exp local] +[visit_id local] not free +[visit_exp lct] +[visit_id lct] not free +[visit_id lct] not free +[visit_id local] not free +[scope_exit local] +[scope_exit lct] +[visit_exp `lct*`] +[visit_id lct*] no dims +[visit_id lct*] +[visit_exp `local*`] +[visit_id local*] not free +[visit_id local*] no dims +[visit_exp (C +++ {`TYPES`{`deftype*#58`} [], `RECS`{`subtype*#11`} [], `TAGS`{`tagtype*#11`} [], `GLOBALS`{`globaltype*#12`} [], `MEMS`{`memtype*#25`} [], `TABLES`{`tabletype*#18`} [], `FUNCS`{`deftype*#59`} [], `DATAS`{`datatype*#12`} [], `ELEMS`{`elemtype*#12`} [], `LOCALS`{`localtype*#15`} `%%`_localtype{init#191, valtype#559}(`SET`_init, t_1)*{init#191 <- `init#191*`, t_1 <- `t_1*`, valtype#559 <- `valtype#559*`} ++ lct*{lct <- `lct*`}, `LABELS`{`resulttype*#23`} [`%`_resulttype{`X*#11980`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#20`} ?(`%`_resulttype{`X*#11993`}(t_2*{t_2 <- `t_2*`})), `REFS`{`funcidx*#49`} []}, expr, `%`_resulttype{`X*#12006`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp C +++ {`TYPES`{`deftype*#58`} [], `RECS`{`subtype*#11`} [], `TAGS`{`tagtype*#11`} [], `GLOBALS`{`globaltype*#12`} [], `MEMS`{`memtype*#25`} [], `TABLES`{`tabletype*#18`} [], `FUNCS`{`deftype*#59`} [], `DATAS`{`datatype*#12`} [], `ELEMS`{`elemtype*#12`} [], `LOCALS`{`localtype*#15`} `%%`_localtype{init#191, valtype#559}(`SET`_init, t_1)*{init#191 <- `init#191*`, t_1 <- `t_1*`, valtype#559 <- `valtype#559*`} ++ lct*{lct <- `lct*`}, `LABELS`{`resulttype*#23`} [`%`_resulttype{`X*#11980`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#20`} ?(`%`_resulttype{`X*#11993`}(t_2*{t_2 <- `t_2*`})), `REFS`{`funcidx*#49`} []}] +[visit_exp C] +[visit_id C] not free +[visit_exp {`TYPES`{`deftype*#58`} [], `RECS`{`subtype*#11`} [], `TAGS`{`tagtype*#11`} [], `GLOBALS`{`globaltype*#12`} [], `MEMS`{`memtype*#25`} [], `TABLES`{`tabletype*#18`} [], `FUNCS`{`deftype*#59`} [], `DATAS`{`datatype*#12`} [], `ELEMS`{`elemtype*#12`} [], `LOCALS`{`localtype*#15`} `%%`_localtype{init#191, valtype#559}(`SET`_init, t_1)*{init#191 <- `init#191*`, t_1 <- `t_1*`, valtype#559 <- `valtype#559*`} ++ lct*{lct <- `lct*`}, `LABELS`{`resulttype*#23`} [`%`_resulttype{`X*#11980`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#20`} ?(`%`_resulttype{`X*#11993`}(t_2*{t_2 <- `t_2*`})), `REFS`{`funcidx*#49`} []}] +[visit_exp `deftype*#58`] +[visit_id deftype*#58] +[visit_exp []] +[visit_exp `subtype*#11`] +[visit_id subtype*#11] +[visit_exp []] +[visit_exp `tagtype*#11`] +[visit_id tagtype*#11] +[visit_exp []] +[visit_exp `globaltype*#12`] +[visit_id globaltype*#12] +[visit_exp []] +[visit_exp `memtype*#25`] +[visit_id memtype*#25] +[visit_exp []] +[visit_exp `tabletype*#18`] +[visit_id tabletype*#18] +[visit_exp []] +[visit_exp `deftype*#59`] +[visit_id deftype*#59] +[visit_exp []] +[visit_exp `datatype*#12`] +[visit_id datatype*#12] +[visit_exp []] +[visit_exp `elemtype*#12`] +[visit_id elemtype*#12] +[visit_exp []] +[visit_exp `localtype*#15`] +[visit_id localtype*#15] +[visit_exp `%%`_localtype{init#191, valtype#559}(`SET`_init, t_1)*{init#191 <- `init#191*`, t_1 <- `t_1*`, valtype#559 <- `valtype#559*`} ++ lct*{lct <- `lct*`}] +[visit_exp `%%`_localtype{init#191, valtype#559}(`SET`_init, t_1)*{init#191 <- `init#191*`, t_1 <- `t_1*`, valtype#559 <- `valtype#559*`}] +[scope_enter init#191] +[scope_enter t_1] +[scope_enter valtype#559] +[visit_exp `%%`_localtype{init#191, valtype#559}(`SET`_init, t_1)] +[visit_exp init#191] +[visit_id init#191] not free +[visit_exp valtype#559] +[visit_id valtype#559] not free +[visit_exp (`SET`_init, t_1)] +[visit_exp `SET`_init] +[visit_exp ()] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id init#191] not free +[visit_id t_1] not free +[visit_id valtype#559] not free +[scope_exit valtype#559] +[scope_exit t_1] +[scope_exit init#191] +[visit_exp `init#191*`] +[visit_id init#191*] no dims +[visit_id init#191*] +[visit_exp `t_1*`] +[visit_id t_1*] not free +[visit_id t_1*] no dims +[visit_exp `valtype#559*`] +[visit_id valtype#559*] no dims +[visit_id valtype#559*] +[visit_exp lct*{lct <- `lct*`}] +[scope_enter lct] +[visit_exp lct] +[visit_id lct] not free +[visit_id lct] not free +[scope_exit lct] +[visit_exp `lct*`] +[visit_id lct*] not free +[visit_id lct*] no dims +[visit_exp `resulttype*#23`] +[visit_id resulttype*#23] +[visit_exp [`%`_resulttype{`X*#11980`}(t_2*{t_2 <- `t_2*`})]] +[visit_exp `%`_resulttype{`X*#11980`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#11980`] +[visit_id X*#11980] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] not free +[visit_id t_2*] no dims +[visit_exp `resulttype?#20`] +[visit_id resulttype?#20] +[visit_exp ?(`%`_resulttype{`X*#11993`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#11993`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#11993`] +[visit_id X*#11993] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] not free +[visit_id t_2*] no dims +[visit_exp `funcidx*#49`] +[visit_id funcidx*#49] +[visit_exp []] +[visit_exp expr] +[visit_id expr] not free +[visit_exp `%`_resulttype{`X*#12006`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#12006`] +[visit_id X*#12006] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] not free +[visit_id t_2*] no dims +[check_dims] C b byte*#153 datamode datamode#153 +[visit_exp C] +[visit_id C] +[visit_exp `DATA`_data{`byte*#153`, datamode#153}(b*{b <- `b*`}, datamode)] +[visit_exp `byte*#153`] +[visit_id byte*#153] +[visit_exp datamode#153] +[visit_id datamode#153] +[visit_exp (b*{b <- `b*`}, datamode)] +[visit_exp b*{b <- `b*`}] +[scope_enter b] +[visit_exp b] +[visit_id b] not free +[visit_id b] not free +[scope_exit b] +[visit_exp `b*`] +[visit_id b*] no dims +[visit_id b*] +[visit_exp datamode] +[visit_id datamode] +[visit_exp `OK`_datatype] +[visit_exp ()] +[visit_exp (C, datamode, `OK`_datatype)] +[visit_exp C] +[visit_id C] not free +[visit_exp datamode] +[visit_id datamode] not free +[visit_exp `OK`_datatype] +[visit_exp ()] +[check_dims] C elemmode elemmode#165 elemtype expr expr*#165 reftype#543 +[visit_exp C] +[visit_id C] +[visit_exp `ELEM`_elem{reftype#543, `expr*#165`, elemmode#165}(elemtype, expr*{expr <- `expr*`}, elemmode)] +[visit_exp reftype#543] +[visit_id reftype#543] +[visit_exp `expr*#165`] +[visit_id expr*#165] +[visit_exp elemmode#165] +[visit_id elemmode#165] +[visit_exp (elemtype, expr*{expr <- `expr*`}, elemmode)] +[visit_exp elemtype] +[visit_id elemtype] +[visit_exp expr*{expr <- `expr*`}] +[scope_enter expr] +[visit_exp expr] +[visit_id expr] not free +[visit_id expr] not free +[scope_exit expr] +[visit_exp `expr*`] +[visit_id expr*] no dims +[visit_id expr*] +[visit_exp elemmode] +[visit_id elemmode] +[visit_exp elemtype] +[visit_id elemtype] not free +[visit_exp (C, elemtype)] +[visit_exp C] +[visit_id C] not free +[visit_exp elemtype] +[visit_id elemtype] not free +[scope_enter expr] +[visit_exp (C, expr, (elemtype : reftype <: valtype))] +[visit_exp C] +[visit_id C] not free +[visit_exp expr] +[visit_id expr] not free +[visit_exp (elemtype : reftype <: valtype)] +[visit_exp elemtype] +[visit_id elemtype] not free +[visit_id expr] not free +[scope_exit expr] +[visit_exp `expr*`] +[visit_id expr*] not free +[visit_id expr*] no dims +[visit_exp (C, elemmode, elemtype)] +[visit_exp C] +[visit_id C] not free +[visit_exp elemmode] +[visit_id elemmode] not free +[visit_exp elemtype] +[visit_id elemtype] not free +[check_dims] C +[visit_exp C] +[visit_id C] +[visit_exp `PASSIVE`_datamode] +[visit_exp ()] +[visit_exp `OK`_datatype] +[visit_exp ()] +[check_dims] C addrtype#813 at expr expr#411 i#9383 lim limits#813 memidx#63 memtype*#26 x +[visit_exp C] +[visit_id C] +[visit_exp `ACTIVE`_datamode{memidx#63, expr#411}(x, expr)] +[visit_exp memidx#63] +[visit_id memidx#63] +[visit_exp expr#411] +[visit_id expr#411] +[visit_exp (x, expr)] +[visit_exp x] +[visit_id x] +[visit_exp expr] +[visit_id expr] +[visit_exp `OK`_datatype] +[visit_exp ()] +[visit_exp (C.`MEMS`_context{`memtype*#26`}[x!`%`_idx{i#9383}.0] = `%%PAGE`_memtype{addrtype#813, limits#813}(at, lim))] +[visit_exp C.`MEMS`_context{`memtype*#26`}[x!`%`_idx{i#9383}.0]] +[visit_exp C.`MEMS`_context{`memtype*#26`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `memtype*#26`] +[visit_id memtype*#26] +[visit_exp x!`%`_idx{i#9383}.0] +[visit_exp x!`%`_idx{i#9383}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#9383] +[visit_id i#9383] +[visit_exp `%%PAGE`_memtype{addrtype#813, limits#813}(at, lim)] +[visit_exp addrtype#813] +[visit_id addrtype#813] +[visit_exp limits#813] +[visit_id limits#813] +[visit_exp (at, lim)] +[visit_exp at] +[visit_id at] +[visit_exp lim] +[visit_id lim] +[visit_exp (C, expr, (at : addrtype <: valtype))] +[visit_exp C] +[visit_id C] not free +[visit_exp expr] +[visit_id expr] not free +[visit_exp (at : addrtype <: valtype)] +[visit_exp at] +[visit_id at] not free +[check_dims] C rt +[visit_exp C] +[visit_id C] +[visit_exp `PASSIVE`_elemmode] +[visit_exp ()] +[visit_exp rt] +[visit_id rt] +[check_dims] C rt +[visit_exp C] +[visit_id C] +[visit_exp `DECLARE`_elemmode] +[visit_exp ()] +[visit_exp rt] +[visit_id rt] +[check_dims] C addrtype#825 at expr expr#413 i#9407 lim limits#825 reftype#555 rt rt' tableidx#45 tabletype*#19 x +[visit_exp C] +[visit_id C] +[visit_exp `ACTIVE`_elemmode{tableidx#45, expr#413}(x, expr)] +[visit_exp tableidx#45] +[visit_id tableidx#45] +[visit_exp expr#413] +[visit_id expr#413] +[visit_exp (x, expr)] +[visit_exp x] +[visit_id x] +[visit_exp expr] +[visit_id expr] +[visit_exp rt] +[visit_id rt] +[visit_exp (C.`TABLES`_context{`tabletype*#19`}[x!`%`_idx{i#9407}.0] = `%%%`_tabletype{addrtype#825, limits#825, reftype#555}(at, lim, rt'))] +[visit_exp C.`TABLES`_context{`tabletype*#19`}[x!`%`_idx{i#9407}.0]] +[visit_exp C.`TABLES`_context{`tabletype*#19`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `tabletype*#19`] +[visit_id tabletype*#19] +[visit_exp x!`%`_idx{i#9407}.0] +[visit_exp x!`%`_idx{i#9407}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#9407] +[visit_id i#9407] +[visit_exp `%%%`_tabletype{addrtype#825, limits#825, reftype#555}(at, lim, rt')] +[visit_exp addrtype#825] +[visit_id addrtype#825] +[visit_exp limits#825] +[visit_id limits#825] +[visit_exp reftype#555] +[visit_id reftype#555] +[visit_exp (at, lim, rt')] +[visit_exp at] +[visit_id at] +[visit_exp lim] +[visit_id lim] +[visit_exp rt'] +[visit_id rt'] +[visit_exp (C, rt, rt')] +[visit_exp C] +[visit_id C] not free +[visit_exp rt] +[visit_id rt] not free +[visit_exp rt'] +[visit_id rt'] not free +[visit_exp (C, expr, (at : addrtype <: valtype))] +[visit_exp C] +[visit_id C] not free +[visit_exp expr] +[visit_id expr] not free +[visit_exp (at : addrtype <: valtype)] +[visit_exp at] +[visit_id at] not free +[check_dims] C X*#12031 X*#12052 deftype*#60 funcidx#195 i#9431 resulttype#2911 x +[visit_exp C] +[visit_id C] +[visit_exp `START`_start{funcidx#195}(x)] +[visit_exp funcidx#195] +[visit_id funcidx#195] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp (C.`FUNCS`_context{`deftype*#60`}[x!`%`_idx{i#9431}.0], `FUNC%->%`_comptype{resulttype#2911}(`%`_resulttype{`X*#12031`}([]), `%`_resulttype{`X*#12052`}([])))] +[visit_exp C.`FUNCS`_context{`deftype*#60`}[x!`%`_idx{i#9431}.0]] +[visit_exp C.`FUNCS`_context{`deftype*#60`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `deftype*#60`] +[visit_id deftype*#60] +[visit_exp x!`%`_idx{i#9431}.0] +[visit_exp x!`%`_idx{i#9431}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#9431] +[visit_id i#9431] +[visit_exp `FUNC%->%`_comptype{resulttype#2911}(`%`_resulttype{`X*#12031`}([]), `%`_resulttype{`X*#12052`}([]))] +[visit_exp resulttype#2911] +[visit_id resulttype#2911] +[visit_exp (`%`_resulttype{`X*#12031`}([]), `%`_resulttype{`X*#12052`}([]))] +[visit_exp `%`_resulttype{`X*#12031`}([])] +[visit_exp `X*#12031`] +[visit_id X*#12031] +[visit_exp ([])] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#12052`}([])] +[visit_exp `X*#12052`] +[visit_id X*#12052] +[visit_exp ([])] +[visit_exp []] +[check_dims] +[check_dims] +[check_dims] +[check_dims] C externtype#79 name#309 name_1 name_2 xt +[visit_exp C] +[visit_id C] +[visit_exp `IMPORT`_import{name#309, externtype#79}(name_1, name_2, xt)] +[visit_exp name#309] +[visit_id name#309] +[visit_exp externtype#79] +[visit_id externtype#79] +[visit_exp (name_1, name_2, xt)] +[visit_exp name_1] +[visit_id name_1] +[visit_exp name_2] +[visit_id name_2] +[visit_exp xt] +[visit_id xt] +[visit_exp $clos_externtype(C, xt)] +[visit_exp C] +[visit_id C] not free +[visit_exp xt] +[visit_id xt] not free +[visit_exp (C, xt)] +[visit_exp C] +[visit_id C] not free +[visit_exp xt] +[visit_id xt] not free +[check_dims] C externidx externidx#193 name name#322 xt +[visit_exp C] +[visit_id C] +[visit_exp `EXPORT`_export{name#322, externidx#193}(name, externidx)] +[visit_exp name#322] +[visit_id name#322] +[visit_exp externidx#193] +[visit_id externidx#193] +[visit_exp (name, externidx)] +[visit_exp name] +[visit_id name] +[visit_exp externidx] +[visit_id externidx] +[visit_exp name] +[visit_id name] not free +[visit_exp xt] +[visit_id xt] +[visit_exp (C, externidx, xt)] +[visit_exp C] +[visit_id C] not free +[visit_exp externidx] +[visit_id externidx] not free +[visit_exp xt] +[visit_id xt] not free +[check_dims] C i#9455 jt tagidx#9 tagtype#107 tagtype*#12 x +[visit_exp C] +[visit_id C] +[visit_exp `TAG`_externidx{tagidx#9}(x)] +[visit_exp tagidx#9] +[visit_id tagidx#9] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `TAG`_externtype{tagtype#107}(jt)] +[visit_exp tagtype#107] +[visit_id tagtype#107] +[visit_exp (jt)] +[visit_exp jt] +[visit_id jt] +[visit_exp (C.`TAGS`_context{`tagtype*#12`}[x!`%`_idx{i#9455}.0] = jt)] +[visit_exp C.`TAGS`_context{`tagtype*#12`}[x!`%`_idx{i#9455}.0]] +[visit_exp C.`TAGS`_context{`tagtype*#12`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `tagtype*#12`] +[visit_id tagtype*#12] +[visit_exp x!`%`_idx{i#9455}.0] +[visit_exp x!`%`_idx{i#9455}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#9455] +[visit_id i#9455] +[visit_exp jt] +[visit_id jt] not free +[check_dims] C globalidx#15 globaltype#119 globaltype*#13 gt i#9479 x +[visit_exp C] +[visit_id C] +[visit_exp `GLOBAL`_externidx{globalidx#15}(x)] +[visit_exp globalidx#15] +[visit_id globalidx#15] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `GLOBAL`_externtype{globaltype#119}(gt)] +[visit_exp globaltype#119] +[visit_id globaltype#119] +[visit_exp (gt)] +[visit_exp gt] +[visit_id gt] +[visit_exp (C.`GLOBALS`_context{`globaltype*#13`}[x!`%`_idx{i#9479}.0] = gt)] +[visit_exp C.`GLOBALS`_context{`globaltype*#13`}[x!`%`_idx{i#9479}.0]] +[visit_exp C.`GLOBALS`_context{`globaltype*#13`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `globaltype*#13`] +[visit_id globaltype*#13] +[visit_exp x!`%`_idx{i#9479}.0] +[visit_exp x!`%`_idx{i#9479}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#9479] +[visit_id i#9479] +[visit_exp gt] +[visit_id gt] not free +[check_dims] C i#9503 memidx#65 memtype#131 memtype*#27 mt x +[visit_exp C] +[visit_id C] +[visit_exp `MEM`_externidx{memidx#65}(x)] +[visit_exp memidx#65] +[visit_id memidx#65] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `MEM`_externtype{memtype#131}(mt)] +[visit_exp memtype#131] +[visit_id memtype#131] +[visit_exp (mt)] +[visit_exp mt] +[visit_id mt] +[visit_exp (C.`MEMS`_context{`memtype*#27`}[x!`%`_idx{i#9503}.0] = mt)] +[visit_exp C.`MEMS`_context{`memtype*#27`}[x!`%`_idx{i#9503}.0]] +[visit_exp C.`MEMS`_context{`memtype*#27`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `memtype*#27`] +[visit_id memtype*#27] +[visit_exp x!`%`_idx{i#9503}.0] +[visit_exp x!`%`_idx{i#9503}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#9503] +[visit_id i#9503] +[visit_exp mt] +[visit_id mt] not free +[check_dims] C i#9527 tableidx#47 tabletype#145 tabletype*#20 tt x +[visit_exp C] +[visit_id C] +[visit_exp `TABLE`_externidx{tableidx#47}(x)] +[visit_exp tableidx#47] +[visit_id tableidx#47] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `TABLE`_externtype{tabletype#145}(tt)] +[visit_exp tabletype#145] +[visit_id tabletype#145] +[visit_exp (tt)] +[visit_exp tt] +[visit_id tt] +[visit_exp (C.`TABLES`_context{`tabletype*#20`}[x!`%`_idx{i#9527}.0] = tt)] +[visit_exp C.`TABLES`_context{`tabletype*#20`}[x!`%`_idx{i#9527}.0]] +[visit_exp C.`TABLES`_context{`tabletype*#20`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `tabletype*#20`] +[visit_id tabletype*#20] +[visit_exp x!`%`_idx{i#9527}.0] +[visit_exp x!`%`_idx{i#9527}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#9527] +[visit_id i#9527] +[visit_exp tt] +[visit_id tt] not free +[check_dims] C deftype*#61 dt funcidx#197 i#9551 typeuse#31 x +[visit_exp C] +[visit_id C] +[visit_exp `FUNC`_externidx{funcidx#197}(x)] +[visit_exp funcidx#197] +[visit_id funcidx#197] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `FUNC`_externtype{typeuse#31}((dt : deftype <: typeuse))] +[visit_exp typeuse#31] +[visit_id typeuse#31] +[visit_exp ((dt : deftype <: typeuse))] +[visit_exp (dt : deftype <: typeuse)] +[visit_exp dt] +[visit_id dt] +[visit_exp (C.`FUNCS`_context{`deftype*#61`}[x!`%`_idx{i#9551}.0] = dt)] +[visit_exp C.`FUNCS`_context{`deftype*#61`}[x!`%`_idx{i#9551}.0]] +[visit_exp C.`FUNCS`_context{`deftype*#61`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `deftype*#61`] +[visit_id deftype*#61] +[visit_exp x!`%`_idx{i#9551}.0] +[visit_exp x!`%`_idx{i#9551}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#9551] +[visit_id i#9551] +[visit_exp dt] +[visit_id dt] not free +[check_dims] +[check_dims] +[check_dims] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id global*] no dims +[visit_id global*] +[visit_id mem*] no dims +[visit_id mem*] +[visit_id table*] no dims +[visit_id table*] +[visit_id elem*] no dims +[visit_id elem*] +[check_dims] nonfuncs +DecD funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* +[visit_id nonfuncs] not free +[check_dims] data*#71 elem elem*#47 elem*#83 export*#71 func*#71 global global*#47 global*#83 import*#71 mem mem*#47 mem*#83 start?#71 table table*#47 table*#83 tag*#71 type*#71 +[visit_exp `%%%%`_nonfuncs{`global*#47`, `mem*#47`, `table*#47`, `elem*#47`}(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})] +[visit_exp `global*#47`] +[visit_id global*#47] +[visit_exp `mem*#47`] +[visit_id mem*#47] +[visit_exp `table*#47`] +[visit_id table*#47] +[visit_exp `elem*#47`] +[visit_id elem*#47] +[visit_exp (global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})] +[visit_exp global*{global <- `global*`}] +[scope_enter global] +[visit_exp global] +[visit_id global] not free +[visit_id global] not free +[scope_exit global] +[visit_exp `global*`] +[visit_id global*] no dims +[visit_id global*] +[visit_exp mem*{mem <- `mem*`}] +[scope_enter mem] +[visit_exp mem] +[visit_id mem] not free +[visit_id mem] not free +[scope_exit mem] +[visit_exp `mem*`] +[visit_id mem*] no dims +[visit_id mem*] +[visit_exp table*{table <- `table*`}] +[scope_enter table] +[visit_exp table] +[visit_id table] not free +[visit_id table] not free +[scope_exit table] +[visit_exp `table*`] +[visit_id table*] no dims +[visit_id table*] +[visit_exp elem*{elem <- `elem*`}] +[scope_enter elem] +[visit_exp elem] +[visit_id elem] not free +[visit_id elem] not free +[scope_exit elem] +[visit_exp `elem*`] +[visit_id elem*] no dims +[visit_id elem*] +[visit_exp $funcidx_module(`MODULE`_module{`type*#71`, `import*#71`, `tag*#71`, `global*#83`, `mem*#83`, `table*#83`, `func*#71`, `data*#71`, `elem*#83`, `start?#71`, `export*#71`}([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), []))] +[visit_exp `MODULE`_module{`type*#71`, `import*#71`, `tag*#71`, `global*#83`, `mem*#83`, `table*#83`, `func*#71`, `data*#71`, `elem*#83`, `start?#71`, `export*#71`}([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])] +[visit_exp `type*#71`] +[visit_id type*#71] +[visit_exp `import*#71`] +[visit_id import*#71] +[visit_exp `tag*#71`] +[visit_id tag*#71] +[visit_exp `global*#83`] +[visit_id global*#83] +[visit_exp `mem*#83`] +[visit_id mem*#83] +[visit_exp `table*#83`] +[visit_id table*#83] +[visit_exp `func*#71`] +[visit_id func*#71] +[visit_exp `data*#71`] +[visit_id data*#71] +[visit_exp `elem*#83`] +[visit_id elem*#83] +[visit_exp `start?#71`] +[visit_id start?#71] +[visit_exp `export*#71`] +[visit_id export*#71] +[visit_exp ([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])] +[visit_exp []] +[visit_exp []] +[visit_exp []] +[visit_exp global*{global <- `global*`}] +[scope_enter global] +[visit_exp global] +[visit_id global] not free +[visit_id global] not free +[scope_exit global] +[visit_exp `global*`] +[visit_id global*] not free +[visit_id global*] no dims +[visit_exp mem*{mem <- `mem*`}] +[scope_enter mem] +[visit_exp mem] +[visit_id mem] not free +[visit_id mem] not free +[scope_exit mem] +[visit_exp `mem*`] +[visit_id mem*] not free +[visit_id mem*] no dims +[visit_exp table*{table <- `table*`}] +[scope_enter table] +[visit_exp table] +[visit_id table] not free +[visit_id table] not free +[scope_exit table] +[visit_exp `table*`] +[visit_id table*] not free +[visit_id table*] no dims +[visit_exp []] +[visit_exp []] +[visit_exp elem*{elem <- `elem*`}] +[scope_enter elem] +[visit_exp elem] +[visit_id elem] not free +[visit_id elem] not free +[scope_exit elem] +[visit_exp `elem*`] +[visit_id elem*] not free +[visit_id elem*] no dims +[visit_exp ?()] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + def $funcidx_nonfuncs{`global*#47` : global*, `mem*#47` : mem*, `table*#47` : table*, `elem*#47` : elem*, `global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `type*#71` : type*, `import*#71` : import*, `tag*#71` : tag*, `global*#83` : global*, `mem*#83` : mem*, `table*#83` : table*, `func*#71` : func*, `data*#71` : data*, `elem*#83` : elem*, `start?#71` : start?, `export*#71` : export*}(`%%%%`_nonfuncs{`global*#47`, `mem*#47`, `table*#47`, `elem*#47`}(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) = $funcidx_module(`MODULE`_module{`type*#71`, `import*#71`, `tag*#71`, `global*#83`, `mem*#83`, `table*#83`, `func*#71`, `data*#71`, `elem*#83`, `start?#71`, `export*#71`}([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) +[check_dims] C C' data data*#83 datatype*#13 datatype*#14 datatype*#15 datatype*#16 deftype*#62 deftype*#63 deftype*#64 deftype*#65 deftype*#66 deftype*#67 deftype*#68 deftype*#69 dt dt' dt_I elem elem*#107 elem*#95 elemtype*#13 elemtype*#14 elemtype*#15 elemtype*#16 export export*#83 externtype*#148 func func*#83 funcidx*#50 funcidx*#51 funcidx*#52 funcidx*#53 global global*#107 global*#95 globaltype*#14 globaltype*#15 globaltype*#16 globaltype*#17 gt gt_I import import*#83 jt jt_I localtype*#16 localtype*#17 localtype*#18 localtype*#19 mem mem*#107 mem*#95 memtype*#28 memtype*#29 memtype*#30 memtype*#31 mt mt_I nm ok resulttype*#24 resulttype*#25 resulttype*#26 resulttype*#27 resulttype?#21 resulttype?#22 resulttype?#23 resulttype?#24 rt start start?#83 subtype*#12 subtype*#13 subtype*#14 subtype*#15 table table*#107 table*#95 tabletype*#21 tabletype*#22 tabletype*#23 tabletype*#24 tag tag*#83 tagtype*#13 tagtype*#14 tagtype*#15 tagtype*#16 tt tt_I type type*#83 x xt_E xt_I +[visit_exp `MODULE`_module{`type*#83`, `import*#83`, `tag*#83`, `global*#95`, `mem*#95`, `table*#95`, `func*#83`, `data*#83`, `elem*#95`, `start?#83`, `export*#83`}(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*`})] +[visit_exp `type*#83`] +[visit_id type*#83] +[visit_exp `import*#83`] +[visit_id import*#83] +[visit_exp `tag*#83`] +[visit_id tag*#83] +[visit_exp `global*#95`] +[visit_id global*#95] +[visit_exp `mem*#95`] +[visit_id mem*#95] +[visit_exp `table*#95`] +[visit_id table*#95] +[visit_exp `func*#83`] +[visit_id func*#83] +[visit_exp `data*#83`] +[visit_id data*#83] +[visit_exp `elem*#95`] +[visit_id elem*#95] +[visit_exp `start?#83`] +[visit_id start?#83] +[visit_exp `export*#83`] +[visit_id export*#83] +[visit_exp (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*`})] +[visit_exp type*{type <- `type*`}] +[scope_enter type] +[visit_exp type] +[visit_id type] not free +[visit_id type] not free +[scope_exit type] +[visit_exp `type*`] +[visit_id type*] no dims +[visit_id type*] +[visit_exp import*{import <- `import*`}] +[scope_enter import] +[visit_exp import] +[visit_id import] not free +[visit_id import] not free +[scope_exit import] +[visit_exp `import*`] +[visit_id import*] no dims +[visit_id import*] +[visit_exp tag*{tag <- `tag*`}] +[scope_enter tag] +[visit_exp tag] +[visit_id tag] not free +[visit_id tag] not free +[scope_exit tag] +[visit_exp `tag*`] +[visit_id tag*] no dims +[visit_id tag*] +[visit_exp global*{global <- `global*`}] +[scope_enter global] +[visit_exp global] +[visit_id global] not free +[visit_id global] not free +[scope_exit global] +[visit_exp `global*`] +[visit_id global*] no dims +[visit_id global*] +[visit_exp mem*{mem <- `mem*`}] +[scope_enter mem] +[visit_exp mem] +[visit_id mem] not free +[visit_id mem] not free +[scope_exit mem] +[visit_exp `mem*`] +[visit_id mem*] no dims +[visit_id mem*] +[visit_exp table*{table <- `table*`}] +[scope_enter table] +[visit_exp table] +[visit_id table] not free +[visit_id table] not free +[scope_exit table] +[visit_exp `table*`] +[visit_id table*] no dims +[visit_id table*] +[visit_exp func*{func <- `func*`}] +[scope_enter func] +[visit_exp func] +[visit_id func] not free +[visit_id func] not free +[scope_exit func] +[visit_exp `func*`] +[visit_id func*] no dims +[visit_id func*] +[visit_exp data*{data <- `data*`}] +[scope_enter data] +[visit_exp data] +[visit_id data] not free +[visit_id data] not free +[scope_exit data] +[visit_exp `data*`] +[visit_id data*] no dims +[visit_id data*] +[visit_exp elem*{elem <- `elem*`}] +[scope_enter elem] +[visit_exp elem] +[visit_id elem] not free +[visit_id elem] not free +[scope_exit elem] +[visit_exp `elem*`] +[visit_id elem*] no dims +[visit_id elem*] +[visit_exp start?{start <- `start?`}] +[scope_enter start] +[visit_exp start] +[visit_id start] not free +[visit_id start] not free +[scope_exit start] +[visit_exp `start?`] +[visit_id start?] no dims +[visit_id start?] +[visit_exp export*{export <- `export*`}] +[scope_enter export] +[visit_exp export] +[visit_id export] not free +[visit_id export] not free +[scope_exit export] +[visit_exp `export*`] +[visit_id export*] no dims +[visit_id export*] +[visit_exp $clos_moduletype(C, `%->%`_moduletype{`externtype*#148`}(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))] +[visit_exp C] +[visit_id C] +[visit_exp `%->%`_moduletype{`externtype*#148`}(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})] +[visit_exp `externtype*#148`] +[visit_id externtype*#148] +[visit_exp (xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})] +[visit_exp xt_I*{xt_I <- `xt_I*`}] +[scope_enter xt_I] +[visit_exp xt_I] +[visit_id xt_I] not free +[visit_id xt_I] not free +[scope_exit xt_I] +[visit_exp `xt_I*`] +[visit_id xt_I*] no dims +[visit_id xt_I*] +[visit_exp xt_E*{xt_E <- `xt_E*`}] +[scope_enter xt_E] +[visit_exp xt_E] +[visit_id xt_E] not free +[visit_id xt_E] not free +[scope_exit xt_E] +[visit_exp `xt_E*`] +[visit_id xt_E*] no dims +[visit_id xt_E*] +[visit_exp ({`TYPES`{`deftype*#62`} [], `RECS`{`subtype*#12`} [], `TAGS`{`tagtype*#13`} [], `GLOBALS`{`globaltype*#14`} [], `MEMS`{`memtype*#28`} [], `TABLES`{`tabletype*#21`} [], `FUNCS`{`deftype*#63`} [], `DATAS`{`datatype*#13`} [], `ELEMS`{`elemtype*#13`} [], `LOCALS`{`localtype*#16`} [], `LABELS`{`resulttype*#24`} [], `RETURN`{`resulttype?#21`} ?(), `REFS`{`funcidx*#50`} []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`})] +[visit_exp {`TYPES`{`deftype*#62`} [], `RECS`{`subtype*#12`} [], `TAGS`{`tagtype*#13`} [], `GLOBALS`{`globaltype*#14`} [], `MEMS`{`memtype*#28`} [], `TABLES`{`tabletype*#21`} [], `FUNCS`{`deftype*#63`} [], `DATAS`{`datatype*#13`} [], `ELEMS`{`elemtype*#13`} [], `LOCALS`{`localtype*#16`} [], `LABELS`{`resulttype*#24`} [], `RETURN`{`resulttype?#21`} ?(), `REFS`{`funcidx*#50`} []}] +[visit_exp `deftype*#62`] +[visit_id deftype*#62] +[visit_exp []] +[visit_exp `subtype*#12`] +[visit_id subtype*#12] +[visit_exp []] +[visit_exp `tagtype*#13`] +[visit_id tagtype*#13] +[visit_exp []] +[visit_exp `globaltype*#14`] +[visit_id globaltype*#14] +[visit_exp []] +[visit_exp `memtype*#28`] +[visit_id memtype*#28] +[visit_exp []] +[visit_exp `tabletype*#21`] +[visit_id tabletype*#21] +[visit_exp []] +[visit_exp `deftype*#63`] +[visit_id deftype*#63] +[visit_exp []] +[visit_exp `datatype*#13`] +[visit_id datatype*#13] +[visit_exp []] +[visit_exp `elemtype*#13`] +[visit_id elemtype*#13] +[visit_exp []] +[visit_exp `localtype*#16`] +[visit_id localtype*#16] +[visit_exp []] +[visit_exp `resulttype*#24`] +[visit_id resulttype*#24] +[visit_exp []] +[visit_exp `resulttype?#21`] +[visit_id resulttype?#21] +[visit_exp ?()] +[visit_exp `funcidx*#50`] +[visit_id funcidx*#50] +[visit_exp []] +[visit_exp type*{type <- `type*`}] +[scope_enter type] +[visit_exp type] +[visit_id type] not free +[visit_id type] not free +[scope_exit type] +[visit_exp `type*`] +[visit_id type*] not free +[visit_id type*] no dims +[visit_exp dt'*{dt' <- `dt'*`}] +[scope_enter dt'] +[visit_exp dt'] +[visit_id dt'] not free +[visit_id dt'] not free +[scope_exit dt'] +[visit_exp `dt'*`] +[visit_id dt'*] no dims +[visit_id dt'*] +[scope_enter datatype*#14] +[scope_enter deftype*#64] +[scope_enter deftype*#65] +[scope_enter elemtype*#14] +[scope_enter funcidx*#51] +[scope_enter globaltype*#15] +[scope_enter import] +[scope_enter localtype*#17] +[scope_enter memtype*#29] +[scope_enter resulttype*#25] +[scope_enter resulttype?#22] +[scope_enter subtype*#13] +[scope_enter tabletype*#22] +[scope_enter tagtype*#14] +[scope_enter xt_I] +[visit_exp ({`TYPES`{`deftype*#64`} dt'*{dt' <- `dt'*`}, `RECS`{`subtype*#13`} [], `TAGS`{`tagtype*#14`} [], `GLOBALS`{`globaltype*#15`} [], `MEMS`{`memtype*#29`} [], `TABLES`{`tabletype*#22`} [], `FUNCS`{`deftype*#65`} [], `DATAS`{`datatype*#14`} [], `ELEMS`{`elemtype*#14`} [], `LOCALS`{`localtype*#17`} [], `LABELS`{`resulttype*#25`} [], `RETURN`{`resulttype?#22`} ?(), `REFS`{`funcidx*#51`} []}, import, xt_I)] +[visit_exp {`TYPES`{`deftype*#64`} dt'*{dt' <- `dt'*`}, `RECS`{`subtype*#13`} [], `TAGS`{`tagtype*#14`} [], `GLOBALS`{`globaltype*#15`} [], `MEMS`{`memtype*#29`} [], `TABLES`{`tabletype*#22`} [], `FUNCS`{`deftype*#65`} [], `DATAS`{`datatype*#14`} [], `ELEMS`{`elemtype*#14`} [], `LOCALS`{`localtype*#17`} [], `LABELS`{`resulttype*#25`} [], `RETURN`{`resulttype?#22`} ?(), `REFS`{`funcidx*#51`} []}] +[visit_exp `deftype*#64`] +[visit_id deftype*#64] not free +[visit_exp dt'*{dt' <- `dt'*`}] +[scope_enter dt'] +[visit_exp dt'] +[visit_id dt'] not free +[visit_id dt'] not free +[scope_exit dt'] +[visit_exp `dt'*`] +[visit_id dt'*] not free +[visit_id dt'*] no dims +[visit_exp `subtype*#13`] +[visit_id subtype*#13] not free +[visit_exp []] +[visit_exp `tagtype*#14`] +[visit_id tagtype*#14] not free +[visit_exp []] +[visit_exp `globaltype*#15`] +[visit_id globaltype*#15] not free +[visit_exp []] +[visit_exp `memtype*#29`] +[visit_id memtype*#29] not free +[visit_exp []] +[visit_exp `tabletype*#22`] +[visit_id tabletype*#22] not free +[visit_exp []] +[visit_exp `deftype*#65`] +[visit_id deftype*#65] not free +[visit_exp []] +[visit_exp `datatype*#14`] +[visit_id datatype*#14] not free +[visit_exp []] +[visit_exp `elemtype*#14`] +[visit_id elemtype*#14] not free +[visit_exp []] +[visit_exp `localtype*#17`] +[visit_id localtype*#17] not free +[visit_exp []] +[visit_exp `resulttype*#25`] +[visit_id resulttype*#25] not free +[visit_exp []] +[visit_exp `resulttype?#22`] +[visit_id resulttype?#22] not free +[visit_exp ?()] +[visit_exp `funcidx*#51`] +[visit_id funcidx*#51] not free +[visit_exp []] +[visit_exp import] +[visit_id import] not free +[visit_exp xt_I] +[visit_id xt_I] not free +[visit_id datatype*#14] not free +[visit_id deftype*#64] not free +[visit_id deftype*#65] not free +[visit_id elemtype*#14] not free +[visit_id funcidx*#51] not free +[visit_id globaltype*#15] not free +[visit_id import] not free +[visit_id localtype*#17] not free +[visit_id memtype*#29] not free +[visit_id resulttype*#25] not free +[visit_id resulttype?#22] not free +[visit_id subtype*#13] not free +[visit_id tabletype*#22] not free +[visit_id tagtype*#14] not free +[visit_id xt_I] not free +[scope_exit xt_I] +[scope_exit tagtype*#14] +[scope_exit tabletype*#22] +[scope_exit subtype*#13] +[scope_exit resulttype?#22] +[scope_exit resulttype*#25] +[scope_exit memtype*#29] +[scope_exit localtype*#17] +[scope_exit import] +[scope_exit globaltype*#15] +[scope_exit funcidx*#51] +[scope_exit elemtype*#14] +[scope_exit deftype*#65] +[scope_exit deftype*#64] +[scope_exit datatype*#14] +[visit_exp `datatype*#14*`] +[visit_id datatype*#14*] no dims +[visit_id datatype*#14*] +[visit_exp `deftype*#64*`] +[visit_id deftype*#64*] no dims +[visit_id deftype*#64*] +[visit_exp `deftype*#65*`] +[visit_id deftype*#65*] no dims +[visit_id deftype*#65*] +[visit_exp `elemtype*#14*`] +[visit_id elemtype*#14*] no dims +[visit_id elemtype*#14*] +[visit_exp `funcidx*#51*`] +[visit_id funcidx*#51*] no dims +[visit_id funcidx*#51*] +[visit_exp `globaltype*#15*`] +[visit_id globaltype*#15*] no dims +[visit_id globaltype*#15*] +[visit_exp `import*`] +[visit_id import*] not free +[visit_id import*] no dims +[visit_exp `localtype*#17*`] +[visit_id localtype*#17*] no dims +[visit_id localtype*#17*] +[visit_exp `memtype*#29*`] +[visit_id memtype*#29*] no dims +[visit_id memtype*#29*] +[visit_exp `resulttype*#25*`] +[visit_id resulttype*#25*] no dims +[visit_id resulttype*#25*] +[visit_exp `resulttype?#22*`] +[visit_id resulttype?#22*] no dims +[visit_id resulttype?#22*] +[visit_exp `subtype*#13*`] +[visit_id subtype*#13*] no dims +[visit_id subtype*#13*] +[visit_exp `tabletype*#22*`] +[visit_id tabletype*#22*] no dims +[visit_id tabletype*#22*] +[visit_exp `tagtype*#14*`] +[visit_id tagtype*#14*] no dims +[visit_id tagtype*#14*] +[visit_exp `xt_I*`] +[visit_id xt_I*] not free +[visit_id xt_I*] no dims +[scope_enter jt] +[scope_enter tag] +[visit_exp (C', tag, jt)] +[visit_exp C'] +[visit_id C'] +[visit_exp tag] +[visit_id tag] not free +[visit_exp jt] +[visit_id jt] not free +[visit_id jt] not free +[visit_id tag] not free +[scope_exit tag] +[scope_exit jt] +[visit_exp `jt*`] +[visit_id jt*] no dims +[visit_id jt*] +[visit_exp `tag*`] +[visit_id tag*] not free +[visit_id tag*] no dims +[visit_exp (C', global*{global <- `global*`}, gt*{gt <- `gt*`})] +[visit_exp C'] +[visit_id C'] not free +[visit_exp global*{global <- `global*`}] +[scope_enter global] +[visit_exp global] +[visit_id global] not free +[visit_id global] not free +[scope_exit global] +[visit_exp `global*`] +[visit_id global*] not free +[visit_id global*] no dims +[visit_exp gt*{gt <- `gt*`}] +[scope_enter gt] +[visit_exp gt] +[visit_id gt] not free +[visit_id gt] not free +[scope_exit gt] +[visit_exp `gt*`] +[visit_id gt*] no dims +[visit_id gt*] +[scope_enter mem] +[scope_enter mt] +[visit_exp (C', mem, mt)] +[visit_exp C'] +[visit_id C'] not free +[visit_exp mem] +[visit_id mem] not free +[visit_exp mt] +[visit_id mt] not free +[visit_id mem] not free +[visit_id mt] not free +[scope_exit mt] +[scope_exit mem] +[visit_exp `mem*`] +[visit_id mem*] not free +[visit_id mem*] no dims +[visit_exp `mt*`] +[visit_id mt*] no dims +[visit_id mt*] +[scope_enter table] +[scope_enter tt] +[visit_exp (C', table, tt)] +[visit_exp C'] +[visit_id C'] not free +[visit_exp table] +[visit_id table] not free +[visit_exp tt] +[visit_id tt] not free +[visit_id table] not free +[visit_id tt] not free +[scope_exit tt] +[scope_exit table] +[visit_exp `table*`] +[visit_id table*] not free +[visit_id table*] no dims +[visit_exp `tt*`] +[visit_id tt*] no dims +[visit_id tt*] +[scope_enter dt] +[scope_enter func] +[visit_exp (C, func, dt)] +[visit_exp C] +[visit_id C] not free +[visit_exp func] +[visit_id func] not free +[visit_exp dt] +[visit_id dt] not free +[visit_id dt] not free +[visit_id func] not free +[scope_exit func] +[scope_exit dt] +[visit_exp `dt*`] +[visit_id dt*] no dims +[visit_id dt*] +[visit_exp `func*`] +[visit_id func*] not free +[visit_id func*] no dims +[scope_enter data] +[scope_enter ok] +[visit_exp (C, data, ok)] +[visit_exp C] +[visit_id C] not free +[visit_exp data] +[visit_id data] not free +[visit_exp ok] +[visit_id ok] not free +[visit_id data] not free +[visit_id ok] not free +[scope_exit ok] +[scope_exit data] +[visit_exp `data*`] +[visit_id data*] not free +[visit_id data*] no dims +[visit_exp `ok*`] +[visit_id ok*] no dims +[visit_id ok*] +[scope_enter elem] +[scope_enter rt] +[visit_exp (C, elem, rt)] +[visit_exp C] +[visit_id C] not free +[visit_exp elem] +[visit_id elem] not free +[visit_exp rt] +[visit_id rt] not free +[visit_id elem] not free +[visit_id rt] not free +[scope_exit rt] +[scope_exit elem] +[visit_exp `elem*`] +[visit_id elem*] not free +[visit_id elem*] no dims +[visit_exp `rt*`] +[visit_id rt*] no dims +[visit_id rt*] +[scope_enter start] +[visit_exp (C, start)] +[visit_exp C] +[visit_id C] not free +[visit_exp start] +[visit_id start] not free +[visit_id start] not free +[scope_exit start] +[visit_exp `start?`] +[visit_id start?] not free +[visit_id start?] no dims +[scope_enter export] +[scope_enter nm] +[scope_enter xt_E] +[visit_exp (C, export, nm, xt_E)] +[visit_exp C] +[visit_id C] not free +[visit_exp export] +[visit_id export] not free +[visit_exp nm] +[visit_id nm] not free +[visit_exp xt_E] +[visit_id xt_E] not free +[visit_id export] not free +[visit_id nm] not free +[visit_id xt_E] not free +[scope_exit xt_E] +[scope_exit nm] +[scope_exit export] +[visit_exp `export*`] +[visit_id export*] not free +[visit_id export*] no dims +[visit_exp `nm*`] +[visit_id nm*] no dims +[visit_id nm*] +[visit_exp `xt_E*`] +[visit_id xt_E*] not free +[visit_id xt_E*] no dims +[visit_exp $disjoint_(syntax name, nm*{nm <- `nm*`})] +[visit_exp nm*{nm <- `nm*`}] +[scope_enter nm] +[visit_exp nm] +[visit_id nm] not free +[visit_id nm] not free +[scope_exit nm] +[visit_exp `nm*`] +[visit_id nm*] not free +[visit_id nm*] no dims +[visit_exp (C = C' +++ {`TYPES`{`deftype*#66`} [], `RECS`{`subtype*#14`} [], `TAGS`{`tagtype*#15`} jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, `GLOBALS`{`globaltype*#16`} gt*{gt <- `gt*`}, `MEMS`{`memtype*#30`} mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, `TABLES`{`tabletype*#23`} tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, `FUNCS`{`deftype*#67`} [], `DATAS`{`datatype*#15`} ok*{ok <- `ok*`}, `ELEMS`{`elemtype*#15`} rt*{rt <- `rt*`}, `LOCALS`{`localtype*#18`} [], `LABELS`{`resulttype*#26`} [], `RETURN`{`resulttype?#23`} ?(), `REFS`{`funcidx*#52`} []})] +[visit_exp C] +[visit_id C] not free +[visit_exp C' +++ {`TYPES`{`deftype*#66`} [], `RECS`{`subtype*#14`} [], `TAGS`{`tagtype*#15`} jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, `GLOBALS`{`globaltype*#16`} gt*{gt <- `gt*`}, `MEMS`{`memtype*#30`} mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, `TABLES`{`tabletype*#23`} tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, `FUNCS`{`deftype*#67`} [], `DATAS`{`datatype*#15`} ok*{ok <- `ok*`}, `ELEMS`{`elemtype*#15`} rt*{rt <- `rt*`}, `LOCALS`{`localtype*#18`} [], `LABELS`{`resulttype*#26`} [], `RETURN`{`resulttype?#23`} ?(), `REFS`{`funcidx*#52`} []}] +[visit_exp C'] +[visit_id C'] not free +[visit_exp {`TYPES`{`deftype*#66`} [], `RECS`{`subtype*#14`} [], `TAGS`{`tagtype*#15`} jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, `GLOBALS`{`globaltype*#16`} gt*{gt <- `gt*`}, `MEMS`{`memtype*#30`} mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, `TABLES`{`tabletype*#23`} tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, `FUNCS`{`deftype*#67`} [], `DATAS`{`datatype*#15`} ok*{ok <- `ok*`}, `ELEMS`{`elemtype*#15`} rt*{rt <- `rt*`}, `LOCALS`{`localtype*#18`} [], `LABELS`{`resulttype*#26`} [], `RETURN`{`resulttype?#23`} ?(), `REFS`{`funcidx*#52`} []}] +[visit_exp `deftype*#66`] +[visit_id deftype*#66] +[visit_exp []] +[visit_exp `subtype*#14`] +[visit_id subtype*#14] +[visit_exp []] +[visit_exp `tagtype*#15`] +[visit_id tagtype*#15] +[visit_exp jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}] +[visit_exp jt_I*{jt_I <- `jt_I*`}] +[scope_enter jt_I] +[visit_exp jt_I] +[visit_id jt_I] not free +[visit_id jt_I] not free +[scope_exit jt_I] +[visit_exp `jt_I*`] +[visit_id jt_I*] no dims +[visit_id jt_I*] +[visit_exp jt*{jt <- `jt*`}] +[scope_enter jt] +[visit_exp jt] +[visit_id jt] not free +[visit_id jt] not free +[scope_exit jt] +[visit_exp `jt*`] +[visit_id jt*] not free +[visit_id jt*] no dims +[visit_exp `globaltype*#16`] +[visit_id globaltype*#16] +[visit_exp gt*{gt <- `gt*`}] +[scope_enter gt] +[visit_exp gt] +[visit_id gt] not free +[visit_id gt] not free +[scope_exit gt] +[visit_exp `gt*`] +[visit_id gt*] not free +[visit_id gt*] no dims +[visit_exp `memtype*#30`] +[visit_id memtype*#30] +[visit_exp mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}] +[visit_exp mt_I*{mt_I <- `mt_I*`}] +[scope_enter mt_I] +[visit_exp mt_I] +[visit_id mt_I] not free +[visit_id mt_I] not free +[scope_exit mt_I] +[visit_exp `mt_I*`] +[visit_id mt_I*] no dims +[visit_id mt_I*] +[visit_exp mt*{mt <- `mt*`}] +[scope_enter mt] +[visit_exp mt] +[visit_id mt] not free +[visit_id mt] not free +[scope_exit mt] +[visit_exp `mt*`] +[visit_id mt*] not free +[visit_id mt*] no dims +[visit_exp `tabletype*#23`] +[visit_id tabletype*#23] +[visit_exp tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}] +[visit_exp tt_I*{tt_I <- `tt_I*`}] +[scope_enter tt_I] +[visit_exp tt_I] +[visit_id tt_I] not free +[visit_id tt_I] not free +[scope_exit tt_I] +[visit_exp `tt_I*`] +[visit_id tt_I*] no dims +[visit_id tt_I*] +[visit_exp tt*{tt <- `tt*`}] +[scope_enter tt] +[visit_exp tt] +[visit_id tt] not free +[visit_id tt] not free +[scope_exit tt] +[visit_exp `tt*`] +[visit_id tt*] not free +[visit_id tt*] no dims +[visit_exp `deftype*#67`] +[visit_id deftype*#67] +[visit_exp []] +[visit_exp `datatype*#15`] +[visit_id datatype*#15] +[visit_exp ok*{ok <- `ok*`}] +[scope_enter ok] +[visit_exp ok] +[visit_id ok] not free +[visit_id ok] not free +[scope_exit ok] +[visit_exp `ok*`] +[visit_id ok*] not free +[visit_id ok*] no dims +[visit_exp `elemtype*#15`] +[visit_id elemtype*#15] +[visit_exp rt*{rt <- `rt*`}] +[scope_enter rt] +[visit_exp rt] +[visit_id rt] not free +[visit_id rt] not free +[scope_exit rt] +[visit_exp `rt*`] +[visit_id rt*] not free +[visit_id rt*] no dims +[visit_exp `localtype*#18`] +[visit_id localtype*#18] +[visit_exp []] +[visit_exp `resulttype*#26`] +[visit_id resulttype*#26] +[visit_exp []] +[visit_exp `resulttype?#23`] +[visit_id resulttype?#23] +[visit_exp ?()] +[visit_exp `funcidx*#52`] +[visit_id funcidx*#52] +[visit_exp []] +[visit_exp (C' = {`TYPES`{`deftype*#68`} dt'*{dt' <- `dt'*`}, `RECS`{`subtype*#15`} [], `TAGS`{`tagtype*#16`} [], `GLOBALS`{`globaltype*#17`} gt_I*{gt_I <- `gt_I*`}, `MEMS`{`memtype*#31`} [], `TABLES`{`tabletype*#24`} [], `FUNCS`{`deftype*#69`} dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, `DATAS`{`datatype*#16`} [], `ELEMS`{`elemtype*#16`} [], `LOCALS`{`localtype*#19`} [], `LABELS`{`resulttype*#27`} [], `RETURN`{`resulttype?#24`} ?(), `REFS`{`funcidx*#53`} x*{x <- `x*`}})] +[visit_exp C'] +[visit_id C'] not free +[visit_exp {`TYPES`{`deftype*#68`} dt'*{dt' <- `dt'*`}, `RECS`{`subtype*#15`} [], `TAGS`{`tagtype*#16`} [], `GLOBALS`{`globaltype*#17`} gt_I*{gt_I <- `gt_I*`}, `MEMS`{`memtype*#31`} [], `TABLES`{`tabletype*#24`} [], `FUNCS`{`deftype*#69`} dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, `DATAS`{`datatype*#16`} [], `ELEMS`{`elemtype*#16`} [], `LOCALS`{`localtype*#19`} [], `LABELS`{`resulttype*#27`} [], `RETURN`{`resulttype?#24`} ?(), `REFS`{`funcidx*#53`} x*{x <- `x*`}}] +[visit_exp `deftype*#68`] +[visit_id deftype*#68] +[visit_exp dt'*{dt' <- `dt'*`}] +[scope_enter dt'] +[visit_exp dt'] +[visit_id dt'] not free +[visit_id dt'] not free +[scope_exit dt'] +[visit_exp `dt'*`] +[visit_id dt'*] not free +[visit_id dt'*] no dims +[visit_exp `subtype*#15`] +[visit_id subtype*#15] +[visit_exp []] +[visit_exp `tagtype*#16`] +[visit_id tagtype*#16] +[visit_exp []] +[visit_exp `globaltype*#17`] +[visit_id globaltype*#17] +[visit_exp gt_I*{gt_I <- `gt_I*`}] +[scope_enter gt_I] +[visit_exp gt_I] +[visit_id gt_I] not free +[visit_id gt_I] not free +[scope_exit gt_I] +[visit_exp `gt_I*`] +[visit_id gt_I*] no dims +[visit_id gt_I*] +[visit_exp `memtype*#31`] +[visit_id memtype*#31] +[visit_exp []] +[visit_exp `tabletype*#24`] +[visit_id tabletype*#24] +[visit_exp []] +[visit_exp `deftype*#69`] +[visit_id deftype*#69] +[visit_exp dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}] +[visit_exp dt_I*{dt_I <- `dt_I*`}] +[scope_enter dt_I] +[visit_exp dt_I] +[visit_id dt_I] not free +[visit_id dt_I] not free +[scope_exit dt_I] +[visit_exp `dt_I*`] +[visit_id dt_I*] no dims +[visit_id dt_I*] +[visit_exp dt*{dt <- `dt*`}] +[scope_enter dt] +[visit_exp dt] +[visit_id dt] not free +[visit_id dt] not free +[scope_exit dt] +[visit_exp `dt*`] +[visit_id dt*] not free +[visit_id dt*] no dims +[visit_exp `datatype*#16`] +[visit_id datatype*#16] +[visit_exp []] +[visit_exp `elemtype*#16`] +[visit_id elemtype*#16] +[visit_exp []] +[visit_exp `localtype*#19`] +[visit_id localtype*#19] +[visit_exp []] +[visit_exp `resulttype*#27`] +[visit_id resulttype*#27] +[visit_exp []] +[visit_exp `resulttype?#24`] +[visit_id resulttype?#24] +[visit_exp ?()] +[visit_exp `funcidx*#53`] +[visit_id funcidx*#53] +[visit_exp x*{x <- `x*`}] +[scope_enter x] +[visit_exp x] +[visit_id x] not free +[visit_id x] not free +[scope_exit x] +[visit_exp `x*`] +[visit_id x*] no dims +[visit_id x*] +[visit_exp (x*{x <- `x*`} = $funcidx_nonfuncs(`%%%%`_nonfuncs{`global*#107`, `mem*#107`, `table*#107`, `elem*#107`}(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})))] +[visit_exp x*{x <- `x*`}] +[scope_enter x] +[visit_exp x] +[visit_id x] not free +[visit_id x] not free +[scope_exit x] +[visit_exp `x*`] +[visit_id x*] not free +[visit_id x*] no dims +[visit_exp $funcidx_nonfuncs(`%%%%`_nonfuncs{`global*#107`, `mem*#107`, `table*#107`, `elem*#107`}(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}))] +[visit_exp `%%%%`_nonfuncs{`global*#107`, `mem*#107`, `table*#107`, `elem*#107`}(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})] +[visit_exp `global*#107`] +[visit_id global*#107] +[visit_exp `mem*#107`] +[visit_id mem*#107] +[visit_exp `table*#107`] +[visit_id table*#107] +[visit_exp `elem*#107`] +[visit_id elem*#107] +[visit_exp (global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})] +[visit_exp global*{global <- `global*`}] +[scope_enter global] +[visit_exp global] +[visit_id global] not free +[visit_id global] not free +[scope_exit global] +[visit_exp `global*`] +[visit_id global*] not free +[visit_id global*] no dims +[visit_exp mem*{mem <- `mem*`}] +[scope_enter mem] +[visit_exp mem] +[visit_id mem] not free +[visit_id mem] not free +[scope_exit mem] +[visit_exp `mem*`] +[visit_id mem*] not free +[visit_id mem*] no dims +[visit_exp table*{table <- `table*`}] +[scope_enter table] +[visit_exp table] +[visit_id table] not free +[visit_id table] not free +[scope_exit table] +[visit_exp `table*`] +[visit_id table*] not free +[visit_id table*] no dims +[visit_exp elem*{elem <- `elem*`}] +[scope_enter elem] +[visit_exp elem] +[visit_id elem] not free +[visit_id elem] not free +[scope_exit elem] +[visit_exp `elem*`] +[visit_id elem*] not free +[visit_id elem*] no dims +[visit_exp (jt_I*{jt_I <- `jt_I*`} = $tagsxt(xt_I*{xt_I <- `xt_I*`}))] +[visit_exp jt_I*{jt_I <- `jt_I*`}] +[scope_enter jt_I] +[visit_exp jt_I] +[visit_id jt_I] not free +[visit_id jt_I] not free +[scope_exit jt_I] +[visit_exp `jt_I*`] +[visit_id jt_I*] not free +[visit_id jt_I*] no dims +[visit_exp $tagsxt(xt_I*{xt_I <- `xt_I*`})] +[visit_exp xt_I*{xt_I <- `xt_I*`}] +[scope_enter xt_I] +[visit_exp xt_I] +[visit_id xt_I] not free +[visit_id xt_I] not free +[scope_exit xt_I] +[visit_exp `xt_I*`] +[visit_id xt_I*] not free +[visit_id xt_I*] no dims +[visit_exp (gt_I*{gt_I <- `gt_I*`} = $globalsxt(xt_I*{xt_I <- `xt_I*`}))] +[visit_exp gt_I*{gt_I <- `gt_I*`}] +[scope_enter gt_I] +[visit_exp gt_I] +[visit_id gt_I] not free +[visit_id gt_I] not free +[scope_exit gt_I] +[visit_exp `gt_I*`] +[visit_id gt_I*] not free +[visit_id gt_I*] no dims +[visit_exp $globalsxt(xt_I*{xt_I <- `xt_I*`})] +[visit_exp xt_I*{xt_I <- `xt_I*`}] +[scope_enter xt_I] +[visit_exp xt_I] +[visit_id xt_I] not free +[visit_id xt_I] not free +[scope_exit xt_I] +[visit_exp `xt_I*`] +[visit_id xt_I*] not free +[visit_id xt_I*] no dims +[visit_exp (mt_I*{mt_I <- `mt_I*`} = $memsxt(xt_I*{xt_I <- `xt_I*`}))] +[visit_exp mt_I*{mt_I <- `mt_I*`}] +[scope_enter mt_I] +[visit_exp mt_I] +[visit_id mt_I] not free +[visit_id mt_I] not free +[scope_exit mt_I] +[visit_exp `mt_I*`] +[visit_id mt_I*] not free +[visit_id mt_I*] no dims +[visit_exp $memsxt(xt_I*{xt_I <- `xt_I*`})] +[visit_exp xt_I*{xt_I <- `xt_I*`}] +[scope_enter xt_I] +[visit_exp xt_I] +[visit_id xt_I] not free +[visit_id xt_I] not free +[scope_exit xt_I] +[visit_exp `xt_I*`] +[visit_id xt_I*] not free +[visit_id xt_I*] no dims +[visit_exp (tt_I*{tt_I <- `tt_I*`} = $tablesxt(xt_I*{xt_I <- `xt_I*`}))] +[visit_exp tt_I*{tt_I <- `tt_I*`}] +[scope_enter tt_I] +[visit_exp tt_I] +[visit_id tt_I] not free +[visit_id tt_I] not free +[scope_exit tt_I] +[visit_exp `tt_I*`] +[visit_id tt_I*] not free +[visit_id tt_I*] no dims +[visit_exp $tablesxt(xt_I*{xt_I <- `xt_I*`})] +[visit_exp xt_I*{xt_I <- `xt_I*`}] +[scope_enter xt_I] +[visit_exp xt_I] +[visit_id xt_I] not free +[visit_id xt_I] not free +[scope_exit xt_I] +[visit_exp `xt_I*`] +[visit_id xt_I*] not free +[visit_id xt_I*] no dims +[visit_exp (dt_I*{dt_I <- `dt_I*`} = $funcsxt(xt_I*{xt_I <- `xt_I*`}))] +[visit_exp dt_I*{dt_I <- `dt_I*`}] +[scope_enter dt_I] +[visit_exp dt_I] +[visit_id dt_I] not free +[visit_id dt_I] not free +[scope_exit dt_I] +[visit_exp `dt_I*`] +[visit_id dt_I*] not free +[visit_id dt_I*] no dims +[visit_exp $funcsxt(xt_I*{xt_I <- `xt_I*`})] +[visit_exp xt_I*{xt_I <- `xt_I*`}] +[scope_enter xt_I] +[visit_exp xt_I] +[visit_id xt_I] not free +[visit_id xt_I] not free +[scope_exit xt_I] +[visit_exp `xt_I*`] +[visit_id xt_I*] not free +[visit_id xt_I*] no dims +[check_dims] C +[visit_exp C] +[visit_id C] +[visit_exp []] +[visit_exp []] +[check_dims] C datatype*#17 deftype*#70 deftype*#71 dt dt_1 elemtype*#17 funcidx*#54 globaltype*#18 localtype*#20 memtype*#32 resulttype*#28 resulttype?#25 subtype*#16 tabletype*#25 tagtype*#17 type type_1 +[visit_exp C] +[visit_id C] +[visit_exp [type_1] ++ type*{type <- `type*`}] +[visit_exp [type_1]] +[visit_exp type_1] +[visit_id type_1] +[visit_exp type*{type <- `type*`}] +[scope_enter type] +[visit_exp type] +[visit_id type] not free +[visit_id type] not free +[scope_exit type] +[visit_exp `type*`] +[visit_id type*] no dims +[visit_id type*] +[visit_exp dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}] +[visit_exp dt_1*{dt_1 <- `dt_1*`}] +[scope_enter dt_1] +[visit_exp dt_1] +[visit_id dt_1] not free +[visit_id dt_1] not free +[scope_exit dt_1] +[visit_exp `dt_1*`] +[visit_id dt_1*] no dims +[visit_id dt_1*] +[visit_exp dt*{dt <- `dt*`}] +[scope_enter dt] +[visit_exp dt] +[visit_id dt] not free +[visit_id dt] not free +[scope_exit dt] +[visit_exp `dt*`] +[visit_id dt*] no dims +[visit_id dt*] +[visit_exp (C, type_1, dt_1*{dt_1 <- `dt_1*`})] +[visit_exp C] +[visit_id C] not free +[visit_exp type_1] +[visit_id type_1] not free +[visit_exp dt_1*{dt_1 <- `dt_1*`}] +[scope_enter dt_1] +[visit_exp dt_1] +[visit_id dt_1] not free +[visit_id dt_1] not free +[scope_exit dt_1] +[visit_exp `dt_1*`] +[visit_id dt_1*] not free +[visit_id dt_1*] no dims +[visit_exp (C +++ {`TYPES`{`deftype*#70`} dt_1*{dt_1 <- `dt_1*`}, `RECS`{`subtype*#16`} [], `TAGS`{`tagtype*#17`} [], `GLOBALS`{`globaltype*#18`} [], `MEMS`{`memtype*#32`} [], `TABLES`{`tabletype*#25`} [], `FUNCS`{`deftype*#71`} [], `DATAS`{`datatype*#17`} [], `ELEMS`{`elemtype*#17`} [], `LOCALS`{`localtype*#20`} [], `LABELS`{`resulttype*#28`} [], `RETURN`{`resulttype?#25`} ?(), `REFS`{`funcidx*#54`} []}, type*{type <- `type*`}, dt*{dt <- `dt*`})] +[visit_exp C +++ {`TYPES`{`deftype*#70`} dt_1*{dt_1 <- `dt_1*`}, `RECS`{`subtype*#16`} [], `TAGS`{`tagtype*#17`} [], `GLOBALS`{`globaltype*#18`} [], `MEMS`{`memtype*#32`} [], `TABLES`{`tabletype*#25`} [], `FUNCS`{`deftype*#71`} [], `DATAS`{`datatype*#17`} [], `ELEMS`{`elemtype*#17`} [], `LOCALS`{`localtype*#20`} [], `LABELS`{`resulttype*#28`} [], `RETURN`{`resulttype?#25`} ?(), `REFS`{`funcidx*#54`} []}] +[visit_exp C] +[visit_id C] not free +[visit_exp {`TYPES`{`deftype*#70`} dt_1*{dt_1 <- `dt_1*`}, `RECS`{`subtype*#16`} [], `TAGS`{`tagtype*#17`} [], `GLOBALS`{`globaltype*#18`} [], `MEMS`{`memtype*#32`} [], `TABLES`{`tabletype*#25`} [], `FUNCS`{`deftype*#71`} [], `DATAS`{`datatype*#17`} [], `ELEMS`{`elemtype*#17`} [], `LOCALS`{`localtype*#20`} [], `LABELS`{`resulttype*#28`} [], `RETURN`{`resulttype?#25`} ?(), `REFS`{`funcidx*#54`} []}] +[visit_exp `deftype*#70`] +[visit_id deftype*#70] +[visit_exp dt_1*{dt_1 <- `dt_1*`}] +[scope_enter dt_1] +[visit_exp dt_1] +[visit_id dt_1] not free +[visit_id dt_1] not free +[scope_exit dt_1] +[visit_exp `dt_1*`] +[visit_id dt_1*] not free +[visit_id dt_1*] no dims +[visit_exp `subtype*#16`] +[visit_id subtype*#16] +[visit_exp []] +[visit_exp `tagtype*#17`] +[visit_id tagtype*#17] +[visit_exp []] +[visit_exp `globaltype*#18`] +[visit_id globaltype*#18] +[visit_exp []] +[visit_exp `memtype*#32`] +[visit_id memtype*#32] +[visit_exp []] +[visit_exp `tabletype*#25`] +[visit_id tabletype*#25] +[visit_exp []] +[visit_exp `deftype*#71`] +[visit_id deftype*#71] +[visit_exp []] +[visit_exp `datatype*#17`] +[visit_id datatype*#17] +[visit_exp []] +[visit_exp `elemtype*#17`] +[visit_id elemtype*#17] +[visit_exp []] +[visit_exp `localtype*#20`] +[visit_id localtype*#20] +[visit_exp []] +[visit_exp `resulttype*#28`] +[visit_id resulttype*#28] +[visit_exp []] +[visit_exp `resulttype?#25`] +[visit_id resulttype?#25] +[visit_exp ?()] +[visit_exp `funcidx*#54`] +[visit_id funcidx*#54] +[visit_exp []] +[visit_exp type*{type <- `type*`}] +[scope_enter type] +[visit_exp type] +[visit_id type] not free +[visit_id type] not free +[scope_exit type] +[visit_exp `type*`] +[visit_id type*] not free +[visit_id type*] no dims +[visit_exp dt*{dt <- `dt*`}] +[scope_enter dt] +[visit_exp dt] +[visit_id dt] not free +[visit_id dt] not free +[scope_exit dt] +[visit_exp `dt*`] +[visit_id dt*] not free +[visit_id dt*] no dims +[check_dims] C +[visit_exp C] +[visit_id C] +[visit_exp []] +[visit_exp []] +[check_dims] C datatype*#18 deftype*#72 deftype*#73 elemtype*#18 funcidx*#55 global global_1 globaltype*#19 gt gt_1 localtype*#21 memtype*#33 resulttype*#29 resulttype?#26 subtype*#17 tabletype*#26 tagtype*#18 +[visit_exp C] +[visit_id C] +[visit_exp [global_1] ++ global*{global <- `global*`}] +[visit_exp [global_1]] +[visit_exp global_1] +[visit_id global_1] +[visit_exp global*{global <- `global*`}] +[scope_enter global] +[visit_exp global] +[visit_id global] not free +[visit_id global] not free +[scope_exit global] +[visit_exp `global*`] +[visit_id global*] no dims +[visit_id global*] +[visit_exp [gt_1] ++ gt*{gt <- `gt*`}] +[visit_exp [gt_1]] +[visit_exp gt_1] +[visit_id gt_1] +[visit_exp gt*{gt <- `gt*`}] +[scope_enter gt] +[visit_exp gt] +[visit_id gt] not free +[visit_id gt] not free +[scope_exit gt] +[visit_exp `gt*`] +[visit_id gt*] no dims +[visit_id gt*] +[visit_exp (C, global_1, gt_1)] +[visit_exp C] +[visit_id C] not free +[visit_exp global_1] +[visit_id global_1] not free +[visit_exp gt_1] +[visit_id gt_1] not free +[visit_exp (C +++ {`TYPES`{`deftype*#72`} [], `RECS`{`subtype*#17`} [], `TAGS`{`tagtype*#18`} [], `GLOBALS`{`globaltype*#19`} [gt_1], `MEMS`{`memtype*#33`} [], `TABLES`{`tabletype*#26`} [], `FUNCS`{`deftype*#73`} [], `DATAS`{`datatype*#18`} [], `ELEMS`{`elemtype*#18`} [], `LOCALS`{`localtype*#21`} [], `LABELS`{`resulttype*#29`} [], `RETURN`{`resulttype?#26`} ?(), `REFS`{`funcidx*#55`} []}, global*{global <- `global*`}, gt*{gt <- `gt*`})] +[visit_exp C +++ {`TYPES`{`deftype*#72`} [], `RECS`{`subtype*#17`} [], `TAGS`{`tagtype*#18`} [], `GLOBALS`{`globaltype*#19`} [gt_1], `MEMS`{`memtype*#33`} [], `TABLES`{`tabletype*#26`} [], `FUNCS`{`deftype*#73`} [], `DATAS`{`datatype*#18`} [], `ELEMS`{`elemtype*#18`} [], `LOCALS`{`localtype*#21`} [], `LABELS`{`resulttype*#29`} [], `RETURN`{`resulttype?#26`} ?(), `REFS`{`funcidx*#55`} []}] +[visit_exp C] +[visit_id C] not free +[visit_exp {`TYPES`{`deftype*#72`} [], `RECS`{`subtype*#17`} [], `TAGS`{`tagtype*#18`} [], `GLOBALS`{`globaltype*#19`} [gt_1], `MEMS`{`memtype*#33`} [], `TABLES`{`tabletype*#26`} [], `FUNCS`{`deftype*#73`} [], `DATAS`{`datatype*#18`} [], `ELEMS`{`elemtype*#18`} [], `LOCALS`{`localtype*#21`} [], `LABELS`{`resulttype*#29`} [], `RETURN`{`resulttype?#26`} ?(), `REFS`{`funcidx*#55`} []}] +[visit_exp `deftype*#72`] +[visit_id deftype*#72] +[visit_exp []] +[visit_exp `subtype*#17`] +[visit_id subtype*#17] +[visit_exp []] +[visit_exp `tagtype*#18`] +[visit_id tagtype*#18] +[visit_exp []] +[visit_exp `globaltype*#19`] +[visit_id globaltype*#19] +[visit_exp [gt_1]] +[visit_exp gt_1] +[visit_id gt_1] not free +[visit_exp `memtype*#33`] +[visit_id memtype*#33] +[visit_exp []] +[visit_exp `tabletype*#26`] +[visit_id tabletype*#26] +[visit_exp []] +[visit_exp `deftype*#73`] +[visit_id deftype*#73] +[visit_exp []] +[visit_exp `datatype*#18`] +[visit_id datatype*#18] +[visit_exp []] +[visit_exp `elemtype*#18`] +[visit_id elemtype*#18] +[visit_exp []] +[visit_exp `localtype*#21`] +[visit_id localtype*#21] +[visit_exp []] +[visit_exp `resulttype*#29`] +[visit_id resulttype*#29] +[visit_exp []] +[visit_exp `resulttype?#26`] +[visit_id resulttype?#26] +[visit_exp ?()] +[visit_exp `funcidx*#55`] +[visit_id funcidx*#55] +[visit_exp []] +[visit_exp global*{global <- `global*`}] +[scope_enter global] +[visit_exp global] +[visit_id global] not free +[visit_id global] not free +[scope_exit global] +[visit_exp `global*`] +[visit_id global*] not free +[visit_id global*] no dims +[visit_exp gt*{gt <- `gt*`}] +[scope_enter gt] +[visit_exp gt] +[visit_id gt] not free +[visit_id gt] not free +[scope_exit gt] +[visit_exp `gt*`] +[visit_id gt*] not free +[visit_id gt*] no dims +[check_dims] +[check_dims] +[visit_exp 0] +[check_dims] +[visit_exp 1] +[check_dims] +[check_dims] +[visit_exp 0] +[check_dims] +[visit_exp 1] +[check_dims] +[visit_exp 2] +[check_dims] +[visit_exp 3] +[check_dims] X relaxed2 +DecD relaxed2(relaxed2 : relaxed2, syntax X, X : X, X : X) : X +[visit_id relaxed2] not free +[visit_id X] not free +[visit_id X] not free +[check_dims] X relaxed4 +DecD relaxed4(relaxed4 : relaxed4, syntax X, X : X, X : X, X : X, X : X) : X +[visit_id relaxed4] not free +[visit_id X] not free +[visit_id X] not free +[visit_id X] not free +[visit_id X] not free +[check_dims] X_1 X_2 i i#9672 +[visit_exp i] +[visit_id i] +[visit_exp X_1] +[visit_id X_1] +[visit_exp X_2] +[visit_id X_2] +[visit_exp [X_1 X_2][i!`%`_relaxed2{i#9672}.0]] +[visit_exp [X_1 X_2]] +[visit_exp X_1] +[visit_id X_1] not free +[visit_exp X_2] +[visit_id X_2] not free +[visit_exp i!`%`_relaxed2{i#9672}.0] +[visit_exp i!`%`_relaxed2{i#9672}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#9672] +[visit_id i#9672] +[visit_exp $ND] +=> + ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + def $relaxed2{i : relaxed2, syntax X, X_1 : X, X_2 : X, i#9672 : nat}(i, syntax X, X_1, X_2) = [X_1 X_2][i!`%`_relaxed2{i#9672}.0] + -- if $ND +[check_dims] X_1 X_2 i +[visit_exp i] +[visit_id i] +[visit_exp X_1] +[visit_id X_1] +[visit_exp X_2] +[visit_id X_2] +[visit_exp [X_1 X_2][0]] +[visit_exp [X_1 X_2]] +[visit_exp X_1] +[visit_id X_1] not free +[visit_exp X_2] +[visit_id X_2] not free +[visit_exp 0] +=> + ;; ../../../../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) = [X_1 X_2][0] + -- otherwise +[check_dims] X_1 X_2 X_3 X_4 i i#9686 +[visit_exp i] +[visit_id i] +[visit_exp X_1] +[visit_id X_1] +[visit_exp X_2] +[visit_id X_2] +[visit_exp X_3] +[visit_id X_3] +[visit_exp X_4] +[visit_id X_4] +[visit_exp [X_1 X_2 X_3 X_4][i!`%`_relaxed4{i#9686}.0]] +[visit_exp [X_1 X_2 X_3 X_4]] +[visit_exp X_1] +[visit_id X_1] not free +[visit_exp X_2] +[visit_id X_2] not free +[visit_exp X_3] +[visit_id X_3] not free +[visit_exp X_4] +[visit_id X_4] not free +[visit_exp i!`%`_relaxed4{i#9686}.0] +[visit_exp i!`%`_relaxed4{i#9686}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#9686] +[visit_id i#9686] +[visit_exp $ND] +=> + ;; ../../../../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#9686 : nat}(i, syntax X, X_1, X_2, X_3, X_4) = [X_1 X_2 X_3 X_4][i!`%`_relaxed4{i#9686}.0] + -- if $ND +[check_dims] X_1 X_2 X_3 X_4 i +[visit_exp i] +[visit_id i] +[visit_exp X_1] +[visit_id X_1] +[visit_exp X_2] +[visit_id X_2] +[visit_exp X_3] +[visit_id X_3] +[visit_exp X_4] +[visit_id X_4] +[visit_exp [X_1 X_2 X_3 X_4][0]] +[visit_exp [X_1 X_2 X_3 X_4]] +[visit_exp X_1] +[visit_id X_1] not free +[visit_exp X_2] +[visit_id X_2] not free +[visit_exp X_3] +[visit_id X_3] not free +[visit_exp X_4] +[visit_id X_4] not free +[visit_exp 0] +=> + ;; ../../../../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) = [X_1 X_2 X_3 X_4][0] + -- otherwise +[check_dims] +DecD R_fmadd : relaxed2 +[check_dims] +DecD R_fmin : relaxed4 +[check_dims] +DecD R_fmax : relaxed4 +[check_dims] +DecD R_idot : relaxed2 +[check_dims] +DecD R_iq15mulr : relaxed2 +[check_dims] +DecD R_trunc_u : relaxed4 +[check_dims] +DecD R_trunc_s : relaxed2 +[check_dims] +DecD R_swizzle : relaxed2 +[check_dims] +DecD R_laneselect : relaxed2 +[check_dims] s33 +DecD s33_to_u32(s33 : s33) : u32 +[visit_id s33] not free +[check_dims] N iN +DecD ibits_(N : N, iN : iN(N)) : bit* +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N fN +DecD fbits_(N : N, fN : fN(N)) : bit* +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N iN +DecD ibytes_(N : N, iN : iN(N)) : byte* +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N fN +DecD fbytes_(N : N, fN : fN(N)) : byte* +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[check_dims] num_ numtype +DecD nbytes_(numtype : numtype, num_ : num_(numtype)) : byte* +[visit_id numtype] not free +[visit_id num_] not free +[visit_exp numtype] +[visit_id numtype] not free +[check_dims] vec_ vectype +DecD vbytes_(vectype : vectype, vec_ : vec_(vectype)) : byte* +[visit_id vectype] not free +[visit_id vec_] not free +[visit_exp vectype] +[visit_id vectype] not free +[check_dims] lit_ storagetype +DecD zbytes_(storagetype : storagetype, lit_ : lit_(storagetype)) : byte* +[visit_id storagetype] not free +[visit_id lit_] not free +[visit_exp storagetype] +[visit_id storagetype] not free +[check_dims] Cnn lit_ +DecD cbytes_(Cnn : Cnn, lit_ : lit_((Cnn : Cnn <: storagetype))) : byte* +[visit_id Cnn] not free +[visit_id lit_] not free +[visit_exp (Cnn : Cnn <: storagetype)] +[visit_exp Cnn] +[visit_id Cnn] not free +[check_dims] N _ +DecD inv_ibits_(N : N, bit*) : iN(N) +[visit_id N] not free +[visit_id _] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N _ +DecD inv_fbits_(N : N, bit*) : fN(N) +[visit_id N] not free +[visit_id _] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N _ +DecD inv_ibytes_(N : N, byte*) : iN(N) +[visit_id N] not free +[visit_id _] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N _ +DecD inv_fbytes_(N : N, byte*) : fN(N) +[visit_id N] not free +[visit_id _] not free +[visit_exp N] +[visit_id N] not free +[check_dims] _ numtype +DecD inv_nbytes_(numtype : numtype, byte*) : num_(numtype) +[visit_id numtype] not free +[visit_id _] not free +[visit_exp numtype] +[visit_id numtype] not free +[check_dims] _ vectype +DecD inv_vbytes_(vectype : vectype, byte*) : vec_(vectype) +[visit_id vectype] not free +[visit_id _] not free +[visit_exp vectype] +[visit_id vectype] not free +[check_dims] _ storagetype +DecD inv_zbytes_(storagetype : storagetype, byte*) : lit_(storagetype) +[visit_id storagetype] not free +[visit_id _] not free +[visit_exp storagetype] +[visit_id storagetype] not free +[check_dims] Cnn _ +DecD inv_cbytes_(Cnn : Cnn, byte*) : lit_((Cnn : Cnn <: storagetype)) +[visit_id Cnn] not free +[visit_id _] not free +[visit_exp (Cnn : Cnn <: storagetype)] +[visit_exp Cnn] +[visit_id Cnn] not free +[check_dims] N nat +DecD signed_(N : N, nat : nat) : int +[visit_id N] not free +[visit_id nat] not free +[check_dims] N i +[visit_exp N] +[visit_id N] +[visit_exp i] +[visit_id i] +[visit_exp (i : nat <:> int)] +[visit_exp i] +[visit_id i] not free +[visit_exp (i < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp i] +[visit_id i] not free +[visit_exp (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp 2] +[visit_exp (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp ((N : nat <:> int) - (1 : nat <:> int))] +[visit_exp (N : nat <:> int)] +[visit_exp N] +[visit_id N] not free +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +=> + ;; ../../../../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))) +[check_dims] N i +[visit_exp N] +[visit_id N] +[visit_exp i] +[visit_id i] +[visit_exp ((i : nat <:> int) - ((2 ^ N) : nat <:> int))] +[visit_exp (i : nat <:> int)] +[visit_exp i] +[visit_id i] not free +[visit_exp ((2 ^ N) : nat <:> int)] +[visit_exp (2 ^ N)] +[visit_exp 2] +[visit_exp N] +[visit_id N] not free +[visit_exp (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) <= i) /\ (i < (2 ^ N)))] +[visit_exp ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) <= i)] +[visit_exp (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp 2] +[visit_exp (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp ((N : nat <:> int) - (1 : nat <:> int))] +[visit_exp (N : nat <:> int)] +[visit_exp N] +[visit_id N] not free +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp i] +[visit_id i] not free +[visit_exp (i < (2 ^ N))] +[visit_exp i] +[visit_id i] not free +[visit_exp (2 ^ N)] +[visit_exp 2] +[visit_exp N] +[visit_id N] not free +=> + ;; ../../../../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))) +[check_dims] N int +DecD inv_signed_(N : N, int : int) : nat +[visit_id N] not free +[visit_id int] not free +[check_dims] N i +[visit_exp N] +[visit_id N] +[visit_exp i] +[visit_id i] +[visit_exp (i : int <:> nat)] +[visit_exp i] +[visit_id i] not free +[visit_exp (((0 : nat <:> int) <= i) /\ (i < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)))] +[visit_exp ((0 : nat <:> int) <= i)] +[visit_exp (0 : nat <:> int)] +[visit_exp 0] +[visit_exp i] +[visit_id i] not free +[visit_exp (i < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))] +[visit_exp i] +[visit_id i] not free +[visit_exp ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)] +[visit_exp (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp 2] +[visit_exp (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp ((N : nat <:> int) - (1 : nat <:> int))] +[visit_exp (N : nat <:> int)] +[visit_exp N] +[visit_id N] not free +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +=> + ;; ../../../../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))) +[check_dims] N i +[visit_exp N] +[visit_id N] +[visit_exp i] +[visit_id i] +[visit_exp ((i + ((2 ^ N) : nat <:> int)) : int <:> nat)] +[visit_exp (i + ((2 ^ N) : nat <:> int))] +[visit_exp i] +[visit_id i] not free +[visit_exp ((2 ^ N) : nat <:> int)] +[visit_exp (2 ^ N)] +[visit_exp 2] +[visit_exp N] +[visit_id N] not free +[visit_exp ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= i) /\ (i < (0 : nat <:> int)))] +[visit_exp (- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= i)] +[visit_exp - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)] +[visit_exp ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)] +[visit_exp (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp 2] +[visit_exp (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp ((N : nat <:> int) - (1 : nat <:> int))] +[visit_exp (N : nat <:> int)] +[visit_exp N] +[visit_id N] not free +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp i] +[visit_id i] not free +[visit_exp (i < (0 : nat <:> int))] +[visit_exp i] +[visit_id i] not free +[visit_exp (0 : nat <:> int)] +[visit_exp 0] +=> + ;; ../../../../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))) +[check_dims] storagetype +DecD sx(storagetype : storagetype) : sx? +[visit_id storagetype] not free +[check_dims] consttype +[visit_exp (consttype : consttype <: storagetype)] +[visit_exp consttype] +[visit_id consttype] +[visit_exp ?()] +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx{consttype : consttype}((consttype : consttype <: storagetype)) = ?() +[check_dims] packtype +[visit_exp (packtype : packtype <: storagetype)] +[visit_exp packtype] +[visit_id packtype] +[visit_exp ?(`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sx{packtype : packtype}((packtype : packtype <: storagetype)) = ?(`S`_sx) +[check_dims] lanetype +DecD zero(lanetype : lanetype) : lane_(lanetype) +[visit_id lanetype] not free +[visit_exp lanetype] +[visit_id lanetype] not free +[check_dims] Jnn i#9712 +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp `%`_lane_{i#9712}(0)] +[visit_exp i#9712] +[visit_id i#9712] +[visit_exp (0)] +[visit_exp 0] +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $zero{Jnn : Jnn, i#9712 : nat}((Jnn : Jnn <: lanetype)) = `%`_lane_{i#9712}(0) +[check_dims] Fnn +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp $fzero($size((Fnn : Fnn <: numtype)))] +[visit_exp $size((Fnn : Fnn <: numtype))] +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] not free +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $zero{Fnn : Fnn}((Fnn : Fnn <: lanetype)) = $fzero($size((Fnn : Fnn <: numtype))) +[check_dims] bool +DecD bool(bool : bool) : nat +[visit_id bool] not free +[check_dims] +[visit_exp false] +[visit_exp 0] +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $bool(false) = 0 +[check_dims] +[visit_exp true] +[visit_exp 1] +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $bool(true) = 1 +[check_dims] rat +DecD truncz(rat : rat) : int +[visit_id rat] not free +[check_dims] rat +DecD ceilz(rat : rat) : int +[visit_id rat] not free +[check_dims] N int +DecD sat_u_(N : N, int : int) : nat +[visit_id N] not free +[visit_id int] not free +[check_dims] N i +[visit_exp N] +[visit_id N] +[visit_exp i] +[visit_id i] +[visit_exp 0] +[visit_exp (i < (0 : nat <:> int))] +[visit_exp i] +[visit_id i] not free +[visit_exp (0 : nat <:> int)] +[visit_exp 0] +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sat_u_{N : N, i : int}(N, i) = 0 + -- if (i < (0 : nat <:> int)) +[check_dims] N i +[visit_exp N] +[visit_id N] +[visit_exp i] +[visit_id i] +[visit_exp ((((2 ^ N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp (((2 ^ N) : nat <:> int) - (1 : nat <:> int))] +[visit_exp ((2 ^ N) : nat <:> int)] +[visit_exp (2 ^ N)] +[visit_exp 2] +[visit_exp N] +[visit_id N] not free +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp (i > (((2 ^ N) : nat <:> int) - (1 : nat <:> int)))] +[visit_exp i] +[visit_id i] not free +[visit_exp (((2 ^ N) : nat <:> int) - (1 : nat <:> int))] +[visit_exp ((2 ^ N) : nat <:> int)] +[visit_exp (2 ^ N)] +[visit_exp 2] +[visit_exp N] +[visit_id N] not free +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sat_u_{N : N, i : int}(N, i) = ((((2 ^ N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat) + -- if (i > (((2 ^ N) : nat <:> int) - (1 : nat <:> int))) +[check_dims] N i +[visit_exp N] +[visit_id N] +[visit_exp i] +[visit_id i] +[visit_exp (i : int <:> nat)] +[visit_exp i] +[visit_id i] not free +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sat_u_{N : N, i : int}(N, i) = (i : int <:> nat) + -- otherwise +[check_dims] N int +DecD sat_s_(N : N, int : int) : int +[visit_id N] not free +[visit_id int] not free +[check_dims] N i +[visit_exp N] +[visit_id N] +[visit_exp i] +[visit_id i] +[visit_exp - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)] +[visit_exp ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)] +[visit_exp (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp 2] +[visit_exp (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp ((N : nat <:> int) - (1 : nat <:> int))] +[visit_exp (N : nat <:> int)] +[visit_exp N] +[visit_id N] not free +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp (i < - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))] +[visit_exp i] +[visit_id i] not free +[visit_exp - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)] +[visit_exp ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)] +[visit_exp (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp 2] +[visit_exp (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp ((N : nat <:> int) - (1 : nat <:> int))] +[visit_exp (N : nat <:> int)] +[visit_exp N] +[visit_id N] not free +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sat_s_{N : N, i : int}(N, i) = - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) + -- if (i < - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) +[check_dims] N i +[visit_exp N] +[visit_id N] +[visit_exp i] +[visit_id i] +[visit_exp (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))] +[visit_exp ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)] +[visit_exp (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp 2] +[visit_exp (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp ((N : nat <:> int) - (1 : nat <:> int))] +[visit_exp (N : nat <:> int)] +[visit_exp N] +[visit_id N] not free +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp (i > (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int)))] +[visit_exp i] +[visit_id i] not free +[visit_exp (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))] +[visit_exp ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)] +[visit_exp (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp 2] +[visit_exp (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp ((N : nat <:> int) - (1 : nat <:> int))] +[visit_exp (N : nat <:> int)] +[visit_exp N] +[visit_id N] not free +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sat_s_{N : N, i : int}(N, i) = (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int)) + -- if (i > (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))) +[check_dims] N i +[visit_exp N] +[visit_id N] +[visit_exp i] +[visit_id i] +[visit_exp i] +[visit_id i] not free +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $sat_s_{N : N, i : int}(N, i) = i + -- otherwise +[check_dims] N iN +DecD ineg_(N : N, iN : iN(N)) : iN(N) +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N iN +DecD iabs_(N : N, iN : iN(N)) : iN(N) +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N iN +DecD iclz_(N : N, iN : iN(N)) : iN(N) +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N iN +DecD ictz_(N : N, iN : iN(N)) : iN(N) +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N iN +DecD ipopcnt_(N : N, iN : iN(N)) : iN(N) +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] M N iN sx +DecD iextend_(N : N, M : M, sx : sx, iN : iN(N)) : iN(N) +[visit_id N] not free +[visit_id M] not free +[visit_id sx] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N iN +DecD iadd_(N : N, iN : iN(N), iN : iN(N)) : iN(N) +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N iN +DecD isub_(N : N, iN : iN(N), iN : iN(N)) : iN(N) +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N iN +DecD imul_(N : N, iN : iN(N), iN : iN(N)) : iN(N) +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N iN sx +DecD idiv_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)? +[visit_id N] not free +[visit_id sx] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N iN sx +DecD irem_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)? +[visit_id N] not free +[visit_id sx] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N iN sx +DecD imin_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) +[visit_id N] not free +[visit_id sx] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N iN sx +DecD imax_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) +[visit_id N] not free +[visit_id sx] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N iN sx +DecD iadd_sat_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) +[visit_id N] not free +[visit_id sx] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N iN sx +DecD isub_sat_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) +[visit_id N] not free +[visit_id sx] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N iN sx +DecD iq15mulr_sat_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) +[visit_id N] not free +[visit_id sx] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N iN sx +DecD irelaxed_q15mulr_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)* +[visit_id N] not free +[visit_id sx] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N iN sx +DecD iavgr_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) +[visit_id N] not free +[visit_id sx] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N iN +DecD inot_(N : N, iN : iN(N)) : iN(N) +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N iN +DecD irev_(N : N, iN : iN(N)) : iN(N) +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N iN +DecD iand_(N : N, iN : iN(N), iN : iN(N)) : iN(N) +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N iN +DecD iandnot_(N : N, iN : iN(N), iN : iN(N)) : iN(N) +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N iN +DecD ior_(N : N, iN : iN(N), iN : iN(N)) : iN(N) +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N iN +DecD ixor_(N : N, iN : iN(N), iN : iN(N)) : iN(N) +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N iN u32 +DecD ishl_(N : N, iN : iN(N), u32 : u32) : iN(N) +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_id u32] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N iN sx u32 +DecD ishr_(N : N, sx : sx, iN : iN(N), u32 : u32) : iN(N) +[visit_id N] not free +[visit_id sx] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_id u32] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N iN +DecD irotl_(N : N, iN : iN(N), iN : iN(N)) : iN(N) +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N iN +DecD irotr_(N : N, iN : iN(N), iN : iN(N)) : iN(N) +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N iN +DecD ibitselect_(N : N, iN : iN(N), iN : iN(N), iN : iN(N)) : iN(N) +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N iN +DecD irelaxed_laneselect_(N : N, iN : iN(N), iN : iN(N), iN : iN(N)) : iN(N)* +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N iN +DecD ieqz_(N : N, iN : iN(N)) : u32 +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N iN +DecD inez_(N : N, iN : iN(N)) : u32 +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N iN +DecD ieq_(N : N, iN : iN(N), iN : iN(N)) : u32 +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N iN +DecD ine_(N : N, iN : iN(N), iN : iN(N)) : u32 +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N iN sx +DecD ilt_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 +[visit_id N] not free +[visit_id sx] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N iN sx +DecD igt_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 +[visit_id N] not free +[visit_id sx] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N iN sx +DecD ile_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 +[visit_id N] not free +[visit_id sx] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N iN sx +DecD ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 +[visit_id N] not free +[visit_id sx] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N i#9726 i#9728 i_1 +[visit_exp N] +[visit_id N] +[visit_exp i_1] +[visit_id i_1] +[visit_exp `%`_iN{i#9728}((((((2 ^ N) : nat <:> int) - (i_1!`%`_iN{i#9726}.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))] +[visit_exp i#9728] +[visit_id i#9728] +[visit_exp ((((((2 ^ N) : nat <:> int) - (i_1!`%`_iN{i#9726}.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))] +[visit_exp (((((2 ^ N) : nat <:> int) - (i_1!`%`_iN{i#9726}.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)] +[visit_exp ((((2 ^ N) : nat <:> int) - (i_1!`%`_iN{i#9726}.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int))] +[visit_exp (((2 ^ N) : nat <:> int) - (i_1!`%`_iN{i#9726}.0 : nat <:> int))] +[visit_exp ((2 ^ N) : nat <:> int)] +[visit_exp (2 ^ N)] +[visit_exp 2] +[visit_exp N] +[visit_id N] not free +[visit_exp (i_1!`%`_iN{i#9726}.0 : nat <:> int)] +[visit_exp i_1!`%`_iN{i#9726}.0] +[visit_exp i_1!`%`_iN{i#9726}] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i#9726] +[visit_id i#9726] +[visit_exp ((2 ^ N) : nat <:> int)] +[visit_exp (2 ^ N)] +[visit_exp 2] +[visit_exp N] +[visit_id N] not free +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ineg_{N : N, i_1 : iN(N), i#9728 : nat, i#9726 : nat}(N, i_1) = `%`_iN{i#9728}((((((2 ^ N) : nat <:> int) - (i_1!`%`_iN{i#9726}.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) +[check_dims] N i#9736 i_1 +[visit_exp N] +[visit_id N] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp ($signed_(N, i_1!`%`_iN{i#9736}.0) >= (0 : nat <:> int))] +[visit_exp $signed_(N, i_1!`%`_iN{i#9736}.0)] +[visit_exp N] +[visit_id N] not free +[visit_exp i_1!`%`_iN{i#9736}.0] +[visit_exp i_1!`%`_iN{i#9736}] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i#9736] +[visit_id i#9736] +[visit_exp (0 : nat <:> int)] +[visit_exp 0] +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iabs_{N : N, i_1 : iN(N), i#9736 : nat}(N, i_1) = i_1 + -- if ($signed_(N, i_1!`%`_iN{i#9736}.0) >= (0 : nat <:> int)) +[check_dims] N i_1 +[visit_exp N] +[visit_id N] +[visit_exp i_1] +[visit_id i_1] +[visit_exp $ineg_(N, i_1)] +[visit_exp N] +[visit_id N] not free +[visit_exp i_1] +[visit_id i_1] not free +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iabs_{N : N, i_1 : iN(N)}(N, i_1) = $ineg_(N, i_1) + -- otherwise +[check_dims] M N i i#9774 i#9776 +[visit_exp N] +[visit_id N] +[visit_exp M] +[visit_id M] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp i] +[visit_id i] +[visit_exp `%`_iN{i#9776}((i!`%`_iN{i#9774}.0 \ (2 ^ M)))] +[visit_exp i#9776] +[visit_id i#9776] +[visit_exp ((i!`%`_iN{i#9774}.0 \ (2 ^ M)))] +[visit_exp (i!`%`_iN{i#9774}.0 \ (2 ^ M))] +[visit_exp i!`%`_iN{i#9774}.0] +[visit_exp i!`%`_iN{i#9774}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#9774] +[visit_id i#9774] +[visit_exp (2 ^ M)] +[visit_exp 2] +[visit_exp M] +[visit_id M] not free +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iextend_{N : N, M : M, i : iN(N), i#9776 : nat, i#9774 : nat}(N, M, `U`_sx, i) = `%`_iN{i#9776}((i!`%`_iN{i#9774}.0 \ (2 ^ M))) +[check_dims] M N i i#9790 i#9792 +[visit_exp N] +[visit_id N] +[visit_exp M] +[visit_id M] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp i] +[visit_id i] +[visit_exp `%`_iN{i#9792}($inv_signed_(N, $signed_(M, (i!`%`_iN{i#9790}.0 \ (2 ^ M)))))] +[visit_exp i#9792] +[visit_id i#9792] +[visit_exp ($inv_signed_(N, $signed_(M, (i!`%`_iN{i#9790}.0 \ (2 ^ M)))))] +[visit_exp $inv_signed_(N, $signed_(M, (i!`%`_iN{i#9790}.0 \ (2 ^ M))))] +[visit_exp N] +[visit_id N] not free +[visit_exp $signed_(M, (i!`%`_iN{i#9790}.0 \ (2 ^ M)))] +[visit_exp M] +[visit_id M] not free +[visit_exp (i!`%`_iN{i#9790}.0 \ (2 ^ M))] +[visit_exp i!`%`_iN{i#9790}.0] +[visit_exp i!`%`_iN{i#9790}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#9790] +[visit_id i#9790] +[visit_exp (2 ^ M)] +[visit_exp 2] +[visit_exp M] +[visit_id M] not free +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iextend_{N : N, M : M, i : iN(N), i#9792 : nat, i#9790 : nat}(N, M, `S`_sx, i) = `%`_iN{i#9792}($inv_signed_(N, $signed_(M, (i!`%`_iN{i#9790}.0 \ (2 ^ M))))) +[check_dims] N i#9812 i#9814 i#9816 i_1 i_2 +[visit_exp N] +[visit_id N] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp `%`_iN{i#9816}(((i_1!`%`_iN{i#9812}.0 + i_2!`%`_iN{i#9814}.0) \ (2 ^ N)))] +[visit_exp i#9816] +[visit_id i#9816] +[visit_exp (((i_1!`%`_iN{i#9812}.0 + i_2!`%`_iN{i#9814}.0) \ (2 ^ N)))] +[visit_exp ((i_1!`%`_iN{i#9812}.0 + i_2!`%`_iN{i#9814}.0) \ (2 ^ N))] +[visit_exp (i_1!`%`_iN{i#9812}.0 + i_2!`%`_iN{i#9814}.0)] +[visit_exp i_1!`%`_iN{i#9812}.0] +[visit_exp i_1!`%`_iN{i#9812}] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i#9812] +[visit_id i#9812] +[visit_exp i_2!`%`_iN{i#9814}.0] +[visit_exp i_2!`%`_iN{i#9814}] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp i#9814] +[visit_id i#9814] +[visit_exp (2 ^ N)] +[visit_exp 2] +[visit_exp N] +[visit_id N] not free +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iadd_{N : N, i_1 : iN(N), i_2 : iN(N), i#9816 : nat, i#9812 : nat, i#9814 : nat}(N, i_1, i_2) = `%`_iN{i#9816}(((i_1!`%`_iN{i#9812}.0 + i_2!`%`_iN{i#9814}.0) \ (2 ^ N))) +[check_dims] N i#9836 i#9838 i#9840 i_1 i_2 +[visit_exp N] +[visit_id N] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp `%`_iN{i#9840}(((((((2 ^ N) + i_1!`%`_iN{i#9836}.0) : nat <:> int) - (i_2!`%`_iN{i#9838}.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))] +[visit_exp i#9840] +[visit_id i#9840] +[visit_exp (((((((2 ^ N) + i_1!`%`_iN{i#9836}.0) : nat <:> int) - (i_2!`%`_iN{i#9838}.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))] +[visit_exp ((((((2 ^ N) + i_1!`%`_iN{i#9836}.0) : nat <:> int) - (i_2!`%`_iN{i#9838}.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)] +[visit_exp (((((2 ^ N) + i_1!`%`_iN{i#9836}.0) : nat <:> int) - (i_2!`%`_iN{i#9838}.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int))] +[visit_exp ((((2 ^ N) + i_1!`%`_iN{i#9836}.0) : nat <:> int) - (i_2!`%`_iN{i#9838}.0 : nat <:> int))] +[visit_exp (((2 ^ N) + i_1!`%`_iN{i#9836}.0) : nat <:> int)] +[visit_exp ((2 ^ N) + i_1!`%`_iN{i#9836}.0)] +[visit_exp (2 ^ N)] +[visit_exp 2] +[visit_exp N] +[visit_id N] not free +[visit_exp i_1!`%`_iN{i#9836}.0] +[visit_exp i_1!`%`_iN{i#9836}] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i#9836] +[visit_id i#9836] +[visit_exp (i_2!`%`_iN{i#9838}.0 : nat <:> int)] +[visit_exp i_2!`%`_iN{i#9838}.0] +[visit_exp i_2!`%`_iN{i#9838}] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp i#9838] +[visit_id i#9838] +[visit_exp ((2 ^ N) : nat <:> int)] +[visit_exp (2 ^ N)] +[visit_exp 2] +[visit_exp N] +[visit_id N] not free +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isub_{N : N, i_1 : iN(N), i_2 : iN(N), i#9840 : nat, i#9836 : nat, i#9838 : nat}(N, i_1, i_2) = `%`_iN{i#9840}(((((((2 ^ N) + i_1!`%`_iN{i#9836}.0) : nat <:> int) - (i_2!`%`_iN{i#9838}.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) +[check_dims] N i#9860 i#9862 i#9864 i_1 i_2 +[visit_exp N] +[visit_id N] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp `%`_iN{i#9864}(((i_1!`%`_iN{i#9860}.0 * i_2!`%`_iN{i#9862}.0) \ (2 ^ N)))] +[visit_exp i#9864] +[visit_id i#9864] +[visit_exp (((i_1!`%`_iN{i#9860}.0 * i_2!`%`_iN{i#9862}.0) \ (2 ^ N)))] +[visit_exp ((i_1!`%`_iN{i#9860}.0 * i_2!`%`_iN{i#9862}.0) \ (2 ^ N))] +[visit_exp (i_1!`%`_iN{i#9860}.0 * i_2!`%`_iN{i#9862}.0)] +[visit_exp i_1!`%`_iN{i#9860}.0] +[visit_exp i_1!`%`_iN{i#9860}] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i#9860] +[visit_id i#9860] +[visit_exp i_2!`%`_iN{i#9862}.0] +[visit_exp i_2!`%`_iN{i#9862}] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp i#9862] +[visit_id i#9862] +[visit_exp (2 ^ N)] +[visit_exp 2] +[visit_exp N] +[visit_id N] not free +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imul_{N : N, i_1 : iN(N), i_2 : iN(N), i#9864 : nat, i#9860 : nat, i#9862 : nat}(N, i_1, i_2) = `%`_iN{i#9864}(((i_1!`%`_iN{i#9860}.0 * i_2!`%`_iN{i#9862}.0) \ (2 ^ N))) +[check_dims] N i#9878 i_1 +[visit_exp N] +[visit_id N] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp `%`_iN{i#9878}(0)] +[visit_exp i#9878] +[visit_id i#9878] +[visit_exp (0)] +[visit_exp 0] +[visit_exp ?()] +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $idiv_{N : N, i_1 : iN(N), i#9878 : nat}(N, `U`_sx, i_1, `%`_iN{i#9878}(0)) = ?() +[check_dims] N i#9898 i#9900 i#9902 i_1 i_2 +[visit_exp N] +[visit_id N] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp ?(`%`_iN{i#9902}(($truncz(((i_1!`%`_iN{i#9898}.0 : nat <:> rat) / (i_2!`%`_iN{i#9900}.0 : nat <:> rat))) : int <:> nat)))] +[visit_exp `%`_iN{i#9902}(($truncz(((i_1!`%`_iN{i#9898}.0 : nat <:> rat) / (i_2!`%`_iN{i#9900}.0 : nat <:> rat))) : int <:> nat))] +[visit_exp i#9902] +[visit_id i#9902] +[visit_exp (($truncz(((i_1!`%`_iN{i#9898}.0 : nat <:> rat) / (i_2!`%`_iN{i#9900}.0 : nat <:> rat))) : int <:> nat))] +[visit_exp ($truncz(((i_1!`%`_iN{i#9898}.0 : nat <:> rat) / (i_2!`%`_iN{i#9900}.0 : nat <:> rat))) : int <:> nat)] +[visit_exp $truncz(((i_1!`%`_iN{i#9898}.0 : nat <:> rat) / (i_2!`%`_iN{i#9900}.0 : nat <:> rat)))] +[visit_exp ((i_1!`%`_iN{i#9898}.0 : nat <:> rat) / (i_2!`%`_iN{i#9900}.0 : nat <:> rat))] +[visit_exp (i_1!`%`_iN{i#9898}.0 : nat <:> rat)] +[visit_exp i_1!`%`_iN{i#9898}.0] +[visit_exp i_1!`%`_iN{i#9898}] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i#9898] +[visit_id i#9898] +[visit_exp (i_2!`%`_iN{i#9900}.0 : nat <:> rat)] +[visit_exp i_2!`%`_iN{i#9900}.0] +[visit_exp i_2!`%`_iN{i#9900}] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp i#9900] +[visit_id i#9900] +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $idiv_{N : N, i_1 : iN(N), i_2 : iN(N), i#9902 : nat, i#9898 : nat, i#9900 : nat}(N, `U`_sx, i_1, i_2) = ?(`%`_iN{i#9902}(($truncz(((i_1!`%`_iN{i#9898}.0 : nat <:> rat) / (i_2!`%`_iN{i#9900}.0 : nat <:> rat))) : int <:> nat))) +[check_dims] N i#9916 i_1 +[visit_exp N] +[visit_id N] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp `%`_iN{i#9916}(0)] +[visit_exp i#9916] +[visit_id i#9916] +[visit_exp (0)] +[visit_exp 0] +[visit_exp ?()] +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $idiv_{N : N, i_1 : iN(N), i#9916 : nat}(N, `S`_sx, i_1, `%`_iN{i#9916}(0)) = ?() +[check_dims] N i#9930 i#9932 i_1 i_2 +[visit_exp N] +[visit_id N] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp ?()] +[visit_exp ((($signed_(N, i_1!`%`_iN{i#9930}.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN{i#9932}.0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat))] +[visit_exp (($signed_(N, i_1!`%`_iN{i#9930}.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN{i#9932}.0) : int <:> rat))] +[visit_exp ($signed_(N, i_1!`%`_iN{i#9930}.0) : int <:> rat)] +[visit_exp $signed_(N, i_1!`%`_iN{i#9930}.0)] +[visit_exp N] +[visit_id N] not free +[visit_exp i_1!`%`_iN{i#9930}.0] +[visit_exp i_1!`%`_iN{i#9930}] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i#9930] +[visit_id i#9930] +[visit_exp ($signed_(N, i_2!`%`_iN{i#9932}.0) : int <:> rat)] +[visit_exp $signed_(N, i_2!`%`_iN{i#9932}.0)] +[visit_exp N] +[visit_id N] not free +[visit_exp i_2!`%`_iN{i#9932}.0] +[visit_exp i_2!`%`_iN{i#9932}] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp i#9932] +[visit_id i#9932] +[visit_exp ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)] +[visit_exp (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp 2] +[visit_exp (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp ((N : nat <:> int) - (1 : nat <:> int))] +[visit_exp (N : nat <:> int)] +[visit_exp N] +[visit_id N] not free +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $idiv_{N : N, i_1 : iN(N), i_2 : iN(N), i#9930 : nat, i#9932 : nat}(N, `S`_sx, i_1, i_2) = ?() + -- if ((($signed_(N, i_1!`%`_iN{i#9930}.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN{i#9932}.0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) +[check_dims] N i#9952 i#9954 i#9956 i_1 i_2 +[visit_exp N] +[visit_id N] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp ?(`%`_iN{i#9956}($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_iN{i#9952}.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN{i#9954}.0) : int <:> rat))))))] +[visit_exp `%`_iN{i#9956}($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_iN{i#9952}.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN{i#9954}.0) : int <:> rat)))))] +[visit_exp i#9956] +[visit_id i#9956] +[visit_exp ($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_iN{i#9952}.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN{i#9954}.0) : int <:> rat)))))] +[visit_exp $inv_signed_(N, $truncz((($signed_(N, i_1!`%`_iN{i#9952}.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN{i#9954}.0) : int <:> rat))))] +[visit_exp N] +[visit_id N] not free +[visit_exp $truncz((($signed_(N, i_1!`%`_iN{i#9952}.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN{i#9954}.0) : int <:> rat)))] +[visit_exp (($signed_(N, i_1!`%`_iN{i#9952}.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN{i#9954}.0) : int <:> rat))] +[visit_exp ($signed_(N, i_1!`%`_iN{i#9952}.0) : int <:> rat)] +[visit_exp $signed_(N, i_1!`%`_iN{i#9952}.0)] +[visit_exp N] +[visit_id N] not free +[visit_exp i_1!`%`_iN{i#9952}.0] +[visit_exp i_1!`%`_iN{i#9952}] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i#9952] +[visit_id i#9952] +[visit_exp ($signed_(N, i_2!`%`_iN{i#9954}.0) : int <:> rat)] +[visit_exp $signed_(N, i_2!`%`_iN{i#9954}.0)] +[visit_exp N] +[visit_id N] not free +[visit_exp i_2!`%`_iN{i#9954}.0] +[visit_exp i_2!`%`_iN{i#9954}] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp i#9954] +[visit_id i#9954] +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $idiv_{N : N, i_1 : iN(N), i_2 : iN(N), i#9956 : nat, i#9952 : nat, i#9954 : nat}(N, `S`_sx, i_1, i_2) = ?(`%`_iN{i#9956}($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_iN{i#9952}.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN{i#9954}.0) : int <:> rat)))))) +[check_dims] N i#9970 i_1 +[visit_exp N] +[visit_id N] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp `%`_iN{i#9970}(0)] +[visit_exp i#9970] +[visit_id i#9970] +[visit_exp (0)] +[visit_exp 0] +[visit_exp ?()] +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $irem_{N : N, i_1 : iN(N), i#9970 : nat}(N, `U`_sx, i_1, `%`_iN{i#9970}(0)) = ?() +[check_dims] N i#9990 i#9992 i#9994 i#9996 i#9998 i_1 i_2 +[visit_exp N] +[visit_id N] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp ?(`%`_iN{i#9998}((((i_1!`%`_iN{i#9996}.0 : nat <:> int) - ((i_2!`%`_iN{i#9994}.0 * ($truncz(((i_1!`%`_iN{i#9990}.0 : nat <:> rat) / (i_2!`%`_iN{i#9992}.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat)))] +[visit_exp `%`_iN{i#9998}((((i_1!`%`_iN{i#9996}.0 : nat <:> int) - ((i_2!`%`_iN{i#9994}.0 * ($truncz(((i_1!`%`_iN{i#9990}.0 : nat <:> rat) / (i_2!`%`_iN{i#9992}.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))] +[visit_exp i#9998] +[visit_id i#9998] +[visit_exp ((((i_1!`%`_iN{i#9996}.0 : nat <:> int) - ((i_2!`%`_iN{i#9994}.0 * ($truncz(((i_1!`%`_iN{i#9990}.0 : nat <:> rat) / (i_2!`%`_iN{i#9992}.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))] +[visit_exp (((i_1!`%`_iN{i#9996}.0 : nat <:> int) - ((i_2!`%`_iN{i#9994}.0 * ($truncz(((i_1!`%`_iN{i#9990}.0 : nat <:> rat) / (i_2!`%`_iN{i#9992}.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat)] +[visit_exp ((i_1!`%`_iN{i#9996}.0 : nat <:> int) - ((i_2!`%`_iN{i#9994}.0 * ($truncz(((i_1!`%`_iN{i#9990}.0 : nat <:> rat) / (i_2!`%`_iN{i#9992}.0 : nat <:> rat))) : int <:> nat)) : nat <:> int))] +[visit_exp (i_1!`%`_iN{i#9996}.0 : nat <:> int)] +[visit_exp i_1!`%`_iN{i#9996}.0] +[visit_exp i_1!`%`_iN{i#9996}] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i#9996] +[visit_id i#9996] +[visit_exp ((i_2!`%`_iN{i#9994}.0 * ($truncz(((i_1!`%`_iN{i#9990}.0 : nat <:> rat) / (i_2!`%`_iN{i#9992}.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)] +[visit_exp (i_2!`%`_iN{i#9994}.0 * ($truncz(((i_1!`%`_iN{i#9990}.0 : nat <:> rat) / (i_2!`%`_iN{i#9992}.0 : nat <:> rat))) : int <:> nat))] +[visit_exp i_2!`%`_iN{i#9994}.0] +[visit_exp i_2!`%`_iN{i#9994}] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp i#9994] +[visit_id i#9994] +[visit_exp ($truncz(((i_1!`%`_iN{i#9990}.0 : nat <:> rat) / (i_2!`%`_iN{i#9992}.0 : nat <:> rat))) : int <:> nat)] +[visit_exp $truncz(((i_1!`%`_iN{i#9990}.0 : nat <:> rat) / (i_2!`%`_iN{i#9992}.0 : nat <:> rat)))] +[visit_exp ((i_1!`%`_iN{i#9990}.0 : nat <:> rat) / (i_2!`%`_iN{i#9992}.0 : nat <:> rat))] +[visit_exp (i_1!`%`_iN{i#9990}.0 : nat <:> rat)] +[visit_exp i_1!`%`_iN{i#9990}.0] +[visit_exp i_1!`%`_iN{i#9990}] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i#9990] +[visit_id i#9990] +[visit_exp (i_2!`%`_iN{i#9992}.0 : nat <:> rat)] +[visit_exp i_2!`%`_iN{i#9992}.0] +[visit_exp i_2!`%`_iN{i#9992}] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp i#9992] +[visit_id i#9992] +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $irem_{N : N, i_1 : iN(N), i_2 : iN(N), i#9998 : nat, i#9996 : nat, i#9994 : nat, i#9990 : nat, i#9992 : nat}(N, `U`_sx, i_1, i_2) = ?(`%`_iN{i#9998}((((i_1!`%`_iN{i#9996}.0 : nat <:> int) - ((i_2!`%`_iN{i#9994}.0 * ($truncz(((i_1!`%`_iN{i#9990}.0 : nat <:> rat) / (i_2!`%`_iN{i#9992}.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) +[check_dims] N i#10012 i_1 +[visit_exp N] +[visit_id N] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp `%`_iN{i#10012}(0)] +[visit_exp i#10012] +[visit_id i#10012] +[visit_exp (0)] +[visit_exp 0] +[visit_exp ?()] +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $irem_{N : N, i_1 : iN(N), i#10012 : nat}(N, `S`_sx, i_1, `%`_iN{i#10012}(0)) = ?() +[check_dims] N i#10026 i#10028 i#10036 i_1 i_2 j_1 j_2 +[visit_exp N] +[visit_id N] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp ?(`%`_iN{i#10036}($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat))))))))] +[visit_exp `%`_iN{i#10036}($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))] +[visit_exp i#10036] +[visit_id i#10036] +[visit_exp ($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))] +[visit_exp $inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat))))))] +[visit_exp N] +[visit_id N] not free +[visit_exp (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))] +[visit_exp j_1] +[visit_id j_1] +[visit_exp (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat))))] +[visit_exp j_2] +[visit_id j_2] +[visit_exp $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))] +[visit_exp ((j_1 : int <:> rat) / (j_2 : int <:> rat))] +[visit_exp (j_1 : int <:> rat)] +[visit_exp j_1] +[visit_id j_1] not free +[visit_exp (j_2 : int <:> rat)] +[visit_exp j_2] +[visit_id j_2] not free +[visit_exp ((j_1 = $signed_(N, i_1!`%`_iN{i#10026}.0)) /\ (j_2 = $signed_(N, i_2!`%`_iN{i#10028}.0)))] +[visit_exp (j_1 = $signed_(N, i_1!`%`_iN{i#10026}.0))] +[visit_exp j_1] +[visit_id j_1] not free +[visit_exp $signed_(N, i_1!`%`_iN{i#10026}.0)] +[visit_exp N] +[visit_id N] not free +[visit_exp i_1!`%`_iN{i#10026}.0] +[visit_exp i_1!`%`_iN{i#10026}] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i#10026] +[visit_id i#10026] +[visit_exp (j_2 = $signed_(N, i_2!`%`_iN{i#10028}.0))] +[visit_exp j_2] +[visit_id j_2] not free +[visit_exp $signed_(N, i_2!`%`_iN{i#10028}.0)] +[visit_exp N] +[visit_id N] not free +[visit_exp i_2!`%`_iN{i#10028}.0] +[visit_exp i_2!`%`_iN{i#10028}] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp i#10028] +[visit_id i#10028] +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $irem_{N : N, i_1 : iN(N), i_2 : iN(N), i#10036 : nat, j_1 : int, j_2 : int, i#10026 : nat, i#10028 : nat}(N, `S`_sx, i_1, i_2) = ?(`%`_iN{i#10036}($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) + -- if ((j_1 = $signed_(N, i_1!`%`_iN{i#10026}.0)) /\ (j_2 = $signed_(N, i_2!`%`_iN{i#10028}.0))) +[check_dims] N i#10050 i#10052 i_1 i_2 +[visit_exp N] +[visit_id N] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp (i_1!`%`_iN{i#10050}.0 <= i_2!`%`_iN{i#10052}.0)] +[visit_exp i_1!`%`_iN{i#10050}.0] +[visit_exp i_1!`%`_iN{i#10050}] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i#10050] +[visit_id i#10050] +[visit_exp i_2!`%`_iN{i#10052}.0] +[visit_exp i_2!`%`_iN{i#10052}] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp i#10052] +[visit_id i#10052] +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imin_{N : N, i_1 : iN(N), i_2 : iN(N), i#10050 : nat, i#10052 : nat}(N, `U`_sx, i_1, i_2) = i_1 + -- if (i_1!`%`_iN{i#10050}.0 <= i_2!`%`_iN{i#10052}.0) +[check_dims] N i#10072 i#10074 i_1 i_2 +[visit_exp N] +[visit_id N] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp (i_1!`%`_iN{i#10072}.0 > i_2!`%`_iN{i#10074}.0)] +[visit_exp i_1!`%`_iN{i#10072}.0] +[visit_exp i_1!`%`_iN{i#10072}] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i#10072] +[visit_id i#10072] +[visit_exp i_2!`%`_iN{i#10074}.0] +[visit_exp i_2!`%`_iN{i#10074}] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp i#10074] +[visit_id i#10074] +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imin_{N : N, i_1 : iN(N), i_2 : iN(N), i#10072 : nat, i#10074 : nat}(N, `U`_sx, i_1, i_2) = i_2 + -- if (i_1!`%`_iN{i#10072}.0 > i_2!`%`_iN{i#10074}.0) +[check_dims] N i#10094 i#10096 i_1 i_2 +[visit_exp N] +[visit_id N] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp ($signed_(N, i_1!`%`_iN{i#10094}.0) <= $signed_(N, i_2!`%`_iN{i#10096}.0))] +[visit_exp $signed_(N, i_1!`%`_iN{i#10094}.0)] +[visit_exp N] +[visit_id N] not free +[visit_exp i_1!`%`_iN{i#10094}.0] +[visit_exp i_1!`%`_iN{i#10094}] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i#10094] +[visit_id i#10094] +[visit_exp $signed_(N, i_2!`%`_iN{i#10096}.0)] +[visit_exp N] +[visit_id N] not free +[visit_exp i_2!`%`_iN{i#10096}.0] +[visit_exp i_2!`%`_iN{i#10096}] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp i#10096] +[visit_id i#10096] +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imin_{N : N, i_1 : iN(N), i_2 : iN(N), i#10094 : nat, i#10096 : nat}(N, `S`_sx, i_1, i_2) = i_1 + -- if ($signed_(N, i_1!`%`_iN{i#10094}.0) <= $signed_(N, i_2!`%`_iN{i#10096}.0)) +[check_dims] N i_1 i_2 +[visit_exp N] +[visit_id N] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp i_2] +[visit_id i_2] not free +=> + ;; ../../../../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) = i_2 + -- otherwise +[check_dims] N i#10134 i#10136 i_1 i_2 +[visit_exp N] +[visit_id N] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp (i_1!`%`_iN{i#10134}.0 >= i_2!`%`_iN{i#10136}.0)] +[visit_exp i_1!`%`_iN{i#10134}.0] +[visit_exp i_1!`%`_iN{i#10134}] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i#10134] +[visit_id i#10134] +[visit_exp i_2!`%`_iN{i#10136}.0] +[visit_exp i_2!`%`_iN{i#10136}] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp i#10136] +[visit_id i#10136] +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imax_{N : N, i_1 : iN(N), i_2 : iN(N), i#10134 : nat, i#10136 : nat}(N, `U`_sx, i_1, i_2) = i_1 + -- if (i_1!`%`_iN{i#10134}.0 >= i_2!`%`_iN{i#10136}.0) +[check_dims] N i#10156 i#10158 i_1 i_2 +[visit_exp N] +[visit_id N] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp (i_1!`%`_iN{i#10156}.0 < i_2!`%`_iN{i#10158}.0)] +[visit_exp i_1!`%`_iN{i#10156}.0] +[visit_exp i_1!`%`_iN{i#10156}] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i#10156] +[visit_id i#10156] +[visit_exp i_2!`%`_iN{i#10158}.0] +[visit_exp i_2!`%`_iN{i#10158}] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp i#10158] +[visit_id i#10158] +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imax_{N : N, i_1 : iN(N), i_2 : iN(N), i#10156 : nat, i#10158 : nat}(N, `U`_sx, i_1, i_2) = i_2 + -- if (i_1!`%`_iN{i#10156}.0 < i_2!`%`_iN{i#10158}.0) +[check_dims] N i#10178 i#10180 i_1 i_2 +[visit_exp N] +[visit_id N] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp ($signed_(N, i_1!`%`_iN{i#10178}.0) >= $signed_(N, i_2!`%`_iN{i#10180}.0))] +[visit_exp $signed_(N, i_1!`%`_iN{i#10178}.0)] +[visit_exp N] +[visit_id N] not free +[visit_exp i_1!`%`_iN{i#10178}.0] +[visit_exp i_1!`%`_iN{i#10178}] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i#10178] +[visit_id i#10178] +[visit_exp $signed_(N, i_2!`%`_iN{i#10180}.0)] +[visit_exp N] +[visit_id N] not free +[visit_exp i_2!`%`_iN{i#10180}.0] +[visit_exp i_2!`%`_iN{i#10180}] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp i#10180] +[visit_id i#10180] +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $imax_{N : N, i_1 : iN(N), i_2 : iN(N), i#10178 : nat, i#10180 : nat}(N, `S`_sx, i_1, i_2) = i_1 + -- if ($signed_(N, i_1!`%`_iN{i#10178}.0) >= $signed_(N, i_2!`%`_iN{i#10180}.0)) +[check_dims] N i_1 i_2 +[visit_exp N] +[visit_id N] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp i_2] +[visit_id i_2] not free +=> + ;; ../../../../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) = i_2 + -- otherwise +[check_dims] N i#10224 i#10226 i#10228 i_1 i_2 +[visit_exp N] +[visit_id N] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp `%`_iN{i#10228}($sat_u_(N, ((i_1!`%`_iN{i#10224}.0 + i_2!`%`_iN{i#10226}.0) : nat <:> int)))] +[visit_exp i#10228] +[visit_id i#10228] +[visit_exp ($sat_u_(N, ((i_1!`%`_iN{i#10224}.0 + i_2!`%`_iN{i#10226}.0) : nat <:> int)))] +[visit_exp $sat_u_(N, ((i_1!`%`_iN{i#10224}.0 + i_2!`%`_iN{i#10226}.0) : nat <:> int))] +[visit_exp N] +[visit_id N] not free +[visit_exp ((i_1!`%`_iN{i#10224}.0 + i_2!`%`_iN{i#10226}.0) : nat <:> int)] +[visit_exp (i_1!`%`_iN{i#10224}.0 + i_2!`%`_iN{i#10226}.0)] +[visit_exp i_1!`%`_iN{i#10224}.0] +[visit_exp i_1!`%`_iN{i#10224}] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i#10224] +[visit_id i#10224] +[visit_exp i_2!`%`_iN{i#10226}.0] +[visit_exp i_2!`%`_iN{i#10226}] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp i#10226] +[visit_id i#10226] +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iadd_sat_{N : N, i_1 : iN(N), i_2 : iN(N), i#10228 : nat, i#10224 : nat, i#10226 : nat}(N, `U`_sx, i_1, i_2) = `%`_iN{i#10228}($sat_u_(N, ((i_1!`%`_iN{i#10224}.0 + i_2!`%`_iN{i#10226}.0) : nat <:> int))) +[check_dims] N i#10248 i#10250 i#10252 i_1 i_2 +[visit_exp N] +[visit_id N] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp `%`_iN{i#10252}($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN{i#10248}.0) + $signed_(N, i_2!`%`_iN{i#10250}.0)))))] +[visit_exp i#10252] +[visit_id i#10252] +[visit_exp ($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN{i#10248}.0) + $signed_(N, i_2!`%`_iN{i#10250}.0)))))] +[visit_exp $inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN{i#10248}.0) + $signed_(N, i_2!`%`_iN{i#10250}.0))))] +[visit_exp N] +[visit_id N] not free +[visit_exp $sat_s_(N, ($signed_(N, i_1!`%`_iN{i#10248}.0) + $signed_(N, i_2!`%`_iN{i#10250}.0)))] +[visit_exp N] +[visit_id N] not free +[visit_exp ($signed_(N, i_1!`%`_iN{i#10248}.0) + $signed_(N, i_2!`%`_iN{i#10250}.0))] +[visit_exp $signed_(N, i_1!`%`_iN{i#10248}.0)] +[visit_exp N] +[visit_id N] not free +[visit_exp i_1!`%`_iN{i#10248}.0] +[visit_exp i_1!`%`_iN{i#10248}] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i#10248] +[visit_id i#10248] +[visit_exp $signed_(N, i_2!`%`_iN{i#10250}.0)] +[visit_exp N] +[visit_id N] not free +[visit_exp i_2!`%`_iN{i#10250}.0] +[visit_exp i_2!`%`_iN{i#10250}] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp i#10250] +[visit_id i#10250] +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iadd_sat_{N : N, i_1 : iN(N), i_2 : iN(N), i#10252 : nat, i#10248 : nat, i#10250 : nat}(N, `S`_sx, i_1, i_2) = `%`_iN{i#10252}($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN{i#10248}.0) + $signed_(N, i_2!`%`_iN{i#10250}.0))))) +[check_dims] N i#10272 i#10274 i#10276 i_1 i_2 +[visit_exp N] +[visit_id N] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp `%`_iN{i#10276}($sat_u_(N, ((i_1!`%`_iN{i#10272}.0 : nat <:> int) - (i_2!`%`_iN{i#10274}.0 : nat <:> int))))] +[visit_exp i#10276] +[visit_id i#10276] +[visit_exp ($sat_u_(N, ((i_1!`%`_iN{i#10272}.0 : nat <:> int) - (i_2!`%`_iN{i#10274}.0 : nat <:> int))))] +[visit_exp $sat_u_(N, ((i_1!`%`_iN{i#10272}.0 : nat <:> int) - (i_2!`%`_iN{i#10274}.0 : nat <:> int)))] +[visit_exp N] +[visit_id N] not free +[visit_exp ((i_1!`%`_iN{i#10272}.0 : nat <:> int) - (i_2!`%`_iN{i#10274}.0 : nat <:> int))] +[visit_exp (i_1!`%`_iN{i#10272}.0 : nat <:> int)] +[visit_exp i_1!`%`_iN{i#10272}.0] +[visit_exp i_1!`%`_iN{i#10272}] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i#10272] +[visit_id i#10272] +[visit_exp (i_2!`%`_iN{i#10274}.0 : nat <:> int)] +[visit_exp i_2!`%`_iN{i#10274}.0] +[visit_exp i_2!`%`_iN{i#10274}] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp i#10274] +[visit_id i#10274] +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isub_sat_{N : N, i_1 : iN(N), i_2 : iN(N), i#10276 : nat, i#10272 : nat, i#10274 : nat}(N, `U`_sx, i_1, i_2) = `%`_iN{i#10276}($sat_u_(N, ((i_1!`%`_iN{i#10272}.0 : nat <:> int) - (i_2!`%`_iN{i#10274}.0 : nat <:> int)))) +[check_dims] N i#10296 i#10298 i#10300 i_1 i_2 +[visit_exp N] +[visit_id N] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp `%`_iN{i#10300}($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN{i#10296}.0) - $signed_(N, i_2!`%`_iN{i#10298}.0)))))] +[visit_exp i#10300] +[visit_id i#10300] +[visit_exp ($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN{i#10296}.0) - $signed_(N, i_2!`%`_iN{i#10298}.0)))))] +[visit_exp $inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN{i#10296}.0) - $signed_(N, i_2!`%`_iN{i#10298}.0))))] +[visit_exp N] +[visit_id N] not free +[visit_exp $sat_s_(N, ($signed_(N, i_1!`%`_iN{i#10296}.0) - $signed_(N, i_2!`%`_iN{i#10298}.0)))] +[visit_exp N] +[visit_id N] not free +[visit_exp ($signed_(N, i_1!`%`_iN{i#10296}.0) - $signed_(N, i_2!`%`_iN{i#10298}.0))] +[visit_exp $signed_(N, i_1!`%`_iN{i#10296}.0)] +[visit_exp N] +[visit_id N] not free +[visit_exp i_1!`%`_iN{i#10296}.0] +[visit_exp i_1!`%`_iN{i#10296}] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i#10296] +[visit_id i#10296] +[visit_exp $signed_(N, i_2!`%`_iN{i#10298}.0)] +[visit_exp N] +[visit_id N] not free +[visit_exp i_2!`%`_iN{i#10298}.0] +[visit_exp i_2!`%`_iN{i#10298}] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp i#10298] +[visit_id i#10298] +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isub_sat_{N : N, i_1 : iN(N), i_2 : iN(N), i#10300 : nat, i#10296 : nat, i#10298 : nat}(N, `S`_sx, i_1, i_2) = `%`_iN{i#10300}($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN{i#10296}.0) - $signed_(N, i_2!`%`_iN{i#10298}.0))))) +[check_dims] N i#10318 i#10328 i_1 +[visit_exp N] +[visit_id N] +[visit_exp i_1] +[visit_id i_1] +[visit_exp `%`_u32{i#10328}($bool((i_1!`%`_iN{i#10318}.0 = 0)))] +[visit_exp i#10328] +[visit_id i#10328] +[visit_exp ($bool((i_1!`%`_iN{i#10318}.0 = 0)))] +[visit_exp $bool((i_1!`%`_iN{i#10318}.0 = 0))] +[visit_exp (i_1!`%`_iN{i#10318}.0 = 0)] +[visit_exp i_1!`%`_iN{i#10318}.0] +[visit_exp i_1!`%`_iN{i#10318}] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i#10318] +[visit_id i#10318] +[visit_exp 0] +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ieqz_{N : N, i_1 : iN(N), i#10328 : nat, i#10318 : nat}(N, i_1) = `%`_u32{i#10328}($bool((i_1!`%`_iN{i#10318}.0 = 0))) +[check_dims] N i#10346 i#10356 i_1 +[visit_exp N] +[visit_id N] +[visit_exp i_1] +[visit_id i_1] +[visit_exp `%`_u32{i#10356}($bool((i_1!`%`_iN{i#10346}.0 =/= 0)))] +[visit_exp i#10356] +[visit_id i#10356] +[visit_exp ($bool((i_1!`%`_iN{i#10346}.0 =/= 0)))] +[visit_exp $bool((i_1!`%`_iN{i#10346}.0 =/= 0))] +[visit_exp (i_1!`%`_iN{i#10346}.0 =/= 0)] +[visit_exp i_1!`%`_iN{i#10346}.0] +[visit_exp i_1!`%`_iN{i#10346}] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i#10346] +[visit_id i#10346] +[visit_exp 0] +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $inez_{N : N, i_1 : iN(N), i#10356 : nat, i#10346 : nat}(N, i_1) = `%`_u32{i#10356}($bool((i_1!`%`_iN{i#10346}.0 =/= 0))) +[check_dims] N i#10394 i_1 i_2 +[visit_exp N] +[visit_id N] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp `%`_u32{i#10394}($bool((i_1 = i_2)))] +[visit_exp i#10394] +[visit_id i#10394] +[visit_exp ($bool((i_1 = i_2)))] +[visit_exp $bool((i_1 = i_2))] +[visit_exp (i_1 = i_2)] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i_2] +[visit_id i_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ieq_{N : N, i_1 : iN(N), i_2 : iN(N), i#10394 : nat}(N, i_1, i_2) = `%`_u32{i#10394}($bool((i_1 = i_2))) +[check_dims] N i#10432 i_1 i_2 +[visit_exp N] +[visit_id N] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp `%`_u32{i#10432}($bool((i_1 =/= i_2)))] +[visit_exp i#10432] +[visit_id i#10432] +[visit_exp ($bool((i_1 =/= i_2)))] +[visit_exp $bool((i_1 =/= i_2))] +[visit_exp (i_1 =/= i_2)] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i_2] +[visit_id i_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ine_{N : N, i_1 : iN(N), i_2 : iN(N), i#10432 : nat}(N, i_1, i_2) = `%`_u32{i#10432}($bool((i_1 =/= i_2))) +[check_dims] N i#10456 i#10458 i#10468 i_1 i_2 +[visit_exp N] +[visit_id N] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp `%`_u32{i#10468}($bool((i_1!`%`_iN{i#10456}.0 < i_2!`%`_iN{i#10458}.0)))] +[visit_exp i#10468] +[visit_id i#10468] +[visit_exp ($bool((i_1!`%`_iN{i#10456}.0 < i_2!`%`_iN{i#10458}.0)))] +[visit_exp $bool((i_1!`%`_iN{i#10456}.0 < i_2!`%`_iN{i#10458}.0))] +[visit_exp (i_1!`%`_iN{i#10456}.0 < i_2!`%`_iN{i#10458}.0)] +[visit_exp i_1!`%`_iN{i#10456}.0] +[visit_exp i_1!`%`_iN{i#10456}] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i#10456] +[visit_id i#10456] +[visit_exp i_2!`%`_iN{i#10458}.0] +[visit_exp i_2!`%`_iN{i#10458}] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp i#10458] +[visit_id i#10458] +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ilt_{N : N, i_1 : iN(N), i_2 : iN(N), i#10468 : nat, i#10456 : nat, i#10458 : nat}(N, `U`_sx, i_1, i_2) = `%`_u32{i#10468}($bool((i_1!`%`_iN{i#10456}.0 < i_2!`%`_iN{i#10458}.0))) +[check_dims] N i#10492 i#10494 i#10504 i_1 i_2 +[visit_exp N] +[visit_id N] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp `%`_u32{i#10504}($bool(($signed_(N, i_1!`%`_iN{i#10492}.0) < $signed_(N, i_2!`%`_iN{i#10494}.0))))] +[visit_exp i#10504] +[visit_id i#10504] +[visit_exp ($bool(($signed_(N, i_1!`%`_iN{i#10492}.0) < $signed_(N, i_2!`%`_iN{i#10494}.0))))] +[visit_exp $bool(($signed_(N, i_1!`%`_iN{i#10492}.0) < $signed_(N, i_2!`%`_iN{i#10494}.0)))] +[visit_exp ($signed_(N, i_1!`%`_iN{i#10492}.0) < $signed_(N, i_2!`%`_iN{i#10494}.0))] +[visit_exp $signed_(N, i_1!`%`_iN{i#10492}.0)] +[visit_exp N] +[visit_id N] not free +[visit_exp i_1!`%`_iN{i#10492}.0] +[visit_exp i_1!`%`_iN{i#10492}] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i#10492] +[visit_id i#10492] +[visit_exp $signed_(N, i_2!`%`_iN{i#10494}.0)] +[visit_exp N] +[visit_id N] not free +[visit_exp i_2!`%`_iN{i#10494}.0] +[visit_exp i_2!`%`_iN{i#10494}] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp i#10494] +[visit_id i#10494] +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ilt_{N : N, i_1 : iN(N), i_2 : iN(N), i#10504 : nat, i#10492 : nat, i#10494 : nat}(N, `S`_sx, i_1, i_2) = `%`_u32{i#10504}($bool(($signed_(N, i_1!`%`_iN{i#10492}.0) < $signed_(N, i_2!`%`_iN{i#10494}.0)))) +[check_dims] N i#10528 i#10530 i#10540 i_1 i_2 +[visit_exp N] +[visit_id N] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp `%`_u32{i#10540}($bool((i_1!`%`_iN{i#10528}.0 > i_2!`%`_iN{i#10530}.0)))] +[visit_exp i#10540] +[visit_id i#10540] +[visit_exp ($bool((i_1!`%`_iN{i#10528}.0 > i_2!`%`_iN{i#10530}.0)))] +[visit_exp $bool((i_1!`%`_iN{i#10528}.0 > i_2!`%`_iN{i#10530}.0))] +[visit_exp (i_1!`%`_iN{i#10528}.0 > i_2!`%`_iN{i#10530}.0)] +[visit_exp i_1!`%`_iN{i#10528}.0] +[visit_exp i_1!`%`_iN{i#10528}] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i#10528] +[visit_id i#10528] +[visit_exp i_2!`%`_iN{i#10530}.0] +[visit_exp i_2!`%`_iN{i#10530}] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp i#10530] +[visit_id i#10530] +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $igt_{N : N, i_1 : iN(N), i_2 : iN(N), i#10540 : nat, i#10528 : nat, i#10530 : nat}(N, `U`_sx, i_1, i_2) = `%`_u32{i#10540}($bool((i_1!`%`_iN{i#10528}.0 > i_2!`%`_iN{i#10530}.0))) +[check_dims] N i#10564 i#10566 i#10576 i_1 i_2 +[visit_exp N] +[visit_id N] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp `%`_u32{i#10576}($bool(($signed_(N, i_1!`%`_iN{i#10564}.0) > $signed_(N, i_2!`%`_iN{i#10566}.0))))] +[visit_exp i#10576] +[visit_id i#10576] +[visit_exp ($bool(($signed_(N, i_1!`%`_iN{i#10564}.0) > $signed_(N, i_2!`%`_iN{i#10566}.0))))] +[visit_exp $bool(($signed_(N, i_1!`%`_iN{i#10564}.0) > $signed_(N, i_2!`%`_iN{i#10566}.0)))] +[visit_exp ($signed_(N, i_1!`%`_iN{i#10564}.0) > $signed_(N, i_2!`%`_iN{i#10566}.0))] +[visit_exp $signed_(N, i_1!`%`_iN{i#10564}.0)] +[visit_exp N] +[visit_id N] not free +[visit_exp i_1!`%`_iN{i#10564}.0] +[visit_exp i_1!`%`_iN{i#10564}] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i#10564] +[visit_id i#10564] +[visit_exp $signed_(N, i_2!`%`_iN{i#10566}.0)] +[visit_exp N] +[visit_id N] not free +[visit_exp i_2!`%`_iN{i#10566}.0] +[visit_exp i_2!`%`_iN{i#10566}] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp i#10566] +[visit_id i#10566] +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $igt_{N : N, i_1 : iN(N), i_2 : iN(N), i#10576 : nat, i#10564 : nat, i#10566 : nat}(N, `S`_sx, i_1, i_2) = `%`_u32{i#10576}($bool(($signed_(N, i_1!`%`_iN{i#10564}.0) > $signed_(N, i_2!`%`_iN{i#10566}.0)))) +[check_dims] N i#10600 i#10602 i#10612 i_1 i_2 +[visit_exp N] +[visit_id N] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp `%`_u32{i#10612}($bool((i_1!`%`_iN{i#10600}.0 <= i_2!`%`_iN{i#10602}.0)))] +[visit_exp i#10612] +[visit_id i#10612] +[visit_exp ($bool((i_1!`%`_iN{i#10600}.0 <= i_2!`%`_iN{i#10602}.0)))] +[visit_exp $bool((i_1!`%`_iN{i#10600}.0 <= i_2!`%`_iN{i#10602}.0))] +[visit_exp (i_1!`%`_iN{i#10600}.0 <= i_2!`%`_iN{i#10602}.0)] +[visit_exp i_1!`%`_iN{i#10600}.0] +[visit_exp i_1!`%`_iN{i#10600}] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i#10600] +[visit_id i#10600] +[visit_exp i_2!`%`_iN{i#10602}.0] +[visit_exp i_2!`%`_iN{i#10602}] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp i#10602] +[visit_id i#10602] +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ile_{N : N, i_1 : iN(N), i_2 : iN(N), i#10612 : nat, i#10600 : nat, i#10602 : nat}(N, `U`_sx, i_1, i_2) = `%`_u32{i#10612}($bool((i_1!`%`_iN{i#10600}.0 <= i_2!`%`_iN{i#10602}.0))) +[check_dims] N i#10636 i#10638 i#10648 i_1 i_2 +[visit_exp N] +[visit_id N] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp `%`_u32{i#10648}($bool(($signed_(N, i_1!`%`_iN{i#10636}.0) <= $signed_(N, i_2!`%`_iN{i#10638}.0))))] +[visit_exp i#10648] +[visit_id i#10648] +[visit_exp ($bool(($signed_(N, i_1!`%`_iN{i#10636}.0) <= $signed_(N, i_2!`%`_iN{i#10638}.0))))] +[visit_exp $bool(($signed_(N, i_1!`%`_iN{i#10636}.0) <= $signed_(N, i_2!`%`_iN{i#10638}.0)))] +[visit_exp ($signed_(N, i_1!`%`_iN{i#10636}.0) <= $signed_(N, i_2!`%`_iN{i#10638}.0))] +[visit_exp $signed_(N, i_1!`%`_iN{i#10636}.0)] +[visit_exp N] +[visit_id N] not free +[visit_exp i_1!`%`_iN{i#10636}.0] +[visit_exp i_1!`%`_iN{i#10636}] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i#10636] +[visit_id i#10636] +[visit_exp $signed_(N, i_2!`%`_iN{i#10638}.0)] +[visit_exp N] +[visit_id N] not free +[visit_exp i_2!`%`_iN{i#10638}.0] +[visit_exp i_2!`%`_iN{i#10638}] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp i#10638] +[visit_id i#10638] +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ile_{N : N, i_1 : iN(N), i_2 : iN(N), i#10648 : nat, i#10636 : nat, i#10638 : nat}(N, `S`_sx, i_1, i_2) = `%`_u32{i#10648}($bool(($signed_(N, i_1!`%`_iN{i#10636}.0) <= $signed_(N, i_2!`%`_iN{i#10638}.0)))) +[check_dims] N i#10672 i#10674 i#10684 i_1 i_2 +[visit_exp N] +[visit_id N] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp `%`_u32{i#10684}($bool((i_1!`%`_iN{i#10672}.0 >= i_2!`%`_iN{i#10674}.0)))] +[visit_exp i#10684] +[visit_id i#10684] +[visit_exp ($bool((i_1!`%`_iN{i#10672}.0 >= i_2!`%`_iN{i#10674}.0)))] +[visit_exp $bool((i_1!`%`_iN{i#10672}.0 >= i_2!`%`_iN{i#10674}.0))] +[visit_exp (i_1!`%`_iN{i#10672}.0 >= i_2!`%`_iN{i#10674}.0)] +[visit_exp i_1!`%`_iN{i#10672}.0] +[visit_exp i_1!`%`_iN{i#10672}] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i#10672] +[visit_id i#10672] +[visit_exp i_2!`%`_iN{i#10674}.0] +[visit_exp i_2!`%`_iN{i#10674}] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp i#10674] +[visit_id i#10674] +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ige_{N : N, i_1 : iN(N), i_2 : iN(N), i#10684 : nat, i#10672 : nat, i#10674 : nat}(N, `U`_sx, i_1, i_2) = `%`_u32{i#10684}($bool((i_1!`%`_iN{i#10672}.0 >= i_2!`%`_iN{i#10674}.0))) +[check_dims] N i#10708 i#10710 i#10720 i_1 i_2 +[visit_exp N] +[visit_id N] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp `%`_u32{i#10720}($bool(($signed_(N, i_1!`%`_iN{i#10708}.0) >= $signed_(N, i_2!`%`_iN{i#10710}.0))))] +[visit_exp i#10720] +[visit_id i#10720] +[visit_exp ($bool(($signed_(N, i_1!`%`_iN{i#10708}.0) >= $signed_(N, i_2!`%`_iN{i#10710}.0))))] +[visit_exp $bool(($signed_(N, i_1!`%`_iN{i#10708}.0) >= $signed_(N, i_2!`%`_iN{i#10710}.0)))] +[visit_exp ($signed_(N, i_1!`%`_iN{i#10708}.0) >= $signed_(N, i_2!`%`_iN{i#10710}.0))] +[visit_exp $signed_(N, i_1!`%`_iN{i#10708}.0)] +[visit_exp N] +[visit_id N] not free +[visit_exp i_1!`%`_iN{i#10708}.0] +[visit_exp i_1!`%`_iN{i#10708}] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i#10708] +[visit_id i#10708] +[visit_exp $signed_(N, i_2!`%`_iN{i#10710}.0)] +[visit_exp N] +[visit_id N] not free +[visit_exp i_2!`%`_iN{i#10710}.0] +[visit_exp i_2!`%`_iN{i#10710}] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp i#10710] +[visit_id i#10710] +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $ige_{N : N, i_1 : iN(N), i_2 : iN(N), i#10720 : nat, i#10708 : nat, i#10710 : nat}(N, `S`_sx, i_1, i_2) = `%`_u32{i#10720}($bool(($signed_(N, i_1!`%`_iN{i#10708}.0) >= $signed_(N, i_2!`%`_iN{i#10710}.0)))) +[check_dims] N fN +DecD fabs_(N : N, fN : fN(N)) : fN(N)* +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N fN +DecD fneg_(N : N, fN : fN(N)) : fN(N)* +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N fN +DecD fsqrt_(N : N, fN : fN(N)) : fN(N)* +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N fN +DecD fceil_(N : N, fN : fN(N)) : fN(N)* +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N fN +DecD ffloor_(N : N, fN : fN(N)) : fN(N)* +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N fN +DecD ftrunc_(N : N, fN : fN(N)) : fN(N)* +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N fN +DecD fnearest_(N : N, fN : fN(N)) : fN(N)* +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N fN +DecD fadd_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N fN +DecD fsub_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N fN +DecD fmul_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N fN +DecD fdiv_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N fN +DecD fmin_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N fN +DecD fmax_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N fN +DecD fpmin_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N fN +DecD fpmax_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N fN +DecD frelaxed_min_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N fN +DecD frelaxed_max_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N fN +DecD fcopysign_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N fN +DecD feq_(N : N, fN : fN(N), fN : fN(N)) : u32 +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N fN +DecD fne_(N : N, fN : fN(N), fN : fN(N)) : u32 +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N fN +DecD flt_(N : N, fN : fN(N), fN : fN(N)) : u32 +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N fN +DecD fgt_(N : N, fN : fN(N), fN : fN(N)) : u32 +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N fN +DecD fle_(N : N, fN : fN(N), fN : fN(N)) : u32 +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N fN +DecD fge_(N : N, fN : fN(N), fN : fN(N)) : u32 +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N fN +DecD frelaxed_madd_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)* +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N fN +DecD frelaxed_nmadd_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)* +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] M N iN +DecD wrap__(M : M, N : N, iN : iN(M)) : iN(N) +[visit_id M] not free +[visit_id N] not free +[visit_id iN] not free +[visit_exp M] +[visit_id M] not free +[visit_exp N] +[visit_id N] not free +[check_dims] M N iN sx +DecD extend__(M : M, N : N, sx : sx, iN : iN(M)) : iN(N) +[visit_id M] not free +[visit_id N] not free +[visit_id sx] not free +[visit_id iN] not free +[visit_exp M] +[visit_id M] not free +[visit_exp N] +[visit_id N] not free +[check_dims] M N fN sx +DecD trunc__(M : M, N : N, sx : sx, fN : fN(M)) : iN(N)? +[visit_id M] not free +[visit_id N] not free +[visit_id sx] not free +[visit_id fN] not free +[visit_exp M] +[visit_id M] not free +[visit_exp N] +[visit_id N] not free +[check_dims] M N fN sx +DecD trunc_sat__(M : M, N : N, sx : sx, fN : fN(M)) : iN(N)? +[visit_id M] not free +[visit_id N] not free +[visit_id sx] not free +[visit_id fN] not free +[visit_exp M] +[visit_id M] not free +[visit_exp N] +[visit_id N] not free +[check_dims] M N fN sx +DecD relaxed_trunc__(M : M, N : N, sx : sx, fN : fN(M)) : iN(N)? +[visit_id M] not free +[visit_id N] not free +[visit_id sx] not free +[visit_id fN] not free +[visit_exp M] +[visit_id M] not free +[visit_exp N] +[visit_id N] not free +[check_dims] M N fN +DecD demote__(M : M, N : N, fN : fN(M)) : fN(N)* +[visit_id M] not free +[visit_id N] not free +[visit_id fN] not free +[visit_exp M] +[visit_id M] not free +[visit_exp N] +[visit_id N] not free +[check_dims] M N fN +DecD promote__(M : M, N : N, fN : fN(M)) : fN(N)* +[visit_id M] not free +[visit_id N] not free +[visit_id fN] not free +[visit_exp M] +[visit_id M] not free +[visit_exp N] +[visit_id N] not free +[check_dims] M N iN sx +DecD convert__(M : M, N : N, sx : sx, iN : iN(M)) : fN(N) +[visit_id M] not free +[visit_id N] not free +[visit_id sx] not free +[visit_id iN] not free +[visit_exp M] +[visit_id M] not free +[visit_exp N] +[visit_id N] not free +[check_dims] M N iN sx +DecD narrow__(M : M, N : N, sx : sx, iN : iN(M)) : iN(N) +[visit_id M] not free +[visit_id N] not free +[visit_id sx] not free +[visit_id iN] not free +[visit_exp M] +[visit_id M] not free +[visit_exp N] +[visit_id N] not free +[check_dims] num_ numtype_1 numtype_2 +DecD reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_(numtype_1)) : num_(numtype_2) +[visit_id numtype_1] not free +[visit_id numtype_2] not free +[visit_id num_] not free +[visit_exp numtype_1] +[visit_id numtype_1] not free +[visit_exp numtype_2] +[visit_id numtype_2] not free +[check_dims] lanetype num_ +DecD lpacknum_(lanetype : lanetype, num_ : num_($lunpack(lanetype))) : lane_(lanetype) +[visit_id lanetype] not free +[visit_id num_] not free +[visit_exp $lunpack(lanetype)] +[visit_exp lanetype] +[visit_id lanetype] not free +[visit_exp lanetype] +[visit_id lanetype] not free +[check_dims] lit_ storagetype +DecD cpacknum_(storagetype : storagetype, lit_ : lit_(($cunpack(storagetype) : consttype <: storagetype))) : lit_(storagetype) +[visit_id storagetype] not free +[visit_id lit_] not free +[visit_exp ($cunpack(storagetype) : consttype <: storagetype)] +[visit_exp $cunpack(storagetype)] +[visit_exp storagetype] +[visit_id storagetype] not free +[visit_exp storagetype] +[visit_id storagetype] not free +[check_dims] c numtype +[visit_exp (numtype : numtype <: lanetype)] +[visit_exp numtype] +[visit_id numtype] +[visit_exp c] +[visit_id c] +[visit_exp c] +[visit_id c] not free +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lpacknum_{numtype : numtype, c : num_($lunpack((numtype : numtype <: lanetype)))}((numtype : numtype <: lanetype), c) = c +[check_dims] c packtype +[visit_exp (packtype : packtype <: lanetype)] +[visit_exp packtype] +[visit_id packtype] +[visit_exp c] +[visit_id c] +[visit_exp $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)] +[visit_exp $size($lunpack((packtype : packtype <: lanetype)))] +[visit_exp $lunpack((packtype : packtype <: lanetype))] +[visit_exp (packtype : packtype <: lanetype)] +[visit_exp packtype] +[visit_id packtype] not free +[visit_exp $psize(packtype)] +[visit_exp packtype] +[visit_id packtype] not free +[visit_exp c] +[visit_id c] not free +=> + ;; ../../../../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) +[check_dims] c consttype +[visit_exp (consttype : consttype <: storagetype)] +[visit_exp consttype] +[visit_id consttype] +[visit_exp c] +[visit_id c] +[visit_exp c] +[visit_id c] not free +=> + ;; ../../../../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 +[check_dims] c packtype +[visit_exp (packtype : packtype <: storagetype)] +[visit_exp packtype] +[visit_id packtype] +[visit_exp c] +[visit_id c] +[visit_exp $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)] +[visit_exp $size($lunpack((packtype : packtype <: lanetype)))] +[visit_exp $lunpack((packtype : packtype <: lanetype))] +[visit_exp (packtype : packtype <: lanetype)] +[visit_exp packtype] +[visit_id packtype] not free +[visit_exp $psize(packtype)] +[visit_exp packtype] +[visit_id packtype] not free +[visit_exp c] +[visit_id c] not free +=> + ;; ../../../../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) +[check_dims] lane_ lanetype +DecD lunpacknum_(lanetype : lanetype, lane_ : lane_(lanetype)) : num_($lunpack(lanetype)) +[visit_id lanetype] not free +[visit_id lane_] not free +[visit_exp lanetype] +[visit_id lanetype] not free +[visit_exp $lunpack(lanetype)] +[visit_exp lanetype] +[visit_id lanetype] not free +[check_dims] lit_ storagetype +DecD cunpacknum_(storagetype : storagetype, lit_ : lit_(storagetype)) : lit_(($cunpack(storagetype) : consttype <: storagetype)) +[visit_id storagetype] not free +[visit_id lit_] not free +[visit_exp storagetype] +[visit_id storagetype] not free +[visit_exp ($cunpack(storagetype) : consttype <: storagetype)] +[visit_exp $cunpack(storagetype)] +[visit_exp storagetype] +[visit_id storagetype] not free +[check_dims] c numtype +[visit_exp (numtype : numtype <: lanetype)] +[visit_exp numtype] +[visit_id numtype] +[visit_exp c] +[visit_id c] +[visit_exp c] +[visit_id c] not free +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $lunpacknum_{numtype : numtype, c : lane_((numtype : numtype <: lanetype))}((numtype : numtype <: lanetype), c) = c +[check_dims] c packtype +[visit_exp (packtype : packtype <: lanetype)] +[visit_exp packtype] +[visit_id packtype] +[visit_exp c] +[visit_id c] +[visit_exp $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), `U`_sx, c)] +[visit_exp $psize(packtype)] +[visit_exp packtype] +[visit_id packtype] not free +[visit_exp $size($lunpack((packtype : packtype <: lanetype)))] +[visit_exp $lunpack((packtype : packtype <: lanetype))] +[visit_exp (packtype : packtype <: lanetype)] +[visit_exp packtype] +[visit_id packtype] not free +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp c] +[visit_id c] not free +=> + ;; ../../../../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) +[check_dims] c consttype +[visit_exp (consttype : consttype <: storagetype)] +[visit_exp consttype] +[visit_id consttype] +[visit_exp c] +[visit_id c] +[visit_exp c] +[visit_id c] not free +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cunpacknum_{consttype : consttype, c : lit_((consttype : consttype <: storagetype))}((consttype : consttype <: storagetype), c) = c +[check_dims] c packtype +[visit_exp (packtype : packtype <: storagetype)] +[visit_exp packtype] +[visit_id packtype] +[visit_exp c] +[visit_id c] +[visit_exp $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), `U`_sx, c)] +[visit_exp $psize(packtype)] +[visit_exp packtype] +[visit_id packtype] not free +[visit_exp $size($lunpack((packtype : packtype <: lanetype)))] +[visit_exp $lunpack((packtype : packtype <: lanetype))] +[visit_exp (packtype : packtype <: lanetype)] +[visit_exp packtype] +[visit_id packtype] not free +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp c] +[visit_id c] not free +=> + ;; ../../../../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) +[check_dims] num_ numtype unop_ +DecD unop_(numtype : numtype, unop_ : unop_(numtype), num_ : num_(numtype)) : num_(numtype)* +[visit_id numtype] not free +[visit_id unop_] not free +[visit_exp numtype] +[visit_id numtype] not free +[visit_id num_] not free +[visit_exp numtype] +[visit_id numtype] not free +[visit_exp numtype] +[visit_id numtype] not free +[check_dims] binop_ num_ numtype +DecD binop_(numtype : numtype, binop_ : binop_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : num_(numtype)* +[visit_id numtype] not free +[visit_id binop_] not free +[visit_exp numtype] +[visit_id numtype] not free +[visit_id num_] not free +[visit_exp numtype] +[visit_id numtype] not free +[visit_id num_] not free +[visit_exp numtype] +[visit_id numtype] not free +[visit_exp numtype] +[visit_id numtype] not free +[check_dims] num_ numtype testop_ +DecD testop_(numtype : numtype, testop_ : testop_(numtype), num_ : num_(numtype)) : u32 +[visit_id numtype] not free +[visit_id testop_] not free +[visit_exp numtype] +[visit_id numtype] not free +[visit_id num_] not free +[visit_exp numtype] +[visit_id numtype] not free +[check_dims] num_ numtype relop_ +DecD relop_(numtype : numtype, relop_ : relop_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : u32 +[visit_id numtype] not free +[visit_id relop_] not free +[visit_exp numtype] +[visit_id numtype] not free +[visit_id num_] not free +[visit_exp numtype] +[visit_id numtype] not free +[visit_id num_] not free +[visit_exp numtype] +[visit_id numtype] not free +[check_dims] cvtop__ num_ numtype_1 numtype_2 +DecD cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype_1, numtype_2), num_ : num_(numtype_1)) : num_(numtype_2)* +[visit_id numtype_1] not free +[visit_id numtype_2] not free +[visit_id cvtop__] not free +[visit_exp numtype_1] +[visit_id numtype_1] not free +[visit_exp numtype_2] +[visit_id numtype_2] not free +[visit_id num_] not free +[visit_exp numtype_1] +[visit_id numtype_1] not free +[visit_exp numtype_2] +[visit_id numtype_2] not free +[check_dims] Inn i +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] +[visit_exp `CLZ`_unop_] +[visit_exp ()] +[visit_exp i] +[visit_id i] +[visit_exp [$iclz_($sizenn((Inn : Inn <: numtype)), i)]] +[visit_exp $iclz_($sizenn((Inn : Inn <: numtype)), i)] +[visit_exp $sizenn((Inn : Inn <: numtype))] +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] not free +[visit_exp i] +[visit_id i] not free +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{Inn : Inn, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `CLZ`_unop_, i) = [$iclz_($sizenn((Inn : Inn <: numtype)), i)] +[check_dims] Inn i +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] +[visit_exp `CTZ`_unop_] +[visit_exp ()] +[visit_exp i] +[visit_id i] +[visit_exp [$ictz_($sizenn((Inn : Inn <: numtype)), i)]] +[visit_exp $ictz_($sizenn((Inn : Inn <: numtype)), i)] +[visit_exp $sizenn((Inn : Inn <: numtype))] +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] not free +[visit_exp i] +[visit_id i] not free +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{Inn : Inn, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `CTZ`_unop_, i) = [$ictz_($sizenn((Inn : Inn <: numtype)), i)] +[check_dims] Inn i +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] +[visit_exp `POPCNT`_unop_] +[visit_exp ()] +[visit_exp i] +[visit_id i] +[visit_exp [$ipopcnt_($sizenn((Inn : Inn <: numtype)), i)]] +[visit_exp $ipopcnt_($sizenn((Inn : Inn <: numtype)), i)] +[visit_exp $sizenn((Inn : Inn <: numtype))] +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] not free +[visit_exp i] +[visit_id i] not free +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{Inn : Inn, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `POPCNT`_unop_, i) = [$ipopcnt_($sizenn((Inn : Inn <: numtype)), i)] +[check_dims] Inn M i i#10974 i#10981 sz#154 +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] +[visit_exp `EXTEND`_unop_{sz#154, i#10974}(`%`_sz{i#10981}(M))] +[visit_exp sz#154] +[visit_id sz#154] +[visit_exp i#10974] +[visit_id i#10974] +[visit_exp (`%`_sz{i#10981}(M))] +[visit_exp `%`_sz{i#10981}(M)] +[visit_exp i#10981] +[visit_id i#10981] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp i] +[visit_id i] +[visit_exp [$iextend_($sizenn((Inn : Inn <: numtype)), M, `S`_sx, i)]] +[visit_exp $iextend_($sizenn((Inn : Inn <: numtype)), M, `S`_sx, i)] +[visit_exp $sizenn((Inn : Inn <: numtype))] +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] not free +[visit_exp M] +[visit_id M] not free +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp i] +[visit_id i] not free +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $unop_{Inn : Inn, sz#154 : sz, i#10974 : nat, i#10981 : nat, M : M, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `EXTEND`_unop_{sz#154, i#10974}(`%`_sz{i#10981}(M)), i) = [$iextend_($sizenn((Inn : Inn <: numtype)), M, `S`_sx, i)] +[check_dims] Fnn f +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `ABS`_unop_] +[visit_exp ()] +[visit_exp f] +[visit_id f] +[visit_exp $fabs_($sizenn((Fnn : Fnn <: numtype)), f)] +[visit_exp $sizenn((Fnn : Fnn <: numtype))] +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp f] +[visit_id f] not free +=> + ;; ../../../../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) +[check_dims] Fnn f +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `NEG`_unop_] +[visit_exp ()] +[visit_exp f] +[visit_id f] +[visit_exp $fneg_($sizenn((Fnn : Fnn <: numtype)), f)] +[visit_exp $sizenn((Fnn : Fnn <: numtype))] +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp f] +[visit_id f] not free +=> + ;; ../../../../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) +[check_dims] Fnn f +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `SQRT`_unop_] +[visit_exp ()] +[visit_exp f] +[visit_id f] +[visit_exp $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)] +[visit_exp $sizenn((Fnn : Fnn <: numtype))] +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp f] +[visit_id f] not free +=> + ;; ../../../../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) +[check_dims] Fnn f +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `CEIL`_unop_] +[visit_exp ()] +[visit_exp f] +[visit_id f] +[visit_exp $fceil_($sizenn((Fnn : Fnn <: numtype)), f)] +[visit_exp $sizenn((Fnn : Fnn <: numtype))] +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp f] +[visit_id f] not free +=> + ;; ../../../../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) +[check_dims] Fnn f +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `FLOOR`_unop_] +[visit_exp ()] +[visit_exp f] +[visit_id f] +[visit_exp $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)] +[visit_exp $sizenn((Fnn : Fnn <: numtype))] +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp f] +[visit_id f] not free +=> + ;; ../../../../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) +[check_dims] Fnn f +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `TRUNC`_unop_] +[visit_exp ()] +[visit_exp f] +[visit_id f] +[visit_exp $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)] +[visit_exp $sizenn((Fnn : Fnn <: numtype))] +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp f] +[visit_id f] not free +=> + ;; ../../../../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) +[check_dims] Fnn f +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `NEAREST`_unop_] +[visit_exp ()] +[visit_exp f] +[visit_id f] +[visit_exp $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)] +[visit_exp $sizenn((Fnn : Fnn <: numtype))] +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp f] +[visit_id f] not free +=> + ;; ../../../../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) +[check_dims] Inn i_1 i_2 +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] +[visit_exp `ADD`_binop_] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp [$iadd_($sizenn((Inn : Inn <: numtype)), i_1, i_2)]] +[visit_exp $iadd_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] +[visit_exp $sizenn((Inn : Inn <: numtype))] +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] not free +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i_2] +[visit_id i_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `ADD`_binop_, i_1, i_2) = [$iadd_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] +[check_dims] Inn i_1 i_2 +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] +[visit_exp `SUB`_binop_] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp [$isub_($sizenn((Inn : Inn <: numtype)), i_1, i_2)]] +[visit_exp $isub_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] +[visit_exp $sizenn((Inn : Inn <: numtype))] +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] not free +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i_2] +[visit_id i_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `SUB`_binop_, i_1, i_2) = [$isub_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] +[check_dims] Inn i_1 i_2 +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] +[visit_exp `MUL`_binop_] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp [$imul_($sizenn((Inn : Inn <: numtype)), i_1, i_2)]] +[visit_exp $imul_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] +[visit_exp $sizenn((Inn : Inn <: numtype))] +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] not free +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i_2] +[visit_id i_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `MUL`_binop_, i_1, i_2) = [$imul_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] +[check_dims] Inn i_1 i_2 sx sx#58 +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] +[visit_exp `DIV`_binop_{sx#58}(sx)] +[visit_exp sx#58] +[visit_id sx#58] +[visit_exp (sx)] +[visit_exp sx] +[visit_id sx] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp lift($idiv_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2))] +[visit_exp $idiv_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2)] +[visit_exp $sizenn((Inn : Inn <: numtype))] +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] not free +[visit_exp sx] +[visit_id sx] not free +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i_2] +[visit_id i_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : Inn, sx#58 : sx, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `DIV`_binop_{sx#58}(sx), i_1, i_2) = lift($idiv_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2)) +[check_dims] Inn i_1 i_2 sx sx#60 +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] +[visit_exp `REM`_binop_{sx#60}(sx)] +[visit_exp sx#60] +[visit_id sx#60] +[visit_exp (sx)] +[visit_exp sx] +[visit_id sx] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp lift($irem_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2))] +[visit_exp $irem_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2)] +[visit_exp $sizenn((Inn : Inn <: numtype))] +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] not free +[visit_exp sx] +[visit_id sx] not free +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i_2] +[visit_id i_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : Inn, sx#60 : sx, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `REM`_binop_{sx#60}(sx), i_1, i_2) = lift($irem_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2)) +[check_dims] Inn i_1 i_2 +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] +[visit_exp `AND`_binop_] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp [$iand_($sizenn((Inn : Inn <: numtype)), i_1, i_2)]] +[visit_exp $iand_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] +[visit_exp $sizenn((Inn : Inn <: numtype))] +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] not free +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i_2] +[visit_id i_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `AND`_binop_, i_1, i_2) = [$iand_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] +[check_dims] Inn i_1 i_2 +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] +[visit_exp `OR`_binop_] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp [$ior_($sizenn((Inn : Inn <: numtype)), i_1, i_2)]] +[visit_exp $ior_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] +[visit_exp $sizenn((Inn : Inn <: numtype))] +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] not free +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i_2] +[visit_id i_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `OR`_binop_, i_1, i_2) = [$ior_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] +[check_dims] Inn i_1 i_2 +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] +[visit_exp `XOR`_binop_] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp [$ixor_($sizenn((Inn : Inn <: numtype)), i_1, i_2)]] +[visit_exp $ixor_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] +[visit_exp $sizenn((Inn : Inn <: numtype))] +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] not free +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i_2] +[visit_id i_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `XOR`_binop_, i_1, i_2) = [$ixor_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] +[check_dims] Inn i#11713 i#11714 i_1 i_2 +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] +[visit_exp `SHL`_binop_] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp [$ishl_($sizenn((Inn : Inn <: numtype)), i_1, `%`_u32{i#11714}(i_2!`%`_num_{i#11713}.0))]] +[visit_exp $ishl_($sizenn((Inn : Inn <: numtype)), i_1, `%`_u32{i#11714}(i_2!`%`_num_{i#11713}.0))] +[visit_exp $sizenn((Inn : Inn <: numtype))] +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] not free +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp `%`_u32{i#11714}(i_2!`%`_num_{i#11713}.0)] +[visit_exp i#11714] +[visit_id i#11714] +[visit_exp (i_2!`%`_num_{i#11713}.0)] +[visit_exp i_2!`%`_num_{i#11713}.0] +[visit_exp i_2!`%`_num_{i#11713}] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp i#11713] +[visit_id i#11713] +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype)), i#11714 : nat, i#11713 : nat}((Inn : Inn <: numtype), `SHL`_binop_, i_1, i_2) = [$ishl_($sizenn((Inn : Inn <: numtype)), i_1, `%`_u32{i#11714}(i_2!`%`_num_{i#11713}.0))] +[check_dims] Inn i#11807 i#11808 i_1 i_2 sx sx#62 +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] +[visit_exp `SHR`_binop_{sx#62}(sx)] +[visit_exp sx#62] +[visit_id sx#62] +[visit_exp (sx)] +[visit_exp sx] +[visit_id sx] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp [$ishr_($sizenn((Inn : Inn <: numtype)), sx, i_1, `%`_u32{i#11808}(i_2!`%`_num_{i#11807}.0))]] +[visit_exp $ishr_($sizenn((Inn : Inn <: numtype)), sx, i_1, `%`_u32{i#11808}(i_2!`%`_num_{i#11807}.0))] +[visit_exp $sizenn((Inn : Inn <: numtype))] +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] not free +[visit_exp sx] +[visit_id sx] not free +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp `%`_u32{i#11808}(i_2!`%`_num_{i#11807}.0)] +[visit_exp i#11808] +[visit_id i#11808] +[visit_exp (i_2!`%`_num_{i#11807}.0)] +[visit_exp i_2!`%`_num_{i#11807}.0] +[visit_exp i_2!`%`_num_{i#11807}] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp i#11807] +[visit_id i#11807] +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : Inn, sx#62 : sx, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype)), i#11808 : nat, i#11807 : nat}((Inn : Inn <: numtype), `SHR`_binop_{sx#62}(sx), i_1, i_2) = [$ishr_($sizenn((Inn : Inn <: numtype)), sx, i_1, `%`_u32{i#11808}(i_2!`%`_num_{i#11807}.0))] +[check_dims] Inn i_1 i_2 +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] +[visit_exp `ROTL`_binop_] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp [$irotl_($sizenn((Inn : Inn <: numtype)), i_1, i_2)]] +[visit_exp $irotl_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] +[visit_exp $sizenn((Inn : Inn <: numtype))] +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] not free +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i_2] +[visit_id i_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `ROTL`_binop_, i_1, i_2) = [$irotl_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] +[check_dims] Inn i_1 i_2 +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] +[visit_exp `ROTR`_binop_] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp [$irotr_($sizenn((Inn : Inn <: numtype)), i_1, i_2)]] +[visit_exp $irotr_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] +[visit_exp $sizenn((Inn : Inn <: numtype))] +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] not free +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i_2] +[visit_id i_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `ROTR`_binop_, i_1, i_2) = [$irotr_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] +[check_dims] Fnn f_1 f_2 +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `ADD`_binop_] +[visit_exp ()] +[visit_exp f_1] +[visit_id f_1] +[visit_exp f_2] +[visit_id f_2] +[visit_exp $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)] +[visit_exp $sizenn((Fnn : Fnn <: numtype))] +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp f_1] +[visit_id f_1] not free +[visit_exp f_2] +[visit_id f_2] not free +=> + ;; ../../../../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) +[check_dims] Fnn f_1 f_2 +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `SUB`_binop_] +[visit_exp ()] +[visit_exp f_1] +[visit_id f_1] +[visit_exp f_2] +[visit_id f_2] +[visit_exp $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)] +[visit_exp $sizenn((Fnn : Fnn <: numtype))] +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp f_1] +[visit_id f_1] not free +[visit_exp f_2] +[visit_id f_2] not free +=> + ;; ../../../../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) +[check_dims] Fnn f_1 f_2 +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `MUL`_binop_] +[visit_exp ()] +[visit_exp f_1] +[visit_id f_1] +[visit_exp f_2] +[visit_id f_2] +[visit_exp $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)] +[visit_exp $sizenn((Fnn : Fnn <: numtype))] +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp f_1] +[visit_id f_1] not free +[visit_exp f_2] +[visit_id f_2] not free +=> + ;; ../../../../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) +[check_dims] Fnn f_1 f_2 +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `DIV`_binop_] +[visit_exp ()] +[visit_exp f_1] +[visit_id f_1] +[visit_exp f_2] +[visit_id f_2] +[visit_exp $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)] +[visit_exp $sizenn((Fnn : Fnn <: numtype))] +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp f_1] +[visit_id f_1] not free +[visit_exp f_2] +[visit_id f_2] not free +=> + ;; ../../../../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) +[check_dims] Fnn f_1 f_2 +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `MIN`_binop_] +[visit_exp ()] +[visit_exp f_1] +[visit_id f_1] +[visit_exp f_2] +[visit_id f_2] +[visit_exp $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)] +[visit_exp $sizenn((Fnn : Fnn <: numtype))] +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp f_1] +[visit_id f_1] not free +[visit_exp f_2] +[visit_id f_2] not free +=> + ;; ../../../../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) +[check_dims] Fnn f_1 f_2 +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `MAX`_binop_] +[visit_exp ()] +[visit_exp f_1] +[visit_id f_1] +[visit_exp f_2] +[visit_id f_2] +[visit_exp $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)] +[visit_exp $sizenn((Fnn : Fnn <: numtype))] +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp f_1] +[visit_id f_1] not free +[visit_exp f_2] +[visit_id f_2] not free +=> + ;; ../../../../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) +[check_dims] Fnn f_1 f_2 +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `COPYSIGN`_binop_] +[visit_exp ()] +[visit_exp f_1] +[visit_id f_1] +[visit_exp f_2] +[visit_id f_2] +[visit_exp $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)] +[visit_exp $sizenn((Fnn : Fnn <: numtype))] +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp f_1] +[visit_id f_1] not free +[visit_exp f_2] +[visit_id f_2] not free +=> + ;; ../../../../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) +[check_dims] Inn i +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] +[visit_exp `EQZ`_testop_] +[visit_exp ()] +[visit_exp i] +[visit_id i] +[visit_exp $ieqz_($sizenn((Inn : Inn <: numtype)), i)] +[visit_exp $sizenn((Inn : Inn <: numtype))] +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] not free +[visit_exp i] +[visit_id i] not free +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $testop_{Inn : Inn, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `EQZ`_testop_, i) = $ieqz_($sizenn((Inn : Inn <: numtype)), i) +[check_dims] Inn i_1 i_2 +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] +[visit_exp `EQ`_relop_] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp $ieq_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] +[visit_exp $sizenn((Inn : Inn <: numtype))] +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] not free +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i_2] +[visit_id i_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `EQ`_relop_, i_1, i_2) = $ieq_($sizenn((Inn : Inn <: numtype)), i_1, i_2) +[check_dims] Inn i_1 i_2 +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] +[visit_exp `NE`_relop_] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp $ine_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] +[visit_exp $sizenn((Inn : Inn <: numtype))] +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] not free +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i_2] +[visit_id i_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `NE`_relop_, i_1, i_2) = $ine_($sizenn((Inn : Inn <: numtype)), i_1, i_2) +[check_dims] Inn i_1 i_2 sx sx#64 +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] +[visit_exp `LT`_relop_{sx#64}(sx)] +[visit_exp sx#64] +[visit_id sx#64] +[visit_exp (sx)] +[visit_exp sx] +[visit_id sx] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp $ilt_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2)] +[visit_exp $sizenn((Inn : Inn <: numtype))] +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] not free +[visit_exp sx] +[visit_id sx] not free +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i_2] +[visit_id i_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{Inn : Inn, sx#64 : sx, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `LT`_relop_{sx#64}(sx), i_1, i_2) = $ilt_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) +[check_dims] Inn i_1 i_2 sx sx#66 +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] +[visit_exp `GT`_relop_{sx#66}(sx)] +[visit_exp sx#66] +[visit_id sx#66] +[visit_exp (sx)] +[visit_exp sx] +[visit_id sx] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp $igt_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2)] +[visit_exp $sizenn((Inn : Inn <: numtype))] +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] not free +[visit_exp sx] +[visit_id sx] not free +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i_2] +[visit_id i_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{Inn : Inn, sx#66 : sx, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `GT`_relop_{sx#66}(sx), i_1, i_2) = $igt_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) +[check_dims] Inn i_1 i_2 sx sx#68 +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] +[visit_exp `LE`_relop_{sx#68}(sx)] +[visit_exp sx#68] +[visit_id sx#68] +[visit_exp (sx)] +[visit_exp sx] +[visit_id sx] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp $ile_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2)] +[visit_exp $sizenn((Inn : Inn <: numtype))] +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] not free +[visit_exp sx] +[visit_id sx] not free +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i_2] +[visit_id i_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{Inn : Inn, sx#68 : sx, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `LE`_relop_{sx#68}(sx), i_1, i_2) = $ile_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) +[check_dims] Inn i_1 i_2 sx sx#70 +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] +[visit_exp `GE`_relop_{sx#70}(sx)] +[visit_exp sx#70] +[visit_id sx#70] +[visit_exp (sx)] +[visit_exp sx] +[visit_id sx] +[visit_exp i_1] +[visit_id i_1] +[visit_exp i_2] +[visit_id i_2] +[visit_exp $ige_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2)] +[visit_exp $sizenn((Inn : Inn <: numtype))] +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] not free +[visit_exp sx] +[visit_id sx] not free +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i_2] +[visit_id i_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $relop_{Inn : Inn, sx#70 : sx, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `GE`_relop_{sx#70}(sx), i_1, i_2) = $ige_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) +[check_dims] Fnn f_1 f_2 +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `EQ`_relop_] +[visit_exp ()] +[visit_exp f_1] +[visit_id f_1] +[visit_exp f_2] +[visit_id f_2] +[visit_exp $feq_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)] +[visit_exp $sizenn((Fnn : Fnn <: numtype))] +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp f_1] +[visit_id f_1] not free +[visit_exp f_2] +[visit_id f_2] not free +=> + ;; ../../../../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) +[check_dims] Fnn f_1 f_2 +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `NE`_relop_] +[visit_exp ()] +[visit_exp f_1] +[visit_id f_1] +[visit_exp f_2] +[visit_id f_2] +[visit_exp $fne_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)] +[visit_exp $sizenn((Fnn : Fnn <: numtype))] +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp f_1] +[visit_id f_1] not free +[visit_exp f_2] +[visit_id f_2] not free +=> + ;; ../../../../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) +[check_dims] Fnn f_1 f_2 +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `LT`_relop_] +[visit_exp ()] +[visit_exp f_1] +[visit_id f_1] +[visit_exp f_2] +[visit_id f_2] +[visit_exp $flt_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)] +[visit_exp $sizenn((Fnn : Fnn <: numtype))] +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp f_1] +[visit_id f_1] not free +[visit_exp f_2] +[visit_id f_2] not free +=> + ;; ../../../../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) +[check_dims] Fnn f_1 f_2 +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `GT`_relop_] +[visit_exp ()] +[visit_exp f_1] +[visit_id f_1] +[visit_exp f_2] +[visit_id f_2] +[visit_exp $fgt_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)] +[visit_exp $sizenn((Fnn : Fnn <: numtype))] +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp f_1] +[visit_id f_1] not free +[visit_exp f_2] +[visit_id f_2] not free +=> + ;; ../../../../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) +[check_dims] Fnn f_1 f_2 +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `LE`_relop_] +[visit_exp ()] +[visit_exp f_1] +[visit_id f_1] +[visit_exp f_2] +[visit_id f_2] +[visit_exp $fle_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)] +[visit_exp $sizenn((Fnn : Fnn <: numtype))] +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp f_1] +[visit_id f_1] not free +[visit_exp f_2] +[visit_id f_2] not free +=> + ;; ../../../../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) +[check_dims] Fnn f_1 f_2 +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `GE`_relop_] +[visit_exp ()] +[visit_exp f_1] +[visit_id f_1] +[visit_exp f_2] +[visit_id f_2] +[visit_exp $fge_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)] +[visit_exp $sizenn((Fnn : Fnn <: numtype))] +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp f_1] +[visit_id f_1] not free +[visit_exp f_2] +[visit_id f_2] not free +=> + ;; ../../../../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) +[check_dims] Inn_1 Inn_2 i_1 sx sx#72 +[visit_exp (Inn_1 : Inn <: numtype)] +[visit_exp Inn_1] +[visit_id Inn_1] +[visit_exp (Inn_2 : Inn <: numtype)] +[visit_exp Inn_2] +[visit_id Inn_2] +[visit_exp `EXTEND`_cvtop__{sx#72}(sx)] +[visit_exp sx#72] +[visit_id sx#72] +[visit_exp (sx)] +[visit_exp sx] +[visit_id sx] +[visit_exp i_1] +[visit_id i_1] +[visit_exp [$extend__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, i_1)]] +[visit_exp $extend__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, i_1)] +[visit_exp $sizenn1((Inn_1 : Inn <: numtype))] +[visit_exp (Inn_1 : Inn <: numtype)] +[visit_exp Inn_1] +[visit_id Inn_1] not free +[visit_exp $sizenn2((Inn_2 : Inn <: numtype))] +[visit_exp (Inn_2 : Inn <: numtype)] +[visit_exp Inn_2] +[visit_id Inn_2] not free +[visit_exp sx] +[visit_id sx] not free +[visit_exp i_1] +[visit_id i_1] not free +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{Inn_1 : Inn, Inn_2 : Inn, sx#72 : sx, sx : sx, i_1 : num_((Inn_1 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Inn_2 : Inn <: numtype), `EXTEND`_cvtop__{sx#72}(sx), i_1) = [$extend__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, i_1)] +[check_dims] Inn_1 Inn_2 i_1 +[visit_exp (Inn_1 : Inn <: numtype)] +[visit_exp Inn_1] +[visit_id Inn_1] +[visit_exp (Inn_2 : Inn <: numtype)] +[visit_exp Inn_2] +[visit_id Inn_2] +[visit_exp `WRAP`_cvtop__] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp [$wrap__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), i_1)]] +[visit_exp $wrap__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), i_1)] +[visit_exp $sizenn1((Inn_1 : Inn <: numtype))] +[visit_exp (Inn_1 : Inn <: numtype)] +[visit_exp Inn_1] +[visit_id Inn_1] not free +[visit_exp $sizenn2((Inn_2 : Inn <: numtype))] +[visit_exp (Inn_2 : Inn <: numtype)] +[visit_exp Inn_2] +[visit_id Inn_2] not free +[visit_exp i_1] +[visit_id i_1] not free +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{Inn_1 : Inn, Inn_2 : Inn, i_1 : num_((Inn_1 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Inn_2 : Inn <: numtype), `WRAP`_cvtop__, i_1) = [$wrap__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), i_1)] +[check_dims] Fnn_1 Inn_2 f_1 sx sx#74 +[visit_exp (Fnn_1 : Fnn <: numtype)] +[visit_exp Fnn_1] +[visit_id Fnn_1] +[visit_exp (Inn_2 : Inn <: numtype)] +[visit_exp Inn_2] +[visit_id Inn_2] +[visit_exp `TRUNC`_cvtop__{sx#74}(sx)] +[visit_exp sx#74] +[visit_id sx#74] +[visit_exp (sx)] +[visit_exp sx] +[visit_id sx] +[visit_exp f_1] +[visit_id f_1] +[visit_exp lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, f_1))] +[visit_exp $trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, f_1)] +[visit_exp $sizenn1((Fnn_1 : Fnn <: numtype))] +[visit_exp (Fnn_1 : Fnn <: numtype)] +[visit_exp Fnn_1] +[visit_id Fnn_1] not free +[visit_exp $sizenn2((Inn_2 : Inn <: numtype))] +[visit_exp (Inn_2 : Inn <: numtype)] +[visit_exp Inn_2] +[visit_id Inn_2] not free +[visit_exp sx] +[visit_id sx] not free +[visit_exp f_1] +[visit_id f_1] not free +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{Fnn_1 : Fnn, Inn_2 : Inn, sx#74 : sx, sx : sx, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), `TRUNC`_cvtop__{sx#74}(sx), f_1) = lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, f_1)) +[check_dims] Fnn_1 Inn_2 f_1 sx sx#76 +[visit_exp (Fnn_1 : Fnn <: numtype)] +[visit_exp Fnn_1] +[visit_id Fnn_1] +[visit_exp (Inn_2 : Inn <: numtype)] +[visit_exp Inn_2] +[visit_id Inn_2] +[visit_exp `TRUNC_SAT`_cvtop__{sx#76}(sx)] +[visit_exp sx#76] +[visit_id sx#76] +[visit_exp (sx)] +[visit_exp sx] +[visit_id sx] +[visit_exp f_1] +[visit_id f_1] +[visit_exp lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, f_1))] +[visit_exp $trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, f_1)] +[visit_exp $sizenn1((Fnn_1 : Fnn <: numtype))] +[visit_exp (Fnn_1 : Fnn <: numtype)] +[visit_exp Fnn_1] +[visit_id Fnn_1] not free +[visit_exp $sizenn2((Inn_2 : Inn <: numtype))] +[visit_exp (Inn_2 : Inn <: numtype)] +[visit_exp Inn_2] +[visit_id Inn_2] not free +[visit_exp sx] +[visit_id sx] not free +[visit_exp f_1] +[visit_id f_1] not free +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{Fnn_1 : Fnn, Inn_2 : Inn, sx#76 : sx, sx : sx, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), `TRUNC_SAT`_cvtop__{sx#76}(sx), f_1) = lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, f_1)) +[check_dims] Fnn_2 Inn_1 i_1 sx sx#78 +[visit_exp (Inn_1 : Inn <: numtype)] +[visit_exp Inn_1] +[visit_id Inn_1] +[visit_exp (Fnn_2 : Fnn <: numtype)] +[visit_exp Fnn_2] +[visit_id Fnn_2] +[visit_exp `CONVERT`_cvtop__{sx#78}(sx)] +[visit_exp sx#78] +[visit_id sx#78] +[visit_exp (sx)] +[visit_exp sx] +[visit_id sx] +[visit_exp i_1] +[visit_id i_1] +[visit_exp [$convert__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1)]] +[visit_exp $convert__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1)] +[visit_exp $sizenn1((Inn_1 : Inn <: numtype))] +[visit_exp (Inn_1 : Inn <: numtype)] +[visit_exp Inn_1] +[visit_id Inn_1] not free +[visit_exp $sizenn2((Fnn_2 : Fnn <: numtype))] +[visit_exp (Fnn_2 : Fnn <: numtype)] +[visit_exp Fnn_2] +[visit_id Fnn_2] not free +[visit_exp sx] +[visit_id sx] not free +[visit_exp i_1] +[visit_id i_1] not free +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{Inn_1 : Inn, Fnn_2 : Fnn, sx#78 : sx, sx : sx, i_1 : num_((Inn_1 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype), `CONVERT`_cvtop__{sx#78}(sx), i_1) = [$convert__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1)] +[check_dims] Fnn_1 Fnn_2 f_1 +[visit_exp (Fnn_1 : Fnn <: numtype)] +[visit_exp Fnn_1] +[visit_id Fnn_1] +[visit_exp (Fnn_2 : Fnn <: numtype)] +[visit_exp Fnn_2] +[visit_id Fnn_2] +[visit_exp `PROMOTE`_cvtop__] +[visit_exp ()] +[visit_exp f_1] +[visit_id f_1] +[visit_exp $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)] +[visit_exp $sizenn1((Fnn_1 : Fnn <: numtype))] +[visit_exp (Fnn_1 : Fnn <: numtype)] +[visit_exp Fnn_1] +[visit_id Fnn_1] not free +[visit_exp $sizenn2((Fnn_2 : Fnn <: numtype))] +[visit_exp (Fnn_2 : Fnn <: numtype)] +[visit_exp Fnn_2] +[visit_id Fnn_2] not free +[visit_exp f_1] +[visit_id f_1] not free +=> + ;; ../../../../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) +[check_dims] Fnn_1 Fnn_2 f_1 +[visit_exp (Fnn_1 : Fnn <: numtype)] +[visit_exp Fnn_1] +[visit_id Fnn_1] +[visit_exp (Fnn_2 : Fnn <: numtype)] +[visit_exp Fnn_2] +[visit_id Fnn_2] +[visit_exp `DEMOTE`_cvtop__] +[visit_exp ()] +[visit_exp f_1] +[visit_id f_1] +[visit_exp $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)] +[visit_exp $sizenn1((Fnn_1 : Fnn <: numtype))] +[visit_exp (Fnn_1 : Fnn <: numtype)] +[visit_exp Fnn_1] +[visit_id Fnn_1] not free +[visit_exp $sizenn2((Fnn_2 : Fnn <: numtype))] +[visit_exp (Fnn_2 : Fnn <: numtype)] +[visit_exp Fnn_2] +[visit_id Fnn_2] not free +[visit_exp f_1] +[visit_id f_1] not free +=> + ;; ../../../../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) +[check_dims] Fnn_2 Inn_1 i_1 +[visit_exp (Inn_1 : Inn <: numtype)] +[visit_exp Inn_1] +[visit_id Inn_1] +[visit_exp (Fnn_2 : Fnn <: numtype)] +[visit_exp Fnn_2] +[visit_id Fnn_2] +[visit_exp `REINTERPRET`_cvtop__] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp [$reinterpret__((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype), i_1)]] +[visit_exp $reinterpret__((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype), i_1)] +[visit_exp (Inn_1 : Inn <: numtype)] +[visit_exp Inn_1] +[visit_id Inn_1] not free +[visit_exp (Fnn_2 : Fnn <: numtype)] +[visit_exp Fnn_2] +[visit_id Fnn_2] not free +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp ($size((Inn_1 : Inn <: numtype)) = $size((Fnn_2 : Fnn <: numtype)))] +[visit_exp $size((Inn_1 : Inn <: numtype))] +[visit_exp (Inn_1 : Inn <: numtype)] +[visit_exp Inn_1] +[visit_id Inn_1] not free +[visit_exp $size((Fnn_2 : Fnn <: numtype))] +[visit_exp (Fnn_2 : Fnn <: numtype)] +[visit_exp Fnn_2] +[visit_id Fnn_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $cvtop__{Inn_1 : Inn, Fnn_2 : Fnn, i_1 : num_((Inn_1 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype), `REINTERPRET`_cvtop__, i_1) = [$reinterpret__((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype), i_1)] + -- if ($size((Inn_1 : Inn <: numtype)) = $size((Fnn_2 : Fnn <: numtype))) +[check_dims] Fnn_1 Inn_2 f_1 +[visit_exp (Fnn_1 : Fnn <: numtype)] +[visit_exp Fnn_1] +[visit_id Fnn_1] +[visit_exp (Inn_2 : Inn <: numtype)] +[visit_exp Inn_2] +[visit_id Inn_2] +[visit_exp `REINTERPRET`_cvtop__] +[visit_exp ()] +[visit_exp f_1] +[visit_id f_1] +[visit_exp [$reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), f_1)]] +[visit_exp $reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), f_1)] +[visit_exp (Fnn_1 : Fnn <: numtype)] +[visit_exp Fnn_1] +[visit_id Fnn_1] not free +[visit_exp (Inn_2 : Inn <: numtype)] +[visit_exp Inn_2] +[visit_id Inn_2] not free +[visit_exp f_1] +[visit_id f_1] not free +[visit_exp ($size((Fnn_1 : Fnn <: numtype)) = $size((Inn_2 : Inn <: numtype)))] +[visit_exp $size((Fnn_1 : Fnn <: numtype))] +[visit_exp (Fnn_1 : Fnn <: numtype)] +[visit_exp Fnn_1] +[visit_id Fnn_1] not free +[visit_exp $size((Inn_2 : Inn <: numtype))] +[visit_exp (Inn_2 : Inn <: numtype)] +[visit_exp Inn_2] +[visit_id Inn_2] not free +=> + ;; ../../../../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 : Inn <: numtype), `REINTERPRET`_cvtop__, f_1) = [$reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), f_1)] + -- if ($size((Fnn_1 : Fnn <: numtype)) = $size((Inn_2 : Inn <: numtype))) +[check_dims] shape vec_ +DecD lanes_(shape : shape, vec_ : vec_(`V128`_Vnn)) : lane_($lanetype(shape))* +[visit_id shape] not free +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_exp $lanetype(shape)] +[visit_exp shape] +[visit_id shape] not free +[check_dims] _ shape +DecD inv_lanes_(shape : shape, lane_($lanetype(shape))*) : vec_(`V128`_Vnn) +[visit_id shape] not free +[visit_id _] not free +[visit_exp $lanetype(shape)] +[visit_exp shape] +[visit_id shape] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[check_dims] shape_1 shape_2 vcvtop__ +DecD zeroop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2)) : zero? +[visit_id shape_1] not free +[visit_id shape_2] not free +[visit_id vcvtop__] not free +[visit_exp shape_1] +[visit_id shape_1] not free +[visit_exp shape_2] +[visit_id shape_2] not free +[check_dims] Jnn_1 Jnn_2 M_1 M_2 dim#801 dim#813 half half#1 i#12568 i#12575 i#12580 i#12587 lanetype#801 lanetype#813 sx sx#80 +[visit_exp `%X%`_shape{lanetype#801, dim#801, i#12568}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#12575}(M_1))] +[visit_exp lanetype#801] +[visit_id lanetype#801] +[visit_exp dim#801] +[visit_id dim#801] +[visit_exp i#12568] +[visit_id i#12568] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#12575}(M_1))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] +[visit_exp `%`_dim{i#12575}(M_1)] +[visit_exp i#12575] +[visit_id i#12575] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] +[visit_exp `%X%`_shape{lanetype#813, dim#813, i#12580}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#12587}(M_2))] +[visit_exp lanetype#813] +[visit_id lanetype#813] +[visit_exp dim#813] +[visit_id dim#813] +[visit_exp i#12580] +[visit_id i#12580] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#12587}(M_2))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] +[visit_exp `%`_dim{i#12587}(M_2)] +[visit_exp i#12587] +[visit_id i#12587] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] +[visit_exp `EXTEND`_vcvtop__{half#1, sx#80}(half, sx)] +[visit_exp half#1] +[visit_id half#1] +[visit_exp sx#80] +[visit_id sx#80] +[visit_exp (half, sx)] +[visit_exp half] +[visit_id half] +[visit_exp sx] +[visit_id sx] +[visit_exp ?()] +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{lanetype#801 : lanetype, dim#801 : dim, i#12568 : nat, Jnn_1 : Jnn, i#12575 : nat, M_1 : M, lanetype#813 : lanetype, dim#813 : dim, i#12580 : nat, Jnn_2 : Jnn, i#12587 : nat, M_2 : M, half#1 : half, sx#80 : sx, half : half, sx : sx}(`%X%`_shape{lanetype#801, dim#801, i#12568}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#12575}(M_1)), `%X%`_shape{lanetype#813, dim#813, i#12580}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#12587}(M_2)), `EXTEND`_vcvtop__{half#1, sx#80}(half, sx)) = ?() +[check_dims] Fnn_2 Jnn_1 M_1 M_2 dim#825 dim#837 half half?#1 i#12592 i#12599 i#12604 i#12611 lanetype#825 lanetype#837 sx sx#82 +[visit_exp `%X%`_shape{lanetype#825, dim#825, i#12592}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#12599}(M_1))] +[visit_exp lanetype#825] +[visit_id lanetype#825] +[visit_exp dim#825] +[visit_id dim#825] +[visit_exp i#12592] +[visit_id i#12592] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#12599}(M_1))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] +[visit_exp `%`_dim{i#12599}(M_1)] +[visit_exp i#12599] +[visit_id i#12599] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] +[visit_exp `%X%`_shape{lanetype#837, dim#837, i#12604}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#12611}(M_2))] +[visit_exp lanetype#837] +[visit_id lanetype#837] +[visit_exp dim#837] +[visit_id dim#837] +[visit_exp i#12604] +[visit_id i#12604] +[visit_exp ((Fnn_2 : Fnn <: lanetype), `%`_dim{i#12611}(M_2))] +[visit_exp (Fnn_2 : Fnn <: lanetype)] +[visit_exp Fnn_2] +[visit_id Fnn_2] +[visit_exp `%`_dim{i#12611}(M_2)] +[visit_exp i#12611] +[visit_id i#12611] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] +[visit_exp `CONVERT`_vcvtop__{`half?#1`, sx#82}(half?{half <- `half?`}, sx)] +[visit_exp `half?#1`] +[visit_id half?#1] +[visit_exp sx#82] +[visit_id sx#82] +[visit_exp (half?{half <- `half?`}, sx)] +[visit_exp half?{half <- `half?`}] +[scope_enter half] +[visit_exp half] +[visit_id half] not free +[visit_id half] not free +[scope_exit half] +[visit_exp `half?`] +[visit_id half?] no dims +[visit_id half?] +[visit_exp sx] +[visit_id sx] +[visit_exp ?()] +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{lanetype#825 : lanetype, dim#825 : dim, i#12592 : nat, Jnn_1 : Jnn, i#12599 : nat, M_1 : M, lanetype#837 : lanetype, dim#837 : dim, i#12604 : nat, Fnn_2 : Fnn, i#12611 : nat, M_2 : M, `half?#1` : half?, sx#82 : sx, `half?` : half?, sx : sx}(`%X%`_shape{lanetype#825, dim#825, i#12592}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#12599}(M_1)), `%X%`_shape{lanetype#837, dim#837, i#12604}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#12611}(M_2)), `CONVERT`_vcvtop__{`half?#1`, sx#82}(half?{half <- `half?`}, sx)) = ?() +[check_dims] Fnn_1 Jnn_2 M_1 M_2 dim#864 dim#876 i#12631 i#12638 i#12643 i#12650 lanetype#864 lanetype#876 sx sx#84 zero zero?#1 +[visit_exp `%X%`_shape{lanetype#864, dim#864, i#12631}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#12638}(M_1))] +[visit_exp lanetype#864] +[visit_id lanetype#864] +[visit_exp dim#864] +[visit_id dim#864] +[visit_exp i#12631] +[visit_id i#12631] +[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim{i#12638}(M_1))] +[visit_exp (Fnn_1 : Fnn <: lanetype)] +[visit_exp Fnn_1] +[visit_id Fnn_1] +[visit_exp `%`_dim{i#12638}(M_1)] +[visit_exp i#12638] +[visit_id i#12638] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] +[visit_exp `%X%`_shape{lanetype#876, dim#876, i#12643}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#12650}(M_2))] +[visit_exp lanetype#876] +[visit_id lanetype#876] +[visit_exp dim#876] +[visit_id dim#876] +[visit_exp i#12643] +[visit_id i#12643] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#12650}(M_2))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] +[visit_exp `%`_dim{i#12650}(M_2)] +[visit_exp i#12650] +[visit_id i#12650] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] +[visit_exp `TRUNC_SAT`_vcvtop__{sx#84, `zero?#1`}(sx, zero?{zero <- `zero?`})] +[visit_exp sx#84] +[visit_id sx#84] +[visit_exp `zero?#1`] +[visit_id zero?#1] +[visit_exp (sx, zero?{zero <- `zero?`})] +[visit_exp sx] +[visit_id sx] +[visit_exp zero?{zero <- `zero?`}] +[scope_enter zero] +[visit_exp zero] +[visit_id zero] not free +[visit_id zero] not free +[scope_exit zero] +[visit_exp `zero?`] +[visit_id zero?] no dims +[visit_id zero?] +[visit_exp zero?{zero <- `zero?`}] +[scope_enter zero] +[visit_exp zero] +[visit_id zero] not free +[visit_id zero] not free +[scope_exit zero] +[visit_exp `zero?`] +[visit_id zero?] not free +[visit_id zero?] no dims +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{lanetype#864 : lanetype, dim#864 : dim, i#12631 : nat, Fnn_1 : Fnn, i#12638 : nat, M_1 : M, lanetype#876 : lanetype, dim#876 : dim, i#12643 : nat, Jnn_2 : Jnn, i#12650 : nat, M_2 : M, sx#84 : sx, `zero?#1` : zero?, sx : sx, `zero?` : zero?}(`%X%`_shape{lanetype#864, dim#864, i#12631}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#12638}(M_1)), `%X%`_shape{lanetype#876, dim#876, i#12643}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#12650}(M_2)), `TRUNC_SAT`_vcvtop__{sx#84, `zero?#1`}(sx, zero?{zero <- `zero?`})) = zero?{zero <- `zero?`} +[check_dims] Fnn_1 Jnn_2 M_1 M_2 dim#918 dim#930 i#12685 i#12692 i#12697 i#12704 lanetype#918 lanetype#930 sx sx#86 zero zero?#3 +[visit_exp `%X%`_shape{lanetype#918, dim#918, i#12685}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#12692}(M_1))] +[visit_exp lanetype#918] +[visit_id lanetype#918] +[visit_exp dim#918] +[visit_id dim#918] +[visit_exp i#12685] +[visit_id i#12685] +[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim{i#12692}(M_1))] +[visit_exp (Fnn_1 : Fnn <: lanetype)] +[visit_exp Fnn_1] +[visit_id Fnn_1] +[visit_exp `%`_dim{i#12692}(M_1)] +[visit_exp i#12692] +[visit_id i#12692] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] +[visit_exp `%X%`_shape{lanetype#930, dim#930, i#12697}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#12704}(M_2))] +[visit_exp lanetype#930] +[visit_id lanetype#930] +[visit_exp dim#930] +[visit_id dim#930] +[visit_exp i#12697] +[visit_id i#12697] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#12704}(M_2))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] +[visit_exp `%`_dim{i#12704}(M_2)] +[visit_exp i#12704] +[visit_id i#12704] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] +[visit_exp `RELAXED_TRUNC`_vcvtop__{sx#86, `zero?#3`}(sx, zero?{zero <- `zero?`})] +[visit_exp sx#86] +[visit_id sx#86] +[visit_exp `zero?#3`] +[visit_id zero?#3] +[visit_exp (sx, zero?{zero <- `zero?`})] +[visit_exp sx] +[visit_id sx] +[visit_exp zero?{zero <- `zero?`}] +[scope_enter zero] +[visit_exp zero] +[visit_id zero] not free +[visit_id zero] not free +[scope_exit zero] +[visit_exp `zero?`] +[visit_id zero?] no dims +[visit_id zero?] +[visit_exp zero?{zero <- `zero?`}] +[scope_enter zero] +[visit_exp zero] +[visit_id zero] not free +[visit_id zero] not free +[scope_exit zero] +[visit_exp `zero?`] +[visit_id zero?] not free +[visit_id zero?] no dims +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{lanetype#918 : lanetype, dim#918 : dim, i#12685 : nat, Fnn_1 : Fnn, i#12692 : nat, M_1 : M, lanetype#930 : lanetype, dim#930 : dim, i#12697 : nat, Jnn_2 : Jnn, i#12704 : nat, M_2 : M, sx#86 : sx, `zero?#3` : zero?, sx : sx, `zero?` : zero?}(`%X%`_shape{lanetype#918, dim#918, i#12685}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#12692}(M_1)), `%X%`_shape{lanetype#930, dim#930, i#12697}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#12704}(M_2)), `RELAXED_TRUNC`_vcvtop__{sx#86, `zero?#3`}(sx, zero?{zero <- `zero?`})) = zero?{zero <- `zero?`} +[check_dims] Fnn_1 Fnn_2 M_1 M_2 dim#972 dim#984 i#12739 i#12746 i#12751 i#12758 lanetype#972 lanetype#984 zero zero#1 +[visit_exp `%X%`_shape{lanetype#972, dim#972, i#12739}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#12746}(M_1))] +[visit_exp lanetype#972] +[visit_id lanetype#972] +[visit_exp dim#972] +[visit_id dim#972] +[visit_exp i#12739] +[visit_id i#12739] +[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim{i#12746}(M_1))] +[visit_exp (Fnn_1 : Fnn <: lanetype)] +[visit_exp Fnn_1] +[visit_id Fnn_1] +[visit_exp `%`_dim{i#12746}(M_1)] +[visit_exp i#12746] +[visit_id i#12746] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] +[visit_exp `%X%`_shape{lanetype#984, dim#984, i#12751}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#12758}(M_2))] +[visit_exp lanetype#984] +[visit_id lanetype#984] +[visit_exp dim#984] +[visit_id dim#984] +[visit_exp i#12751] +[visit_id i#12751] +[visit_exp ((Fnn_2 : Fnn <: lanetype), `%`_dim{i#12758}(M_2))] +[visit_exp (Fnn_2 : Fnn <: lanetype)] +[visit_exp Fnn_2] +[visit_id Fnn_2] +[visit_exp `%`_dim{i#12758}(M_2)] +[visit_exp i#12758] +[visit_id i#12758] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] +[visit_exp `DEMOTE`_vcvtop__{zero#1}(zero)] +[visit_exp zero#1] +[visit_id zero#1] +[visit_exp (zero)] +[visit_exp zero] +[visit_id zero] +[visit_exp ?(zero)] +[visit_exp zero] +[visit_id zero] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{lanetype#972 : lanetype, dim#972 : dim, i#12739 : nat, Fnn_1 : Fnn, i#12746 : nat, M_1 : M, lanetype#984 : lanetype, dim#984 : dim, i#12751 : nat, Fnn_2 : Fnn, i#12758 : nat, M_2 : M, zero#1 : zero, zero : zero}(`%X%`_shape{lanetype#972, dim#972, i#12739}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#12746}(M_1)), `%X%`_shape{lanetype#984, dim#984, i#12751}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#12758}(M_2)), `DEMOTE`_vcvtop__{zero#1}(zero)) = ?(zero) +[check_dims] Fnn_1 Fnn_2 M_1 M_2 dim#1041 dim#1053 i#12808 i#12815 i#12820 i#12827 lanetype#1041 lanetype#1053 +[visit_exp `%X%`_shape{lanetype#1041, dim#1041, i#12808}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#12815}(M_1))] +[visit_exp lanetype#1041] +[visit_id lanetype#1041] +[visit_exp dim#1041] +[visit_id dim#1041] +[visit_exp i#12808] +[visit_id i#12808] +[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim{i#12815}(M_1))] +[visit_exp (Fnn_1 : Fnn <: lanetype)] +[visit_exp Fnn_1] +[visit_id Fnn_1] +[visit_exp `%`_dim{i#12815}(M_1)] +[visit_exp i#12815] +[visit_id i#12815] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] +[visit_exp `%X%`_shape{lanetype#1053, dim#1053, i#12820}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#12827}(M_2))] +[visit_exp lanetype#1053] +[visit_id lanetype#1053] +[visit_exp dim#1053] +[visit_id dim#1053] +[visit_exp i#12820] +[visit_id i#12820] +[visit_exp ((Fnn_2 : Fnn <: lanetype), `%`_dim{i#12827}(M_2))] +[visit_exp (Fnn_2 : Fnn <: lanetype)] +[visit_exp Fnn_2] +[visit_id Fnn_2] +[visit_exp `%`_dim{i#12827}(M_2)] +[visit_exp i#12827] +[visit_id i#12827] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] +[visit_exp `PROMOTELOW`_vcvtop__] +[visit_exp ()] +[visit_exp ?()] +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $zeroop{lanetype#1041 : lanetype, dim#1041 : dim, i#12808 : nat, Fnn_1 : Fnn, i#12815 : nat, M_1 : M, lanetype#1053 : lanetype, dim#1053 : dim, i#12820 : nat, Fnn_2 : Fnn, i#12827 : nat, M_2 : M}(`%X%`_shape{lanetype#1041, dim#1041, i#12808}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#12815}(M_1)), `%X%`_shape{lanetype#1053, dim#1053, i#12820}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#12827}(M_2)), `PROMOTELOW`_vcvtop__) = ?() +[check_dims] shape_1 shape_2 vcvtop__ +DecD halfop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2)) : half? +[visit_id shape_1] not free +[visit_id shape_2] not free +[visit_id vcvtop__] not free +[visit_exp shape_1] +[visit_id shape_1] not free +[visit_exp shape_2] +[visit_id shape_2] not free +[check_dims] Jnn_1 Jnn_2 M_1 M_2 dim#1122 dim#1134 half half#3 i#12881 i#12888 i#12893 i#12900 lanetype#1122 lanetype#1134 sx sx#88 +[visit_exp `%X%`_shape{lanetype#1122, dim#1122, i#12881}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#12888}(M_1))] +[visit_exp lanetype#1122] +[visit_id lanetype#1122] +[visit_exp dim#1122] +[visit_id dim#1122] +[visit_exp i#12881] +[visit_id i#12881] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#12888}(M_1))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] +[visit_exp `%`_dim{i#12888}(M_1)] +[visit_exp i#12888] +[visit_id i#12888] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] +[visit_exp `%X%`_shape{lanetype#1134, dim#1134, i#12893}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#12900}(M_2))] +[visit_exp lanetype#1134] +[visit_id lanetype#1134] +[visit_exp dim#1134] +[visit_id dim#1134] +[visit_exp i#12893] +[visit_id i#12893] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#12900}(M_2))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] +[visit_exp `%`_dim{i#12900}(M_2)] +[visit_exp i#12900] +[visit_id i#12900] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] +[visit_exp `EXTEND`_vcvtop__{half#3, sx#88}(half, sx)] +[visit_exp half#3] +[visit_id half#3] +[visit_exp sx#88] +[visit_id sx#88] +[visit_exp (half, sx)] +[visit_exp half] +[visit_id half] +[visit_exp sx] +[visit_id sx] +[visit_exp ?(half)] +[visit_exp half] +[visit_id half] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{lanetype#1122 : lanetype, dim#1122 : dim, i#12881 : nat, Jnn_1 : Jnn, i#12888 : nat, M_1 : M, lanetype#1134 : lanetype, dim#1134 : dim, i#12893 : nat, Jnn_2 : Jnn, i#12900 : nat, M_2 : M, half#3 : half, sx#88 : sx, half : half, sx : sx}(`%X%`_shape{lanetype#1122, dim#1122, i#12881}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#12888}(M_1)), `%X%`_shape{lanetype#1134, dim#1134, i#12893}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#12900}(M_2)), `EXTEND`_vcvtop__{half#3, sx#88}(half, sx)) = ?(half) +[check_dims] Fnn_2 Jnn_1 M_1 M_2 dim#1146 dim#1158 half half?#3 i#12905 i#12912 i#12917 i#12924 lanetype#1146 lanetype#1158 sx sx#90 +[visit_exp `%X%`_shape{lanetype#1146, dim#1146, i#12905}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#12912}(M_1))] +[visit_exp lanetype#1146] +[visit_id lanetype#1146] +[visit_exp dim#1146] +[visit_id dim#1146] +[visit_exp i#12905] +[visit_id i#12905] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#12912}(M_1))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] +[visit_exp `%`_dim{i#12912}(M_1)] +[visit_exp i#12912] +[visit_id i#12912] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] +[visit_exp `%X%`_shape{lanetype#1158, dim#1158, i#12917}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#12924}(M_2))] +[visit_exp lanetype#1158] +[visit_id lanetype#1158] +[visit_exp dim#1158] +[visit_id dim#1158] +[visit_exp i#12917] +[visit_id i#12917] +[visit_exp ((Fnn_2 : Fnn <: lanetype), `%`_dim{i#12924}(M_2))] +[visit_exp (Fnn_2 : Fnn <: lanetype)] +[visit_exp Fnn_2] +[visit_id Fnn_2] +[visit_exp `%`_dim{i#12924}(M_2)] +[visit_exp i#12924] +[visit_id i#12924] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] +[visit_exp `CONVERT`_vcvtop__{`half?#3`, sx#90}(half?{half <- `half?`}, sx)] +[visit_exp `half?#3`] +[visit_id half?#3] +[visit_exp sx#90] +[visit_id sx#90] +[visit_exp (half?{half <- `half?`}, sx)] +[visit_exp half?{half <- `half?`}] +[scope_enter half] +[visit_exp half] +[visit_id half] not free +[visit_id half] not free +[scope_exit half] +[visit_exp `half?`] +[visit_id half?] no dims +[visit_id half?] +[visit_exp sx] +[visit_id sx] +[visit_exp half?{half <- `half?`}] +[scope_enter half] +[visit_exp half] +[visit_id half] not free +[visit_id half] not free +[scope_exit half] +[visit_exp `half?`] +[visit_id half?] not free +[visit_id half?] no dims +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{lanetype#1146 : lanetype, dim#1146 : dim, i#12905 : nat, Jnn_1 : Jnn, i#12912 : nat, M_1 : M, lanetype#1158 : lanetype, dim#1158 : dim, i#12917 : nat, Fnn_2 : Fnn, i#12924 : nat, M_2 : M, `half?#3` : half?, sx#90 : sx, `half?` : half?, sx : sx}(`%X%`_shape{lanetype#1146, dim#1146, i#12905}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#12912}(M_1)), `%X%`_shape{lanetype#1158, dim#1158, i#12917}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#12924}(M_2)), `CONVERT`_vcvtop__{`half?#3`, sx#90}(half?{half <- `half?`}, sx)) = half?{half <- `half?`} +[check_dims] Fnn_1 Jnn_2 M_1 M_2 dim#1185 dim#1197 i#12944 i#12951 i#12956 i#12963 lanetype#1185 lanetype#1197 sx sx#92 zero zero?#5 +[visit_exp `%X%`_shape{lanetype#1185, dim#1185, i#12944}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#12951}(M_1))] +[visit_exp lanetype#1185] +[visit_id lanetype#1185] +[visit_exp dim#1185] +[visit_id dim#1185] +[visit_exp i#12944] +[visit_id i#12944] +[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim{i#12951}(M_1))] +[visit_exp (Fnn_1 : Fnn <: lanetype)] +[visit_exp Fnn_1] +[visit_id Fnn_1] +[visit_exp `%`_dim{i#12951}(M_1)] +[visit_exp i#12951] +[visit_id i#12951] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] +[visit_exp `%X%`_shape{lanetype#1197, dim#1197, i#12956}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#12963}(M_2))] +[visit_exp lanetype#1197] +[visit_id lanetype#1197] +[visit_exp dim#1197] +[visit_id dim#1197] +[visit_exp i#12956] +[visit_id i#12956] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#12963}(M_2))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] +[visit_exp `%`_dim{i#12963}(M_2)] +[visit_exp i#12963] +[visit_id i#12963] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] +[visit_exp `TRUNC_SAT`_vcvtop__{sx#92, `zero?#5`}(sx, zero?{zero <- `zero?`})] +[visit_exp sx#92] +[visit_id sx#92] +[visit_exp `zero?#5`] +[visit_id zero?#5] +[visit_exp (sx, zero?{zero <- `zero?`})] +[visit_exp sx] +[visit_id sx] +[visit_exp zero?{zero <- `zero?`}] +[scope_enter zero] +[visit_exp zero] +[visit_id zero] not free +[visit_id zero] not free +[scope_exit zero] +[visit_exp `zero?`] +[visit_id zero?] no dims +[visit_id zero?] +[visit_exp ?()] +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{lanetype#1185 : lanetype, dim#1185 : dim, i#12944 : nat, Fnn_1 : Fnn, i#12951 : nat, M_1 : M, lanetype#1197 : lanetype, dim#1197 : dim, i#12956 : nat, Jnn_2 : Jnn, i#12963 : nat, M_2 : M, sx#92 : sx, `zero?#5` : zero?, sx : sx, `zero?` : zero?}(`%X%`_shape{lanetype#1185, dim#1185, i#12944}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#12951}(M_1)), `%X%`_shape{lanetype#1197, dim#1197, i#12956}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#12963}(M_2)), `TRUNC_SAT`_vcvtop__{sx#92, `zero?#5`}(sx, zero?{zero <- `zero?`})) = ?() +[check_dims] Fnn_1 Jnn_2 M_1 M_2 dim#1239 dim#1251 i#12998 i#13005 i#13010 i#13017 lanetype#1239 lanetype#1251 sx sx#94 zero zero?#7 +[visit_exp `%X%`_shape{lanetype#1239, dim#1239, i#12998}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#13005}(M_1))] +[visit_exp lanetype#1239] +[visit_id lanetype#1239] +[visit_exp dim#1239] +[visit_id dim#1239] +[visit_exp i#12998] +[visit_id i#12998] +[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim{i#13005}(M_1))] +[visit_exp (Fnn_1 : Fnn <: lanetype)] +[visit_exp Fnn_1] +[visit_id Fnn_1] +[visit_exp `%`_dim{i#13005}(M_1)] +[visit_exp i#13005] +[visit_id i#13005] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] +[visit_exp `%X%`_shape{lanetype#1251, dim#1251, i#13010}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#13017}(M_2))] +[visit_exp lanetype#1251] +[visit_id lanetype#1251] +[visit_exp dim#1251] +[visit_id dim#1251] +[visit_exp i#13010] +[visit_id i#13010] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#13017}(M_2))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] +[visit_exp `%`_dim{i#13017}(M_2)] +[visit_exp i#13017] +[visit_id i#13017] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] +[visit_exp `RELAXED_TRUNC`_vcvtop__{sx#94, `zero?#7`}(sx, zero?{zero <- `zero?`})] +[visit_exp sx#94] +[visit_id sx#94] +[visit_exp `zero?#7`] +[visit_id zero?#7] +[visit_exp (sx, zero?{zero <- `zero?`})] +[visit_exp sx] +[visit_id sx] +[visit_exp zero?{zero <- `zero?`}] +[scope_enter zero] +[visit_exp zero] +[visit_id zero] not free +[visit_id zero] not free +[scope_exit zero] +[visit_exp `zero?`] +[visit_id zero?] no dims +[visit_id zero?] +[visit_exp ?()] +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{lanetype#1239 : lanetype, dim#1239 : dim, i#12998 : nat, Fnn_1 : Fnn, i#13005 : nat, M_1 : M, lanetype#1251 : lanetype, dim#1251 : dim, i#13010 : nat, Jnn_2 : Jnn, i#13017 : nat, M_2 : M, sx#94 : sx, `zero?#7` : zero?, sx : sx, `zero?` : zero?}(`%X%`_shape{lanetype#1239, dim#1239, i#12998}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#13005}(M_1)), `%X%`_shape{lanetype#1251, dim#1251, i#13010}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#13017}(M_2)), `RELAXED_TRUNC`_vcvtop__{sx#94, `zero?#7`}(sx, zero?{zero <- `zero?`})) = ?() +[check_dims] Fnn_1 Fnn_2 M_1 M_2 dim#1293 dim#1305 i#13052 i#13059 i#13064 i#13071 lanetype#1293 lanetype#1305 zero zero#3 +[visit_exp `%X%`_shape{lanetype#1293, dim#1293, i#13052}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#13059}(M_1))] +[visit_exp lanetype#1293] +[visit_id lanetype#1293] +[visit_exp dim#1293] +[visit_id dim#1293] +[visit_exp i#13052] +[visit_id i#13052] +[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim{i#13059}(M_1))] +[visit_exp (Fnn_1 : Fnn <: lanetype)] +[visit_exp Fnn_1] +[visit_id Fnn_1] +[visit_exp `%`_dim{i#13059}(M_1)] +[visit_exp i#13059] +[visit_id i#13059] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] +[visit_exp `%X%`_shape{lanetype#1305, dim#1305, i#13064}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#13071}(M_2))] +[visit_exp lanetype#1305] +[visit_id lanetype#1305] +[visit_exp dim#1305] +[visit_id dim#1305] +[visit_exp i#13064] +[visit_id i#13064] +[visit_exp ((Fnn_2 : Fnn <: lanetype), `%`_dim{i#13071}(M_2))] +[visit_exp (Fnn_2 : Fnn <: lanetype)] +[visit_exp Fnn_2] +[visit_id Fnn_2] +[visit_exp `%`_dim{i#13071}(M_2)] +[visit_exp i#13071] +[visit_id i#13071] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] +[visit_exp `DEMOTE`_vcvtop__{zero#3}(zero)] +[visit_exp zero#3] +[visit_id zero#3] +[visit_exp (zero)] +[visit_exp zero] +[visit_id zero] +[visit_exp ?()] +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{lanetype#1293 : lanetype, dim#1293 : dim, i#13052 : nat, Fnn_1 : Fnn, i#13059 : nat, M_1 : M, lanetype#1305 : lanetype, dim#1305 : dim, i#13064 : nat, Fnn_2 : Fnn, i#13071 : nat, M_2 : M, zero#3 : zero, zero : zero}(`%X%`_shape{lanetype#1293, dim#1293, i#13052}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#13059}(M_1)), `%X%`_shape{lanetype#1305, dim#1305, i#13064}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#13071}(M_2)), `DEMOTE`_vcvtop__{zero#3}(zero)) = ?() +[check_dims] Fnn_1 Fnn_2 M_1 M_2 dim#1362 dim#1374 i#13121 i#13128 i#13133 i#13140 lanetype#1362 lanetype#1374 +[visit_exp `%X%`_shape{lanetype#1362, dim#1362, i#13121}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#13128}(M_1))] +[visit_exp lanetype#1362] +[visit_id lanetype#1362] +[visit_exp dim#1362] +[visit_id dim#1362] +[visit_exp i#13121] +[visit_id i#13121] +[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim{i#13128}(M_1))] +[visit_exp (Fnn_1 : Fnn <: lanetype)] +[visit_exp Fnn_1] +[visit_id Fnn_1] +[visit_exp `%`_dim{i#13128}(M_1)] +[visit_exp i#13128] +[visit_id i#13128] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] +[visit_exp `%X%`_shape{lanetype#1374, dim#1374, i#13133}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#13140}(M_2))] +[visit_exp lanetype#1374] +[visit_id lanetype#1374] +[visit_exp dim#1374] +[visit_id dim#1374] +[visit_exp i#13133] +[visit_id i#13133] +[visit_exp ((Fnn_2 : Fnn <: lanetype), `%`_dim{i#13140}(M_2))] +[visit_exp (Fnn_2 : Fnn <: lanetype)] +[visit_exp Fnn_2] +[visit_id Fnn_2] +[visit_exp `%`_dim{i#13140}(M_2)] +[visit_exp i#13140] +[visit_id i#13140] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] +[visit_exp `PROMOTELOW`_vcvtop__] +[visit_exp ()] +[visit_exp ?(`LOW`_half)] +[visit_exp `LOW`_half] +[visit_exp ()] +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $halfop{lanetype#1362 : lanetype, dim#1362 : dim, i#13121 : nat, Fnn_1 : Fnn, i#13128 : nat, M_1 : M, lanetype#1374 : lanetype, dim#1374 : dim, i#13133 : nat, Fnn_2 : Fnn, i#13140 : nat, M_2 : M}(`%X%`_shape{lanetype#1362, dim#1362, i#13121}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#13128}(M_1)), `%X%`_shape{lanetype#1374, dim#1374, i#13133}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#13140}(M_2)), `PROMOTELOW`_vcvtop__) = ?(`LOW`_half) +[check_dims] half nat +DecD half(half : half, nat : nat, nat : nat) : nat +[visit_id half] not free +[visit_id nat] not free +[visit_id nat] not free +[check_dims] i j +[visit_exp `LOW`_half] +[visit_exp ()] +[visit_exp i] +[visit_id i] +[visit_exp j] +[visit_id j] +[visit_exp i] +[visit_id i] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $half{i : nat, j : nat}(`LOW`_half, i, j) = i +[check_dims] i j +[visit_exp `HIGH`_half] +[visit_exp ()] +[visit_exp i] +[visit_id i] +[visit_exp j] +[visit_id j] +[visit_exp j] +[visit_id j] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $half{i : nat, j : nat}(`HIGH`_half, i, j) = j +[check_dims] N _ iN +DecD iswizzle_lane_(N : N, iN(N)*, iN : iN(N)) : iN(N) +[visit_id N] not free +[visit_id _] not free +[visit_exp N] +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N _ iN +DecD irelaxed_swizzle_lane_(N : N, iN(N)*, iN : iN(N)) : iN(N) +[visit_id N] not free +[visit_id _] not free +[visit_exp N] +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N c i i#13205 i#13213 +[visit_exp N] +[visit_id N] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] no dims +[visit_id c*] +[visit_exp i] +[visit_id i] +[visit_exp c*{c <- `c*`}[i!`%`_iN{i#13213}.0]] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[visit_exp i!`%`_iN{i#13213}.0] +[visit_exp i!`%`_iN{i#13213}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#13213] +[visit_id i#13213] +[visit_exp (i!`%`_iN{i#13205}.0 < |c*{c <- `c*`}|)] +[visit_exp i!`%`_iN{i#13205}.0] +[visit_exp i!`%`_iN{i#13205}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#13205] +[visit_id i#13205] +[visit_exp |c*{c <- `c*`}|] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $iswizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N), i#13213 : nat, i#13205 : nat}(N, c*{c <- `c*`}, i) = c*{c <- `c*`}[i!`%`_iN{i#13213}.0] + -- if (i!`%`_iN{i#13205}.0 < |c*{c <- `c*`}|) +[check_dims] N c i i#13239 +[visit_exp N] +[visit_id N] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] no dims +[visit_id c*] +[visit_exp i] +[visit_id i] +[visit_exp `%`_iN{i#13239}(0)] +[visit_exp i#13239] +[visit_id i#13239] +[visit_exp (0)] +[visit_exp 0] +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $iswizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N), i#13239 : nat}(N, c*{c <- `c*`}, i) = `%`_iN{i#13239}(0) + -- otherwise +[check_dims] N c i i#13259 i#13267 +[visit_exp N] +[visit_id N] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] no dims +[visit_id c*] +[visit_exp i] +[visit_id i] +[visit_exp c*{c <- `c*`}[i!`%`_iN{i#13267}.0]] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[visit_exp i!`%`_iN{i#13267}.0] +[visit_exp i!`%`_iN{i#13267}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#13267] +[visit_id i#13267] +[visit_exp (i!`%`_iN{i#13259}.0 < |c*{c <- `c*`}|)] +[visit_exp i!`%`_iN{i#13259}.0] +[visit_exp i!`%`_iN{i#13259}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#13259] +[visit_id i#13259] +[visit_exp |c*{c <- `c*`}|] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N), i#13267 : nat, i#13259 : nat}(N, c*{c <- `c*`}, i) = c*{c <- `c*`}[i!`%`_iN{i#13267}.0] + -- if (i!`%`_iN{i#13259}.0 < |c*{c <- `c*`}|) +[check_dims] N c i i#13287 i#13295 +[visit_exp N] +[visit_id N] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] no dims +[visit_id c*] +[visit_exp i] +[visit_id i] +[visit_exp `%`_iN{i#13295}(0)] +[visit_exp i#13295] +[visit_id i#13295] +[visit_exp (0)] +[visit_exp 0] +[visit_exp ($signed_(N, i!`%`_iN{i#13287}.0) < (0 : nat <:> int))] +[visit_exp $signed_(N, i!`%`_iN{i#13287}.0)] +[visit_exp N] +[visit_id N] not free +[visit_exp i!`%`_iN{i#13287}.0] +[visit_exp i!`%`_iN{i#13287}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#13287] +[visit_id i#13287] +[visit_exp (0 : nat <:> int)] +[visit_exp 0] +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N), i#13295 : nat, i#13287 : nat}(N, c*{c <- `c*`}, i) = `%`_iN{i#13295}(0) + -- if ($signed_(N, i!`%`_iN{i#13287}.0) < (0 : nat <:> int)) +[check_dims] N c i i#13333 i#13341 +[visit_exp N] +[visit_id N] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] no dims +[visit_id c*] +[visit_exp i] +[visit_id i] +[visit_exp $relaxed2($R_swizzle, syntax iN(N), `%`_iN{i#13333}(0), c*{c <- `c*`}[(i!`%`_iN{i#13341}.0 \ |c*{c <- `c*`}|)])] +[visit_exp $R_swizzle] +[visit_exp N] +[visit_id N] not free +[visit_exp `%`_iN{i#13333}(0)] +[visit_exp i#13333] +[visit_id i#13333] +[visit_exp (0)] +[visit_exp 0] +[visit_exp c*{c <- `c*`}[(i!`%`_iN{i#13341}.0 \ |c*{c <- `c*`}|)]] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[visit_exp (i!`%`_iN{i#13341}.0 \ |c*{c <- `c*`}|)] +[visit_exp i!`%`_iN{i#13341}.0] +[visit_exp i!`%`_iN{i#13341}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#13341] +[visit_id i#13341] +[visit_exp |c*{c <- `c*`}|] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N), i#13333 : nat, i#13341 : nat}(N, c*{c <- `c*`}, i) = $relaxed2($R_swizzle, syntax iN(N), `%`_iN{i#13333}(0), c*{c <- `c*`}[(i!`%`_iN{i#13341}.0 \ |c*{c <- `c*`}|)]) + -- otherwise +[check_dims] N iN shape vec_ +DecD ivunop_(shape : shape, def $f_(N : N, iN : iN(N)) : iN(N), vec_ : vec_(`V128`_Vnn)) : vec_(`V128`_Vnn)* +[visit_id shape] not free +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_exp `V128`_Vnn] +[visit_exp ()] +[check_dims] N fN shape vec_ +DecD fvunop_(shape : shape, def $f_(N : N, fN : fN(N)) : fN(N)*, vec_ : vec_(`V128`_Vnn)) : vec_(`V128`_Vnn)* +[visit_id shape] not free +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_exp `V128`_Vnn] +[visit_exp ()] +[check_dims] N iN shape vec_ +DecD 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)* +[visit_id shape] not free +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_exp `V128`_Vnn] +[visit_exp ()] +[check_dims] N iN shape sx vec_ +DecD 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)* +[visit_id shape] not free +[visit_id N] not free +[visit_id sx] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[visit_id sx] not free +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_exp `V128`_Vnn] +[visit_exp ()] +[check_dims] N iN shape sx vec_ +DecD 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)* +[visit_id shape] not free +[visit_id N] not free +[visit_id sx] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[visit_id sx] not free +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_exp `V128`_Vnn] +[visit_exp ()] +[check_dims] N fN shape vec_ +DecD 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)* +[visit_id shape] not free +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_exp `V128`_Vnn] +[visit_exp ()] +[check_dims] N iN shape vec_ +DecD 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)* +[visit_id shape] not free +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_exp `V128`_Vnn] +[visit_exp ()] +[check_dims] N fN shape vec_ +DecD 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)* +[visit_id shape] not free +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_exp `V128`_Vnn] +[visit_exp ()] +[check_dims] N iN shape vec_ +DecD 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) +[visit_id shape] not free +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_exp `V128`_Vnn] +[visit_exp ()] +[check_dims] N iN shape sx vec_ +DecD 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) +[visit_id shape] not free +[visit_id N] not free +[visit_id sx] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_id sx] not free +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_exp `V128`_Vnn] +[visit_exp ()] +[check_dims] N fN shape vec_ +DecD 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) +[visit_id shape] not free +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_id fN] not free +[visit_exp N] +[visit_id N] not free +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_exp `V128`_Vnn] +[visit_exp ()] +[check_dims] N iN shape u32 vec_ +DecD ivshiftop_(shape : shape, def $f_(N : N, iN : iN(N), u32 : u32) : iN(N), vec_ : vec_(`V128`_Vnn), u32 : u32) : vec_(`V128`_Vnn) +[visit_id shape] not free +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_id u32] not free +[visit_exp N] +[visit_id N] not free +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_id u32] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[check_dims] N iN shape sx u32 vec_ +DecD 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) +[visit_id shape] not free +[visit_id N] not free +[visit_id sx] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_id u32] not free +[visit_exp N] +[visit_id N] not free +[visit_id sx] not free +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_id u32] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[check_dims] shape vec_ +DecD ivbitmaskop_(shape : shape, vec_ : vec_(`V128`_Vnn)) : u32 +[visit_id shape] not free +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[check_dims] N _ iN shape vec_ +DecD 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) +[visit_id shape] not free +[visit_id N] not free +[visit_id _] not free +[visit_exp N] +[visit_id N] not free +[visit_id iN] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_exp `V128`_Vnn] +[visit_exp ()] +[check_dims] _ shape vec_ +DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(`V128`_Vnn)) : vec_(`V128`_Vnn) +[visit_id shape] not free +[visit_id _] not free +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_exp `V128`_Vnn] +[visit_exp ()] +[check_dims] Jnn M c c_1 dim#1431 dim#1443 dim#1469 i#13346 i#13353 i#13370 i#13377 i#13506 i#13513 lanetype#1431 lanetype#1443 lanetype#1469 v_1 +[visit_exp `%X%`_shape{lanetype#1431, dim#1431, i#13346}((Jnn : Jnn <: lanetype), `%`_dim{i#13353}(M))] +[visit_exp lanetype#1431] +[visit_id lanetype#1431] +[visit_exp dim#1431] +[visit_id dim#1431] +[visit_exp i#13346] +[visit_id i#13346] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#13353}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp `%`_dim{i#13353}(M)] +[visit_exp i#13353] +[visit_id i#13353] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp v_1] +[visit_id v_1] +[visit_exp [$inv_lanes_(`%X%`_shape{lanetype#1469, dim#1469, i#13506}((Jnn : Jnn <: lanetype), `%`_dim{i#13513}(M)), c*{c <- `c*`})]] +[visit_exp $inv_lanes_(`%X%`_shape{lanetype#1469, dim#1469, i#13506}((Jnn : Jnn <: lanetype), `%`_dim{i#13513}(M)), c*{c <- `c*`})] +[visit_exp `%X%`_shape{lanetype#1469, dim#1469, i#13506}((Jnn : Jnn <: lanetype), `%`_dim{i#13513}(M))] +[visit_exp lanetype#1469] +[visit_id lanetype#1469] +[visit_exp dim#1469] +[visit_id dim#1469] +[visit_exp i#13506] +[visit_id i#13506] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#13513}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#13513}(M)] +[visit_exp i#13513] +[visit_id i#13513] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] no dims +[visit_id c*] +[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#1443, dim#1443, i#13370}((Jnn : Jnn <: lanetype), `%`_dim{i#13377}(M)), v_1))] +[visit_exp c_1*{c_1 <- `c_1*`}] +[scope_enter c_1] +[visit_exp c_1] +[visit_id c_1] not free +[visit_id c_1] not free +[scope_exit c_1] +[visit_exp `c_1*`] +[visit_id c_1*] no dims +[visit_id c_1*] +[visit_exp $lanes_(`%X%`_shape{lanetype#1443, dim#1443, i#13370}((Jnn : Jnn <: lanetype), `%`_dim{i#13377}(M)), v_1)] +[visit_exp `%X%`_shape{lanetype#1443, dim#1443, i#13370}((Jnn : Jnn <: lanetype), `%`_dim{i#13377}(M))] +[visit_exp lanetype#1443] +[visit_id lanetype#1443] +[visit_exp dim#1443] +[visit_id dim#1443] +[visit_exp i#13370] +[visit_id i#13370] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#13377}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#13377}(M)] +[visit_exp i#13377] +[visit_id i#13377] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1)*{c_1 <- `c_1*`})] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1)*{c_1 <- `c_1*`}] +[scope_enter c_1] +[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1)] +[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp c_1] +[visit_id c_1] not free +[visit_id c_1] not free +[scope_exit c_1] +[visit_exp `c_1*`] +[visit_id c_1*] not free +[visit_id c_1*] no dims +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivunop_{lanetype#1431 : lanetype, dim#1431 : dim, i#13346 : nat, Jnn : Jnn, i#13353 : nat, M : M, def $f_(N : N, iN : iN(N)) : iN(N), v_1 : vec_(`V128`_Vnn), lanetype#1469 : lanetype, dim#1469 : dim, i#13506 : nat, i#13513 : nat, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, lanetype#1443 : lanetype, dim#1443 : dim, i#13370 : nat, i#13377 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#1443, dim#1443, i#13370}((Jnn : Jnn <: lanetype), `%`_dim{i#13377}(M))))*}(`%X%`_shape{lanetype#1431, dim#1431, i#13346}((Jnn : Jnn <: lanetype), `%`_dim{i#13353}(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape{lanetype#1469, dim#1469, i#13506}((Jnn : Jnn <: lanetype), `%`_dim{i#13513}(M)), c*{c <- `c*`})] + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#1443, dim#1443, i#13370}((Jnn : Jnn <: lanetype), `%`_dim{i#13377}(M)), v_1)) + -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1)*{c_1 <- `c_1*`}) +[check_dims] Fnn M c c_1 dim#1493 dim#1505 dim#1532 i#13579 i#13586 i#13603 i#13610 i#13693 i#13700 lanetype#1493 lanetype#1505 lanetype#1532 v_1 +[visit_exp `%X%`_shape{lanetype#1493, dim#1493, i#13579}((Fnn : Fnn <: lanetype), `%`_dim{i#13586}(M))] +[visit_exp lanetype#1493] +[visit_id lanetype#1493] +[visit_exp dim#1493] +[visit_id dim#1493] +[visit_exp i#13579] +[visit_id i#13579] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#13586}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `%`_dim{i#13586}(M)] +[visit_exp i#13586] +[visit_id i#13586] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp v_1] +[visit_id v_1] +[visit_exp $inv_lanes_(`%X%`_shape{lanetype#1532, dim#1532, i#13693}((Fnn : Fnn <: lanetype), `%`_dim{i#13700}(M)), c*{c <- `c*`})*{`c*` <- `c**`, dim#1532 <- `dim#1532*`, i#13693 <- `i#13693*`, i#13700 <- `i#13700*`, lanetype#1532 <- `lanetype#1532*`}] +[scope_enter c*] +[scope_enter dim#1532] +[scope_enter i#13693] +[scope_enter i#13700] +[scope_enter lanetype#1532] +[visit_exp $inv_lanes_(`%X%`_shape{lanetype#1532, dim#1532, i#13693}((Fnn : Fnn <: lanetype), `%`_dim{i#13700}(M)), c*{c <- `c*`})] +[visit_exp `%X%`_shape{lanetype#1532, dim#1532, i#13693}((Fnn : Fnn <: lanetype), `%`_dim{i#13700}(M))] +[visit_exp lanetype#1532] +[visit_id lanetype#1532] not free +[visit_exp dim#1532] +[visit_id dim#1532] not free +[visit_exp i#13693] +[visit_id i#13693] not free +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#13700}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp `%`_dim{i#13700}(M)] +[visit_exp i#13700] +[visit_id i#13700] not free +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[visit_id c*] not free +[visit_id c*] no dims +[visit_id dim#1532] not free +[visit_id i#13693] not free +[visit_id i#13700] not free +[visit_id lanetype#1532] not free +[scope_exit lanetype#1532] +[scope_exit i#13700] +[scope_exit i#13693] +[scope_exit dim#1532] +[scope_exit c*] +[visit_exp `c**`] +[visit_id c**] no dims +[visit_id c**] +[visit_exp `dim#1532*`] +[visit_id dim#1532*] no dims +[visit_id dim#1532*] +[visit_exp `i#13693*`] +[visit_id i#13693*] no dims +[visit_id i#13693*] +[visit_exp `i#13700*`] +[visit_id i#13700*] no dims +[visit_id i#13700*] +[visit_exp `lanetype#1532*`] +[visit_id lanetype#1532*] no dims +[visit_id lanetype#1532*] +[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#1505, dim#1505, i#13603}((Fnn : Fnn <: lanetype), `%`_dim{i#13610}(M)), v_1))] +[visit_exp c_1*{c_1 <- `c_1*`}] +[scope_enter c_1] +[visit_exp c_1] +[visit_id c_1] not free +[visit_id c_1] not free +[scope_exit c_1] +[visit_exp `c_1*`] +[visit_id c_1*] no dims +[visit_id c_1*] +[visit_exp $lanes_(`%X%`_shape{lanetype#1505, dim#1505, i#13603}((Fnn : Fnn <: lanetype), `%`_dim{i#13610}(M)), v_1)] +[visit_exp `%X%`_shape{lanetype#1505, dim#1505, i#13603}((Fnn : Fnn <: lanetype), `%`_dim{i#13610}(M))] +[visit_exp lanetype#1505] +[visit_id lanetype#1505] +[visit_exp dim#1505] +[visit_id dim#1505] +[visit_exp i#13603] +[visit_id i#13603] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#13610}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp `%`_dim{i#13610}(M)] +[visit_exp i#13610] +[visit_id i#13610] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Fnn : Fnn <: lanetype)), $f_($sizenn((Fnn : Fnn <: numtype)), c_1)*{c_1 <- `c_1*`}))] +[visit_exp c*{c <- `c*`}*{`c*` <- `c**`}] +[scope_enter c*] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[visit_id c*] not free +[visit_id c*] no dims +[scope_exit c*] +[visit_exp `c**`] +[visit_id c**] not free +[visit_id c**] no dims +[visit_exp $setproduct_(syntax lane_((Fnn : Fnn <: lanetype)), $f_($sizenn((Fnn : Fnn <: numtype)), c_1)*{c_1 <- `c_1*`})] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp $f_($sizenn((Fnn : Fnn <: numtype)), c_1)*{c_1 <- `c_1*`}] +[scope_enter c_1] +[visit_exp $f_($sizenn((Fnn : Fnn <: numtype)), c_1)] +[visit_exp $sizenn((Fnn : Fnn <: numtype))] +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp c_1] +[visit_id c_1] not free +[visit_id c_1] not free +[scope_exit c_1] +[visit_exp `c_1*`] +[visit_id c_1*] not free +[visit_id c_1*] no dims +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvunop_{lanetype#1493 : lanetype, dim#1493 : dim, i#13579 : nat, Fnn : Fnn, i#13586 : nat, M : M, def $f_(N : N, fN : fN(N)) : fN(N)*, v_1 : vec_(`V128`_Vnn), `c**` : lane_((Fnn : Fnn <: lanetype))**, `dim#1532*` : dim*, `i#13693*` : nat*, `i#13700*` : nat*, `lanetype#1532*` : lanetype*, lanetype#1505 : lanetype, dim#1505 : dim, i#13603 : nat, i#13610 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#1505, dim#1505, i#13603}((Fnn : Fnn <: lanetype), `%`_dim{i#13610}(M))))*}(`%X%`_shape{lanetype#1493, dim#1493, i#13579}((Fnn : Fnn <: lanetype), `%`_dim{i#13586}(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape{lanetype#1532, dim#1532, i#13693}((Fnn : Fnn <: lanetype), `%`_dim{i#13700}(M)), c*{c <- `c*`})*{`c*` <- `c**`, dim#1532 <- `dim#1532*`, i#13693 <- `i#13693*`, i#13700 <- `i#13700*`, lanetype#1532 <- `lanetype#1532*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#1505, dim#1505, i#13603}((Fnn : Fnn <: lanetype), `%`_dim{i#13610}(M)), v_1)) + -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Fnn : Fnn <: lanetype)), $f_($sizenn((Fnn : Fnn <: numtype)), c_1)*{c_1 <- `c_1*`})) +[check_dims] Jnn M c c_1 c_2 dim#1555 dim#1567 dim#1592 dim#1619 i#13738 i#13745 i#13774 i#13781 i#13860 i#13867 i#14011 i#14018 lanetype#1555 lanetype#1567 lanetype#1592 lanetype#1619 v_1 v_2 +[visit_exp `%X%`_shape{lanetype#1555, dim#1555, i#13738}((Jnn : Jnn <: lanetype), `%`_dim{i#13745}(M))] +[visit_exp lanetype#1555] +[visit_id lanetype#1555] +[visit_exp dim#1555] +[visit_id dim#1555] +[visit_exp i#13738] +[visit_id i#13738] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#13745}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp `%`_dim{i#13745}(M)] +[visit_exp i#13745] +[visit_id i#13745] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp [$inv_lanes_(`%X%`_shape{lanetype#1619, dim#1619, i#14011}((Jnn : Jnn <: lanetype), `%`_dim{i#14018}(M)), c*{c <- `c*`})]] +[visit_exp $inv_lanes_(`%X%`_shape{lanetype#1619, dim#1619, i#14011}((Jnn : Jnn <: lanetype), `%`_dim{i#14018}(M)), c*{c <- `c*`})] +[visit_exp `%X%`_shape{lanetype#1619, dim#1619, i#14011}((Jnn : Jnn <: lanetype), `%`_dim{i#14018}(M))] +[visit_exp lanetype#1619] +[visit_id lanetype#1619] +[visit_exp dim#1619] +[visit_id dim#1619] +[visit_exp i#14011] +[visit_id i#14011] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#14018}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#14018}(M)] +[visit_exp i#14018] +[visit_id i#14018] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] no dims +[visit_id c*] +[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#1567, dim#1567, i#13774}((Jnn : Jnn <: lanetype), `%`_dim{i#13781}(M)), v_1))] +[visit_exp c_1*{c_1 <- `c_1*`}] +[scope_enter c_1] +[visit_exp c_1] +[visit_id c_1] not free +[visit_id c_1] not free +[scope_exit c_1] +[visit_exp `c_1*`] +[visit_id c_1*] no dims +[visit_id c_1*] +[visit_exp $lanes_(`%X%`_shape{lanetype#1567, dim#1567, i#13774}((Jnn : Jnn <: lanetype), `%`_dim{i#13781}(M)), v_1)] +[visit_exp `%X%`_shape{lanetype#1567, dim#1567, i#13774}((Jnn : Jnn <: lanetype), `%`_dim{i#13781}(M))] +[visit_exp lanetype#1567] +[visit_id lanetype#1567] +[visit_exp dim#1567] +[visit_id dim#1567] +[visit_exp i#13774] +[visit_id i#13774] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#13781}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#13781}(M)] +[visit_exp i#13781] +[visit_id i#13781] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#1592, dim#1592, i#13860}((Jnn : Jnn <: lanetype), `%`_dim{i#13867}(M)), v_2))] +[visit_exp c_2*{c_2 <- `c_2*`}] +[scope_enter c_2] +[visit_exp c_2] +[visit_id c_2] not free +[visit_id c_2] not free +[scope_exit c_2] +[visit_exp `c_2*`] +[visit_id c_2*] no dims +[visit_id c_2*] +[visit_exp $lanes_(`%X%`_shape{lanetype#1592, dim#1592, i#13860}((Jnn : Jnn <: lanetype), `%`_dim{i#13867}(M)), v_2)] +[visit_exp `%X%`_shape{lanetype#1592, dim#1592, i#13860}((Jnn : Jnn <: lanetype), `%`_dim{i#13867}(M))] +[visit_exp lanetype#1592] +[visit_id lanetype#1592] +[visit_exp dim#1592] +[visit_id dim#1592] +[visit_exp i#13860] +[visit_id i#13860] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#13867}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#13867}(M)] +[visit_exp i#13867] +[visit_id i#13867] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_2] +[visit_id v_2] not free +[visit_exp (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`})] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`}] +[scope_enter c_1] +[scope_enter c_2] +[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)] +[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp c_1] +[visit_id c_1] not free +[visit_exp c_2] +[visit_id c_2] not free +[visit_id c_1] not free +[visit_id c_2] not free +[scope_exit c_2] +[scope_exit c_1] +[visit_exp `c_1*`] +[visit_id c_1*] not free +[visit_id c_1*] no dims +[visit_exp `c_2*`] +[visit_id c_2*] not free +[visit_id c_2*] no dims +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinop_{lanetype#1555 : lanetype, dim#1555 : dim, i#13738 : nat, Jnn : Jnn, i#13745 : nat, M : M, def $f_(N : N, iN : iN(N), iN : iN(N)) : iN(N), v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#1619 : lanetype, dim#1619 : dim, i#14011 : nat, i#14018 : nat, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, lanetype#1567 : lanetype, dim#1567 : dim, i#13774 : nat, i#13781 : nat, lanetype#1592 : lanetype, dim#1592 : dim, i#13860 : nat, i#13867 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#1567, dim#1567, i#13774}((Jnn : Jnn <: lanetype), `%`_dim{i#13781}(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#1592, dim#1592, i#13860}((Jnn : Jnn <: lanetype), `%`_dim{i#13867}(M))))*}(`%X%`_shape{lanetype#1555, dim#1555, i#13738}((Jnn : Jnn <: lanetype), `%`_dim{i#13745}(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape{lanetype#1619, dim#1619, i#14011}((Jnn : Jnn <: lanetype), `%`_dim{i#14018}(M)), c*{c <- `c*`})] + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#1567, dim#1567, i#13774}((Jnn : Jnn <: lanetype), `%`_dim{i#13781}(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#1592, dim#1592, i#13860}((Jnn : Jnn <: lanetype), `%`_dim{i#13867}(M)), v_2)) + -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`}) +[check_dims] Jnn M c c_1 c_2 dim#1643 dim#1655 dim#1680 dim#1707 i#14084 i#14091 i#14120 i#14127 i#14206 i#14213 i#14357 i#14364 lanetype#1643 lanetype#1655 lanetype#1680 lanetype#1707 sx v_1 v_2 +[visit_exp `%X%`_shape{lanetype#1643, dim#1643, i#14084}((Jnn : Jnn <: lanetype), `%`_dim{i#14091}(M))] +[visit_exp lanetype#1643] +[visit_id lanetype#1643] +[visit_exp dim#1643] +[visit_id dim#1643] +[visit_exp i#14084] +[visit_id i#14084] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#14091}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp `%`_dim{i#14091}(M)] +[visit_exp i#14091] +[visit_id i#14091] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp sx] +[visit_id sx] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp [$inv_lanes_(`%X%`_shape{lanetype#1707, dim#1707, i#14357}((Jnn : Jnn <: lanetype), `%`_dim{i#14364}(M)), c*{c <- `c*`})]] +[visit_exp $inv_lanes_(`%X%`_shape{lanetype#1707, dim#1707, i#14357}((Jnn : Jnn <: lanetype), `%`_dim{i#14364}(M)), c*{c <- `c*`})] +[visit_exp `%X%`_shape{lanetype#1707, dim#1707, i#14357}((Jnn : Jnn <: lanetype), `%`_dim{i#14364}(M))] +[visit_exp lanetype#1707] +[visit_id lanetype#1707] +[visit_exp dim#1707] +[visit_id dim#1707] +[visit_exp i#14357] +[visit_id i#14357] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#14364}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#14364}(M)] +[visit_exp i#14364] +[visit_id i#14364] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] no dims +[visit_id c*] +[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#1655, dim#1655, i#14120}((Jnn : Jnn <: lanetype), `%`_dim{i#14127}(M)), v_1))] +[visit_exp c_1*{c_1 <- `c_1*`}] +[scope_enter c_1] +[visit_exp c_1] +[visit_id c_1] not free +[visit_id c_1] not free +[scope_exit c_1] +[visit_exp `c_1*`] +[visit_id c_1*] no dims +[visit_id c_1*] +[visit_exp $lanes_(`%X%`_shape{lanetype#1655, dim#1655, i#14120}((Jnn : Jnn <: lanetype), `%`_dim{i#14127}(M)), v_1)] +[visit_exp `%X%`_shape{lanetype#1655, dim#1655, i#14120}((Jnn : Jnn <: lanetype), `%`_dim{i#14127}(M))] +[visit_exp lanetype#1655] +[visit_id lanetype#1655] +[visit_exp dim#1655] +[visit_id dim#1655] +[visit_exp i#14120] +[visit_id i#14120] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#14127}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#14127}(M)] +[visit_exp i#14127] +[visit_id i#14127] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#1680, dim#1680, i#14206}((Jnn : Jnn <: lanetype), `%`_dim{i#14213}(M)), v_2))] +[visit_exp c_2*{c_2 <- `c_2*`}] +[scope_enter c_2] +[visit_exp c_2] +[visit_id c_2] not free +[visit_id c_2] not free +[scope_exit c_2] +[visit_exp `c_2*`] +[visit_id c_2*] no dims +[visit_id c_2*] +[visit_exp $lanes_(`%X%`_shape{lanetype#1680, dim#1680, i#14206}((Jnn : Jnn <: lanetype), `%`_dim{i#14213}(M)), v_2)] +[visit_exp `%X%`_shape{lanetype#1680, dim#1680, i#14206}((Jnn : Jnn <: lanetype), `%`_dim{i#14213}(M))] +[visit_exp lanetype#1680] +[visit_id lanetype#1680] +[visit_exp dim#1680] +[visit_id dim#1680] +[visit_exp i#14206] +[visit_id i#14206] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#14213}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#14213}(M)] +[visit_exp i#14213] +[visit_id i#14213] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_2] +[visit_id v_2] not free +[visit_exp (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`})] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`}] +[scope_enter c_1] +[scope_enter c_2] +[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)] +[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp sx] +[visit_id sx] not free +[visit_exp c_1] +[visit_id c_1] not free +[visit_exp c_2] +[visit_id c_2] not free +[visit_id c_1] not free +[visit_id c_2] not free +[scope_exit c_2] +[scope_exit c_1] +[visit_exp `c_1*`] +[visit_id c_1*] not free +[visit_id c_1*] no dims +[visit_exp `c_2*`] +[visit_id c_2*] not free +[visit_id c_2*] no dims +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsx_{lanetype#1643 : lanetype, dim#1643 : dim, i#14084 : nat, Jnn : Jnn, i#14091 : nat, 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), lanetype#1707 : lanetype, dim#1707 : dim, i#14357 : nat, i#14364 : nat, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, lanetype#1655 : lanetype, dim#1655 : dim, i#14120 : nat, i#14127 : nat, lanetype#1680 : lanetype, dim#1680 : dim, i#14206 : nat, i#14213 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#1655, dim#1655, i#14120}((Jnn : Jnn <: lanetype), `%`_dim{i#14127}(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#1680, dim#1680, i#14206}((Jnn : Jnn <: lanetype), `%`_dim{i#14213}(M))))*}(`%X%`_shape{lanetype#1643, dim#1643, i#14084}((Jnn : Jnn <: lanetype), `%`_dim{i#14091}(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape{lanetype#1707, dim#1707, i#14357}((Jnn : Jnn <: lanetype), `%`_dim{i#14364}(M)), c*{c <- `c*`})] + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#1655, dim#1655, i#14120}((Jnn : Jnn <: lanetype), `%`_dim{i#14127}(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#1680, dim#1680, i#14206}((Jnn : Jnn <: lanetype), `%`_dim{i#14213}(M)), v_2)) + -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`}) +[check_dims] Jnn M c c_1 c_2 dim#1731 dim#1743 dim#1768 dim#1803 i#14430 i#14437 i#14466 i#14473 i#14552 i#14559 i#14919 i#14926 lanetype#1731 lanetype#1743 lanetype#1768 lanetype#1803 sx v_1 v_2 +[visit_exp `%X%`_shape{lanetype#1731, dim#1731, i#14430}((Jnn : Jnn <: lanetype), `%`_dim{i#14437}(M))] +[visit_exp lanetype#1731] +[visit_id lanetype#1731] +[visit_exp dim#1731] +[visit_id dim#1731] +[visit_exp i#14430] +[visit_id i#14430] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#14437}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp `%`_dim{i#14437}(M)] +[visit_exp i#14437] +[visit_id i#14437] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp sx] +[visit_id sx] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $inv_lanes_(`%X%`_shape{lanetype#1803, dim#1803, i#14919}((Jnn : Jnn <: lanetype), `%`_dim{i#14926}(M)), c*{c <- `c*`})*{`c*` <- `c**`, dim#1803 <- `dim#1803*`, i#14919 <- `i#14919*`, i#14926 <- `i#14926*`, lanetype#1803 <- `lanetype#1803*`}] +[scope_enter c*] +[scope_enter dim#1803] +[scope_enter i#14919] +[scope_enter i#14926] +[scope_enter lanetype#1803] +[visit_exp $inv_lanes_(`%X%`_shape{lanetype#1803, dim#1803, i#14919}((Jnn : Jnn <: lanetype), `%`_dim{i#14926}(M)), c*{c <- `c*`})] +[visit_exp `%X%`_shape{lanetype#1803, dim#1803, i#14919}((Jnn : Jnn <: lanetype), `%`_dim{i#14926}(M))] +[visit_exp lanetype#1803] +[visit_id lanetype#1803] not free +[visit_exp dim#1803] +[visit_id dim#1803] not free +[visit_exp i#14919] +[visit_id i#14919] not free +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#14926}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#14926}(M)] +[visit_exp i#14926] +[visit_id i#14926] not free +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[visit_id c*] not free +[visit_id c*] no dims +[visit_id dim#1803] not free +[visit_id i#14919] not free +[visit_id i#14926] not free +[visit_id lanetype#1803] not free +[scope_exit lanetype#1803] +[scope_exit i#14926] +[scope_exit i#14919] +[scope_exit dim#1803] +[scope_exit c*] +[visit_exp `c**`] +[visit_id c**] no dims +[visit_id c**] +[visit_exp `dim#1803*`] +[visit_id dim#1803*] no dims +[visit_id dim#1803*] +[visit_exp `i#14919*`] +[visit_id i#14919*] no dims +[visit_id i#14919*] +[visit_exp `i#14926*`] +[visit_id i#14926*] no dims +[visit_id i#14926*] +[visit_exp `lanetype#1803*`] +[visit_id lanetype#1803*] no dims +[visit_id lanetype#1803*] +[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#1743, dim#1743, i#14466}((Jnn : Jnn <: lanetype), `%`_dim{i#14473}(M)), v_1))] +[visit_exp c_1*{c_1 <- `c_1*`}] +[scope_enter c_1] +[visit_exp c_1] +[visit_id c_1] not free +[visit_id c_1] not free +[scope_exit c_1] +[visit_exp `c_1*`] +[visit_id c_1*] no dims +[visit_id c_1*] +[visit_exp $lanes_(`%X%`_shape{lanetype#1743, dim#1743, i#14466}((Jnn : Jnn <: lanetype), `%`_dim{i#14473}(M)), v_1)] +[visit_exp `%X%`_shape{lanetype#1743, dim#1743, i#14466}((Jnn : Jnn <: lanetype), `%`_dim{i#14473}(M))] +[visit_exp lanetype#1743] +[visit_id lanetype#1743] +[visit_exp dim#1743] +[visit_id dim#1743] +[visit_exp i#14466] +[visit_id i#14466] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#14473}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#14473}(M)] +[visit_exp i#14473] +[visit_id i#14473] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#1768, dim#1768, i#14552}((Jnn : Jnn <: lanetype), `%`_dim{i#14559}(M)), v_2))] +[visit_exp c_2*{c_2 <- `c_2*`}] +[scope_enter c_2] +[visit_exp c_2] +[visit_id c_2] not free +[visit_id c_2] not free +[scope_exit c_2] +[visit_exp `c_2*`] +[visit_id c_2*] no dims +[visit_id c_2*] +[visit_exp $lanes_(`%X%`_shape{lanetype#1768, dim#1768, i#14552}((Jnn : Jnn <: lanetype), `%`_dim{i#14559}(M)), v_2)] +[visit_exp `%X%`_shape{lanetype#1768, dim#1768, i#14552}((Jnn : Jnn <: lanetype), `%`_dim{i#14559}(M))] +[visit_exp lanetype#1768] +[visit_id lanetype#1768] +[visit_exp dim#1768] +[visit_id dim#1768] +[visit_exp i#14552] +[visit_id i#14552] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#14559}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#14559}(M)] +[visit_exp i#14559] +[visit_id i#14559] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_2] +[visit_id v_2] not free +[visit_exp (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*`}))] +[visit_exp c*{c <- `c*`}*{`c*` <- `c**`}] +[scope_enter c*] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[visit_id c*] not free +[visit_id c*] no dims +[scope_exit c*] +[visit_exp `c**`] +[visit_id c**] not free +[visit_id c**] no dims +[visit_exp $setproduct_(syntax lane_((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`})] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`}] +[scope_enter c_1] +[scope_enter c_2] +[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)] +[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp sx] +[visit_id sx] not free +[visit_exp c_1] +[visit_id c_1] not free +[visit_exp c_2] +[visit_id c_2] not free +[visit_id c_1] not free +[visit_id c_2] not free +[scope_exit c_2] +[scope_exit c_1] +[visit_exp `c_1*`] +[visit_id c_1*] not free +[visit_id c_1*] no dims +[visit_exp `c_2*`] +[visit_id c_2*] not free +[visit_id c_2*] no dims +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbinopsxnd_{lanetype#1731 : lanetype, dim#1731 : dim, i#14430 : nat, Jnn : Jnn, i#14437 : nat, 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))**, `dim#1803*` : dim*, `i#14919*` : nat*, `i#14926*` : nat*, `lanetype#1803*` : lanetype*, lanetype#1743 : lanetype, dim#1743 : dim, i#14466 : nat, i#14473 : nat, lanetype#1768 : lanetype, dim#1768 : dim, i#14552 : nat, i#14559 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#1743, dim#1743, i#14466}((Jnn : Jnn <: lanetype), `%`_dim{i#14473}(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#1768, dim#1768, i#14552}((Jnn : Jnn <: lanetype), `%`_dim{i#14559}(M))))*}(`%X%`_shape{lanetype#1731, dim#1731, i#14430}((Jnn : Jnn <: lanetype), `%`_dim{i#14437}(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape{lanetype#1803, dim#1803, i#14919}((Jnn : Jnn <: lanetype), `%`_dim{i#14926}(M)), c*{c <- `c*`})*{`c*` <- `c**`, dim#1803 <- `dim#1803*`, i#14919 <- `i#14919*`, i#14926 <- `i#14926*`, lanetype#1803 <- `lanetype#1803*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#1743, dim#1743, i#14466}((Jnn : Jnn <: lanetype), `%`_dim{i#14473}(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#1768, dim#1768, i#14552}((Jnn : Jnn <: lanetype), `%`_dim{i#14559}(M)), v_2)) + -- if (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*`})) +[check_dims] Fnn M c c_1 c_2 dim#1827 dim#1839 dim#1863 dim#1893 i#14990 i#14997 i#15026 i#15033 i#15084 i#15091 i#15183 i#15190 lanetype#1827 lanetype#1839 lanetype#1863 lanetype#1893 v_1 v_2 +[visit_exp `%X%`_shape{lanetype#1827, dim#1827, i#14990}((Fnn : Fnn <: lanetype), `%`_dim{i#14997}(M))] +[visit_exp lanetype#1827] +[visit_id lanetype#1827] +[visit_exp dim#1827] +[visit_id dim#1827] +[visit_exp i#14990] +[visit_id i#14990] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#14997}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `%`_dim{i#14997}(M)] +[visit_exp i#14997] +[visit_id i#14997] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $inv_lanes_(`%X%`_shape{lanetype#1893, dim#1893, i#15183}((Fnn : Fnn <: lanetype), `%`_dim{i#15190}(M)), c*{c <- `c*`})*{`c*` <- `c**`, dim#1893 <- `dim#1893*`, i#15183 <- `i#15183*`, i#15190 <- `i#15190*`, lanetype#1893 <- `lanetype#1893*`}] +[scope_enter c*] +[scope_enter dim#1893] +[scope_enter i#15183] +[scope_enter i#15190] +[scope_enter lanetype#1893] +[visit_exp $inv_lanes_(`%X%`_shape{lanetype#1893, dim#1893, i#15183}((Fnn : Fnn <: lanetype), `%`_dim{i#15190}(M)), c*{c <- `c*`})] +[visit_exp `%X%`_shape{lanetype#1893, dim#1893, i#15183}((Fnn : Fnn <: lanetype), `%`_dim{i#15190}(M))] +[visit_exp lanetype#1893] +[visit_id lanetype#1893] not free +[visit_exp dim#1893] +[visit_id dim#1893] not free +[visit_exp i#15183] +[visit_id i#15183] not free +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#15190}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp `%`_dim{i#15190}(M)] +[visit_exp i#15190] +[visit_id i#15190] not free +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[visit_id c*] not free +[visit_id c*] no dims +[visit_id dim#1893] not free +[visit_id i#15183] not free +[visit_id i#15190] not free +[visit_id lanetype#1893] not free +[scope_exit lanetype#1893] +[scope_exit i#15190] +[scope_exit i#15183] +[scope_exit dim#1893] +[scope_exit c*] +[visit_exp `c**`] +[visit_id c**] no dims +[visit_id c**] +[visit_exp `dim#1893*`] +[visit_id dim#1893*] no dims +[visit_id dim#1893*] +[visit_exp `i#15183*`] +[visit_id i#15183*] no dims +[visit_id i#15183*] +[visit_exp `i#15190*`] +[visit_id i#15190*] no dims +[visit_id i#15190*] +[visit_exp `lanetype#1893*`] +[visit_id lanetype#1893*] no dims +[visit_id lanetype#1893*] +[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#1839, dim#1839, i#15026}((Fnn : Fnn <: lanetype), `%`_dim{i#15033}(M)), v_1))] +[visit_exp c_1*{c_1 <- `c_1*`}] +[scope_enter c_1] +[visit_exp c_1] +[visit_id c_1] not free +[visit_id c_1] not free +[scope_exit c_1] +[visit_exp `c_1*`] +[visit_id c_1*] no dims +[visit_id c_1*] +[visit_exp $lanes_(`%X%`_shape{lanetype#1839, dim#1839, i#15026}((Fnn : Fnn <: lanetype), `%`_dim{i#15033}(M)), v_1)] +[visit_exp `%X%`_shape{lanetype#1839, dim#1839, i#15026}((Fnn : Fnn <: lanetype), `%`_dim{i#15033}(M))] +[visit_exp lanetype#1839] +[visit_id lanetype#1839] +[visit_exp dim#1839] +[visit_id dim#1839] +[visit_exp i#15026] +[visit_id i#15026] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#15033}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp `%`_dim{i#15033}(M)] +[visit_exp i#15033] +[visit_id i#15033] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#1863, dim#1863, i#15084}((Fnn : Fnn <: lanetype), `%`_dim{i#15091}(M)), v_2))] +[visit_exp c_2*{c_2 <- `c_2*`}] +[scope_enter c_2] +[visit_exp c_2] +[visit_id c_2] not free +[visit_id c_2] not free +[scope_exit c_2] +[visit_exp `c_2*`] +[visit_id c_2*] no dims +[visit_id c_2*] +[visit_exp $lanes_(`%X%`_shape{lanetype#1863, dim#1863, i#15084}((Fnn : Fnn <: lanetype), `%`_dim{i#15091}(M)), v_2)] +[visit_exp `%X%`_shape{lanetype#1863, dim#1863, i#15084}((Fnn : Fnn <: lanetype), `%`_dim{i#15091}(M))] +[visit_exp lanetype#1863] +[visit_id lanetype#1863] +[visit_exp dim#1863] +[visit_id dim#1863] +[visit_exp i#15084] +[visit_id i#15084] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#15091}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp `%`_dim{i#15091}(M)] +[visit_exp i#15091] +[visit_id i#15091] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_2] +[visit_id v_2] not free +[visit_exp (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*`}))] +[visit_exp c*{c <- `c*`}*{`c*` <- `c**`}] +[scope_enter c*] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[visit_id c*] not free +[visit_id c*] no dims +[scope_exit c*] +[visit_exp `c**`] +[visit_id c**] not free +[visit_id c**] no dims +[visit_exp $setproduct_(syntax lane_((Fnn : Fnn <: lanetype)), $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`})] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`}] +[scope_enter c_1] +[scope_enter c_2] +[visit_exp $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)] +[visit_exp $sizenn((Fnn : Fnn <: numtype))] +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp c_1] +[visit_id c_1] not free +[visit_exp c_2] +[visit_id c_2] not free +[visit_id c_1] not free +[visit_id c_2] not free +[scope_exit c_2] +[scope_exit c_1] +[visit_exp `c_1*`] +[visit_id c_1*] not free +[visit_id c_1*] no dims +[visit_exp `c_2*`] +[visit_id c_2*] not free +[visit_id c_2*] no dims +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvbinop_{lanetype#1827 : lanetype, dim#1827 : dim, i#14990 : nat, Fnn : Fnn, i#14997 : nat, 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))**, `dim#1893*` : dim*, `i#15183*` : nat*, `i#15190*` : nat*, `lanetype#1893*` : lanetype*, lanetype#1839 : lanetype, dim#1839 : dim, i#15026 : nat, i#15033 : nat, lanetype#1863 : lanetype, dim#1863 : dim, i#15084 : nat, i#15091 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#1839, dim#1839, i#15026}((Fnn : Fnn <: lanetype), `%`_dim{i#15033}(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#1863, dim#1863, i#15084}((Fnn : Fnn <: lanetype), `%`_dim{i#15091}(M))))*}(`%X%`_shape{lanetype#1827, dim#1827, i#14990}((Fnn : Fnn <: lanetype), `%`_dim{i#14997}(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape{lanetype#1893, dim#1893, i#15183}((Fnn : Fnn <: lanetype), `%`_dim{i#15190}(M)), c*{c <- `c*`})*{`c*` <- `c**`, dim#1893 <- `dim#1893*`, i#15183 <- `i#15183*`, i#15190 <- `i#15190*`, lanetype#1893 <- `lanetype#1893*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#1839, dim#1839, i#15026}((Fnn : Fnn <: lanetype), `%`_dim{i#15033}(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#1863, dim#1863, i#15084}((Fnn : Fnn <: lanetype), `%`_dim{i#15091}(M)), v_2)) + -- if (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*`})) +[check_dims] Jnn M c c_1 c_2 c_3 dim#1916 dim#1928 dim#1953 dim#1978 dim#2018 i#15228 i#15235 i#15276 i#15283 i#15362 i#15369 i#15448 i#15455 i#15890 i#15897 lanetype#1916 lanetype#1928 lanetype#1953 lanetype#1978 lanetype#2018 v_1 v_2 v_3 +[visit_exp `%X%`_shape{lanetype#1916, dim#1916, i#15228}((Jnn : Jnn <: lanetype), `%`_dim{i#15235}(M))] +[visit_exp lanetype#1916] +[visit_id lanetype#1916] +[visit_exp dim#1916] +[visit_id dim#1916] +[visit_exp i#15228] +[visit_id i#15228] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#15235}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp `%`_dim{i#15235}(M)] +[visit_exp i#15235] +[visit_id i#15235] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp v_3] +[visit_id v_3] +[visit_exp $inv_lanes_(`%X%`_shape{lanetype#2018, dim#2018, i#15890}((Jnn : Jnn <: lanetype), `%`_dim{i#15897}(M)), c*{c <- `c*`})*{`c*` <- `c**`, dim#2018 <- `dim#2018*`, i#15890 <- `i#15890*`, i#15897 <- `i#15897*`, lanetype#2018 <- `lanetype#2018*`}] +[scope_enter c*] +[scope_enter dim#2018] +[scope_enter i#15890] +[scope_enter i#15897] +[scope_enter lanetype#2018] +[visit_exp $inv_lanes_(`%X%`_shape{lanetype#2018, dim#2018, i#15890}((Jnn : Jnn <: lanetype), `%`_dim{i#15897}(M)), c*{c <- `c*`})] +[visit_exp `%X%`_shape{lanetype#2018, dim#2018, i#15890}((Jnn : Jnn <: lanetype), `%`_dim{i#15897}(M))] +[visit_exp lanetype#2018] +[visit_id lanetype#2018] not free +[visit_exp dim#2018] +[visit_id dim#2018] not free +[visit_exp i#15890] +[visit_id i#15890] not free +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#15897}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#15897}(M)] +[visit_exp i#15897] +[visit_id i#15897] not free +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[visit_id c*] not free +[visit_id c*] no dims +[visit_id dim#2018] not free +[visit_id i#15890] not free +[visit_id i#15897] not free +[visit_id lanetype#2018] not free +[scope_exit lanetype#2018] +[scope_exit i#15897] +[scope_exit i#15890] +[scope_exit dim#2018] +[scope_exit c*] +[visit_exp `c**`] +[visit_id c**] no dims +[visit_id c**] +[visit_exp `dim#2018*`] +[visit_id dim#2018*] no dims +[visit_id dim#2018*] +[visit_exp `i#15890*`] +[visit_id i#15890*] no dims +[visit_id i#15890*] +[visit_exp `i#15897*`] +[visit_id i#15897*] no dims +[visit_id i#15897*] +[visit_exp `lanetype#2018*`] +[visit_id lanetype#2018*] no dims +[visit_id lanetype#2018*] +[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#1928, dim#1928, i#15276}((Jnn : Jnn <: lanetype), `%`_dim{i#15283}(M)), v_1))] +[visit_exp c_1*{c_1 <- `c_1*`}] +[scope_enter c_1] +[visit_exp c_1] +[visit_id c_1] not free +[visit_id c_1] not free +[scope_exit c_1] +[visit_exp `c_1*`] +[visit_id c_1*] no dims +[visit_id c_1*] +[visit_exp $lanes_(`%X%`_shape{lanetype#1928, dim#1928, i#15276}((Jnn : Jnn <: lanetype), `%`_dim{i#15283}(M)), v_1)] +[visit_exp `%X%`_shape{lanetype#1928, dim#1928, i#15276}((Jnn : Jnn <: lanetype), `%`_dim{i#15283}(M))] +[visit_exp lanetype#1928] +[visit_id lanetype#1928] +[visit_exp dim#1928] +[visit_id dim#1928] +[visit_exp i#15276] +[visit_id i#15276] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#15283}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#15283}(M)] +[visit_exp i#15283] +[visit_id i#15283] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#1953, dim#1953, i#15362}((Jnn : Jnn <: lanetype), `%`_dim{i#15369}(M)), v_2))] +[visit_exp c_2*{c_2 <- `c_2*`}] +[scope_enter c_2] +[visit_exp c_2] +[visit_id c_2] not free +[visit_id c_2] not free +[scope_exit c_2] +[visit_exp `c_2*`] +[visit_id c_2*] no dims +[visit_id c_2*] +[visit_exp $lanes_(`%X%`_shape{lanetype#1953, dim#1953, i#15362}((Jnn : Jnn <: lanetype), `%`_dim{i#15369}(M)), v_2)] +[visit_exp `%X%`_shape{lanetype#1953, dim#1953, i#15362}((Jnn : Jnn <: lanetype), `%`_dim{i#15369}(M))] +[visit_exp lanetype#1953] +[visit_id lanetype#1953] +[visit_exp dim#1953] +[visit_id dim#1953] +[visit_exp i#15362] +[visit_id i#15362] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#15369}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#15369}(M)] +[visit_exp i#15369] +[visit_id i#15369] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_2] +[visit_id v_2] not free +[visit_exp (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape{lanetype#1978, dim#1978, i#15448}((Jnn : Jnn <: lanetype), `%`_dim{i#15455}(M)), v_3))] +[visit_exp c_3*{c_3 <- `c_3*`}] +[scope_enter c_3] +[visit_exp c_3] +[visit_id c_3] not free +[visit_id c_3] not free +[scope_exit c_3] +[visit_exp `c_3*`] +[visit_id c_3*] no dims +[visit_id c_3*] +[visit_exp $lanes_(`%X%`_shape{lanetype#1978, dim#1978, i#15448}((Jnn : Jnn <: lanetype), `%`_dim{i#15455}(M)), v_3)] +[visit_exp `%X%`_shape{lanetype#1978, dim#1978, i#15448}((Jnn : Jnn <: lanetype), `%`_dim{i#15455}(M))] +[visit_exp lanetype#1978] +[visit_id lanetype#1978] +[visit_exp dim#1978] +[visit_id dim#1978] +[visit_exp i#15448] +[visit_id i#15448] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#15455}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#15455}(M)] +[visit_exp i#15455] +[visit_id i#15455] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_3] +[visit_id v_3] not free +[visit_exp (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*`}))] +[visit_exp c*{c <- `c*`}*{`c*` <- `c**`}] +[scope_enter c*] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[visit_id c*] not free +[visit_id c*] no dims +[scope_exit c*] +[visit_exp `c**`] +[visit_id c**] not free +[visit_id c**] no dims +[visit_exp $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*`})] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2, c_3)*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}] +[scope_enter c_1] +[scope_enter c_2] +[scope_enter c_3] +[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2, c_3)] +[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp c_1] +[visit_id c_1] not free +[visit_exp c_2] +[visit_id c_2] not free +[visit_exp c_3] +[visit_id c_3] not free +[visit_id c_1] not free +[visit_id c_2] not free +[visit_id c_3] not free +[scope_exit c_3] +[scope_exit c_2] +[scope_exit c_1] +[visit_exp `c_1*`] +[visit_id c_1*] not free +[visit_id c_1*] no dims +[visit_exp `c_2*`] +[visit_id c_2*] not free +[visit_id c_2*] no dims +[visit_exp `c_3*`] +[visit_id c_3*] not free +[visit_id c_3*] no dims +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivternopnd_{lanetype#1916 : lanetype, dim#1916 : dim, i#15228 : nat, Jnn : Jnn, i#15235 : nat, 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))**, `dim#2018*` : dim*, `i#15890*` : nat*, `i#15897*` : nat*, `lanetype#2018*` : lanetype*, lanetype#1928 : lanetype, dim#1928 : dim, i#15276 : nat, i#15283 : nat, lanetype#1953 : lanetype, dim#1953 : dim, i#15362 : nat, i#15369 : nat, lanetype#1978 : lanetype, dim#1978 : dim, i#15448 : nat, i#15455 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#1928, dim#1928, i#15276}((Jnn : Jnn <: lanetype), `%`_dim{i#15283}(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#1953, dim#1953, i#15362}((Jnn : Jnn <: lanetype), `%`_dim{i#15369}(M))))*, `c_3*` : lane_($lanetype(`%X%`_shape{lanetype#1978, dim#1978, i#15448}((Jnn : Jnn <: lanetype), `%`_dim{i#15455}(M))))*}(`%X%`_shape{lanetype#1916, dim#1916, i#15228}((Jnn : Jnn <: lanetype), `%`_dim{i#15235}(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape{lanetype#2018, dim#2018, i#15890}((Jnn : Jnn <: lanetype), `%`_dim{i#15897}(M)), c*{c <- `c*`})*{`c*` <- `c**`, dim#2018 <- `dim#2018*`, i#15890 <- `i#15890*`, i#15897 <- `i#15897*`, lanetype#2018 <- `lanetype#2018*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#1928, dim#1928, i#15276}((Jnn : Jnn <: lanetype), `%`_dim{i#15283}(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#1953, dim#1953, i#15362}((Jnn : Jnn <: lanetype), `%`_dim{i#15369}(M)), v_2)) + -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape{lanetype#1978, dim#1978, i#15448}((Jnn : Jnn <: lanetype), `%`_dim{i#15455}(M)), v_3)) + -- if (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*`})) +[check_dims] Fnn M c c_1 c_2 c_3 dim#2042 dim#2054 dim#2078 dim#2102 dim#2135 i#15961 i#15968 i#16009 i#16016 i#16067 i#16074 i#16125 i#16132 i#16233 i#16240 lanetype#2042 lanetype#2054 lanetype#2078 lanetype#2102 lanetype#2135 v_1 v_2 v_3 +[visit_exp `%X%`_shape{lanetype#2042, dim#2042, i#15961}((Fnn : Fnn <: lanetype), `%`_dim{i#15968}(M))] +[visit_exp lanetype#2042] +[visit_id lanetype#2042] +[visit_exp dim#2042] +[visit_id dim#2042] +[visit_exp i#15961] +[visit_id i#15961] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#15968}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `%`_dim{i#15968}(M)] +[visit_exp i#15968] +[visit_id i#15968] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp v_3] +[visit_id v_3] +[visit_exp $inv_lanes_(`%X%`_shape{lanetype#2135, dim#2135, i#16233}((Fnn : Fnn <: lanetype), `%`_dim{i#16240}(M)), c*{c <- `c*`})*{`c*` <- `c**`, dim#2135 <- `dim#2135*`, i#16233 <- `i#16233*`, i#16240 <- `i#16240*`, lanetype#2135 <- `lanetype#2135*`}] +[scope_enter c*] +[scope_enter dim#2135] +[scope_enter i#16233] +[scope_enter i#16240] +[scope_enter lanetype#2135] +[visit_exp $inv_lanes_(`%X%`_shape{lanetype#2135, dim#2135, i#16233}((Fnn : Fnn <: lanetype), `%`_dim{i#16240}(M)), c*{c <- `c*`})] +[visit_exp `%X%`_shape{lanetype#2135, dim#2135, i#16233}((Fnn : Fnn <: lanetype), `%`_dim{i#16240}(M))] +[visit_exp lanetype#2135] +[visit_id lanetype#2135] not free +[visit_exp dim#2135] +[visit_id dim#2135] not free +[visit_exp i#16233] +[visit_id i#16233] not free +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#16240}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp `%`_dim{i#16240}(M)] +[visit_exp i#16240] +[visit_id i#16240] not free +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[visit_id c*] not free +[visit_id c*] no dims +[visit_id dim#2135] not free +[visit_id i#16233] not free +[visit_id i#16240] not free +[visit_id lanetype#2135] not free +[scope_exit lanetype#2135] +[scope_exit i#16240] +[scope_exit i#16233] +[scope_exit dim#2135] +[scope_exit c*] +[visit_exp `c**`] +[visit_id c**] no dims +[visit_id c**] +[visit_exp `dim#2135*`] +[visit_id dim#2135*] no dims +[visit_id dim#2135*] +[visit_exp `i#16233*`] +[visit_id i#16233*] no dims +[visit_id i#16233*] +[visit_exp `i#16240*`] +[visit_id i#16240*] no dims +[visit_id i#16240*] +[visit_exp `lanetype#2135*`] +[visit_id lanetype#2135*] no dims +[visit_id lanetype#2135*] +[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2054, dim#2054, i#16009}((Fnn : Fnn <: lanetype), `%`_dim{i#16016}(M)), v_1))] +[visit_exp c_1*{c_1 <- `c_1*`}] +[scope_enter c_1] +[visit_exp c_1] +[visit_id c_1] not free +[visit_id c_1] not free +[scope_exit c_1] +[visit_exp `c_1*`] +[visit_id c_1*] no dims +[visit_id c_1*] +[visit_exp $lanes_(`%X%`_shape{lanetype#2054, dim#2054, i#16009}((Fnn : Fnn <: lanetype), `%`_dim{i#16016}(M)), v_1)] +[visit_exp `%X%`_shape{lanetype#2054, dim#2054, i#16009}((Fnn : Fnn <: lanetype), `%`_dim{i#16016}(M))] +[visit_exp lanetype#2054] +[visit_id lanetype#2054] +[visit_exp dim#2054] +[visit_id dim#2054] +[visit_exp i#16009] +[visit_id i#16009] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#16016}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp `%`_dim{i#16016}(M)] +[visit_exp i#16016] +[visit_id i#16016] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#2078, dim#2078, i#16067}((Fnn : Fnn <: lanetype), `%`_dim{i#16074}(M)), v_2))] +[visit_exp c_2*{c_2 <- `c_2*`}] +[scope_enter c_2] +[visit_exp c_2] +[visit_id c_2] not free +[visit_id c_2] not free +[scope_exit c_2] +[visit_exp `c_2*`] +[visit_id c_2*] no dims +[visit_id c_2*] +[visit_exp $lanes_(`%X%`_shape{lanetype#2078, dim#2078, i#16067}((Fnn : Fnn <: lanetype), `%`_dim{i#16074}(M)), v_2)] +[visit_exp `%X%`_shape{lanetype#2078, dim#2078, i#16067}((Fnn : Fnn <: lanetype), `%`_dim{i#16074}(M))] +[visit_exp lanetype#2078] +[visit_id lanetype#2078] +[visit_exp dim#2078] +[visit_id dim#2078] +[visit_exp i#16067] +[visit_id i#16067] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#16074}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp `%`_dim{i#16074}(M)] +[visit_exp i#16074] +[visit_id i#16074] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_2] +[visit_id v_2] not free +[visit_exp (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape{lanetype#2102, dim#2102, i#16125}((Fnn : Fnn <: lanetype), `%`_dim{i#16132}(M)), v_3))] +[visit_exp c_3*{c_3 <- `c_3*`}] +[scope_enter c_3] +[visit_exp c_3] +[visit_id c_3] not free +[visit_id c_3] not free +[scope_exit c_3] +[visit_exp `c_3*`] +[visit_id c_3*] no dims +[visit_id c_3*] +[visit_exp $lanes_(`%X%`_shape{lanetype#2102, dim#2102, i#16125}((Fnn : Fnn <: lanetype), `%`_dim{i#16132}(M)), v_3)] +[visit_exp `%X%`_shape{lanetype#2102, dim#2102, i#16125}((Fnn : Fnn <: lanetype), `%`_dim{i#16132}(M))] +[visit_exp lanetype#2102] +[visit_id lanetype#2102] +[visit_exp dim#2102] +[visit_id dim#2102] +[visit_exp i#16125] +[visit_id i#16125] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#16132}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp `%`_dim{i#16132}(M)] +[visit_exp i#16132] +[visit_id i#16132] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_3] +[visit_id v_3] not free +[visit_exp (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*`}))] +[visit_exp c*{c <- `c*`}*{`c*` <- `c**`}] +[scope_enter c*] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[visit_id c*] not free +[visit_id c*] no dims +[scope_exit c*] +[visit_exp `c**`] +[visit_id c**] not free +[visit_id c**] no dims +[visit_exp $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*`})] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2, c_3)*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}] +[scope_enter c_1] +[scope_enter c_2] +[scope_enter c_3] +[visit_exp $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2, c_3)] +[visit_exp $sizenn((Fnn : Fnn <: numtype))] +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp c_1] +[visit_id c_1] not free +[visit_exp c_2] +[visit_id c_2] not free +[visit_exp c_3] +[visit_id c_3] not free +[visit_id c_1] not free +[visit_id c_2] not free +[visit_id c_3] not free +[scope_exit c_3] +[scope_exit c_2] +[scope_exit c_1] +[visit_exp `c_1*`] +[visit_id c_1*] not free +[visit_id c_1*] no dims +[visit_exp `c_2*`] +[visit_id c_2*] not free +[visit_id c_2*] no dims +[visit_exp `c_3*`] +[visit_id c_3*] not free +[visit_id c_3*] no dims +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvternop_{lanetype#2042 : lanetype, dim#2042 : dim, i#15961 : nat, Fnn : Fnn, i#15968 : nat, 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))**, `dim#2135*` : dim*, `i#16233*` : nat*, `i#16240*` : nat*, `lanetype#2135*` : lanetype*, lanetype#2054 : lanetype, dim#2054 : dim, i#16009 : nat, i#16016 : nat, lanetype#2078 : lanetype, dim#2078 : dim, i#16067 : nat, i#16074 : nat, lanetype#2102 : lanetype, dim#2102 : dim, i#16125 : nat, i#16132 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#2054, dim#2054, i#16009}((Fnn : Fnn <: lanetype), `%`_dim{i#16016}(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#2078, dim#2078, i#16067}((Fnn : Fnn <: lanetype), `%`_dim{i#16074}(M))))*, `c_3*` : lane_($lanetype(`%X%`_shape{lanetype#2102, dim#2102, i#16125}((Fnn : Fnn <: lanetype), `%`_dim{i#16132}(M))))*}(`%X%`_shape{lanetype#2042, dim#2042, i#15961}((Fnn : Fnn <: lanetype), `%`_dim{i#15968}(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape{lanetype#2135, dim#2135, i#16233}((Fnn : Fnn <: lanetype), `%`_dim{i#16240}(M)), c*{c <- `c*`})*{`c*` <- `c**`, dim#2135 <- `dim#2135*`, i#16233 <- `i#16233*`, i#16240 <- `i#16240*`, lanetype#2135 <- `lanetype#2135*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2054, dim#2054, i#16009}((Fnn : Fnn <: lanetype), `%`_dim{i#16016}(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#2078, dim#2078, i#16067}((Fnn : Fnn <: lanetype), `%`_dim{i#16074}(M)), v_2)) + -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape{lanetype#2102, dim#2102, i#16125}((Fnn : Fnn <: lanetype), `%`_dim{i#16132}(M)), v_3)) + -- if (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*`})) +[check_dims] Jnn M c c_1 c_2 dim#2158 dim#2170 dim#2195 dim#2222 i#16278 i#16285 i#16314 i#16321 i#16400 i#16407 i#16555 i#16556 i#16597 i#16604 lanetype#2158 lanetype#2170 lanetype#2195 lanetype#2222 v_1 v_2 +[visit_exp `%X%`_shape{lanetype#2158, dim#2158, i#16278}((Jnn : Jnn <: lanetype), `%`_dim{i#16285}(M))] +[visit_exp lanetype#2158] +[visit_id lanetype#2158] +[visit_exp dim#2158] +[visit_id dim#2158] +[visit_exp i#16278] +[visit_id i#16278] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#16285}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp `%`_dim{i#16285}(M)] +[visit_exp i#16285] +[visit_id i#16285] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $inv_lanes_(`%X%`_shape{lanetype#2222, dim#2222, i#16597}((Jnn : Jnn <: lanetype), `%`_dim{i#16604}(M)), c*{c <- `c*`})] +[visit_exp `%X%`_shape{lanetype#2222, dim#2222, i#16597}((Jnn : Jnn <: lanetype), `%`_dim{i#16604}(M))] +[visit_exp lanetype#2222] +[visit_id lanetype#2222] +[visit_exp dim#2222] +[visit_id dim#2222] +[visit_exp i#16597] +[visit_id i#16597] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#16604}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#16604}(M)] +[visit_exp i#16604] +[visit_id i#16604] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] no dims +[visit_id c*] +[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2170, dim#2170, i#16314}((Jnn : Jnn <: lanetype), `%`_dim{i#16321}(M)), v_1))] +[visit_exp c_1*{c_1 <- `c_1*`}] +[scope_enter c_1] +[visit_exp c_1] +[visit_id c_1] not free +[visit_id c_1] not free +[scope_exit c_1] +[visit_exp `c_1*`] +[visit_id c_1*] no dims +[visit_id c_1*] +[visit_exp $lanes_(`%X%`_shape{lanetype#2170, dim#2170, i#16314}((Jnn : Jnn <: lanetype), `%`_dim{i#16321}(M)), v_1)] +[visit_exp `%X%`_shape{lanetype#2170, dim#2170, i#16314}((Jnn : Jnn <: lanetype), `%`_dim{i#16321}(M))] +[visit_exp lanetype#2170] +[visit_id lanetype#2170] +[visit_exp dim#2170] +[visit_id dim#2170] +[visit_exp i#16314] +[visit_id i#16314] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#16321}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#16321}(M)] +[visit_exp i#16321] +[visit_id i#16321] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#2195, dim#2195, i#16400}((Jnn : Jnn <: lanetype), `%`_dim{i#16407}(M)), v_2))] +[visit_exp c_2*{c_2 <- `c_2*`}] +[scope_enter c_2] +[visit_exp c_2] +[visit_id c_2] not free +[visit_id c_2] not free +[scope_exit c_2] +[visit_exp `c_2*`] +[visit_id c_2*] no dims +[visit_id c_2*] +[visit_exp $lanes_(`%X%`_shape{lanetype#2195, dim#2195, i#16400}((Jnn : Jnn <: lanetype), `%`_dim{i#16407}(M)), v_2)] +[visit_exp `%X%`_shape{lanetype#2195, dim#2195, i#16400}((Jnn : Jnn <: lanetype), `%`_dim{i#16407}(M))] +[visit_exp lanetype#2195] +[visit_id lanetype#2195] +[visit_exp dim#2195] +[visit_id dim#2195] +[visit_exp i#16400] +[visit_id i#16400] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#16407}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#16407}(M)] +[visit_exp i#16407] +[visit_id i#16407] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_2] +[visit_id v_2] not free +[visit_exp (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, `%`_iN{i#16556}($f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)!`%`_u32{i#16555}.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`, i#16555 <- `i#16555*`, i#16556 <- `i#16556*`})] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[visit_exp $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, `%`_iN{i#16556}($f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)!`%`_u32{i#16555}.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`, i#16555 <- `i#16555*`, i#16556 <- `i#16556*`}] +[scope_enter c_1] +[scope_enter c_2] +[scope_enter i#16555] +[scope_enter i#16556] +[visit_exp $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, `%`_iN{i#16556}($f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)!`%`_u32{i#16555}.0))] +[visit_exp 1] +[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_iN{i#16556}($f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)!`%`_u32{i#16555}.0)] +[visit_exp i#16556] +[visit_id i#16556] not free +[visit_exp ($f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)!`%`_u32{i#16555}.0)] +[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)!`%`_u32{i#16555}.0] +[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)!`%`_u32{i#16555}] +[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)] +[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp c_1] +[visit_id c_1] not free +[visit_exp c_2] +[visit_id c_2] not free +[visit_exp i#16555] +[visit_id i#16555] not free +[visit_id c_1] not free +[visit_id c_2] not free +[visit_id i#16555] not free +[visit_id i#16556] not free +[scope_exit i#16556] +[scope_exit i#16555] +[scope_exit c_2] +[scope_exit c_1] +[visit_exp `c_1*`] +[visit_id c_1*] not free +[visit_id c_1*] no dims +[visit_exp `c_2*`] +[visit_id c_2*] not free +[visit_id c_2*] no dims +[visit_exp `i#16555*`] +[visit_id i#16555*] no dims +[visit_id i#16555*] +[visit_exp `i#16556*`] +[visit_id i#16556*] no dims +[visit_id i#16556*] +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelop_{lanetype#2158 : lanetype, dim#2158 : dim, i#16278 : nat, Jnn : Jnn, i#16285 : nat, M : M, def $f_(N : N, iN : iN(N), iN : iN(N)) : u32, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#2222 : lanetype, dim#2222 : dim, i#16597 : nat, i#16604 : nat, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, lanetype#2170 : lanetype, dim#2170 : dim, i#16314 : nat, i#16321 : nat, lanetype#2195 : lanetype, dim#2195 : dim, i#16400 : nat, i#16407 : nat, `i#16555*` : nat*, `i#16556*` : nat*, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#2170, dim#2170, i#16314}((Jnn : Jnn <: lanetype), `%`_dim{i#16321}(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#2195, dim#2195, i#16400}((Jnn : Jnn <: lanetype), `%`_dim{i#16407}(M))))*}(`%X%`_shape{lanetype#2158, dim#2158, i#16278}((Jnn : Jnn <: lanetype), `%`_dim{i#16285}(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape{lanetype#2222, dim#2222, i#16597}((Jnn : Jnn <: lanetype), `%`_dim{i#16604}(M)), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2170, dim#2170, i#16314}((Jnn : Jnn <: lanetype), `%`_dim{i#16321}(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#2195, dim#2195, i#16400}((Jnn : Jnn <: lanetype), `%`_dim{i#16407}(M)), v_2)) + -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, `%`_iN{i#16556}($f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)!`%`_u32{i#16555}.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`, i#16555 <- `i#16555*`, i#16556 <- `i#16556*`}) +[check_dims] Jnn M c c_1 c_2 dim#2246 dim#2258 dim#2283 dim#2310 i#16670 i#16677 i#16706 i#16713 i#16792 i#16799 i#16947 i#16948 i#16989 i#16996 lanetype#2246 lanetype#2258 lanetype#2283 lanetype#2310 sx v_1 v_2 +[visit_exp `%X%`_shape{lanetype#2246, dim#2246, i#16670}((Jnn : Jnn <: lanetype), `%`_dim{i#16677}(M))] +[visit_exp lanetype#2246] +[visit_id lanetype#2246] +[visit_exp dim#2246] +[visit_id dim#2246] +[visit_exp i#16670] +[visit_id i#16670] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#16677}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp `%`_dim{i#16677}(M)] +[visit_exp i#16677] +[visit_id i#16677] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp sx] +[visit_id sx] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $inv_lanes_(`%X%`_shape{lanetype#2310, dim#2310, i#16989}((Jnn : Jnn <: lanetype), `%`_dim{i#16996}(M)), c*{c <- `c*`})] +[visit_exp `%X%`_shape{lanetype#2310, dim#2310, i#16989}((Jnn : Jnn <: lanetype), `%`_dim{i#16996}(M))] +[visit_exp lanetype#2310] +[visit_id lanetype#2310] +[visit_exp dim#2310] +[visit_id dim#2310] +[visit_exp i#16989] +[visit_id i#16989] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#16996}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#16996}(M)] +[visit_exp i#16996] +[visit_id i#16996] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] no dims +[visit_id c*] +[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2258, dim#2258, i#16706}((Jnn : Jnn <: lanetype), `%`_dim{i#16713}(M)), v_1))] +[visit_exp c_1*{c_1 <- `c_1*`}] +[scope_enter c_1] +[visit_exp c_1] +[visit_id c_1] not free +[visit_id c_1] not free +[scope_exit c_1] +[visit_exp `c_1*`] +[visit_id c_1*] no dims +[visit_id c_1*] +[visit_exp $lanes_(`%X%`_shape{lanetype#2258, dim#2258, i#16706}((Jnn : Jnn <: lanetype), `%`_dim{i#16713}(M)), v_1)] +[visit_exp `%X%`_shape{lanetype#2258, dim#2258, i#16706}((Jnn : Jnn <: lanetype), `%`_dim{i#16713}(M))] +[visit_exp lanetype#2258] +[visit_id lanetype#2258] +[visit_exp dim#2258] +[visit_id dim#2258] +[visit_exp i#16706] +[visit_id i#16706] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#16713}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#16713}(M)] +[visit_exp i#16713] +[visit_id i#16713] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#2283, dim#2283, i#16792}((Jnn : Jnn <: lanetype), `%`_dim{i#16799}(M)), v_2))] +[visit_exp c_2*{c_2 <- `c_2*`}] +[scope_enter c_2] +[visit_exp c_2] +[visit_id c_2] not free +[visit_id c_2] not free +[scope_exit c_2] +[visit_exp `c_2*`] +[visit_id c_2*] no dims +[visit_id c_2*] +[visit_exp $lanes_(`%X%`_shape{lanetype#2283, dim#2283, i#16792}((Jnn : Jnn <: lanetype), `%`_dim{i#16799}(M)), v_2)] +[visit_exp `%X%`_shape{lanetype#2283, dim#2283, i#16792}((Jnn : Jnn <: lanetype), `%`_dim{i#16799}(M))] +[visit_exp lanetype#2283] +[visit_id lanetype#2283] +[visit_exp dim#2283] +[visit_id dim#2283] +[visit_exp i#16792] +[visit_id i#16792] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#16799}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#16799}(M)] +[visit_exp i#16799] +[visit_id i#16799] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_2] +[visit_id v_2] not free +[visit_exp (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, `%`_iN{i#16948}($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)!`%`_u32{i#16947}.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`, i#16947 <- `i#16947*`, i#16948 <- `i#16948*`})] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[visit_exp $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, `%`_iN{i#16948}($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)!`%`_u32{i#16947}.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`, i#16947 <- `i#16947*`, i#16948 <- `i#16948*`}] +[scope_enter c_1] +[scope_enter c_2] +[scope_enter i#16947] +[scope_enter i#16948] +[visit_exp $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, `%`_iN{i#16948}($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)!`%`_u32{i#16947}.0))] +[visit_exp 1] +[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_iN{i#16948}($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)!`%`_u32{i#16947}.0)] +[visit_exp i#16948] +[visit_id i#16948] not free +[visit_exp ($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)!`%`_u32{i#16947}.0)] +[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)!`%`_u32{i#16947}.0] +[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)!`%`_u32{i#16947}] +[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)] +[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp sx] +[visit_id sx] not free +[visit_exp c_1] +[visit_id c_1] not free +[visit_exp c_2] +[visit_id c_2] not free +[visit_exp i#16947] +[visit_id i#16947] not free +[visit_id c_1] not free +[visit_id c_2] not free +[visit_id i#16947] not free +[visit_id i#16948] not free +[scope_exit i#16948] +[scope_exit i#16947] +[scope_exit c_2] +[scope_exit c_1] +[visit_exp `c_1*`] +[visit_id c_1*] not free +[visit_id c_1*] no dims +[visit_exp `c_2*`] +[visit_id c_2*] not free +[visit_id c_2*] no dims +[visit_exp `i#16947*`] +[visit_id i#16947*] no dims +[visit_id i#16947*] +[visit_exp `i#16948*`] +[visit_id i#16948*] no dims +[visit_id i#16948*] +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivrelopsx_{lanetype#2246 : lanetype, dim#2246 : dim, i#16670 : nat, Jnn : Jnn, i#16677 : nat, 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), lanetype#2310 : lanetype, dim#2310 : dim, i#16989 : nat, i#16996 : nat, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, lanetype#2258 : lanetype, dim#2258 : dim, i#16706 : nat, i#16713 : nat, lanetype#2283 : lanetype, dim#2283 : dim, i#16792 : nat, i#16799 : nat, `i#16947*` : nat*, `i#16948*` : nat*, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#2258, dim#2258, i#16706}((Jnn : Jnn <: lanetype), `%`_dim{i#16713}(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#2283, dim#2283, i#16792}((Jnn : Jnn <: lanetype), `%`_dim{i#16799}(M))))*}(`%X%`_shape{lanetype#2246, dim#2246, i#16670}((Jnn : Jnn <: lanetype), `%`_dim{i#16677}(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape{lanetype#2310, dim#2310, i#16989}((Jnn : Jnn <: lanetype), `%`_dim{i#16996}(M)), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2258, dim#2258, i#16706}((Jnn : Jnn <: lanetype), `%`_dim{i#16713}(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#2283, dim#2283, i#16792}((Jnn : Jnn <: lanetype), `%`_dim{i#16799}(M)), v_2)) + -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, `%`_iN{i#16948}($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)!`%`_u32{i#16947}.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`, i#16947 <- `i#16947*`, i#16948 <- `i#16948*`}) +[check_dims] Fnn Inn M c c_1 c_2 dim#2334 dim#2346 dim#2370 dim#2396 i#17062 i#17069 i#17098 i#17105 i#17156 i#17163 i#17259 i#17260 i#17301 i#17308 i#17404 i#17405 lanetype#2334 lanetype#2346 lanetype#2370 lanetype#2396 v_1 v_2 +[visit_exp `%X%`_shape{lanetype#2334, dim#2334, i#17062}((Fnn : Fnn <: lanetype), `%`_dim{i#17069}(M))] +[visit_exp lanetype#2334] +[visit_id lanetype#2334] +[visit_exp dim#2334] +[visit_id dim#2334] +[visit_exp i#17062] +[visit_id i#17062] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#17069}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `%`_dim{i#17069}(M)] +[visit_exp i#17069] +[visit_id i#17069] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $inv_lanes_(`%X%`_shape{lanetype#2396, dim#2396, i#17301}((Inn : Inn <: lanetype), `%`_dim{i#17308}(M)), `%`_lane_{i#17405}(c!`%`_iN{i#17404}.0)*{c <- `c*`, i#17404 <- `i#17404*`, i#17405 <- `i#17405*`})] +[visit_exp `%X%`_shape{lanetype#2396, dim#2396, i#17301}((Inn : Inn <: lanetype), `%`_dim{i#17308}(M))] +[visit_exp lanetype#2396] +[visit_id lanetype#2396] +[visit_exp dim#2396] +[visit_id dim#2396] +[visit_exp i#17301] +[visit_id i#17301] +[visit_exp ((Inn : Inn <: lanetype), `%`_dim{i#17308}(M))] +[visit_exp (Inn : Inn <: lanetype)] +[visit_exp Inn] +[visit_id Inn] +[visit_exp `%`_dim{i#17308}(M)] +[visit_exp i#17308] +[visit_id i#17308] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp `%`_lane_{i#17405}(c!`%`_iN{i#17404}.0)*{c <- `c*`, i#17404 <- `i#17404*`, i#17405 <- `i#17405*`}] +[scope_enter c] +[scope_enter i#17404] +[scope_enter i#17405] +[visit_exp `%`_lane_{i#17405}(c!`%`_iN{i#17404}.0)] +[visit_exp i#17405] +[visit_id i#17405] not free +[visit_exp (c!`%`_iN{i#17404}.0)] +[visit_exp c!`%`_iN{i#17404}.0] +[visit_exp c!`%`_iN{i#17404}] +[visit_exp c] +[visit_id c] not free +[visit_exp i#17404] +[visit_id i#17404] not free +[visit_id c] not free +[visit_id i#17404] not free +[visit_id i#17405] not free +[scope_exit i#17405] +[scope_exit i#17404] +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] no dims +[visit_id c*] +[visit_exp `i#17404*`] +[visit_id i#17404*] no dims +[visit_id i#17404*] +[visit_exp `i#17405*`] +[visit_id i#17405*] no dims +[visit_id i#17405*] +[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2346, dim#2346, i#17098}((Fnn : Fnn <: lanetype), `%`_dim{i#17105}(M)), v_1))] +[visit_exp c_1*{c_1 <- `c_1*`}] +[scope_enter c_1] +[visit_exp c_1] +[visit_id c_1] not free +[visit_id c_1] not free +[scope_exit c_1] +[visit_exp `c_1*`] +[visit_id c_1*] no dims +[visit_id c_1*] +[visit_exp $lanes_(`%X%`_shape{lanetype#2346, dim#2346, i#17098}((Fnn : Fnn <: lanetype), `%`_dim{i#17105}(M)), v_1)] +[visit_exp `%X%`_shape{lanetype#2346, dim#2346, i#17098}((Fnn : Fnn <: lanetype), `%`_dim{i#17105}(M))] +[visit_exp lanetype#2346] +[visit_id lanetype#2346] +[visit_exp dim#2346] +[visit_id dim#2346] +[visit_exp i#17098] +[visit_id i#17098] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#17105}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp `%`_dim{i#17105}(M)] +[visit_exp i#17105] +[visit_id i#17105] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#2370, dim#2370, i#17156}((Fnn : Fnn <: lanetype), `%`_dim{i#17163}(M)), v_2))] +[visit_exp c_2*{c_2 <- `c_2*`}] +[scope_enter c_2] +[visit_exp c_2] +[visit_id c_2] not free +[visit_id c_2] not free +[scope_exit c_2] +[visit_exp `c_2*`] +[visit_id c_2*] no dims +[visit_id c_2*] +[visit_exp $lanes_(`%X%`_shape{lanetype#2370, dim#2370, i#17156}((Fnn : Fnn <: lanetype), `%`_dim{i#17163}(M)), v_2)] +[visit_exp `%X%`_shape{lanetype#2370, dim#2370, i#17156}((Fnn : Fnn <: lanetype), `%`_dim{i#17163}(M))] +[visit_exp lanetype#2370] +[visit_id lanetype#2370] +[visit_exp dim#2370] +[visit_id dim#2370] +[visit_exp i#17156] +[visit_id i#17156] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#17163}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp `%`_dim{i#17163}(M)] +[visit_exp i#17163] +[visit_id i#17163] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_2] +[visit_id v_2] not free +[visit_exp (c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), `S`_sx, `%`_iN{i#17260}($f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)!`%`_u32{i#17259}.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`, i#17259 <- `i#17259*`, i#17260 <- `i#17260*`})] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[visit_exp $extend__(1, $sizenn((Fnn : Fnn <: numtype)), `S`_sx, `%`_iN{i#17260}($f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)!`%`_u32{i#17259}.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`, i#17259 <- `i#17259*`, i#17260 <- `i#17260*`}] +[scope_enter c_1] +[scope_enter c_2] +[scope_enter i#17259] +[scope_enter i#17260] +[visit_exp $extend__(1, $sizenn((Fnn : Fnn <: numtype)), `S`_sx, `%`_iN{i#17260}($f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)!`%`_u32{i#17259}.0))] +[visit_exp 1] +[visit_exp $sizenn((Fnn : Fnn <: numtype))] +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_iN{i#17260}($f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)!`%`_u32{i#17259}.0)] +[visit_exp i#17260] +[visit_id i#17260] not free +[visit_exp ($f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)!`%`_u32{i#17259}.0)] +[visit_exp $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)!`%`_u32{i#17259}.0] +[visit_exp $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)!`%`_u32{i#17259}] +[visit_exp $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)] +[visit_exp $sizenn((Fnn : Fnn <: numtype))] +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp c_1] +[visit_id c_1] not free +[visit_exp c_2] +[visit_id c_2] not free +[visit_exp i#17259] +[visit_id i#17259] not free +[visit_id c_1] not free +[visit_id c_2] not free +[visit_id i#17259] not free +[visit_id i#17260] not free +[scope_exit i#17260] +[scope_exit i#17259] +[scope_exit c_2] +[scope_exit c_1] +[visit_exp `c_1*`] +[visit_id c_1*] not free +[visit_id c_1*] no dims +[visit_exp `c_2*`] +[visit_id c_2*] not free +[visit_id c_2*] no dims +[visit_exp `i#17259*`] +[visit_id i#17259*] no dims +[visit_id i#17259*] +[visit_exp `i#17260*`] +[visit_id i#17260*] no dims +[visit_id i#17260*] +[visit_exp ($isize(Inn) = $fsize(Fnn))] +[visit_exp $isize(Inn)] +[visit_exp Inn] +[visit_id Inn] not free +[visit_exp $fsize(Fnn)] +[visit_exp Fnn] +[visit_id Fnn] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $fvrelop_{lanetype#2334 : lanetype, dim#2334 : dim, i#17062 : nat, Fnn : Fnn, i#17069 : nat, M : M, def $f_(N : N, fN : fN(N), fN : fN(N)) : u32, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#2396 : lanetype, dim#2396 : dim, i#17301 : nat, Inn : Inn, i#17308 : nat, `c*` : iN($sizenn((Fnn : Fnn <: numtype)))*, `i#17404*` : nat*, `i#17405*` : nat*, lanetype#2346 : lanetype, dim#2346 : dim, i#17098 : nat, i#17105 : nat, lanetype#2370 : lanetype, dim#2370 : dim, i#17156 : nat, i#17163 : nat, `i#17259*` : nat*, `i#17260*` : nat*, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#2346, dim#2346, i#17098}((Fnn : Fnn <: lanetype), `%`_dim{i#17105}(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#2370, dim#2370, i#17156}((Fnn : Fnn <: lanetype), `%`_dim{i#17163}(M))))*}(`%X%`_shape{lanetype#2334, dim#2334, i#17062}((Fnn : Fnn <: lanetype), `%`_dim{i#17069}(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape{lanetype#2396, dim#2396, i#17301}((Inn : Inn <: lanetype), `%`_dim{i#17308}(M)), `%`_lane_{i#17405}(c!`%`_iN{i#17404}.0)*{c <- `c*`, i#17404 <- `i#17404*`, i#17405 <- `i#17405*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2346, dim#2346, i#17098}((Fnn : Fnn <: lanetype), `%`_dim{i#17105}(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#2370, dim#2370, i#17156}((Fnn : Fnn <: lanetype), `%`_dim{i#17163}(M)), v_2)) + -- if (c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), `S`_sx, `%`_iN{i#17260}($f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)!`%`_u32{i#17259}.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`, i#17259 <- `i#17259*`, i#17260 <- `i#17260*`}) + -- if ($isize(Inn) = $fsize(Fnn)) +[check_dims] Jnn M c c_1 dim#2421 dim#2433 dim#2459 i i#17411 i#17418 i#17447 i#17454 i#17593 i#17600 lanetype#2421 lanetype#2433 lanetype#2459 v_1 +[visit_exp `%X%`_shape{lanetype#2421, dim#2421, i#17411}((Jnn : Jnn <: lanetype), `%`_dim{i#17418}(M))] +[visit_exp lanetype#2421] +[visit_id lanetype#2421] +[visit_exp dim#2421] +[visit_id dim#2421] +[visit_exp i#17411] +[visit_id i#17411] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#17418}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp `%`_dim{i#17418}(M)] +[visit_exp i#17418] +[visit_id i#17418] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp v_1] +[visit_id v_1] +[visit_exp i] +[visit_id i] +[visit_exp $inv_lanes_(`%X%`_shape{lanetype#2459, dim#2459, i#17593}((Jnn : Jnn <: lanetype), `%`_dim{i#17600}(M)), c*{c <- `c*`})] +[visit_exp `%X%`_shape{lanetype#2459, dim#2459, i#17593}((Jnn : Jnn <: lanetype), `%`_dim{i#17600}(M))] +[visit_exp lanetype#2459] +[visit_id lanetype#2459] +[visit_exp dim#2459] +[visit_id dim#2459] +[visit_exp i#17593] +[visit_id i#17593] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#17600}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#17600}(M)] +[visit_exp i#17600] +[visit_id i#17600] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] no dims +[visit_id c*] +[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2433, dim#2433, i#17447}((Jnn : Jnn <: lanetype), `%`_dim{i#17454}(M)), v_1))] +[visit_exp c_1*{c_1 <- `c_1*`}] +[scope_enter c_1] +[visit_exp c_1] +[visit_id c_1] not free +[visit_id c_1] not free +[scope_exit c_1] +[visit_exp `c_1*`] +[visit_id c_1*] no dims +[visit_id c_1*] +[visit_exp $lanes_(`%X%`_shape{lanetype#2433, dim#2433, i#17447}((Jnn : Jnn <: lanetype), `%`_dim{i#17454}(M)), v_1)] +[visit_exp `%X%`_shape{lanetype#2433, dim#2433, i#17447}((Jnn : Jnn <: lanetype), `%`_dim{i#17454}(M))] +[visit_exp lanetype#2433] +[visit_id lanetype#2433] +[visit_exp dim#2433] +[visit_id dim#2433] +[visit_exp i#17447] +[visit_id i#17447] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#17454}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#17454}(M)] +[visit_exp i#17454] +[visit_id i#17454] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, i)*{c_1 <- `c_1*`})] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, i)*{c_1 <- `c_1*`}] +[scope_enter c_1] +[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, i)] +[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp c_1] +[visit_id c_1] not free +[visit_exp i] +[visit_id i] not free +[visit_id c_1] not free +[scope_exit c_1] +[visit_exp `c_1*`] +[visit_id c_1*] not free +[visit_id c_1*] no dims +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftop_{lanetype#2421 : lanetype, dim#2421 : dim, i#17411 : nat, Jnn : Jnn, i#17418 : nat, M : M, def $f_(N : N, iN : iN(N), u32 : u32) : iN(N), v_1 : vec_(`V128`_Vnn), i : u32, lanetype#2459 : lanetype, dim#2459 : dim, i#17593 : nat, i#17600 : nat, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, lanetype#2433 : lanetype, dim#2433 : dim, i#17447 : nat, i#17454 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#2433, dim#2433, i#17447}((Jnn : Jnn <: lanetype), `%`_dim{i#17454}(M))))*}(`%X%`_shape{lanetype#2421, dim#2421, i#17411}((Jnn : Jnn <: lanetype), `%`_dim{i#17418}(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape{lanetype#2459, dim#2459, i#17593}((Jnn : Jnn <: lanetype), `%`_dim{i#17600}(M)), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2433, dim#2433, i#17447}((Jnn : Jnn <: lanetype), `%`_dim{i#17454}(M)), v_1)) + -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, i)*{c_1 <- `c_1*`}) +[check_dims] Jnn M c c_1 dim#2483 dim#2495 dim#2521 i i#17666 i#17673 i#17702 i#17709 i#17848 i#17855 lanetype#2483 lanetype#2495 lanetype#2521 sx v_1 +[visit_exp `%X%`_shape{lanetype#2483, dim#2483, i#17666}((Jnn : Jnn <: lanetype), `%`_dim{i#17673}(M))] +[visit_exp lanetype#2483] +[visit_id lanetype#2483] +[visit_exp dim#2483] +[visit_id dim#2483] +[visit_exp i#17666] +[visit_id i#17666] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#17673}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp `%`_dim{i#17673}(M)] +[visit_exp i#17673] +[visit_id i#17673] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp sx] +[visit_id sx] +[visit_exp v_1] +[visit_id v_1] +[visit_exp i] +[visit_id i] +[visit_exp $inv_lanes_(`%X%`_shape{lanetype#2521, dim#2521, i#17848}((Jnn : Jnn <: lanetype), `%`_dim{i#17855}(M)), c*{c <- `c*`})] +[visit_exp `%X%`_shape{lanetype#2521, dim#2521, i#17848}((Jnn : Jnn <: lanetype), `%`_dim{i#17855}(M))] +[visit_exp lanetype#2521] +[visit_id lanetype#2521] +[visit_exp dim#2521] +[visit_id dim#2521] +[visit_exp i#17848] +[visit_id i#17848] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#17855}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#17855}(M)] +[visit_exp i#17855] +[visit_id i#17855] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] no dims +[visit_id c*] +[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2495, dim#2495, i#17702}((Jnn : Jnn <: lanetype), `%`_dim{i#17709}(M)), v_1))] +[visit_exp c_1*{c_1 <- `c_1*`}] +[scope_enter c_1] +[visit_exp c_1] +[visit_id c_1] not free +[visit_id c_1] not free +[scope_exit c_1] +[visit_exp `c_1*`] +[visit_id c_1*] no dims +[visit_id c_1*] +[visit_exp $lanes_(`%X%`_shape{lanetype#2495, dim#2495, i#17702}((Jnn : Jnn <: lanetype), `%`_dim{i#17709}(M)), v_1)] +[visit_exp `%X%`_shape{lanetype#2495, dim#2495, i#17702}((Jnn : Jnn <: lanetype), `%`_dim{i#17709}(M))] +[visit_exp lanetype#2495] +[visit_id lanetype#2495] +[visit_exp dim#2495] +[visit_id dim#2495] +[visit_exp i#17702] +[visit_id i#17702] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#17709}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#17709}(M)] +[visit_exp i#17709] +[visit_id i#17709] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, i)*{c_1 <- `c_1*`})] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, i)*{c_1 <- `c_1*`}] +[scope_enter c_1] +[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, i)] +[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp sx] +[visit_id sx] not free +[visit_exp c_1] +[visit_id c_1] not free +[visit_exp i] +[visit_id i] not free +[visit_id c_1] not free +[scope_exit c_1] +[visit_exp `c_1*`] +[visit_id c_1*] not free +[visit_id c_1*] no dims +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshiftopsx_{lanetype#2483 : lanetype, dim#2483 : dim, i#17666 : nat, Jnn : Jnn, i#17673 : nat, M : M, def $f_(N : N, sx : sx, iN : iN(N), u32 : u32) : iN(N), sx : sx, v_1 : vec_(`V128`_Vnn), i : u32, lanetype#2521 : lanetype, dim#2521 : dim, i#17848 : nat, i#17855 : nat, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, lanetype#2495 : lanetype, dim#2495 : dim, i#17702 : nat, i#17709 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#2495, dim#2495, i#17702}((Jnn : Jnn <: lanetype), `%`_dim{i#17709}(M))))*}(`%X%`_shape{lanetype#2483, dim#2483, i#17666}((Jnn : Jnn <: lanetype), `%`_dim{i#17673}(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape{lanetype#2521, dim#2521, i#17848}((Jnn : Jnn <: lanetype), `%`_dim{i#17855}(M)), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2495, dim#2495, i#17702}((Jnn : Jnn <: lanetype), `%`_dim{i#17709}(M)), v_1)) + -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, i)*{c_1 <- `c_1*`}) +[check_dims] Jnn M c c_1 dim#2545 dim#2557 i#17921 i#17928 i#17945 i#17952 i#18238 i#18256 i#18257 i#18272 lanetype#2545 lanetype#2557 v_1 +[visit_exp `%X%`_shape{lanetype#2545, dim#2545, i#17921}((Jnn : Jnn <: lanetype), `%`_dim{i#17928}(M))] +[visit_exp lanetype#2545] +[visit_id lanetype#2545] +[visit_exp dim#2545] +[visit_id dim#2545] +[visit_exp i#17921] +[visit_id i#17921] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#17928}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp `%`_dim{i#17928}(M)] +[visit_exp i#17928] +[visit_id i#17928] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp v_1] +[visit_id v_1] +[visit_exp $irev_(32, c)] +[visit_exp 32] +[visit_exp c] +[visit_id c] +[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2557, dim#2557, i#17945}((Jnn : Jnn <: lanetype), `%`_dim{i#17952}(M)), v_1))] +[visit_exp c_1*{c_1 <- `c_1*`}] +[scope_enter c_1] +[visit_exp c_1] +[visit_id c_1] not free +[visit_id c_1] not free +[scope_exit c_1] +[visit_exp `c_1*`] +[visit_id c_1*] no dims +[visit_id c_1*] +[visit_exp $lanes_(`%X%`_shape{lanetype#2557, dim#2557, i#17945}((Jnn : Jnn <: lanetype), `%`_dim{i#17952}(M)), v_1)] +[visit_exp `%X%`_shape{lanetype#2557, dim#2557, i#17945}((Jnn : Jnn <: lanetype), `%`_dim{i#17952}(M))] +[visit_exp lanetype#2557] +[visit_id lanetype#2557] +[visit_exp dim#2557] +[visit_id dim#2557] +[visit_exp i#17945] +[visit_id i#17945] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#17952}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#17952}(M)] +[visit_exp i#17952] +[visit_id i#17952] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp ($ibits_(32, c) = `%`_bit{i#18257}($ilt_($lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, c_1, `%`_iN{i#18238}(0))!`%`_u32{i#18256}.0)*{c_1 <- `c_1*`, i#18238 <- `i#18238*`, i#18256 <- `i#18256*`, i#18257 <- `i#18257*`} ++ `%`_bit{i#18272}(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){i#18272 <- `i#18272*`})] +[visit_exp $ibits_(32, c)] +[visit_exp 32] +[visit_exp c] +[visit_id c] not free +[visit_exp `%`_bit{i#18257}($ilt_($lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, c_1, `%`_iN{i#18238}(0))!`%`_u32{i#18256}.0)*{c_1 <- `c_1*`, i#18238 <- `i#18238*`, i#18256 <- `i#18256*`, i#18257 <- `i#18257*`} ++ `%`_bit{i#18272}(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){i#18272 <- `i#18272*`}] +[visit_exp `%`_bit{i#18257}($ilt_($lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, c_1, `%`_iN{i#18238}(0))!`%`_u32{i#18256}.0)*{c_1 <- `c_1*`, i#18238 <- `i#18238*`, i#18256 <- `i#18256*`, i#18257 <- `i#18257*`}] +[scope_enter c_1] +[scope_enter i#18238] +[scope_enter i#18256] +[scope_enter i#18257] +[visit_exp `%`_bit{i#18257}($ilt_($lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, c_1, `%`_iN{i#18238}(0))!`%`_u32{i#18256}.0)] +[visit_exp i#18257] +[visit_id i#18257] not free +[visit_exp ($ilt_($lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, c_1, `%`_iN{i#18238}(0))!`%`_u32{i#18256}.0)] +[visit_exp $ilt_($lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, c_1, `%`_iN{i#18238}(0))!`%`_u32{i#18256}.0] +[visit_exp $ilt_($lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, c_1, `%`_iN{i#18238}(0))!`%`_u32{i#18256}] +[visit_exp $ilt_($lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, c_1, `%`_iN{i#18238}(0))] +[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp c_1] +[visit_id c_1] not free +[visit_exp `%`_iN{i#18238}(0)] +[visit_exp i#18238] +[visit_id i#18238] not free +[visit_exp (0)] +[visit_exp 0] +[visit_exp i#18256] +[visit_id i#18256] not free +[visit_id c_1] not free +[visit_id i#18238] not free +[visit_id i#18256] not free +[visit_id i#18257] not free +[scope_exit i#18257] +[scope_exit i#18256] +[scope_exit i#18238] +[scope_exit c_1] +[visit_exp `c_1*`] +[visit_id c_1*] not free +[visit_id c_1*] no dims +[visit_exp `i#18238*`] +[visit_id i#18238*] no dims +[visit_id i#18238*] +[visit_exp `i#18256*`] +[visit_id i#18256*] no dims +[visit_id i#18256*] +[visit_exp `i#18257*`] +[visit_id i#18257*] no dims +[visit_id i#18257*] +[visit_exp `%`_bit{i#18272}(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){i#18272 <- `i#18272*`}] +[scope_enter i#18272] +[visit_exp `%`_bit{i#18272}(0)] +[visit_exp i#18272] +[visit_id i#18272] not free +[visit_exp (0)] +[visit_exp 0] +[visit_id i#18272] not free +[scope_exit i#18272] +[visit_exp (((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat)] +[visit_exp ((32 : nat <:> int) - (M : nat <:> int))] +[visit_exp (32 : nat <:> int)] +[visit_exp 32] +[visit_exp (M : nat <:> int)] +[visit_exp M] +[visit_id M] not free +[visit_exp `i#18272*`] +[visit_id i#18272*] no dims +[visit_id i#18272*] +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivbitmaskop_{lanetype#2545 : lanetype, dim#2545 : dim, i#17921 : nat, Jnn : Jnn, i#17928 : nat, M : M, v_1 : vec_(`V128`_Vnn), c : iN(32), lanetype#2557 : lanetype, dim#2557 : dim, i#17945 : nat, i#17952 : nat, `i#18238*` : nat*, `i#18256*` : nat*, `i#18257*` : nat*, `i#18272*` : nat*, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#2557, dim#2557, i#17945}((Jnn : Jnn <: lanetype), `%`_dim{i#17952}(M))))*}(`%X%`_shape{lanetype#2545, dim#2545, i#17921}((Jnn : Jnn <: lanetype), `%`_dim{i#17928}(M)), v_1) = $irev_(32, c) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2557, dim#2557, i#17945}((Jnn : Jnn <: lanetype), `%`_dim{i#17952}(M)), v_1)) + -- if ($ibits_(32, c) = `%`_bit{i#18257}($ilt_($lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, c_1, `%`_iN{i#18238}(0))!`%`_u32{i#18256}.0)*{c_1 <- `c_1*`, i#18238 <- `i#18238*`, i#18256 <- `i#18256*`, i#18257 <- `i#18257*`} ++ `%`_bit{i#18272}(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){i#18272 <- `i#18272*`}) +[check_dims] Jnn M c c_1 c_2 dim#2584 dim#2596 dim#2621 dim#2648 i#18299 i#18306 i#18335 i#18342 i#18421 i#18428 i#18585 i#18592 lanetype#2584 lanetype#2596 lanetype#2621 lanetype#2648 v_1 v_2 +[visit_exp `%X%`_shape{lanetype#2584, dim#2584, i#18299}((Jnn : Jnn <: lanetype), `%`_dim{i#18306}(M))] +[visit_exp lanetype#2584] +[visit_id lanetype#2584] +[visit_exp dim#2584] +[visit_id dim#2584] +[visit_exp i#18299] +[visit_id i#18299] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#18306}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp `%`_dim{i#18306}(M)] +[visit_exp i#18306] +[visit_id i#18306] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $inv_lanes_(`%X%`_shape{lanetype#2648, dim#2648, i#18585}((Jnn : Jnn <: lanetype), `%`_dim{i#18592}(M)), c*{c <- `c*`})] +[visit_exp `%X%`_shape{lanetype#2648, dim#2648, i#18585}((Jnn : Jnn <: lanetype), `%`_dim{i#18592}(M))] +[visit_exp lanetype#2648] +[visit_id lanetype#2648] +[visit_exp dim#2648] +[visit_id dim#2648] +[visit_exp i#18585] +[visit_id i#18585] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#18592}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#18592}(M)] +[visit_exp i#18592] +[visit_id i#18592] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] no dims +[visit_id c*] +[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2596, dim#2596, i#18335}((Jnn : Jnn <: lanetype), `%`_dim{i#18342}(M)), v_1))] +[visit_exp c_1*{c_1 <- `c_1*`}] +[scope_enter c_1] +[visit_exp c_1] +[visit_id c_1] not free +[visit_id c_1] not free +[scope_exit c_1] +[visit_exp `c_1*`] +[visit_id c_1*] no dims +[visit_id c_1*] +[visit_exp $lanes_(`%X%`_shape{lanetype#2596, dim#2596, i#18335}((Jnn : Jnn <: lanetype), `%`_dim{i#18342}(M)), v_1)] +[visit_exp `%X%`_shape{lanetype#2596, dim#2596, i#18335}((Jnn : Jnn <: lanetype), `%`_dim{i#18342}(M))] +[visit_exp lanetype#2596] +[visit_id lanetype#2596] +[visit_exp dim#2596] +[visit_id dim#2596] +[visit_exp i#18335] +[visit_id i#18335] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#18342}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#18342}(M)] +[visit_exp i#18342] +[visit_id i#18342] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#2621, dim#2621, i#18421}((Jnn : Jnn <: lanetype), `%`_dim{i#18428}(M)), v_2))] +[visit_exp c_2*{c_2 <- `c_2*`}] +[scope_enter c_2] +[visit_exp c_2] +[visit_id c_2] not free +[visit_id c_2] not free +[scope_exit c_2] +[visit_exp `c_2*`] +[visit_id c_2*] no dims +[visit_id c_2*] +[visit_exp $lanes_(`%X%`_shape{lanetype#2621, dim#2621, i#18421}((Jnn : Jnn <: lanetype), `%`_dim{i#18428}(M)), v_2)] +[visit_exp `%X%`_shape{lanetype#2621, dim#2621, i#18421}((Jnn : Jnn <: lanetype), `%`_dim{i#18428}(M))] +[visit_exp lanetype#2621] +[visit_id lanetype#2621] +[visit_exp dim#2621] +[visit_id dim#2621] +[visit_exp i#18421] +[visit_id i#18421] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#18428}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#18428}(M)] +[visit_exp i#18428] +[visit_id i#18428] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_2] +[visit_id v_2] not free +[visit_exp (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1*{c_1 <- `c_1*`}, c_2)*{c_2 <- `c_2*`})] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1*{c_1 <- `c_1*`}, c_2)*{c_2 <- `c_2*`}] +[scope_enter c_2] +[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1*{c_1 <- `c_1*`}, c_2)] +[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp c_1*{c_1 <- `c_1*`}] +[scope_enter c_1] +[visit_exp c_1] +[visit_id c_1] not free +[visit_id c_1] not free +[scope_exit c_1] +[visit_exp `c_1*`] +[visit_id c_1*] not free +[visit_id c_1*] no dims +[visit_exp c_2] +[visit_id c_2] not free +[visit_id c_2] not free +[scope_exit c_2] +[visit_exp `c_2*`] +[visit_id c_2*] not free +[visit_id c_2*] no dims +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivswizzlop_{lanetype#2584 : lanetype, dim#2584 : dim, i#18299 : nat, Jnn : Jnn, i#18306 : nat, M : M, def $f_(N : N, iN(N)*, iN : iN(N)) : iN(N), v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#2648 : lanetype, dim#2648 : dim, i#18585 : nat, i#18592 : nat, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, lanetype#2596 : lanetype, dim#2596 : dim, i#18335 : nat, i#18342 : nat, lanetype#2621 : lanetype, dim#2621 : dim, i#18421 : nat, i#18428 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#2596, dim#2596, i#18335}((Jnn : Jnn <: lanetype), `%`_dim{i#18342}(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#2621, dim#2621, i#18421}((Jnn : Jnn <: lanetype), `%`_dim{i#18428}(M))))*}(`%X%`_shape{lanetype#2584, dim#2584, i#18299}((Jnn : Jnn <: lanetype), `%`_dim{i#18306}(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape{lanetype#2648, dim#2648, i#18585}((Jnn : Jnn <: lanetype), `%`_dim{i#18592}(M)), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2596, dim#2596, i#18335}((Jnn : Jnn <: lanetype), `%`_dim{i#18342}(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#2621, dim#2621, i#18421}((Jnn : Jnn <: lanetype), `%`_dim{i#18428}(M)), v_2)) + -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1*{c_1 <- `c_1*`}, c_2)*{c_2 <- `c_2*`}) +[check_dims] Jnn M c c_1 c_2 dim#2672 dim#2684 dim#2709 dim#2760 i i#18658 i#18665 i#18719 i#18726 i#18805 i#18812 i#18958 i#19037 i#19044 lanetype#2672 lanetype#2684 lanetype#2709 lanetype#2760 v_1 v_2 +[visit_exp `%X%`_shape{lanetype#2672, dim#2672, i#18658}((Jnn : Jnn <: lanetype), `%`_dim{i#18665}(M))] +[visit_exp lanetype#2672] +[visit_id lanetype#2672] +[visit_exp dim#2672] +[visit_id dim#2672] +[visit_exp i#18658] +[visit_id i#18658] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#18665}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp `%`_dim{i#18665}(M)] +[visit_exp i#18665] +[visit_id i#18665] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp i*{i <- `i*`}] +[scope_enter i] +[visit_exp i] +[visit_id i] not free +[visit_id i] not free +[scope_exit i] +[visit_exp `i*`] +[visit_id i*] no dims +[visit_id i*] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $inv_lanes_(`%X%`_shape{lanetype#2760, dim#2760, i#19037}((Jnn : Jnn <: lanetype), `%`_dim{i#19044}(M)), c*{c <- `c*`})] +[visit_exp `%X%`_shape{lanetype#2760, dim#2760, i#19037}((Jnn : Jnn <: lanetype), `%`_dim{i#19044}(M))] +[visit_exp lanetype#2760] +[visit_id lanetype#2760] +[visit_exp dim#2760] +[visit_id dim#2760] +[visit_exp i#19037] +[visit_id i#19037] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#19044}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#19044}(M)] +[visit_exp i#19044] +[visit_id i#19044] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] no dims +[visit_id c*] +[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M)), v_1))] +[visit_exp c_1*{c_1 <- `c_1*`}] +[scope_enter c_1] +[visit_exp c_1] +[visit_id c_1] not free +[visit_id c_1] not free +[scope_exit c_1] +[visit_exp `c_1*`] +[visit_id c_1*] no dims +[visit_id c_1*] +[visit_exp $lanes_(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M)), v_1)] +[visit_exp `%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M))] +[visit_exp lanetype#2684] +[visit_id lanetype#2684] +[visit_exp dim#2684] +[visit_id dim#2684] +[visit_exp i#18719] +[visit_id i#18719] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#18726}(M)] +[visit_exp i#18726] +[visit_id i#18726] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#2709, dim#2709, i#18805}((Jnn : Jnn <: lanetype), `%`_dim{i#18812}(M)), v_2))] +[visit_exp c_2*{c_2 <- `c_2*`}] +[scope_enter c_2] +[visit_exp c_2] +[visit_id c_2] not free +[visit_id c_2] not free +[scope_exit c_2] +[visit_exp `c_2*`] +[visit_id c_2*] no dims +[visit_id c_2*] +[visit_exp $lanes_(`%X%`_shape{lanetype#2709, dim#2709, i#18805}((Jnn : Jnn <: lanetype), `%`_dim{i#18812}(M)), v_2)] +[visit_exp `%X%`_shape{lanetype#2709, dim#2709, i#18805}((Jnn : Jnn <: lanetype), `%`_dim{i#18812}(M))] +[visit_exp lanetype#2709] +[visit_id lanetype#2709] +[visit_exp dim#2709] +[visit_id dim#2709] +[visit_exp i#18805] +[visit_id i#18805] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#18812}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#18812}(M)] +[visit_exp i#18812] +[visit_id i#18812] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_2] +[visit_id v_2] not free +[visit_exp (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_laneidx{i#18958}.0]*{i <- `i*`, i#18958 <- `i#18958*`})] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[visit_exp c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_laneidx{i#18958}.0]*{i <- `i*`, i#18958 <- `i#18958*`}] +[scope_enter i] +[scope_enter i#18958] +[visit_exp c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_laneidx{i#18958}.0]] +[visit_exp c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}] +[visit_exp c_1*{c_1 <- `c_1*`}] +[scope_enter c_1] +[visit_exp c_1] +[visit_id c_1] not free +[visit_id c_1] not free +[scope_exit c_1] +[visit_exp `c_1*`] +[visit_id c_1*] not free +[visit_id c_1*] no dims +[visit_exp c_2*{c_2 <- `c_2*`}] +[scope_enter c_2] +[visit_exp c_2] +[visit_id c_2] not free +[visit_id c_2] not free +[scope_exit c_2] +[visit_exp `c_2*`] +[visit_id c_2*] not free +[visit_id c_2*] no dims +[visit_exp i!`%`_laneidx{i#18958}.0] +[visit_exp i!`%`_laneidx{i#18958}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#18958] +[visit_id i#18958] not free +[visit_id i] not free +[visit_id i#18958] not free +[scope_exit i#18958] +[scope_exit i] +[visit_exp `i*`] +[visit_id i*] not free +[visit_id i*] no dims +[visit_exp `i#18958*`] +[visit_id i#18958*] no dims +[visit_id i#18958*] +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivshufflop_{lanetype#2672 : lanetype, dim#2672 : dim, i#18658 : nat, Jnn : Jnn, i#18665 : nat, M : M, `i*` : laneidx*, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#2760 : lanetype, dim#2760 : dim, i#19037 : nat, i#19044 : nat, lanetype#2684 : lanetype, dim#2684 : dim, i#18719 : nat, i#18726 : nat, lanetype#2709 : lanetype, dim#2709 : dim, i#18805 : nat, i#18812 : nat, `i#18958*` : nat*, `c*` : lane_($lanetype(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M))))*, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#2709, dim#2709, i#18805}((Jnn : Jnn <: lanetype), `%`_dim{i#18812}(M))))*}(`%X%`_shape{lanetype#2672, dim#2672, i#18658}((Jnn : Jnn <: lanetype), `%`_dim{i#18665}(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape{lanetype#2760, dim#2760, i#19037}((Jnn : Jnn <: lanetype), `%`_dim{i#19044}(M)), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#2709, dim#2709, i#18805}((Jnn : Jnn <: lanetype), `%`_dim{i#18812}(M)), v_2)) + -- if (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_laneidx{i#18958}.0]*{i <- `i*`, i#18958 <- `i#18958*`}) +[check_dims] vec_ vectype vvunop +DecD vvunop_(vectype : vectype, vvunop : vvunop, vec_ : vec_(vectype)) : vec_(vectype)* +[visit_id vectype] not free +[visit_id vvunop] not free +[visit_id vec_] not free +[visit_exp vectype] +[visit_id vectype] not free +[visit_exp vectype] +[visit_id vectype] not free +[check_dims] vec_ vectype vvbinop +DecD vvbinop_(vectype : vectype, vvbinop : vvbinop, vec_ : vec_(vectype), vec_ : vec_(vectype)) : vec_(vectype)* +[visit_id vectype] not free +[visit_id vvbinop] not free +[visit_id vec_] not free +[visit_exp vectype] +[visit_id vectype] not free +[visit_id vec_] not free +[visit_exp vectype] +[visit_id vectype] not free +[visit_exp vectype] +[visit_id vectype] not free +[check_dims] vec_ vectype vvternop +DecD vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_(vectype), vec_ : vec_(vectype), vec_ : vec_(vectype)) : vec_(vectype)* +[visit_id vectype] not free +[visit_id vvternop] not free +[visit_id vec_] not free +[visit_exp vectype] +[visit_id vectype] not free +[visit_id vec_] not free +[visit_exp vectype] +[visit_id vectype] not free +[visit_id vec_] not free +[visit_exp vectype] +[visit_id vectype] not free +[visit_exp vectype] +[visit_id vectype] not free +[check_dims] shape vec_ vunop_ +DecD vunop_(shape : shape, vunop_ : vunop_(shape), vec_ : vec_(`V128`_Vnn)) : vec_(`V128`_Vnn)* +[visit_id shape] not free +[visit_id vunop_] not free +[visit_exp shape] +[visit_id shape] not free +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_exp `V128`_Vnn] +[visit_exp ()] +[check_dims] shape vbinop_ vec_ +DecD vbinop_(shape : shape, vbinop_ : vbinop_(shape), vec_ : vec_(`V128`_Vnn), vec_ : vec_(`V128`_Vnn)) : vec_(`V128`_Vnn)* +[visit_id shape] not free +[visit_id vbinop_] not free +[visit_exp shape] +[visit_id shape] not free +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_exp `V128`_Vnn] +[visit_exp ()] +[check_dims] shape vec_ vternop_ +DecD vternop_(shape : shape, vternop_ : vternop_(shape), vec_ : vec_(`V128`_Vnn), vec_ : vec_(`V128`_Vnn), vec_ : vec_(`V128`_Vnn)) : vec_(`V128`_Vnn)* +[visit_id shape] not free +[visit_id vternop_] not free +[visit_exp shape] +[visit_id shape] not free +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_exp `V128`_Vnn] +[visit_exp ()] +[check_dims] shape vec_ vrelop_ +DecD vrelop_(shape : shape, vrelop_ : vrelop_(shape), vec_ : vec_(`V128`_Vnn), vec_ : vec_(`V128`_Vnn)) : vec_(`V128`_Vnn) +[visit_id shape] not free +[visit_id vrelop_] not free +[visit_exp shape] +[visit_id shape] not free +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_exp `V128`_Vnn] +[visit_exp ()] +[check_dims] lane_ shape_1 shape_2 vcvtop__ +DecD lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2), lane_ : lane_($lanetype(shape_1))) : lane_($lanetype(shape_2))* +[visit_id shape_1] not free +[visit_id shape_2] not free +[visit_id vcvtop__] not free +[visit_exp shape_1] +[visit_id shape_1] not free +[visit_exp shape_2] +[visit_id shape_2] not free +[visit_id lane_] not free +[visit_exp $lanetype(shape_1)] +[visit_exp shape_1] +[visit_id shape_1] not free +[visit_exp $lanetype(shape_2)] +[visit_exp shape_2] +[visit_id shape_2] not free +[check_dims] shape_1 shape_2 vcvtop__ vec_ +DecD vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2), vec_ : vec_(`V128`_Vnn)) : vec_(`V128`_Vnn) +[visit_id shape_1] not free +[visit_id shape_2] not free +[visit_id vcvtop__] not free +[visit_exp shape_1] +[visit_id shape_1] not free +[visit_exp shape_2] +[visit_id shape_2] not free +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_exp `V128`_Vnn] +[visit_exp ()] +[check_dims] ishape u32 vec_ vshiftop_ +DecD vshiftop_(ishape : ishape, vshiftop_ : vshiftop_(ishape), vec_ : vec_(`V128`_Vnn), u32 : u32) : vec_(`V128`_Vnn) +[visit_id ishape] not free +[visit_id vshiftop_] not free +[visit_exp ishape] +[visit_id ishape] not free +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_id u32] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[check_dims] ishape vec_ +DecD vbitmaskop_(ishape : ishape, vec_ : vec_(`V128`_Vnn)) : u32 +[visit_id ishape] not free +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[check_dims] bshape vec_ vswizzlop_ +DecD vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_(bshape), vec_ : vec_(`V128`_Vnn), vec_ : vec_(`V128`_Vnn)) : vec_(`V128`_Vnn) +[visit_id bshape] not free +[visit_id vswizzlop_] not free +[visit_exp bshape] +[visit_id bshape] not free +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_exp `V128`_Vnn] +[visit_exp ()] +[check_dims] _ bshape vec_ +DecD vshufflop_(bshape : bshape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(`V128`_Vnn)) : vec_(`V128`_Vnn) +[visit_id bshape] not free +[visit_id _] not free +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_exp `V128`_Vnn] +[visit_exp ()] +[check_dims] shape_1 shape_2 sx vec_ +DecD vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_(`V128`_Vnn), vec_ : vec_(`V128`_Vnn)) : vec_(`V128`_Vnn) +[visit_id shape_1] not free +[visit_id shape_2] not free +[visit_id sx] not free +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_exp `V128`_Vnn] +[visit_exp ()] +[check_dims] ishape_1 ishape_2 vec_ vextunop__ +DecD vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__(ishape_1, ishape_2), vec_ : vec_(`V128`_Vnn)) : vec_(`V128`_Vnn) +[visit_id ishape_1] not free +[visit_id ishape_2] not free +[visit_id vextunop__] not free +[visit_exp ishape_1] +[visit_id ishape_1] not free +[visit_exp ishape_2] +[visit_id ishape_2] not free +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_exp `V128`_Vnn] +[visit_exp ()] +[check_dims] ishape_1 ishape_2 vec_ vextbinop__ +DecD vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__(ishape_1, ishape_2), vec_ : vec_(`V128`_Vnn), vec_ : vec_(`V128`_Vnn)) : vec_(`V128`_Vnn) +[visit_id ishape_1] not free +[visit_id ishape_2] not free +[visit_id vextbinop__] not free +[visit_exp ishape_1] +[visit_id ishape_1] not free +[visit_exp ishape_2] +[visit_id ishape_2] not free +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_exp `V128`_Vnn] +[visit_exp ()] +[check_dims] ishape_1 ishape_2 vec_ vextternop__ +DecD 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) +[visit_id ishape_1] not free +[visit_id ishape_2] not free +[visit_id vextternop__] not free +[visit_exp ishape_1] +[visit_id ishape_1] not free +[visit_exp ishape_2] +[visit_id ishape_2] not free +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_exp `V128`_Vnn] +[visit_exp ()] +[check_dims] Vnn v +[visit_exp Vnn] +[visit_id Vnn] +[visit_exp `NOT`_vvunop] +[visit_exp ()] +[visit_exp v] +[visit_id v] +[visit_exp [$inot_($vsizenn(Vnn), v)]] +[visit_exp $inot_($vsizenn(Vnn), v)] +[visit_exp $vsizenn(Vnn)] +[visit_exp Vnn] +[visit_id Vnn] not free +[visit_exp v] +[visit_id v] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vvunop_{Vnn : Vnn, v : vec_(Vnn)}(Vnn, `NOT`_vvunop, v) = [$inot_($vsizenn(Vnn), v)] +[check_dims] Vnn v_1 v_2 +[visit_exp Vnn] +[visit_id Vnn] +[visit_exp `AND`_vvbinop] +[visit_exp ()] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp [$iand_($vsizenn(Vnn), v_1, v_2)]] +[visit_exp $iand_($vsizenn(Vnn), v_1, v_2)] +[visit_exp $vsizenn(Vnn)] +[visit_exp Vnn] +[visit_id Vnn] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +=> + ;; ../../../../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)] +[check_dims] Vnn v_1 v_2 +[visit_exp Vnn] +[visit_id Vnn] +[visit_exp `ANDNOT`_vvbinop] +[visit_exp ()] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp [$iandnot_($vsizenn(Vnn), v_1, v_2)]] +[visit_exp $iandnot_($vsizenn(Vnn), v_1, v_2)] +[visit_exp $vsizenn(Vnn)] +[visit_exp Vnn] +[visit_id Vnn] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +=> + ;; ../../../../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)] +[check_dims] Vnn v_1 v_2 +[visit_exp Vnn] +[visit_id Vnn] +[visit_exp `OR`_vvbinop] +[visit_exp ()] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp [$ior_($vsizenn(Vnn), v_1, v_2)]] +[visit_exp $ior_($vsizenn(Vnn), v_1, v_2)] +[visit_exp $vsizenn(Vnn)] +[visit_exp Vnn] +[visit_id Vnn] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +=> + ;; ../../../../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)] +[check_dims] Vnn v_1 v_2 +[visit_exp Vnn] +[visit_id Vnn] +[visit_exp `XOR`_vvbinop] +[visit_exp ()] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp [$ixor_($vsizenn(Vnn), v_1, v_2)]] +[visit_exp $ixor_($vsizenn(Vnn), v_1, v_2)] +[visit_exp $vsizenn(Vnn)] +[visit_exp Vnn] +[visit_id Vnn] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +=> + ;; ../../../../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)] +[check_dims] Vnn v_1 v_2 v_3 +[visit_exp Vnn] +[visit_id Vnn] +[visit_exp `BITSELECT`_vvternop] +[visit_exp ()] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp v_3] +[visit_id v_3] +[visit_exp [$ibitselect_($vsizenn(Vnn), v_1, v_2, v_3)]] +[visit_exp $ibitselect_($vsizenn(Vnn), v_1, v_2, v_3)] +[visit_exp $vsizenn(Vnn)] +[visit_exp Vnn] +[visit_id Vnn] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +[visit_exp v_3] +[visit_id v_3] not free +=> + ;; ../../../../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)] +[check_dims] Fnn M dim#2845 dim#2894 i#19491 i#19498 i#19593 i#19600 lanetype#2845 lanetype#2894 v +[visit_exp `%X%`_shape{lanetype#2845, dim#2845, i#19491}((Fnn : Fnn <: lanetype), `%`_dim{i#19498}(M))] +[visit_exp lanetype#2845] +[visit_id lanetype#2845] +[visit_exp dim#2845] +[visit_id dim#2845] +[visit_exp i#19491] +[visit_id i#19491] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#19498}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `%`_dim{i#19498}(M)] +[visit_exp i#19498] +[visit_id i#19498] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `ABS`_vunop_] +[visit_exp ()] +[visit_exp v] +[visit_id v] +[visit_exp $fvunop_(`%X%`_shape{lanetype#2894, dim#2894, i#19593}((Fnn : Fnn <: lanetype), `%`_dim{i#19600}(M)), def $fabs_, v)] +[visit_exp `%X%`_shape{lanetype#2894, dim#2894, i#19593}((Fnn : Fnn <: lanetype), `%`_dim{i#19600}(M))] +[visit_exp lanetype#2894] +[visit_id lanetype#2894] +[visit_exp dim#2894] +[visit_id dim#2894] +[visit_exp i#19593] +[visit_id i#19593] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#19600}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp `%`_dim{i#19600}(M)] +[visit_exp i#19600] +[visit_id i#19600] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v] +[visit_id v] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{lanetype#2845 : lanetype, dim#2845 : dim, i#19491 : nat, Fnn : Fnn, i#19498 : nat, M : M, v : vec_(`V128`_Vnn), lanetype#2894 : lanetype, dim#2894 : dim, i#19593 : nat, i#19600 : nat}(`%X%`_shape{lanetype#2845, dim#2845, i#19491}((Fnn : Fnn <: lanetype), `%`_dim{i#19498}(M)), `ABS`_vunop_, v) = $fvunop_(`%X%`_shape{lanetype#2894, dim#2894, i#19593}((Fnn : Fnn <: lanetype), `%`_dim{i#19600}(M)), def $fabs_, v) +[check_dims] Fnn M dim#2906 dim#2955 i#19615 i#19622 i#19717 i#19724 lanetype#2906 lanetype#2955 v +[visit_exp `%X%`_shape{lanetype#2906, dim#2906, i#19615}((Fnn : Fnn <: lanetype), `%`_dim{i#19622}(M))] +[visit_exp lanetype#2906] +[visit_id lanetype#2906] +[visit_exp dim#2906] +[visit_id dim#2906] +[visit_exp i#19615] +[visit_id i#19615] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#19622}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `%`_dim{i#19622}(M)] +[visit_exp i#19622] +[visit_id i#19622] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `NEG`_vunop_] +[visit_exp ()] +[visit_exp v] +[visit_id v] +[visit_exp $fvunop_(`%X%`_shape{lanetype#2955, dim#2955, i#19717}((Fnn : Fnn <: lanetype), `%`_dim{i#19724}(M)), def $fneg_, v)] +[visit_exp `%X%`_shape{lanetype#2955, dim#2955, i#19717}((Fnn : Fnn <: lanetype), `%`_dim{i#19724}(M))] +[visit_exp lanetype#2955] +[visit_id lanetype#2955] +[visit_exp dim#2955] +[visit_id dim#2955] +[visit_exp i#19717] +[visit_id i#19717] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#19724}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp `%`_dim{i#19724}(M)] +[visit_exp i#19724] +[visit_id i#19724] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v] +[visit_id v] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{lanetype#2906 : lanetype, dim#2906 : dim, i#19615 : nat, Fnn : Fnn, i#19622 : nat, M : M, v : vec_(`V128`_Vnn), lanetype#2955 : lanetype, dim#2955 : dim, i#19717 : nat, i#19724 : nat}(`%X%`_shape{lanetype#2906, dim#2906, i#19615}((Fnn : Fnn <: lanetype), `%`_dim{i#19622}(M)), `NEG`_vunop_, v) = $fvunop_(`%X%`_shape{lanetype#2955, dim#2955, i#19717}((Fnn : Fnn <: lanetype), `%`_dim{i#19724}(M)), def $fneg_, v) +[check_dims] Fnn M dim#2967 dim#3016 i#19739 i#19746 i#19841 i#19848 lanetype#2967 lanetype#3016 v +[visit_exp `%X%`_shape{lanetype#2967, dim#2967, i#19739}((Fnn : Fnn <: lanetype), `%`_dim{i#19746}(M))] +[visit_exp lanetype#2967] +[visit_id lanetype#2967] +[visit_exp dim#2967] +[visit_id dim#2967] +[visit_exp i#19739] +[visit_id i#19739] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#19746}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `%`_dim{i#19746}(M)] +[visit_exp i#19746] +[visit_id i#19746] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `SQRT`_vunop_] +[visit_exp ()] +[visit_exp v] +[visit_id v] +[visit_exp $fvunop_(`%X%`_shape{lanetype#3016, dim#3016, i#19841}((Fnn : Fnn <: lanetype), `%`_dim{i#19848}(M)), def $fsqrt_, v)] +[visit_exp `%X%`_shape{lanetype#3016, dim#3016, i#19841}((Fnn : Fnn <: lanetype), `%`_dim{i#19848}(M))] +[visit_exp lanetype#3016] +[visit_id lanetype#3016] +[visit_exp dim#3016] +[visit_id dim#3016] +[visit_exp i#19841] +[visit_id i#19841] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#19848}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp `%`_dim{i#19848}(M)] +[visit_exp i#19848] +[visit_id i#19848] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v] +[visit_id v] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{lanetype#2967 : lanetype, dim#2967 : dim, i#19739 : nat, Fnn : Fnn, i#19746 : nat, M : M, v : vec_(`V128`_Vnn), lanetype#3016 : lanetype, dim#3016 : dim, i#19841 : nat, i#19848 : nat}(`%X%`_shape{lanetype#2967, dim#2967, i#19739}((Fnn : Fnn <: lanetype), `%`_dim{i#19746}(M)), `SQRT`_vunop_, v) = $fvunop_(`%X%`_shape{lanetype#3016, dim#3016, i#19841}((Fnn : Fnn <: lanetype), `%`_dim{i#19848}(M)), def $fsqrt_, v) +[check_dims] Fnn M dim#3028 dim#3077 i#19863 i#19870 i#19965 i#19972 lanetype#3028 lanetype#3077 v +[visit_exp `%X%`_shape{lanetype#3028, dim#3028, i#19863}((Fnn : Fnn <: lanetype), `%`_dim{i#19870}(M))] +[visit_exp lanetype#3028] +[visit_id lanetype#3028] +[visit_exp dim#3028] +[visit_id dim#3028] +[visit_exp i#19863] +[visit_id i#19863] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#19870}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `%`_dim{i#19870}(M)] +[visit_exp i#19870] +[visit_id i#19870] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `CEIL`_vunop_] +[visit_exp ()] +[visit_exp v] +[visit_id v] +[visit_exp $fvunop_(`%X%`_shape{lanetype#3077, dim#3077, i#19965}((Fnn : Fnn <: lanetype), `%`_dim{i#19972}(M)), def $fceil_, v)] +[visit_exp `%X%`_shape{lanetype#3077, dim#3077, i#19965}((Fnn : Fnn <: lanetype), `%`_dim{i#19972}(M))] +[visit_exp lanetype#3077] +[visit_id lanetype#3077] +[visit_exp dim#3077] +[visit_id dim#3077] +[visit_exp i#19965] +[visit_id i#19965] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#19972}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp `%`_dim{i#19972}(M)] +[visit_exp i#19972] +[visit_id i#19972] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v] +[visit_id v] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{lanetype#3028 : lanetype, dim#3028 : dim, i#19863 : nat, Fnn : Fnn, i#19870 : nat, M : M, v : vec_(`V128`_Vnn), lanetype#3077 : lanetype, dim#3077 : dim, i#19965 : nat, i#19972 : nat}(`%X%`_shape{lanetype#3028, dim#3028, i#19863}((Fnn : Fnn <: lanetype), `%`_dim{i#19870}(M)), `CEIL`_vunop_, v) = $fvunop_(`%X%`_shape{lanetype#3077, dim#3077, i#19965}((Fnn : Fnn <: lanetype), `%`_dim{i#19972}(M)), def $fceil_, v) +[check_dims] Fnn M dim#3089 dim#3138 i#19987 i#19994 i#20089 i#20096 lanetype#3089 lanetype#3138 v +[visit_exp `%X%`_shape{lanetype#3089, dim#3089, i#19987}((Fnn : Fnn <: lanetype), `%`_dim{i#19994}(M))] +[visit_exp lanetype#3089] +[visit_id lanetype#3089] +[visit_exp dim#3089] +[visit_id dim#3089] +[visit_exp i#19987] +[visit_id i#19987] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#19994}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `%`_dim{i#19994}(M)] +[visit_exp i#19994] +[visit_id i#19994] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `FLOOR`_vunop_] +[visit_exp ()] +[visit_exp v] +[visit_id v] +[visit_exp $fvunop_(`%X%`_shape{lanetype#3138, dim#3138, i#20089}((Fnn : Fnn <: lanetype), `%`_dim{i#20096}(M)), def $ffloor_, v)] +[visit_exp `%X%`_shape{lanetype#3138, dim#3138, i#20089}((Fnn : Fnn <: lanetype), `%`_dim{i#20096}(M))] +[visit_exp lanetype#3138] +[visit_id lanetype#3138] +[visit_exp dim#3138] +[visit_id dim#3138] +[visit_exp i#20089] +[visit_id i#20089] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#20096}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp `%`_dim{i#20096}(M)] +[visit_exp i#20096] +[visit_id i#20096] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v] +[visit_id v] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{lanetype#3089 : lanetype, dim#3089 : dim, i#19987 : nat, Fnn : Fnn, i#19994 : nat, M : M, v : vec_(`V128`_Vnn), lanetype#3138 : lanetype, dim#3138 : dim, i#20089 : nat, i#20096 : nat}(`%X%`_shape{lanetype#3089, dim#3089, i#19987}((Fnn : Fnn <: lanetype), `%`_dim{i#19994}(M)), `FLOOR`_vunop_, v) = $fvunop_(`%X%`_shape{lanetype#3138, dim#3138, i#20089}((Fnn : Fnn <: lanetype), `%`_dim{i#20096}(M)), def $ffloor_, v) +[check_dims] Fnn M dim#3150 dim#3199 i#20111 i#20118 i#20213 i#20220 lanetype#3150 lanetype#3199 v +[visit_exp `%X%`_shape{lanetype#3150, dim#3150, i#20111}((Fnn : Fnn <: lanetype), `%`_dim{i#20118}(M))] +[visit_exp lanetype#3150] +[visit_id lanetype#3150] +[visit_exp dim#3150] +[visit_id dim#3150] +[visit_exp i#20111] +[visit_id i#20111] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#20118}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `%`_dim{i#20118}(M)] +[visit_exp i#20118] +[visit_id i#20118] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `TRUNC`_vunop_] +[visit_exp ()] +[visit_exp v] +[visit_id v] +[visit_exp $fvunop_(`%X%`_shape{lanetype#3199, dim#3199, i#20213}((Fnn : Fnn <: lanetype), `%`_dim{i#20220}(M)), def $ftrunc_, v)] +[visit_exp `%X%`_shape{lanetype#3199, dim#3199, i#20213}((Fnn : Fnn <: lanetype), `%`_dim{i#20220}(M))] +[visit_exp lanetype#3199] +[visit_id lanetype#3199] +[visit_exp dim#3199] +[visit_id dim#3199] +[visit_exp i#20213] +[visit_id i#20213] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#20220}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp `%`_dim{i#20220}(M)] +[visit_exp i#20220] +[visit_id i#20220] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v] +[visit_id v] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{lanetype#3150 : lanetype, dim#3150 : dim, i#20111 : nat, Fnn : Fnn, i#20118 : nat, M : M, v : vec_(`V128`_Vnn), lanetype#3199 : lanetype, dim#3199 : dim, i#20213 : nat, i#20220 : nat}(`%X%`_shape{lanetype#3150, dim#3150, i#20111}((Fnn : Fnn <: lanetype), `%`_dim{i#20118}(M)), `TRUNC`_vunop_, v) = $fvunop_(`%X%`_shape{lanetype#3199, dim#3199, i#20213}((Fnn : Fnn <: lanetype), `%`_dim{i#20220}(M)), def $ftrunc_, v) +[check_dims] Fnn M dim#3211 dim#3260 i#20235 i#20242 i#20337 i#20344 lanetype#3211 lanetype#3260 v +[visit_exp `%X%`_shape{lanetype#3211, dim#3211, i#20235}((Fnn : Fnn <: lanetype), `%`_dim{i#20242}(M))] +[visit_exp lanetype#3211] +[visit_id lanetype#3211] +[visit_exp dim#3211] +[visit_id dim#3211] +[visit_exp i#20235] +[visit_id i#20235] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#20242}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `%`_dim{i#20242}(M)] +[visit_exp i#20242] +[visit_id i#20242] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `NEAREST`_vunop_] +[visit_exp ()] +[visit_exp v] +[visit_id v] +[visit_exp $fvunop_(`%X%`_shape{lanetype#3260, dim#3260, i#20337}((Fnn : Fnn <: lanetype), `%`_dim{i#20344}(M)), def $fnearest_, v)] +[visit_exp `%X%`_shape{lanetype#3260, dim#3260, i#20337}((Fnn : Fnn <: lanetype), `%`_dim{i#20344}(M))] +[visit_exp lanetype#3260] +[visit_id lanetype#3260] +[visit_exp dim#3260] +[visit_id dim#3260] +[visit_exp i#20337] +[visit_id i#20337] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#20344}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp `%`_dim{i#20344}(M)] +[visit_exp i#20344] +[visit_id i#20344] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v] +[visit_id v] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{lanetype#3211 : lanetype, dim#3211 : dim, i#20235 : nat, Fnn : Fnn, i#20242 : nat, M : M, v : vec_(`V128`_Vnn), lanetype#3260 : lanetype, dim#3260 : dim, i#20337 : nat, i#20344 : nat}(`%X%`_shape{lanetype#3211, dim#3211, i#20235}((Fnn : Fnn <: lanetype), `%`_dim{i#20242}(M)), `NEAREST`_vunop_, v) = $fvunop_(`%X%`_shape{lanetype#3260, dim#3260, i#20337}((Fnn : Fnn <: lanetype), `%`_dim{i#20344}(M)), def $fnearest_, v) +[check_dims] Jnn M dim#3272 dim#3308 i#20359 i#20366 i#20448 i#20455 lanetype#3272 lanetype#3308 v +[visit_exp `%X%`_shape{lanetype#3272, dim#3272, i#20359}((Jnn : Jnn <: lanetype), `%`_dim{i#20366}(M))] +[visit_exp lanetype#3272] +[visit_id lanetype#3272] +[visit_exp dim#3272] +[visit_id dim#3272] +[visit_exp i#20359] +[visit_id i#20359] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#20366}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp `%`_dim{i#20366}(M)] +[visit_exp i#20366] +[visit_id i#20366] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `ABS`_vunop_] +[visit_exp ()] +[visit_exp v] +[visit_id v] +[visit_exp $ivunop_(`%X%`_shape{lanetype#3308, dim#3308, i#20448}((Jnn : Jnn <: lanetype), `%`_dim{i#20455}(M)), def $iabs_, v)] +[visit_exp `%X%`_shape{lanetype#3308, dim#3308, i#20448}((Jnn : Jnn <: lanetype), `%`_dim{i#20455}(M))] +[visit_exp lanetype#3308] +[visit_id lanetype#3308] +[visit_exp dim#3308] +[visit_id dim#3308] +[visit_exp i#20448] +[visit_id i#20448] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#20455}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#20455}(M)] +[visit_exp i#20455] +[visit_id i#20455] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v] +[visit_id v] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{lanetype#3272 : lanetype, dim#3272 : dim, i#20359 : nat, Jnn : Jnn, i#20366 : nat, M : M, v : vec_(`V128`_Vnn), lanetype#3308 : lanetype, dim#3308 : dim, i#20448 : nat, i#20455 : nat}(`%X%`_shape{lanetype#3272, dim#3272, i#20359}((Jnn : Jnn <: lanetype), `%`_dim{i#20366}(M)), `ABS`_vunop_, v) = $ivunop_(`%X%`_shape{lanetype#3308, dim#3308, i#20448}((Jnn : Jnn <: lanetype), `%`_dim{i#20455}(M)), def $iabs_, v) +[check_dims] Jnn M dim#3320 dim#3356 i#20470 i#20477 i#20559 i#20566 lanetype#3320 lanetype#3356 v +[visit_exp `%X%`_shape{lanetype#3320, dim#3320, i#20470}((Jnn : Jnn <: lanetype), `%`_dim{i#20477}(M))] +[visit_exp lanetype#3320] +[visit_id lanetype#3320] +[visit_exp dim#3320] +[visit_id dim#3320] +[visit_exp i#20470] +[visit_id i#20470] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#20477}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp `%`_dim{i#20477}(M)] +[visit_exp i#20477] +[visit_id i#20477] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `NEG`_vunop_] +[visit_exp ()] +[visit_exp v] +[visit_id v] +[visit_exp $ivunop_(`%X%`_shape{lanetype#3356, dim#3356, i#20559}((Jnn : Jnn <: lanetype), `%`_dim{i#20566}(M)), def $ineg_, v)] +[visit_exp `%X%`_shape{lanetype#3356, dim#3356, i#20559}((Jnn : Jnn <: lanetype), `%`_dim{i#20566}(M))] +[visit_exp lanetype#3356] +[visit_id lanetype#3356] +[visit_exp dim#3356] +[visit_id dim#3356] +[visit_exp i#20559] +[visit_id i#20559] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#20566}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#20566}(M)] +[visit_exp i#20566] +[visit_id i#20566] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v] +[visit_id v] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{lanetype#3320 : lanetype, dim#3320 : dim, i#20470 : nat, Jnn : Jnn, i#20477 : nat, M : M, v : vec_(`V128`_Vnn), lanetype#3356 : lanetype, dim#3356 : dim, i#20559 : nat, i#20566 : nat}(`%X%`_shape{lanetype#3320, dim#3320, i#20470}((Jnn : Jnn <: lanetype), `%`_dim{i#20477}(M)), `NEG`_vunop_, v) = $ivunop_(`%X%`_shape{lanetype#3356, dim#3356, i#20559}((Jnn : Jnn <: lanetype), `%`_dim{i#20566}(M)), def $ineg_, v) +[check_dims] Jnn M dim#3368 dim#3404 i#20581 i#20588 i#20670 i#20677 lanetype#3368 lanetype#3404 v +[visit_exp `%X%`_shape{lanetype#3368, dim#3368, i#20581}((Jnn : Jnn <: lanetype), `%`_dim{i#20588}(M))] +[visit_exp lanetype#3368] +[visit_id lanetype#3368] +[visit_exp dim#3368] +[visit_id dim#3368] +[visit_exp i#20581] +[visit_id i#20581] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#20588}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp `%`_dim{i#20588}(M)] +[visit_exp i#20588] +[visit_id i#20588] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `POPCNT`_vunop_] +[visit_exp ()] +[visit_exp v] +[visit_id v] +[visit_exp $ivunop_(`%X%`_shape{lanetype#3404, dim#3404, i#20670}((Jnn : Jnn <: lanetype), `%`_dim{i#20677}(M)), def $ipopcnt_, v)] +[visit_exp `%X%`_shape{lanetype#3404, dim#3404, i#20670}((Jnn : Jnn <: lanetype), `%`_dim{i#20677}(M))] +[visit_exp lanetype#3404] +[visit_id lanetype#3404] +[visit_exp dim#3404] +[visit_id dim#3404] +[visit_exp i#20670] +[visit_id i#20670] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#20677}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#20677}(M)] +[visit_exp i#20677] +[visit_id i#20677] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v] +[visit_id v] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vunop_{lanetype#3368 : lanetype, dim#3368 : dim, i#20581 : nat, Jnn : Jnn, i#20588 : nat, M : M, v : vec_(`V128`_Vnn), lanetype#3404 : lanetype, dim#3404 : dim, i#20670 : nat, i#20677 : nat}(`%X%`_shape{lanetype#3368, dim#3368, i#20581}((Jnn : Jnn <: lanetype), `%`_dim{i#20588}(M)), `POPCNT`_vunop_, v) = $ivunop_(`%X%`_shape{lanetype#3404, dim#3404, i#20670}((Jnn : Jnn <: lanetype), `%`_dim{i#20677}(M)), def $ipopcnt_, v) +[check_dims] Jnn M dim#3416 dim#3452 i#20692 i#20699 i#20813 i#20820 lanetype#3416 lanetype#3452 v_1 v_2 +[visit_exp `%X%`_shape{lanetype#3416, dim#3416, i#20692}((Jnn : Jnn <: lanetype), `%`_dim{i#20699}(M))] +[visit_exp lanetype#3416] +[visit_id lanetype#3416] +[visit_exp dim#3416] +[visit_id dim#3416] +[visit_exp i#20692] +[visit_id i#20692] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#20699}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp `%`_dim{i#20699}(M)] +[visit_exp i#20699] +[visit_id i#20699] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `ADD`_vbinop_] +[visit_exp ()] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $ivbinop_(`%X%`_shape{lanetype#3452, dim#3452, i#20813}((Jnn : Jnn <: lanetype), `%`_dim{i#20820}(M)), def $iadd_, v_1, v_2)] +[visit_exp `%X%`_shape{lanetype#3452, dim#3452, i#20813}((Jnn : Jnn <: lanetype), `%`_dim{i#20820}(M))] +[visit_exp lanetype#3452] +[visit_id lanetype#3452] +[visit_exp dim#3452] +[visit_id dim#3452] +[visit_exp i#20813] +[visit_id i#20813] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#20820}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#20820}(M)] +[visit_exp i#20820] +[visit_id i#20820] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{lanetype#3416 : lanetype, dim#3416 : dim, i#20692 : nat, Jnn : Jnn, i#20699 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#3452 : lanetype, dim#3452 : dim, i#20813 : nat, i#20820 : nat}(`%X%`_shape{lanetype#3416, dim#3416, i#20692}((Jnn : Jnn <: lanetype), `%`_dim{i#20699}(M)), `ADD`_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape{lanetype#3452, dim#3452, i#20813}((Jnn : Jnn <: lanetype), `%`_dim{i#20820}(M)), def $iadd_, v_1, v_2) +[check_dims] Jnn M dim#3464 dim#3500 i#20845 i#20852 i#20966 i#20973 lanetype#3464 lanetype#3500 v_1 v_2 +[visit_exp `%X%`_shape{lanetype#3464, dim#3464, i#20845}((Jnn : Jnn <: lanetype), `%`_dim{i#20852}(M))] +[visit_exp lanetype#3464] +[visit_id lanetype#3464] +[visit_exp dim#3464] +[visit_id dim#3464] +[visit_exp i#20845] +[visit_id i#20845] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#20852}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp `%`_dim{i#20852}(M)] +[visit_exp i#20852] +[visit_id i#20852] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `SUB`_vbinop_] +[visit_exp ()] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $ivbinop_(`%X%`_shape{lanetype#3500, dim#3500, i#20966}((Jnn : Jnn <: lanetype), `%`_dim{i#20973}(M)), def $isub_, v_1, v_2)] +[visit_exp `%X%`_shape{lanetype#3500, dim#3500, i#20966}((Jnn : Jnn <: lanetype), `%`_dim{i#20973}(M))] +[visit_exp lanetype#3500] +[visit_id lanetype#3500] +[visit_exp dim#3500] +[visit_id dim#3500] +[visit_exp i#20966] +[visit_id i#20966] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#20973}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#20973}(M)] +[visit_exp i#20973] +[visit_id i#20973] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{lanetype#3464 : lanetype, dim#3464 : dim, i#20845 : nat, Jnn : Jnn, i#20852 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#3500 : lanetype, dim#3500 : dim, i#20966 : nat, i#20973 : nat}(`%X%`_shape{lanetype#3464, dim#3464, i#20845}((Jnn : Jnn <: lanetype), `%`_dim{i#20852}(M)), `SUB`_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape{lanetype#3500, dim#3500, i#20966}((Jnn : Jnn <: lanetype), `%`_dim{i#20973}(M)), def $isub_, v_1, v_2) +[check_dims] Jnn M dim#3512 dim#3548 i#20998 i#21005 i#21119 i#21126 lanetype#3512 lanetype#3548 v_1 v_2 +[visit_exp `%X%`_shape{lanetype#3512, dim#3512, i#20998}((Jnn : Jnn <: lanetype), `%`_dim{i#21005}(M))] +[visit_exp lanetype#3512] +[visit_id lanetype#3512] +[visit_exp dim#3512] +[visit_id dim#3512] +[visit_exp i#20998] +[visit_id i#20998] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#21005}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp `%`_dim{i#21005}(M)] +[visit_exp i#21005] +[visit_id i#21005] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `MUL`_vbinop_] +[visit_exp ()] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $ivbinop_(`%X%`_shape{lanetype#3548, dim#3548, i#21119}((Jnn : Jnn <: lanetype), `%`_dim{i#21126}(M)), def $imul_, v_1, v_2)] +[visit_exp `%X%`_shape{lanetype#3548, dim#3548, i#21119}((Jnn : Jnn <: lanetype), `%`_dim{i#21126}(M))] +[visit_exp lanetype#3548] +[visit_id lanetype#3548] +[visit_exp dim#3548] +[visit_id dim#3548] +[visit_exp i#21119] +[visit_id i#21119] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#21126}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#21126}(M)] +[visit_exp i#21126] +[visit_id i#21126] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{lanetype#3512 : lanetype, dim#3512 : dim, i#20998 : nat, Jnn : Jnn, i#21005 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#3548 : lanetype, dim#3548 : dim, i#21119 : nat, i#21126 : nat}(`%X%`_shape{lanetype#3512, dim#3512, i#20998}((Jnn : Jnn <: lanetype), `%`_dim{i#21005}(M)), `MUL`_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape{lanetype#3548, dim#3548, i#21119}((Jnn : Jnn <: lanetype), `%`_dim{i#21126}(M)), def $imul_, v_1, v_2) +[check_dims] Jnn M dim#3560 dim#3596 i#21151 i#21158 i#21272 i#21279 lanetype#3560 lanetype#3596 sx sx#96 v_1 v_2 +[visit_exp `%X%`_shape{lanetype#3560, dim#3560, i#21151}((Jnn : Jnn <: lanetype), `%`_dim{i#21158}(M))] +[visit_exp lanetype#3560] +[visit_id lanetype#3560] +[visit_exp dim#3560] +[visit_id dim#3560] +[visit_exp i#21151] +[visit_id i#21151] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#21158}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp `%`_dim{i#21158}(M)] +[visit_exp i#21158] +[visit_id i#21158] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `ADD_SAT`_vbinop_{sx#96}(sx)] +[visit_exp sx#96] +[visit_id sx#96] +[visit_exp (sx)] +[visit_exp sx] +[visit_id sx] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $ivbinopsx_(`%X%`_shape{lanetype#3596, dim#3596, i#21272}((Jnn : Jnn <: lanetype), `%`_dim{i#21279}(M)), def $iadd_sat_, sx, v_1, v_2)] +[visit_exp `%X%`_shape{lanetype#3596, dim#3596, i#21272}((Jnn : Jnn <: lanetype), `%`_dim{i#21279}(M))] +[visit_exp lanetype#3596] +[visit_id lanetype#3596] +[visit_exp dim#3596] +[visit_id dim#3596] +[visit_exp i#21272] +[visit_id i#21272] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#21279}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#21279}(M)] +[visit_exp i#21279] +[visit_id i#21279] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp sx] +[visit_id sx] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{lanetype#3560 : lanetype, dim#3560 : dim, i#21151 : nat, Jnn : Jnn, i#21158 : nat, M : M, sx#96 : sx, sx : sx, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#3596 : lanetype, dim#3596 : dim, i#21272 : nat, i#21279 : nat}(`%X%`_shape{lanetype#3560, dim#3560, i#21151}((Jnn : Jnn <: lanetype), `%`_dim{i#21158}(M)), `ADD_SAT`_vbinop_{sx#96}(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape{lanetype#3596, dim#3596, i#21272}((Jnn : Jnn <: lanetype), `%`_dim{i#21279}(M)), def $iadd_sat_, sx, v_1, v_2) +[check_dims] Jnn M dim#3608 dim#3644 i#21304 i#21311 i#21425 i#21432 lanetype#3608 lanetype#3644 sx sx#98 v_1 v_2 +[visit_exp `%X%`_shape{lanetype#3608, dim#3608, i#21304}((Jnn : Jnn <: lanetype), `%`_dim{i#21311}(M))] +[visit_exp lanetype#3608] +[visit_id lanetype#3608] +[visit_exp dim#3608] +[visit_id dim#3608] +[visit_exp i#21304] +[visit_id i#21304] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#21311}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp `%`_dim{i#21311}(M)] +[visit_exp i#21311] +[visit_id i#21311] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `SUB_SAT`_vbinop_{sx#98}(sx)] +[visit_exp sx#98] +[visit_id sx#98] +[visit_exp (sx)] +[visit_exp sx] +[visit_id sx] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $ivbinopsx_(`%X%`_shape{lanetype#3644, dim#3644, i#21425}((Jnn : Jnn <: lanetype), `%`_dim{i#21432}(M)), def $isub_sat_, sx, v_1, v_2)] +[visit_exp `%X%`_shape{lanetype#3644, dim#3644, i#21425}((Jnn : Jnn <: lanetype), `%`_dim{i#21432}(M))] +[visit_exp lanetype#3644] +[visit_id lanetype#3644] +[visit_exp dim#3644] +[visit_id dim#3644] +[visit_exp i#21425] +[visit_id i#21425] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#21432}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#21432}(M)] +[visit_exp i#21432] +[visit_id i#21432] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp sx] +[visit_id sx] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{lanetype#3608 : lanetype, dim#3608 : dim, i#21304 : nat, Jnn : Jnn, i#21311 : nat, M : M, sx#98 : sx, sx : sx, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#3644 : lanetype, dim#3644 : dim, i#21425 : nat, i#21432 : nat}(`%X%`_shape{lanetype#3608, dim#3608, i#21304}((Jnn : Jnn <: lanetype), `%`_dim{i#21311}(M)), `SUB_SAT`_vbinop_{sx#98}(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape{lanetype#3644, dim#3644, i#21425}((Jnn : Jnn <: lanetype), `%`_dim{i#21432}(M)), def $isub_sat_, sx, v_1, v_2) +[check_dims] Jnn M dim#3656 dim#3692 i#21457 i#21464 i#21578 i#21585 lanetype#3656 lanetype#3692 sx sx#100 v_1 v_2 +[visit_exp `%X%`_shape{lanetype#3656, dim#3656, i#21457}((Jnn : Jnn <: lanetype), `%`_dim{i#21464}(M))] +[visit_exp lanetype#3656] +[visit_id lanetype#3656] +[visit_exp dim#3656] +[visit_id dim#3656] +[visit_exp i#21457] +[visit_id i#21457] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#21464}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp `%`_dim{i#21464}(M)] +[visit_exp i#21464] +[visit_id i#21464] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `MIN`_vbinop_{sx#100}(sx)] +[visit_exp sx#100] +[visit_id sx#100] +[visit_exp (sx)] +[visit_exp sx] +[visit_id sx] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $ivbinopsx_(`%X%`_shape{lanetype#3692, dim#3692, i#21578}((Jnn : Jnn <: lanetype), `%`_dim{i#21585}(M)), def $imin_, sx, v_1, v_2)] +[visit_exp `%X%`_shape{lanetype#3692, dim#3692, i#21578}((Jnn : Jnn <: lanetype), `%`_dim{i#21585}(M))] +[visit_exp lanetype#3692] +[visit_id lanetype#3692] +[visit_exp dim#3692] +[visit_id dim#3692] +[visit_exp i#21578] +[visit_id i#21578] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#21585}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#21585}(M)] +[visit_exp i#21585] +[visit_id i#21585] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp sx] +[visit_id sx] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{lanetype#3656 : lanetype, dim#3656 : dim, i#21457 : nat, Jnn : Jnn, i#21464 : nat, M : M, sx#100 : sx, sx : sx, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#3692 : lanetype, dim#3692 : dim, i#21578 : nat, i#21585 : nat}(`%X%`_shape{lanetype#3656, dim#3656, i#21457}((Jnn : Jnn <: lanetype), `%`_dim{i#21464}(M)), `MIN`_vbinop_{sx#100}(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape{lanetype#3692, dim#3692, i#21578}((Jnn : Jnn <: lanetype), `%`_dim{i#21585}(M)), def $imin_, sx, v_1, v_2) +[check_dims] Jnn M dim#3704 dim#3740 i#21610 i#21617 i#21731 i#21738 lanetype#3704 lanetype#3740 sx sx#102 v_1 v_2 +[visit_exp `%X%`_shape{lanetype#3704, dim#3704, i#21610}((Jnn : Jnn <: lanetype), `%`_dim{i#21617}(M))] +[visit_exp lanetype#3704] +[visit_id lanetype#3704] +[visit_exp dim#3704] +[visit_id dim#3704] +[visit_exp i#21610] +[visit_id i#21610] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#21617}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp `%`_dim{i#21617}(M)] +[visit_exp i#21617] +[visit_id i#21617] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `MAX`_vbinop_{sx#102}(sx)] +[visit_exp sx#102] +[visit_id sx#102] +[visit_exp (sx)] +[visit_exp sx] +[visit_id sx] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $ivbinopsx_(`%X%`_shape{lanetype#3740, dim#3740, i#21731}((Jnn : Jnn <: lanetype), `%`_dim{i#21738}(M)), def $imax_, sx, v_1, v_2)] +[visit_exp `%X%`_shape{lanetype#3740, dim#3740, i#21731}((Jnn : Jnn <: lanetype), `%`_dim{i#21738}(M))] +[visit_exp lanetype#3740] +[visit_id lanetype#3740] +[visit_exp dim#3740] +[visit_id dim#3740] +[visit_exp i#21731] +[visit_id i#21731] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#21738}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#21738}(M)] +[visit_exp i#21738] +[visit_id i#21738] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp sx] +[visit_id sx] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{lanetype#3704 : lanetype, dim#3704 : dim, i#21610 : nat, Jnn : Jnn, i#21617 : nat, M : M, sx#102 : sx, sx : sx, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#3740 : lanetype, dim#3740 : dim, i#21731 : nat, i#21738 : nat}(`%X%`_shape{lanetype#3704, dim#3704, i#21610}((Jnn : Jnn <: lanetype), `%`_dim{i#21617}(M)), `MAX`_vbinop_{sx#102}(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape{lanetype#3740, dim#3740, i#21731}((Jnn : Jnn <: lanetype), `%`_dim{i#21738}(M)), def $imax_, sx, v_1, v_2) +[check_dims] Jnn M dim#3752 dim#3788 i#21763 i#21770 i#21884 i#21891 lanetype#3752 lanetype#3788 v_1 v_2 +[visit_exp `%X%`_shape{lanetype#3752, dim#3752, i#21763}((Jnn : Jnn <: lanetype), `%`_dim{i#21770}(M))] +[visit_exp lanetype#3752] +[visit_id lanetype#3752] +[visit_exp dim#3752] +[visit_id dim#3752] +[visit_exp i#21763] +[visit_id i#21763] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#21770}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp `%`_dim{i#21770}(M)] +[visit_exp i#21770] +[visit_id i#21770] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `AVGRU`_vbinop_] +[visit_exp ()] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $ivbinopsx_(`%X%`_shape{lanetype#3788, dim#3788, i#21884}((Jnn : Jnn <: lanetype), `%`_dim{i#21891}(M)), def $iavgr_, `U`_sx, v_1, v_2)] +[visit_exp `%X%`_shape{lanetype#3788, dim#3788, i#21884}((Jnn : Jnn <: lanetype), `%`_dim{i#21891}(M))] +[visit_exp lanetype#3788] +[visit_id lanetype#3788] +[visit_exp dim#3788] +[visit_id dim#3788] +[visit_exp i#21884] +[visit_id i#21884] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#21891}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#21891}(M)] +[visit_exp i#21891] +[visit_id i#21891] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{lanetype#3752 : lanetype, dim#3752 : dim, i#21763 : nat, Jnn : Jnn, i#21770 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#3788 : lanetype, dim#3788 : dim, i#21884 : nat, i#21891 : nat}(`%X%`_shape{lanetype#3752, dim#3752, i#21763}((Jnn : Jnn <: lanetype), `%`_dim{i#21770}(M)), `AVGRU`_vbinop_, v_1, v_2) = $ivbinopsx_(`%X%`_shape{lanetype#3788, dim#3788, i#21884}((Jnn : Jnn <: lanetype), `%`_dim{i#21891}(M)), def $iavgr_, `U`_sx, v_1, v_2) +[check_dims] Jnn M dim#3800 dim#3836 i#21916 i#21923 i#22037 i#22044 lanetype#3800 lanetype#3836 v_1 v_2 +[visit_exp `%X%`_shape{lanetype#3800, dim#3800, i#21916}((Jnn : Jnn <: lanetype), `%`_dim{i#21923}(M))] +[visit_exp lanetype#3800] +[visit_id lanetype#3800] +[visit_exp dim#3800] +[visit_id dim#3800] +[visit_exp i#21916] +[visit_id i#21916] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#21923}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp `%`_dim{i#21923}(M)] +[visit_exp i#21923] +[visit_id i#21923] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `Q15MULR_SATS`_vbinop_] +[visit_exp ()] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $ivbinopsx_(`%X%`_shape{lanetype#3836, dim#3836, i#22037}((Jnn : Jnn <: lanetype), `%`_dim{i#22044}(M)), def $iq15mulr_sat_, `S`_sx, v_1, v_2)] +[visit_exp `%X%`_shape{lanetype#3836, dim#3836, i#22037}((Jnn : Jnn <: lanetype), `%`_dim{i#22044}(M))] +[visit_exp lanetype#3836] +[visit_id lanetype#3836] +[visit_exp dim#3836] +[visit_id dim#3836] +[visit_exp i#22037] +[visit_id i#22037] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#22044}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#22044}(M)] +[visit_exp i#22044] +[visit_id i#22044] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{lanetype#3800 : lanetype, dim#3800 : dim, i#21916 : nat, Jnn : Jnn, i#21923 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#3836 : lanetype, dim#3836 : dim, i#22037 : nat, i#22044 : nat}(`%X%`_shape{lanetype#3800, dim#3800, i#21916}((Jnn : Jnn <: lanetype), `%`_dim{i#21923}(M)), `Q15MULR_SATS`_vbinop_, v_1, v_2) = $ivbinopsx_(`%X%`_shape{lanetype#3836, dim#3836, i#22037}((Jnn : Jnn <: lanetype), `%`_dim{i#22044}(M)), def $iq15mulr_sat_, `S`_sx, v_1, v_2) +[check_dims] Jnn M dim#3848 dim#3884 i#22069 i#22076 i#22190 i#22197 lanetype#3848 lanetype#3884 v_1 v_2 +[visit_exp `%X%`_shape{lanetype#3848, dim#3848, i#22069}((Jnn : Jnn <: lanetype), `%`_dim{i#22076}(M))] +[visit_exp lanetype#3848] +[visit_id lanetype#3848] +[visit_exp dim#3848] +[visit_id dim#3848] +[visit_exp i#22069] +[visit_id i#22069] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#22076}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp `%`_dim{i#22076}(M)] +[visit_exp i#22076] +[visit_id i#22076] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `RELAXED_Q15MULRS`_vbinop_] +[visit_exp ()] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $ivbinopsxnd_(`%X%`_shape{lanetype#3884, dim#3884, i#22190}((Jnn : Jnn <: lanetype), `%`_dim{i#22197}(M)), def $irelaxed_q15mulr_, `S`_sx, v_1, v_2)] +[visit_exp `%X%`_shape{lanetype#3884, dim#3884, i#22190}((Jnn : Jnn <: lanetype), `%`_dim{i#22197}(M))] +[visit_exp lanetype#3884] +[visit_id lanetype#3884] +[visit_exp dim#3884] +[visit_id dim#3884] +[visit_exp i#22190] +[visit_id i#22190] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#22197}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#22197}(M)] +[visit_exp i#22197] +[visit_id i#22197] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{lanetype#3848 : lanetype, dim#3848 : dim, i#22069 : nat, Jnn : Jnn, i#22076 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#3884 : lanetype, dim#3884 : dim, i#22190 : nat, i#22197 : nat}(`%X%`_shape{lanetype#3848, dim#3848, i#22069}((Jnn : Jnn <: lanetype), `%`_dim{i#22076}(M)), `RELAXED_Q15MULRS`_vbinop_, v_1, v_2) = $ivbinopsxnd_(`%X%`_shape{lanetype#3884, dim#3884, i#22190}((Jnn : Jnn <: lanetype), `%`_dim{i#22197}(M)), def $irelaxed_q15mulr_, `S`_sx, v_1, v_2) +[check_dims] Fnn M dim#3896 dim#3945 i#22222 i#22229 i#22356 i#22363 lanetype#3896 lanetype#3945 v_1 v_2 +[visit_exp `%X%`_shape{lanetype#3896, dim#3896, i#22222}((Fnn : Fnn <: lanetype), `%`_dim{i#22229}(M))] +[visit_exp lanetype#3896] +[visit_id lanetype#3896] +[visit_exp dim#3896] +[visit_id dim#3896] +[visit_exp i#22222] +[visit_id i#22222] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#22229}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `%`_dim{i#22229}(M)] +[visit_exp i#22229] +[visit_id i#22229] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `ADD`_vbinop_] +[visit_exp ()] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $fvbinop_(`%X%`_shape{lanetype#3945, dim#3945, i#22356}((Fnn : Fnn <: lanetype), `%`_dim{i#22363}(M)), def $fadd_, v_1, v_2)] +[visit_exp `%X%`_shape{lanetype#3945, dim#3945, i#22356}((Fnn : Fnn <: lanetype), `%`_dim{i#22363}(M))] +[visit_exp lanetype#3945] +[visit_id lanetype#3945] +[visit_exp dim#3945] +[visit_id dim#3945] +[visit_exp i#22356] +[visit_id i#22356] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#22363}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp `%`_dim{i#22363}(M)] +[visit_exp i#22363] +[visit_id i#22363] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{lanetype#3896 : lanetype, dim#3896 : dim, i#22222 : nat, Fnn : Fnn, i#22229 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#3945 : lanetype, dim#3945 : dim, i#22356 : nat, i#22363 : nat}(`%X%`_shape{lanetype#3896, dim#3896, i#22222}((Fnn : Fnn <: lanetype), `%`_dim{i#22229}(M)), `ADD`_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape{lanetype#3945, dim#3945, i#22356}((Fnn : Fnn <: lanetype), `%`_dim{i#22363}(M)), def $fadd_, v_1, v_2) +[check_dims] Fnn M dim#3957 dim#4006 i#22388 i#22395 i#22522 i#22529 lanetype#3957 lanetype#4006 v_1 v_2 +[visit_exp `%X%`_shape{lanetype#3957, dim#3957, i#22388}((Fnn : Fnn <: lanetype), `%`_dim{i#22395}(M))] +[visit_exp lanetype#3957] +[visit_id lanetype#3957] +[visit_exp dim#3957] +[visit_id dim#3957] +[visit_exp i#22388] +[visit_id i#22388] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#22395}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `%`_dim{i#22395}(M)] +[visit_exp i#22395] +[visit_id i#22395] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `SUB`_vbinop_] +[visit_exp ()] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $fvbinop_(`%X%`_shape{lanetype#4006, dim#4006, i#22522}((Fnn : Fnn <: lanetype), `%`_dim{i#22529}(M)), def $fsub_, v_1, v_2)] +[visit_exp `%X%`_shape{lanetype#4006, dim#4006, i#22522}((Fnn : Fnn <: lanetype), `%`_dim{i#22529}(M))] +[visit_exp lanetype#4006] +[visit_id lanetype#4006] +[visit_exp dim#4006] +[visit_id dim#4006] +[visit_exp i#22522] +[visit_id i#22522] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#22529}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp `%`_dim{i#22529}(M)] +[visit_exp i#22529] +[visit_id i#22529] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{lanetype#3957 : lanetype, dim#3957 : dim, i#22388 : nat, Fnn : Fnn, i#22395 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4006 : lanetype, dim#4006 : dim, i#22522 : nat, i#22529 : nat}(`%X%`_shape{lanetype#3957, dim#3957, i#22388}((Fnn : Fnn <: lanetype), `%`_dim{i#22395}(M)), `SUB`_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape{lanetype#4006, dim#4006, i#22522}((Fnn : Fnn <: lanetype), `%`_dim{i#22529}(M)), def $fsub_, v_1, v_2) +[check_dims] Fnn M dim#4018 dim#4067 i#22554 i#22561 i#22688 i#22695 lanetype#4018 lanetype#4067 v_1 v_2 +[visit_exp `%X%`_shape{lanetype#4018, dim#4018, i#22554}((Fnn : Fnn <: lanetype), `%`_dim{i#22561}(M))] +[visit_exp lanetype#4018] +[visit_id lanetype#4018] +[visit_exp dim#4018] +[visit_id dim#4018] +[visit_exp i#22554] +[visit_id i#22554] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#22561}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `%`_dim{i#22561}(M)] +[visit_exp i#22561] +[visit_id i#22561] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `MUL`_vbinop_] +[visit_exp ()] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $fvbinop_(`%X%`_shape{lanetype#4067, dim#4067, i#22688}((Fnn : Fnn <: lanetype), `%`_dim{i#22695}(M)), def $fmul_, v_1, v_2)] +[visit_exp `%X%`_shape{lanetype#4067, dim#4067, i#22688}((Fnn : Fnn <: lanetype), `%`_dim{i#22695}(M))] +[visit_exp lanetype#4067] +[visit_id lanetype#4067] +[visit_exp dim#4067] +[visit_id dim#4067] +[visit_exp i#22688] +[visit_id i#22688] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#22695}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp `%`_dim{i#22695}(M)] +[visit_exp i#22695] +[visit_id i#22695] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{lanetype#4018 : lanetype, dim#4018 : dim, i#22554 : nat, Fnn : Fnn, i#22561 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4067 : lanetype, dim#4067 : dim, i#22688 : nat, i#22695 : nat}(`%X%`_shape{lanetype#4018, dim#4018, i#22554}((Fnn : Fnn <: lanetype), `%`_dim{i#22561}(M)), `MUL`_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape{lanetype#4067, dim#4067, i#22688}((Fnn : Fnn <: lanetype), `%`_dim{i#22695}(M)), def $fmul_, v_1, v_2) +[check_dims] Fnn M dim#4079 dim#4128 i#22720 i#22727 i#22854 i#22861 lanetype#4079 lanetype#4128 v_1 v_2 +[visit_exp `%X%`_shape{lanetype#4079, dim#4079, i#22720}((Fnn : Fnn <: lanetype), `%`_dim{i#22727}(M))] +[visit_exp lanetype#4079] +[visit_id lanetype#4079] +[visit_exp dim#4079] +[visit_id dim#4079] +[visit_exp i#22720] +[visit_id i#22720] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#22727}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `%`_dim{i#22727}(M)] +[visit_exp i#22727] +[visit_id i#22727] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `DIV`_vbinop_] +[visit_exp ()] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $fvbinop_(`%X%`_shape{lanetype#4128, dim#4128, i#22854}((Fnn : Fnn <: lanetype), `%`_dim{i#22861}(M)), def $fdiv_, v_1, v_2)] +[visit_exp `%X%`_shape{lanetype#4128, dim#4128, i#22854}((Fnn : Fnn <: lanetype), `%`_dim{i#22861}(M))] +[visit_exp lanetype#4128] +[visit_id lanetype#4128] +[visit_exp dim#4128] +[visit_id dim#4128] +[visit_exp i#22854] +[visit_id i#22854] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#22861}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp `%`_dim{i#22861}(M)] +[visit_exp i#22861] +[visit_id i#22861] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{lanetype#4079 : lanetype, dim#4079 : dim, i#22720 : nat, Fnn : Fnn, i#22727 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4128 : lanetype, dim#4128 : dim, i#22854 : nat, i#22861 : nat}(`%X%`_shape{lanetype#4079, dim#4079, i#22720}((Fnn : Fnn <: lanetype), `%`_dim{i#22727}(M)), `DIV`_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape{lanetype#4128, dim#4128, i#22854}((Fnn : Fnn <: lanetype), `%`_dim{i#22861}(M)), def $fdiv_, v_1, v_2) +[check_dims] Fnn M dim#4140 dim#4189 i#22886 i#22893 i#23020 i#23027 lanetype#4140 lanetype#4189 v_1 v_2 +[visit_exp `%X%`_shape{lanetype#4140, dim#4140, i#22886}((Fnn : Fnn <: lanetype), `%`_dim{i#22893}(M))] +[visit_exp lanetype#4140] +[visit_id lanetype#4140] +[visit_exp dim#4140] +[visit_id dim#4140] +[visit_exp i#22886] +[visit_id i#22886] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#22893}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `%`_dim{i#22893}(M)] +[visit_exp i#22893] +[visit_id i#22893] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `MIN`_vbinop_] +[visit_exp ()] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $fvbinop_(`%X%`_shape{lanetype#4189, dim#4189, i#23020}((Fnn : Fnn <: lanetype), `%`_dim{i#23027}(M)), def $fmin_, v_1, v_2)] +[visit_exp `%X%`_shape{lanetype#4189, dim#4189, i#23020}((Fnn : Fnn <: lanetype), `%`_dim{i#23027}(M))] +[visit_exp lanetype#4189] +[visit_id lanetype#4189] +[visit_exp dim#4189] +[visit_id dim#4189] +[visit_exp i#23020] +[visit_id i#23020] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#23027}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp `%`_dim{i#23027}(M)] +[visit_exp i#23027] +[visit_id i#23027] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{lanetype#4140 : lanetype, dim#4140 : dim, i#22886 : nat, Fnn : Fnn, i#22893 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4189 : lanetype, dim#4189 : dim, i#23020 : nat, i#23027 : nat}(`%X%`_shape{lanetype#4140, dim#4140, i#22886}((Fnn : Fnn <: lanetype), `%`_dim{i#22893}(M)), `MIN`_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape{lanetype#4189, dim#4189, i#23020}((Fnn : Fnn <: lanetype), `%`_dim{i#23027}(M)), def $fmin_, v_1, v_2) +[check_dims] Fnn M dim#4201 dim#4250 i#23052 i#23059 i#23186 i#23193 lanetype#4201 lanetype#4250 v_1 v_2 +[visit_exp `%X%`_shape{lanetype#4201, dim#4201, i#23052}((Fnn : Fnn <: lanetype), `%`_dim{i#23059}(M))] +[visit_exp lanetype#4201] +[visit_id lanetype#4201] +[visit_exp dim#4201] +[visit_id dim#4201] +[visit_exp i#23052] +[visit_id i#23052] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#23059}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `%`_dim{i#23059}(M)] +[visit_exp i#23059] +[visit_id i#23059] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `MAX`_vbinop_] +[visit_exp ()] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $fvbinop_(`%X%`_shape{lanetype#4250, dim#4250, i#23186}((Fnn : Fnn <: lanetype), `%`_dim{i#23193}(M)), def $fmax_, v_1, v_2)] +[visit_exp `%X%`_shape{lanetype#4250, dim#4250, i#23186}((Fnn : Fnn <: lanetype), `%`_dim{i#23193}(M))] +[visit_exp lanetype#4250] +[visit_id lanetype#4250] +[visit_exp dim#4250] +[visit_id dim#4250] +[visit_exp i#23186] +[visit_id i#23186] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#23193}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp `%`_dim{i#23193}(M)] +[visit_exp i#23193] +[visit_id i#23193] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{lanetype#4201 : lanetype, dim#4201 : dim, i#23052 : nat, Fnn : Fnn, i#23059 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4250 : lanetype, dim#4250 : dim, i#23186 : nat, i#23193 : nat}(`%X%`_shape{lanetype#4201, dim#4201, i#23052}((Fnn : Fnn <: lanetype), `%`_dim{i#23059}(M)), `MAX`_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape{lanetype#4250, dim#4250, i#23186}((Fnn : Fnn <: lanetype), `%`_dim{i#23193}(M)), def $fmax_, v_1, v_2) +[check_dims] Fnn M dim#4262 dim#4311 i#23218 i#23225 i#23352 i#23359 lanetype#4262 lanetype#4311 v_1 v_2 +[visit_exp `%X%`_shape{lanetype#4262, dim#4262, i#23218}((Fnn : Fnn <: lanetype), `%`_dim{i#23225}(M))] +[visit_exp lanetype#4262] +[visit_id lanetype#4262] +[visit_exp dim#4262] +[visit_id dim#4262] +[visit_exp i#23218] +[visit_id i#23218] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#23225}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `%`_dim{i#23225}(M)] +[visit_exp i#23225] +[visit_id i#23225] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `PMIN`_vbinop_] +[visit_exp ()] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $fvbinop_(`%X%`_shape{lanetype#4311, dim#4311, i#23352}((Fnn : Fnn <: lanetype), `%`_dim{i#23359}(M)), def $fpmin_, v_1, v_2)] +[visit_exp `%X%`_shape{lanetype#4311, dim#4311, i#23352}((Fnn : Fnn <: lanetype), `%`_dim{i#23359}(M))] +[visit_exp lanetype#4311] +[visit_id lanetype#4311] +[visit_exp dim#4311] +[visit_id dim#4311] +[visit_exp i#23352] +[visit_id i#23352] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#23359}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp `%`_dim{i#23359}(M)] +[visit_exp i#23359] +[visit_id i#23359] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{lanetype#4262 : lanetype, dim#4262 : dim, i#23218 : nat, Fnn : Fnn, i#23225 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4311 : lanetype, dim#4311 : dim, i#23352 : nat, i#23359 : nat}(`%X%`_shape{lanetype#4262, dim#4262, i#23218}((Fnn : Fnn <: lanetype), `%`_dim{i#23225}(M)), `PMIN`_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape{lanetype#4311, dim#4311, i#23352}((Fnn : Fnn <: lanetype), `%`_dim{i#23359}(M)), def $fpmin_, v_1, v_2) +[check_dims] Fnn M dim#4323 dim#4372 i#23384 i#23391 i#23518 i#23525 lanetype#4323 lanetype#4372 v_1 v_2 +[visit_exp `%X%`_shape{lanetype#4323, dim#4323, i#23384}((Fnn : Fnn <: lanetype), `%`_dim{i#23391}(M))] +[visit_exp lanetype#4323] +[visit_id lanetype#4323] +[visit_exp dim#4323] +[visit_id dim#4323] +[visit_exp i#23384] +[visit_id i#23384] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#23391}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `%`_dim{i#23391}(M)] +[visit_exp i#23391] +[visit_id i#23391] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `PMAX`_vbinop_] +[visit_exp ()] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $fvbinop_(`%X%`_shape{lanetype#4372, dim#4372, i#23518}((Fnn : Fnn <: lanetype), `%`_dim{i#23525}(M)), def $fpmax_, v_1, v_2)] +[visit_exp `%X%`_shape{lanetype#4372, dim#4372, i#23518}((Fnn : Fnn <: lanetype), `%`_dim{i#23525}(M))] +[visit_exp lanetype#4372] +[visit_id lanetype#4372] +[visit_exp dim#4372] +[visit_id dim#4372] +[visit_exp i#23518] +[visit_id i#23518] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#23525}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp `%`_dim{i#23525}(M)] +[visit_exp i#23525] +[visit_id i#23525] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{lanetype#4323 : lanetype, dim#4323 : dim, i#23384 : nat, Fnn : Fnn, i#23391 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4372 : lanetype, dim#4372 : dim, i#23518 : nat, i#23525 : nat}(`%X%`_shape{lanetype#4323, dim#4323, i#23384}((Fnn : Fnn <: lanetype), `%`_dim{i#23391}(M)), `PMAX`_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape{lanetype#4372, dim#4372, i#23518}((Fnn : Fnn <: lanetype), `%`_dim{i#23525}(M)), def $fpmax_, v_1, v_2) +[check_dims] Fnn M dim#4384 dim#4433 i#23550 i#23557 i#23684 i#23691 lanetype#4384 lanetype#4433 v_1 v_2 +[visit_exp `%X%`_shape{lanetype#4384, dim#4384, i#23550}((Fnn : Fnn <: lanetype), `%`_dim{i#23557}(M))] +[visit_exp lanetype#4384] +[visit_id lanetype#4384] +[visit_exp dim#4384] +[visit_id dim#4384] +[visit_exp i#23550] +[visit_id i#23550] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#23557}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `%`_dim{i#23557}(M)] +[visit_exp i#23557] +[visit_id i#23557] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `RELAXED_MIN`_vbinop_] +[visit_exp ()] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $fvbinop_(`%X%`_shape{lanetype#4433, dim#4433, i#23684}((Fnn : Fnn <: lanetype), `%`_dim{i#23691}(M)), def $frelaxed_min_, v_1, v_2)] +[visit_exp `%X%`_shape{lanetype#4433, dim#4433, i#23684}((Fnn : Fnn <: lanetype), `%`_dim{i#23691}(M))] +[visit_exp lanetype#4433] +[visit_id lanetype#4433] +[visit_exp dim#4433] +[visit_id dim#4433] +[visit_exp i#23684] +[visit_id i#23684] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#23691}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp `%`_dim{i#23691}(M)] +[visit_exp i#23691] +[visit_id i#23691] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{lanetype#4384 : lanetype, dim#4384 : dim, i#23550 : nat, Fnn : Fnn, i#23557 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4433 : lanetype, dim#4433 : dim, i#23684 : nat, i#23691 : nat}(`%X%`_shape{lanetype#4384, dim#4384, i#23550}((Fnn : Fnn <: lanetype), `%`_dim{i#23557}(M)), `RELAXED_MIN`_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape{lanetype#4433, dim#4433, i#23684}((Fnn : Fnn <: lanetype), `%`_dim{i#23691}(M)), def $frelaxed_min_, v_1, v_2) +[check_dims] Fnn M dim#4445 dim#4494 i#23716 i#23723 i#23850 i#23857 lanetype#4445 lanetype#4494 v_1 v_2 +[visit_exp `%X%`_shape{lanetype#4445, dim#4445, i#23716}((Fnn : Fnn <: lanetype), `%`_dim{i#23723}(M))] +[visit_exp lanetype#4445] +[visit_id lanetype#4445] +[visit_exp dim#4445] +[visit_id dim#4445] +[visit_exp i#23716] +[visit_id i#23716] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#23723}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `%`_dim{i#23723}(M)] +[visit_exp i#23723] +[visit_id i#23723] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `RELAXED_MAX`_vbinop_] +[visit_exp ()] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $fvbinop_(`%X%`_shape{lanetype#4494, dim#4494, i#23850}((Fnn : Fnn <: lanetype), `%`_dim{i#23857}(M)), def $frelaxed_max_, v_1, v_2)] +[visit_exp `%X%`_shape{lanetype#4494, dim#4494, i#23850}((Fnn : Fnn <: lanetype), `%`_dim{i#23857}(M))] +[visit_exp lanetype#4494] +[visit_id lanetype#4494] +[visit_exp dim#4494] +[visit_id dim#4494] +[visit_exp i#23850] +[visit_id i#23850] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#23857}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp `%`_dim{i#23857}(M)] +[visit_exp i#23857] +[visit_id i#23857] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbinop_{lanetype#4445 : lanetype, dim#4445 : dim, i#23716 : nat, Fnn : Fnn, i#23723 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4494 : lanetype, dim#4494 : dim, i#23850 : nat, i#23857 : nat}(`%X%`_shape{lanetype#4445, dim#4445, i#23716}((Fnn : Fnn <: lanetype), `%`_dim{i#23723}(M)), `RELAXED_MAX`_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape{lanetype#4494, dim#4494, i#23850}((Fnn : Fnn <: lanetype), `%`_dim{i#23857}(M)), def $frelaxed_max_, v_1, v_2) +[check_dims] Jnn M dim#4506 dim#4542 i#23882 i#23889 i#24035 i#24042 lanetype#4506 lanetype#4542 v_1 v_2 v_3 +[visit_exp `%X%`_shape{lanetype#4506, dim#4506, i#23882}((Jnn : Jnn <: lanetype), `%`_dim{i#23889}(M))] +[visit_exp lanetype#4506] +[visit_id lanetype#4506] +[visit_exp dim#4506] +[visit_id dim#4506] +[visit_exp i#23882] +[visit_id i#23882] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#23889}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp `%`_dim{i#23889}(M)] +[visit_exp i#23889] +[visit_id i#23889] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `RELAXED_LANESELECT`_vternop_] +[visit_exp ()] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp v_3] +[visit_id v_3] +[visit_exp $ivternopnd_(`%X%`_shape{lanetype#4542, dim#4542, i#24035}((Jnn : Jnn <: lanetype), `%`_dim{i#24042}(M)), def $irelaxed_laneselect_, v_1, v_2, v_3)] +[visit_exp `%X%`_shape{lanetype#4542, dim#4542, i#24035}((Jnn : Jnn <: lanetype), `%`_dim{i#24042}(M))] +[visit_exp lanetype#4542] +[visit_id lanetype#4542] +[visit_exp dim#4542] +[visit_id dim#4542] +[visit_exp i#24035] +[visit_id i#24035] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#24042}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#24042}(M)] +[visit_exp i#24042] +[visit_id i#24042] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +[visit_exp v_3] +[visit_id v_3] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vternop_{lanetype#4506 : lanetype, dim#4506 : dim, i#23882 : nat, Jnn : Jnn, i#23889 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), v_3 : vec_(`V128`_Vnn), lanetype#4542 : lanetype, dim#4542 : dim, i#24035 : nat, i#24042 : nat}(`%X%`_shape{lanetype#4506, dim#4506, i#23882}((Jnn : Jnn <: lanetype), `%`_dim{i#23889}(M)), `RELAXED_LANESELECT`_vternop_, v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape{lanetype#4542, dim#4542, i#24035}((Jnn : Jnn <: lanetype), `%`_dim{i#24042}(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) +[check_dims] Fnn M dim#4554 dim#4603 i#24077 i#24084 i#24243 i#24250 lanetype#4554 lanetype#4603 v_1 v_2 v_3 +[visit_exp `%X%`_shape{lanetype#4554, dim#4554, i#24077}((Fnn : Fnn <: lanetype), `%`_dim{i#24084}(M))] +[visit_exp lanetype#4554] +[visit_id lanetype#4554] +[visit_exp dim#4554] +[visit_id dim#4554] +[visit_exp i#24077] +[visit_id i#24077] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#24084}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `%`_dim{i#24084}(M)] +[visit_exp i#24084] +[visit_id i#24084] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `RELAXED_MADD`_vternop_] +[visit_exp ()] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp v_3] +[visit_id v_3] +[visit_exp $fvternop_(`%X%`_shape{lanetype#4603, dim#4603, i#24243}((Fnn : Fnn <: lanetype), `%`_dim{i#24250}(M)), def $frelaxed_madd_, v_1, v_2, v_3)] +[visit_exp `%X%`_shape{lanetype#4603, dim#4603, i#24243}((Fnn : Fnn <: lanetype), `%`_dim{i#24250}(M))] +[visit_exp lanetype#4603] +[visit_id lanetype#4603] +[visit_exp dim#4603] +[visit_id dim#4603] +[visit_exp i#24243] +[visit_id i#24243] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#24250}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp `%`_dim{i#24250}(M)] +[visit_exp i#24250] +[visit_id i#24250] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +[visit_exp v_3] +[visit_id v_3] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vternop_{lanetype#4554 : lanetype, dim#4554 : dim, i#24077 : nat, Fnn : Fnn, i#24084 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), v_3 : vec_(`V128`_Vnn), lanetype#4603 : lanetype, dim#4603 : dim, i#24243 : nat, i#24250 : nat}(`%X%`_shape{lanetype#4554, dim#4554, i#24077}((Fnn : Fnn <: lanetype), `%`_dim{i#24084}(M)), `RELAXED_MADD`_vternop_, v_1, v_2, v_3) = $fvternop_(`%X%`_shape{lanetype#4603, dim#4603, i#24243}((Fnn : Fnn <: lanetype), `%`_dim{i#24250}(M)), def $frelaxed_madd_, v_1, v_2, v_3) +[check_dims] Fnn M dim#4615 dim#4664 i#24285 i#24292 i#24451 i#24458 lanetype#4615 lanetype#4664 v_1 v_2 v_3 +[visit_exp `%X%`_shape{lanetype#4615, dim#4615, i#24285}((Fnn : Fnn <: lanetype), `%`_dim{i#24292}(M))] +[visit_exp lanetype#4615] +[visit_id lanetype#4615] +[visit_exp dim#4615] +[visit_id dim#4615] +[visit_exp i#24285] +[visit_id i#24285] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#24292}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `%`_dim{i#24292}(M)] +[visit_exp i#24292] +[visit_id i#24292] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `RELAXED_NMADD`_vternop_] +[visit_exp ()] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp v_3] +[visit_id v_3] +[visit_exp $fvternop_(`%X%`_shape{lanetype#4664, dim#4664, i#24451}((Fnn : Fnn <: lanetype), `%`_dim{i#24458}(M)), def $frelaxed_nmadd_, v_1, v_2, v_3)] +[visit_exp `%X%`_shape{lanetype#4664, dim#4664, i#24451}((Fnn : Fnn <: lanetype), `%`_dim{i#24458}(M))] +[visit_exp lanetype#4664] +[visit_id lanetype#4664] +[visit_exp dim#4664] +[visit_id dim#4664] +[visit_exp i#24451] +[visit_id i#24451] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#24458}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp `%`_dim{i#24458}(M)] +[visit_exp i#24458] +[visit_id i#24458] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +[visit_exp v_3] +[visit_id v_3] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vternop_{lanetype#4615 : lanetype, dim#4615 : dim, i#24285 : nat, Fnn : Fnn, i#24292 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), v_3 : vec_(`V128`_Vnn), lanetype#4664 : lanetype, dim#4664 : dim, i#24451 : nat, i#24458 : nat}(`%X%`_shape{lanetype#4615, dim#4615, i#24285}((Fnn : Fnn <: lanetype), `%`_dim{i#24292}(M)), `RELAXED_NMADD`_vternop_, v_1, v_2, v_3) = $fvternop_(`%X%`_shape{lanetype#4664, dim#4664, i#24451}((Fnn : Fnn <: lanetype), `%`_dim{i#24458}(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) +[check_dims] Jnn M dim#4676 dim#4688 i#24493 i#24500 i#24539 i#24546 lanetype#4676 lanetype#4688 v_1 v_2 +[visit_exp `%X%`_shape{lanetype#4676, dim#4676, i#24493}((Jnn : Jnn <: lanetype), `%`_dim{i#24500}(M))] +[visit_exp lanetype#4676] +[visit_id lanetype#4676] +[visit_exp dim#4676] +[visit_id dim#4676] +[visit_exp i#24493] +[visit_id i#24493] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#24500}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp `%`_dim{i#24500}(M)] +[visit_exp i#24500] +[visit_id i#24500] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `EQ`_vrelop_] +[visit_exp ()] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $ivrelop_(`%X%`_shape{lanetype#4688, dim#4688, i#24539}((Jnn : Jnn <: lanetype), `%`_dim{i#24546}(M)), def $ieq_, v_1, v_2)] +[visit_exp `%X%`_shape{lanetype#4688, dim#4688, i#24539}((Jnn : Jnn <: lanetype), `%`_dim{i#24546}(M))] +[visit_exp lanetype#4688] +[visit_id lanetype#4688] +[visit_exp dim#4688] +[visit_id dim#4688] +[visit_exp i#24539] +[visit_id i#24539] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#24546}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#24546}(M)] +[visit_exp i#24546] +[visit_id i#24546] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{lanetype#4676 : lanetype, dim#4676 : dim, i#24493 : nat, Jnn : Jnn, i#24500 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4688 : lanetype, dim#4688 : dim, i#24539 : nat, i#24546 : nat}(`%X%`_shape{lanetype#4676, dim#4676, i#24493}((Jnn : Jnn <: lanetype), `%`_dim{i#24500}(M)), `EQ`_vrelop_, v_1, v_2) = $ivrelop_(`%X%`_shape{lanetype#4688, dim#4688, i#24539}((Jnn : Jnn <: lanetype), `%`_dim{i#24546}(M)), def $ieq_, v_1, v_2) +[check_dims] Jnn M dim#4700 dim#4712 i#24571 i#24578 i#24617 i#24624 lanetype#4700 lanetype#4712 v_1 v_2 +[visit_exp `%X%`_shape{lanetype#4700, dim#4700, i#24571}((Jnn : Jnn <: lanetype), `%`_dim{i#24578}(M))] +[visit_exp lanetype#4700] +[visit_id lanetype#4700] +[visit_exp dim#4700] +[visit_id dim#4700] +[visit_exp i#24571] +[visit_id i#24571] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#24578}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp `%`_dim{i#24578}(M)] +[visit_exp i#24578] +[visit_id i#24578] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `NE`_vrelop_] +[visit_exp ()] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $ivrelop_(`%X%`_shape{lanetype#4712, dim#4712, i#24617}((Jnn : Jnn <: lanetype), `%`_dim{i#24624}(M)), def $ine_, v_1, v_2)] +[visit_exp `%X%`_shape{lanetype#4712, dim#4712, i#24617}((Jnn : Jnn <: lanetype), `%`_dim{i#24624}(M))] +[visit_exp lanetype#4712] +[visit_id lanetype#4712] +[visit_exp dim#4712] +[visit_id dim#4712] +[visit_exp i#24617] +[visit_id i#24617] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#24624}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#24624}(M)] +[visit_exp i#24624] +[visit_id i#24624] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{lanetype#4700 : lanetype, dim#4700 : dim, i#24571 : nat, Jnn : Jnn, i#24578 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4712 : lanetype, dim#4712 : dim, i#24617 : nat, i#24624 : nat}(`%X%`_shape{lanetype#4700, dim#4700, i#24571}((Jnn : Jnn <: lanetype), `%`_dim{i#24578}(M)), `NE`_vrelop_, v_1, v_2) = $ivrelop_(`%X%`_shape{lanetype#4712, dim#4712, i#24617}((Jnn : Jnn <: lanetype), `%`_dim{i#24624}(M)), def $ine_, v_1, v_2) +[check_dims] Jnn M dim#4724 dim#4736 i#24649 i#24656 i#24695 i#24702 lanetype#4724 lanetype#4736 sx sx#104 v_1 v_2 +[visit_exp `%X%`_shape{lanetype#4724, dim#4724, i#24649}((Jnn : Jnn <: lanetype), `%`_dim{i#24656}(M))] +[visit_exp lanetype#4724] +[visit_id lanetype#4724] +[visit_exp dim#4724] +[visit_id dim#4724] +[visit_exp i#24649] +[visit_id i#24649] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#24656}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp `%`_dim{i#24656}(M)] +[visit_exp i#24656] +[visit_id i#24656] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `LT`_vrelop_{sx#104}(sx)] +[visit_exp sx#104] +[visit_id sx#104] +[visit_exp (sx)] +[visit_exp sx] +[visit_id sx] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $ivrelopsx_(`%X%`_shape{lanetype#4736, dim#4736, i#24695}((Jnn : Jnn <: lanetype), `%`_dim{i#24702}(M)), def $ilt_, sx, v_1, v_2)] +[visit_exp `%X%`_shape{lanetype#4736, dim#4736, i#24695}((Jnn : Jnn <: lanetype), `%`_dim{i#24702}(M))] +[visit_exp lanetype#4736] +[visit_id lanetype#4736] +[visit_exp dim#4736] +[visit_id dim#4736] +[visit_exp i#24695] +[visit_id i#24695] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#24702}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#24702}(M)] +[visit_exp i#24702] +[visit_id i#24702] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp sx] +[visit_id sx] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{lanetype#4724 : lanetype, dim#4724 : dim, i#24649 : nat, Jnn : Jnn, i#24656 : nat, M : M, sx#104 : sx, sx : sx, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4736 : lanetype, dim#4736 : dim, i#24695 : nat, i#24702 : nat}(`%X%`_shape{lanetype#4724, dim#4724, i#24649}((Jnn : Jnn <: lanetype), `%`_dim{i#24656}(M)), `LT`_vrelop_{sx#104}(sx), v_1, v_2) = $ivrelopsx_(`%X%`_shape{lanetype#4736, dim#4736, i#24695}((Jnn : Jnn <: lanetype), `%`_dim{i#24702}(M)), def $ilt_, sx, v_1, v_2) +[check_dims] Jnn M dim#4748 dim#4760 i#24727 i#24734 i#24773 i#24780 lanetype#4748 lanetype#4760 sx sx#106 v_1 v_2 +[visit_exp `%X%`_shape{lanetype#4748, dim#4748, i#24727}((Jnn : Jnn <: lanetype), `%`_dim{i#24734}(M))] +[visit_exp lanetype#4748] +[visit_id lanetype#4748] +[visit_exp dim#4748] +[visit_id dim#4748] +[visit_exp i#24727] +[visit_id i#24727] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#24734}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp `%`_dim{i#24734}(M)] +[visit_exp i#24734] +[visit_id i#24734] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `GT`_vrelop_{sx#106}(sx)] +[visit_exp sx#106] +[visit_id sx#106] +[visit_exp (sx)] +[visit_exp sx] +[visit_id sx] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $ivrelopsx_(`%X%`_shape{lanetype#4760, dim#4760, i#24773}((Jnn : Jnn <: lanetype), `%`_dim{i#24780}(M)), def $igt_, sx, v_1, v_2)] +[visit_exp `%X%`_shape{lanetype#4760, dim#4760, i#24773}((Jnn : Jnn <: lanetype), `%`_dim{i#24780}(M))] +[visit_exp lanetype#4760] +[visit_id lanetype#4760] +[visit_exp dim#4760] +[visit_id dim#4760] +[visit_exp i#24773] +[visit_id i#24773] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#24780}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#24780}(M)] +[visit_exp i#24780] +[visit_id i#24780] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp sx] +[visit_id sx] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{lanetype#4748 : lanetype, dim#4748 : dim, i#24727 : nat, Jnn : Jnn, i#24734 : nat, M : M, sx#106 : sx, sx : sx, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4760 : lanetype, dim#4760 : dim, i#24773 : nat, i#24780 : nat}(`%X%`_shape{lanetype#4748, dim#4748, i#24727}((Jnn : Jnn <: lanetype), `%`_dim{i#24734}(M)), `GT`_vrelop_{sx#106}(sx), v_1, v_2) = $ivrelopsx_(`%X%`_shape{lanetype#4760, dim#4760, i#24773}((Jnn : Jnn <: lanetype), `%`_dim{i#24780}(M)), def $igt_, sx, v_1, v_2) +[check_dims] Jnn M dim#4772 dim#4784 i#24805 i#24812 i#24851 i#24858 lanetype#4772 lanetype#4784 sx sx#108 v_1 v_2 +[visit_exp `%X%`_shape{lanetype#4772, dim#4772, i#24805}((Jnn : Jnn <: lanetype), `%`_dim{i#24812}(M))] +[visit_exp lanetype#4772] +[visit_id lanetype#4772] +[visit_exp dim#4772] +[visit_id dim#4772] +[visit_exp i#24805] +[visit_id i#24805] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#24812}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp `%`_dim{i#24812}(M)] +[visit_exp i#24812] +[visit_id i#24812] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `LE`_vrelop_{sx#108}(sx)] +[visit_exp sx#108] +[visit_id sx#108] +[visit_exp (sx)] +[visit_exp sx] +[visit_id sx] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $ivrelopsx_(`%X%`_shape{lanetype#4784, dim#4784, i#24851}((Jnn : Jnn <: lanetype), `%`_dim{i#24858}(M)), def $ile_, sx, v_1, v_2)] +[visit_exp `%X%`_shape{lanetype#4784, dim#4784, i#24851}((Jnn : Jnn <: lanetype), `%`_dim{i#24858}(M))] +[visit_exp lanetype#4784] +[visit_id lanetype#4784] +[visit_exp dim#4784] +[visit_id dim#4784] +[visit_exp i#24851] +[visit_id i#24851] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#24858}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#24858}(M)] +[visit_exp i#24858] +[visit_id i#24858] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp sx] +[visit_id sx] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{lanetype#4772 : lanetype, dim#4772 : dim, i#24805 : nat, Jnn : Jnn, i#24812 : nat, M : M, sx#108 : sx, sx : sx, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4784 : lanetype, dim#4784 : dim, i#24851 : nat, i#24858 : nat}(`%X%`_shape{lanetype#4772, dim#4772, i#24805}((Jnn : Jnn <: lanetype), `%`_dim{i#24812}(M)), `LE`_vrelop_{sx#108}(sx), v_1, v_2) = $ivrelopsx_(`%X%`_shape{lanetype#4784, dim#4784, i#24851}((Jnn : Jnn <: lanetype), `%`_dim{i#24858}(M)), def $ile_, sx, v_1, v_2) +[check_dims] Jnn M dim#4796 dim#4808 i#24883 i#24890 i#24929 i#24936 lanetype#4796 lanetype#4808 sx sx#110 v_1 v_2 +[visit_exp `%X%`_shape{lanetype#4796, dim#4796, i#24883}((Jnn : Jnn <: lanetype), `%`_dim{i#24890}(M))] +[visit_exp lanetype#4796] +[visit_id lanetype#4796] +[visit_exp dim#4796] +[visit_id dim#4796] +[visit_exp i#24883] +[visit_id i#24883] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#24890}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp `%`_dim{i#24890}(M)] +[visit_exp i#24890] +[visit_id i#24890] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `GE`_vrelop_{sx#110}(sx)] +[visit_exp sx#110] +[visit_id sx#110] +[visit_exp (sx)] +[visit_exp sx] +[visit_id sx] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $ivrelopsx_(`%X%`_shape{lanetype#4808, dim#4808, i#24929}((Jnn : Jnn <: lanetype), `%`_dim{i#24936}(M)), def $ige_, sx, v_1, v_2)] +[visit_exp `%X%`_shape{lanetype#4808, dim#4808, i#24929}((Jnn : Jnn <: lanetype), `%`_dim{i#24936}(M))] +[visit_exp lanetype#4808] +[visit_id lanetype#4808] +[visit_exp dim#4808] +[visit_id dim#4808] +[visit_exp i#24929] +[visit_id i#24929] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#24936}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#24936}(M)] +[visit_exp i#24936] +[visit_id i#24936] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp sx] +[visit_id sx] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{lanetype#4796 : lanetype, dim#4796 : dim, i#24883 : nat, Jnn : Jnn, i#24890 : nat, M : M, sx#110 : sx, sx : sx, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4808 : lanetype, dim#4808 : dim, i#24929 : nat, i#24936 : nat}(`%X%`_shape{lanetype#4796, dim#4796, i#24883}((Jnn : Jnn <: lanetype), `%`_dim{i#24890}(M)), `GE`_vrelop_{sx#110}(sx), v_1, v_2) = $ivrelopsx_(`%X%`_shape{lanetype#4808, dim#4808, i#24929}((Jnn : Jnn <: lanetype), `%`_dim{i#24936}(M)), def $ige_, sx, v_1, v_2) +[check_dims] Fnn M dim#4820 dim#4845 i#24961 i#24968 i#25020 i#25027 lanetype#4820 lanetype#4845 v_1 v_2 +[visit_exp `%X%`_shape{lanetype#4820, dim#4820, i#24961}((Fnn : Fnn <: lanetype), `%`_dim{i#24968}(M))] +[visit_exp lanetype#4820] +[visit_id lanetype#4820] +[visit_exp dim#4820] +[visit_id dim#4820] +[visit_exp i#24961] +[visit_id i#24961] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#24968}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `%`_dim{i#24968}(M)] +[visit_exp i#24968] +[visit_id i#24968] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `EQ`_vrelop_] +[visit_exp ()] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $fvrelop_(`%X%`_shape{lanetype#4845, dim#4845, i#25020}((Fnn : Fnn <: lanetype), `%`_dim{i#25027}(M)), def $feq_, v_1, v_2)] +[visit_exp `%X%`_shape{lanetype#4845, dim#4845, i#25020}((Fnn : Fnn <: lanetype), `%`_dim{i#25027}(M))] +[visit_exp lanetype#4845] +[visit_id lanetype#4845] +[visit_exp dim#4845] +[visit_id dim#4845] +[visit_exp i#25020] +[visit_id i#25020] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#25027}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp `%`_dim{i#25027}(M)] +[visit_exp i#25027] +[visit_id i#25027] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{lanetype#4820 : lanetype, dim#4820 : dim, i#24961 : nat, Fnn : Fnn, i#24968 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4845 : lanetype, dim#4845 : dim, i#25020 : nat, i#25027 : nat}(`%X%`_shape{lanetype#4820, dim#4820, i#24961}((Fnn : Fnn <: lanetype), `%`_dim{i#24968}(M)), `EQ`_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape{lanetype#4845, dim#4845, i#25020}((Fnn : Fnn <: lanetype), `%`_dim{i#25027}(M)), def $feq_, v_1, v_2) +[check_dims] Fnn M dim#4857 dim#4882 i#25052 i#25059 i#25111 i#25118 lanetype#4857 lanetype#4882 v_1 v_2 +[visit_exp `%X%`_shape{lanetype#4857, dim#4857, i#25052}((Fnn : Fnn <: lanetype), `%`_dim{i#25059}(M))] +[visit_exp lanetype#4857] +[visit_id lanetype#4857] +[visit_exp dim#4857] +[visit_id dim#4857] +[visit_exp i#25052] +[visit_id i#25052] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#25059}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `%`_dim{i#25059}(M)] +[visit_exp i#25059] +[visit_id i#25059] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `NE`_vrelop_] +[visit_exp ()] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $fvrelop_(`%X%`_shape{lanetype#4882, dim#4882, i#25111}((Fnn : Fnn <: lanetype), `%`_dim{i#25118}(M)), def $fne_, v_1, v_2)] +[visit_exp `%X%`_shape{lanetype#4882, dim#4882, i#25111}((Fnn : Fnn <: lanetype), `%`_dim{i#25118}(M))] +[visit_exp lanetype#4882] +[visit_id lanetype#4882] +[visit_exp dim#4882] +[visit_id dim#4882] +[visit_exp i#25111] +[visit_id i#25111] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#25118}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp `%`_dim{i#25118}(M)] +[visit_exp i#25118] +[visit_id i#25118] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{lanetype#4857 : lanetype, dim#4857 : dim, i#25052 : nat, Fnn : Fnn, i#25059 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4882 : lanetype, dim#4882 : dim, i#25111 : nat, i#25118 : nat}(`%X%`_shape{lanetype#4857, dim#4857, i#25052}((Fnn : Fnn <: lanetype), `%`_dim{i#25059}(M)), `NE`_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape{lanetype#4882, dim#4882, i#25111}((Fnn : Fnn <: lanetype), `%`_dim{i#25118}(M)), def $fne_, v_1, v_2) +[check_dims] Fnn M dim#4894 dim#4919 i#25143 i#25150 i#25202 i#25209 lanetype#4894 lanetype#4919 v_1 v_2 +[visit_exp `%X%`_shape{lanetype#4894, dim#4894, i#25143}((Fnn : Fnn <: lanetype), `%`_dim{i#25150}(M))] +[visit_exp lanetype#4894] +[visit_id lanetype#4894] +[visit_exp dim#4894] +[visit_id dim#4894] +[visit_exp i#25143] +[visit_id i#25143] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#25150}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `%`_dim{i#25150}(M)] +[visit_exp i#25150] +[visit_id i#25150] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `LT`_vrelop_] +[visit_exp ()] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $fvrelop_(`%X%`_shape{lanetype#4919, dim#4919, i#25202}((Fnn : Fnn <: lanetype), `%`_dim{i#25209}(M)), def $flt_, v_1, v_2)] +[visit_exp `%X%`_shape{lanetype#4919, dim#4919, i#25202}((Fnn : Fnn <: lanetype), `%`_dim{i#25209}(M))] +[visit_exp lanetype#4919] +[visit_id lanetype#4919] +[visit_exp dim#4919] +[visit_id dim#4919] +[visit_exp i#25202] +[visit_id i#25202] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#25209}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp `%`_dim{i#25209}(M)] +[visit_exp i#25209] +[visit_id i#25209] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{lanetype#4894 : lanetype, dim#4894 : dim, i#25143 : nat, Fnn : Fnn, i#25150 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4919 : lanetype, dim#4919 : dim, i#25202 : nat, i#25209 : nat}(`%X%`_shape{lanetype#4894, dim#4894, i#25143}((Fnn : Fnn <: lanetype), `%`_dim{i#25150}(M)), `LT`_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape{lanetype#4919, dim#4919, i#25202}((Fnn : Fnn <: lanetype), `%`_dim{i#25209}(M)), def $flt_, v_1, v_2) +[check_dims] Fnn M dim#4931 dim#4956 i#25234 i#25241 i#25293 i#25300 lanetype#4931 lanetype#4956 v_1 v_2 +[visit_exp `%X%`_shape{lanetype#4931, dim#4931, i#25234}((Fnn : Fnn <: lanetype), `%`_dim{i#25241}(M))] +[visit_exp lanetype#4931] +[visit_id lanetype#4931] +[visit_exp dim#4931] +[visit_id dim#4931] +[visit_exp i#25234] +[visit_id i#25234] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#25241}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `%`_dim{i#25241}(M)] +[visit_exp i#25241] +[visit_id i#25241] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `GT`_vrelop_] +[visit_exp ()] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $fvrelop_(`%X%`_shape{lanetype#4956, dim#4956, i#25293}((Fnn : Fnn <: lanetype), `%`_dim{i#25300}(M)), def $fgt_, v_1, v_2)] +[visit_exp `%X%`_shape{lanetype#4956, dim#4956, i#25293}((Fnn : Fnn <: lanetype), `%`_dim{i#25300}(M))] +[visit_exp lanetype#4956] +[visit_id lanetype#4956] +[visit_exp dim#4956] +[visit_id dim#4956] +[visit_exp i#25293] +[visit_id i#25293] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#25300}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp `%`_dim{i#25300}(M)] +[visit_exp i#25300] +[visit_id i#25300] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{lanetype#4931 : lanetype, dim#4931 : dim, i#25234 : nat, Fnn : Fnn, i#25241 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4956 : lanetype, dim#4956 : dim, i#25293 : nat, i#25300 : nat}(`%X%`_shape{lanetype#4931, dim#4931, i#25234}((Fnn : Fnn <: lanetype), `%`_dim{i#25241}(M)), `GT`_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape{lanetype#4956, dim#4956, i#25293}((Fnn : Fnn <: lanetype), `%`_dim{i#25300}(M)), def $fgt_, v_1, v_2) +[check_dims] Fnn M dim#4968 dim#4993 i#25325 i#25332 i#25384 i#25391 lanetype#4968 lanetype#4993 v_1 v_2 +[visit_exp `%X%`_shape{lanetype#4968, dim#4968, i#25325}((Fnn : Fnn <: lanetype), `%`_dim{i#25332}(M))] +[visit_exp lanetype#4968] +[visit_id lanetype#4968] +[visit_exp dim#4968] +[visit_id dim#4968] +[visit_exp i#25325] +[visit_id i#25325] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#25332}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `%`_dim{i#25332}(M)] +[visit_exp i#25332] +[visit_id i#25332] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `LE`_vrelop_] +[visit_exp ()] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $fvrelop_(`%X%`_shape{lanetype#4993, dim#4993, i#25384}((Fnn : Fnn <: lanetype), `%`_dim{i#25391}(M)), def $fle_, v_1, v_2)] +[visit_exp `%X%`_shape{lanetype#4993, dim#4993, i#25384}((Fnn : Fnn <: lanetype), `%`_dim{i#25391}(M))] +[visit_exp lanetype#4993] +[visit_id lanetype#4993] +[visit_exp dim#4993] +[visit_id dim#4993] +[visit_exp i#25384] +[visit_id i#25384] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#25391}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp `%`_dim{i#25391}(M)] +[visit_exp i#25391] +[visit_id i#25391] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{lanetype#4968 : lanetype, dim#4968 : dim, i#25325 : nat, Fnn : Fnn, i#25332 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4993 : lanetype, dim#4993 : dim, i#25384 : nat, i#25391 : nat}(`%X%`_shape{lanetype#4968, dim#4968, i#25325}((Fnn : Fnn <: lanetype), `%`_dim{i#25332}(M)), `LE`_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape{lanetype#4993, dim#4993, i#25384}((Fnn : Fnn <: lanetype), `%`_dim{i#25391}(M)), def $fle_, v_1, v_2) +[check_dims] Fnn M dim#5005 dim#5030 i#25416 i#25423 i#25475 i#25482 lanetype#5005 lanetype#5030 v_1 v_2 +[visit_exp `%X%`_shape{lanetype#5005, dim#5005, i#25416}((Fnn : Fnn <: lanetype), `%`_dim{i#25423}(M))] +[visit_exp lanetype#5005] +[visit_id lanetype#5005] +[visit_exp dim#5005] +[visit_id dim#5005] +[visit_exp i#25416] +[visit_id i#25416] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#25423}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp `%`_dim{i#25423}(M)] +[visit_exp i#25423] +[visit_id i#25423] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `GE`_vrelop_] +[visit_exp ()] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $fvrelop_(`%X%`_shape{lanetype#5030, dim#5030, i#25475}((Fnn : Fnn <: lanetype), `%`_dim{i#25482}(M)), def $fge_, v_1, v_2)] +[visit_exp `%X%`_shape{lanetype#5030, dim#5030, i#25475}((Fnn : Fnn <: lanetype), `%`_dim{i#25482}(M))] +[visit_exp lanetype#5030] +[visit_id lanetype#5030] +[visit_exp dim#5030] +[visit_id dim#5030] +[visit_exp i#25475] +[visit_id i#25475] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#25482}(M))] +[visit_exp (Fnn : Fnn <: lanetype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp `%`_dim{i#25482}(M)] +[visit_exp i#25482] +[visit_id i#25482] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vrelop_{lanetype#5005 : lanetype, dim#5005 : dim, i#25416 : nat, Fnn : Fnn, i#25423 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#5030 : lanetype, dim#5030 : dim, i#25475 : nat, i#25482 : nat}(`%X%`_shape{lanetype#5005, dim#5005, i#25416}((Fnn : Fnn <: lanetype), `%`_dim{i#25423}(M)), `GE`_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape{lanetype#5030, dim#5030, i#25475}((Fnn : Fnn <: lanetype), `%`_dim{i#25482}(M)), def $fge_, v_1, v_2) +[check_dims] Jnn Jnn#119 M dim#5042 dim#5054 i i#25507 i#25514 i#25553 i#25560 lanetype#5042 lanetype#5054 shape#421 v +[visit_exp `%`_ishape{shape#421, Jnn#119}(`%X%`_shape{lanetype#5042, dim#5042, i#25507}((Jnn : Jnn <: lanetype), `%`_dim{i#25514}(M)))] +[visit_exp shape#421] +[visit_id shape#421] +[visit_exp Jnn#119] +[visit_id Jnn#119] +[visit_exp (`%X%`_shape{lanetype#5042, dim#5042, i#25507}((Jnn : Jnn <: lanetype), `%`_dim{i#25514}(M)))] +[visit_exp `%X%`_shape{lanetype#5042, dim#5042, i#25507}((Jnn : Jnn <: lanetype), `%`_dim{i#25514}(M))] +[visit_exp lanetype#5042] +[visit_id lanetype#5042] +[visit_exp dim#5042] +[visit_id dim#5042] +[visit_exp i#25507] +[visit_id i#25507] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#25514}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp `%`_dim{i#25514}(M)] +[visit_exp i#25514] +[visit_id i#25514] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `SHL`_vshiftop_] +[visit_exp ()] +[visit_exp v] +[visit_id v] +[visit_exp i] +[visit_id i] +[visit_exp $ivshiftop_(`%X%`_shape{lanetype#5054, dim#5054, i#25553}((Jnn : Jnn <: lanetype), `%`_dim{i#25560}(M)), def $ishl_, v, i)] +[visit_exp `%X%`_shape{lanetype#5054, dim#5054, i#25553}((Jnn : Jnn <: lanetype), `%`_dim{i#25560}(M))] +[visit_exp lanetype#5054] +[visit_id lanetype#5054] +[visit_exp dim#5054] +[visit_id dim#5054] +[visit_exp i#25553] +[visit_id i#25553] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#25560}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#25560}(M)] +[visit_exp i#25560] +[visit_id i#25560] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v] +[visit_id v] not free +[visit_exp i] +[visit_id i] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vshiftop_{shape#421 : shape, Jnn#119 : Jnn, lanetype#5042 : lanetype, dim#5042 : dim, i#25507 : nat, Jnn : Jnn, i#25514 : nat, M : M, v : vec_(`V128`_Vnn), i : u32, lanetype#5054 : lanetype, dim#5054 : dim, i#25553 : nat, i#25560 : nat}(`%`_ishape{shape#421, Jnn#119}(`%X%`_shape{lanetype#5042, dim#5042, i#25507}((Jnn : Jnn <: lanetype), `%`_dim{i#25514}(M))), `SHL`_vshiftop_, v, i) = $ivshiftop_(`%X%`_shape{lanetype#5054, dim#5054, i#25553}((Jnn : Jnn <: lanetype), `%`_dim{i#25560}(M)), def $ishl_, v, i) +[check_dims] Jnn Jnn#123 M dim#5066 dim#5078 i i#25585 i#25592 i#25631 i#25638 lanetype#5066 lanetype#5078 shape#433 sx sx#112 v +[visit_exp `%`_ishape{shape#433, Jnn#123}(`%X%`_shape{lanetype#5066, dim#5066, i#25585}((Jnn : Jnn <: lanetype), `%`_dim{i#25592}(M)))] +[visit_exp shape#433] +[visit_id shape#433] +[visit_exp Jnn#123] +[visit_id Jnn#123] +[visit_exp (`%X%`_shape{lanetype#5066, dim#5066, i#25585}((Jnn : Jnn <: lanetype), `%`_dim{i#25592}(M)))] +[visit_exp `%X%`_shape{lanetype#5066, dim#5066, i#25585}((Jnn : Jnn <: lanetype), `%`_dim{i#25592}(M))] +[visit_exp lanetype#5066] +[visit_id lanetype#5066] +[visit_exp dim#5066] +[visit_id dim#5066] +[visit_exp i#25585] +[visit_id i#25585] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#25592}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp `%`_dim{i#25592}(M)] +[visit_exp i#25592] +[visit_id i#25592] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `SHR`_vshiftop_{sx#112}(sx)] +[visit_exp sx#112] +[visit_id sx#112] +[visit_exp (sx)] +[visit_exp sx] +[visit_id sx] +[visit_exp v] +[visit_id v] +[visit_exp i] +[visit_id i] +[visit_exp $ivshiftopsx_(`%X%`_shape{lanetype#5078, dim#5078, i#25631}((Jnn : Jnn <: lanetype), `%`_dim{i#25638}(M)), def $ishr_, sx, v, i)] +[visit_exp `%X%`_shape{lanetype#5078, dim#5078, i#25631}((Jnn : Jnn <: lanetype), `%`_dim{i#25638}(M))] +[visit_exp lanetype#5078] +[visit_id lanetype#5078] +[visit_exp dim#5078] +[visit_id dim#5078] +[visit_exp i#25631] +[visit_id i#25631] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#25638}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#25638}(M)] +[visit_exp i#25638] +[visit_id i#25638] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp sx] +[visit_id sx] not free +[visit_exp v] +[visit_id v] not free +[visit_exp i] +[visit_id i] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vshiftop_{shape#433 : shape, Jnn#123 : Jnn, lanetype#5066 : lanetype, dim#5066 : dim, i#25585 : nat, Jnn : Jnn, i#25592 : nat, M : M, sx#112 : sx, sx : sx, v : vec_(`V128`_Vnn), i : u32, lanetype#5078 : lanetype, dim#5078 : dim, i#25631 : nat, i#25638 : nat}(`%`_ishape{shape#433, Jnn#123}(`%X%`_shape{lanetype#5066, dim#5066, i#25585}((Jnn : Jnn <: lanetype), `%`_dim{i#25592}(M))), `SHR`_vshiftop_{sx#112}(sx), v, i) = $ivshiftopsx_(`%X%`_shape{lanetype#5078, dim#5078, i#25631}((Jnn : Jnn <: lanetype), `%`_dim{i#25638}(M)), def $ishr_, sx, v, i) +[check_dims] Jnn Jnn#127 M dim#5090 dim#5102 i#25663 i#25670 i#25697 i#25704 lanetype#5090 lanetype#5102 shape#445 v +[visit_exp `%`_ishape{shape#445, Jnn#127}(`%X%`_shape{lanetype#5090, dim#5090, i#25663}((Jnn : Jnn <: lanetype), `%`_dim{i#25670}(M)))] +[visit_exp shape#445] +[visit_id shape#445] +[visit_exp Jnn#127] +[visit_id Jnn#127] +[visit_exp (`%X%`_shape{lanetype#5090, dim#5090, i#25663}((Jnn : Jnn <: lanetype), `%`_dim{i#25670}(M)))] +[visit_exp `%X%`_shape{lanetype#5090, dim#5090, i#25663}((Jnn : Jnn <: lanetype), `%`_dim{i#25670}(M))] +[visit_exp lanetype#5090] +[visit_id lanetype#5090] +[visit_exp dim#5090] +[visit_id dim#5090] +[visit_exp i#25663] +[visit_id i#25663] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#25670}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp `%`_dim{i#25670}(M)] +[visit_exp i#25670] +[visit_id i#25670] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp v] +[visit_id v] +[visit_exp $ivbitmaskop_(`%X%`_shape{lanetype#5102, dim#5102, i#25697}((Jnn : Jnn <: lanetype), `%`_dim{i#25704}(M)), v)] +[visit_exp `%X%`_shape{lanetype#5102, dim#5102, i#25697}((Jnn : Jnn <: lanetype), `%`_dim{i#25704}(M))] +[visit_exp lanetype#5102] +[visit_id lanetype#5102] +[visit_exp dim#5102] +[visit_id dim#5102] +[visit_exp i#25697] +[visit_id i#25697] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#25704}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#25704}(M)] +[visit_exp i#25704] +[visit_id i#25704] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v] +[visit_id v] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vbitmaskop_{shape#445 : shape, Jnn#127 : Jnn, lanetype#5090 : lanetype, dim#5090 : dim, i#25663 : nat, Jnn : Jnn, i#25670 : nat, M : M, v : vec_(`V128`_Vnn), lanetype#5102 : lanetype, dim#5102 : dim, i#25697 : nat, i#25704 : nat}(`%`_ishape{shape#445, Jnn#127}(`%X%`_shape{lanetype#5090, dim#5090, i#25663}((Jnn : Jnn <: lanetype), `%`_dim{i#25670}(M))), v) = $ivbitmaskop_(`%X%`_shape{lanetype#5102, dim#5102, i#25697}((Jnn : Jnn <: lanetype), `%`_dim{i#25704}(M)), v) +[check_dims] M dim#5114 dim#5126 i#25719 i#25726 i#25765 i#25772 lanetype#5114 lanetype#5126 shape#457 v_1 v_2 +[visit_exp `%`_bshape{shape#457}(`%X%`_shape{lanetype#5114, dim#5114, i#25719}(`I8`_lanetype, `%`_dim{i#25726}(M)))] +[visit_exp shape#457] +[visit_id shape#457] +[visit_exp (`%X%`_shape{lanetype#5114, dim#5114, i#25719}(`I8`_lanetype, `%`_dim{i#25726}(M)))] +[visit_exp `%X%`_shape{lanetype#5114, dim#5114, i#25719}(`I8`_lanetype, `%`_dim{i#25726}(M))] +[visit_exp lanetype#5114] +[visit_id lanetype#5114] +[visit_exp dim#5114] +[visit_id dim#5114] +[visit_exp i#25719] +[visit_id i#25719] +[visit_exp (`I8`_lanetype, `%`_dim{i#25726}(M))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#25726}(M)] +[visit_exp i#25726] +[visit_id i#25726] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `SWIZZLE`_vswizzlop_] +[visit_exp ()] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $ivswizzlop_(`%X%`_shape{lanetype#5126, dim#5126, i#25765}(`I8`_lanetype, `%`_dim{i#25772}(M)), def $iswizzle_lane_, v_1, v_2)] +[visit_exp `%X%`_shape{lanetype#5126, dim#5126, i#25765}(`I8`_lanetype, `%`_dim{i#25772}(M))] +[visit_exp lanetype#5126] +[visit_id lanetype#5126] +[visit_exp dim#5126] +[visit_id dim#5126] +[visit_exp i#25765] +[visit_id i#25765] +[visit_exp (`I8`_lanetype, `%`_dim{i#25772}(M))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#25772}(M)] +[visit_exp i#25772] +[visit_id i#25772] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vswizzlop_{shape#457 : shape, lanetype#5114 : lanetype, dim#5114 : dim, i#25719 : nat, i#25726 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#5126 : lanetype, dim#5126 : dim, i#25765 : nat, i#25772 : nat}(`%`_bshape{shape#457}(`%X%`_shape{lanetype#5114, dim#5114, i#25719}(`I8`_lanetype, `%`_dim{i#25726}(M))), `SWIZZLE`_vswizzlop_, v_1, v_2) = $ivswizzlop_(`%X%`_shape{lanetype#5126, dim#5126, i#25765}(`I8`_lanetype, `%`_dim{i#25772}(M)), def $iswizzle_lane_, v_1, v_2) +[check_dims] M dim#5138 dim#5150 i#25797 i#25804 i#25843 i#25850 lanetype#5138 lanetype#5150 shape#469 v_1 v_2 +[visit_exp `%`_bshape{shape#469}(`%X%`_shape{lanetype#5138, dim#5138, i#25797}(`I8`_lanetype, `%`_dim{i#25804}(M)))] +[visit_exp shape#469] +[visit_id shape#469] +[visit_exp (`%X%`_shape{lanetype#5138, dim#5138, i#25797}(`I8`_lanetype, `%`_dim{i#25804}(M)))] +[visit_exp `%X%`_shape{lanetype#5138, dim#5138, i#25797}(`I8`_lanetype, `%`_dim{i#25804}(M))] +[visit_exp lanetype#5138] +[visit_id lanetype#5138] +[visit_exp dim#5138] +[visit_id dim#5138] +[visit_exp i#25797] +[visit_id i#25797] +[visit_exp (`I8`_lanetype, `%`_dim{i#25804}(M))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#25804}(M)] +[visit_exp i#25804] +[visit_id i#25804] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `RELAXED_SWIZZLE`_vswizzlop_] +[visit_exp ()] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $ivswizzlop_(`%X%`_shape{lanetype#5150, dim#5150, i#25843}(`I8`_lanetype, `%`_dim{i#25850}(M)), def $irelaxed_swizzle_lane_, v_1, v_2)] +[visit_exp `%X%`_shape{lanetype#5150, dim#5150, i#25843}(`I8`_lanetype, `%`_dim{i#25850}(M))] +[visit_exp lanetype#5150] +[visit_id lanetype#5150] +[visit_exp dim#5150] +[visit_id dim#5150] +[visit_exp i#25843] +[visit_id i#25843] +[visit_exp (`I8`_lanetype, `%`_dim{i#25850}(M))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#25850}(M)] +[visit_exp i#25850] +[visit_id i#25850] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vswizzlop_{shape#469 : shape, lanetype#5138 : lanetype, dim#5138 : dim, i#25797 : nat, i#25804 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#5150 : lanetype, dim#5150 : dim, i#25843 : nat, i#25850 : nat}(`%`_bshape{shape#469}(`%X%`_shape{lanetype#5138, dim#5138, i#25797}(`I8`_lanetype, `%`_dim{i#25804}(M))), `RELAXED_SWIZZLE`_vswizzlop_, v_1, v_2) = $ivswizzlop_(`%X%`_shape{lanetype#5150, dim#5150, i#25843}(`I8`_lanetype, `%`_dim{i#25850}(M)), def $irelaxed_swizzle_lane_, v_1, v_2) +[check_dims] M dim#5162 dim#5174 i i#25875 i#25882 i#25946 i#25953 lanetype#5162 lanetype#5174 shape#481 v_1 v_2 +[visit_exp `%`_bshape{shape#481}(`%X%`_shape{lanetype#5162, dim#5162, i#25875}(`I8`_lanetype, `%`_dim{i#25882}(M)))] +[visit_exp shape#481] +[visit_id shape#481] +[visit_exp (`%X%`_shape{lanetype#5162, dim#5162, i#25875}(`I8`_lanetype, `%`_dim{i#25882}(M)))] +[visit_exp `%X%`_shape{lanetype#5162, dim#5162, i#25875}(`I8`_lanetype, `%`_dim{i#25882}(M))] +[visit_exp lanetype#5162] +[visit_id lanetype#5162] +[visit_exp dim#5162] +[visit_id dim#5162] +[visit_exp i#25875] +[visit_id i#25875] +[visit_exp (`I8`_lanetype, `%`_dim{i#25882}(M))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#25882}(M)] +[visit_exp i#25882] +[visit_id i#25882] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp i*{i <- `i*`}] +[scope_enter i] +[visit_exp i] +[visit_id i] not free +[visit_id i] not free +[scope_exit i] +[visit_exp `i*`] +[visit_id i*] no dims +[visit_id i*] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $ivshufflop_(`%X%`_shape{lanetype#5174, dim#5174, i#25946}(`I8`_lanetype, `%`_dim{i#25953}(M)), i*{i <- `i*`}, v_1, v_2)] +[visit_exp `%X%`_shape{lanetype#5174, dim#5174, i#25946}(`I8`_lanetype, `%`_dim{i#25953}(M))] +[visit_exp lanetype#5174] +[visit_id lanetype#5174] +[visit_exp dim#5174] +[visit_id dim#5174] +[visit_exp i#25946] +[visit_id i#25946] +[visit_exp (`I8`_lanetype, `%`_dim{i#25953}(M))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#25953}(M)] +[visit_exp i#25953] +[visit_id i#25953] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp i*{i <- `i*`}] +[scope_enter i] +[visit_exp i] +[visit_id i] not free +[visit_id i] not free +[scope_exit i] +[visit_exp `i*`] +[visit_id i*] not free +[visit_id i*] no dims +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vshufflop_{shape#481 : shape, lanetype#5162 : lanetype, dim#5162 : dim, i#25875 : nat, i#25882 : nat, M : M, `i*` : laneidx*, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#5174 : lanetype, dim#5174 : dim, i#25946 : nat, i#25953 : nat}(`%`_bshape{shape#481}(`%X%`_shape{lanetype#5162, dim#5162, i#25875}(`I8`_lanetype, `%`_dim{i#25882}(M))), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape{lanetype#5174, dim#5174, i#25946}(`I8`_lanetype, `%`_dim{i#25953}(M)), i*{i <- `i*`}, v_1, v_2) +[check_dims] Jnn_1 Jnn_2 M_1 M_2 c c_1 dim#5186 dim#5198 half half#5 i#26001 i#26008 i#26013 i#26020 lanetype#5186 lanetype#5198 sx sx#114 +[visit_exp `%X%`_shape{lanetype#5186, dim#5186, i#26001}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#26008}(M_1))] +[visit_exp lanetype#5186] +[visit_id lanetype#5186] +[visit_exp dim#5186] +[visit_id dim#5186] +[visit_exp i#26001] +[visit_id i#26001] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#26008}(M_1))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] +[visit_exp `%`_dim{i#26008}(M_1)] +[visit_exp i#26008] +[visit_id i#26008] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] +[visit_exp `%X%`_shape{lanetype#5198, dim#5198, i#26013}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#26020}(M_2))] +[visit_exp lanetype#5198] +[visit_id lanetype#5198] +[visit_exp dim#5198] +[visit_id dim#5198] +[visit_exp i#26013] +[visit_id i#26013] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#26020}(M_2))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] +[visit_exp `%`_dim{i#26020}(M_2)] +[visit_exp i#26020] +[visit_id i#26020] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] +[visit_exp `EXTEND`_vcvtop__{half#5, sx#114}(half, sx)] +[visit_exp half#5] +[visit_id half#5] +[visit_exp sx#114] +[visit_id sx#114] +[visit_exp (half, sx)] +[visit_exp half] +[visit_id half] +[visit_exp sx] +[visit_id sx] +[visit_exp c_1] +[visit_id c_1] +[visit_exp [c]] +[visit_exp c] +[visit_id c] +[visit_exp (c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1))] +[visit_exp c] +[visit_id c] not free +[visit_exp $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1)] +[visit_exp $lsizenn1((Jnn_1 : Jnn <: lanetype))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] not free +[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] not free +[visit_exp sx] +[visit_id sx] not free +[visit_exp c_1] +[visit_id c_1] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{lanetype#5186 : lanetype, dim#5186 : dim, i#26001 : nat, Jnn_1 : Jnn, i#26008 : nat, M_1 : M, lanetype#5198 : lanetype, dim#5198 : dim, i#26013 : nat, Jnn_2 : Jnn, i#26020 : nat, M_2 : M, half#5 : half, sx#114 : sx, half : half, sx : sx, c_1 : lane_($lanetype(`%X%`_shape{lanetype#5186, dim#5186, i#26001}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#26008}(M_1)))), c : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))}(`%X%`_shape{lanetype#5186, dim#5186, i#26001}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#26008}(M_1)), `%X%`_shape{lanetype#5198, dim#5198, i#26013}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#26020}(M_2)), `EXTEND`_vcvtop__{half#5, sx#114}(half, sx), c_1) = [c] + -- if (c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1)) +[check_dims] Fnn_2 Jnn_1 M_1 M_2 c c_1 dim#5222 dim#5234 half half?#5 i#26109 i#26116 i#26121 i#26128 lanetype#5222 lanetype#5234 sx sx#116 +[visit_exp `%X%`_shape{lanetype#5222, dim#5222, i#26109}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#26116}(M_1))] +[visit_exp lanetype#5222] +[visit_id lanetype#5222] +[visit_exp dim#5222] +[visit_id dim#5222] +[visit_exp i#26109] +[visit_id i#26109] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#26116}(M_1))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] +[visit_exp `%`_dim{i#26116}(M_1)] +[visit_exp i#26116] +[visit_id i#26116] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] +[visit_exp `%X%`_shape{lanetype#5234, dim#5234, i#26121}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#26128}(M_2))] +[visit_exp lanetype#5234] +[visit_id lanetype#5234] +[visit_exp dim#5234] +[visit_id dim#5234] +[visit_exp i#26121] +[visit_id i#26121] +[visit_exp ((Fnn_2 : Fnn <: lanetype), `%`_dim{i#26128}(M_2))] +[visit_exp (Fnn_2 : Fnn <: lanetype)] +[visit_exp Fnn_2] +[visit_id Fnn_2] +[visit_exp `%`_dim{i#26128}(M_2)] +[visit_exp i#26128] +[visit_id i#26128] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] +[visit_exp `CONVERT`_vcvtop__{`half?#5`, sx#116}(half?{half <- `half?`}, sx)] +[visit_exp `half?#5`] +[visit_id half?#5] +[visit_exp sx#116] +[visit_id sx#116] +[visit_exp (half?{half <- `half?`}, sx)] +[visit_exp half?{half <- `half?`}] +[scope_enter half] +[visit_exp half] +[visit_id half] not free +[visit_id half] not free +[scope_exit half] +[visit_exp `half?`] +[visit_id half?] no dims +[visit_id half?] +[visit_exp sx] +[visit_id sx] +[visit_exp c_1] +[visit_id c_1] +[visit_exp [c]] +[visit_exp c] +[visit_id c] +[visit_exp (c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1))] +[visit_exp c] +[visit_id c] not free +[visit_exp $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1)] +[visit_exp $lsizenn1((Jnn_1 : Jnn <: lanetype))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] not free +[visit_exp $lsizenn2((Fnn_2 : Fnn <: lanetype))] +[visit_exp (Fnn_2 : Fnn <: lanetype)] +[visit_exp Fnn_2] +[visit_id Fnn_2] not free +[visit_exp sx] +[visit_id sx] not free +[visit_exp c_1] +[visit_id c_1] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{lanetype#5222 : lanetype, dim#5222 : dim, i#26109 : nat, Jnn_1 : Jnn, i#26116 : nat, M_1 : M, lanetype#5234 : lanetype, dim#5234 : dim, i#26121 : nat, Fnn_2 : Fnn, i#26128 : nat, M_2 : M, `half?#5` : half?, sx#116 : sx, `half?` : half?, sx : sx, c_1 : lane_($lanetype(`%X%`_shape{lanetype#5222, dim#5222, i#26109}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#26116}(M_1)))), c : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))}(`%X%`_shape{lanetype#5222, dim#5222, i#26109}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#26116}(M_1)), `%X%`_shape{lanetype#5234, dim#5234, i#26121}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#26128}(M_2)), `CONVERT`_vcvtop__{`half?#5`, sx#116}(half?{half <- `half?`}, sx), c_1) = [c] + -- if (c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1)) +[check_dims] Fnn_1 Inn_2 M_1 M_2 c c_1 dim#5273 dim#5285 i#26208 i#26215 i#26220 i#26227 lanetype#5273 lanetype#5285 sx sx#148 zero zero?#39 +[visit_exp `%X%`_shape{lanetype#5273, dim#5273, i#26208}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26215}(M_1))] +[visit_exp lanetype#5273] +[visit_id lanetype#5273] +[visit_exp dim#5273] +[visit_id dim#5273] +[visit_exp i#26208] +[visit_id i#26208] +[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26215}(M_1))] +[visit_exp (Fnn_1 : Fnn <: lanetype)] +[visit_exp Fnn_1] +[visit_id Fnn_1] +[visit_exp `%`_dim{i#26215}(M_1)] +[visit_exp i#26215] +[visit_id i#26215] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] +[visit_exp `%X%`_shape{lanetype#5285, dim#5285, i#26220}((Inn_2 : Inn <: lanetype), `%`_dim{i#26227}(M_2))] +[visit_exp lanetype#5285] +[visit_id lanetype#5285] +[visit_exp dim#5285] +[visit_id dim#5285] +[visit_exp i#26220] +[visit_id i#26220] +[visit_exp ((Inn_2 : Inn <: lanetype), `%`_dim{i#26227}(M_2))] +[visit_exp (Inn_2 : Inn <: lanetype)] +[visit_exp Inn_2] +[visit_id Inn_2] +[visit_exp `%`_dim{i#26227}(M_2)] +[visit_exp i#26227] +[visit_id i#26227] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] +[visit_exp `TRUNC_SAT`_vcvtop__{sx#148, `zero?#39`}(sx, zero?{zero <- `zero?`})] +[visit_exp sx#148] +[visit_id sx#148] +[visit_exp `zero?#39`] +[visit_id zero?#39] +[visit_exp (sx, zero?{zero <- `zero?`})] +[visit_exp sx] +[visit_id sx] +[visit_exp zero?{zero <- `zero?`}] +[scope_enter zero] +[visit_exp zero] +[visit_id zero] not free +[visit_id zero] not free +[scope_exit zero] +[visit_exp `zero?`] +[visit_id zero?] no dims +[visit_id zero?] +[visit_exp c_1] +[visit_id c_1] +[visit_exp lift(c?{c <- `c?`})] +[visit_exp c?{c <- `c?`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c?`] +[visit_id c?] no dims +[visit_id c?] +[visit_exp (c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : Inn <: lanetype)), sx, c_1))] +[visit_exp c?{c <- `c?`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c?`] +[visit_id c?] not free +[visit_id c?] no dims +[visit_exp $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : Inn <: lanetype)), sx, c_1)] +[visit_exp $lsizenn1((Fnn_1 : Fnn <: lanetype))] +[visit_exp (Fnn_1 : Fnn <: lanetype)] +[visit_exp Fnn_1] +[visit_id Fnn_1] not free +[visit_exp $lsizenn2((Inn_2 : Inn <: lanetype))] +[visit_exp (Inn_2 : Inn <: lanetype)] +[visit_exp Inn_2] +[visit_id Inn_2] not free +[visit_exp sx] +[visit_id sx] not free +[visit_exp c_1] +[visit_id c_1] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{lanetype#5273 : lanetype, dim#5273 : dim, i#26208 : nat, Fnn_1 : Fnn, i#26215 : nat, M_1 : M, lanetype#5285 : lanetype, dim#5285 : dim, i#26220 : nat, Inn_2 : Inn, i#26227 : nat, M_2 : M, sx#148 : sx, `zero?#39` : zero?, sx : sx, `zero?` : zero?, c_1 : lane_($lanetype(`%X%`_shape{lanetype#5273, dim#5273, i#26208}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26215}(M_1)))), `c?` : iN($lsizenn2((Inn_2 : Inn <: lanetype)))?}(`%X%`_shape{lanetype#5273, dim#5273, i#26208}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26215}(M_1)), `%X%`_shape{lanetype#5285, dim#5285, i#26220}((Inn_2 : Inn <: lanetype), `%`_dim{i#26227}(M_2)), `TRUNC_SAT`_vcvtop__{sx#148, `zero?#39`}(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) + -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : Inn <: lanetype)), sx, c_1)) +[check_dims] Fnn_1 Inn_2 M_1 M_2 c c_1 dim#5361 dim#5373 i#26384 i#26391 i#26396 i#26403 lanetype#5361 lanetype#5373 sx sx#180 zero zero?#71 +[visit_exp `%X%`_shape{lanetype#5361, dim#5361, i#26384}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26391}(M_1))] +[visit_exp lanetype#5361] +[visit_id lanetype#5361] +[visit_exp dim#5361] +[visit_id dim#5361] +[visit_exp i#26384] +[visit_id i#26384] +[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26391}(M_1))] +[visit_exp (Fnn_1 : Fnn <: lanetype)] +[visit_exp Fnn_1] +[visit_id Fnn_1] +[visit_exp `%`_dim{i#26391}(M_1)] +[visit_exp i#26391] +[visit_id i#26391] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] +[visit_exp `%X%`_shape{lanetype#5373, dim#5373, i#26396}((Inn_2 : Inn <: lanetype), `%`_dim{i#26403}(M_2))] +[visit_exp lanetype#5373] +[visit_id lanetype#5373] +[visit_exp dim#5373] +[visit_id dim#5373] +[visit_exp i#26396] +[visit_id i#26396] +[visit_exp ((Inn_2 : Inn <: lanetype), `%`_dim{i#26403}(M_2))] +[visit_exp (Inn_2 : Inn <: lanetype)] +[visit_exp Inn_2] +[visit_id Inn_2] +[visit_exp `%`_dim{i#26403}(M_2)] +[visit_exp i#26403] +[visit_id i#26403] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] +[visit_exp `RELAXED_TRUNC`_vcvtop__{sx#180, `zero?#71`}(sx, zero?{zero <- `zero?`})] +[visit_exp sx#180] +[visit_id sx#180] +[visit_exp `zero?#71`] +[visit_id zero?#71] +[visit_exp (sx, zero?{zero <- `zero?`})] +[visit_exp sx] +[visit_id sx] +[visit_exp zero?{zero <- `zero?`}] +[scope_enter zero] +[visit_exp zero] +[visit_id zero] not free +[visit_id zero] not free +[scope_exit zero] +[visit_exp `zero?`] +[visit_id zero?] no dims +[visit_id zero?] +[visit_exp c_1] +[visit_id c_1] +[visit_exp lift(c?{c <- `c?`})] +[visit_exp c?{c <- `c?`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c?`] +[visit_id c?] no dims +[visit_id c?] +[visit_exp (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : Inn <: lanetype)), sx, c_1))] +[visit_exp c?{c <- `c?`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c?`] +[visit_id c?] not free +[visit_id c?] no dims +[visit_exp $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : Inn <: lanetype)), sx, c_1)] +[visit_exp $lsizenn1((Fnn_1 : Fnn <: lanetype))] +[visit_exp (Fnn_1 : Fnn <: lanetype)] +[visit_exp Fnn_1] +[visit_id Fnn_1] not free +[visit_exp $lsizenn2((Inn_2 : Inn <: lanetype))] +[visit_exp (Inn_2 : Inn <: lanetype)] +[visit_exp Inn_2] +[visit_id Inn_2] not free +[visit_exp sx] +[visit_id sx] not free +[visit_exp c_1] +[visit_id c_1] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{lanetype#5361 : lanetype, dim#5361 : dim, i#26384 : nat, Fnn_1 : Fnn, i#26391 : nat, M_1 : M, lanetype#5373 : lanetype, dim#5373 : dim, i#26396 : nat, Inn_2 : Inn, i#26403 : nat, M_2 : M, sx#180 : sx, `zero?#71` : zero?, sx : sx, `zero?` : zero?, c_1 : lane_($lanetype(`%X%`_shape{lanetype#5361, dim#5361, i#26384}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26391}(M_1)))), `c?` : iN($lsizenn2((Inn_2 : Inn <: lanetype)))?}(`%X%`_shape{lanetype#5361, dim#5361, i#26384}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26391}(M_1)), `%X%`_shape{lanetype#5373, dim#5373, i#26396}((Inn_2 : Inn <: lanetype), `%`_dim{i#26403}(M_2)), `RELAXED_TRUNC`_vcvtop__{sx#180, `zero?#71`}(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) + -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : Inn <: lanetype)), sx, c_1)) +[check_dims] Fnn_1 Fnn_2 M_1 M_2 c c_1 dim#5449 dim#5461 i#26560 i#26567 i#26572 i#26579 lanetype#5449 lanetype#5461 zero#125 +[visit_exp `%X%`_shape{lanetype#5449, dim#5449, i#26560}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26567}(M_1))] +[visit_exp lanetype#5449] +[visit_id lanetype#5449] +[visit_exp dim#5449] +[visit_id dim#5449] +[visit_exp i#26560] +[visit_id i#26560] +[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26567}(M_1))] +[visit_exp (Fnn_1 : Fnn <: lanetype)] +[visit_exp Fnn_1] +[visit_id Fnn_1] +[visit_exp `%`_dim{i#26567}(M_1)] +[visit_exp i#26567] +[visit_id i#26567] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] +[visit_exp `%X%`_shape{lanetype#5461, dim#5461, i#26572}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#26579}(M_2))] +[visit_exp lanetype#5461] +[visit_id lanetype#5461] +[visit_exp dim#5461] +[visit_id dim#5461] +[visit_exp i#26572] +[visit_id i#26572] +[visit_exp ((Fnn_2 : Fnn <: lanetype), `%`_dim{i#26579}(M_2))] +[visit_exp (Fnn_2 : Fnn <: lanetype)] +[visit_exp Fnn_2] +[visit_id Fnn_2] +[visit_exp `%`_dim{i#26579}(M_2)] +[visit_exp i#26579] +[visit_id i#26579] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] +[visit_exp `DEMOTE`_vcvtop__{zero#125}(`ZERO`_zero)] +[visit_exp zero#125] +[visit_id zero#125] +[visit_exp (`ZERO`_zero)] +[visit_exp `ZERO`_zero] +[visit_exp ()] +[visit_exp c_1] +[visit_id c_1] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] no dims +[visit_id c*] +[visit_exp (c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1))] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[visit_exp $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)] +[visit_exp $lsizenn1((Fnn_1 : Fnn <: lanetype))] +[visit_exp (Fnn_1 : Fnn <: lanetype)] +[visit_exp Fnn_1] +[visit_id Fnn_1] not free +[visit_exp $lsizenn2((Fnn_2 : Fnn <: lanetype))] +[visit_exp (Fnn_2 : Fnn <: lanetype)] +[visit_exp Fnn_2] +[visit_id Fnn_2] not free +[visit_exp c_1] +[visit_id c_1] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{lanetype#5449 : lanetype, dim#5449 : dim, i#26560 : nat, Fnn_1 : Fnn, i#26567 : nat, M_1 : M, lanetype#5461 : lanetype, dim#5461 : dim, i#26572 : nat, Fnn_2 : Fnn, i#26579 : nat, M_2 : M, zero#125 : zero, c_1 : lane_($lanetype(`%X%`_shape{lanetype#5449, dim#5449, i#26560}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26567}(M_1)))), `c*` : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))*}(`%X%`_shape{lanetype#5449, dim#5449, i#26560}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26567}(M_1)), `%X%`_shape{lanetype#5461, dim#5461, i#26572}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#26579}(M_2)), `DEMOTE`_vcvtop__{zero#125}(`ZERO`_zero), c_1) = c*{c <- `c*`} + -- if (c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)) +[check_dims] Fnn_1 Fnn_2 M_1 M_2 c c_1 dim#5536 dim#5548 i#26683 i#26690 i#26695 i#26702 lanetype#5536 lanetype#5548 +[visit_exp `%X%`_shape{lanetype#5536, dim#5536, i#26683}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26690}(M_1))] +[visit_exp lanetype#5536] +[visit_id lanetype#5536] +[visit_exp dim#5536] +[visit_id dim#5536] +[visit_exp i#26683] +[visit_id i#26683] +[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26690}(M_1))] +[visit_exp (Fnn_1 : Fnn <: lanetype)] +[visit_exp Fnn_1] +[visit_id Fnn_1] +[visit_exp `%`_dim{i#26690}(M_1)] +[visit_exp i#26690] +[visit_id i#26690] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] +[visit_exp `%X%`_shape{lanetype#5548, dim#5548, i#26695}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#26702}(M_2))] +[visit_exp lanetype#5548] +[visit_id lanetype#5548] +[visit_exp dim#5548] +[visit_id dim#5548] +[visit_exp i#26695] +[visit_id i#26695] +[visit_exp ((Fnn_2 : Fnn <: lanetype), `%`_dim{i#26702}(M_2))] +[visit_exp (Fnn_2 : Fnn <: lanetype)] +[visit_exp Fnn_2] +[visit_id Fnn_2] +[visit_exp `%`_dim{i#26702}(M_2)] +[visit_exp i#26702] +[visit_id i#26702] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] +[visit_exp `PROMOTELOW`_vcvtop__] +[visit_exp ()] +[visit_exp c_1] +[visit_id c_1] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] no dims +[visit_id c*] +[visit_exp (c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1))] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[visit_exp $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)] +[visit_exp $lsizenn1((Fnn_1 : Fnn <: lanetype))] +[visit_exp (Fnn_1 : Fnn <: lanetype)] +[visit_exp Fnn_1] +[visit_id Fnn_1] not free +[visit_exp $lsizenn2((Fnn_2 : Fnn <: lanetype))] +[visit_exp (Fnn_2 : Fnn <: lanetype)] +[visit_exp Fnn_2] +[visit_id Fnn_2] not free +[visit_exp c_1] +[visit_id c_1] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $lcvtop__{lanetype#5536 : lanetype, dim#5536 : dim, i#26683 : nat, Fnn_1 : Fnn, i#26690 : nat, M_1 : M, lanetype#5548 : lanetype, dim#5548 : dim, i#26695 : nat, Fnn_2 : Fnn, i#26702 : nat, M_2 : M, c_1 : lane_($lanetype(`%X%`_shape{lanetype#5536, dim#5536, i#26683}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26690}(M_1)))), `c*` : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))*}(`%X%`_shape{lanetype#5536, dim#5536, i#26683}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26690}(M_1)), `%X%`_shape{lanetype#5548, dim#5548, i#26695}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#26702}(M_2)), `PROMOTELOW`_vcvtop__, c_1) = c*{c <- `c*`} + -- if (c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)) +[check_dims] Lnn_1 Lnn_2 M c c_1 dim#5623 dim#5635 dim#5671 dim#5683 dim#5711 dim#5723 dim#5751 dim#5867 dim#5879 dim#5914 i#26806 i#26813 i#26818 i#26825 i#26866 i#26873 i#26878 i#26885 i#26906 i#26913 i#26918 i#26925 i#26946 i#26953 i#27120 i#27127 i#27132 i#27139 i#27181 i#27188 lanetype#5623 lanetype#5635 lanetype#5671 lanetype#5683 lanetype#5711 lanetype#5723 lanetype#5751 lanetype#5867 lanetype#5879 lanetype#5914 v v_1 vcvtop +[visit_exp `%X%`_shape{lanetype#5623, dim#5623, i#26806}(Lnn_1, `%`_dim{i#26813}(M))] +[visit_exp lanetype#5623] +[visit_id lanetype#5623] +[visit_exp dim#5623] +[visit_id dim#5623] +[visit_exp i#26806] +[visit_id i#26806] +[visit_exp (Lnn_1, `%`_dim{i#26813}(M))] +[visit_exp Lnn_1] +[visit_id Lnn_1] +[visit_exp `%`_dim{i#26813}(M)] +[visit_exp i#26813] +[visit_id i#26813] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `%X%`_shape{lanetype#5635, dim#5635, i#26818}(Lnn_2, `%`_dim{i#26825}(M))] +[visit_exp lanetype#5635] +[visit_id lanetype#5635] +[visit_exp dim#5635] +[visit_id dim#5635] +[visit_exp i#26818] +[visit_id i#26818] +[visit_exp (Lnn_2, `%`_dim{i#26825}(M))] +[visit_exp Lnn_2] +[visit_id Lnn_2] +[visit_exp `%`_dim{i#26825}(M)] +[visit_exp i#26825] +[visit_id i#26825] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp vcvtop] +[visit_id vcvtop] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v] +[visit_id v] +[visit_exp (($halfop(`%X%`_shape{lanetype#5671, dim#5671, i#26866}(Lnn_1, `%`_dim{i#26873}(M)), `%X%`_shape{lanetype#5683, dim#5683, i#26878}(Lnn_2, `%`_dim{i#26885}(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape{lanetype#5711, dim#5711, i#26906}(Lnn_1, `%`_dim{i#26913}(M)), `%X%`_shape{lanetype#5723, dim#5723, i#26918}(Lnn_2, `%`_dim{i#26925}(M)), vcvtop) = ?()))] +[visit_exp ($halfop(`%X%`_shape{lanetype#5671, dim#5671, i#26866}(Lnn_1, `%`_dim{i#26873}(M)), `%X%`_shape{lanetype#5683, dim#5683, i#26878}(Lnn_2, `%`_dim{i#26885}(M)), vcvtop) = ?())] +[visit_exp $halfop(`%X%`_shape{lanetype#5671, dim#5671, i#26866}(Lnn_1, `%`_dim{i#26873}(M)), `%X%`_shape{lanetype#5683, dim#5683, i#26878}(Lnn_2, `%`_dim{i#26885}(M)), vcvtop)] +[visit_exp `%X%`_shape{lanetype#5671, dim#5671, i#26866}(Lnn_1, `%`_dim{i#26873}(M))] +[visit_exp lanetype#5671] +[visit_id lanetype#5671] +[visit_exp dim#5671] +[visit_id dim#5671] +[visit_exp i#26866] +[visit_id i#26866] +[visit_exp (Lnn_1, `%`_dim{i#26873}(M))] +[visit_exp Lnn_1] +[visit_id Lnn_1] not free +[visit_exp `%`_dim{i#26873}(M)] +[visit_exp i#26873] +[visit_id i#26873] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp `%X%`_shape{lanetype#5683, dim#5683, i#26878}(Lnn_2, `%`_dim{i#26885}(M))] +[visit_exp lanetype#5683] +[visit_id lanetype#5683] +[visit_exp dim#5683] +[visit_id dim#5683] +[visit_exp i#26878] +[visit_id i#26878] +[visit_exp (Lnn_2, `%`_dim{i#26885}(M))] +[visit_exp Lnn_2] +[visit_id Lnn_2] not free +[visit_exp `%`_dim{i#26885}(M)] +[visit_exp i#26885] +[visit_id i#26885] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp vcvtop] +[visit_id vcvtop] not free +[visit_exp ?()] +[visit_exp ($zeroop(`%X%`_shape{lanetype#5711, dim#5711, i#26906}(Lnn_1, `%`_dim{i#26913}(M)), `%X%`_shape{lanetype#5723, dim#5723, i#26918}(Lnn_2, `%`_dim{i#26925}(M)), vcvtop) = ?())] +[visit_exp $zeroop(`%X%`_shape{lanetype#5711, dim#5711, i#26906}(Lnn_1, `%`_dim{i#26913}(M)), `%X%`_shape{lanetype#5723, dim#5723, i#26918}(Lnn_2, `%`_dim{i#26925}(M)), vcvtop)] +[visit_exp `%X%`_shape{lanetype#5711, dim#5711, i#26906}(Lnn_1, `%`_dim{i#26913}(M))] +[visit_exp lanetype#5711] +[visit_id lanetype#5711] +[visit_exp dim#5711] +[visit_id dim#5711] +[visit_exp i#26906] +[visit_id i#26906] +[visit_exp (Lnn_1, `%`_dim{i#26913}(M))] +[visit_exp Lnn_1] +[visit_id Lnn_1] not free +[visit_exp `%`_dim{i#26913}(M)] +[visit_exp i#26913] +[visit_id i#26913] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp `%X%`_shape{lanetype#5723, dim#5723, i#26918}(Lnn_2, `%`_dim{i#26925}(M))] +[visit_exp lanetype#5723] +[visit_id lanetype#5723] +[visit_exp dim#5723] +[visit_id dim#5723] +[visit_exp i#26918] +[visit_id i#26918] +[visit_exp (Lnn_2, `%`_dim{i#26925}(M))] +[visit_exp Lnn_2] +[visit_id Lnn_2] not free +[visit_exp `%`_dim{i#26925}(M)] +[visit_exp i#26925] +[visit_id i#26925] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp vcvtop] +[visit_id vcvtop] not free +[visit_exp ?()] +[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#5751, dim#5751, i#26946}(Lnn_1, `%`_dim{i#26953}(M)), v_1))] +[visit_exp c_1*{c_1 <- `c_1*`}] +[scope_enter c_1] +[visit_exp c_1] +[visit_id c_1] not free +[visit_id c_1] not free +[scope_exit c_1] +[visit_exp `c_1*`] +[visit_id c_1*] no dims +[visit_id c_1*] +[visit_exp $lanes_(`%X%`_shape{lanetype#5751, dim#5751, i#26946}(Lnn_1, `%`_dim{i#26953}(M)), v_1)] +[visit_exp `%X%`_shape{lanetype#5751, dim#5751, i#26946}(Lnn_1, `%`_dim{i#26953}(M))] +[visit_exp lanetype#5751] +[visit_id lanetype#5751] +[visit_exp dim#5751] +[visit_id dim#5751] +[visit_exp i#26946] +[visit_id i#26946] +[visit_exp (Lnn_1, `%`_dim{i#26953}(M))] +[visit_exp Lnn_1] +[visit_id Lnn_1] not free +[visit_exp `%`_dim{i#26953}(M)] +[visit_exp i#26953] +[visit_id i#26953] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape{lanetype#5867, dim#5867, i#27120}(Lnn_1, `%`_dim{i#27127}(M)), `%X%`_shape{lanetype#5879, dim#5879, i#27132}(Lnn_2, `%`_dim{i#27139}(M)), vcvtop, c_1)*{c_1 <- `c_1*`, dim#5867 <- `dim#5867*`, dim#5879 <- `dim#5879*`, i#27120 <- `i#27120*`, i#27127 <- `i#27127*`, i#27132 <- `i#27132*`, i#27139 <- `i#27139*`, lanetype#5867 <- `lanetype#5867*`, lanetype#5879 <- `lanetype#5879*`}))] +[visit_exp c*{c <- `c*`}*{`c*` <- `c**`}] +[scope_enter c*] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[visit_id c*] not free +[visit_id c*] no dims +[scope_exit c*] +[visit_exp `c**`] +[visit_id c**] no dims +[visit_id c**] +[visit_exp $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape{lanetype#5867, dim#5867, i#27120}(Lnn_1, `%`_dim{i#27127}(M)), `%X%`_shape{lanetype#5879, dim#5879, i#27132}(Lnn_2, `%`_dim{i#27139}(M)), vcvtop, c_1)*{c_1 <- `c_1*`, dim#5867 <- `dim#5867*`, dim#5879 <- `dim#5879*`, i#27120 <- `i#27120*`, i#27127 <- `i#27127*`, i#27132 <- `i#27132*`, i#27139 <- `i#27139*`, lanetype#5867 <- `lanetype#5867*`, lanetype#5879 <- `lanetype#5879*`})] +[visit_exp Lnn_2] +[visit_id Lnn_2] not free +[visit_exp $lcvtop__(`%X%`_shape{lanetype#5867, dim#5867, i#27120}(Lnn_1, `%`_dim{i#27127}(M)), `%X%`_shape{lanetype#5879, dim#5879, i#27132}(Lnn_2, `%`_dim{i#27139}(M)), vcvtop, c_1)*{c_1 <- `c_1*`, dim#5867 <- `dim#5867*`, dim#5879 <- `dim#5879*`, i#27120 <- `i#27120*`, i#27127 <- `i#27127*`, i#27132 <- `i#27132*`, i#27139 <- `i#27139*`, lanetype#5867 <- `lanetype#5867*`, lanetype#5879 <- `lanetype#5879*`}] +[scope_enter c_1] +[scope_enter dim#5867] +[scope_enter dim#5879] +[scope_enter i#27120] +[scope_enter i#27127] +[scope_enter i#27132] +[scope_enter i#27139] +[scope_enter lanetype#5867] +[scope_enter lanetype#5879] +[visit_exp $lcvtop__(`%X%`_shape{lanetype#5867, dim#5867, i#27120}(Lnn_1, `%`_dim{i#27127}(M)), `%X%`_shape{lanetype#5879, dim#5879, i#27132}(Lnn_2, `%`_dim{i#27139}(M)), vcvtop, c_1)] +[visit_exp `%X%`_shape{lanetype#5867, dim#5867, i#27120}(Lnn_1, `%`_dim{i#27127}(M))] +[visit_exp lanetype#5867] +[visit_id lanetype#5867] not free +[visit_exp dim#5867] +[visit_id dim#5867] not free +[visit_exp i#27120] +[visit_id i#27120] not free +[visit_exp (Lnn_1, `%`_dim{i#27127}(M))] +[visit_exp Lnn_1] +[visit_id Lnn_1] not free +[visit_exp `%`_dim{i#27127}(M)] +[visit_exp i#27127] +[visit_id i#27127] not free +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp `%X%`_shape{lanetype#5879, dim#5879, i#27132}(Lnn_2, `%`_dim{i#27139}(M))] +[visit_exp lanetype#5879] +[visit_id lanetype#5879] not free +[visit_exp dim#5879] +[visit_id dim#5879] not free +[visit_exp i#27132] +[visit_id i#27132] not free +[visit_exp (Lnn_2, `%`_dim{i#27139}(M))] +[visit_exp Lnn_2] +[visit_id Lnn_2] not free +[visit_exp `%`_dim{i#27139}(M)] +[visit_exp i#27139] +[visit_id i#27139] not free +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp vcvtop] +[visit_id vcvtop] not free +[visit_exp c_1] +[visit_id c_1] not free +[visit_id c_1] not free +[visit_id dim#5867] not free +[visit_id dim#5879] not free +[visit_id i#27120] not free +[visit_id i#27127] not free +[visit_id i#27132] not free +[visit_id i#27139] not free +[visit_id lanetype#5867] not free +[visit_id lanetype#5879] not free +[scope_exit lanetype#5879] +[scope_exit lanetype#5867] +[scope_exit i#27139] +[scope_exit i#27132] +[scope_exit i#27127] +[scope_exit i#27120] +[scope_exit dim#5879] +[scope_exit dim#5867] +[scope_exit c_1] +[visit_exp `c_1*`] +[visit_id c_1*] not free +[visit_id c_1*] no dims +[visit_exp `dim#5867*`] +[visit_id dim#5867*] no dims +[visit_id dim#5867*] +[visit_exp `dim#5879*`] +[visit_id dim#5879*] no dims +[visit_id dim#5879*] +[visit_exp `i#27120*`] +[visit_id i#27120*] no dims +[visit_id i#27120*] +[visit_exp `i#27127*`] +[visit_id i#27127*] no dims +[visit_id i#27127*] +[visit_exp `i#27132*`] +[visit_id i#27132*] no dims +[visit_id i#27132*] +[visit_exp `i#27139*`] +[visit_id i#27139*] no dims +[visit_id i#27139*] +[visit_exp `lanetype#5867*`] +[visit_id lanetype#5867*] no dims +[visit_id lanetype#5867*] +[visit_exp `lanetype#5879*`] +[visit_id lanetype#5879*] no dims +[visit_id lanetype#5879*] +[visit_exp (v <- $inv_lanes_(`%X%`_shape{lanetype#5914, dim#5914, i#27181}(Lnn_2, `%`_dim{i#27188}(M)), c*{c <- `c*`})*{`c*` <- `c**`, dim#5914 <- `dim#5914*`, i#27181 <- `i#27181*`, i#27188 <- `i#27188*`, lanetype#5914 <- `lanetype#5914*`})] +[visit_exp v] +[visit_id v] not free +[visit_exp $inv_lanes_(`%X%`_shape{lanetype#5914, dim#5914, i#27181}(Lnn_2, `%`_dim{i#27188}(M)), c*{c <- `c*`})*{`c*` <- `c**`, dim#5914 <- `dim#5914*`, i#27181 <- `i#27181*`, i#27188 <- `i#27188*`, lanetype#5914 <- `lanetype#5914*`}] +[scope_enter c*] +[scope_enter dim#5914] +[scope_enter i#27181] +[scope_enter i#27188] +[scope_enter lanetype#5914] +[visit_exp $inv_lanes_(`%X%`_shape{lanetype#5914, dim#5914, i#27181}(Lnn_2, `%`_dim{i#27188}(M)), c*{c <- `c*`})] +[visit_exp `%X%`_shape{lanetype#5914, dim#5914, i#27181}(Lnn_2, `%`_dim{i#27188}(M))] +[visit_exp lanetype#5914] +[visit_id lanetype#5914] not free +[visit_exp dim#5914] +[visit_id dim#5914] not free +[visit_exp i#27181] +[visit_id i#27181] not free +[visit_exp (Lnn_2, `%`_dim{i#27188}(M))] +[visit_exp Lnn_2] +[visit_id Lnn_2] not free +[visit_exp `%`_dim{i#27188}(M)] +[visit_exp i#27188] +[visit_id i#27188] not free +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[visit_id c*] not free +[visit_id c*] no dims +[visit_id dim#5914] not free +[visit_id i#27181] not free +[visit_id i#27188] not free +[visit_id lanetype#5914] not free +[scope_exit lanetype#5914] +[scope_exit i#27188] +[scope_exit i#27181] +[scope_exit dim#5914] +[scope_exit c*] +[visit_exp `c**`] +[visit_id c**] not free +[visit_id c**] no dims +[visit_exp `dim#5914*`] +[visit_id dim#5914*] no dims +[visit_id dim#5914*] +[visit_exp `i#27181*`] +[visit_id i#27181*] no dims +[visit_id i#27181*] +[visit_exp `i#27188*`] +[visit_id i#27188*] no dims +[visit_id i#27188*] +[visit_exp `lanetype#5914*`] +[visit_id lanetype#5914*] no dims +[visit_id lanetype#5914*] +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vcvtop__{lanetype#5623 : lanetype, dim#5623 : dim, i#26806 : nat, Lnn_1 : Lnn, i#26813 : nat, M : M, lanetype#5635 : lanetype, dim#5635 : dim, i#26818 : nat, Lnn_2 : Lnn, i#26825 : nat, vcvtop : vcvtop__(`%X%`_shape{lanetype#5623, dim#5623, i#26806}(Lnn_1, `%`_dim{i#26813}(M)), `%X%`_shape{lanetype#5635, dim#5635, i#26818}(Lnn_2, `%`_dim{i#26825}(M))), v_1 : vec_(`V128`_Vnn), v : vec_(`V128`_Vnn), lanetype#5671 : lanetype, dim#5671 : dim, i#26866 : nat, i#26873 : nat, lanetype#5683 : lanetype, dim#5683 : dim, i#26878 : nat, i#26885 : nat, lanetype#5711 : lanetype, dim#5711 : dim, i#26906 : nat, i#26913 : nat, lanetype#5723 : lanetype, dim#5723 : dim, i#26918 : nat, i#26925 : nat, lanetype#5751 : lanetype, dim#5751 : dim, i#26946 : nat, i#26953 : nat, `c**` : lane_(Lnn_2)**, `dim#5867*` : dim*, `dim#5879*` : dim*, `i#27120*` : nat*, `i#27127*` : nat*, `i#27132*` : nat*, `i#27139*` : nat*, `lanetype#5867*` : lanetype*, `lanetype#5879*` : lanetype*, `dim#5914*` : dim*, `i#27181*` : nat*, `i#27188*` : nat*, `lanetype#5914*` : lanetype*, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#5751, dim#5751, i#26946}(Lnn_1, `%`_dim{i#26953}(M))))*}(`%X%`_shape{lanetype#5623, dim#5623, i#26806}(Lnn_1, `%`_dim{i#26813}(M)), `%X%`_shape{lanetype#5635, dim#5635, i#26818}(Lnn_2, `%`_dim{i#26825}(M)), vcvtop, v_1) = v + -- if (($halfop(`%X%`_shape{lanetype#5671, dim#5671, i#26866}(Lnn_1, `%`_dim{i#26873}(M)), `%X%`_shape{lanetype#5683, dim#5683, i#26878}(Lnn_2, `%`_dim{i#26885}(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape{lanetype#5711, dim#5711, i#26906}(Lnn_1, `%`_dim{i#26913}(M)), `%X%`_shape{lanetype#5723, dim#5723, i#26918}(Lnn_2, `%`_dim{i#26925}(M)), vcvtop) = ?())) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#5751, dim#5751, i#26946}(Lnn_1, `%`_dim{i#26953}(M)), v_1)) + -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape{lanetype#5867, dim#5867, i#27120}(Lnn_1, `%`_dim{i#27127}(M)), `%X%`_shape{lanetype#5879, dim#5879, i#27132}(Lnn_2, `%`_dim{i#27139}(M)), vcvtop, c_1)*{c_1 <- `c_1*`, dim#5867 <- `dim#5867*`, dim#5879 <- `dim#5879*`, i#27120 <- `i#27120*`, i#27127 <- `i#27127*`, i#27132 <- `i#27132*`, i#27139 <- `i#27139*`, lanetype#5867 <- `lanetype#5867*`, lanetype#5879 <- `lanetype#5879*`})) + -- if (v <- $inv_lanes_(`%X%`_shape{lanetype#5914, dim#5914, i#27181}(Lnn_2, `%`_dim{i#27188}(M)), c*{c <- `c*`})*{`c*` <- `c**`, dim#5914 <- `dim#5914*`, i#27181 <- `i#27181*`, i#27188 <- `i#27188*`, lanetype#5914 <- `lanetype#5914*`}) +[check_dims] Lnn_1 Lnn_2 M_1 M_2 c c_1 dim#5937 dim#5949 dim#6025 dim#6037 dim#6065 dim#6181 dim#6193 dim#6228 half i#27248 i#27255 i#27260 i#27267 i#27348 i#27355 i#27360 i#27367 i#27388 i#27395 i#27562 i#27569 i#27574 i#27581 i#27623 i#27630 lanetype#5937 lanetype#5949 lanetype#6025 lanetype#6037 lanetype#6065 lanetype#6181 lanetype#6193 lanetype#6228 v v_1 vcvtop +[visit_exp `%X%`_shape{lanetype#5937, dim#5937, i#27248}(Lnn_1, `%`_dim{i#27255}(M_1))] +[visit_exp lanetype#5937] +[visit_id lanetype#5937] +[visit_exp dim#5937] +[visit_id dim#5937] +[visit_exp i#27248] +[visit_id i#27248] +[visit_exp (Lnn_1, `%`_dim{i#27255}(M_1))] +[visit_exp Lnn_1] +[visit_id Lnn_1] +[visit_exp `%`_dim{i#27255}(M_1)] +[visit_exp i#27255] +[visit_id i#27255] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] +[visit_exp `%X%`_shape{lanetype#5949, dim#5949, i#27260}(Lnn_2, `%`_dim{i#27267}(M_2))] +[visit_exp lanetype#5949] +[visit_id lanetype#5949] +[visit_exp dim#5949] +[visit_id dim#5949] +[visit_exp i#27260] +[visit_id i#27260] +[visit_exp (Lnn_2, `%`_dim{i#27267}(M_2))] +[visit_exp Lnn_2] +[visit_id Lnn_2] +[visit_exp `%`_dim{i#27267}(M_2)] +[visit_exp i#27267] +[visit_id i#27267] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] +[visit_exp vcvtop] +[visit_id vcvtop] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v] +[visit_id v] +[visit_exp ($halfop(`%X%`_shape{lanetype#6025, dim#6025, i#27348}(Lnn_1, `%`_dim{i#27355}(M_1)), `%X%`_shape{lanetype#6037, dim#6037, i#27360}(Lnn_2, `%`_dim{i#27367}(M_2)), vcvtop) = ?(half))] +[visit_exp $halfop(`%X%`_shape{lanetype#6025, dim#6025, i#27348}(Lnn_1, `%`_dim{i#27355}(M_1)), `%X%`_shape{lanetype#6037, dim#6037, i#27360}(Lnn_2, `%`_dim{i#27367}(M_2)), vcvtop)] +[visit_exp `%X%`_shape{lanetype#6025, dim#6025, i#27348}(Lnn_1, `%`_dim{i#27355}(M_1))] +[visit_exp lanetype#6025] +[visit_id lanetype#6025] +[visit_exp dim#6025] +[visit_id dim#6025] +[visit_exp i#27348] +[visit_id i#27348] +[visit_exp (Lnn_1, `%`_dim{i#27355}(M_1))] +[visit_exp Lnn_1] +[visit_id Lnn_1] not free +[visit_exp `%`_dim{i#27355}(M_1)] +[visit_exp i#27355] +[visit_id i#27355] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] not free +[visit_exp `%X%`_shape{lanetype#6037, dim#6037, i#27360}(Lnn_2, `%`_dim{i#27367}(M_2))] +[visit_exp lanetype#6037] +[visit_id lanetype#6037] +[visit_exp dim#6037] +[visit_id dim#6037] +[visit_exp i#27360] +[visit_id i#27360] +[visit_exp (Lnn_2, `%`_dim{i#27367}(M_2))] +[visit_exp Lnn_2] +[visit_id Lnn_2] not free +[visit_exp `%`_dim{i#27367}(M_2)] +[visit_exp i#27367] +[visit_id i#27367] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] not free +[visit_exp vcvtop] +[visit_id vcvtop] not free +[visit_exp ?(half)] +[visit_exp half] +[visit_id half] +[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#6065, dim#6065, i#27388}(Lnn_1, `%`_dim{i#27395}(M_1)), v_1)[$half(half, 0, M_2) : M_2])] +[visit_exp c_1*{c_1 <- `c_1*`}] +[scope_enter c_1] +[visit_exp c_1] +[visit_id c_1] not free +[visit_id c_1] not free +[scope_exit c_1] +[visit_exp `c_1*`] +[visit_id c_1*] no dims +[visit_id c_1*] +[visit_exp $lanes_(`%X%`_shape{lanetype#6065, dim#6065, i#27388}(Lnn_1, `%`_dim{i#27395}(M_1)), v_1)[$half(half, 0, M_2) : M_2]] +[visit_exp $lanes_(`%X%`_shape{lanetype#6065, dim#6065, i#27388}(Lnn_1, `%`_dim{i#27395}(M_1)), v_1)] +[visit_exp `%X%`_shape{lanetype#6065, dim#6065, i#27388}(Lnn_1, `%`_dim{i#27395}(M_1))] +[visit_exp lanetype#6065] +[visit_id lanetype#6065] +[visit_exp dim#6065] +[visit_id dim#6065] +[visit_exp i#27388] +[visit_id i#27388] +[visit_exp (Lnn_1, `%`_dim{i#27395}(M_1))] +[visit_exp Lnn_1] +[visit_id Lnn_1] not free +[visit_exp `%`_dim{i#27395}(M_1)] +[visit_exp i#27395] +[visit_id i#27395] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp $half(half, 0, M_2)] +[visit_exp half] +[visit_id half] not free +[visit_exp 0] +[visit_exp M_2] +[visit_id M_2] not free +[visit_exp M_2] +[visit_id M_2] not free +[visit_exp (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape{lanetype#6181, dim#6181, i#27562}(Lnn_1, `%`_dim{i#27569}(M_1)), `%X%`_shape{lanetype#6193, dim#6193, i#27574}(Lnn_2, `%`_dim{i#27581}(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`, dim#6181 <- `dim#6181*`, dim#6193 <- `dim#6193*`, i#27562 <- `i#27562*`, i#27569 <- `i#27569*`, i#27574 <- `i#27574*`, i#27581 <- `i#27581*`, lanetype#6181 <- `lanetype#6181*`, lanetype#6193 <- `lanetype#6193*`}))] +[visit_exp c*{c <- `c*`}*{`c*` <- `c**`}] +[scope_enter c*] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[visit_id c*] not free +[visit_id c*] no dims +[scope_exit c*] +[visit_exp `c**`] +[visit_id c**] no dims +[visit_id c**] +[visit_exp $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape{lanetype#6181, dim#6181, i#27562}(Lnn_1, `%`_dim{i#27569}(M_1)), `%X%`_shape{lanetype#6193, dim#6193, i#27574}(Lnn_2, `%`_dim{i#27581}(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`, dim#6181 <- `dim#6181*`, dim#6193 <- `dim#6193*`, i#27562 <- `i#27562*`, i#27569 <- `i#27569*`, i#27574 <- `i#27574*`, i#27581 <- `i#27581*`, lanetype#6181 <- `lanetype#6181*`, lanetype#6193 <- `lanetype#6193*`})] +[visit_exp Lnn_2] +[visit_id Lnn_2] not free +[visit_exp $lcvtop__(`%X%`_shape{lanetype#6181, dim#6181, i#27562}(Lnn_1, `%`_dim{i#27569}(M_1)), `%X%`_shape{lanetype#6193, dim#6193, i#27574}(Lnn_2, `%`_dim{i#27581}(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`, dim#6181 <- `dim#6181*`, dim#6193 <- `dim#6193*`, i#27562 <- `i#27562*`, i#27569 <- `i#27569*`, i#27574 <- `i#27574*`, i#27581 <- `i#27581*`, lanetype#6181 <- `lanetype#6181*`, lanetype#6193 <- `lanetype#6193*`}] +[scope_enter c_1] +[scope_enter dim#6181] +[scope_enter dim#6193] +[scope_enter i#27562] +[scope_enter i#27569] +[scope_enter i#27574] +[scope_enter i#27581] +[scope_enter lanetype#6181] +[scope_enter lanetype#6193] +[visit_exp $lcvtop__(`%X%`_shape{lanetype#6181, dim#6181, i#27562}(Lnn_1, `%`_dim{i#27569}(M_1)), `%X%`_shape{lanetype#6193, dim#6193, i#27574}(Lnn_2, `%`_dim{i#27581}(M_2)), vcvtop, c_1)] +[visit_exp `%X%`_shape{lanetype#6181, dim#6181, i#27562}(Lnn_1, `%`_dim{i#27569}(M_1))] +[visit_exp lanetype#6181] +[visit_id lanetype#6181] not free +[visit_exp dim#6181] +[visit_id dim#6181] not free +[visit_exp i#27562] +[visit_id i#27562] not free +[visit_exp (Lnn_1, `%`_dim{i#27569}(M_1))] +[visit_exp Lnn_1] +[visit_id Lnn_1] not free +[visit_exp `%`_dim{i#27569}(M_1)] +[visit_exp i#27569] +[visit_id i#27569] not free +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] not free +[visit_exp `%X%`_shape{lanetype#6193, dim#6193, i#27574}(Lnn_2, `%`_dim{i#27581}(M_2))] +[visit_exp lanetype#6193] +[visit_id lanetype#6193] not free +[visit_exp dim#6193] +[visit_id dim#6193] not free +[visit_exp i#27574] +[visit_id i#27574] not free +[visit_exp (Lnn_2, `%`_dim{i#27581}(M_2))] +[visit_exp Lnn_2] +[visit_id Lnn_2] not free +[visit_exp `%`_dim{i#27581}(M_2)] +[visit_exp i#27581] +[visit_id i#27581] not free +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] not free +[visit_exp vcvtop] +[visit_id vcvtop] not free +[visit_exp c_1] +[visit_id c_1] not free +[visit_id c_1] not free +[visit_id dim#6181] not free +[visit_id dim#6193] not free +[visit_id i#27562] not free +[visit_id i#27569] not free +[visit_id i#27574] not free +[visit_id i#27581] not free +[visit_id lanetype#6181] not free +[visit_id lanetype#6193] not free +[scope_exit lanetype#6193] +[scope_exit lanetype#6181] +[scope_exit i#27581] +[scope_exit i#27574] +[scope_exit i#27569] +[scope_exit i#27562] +[scope_exit dim#6193] +[scope_exit dim#6181] +[scope_exit c_1] +[visit_exp `c_1*`] +[visit_id c_1*] not free +[visit_id c_1*] no dims +[visit_exp `dim#6181*`] +[visit_id dim#6181*] no dims +[visit_id dim#6181*] +[visit_exp `dim#6193*`] +[visit_id dim#6193*] no dims +[visit_id dim#6193*] +[visit_exp `i#27562*`] +[visit_id i#27562*] no dims +[visit_id i#27562*] +[visit_exp `i#27569*`] +[visit_id i#27569*] no dims +[visit_id i#27569*] +[visit_exp `i#27574*`] +[visit_id i#27574*] no dims +[visit_id i#27574*] +[visit_exp `i#27581*`] +[visit_id i#27581*] no dims +[visit_id i#27581*] +[visit_exp `lanetype#6181*`] +[visit_id lanetype#6181*] no dims +[visit_id lanetype#6181*] +[visit_exp `lanetype#6193*`] +[visit_id lanetype#6193*] no dims +[visit_id lanetype#6193*] +[visit_exp (v <- $inv_lanes_(`%X%`_shape{lanetype#6228, dim#6228, i#27623}(Lnn_2, `%`_dim{i#27630}(M_2)), c*{c <- `c*`})*{`c*` <- `c**`, dim#6228 <- `dim#6228*`, i#27623 <- `i#27623*`, i#27630 <- `i#27630*`, lanetype#6228 <- `lanetype#6228*`})] +[visit_exp v] +[visit_id v] not free +[visit_exp $inv_lanes_(`%X%`_shape{lanetype#6228, dim#6228, i#27623}(Lnn_2, `%`_dim{i#27630}(M_2)), c*{c <- `c*`})*{`c*` <- `c**`, dim#6228 <- `dim#6228*`, i#27623 <- `i#27623*`, i#27630 <- `i#27630*`, lanetype#6228 <- `lanetype#6228*`}] +[scope_enter c*] +[scope_enter dim#6228] +[scope_enter i#27623] +[scope_enter i#27630] +[scope_enter lanetype#6228] +[visit_exp $inv_lanes_(`%X%`_shape{lanetype#6228, dim#6228, i#27623}(Lnn_2, `%`_dim{i#27630}(M_2)), c*{c <- `c*`})] +[visit_exp `%X%`_shape{lanetype#6228, dim#6228, i#27623}(Lnn_2, `%`_dim{i#27630}(M_2))] +[visit_exp lanetype#6228] +[visit_id lanetype#6228] not free +[visit_exp dim#6228] +[visit_id dim#6228] not free +[visit_exp i#27623] +[visit_id i#27623] not free +[visit_exp (Lnn_2, `%`_dim{i#27630}(M_2))] +[visit_exp Lnn_2] +[visit_id Lnn_2] not free +[visit_exp `%`_dim{i#27630}(M_2)] +[visit_exp i#27630] +[visit_id i#27630] not free +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] not free +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[visit_id c*] not free +[visit_id c*] no dims +[visit_id dim#6228] not free +[visit_id i#27623] not free +[visit_id i#27630] not free +[visit_id lanetype#6228] not free +[scope_exit lanetype#6228] +[scope_exit i#27630] +[scope_exit i#27623] +[scope_exit dim#6228] +[scope_exit c*] +[visit_exp `c**`] +[visit_id c**] not free +[visit_id c**] no dims +[visit_exp `dim#6228*`] +[visit_id dim#6228*] no dims +[visit_id dim#6228*] +[visit_exp `i#27623*`] +[visit_id i#27623*] no dims +[visit_id i#27623*] +[visit_exp `i#27630*`] +[visit_id i#27630*] no dims +[visit_id i#27630*] +[visit_exp `lanetype#6228*`] +[visit_id lanetype#6228*] no dims +[visit_id lanetype#6228*] +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vcvtop__{lanetype#5937 : lanetype, dim#5937 : dim, i#27248 : nat, Lnn_1 : Lnn, i#27255 : nat, M_1 : M, lanetype#5949 : lanetype, dim#5949 : dim, i#27260 : nat, Lnn_2 : Lnn, i#27267 : nat, M_2 : M, vcvtop : vcvtop__(`%X%`_shape{lanetype#5937, dim#5937, i#27248}(Lnn_1, `%`_dim{i#27255}(M_1)), `%X%`_shape{lanetype#5949, dim#5949, i#27260}(Lnn_2, `%`_dim{i#27267}(M_2))), v_1 : vec_(`V128`_Vnn), v : vec_(`V128`_Vnn), lanetype#6025 : lanetype, dim#6025 : dim, i#27348 : nat, i#27355 : nat, lanetype#6037 : lanetype, dim#6037 : dim, i#27360 : nat, i#27367 : nat, half : half, lanetype#6065 : lanetype, dim#6065 : dim, i#27388 : nat, i#27395 : nat, `c**` : lane_(Lnn_2)**, `dim#6181*` : dim*, `dim#6193*` : dim*, `i#27562*` : nat*, `i#27569*` : nat*, `i#27574*` : nat*, `i#27581*` : nat*, `lanetype#6181*` : lanetype*, `lanetype#6193*` : lanetype*, `dim#6228*` : dim*, `i#27623*` : nat*, `i#27630*` : nat*, `lanetype#6228*` : lanetype*, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#6065, dim#6065, i#27388}(Lnn_1, `%`_dim{i#27395}(M_1))))*}(`%X%`_shape{lanetype#5937, dim#5937, i#27248}(Lnn_1, `%`_dim{i#27255}(M_1)), `%X%`_shape{lanetype#5949, dim#5949, i#27260}(Lnn_2, `%`_dim{i#27267}(M_2)), vcvtop, v_1) = v + -- if ($halfop(`%X%`_shape{lanetype#6025, dim#6025, i#27348}(Lnn_1, `%`_dim{i#27355}(M_1)), `%X%`_shape{lanetype#6037, dim#6037, i#27360}(Lnn_2, `%`_dim{i#27367}(M_2)), vcvtop) = ?(half)) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#6065, dim#6065, i#27388}(Lnn_1, `%`_dim{i#27395}(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{lanetype#6181, dim#6181, i#27562}(Lnn_1, `%`_dim{i#27569}(M_1)), `%X%`_shape{lanetype#6193, dim#6193, i#27574}(Lnn_2, `%`_dim{i#27581}(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`, dim#6181 <- `dim#6181*`, dim#6193 <- `dim#6193*`, i#27562 <- `i#27562*`, i#27569 <- `i#27569*`, i#27574 <- `i#27574*`, i#27581 <- `i#27581*`, lanetype#6181 <- `lanetype#6181*`, lanetype#6193 <- `lanetype#6193*`})) + -- if (v <- $inv_lanes_(`%X%`_shape{lanetype#6228, dim#6228, i#27623}(Lnn_2, `%`_dim{i#27630}(M_2)), c*{c <- `c*`})*{`c*` <- `c**`, dim#6228 <- `dim#6228*`, i#27623 <- `i#27623*`, i#27630 <- `i#27630*`, lanetype#6228 <- `lanetype#6228*`}) +[check_dims] Lnn_1 Lnn_2 M_1 M_2 c c_1 dim#6251 dim#6263 dim#6299 dim#6311 dim#6339 dim#6501 dim#6513 dim#6548 i#27690 i#27697 i#27702 i#27709 i#27750 i#27757 i#27762 i#27769 i#27790 i#27797 i#28022 i#28029 i#28034 i#28041 i#28083 i#28090 lanetype#6251 lanetype#6263 lanetype#6299 lanetype#6311 lanetype#6339 lanetype#6501 lanetype#6513 lanetype#6548 v v_1 vcvtop +[visit_exp `%X%`_shape{lanetype#6251, dim#6251, i#27690}(Lnn_1, `%`_dim{i#27697}(M_1))] +[visit_exp lanetype#6251] +[visit_id lanetype#6251] +[visit_exp dim#6251] +[visit_id dim#6251] +[visit_exp i#27690] +[visit_id i#27690] +[visit_exp (Lnn_1, `%`_dim{i#27697}(M_1))] +[visit_exp Lnn_1] +[visit_id Lnn_1] +[visit_exp `%`_dim{i#27697}(M_1)] +[visit_exp i#27697] +[visit_id i#27697] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] +[visit_exp `%X%`_shape{lanetype#6263, dim#6263, i#27702}(Lnn_2, `%`_dim{i#27709}(M_2))] +[visit_exp lanetype#6263] +[visit_id lanetype#6263] +[visit_exp dim#6263] +[visit_id dim#6263] +[visit_exp i#27702] +[visit_id i#27702] +[visit_exp (Lnn_2, `%`_dim{i#27709}(M_2))] +[visit_exp Lnn_2] +[visit_id Lnn_2] +[visit_exp `%`_dim{i#27709}(M_2)] +[visit_exp i#27709] +[visit_id i#27709] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] +[visit_exp vcvtop] +[visit_id vcvtop] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v] +[visit_id v] +[visit_exp ($zeroop(`%X%`_shape{lanetype#6299, dim#6299, i#27750}(Lnn_1, `%`_dim{i#27757}(M_1)), `%X%`_shape{lanetype#6311, dim#6311, i#27762}(Lnn_2, `%`_dim{i#27769}(M_2)), vcvtop) = ?(`ZERO`_zero))] +[visit_exp $zeroop(`%X%`_shape{lanetype#6299, dim#6299, i#27750}(Lnn_1, `%`_dim{i#27757}(M_1)), `%X%`_shape{lanetype#6311, dim#6311, i#27762}(Lnn_2, `%`_dim{i#27769}(M_2)), vcvtop)] +[visit_exp `%X%`_shape{lanetype#6299, dim#6299, i#27750}(Lnn_1, `%`_dim{i#27757}(M_1))] +[visit_exp lanetype#6299] +[visit_id lanetype#6299] +[visit_exp dim#6299] +[visit_id dim#6299] +[visit_exp i#27750] +[visit_id i#27750] +[visit_exp (Lnn_1, `%`_dim{i#27757}(M_1))] +[visit_exp Lnn_1] +[visit_id Lnn_1] not free +[visit_exp `%`_dim{i#27757}(M_1)] +[visit_exp i#27757] +[visit_id i#27757] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] not free +[visit_exp `%X%`_shape{lanetype#6311, dim#6311, i#27762}(Lnn_2, `%`_dim{i#27769}(M_2))] +[visit_exp lanetype#6311] +[visit_id lanetype#6311] +[visit_exp dim#6311] +[visit_id dim#6311] +[visit_exp i#27762] +[visit_id i#27762] +[visit_exp (Lnn_2, `%`_dim{i#27769}(M_2))] +[visit_exp Lnn_2] +[visit_id Lnn_2] not free +[visit_exp `%`_dim{i#27769}(M_2)] +[visit_exp i#27769] +[visit_id i#27769] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] not free +[visit_exp vcvtop] +[visit_id vcvtop] not free +[visit_exp ?(`ZERO`_zero)] +[visit_exp `ZERO`_zero] +[visit_exp ()] +[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#6339, dim#6339, i#27790}(Lnn_1, `%`_dim{i#27797}(M_1)), v_1))] +[visit_exp c_1*{c_1 <- `c_1*`}] +[scope_enter c_1] +[visit_exp c_1] +[visit_id c_1] not free +[visit_id c_1] not free +[scope_exit c_1] +[visit_exp `c_1*`] +[visit_id c_1*] no dims +[visit_id c_1*] +[visit_exp $lanes_(`%X%`_shape{lanetype#6339, dim#6339, i#27790}(Lnn_1, `%`_dim{i#27797}(M_1)), v_1)] +[visit_exp `%X%`_shape{lanetype#6339, dim#6339, i#27790}(Lnn_1, `%`_dim{i#27797}(M_1))] +[visit_exp lanetype#6339] +[visit_id lanetype#6339] +[visit_exp dim#6339] +[visit_id dim#6339] +[visit_exp i#27790] +[visit_id i#27790] +[visit_exp (Lnn_1, `%`_dim{i#27797}(M_1))] +[visit_exp Lnn_1] +[visit_id Lnn_1] not free +[visit_exp `%`_dim{i#27797}(M_1)] +[visit_exp i#27797] +[visit_id i#27797] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape{lanetype#6501, dim#6501, i#28022}(Lnn_1, `%`_dim{i#28029}(M_1)), `%X%`_shape{lanetype#6513, dim#6513, i#28034}(Lnn_2, `%`_dim{i#28041}(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`, dim#6501 <- `dim#6501*`, dim#6513 <- `dim#6513*`, i#28022 <- `i#28022*`, i#28029 <- `i#28029*`, i#28034 <- `i#28034*`, i#28041 <- `i#28041*`, lanetype#6501 <- `lanetype#6501*`, lanetype#6513 <- `lanetype#6513*`} ++ [$zero(Lnn_2)]^M_1{}))] +[visit_exp c*{c <- `c*`}*{`c*` <- `c**`}] +[scope_enter c*] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[visit_id c*] not free +[visit_id c*] no dims +[scope_exit c*] +[visit_exp `c**`] +[visit_id c**] no dims +[visit_id c**] +[visit_exp $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape{lanetype#6501, dim#6501, i#28022}(Lnn_1, `%`_dim{i#28029}(M_1)), `%X%`_shape{lanetype#6513, dim#6513, i#28034}(Lnn_2, `%`_dim{i#28041}(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`, dim#6501 <- `dim#6501*`, dim#6513 <- `dim#6513*`, i#28022 <- `i#28022*`, i#28029 <- `i#28029*`, i#28034 <- `i#28034*`, i#28041 <- `i#28041*`, lanetype#6501 <- `lanetype#6501*`, lanetype#6513 <- `lanetype#6513*`} ++ [$zero(Lnn_2)]^M_1{})] +[visit_exp Lnn_2] +[visit_id Lnn_2] not free +[visit_exp $lcvtop__(`%X%`_shape{lanetype#6501, dim#6501, i#28022}(Lnn_1, `%`_dim{i#28029}(M_1)), `%X%`_shape{lanetype#6513, dim#6513, i#28034}(Lnn_2, `%`_dim{i#28041}(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`, dim#6501 <- `dim#6501*`, dim#6513 <- `dim#6513*`, i#28022 <- `i#28022*`, i#28029 <- `i#28029*`, i#28034 <- `i#28034*`, i#28041 <- `i#28041*`, lanetype#6501 <- `lanetype#6501*`, lanetype#6513 <- `lanetype#6513*`} ++ [$zero(Lnn_2)]^M_1{}] +[visit_exp $lcvtop__(`%X%`_shape{lanetype#6501, dim#6501, i#28022}(Lnn_1, `%`_dim{i#28029}(M_1)), `%X%`_shape{lanetype#6513, dim#6513, i#28034}(Lnn_2, `%`_dim{i#28041}(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`, dim#6501 <- `dim#6501*`, dim#6513 <- `dim#6513*`, i#28022 <- `i#28022*`, i#28029 <- `i#28029*`, i#28034 <- `i#28034*`, i#28041 <- `i#28041*`, lanetype#6501 <- `lanetype#6501*`, lanetype#6513 <- `lanetype#6513*`}] +[scope_enter c_1] +[scope_enter dim#6501] +[scope_enter dim#6513] +[scope_enter i#28022] +[scope_enter i#28029] +[scope_enter i#28034] +[scope_enter i#28041] +[scope_enter lanetype#6501] +[scope_enter lanetype#6513] +[visit_exp $lcvtop__(`%X%`_shape{lanetype#6501, dim#6501, i#28022}(Lnn_1, `%`_dim{i#28029}(M_1)), `%X%`_shape{lanetype#6513, dim#6513, i#28034}(Lnn_2, `%`_dim{i#28041}(M_2)), vcvtop, c_1)] +[visit_exp `%X%`_shape{lanetype#6501, dim#6501, i#28022}(Lnn_1, `%`_dim{i#28029}(M_1))] +[visit_exp lanetype#6501] +[visit_id lanetype#6501] not free +[visit_exp dim#6501] +[visit_id dim#6501] not free +[visit_exp i#28022] +[visit_id i#28022] not free +[visit_exp (Lnn_1, `%`_dim{i#28029}(M_1))] +[visit_exp Lnn_1] +[visit_id Lnn_1] not free +[visit_exp `%`_dim{i#28029}(M_1)] +[visit_exp i#28029] +[visit_id i#28029] not free +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] not free +[visit_exp `%X%`_shape{lanetype#6513, dim#6513, i#28034}(Lnn_2, `%`_dim{i#28041}(M_2))] +[visit_exp lanetype#6513] +[visit_id lanetype#6513] not free +[visit_exp dim#6513] +[visit_id dim#6513] not free +[visit_exp i#28034] +[visit_id i#28034] not free +[visit_exp (Lnn_2, `%`_dim{i#28041}(M_2))] +[visit_exp Lnn_2] +[visit_id Lnn_2] not free +[visit_exp `%`_dim{i#28041}(M_2)] +[visit_exp i#28041] +[visit_id i#28041] not free +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] not free +[visit_exp vcvtop] +[visit_id vcvtop] not free +[visit_exp c_1] +[visit_id c_1] not free +[visit_id c_1] not free +[visit_id dim#6501] not free +[visit_id dim#6513] not free +[visit_id i#28022] not free +[visit_id i#28029] not free +[visit_id i#28034] not free +[visit_id i#28041] not free +[visit_id lanetype#6501] not free +[visit_id lanetype#6513] not free +[scope_exit lanetype#6513] +[scope_exit lanetype#6501] +[scope_exit i#28041] +[scope_exit i#28034] +[scope_exit i#28029] +[scope_exit i#28022] +[scope_exit dim#6513] +[scope_exit dim#6501] +[scope_exit c_1] +[visit_exp `c_1*`] +[visit_id c_1*] not free +[visit_id c_1*] no dims +[visit_exp `dim#6501*`] +[visit_id dim#6501*] no dims +[visit_id dim#6501*] +[visit_exp `dim#6513*`] +[visit_id dim#6513*] no dims +[visit_id dim#6513*] +[visit_exp `i#28022*`] +[visit_id i#28022*] no dims +[visit_id i#28022*] +[visit_exp `i#28029*`] +[visit_id i#28029*] no dims +[visit_id i#28029*] +[visit_exp `i#28034*`] +[visit_id i#28034*] no dims +[visit_id i#28034*] +[visit_exp `i#28041*`] +[visit_id i#28041*] no dims +[visit_id i#28041*] +[visit_exp `lanetype#6501*`] +[visit_id lanetype#6501*] no dims +[visit_id lanetype#6501*] +[visit_exp `lanetype#6513*`] +[visit_id lanetype#6513*] no dims +[visit_id lanetype#6513*] +[visit_exp [$zero(Lnn_2)]^M_1{}] +[visit_exp [$zero(Lnn_2)]] +[visit_exp $zero(Lnn_2)] +[visit_exp Lnn_2] +[visit_id Lnn_2] not free +[visit_exp M_1] +[visit_id M_1] not free +[visit_exp (v <- $inv_lanes_(`%X%`_shape{lanetype#6548, dim#6548, i#28083}(Lnn_2, `%`_dim{i#28090}(M_2)), c*{c <- `c*`})*{`c*` <- `c**`, dim#6548 <- `dim#6548*`, i#28083 <- `i#28083*`, i#28090 <- `i#28090*`, lanetype#6548 <- `lanetype#6548*`})] +[visit_exp v] +[visit_id v] not free +[visit_exp $inv_lanes_(`%X%`_shape{lanetype#6548, dim#6548, i#28083}(Lnn_2, `%`_dim{i#28090}(M_2)), c*{c <- `c*`})*{`c*` <- `c**`, dim#6548 <- `dim#6548*`, i#28083 <- `i#28083*`, i#28090 <- `i#28090*`, lanetype#6548 <- `lanetype#6548*`}] +[scope_enter c*] +[scope_enter dim#6548] +[scope_enter i#28083] +[scope_enter i#28090] +[scope_enter lanetype#6548] +[visit_exp $inv_lanes_(`%X%`_shape{lanetype#6548, dim#6548, i#28083}(Lnn_2, `%`_dim{i#28090}(M_2)), c*{c <- `c*`})] +[visit_exp `%X%`_shape{lanetype#6548, dim#6548, i#28083}(Lnn_2, `%`_dim{i#28090}(M_2))] +[visit_exp lanetype#6548] +[visit_id lanetype#6548] not free +[visit_exp dim#6548] +[visit_id dim#6548] not free +[visit_exp i#28083] +[visit_id i#28083] not free +[visit_exp (Lnn_2, `%`_dim{i#28090}(M_2))] +[visit_exp Lnn_2] +[visit_id Lnn_2] not free +[visit_exp `%`_dim{i#28090}(M_2)] +[visit_exp i#28090] +[visit_id i#28090] not free +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] not free +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[visit_id c*] not free +[visit_id c*] no dims +[visit_id dim#6548] not free +[visit_id i#28083] not free +[visit_id i#28090] not free +[visit_id lanetype#6548] not free +[scope_exit lanetype#6548] +[scope_exit i#28090] +[scope_exit i#28083] +[scope_exit dim#6548] +[scope_exit c*] +[visit_exp `c**`] +[visit_id c**] not free +[visit_id c**] no dims +[visit_exp `dim#6548*`] +[visit_id dim#6548*] no dims +[visit_id dim#6548*] +[visit_exp `i#28083*`] +[visit_id i#28083*] no dims +[visit_id i#28083*] +[visit_exp `i#28090*`] +[visit_id i#28090*] no dims +[visit_id i#28090*] +[visit_exp `lanetype#6548*`] +[visit_id lanetype#6548*] no dims +[visit_id lanetype#6548*] +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vcvtop__{lanetype#6251 : lanetype, dim#6251 : dim, i#27690 : nat, Lnn_1 : Lnn, i#27697 : nat, M_1 : M, lanetype#6263 : lanetype, dim#6263 : dim, i#27702 : nat, Lnn_2 : Lnn, i#27709 : nat, M_2 : M, vcvtop : vcvtop__(`%X%`_shape{lanetype#6251, dim#6251, i#27690}(Lnn_1, `%`_dim{i#27697}(M_1)), `%X%`_shape{lanetype#6263, dim#6263, i#27702}(Lnn_2, `%`_dim{i#27709}(M_2))), v_1 : vec_(`V128`_Vnn), v : vec_(`V128`_Vnn), lanetype#6299 : lanetype, dim#6299 : dim, i#27750 : nat, i#27757 : nat, lanetype#6311 : lanetype, dim#6311 : dim, i#27762 : nat, i#27769 : nat, lanetype#6339 : lanetype, dim#6339 : dim, i#27790 : nat, i#27797 : nat, `c**` : lane_(Lnn_2)**, `dim#6501*` : dim*, `dim#6513*` : dim*, `i#28022*` : nat*, `i#28029*` : nat*, `i#28034*` : nat*, `i#28041*` : nat*, `lanetype#6501*` : lanetype*, `lanetype#6513*` : lanetype*, `dim#6548*` : dim*, `i#28083*` : nat*, `i#28090*` : nat*, `lanetype#6548*` : lanetype*, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#6339, dim#6339, i#27790}(Lnn_1, `%`_dim{i#27797}(M_1))))*}(`%X%`_shape{lanetype#6251, dim#6251, i#27690}(Lnn_1, `%`_dim{i#27697}(M_1)), `%X%`_shape{lanetype#6263, dim#6263, i#27702}(Lnn_2, `%`_dim{i#27709}(M_2)), vcvtop, v_1) = v + -- if ($zeroop(`%X%`_shape{lanetype#6299, dim#6299, i#27750}(Lnn_1, `%`_dim{i#27757}(M_1)), `%X%`_shape{lanetype#6311, dim#6311, i#27762}(Lnn_2, `%`_dim{i#27769}(M_2)), vcvtop) = ?(`ZERO`_zero)) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#6339, dim#6339, i#27790}(Lnn_1, `%`_dim{i#27797}(M_1)), v_1)) + -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape{lanetype#6501, dim#6501, i#28022}(Lnn_1, `%`_dim{i#28029}(M_1)), `%X%`_shape{lanetype#6513, dim#6513, i#28034}(Lnn_2, `%`_dim{i#28041}(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`, dim#6501 <- `dim#6501*`, dim#6513 <- `dim#6513*`, i#28022 <- `i#28022*`, i#28029 <- `i#28029*`, i#28034 <- `i#28034*`, i#28041 <- `i#28041*`, lanetype#6501 <- `lanetype#6501*`, lanetype#6513 <- `lanetype#6513*`} ++ [$zero(Lnn_2)]^M_1{})) + -- if (v <- $inv_lanes_(`%X%`_shape{lanetype#6548, dim#6548, i#28083}(Lnn_2, `%`_dim{i#28090}(M_2)), c*{c <- `c*`})*{`c*` <- `c**`, dim#6548 <- `dim#6548*`, i#28083 <- `i#28083*`, i#28090 <- `i#28090*`, lanetype#6548 <- `lanetype#6548*`}) +[check_dims] Jnn_1 Jnn_2 M_1 M_2 c'_1 c'_2 c_1 c_2 dim#6571 dim#6583 dim#6595 dim#6620 dim#6647 i#28150 i#28157 i#28162 i#28169 i#28198 i#28205 i#28284 i#28291 i#28450 i#28457 lanetype#6571 lanetype#6583 lanetype#6595 lanetype#6620 lanetype#6647 sx v v_1 v_2 +[visit_exp `%X%`_shape{lanetype#6571, dim#6571, i#28150}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28157}(M_1))] +[visit_exp lanetype#6571] +[visit_id lanetype#6571] +[visit_exp dim#6571] +[visit_id dim#6571] +[visit_exp i#28150] +[visit_id i#28150] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28157}(M_1))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] +[visit_exp `%`_dim{i#28157}(M_1)] +[visit_exp i#28157] +[visit_id i#28157] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] +[visit_exp `%X%`_shape{lanetype#6583, dim#6583, i#28162}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28169}(M_2))] +[visit_exp lanetype#6583] +[visit_id lanetype#6583] +[visit_exp dim#6583] +[visit_id dim#6583] +[visit_exp i#28162] +[visit_id i#28162] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28169}(M_2))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] +[visit_exp `%`_dim{i#28169}(M_2)] +[visit_exp i#28169] +[visit_id i#28169] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] +[visit_exp sx] +[visit_id sx] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp v] +[visit_id v] +[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#6595, dim#6595, i#28198}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28205}(M_1)), v_1))] +[visit_exp c_1*{c_1 <- `c_1*`}] +[scope_enter c_1] +[visit_exp c_1] +[visit_id c_1] not free +[visit_id c_1] not free +[scope_exit c_1] +[visit_exp `c_1*`] +[visit_id c_1*] no dims +[visit_id c_1*] +[visit_exp $lanes_(`%X%`_shape{lanetype#6595, dim#6595, i#28198}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28205}(M_1)), v_1)] +[visit_exp `%X%`_shape{lanetype#6595, dim#6595, i#28198}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28205}(M_1))] +[visit_exp lanetype#6595] +[visit_id lanetype#6595] +[visit_exp dim#6595] +[visit_id dim#6595] +[visit_exp i#28198] +[visit_id i#28198] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28205}(M_1))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] not free +[visit_exp `%`_dim{i#28205}(M_1)] +[visit_exp i#28205] +[visit_id i#28205] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#6620, dim#6620, i#28284}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28291}(M_1)), v_2))] +[visit_exp c_2*{c_2 <- `c_2*`}] +[scope_enter c_2] +[visit_exp c_2] +[visit_id c_2] not free +[visit_id c_2] not free +[scope_exit c_2] +[visit_exp `c_2*`] +[visit_id c_2*] no dims +[visit_id c_2*] +[visit_exp $lanes_(`%X%`_shape{lanetype#6620, dim#6620, i#28284}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28291}(M_1)), v_2)] +[visit_exp `%X%`_shape{lanetype#6620, dim#6620, i#28284}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28291}(M_1))] +[visit_exp lanetype#6620] +[visit_id lanetype#6620] +[visit_exp dim#6620] +[visit_id dim#6620] +[visit_exp i#28284] +[visit_id i#28284] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28291}(M_1))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] not free +[visit_exp `%`_dim{i#28291}(M_1)] +[visit_exp i#28291] +[visit_id i#28291] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] not free +[visit_exp v_2] +[visit_id v_2] not free +[visit_exp (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, c_1)*{c_1 <- `c_1*`})] +[visit_exp c'_1*{c'_1 <- `c'_1*`}] +[scope_enter c'_1] +[visit_exp c'_1] +[visit_id c'_1] not free +[visit_id c'_1] not free +[scope_exit c'_1] +[visit_exp `c'_1*`] +[visit_id c'_1*] no dims +[visit_id c'_1*] +[visit_exp $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, c_1)*{c_1 <- `c_1*`}] +[scope_enter c_1] +[visit_exp $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, c_1)] +[visit_exp $lsize((Jnn_1 : Jnn <: lanetype))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] not free +[visit_exp $lsize((Jnn_2 : Jnn <: lanetype))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] not free +[visit_exp sx] +[visit_id sx] not free +[visit_exp c_1] +[visit_id c_1] not free +[visit_id c_1] not free +[scope_exit c_1] +[visit_exp `c_1*`] +[visit_id c_1*] not free +[visit_id c_1*] no dims +[visit_exp (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, c_2)*{c_2 <- `c_2*`})] +[visit_exp c'_2*{c'_2 <- `c'_2*`}] +[scope_enter c'_2] +[visit_exp c'_2] +[visit_id c'_2] not free +[visit_id c'_2] not free +[scope_exit c'_2] +[visit_exp `c'_2*`] +[visit_id c'_2*] no dims +[visit_id c'_2*] +[visit_exp $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, c_2)*{c_2 <- `c_2*`}] +[scope_enter c_2] +[visit_exp $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, c_2)] +[visit_exp $lsize((Jnn_1 : Jnn <: lanetype))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] not free +[visit_exp $lsize((Jnn_2 : Jnn <: lanetype))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] not free +[visit_exp sx] +[visit_id sx] not free +[visit_exp c_2] +[visit_id c_2] not free +[visit_id c_2] not free +[scope_exit c_2] +[visit_exp `c_2*`] +[visit_id c_2*] not free +[visit_id c_2*] no dims +[visit_exp (v = $inv_lanes_(`%X%`_shape{lanetype#6647, dim#6647, i#28450}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28457}(M_2)), c'_1*{c'_1 <- `c'_1*`} ++ c'_2*{c'_2 <- `c'_2*`}))] +[visit_exp v] +[visit_id v] not free +[visit_exp $inv_lanes_(`%X%`_shape{lanetype#6647, dim#6647, i#28450}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28457}(M_2)), c'_1*{c'_1 <- `c'_1*`} ++ c'_2*{c'_2 <- `c'_2*`})] +[visit_exp `%X%`_shape{lanetype#6647, dim#6647, i#28450}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28457}(M_2))] +[visit_exp lanetype#6647] +[visit_id lanetype#6647] +[visit_exp dim#6647] +[visit_id dim#6647] +[visit_exp i#28450] +[visit_id i#28450] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28457}(M_2))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] not free +[visit_exp `%`_dim{i#28457}(M_2)] +[visit_exp i#28457] +[visit_id i#28457] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] not free +[visit_exp c'_1*{c'_1 <- `c'_1*`} ++ c'_2*{c'_2 <- `c'_2*`}] +[visit_exp c'_1*{c'_1 <- `c'_1*`}] +[scope_enter c'_1] +[visit_exp c'_1] +[visit_id c'_1] not free +[visit_id c'_1] not free +[scope_exit c'_1] +[visit_exp `c'_1*`] +[visit_id c'_1*] not free +[visit_id c'_1*] no dims +[visit_exp c'_2*{c'_2 <- `c'_2*`}] +[scope_enter c'_2] +[visit_exp c'_2] +[visit_id c'_2] not free +[visit_id c'_2] not free +[scope_exit c'_2] +[visit_exp `c'_2*`] +[visit_id c'_2*] not free +[visit_id c'_2*] no dims +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vnarrowop__{lanetype#6571 : lanetype, dim#6571 : dim, i#28150 : nat, Jnn_1 : Jnn, i#28157 : nat, M_1 : M, lanetype#6583 : lanetype, dim#6583 : dim, i#28162 : nat, Jnn_2 : Jnn, i#28169 : nat, M_2 : M, sx : sx, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), v : vec_(`V128`_Vnn), lanetype#6595 : lanetype, dim#6595 : dim, i#28198 : nat, i#28205 : nat, lanetype#6620 : lanetype, dim#6620 : dim, i#28284 : nat, i#28291 : nat, `c'_1*` : iN($lsize((Jnn_2 : Jnn <: lanetype)))*, `c'_2*` : iN($lsize((Jnn_2 : Jnn <: lanetype)))*, lanetype#6647 : lanetype, dim#6647 : dim, i#28450 : nat, i#28457 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#6595, dim#6595, i#28198}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28205}(M_1))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#6620, dim#6620, i#28284}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28291}(M_1))))*}(`%X%`_shape{lanetype#6571, dim#6571, i#28150}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28157}(M_1)), `%X%`_shape{lanetype#6583, dim#6583, i#28162}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28169}(M_2)), sx, v_1, v_2) = v + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#6595, dim#6595, i#28198}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28205}(M_1)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#6620, dim#6620, i#28284}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28291}(M_1)), v_2)) + -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, 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, c_2)*{c_2 <- `c_2*`}) + -- if (v = $inv_lanes_(`%X%`_shape{lanetype#6647, dim#6647, i#28450}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28457}(M_2)), c'_1*{c'_1 <- `c'_1*`} ++ c'_2*{c'_2 <- `c'_2*`})) +[check_dims] N _ shape_1 shape_2 sx vec_ +DecD ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN(N)*) : iN(N)*, sx : sx, vec_ : vec_(`V128`_Vnn)) : vec_(`V128`_Vnn) +[visit_id shape_1] not free +[visit_id shape_2] not free +[visit_id N] not free +[visit_id _] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[visit_id sx] not free +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_exp `V128`_Vnn] +[visit_exp ()] +[check_dims] Jnn_1 Jnn_2 M_1 M_2 c c'_1 c_1 dim#6690 dim#6702 dim#6714 dim#6740 i#28642 i#28649 i#28654 i#28661 i#28678 i#28685 i#28862 i#28869 lanetype#6690 lanetype#6702 lanetype#6714 lanetype#6740 sx v_1 +[visit_exp `%X%`_shape{lanetype#6690, dim#6690, i#28642}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28649}(M_1))] +[visit_exp lanetype#6690] +[visit_id lanetype#6690] +[visit_exp dim#6690] +[visit_id dim#6690] +[visit_exp i#28642] +[visit_id i#28642] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28649}(M_1))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] +[visit_exp `%`_dim{i#28649}(M_1)] +[visit_exp i#28649] +[visit_id i#28649] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] +[visit_exp `%X%`_shape{lanetype#6702, dim#6702, i#28654}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28661}(M_2))] +[visit_exp lanetype#6702] +[visit_id lanetype#6702] +[visit_exp dim#6702] +[visit_id dim#6702] +[visit_exp i#28654] +[visit_id i#28654] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28661}(M_2))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] +[visit_exp `%`_dim{i#28661}(M_2)] +[visit_exp i#28661] +[visit_id i#28661] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] +[visit_exp sx] +[visit_id sx] +[visit_exp v_1] +[visit_id v_1] +[visit_exp $inv_lanes_(`%X%`_shape{lanetype#6740, dim#6740, i#28862}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28869}(M_2)), c*{c <- `c*`})] +[visit_exp `%X%`_shape{lanetype#6740, dim#6740, i#28862}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28869}(M_2))] +[visit_exp lanetype#6740] +[visit_id lanetype#6740] +[visit_exp dim#6740] +[visit_id dim#6740] +[visit_exp i#28862] +[visit_id i#28862] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28869}(M_2))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] not free +[visit_exp `%`_dim{i#28869}(M_2)] +[visit_exp i#28869] +[visit_id i#28869] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] not free +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] no dims +[visit_id c*] +[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#6714, dim#6714, i#28678}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28685}(M_1)), v_1))] +[visit_exp c_1*{c_1 <- `c_1*`}] +[scope_enter c_1] +[visit_exp c_1] +[visit_id c_1] not free +[visit_id c_1] not free +[scope_exit c_1] +[visit_exp `c_1*`] +[visit_id c_1*] no dims +[visit_id c_1*] +[visit_exp $lanes_(`%X%`_shape{lanetype#6714, dim#6714, i#28678}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28685}(M_1)), v_1)] +[visit_exp `%X%`_shape{lanetype#6714, dim#6714, i#28678}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28685}(M_1))] +[visit_exp lanetype#6714] +[visit_id lanetype#6714] +[visit_exp dim#6714] +[visit_id dim#6714] +[visit_exp i#28678] +[visit_id i#28678] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28685}(M_1))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] not free +[visit_exp `%`_dim{i#28685}(M_1)] +[visit_exp i#28685] +[visit_id i#28685] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1)*{c_1 <- `c_1*`})] +[visit_exp c'_1*{c'_1 <- `c'_1*`}] +[scope_enter c'_1] +[visit_exp c'_1] +[visit_id c'_1] not free +[visit_id c'_1] not free +[scope_exit c'_1] +[visit_exp `c'_1*`] +[visit_id c'_1*] no dims +[visit_id c'_1*] +[visit_exp $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1)*{c_1 <- `c_1*`}] +[scope_enter c_1] +[visit_exp $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1)] +[visit_exp $lsizenn1((Jnn_1 : Jnn <: lanetype))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] not free +[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] not free +[visit_exp sx] +[visit_id sx] not free +[visit_exp c_1] +[visit_id c_1] not free +[visit_id c_1] not free +[scope_exit c_1] +[visit_exp `c_1*`] +[visit_id c_1*] not free +[visit_id c_1*] no dims +[visit_exp (c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}))] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[visit_exp $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`})] +[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] not free +[visit_exp c'_1*{c'_1 <- `c'_1*`}] +[scope_enter c'_1] +[visit_exp c'_1] +[visit_id c'_1] not free +[visit_id c'_1] not free +[scope_exit c'_1] +[visit_exp `c'_1*`] +[visit_id c'_1*] not free +[visit_id c'_1*] no dims +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextunop__{lanetype#6690 : lanetype, dim#6690 : dim, i#28642 : nat, Jnn_1 : Jnn, i#28649 : nat, M_1 : M, lanetype#6702 : lanetype, dim#6702 : dim, i#28654 : nat, Jnn_2 : Jnn, i#28661 : nat, M_2 : M, def $f_(N : N, iN(N)*) : iN(N)*, sx : sx, v_1 : vec_(`V128`_Vnn), lanetype#6740 : lanetype, dim#6740 : dim, i#28862 : nat, i#28869 : nat, `c*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, lanetype#6714 : lanetype, dim#6714 : dim, i#28678 : nat, i#28685 : nat, `c'_1*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#6714, dim#6714, i#28678}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28685}(M_1))))*}(`%X%`_shape{lanetype#6690, dim#6690, i#28642}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28649}(M_1)), `%X%`_shape{lanetype#6702, dim#6702, i#28654}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28661}(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape{lanetype#6740, dim#6740, i#28862}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28869}(M_2)), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#6714, dim#6714, i#28678}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28685}(M_1)), v_1)) + -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1)*{c_1 <- `c_1*`}) + -- if (c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`})) +[check_dims] N _ laneidx shape_1 shape_2 sx vec_ +DecD 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) +[visit_id shape_1] not free +[visit_id shape_2] not free +[visit_id N] not free +[visit_id _] not free +[visit_exp N] +[visit_id N] not free +[visit_id _] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[visit_id sx] not free +[visit_id sx] not free +[visit_id laneidx] not free +[visit_id laneidx] not free +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_id vec_] not free +[visit_exp `V128`_Vnn] +[visit_exp ()] +[visit_exp `V128`_Vnn] +[visit_exp ()] +[check_dims] Jnn_1 Jnn_2 M_1 M_2 c c'_1 c'_2 c_1 c_2 dim#6764 dim#6776 dim#6788 dim#6813 dim#6840 i i#28935 i#28942 i#28947 i#28954 i#29007 i#29014 i#29034 i#29044 i#29113 i#29120 i#29140 i#29150 i#29380 i#29387 k lanetype#6764 lanetype#6776 lanetype#6788 lanetype#6813 lanetype#6840 sx_1 sx_2 v_1 v_2 +[visit_exp `%X%`_shape{lanetype#6764, dim#6764, i#28935}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28942}(M_1))] +[visit_exp lanetype#6764] +[visit_id lanetype#6764] +[visit_exp dim#6764] +[visit_id dim#6764] +[visit_exp i#28935] +[visit_id i#28935] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28942}(M_1))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] +[visit_exp `%`_dim{i#28942}(M_1)] +[visit_exp i#28942] +[visit_id i#28942] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] +[visit_exp `%X%`_shape{lanetype#6776, dim#6776, i#28947}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28954}(M_2))] +[visit_exp lanetype#6776] +[visit_id lanetype#6776] +[visit_exp dim#6776] +[visit_id dim#6776] +[visit_exp i#28947] +[visit_id i#28947] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28954}(M_2))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] +[visit_exp `%`_dim{i#28954}(M_2)] +[visit_exp i#28954] +[visit_id i#28954] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] +[visit_exp sx_1] +[visit_id sx_1] +[visit_exp sx_2] +[visit_id sx_2] +[visit_exp i] +[visit_id i] +[visit_exp k] +[visit_id k] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $inv_lanes_(`%X%`_shape{lanetype#6840, dim#6840, i#29380}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#29387}(M_2)), c*{c <- `c*`})] +[visit_exp `%X%`_shape{lanetype#6840, dim#6840, i#29380}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#29387}(M_2))] +[visit_exp lanetype#6840] +[visit_id lanetype#6840] +[visit_exp dim#6840] +[visit_id dim#6840] +[visit_exp i#29380] +[visit_id i#29380] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#29387}(M_2))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] not free +[visit_exp `%`_dim{i#29387}(M_2)] +[visit_exp i#29387] +[visit_id i#29387] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] not free +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] no dims +[visit_id c*] +[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#6788, dim#6788, i#29007}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29014}(M_1)), v_1)[i!`%`_laneidx{i#29034}.0 : k!`%`_laneidx{i#29044}.0])] +[visit_exp c_1*{c_1 <- `c_1*`}] +[scope_enter c_1] +[visit_exp c_1] +[visit_id c_1] not free +[visit_id c_1] not free +[scope_exit c_1] +[visit_exp `c_1*`] +[visit_id c_1*] no dims +[visit_id c_1*] +[visit_exp $lanes_(`%X%`_shape{lanetype#6788, dim#6788, i#29007}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29014}(M_1)), v_1)[i!`%`_laneidx{i#29034}.0 : k!`%`_laneidx{i#29044}.0]] +[visit_exp $lanes_(`%X%`_shape{lanetype#6788, dim#6788, i#29007}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29014}(M_1)), v_1)] +[visit_exp `%X%`_shape{lanetype#6788, dim#6788, i#29007}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29014}(M_1))] +[visit_exp lanetype#6788] +[visit_id lanetype#6788] +[visit_exp dim#6788] +[visit_id dim#6788] +[visit_exp i#29007] +[visit_id i#29007] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29014}(M_1))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] not free +[visit_exp `%`_dim{i#29014}(M_1)] +[visit_exp i#29014] +[visit_id i#29014] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp i!`%`_laneidx{i#29034}.0] +[visit_exp i!`%`_laneidx{i#29034}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#29034] +[visit_id i#29034] +[visit_exp k!`%`_laneidx{i#29044}.0] +[visit_exp k!`%`_laneidx{i#29044}] +[visit_exp k] +[visit_id k] not free +[visit_exp i#29044] +[visit_id i#29044] +[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#6813, dim#6813, i#29113}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29120}(M_1)), v_2)[i!`%`_laneidx{i#29140}.0 : k!`%`_laneidx{i#29150}.0])] +[visit_exp c_2*{c_2 <- `c_2*`}] +[scope_enter c_2] +[visit_exp c_2] +[visit_id c_2] not free +[visit_id c_2] not free +[scope_exit c_2] +[visit_exp `c_2*`] +[visit_id c_2*] no dims +[visit_id c_2*] +[visit_exp $lanes_(`%X%`_shape{lanetype#6813, dim#6813, i#29113}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29120}(M_1)), v_2)[i!`%`_laneidx{i#29140}.0 : k!`%`_laneidx{i#29150}.0]] +[visit_exp $lanes_(`%X%`_shape{lanetype#6813, dim#6813, i#29113}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29120}(M_1)), v_2)] +[visit_exp `%X%`_shape{lanetype#6813, dim#6813, i#29113}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29120}(M_1))] +[visit_exp lanetype#6813] +[visit_id lanetype#6813] +[visit_exp dim#6813] +[visit_id dim#6813] +[visit_exp i#29113] +[visit_id i#29113] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29120}(M_1))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] not free +[visit_exp `%`_dim{i#29120}(M_1)] +[visit_exp i#29120] +[visit_id i#29120] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] not free +[visit_exp v_2] +[visit_id v_2] not free +[visit_exp i!`%`_laneidx{i#29140}.0] +[visit_exp i!`%`_laneidx{i#29140}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#29140] +[visit_id i#29140] +[visit_exp k!`%`_laneidx{i#29150}.0] +[visit_exp k!`%`_laneidx{i#29150}] +[visit_exp k] +[visit_id k] not free +[visit_exp i#29150] +[visit_id i#29150] +[visit_exp (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*`})] +[visit_exp c'_1*{c'_1 <- `c'_1*`}] +[scope_enter c'_1] +[visit_exp c'_1] +[visit_id c'_1] not free +[visit_id c'_1] not free +[scope_exit c'_1] +[visit_exp `c'_1*`] +[visit_id c'_1*] no dims +[visit_id c'_1*] +[visit_exp $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, c_1)*{c_1 <- `c_1*`}] +[scope_enter c_1] +[visit_exp $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, c_1)] +[visit_exp $lsizenn1((Jnn_1 : Jnn <: lanetype))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] not free +[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] not free +[visit_exp sx_1] +[visit_id sx_1] not free +[visit_exp c_1] +[visit_id c_1] not free +[visit_id c_1] not free +[scope_exit c_1] +[visit_exp `c_1*`] +[visit_id c_1*] not free +[visit_id c_1*] no dims +[visit_exp (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*`})] +[visit_exp c'_2*{c'_2 <- `c'_2*`}] +[scope_enter c'_2] +[visit_exp c'_2] +[visit_id c'_2] not free +[visit_id c'_2] not free +[scope_exit c'_2] +[visit_exp `c'_2*`] +[visit_id c'_2*] no dims +[visit_id c'_2*] +[visit_exp $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_2, c_2)*{c_2 <- `c_2*`}] +[scope_enter c_2] +[visit_exp $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_2, c_2)] +[visit_exp $lsizenn1((Jnn_1 : Jnn <: lanetype))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] not free +[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] not free +[visit_exp sx_2] +[visit_id sx_2] not free +[visit_exp c_2] +[visit_id c_2] not free +[visit_id c_2] not free +[scope_exit c_2] +[visit_exp `c_2*`] +[visit_id c_2*] not free +[visit_id c_2*] no dims +[visit_exp (c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}))] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[visit_exp $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})] +[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] not free +[visit_exp c'_1*{c'_1 <- `c'_1*`}] +[scope_enter c'_1] +[visit_exp c'_1] +[visit_id c'_1] not free +[visit_id c'_1] not free +[scope_exit c'_1] +[visit_exp `c'_1*`] +[visit_id c'_1*] not free +[visit_id c'_1*] no dims +[visit_exp c'_2*{c'_2 <- `c'_2*`}] +[scope_enter c'_2] +[visit_exp c'_2] +[visit_id c'_2] not free +[visit_id c'_2] not free +[scope_exit c'_2] +[visit_exp `c'_2*`] +[visit_id c'_2*] not free +[visit_id c'_2*] no dims +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivextbinop__{lanetype#6764 : lanetype, dim#6764 : dim, i#28935 : nat, Jnn_1 : Jnn, i#28942 : nat, M_1 : M, lanetype#6776 : lanetype, dim#6776 : dim, i#28947 : nat, Jnn_2 : Jnn, i#28954 : nat, 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), lanetype#6840 : lanetype, dim#6840 : dim, i#29380 : nat, i#29387 : nat, `c*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, lanetype#6788 : lanetype, dim#6788 : dim, i#29007 : nat, i#29014 : nat, i#29034 : nat, i#29044 : nat, lanetype#6813 : lanetype, dim#6813 : dim, i#29113 : nat, i#29120 : nat, i#29140 : nat, i#29150 : nat, `c'_1*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c'_2*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#6788, dim#6788, i#29007}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29014}(M_1))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#6813, dim#6813, i#29113}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29120}(M_1))))*}(`%X%`_shape{lanetype#6764, dim#6764, i#28935}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28942}(M_1)), `%X%`_shape{lanetype#6776, dim#6776, i#28947}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28954}(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape{lanetype#6840, dim#6840, i#29380}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#29387}(M_2)), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#6788, dim#6788, i#29007}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29014}(M_1)), v_1)[i!`%`_laneidx{i#29034}.0 : k!`%`_laneidx{i#29044}.0]) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#6813, dim#6813, i#29113}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29120}(M_1)), v_2)[i!`%`_laneidx{i#29140}.0 : k!`%`_laneidx{i#29150}.0]) + -- if (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*`}) + -- if (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*`}) + -- if (c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) +[check_dims] N _ +DecD ivadd_pairwise_(N : N, iN(N)*) : iN(N)* +[visit_id N] not free +[visit_id _] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N i i#29472 i#29492 i#29500 j_1 j_2 +[visit_exp N] +[visit_id N] +[visit_exp i*{i <- `i*`}] +[scope_enter i] +[visit_exp i] +[visit_id i] not free +[visit_id i] not free +[scope_exit i] +[visit_exp `i*`] +[visit_id i*] no dims +[visit_id i*] +[visit_exp $iadd_(N, `%`_iN{i#29492}(j_1), `%`_iN{i#29500}(j_2))*{i#29492 <- `i#29492*`, i#29500 <- `i#29500*`, j_1 <- `j_1*`, j_2 <- `j_2*`}] +[scope_enter i#29492] +[scope_enter i#29500] +[scope_enter j_1] +[scope_enter j_2] +[visit_exp $iadd_(N, `%`_iN{i#29492}(j_1), `%`_iN{i#29500}(j_2))] +[visit_exp N] +[visit_id N] not free +[visit_exp `%`_iN{i#29492}(j_1)] +[visit_exp i#29492] +[visit_id i#29492] not free +[visit_exp (j_1)] +[visit_exp j_1] +[visit_id j_1] not free +[visit_exp `%`_iN{i#29500}(j_2)] +[visit_exp i#29500] +[visit_id i#29500] not free +[visit_exp (j_2)] +[visit_exp j_2] +[visit_id j_2] not free +[visit_id i#29492] not free +[visit_id i#29500] not free +[visit_id j_1] not free +[visit_id j_2] not free +[scope_exit j_2] +[scope_exit j_1] +[scope_exit i#29500] +[scope_exit i#29492] +[visit_exp `i#29492*`] +[visit_id i#29492*] no dims +[visit_id i#29492*] +[visit_exp `i#29500*`] +[visit_id i#29500*] no dims +[visit_id i#29500*] +[visit_exp `j_1*`] +[visit_id j_1*] no dims +[visit_id j_1*] +[visit_exp `j_2*`] +[visit_id j_2*] no dims +[visit_id j_2*] +[visit_exp ($concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = i!`%`_iN{i#29472}.0*{i <- `i*`, i#29472 <- `i#29472*`})] +[visit_exp $concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`})] +[visit_exp [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}] +[scope_enter j_1] +[scope_enter j_2] +[visit_exp [j_1 j_2]] +[visit_exp j_1] +[visit_id j_1] not free +[visit_exp j_2] +[visit_id j_2] not free +[visit_id j_1] not free +[visit_id j_2] not free +[scope_exit j_2] +[scope_exit j_1] +[visit_exp `j_1*`] +[visit_id j_1*] not free +[visit_id j_1*] no dims +[visit_exp `j_2*`] +[visit_id j_2*] not free +[visit_id j_2*] no dims +[visit_exp i!`%`_iN{i#29472}.0*{i <- `i*`, i#29472 <- `i#29472*`}] +[scope_enter i] +[scope_enter i#29472] +[visit_exp i!`%`_iN{i#29472}.0] +[visit_exp i!`%`_iN{i#29472}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#29472] +[visit_id i#29472] not free +[visit_id i] not free +[visit_id i#29472] not free +[scope_exit i#29472] +[scope_exit i] +[visit_exp `i*`] +[visit_id i*] not free +[visit_id i*] no dims +[visit_exp `i#29472*`] +[visit_id i#29472*] no dims +[visit_id i#29472*] +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $ivadd_pairwise_{N : N, `i*` : iN(N)*, `i#29492*` : nat*, `i#29500*` : nat*, `j_1*` : N*, `j_2*` : N*, `i#29472*` : nat*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN{i#29492}(j_1), `%`_iN{i#29500}(j_2))*{i#29492 <- `i#29492*`, i#29500 <- `i#29500*`, 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{i#29472}.0*{i <- `i*`, i#29472 <- `i#29472*`}) +[check_dims] N _ +DecD ivmul_(N : N, iN(N)*, iN(N)*) : iN(N)* +[visit_id N] not free +[visit_id _] not free +[visit_exp N] +[visit_id N] not free +[visit_id _] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N i_1 i_2 +[visit_exp N] +[visit_id N] +[visit_exp i_1*{i_1 <- `i_1*`}] +[scope_enter i_1] +[visit_exp i_1] +[visit_id i_1] not free +[visit_id i_1] not free +[scope_exit i_1] +[visit_exp `i_1*`] +[visit_id i_1*] no dims +[visit_id i_1*] +[visit_exp i_2*{i_2 <- `i_2*`}] +[scope_enter i_2] +[visit_exp i_2] +[visit_id i_2] not free +[visit_id i_2] not free +[scope_exit i_2] +[visit_exp `i_2*`] +[visit_id i_2*] no dims +[visit_id i_2*] +[visit_exp $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}] +[scope_enter i_1] +[scope_enter i_2] +[visit_exp $imul_(N, i_1, i_2)] +[visit_exp N] +[visit_id N] not free +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i_2] +[visit_id i_2] not free +[visit_id i_1] not free +[visit_id i_2] not free +[scope_exit i_2] +[scope_exit i_1] +[visit_exp `i_1*`] +[visit_id i_1*] not free +[visit_id i_1*] no dims +[visit_exp `i_2*`] +[visit_id i_2*] not free +[visit_id i_2*] no dims +=> + ;; ../../../../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*`} +[check_dims] N _ +DecD ivdot_(N : N, iN(N)*, iN(N)*) : iN(N)* +[visit_id N] not free +[visit_id _] not free +[visit_exp N] +[visit_id N] not free +[visit_id _] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N i_1 i_2 j_1 j_2 +[visit_exp N] +[visit_id N] +[visit_exp i_1*{i_1 <- `i_1*`}] +[scope_enter i_1] +[visit_exp i_1] +[visit_id i_1] not free +[visit_id i_1] not free +[scope_exit i_1] +[visit_exp `i_1*`] +[visit_id i_1*] no dims +[visit_id i_1*] +[visit_exp i_2*{i_2 <- `i_2*`}] +[scope_enter i_2] +[visit_exp i_2] +[visit_id i_2] not free +[visit_id i_2] not free +[scope_exit i_2] +[visit_exp `i_2*`] +[visit_id i_2*] no dims +[visit_id i_2*] +[visit_exp $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`}] +[scope_enter j_1] +[scope_enter j_2] +[visit_exp $iadd_(N, j_1, j_2)] +[visit_exp N] +[visit_id N] not free +[visit_exp j_1] +[visit_id j_1] not free +[visit_exp j_2] +[visit_id j_2] not free +[visit_id j_1] not free +[visit_id j_2] not free +[scope_exit j_2] +[scope_exit j_1] +[visit_exp `j_1*`] +[visit_id j_1*] no dims +[visit_id j_1*] +[visit_exp `j_2*`] +[visit_id j_2*] no dims +[visit_id j_2*] +[visit_exp ($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*`})] +[visit_exp $concat_(syntax iN(N), [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`})] +[visit_exp N] +[visit_id N] not free +[visit_exp [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}] +[scope_enter j_1] +[scope_enter j_2] +[visit_exp [j_1 j_2]] +[visit_exp j_1] +[visit_id j_1] not free +[visit_exp j_2] +[visit_id j_2] not free +[visit_id j_1] not free +[visit_id j_2] not free +[scope_exit j_2] +[scope_exit j_1] +[visit_exp `j_1*`] +[visit_id j_1*] not free +[visit_id j_1*] no dims +[visit_exp `j_2*`] +[visit_id j_2*] not free +[visit_id j_2*] no dims +[visit_exp $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}] +[scope_enter i_1] +[scope_enter i_2] +[visit_exp $imul_(N, i_1, i_2)] +[visit_exp N] +[visit_id N] not free +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i_2] +[visit_id i_2] not free +[visit_id i_1] not free +[visit_id i_2] not free +[scope_exit i_2] +[scope_exit i_1] +[visit_exp `i_1*`] +[visit_id i_1*] not free +[visit_id i_1*] no dims +[visit_exp `i_2*`] +[visit_id i_2*] not free +[visit_id i_2*] no dims +=> + ;; ../../../../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*`}) +[check_dims] N _ +DecD ivdot_sat_(N : N, iN(N)*, iN(N)*) : iN(N)* +[visit_id N] not free +[visit_id _] not free +[visit_exp N] +[visit_id N] not free +[visit_id _] not free +[visit_exp N] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +[check_dims] N i_1 i_2 j_1 j_2 +[visit_exp N] +[visit_id N] +[visit_exp i_1*{i_1 <- `i_1*`}] +[scope_enter i_1] +[visit_exp i_1] +[visit_id i_1] not free +[visit_id i_1] not free +[scope_exit i_1] +[visit_exp `i_1*`] +[visit_id i_1*] no dims +[visit_id i_1*] +[visit_exp i_2*{i_2 <- `i_2*`}] +[scope_enter i_2] +[visit_exp i_2] +[visit_id i_2] not free +[visit_id i_2] not free +[scope_exit i_2] +[visit_exp `i_2*`] +[visit_id i_2*] no dims +[visit_id i_2*] +[visit_exp $iadd_sat_(N, `S`_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`}] +[scope_enter j_1] +[scope_enter j_2] +[visit_exp $iadd_sat_(N, `S`_sx, j_1, j_2)] +[visit_exp N] +[visit_id N] not free +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp j_1] +[visit_id j_1] not free +[visit_exp j_2] +[visit_id j_2] not free +[visit_id j_1] not free +[visit_id j_2] not free +[scope_exit j_2] +[scope_exit j_1] +[visit_exp `j_1*`] +[visit_id j_1*] no dims +[visit_id j_1*] +[visit_exp `j_2*`] +[visit_id j_2*] no dims +[visit_id j_2*] +[visit_exp ($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*`})] +[visit_exp $concat_(syntax iN(N), [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`})] +[visit_exp N] +[visit_id N] not free +[visit_exp [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}] +[scope_enter j_1] +[scope_enter j_2] +[visit_exp [j_1 j_2]] +[visit_exp j_1] +[visit_id j_1] not free +[visit_exp j_2] +[visit_id j_2] not free +[visit_id j_1] not free +[visit_id j_2] not free +[scope_exit j_2] +[scope_exit j_1] +[visit_exp `j_1*`] +[visit_id j_1*] not free +[visit_id j_1*] no dims +[visit_exp `j_2*`] +[visit_id j_2*] not free +[visit_id j_2*] no dims +[visit_exp $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}] +[scope_enter i_1] +[scope_enter i_2] +[visit_exp $imul_(N, i_1, i_2)] +[visit_exp N] +[visit_id N] not free +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i_2] +[visit_id i_2] not free +[visit_id i_1] not free +[visit_id i_2] not free +[scope_exit i_2] +[scope_exit i_1] +[visit_exp `i_1*`] +[visit_id i_1*] not free +[visit_id i_1*] no dims +[visit_exp `i_2*`] +[visit_id i_2*] not free +[visit_id i_2*] no dims +=> + ;; ../../../../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*`}) +[check_dims] Jnn#131 Jnn#135 Jnn_1 Jnn_2 M_1 M_2 dim#6864 dim#6876 dim#6888 dim#6900 i#29941 i#29948 i#29953 i#29960 i#29987 i#29994 i#29999 i#30006 lanetype#6864 lanetype#6876 lanetype#6888 lanetype#6900 shape#493 shape#505 sx sx#182 v_1 +[visit_exp `%`_ishape{shape#493, Jnn#131}(`%X%`_shape{lanetype#6864, dim#6864, i#29941}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29948}(M_1)))] +[visit_exp shape#493] +[visit_id shape#493] +[visit_exp Jnn#131] +[visit_id Jnn#131] +[visit_exp (`%X%`_shape{lanetype#6864, dim#6864, i#29941}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29948}(M_1)))] +[visit_exp `%X%`_shape{lanetype#6864, dim#6864, i#29941}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29948}(M_1))] +[visit_exp lanetype#6864] +[visit_id lanetype#6864] +[visit_exp dim#6864] +[visit_id dim#6864] +[visit_exp i#29941] +[visit_id i#29941] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29948}(M_1))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] +[visit_exp `%`_dim{i#29948}(M_1)] +[visit_exp i#29948] +[visit_id i#29948] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] +[visit_exp `%`_ishape{shape#505, Jnn#135}(`%X%`_shape{lanetype#6876, dim#6876, i#29953}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#29960}(M_2)))] +[visit_exp shape#505] +[visit_id shape#505] +[visit_exp Jnn#135] +[visit_id Jnn#135] +[visit_exp (`%X%`_shape{lanetype#6876, dim#6876, i#29953}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#29960}(M_2)))] +[visit_exp `%X%`_shape{lanetype#6876, dim#6876, i#29953}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#29960}(M_2))] +[visit_exp lanetype#6876] +[visit_id lanetype#6876] +[visit_exp dim#6876] +[visit_id dim#6876] +[visit_exp i#29953] +[visit_id i#29953] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#29960}(M_2))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] +[visit_exp `%`_dim{i#29960}(M_2)] +[visit_exp i#29960] +[visit_id i#29960] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] +[visit_exp `EXTADD_PAIRWISE`_vextunop__{sx#182}(sx)] +[visit_exp sx#182] +[visit_id sx#182] +[visit_exp (sx)] +[visit_exp sx] +[visit_id sx] +[visit_exp v_1] +[visit_id v_1] +[visit_exp $ivextunop__(`%X%`_shape{lanetype#6888, dim#6888, i#29987}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29994}(M_1)), `%X%`_shape{lanetype#6900, dim#6900, i#29999}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30006}(M_2)), def $ivadd_pairwise_, sx, v_1)] +[visit_exp `%X%`_shape{lanetype#6888, dim#6888, i#29987}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29994}(M_1))] +[visit_exp lanetype#6888] +[visit_id lanetype#6888] +[visit_exp dim#6888] +[visit_id dim#6888] +[visit_exp i#29987] +[visit_id i#29987] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29994}(M_1))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] not free +[visit_exp `%`_dim{i#29994}(M_1)] +[visit_exp i#29994] +[visit_id i#29994] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] not free +[visit_exp `%X%`_shape{lanetype#6900, dim#6900, i#29999}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30006}(M_2))] +[visit_exp lanetype#6900] +[visit_id lanetype#6900] +[visit_exp dim#6900] +[visit_id dim#6900] +[visit_exp i#29999] +[visit_id i#29999] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30006}(M_2))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] not free +[visit_exp `%`_dim{i#30006}(M_2)] +[visit_exp i#30006] +[visit_id i#30006] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] not free +[visit_exp sx] +[visit_id sx] not free +[visit_exp v_1] +[visit_id v_1] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextunop__{shape#493 : shape, Jnn#131 : Jnn, lanetype#6864 : lanetype, dim#6864 : dim, i#29941 : nat, Jnn_1 : Jnn, i#29948 : nat, M_1 : M, shape#505 : shape, Jnn#135 : Jnn, lanetype#6876 : lanetype, dim#6876 : dim, i#29953 : nat, Jnn_2 : Jnn, i#29960 : nat, M_2 : M, sx#182 : sx, sx : sx, v_1 : vec_(`V128`_Vnn), lanetype#6888 : lanetype, dim#6888 : dim, i#29987 : nat, i#29994 : nat, lanetype#6900 : lanetype, dim#6900 : dim, i#29999 : nat, i#30006 : nat}(`%`_ishape{shape#493, Jnn#131}(`%X%`_shape{lanetype#6864, dim#6864, i#29941}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29948}(M_1))), `%`_ishape{shape#505, Jnn#135}(`%X%`_shape{lanetype#6876, dim#6876, i#29953}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#29960}(M_2))), `EXTADD_PAIRWISE`_vextunop__{sx#182}(sx), v_1) = $ivextunop__(`%X%`_shape{lanetype#6888, dim#6888, i#29987}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29994}(M_1)), `%X%`_shape{lanetype#6900, dim#6900, i#29999}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30006}(M_2)), def $ivadd_pairwise_, sx, v_1) +[check_dims] Jnn#139 Jnn#143 Jnn_1 Jnn_2 M_1 M_2 dim#6912 dim#6924 dim#6936 dim#6948 half half#7 i#30021 i#30028 i#30033 i#30040 i#30079 i#30086 i#30091 i#30098 i#30118 i#30140 lanetype#6912 lanetype#6924 lanetype#6936 lanetype#6948 shape#517 shape#529 sx sx#184 v_1 v_2 +[visit_exp `%`_ishape{shape#517, Jnn#139}(`%X%`_shape{lanetype#6912, dim#6912, i#30021}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30028}(M_1)))] +[visit_exp shape#517] +[visit_id shape#517] +[visit_exp Jnn#139] +[visit_id Jnn#139] +[visit_exp (`%X%`_shape{lanetype#6912, dim#6912, i#30021}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30028}(M_1)))] +[visit_exp `%X%`_shape{lanetype#6912, dim#6912, i#30021}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30028}(M_1))] +[visit_exp lanetype#6912] +[visit_id lanetype#6912] +[visit_exp dim#6912] +[visit_id dim#6912] +[visit_exp i#30021] +[visit_id i#30021] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30028}(M_1))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] +[visit_exp `%`_dim{i#30028}(M_1)] +[visit_exp i#30028] +[visit_id i#30028] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] +[visit_exp `%`_ishape{shape#529, Jnn#143}(`%X%`_shape{lanetype#6924, dim#6924, i#30033}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30040}(M_2)))] +[visit_exp shape#529] +[visit_id shape#529] +[visit_exp Jnn#143] +[visit_id Jnn#143] +[visit_exp (`%X%`_shape{lanetype#6924, dim#6924, i#30033}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30040}(M_2)))] +[visit_exp `%X%`_shape{lanetype#6924, dim#6924, i#30033}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30040}(M_2))] +[visit_exp lanetype#6924] +[visit_id lanetype#6924] +[visit_exp dim#6924] +[visit_id dim#6924] +[visit_exp i#30033] +[visit_id i#30033] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30040}(M_2))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] +[visit_exp `%`_dim{i#30040}(M_2)] +[visit_exp i#30040] +[visit_id i#30040] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] +[visit_exp `EXTMUL`_vextbinop__{half#7, sx#184}(half, sx)] +[visit_exp half#7] +[visit_id half#7] +[visit_exp sx#184] +[visit_id sx#184] +[visit_exp (half, sx)] +[visit_exp half] +[visit_id half] +[visit_exp sx] +[visit_id sx] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $ivextbinop__(`%X%`_shape{lanetype#6936, dim#6936, i#30079}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30086}(M_1)), `%X%`_shape{lanetype#6948, dim#6948, i#30091}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30098}(M_2)), def $ivmul_, sx, sx, `%`_laneidx{i#30118}($half(half, 0, M_2)), `%`_laneidx{i#30140}(M_2), v_1, v_2)] +[visit_exp `%X%`_shape{lanetype#6936, dim#6936, i#30079}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30086}(M_1))] +[visit_exp lanetype#6936] +[visit_id lanetype#6936] +[visit_exp dim#6936] +[visit_id dim#6936] +[visit_exp i#30079] +[visit_id i#30079] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30086}(M_1))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] not free +[visit_exp `%`_dim{i#30086}(M_1)] +[visit_exp i#30086] +[visit_id i#30086] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] not free +[visit_exp `%X%`_shape{lanetype#6948, dim#6948, i#30091}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30098}(M_2))] +[visit_exp lanetype#6948] +[visit_id lanetype#6948] +[visit_exp dim#6948] +[visit_id dim#6948] +[visit_exp i#30091] +[visit_id i#30091] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30098}(M_2))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] not free +[visit_exp `%`_dim{i#30098}(M_2)] +[visit_exp i#30098] +[visit_id i#30098] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] not free +[visit_exp sx] +[visit_id sx] not free +[visit_exp sx] +[visit_id sx] not free +[visit_exp `%`_laneidx{i#30118}($half(half, 0, M_2))] +[visit_exp i#30118] +[visit_id i#30118] +[visit_exp ($half(half, 0, M_2))] +[visit_exp $half(half, 0, M_2)] +[visit_exp half] +[visit_id half] not free +[visit_exp 0] +[visit_exp M_2] +[visit_id M_2] not free +[visit_exp `%`_laneidx{i#30140}(M_2)] +[visit_exp i#30140] +[visit_id i#30140] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{shape#517 : shape, Jnn#139 : Jnn, lanetype#6912 : lanetype, dim#6912 : dim, i#30021 : nat, Jnn_1 : Jnn, i#30028 : nat, M_1 : M, shape#529 : shape, Jnn#143 : Jnn, lanetype#6924 : lanetype, dim#6924 : dim, i#30033 : nat, Jnn_2 : Jnn, i#30040 : nat, M_2 : M, half#7 : half, sx#184 : sx, half : half, sx : sx, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#6936 : lanetype, dim#6936 : dim, i#30079 : nat, i#30086 : nat, lanetype#6948 : lanetype, dim#6948 : dim, i#30091 : nat, i#30098 : nat, i#30118 : nat, i#30140 : nat}(`%`_ishape{shape#517, Jnn#139}(`%X%`_shape{lanetype#6912, dim#6912, i#30021}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30028}(M_1))), `%`_ishape{shape#529, Jnn#143}(`%X%`_shape{lanetype#6924, dim#6924, i#30033}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30040}(M_2))), `EXTMUL`_vextbinop__{half#7, sx#184}(half, sx), v_1, v_2) = $ivextbinop__(`%X%`_shape{lanetype#6936, dim#6936, i#30079}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30086}(M_1)), `%X%`_shape{lanetype#6948, dim#6948, i#30091}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30098}(M_2)), def $ivmul_, sx, sx, `%`_laneidx{i#30118}($half(half, 0, M_2)), `%`_laneidx{i#30140}(M_2), v_1, v_2) +[check_dims] Jnn#147 Jnn#151 Jnn_1 Jnn_2 M_1 M_2 dim#6960 dim#6972 dim#6984 dim#6996 i#30165 i#30172 i#30177 i#30184 i#30223 i#30230 i#30235 i#30242 i#30262 i#30284 lanetype#6960 lanetype#6972 lanetype#6984 lanetype#6996 shape#541 shape#553 v_1 v_2 +[visit_exp `%`_ishape{shape#541, Jnn#147}(`%X%`_shape{lanetype#6960, dim#6960, i#30165}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30172}(M_1)))] +[visit_exp shape#541] +[visit_id shape#541] +[visit_exp Jnn#147] +[visit_id Jnn#147] +[visit_exp (`%X%`_shape{lanetype#6960, dim#6960, i#30165}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30172}(M_1)))] +[visit_exp `%X%`_shape{lanetype#6960, dim#6960, i#30165}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30172}(M_1))] +[visit_exp lanetype#6960] +[visit_id lanetype#6960] +[visit_exp dim#6960] +[visit_id dim#6960] +[visit_exp i#30165] +[visit_id i#30165] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30172}(M_1))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] +[visit_exp `%`_dim{i#30172}(M_1)] +[visit_exp i#30172] +[visit_id i#30172] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] +[visit_exp `%`_ishape{shape#553, Jnn#151}(`%X%`_shape{lanetype#6972, dim#6972, i#30177}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30184}(M_2)))] +[visit_exp shape#553] +[visit_id shape#553] +[visit_exp Jnn#151] +[visit_id Jnn#151] +[visit_exp (`%X%`_shape{lanetype#6972, dim#6972, i#30177}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30184}(M_2)))] +[visit_exp `%X%`_shape{lanetype#6972, dim#6972, i#30177}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30184}(M_2))] +[visit_exp lanetype#6972] +[visit_id lanetype#6972] +[visit_exp dim#6972] +[visit_id dim#6972] +[visit_exp i#30177] +[visit_id i#30177] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30184}(M_2))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] +[visit_exp `%`_dim{i#30184}(M_2)] +[visit_exp i#30184] +[visit_id i#30184] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] +[visit_exp `DOTS`_vextbinop__] +[visit_exp ()] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $ivextbinop__(`%X%`_shape{lanetype#6984, dim#6984, i#30223}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30230}(M_1)), `%X%`_shape{lanetype#6996, dim#6996, i#30235}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30242}(M_2)), def $ivdot_, `S`_sx, `S`_sx, `%`_laneidx{i#30262}(0), `%`_laneidx{i#30284}(M_1), v_1, v_2)] +[visit_exp `%X%`_shape{lanetype#6984, dim#6984, i#30223}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30230}(M_1))] +[visit_exp lanetype#6984] +[visit_id lanetype#6984] +[visit_exp dim#6984] +[visit_id dim#6984] +[visit_exp i#30223] +[visit_id i#30223] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30230}(M_1))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] not free +[visit_exp `%`_dim{i#30230}(M_1)] +[visit_exp i#30230] +[visit_id i#30230] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] not free +[visit_exp `%X%`_shape{lanetype#6996, dim#6996, i#30235}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30242}(M_2))] +[visit_exp lanetype#6996] +[visit_id lanetype#6996] +[visit_exp dim#6996] +[visit_id dim#6996] +[visit_exp i#30235] +[visit_id i#30235] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30242}(M_2))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] not free +[visit_exp `%`_dim{i#30242}(M_2)] +[visit_exp i#30242] +[visit_id i#30242] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] not free +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_laneidx{i#30262}(0)] +[visit_exp i#30262] +[visit_id i#30262] +[visit_exp (0)] +[visit_exp 0] +[visit_exp `%`_laneidx{i#30284}(M_1)] +[visit_exp i#30284] +[visit_id i#30284] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{shape#541 : shape, Jnn#147 : Jnn, lanetype#6960 : lanetype, dim#6960 : dim, i#30165 : nat, Jnn_1 : Jnn, i#30172 : nat, M_1 : M, shape#553 : shape, Jnn#151 : Jnn, lanetype#6972 : lanetype, dim#6972 : dim, i#30177 : nat, Jnn_2 : Jnn, i#30184 : nat, M_2 : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#6984 : lanetype, dim#6984 : dim, i#30223 : nat, i#30230 : nat, lanetype#6996 : lanetype, dim#6996 : dim, i#30235 : nat, i#30242 : nat, i#30262 : nat, i#30284 : nat}(`%`_ishape{shape#541, Jnn#147}(`%X%`_shape{lanetype#6960, dim#6960, i#30165}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30172}(M_1))), `%`_ishape{shape#553, Jnn#151}(`%X%`_shape{lanetype#6972, dim#6972, i#30177}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30184}(M_2))), `DOTS`_vextbinop__, v_1, v_2) = $ivextbinop__(`%X%`_shape{lanetype#6984, dim#6984, i#30223}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30230}(M_1)), `%X%`_shape{lanetype#6996, dim#6996, i#30235}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30242}(M_2)), def $ivdot_, `S`_sx, `S`_sx, `%`_laneidx{i#30262}(0), `%`_laneidx{i#30284}(M_1), v_1, v_2) +[check_dims] Jnn#155 Jnn#159 Jnn_1 Jnn_2 M_1 M_2 dim#7008 dim#7020 dim#7032 dim#7044 i#30309 i#30316 i#30321 i#30328 i#30367 i#30374 i#30379 i#30386 i#30412 i#30434 lanetype#7008 lanetype#7020 lanetype#7032 lanetype#7044 shape#565 shape#577 v_1 v_2 +[visit_exp `%`_ishape{shape#565, Jnn#155}(`%X%`_shape{lanetype#7008, dim#7008, i#30309}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30316}(M_1)))] +[visit_exp shape#565] +[visit_id shape#565] +[visit_exp Jnn#155] +[visit_id Jnn#155] +[visit_exp (`%X%`_shape{lanetype#7008, dim#7008, i#30309}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30316}(M_1)))] +[visit_exp `%X%`_shape{lanetype#7008, dim#7008, i#30309}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30316}(M_1))] +[visit_exp lanetype#7008] +[visit_id lanetype#7008] +[visit_exp dim#7008] +[visit_id dim#7008] +[visit_exp i#30309] +[visit_id i#30309] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30316}(M_1))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] +[visit_exp `%`_dim{i#30316}(M_1)] +[visit_exp i#30316] +[visit_id i#30316] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] +[visit_exp `%`_ishape{shape#577, Jnn#159}(`%X%`_shape{lanetype#7020, dim#7020, i#30321}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30328}(M_2)))] +[visit_exp shape#577] +[visit_id shape#577] +[visit_exp Jnn#159] +[visit_id Jnn#159] +[visit_exp (`%X%`_shape{lanetype#7020, dim#7020, i#30321}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30328}(M_2)))] +[visit_exp `%X%`_shape{lanetype#7020, dim#7020, i#30321}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30328}(M_2))] +[visit_exp lanetype#7020] +[visit_id lanetype#7020] +[visit_exp dim#7020] +[visit_id dim#7020] +[visit_exp i#30321] +[visit_id i#30321] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30328}(M_2))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] +[visit_exp `%`_dim{i#30328}(M_2)] +[visit_exp i#30328] +[visit_id i#30328] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] +[visit_exp `RELAXED_DOTS`_vextbinop__] +[visit_exp ()] +[visit_exp v_1] +[visit_id v_1] +[visit_exp v_2] +[visit_id v_2] +[visit_exp $ivextbinop__(`%X%`_shape{lanetype#7032, dim#7032, i#30367}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30374}(M_1)), `%X%`_shape{lanetype#7044, dim#7044, i#30379}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30386}(M_2)), def $ivdot_sat_, `S`_sx, $relaxed2($R_idot, syntax sx, `S`_sx, `U`_sx), `%`_laneidx{i#30412}(0), `%`_laneidx{i#30434}(M_1), v_1, v_2)] +[visit_exp `%X%`_shape{lanetype#7032, dim#7032, i#30367}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30374}(M_1))] +[visit_exp lanetype#7032] +[visit_id lanetype#7032] +[visit_exp dim#7032] +[visit_id dim#7032] +[visit_exp i#30367] +[visit_id i#30367] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30374}(M_1))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] not free +[visit_exp `%`_dim{i#30374}(M_1)] +[visit_exp i#30374] +[visit_id i#30374] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] not free +[visit_exp `%X%`_shape{lanetype#7044, dim#7044, i#30379}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30386}(M_2))] +[visit_exp lanetype#7044] +[visit_id lanetype#7044] +[visit_exp dim#7044] +[visit_id dim#7044] +[visit_exp i#30379] +[visit_id i#30379] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30386}(M_2))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] not free +[visit_exp `%`_dim{i#30386}(M_2)] +[visit_exp i#30386] +[visit_id i#30386] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] not free +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp $relaxed2($R_idot, syntax sx, `S`_sx, `U`_sx)] +[visit_exp $R_idot] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_laneidx{i#30412}(0)] +[visit_exp i#30412] +[visit_id i#30412] +[visit_exp (0)] +[visit_exp 0] +[visit_exp `%`_laneidx{i#30434}(M_1)] +[visit_exp i#30434] +[visit_id i#30434] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] not free +[visit_exp v_1] +[visit_id v_1] not free +[visit_exp v_2] +[visit_id v_2] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextbinop__{shape#565 : shape, Jnn#155 : Jnn, lanetype#7008 : lanetype, dim#7008 : dim, i#30309 : nat, Jnn_1 : Jnn, i#30316 : nat, M_1 : M, shape#577 : shape, Jnn#159 : Jnn, lanetype#7020 : lanetype, dim#7020 : dim, i#30321 : nat, Jnn_2 : Jnn, i#30328 : nat, M_2 : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#7032 : lanetype, dim#7032 : dim, i#30367 : nat, i#30374 : nat, lanetype#7044 : lanetype, dim#7044 : dim, i#30379 : nat, i#30386 : nat, i#30412 : nat, i#30434 : nat}(`%`_ishape{shape#565, Jnn#155}(`%X%`_shape{lanetype#7008, dim#7008, i#30309}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30316}(M_1))), `%`_ishape{shape#577, Jnn#159}(`%X%`_shape{lanetype#7020, dim#7020, i#30321}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30328}(M_2))), `RELAXED_DOTS`_vextbinop__, v_1, v_2) = $ivextbinop__(`%X%`_shape{lanetype#7032, dim#7032, i#30367}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30374}(M_1)), `%X%`_shape{lanetype#7044, dim#7044, i#30379}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30386}(M_2)), def $ivdot_sat_, `S`_sx, $relaxed2($R_idot, syntax sx, `S`_sx, `U`_sx), `%`_laneidx{i#30412}(0), `%`_laneidx{i#30434}(M_1), v_1, v_2) +[check_dims] Jnn Jnn#163 Jnn#167 Jnn#171 Jnn#175 Jnn#179 Jnn#183 Jnn_1 Jnn_2 M M_1 M_2 c c' c'' c_1 c_2 c_3 dim#7056 dim#7068 dim#7080 dim#7092 dim#7149 dim#7161 dim#7218 i#30459 i#30466 i#30471 i#30478 i#30519 i#30526 i#30531 i#30538 i#30650 i#30657 i#30662 i#30669 i#30771 i#30778 lanetype#7056 lanetype#7068 lanetype#7080 lanetype#7092 lanetype#7149 lanetype#7161 lanetype#7218 shape#589 shape#601 shape#613 shape#625 shape#652 shape#664 sx#216 +[visit_exp `%`_ishape{shape#589, Jnn#163}(`%X%`_shape{lanetype#7056, dim#7056, i#30459}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30466}(M_1)))] +[visit_exp shape#589] +[visit_id shape#589] +[visit_exp Jnn#163] +[visit_id Jnn#163] +[visit_exp (`%X%`_shape{lanetype#7056, dim#7056, i#30459}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30466}(M_1)))] +[visit_exp `%X%`_shape{lanetype#7056, dim#7056, i#30459}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30466}(M_1))] +[visit_exp lanetype#7056] +[visit_id lanetype#7056] +[visit_exp dim#7056] +[visit_id dim#7056] +[visit_exp i#30459] +[visit_id i#30459] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30466}(M_1))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] +[visit_exp `%`_dim{i#30466}(M_1)] +[visit_exp i#30466] +[visit_id i#30466] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] +[visit_exp `%`_ishape{shape#601, Jnn#167}(`%X%`_shape{lanetype#7068, dim#7068, i#30471}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30478}(M_2)))] +[visit_exp shape#601] +[visit_id shape#601] +[visit_exp Jnn#167] +[visit_id Jnn#167] +[visit_exp (`%X%`_shape{lanetype#7068, dim#7068, i#30471}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30478}(M_2)))] +[visit_exp `%X%`_shape{lanetype#7068, dim#7068, i#30471}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30478}(M_2))] +[visit_exp lanetype#7068] +[visit_id lanetype#7068] +[visit_exp dim#7068] +[visit_id dim#7068] +[visit_exp i#30471] +[visit_id i#30471] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30478}(M_2))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] +[visit_exp `%`_dim{i#30478}(M_2)] +[visit_exp i#30478] +[visit_id i#30478] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] +[visit_exp `RELAXED_DOT_ADDS`_vextternop__] +[visit_exp ()] +[visit_exp c_1] +[visit_id c_1] +[visit_exp c_2] +[visit_id c_2] +[visit_exp c_3] +[visit_id c_3] +[visit_exp c] +[visit_id c] +[visit_exp ($jsizenn(Jnn) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))))] +[visit_exp $jsizenn(Jnn)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))] +[visit_exp 2] +[visit_exp $lsizenn1((Jnn_1 : Jnn <: lanetype))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] not free +[visit_exp (M = (2 * M_2))] +[visit_exp M] +[visit_id M] +[visit_exp (2 * M_2)] +[visit_exp 2] +[visit_exp M_2] +[visit_id M_2] not free +[visit_exp (c' = $vextbinop__(`%`_ishape{shape#613, Jnn#171}(`%X%`_shape{lanetype#7080, dim#7080, i#30519}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30526}(M_1))), `%`_ishape{shape#625, Jnn#175}(`%X%`_shape{lanetype#7092, dim#7092, i#30531}((Jnn : Jnn <: lanetype), `%`_dim{i#30538}(M))), `RELAXED_DOTS`_vextbinop__, c_1, c_2))] +[visit_exp c'] +[visit_id c'] +[visit_exp $vextbinop__(`%`_ishape{shape#613, Jnn#171}(`%X%`_shape{lanetype#7080, dim#7080, i#30519}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30526}(M_1))), `%`_ishape{shape#625, Jnn#175}(`%X%`_shape{lanetype#7092, dim#7092, i#30531}((Jnn : Jnn <: lanetype), `%`_dim{i#30538}(M))), `RELAXED_DOTS`_vextbinop__, c_1, c_2)] +[visit_exp `%`_ishape{shape#613, Jnn#171}(`%X%`_shape{lanetype#7080, dim#7080, i#30519}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30526}(M_1)))] +[visit_exp shape#613] +[visit_id shape#613] +[visit_exp Jnn#171] +[visit_id Jnn#171] +[visit_exp (`%X%`_shape{lanetype#7080, dim#7080, i#30519}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30526}(M_1)))] +[visit_exp `%X%`_shape{lanetype#7080, dim#7080, i#30519}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30526}(M_1))] +[visit_exp lanetype#7080] +[visit_id lanetype#7080] +[visit_exp dim#7080] +[visit_id dim#7080] +[visit_exp i#30519] +[visit_id i#30519] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30526}(M_1))] +[visit_exp (Jnn_1 : Jnn <: lanetype)] +[visit_exp Jnn_1] +[visit_id Jnn_1] not free +[visit_exp `%`_dim{i#30526}(M_1)] +[visit_exp i#30526] +[visit_id i#30526] +[visit_exp (M_1)] +[visit_exp M_1] +[visit_id M_1] not free +[visit_exp `%`_ishape{shape#625, Jnn#175}(`%X%`_shape{lanetype#7092, dim#7092, i#30531}((Jnn : Jnn <: lanetype), `%`_dim{i#30538}(M)))] +[visit_exp shape#625] +[visit_id shape#625] +[visit_exp Jnn#175] +[visit_id Jnn#175] +[visit_exp (`%X%`_shape{lanetype#7092, dim#7092, i#30531}((Jnn : Jnn <: lanetype), `%`_dim{i#30538}(M)))] +[visit_exp `%X%`_shape{lanetype#7092, dim#7092, i#30531}((Jnn : Jnn <: lanetype), `%`_dim{i#30538}(M))] +[visit_exp lanetype#7092] +[visit_id lanetype#7092] +[visit_exp dim#7092] +[visit_id dim#7092] +[visit_exp i#30531] +[visit_id i#30531] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#30538}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#30538}(M)] +[visit_exp i#30538] +[visit_id i#30538] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp `RELAXED_DOTS`_vextbinop__] +[visit_exp ()] +[visit_exp c_1] +[visit_id c_1] not free +[visit_exp c_2] +[visit_id c_2] not free +[visit_exp (c'' = $vextunop__(`%`_ishape{shape#652, Jnn#179}(`%X%`_shape{lanetype#7149, dim#7149, i#30650}((Jnn : Jnn <: lanetype), `%`_dim{i#30657}(M))), `%`_ishape{shape#664, Jnn#183}(`%X%`_shape{lanetype#7161, dim#7161, i#30662}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30669}(M_2))), `EXTADD_PAIRWISE`_vextunop__{sx#216}(`S`_sx), c'))] +[visit_exp c''] +[visit_id c''] +[visit_exp $vextunop__(`%`_ishape{shape#652, Jnn#179}(`%X%`_shape{lanetype#7149, dim#7149, i#30650}((Jnn : Jnn <: lanetype), `%`_dim{i#30657}(M))), `%`_ishape{shape#664, Jnn#183}(`%X%`_shape{lanetype#7161, dim#7161, i#30662}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30669}(M_2))), `EXTADD_PAIRWISE`_vextunop__{sx#216}(`S`_sx), c')] +[visit_exp `%`_ishape{shape#652, Jnn#179}(`%X%`_shape{lanetype#7149, dim#7149, i#30650}((Jnn : Jnn <: lanetype), `%`_dim{i#30657}(M)))] +[visit_exp shape#652] +[visit_id shape#652] +[visit_exp Jnn#179] +[visit_id Jnn#179] +[visit_exp (`%X%`_shape{lanetype#7149, dim#7149, i#30650}((Jnn : Jnn <: lanetype), `%`_dim{i#30657}(M)))] +[visit_exp `%X%`_shape{lanetype#7149, dim#7149, i#30650}((Jnn : Jnn <: lanetype), `%`_dim{i#30657}(M))] +[visit_exp lanetype#7149] +[visit_id lanetype#7149] +[visit_exp dim#7149] +[visit_id dim#7149] +[visit_exp i#30650] +[visit_id i#30650] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#30657}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#30657}(M)] +[visit_exp i#30657] +[visit_id i#30657] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp `%`_ishape{shape#664, Jnn#183}(`%X%`_shape{lanetype#7161, dim#7161, i#30662}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30669}(M_2)))] +[visit_exp shape#664] +[visit_id shape#664] +[visit_exp Jnn#183] +[visit_id Jnn#183] +[visit_exp (`%X%`_shape{lanetype#7161, dim#7161, i#30662}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30669}(M_2)))] +[visit_exp `%X%`_shape{lanetype#7161, dim#7161, i#30662}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30669}(M_2))] +[visit_exp lanetype#7161] +[visit_id lanetype#7161] +[visit_exp dim#7161] +[visit_id dim#7161] +[visit_exp i#30662] +[visit_id i#30662] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30669}(M_2))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] not free +[visit_exp `%`_dim{i#30669}(M_2)] +[visit_exp i#30669] +[visit_id i#30669] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] not free +[visit_exp `EXTADD_PAIRWISE`_vextunop__{sx#216}(`S`_sx)] +[visit_exp sx#216] +[visit_id sx#216] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp c'] +[visit_id c'] not free +[visit_exp (c <- $vbinop_(`%X%`_shape{lanetype#7218, dim#7218, i#30771}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30778}(M_2)), `ADD`_vbinop_, c'', c_3))] +[visit_exp c] +[visit_id c] not free +[visit_exp $vbinop_(`%X%`_shape{lanetype#7218, dim#7218, i#30771}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30778}(M_2)), `ADD`_vbinop_, c'', c_3)] +[visit_exp `%X%`_shape{lanetype#7218, dim#7218, i#30771}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30778}(M_2))] +[visit_exp lanetype#7218] +[visit_id lanetype#7218] +[visit_exp dim#7218] +[visit_id dim#7218] +[visit_exp i#30771] +[visit_id i#30771] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30778}(M_2))] +[visit_exp (Jnn_2 : Jnn <: lanetype)] +[visit_exp Jnn_2] +[visit_id Jnn_2] not free +[visit_exp `%`_dim{i#30778}(M_2)] +[visit_exp i#30778] +[visit_id i#30778] +[visit_exp (M_2)] +[visit_exp M_2] +[visit_id M_2] not free +[visit_exp `ADD`_vbinop_] +[visit_exp ()] +[visit_exp c''] +[visit_id c''] not free +[visit_exp c_3] +[visit_id c_3] not free +=> + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vextternop__{shape#589 : shape, Jnn#163 : Jnn, lanetype#7056 : lanetype, dim#7056 : dim, i#30459 : nat, Jnn_1 : Jnn, i#30466 : nat, M_1 : M, shape#601 : shape, Jnn#167 : Jnn, lanetype#7068 : lanetype, dim#7068 : dim, i#30471 : nat, Jnn_2 : Jnn, i#30478 : nat, 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), shape#613 : shape, Jnn#171 : Jnn, lanetype#7080 : lanetype, dim#7080 : dim, i#30519 : nat, i#30526 : nat, shape#625 : shape, Jnn#175 : Jnn, lanetype#7092 : lanetype, dim#7092 : dim, i#30531 : nat, i#30538 : nat, c'' : vec_(`V128`_Vnn), shape#652 : shape, Jnn#179 : Jnn, lanetype#7149 : lanetype, dim#7149 : dim, i#30650 : nat, i#30657 : nat, shape#664 : shape, Jnn#183 : Jnn, lanetype#7161 : lanetype, dim#7161 : dim, i#30662 : nat, i#30669 : nat, sx#216 : sx, lanetype#7218 : lanetype, dim#7218 : dim, i#30771 : nat, i#30778 : nat}(`%`_ishape{shape#589, Jnn#163}(`%X%`_shape{lanetype#7056, dim#7056, i#30459}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30466}(M_1))), `%`_ishape{shape#601, Jnn#167}(`%X%`_shape{lanetype#7068, dim#7068, i#30471}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30478}(M_2))), `RELAXED_DOT_ADDS`_vextternop__, 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{shape#613, Jnn#171}(`%X%`_shape{lanetype#7080, dim#7080, i#30519}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30526}(M_1))), `%`_ishape{shape#625, Jnn#175}(`%X%`_shape{lanetype#7092, dim#7092, i#30531}((Jnn : Jnn <: lanetype), `%`_dim{i#30538}(M))), `RELAXED_DOTS`_vextbinop__, c_1, c_2)) + -- if (c'' = $vextunop__(`%`_ishape{shape#652, Jnn#179}(`%X%`_shape{lanetype#7149, dim#7149, i#30650}((Jnn : Jnn <: lanetype), `%`_dim{i#30657}(M))), `%`_ishape{shape#664, Jnn#183}(`%X%`_shape{lanetype#7161, dim#7161, i#30662}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30669}(M_2))), `EXTADD_PAIRWISE`_vextunop__{sx#216}(`S`_sx), c')) + -- if (c <- $vbinop_(`%X%`_shape{lanetype#7218, dim#7218, i#30771}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30778}(M_2)), `ADD`_vbinop_, c'', c_3)) +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id tagaddr] no dims +[visit_id tagaddr] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id globaladdr] no dims +[visit_id globaladdr] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id memaddr] no dims +[visit_id memaddr] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id tableaddr] no dims +[visit_id tableaddr] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id funcaddr] no dims +[visit_id funcaddr] +[check_dims] +[check_dims] +[check_dims] +--- 1 --- +[check_dims] numtype +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id numtype] +[visit_id _] not free +[visit_id _] no dims +[visit_exp numtype] +[visit_id numtype] not free +[check_dims] +--- 1 --- +[check_dims] vectype +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id vectype] +[visit_id _] not free +[visit_id _] no dims +[visit_exp vectype] +[visit_id vectype] not free +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id u31] no dims +[visit_id u31] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id structaddr] no dims +[visit_id structaddr] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id arrayaddr] no dims +[visit_id arrayaddr] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id funcaddr] no dims +[visit_id funcaddr] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id exnaddr] no dims +[visit_id exnaddr] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id hostaddr] no dims +[visit_id hostaddr] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id addrref] no dims +[visit_id addrref] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id heaptype] no dims +[visit_id heaptype] +[check_dims] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id val*] no dims +[visit_id val*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id exnaddr] no dims +[visit_id exnaddr] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[check_dims] +[check_dims] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[check_dims] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id tagtype] no dims +[visit_id tagtype] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id globaltype] no dims +[visit_id globaltype] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id val] no dims +[visit_id val] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id memtype] no dims +[visit_id memtype] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id byte*] no dims +[visit_id byte*] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id tabletype] no dims +[visit_id tabletype] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id ref*] no dims +[visit_id ref*] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id deftype] no dims +[visit_id deftype] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id moduleinst] no dims +[visit_id moduleinst] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id funccode] no dims +[visit_id funccode] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id byte*] no dims +[visit_id byte*] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id elemtype] no dims +[visit_id elemtype] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id ref*] no dims +[visit_id ref*] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id name] no dims +[visit_id name] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id externaddr] no dims +[visit_id externaddr] +[check_dims] +--- 1 --- +[check_dims] packtype +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id packtype] +[visit_id _] not free +[visit_id _] no dims +[visit_exp $psizenn(packtype)] +[visit_exp packtype] +[visit_id packtype] not free +[check_dims] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id deftype] no dims +[visit_id deftype] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id fieldval*] no dims +[visit_id fieldval*] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id deftype] no dims +[visit_id deftype] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id fieldval*] no dims +[visit_id fieldval*] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id tagaddr] no dims +[visit_id tagaddr] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id val*] no dims +[visit_id val*] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id deftype*] no dims +[visit_id deftype*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id tagaddr*] no dims +[visit_id tagaddr*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id globaladdr*] no dims +[visit_id globaladdr*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id memaddr*] no dims +[visit_id memaddr*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id tableaddr*] no dims +[visit_id tableaddr*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id funcaddr*] no dims +[visit_id funcaddr*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id dataaddr*] no dims +[visit_id dataaddr*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id elemaddr*] no dims +[visit_id elemaddr*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id exportinst*] no dims +[visit_id exportinst*] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id taginst*] no dims +[visit_id taginst*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id globalinst*] no dims +[visit_id globalinst*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id meminst*] no dims +[visit_id meminst*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id tableinst*] no dims +[visit_id tableinst*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id funcinst*] no dims +[visit_id funcinst*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id datainst*] no dims +[visit_id datainst*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id eleminst*] no dims +[visit_id eleminst*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id structinst*] no dims +[visit_id structinst*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id arrayinst*] no dims +[visit_id arrayinst*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id exninst*] no dims +[visit_id exninst*] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id val?*] no dims +[visit_id val?*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id moduleinst] no dims +[visit_id moduleinst] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id n] no dims +[visit_id n] +[visit_id instr*] no dims +[visit_id instr*] +[visit_id instr*] not free +[visit_id instr*] no dims +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id n] no dims +[visit_id n] +[visit_id frame] no dims +[visit_id frame] +[visit_id instr*] no dims +[visit_id instr*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id n] no dims +[visit_id n] +[visit_id catch*] no dims +[visit_id catch*] +[visit_id instr*] no dims +[visit_id instr*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id store] no dims +[visit_id store] +[visit_id frame] no dims +[visit_id frame] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id state] no dims +[visit_id state] +[visit_id instr*] no dims +[visit_id instr*] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +DecD Ki : nat +[check_dims] +[visit_exp 1024] +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $Ki = 1024 +[check_dims] storagetype val +DecD packfield_(storagetype : storagetype, val : val) : fieldval +[visit_id storagetype] not free +[visit_id val] not free +[check_dims] _ fieldval storagetype +DecD unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val +[visit_id storagetype] not free +[visit_id _] not free +[visit_id fieldval] not free +[check_dims] val valtype +[visit_exp (valtype : valtype <: storagetype)] +[visit_exp valtype] +[visit_id valtype] +[visit_exp val] +[visit_id val] +[visit_exp (val : val <: fieldval)] +[visit_exp val] +[visit_id val] not free +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), val) = (val : val <: fieldval) +[check_dims] i numtype#33 packtype packtype#1 +[visit_exp (packtype : packtype <: storagetype)] +[visit_exp packtype] +[visit_id packtype] +[visit_exp `CONST`_val{numtype#33}(`I32`_numtype, i)] +[visit_exp numtype#33] +[visit_id numtype#33] +[visit_exp (`I32`_numtype, i)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i] +[visit_id i] +[visit_exp `PACK`_fieldval{packtype#1}(packtype, $wrap__(32, $psize(packtype), i))] +[visit_exp packtype#1] +[visit_id packtype#1] +[visit_exp (packtype, $wrap__(32, $psize(packtype), i))] +[visit_exp packtype] +[visit_id packtype] not free +[visit_exp $wrap__(32, $psize(packtype), i)] +[visit_exp 32] +[visit_exp $psize(packtype)] +[visit_exp packtype] +[visit_id packtype] not free +[visit_exp i] +[visit_id i] not free +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $packfield_{packtype : packtype, numtype#33 : numtype, i : num_(`I32`_numtype), packtype#1 : packtype}((packtype : packtype <: storagetype), `CONST`_val{numtype#33}(`I32`_numtype, i)) = `PACK`_fieldval{packtype#1}(packtype, $wrap__(32, $psize(packtype), i)) +[check_dims] val valtype +[visit_exp (valtype : valtype <: storagetype)] +[visit_exp valtype] +[visit_id valtype] +[visit_exp ?()] +[visit_exp (val : val <: fieldval)] +[visit_exp val] +[visit_id val] +[visit_exp val] +[visit_id val] not free +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), ?(), (val : val <: fieldval)) = val +[check_dims] i numtype#35 packtype packtype#3 sx +[visit_exp (packtype : packtype <: storagetype)] +[visit_exp packtype] +[visit_id packtype] +[visit_exp ?(sx)] +[visit_exp sx] +[visit_id sx] +[visit_exp `PACK`_fieldval{packtype#3}(packtype, i)] +[visit_exp packtype#3] +[visit_id packtype#3] +[visit_exp (packtype, i)] +[visit_exp packtype] +[visit_id packtype] not free +[visit_exp i] +[visit_id i] +[visit_exp `CONST`_val{numtype#35}(`I32`_numtype, $extend__($psize(packtype), 32, sx, i))] +[visit_exp numtype#35] +[visit_id numtype#35] +[visit_exp (`I32`_numtype, $extend__($psize(packtype), 32, sx, i))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp $extend__($psize(packtype), 32, sx, i)] +[visit_exp $psize(packtype)] +[visit_exp packtype] +[visit_id packtype] not free +[visit_exp 32] +[visit_exp sx] +[visit_id sx] not free +[visit_exp i] +[visit_id i] not free +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $unpackfield_{packtype : packtype, sx : sx, packtype#3 : packtype, i : iN($psizenn(packtype)), numtype#35 : numtype}((packtype : packtype <: storagetype), ?(sx), `PACK`_fieldval{packtype#3}(packtype, i)) = `CONST`_val{numtype#35}(`I32`_numtype, $extend__($psize(packtype), 32, sx, i)) +[check_dims] _ +DecD tagsxa(externaddr*) : tagaddr* +[visit_id _] not free +[check_dims] _ +DecD globalsxa(externaddr*) : globaladdr* +[visit_id _] not free +[check_dims] _ +DecD memsxa(externaddr*) : memaddr* +[visit_id _] not free +[check_dims] _ +DecD tablesxa(externaddr*) : tableaddr* +[visit_id _] not free +[check_dims] _ +DecD funcsxa(externaddr*) : funcaddr* +[visit_id _] not free +[check_dims] +[visit_exp []] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tagsxa([]) = [] +[check_dims] a tagaddr#1 xa +[visit_exp [`TAG`_externaddr{tagaddr#1}(a)] ++ xa*{xa <- `xa*`}] +[visit_exp [`TAG`_externaddr{tagaddr#1}(a)]] +[visit_exp `TAG`_externaddr{tagaddr#1}(a)] +[visit_exp tagaddr#1] +[visit_id tagaddr#1] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp xa*{xa <- `xa*`}] +[scope_enter xa] +[visit_exp xa] +[visit_id xa] not free +[visit_id xa] not free +[scope_exit xa] +[visit_exp `xa*`] +[visit_id xa*] no dims +[visit_id xa*] +[visit_exp [a] ++ $tagsxa(xa*{xa <- `xa*`})] +[visit_exp [a]] +[visit_exp a] +[visit_id a] not free +[visit_exp $tagsxa(xa*{xa <- `xa*`})] +[visit_exp xa*{xa <- `xa*`}] +[scope_enter xa] +[visit_exp xa] +[visit_id xa] not free +[visit_id xa] not free +[scope_exit xa] +[visit_exp `xa*`] +[visit_id xa*] not free +[visit_id xa*] no dims +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tagsxa{tagaddr#1 : tagaddr, a : addr, `xa*` : externaddr*}([`TAG`_externaddr{tagaddr#1}(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tagsxa(xa*{xa <- `xa*`}) +[check_dims] externaddr xa +[visit_exp [externaddr] ++ xa*{xa <- `xa*`}] +[visit_exp [externaddr]] +[visit_exp externaddr] +[visit_id externaddr] +[visit_exp xa*{xa <- `xa*`}] +[scope_enter xa] +[visit_exp xa] +[visit_id xa] not free +[visit_id xa] not free +[scope_exit xa] +[visit_exp `xa*`] +[visit_id xa*] no dims +[visit_id xa*] +[visit_exp $tagsxa(xa*{xa <- `xa*`})] +[visit_exp xa*{xa <- `xa*`}] +[scope_enter xa] +[visit_exp xa] +[visit_id xa] not free +[visit_id xa] not free +[scope_exit xa] +[visit_exp `xa*`] +[visit_id xa*] not free +[visit_id xa*] no dims +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tagsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $tagsxa(xa*{xa <- `xa*`}) + -- otherwise +[check_dims] +[visit_exp []] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $globalsxa([]) = [] +[check_dims] a globaladdr#1 xa +[visit_exp [`GLOBAL`_externaddr{globaladdr#1}(a)] ++ xa*{xa <- `xa*`}] +[visit_exp [`GLOBAL`_externaddr{globaladdr#1}(a)]] +[visit_exp `GLOBAL`_externaddr{globaladdr#1}(a)] +[visit_exp globaladdr#1] +[visit_id globaladdr#1] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp xa*{xa <- `xa*`}] +[scope_enter xa] +[visit_exp xa] +[visit_id xa] not free +[visit_id xa] not free +[scope_exit xa] +[visit_exp `xa*`] +[visit_id xa*] no dims +[visit_id xa*] +[visit_exp [a] ++ $globalsxa(xa*{xa <- `xa*`})] +[visit_exp [a]] +[visit_exp a] +[visit_id a] not free +[visit_exp $globalsxa(xa*{xa <- `xa*`})] +[visit_exp xa*{xa <- `xa*`}] +[scope_enter xa] +[visit_exp xa] +[visit_id xa] not free +[visit_id xa] not free +[scope_exit xa] +[visit_exp `xa*`] +[visit_id xa*] not free +[visit_id xa*] no dims +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $globalsxa{globaladdr#1 : globaladdr, a : addr, `xa*` : externaddr*}([`GLOBAL`_externaddr{globaladdr#1}(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $globalsxa(xa*{xa <- `xa*`}) +[check_dims] externaddr xa +[visit_exp [externaddr] ++ xa*{xa <- `xa*`}] +[visit_exp [externaddr]] +[visit_exp externaddr] +[visit_id externaddr] +[visit_exp xa*{xa <- `xa*`}] +[scope_enter xa] +[visit_exp xa] +[visit_id xa] not free +[visit_id xa] not free +[scope_exit xa] +[visit_exp `xa*`] +[visit_id xa*] no dims +[visit_id xa*] +[visit_exp $globalsxa(xa*{xa <- `xa*`})] +[visit_exp xa*{xa <- `xa*`}] +[scope_enter xa] +[visit_exp xa] +[visit_id xa] not free +[visit_id xa] not free +[scope_exit xa] +[visit_exp `xa*`] +[visit_id xa*] not free +[visit_id xa*] no dims +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $globalsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $globalsxa(xa*{xa <- `xa*`}) + -- otherwise +[check_dims] +[visit_exp []] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $memsxa([]) = [] +[check_dims] a memaddr#1 xa +[visit_exp [`MEM`_externaddr{memaddr#1}(a)] ++ xa*{xa <- `xa*`}] +[visit_exp [`MEM`_externaddr{memaddr#1}(a)]] +[visit_exp `MEM`_externaddr{memaddr#1}(a)] +[visit_exp memaddr#1] +[visit_id memaddr#1] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp xa*{xa <- `xa*`}] +[scope_enter xa] +[visit_exp xa] +[visit_id xa] not free +[visit_id xa] not free +[scope_exit xa] +[visit_exp `xa*`] +[visit_id xa*] no dims +[visit_id xa*] +[visit_exp [a] ++ $memsxa(xa*{xa <- `xa*`})] +[visit_exp [a]] +[visit_exp a] +[visit_id a] not free +[visit_exp $memsxa(xa*{xa <- `xa*`})] +[visit_exp xa*{xa <- `xa*`}] +[scope_enter xa] +[visit_exp xa] +[visit_id xa] not free +[visit_id xa] not free +[scope_exit xa] +[visit_exp `xa*`] +[visit_id xa*] not free +[visit_id xa*] no dims +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $memsxa{memaddr#1 : memaddr, a : addr, `xa*` : externaddr*}([`MEM`_externaddr{memaddr#1}(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $memsxa(xa*{xa <- `xa*`}) +[check_dims] externaddr xa +[visit_exp [externaddr] ++ xa*{xa <- `xa*`}] +[visit_exp [externaddr]] +[visit_exp externaddr] +[visit_id externaddr] +[visit_exp xa*{xa <- `xa*`}] +[scope_enter xa] +[visit_exp xa] +[visit_id xa] not free +[visit_id xa] not free +[scope_exit xa] +[visit_exp `xa*`] +[visit_id xa*] no dims +[visit_id xa*] +[visit_exp $memsxa(xa*{xa <- `xa*`})] +[visit_exp xa*{xa <- `xa*`}] +[scope_enter xa] +[visit_exp xa] +[visit_id xa] not free +[visit_id xa] not free +[scope_exit xa] +[visit_exp `xa*`] +[visit_id xa*] not free +[visit_id xa*] no dims +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $memsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $memsxa(xa*{xa <- `xa*`}) + -- otherwise +[check_dims] +[visit_exp []] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tablesxa([]) = [] +[check_dims] a tableaddr#1 xa +[visit_exp [`TABLE`_externaddr{tableaddr#1}(a)] ++ xa*{xa <- `xa*`}] +[visit_exp [`TABLE`_externaddr{tableaddr#1}(a)]] +[visit_exp `TABLE`_externaddr{tableaddr#1}(a)] +[visit_exp tableaddr#1] +[visit_id tableaddr#1] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp xa*{xa <- `xa*`}] +[scope_enter xa] +[visit_exp xa] +[visit_id xa] not free +[visit_id xa] not free +[scope_exit xa] +[visit_exp `xa*`] +[visit_id xa*] no dims +[visit_id xa*] +[visit_exp [a] ++ $tablesxa(xa*{xa <- `xa*`})] +[visit_exp [a]] +[visit_exp a] +[visit_id a] not free +[visit_exp $tablesxa(xa*{xa <- `xa*`})] +[visit_exp xa*{xa <- `xa*`}] +[scope_enter xa] +[visit_exp xa] +[visit_id xa] not free +[visit_id xa] not free +[scope_exit xa] +[visit_exp `xa*`] +[visit_id xa*] not free +[visit_id xa*] no dims +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tablesxa{tableaddr#1 : tableaddr, a : addr, `xa*` : externaddr*}([`TABLE`_externaddr{tableaddr#1}(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tablesxa(xa*{xa <- `xa*`}) +[check_dims] externaddr xa +[visit_exp [externaddr] ++ xa*{xa <- `xa*`}] +[visit_exp [externaddr]] +[visit_exp externaddr] +[visit_id externaddr] +[visit_exp xa*{xa <- `xa*`}] +[scope_enter xa] +[visit_exp xa] +[visit_id xa] not free +[visit_id xa] not free +[scope_exit xa] +[visit_exp `xa*`] +[visit_id xa*] no dims +[visit_id xa*] +[visit_exp $tablesxa(xa*{xa <- `xa*`})] +[visit_exp xa*{xa <- `xa*`}] +[scope_enter xa] +[visit_exp xa] +[visit_id xa] not free +[visit_id xa] not free +[scope_exit xa] +[visit_exp `xa*`] +[visit_id xa*] not free +[visit_id xa*] no dims +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tablesxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $tablesxa(xa*{xa <- `xa*`}) + -- otherwise +[check_dims] +[visit_exp []] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $funcsxa([]) = [] +[check_dims] a funcaddr#1 xa +[visit_exp [`FUNC`_externaddr{funcaddr#1}(a)] ++ xa*{xa <- `xa*`}] +[visit_exp [`FUNC`_externaddr{funcaddr#1}(a)]] +[visit_exp `FUNC`_externaddr{funcaddr#1}(a)] +[visit_exp funcaddr#1] +[visit_id funcaddr#1] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp xa*{xa <- `xa*`}] +[scope_enter xa] +[visit_exp xa] +[visit_id xa] not free +[visit_id xa] not free +[scope_exit xa] +[visit_exp `xa*`] +[visit_id xa*] no dims +[visit_id xa*] +[visit_exp [a] ++ $funcsxa(xa*{xa <- `xa*`})] +[visit_exp [a]] +[visit_exp a] +[visit_id a] not free +[visit_exp $funcsxa(xa*{xa <- `xa*`})] +[visit_exp xa*{xa <- `xa*`}] +[scope_enter xa] +[visit_exp xa] +[visit_id xa] not free +[visit_id xa] not free +[scope_exit xa] +[visit_exp `xa*`] +[visit_id xa*] not free +[visit_id xa*] no dims +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $funcsxa{funcaddr#1 : funcaddr, a : addr, `xa*` : externaddr*}([`FUNC`_externaddr{funcaddr#1}(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $funcsxa(xa*{xa <- `xa*`}) +[check_dims] externaddr xa +[visit_exp [externaddr] ++ xa*{xa <- `xa*`}] +[visit_exp [externaddr]] +[visit_exp externaddr] +[visit_id externaddr] +[visit_exp xa*{xa <- `xa*`}] +[scope_enter xa] +[visit_exp xa] +[visit_id xa] not free +[visit_id xa] not free +[scope_exit xa] +[visit_exp `xa*`] +[visit_id xa*] no dims +[visit_id xa*] +[visit_exp $funcsxa(xa*{xa <- `xa*`})] +[visit_exp xa*{xa <- `xa*`}] +[scope_enter xa] +[visit_exp xa] +[visit_id xa] not free +[visit_id xa] not free +[scope_exit xa] +[visit_exp `xa*`] +[visit_id xa*] not free +[visit_id xa*] no dims +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $funcsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $funcsxa(xa*{xa <- `xa*`}) + -- otherwise +[check_dims] state +DecD store(state : state) : store +[visit_id state] not free +[check_dims] state +DecD frame(state : state) : frame +[visit_id state] not free +[check_dims] f frame#11 s store#11 +[visit_exp `%;%`_state{store#11, frame#11}(s, f)] +[visit_exp store#11] +[visit_id store#11] +[visit_exp frame#11] +[visit_id frame#11] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp s] +[visit_id s] not free +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $store{store#11 : store, frame#11 : frame, s : store, f : frame}(`%;%`_state{store#11, frame#11}(s, f)) = s +[check_dims] f frame#23 s store#23 +[visit_exp `%;%`_state{store#23, frame#23}(s, f)] +[visit_exp store#23] +[visit_id store#23] +[visit_exp frame#23] +[visit_id frame#23] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp f] +[visit_id f] not free +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $frame{store#23 : store, frame#23 : frame, s : store, f : frame}(`%;%`_state{store#23, frame#23}(s, f)) = f +[check_dims] state +DecD tagaddr(state : state) : tagaddr* +[visit_id state] not free +[check_dims] f frame#35 moduleinst#2 s store#35 tagaddr*#2 +[visit_exp `%;%`_state{store#35, frame#35}(s, f)] +[visit_exp store#35] +[visit_id store#35] +[visit_exp frame#35] +[visit_id frame#35] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp f.`MODULE`_frame{moduleinst#2}.`TAGS`_moduleinst{`tagaddr*#2`}] +[visit_exp f.`MODULE`_frame{moduleinst#2}] +[visit_exp f] +[visit_id f] not free +[visit_exp moduleinst#2] +[visit_id moduleinst#2] +[visit_exp `tagaddr*#2`] +[visit_id tagaddr*#2] +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tagaddr{store#35 : store, frame#35 : frame, s : store, f : frame, moduleinst#2 : moduleinst, `tagaddr*#2` : tagaddr*}(`%;%`_state{store#35, frame#35}(s, f)) = f.`MODULE`_frame{moduleinst#2}.`TAGS`_moduleinst{`tagaddr*#2`} +[check_dims] state +DecD moduleinst(state : state) : moduleinst +[visit_id state] not free +[check_dims] state +DecD taginst(state : state) : taginst* +[visit_id state] not free +[check_dims] state +DecD globalinst(state : state) : globalinst* +[visit_id state] not free +[check_dims] state +DecD meminst(state : state) : meminst* +[visit_id state] not free +[check_dims] state +DecD tableinst(state : state) : tableinst* +[visit_id state] not free +[check_dims] state +DecD funcinst(state : state) : funcinst* +[visit_id state] not free +[check_dims] state +DecD datainst(state : state) : datainst* +[visit_id state] not free +[check_dims] state +DecD eleminst(state : state) : eleminst* +[visit_id state] not free +[check_dims] state +DecD structinst(state : state) : structinst* +[visit_id state] not free +[check_dims] state +DecD arrayinst(state : state) : arrayinst* +[visit_id state] not free +[check_dims] state +DecD exninst(state : state) : exninst* +[visit_id state] not free +[check_dims] f frame#47 moduleinst#3 s store#47 +[visit_exp `%;%`_state{store#47, frame#47}(s, f)] +[visit_exp store#47] +[visit_id store#47] +[visit_exp frame#47] +[visit_id frame#47] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp f.`MODULE`_frame{moduleinst#3}] +[visit_exp f] +[visit_id f] not free +[visit_exp moduleinst#3] +[visit_id moduleinst#3] +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $moduleinst{store#47 : store, frame#47 : frame, s : store, f : frame, moduleinst#3 : moduleinst}(`%;%`_state{store#47, frame#47}(s, f)) = f.`MODULE`_frame{moduleinst#3} +[check_dims] f frame#59 s store#59 taginst*#2 +[visit_exp `%;%`_state{store#59, frame#59}(s, f)] +[visit_exp store#59] +[visit_id store#59] +[visit_exp frame#59] +[visit_id frame#59] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp s.`TAGS`_store{`taginst*#2`}] +[visit_exp s] +[visit_id s] not free +[visit_exp `taginst*#2`] +[visit_id taginst*#2] +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $taginst{store#59 : store, frame#59 : frame, s : store, f : frame, `taginst*#2` : taginst*}(`%;%`_state{store#59, frame#59}(s, f)) = s.`TAGS`_store{`taginst*#2`} +[check_dims] f frame#71 globalinst*#2 s store#71 +[visit_exp `%;%`_state{store#71, frame#71}(s, f)] +[visit_exp store#71] +[visit_id store#71] +[visit_exp frame#71] +[visit_id frame#71] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp s.`GLOBALS`_store{`globalinst*#2`}] +[visit_exp s] +[visit_id s] not free +[visit_exp `globalinst*#2`] +[visit_id globalinst*#2] +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $globalinst{store#71 : store, frame#71 : frame, s : store, f : frame, `globalinst*#2` : globalinst*}(`%;%`_state{store#71, frame#71}(s, f)) = s.`GLOBALS`_store{`globalinst*#2`} +[check_dims] f frame#83 meminst*#2 s store#83 +[visit_exp `%;%`_state{store#83, frame#83}(s, f)] +[visit_exp store#83] +[visit_id store#83] +[visit_exp frame#83] +[visit_id frame#83] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp s.`MEMS`_store{`meminst*#2`}] +[visit_exp s] +[visit_id s] not free +[visit_exp `meminst*#2`] +[visit_id meminst*#2] +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $meminst{store#83 : store, frame#83 : frame, s : store, f : frame, `meminst*#2` : meminst*}(`%;%`_state{store#83, frame#83}(s, f)) = s.`MEMS`_store{`meminst*#2`} +[check_dims] f frame#95 s store#95 tableinst*#2 +[visit_exp `%;%`_state{store#95, frame#95}(s, f)] +[visit_exp store#95] +[visit_id store#95] +[visit_exp frame#95] +[visit_id frame#95] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp s.`TABLES`_store{`tableinst*#2`}] +[visit_exp s] +[visit_id s] not free +[visit_exp `tableinst*#2`] +[visit_id tableinst*#2] +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tableinst{store#95 : store, frame#95 : frame, s : store, f : frame, `tableinst*#2` : tableinst*}(`%;%`_state{store#95, frame#95}(s, f)) = s.`TABLES`_store{`tableinst*#2`} +[check_dims] f frame#107 funcinst*#2 s store#107 +[visit_exp `%;%`_state{store#107, frame#107}(s, f)] +[visit_exp store#107] +[visit_id store#107] +[visit_exp frame#107] +[visit_id frame#107] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp s.`FUNCS`_store{`funcinst*#2`}] +[visit_exp s] +[visit_id s] not free +[visit_exp `funcinst*#2`] +[visit_id funcinst*#2] +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $funcinst{store#107 : store, frame#107 : frame, s : store, f : frame, `funcinst*#2` : funcinst*}(`%;%`_state{store#107, frame#107}(s, f)) = s.`FUNCS`_store{`funcinst*#2`} +[check_dims] datainst*#2 f frame#119 s store#119 +[visit_exp `%;%`_state{store#119, frame#119}(s, f)] +[visit_exp store#119] +[visit_id store#119] +[visit_exp frame#119] +[visit_id frame#119] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp s.`DATAS`_store{`datainst*#2`}] +[visit_exp s] +[visit_id s] not free +[visit_exp `datainst*#2`] +[visit_id datainst*#2] +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $datainst{store#119 : store, frame#119 : frame, s : store, f : frame, `datainst*#2` : datainst*}(`%;%`_state{store#119, frame#119}(s, f)) = s.`DATAS`_store{`datainst*#2`} +[check_dims] eleminst*#2 f frame#131 s store#131 +[visit_exp `%;%`_state{store#131, frame#131}(s, f)] +[visit_exp store#131] +[visit_id store#131] +[visit_exp frame#131] +[visit_id frame#131] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp s.`ELEMS`_store{`eleminst*#2`}] +[visit_exp s] +[visit_id s] not free +[visit_exp `eleminst*#2`] +[visit_id eleminst*#2] +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $eleminst{store#131 : store, frame#131 : frame, s : store, f : frame, `eleminst*#2` : eleminst*}(`%;%`_state{store#131, frame#131}(s, f)) = s.`ELEMS`_store{`eleminst*#2`} +[check_dims] f frame#143 s store#143 structinst*#2 +[visit_exp `%;%`_state{store#143, frame#143}(s, f)] +[visit_exp store#143] +[visit_id store#143] +[visit_exp frame#143] +[visit_id frame#143] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp s.`STRUCTS`_store{`structinst*#2`}] +[visit_exp s] +[visit_id s] not free +[visit_exp `structinst*#2`] +[visit_id structinst*#2] +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $structinst{store#143 : store, frame#143 : frame, s : store, f : frame, `structinst*#2` : structinst*}(`%;%`_state{store#143, frame#143}(s, f)) = s.`STRUCTS`_store{`structinst*#2`} +[check_dims] arrayinst*#2 f frame#155 s store#155 +[visit_exp `%;%`_state{store#155, frame#155}(s, f)] +[visit_exp store#155] +[visit_id store#155] +[visit_exp frame#155] +[visit_id frame#155] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp s.`ARRAYS`_store{`arrayinst*#2`}] +[visit_exp s] +[visit_id s] not free +[visit_exp `arrayinst*#2`] +[visit_id arrayinst*#2] +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $arrayinst{store#155 : store, frame#155 : frame, s : store, f : frame, `arrayinst*#2` : arrayinst*}(`%;%`_state{store#155, frame#155}(s, f)) = s.`ARRAYS`_store{`arrayinst*#2`} +[check_dims] exninst*#2 f frame#167 s store#167 +[visit_exp `%;%`_state{store#167, frame#167}(s, f)] +[visit_exp store#167] +[visit_id store#167] +[visit_exp frame#167] +[visit_id frame#167] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp s.`EXNS`_store{`exninst*#2`}] +[visit_exp s] +[visit_id s] not free +[visit_exp `exninst*#2`] +[visit_id exninst*#2] +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $exninst{store#167 : store, frame#167 : frame, s : store, f : frame, `exninst*#2` : exninst*}(`%;%`_state{store#167, frame#167}(s, f)) = s.`EXNS`_store{`exninst*#2`} +[check_dims] state typeidx +DecD type(state : state, typeidx : typeidx) : deftype +[visit_id state] not free +[visit_id typeidx] not free +[check_dims] state tagidx +DecD tag(state : state, tagidx : tagidx) : taginst +[visit_id state] not free +[visit_id tagidx] not free +[check_dims] globalidx state +DecD global(state : state, globalidx : globalidx) : globalinst +[visit_id state] not free +[visit_id globalidx] not free +[check_dims] memidx state +DecD mem(state : state, memidx : memidx) : meminst +[visit_id state] not free +[visit_id memidx] not free +[check_dims] state tableidx +DecD table(state : state, tableidx : tableidx) : tableinst +[visit_id state] not free +[visit_id tableidx] not free +[check_dims] funcidx state +DecD func(state : state, funcidx : funcidx) : funcinst +[visit_id state] not free +[visit_id funcidx] not free +[check_dims] dataidx state +DecD data(state : state, dataidx : dataidx) : datainst +[visit_id state] not free +[visit_id dataidx] not free +[check_dims] state tableidx +DecD elem(state : state, tableidx : tableidx) : eleminst +[visit_id state] not free +[visit_id tableidx] not free +[check_dims] localidx state +DecD local(state : state, localidx : localidx) : val? +[visit_id state] not free +[visit_id localidx] not free +[check_dims] deftype*#74 f frame#179 i#30957 moduleinst#4 s store#179 x +[visit_exp `%;%`_state{store#179, frame#179}(s, f)] +[visit_exp store#179] +[visit_id store#179] +[visit_exp frame#179] +[visit_id frame#179] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp x] +[visit_id x] +[visit_exp f.`MODULE`_frame{moduleinst#4}.`TYPES`_moduleinst{`deftype*#74`}[x!`%`_idx{i#30957}.0]] +[visit_exp f.`MODULE`_frame{moduleinst#4}.`TYPES`_moduleinst{`deftype*#74`}] +[visit_exp f.`MODULE`_frame{moduleinst#4}] +[visit_exp f] +[visit_id f] not free +[visit_exp moduleinst#4] +[visit_id moduleinst#4] +[visit_exp `deftype*#74`] +[visit_id deftype*#74] +[visit_exp x!`%`_idx{i#30957}.0] +[visit_exp x!`%`_idx{i#30957}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#30957] +[visit_id i#30957] +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $type{store#179 : store, frame#179 : frame, s : store, f : frame, x : idx, moduleinst#4 : moduleinst, `deftype*#74` : deftype*, i#30957 : nat}(`%;%`_state{store#179, frame#179}(s, f), x) = f.`MODULE`_frame{moduleinst#4}.`TYPES`_moduleinst{`deftype*#74`}[x!`%`_idx{i#30957}.0] +[check_dims] f frame#191 i#30979 moduleinst#5 s store#191 tagaddr*#3 taginst*#3 x +[visit_exp `%;%`_state{store#191, frame#191}(s, f)] +[visit_exp store#191] +[visit_id store#191] +[visit_exp frame#191] +[visit_id frame#191] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp x] +[visit_id x] +[visit_exp s.`TAGS`_store{`taginst*#3`}[f.`MODULE`_frame{moduleinst#5}.`TAGS`_moduleinst{`tagaddr*#3`}[x!`%`_idx{i#30979}.0]]] +[visit_exp s.`TAGS`_store{`taginst*#3`}] +[visit_exp s] +[visit_id s] not free +[visit_exp `taginst*#3`] +[visit_id taginst*#3] +[visit_exp f.`MODULE`_frame{moduleinst#5}.`TAGS`_moduleinst{`tagaddr*#3`}[x!`%`_idx{i#30979}.0]] +[visit_exp f.`MODULE`_frame{moduleinst#5}.`TAGS`_moduleinst{`tagaddr*#3`}] +[visit_exp f.`MODULE`_frame{moduleinst#5}] +[visit_exp f] +[visit_id f] not free +[visit_exp moduleinst#5] +[visit_id moduleinst#5] +[visit_exp `tagaddr*#3`] +[visit_id tagaddr*#3] +[visit_exp x!`%`_idx{i#30979}.0] +[visit_exp x!`%`_idx{i#30979}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#30979] +[visit_id i#30979] +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $tag{store#191 : store, frame#191 : frame, s : store, f : frame, x : idx, `taginst*#3` : taginst*, moduleinst#5 : moduleinst, `tagaddr*#3` : tagaddr*, i#30979 : nat}(`%;%`_state{store#191, frame#191}(s, f), x) = s.`TAGS`_store{`taginst*#3`}[f.`MODULE`_frame{moduleinst#5}.`TAGS`_moduleinst{`tagaddr*#3`}[x!`%`_idx{i#30979}.0]] +[check_dims] f frame#203 globaladdr*#1 globalinst*#3 i#31001 moduleinst#6 s store#203 x +[visit_exp `%;%`_state{store#203, frame#203}(s, f)] +[visit_exp store#203] +[visit_id store#203] +[visit_exp frame#203] +[visit_id frame#203] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp x] +[visit_id x] +[visit_exp s.`GLOBALS`_store{`globalinst*#3`}[f.`MODULE`_frame{moduleinst#6}.`GLOBALS`_moduleinst{`globaladdr*#1`}[x!`%`_idx{i#31001}.0]]] +[visit_exp s.`GLOBALS`_store{`globalinst*#3`}] +[visit_exp s] +[visit_id s] not free +[visit_exp `globalinst*#3`] +[visit_id globalinst*#3] +[visit_exp f.`MODULE`_frame{moduleinst#6}.`GLOBALS`_moduleinst{`globaladdr*#1`}[x!`%`_idx{i#31001}.0]] +[visit_exp f.`MODULE`_frame{moduleinst#6}.`GLOBALS`_moduleinst{`globaladdr*#1`}] +[visit_exp f.`MODULE`_frame{moduleinst#6}] +[visit_exp f] +[visit_id f] not free +[visit_exp moduleinst#6] +[visit_id moduleinst#6] +[visit_exp `globaladdr*#1`] +[visit_id globaladdr*#1] +[visit_exp x!`%`_idx{i#31001}.0] +[visit_exp x!`%`_idx{i#31001}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#31001] +[visit_id i#31001] +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $global{store#203 : store, frame#203 : frame, s : store, f : frame, x : idx, `globalinst*#3` : globalinst*, moduleinst#6 : moduleinst, `globaladdr*#1` : globaladdr*, i#31001 : nat}(`%;%`_state{store#203, frame#203}(s, f), x) = s.`GLOBALS`_store{`globalinst*#3`}[f.`MODULE`_frame{moduleinst#6}.`GLOBALS`_moduleinst{`globaladdr*#1`}[x!`%`_idx{i#31001}.0]] +[check_dims] f frame#215 i#31023 memaddr*#1 meminst*#3 moduleinst#7 s store#215 x +[visit_exp `%;%`_state{store#215, frame#215}(s, f)] +[visit_exp store#215] +[visit_id store#215] +[visit_exp frame#215] +[visit_id frame#215] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp x] +[visit_id x] +[visit_exp s.`MEMS`_store{`meminst*#3`}[f.`MODULE`_frame{moduleinst#7}.`MEMS`_moduleinst{`memaddr*#1`}[x!`%`_idx{i#31023}.0]]] +[visit_exp s.`MEMS`_store{`meminst*#3`}] +[visit_exp s] +[visit_id s] not free +[visit_exp `meminst*#3`] +[visit_id meminst*#3] +[visit_exp f.`MODULE`_frame{moduleinst#7}.`MEMS`_moduleinst{`memaddr*#1`}[x!`%`_idx{i#31023}.0]] +[visit_exp f.`MODULE`_frame{moduleinst#7}.`MEMS`_moduleinst{`memaddr*#1`}] +[visit_exp f.`MODULE`_frame{moduleinst#7}] +[visit_exp f] +[visit_id f] not free +[visit_exp moduleinst#7] +[visit_id moduleinst#7] +[visit_exp `memaddr*#1`] +[visit_id memaddr*#1] +[visit_exp x!`%`_idx{i#31023}.0] +[visit_exp x!`%`_idx{i#31023}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#31023] +[visit_id i#31023] +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $mem{store#215 : store, frame#215 : frame, s : store, f : frame, x : idx, `meminst*#3` : meminst*, moduleinst#7 : moduleinst, `memaddr*#1` : memaddr*, i#31023 : nat}(`%;%`_state{store#215, frame#215}(s, f), x) = s.`MEMS`_store{`meminst*#3`}[f.`MODULE`_frame{moduleinst#7}.`MEMS`_moduleinst{`memaddr*#1`}[x!`%`_idx{i#31023}.0]] +[check_dims] f frame#227 i#31045 moduleinst#8 s store#227 tableaddr*#1 tableinst*#3 x +[visit_exp `%;%`_state{store#227, frame#227}(s, f)] +[visit_exp store#227] +[visit_id store#227] +[visit_exp frame#227] +[visit_id frame#227] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp x] +[visit_id x] +[visit_exp s.`TABLES`_store{`tableinst*#3`}[f.`MODULE`_frame{moduleinst#8}.`TABLES`_moduleinst{`tableaddr*#1`}[x!`%`_idx{i#31045}.0]]] +[visit_exp s.`TABLES`_store{`tableinst*#3`}] +[visit_exp s] +[visit_id s] not free +[visit_exp `tableinst*#3`] +[visit_id tableinst*#3] +[visit_exp f.`MODULE`_frame{moduleinst#8}.`TABLES`_moduleinst{`tableaddr*#1`}[x!`%`_idx{i#31045}.0]] +[visit_exp f.`MODULE`_frame{moduleinst#8}.`TABLES`_moduleinst{`tableaddr*#1`}] +[visit_exp f.`MODULE`_frame{moduleinst#8}] +[visit_exp f] +[visit_id f] not free +[visit_exp moduleinst#8] +[visit_id moduleinst#8] +[visit_exp `tableaddr*#1`] +[visit_id tableaddr*#1] +[visit_exp x!`%`_idx{i#31045}.0] +[visit_exp x!`%`_idx{i#31045}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#31045] +[visit_id i#31045] +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $table{store#227 : store, frame#227 : frame, s : store, f : frame, x : idx, `tableinst*#3` : tableinst*, moduleinst#8 : moduleinst, `tableaddr*#1` : tableaddr*, i#31045 : nat}(`%;%`_state{store#227, frame#227}(s, f), x) = s.`TABLES`_store{`tableinst*#3`}[f.`MODULE`_frame{moduleinst#8}.`TABLES`_moduleinst{`tableaddr*#1`}[x!`%`_idx{i#31045}.0]] +[check_dims] f frame#239 funcaddr*#1 funcinst*#3 i#31067 moduleinst#9 s store#239 x +[visit_exp `%;%`_state{store#239, frame#239}(s, f)] +[visit_exp store#239] +[visit_id store#239] +[visit_exp frame#239] +[visit_id frame#239] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp x] +[visit_id x] +[visit_exp s.`FUNCS`_store{`funcinst*#3`}[f.`MODULE`_frame{moduleinst#9}.`FUNCS`_moduleinst{`funcaddr*#1`}[x!`%`_idx{i#31067}.0]]] +[visit_exp s.`FUNCS`_store{`funcinst*#3`}] +[visit_exp s] +[visit_id s] not free +[visit_exp `funcinst*#3`] +[visit_id funcinst*#3] +[visit_exp f.`MODULE`_frame{moduleinst#9}.`FUNCS`_moduleinst{`funcaddr*#1`}[x!`%`_idx{i#31067}.0]] +[visit_exp f.`MODULE`_frame{moduleinst#9}.`FUNCS`_moduleinst{`funcaddr*#1`}] +[visit_exp f.`MODULE`_frame{moduleinst#9}] +[visit_exp f] +[visit_id f] not free +[visit_exp moduleinst#9] +[visit_id moduleinst#9] +[visit_exp `funcaddr*#1`] +[visit_id funcaddr*#1] +[visit_exp x!`%`_idx{i#31067}.0] +[visit_exp x!`%`_idx{i#31067}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#31067] +[visit_id i#31067] +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $func{store#239 : store, frame#239 : frame, s : store, f : frame, x : idx, `funcinst*#3` : funcinst*, moduleinst#9 : moduleinst, `funcaddr*#1` : funcaddr*, i#31067 : nat}(`%;%`_state{store#239, frame#239}(s, f), x) = s.`FUNCS`_store{`funcinst*#3`}[f.`MODULE`_frame{moduleinst#9}.`FUNCS`_moduleinst{`funcaddr*#1`}[x!`%`_idx{i#31067}.0]] +[check_dims] dataaddr*#1 datainst*#3 f frame#251 i#31089 moduleinst#10 s store#251 x +[visit_exp `%;%`_state{store#251, frame#251}(s, f)] +[visit_exp store#251] +[visit_id store#251] +[visit_exp frame#251] +[visit_id frame#251] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp x] +[visit_id x] +[visit_exp s.`DATAS`_store{`datainst*#3`}[f.`MODULE`_frame{moduleinst#10}.`DATAS`_moduleinst{`dataaddr*#1`}[x!`%`_idx{i#31089}.0]]] +[visit_exp s.`DATAS`_store{`datainst*#3`}] +[visit_exp s] +[visit_id s] not free +[visit_exp `datainst*#3`] +[visit_id datainst*#3] +[visit_exp f.`MODULE`_frame{moduleinst#10}.`DATAS`_moduleinst{`dataaddr*#1`}[x!`%`_idx{i#31089}.0]] +[visit_exp f.`MODULE`_frame{moduleinst#10}.`DATAS`_moduleinst{`dataaddr*#1`}] +[visit_exp f.`MODULE`_frame{moduleinst#10}] +[visit_exp f] +[visit_id f] not free +[visit_exp moduleinst#10] +[visit_id moduleinst#10] +[visit_exp `dataaddr*#1`] +[visit_id dataaddr*#1] +[visit_exp x!`%`_idx{i#31089}.0] +[visit_exp x!`%`_idx{i#31089}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#31089] +[visit_id i#31089] +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $data{store#251 : store, frame#251 : frame, s : store, f : frame, x : idx, `datainst*#3` : datainst*, moduleinst#10 : moduleinst, `dataaddr*#1` : dataaddr*, i#31089 : nat}(`%;%`_state{store#251, frame#251}(s, f), x) = s.`DATAS`_store{`datainst*#3`}[f.`MODULE`_frame{moduleinst#10}.`DATAS`_moduleinst{`dataaddr*#1`}[x!`%`_idx{i#31089}.0]] +[check_dims] elemaddr*#1 eleminst*#3 f frame#263 i#31111 moduleinst#11 s store#263 x +[visit_exp `%;%`_state{store#263, frame#263}(s, f)] +[visit_exp store#263] +[visit_id store#263] +[visit_exp frame#263] +[visit_id frame#263] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp x] +[visit_id x] +[visit_exp s.`ELEMS`_store{`eleminst*#3`}[f.`MODULE`_frame{moduleinst#11}.`ELEMS`_moduleinst{`elemaddr*#1`}[x!`%`_idx{i#31111}.0]]] +[visit_exp s.`ELEMS`_store{`eleminst*#3`}] +[visit_exp s] +[visit_id s] not free +[visit_exp `eleminst*#3`] +[visit_id eleminst*#3] +[visit_exp f.`MODULE`_frame{moduleinst#11}.`ELEMS`_moduleinst{`elemaddr*#1`}[x!`%`_idx{i#31111}.0]] +[visit_exp f.`MODULE`_frame{moduleinst#11}.`ELEMS`_moduleinst{`elemaddr*#1`}] +[visit_exp f.`MODULE`_frame{moduleinst#11}] +[visit_exp f] +[visit_id f] not free +[visit_exp moduleinst#11] +[visit_id moduleinst#11] +[visit_exp `elemaddr*#1`] +[visit_id elemaddr*#1] +[visit_exp x!`%`_idx{i#31111}.0] +[visit_exp x!`%`_idx{i#31111}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#31111] +[visit_id i#31111] +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $elem{store#263 : store, frame#263 : frame, s : store, f : frame, x : idx, `eleminst*#3` : eleminst*, moduleinst#11 : moduleinst, `elemaddr*#1` : elemaddr*, i#31111 : nat}(`%;%`_state{store#263, frame#263}(s, f), x) = s.`ELEMS`_store{`eleminst*#3`}[f.`MODULE`_frame{moduleinst#11}.`ELEMS`_moduleinst{`elemaddr*#1`}[x!`%`_idx{i#31111}.0]] +[check_dims] f frame#275 i#31143 s store#275 val?*#2 x +[visit_exp `%;%`_state{store#275, frame#275}(s, f)] +[visit_exp store#275] +[visit_id store#275] +[visit_exp frame#275] +[visit_id frame#275] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp x] +[visit_id x] +[visit_exp f.`LOCALS`_frame{`val?*#2`}[x!`%`_idx{i#31143}.0]] +[visit_exp f.`LOCALS`_frame{`val?*#2`}] +[visit_exp f] +[visit_id f] not free +[visit_exp `val?*#2`] +[visit_id val?*#2] +[visit_exp x!`%`_idx{i#31143}.0] +[visit_exp x!`%`_idx{i#31143}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#31143] +[visit_id i#31143] +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $local{store#275 : store, frame#275 : frame, s : store, f : frame, x : idx, `val?*#2` : val?*, i#31143 : nat}(`%;%`_state{store#275, frame#275}(s, f), x) = f.`LOCALS`_frame{`val?*#2`}[x!`%`_idx{i#31143}.0] +[check_dims] localidx state val +DecD with_local(state : state, localidx : localidx, val : val) : state +[visit_id state] not free +[visit_id localidx] not free +[visit_id val] not free +[check_dims] globalidx state val +DecD with_global(state : state, globalidx : globalidx, val : val) : state +[visit_id state] not free +[visit_id globalidx] not free +[visit_id val] not free +[check_dims] nat ref state tableidx +DecD with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state +[visit_id state] not free +[visit_id tableidx] not free +[visit_id nat] not free +[visit_id ref] not free +[check_dims] state tableidx tableinst +DecD with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state +[visit_id state] not free +[visit_id tableidx] not free +[visit_id tableinst] not free +[check_dims] _ memidx nat state +DecD with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state +[visit_id state] not free +[visit_id memidx] not free +[visit_id nat] not free +[visit_id nat] not free +[visit_id _] not free +[check_dims] memidx meminst state +DecD with_meminst(state : state, memidx : memidx, meminst : meminst) : state +[visit_id state] not free +[visit_id memidx] not free +[visit_id meminst] not free +[check_dims] _ elemidx state +DecD with_elem(state : state, elemidx : elemidx, ref*) : state +[visit_id state] not free +[visit_id elemidx] not free +[visit_id _] not free +[check_dims] _ dataidx state +DecD with_data(state : state, dataidx : dataidx, byte*) : state +[visit_id state] not free +[visit_id dataidx] not free +[visit_id _] not free +[check_dims] fieldval nat state structaddr +DecD with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state +[visit_id state] not free +[visit_id structaddr] not free +[visit_id nat] not free +[visit_id fieldval] not free +[check_dims] arrayaddr fieldval nat state +DecD with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state +[visit_id state] not free +[visit_id arrayaddr] not free +[visit_id nat] not free +[visit_id fieldval] not free +[check_dims] f frame#287 frame#299 i#31165 s store#287 store#299 v val?*#3 x +[visit_exp `%;%`_state{store#287, frame#287}(s, f)] +[visit_exp store#287] +[visit_id store#287] +[visit_exp frame#287] +[visit_id frame#287] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp x] +[visit_id x] +[visit_exp v] +[visit_id v] +[visit_exp `%;%`_state{store#299, frame#299}(s, f[`LOCALS`_frame{`val?*#3`}[x!`%`_idx{i#31165}.0] = ?(v)])] +[visit_exp store#299] +[visit_id store#299] +[visit_exp frame#299] +[visit_id frame#299] +[visit_exp (s, f[`LOCALS`_frame{`val?*#3`}[x!`%`_idx{i#31165}.0] = ?(v)])] +[visit_exp s] +[visit_id s] not free +[visit_exp f[`LOCALS`_frame{`val?*#3`}[x!`%`_idx{i#31165}.0] = ?(v)]] +[visit_exp f] +[visit_id f] not free +[visit_exp `val?*#3`] +[visit_id val?*#3] +[visit_exp x!`%`_idx{i#31165}.0] +[visit_exp x!`%`_idx{i#31165}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#31165] +[visit_id i#31165] +[visit_exp ?(v)] +[visit_exp v] +[visit_id v] not free +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_local{store#287 : store, frame#287 : frame, s : store, f : frame, x : idx, v : val, store#299 : store, frame#299 : frame, `val?*#3` : val?*, i#31165 : nat}(`%;%`_state{store#287, frame#287}(s, f), x, v) = `%;%`_state{store#299, frame#299}(s, f[`LOCALS`_frame{`val?*#3`}[x!`%`_idx{i#31165}.0] = ?(v)]) +[check_dims] f frame#311 frame#323 globaladdr*#2 globalinst*#4 i#31187 moduleinst#12 s store#311 store#323 v val#1 x +[visit_exp `%;%`_state{store#311, frame#311}(s, f)] +[visit_exp store#311] +[visit_id store#311] +[visit_exp frame#311] +[visit_id frame#311] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp x] +[visit_id x] +[visit_exp v] +[visit_id v] +[visit_exp `%;%`_state{store#323, frame#323}(s[`GLOBALS`_store{`globalinst*#4`}[f.`MODULE`_frame{moduleinst#12}.`GLOBALS`_moduleinst{`globaladdr*#2`}[x!`%`_idx{i#31187}.0]].`VALUE`_globalinst{val#1} = v], f)] +[visit_exp store#323] +[visit_id store#323] +[visit_exp frame#323] +[visit_id frame#323] +[visit_exp (s[`GLOBALS`_store{`globalinst*#4`}[f.`MODULE`_frame{moduleinst#12}.`GLOBALS`_moduleinst{`globaladdr*#2`}[x!`%`_idx{i#31187}.0]].`VALUE`_globalinst{val#1} = v], f)] +[visit_exp s[`GLOBALS`_store{`globalinst*#4`}[f.`MODULE`_frame{moduleinst#12}.`GLOBALS`_moduleinst{`globaladdr*#2`}[x!`%`_idx{i#31187}.0]].`VALUE`_globalinst{val#1} = v]] +[visit_exp s] +[visit_id s] not free +[visit_exp `globalinst*#4`] +[visit_id globalinst*#4] +[visit_exp f.`MODULE`_frame{moduleinst#12}.`GLOBALS`_moduleinst{`globaladdr*#2`}[x!`%`_idx{i#31187}.0]] +[visit_exp f.`MODULE`_frame{moduleinst#12}.`GLOBALS`_moduleinst{`globaladdr*#2`}] +[visit_exp f.`MODULE`_frame{moduleinst#12}] +[visit_exp f] +[visit_id f] not free +[visit_exp moduleinst#12] +[visit_id moduleinst#12] +[visit_exp `globaladdr*#2`] +[visit_id globaladdr*#2] +[visit_exp x!`%`_idx{i#31187}.0] +[visit_exp x!`%`_idx{i#31187}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#31187] +[visit_id i#31187] +[visit_exp val#1] +[visit_id val#1] +[visit_exp v] +[visit_id v] not free +[visit_exp f] +[visit_id f] not free +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_global{store#311 : store, frame#311 : frame, s : store, f : frame, x : idx, v : val, store#323 : store, frame#323 : frame, `globalinst*#4` : globalinst*, moduleinst#12 : moduleinst, `globaladdr*#2` : globaladdr*, i#31187 : nat, val#1 : val}(`%;%`_state{store#311, frame#311}(s, f), x, v) = `%;%`_state{store#323, frame#323}(s[`GLOBALS`_store{`globalinst*#4`}[f.`MODULE`_frame{moduleinst#12}.`GLOBALS`_moduleinst{`globaladdr*#2`}[x!`%`_idx{i#31187}.0]].`VALUE`_globalinst{val#1} = v], f) +[check_dims] f frame#335 frame#347 i i#31209 moduleinst#13 r ref*#1 s store#335 store#347 tableaddr*#2 tableinst*#4 x +[visit_exp `%;%`_state{store#335, frame#335}(s, f)] +[visit_exp store#335] +[visit_id store#335] +[visit_exp frame#335] +[visit_id frame#335] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp x] +[visit_id x] +[visit_exp i] +[visit_id i] +[visit_exp r] +[visit_id r] +[visit_exp `%;%`_state{store#347, frame#347}(s[`TABLES`_store{`tableinst*#4`}[f.`MODULE`_frame{moduleinst#13}.`TABLES`_moduleinst{`tableaddr*#2`}[x!`%`_idx{i#31209}.0]].`REFS`_tableinst{`ref*#1`}[i] = r], f)] +[visit_exp store#347] +[visit_id store#347] +[visit_exp frame#347] +[visit_id frame#347] +[visit_exp (s[`TABLES`_store{`tableinst*#4`}[f.`MODULE`_frame{moduleinst#13}.`TABLES`_moduleinst{`tableaddr*#2`}[x!`%`_idx{i#31209}.0]].`REFS`_tableinst{`ref*#1`}[i] = r], f)] +[visit_exp s[`TABLES`_store{`tableinst*#4`}[f.`MODULE`_frame{moduleinst#13}.`TABLES`_moduleinst{`tableaddr*#2`}[x!`%`_idx{i#31209}.0]].`REFS`_tableinst{`ref*#1`}[i] = r]] +[visit_exp s] +[visit_id s] not free +[visit_exp `tableinst*#4`] +[visit_id tableinst*#4] +[visit_exp f.`MODULE`_frame{moduleinst#13}.`TABLES`_moduleinst{`tableaddr*#2`}[x!`%`_idx{i#31209}.0]] +[visit_exp f.`MODULE`_frame{moduleinst#13}.`TABLES`_moduleinst{`tableaddr*#2`}] +[visit_exp f.`MODULE`_frame{moduleinst#13}] +[visit_exp f] +[visit_id f] not free +[visit_exp moduleinst#13] +[visit_id moduleinst#13] +[visit_exp `tableaddr*#2`] +[visit_id tableaddr*#2] +[visit_exp x!`%`_idx{i#31209}.0] +[visit_exp x!`%`_idx{i#31209}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#31209] +[visit_id i#31209] +[visit_exp `ref*#1`] +[visit_id ref*#1] +[visit_exp i] +[visit_id i] not free +[visit_exp r] +[visit_id r] not free +[visit_exp f] +[visit_id f] not free +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_table{store#335 : store, frame#335 : frame, s : store, f : frame, x : idx, i : nat, r : ref, store#347 : store, frame#347 : frame, `tableinst*#4` : tableinst*, moduleinst#13 : moduleinst, `tableaddr*#2` : tableaddr*, i#31209 : nat, `ref*#1` : ref*}(`%;%`_state{store#335, frame#335}(s, f), x, i, r) = `%;%`_state{store#347, frame#347}(s[`TABLES`_store{`tableinst*#4`}[f.`MODULE`_frame{moduleinst#13}.`TABLES`_moduleinst{`tableaddr*#2`}[x!`%`_idx{i#31209}.0]].`REFS`_tableinst{`ref*#1`}[i] = r], f) +[check_dims] f frame#359 frame#371 i#31231 moduleinst#14 s store#359 store#371 tableaddr*#3 tableinst*#5 ti x +[visit_exp `%;%`_state{store#359, frame#359}(s, f)] +[visit_exp store#359] +[visit_id store#359] +[visit_exp frame#359] +[visit_id frame#359] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp x] +[visit_id x] +[visit_exp ti] +[visit_id ti] +[visit_exp `%;%`_state{store#371, frame#371}(s[`TABLES`_store{`tableinst*#5`}[f.`MODULE`_frame{moduleinst#14}.`TABLES`_moduleinst{`tableaddr*#3`}[x!`%`_idx{i#31231}.0]] = ti], f)] +[visit_exp store#371] +[visit_id store#371] +[visit_exp frame#371] +[visit_id frame#371] +[visit_exp (s[`TABLES`_store{`tableinst*#5`}[f.`MODULE`_frame{moduleinst#14}.`TABLES`_moduleinst{`tableaddr*#3`}[x!`%`_idx{i#31231}.0]] = ti], f)] +[visit_exp s[`TABLES`_store{`tableinst*#5`}[f.`MODULE`_frame{moduleinst#14}.`TABLES`_moduleinst{`tableaddr*#3`}[x!`%`_idx{i#31231}.0]] = ti]] +[visit_exp s] +[visit_id s] not free +[visit_exp `tableinst*#5`] +[visit_id tableinst*#5] +[visit_exp f.`MODULE`_frame{moduleinst#14}.`TABLES`_moduleinst{`tableaddr*#3`}[x!`%`_idx{i#31231}.0]] +[visit_exp f.`MODULE`_frame{moduleinst#14}.`TABLES`_moduleinst{`tableaddr*#3`}] +[visit_exp f.`MODULE`_frame{moduleinst#14}] +[visit_exp f] +[visit_id f] not free +[visit_exp moduleinst#14] +[visit_id moduleinst#14] +[visit_exp `tableaddr*#3`] +[visit_id tableaddr*#3] +[visit_exp x!`%`_idx{i#31231}.0] +[visit_exp x!`%`_idx{i#31231}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#31231] +[visit_id i#31231] +[visit_exp ti] +[visit_id ti] not free +[visit_exp f] +[visit_id f] not free +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_tableinst{store#359 : store, frame#359 : frame, s : store, f : frame, x : idx, ti : tableinst, store#371 : store, frame#371 : frame, `tableinst*#5` : tableinst*, moduleinst#14 : moduleinst, `tableaddr*#3` : tableaddr*, i#31231 : nat}(`%;%`_state{store#359, frame#359}(s, f), x, ti) = `%;%`_state{store#371, frame#371}(s[`TABLES`_store{`tableinst*#5`}[f.`MODULE`_frame{moduleinst#14}.`TABLES`_moduleinst{`tableaddr*#3`}[x!`%`_idx{i#31231}.0]] = ti], f) +[check_dims] b byte*#1845 f frame#383 frame#395 i i#31265 j memaddr*#2 meminst*#4 moduleinst#15 s store#383 store#395 x +[visit_exp `%;%`_state{store#383, frame#383}(s, f)] +[visit_exp store#383] +[visit_id store#383] +[visit_exp frame#383] +[visit_id frame#383] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp x] +[visit_id x] +[visit_exp i] +[visit_id i] +[visit_exp j] +[visit_id j] +[visit_exp b*{b <- `b*`}] +[scope_enter b] +[visit_exp b] +[visit_id b] not free +[visit_id b] not free +[scope_exit b] +[visit_exp `b*`] +[visit_id b*] no dims +[visit_id b*] +[visit_exp `%;%`_state{store#395, frame#395}(s[`MEMS`_store{`meminst*#4`}[f.`MODULE`_frame{moduleinst#15}.`MEMS`_moduleinst{`memaddr*#2`}[x!`%`_idx{i#31265}.0]].`BYTES`_meminst{`byte*#1845`}[i : j] = b*{b <- `b*`}], f)] +[visit_exp store#395] +[visit_id store#395] +[visit_exp frame#395] +[visit_id frame#395] +[visit_exp (s[`MEMS`_store{`meminst*#4`}[f.`MODULE`_frame{moduleinst#15}.`MEMS`_moduleinst{`memaddr*#2`}[x!`%`_idx{i#31265}.0]].`BYTES`_meminst{`byte*#1845`}[i : j] = b*{b <- `b*`}], f)] +[visit_exp s[`MEMS`_store{`meminst*#4`}[f.`MODULE`_frame{moduleinst#15}.`MEMS`_moduleinst{`memaddr*#2`}[x!`%`_idx{i#31265}.0]].`BYTES`_meminst{`byte*#1845`}[i : j] = b*{b <- `b*`}]] +[visit_exp s] +[visit_id s] not free +[visit_exp `meminst*#4`] +[visit_id meminst*#4] +[visit_exp f.`MODULE`_frame{moduleinst#15}.`MEMS`_moduleinst{`memaddr*#2`}[x!`%`_idx{i#31265}.0]] +[visit_exp f.`MODULE`_frame{moduleinst#15}.`MEMS`_moduleinst{`memaddr*#2`}] +[visit_exp f.`MODULE`_frame{moduleinst#15}] +[visit_exp f] +[visit_id f] not free +[visit_exp moduleinst#15] +[visit_id moduleinst#15] +[visit_exp `memaddr*#2`] +[visit_id memaddr*#2] +[visit_exp x!`%`_idx{i#31265}.0] +[visit_exp x!`%`_idx{i#31265}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#31265] +[visit_id i#31265] +[visit_exp `byte*#1845`] +[visit_id byte*#1845] +[visit_exp i] +[visit_id i] not free +[visit_exp j] +[visit_id j] not free +[visit_exp b*{b <- `b*`}] +[scope_enter b] +[visit_exp b] +[visit_id b] not free +[visit_id b] not free +[scope_exit b] +[visit_exp `b*`] +[visit_id b*] not free +[visit_id b*] no dims +[visit_exp f] +[visit_id f] not free +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_mem{store#383 : store, frame#383 : frame, s : store, f : frame, x : idx, i : nat, j : nat, `b*` : byte*, store#395 : store, frame#395 : frame, `meminst*#4` : meminst*, moduleinst#15 : moduleinst, `memaddr*#2` : memaddr*, i#31265 : nat, `byte*#1845` : byte*}(`%;%`_state{store#383, frame#383}(s, f), x, i, j, b*{b <- `b*`}) = `%;%`_state{store#395, frame#395}(s[`MEMS`_store{`meminst*#4`}[f.`MODULE`_frame{moduleinst#15}.`MEMS`_moduleinst{`memaddr*#2`}[x!`%`_idx{i#31265}.0]].`BYTES`_meminst{`byte*#1845`}[i : j] = b*{b <- `b*`}], f) +[check_dims] f frame#407 frame#419 i#31299 memaddr*#3 meminst*#5 mi moduleinst#16 s store#407 store#419 x +[visit_exp `%;%`_state{store#407, frame#407}(s, f)] +[visit_exp store#407] +[visit_id store#407] +[visit_exp frame#407] +[visit_id frame#407] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp x] +[visit_id x] +[visit_exp mi] +[visit_id mi] +[visit_exp `%;%`_state{store#419, frame#419}(s[`MEMS`_store{`meminst*#5`}[f.`MODULE`_frame{moduleinst#16}.`MEMS`_moduleinst{`memaddr*#3`}[x!`%`_idx{i#31299}.0]] = mi], f)] +[visit_exp store#419] +[visit_id store#419] +[visit_exp frame#419] +[visit_id frame#419] +[visit_exp (s[`MEMS`_store{`meminst*#5`}[f.`MODULE`_frame{moduleinst#16}.`MEMS`_moduleinst{`memaddr*#3`}[x!`%`_idx{i#31299}.0]] = mi], f)] +[visit_exp s[`MEMS`_store{`meminst*#5`}[f.`MODULE`_frame{moduleinst#16}.`MEMS`_moduleinst{`memaddr*#3`}[x!`%`_idx{i#31299}.0]] = mi]] +[visit_exp s] +[visit_id s] not free +[visit_exp `meminst*#5`] +[visit_id meminst*#5] +[visit_exp f.`MODULE`_frame{moduleinst#16}.`MEMS`_moduleinst{`memaddr*#3`}[x!`%`_idx{i#31299}.0]] +[visit_exp f.`MODULE`_frame{moduleinst#16}.`MEMS`_moduleinst{`memaddr*#3`}] +[visit_exp f.`MODULE`_frame{moduleinst#16}] +[visit_exp f] +[visit_id f] not free +[visit_exp moduleinst#16] +[visit_id moduleinst#16] +[visit_exp `memaddr*#3`] +[visit_id memaddr*#3] +[visit_exp x!`%`_idx{i#31299}.0] +[visit_exp x!`%`_idx{i#31299}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#31299] +[visit_id i#31299] +[visit_exp mi] +[visit_id mi] not free +[visit_exp f] +[visit_id f] not free +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_meminst{store#407 : store, frame#407 : frame, s : store, f : frame, x : idx, mi : meminst, store#419 : store, frame#419 : frame, `meminst*#5` : meminst*, moduleinst#16 : moduleinst, `memaddr*#3` : memaddr*, i#31299 : nat}(`%;%`_state{store#407, frame#407}(s, f), x, mi) = `%;%`_state{store#419, frame#419}(s[`MEMS`_store{`meminst*#5`}[f.`MODULE`_frame{moduleinst#16}.`MEMS`_moduleinst{`memaddr*#3`}[x!`%`_idx{i#31299}.0]] = mi], f) +[check_dims] elemaddr*#2 eleminst*#4 f frame#431 frame#443 i#31321 moduleinst#17 r ref*#2 s store#431 store#443 x +[visit_exp `%;%`_state{store#431, frame#431}(s, f)] +[visit_exp store#431] +[visit_id store#431] +[visit_exp frame#431] +[visit_id frame#431] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp x] +[visit_id x] +[visit_exp r*{r <- `r*`}] +[scope_enter r] +[visit_exp r] +[visit_id r] not free +[visit_id r] not free +[scope_exit r] +[visit_exp `r*`] +[visit_id r*] no dims +[visit_id r*] +[visit_exp `%;%`_state{store#443, frame#443}(s[`ELEMS`_store{`eleminst*#4`}[f.`MODULE`_frame{moduleinst#17}.`ELEMS`_moduleinst{`elemaddr*#2`}[x!`%`_idx{i#31321}.0]].`REFS`_eleminst{`ref*#2`} = r*{r <- `r*`}], f)] +[visit_exp store#443] +[visit_id store#443] +[visit_exp frame#443] +[visit_id frame#443] +[visit_exp (s[`ELEMS`_store{`eleminst*#4`}[f.`MODULE`_frame{moduleinst#17}.`ELEMS`_moduleinst{`elemaddr*#2`}[x!`%`_idx{i#31321}.0]].`REFS`_eleminst{`ref*#2`} = r*{r <- `r*`}], f)] +[visit_exp s[`ELEMS`_store{`eleminst*#4`}[f.`MODULE`_frame{moduleinst#17}.`ELEMS`_moduleinst{`elemaddr*#2`}[x!`%`_idx{i#31321}.0]].`REFS`_eleminst{`ref*#2`} = r*{r <- `r*`}]] +[visit_exp s] +[visit_id s] not free +[visit_exp `eleminst*#4`] +[visit_id eleminst*#4] +[visit_exp f.`MODULE`_frame{moduleinst#17}.`ELEMS`_moduleinst{`elemaddr*#2`}[x!`%`_idx{i#31321}.0]] +[visit_exp f.`MODULE`_frame{moduleinst#17}.`ELEMS`_moduleinst{`elemaddr*#2`}] +[visit_exp f.`MODULE`_frame{moduleinst#17}] +[visit_exp f] +[visit_id f] not free +[visit_exp moduleinst#17] +[visit_id moduleinst#17] +[visit_exp `elemaddr*#2`] +[visit_id elemaddr*#2] +[visit_exp x!`%`_idx{i#31321}.0] +[visit_exp x!`%`_idx{i#31321}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#31321] +[visit_id i#31321] +[visit_exp `ref*#2`] +[visit_id ref*#2] +[visit_exp r*{r <- `r*`}] +[scope_enter r] +[visit_exp r] +[visit_id r] not free +[visit_id r] not free +[scope_exit r] +[visit_exp `r*`] +[visit_id r*] not free +[visit_id r*] no dims +[visit_exp f] +[visit_id f] not free +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_elem{store#431 : store, frame#431 : frame, s : store, f : frame, x : idx, `r*` : ref*, store#443 : store, frame#443 : frame, `eleminst*#4` : eleminst*, moduleinst#17 : moduleinst, `elemaddr*#2` : elemaddr*, i#31321 : nat, `ref*#2` : ref*}(`%;%`_state{store#431, frame#431}(s, f), x, r*{r <- `r*`}) = `%;%`_state{store#443, frame#443}(s[`ELEMS`_store{`eleminst*#4`}[f.`MODULE`_frame{moduleinst#17}.`ELEMS`_moduleinst{`elemaddr*#2`}[x!`%`_idx{i#31321}.0]].`REFS`_eleminst{`ref*#2`} = r*{r <- `r*`}], f) +[check_dims] b byte*#1846 dataaddr*#2 datainst*#4 f frame#455 frame#467 i#31355 moduleinst#18 s store#455 store#467 x +[visit_exp `%;%`_state{store#455, frame#455}(s, f)] +[visit_exp store#455] +[visit_id store#455] +[visit_exp frame#455] +[visit_id frame#455] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp x] +[visit_id x] +[visit_exp b*{b <- `b*`}] +[scope_enter b] +[visit_exp b] +[visit_id b] not free +[visit_id b] not free +[scope_exit b] +[visit_exp `b*`] +[visit_id b*] no dims +[visit_id b*] +[visit_exp `%;%`_state{store#467, frame#467}(s[`DATAS`_store{`datainst*#4`}[f.`MODULE`_frame{moduleinst#18}.`DATAS`_moduleinst{`dataaddr*#2`}[x!`%`_idx{i#31355}.0]].`BYTES`_datainst{`byte*#1846`} = b*{b <- `b*`}], f)] +[visit_exp store#467] +[visit_id store#467] +[visit_exp frame#467] +[visit_id frame#467] +[visit_exp (s[`DATAS`_store{`datainst*#4`}[f.`MODULE`_frame{moduleinst#18}.`DATAS`_moduleinst{`dataaddr*#2`}[x!`%`_idx{i#31355}.0]].`BYTES`_datainst{`byte*#1846`} = b*{b <- `b*`}], f)] +[visit_exp s[`DATAS`_store{`datainst*#4`}[f.`MODULE`_frame{moduleinst#18}.`DATAS`_moduleinst{`dataaddr*#2`}[x!`%`_idx{i#31355}.0]].`BYTES`_datainst{`byte*#1846`} = b*{b <- `b*`}]] +[visit_exp s] +[visit_id s] not free +[visit_exp `datainst*#4`] +[visit_id datainst*#4] +[visit_exp f.`MODULE`_frame{moduleinst#18}.`DATAS`_moduleinst{`dataaddr*#2`}[x!`%`_idx{i#31355}.0]] +[visit_exp f.`MODULE`_frame{moduleinst#18}.`DATAS`_moduleinst{`dataaddr*#2`}] +[visit_exp f.`MODULE`_frame{moduleinst#18}] +[visit_exp f] +[visit_id f] not free +[visit_exp moduleinst#18] +[visit_id moduleinst#18] +[visit_exp `dataaddr*#2`] +[visit_id dataaddr*#2] +[visit_exp x!`%`_idx{i#31355}.0] +[visit_exp x!`%`_idx{i#31355}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#31355] +[visit_id i#31355] +[visit_exp `byte*#1846`] +[visit_id byte*#1846] +[visit_exp b*{b <- `b*`}] +[scope_enter b] +[visit_exp b] +[visit_id b] not free +[visit_id b] not free +[scope_exit b] +[visit_exp `b*`] +[visit_id b*] not free +[visit_id b*] no dims +[visit_exp f] +[visit_id f] not free +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_data{store#455 : store, frame#455 : frame, s : store, f : frame, x : idx, `b*` : byte*, store#467 : store, frame#467 : frame, `datainst*#4` : datainst*, moduleinst#18 : moduleinst, `dataaddr*#2` : dataaddr*, i#31355 : nat, `byte*#1846` : byte*}(`%;%`_state{store#455, frame#455}(s, f), x, b*{b <- `b*`}) = `%;%`_state{store#467, frame#467}(s[`DATAS`_store{`datainst*#4`}[f.`MODULE`_frame{moduleinst#18}.`DATAS`_moduleinst{`dataaddr*#2`}[x!`%`_idx{i#31355}.0]].`BYTES`_datainst{`byte*#1846`} = b*{b <- `b*`}], f) +[check_dims] a f fieldval*#1 frame#479 frame#491 fv i s store#479 store#491 structinst*#3 +[visit_exp `%;%`_state{store#479, frame#479}(s, f)] +[visit_exp store#479] +[visit_id store#479] +[visit_exp frame#479] +[visit_id frame#479] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp a] +[visit_id a] +[visit_exp i] +[visit_id i] +[visit_exp fv] +[visit_id fv] +[visit_exp `%;%`_state{store#491, frame#491}(s[`STRUCTS`_store{`structinst*#3`}[a].`FIELDS`_structinst{`fieldval*#1`}[i] = fv], f)] +[visit_exp store#491] +[visit_id store#491] +[visit_exp frame#491] +[visit_id frame#491] +[visit_exp (s[`STRUCTS`_store{`structinst*#3`}[a].`FIELDS`_structinst{`fieldval*#1`}[i] = fv], f)] +[visit_exp s[`STRUCTS`_store{`structinst*#3`}[a].`FIELDS`_structinst{`fieldval*#1`}[i] = fv]] +[visit_exp s] +[visit_id s] not free +[visit_exp `structinst*#3`] +[visit_id structinst*#3] +[visit_exp a] +[visit_id a] not free +[visit_exp `fieldval*#1`] +[visit_id fieldval*#1] +[visit_exp i] +[visit_id i] not free +[visit_exp fv] +[visit_id fv] not free +[visit_exp f] +[visit_id f] not free +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_struct{store#479 : store, frame#479 : frame, s : store, f : frame, a : addr, i : nat, fv : fieldval, store#491 : store, frame#491 : frame, `structinst*#3` : structinst*, `fieldval*#1` : fieldval*}(`%;%`_state{store#479, frame#479}(s, f), a, i, fv) = `%;%`_state{store#491, frame#491}(s[`STRUCTS`_store{`structinst*#3`}[a].`FIELDS`_structinst{`fieldval*#1`}[i] = fv], f) +[check_dims] a arrayinst*#3 f fieldval*#2 frame#503 frame#515 fv i s store#503 store#515 +[visit_exp `%;%`_state{store#503, frame#503}(s, f)] +[visit_exp store#503] +[visit_id store#503] +[visit_exp frame#503] +[visit_id frame#503] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp a] +[visit_id a] +[visit_exp i] +[visit_id i] +[visit_exp fv] +[visit_id fv] +[visit_exp `%;%`_state{store#515, frame#515}(s[`ARRAYS`_store{`arrayinst*#3`}[a].`FIELDS`_arrayinst{`fieldval*#2`}[i] = fv], f)] +[visit_exp store#515] +[visit_id store#515] +[visit_exp frame#515] +[visit_id frame#515] +[visit_exp (s[`ARRAYS`_store{`arrayinst*#3`}[a].`FIELDS`_arrayinst{`fieldval*#2`}[i] = fv], f)] +[visit_exp s[`ARRAYS`_store{`arrayinst*#3`}[a].`FIELDS`_arrayinst{`fieldval*#2`}[i] = fv]] +[visit_exp s] +[visit_id s] not free +[visit_exp `arrayinst*#3`] +[visit_id arrayinst*#3] +[visit_exp a] +[visit_id a] not free +[visit_exp `fieldval*#2`] +[visit_id fieldval*#2] +[visit_exp i] +[visit_id i] not free +[visit_exp fv] +[visit_id fv] not free +[visit_exp f] +[visit_id f] not free +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $with_array{store#503 : store, frame#503 : frame, s : store, f : frame, a : addr, i : nat, fv : fieldval, store#515 : store, frame#515 : frame, `arrayinst*#3` : arrayinst*, `fieldval*#2` : fieldval*}(`%;%`_state{store#503, frame#503}(s, f), a, i, fv) = `%;%`_state{store#515, frame#515}(s[`ARRAYS`_store{`arrayinst*#3`}[a].`FIELDS`_arrayinst{`fieldval*#2`}[i] = fv], f) +[check_dims] _ state +DecD add_structinst(state : state, structinst*) : state +[visit_id state] not free +[visit_id _] not free +[check_dims] _ state +DecD add_arrayinst(state : state, arrayinst*) : state +[visit_id state] not free +[visit_id _] not free +[check_dims] _ state +DecD add_exninst(state : state, exninst*) : state +[visit_id state] not free +[visit_id _] not free +[check_dims] f frame#527 frame#539 s si store#527 store#539 structinst*#4 +[visit_exp `%;%`_state{store#527, frame#527}(s, f)] +[visit_exp store#527] +[visit_id store#527] +[visit_exp frame#527] +[visit_id frame#527] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp si*{si <- `si*`}] +[scope_enter si] +[visit_exp si] +[visit_id si] not free +[visit_id si] not free +[scope_exit si] +[visit_exp `si*`] +[visit_id si*] no dims +[visit_id si*] +[visit_exp `%;%`_state{store#539, frame#539}(s[`STRUCTS`_store{`structinst*#4`} =++ si*{si <- `si*`}], f)] +[visit_exp store#539] +[visit_id store#539] +[visit_exp frame#539] +[visit_id frame#539] +[visit_exp (s[`STRUCTS`_store{`structinst*#4`} =++ si*{si <- `si*`}], f)] +[visit_exp s[`STRUCTS`_store{`structinst*#4`} =++ si*{si <- `si*`}]] +[visit_exp s] +[visit_id s] not free +[visit_exp `structinst*#4`] +[visit_id structinst*#4] +[visit_exp si*{si <- `si*`}] +[scope_enter si] +[visit_exp si] +[visit_id si] not free +[visit_id si] not free +[scope_exit si] +[visit_exp `si*`] +[visit_id si*] not free +[visit_id si*] no dims +[visit_exp f] +[visit_id f] not free +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $add_structinst{store#527 : store, frame#527 : frame, s : store, f : frame, `si*` : structinst*, store#539 : store, frame#539 : frame, `structinst*#4` : structinst*}(`%;%`_state{store#527, frame#527}(s, f), si*{si <- `si*`}) = `%;%`_state{store#539, frame#539}(s[`STRUCTS`_store{`structinst*#4`} =++ si*{si <- `si*`}], f) +[check_dims] ai arrayinst*#4 f frame#551 frame#563 s store#551 store#563 +[visit_exp `%;%`_state{store#551, frame#551}(s, f)] +[visit_exp store#551] +[visit_id store#551] +[visit_exp frame#551] +[visit_id frame#551] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp ai*{ai <- `ai*`}] +[scope_enter ai] +[visit_exp ai] +[visit_id ai] not free +[visit_id ai] not free +[scope_exit ai] +[visit_exp `ai*`] +[visit_id ai*] no dims +[visit_id ai*] +[visit_exp `%;%`_state{store#563, frame#563}(s[`ARRAYS`_store{`arrayinst*#4`} =++ ai*{ai <- `ai*`}], f)] +[visit_exp store#563] +[visit_id store#563] +[visit_exp frame#563] +[visit_id frame#563] +[visit_exp (s[`ARRAYS`_store{`arrayinst*#4`} =++ ai*{ai <- `ai*`}], f)] +[visit_exp s[`ARRAYS`_store{`arrayinst*#4`} =++ ai*{ai <- `ai*`}]] +[visit_exp s] +[visit_id s] not free +[visit_exp `arrayinst*#4`] +[visit_id arrayinst*#4] +[visit_exp ai*{ai <- `ai*`}] +[scope_enter ai] +[visit_exp ai] +[visit_id ai] not free +[visit_id ai] not free +[scope_exit ai] +[visit_exp `ai*`] +[visit_id ai*] not free +[visit_id ai*] no dims +[visit_exp f] +[visit_id f] not free +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $add_arrayinst{store#551 : store, frame#551 : frame, s : store, f : frame, `ai*` : arrayinst*, store#563 : store, frame#563 : frame, `arrayinst*#4` : arrayinst*}(`%;%`_state{store#551, frame#551}(s, f), ai*{ai <- `ai*`}) = `%;%`_state{store#563, frame#563}(s[`ARRAYS`_store{`arrayinst*#4`} =++ ai*{ai <- `ai*`}], f) +[check_dims] exn exninst*#3 f frame#575 frame#587 s store#575 store#587 +[visit_exp `%;%`_state{store#575, frame#575}(s, f)] +[visit_exp store#575] +[visit_id store#575] +[visit_exp frame#575] +[visit_id frame#575] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp exn*{exn <- `exn*`}] +[scope_enter exn] +[visit_exp exn] +[visit_id exn] not free +[visit_id exn] not free +[scope_exit exn] +[visit_exp `exn*`] +[visit_id exn*] no dims +[visit_id exn*] +[visit_exp `%;%`_state{store#587, frame#587}(s[`EXNS`_store{`exninst*#3`} =++ exn*{exn <- `exn*`}], f)] +[visit_exp store#587] +[visit_id store#587] +[visit_exp frame#587] +[visit_id frame#587] +[visit_exp (s[`EXNS`_store{`exninst*#3`} =++ exn*{exn <- `exn*`}], f)] +[visit_exp s[`EXNS`_store{`exninst*#3`} =++ exn*{exn <- `exn*`}]] +[visit_exp s] +[visit_id s] not free +[visit_exp `exninst*#3`] +[visit_id exninst*#3] +[visit_exp exn*{exn <- `exn*`}] +[scope_enter exn] +[visit_exp exn] +[visit_id exn] not free +[visit_id exn] not free +[scope_exit exn] +[visit_exp `exn*`] +[visit_id exn*] not free +[visit_id exn*] no dims +[visit_exp f] +[visit_id f] not free +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $add_exninst{store#575 : store, frame#575 : frame, s : store, f : frame, `exn*` : exninst*, store#587 : store, frame#587 : frame, `exninst*#3` : exninst*}(`%;%`_state{store#575, frame#575}(s, f), exn*{exn <- `exn*`}) = `%;%`_state{store#587, frame#587}(s[`EXNS`_store{`exninst*#3`} =++ exn*{exn <- `exn*`}], f) +[check_dims] nat ref tableinst +DecD growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst +[visit_id tableinst] not free +[visit_id nat] not free +[visit_id ref] not free +[check_dims] meminst nat +DecD growmem(meminst : meminst, nat : nat) : meminst +[visit_id meminst] not free +[visit_id nat] not free +[check_dims] addrtype#1027 addrtype#1039 at i i#31449 i#31467 i#31477 i' j limits#1027 limits#1039 n r r' ref*#3 ref*#4 reftype#3401 reftype#3413 rt tableinst tableinst' tabletype#875 tabletype#876 u64#361 u64#373 u64?#359 u64?#371 +[visit_exp tableinst] +[visit_id tableinst] +[visit_exp n] +[visit_id n] +[visit_exp r] +[visit_id r] +[visit_exp tableinst'] +[visit_id tableinst'] +[visit_exp (tableinst = {`TYPE`{tabletype#875} `%%%`_tabletype{addrtype#1027, limits#1027, reftype#3401}(at, `[%..%]`_limits{u64#361, `u64?#359`}(i, j?{j <- `j?`}), rt), `REFS`{`ref*#3`} r'*{r' <- `r'*`}})] +[visit_exp tableinst] +[visit_id tableinst] not free +[visit_exp {`TYPE`{tabletype#875} `%%%`_tabletype{addrtype#1027, limits#1027, reftype#3401}(at, `[%..%]`_limits{u64#361, `u64?#359`}(i, j?{j <- `j?`}), rt), `REFS`{`ref*#3`} r'*{r' <- `r'*`}}] +[visit_exp tabletype#875] +[visit_id tabletype#875] +[visit_exp `%%%`_tabletype{addrtype#1027, limits#1027, reftype#3401}(at, `[%..%]`_limits{u64#361, `u64?#359`}(i, j?{j <- `j?`}), rt)] +[visit_exp addrtype#1027] +[visit_id addrtype#1027] +[visit_exp limits#1027] +[visit_id limits#1027] +[visit_exp reftype#3401] +[visit_id reftype#3401] +[visit_exp (at, `[%..%]`_limits{u64#361, `u64?#359`}(i, j?{j <- `j?`}), rt)] +[visit_exp at] +[visit_id at] +[visit_exp `[%..%]`_limits{u64#361, `u64?#359`}(i, j?{j <- `j?`})] +[visit_exp u64#361] +[visit_id u64#361] +[visit_exp `u64?#359`] +[visit_id u64?#359] +[visit_exp (i, j?{j <- `j?`})] +[visit_exp i] +[visit_id i] +[visit_exp j?{j <- `j?`}] +[scope_enter j] +[visit_exp j] +[visit_id j] not free +[visit_id j] not free +[scope_exit j] +[visit_exp `j?`] +[visit_id j?] no dims +[visit_id j?] +[visit_exp rt] +[visit_id rt] +[visit_exp `ref*#3`] +[visit_id ref*#3] +[visit_exp r'*{r' <- `r'*`}] +[scope_enter r'] +[visit_exp r'] +[visit_id r'] not free +[visit_id r'] not free +[scope_exit r'] +[visit_exp `r'*`] +[visit_id r'*] no dims +[visit_id r'*] +[visit_exp (tableinst' = {`TYPE`{tabletype#876} `%%%`_tabletype{addrtype#1039, limits#1039, reftype#3413}(at, `[%..%]`_limits{u64#373, `u64?#371`}(i', j?{j <- `j?`}), rt), `REFS`{`ref*#4`} r'*{r' <- `r'*`} ++ r^n{}})] +[visit_exp tableinst'] +[visit_id tableinst'] not free +[visit_exp {`TYPE`{tabletype#876} `%%%`_tabletype{addrtype#1039, limits#1039, reftype#3413}(at, `[%..%]`_limits{u64#373, `u64?#371`}(i', j?{j <- `j?`}), rt), `REFS`{`ref*#4`} r'*{r' <- `r'*`} ++ r^n{}}] +[visit_exp tabletype#876] +[visit_id tabletype#876] +[visit_exp `%%%`_tabletype{addrtype#1039, limits#1039, reftype#3413}(at, `[%..%]`_limits{u64#373, `u64?#371`}(i', j?{j <- `j?`}), rt)] +[visit_exp addrtype#1039] +[visit_id addrtype#1039] +[visit_exp limits#1039] +[visit_id limits#1039] +[visit_exp reftype#3413] +[visit_id reftype#3413] +[visit_exp (at, `[%..%]`_limits{u64#373, `u64?#371`}(i', j?{j <- `j?`}), rt)] +[visit_exp at] +[visit_id at] not free +[visit_exp `[%..%]`_limits{u64#373, `u64?#371`}(i', j?{j <- `j?`})] +[visit_exp u64#373] +[visit_id u64#373] +[visit_exp `u64?#371`] +[visit_id u64?#371] +[visit_exp (i', j?{j <- `j?`})] +[visit_exp i'] +[visit_id i'] +[visit_exp j?{j <- `j?`}] +[scope_enter j] +[visit_exp j] +[visit_id j] not free +[visit_id j] not free +[scope_exit j] +[visit_exp `j?`] +[visit_id j?] not free +[visit_id j?] no dims +[visit_exp rt] +[visit_id rt] not free +[visit_exp `ref*#4`] +[visit_id ref*#4] +[visit_exp r'*{r' <- `r'*`} ++ r^n{}] +[visit_exp r'*{r' <- `r'*`}] +[scope_enter r'] +[visit_exp r'] +[visit_id r'] not free +[visit_id r'] not free +[scope_exit r'] +[visit_exp `r'*`] +[visit_id r'*] not free +[visit_id r'*] no dims +[visit_exp r^n{}] +[visit_exp r] +[visit_id r] not free +[visit_exp n] +[visit_id n] not free +[visit_exp (i'!`%`_u64{i#31449}.0 = (|r'*{r' <- `r'*`}| + n))] +[visit_exp i'!`%`_u64{i#31449}.0] +[visit_exp i'!`%`_u64{i#31449}] +[visit_exp i'] +[visit_id i'] not free +[visit_exp i#31449] +[visit_id i#31449] +[visit_exp (|r'*{r' <- `r'*`}| + n)] +[visit_exp |r'*{r' <- `r'*`}|] +[visit_exp r'*{r' <- `r'*`}] +[scope_enter r'] +[visit_exp r'] +[visit_id r'] not free +[visit_id r'] not free +[scope_exit r'] +[visit_exp `r'*`] +[visit_id r'*] not free +[visit_id r'*] no dims +[visit_exp n] +[visit_id n] not free +[scope_enter i#31467] +[scope_enter i#31477] +[scope_enter j] +[visit_exp (i'!`%`_u64{i#31467}.0 <= j!`%`_u64{i#31477}.0)] +[visit_exp i'!`%`_u64{i#31467}.0] +[visit_exp i'!`%`_u64{i#31467}] +[visit_exp i'] +[visit_id i'] not free +[visit_exp i#31467] +[visit_id i#31467] not free +[visit_exp j!`%`_u64{i#31477}.0] +[visit_exp j!`%`_u64{i#31477}] +[visit_exp j] +[visit_id j] not free +[visit_exp i#31477] +[visit_id i#31477] not free +[visit_id i#31467] not free +[visit_id i#31477] not free +[visit_id j] not free +[scope_exit j] +[scope_exit i#31477] +[scope_exit i#31467] +[visit_exp `i#31467?`] +[visit_id i#31467?] no dims +[visit_id i#31467?] +[visit_exp `i#31477?`] +[visit_id i#31477?] no dims +[visit_id i#31477?] +[visit_exp `j?`] +[visit_id j?] not free +[visit_id j?] no dims +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $growtable{tableinst : tableinst, n : n, r : ref, tableinst' : tableinst, tabletype#875 : tabletype, addrtype#1027 : addrtype, limits#1027 : limits, reftype#3401 : reftype, at : addrtype, u64#361 : u64, `u64?#359` : u64?, i : u64, `j?` : u64?, rt : reftype, `ref*#3` : ref*, `r'*` : ref*, tabletype#876 : tabletype, addrtype#1039 : addrtype, limits#1039 : limits, reftype#3413 : reftype, u64#373 : u64, `u64?#371` : u64?, i' : u64, `ref*#4` : ref*, i#31449 : nat, `i#31467?` : nat?, `i#31477?` : nat?}(tableinst, n, r) = tableinst' + -- if (tableinst = {`TYPE`{tabletype#875} `%%%`_tabletype{addrtype#1027, limits#1027, reftype#3401}(at, `[%..%]`_limits{u64#361, `u64?#359`}(i, j?{j <- `j?`}), rt), `REFS`{`ref*#3`} r'*{r' <- `r'*`}}) + -- if (tableinst' = {`TYPE`{tabletype#876} `%%%`_tabletype{addrtype#1039, limits#1039, reftype#3413}(at, `[%..%]`_limits{u64#373, `u64?#371`}(i', j?{j <- `j?`}), rt), `REFS`{`ref*#4`} r'*{r' <- `r'*`} ++ r^n{}}) + -- if (i'!`%`_u64{i#31449}.0 = (|r'*{r' <- `r'*`}| + n)) + -- (if (i'!`%`_u64{i#31467}.0 <= j!`%`_u64{i#31477}.0))?{i#31467 <- `i#31467?`, i#31477 <- `i#31477?`, j <- `j?`} +[check_dims] addrtype#1051 addrtype#1063 at b byte*#1847 byte*#1848 i i#31599 i#31609 i#31627 i#31637 i' j limits#1051 limits#1063 meminst meminst' memtype#525 memtype#526 n u64#385 u64#397 u64?#383 u64?#395 +[visit_exp meminst] +[visit_id meminst] +[visit_exp n] +[visit_id n] +[visit_exp meminst'] +[visit_id meminst'] +[visit_exp (meminst = {`TYPE`{memtype#525} `%%PAGE`_memtype{addrtype#1051, limits#1051}(at, `[%..%]`_limits{u64#385, `u64?#383`}(i, j?{j <- `j?`})), `BYTES`{`byte*#1847`} b*{b <- `b*`}})] +[visit_exp meminst] +[visit_id meminst] not free +[visit_exp {`TYPE`{memtype#525} `%%PAGE`_memtype{addrtype#1051, limits#1051}(at, `[%..%]`_limits{u64#385, `u64?#383`}(i, j?{j <- `j?`})), `BYTES`{`byte*#1847`} b*{b <- `b*`}}] +[visit_exp memtype#525] +[visit_id memtype#525] +[visit_exp `%%PAGE`_memtype{addrtype#1051, limits#1051}(at, `[%..%]`_limits{u64#385, `u64?#383`}(i, j?{j <- `j?`}))] +[visit_exp addrtype#1051] +[visit_id addrtype#1051] +[visit_exp limits#1051] +[visit_id limits#1051] +[visit_exp (at, `[%..%]`_limits{u64#385, `u64?#383`}(i, j?{j <- `j?`}))] +[visit_exp at] +[visit_id at] +[visit_exp `[%..%]`_limits{u64#385, `u64?#383`}(i, j?{j <- `j?`})] +[visit_exp u64#385] +[visit_id u64#385] +[visit_exp `u64?#383`] +[visit_id u64?#383] +[visit_exp (i, j?{j <- `j?`})] +[visit_exp i] +[visit_id i] +[visit_exp j?{j <- `j?`}] +[scope_enter j] +[visit_exp j] +[visit_id j] not free +[visit_id j] not free +[scope_exit j] +[visit_exp `j?`] +[visit_id j?] no dims +[visit_id j?] +[visit_exp `byte*#1847`] +[visit_id byte*#1847] +[visit_exp b*{b <- `b*`}] +[scope_enter b] +[visit_exp b] +[visit_id b] not free +[visit_id b] not free +[scope_exit b] +[visit_exp `b*`] +[visit_id b*] no dims +[visit_id b*] +[visit_exp (meminst' = {`TYPE`{memtype#526} `%%PAGE`_memtype{addrtype#1063, limits#1063}(at, `[%..%]`_limits{u64#397, `u64?#395`}(i', j?{j <- `j?`})), `BYTES`{`byte*#1848`} b*{b <- `b*`} ++ `%`_byte{i#31599}(0)^(n * (64 * $Ki)){i#31599 <- `i#31599*`}})] +[visit_exp meminst'] +[visit_id meminst'] not free +[visit_exp {`TYPE`{memtype#526} `%%PAGE`_memtype{addrtype#1063, limits#1063}(at, `[%..%]`_limits{u64#397, `u64?#395`}(i', j?{j <- `j?`})), `BYTES`{`byte*#1848`} b*{b <- `b*`} ++ `%`_byte{i#31599}(0)^(n * (64 * $Ki)){i#31599 <- `i#31599*`}}] +[visit_exp memtype#526] +[visit_id memtype#526] +[visit_exp `%%PAGE`_memtype{addrtype#1063, limits#1063}(at, `[%..%]`_limits{u64#397, `u64?#395`}(i', j?{j <- `j?`}))] +[visit_exp addrtype#1063] +[visit_id addrtype#1063] +[visit_exp limits#1063] +[visit_id limits#1063] +[visit_exp (at, `[%..%]`_limits{u64#397, `u64?#395`}(i', j?{j <- `j?`}))] +[visit_exp at] +[visit_id at] not free +[visit_exp `[%..%]`_limits{u64#397, `u64?#395`}(i', j?{j <- `j?`})] +[visit_exp u64#397] +[visit_id u64#397] +[visit_exp `u64?#395`] +[visit_id u64?#395] +[visit_exp (i', j?{j <- `j?`})] +[visit_exp i'] +[visit_id i'] +[visit_exp j?{j <- `j?`}] +[scope_enter j] +[visit_exp j] +[visit_id j] not free +[visit_id j] not free +[scope_exit j] +[visit_exp `j?`] +[visit_id j?] not free +[visit_id j?] no dims +[visit_exp `byte*#1848`] +[visit_id byte*#1848] +[visit_exp b*{b <- `b*`} ++ `%`_byte{i#31599}(0)^(n * (64 * $Ki)){i#31599 <- `i#31599*`}] +[visit_exp b*{b <- `b*`}] +[scope_enter b] +[visit_exp b] +[visit_id b] not free +[visit_id b] not free +[scope_exit b] +[visit_exp `b*`] +[visit_id b*] not free +[visit_id b*] no dims +[visit_exp `%`_byte{i#31599}(0)^(n * (64 * $Ki)){i#31599 <- `i#31599*`}] +[scope_enter i#31599] +[visit_exp `%`_byte{i#31599}(0)] +[visit_exp i#31599] +[visit_id i#31599] not free +[visit_exp (0)] +[visit_exp 0] +[visit_id i#31599] not free +[scope_exit i#31599] +[visit_exp (n * (64 * $Ki))] +[visit_exp n] +[visit_id n] not free +[visit_exp (64 * $Ki)] +[visit_exp 64] +[visit_exp $Ki] +[visit_exp `i#31599*`] +[visit_id i#31599*] no dims +[visit_id i#31599*] +[visit_exp ((i'!`%`_u64{i#31609}.0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat)))] +[visit_exp (i'!`%`_u64{i#31609}.0 : nat <:> rat)] +[visit_exp i'!`%`_u64{i#31609}.0] +[visit_exp i'!`%`_u64{i#31609}] +[visit_exp i'] +[visit_id i'] not free +[visit_exp i#31609] +[visit_id i#31609] +[visit_exp (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))] +[visit_exp ((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat))] +[visit_exp (|b*{b <- `b*`}| : nat <:> rat)] +[visit_exp |b*{b <- `b*`}|] +[visit_exp b*{b <- `b*`}] +[scope_enter b] +[visit_exp b] +[visit_id b] not free +[visit_id b] not free +[scope_exit b] +[visit_exp `b*`] +[visit_id b*] not free +[visit_id b*] no dims +[visit_exp ((64 * $Ki) : nat <:> rat)] +[visit_exp (64 * $Ki)] +[visit_exp 64] +[visit_exp $Ki] +[visit_exp (n : nat <:> rat)] +[visit_exp n] +[visit_id n] not free +[scope_enter i#31627] +[scope_enter i#31637] +[scope_enter j] +[visit_exp (i'!`%`_u64{i#31627}.0 <= j!`%`_u64{i#31637}.0)] +[visit_exp i'!`%`_u64{i#31627}.0] +[visit_exp i'!`%`_u64{i#31627}] +[visit_exp i'] +[visit_id i'] not free +[visit_exp i#31627] +[visit_id i#31627] not free +[visit_exp j!`%`_u64{i#31637}.0] +[visit_exp j!`%`_u64{i#31637}] +[visit_exp j] +[visit_id j] not free +[visit_exp i#31637] +[visit_id i#31637] not free +[visit_id i#31627] not free +[visit_id i#31637] not free +[visit_id j] not free +[scope_exit j] +[scope_exit i#31637] +[scope_exit i#31627] +[visit_exp `i#31627?`] +[visit_id i#31627?] no dims +[visit_id i#31627?] +[visit_exp `i#31637?`] +[visit_id i#31637?] no dims +[visit_id i#31637?] +[visit_exp `j?`] +[visit_id j?] not free +[visit_id j?] no dims +=> + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $growmem{meminst : meminst, n : n, meminst' : meminst, memtype#525 : memtype, addrtype#1051 : addrtype, limits#1051 : limits, at : addrtype, u64#385 : u64, `u64?#383` : u64?, i : u64, `j?` : u64?, `byte*#1847` : byte*, `b*` : byte*, memtype#526 : memtype, addrtype#1063 : addrtype, limits#1063 : limits, u64#397 : u64, `u64?#395` : u64?, i' : u64, `byte*#1848` : byte*, `i#31599*` : nat*, i#31609 : nat, `i#31627?` : nat?, `i#31637?` : nat?}(meminst, n) = meminst' + -- if (meminst = {`TYPE`{memtype#525} `%%PAGE`_memtype{addrtype#1051, limits#1051}(at, `[%..%]`_limits{u64#385, `u64?#383`}(i, j?{j <- `j?`})), `BYTES`{`byte*#1847`} b*{b <- `b*`}}) + -- if (meminst' = {`TYPE`{memtype#526} `%%PAGE`_memtype{addrtype#1063, limits#1063}(at, `[%..%]`_limits{u64#397, `u64?#395`}(i', j?{j <- `j?`})), `BYTES`{`byte*#1848`} b*{b <- `b*`} ++ `%`_byte{i#31599}(0)^(n * (64 * $Ki)){i#31599 <- `i#31599*`}}) + -- if ((i'!`%`_u64{i#31609}.0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) + -- (if (i'!`%`_u64{i#31627}.0 <= j!`%`_u64{i#31637}.0))?{i#31627 <- `i#31627?`, i#31637 <- `i#31637?`, j <- `j?`} +[check_dims] valtype +DecD default_(valtype : valtype) : val? +[visit_id valtype] not free +[check_dims] Inn i#31659 numtype#37 +[visit_exp (Inn : Inn <: valtype)] +[visit_exp Inn] +[visit_id Inn] +[visit_exp ?(`CONST`_val{numtype#37}((Inn : Inn <: numtype), `%`_num_{i#31659}(0)))] +[visit_exp `CONST`_val{numtype#37}((Inn : Inn <: numtype), `%`_num_{i#31659}(0))] +[visit_exp numtype#37] +[visit_id numtype#37] +[visit_exp ((Inn : Inn <: numtype), `%`_num_{i#31659}(0))] +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] not free +[visit_exp `%`_num_{i#31659}(0)] +[visit_exp i#31659] +[visit_id i#31659] +[visit_exp (0)] +[visit_exp 0] +=> + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_{Inn : Inn, numtype#37 : numtype, i#31659 : nat}((Inn : Inn <: valtype)) = ?(`CONST`_val{numtype#37}((Inn : Inn <: numtype), `%`_num_{i#31659}(0))) +[check_dims] Fnn numtype#39 +[visit_exp (Fnn : Fnn <: valtype)] +[visit_exp Fnn] +[visit_id Fnn] +[visit_exp ?(`CONST`_val{numtype#39}((Fnn : Fnn <: numtype), $fzero($size((Fnn : Fnn <: numtype)))))] +[visit_exp `CONST`_val{numtype#39}((Fnn : Fnn <: numtype), $fzero($size((Fnn : Fnn <: numtype))))] +[visit_exp numtype#39] +[visit_id numtype#39] +[visit_exp ((Fnn : Fnn <: numtype), $fzero($size((Fnn : Fnn <: numtype))))] +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] not free +[visit_exp $fzero($size((Fnn : Fnn <: numtype)))] +[visit_exp $size((Fnn : Fnn <: numtype))] +[visit_exp (Fnn : Fnn <: numtype)] +[visit_exp Fnn] +[visit_id Fnn] not free +=> + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_{Fnn : Fnn, numtype#39 : numtype}((Fnn : Fnn <: valtype)) = ?(`CONST`_val{numtype#39}((Fnn : Fnn <: numtype), $fzero($size((Fnn : Fnn <: numtype))))) +[check_dims] Vnn i#31681 vectype#42 +[visit_exp (Vnn : Vnn <: valtype)] +[visit_exp Vnn] +[visit_id Vnn] +[visit_exp ?(`VCONST`_val{vectype#42}(Vnn, `%`_vec_{i#31681}(0)))] +[visit_exp `VCONST`_val{vectype#42}(Vnn, `%`_vec_{i#31681}(0))] +[visit_exp vectype#42] +[visit_id vectype#42] +[visit_exp (Vnn, `%`_vec_{i#31681}(0))] +[visit_exp Vnn] +[visit_id Vnn] not free +[visit_exp `%`_vec_{i#31681}(0)] +[visit_exp i#31681] +[visit_id i#31681] +[visit_exp (0)] +[visit_exp 0] +=> + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_{Vnn : Vnn, vectype#42 : vectype, i#31681 : nat}((Vnn : Vnn <: valtype)) = ?(`VCONST`_val{vectype#42}(Vnn, `%`_vec_{i#31681}(0))) +[check_dims] heaptype#1043 heaptype#1045 ht null?#1037 +[visit_exp `REF`_valtype{`null?#1037`, heaptype#1043}(?(`NULL`_null), ht)] +[visit_exp `null?#1037`] +[visit_id null?#1037] +[visit_exp heaptype#1043] +[visit_id heaptype#1043] +[visit_exp (?(`NULL`_null), ht)] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp ht] +[visit_id ht] +[visit_exp ?(`REF.NULL`_val{heaptype#1045}(ht))] +[visit_exp `REF.NULL`_val{heaptype#1045}(ht)] +[visit_exp heaptype#1045] +[visit_id heaptype#1045] +[visit_exp (ht)] +[visit_exp ht] +[visit_id ht] not free +=> + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_{`null?#1037` : null?, heaptype#1043 : heaptype, ht : heaptype, heaptype#1045 : heaptype}(`REF`_valtype{`null?#1037`, heaptype#1043}(?(`NULL`_null), ht)) = ?(`REF.NULL`_val{heaptype#1045}(ht)) +[check_dims] heaptype#1047 ht null?#1039 +[visit_exp `REF`_valtype{`null?#1039`, heaptype#1047}(?(), ht)] +[visit_exp `null?#1039`] +[visit_id null?#1039] +[visit_exp heaptype#1047] +[visit_id heaptype#1047] +[visit_exp (?(), ht)] +[visit_exp ?()] +[visit_exp ht] +[visit_id ht] +[visit_exp ?()] +=> + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + def $default_{`null?#1039` : null?, heaptype#1047 : heaptype, ht : heaptype}(`REF`_valtype{`null?#1039`, heaptype#1047}(?(), ht)) = ?() +[check_dims] t +[visit_exp t] +[visit_id t] +[visit_exp ($default_(t) =/= ?())] +[visit_exp $default_(t)] +[visit_exp t] +[visit_id t] not free +[visit_exp ?()] +[check_dims] t +[visit_exp t] +[visit_id t] +[visit_exp ($default_(t) = ?())] +[visit_exp $default_(t)] +[visit_exp t] +[visit_id t] not free +[visit_exp ?()] +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] c nt numtype#51 s +[visit_exp s] +[visit_id s] +[visit_exp `CONST`_num{numtype#51}(nt, c)] +[visit_exp numtype#51] +[visit_id numtype#51] +[visit_exp (nt, c)] +[visit_exp nt] +[visit_id nt] +[visit_exp c] +[visit_id c] +[visit_exp nt] +[visit_id nt] not free +[check_dims] c s vectype#54 vt +[visit_exp s] +[visit_id s] +[visit_exp `VCONST`_vec{vectype#54}(vt, c)] +[visit_exp vectype#54] +[visit_id vectype#54] +[visit_exp (vt, c)] +[visit_exp vt] +[visit_id vt] +[visit_exp c] +[visit_id c] +[visit_exp vt] +[visit_id vt] not free +[check_dims] datatype*#19 deftype*#75 deftype*#76 elemtype*#19 funcidx*#56 globaltype*#20 heaptype#1049 heaptype#1061 ht ht' localtype*#22 memtype*#34 null?#1051 resulttype*#30 resulttype?#27 s subtype*#18 tabletype*#27 tagtype*#19 +[visit_exp s] +[visit_id s] +[visit_exp `REF.NULL`_ref{heaptype#1049}(ht)] +[visit_exp heaptype#1049] +[visit_id heaptype#1049] +[visit_exp (ht)] +[visit_exp ht] +[visit_id ht] +[visit_exp `REF`_reftype{`null?#1051`, heaptype#1061}(?(`NULL`_null), ht')] +[visit_exp `null?#1051`] +[visit_id null?#1051] +[visit_exp heaptype#1061] +[visit_id heaptype#1061] +[visit_exp (?(`NULL`_null), ht')] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp ht'] +[visit_id ht'] +[visit_exp ({`TYPES`{`deftype*#75`} [], `RECS`{`subtype*#18`} [], `TAGS`{`tagtype*#19`} [], `GLOBALS`{`globaltype*#20`} [], `MEMS`{`memtype*#34`} [], `TABLES`{`tabletype*#27`} [], `FUNCS`{`deftype*#76`} [], `DATAS`{`datatype*#19`} [], `ELEMS`{`elemtype*#19`} [], `LOCALS`{`localtype*#22`} [], `LABELS`{`resulttype*#30`} [], `RETURN`{`resulttype?#27`} ?(), `REFS`{`funcidx*#56`} []}, ht', ht)] +[visit_exp {`TYPES`{`deftype*#75`} [], `RECS`{`subtype*#18`} [], `TAGS`{`tagtype*#19`} [], `GLOBALS`{`globaltype*#20`} [], `MEMS`{`memtype*#34`} [], `TABLES`{`tabletype*#27`} [], `FUNCS`{`deftype*#76`} [], `DATAS`{`datatype*#19`} [], `ELEMS`{`elemtype*#19`} [], `LOCALS`{`localtype*#22`} [], `LABELS`{`resulttype*#30`} [], `RETURN`{`resulttype?#27`} ?(), `REFS`{`funcidx*#56`} []}] +[visit_exp `deftype*#75`] +[visit_id deftype*#75] +[visit_exp []] +[visit_exp `subtype*#18`] +[visit_id subtype*#18] +[visit_exp []] +[visit_exp `tagtype*#19`] +[visit_id tagtype*#19] +[visit_exp []] +[visit_exp `globaltype*#20`] +[visit_id globaltype*#20] +[visit_exp []] +[visit_exp `memtype*#34`] +[visit_id memtype*#34] +[visit_exp []] +[visit_exp `tabletype*#27`] +[visit_id tabletype*#27] +[visit_exp []] +[visit_exp `deftype*#76`] +[visit_id deftype*#76] +[visit_exp []] +[visit_exp `datatype*#19`] +[visit_id datatype*#19] +[visit_exp []] +[visit_exp `elemtype*#19`] +[visit_id elemtype*#19] +[visit_exp []] +[visit_exp `localtype*#22`] +[visit_id localtype*#22] +[visit_exp []] +[visit_exp `resulttype*#30`] +[visit_id resulttype*#30] +[visit_exp []] +[visit_exp `resulttype?#27`] +[visit_id resulttype?#27] +[visit_exp ?()] +[visit_exp `funcidx*#56`] +[visit_id funcidx*#56] +[visit_exp []] +[visit_exp ht'] +[visit_id ht'] not free +[visit_exp ht] +[visit_id ht] not free +[check_dims] heaptype#1073 i null?#1063 s u31#1 +[visit_exp s] +[visit_id s] +[visit_exp `REF.I31_NUM`_ref{u31#1}(i)] +[visit_exp u31#1] +[visit_id u31#1] +[visit_exp (i)] +[visit_exp i] +[visit_id i] +[visit_exp `REF`_reftype{`null?#1063`, heaptype#1073}(?(), `I31`_heaptype)] +[visit_exp `null?#1063`] +[visit_id null?#1063] +[visit_exp heaptype#1073] +[visit_id heaptype#1073] +[visit_exp (?(), `I31`_heaptype)] +[visit_exp ?()] +[visit_exp `I31`_heaptype] +[visit_exp ()] +[check_dims] a deftype#1 dt heaptype#1085 null?#1075 s structaddr#1 structinst*#5 +[visit_exp s] +[visit_id s] +[visit_exp `REF.STRUCT_ADDR`_ref{structaddr#1}(a)] +[visit_exp structaddr#1] +[visit_id structaddr#1] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp `REF`_reftype{`null?#1075`, heaptype#1085}(?(), (dt : deftype <: heaptype))] +[visit_exp `null?#1075`] +[visit_id null?#1075] +[visit_exp heaptype#1085] +[visit_id heaptype#1085] +[visit_exp (?(), (dt : deftype <: heaptype))] +[visit_exp ?()] +[visit_exp (dt : deftype <: heaptype)] +[visit_exp dt] +[visit_id dt] +[visit_exp (s.`STRUCTS`_store{`structinst*#5`}[a].`TYPE`_structinst{deftype#1} = dt)] +[visit_exp s.`STRUCTS`_store{`structinst*#5`}[a].`TYPE`_structinst{deftype#1}] +[visit_exp s.`STRUCTS`_store{`structinst*#5`}[a]] +[visit_exp s.`STRUCTS`_store{`structinst*#5`}] +[visit_exp s] +[visit_id s] not free +[visit_exp `structinst*#5`] +[visit_id structinst*#5] +[visit_exp a] +[visit_id a] not free +[visit_exp deftype#1] +[visit_id deftype#1] +[visit_exp dt] +[visit_id dt] not free +[check_dims] a arrayaddr#1 arrayinst*#5 deftype#2 dt heaptype#1097 null?#1087 s +[visit_exp s] +[visit_id s] +[visit_exp `REF.ARRAY_ADDR`_ref{arrayaddr#1}(a)] +[visit_exp arrayaddr#1] +[visit_id arrayaddr#1] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp `REF`_reftype{`null?#1087`, heaptype#1097}(?(), (dt : deftype <: heaptype))] +[visit_exp `null?#1087`] +[visit_id null?#1087] +[visit_exp heaptype#1097] +[visit_id heaptype#1097] +[visit_exp (?(), (dt : deftype <: heaptype))] +[visit_exp ?()] +[visit_exp (dt : deftype <: heaptype)] +[visit_exp dt] +[visit_id dt] +[visit_exp (s.`ARRAYS`_store{`arrayinst*#5`}[a].`TYPE`_arrayinst{deftype#2} = dt)] +[visit_exp s.`ARRAYS`_store{`arrayinst*#5`}[a].`TYPE`_arrayinst{deftype#2}] +[visit_exp s.`ARRAYS`_store{`arrayinst*#5`}[a]] +[visit_exp s.`ARRAYS`_store{`arrayinst*#5`}] +[visit_exp s] +[visit_id s] not free +[visit_exp `arrayinst*#5`] +[visit_id arrayinst*#5] +[visit_exp a] +[visit_id a] not free +[visit_exp deftype#2] +[visit_id deftype#2] +[visit_exp dt] +[visit_id dt] not free +[check_dims] a deftype#3 dt funcaddr#3 funcinst*#4 heaptype#1109 null?#1099 s +[visit_exp s] +[visit_id s] +[visit_exp `REF.FUNC_ADDR`_ref{funcaddr#3}(a)] +[visit_exp funcaddr#3] +[visit_id funcaddr#3] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp `REF`_reftype{`null?#1099`, heaptype#1109}(?(), (dt : deftype <: heaptype))] +[visit_exp `null?#1099`] +[visit_id null?#1099] +[visit_exp heaptype#1109] +[visit_id heaptype#1109] +[visit_exp (?(), (dt : deftype <: heaptype))] +[visit_exp ?()] +[visit_exp (dt : deftype <: heaptype)] +[visit_exp dt] +[visit_id dt] +[visit_exp (s.`FUNCS`_store{`funcinst*#4`}[a].`TYPE`_funcinst{deftype#3} = dt)] +[visit_exp s.`FUNCS`_store{`funcinst*#4`}[a].`TYPE`_funcinst{deftype#3}] +[visit_exp s.`FUNCS`_store{`funcinst*#4`}[a]] +[visit_exp s.`FUNCS`_store{`funcinst*#4`}] +[visit_exp s] +[visit_id s] not free +[visit_exp `funcinst*#4`] +[visit_id funcinst*#4] +[visit_exp a] +[visit_id a] not free +[visit_exp deftype#3] +[visit_id deftype#3] +[visit_exp dt] +[visit_id dt] not free +[check_dims] a exn exnaddr#1 exninst*#4 heaptype#1121 null?#1111 s +[visit_exp s] +[visit_id s] +[visit_exp `REF.EXN_ADDR`_ref{exnaddr#1}(a)] +[visit_exp exnaddr#1] +[visit_id exnaddr#1] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp `REF`_reftype{`null?#1111`, heaptype#1121}(?(), `EXN`_heaptype)] +[visit_exp `null?#1111`] +[visit_id null?#1111] +[visit_exp heaptype#1121] +[visit_id heaptype#1121] +[visit_exp (?(), `EXN`_heaptype)] +[visit_exp ?()] +[visit_exp `EXN`_heaptype] +[visit_exp ()] +[visit_exp (s.`EXNS`_store{`exninst*#4`}[a] = exn)] +[visit_exp s.`EXNS`_store{`exninst*#4`}[a]] +[visit_exp s.`EXNS`_store{`exninst*#4`}] +[visit_exp s] +[visit_id s] not free +[visit_exp `exninst*#4`] +[visit_id exninst*#4] +[visit_exp a] +[visit_id a] not free +[visit_exp exn] +[visit_id exn] +[check_dims] a heaptype#1133 hostaddr#1 null?#1123 s +[visit_exp s] +[visit_id s] +[visit_exp `REF.HOST_ADDR`_ref{hostaddr#1}(a)] +[visit_exp hostaddr#1] +[visit_id hostaddr#1] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp `REF`_reftype{`null?#1123`, heaptype#1133}(?(), `ANY`_heaptype)] +[visit_exp `null?#1123`] +[visit_id null?#1123] +[visit_exp heaptype#1133] +[visit_id heaptype#1133] +[visit_exp (?(), `ANY`_heaptype)] +[visit_exp ?()] +[visit_exp `ANY`_heaptype] +[visit_exp ()] +[check_dims] addrref addrref#1 heaptype#1145 heaptype#1157 null?#1135 null?#1147 s +[visit_exp s] +[visit_id s] +[visit_exp `REF.EXTERN`_ref{addrref#1}(addrref)] +[visit_exp addrref#1] +[visit_id addrref#1] +[visit_exp (addrref)] +[visit_exp addrref] +[visit_id addrref] +[visit_exp `REF`_reftype{`null?#1135`, heaptype#1145}(?(), `EXTERN`_heaptype)] +[visit_exp `null?#1135`] +[visit_id null?#1135] +[visit_exp heaptype#1145] +[visit_id heaptype#1145] +[visit_exp (?(), `EXTERN`_heaptype)] +[visit_exp ?()] +[visit_exp `EXTERN`_heaptype] +[visit_exp ()] +[visit_exp (s, (addrref : addrref <: ref), `REF`_reftype{`null?#1147`, heaptype#1157}(?(), `ANY`_heaptype))] +[visit_exp s] +[visit_id s] not free +[visit_exp (addrref : addrref <: ref)] +[visit_exp addrref] +[visit_id addrref] not free +[visit_exp `REF`_reftype{`null?#1147`, heaptype#1157}(?(), `ANY`_heaptype)] +[visit_exp `null?#1147`] +[visit_id null?#1147] +[visit_exp heaptype#1157] +[visit_id heaptype#1157] +[visit_exp (?(), `ANY`_heaptype)] +[visit_exp ?()] +[visit_exp `ANY`_heaptype] +[visit_exp ()] +[check_dims] datatype*#20 deftype*#77 deftype*#78 elemtype*#20 funcidx*#57 globaltype*#21 localtype*#23 memtype*#35 ref resulttype*#31 resulttype?#28 rt rt' s subtype*#19 tabletype*#28 tagtype*#20 +[visit_exp s] +[visit_id s] +[visit_exp ref] +[visit_id ref] +[visit_exp rt] +[visit_id rt] +[visit_exp (s, ref, rt')] +[visit_exp s] +[visit_id s] not free +[visit_exp ref] +[visit_id ref] not free +[visit_exp rt'] +[visit_id rt'] +[visit_exp ({`TYPES`{`deftype*#77`} [], `RECS`{`subtype*#19`} [], `TAGS`{`tagtype*#20`} [], `GLOBALS`{`globaltype*#21`} [], `MEMS`{`memtype*#35`} [], `TABLES`{`tabletype*#28`} [], `FUNCS`{`deftype*#78`} [], `DATAS`{`datatype*#20`} [], `ELEMS`{`elemtype*#20`} [], `LOCALS`{`localtype*#23`} [], `LABELS`{`resulttype*#31`} [], `RETURN`{`resulttype?#28`} ?(), `REFS`{`funcidx*#57`} []}, rt', rt)] +[visit_exp {`TYPES`{`deftype*#77`} [], `RECS`{`subtype*#19`} [], `TAGS`{`tagtype*#20`} [], `GLOBALS`{`globaltype*#21`} [], `MEMS`{`memtype*#35`} [], `TABLES`{`tabletype*#28`} [], `FUNCS`{`deftype*#78`} [], `DATAS`{`datatype*#20`} [], `ELEMS`{`elemtype*#20`} [], `LOCALS`{`localtype*#23`} [], `LABELS`{`resulttype*#31`} [], `RETURN`{`resulttype?#28`} ?(), `REFS`{`funcidx*#57`} []}] +[visit_exp `deftype*#77`] +[visit_id deftype*#77] +[visit_exp []] +[visit_exp `subtype*#19`] +[visit_id subtype*#19] +[visit_exp []] +[visit_exp `tagtype*#20`] +[visit_id tagtype*#20] +[visit_exp []] +[visit_exp `globaltype*#21`] +[visit_id globaltype*#21] +[visit_exp []] +[visit_exp `memtype*#35`] +[visit_id memtype*#35] +[visit_exp []] +[visit_exp `tabletype*#28`] +[visit_id tabletype*#28] +[visit_exp []] +[visit_exp `deftype*#78`] +[visit_id deftype*#78] +[visit_exp []] +[visit_exp `datatype*#20`] +[visit_id datatype*#20] +[visit_exp []] +[visit_exp `elemtype*#20`] +[visit_id elemtype*#20] +[visit_exp []] +[visit_exp `localtype*#23`] +[visit_id localtype*#23] +[visit_exp []] +[visit_exp `resulttype*#31`] +[visit_id resulttype*#31] +[visit_exp []] +[visit_exp `resulttype?#28`] +[visit_id resulttype?#28] +[visit_exp ?()] +[visit_exp `funcidx*#57`] +[visit_id funcidx*#57] +[visit_exp []] +[visit_exp rt'] +[visit_id rt'] not free +[visit_exp rt] +[visit_id rt] not free +[check_dims] nt num s +[visit_exp s] +[visit_id s] +[visit_exp (num : num <: val)] +[visit_exp num] +[visit_id num] +[visit_exp (nt : numtype <: valtype)] +[visit_exp nt] +[visit_id nt] +[visit_exp (s, num, nt)] +[visit_exp s] +[visit_id s] not free +[visit_exp num] +[visit_id num] not free +[visit_exp nt] +[visit_id nt] not free +[check_dims] s vec vt +[visit_exp s] +[visit_id s] +[visit_exp (vec : vec <: val)] +[visit_exp vec] +[visit_id vec] +[visit_exp (vt : vectype <: valtype)] +[visit_exp vt] +[visit_id vt] +[visit_exp (s, vec, vt)] +[visit_exp s] +[visit_id s] not free +[visit_exp vec] +[visit_id vec] not free +[visit_exp vt] +[visit_id vt] not free +[check_dims] ref rt s +[visit_exp s] +[visit_id s] +[visit_exp (ref : ref <: val)] +[visit_exp ref] +[visit_id ref] +[visit_exp (rt : reftype <: valtype)] +[visit_exp rt] +[visit_id rt] +[visit_exp (s, ref, rt)] +[visit_exp s] +[visit_id s] not free +[visit_exp ref] +[visit_id ref] not free +[visit_exp rt] +[visit_id rt] not free +[check_dims] +[check_dims] a s tagaddr#3 taginst taginst*#4 tagtype#177 tagtype#179 +[visit_exp s] +[visit_id s] +[visit_exp `TAG`_externaddr{tagaddr#3}(a)] +[visit_exp tagaddr#3] +[visit_id tagaddr#3] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp `TAG`_externtype{tagtype#177}(taginst.`TYPE`_taginst{tagtype#179})] +[visit_exp tagtype#177] +[visit_id tagtype#177] +[visit_exp (taginst.`TYPE`_taginst{tagtype#179})] +[visit_exp taginst.`TYPE`_taginst{tagtype#179}] +[visit_exp taginst] +[visit_id taginst] +[visit_exp tagtype#179] +[visit_id tagtype#179] +[visit_exp (s.`TAGS`_store{`taginst*#4`}[a] = taginst)] +[visit_exp s.`TAGS`_store{`taginst*#4`}[a]] +[visit_exp s.`TAGS`_store{`taginst*#4`}] +[visit_exp s] +[visit_id s] not free +[visit_exp `taginst*#4`] +[visit_id taginst*#4] +[visit_exp a] +[visit_id a] not free +[visit_exp taginst] +[visit_id taginst] not free +[check_dims] a globaladdr#3 globalinst globalinst*#5 globaltype#2085 globaltype#2087 s +[visit_exp s] +[visit_id s] +[visit_exp `GLOBAL`_externaddr{globaladdr#3}(a)] +[visit_exp globaladdr#3] +[visit_id globaladdr#3] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp `GLOBAL`_externtype{globaltype#2085}(globalinst.`TYPE`_globalinst{globaltype#2087})] +[visit_exp globaltype#2085] +[visit_id globaltype#2085] +[visit_exp (globalinst.`TYPE`_globalinst{globaltype#2087})] +[visit_exp globalinst.`TYPE`_globalinst{globaltype#2087}] +[visit_exp globalinst] +[visit_id globalinst] +[visit_exp globaltype#2087] +[visit_id globaltype#2087] +[visit_exp (s.`GLOBALS`_store{`globalinst*#5`}[a] = globalinst)] +[visit_exp s.`GLOBALS`_store{`globalinst*#5`}[a]] +[visit_exp s.`GLOBALS`_store{`globalinst*#5`}] +[visit_exp s] +[visit_id s] not free +[visit_exp `globalinst*#5`] +[visit_id globalinst*#5] +[visit_exp a] +[visit_id a] not free +[visit_exp globalinst] +[visit_id globalinst] not free +[check_dims] a memaddr#3 meminst meminst*#6 memtype#527 memtype#529 s +[visit_exp s] +[visit_id s] +[visit_exp `MEM`_externaddr{memaddr#3}(a)] +[visit_exp memaddr#3] +[visit_id memaddr#3] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp `MEM`_externtype{memtype#527}(meminst.`TYPE`_meminst{memtype#529})] +[visit_exp memtype#527] +[visit_id memtype#527] +[visit_exp (meminst.`TYPE`_meminst{memtype#529})] +[visit_exp meminst.`TYPE`_meminst{memtype#529}] +[visit_exp meminst] +[visit_id meminst] +[visit_exp memtype#529] +[visit_id memtype#529] +[visit_exp (s.`MEMS`_store{`meminst*#6`}[a] = meminst)] +[visit_exp s.`MEMS`_store{`meminst*#6`}[a]] +[visit_exp s.`MEMS`_store{`meminst*#6`}] +[visit_exp s] +[visit_id s] not free +[visit_exp `meminst*#6`] +[visit_id meminst*#6] +[visit_exp a] +[visit_id a] not free +[visit_exp meminst] +[visit_id meminst] not free +[check_dims] a s tableaddr#3 tableinst tableinst*#6 tabletype#877 tabletype#879 +[visit_exp s] +[visit_id s] +[visit_exp `TABLE`_externaddr{tableaddr#3}(a)] +[visit_exp tableaddr#3] +[visit_id tableaddr#3] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp `TABLE`_externtype{tabletype#877}(tableinst.`TYPE`_tableinst{tabletype#879})] +[visit_exp tabletype#877] +[visit_id tabletype#877] +[visit_exp (tableinst.`TYPE`_tableinst{tabletype#879})] +[visit_exp tableinst.`TYPE`_tableinst{tabletype#879}] +[visit_exp tableinst] +[visit_id tableinst] +[visit_exp tabletype#879] +[visit_id tabletype#879] +[visit_exp (s.`TABLES`_store{`tableinst*#6`}[a] = tableinst)] +[visit_exp s.`TABLES`_store{`tableinst*#6`}[a]] +[visit_exp s.`TABLES`_store{`tableinst*#6`}] +[visit_exp s] +[visit_id s] not free +[visit_exp `tableinst*#6`] +[visit_id tableinst*#6] +[visit_exp a] +[visit_id a] not free +[visit_exp tableinst] +[visit_id tableinst] not free +[check_dims] a deftype#4 funcaddr#5 funcinst funcinst*#5 s typeuse#33 +[visit_exp s] +[visit_id s] +[visit_exp `FUNC`_externaddr{funcaddr#5}(a)] +[visit_exp funcaddr#5] +[visit_id funcaddr#5] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp `FUNC`_externtype{typeuse#33}((funcinst.`TYPE`_funcinst{deftype#4} : deftype <: typeuse))] +[visit_exp typeuse#33] +[visit_id typeuse#33] +[visit_exp ((funcinst.`TYPE`_funcinst{deftype#4} : deftype <: typeuse))] +[visit_exp (funcinst.`TYPE`_funcinst{deftype#4} : deftype <: typeuse)] +[visit_exp funcinst.`TYPE`_funcinst{deftype#4}] +[visit_exp funcinst] +[visit_id funcinst] +[visit_exp deftype#4] +[visit_id deftype#4] +[visit_exp (s.`FUNCS`_store{`funcinst*#5`}[a] = funcinst)] +[visit_exp s.`FUNCS`_store{`funcinst*#5`}[a]] +[visit_exp s.`FUNCS`_store{`funcinst*#5`}] +[visit_exp s] +[visit_id s] not free +[visit_exp `funcinst*#5`] +[visit_id funcinst*#5] +[visit_exp a] +[visit_id a] not free +[visit_exp funcinst] +[visit_id funcinst] not free +[check_dims] datatype*#21 deftype*#79 deftype*#80 elemtype*#21 externaddr funcidx*#58 globaltype*#22 localtype*#24 memtype*#36 resulttype*#32 resulttype?#29 s subtype*#20 tabletype*#29 tagtype*#21 xt xt' +[visit_exp s] +[visit_id s] +[visit_exp externaddr] +[visit_id externaddr] +[visit_exp xt] +[visit_id xt] +[visit_exp (s, externaddr, xt')] +[visit_exp s] +[visit_id s] not free +[visit_exp externaddr] +[visit_id externaddr] not free +[visit_exp xt'] +[visit_id xt'] +[visit_exp ({`TYPES`{`deftype*#79`} [], `RECS`{`subtype*#20`} [], `TAGS`{`tagtype*#21`} [], `GLOBALS`{`globaltype*#22`} [], `MEMS`{`memtype*#36`} [], `TABLES`{`tabletype*#29`} [], `FUNCS`{`deftype*#80`} [], `DATAS`{`datatype*#21`} [], `ELEMS`{`elemtype*#21`} [], `LOCALS`{`localtype*#24`} [], `LABELS`{`resulttype*#32`} [], `RETURN`{`resulttype?#29`} ?(), `REFS`{`funcidx*#58`} []}, xt', xt)] +[visit_exp {`TYPES`{`deftype*#79`} [], `RECS`{`subtype*#20`} [], `TAGS`{`tagtype*#21`} [], `GLOBALS`{`globaltype*#22`} [], `MEMS`{`memtype*#36`} [], `TABLES`{`tabletype*#29`} [], `FUNCS`{`deftype*#80`} [], `DATAS`{`datatype*#21`} [], `ELEMS`{`elemtype*#21`} [], `LOCALS`{`localtype*#24`} [], `LABELS`{`resulttype*#32`} [], `RETURN`{`resulttype?#29`} ?(), `REFS`{`funcidx*#58`} []}] +[visit_exp `deftype*#79`] +[visit_id deftype*#79] +[visit_exp []] +[visit_exp `subtype*#20`] +[visit_id subtype*#20] +[visit_exp []] +[visit_exp `tagtype*#21`] +[visit_id tagtype*#21] +[visit_exp []] +[visit_exp `globaltype*#22`] +[visit_id globaltype*#22] +[visit_exp []] +[visit_exp `memtype*#36`] +[visit_id memtype*#36] +[visit_exp []] +[visit_exp `tabletype*#29`] +[visit_id tabletype*#29] +[visit_exp []] +[visit_exp `deftype*#80`] +[visit_id deftype*#80] +[visit_exp []] +[visit_exp `datatype*#21`] +[visit_id datatype*#21] +[visit_exp []] +[visit_exp `elemtype*#21`] +[visit_id elemtype*#21] +[visit_exp []] +[visit_exp `localtype*#24`] +[visit_id localtype*#24] +[visit_exp []] +[visit_exp `resulttype*#32`] +[visit_id resulttype*#32] +[visit_exp []] +[visit_exp `resulttype?#29`] +[visit_id resulttype?#29] +[visit_exp ?()] +[visit_exp `funcidx*#58`] +[visit_id funcidx*#58] +[visit_exp []] +[visit_exp xt'] +[visit_id xt'] not free +[visit_exp xt] +[visit_id xt] not free +[check_dims] moduleinst valtype +DecD inst_valtype(moduleinst : moduleinst, valtype : valtype) : valtype +[visit_id moduleinst] not free +[visit_id valtype] not free +[check_dims] moduleinst reftype +DecD inst_reftype(moduleinst : moduleinst, reftype : reftype) : reftype +[visit_id moduleinst] not free +[visit_id reftype] not free +[check_dims] globaltype moduleinst +DecD inst_globaltype(moduleinst : moduleinst, globaltype : globaltype) : globaltype +[visit_id moduleinst] not free +[visit_id globaltype] not free +[check_dims] memtype moduleinst +DecD inst_memtype(moduleinst : moduleinst, memtype : memtype) : memtype +[visit_id moduleinst] not free +[visit_id memtype] not free +[check_dims] moduleinst tabletype +DecD inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype +[visit_id moduleinst] not free +[visit_id tabletype] not free +[check_dims] deftype*#81 dt moduleinst t +[visit_exp moduleinst] +[visit_id moduleinst] +[visit_exp t] +[visit_id t] +[visit_exp $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`})] +[visit_exp t] +[visit_id t] not free +[visit_exp (dt : deftype <: typeuse)*{dt <- `dt*`}] +[scope_enter dt] +[visit_exp (dt : deftype <: typeuse)] +[visit_exp dt] +[visit_id dt] not free +[visit_id dt] not free +[scope_exit dt] +[visit_exp `dt*`] +[visit_id dt*] no dims +[visit_id dt*] +[visit_exp (dt*{dt <- `dt*`} = moduleinst.`TYPES`_moduleinst{`deftype*#81`})] +[visit_exp dt*{dt <- `dt*`}] +[scope_enter dt] +[visit_exp dt] +[visit_id dt] not free +[visit_id dt] not free +[scope_exit dt] +[visit_exp `dt*`] +[visit_id dt*] not free +[visit_id dt*] no dims +[visit_exp moduleinst.`TYPES`_moduleinst{`deftype*#81`}] +[visit_exp moduleinst] +[visit_id moduleinst] not free +[visit_exp `deftype*#81`] +[visit_id deftype*#81] +=> + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + def $inst_valtype{moduleinst : moduleinst, t : valtype, `dt*` : deftype*, `deftype*#81` : deftype*}(moduleinst, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- if (dt*{dt <- `dt*`} = moduleinst.`TYPES`_moduleinst{`deftype*#81`}) +[check_dims] deftype*#82 dt moduleinst rt +[visit_exp moduleinst] +[visit_id moduleinst] +[visit_exp rt] +[visit_id rt] +[visit_exp $subst_all_reftype(rt, (dt : deftype <: typeuse)*{dt <- `dt*`})] +[visit_exp rt] +[visit_id rt] not free +[visit_exp (dt : deftype <: typeuse)*{dt <- `dt*`}] +[scope_enter dt] +[visit_exp (dt : deftype <: typeuse)] +[visit_exp dt] +[visit_id dt] not free +[visit_id dt] not free +[scope_exit dt] +[visit_exp `dt*`] +[visit_id dt*] no dims +[visit_id dt*] +[visit_exp (dt*{dt <- `dt*`} = moduleinst.`TYPES`_moduleinst{`deftype*#82`})] +[visit_exp dt*{dt <- `dt*`}] +[scope_enter dt] +[visit_exp dt] +[visit_id dt] not free +[visit_id dt] not free +[scope_exit dt] +[visit_exp `dt*`] +[visit_id dt*] not free +[visit_id dt*] no dims +[visit_exp moduleinst.`TYPES`_moduleinst{`deftype*#82`}] +[visit_exp moduleinst] +[visit_id moduleinst] not free +[visit_exp `deftype*#82`] +[visit_id deftype*#82] +=> + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + def $inst_reftype{moduleinst : moduleinst, rt : reftype, `dt*` : deftype*, `deftype*#82` : deftype*}(moduleinst, rt) = $subst_all_reftype(rt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- if (dt*{dt <- `dt*`} = moduleinst.`TYPES`_moduleinst{`deftype*#82`}) +[check_dims] deftype*#83 dt gt moduleinst +[visit_exp moduleinst] +[visit_id moduleinst] +[visit_exp gt] +[visit_id gt] +[visit_exp $subst_all_globaltype(gt, (dt : deftype <: typeuse)*{dt <- `dt*`})] +[visit_exp gt] +[visit_id gt] not free +[visit_exp (dt : deftype <: typeuse)*{dt <- `dt*`}] +[scope_enter dt] +[visit_exp (dt : deftype <: typeuse)] +[visit_exp dt] +[visit_id dt] not free +[visit_id dt] not free +[scope_exit dt] +[visit_exp `dt*`] +[visit_id dt*] no dims +[visit_id dt*] +[visit_exp (dt*{dt <- `dt*`} = moduleinst.`TYPES`_moduleinst{`deftype*#83`})] +[visit_exp dt*{dt <- `dt*`}] +[scope_enter dt] +[visit_exp dt] +[visit_id dt] not free +[visit_id dt] not free +[scope_exit dt] +[visit_exp `dt*`] +[visit_id dt*] not free +[visit_id dt*] no dims +[visit_exp moduleinst.`TYPES`_moduleinst{`deftype*#83`}] +[visit_exp moduleinst] +[visit_id moduleinst] not free +[visit_exp `deftype*#83`] +[visit_id deftype*#83] +=> + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + def $inst_globaltype{moduleinst : moduleinst, gt : globaltype, `dt*` : deftype*, `deftype*#83` : deftype*}(moduleinst, gt) = $subst_all_globaltype(gt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- if (dt*{dt <- `dt*`} = moduleinst.`TYPES`_moduleinst{`deftype*#83`}) +[check_dims] deftype*#84 dt moduleinst mt +[visit_exp moduleinst] +[visit_id moduleinst] +[visit_exp mt] +[visit_id mt] +[visit_exp $subst_all_memtype(mt, (dt : deftype <: typeuse)*{dt <- `dt*`})] +[visit_exp mt] +[visit_id mt] not free +[visit_exp (dt : deftype <: typeuse)*{dt <- `dt*`}] +[scope_enter dt] +[visit_exp (dt : deftype <: typeuse)] +[visit_exp dt] +[visit_id dt] not free +[visit_id dt] not free +[scope_exit dt] +[visit_exp `dt*`] +[visit_id dt*] no dims +[visit_id dt*] +[visit_exp (dt*{dt <- `dt*`} = moduleinst.`TYPES`_moduleinst{`deftype*#84`})] +[visit_exp dt*{dt <- `dt*`}] +[scope_enter dt] +[visit_exp dt] +[visit_id dt] not free +[visit_id dt] not free +[scope_exit dt] +[visit_exp `dt*`] +[visit_id dt*] not free +[visit_id dt*] no dims +[visit_exp moduleinst.`TYPES`_moduleinst{`deftype*#84`}] +[visit_exp moduleinst] +[visit_id moduleinst] not free +[visit_exp `deftype*#84`] +[visit_id deftype*#84] +=> + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + def $inst_memtype{moduleinst : moduleinst, mt : memtype, `dt*` : deftype*, `deftype*#84` : deftype*}(moduleinst, mt) = $subst_all_memtype(mt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- if (dt*{dt <- `dt*`} = moduleinst.`TYPES`_moduleinst{`deftype*#84`}) +[check_dims] deftype*#85 dt moduleinst tt +[visit_exp moduleinst] +[visit_id moduleinst] +[visit_exp tt] +[visit_id tt] +[visit_exp $subst_all_tabletype(tt, (dt : deftype <: typeuse)*{dt <- `dt*`})] +[visit_exp tt] +[visit_id tt] not free +[visit_exp (dt : deftype <: typeuse)*{dt <- `dt*`}] +[scope_enter dt] +[visit_exp (dt : deftype <: typeuse)] +[visit_exp dt] +[visit_id dt] not free +[visit_id dt] not free +[scope_exit dt] +[visit_exp `dt*`] +[visit_id dt*] no dims +[visit_id dt*] +[visit_exp (dt*{dt <- `dt*`} = moduleinst.`TYPES`_moduleinst{`deftype*#85`})] +[visit_exp dt*{dt <- `dt*`}] +[scope_enter dt] +[visit_exp dt] +[visit_id dt] not free +[visit_id dt] not free +[scope_exit dt] +[visit_exp `dt*`] +[visit_id dt*] not free +[visit_id dt*] no dims +[visit_exp moduleinst.`TYPES`_moduleinst{`deftype*#85`}] +[visit_exp moduleinst] +[visit_id moduleinst] not free +[visit_exp `deftype*#85`] +[visit_id deftype*#85] +=> + ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + def $inst_tabletype{moduleinst : moduleinst, tt : tabletype, `dt*` : deftype*, `deftype*#85` : deftype*}(moduleinst, tt) = $subst_all_tabletype(tt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- if (dt*{dt <- `dt*`} = moduleinst.`TYPES`_moduleinst{`deftype*#85`}) +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] instr instr' instr*#27 instr*#39 state#11 state#23 z +[visit_exp `%;%`_config{state#11, `instr*#27`}(z, instr*{instr <- `instr*`})] +[visit_exp state#11] +[visit_id state#11] +[visit_exp `instr*#27`] +[visit_id instr*#27] +[visit_exp (z, instr*{instr <- `instr*`})] +[visit_exp z] +[visit_id z] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] no dims +[visit_id instr*] +[visit_exp `%;%`_config{state#23, `instr*#39`}(z, instr'*{instr' <- `instr'*`})] +[visit_exp state#23] +[visit_id state#23] +[visit_exp `instr*#39`] +[visit_id instr*#39] +[visit_exp (z, instr'*{instr' <- `instr'*`})] +[visit_exp z] +[visit_id z] not free +[visit_exp instr'*{instr' <- `instr'*`}] +[scope_enter instr'] +[visit_exp instr'] +[visit_id instr'] not free +[visit_id instr'] not free +[scope_exit instr'] +[visit_exp `instr'*`] +[visit_id instr'*] no dims +[visit_id instr'*] +[visit_exp (instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`})] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] not free +[visit_id instr*] no dims +[visit_exp instr'*{instr' <- `instr'*`}] +[scope_enter instr'] +[visit_exp instr'] +[visit_id instr'] not free +[visit_id instr'] not free +[scope_exit instr'] +[visit_exp `instr'*`] +[visit_id instr'*] not free +[visit_id instr'*] no dims +[check_dims] instr instr' instr*#51 instr*#63 instr*#75 state#35 state#47 state#59 z +[visit_exp `%;%`_config{state#35, `instr*#51`}(z, instr*{instr <- `instr*`})] +[visit_exp state#35] +[visit_id state#35] +[visit_exp `instr*#51`] +[visit_id instr*#51] +[visit_exp (z, instr*{instr <- `instr*`})] +[visit_exp z] +[visit_id z] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] no dims +[visit_id instr*] +[visit_exp `%;%`_config{state#47, `instr*#63`}(z, instr'*{instr' <- `instr'*`})] +[visit_exp state#47] +[visit_id state#47] +[visit_exp `instr*#63`] +[visit_id instr*#63] +[visit_exp (z, instr'*{instr' <- `instr'*`})] +[visit_exp z] +[visit_id z] not free +[visit_exp instr'*{instr' <- `instr'*`}] +[scope_enter instr'] +[visit_exp instr'] +[visit_id instr'] not free +[visit_id instr'] not free +[scope_exit instr'] +[visit_exp `instr'*`] +[visit_id instr'*] no dims +[visit_id instr'*] +[visit_exp (`%;%`_config{state#59, `instr*#75`}(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`})] +[visit_exp `%;%`_config{state#59, `instr*#75`}(z, instr*{instr <- `instr*`})] +[visit_exp state#59] +[visit_id state#59] +[visit_exp `instr*#75`] +[visit_id instr*#75] +[visit_exp (z, instr*{instr <- `instr*`})] +[visit_exp z] +[visit_id z] not free +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] not free +[visit_id instr*] no dims +[visit_exp instr'*{instr' <- `instr'*`}] +[scope_enter instr'] +[visit_exp instr'] +[visit_id instr'] not free +[visit_id instr'] not free +[scope_exit instr'] +[visit_exp `instr'*`] +[visit_id instr'*] not free +[visit_id instr'*] no dims +[check_dims] instr instr*#87 instr*#99 state#71 state#83 z +[visit_exp `%;%`_config{state#71, `instr*#87`}(z, instr*{instr <- `instr*`})] +[visit_exp state#71] +[visit_id state#71] +[visit_exp `instr*#87`] +[visit_id instr*#87] +[visit_exp (z, instr*{instr <- `instr*`})] +[visit_exp z] +[visit_id z] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] no dims +[visit_id instr*] +[visit_exp `%;%`_config{state#83, `instr*#99`}(z, instr*{instr <- `instr*`})] +[visit_exp state#83] +[visit_id state#83] +[visit_exp `instr*#99`] +[visit_id instr*#99] +[visit_exp (z, instr*{instr <- `instr*`})] +[visit_exp z] +[visit_id z] not free +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] not free +[visit_id instr*] no dims +[check_dims] instr instr' instr'' instr*#111 instr*#123 instr*#135 instr*#147 instr*#159 instr*#171 state#107 state#119 state#131 state#143 state#155 state#95 z z' z'' +[visit_exp `%;%`_config{state#95, `instr*#111`}(z, instr*{instr <- `instr*`})] +[visit_exp state#95] +[visit_id state#95] +[visit_exp `instr*#111`] +[visit_id instr*#111] +[visit_exp (z, instr*{instr <- `instr*`})] +[visit_exp z] +[visit_id z] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] no dims +[visit_id instr*] +[visit_exp `%;%`_config{state#107, `instr*#123`}(z'', instr''*{instr'' <- `instr''*`})] +[visit_exp state#107] +[visit_id state#107] +[visit_exp `instr*#123`] +[visit_id instr*#123] +[visit_exp (z'', instr''*{instr'' <- `instr''*`})] +[visit_exp z''] +[visit_id z''] +[visit_exp instr''*{instr'' <- `instr''*`}] +[scope_enter instr''] +[visit_exp instr''] +[visit_id instr''] not free +[visit_id instr''] not free +[scope_exit instr''] +[visit_exp `instr''*`] +[visit_id instr''*] no dims +[visit_id instr''*] +[visit_exp (`%;%`_config{state#119, `instr*#135`}(z, instr*{instr <- `instr*`}), `%;%`_config{state#131, `instr*#147`}(z', instr'*{instr' <- `instr'*`}))] +[visit_exp `%;%`_config{state#119, `instr*#135`}(z, instr*{instr <- `instr*`})] +[visit_exp state#119] +[visit_id state#119] +[visit_exp `instr*#135`] +[visit_id instr*#135] +[visit_exp (z, instr*{instr <- `instr*`})] +[visit_exp z] +[visit_id z] not free +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] not free +[visit_id instr*] no dims +[visit_exp `%;%`_config{state#131, `instr*#147`}(z', instr'*{instr' <- `instr'*`})] +[visit_exp state#131] +[visit_id state#131] +[visit_exp `instr*#147`] +[visit_id instr*#147] +[visit_exp (z', instr'*{instr' <- `instr'*`})] +[visit_exp z'] +[visit_id z'] +[visit_exp instr'*{instr' <- `instr'*`}] +[scope_enter instr'] +[visit_exp instr'] +[visit_id instr'] not free +[visit_id instr'] not free +[scope_exit instr'] +[visit_exp `instr'*`] +[visit_id instr'*] no dims +[visit_id instr'*] +[visit_exp (`%;%`_config{state#143, `instr*#159`}(z', instr'*{instr' <- `instr'*`}), `%;%`_config{state#155, `instr*#171`}(z'', instr''*{instr'' <- `instr''*`}))] +[visit_exp `%;%`_config{state#143, `instr*#159`}(z', instr'*{instr' <- `instr'*`})] +[visit_exp state#143] +[visit_id state#143] +[visit_exp `instr*#159`] +[visit_id instr*#159] +[visit_exp (z', instr'*{instr' <- `instr'*`})] +[visit_exp z'] +[visit_id z'] not free +[visit_exp instr'*{instr' <- `instr'*`}] +[scope_enter instr'] +[visit_exp instr'] +[visit_id instr'] not free +[visit_id instr'] not free +[scope_exit instr'] +[visit_exp `instr'*`] +[visit_id instr'*] not free +[visit_id instr'*] no dims +[visit_exp `%;%`_config{state#155, `instr*#171`}(z'', instr''*{instr'' <- `instr''*`})] +[visit_exp state#155] +[visit_id state#155] +[visit_exp `instr*#171`] +[visit_id instr*#171] +[visit_exp (z'', instr''*{instr'' <- `instr''*`})] +[visit_exp z''] +[visit_id z''] not free +[visit_exp instr''*{instr'' <- `instr''*`}] +[scope_enter instr''] +[visit_exp instr''] +[visit_id instr''] not free +[visit_id instr''] not free +[scope_exit instr''] +[visit_exp `instr''*`] +[visit_id instr''*] not free +[visit_id instr''*] no dims +[check_dims] instr instr' instr*#183 instr*#195 instr*#207 instr*#219 instr_1 state#167 state#179 state#191 state#203 val z z' +[visit_exp `%;%`_config{state#167, `instr*#183`}(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})] +[visit_exp state#167] +[visit_id state#167] +[visit_exp `instr*#183`] +[visit_id instr*#183] +[visit_exp (z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})] +[visit_exp z] +[visit_id z] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}] +[visit_exp (val : val <: instr)*{val <- `val*`}] +[scope_enter val] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp `val*`] +[visit_id val*] no dims +[visit_id val*] +[visit_exp instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] no dims +[visit_id instr*] +[visit_exp instr_1*{instr_1 <- `instr_1*`}] +[scope_enter instr_1] +[visit_exp instr_1] +[visit_id instr_1] not free +[visit_id instr_1] not free +[scope_exit instr_1] +[visit_exp `instr_1*`] +[visit_id instr_1*] no dims +[visit_id instr_1*] +[visit_exp `%;%`_config{state#179, `instr*#195`}(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})] +[visit_exp state#179] +[visit_id state#179] +[visit_exp `instr*#195`] +[visit_id instr*#195] +[visit_exp (z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})] +[visit_exp z'] +[visit_id z'] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`}] +[visit_exp (val : val <: instr)*{val <- `val*`}] +[scope_enter val] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp `val*`] +[visit_id val*] not free +[visit_id val*] no dims +[visit_exp instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`}] +[visit_exp instr'*{instr' <- `instr'*`}] +[scope_enter instr'] +[visit_exp instr'] +[visit_id instr'] not free +[visit_id instr'] not free +[scope_exit instr'] +[visit_exp `instr'*`] +[visit_id instr'*] no dims +[visit_id instr'*] +[visit_exp instr_1*{instr_1 <- `instr_1*`}] +[scope_enter instr_1] +[visit_exp instr_1] +[visit_id instr_1] not free +[visit_id instr_1] not free +[scope_exit instr_1] +[visit_exp `instr_1*`] +[visit_id instr_1*] not free +[visit_id instr_1*] no dims +[visit_exp (`%;%`_config{state#191, `instr*#207`}(z, instr*{instr <- `instr*`}), `%;%`_config{state#203, `instr*#219`}(z', instr'*{instr' <- `instr'*`}))] +[visit_exp `%;%`_config{state#191, `instr*#207`}(z, instr*{instr <- `instr*`})] +[visit_exp state#191] +[visit_id state#191] +[visit_exp `instr*#207`] +[visit_id instr*#207] +[visit_exp (z, instr*{instr <- `instr*`})] +[visit_exp z] +[visit_id z] not free +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] not free +[visit_id instr*] no dims +[visit_exp `%;%`_config{state#203, `instr*#219`}(z', instr'*{instr' <- `instr'*`})] +[visit_exp state#203] +[visit_id state#203] +[visit_exp `instr*#219`] +[visit_id instr*#219] +[visit_exp (z', instr'*{instr' <- `instr'*`})] +[visit_exp z'] +[visit_id z'] not free +[visit_exp instr'*{instr' <- `instr'*`}] +[scope_enter instr'] +[visit_exp instr'] +[visit_id instr'] not free +[visit_id instr'] not free +[scope_exit instr'] +[visit_exp `instr'*`] +[visit_id instr'*] not free +[visit_id instr'*] no dims +[visit_exp ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= []))] +[visit_exp (val*{val <- `val*`} =/= [])] +[visit_exp val*{val <- `val*`}] +[scope_enter val] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp `val*`] +[visit_id val*] not free +[visit_id val*] no dims +[visit_exp []] +[visit_exp (instr_1*{instr_1 <- `instr_1*`} =/= [])] +[visit_exp instr_1*{instr_1 <- `instr_1*`}] +[scope_enter instr_1] +[visit_exp instr_1] +[visit_id instr_1] not free +[visit_id instr_1] not free +[scope_exit instr_1] +[visit_exp `instr_1*`] +[visit_id instr_1*] not free +[visit_id instr_1*] no dims +[visit_exp []] +[check_dims] instr instr' instr*#231 instr*#233 instr*#246 instr*#248 instr*#261 instr*#273 instr_0 n n#1127 n#1129 state#215 state#227 state#239 state#251 z z' +[visit_exp `%;%`_config{state#215, `instr*#231`}(z, [`LABEL_%{%}%`_instr{n#1127, `instr*#233`}(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])] +[visit_exp state#215] +[visit_id state#215] +[visit_exp `instr*#231`] +[visit_id instr*#231] +[visit_exp (z, [`LABEL_%{%}%`_instr{n#1127, `instr*#233`}(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])] +[visit_exp z] +[visit_id z] +[visit_exp [`LABEL_%{%}%`_instr{n#1127, `instr*#233`}(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]] +[visit_exp `LABEL_%{%}%`_instr{n#1127, `instr*#233`}(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})] +[visit_exp n#1127] +[visit_id n#1127] +[visit_exp `instr*#233`] +[visit_id instr*#233] +[visit_exp (n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})] +[visit_exp n] +[visit_id n] +[visit_exp instr_0*{instr_0 <- `instr_0*`}] +[scope_enter instr_0] +[visit_exp instr_0] +[visit_id instr_0] not free +[visit_id instr_0] not free +[scope_exit instr_0] +[visit_exp `instr_0*`] +[visit_id instr_0*] no dims +[visit_id instr_0*] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] no dims +[visit_id instr*] +[visit_exp `%;%`_config{state#227, `instr*#246`}(z', [`LABEL_%{%}%`_instr{n#1129, `instr*#248`}(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])] +[visit_exp state#227] +[visit_id state#227] +[visit_exp `instr*#246`] +[visit_id instr*#246] +[visit_exp (z', [`LABEL_%{%}%`_instr{n#1129, `instr*#248`}(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])] +[visit_exp z'] +[visit_id z'] +[visit_exp [`LABEL_%{%}%`_instr{n#1129, `instr*#248`}(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})]] +[visit_exp `LABEL_%{%}%`_instr{n#1129, `instr*#248`}(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})] +[visit_exp n#1129] +[visit_id n#1129] +[visit_exp `instr*#248`] +[visit_id instr*#248] +[visit_exp (n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})] +[visit_exp n] +[visit_id n] not free +[visit_exp instr_0*{instr_0 <- `instr_0*`}] +[scope_enter instr_0] +[visit_exp instr_0] +[visit_id instr_0] not free +[visit_id instr_0] not free +[scope_exit instr_0] +[visit_exp `instr_0*`] +[visit_id instr_0*] not free +[visit_id instr_0*] no dims +[visit_exp instr'*{instr' <- `instr'*`}] +[scope_enter instr'] +[visit_exp instr'] +[visit_id instr'] not free +[visit_id instr'] not free +[scope_exit instr'] +[visit_exp `instr'*`] +[visit_id instr'*] no dims +[visit_id instr'*] +[visit_exp (`%;%`_config{state#239, `instr*#261`}(z, instr*{instr <- `instr*`}), `%;%`_config{state#251, `instr*#273`}(z', instr'*{instr' <- `instr'*`}))] +[visit_exp `%;%`_config{state#239, `instr*#261`}(z, instr*{instr <- `instr*`})] +[visit_exp state#239] +[visit_id state#239] +[visit_exp `instr*#261`] +[visit_id instr*#261] +[visit_exp (z, instr*{instr <- `instr*`})] +[visit_exp z] +[visit_id z] not free +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] not free +[visit_id instr*] no dims +[visit_exp `%;%`_config{state#251, `instr*#273`}(z', instr'*{instr' <- `instr'*`})] +[visit_exp state#251] +[visit_id state#251] +[visit_exp `instr*#273`] +[visit_id instr*#273] +[visit_exp (z', instr'*{instr' <- `instr'*`})] +[visit_exp z'] +[visit_id z'] not free +[visit_exp instr'*{instr' <- `instr'*`}] +[scope_enter instr'] +[visit_exp instr'] +[visit_id instr'] not free +[visit_id instr'] not free +[scope_exit instr'] +[visit_exp `instr'*`] +[visit_id instr'*] not free +[visit_id instr'*] no dims +[check_dims] f f' f'' frame#725 frame#727 frame#739 frame#741 frame#753 frame#765 instr instr' instr*#285 instr*#287 instr*#299 instr*#301 instr*#313 instr*#325 n n#1131 n#1133 s s' state#263 state#275 state#287 state#299 store#725 store#737 store#749 store#761 +[visit_exp `%;%`_config{state#263, `instr*#285`}(`%;%`_state{store#725, frame#725}(s, f), [`FRAME_%{%}%`_instr{n#1131, frame#727, `instr*#287`}(n, f', instr*{instr <- `instr*`})])] +[visit_exp state#263] +[visit_id state#263] +[visit_exp `instr*#285`] +[visit_id instr*#285] +[visit_exp (`%;%`_state{store#725, frame#725}(s, f), [`FRAME_%{%}%`_instr{n#1131, frame#727, `instr*#287`}(n, f', instr*{instr <- `instr*`})])] +[visit_exp `%;%`_state{store#725, frame#725}(s, f)] +[visit_exp store#725] +[visit_id store#725] +[visit_exp frame#725] +[visit_id frame#725] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp [`FRAME_%{%}%`_instr{n#1131, frame#727, `instr*#287`}(n, f', instr*{instr <- `instr*`})]] +[visit_exp `FRAME_%{%}%`_instr{n#1131, frame#727, `instr*#287`}(n, f', instr*{instr <- `instr*`})] +[visit_exp n#1131] +[visit_id n#1131] +[visit_exp frame#727] +[visit_id frame#727] +[visit_exp `instr*#287`] +[visit_id instr*#287] +[visit_exp (n, f', instr*{instr <- `instr*`})] +[visit_exp n] +[visit_id n] +[visit_exp f'] +[visit_id f'] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] no dims +[visit_id instr*] +[visit_exp `%;%`_config{state#275, `instr*#299`}(`%;%`_state{store#737, frame#739}(s', f), [`FRAME_%{%}%`_instr{n#1133, frame#741, `instr*#301`}(n, f'', instr'*{instr' <- `instr'*`})])] +[visit_exp state#275] +[visit_id state#275] +[visit_exp `instr*#299`] +[visit_id instr*#299] +[visit_exp (`%;%`_state{store#737, frame#739}(s', f), [`FRAME_%{%}%`_instr{n#1133, frame#741, `instr*#301`}(n, f'', instr'*{instr' <- `instr'*`})])] +[visit_exp `%;%`_state{store#737, frame#739}(s', f)] +[visit_exp store#737] +[visit_id store#737] +[visit_exp frame#739] +[visit_id frame#739] +[visit_exp (s', f)] +[visit_exp s'] +[visit_id s'] +[visit_exp f] +[visit_id f] not free +[visit_exp [`FRAME_%{%}%`_instr{n#1133, frame#741, `instr*#301`}(n, f'', instr'*{instr' <- `instr'*`})]] +[visit_exp `FRAME_%{%}%`_instr{n#1133, frame#741, `instr*#301`}(n, f'', instr'*{instr' <- `instr'*`})] +[visit_exp n#1133] +[visit_id n#1133] +[visit_exp frame#741] +[visit_id frame#741] +[visit_exp `instr*#301`] +[visit_id instr*#301] +[visit_exp (n, f'', instr'*{instr' <- `instr'*`})] +[visit_exp n] +[visit_id n] not free +[visit_exp f''] +[visit_id f''] +[visit_exp instr'*{instr' <- `instr'*`}] +[scope_enter instr'] +[visit_exp instr'] +[visit_id instr'] not free +[visit_id instr'] not free +[scope_exit instr'] +[visit_exp `instr'*`] +[visit_id instr'*] no dims +[visit_id instr'*] +[visit_exp (`%;%`_config{state#287, `instr*#313`}(`%;%`_state{store#749, frame#753}(s, f'), instr*{instr <- `instr*`}), `%;%`_config{state#299, `instr*#325`}(`%;%`_state{store#761, frame#765}(s', f''), instr'*{instr' <- `instr'*`}))] +[visit_exp `%;%`_config{state#287, `instr*#313`}(`%;%`_state{store#749, frame#753}(s, f'), instr*{instr <- `instr*`})] +[visit_exp state#287] +[visit_id state#287] +[visit_exp `instr*#313`] +[visit_id instr*#313] +[visit_exp (`%;%`_state{store#749, frame#753}(s, f'), instr*{instr <- `instr*`})] +[visit_exp `%;%`_state{store#749, frame#753}(s, f')] +[visit_exp store#749] +[visit_id store#749] +[visit_exp frame#753] +[visit_id frame#753] +[visit_exp (s, f')] +[visit_exp s] +[visit_id s] not free +[visit_exp f'] +[visit_id f'] not free +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] not free +[visit_id instr*] no dims +[visit_exp `%;%`_config{state#299, `instr*#325`}(`%;%`_state{store#761, frame#765}(s', f''), instr'*{instr' <- `instr'*`})] +[visit_exp state#299] +[visit_id state#299] +[visit_exp `instr*#325`] +[visit_id instr*#325] +[visit_exp (`%;%`_state{store#761, frame#765}(s', f''), instr'*{instr' <- `instr'*`})] +[visit_exp `%;%`_state{store#761, frame#765}(s', f'')] +[visit_exp store#761] +[visit_id store#761] +[visit_exp frame#765] +[visit_id frame#765] +[visit_exp (s', f'')] +[visit_exp s'] +[visit_id s'] not free +[visit_exp f''] +[visit_id f''] not free +[visit_exp instr'*{instr' <- `instr'*`}] +[scope_enter instr'] +[visit_exp instr'] +[visit_id instr'] not free +[visit_id instr'] not free +[scope_exit instr'] +[visit_exp `instr'*`] +[visit_id instr'*] not free +[visit_id instr'*] no dims +[check_dims] +[visit_exp [`UNREACHABLE`_instr]] +[visit_exp `UNREACHABLE`_instr] +[visit_exp ()] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[check_dims] +[visit_exp [`NOP`_instr]] +[visit_exp `NOP`_instr] +[visit_exp ()] +[visit_exp []] +[check_dims] val +[visit_exp [(val : val <: instr) `DROP`_instr]] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] +[visit_exp `DROP`_instr] +[visit_exp ()] +[visit_exp []] +[check_dims] c i#31733 numtype#59 t val_1 val_2 valtype*?#7 +[visit_exp [(val_1 : val <: instr) (val_2 : val <: instr) `CONST`_instr{numtype#59}(`I32`_numtype, c) `SELECT`_instr{`valtype*?#7`}(t*{t <- `t*`}?{`t*` <- `t*?`})]] +[visit_exp (val_1 : val <: instr)] +[visit_exp val_1] +[visit_id val_1] +[visit_exp (val_2 : val <: instr)] +[visit_exp val_2] +[visit_id val_2] +[visit_exp `CONST`_instr{numtype#59}(`I32`_numtype, c)] +[visit_exp numtype#59] +[visit_id numtype#59] +[visit_exp (`I32`_numtype, c)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp c] +[visit_id c] +[visit_exp `SELECT`_instr{`valtype*?#7`}(t*{t <- `t*`}?{`t*` <- `t*?`})] +[visit_exp `valtype*?#7`] +[visit_id valtype*?#7] +[visit_exp (t*{t <- `t*`}?{`t*` <- `t*?`})] +[visit_exp t*{t <- `t*`}?{`t*` <- `t*?`}] +[scope_enter t*] +[visit_exp t*{t <- `t*`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] not free +[visit_id t*] no dims +[visit_id t*] not free +[visit_id t*] no dims +[scope_exit t*] +[visit_exp `t*?`] +[visit_id t*?] no dims +[visit_id t*?] +[visit_exp [(val_1 : val <: instr)]] +[visit_exp (val_1 : val <: instr)] +[visit_exp val_1] +[visit_id val_1] not free +[visit_exp (c!`%`_num_{i#31733}.0 =/= 0)] +[visit_exp c!`%`_num_{i#31733}.0] +[visit_exp c!`%`_num_{i#31733}] +[visit_exp c] +[visit_id c] not free +[visit_exp i#31733] +[visit_id i#31733] +[visit_exp 0] +[check_dims] c i#31757 numtype#61 t val_1 val_2 valtype*?#9 +[visit_exp [(val_1 : val <: instr) (val_2 : val <: instr) `CONST`_instr{numtype#61}(`I32`_numtype, c) `SELECT`_instr{`valtype*?#9`}(t*{t <- `t*`}?{`t*` <- `t*?`})]] +[visit_exp (val_1 : val <: instr)] +[visit_exp val_1] +[visit_id val_1] +[visit_exp (val_2 : val <: instr)] +[visit_exp val_2] +[visit_id val_2] +[visit_exp `CONST`_instr{numtype#61}(`I32`_numtype, c)] +[visit_exp numtype#61] +[visit_id numtype#61] +[visit_exp (`I32`_numtype, c)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp c] +[visit_id c] +[visit_exp `SELECT`_instr{`valtype*?#9`}(t*{t <- `t*`}?{`t*` <- `t*?`})] +[visit_exp `valtype*?#9`] +[visit_id valtype*?#9] +[visit_exp (t*{t <- `t*`}?{`t*` <- `t*?`})] +[visit_exp t*{t <- `t*`}?{`t*` <- `t*?`}] +[scope_enter t*] +[visit_exp t*{t <- `t*`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] not free +[visit_id t*] no dims +[visit_id t*] not free +[visit_id t*] no dims +[scope_exit t*] +[visit_exp `t*?`] +[visit_id t*?] no dims +[visit_id t*?] +[visit_exp [(val_2 : val <: instr)]] +[visit_exp (val_2 : val <: instr)] +[visit_exp val_2] +[visit_id val_2] not free +[visit_exp (c!`%`_num_{i#31757}.0 = 0)] +[visit_exp c!`%`_num_{i#31757}.0] +[visit_exp c!`%`_num_{i#31757}] +[visit_exp c] +[visit_id c] not free +[visit_exp i#31757] +[visit_id i#31757] +[visit_exp 0] +[check_dims] blocktype state +DecD blocktype_(state : state, blocktype : blocktype) : instrtype +[visit_id state] not free +[visit_id blocktype] not free +[check_dims] X*#12215 X*#12228 X*#12241 X*#12292 localidx*#1757 resulttype#2914 resulttype#2934 t_1 t_2 typeidx#1551 x z +[visit_exp z] +[visit_id z] +[visit_exp `_IDX`_blocktype{typeidx#1551}(x)] +[visit_exp typeidx#1551] +[visit_id typeidx#1551] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%->_%%`_instrtype{resulttype#2934, `localidx*#1757`}(`%`_resulttype{`X*#12241`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#12292`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#2934] +[visit_id resulttype#2934] +[visit_exp `localidx*#1757`] +[visit_id localidx*#1757] +[visit_exp (`%`_resulttype{`X*#12241`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#12292`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#12241`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#12241`] +[visit_id X*#12241] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] no dims +[visit_id t_1*] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#12292`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#12292`] +[visit_id X*#12292] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] no dims +[visit_id t_2*] +[visit_exp ($type(z, x), `FUNC%->%`_comptype{resulttype#2914}(`%`_resulttype{`X*#12215`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#12228`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp $type(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `FUNC%->%`_comptype{resulttype#2914}(`%`_resulttype{`X*#12215`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#12228`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#2914] +[visit_id resulttype#2914] +[visit_exp (`%`_resulttype{`X*#12215`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#12228`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#12215`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#12215`] +[visit_id X*#12215] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] not free +[visit_id t_1*] no dims +[visit_exp `%`_resulttype{`X*#12228`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#12228`] +[visit_id X*#12228] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] not free +[visit_id t_2*] no dims +=> + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + def $blocktype_{z : state, typeidx#1551 : typeidx, x : idx, resulttype#2934 : resulttype, `localidx*#1757` : localidx*, `X*#12241` : valtype*, `t_1*` : valtype*, `X*#12292` : valtype*, `t_2*` : valtype*, resulttype#2914 : resulttype, `X*#12215` : valtype*, `X*#12228` : valtype*}(z, `_IDX`_blocktype{typeidx#1551}(x)) = `%->_%%`_instrtype{resulttype#2934, `localidx*#1757`}(`%`_resulttype{`X*#12241`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#12292`}(t_2*{t_2 <- `t_2*`})) + -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype{resulttype#2914}(`%`_resulttype{`X*#12215`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#12228`}(t_2*{t_2 <- `t_2*`}))) +[check_dims] X*#12313 X*#12362 localidx*#1769 resulttype#2954 t valtype?#5 z +[visit_exp z] +[visit_id z] +[visit_exp `_RESULT`_blocktype{`valtype?#5`}(t?{t <- `t?`})] +[visit_exp `valtype?#5`] +[visit_id valtype?#5] +[visit_exp (t?{t <- `t?`})] +[visit_exp t?{t <- `t?`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t?`] +[visit_id t?] no dims +[visit_id t?] +[visit_exp `%->_%%`_instrtype{resulttype#2954, `localidx*#1769`}(`%`_resulttype{`X*#12313`}([]), [], `%`_resulttype{`X*#12362`}(lift(t?{t <- `t?`})))] +[visit_exp resulttype#2954] +[visit_id resulttype#2954] +[visit_exp `localidx*#1769`] +[visit_id localidx*#1769] +[visit_exp (`%`_resulttype{`X*#12313`}([]), [], `%`_resulttype{`X*#12362`}(lift(t?{t <- `t?`})))] +[visit_exp `%`_resulttype{`X*#12313`}([])] +[visit_exp `X*#12313`] +[visit_id X*#12313] +[visit_exp ([])] +[visit_exp []] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#12362`}(lift(t?{t <- `t?`}))] +[visit_exp `X*#12362`] +[visit_id X*#12362] +[visit_exp (lift(t?{t <- `t?`}))] +[visit_exp lift(t?{t <- `t?`})] +[visit_exp t?{t <- `t?`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t?`] +[visit_id t?] not free +[visit_id t?] no dims +=> + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + def $blocktype_{z : state, `valtype?#5` : valtype?, `t?` : valtype?, resulttype#2954 : resulttype, `localidx*#1769` : localidx*, `X*#12313` : valtype*, `X*#12362` : valtype*}(z, `_RESULT`_blocktype{`valtype?#5`}(t?{t <- `t?`})) = `%->_%%`_instrtype{resulttype#2954, `localidx*#1769`}(`%`_resulttype{`X*#12313`}([]), [], `%`_resulttype{`X*#12362`}(lift(t?{t <- `t?`}))) +[check_dims] X*#12373 X*#12424 blocktype#15 bt instr instr*#337 instr*#339 instr*#341 localidx*#1781 m n n#1141 resulttype#2974 state#311 t_1 t_2 val z +[visit_exp `%;%`_config{state#311, `instr*#337`}(z, (val : val <: instr)^m{val <- `val*`} ++ [`BLOCK`_instr{blocktype#15, `instr*#339`}(bt, instr*{instr <- `instr*`})])] +[visit_exp state#311] +[visit_id state#311] +[visit_exp `instr*#337`] +[visit_id instr*#337] +[visit_exp (z, (val : val <: instr)^m{val <- `val*`} ++ [`BLOCK`_instr{blocktype#15, `instr*#339`}(bt, instr*{instr <- `instr*`})])] +[visit_exp z] +[visit_id z] +[visit_exp (val : val <: instr)^m{val <- `val*`} ++ [`BLOCK`_instr{blocktype#15, `instr*#339`}(bt, instr*{instr <- `instr*`})]] +[visit_exp (val : val <: instr)^m{val <- `val*`}] +[scope_enter val] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp m] +[visit_id m] +[visit_exp `val*`] +[visit_id val*] no dims +[visit_id val*] +[visit_exp [`BLOCK`_instr{blocktype#15, `instr*#339`}(bt, instr*{instr <- `instr*`})]] +[visit_exp `BLOCK`_instr{blocktype#15, `instr*#339`}(bt, instr*{instr <- `instr*`})] +[visit_exp blocktype#15] +[visit_id blocktype#15] +[visit_exp `instr*#339`] +[visit_id instr*#339] +[visit_exp (bt, instr*{instr <- `instr*`})] +[visit_exp bt] +[visit_id bt] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] no dims +[visit_id instr*] +[visit_exp [`LABEL_%{%}%`_instr{n#1141, `instr*#341`}(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]] +[visit_exp `LABEL_%{%}%`_instr{n#1141, `instr*#341`}(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})] +[visit_exp n#1141] +[visit_id n#1141] +[visit_exp `instr*#341`] +[visit_id instr*#341] +[visit_exp (n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})] +[visit_exp n] +[visit_id n] +[visit_exp []] +[visit_exp (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`}] +[visit_exp (val : val <: instr)^m{val <- `val*`}] +[scope_enter val] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp m] +[visit_id m] not free +[visit_exp `val*`] +[visit_id val*] not free +[visit_id val*] no dims +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] not free +[visit_id instr*] no dims +[visit_exp ($blocktype_(z, bt) = `%->_%%`_instrtype{resulttype#2974, `localidx*#1781`}(`%`_resulttype{`X*#12373`}(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#12424`}(t_2^n{t_2 <- `t_2*`})))] +[visit_exp $blocktype_(z, bt)] +[visit_exp z] +[visit_id z] not free +[visit_exp bt] +[visit_id bt] not free +[visit_exp `%->_%%`_instrtype{resulttype#2974, `localidx*#1781`}(`%`_resulttype{`X*#12373`}(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#12424`}(t_2^n{t_2 <- `t_2*`}))] +[visit_exp resulttype#2974] +[visit_id resulttype#2974] +[visit_exp `localidx*#1781`] +[visit_id localidx*#1781] +[visit_exp (`%`_resulttype{`X*#12373`}(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#12424`}(t_2^n{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#12373`}(t_1^m{t_1 <- `t_1*`})] +[visit_exp `X*#12373`] +[visit_id X*#12373] +[visit_exp (t_1^m{t_1 <- `t_1*`})] +[visit_exp t_1^m{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp m] +[visit_id m] not free +[visit_exp `t_1*`] +[visit_id t_1*] no dims +[visit_id t_1*] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#12424`}(t_2^n{t_2 <- `t_2*`})] +[visit_exp `X*#12424`] +[visit_id X*#12424] +[visit_exp (t_2^n{t_2 <- `t_2*`})] +[visit_exp t_2^n{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp n] +[visit_id n] not free +[visit_exp `t_2*`] +[visit_id t_2*] no dims +[visit_id t_2*] +[check_dims] X*#12435 X*#12486 blocktype#17 blocktype#19 bt instr instr*#354 instr*#356 instr*#358 instr*#361 localidx*#1793 m n n#1143 resulttype#2994 state#323 t_1 t_2 val z +[visit_exp `%;%`_config{state#323, `instr*#354`}(z, (val : val <: instr)^m{val <- `val*`} ++ [`LOOP`_instr{blocktype#17, `instr*#356`}(bt, instr*{instr <- `instr*`})])] +[visit_exp state#323] +[visit_id state#323] +[visit_exp `instr*#354`] +[visit_id instr*#354] +[visit_exp (z, (val : val <: instr)^m{val <- `val*`} ++ [`LOOP`_instr{blocktype#17, `instr*#356`}(bt, instr*{instr <- `instr*`})])] +[visit_exp z] +[visit_id z] +[visit_exp (val : val <: instr)^m{val <- `val*`} ++ [`LOOP`_instr{blocktype#17, `instr*#356`}(bt, instr*{instr <- `instr*`})]] +[visit_exp (val : val <: instr)^m{val <- `val*`}] +[scope_enter val] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp m] +[visit_id m] +[visit_exp `val*`] +[visit_id val*] no dims +[visit_id val*] +[visit_exp [`LOOP`_instr{blocktype#17, `instr*#356`}(bt, instr*{instr <- `instr*`})]] +[visit_exp `LOOP`_instr{blocktype#17, `instr*#356`}(bt, instr*{instr <- `instr*`})] +[visit_exp blocktype#17] +[visit_id blocktype#17] +[visit_exp `instr*#356`] +[visit_id instr*#356] +[visit_exp (bt, instr*{instr <- `instr*`})] +[visit_exp bt] +[visit_id bt] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] no dims +[visit_id instr*] +[visit_exp [`LABEL_%{%}%`_instr{n#1143, `instr*#358`}(m, [`LOOP`_instr{blocktype#19, `instr*#361`}(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]] +[visit_exp `LABEL_%{%}%`_instr{n#1143, `instr*#358`}(m, [`LOOP`_instr{blocktype#19, `instr*#361`}(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})] +[visit_exp n#1143] +[visit_id n#1143] +[visit_exp `instr*#358`] +[visit_id instr*#358] +[visit_exp (m, [`LOOP`_instr{blocktype#19, `instr*#361`}(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})] +[visit_exp m] +[visit_id m] not free +[visit_exp [`LOOP`_instr{blocktype#19, `instr*#361`}(bt, instr*{instr <- `instr*`})]] +[visit_exp `LOOP`_instr{blocktype#19, `instr*#361`}(bt, instr*{instr <- `instr*`})] +[visit_exp blocktype#19] +[visit_id blocktype#19] +[visit_exp `instr*#361`] +[visit_id instr*#361] +[visit_exp (bt, instr*{instr <- `instr*`})] +[visit_exp bt] +[visit_id bt] not free +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] not free +[visit_id instr*] no dims +[visit_exp (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`}] +[visit_exp (val : val <: instr)^m{val <- `val*`}] +[scope_enter val] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp m] +[visit_id m] not free +[visit_exp `val*`] +[visit_id val*] not free +[visit_id val*] no dims +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] not free +[visit_id instr*] no dims +[visit_exp ($blocktype_(z, bt) = `%->_%%`_instrtype{resulttype#2994, `localidx*#1793`}(`%`_resulttype{`X*#12435`}(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#12486`}(t_2^n{t_2 <- `t_2*`})))] +[visit_exp $blocktype_(z, bt)] +[visit_exp z] +[visit_id z] not free +[visit_exp bt] +[visit_id bt] not free +[visit_exp `%->_%%`_instrtype{resulttype#2994, `localidx*#1793`}(`%`_resulttype{`X*#12435`}(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#12486`}(t_2^n{t_2 <- `t_2*`}))] +[visit_exp resulttype#2994] +[visit_id resulttype#2994] +[visit_exp `localidx*#1793`] +[visit_id localidx*#1793] +[visit_exp (`%`_resulttype{`X*#12435`}(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#12486`}(t_2^n{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#12435`}(t_1^m{t_1 <- `t_1*`})] +[visit_exp `X*#12435`] +[visit_id X*#12435] +[visit_exp (t_1^m{t_1 <- `t_1*`})] +[visit_exp t_1^m{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp m] +[visit_id m] not free +[visit_exp `t_1*`] +[visit_id t_1*] no dims +[visit_id t_1*] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#12486`}(t_2^n{t_2 <- `t_2*`})] +[visit_exp `X*#12486`] +[visit_id X*#12486] +[visit_exp (t_2^n{t_2 <- `t_2*`})] +[visit_exp t_2^n{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp n] +[visit_id n] +[visit_exp `t_2*`] +[visit_id t_2*] no dims +[visit_id t_2*] +[check_dims] blocktype#21 blocktype#23 bt c i#31807 instr*#363 instr*#366 instr_1 instr_2 numtype#63 +[visit_exp [`CONST`_instr{numtype#63}(`I32`_numtype, c) `IF%%ELSE%`_instr{blocktype#21, `instr*#363`}(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})]] +[visit_exp `CONST`_instr{numtype#63}(`I32`_numtype, c)] +[visit_exp numtype#63] +[visit_id numtype#63] +[visit_exp (`I32`_numtype, c)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp c] +[visit_id c] +[visit_exp `IF%%ELSE%`_instr{blocktype#21, `instr*#363`}(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})] +[visit_exp blocktype#21] +[visit_id blocktype#21] +[visit_exp `instr*#363`] +[visit_id instr*#363] +[visit_exp (bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})] +[visit_exp bt] +[visit_id bt] +[visit_exp instr_1*{instr_1 <- `instr_1*`}] +[scope_enter instr_1] +[visit_exp instr_1] +[visit_id instr_1] not free +[visit_id instr_1] not free +[scope_exit instr_1] +[visit_exp `instr_1*`] +[visit_id instr_1*] no dims +[visit_id instr_1*] +[visit_exp instr_2*{instr_2 <- `instr_2*`}] +[scope_enter instr_2] +[visit_exp instr_2] +[visit_id instr_2] not free +[visit_id instr_2] not free +[scope_exit instr_2] +[visit_exp `instr_2*`] +[visit_id instr_2*] no dims +[visit_id instr_2*] +[visit_exp [`BLOCK`_instr{blocktype#23, `instr*#366`}(bt, instr_1*{instr_1 <- `instr_1*`})]] +[visit_exp `BLOCK`_instr{blocktype#23, `instr*#366`}(bt, instr_1*{instr_1 <- `instr_1*`})] +[visit_exp blocktype#23] +[visit_id blocktype#23] +[visit_exp `instr*#366`] +[visit_id instr*#366] +[visit_exp (bt, instr_1*{instr_1 <- `instr_1*`})] +[visit_exp bt] +[visit_id bt] not free +[visit_exp instr_1*{instr_1 <- `instr_1*`}] +[scope_enter instr_1] +[visit_exp instr_1] +[visit_id instr_1] not free +[visit_id instr_1] not free +[scope_exit instr_1] +[visit_exp `instr_1*`] +[visit_id instr_1*] not free +[visit_id instr_1*] no dims +[visit_exp (c!`%`_num_{i#31807}.0 =/= 0)] +[visit_exp c!`%`_num_{i#31807}.0] +[visit_exp c!`%`_num_{i#31807}] +[visit_exp c] +[visit_id c] not free +[visit_exp i#31807] +[visit_id i#31807] +[visit_exp 0] +[check_dims] blocktype#25 blocktype#27 bt c i#31831 instr*#368 instr*#371 instr_1 instr_2 numtype#65 +[visit_exp [`CONST`_instr{numtype#65}(`I32`_numtype, c) `IF%%ELSE%`_instr{blocktype#25, `instr*#368`}(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})]] +[visit_exp `CONST`_instr{numtype#65}(`I32`_numtype, c)] +[visit_exp numtype#65] +[visit_id numtype#65] +[visit_exp (`I32`_numtype, c)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp c] +[visit_id c] +[visit_exp `IF%%ELSE%`_instr{blocktype#25, `instr*#368`}(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})] +[visit_exp blocktype#25] +[visit_id blocktype#25] +[visit_exp `instr*#368`] +[visit_id instr*#368] +[visit_exp (bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})] +[visit_exp bt] +[visit_id bt] +[visit_exp instr_1*{instr_1 <- `instr_1*`}] +[scope_enter instr_1] +[visit_exp instr_1] +[visit_id instr_1] not free +[visit_id instr_1] not free +[scope_exit instr_1] +[visit_exp `instr_1*`] +[visit_id instr_1*] no dims +[visit_id instr_1*] +[visit_exp instr_2*{instr_2 <- `instr_2*`}] +[scope_enter instr_2] +[visit_exp instr_2] +[visit_id instr_2] not free +[visit_id instr_2] not free +[scope_exit instr_2] +[visit_exp `instr_2*`] +[visit_id instr_2*] no dims +[visit_id instr_2*] +[visit_exp [`BLOCK`_instr{blocktype#27, `instr*#371`}(bt, instr_2*{instr_2 <- `instr_2*`})]] +[visit_exp `BLOCK`_instr{blocktype#27, `instr*#371`}(bt, instr_2*{instr_2 <- `instr_2*`})] +[visit_exp blocktype#27] +[visit_id blocktype#27] +[visit_exp `instr*#371`] +[visit_id instr*#371] +[visit_exp (bt, instr_2*{instr_2 <- `instr_2*`})] +[visit_exp bt] +[visit_id bt] not free +[visit_exp instr_2*{instr_2 <- `instr_2*`}] +[scope_enter instr_2] +[visit_exp instr_2] +[visit_id instr_2] not free +[visit_id instr_2] not free +[scope_exit instr_2] +[visit_exp `instr_2*`] +[visit_id instr_2*] not free +[visit_id instr_2*] no dims +[visit_exp (c!`%`_num_{i#31831}.0 = 0)] +[visit_exp c!`%`_num_{i#31831}.0] +[visit_exp c!`%`_num_{i#31831}] +[visit_exp c] +[visit_id c] not free +[visit_exp i#31831] +[visit_id i#31831] +[visit_exp 0] +[check_dims] instr instr*#373 n n#1145 val +[visit_exp [`LABEL_%{%}%`_instr{n#1145, `instr*#373`}(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})]] +[visit_exp `LABEL_%{%}%`_instr{n#1145, `instr*#373`}(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})] +[visit_exp n#1145] +[visit_id n#1145] +[visit_exp `instr*#373`] +[visit_id instr*#373] +[visit_exp (n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})] +[visit_exp n] +[visit_id n] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] no dims +[visit_id instr*] +[visit_exp (val : val <: instr)*{val <- `val*`}] +[scope_enter val] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp `val*`] +[visit_id val*] no dims +[visit_id val*] +[visit_exp (val : val <: instr)*{val <- `val*`}] +[scope_enter val] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp `val*`] +[visit_id val*] not free +[visit_id val*] no dims +[check_dims] i#31853 instr instr' instr*#376 l labelidx#37 n n#1147 val val' +[visit_exp [`LABEL_%{%}%`_instr{n#1147, `instr*#376`}(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`BR`_instr{labelidx#37}(l)] ++ instr*{instr <- `instr*`})]] +[visit_exp `LABEL_%{%}%`_instr{n#1147, `instr*#376`}(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`BR`_instr{labelidx#37}(l)] ++ instr*{instr <- `instr*`})] +[visit_exp n#1147] +[visit_id n#1147] +[visit_exp `instr*#376`] +[visit_id instr*#376] +[visit_exp (n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`BR`_instr{labelidx#37}(l)] ++ instr*{instr <- `instr*`})] +[visit_exp n] +[visit_id n] +[visit_exp instr'*{instr' <- `instr'*`}] +[scope_enter instr'] +[visit_exp instr'] +[visit_id instr'] not free +[visit_id instr'] not free +[scope_exit instr'] +[visit_exp `instr'*`] +[visit_id instr'*] no dims +[visit_id instr'*] +[visit_exp (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`BR`_instr{labelidx#37}(l)] ++ instr*{instr <- `instr*`}] +[visit_exp (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`BR`_instr{labelidx#37}(l)]] +[visit_exp (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`}] +[visit_exp (val' : val <: instr)*{val' <- `val'*`}] +[scope_enter val'] +[visit_exp (val' : val <: instr)] +[visit_exp val'] +[visit_id val'] not free +[visit_id val'] not free +[scope_exit val'] +[visit_exp `val'*`] +[visit_id val'*] no dims +[visit_id val'*] +[visit_exp (val : val <: instr)^n{val <- `val*`}] +[scope_enter val] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp n] +[visit_id n] not free +[visit_exp `val*`] +[visit_id val*] no dims +[visit_id val*] +[visit_exp [`BR`_instr{labelidx#37}(l)]] +[visit_exp `BR`_instr{labelidx#37}(l)] +[visit_exp labelidx#37] +[visit_id labelidx#37] +[visit_exp (l)] +[visit_exp l] +[visit_id l] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] no dims +[visit_id instr*] +[visit_exp (val : val <: instr)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}] +[visit_exp (val : val <: instr)^n{val <- `val*`}] +[scope_enter val] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp n] +[visit_id n] not free +[visit_exp `val*`] +[visit_id val*] not free +[visit_id val*] no dims +[visit_exp instr'*{instr' <- `instr'*`}] +[scope_enter instr'] +[visit_exp instr'] +[visit_id instr'] not free +[visit_id instr'] not free +[scope_exit instr'] +[visit_exp `instr'*`] +[visit_id instr'*] not free +[visit_id instr'*] no dims +[visit_exp (l!`%`_labelidx{i#31853}.0 = 0)] +[visit_exp l!`%`_labelidx{i#31853}.0] +[visit_exp l!`%`_labelidx{i#31853}] +[visit_exp l] +[visit_id l] not free +[visit_exp i#31853] +[visit_id i#31853] +[visit_exp 0] +[check_dims] i#31891 i#31901 i#31915 instr instr' instr*#379 l labelidx#39 labelidx#41 n n#1149 val +[visit_exp [`LABEL_%{%}%`_instr{n#1149, `instr*#379`}(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr{labelidx#39}(l)] ++ instr*{instr <- `instr*`})]] +[visit_exp `LABEL_%{%}%`_instr{n#1149, `instr*#379`}(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr{labelidx#39}(l)] ++ instr*{instr <- `instr*`})] +[visit_exp n#1149] +[visit_id n#1149] +[visit_exp `instr*#379`] +[visit_id instr*#379] +[visit_exp (n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr{labelidx#39}(l)] ++ instr*{instr <- `instr*`})] +[visit_exp n] +[visit_id n] +[visit_exp instr'*{instr' <- `instr'*`}] +[scope_enter instr'] +[visit_exp instr'] +[visit_id instr'] not free +[visit_id instr'] not free +[scope_exit instr'] +[visit_exp `instr'*`] +[visit_id instr'*] no dims +[visit_id instr'*] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr{labelidx#39}(l)] ++ instr*{instr <- `instr*`}] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr{labelidx#39}(l)]] +[visit_exp (val : val <: instr)*{val <- `val*`}] +[scope_enter val] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp `val*`] +[visit_id val*] no dims +[visit_id val*] +[visit_exp [`BR`_instr{labelidx#39}(l)]] +[visit_exp `BR`_instr{labelidx#39}(l)] +[visit_exp labelidx#39] +[visit_id labelidx#39] +[visit_exp (l)] +[visit_exp l] +[visit_id l] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] no dims +[visit_id instr*] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr{labelidx#41}(`%`_labelidx{i#31901}((((l!`%`_labelidx{i#31891}.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]] +[visit_exp (val : val <: instr)*{val <- `val*`}] +[scope_enter val] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp `val*`] +[visit_id val*] not free +[visit_id val*] no dims +[visit_exp [`BR`_instr{labelidx#41}(`%`_labelidx{i#31901}((((l!`%`_labelidx{i#31891}.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]] +[visit_exp `BR`_instr{labelidx#41}(`%`_labelidx{i#31901}((((l!`%`_labelidx{i#31891}.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp labelidx#41] +[visit_id labelidx#41] +[visit_exp (`%`_labelidx{i#31901}((((l!`%`_labelidx{i#31891}.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp `%`_labelidx{i#31901}((((l!`%`_labelidx{i#31891}.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp i#31901] +[visit_id i#31901] +[visit_exp ((((l!`%`_labelidx{i#31891}.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp (((l!`%`_labelidx{i#31891}.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp ((l!`%`_labelidx{i#31891}.0 : nat <:> int) - (1 : nat <:> int))] +[visit_exp (l!`%`_labelidx{i#31891}.0 : nat <:> int)] +[visit_exp l!`%`_labelidx{i#31891}.0] +[visit_exp l!`%`_labelidx{i#31891}] +[visit_exp l] +[visit_id l] not free +[visit_exp i#31891] +[visit_id i#31891] +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp (l!`%`_labelidx{i#31915}.0 > 0)] +[visit_exp l!`%`_labelidx{i#31915}.0] +[visit_exp l!`%`_labelidx{i#31915}] +[visit_exp l] +[visit_id l] not free +[visit_exp i#31915] +[visit_id i#31915] +[visit_exp 0] +[check_dims] catch catch*#1 instr instr*#382 l labelidx#43 labelidx#45 n n#1151 val +[visit_exp [`HANDLER_%{%}%`_instr{n#1151, `catch*#1`, `instr*#382`}(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr{labelidx#43}(l)] ++ instr*{instr <- `instr*`})]] +[visit_exp `HANDLER_%{%}%`_instr{n#1151, `catch*#1`, `instr*#382`}(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr{labelidx#43}(l)] ++ instr*{instr <- `instr*`})] +[visit_exp n#1151] +[visit_id n#1151] +[visit_exp `catch*#1`] +[visit_id catch*#1] +[visit_exp `instr*#382`] +[visit_id instr*#382] +[visit_exp (n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr{labelidx#43}(l)] ++ instr*{instr <- `instr*`})] +[visit_exp n] +[visit_id n] +[visit_exp catch*{catch <- `catch*`}] +[scope_enter catch] +[visit_exp catch] +[visit_id catch] not free +[visit_id catch] not free +[scope_exit catch] +[visit_exp `catch*`] +[visit_id catch*] no dims +[visit_id catch*] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr{labelidx#43}(l)] ++ instr*{instr <- `instr*`}] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr{labelidx#43}(l)]] +[visit_exp (val : val <: instr)*{val <- `val*`}] +[scope_enter val] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp `val*`] +[visit_id val*] no dims +[visit_id val*] +[visit_exp [`BR`_instr{labelidx#43}(l)]] +[visit_exp `BR`_instr{labelidx#43}(l)] +[visit_exp labelidx#43] +[visit_id labelidx#43] +[visit_exp (l)] +[visit_exp l] +[visit_id l] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] no dims +[visit_id instr*] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr{labelidx#45}(l)]] +[visit_exp (val : val <: instr)*{val <- `val*`}] +[scope_enter val] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp `val*`] +[visit_id val*] not free +[visit_id val*] no dims +[visit_exp [`BR`_instr{labelidx#45}(l)]] +[visit_exp `BR`_instr{labelidx#45}(l)] +[visit_exp labelidx#45] +[visit_id labelidx#45] +[visit_exp (l)] +[visit_exp l] +[visit_id l] not free +[check_dims] c i#31987 l labelidx#47 labelidx#49 numtype#67 +[visit_exp [`CONST`_instr{numtype#67}(`I32`_numtype, c) `BR_IF`_instr{labelidx#47}(l)]] +[visit_exp `CONST`_instr{numtype#67}(`I32`_numtype, c)] +[visit_exp numtype#67] +[visit_id numtype#67] +[visit_exp (`I32`_numtype, c)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp c] +[visit_id c] +[visit_exp `BR_IF`_instr{labelidx#47}(l)] +[visit_exp labelidx#47] +[visit_id labelidx#47] +[visit_exp (l)] +[visit_exp l] +[visit_id l] +[visit_exp [`BR`_instr{labelidx#49}(l)]] +[visit_exp `BR`_instr{labelidx#49}(l)] +[visit_exp labelidx#49] +[visit_id labelidx#49] +[visit_exp (l)] +[visit_exp l] +[visit_id l] not free +[visit_exp (c!`%`_num_{i#31987}.0 =/= 0)] +[visit_exp c!`%`_num_{i#31987}.0] +[visit_exp c!`%`_num_{i#31987}] +[visit_exp c] +[visit_id c] not free +[visit_exp i#31987] +[visit_id i#31987] +[visit_exp 0] +[check_dims] c i#32023 l labelidx#51 numtype#69 +[visit_exp [`CONST`_instr{numtype#69}(`I32`_numtype, c) `BR_IF`_instr{labelidx#51}(l)]] +[visit_exp `CONST`_instr{numtype#69}(`I32`_numtype, c)] +[visit_exp numtype#69] +[visit_id numtype#69] +[visit_exp (`I32`_numtype, c)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp c] +[visit_id c] +[visit_exp `BR_IF`_instr{labelidx#51}(l)] +[visit_exp labelidx#51] +[visit_id labelidx#51] +[visit_exp (l)] +[visit_exp l] +[visit_id l] +[visit_exp []] +[visit_exp (c!`%`_num_{i#32023}.0 = 0)] +[visit_exp c!`%`_num_{i#32023}.0] +[visit_exp c!`%`_num_{i#32023}] +[visit_exp c] +[visit_id c] not free +[visit_exp i#32023] +[visit_id i#32023] +[visit_exp 0] +[check_dims] i i#32131 i#32145 l l' labelidx#53 labelidx#55 labelidx*#50 numtype#71 +[visit_exp [`CONST`_instr{numtype#71}(`I32`_numtype, i) `BR_TABLE`_instr{`labelidx*#50`, labelidx#53}(l*{l <- `l*`}, l')]] +[visit_exp `CONST`_instr{numtype#71}(`I32`_numtype, i)] +[visit_exp numtype#71] +[visit_id numtype#71] +[visit_exp (`I32`_numtype, i)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i] +[visit_id i] +[visit_exp `BR_TABLE`_instr{`labelidx*#50`, labelidx#53}(l*{l <- `l*`}, l')] +[visit_exp `labelidx*#50`] +[visit_id labelidx*#50] +[visit_exp labelidx#53] +[visit_id labelidx#53] +[visit_exp (l*{l <- `l*`}, l')] +[visit_exp l*{l <- `l*`}] +[scope_enter l] +[visit_exp l] +[visit_id l] not free +[visit_id l] not free +[scope_exit l] +[visit_exp `l*`] +[visit_id l*] no dims +[visit_id l*] +[visit_exp l'] +[visit_id l'] +[visit_exp [`BR`_instr{labelidx#55}(l*{l <- `l*`}[i!`%`_num_{i#32131}.0])]] +[visit_exp `BR`_instr{labelidx#55}(l*{l <- `l*`}[i!`%`_num_{i#32131}.0])] +[visit_exp labelidx#55] +[visit_id labelidx#55] +[visit_exp (l*{l <- `l*`}[i!`%`_num_{i#32131}.0])] +[visit_exp l*{l <- `l*`}[i!`%`_num_{i#32131}.0]] +[visit_exp l*{l <- `l*`}] +[scope_enter l] +[visit_exp l] +[visit_id l] not free +[visit_id l] not free +[scope_exit l] +[visit_exp `l*`] +[visit_id l*] not free +[visit_id l*] no dims +[visit_exp i!`%`_num_{i#32131}.0] +[visit_exp i!`%`_num_{i#32131}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#32131] +[visit_id i#32131] +[visit_exp (i!`%`_num_{i#32145}.0 < |l*{l <- `l*`}|)] +[visit_exp i!`%`_num_{i#32145}.0] +[visit_exp i!`%`_num_{i#32145}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#32145] +[visit_id i#32145] +[visit_exp |l*{l <- `l*`}|] +[visit_exp l*{l <- `l*`}] +[scope_enter l] +[visit_exp l] +[visit_id l] not free +[visit_id l] not free +[scope_exit l] +[visit_exp `l*`] +[visit_id l*] not free +[visit_id l*] no dims +[check_dims] i i#32257 l l' labelidx#57 labelidx#59 labelidx*#52 numtype#73 +[visit_exp [`CONST`_instr{numtype#73}(`I32`_numtype, i) `BR_TABLE`_instr{`labelidx*#52`, labelidx#57}(l*{l <- `l*`}, l')]] +[visit_exp `CONST`_instr{numtype#73}(`I32`_numtype, i)] +[visit_exp numtype#73] +[visit_id numtype#73] +[visit_exp (`I32`_numtype, i)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i] +[visit_id i] +[visit_exp `BR_TABLE`_instr{`labelidx*#52`, labelidx#57}(l*{l <- `l*`}, l')] +[visit_exp `labelidx*#52`] +[visit_id labelidx*#52] +[visit_exp labelidx#57] +[visit_id labelidx#57] +[visit_exp (l*{l <- `l*`}, l')] +[visit_exp l*{l <- `l*`}] +[scope_enter l] +[visit_exp l] +[visit_id l] not free +[visit_id l] not free +[scope_exit l] +[visit_exp `l*`] +[visit_id l*] no dims +[visit_id l*] +[visit_exp l'] +[visit_id l'] +[visit_exp [`BR`_instr{labelidx#59}(l')]] +[visit_exp `BR`_instr{labelidx#59}(l')] +[visit_exp labelidx#59] +[visit_id labelidx#59] +[visit_exp (l')] +[visit_exp l'] +[visit_id l'] not free +[visit_exp (i!`%`_num_{i#32257}.0 >= |l*{l <- `l*`}|)] +[visit_exp i!`%`_num_{i#32257}.0] +[visit_exp i!`%`_num_{i#32257}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#32257] +[visit_id i#32257] +[visit_exp |l*{l <- `l*`}|] +[visit_exp l*{l <- `l*`}] +[scope_enter l] +[visit_exp l] +[visit_id l] not free +[visit_id l] not free +[scope_exit l] +[visit_exp `l*`] +[visit_id l*] not free +[visit_id l*] no dims +[check_dims] heaptype#1207 ht l labelidx#61 labelidx#63 val +[visit_exp [(val : val <: instr) `BR_ON_NULL`_instr{labelidx#61}(l)]] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] +[visit_exp `BR_ON_NULL`_instr{labelidx#61}(l)] +[visit_exp labelidx#61] +[visit_id labelidx#61] +[visit_exp (l)] +[visit_exp l] +[visit_id l] +[visit_exp [`BR`_instr{labelidx#63}(l)]] +[visit_exp `BR`_instr{labelidx#63}(l)] +[visit_exp labelidx#63] +[visit_id labelidx#63] +[visit_exp (l)] +[visit_exp l] +[visit_id l] not free +[visit_exp (val = `REF.NULL`_val{heaptype#1207}(ht))] +[visit_exp val] +[visit_id val] not free +[visit_exp `REF.NULL`_val{heaptype#1207}(ht)] +[visit_exp heaptype#1207] +[visit_id heaptype#1207] +[visit_exp (ht)] +[visit_exp ht] +[visit_id ht] +[check_dims] l labelidx#65 val +[visit_exp [(val : val <: instr) `BR_ON_NULL`_instr{labelidx#65}(l)]] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] +[visit_exp `BR_ON_NULL`_instr{labelidx#65}(l)] +[visit_exp labelidx#65] +[visit_id labelidx#65] +[visit_exp (l)] +[visit_exp l] +[visit_id l] +[visit_exp [(val : val <: instr)]] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[check_dims] heaptype#1209 ht l labelidx#67 val +[visit_exp [(val : val <: instr) `BR_ON_NON_NULL`_instr{labelidx#67}(l)]] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] +[visit_exp `BR_ON_NON_NULL`_instr{labelidx#67}(l)] +[visit_exp labelidx#67] +[visit_id labelidx#67] +[visit_exp (l)] +[visit_exp l] +[visit_id l] +[visit_exp []] +[visit_exp (val = `REF.NULL`_val{heaptype#1209}(ht))] +[visit_exp val] +[visit_id val] not free +[visit_exp `REF.NULL`_val{heaptype#1209}(ht)] +[visit_exp heaptype#1209] +[visit_id heaptype#1209] +[visit_exp (ht)] +[visit_exp ht] +[visit_id ht] +[check_dims] l labelidx#69 labelidx#71 val +[visit_exp [(val : val <: instr) `BR_ON_NON_NULL`_instr{labelidx#69}(l)]] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] +[visit_exp `BR_ON_NON_NULL`_instr{labelidx#69}(l)] +[visit_exp labelidx#69] +[visit_id labelidx#69] +[visit_exp (l)] +[visit_exp l] +[visit_id l] +[visit_exp [(val : val <: instr) `BR`_instr{labelidx#71}(l)]] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_exp `BR`_instr{labelidx#71}(l)] +[visit_exp labelidx#71] +[visit_id labelidx#71] +[visit_exp (l)] +[visit_exp l] +[visit_id l] not free +[check_dims] datatype*#22 deftype*#86 deftype*#87 elemtype*#22 f frame#819 funcidx*#59 globaltype*#23 instr*#394 l labelidx#73 labelidx#75 localtype*#25 memtype*#37 moduleinst#19 ref reftype#3439 resulttype*#33 resulttype?#30 rt rt_1 rt_2 s state#335 store#815 subtype*#21 tabletype*#30 tagtype*#22 +[visit_exp `%;%`_config{state#335, `instr*#394`}(`%;%`_state{store#815, frame#819}(s, f), [(ref : ref <: instr) `BR_ON_CAST`_instr{labelidx#73, reftype#3439}(l, rt_1, rt_2)])] +[visit_exp state#335] +[visit_id state#335] +[visit_exp `instr*#394`] +[visit_id instr*#394] +[visit_exp (`%;%`_state{store#815, frame#819}(s, f), [(ref : ref <: instr) `BR_ON_CAST`_instr{labelidx#73, reftype#3439}(l, rt_1, rt_2)])] +[visit_exp `%;%`_state{store#815, frame#819}(s, f)] +[visit_exp store#815] +[visit_id store#815] +[visit_exp frame#819] +[visit_id frame#819] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp [(ref : ref <: instr) `BR_ON_CAST`_instr{labelidx#73, reftype#3439}(l, rt_1, rt_2)]] +[visit_exp (ref : ref <: instr)] +[visit_exp ref] +[visit_id ref] +[visit_exp `BR_ON_CAST`_instr{labelidx#73, reftype#3439}(l, rt_1, rt_2)] +[visit_exp labelidx#73] +[visit_id labelidx#73] +[visit_exp reftype#3439] +[visit_id reftype#3439] +[visit_exp (l, rt_1, rt_2)] +[visit_exp l] +[visit_id l] +[visit_exp rt_1] +[visit_id rt_1] +[visit_exp rt_2] +[visit_id rt_2] +[visit_exp [(ref : ref <: instr) `BR`_instr{labelidx#75}(l)]] +[visit_exp (ref : ref <: instr)] +[visit_exp ref] +[visit_id ref] not free +[visit_exp `BR`_instr{labelidx#75}(l)] +[visit_exp labelidx#75] +[visit_id labelidx#75] +[visit_exp (l)] +[visit_exp l] +[visit_id l] not free +[visit_exp (s, ref, rt)] +[visit_exp s] +[visit_id s] not free +[visit_exp ref] +[visit_id ref] not free +[visit_exp rt] +[visit_id rt] +[visit_exp ({`TYPES`{`deftype*#86`} [], `RECS`{`subtype*#21`} [], `TAGS`{`tagtype*#22`} [], `GLOBALS`{`globaltype*#23`} [], `MEMS`{`memtype*#37`} [], `TABLES`{`tabletype*#30`} [], `FUNCS`{`deftype*#87`} [], `DATAS`{`datatype*#22`} [], `ELEMS`{`elemtype*#22`} [], `LOCALS`{`localtype*#25`} [], `LABELS`{`resulttype*#33`} [], `RETURN`{`resulttype?#30`} ?(), `REFS`{`funcidx*#59`} []}, rt, $inst_reftype(f.`MODULE`_frame{moduleinst#19}, rt_2))] +[visit_exp {`TYPES`{`deftype*#86`} [], `RECS`{`subtype*#21`} [], `TAGS`{`tagtype*#22`} [], `GLOBALS`{`globaltype*#23`} [], `MEMS`{`memtype*#37`} [], `TABLES`{`tabletype*#30`} [], `FUNCS`{`deftype*#87`} [], `DATAS`{`datatype*#22`} [], `ELEMS`{`elemtype*#22`} [], `LOCALS`{`localtype*#25`} [], `LABELS`{`resulttype*#33`} [], `RETURN`{`resulttype?#30`} ?(), `REFS`{`funcidx*#59`} []}] +[visit_exp `deftype*#86`] +[visit_id deftype*#86] +[visit_exp []] +[visit_exp `subtype*#21`] +[visit_id subtype*#21] +[visit_exp []] +[visit_exp `tagtype*#22`] +[visit_id tagtype*#22] +[visit_exp []] +[visit_exp `globaltype*#23`] +[visit_id globaltype*#23] +[visit_exp []] +[visit_exp `memtype*#37`] +[visit_id memtype*#37] +[visit_exp []] +[visit_exp `tabletype*#30`] +[visit_id tabletype*#30] +[visit_exp []] +[visit_exp `deftype*#87`] +[visit_id deftype*#87] +[visit_exp []] +[visit_exp `datatype*#22`] +[visit_id datatype*#22] +[visit_exp []] +[visit_exp `elemtype*#22`] +[visit_id elemtype*#22] +[visit_exp []] +[visit_exp `localtype*#25`] +[visit_id localtype*#25] +[visit_exp []] +[visit_exp `resulttype*#33`] +[visit_id resulttype*#33] +[visit_exp []] +[visit_exp `resulttype?#30`] +[visit_id resulttype?#30] +[visit_exp ?()] +[visit_exp `funcidx*#59`] +[visit_id funcidx*#59] +[visit_exp []] +[visit_exp rt] +[visit_id rt] not free +[visit_exp $inst_reftype(f.`MODULE`_frame{moduleinst#19}, rt_2)] +[visit_exp f.`MODULE`_frame{moduleinst#19}] +[visit_exp f] +[visit_id f] not free +[visit_exp moduleinst#19] +[visit_id moduleinst#19] +[visit_exp rt_2] +[visit_id rt_2] not free +[check_dims] f frame#831 instr*#406 l labelidx#77 ref reftype#3442 rt_1 rt_2 s state#347 store#827 +[visit_exp `%;%`_config{state#347, `instr*#406`}(`%;%`_state{store#827, frame#831}(s, f), [(ref : ref <: instr) `BR_ON_CAST`_instr{labelidx#77, reftype#3442}(l, rt_1, rt_2)])] +[visit_exp state#347] +[visit_id state#347] +[visit_exp `instr*#406`] +[visit_id instr*#406] +[visit_exp (`%;%`_state{store#827, frame#831}(s, f), [(ref : ref <: instr) `BR_ON_CAST`_instr{labelidx#77, reftype#3442}(l, rt_1, rt_2)])] +[visit_exp `%;%`_state{store#827, frame#831}(s, f)] +[visit_exp store#827] +[visit_id store#827] +[visit_exp frame#831] +[visit_id frame#831] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp [(ref : ref <: instr) `BR_ON_CAST`_instr{labelidx#77, reftype#3442}(l, rt_1, rt_2)]] +[visit_exp (ref : ref <: instr)] +[visit_exp ref] +[visit_id ref] +[visit_exp `BR_ON_CAST`_instr{labelidx#77, reftype#3442}(l, rt_1, rt_2)] +[visit_exp labelidx#77] +[visit_id labelidx#77] +[visit_exp reftype#3442] +[visit_id reftype#3442] +[visit_exp (l, rt_1, rt_2)] +[visit_exp l] +[visit_id l] +[visit_exp rt_1] +[visit_id rt_1] +[visit_exp rt_2] +[visit_id rt_2] +[visit_exp [(ref : ref <: instr)]] +[visit_exp (ref : ref <: instr)] +[visit_exp ref] +[visit_id ref] not free +[check_dims] datatype*#23 deftype*#88 deftype*#89 elemtype*#23 f frame#843 funcidx*#60 globaltype*#24 instr*#418 l labelidx#79 localtype*#26 memtype*#38 moduleinst#20 ref reftype#3445 resulttype*#34 resulttype?#31 rt rt_1 rt_2 s state#359 store#839 subtype*#22 tabletype*#31 tagtype*#23 +[visit_exp `%;%`_config{state#359, `instr*#418`}(`%;%`_state{store#839, frame#843}(s, f), [(ref : ref <: instr) `BR_ON_CAST_FAIL`_instr{labelidx#79, reftype#3445}(l, rt_1, rt_2)])] +[visit_exp state#359] +[visit_id state#359] +[visit_exp `instr*#418`] +[visit_id instr*#418] +[visit_exp (`%;%`_state{store#839, frame#843}(s, f), [(ref : ref <: instr) `BR_ON_CAST_FAIL`_instr{labelidx#79, reftype#3445}(l, rt_1, rt_2)])] +[visit_exp `%;%`_state{store#839, frame#843}(s, f)] +[visit_exp store#839] +[visit_id store#839] +[visit_exp frame#843] +[visit_id frame#843] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp [(ref : ref <: instr) `BR_ON_CAST_FAIL`_instr{labelidx#79, reftype#3445}(l, rt_1, rt_2)]] +[visit_exp (ref : ref <: instr)] +[visit_exp ref] +[visit_id ref] +[visit_exp `BR_ON_CAST_FAIL`_instr{labelidx#79, reftype#3445}(l, rt_1, rt_2)] +[visit_exp labelidx#79] +[visit_id labelidx#79] +[visit_exp reftype#3445] +[visit_id reftype#3445] +[visit_exp (l, rt_1, rt_2)] +[visit_exp l] +[visit_id l] +[visit_exp rt_1] +[visit_id rt_1] +[visit_exp rt_2] +[visit_id rt_2] +[visit_exp [(ref : ref <: instr)]] +[visit_exp (ref : ref <: instr)] +[visit_exp ref] +[visit_id ref] not free +[visit_exp (s, ref, rt)] +[visit_exp s] +[visit_id s] not free +[visit_exp ref] +[visit_id ref] not free +[visit_exp rt] +[visit_id rt] +[visit_exp ({`TYPES`{`deftype*#88`} [], `RECS`{`subtype*#22`} [], `TAGS`{`tagtype*#23`} [], `GLOBALS`{`globaltype*#24`} [], `MEMS`{`memtype*#38`} [], `TABLES`{`tabletype*#31`} [], `FUNCS`{`deftype*#89`} [], `DATAS`{`datatype*#23`} [], `ELEMS`{`elemtype*#23`} [], `LOCALS`{`localtype*#26`} [], `LABELS`{`resulttype*#34`} [], `RETURN`{`resulttype?#31`} ?(), `REFS`{`funcidx*#60`} []}, rt, $inst_reftype(f.`MODULE`_frame{moduleinst#20}, rt_2))] +[visit_exp {`TYPES`{`deftype*#88`} [], `RECS`{`subtype*#22`} [], `TAGS`{`tagtype*#23`} [], `GLOBALS`{`globaltype*#24`} [], `MEMS`{`memtype*#38`} [], `TABLES`{`tabletype*#31`} [], `FUNCS`{`deftype*#89`} [], `DATAS`{`datatype*#23`} [], `ELEMS`{`elemtype*#23`} [], `LOCALS`{`localtype*#26`} [], `LABELS`{`resulttype*#34`} [], `RETURN`{`resulttype?#31`} ?(), `REFS`{`funcidx*#60`} []}] +[visit_exp `deftype*#88`] +[visit_id deftype*#88] +[visit_exp []] +[visit_exp `subtype*#22`] +[visit_id subtype*#22] +[visit_exp []] +[visit_exp `tagtype*#23`] +[visit_id tagtype*#23] +[visit_exp []] +[visit_exp `globaltype*#24`] +[visit_id globaltype*#24] +[visit_exp []] +[visit_exp `memtype*#38`] +[visit_id memtype*#38] +[visit_exp []] +[visit_exp `tabletype*#31`] +[visit_id tabletype*#31] +[visit_exp []] +[visit_exp `deftype*#89`] +[visit_id deftype*#89] +[visit_exp []] +[visit_exp `datatype*#23`] +[visit_id datatype*#23] +[visit_exp []] +[visit_exp `elemtype*#23`] +[visit_id elemtype*#23] +[visit_exp []] +[visit_exp `localtype*#26`] +[visit_id localtype*#26] +[visit_exp []] +[visit_exp `resulttype*#34`] +[visit_id resulttype*#34] +[visit_exp []] +[visit_exp `resulttype?#31`] +[visit_id resulttype?#31] +[visit_exp ?()] +[visit_exp `funcidx*#60`] +[visit_id funcidx*#60] +[visit_exp []] +[visit_exp rt] +[visit_id rt] not free +[visit_exp $inst_reftype(f.`MODULE`_frame{moduleinst#20}, rt_2)] +[visit_exp f.`MODULE`_frame{moduleinst#20}] +[visit_exp f] +[visit_id f] not free +[visit_exp moduleinst#20] +[visit_id moduleinst#20] +[visit_exp rt_2] +[visit_id rt_2] not free +[check_dims] f frame#855 instr*#430 l labelidx#81 labelidx#83 ref reftype#3448 rt_1 rt_2 s state#371 store#851 +[visit_exp `%;%`_config{state#371, `instr*#430`}(`%;%`_state{store#851, frame#855}(s, f), [(ref : ref <: instr) `BR_ON_CAST_FAIL`_instr{labelidx#81, reftype#3448}(l, rt_1, rt_2)])] +[visit_exp state#371] +[visit_id state#371] +[visit_exp `instr*#430`] +[visit_id instr*#430] +[visit_exp (`%;%`_state{store#851, frame#855}(s, f), [(ref : ref <: instr) `BR_ON_CAST_FAIL`_instr{labelidx#81, reftype#3448}(l, rt_1, rt_2)])] +[visit_exp `%;%`_state{store#851, frame#855}(s, f)] +[visit_exp store#851] +[visit_id store#851] +[visit_exp frame#855] +[visit_id frame#855] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp [(ref : ref <: instr) `BR_ON_CAST_FAIL`_instr{labelidx#81, reftype#3448}(l, rt_1, rt_2)]] +[visit_exp (ref : ref <: instr)] +[visit_exp ref] +[visit_id ref] +[visit_exp `BR_ON_CAST_FAIL`_instr{labelidx#81, reftype#3448}(l, rt_1, rt_2)] +[visit_exp labelidx#81] +[visit_id labelidx#81] +[visit_exp reftype#3448] +[visit_id reftype#3448] +[visit_exp (l, rt_1, rt_2)] +[visit_exp l] +[visit_id l] +[visit_exp rt_1] +[visit_id rt_1] +[visit_exp rt_2] +[visit_id rt_2] +[visit_exp [(ref : ref <: instr) `BR`_instr{labelidx#83}(l)]] +[visit_exp (ref : ref <: instr)] +[visit_exp ref] +[visit_id ref] not free +[visit_exp `BR`_instr{labelidx#83}(l)] +[visit_exp labelidx#83] +[visit_id labelidx#83] +[visit_exp (l)] +[visit_exp l] +[visit_id l] not free +[check_dims] a deftype#5 funcaddr#7 funcaddr*#2 funcidx#2837 i#32425 instr*#442 state#383 typeuse#35 x z +[visit_exp `%;%`_config{state#383, `instr*#442`}(z, [`CALL`_instr{funcidx#2837}(x)])] +[visit_exp state#383] +[visit_id state#383] +[visit_exp `instr*#442`] +[visit_id instr*#442] +[visit_exp (z, [`CALL`_instr{funcidx#2837}(x)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CALL`_instr{funcidx#2837}(x)]] +[visit_exp `CALL`_instr{funcidx#2837}(x)] +[visit_exp funcidx#2837] +[visit_id funcidx#2837] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp [`REF.FUNC_ADDR`_instr{funcaddr#7}(a) `CALL_REF`_instr{typeuse#35}(($funcinst(z)[a].`TYPE`_funcinst{deftype#5} : deftype <: typeuse))]] +[visit_exp `REF.FUNC_ADDR`_instr{funcaddr#7}(a)] +[visit_exp funcaddr#7] +[visit_id funcaddr#7] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp `CALL_REF`_instr{typeuse#35}(($funcinst(z)[a].`TYPE`_funcinst{deftype#5} : deftype <: typeuse))] +[visit_exp typeuse#35] +[visit_id typeuse#35] +[visit_exp (($funcinst(z)[a].`TYPE`_funcinst{deftype#5} : deftype <: typeuse))] +[visit_exp ($funcinst(z)[a].`TYPE`_funcinst{deftype#5} : deftype <: typeuse)] +[visit_exp $funcinst(z)[a].`TYPE`_funcinst{deftype#5}] +[visit_exp $funcinst(z)[a]] +[visit_exp $funcinst(z)] +[visit_exp z] +[visit_id z] not free +[visit_exp a] +[visit_id a] not free +[visit_exp deftype#5] +[visit_id deftype#5] +[visit_exp ($moduleinst(z).`FUNCS`_moduleinst{`funcaddr*#2`}[x!`%`_idx{i#32425}.0] = a)] +[visit_exp $moduleinst(z).`FUNCS`_moduleinst{`funcaddr*#2`}[x!`%`_idx{i#32425}.0]] +[visit_exp $moduleinst(z).`FUNCS`_moduleinst{`funcaddr*#2`}] +[visit_exp $moduleinst(z)] +[visit_exp z] +[visit_id z] not free +[visit_exp `funcaddr*#2`] +[visit_id funcaddr*#2] +[visit_exp x!`%`_idx{i#32425}.0] +[visit_exp x!`%`_idx{i#32425}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#32425] +[visit_id i#32425] +[visit_exp a] +[visit_id a] not free +[check_dims] heaptype#1307 ht instr*#454 state#395 typeuse#37 yy z +[visit_exp `%;%`_config{state#395, `instr*#454`}(z, [`REF.NULL`_instr{heaptype#1307}(ht) `CALL_REF`_instr{typeuse#37}(yy)])] +[visit_exp state#395] +[visit_id state#395] +[visit_exp `instr*#454`] +[visit_id instr*#454] +[visit_exp (z, [`REF.NULL`_instr{heaptype#1307}(ht) `CALL_REF`_instr{typeuse#37}(yy)])] +[visit_exp z] +[visit_id z] +[visit_exp [`REF.NULL`_instr{heaptype#1307}(ht) `CALL_REF`_instr{typeuse#37}(yy)]] +[visit_exp `REF.NULL`_instr{heaptype#1307}(ht)] +[visit_exp heaptype#1307] +[visit_id heaptype#1307] +[visit_exp (ht)] +[visit_exp ht] +[visit_id ht] +[visit_exp `CALL_REF`_instr{typeuse#37}(yy)] +[visit_exp typeuse#37] +[visit_id typeuse#37] +[visit_exp (yy)] +[visit_exp yy] +[visit_id yy] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[check_dims] X*#12499 X*#12512 a deftype#6 expr#4155 f fi frame#887 funcaddr#9 funccode#1 instr instr*#466 instr*#468 instr*#470 local*#1221 m moduleinst#21 moduleinst#22 n n#1153 n#1155 resulttype#2997 state#407 t t_1 t_2 typeidx#1553 typeuse#39 val val?*#4 valtype#755 x yy z +[visit_exp `%;%`_config{state#407, `instr*#466`}(z, (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr{funcaddr#9}(a) `CALL_REF`_instr{typeuse#39}(yy)])] +[visit_exp state#407] +[visit_id state#407] +[visit_exp `instr*#466`] +[visit_id instr*#466] +[visit_exp (z, (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr{funcaddr#9}(a) `CALL_REF`_instr{typeuse#39}(yy)])] +[visit_exp z] +[visit_id z] +[visit_exp (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr{funcaddr#9}(a) `CALL_REF`_instr{typeuse#39}(yy)]] +[visit_exp (val : val <: instr)^n{val <- `val*`}] +[scope_enter val] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp n] +[visit_id n] +[visit_exp `val*`] +[visit_id val*] no dims +[visit_id val*] +[visit_exp [`REF.FUNC_ADDR`_instr{funcaddr#9}(a) `CALL_REF`_instr{typeuse#39}(yy)]] +[visit_exp `REF.FUNC_ADDR`_instr{funcaddr#9}(a)] +[visit_exp funcaddr#9] +[visit_id funcaddr#9] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp `CALL_REF`_instr{typeuse#39}(yy)] +[visit_exp typeuse#39] +[visit_id typeuse#39] +[visit_exp (yy)] +[visit_exp yy] +[visit_id yy] +[visit_exp [`FRAME_%{%}%`_instr{n#1153, frame#887, `instr*#468`}(m, f, [`LABEL_%{%}%`_instr{n#1155, `instr*#470`}(m, [], instr*{instr <- `instr*`})])]] +[visit_exp `FRAME_%{%}%`_instr{n#1153, frame#887, `instr*#468`}(m, f, [`LABEL_%{%}%`_instr{n#1155, `instr*#470`}(m, [], instr*{instr <- `instr*`})])] +[visit_exp n#1153] +[visit_id n#1153] +[visit_exp frame#887] +[visit_id frame#887] +[visit_exp `instr*#468`] +[visit_id instr*#468] +[visit_exp (m, f, [`LABEL_%{%}%`_instr{n#1155, `instr*#470`}(m, [], instr*{instr <- `instr*`})])] +[visit_exp m] +[visit_id m] +[visit_exp f] +[visit_id f] +[visit_exp [`LABEL_%{%}%`_instr{n#1155, `instr*#470`}(m, [], instr*{instr <- `instr*`})]] +[visit_exp `LABEL_%{%}%`_instr{n#1155, `instr*#470`}(m, [], instr*{instr <- `instr*`})] +[visit_exp n#1155] +[visit_id n#1155] +[visit_exp `instr*#470`] +[visit_id instr*#470] +[visit_exp (m, [], instr*{instr <- `instr*`})] +[visit_exp m] +[visit_id m] not free +[visit_exp []] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] no dims +[visit_id instr*] +[visit_exp ($funcinst(z)[a] = fi)] +[visit_exp $funcinst(z)[a]] +[visit_exp $funcinst(z)] +[visit_exp z] +[visit_id z] not free +[visit_exp a] +[visit_id a] not free +[visit_exp fi] +[visit_id fi] +[visit_exp (fi.`TYPE`_funcinst{deftype#6}, `FUNC%->%`_comptype{resulttype#2997}(`%`_resulttype{`X*#12499`}(t_1^n{t_1 <- `t_1*`}), `%`_resulttype{`X*#12512`}(t_2^m{t_2 <- `t_2*`})))] +[visit_exp fi.`TYPE`_funcinst{deftype#6}] +[visit_exp fi] +[visit_id fi] not free +[visit_exp deftype#6] +[visit_id deftype#6] +[visit_exp `FUNC%->%`_comptype{resulttype#2997}(`%`_resulttype{`X*#12499`}(t_1^n{t_1 <- `t_1*`}), `%`_resulttype{`X*#12512`}(t_2^m{t_2 <- `t_2*`}))] +[visit_exp resulttype#2997] +[visit_id resulttype#2997] +[visit_exp (`%`_resulttype{`X*#12499`}(t_1^n{t_1 <- `t_1*`}), `%`_resulttype{`X*#12512`}(t_2^m{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#12499`}(t_1^n{t_1 <- `t_1*`})] +[visit_exp `X*#12499`] +[visit_id X*#12499] +[visit_exp (t_1^n{t_1 <- `t_1*`})] +[visit_exp t_1^n{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp n] +[visit_id n] not free +[visit_exp `t_1*`] +[visit_id t_1*] no dims +[visit_id t_1*] +[visit_exp `%`_resulttype{`X*#12512`}(t_2^m{t_2 <- `t_2*`})] +[visit_exp `X*#12512`] +[visit_id X*#12512] +[visit_exp (t_2^m{t_2 <- `t_2*`})] +[visit_exp t_2^m{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp m] +[visit_id m] not free +[visit_exp `t_2*`] +[visit_id t_2*] no dims +[visit_id t_2*] +[visit_exp (fi.`CODE`_funcinst{funccode#1} = `FUNC`_funccode{typeidx#1553, `local*#1221`, expr#4155}(x, `LOCAL`_local{valtype#755}(t)*{t <- `t*`, valtype#755 <- `valtype#755*`}, instr*{instr <- `instr*`}))] +[visit_exp fi.`CODE`_funcinst{funccode#1}] +[visit_exp fi] +[visit_id fi] not free +[visit_exp funccode#1] +[visit_id funccode#1] +[visit_exp `FUNC`_funccode{typeidx#1553, `local*#1221`, expr#4155}(x, `LOCAL`_local{valtype#755}(t)*{t <- `t*`, valtype#755 <- `valtype#755*`}, instr*{instr <- `instr*`})] +[visit_exp typeidx#1553] +[visit_id typeidx#1553] +[visit_exp `local*#1221`] +[visit_id local*#1221] +[visit_exp expr#4155] +[visit_id expr#4155] +[visit_exp (x, `LOCAL`_local{valtype#755}(t)*{t <- `t*`, valtype#755 <- `valtype#755*`}, instr*{instr <- `instr*`})] +[visit_exp x] +[visit_id x] +[visit_exp `LOCAL`_local{valtype#755}(t)*{t <- `t*`, valtype#755 <- `valtype#755*`}] +[scope_enter t] +[scope_enter valtype#755] +[visit_exp `LOCAL`_local{valtype#755}(t)] +[visit_exp valtype#755] +[visit_id valtype#755] not free +[visit_exp (t)] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[visit_id valtype#755] not free +[scope_exit valtype#755] +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] no dims +[visit_id t*] +[visit_exp `valtype#755*`] +[visit_id valtype#755*] no dims +[visit_id valtype#755*] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] not free +[visit_id instr*] no dims +[visit_exp (f = {`LOCALS`{`val?*#4`} ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, `MODULE`{moduleinst#22} fi.`MODULE`_funcinst{moduleinst#21}})] +[visit_exp f] +[visit_id f] not free +[visit_exp {`LOCALS`{`val?*#4`} ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, `MODULE`{moduleinst#22} fi.`MODULE`_funcinst{moduleinst#21}}] +[visit_exp `val?*#4`] +[visit_id val?*#4] +[visit_exp ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}] +[visit_exp ?(val)^n{val <- `val*`}] +[scope_enter val] +[visit_exp ?(val)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp n] +[visit_id n] not free +[visit_exp `val*`] +[visit_id val*] not free +[visit_id val*] no dims +[visit_exp $default_(t)*{t <- `t*`}] +[scope_enter t] +[visit_exp $default_(t)] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] not free +[visit_id t*] no dims +[visit_exp moduleinst#22] +[visit_id moduleinst#22] +[visit_exp fi.`MODULE`_funcinst{moduleinst#21}] +[visit_exp fi] +[visit_id fi] not free +[visit_exp moduleinst#21] +[visit_id moduleinst#21] +[check_dims] a deftype#7 funcaddr#11 funcaddr*#3 funcidx#2839 i#32463 instr*#483 state#419 typeuse#41 x z +[visit_exp `%;%`_config{state#419, `instr*#483`}(z, [`RETURN_CALL`_instr{funcidx#2839}(x)])] +[visit_exp state#419] +[visit_id state#419] +[visit_exp `instr*#483`] +[visit_id instr*#483] +[visit_exp (z, [`RETURN_CALL`_instr{funcidx#2839}(x)])] +[visit_exp z] +[visit_id z] +[visit_exp [`RETURN_CALL`_instr{funcidx#2839}(x)]] +[visit_exp `RETURN_CALL`_instr{funcidx#2839}(x)] +[visit_exp funcidx#2839] +[visit_id funcidx#2839] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp [`REF.FUNC_ADDR`_instr{funcaddr#11}(a) `RETURN_CALL_REF`_instr{typeuse#41}(($funcinst(z)[a].`TYPE`_funcinst{deftype#7} : deftype <: typeuse))]] +[visit_exp `REF.FUNC_ADDR`_instr{funcaddr#11}(a)] +[visit_exp funcaddr#11] +[visit_id funcaddr#11] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp `RETURN_CALL_REF`_instr{typeuse#41}(($funcinst(z)[a].`TYPE`_funcinst{deftype#7} : deftype <: typeuse))] +[visit_exp typeuse#41] +[visit_id typeuse#41] +[visit_exp (($funcinst(z)[a].`TYPE`_funcinst{deftype#7} : deftype <: typeuse))] +[visit_exp ($funcinst(z)[a].`TYPE`_funcinst{deftype#7} : deftype <: typeuse)] +[visit_exp $funcinst(z)[a].`TYPE`_funcinst{deftype#7}] +[visit_exp $funcinst(z)[a]] +[visit_exp $funcinst(z)] +[visit_exp z] +[visit_id z] not free +[visit_exp a] +[visit_id a] not free +[visit_exp deftype#7] +[visit_id deftype#7] +[visit_exp ($moduleinst(z).`FUNCS`_moduleinst{`funcaddr*#3`}[x!`%`_idx{i#32463}.0] = a)] +[visit_exp $moduleinst(z).`FUNCS`_moduleinst{`funcaddr*#3`}[x!`%`_idx{i#32463}.0]] +[visit_exp $moduleinst(z).`FUNCS`_moduleinst{`funcaddr*#3`}] +[visit_exp $moduleinst(z)] +[visit_exp z] +[visit_id z] not free +[visit_exp `funcaddr*#3`] +[visit_id funcaddr*#3] +[visit_exp x!`%`_idx{i#32463}.0] +[visit_exp x!`%`_idx{i#32463}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#32463] +[visit_id i#32463] +[visit_exp a] +[visit_id a] not free +[check_dims] instr instr' instr*#495 instr*#497 k n#1163 state#431 typeuse#43 typeuse#45 val yy z +[visit_exp `%;%`_config{state#431, `instr*#495`}(z, [`LABEL_%{%}%`_instr{n#1163, `instr*#497`}(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr{typeuse#43}(yy)] ++ instr*{instr <- `instr*`})])] +[visit_exp state#431] +[visit_id state#431] +[visit_exp `instr*#495`] +[visit_id instr*#495] +[visit_exp (z, [`LABEL_%{%}%`_instr{n#1163, `instr*#497`}(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr{typeuse#43}(yy)] ++ instr*{instr <- `instr*`})])] +[visit_exp z] +[visit_id z] +[visit_exp [`LABEL_%{%}%`_instr{n#1163, `instr*#497`}(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr{typeuse#43}(yy)] ++ instr*{instr <- `instr*`})]] +[visit_exp `LABEL_%{%}%`_instr{n#1163, `instr*#497`}(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr{typeuse#43}(yy)] ++ instr*{instr <- `instr*`})] +[visit_exp n#1163] +[visit_id n#1163] +[visit_exp `instr*#497`] +[visit_id instr*#497] +[visit_exp (k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr{typeuse#43}(yy)] ++ instr*{instr <- `instr*`})] +[visit_exp k] +[visit_id k] +[visit_exp instr'*{instr' <- `instr'*`}] +[scope_enter instr'] +[visit_exp instr'] +[visit_id instr'] not free +[visit_id instr'] not free +[scope_exit instr'] +[visit_exp `instr'*`] +[visit_id instr'*] no dims +[visit_id instr'*] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr{typeuse#43}(yy)] ++ instr*{instr <- `instr*`}] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr{typeuse#43}(yy)]] +[visit_exp (val : val <: instr)*{val <- `val*`}] +[scope_enter val] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp `val*`] +[visit_id val*] no dims +[visit_id val*] +[visit_exp [`RETURN_CALL_REF`_instr{typeuse#43}(yy)]] +[visit_exp `RETURN_CALL_REF`_instr{typeuse#43}(yy)] +[visit_exp typeuse#43] +[visit_id typeuse#43] +[visit_exp (yy)] +[visit_exp yy] +[visit_id yy] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] no dims +[visit_id instr*] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr{typeuse#45}(yy)]] +[visit_exp (val : val <: instr)*{val <- `val*`}] +[scope_enter val] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp `val*`] +[visit_id val*] not free +[visit_id val*] no dims +[visit_exp [`RETURN_CALL_REF`_instr{typeuse#45}(yy)]] +[visit_exp `RETURN_CALL_REF`_instr{typeuse#45}(yy)] +[visit_exp typeuse#45] +[visit_id typeuse#45] +[visit_exp (yy)] +[visit_exp yy] +[visit_id yy] not free +[check_dims] catch catch*#3 instr instr*#510 instr*#512 k n#1165 state#443 typeuse#47 typeuse#49 val yy z +[visit_exp `%;%`_config{state#443, `instr*#510`}(z, [`HANDLER_%{%}%`_instr{n#1165, `catch*#3`, `instr*#512`}(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr{typeuse#47}(yy)] ++ instr*{instr <- `instr*`})])] +[visit_exp state#443] +[visit_id state#443] +[visit_exp `instr*#510`] +[visit_id instr*#510] +[visit_exp (z, [`HANDLER_%{%}%`_instr{n#1165, `catch*#3`, `instr*#512`}(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr{typeuse#47}(yy)] ++ instr*{instr <- `instr*`})])] +[visit_exp z] +[visit_id z] +[visit_exp [`HANDLER_%{%}%`_instr{n#1165, `catch*#3`, `instr*#512`}(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr{typeuse#47}(yy)] ++ instr*{instr <- `instr*`})]] +[visit_exp `HANDLER_%{%}%`_instr{n#1165, `catch*#3`, `instr*#512`}(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr{typeuse#47}(yy)] ++ instr*{instr <- `instr*`})] +[visit_exp n#1165] +[visit_id n#1165] +[visit_exp `catch*#3`] +[visit_id catch*#3] +[visit_exp `instr*#512`] +[visit_id instr*#512] +[visit_exp (k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr{typeuse#47}(yy)] ++ instr*{instr <- `instr*`})] +[visit_exp k] +[visit_id k] +[visit_exp catch*{catch <- `catch*`}] +[scope_enter catch] +[visit_exp catch] +[visit_id catch] not free +[visit_id catch] not free +[scope_exit catch] +[visit_exp `catch*`] +[visit_id catch*] no dims +[visit_id catch*] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr{typeuse#47}(yy)] ++ instr*{instr <- `instr*`}] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr{typeuse#47}(yy)]] +[visit_exp (val : val <: instr)*{val <- `val*`}] +[scope_enter val] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp `val*`] +[visit_id val*] no dims +[visit_id val*] +[visit_exp [`RETURN_CALL_REF`_instr{typeuse#47}(yy)]] +[visit_exp `RETURN_CALL_REF`_instr{typeuse#47}(yy)] +[visit_exp typeuse#47] +[visit_id typeuse#47] +[visit_exp (yy)] +[visit_exp yy] +[visit_id yy] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] no dims +[visit_id instr*] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr{typeuse#49}(yy)]] +[visit_exp (val : val <: instr)*{val <- `val*`}] +[scope_enter val] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp `val*`] +[visit_id val*] not free +[visit_id val*] no dims +[visit_exp [`RETURN_CALL_REF`_instr{typeuse#49}(yy)]] +[visit_exp `RETURN_CALL_REF`_instr{typeuse#49}(yy)] +[visit_exp typeuse#49] +[visit_id typeuse#49] +[visit_exp (yy)] +[visit_exp yy] +[visit_id yy] not free +[check_dims] f frame#931 heaptype#1309 ht instr instr*#524 instr*#526 k n#1167 state#455 typeuse#51 val yy z +[visit_exp `%;%`_config{state#455, `instr*#524`}(z, [`FRAME_%{%}%`_instr{n#1167, frame#931, `instr*#526`}(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL`_instr{heaptype#1309}(ht)] ++ [`RETURN_CALL_REF`_instr{typeuse#51}(yy)] ++ instr*{instr <- `instr*`})])] +[visit_exp state#455] +[visit_id state#455] +[visit_exp `instr*#524`] +[visit_id instr*#524] +[visit_exp (z, [`FRAME_%{%}%`_instr{n#1167, frame#931, `instr*#526`}(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL`_instr{heaptype#1309}(ht)] ++ [`RETURN_CALL_REF`_instr{typeuse#51}(yy)] ++ instr*{instr <- `instr*`})])] +[visit_exp z] +[visit_id z] +[visit_exp [`FRAME_%{%}%`_instr{n#1167, frame#931, `instr*#526`}(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL`_instr{heaptype#1309}(ht)] ++ [`RETURN_CALL_REF`_instr{typeuse#51}(yy)] ++ instr*{instr <- `instr*`})]] +[visit_exp `FRAME_%{%}%`_instr{n#1167, frame#931, `instr*#526`}(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL`_instr{heaptype#1309}(ht)] ++ [`RETURN_CALL_REF`_instr{typeuse#51}(yy)] ++ instr*{instr <- `instr*`})] +[visit_exp n#1167] +[visit_id n#1167] +[visit_exp frame#931] +[visit_id frame#931] +[visit_exp `instr*#526`] +[visit_id instr*#526] +[visit_exp (k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL`_instr{heaptype#1309}(ht)] ++ [`RETURN_CALL_REF`_instr{typeuse#51}(yy)] ++ instr*{instr <- `instr*`})] +[visit_exp k] +[visit_id k] +[visit_exp f] +[visit_id f] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL`_instr{heaptype#1309}(ht)] ++ [`RETURN_CALL_REF`_instr{typeuse#51}(yy)] ++ instr*{instr <- `instr*`}] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL`_instr{heaptype#1309}(ht)] ++ [`RETURN_CALL_REF`_instr{typeuse#51}(yy)]] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL`_instr{heaptype#1309}(ht)]] +[visit_exp (val : val <: instr)*{val <- `val*`}] +[scope_enter val] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp `val*`] +[visit_id val*] no dims +[visit_id val*] +[visit_exp [`REF.NULL`_instr{heaptype#1309}(ht)]] +[visit_exp `REF.NULL`_instr{heaptype#1309}(ht)] +[visit_exp heaptype#1309] +[visit_id heaptype#1309] +[visit_exp (ht)] +[visit_exp ht] +[visit_id ht] +[visit_exp [`RETURN_CALL_REF`_instr{typeuse#51}(yy)]] +[visit_exp `RETURN_CALL_REF`_instr{typeuse#51}(yy)] +[visit_exp typeuse#51] +[visit_id typeuse#51] +[visit_exp (yy)] +[visit_exp yy] +[visit_id yy] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] no dims +[visit_id instr*] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[check_dims] X*#12527 X*#12540 a deftype#8 f frame#939 funcaddr#13 funcaddr#15 instr instr*#538 instr*#540 k m n n#1169 resulttype#3000 state#467 t_1 t_2 typeuse#53 typeuse#55 val val' yy z +[visit_exp `%;%`_config{state#467, `instr*#538`}(z, [`FRAME_%{%}%`_instr{n#1169, frame#939, `instr*#540`}(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr{funcaddr#13}(a)] ++ [`RETURN_CALL_REF`_instr{typeuse#53}(yy)] ++ instr*{instr <- `instr*`})])] +[visit_exp state#467] +[visit_id state#467] +[visit_exp `instr*#538`] +[visit_id instr*#538] +[visit_exp (z, [`FRAME_%{%}%`_instr{n#1169, frame#939, `instr*#540`}(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr{funcaddr#13}(a)] ++ [`RETURN_CALL_REF`_instr{typeuse#53}(yy)] ++ instr*{instr <- `instr*`})])] +[visit_exp z] +[visit_id z] +[visit_exp [`FRAME_%{%}%`_instr{n#1169, frame#939, `instr*#540`}(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr{funcaddr#13}(a)] ++ [`RETURN_CALL_REF`_instr{typeuse#53}(yy)] ++ instr*{instr <- `instr*`})]] +[visit_exp `FRAME_%{%}%`_instr{n#1169, frame#939, `instr*#540`}(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr{funcaddr#13}(a)] ++ [`RETURN_CALL_REF`_instr{typeuse#53}(yy)] ++ instr*{instr <- `instr*`})] +[visit_exp n#1169] +[visit_id n#1169] +[visit_exp frame#939] +[visit_id frame#939] +[visit_exp `instr*#540`] +[visit_id instr*#540] +[visit_exp (k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr{funcaddr#13}(a)] ++ [`RETURN_CALL_REF`_instr{typeuse#53}(yy)] ++ instr*{instr <- `instr*`})] +[visit_exp k] +[visit_id k] +[visit_exp f] +[visit_id f] +[visit_exp (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr{funcaddr#13}(a)] ++ [`RETURN_CALL_REF`_instr{typeuse#53}(yy)] ++ instr*{instr <- `instr*`}] +[visit_exp (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr{funcaddr#13}(a)] ++ [`RETURN_CALL_REF`_instr{typeuse#53}(yy)]] +[visit_exp (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr{funcaddr#13}(a)]] +[visit_exp (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`}] +[visit_exp (val' : val <: instr)*{val' <- `val'*`}] +[scope_enter val'] +[visit_exp (val' : val <: instr)] +[visit_exp val'] +[visit_id val'] not free +[visit_id val'] not free +[scope_exit val'] +[visit_exp `val'*`] +[visit_id val'*] no dims +[visit_id val'*] +[visit_exp (val : val <: instr)^n{val <- `val*`}] +[scope_enter val] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp n] +[visit_id n] +[visit_exp `val*`] +[visit_id val*] no dims +[visit_id val*] +[visit_exp [`REF.FUNC_ADDR`_instr{funcaddr#13}(a)]] +[visit_exp `REF.FUNC_ADDR`_instr{funcaddr#13}(a)] +[visit_exp funcaddr#13] +[visit_id funcaddr#13] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp [`RETURN_CALL_REF`_instr{typeuse#53}(yy)]] +[visit_exp `RETURN_CALL_REF`_instr{typeuse#53}(yy)] +[visit_exp typeuse#53] +[visit_id typeuse#53] +[visit_exp (yy)] +[visit_exp yy] +[visit_id yy] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] no dims +[visit_id instr*] +[visit_exp (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr{funcaddr#15}(a) `CALL_REF`_instr{typeuse#55}(yy)]] +[visit_exp (val : val <: instr)^n{val <- `val*`}] +[scope_enter val] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp n] +[visit_id n] not free +[visit_exp `val*`] +[visit_id val*] not free +[visit_id val*] no dims +[visit_exp [`REF.FUNC_ADDR`_instr{funcaddr#15}(a) `CALL_REF`_instr{typeuse#55}(yy)]] +[visit_exp `REF.FUNC_ADDR`_instr{funcaddr#15}(a)] +[visit_exp funcaddr#15] +[visit_id funcaddr#15] +[visit_exp (a)] +[visit_exp a] +[visit_id a] not free +[visit_exp `CALL_REF`_instr{typeuse#55}(yy)] +[visit_exp typeuse#55] +[visit_id typeuse#55] +[visit_exp (yy)] +[visit_exp yy] +[visit_id yy] not free +[visit_exp ($funcinst(z)[a].`TYPE`_funcinst{deftype#8}, `FUNC%->%`_comptype{resulttype#3000}(`%`_resulttype{`X*#12527`}(t_1^n{t_1 <- `t_1*`}), `%`_resulttype{`X*#12540`}(t_2^m{t_2 <- `t_2*`})))] +[visit_exp $funcinst(z)[a].`TYPE`_funcinst{deftype#8}] +[visit_exp $funcinst(z)[a]] +[visit_exp $funcinst(z)] +[visit_exp z] +[visit_id z] not free +[visit_exp a] +[visit_id a] not free +[visit_exp deftype#8] +[visit_id deftype#8] +[visit_exp `FUNC%->%`_comptype{resulttype#3000}(`%`_resulttype{`X*#12527`}(t_1^n{t_1 <- `t_1*`}), `%`_resulttype{`X*#12540`}(t_2^m{t_2 <- `t_2*`}))] +[visit_exp resulttype#3000] +[visit_id resulttype#3000] +[visit_exp (`%`_resulttype{`X*#12527`}(t_1^n{t_1 <- `t_1*`}), `%`_resulttype{`X*#12540`}(t_2^m{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#12527`}(t_1^n{t_1 <- `t_1*`})] +[visit_exp `X*#12527`] +[visit_id X*#12527] +[visit_exp (t_1^n{t_1 <- `t_1*`})] +[visit_exp t_1^n{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp n] +[visit_id n] not free +[visit_exp `t_1*`] +[visit_id t_1*] no dims +[visit_id t_1*] +[visit_exp `%`_resulttype{`X*#12540`}(t_2^m{t_2 <- `t_2*`})] +[visit_exp `X*#12540`] +[visit_id X*#12540] +[visit_exp (t_2^m{t_2 <- `t_2*`})] +[visit_exp t_2^m{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp m] +[visit_id m] +[visit_exp `t_2*`] +[visit_id t_2*] no dims +[visit_id t_2*] +[check_dims] heaptype#1321 null?#1303 reftype#3451 tableidx#49 tableidx#51 typeuse#57 typeuse#59 x yy +[visit_exp [`CALL_INDIRECT`_instr{tableidx#49, typeuse#57}(x, yy)]] +[visit_exp `CALL_INDIRECT`_instr{tableidx#49, typeuse#57}(x, yy)] +[visit_exp tableidx#49] +[visit_id tableidx#49] +[visit_exp typeuse#57] +[visit_id typeuse#57] +[visit_exp (x, yy)] +[visit_exp x] +[visit_id x] +[visit_exp yy] +[visit_id yy] +[visit_exp [`TABLE.GET`_instr{tableidx#51}(x) `REF.CAST`_instr{reftype#3451}(`REF`_reftype{`null?#1303`, heaptype#1321}(?(`NULL`_null), (yy : typeuse <: heaptype))) `CALL_REF`_instr{typeuse#59}(yy)]] +[visit_exp `TABLE.GET`_instr{tableidx#51}(x)] +[visit_exp tableidx#51] +[visit_id tableidx#51] +[visit_exp (x)] +[visit_exp x] +[visit_id x] not free +[visit_exp `REF.CAST`_instr{reftype#3451}(`REF`_reftype{`null?#1303`, heaptype#1321}(?(`NULL`_null), (yy : typeuse <: heaptype)))] +[visit_exp reftype#3451] +[visit_id reftype#3451] +[visit_exp (`REF`_reftype{`null?#1303`, heaptype#1321}(?(`NULL`_null), (yy : typeuse <: heaptype)))] +[visit_exp `REF`_reftype{`null?#1303`, heaptype#1321}(?(`NULL`_null), (yy : typeuse <: heaptype))] +[visit_exp `null?#1303`] +[visit_id null?#1303] +[visit_exp heaptype#1321] +[visit_id heaptype#1321] +[visit_exp (?(`NULL`_null), (yy : typeuse <: heaptype))] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp (yy : typeuse <: heaptype)] +[visit_exp yy] +[visit_id yy] not free +[visit_exp `CALL_REF`_instr{typeuse#59}(yy)] +[visit_exp typeuse#59] +[visit_id typeuse#59] +[visit_exp (yy)] +[visit_exp yy] +[visit_id yy] not free +[check_dims] heaptype#1333 null?#1315 reftype#3453 tableidx#53 tableidx#55 typeuse#61 typeuse#63 x yy +[visit_exp [`RETURN_CALL_INDIRECT`_instr{tableidx#53, typeuse#61}(x, yy)]] +[visit_exp `RETURN_CALL_INDIRECT`_instr{tableidx#53, typeuse#61}(x, yy)] +[visit_exp tableidx#53] +[visit_id tableidx#53] +[visit_exp typeuse#61] +[visit_id typeuse#61] +[visit_exp (x, yy)] +[visit_exp x] +[visit_id x] +[visit_exp yy] +[visit_id yy] +[visit_exp [`TABLE.GET`_instr{tableidx#55}(x) `REF.CAST`_instr{reftype#3453}(`REF`_reftype{`null?#1315`, heaptype#1333}(?(`NULL`_null), (yy : typeuse <: heaptype))) `RETURN_CALL_REF`_instr{typeuse#63}(yy)]] +[visit_exp `TABLE.GET`_instr{tableidx#55}(x)] +[visit_exp tableidx#55] +[visit_id tableidx#55] +[visit_exp (x)] +[visit_exp x] +[visit_id x] not free +[visit_exp `REF.CAST`_instr{reftype#3453}(`REF`_reftype{`null?#1315`, heaptype#1333}(?(`NULL`_null), (yy : typeuse <: heaptype)))] +[visit_exp reftype#3453] +[visit_id reftype#3453] +[visit_exp (`REF`_reftype{`null?#1315`, heaptype#1333}(?(`NULL`_null), (yy : typeuse <: heaptype)))] +[visit_exp `REF`_reftype{`null?#1315`, heaptype#1333}(?(`NULL`_null), (yy : typeuse <: heaptype))] +[visit_exp `null?#1315`] +[visit_id null?#1315] +[visit_exp heaptype#1333] +[visit_id heaptype#1333] +[visit_exp (?(`NULL`_null), (yy : typeuse <: heaptype))] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp (yy : typeuse <: heaptype)] +[visit_exp yy] +[visit_id yy] not free +[visit_exp `RETURN_CALL_REF`_instr{typeuse#63}(yy)] +[visit_exp typeuse#63] +[visit_id typeuse#63] +[visit_exp (yy)] +[visit_exp yy] +[visit_id yy] not free +[check_dims] f frame#947 instr*#542 n n#1177 val +[visit_exp [`FRAME_%{%}%`_instr{n#1177, frame#947, `instr*#542`}(n, f, (val : val <: instr)^n{val <- `val*`})]] +[visit_exp `FRAME_%{%}%`_instr{n#1177, frame#947, `instr*#542`}(n, f, (val : val <: instr)^n{val <- `val*`})] +[visit_exp n#1177] +[visit_id n#1177] +[visit_exp frame#947] +[visit_id frame#947] +[visit_exp `instr*#542`] +[visit_id instr*#542] +[visit_exp (n, f, (val : val <: instr)^n{val <- `val*`})] +[visit_exp n] +[visit_id n] +[visit_exp f] +[visit_id f] +[visit_exp (val : val <: instr)^n{val <- `val*`}] +[scope_enter val] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp n] +[visit_id n] not free +[visit_exp `val*`] +[visit_id val*] no dims +[visit_id val*] +[visit_exp (val : val <: instr)^n{val <- `val*`}] +[scope_enter val] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp n] +[visit_id n] not free +[visit_exp `val*`] +[visit_id val*] not free +[visit_id val*] no dims +[check_dims] f frame#949 instr instr*#544 n n#1179 val val' +[visit_exp [`FRAME_%{%}%`_instr{n#1179, frame#949, `instr*#544`}(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`RETURN`_instr] ++ instr*{instr <- `instr*`})]] +[visit_exp `FRAME_%{%}%`_instr{n#1179, frame#949, `instr*#544`}(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`RETURN`_instr] ++ instr*{instr <- `instr*`})] +[visit_exp n#1179] +[visit_id n#1179] +[visit_exp frame#949] +[visit_id frame#949] +[visit_exp `instr*#544`] +[visit_id instr*#544] +[visit_exp (n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`RETURN`_instr] ++ instr*{instr <- `instr*`})] +[visit_exp n] +[visit_id n] +[visit_exp f] +[visit_id f] +[visit_exp (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`RETURN`_instr] ++ instr*{instr <- `instr*`}] +[visit_exp (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`RETURN`_instr]] +[visit_exp (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`}] +[visit_exp (val' : val <: instr)*{val' <- `val'*`}] +[scope_enter val'] +[visit_exp (val' : val <: instr)] +[visit_exp val'] +[visit_id val'] not free +[visit_id val'] not free +[scope_exit val'] +[visit_exp `val'*`] +[visit_id val'*] no dims +[visit_id val'*] +[visit_exp (val : val <: instr)^n{val <- `val*`}] +[scope_enter val] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp n] +[visit_id n] not free +[visit_exp `val*`] +[visit_id val*] no dims +[visit_id val*] +[visit_exp [`RETURN`_instr]] +[visit_exp `RETURN`_instr] +[visit_exp ()] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] no dims +[visit_id instr*] +[visit_exp (val : val <: instr)^n{val <- `val*`}] +[scope_enter val] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp n] +[visit_id n] not free +[visit_exp `val*`] +[visit_id val*] not free +[visit_id val*] no dims +[check_dims] instr instr' instr*#546 n n#1181 val +[visit_exp [`LABEL_%{%}%`_instr{n#1181, `instr*#546`}(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN`_instr] ++ instr*{instr <- `instr*`})]] +[visit_exp `LABEL_%{%}%`_instr{n#1181, `instr*#546`}(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN`_instr] ++ instr*{instr <- `instr*`})] +[visit_exp n#1181] +[visit_id n#1181] +[visit_exp `instr*#546`] +[visit_id instr*#546] +[visit_exp (n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN`_instr] ++ instr*{instr <- `instr*`})] +[visit_exp n] +[visit_id n] +[visit_exp instr'*{instr' <- `instr'*`}] +[scope_enter instr'] +[visit_exp instr'] +[visit_id instr'] not free +[visit_id instr'] not free +[scope_exit instr'] +[visit_exp `instr'*`] +[visit_id instr'*] no dims +[visit_id instr'*] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`RETURN`_instr] ++ instr*{instr <- `instr*`}] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`RETURN`_instr]] +[visit_exp (val : val <: instr)*{val <- `val*`}] +[scope_enter val] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp `val*`] +[visit_id val*] no dims +[visit_id val*] +[visit_exp [`RETURN`_instr]] +[visit_exp `RETURN`_instr] +[visit_exp ()] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] no dims +[visit_id instr*] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`RETURN`_instr]] +[visit_exp (val : val <: instr)*{val <- `val*`}] +[scope_enter val] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp `val*`] +[visit_id val*] not free +[visit_id val*] no dims +[visit_exp [`RETURN`_instr]] +[visit_exp `RETURN`_instr] +[visit_exp ()] +[check_dims] catch catch*#5 instr instr*#549 n n#1183 val +[visit_exp [`HANDLER_%{%}%`_instr{n#1183, `catch*#5`, `instr*#549`}(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN`_instr] ++ instr*{instr <- `instr*`})]] +[visit_exp `HANDLER_%{%}%`_instr{n#1183, `catch*#5`, `instr*#549`}(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN`_instr] ++ instr*{instr <- `instr*`})] +[visit_exp n#1183] +[visit_id n#1183] +[visit_exp `catch*#5`] +[visit_id catch*#5] +[visit_exp `instr*#549`] +[visit_id instr*#549] +[visit_exp (n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN`_instr] ++ instr*{instr <- `instr*`})] +[visit_exp n] +[visit_id n] +[visit_exp catch*{catch <- `catch*`}] +[scope_enter catch] +[visit_exp catch] +[visit_id catch] not free +[visit_id catch] not free +[scope_exit catch] +[visit_exp `catch*`] +[visit_id catch*] no dims +[visit_id catch*] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`RETURN`_instr] ++ instr*{instr <- `instr*`}] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`RETURN`_instr]] +[visit_exp (val : val <: instr)*{val <- `val*`}] +[scope_enter val] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp `val*`] +[visit_id val*] no dims +[visit_id val*] +[visit_exp [`RETURN`_instr]] +[visit_exp `RETURN`_instr] +[visit_exp ()] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] no dims +[visit_id instr*] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`RETURN`_instr]] +[visit_exp (val : val <: instr)*{val <- `val*`}] +[scope_enter val] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp `val*`] +[visit_id val*] not free +[visit_id val*] no dims +[visit_exp [`RETURN`_instr]] +[visit_exp `RETURN`_instr] +[visit_exp ()] +[check_dims] X*#12555 X*#12578 a exn exnaddr#3 i#32555 instr*#561 instr*#573 n resulttype#3003 state#479 state#491 t tagaddr#5 tagidx#11 tagtype#180 val val*#1 x z +[visit_exp `%;%`_config{state#479, `instr*#561`}(z, (val : val <: instr)^n{val <- `val*`} ++ [`THROW`_instr{tagidx#11}(x)])] +[visit_exp state#479] +[visit_id state#479] +[visit_exp `instr*#561`] +[visit_id instr*#561] +[visit_exp (z, (val : val <: instr)^n{val <- `val*`} ++ [`THROW`_instr{tagidx#11}(x)])] +[visit_exp z] +[visit_id z] +[visit_exp (val : val <: instr)^n{val <- `val*`} ++ [`THROW`_instr{tagidx#11}(x)]] +[visit_exp (val : val <: instr)^n{val <- `val*`}] +[scope_enter val] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp n] +[visit_id n] +[visit_exp `val*`] +[visit_id val*] no dims +[visit_id val*] +[visit_exp [`THROW`_instr{tagidx#11}(x)]] +[visit_exp `THROW`_instr{tagidx#11}(x)] +[visit_exp tagidx#11] +[visit_id tagidx#11] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%;%`_config{state#491, `instr*#573`}($add_exninst(z, [exn]), [`REF.EXN_ADDR`_instr{exnaddr#3}(a) `THROW_REF`_instr])] +[visit_exp state#491] +[visit_id state#491] +[visit_exp `instr*#573`] +[visit_id instr*#573] +[visit_exp ($add_exninst(z, [exn]), [`REF.EXN_ADDR`_instr{exnaddr#3}(a) `THROW_REF`_instr])] +[visit_exp $add_exninst(z, [exn])] +[visit_exp z] +[visit_id z] not free +[visit_exp [exn]] +[visit_exp exn] +[visit_id exn] +[visit_exp [`REF.EXN_ADDR`_instr{exnaddr#3}(a) `THROW_REF`_instr]] +[visit_exp `REF.EXN_ADDR`_instr{exnaddr#3}(a)] +[visit_exp exnaddr#3] +[visit_id exnaddr#3] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp `THROW_REF`_instr] +[visit_exp ()] +[visit_exp ($as_deftype($tag(z, x).`TYPE`_taginst{tagtype#180}), `FUNC%->%`_comptype{resulttype#3003}(`%`_resulttype{`X*#12555`}(t^n{t <- `t*`}), `%`_resulttype{`X*#12578`}([])))] +[visit_exp $as_deftype($tag(z, x).`TYPE`_taginst{tagtype#180})] +[visit_exp $tag(z, x).`TYPE`_taginst{tagtype#180}] +[visit_exp $tag(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp tagtype#180] +[visit_id tagtype#180] +[visit_exp `FUNC%->%`_comptype{resulttype#3003}(`%`_resulttype{`X*#12555`}(t^n{t <- `t*`}), `%`_resulttype{`X*#12578`}([]))] +[visit_exp resulttype#3003] +[visit_id resulttype#3003] +[visit_exp (`%`_resulttype{`X*#12555`}(t^n{t <- `t*`}), `%`_resulttype{`X*#12578`}([]))] +[visit_exp `%`_resulttype{`X*#12555`}(t^n{t <- `t*`})] +[visit_exp `X*#12555`] +[visit_id X*#12555] +[visit_exp (t^n{t <- `t*`})] +[visit_exp t^n{t <- `t*`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp n] +[visit_id n] not free +[visit_exp `t*`] +[visit_id t*] no dims +[visit_id t*] +[visit_exp `%`_resulttype{`X*#12578`}([])] +[visit_exp `X*#12578`] +[visit_id X*#12578] +[visit_exp ([])] +[visit_exp []] +[visit_exp (a = |$exninst(z)|)] +[visit_exp a] +[visit_id a] not free +[visit_exp |$exninst(z)|] +[visit_exp $exninst(z)] +[visit_exp z] +[visit_id z] not free +[visit_exp (exn = {`TAG`{tagaddr#5} $tagaddr(z)[x!`%`_idx{i#32555}.0], `FIELDS`{`val*#1`} val^n{val <- `val*`}})] +[visit_exp exn] +[visit_id exn] not free +[visit_exp {`TAG`{tagaddr#5} $tagaddr(z)[x!`%`_idx{i#32555}.0], `FIELDS`{`val*#1`} val^n{val <- `val*`}}] +[visit_exp tagaddr#5] +[visit_id tagaddr#5] +[visit_exp $tagaddr(z)[x!`%`_idx{i#32555}.0]] +[visit_exp $tagaddr(z)] +[visit_exp z] +[visit_id z] not free +[visit_exp x!`%`_idx{i#32555}.0] +[visit_exp x!`%`_idx{i#32555}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#32555] +[visit_id i#32555] +[visit_exp `val*#1`] +[visit_id val*#1] +[visit_exp val^n{val <- `val*`}] +[scope_enter val] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp n] +[visit_id n] not free +[visit_exp `val*`] +[visit_id val*] not free +[visit_id val*] no dims +[check_dims] heaptype#1335 ht instr*#585 state#503 z +[visit_exp `%;%`_config{state#503, `instr*#585`}(z, [`REF.NULL`_instr{heaptype#1335}(ht) `THROW_REF`_instr])] +[visit_exp state#503] +[visit_id state#503] +[visit_exp `instr*#585`] +[visit_id instr*#585] +[visit_exp (z, [`REF.NULL`_instr{heaptype#1335}(ht) `THROW_REF`_instr])] +[visit_exp z] +[visit_id z] +[visit_exp [`REF.NULL`_instr{heaptype#1335}(ht) `THROW_REF`_instr]] +[visit_exp `REF.NULL`_instr{heaptype#1335}(ht)] +[visit_exp heaptype#1335] +[visit_id heaptype#1335] +[visit_exp (ht)] +[visit_exp ht] +[visit_id ht] +[visit_exp `THROW_REF`_instr] +[visit_exp ()] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[check_dims] a exnaddr#5 exnaddr#7 instr instr*#597 state#515 val z +[visit_exp `%;%`_config{state#515, `instr*#597`}(z, (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr{exnaddr#5}(a)] ++ [`THROW_REF`_instr] ++ instr*{instr <- `instr*`})] +[visit_exp state#515] +[visit_id state#515] +[visit_exp `instr*#597`] +[visit_id instr*#597] +[visit_exp (z, (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr{exnaddr#5}(a)] ++ [`THROW_REF`_instr] ++ instr*{instr <- `instr*`})] +[visit_exp z] +[visit_id z] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr{exnaddr#5}(a)] ++ [`THROW_REF`_instr] ++ instr*{instr <- `instr*`}] +[visit_exp (val : val <: instr)*{val <- `val*`}] +[scope_enter val] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp `val*`] +[visit_id val*] no dims +[visit_id val*] +[visit_exp [`REF.EXN_ADDR`_instr{exnaddr#5}(a)] ++ [`THROW_REF`_instr] ++ instr*{instr <- `instr*`}] +[visit_exp [`REF.EXN_ADDR`_instr{exnaddr#5}(a)]] +[visit_exp `REF.EXN_ADDR`_instr{exnaddr#5}(a)] +[visit_exp exnaddr#5] +[visit_id exnaddr#5] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp [`THROW_REF`_instr] ++ instr*{instr <- `instr*`}] +[visit_exp [`THROW_REF`_instr]] +[visit_exp `THROW_REF`_instr] +[visit_exp ()] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] no dims +[visit_id instr*] +[visit_exp [`REF.EXN_ADDR`_instr{exnaddr#7}(a) `THROW_REF`_instr]] +[visit_exp `REF.EXN_ADDR`_instr{exnaddr#7}(a)] +[visit_exp exnaddr#7] +[visit_id exnaddr#7] +[visit_exp (a)] +[visit_exp a] +[visit_id a] not free +[visit_exp `THROW_REF`_instr] +[visit_exp ()] +[visit_exp ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= []))] +[visit_exp (val*{val <- `val*`} =/= [])] +[visit_exp val*{val <- `val*`}] +[scope_enter val] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp `val*`] +[visit_id val*] not free +[visit_id val*] no dims +[visit_exp []] +[visit_exp (instr*{instr <- `instr*`} =/= [])] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] not free +[visit_id instr*] no dims +[visit_exp []] +[check_dims] a exnaddr#11 exnaddr#9 instr' instr*#609 instr*#611 n n#1191 state#527 z +[visit_exp `%;%`_config{state#527, `instr*#609`}(z, [`LABEL_%{%}%`_instr{n#1191, `instr*#611`}(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr{exnaddr#9}(a) `THROW_REF`_instr])])] +[visit_exp state#527] +[visit_id state#527] +[visit_exp `instr*#609`] +[visit_id instr*#609] +[visit_exp (z, [`LABEL_%{%}%`_instr{n#1191, `instr*#611`}(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr{exnaddr#9}(a) `THROW_REF`_instr])])] +[visit_exp z] +[visit_id z] +[visit_exp [`LABEL_%{%}%`_instr{n#1191, `instr*#611`}(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr{exnaddr#9}(a) `THROW_REF`_instr])]] +[visit_exp `LABEL_%{%}%`_instr{n#1191, `instr*#611`}(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr{exnaddr#9}(a) `THROW_REF`_instr])] +[visit_exp n#1191] +[visit_id n#1191] +[visit_exp `instr*#611`] +[visit_id instr*#611] +[visit_exp (n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr{exnaddr#9}(a) `THROW_REF`_instr])] +[visit_exp n] +[visit_id n] +[visit_exp instr'*{instr' <- `instr'*`}] +[scope_enter instr'] +[visit_exp instr'] +[visit_id instr'] not free +[visit_id instr'] not free +[scope_exit instr'] +[visit_exp `instr'*`] +[visit_id instr'*] no dims +[visit_id instr'*] +[visit_exp [`REF.EXN_ADDR`_instr{exnaddr#9}(a) `THROW_REF`_instr]] +[visit_exp `REF.EXN_ADDR`_instr{exnaddr#9}(a)] +[visit_exp exnaddr#9] +[visit_id exnaddr#9] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp `THROW_REF`_instr] +[visit_exp ()] +[visit_exp [`REF.EXN_ADDR`_instr{exnaddr#11}(a) `THROW_REF`_instr]] +[visit_exp `REF.EXN_ADDR`_instr{exnaddr#11}(a)] +[visit_exp exnaddr#11] +[visit_id exnaddr#11] +[visit_exp (a)] +[visit_exp a] +[visit_id a] not free +[visit_exp `THROW_REF`_instr] +[visit_exp ()] +[check_dims] a exnaddr#13 exnaddr#15 f frame#1011 instr*#624 instr*#626 n n#1193 state#539 z +[visit_exp `%;%`_config{state#539, `instr*#624`}(z, [`FRAME_%{%}%`_instr{n#1193, frame#1011, `instr*#626`}(n, f, [`REF.EXN_ADDR`_instr{exnaddr#13}(a) `THROW_REF`_instr])])] +[visit_exp state#539] +[visit_id state#539] +[visit_exp `instr*#624`] +[visit_id instr*#624] +[visit_exp (z, [`FRAME_%{%}%`_instr{n#1193, frame#1011, `instr*#626`}(n, f, [`REF.EXN_ADDR`_instr{exnaddr#13}(a) `THROW_REF`_instr])])] +[visit_exp z] +[visit_id z] +[visit_exp [`FRAME_%{%}%`_instr{n#1193, frame#1011, `instr*#626`}(n, f, [`REF.EXN_ADDR`_instr{exnaddr#13}(a) `THROW_REF`_instr])]] +[visit_exp `FRAME_%{%}%`_instr{n#1193, frame#1011, `instr*#626`}(n, f, [`REF.EXN_ADDR`_instr{exnaddr#13}(a) `THROW_REF`_instr])] +[visit_exp n#1193] +[visit_id n#1193] +[visit_exp frame#1011] +[visit_id frame#1011] +[visit_exp `instr*#626`] +[visit_id instr*#626] +[visit_exp (n, f, [`REF.EXN_ADDR`_instr{exnaddr#13}(a) `THROW_REF`_instr])] +[visit_exp n] +[visit_id n] +[visit_exp f] +[visit_id f] +[visit_exp [`REF.EXN_ADDR`_instr{exnaddr#13}(a) `THROW_REF`_instr]] +[visit_exp `REF.EXN_ADDR`_instr{exnaddr#13}(a)] +[visit_exp exnaddr#13] +[visit_id exnaddr#13] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp `THROW_REF`_instr] +[visit_exp ()] +[visit_exp [`REF.EXN_ADDR`_instr{exnaddr#15}(a) `THROW_REF`_instr]] +[visit_exp `REF.EXN_ADDR`_instr{exnaddr#15}(a)] +[visit_exp exnaddr#15] +[visit_id exnaddr#15] +[visit_exp (a)] +[visit_exp a] +[visit_id a] not free +[visit_exp `THROW_REF`_instr] +[visit_exp ()] +[check_dims] a catch*#7 exnaddr#17 exnaddr#19 instr*#638 instr*#640 n n#1195 state#551 z +[visit_exp `%;%`_config{state#551, `instr*#638`}(z, [`HANDLER_%{%}%`_instr{n#1195, `catch*#7`, `instr*#640`}(n, [], [`REF.EXN_ADDR`_instr{exnaddr#17}(a) `THROW_REF`_instr])])] +[visit_exp state#551] +[visit_id state#551] +[visit_exp `instr*#638`] +[visit_id instr*#638] +[visit_exp (z, [`HANDLER_%{%}%`_instr{n#1195, `catch*#7`, `instr*#640`}(n, [], [`REF.EXN_ADDR`_instr{exnaddr#17}(a) `THROW_REF`_instr])])] +[visit_exp z] +[visit_id z] +[visit_exp [`HANDLER_%{%}%`_instr{n#1195, `catch*#7`, `instr*#640`}(n, [], [`REF.EXN_ADDR`_instr{exnaddr#17}(a) `THROW_REF`_instr])]] +[visit_exp `HANDLER_%{%}%`_instr{n#1195, `catch*#7`, `instr*#640`}(n, [], [`REF.EXN_ADDR`_instr{exnaddr#17}(a) `THROW_REF`_instr])] +[visit_exp n#1195] +[visit_id n#1195] +[visit_exp `catch*#7`] +[visit_id catch*#7] +[visit_exp `instr*#640`] +[visit_id instr*#640] +[visit_exp (n, [], [`REF.EXN_ADDR`_instr{exnaddr#17}(a) `THROW_REF`_instr])] +[visit_exp n] +[visit_id n] +[visit_exp []] +[visit_exp [`REF.EXN_ADDR`_instr{exnaddr#17}(a) `THROW_REF`_instr]] +[visit_exp `REF.EXN_ADDR`_instr{exnaddr#17}(a)] +[visit_exp exnaddr#17] +[visit_id exnaddr#17] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp `THROW_REF`_instr] +[visit_exp ()] +[visit_exp [`REF.EXN_ADDR`_instr{exnaddr#19}(a) `THROW_REF`_instr]] +[visit_exp `REF.EXN_ADDR`_instr{exnaddr#19}(a)] +[visit_exp exnaddr#19] +[visit_id exnaddr#19] +[visit_exp (a)] +[visit_exp a] +[visit_id a] not free +[visit_exp `THROW_REF`_instr] +[visit_exp ()] +[check_dims] a catch' catch*#9 exnaddr#21 i#32603 instr*#652 instr*#654 l labelidx#85 labelidx#87 n n#1197 state#563 tagaddr#6 tagidx#13 val val*#2 x z +[visit_exp `%;%`_config{state#563, `instr*#652`}(z, [`HANDLER_%{%}%`_instr{n#1197, `catch*#9`, `instr*#654`}(n, [`CATCH`_catch{tagidx#13, labelidx#85}(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#21}(a) `THROW_REF`_instr])])] +[visit_exp state#563] +[visit_id state#563] +[visit_exp `instr*#652`] +[visit_id instr*#652] +[visit_exp (z, [`HANDLER_%{%}%`_instr{n#1197, `catch*#9`, `instr*#654`}(n, [`CATCH`_catch{tagidx#13, labelidx#85}(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#21}(a) `THROW_REF`_instr])])] +[visit_exp z] +[visit_id z] +[visit_exp [`HANDLER_%{%}%`_instr{n#1197, `catch*#9`, `instr*#654`}(n, [`CATCH`_catch{tagidx#13, labelidx#85}(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#21}(a) `THROW_REF`_instr])]] +[visit_exp `HANDLER_%{%}%`_instr{n#1197, `catch*#9`, `instr*#654`}(n, [`CATCH`_catch{tagidx#13, labelidx#85}(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#21}(a) `THROW_REF`_instr])] +[visit_exp n#1197] +[visit_id n#1197] +[visit_exp `catch*#9`] +[visit_id catch*#9] +[visit_exp `instr*#654`] +[visit_id instr*#654] +[visit_exp (n, [`CATCH`_catch{tagidx#13, labelidx#85}(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#21}(a) `THROW_REF`_instr])] +[visit_exp n] +[visit_id n] +[visit_exp [`CATCH`_catch{tagidx#13, labelidx#85}(x, l)] ++ catch'*{catch' <- `catch'*`}] +[visit_exp [`CATCH`_catch{tagidx#13, labelidx#85}(x, l)]] +[visit_exp `CATCH`_catch{tagidx#13, labelidx#85}(x, l)] +[visit_exp tagidx#13] +[visit_id tagidx#13] +[visit_exp labelidx#85] +[visit_id labelidx#85] +[visit_exp (x, l)] +[visit_exp x] +[visit_id x] +[visit_exp l] +[visit_id l] +[visit_exp catch'*{catch' <- `catch'*`}] +[scope_enter catch'] +[visit_exp catch'] +[visit_id catch'] not free +[visit_id catch'] not free +[scope_exit catch'] +[visit_exp `catch'*`] +[visit_id catch'*] no dims +[visit_id catch'*] +[visit_exp [`REF.EXN_ADDR`_instr{exnaddr#21}(a) `THROW_REF`_instr]] +[visit_exp `REF.EXN_ADDR`_instr{exnaddr#21}(a)] +[visit_exp exnaddr#21] +[visit_id exnaddr#21] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp `THROW_REF`_instr] +[visit_exp ()] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr{labelidx#87}(l)]] +[visit_exp (val : val <: instr)*{val <- `val*`}] +[scope_enter val] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp `val*`] +[visit_id val*] no dims +[visit_id val*] +[visit_exp [`BR`_instr{labelidx#87}(l)]] +[visit_exp `BR`_instr{labelidx#87}(l)] +[visit_exp labelidx#87] +[visit_id labelidx#87] +[visit_exp (l)] +[visit_exp l] +[visit_id l] not free +[visit_exp ($exninst(z)[a].`TAG`_exninst{tagaddr#6} = $tagaddr(z)[x!`%`_idx{i#32603}.0])] +[visit_exp $exninst(z)[a].`TAG`_exninst{tagaddr#6}] +[visit_exp $exninst(z)[a]] +[visit_exp $exninst(z)] +[visit_exp z] +[visit_id z] not free +[visit_exp a] +[visit_id a] not free +[visit_exp tagaddr#6] +[visit_id tagaddr#6] +[visit_exp $tagaddr(z)[x!`%`_idx{i#32603}.0]] +[visit_exp $tagaddr(z)] +[visit_exp z] +[visit_id z] not free +[visit_exp x!`%`_idx{i#32603}.0] +[visit_exp x!`%`_idx{i#32603}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#32603] +[visit_id i#32603] +[visit_exp (val*{val <- `val*`} = $exninst(z)[a].`FIELDS`_exninst{`val*#2`})] +[visit_exp val*{val <- `val*`}] +[scope_enter val] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp `val*`] +[visit_id val*] not free +[visit_id val*] no dims +[visit_exp $exninst(z)[a].`FIELDS`_exninst{`val*#2`}] +[visit_exp $exninst(z)[a]] +[visit_exp $exninst(z)] +[visit_exp z] +[visit_id z] not free +[visit_exp a] +[visit_id a] not free +[visit_exp `val*#2`] +[visit_id val*#2] +[check_dims] a catch' catch*#11 exnaddr#23 exnaddr#25 i#32651 instr*#666 instr*#668 l labelidx#89 labelidx#91 n n#1199 state#575 tagaddr#7 tagidx#15 val val*#3 x z +[visit_exp `%;%`_config{state#575, `instr*#666`}(z, [`HANDLER_%{%}%`_instr{n#1199, `catch*#11`, `instr*#668`}(n, [`CATCH_REF`_catch{tagidx#15, labelidx#89}(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#23}(a) `THROW_REF`_instr])])] +[visit_exp state#575] +[visit_id state#575] +[visit_exp `instr*#666`] +[visit_id instr*#666] +[visit_exp (z, [`HANDLER_%{%}%`_instr{n#1199, `catch*#11`, `instr*#668`}(n, [`CATCH_REF`_catch{tagidx#15, labelidx#89}(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#23}(a) `THROW_REF`_instr])])] +[visit_exp z] +[visit_id z] +[visit_exp [`HANDLER_%{%}%`_instr{n#1199, `catch*#11`, `instr*#668`}(n, [`CATCH_REF`_catch{tagidx#15, labelidx#89}(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#23}(a) `THROW_REF`_instr])]] +[visit_exp `HANDLER_%{%}%`_instr{n#1199, `catch*#11`, `instr*#668`}(n, [`CATCH_REF`_catch{tagidx#15, labelidx#89}(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#23}(a) `THROW_REF`_instr])] +[visit_exp n#1199] +[visit_id n#1199] +[visit_exp `catch*#11`] +[visit_id catch*#11] +[visit_exp `instr*#668`] +[visit_id instr*#668] +[visit_exp (n, [`CATCH_REF`_catch{tagidx#15, labelidx#89}(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#23}(a) `THROW_REF`_instr])] +[visit_exp n] +[visit_id n] +[visit_exp [`CATCH_REF`_catch{tagidx#15, labelidx#89}(x, l)] ++ catch'*{catch' <- `catch'*`}] +[visit_exp [`CATCH_REF`_catch{tagidx#15, labelidx#89}(x, l)]] +[visit_exp `CATCH_REF`_catch{tagidx#15, labelidx#89}(x, l)] +[visit_exp tagidx#15] +[visit_id tagidx#15] +[visit_exp labelidx#89] +[visit_id labelidx#89] +[visit_exp (x, l)] +[visit_exp x] +[visit_id x] +[visit_exp l] +[visit_id l] +[visit_exp catch'*{catch' <- `catch'*`}] +[scope_enter catch'] +[visit_exp catch'] +[visit_id catch'] not free +[visit_id catch'] not free +[scope_exit catch'] +[visit_exp `catch'*`] +[visit_id catch'*] no dims +[visit_id catch'*] +[visit_exp [`REF.EXN_ADDR`_instr{exnaddr#23}(a) `THROW_REF`_instr]] +[visit_exp `REF.EXN_ADDR`_instr{exnaddr#23}(a)] +[visit_exp exnaddr#23] +[visit_id exnaddr#23] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp `THROW_REF`_instr] +[visit_exp ()] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr{exnaddr#25}(a) `BR`_instr{labelidx#91}(l)]] +[visit_exp (val : val <: instr)*{val <- `val*`}] +[scope_enter val] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp `val*`] +[visit_id val*] no dims +[visit_id val*] +[visit_exp [`REF.EXN_ADDR`_instr{exnaddr#25}(a) `BR`_instr{labelidx#91}(l)]] +[visit_exp `REF.EXN_ADDR`_instr{exnaddr#25}(a)] +[visit_exp exnaddr#25] +[visit_id exnaddr#25] +[visit_exp (a)] +[visit_exp a] +[visit_id a] not free +[visit_exp `BR`_instr{labelidx#91}(l)] +[visit_exp labelidx#91] +[visit_id labelidx#91] +[visit_exp (l)] +[visit_exp l] +[visit_id l] not free +[visit_exp ($exninst(z)[a].`TAG`_exninst{tagaddr#7} = $tagaddr(z)[x!`%`_idx{i#32651}.0])] +[visit_exp $exninst(z)[a].`TAG`_exninst{tagaddr#7}] +[visit_exp $exninst(z)[a]] +[visit_exp $exninst(z)] +[visit_exp z] +[visit_id z] not free +[visit_exp a] +[visit_id a] not free +[visit_exp tagaddr#7] +[visit_id tagaddr#7] +[visit_exp $tagaddr(z)[x!`%`_idx{i#32651}.0]] +[visit_exp $tagaddr(z)] +[visit_exp z] +[visit_id z] not free +[visit_exp x!`%`_idx{i#32651}.0] +[visit_exp x!`%`_idx{i#32651}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#32651] +[visit_id i#32651] +[visit_exp (val*{val <- `val*`} = $exninst(z)[a].`FIELDS`_exninst{`val*#3`})] +[visit_exp val*{val <- `val*`}] +[scope_enter val] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp `val*`] +[visit_id val*] not free +[visit_id val*] no dims +[visit_exp $exninst(z)[a].`FIELDS`_exninst{`val*#3`}] +[visit_exp $exninst(z)[a]] +[visit_exp $exninst(z)] +[visit_exp z] +[visit_id z] not free +[visit_exp a] +[visit_id a] not free +[visit_exp `val*#3`] +[visit_id val*#3] +[check_dims] a catch' catch*#13 exnaddr#27 instr*#680 instr*#682 l labelidx#93 labelidx#95 n n#1201 state#587 z +[visit_exp `%;%`_config{state#587, `instr*#680`}(z, [`HANDLER_%{%}%`_instr{n#1201, `catch*#13`, `instr*#682`}(n, [`CATCH_ALL`_catch{labelidx#93}(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#27}(a) `THROW_REF`_instr])])] +[visit_exp state#587] +[visit_id state#587] +[visit_exp `instr*#680`] +[visit_id instr*#680] +[visit_exp (z, [`HANDLER_%{%}%`_instr{n#1201, `catch*#13`, `instr*#682`}(n, [`CATCH_ALL`_catch{labelidx#93}(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#27}(a) `THROW_REF`_instr])])] +[visit_exp z] +[visit_id z] +[visit_exp [`HANDLER_%{%}%`_instr{n#1201, `catch*#13`, `instr*#682`}(n, [`CATCH_ALL`_catch{labelidx#93}(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#27}(a) `THROW_REF`_instr])]] +[visit_exp `HANDLER_%{%}%`_instr{n#1201, `catch*#13`, `instr*#682`}(n, [`CATCH_ALL`_catch{labelidx#93}(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#27}(a) `THROW_REF`_instr])] +[visit_exp n#1201] +[visit_id n#1201] +[visit_exp `catch*#13`] +[visit_id catch*#13] +[visit_exp `instr*#682`] +[visit_id instr*#682] +[visit_exp (n, [`CATCH_ALL`_catch{labelidx#93}(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#27}(a) `THROW_REF`_instr])] +[visit_exp n] +[visit_id n] +[visit_exp [`CATCH_ALL`_catch{labelidx#93}(l)] ++ catch'*{catch' <- `catch'*`}] +[visit_exp [`CATCH_ALL`_catch{labelidx#93}(l)]] +[visit_exp `CATCH_ALL`_catch{labelidx#93}(l)] +[visit_exp labelidx#93] +[visit_id labelidx#93] +[visit_exp (l)] +[visit_exp l] +[visit_id l] +[visit_exp catch'*{catch' <- `catch'*`}] +[scope_enter catch'] +[visit_exp catch'] +[visit_id catch'] not free +[visit_id catch'] not free +[scope_exit catch'] +[visit_exp `catch'*`] +[visit_id catch'*] no dims +[visit_id catch'*] +[visit_exp [`REF.EXN_ADDR`_instr{exnaddr#27}(a) `THROW_REF`_instr]] +[visit_exp `REF.EXN_ADDR`_instr{exnaddr#27}(a)] +[visit_exp exnaddr#27] +[visit_id exnaddr#27] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp `THROW_REF`_instr] +[visit_exp ()] +[visit_exp [`BR`_instr{labelidx#95}(l)]] +[visit_exp `BR`_instr{labelidx#95}(l)] +[visit_exp labelidx#95] +[visit_id labelidx#95] +[visit_exp (l)] +[visit_exp l] +[visit_id l] not free +[check_dims] a catch' catch*#15 exnaddr#29 exnaddr#31 instr*#694 instr*#696 l labelidx#97 labelidx#99 n n#1203 state#599 z +[visit_exp `%;%`_config{state#599, `instr*#694`}(z, [`HANDLER_%{%}%`_instr{n#1203, `catch*#15`, `instr*#696`}(n, [`CATCH_ALL_REF`_catch{labelidx#97}(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#29}(a) `THROW_REF`_instr])])] +[visit_exp state#599] +[visit_id state#599] +[visit_exp `instr*#694`] +[visit_id instr*#694] +[visit_exp (z, [`HANDLER_%{%}%`_instr{n#1203, `catch*#15`, `instr*#696`}(n, [`CATCH_ALL_REF`_catch{labelidx#97}(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#29}(a) `THROW_REF`_instr])])] +[visit_exp z] +[visit_id z] +[visit_exp [`HANDLER_%{%}%`_instr{n#1203, `catch*#15`, `instr*#696`}(n, [`CATCH_ALL_REF`_catch{labelidx#97}(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#29}(a) `THROW_REF`_instr])]] +[visit_exp `HANDLER_%{%}%`_instr{n#1203, `catch*#15`, `instr*#696`}(n, [`CATCH_ALL_REF`_catch{labelidx#97}(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#29}(a) `THROW_REF`_instr])] +[visit_exp n#1203] +[visit_id n#1203] +[visit_exp `catch*#15`] +[visit_id catch*#15] +[visit_exp `instr*#696`] +[visit_id instr*#696] +[visit_exp (n, [`CATCH_ALL_REF`_catch{labelidx#97}(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#29}(a) `THROW_REF`_instr])] +[visit_exp n] +[visit_id n] +[visit_exp [`CATCH_ALL_REF`_catch{labelidx#97}(l)] ++ catch'*{catch' <- `catch'*`}] +[visit_exp [`CATCH_ALL_REF`_catch{labelidx#97}(l)]] +[visit_exp `CATCH_ALL_REF`_catch{labelidx#97}(l)] +[visit_exp labelidx#97] +[visit_id labelidx#97] +[visit_exp (l)] +[visit_exp l] +[visit_id l] +[visit_exp catch'*{catch' <- `catch'*`}] +[scope_enter catch'] +[visit_exp catch'] +[visit_id catch'] not free +[visit_id catch'] not free +[scope_exit catch'] +[visit_exp `catch'*`] +[visit_id catch'*] no dims +[visit_id catch'*] +[visit_exp [`REF.EXN_ADDR`_instr{exnaddr#29}(a) `THROW_REF`_instr]] +[visit_exp `REF.EXN_ADDR`_instr{exnaddr#29}(a)] +[visit_exp exnaddr#29] +[visit_id exnaddr#29] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp `THROW_REF`_instr] +[visit_exp ()] +[visit_exp [`REF.EXN_ADDR`_instr{exnaddr#31}(a) `BR`_instr{labelidx#99}(l)]] +[visit_exp `REF.EXN_ADDR`_instr{exnaddr#31}(a)] +[visit_exp exnaddr#31] +[visit_id exnaddr#31] +[visit_exp (a)] +[visit_exp a] +[visit_id a] not free +[visit_exp `BR`_instr{labelidx#99}(l)] +[visit_exp labelidx#99] +[visit_id labelidx#99] +[visit_exp (l)] +[visit_exp l] +[visit_id l] not free +[check_dims] a catch catch' catch*#17 catch*#19 exnaddr#33 exnaddr#35 instr*#708 instr*#710 instr*#712 n n#1205 n#1207 state#611 z +[visit_exp `%;%`_config{state#611, `instr*#708`}(z, [`HANDLER_%{%}%`_instr{n#1205, `catch*#17`, `instr*#710`}(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#33}(a) `THROW_REF`_instr])])] +[visit_exp state#611] +[visit_id state#611] +[visit_exp `instr*#708`] +[visit_id instr*#708] +[visit_exp (z, [`HANDLER_%{%}%`_instr{n#1205, `catch*#17`, `instr*#710`}(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#33}(a) `THROW_REF`_instr])])] +[visit_exp z] +[visit_id z] +[visit_exp [`HANDLER_%{%}%`_instr{n#1205, `catch*#17`, `instr*#710`}(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#33}(a) `THROW_REF`_instr])]] +[visit_exp `HANDLER_%{%}%`_instr{n#1205, `catch*#17`, `instr*#710`}(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#33}(a) `THROW_REF`_instr])] +[visit_exp n#1205] +[visit_id n#1205] +[visit_exp `catch*#17`] +[visit_id catch*#17] +[visit_exp `instr*#710`] +[visit_id instr*#710] +[visit_exp (n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#33}(a) `THROW_REF`_instr])] +[visit_exp n] +[visit_id n] +[visit_exp [catch] ++ catch'*{catch' <- `catch'*`}] +[visit_exp [catch]] +[visit_exp catch] +[visit_id catch] +[visit_exp catch'*{catch' <- `catch'*`}] +[scope_enter catch'] +[visit_exp catch'] +[visit_id catch'] not free +[visit_id catch'] not free +[scope_exit catch'] +[visit_exp `catch'*`] +[visit_id catch'*] no dims +[visit_id catch'*] +[visit_exp [`REF.EXN_ADDR`_instr{exnaddr#33}(a) `THROW_REF`_instr]] +[visit_exp `REF.EXN_ADDR`_instr{exnaddr#33}(a)] +[visit_exp exnaddr#33] +[visit_id exnaddr#33] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp `THROW_REF`_instr] +[visit_exp ()] +[visit_exp [`HANDLER_%{%}%`_instr{n#1207, `catch*#19`, `instr*#712`}(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#35}(a) `THROW_REF`_instr])]] +[visit_exp `HANDLER_%{%}%`_instr{n#1207, `catch*#19`, `instr*#712`}(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#35}(a) `THROW_REF`_instr])] +[visit_exp n#1207] +[visit_id n#1207] +[visit_exp `catch*#19`] +[visit_id catch*#19] +[visit_exp `instr*#712`] +[visit_id instr*#712] +[visit_exp (n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#35}(a) `THROW_REF`_instr])] +[visit_exp n] +[visit_id n] not free +[visit_exp catch'*{catch' <- `catch'*`}] +[scope_enter catch'] +[visit_exp catch'] +[visit_id catch'] not free +[visit_id catch'] not free +[scope_exit catch'] +[visit_exp `catch'*`] +[visit_id catch'*] not free +[visit_id catch'*] no dims +[visit_exp [`REF.EXN_ADDR`_instr{exnaddr#35}(a) `THROW_REF`_instr]] +[visit_exp `REF.EXN_ADDR`_instr{exnaddr#35}(a)] +[visit_exp exnaddr#35] +[visit_id exnaddr#35] +[visit_exp (a)] +[visit_exp a] +[visit_id a] not free +[visit_exp `THROW_REF`_instr] +[visit_exp ()] +[check_dims] X*#12591 X*#12604 X*#12655 blocktype#29 bt catch catch*#21 instr instr*#724 instr*#726 instr*#728 instr*#730 localidx*#1805 m n n#1209 n#1211 resulttype#3023 state#623 t_1 t_2 val z +[visit_exp `%;%`_config{state#623, `instr*#724`}(z, (val : val <: instr)^m{val <- `val*`} ++ [`TRY_TABLE`_instr{blocktype#29, `instr*#726`}(bt, `%`_list{`X*#12591`}(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])] +[visit_exp state#623] +[visit_id state#623] +[visit_exp `instr*#724`] +[visit_id instr*#724] +[visit_exp (z, (val : val <: instr)^m{val <- `val*`} ++ [`TRY_TABLE`_instr{blocktype#29, `instr*#726`}(bt, `%`_list{`X*#12591`}(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])] +[visit_exp z] +[visit_id z] +[visit_exp (val : val <: instr)^m{val <- `val*`} ++ [`TRY_TABLE`_instr{blocktype#29, `instr*#726`}(bt, `%`_list{`X*#12591`}(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]] +[visit_exp (val : val <: instr)^m{val <- `val*`}] +[scope_enter val] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp m] +[visit_id m] +[visit_exp `val*`] +[visit_id val*] no dims +[visit_id val*] +[visit_exp [`TRY_TABLE`_instr{blocktype#29, `instr*#726`}(bt, `%`_list{`X*#12591`}(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]] +[visit_exp `TRY_TABLE`_instr{blocktype#29, `instr*#726`}(bt, `%`_list{`X*#12591`}(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})] +[visit_exp blocktype#29] +[visit_id blocktype#29] +[visit_exp `instr*#726`] +[visit_id instr*#726] +[visit_exp (bt, `%`_list{`X*#12591`}(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})] +[visit_exp bt] +[visit_id bt] +[visit_exp `%`_list{`X*#12591`}(catch*{catch <- `catch*`})] +[visit_exp `X*#12591`] +[visit_id X*#12591] +[visit_exp (catch*{catch <- `catch*`})] +[visit_exp catch*{catch <- `catch*`}] +[scope_enter catch] +[visit_exp catch] +[visit_id catch] not free +[visit_id catch] not free +[scope_exit catch] +[visit_exp `catch*`] +[visit_id catch*] no dims +[visit_id catch*] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] no dims +[visit_id instr*] +[visit_exp [`HANDLER_%{%}%`_instr{n#1209, `catch*#21`, `instr*#728`}(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr{n#1211, `instr*#730`}(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]] +[visit_exp `HANDLER_%{%}%`_instr{n#1209, `catch*#21`, `instr*#728`}(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr{n#1211, `instr*#730`}(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])] +[visit_exp n#1209] +[visit_id n#1209] +[visit_exp `catch*#21`] +[visit_id catch*#21] +[visit_exp `instr*#728`] +[visit_id instr*#728] +[visit_exp (n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr{n#1211, `instr*#730`}(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])] +[visit_exp n] +[visit_id n] +[visit_exp catch*{catch <- `catch*`}] +[scope_enter catch] +[visit_exp catch] +[visit_id catch] not free +[visit_id catch] not free +[scope_exit catch] +[visit_exp `catch*`] +[visit_id catch*] not free +[visit_id catch*] no dims +[visit_exp [`LABEL_%{%}%`_instr{n#1211, `instr*#730`}(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]] +[visit_exp `LABEL_%{%}%`_instr{n#1211, `instr*#730`}(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})] +[visit_exp n#1211] +[visit_id n#1211] +[visit_exp `instr*#730`] +[visit_id instr*#730] +[visit_exp (n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})] +[visit_exp n] +[visit_id n] not free +[visit_exp []] +[visit_exp (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`}] +[visit_exp (val : val <: instr)^m{val <- `val*`}] +[scope_enter val] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp m] +[visit_id m] not free +[visit_exp `val*`] +[visit_id val*] not free +[visit_id val*] no dims +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] not free +[visit_id instr*] no dims +[visit_exp ($blocktype_(z, bt) = `%->_%%`_instrtype{resulttype#3023, `localidx*#1805`}(`%`_resulttype{`X*#12604`}(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#12655`}(t_2^n{t_2 <- `t_2*`})))] +[visit_exp $blocktype_(z, bt)] +[visit_exp z] +[visit_id z] not free +[visit_exp bt] +[visit_id bt] not free +[visit_exp `%->_%%`_instrtype{resulttype#3023, `localidx*#1805`}(`%`_resulttype{`X*#12604`}(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#12655`}(t_2^n{t_2 <- `t_2*`}))] +[visit_exp resulttype#3023] +[visit_id resulttype#3023] +[visit_exp `localidx*#1805`] +[visit_id localidx*#1805] +[visit_exp (`%`_resulttype{`X*#12604`}(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#12655`}(t_2^n{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#12604`}(t_1^m{t_1 <- `t_1*`})] +[visit_exp `X*#12604`] +[visit_id X*#12604] +[visit_exp (t_1^m{t_1 <- `t_1*`})] +[visit_exp t_1^m{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp m] +[visit_id m] not free +[visit_exp `t_1*`] +[visit_id t_1*] no dims +[visit_id t_1*] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#12655`}(t_2^n{t_2 <- `t_2*`})] +[visit_exp `X*#12655`] +[visit_id X*#12655] +[visit_exp (t_2^n{t_2 <- `t_2*`})] +[visit_exp t_2^n{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp n] +[visit_id n] not free +[visit_exp `t_2*`] +[visit_id t_2*] no dims +[visit_id t_2*] +[check_dims] catch catch*#23 instr*#733 n n#1213 val +[visit_exp [`HANDLER_%{%}%`_instr{n#1213, `catch*#23`, `instr*#733`}(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})]] +[visit_exp `HANDLER_%{%}%`_instr{n#1213, `catch*#23`, `instr*#733`}(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})] +[visit_exp n#1213] +[visit_id n#1213] +[visit_exp `catch*#23`] +[visit_id catch*#23] +[visit_exp `instr*#733`] +[visit_id instr*#733] +[visit_exp (n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})] +[visit_exp n] +[visit_id n] +[visit_exp catch*{catch <- `catch*`}] +[scope_enter catch] +[visit_exp catch] +[visit_id catch] not free +[visit_id catch] not free +[scope_exit catch] +[visit_exp `catch*`] +[visit_id catch*] no dims +[visit_id catch*] +[visit_exp (val : val <: instr)*{val <- `val*`}] +[scope_enter val] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp `val*`] +[visit_id val*] no dims +[visit_id val*] +[visit_exp (val : val <: instr)*{val <- `val*`}] +[scope_enter val] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp `val*`] +[visit_id val*] not free +[visit_id val*] no dims +[check_dims] instr val +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`TRAP`_instr] ++ instr*{instr <- `instr*`}] +[visit_exp (val : val <: instr)*{val <- `val*`}] +[scope_enter val] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp `val*`] +[visit_id val*] no dims +[visit_id val*] +[visit_exp [`TRAP`_instr] ++ instr*{instr <- `instr*`}] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] no dims +[visit_id instr*] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[visit_exp ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= []))] +[visit_exp (val*{val <- `val*`} =/= [])] +[visit_exp val*{val <- `val*`}] +[scope_enter val] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp `val*`] +[visit_id val*] not free +[visit_id val*] no dims +[visit_exp []] +[visit_exp (instr*{instr <- `instr*`} =/= [])] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] not free +[visit_id instr*] no dims +[visit_exp []] +[check_dims] instr' instr*#735 n n#1215 +[visit_exp [`LABEL_%{%}%`_instr{n#1215, `instr*#735`}(n, instr'*{instr' <- `instr'*`}, [`TRAP`_instr])]] +[visit_exp `LABEL_%{%}%`_instr{n#1215, `instr*#735`}(n, instr'*{instr' <- `instr'*`}, [`TRAP`_instr])] +[visit_exp n#1215] +[visit_id n#1215] +[visit_exp `instr*#735`] +[visit_id instr*#735] +[visit_exp (n, instr'*{instr' <- `instr'*`}, [`TRAP`_instr])] +[visit_exp n] +[visit_id n] +[visit_exp instr'*{instr' <- `instr'*`}] +[scope_enter instr'] +[visit_exp instr'] +[visit_id instr'] not free +[visit_id instr'] not free +[scope_exit instr'] +[visit_exp `instr'*`] +[visit_id instr'*] no dims +[visit_id instr'*] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[check_dims] f frame#1097 instr*#738 n n#1217 +[visit_exp [`FRAME_%{%}%`_instr{n#1217, frame#1097, `instr*#738`}(n, f, [`TRAP`_instr])]] +[visit_exp `FRAME_%{%}%`_instr{n#1217, frame#1097, `instr*#738`}(n, f, [`TRAP`_instr])] +[visit_exp n#1217] +[visit_id n#1217] +[visit_exp frame#1097] +[visit_id frame#1097] +[visit_exp `instr*#738`] +[visit_id instr*#738] +[visit_exp (n, f, [`TRAP`_instr])] +[visit_exp n] +[visit_id n] +[visit_exp f] +[visit_id f] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[check_dims] instr*#750 localidx#13 state#635 val x z +[visit_exp `%;%`_config{state#635, `instr*#750`}(z, [`LOCAL.GET`_instr{localidx#13}(x)])] +[visit_exp state#635] +[visit_id state#635] +[visit_exp `instr*#750`] +[visit_id instr*#750] +[visit_exp (z, [`LOCAL.GET`_instr{localidx#13}(x)])] +[visit_exp z] +[visit_id z] +[visit_exp [`LOCAL.GET`_instr{localidx#13}(x)]] +[visit_exp `LOCAL.GET`_instr{localidx#13}(x)] +[visit_exp localidx#13] +[visit_id localidx#13] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp [(val : val <: instr)]] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] +[visit_exp ($local(z, x) = ?(val))] +[visit_exp $local(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp ?(val)] +[visit_exp val] +[visit_id val] not free +[check_dims] instr*#762 instr*#774 localidx#15 state#647 state#659 val x z +[visit_exp `%;%`_config{state#647, `instr*#762`}(z, [(val : val <: instr) `LOCAL.SET`_instr{localidx#15}(x)])] +[visit_exp state#647] +[visit_id state#647] +[visit_exp `instr*#762`] +[visit_id instr*#762] +[visit_exp (z, [(val : val <: instr) `LOCAL.SET`_instr{localidx#15}(x)])] +[visit_exp z] +[visit_id z] +[visit_exp [(val : val <: instr) `LOCAL.SET`_instr{localidx#15}(x)]] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] +[visit_exp `LOCAL.SET`_instr{localidx#15}(x)] +[visit_exp localidx#15] +[visit_id localidx#15] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%;%`_config{state#659, `instr*#774`}($with_local(z, x, val), [])] +[visit_exp state#659] +[visit_id state#659] +[visit_exp `instr*#774`] +[visit_id instr*#774] +[visit_exp ($with_local(z, x, val), [])] +[visit_exp $with_local(z, x, val)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp val] +[visit_id val] not free +[visit_exp []] +[check_dims] localidx#17 localidx#19 val x +[visit_exp [(val : val <: instr) `LOCAL.TEE`_instr{localidx#17}(x)]] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] +[visit_exp `LOCAL.TEE`_instr{localidx#17}(x)] +[visit_exp localidx#17] +[visit_id localidx#17] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp [(val : val <: instr) (val : val <: instr) `LOCAL.SET`_instr{localidx#19}(x)]] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_exp `LOCAL.SET`_instr{localidx#19}(x)] +[visit_exp localidx#19] +[visit_id localidx#19] +[visit_exp (x)] +[visit_exp x] +[visit_id x] not free +[check_dims] globalidx#17 instr*#786 state#671 val val#2 x z +[visit_exp `%;%`_config{state#671, `instr*#786`}(z, [`GLOBAL.GET`_instr{globalidx#17}(x)])] +[visit_exp state#671] +[visit_id state#671] +[visit_exp `instr*#786`] +[visit_id instr*#786] +[visit_exp (z, [`GLOBAL.GET`_instr{globalidx#17}(x)])] +[visit_exp z] +[visit_id z] +[visit_exp [`GLOBAL.GET`_instr{globalidx#17}(x)]] +[visit_exp `GLOBAL.GET`_instr{globalidx#17}(x)] +[visit_exp globalidx#17] +[visit_id globalidx#17] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp [(val : val <: instr)]] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] +[visit_exp ($global(z, x).`VALUE`_globalinst{val#2} = val)] +[visit_exp $global(z, x).`VALUE`_globalinst{val#2}] +[visit_exp $global(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp val#2] +[visit_id val#2] +[visit_exp val] +[visit_id val] not free +[check_dims] globalidx#19 instr*#798 instr*#810 state#683 state#695 val x z +[visit_exp `%;%`_config{state#683, `instr*#798`}(z, [(val : val <: instr) `GLOBAL.SET`_instr{globalidx#19}(x)])] +[visit_exp state#683] +[visit_id state#683] +[visit_exp `instr*#798`] +[visit_id instr*#798] +[visit_exp (z, [(val : val <: instr) `GLOBAL.SET`_instr{globalidx#19}(x)])] +[visit_exp z] +[visit_id z] +[visit_exp [(val : val <: instr) `GLOBAL.SET`_instr{globalidx#19}(x)]] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] +[visit_exp `GLOBAL.SET`_instr{globalidx#19}(x)] +[visit_exp globalidx#19] +[visit_id globalidx#19] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%;%`_config{state#695, `instr*#810`}($with_global(z, x, val), [])] +[visit_exp state#695] +[visit_id state#695] +[visit_exp `instr*#810`] +[visit_id instr*#810] +[visit_exp ($with_global(z, x, val), [])] +[visit_exp $with_global(z, x, val)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp val] +[visit_id val] not free +[visit_exp []] +[check_dims] at i i#32897 instr*#822 numtype#75 ref*#5 state#707 tableidx#57 x z +[visit_exp `%;%`_config{state#707, `instr*#822`}(z, [`CONST`_instr{numtype#75}((at : addrtype <: numtype), i) `TABLE.GET`_instr{tableidx#57}(x)])] +[visit_exp state#707] +[visit_id state#707] +[visit_exp `instr*#822`] +[visit_id instr*#822] +[visit_exp (z, [`CONST`_instr{numtype#75}((at : addrtype <: numtype), i) `TABLE.GET`_instr{tableidx#57}(x)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#75}((at : addrtype <: numtype), i) `TABLE.GET`_instr{tableidx#57}(x)]] +[visit_exp `CONST`_instr{numtype#75}((at : addrtype <: numtype), i)] +[visit_exp numtype#75] +[visit_id numtype#75] +[visit_exp ((at : addrtype <: numtype), i)] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] +[visit_exp i] +[visit_id i] +[visit_exp `TABLE.GET`_instr{tableidx#57}(x)] +[visit_exp tableidx#57] +[visit_id tableidx#57] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[visit_exp (i!`%`_num_{i#32897}.0 >= |$table(z, x).`REFS`_tableinst{`ref*#5`}|)] +[visit_exp i!`%`_num_{i#32897}.0] +[visit_exp i!`%`_num_{i#32897}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#32897] +[visit_id i#32897] +[visit_exp |$table(z, x).`REFS`_tableinst{`ref*#5`}|] +[visit_exp $table(z, x).`REFS`_tableinst{`ref*#5`}] +[visit_exp $table(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `ref*#5`] +[visit_id ref*#5] +[check_dims] at i i#32947 i#32973 instr*#834 numtype#77 ref*#6 ref*#7 state#719 tableidx#59 x z +[visit_exp `%;%`_config{state#719, `instr*#834`}(z, [`CONST`_instr{numtype#77}((at : addrtype <: numtype), i) `TABLE.GET`_instr{tableidx#59}(x)])] +[visit_exp state#719] +[visit_id state#719] +[visit_exp `instr*#834`] +[visit_id instr*#834] +[visit_exp (z, [`CONST`_instr{numtype#77}((at : addrtype <: numtype), i) `TABLE.GET`_instr{tableidx#59}(x)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#77}((at : addrtype <: numtype), i) `TABLE.GET`_instr{tableidx#59}(x)]] +[visit_exp `CONST`_instr{numtype#77}((at : addrtype <: numtype), i)] +[visit_exp numtype#77] +[visit_id numtype#77] +[visit_exp ((at : addrtype <: numtype), i)] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] +[visit_exp i] +[visit_id i] +[visit_exp `TABLE.GET`_instr{tableidx#59}(x)] +[visit_exp tableidx#59] +[visit_id tableidx#59] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp [($table(z, x).`REFS`_tableinst{`ref*#6`}[i!`%`_num_{i#32947}.0] : ref <: instr)]] +[visit_exp ($table(z, x).`REFS`_tableinst{`ref*#6`}[i!`%`_num_{i#32947}.0] : ref <: instr)] +[visit_exp $table(z, x).`REFS`_tableinst{`ref*#6`}[i!`%`_num_{i#32947}.0]] +[visit_exp $table(z, x).`REFS`_tableinst{`ref*#6`}] +[visit_exp $table(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `ref*#6`] +[visit_id ref*#6] +[visit_exp i!`%`_num_{i#32947}.0] +[visit_exp i!`%`_num_{i#32947}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#32947] +[visit_id i#32947] +[visit_exp (i!`%`_num_{i#32973}.0 < |$table(z, x).`REFS`_tableinst{`ref*#7`}|)] +[visit_exp i!`%`_num_{i#32973}.0] +[visit_exp i!`%`_num_{i#32973}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#32973] +[visit_id i#32973] +[visit_exp |$table(z, x).`REFS`_tableinst{`ref*#7`}|] +[visit_exp $table(z, x).`REFS`_tableinst{`ref*#7`}] +[visit_exp $table(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `ref*#7`] +[visit_id ref*#7] +[check_dims] at i i#33027 instr*#846 instr*#858 numtype#79 ref ref*#8 state#731 state#743 tableidx#61 x z +[visit_exp `%;%`_config{state#731, `instr*#846`}(z, [`CONST`_instr{numtype#79}((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr{tableidx#61}(x)])] +[visit_exp state#731] +[visit_id state#731] +[visit_exp `instr*#846`] +[visit_id instr*#846] +[visit_exp (z, [`CONST`_instr{numtype#79}((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr{tableidx#61}(x)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#79}((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr{tableidx#61}(x)]] +[visit_exp `CONST`_instr{numtype#79}((at : addrtype <: numtype), i)] +[visit_exp numtype#79] +[visit_id numtype#79] +[visit_exp ((at : addrtype <: numtype), i)] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] +[visit_exp i] +[visit_id i] +[visit_exp (ref : ref <: instr)] +[visit_exp ref] +[visit_id ref] +[visit_exp `TABLE.SET`_instr{tableidx#61}(x)] +[visit_exp tableidx#61] +[visit_id tableidx#61] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%;%`_config{state#743, `instr*#858`}(z, [`TRAP`_instr])] +[visit_exp state#743] +[visit_id state#743] +[visit_exp `instr*#858`] +[visit_id instr*#858] +[visit_exp (z, [`TRAP`_instr])] +[visit_exp z] +[visit_id z] not free +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[visit_exp (i!`%`_num_{i#33027}.0 >= |$table(z, x).`REFS`_tableinst{`ref*#8`}|)] +[visit_exp i!`%`_num_{i#33027}.0] +[visit_exp i!`%`_num_{i#33027}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#33027] +[visit_id i#33027] +[visit_exp |$table(z, x).`REFS`_tableinst{`ref*#8`}|] +[visit_exp $table(z, x).`REFS`_tableinst{`ref*#8`}] +[visit_exp $table(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `ref*#8`] +[visit_id ref*#8] +[check_dims] at i i#33077 i#33103 instr*#870 instr*#882 numtype#81 ref ref*#9 state#755 state#767 tableidx#63 x z +[visit_exp `%;%`_config{state#755, `instr*#870`}(z, [`CONST`_instr{numtype#81}((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr{tableidx#63}(x)])] +[visit_exp state#755] +[visit_id state#755] +[visit_exp `instr*#870`] +[visit_id instr*#870] +[visit_exp (z, [`CONST`_instr{numtype#81}((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr{tableidx#63}(x)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#81}((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr{tableidx#63}(x)]] +[visit_exp `CONST`_instr{numtype#81}((at : addrtype <: numtype), i)] +[visit_exp numtype#81] +[visit_id numtype#81] +[visit_exp ((at : addrtype <: numtype), i)] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] +[visit_exp i] +[visit_id i] +[visit_exp (ref : ref <: instr)] +[visit_exp ref] +[visit_id ref] +[visit_exp `TABLE.SET`_instr{tableidx#63}(x)] +[visit_exp tableidx#63] +[visit_id tableidx#63] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%;%`_config{state#767, `instr*#882`}($with_table(z, x, i!`%`_num_{i#33077}.0, ref), [])] +[visit_exp state#767] +[visit_id state#767] +[visit_exp `instr*#882`] +[visit_id instr*#882] +[visit_exp ($with_table(z, x, i!`%`_num_{i#33077}.0, ref), [])] +[visit_exp $with_table(z, x, i!`%`_num_{i#33077}.0, ref)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp i!`%`_num_{i#33077}.0] +[visit_exp i!`%`_num_{i#33077}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#33077] +[visit_id i#33077] +[visit_exp ref] +[visit_id ref] not free +[visit_exp []] +[visit_exp (i!`%`_num_{i#33103}.0 < |$table(z, x).`REFS`_tableinst{`ref*#9`}|)] +[visit_exp i!`%`_num_{i#33103}.0] +[visit_exp i!`%`_num_{i#33103}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#33103] +[visit_id i#33103] +[visit_exp |$table(z, x).`REFS`_tableinst{`ref*#9`}|] +[visit_exp $table(z, x).`REFS`_tableinst{`ref*#9`}] +[visit_exp $table(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `ref*#9`] +[visit_id ref*#9] +[check_dims] addrtype#1123 at i#33141 instr*#894 lim limits#1123 n numtype#83 ref*#10 reftype#3465 rt state#779 tableidx#65 tabletype#880 x z +[visit_exp `%;%`_config{state#779, `instr*#894`}(z, [`TABLE.SIZE`_instr{tableidx#65}(x)])] +[visit_exp state#779] +[visit_id state#779] +[visit_exp `instr*#894`] +[visit_id instr*#894] +[visit_exp (z, [`TABLE.SIZE`_instr{tableidx#65}(x)])] +[visit_exp z] +[visit_id z] +[visit_exp [`TABLE.SIZE`_instr{tableidx#65}(x)]] +[visit_exp `TABLE.SIZE`_instr{tableidx#65}(x)] +[visit_exp tableidx#65] +[visit_id tableidx#65] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp [`CONST`_instr{numtype#83}((at : addrtype <: numtype), `%`_num_{i#33141}(n))]] +[visit_exp `CONST`_instr{numtype#83}((at : addrtype <: numtype), `%`_num_{i#33141}(n))] +[visit_exp numtype#83] +[visit_id numtype#83] +[visit_exp ((at : addrtype <: numtype), `%`_num_{i#33141}(n))] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] +[visit_exp `%`_num_{i#33141}(n)] +[visit_exp i#33141] +[visit_id i#33141] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp (|$table(z, x).`REFS`_tableinst{`ref*#10`}| = n)] +[visit_exp |$table(z, x).`REFS`_tableinst{`ref*#10`}|] +[visit_exp $table(z, x).`REFS`_tableinst{`ref*#10`}] +[visit_exp $table(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `ref*#10`] +[visit_id ref*#10] +[visit_exp n] +[visit_id n] not free +[visit_exp ($table(z, x).`TYPE`_tableinst{tabletype#880} = `%%%`_tabletype{addrtype#1123, limits#1123, reftype#3465}(at, lim, rt))] +[visit_exp $table(z, x).`TYPE`_tableinst{tabletype#880}] +[visit_exp $table(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp tabletype#880] +[visit_id tabletype#880] +[visit_exp `%%%`_tabletype{addrtype#1123, limits#1123, reftype#3465}(at, lim, rt)] +[visit_exp addrtype#1123] +[visit_id addrtype#1123] +[visit_exp limits#1123] +[visit_id limits#1123] +[visit_exp reftype#3465] +[visit_id reftype#3465] +[visit_exp (at, lim, rt)] +[visit_exp at] +[visit_id at] not free +[visit_exp lim] +[visit_id lim] +[visit_exp rt] +[visit_id rt] +[check_dims] at i#33189 i#33249 instr*#906 instr*#918 n numtype#85 numtype#87 ref ref*#11 state#791 state#803 tableidx#67 ti x z +[visit_exp `%;%`_config{state#791, `instr*#906`}(z, [(ref : ref <: instr) `CONST`_instr{numtype#85}((at : addrtype <: numtype), `%`_num_{i#33189}(n)) `TABLE.GROW`_instr{tableidx#67}(x)])] +[visit_exp state#791] +[visit_id state#791] +[visit_exp `instr*#906`] +[visit_id instr*#906] +[visit_exp (z, [(ref : ref <: instr) `CONST`_instr{numtype#85}((at : addrtype <: numtype), `%`_num_{i#33189}(n)) `TABLE.GROW`_instr{tableidx#67}(x)])] +[visit_exp z] +[visit_id z] +[visit_exp [(ref : ref <: instr) `CONST`_instr{numtype#85}((at : addrtype <: numtype), `%`_num_{i#33189}(n)) `TABLE.GROW`_instr{tableidx#67}(x)]] +[visit_exp (ref : ref <: instr)] +[visit_exp ref] +[visit_id ref] +[visit_exp `CONST`_instr{numtype#85}((at : addrtype <: numtype), `%`_num_{i#33189}(n))] +[visit_exp numtype#85] +[visit_id numtype#85] +[visit_exp ((at : addrtype <: numtype), `%`_num_{i#33189}(n))] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] +[visit_exp `%`_num_{i#33189}(n)] +[visit_exp i#33189] +[visit_id i#33189] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `TABLE.GROW`_instr{tableidx#67}(x)] +[visit_exp tableidx#67] +[visit_id tableidx#67] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%;%`_config{state#803, `instr*#918`}($with_tableinst(z, x, ti), [`CONST`_instr{numtype#87}((at : addrtype <: numtype), `%`_num_{i#33249}(|$table(z, x).`REFS`_tableinst{`ref*#11`}|))])] +[visit_exp state#803] +[visit_id state#803] +[visit_exp `instr*#918`] +[visit_id instr*#918] +[visit_exp ($with_tableinst(z, x, ti), [`CONST`_instr{numtype#87}((at : addrtype <: numtype), `%`_num_{i#33249}(|$table(z, x).`REFS`_tableinst{`ref*#11`}|))])] +[visit_exp $with_tableinst(z, x, ti)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp ti] +[visit_id ti] +[visit_exp [`CONST`_instr{numtype#87}((at : addrtype <: numtype), `%`_num_{i#33249}(|$table(z, x).`REFS`_tableinst{`ref*#11`}|))]] +[visit_exp `CONST`_instr{numtype#87}((at : addrtype <: numtype), `%`_num_{i#33249}(|$table(z, x).`REFS`_tableinst{`ref*#11`}|))] +[visit_exp numtype#87] +[visit_id numtype#87] +[visit_exp ((at : addrtype <: numtype), `%`_num_{i#33249}(|$table(z, x).`REFS`_tableinst{`ref*#11`}|))] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] not free +[visit_exp `%`_num_{i#33249}(|$table(z, x).`REFS`_tableinst{`ref*#11`}|)] +[visit_exp i#33249] +[visit_id i#33249] +[visit_exp (|$table(z, x).`REFS`_tableinst{`ref*#11`}|)] +[visit_exp |$table(z, x).`REFS`_tableinst{`ref*#11`}|] +[visit_exp $table(z, x).`REFS`_tableinst{`ref*#11`}] +[visit_exp $table(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `ref*#11`] +[visit_id ref*#11] +[visit_exp (ti = $growtable($table(z, x), n, ref))] +[visit_exp ti] +[visit_id ti] not free +[visit_exp $growtable($table(z, x), n, ref)] +[visit_exp $table(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp n] +[visit_id n] not free +[visit_exp ref] +[visit_id ref] not free +[check_dims] at i#33285 i#33321 instr*#930 instr*#942 n numtype#89 numtype#91 ref state#815 state#827 tableidx#69 x z +[visit_exp `%;%`_config{state#815, `instr*#930`}(z, [(ref : ref <: instr) `CONST`_instr{numtype#89}((at : addrtype <: numtype), `%`_num_{i#33285}(n)) `TABLE.GROW`_instr{tableidx#69}(x)])] +[visit_exp state#815] +[visit_id state#815] +[visit_exp `instr*#930`] +[visit_id instr*#930] +[visit_exp (z, [(ref : ref <: instr) `CONST`_instr{numtype#89}((at : addrtype <: numtype), `%`_num_{i#33285}(n)) `TABLE.GROW`_instr{tableidx#69}(x)])] +[visit_exp z] +[visit_id z] +[visit_exp [(ref : ref <: instr) `CONST`_instr{numtype#89}((at : addrtype <: numtype), `%`_num_{i#33285}(n)) `TABLE.GROW`_instr{tableidx#69}(x)]] +[visit_exp (ref : ref <: instr)] +[visit_exp ref] +[visit_id ref] +[visit_exp `CONST`_instr{numtype#89}((at : addrtype <: numtype), `%`_num_{i#33285}(n))] +[visit_exp numtype#89] +[visit_id numtype#89] +[visit_exp ((at : addrtype <: numtype), `%`_num_{i#33285}(n))] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] +[visit_exp `%`_num_{i#33285}(n)] +[visit_exp i#33285] +[visit_id i#33285] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `TABLE.GROW`_instr{tableidx#69}(x)] +[visit_exp tableidx#69] +[visit_id tableidx#69] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%;%`_config{state#827, `instr*#942`}(z, [`CONST`_instr{numtype#91}((at : addrtype <: numtype), `%`_num_{i#33321}($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))])] +[visit_exp state#827] +[visit_id state#827] +[visit_exp `instr*#942`] +[visit_id instr*#942] +[visit_exp (z, [`CONST`_instr{numtype#91}((at : addrtype <: numtype), `%`_num_{i#33321}($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))])] +[visit_exp z] +[visit_id z] not free +[visit_exp [`CONST`_instr{numtype#91}((at : addrtype <: numtype), `%`_num_{i#33321}($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))]] +[visit_exp `CONST`_instr{numtype#91}((at : addrtype <: numtype), `%`_num_{i#33321}($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))] +[visit_exp numtype#91] +[visit_id numtype#91] +[visit_exp ((at : addrtype <: numtype), `%`_num_{i#33321}($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] not free +[visit_exp `%`_num_{i#33321}($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))] +[visit_exp i#33321] +[visit_id i#33321] +[visit_exp ($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))] +[visit_exp $inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))] +[visit_exp $size((at : addrtype <: numtype))] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] not free +[visit_exp - (1 : nat <:> int)] +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[check_dims] at i i#33359 i#33387 instr*#954 n numtype#93 numtype#95 ref*#12 state#839 tableidx#71 val x z +[visit_exp `%;%`_config{state#839, `instr*#954`}(z, [`CONST`_instr{numtype#93}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#95}((at : addrtype <: numtype), `%`_num_{i#33359}(n)) `TABLE.FILL`_instr{tableidx#71}(x)])] +[visit_exp state#839] +[visit_id state#839] +[visit_exp `instr*#954`] +[visit_id instr*#954] +[visit_exp (z, [`CONST`_instr{numtype#93}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#95}((at : addrtype <: numtype), `%`_num_{i#33359}(n)) `TABLE.FILL`_instr{tableidx#71}(x)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#93}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#95}((at : addrtype <: numtype), `%`_num_{i#33359}(n)) `TABLE.FILL`_instr{tableidx#71}(x)]] +[visit_exp `CONST`_instr{numtype#93}((at : addrtype <: numtype), i)] +[visit_exp numtype#93] +[visit_id numtype#93] +[visit_exp ((at : addrtype <: numtype), i)] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] +[visit_exp i] +[visit_id i] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] +[visit_exp `CONST`_instr{numtype#95}((at : addrtype <: numtype), `%`_num_{i#33359}(n))] +[visit_exp numtype#95] +[visit_id numtype#95] +[visit_exp ((at : addrtype <: numtype), `%`_num_{i#33359}(n))] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] not free +[visit_exp `%`_num_{i#33359}(n)] +[visit_exp i#33359] +[visit_id i#33359] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `TABLE.FILL`_instr{tableidx#71}(x)] +[visit_exp tableidx#71] +[visit_id tableidx#71] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[visit_exp ((i!`%`_num_{i#33387}.0 + n) > |$table(z, x).`REFS`_tableinst{`ref*#12`}|)] +[visit_exp (i!`%`_num_{i#33387}.0 + n)] +[visit_exp i!`%`_num_{i#33387}.0] +[visit_exp i!`%`_num_{i#33387}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#33387] +[visit_id i#33387] +[visit_exp n] +[visit_id n] not free +[visit_exp |$table(z, x).`REFS`_tableinst{`ref*#12`}|] +[visit_exp $table(z, x).`REFS`_tableinst{`ref*#12`}] +[visit_exp $table(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `ref*#12`] +[visit_id ref*#12] +[check_dims] at i i#33437 instr*#966 n numtype#97 numtype#99 state#851 tableidx#73 val x z +[visit_exp `%;%`_config{state#851, `instr*#966`}(z, [`CONST`_instr{numtype#97}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#99}((at : addrtype <: numtype), `%`_num_{i#33437}(n)) `TABLE.FILL`_instr{tableidx#73}(x)])] +[visit_exp state#851] +[visit_id state#851] +[visit_exp `instr*#966`] +[visit_id instr*#966] +[visit_exp (z, [`CONST`_instr{numtype#97}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#99}((at : addrtype <: numtype), `%`_num_{i#33437}(n)) `TABLE.FILL`_instr{tableidx#73}(x)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#97}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#99}((at : addrtype <: numtype), `%`_num_{i#33437}(n)) `TABLE.FILL`_instr{tableidx#73}(x)]] +[visit_exp `CONST`_instr{numtype#97}((at : addrtype <: numtype), i)] +[visit_exp numtype#97] +[visit_id numtype#97] +[visit_exp ((at : addrtype <: numtype), i)] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] +[visit_exp i] +[visit_id i] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] +[visit_exp `CONST`_instr{numtype#99}((at : addrtype <: numtype), `%`_num_{i#33437}(n))] +[visit_exp numtype#99] +[visit_id numtype#99] +[visit_exp ((at : addrtype <: numtype), `%`_num_{i#33437}(n))] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] not free +[visit_exp `%`_num_{i#33437}(n)] +[visit_exp i#33437] +[visit_id i#33437] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `TABLE.FILL`_instr{tableidx#73}(x)] +[visit_exp tableidx#73] +[visit_id tableidx#73] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp []] +[visit_exp (n = 0)] +[visit_exp n] +[visit_id n] not free +[visit_exp 0] +[check_dims] at i i#33489 i#33555 i#33565 i#33587 instr*#978 n numtype#101 numtype#103 numtype#105 numtype#107 numtype#109 state#863 tableidx#75 tableidx#77 tableidx#79 val x z +[visit_exp `%;%`_config{state#863, `instr*#978`}(z, [`CONST`_instr{numtype#101}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#103}((at : addrtype <: numtype), `%`_num_{i#33489}(n)) `TABLE.FILL`_instr{tableidx#75}(x)])] +[visit_exp state#863] +[visit_id state#863] +[visit_exp `instr*#978`] +[visit_id instr*#978] +[visit_exp (z, [`CONST`_instr{numtype#101}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#103}((at : addrtype <: numtype), `%`_num_{i#33489}(n)) `TABLE.FILL`_instr{tableidx#75}(x)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#101}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#103}((at : addrtype <: numtype), `%`_num_{i#33489}(n)) `TABLE.FILL`_instr{tableidx#75}(x)]] +[visit_exp `CONST`_instr{numtype#101}((at : addrtype <: numtype), i)] +[visit_exp numtype#101] +[visit_id numtype#101] +[visit_exp ((at : addrtype <: numtype), i)] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] +[visit_exp i] +[visit_id i] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] +[visit_exp `CONST`_instr{numtype#103}((at : addrtype <: numtype), `%`_num_{i#33489}(n))] +[visit_exp numtype#103] +[visit_id numtype#103] +[visit_exp ((at : addrtype <: numtype), `%`_num_{i#33489}(n))] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] not free +[visit_exp `%`_num_{i#33489}(n)] +[visit_exp i#33489] +[visit_id i#33489] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `TABLE.FILL`_instr{tableidx#75}(x)] +[visit_exp tableidx#75] +[visit_id tableidx#75] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp [`CONST`_instr{numtype#105}((at : addrtype <: numtype), i) (val : val <: instr) `TABLE.SET`_instr{tableidx#77}(x) `CONST`_instr{numtype#107}((at : addrtype <: numtype), `%`_num_{i#33565}((i!`%`_num_{i#33555}.0 + 1))) (val : val <: instr) `CONST`_instr{numtype#109}((at : addrtype <: numtype), `%`_num_{i#33587}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `TABLE.FILL`_instr{tableidx#79}(x)]] +[visit_exp `CONST`_instr{numtype#105}((at : addrtype <: numtype), i)] +[visit_exp numtype#105] +[visit_id numtype#105] +[visit_exp ((at : addrtype <: numtype), i)] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] not free +[visit_exp i] +[visit_id i] not free +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_exp `TABLE.SET`_instr{tableidx#77}(x)] +[visit_exp tableidx#77] +[visit_id tableidx#77] +[visit_exp (x)] +[visit_exp x] +[visit_id x] not free +[visit_exp `CONST`_instr{numtype#107}((at : addrtype <: numtype), `%`_num_{i#33565}((i!`%`_num_{i#33555}.0 + 1)))] +[visit_exp numtype#107] +[visit_id numtype#107] +[visit_exp ((at : addrtype <: numtype), `%`_num_{i#33565}((i!`%`_num_{i#33555}.0 + 1)))] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] not free +[visit_exp `%`_num_{i#33565}((i!`%`_num_{i#33555}.0 + 1))] +[visit_exp i#33565] +[visit_id i#33565] +[visit_exp ((i!`%`_num_{i#33555}.0 + 1))] +[visit_exp (i!`%`_num_{i#33555}.0 + 1)] +[visit_exp i!`%`_num_{i#33555}.0] +[visit_exp i!`%`_num_{i#33555}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#33555] +[visit_id i#33555] +[visit_exp 1] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_exp `CONST`_instr{numtype#109}((at : addrtype <: numtype), `%`_num_{i#33587}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp numtype#109] +[visit_id numtype#109] +[visit_exp ((at : addrtype <: numtype), `%`_num_{i#33587}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] not free +[visit_exp `%`_num_{i#33587}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp i#33587] +[visit_id i#33587] +[visit_exp ((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp (((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp ((n : nat <:> int) - (1 : nat <:> int))] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp `TABLE.FILL`_instr{tableidx#79}(x)] +[visit_exp tableidx#79] +[visit_id tableidx#79] +[visit_exp (x)] +[visit_exp x] +[visit_id x] not free +[check_dims] at' at_1 at_2 i#33653 i#33695 i#33721 i_1 i_2 instr*#990 n numtype#111 numtype#113 numtype#115 ref*#13 ref*#14 state#875 tableidx#81 x_1 x_2 z +[visit_exp `%;%`_config{state#875, `instr*#990`}(z, [`CONST`_instr{numtype#111}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#113}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#115}((at' : addrtype <: numtype), `%`_num_{i#33653}(n)) `TABLE.COPY`_instr{tableidx#81}(x_1, x_2)])] +[visit_exp state#875] +[visit_id state#875] +[visit_exp `instr*#990`] +[visit_id instr*#990] +[visit_exp (z, [`CONST`_instr{numtype#111}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#113}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#115}((at' : addrtype <: numtype), `%`_num_{i#33653}(n)) `TABLE.COPY`_instr{tableidx#81}(x_1, x_2)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#111}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#113}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#115}((at' : addrtype <: numtype), `%`_num_{i#33653}(n)) `TABLE.COPY`_instr{tableidx#81}(x_1, x_2)]] +[visit_exp `CONST`_instr{numtype#111}((at_1 : addrtype <: numtype), i_1)] +[visit_exp numtype#111] +[visit_id numtype#111] +[visit_exp ((at_1 : addrtype <: numtype), i_1)] +[visit_exp (at_1 : addrtype <: numtype)] +[visit_exp at_1] +[visit_id at_1] +[visit_exp i_1] +[visit_id i_1] +[visit_exp `CONST`_instr{numtype#113}((at_2 : addrtype <: numtype), i_2)] +[visit_exp numtype#113] +[visit_id numtype#113] +[visit_exp ((at_2 : addrtype <: numtype), i_2)] +[visit_exp (at_2 : addrtype <: numtype)] +[visit_exp at_2] +[visit_id at_2] +[visit_exp i_2] +[visit_id i_2] +[visit_exp `CONST`_instr{numtype#115}((at' : addrtype <: numtype), `%`_num_{i#33653}(n))] +[visit_exp numtype#115] +[visit_id numtype#115] +[visit_exp ((at' : addrtype <: numtype), `%`_num_{i#33653}(n))] +[visit_exp (at' : addrtype <: numtype)] +[visit_exp at'] +[visit_id at'] +[visit_exp `%`_num_{i#33653}(n)] +[visit_exp i#33653] +[visit_id i#33653] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `TABLE.COPY`_instr{tableidx#81}(x_1, x_2)] +[visit_exp tableidx#81] +[visit_id tableidx#81] +[visit_exp (x_1, x_2)] +[visit_exp x_1] +[visit_id x_1] +[visit_exp x_2] +[visit_id x_2] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[visit_exp (((i_1!`%`_num_{i#33695}.0 + n) > |$table(z, x_1).`REFS`_tableinst{`ref*#13`}|) \/ ((i_2!`%`_num_{i#33721}.0 + n) > |$table(z, x_2).`REFS`_tableinst{`ref*#14`}|))] +[visit_exp ((i_1!`%`_num_{i#33695}.0 + n) > |$table(z, x_1).`REFS`_tableinst{`ref*#13`}|)] +[visit_exp (i_1!`%`_num_{i#33695}.0 + n)] +[visit_exp i_1!`%`_num_{i#33695}.0] +[visit_exp i_1!`%`_num_{i#33695}] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i#33695] +[visit_id i#33695] +[visit_exp n] +[visit_id n] not free +[visit_exp |$table(z, x_1).`REFS`_tableinst{`ref*#13`}|] +[visit_exp $table(z, x_1).`REFS`_tableinst{`ref*#13`}] +[visit_exp $table(z, x_1)] +[visit_exp z] +[visit_id z] not free +[visit_exp x_1] +[visit_id x_1] not free +[visit_exp `ref*#13`] +[visit_id ref*#13] +[visit_exp ((i_2!`%`_num_{i#33721}.0 + n) > |$table(z, x_2).`REFS`_tableinst{`ref*#14`}|)] +[visit_exp (i_2!`%`_num_{i#33721}.0 + n)] +[visit_exp i_2!`%`_num_{i#33721}.0] +[visit_exp i_2!`%`_num_{i#33721}] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp i#33721] +[visit_id i#33721] +[visit_exp n] +[visit_id n] not free +[visit_exp |$table(z, x_2).`REFS`_tableinst{`ref*#14`}|] +[visit_exp $table(z, x_2).`REFS`_tableinst{`ref*#14`}] +[visit_exp $table(z, x_2)] +[visit_exp z] +[visit_id z] not free +[visit_exp x_2] +[visit_id x_2] not free +[visit_exp `ref*#14`] +[visit_id ref*#14] +[check_dims] at' at_1 at_2 i#33785 i_1 i_2 instr*#1002 n numtype#117 numtype#119 numtype#121 state#887 tableidx#84 x y z +[visit_exp `%;%`_config{state#887, `instr*#1002`}(z, [`CONST`_instr{numtype#117}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#119}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#121}((at' : addrtype <: numtype), `%`_num_{i#33785}(n)) `TABLE.COPY`_instr{tableidx#84}(x, y)])] +[visit_exp state#887] +[visit_id state#887] +[visit_exp `instr*#1002`] +[visit_id instr*#1002] +[visit_exp (z, [`CONST`_instr{numtype#117}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#119}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#121}((at' : addrtype <: numtype), `%`_num_{i#33785}(n)) `TABLE.COPY`_instr{tableidx#84}(x, y)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#117}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#119}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#121}((at' : addrtype <: numtype), `%`_num_{i#33785}(n)) `TABLE.COPY`_instr{tableidx#84}(x, y)]] +[visit_exp `CONST`_instr{numtype#117}((at_1 : addrtype <: numtype), i_1)] +[visit_exp numtype#117] +[visit_id numtype#117] +[visit_exp ((at_1 : addrtype <: numtype), i_1)] +[visit_exp (at_1 : addrtype <: numtype)] +[visit_exp at_1] +[visit_id at_1] +[visit_exp i_1] +[visit_id i_1] +[visit_exp `CONST`_instr{numtype#119}((at_2 : addrtype <: numtype), i_2)] +[visit_exp numtype#119] +[visit_id numtype#119] +[visit_exp ((at_2 : addrtype <: numtype), i_2)] +[visit_exp (at_2 : addrtype <: numtype)] +[visit_exp at_2] +[visit_id at_2] +[visit_exp i_2] +[visit_id i_2] +[visit_exp `CONST`_instr{numtype#121}((at' : addrtype <: numtype), `%`_num_{i#33785}(n))] +[visit_exp numtype#121] +[visit_id numtype#121] +[visit_exp ((at' : addrtype <: numtype), `%`_num_{i#33785}(n))] +[visit_exp (at' : addrtype <: numtype)] +[visit_exp at'] +[visit_id at'] +[visit_exp `%`_num_{i#33785}(n)] +[visit_exp i#33785] +[visit_id i#33785] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `TABLE.COPY`_instr{tableidx#84}(x, y)] +[visit_exp tableidx#84] +[visit_id tableidx#84] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] +[visit_exp y] +[visit_id y] +[visit_exp []] +[visit_exp (n = 0)] +[visit_exp n] +[visit_id n] not free +[visit_exp 0] +[check_dims] at' at_1 at_2 i#33865 i#33971 i#33981 i#34007 i#34017 i#34039 i#34085 i#34095 i_1 i_2 instr*#1014 n numtype#123 numtype#125 numtype#127 numtype#129 numtype#131 numtype#133 numtype#135 numtype#137 state#899 tableidx#87 tableidx#90 tableidx#92 tableidx#94 x y z +[visit_exp `%;%`_config{state#899, `instr*#1014`}(z, [`CONST`_instr{numtype#123}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#125}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#127}((at' : addrtype <: numtype), `%`_num_{i#33865}(n)) `TABLE.COPY`_instr{tableidx#87}(x, y)])] +[visit_exp state#899] +[visit_id state#899] +[visit_exp `instr*#1014`] +[visit_id instr*#1014] +[visit_exp (z, [`CONST`_instr{numtype#123}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#125}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#127}((at' : addrtype <: numtype), `%`_num_{i#33865}(n)) `TABLE.COPY`_instr{tableidx#87}(x, y)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#123}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#125}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#127}((at' : addrtype <: numtype), `%`_num_{i#33865}(n)) `TABLE.COPY`_instr{tableidx#87}(x, y)]] +[visit_exp `CONST`_instr{numtype#123}((at_1 : addrtype <: numtype), i_1)] +[visit_exp numtype#123] +[visit_id numtype#123] +[visit_exp ((at_1 : addrtype <: numtype), i_1)] +[visit_exp (at_1 : addrtype <: numtype)] +[visit_exp at_1] +[visit_id at_1] +[visit_exp i_1] +[visit_id i_1] +[visit_exp `CONST`_instr{numtype#125}((at_2 : addrtype <: numtype), i_2)] +[visit_exp numtype#125] +[visit_id numtype#125] +[visit_exp ((at_2 : addrtype <: numtype), i_2)] +[visit_exp (at_2 : addrtype <: numtype)] +[visit_exp at_2] +[visit_id at_2] +[visit_exp i_2] +[visit_id i_2] +[visit_exp `CONST`_instr{numtype#127}((at' : addrtype <: numtype), `%`_num_{i#33865}(n))] +[visit_exp numtype#127] +[visit_id numtype#127] +[visit_exp ((at' : addrtype <: numtype), `%`_num_{i#33865}(n))] +[visit_exp (at' : addrtype <: numtype)] +[visit_exp at'] +[visit_id at'] +[visit_exp `%`_num_{i#33865}(n)] +[visit_exp i#33865] +[visit_id i#33865] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `TABLE.COPY`_instr{tableidx#87}(x, y)] +[visit_exp tableidx#87] +[visit_id tableidx#87] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] +[visit_exp y] +[visit_id y] +[visit_exp [`CONST`_instr{numtype#129}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#131}((at_2 : addrtype <: numtype), i_2) `TABLE.GET`_instr{tableidx#90}(y) `TABLE.SET`_instr{tableidx#92}(x) `CONST`_instr{numtype#133}((at_1 : addrtype <: numtype), `%`_num_{i#33981}((i_1!`%`_num_{i#33971}.0 + 1))) `CONST`_instr{numtype#135}((at_2 : addrtype <: numtype), `%`_num_{i#34017}((i_2!`%`_num_{i#34007}.0 + 1))) `CONST`_instr{numtype#137}((at' : addrtype <: numtype), `%`_num_{i#34039}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `TABLE.COPY`_instr{tableidx#94}(x, y)]] +[visit_exp `CONST`_instr{numtype#129}((at_1 : addrtype <: numtype), i_1)] +[visit_exp numtype#129] +[visit_id numtype#129] +[visit_exp ((at_1 : addrtype <: numtype), i_1)] +[visit_exp (at_1 : addrtype <: numtype)] +[visit_exp at_1] +[visit_id at_1] not free +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp `CONST`_instr{numtype#131}((at_2 : addrtype <: numtype), i_2)] +[visit_exp numtype#131] +[visit_id numtype#131] +[visit_exp ((at_2 : addrtype <: numtype), i_2)] +[visit_exp (at_2 : addrtype <: numtype)] +[visit_exp at_2] +[visit_id at_2] not free +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp `TABLE.GET`_instr{tableidx#90}(y)] +[visit_exp tableidx#90] +[visit_id tableidx#90] +[visit_exp (y)] +[visit_exp y] +[visit_id y] not free +[visit_exp `TABLE.SET`_instr{tableidx#92}(x)] +[visit_exp tableidx#92] +[visit_id tableidx#92] +[visit_exp (x)] +[visit_exp x] +[visit_id x] not free +[visit_exp `CONST`_instr{numtype#133}((at_1 : addrtype <: numtype), `%`_num_{i#33981}((i_1!`%`_num_{i#33971}.0 + 1)))] +[visit_exp numtype#133] +[visit_id numtype#133] +[visit_exp ((at_1 : addrtype <: numtype), `%`_num_{i#33981}((i_1!`%`_num_{i#33971}.0 + 1)))] +[visit_exp (at_1 : addrtype <: numtype)] +[visit_exp at_1] +[visit_id at_1] not free +[visit_exp `%`_num_{i#33981}((i_1!`%`_num_{i#33971}.0 + 1))] +[visit_exp i#33981] +[visit_id i#33981] +[visit_exp ((i_1!`%`_num_{i#33971}.0 + 1))] +[visit_exp (i_1!`%`_num_{i#33971}.0 + 1)] +[visit_exp i_1!`%`_num_{i#33971}.0] +[visit_exp i_1!`%`_num_{i#33971}] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i#33971] +[visit_id i#33971] +[visit_exp 1] +[visit_exp `CONST`_instr{numtype#135}((at_2 : addrtype <: numtype), `%`_num_{i#34017}((i_2!`%`_num_{i#34007}.0 + 1)))] +[visit_exp numtype#135] +[visit_id numtype#135] +[visit_exp ((at_2 : addrtype <: numtype), `%`_num_{i#34017}((i_2!`%`_num_{i#34007}.0 + 1)))] +[visit_exp (at_2 : addrtype <: numtype)] +[visit_exp at_2] +[visit_id at_2] not free +[visit_exp `%`_num_{i#34017}((i_2!`%`_num_{i#34007}.0 + 1))] +[visit_exp i#34017] +[visit_id i#34017] +[visit_exp ((i_2!`%`_num_{i#34007}.0 + 1))] +[visit_exp (i_2!`%`_num_{i#34007}.0 + 1)] +[visit_exp i_2!`%`_num_{i#34007}.0] +[visit_exp i_2!`%`_num_{i#34007}] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp i#34007] +[visit_id i#34007] +[visit_exp 1] +[visit_exp `CONST`_instr{numtype#137}((at' : addrtype <: numtype), `%`_num_{i#34039}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp numtype#137] +[visit_id numtype#137] +[visit_exp ((at' : addrtype <: numtype), `%`_num_{i#34039}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp (at' : addrtype <: numtype)] +[visit_exp at'] +[visit_id at'] not free +[visit_exp `%`_num_{i#34039}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp i#34039] +[visit_id i#34039] +[visit_exp ((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp (((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp ((n : nat <:> int) - (1 : nat <:> int))] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp `TABLE.COPY`_instr{tableidx#94}(x, y)] +[visit_exp tableidx#94] +[visit_id tableidx#94] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] not free +[visit_exp y] +[visit_id y] not free +[visit_exp (i_1!`%`_num_{i#34085}.0 <= i_2!`%`_num_{i#34095}.0)] +[visit_exp i_1!`%`_num_{i#34085}.0] +[visit_exp i_1!`%`_num_{i#34085}] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i#34085] +[visit_id i#34085] +[visit_exp i_2!`%`_num_{i#34095}.0] +[visit_exp i_2!`%`_num_{i#34095}] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp i#34095] +[visit_id i#34095] +[check_dims] at' at_1 at_2 i#34147 i#34201 i#34211 i#34237 i#34247 i#34321 i_1 i_2 instr*#1026 n numtype#139 numtype#141 numtype#143 numtype#145 numtype#147 numtype#149 numtype#151 numtype#153 state#911 tableidx#100 tableidx#102 tableidx#104 tableidx#97 x y z +[visit_exp `%;%`_config{state#911, `instr*#1026`}(z, [`CONST`_instr{numtype#139}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#141}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#143}((at' : addrtype <: numtype), `%`_num_{i#34147}(n)) `TABLE.COPY`_instr{tableidx#97}(x, y)])] +[visit_exp state#911] +[visit_id state#911] +[visit_exp `instr*#1026`] +[visit_id instr*#1026] +[visit_exp (z, [`CONST`_instr{numtype#139}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#141}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#143}((at' : addrtype <: numtype), `%`_num_{i#34147}(n)) `TABLE.COPY`_instr{tableidx#97}(x, y)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#139}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#141}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#143}((at' : addrtype <: numtype), `%`_num_{i#34147}(n)) `TABLE.COPY`_instr{tableidx#97}(x, y)]] +[visit_exp `CONST`_instr{numtype#139}((at_1 : addrtype <: numtype), i_1)] +[visit_exp numtype#139] +[visit_id numtype#139] +[visit_exp ((at_1 : addrtype <: numtype), i_1)] +[visit_exp (at_1 : addrtype <: numtype)] +[visit_exp at_1] +[visit_id at_1] +[visit_exp i_1] +[visit_id i_1] +[visit_exp `CONST`_instr{numtype#141}((at_2 : addrtype <: numtype), i_2)] +[visit_exp numtype#141] +[visit_id numtype#141] +[visit_exp ((at_2 : addrtype <: numtype), i_2)] +[visit_exp (at_2 : addrtype <: numtype)] +[visit_exp at_2] +[visit_id at_2] +[visit_exp i_2] +[visit_id i_2] +[visit_exp `CONST`_instr{numtype#143}((at' : addrtype <: numtype), `%`_num_{i#34147}(n))] +[visit_exp numtype#143] +[visit_id numtype#143] +[visit_exp ((at' : addrtype <: numtype), `%`_num_{i#34147}(n))] +[visit_exp (at' : addrtype <: numtype)] +[visit_exp at'] +[visit_id at'] +[visit_exp `%`_num_{i#34147}(n)] +[visit_exp i#34147] +[visit_id i#34147] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `TABLE.COPY`_instr{tableidx#97}(x, y)] +[visit_exp tableidx#97] +[visit_id tableidx#97] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] +[visit_exp y] +[visit_id y] +[visit_exp [`CONST`_instr{numtype#145}((at_1 : addrtype <: numtype), `%`_num_{i#34211}(((((i_1!`%`_num_{i#34201}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `CONST`_instr{numtype#147}((at_2 : addrtype <: numtype), `%`_num_{i#34247}(((((i_2!`%`_num_{i#34237}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `TABLE.GET`_instr{tableidx#100}(y) `TABLE.SET`_instr{tableidx#102}(x) `CONST`_instr{numtype#149}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#151}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#153}((at' : addrtype <: numtype), `%`_num_{i#34321}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `TABLE.COPY`_instr{tableidx#104}(x, y)]] +[visit_exp `CONST`_instr{numtype#145}((at_1 : addrtype <: numtype), `%`_num_{i#34211}(((((i_1!`%`_num_{i#34201}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp numtype#145] +[visit_id numtype#145] +[visit_exp ((at_1 : addrtype <: numtype), `%`_num_{i#34211}(((((i_1!`%`_num_{i#34201}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp (at_1 : addrtype <: numtype)] +[visit_exp at_1] +[visit_id at_1] not free +[visit_exp `%`_num_{i#34211}(((((i_1!`%`_num_{i#34201}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp i#34211] +[visit_id i#34211] +[visit_exp (((((i_1!`%`_num_{i#34201}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp ((((i_1!`%`_num_{i#34201}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp (((i_1!`%`_num_{i#34201}.0 + n) : nat <:> int) - (1 : nat <:> int))] +[visit_exp ((i_1!`%`_num_{i#34201}.0 + n) : nat <:> int)] +[visit_exp (i_1!`%`_num_{i#34201}.0 + n)] +[visit_exp i_1!`%`_num_{i#34201}.0] +[visit_exp i_1!`%`_num_{i#34201}] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i#34201] +[visit_id i#34201] +[visit_exp n] +[visit_id n] not free +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp `CONST`_instr{numtype#147}((at_2 : addrtype <: numtype), `%`_num_{i#34247}(((((i_2!`%`_num_{i#34237}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp numtype#147] +[visit_id numtype#147] +[visit_exp ((at_2 : addrtype <: numtype), `%`_num_{i#34247}(((((i_2!`%`_num_{i#34237}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp (at_2 : addrtype <: numtype)] +[visit_exp at_2] +[visit_id at_2] not free +[visit_exp `%`_num_{i#34247}(((((i_2!`%`_num_{i#34237}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp i#34247] +[visit_id i#34247] +[visit_exp (((((i_2!`%`_num_{i#34237}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp ((((i_2!`%`_num_{i#34237}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp (((i_2!`%`_num_{i#34237}.0 + n) : nat <:> int) - (1 : nat <:> int))] +[visit_exp ((i_2!`%`_num_{i#34237}.0 + n) : nat <:> int)] +[visit_exp (i_2!`%`_num_{i#34237}.0 + n)] +[visit_exp i_2!`%`_num_{i#34237}.0] +[visit_exp i_2!`%`_num_{i#34237}] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp i#34237] +[visit_id i#34237] +[visit_exp n] +[visit_id n] not free +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp `TABLE.GET`_instr{tableidx#100}(y)] +[visit_exp tableidx#100] +[visit_id tableidx#100] +[visit_exp (y)] +[visit_exp y] +[visit_id y] not free +[visit_exp `TABLE.SET`_instr{tableidx#102}(x)] +[visit_exp tableidx#102] +[visit_id tableidx#102] +[visit_exp (x)] +[visit_exp x] +[visit_id x] not free +[visit_exp `CONST`_instr{numtype#149}((at_1 : addrtype <: numtype), i_1)] +[visit_exp numtype#149] +[visit_id numtype#149] +[visit_exp ((at_1 : addrtype <: numtype), i_1)] +[visit_exp (at_1 : addrtype <: numtype)] +[visit_exp at_1] +[visit_id at_1] not free +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp `CONST`_instr{numtype#151}((at_2 : addrtype <: numtype), i_2)] +[visit_exp numtype#151] +[visit_id numtype#151] +[visit_exp ((at_2 : addrtype <: numtype), i_2)] +[visit_exp (at_2 : addrtype <: numtype)] +[visit_exp at_2] +[visit_id at_2] not free +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp `CONST`_instr{numtype#153}((at' : addrtype <: numtype), `%`_num_{i#34321}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp numtype#153] +[visit_id numtype#153] +[visit_exp ((at' : addrtype <: numtype), `%`_num_{i#34321}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp (at' : addrtype <: numtype)] +[visit_exp at'] +[visit_id at'] not free +[visit_exp `%`_num_{i#34321}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp i#34321] +[visit_id i#34321] +[visit_exp ((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp (((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp ((n : nat <:> int) - (1 : nat <:> int))] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp `TABLE.COPY`_instr{tableidx#104}(x, y)] +[visit_exp tableidx#104] +[visit_id tableidx#104] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] not free +[visit_exp y] +[visit_id y] not free +[check_dims] at elemidx#17 i i#34401 i#34443 i#34469 instr*#1038 j n numtype#155 numtype#157 numtype#159 ref*#15 ref*#16 state#923 tableidx#107 x y z +[visit_exp `%;%`_config{state#923, `instr*#1038`}(z, [`CONST`_instr{numtype#155}((at : addrtype <: numtype), i) `CONST`_instr{numtype#157}(`I32`_numtype, j) `CONST`_instr{numtype#159}(`I32`_numtype, `%`_num_{i#34401}(n)) `TABLE.INIT`_instr{tableidx#107, elemidx#17}(x, y)])] +[visit_exp state#923] +[visit_id state#923] +[visit_exp `instr*#1038`] +[visit_id instr*#1038] +[visit_exp (z, [`CONST`_instr{numtype#155}((at : addrtype <: numtype), i) `CONST`_instr{numtype#157}(`I32`_numtype, j) `CONST`_instr{numtype#159}(`I32`_numtype, `%`_num_{i#34401}(n)) `TABLE.INIT`_instr{tableidx#107, elemidx#17}(x, y)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#155}((at : addrtype <: numtype), i) `CONST`_instr{numtype#157}(`I32`_numtype, j) `CONST`_instr{numtype#159}(`I32`_numtype, `%`_num_{i#34401}(n)) `TABLE.INIT`_instr{tableidx#107, elemidx#17}(x, y)]] +[visit_exp `CONST`_instr{numtype#155}((at : addrtype <: numtype), i)] +[visit_exp numtype#155] +[visit_id numtype#155] +[visit_exp ((at : addrtype <: numtype), i)] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] +[visit_exp i] +[visit_id i] +[visit_exp `CONST`_instr{numtype#157}(`I32`_numtype, j)] +[visit_exp numtype#157] +[visit_id numtype#157] +[visit_exp (`I32`_numtype, j)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp j] +[visit_id j] +[visit_exp `CONST`_instr{numtype#159}(`I32`_numtype, `%`_num_{i#34401}(n))] +[visit_exp numtype#159] +[visit_id numtype#159] +[visit_exp (`I32`_numtype, `%`_num_{i#34401}(n))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#34401}(n)] +[visit_exp i#34401] +[visit_id i#34401] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `TABLE.INIT`_instr{tableidx#107, elemidx#17}(x, y)] +[visit_exp tableidx#107] +[visit_id tableidx#107] +[visit_exp elemidx#17] +[visit_id elemidx#17] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] +[visit_exp y] +[visit_id y] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[visit_exp (((i!`%`_num_{i#34443}.0 + n) > |$table(z, x).`REFS`_tableinst{`ref*#15`}|) \/ ((j!`%`_num_{i#34469}.0 + n) > |$elem(z, y).`REFS`_eleminst{`ref*#16`}|))] +[visit_exp ((i!`%`_num_{i#34443}.0 + n) > |$table(z, x).`REFS`_tableinst{`ref*#15`}|)] +[visit_exp (i!`%`_num_{i#34443}.0 + n)] +[visit_exp i!`%`_num_{i#34443}.0] +[visit_exp i!`%`_num_{i#34443}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#34443] +[visit_id i#34443] +[visit_exp n] +[visit_id n] not free +[visit_exp |$table(z, x).`REFS`_tableinst{`ref*#15`}|] +[visit_exp $table(z, x).`REFS`_tableinst{`ref*#15`}] +[visit_exp $table(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `ref*#15`] +[visit_id ref*#15] +[visit_exp ((j!`%`_num_{i#34469}.0 + n) > |$elem(z, y).`REFS`_eleminst{`ref*#16`}|)] +[visit_exp (j!`%`_num_{i#34469}.0 + n)] +[visit_exp j!`%`_num_{i#34469}.0] +[visit_exp j!`%`_num_{i#34469}] +[visit_exp j] +[visit_id j] not free +[visit_exp i#34469] +[visit_id i#34469] +[visit_exp n] +[visit_id n] not free +[visit_exp |$elem(z, y).`REFS`_eleminst{`ref*#16`}|] +[visit_exp $elem(z, y).`REFS`_eleminst{`ref*#16`}] +[visit_exp $elem(z, y)] +[visit_exp z] +[visit_id z] not free +[visit_exp y] +[visit_id y] not free +[visit_exp `ref*#16`] +[visit_id ref*#16] +[check_dims] at elemidx#19 i i#34533 instr*#1050 j n numtype#161 numtype#163 numtype#165 state#935 tableidx#109 x y z +[visit_exp `%;%`_config{state#935, `instr*#1050`}(z, [`CONST`_instr{numtype#161}((at : addrtype <: numtype), i) `CONST`_instr{numtype#163}(`I32`_numtype, j) `CONST`_instr{numtype#165}(`I32`_numtype, `%`_num_{i#34533}(n)) `TABLE.INIT`_instr{tableidx#109, elemidx#19}(x, y)])] +[visit_exp state#935] +[visit_id state#935] +[visit_exp `instr*#1050`] +[visit_id instr*#1050] +[visit_exp (z, [`CONST`_instr{numtype#161}((at : addrtype <: numtype), i) `CONST`_instr{numtype#163}(`I32`_numtype, j) `CONST`_instr{numtype#165}(`I32`_numtype, `%`_num_{i#34533}(n)) `TABLE.INIT`_instr{tableidx#109, elemidx#19}(x, y)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#161}((at : addrtype <: numtype), i) `CONST`_instr{numtype#163}(`I32`_numtype, j) `CONST`_instr{numtype#165}(`I32`_numtype, `%`_num_{i#34533}(n)) `TABLE.INIT`_instr{tableidx#109, elemidx#19}(x, y)]] +[visit_exp `CONST`_instr{numtype#161}((at : addrtype <: numtype), i)] +[visit_exp numtype#161] +[visit_id numtype#161] +[visit_exp ((at : addrtype <: numtype), i)] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] +[visit_exp i] +[visit_id i] +[visit_exp `CONST`_instr{numtype#163}(`I32`_numtype, j)] +[visit_exp numtype#163] +[visit_id numtype#163] +[visit_exp (`I32`_numtype, j)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp j] +[visit_id j] +[visit_exp `CONST`_instr{numtype#165}(`I32`_numtype, `%`_num_{i#34533}(n))] +[visit_exp numtype#165] +[visit_id numtype#165] +[visit_exp (`I32`_numtype, `%`_num_{i#34533}(n))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#34533}(n)] +[visit_exp i#34533] +[visit_id i#34533] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `TABLE.INIT`_instr{tableidx#109, elemidx#19}(x, y)] +[visit_exp tableidx#109] +[visit_id tableidx#109] +[visit_exp elemidx#19] +[visit_id elemidx#19] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] +[visit_exp y] +[visit_id y] +[visit_exp []] +[visit_exp (n = 0)] +[visit_exp n] +[visit_id n] not free +[visit_exp 0] +[check_dims] at elemidx#21 elemidx#23 i i#34613 i#34675 i#34715 i#34725 i#34751 i#34761 i#34783 instr*#1062 j n numtype#167 numtype#169 numtype#171 numtype#173 numtype#175 numtype#177 numtype#179 ref*#17 state#947 tableidx#111 tableidx#113 tableidx#115 x y z +[visit_exp `%;%`_config{state#947, `instr*#1062`}(z, [`CONST`_instr{numtype#167}((at : addrtype <: numtype), i) `CONST`_instr{numtype#169}(`I32`_numtype, j) `CONST`_instr{numtype#171}(`I32`_numtype, `%`_num_{i#34613}(n)) `TABLE.INIT`_instr{tableidx#111, elemidx#21}(x, y)])] +[visit_exp state#947] +[visit_id state#947] +[visit_exp `instr*#1062`] +[visit_id instr*#1062] +[visit_exp (z, [`CONST`_instr{numtype#167}((at : addrtype <: numtype), i) `CONST`_instr{numtype#169}(`I32`_numtype, j) `CONST`_instr{numtype#171}(`I32`_numtype, `%`_num_{i#34613}(n)) `TABLE.INIT`_instr{tableidx#111, elemidx#21}(x, y)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#167}((at : addrtype <: numtype), i) `CONST`_instr{numtype#169}(`I32`_numtype, j) `CONST`_instr{numtype#171}(`I32`_numtype, `%`_num_{i#34613}(n)) `TABLE.INIT`_instr{tableidx#111, elemidx#21}(x, y)]] +[visit_exp `CONST`_instr{numtype#167}((at : addrtype <: numtype), i)] +[visit_exp numtype#167] +[visit_id numtype#167] +[visit_exp ((at : addrtype <: numtype), i)] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] +[visit_exp i] +[visit_id i] +[visit_exp `CONST`_instr{numtype#169}(`I32`_numtype, j)] +[visit_exp numtype#169] +[visit_id numtype#169] +[visit_exp (`I32`_numtype, j)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp j] +[visit_id j] +[visit_exp `CONST`_instr{numtype#171}(`I32`_numtype, `%`_num_{i#34613}(n))] +[visit_exp numtype#171] +[visit_id numtype#171] +[visit_exp (`I32`_numtype, `%`_num_{i#34613}(n))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#34613}(n)] +[visit_exp i#34613] +[visit_id i#34613] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `TABLE.INIT`_instr{tableidx#111, elemidx#21}(x, y)] +[visit_exp tableidx#111] +[visit_id tableidx#111] +[visit_exp elemidx#21] +[visit_id elemidx#21] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] +[visit_exp y] +[visit_id y] +[visit_exp [`CONST`_instr{numtype#173}((at : addrtype <: numtype), i) ($elem(z, y).`REFS`_eleminst{`ref*#17`}[j!`%`_num_{i#34675}.0] : ref <: instr) `TABLE.SET`_instr{tableidx#113}(x) `CONST`_instr{numtype#175}((at : addrtype <: numtype), `%`_num_{i#34725}((i!`%`_num_{i#34715}.0 + 1))) `CONST`_instr{numtype#177}(`I32`_numtype, `%`_num_{i#34761}((j!`%`_num_{i#34751}.0 + 1))) `CONST`_instr{numtype#179}(`I32`_numtype, `%`_num_{i#34783}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `TABLE.INIT`_instr{tableidx#115, elemidx#23}(x, y)]] +[visit_exp `CONST`_instr{numtype#173}((at : addrtype <: numtype), i)] +[visit_exp numtype#173] +[visit_id numtype#173] +[visit_exp ((at : addrtype <: numtype), i)] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] not free +[visit_exp i] +[visit_id i] not free +[visit_exp ($elem(z, y).`REFS`_eleminst{`ref*#17`}[j!`%`_num_{i#34675}.0] : ref <: instr)] +[visit_exp $elem(z, y).`REFS`_eleminst{`ref*#17`}[j!`%`_num_{i#34675}.0]] +[visit_exp $elem(z, y).`REFS`_eleminst{`ref*#17`}] +[visit_exp $elem(z, y)] +[visit_exp z] +[visit_id z] not free +[visit_exp y] +[visit_id y] not free +[visit_exp `ref*#17`] +[visit_id ref*#17] +[visit_exp j!`%`_num_{i#34675}.0] +[visit_exp j!`%`_num_{i#34675}] +[visit_exp j] +[visit_id j] not free +[visit_exp i#34675] +[visit_id i#34675] +[visit_exp `TABLE.SET`_instr{tableidx#113}(x)] +[visit_exp tableidx#113] +[visit_id tableidx#113] +[visit_exp (x)] +[visit_exp x] +[visit_id x] not free +[visit_exp `CONST`_instr{numtype#175}((at : addrtype <: numtype), `%`_num_{i#34725}((i!`%`_num_{i#34715}.0 + 1)))] +[visit_exp numtype#175] +[visit_id numtype#175] +[visit_exp ((at : addrtype <: numtype), `%`_num_{i#34725}((i!`%`_num_{i#34715}.0 + 1)))] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] not free +[visit_exp `%`_num_{i#34725}((i!`%`_num_{i#34715}.0 + 1))] +[visit_exp i#34725] +[visit_id i#34725] +[visit_exp ((i!`%`_num_{i#34715}.0 + 1))] +[visit_exp (i!`%`_num_{i#34715}.0 + 1)] +[visit_exp i!`%`_num_{i#34715}.0] +[visit_exp i!`%`_num_{i#34715}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#34715] +[visit_id i#34715] +[visit_exp 1] +[visit_exp `CONST`_instr{numtype#177}(`I32`_numtype, `%`_num_{i#34761}((j!`%`_num_{i#34751}.0 + 1)))] +[visit_exp numtype#177] +[visit_id numtype#177] +[visit_exp (`I32`_numtype, `%`_num_{i#34761}((j!`%`_num_{i#34751}.0 + 1)))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#34761}((j!`%`_num_{i#34751}.0 + 1))] +[visit_exp i#34761] +[visit_id i#34761] +[visit_exp ((j!`%`_num_{i#34751}.0 + 1))] +[visit_exp (j!`%`_num_{i#34751}.0 + 1)] +[visit_exp j!`%`_num_{i#34751}.0] +[visit_exp j!`%`_num_{i#34751}] +[visit_exp j] +[visit_id j] not free +[visit_exp i#34751] +[visit_id i#34751] +[visit_exp 1] +[visit_exp `CONST`_instr{numtype#179}(`I32`_numtype, `%`_num_{i#34783}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp numtype#179] +[visit_id numtype#179] +[visit_exp (`I32`_numtype, `%`_num_{i#34783}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#34783}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp i#34783] +[visit_id i#34783] +[visit_exp ((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp (((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp ((n : nat <:> int) - (1 : nat <:> int))] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp `TABLE.INIT`_instr{tableidx#115, elemidx#23}(x, y)] +[visit_exp tableidx#115] +[visit_id tableidx#115] +[visit_exp elemidx#23] +[visit_id elemidx#23] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] not free +[visit_exp y] +[visit_id y] not free +[check_dims] elemidx#25 instr*#1074 instr*#1086 state#959 state#971 x z +[visit_exp `%;%`_config{state#959, `instr*#1074`}(z, [`ELEM.DROP`_instr{elemidx#25}(x)])] +[visit_exp state#959] +[visit_id state#959] +[visit_exp `instr*#1074`] +[visit_id instr*#1074] +[visit_exp (z, [`ELEM.DROP`_instr{elemidx#25}(x)])] +[visit_exp z] +[visit_id z] +[visit_exp [`ELEM.DROP`_instr{elemidx#25}(x)]] +[visit_exp `ELEM.DROP`_instr{elemidx#25}(x)] +[visit_exp elemidx#25] +[visit_id elemidx#25] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%;%`_config{state#971, `instr*#1086`}($with_elem(z, x, []), [])] +[visit_exp state#971] +[visit_id state#971] +[visit_exp `instr*#1086`] +[visit_id instr*#1086] +[visit_exp ($with_elem(z, x, []), [])] +[visit_exp $with_elem(z, x, [])] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp []] +[visit_exp []] +[check_dims] ao at byte*#1849 i i#34883 i#34893 instr*#1098 memarg#35 memidx#67 nt numtype#181 numtype?#7 state#983 u64#405 x z +[visit_exp `%;%`_config{state#983, `instr*#1098`}(z, [`CONST`_instr{numtype#181}((at : addrtype <: numtype), i) `LOAD`_instr{`numtype?#7`, memidx#67, memarg#35}(nt, ?(), x, ao)])] +[visit_exp state#983] +[visit_id state#983] +[visit_exp `instr*#1098`] +[visit_id instr*#1098] +[visit_exp (z, [`CONST`_instr{numtype#181}((at : addrtype <: numtype), i) `LOAD`_instr{`numtype?#7`, memidx#67, memarg#35}(nt, ?(), x, ao)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#181}((at : addrtype <: numtype), i) `LOAD`_instr{`numtype?#7`, memidx#67, memarg#35}(nt, ?(), x, ao)]] +[visit_exp `CONST`_instr{numtype#181}((at : addrtype <: numtype), i)] +[visit_exp numtype#181] +[visit_id numtype#181] +[visit_exp ((at : addrtype <: numtype), i)] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] +[visit_exp i] +[visit_id i] +[visit_exp `LOAD`_instr{`numtype?#7`, memidx#67, memarg#35}(nt, ?(), x, ao)] +[visit_exp `numtype?#7`] +[visit_id numtype?#7] +[visit_exp memidx#67] +[visit_id memidx#67] +[visit_exp memarg#35] +[visit_id memarg#35] +[visit_exp (nt, ?(), x, ao)] +[visit_exp nt] +[visit_id nt] +[visit_exp ?()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[visit_exp (((i!`%`_num_{i#34883}.0 + ao.`OFFSET`_memarg{u64#405}!`%`_u64{i#34893}.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst{`byte*#1849`}|)] +[visit_exp ((i!`%`_num_{i#34883}.0 + ao.`OFFSET`_memarg{u64#405}!`%`_u64{i#34893}.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] +[visit_exp (i!`%`_num_{i#34883}.0 + ao.`OFFSET`_memarg{u64#405}!`%`_u64{i#34893}.0)] +[visit_exp i!`%`_num_{i#34883}.0] +[visit_exp i!`%`_num_{i#34883}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#34883] +[visit_id i#34883] +[visit_exp ao.`OFFSET`_memarg{u64#405}!`%`_u64{i#34893}.0] +[visit_exp ao.`OFFSET`_memarg{u64#405}!`%`_u64{i#34893}] +[visit_exp ao.`OFFSET`_memarg{u64#405}] +[visit_exp ao] +[visit_id ao] not free +[visit_exp u64#405] +[visit_id u64#405] +[visit_exp i#34893] +[visit_id i#34893] +[visit_exp ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] +[visit_exp (($size(nt) : nat <:> rat) / (8 : nat <:> rat))] +[visit_exp ($size(nt) : nat <:> rat)] +[visit_exp $size(nt)] +[visit_exp nt] +[visit_id nt] not free +[visit_exp (8 : nat <:> rat)] +[visit_exp 8] +[visit_exp |$mem(z, x).`BYTES`_meminst{`byte*#1849`}|] +[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1849`}] +[visit_exp $mem(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `byte*#1849`] +[visit_id byte*#1849] +[check_dims] ao at byte*#1850 c i i#34963 i#34973 instr*#1110 memarg#37 memidx#69 nt numtype#184 numtype#187 numtype?#8 state#995 u64#406 x z +[visit_exp `%;%`_config{state#995, `instr*#1110`}(z, [`CONST`_instr{numtype#184}((at : addrtype <: numtype), i) `LOAD`_instr{`numtype?#8`, memidx#69, memarg#37}(nt, ?(), x, ao)])] +[visit_exp state#995] +[visit_id state#995] +[visit_exp `instr*#1110`] +[visit_id instr*#1110] +[visit_exp (z, [`CONST`_instr{numtype#184}((at : addrtype <: numtype), i) `LOAD`_instr{`numtype?#8`, memidx#69, memarg#37}(nt, ?(), x, ao)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#184}((at : addrtype <: numtype), i) `LOAD`_instr{`numtype?#8`, memidx#69, memarg#37}(nt, ?(), x, ao)]] +[visit_exp `CONST`_instr{numtype#184}((at : addrtype <: numtype), i)] +[visit_exp numtype#184] +[visit_id numtype#184] +[visit_exp ((at : addrtype <: numtype), i)] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] +[visit_exp i] +[visit_id i] +[visit_exp `LOAD`_instr{`numtype?#8`, memidx#69, memarg#37}(nt, ?(), x, ao)] +[visit_exp `numtype?#8`] +[visit_id numtype?#8] +[visit_exp memidx#69] +[visit_id memidx#69] +[visit_exp memarg#37] +[visit_id memarg#37] +[visit_exp (nt, ?(), x, ao)] +[visit_exp nt] +[visit_id nt] +[visit_exp ?()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp [`CONST`_instr{numtype#187}(nt, c)]] +[visit_exp `CONST`_instr{numtype#187}(nt, c)] +[visit_exp numtype#187] +[visit_id numtype#187] +[visit_exp (nt, c)] +[visit_exp nt] +[visit_id nt] not free +[visit_exp c] +[visit_id c] +[visit_exp ($nbytes_(nt, c) = $mem(z, x).`BYTES`_meminst{`byte*#1850`}[(i!`%`_num_{i#34963}.0 + ao.`OFFSET`_memarg{u64#406}!`%`_u64{i#34973}.0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)])] +[visit_exp $nbytes_(nt, c)] +[visit_exp nt] +[visit_id nt] not free +[visit_exp c] +[visit_id c] not free +[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1850`}[(i!`%`_num_{i#34963}.0 + ao.`OFFSET`_memarg{u64#406}!`%`_u64{i#34973}.0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]] +[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1850`}] +[visit_exp $mem(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `byte*#1850`] +[visit_id byte*#1850] +[visit_exp (i!`%`_num_{i#34963}.0 + ao.`OFFSET`_memarg{u64#406}!`%`_u64{i#34973}.0)] +[visit_exp i!`%`_num_{i#34963}.0] +[visit_exp i!`%`_num_{i#34963}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#34963] +[visit_id i#34963] +[visit_exp ao.`OFFSET`_memarg{u64#406}!`%`_u64{i#34973}.0] +[visit_exp ao.`OFFSET`_memarg{u64#406}!`%`_u64{i#34973}] +[visit_exp ao.`OFFSET`_memarg{u64#406}] +[visit_exp ao] +[visit_id ao] not free +[visit_exp u64#406] +[visit_id u64#406] +[visit_exp i#34973] +[visit_id i#34973] +[visit_exp ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] +[visit_exp (($size(nt) : nat <:> rat) / (8 : nat <:> rat))] +[visit_exp ($size(nt) : nat <:> rat)] +[visit_exp $size(nt)] +[visit_exp nt] +[visit_id nt] not free +[visit_exp (8 : nat <:> rat)] +[visit_exp 8] +[check_dims] Inn ao at byte*#1851 i i#35021 i#35028 i#35060 i#35070 instr*#1122 memarg#39 memidx#71 n numtype#189 numtype?#9 state#1007 sx sx#270 sz#156 u64#407 x z +[visit_exp `%;%`_config{state#1007, `instr*#1122`}(z, [`CONST`_instr{numtype#189}((at : addrtype <: numtype), i) `LOAD`_instr{`numtype?#9`, memidx#71, memarg#39}((Inn : Inn <: numtype), ?(`%_%`_loadop_{sz#156, sx#270, i#35021}(`%`_sz{i#35028}(n), sx)), x, ao)])] +[visit_exp state#1007] +[visit_id state#1007] +[visit_exp `instr*#1122`] +[visit_id instr*#1122] +[visit_exp (z, [`CONST`_instr{numtype#189}((at : addrtype <: numtype), i) `LOAD`_instr{`numtype?#9`, memidx#71, memarg#39}((Inn : Inn <: numtype), ?(`%_%`_loadop_{sz#156, sx#270, i#35021}(`%`_sz{i#35028}(n), sx)), x, ao)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#189}((at : addrtype <: numtype), i) `LOAD`_instr{`numtype?#9`, memidx#71, memarg#39}((Inn : Inn <: numtype), ?(`%_%`_loadop_{sz#156, sx#270, i#35021}(`%`_sz{i#35028}(n), sx)), x, ao)]] +[visit_exp `CONST`_instr{numtype#189}((at : addrtype <: numtype), i)] +[visit_exp numtype#189] +[visit_id numtype#189] +[visit_exp ((at : addrtype <: numtype), i)] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] +[visit_exp i] +[visit_id i] +[visit_exp `LOAD`_instr{`numtype?#9`, memidx#71, memarg#39}((Inn : Inn <: numtype), ?(`%_%`_loadop_{sz#156, sx#270, i#35021}(`%`_sz{i#35028}(n), sx)), x, ao)] +[visit_exp `numtype?#9`] +[visit_id numtype?#9] +[visit_exp memidx#71] +[visit_id memidx#71] +[visit_exp memarg#39] +[visit_id memarg#39] +[visit_exp ((Inn : Inn <: numtype), ?(`%_%`_loadop_{sz#156, sx#270, i#35021}(`%`_sz{i#35028}(n), sx)), x, ao)] +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] +[visit_exp ?(`%_%`_loadop_{sz#156, sx#270, i#35021}(`%`_sz{i#35028}(n), sx))] +[visit_exp `%_%`_loadop_{sz#156, sx#270, i#35021}(`%`_sz{i#35028}(n), sx)] +[visit_exp sz#156] +[visit_id sz#156] +[visit_exp sx#270] +[visit_id sx#270] +[visit_exp i#35021] +[visit_id i#35021] +[visit_exp (`%`_sz{i#35028}(n), sx)] +[visit_exp `%`_sz{i#35028}(n)] +[visit_exp i#35028] +[visit_id i#35028] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp sx] +[visit_id sx] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[visit_exp (((i!`%`_num_{i#35060}.0 + ao.`OFFSET`_memarg{u64#407}!`%`_u64{i#35070}.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst{`byte*#1851`}|)] +[visit_exp ((i!`%`_num_{i#35060}.0 + ao.`OFFSET`_memarg{u64#407}!`%`_u64{i#35070}.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] +[visit_exp (i!`%`_num_{i#35060}.0 + ao.`OFFSET`_memarg{u64#407}!`%`_u64{i#35070}.0)] +[visit_exp i!`%`_num_{i#35060}.0] +[visit_exp i!`%`_num_{i#35060}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#35060] +[visit_id i#35060] +[visit_exp ao.`OFFSET`_memarg{u64#407}!`%`_u64{i#35070}.0] +[visit_exp ao.`OFFSET`_memarg{u64#407}!`%`_u64{i#35070}] +[visit_exp ao.`OFFSET`_memarg{u64#407}] +[visit_exp ao] +[visit_id ao] not free +[visit_exp u64#407] +[visit_id u64#407] +[visit_exp i#35070] +[visit_id i#35070] +[visit_exp (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] +[visit_exp ((n : nat <:> rat) / (8 : nat <:> rat))] +[visit_exp (n : nat <:> rat)] +[visit_exp n] +[visit_id n] not free +[visit_exp (8 : nat <:> rat)] +[visit_exp 8] +[visit_exp |$mem(z, x).`BYTES`_meminst{`byte*#1851`}|] +[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1851`}] +[visit_exp $mem(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `byte*#1851`] +[visit_id byte*#1851] +[check_dims] Inn ao at byte*#1852 c i i#35122 i#35129 i#35199 i#35209 instr*#1134 memarg#41 memidx#73 n numtype#192 numtype#195 numtype?#10 state#1019 sx sx#272 sz#158 u64#408 x z +[visit_exp `%;%`_config{state#1019, `instr*#1134`}(z, [`CONST`_instr{numtype#192}((at : addrtype <: numtype), i) `LOAD`_instr{`numtype?#10`, memidx#73, memarg#41}((Inn : Inn <: numtype), ?(`%_%`_loadop_{sz#158, sx#272, i#35122}(`%`_sz{i#35129}(n), sx)), x, ao)])] +[visit_exp state#1019] +[visit_id state#1019] +[visit_exp `instr*#1134`] +[visit_id instr*#1134] +[visit_exp (z, [`CONST`_instr{numtype#192}((at : addrtype <: numtype), i) `LOAD`_instr{`numtype?#10`, memidx#73, memarg#41}((Inn : Inn <: numtype), ?(`%_%`_loadop_{sz#158, sx#272, i#35122}(`%`_sz{i#35129}(n), sx)), x, ao)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#192}((at : addrtype <: numtype), i) `LOAD`_instr{`numtype?#10`, memidx#73, memarg#41}((Inn : Inn <: numtype), ?(`%_%`_loadop_{sz#158, sx#272, i#35122}(`%`_sz{i#35129}(n), sx)), x, ao)]] +[visit_exp `CONST`_instr{numtype#192}((at : addrtype <: numtype), i)] +[visit_exp numtype#192] +[visit_id numtype#192] +[visit_exp ((at : addrtype <: numtype), i)] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] +[visit_exp i] +[visit_id i] +[visit_exp `LOAD`_instr{`numtype?#10`, memidx#73, memarg#41}((Inn : Inn <: numtype), ?(`%_%`_loadop_{sz#158, sx#272, i#35122}(`%`_sz{i#35129}(n), sx)), x, ao)] +[visit_exp `numtype?#10`] +[visit_id numtype?#10] +[visit_exp memidx#73] +[visit_id memidx#73] +[visit_exp memarg#41] +[visit_id memarg#41] +[visit_exp ((Inn : Inn <: numtype), ?(`%_%`_loadop_{sz#158, sx#272, i#35122}(`%`_sz{i#35129}(n), sx)), x, ao)] +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] +[visit_exp ?(`%_%`_loadop_{sz#158, sx#272, i#35122}(`%`_sz{i#35129}(n), sx))] +[visit_exp `%_%`_loadop_{sz#158, sx#272, i#35122}(`%`_sz{i#35129}(n), sx)] +[visit_exp sz#158] +[visit_id sz#158] +[visit_exp sx#272] +[visit_id sx#272] +[visit_exp i#35122] +[visit_id i#35122] +[visit_exp (`%`_sz{i#35129}(n), sx)] +[visit_exp `%`_sz{i#35129}(n)] +[visit_exp i#35129] +[visit_id i#35129] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp sx] +[visit_id sx] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp [`CONST`_instr{numtype#195}((Inn : Inn <: numtype), $extend__(n, $size((Inn : Inn <: numtype)), sx, c))]] +[visit_exp `CONST`_instr{numtype#195}((Inn : Inn <: numtype), $extend__(n, $size((Inn : Inn <: numtype)), sx, c))] +[visit_exp numtype#195] +[visit_id numtype#195] +[visit_exp ((Inn : Inn <: numtype), $extend__(n, $size((Inn : Inn <: numtype)), sx, c))] +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] not free +[visit_exp $extend__(n, $size((Inn : Inn <: numtype)), sx, c)] +[visit_exp n] +[visit_id n] not free +[visit_exp $size((Inn : Inn <: numtype))] +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] not free +[visit_exp sx] +[visit_id sx] not free +[visit_exp c] +[visit_id c] +[visit_exp ($ibytes_(n, c) = $mem(z, x).`BYTES`_meminst{`byte*#1852`}[(i!`%`_num_{i#35199}.0 + ao.`OFFSET`_memarg{u64#408}!`%`_u64{i#35209}.0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)])] +[visit_exp $ibytes_(n, c)] +[visit_exp n] +[visit_id n] not free +[visit_exp c] +[visit_id c] not free +[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1852`}[(i!`%`_num_{i#35199}.0 + ao.`OFFSET`_memarg{u64#408}!`%`_u64{i#35209}.0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]] +[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1852`}] +[visit_exp $mem(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `byte*#1852`] +[visit_id byte*#1852] +[visit_exp (i!`%`_num_{i#35199}.0 + ao.`OFFSET`_memarg{u64#408}!`%`_u64{i#35209}.0)] +[visit_exp i!`%`_num_{i#35199}.0] +[visit_exp i!`%`_num_{i#35199}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#35199] +[visit_id i#35199] +[visit_exp ao.`OFFSET`_memarg{u64#408}!`%`_u64{i#35209}.0] +[visit_exp ao.`OFFSET`_memarg{u64#408}!`%`_u64{i#35209}] +[visit_exp ao.`OFFSET`_memarg{u64#408}] +[visit_exp ao] +[visit_id ao] not free +[visit_exp u64#408] +[visit_id u64#408] +[visit_exp i#35209] +[visit_id i#35209] +[visit_exp (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] +[visit_exp ((n : nat <:> rat) / (8 : nat <:> rat))] +[visit_exp (n : nat <:> rat)] +[visit_exp n] +[visit_id n] not free +[visit_exp (8 : nat <:> rat)] +[visit_exp 8] +[check_dims] ao at byte*#1853 i i#35293 i#35303 instr*#1146 memarg#43 memidx#75 numtype#197 state#1031 u64#409 vectype?#6 x z +[visit_exp `%;%`_config{state#1031, `instr*#1146`}(z, [`CONST`_instr{numtype#197}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#6`, memidx#75, memarg#43}(`V128`_vectype, ?(), x, ao)])] +[visit_exp state#1031] +[visit_id state#1031] +[visit_exp `instr*#1146`] +[visit_id instr*#1146] +[visit_exp (z, [`CONST`_instr{numtype#197}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#6`, memidx#75, memarg#43}(`V128`_vectype, ?(), x, ao)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#197}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#6`, memidx#75, memarg#43}(`V128`_vectype, ?(), x, ao)]] +[visit_exp `CONST`_instr{numtype#197}((at : addrtype <: numtype), i)] +[visit_exp numtype#197] +[visit_id numtype#197] +[visit_exp ((at : addrtype <: numtype), i)] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] +[visit_exp i] +[visit_id i] +[visit_exp `VLOAD`_instr{`vectype?#6`, memidx#75, memarg#43}(`V128`_vectype, ?(), x, ao)] +[visit_exp `vectype?#6`] +[visit_id vectype?#6] +[visit_exp memidx#75] +[visit_id memidx#75] +[visit_exp memarg#43] +[visit_id memarg#43] +[visit_exp (`V128`_vectype, ?(), x, ao)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp ?()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[visit_exp (((i!`%`_num_{i#35293}.0 + ao.`OFFSET`_memarg{u64#409}!`%`_u64{i#35303}.0) + ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst{`byte*#1853`}|)] +[visit_exp ((i!`%`_num_{i#35293}.0 + ao.`OFFSET`_memarg{u64#409}!`%`_u64{i#35303}.0) + ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] +[visit_exp (i!`%`_num_{i#35293}.0 + ao.`OFFSET`_memarg{u64#409}!`%`_u64{i#35303}.0)] +[visit_exp i!`%`_num_{i#35293}.0] +[visit_exp i!`%`_num_{i#35293}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#35293] +[visit_id i#35293] +[visit_exp ao.`OFFSET`_memarg{u64#409}!`%`_u64{i#35303}.0] +[visit_exp ao.`OFFSET`_memarg{u64#409}!`%`_u64{i#35303}] +[visit_exp ao.`OFFSET`_memarg{u64#409}] +[visit_exp ao] +[visit_id ao] not free +[visit_exp u64#409] +[visit_id u64#409] +[visit_exp i#35303] +[visit_id i#35303] +[visit_exp ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] +[visit_exp (($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat))] +[visit_exp ($vsize(`V128`_vectype) : nat <:> rat)] +[visit_exp $vsize(`V128`_vectype)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp (8 : nat <:> rat)] +[visit_exp 8] +[visit_exp |$mem(z, x).`BYTES`_meminst{`byte*#1853`}|] +[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1853`}] +[visit_exp $mem(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `byte*#1853`] +[visit_id byte*#1853] +[check_dims] ao at byte*#1854 c i i#35387 i#35397 instr*#1158 memarg#45 memidx#77 numtype#199 state#1043 u64#410 vectype#64 vectype?#7 x z +[visit_exp `%;%`_config{state#1043, `instr*#1158`}(z, [`CONST`_instr{numtype#199}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#7`, memidx#77, memarg#45}(`V128`_vectype, ?(), x, ao)])] +[visit_exp state#1043] +[visit_id state#1043] +[visit_exp `instr*#1158`] +[visit_id instr*#1158] +[visit_exp (z, [`CONST`_instr{numtype#199}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#7`, memidx#77, memarg#45}(`V128`_vectype, ?(), x, ao)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#199}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#7`, memidx#77, memarg#45}(`V128`_vectype, ?(), x, ao)]] +[visit_exp `CONST`_instr{numtype#199}((at : addrtype <: numtype), i)] +[visit_exp numtype#199] +[visit_id numtype#199] +[visit_exp ((at : addrtype <: numtype), i)] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] +[visit_exp i] +[visit_id i] +[visit_exp `VLOAD`_instr{`vectype?#7`, memidx#77, memarg#45}(`V128`_vectype, ?(), x, ao)] +[visit_exp `vectype?#7`] +[visit_id vectype?#7] +[visit_exp memidx#77] +[visit_id memidx#77] +[visit_exp memarg#45] +[visit_id memarg#45] +[visit_exp (`V128`_vectype, ?(), x, ao)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp ?()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp [`VCONST`_instr{vectype#64}(`V128`_vectype, c)]] +[visit_exp `VCONST`_instr{vectype#64}(`V128`_vectype, c)] +[visit_exp vectype#64] +[visit_id vectype#64] +[visit_exp (`V128`_vectype, c)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c] +[visit_id c] +[visit_exp ($vbytes_(`V128`_vectype, c) = $mem(z, x).`BYTES`_meminst{`byte*#1854`}[(i!`%`_num_{i#35387}.0 + ao.`OFFSET`_memarg{u64#410}!`%`_u64{i#35397}.0) : ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)])] +[visit_exp $vbytes_(`V128`_vectype, c)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c] +[visit_id c] not free +[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1854`}[(i!`%`_num_{i#35387}.0 + ao.`OFFSET`_memarg{u64#410}!`%`_u64{i#35397}.0) : ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]] +[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1854`}] +[visit_exp $mem(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `byte*#1854`] +[visit_id byte*#1854] +[visit_exp (i!`%`_num_{i#35387}.0 + ao.`OFFSET`_memarg{u64#410}!`%`_u64{i#35397}.0)] +[visit_exp i!`%`_num_{i#35387}.0] +[visit_exp i!`%`_num_{i#35387}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#35387] +[visit_id i#35387] +[visit_exp ao.`OFFSET`_memarg{u64#410}!`%`_u64{i#35397}.0] +[visit_exp ao.`OFFSET`_memarg{u64#410}!`%`_u64{i#35397}] +[visit_exp ao.`OFFSET`_memarg{u64#410}] +[visit_exp ao] +[visit_id ao] not free +[visit_exp u64#410] +[visit_id u64#410] +[visit_exp i#35397] +[visit_id i#35397] +[visit_exp ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] +[visit_exp (($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat))] +[visit_exp ($vsize(`V128`_vectype) : nat <:> rat)] +[visit_exp $vsize(`V128`_vectype)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp (8 : nat <:> rat)] +[visit_exp 8] +[check_dims] K M M#63 ao at byte*#1855 i i#35475 i#35482 i#35514 i#35524 instr*#1170 memarg#47 memidx#79 numtype#201 state#1055 sx sx#289 sz#205 u64#411 vectype?#8 x z +[visit_exp `%;%`_config{state#1055, `instr*#1170`}(z, [`CONST`_instr{numtype#201}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#8`, memidx#79, memarg#47}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#205, M#63, sx#289, i#35475}(`%`_sz{i#35482}(M), K, sx)), x, ao)])] +[visit_exp state#1055] +[visit_id state#1055] +[visit_exp `instr*#1170`] +[visit_id instr*#1170] +[visit_exp (z, [`CONST`_instr{numtype#201}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#8`, memidx#79, memarg#47}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#205, M#63, sx#289, i#35475}(`%`_sz{i#35482}(M), K, sx)), x, ao)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#201}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#8`, memidx#79, memarg#47}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#205, M#63, sx#289, i#35475}(`%`_sz{i#35482}(M), K, sx)), x, ao)]] +[visit_exp `CONST`_instr{numtype#201}((at : addrtype <: numtype), i)] +[visit_exp numtype#201] +[visit_id numtype#201] +[visit_exp ((at : addrtype <: numtype), i)] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] +[visit_exp i] +[visit_id i] +[visit_exp `VLOAD`_instr{`vectype?#8`, memidx#79, memarg#47}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#205, M#63, sx#289, i#35475}(`%`_sz{i#35482}(M), K, sx)), x, ao)] +[visit_exp `vectype?#8`] +[visit_id vectype?#8] +[visit_exp memidx#79] +[visit_id memidx#79] +[visit_exp memarg#47] +[visit_id memarg#47] +[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#205, M#63, sx#289, i#35475}(`%`_sz{i#35482}(M), K, sx)), x, ao)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp ?(`SHAPE%X%_%`_vloadop_{sz#205, M#63, sx#289, i#35475}(`%`_sz{i#35482}(M), K, sx))] +[visit_exp `SHAPE%X%_%`_vloadop_{sz#205, M#63, sx#289, i#35475}(`%`_sz{i#35482}(M), K, sx)] +[visit_exp sz#205] +[visit_id sz#205] +[visit_exp M#63] +[visit_id M#63] +[visit_exp sx#289] +[visit_id sx#289] +[visit_exp i#35475] +[visit_id i#35475] +[visit_exp (`%`_sz{i#35482}(M), K, sx)] +[visit_exp `%`_sz{i#35482}(M)] +[visit_exp i#35482] +[visit_id i#35482] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp K] +[visit_id K] +[visit_exp sx] +[visit_id sx] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[visit_exp (((i!`%`_num_{i#35514}.0 + ao.`OFFSET`_memarg{u64#411}!`%`_u64{i#35524}.0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst{`byte*#1855`}|)] +[visit_exp ((i!`%`_num_{i#35514}.0 + ao.`OFFSET`_memarg{u64#411}!`%`_u64{i#35524}.0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] +[visit_exp (i!`%`_num_{i#35514}.0 + ao.`OFFSET`_memarg{u64#411}!`%`_u64{i#35524}.0)] +[visit_exp i!`%`_num_{i#35514}.0] +[visit_exp i!`%`_num_{i#35514}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#35514] +[visit_id i#35514] +[visit_exp ao.`OFFSET`_memarg{u64#411}!`%`_u64{i#35524}.0] +[visit_exp ao.`OFFSET`_memarg{u64#411}!`%`_u64{i#35524}] +[visit_exp ao.`OFFSET`_memarg{u64#411}] +[visit_exp ao] +[visit_id ao] not free +[visit_exp u64#411] +[visit_id u64#411] +[visit_exp i#35524] +[visit_id i#35524] +[visit_exp ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] +[visit_exp (((M * K) : nat <:> rat) / (8 : nat <:> rat))] +[visit_exp ((M * K) : nat <:> rat)] +[visit_exp (M * K)] +[visit_exp M] +[visit_id M] not free +[visit_exp K] +[visit_id K] not free +[visit_exp (8 : nat <:> rat)] +[visit_exp 8] +[visit_exp |$mem(z, x).`BYTES`_meminst{`byte*#1855`}|] +[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1855`}] +[visit_exp $mem(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `byte*#1855`] +[visit_id byte*#1855] +[check_dims] Jnn K M M#80 ao at byte*#1856 c dim#7243 i i#35576 i#35583 i#35641 i#35651 i#35700 i#35707 instr*#1182 j k lanetype#7243 memarg#49 memidx#81 numtype#203 state#1067 sx sx#306 sz#252 u64#412 vectype#68 vectype?#9 x z +[visit_exp `%;%`_config{state#1067, `instr*#1182`}(z, [`CONST`_instr{numtype#203}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#9`, memidx#81, memarg#49}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#252, M#80, sx#306, i#35576}(`%`_sz{i#35583}(M), K, sx)), x, ao)])] +[visit_exp state#1067] +[visit_id state#1067] +[visit_exp `instr*#1182`] +[visit_id instr*#1182] +[visit_exp (z, [`CONST`_instr{numtype#203}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#9`, memidx#81, memarg#49}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#252, M#80, sx#306, i#35576}(`%`_sz{i#35583}(M), K, sx)), x, ao)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#203}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#9`, memidx#81, memarg#49}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#252, M#80, sx#306, i#35576}(`%`_sz{i#35583}(M), K, sx)), x, ao)]] +[visit_exp `CONST`_instr{numtype#203}((at : addrtype <: numtype), i)] +[visit_exp numtype#203] +[visit_id numtype#203] +[visit_exp ((at : addrtype <: numtype), i)] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] +[visit_exp i] +[visit_id i] +[visit_exp `VLOAD`_instr{`vectype?#9`, memidx#81, memarg#49}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#252, M#80, sx#306, i#35576}(`%`_sz{i#35583}(M), K, sx)), x, ao)] +[visit_exp `vectype?#9`] +[visit_id vectype?#9] +[visit_exp memidx#81] +[visit_id memidx#81] +[visit_exp memarg#49] +[visit_id memarg#49] +[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#252, M#80, sx#306, i#35576}(`%`_sz{i#35583}(M), K, sx)), x, ao)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp ?(`SHAPE%X%_%`_vloadop_{sz#252, M#80, sx#306, i#35576}(`%`_sz{i#35583}(M), K, sx))] +[visit_exp `SHAPE%X%_%`_vloadop_{sz#252, M#80, sx#306, i#35576}(`%`_sz{i#35583}(M), K, sx)] +[visit_exp sz#252] +[visit_id sz#252] +[visit_exp M#80] +[visit_id M#80] +[visit_exp sx#306] +[visit_id sx#306] +[visit_exp i#35576] +[visit_id i#35576] +[visit_exp (`%`_sz{i#35583}(M), K, sx)] +[visit_exp `%`_sz{i#35583}(M)] +[visit_exp i#35583] +[visit_id i#35583] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp K] +[visit_id K] +[visit_exp sx] +[visit_id sx] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp [`VCONST`_instr{vectype#68}(`V128`_vectype, c)]] +[visit_exp `VCONST`_instr{vectype#68}(`V128`_vectype, c)] +[visit_exp vectype#68] +[visit_id vectype#68] +[visit_exp (`V128`_vectype, c)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c] +[visit_id c] +[scope_enter k] +[scope_enter byte*#1856] +[scope_enter i#35641] +[scope_enter i#35651] +[scope_enter j] +[scope_enter u64#412] +[visit_exp ($ibytes_(M, j) = $mem(z, x).`BYTES`_meminst{`byte*#1856`}[((i!`%`_num_{i#35641}.0 + ao.`OFFSET`_memarg{u64#412}!`%`_u64{i#35651}.0) + ((((k * M) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)])] +[visit_exp $ibytes_(M, j)] +[visit_exp M] +[visit_id M] not free +[visit_exp j] +[visit_id j] not free +[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1856`}[((i!`%`_num_{i#35641}.0 + ao.`OFFSET`_memarg{u64#412}!`%`_u64{i#35651}.0) + ((((k * M) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]] +[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1856`}] +[visit_exp $mem(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `byte*#1856`] +[visit_id byte*#1856] not free +[visit_exp ((i!`%`_num_{i#35641}.0 + ao.`OFFSET`_memarg{u64#412}!`%`_u64{i#35651}.0) + ((((k * M) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] +[visit_exp (i!`%`_num_{i#35641}.0 + ao.`OFFSET`_memarg{u64#412}!`%`_u64{i#35651}.0)] +[visit_exp i!`%`_num_{i#35641}.0] +[visit_exp i!`%`_num_{i#35641}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#35641] +[visit_id i#35641] not free +[visit_exp ao.`OFFSET`_memarg{u64#412}!`%`_u64{i#35651}.0] +[visit_exp ao.`OFFSET`_memarg{u64#412}!`%`_u64{i#35651}] +[visit_exp ao.`OFFSET`_memarg{u64#412}] +[visit_exp ao] +[visit_id ao] not free +[visit_exp u64#412] +[visit_id u64#412] not free +[visit_exp i#35651] +[visit_id i#35651] not free +[visit_exp ((((k * M) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] +[visit_exp (((k * M) : nat <:> rat) / (8 : nat <:> rat))] +[visit_exp ((k * M) : nat <:> rat)] +[visit_exp (k * M)] +[visit_exp k] +[visit_id k] +[visit_exp M] +[visit_id M] not free +[visit_exp (8 : nat <:> rat)] +[visit_exp 8] +[visit_exp (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] +[visit_exp ((M : nat <:> rat) / (8 : nat <:> rat))] +[visit_exp (M : nat <:> rat)] +[visit_exp M] +[visit_id M] not free +[visit_exp (8 : nat <:> rat)] +[visit_exp 8] +[visit_id k] not free +[visit_id byte*#1856] not free +[visit_id i#35641] not free +[visit_id i#35651] not free +[visit_id j] not free +[visit_id u64#412] not free +[scope_exit u64#412] +[scope_exit j] +[scope_exit i#35651] +[scope_exit i#35641] +[scope_exit byte*#1856] +[scope_exit k] +[visit_exp K] +[visit_id K] not free +[visit_exp `byte*#1856*`] +[visit_id byte*#1856*] no dims +[visit_id byte*#1856*] +[visit_exp `i#35641*`] +[visit_id i#35641*] no dims +[visit_id i#35641*] +[visit_exp `i#35651*`] +[visit_id i#35651*] no dims +[visit_id i#35651*] +[visit_exp `j*`] +[visit_id j*] no dims +[visit_id j*] +[visit_exp `u64#412*`] +[visit_id u64#412*] no dims +[visit_id u64#412*] +[visit_exp ((c = $inv_lanes_(`%X%`_shape{lanetype#7243, dim#7243, i#35700}((Jnn : Jnn <: lanetype), `%`_dim{i#35707}(K)), $extend__(M, $jsizenn(Jnn), sx, j)^K{j <- `j*`})) /\ ($jsizenn(Jnn) = (M * 2)))] +[visit_exp (c = $inv_lanes_(`%X%`_shape{lanetype#7243, dim#7243, i#35700}((Jnn : Jnn <: lanetype), `%`_dim{i#35707}(K)), $extend__(M, $jsizenn(Jnn), sx, j)^K{j <- `j*`}))] +[visit_exp c] +[visit_id c] not free +[visit_exp $inv_lanes_(`%X%`_shape{lanetype#7243, dim#7243, i#35700}((Jnn : Jnn <: lanetype), `%`_dim{i#35707}(K)), $extend__(M, $jsizenn(Jnn), sx, j)^K{j <- `j*`})] +[visit_exp `%X%`_shape{lanetype#7243, dim#7243, i#35700}((Jnn : Jnn <: lanetype), `%`_dim{i#35707}(K))] +[visit_exp lanetype#7243] +[visit_id lanetype#7243] +[visit_exp dim#7243] +[visit_id dim#7243] +[visit_exp i#35700] +[visit_id i#35700] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#35707}(K))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp `%`_dim{i#35707}(K)] +[visit_exp i#35707] +[visit_id i#35707] +[visit_exp (K)] +[visit_exp K] +[visit_id K] not free +[visit_exp $extend__(M, $jsizenn(Jnn), sx, j)^K{j <- `j*`}] +[scope_enter j] +[visit_exp $extend__(M, $jsizenn(Jnn), sx, j)] +[visit_exp M] +[visit_id M] not free +[visit_exp $jsizenn(Jnn)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp sx] +[visit_id sx] not free +[visit_exp j] +[visit_id j] not free +[visit_id j] not free +[scope_exit j] +[visit_exp K] +[visit_id K] not free +[visit_exp `j*`] +[visit_id j*] not free +[visit_id j*] no dims +[visit_exp ($jsizenn(Jnn) = (M * 2))] +[visit_exp $jsizenn(Jnn)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp (M * 2)] +[visit_exp M] +[visit_id M] not free +[visit_exp 2] +[check_dims] N ao at byte*#1857 i i#35834 i#35866 i#35876 instr*#1194 memarg#51 memidx#83 numtype#205 state#1079 sz#299 u64#413 vectype?#10 x z +[visit_exp `%;%`_config{state#1079, `instr*#1194`}(z, [`CONST`_instr{numtype#205}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#10`, memidx#83, memarg#51}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#299}(`%`_sz{i#35834}(N))), x, ao)])] +[visit_exp state#1079] +[visit_id state#1079] +[visit_exp `instr*#1194`] +[visit_id instr*#1194] +[visit_exp (z, [`CONST`_instr{numtype#205}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#10`, memidx#83, memarg#51}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#299}(`%`_sz{i#35834}(N))), x, ao)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#205}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#10`, memidx#83, memarg#51}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#299}(`%`_sz{i#35834}(N))), x, ao)]] +[visit_exp `CONST`_instr{numtype#205}((at : addrtype <: numtype), i)] +[visit_exp numtype#205] +[visit_id numtype#205] +[visit_exp ((at : addrtype <: numtype), i)] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] +[visit_exp i] +[visit_id i] +[visit_exp `VLOAD`_instr{`vectype?#10`, memidx#83, memarg#51}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#299}(`%`_sz{i#35834}(N))), x, ao)] +[visit_exp `vectype?#10`] +[visit_id vectype?#10] +[visit_exp memidx#83] +[visit_id memidx#83] +[visit_exp memarg#51] +[visit_id memarg#51] +[visit_exp (`V128`_vectype, ?(`SPLAT`_vloadop_{sz#299}(`%`_sz{i#35834}(N))), x, ao)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp ?(`SPLAT`_vloadop_{sz#299}(`%`_sz{i#35834}(N)))] +[visit_exp `SPLAT`_vloadop_{sz#299}(`%`_sz{i#35834}(N))] +[visit_exp sz#299] +[visit_id sz#299] +[visit_exp (`%`_sz{i#35834}(N))] +[visit_exp `%`_sz{i#35834}(N)] +[visit_exp i#35834] +[visit_id i#35834] +[visit_exp (N)] +[visit_exp N] +[visit_id N] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[visit_exp (((i!`%`_num_{i#35866}.0 + ao.`OFFSET`_memarg{u64#413}!`%`_u64{i#35876}.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst{`byte*#1857`}|)] +[visit_exp ((i!`%`_num_{i#35866}.0 + ao.`OFFSET`_memarg{u64#413}!`%`_u64{i#35876}.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] +[visit_exp (i!`%`_num_{i#35866}.0 + ao.`OFFSET`_memarg{u64#413}!`%`_u64{i#35876}.0)] +[visit_exp i!`%`_num_{i#35866}.0] +[visit_exp i!`%`_num_{i#35866}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#35866] +[visit_id i#35866] +[visit_exp ao.`OFFSET`_memarg{u64#413}!`%`_u64{i#35876}.0] +[visit_exp ao.`OFFSET`_memarg{u64#413}!`%`_u64{i#35876}] +[visit_exp ao.`OFFSET`_memarg{u64#413}] +[visit_exp ao] +[visit_id ao] not free +[visit_exp u64#413] +[visit_id u64#413] +[visit_exp i#35876] +[visit_id i#35876] +[visit_exp (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] +[visit_exp ((N : nat <:> rat) / (8 : nat <:> rat))] +[visit_exp (N : nat <:> rat)] +[visit_exp N] +[visit_id N] not free +[visit_exp (8 : nat <:> rat)] +[visit_exp 8] +[visit_exp |$mem(z, x).`BYTES`_meminst{`byte*#1857`}|] +[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1857`}] +[visit_exp $mem(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `byte*#1857`] +[visit_id byte*#1857] +[check_dims] Jnn M N ao at byte*#1858 c dim#7267 i i#35934 i#35992 i#36002 i#36033 i#36040 i#36120 i#36121 instr*#1206 j lanetype#7267 memarg#53 memidx#85 numtype#207 state#1091 sz#346 u64#414 vectype#72 vectype?#11 x z +[visit_exp `%;%`_config{state#1091, `instr*#1206`}(z, [`CONST`_instr{numtype#207}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#11`, memidx#85, memarg#53}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#346}(`%`_sz{i#35934}(N))), x, ao)])] +[visit_exp state#1091] +[visit_id state#1091] +[visit_exp `instr*#1206`] +[visit_id instr*#1206] +[visit_exp (z, [`CONST`_instr{numtype#207}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#11`, memidx#85, memarg#53}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#346}(`%`_sz{i#35934}(N))), x, ao)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#207}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#11`, memidx#85, memarg#53}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#346}(`%`_sz{i#35934}(N))), x, ao)]] +[visit_exp `CONST`_instr{numtype#207}((at : addrtype <: numtype), i)] +[visit_exp numtype#207] +[visit_id numtype#207] +[visit_exp ((at : addrtype <: numtype), i)] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] +[visit_exp i] +[visit_id i] +[visit_exp `VLOAD`_instr{`vectype?#11`, memidx#85, memarg#53}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#346}(`%`_sz{i#35934}(N))), x, ao)] +[visit_exp `vectype?#11`] +[visit_id vectype?#11] +[visit_exp memidx#85] +[visit_id memidx#85] +[visit_exp memarg#53] +[visit_id memarg#53] +[visit_exp (`V128`_vectype, ?(`SPLAT`_vloadop_{sz#346}(`%`_sz{i#35934}(N))), x, ao)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp ?(`SPLAT`_vloadop_{sz#346}(`%`_sz{i#35934}(N)))] +[visit_exp `SPLAT`_vloadop_{sz#346}(`%`_sz{i#35934}(N))] +[visit_exp sz#346] +[visit_id sz#346] +[visit_exp (`%`_sz{i#35934}(N))] +[visit_exp `%`_sz{i#35934}(N)] +[visit_exp i#35934] +[visit_id i#35934] +[visit_exp (N)] +[visit_exp N] +[visit_id N] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp [`VCONST`_instr{vectype#72}(`V128`_vectype, c)]] +[visit_exp `VCONST`_instr{vectype#72}(`V128`_vectype, c)] +[visit_exp vectype#72] +[visit_id vectype#72] +[visit_exp (`V128`_vectype, c)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c] +[visit_id c] +[visit_exp ($ibytes_(N, j) = $mem(z, x).`BYTES`_meminst{`byte*#1858`}[(i!`%`_num_{i#35992}.0 + ao.`OFFSET`_memarg{u64#414}!`%`_u64{i#36002}.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)])] +[visit_exp $ibytes_(N, j)] +[visit_exp N] +[visit_id N] not free +[visit_exp j] +[visit_id j] +[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1858`}[(i!`%`_num_{i#35992}.0 + ao.`OFFSET`_memarg{u64#414}!`%`_u64{i#36002}.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]] +[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1858`}] +[visit_exp $mem(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `byte*#1858`] +[visit_id byte*#1858] +[visit_exp (i!`%`_num_{i#35992}.0 + ao.`OFFSET`_memarg{u64#414}!`%`_u64{i#36002}.0)] +[visit_exp i!`%`_num_{i#35992}.0] +[visit_exp i!`%`_num_{i#35992}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#35992] +[visit_id i#35992] +[visit_exp ao.`OFFSET`_memarg{u64#414}!`%`_u64{i#36002}.0] +[visit_exp ao.`OFFSET`_memarg{u64#414}!`%`_u64{i#36002}] +[visit_exp ao.`OFFSET`_memarg{u64#414}] +[visit_exp ao] +[visit_id ao] not free +[visit_exp u64#414] +[visit_id u64#414] +[visit_exp i#36002] +[visit_id i#36002] +[visit_exp (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] +[visit_exp ((N : nat <:> rat) / (8 : nat <:> rat))] +[visit_exp (N : nat <:> rat)] +[visit_exp N] +[visit_id N] not free +[visit_exp (8 : nat <:> rat)] +[visit_exp 8] +[visit_exp (N = $jsize(Jnn))] +[visit_exp N] +[visit_id N] not free +[visit_exp $jsize(Jnn)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat)))] +[visit_exp (M : nat <:> rat)] +[visit_exp M] +[visit_id M] +[visit_exp ((128 : nat <:> rat) / (N : nat <:> rat))] +[visit_exp (128 : nat <:> rat)] +[visit_exp 128] +[visit_exp (N : nat <:> rat)] +[visit_exp N] +[visit_id N] not free +[visit_exp (c = $inv_lanes_(`%X%`_shape{lanetype#7267, dim#7267, i#36033}((Jnn : Jnn <: lanetype), `%`_dim{i#36040}(M)), `%`_lane_{i#36121}(j!`%`_iN{i#36120}.0)^M{i#36120 <- `i#36120*`, i#36121 <- `i#36121*`}))] +[visit_exp c] +[visit_id c] not free +[visit_exp $inv_lanes_(`%X%`_shape{lanetype#7267, dim#7267, i#36033}((Jnn : Jnn <: lanetype), `%`_dim{i#36040}(M)), `%`_lane_{i#36121}(j!`%`_iN{i#36120}.0)^M{i#36120 <- `i#36120*`, i#36121 <- `i#36121*`})] +[visit_exp `%X%`_shape{lanetype#7267, dim#7267, i#36033}((Jnn : Jnn <: lanetype), `%`_dim{i#36040}(M))] +[visit_exp lanetype#7267] +[visit_id lanetype#7267] +[visit_exp dim#7267] +[visit_id dim#7267] +[visit_exp i#36033] +[visit_id i#36033] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#36040}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#36040}(M)] +[visit_exp i#36040] +[visit_id i#36040] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp `%`_lane_{i#36121}(j!`%`_iN{i#36120}.0)^M{i#36120 <- `i#36120*`, i#36121 <- `i#36121*`}] +[scope_enter i#36120] +[scope_enter i#36121] +[visit_exp `%`_lane_{i#36121}(j!`%`_iN{i#36120}.0)] +[visit_exp i#36121] +[visit_id i#36121] not free +[visit_exp (j!`%`_iN{i#36120}.0)] +[visit_exp j!`%`_iN{i#36120}.0] +[visit_exp j!`%`_iN{i#36120}] +[visit_exp j] +[visit_id j] not free +[visit_exp i#36120] +[visit_id i#36120] not free +[visit_id i#36120] not free +[visit_id i#36121] not free +[scope_exit i#36121] +[scope_exit i#36120] +[visit_exp M] +[visit_id M] not free +[visit_exp `i#36120*`] +[visit_id i#36120*] no dims +[visit_id i#36120*] +[visit_exp `i#36121*`] +[visit_id i#36121*] no dims +[visit_id i#36121*] +[check_dims] N ao at byte*#1859 i i#36172 i#36179 i#36211 i#36221 instr*#1218 memarg#55 memidx#87 numtype#209 state#1103 sz#393 u64#415 vectype?#12 x z +[visit_exp `%;%`_config{state#1103, `instr*#1218`}(z, [`CONST`_instr{numtype#209}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#12`, memidx#87, memarg#55}(`V128`_vectype, ?(`ZERO`_vloadop_{sz#393, i#36172}(`%`_sz{i#36179}(N))), x, ao)])] +[visit_exp state#1103] +[visit_id state#1103] +[visit_exp `instr*#1218`] +[visit_id instr*#1218] +[visit_exp (z, [`CONST`_instr{numtype#209}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#12`, memidx#87, memarg#55}(`V128`_vectype, ?(`ZERO`_vloadop_{sz#393, i#36172}(`%`_sz{i#36179}(N))), x, ao)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#209}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#12`, memidx#87, memarg#55}(`V128`_vectype, ?(`ZERO`_vloadop_{sz#393, i#36172}(`%`_sz{i#36179}(N))), x, ao)]] +[visit_exp `CONST`_instr{numtype#209}((at : addrtype <: numtype), i)] +[visit_exp numtype#209] +[visit_id numtype#209] +[visit_exp ((at : addrtype <: numtype), i)] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] +[visit_exp i] +[visit_id i] +[visit_exp `VLOAD`_instr{`vectype?#12`, memidx#87, memarg#55}(`V128`_vectype, ?(`ZERO`_vloadop_{sz#393, i#36172}(`%`_sz{i#36179}(N))), x, ao)] +[visit_exp `vectype?#12`] +[visit_id vectype?#12] +[visit_exp memidx#87] +[visit_id memidx#87] +[visit_exp memarg#55] +[visit_id memarg#55] +[visit_exp (`V128`_vectype, ?(`ZERO`_vloadop_{sz#393, i#36172}(`%`_sz{i#36179}(N))), x, ao)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp ?(`ZERO`_vloadop_{sz#393, i#36172}(`%`_sz{i#36179}(N)))] +[visit_exp `ZERO`_vloadop_{sz#393, i#36172}(`%`_sz{i#36179}(N))] +[visit_exp sz#393] +[visit_id sz#393] +[visit_exp i#36172] +[visit_id i#36172] +[visit_exp (`%`_sz{i#36179}(N))] +[visit_exp `%`_sz{i#36179}(N)] +[visit_exp i#36179] +[visit_id i#36179] +[visit_exp (N)] +[visit_exp N] +[visit_id N] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[visit_exp (((i!`%`_num_{i#36211}.0 + ao.`OFFSET`_memarg{u64#415}!`%`_u64{i#36221}.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst{`byte*#1859`}|)] +[visit_exp ((i!`%`_num_{i#36211}.0 + ao.`OFFSET`_memarg{u64#415}!`%`_u64{i#36221}.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] +[visit_exp (i!`%`_num_{i#36211}.0 + ao.`OFFSET`_memarg{u64#415}!`%`_u64{i#36221}.0)] +[visit_exp i!`%`_num_{i#36211}.0] +[visit_exp i!`%`_num_{i#36211}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#36211] +[visit_id i#36211] +[visit_exp ao.`OFFSET`_memarg{u64#415}!`%`_u64{i#36221}.0] +[visit_exp ao.`OFFSET`_memarg{u64#415}!`%`_u64{i#36221}] +[visit_exp ao.`OFFSET`_memarg{u64#415}] +[visit_exp ao] +[visit_id ao] not free +[visit_exp u64#415] +[visit_id u64#415] +[visit_exp i#36221] +[visit_id i#36221] +[visit_exp (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] +[visit_exp ((N : nat <:> rat) / (8 : nat <:> rat))] +[visit_exp (N : nat <:> rat)] +[visit_exp N] +[visit_id N] not free +[visit_exp (8 : nat <:> rat)] +[visit_exp 8] +[visit_exp |$mem(z, x).`BYTES`_meminst{`byte*#1859`}|] +[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1859`}] +[visit_exp $mem(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `byte*#1859`] +[visit_id byte*#1859] +[check_dims] N ao at byte*#1860 c i i#36273 i#36280 i#36338 i#36348 instr*#1230 j memarg#57 memidx#89 numtype#211 state#1115 sz#440 u64#416 vectype#76 vectype?#13 x z +[visit_exp `%;%`_config{state#1115, `instr*#1230`}(z, [`CONST`_instr{numtype#211}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#13`, memidx#89, memarg#57}(`V128`_vectype, ?(`ZERO`_vloadop_{sz#440, i#36273}(`%`_sz{i#36280}(N))), x, ao)])] +[visit_exp state#1115] +[visit_id state#1115] +[visit_exp `instr*#1230`] +[visit_id instr*#1230] +[visit_exp (z, [`CONST`_instr{numtype#211}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#13`, memidx#89, memarg#57}(`V128`_vectype, ?(`ZERO`_vloadop_{sz#440, i#36273}(`%`_sz{i#36280}(N))), x, ao)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#211}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#13`, memidx#89, memarg#57}(`V128`_vectype, ?(`ZERO`_vloadop_{sz#440, i#36273}(`%`_sz{i#36280}(N))), x, ao)]] +[visit_exp `CONST`_instr{numtype#211}((at : addrtype <: numtype), i)] +[visit_exp numtype#211] +[visit_id numtype#211] +[visit_exp ((at : addrtype <: numtype), i)] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] +[visit_exp i] +[visit_id i] +[visit_exp `VLOAD`_instr{`vectype?#13`, memidx#89, memarg#57}(`V128`_vectype, ?(`ZERO`_vloadop_{sz#440, i#36273}(`%`_sz{i#36280}(N))), x, ao)] +[visit_exp `vectype?#13`] +[visit_id vectype?#13] +[visit_exp memidx#89] +[visit_id memidx#89] +[visit_exp memarg#57] +[visit_id memarg#57] +[visit_exp (`V128`_vectype, ?(`ZERO`_vloadop_{sz#440, i#36273}(`%`_sz{i#36280}(N))), x, ao)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp ?(`ZERO`_vloadop_{sz#440, i#36273}(`%`_sz{i#36280}(N)))] +[visit_exp `ZERO`_vloadop_{sz#440, i#36273}(`%`_sz{i#36280}(N))] +[visit_exp sz#440] +[visit_id sz#440] +[visit_exp i#36273] +[visit_id i#36273] +[visit_exp (`%`_sz{i#36280}(N))] +[visit_exp `%`_sz{i#36280}(N)] +[visit_exp i#36280] +[visit_id i#36280] +[visit_exp (N)] +[visit_exp N] +[visit_id N] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp [`VCONST`_instr{vectype#76}(`V128`_vectype, c)]] +[visit_exp `VCONST`_instr{vectype#76}(`V128`_vectype, c)] +[visit_exp vectype#76] +[visit_id vectype#76] +[visit_exp (`V128`_vectype, c)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c] +[visit_id c] +[visit_exp ($ibytes_(N, j) = $mem(z, x).`BYTES`_meminst{`byte*#1860`}[(i!`%`_num_{i#36338}.0 + ao.`OFFSET`_memarg{u64#416}!`%`_u64{i#36348}.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)])] +[visit_exp $ibytes_(N, j)] +[visit_exp N] +[visit_id N] not free +[visit_exp j] +[visit_id j] +[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1860`}[(i!`%`_num_{i#36338}.0 + ao.`OFFSET`_memarg{u64#416}!`%`_u64{i#36348}.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]] +[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1860`}] +[visit_exp $mem(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `byte*#1860`] +[visit_id byte*#1860] +[visit_exp (i!`%`_num_{i#36338}.0 + ao.`OFFSET`_memarg{u64#416}!`%`_u64{i#36348}.0)] +[visit_exp i!`%`_num_{i#36338}.0] +[visit_exp i!`%`_num_{i#36338}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#36338] +[visit_id i#36338] +[visit_exp ao.`OFFSET`_memarg{u64#416}!`%`_u64{i#36348}.0] +[visit_exp ao.`OFFSET`_memarg{u64#416}!`%`_u64{i#36348}] +[visit_exp ao.`OFFSET`_memarg{u64#416}] +[visit_exp ao] +[visit_id ao] not free +[visit_exp u64#416] +[visit_id u64#416] +[visit_exp i#36348] +[visit_id i#36348] +[visit_exp (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] +[visit_exp ((N : nat <:> rat) / (8 : nat <:> rat))] +[visit_exp (N : nat <:> rat)] +[visit_exp N] +[visit_id N] not free +[visit_exp (8 : nat <:> rat)] +[visit_exp 8] +[visit_exp (c = $extend__(N, 128, `U`_sx, j))] +[visit_exp c] +[visit_id c] not free +[visit_exp $extend__(N, 128, `U`_sx, j)] +[visit_exp N] +[visit_id N] not free +[visit_exp 128] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp j] +[visit_id j] not free +[check_dims] N ao at byte*#1861 c_1 i i#36428 i#36474 i#36484 instr*#1242 j laneidx#17 memarg#59 memidx#91 numtype#213 state#1127 sz#442 u64#417 vectype#78 vectype#80 x z +[visit_exp `%;%`_config{state#1127, `instr*#1242`}(z, [`CONST`_instr{numtype#213}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#78}(`V128`_vectype, c_1) `VLOAD_LANE`_instr{vectype#80, sz#442, memidx#91, memarg#59, laneidx#17}(`V128`_vectype, `%`_sz{i#36428}(N), x, ao, j)])] +[visit_exp state#1127] +[visit_id state#1127] +[visit_exp `instr*#1242`] +[visit_id instr*#1242] +[visit_exp (z, [`CONST`_instr{numtype#213}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#78}(`V128`_vectype, c_1) `VLOAD_LANE`_instr{vectype#80, sz#442, memidx#91, memarg#59, laneidx#17}(`V128`_vectype, `%`_sz{i#36428}(N), x, ao, j)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#213}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#78}(`V128`_vectype, c_1) `VLOAD_LANE`_instr{vectype#80, sz#442, memidx#91, memarg#59, laneidx#17}(`V128`_vectype, `%`_sz{i#36428}(N), x, ao, j)]] +[visit_exp `CONST`_instr{numtype#213}((at : addrtype <: numtype), i)] +[visit_exp numtype#213] +[visit_id numtype#213] +[visit_exp ((at : addrtype <: numtype), i)] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] +[visit_exp i] +[visit_id i] +[visit_exp `VCONST`_instr{vectype#78}(`V128`_vectype, c_1)] +[visit_exp vectype#78] +[visit_id vectype#78] +[visit_exp (`V128`_vectype, c_1)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c_1] +[visit_id c_1] +[visit_exp `VLOAD_LANE`_instr{vectype#80, sz#442, memidx#91, memarg#59, laneidx#17}(`V128`_vectype, `%`_sz{i#36428}(N), x, ao, j)] +[visit_exp vectype#80] +[visit_id vectype#80] +[visit_exp sz#442] +[visit_id sz#442] +[visit_exp memidx#91] +[visit_id memidx#91] +[visit_exp memarg#59] +[visit_id memarg#59] +[visit_exp laneidx#17] +[visit_id laneidx#17] +[visit_exp (`V128`_vectype, `%`_sz{i#36428}(N), x, ao, j)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp `%`_sz{i#36428}(N)] +[visit_exp i#36428] +[visit_id i#36428] +[visit_exp (N)] +[visit_exp N] +[visit_id N] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp j] +[visit_id j] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[visit_exp (((i!`%`_num_{i#36474}.0 + ao.`OFFSET`_memarg{u64#417}!`%`_u64{i#36484}.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst{`byte*#1861`}|)] +[visit_exp ((i!`%`_num_{i#36474}.0 + ao.`OFFSET`_memarg{u64#417}!`%`_u64{i#36484}.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] +[visit_exp (i!`%`_num_{i#36474}.0 + ao.`OFFSET`_memarg{u64#417}!`%`_u64{i#36484}.0)] +[visit_exp i!`%`_num_{i#36474}.0] +[visit_exp i!`%`_num_{i#36474}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#36474] +[visit_id i#36474] +[visit_exp ao.`OFFSET`_memarg{u64#417}!`%`_u64{i#36484}.0] +[visit_exp ao.`OFFSET`_memarg{u64#417}!`%`_u64{i#36484}] +[visit_exp ao.`OFFSET`_memarg{u64#417}] +[visit_exp ao] +[visit_id ao] not free +[visit_exp u64#417] +[visit_id u64#417] +[visit_exp i#36484] +[visit_id i#36484] +[visit_exp (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] +[visit_exp ((N : nat <:> rat) / (8 : nat <:> rat))] +[visit_exp (N : nat <:> rat)] +[visit_exp N] +[visit_id N] not free +[visit_exp (8 : nat <:> rat)] +[visit_exp 8] +[visit_exp |$mem(z, x).`BYTES`_meminst{`byte*#1861`}|] +[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1861`}] +[visit_exp $mem(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `byte*#1861`] +[visit_id byte*#1861] +[check_dims] Jnn M N ao at byte*#1862 c c_1 dim#7292 dim#7383 i i#36532 i#36604 i#36614 i#36645 i#36652 i#36877 i#36884 i#36910 i#36956 i#36957 instr*#1254 j k laneidx#19 lanetype#7292 lanetype#7383 memarg#61 memidx#93 numtype#215 state#1139 sz#444 u64#418 vectype#82 vectype#84 vectype#86 x z +[visit_exp `%;%`_config{state#1139, `instr*#1254`}(z, [`CONST`_instr{numtype#215}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#82}(`V128`_vectype, c_1) `VLOAD_LANE`_instr{vectype#84, sz#444, memidx#93, memarg#61, laneidx#19}(`V128`_vectype, `%`_sz{i#36532}(N), x, ao, j)])] +[visit_exp state#1139] +[visit_id state#1139] +[visit_exp `instr*#1254`] +[visit_id instr*#1254] +[visit_exp (z, [`CONST`_instr{numtype#215}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#82}(`V128`_vectype, c_1) `VLOAD_LANE`_instr{vectype#84, sz#444, memidx#93, memarg#61, laneidx#19}(`V128`_vectype, `%`_sz{i#36532}(N), x, ao, j)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#215}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#82}(`V128`_vectype, c_1) `VLOAD_LANE`_instr{vectype#84, sz#444, memidx#93, memarg#61, laneidx#19}(`V128`_vectype, `%`_sz{i#36532}(N), x, ao, j)]] +[visit_exp `CONST`_instr{numtype#215}((at : addrtype <: numtype), i)] +[visit_exp numtype#215] +[visit_id numtype#215] +[visit_exp ((at : addrtype <: numtype), i)] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] +[visit_exp i] +[visit_id i] +[visit_exp `VCONST`_instr{vectype#82}(`V128`_vectype, c_1)] +[visit_exp vectype#82] +[visit_id vectype#82] +[visit_exp (`V128`_vectype, c_1)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c_1] +[visit_id c_1] +[visit_exp `VLOAD_LANE`_instr{vectype#84, sz#444, memidx#93, memarg#61, laneidx#19}(`V128`_vectype, `%`_sz{i#36532}(N), x, ao, j)] +[visit_exp vectype#84] +[visit_id vectype#84] +[visit_exp sz#444] +[visit_id sz#444] +[visit_exp memidx#93] +[visit_id memidx#93] +[visit_exp memarg#61] +[visit_id memarg#61] +[visit_exp laneidx#19] +[visit_id laneidx#19] +[visit_exp (`V128`_vectype, `%`_sz{i#36532}(N), x, ao, j)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp `%`_sz{i#36532}(N)] +[visit_exp i#36532] +[visit_id i#36532] +[visit_exp (N)] +[visit_exp N] +[visit_id N] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp j] +[visit_id j] +[visit_exp [`VCONST`_instr{vectype#86}(`V128`_vectype, c)]] +[visit_exp `VCONST`_instr{vectype#86}(`V128`_vectype, c)] +[visit_exp vectype#86] +[visit_id vectype#86] +[visit_exp (`V128`_vectype, c)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c] +[visit_id c] +[visit_exp ($ibytes_(N, k) = $mem(z, x).`BYTES`_meminst{`byte*#1862`}[(i!`%`_num_{i#36604}.0 + ao.`OFFSET`_memarg{u64#418}!`%`_u64{i#36614}.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)])] +[visit_exp $ibytes_(N, k)] +[visit_exp N] +[visit_id N] not free +[visit_exp k] +[visit_id k] +[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1862`}[(i!`%`_num_{i#36604}.0 + ao.`OFFSET`_memarg{u64#418}!`%`_u64{i#36614}.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]] +[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1862`}] +[visit_exp $mem(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `byte*#1862`] +[visit_id byte*#1862] +[visit_exp (i!`%`_num_{i#36604}.0 + ao.`OFFSET`_memarg{u64#418}!`%`_u64{i#36614}.0)] +[visit_exp i!`%`_num_{i#36604}.0] +[visit_exp i!`%`_num_{i#36604}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#36604] +[visit_id i#36604] +[visit_exp ao.`OFFSET`_memarg{u64#418}!`%`_u64{i#36614}.0] +[visit_exp ao.`OFFSET`_memarg{u64#418}!`%`_u64{i#36614}] +[visit_exp ao.`OFFSET`_memarg{u64#418}] +[visit_exp ao] +[visit_id ao] not free +[visit_exp u64#418] +[visit_id u64#418] +[visit_exp i#36614] +[visit_id i#36614] +[visit_exp (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] +[visit_exp ((N : nat <:> rat) / (8 : nat <:> rat))] +[visit_exp (N : nat <:> rat)] +[visit_exp N] +[visit_id N] not free +[visit_exp (8 : nat <:> rat)] +[visit_exp 8] +[visit_exp (N = $jsize(Jnn))] +[visit_exp N] +[visit_id N] not free +[visit_exp $jsize(Jnn)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp ((M : nat <:> rat) = (($vsize(`V128`_vectype) : nat <:> rat) / (N : nat <:> rat)))] +[visit_exp (M : nat <:> rat)] +[visit_exp M] +[visit_id M] +[visit_exp (($vsize(`V128`_vectype) : nat <:> rat) / (N : nat <:> rat))] +[visit_exp ($vsize(`V128`_vectype) : nat <:> rat)] +[visit_exp $vsize(`V128`_vectype)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp (N : nat <:> rat)] +[visit_exp N] +[visit_id N] not free +[visit_exp (c = $inv_lanes_(`%X%`_shape{lanetype#7292, dim#7292, i#36645}((Jnn : Jnn <: lanetype), `%`_dim{i#36652}(M)), $lanes_(`%X%`_shape{lanetype#7383, dim#7383, i#36877}((Jnn : Jnn <: lanetype), `%`_dim{i#36884}(M)), c_1)[[j!`%`_laneidx{i#36910}.0] = `%`_lane_{i#36957}(k!`%`_iN{i#36956}.0)]))] +[visit_exp c] +[visit_id c] not free +[visit_exp $inv_lanes_(`%X%`_shape{lanetype#7292, dim#7292, i#36645}((Jnn : Jnn <: lanetype), `%`_dim{i#36652}(M)), $lanes_(`%X%`_shape{lanetype#7383, dim#7383, i#36877}((Jnn : Jnn <: lanetype), `%`_dim{i#36884}(M)), c_1)[[j!`%`_laneidx{i#36910}.0] = `%`_lane_{i#36957}(k!`%`_iN{i#36956}.0)])] +[visit_exp `%X%`_shape{lanetype#7292, dim#7292, i#36645}((Jnn : Jnn <: lanetype), `%`_dim{i#36652}(M))] +[visit_exp lanetype#7292] +[visit_id lanetype#7292] +[visit_exp dim#7292] +[visit_id dim#7292] +[visit_exp i#36645] +[visit_id i#36645] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#36652}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#36652}(M)] +[visit_exp i#36652] +[visit_id i#36652] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp $lanes_(`%X%`_shape{lanetype#7383, dim#7383, i#36877}((Jnn : Jnn <: lanetype), `%`_dim{i#36884}(M)), c_1)[[j!`%`_laneidx{i#36910}.0] = `%`_lane_{i#36957}(k!`%`_iN{i#36956}.0)]] +[visit_exp $lanes_(`%X%`_shape{lanetype#7383, dim#7383, i#36877}((Jnn : Jnn <: lanetype), `%`_dim{i#36884}(M)), c_1)] +[visit_exp `%X%`_shape{lanetype#7383, dim#7383, i#36877}((Jnn : Jnn <: lanetype), `%`_dim{i#36884}(M))] +[visit_exp lanetype#7383] +[visit_id lanetype#7383] +[visit_exp dim#7383] +[visit_id dim#7383] +[visit_exp i#36877] +[visit_id i#36877] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#36884}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#36884}(M)] +[visit_exp i#36884] +[visit_id i#36884] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp c_1] +[visit_id c_1] not free +[visit_exp j!`%`_laneidx{i#36910}.0] +[visit_exp j!`%`_laneidx{i#36910}] +[visit_exp j] +[visit_id j] not free +[visit_exp i#36910] +[visit_id i#36910] +[visit_exp `%`_lane_{i#36957}(k!`%`_iN{i#36956}.0)] +[visit_exp i#36957] +[visit_id i#36957] +[visit_exp (k!`%`_iN{i#36956}.0)] +[visit_exp k!`%`_iN{i#36956}.0] +[visit_exp k!`%`_iN{i#36956}] +[visit_exp k] +[visit_id k] not free +[visit_exp i#36956] +[visit_id i#36956] +[check_dims] ao at byte*#1863 c i i#37014 i#37024 instr*#1266 instr*#1278 memarg#63 memidx#95 nt numtype#217 numtype#219 numtype?#11 state#1151 state#1163 u64#419 x z +[visit_exp `%;%`_config{state#1151, `instr*#1266`}(z, [`CONST`_instr{numtype#217}((at : addrtype <: numtype), i) `CONST`_instr{numtype#219}(nt, c) `STORE`_instr{`numtype?#11`, memidx#95, memarg#63}(nt, ?(), x, ao)])] +[visit_exp state#1151] +[visit_id state#1151] +[visit_exp `instr*#1266`] +[visit_id instr*#1266] +[visit_exp (z, [`CONST`_instr{numtype#217}((at : addrtype <: numtype), i) `CONST`_instr{numtype#219}(nt, c) `STORE`_instr{`numtype?#11`, memidx#95, memarg#63}(nt, ?(), x, ao)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#217}((at : addrtype <: numtype), i) `CONST`_instr{numtype#219}(nt, c) `STORE`_instr{`numtype?#11`, memidx#95, memarg#63}(nt, ?(), x, ao)]] +[visit_exp `CONST`_instr{numtype#217}((at : addrtype <: numtype), i)] +[visit_exp numtype#217] +[visit_id numtype#217] +[visit_exp ((at : addrtype <: numtype), i)] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] +[visit_exp i] +[visit_id i] +[visit_exp `CONST`_instr{numtype#219}(nt, c)] +[visit_exp numtype#219] +[visit_id numtype#219] +[visit_exp (nt, c)] +[visit_exp nt] +[visit_id nt] +[visit_exp c] +[visit_id c] +[visit_exp `STORE`_instr{`numtype?#11`, memidx#95, memarg#63}(nt, ?(), x, ao)] +[visit_exp `numtype?#11`] +[visit_id numtype?#11] +[visit_exp memidx#95] +[visit_id memidx#95] +[visit_exp memarg#63] +[visit_id memarg#63] +[visit_exp (nt, ?(), x, ao)] +[visit_exp nt] +[visit_id nt] not free +[visit_exp ?()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp `%;%`_config{state#1163, `instr*#1278`}(z, [`TRAP`_instr])] +[visit_exp state#1163] +[visit_id state#1163] +[visit_exp `instr*#1278`] +[visit_id instr*#1278] +[visit_exp (z, [`TRAP`_instr])] +[visit_exp z] +[visit_id z] not free +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[visit_exp (((i!`%`_num_{i#37014}.0 + ao.`OFFSET`_memarg{u64#419}!`%`_u64{i#37024}.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst{`byte*#1863`}|)] +[visit_exp ((i!`%`_num_{i#37014}.0 + ao.`OFFSET`_memarg{u64#419}!`%`_u64{i#37024}.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] +[visit_exp (i!`%`_num_{i#37014}.0 + ao.`OFFSET`_memarg{u64#419}!`%`_u64{i#37024}.0)] +[visit_exp i!`%`_num_{i#37014}.0] +[visit_exp i!`%`_num_{i#37014}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#37014] +[visit_id i#37014] +[visit_exp ao.`OFFSET`_memarg{u64#419}!`%`_u64{i#37024}.0] +[visit_exp ao.`OFFSET`_memarg{u64#419}!`%`_u64{i#37024}] +[visit_exp ao.`OFFSET`_memarg{u64#419}] +[visit_exp ao] +[visit_id ao] not free +[visit_exp u64#419] +[visit_id u64#419] +[visit_exp i#37024] +[visit_id i#37024] +[visit_exp ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] +[visit_exp (($size(nt) : nat <:> rat) / (8 : nat <:> rat))] +[visit_exp ($size(nt) : nat <:> rat)] +[visit_exp $size(nt)] +[visit_exp nt] +[visit_id nt] not free +[visit_exp (8 : nat <:> rat)] +[visit_exp 8] +[visit_exp |$mem(z, x).`BYTES`_meminst{`byte*#1863`}|] +[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1863`}] +[visit_exp $mem(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `byte*#1863`] +[visit_id byte*#1863] +[check_dims] ao at b c i i#37094 i#37104 instr*#1290 instr*#1302 memarg#65 memidx#97 nt numtype#222 numtype#224 numtype?#12 state#1175 state#1187 u64#420 x z +[visit_exp `%;%`_config{state#1175, `instr*#1290`}(z, [`CONST`_instr{numtype#222}((at : addrtype <: numtype), i) `CONST`_instr{numtype#224}(nt, c) `STORE`_instr{`numtype?#12`, memidx#97, memarg#65}(nt, ?(), x, ao)])] +[visit_exp state#1175] +[visit_id state#1175] +[visit_exp `instr*#1290`] +[visit_id instr*#1290] +[visit_exp (z, [`CONST`_instr{numtype#222}((at : addrtype <: numtype), i) `CONST`_instr{numtype#224}(nt, c) `STORE`_instr{`numtype?#12`, memidx#97, memarg#65}(nt, ?(), x, ao)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#222}((at : addrtype <: numtype), i) `CONST`_instr{numtype#224}(nt, c) `STORE`_instr{`numtype?#12`, memidx#97, memarg#65}(nt, ?(), x, ao)]] +[visit_exp `CONST`_instr{numtype#222}((at : addrtype <: numtype), i)] +[visit_exp numtype#222] +[visit_id numtype#222] +[visit_exp ((at : addrtype <: numtype), i)] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] +[visit_exp i] +[visit_id i] +[visit_exp `CONST`_instr{numtype#224}(nt, c)] +[visit_exp numtype#224] +[visit_id numtype#224] +[visit_exp (nt, c)] +[visit_exp nt] +[visit_id nt] +[visit_exp c] +[visit_id c] +[visit_exp `STORE`_instr{`numtype?#12`, memidx#97, memarg#65}(nt, ?(), x, ao)] +[visit_exp `numtype?#12`] +[visit_id numtype?#12] +[visit_exp memidx#97] +[visit_id memidx#97] +[visit_exp memarg#65] +[visit_id memarg#65] +[visit_exp (nt, ?(), x, ao)] +[visit_exp nt] +[visit_id nt] not free +[visit_exp ?()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp `%;%`_config{state#1187, `instr*#1302`}($with_mem(z, x, (i!`%`_num_{i#37094}.0 + ao.`OFFSET`_memarg{u64#420}!`%`_u64{i#37104}.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])] +[visit_exp state#1187] +[visit_id state#1187] +[visit_exp `instr*#1302`] +[visit_id instr*#1302] +[visit_exp ($with_mem(z, x, (i!`%`_num_{i#37094}.0 + ao.`OFFSET`_memarg{u64#420}!`%`_u64{i#37104}.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])] +[visit_exp $with_mem(z, x, (i!`%`_num_{i#37094}.0 + ao.`OFFSET`_memarg{u64#420}!`%`_u64{i#37104}.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`})] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp (i!`%`_num_{i#37094}.0 + ao.`OFFSET`_memarg{u64#420}!`%`_u64{i#37104}.0)] +[visit_exp i!`%`_num_{i#37094}.0] +[visit_exp i!`%`_num_{i#37094}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#37094] +[visit_id i#37094] +[visit_exp ao.`OFFSET`_memarg{u64#420}!`%`_u64{i#37104}.0] +[visit_exp ao.`OFFSET`_memarg{u64#420}!`%`_u64{i#37104}] +[visit_exp ao.`OFFSET`_memarg{u64#420}] +[visit_exp ao] +[visit_id ao] not free +[visit_exp u64#420] +[visit_id u64#420] +[visit_exp i#37104] +[visit_id i#37104] +[visit_exp ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] +[visit_exp (($size(nt) : nat <:> rat) / (8 : nat <:> rat))] +[visit_exp ($size(nt) : nat <:> rat)] +[visit_exp $size(nt)] +[visit_exp nt] +[visit_id nt] not free +[visit_exp (8 : nat <:> rat)] +[visit_exp 8] +[visit_exp b*{b <- `b*`}] +[scope_enter b] +[visit_exp b] +[visit_id b] not free +[visit_id b] not free +[scope_exit b] +[visit_exp `b*`] +[visit_id b*] no dims +[visit_id b*] +[visit_exp []] +[visit_exp (b*{b <- `b*`} = $nbytes_(nt, c))] +[visit_exp b*{b <- `b*`}] +[scope_enter b] +[visit_exp b] +[visit_id b] not free +[visit_id b] not free +[scope_exit b] +[visit_exp `b*`] +[visit_id b*] not free +[visit_id b*] no dims +[visit_exp $nbytes_(nt, c)] +[visit_exp nt] +[visit_id nt] not free +[visit_exp c] +[visit_id c] not free +[check_dims] Inn ao at byte*#1864 c i i#37199 i#37200 i#37232 i#37242 instr*#1314 instr*#1326 memarg#67 memidx#99 n numtype#227 numtype#229 numtype?#13 state#1199 state#1211 sz#446 u64#421 x z +[visit_exp `%;%`_config{state#1199, `instr*#1314`}(z, [`CONST`_instr{numtype#227}((at : addrtype <: numtype), i) `CONST`_instr{numtype#229}((Inn : Inn <: numtype), c) `STORE`_instr{`numtype?#13`, memidx#99, memarg#67}((Inn : Inn <: numtype), ?(`%`_storeop_{sz#446, i#37199}(`%`_sz{i#37200}(n))), x, ao)])] +[visit_exp state#1199] +[visit_id state#1199] +[visit_exp `instr*#1314`] +[visit_id instr*#1314] +[visit_exp (z, [`CONST`_instr{numtype#227}((at : addrtype <: numtype), i) `CONST`_instr{numtype#229}((Inn : Inn <: numtype), c) `STORE`_instr{`numtype?#13`, memidx#99, memarg#67}((Inn : Inn <: numtype), ?(`%`_storeop_{sz#446, i#37199}(`%`_sz{i#37200}(n))), x, ao)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#227}((at : addrtype <: numtype), i) `CONST`_instr{numtype#229}((Inn : Inn <: numtype), c) `STORE`_instr{`numtype?#13`, memidx#99, memarg#67}((Inn : Inn <: numtype), ?(`%`_storeop_{sz#446, i#37199}(`%`_sz{i#37200}(n))), x, ao)]] +[visit_exp `CONST`_instr{numtype#227}((at : addrtype <: numtype), i)] +[visit_exp numtype#227] +[visit_id numtype#227] +[visit_exp ((at : addrtype <: numtype), i)] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] +[visit_exp i] +[visit_id i] +[visit_exp `CONST`_instr{numtype#229}((Inn : Inn <: numtype), c)] +[visit_exp numtype#229] +[visit_id numtype#229] +[visit_exp ((Inn : Inn <: numtype), c)] +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] +[visit_exp c] +[visit_id c] +[visit_exp `STORE`_instr{`numtype?#13`, memidx#99, memarg#67}((Inn : Inn <: numtype), ?(`%`_storeop_{sz#446, i#37199}(`%`_sz{i#37200}(n))), x, ao)] +[visit_exp `numtype?#13`] +[visit_id numtype?#13] +[visit_exp memidx#99] +[visit_id memidx#99] +[visit_exp memarg#67] +[visit_id memarg#67] +[visit_exp ((Inn : Inn <: numtype), ?(`%`_storeop_{sz#446, i#37199}(`%`_sz{i#37200}(n))), x, ao)] +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] not free +[visit_exp ?(`%`_storeop_{sz#446, i#37199}(`%`_sz{i#37200}(n)))] +[visit_exp `%`_storeop_{sz#446, i#37199}(`%`_sz{i#37200}(n))] +[visit_exp sz#446] +[visit_id sz#446] +[visit_exp i#37199] +[visit_id i#37199] +[visit_exp (`%`_sz{i#37200}(n))] +[visit_exp `%`_sz{i#37200}(n)] +[visit_exp i#37200] +[visit_id i#37200] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp `%;%`_config{state#1211, `instr*#1326`}(z, [`TRAP`_instr])] +[visit_exp state#1211] +[visit_id state#1211] +[visit_exp `instr*#1326`] +[visit_id instr*#1326] +[visit_exp (z, [`TRAP`_instr])] +[visit_exp z] +[visit_id z] not free +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[visit_exp (((i!`%`_num_{i#37232}.0 + ao.`OFFSET`_memarg{u64#421}!`%`_u64{i#37242}.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst{`byte*#1864`}|)] +[visit_exp ((i!`%`_num_{i#37232}.0 + ao.`OFFSET`_memarg{u64#421}!`%`_u64{i#37242}.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] +[visit_exp (i!`%`_num_{i#37232}.0 + ao.`OFFSET`_memarg{u64#421}!`%`_u64{i#37242}.0)] +[visit_exp i!`%`_num_{i#37232}.0] +[visit_exp i!`%`_num_{i#37232}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#37232] +[visit_id i#37232] +[visit_exp ao.`OFFSET`_memarg{u64#421}!`%`_u64{i#37242}.0] +[visit_exp ao.`OFFSET`_memarg{u64#421}!`%`_u64{i#37242}] +[visit_exp ao.`OFFSET`_memarg{u64#421}] +[visit_exp ao] +[visit_id ao] not free +[visit_exp u64#421] +[visit_id u64#421] +[visit_exp i#37242] +[visit_id i#37242] +[visit_exp (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] +[visit_exp ((n : nat <:> rat) / (8 : nat <:> rat))] +[visit_exp (n : nat <:> rat)] +[visit_exp n] +[visit_id n] not free +[visit_exp (8 : nat <:> rat)] +[visit_exp 8] +[visit_exp |$mem(z, x).`BYTES`_meminst{`byte*#1864`}|] +[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1864`}] +[visit_exp $mem(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `byte*#1864`] +[visit_id byte*#1864] +[check_dims] Inn ao at b c i i#37325 i#37326 i#37370 i#37380 instr*#1338 instr*#1350 memarg#69 memidx#101 n numtype#232 numtype#234 numtype?#14 state#1223 state#1235 sz#448 u64#422 x z +[visit_exp `%;%`_config{state#1223, `instr*#1338`}(z, [`CONST`_instr{numtype#232}((at : addrtype <: numtype), i) `CONST`_instr{numtype#234}((Inn : Inn <: numtype), c) `STORE`_instr{`numtype?#14`, memidx#101, memarg#69}((Inn : Inn <: numtype), ?(`%`_storeop_{sz#448, i#37325}(`%`_sz{i#37326}(n))), x, ao)])] +[visit_exp state#1223] +[visit_id state#1223] +[visit_exp `instr*#1338`] +[visit_id instr*#1338] +[visit_exp (z, [`CONST`_instr{numtype#232}((at : addrtype <: numtype), i) `CONST`_instr{numtype#234}((Inn : Inn <: numtype), c) `STORE`_instr{`numtype?#14`, memidx#101, memarg#69}((Inn : Inn <: numtype), ?(`%`_storeop_{sz#448, i#37325}(`%`_sz{i#37326}(n))), x, ao)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#232}((at : addrtype <: numtype), i) `CONST`_instr{numtype#234}((Inn : Inn <: numtype), c) `STORE`_instr{`numtype?#14`, memidx#101, memarg#69}((Inn : Inn <: numtype), ?(`%`_storeop_{sz#448, i#37325}(`%`_sz{i#37326}(n))), x, ao)]] +[visit_exp `CONST`_instr{numtype#232}((at : addrtype <: numtype), i)] +[visit_exp numtype#232] +[visit_id numtype#232] +[visit_exp ((at : addrtype <: numtype), i)] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] +[visit_exp i] +[visit_id i] +[visit_exp `CONST`_instr{numtype#234}((Inn : Inn <: numtype), c)] +[visit_exp numtype#234] +[visit_id numtype#234] +[visit_exp ((Inn : Inn <: numtype), c)] +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] +[visit_exp c] +[visit_id c] +[visit_exp `STORE`_instr{`numtype?#14`, memidx#101, memarg#69}((Inn : Inn <: numtype), ?(`%`_storeop_{sz#448, i#37325}(`%`_sz{i#37326}(n))), x, ao)] +[visit_exp `numtype?#14`] +[visit_id numtype?#14] +[visit_exp memidx#101] +[visit_id memidx#101] +[visit_exp memarg#69] +[visit_id memarg#69] +[visit_exp ((Inn : Inn <: numtype), ?(`%`_storeop_{sz#448, i#37325}(`%`_sz{i#37326}(n))), x, ao)] +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] not free +[visit_exp ?(`%`_storeop_{sz#448, i#37325}(`%`_sz{i#37326}(n)))] +[visit_exp `%`_storeop_{sz#448, i#37325}(`%`_sz{i#37326}(n))] +[visit_exp sz#448] +[visit_id sz#448] +[visit_exp i#37325] +[visit_id i#37325] +[visit_exp (`%`_sz{i#37326}(n))] +[visit_exp `%`_sz{i#37326}(n)] +[visit_exp i#37326] +[visit_id i#37326] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp `%;%`_config{state#1235, `instr*#1350`}($with_mem(z, x, (i!`%`_num_{i#37370}.0 + ao.`OFFSET`_memarg{u64#422}!`%`_u64{i#37380}.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])] +[visit_exp state#1235] +[visit_id state#1235] +[visit_exp `instr*#1350`] +[visit_id instr*#1350] +[visit_exp ($with_mem(z, x, (i!`%`_num_{i#37370}.0 + ao.`OFFSET`_memarg{u64#422}!`%`_u64{i#37380}.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])] +[visit_exp $with_mem(z, x, (i!`%`_num_{i#37370}.0 + ao.`OFFSET`_memarg{u64#422}!`%`_u64{i#37380}.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`})] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp (i!`%`_num_{i#37370}.0 + ao.`OFFSET`_memarg{u64#422}!`%`_u64{i#37380}.0)] +[visit_exp i!`%`_num_{i#37370}.0] +[visit_exp i!`%`_num_{i#37370}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#37370] +[visit_id i#37370] +[visit_exp ao.`OFFSET`_memarg{u64#422}!`%`_u64{i#37380}.0] +[visit_exp ao.`OFFSET`_memarg{u64#422}!`%`_u64{i#37380}] +[visit_exp ao.`OFFSET`_memarg{u64#422}] +[visit_exp ao] +[visit_id ao] not free +[visit_exp u64#422] +[visit_id u64#422] +[visit_exp i#37380] +[visit_id i#37380] +[visit_exp (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] +[visit_exp ((n : nat <:> rat) / (8 : nat <:> rat))] +[visit_exp (n : nat <:> rat)] +[visit_exp n] +[visit_id n] not free +[visit_exp (8 : nat <:> rat)] +[visit_exp 8] +[visit_exp b*{b <- `b*`}] +[scope_enter b] +[visit_exp b] +[visit_id b] not free +[visit_id b] not free +[scope_exit b] +[visit_exp `b*`] +[visit_id b*] no dims +[visit_id b*] +[visit_exp []] +[visit_exp (b*{b <- `b*`} = $ibytes_(n, $wrap__($size((Inn : Inn <: numtype)), n, c)))] +[visit_exp b*{b <- `b*`}] +[scope_enter b] +[visit_exp b] +[visit_id b] not free +[visit_id b] not free +[scope_exit b] +[visit_exp `b*`] +[visit_id b*] not free +[visit_id b*] no dims +[visit_exp $ibytes_(n, $wrap__($size((Inn : Inn <: numtype)), n, c))] +[visit_exp n] +[visit_id n] not free +[visit_exp $wrap__($size((Inn : Inn <: numtype)), n, c)] +[visit_exp $size((Inn : Inn <: numtype))] +[visit_exp (Inn : Inn <: numtype)] +[visit_exp Inn] +[visit_id Inn] not free +[visit_exp n] +[visit_id n] not free +[visit_exp c] +[visit_id c] not free +[check_dims] ao at byte*#1865 c i i#37486 i#37496 instr*#1362 instr*#1374 memarg#71 memidx#103 numtype#237 state#1247 state#1259 u64#423 vectype#88 vectype#90 x z +[visit_exp `%;%`_config{state#1247, `instr*#1362`}(z, [`CONST`_instr{numtype#237}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#88}(`V128`_vectype, c) `VSTORE`_instr{vectype#90, memidx#103, memarg#71}(`V128`_vectype, x, ao)])] +[visit_exp state#1247] +[visit_id state#1247] +[visit_exp `instr*#1362`] +[visit_id instr*#1362] +[visit_exp (z, [`CONST`_instr{numtype#237}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#88}(`V128`_vectype, c) `VSTORE`_instr{vectype#90, memidx#103, memarg#71}(`V128`_vectype, x, ao)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#237}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#88}(`V128`_vectype, c) `VSTORE`_instr{vectype#90, memidx#103, memarg#71}(`V128`_vectype, x, ao)]] +[visit_exp `CONST`_instr{numtype#237}((at : addrtype <: numtype), i)] +[visit_exp numtype#237] +[visit_id numtype#237] +[visit_exp ((at : addrtype <: numtype), i)] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] +[visit_exp i] +[visit_id i] +[visit_exp `VCONST`_instr{vectype#88}(`V128`_vectype, c)] +[visit_exp vectype#88] +[visit_id vectype#88] +[visit_exp (`V128`_vectype, c)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c] +[visit_id c] +[visit_exp `VSTORE`_instr{vectype#90, memidx#103, memarg#71}(`V128`_vectype, x, ao)] +[visit_exp vectype#90] +[visit_id vectype#90] +[visit_exp memidx#103] +[visit_id memidx#103] +[visit_exp memarg#71] +[visit_id memarg#71] +[visit_exp (`V128`_vectype, x, ao)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp `%;%`_config{state#1259, `instr*#1374`}(z, [`TRAP`_instr])] +[visit_exp state#1259] +[visit_id state#1259] +[visit_exp `instr*#1374`] +[visit_id instr*#1374] +[visit_exp (z, [`TRAP`_instr])] +[visit_exp z] +[visit_id z] not free +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[visit_exp (((i!`%`_num_{i#37486}.0 + ao.`OFFSET`_memarg{u64#423}!`%`_u64{i#37496}.0) + ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst{`byte*#1865`}|)] +[visit_exp ((i!`%`_num_{i#37486}.0 + ao.`OFFSET`_memarg{u64#423}!`%`_u64{i#37496}.0) + ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] +[visit_exp (i!`%`_num_{i#37486}.0 + ao.`OFFSET`_memarg{u64#423}!`%`_u64{i#37496}.0)] +[visit_exp i!`%`_num_{i#37486}.0] +[visit_exp i!`%`_num_{i#37486}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#37486] +[visit_id i#37486] +[visit_exp ao.`OFFSET`_memarg{u64#423}!`%`_u64{i#37496}.0] +[visit_exp ao.`OFFSET`_memarg{u64#423}!`%`_u64{i#37496}] +[visit_exp ao.`OFFSET`_memarg{u64#423}] +[visit_exp ao] +[visit_id ao] not free +[visit_exp u64#423] +[visit_id u64#423] +[visit_exp i#37496] +[visit_id i#37496] +[visit_exp ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] +[visit_exp (($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat))] +[visit_exp ($vsize(`V128`_vectype) : nat <:> rat)] +[visit_exp $vsize(`V128`_vectype)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp (8 : nat <:> rat)] +[visit_exp 8] +[visit_exp |$mem(z, x).`BYTES`_meminst{`byte*#1865`}|] +[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1865`}] +[visit_exp $mem(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `byte*#1865`] +[visit_id byte*#1865] +[check_dims] ao at b c i i#37580 i#37590 instr*#1386 instr*#1398 memarg#73 memidx#105 numtype#239 state#1271 state#1283 u64#424 vectype#92 vectype#94 x z +[visit_exp `%;%`_config{state#1271, `instr*#1386`}(z, [`CONST`_instr{numtype#239}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#92}(`V128`_vectype, c) `VSTORE`_instr{vectype#94, memidx#105, memarg#73}(`V128`_vectype, x, ao)])] +[visit_exp state#1271] +[visit_id state#1271] +[visit_exp `instr*#1386`] +[visit_id instr*#1386] +[visit_exp (z, [`CONST`_instr{numtype#239}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#92}(`V128`_vectype, c) `VSTORE`_instr{vectype#94, memidx#105, memarg#73}(`V128`_vectype, x, ao)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#239}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#92}(`V128`_vectype, c) `VSTORE`_instr{vectype#94, memidx#105, memarg#73}(`V128`_vectype, x, ao)]] +[visit_exp `CONST`_instr{numtype#239}((at : addrtype <: numtype), i)] +[visit_exp numtype#239] +[visit_id numtype#239] +[visit_exp ((at : addrtype <: numtype), i)] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] +[visit_exp i] +[visit_id i] +[visit_exp `VCONST`_instr{vectype#92}(`V128`_vectype, c)] +[visit_exp vectype#92] +[visit_id vectype#92] +[visit_exp (`V128`_vectype, c)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c] +[visit_id c] +[visit_exp `VSTORE`_instr{vectype#94, memidx#105, memarg#73}(`V128`_vectype, x, ao)] +[visit_exp vectype#94] +[visit_id vectype#94] +[visit_exp memidx#105] +[visit_id memidx#105] +[visit_exp memarg#73] +[visit_id memarg#73] +[visit_exp (`V128`_vectype, x, ao)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp `%;%`_config{state#1283, `instr*#1398`}($with_mem(z, x, (i!`%`_num_{i#37580}.0 + ao.`OFFSET`_memarg{u64#424}!`%`_u64{i#37590}.0), ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])] +[visit_exp state#1283] +[visit_id state#1283] +[visit_exp `instr*#1398`] +[visit_id instr*#1398] +[visit_exp ($with_mem(z, x, (i!`%`_num_{i#37580}.0 + ao.`OFFSET`_memarg{u64#424}!`%`_u64{i#37590}.0), ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])] +[visit_exp $with_mem(z, x, (i!`%`_num_{i#37580}.0 + ao.`OFFSET`_memarg{u64#424}!`%`_u64{i#37590}.0), ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`})] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp (i!`%`_num_{i#37580}.0 + ao.`OFFSET`_memarg{u64#424}!`%`_u64{i#37590}.0)] +[visit_exp i!`%`_num_{i#37580}.0] +[visit_exp i!`%`_num_{i#37580}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#37580] +[visit_id i#37580] +[visit_exp ao.`OFFSET`_memarg{u64#424}!`%`_u64{i#37590}.0] +[visit_exp ao.`OFFSET`_memarg{u64#424}!`%`_u64{i#37590}] +[visit_exp ao.`OFFSET`_memarg{u64#424}] +[visit_exp ao] +[visit_id ao] not free +[visit_exp u64#424] +[visit_id u64#424] +[visit_exp i#37590] +[visit_id i#37590] +[visit_exp ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] +[visit_exp (($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat))] +[visit_exp ($vsize(`V128`_vectype) : nat <:> rat)] +[visit_exp $vsize(`V128`_vectype)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp (8 : nat <:> rat)] +[visit_exp 8] +[visit_exp b*{b <- `b*`}] +[scope_enter b] +[visit_exp b] +[visit_id b] not free +[visit_id b] not free +[scope_exit b] +[visit_exp `b*`] +[visit_id b*] no dims +[visit_id b*] +[visit_exp []] +[visit_exp (b*{b <- `b*`} = $vbytes_(`V128`_vectype, c))] +[visit_exp b*{b <- `b*`}] +[scope_enter b] +[visit_exp b] +[visit_id b] not free +[visit_id b] not free +[scope_exit b] +[visit_exp `b*`] +[visit_id b*] not free +[visit_id b*] no dims +[visit_exp $vbytes_(`V128`_vectype, c)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c] +[visit_id c] not free +[check_dims] N ao at byte*#1866 c i i#37660 i#37706 i#37716 instr*#1410 instr*#1422 j laneidx#21 memarg#75 memidx#107 numtype#241 state#1295 state#1307 sz#450 u64#425 vectype#96 vectype#98 x z +[visit_exp `%;%`_config{state#1295, `instr*#1410`}(z, [`CONST`_instr{numtype#241}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#96}(`V128`_vectype, c) `VSTORE_LANE`_instr{vectype#98, sz#450, memidx#107, memarg#75, laneidx#21}(`V128`_vectype, `%`_sz{i#37660}(N), x, ao, j)])] +[visit_exp state#1295] +[visit_id state#1295] +[visit_exp `instr*#1410`] +[visit_id instr*#1410] +[visit_exp (z, [`CONST`_instr{numtype#241}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#96}(`V128`_vectype, c) `VSTORE_LANE`_instr{vectype#98, sz#450, memidx#107, memarg#75, laneidx#21}(`V128`_vectype, `%`_sz{i#37660}(N), x, ao, j)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#241}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#96}(`V128`_vectype, c) `VSTORE_LANE`_instr{vectype#98, sz#450, memidx#107, memarg#75, laneidx#21}(`V128`_vectype, `%`_sz{i#37660}(N), x, ao, j)]] +[visit_exp `CONST`_instr{numtype#241}((at : addrtype <: numtype), i)] +[visit_exp numtype#241] +[visit_id numtype#241] +[visit_exp ((at : addrtype <: numtype), i)] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] +[visit_exp i] +[visit_id i] +[visit_exp `VCONST`_instr{vectype#96}(`V128`_vectype, c)] +[visit_exp vectype#96] +[visit_id vectype#96] +[visit_exp (`V128`_vectype, c)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c] +[visit_id c] +[visit_exp `VSTORE_LANE`_instr{vectype#98, sz#450, memidx#107, memarg#75, laneidx#21}(`V128`_vectype, `%`_sz{i#37660}(N), x, ao, j)] +[visit_exp vectype#98] +[visit_id vectype#98] +[visit_exp sz#450] +[visit_id sz#450] +[visit_exp memidx#107] +[visit_id memidx#107] +[visit_exp memarg#75] +[visit_id memarg#75] +[visit_exp laneidx#21] +[visit_id laneidx#21] +[visit_exp (`V128`_vectype, `%`_sz{i#37660}(N), x, ao, j)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp `%`_sz{i#37660}(N)] +[visit_exp i#37660] +[visit_id i#37660] +[visit_exp (N)] +[visit_exp N] +[visit_id N] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp j] +[visit_id j] +[visit_exp `%;%`_config{state#1307, `instr*#1422`}(z, [`TRAP`_instr])] +[visit_exp state#1307] +[visit_id state#1307] +[visit_exp `instr*#1422`] +[visit_id instr*#1422] +[visit_exp (z, [`TRAP`_instr])] +[visit_exp z] +[visit_id z] not free +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[visit_exp (((i!`%`_num_{i#37706}.0 + ao.`OFFSET`_memarg{u64#425}!`%`_u64{i#37716}.0) + N) > |$mem(z, x).`BYTES`_meminst{`byte*#1866`}|)] +[visit_exp ((i!`%`_num_{i#37706}.0 + ao.`OFFSET`_memarg{u64#425}!`%`_u64{i#37716}.0) + N)] +[visit_exp (i!`%`_num_{i#37706}.0 + ao.`OFFSET`_memarg{u64#425}!`%`_u64{i#37716}.0)] +[visit_exp i!`%`_num_{i#37706}.0] +[visit_exp i!`%`_num_{i#37706}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#37706] +[visit_id i#37706] +[visit_exp ao.`OFFSET`_memarg{u64#425}!`%`_u64{i#37716}.0] +[visit_exp ao.`OFFSET`_memarg{u64#425}!`%`_u64{i#37716}] +[visit_exp ao.`OFFSET`_memarg{u64#425}] +[visit_exp ao] +[visit_id ao] not free +[visit_exp u64#425] +[visit_id u64#425] +[visit_exp i#37716] +[visit_id i#37716] +[visit_exp N] +[visit_id N] not free +[visit_exp |$mem(z, x).`BYTES`_meminst{`byte*#1866`}|] +[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1866`}] +[visit_exp $mem(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `byte*#1866`] +[visit_id byte*#1866] +[check_dims] Jnn M N ao at b c dim#7403 i i#37764 i#37822 i#37832 i#37855 i#37862 i#37882 i#37906 i#37907 instr*#1434 instr*#1446 j laneidx#23 lanetype#7403 memarg#77 memidx#109 numtype#243 state#1319 state#1331 sz#452 u64#426 vectype#100 vectype#102 x z +[visit_exp `%;%`_config{state#1319, `instr*#1434`}(z, [`CONST`_instr{numtype#243}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#100}(`V128`_vectype, c) `VSTORE_LANE`_instr{vectype#102, sz#452, memidx#109, memarg#77, laneidx#23}(`V128`_vectype, `%`_sz{i#37764}(N), x, ao, j)])] +[visit_exp state#1319] +[visit_id state#1319] +[visit_exp `instr*#1434`] +[visit_id instr*#1434] +[visit_exp (z, [`CONST`_instr{numtype#243}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#100}(`V128`_vectype, c) `VSTORE_LANE`_instr{vectype#102, sz#452, memidx#109, memarg#77, laneidx#23}(`V128`_vectype, `%`_sz{i#37764}(N), x, ao, j)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#243}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#100}(`V128`_vectype, c) `VSTORE_LANE`_instr{vectype#102, sz#452, memidx#109, memarg#77, laneidx#23}(`V128`_vectype, `%`_sz{i#37764}(N), x, ao, j)]] +[visit_exp `CONST`_instr{numtype#243}((at : addrtype <: numtype), i)] +[visit_exp numtype#243] +[visit_id numtype#243] +[visit_exp ((at : addrtype <: numtype), i)] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] +[visit_exp i] +[visit_id i] +[visit_exp `VCONST`_instr{vectype#100}(`V128`_vectype, c)] +[visit_exp vectype#100] +[visit_id vectype#100] +[visit_exp (`V128`_vectype, c)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c] +[visit_id c] +[visit_exp `VSTORE_LANE`_instr{vectype#102, sz#452, memidx#109, memarg#77, laneidx#23}(`V128`_vectype, `%`_sz{i#37764}(N), x, ao, j)] +[visit_exp vectype#102] +[visit_id vectype#102] +[visit_exp sz#452] +[visit_id sz#452] +[visit_exp memidx#109] +[visit_id memidx#109] +[visit_exp memarg#77] +[visit_id memarg#77] +[visit_exp laneidx#23] +[visit_id laneidx#23] +[visit_exp (`V128`_vectype, `%`_sz{i#37764}(N), x, ao, j)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp `%`_sz{i#37764}(N)] +[visit_exp i#37764] +[visit_id i#37764] +[visit_exp (N)] +[visit_exp N] +[visit_id N] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp j] +[visit_id j] +[visit_exp `%;%`_config{state#1331, `instr*#1446`}($with_mem(z, x, (i!`%`_num_{i#37822}.0 + ao.`OFFSET`_memarg{u64#426}!`%`_u64{i#37832}.0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])] +[visit_exp state#1331] +[visit_id state#1331] +[visit_exp `instr*#1446`] +[visit_id instr*#1446] +[visit_exp ($with_mem(z, x, (i!`%`_num_{i#37822}.0 + ao.`OFFSET`_memarg{u64#426}!`%`_u64{i#37832}.0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])] +[visit_exp $with_mem(z, x, (i!`%`_num_{i#37822}.0 + ao.`OFFSET`_memarg{u64#426}!`%`_u64{i#37832}.0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`})] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp (i!`%`_num_{i#37822}.0 + ao.`OFFSET`_memarg{u64#426}!`%`_u64{i#37832}.0)] +[visit_exp i!`%`_num_{i#37822}.0] +[visit_exp i!`%`_num_{i#37822}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#37822] +[visit_id i#37822] +[visit_exp ao.`OFFSET`_memarg{u64#426}!`%`_u64{i#37832}.0] +[visit_exp ao.`OFFSET`_memarg{u64#426}!`%`_u64{i#37832}] +[visit_exp ao.`OFFSET`_memarg{u64#426}] +[visit_exp ao] +[visit_id ao] not free +[visit_exp u64#426] +[visit_id u64#426] +[visit_exp i#37832] +[visit_id i#37832] +[visit_exp (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] +[visit_exp ((N : nat <:> rat) / (8 : nat <:> rat))] +[visit_exp (N : nat <:> rat)] +[visit_exp N] +[visit_id N] not free +[visit_exp (8 : nat <:> rat)] +[visit_exp 8] +[visit_exp b*{b <- `b*`}] +[scope_enter b] +[visit_exp b] +[visit_id b] not free +[visit_id b] not free +[scope_exit b] +[visit_exp `b*`] +[visit_id b*] no dims +[visit_id b*] +[visit_exp []] +[visit_exp (N = $jsize(Jnn))] +[visit_exp N] +[visit_id N] not free +[visit_exp $jsize(Jnn)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat)))] +[visit_exp (M : nat <:> rat)] +[visit_exp M] +[visit_id M] +[visit_exp ((128 : nat <:> rat) / (N : nat <:> rat))] +[visit_exp (128 : nat <:> rat)] +[visit_exp 128] +[visit_exp (N : nat <:> rat)] +[visit_exp N] +[visit_id N] not free +[visit_exp (b*{b <- `b*`} = $ibytes_(N, `%`_iN{i#37907}($lanes_(`%X%`_shape{lanetype#7403, dim#7403, i#37855}((Jnn : Jnn <: lanetype), `%`_dim{i#37862}(M)), c)[j!`%`_laneidx{i#37882}.0]!`%`_lane_{i#37906}.0)))] +[visit_exp b*{b <- `b*`}] +[scope_enter b] +[visit_exp b] +[visit_id b] not free +[visit_id b] not free +[scope_exit b] +[visit_exp `b*`] +[visit_id b*] not free +[visit_id b*] no dims +[visit_exp $ibytes_(N, `%`_iN{i#37907}($lanes_(`%X%`_shape{lanetype#7403, dim#7403, i#37855}((Jnn : Jnn <: lanetype), `%`_dim{i#37862}(M)), c)[j!`%`_laneidx{i#37882}.0]!`%`_lane_{i#37906}.0))] +[visit_exp N] +[visit_id N] not free +[visit_exp `%`_iN{i#37907}($lanes_(`%X%`_shape{lanetype#7403, dim#7403, i#37855}((Jnn : Jnn <: lanetype), `%`_dim{i#37862}(M)), c)[j!`%`_laneidx{i#37882}.0]!`%`_lane_{i#37906}.0)] +[visit_exp i#37907] +[visit_id i#37907] +[visit_exp ($lanes_(`%X%`_shape{lanetype#7403, dim#7403, i#37855}((Jnn : Jnn <: lanetype), `%`_dim{i#37862}(M)), c)[j!`%`_laneidx{i#37882}.0]!`%`_lane_{i#37906}.0)] +[visit_exp $lanes_(`%X%`_shape{lanetype#7403, dim#7403, i#37855}((Jnn : Jnn <: lanetype), `%`_dim{i#37862}(M)), c)[j!`%`_laneidx{i#37882}.0]!`%`_lane_{i#37906}.0] +[visit_exp $lanes_(`%X%`_shape{lanetype#7403, dim#7403, i#37855}((Jnn : Jnn <: lanetype), `%`_dim{i#37862}(M)), c)[j!`%`_laneidx{i#37882}.0]!`%`_lane_{i#37906}] +[visit_exp $lanes_(`%X%`_shape{lanetype#7403, dim#7403, i#37855}((Jnn : Jnn <: lanetype), `%`_dim{i#37862}(M)), c)[j!`%`_laneidx{i#37882}.0]] +[visit_exp $lanes_(`%X%`_shape{lanetype#7403, dim#7403, i#37855}((Jnn : Jnn <: lanetype), `%`_dim{i#37862}(M)), c)] +[visit_exp `%X%`_shape{lanetype#7403, dim#7403, i#37855}((Jnn : Jnn <: lanetype), `%`_dim{i#37862}(M))] +[visit_exp lanetype#7403] +[visit_id lanetype#7403] +[visit_exp dim#7403] +[visit_id dim#7403] +[visit_exp i#37855] +[visit_id i#37855] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#37862}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#37862}(M)] +[visit_exp i#37862] +[visit_id i#37862] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp c] +[visit_id c] not free +[visit_exp j!`%`_laneidx{i#37882}.0] +[visit_exp j!`%`_laneidx{i#37882}] +[visit_exp j] +[visit_id j] not free +[visit_exp i#37882] +[visit_id i#37882] +[visit_exp i#37906] +[visit_id i#37906] +[check_dims] addrtype#1135 at byte*#1867 i#37958 instr*#1458 lim limits#1135 memidx#111 memtype#530 n numtype#245 state#1343 x z +[visit_exp `%;%`_config{state#1343, `instr*#1458`}(z, [`MEMORY.SIZE`_instr{memidx#111}(x)])] +[visit_exp state#1343] +[visit_id state#1343] +[visit_exp `instr*#1458`] +[visit_id instr*#1458] +[visit_exp (z, [`MEMORY.SIZE`_instr{memidx#111}(x)])] +[visit_exp z] +[visit_id z] +[visit_exp [`MEMORY.SIZE`_instr{memidx#111}(x)]] +[visit_exp `MEMORY.SIZE`_instr{memidx#111}(x)] +[visit_exp memidx#111] +[visit_id memidx#111] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp [`CONST`_instr{numtype#245}((at : addrtype <: numtype), `%`_num_{i#37958}(n))]] +[visit_exp `CONST`_instr{numtype#245}((at : addrtype <: numtype), `%`_num_{i#37958}(n))] +[visit_exp numtype#245] +[visit_id numtype#245] +[visit_exp ((at : addrtype <: numtype), `%`_num_{i#37958}(n))] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] +[visit_exp `%`_num_{i#37958}(n)] +[visit_exp i#37958] +[visit_id i#37958] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp ((n * (64 * $Ki)) = |$mem(z, x).`BYTES`_meminst{`byte*#1867`}|)] +[visit_exp (n * (64 * $Ki))] +[visit_exp n] +[visit_id n] not free +[visit_exp (64 * $Ki)] +[visit_exp 64] +[visit_exp $Ki] +[visit_exp |$mem(z, x).`BYTES`_meminst{`byte*#1867`}|] +[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1867`}] +[visit_exp $mem(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `byte*#1867`] +[visit_id byte*#1867] +[visit_exp ($mem(z, x).`TYPE`_meminst{memtype#530} = `%%PAGE`_memtype{addrtype#1135, limits#1135}(at, lim))] +[visit_exp $mem(z, x).`TYPE`_meminst{memtype#530}] +[visit_exp $mem(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp memtype#530] +[visit_id memtype#530] +[visit_exp `%%PAGE`_memtype{addrtype#1135, limits#1135}(at, lim)] +[visit_exp addrtype#1135] +[visit_id addrtype#1135] +[visit_exp limits#1135] +[visit_id limits#1135] +[visit_exp (at, lim)] +[visit_exp at] +[visit_id at] not free +[visit_exp lim] +[visit_id lim] +[check_dims] at byte*#1868 i#38006 i#38066 instr*#1470 instr*#1482 memidx#113 mi n numtype#247 numtype#249 state#1355 state#1367 x z +[visit_exp `%;%`_config{state#1355, `instr*#1470`}(z, [`CONST`_instr{numtype#247}((at : addrtype <: numtype), `%`_num_{i#38006}(n)) `MEMORY.GROW`_instr{memidx#113}(x)])] +[visit_exp state#1355] +[visit_id state#1355] +[visit_exp `instr*#1470`] +[visit_id instr*#1470] +[visit_exp (z, [`CONST`_instr{numtype#247}((at : addrtype <: numtype), `%`_num_{i#38006}(n)) `MEMORY.GROW`_instr{memidx#113}(x)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#247}((at : addrtype <: numtype), `%`_num_{i#38006}(n)) `MEMORY.GROW`_instr{memidx#113}(x)]] +[visit_exp `CONST`_instr{numtype#247}((at : addrtype <: numtype), `%`_num_{i#38006}(n))] +[visit_exp numtype#247] +[visit_id numtype#247] +[visit_exp ((at : addrtype <: numtype), `%`_num_{i#38006}(n))] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] +[visit_exp `%`_num_{i#38006}(n)] +[visit_exp i#38006] +[visit_id i#38006] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `MEMORY.GROW`_instr{memidx#113}(x)] +[visit_exp memidx#113] +[visit_id memidx#113] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%;%`_config{state#1367, `instr*#1482`}($with_meminst(z, x, mi), [`CONST`_instr{numtype#249}((at : addrtype <: numtype), `%`_num_{i#38066}((((|$mem(z, x).`BYTES`_meminst{`byte*#1868`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat)))])] +[visit_exp state#1367] +[visit_id state#1367] +[visit_exp `instr*#1482`] +[visit_id instr*#1482] +[visit_exp ($with_meminst(z, x, mi), [`CONST`_instr{numtype#249}((at : addrtype <: numtype), `%`_num_{i#38066}((((|$mem(z, x).`BYTES`_meminst{`byte*#1868`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat)))])] +[visit_exp $with_meminst(z, x, mi)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp mi] +[visit_id mi] +[visit_exp [`CONST`_instr{numtype#249}((at : addrtype <: numtype), `%`_num_{i#38066}((((|$mem(z, x).`BYTES`_meminst{`byte*#1868`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat)))]] +[visit_exp `CONST`_instr{numtype#249}((at : addrtype <: numtype), `%`_num_{i#38066}((((|$mem(z, x).`BYTES`_meminst{`byte*#1868`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat)))] +[visit_exp numtype#249] +[visit_id numtype#249] +[visit_exp ((at : addrtype <: numtype), `%`_num_{i#38066}((((|$mem(z, x).`BYTES`_meminst{`byte*#1868`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat)))] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] not free +[visit_exp `%`_num_{i#38066}((((|$mem(z, x).`BYTES`_meminst{`byte*#1868`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))] +[visit_exp i#38066] +[visit_id i#38066] +[visit_exp ((((|$mem(z, x).`BYTES`_meminst{`byte*#1868`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))] +[visit_exp (((|$mem(z, x).`BYTES`_meminst{`byte*#1868`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat)] +[visit_exp ((|$mem(z, x).`BYTES`_meminst{`byte*#1868`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat))] +[visit_exp (|$mem(z, x).`BYTES`_meminst{`byte*#1868`}| : nat <:> rat)] +[visit_exp |$mem(z, x).`BYTES`_meminst{`byte*#1868`}|] +[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1868`}] +[visit_exp $mem(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `byte*#1868`] +[visit_id byte*#1868] +[visit_exp ((64 * $Ki) : nat <:> rat)] +[visit_exp (64 * $Ki)] +[visit_exp 64] +[visit_exp $Ki] +[visit_exp (mi = $growmem($mem(z, x), n))] +[visit_exp mi] +[visit_id mi] not free +[visit_exp $growmem($mem(z, x), n)] +[visit_exp $mem(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp n] +[visit_id n] not free +[check_dims] at i#38102 i#38138 instr*#1494 instr*#1506 memidx#115 n numtype#251 numtype#253 state#1379 state#1391 x z +[visit_exp `%;%`_config{state#1379, `instr*#1494`}(z, [`CONST`_instr{numtype#251}((at : addrtype <: numtype), `%`_num_{i#38102}(n)) `MEMORY.GROW`_instr{memidx#115}(x)])] +[visit_exp state#1379] +[visit_id state#1379] +[visit_exp `instr*#1494`] +[visit_id instr*#1494] +[visit_exp (z, [`CONST`_instr{numtype#251}((at : addrtype <: numtype), `%`_num_{i#38102}(n)) `MEMORY.GROW`_instr{memidx#115}(x)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#251}((at : addrtype <: numtype), `%`_num_{i#38102}(n)) `MEMORY.GROW`_instr{memidx#115}(x)]] +[visit_exp `CONST`_instr{numtype#251}((at : addrtype <: numtype), `%`_num_{i#38102}(n))] +[visit_exp numtype#251] +[visit_id numtype#251] +[visit_exp ((at : addrtype <: numtype), `%`_num_{i#38102}(n))] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] +[visit_exp `%`_num_{i#38102}(n)] +[visit_exp i#38102] +[visit_id i#38102] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `MEMORY.GROW`_instr{memidx#115}(x)] +[visit_exp memidx#115] +[visit_id memidx#115] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%;%`_config{state#1391, `instr*#1506`}(z, [`CONST`_instr{numtype#253}((at : addrtype <: numtype), `%`_num_{i#38138}($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))])] +[visit_exp state#1391] +[visit_id state#1391] +[visit_exp `instr*#1506`] +[visit_id instr*#1506] +[visit_exp (z, [`CONST`_instr{numtype#253}((at : addrtype <: numtype), `%`_num_{i#38138}($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))])] +[visit_exp z] +[visit_id z] not free +[visit_exp [`CONST`_instr{numtype#253}((at : addrtype <: numtype), `%`_num_{i#38138}($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))]] +[visit_exp `CONST`_instr{numtype#253}((at : addrtype <: numtype), `%`_num_{i#38138}($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))] +[visit_exp numtype#253] +[visit_id numtype#253] +[visit_exp ((at : addrtype <: numtype), `%`_num_{i#38138}($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] not free +[visit_exp `%`_num_{i#38138}($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))] +[visit_exp i#38138] +[visit_id i#38138] +[visit_exp ($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))] +[visit_exp $inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))] +[visit_exp $size((at : addrtype <: numtype))] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] not free +[visit_exp - (1 : nat <:> int)] +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[check_dims] at byte*#1869 i i#38176 i#38204 instr*#1518 memidx#117 n numtype#255 numtype#257 state#1403 val x z +[visit_exp `%;%`_config{state#1403, `instr*#1518`}(z, [`CONST`_instr{numtype#255}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#257}((at : addrtype <: numtype), `%`_num_{i#38176}(n)) `MEMORY.FILL`_instr{memidx#117}(x)])] +[visit_exp state#1403] +[visit_id state#1403] +[visit_exp `instr*#1518`] +[visit_id instr*#1518] +[visit_exp (z, [`CONST`_instr{numtype#255}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#257}((at : addrtype <: numtype), `%`_num_{i#38176}(n)) `MEMORY.FILL`_instr{memidx#117}(x)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#255}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#257}((at : addrtype <: numtype), `%`_num_{i#38176}(n)) `MEMORY.FILL`_instr{memidx#117}(x)]] +[visit_exp `CONST`_instr{numtype#255}((at : addrtype <: numtype), i)] +[visit_exp numtype#255] +[visit_id numtype#255] +[visit_exp ((at : addrtype <: numtype), i)] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] +[visit_exp i] +[visit_id i] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] +[visit_exp `CONST`_instr{numtype#257}((at : addrtype <: numtype), `%`_num_{i#38176}(n))] +[visit_exp numtype#257] +[visit_id numtype#257] +[visit_exp ((at : addrtype <: numtype), `%`_num_{i#38176}(n))] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] not free +[visit_exp `%`_num_{i#38176}(n)] +[visit_exp i#38176] +[visit_id i#38176] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `MEMORY.FILL`_instr{memidx#117}(x)] +[visit_exp memidx#117] +[visit_id memidx#117] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[visit_exp ((i!`%`_num_{i#38204}.0 + n) > |$mem(z, x).`BYTES`_meminst{`byte*#1869`}|)] +[visit_exp (i!`%`_num_{i#38204}.0 + n)] +[visit_exp i!`%`_num_{i#38204}.0] +[visit_exp i!`%`_num_{i#38204}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#38204] +[visit_id i#38204] +[visit_exp n] +[visit_id n] not free +[visit_exp |$mem(z, x).`BYTES`_meminst{`byte*#1869`}|] +[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1869`}] +[visit_exp $mem(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `byte*#1869`] +[visit_id byte*#1869] +[check_dims] at i i#38254 instr*#1530 memidx#119 n numtype#259 numtype#261 state#1415 val x z +[visit_exp `%;%`_config{state#1415, `instr*#1530`}(z, [`CONST`_instr{numtype#259}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#261}((at : addrtype <: numtype), `%`_num_{i#38254}(n)) `MEMORY.FILL`_instr{memidx#119}(x)])] +[visit_exp state#1415] +[visit_id state#1415] +[visit_exp `instr*#1530`] +[visit_id instr*#1530] +[visit_exp (z, [`CONST`_instr{numtype#259}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#261}((at : addrtype <: numtype), `%`_num_{i#38254}(n)) `MEMORY.FILL`_instr{memidx#119}(x)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#259}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#261}((at : addrtype <: numtype), `%`_num_{i#38254}(n)) `MEMORY.FILL`_instr{memidx#119}(x)]] +[visit_exp `CONST`_instr{numtype#259}((at : addrtype <: numtype), i)] +[visit_exp numtype#259] +[visit_id numtype#259] +[visit_exp ((at : addrtype <: numtype), i)] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] +[visit_exp i] +[visit_id i] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] +[visit_exp `CONST`_instr{numtype#261}((at : addrtype <: numtype), `%`_num_{i#38254}(n))] +[visit_exp numtype#261] +[visit_id numtype#261] +[visit_exp ((at : addrtype <: numtype), `%`_num_{i#38254}(n))] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] not free +[visit_exp `%`_num_{i#38254}(n)] +[visit_exp i#38254] +[visit_id i#38254] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `MEMORY.FILL`_instr{memidx#119}(x)] +[visit_exp memidx#119] +[visit_id memidx#119] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp []] +[visit_exp (n = 0)] +[visit_exp n] +[visit_id n] not free +[visit_exp 0] +[check_dims] at i i#38306 i#38373 i#38374 i#38414 i#38424 i#38446 instr*#1542 memarg#79 memidx#121 memidx#123 memidx#125 n numtype#263 numtype#265 numtype#267 numtype#270 numtype#272 numtype?#15 state#1427 sz#465 val x z +[visit_exp `%;%`_config{state#1427, `instr*#1542`}(z, [`CONST`_instr{numtype#263}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#265}((at : addrtype <: numtype), `%`_num_{i#38306}(n)) `MEMORY.FILL`_instr{memidx#121}(x)])] +[visit_exp state#1427] +[visit_id state#1427] +[visit_exp `instr*#1542`] +[visit_id instr*#1542] +[visit_exp (z, [`CONST`_instr{numtype#263}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#265}((at : addrtype <: numtype), `%`_num_{i#38306}(n)) `MEMORY.FILL`_instr{memidx#121}(x)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#263}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#265}((at : addrtype <: numtype), `%`_num_{i#38306}(n)) `MEMORY.FILL`_instr{memidx#121}(x)]] +[visit_exp `CONST`_instr{numtype#263}((at : addrtype <: numtype), i)] +[visit_exp numtype#263] +[visit_id numtype#263] +[visit_exp ((at : addrtype <: numtype), i)] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] +[visit_exp i] +[visit_id i] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] +[visit_exp `CONST`_instr{numtype#265}((at : addrtype <: numtype), `%`_num_{i#38306}(n))] +[visit_exp numtype#265] +[visit_id numtype#265] +[visit_exp ((at : addrtype <: numtype), `%`_num_{i#38306}(n))] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] not free +[visit_exp `%`_num_{i#38306}(n)] +[visit_exp i#38306] +[visit_id i#38306] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `MEMORY.FILL`_instr{memidx#121}(x)] +[visit_exp memidx#121] +[visit_id memidx#121] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp [`CONST`_instr{numtype#267}((at : addrtype <: numtype), i) (val : val <: instr) `STORE`_instr{`numtype?#15`, memidx#123, memarg#79}(`I32`_numtype, ?(`%`_storeop_{sz#465, i#38373}(`%`_sz{i#38374}(8))), x, $memarg0) `CONST`_instr{numtype#270}((at : addrtype <: numtype), `%`_num_{i#38424}((i!`%`_num_{i#38414}.0 + 1))) (val : val <: instr) `CONST`_instr{numtype#272}((at : addrtype <: numtype), `%`_num_{i#38446}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `MEMORY.FILL`_instr{memidx#125}(x)]] +[visit_exp `CONST`_instr{numtype#267}((at : addrtype <: numtype), i)] +[visit_exp numtype#267] +[visit_id numtype#267] +[visit_exp ((at : addrtype <: numtype), i)] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] not free +[visit_exp i] +[visit_id i] not free +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_exp `STORE`_instr{`numtype?#15`, memidx#123, memarg#79}(`I32`_numtype, ?(`%`_storeop_{sz#465, i#38373}(`%`_sz{i#38374}(8))), x, $memarg0)] +[visit_exp `numtype?#15`] +[visit_id numtype?#15] +[visit_exp memidx#123] +[visit_id memidx#123] +[visit_exp memarg#79] +[visit_id memarg#79] +[visit_exp (`I32`_numtype, ?(`%`_storeop_{sz#465, i#38373}(`%`_sz{i#38374}(8))), x, $memarg0)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp ?(`%`_storeop_{sz#465, i#38373}(`%`_sz{i#38374}(8)))] +[visit_exp `%`_storeop_{sz#465, i#38373}(`%`_sz{i#38374}(8))] +[visit_exp sz#465] +[visit_id sz#465] +[visit_exp i#38373] +[visit_id i#38373] +[visit_exp (`%`_sz{i#38374}(8))] +[visit_exp `%`_sz{i#38374}(8)] +[visit_exp i#38374] +[visit_id i#38374] +[visit_exp (8)] +[visit_exp 8] +[visit_exp x] +[visit_id x] not free +[visit_exp $memarg0] +[visit_exp `CONST`_instr{numtype#270}((at : addrtype <: numtype), `%`_num_{i#38424}((i!`%`_num_{i#38414}.0 + 1)))] +[visit_exp numtype#270] +[visit_id numtype#270] +[visit_exp ((at : addrtype <: numtype), `%`_num_{i#38424}((i!`%`_num_{i#38414}.0 + 1)))] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] not free +[visit_exp `%`_num_{i#38424}((i!`%`_num_{i#38414}.0 + 1))] +[visit_exp i#38424] +[visit_id i#38424] +[visit_exp ((i!`%`_num_{i#38414}.0 + 1))] +[visit_exp (i!`%`_num_{i#38414}.0 + 1)] +[visit_exp i!`%`_num_{i#38414}.0] +[visit_exp i!`%`_num_{i#38414}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#38414] +[visit_id i#38414] +[visit_exp 1] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_exp `CONST`_instr{numtype#272}((at : addrtype <: numtype), `%`_num_{i#38446}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp numtype#272] +[visit_id numtype#272] +[visit_exp ((at : addrtype <: numtype), `%`_num_{i#38446}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] not free +[visit_exp `%`_num_{i#38446}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp i#38446] +[visit_id i#38446] +[visit_exp ((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp (((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp ((n : nat <:> int) - (1 : nat <:> int))] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp `MEMORY.FILL`_instr{memidx#125}(x)] +[visit_exp memidx#125] +[visit_id memidx#125] +[visit_exp (x)] +[visit_exp x] +[visit_id x] not free +[check_dims] at' at_1 at_2 byte*#1870 byte*#1871 i#38512 i#38554 i#38580 i_1 i_2 instr*#1554 memidx#127 n numtype#274 numtype#276 numtype#278 state#1439 x_1 x_2 z +[visit_exp `%;%`_config{state#1439, `instr*#1554`}(z, [`CONST`_instr{numtype#274}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#276}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#278}((at' : addrtype <: numtype), `%`_num_{i#38512}(n)) `MEMORY.COPY`_instr{memidx#127}(x_1, x_2)])] +[visit_exp state#1439] +[visit_id state#1439] +[visit_exp `instr*#1554`] +[visit_id instr*#1554] +[visit_exp (z, [`CONST`_instr{numtype#274}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#276}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#278}((at' : addrtype <: numtype), `%`_num_{i#38512}(n)) `MEMORY.COPY`_instr{memidx#127}(x_1, x_2)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#274}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#276}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#278}((at' : addrtype <: numtype), `%`_num_{i#38512}(n)) `MEMORY.COPY`_instr{memidx#127}(x_1, x_2)]] +[visit_exp `CONST`_instr{numtype#274}((at_1 : addrtype <: numtype), i_1)] +[visit_exp numtype#274] +[visit_id numtype#274] +[visit_exp ((at_1 : addrtype <: numtype), i_1)] +[visit_exp (at_1 : addrtype <: numtype)] +[visit_exp at_1] +[visit_id at_1] +[visit_exp i_1] +[visit_id i_1] +[visit_exp `CONST`_instr{numtype#276}((at_2 : addrtype <: numtype), i_2)] +[visit_exp numtype#276] +[visit_id numtype#276] +[visit_exp ((at_2 : addrtype <: numtype), i_2)] +[visit_exp (at_2 : addrtype <: numtype)] +[visit_exp at_2] +[visit_id at_2] +[visit_exp i_2] +[visit_id i_2] +[visit_exp `CONST`_instr{numtype#278}((at' : addrtype <: numtype), `%`_num_{i#38512}(n))] +[visit_exp numtype#278] +[visit_id numtype#278] +[visit_exp ((at' : addrtype <: numtype), `%`_num_{i#38512}(n))] +[visit_exp (at' : addrtype <: numtype)] +[visit_exp at'] +[visit_id at'] +[visit_exp `%`_num_{i#38512}(n)] +[visit_exp i#38512] +[visit_id i#38512] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `MEMORY.COPY`_instr{memidx#127}(x_1, x_2)] +[visit_exp memidx#127] +[visit_id memidx#127] +[visit_exp (x_1, x_2)] +[visit_exp x_1] +[visit_id x_1] +[visit_exp x_2] +[visit_id x_2] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[visit_exp (((i_1!`%`_num_{i#38554}.0 + n) > |$mem(z, x_1).`BYTES`_meminst{`byte*#1870`}|) \/ ((i_2!`%`_num_{i#38580}.0 + n) > |$mem(z, x_2).`BYTES`_meminst{`byte*#1871`}|))] +[visit_exp ((i_1!`%`_num_{i#38554}.0 + n) > |$mem(z, x_1).`BYTES`_meminst{`byte*#1870`}|)] +[visit_exp (i_1!`%`_num_{i#38554}.0 + n)] +[visit_exp i_1!`%`_num_{i#38554}.0] +[visit_exp i_1!`%`_num_{i#38554}] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i#38554] +[visit_id i#38554] +[visit_exp n] +[visit_id n] not free +[visit_exp |$mem(z, x_1).`BYTES`_meminst{`byte*#1870`}|] +[visit_exp $mem(z, x_1).`BYTES`_meminst{`byte*#1870`}] +[visit_exp $mem(z, x_1)] +[visit_exp z] +[visit_id z] not free +[visit_exp x_1] +[visit_id x_1] not free +[visit_exp `byte*#1870`] +[visit_id byte*#1870] +[visit_exp ((i_2!`%`_num_{i#38580}.0 + n) > |$mem(z, x_2).`BYTES`_meminst{`byte*#1871`}|)] +[visit_exp (i_2!`%`_num_{i#38580}.0 + n)] +[visit_exp i_2!`%`_num_{i#38580}.0] +[visit_exp i_2!`%`_num_{i#38580}] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp i#38580] +[visit_id i#38580] +[visit_exp n] +[visit_id n] not free +[visit_exp |$mem(z, x_2).`BYTES`_meminst{`byte*#1871`}|] +[visit_exp $mem(z, x_2).`BYTES`_meminst{`byte*#1871`}] +[visit_exp $mem(z, x_2)] +[visit_exp z] +[visit_id z] not free +[visit_exp x_2] +[visit_id x_2] not free +[visit_exp `byte*#1871`] +[visit_id byte*#1871] +[check_dims] at' at_1 at_2 i#38644 i_1 i_2 instr*#1566 memidx#130 n numtype#280 numtype#282 numtype#284 state#1451 x_1 x_2 z +[visit_exp `%;%`_config{state#1451, `instr*#1566`}(z, [`CONST`_instr{numtype#280}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#282}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#284}((at' : addrtype <: numtype), `%`_num_{i#38644}(n)) `MEMORY.COPY`_instr{memidx#130}(x_1, x_2)])] +[visit_exp state#1451] +[visit_id state#1451] +[visit_exp `instr*#1566`] +[visit_id instr*#1566] +[visit_exp (z, [`CONST`_instr{numtype#280}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#282}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#284}((at' : addrtype <: numtype), `%`_num_{i#38644}(n)) `MEMORY.COPY`_instr{memidx#130}(x_1, x_2)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#280}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#282}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#284}((at' : addrtype <: numtype), `%`_num_{i#38644}(n)) `MEMORY.COPY`_instr{memidx#130}(x_1, x_2)]] +[visit_exp `CONST`_instr{numtype#280}((at_1 : addrtype <: numtype), i_1)] +[visit_exp numtype#280] +[visit_id numtype#280] +[visit_exp ((at_1 : addrtype <: numtype), i_1)] +[visit_exp (at_1 : addrtype <: numtype)] +[visit_exp at_1] +[visit_id at_1] +[visit_exp i_1] +[visit_id i_1] +[visit_exp `CONST`_instr{numtype#282}((at_2 : addrtype <: numtype), i_2)] +[visit_exp numtype#282] +[visit_id numtype#282] +[visit_exp ((at_2 : addrtype <: numtype), i_2)] +[visit_exp (at_2 : addrtype <: numtype)] +[visit_exp at_2] +[visit_id at_2] +[visit_exp i_2] +[visit_id i_2] +[visit_exp `CONST`_instr{numtype#284}((at' : addrtype <: numtype), `%`_num_{i#38644}(n))] +[visit_exp numtype#284] +[visit_id numtype#284] +[visit_exp ((at' : addrtype <: numtype), `%`_num_{i#38644}(n))] +[visit_exp (at' : addrtype <: numtype)] +[visit_exp at'] +[visit_id at'] +[visit_exp `%`_num_{i#38644}(n)] +[visit_exp i#38644] +[visit_id i#38644] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `MEMORY.COPY`_instr{memidx#130}(x_1, x_2)] +[visit_exp memidx#130] +[visit_id memidx#130] +[visit_exp (x_1, x_2)] +[visit_exp x_1] +[visit_id x_1] +[visit_exp x_2] +[visit_id x_2] +[visit_exp []] +[visit_exp (n = 0)] +[visit_exp n] +[visit_id n] not free +[visit_exp 0] +[check_dims] at' at_1 at_2 i#38724 i#38802 i#38809 i#38864 i#38865 i#38905 i#38915 i#38941 i#38951 i#38973 i#39019 i#39029 i_1 i_2 instr*#1578 memarg#81 memarg#83 memidx#133 memidx#136 memidx#138 memidx#140 n numtype#286 numtype#288 numtype#290 numtype#292 numtype#294 numtype#298 numtype#300 numtype#302 numtype?#16 numtype?#17 state#1463 sx#384 sz#483 sz#496 x_1 x_2 z +[visit_exp `%;%`_config{state#1463, `instr*#1578`}(z, [`CONST`_instr{numtype#286}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#288}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#290}((at' : addrtype <: numtype), `%`_num_{i#38724}(n)) `MEMORY.COPY`_instr{memidx#133}(x_1, x_2)])] +[visit_exp state#1463] +[visit_id state#1463] +[visit_exp `instr*#1578`] +[visit_id instr*#1578] +[visit_exp (z, [`CONST`_instr{numtype#286}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#288}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#290}((at' : addrtype <: numtype), `%`_num_{i#38724}(n)) `MEMORY.COPY`_instr{memidx#133}(x_1, x_2)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#286}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#288}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#290}((at' : addrtype <: numtype), `%`_num_{i#38724}(n)) `MEMORY.COPY`_instr{memidx#133}(x_1, x_2)]] +[visit_exp `CONST`_instr{numtype#286}((at_1 : addrtype <: numtype), i_1)] +[visit_exp numtype#286] +[visit_id numtype#286] +[visit_exp ((at_1 : addrtype <: numtype), i_1)] +[visit_exp (at_1 : addrtype <: numtype)] +[visit_exp at_1] +[visit_id at_1] +[visit_exp i_1] +[visit_id i_1] +[visit_exp `CONST`_instr{numtype#288}((at_2 : addrtype <: numtype), i_2)] +[visit_exp numtype#288] +[visit_id numtype#288] +[visit_exp ((at_2 : addrtype <: numtype), i_2)] +[visit_exp (at_2 : addrtype <: numtype)] +[visit_exp at_2] +[visit_id at_2] +[visit_exp i_2] +[visit_id i_2] +[visit_exp `CONST`_instr{numtype#290}((at' : addrtype <: numtype), `%`_num_{i#38724}(n))] +[visit_exp numtype#290] +[visit_id numtype#290] +[visit_exp ((at' : addrtype <: numtype), `%`_num_{i#38724}(n))] +[visit_exp (at' : addrtype <: numtype)] +[visit_exp at'] +[visit_id at'] +[visit_exp `%`_num_{i#38724}(n)] +[visit_exp i#38724] +[visit_id i#38724] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `MEMORY.COPY`_instr{memidx#133}(x_1, x_2)] +[visit_exp memidx#133] +[visit_id memidx#133] +[visit_exp (x_1, x_2)] +[visit_exp x_1] +[visit_id x_1] +[visit_exp x_2] +[visit_id x_2] +[visit_exp [`CONST`_instr{numtype#292}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#294}((at_2 : addrtype <: numtype), i_2) `LOAD`_instr{`numtype?#16`, memidx#136, memarg#81}(`I32`_numtype, ?(`%_%`_loadop_{sz#483, sx#384, i#38802}(`%`_sz{i#38809}(8), `U`_sx)), x_2, $memarg0) `STORE`_instr{`numtype?#17`, memidx#138, memarg#83}(`I32`_numtype, ?(`%`_storeop_{sz#496, i#38864}(`%`_sz{i#38865}(8))), x_1, $memarg0) `CONST`_instr{numtype#298}((at_1 : addrtype <: numtype), `%`_num_{i#38915}((i_1!`%`_num_{i#38905}.0 + 1))) `CONST`_instr{numtype#300}((at_2 : addrtype <: numtype), `%`_num_{i#38951}((i_2!`%`_num_{i#38941}.0 + 1))) `CONST`_instr{numtype#302}((at' : addrtype <: numtype), `%`_num_{i#38973}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `MEMORY.COPY`_instr{memidx#140}(x_1, x_2)]] +[visit_exp `CONST`_instr{numtype#292}((at_1 : addrtype <: numtype), i_1)] +[visit_exp numtype#292] +[visit_id numtype#292] +[visit_exp ((at_1 : addrtype <: numtype), i_1)] +[visit_exp (at_1 : addrtype <: numtype)] +[visit_exp at_1] +[visit_id at_1] not free +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp `CONST`_instr{numtype#294}((at_2 : addrtype <: numtype), i_2)] +[visit_exp numtype#294] +[visit_id numtype#294] +[visit_exp ((at_2 : addrtype <: numtype), i_2)] +[visit_exp (at_2 : addrtype <: numtype)] +[visit_exp at_2] +[visit_id at_2] not free +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp `LOAD`_instr{`numtype?#16`, memidx#136, memarg#81}(`I32`_numtype, ?(`%_%`_loadop_{sz#483, sx#384, i#38802}(`%`_sz{i#38809}(8), `U`_sx)), x_2, $memarg0)] +[visit_exp `numtype?#16`] +[visit_id numtype?#16] +[visit_exp memidx#136] +[visit_id memidx#136] +[visit_exp memarg#81] +[visit_id memarg#81] +[visit_exp (`I32`_numtype, ?(`%_%`_loadop_{sz#483, sx#384, i#38802}(`%`_sz{i#38809}(8), `U`_sx)), x_2, $memarg0)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp ?(`%_%`_loadop_{sz#483, sx#384, i#38802}(`%`_sz{i#38809}(8), `U`_sx))] +[visit_exp `%_%`_loadop_{sz#483, sx#384, i#38802}(`%`_sz{i#38809}(8), `U`_sx)] +[visit_exp sz#483] +[visit_id sz#483] +[visit_exp sx#384] +[visit_id sx#384] +[visit_exp i#38802] +[visit_id i#38802] +[visit_exp (`%`_sz{i#38809}(8), `U`_sx)] +[visit_exp `%`_sz{i#38809}(8)] +[visit_exp i#38809] +[visit_id i#38809] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp x_2] +[visit_id x_2] not free +[visit_exp $memarg0] +[visit_exp `STORE`_instr{`numtype?#17`, memidx#138, memarg#83}(`I32`_numtype, ?(`%`_storeop_{sz#496, i#38864}(`%`_sz{i#38865}(8))), x_1, $memarg0)] +[visit_exp `numtype?#17`] +[visit_id numtype?#17] +[visit_exp memidx#138] +[visit_id memidx#138] +[visit_exp memarg#83] +[visit_id memarg#83] +[visit_exp (`I32`_numtype, ?(`%`_storeop_{sz#496, i#38864}(`%`_sz{i#38865}(8))), x_1, $memarg0)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp ?(`%`_storeop_{sz#496, i#38864}(`%`_sz{i#38865}(8)))] +[visit_exp `%`_storeop_{sz#496, i#38864}(`%`_sz{i#38865}(8))] +[visit_exp sz#496] +[visit_id sz#496] +[visit_exp i#38864] +[visit_id i#38864] +[visit_exp (`%`_sz{i#38865}(8))] +[visit_exp `%`_sz{i#38865}(8)] +[visit_exp i#38865] +[visit_id i#38865] +[visit_exp (8)] +[visit_exp 8] +[visit_exp x_1] +[visit_id x_1] not free +[visit_exp $memarg0] +[visit_exp `CONST`_instr{numtype#298}((at_1 : addrtype <: numtype), `%`_num_{i#38915}((i_1!`%`_num_{i#38905}.0 + 1)))] +[visit_exp numtype#298] +[visit_id numtype#298] +[visit_exp ((at_1 : addrtype <: numtype), `%`_num_{i#38915}((i_1!`%`_num_{i#38905}.0 + 1)))] +[visit_exp (at_1 : addrtype <: numtype)] +[visit_exp at_1] +[visit_id at_1] not free +[visit_exp `%`_num_{i#38915}((i_1!`%`_num_{i#38905}.0 + 1))] +[visit_exp i#38915] +[visit_id i#38915] +[visit_exp ((i_1!`%`_num_{i#38905}.0 + 1))] +[visit_exp (i_1!`%`_num_{i#38905}.0 + 1)] +[visit_exp i_1!`%`_num_{i#38905}.0] +[visit_exp i_1!`%`_num_{i#38905}] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i#38905] +[visit_id i#38905] +[visit_exp 1] +[visit_exp `CONST`_instr{numtype#300}((at_2 : addrtype <: numtype), `%`_num_{i#38951}((i_2!`%`_num_{i#38941}.0 + 1)))] +[visit_exp numtype#300] +[visit_id numtype#300] +[visit_exp ((at_2 : addrtype <: numtype), `%`_num_{i#38951}((i_2!`%`_num_{i#38941}.0 + 1)))] +[visit_exp (at_2 : addrtype <: numtype)] +[visit_exp at_2] +[visit_id at_2] not free +[visit_exp `%`_num_{i#38951}((i_2!`%`_num_{i#38941}.0 + 1))] +[visit_exp i#38951] +[visit_id i#38951] +[visit_exp ((i_2!`%`_num_{i#38941}.0 + 1))] +[visit_exp (i_2!`%`_num_{i#38941}.0 + 1)] +[visit_exp i_2!`%`_num_{i#38941}.0] +[visit_exp i_2!`%`_num_{i#38941}] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp i#38941] +[visit_id i#38941] +[visit_exp 1] +[visit_exp `CONST`_instr{numtype#302}((at' : addrtype <: numtype), `%`_num_{i#38973}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp numtype#302] +[visit_id numtype#302] +[visit_exp ((at' : addrtype <: numtype), `%`_num_{i#38973}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp (at' : addrtype <: numtype)] +[visit_exp at'] +[visit_id at'] not free +[visit_exp `%`_num_{i#38973}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp i#38973] +[visit_id i#38973] +[visit_exp ((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp (((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp ((n : nat <:> int) - (1 : nat <:> int))] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp `MEMORY.COPY`_instr{memidx#140}(x_1, x_2)] +[visit_exp memidx#140] +[visit_id memidx#140] +[visit_exp (x_1, x_2)] +[visit_exp x_1] +[visit_id x_1] not free +[visit_exp x_2] +[visit_id x_2] not free +[visit_exp (i_1!`%`_num_{i#39019}.0 <= i_2!`%`_num_{i#39029}.0)] +[visit_exp i_1!`%`_num_{i#39019}.0] +[visit_exp i_1!`%`_num_{i#39019}] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i#39019] +[visit_id i#39019] +[visit_exp i_2!`%`_num_{i#39029}.0] +[visit_exp i_2!`%`_num_{i#39029}] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp i#39029] +[visit_id i#39029] +[check_dims] at' at_1 at_2 i#39081 i#39135 i#39145 i#39171 i#39181 i#39207 i#39214 i#39269 i#39270 i#39330 i_1 i_2 instr*#1590 memarg#85 memarg#87 memidx#143 memidx#146 memidx#148 memidx#150 n numtype#304 numtype#306 numtype#308 numtype#310 numtype#312 numtype#316 numtype#318 numtype#320 numtype?#18 numtype?#19 state#1475 sx#402 sz#514 sz#527 x_1 x_2 z +[visit_exp `%;%`_config{state#1475, `instr*#1590`}(z, [`CONST`_instr{numtype#304}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#306}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#308}((at' : addrtype <: numtype), `%`_num_{i#39081}(n)) `MEMORY.COPY`_instr{memidx#143}(x_1, x_2)])] +[visit_exp state#1475] +[visit_id state#1475] +[visit_exp `instr*#1590`] +[visit_id instr*#1590] +[visit_exp (z, [`CONST`_instr{numtype#304}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#306}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#308}((at' : addrtype <: numtype), `%`_num_{i#39081}(n)) `MEMORY.COPY`_instr{memidx#143}(x_1, x_2)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#304}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#306}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#308}((at' : addrtype <: numtype), `%`_num_{i#39081}(n)) `MEMORY.COPY`_instr{memidx#143}(x_1, x_2)]] +[visit_exp `CONST`_instr{numtype#304}((at_1 : addrtype <: numtype), i_1)] +[visit_exp numtype#304] +[visit_id numtype#304] +[visit_exp ((at_1 : addrtype <: numtype), i_1)] +[visit_exp (at_1 : addrtype <: numtype)] +[visit_exp at_1] +[visit_id at_1] +[visit_exp i_1] +[visit_id i_1] +[visit_exp `CONST`_instr{numtype#306}((at_2 : addrtype <: numtype), i_2)] +[visit_exp numtype#306] +[visit_id numtype#306] +[visit_exp ((at_2 : addrtype <: numtype), i_2)] +[visit_exp (at_2 : addrtype <: numtype)] +[visit_exp at_2] +[visit_id at_2] +[visit_exp i_2] +[visit_id i_2] +[visit_exp `CONST`_instr{numtype#308}((at' : addrtype <: numtype), `%`_num_{i#39081}(n))] +[visit_exp numtype#308] +[visit_id numtype#308] +[visit_exp ((at' : addrtype <: numtype), `%`_num_{i#39081}(n))] +[visit_exp (at' : addrtype <: numtype)] +[visit_exp at'] +[visit_id at'] +[visit_exp `%`_num_{i#39081}(n)] +[visit_exp i#39081] +[visit_id i#39081] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `MEMORY.COPY`_instr{memidx#143}(x_1, x_2)] +[visit_exp memidx#143] +[visit_id memidx#143] +[visit_exp (x_1, x_2)] +[visit_exp x_1] +[visit_id x_1] +[visit_exp x_2] +[visit_id x_2] +[visit_exp [`CONST`_instr{numtype#310}((at_1 : addrtype <: numtype), `%`_num_{i#39145}(((((i_1!`%`_num_{i#39135}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `CONST`_instr{numtype#312}((at_2 : addrtype <: numtype), `%`_num_{i#39181}(((((i_2!`%`_num_{i#39171}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `LOAD`_instr{`numtype?#18`, memidx#146, memarg#85}(`I32`_numtype, ?(`%_%`_loadop_{sz#514, sx#402, i#39207}(`%`_sz{i#39214}(8), `U`_sx)), x_2, $memarg0) `STORE`_instr{`numtype?#19`, memidx#148, memarg#87}(`I32`_numtype, ?(`%`_storeop_{sz#527, i#39269}(`%`_sz{i#39270}(8))), x_1, $memarg0) `CONST`_instr{numtype#316}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#318}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#320}((at' : addrtype <: numtype), `%`_num_{i#39330}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `MEMORY.COPY`_instr{memidx#150}(x_1, x_2)]] +[visit_exp `CONST`_instr{numtype#310}((at_1 : addrtype <: numtype), `%`_num_{i#39145}(((((i_1!`%`_num_{i#39135}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp numtype#310] +[visit_id numtype#310] +[visit_exp ((at_1 : addrtype <: numtype), `%`_num_{i#39145}(((((i_1!`%`_num_{i#39135}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp (at_1 : addrtype <: numtype)] +[visit_exp at_1] +[visit_id at_1] not free +[visit_exp `%`_num_{i#39145}(((((i_1!`%`_num_{i#39135}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp i#39145] +[visit_id i#39145] +[visit_exp (((((i_1!`%`_num_{i#39135}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp ((((i_1!`%`_num_{i#39135}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp (((i_1!`%`_num_{i#39135}.0 + n) : nat <:> int) - (1 : nat <:> int))] +[visit_exp ((i_1!`%`_num_{i#39135}.0 + n) : nat <:> int)] +[visit_exp (i_1!`%`_num_{i#39135}.0 + n)] +[visit_exp i_1!`%`_num_{i#39135}.0] +[visit_exp i_1!`%`_num_{i#39135}] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i#39135] +[visit_id i#39135] +[visit_exp n] +[visit_id n] not free +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp `CONST`_instr{numtype#312}((at_2 : addrtype <: numtype), `%`_num_{i#39181}(((((i_2!`%`_num_{i#39171}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp numtype#312] +[visit_id numtype#312] +[visit_exp ((at_2 : addrtype <: numtype), `%`_num_{i#39181}(((((i_2!`%`_num_{i#39171}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp (at_2 : addrtype <: numtype)] +[visit_exp at_2] +[visit_id at_2] not free +[visit_exp `%`_num_{i#39181}(((((i_2!`%`_num_{i#39171}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp i#39181] +[visit_id i#39181] +[visit_exp (((((i_2!`%`_num_{i#39171}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp ((((i_2!`%`_num_{i#39171}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp (((i_2!`%`_num_{i#39171}.0 + n) : nat <:> int) - (1 : nat <:> int))] +[visit_exp ((i_2!`%`_num_{i#39171}.0 + n) : nat <:> int)] +[visit_exp (i_2!`%`_num_{i#39171}.0 + n)] +[visit_exp i_2!`%`_num_{i#39171}.0] +[visit_exp i_2!`%`_num_{i#39171}] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp i#39171] +[visit_id i#39171] +[visit_exp n] +[visit_id n] not free +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp `LOAD`_instr{`numtype?#18`, memidx#146, memarg#85}(`I32`_numtype, ?(`%_%`_loadop_{sz#514, sx#402, i#39207}(`%`_sz{i#39214}(8), `U`_sx)), x_2, $memarg0)] +[visit_exp `numtype?#18`] +[visit_id numtype?#18] +[visit_exp memidx#146] +[visit_id memidx#146] +[visit_exp memarg#85] +[visit_id memarg#85] +[visit_exp (`I32`_numtype, ?(`%_%`_loadop_{sz#514, sx#402, i#39207}(`%`_sz{i#39214}(8), `U`_sx)), x_2, $memarg0)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp ?(`%_%`_loadop_{sz#514, sx#402, i#39207}(`%`_sz{i#39214}(8), `U`_sx))] +[visit_exp `%_%`_loadop_{sz#514, sx#402, i#39207}(`%`_sz{i#39214}(8), `U`_sx)] +[visit_exp sz#514] +[visit_id sz#514] +[visit_exp sx#402] +[visit_id sx#402] +[visit_exp i#39207] +[visit_id i#39207] +[visit_exp (`%`_sz{i#39214}(8), `U`_sx)] +[visit_exp `%`_sz{i#39214}(8)] +[visit_exp i#39214] +[visit_id i#39214] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp x_2] +[visit_id x_2] not free +[visit_exp $memarg0] +[visit_exp `STORE`_instr{`numtype?#19`, memidx#148, memarg#87}(`I32`_numtype, ?(`%`_storeop_{sz#527, i#39269}(`%`_sz{i#39270}(8))), x_1, $memarg0)] +[visit_exp `numtype?#19`] +[visit_id numtype?#19] +[visit_exp memidx#148] +[visit_id memidx#148] +[visit_exp memarg#87] +[visit_id memarg#87] +[visit_exp (`I32`_numtype, ?(`%`_storeop_{sz#527, i#39269}(`%`_sz{i#39270}(8))), x_1, $memarg0)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp ?(`%`_storeop_{sz#527, i#39269}(`%`_sz{i#39270}(8)))] +[visit_exp `%`_storeop_{sz#527, i#39269}(`%`_sz{i#39270}(8))] +[visit_exp sz#527] +[visit_id sz#527] +[visit_exp i#39269] +[visit_id i#39269] +[visit_exp (`%`_sz{i#39270}(8))] +[visit_exp `%`_sz{i#39270}(8)] +[visit_exp i#39270] +[visit_id i#39270] +[visit_exp (8)] +[visit_exp 8] +[visit_exp x_1] +[visit_id x_1] not free +[visit_exp $memarg0] +[visit_exp `CONST`_instr{numtype#316}((at_1 : addrtype <: numtype), i_1)] +[visit_exp numtype#316] +[visit_id numtype#316] +[visit_exp ((at_1 : addrtype <: numtype), i_1)] +[visit_exp (at_1 : addrtype <: numtype)] +[visit_exp at_1] +[visit_id at_1] not free +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp `CONST`_instr{numtype#318}((at_2 : addrtype <: numtype), i_2)] +[visit_exp numtype#318] +[visit_id numtype#318] +[visit_exp ((at_2 : addrtype <: numtype), i_2)] +[visit_exp (at_2 : addrtype <: numtype)] +[visit_exp at_2] +[visit_id at_2] not free +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp `CONST`_instr{numtype#320}((at' : addrtype <: numtype), `%`_num_{i#39330}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp numtype#320] +[visit_id numtype#320] +[visit_exp ((at' : addrtype <: numtype), `%`_num_{i#39330}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp (at' : addrtype <: numtype)] +[visit_exp at'] +[visit_id at'] not free +[visit_exp `%`_num_{i#39330}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp i#39330] +[visit_id i#39330] +[visit_exp ((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp (((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp ((n : nat <:> int) - (1 : nat <:> int))] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp `MEMORY.COPY`_instr{memidx#150}(x_1, x_2)] +[visit_exp memidx#150] +[visit_id memidx#150] +[visit_exp (x_1, x_2)] +[visit_exp x_1] +[visit_id x_1] not free +[visit_exp x_2] +[visit_id x_2] not free +[check_dims] at byte*#1872 byte*#1873 dataidx#17 i i#39410 i#39452 i#39478 instr*#1602 j memidx#153 n numtype#322 numtype#324 numtype#326 state#1487 x y z +[visit_exp `%;%`_config{state#1487, `instr*#1602`}(z, [`CONST`_instr{numtype#322}((at : addrtype <: numtype), i) `CONST`_instr{numtype#324}(`I32`_numtype, j) `CONST`_instr{numtype#326}(`I32`_numtype, `%`_num_{i#39410}(n)) `MEMORY.INIT`_instr{memidx#153, dataidx#17}(x, y)])] +[visit_exp state#1487] +[visit_id state#1487] +[visit_exp `instr*#1602`] +[visit_id instr*#1602] +[visit_exp (z, [`CONST`_instr{numtype#322}((at : addrtype <: numtype), i) `CONST`_instr{numtype#324}(`I32`_numtype, j) `CONST`_instr{numtype#326}(`I32`_numtype, `%`_num_{i#39410}(n)) `MEMORY.INIT`_instr{memidx#153, dataidx#17}(x, y)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#322}((at : addrtype <: numtype), i) `CONST`_instr{numtype#324}(`I32`_numtype, j) `CONST`_instr{numtype#326}(`I32`_numtype, `%`_num_{i#39410}(n)) `MEMORY.INIT`_instr{memidx#153, dataidx#17}(x, y)]] +[visit_exp `CONST`_instr{numtype#322}((at : addrtype <: numtype), i)] +[visit_exp numtype#322] +[visit_id numtype#322] +[visit_exp ((at : addrtype <: numtype), i)] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] +[visit_exp i] +[visit_id i] +[visit_exp `CONST`_instr{numtype#324}(`I32`_numtype, j)] +[visit_exp numtype#324] +[visit_id numtype#324] +[visit_exp (`I32`_numtype, j)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp j] +[visit_id j] +[visit_exp `CONST`_instr{numtype#326}(`I32`_numtype, `%`_num_{i#39410}(n))] +[visit_exp numtype#326] +[visit_id numtype#326] +[visit_exp (`I32`_numtype, `%`_num_{i#39410}(n))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#39410}(n)] +[visit_exp i#39410] +[visit_id i#39410] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `MEMORY.INIT`_instr{memidx#153, dataidx#17}(x, y)] +[visit_exp memidx#153] +[visit_id memidx#153] +[visit_exp dataidx#17] +[visit_id dataidx#17] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] +[visit_exp y] +[visit_id y] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[visit_exp (((i!`%`_num_{i#39452}.0 + n) > |$mem(z, x).`BYTES`_meminst{`byte*#1872`}|) \/ ((j!`%`_num_{i#39478}.0 + n) > |$data(z, y).`BYTES`_datainst{`byte*#1873`}|))] +[visit_exp ((i!`%`_num_{i#39452}.0 + n) > |$mem(z, x).`BYTES`_meminst{`byte*#1872`}|)] +[visit_exp (i!`%`_num_{i#39452}.0 + n)] +[visit_exp i!`%`_num_{i#39452}.0] +[visit_exp i!`%`_num_{i#39452}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#39452] +[visit_id i#39452] +[visit_exp n] +[visit_id n] not free +[visit_exp |$mem(z, x).`BYTES`_meminst{`byte*#1872`}|] +[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1872`}] +[visit_exp $mem(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `byte*#1872`] +[visit_id byte*#1872] +[visit_exp ((j!`%`_num_{i#39478}.0 + n) > |$data(z, y).`BYTES`_datainst{`byte*#1873`}|)] +[visit_exp (j!`%`_num_{i#39478}.0 + n)] +[visit_exp j!`%`_num_{i#39478}.0] +[visit_exp j!`%`_num_{i#39478}] +[visit_exp j] +[visit_id j] not free +[visit_exp i#39478] +[visit_id i#39478] +[visit_exp n] +[visit_id n] not free +[visit_exp |$data(z, y).`BYTES`_datainst{`byte*#1873`}|] +[visit_exp $data(z, y).`BYTES`_datainst{`byte*#1873`}] +[visit_exp $data(z, y)] +[visit_exp z] +[visit_id z] not free +[visit_exp y] +[visit_id y] not free +[visit_exp `byte*#1873`] +[visit_id byte*#1873] +[check_dims] at dataidx#19 i i#39542 instr*#1614 j memidx#155 n numtype#328 numtype#330 numtype#332 state#1499 x y z +[visit_exp `%;%`_config{state#1499, `instr*#1614`}(z, [`CONST`_instr{numtype#328}((at : addrtype <: numtype), i) `CONST`_instr{numtype#330}(`I32`_numtype, j) `CONST`_instr{numtype#332}(`I32`_numtype, `%`_num_{i#39542}(n)) `MEMORY.INIT`_instr{memidx#155, dataidx#19}(x, y)])] +[visit_exp state#1499] +[visit_id state#1499] +[visit_exp `instr*#1614`] +[visit_id instr*#1614] +[visit_exp (z, [`CONST`_instr{numtype#328}((at : addrtype <: numtype), i) `CONST`_instr{numtype#330}(`I32`_numtype, j) `CONST`_instr{numtype#332}(`I32`_numtype, `%`_num_{i#39542}(n)) `MEMORY.INIT`_instr{memidx#155, dataidx#19}(x, y)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#328}((at : addrtype <: numtype), i) `CONST`_instr{numtype#330}(`I32`_numtype, j) `CONST`_instr{numtype#332}(`I32`_numtype, `%`_num_{i#39542}(n)) `MEMORY.INIT`_instr{memidx#155, dataidx#19}(x, y)]] +[visit_exp `CONST`_instr{numtype#328}((at : addrtype <: numtype), i)] +[visit_exp numtype#328] +[visit_id numtype#328] +[visit_exp ((at : addrtype <: numtype), i)] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] +[visit_exp i] +[visit_id i] +[visit_exp `CONST`_instr{numtype#330}(`I32`_numtype, j)] +[visit_exp numtype#330] +[visit_id numtype#330] +[visit_exp (`I32`_numtype, j)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp j] +[visit_id j] +[visit_exp `CONST`_instr{numtype#332}(`I32`_numtype, `%`_num_{i#39542}(n))] +[visit_exp numtype#332] +[visit_id numtype#332] +[visit_exp (`I32`_numtype, `%`_num_{i#39542}(n))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#39542}(n)] +[visit_exp i#39542] +[visit_id i#39542] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `MEMORY.INIT`_instr{memidx#155, dataidx#19}(x, y)] +[visit_exp memidx#155] +[visit_id memidx#155] +[visit_exp dataidx#19] +[visit_id dataidx#19] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] +[visit_exp y] +[visit_id y] +[visit_exp []] +[visit_exp (n = 0)] +[visit_exp n] +[visit_id n] not free +[visit_exp 0] +[check_dims] at byte*#1874 dataidx#21 dataidx#23 i i#39622 i#39696 i#39714 i#39715 i#39757 i#39758 i#39798 i#39808 i#39834 i#39844 i#39866 instr*#1626 j memarg#89 memidx#157 memidx#159 memidx#161 n numtype#334 numtype#336 numtype#338 numtype#340 numtype#342 numtype#345 numtype#347 numtype#349 numtype?#20 state#1511 sz#540 x y z +[visit_exp `%;%`_config{state#1511, `instr*#1626`}(z, [`CONST`_instr{numtype#334}((at : addrtype <: numtype), i) `CONST`_instr{numtype#336}(`I32`_numtype, j) `CONST`_instr{numtype#338}(`I32`_numtype, `%`_num_{i#39622}(n)) `MEMORY.INIT`_instr{memidx#157, dataidx#21}(x, y)])] +[visit_exp state#1511] +[visit_id state#1511] +[visit_exp `instr*#1626`] +[visit_id instr*#1626] +[visit_exp (z, [`CONST`_instr{numtype#334}((at : addrtype <: numtype), i) `CONST`_instr{numtype#336}(`I32`_numtype, j) `CONST`_instr{numtype#338}(`I32`_numtype, `%`_num_{i#39622}(n)) `MEMORY.INIT`_instr{memidx#157, dataidx#21}(x, y)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#334}((at : addrtype <: numtype), i) `CONST`_instr{numtype#336}(`I32`_numtype, j) `CONST`_instr{numtype#338}(`I32`_numtype, `%`_num_{i#39622}(n)) `MEMORY.INIT`_instr{memidx#157, dataidx#21}(x, y)]] +[visit_exp `CONST`_instr{numtype#334}((at : addrtype <: numtype), i)] +[visit_exp numtype#334] +[visit_id numtype#334] +[visit_exp ((at : addrtype <: numtype), i)] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] +[visit_exp i] +[visit_id i] +[visit_exp `CONST`_instr{numtype#336}(`I32`_numtype, j)] +[visit_exp numtype#336] +[visit_id numtype#336] +[visit_exp (`I32`_numtype, j)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp j] +[visit_id j] +[visit_exp `CONST`_instr{numtype#338}(`I32`_numtype, `%`_num_{i#39622}(n))] +[visit_exp numtype#338] +[visit_id numtype#338] +[visit_exp (`I32`_numtype, `%`_num_{i#39622}(n))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#39622}(n)] +[visit_exp i#39622] +[visit_id i#39622] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `MEMORY.INIT`_instr{memidx#157, dataidx#21}(x, y)] +[visit_exp memidx#157] +[visit_id memidx#157] +[visit_exp dataidx#21] +[visit_id dataidx#21] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] +[visit_exp y] +[visit_id y] +[visit_exp [`CONST`_instr{numtype#340}((at : addrtype <: numtype), i) `CONST`_instr{numtype#342}(`I32`_numtype, `%`_num_{i#39715}($data(z, y).`BYTES`_datainst{`byte*#1874`}[j!`%`_num_{i#39696}.0]!`%`_byte{i#39714}.0)) `STORE`_instr{`numtype?#20`, memidx#159, memarg#89}(`I32`_numtype, ?(`%`_storeop_{sz#540, i#39757}(`%`_sz{i#39758}(8))), x, $memarg0) `CONST`_instr{numtype#345}((at : addrtype <: numtype), `%`_num_{i#39808}((i!`%`_num_{i#39798}.0 + 1))) `CONST`_instr{numtype#347}(`I32`_numtype, `%`_num_{i#39844}((j!`%`_num_{i#39834}.0 + 1))) `CONST`_instr{numtype#349}(`I32`_numtype, `%`_num_{i#39866}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `MEMORY.INIT`_instr{memidx#161, dataidx#23}(x, y)]] +[visit_exp `CONST`_instr{numtype#340}((at : addrtype <: numtype), i)] +[visit_exp numtype#340] +[visit_id numtype#340] +[visit_exp ((at : addrtype <: numtype), i)] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] not free +[visit_exp i] +[visit_id i] not free +[visit_exp `CONST`_instr{numtype#342}(`I32`_numtype, `%`_num_{i#39715}($data(z, y).`BYTES`_datainst{`byte*#1874`}[j!`%`_num_{i#39696}.0]!`%`_byte{i#39714}.0))] +[visit_exp numtype#342] +[visit_id numtype#342] +[visit_exp (`I32`_numtype, `%`_num_{i#39715}($data(z, y).`BYTES`_datainst{`byte*#1874`}[j!`%`_num_{i#39696}.0]!`%`_byte{i#39714}.0))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#39715}($data(z, y).`BYTES`_datainst{`byte*#1874`}[j!`%`_num_{i#39696}.0]!`%`_byte{i#39714}.0)] +[visit_exp i#39715] +[visit_id i#39715] +[visit_exp ($data(z, y).`BYTES`_datainst{`byte*#1874`}[j!`%`_num_{i#39696}.0]!`%`_byte{i#39714}.0)] +[visit_exp $data(z, y).`BYTES`_datainst{`byte*#1874`}[j!`%`_num_{i#39696}.0]!`%`_byte{i#39714}.0] +[visit_exp $data(z, y).`BYTES`_datainst{`byte*#1874`}[j!`%`_num_{i#39696}.0]!`%`_byte{i#39714}] +[visit_exp $data(z, y).`BYTES`_datainst{`byte*#1874`}[j!`%`_num_{i#39696}.0]] +[visit_exp $data(z, y).`BYTES`_datainst{`byte*#1874`}] +[visit_exp $data(z, y)] +[visit_exp z] +[visit_id z] not free +[visit_exp y] +[visit_id y] not free +[visit_exp `byte*#1874`] +[visit_id byte*#1874] +[visit_exp j!`%`_num_{i#39696}.0] +[visit_exp j!`%`_num_{i#39696}] +[visit_exp j] +[visit_id j] not free +[visit_exp i#39696] +[visit_id i#39696] +[visit_exp i#39714] +[visit_id i#39714] +[visit_exp `STORE`_instr{`numtype?#20`, memidx#159, memarg#89}(`I32`_numtype, ?(`%`_storeop_{sz#540, i#39757}(`%`_sz{i#39758}(8))), x, $memarg0)] +[visit_exp `numtype?#20`] +[visit_id numtype?#20] +[visit_exp memidx#159] +[visit_id memidx#159] +[visit_exp memarg#89] +[visit_id memarg#89] +[visit_exp (`I32`_numtype, ?(`%`_storeop_{sz#540, i#39757}(`%`_sz{i#39758}(8))), x, $memarg0)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp ?(`%`_storeop_{sz#540, i#39757}(`%`_sz{i#39758}(8)))] +[visit_exp `%`_storeop_{sz#540, i#39757}(`%`_sz{i#39758}(8))] +[visit_exp sz#540] +[visit_id sz#540] +[visit_exp i#39757] +[visit_id i#39757] +[visit_exp (`%`_sz{i#39758}(8))] +[visit_exp `%`_sz{i#39758}(8)] +[visit_exp i#39758] +[visit_id i#39758] +[visit_exp (8)] +[visit_exp 8] +[visit_exp x] +[visit_id x] not free +[visit_exp $memarg0] +[visit_exp `CONST`_instr{numtype#345}((at : addrtype <: numtype), `%`_num_{i#39808}((i!`%`_num_{i#39798}.0 + 1)))] +[visit_exp numtype#345] +[visit_id numtype#345] +[visit_exp ((at : addrtype <: numtype), `%`_num_{i#39808}((i!`%`_num_{i#39798}.0 + 1)))] +[visit_exp (at : addrtype <: numtype)] +[visit_exp at] +[visit_id at] not free +[visit_exp `%`_num_{i#39808}((i!`%`_num_{i#39798}.0 + 1))] +[visit_exp i#39808] +[visit_id i#39808] +[visit_exp ((i!`%`_num_{i#39798}.0 + 1))] +[visit_exp (i!`%`_num_{i#39798}.0 + 1)] +[visit_exp i!`%`_num_{i#39798}.0] +[visit_exp i!`%`_num_{i#39798}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#39798] +[visit_id i#39798] +[visit_exp 1] +[visit_exp `CONST`_instr{numtype#347}(`I32`_numtype, `%`_num_{i#39844}((j!`%`_num_{i#39834}.0 + 1)))] +[visit_exp numtype#347] +[visit_id numtype#347] +[visit_exp (`I32`_numtype, `%`_num_{i#39844}((j!`%`_num_{i#39834}.0 + 1)))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#39844}((j!`%`_num_{i#39834}.0 + 1))] +[visit_exp i#39844] +[visit_id i#39844] +[visit_exp ((j!`%`_num_{i#39834}.0 + 1))] +[visit_exp (j!`%`_num_{i#39834}.0 + 1)] +[visit_exp j!`%`_num_{i#39834}.0] +[visit_exp j!`%`_num_{i#39834}] +[visit_exp j] +[visit_id j] not free +[visit_exp i#39834] +[visit_id i#39834] +[visit_exp 1] +[visit_exp `CONST`_instr{numtype#349}(`I32`_numtype, `%`_num_{i#39866}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp numtype#349] +[visit_id numtype#349] +[visit_exp (`I32`_numtype, `%`_num_{i#39866}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#39866}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp i#39866] +[visit_id i#39866] +[visit_exp ((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp (((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp ((n : nat <:> int) - (1 : nat <:> int))] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp `MEMORY.INIT`_instr{memidx#161, dataidx#23}(x, y)] +[visit_exp memidx#161] +[visit_id memidx#161] +[visit_exp dataidx#23] +[visit_id dataidx#23] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] not free +[visit_exp y] +[visit_id y] not free +[check_dims] dataidx#25 instr*#1638 instr*#1650 state#1523 state#1535 x z +[visit_exp `%;%`_config{state#1523, `instr*#1638`}(z, [`DATA.DROP`_instr{dataidx#25}(x)])] +[visit_exp state#1523] +[visit_id state#1523] +[visit_exp `instr*#1638`] +[visit_id instr*#1638] +[visit_exp (z, [`DATA.DROP`_instr{dataidx#25}(x)])] +[visit_exp z] +[visit_id z] +[visit_exp [`DATA.DROP`_instr{dataidx#25}(x)]] +[visit_exp `DATA.DROP`_instr{dataidx#25}(x)] +[visit_exp dataidx#25] +[visit_id dataidx#25] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%;%`_config{state#1535, `instr*#1650`}($with_data(z, x, []), [])] +[visit_exp state#1535] +[visit_id state#1535] +[visit_exp `instr*#1650`] +[visit_id instr*#1650] +[visit_exp ($with_data(z, x, []), [])] +[visit_exp $with_data(z, x, [])] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp []] +[visit_exp []] +[check_dims] heaptype#1343 heaptype#1345 instr*#1662 state#1547 typeidx#1555 x z +[visit_exp `%;%`_config{state#1547, `instr*#1662`}(z, [`REF.NULL`_instr{heaptype#1343}(`_IDX`_heaptype{typeidx#1555}(x))])] +[visit_exp state#1547] +[visit_id state#1547] +[visit_exp `instr*#1662`] +[visit_id instr*#1662] +[visit_exp (z, [`REF.NULL`_instr{heaptype#1343}(`_IDX`_heaptype{typeidx#1555}(x))])] +[visit_exp z] +[visit_id z] +[visit_exp [`REF.NULL`_instr{heaptype#1343}(`_IDX`_heaptype{typeidx#1555}(x))]] +[visit_exp `REF.NULL`_instr{heaptype#1343}(`_IDX`_heaptype{typeidx#1555}(x))] +[visit_exp heaptype#1343] +[visit_id heaptype#1343] +[visit_exp (`_IDX`_heaptype{typeidx#1555}(x))] +[visit_exp `_IDX`_heaptype{typeidx#1555}(x)] +[visit_exp typeidx#1555] +[visit_id typeidx#1555] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp [`REF.NULL`_instr{heaptype#1345}(($type(z, x) : deftype <: heaptype))]] +[visit_exp `REF.NULL`_instr{heaptype#1345}(($type(z, x) : deftype <: heaptype))] +[visit_exp heaptype#1345] +[visit_id heaptype#1345] +[visit_exp (($type(z, x) : deftype <: heaptype))] +[visit_exp ($type(z, x) : deftype <: heaptype)] +[visit_exp $type(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[check_dims] funcaddr#17 funcaddr*#4 funcidx#2841 i#39970 instr*#1674 state#1559 x z +[visit_exp `%;%`_config{state#1559, `instr*#1674`}(z, [`REF.FUNC`_instr{funcidx#2841}(x)])] +[visit_exp state#1559] +[visit_id state#1559] +[visit_exp `instr*#1674`] +[visit_id instr*#1674] +[visit_exp (z, [`REF.FUNC`_instr{funcidx#2841}(x)])] +[visit_exp z] +[visit_id z] +[visit_exp [`REF.FUNC`_instr{funcidx#2841}(x)]] +[visit_exp `REF.FUNC`_instr{funcidx#2841}(x)] +[visit_exp funcidx#2841] +[visit_id funcidx#2841] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp [`REF.FUNC_ADDR`_instr{funcaddr#17}($moduleinst(z).`FUNCS`_moduleinst{`funcaddr*#4`}[x!`%`_idx{i#39970}.0])]] +[visit_exp `REF.FUNC_ADDR`_instr{funcaddr#17}($moduleinst(z).`FUNCS`_moduleinst{`funcaddr*#4`}[x!`%`_idx{i#39970}.0])] +[visit_exp funcaddr#17] +[visit_id funcaddr#17] +[visit_exp ($moduleinst(z).`FUNCS`_moduleinst{`funcaddr*#4`}[x!`%`_idx{i#39970}.0])] +[visit_exp $moduleinst(z).`FUNCS`_moduleinst{`funcaddr*#4`}[x!`%`_idx{i#39970}.0]] +[visit_exp $moduleinst(z).`FUNCS`_moduleinst{`funcaddr*#4`}] +[visit_exp $moduleinst(z)] +[visit_exp z] +[visit_id z] not free +[visit_exp `funcaddr*#4`] +[visit_id funcaddr*#4] +[visit_exp x!`%`_idx{i#39970}.0] +[visit_exp x!`%`_idx{i#39970}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#39970] +[visit_id i#39970] +[check_dims] i numtype#351 u31#3 +[visit_exp [`CONST`_instr{numtype#351}(`I32`_numtype, i) `REF.I31`_instr]] +[visit_exp `CONST`_instr{numtype#351}(`I32`_numtype, i)] +[visit_exp numtype#351] +[visit_id numtype#351] +[visit_exp (`I32`_numtype, i)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i] +[visit_id i] +[visit_exp `REF.I31`_instr] +[visit_exp ()] +[visit_exp [`REF.I31_NUM`_instr{u31#3}($wrap__(32, 31, i))]] +[visit_exp `REF.I31_NUM`_instr{u31#3}($wrap__(32, 31, i))] +[visit_exp u31#3] +[visit_id u31#3] +[visit_exp ($wrap__(32, 31, i))] +[visit_exp $wrap__(32, 31, i)] +[visit_exp 32] +[visit_exp 31] +[visit_exp i] +[visit_id i] not free +[check_dims] heaptype#1347 ht i#40032 numtype#353 ref +[visit_exp [(ref : ref <: instr) `REF.IS_NULL`_instr]] +[visit_exp (ref : ref <: instr)] +[visit_exp ref] +[visit_id ref] +[visit_exp `REF.IS_NULL`_instr] +[visit_exp ()] +[visit_exp [`CONST`_instr{numtype#353}(`I32`_numtype, `%`_num_{i#40032}(1))]] +[visit_exp `CONST`_instr{numtype#353}(`I32`_numtype, `%`_num_{i#40032}(1))] +[visit_exp numtype#353] +[visit_id numtype#353] +[visit_exp (`I32`_numtype, `%`_num_{i#40032}(1))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#40032}(1)] +[visit_exp i#40032] +[visit_id i#40032] +[visit_exp (1)] +[visit_exp 1] +[visit_exp (ref = `REF.NULL`_ref{heaptype#1347}(ht))] +[visit_exp ref] +[visit_id ref] not free +[visit_exp `REF.NULL`_ref{heaptype#1347}(ht)] +[visit_exp heaptype#1347] +[visit_id heaptype#1347] +[visit_exp (ht)] +[visit_exp ht] +[visit_id ht] +[check_dims] i#40054 numtype#355 ref +[visit_exp [(ref : ref <: instr) `REF.IS_NULL`_instr]] +[visit_exp (ref : ref <: instr)] +[visit_exp ref] +[visit_id ref] +[visit_exp `REF.IS_NULL`_instr] +[visit_exp ()] +[visit_exp [`CONST`_instr{numtype#355}(`I32`_numtype, `%`_num_{i#40054}(0))]] +[visit_exp `CONST`_instr{numtype#355}(`I32`_numtype, `%`_num_{i#40054}(0))] +[visit_exp numtype#355] +[visit_id numtype#355] +[visit_exp (`I32`_numtype, `%`_num_{i#40054}(0))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#40054}(0)] +[visit_exp i#40054] +[visit_id i#40054] +[visit_exp (0)] +[visit_exp 0] +[check_dims] heaptype#1349 ht ref +[visit_exp [(ref : ref <: instr) `REF.AS_NON_NULL`_instr]] +[visit_exp (ref : ref <: instr)] +[visit_exp ref] +[visit_id ref] +[visit_exp `REF.AS_NON_NULL`_instr] +[visit_exp ()] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[visit_exp (ref = `REF.NULL`_ref{heaptype#1349}(ht))] +[visit_exp ref] +[visit_id ref] not free +[visit_exp `REF.NULL`_ref{heaptype#1349}(ht)] +[visit_exp heaptype#1349] +[visit_id heaptype#1349] +[visit_exp (ht)] +[visit_exp ht] +[visit_id ht] +[check_dims] ref +[visit_exp [(ref : ref <: instr) `REF.AS_NON_NULL`_instr]] +[visit_exp (ref : ref <: instr)] +[visit_exp ref] +[visit_id ref] +[visit_exp `REF.AS_NON_NULL`_instr] +[visit_exp ()] +[visit_exp [(ref : ref <: instr)]] +[visit_exp (ref : ref <: instr)] +[visit_exp ref] +[visit_id ref] not free +[check_dims] heaptype#1351 heaptype#1353 ht_1 ht_2 i#40076 numtype#357 ref_1 ref_2 +[visit_exp [(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr]] +[visit_exp (ref_1 : ref <: instr)] +[visit_exp ref_1] +[visit_id ref_1] +[visit_exp (ref_2 : ref <: instr)] +[visit_exp ref_2] +[visit_id ref_2] +[visit_exp `REF.EQ`_instr] +[visit_exp ()] +[visit_exp [`CONST`_instr{numtype#357}(`I32`_numtype, `%`_num_{i#40076}(1))]] +[visit_exp `CONST`_instr{numtype#357}(`I32`_numtype, `%`_num_{i#40076}(1))] +[visit_exp numtype#357] +[visit_id numtype#357] +[visit_exp (`I32`_numtype, `%`_num_{i#40076}(1))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#40076}(1)] +[visit_exp i#40076] +[visit_id i#40076] +[visit_exp (1)] +[visit_exp 1] +[visit_exp ((ref_1 = `REF.NULL`_ref{heaptype#1351}(ht_1)) /\ (ref_2 = `REF.NULL`_ref{heaptype#1353}(ht_2)))] +[visit_exp (ref_1 = `REF.NULL`_ref{heaptype#1351}(ht_1))] +[visit_exp ref_1] +[visit_id ref_1] not free +[visit_exp `REF.NULL`_ref{heaptype#1351}(ht_1)] +[visit_exp heaptype#1351] +[visit_id heaptype#1351] +[visit_exp (ht_1)] +[visit_exp ht_1] +[visit_id ht_1] +[visit_exp (ref_2 = `REF.NULL`_ref{heaptype#1353}(ht_2))] +[visit_exp ref_2] +[visit_id ref_2] not free +[visit_exp `REF.NULL`_ref{heaptype#1353}(ht_2)] +[visit_exp heaptype#1353] +[visit_id heaptype#1353] +[visit_exp (ht_2)] +[visit_exp ht_2] +[visit_id ht_2] +[check_dims] i#40098 numtype#359 ref_1 ref_2 +[visit_exp [(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr]] +[visit_exp (ref_1 : ref <: instr)] +[visit_exp ref_1] +[visit_id ref_1] +[visit_exp (ref_2 : ref <: instr)] +[visit_exp ref_2] +[visit_id ref_2] +[visit_exp `REF.EQ`_instr] +[visit_exp ()] +[visit_exp [`CONST`_instr{numtype#359}(`I32`_numtype, `%`_num_{i#40098}(1))]] +[visit_exp `CONST`_instr{numtype#359}(`I32`_numtype, `%`_num_{i#40098}(1))] +[visit_exp numtype#359] +[visit_id numtype#359] +[visit_exp (`I32`_numtype, `%`_num_{i#40098}(1))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#40098}(1)] +[visit_exp i#40098] +[visit_id i#40098] +[visit_exp (1)] +[visit_exp 1] +[visit_exp (ref_1 = ref_2)] +[visit_exp ref_1] +[visit_id ref_1] not free +[visit_exp ref_2] +[visit_id ref_2] not free +[check_dims] i#40120 numtype#361 ref_1 ref_2 +[visit_exp [(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr]] +[visit_exp (ref_1 : ref <: instr)] +[visit_exp ref_1] +[visit_id ref_1] +[visit_exp (ref_2 : ref <: instr)] +[visit_exp ref_2] +[visit_id ref_2] +[visit_exp `REF.EQ`_instr] +[visit_exp ()] +[visit_exp [`CONST`_instr{numtype#361}(`I32`_numtype, `%`_num_{i#40120}(0))]] +[visit_exp `CONST`_instr{numtype#361}(`I32`_numtype, `%`_num_{i#40120}(0))] +[visit_exp numtype#361] +[visit_id numtype#361] +[visit_exp (`I32`_numtype, `%`_num_{i#40120}(0))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#40120}(0)] +[visit_exp i#40120] +[visit_id i#40120] +[visit_exp (0)] +[visit_exp 0] +[check_dims] datatype*#24 deftype*#90 deftype*#91 elemtype*#24 f frame#1931 funcidx*#61 globaltype*#25 i#40142 instr*#1686 localtype*#27 memtype*#39 moduleinst#23 numtype#363 ref reftype#3467 resulttype*#35 resulttype?#32 rt rt' s state#1571 store#1913 subtype*#23 tabletype*#32 tagtype*#24 +[visit_exp `%;%`_config{state#1571, `instr*#1686`}(`%;%`_state{store#1913, frame#1931}(s, f), [(ref : ref <: instr) `REF.TEST`_instr{reftype#3467}(rt)])] +[visit_exp state#1571] +[visit_id state#1571] +[visit_exp `instr*#1686`] +[visit_id instr*#1686] +[visit_exp (`%;%`_state{store#1913, frame#1931}(s, f), [(ref : ref <: instr) `REF.TEST`_instr{reftype#3467}(rt)])] +[visit_exp `%;%`_state{store#1913, frame#1931}(s, f)] +[visit_exp store#1913] +[visit_id store#1913] +[visit_exp frame#1931] +[visit_id frame#1931] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp [(ref : ref <: instr) `REF.TEST`_instr{reftype#3467}(rt)]] +[visit_exp (ref : ref <: instr)] +[visit_exp ref] +[visit_id ref] +[visit_exp `REF.TEST`_instr{reftype#3467}(rt)] +[visit_exp reftype#3467] +[visit_id reftype#3467] +[visit_exp (rt)] +[visit_exp rt] +[visit_id rt] +[visit_exp [`CONST`_instr{numtype#363}(`I32`_numtype, `%`_num_{i#40142}(1))]] +[visit_exp `CONST`_instr{numtype#363}(`I32`_numtype, `%`_num_{i#40142}(1))] +[visit_exp numtype#363] +[visit_id numtype#363] +[visit_exp (`I32`_numtype, `%`_num_{i#40142}(1))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#40142}(1)] +[visit_exp i#40142] +[visit_id i#40142] +[visit_exp (1)] +[visit_exp 1] +[visit_exp (s, ref, rt')] +[visit_exp s] +[visit_id s] not free +[visit_exp ref] +[visit_id ref] not free +[visit_exp rt'] +[visit_id rt'] +[visit_exp ({`TYPES`{`deftype*#90`} [], `RECS`{`subtype*#23`} [], `TAGS`{`tagtype*#24`} [], `GLOBALS`{`globaltype*#25`} [], `MEMS`{`memtype*#39`} [], `TABLES`{`tabletype*#32`} [], `FUNCS`{`deftype*#91`} [], `DATAS`{`datatype*#24`} [], `ELEMS`{`elemtype*#24`} [], `LOCALS`{`localtype*#27`} [], `LABELS`{`resulttype*#35`} [], `RETURN`{`resulttype?#32`} ?(), `REFS`{`funcidx*#61`} []}, rt', $inst_reftype(f.`MODULE`_frame{moduleinst#23}, rt))] +[visit_exp {`TYPES`{`deftype*#90`} [], `RECS`{`subtype*#23`} [], `TAGS`{`tagtype*#24`} [], `GLOBALS`{`globaltype*#25`} [], `MEMS`{`memtype*#39`} [], `TABLES`{`tabletype*#32`} [], `FUNCS`{`deftype*#91`} [], `DATAS`{`datatype*#24`} [], `ELEMS`{`elemtype*#24`} [], `LOCALS`{`localtype*#27`} [], `LABELS`{`resulttype*#35`} [], `RETURN`{`resulttype?#32`} ?(), `REFS`{`funcidx*#61`} []}] +[visit_exp `deftype*#90`] +[visit_id deftype*#90] +[visit_exp []] +[visit_exp `subtype*#23`] +[visit_id subtype*#23] +[visit_exp []] +[visit_exp `tagtype*#24`] +[visit_id tagtype*#24] +[visit_exp []] +[visit_exp `globaltype*#25`] +[visit_id globaltype*#25] +[visit_exp []] +[visit_exp `memtype*#39`] +[visit_id memtype*#39] +[visit_exp []] +[visit_exp `tabletype*#32`] +[visit_id tabletype*#32] +[visit_exp []] +[visit_exp `deftype*#91`] +[visit_id deftype*#91] +[visit_exp []] +[visit_exp `datatype*#24`] +[visit_id datatype*#24] +[visit_exp []] +[visit_exp `elemtype*#24`] +[visit_id elemtype*#24] +[visit_exp []] +[visit_exp `localtype*#27`] +[visit_id localtype*#27] +[visit_exp []] +[visit_exp `resulttype*#35`] +[visit_id resulttype*#35] +[visit_exp []] +[visit_exp `resulttype?#32`] +[visit_id resulttype?#32] +[visit_exp ?()] +[visit_exp `funcidx*#61`] +[visit_id funcidx*#61] +[visit_exp []] +[visit_exp rt'] +[visit_id rt'] not free +[visit_exp $inst_reftype(f.`MODULE`_frame{moduleinst#23}, rt)] +[visit_exp f.`MODULE`_frame{moduleinst#23}] +[visit_exp f] +[visit_id f] not free +[visit_exp moduleinst#23] +[visit_id moduleinst#23] +[visit_exp rt] +[visit_id rt] not free +[check_dims] f frame#1943 i#40164 instr*#1698 numtype#365 ref reftype#3469 rt s state#1583 store#1925 +[visit_exp `%;%`_config{state#1583, `instr*#1698`}(`%;%`_state{store#1925, frame#1943}(s, f), [(ref : ref <: instr) `REF.TEST`_instr{reftype#3469}(rt)])] +[visit_exp state#1583] +[visit_id state#1583] +[visit_exp `instr*#1698`] +[visit_id instr*#1698] +[visit_exp (`%;%`_state{store#1925, frame#1943}(s, f), [(ref : ref <: instr) `REF.TEST`_instr{reftype#3469}(rt)])] +[visit_exp `%;%`_state{store#1925, frame#1943}(s, f)] +[visit_exp store#1925] +[visit_id store#1925] +[visit_exp frame#1943] +[visit_id frame#1943] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp [(ref : ref <: instr) `REF.TEST`_instr{reftype#3469}(rt)]] +[visit_exp (ref : ref <: instr)] +[visit_exp ref] +[visit_id ref] +[visit_exp `REF.TEST`_instr{reftype#3469}(rt)] +[visit_exp reftype#3469] +[visit_id reftype#3469] +[visit_exp (rt)] +[visit_exp rt] +[visit_id rt] +[visit_exp [`CONST`_instr{numtype#365}(`I32`_numtype, `%`_num_{i#40164}(0))]] +[visit_exp `CONST`_instr{numtype#365}(`I32`_numtype, `%`_num_{i#40164}(0))] +[visit_exp numtype#365] +[visit_id numtype#365] +[visit_exp (`I32`_numtype, `%`_num_{i#40164}(0))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#40164}(0)] +[visit_exp i#40164] +[visit_id i#40164] +[visit_exp (0)] +[visit_exp 0] +[check_dims] datatype*#25 deftype*#92 deftype*#93 elemtype*#25 f frame#1955 funcidx*#62 globaltype*#26 instr*#1710 localtype*#28 memtype*#40 moduleinst#24 ref reftype#3471 resulttype*#36 resulttype?#33 rt rt' s state#1595 store#1937 subtype*#24 tabletype*#33 tagtype*#25 +[visit_exp `%;%`_config{state#1595, `instr*#1710`}(`%;%`_state{store#1937, frame#1955}(s, f), [(ref : ref <: instr) `REF.CAST`_instr{reftype#3471}(rt)])] +[visit_exp state#1595] +[visit_id state#1595] +[visit_exp `instr*#1710`] +[visit_id instr*#1710] +[visit_exp (`%;%`_state{store#1937, frame#1955}(s, f), [(ref : ref <: instr) `REF.CAST`_instr{reftype#3471}(rt)])] +[visit_exp `%;%`_state{store#1937, frame#1955}(s, f)] +[visit_exp store#1937] +[visit_id store#1937] +[visit_exp frame#1955] +[visit_id frame#1955] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp [(ref : ref <: instr) `REF.CAST`_instr{reftype#3471}(rt)]] +[visit_exp (ref : ref <: instr)] +[visit_exp ref] +[visit_id ref] +[visit_exp `REF.CAST`_instr{reftype#3471}(rt)] +[visit_exp reftype#3471] +[visit_id reftype#3471] +[visit_exp (rt)] +[visit_exp rt] +[visit_id rt] +[visit_exp [(ref : ref <: instr)]] +[visit_exp (ref : ref <: instr)] +[visit_exp ref] +[visit_id ref] not free +[visit_exp (s, ref, rt')] +[visit_exp s] +[visit_id s] not free +[visit_exp ref] +[visit_id ref] not free +[visit_exp rt'] +[visit_id rt'] +[visit_exp ({`TYPES`{`deftype*#92`} [], `RECS`{`subtype*#24`} [], `TAGS`{`tagtype*#25`} [], `GLOBALS`{`globaltype*#26`} [], `MEMS`{`memtype*#40`} [], `TABLES`{`tabletype*#33`} [], `FUNCS`{`deftype*#93`} [], `DATAS`{`datatype*#25`} [], `ELEMS`{`elemtype*#25`} [], `LOCALS`{`localtype*#28`} [], `LABELS`{`resulttype*#36`} [], `RETURN`{`resulttype?#33`} ?(), `REFS`{`funcidx*#62`} []}, rt', $inst_reftype(f.`MODULE`_frame{moduleinst#24}, rt))] +[visit_exp {`TYPES`{`deftype*#92`} [], `RECS`{`subtype*#24`} [], `TAGS`{`tagtype*#25`} [], `GLOBALS`{`globaltype*#26`} [], `MEMS`{`memtype*#40`} [], `TABLES`{`tabletype*#33`} [], `FUNCS`{`deftype*#93`} [], `DATAS`{`datatype*#25`} [], `ELEMS`{`elemtype*#25`} [], `LOCALS`{`localtype*#28`} [], `LABELS`{`resulttype*#36`} [], `RETURN`{`resulttype?#33`} ?(), `REFS`{`funcidx*#62`} []}] +[visit_exp `deftype*#92`] +[visit_id deftype*#92] +[visit_exp []] +[visit_exp `subtype*#24`] +[visit_id subtype*#24] +[visit_exp []] +[visit_exp `tagtype*#25`] +[visit_id tagtype*#25] +[visit_exp []] +[visit_exp `globaltype*#26`] +[visit_id globaltype*#26] +[visit_exp []] +[visit_exp `memtype*#40`] +[visit_id memtype*#40] +[visit_exp []] +[visit_exp `tabletype*#33`] +[visit_id tabletype*#33] +[visit_exp []] +[visit_exp `deftype*#93`] +[visit_id deftype*#93] +[visit_exp []] +[visit_exp `datatype*#25`] +[visit_id datatype*#25] +[visit_exp []] +[visit_exp `elemtype*#25`] +[visit_id elemtype*#25] +[visit_exp []] +[visit_exp `localtype*#28`] +[visit_id localtype*#28] +[visit_exp []] +[visit_exp `resulttype*#36`] +[visit_id resulttype*#36] +[visit_exp []] +[visit_exp `resulttype?#33`] +[visit_id resulttype?#33] +[visit_exp ?()] +[visit_exp `funcidx*#62`] +[visit_id funcidx*#62] +[visit_exp []] +[visit_exp rt'] +[visit_id rt'] not free +[visit_exp $inst_reftype(f.`MODULE`_frame{moduleinst#24}, rt)] +[visit_exp f.`MODULE`_frame{moduleinst#24}] +[visit_exp f] +[visit_id f] not free +[visit_exp moduleinst#24] +[visit_id moduleinst#24] +[visit_exp rt] +[visit_id rt] not free +[check_dims] f frame#1967 instr*#1722 ref reftype#3473 rt s state#1607 store#1949 +[visit_exp `%;%`_config{state#1607, `instr*#1722`}(`%;%`_state{store#1949, frame#1967}(s, f), [(ref : ref <: instr) `REF.CAST`_instr{reftype#3473}(rt)])] +[visit_exp state#1607] +[visit_id state#1607] +[visit_exp `instr*#1722`] +[visit_id instr*#1722] +[visit_exp (`%;%`_state{store#1949, frame#1967}(s, f), [(ref : ref <: instr) `REF.CAST`_instr{reftype#3473}(rt)])] +[visit_exp `%;%`_state{store#1949, frame#1967}(s, f)] +[visit_exp store#1949] +[visit_id store#1949] +[visit_exp frame#1967] +[visit_id frame#1967] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp [(ref : ref <: instr) `REF.CAST`_instr{reftype#3473}(rt)]] +[visit_exp (ref : ref <: instr)] +[visit_exp ref] +[visit_id ref] +[visit_exp `REF.CAST`_instr{reftype#3473}(rt)] +[visit_exp reftype#3473] +[visit_id reftype#3473] +[visit_exp (rt)] +[visit_exp rt] +[visit_id rt] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[check_dims] heaptype#1427 ht sx sx#404 +[visit_exp [`REF.NULL`_instr{heaptype#1427}(ht) `I31.GET`_instr{sx#404}(sx)]] +[visit_exp `REF.NULL`_instr{heaptype#1427}(ht)] +[visit_exp heaptype#1427] +[visit_id heaptype#1427] +[visit_exp (ht)] +[visit_exp ht] +[visit_id ht] +[visit_exp `I31.GET`_instr{sx#404}(sx)] +[visit_exp sx#404] +[visit_id sx#404] +[visit_exp (sx)] +[visit_exp sx] +[visit_id sx] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[check_dims] i numtype#367 sx sx#406 u31#5 +[visit_exp [`REF.I31_NUM`_instr{u31#5}(i) `I31.GET`_instr{sx#406}(sx)]] +[visit_exp `REF.I31_NUM`_instr{u31#5}(i)] +[visit_exp u31#5] +[visit_id u31#5] +[visit_exp (i)] +[visit_exp i] +[visit_id i] +[visit_exp `I31.GET`_instr{sx#406}(sx)] +[visit_exp sx#406] +[visit_id sx#406] +[visit_exp (sx)] +[visit_exp sx] +[visit_id sx] +[visit_exp [`CONST`_instr{numtype#367}(`I32`_numtype, $extend__(31, 32, sx, i))]] +[visit_exp `CONST`_instr{numtype#367}(`I32`_numtype, $extend__(31, 32, sx, i))] +[visit_exp numtype#367] +[visit_id numtype#367] +[visit_exp (`I32`_numtype, $extend__(31, 32, sx, i))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp $extend__(31, 32, sx, i)] +[visit_exp 31] +[visit_exp 32] +[visit_exp sx] +[visit_id sx] not free +[visit_exp i] +[visit_id i] not free +[check_dims] X*#12668 a deftype#9 fieldval*#3 instr*#1734 instr*#1746 mut mut?#1031 n si state#1619 state#1631 storagetype#569 structaddr#3 typeidx#1557 val x z zt +[visit_exp `%;%`_config{state#1619, `instr*#1734`}(z, (val : val <: instr)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr{typeidx#1557}(x)])] +[visit_exp state#1619] +[visit_id state#1619] +[visit_exp `instr*#1734`] +[visit_id instr*#1734] +[visit_exp (z, (val : val <: instr)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr{typeidx#1557}(x)])] +[visit_exp z] +[visit_id z] +[visit_exp (val : val <: instr)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr{typeidx#1557}(x)]] +[visit_exp (val : val <: instr)^n{val <- `val*`}] +[scope_enter val] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp n] +[visit_id n] +[visit_exp `val*`] +[visit_id val*] no dims +[visit_id val*] +[visit_exp [`STRUCT.NEW`_instr{typeidx#1557}(x)]] +[visit_exp `STRUCT.NEW`_instr{typeidx#1557}(x)] +[visit_exp typeidx#1557] +[visit_id typeidx#1557] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%;%`_config{state#1631, `instr*#1746`}($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr{structaddr#3}(a)])] +[visit_exp state#1631] +[visit_id state#1631] +[visit_exp `instr*#1746`] +[visit_id instr*#1746] +[visit_exp ($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr{structaddr#3}(a)])] +[visit_exp $add_structinst(z, [si])] +[visit_exp z] +[visit_id z] not free +[visit_exp [si]] +[visit_exp si] +[visit_id si] +[visit_exp [`REF.STRUCT_ADDR`_instr{structaddr#3}(a)]] +[visit_exp `REF.STRUCT_ADDR`_instr{structaddr#3}(a)] +[visit_exp structaddr#3] +[visit_id structaddr#3] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp ($type(z, x), `STRUCT`_comptype(`%`_list{`X*#12668`}(`%%`_fieldtype{`mut?#1031`, storagetype#569}(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, `mut?#1031` <- `mut?#1031*`, storagetype#569 <- `storagetype#569*`, zt <- `zt*`})))] +[visit_exp $type(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `STRUCT`_comptype(`%`_list{`X*#12668`}(`%%`_fieldtype{`mut?#1031`, storagetype#569}(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, `mut?#1031` <- `mut?#1031*`, storagetype#569 <- `storagetype#569*`, zt <- `zt*`}))] +[visit_exp (`%`_list{`X*#12668`}(`%%`_fieldtype{`mut?#1031`, storagetype#569}(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, `mut?#1031` <- `mut?#1031*`, storagetype#569 <- `storagetype#569*`, zt <- `zt*`}))] +[visit_exp `%`_list{`X*#12668`}(`%%`_fieldtype{`mut?#1031`, storagetype#569}(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, `mut?#1031` <- `mut?#1031*`, storagetype#569 <- `storagetype#569*`, zt <- `zt*`})] +[visit_exp `X*#12668`] +[visit_id X*#12668] +[visit_exp (`%%`_fieldtype{`mut?#1031`, storagetype#569}(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, `mut?#1031` <- `mut?#1031*`, storagetype#569 <- `storagetype#569*`, zt <- `zt*`})] +[visit_exp `%%`_fieldtype{`mut?#1031`, storagetype#569}(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, `mut?#1031` <- `mut?#1031*`, storagetype#569 <- `storagetype#569*`, zt <- `zt*`}] +[scope_enter mut?] +[scope_enter mut?#1031] +[scope_enter storagetype#569] +[scope_enter zt] +[visit_exp `%%`_fieldtype{`mut?#1031`, storagetype#569}(mut?{mut <- `mut?`}, zt)] +[visit_exp `mut?#1031`] +[visit_id mut?#1031] not free +[visit_exp storagetype#569] +[visit_id storagetype#569] not free +[visit_exp (mut?{mut <- `mut?`}, zt)] +[visit_exp mut?{mut <- `mut?`}] +[scope_enter mut] +[visit_exp mut] +[visit_id mut] not free +[visit_id mut] not free +[scope_exit mut] +[visit_exp `mut?`] +[visit_id mut?] not free +[visit_id mut?] no dims +[visit_exp zt] +[visit_id zt] not free +[visit_id mut?] not free +[visit_id mut?] no dims +[visit_id mut?#1031] not free +[visit_id storagetype#569] not free +[visit_id zt] not free +[scope_exit zt] +[scope_exit storagetype#569] +[scope_exit mut?#1031] +[scope_exit mut?] +[visit_exp n] +[visit_id n] not free +[visit_exp `mut?*`] +[visit_id mut?*] no dims +[visit_id mut?*] +[visit_exp `mut?#1031*`] +[visit_id mut?#1031*] no dims +[visit_id mut?#1031*] +[visit_exp `storagetype#569*`] +[visit_id storagetype#569*] no dims +[visit_id storagetype#569*] +[visit_exp `zt*`] +[visit_id zt*] no dims +[visit_id zt*] +[visit_exp (a = |$structinst(z)|)] +[visit_exp a] +[visit_id a] not free +[visit_exp |$structinst(z)|] +[visit_exp $structinst(z)] +[visit_exp z] +[visit_id z] not free +[visit_exp (si = {`TYPE`{deftype#9} $type(z, x), `FIELDS`{`fieldval*#3`} $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}})] +[visit_exp si] +[visit_id si] not free +[visit_exp {`TYPE`{deftype#9} $type(z, x), `FIELDS`{`fieldval*#3`} $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}] +[visit_exp deftype#9] +[visit_id deftype#9] +[visit_exp $type(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `fieldval*#3`] +[visit_id fieldval*#3] +[visit_exp $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}] +[scope_enter val] +[scope_enter zt] +[visit_exp $packfield_(zt, val)] +[visit_exp zt] +[visit_id zt] not free +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[visit_id zt] not free +[scope_exit zt] +[scope_exit val] +[visit_exp n] +[visit_id n] not free +[visit_exp `val*`] +[visit_id val*] not free +[visit_id val*] no dims +[visit_exp `zt*`] +[visit_id zt*] not free +[visit_id zt*] no dims +[check_dims] X*#12683 instr*#1758 mut mut?#1049 state#1643 storagetype#587 typeidx#1559 typeidx#1561 val x z zt +[visit_exp `%;%`_config{state#1643, `instr*#1758`}(z, [`STRUCT.NEW_DEFAULT`_instr{typeidx#1559}(x)])] +[visit_exp state#1643] +[visit_id state#1643] +[visit_exp `instr*#1758`] +[visit_id instr*#1758] +[visit_exp (z, [`STRUCT.NEW_DEFAULT`_instr{typeidx#1559}(x)])] +[visit_exp z] +[visit_id z] +[visit_exp [`STRUCT.NEW_DEFAULT`_instr{typeidx#1559}(x)]] +[visit_exp `STRUCT.NEW_DEFAULT`_instr{typeidx#1559}(x)] +[visit_exp typeidx#1559] +[visit_id typeidx#1559] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`STRUCT.NEW`_instr{typeidx#1561}(x)]] +[visit_exp (val : val <: instr)*{val <- `val*`}] +[scope_enter val] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp `val*`] +[visit_id val*] no dims +[visit_id val*] +[visit_exp [`STRUCT.NEW`_instr{typeidx#1561}(x)]] +[visit_exp `STRUCT.NEW`_instr{typeidx#1561}(x)] +[visit_exp typeidx#1561] +[visit_id typeidx#1561] +[visit_exp (x)] +[visit_exp x] +[visit_id x] not free +[visit_exp ($type(z, x), `STRUCT`_comptype(`%`_list{`X*#12683`}(`%%`_fieldtype{`mut?#1049`, storagetype#587}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#1049` <- `mut?#1049*`, storagetype#587 <- `storagetype#587*`, zt <- `zt*`})))] +[visit_exp $type(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `STRUCT`_comptype(`%`_list{`X*#12683`}(`%%`_fieldtype{`mut?#1049`, storagetype#587}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#1049` <- `mut?#1049*`, storagetype#587 <- `storagetype#587*`, zt <- `zt*`}))] +[visit_exp (`%`_list{`X*#12683`}(`%%`_fieldtype{`mut?#1049`, storagetype#587}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#1049` <- `mut?#1049*`, storagetype#587 <- `storagetype#587*`, zt <- `zt*`}))] +[visit_exp `%`_list{`X*#12683`}(`%%`_fieldtype{`mut?#1049`, storagetype#587}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#1049` <- `mut?#1049*`, storagetype#587 <- `storagetype#587*`, zt <- `zt*`})] +[visit_exp `X*#12683`] +[visit_id X*#12683] +[visit_exp (`%%`_fieldtype{`mut?#1049`, storagetype#587}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#1049` <- `mut?#1049*`, storagetype#587 <- `storagetype#587*`, zt <- `zt*`})] +[visit_exp `%%`_fieldtype{`mut?#1049`, storagetype#587}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#1049` <- `mut?#1049*`, storagetype#587 <- `storagetype#587*`, zt <- `zt*`}] +[scope_enter mut?] +[scope_enter mut?#1049] +[scope_enter storagetype#587] +[scope_enter zt] +[visit_exp `%%`_fieldtype{`mut?#1049`, storagetype#587}(mut?{mut <- `mut?`}, zt)] +[visit_exp `mut?#1049`] +[visit_id mut?#1049] not free +[visit_exp storagetype#587] +[visit_id storagetype#587] not free +[visit_exp (mut?{mut <- `mut?`}, zt)] +[visit_exp mut?{mut <- `mut?`}] +[scope_enter mut] +[visit_exp mut] +[visit_id mut] not free +[visit_id mut] not free +[scope_exit mut] +[visit_exp `mut?`] +[visit_id mut?] not free +[visit_id mut?] no dims +[visit_exp zt] +[visit_id zt] not free +[visit_id mut?] not free +[visit_id mut?] no dims +[visit_id mut?#1049] not free +[visit_id storagetype#587] not free +[visit_id zt] not free +[scope_exit zt] +[scope_exit storagetype#587] +[scope_exit mut?#1049] +[scope_exit mut?] +[visit_exp `mut?*`] +[visit_id mut?*] no dims +[visit_id mut?*] +[visit_exp `mut?#1049*`] +[visit_id mut?#1049*] no dims +[visit_id mut?#1049*] +[visit_exp `storagetype#587*`] +[visit_id storagetype#587*] no dims +[visit_id storagetype#587*] +[visit_exp `zt*`] +[visit_id zt*] no dims +[visit_id zt*] +[scope_enter val] +[scope_enter zt] +[visit_exp ($default_($unpack(zt)) = ?(val))] +[visit_exp $default_($unpack(zt))] +[visit_exp $unpack(zt)] +[visit_exp zt] +[visit_id zt] not free +[visit_exp ?(val)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[visit_id zt] not free +[scope_exit zt] +[scope_exit val] +[visit_exp `val*`] +[visit_id val*] not free +[visit_id val*] no dims +[visit_exp `zt*`] +[visit_id zt*] not free +[visit_id zt*] no dims +[check_dims] heaptype#1429 ht i instr*#1770 state#1655 sx sx?#13 typeidx#1563 u32#17 x z +[visit_exp `%;%`_config{state#1655, `instr*#1770`}(z, [`REF.NULL`_instr{heaptype#1429}(ht) `STRUCT.GET`_instr{`sx?#13`, typeidx#1563, u32#17}(sx?{sx <- `sx?`}, x, i)])] +[visit_exp state#1655] +[visit_id state#1655] +[visit_exp `instr*#1770`] +[visit_id instr*#1770] +[visit_exp (z, [`REF.NULL`_instr{heaptype#1429}(ht) `STRUCT.GET`_instr{`sx?#13`, typeidx#1563, u32#17}(sx?{sx <- `sx?`}, x, i)])] +[visit_exp z] +[visit_id z] +[visit_exp [`REF.NULL`_instr{heaptype#1429}(ht) `STRUCT.GET`_instr{`sx?#13`, typeidx#1563, u32#17}(sx?{sx <- `sx?`}, x, i)]] +[visit_exp `REF.NULL`_instr{heaptype#1429}(ht)] +[visit_exp heaptype#1429] +[visit_id heaptype#1429] +[visit_exp (ht)] +[visit_exp ht] +[visit_id ht] +[visit_exp `STRUCT.GET`_instr{`sx?#13`, typeidx#1563, u32#17}(sx?{sx <- `sx?`}, x, i)] +[visit_exp `sx?#13`] +[visit_id sx?#13] +[visit_exp typeidx#1563] +[visit_id typeidx#1563] +[visit_exp u32#17] +[visit_id u32#17] +[visit_exp (sx?{sx <- `sx?`}, x, i)] +[visit_exp sx?{sx <- `sx?`}] +[scope_enter sx] +[visit_exp sx] +[visit_id sx] not free +[visit_id sx] not free +[scope_exit sx] +[visit_exp `sx?`] +[visit_id sx?] no dims +[visit_id sx?] +[visit_exp x] +[visit_id x] +[visit_exp i] +[visit_id i] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[check_dims] X*#12698 a fieldval*#4 i i#40378 i#40388 instr*#1782 mut mut?#1067 state#1667 storagetype#605 structaddr#5 sx sx?#15 typeidx#1565 u32#19 x z zt +[visit_exp `%;%`_config{state#1667, `instr*#1782`}(z, [`REF.STRUCT_ADDR`_instr{structaddr#5}(a) `STRUCT.GET`_instr{`sx?#15`, typeidx#1565, u32#19}(sx?{sx <- `sx?`}, x, i)])] +[visit_exp state#1667] +[visit_id state#1667] +[visit_exp `instr*#1782`] +[visit_id instr*#1782] +[visit_exp (z, [`REF.STRUCT_ADDR`_instr{structaddr#5}(a) `STRUCT.GET`_instr{`sx?#15`, typeidx#1565, u32#19}(sx?{sx <- `sx?`}, x, i)])] +[visit_exp z] +[visit_id z] +[visit_exp [`REF.STRUCT_ADDR`_instr{structaddr#5}(a) `STRUCT.GET`_instr{`sx?#15`, typeidx#1565, u32#19}(sx?{sx <- `sx?`}, x, i)]] +[visit_exp `REF.STRUCT_ADDR`_instr{structaddr#5}(a)] +[visit_exp structaddr#5] +[visit_id structaddr#5] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp `STRUCT.GET`_instr{`sx?#15`, typeidx#1565, u32#19}(sx?{sx <- `sx?`}, x, i)] +[visit_exp `sx?#15`] +[visit_id sx?#15] +[visit_exp typeidx#1565] +[visit_id typeidx#1565] +[visit_exp u32#19] +[visit_id u32#19] +[visit_exp (sx?{sx <- `sx?`}, x, i)] +[visit_exp sx?{sx <- `sx?`}] +[scope_enter sx] +[visit_exp sx] +[visit_id sx] not free +[visit_id sx] not free +[scope_exit sx] +[visit_exp `sx?`] +[visit_id sx?] no dims +[visit_id sx?] +[visit_exp x] +[visit_id x] +[visit_exp i] +[visit_id i] +[visit_exp [($unpackfield_(zt*{zt <- `zt*`}[i!`%`_u32{i#40378}.0], sx?{sx <- `sx?`}, $structinst(z)[a].`FIELDS`_structinst{`fieldval*#4`}[i!`%`_u32{i#40388}.0]) : val <: instr)]] +[visit_exp ($unpackfield_(zt*{zt <- `zt*`}[i!`%`_u32{i#40378}.0], sx?{sx <- `sx?`}, $structinst(z)[a].`FIELDS`_structinst{`fieldval*#4`}[i!`%`_u32{i#40388}.0]) : val <: instr)] +[visit_exp $unpackfield_(zt*{zt <- `zt*`}[i!`%`_u32{i#40378}.0], sx?{sx <- `sx?`}, $structinst(z)[a].`FIELDS`_structinst{`fieldval*#4`}[i!`%`_u32{i#40388}.0])] +[visit_exp zt*{zt <- `zt*`}[i!`%`_u32{i#40378}.0]] +[visit_exp zt*{zt <- `zt*`}] +[scope_enter zt] +[visit_exp zt] +[visit_id zt] not free +[visit_id zt] not free +[scope_exit zt] +[visit_exp `zt*`] +[visit_id zt*] no dims +[visit_id zt*] +[visit_exp i!`%`_u32{i#40378}.0] +[visit_exp i!`%`_u32{i#40378}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#40378] +[visit_id i#40378] +[visit_exp sx?{sx <- `sx?`}] +[scope_enter sx] +[visit_exp sx] +[visit_id sx] not free +[visit_id sx] not free +[scope_exit sx] +[visit_exp `sx?`] +[visit_id sx?] not free +[visit_id sx?] no dims +[visit_exp $structinst(z)[a].`FIELDS`_structinst{`fieldval*#4`}[i!`%`_u32{i#40388}.0]] +[visit_exp $structinst(z)[a].`FIELDS`_structinst{`fieldval*#4`}] +[visit_exp $structinst(z)[a]] +[visit_exp $structinst(z)] +[visit_exp z] +[visit_id z] not free +[visit_exp a] +[visit_id a] not free +[visit_exp `fieldval*#4`] +[visit_id fieldval*#4] +[visit_exp i!`%`_u32{i#40388}.0] +[visit_exp i!`%`_u32{i#40388}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#40388] +[visit_id i#40388] +[visit_exp ($type(z, x), `STRUCT`_comptype(`%`_list{`X*#12698`}(`%%`_fieldtype{`mut?#1067`, storagetype#605}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#1067` <- `mut?#1067*`, storagetype#605 <- `storagetype#605*`, zt <- `zt*`})))] +[visit_exp $type(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `STRUCT`_comptype(`%`_list{`X*#12698`}(`%%`_fieldtype{`mut?#1067`, storagetype#605}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#1067` <- `mut?#1067*`, storagetype#605 <- `storagetype#605*`, zt <- `zt*`}))] +[visit_exp (`%`_list{`X*#12698`}(`%%`_fieldtype{`mut?#1067`, storagetype#605}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#1067` <- `mut?#1067*`, storagetype#605 <- `storagetype#605*`, zt <- `zt*`}))] +[visit_exp `%`_list{`X*#12698`}(`%%`_fieldtype{`mut?#1067`, storagetype#605}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#1067` <- `mut?#1067*`, storagetype#605 <- `storagetype#605*`, zt <- `zt*`})] +[visit_exp `X*#12698`] +[visit_id X*#12698] +[visit_exp (`%%`_fieldtype{`mut?#1067`, storagetype#605}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#1067` <- `mut?#1067*`, storagetype#605 <- `storagetype#605*`, zt <- `zt*`})] +[visit_exp `%%`_fieldtype{`mut?#1067`, storagetype#605}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#1067` <- `mut?#1067*`, storagetype#605 <- `storagetype#605*`, zt <- `zt*`}] +[scope_enter mut?] +[scope_enter mut?#1067] +[scope_enter storagetype#605] +[scope_enter zt] +[visit_exp `%%`_fieldtype{`mut?#1067`, storagetype#605}(mut?{mut <- `mut?`}, zt)] +[visit_exp `mut?#1067`] +[visit_id mut?#1067] not free +[visit_exp storagetype#605] +[visit_id storagetype#605] not free +[visit_exp (mut?{mut <- `mut?`}, zt)] +[visit_exp mut?{mut <- `mut?`}] +[scope_enter mut] +[visit_exp mut] +[visit_id mut] not free +[visit_id mut] not free +[scope_exit mut] +[visit_exp `mut?`] +[visit_id mut?] not free +[visit_id mut?] no dims +[visit_exp zt] +[visit_id zt] not free +[visit_id mut?] not free +[visit_id mut?] no dims +[visit_id mut?#1067] not free +[visit_id storagetype#605] not free +[visit_id zt] not free +[scope_exit zt] +[scope_exit storagetype#605] +[scope_exit mut?#1067] +[scope_exit mut?] +[visit_exp `mut?*`] +[visit_id mut?*] no dims +[visit_id mut?*] +[visit_exp `mut?#1067*`] +[visit_id mut?#1067*] no dims +[visit_id mut?#1067*] +[visit_exp `storagetype#605*`] +[visit_id storagetype#605*] no dims +[visit_id storagetype#605*] +[visit_exp `zt*`] +[visit_id zt*] not free +[visit_id zt*] no dims +[check_dims] heaptype#1431 ht i instr*#1794 instr*#1806 state#1679 state#1691 typeidx#1567 u32#21 val x z +[visit_exp `%;%`_config{state#1679, `instr*#1794`}(z, [`REF.NULL`_instr{heaptype#1431}(ht) (val : val <: instr) `STRUCT.SET`_instr{typeidx#1567, u32#21}(x, i)])] +[visit_exp state#1679] +[visit_id state#1679] +[visit_exp `instr*#1794`] +[visit_id instr*#1794] +[visit_exp (z, [`REF.NULL`_instr{heaptype#1431}(ht) (val : val <: instr) `STRUCT.SET`_instr{typeidx#1567, u32#21}(x, i)])] +[visit_exp z] +[visit_id z] +[visit_exp [`REF.NULL`_instr{heaptype#1431}(ht) (val : val <: instr) `STRUCT.SET`_instr{typeidx#1567, u32#21}(x, i)]] +[visit_exp `REF.NULL`_instr{heaptype#1431}(ht)] +[visit_exp heaptype#1431] +[visit_id heaptype#1431] +[visit_exp (ht)] +[visit_exp ht] +[visit_id ht] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] +[visit_exp `STRUCT.SET`_instr{typeidx#1567, u32#21}(x, i)] +[visit_exp typeidx#1567] +[visit_id typeidx#1567] +[visit_exp u32#21] +[visit_id u32#21] +[visit_exp (x, i)] +[visit_exp x] +[visit_id x] +[visit_exp i] +[visit_id i] +[visit_exp `%;%`_config{state#1691, `instr*#1806`}(z, [`TRAP`_instr])] +[visit_exp state#1691] +[visit_id state#1691] +[visit_exp `instr*#1806`] +[visit_id instr*#1806] +[visit_exp (z, [`TRAP`_instr])] +[visit_exp z] +[visit_id z] not free +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[check_dims] X*#12713 a i i#40466 i#40476 instr*#1818 instr*#1830 mut mut?#1085 state#1703 state#1715 storagetype#623 structaddr#7 typeidx#1569 u32#23 val x z zt +[visit_exp `%;%`_config{state#1703, `instr*#1818`}(z, [`REF.STRUCT_ADDR`_instr{structaddr#7}(a) (val : val <: instr) `STRUCT.SET`_instr{typeidx#1569, u32#23}(x, i)])] +[visit_exp state#1703] +[visit_id state#1703] +[visit_exp `instr*#1818`] +[visit_id instr*#1818] +[visit_exp (z, [`REF.STRUCT_ADDR`_instr{structaddr#7}(a) (val : val <: instr) `STRUCT.SET`_instr{typeidx#1569, u32#23}(x, i)])] +[visit_exp z] +[visit_id z] +[visit_exp [`REF.STRUCT_ADDR`_instr{structaddr#7}(a) (val : val <: instr) `STRUCT.SET`_instr{typeidx#1569, u32#23}(x, i)]] +[visit_exp `REF.STRUCT_ADDR`_instr{structaddr#7}(a)] +[visit_exp structaddr#7] +[visit_id structaddr#7] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] +[visit_exp `STRUCT.SET`_instr{typeidx#1569, u32#23}(x, i)] +[visit_exp typeidx#1569] +[visit_id typeidx#1569] +[visit_exp u32#23] +[visit_id u32#23] +[visit_exp (x, i)] +[visit_exp x] +[visit_id x] +[visit_exp i] +[visit_id i] +[visit_exp `%;%`_config{state#1715, `instr*#1830`}($with_struct(z, a, i!`%`_u32{i#40466}.0, $packfield_(zt*{zt <- `zt*`}[i!`%`_u32{i#40476}.0], val)), [])] +[visit_exp state#1715] +[visit_id state#1715] +[visit_exp `instr*#1830`] +[visit_id instr*#1830] +[visit_exp ($with_struct(z, a, i!`%`_u32{i#40466}.0, $packfield_(zt*{zt <- `zt*`}[i!`%`_u32{i#40476}.0], val)), [])] +[visit_exp $with_struct(z, a, i!`%`_u32{i#40466}.0, $packfield_(zt*{zt <- `zt*`}[i!`%`_u32{i#40476}.0], val))] +[visit_exp z] +[visit_id z] not free +[visit_exp a] +[visit_id a] not free +[visit_exp i!`%`_u32{i#40466}.0] +[visit_exp i!`%`_u32{i#40466}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#40466] +[visit_id i#40466] +[visit_exp $packfield_(zt*{zt <- `zt*`}[i!`%`_u32{i#40476}.0], val)] +[visit_exp zt*{zt <- `zt*`}[i!`%`_u32{i#40476}.0]] +[visit_exp zt*{zt <- `zt*`}] +[scope_enter zt] +[visit_exp zt] +[visit_id zt] not free +[visit_id zt] not free +[scope_exit zt] +[visit_exp `zt*`] +[visit_id zt*] no dims +[visit_id zt*] +[visit_exp i!`%`_u32{i#40476}.0] +[visit_exp i!`%`_u32{i#40476}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#40476] +[visit_id i#40476] +[visit_exp val] +[visit_id val] not free +[visit_exp []] +[visit_exp ($type(z, x), `STRUCT`_comptype(`%`_list{`X*#12713`}(`%%`_fieldtype{`mut?#1085`, storagetype#623}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#1085` <- `mut?#1085*`, storagetype#623 <- `storagetype#623*`, zt <- `zt*`})))] +[visit_exp $type(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `STRUCT`_comptype(`%`_list{`X*#12713`}(`%%`_fieldtype{`mut?#1085`, storagetype#623}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#1085` <- `mut?#1085*`, storagetype#623 <- `storagetype#623*`, zt <- `zt*`}))] +[visit_exp (`%`_list{`X*#12713`}(`%%`_fieldtype{`mut?#1085`, storagetype#623}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#1085` <- `mut?#1085*`, storagetype#623 <- `storagetype#623*`, zt <- `zt*`}))] +[visit_exp `%`_list{`X*#12713`}(`%%`_fieldtype{`mut?#1085`, storagetype#623}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#1085` <- `mut?#1085*`, storagetype#623 <- `storagetype#623*`, zt <- `zt*`})] +[visit_exp `X*#12713`] +[visit_id X*#12713] +[visit_exp (`%%`_fieldtype{`mut?#1085`, storagetype#623}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#1085` <- `mut?#1085*`, storagetype#623 <- `storagetype#623*`, zt <- `zt*`})] +[visit_exp `%%`_fieldtype{`mut?#1085`, storagetype#623}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#1085` <- `mut?#1085*`, storagetype#623 <- `storagetype#623*`, zt <- `zt*`}] +[scope_enter mut?] +[scope_enter mut?#1085] +[scope_enter storagetype#623] +[scope_enter zt] +[visit_exp `%%`_fieldtype{`mut?#1085`, storagetype#623}(mut?{mut <- `mut?`}, zt)] +[visit_exp `mut?#1085`] +[visit_id mut?#1085] not free +[visit_exp storagetype#623] +[visit_id storagetype#623] not free +[visit_exp (mut?{mut <- `mut?`}, zt)] +[visit_exp mut?{mut <- `mut?`}] +[scope_enter mut] +[visit_exp mut] +[visit_id mut] not free +[visit_id mut] not free +[scope_exit mut] +[visit_exp `mut?`] +[visit_id mut?] not free +[visit_id mut?] no dims +[visit_exp zt] +[visit_id zt] not free +[visit_id mut?] not free +[visit_id mut?] no dims +[visit_id mut?#1085] not free +[visit_id storagetype#623] not free +[visit_id zt] not free +[scope_exit zt] +[scope_exit storagetype#623] +[scope_exit mut?#1085] +[scope_exit mut?] +[visit_exp `mut?*`] +[visit_id mut?*] no dims +[visit_id mut?*] +[visit_exp `mut?#1085*`] +[visit_id mut?#1085*] no dims +[visit_id mut?#1085*] +[visit_exp `storagetype#623*`] +[visit_id storagetype#623*] no dims +[visit_id storagetype#623*] +[visit_exp `zt*`] +[visit_id zt*] not free +[visit_id zt*] no dims +[check_dims] i#40512 i#40564 n numtype#369 typeidx#1571 typeidx#1573 u32#25 val x +[visit_exp [(val : val <: instr) `CONST`_instr{numtype#369}(`I32`_numtype, `%`_num_{i#40512}(n)) `ARRAY.NEW`_instr{typeidx#1571}(x)]] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] +[visit_exp `CONST`_instr{numtype#369}(`I32`_numtype, `%`_num_{i#40512}(n))] +[visit_exp numtype#369] +[visit_id numtype#369] +[visit_exp (`I32`_numtype, `%`_num_{i#40512}(n))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#40512}(n)] +[visit_exp i#40512] +[visit_id i#40512] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `ARRAY.NEW`_instr{typeidx#1571}(x)] +[visit_exp typeidx#1571] +[visit_id typeidx#1571] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr{typeidx#1573, u32#25}(x, `%`_u32{i#40564}(n))]] +[visit_exp (val : val <: instr)^n{}] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_exp n] +[visit_id n] not free +[visit_exp [`ARRAY.NEW_FIXED`_instr{typeidx#1573, u32#25}(x, `%`_u32{i#40564}(n))]] +[visit_exp `ARRAY.NEW_FIXED`_instr{typeidx#1573, u32#25}(x, `%`_u32{i#40564}(n))] +[visit_exp typeidx#1573] +[visit_id typeidx#1573] +[visit_exp u32#25] +[visit_id u32#25] +[visit_exp (x, `%`_u32{i#40564}(n))] +[visit_exp x] +[visit_id x] not free +[visit_exp `%`_u32{i#40564}(n)] +[visit_exp i#40564] +[visit_id i#40564] +[visit_exp (n)] +[visit_exp n] +[visit_id n] not free +[check_dims] fieldtype#39 i#40588 i#40640 instr*#1842 mut mut?#1097 n numtype#371 state#1727 storagetype#635 typeidx#1575 typeidx#1577 u32#27 val x z zt +[visit_exp `%;%`_config{state#1727, `instr*#1842`}(z, [`CONST`_instr{numtype#371}(`I32`_numtype, `%`_num_{i#40588}(n)) `ARRAY.NEW_DEFAULT`_instr{typeidx#1575}(x)])] +[visit_exp state#1727] +[visit_id state#1727] +[visit_exp `instr*#1842`] +[visit_id instr*#1842] +[visit_exp (z, [`CONST`_instr{numtype#371}(`I32`_numtype, `%`_num_{i#40588}(n)) `ARRAY.NEW_DEFAULT`_instr{typeidx#1575}(x)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#371}(`I32`_numtype, `%`_num_{i#40588}(n)) `ARRAY.NEW_DEFAULT`_instr{typeidx#1575}(x)]] +[visit_exp `CONST`_instr{numtype#371}(`I32`_numtype, `%`_num_{i#40588}(n))] +[visit_exp numtype#371] +[visit_id numtype#371] +[visit_exp (`I32`_numtype, `%`_num_{i#40588}(n))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#40588}(n)] +[visit_exp i#40588] +[visit_id i#40588] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `ARRAY.NEW_DEFAULT`_instr{typeidx#1575}(x)] +[visit_exp typeidx#1575] +[visit_id typeidx#1575] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr{typeidx#1577, u32#27}(x, `%`_u32{i#40640}(n))]] +[visit_exp (val : val <: instr)^n{}] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] +[visit_exp n] +[visit_id n] not free +[visit_exp [`ARRAY.NEW_FIXED`_instr{typeidx#1577, u32#27}(x, `%`_u32{i#40640}(n))]] +[visit_exp `ARRAY.NEW_FIXED`_instr{typeidx#1577, u32#27}(x, `%`_u32{i#40640}(n))] +[visit_exp typeidx#1577] +[visit_id typeidx#1577] +[visit_exp u32#27] +[visit_id u32#27] +[visit_exp (x, `%`_u32{i#40640}(n))] +[visit_exp x] +[visit_id x] not free +[visit_exp `%`_u32{i#40640}(n)] +[visit_exp i#40640] +[visit_id i#40640] +[visit_exp (n)] +[visit_exp n] +[visit_id n] not free +[visit_exp ($type(z, x), `ARRAY`_comptype{fieldtype#39}(`%%`_fieldtype{`mut?#1097`, storagetype#635}(mut?{mut <- `mut?`}, zt)))] +[visit_exp $type(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `ARRAY`_comptype{fieldtype#39}(`%%`_fieldtype{`mut?#1097`, storagetype#635}(mut?{mut <- `mut?`}, zt))] +[visit_exp fieldtype#39] +[visit_id fieldtype#39] +[visit_exp (`%%`_fieldtype{`mut?#1097`, storagetype#635}(mut?{mut <- `mut?`}, zt))] +[visit_exp `%%`_fieldtype{`mut?#1097`, storagetype#635}(mut?{mut <- `mut?`}, zt)] +[visit_exp `mut?#1097`] +[visit_id mut?#1097] +[visit_exp storagetype#635] +[visit_id storagetype#635] +[visit_exp (mut?{mut <- `mut?`}, zt)] +[visit_exp mut?{mut <- `mut?`}] +[scope_enter mut] +[visit_exp mut] +[visit_id mut] not free +[visit_id mut] not free +[scope_exit mut] +[visit_exp `mut?`] +[visit_id mut?] no dims +[visit_id mut?] +[visit_exp zt] +[visit_id zt] +[visit_exp ($default_($unpack(zt)) = ?(val))] +[visit_exp $default_($unpack(zt))] +[visit_exp $unpack(zt)] +[visit_exp zt] +[visit_id zt] not free +[visit_exp ?(val)] +[visit_exp val] +[visit_id val] not free +[check_dims] a ai arrayaddr#3 deftype#10 fieldtype#41 fieldval*#5 i#40690 instr*#1854 instr*#1866 mut mut?#1109 n state#1739 state#1751 storagetype#647 typeidx#1579 u32#29 val x z zt +[visit_exp `%;%`_config{state#1739, `instr*#1854`}(z, (val : val <: instr)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr{typeidx#1579, u32#29}(x, `%`_u32{i#40690}(n))])] +[visit_exp state#1739] +[visit_id state#1739] +[visit_exp `instr*#1854`] +[visit_id instr*#1854] +[visit_exp (z, (val : val <: instr)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr{typeidx#1579, u32#29}(x, `%`_u32{i#40690}(n))])] +[visit_exp z] +[visit_id z] +[visit_exp (val : val <: instr)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr{typeidx#1579, u32#29}(x, `%`_u32{i#40690}(n))]] +[visit_exp (val : val <: instr)^n{val <- `val*`}] +[scope_enter val] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp n] +[visit_id n] +[visit_exp `val*`] +[visit_id val*] no dims +[visit_id val*] +[visit_exp [`ARRAY.NEW_FIXED`_instr{typeidx#1579, u32#29}(x, `%`_u32{i#40690}(n))]] +[visit_exp `ARRAY.NEW_FIXED`_instr{typeidx#1579, u32#29}(x, `%`_u32{i#40690}(n))] +[visit_exp typeidx#1579] +[visit_id typeidx#1579] +[visit_exp u32#29] +[visit_id u32#29] +[visit_exp (x, `%`_u32{i#40690}(n))] +[visit_exp x] +[visit_id x] +[visit_exp `%`_u32{i#40690}(n)] +[visit_exp i#40690] +[visit_id i#40690] +[visit_exp (n)] +[visit_exp n] +[visit_id n] not free +[visit_exp `%;%`_config{state#1751, `instr*#1866`}($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr{arrayaddr#3}(a)])] +[visit_exp state#1751] +[visit_id state#1751] +[visit_exp `instr*#1866`] +[visit_id instr*#1866] +[visit_exp ($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr{arrayaddr#3}(a)])] +[visit_exp $add_arrayinst(z, [ai])] +[visit_exp z] +[visit_id z] not free +[visit_exp [ai]] +[visit_exp ai] +[visit_id ai] +[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#3}(a)]] +[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#3}(a)] +[visit_exp arrayaddr#3] +[visit_id arrayaddr#3] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp ($type(z, x), `ARRAY`_comptype{fieldtype#41}(`%%`_fieldtype{`mut?#1109`, storagetype#647}(mut?{mut <- `mut?`}, zt)))] +[visit_exp $type(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `ARRAY`_comptype{fieldtype#41}(`%%`_fieldtype{`mut?#1109`, storagetype#647}(mut?{mut <- `mut?`}, zt))] +[visit_exp fieldtype#41] +[visit_id fieldtype#41] +[visit_exp (`%%`_fieldtype{`mut?#1109`, storagetype#647}(mut?{mut <- `mut?`}, zt))] +[visit_exp `%%`_fieldtype{`mut?#1109`, storagetype#647}(mut?{mut <- `mut?`}, zt)] +[visit_exp `mut?#1109`] +[visit_id mut?#1109] +[visit_exp storagetype#647] +[visit_id storagetype#647] +[visit_exp (mut?{mut <- `mut?`}, zt)] +[visit_exp mut?{mut <- `mut?`}] +[scope_enter mut] +[visit_exp mut] +[visit_id mut] not free +[visit_id mut] not free +[scope_exit mut] +[visit_exp `mut?`] +[visit_id mut?] no dims +[visit_id mut?] +[visit_exp zt] +[visit_id zt] +[visit_exp ((a = |$arrayinst(z)|) /\ (ai = {`TYPE`{deftype#10} $type(z, x), `FIELDS`{`fieldval*#5`} $packfield_(zt, val)^n{val <- `val*`}}))] +[visit_exp (a = |$arrayinst(z)|)] +[visit_exp a] +[visit_id a] not free +[visit_exp |$arrayinst(z)|] +[visit_exp $arrayinst(z)] +[visit_exp z] +[visit_id z] not free +[visit_exp (ai = {`TYPE`{deftype#10} $type(z, x), `FIELDS`{`fieldval*#5`} $packfield_(zt, val)^n{val <- `val*`}})] +[visit_exp ai] +[visit_id ai] not free +[visit_exp {`TYPE`{deftype#10} $type(z, x), `FIELDS`{`fieldval*#5`} $packfield_(zt, val)^n{val <- `val*`}}] +[visit_exp deftype#10] +[visit_id deftype#10] +[visit_exp $type(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `fieldval*#5`] +[visit_id fieldval*#5] +[visit_exp $packfield_(zt, val)^n{val <- `val*`}] +[scope_enter val] +[visit_exp $packfield_(zt, val)] +[visit_exp zt] +[visit_id zt] not free +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp n] +[visit_id n] not free +[visit_exp `val*`] +[visit_id val*] not free +[visit_id val*] no dims +[check_dims] elemidx#27 i i#40752 i#40794 instr*#1878 n numtype#373 numtype#375 ref*#18 state#1763 typeidx#1581 x y z +[visit_exp `%;%`_config{state#1763, `instr*#1878`}(z, [`CONST`_instr{numtype#373}(`I32`_numtype, i) `CONST`_instr{numtype#375}(`I32`_numtype, `%`_num_{i#40752}(n)) `ARRAY.NEW_ELEM`_instr{typeidx#1581, elemidx#27}(x, y)])] +[visit_exp state#1763] +[visit_id state#1763] +[visit_exp `instr*#1878`] +[visit_id instr*#1878] +[visit_exp (z, [`CONST`_instr{numtype#373}(`I32`_numtype, i) `CONST`_instr{numtype#375}(`I32`_numtype, `%`_num_{i#40752}(n)) `ARRAY.NEW_ELEM`_instr{typeidx#1581, elemidx#27}(x, y)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#373}(`I32`_numtype, i) `CONST`_instr{numtype#375}(`I32`_numtype, `%`_num_{i#40752}(n)) `ARRAY.NEW_ELEM`_instr{typeidx#1581, elemidx#27}(x, y)]] +[visit_exp `CONST`_instr{numtype#373}(`I32`_numtype, i)] +[visit_exp numtype#373] +[visit_id numtype#373] +[visit_exp (`I32`_numtype, i)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i] +[visit_id i] +[visit_exp `CONST`_instr{numtype#375}(`I32`_numtype, `%`_num_{i#40752}(n))] +[visit_exp numtype#375] +[visit_id numtype#375] +[visit_exp (`I32`_numtype, `%`_num_{i#40752}(n))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#40752}(n)] +[visit_exp i#40752] +[visit_id i#40752] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `ARRAY.NEW_ELEM`_instr{typeidx#1581, elemidx#27}(x, y)] +[visit_exp typeidx#1581] +[visit_id typeidx#1581] +[visit_exp elemidx#27] +[visit_id elemidx#27] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] +[visit_exp y] +[visit_id y] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[visit_exp ((i!`%`_num_{i#40794}.0 + n) > |$elem(z, y).`REFS`_eleminst{`ref*#18`}|)] +[visit_exp (i!`%`_num_{i#40794}.0 + n)] +[visit_exp i!`%`_num_{i#40794}.0] +[visit_exp i!`%`_num_{i#40794}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#40794] +[visit_id i#40794] +[visit_exp n] +[visit_id n] not free +[visit_exp |$elem(z, y).`REFS`_eleminst{`ref*#18`}|] +[visit_exp $elem(z, y).`REFS`_eleminst{`ref*#18`}] +[visit_exp $elem(z, y)] +[visit_exp z] +[visit_id z] not free +[visit_exp y] +[visit_id y] not free +[visit_exp `ref*#18`] +[visit_id ref*#18] +[check_dims] elemidx#29 i i#40844 i#40910 i#40932 instr*#1890 n numtype#377 numtype#379 ref ref*#19 state#1775 typeidx#1583 typeidx#1585 u32#31 x y z +[visit_exp `%;%`_config{state#1775, `instr*#1890`}(z, [`CONST`_instr{numtype#377}(`I32`_numtype, i) `CONST`_instr{numtype#379}(`I32`_numtype, `%`_num_{i#40844}(n)) `ARRAY.NEW_ELEM`_instr{typeidx#1583, elemidx#29}(x, y)])] +[visit_exp state#1775] +[visit_id state#1775] +[visit_exp `instr*#1890`] +[visit_id instr*#1890] +[visit_exp (z, [`CONST`_instr{numtype#377}(`I32`_numtype, i) `CONST`_instr{numtype#379}(`I32`_numtype, `%`_num_{i#40844}(n)) `ARRAY.NEW_ELEM`_instr{typeidx#1583, elemidx#29}(x, y)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#377}(`I32`_numtype, i) `CONST`_instr{numtype#379}(`I32`_numtype, `%`_num_{i#40844}(n)) `ARRAY.NEW_ELEM`_instr{typeidx#1583, elemidx#29}(x, y)]] +[visit_exp `CONST`_instr{numtype#377}(`I32`_numtype, i)] +[visit_exp numtype#377] +[visit_id numtype#377] +[visit_exp (`I32`_numtype, i)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i] +[visit_id i] +[visit_exp `CONST`_instr{numtype#379}(`I32`_numtype, `%`_num_{i#40844}(n))] +[visit_exp numtype#379] +[visit_id numtype#379] +[visit_exp (`I32`_numtype, `%`_num_{i#40844}(n))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#40844}(n)] +[visit_exp i#40844] +[visit_id i#40844] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `ARRAY.NEW_ELEM`_instr{typeidx#1583, elemidx#29}(x, y)] +[visit_exp typeidx#1583] +[visit_id typeidx#1583] +[visit_exp elemidx#29] +[visit_id elemidx#29] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] +[visit_exp y] +[visit_id y] +[visit_exp (ref : ref <: instr)^n{ref <- `ref*`} ++ [`ARRAY.NEW_FIXED`_instr{typeidx#1585, u32#31}(x, `%`_u32{i#40910}(n))]] +[visit_exp (ref : ref <: instr)^n{ref <- `ref*`}] +[scope_enter ref] +[visit_exp (ref : ref <: instr)] +[visit_exp ref] +[visit_id ref] not free +[visit_id ref] not free +[scope_exit ref] +[visit_exp n] +[visit_id n] not free +[visit_exp `ref*`] +[visit_id ref*] no dims +[visit_id ref*] +[visit_exp [`ARRAY.NEW_FIXED`_instr{typeidx#1585, u32#31}(x, `%`_u32{i#40910}(n))]] +[visit_exp `ARRAY.NEW_FIXED`_instr{typeidx#1585, u32#31}(x, `%`_u32{i#40910}(n))] +[visit_exp typeidx#1585] +[visit_id typeidx#1585] +[visit_exp u32#31] +[visit_id u32#31] +[visit_exp (x, `%`_u32{i#40910}(n))] +[visit_exp x] +[visit_id x] not free +[visit_exp `%`_u32{i#40910}(n)] +[visit_exp i#40910] +[visit_id i#40910] +[visit_exp (n)] +[visit_exp n] +[visit_id n] not free +[visit_exp (ref^n{ref <- `ref*`} = $elem(z, y).`REFS`_eleminst{`ref*#19`}[i!`%`_num_{i#40932}.0 : n])] +[visit_exp ref^n{ref <- `ref*`}] +[scope_enter ref] +[visit_exp ref] +[visit_id ref] not free +[visit_id ref] not free +[scope_exit ref] +[visit_exp n] +[visit_id n] not free +[visit_exp `ref*`] +[visit_id ref*] not free +[visit_id ref*] no dims +[visit_exp $elem(z, y).`REFS`_eleminst{`ref*#19`}[i!`%`_num_{i#40932}.0 : n]] +[visit_exp $elem(z, y).`REFS`_eleminst{`ref*#19`}] +[visit_exp $elem(z, y)] +[visit_exp z] +[visit_id z] not free +[visit_exp y] +[visit_id y] not free +[visit_exp `ref*#19`] +[visit_id ref*#19] +[visit_exp i!`%`_num_{i#40932}.0] +[visit_exp i!`%`_num_{i#40932}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#40932] +[visit_id i#40932] +[visit_exp n] +[visit_id n] not free +[check_dims] byte*#1875 dataidx#27 fieldtype#43 i i#40970 i#41024 instr*#1902 mut mut?#1121 n numtype#381 numtype#383 state#1787 storagetype#659 typeidx#1587 x y z zt +[visit_exp `%;%`_config{state#1787, `instr*#1902`}(z, [`CONST`_instr{numtype#381}(`I32`_numtype, i) `CONST`_instr{numtype#383}(`I32`_numtype, `%`_num_{i#40970}(n)) `ARRAY.NEW_DATA`_instr{typeidx#1587, dataidx#27}(x, y)])] +[visit_exp state#1787] +[visit_id state#1787] +[visit_exp `instr*#1902`] +[visit_id instr*#1902] +[visit_exp (z, [`CONST`_instr{numtype#381}(`I32`_numtype, i) `CONST`_instr{numtype#383}(`I32`_numtype, `%`_num_{i#40970}(n)) `ARRAY.NEW_DATA`_instr{typeidx#1587, dataidx#27}(x, y)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#381}(`I32`_numtype, i) `CONST`_instr{numtype#383}(`I32`_numtype, `%`_num_{i#40970}(n)) `ARRAY.NEW_DATA`_instr{typeidx#1587, dataidx#27}(x, y)]] +[visit_exp `CONST`_instr{numtype#381}(`I32`_numtype, i)] +[visit_exp numtype#381] +[visit_id numtype#381] +[visit_exp (`I32`_numtype, i)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i] +[visit_id i] +[visit_exp `CONST`_instr{numtype#383}(`I32`_numtype, `%`_num_{i#40970}(n))] +[visit_exp numtype#383] +[visit_id numtype#383] +[visit_exp (`I32`_numtype, `%`_num_{i#40970}(n))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#40970}(n)] +[visit_exp i#40970] +[visit_id i#40970] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `ARRAY.NEW_DATA`_instr{typeidx#1587, dataidx#27}(x, y)] +[visit_exp typeidx#1587] +[visit_id typeidx#1587] +[visit_exp dataidx#27] +[visit_id dataidx#27] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] +[visit_exp y] +[visit_id y] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[visit_exp ($type(z, x), `ARRAY`_comptype{fieldtype#43}(`%%`_fieldtype{`mut?#1121`, storagetype#659}(mut?{mut <- `mut?`}, zt)))] +[visit_exp $type(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `ARRAY`_comptype{fieldtype#43}(`%%`_fieldtype{`mut?#1121`, storagetype#659}(mut?{mut <- `mut?`}, zt))] +[visit_exp fieldtype#43] +[visit_id fieldtype#43] +[visit_exp (`%%`_fieldtype{`mut?#1121`, storagetype#659}(mut?{mut <- `mut?`}, zt))] +[visit_exp `%%`_fieldtype{`mut?#1121`, storagetype#659}(mut?{mut <- `mut?`}, zt)] +[visit_exp `mut?#1121`] +[visit_id mut?#1121] +[visit_exp storagetype#659] +[visit_id storagetype#659] +[visit_exp (mut?{mut <- `mut?`}, zt)] +[visit_exp mut?{mut <- `mut?`}] +[scope_enter mut] +[visit_exp mut] +[visit_id mut] not free +[visit_id mut] not free +[scope_exit mut] +[visit_exp `mut?`] +[visit_id mut?] no dims +[visit_id mut?] +[visit_exp zt] +[visit_id zt] +[visit_exp ((i!`%`_num_{i#41024}.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).`BYTES`_datainst{`byte*#1875`}|)] +[visit_exp (i!`%`_num_{i#41024}.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] +[visit_exp i!`%`_num_{i#41024}.0] +[visit_exp i!`%`_num_{i#41024}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#41024] +[visit_id i#41024] +[visit_exp ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] +[visit_exp (((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat))] +[visit_exp ((n * $zsize(zt)) : nat <:> rat)] +[visit_exp (n * $zsize(zt))] +[visit_exp n] +[visit_id n] not free +[visit_exp $zsize(zt)] +[visit_exp zt] +[visit_id zt] not free +[visit_exp (8 : nat <:> rat)] +[visit_exp 8] +[visit_exp |$data(z, y).`BYTES`_datainst{`byte*#1875`}|] +[visit_exp $data(z, y).`BYTES`_datainst{`byte*#1875`}] +[visit_exp $data(z, y)] +[visit_exp z] +[visit_id z] not free +[visit_exp y] +[visit_id y] not free +[visit_exp `byte*#1875`] +[visit_id byte*#1875] +[check_dims] byte*#1876 c dataidx#29 fieldtype#45 i i#41074 i#41140 i#41174 instr*#1914 mut mut?#1133 n numtype#385 numtype#387 state#1799 storagetype#671 typeidx#1589 typeidx#1591 u32#33 x y z zt +[visit_exp `%;%`_config{state#1799, `instr*#1914`}(z, [`CONST`_instr{numtype#385}(`I32`_numtype, i) `CONST`_instr{numtype#387}(`I32`_numtype, `%`_num_{i#41074}(n)) `ARRAY.NEW_DATA`_instr{typeidx#1589, dataidx#29}(x, y)])] +[visit_exp state#1799] +[visit_id state#1799] +[visit_exp `instr*#1914`] +[visit_id instr*#1914] +[visit_exp (z, [`CONST`_instr{numtype#385}(`I32`_numtype, i) `CONST`_instr{numtype#387}(`I32`_numtype, `%`_num_{i#41074}(n)) `ARRAY.NEW_DATA`_instr{typeidx#1589, dataidx#29}(x, y)])] +[visit_exp z] +[visit_id z] +[visit_exp [`CONST`_instr{numtype#385}(`I32`_numtype, i) `CONST`_instr{numtype#387}(`I32`_numtype, `%`_num_{i#41074}(n)) `ARRAY.NEW_DATA`_instr{typeidx#1589, dataidx#29}(x, y)]] +[visit_exp `CONST`_instr{numtype#385}(`I32`_numtype, i)] +[visit_exp numtype#385] +[visit_id numtype#385] +[visit_exp (`I32`_numtype, i)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i] +[visit_id i] +[visit_exp `CONST`_instr{numtype#387}(`I32`_numtype, `%`_num_{i#41074}(n))] +[visit_exp numtype#387] +[visit_id numtype#387] +[visit_exp (`I32`_numtype, `%`_num_{i#41074}(n))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#41074}(n)] +[visit_exp i#41074] +[visit_id i#41074] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `ARRAY.NEW_DATA`_instr{typeidx#1589, dataidx#29}(x, y)] +[visit_exp typeidx#1589] +[visit_id typeidx#1589] +[visit_exp dataidx#29] +[visit_id dataidx#29] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] +[visit_exp y] +[visit_id y] +[visit_exp $const($cunpack(zt), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [`ARRAY.NEW_FIXED`_instr{typeidx#1591, u32#33}(x, `%`_u32{i#41140}(n))]] +[visit_exp $const($cunpack(zt), $cunpacknum_(zt, c))^n{c <- `c*`}] +[scope_enter c] +[visit_exp $const($cunpack(zt), $cunpacknum_(zt, c))] +[visit_exp $cunpack(zt)] +[visit_exp zt] +[visit_id zt] +[visit_exp $cunpacknum_(zt, c)] +[visit_exp zt] +[visit_id zt] not free +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp n] +[visit_id n] not free +[visit_exp `c*`] +[visit_id c*] no dims +[visit_id c*] +[visit_exp [`ARRAY.NEW_FIXED`_instr{typeidx#1591, u32#33}(x, `%`_u32{i#41140}(n))]] +[visit_exp `ARRAY.NEW_FIXED`_instr{typeidx#1591, u32#33}(x, `%`_u32{i#41140}(n))] +[visit_exp typeidx#1591] +[visit_id typeidx#1591] +[visit_exp u32#33] +[visit_id u32#33] +[visit_exp (x, `%`_u32{i#41140}(n))] +[visit_exp x] +[visit_id x] not free +[visit_exp `%`_u32{i#41140}(n)] +[visit_exp i#41140] +[visit_id i#41140] +[visit_exp (n)] +[visit_exp n] +[visit_id n] not free +[visit_exp ($type(z, x), `ARRAY`_comptype{fieldtype#45}(`%%`_fieldtype{`mut?#1133`, storagetype#671}(mut?{mut <- `mut?`}, zt)))] +[visit_exp $type(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `ARRAY`_comptype{fieldtype#45}(`%%`_fieldtype{`mut?#1133`, storagetype#671}(mut?{mut <- `mut?`}, zt))] +[visit_exp fieldtype#45] +[visit_id fieldtype#45] +[visit_exp (`%%`_fieldtype{`mut?#1133`, storagetype#671}(mut?{mut <- `mut?`}, zt))] +[visit_exp `%%`_fieldtype{`mut?#1133`, storagetype#671}(mut?{mut <- `mut?`}, zt)] +[visit_exp `mut?#1133`] +[visit_id mut?#1133] +[visit_exp storagetype#671] +[visit_id storagetype#671] +[visit_exp (mut?{mut <- `mut?`}, zt)] +[visit_exp mut?{mut <- `mut?`}] +[scope_enter mut] +[visit_exp mut] +[visit_id mut] not free +[visit_id mut] not free +[scope_exit mut] +[visit_exp `mut?`] +[visit_id mut?] no dims +[visit_id mut?] +[visit_exp zt] +[visit_id zt] not free +[visit_exp ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).`BYTES`_datainst{`byte*#1876`}[i!`%`_num_{i#41174}.0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)])] +[visit_exp $concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] +[visit_exp $zbytes_(zt, c)^n{c <- `c*`}] +[scope_enter c] +[visit_exp $zbytes_(zt, c)] +[visit_exp zt] +[visit_id zt] not free +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp n] +[visit_id n] not free +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[visit_exp ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] +[visit_exp (($zsize(zt) : nat <:> rat) / (8 : nat <:> rat))] +[visit_exp ($zsize(zt) : nat <:> rat)] +[visit_exp $zsize(zt)] +[visit_exp zt] +[visit_id zt] not free +[visit_exp (8 : nat <:> rat)] +[visit_exp 8] +[visit_exp $data(z, y).`BYTES`_datainst{`byte*#1876`}[i!`%`_num_{i#41174}.0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]] +[visit_exp $data(z, y).`BYTES`_datainst{`byte*#1876`}] +[visit_exp $data(z, y)] +[visit_exp z] +[visit_id z] not free +[visit_exp y] +[visit_id y] not free +[visit_exp `byte*#1876`] +[visit_id byte*#1876] +[visit_exp i!`%`_num_{i#41174}.0] +[visit_exp i!`%`_num_{i#41174}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#41174] +[visit_id i#41174] +[visit_exp ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] +[visit_exp (((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat))] +[visit_exp ((n * $zsize(zt)) : nat <:> rat)] +[visit_exp (n * $zsize(zt))] +[visit_exp n] +[visit_id n] not free +[visit_exp $zsize(zt)] +[visit_exp zt] +[visit_id zt] not free +[visit_exp (8 : nat <:> rat)] +[visit_exp 8] +[check_dims] heaptype#1433 ht i instr*#1926 numtype#389 state#1811 sx sx?#17 typeidx#1593 x z +[visit_exp `%;%`_config{state#1811, `instr*#1926`}(z, [`REF.NULL`_instr{heaptype#1433}(ht) `CONST`_instr{numtype#389}(`I32`_numtype, i) `ARRAY.GET`_instr{`sx?#17`, typeidx#1593}(sx?{sx <- `sx?`}, x)])] +[visit_exp state#1811] +[visit_id state#1811] +[visit_exp `instr*#1926`] +[visit_id instr*#1926] +[visit_exp (z, [`REF.NULL`_instr{heaptype#1433}(ht) `CONST`_instr{numtype#389}(`I32`_numtype, i) `ARRAY.GET`_instr{`sx?#17`, typeidx#1593}(sx?{sx <- `sx?`}, x)])] +[visit_exp z] +[visit_id z] +[visit_exp [`REF.NULL`_instr{heaptype#1433}(ht) `CONST`_instr{numtype#389}(`I32`_numtype, i) `ARRAY.GET`_instr{`sx?#17`, typeidx#1593}(sx?{sx <- `sx?`}, x)]] +[visit_exp `REF.NULL`_instr{heaptype#1433}(ht)] +[visit_exp heaptype#1433] +[visit_id heaptype#1433] +[visit_exp (ht)] +[visit_exp ht] +[visit_id ht] +[visit_exp `CONST`_instr{numtype#389}(`I32`_numtype, i)] +[visit_exp numtype#389] +[visit_id numtype#389] +[visit_exp (`I32`_numtype, i)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i] +[visit_id i] +[visit_exp `ARRAY.GET`_instr{`sx?#17`, typeidx#1593}(sx?{sx <- `sx?`}, x)] +[visit_exp `sx?#17`] +[visit_id sx?#17] +[visit_exp typeidx#1593] +[visit_id typeidx#1593] +[visit_exp (sx?{sx <- `sx?`}, x)] +[visit_exp sx?{sx <- `sx?`}] +[scope_enter sx] +[visit_exp sx] +[visit_id sx] not free +[visit_id sx] not free +[scope_exit sx] +[visit_exp `sx?`] +[visit_id sx?] no dims +[visit_id sx?] +[visit_exp x] +[visit_id x] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[check_dims] a arrayaddr#5 fieldval*#6 i i#41392 instr*#1938 numtype#391 state#1823 sx sx?#19 typeidx#1595 x z +[visit_exp `%;%`_config{state#1823, `instr*#1938`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#5}(a) `CONST`_instr{numtype#391}(`I32`_numtype, i) `ARRAY.GET`_instr{`sx?#19`, typeidx#1595}(sx?{sx <- `sx?`}, x)])] +[visit_exp state#1823] +[visit_id state#1823] +[visit_exp `instr*#1938`] +[visit_id instr*#1938] +[visit_exp (z, [`REF.ARRAY_ADDR`_instr{arrayaddr#5}(a) `CONST`_instr{numtype#391}(`I32`_numtype, i) `ARRAY.GET`_instr{`sx?#19`, typeidx#1595}(sx?{sx <- `sx?`}, x)])] +[visit_exp z] +[visit_id z] +[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#5}(a) `CONST`_instr{numtype#391}(`I32`_numtype, i) `ARRAY.GET`_instr{`sx?#19`, typeidx#1595}(sx?{sx <- `sx?`}, x)]] +[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#5}(a)] +[visit_exp arrayaddr#5] +[visit_id arrayaddr#5] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp `CONST`_instr{numtype#391}(`I32`_numtype, i)] +[visit_exp numtype#391] +[visit_id numtype#391] +[visit_exp (`I32`_numtype, i)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i] +[visit_id i] +[visit_exp `ARRAY.GET`_instr{`sx?#19`, typeidx#1595}(sx?{sx <- `sx?`}, x)] +[visit_exp `sx?#19`] +[visit_id sx?#19] +[visit_exp typeidx#1595] +[visit_id typeidx#1595] +[visit_exp (sx?{sx <- `sx?`}, x)] +[visit_exp sx?{sx <- `sx?`}] +[scope_enter sx] +[visit_exp sx] +[visit_id sx] not free +[visit_id sx] not free +[scope_exit sx] +[visit_exp `sx?`] +[visit_id sx?] no dims +[visit_id sx?] +[visit_exp x] +[visit_id x] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[visit_exp (i!`%`_num_{i#41392}.0 >= |$arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#6`}|)] +[visit_exp i!`%`_num_{i#41392}.0] +[visit_exp i!`%`_num_{i#41392}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#41392] +[visit_id i#41392] +[visit_exp |$arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#6`}|] +[visit_exp $arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#6`}] +[visit_exp $arrayinst(z)[a]] +[visit_exp $arrayinst(z)] +[visit_exp z] +[visit_id z] not free +[visit_exp a] +[visit_id a] not free +[visit_exp `fieldval*#6`] +[visit_id fieldval*#6] +[check_dims] a arrayaddr#7 fieldtype#47 fieldval*#7 i i#41467 instr*#1950 mut mut?#1145 numtype#393 state#1835 storagetype#683 sx sx?#21 typeidx#1597 x z zt +[visit_exp `%;%`_config{state#1835, `instr*#1950`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#7}(a) `CONST`_instr{numtype#393}(`I32`_numtype, i) `ARRAY.GET`_instr{`sx?#21`, typeidx#1597}(sx?{sx <- `sx?`}, x)])] +[visit_exp state#1835] +[visit_id state#1835] +[visit_exp `instr*#1950`] +[visit_id instr*#1950] +[visit_exp (z, [`REF.ARRAY_ADDR`_instr{arrayaddr#7}(a) `CONST`_instr{numtype#393}(`I32`_numtype, i) `ARRAY.GET`_instr{`sx?#21`, typeidx#1597}(sx?{sx <- `sx?`}, x)])] +[visit_exp z] +[visit_id z] +[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#7}(a) `CONST`_instr{numtype#393}(`I32`_numtype, i) `ARRAY.GET`_instr{`sx?#21`, typeidx#1597}(sx?{sx <- `sx?`}, x)]] +[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#7}(a)] +[visit_exp arrayaddr#7] +[visit_id arrayaddr#7] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp `CONST`_instr{numtype#393}(`I32`_numtype, i)] +[visit_exp numtype#393] +[visit_id numtype#393] +[visit_exp (`I32`_numtype, i)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i] +[visit_id i] +[visit_exp `ARRAY.GET`_instr{`sx?#21`, typeidx#1597}(sx?{sx <- `sx?`}, x)] +[visit_exp `sx?#21`] +[visit_id sx?#21] +[visit_exp typeidx#1597] +[visit_id typeidx#1597] +[visit_exp (sx?{sx <- `sx?`}, x)] +[visit_exp sx?{sx <- `sx?`}] +[scope_enter sx] +[visit_exp sx] +[visit_id sx] not free +[visit_id sx] not free +[scope_exit sx] +[visit_exp `sx?`] +[visit_id sx?] no dims +[visit_id sx?] +[visit_exp x] +[visit_id x] +[visit_exp [($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#7`}[i!`%`_num_{i#41467}.0]) : val <: instr)]] +[visit_exp ($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#7`}[i!`%`_num_{i#41467}.0]) : val <: instr)] +[visit_exp $unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#7`}[i!`%`_num_{i#41467}.0])] +[visit_exp zt] +[visit_id zt] +[visit_exp sx?{sx <- `sx?`}] +[scope_enter sx] +[visit_exp sx] +[visit_id sx] not free +[visit_id sx] not free +[scope_exit sx] +[visit_exp `sx?`] +[visit_id sx?] not free +[visit_id sx?] no dims +[visit_exp $arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#7`}[i!`%`_num_{i#41467}.0]] +[visit_exp $arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#7`}] +[visit_exp $arrayinst(z)[a]] +[visit_exp $arrayinst(z)] +[visit_exp z] +[visit_id z] not free +[visit_exp a] +[visit_id a] not free +[visit_exp `fieldval*#7`] +[visit_id fieldval*#7] +[visit_exp i!`%`_num_{i#41467}.0] +[visit_exp i!`%`_num_{i#41467}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#41467] +[visit_id i#41467] +[visit_exp ($type(z, x), `ARRAY`_comptype{fieldtype#47}(`%%`_fieldtype{`mut?#1145`, storagetype#683}(mut?{mut <- `mut?`}, zt)))] +[visit_exp $type(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `ARRAY`_comptype{fieldtype#47}(`%%`_fieldtype{`mut?#1145`, storagetype#683}(mut?{mut <- `mut?`}, zt))] +[visit_exp fieldtype#47] +[visit_id fieldtype#47] +[visit_exp (`%%`_fieldtype{`mut?#1145`, storagetype#683}(mut?{mut <- `mut?`}, zt))] +[visit_exp `%%`_fieldtype{`mut?#1145`, storagetype#683}(mut?{mut <- `mut?`}, zt)] +[visit_exp `mut?#1145`] +[visit_id mut?#1145] +[visit_exp storagetype#683] +[visit_id storagetype#683] +[visit_exp (mut?{mut <- `mut?`}, zt)] +[visit_exp mut?{mut <- `mut?`}] +[scope_enter mut] +[visit_exp mut] +[visit_id mut] not free +[visit_id mut] not free +[scope_exit mut] +[visit_exp `mut?`] +[visit_id mut?] no dims +[visit_id mut?] +[visit_exp zt] +[visit_id zt] not free +[check_dims] heaptype#1435 ht i instr*#1962 instr*#1974 numtype#395 state#1847 state#1859 typeidx#1599 val x z +[visit_exp `%;%`_config{state#1847, `instr*#1962`}(z, [`REF.NULL`_instr{heaptype#1435}(ht) `CONST`_instr{numtype#395}(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr{typeidx#1599}(x)])] +[visit_exp state#1847] +[visit_id state#1847] +[visit_exp `instr*#1962`] +[visit_id instr*#1962] +[visit_exp (z, [`REF.NULL`_instr{heaptype#1435}(ht) `CONST`_instr{numtype#395}(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr{typeidx#1599}(x)])] +[visit_exp z] +[visit_id z] +[visit_exp [`REF.NULL`_instr{heaptype#1435}(ht) `CONST`_instr{numtype#395}(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr{typeidx#1599}(x)]] +[visit_exp `REF.NULL`_instr{heaptype#1435}(ht)] +[visit_exp heaptype#1435] +[visit_id heaptype#1435] +[visit_exp (ht)] +[visit_exp ht] +[visit_id ht] +[visit_exp `CONST`_instr{numtype#395}(`I32`_numtype, i)] +[visit_exp numtype#395] +[visit_id numtype#395] +[visit_exp (`I32`_numtype, i)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i] +[visit_id i] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] +[visit_exp `ARRAY.SET`_instr{typeidx#1599}(x)] +[visit_exp typeidx#1599] +[visit_id typeidx#1599] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%;%`_config{state#1859, `instr*#1974`}(z, [`TRAP`_instr])] +[visit_exp state#1859] +[visit_id state#1859] +[visit_exp `instr*#1974`] +[visit_id instr*#1974] +[visit_exp (z, [`TRAP`_instr])] +[visit_exp z] +[visit_id z] not free +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[check_dims] a arrayaddr#9 fieldval*#8 i i#41549 instr*#1986 instr*#1998 numtype#397 state#1871 state#1883 typeidx#1601 val x z +[visit_exp `%;%`_config{state#1871, `instr*#1986`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#9}(a) `CONST`_instr{numtype#397}(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr{typeidx#1601}(x)])] +[visit_exp state#1871] +[visit_id state#1871] +[visit_exp `instr*#1986`] +[visit_id instr*#1986] +[visit_exp (z, [`REF.ARRAY_ADDR`_instr{arrayaddr#9}(a) `CONST`_instr{numtype#397}(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr{typeidx#1601}(x)])] +[visit_exp z] +[visit_id z] +[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#9}(a) `CONST`_instr{numtype#397}(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr{typeidx#1601}(x)]] +[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#9}(a)] +[visit_exp arrayaddr#9] +[visit_id arrayaddr#9] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp `CONST`_instr{numtype#397}(`I32`_numtype, i)] +[visit_exp numtype#397] +[visit_id numtype#397] +[visit_exp (`I32`_numtype, i)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i] +[visit_id i] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] +[visit_exp `ARRAY.SET`_instr{typeidx#1601}(x)] +[visit_exp typeidx#1601] +[visit_id typeidx#1601] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%;%`_config{state#1883, `instr*#1998`}(z, [`TRAP`_instr])] +[visit_exp state#1883] +[visit_id state#1883] +[visit_exp `instr*#1998`] +[visit_id instr*#1998] +[visit_exp (z, [`TRAP`_instr])] +[visit_exp z] +[visit_id z] not free +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[visit_exp (i!`%`_num_{i#41549}.0 >= |$arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#8`}|)] +[visit_exp i!`%`_num_{i#41549}.0] +[visit_exp i!`%`_num_{i#41549}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#41549] +[visit_id i#41549] +[visit_exp |$arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#8`}|] +[visit_exp $arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#8`}] +[visit_exp $arrayinst(z)[a]] +[visit_exp $arrayinst(z)] +[visit_exp z] +[visit_id z] not free +[visit_exp a] +[visit_id a] not free +[visit_exp `fieldval*#8`] +[visit_id fieldval*#8] +[check_dims] a arrayaddr#11 fieldtype#49 i i#41587 instr*#2010 instr*#2022 mut mut?#1157 numtype#399 state#1895 state#1907 storagetype#695 typeidx#1603 val x z zt +[visit_exp `%;%`_config{state#1895, `instr*#2010`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#11}(a) `CONST`_instr{numtype#399}(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr{typeidx#1603}(x)])] +[visit_exp state#1895] +[visit_id state#1895] +[visit_exp `instr*#2010`] +[visit_id instr*#2010] +[visit_exp (z, [`REF.ARRAY_ADDR`_instr{arrayaddr#11}(a) `CONST`_instr{numtype#399}(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr{typeidx#1603}(x)])] +[visit_exp z] +[visit_id z] +[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#11}(a) `CONST`_instr{numtype#399}(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr{typeidx#1603}(x)]] +[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#11}(a)] +[visit_exp arrayaddr#11] +[visit_id arrayaddr#11] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp `CONST`_instr{numtype#399}(`I32`_numtype, i)] +[visit_exp numtype#399] +[visit_id numtype#399] +[visit_exp (`I32`_numtype, i)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i] +[visit_id i] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] +[visit_exp `ARRAY.SET`_instr{typeidx#1603}(x)] +[visit_exp typeidx#1603] +[visit_id typeidx#1603] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%;%`_config{state#1907, `instr*#2022`}($with_array(z, a, i!`%`_num_{i#41587}.0, $packfield_(zt, val)), [])] +[visit_exp state#1907] +[visit_id state#1907] +[visit_exp `instr*#2022`] +[visit_id instr*#2022] +[visit_exp ($with_array(z, a, i!`%`_num_{i#41587}.0, $packfield_(zt, val)), [])] +[visit_exp $with_array(z, a, i!`%`_num_{i#41587}.0, $packfield_(zt, val))] +[visit_exp z] +[visit_id z] not free +[visit_exp a] +[visit_id a] not free +[visit_exp i!`%`_num_{i#41587}.0] +[visit_exp i!`%`_num_{i#41587}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#41587] +[visit_id i#41587] +[visit_exp $packfield_(zt, val)] +[visit_exp zt] +[visit_id zt] +[visit_exp val] +[visit_id val] not free +[visit_exp []] +[visit_exp ($type(z, x), `ARRAY`_comptype{fieldtype#49}(`%%`_fieldtype{`mut?#1157`, storagetype#695}(mut?{mut <- `mut?`}, zt)))] +[visit_exp $type(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `ARRAY`_comptype{fieldtype#49}(`%%`_fieldtype{`mut?#1157`, storagetype#695}(mut?{mut <- `mut?`}, zt))] +[visit_exp fieldtype#49] +[visit_id fieldtype#49] +[visit_exp (`%%`_fieldtype{`mut?#1157`, storagetype#695}(mut?{mut <- `mut?`}, zt))] +[visit_exp `%%`_fieldtype{`mut?#1157`, storagetype#695}(mut?{mut <- `mut?`}, zt)] +[visit_exp `mut?#1157`] +[visit_id mut?#1157] +[visit_exp storagetype#695] +[visit_id storagetype#695] +[visit_exp (mut?{mut <- `mut?`}, zt)] +[visit_exp mut?{mut <- `mut?`}] +[scope_enter mut] +[visit_exp mut] +[visit_id mut] not free +[visit_id mut] not free +[scope_exit mut] +[visit_exp `mut?`] +[visit_id mut?] no dims +[visit_id mut?] +[visit_exp zt] +[visit_id zt] not free +[check_dims] heaptype#1437 ht instr*#2034 state#1919 z +[visit_exp `%;%`_config{state#1919, `instr*#2034`}(z, [`REF.NULL`_instr{heaptype#1437}(ht) `ARRAY.LEN`_instr])] +[visit_exp state#1919] +[visit_id state#1919] +[visit_exp `instr*#2034`] +[visit_id instr*#2034] +[visit_exp (z, [`REF.NULL`_instr{heaptype#1437}(ht) `ARRAY.LEN`_instr])] +[visit_exp z] +[visit_id z] +[visit_exp [`REF.NULL`_instr{heaptype#1437}(ht) `ARRAY.LEN`_instr]] +[visit_exp `REF.NULL`_instr{heaptype#1437}(ht)] +[visit_exp heaptype#1437] +[visit_id heaptype#1437] +[visit_exp (ht)] +[visit_exp ht] +[visit_id ht] +[visit_exp `ARRAY.LEN`_instr] +[visit_exp ()] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[check_dims] a arrayaddr#13 fieldval*#9 i#41621 instr*#2046 numtype#401 state#1931 z +[visit_exp `%;%`_config{state#1931, `instr*#2046`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#13}(a) `ARRAY.LEN`_instr])] +[visit_exp state#1931] +[visit_id state#1931] +[visit_exp `instr*#2046`] +[visit_id instr*#2046] +[visit_exp (z, [`REF.ARRAY_ADDR`_instr{arrayaddr#13}(a) `ARRAY.LEN`_instr])] +[visit_exp z] +[visit_id z] +[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#13}(a) `ARRAY.LEN`_instr]] +[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#13}(a)] +[visit_exp arrayaddr#13] +[visit_id arrayaddr#13] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp `ARRAY.LEN`_instr] +[visit_exp ()] +[visit_exp [`CONST`_instr{numtype#401}(`I32`_numtype, `%`_num_{i#41621}(|$arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#9`}|))]] +[visit_exp `CONST`_instr{numtype#401}(`I32`_numtype, `%`_num_{i#41621}(|$arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#9`}|))] +[visit_exp numtype#401] +[visit_id numtype#401] +[visit_exp (`I32`_numtype, `%`_num_{i#41621}(|$arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#9`}|))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#41621}(|$arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#9`}|)] +[visit_exp i#41621] +[visit_id i#41621] +[visit_exp (|$arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#9`}|)] +[visit_exp |$arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#9`}|] +[visit_exp $arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#9`}] +[visit_exp $arrayinst(z)[a]] +[visit_exp $arrayinst(z)] +[visit_exp z] +[visit_id z] not free +[visit_exp a] +[visit_id a] not free +[visit_exp `fieldval*#9`] +[visit_id fieldval*#9] +[check_dims] heaptype#1439 ht i i#41659 instr*#2058 n numtype#403 numtype#405 state#1943 typeidx#1605 val x z +[visit_exp `%;%`_config{state#1943, `instr*#2058`}(z, [`REF.NULL`_instr{heaptype#1439}(ht) `CONST`_instr{numtype#403}(`I32`_numtype, i) (val : val <: instr) `CONST`_instr{numtype#405}(`I32`_numtype, `%`_num_{i#41659}(n)) `ARRAY.FILL`_instr{typeidx#1605}(x)])] +[visit_exp state#1943] +[visit_id state#1943] +[visit_exp `instr*#2058`] +[visit_id instr*#2058] +[visit_exp (z, [`REF.NULL`_instr{heaptype#1439}(ht) `CONST`_instr{numtype#403}(`I32`_numtype, i) (val : val <: instr) `CONST`_instr{numtype#405}(`I32`_numtype, `%`_num_{i#41659}(n)) `ARRAY.FILL`_instr{typeidx#1605}(x)])] +[visit_exp z] +[visit_id z] +[visit_exp [`REF.NULL`_instr{heaptype#1439}(ht) `CONST`_instr{numtype#403}(`I32`_numtype, i) (val : val <: instr) `CONST`_instr{numtype#405}(`I32`_numtype, `%`_num_{i#41659}(n)) `ARRAY.FILL`_instr{typeidx#1605}(x)]] +[visit_exp `REF.NULL`_instr{heaptype#1439}(ht)] +[visit_exp heaptype#1439] +[visit_id heaptype#1439] +[visit_exp (ht)] +[visit_exp ht] +[visit_id ht] +[visit_exp `CONST`_instr{numtype#403}(`I32`_numtype, i)] +[visit_exp numtype#403] +[visit_id numtype#403] +[visit_exp (`I32`_numtype, i)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i] +[visit_id i] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] +[visit_exp `CONST`_instr{numtype#405}(`I32`_numtype, `%`_num_{i#41659}(n))] +[visit_exp numtype#405] +[visit_id numtype#405] +[visit_exp (`I32`_numtype, `%`_num_{i#41659}(n))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#41659}(n)] +[visit_exp i#41659] +[visit_id i#41659] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `ARRAY.FILL`_instr{typeidx#1605}(x)] +[visit_exp typeidx#1605] +[visit_id typeidx#1605] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[check_dims] a arrayaddr#15 fieldval*#10 i i#41711 i#41739 instr*#2070 n numtype#407 numtype#409 state#1955 typeidx#1607 val x z +[visit_exp `%;%`_config{state#1955, `instr*#2070`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#15}(a) `CONST`_instr{numtype#407}(`I32`_numtype, i) (val : val <: instr) `CONST`_instr{numtype#409}(`I32`_numtype, `%`_num_{i#41711}(n)) `ARRAY.FILL`_instr{typeidx#1607}(x)])] +[visit_exp state#1955] +[visit_id state#1955] +[visit_exp `instr*#2070`] +[visit_id instr*#2070] +[visit_exp (z, [`REF.ARRAY_ADDR`_instr{arrayaddr#15}(a) `CONST`_instr{numtype#407}(`I32`_numtype, i) (val : val <: instr) `CONST`_instr{numtype#409}(`I32`_numtype, `%`_num_{i#41711}(n)) `ARRAY.FILL`_instr{typeidx#1607}(x)])] +[visit_exp z] +[visit_id z] +[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#15}(a) `CONST`_instr{numtype#407}(`I32`_numtype, i) (val : val <: instr) `CONST`_instr{numtype#409}(`I32`_numtype, `%`_num_{i#41711}(n)) `ARRAY.FILL`_instr{typeidx#1607}(x)]] +[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#15}(a)] +[visit_exp arrayaddr#15] +[visit_id arrayaddr#15] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp `CONST`_instr{numtype#407}(`I32`_numtype, i)] +[visit_exp numtype#407] +[visit_id numtype#407] +[visit_exp (`I32`_numtype, i)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i] +[visit_id i] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] +[visit_exp `CONST`_instr{numtype#409}(`I32`_numtype, `%`_num_{i#41711}(n))] +[visit_exp numtype#409] +[visit_id numtype#409] +[visit_exp (`I32`_numtype, `%`_num_{i#41711}(n))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#41711}(n)] +[visit_exp i#41711] +[visit_id i#41711] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `ARRAY.FILL`_instr{typeidx#1607}(x)] +[visit_exp typeidx#1607] +[visit_id typeidx#1607] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[visit_exp ((i!`%`_num_{i#41739}.0 + n) > |$arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#10`}|)] +[visit_exp (i!`%`_num_{i#41739}.0 + n)] +[visit_exp i!`%`_num_{i#41739}.0] +[visit_exp i!`%`_num_{i#41739}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#41739] +[visit_id i#41739] +[visit_exp n] +[visit_id n] not free +[visit_exp |$arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#10`}|] +[visit_exp $arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#10`}] +[visit_exp $arrayinst(z)[a]] +[visit_exp $arrayinst(z)] +[visit_exp z] +[visit_id z] not free +[visit_exp a] +[visit_id a] not free +[visit_exp `fieldval*#10`] +[visit_id fieldval*#10] +[check_dims] a arrayaddr#17 i i#41777 instr*#2082 n numtype#411 numtype#413 state#1967 typeidx#1609 val x z +[visit_exp `%;%`_config{state#1967, `instr*#2082`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#17}(a) `CONST`_instr{numtype#411}(`I32`_numtype, i) (val : val <: instr) `CONST`_instr{numtype#413}(`I32`_numtype, `%`_num_{i#41777}(n)) `ARRAY.FILL`_instr{typeidx#1609}(x)])] +[visit_exp state#1967] +[visit_id state#1967] +[visit_exp `instr*#2082`] +[visit_id instr*#2082] +[visit_exp (z, [`REF.ARRAY_ADDR`_instr{arrayaddr#17}(a) `CONST`_instr{numtype#411}(`I32`_numtype, i) (val : val <: instr) `CONST`_instr{numtype#413}(`I32`_numtype, `%`_num_{i#41777}(n)) `ARRAY.FILL`_instr{typeidx#1609}(x)])] +[visit_exp z] +[visit_id z] +[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#17}(a) `CONST`_instr{numtype#411}(`I32`_numtype, i) (val : val <: instr) `CONST`_instr{numtype#413}(`I32`_numtype, `%`_num_{i#41777}(n)) `ARRAY.FILL`_instr{typeidx#1609}(x)]] +[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#17}(a)] +[visit_exp arrayaddr#17] +[visit_id arrayaddr#17] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp `CONST`_instr{numtype#411}(`I32`_numtype, i)] +[visit_exp numtype#411] +[visit_id numtype#411] +[visit_exp (`I32`_numtype, i)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i] +[visit_id i] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] +[visit_exp `CONST`_instr{numtype#413}(`I32`_numtype, `%`_num_{i#41777}(n))] +[visit_exp numtype#413] +[visit_id numtype#413] +[visit_exp (`I32`_numtype, `%`_num_{i#41777}(n))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#41777}(n)] +[visit_exp i#41777] +[visit_id i#41777] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `ARRAY.FILL`_instr{typeidx#1609}(x)] +[visit_exp typeidx#1609] +[visit_id typeidx#1609] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp []] +[visit_exp (n = 0)] +[visit_exp n] +[visit_id n] not free +[visit_exp 0] +[check_dims] a arrayaddr#19 arrayaddr#21 arrayaddr#23 i i#41829 i#41895 i#41905 i#41927 instr*#2094 n numtype#415 numtype#417 numtype#419 numtype#421 numtype#423 state#1979 typeidx#1611 typeidx#1613 typeidx#1615 val x z +[visit_exp `%;%`_config{state#1979, `instr*#2094`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#19}(a) `CONST`_instr{numtype#415}(`I32`_numtype, i) (val : val <: instr) `CONST`_instr{numtype#417}(`I32`_numtype, `%`_num_{i#41829}(n)) `ARRAY.FILL`_instr{typeidx#1611}(x)])] +[visit_exp state#1979] +[visit_id state#1979] +[visit_exp `instr*#2094`] +[visit_id instr*#2094] +[visit_exp (z, [`REF.ARRAY_ADDR`_instr{arrayaddr#19}(a) `CONST`_instr{numtype#415}(`I32`_numtype, i) (val : val <: instr) `CONST`_instr{numtype#417}(`I32`_numtype, `%`_num_{i#41829}(n)) `ARRAY.FILL`_instr{typeidx#1611}(x)])] +[visit_exp z] +[visit_id z] +[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#19}(a) `CONST`_instr{numtype#415}(`I32`_numtype, i) (val : val <: instr) `CONST`_instr{numtype#417}(`I32`_numtype, `%`_num_{i#41829}(n)) `ARRAY.FILL`_instr{typeidx#1611}(x)]] +[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#19}(a)] +[visit_exp arrayaddr#19] +[visit_id arrayaddr#19] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp `CONST`_instr{numtype#415}(`I32`_numtype, i)] +[visit_exp numtype#415] +[visit_id numtype#415] +[visit_exp (`I32`_numtype, i)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i] +[visit_id i] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] +[visit_exp `CONST`_instr{numtype#417}(`I32`_numtype, `%`_num_{i#41829}(n))] +[visit_exp numtype#417] +[visit_id numtype#417] +[visit_exp (`I32`_numtype, `%`_num_{i#41829}(n))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#41829}(n)] +[visit_exp i#41829] +[visit_id i#41829] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `ARRAY.FILL`_instr{typeidx#1611}(x)] +[visit_exp typeidx#1611] +[visit_id typeidx#1611] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#21}(a) `CONST`_instr{numtype#419}(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr{typeidx#1613}(x) `REF.ARRAY_ADDR`_instr{arrayaddr#23}(a) `CONST`_instr{numtype#421}(`I32`_numtype, `%`_num_{i#41905}((i!`%`_num_{i#41895}.0 + 1))) (val : val <: instr) `CONST`_instr{numtype#423}(`I32`_numtype, `%`_num_{i#41927}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `ARRAY.FILL`_instr{typeidx#1615}(x)]] +[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#21}(a)] +[visit_exp arrayaddr#21] +[visit_id arrayaddr#21] +[visit_exp (a)] +[visit_exp a] +[visit_id a] not free +[visit_exp `CONST`_instr{numtype#419}(`I32`_numtype, i)] +[visit_exp numtype#419] +[visit_id numtype#419] +[visit_exp (`I32`_numtype, i)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i] +[visit_id i] not free +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_exp `ARRAY.SET`_instr{typeidx#1613}(x)] +[visit_exp typeidx#1613] +[visit_id typeidx#1613] +[visit_exp (x)] +[visit_exp x] +[visit_id x] not free +[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#23}(a)] +[visit_exp arrayaddr#23] +[visit_id arrayaddr#23] +[visit_exp (a)] +[visit_exp a] +[visit_id a] not free +[visit_exp `CONST`_instr{numtype#421}(`I32`_numtype, `%`_num_{i#41905}((i!`%`_num_{i#41895}.0 + 1)))] +[visit_exp numtype#421] +[visit_id numtype#421] +[visit_exp (`I32`_numtype, `%`_num_{i#41905}((i!`%`_num_{i#41895}.0 + 1)))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#41905}((i!`%`_num_{i#41895}.0 + 1))] +[visit_exp i#41905] +[visit_id i#41905] +[visit_exp ((i!`%`_num_{i#41895}.0 + 1))] +[visit_exp (i!`%`_num_{i#41895}.0 + 1)] +[visit_exp i!`%`_num_{i#41895}.0] +[visit_exp i!`%`_num_{i#41895}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#41895] +[visit_id i#41895] +[visit_exp 1] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_exp `CONST`_instr{numtype#423}(`I32`_numtype, `%`_num_{i#41927}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp numtype#423] +[visit_id numtype#423] +[visit_exp (`I32`_numtype, `%`_num_{i#41927}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#41927}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp i#41927] +[visit_id i#41927] +[visit_exp ((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp (((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp ((n : nat <:> int) - (1 : nat <:> int))] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp `ARRAY.FILL`_instr{typeidx#1615}(x)] +[visit_exp typeidx#1615] +[visit_id typeidx#1615] +[visit_exp (x)] +[visit_exp x] +[visit_id x] not free +[check_dims] heaptype#1441 ht_1 i#41993 i_1 i_2 instr*#2106 n numtype#425 numtype#427 numtype#429 ref state#1991 typeidx#1617 x_1 x_2 z +[visit_exp `%;%`_config{state#1991, `instr*#2106`}(z, [`REF.NULL`_instr{heaptype#1441}(ht_1) `CONST`_instr{numtype#425}(`I32`_numtype, i_1) (ref : ref <: instr) `CONST`_instr{numtype#427}(`I32`_numtype, i_2) `CONST`_instr{numtype#429}(`I32`_numtype, `%`_num_{i#41993}(n)) `ARRAY.COPY`_instr{typeidx#1617}(x_1, x_2)])] +[visit_exp state#1991] +[visit_id state#1991] +[visit_exp `instr*#2106`] +[visit_id instr*#2106] +[visit_exp (z, [`REF.NULL`_instr{heaptype#1441}(ht_1) `CONST`_instr{numtype#425}(`I32`_numtype, i_1) (ref : ref <: instr) `CONST`_instr{numtype#427}(`I32`_numtype, i_2) `CONST`_instr{numtype#429}(`I32`_numtype, `%`_num_{i#41993}(n)) `ARRAY.COPY`_instr{typeidx#1617}(x_1, x_2)])] +[visit_exp z] +[visit_id z] +[visit_exp [`REF.NULL`_instr{heaptype#1441}(ht_1) `CONST`_instr{numtype#425}(`I32`_numtype, i_1) (ref : ref <: instr) `CONST`_instr{numtype#427}(`I32`_numtype, i_2) `CONST`_instr{numtype#429}(`I32`_numtype, `%`_num_{i#41993}(n)) `ARRAY.COPY`_instr{typeidx#1617}(x_1, x_2)]] +[visit_exp `REF.NULL`_instr{heaptype#1441}(ht_1)] +[visit_exp heaptype#1441] +[visit_id heaptype#1441] +[visit_exp (ht_1)] +[visit_exp ht_1] +[visit_id ht_1] +[visit_exp `CONST`_instr{numtype#425}(`I32`_numtype, i_1)] +[visit_exp numtype#425] +[visit_id numtype#425] +[visit_exp (`I32`_numtype, i_1)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp (ref : ref <: instr)] +[visit_exp ref] +[visit_id ref] +[visit_exp `CONST`_instr{numtype#427}(`I32`_numtype, i_2)] +[visit_exp numtype#427] +[visit_id numtype#427] +[visit_exp (`I32`_numtype, i_2)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i_2] +[visit_id i_2] +[visit_exp `CONST`_instr{numtype#429}(`I32`_numtype, `%`_num_{i#41993}(n))] +[visit_exp numtype#429] +[visit_id numtype#429] +[visit_exp (`I32`_numtype, `%`_num_{i#41993}(n))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#41993}(n)] +[visit_exp i#41993] +[visit_id i#41993] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `ARRAY.COPY`_instr{typeidx#1617}(x_1, x_2)] +[visit_exp typeidx#1617] +[visit_id typeidx#1617] +[visit_exp (x_1, x_2)] +[visit_exp x_1] +[visit_id x_1] +[visit_exp x_2] +[visit_id x_2] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[check_dims] heaptype#1443 ht_2 i#42073 i_1 i_2 instr*#2118 n numtype#431 numtype#433 numtype#435 ref state#2003 typeidx#1620 x_1 x_2 z +[visit_exp `%;%`_config{state#2003, `instr*#2118`}(z, [(ref : ref <: instr) `CONST`_instr{numtype#431}(`I32`_numtype, i_1) `REF.NULL`_instr{heaptype#1443}(ht_2) `CONST`_instr{numtype#433}(`I32`_numtype, i_2) `CONST`_instr{numtype#435}(`I32`_numtype, `%`_num_{i#42073}(n)) `ARRAY.COPY`_instr{typeidx#1620}(x_1, x_2)])] +[visit_exp state#2003] +[visit_id state#2003] +[visit_exp `instr*#2118`] +[visit_id instr*#2118] +[visit_exp (z, [(ref : ref <: instr) `CONST`_instr{numtype#431}(`I32`_numtype, i_1) `REF.NULL`_instr{heaptype#1443}(ht_2) `CONST`_instr{numtype#433}(`I32`_numtype, i_2) `CONST`_instr{numtype#435}(`I32`_numtype, `%`_num_{i#42073}(n)) `ARRAY.COPY`_instr{typeidx#1620}(x_1, x_2)])] +[visit_exp z] +[visit_id z] +[visit_exp [(ref : ref <: instr) `CONST`_instr{numtype#431}(`I32`_numtype, i_1) `REF.NULL`_instr{heaptype#1443}(ht_2) `CONST`_instr{numtype#433}(`I32`_numtype, i_2) `CONST`_instr{numtype#435}(`I32`_numtype, `%`_num_{i#42073}(n)) `ARRAY.COPY`_instr{typeidx#1620}(x_1, x_2)]] +[visit_exp (ref : ref <: instr)] +[visit_exp ref] +[visit_id ref] +[visit_exp `CONST`_instr{numtype#431}(`I32`_numtype, i_1)] +[visit_exp numtype#431] +[visit_id numtype#431] +[visit_exp (`I32`_numtype, i_1)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp `REF.NULL`_instr{heaptype#1443}(ht_2)] +[visit_exp heaptype#1443] +[visit_id heaptype#1443] +[visit_exp (ht_2)] +[visit_exp ht_2] +[visit_id ht_2] +[visit_exp `CONST`_instr{numtype#433}(`I32`_numtype, i_2)] +[visit_exp numtype#433] +[visit_id numtype#433] +[visit_exp (`I32`_numtype, i_2)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i_2] +[visit_id i_2] +[visit_exp `CONST`_instr{numtype#435}(`I32`_numtype, `%`_num_{i#42073}(n))] +[visit_exp numtype#435] +[visit_id numtype#435] +[visit_exp (`I32`_numtype, `%`_num_{i#42073}(n))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#42073}(n)] +[visit_exp i#42073] +[visit_id i#42073] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `ARRAY.COPY`_instr{typeidx#1620}(x_1, x_2)] +[visit_exp typeidx#1620] +[visit_id typeidx#1620] +[visit_exp (x_1, x_2)] +[visit_exp x_1] +[visit_id x_1] +[visit_exp x_2] +[visit_id x_2] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[check_dims] a_1 a_2 arrayaddr#25 arrayaddr#27 fieldval*#11 i#42153 i#42195 i_1 i_2 instr*#2130 n numtype#437 numtype#439 numtype#441 state#2015 typeidx#1623 x_1 x_2 z +[visit_exp `%;%`_config{state#2015, `instr*#2130`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#25}(a_1) `CONST`_instr{numtype#437}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#27}(a_2) `CONST`_instr{numtype#439}(`I32`_numtype, i_2) `CONST`_instr{numtype#441}(`I32`_numtype, `%`_num_{i#42153}(n)) `ARRAY.COPY`_instr{typeidx#1623}(x_1, x_2)])] +[visit_exp state#2015] +[visit_id state#2015] +[visit_exp `instr*#2130`] +[visit_id instr*#2130] +[visit_exp (z, [`REF.ARRAY_ADDR`_instr{arrayaddr#25}(a_1) `CONST`_instr{numtype#437}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#27}(a_2) `CONST`_instr{numtype#439}(`I32`_numtype, i_2) `CONST`_instr{numtype#441}(`I32`_numtype, `%`_num_{i#42153}(n)) `ARRAY.COPY`_instr{typeidx#1623}(x_1, x_2)])] +[visit_exp z] +[visit_id z] +[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#25}(a_1) `CONST`_instr{numtype#437}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#27}(a_2) `CONST`_instr{numtype#439}(`I32`_numtype, i_2) `CONST`_instr{numtype#441}(`I32`_numtype, `%`_num_{i#42153}(n)) `ARRAY.COPY`_instr{typeidx#1623}(x_1, x_2)]] +[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#25}(a_1)] +[visit_exp arrayaddr#25] +[visit_id arrayaddr#25] +[visit_exp (a_1)] +[visit_exp a_1] +[visit_id a_1] +[visit_exp `CONST`_instr{numtype#437}(`I32`_numtype, i_1)] +[visit_exp numtype#437] +[visit_id numtype#437] +[visit_exp (`I32`_numtype, i_1)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#27}(a_2)] +[visit_exp arrayaddr#27] +[visit_id arrayaddr#27] +[visit_exp (a_2)] +[visit_exp a_2] +[visit_id a_2] +[visit_exp `CONST`_instr{numtype#439}(`I32`_numtype, i_2)] +[visit_exp numtype#439] +[visit_id numtype#439] +[visit_exp (`I32`_numtype, i_2)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i_2] +[visit_id i_2] +[visit_exp `CONST`_instr{numtype#441}(`I32`_numtype, `%`_num_{i#42153}(n))] +[visit_exp numtype#441] +[visit_id numtype#441] +[visit_exp (`I32`_numtype, `%`_num_{i#42153}(n))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#42153}(n)] +[visit_exp i#42153] +[visit_id i#42153] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `ARRAY.COPY`_instr{typeidx#1623}(x_1, x_2)] +[visit_exp typeidx#1623] +[visit_id typeidx#1623] +[visit_exp (x_1, x_2)] +[visit_exp x_1] +[visit_id x_1] +[visit_exp x_2] +[visit_id x_2] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[visit_exp ((i_1!`%`_num_{i#42195}.0 + n) > |$arrayinst(z)[a_1].`FIELDS`_arrayinst{`fieldval*#11`}|)] +[visit_exp (i_1!`%`_num_{i#42195}.0 + n)] +[visit_exp i_1!`%`_num_{i#42195}.0] +[visit_exp i_1!`%`_num_{i#42195}] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i#42195] +[visit_id i#42195] +[visit_exp n] +[visit_id n] not free +[visit_exp |$arrayinst(z)[a_1].`FIELDS`_arrayinst{`fieldval*#11`}|] +[visit_exp $arrayinst(z)[a_1].`FIELDS`_arrayinst{`fieldval*#11`}] +[visit_exp $arrayinst(z)[a_1]] +[visit_exp $arrayinst(z)] +[visit_exp z] +[visit_id z] not free +[visit_exp a_1] +[visit_id a_1] not free +[visit_exp `fieldval*#11`] +[visit_id fieldval*#11] +[check_dims] a_1 a_2 arrayaddr#29 arrayaddr#31 fieldval*#12 i#42247 i#42289 i_1 i_2 instr*#2142 n numtype#443 numtype#445 numtype#447 state#2027 typeidx#1626 x_1 x_2 z +[visit_exp `%;%`_config{state#2027, `instr*#2142`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#29}(a_1) `CONST`_instr{numtype#443}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#31}(a_2) `CONST`_instr{numtype#445}(`I32`_numtype, i_2) `CONST`_instr{numtype#447}(`I32`_numtype, `%`_num_{i#42247}(n)) `ARRAY.COPY`_instr{typeidx#1626}(x_1, x_2)])] +[visit_exp state#2027] +[visit_id state#2027] +[visit_exp `instr*#2142`] +[visit_id instr*#2142] +[visit_exp (z, [`REF.ARRAY_ADDR`_instr{arrayaddr#29}(a_1) `CONST`_instr{numtype#443}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#31}(a_2) `CONST`_instr{numtype#445}(`I32`_numtype, i_2) `CONST`_instr{numtype#447}(`I32`_numtype, `%`_num_{i#42247}(n)) `ARRAY.COPY`_instr{typeidx#1626}(x_1, x_2)])] +[visit_exp z] +[visit_id z] +[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#29}(a_1) `CONST`_instr{numtype#443}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#31}(a_2) `CONST`_instr{numtype#445}(`I32`_numtype, i_2) `CONST`_instr{numtype#447}(`I32`_numtype, `%`_num_{i#42247}(n)) `ARRAY.COPY`_instr{typeidx#1626}(x_1, x_2)]] +[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#29}(a_1)] +[visit_exp arrayaddr#29] +[visit_id arrayaddr#29] +[visit_exp (a_1)] +[visit_exp a_1] +[visit_id a_1] +[visit_exp `CONST`_instr{numtype#443}(`I32`_numtype, i_1)] +[visit_exp numtype#443] +[visit_id numtype#443] +[visit_exp (`I32`_numtype, i_1)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#31}(a_2)] +[visit_exp arrayaddr#31] +[visit_id arrayaddr#31] +[visit_exp (a_2)] +[visit_exp a_2] +[visit_id a_2] +[visit_exp `CONST`_instr{numtype#445}(`I32`_numtype, i_2)] +[visit_exp numtype#445] +[visit_id numtype#445] +[visit_exp (`I32`_numtype, i_2)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i_2] +[visit_id i_2] +[visit_exp `CONST`_instr{numtype#447}(`I32`_numtype, `%`_num_{i#42247}(n))] +[visit_exp numtype#447] +[visit_id numtype#447] +[visit_exp (`I32`_numtype, `%`_num_{i#42247}(n))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#42247}(n)] +[visit_exp i#42247] +[visit_id i#42247] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `ARRAY.COPY`_instr{typeidx#1626}(x_1, x_2)] +[visit_exp typeidx#1626] +[visit_id typeidx#1626] +[visit_exp (x_1, x_2)] +[visit_exp x_1] +[visit_id x_1] +[visit_exp x_2] +[visit_id x_2] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[visit_exp ((i_2!`%`_num_{i#42289}.0 + n) > |$arrayinst(z)[a_2].`FIELDS`_arrayinst{`fieldval*#12`}|)] +[visit_exp (i_2!`%`_num_{i#42289}.0 + n)] +[visit_exp i_2!`%`_num_{i#42289}.0] +[visit_exp i_2!`%`_num_{i#42289}] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp i#42289] +[visit_id i#42289] +[visit_exp n] +[visit_id n] not free +[visit_exp |$arrayinst(z)[a_2].`FIELDS`_arrayinst{`fieldval*#12`}|] +[visit_exp $arrayinst(z)[a_2].`FIELDS`_arrayinst{`fieldval*#12`}] +[visit_exp $arrayinst(z)[a_2]] +[visit_exp $arrayinst(z)] +[visit_exp z] +[visit_id z] not free +[visit_exp a_2] +[visit_id a_2] not free +[visit_exp `fieldval*#12`] +[visit_id fieldval*#12] +[check_dims] a_1 a_2 arrayaddr#33 arrayaddr#35 i#42341 i_1 i_2 instr*#2154 n numtype#449 numtype#451 numtype#453 state#2039 typeidx#1629 x_1 x_2 z +[visit_exp `%;%`_config{state#2039, `instr*#2154`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#33}(a_1) `CONST`_instr{numtype#449}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#35}(a_2) `CONST`_instr{numtype#451}(`I32`_numtype, i_2) `CONST`_instr{numtype#453}(`I32`_numtype, `%`_num_{i#42341}(n)) `ARRAY.COPY`_instr{typeidx#1629}(x_1, x_2)])] +[visit_exp state#2039] +[visit_id state#2039] +[visit_exp `instr*#2154`] +[visit_id instr*#2154] +[visit_exp (z, [`REF.ARRAY_ADDR`_instr{arrayaddr#33}(a_1) `CONST`_instr{numtype#449}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#35}(a_2) `CONST`_instr{numtype#451}(`I32`_numtype, i_2) `CONST`_instr{numtype#453}(`I32`_numtype, `%`_num_{i#42341}(n)) `ARRAY.COPY`_instr{typeidx#1629}(x_1, x_2)])] +[visit_exp z] +[visit_id z] +[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#33}(a_1) `CONST`_instr{numtype#449}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#35}(a_2) `CONST`_instr{numtype#451}(`I32`_numtype, i_2) `CONST`_instr{numtype#453}(`I32`_numtype, `%`_num_{i#42341}(n)) `ARRAY.COPY`_instr{typeidx#1629}(x_1, x_2)]] +[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#33}(a_1)] +[visit_exp arrayaddr#33] +[visit_id arrayaddr#33] +[visit_exp (a_1)] +[visit_exp a_1] +[visit_id a_1] +[visit_exp `CONST`_instr{numtype#449}(`I32`_numtype, i_1)] +[visit_exp numtype#449] +[visit_id numtype#449] +[visit_exp (`I32`_numtype, i_1)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#35}(a_2)] +[visit_exp arrayaddr#35] +[visit_id arrayaddr#35] +[visit_exp (a_2)] +[visit_exp a_2] +[visit_id a_2] +[visit_exp `CONST`_instr{numtype#451}(`I32`_numtype, i_2)] +[visit_exp numtype#451] +[visit_id numtype#451] +[visit_exp (`I32`_numtype, i_2)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i_2] +[visit_id i_2] +[visit_exp `CONST`_instr{numtype#453}(`I32`_numtype, `%`_num_{i#42341}(n))] +[visit_exp numtype#453] +[visit_id numtype#453] +[visit_exp (`I32`_numtype, `%`_num_{i#42341}(n))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#42341}(n)] +[visit_exp i#42341] +[visit_id i#42341] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `ARRAY.COPY`_instr{typeidx#1629}(x_1, x_2)] +[visit_exp typeidx#1629] +[visit_id typeidx#1629] +[visit_exp (x_1, x_2)] +[visit_exp x_1] +[visit_id x_1] +[visit_exp x_2] +[visit_id x_2] +[visit_exp []] +[visit_exp (n = 0)] +[visit_exp n] +[visit_id n] not free +[visit_exp 0] +[check_dims] a_1 a_2 arrayaddr#37 arrayaddr#39 arrayaddr#41 arrayaddr#43 arrayaddr#45 arrayaddr#47 fieldtype#51 i#42421 i#42564 i#42574 i#42600 i#42610 i#42632 i#42690 i#42700 i_1 i_2 instr*#2166 mut mut?#1169 n numtype#455 numtype#457 numtype#459 numtype#461 numtype#463 numtype#465 numtype#467 numtype#469 state#2051 storagetype#707 sx sx?#23 typeidx#1632 typeidx#1635 typeidx#1637 typeidx#1639 x_1 x_2 z zt_2 +[visit_exp `%;%`_config{state#2051, `instr*#2166`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#37}(a_1) `CONST`_instr{numtype#455}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#39}(a_2) `CONST`_instr{numtype#457}(`I32`_numtype, i_2) `CONST`_instr{numtype#459}(`I32`_numtype, `%`_num_{i#42421}(n)) `ARRAY.COPY`_instr{typeidx#1632}(x_1, x_2)])] +[visit_exp state#2051] +[visit_id state#2051] +[visit_exp `instr*#2166`] +[visit_id instr*#2166] +[visit_exp (z, [`REF.ARRAY_ADDR`_instr{arrayaddr#37}(a_1) `CONST`_instr{numtype#455}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#39}(a_2) `CONST`_instr{numtype#457}(`I32`_numtype, i_2) `CONST`_instr{numtype#459}(`I32`_numtype, `%`_num_{i#42421}(n)) `ARRAY.COPY`_instr{typeidx#1632}(x_1, x_2)])] +[visit_exp z] +[visit_id z] +[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#37}(a_1) `CONST`_instr{numtype#455}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#39}(a_2) `CONST`_instr{numtype#457}(`I32`_numtype, i_2) `CONST`_instr{numtype#459}(`I32`_numtype, `%`_num_{i#42421}(n)) `ARRAY.COPY`_instr{typeidx#1632}(x_1, x_2)]] +[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#37}(a_1)] +[visit_exp arrayaddr#37] +[visit_id arrayaddr#37] +[visit_exp (a_1)] +[visit_exp a_1] +[visit_id a_1] +[visit_exp `CONST`_instr{numtype#455}(`I32`_numtype, i_1)] +[visit_exp numtype#455] +[visit_id numtype#455] +[visit_exp (`I32`_numtype, i_1)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#39}(a_2)] +[visit_exp arrayaddr#39] +[visit_id arrayaddr#39] +[visit_exp (a_2)] +[visit_exp a_2] +[visit_id a_2] +[visit_exp `CONST`_instr{numtype#457}(`I32`_numtype, i_2)] +[visit_exp numtype#457] +[visit_id numtype#457] +[visit_exp (`I32`_numtype, i_2)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i_2] +[visit_id i_2] +[visit_exp `CONST`_instr{numtype#459}(`I32`_numtype, `%`_num_{i#42421}(n))] +[visit_exp numtype#459] +[visit_id numtype#459] +[visit_exp (`I32`_numtype, `%`_num_{i#42421}(n))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#42421}(n)] +[visit_exp i#42421] +[visit_id i#42421] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `ARRAY.COPY`_instr{typeidx#1632}(x_1, x_2)] +[visit_exp typeidx#1632] +[visit_id typeidx#1632] +[visit_exp (x_1, x_2)] +[visit_exp x_1] +[visit_id x_1] +[visit_exp x_2] +[visit_id x_2] +[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#41}(a_1) `CONST`_instr{numtype#461}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#43}(a_2) `CONST`_instr{numtype#463}(`I32`_numtype, i_2) `ARRAY.GET`_instr{`sx?#23`, typeidx#1635}(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr{typeidx#1637}(x_1) `REF.ARRAY_ADDR`_instr{arrayaddr#45}(a_1) `CONST`_instr{numtype#465}(`I32`_numtype, `%`_num_{i#42574}((i_1!`%`_num_{i#42564}.0 + 1))) `REF.ARRAY_ADDR`_instr{arrayaddr#47}(a_2) `CONST`_instr{numtype#467}(`I32`_numtype, `%`_num_{i#42610}((i_2!`%`_num_{i#42600}.0 + 1))) `CONST`_instr{numtype#469}(`I32`_numtype, `%`_num_{i#42632}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `ARRAY.COPY`_instr{typeidx#1639}(x_1, x_2)]] +[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#41}(a_1)] +[visit_exp arrayaddr#41] +[visit_id arrayaddr#41] +[visit_exp (a_1)] +[visit_exp a_1] +[visit_id a_1] not free +[visit_exp `CONST`_instr{numtype#461}(`I32`_numtype, i_1)] +[visit_exp numtype#461] +[visit_id numtype#461] +[visit_exp (`I32`_numtype, i_1)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#43}(a_2)] +[visit_exp arrayaddr#43] +[visit_id arrayaddr#43] +[visit_exp (a_2)] +[visit_exp a_2] +[visit_id a_2] not free +[visit_exp `CONST`_instr{numtype#463}(`I32`_numtype, i_2)] +[visit_exp numtype#463] +[visit_id numtype#463] +[visit_exp (`I32`_numtype, i_2)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp `ARRAY.GET`_instr{`sx?#23`, typeidx#1635}(sx?{sx <- `sx?`}, x_2)] +[visit_exp `sx?#23`] +[visit_id sx?#23] +[visit_exp typeidx#1635] +[visit_id typeidx#1635] +[visit_exp (sx?{sx <- `sx?`}, x_2)] +[visit_exp sx?{sx <- `sx?`}] +[scope_enter sx] +[visit_exp sx] +[visit_id sx] not free +[visit_id sx] not free +[scope_exit sx] +[visit_exp `sx?`] +[visit_id sx?] no dims +[visit_id sx?] +[visit_exp x_2] +[visit_id x_2] not free +[visit_exp `ARRAY.SET`_instr{typeidx#1637}(x_1)] +[visit_exp typeidx#1637] +[visit_id typeidx#1637] +[visit_exp (x_1)] +[visit_exp x_1] +[visit_id x_1] not free +[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#45}(a_1)] +[visit_exp arrayaddr#45] +[visit_id arrayaddr#45] +[visit_exp (a_1)] +[visit_exp a_1] +[visit_id a_1] not free +[visit_exp `CONST`_instr{numtype#465}(`I32`_numtype, `%`_num_{i#42574}((i_1!`%`_num_{i#42564}.0 + 1)))] +[visit_exp numtype#465] +[visit_id numtype#465] +[visit_exp (`I32`_numtype, `%`_num_{i#42574}((i_1!`%`_num_{i#42564}.0 + 1)))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#42574}((i_1!`%`_num_{i#42564}.0 + 1))] +[visit_exp i#42574] +[visit_id i#42574] +[visit_exp ((i_1!`%`_num_{i#42564}.0 + 1))] +[visit_exp (i_1!`%`_num_{i#42564}.0 + 1)] +[visit_exp i_1!`%`_num_{i#42564}.0] +[visit_exp i_1!`%`_num_{i#42564}] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i#42564] +[visit_id i#42564] +[visit_exp 1] +[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#47}(a_2)] +[visit_exp arrayaddr#47] +[visit_id arrayaddr#47] +[visit_exp (a_2)] +[visit_exp a_2] +[visit_id a_2] not free +[visit_exp `CONST`_instr{numtype#467}(`I32`_numtype, `%`_num_{i#42610}((i_2!`%`_num_{i#42600}.0 + 1)))] +[visit_exp numtype#467] +[visit_id numtype#467] +[visit_exp (`I32`_numtype, `%`_num_{i#42610}((i_2!`%`_num_{i#42600}.0 + 1)))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#42610}((i_2!`%`_num_{i#42600}.0 + 1))] +[visit_exp i#42610] +[visit_id i#42610] +[visit_exp ((i_2!`%`_num_{i#42600}.0 + 1))] +[visit_exp (i_2!`%`_num_{i#42600}.0 + 1)] +[visit_exp i_2!`%`_num_{i#42600}.0] +[visit_exp i_2!`%`_num_{i#42600}] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp i#42600] +[visit_id i#42600] +[visit_exp 1] +[visit_exp `CONST`_instr{numtype#469}(`I32`_numtype, `%`_num_{i#42632}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp numtype#469] +[visit_id numtype#469] +[visit_exp (`I32`_numtype, `%`_num_{i#42632}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#42632}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp i#42632] +[visit_id i#42632] +[visit_exp ((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp (((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp ((n : nat <:> int) - (1 : nat <:> int))] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp `ARRAY.COPY`_instr{typeidx#1639}(x_1, x_2)] +[visit_exp typeidx#1639] +[visit_id typeidx#1639] +[visit_exp (x_1, x_2)] +[visit_exp x_1] +[visit_id x_1] not free +[visit_exp x_2] +[visit_id x_2] not free +[visit_exp ($type(z, x_2), `ARRAY`_comptype{fieldtype#51}(`%%`_fieldtype{`mut?#1169`, storagetype#707}(mut?{mut <- `mut?`}, zt_2)))] +[visit_exp $type(z, x_2)] +[visit_exp z] +[visit_id z] not free +[visit_exp x_2] +[visit_id x_2] not free +[visit_exp `ARRAY`_comptype{fieldtype#51}(`%%`_fieldtype{`mut?#1169`, storagetype#707}(mut?{mut <- `mut?`}, zt_2))] +[visit_exp fieldtype#51] +[visit_id fieldtype#51] +[visit_exp (`%%`_fieldtype{`mut?#1169`, storagetype#707}(mut?{mut <- `mut?`}, zt_2))] +[visit_exp `%%`_fieldtype{`mut?#1169`, storagetype#707}(mut?{mut <- `mut?`}, zt_2)] +[visit_exp `mut?#1169`] +[visit_id mut?#1169] +[visit_exp storagetype#707] +[visit_id storagetype#707] +[visit_exp (mut?{mut <- `mut?`}, zt_2)] +[visit_exp mut?{mut <- `mut?`}] +[scope_enter mut] +[visit_exp mut] +[visit_id mut] not free +[visit_id mut] not free +[scope_exit mut] +[visit_exp `mut?`] +[visit_id mut?] no dims +[visit_id mut?] +[visit_exp zt_2] +[visit_id zt_2] +[visit_exp ((i_1!`%`_num_{i#42690}.0 <= i_2!`%`_num_{i#42700}.0) /\ (sx?{sx <- `sx?`} = $sx(zt_2)))] +[visit_exp (i_1!`%`_num_{i#42690}.0 <= i_2!`%`_num_{i#42700}.0)] +[visit_exp i_1!`%`_num_{i#42690}.0] +[visit_exp i_1!`%`_num_{i#42690}] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i#42690] +[visit_id i#42690] +[visit_exp i_2!`%`_num_{i#42700}.0] +[visit_exp i_2!`%`_num_{i#42700}] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp i#42700] +[visit_id i#42700] +[visit_exp (sx?{sx <- `sx?`} = $sx(zt_2))] +[visit_exp sx?{sx <- `sx?`}] +[scope_enter sx] +[visit_exp sx] +[visit_id sx] not free +[visit_id sx] not free +[scope_exit sx] +[visit_exp `sx?`] +[visit_id sx?] not free +[visit_id sx?] no dims +[visit_exp $sx(zt_2)] +[visit_exp zt_2] +[visit_id zt_2] not free +[check_dims] a_1 a_2 arrayaddr#49 arrayaddr#51 arrayaddr#53 arrayaddr#55 arrayaddr#57 arrayaddr#59 fieldtype#53 i#42752 i#42806 i#42816 i#42842 i#42852 i#42963 i_1 i_2 instr*#2178 mut mut?#1181 n numtype#471 numtype#473 numtype#475 numtype#477 numtype#479 numtype#481 numtype#483 numtype#485 state#2063 storagetype#719 sx sx?#25 typeidx#1642 typeidx#1645 typeidx#1647 typeidx#1649 x_1 x_2 z zt_2 +[visit_exp `%;%`_config{state#2063, `instr*#2178`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#49}(a_1) `CONST`_instr{numtype#471}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#51}(a_2) `CONST`_instr{numtype#473}(`I32`_numtype, i_2) `CONST`_instr{numtype#475}(`I32`_numtype, `%`_num_{i#42752}(n)) `ARRAY.COPY`_instr{typeidx#1642}(x_1, x_2)])] +[visit_exp state#2063] +[visit_id state#2063] +[visit_exp `instr*#2178`] +[visit_id instr*#2178] +[visit_exp (z, [`REF.ARRAY_ADDR`_instr{arrayaddr#49}(a_1) `CONST`_instr{numtype#471}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#51}(a_2) `CONST`_instr{numtype#473}(`I32`_numtype, i_2) `CONST`_instr{numtype#475}(`I32`_numtype, `%`_num_{i#42752}(n)) `ARRAY.COPY`_instr{typeidx#1642}(x_1, x_2)])] +[visit_exp z] +[visit_id z] +[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#49}(a_1) `CONST`_instr{numtype#471}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#51}(a_2) `CONST`_instr{numtype#473}(`I32`_numtype, i_2) `CONST`_instr{numtype#475}(`I32`_numtype, `%`_num_{i#42752}(n)) `ARRAY.COPY`_instr{typeidx#1642}(x_1, x_2)]] +[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#49}(a_1)] +[visit_exp arrayaddr#49] +[visit_id arrayaddr#49] +[visit_exp (a_1)] +[visit_exp a_1] +[visit_id a_1] +[visit_exp `CONST`_instr{numtype#471}(`I32`_numtype, i_1)] +[visit_exp numtype#471] +[visit_id numtype#471] +[visit_exp (`I32`_numtype, i_1)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] +[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#51}(a_2)] +[visit_exp arrayaddr#51] +[visit_id arrayaddr#51] +[visit_exp (a_2)] +[visit_exp a_2] +[visit_id a_2] +[visit_exp `CONST`_instr{numtype#473}(`I32`_numtype, i_2)] +[visit_exp numtype#473] +[visit_id numtype#473] +[visit_exp (`I32`_numtype, i_2)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i_2] +[visit_id i_2] +[visit_exp `CONST`_instr{numtype#475}(`I32`_numtype, `%`_num_{i#42752}(n))] +[visit_exp numtype#475] +[visit_id numtype#475] +[visit_exp (`I32`_numtype, `%`_num_{i#42752}(n))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#42752}(n)] +[visit_exp i#42752] +[visit_id i#42752] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `ARRAY.COPY`_instr{typeidx#1642}(x_1, x_2)] +[visit_exp typeidx#1642] +[visit_id typeidx#1642] +[visit_exp (x_1, x_2)] +[visit_exp x_1] +[visit_id x_1] +[visit_exp x_2] +[visit_id x_2] +[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#53}(a_1) `CONST`_instr{numtype#477}(`I32`_numtype, `%`_num_{i#42816}(((((i_1!`%`_num_{i#42806}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `REF.ARRAY_ADDR`_instr{arrayaddr#55}(a_2) `CONST`_instr{numtype#479}(`I32`_numtype, `%`_num_{i#42852}(((((i_2!`%`_num_{i#42842}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `ARRAY.GET`_instr{`sx?#25`, typeidx#1645}(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr{typeidx#1647}(x_1) `REF.ARRAY_ADDR`_instr{arrayaddr#57}(a_1) `CONST`_instr{numtype#481}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#59}(a_2) `CONST`_instr{numtype#483}(`I32`_numtype, i_2) `CONST`_instr{numtype#485}(`I32`_numtype, `%`_num_{i#42963}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `ARRAY.COPY`_instr{typeidx#1649}(x_1, x_2)]] +[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#53}(a_1)] +[visit_exp arrayaddr#53] +[visit_id arrayaddr#53] +[visit_exp (a_1)] +[visit_exp a_1] +[visit_id a_1] not free +[visit_exp `CONST`_instr{numtype#477}(`I32`_numtype, `%`_num_{i#42816}(((((i_1!`%`_num_{i#42806}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp numtype#477] +[visit_id numtype#477] +[visit_exp (`I32`_numtype, `%`_num_{i#42816}(((((i_1!`%`_num_{i#42806}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#42816}(((((i_1!`%`_num_{i#42806}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp i#42816] +[visit_id i#42816] +[visit_exp (((((i_1!`%`_num_{i#42806}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp ((((i_1!`%`_num_{i#42806}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp (((i_1!`%`_num_{i#42806}.0 + n) : nat <:> int) - (1 : nat <:> int))] +[visit_exp ((i_1!`%`_num_{i#42806}.0 + n) : nat <:> int)] +[visit_exp (i_1!`%`_num_{i#42806}.0 + n)] +[visit_exp i_1!`%`_num_{i#42806}.0] +[visit_exp i_1!`%`_num_{i#42806}] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp i#42806] +[visit_id i#42806] +[visit_exp n] +[visit_id n] not free +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#55}(a_2)] +[visit_exp arrayaddr#55] +[visit_id arrayaddr#55] +[visit_exp (a_2)] +[visit_exp a_2] +[visit_id a_2] not free +[visit_exp `CONST`_instr{numtype#479}(`I32`_numtype, `%`_num_{i#42852}(((((i_2!`%`_num_{i#42842}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp numtype#479] +[visit_id numtype#479] +[visit_exp (`I32`_numtype, `%`_num_{i#42852}(((((i_2!`%`_num_{i#42842}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#42852}(((((i_2!`%`_num_{i#42842}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp i#42852] +[visit_id i#42852] +[visit_exp (((((i_2!`%`_num_{i#42842}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp ((((i_2!`%`_num_{i#42842}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp (((i_2!`%`_num_{i#42842}.0 + n) : nat <:> int) - (1 : nat <:> int))] +[visit_exp ((i_2!`%`_num_{i#42842}.0 + n) : nat <:> int)] +[visit_exp (i_2!`%`_num_{i#42842}.0 + n)] +[visit_exp i_2!`%`_num_{i#42842}.0] +[visit_exp i_2!`%`_num_{i#42842}] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp i#42842] +[visit_id i#42842] +[visit_exp n] +[visit_id n] not free +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp `ARRAY.GET`_instr{`sx?#25`, typeidx#1645}(sx?{sx <- `sx?`}, x_2)] +[visit_exp `sx?#25`] +[visit_id sx?#25] +[visit_exp typeidx#1645] +[visit_id typeidx#1645] +[visit_exp (sx?{sx <- `sx?`}, x_2)] +[visit_exp sx?{sx <- `sx?`}] +[scope_enter sx] +[visit_exp sx] +[visit_id sx] not free +[visit_id sx] not free +[scope_exit sx] +[visit_exp `sx?`] +[visit_id sx?] no dims +[visit_id sx?] +[visit_exp x_2] +[visit_id x_2] not free +[visit_exp `ARRAY.SET`_instr{typeidx#1647}(x_1)] +[visit_exp typeidx#1647] +[visit_id typeidx#1647] +[visit_exp (x_1)] +[visit_exp x_1] +[visit_id x_1] not free +[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#57}(a_1)] +[visit_exp arrayaddr#57] +[visit_id arrayaddr#57] +[visit_exp (a_1)] +[visit_exp a_1] +[visit_id a_1] not free +[visit_exp `CONST`_instr{numtype#481}(`I32`_numtype, i_1)] +[visit_exp numtype#481] +[visit_id numtype#481] +[visit_exp (`I32`_numtype, i_1)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i_1] +[visit_id i_1] not free +[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#59}(a_2)] +[visit_exp arrayaddr#59] +[visit_id arrayaddr#59] +[visit_exp (a_2)] +[visit_exp a_2] +[visit_id a_2] not free +[visit_exp `CONST`_instr{numtype#483}(`I32`_numtype, i_2)] +[visit_exp numtype#483] +[visit_id numtype#483] +[visit_exp (`I32`_numtype, i_2)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i_2] +[visit_id i_2] not free +[visit_exp `CONST`_instr{numtype#485}(`I32`_numtype, `%`_num_{i#42963}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp numtype#485] +[visit_id numtype#485] +[visit_exp (`I32`_numtype, `%`_num_{i#42963}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#42963}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp i#42963] +[visit_id i#42963] +[visit_exp ((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp (((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp ((n : nat <:> int) - (1 : nat <:> int))] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp `ARRAY.COPY`_instr{typeidx#1649}(x_1, x_2)] +[visit_exp typeidx#1649] +[visit_id typeidx#1649] +[visit_exp (x_1, x_2)] +[visit_exp x_1] +[visit_id x_1] not free +[visit_exp x_2] +[visit_id x_2] not free +[visit_exp ($type(z, x_2), `ARRAY`_comptype{fieldtype#53}(`%%`_fieldtype{`mut?#1181`, storagetype#719}(mut?{mut <- `mut?`}, zt_2)))] +[visit_exp $type(z, x_2)] +[visit_exp z] +[visit_id z] not free +[visit_exp x_2] +[visit_id x_2] not free +[visit_exp `ARRAY`_comptype{fieldtype#53}(`%%`_fieldtype{`mut?#1181`, storagetype#719}(mut?{mut <- `mut?`}, zt_2))] +[visit_exp fieldtype#53] +[visit_id fieldtype#53] +[visit_exp (`%%`_fieldtype{`mut?#1181`, storagetype#719}(mut?{mut <- `mut?`}, zt_2))] +[visit_exp `%%`_fieldtype{`mut?#1181`, storagetype#719}(mut?{mut <- `mut?`}, zt_2)] +[visit_exp `mut?#1181`] +[visit_id mut?#1181] +[visit_exp storagetype#719] +[visit_id storagetype#719] +[visit_exp (mut?{mut <- `mut?`}, zt_2)] +[visit_exp mut?{mut <- `mut?`}] +[scope_enter mut] +[visit_exp mut] +[visit_id mut] not free +[visit_id mut] not free +[scope_exit mut] +[visit_exp `mut?`] +[visit_id mut?] no dims +[visit_id mut?] +[visit_exp zt_2] +[visit_id zt_2] +[visit_exp (sx?{sx <- `sx?`} = $sx(zt_2))] +[visit_exp sx?{sx <- `sx?`}] +[scope_enter sx] +[visit_exp sx] +[visit_id sx] not free +[visit_id sx] not free +[scope_exit sx] +[visit_exp `sx?`] +[visit_id sx?] not free +[visit_id sx?] no dims +[visit_exp $sx(zt_2)] +[visit_exp zt_2] +[visit_id zt_2] not free +[check_dims] elemidx#31 heaptype#1445 ht i i#43055 instr*#2190 j n numtype#487 numtype#489 numtype#491 state#2075 typeidx#1652 x y z +[visit_exp `%;%`_config{state#2075, `instr*#2190`}(z, [`REF.NULL`_instr{heaptype#1445}(ht) `CONST`_instr{numtype#487}(`I32`_numtype, i) `CONST`_instr{numtype#489}(`I32`_numtype, j) `CONST`_instr{numtype#491}(`I32`_numtype, `%`_num_{i#43055}(n)) `ARRAY.INIT_ELEM`_instr{typeidx#1652, elemidx#31}(x, y)])] +[visit_exp state#2075] +[visit_id state#2075] +[visit_exp `instr*#2190`] +[visit_id instr*#2190] +[visit_exp (z, [`REF.NULL`_instr{heaptype#1445}(ht) `CONST`_instr{numtype#487}(`I32`_numtype, i) `CONST`_instr{numtype#489}(`I32`_numtype, j) `CONST`_instr{numtype#491}(`I32`_numtype, `%`_num_{i#43055}(n)) `ARRAY.INIT_ELEM`_instr{typeidx#1652, elemidx#31}(x, y)])] +[visit_exp z] +[visit_id z] +[visit_exp [`REF.NULL`_instr{heaptype#1445}(ht) `CONST`_instr{numtype#487}(`I32`_numtype, i) `CONST`_instr{numtype#489}(`I32`_numtype, j) `CONST`_instr{numtype#491}(`I32`_numtype, `%`_num_{i#43055}(n)) `ARRAY.INIT_ELEM`_instr{typeidx#1652, elemidx#31}(x, y)]] +[visit_exp `REF.NULL`_instr{heaptype#1445}(ht)] +[visit_exp heaptype#1445] +[visit_id heaptype#1445] +[visit_exp (ht)] +[visit_exp ht] +[visit_id ht] +[visit_exp `CONST`_instr{numtype#487}(`I32`_numtype, i)] +[visit_exp numtype#487] +[visit_id numtype#487] +[visit_exp (`I32`_numtype, i)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i] +[visit_id i] +[visit_exp `CONST`_instr{numtype#489}(`I32`_numtype, j)] +[visit_exp numtype#489] +[visit_id numtype#489] +[visit_exp (`I32`_numtype, j)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp j] +[visit_id j] +[visit_exp `CONST`_instr{numtype#491}(`I32`_numtype, `%`_num_{i#43055}(n))] +[visit_exp numtype#491] +[visit_id numtype#491] +[visit_exp (`I32`_numtype, `%`_num_{i#43055}(n))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#43055}(n)] +[visit_exp i#43055] +[visit_id i#43055] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `ARRAY.INIT_ELEM`_instr{typeidx#1652, elemidx#31}(x, y)] +[visit_exp typeidx#1652] +[visit_id typeidx#1652] +[visit_exp elemidx#31] +[visit_id elemidx#31] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] +[visit_exp y] +[visit_id y] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[check_dims] a arrayaddr#61 elemidx#33 fieldval*#13 i i#43135 i#43177 instr*#2202 j n numtype#493 numtype#495 numtype#497 state#2087 typeidx#1654 x y z +[visit_exp `%;%`_config{state#2087, `instr*#2202`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#61}(a) `CONST`_instr{numtype#493}(`I32`_numtype, i) `CONST`_instr{numtype#495}(`I32`_numtype, j) `CONST`_instr{numtype#497}(`I32`_numtype, `%`_num_{i#43135}(n)) `ARRAY.INIT_ELEM`_instr{typeidx#1654, elemidx#33}(x, y)])] +[visit_exp state#2087] +[visit_id state#2087] +[visit_exp `instr*#2202`] +[visit_id instr*#2202] +[visit_exp (z, [`REF.ARRAY_ADDR`_instr{arrayaddr#61}(a) `CONST`_instr{numtype#493}(`I32`_numtype, i) `CONST`_instr{numtype#495}(`I32`_numtype, j) `CONST`_instr{numtype#497}(`I32`_numtype, `%`_num_{i#43135}(n)) `ARRAY.INIT_ELEM`_instr{typeidx#1654, elemidx#33}(x, y)])] +[visit_exp z] +[visit_id z] +[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#61}(a) `CONST`_instr{numtype#493}(`I32`_numtype, i) `CONST`_instr{numtype#495}(`I32`_numtype, j) `CONST`_instr{numtype#497}(`I32`_numtype, `%`_num_{i#43135}(n)) `ARRAY.INIT_ELEM`_instr{typeidx#1654, elemidx#33}(x, y)]] +[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#61}(a)] +[visit_exp arrayaddr#61] +[visit_id arrayaddr#61] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp `CONST`_instr{numtype#493}(`I32`_numtype, i)] +[visit_exp numtype#493] +[visit_id numtype#493] +[visit_exp (`I32`_numtype, i)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i] +[visit_id i] +[visit_exp `CONST`_instr{numtype#495}(`I32`_numtype, j)] +[visit_exp numtype#495] +[visit_id numtype#495] +[visit_exp (`I32`_numtype, j)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp j] +[visit_id j] +[visit_exp `CONST`_instr{numtype#497}(`I32`_numtype, `%`_num_{i#43135}(n))] +[visit_exp numtype#497] +[visit_id numtype#497] +[visit_exp (`I32`_numtype, `%`_num_{i#43135}(n))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#43135}(n)] +[visit_exp i#43135] +[visit_id i#43135] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `ARRAY.INIT_ELEM`_instr{typeidx#1654, elemidx#33}(x, y)] +[visit_exp typeidx#1654] +[visit_id typeidx#1654] +[visit_exp elemidx#33] +[visit_id elemidx#33] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] +[visit_exp y] +[visit_id y] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[visit_exp ((i!`%`_num_{i#43177}.0 + n) > |$arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#13`}|)] +[visit_exp (i!`%`_num_{i#43177}.0 + n)] +[visit_exp i!`%`_num_{i#43177}.0] +[visit_exp i!`%`_num_{i#43177}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#43177] +[visit_id i#43177] +[visit_exp n] +[visit_id n] not free +[visit_exp |$arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#13`}|] +[visit_exp $arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#13`}] +[visit_exp $arrayinst(z)[a]] +[visit_exp $arrayinst(z)] +[visit_exp z] +[visit_id z] not free +[visit_exp a] +[visit_id a] not free +[visit_exp `fieldval*#13`] +[visit_id fieldval*#13] +[check_dims] a arrayaddr#63 elemidx#35 i i#43229 i#43271 instr*#2214 j n numtype#499 numtype#501 numtype#503 ref*#20 state#2099 typeidx#1656 x y z +[visit_exp `%;%`_config{state#2099, `instr*#2214`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#63}(a) `CONST`_instr{numtype#499}(`I32`_numtype, i) `CONST`_instr{numtype#501}(`I32`_numtype, j) `CONST`_instr{numtype#503}(`I32`_numtype, `%`_num_{i#43229}(n)) `ARRAY.INIT_ELEM`_instr{typeidx#1656, elemidx#35}(x, y)])] +[visit_exp state#2099] +[visit_id state#2099] +[visit_exp `instr*#2214`] +[visit_id instr*#2214] +[visit_exp (z, [`REF.ARRAY_ADDR`_instr{arrayaddr#63}(a) `CONST`_instr{numtype#499}(`I32`_numtype, i) `CONST`_instr{numtype#501}(`I32`_numtype, j) `CONST`_instr{numtype#503}(`I32`_numtype, `%`_num_{i#43229}(n)) `ARRAY.INIT_ELEM`_instr{typeidx#1656, elemidx#35}(x, y)])] +[visit_exp z] +[visit_id z] +[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#63}(a) `CONST`_instr{numtype#499}(`I32`_numtype, i) `CONST`_instr{numtype#501}(`I32`_numtype, j) `CONST`_instr{numtype#503}(`I32`_numtype, `%`_num_{i#43229}(n)) `ARRAY.INIT_ELEM`_instr{typeidx#1656, elemidx#35}(x, y)]] +[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#63}(a)] +[visit_exp arrayaddr#63] +[visit_id arrayaddr#63] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp `CONST`_instr{numtype#499}(`I32`_numtype, i)] +[visit_exp numtype#499] +[visit_id numtype#499] +[visit_exp (`I32`_numtype, i)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i] +[visit_id i] +[visit_exp `CONST`_instr{numtype#501}(`I32`_numtype, j)] +[visit_exp numtype#501] +[visit_id numtype#501] +[visit_exp (`I32`_numtype, j)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp j] +[visit_id j] +[visit_exp `CONST`_instr{numtype#503}(`I32`_numtype, `%`_num_{i#43229}(n))] +[visit_exp numtype#503] +[visit_id numtype#503] +[visit_exp (`I32`_numtype, `%`_num_{i#43229}(n))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#43229}(n)] +[visit_exp i#43229] +[visit_id i#43229] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `ARRAY.INIT_ELEM`_instr{typeidx#1656, elemidx#35}(x, y)] +[visit_exp typeidx#1656] +[visit_id typeidx#1656] +[visit_exp elemidx#35] +[visit_id elemidx#35] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] +[visit_exp y] +[visit_id y] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[visit_exp ((j!`%`_num_{i#43271}.0 + n) > |$elem(z, y).`REFS`_eleminst{`ref*#20`}|)] +[visit_exp (j!`%`_num_{i#43271}.0 + n)] +[visit_exp j!`%`_num_{i#43271}.0] +[visit_exp j!`%`_num_{i#43271}] +[visit_exp j] +[visit_id j] not free +[visit_exp i#43271] +[visit_id i#43271] +[visit_exp n] +[visit_id n] not free +[visit_exp |$elem(z, y).`REFS`_eleminst{`ref*#20`}|] +[visit_exp $elem(z, y).`REFS`_eleminst{`ref*#20`}] +[visit_exp $elem(z, y)] +[visit_exp z] +[visit_id z] not free +[visit_exp y] +[visit_id y] not free +[visit_exp `ref*#20`] +[visit_id ref*#20] +[check_dims] a arrayaddr#65 elemidx#37 i i#43335 instr*#2226 j n numtype#505 numtype#507 numtype#509 state#2111 typeidx#1658 x y z +[visit_exp `%;%`_config{state#2111, `instr*#2226`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#65}(a) `CONST`_instr{numtype#505}(`I32`_numtype, i) `CONST`_instr{numtype#507}(`I32`_numtype, j) `CONST`_instr{numtype#509}(`I32`_numtype, `%`_num_{i#43335}(n)) `ARRAY.INIT_ELEM`_instr{typeidx#1658, elemidx#37}(x, y)])] +[visit_exp state#2111] +[visit_id state#2111] +[visit_exp `instr*#2226`] +[visit_id instr*#2226] +[visit_exp (z, [`REF.ARRAY_ADDR`_instr{arrayaddr#65}(a) `CONST`_instr{numtype#505}(`I32`_numtype, i) `CONST`_instr{numtype#507}(`I32`_numtype, j) `CONST`_instr{numtype#509}(`I32`_numtype, `%`_num_{i#43335}(n)) `ARRAY.INIT_ELEM`_instr{typeidx#1658, elemidx#37}(x, y)])] +[visit_exp z] +[visit_id z] +[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#65}(a) `CONST`_instr{numtype#505}(`I32`_numtype, i) `CONST`_instr{numtype#507}(`I32`_numtype, j) `CONST`_instr{numtype#509}(`I32`_numtype, `%`_num_{i#43335}(n)) `ARRAY.INIT_ELEM`_instr{typeidx#1658, elemidx#37}(x, y)]] +[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#65}(a)] +[visit_exp arrayaddr#65] +[visit_id arrayaddr#65] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp `CONST`_instr{numtype#505}(`I32`_numtype, i)] +[visit_exp numtype#505] +[visit_id numtype#505] +[visit_exp (`I32`_numtype, i)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i] +[visit_id i] +[visit_exp `CONST`_instr{numtype#507}(`I32`_numtype, j)] +[visit_exp numtype#507] +[visit_id numtype#507] +[visit_exp (`I32`_numtype, j)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp j] +[visit_id j] +[visit_exp `CONST`_instr{numtype#509}(`I32`_numtype, `%`_num_{i#43335}(n))] +[visit_exp numtype#509] +[visit_id numtype#509] +[visit_exp (`I32`_numtype, `%`_num_{i#43335}(n))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#43335}(n)] +[visit_exp i#43335] +[visit_id i#43335] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `ARRAY.INIT_ELEM`_instr{typeidx#1658, elemidx#37}(x, y)] +[visit_exp typeidx#1658] +[visit_id typeidx#1658] +[visit_exp elemidx#37] +[visit_id elemidx#37] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] +[visit_exp y] +[visit_id y] +[visit_exp []] +[visit_exp (n = 0)] +[visit_exp n] +[visit_id n] not free +[visit_exp 0] +[check_dims] a arrayaddr#67 arrayaddr#69 arrayaddr#71 elemidx#39 elemidx#41 i i#43415 i#43495 i#43505 i#43531 i#43541 i#43563 i#43613 instr*#2238 j n numtype#511 numtype#513 numtype#515 numtype#517 numtype#519 numtype#521 numtype#523 ref ref*#21 state#2123 typeidx#1660 typeidx#1662 typeidx#1664 x y z +[visit_exp `%;%`_config{state#2123, `instr*#2238`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#67}(a) `CONST`_instr{numtype#511}(`I32`_numtype, i) `CONST`_instr{numtype#513}(`I32`_numtype, j) `CONST`_instr{numtype#515}(`I32`_numtype, `%`_num_{i#43415}(n)) `ARRAY.INIT_ELEM`_instr{typeidx#1660, elemidx#39}(x, y)])] +[visit_exp state#2123] +[visit_id state#2123] +[visit_exp `instr*#2238`] +[visit_id instr*#2238] +[visit_exp (z, [`REF.ARRAY_ADDR`_instr{arrayaddr#67}(a) `CONST`_instr{numtype#511}(`I32`_numtype, i) `CONST`_instr{numtype#513}(`I32`_numtype, j) `CONST`_instr{numtype#515}(`I32`_numtype, `%`_num_{i#43415}(n)) `ARRAY.INIT_ELEM`_instr{typeidx#1660, elemidx#39}(x, y)])] +[visit_exp z] +[visit_id z] +[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#67}(a) `CONST`_instr{numtype#511}(`I32`_numtype, i) `CONST`_instr{numtype#513}(`I32`_numtype, j) `CONST`_instr{numtype#515}(`I32`_numtype, `%`_num_{i#43415}(n)) `ARRAY.INIT_ELEM`_instr{typeidx#1660, elemidx#39}(x, y)]] +[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#67}(a)] +[visit_exp arrayaddr#67] +[visit_id arrayaddr#67] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp `CONST`_instr{numtype#511}(`I32`_numtype, i)] +[visit_exp numtype#511] +[visit_id numtype#511] +[visit_exp (`I32`_numtype, i)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i] +[visit_id i] +[visit_exp `CONST`_instr{numtype#513}(`I32`_numtype, j)] +[visit_exp numtype#513] +[visit_id numtype#513] +[visit_exp (`I32`_numtype, j)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp j] +[visit_id j] +[visit_exp `CONST`_instr{numtype#515}(`I32`_numtype, `%`_num_{i#43415}(n))] +[visit_exp numtype#515] +[visit_id numtype#515] +[visit_exp (`I32`_numtype, `%`_num_{i#43415}(n))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#43415}(n)] +[visit_exp i#43415] +[visit_id i#43415] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `ARRAY.INIT_ELEM`_instr{typeidx#1660, elemidx#39}(x, y)] +[visit_exp typeidx#1660] +[visit_id typeidx#1660] +[visit_exp elemidx#39] +[visit_id elemidx#39] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] +[visit_exp y] +[visit_id y] +[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#69}(a) `CONST`_instr{numtype#517}(`I32`_numtype, i) (ref : ref <: instr) `ARRAY.SET`_instr{typeidx#1662}(x) `REF.ARRAY_ADDR`_instr{arrayaddr#71}(a) `CONST`_instr{numtype#519}(`I32`_numtype, `%`_num_{i#43505}((i!`%`_num_{i#43495}.0 + 1))) `CONST`_instr{numtype#521}(`I32`_numtype, `%`_num_{i#43541}((j!`%`_num_{i#43531}.0 + 1))) `CONST`_instr{numtype#523}(`I32`_numtype, `%`_num_{i#43563}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `ARRAY.INIT_ELEM`_instr{typeidx#1664, elemidx#41}(x, y)]] +[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#69}(a)] +[visit_exp arrayaddr#69] +[visit_id arrayaddr#69] +[visit_exp (a)] +[visit_exp a] +[visit_id a] not free +[visit_exp `CONST`_instr{numtype#517}(`I32`_numtype, i)] +[visit_exp numtype#517] +[visit_id numtype#517] +[visit_exp (`I32`_numtype, i)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i] +[visit_id i] not free +[visit_exp (ref : ref <: instr)] +[visit_exp ref] +[visit_id ref] +[visit_exp `ARRAY.SET`_instr{typeidx#1662}(x)] +[visit_exp typeidx#1662] +[visit_id typeidx#1662] +[visit_exp (x)] +[visit_exp x] +[visit_id x] not free +[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#71}(a)] +[visit_exp arrayaddr#71] +[visit_id arrayaddr#71] +[visit_exp (a)] +[visit_exp a] +[visit_id a] not free +[visit_exp `CONST`_instr{numtype#519}(`I32`_numtype, `%`_num_{i#43505}((i!`%`_num_{i#43495}.0 + 1)))] +[visit_exp numtype#519] +[visit_id numtype#519] +[visit_exp (`I32`_numtype, `%`_num_{i#43505}((i!`%`_num_{i#43495}.0 + 1)))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#43505}((i!`%`_num_{i#43495}.0 + 1))] +[visit_exp i#43505] +[visit_id i#43505] +[visit_exp ((i!`%`_num_{i#43495}.0 + 1))] +[visit_exp (i!`%`_num_{i#43495}.0 + 1)] +[visit_exp i!`%`_num_{i#43495}.0] +[visit_exp i!`%`_num_{i#43495}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#43495] +[visit_id i#43495] +[visit_exp 1] +[visit_exp `CONST`_instr{numtype#521}(`I32`_numtype, `%`_num_{i#43541}((j!`%`_num_{i#43531}.0 + 1)))] +[visit_exp numtype#521] +[visit_id numtype#521] +[visit_exp (`I32`_numtype, `%`_num_{i#43541}((j!`%`_num_{i#43531}.0 + 1)))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#43541}((j!`%`_num_{i#43531}.0 + 1))] +[visit_exp i#43541] +[visit_id i#43541] +[visit_exp ((j!`%`_num_{i#43531}.0 + 1))] +[visit_exp (j!`%`_num_{i#43531}.0 + 1)] +[visit_exp j!`%`_num_{i#43531}.0] +[visit_exp j!`%`_num_{i#43531}] +[visit_exp j] +[visit_id j] not free +[visit_exp i#43531] +[visit_id i#43531] +[visit_exp 1] +[visit_exp `CONST`_instr{numtype#523}(`I32`_numtype, `%`_num_{i#43563}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp numtype#523] +[visit_id numtype#523] +[visit_exp (`I32`_numtype, `%`_num_{i#43563}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#43563}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp i#43563] +[visit_id i#43563] +[visit_exp ((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp (((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp ((n : nat <:> int) - (1 : nat <:> int))] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp `ARRAY.INIT_ELEM`_instr{typeidx#1664, elemidx#41}(x, y)] +[visit_exp typeidx#1664] +[visit_id typeidx#1664] +[visit_exp elemidx#41] +[visit_id elemidx#41] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] not free +[visit_exp y] +[visit_id y] not free +[visit_exp (ref = $elem(z, y).`REFS`_eleminst{`ref*#21`}[j!`%`_num_{i#43613}.0])] +[visit_exp ref] +[visit_id ref] not free +[visit_exp $elem(z, y).`REFS`_eleminst{`ref*#21`}[j!`%`_num_{i#43613}.0]] +[visit_exp $elem(z, y).`REFS`_eleminst{`ref*#21`}] +[visit_exp $elem(z, y)] +[visit_exp z] +[visit_id z] not free +[visit_exp y] +[visit_id y] not free +[visit_exp `ref*#21`] +[visit_id ref*#21] +[visit_exp j!`%`_num_{i#43613}.0] +[visit_exp j!`%`_num_{i#43613}] +[visit_exp j] +[visit_id j] not free +[visit_exp i#43613] +[visit_id i#43613] +[check_dims] dataidx#31 heaptype#1447 ht i i#43665 instr*#2250 j n numtype#525 numtype#527 numtype#529 state#2135 typeidx#1666 x y z +[visit_exp `%;%`_config{state#2135, `instr*#2250`}(z, [`REF.NULL`_instr{heaptype#1447}(ht) `CONST`_instr{numtype#525}(`I32`_numtype, i) `CONST`_instr{numtype#527}(`I32`_numtype, j) `CONST`_instr{numtype#529}(`I32`_numtype, `%`_num_{i#43665}(n)) `ARRAY.INIT_DATA`_instr{typeidx#1666, dataidx#31}(x, y)])] +[visit_exp state#2135] +[visit_id state#2135] +[visit_exp `instr*#2250`] +[visit_id instr*#2250] +[visit_exp (z, [`REF.NULL`_instr{heaptype#1447}(ht) `CONST`_instr{numtype#525}(`I32`_numtype, i) `CONST`_instr{numtype#527}(`I32`_numtype, j) `CONST`_instr{numtype#529}(`I32`_numtype, `%`_num_{i#43665}(n)) `ARRAY.INIT_DATA`_instr{typeidx#1666, dataidx#31}(x, y)])] +[visit_exp z] +[visit_id z] +[visit_exp [`REF.NULL`_instr{heaptype#1447}(ht) `CONST`_instr{numtype#525}(`I32`_numtype, i) `CONST`_instr{numtype#527}(`I32`_numtype, j) `CONST`_instr{numtype#529}(`I32`_numtype, `%`_num_{i#43665}(n)) `ARRAY.INIT_DATA`_instr{typeidx#1666, dataidx#31}(x, y)]] +[visit_exp `REF.NULL`_instr{heaptype#1447}(ht)] +[visit_exp heaptype#1447] +[visit_id heaptype#1447] +[visit_exp (ht)] +[visit_exp ht] +[visit_id ht] +[visit_exp `CONST`_instr{numtype#525}(`I32`_numtype, i)] +[visit_exp numtype#525] +[visit_id numtype#525] +[visit_exp (`I32`_numtype, i)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i] +[visit_id i] +[visit_exp `CONST`_instr{numtype#527}(`I32`_numtype, j)] +[visit_exp numtype#527] +[visit_id numtype#527] +[visit_exp (`I32`_numtype, j)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp j] +[visit_id j] +[visit_exp `CONST`_instr{numtype#529}(`I32`_numtype, `%`_num_{i#43665}(n))] +[visit_exp numtype#529] +[visit_id numtype#529] +[visit_exp (`I32`_numtype, `%`_num_{i#43665}(n))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#43665}(n)] +[visit_exp i#43665] +[visit_id i#43665] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `ARRAY.INIT_DATA`_instr{typeidx#1666, dataidx#31}(x, y)] +[visit_exp typeidx#1666] +[visit_id typeidx#1666] +[visit_exp dataidx#31] +[visit_id dataidx#31] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] +[visit_exp y] +[visit_id y] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[check_dims] a arrayaddr#73 dataidx#33 fieldval*#14 i i#43745 i#43787 instr*#2262 j n numtype#531 numtype#533 numtype#535 state#2147 typeidx#1668 x y z +[visit_exp `%;%`_config{state#2147, `instr*#2262`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#73}(a) `CONST`_instr{numtype#531}(`I32`_numtype, i) `CONST`_instr{numtype#533}(`I32`_numtype, j) `CONST`_instr{numtype#535}(`I32`_numtype, `%`_num_{i#43745}(n)) `ARRAY.INIT_DATA`_instr{typeidx#1668, dataidx#33}(x, y)])] +[visit_exp state#2147] +[visit_id state#2147] +[visit_exp `instr*#2262`] +[visit_id instr*#2262] +[visit_exp (z, [`REF.ARRAY_ADDR`_instr{arrayaddr#73}(a) `CONST`_instr{numtype#531}(`I32`_numtype, i) `CONST`_instr{numtype#533}(`I32`_numtype, j) `CONST`_instr{numtype#535}(`I32`_numtype, `%`_num_{i#43745}(n)) `ARRAY.INIT_DATA`_instr{typeidx#1668, dataidx#33}(x, y)])] +[visit_exp z] +[visit_id z] +[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#73}(a) `CONST`_instr{numtype#531}(`I32`_numtype, i) `CONST`_instr{numtype#533}(`I32`_numtype, j) `CONST`_instr{numtype#535}(`I32`_numtype, `%`_num_{i#43745}(n)) `ARRAY.INIT_DATA`_instr{typeidx#1668, dataidx#33}(x, y)]] +[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#73}(a)] +[visit_exp arrayaddr#73] +[visit_id arrayaddr#73] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp `CONST`_instr{numtype#531}(`I32`_numtype, i)] +[visit_exp numtype#531] +[visit_id numtype#531] +[visit_exp (`I32`_numtype, i)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i] +[visit_id i] +[visit_exp `CONST`_instr{numtype#533}(`I32`_numtype, j)] +[visit_exp numtype#533] +[visit_id numtype#533] +[visit_exp (`I32`_numtype, j)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp j] +[visit_id j] +[visit_exp `CONST`_instr{numtype#535}(`I32`_numtype, `%`_num_{i#43745}(n))] +[visit_exp numtype#535] +[visit_id numtype#535] +[visit_exp (`I32`_numtype, `%`_num_{i#43745}(n))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#43745}(n)] +[visit_exp i#43745] +[visit_id i#43745] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `ARRAY.INIT_DATA`_instr{typeidx#1668, dataidx#33}(x, y)] +[visit_exp typeidx#1668] +[visit_id typeidx#1668] +[visit_exp dataidx#33] +[visit_id dataidx#33] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] +[visit_exp y] +[visit_id y] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[visit_exp ((i!`%`_num_{i#43787}.0 + n) > |$arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#14`}|)] +[visit_exp (i!`%`_num_{i#43787}.0 + n)] +[visit_exp i!`%`_num_{i#43787}.0] +[visit_exp i!`%`_num_{i#43787}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#43787] +[visit_id i#43787] +[visit_exp n] +[visit_id n] not free +[visit_exp |$arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#14`}|] +[visit_exp $arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#14`}] +[visit_exp $arrayinst(z)[a]] +[visit_exp $arrayinst(z)] +[visit_exp z] +[visit_id z] not free +[visit_exp a] +[visit_id a] not free +[visit_exp `fieldval*#14`] +[visit_id fieldval*#14] +[check_dims] a arrayaddr#75 byte*#1877 dataidx#35 fieldtype#55 i i#43839 i#43893 instr*#2274 j mut mut?#1193 n numtype#537 numtype#539 numtype#541 state#2159 storagetype#731 typeidx#1670 x y z zt +[visit_exp `%;%`_config{state#2159, `instr*#2274`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#75}(a) `CONST`_instr{numtype#537}(`I32`_numtype, i) `CONST`_instr{numtype#539}(`I32`_numtype, j) `CONST`_instr{numtype#541}(`I32`_numtype, `%`_num_{i#43839}(n)) `ARRAY.INIT_DATA`_instr{typeidx#1670, dataidx#35}(x, y)])] +[visit_exp state#2159] +[visit_id state#2159] +[visit_exp `instr*#2274`] +[visit_id instr*#2274] +[visit_exp (z, [`REF.ARRAY_ADDR`_instr{arrayaddr#75}(a) `CONST`_instr{numtype#537}(`I32`_numtype, i) `CONST`_instr{numtype#539}(`I32`_numtype, j) `CONST`_instr{numtype#541}(`I32`_numtype, `%`_num_{i#43839}(n)) `ARRAY.INIT_DATA`_instr{typeidx#1670, dataidx#35}(x, y)])] +[visit_exp z] +[visit_id z] +[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#75}(a) `CONST`_instr{numtype#537}(`I32`_numtype, i) `CONST`_instr{numtype#539}(`I32`_numtype, j) `CONST`_instr{numtype#541}(`I32`_numtype, `%`_num_{i#43839}(n)) `ARRAY.INIT_DATA`_instr{typeidx#1670, dataidx#35}(x, y)]] +[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#75}(a)] +[visit_exp arrayaddr#75] +[visit_id arrayaddr#75] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp `CONST`_instr{numtype#537}(`I32`_numtype, i)] +[visit_exp numtype#537] +[visit_id numtype#537] +[visit_exp (`I32`_numtype, i)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i] +[visit_id i] +[visit_exp `CONST`_instr{numtype#539}(`I32`_numtype, j)] +[visit_exp numtype#539] +[visit_id numtype#539] +[visit_exp (`I32`_numtype, j)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp j] +[visit_id j] +[visit_exp `CONST`_instr{numtype#541}(`I32`_numtype, `%`_num_{i#43839}(n))] +[visit_exp numtype#541] +[visit_id numtype#541] +[visit_exp (`I32`_numtype, `%`_num_{i#43839}(n))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#43839}(n)] +[visit_exp i#43839] +[visit_id i#43839] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `ARRAY.INIT_DATA`_instr{typeidx#1670, dataidx#35}(x, y)] +[visit_exp typeidx#1670] +[visit_id typeidx#1670] +[visit_exp dataidx#35] +[visit_id dataidx#35] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] +[visit_exp y] +[visit_id y] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[visit_exp ($type(z, x), `ARRAY`_comptype{fieldtype#55}(`%%`_fieldtype{`mut?#1193`, storagetype#731}(mut?{mut <- `mut?`}, zt)))] +[visit_exp $type(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `ARRAY`_comptype{fieldtype#55}(`%%`_fieldtype{`mut?#1193`, storagetype#731}(mut?{mut <- `mut?`}, zt))] +[visit_exp fieldtype#55] +[visit_id fieldtype#55] +[visit_exp (`%%`_fieldtype{`mut?#1193`, storagetype#731}(mut?{mut <- `mut?`}, zt))] +[visit_exp `%%`_fieldtype{`mut?#1193`, storagetype#731}(mut?{mut <- `mut?`}, zt)] +[visit_exp `mut?#1193`] +[visit_id mut?#1193] +[visit_exp storagetype#731] +[visit_id storagetype#731] +[visit_exp (mut?{mut <- `mut?`}, zt)] +[visit_exp mut?{mut <- `mut?`}] +[scope_enter mut] +[visit_exp mut] +[visit_id mut] not free +[visit_id mut] not free +[scope_exit mut] +[visit_exp `mut?`] +[visit_id mut?] no dims +[visit_id mut?] +[visit_exp zt] +[visit_id zt] +[visit_exp ((j!`%`_num_{i#43893}.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).`BYTES`_datainst{`byte*#1877`}|)] +[visit_exp (j!`%`_num_{i#43893}.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] +[visit_exp j!`%`_num_{i#43893}.0] +[visit_exp j!`%`_num_{i#43893}] +[visit_exp j] +[visit_id j] not free +[visit_exp i#43893] +[visit_id i#43893] +[visit_exp ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] +[visit_exp (((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat))] +[visit_exp ((n * $zsize(zt)) : nat <:> rat)] +[visit_exp (n * $zsize(zt))] +[visit_exp n] +[visit_id n] not free +[visit_exp $zsize(zt)] +[visit_exp zt] +[visit_id zt] not free +[visit_exp (8 : nat <:> rat)] +[visit_exp 8] +[visit_exp |$data(z, y).`BYTES`_datainst{`byte*#1877`}|] +[visit_exp $data(z, y).`BYTES`_datainst{`byte*#1877`}] +[visit_exp $data(z, y)] +[visit_exp z] +[visit_id z] not free +[visit_exp y] +[visit_id y] not free +[visit_exp `byte*#1877`] +[visit_id byte*#1877] +[check_dims] a arrayaddr#77 dataidx#37 i i#43957 instr*#2286 j n numtype#543 numtype#545 numtype#547 state#2171 typeidx#1672 x y z +[visit_exp `%;%`_config{state#2171, `instr*#2286`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#77}(a) `CONST`_instr{numtype#543}(`I32`_numtype, i) `CONST`_instr{numtype#545}(`I32`_numtype, j) `CONST`_instr{numtype#547}(`I32`_numtype, `%`_num_{i#43957}(n)) `ARRAY.INIT_DATA`_instr{typeidx#1672, dataidx#37}(x, y)])] +[visit_exp state#2171] +[visit_id state#2171] +[visit_exp `instr*#2286`] +[visit_id instr*#2286] +[visit_exp (z, [`REF.ARRAY_ADDR`_instr{arrayaddr#77}(a) `CONST`_instr{numtype#543}(`I32`_numtype, i) `CONST`_instr{numtype#545}(`I32`_numtype, j) `CONST`_instr{numtype#547}(`I32`_numtype, `%`_num_{i#43957}(n)) `ARRAY.INIT_DATA`_instr{typeidx#1672, dataidx#37}(x, y)])] +[visit_exp z] +[visit_id z] +[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#77}(a) `CONST`_instr{numtype#543}(`I32`_numtype, i) `CONST`_instr{numtype#545}(`I32`_numtype, j) `CONST`_instr{numtype#547}(`I32`_numtype, `%`_num_{i#43957}(n)) `ARRAY.INIT_DATA`_instr{typeidx#1672, dataidx#37}(x, y)]] +[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#77}(a)] +[visit_exp arrayaddr#77] +[visit_id arrayaddr#77] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp `CONST`_instr{numtype#543}(`I32`_numtype, i)] +[visit_exp numtype#543] +[visit_id numtype#543] +[visit_exp (`I32`_numtype, i)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i] +[visit_id i] +[visit_exp `CONST`_instr{numtype#545}(`I32`_numtype, j)] +[visit_exp numtype#545] +[visit_id numtype#545] +[visit_exp (`I32`_numtype, j)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp j] +[visit_id j] +[visit_exp `CONST`_instr{numtype#547}(`I32`_numtype, `%`_num_{i#43957}(n))] +[visit_exp numtype#547] +[visit_id numtype#547] +[visit_exp (`I32`_numtype, `%`_num_{i#43957}(n))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#43957}(n)] +[visit_exp i#43957] +[visit_id i#43957] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `ARRAY.INIT_DATA`_instr{typeidx#1672, dataidx#37}(x, y)] +[visit_exp typeidx#1672] +[visit_id typeidx#1672] +[visit_exp dataidx#37] +[visit_id dataidx#37] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] +[visit_exp y] +[visit_id y] +[visit_exp []] +[visit_exp (n = 0)] +[visit_exp n] +[visit_id n] not free +[visit_exp 0] +[check_dims] a arrayaddr#79 arrayaddr#81 arrayaddr#83 byte*#1878 c dataidx#39 dataidx#41 fieldtype#57 i i#44037 i#44117 i#44127 i#44153 i#44163 i#44185 i#44247 instr*#2298 j mut mut?#1205 n numtype#549 numtype#551 numtype#553 numtype#555 numtype#557 numtype#559 numtype#561 state#2183 storagetype#743 typeidx#1674 typeidx#1676 typeidx#1678 x y z zt +[visit_exp `%;%`_config{state#2183, `instr*#2298`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#79}(a) `CONST`_instr{numtype#549}(`I32`_numtype, i) `CONST`_instr{numtype#551}(`I32`_numtype, j) `CONST`_instr{numtype#553}(`I32`_numtype, `%`_num_{i#44037}(n)) `ARRAY.INIT_DATA`_instr{typeidx#1674, dataidx#39}(x, y)])] +[visit_exp state#2183] +[visit_id state#2183] +[visit_exp `instr*#2298`] +[visit_id instr*#2298] +[visit_exp (z, [`REF.ARRAY_ADDR`_instr{arrayaddr#79}(a) `CONST`_instr{numtype#549}(`I32`_numtype, i) `CONST`_instr{numtype#551}(`I32`_numtype, j) `CONST`_instr{numtype#553}(`I32`_numtype, `%`_num_{i#44037}(n)) `ARRAY.INIT_DATA`_instr{typeidx#1674, dataidx#39}(x, y)])] +[visit_exp z] +[visit_id z] +[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#79}(a) `CONST`_instr{numtype#549}(`I32`_numtype, i) `CONST`_instr{numtype#551}(`I32`_numtype, j) `CONST`_instr{numtype#553}(`I32`_numtype, `%`_num_{i#44037}(n)) `ARRAY.INIT_DATA`_instr{typeidx#1674, dataidx#39}(x, y)]] +[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#79}(a)] +[visit_exp arrayaddr#79] +[visit_id arrayaddr#79] +[visit_exp (a)] +[visit_exp a] +[visit_id a] +[visit_exp `CONST`_instr{numtype#549}(`I32`_numtype, i)] +[visit_exp numtype#549] +[visit_id numtype#549] +[visit_exp (`I32`_numtype, i)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i] +[visit_id i] +[visit_exp `CONST`_instr{numtype#551}(`I32`_numtype, j)] +[visit_exp numtype#551] +[visit_id numtype#551] +[visit_exp (`I32`_numtype, j)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp j] +[visit_id j] +[visit_exp `CONST`_instr{numtype#553}(`I32`_numtype, `%`_num_{i#44037}(n))] +[visit_exp numtype#553] +[visit_id numtype#553] +[visit_exp (`I32`_numtype, `%`_num_{i#44037}(n))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#44037}(n)] +[visit_exp i#44037] +[visit_id i#44037] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `ARRAY.INIT_DATA`_instr{typeidx#1674, dataidx#39}(x, y)] +[visit_exp typeidx#1674] +[visit_id typeidx#1674] +[visit_exp dataidx#39] +[visit_id dataidx#39] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] +[visit_exp y] +[visit_id y] +[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#81}(a) `CONST`_instr{numtype#555}(`I32`_numtype, i) $const($cunpack(zt), $cunpacknum_(zt, c)) `ARRAY.SET`_instr{typeidx#1676}(x) `REF.ARRAY_ADDR`_instr{arrayaddr#83}(a) `CONST`_instr{numtype#557}(`I32`_numtype, `%`_num_{i#44127}((i!`%`_num_{i#44117}.0 + 1))) `CONST`_instr{numtype#559}(`I32`_numtype, `%`_num_{i#44163}((j!`%`_num_{i#44153}.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))) `CONST`_instr{numtype#561}(`I32`_numtype, `%`_num_{i#44185}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `ARRAY.INIT_DATA`_instr{typeidx#1678, dataidx#41}(x, y)]] +[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#81}(a)] +[visit_exp arrayaddr#81] +[visit_id arrayaddr#81] +[visit_exp (a)] +[visit_exp a] +[visit_id a] not free +[visit_exp `CONST`_instr{numtype#555}(`I32`_numtype, i)] +[visit_exp numtype#555] +[visit_id numtype#555] +[visit_exp (`I32`_numtype, i)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i] +[visit_id i] not free +[visit_exp $const($cunpack(zt), $cunpacknum_(zt, c))] +[visit_exp $cunpack(zt)] +[visit_exp zt] +[visit_id zt] +[visit_exp $cunpacknum_(zt, c)] +[visit_exp zt] +[visit_id zt] not free +[visit_exp c] +[visit_id c] +[visit_exp `ARRAY.SET`_instr{typeidx#1676}(x)] +[visit_exp typeidx#1676] +[visit_id typeidx#1676] +[visit_exp (x)] +[visit_exp x] +[visit_id x] not free +[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#83}(a)] +[visit_exp arrayaddr#83] +[visit_id arrayaddr#83] +[visit_exp (a)] +[visit_exp a] +[visit_id a] not free +[visit_exp `CONST`_instr{numtype#557}(`I32`_numtype, `%`_num_{i#44127}((i!`%`_num_{i#44117}.0 + 1)))] +[visit_exp numtype#557] +[visit_id numtype#557] +[visit_exp (`I32`_numtype, `%`_num_{i#44127}((i!`%`_num_{i#44117}.0 + 1)))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#44127}((i!`%`_num_{i#44117}.0 + 1))] +[visit_exp i#44127] +[visit_id i#44127] +[visit_exp ((i!`%`_num_{i#44117}.0 + 1))] +[visit_exp (i!`%`_num_{i#44117}.0 + 1)] +[visit_exp i!`%`_num_{i#44117}.0] +[visit_exp i!`%`_num_{i#44117}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#44117] +[visit_id i#44117] +[visit_exp 1] +[visit_exp `CONST`_instr{numtype#559}(`I32`_numtype, `%`_num_{i#44163}((j!`%`_num_{i#44153}.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))] +[visit_exp numtype#559] +[visit_id numtype#559] +[visit_exp (`I32`_numtype, `%`_num_{i#44163}((j!`%`_num_{i#44153}.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#44163}((j!`%`_num_{i#44153}.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))] +[visit_exp i#44163] +[visit_id i#44163] +[visit_exp ((j!`%`_num_{i#44153}.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))] +[visit_exp (j!`%`_num_{i#44153}.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] +[visit_exp j!`%`_num_{i#44153}.0] +[visit_exp j!`%`_num_{i#44153}] +[visit_exp j] +[visit_id j] not free +[visit_exp i#44153] +[visit_id i#44153] +[visit_exp ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] +[visit_exp (($zsize(zt) : nat <:> rat) / (8 : nat <:> rat))] +[visit_exp ($zsize(zt) : nat <:> rat)] +[visit_exp $zsize(zt)] +[visit_exp zt] +[visit_id zt] not free +[visit_exp (8 : nat <:> rat)] +[visit_exp 8] +[visit_exp `CONST`_instr{numtype#561}(`I32`_numtype, `%`_num_{i#44185}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp numtype#561] +[visit_id numtype#561] +[visit_exp (`I32`_numtype, `%`_num_{i#44185}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#44185}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp i#44185] +[visit_id i#44185] +[visit_exp ((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp (((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp ((n : nat <:> int) - (1 : nat <:> int))] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp `ARRAY.INIT_DATA`_instr{typeidx#1678, dataidx#41}(x, y)] +[visit_exp typeidx#1678] +[visit_id typeidx#1678] +[visit_exp dataidx#41] +[visit_id dataidx#41] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] not free +[visit_exp y] +[visit_id y] not free +[visit_exp ($type(z, x), `ARRAY`_comptype{fieldtype#57}(`%%`_fieldtype{`mut?#1205`, storagetype#743}(mut?{mut <- `mut?`}, zt)))] +[visit_exp $type(z, x)] +[visit_exp z] +[visit_id z] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `ARRAY`_comptype{fieldtype#57}(`%%`_fieldtype{`mut?#1205`, storagetype#743}(mut?{mut <- `mut?`}, zt))] +[visit_exp fieldtype#57] +[visit_id fieldtype#57] +[visit_exp (`%%`_fieldtype{`mut?#1205`, storagetype#743}(mut?{mut <- `mut?`}, zt))] +[visit_exp `%%`_fieldtype{`mut?#1205`, storagetype#743}(mut?{mut <- `mut?`}, zt)] +[visit_exp `mut?#1205`] +[visit_id mut?#1205] +[visit_exp storagetype#743] +[visit_id storagetype#743] +[visit_exp (mut?{mut <- `mut?`}, zt)] +[visit_exp mut?{mut <- `mut?`}] +[scope_enter mut] +[visit_exp mut] +[visit_id mut] not free +[visit_id mut] not free +[scope_exit mut] +[visit_exp `mut?`] +[visit_id mut?] no dims +[visit_id mut?] +[visit_exp zt] +[visit_id zt] not free +[visit_exp ($zbytes_(zt, c) = $data(z, y).`BYTES`_datainst{`byte*#1878`}[j!`%`_num_{i#44247}.0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)])] +[visit_exp $zbytes_(zt, c)] +[visit_exp zt] +[visit_id zt] not free +[visit_exp c] +[visit_id c] not free +[visit_exp $data(z, y).`BYTES`_datainst{`byte*#1878`}[j!`%`_num_{i#44247}.0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]] +[visit_exp $data(z, y).`BYTES`_datainst{`byte*#1878`}] +[visit_exp $data(z, y)] +[visit_exp z] +[visit_id z] not free +[visit_exp y] +[visit_id y] not free +[visit_exp `byte*#1878`] +[visit_id byte*#1878] +[visit_exp j!`%`_num_{i#44247}.0] +[visit_exp j!`%`_num_{i#44247}] +[visit_exp j] +[visit_id j] not free +[visit_exp i#44247] +[visit_id i#44247] +[visit_exp ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] +[visit_exp (($zsize(zt) : nat <:> rat) / (8 : nat <:> rat))] +[visit_exp ($zsize(zt) : nat <:> rat)] +[visit_exp $zsize(zt)] +[visit_exp zt] +[visit_id zt] not free +[visit_exp (8 : nat <:> rat)] +[visit_exp 8] +[check_dims] heaptype#1449 heaptype#1451 ht +[visit_exp [`REF.NULL`_instr{heaptype#1449}(ht) `EXTERN.CONVERT_ANY`_instr]] +[visit_exp `REF.NULL`_instr{heaptype#1449}(ht)] +[visit_exp heaptype#1449] +[visit_id heaptype#1449] +[visit_exp (ht)] +[visit_exp ht] +[visit_id ht] +[visit_exp `EXTERN.CONVERT_ANY`_instr] +[visit_exp ()] +[visit_exp [`REF.NULL`_instr{heaptype#1451}(`EXTERN`_heaptype)]] +[visit_exp `REF.NULL`_instr{heaptype#1451}(`EXTERN`_heaptype)] +[visit_exp heaptype#1451] +[visit_id heaptype#1451] +[visit_exp (`EXTERN`_heaptype)] +[visit_exp `EXTERN`_heaptype] +[visit_exp ()] +[check_dims] addrref addrref#3 +[visit_exp [(addrref : addrref <: instr) `EXTERN.CONVERT_ANY`_instr]] +[visit_exp (addrref : addrref <: instr)] +[visit_exp addrref] +[visit_id addrref] +[visit_exp `EXTERN.CONVERT_ANY`_instr] +[visit_exp ()] +[visit_exp [`REF.EXTERN`_instr{addrref#3}(addrref)]] +[visit_exp `REF.EXTERN`_instr{addrref#3}(addrref)] +[visit_exp addrref#3] +[visit_id addrref#3] +[visit_exp (addrref)] +[visit_exp addrref] +[visit_id addrref] not free +[check_dims] heaptype#1453 heaptype#1455 ht +[visit_exp [`REF.NULL`_instr{heaptype#1453}(ht) `ANY.CONVERT_EXTERN`_instr]] +[visit_exp `REF.NULL`_instr{heaptype#1453}(ht)] +[visit_exp heaptype#1453] +[visit_id heaptype#1453] +[visit_exp (ht)] +[visit_exp ht] +[visit_id ht] +[visit_exp `ANY.CONVERT_EXTERN`_instr] +[visit_exp ()] +[visit_exp [`REF.NULL`_instr{heaptype#1455}(`ANY`_heaptype)]] +[visit_exp `REF.NULL`_instr{heaptype#1455}(`ANY`_heaptype)] +[visit_exp heaptype#1455] +[visit_id heaptype#1455] +[visit_exp (`ANY`_heaptype)] +[visit_exp `ANY`_heaptype] +[visit_exp ()] +[check_dims] addrref addrref#5 +[visit_exp [`REF.EXTERN`_instr{addrref#5}(addrref) `ANY.CONVERT_EXTERN`_instr]] +[visit_exp `REF.EXTERN`_instr{addrref#5}(addrref)] +[visit_exp addrref#5] +[visit_id addrref#5] +[visit_exp (addrref)] +[visit_exp addrref] +[visit_id addrref] +[visit_exp `ANY.CONVERT_EXTERN`_instr] +[visit_exp ()] +[visit_exp [(addrref : addrref <: instr)]] +[visit_exp (addrref : addrref <: instr)] +[visit_exp addrref] +[visit_id addrref] not free +[check_dims] c c_1 nt numtype#563 numtype#565 numtype#567 unop +[visit_exp [`CONST`_instr{numtype#563}(nt, c_1) `UNOP`_instr{numtype#565}(nt, unop)]] +[visit_exp `CONST`_instr{numtype#563}(nt, c_1)] +[visit_exp numtype#563] +[visit_id numtype#563] +[visit_exp (nt, c_1)] +[visit_exp nt] +[visit_id nt] +[visit_exp c_1] +[visit_id c_1] +[visit_exp `UNOP`_instr{numtype#565}(nt, unop)] +[visit_exp numtype#565] +[visit_id numtype#565] +[visit_exp (nt, unop)] +[visit_exp nt] +[visit_id nt] not free +[visit_exp unop] +[visit_id unop] +[visit_exp [`CONST`_instr{numtype#567}(nt, c)]] +[visit_exp `CONST`_instr{numtype#567}(nt, c)] +[visit_exp numtype#567] +[visit_id numtype#567] +[visit_exp (nt, c)] +[visit_exp nt] +[visit_id nt] not free +[visit_exp c] +[visit_id c] +[visit_exp (c <- $unop_(nt, unop, c_1))] +[visit_exp c] +[visit_id c] not free +[visit_exp $unop_(nt, unop, c_1)] +[visit_exp nt] +[visit_id nt] not free +[visit_exp unop] +[visit_id unop] not free +[visit_exp c_1] +[visit_id c_1] not free +[check_dims] c_1 nt numtype#569 numtype#571 unop +[visit_exp [`CONST`_instr{numtype#569}(nt, c_1) `UNOP`_instr{numtype#571}(nt, unop)]] +[visit_exp `CONST`_instr{numtype#569}(nt, c_1)] +[visit_exp numtype#569] +[visit_id numtype#569] +[visit_exp (nt, c_1)] +[visit_exp nt] +[visit_id nt] +[visit_exp c_1] +[visit_id c_1] +[visit_exp `UNOP`_instr{numtype#571}(nt, unop)] +[visit_exp numtype#571] +[visit_id numtype#571] +[visit_exp (nt, unop)] +[visit_exp nt] +[visit_id nt] not free +[visit_exp unop] +[visit_id unop] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[visit_exp ($unop_(nt, unop, c_1) = [])] +[visit_exp $unop_(nt, unop, c_1)] +[visit_exp nt] +[visit_id nt] not free +[visit_exp unop] +[visit_id unop] not free +[visit_exp c_1] +[visit_id c_1] not free +[visit_exp []] +[check_dims] binop c c_1 c_2 nt numtype#573 numtype#575 numtype#577 numtype#579 +[visit_exp [`CONST`_instr{numtype#573}(nt, c_1) `CONST`_instr{numtype#575}(nt, c_2) `BINOP`_instr{numtype#577}(nt, binop)]] +[visit_exp `CONST`_instr{numtype#573}(nt, c_1)] +[visit_exp numtype#573] +[visit_id numtype#573] +[visit_exp (nt, c_1)] +[visit_exp nt] +[visit_id nt] +[visit_exp c_1] +[visit_id c_1] +[visit_exp `CONST`_instr{numtype#575}(nt, c_2)] +[visit_exp numtype#575] +[visit_id numtype#575] +[visit_exp (nt, c_2)] +[visit_exp nt] +[visit_id nt] not free +[visit_exp c_2] +[visit_id c_2] +[visit_exp `BINOP`_instr{numtype#577}(nt, binop)] +[visit_exp numtype#577] +[visit_id numtype#577] +[visit_exp (nt, binop)] +[visit_exp nt] +[visit_id nt] not free +[visit_exp binop] +[visit_id binop] +[visit_exp [`CONST`_instr{numtype#579}(nt, c)]] +[visit_exp `CONST`_instr{numtype#579}(nt, c)] +[visit_exp numtype#579] +[visit_id numtype#579] +[visit_exp (nt, c)] +[visit_exp nt] +[visit_id nt] not free +[visit_exp c] +[visit_id c] +[visit_exp (c <- $binop_(nt, binop, c_1, c_2))] +[visit_exp c] +[visit_id c] not free +[visit_exp $binop_(nt, binop, c_1, c_2)] +[visit_exp nt] +[visit_id nt] not free +[visit_exp binop] +[visit_id binop] not free +[visit_exp c_1] +[visit_id c_1] not free +[visit_exp c_2] +[visit_id c_2] not free +[check_dims] binop c_1 c_2 nt numtype#581 numtype#583 numtype#585 +[visit_exp [`CONST`_instr{numtype#581}(nt, c_1) `CONST`_instr{numtype#583}(nt, c_2) `BINOP`_instr{numtype#585}(nt, binop)]] +[visit_exp `CONST`_instr{numtype#581}(nt, c_1)] +[visit_exp numtype#581] +[visit_id numtype#581] +[visit_exp (nt, c_1)] +[visit_exp nt] +[visit_id nt] +[visit_exp c_1] +[visit_id c_1] +[visit_exp `CONST`_instr{numtype#583}(nt, c_2)] +[visit_exp numtype#583] +[visit_id numtype#583] +[visit_exp (nt, c_2)] +[visit_exp nt] +[visit_id nt] not free +[visit_exp c_2] +[visit_id c_2] +[visit_exp `BINOP`_instr{numtype#585}(nt, binop)] +[visit_exp numtype#585] +[visit_id numtype#585] +[visit_exp (nt, binop)] +[visit_exp nt] +[visit_id nt] not free +[visit_exp binop] +[visit_id binop] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[visit_exp ($binop_(nt, binop, c_1, c_2) = [])] +[visit_exp $binop_(nt, binop, c_1, c_2)] +[visit_exp nt] +[visit_id nt] not free +[visit_exp binop] +[visit_id binop] not free +[visit_exp c_1] +[visit_id c_1] not free +[visit_exp c_2] +[visit_id c_2] not free +[visit_exp []] +[check_dims] c c_1 nt numtype#587 numtype#589 numtype#591 testop +[visit_exp [`CONST`_instr{numtype#587}(nt, c_1) `TESTOP`_instr{numtype#589}(nt, testop)]] +[visit_exp `CONST`_instr{numtype#587}(nt, c_1)] +[visit_exp numtype#587] +[visit_id numtype#587] +[visit_exp (nt, c_1)] +[visit_exp nt] +[visit_id nt] +[visit_exp c_1] +[visit_id c_1] +[visit_exp `TESTOP`_instr{numtype#589}(nt, testop)] +[visit_exp numtype#589] +[visit_id numtype#589] +[visit_exp (nt, testop)] +[visit_exp nt] +[visit_id nt] not free +[visit_exp testop] +[visit_id testop] +[visit_exp [`CONST`_instr{numtype#591}(`I32`_numtype, c)]] +[visit_exp `CONST`_instr{numtype#591}(`I32`_numtype, c)] +[visit_exp numtype#591] +[visit_id numtype#591] +[visit_exp (`I32`_numtype, c)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp c] +[visit_id c] +[visit_exp (c = $testop_(nt, testop, c_1))] +[visit_exp c] +[visit_id c] not free +[visit_exp $testop_(nt, testop, c_1)] +[visit_exp nt] +[visit_id nt] not free +[visit_exp testop] +[visit_id testop] not free +[visit_exp c_1] +[visit_id c_1] not free +[check_dims] c c_1 c_2 nt numtype#593 numtype#595 numtype#597 numtype#599 relop +[visit_exp [`CONST`_instr{numtype#593}(nt, c_1) `CONST`_instr{numtype#595}(nt, c_2) `RELOP`_instr{numtype#597}(nt, relop)]] +[visit_exp `CONST`_instr{numtype#593}(nt, c_1)] +[visit_exp numtype#593] +[visit_id numtype#593] +[visit_exp (nt, c_1)] +[visit_exp nt] +[visit_id nt] +[visit_exp c_1] +[visit_id c_1] +[visit_exp `CONST`_instr{numtype#595}(nt, c_2)] +[visit_exp numtype#595] +[visit_id numtype#595] +[visit_exp (nt, c_2)] +[visit_exp nt] +[visit_id nt] not free +[visit_exp c_2] +[visit_id c_2] +[visit_exp `RELOP`_instr{numtype#597}(nt, relop)] +[visit_exp numtype#597] +[visit_id numtype#597] +[visit_exp (nt, relop)] +[visit_exp nt] +[visit_id nt] not free +[visit_exp relop] +[visit_id relop] +[visit_exp [`CONST`_instr{numtype#599}(`I32`_numtype, c)]] +[visit_exp `CONST`_instr{numtype#599}(`I32`_numtype, c)] +[visit_exp numtype#599] +[visit_id numtype#599] +[visit_exp (`I32`_numtype, c)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp c] +[visit_id c] +[visit_exp (c = $relop_(nt, relop, c_1, c_2))] +[visit_exp c] +[visit_id c] not free +[visit_exp $relop_(nt, relop, c_1, c_2)] +[visit_exp nt] +[visit_id nt] not free +[visit_exp relop] +[visit_id relop] not free +[visit_exp c_1] +[visit_id c_1] not free +[visit_exp c_2] +[visit_id c_2] not free +[check_dims] c c_1 cvtop nt_1 nt_2 numtype#601 numtype#603 numtype_1#5 numtype_2#5 +[visit_exp [`CONST`_instr{numtype#601}(nt_1, c_1) `CVTOP`_instr{numtype_1#5, numtype_2#5}(nt_2, nt_1, cvtop)]] +[visit_exp `CONST`_instr{numtype#601}(nt_1, c_1)] +[visit_exp numtype#601] +[visit_id numtype#601] +[visit_exp (nt_1, c_1)] +[visit_exp nt_1] +[visit_id nt_1] +[visit_exp c_1] +[visit_id c_1] +[visit_exp `CVTOP`_instr{numtype_1#5, numtype_2#5}(nt_2, nt_1, cvtop)] +[visit_exp numtype_1#5] +[visit_id numtype_1#5] +[visit_exp numtype_2#5] +[visit_id numtype_2#5] +[visit_exp (nt_2, nt_1, cvtop)] +[visit_exp nt_2] +[visit_id nt_2] +[visit_exp nt_1] +[visit_id nt_1] not free +[visit_exp cvtop] +[visit_id cvtop] +[visit_exp [`CONST`_instr{numtype#603}(nt_2, c)]] +[visit_exp `CONST`_instr{numtype#603}(nt_2, c)] +[visit_exp numtype#603] +[visit_id numtype#603] +[visit_exp (nt_2, c)] +[visit_exp nt_2] +[visit_id nt_2] not free +[visit_exp c] +[visit_id c] +[visit_exp (c <- $cvtop__(nt_1, nt_2, cvtop, c_1))] +[visit_exp c] +[visit_id c] not free +[visit_exp $cvtop__(nt_1, nt_2, cvtop, c_1)] +[visit_exp nt_1] +[visit_id nt_1] not free +[visit_exp nt_2] +[visit_id nt_2] not free +[visit_exp cvtop] +[visit_id cvtop] not free +[visit_exp c_1] +[visit_id c_1] not free +[check_dims] c_1 cvtop nt_1 nt_2 numtype#605 numtype_1#7 numtype_2#7 +[visit_exp [`CONST`_instr{numtype#605}(nt_1, c_1) `CVTOP`_instr{numtype_1#7, numtype_2#7}(nt_2, nt_1, cvtop)]] +[visit_exp `CONST`_instr{numtype#605}(nt_1, c_1)] +[visit_exp numtype#605] +[visit_id numtype#605] +[visit_exp (nt_1, c_1)] +[visit_exp nt_1] +[visit_id nt_1] +[visit_exp c_1] +[visit_id c_1] +[visit_exp `CVTOP`_instr{numtype_1#7, numtype_2#7}(nt_2, nt_1, cvtop)] +[visit_exp numtype_1#7] +[visit_id numtype_1#7] +[visit_exp numtype_2#7] +[visit_id numtype_2#7] +[visit_exp (nt_2, nt_1, cvtop)] +[visit_exp nt_2] +[visit_id nt_2] +[visit_exp nt_1] +[visit_id nt_1] not free +[visit_exp cvtop] +[visit_id cvtop] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[visit_exp ($cvtop__(nt_1, nt_2, cvtop, c_1) = [])] +[visit_exp $cvtop__(nt_1, nt_2, cvtop, c_1)] +[visit_exp nt_1] +[visit_id nt_1] not free +[visit_exp nt_2] +[visit_id nt_2] not free +[visit_exp cvtop] +[visit_id cvtop] not free +[visit_exp c_1] +[visit_id c_1] not free +[visit_exp []] +[check_dims] c c_1 vectype#104 vectype#106 vectype#108 vvunop vvunop#5 +[visit_exp [`VCONST`_instr{vectype#104}(`V128`_vectype, c_1) `VVUNOP`_instr{vectype#106, vvunop#5}(`V128`_vectype, vvunop)]] +[visit_exp `VCONST`_instr{vectype#104}(`V128`_vectype, c_1)] +[visit_exp vectype#104] +[visit_id vectype#104] +[visit_exp (`V128`_vectype, c_1)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c_1] +[visit_id c_1] +[visit_exp `VVUNOP`_instr{vectype#106, vvunop#5}(`V128`_vectype, vvunop)] +[visit_exp vectype#106] +[visit_id vectype#106] +[visit_exp vvunop#5] +[visit_id vvunop#5] +[visit_exp (`V128`_vectype, vvunop)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp vvunop] +[visit_id vvunop] +[visit_exp [`VCONST`_instr{vectype#108}(`V128`_vectype, c)]] +[visit_exp `VCONST`_instr{vectype#108}(`V128`_vectype, c)] +[visit_exp vectype#108] +[visit_id vectype#108] +[visit_exp (`V128`_vectype, c)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c] +[visit_id c] +[visit_exp (c <- $vvunop_(`V128`_vectype, vvunop, c_1))] +[visit_exp c] +[visit_id c] not free +[visit_exp $vvunop_(`V128`_vectype, vvunop, c_1)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp vvunop] +[visit_id vvunop] not free +[visit_exp c_1] +[visit_id c_1] not free +[check_dims] c c_1 c_2 vectype#110 vectype#112 vectype#114 vectype#116 vvbinop vvbinop#5 +[visit_exp [`VCONST`_instr{vectype#110}(`V128`_vectype, c_1) `VCONST`_instr{vectype#112}(`V128`_vectype, c_2) `VVBINOP`_instr{vectype#114, vvbinop#5}(`V128`_vectype, vvbinop)]] +[visit_exp `VCONST`_instr{vectype#110}(`V128`_vectype, c_1)] +[visit_exp vectype#110] +[visit_id vectype#110] +[visit_exp (`V128`_vectype, c_1)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c_1] +[visit_id c_1] +[visit_exp `VCONST`_instr{vectype#112}(`V128`_vectype, c_2)] +[visit_exp vectype#112] +[visit_id vectype#112] +[visit_exp (`V128`_vectype, c_2)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c_2] +[visit_id c_2] +[visit_exp `VVBINOP`_instr{vectype#114, vvbinop#5}(`V128`_vectype, vvbinop)] +[visit_exp vectype#114] +[visit_id vectype#114] +[visit_exp vvbinop#5] +[visit_id vvbinop#5] +[visit_exp (`V128`_vectype, vvbinop)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp vvbinop] +[visit_id vvbinop] +[visit_exp [`VCONST`_instr{vectype#116}(`V128`_vectype, c)]] +[visit_exp `VCONST`_instr{vectype#116}(`V128`_vectype, c)] +[visit_exp vectype#116] +[visit_id vectype#116] +[visit_exp (`V128`_vectype, c)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c] +[visit_id c] +[visit_exp (c <- $vvbinop_(`V128`_vectype, vvbinop, c_1, c_2))] +[visit_exp c] +[visit_id c] not free +[visit_exp $vvbinop_(`V128`_vectype, vvbinop, c_1, c_2)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp vvbinop] +[visit_id vvbinop] not free +[visit_exp c_1] +[visit_id c_1] not free +[visit_exp c_2] +[visit_id c_2] not free +[check_dims] c c_1 c_2 c_3 vectype#118 vectype#120 vectype#122 vectype#124 vectype#126 vvternop vvternop#5 +[visit_exp [`VCONST`_instr{vectype#118}(`V128`_vectype, c_1) `VCONST`_instr{vectype#120}(`V128`_vectype, c_2) `VCONST`_instr{vectype#122}(`V128`_vectype, c_3) `VVTERNOP`_instr{vectype#124, vvternop#5}(`V128`_vectype, vvternop)]] +[visit_exp `VCONST`_instr{vectype#118}(`V128`_vectype, c_1)] +[visit_exp vectype#118] +[visit_id vectype#118] +[visit_exp (`V128`_vectype, c_1)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c_1] +[visit_id c_1] +[visit_exp `VCONST`_instr{vectype#120}(`V128`_vectype, c_2)] +[visit_exp vectype#120] +[visit_id vectype#120] +[visit_exp (`V128`_vectype, c_2)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c_2] +[visit_id c_2] +[visit_exp `VCONST`_instr{vectype#122}(`V128`_vectype, c_3)] +[visit_exp vectype#122] +[visit_id vectype#122] +[visit_exp (`V128`_vectype, c_3)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c_3] +[visit_id c_3] +[visit_exp `VVTERNOP`_instr{vectype#124, vvternop#5}(`V128`_vectype, vvternop)] +[visit_exp vectype#124] +[visit_id vectype#124] +[visit_exp vvternop#5] +[visit_id vvternop#5] +[visit_exp (`V128`_vectype, vvternop)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp vvternop] +[visit_id vvternop] +[visit_exp [`VCONST`_instr{vectype#126}(`V128`_vectype, c)]] +[visit_exp `VCONST`_instr{vectype#126}(`V128`_vectype, c)] +[visit_exp vectype#126] +[visit_id vectype#126] +[visit_exp (`V128`_vectype, c)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c] +[visit_id c] +[visit_exp (c <- $vvternop_(`V128`_vectype, vvternop, c_1, c_2, c_3))] +[visit_exp c] +[visit_id c] not free +[visit_exp $vvternop_(`V128`_vectype, vvternop, c_1, c_2, c_3)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp vvternop] +[visit_id vvternop] not free +[visit_exp c_1] +[visit_id c_1] not free +[visit_exp c_2] +[visit_id c_2] not free +[visit_exp c_3] +[visit_id c_3] not free +[check_dims] c c_1 numtype#607 vectype#128 vectype#130 vvtestop#5 +[visit_exp [`VCONST`_instr{vectype#128}(`V128`_vectype, c_1) `VVTESTOP`_instr{vectype#130, vvtestop#5}(`V128`_vectype, `ANY_TRUE`_vvtestop)]] +[visit_exp `VCONST`_instr{vectype#128}(`V128`_vectype, c_1)] +[visit_exp vectype#128] +[visit_id vectype#128] +[visit_exp (`V128`_vectype, c_1)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c_1] +[visit_id c_1] +[visit_exp `VVTESTOP`_instr{vectype#130, vvtestop#5}(`V128`_vectype, `ANY_TRUE`_vvtestop)] +[visit_exp vectype#130] +[visit_id vectype#130] +[visit_exp vvtestop#5] +[visit_id vvtestop#5] +[visit_exp (`V128`_vectype, `ANY_TRUE`_vvtestop)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp `ANY_TRUE`_vvtestop] +[visit_exp ()] +[visit_exp [`CONST`_instr{numtype#607}(`I32`_numtype, c)]] +[visit_exp `CONST`_instr{numtype#607}(`I32`_numtype, c)] +[visit_exp numtype#607] +[visit_id numtype#607] +[visit_exp (`I32`_numtype, c)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp c] +[visit_id c] +[visit_exp (c = $inez_($vsize(`V128`_vectype), c_1))] +[visit_exp c] +[visit_id c] not free +[visit_exp $inez_($vsize(`V128`_vectype), c_1)] +[visit_exp $vsize(`V128`_vectype)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c_1] +[visit_id c_1] not free +[check_dims] c c_1 sh shape#681 vectype#132 vectype#134 vunop +[visit_exp [`VCONST`_instr{vectype#132}(`V128`_vectype, c_1) `VUNOP`_instr{shape#681}(sh, vunop)]] +[visit_exp `VCONST`_instr{vectype#132}(`V128`_vectype, c_1)] +[visit_exp vectype#132] +[visit_id vectype#132] +[visit_exp (`V128`_vectype, c_1)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c_1] +[visit_id c_1] +[visit_exp `VUNOP`_instr{shape#681}(sh, vunop)] +[visit_exp shape#681] +[visit_id shape#681] +[visit_exp (sh, vunop)] +[visit_exp sh] +[visit_id sh] +[visit_exp vunop] +[visit_id vunop] +[visit_exp [`VCONST`_instr{vectype#134}(`V128`_vectype, c)]] +[visit_exp `VCONST`_instr{vectype#134}(`V128`_vectype, c)] +[visit_exp vectype#134] +[visit_id vectype#134] +[visit_exp (`V128`_vectype, c)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c] +[visit_id c] +[visit_exp (c <- $vunop_(sh, vunop, c_1))] +[visit_exp c] +[visit_id c] not free +[visit_exp $vunop_(sh, vunop, c_1)] +[visit_exp sh] +[visit_id sh] not free +[visit_exp vunop] +[visit_id vunop] not free +[visit_exp c_1] +[visit_id c_1] not free +[check_dims] c_1 sh shape#683 vectype#136 vunop +[visit_exp [`VCONST`_instr{vectype#136}(`V128`_vectype, c_1) `VUNOP`_instr{shape#683}(sh, vunop)]] +[visit_exp `VCONST`_instr{vectype#136}(`V128`_vectype, c_1)] +[visit_exp vectype#136] +[visit_id vectype#136] +[visit_exp (`V128`_vectype, c_1)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c_1] +[visit_id c_1] +[visit_exp `VUNOP`_instr{shape#683}(sh, vunop)] +[visit_exp shape#683] +[visit_id shape#683] +[visit_exp (sh, vunop)] +[visit_exp sh] +[visit_id sh] +[visit_exp vunop] +[visit_id vunop] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[visit_exp ($vunop_(sh, vunop, c_1) = [])] +[visit_exp $vunop_(sh, vunop, c_1)] +[visit_exp sh] +[visit_id sh] not free +[visit_exp vunop] +[visit_id vunop] not free +[visit_exp c_1] +[visit_id c_1] not free +[visit_exp []] +[check_dims] c c_1 c_2 sh shape#685 vbinop vectype#138 vectype#140 vectype#142 +[visit_exp [`VCONST`_instr{vectype#138}(`V128`_vectype, c_1) `VCONST`_instr{vectype#140}(`V128`_vectype, c_2) `VBINOP`_instr{shape#685}(sh, vbinop)]] +[visit_exp `VCONST`_instr{vectype#138}(`V128`_vectype, c_1)] +[visit_exp vectype#138] +[visit_id vectype#138] +[visit_exp (`V128`_vectype, c_1)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c_1] +[visit_id c_1] +[visit_exp `VCONST`_instr{vectype#140}(`V128`_vectype, c_2)] +[visit_exp vectype#140] +[visit_id vectype#140] +[visit_exp (`V128`_vectype, c_2)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c_2] +[visit_id c_2] +[visit_exp `VBINOP`_instr{shape#685}(sh, vbinop)] +[visit_exp shape#685] +[visit_id shape#685] +[visit_exp (sh, vbinop)] +[visit_exp sh] +[visit_id sh] +[visit_exp vbinop] +[visit_id vbinop] +[visit_exp [`VCONST`_instr{vectype#142}(`V128`_vectype, c)]] +[visit_exp `VCONST`_instr{vectype#142}(`V128`_vectype, c)] +[visit_exp vectype#142] +[visit_id vectype#142] +[visit_exp (`V128`_vectype, c)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c] +[visit_id c] +[visit_exp (c <- $vbinop_(sh, vbinop, c_1, c_2))] +[visit_exp c] +[visit_id c] not free +[visit_exp $vbinop_(sh, vbinop, c_1, c_2)] +[visit_exp sh] +[visit_id sh] not free +[visit_exp vbinop] +[visit_id vbinop] not free +[visit_exp c_1] +[visit_id c_1] not free +[visit_exp c_2] +[visit_id c_2] not free +[check_dims] c_1 c_2 sh shape#687 vbinop vectype#144 vectype#146 +[visit_exp [`VCONST`_instr{vectype#144}(`V128`_vectype, c_1) `VCONST`_instr{vectype#146}(`V128`_vectype, c_2) `VBINOP`_instr{shape#687}(sh, vbinop)]] +[visit_exp `VCONST`_instr{vectype#144}(`V128`_vectype, c_1)] +[visit_exp vectype#144] +[visit_id vectype#144] +[visit_exp (`V128`_vectype, c_1)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c_1] +[visit_id c_1] +[visit_exp `VCONST`_instr{vectype#146}(`V128`_vectype, c_2)] +[visit_exp vectype#146] +[visit_id vectype#146] +[visit_exp (`V128`_vectype, c_2)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c_2] +[visit_id c_2] +[visit_exp `VBINOP`_instr{shape#687}(sh, vbinop)] +[visit_exp shape#687] +[visit_id shape#687] +[visit_exp (sh, vbinop)] +[visit_exp sh] +[visit_id sh] +[visit_exp vbinop] +[visit_id vbinop] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[visit_exp ($vbinop_(sh, vbinop, c_1, c_2) = [])] +[visit_exp $vbinop_(sh, vbinop, c_1, c_2)] +[visit_exp sh] +[visit_id sh] not free +[visit_exp vbinop] +[visit_id vbinop] not free +[visit_exp c_1] +[visit_id c_1] not free +[visit_exp c_2] +[visit_id c_2] not free +[visit_exp []] +[check_dims] c c_1 c_2 c_3 sh shape#689 vectype#148 vectype#150 vectype#152 vectype#154 vternop +[visit_exp [`VCONST`_instr{vectype#148}(`V128`_vectype, c_1) `VCONST`_instr{vectype#150}(`V128`_vectype, c_2) `VCONST`_instr{vectype#152}(`V128`_vectype, c_3) `VTERNOP`_instr{shape#689}(sh, vternop)]] +[visit_exp `VCONST`_instr{vectype#148}(`V128`_vectype, c_1)] +[visit_exp vectype#148] +[visit_id vectype#148] +[visit_exp (`V128`_vectype, c_1)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c_1] +[visit_id c_1] +[visit_exp `VCONST`_instr{vectype#150}(`V128`_vectype, c_2)] +[visit_exp vectype#150] +[visit_id vectype#150] +[visit_exp (`V128`_vectype, c_2)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c_2] +[visit_id c_2] +[visit_exp `VCONST`_instr{vectype#152}(`V128`_vectype, c_3)] +[visit_exp vectype#152] +[visit_id vectype#152] +[visit_exp (`V128`_vectype, c_3)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c_3] +[visit_id c_3] +[visit_exp `VTERNOP`_instr{shape#689}(sh, vternop)] +[visit_exp shape#689] +[visit_id shape#689] +[visit_exp (sh, vternop)] +[visit_exp sh] +[visit_id sh] +[visit_exp vternop] +[visit_id vternop] +[visit_exp [`VCONST`_instr{vectype#154}(`V128`_vectype, c)]] +[visit_exp `VCONST`_instr{vectype#154}(`V128`_vectype, c)] +[visit_exp vectype#154] +[visit_id vectype#154] +[visit_exp (`V128`_vectype, c)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c] +[visit_id c] +[visit_exp (c <- $vternop_(sh, vternop, c_1, c_2, c_3))] +[visit_exp c] +[visit_id c] not free +[visit_exp $vternop_(sh, vternop, c_1, c_2, c_3)] +[visit_exp sh] +[visit_id sh] not free +[visit_exp vternop] +[visit_id vternop] not free +[visit_exp c_1] +[visit_id c_1] not free +[visit_exp c_2] +[visit_id c_2] not free +[visit_exp c_3] +[visit_id c_3] not free +[check_dims] c_1 c_2 c_3 sh shape#691 vectype#156 vectype#158 vectype#160 vternop +[visit_exp [`VCONST`_instr{vectype#156}(`V128`_vectype, c_1) `VCONST`_instr{vectype#158}(`V128`_vectype, c_2) `VCONST`_instr{vectype#160}(`V128`_vectype, c_3) `VTERNOP`_instr{shape#691}(sh, vternop)]] +[visit_exp `VCONST`_instr{vectype#156}(`V128`_vectype, c_1)] +[visit_exp vectype#156] +[visit_id vectype#156] +[visit_exp (`V128`_vectype, c_1)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c_1] +[visit_id c_1] +[visit_exp `VCONST`_instr{vectype#158}(`V128`_vectype, c_2)] +[visit_exp vectype#158] +[visit_id vectype#158] +[visit_exp (`V128`_vectype, c_2)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c_2] +[visit_id c_2] +[visit_exp `VCONST`_instr{vectype#160}(`V128`_vectype, c_3)] +[visit_exp vectype#160] +[visit_id vectype#160] +[visit_exp (`V128`_vectype, c_3)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c_3] +[visit_id c_3] +[visit_exp `VTERNOP`_instr{shape#691}(sh, vternop)] +[visit_exp shape#691] +[visit_id shape#691] +[visit_exp (sh, vternop)] +[visit_exp sh] +[visit_id sh] +[visit_exp vternop] +[visit_id vternop] +[visit_exp [`TRAP`_instr]] +[visit_exp `TRAP`_instr] +[visit_exp ()] +[visit_exp ($vternop_(sh, vternop, c_1, c_2, c_3) = [])] +[visit_exp $vternop_(sh, vternop, c_1, c_2, c_3)] +[visit_exp sh] +[visit_id sh] not free +[visit_exp vternop] +[visit_id vternop] not free +[visit_exp c_1] +[visit_id c_1] not free +[visit_exp c_2] +[visit_id c_2] not free +[visit_exp c_3] +[visit_id c_3] not free +[visit_exp []] +[check_dims] Jnn M c c_1 dim#7525 dim#7537 i i#45296 i#45303 i#45322 i#45329 i#45428 i#45438 lanetype#7525 lanetype#7537 numtype#609 shape#693 vectype#162 +[visit_exp [`VCONST`_instr{vectype#162}(`V128`_vectype, c_1) `VTESTOP`_instr{shape#693}(`%X%`_shape{lanetype#7525, dim#7525, i#45296}((Jnn : Jnn <: lanetype), `%`_dim{i#45303}(M)), `ALL_TRUE`_vtestop_)]] +[visit_exp `VCONST`_instr{vectype#162}(`V128`_vectype, c_1)] +[visit_exp vectype#162] +[visit_id vectype#162] +[visit_exp (`V128`_vectype, c_1)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c_1] +[visit_id c_1] +[visit_exp `VTESTOP`_instr{shape#693}(`%X%`_shape{lanetype#7525, dim#7525, i#45296}((Jnn : Jnn <: lanetype), `%`_dim{i#45303}(M)), `ALL_TRUE`_vtestop_)] +[visit_exp shape#693] +[visit_id shape#693] +[visit_exp (`%X%`_shape{lanetype#7525, dim#7525, i#45296}((Jnn : Jnn <: lanetype), `%`_dim{i#45303}(M)), `ALL_TRUE`_vtestop_)] +[visit_exp `%X%`_shape{lanetype#7525, dim#7525, i#45296}((Jnn : Jnn <: lanetype), `%`_dim{i#45303}(M))] +[visit_exp lanetype#7525] +[visit_id lanetype#7525] +[visit_exp dim#7525] +[visit_id dim#7525] +[visit_exp i#45296] +[visit_id i#45296] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#45303}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] +[visit_exp `%`_dim{i#45303}(M)] +[visit_exp i#45303] +[visit_id i#45303] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp `ALL_TRUE`_vtestop_] +[visit_exp ()] +[visit_exp [`CONST`_instr{numtype#609}(`I32`_numtype, c)]] +[visit_exp `CONST`_instr{numtype#609}(`I32`_numtype, c)] +[visit_exp numtype#609] +[visit_id numtype#609] +[visit_exp (`I32`_numtype, c)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp c] +[visit_id c] +[visit_exp (i*{i <- `i*`} = $lanes_(`%X%`_shape{lanetype#7537, dim#7537, i#45322}((Jnn : Jnn <: lanetype), `%`_dim{i#45329}(M)), c_1))] +[visit_exp i*{i <- `i*`}] +[scope_enter i] +[visit_exp i] +[visit_id i] not free +[visit_id i] not free +[scope_exit i] +[visit_exp `i*`] +[visit_id i*] no dims +[visit_id i*] +[visit_exp $lanes_(`%X%`_shape{lanetype#7537, dim#7537, i#45322}((Jnn : Jnn <: lanetype), `%`_dim{i#45329}(M)), c_1)] +[visit_exp `%X%`_shape{lanetype#7537, dim#7537, i#45322}((Jnn : Jnn <: lanetype), `%`_dim{i#45329}(M))] +[visit_exp lanetype#7537] +[visit_id lanetype#7537] +[visit_exp dim#7537] +[visit_id dim#7537] +[visit_exp i#45322] +[visit_id i#45322] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#45329}(M))] +[visit_exp (Jnn : Jnn <: lanetype)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp `%`_dim{i#45329}(M)] +[visit_exp i#45329] +[visit_id i#45329] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp c_1] +[visit_id c_1] not free +[visit_exp (c!`%`_num_{i#45438}.0 = $prod($inez_($jsizenn(Jnn), i)!`%`_u32{i#45428}.0*{i <- `i*`, i#45428 <- `i#45428*`}))] +[visit_exp c!`%`_num_{i#45438}.0] +[visit_exp c!`%`_num_{i#45438}] +[visit_exp c] +[visit_id c] not free +[visit_exp i#45438] +[visit_id i#45438] +[visit_exp $prod($inez_($jsizenn(Jnn), i)!`%`_u32{i#45428}.0*{i <- `i*`, i#45428 <- `i#45428*`})] +[visit_exp $inez_($jsizenn(Jnn), i)!`%`_u32{i#45428}.0*{i <- `i*`, i#45428 <- `i#45428*`}] +[scope_enter i] +[scope_enter i#45428] +[visit_exp $inez_($jsizenn(Jnn), i)!`%`_u32{i#45428}.0] +[visit_exp $inez_($jsizenn(Jnn), i)!`%`_u32{i#45428}] +[visit_exp $inez_($jsizenn(Jnn), i)] +[visit_exp $jsizenn(Jnn)] +[visit_exp Jnn] +[visit_id Jnn] not free +[visit_exp i] +[visit_id i] not free +[visit_exp i#45428] +[visit_id i#45428] not free +[visit_id i] not free +[visit_id i#45428] not free +[scope_exit i#45428] +[scope_exit i] +[visit_exp `i*`] +[visit_id i*] not free +[visit_id i*] no dims +[visit_exp `i#45428*`] +[visit_id i#45428*] no dims +[visit_id i#45428*] +[check_dims] c c_1 c_2 sh shape#695 vectype#164 vectype#166 vectype#168 vrelop +[visit_exp [`VCONST`_instr{vectype#164}(`V128`_vectype, c_1) `VCONST`_instr{vectype#166}(`V128`_vectype, c_2) `VRELOP`_instr{shape#695}(sh, vrelop)]] +[visit_exp `VCONST`_instr{vectype#164}(`V128`_vectype, c_1)] +[visit_exp vectype#164] +[visit_id vectype#164] +[visit_exp (`V128`_vectype, c_1)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c_1] +[visit_id c_1] +[visit_exp `VCONST`_instr{vectype#166}(`V128`_vectype, c_2)] +[visit_exp vectype#166] +[visit_id vectype#166] +[visit_exp (`V128`_vectype, c_2)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c_2] +[visit_id c_2] +[visit_exp `VRELOP`_instr{shape#695}(sh, vrelop)] +[visit_exp shape#695] +[visit_id shape#695] +[visit_exp (sh, vrelop)] +[visit_exp sh] +[visit_id sh] +[visit_exp vrelop] +[visit_id vrelop] +[visit_exp [`VCONST`_instr{vectype#168}(`V128`_vectype, c)]] +[visit_exp `VCONST`_instr{vectype#168}(`V128`_vectype, c)] +[visit_exp vectype#168] +[visit_id vectype#168] +[visit_exp (`V128`_vectype, c)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c] +[visit_id c] +[visit_exp (c = $vrelop_(sh, vrelop, c_1, c_2))] +[visit_exp c] +[visit_id c] not free +[visit_exp $vrelop_(sh, vrelop, c_1, c_2)] +[visit_exp sh] +[visit_id sh] not free +[visit_exp vrelop] +[visit_id vrelop] not free +[visit_exp c_1] +[visit_id c_1] not free +[visit_exp c_2] +[visit_id c_2] not free +[check_dims] c c_1 i ishape#9 numtype#611 sh vectype#170 vectype#172 vshiftop +[visit_exp [`VCONST`_instr{vectype#170}(`V128`_vectype, c_1) `CONST`_instr{numtype#611}(`I32`_numtype, i) `VSHIFTOP`_instr{ishape#9}(sh, vshiftop)]] +[visit_exp `VCONST`_instr{vectype#170}(`V128`_vectype, c_1)] +[visit_exp vectype#170] +[visit_id vectype#170] +[visit_exp (`V128`_vectype, c_1)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c_1] +[visit_id c_1] +[visit_exp `CONST`_instr{numtype#611}(`I32`_numtype, i)] +[visit_exp numtype#611] +[visit_id numtype#611] +[visit_exp (`I32`_numtype, i)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp i] +[visit_id i] +[visit_exp `VSHIFTOP`_instr{ishape#9}(sh, vshiftop)] +[visit_exp ishape#9] +[visit_id ishape#9] +[visit_exp (sh, vshiftop)] +[visit_exp sh] +[visit_id sh] +[visit_exp vshiftop] +[visit_id vshiftop] +[visit_exp [`VCONST`_instr{vectype#172}(`V128`_vectype, c)]] +[visit_exp `VCONST`_instr{vectype#172}(`V128`_vectype, c)] +[visit_exp vectype#172] +[visit_id vectype#172] +[visit_exp (`V128`_vectype, c)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c] +[visit_id c] +[visit_exp (c = $vshiftop_(sh, vshiftop, c_1, i))] +[visit_exp c] +[visit_id c] not free +[visit_exp $vshiftop_(sh, vshiftop, c_1, i)] +[visit_exp sh] +[visit_id sh] not free +[visit_exp vshiftop] +[visit_id vshiftop] not free +[visit_exp c_1] +[visit_id c_1] not free +[visit_exp i] +[visit_id i] not free +[check_dims] c c_1 ishape#11 numtype#613 sh vectype#174 +[visit_exp [`VCONST`_instr{vectype#174}(`V128`_vectype, c_1) `VBITMASK`_instr{ishape#11}(sh)]] +[visit_exp `VCONST`_instr{vectype#174}(`V128`_vectype, c_1)] +[visit_exp vectype#174] +[visit_id vectype#174] +[visit_exp (`V128`_vectype, c_1)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c_1] +[visit_id c_1] +[visit_exp `VBITMASK`_instr{ishape#11}(sh)] +[visit_exp ishape#11] +[visit_id ishape#11] +[visit_exp (sh)] +[visit_exp sh] +[visit_id sh] +[visit_exp [`CONST`_instr{numtype#613}(`I32`_numtype, c)]] +[visit_exp `CONST`_instr{numtype#613}(`I32`_numtype, c)] +[visit_exp numtype#613] +[visit_id numtype#613] +[visit_exp (`I32`_numtype, c)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp c] +[visit_id c] +[visit_exp (c = $vbitmaskop_(sh, c_1))] +[visit_exp c] +[visit_id c] not free +[visit_exp $vbitmaskop_(sh, c_1)] +[visit_exp sh] +[visit_id sh] not free +[visit_exp c_1] +[visit_id c_1] not free +[check_dims] bshape#9 c c_1 c_2 sh swizzlop vectype#176 vectype#178 vectype#180 +[visit_exp [`VCONST`_instr{vectype#176}(`V128`_vectype, c_1) `VCONST`_instr{vectype#178}(`V128`_vectype, c_2) `VSWIZZLOP`_instr{bshape#9}(sh, swizzlop)]] +[visit_exp `VCONST`_instr{vectype#176}(`V128`_vectype, c_1)] +[visit_exp vectype#176] +[visit_id vectype#176] +[visit_exp (`V128`_vectype, c_1)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c_1] +[visit_id c_1] +[visit_exp `VCONST`_instr{vectype#178}(`V128`_vectype, c_2)] +[visit_exp vectype#178] +[visit_id vectype#178] +[visit_exp (`V128`_vectype, c_2)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c_2] +[visit_id c_2] +[visit_exp `VSWIZZLOP`_instr{bshape#9}(sh, swizzlop)] +[visit_exp bshape#9] +[visit_id bshape#9] +[visit_exp (sh, swizzlop)] +[visit_exp sh] +[visit_id sh] +[visit_exp swizzlop] +[visit_id swizzlop] +[visit_exp [`VCONST`_instr{vectype#180}(`V128`_vectype, c)]] +[visit_exp `VCONST`_instr{vectype#180}(`V128`_vectype, c)] +[visit_exp vectype#180] +[visit_id vectype#180] +[visit_exp (`V128`_vectype, c)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c] +[visit_id c] +[visit_exp (c = $vswizzlop_(sh, swizzlop, c_1, c_2))] +[visit_exp c] +[visit_id c] not free +[visit_exp $vswizzlop_(sh, swizzlop, c_1, c_2)] +[visit_exp sh] +[visit_id sh] not free +[visit_exp swizzlop] +[visit_id swizzlop] not free +[visit_exp c_1] +[visit_id c_1] not free +[visit_exp c_2] +[visit_id c_2] not free +[check_dims] bshape#11 c c_1 c_2 i i#45740 laneidx*#5 sh shape#733 vectype#182 vectype#184 vectype#186 +[visit_exp [`VCONST`_instr{vectype#182}(`V128`_vectype, c_1) `VCONST`_instr{vectype#184}(`V128`_vectype, c_2) `VSHUFFLE`_instr{bshape#11, `laneidx*#5`, i#45740, shape#733}(sh, i*{i <- `i*`})]] +[visit_exp `VCONST`_instr{vectype#182}(`V128`_vectype, c_1)] +[visit_exp vectype#182] +[visit_id vectype#182] +[visit_exp (`V128`_vectype, c_1)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c_1] +[visit_id c_1] +[visit_exp `VCONST`_instr{vectype#184}(`V128`_vectype, c_2)] +[visit_exp vectype#184] +[visit_id vectype#184] +[visit_exp (`V128`_vectype, c_2)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c_2] +[visit_id c_2] +[visit_exp `VSHUFFLE`_instr{bshape#11, `laneidx*#5`, i#45740, shape#733}(sh, i*{i <- `i*`})] +[visit_exp bshape#11] +[visit_id bshape#11] +[visit_exp `laneidx*#5`] +[visit_id laneidx*#5] +[visit_exp i#45740] +[visit_id i#45740] +[visit_exp shape#733] +[visit_id shape#733] +[visit_exp (sh, i*{i <- `i*`})] +[visit_exp sh] +[visit_id sh] +[visit_exp i*{i <- `i*`}] +[scope_enter i] +[visit_exp i] +[visit_id i] not free +[visit_id i] not free +[scope_exit i] +[visit_exp `i*`] +[visit_id i*] no dims +[visit_id i*] +[visit_exp [`VCONST`_instr{vectype#186}(`V128`_vectype, c)]] +[visit_exp `VCONST`_instr{vectype#186}(`V128`_vectype, c)] +[visit_exp vectype#186] +[visit_id vectype#186] +[visit_exp (`V128`_vectype, c)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c] +[visit_id c] +[visit_exp (c = $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2))] +[visit_exp c] +[visit_id c] not free +[visit_exp $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)] +[visit_exp sh] +[visit_id sh] not free +[visit_exp i*{i <- `i*`}] +[scope_enter i] +[visit_exp i] +[visit_id i] not free +[visit_id i] not free +[scope_exit i] +[visit_exp `i*`] +[visit_id i*] not free +[visit_id i*] no dims +[visit_exp c_1] +[visit_id c_1] not free +[visit_exp c_2] +[visit_id c_2] not free +[check_dims] Lnn M c c_1 dim#7575 dim#7587 i#45836 i#45843 i#45862 i#45869 lanetype#7575 lanetype#7587 numtype#615 shape#746 vectype#188 +[visit_exp [`CONST`_instr{numtype#615}($lunpack(Lnn), c_1) `VSPLAT`_instr{shape#746}(`%X%`_shape{lanetype#7575, dim#7575, i#45836}(Lnn, `%`_dim{i#45843}(M)))]] +[visit_exp `CONST`_instr{numtype#615}($lunpack(Lnn), c_1)] +[visit_exp numtype#615] +[visit_id numtype#615] +[visit_exp ($lunpack(Lnn), c_1)] +[visit_exp $lunpack(Lnn)] +[visit_exp Lnn] +[visit_id Lnn] +[visit_exp c_1] +[visit_id c_1] +[visit_exp `VSPLAT`_instr{shape#746}(`%X%`_shape{lanetype#7575, dim#7575, i#45836}(Lnn, `%`_dim{i#45843}(M)))] +[visit_exp shape#746] +[visit_id shape#746] +[visit_exp (`%X%`_shape{lanetype#7575, dim#7575, i#45836}(Lnn, `%`_dim{i#45843}(M)))] +[visit_exp `%X%`_shape{lanetype#7575, dim#7575, i#45836}(Lnn, `%`_dim{i#45843}(M))] +[visit_exp lanetype#7575] +[visit_id lanetype#7575] +[visit_exp dim#7575] +[visit_id dim#7575] +[visit_exp i#45836] +[visit_id i#45836] +[visit_exp (Lnn, `%`_dim{i#45843}(M))] +[visit_exp Lnn] +[visit_id Lnn] not free +[visit_exp `%`_dim{i#45843}(M)] +[visit_exp i#45843] +[visit_id i#45843] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp [`VCONST`_instr{vectype#188}(`V128`_vectype, c)]] +[visit_exp `VCONST`_instr{vectype#188}(`V128`_vectype, c)] +[visit_exp vectype#188] +[visit_id vectype#188] +[visit_exp (`V128`_vectype, c)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c] +[visit_id c] +[visit_exp (c = $inv_lanes_(`%X%`_shape{lanetype#7587, dim#7587, i#45862}(Lnn, `%`_dim{i#45869}(M)), $lpacknum_(Lnn, c_1)^M{}))] +[visit_exp c] +[visit_id c] not free +[visit_exp $inv_lanes_(`%X%`_shape{lanetype#7587, dim#7587, i#45862}(Lnn, `%`_dim{i#45869}(M)), $lpacknum_(Lnn, c_1)^M{})] +[visit_exp `%X%`_shape{lanetype#7587, dim#7587, i#45862}(Lnn, `%`_dim{i#45869}(M))] +[visit_exp lanetype#7587] +[visit_id lanetype#7587] +[visit_exp dim#7587] +[visit_id dim#7587] +[visit_exp i#45862] +[visit_id i#45862] +[visit_exp (Lnn, `%`_dim{i#45869}(M))] +[visit_exp Lnn] +[visit_id Lnn] not free +[visit_exp `%`_dim{i#45869}(M)] +[visit_exp i#45869] +[visit_id i#45869] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp $lpacknum_(Lnn, c_1)^M{}] +[visit_exp $lpacknum_(Lnn, c_1)] +[visit_exp Lnn] +[visit_id Lnn] not free +[visit_exp c_1] +[visit_id c_1] not free +[visit_exp M] +[visit_id M] not free +[check_dims] M c_1 c_2 dim#7610 dim#7622 i i#45931 i#45938 i#45957 i#45964 i#45984 laneidx#25 lanetype#7610 lanetype#7622 nt numtype#617 shape#748 sx?#27 vectype#190 +[visit_exp [`VCONST`_instr{vectype#190}(`V128`_vectype, c_1) `VEXTRACT_LANE`_instr{shape#748, `sx?#27`, laneidx#25}(`%X%`_shape{lanetype#7610, dim#7610, i#45931}((nt : numtype <: lanetype), `%`_dim{i#45938}(M)), ?(), i)]] +[visit_exp `VCONST`_instr{vectype#190}(`V128`_vectype, c_1)] +[visit_exp vectype#190] +[visit_id vectype#190] +[visit_exp (`V128`_vectype, c_1)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c_1] +[visit_id c_1] +[visit_exp `VEXTRACT_LANE`_instr{shape#748, `sx?#27`, laneidx#25}(`%X%`_shape{lanetype#7610, dim#7610, i#45931}((nt : numtype <: lanetype), `%`_dim{i#45938}(M)), ?(), i)] +[visit_exp shape#748] +[visit_id shape#748] +[visit_exp `sx?#27`] +[visit_id sx?#27] +[visit_exp laneidx#25] +[visit_id laneidx#25] +[visit_exp (`%X%`_shape{lanetype#7610, dim#7610, i#45931}((nt : numtype <: lanetype), `%`_dim{i#45938}(M)), ?(), i)] +[visit_exp `%X%`_shape{lanetype#7610, dim#7610, i#45931}((nt : numtype <: lanetype), `%`_dim{i#45938}(M))] +[visit_exp lanetype#7610] +[visit_id lanetype#7610] +[visit_exp dim#7610] +[visit_id dim#7610] +[visit_exp i#45931] +[visit_id i#45931] +[visit_exp ((nt : numtype <: lanetype), `%`_dim{i#45938}(M))] +[visit_exp (nt : numtype <: lanetype)] +[visit_exp nt] +[visit_id nt] +[visit_exp `%`_dim{i#45938}(M)] +[visit_exp i#45938] +[visit_id i#45938] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp ?()] +[visit_exp i] +[visit_id i] +[visit_exp [`CONST`_instr{numtype#617}(nt, c_2)]] +[visit_exp `CONST`_instr{numtype#617}(nt, c_2)] +[visit_exp numtype#617] +[visit_id numtype#617] +[visit_exp (nt, c_2)] +[visit_exp nt] +[visit_id nt] not free +[visit_exp c_2] +[visit_id c_2] +[visit_exp (c_2 = $lanes_(`%X%`_shape{lanetype#7622, dim#7622, i#45957}((nt : numtype <: lanetype), `%`_dim{i#45964}(M)), c_1)[i!`%`_laneidx{i#45984}.0])] +[visit_exp c_2] +[visit_id c_2] not free +[visit_exp $lanes_(`%X%`_shape{lanetype#7622, dim#7622, i#45957}((nt : numtype <: lanetype), `%`_dim{i#45964}(M)), c_1)[i!`%`_laneidx{i#45984}.0]] +[visit_exp $lanes_(`%X%`_shape{lanetype#7622, dim#7622, i#45957}((nt : numtype <: lanetype), `%`_dim{i#45964}(M)), c_1)] +[visit_exp `%X%`_shape{lanetype#7622, dim#7622, i#45957}((nt : numtype <: lanetype), `%`_dim{i#45964}(M))] +[visit_exp lanetype#7622] +[visit_id lanetype#7622] +[visit_exp dim#7622] +[visit_id dim#7622] +[visit_exp i#45957] +[visit_id i#45957] +[visit_exp ((nt : numtype <: lanetype), `%`_dim{i#45964}(M))] +[visit_exp (nt : numtype <: lanetype)] +[visit_exp nt] +[visit_id nt] not free +[visit_exp `%`_dim{i#45964}(M)] +[visit_exp i#45964] +[visit_id i#45964] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp c_1] +[visit_id c_1] not free +[visit_exp i!`%`_laneidx{i#45984}.0] +[visit_exp i!`%`_laneidx{i#45984}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#45984] +[visit_id i#45984] +[check_dims] M c_1 c_2 dim#7639 dim#7651 i i#46018 i#46025 i#46122 i#46129 i#46149 laneidx#27 lanetype#7639 lanetype#7651 numtype#619 pt shape#750 sx sx?#29 vectype#192 +[visit_exp [`VCONST`_instr{vectype#192}(`V128`_vectype, c_1) `VEXTRACT_LANE`_instr{shape#750, `sx?#29`, laneidx#27}(`%X%`_shape{lanetype#7639, dim#7639, i#46018}((pt : packtype <: lanetype), `%`_dim{i#46025}(M)), ?(sx), i)]] +[visit_exp `VCONST`_instr{vectype#192}(`V128`_vectype, c_1)] +[visit_exp vectype#192] +[visit_id vectype#192] +[visit_exp (`V128`_vectype, c_1)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c_1] +[visit_id c_1] +[visit_exp `VEXTRACT_LANE`_instr{shape#750, `sx?#29`, laneidx#27}(`%X%`_shape{lanetype#7639, dim#7639, i#46018}((pt : packtype <: lanetype), `%`_dim{i#46025}(M)), ?(sx), i)] +[visit_exp shape#750] +[visit_id shape#750] +[visit_exp `sx?#29`] +[visit_id sx?#29] +[visit_exp laneidx#27] +[visit_id laneidx#27] +[visit_exp (`%X%`_shape{lanetype#7639, dim#7639, i#46018}((pt : packtype <: lanetype), `%`_dim{i#46025}(M)), ?(sx), i)] +[visit_exp `%X%`_shape{lanetype#7639, dim#7639, i#46018}((pt : packtype <: lanetype), `%`_dim{i#46025}(M))] +[visit_exp lanetype#7639] +[visit_id lanetype#7639] +[visit_exp dim#7639] +[visit_id dim#7639] +[visit_exp i#46018] +[visit_id i#46018] +[visit_exp ((pt : packtype <: lanetype), `%`_dim{i#46025}(M))] +[visit_exp (pt : packtype <: lanetype)] +[visit_exp pt] +[visit_id pt] +[visit_exp `%`_dim{i#46025}(M)] +[visit_exp i#46025] +[visit_id i#46025] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp ?(sx)] +[visit_exp sx] +[visit_id sx] +[visit_exp i] +[visit_id i] +[visit_exp [`CONST`_instr{numtype#619}(`I32`_numtype, c_2)]] +[visit_exp `CONST`_instr{numtype#619}(`I32`_numtype, c_2)] +[visit_exp numtype#619] +[visit_id numtype#619] +[visit_exp (`I32`_numtype, c_2)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp c_2] +[visit_id c_2] +[visit_exp (c_2 = $extend__($psize(pt), 32, sx, $lanes_(`%X%`_shape{lanetype#7651, dim#7651, i#46122}((pt : packtype <: lanetype), `%`_dim{i#46129}(M)), c_1)[i!`%`_laneidx{i#46149}.0]))] +[visit_exp c_2] +[visit_id c_2] not free +[visit_exp $extend__($psize(pt), 32, sx, $lanes_(`%X%`_shape{lanetype#7651, dim#7651, i#46122}((pt : packtype <: lanetype), `%`_dim{i#46129}(M)), c_1)[i!`%`_laneidx{i#46149}.0])] +[visit_exp $psize(pt)] +[visit_exp pt] +[visit_id pt] not free +[visit_exp 32] +[visit_exp sx] +[visit_id sx] not free +[visit_exp $lanes_(`%X%`_shape{lanetype#7651, dim#7651, i#46122}((pt : packtype <: lanetype), `%`_dim{i#46129}(M)), c_1)[i!`%`_laneidx{i#46149}.0]] +[visit_exp $lanes_(`%X%`_shape{lanetype#7651, dim#7651, i#46122}((pt : packtype <: lanetype), `%`_dim{i#46129}(M)), c_1)] +[visit_exp `%X%`_shape{lanetype#7651, dim#7651, i#46122}((pt : packtype <: lanetype), `%`_dim{i#46129}(M))] +[visit_exp lanetype#7651] +[visit_id lanetype#7651] +[visit_exp dim#7651] +[visit_id dim#7651] +[visit_exp i#46122] +[visit_id i#46122] +[visit_exp ((pt : packtype <: lanetype), `%`_dim{i#46129}(M))] +[visit_exp (pt : packtype <: lanetype)] +[visit_exp pt] +[visit_id pt] not free +[visit_exp `%`_dim{i#46129}(M)] +[visit_exp i#46129] +[visit_id i#46129] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp c_1] +[visit_id c_1] not free +[visit_exp i!`%`_laneidx{i#46149}.0] +[visit_exp i!`%`_laneidx{i#46149}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#46149] +[visit_id i#46149] +[check_dims] Lnn M c c_1 c_2 dim#7664 dim#7676 dim#7730 i i#46185 i#46192 i#46225 i#46232 i#46335 i#46342 i#46368 laneidx#29 lanetype#7664 lanetype#7676 lanetype#7730 numtype#621 shape#752 vectype#194 vectype#196 +[visit_exp [`VCONST`_instr{vectype#194}(`V128`_vectype, c_1) `CONST`_instr{numtype#621}($lunpack(Lnn), c_2) `VREPLACE_LANE`_instr{shape#752, laneidx#29}(`%X%`_shape{lanetype#7664, dim#7664, i#46185}(Lnn, `%`_dim{i#46192}(M)), i)]] +[visit_exp `VCONST`_instr{vectype#194}(`V128`_vectype, c_1)] +[visit_exp vectype#194] +[visit_id vectype#194] +[visit_exp (`V128`_vectype, c_1)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c_1] +[visit_id c_1] +[visit_exp `CONST`_instr{numtype#621}($lunpack(Lnn), c_2)] +[visit_exp numtype#621] +[visit_id numtype#621] +[visit_exp ($lunpack(Lnn), c_2)] +[visit_exp $lunpack(Lnn)] +[visit_exp Lnn] +[visit_id Lnn] +[visit_exp c_2] +[visit_id c_2] +[visit_exp `VREPLACE_LANE`_instr{shape#752, laneidx#29}(`%X%`_shape{lanetype#7664, dim#7664, i#46185}(Lnn, `%`_dim{i#46192}(M)), i)] +[visit_exp shape#752] +[visit_id shape#752] +[visit_exp laneidx#29] +[visit_id laneidx#29] +[visit_exp (`%X%`_shape{lanetype#7664, dim#7664, i#46185}(Lnn, `%`_dim{i#46192}(M)), i)] +[visit_exp `%X%`_shape{lanetype#7664, dim#7664, i#46185}(Lnn, `%`_dim{i#46192}(M))] +[visit_exp lanetype#7664] +[visit_id lanetype#7664] +[visit_exp dim#7664] +[visit_id dim#7664] +[visit_exp i#46185] +[visit_id i#46185] +[visit_exp (Lnn, `%`_dim{i#46192}(M))] +[visit_exp Lnn] +[visit_id Lnn] not free +[visit_exp `%`_dim{i#46192}(M)] +[visit_exp i#46192] +[visit_id i#46192] +[visit_exp (M)] +[visit_exp M] +[visit_id M] +[visit_exp i] +[visit_id i] +[visit_exp [`VCONST`_instr{vectype#196}(`V128`_vectype, c)]] +[visit_exp `VCONST`_instr{vectype#196}(`V128`_vectype, c)] +[visit_exp vectype#196] +[visit_id vectype#196] +[visit_exp (`V128`_vectype, c)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c] +[visit_id c] +[visit_exp (c = $inv_lanes_(`%X%`_shape{lanetype#7676, dim#7676, i#46225}(Lnn, `%`_dim{i#46232}(M)), $lanes_(`%X%`_shape{lanetype#7730, dim#7730, i#46335}(Lnn, `%`_dim{i#46342}(M)), c_1)[[i!`%`_laneidx{i#46368}.0] = $lpacknum_(Lnn, c_2)]))] +[visit_exp c] +[visit_id c] not free +[visit_exp $inv_lanes_(`%X%`_shape{lanetype#7676, dim#7676, i#46225}(Lnn, `%`_dim{i#46232}(M)), $lanes_(`%X%`_shape{lanetype#7730, dim#7730, i#46335}(Lnn, `%`_dim{i#46342}(M)), c_1)[[i!`%`_laneidx{i#46368}.0] = $lpacknum_(Lnn, c_2)])] +[visit_exp `%X%`_shape{lanetype#7676, dim#7676, i#46225}(Lnn, `%`_dim{i#46232}(M))] +[visit_exp lanetype#7676] +[visit_id lanetype#7676] +[visit_exp dim#7676] +[visit_id dim#7676] +[visit_exp i#46225] +[visit_id i#46225] +[visit_exp (Lnn, `%`_dim{i#46232}(M))] +[visit_exp Lnn] +[visit_id Lnn] not free +[visit_exp `%`_dim{i#46232}(M)] +[visit_exp i#46232] +[visit_id i#46232] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp $lanes_(`%X%`_shape{lanetype#7730, dim#7730, i#46335}(Lnn, `%`_dim{i#46342}(M)), c_1)[[i!`%`_laneidx{i#46368}.0] = $lpacknum_(Lnn, c_2)]] +[visit_exp $lanes_(`%X%`_shape{lanetype#7730, dim#7730, i#46335}(Lnn, `%`_dim{i#46342}(M)), c_1)] +[visit_exp `%X%`_shape{lanetype#7730, dim#7730, i#46335}(Lnn, `%`_dim{i#46342}(M))] +[visit_exp lanetype#7730] +[visit_id lanetype#7730] +[visit_exp dim#7730] +[visit_id dim#7730] +[visit_exp i#46335] +[visit_id i#46335] +[visit_exp (Lnn, `%`_dim{i#46342}(M))] +[visit_exp Lnn] +[visit_id Lnn] not free +[visit_exp `%`_dim{i#46342}(M)] +[visit_exp i#46342] +[visit_id i#46342] +[visit_exp (M)] +[visit_exp M] +[visit_id M] not free +[visit_exp c_1] +[visit_id c_1] not free +[visit_exp i!`%`_laneidx{i#46368}.0] +[visit_exp i!`%`_laneidx{i#46368}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#46368] +[visit_id i#46368] +[visit_exp $lpacknum_(Lnn, c_2)] +[visit_exp Lnn] +[visit_id Lnn] not free +[visit_exp c_2] +[visit_id c_2] not free +[check_dims] c c_1 ishape_1#17 ishape_2#17 sh_1 sh_2 vectype#198 vectype#200 vextunop +[visit_exp [`VCONST`_instr{vectype#198}(`V128`_vectype, c_1) `VEXTUNOP`_instr{ishape_1#17, ishape_2#17}(sh_2, sh_1, vextunop)]] +[visit_exp `VCONST`_instr{vectype#198}(`V128`_vectype, c_1)] +[visit_exp vectype#198] +[visit_id vectype#198] +[visit_exp (`V128`_vectype, c_1)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c_1] +[visit_id c_1] +[visit_exp `VEXTUNOP`_instr{ishape_1#17, ishape_2#17}(sh_2, sh_1, vextunop)] +[visit_exp ishape_1#17] +[visit_id ishape_1#17] +[visit_exp ishape_2#17] +[visit_id ishape_2#17] +[visit_exp (sh_2, sh_1, vextunop)] +[visit_exp sh_2] +[visit_id sh_2] +[visit_exp sh_1] +[visit_id sh_1] +[visit_exp vextunop] +[visit_id vextunop] +[visit_exp [`VCONST`_instr{vectype#200}(`V128`_vectype, c)]] +[visit_exp `VCONST`_instr{vectype#200}(`V128`_vectype, c)] +[visit_exp vectype#200] +[visit_id vectype#200] +[visit_exp (`V128`_vectype, c)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c] +[visit_id c] +[visit_exp ($vextunop__(sh_1, sh_2, vextunop, c_1) = c)] +[visit_exp $vextunop__(sh_1, sh_2, vextunop, c_1)] +[visit_exp sh_1] +[visit_id sh_1] not free +[visit_exp sh_2] +[visit_id sh_2] not free +[visit_exp vextunop] +[visit_id vextunop] not free +[visit_exp c_1] +[visit_id c_1] not free +[visit_exp c] +[visit_id c] not free +[check_dims] c c_1 c_2 ishape_1#19 ishape_2#19 sh_1 sh_2 vectype#202 vectype#204 vectype#206 vextbinop +[visit_exp [`VCONST`_instr{vectype#202}(`V128`_vectype, c_1) `VCONST`_instr{vectype#204}(`V128`_vectype, c_2) `VEXTBINOP`_instr{ishape_1#19, ishape_2#19}(sh_2, sh_1, vextbinop)]] +[visit_exp `VCONST`_instr{vectype#202}(`V128`_vectype, c_1)] +[visit_exp vectype#202] +[visit_id vectype#202] +[visit_exp (`V128`_vectype, c_1)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c_1] +[visit_id c_1] +[visit_exp `VCONST`_instr{vectype#204}(`V128`_vectype, c_2)] +[visit_exp vectype#204] +[visit_id vectype#204] +[visit_exp (`V128`_vectype, c_2)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c_2] +[visit_id c_2] +[visit_exp `VEXTBINOP`_instr{ishape_1#19, ishape_2#19}(sh_2, sh_1, vextbinop)] +[visit_exp ishape_1#19] +[visit_id ishape_1#19] +[visit_exp ishape_2#19] +[visit_id ishape_2#19] +[visit_exp (sh_2, sh_1, vextbinop)] +[visit_exp sh_2] +[visit_id sh_2] +[visit_exp sh_1] +[visit_id sh_1] +[visit_exp vextbinop] +[visit_id vextbinop] +[visit_exp [`VCONST`_instr{vectype#206}(`V128`_vectype, c)]] +[visit_exp `VCONST`_instr{vectype#206}(`V128`_vectype, c)] +[visit_exp vectype#206] +[visit_id vectype#206] +[visit_exp (`V128`_vectype, c)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c] +[visit_id c] +[visit_exp ($vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c)] +[visit_exp $vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2)] +[visit_exp sh_1] +[visit_id sh_1] not free +[visit_exp sh_2] +[visit_id sh_2] not free +[visit_exp vextbinop] +[visit_id vextbinop] not free +[visit_exp c_1] +[visit_id c_1] not free +[visit_exp c_2] +[visit_id c_2] not free +[visit_exp c] +[visit_id c] not free +[check_dims] c c_1 c_2 c_3 ishape_1#21 ishape_2#21 sh_1 sh_2 vectype#208 vectype#210 vectype#212 vectype#214 vextternop +[visit_exp [`VCONST`_instr{vectype#208}(`V128`_vectype, c_1) `VCONST`_instr{vectype#210}(`V128`_vectype, c_2) `VCONST`_instr{vectype#212}(`V128`_vectype, c_3) `VEXTTERNOP`_instr{ishape_1#21, ishape_2#21}(sh_2, sh_1, vextternop)]] +[visit_exp `VCONST`_instr{vectype#208}(`V128`_vectype, c_1)] +[visit_exp vectype#208] +[visit_id vectype#208] +[visit_exp (`V128`_vectype, c_1)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c_1] +[visit_id c_1] +[visit_exp `VCONST`_instr{vectype#210}(`V128`_vectype, c_2)] +[visit_exp vectype#210] +[visit_id vectype#210] +[visit_exp (`V128`_vectype, c_2)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c_2] +[visit_id c_2] +[visit_exp `VCONST`_instr{vectype#212}(`V128`_vectype, c_3)] +[visit_exp vectype#212] +[visit_id vectype#212] +[visit_exp (`V128`_vectype, c_3)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c_3] +[visit_id c_3] +[visit_exp `VEXTTERNOP`_instr{ishape_1#21, ishape_2#21}(sh_2, sh_1, vextternop)] +[visit_exp ishape_1#21] +[visit_id ishape_1#21] +[visit_exp ishape_2#21] +[visit_id ishape_2#21] +[visit_exp (sh_2, sh_1, vextternop)] +[visit_exp sh_2] +[visit_id sh_2] +[visit_exp sh_1] +[visit_id sh_1] +[visit_exp vextternop] +[visit_id vextternop] +[visit_exp [`VCONST`_instr{vectype#214}(`V128`_vectype, c)]] +[visit_exp `VCONST`_instr{vectype#214}(`V128`_vectype, c)] +[visit_exp vectype#214] +[visit_id vectype#214] +[visit_exp (`V128`_vectype, c)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c] +[visit_id c] +[visit_exp ($vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c)] +[visit_exp $vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3)] +[visit_exp sh_1] +[visit_id sh_1] not free +[visit_exp sh_2] +[visit_id sh_2] not free +[visit_exp vextternop] +[visit_id vextternop] not free +[visit_exp c_1] +[visit_id c_1] not free +[visit_exp c_2] +[visit_id c_2] not free +[visit_exp c_3] +[visit_id c_3] not free +[visit_exp c] +[visit_id c] not free +[check_dims] Jnn#216 Jnn#217 Jnn#218 Jnn#223 Jnn#224 c c_1 c_2 ishape_1#23 ishape_2#23 sh_1 sh_2 shape#826 shape#827 shape#828 shape#841 shape#843 sx sx#408 vectype#216 vectype#218 vectype#220 +[visit_exp [`VCONST`_instr{vectype#216}(`V128`_vectype, c_1) `VCONST`_instr{vectype#218}(`V128`_vectype, c_2) `VNARROW`_instr{ishape_1#23, ishape_2#23, sx#408, shape#826, Jnn#216, shape#827, Jnn#217, shape#828, Jnn#218}(sh_2, sh_1, sx)]] +[visit_exp `VCONST`_instr{vectype#216}(`V128`_vectype, c_1)] +[visit_exp vectype#216] +[visit_id vectype#216] +[visit_exp (`V128`_vectype, c_1)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c_1] +[visit_id c_1] +[visit_exp `VCONST`_instr{vectype#218}(`V128`_vectype, c_2)] +[visit_exp vectype#218] +[visit_id vectype#218] +[visit_exp (`V128`_vectype, c_2)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c_2] +[visit_id c_2] +[visit_exp `VNARROW`_instr{ishape_1#23, ishape_2#23, sx#408, shape#826, Jnn#216, shape#827, Jnn#217, shape#828, Jnn#218}(sh_2, sh_1, sx)] +[visit_exp ishape_1#23] +[visit_id ishape_1#23] +[visit_exp ishape_2#23] +[visit_id ishape_2#23] +[visit_exp sx#408] +[visit_id sx#408] +[visit_exp shape#826] +[visit_id shape#826] +[visit_exp Jnn#216] +[visit_id Jnn#216] +[visit_exp shape#827] +[visit_id shape#827] +[visit_exp Jnn#217] +[visit_id Jnn#217] +[visit_exp shape#828] +[visit_id shape#828] +[visit_exp Jnn#218] +[visit_id Jnn#218] +[visit_exp (sh_2, sh_1, sx)] +[visit_exp sh_2] +[visit_id sh_2] +[visit_exp sh_1] +[visit_id sh_1] +[visit_exp sx] +[visit_id sx] +[visit_exp [`VCONST`_instr{vectype#220}(`V128`_vectype, c)]] +[visit_exp `VCONST`_instr{vectype#220}(`V128`_vectype, c)] +[visit_exp vectype#220] +[visit_id vectype#220] +[visit_exp (`V128`_vectype, c)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c] +[visit_id c] +[visit_exp (c = $vnarrowop__(sh_1!`%`_ishape{shape#841, Jnn#223}.0, sh_2!`%`_ishape{shape#843, Jnn#224}.0, sx, c_1, c_2))] +[visit_exp c] +[visit_id c] not free +[visit_exp $vnarrowop__(sh_1!`%`_ishape{shape#841, Jnn#223}.0, sh_2!`%`_ishape{shape#843, Jnn#224}.0, sx, c_1, c_2)] +[visit_exp sh_1!`%`_ishape{shape#841, Jnn#223}.0] +[visit_exp sh_1!`%`_ishape{shape#841, Jnn#223}] +[visit_exp sh_1] +[visit_id sh_1] not free +[visit_exp shape#841] +[visit_id shape#841] +[visit_exp Jnn#223] +[visit_id Jnn#223] +[visit_exp sh_2!`%`_ishape{shape#843, Jnn#224}.0] +[visit_exp sh_2!`%`_ishape{shape#843, Jnn#224}] +[visit_exp sh_2] +[visit_id sh_2] not free +[visit_exp shape#843] +[visit_id shape#843] +[visit_exp Jnn#224] +[visit_id Jnn#224] +[visit_exp sx] +[visit_id sx] not free +[visit_exp c_1] +[visit_id c_1] not free +[visit_exp c_2] +[visit_id c_2] not free +[check_dims] c c_1 sh_1 sh_2 shape_1#5 shape_2#5 vcvtop vectype#222 vectype#224 +[visit_exp [`VCONST`_instr{vectype#222}(`V128`_vectype, c_1) `VCVTOP`_instr{shape_1#5, shape_2#5}(sh_2, sh_1, vcvtop)]] +[visit_exp `VCONST`_instr{vectype#222}(`V128`_vectype, c_1)] +[visit_exp vectype#222] +[visit_id vectype#222] +[visit_exp (`V128`_vectype, c_1)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c_1] +[visit_id c_1] +[visit_exp `VCVTOP`_instr{shape_1#5, shape_2#5}(sh_2, sh_1, vcvtop)] +[visit_exp shape_1#5] +[visit_id shape_1#5] +[visit_exp shape_2#5] +[visit_id shape_2#5] +[visit_exp (sh_2, sh_1, vcvtop)] +[visit_exp sh_2] +[visit_id sh_2] +[visit_exp sh_1] +[visit_id sh_1] +[visit_exp vcvtop] +[visit_id vcvtop] +[visit_exp [`VCONST`_instr{vectype#224}(`V128`_vectype, c)]] +[visit_exp `VCONST`_instr{vectype#224}(`V128`_vectype, c)] +[visit_exp vectype#224] +[visit_id vectype#224] +[visit_exp (`V128`_vectype, c)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp c] +[visit_id c] +[visit_exp (c = $vcvtop__(sh_1, sh_2, vcvtop, c_1))] +[visit_exp c] +[visit_id c] not free +[visit_exp $vcvtop__(sh_1, sh_2, vcvtop, c_1)] +[visit_exp sh_1] +[visit_id sh_1] not free +[visit_exp sh_2] +[visit_id sh_2] not free +[visit_exp vcvtop] +[visit_id vcvtop] not free +[visit_exp c_1] +[visit_id c_1] not free +[check_dims] +[check_dims] instr instr*#2310 instr*#2322 state#2195 state#2207 val z z' +[visit_exp z] +[visit_id z] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] no dims +[visit_id instr*] +[visit_exp z'] +[visit_id z'] +[visit_exp val*{val <- `val*`}] +[scope_enter val] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp `val*`] +[visit_id val*] no dims +[visit_id val*] +[visit_exp (`%;%`_config{state#2195, `instr*#2310`}(z, instr*{instr <- `instr*`}), `%;%`_config{state#2207, `instr*#2322`}(z', (val : val <: instr)*{val <- `val*`}))] +[visit_exp `%;%`_config{state#2195, `instr*#2310`}(z, instr*{instr <- `instr*`})] +[visit_exp state#2195] +[visit_id state#2195] +[visit_exp `instr*#2310`] +[visit_id instr*#2310] +[visit_exp (z, instr*{instr <- `instr*`})] +[visit_exp z] +[visit_id z] not free +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] not free +[visit_id instr*] no dims +[visit_exp `%;%`_config{state#2207, `instr*#2322`}(z', (val : val <: instr)*{val <- `val*`})] +[visit_exp state#2207] +[visit_id state#2207] +[visit_exp `instr*#2322`] +[visit_id instr*#2322] +[visit_exp (z', (val : val <: instr)*{val <- `val*`})] +[visit_exp z'] +[visit_id z'] not free +[visit_exp (val : val <: instr)*{val <- `val*`}] +[scope_enter val] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp `val*`] +[visit_id val*] not free +[visit_id val*] no dims +[check_dims] _ +DecD alloctypes(type*) : deftype* +[visit_id _] not free +[check_dims] +[visit_exp []] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $alloctypes([]) = [] +[check_dims] deftype deftype' i#46777 rectype rectype#1449 type type' x +[visit_exp type'*{type' <- `type'*`} ++ [type]] +[visit_exp type'*{type' <- `type'*`}] +[scope_enter type'] +[visit_exp type'] +[visit_id type'] not free +[visit_id type'] not free +[scope_exit type'] +[visit_exp `type'*`] +[visit_id type'*] no dims +[visit_id type'*] +[visit_exp [type]] +[visit_exp type] +[visit_id type] +[visit_exp deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`}] +[visit_exp deftype'*{deftype' <- `deftype'*`}] +[scope_enter deftype'] +[visit_exp deftype'] +[visit_id deftype'] not free +[visit_id deftype'] not free +[scope_exit deftype'] +[visit_exp `deftype'*`] +[visit_id deftype'*] no dims +[visit_id deftype'*] +[visit_exp deftype*{deftype <- `deftype*`}] +[scope_enter deftype] +[visit_exp deftype] +[visit_id deftype] not free +[visit_id deftype] not free +[scope_exit deftype] +[visit_exp `deftype*`] +[visit_id deftype*] no dims +[visit_id deftype*] +[visit_exp (deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`}))] +[visit_exp deftype'*{deftype' <- `deftype'*`}] +[scope_enter deftype'] +[visit_exp deftype'] +[visit_id deftype'] not free +[visit_id deftype'] not free +[scope_exit deftype'] +[visit_exp `deftype'*`] +[visit_id deftype'*] not free +[visit_id deftype'*] no dims +[visit_exp $alloctypes(type'*{type' <- `type'*`})] +[visit_exp type'*{type' <- `type'*`}] +[scope_enter type'] +[visit_exp type'] +[visit_id type'] not free +[visit_id type'] not free +[scope_exit type'] +[visit_exp `type'*`] +[visit_id type'*] not free +[visit_id type'*] no dims +[visit_exp (type = `TYPE`_type{rectype#1449}(rectype))] +[visit_exp type] +[visit_id type] not free +[visit_exp `TYPE`_type{rectype#1449}(rectype)] +[visit_exp rectype#1449] +[visit_id rectype#1449] +[visit_exp (rectype)] +[visit_exp rectype] +[visit_id rectype] +[visit_exp (deftype*{deftype <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), (deftype' : deftype <: typeuse)*{deftype' <- `deftype'*`}))] +[visit_exp deftype*{deftype <- `deftype*`}] +[scope_enter deftype] +[visit_exp deftype] +[visit_id deftype] not free +[visit_id deftype] not free +[scope_exit deftype] +[visit_exp `deftype*`] +[visit_id deftype*] not free +[visit_id deftype*] no dims +[visit_exp $subst_all_deftypes($rolldt(x, rectype), (deftype' : deftype <: typeuse)*{deftype' <- `deftype'*`})] +[visit_exp $rolldt(x, rectype)] +[visit_exp x] +[visit_id x] +[visit_exp rectype] +[visit_id rectype] not free +[visit_exp (deftype' : deftype <: typeuse)*{deftype' <- `deftype'*`}] +[scope_enter deftype'] +[visit_exp (deftype' : deftype <: typeuse)] +[visit_exp deftype'] +[visit_id deftype'] not free +[visit_id deftype'] not free +[scope_exit deftype'] +[visit_exp `deftype'*`] +[visit_id deftype'*] not free +[visit_id deftype'*] no dims +[visit_exp (x!`%`_idx{i#46777}.0 = |deftype'*{deftype' <- `deftype'*`}|)] +[visit_exp x!`%`_idx{i#46777}.0] +[visit_exp x!`%`_idx{i#46777}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#46777] +[visit_id i#46777] +[visit_exp |deftype'*{deftype' <- `deftype'*`}|] +[visit_exp deftype'*{deftype' <- `deftype'*`}] +[scope_enter deftype'] +[visit_exp deftype'] +[visit_id deftype'] not free +[visit_id deftype'] not free +[scope_exit deftype'] +[visit_exp `deftype'*`] +[visit_id deftype'*] not free +[visit_id deftype'*] no dims +=> + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype#1449 : rectype, rectype : rectype, x : idx, i#46777 : nat}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} + -- if (deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`})) + -- if (type = `TYPE`_type{rectype#1449}(rectype)) + -- if (deftype*{deftype <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), (deftype' : deftype <: typeuse)*{deftype' <- `deftype'*`})) + -- if (x!`%`_idx{i#46777}.0 = |deftype'*{deftype' <- `deftype'*`}|) +[check_dims] _ store tagtype +DecD alloctag(store : store, tagtype : tagtype) : (store, tagaddr) +[visit_id store] not free +[visit_id tagtype] not free +[visit_id _] not free +[visit_id _] not free +[check_dims] arrayinst*#6 datainst*#5 eleminst*#5 exninst*#5 funcinst*#6 globalinst*#6 meminst*#7 s structinst*#6 tableinst*#7 taginst taginst*#5 taginst*#6 tagtype tagtype#181 +[visit_exp s] +[visit_id s] +[visit_exp tagtype] +[visit_id tagtype] +[visit_exp (s +++ {`TAGS`{`taginst*#5`} [taginst], `GLOBALS`{`globalinst*#6`} [], `MEMS`{`meminst*#7`} [], `TABLES`{`tableinst*#7`} [], `FUNCS`{`funcinst*#6`} [], `DATAS`{`datainst*#5`} [], `ELEMS`{`eleminst*#5`} [], `STRUCTS`{`structinst*#6`} [], `ARRAYS`{`arrayinst*#6`} [], `EXNS`{`exninst*#5`} []}, |s.`TAGS`_store{`taginst*#6`}|)] +[visit_exp s +++ {`TAGS`{`taginst*#5`} [taginst], `GLOBALS`{`globalinst*#6`} [], `MEMS`{`meminst*#7`} [], `TABLES`{`tableinst*#7`} [], `FUNCS`{`funcinst*#6`} [], `DATAS`{`datainst*#5`} [], `ELEMS`{`eleminst*#5`} [], `STRUCTS`{`structinst*#6`} [], `ARRAYS`{`arrayinst*#6`} [], `EXNS`{`exninst*#5`} []}] +[visit_exp s] +[visit_id s] not free +[visit_exp {`TAGS`{`taginst*#5`} [taginst], `GLOBALS`{`globalinst*#6`} [], `MEMS`{`meminst*#7`} [], `TABLES`{`tableinst*#7`} [], `FUNCS`{`funcinst*#6`} [], `DATAS`{`datainst*#5`} [], `ELEMS`{`eleminst*#5`} [], `STRUCTS`{`structinst*#6`} [], `ARRAYS`{`arrayinst*#6`} [], `EXNS`{`exninst*#5`} []}] +[visit_exp `taginst*#5`] +[visit_id taginst*#5] +[visit_exp [taginst]] +[visit_exp taginst] +[visit_id taginst] +[visit_exp `globalinst*#6`] +[visit_id globalinst*#6] +[visit_exp []] +[visit_exp `meminst*#7`] +[visit_id meminst*#7] +[visit_exp []] +[visit_exp `tableinst*#7`] +[visit_id tableinst*#7] +[visit_exp []] +[visit_exp `funcinst*#6`] +[visit_id funcinst*#6] +[visit_exp []] +[visit_exp `datainst*#5`] +[visit_id datainst*#5] +[visit_exp []] +[visit_exp `eleminst*#5`] +[visit_id eleminst*#5] +[visit_exp []] +[visit_exp `structinst*#6`] +[visit_id structinst*#6] +[visit_exp []] +[visit_exp `arrayinst*#6`] +[visit_id arrayinst*#6] +[visit_exp []] +[visit_exp `exninst*#5`] +[visit_id exninst*#5] +[visit_exp []] +[visit_exp |s.`TAGS`_store{`taginst*#6`}|] +[visit_exp s.`TAGS`_store{`taginst*#6`}] +[visit_exp s] +[visit_id s] not free +[visit_exp `taginst*#6`] +[visit_id taginst*#6] +[visit_exp (taginst = {`TYPE`{tagtype#181} tagtype})] +[visit_exp taginst] +[visit_id taginst] not free +[visit_exp {`TYPE`{tagtype#181} tagtype}] +[visit_exp tagtype#181] +[visit_id tagtype#181] +[visit_exp tagtype] +[visit_id tagtype] not free +=> + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $alloctag{s : store, tagtype : tagtype, `taginst*#5` : taginst*, taginst : taginst, `globalinst*#6` : globalinst*, `meminst*#7` : meminst*, `tableinst*#7` : tableinst*, `funcinst*#6` : funcinst*, `datainst*#5` : datainst*, `eleminst*#5` : eleminst*, `structinst*#6` : structinst*, `arrayinst*#6` : arrayinst*, `exninst*#5` : exninst*, `taginst*#6` : taginst*, tagtype#181 : tagtype}(s, tagtype) = (s +++ {`TAGS`{`taginst*#5`} [taginst], `GLOBALS`{`globalinst*#6`} [], `MEMS`{`meminst*#7`} [], `TABLES`{`tableinst*#7`} [], `FUNCS`{`funcinst*#6`} [], `DATAS`{`datainst*#5`} [], `ELEMS`{`eleminst*#5`} [], `STRUCTS`{`structinst*#6`} [], `ARRAYS`{`arrayinst*#6`} [], `EXNS`{`exninst*#5`} []}, |s.`TAGS`_store{`taginst*#6`}|) + -- if (taginst = {`TYPE`{tagtype#181} tagtype}) +[check_dims] _ store +DecD alloctags(store : store, tagtype*) : (store, tagaddr*) +[visit_id store] not free +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[check_dims] s +[visit_exp s] +[visit_id s] +[visit_exp []] +[visit_exp (s, [])] +[visit_exp s] +[visit_id s] not free +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $alloctags{s : store}(s, []) = (s, []) +[check_dims] ja ja' s s_1 s_2 tagtype tagtype' +[visit_exp s] +[visit_id s] +[visit_exp [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}] +[visit_exp [tagtype]] +[visit_exp tagtype] +[visit_id tagtype] +[visit_exp tagtype'*{tagtype' <- `tagtype'*`}] +[scope_enter tagtype'] +[visit_exp tagtype'] +[visit_id tagtype'] not free +[visit_id tagtype'] not free +[scope_exit tagtype'] +[visit_exp `tagtype'*`] +[visit_id tagtype'*] no dims +[visit_id tagtype'*] +[visit_exp (s_2, [ja] ++ ja'*{ja' <- `ja'*`})] +[visit_exp s_2] +[visit_id s_2] +[visit_exp [ja] ++ ja'*{ja' <- `ja'*`}] +[visit_exp [ja]] +[visit_exp ja] +[visit_id ja] +[visit_exp ja'*{ja' <- `ja'*`}] +[scope_enter ja'] +[visit_exp ja'] +[visit_id ja'] not free +[visit_id ja'] not free +[scope_exit ja'] +[visit_exp `ja'*`] +[visit_id ja'*] no dims +[visit_id ja'*] +[visit_exp ((s_1, ja) = $alloctag(s, tagtype))] +[visit_exp (s_1, ja)] +[visit_exp s_1] +[visit_id s_1] +[visit_exp ja] +[visit_id ja] not free +[visit_exp $alloctag(s, tagtype)] +[visit_exp s] +[visit_id s] not free +[visit_exp tagtype] +[visit_id tagtype] not free +[visit_exp ((s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`}))] +[visit_exp (s_2, ja'*{ja' <- `ja'*`})] +[visit_exp s_2] +[visit_id s_2] not free +[visit_exp ja'*{ja' <- `ja'*`}] +[scope_enter ja'] +[visit_exp ja'] +[visit_id ja'] not free +[visit_id ja'] not free +[scope_exit ja'] +[visit_exp `ja'*`] +[visit_id ja'*] not free +[visit_id ja'*] no dims +[visit_exp $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`})] +[visit_exp s_1] +[visit_id s_1] not free +[visit_exp tagtype'*{tagtype' <- `tagtype'*`}] +[scope_enter tagtype'] +[visit_exp tagtype'] +[visit_id tagtype'] not free +[visit_id tagtype'] not free +[scope_exit tagtype'] +[visit_exp `tagtype'*`] +[visit_id tagtype'*] not free +[visit_id tagtype'*] no dims +=> + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + 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'*`}) + -- if ((s_1, ja) = $alloctag(s, tagtype)) + -- if ((s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`})) +[check_dims] _ globaltype store val +DecD allocglobal(store : store, globaltype : globaltype, val : val) : (store, globaladdr) +[visit_id store] not free +[visit_id globaltype] not free +[visit_id val] not free +[visit_id _] not free +[visit_id _] not free +[check_dims] arrayinst*#7 datainst*#6 eleminst*#6 exninst*#6 funcinst*#7 globalinst globalinst*#7 globalinst*#8 globaltype globaltype#2088 meminst*#8 s structinst*#7 tableinst*#8 taginst*#7 val val#3 +[visit_exp s] +[visit_id s] +[visit_exp globaltype] +[visit_id globaltype] +[visit_exp val] +[visit_id val] +[visit_exp (s +++ {`TAGS`{`taginst*#7`} [], `GLOBALS`{`globalinst*#7`} [globalinst], `MEMS`{`meminst*#8`} [], `TABLES`{`tableinst*#8`} [], `FUNCS`{`funcinst*#7`} [], `DATAS`{`datainst*#6`} [], `ELEMS`{`eleminst*#6`} [], `STRUCTS`{`structinst*#7`} [], `ARRAYS`{`arrayinst*#7`} [], `EXNS`{`exninst*#6`} []}, |s.`GLOBALS`_store{`globalinst*#8`}|)] +[visit_exp s +++ {`TAGS`{`taginst*#7`} [], `GLOBALS`{`globalinst*#7`} [globalinst], `MEMS`{`meminst*#8`} [], `TABLES`{`tableinst*#8`} [], `FUNCS`{`funcinst*#7`} [], `DATAS`{`datainst*#6`} [], `ELEMS`{`eleminst*#6`} [], `STRUCTS`{`structinst*#7`} [], `ARRAYS`{`arrayinst*#7`} [], `EXNS`{`exninst*#6`} []}] +[visit_exp s] +[visit_id s] not free +[visit_exp {`TAGS`{`taginst*#7`} [], `GLOBALS`{`globalinst*#7`} [globalinst], `MEMS`{`meminst*#8`} [], `TABLES`{`tableinst*#8`} [], `FUNCS`{`funcinst*#7`} [], `DATAS`{`datainst*#6`} [], `ELEMS`{`eleminst*#6`} [], `STRUCTS`{`structinst*#7`} [], `ARRAYS`{`arrayinst*#7`} [], `EXNS`{`exninst*#6`} []}] +[visit_exp `taginst*#7`] +[visit_id taginst*#7] +[visit_exp []] +[visit_exp `globalinst*#7`] +[visit_id globalinst*#7] +[visit_exp [globalinst]] +[visit_exp globalinst] +[visit_id globalinst] +[visit_exp `meminst*#8`] +[visit_id meminst*#8] +[visit_exp []] +[visit_exp `tableinst*#8`] +[visit_id tableinst*#8] +[visit_exp []] +[visit_exp `funcinst*#7`] +[visit_id funcinst*#7] +[visit_exp []] +[visit_exp `datainst*#6`] +[visit_id datainst*#6] +[visit_exp []] +[visit_exp `eleminst*#6`] +[visit_id eleminst*#6] +[visit_exp []] +[visit_exp `structinst*#7`] +[visit_id structinst*#7] +[visit_exp []] +[visit_exp `arrayinst*#7`] +[visit_id arrayinst*#7] +[visit_exp []] +[visit_exp `exninst*#6`] +[visit_id exninst*#6] +[visit_exp []] +[visit_exp |s.`GLOBALS`_store{`globalinst*#8`}|] +[visit_exp s.`GLOBALS`_store{`globalinst*#8`}] +[visit_exp s] +[visit_id s] not free +[visit_exp `globalinst*#8`] +[visit_id globalinst*#8] +[visit_exp (globalinst = {`TYPE`{globaltype#2088} globaltype, `VALUE`{val#3} val})] +[visit_exp globalinst] +[visit_id globalinst] not free +[visit_exp {`TYPE`{globaltype#2088} globaltype, `VALUE`{val#3} val}] +[visit_exp globaltype#2088] +[visit_id globaltype#2088] +[visit_exp globaltype] +[visit_id globaltype] not free +[visit_exp val#3] +[visit_id val#3] +[visit_exp val] +[visit_id val] not free +=> + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocglobal{s : store, globaltype : globaltype, val : val, `taginst*#7` : taginst*, `globalinst*#7` : globalinst*, globalinst : globalinst, `meminst*#8` : meminst*, `tableinst*#8` : tableinst*, `funcinst*#7` : funcinst*, `datainst*#6` : datainst*, `eleminst*#6` : eleminst*, `structinst*#7` : structinst*, `arrayinst*#7` : arrayinst*, `exninst*#6` : exninst*, `globalinst*#8` : globalinst*, globaltype#2088 : globaltype, val#3 : val}(s, globaltype, val) = (s +++ {`TAGS`{`taginst*#7`} [], `GLOBALS`{`globalinst*#7`} [globalinst], `MEMS`{`meminst*#8`} [], `TABLES`{`tableinst*#8`} [], `FUNCS`{`funcinst*#7`} [], `DATAS`{`datainst*#6`} [], `ELEMS`{`eleminst*#6`} [], `STRUCTS`{`structinst*#7`} [], `ARRAYS`{`arrayinst*#7`} [], `EXNS`{`exninst*#6`} []}, |s.`GLOBALS`_store{`globalinst*#8`}|) + -- if (globalinst = {`TYPE`{globaltype#2088} globaltype, `VALUE`{val#3} val}) +[check_dims] _ store +DecD allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) +[visit_id store] not free +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[check_dims] s +[visit_exp s] +[visit_id s] +[visit_exp []] +[visit_exp []] +[visit_exp (s, [])] +[visit_exp s] +[visit_id s] not free +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocglobals{s : store}(s, [], []) = (s, []) +[check_dims] ga ga' globaltype globaltype' s s_1 s_2 val val' +[visit_exp s] +[visit_id s] +[visit_exp [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}] +[visit_exp [globaltype]] +[visit_exp globaltype] +[visit_id globaltype] +[visit_exp globaltype'*{globaltype' <- `globaltype'*`}] +[scope_enter globaltype'] +[visit_exp globaltype'] +[visit_id globaltype'] not free +[visit_id globaltype'] not free +[scope_exit globaltype'] +[visit_exp `globaltype'*`] +[visit_id globaltype'*] no dims +[visit_id globaltype'*] +[visit_exp [val] ++ val'*{val' <- `val'*`}] +[visit_exp [val]] +[visit_exp val] +[visit_id val] +[visit_exp val'*{val' <- `val'*`}] +[scope_enter val'] +[visit_exp val'] +[visit_id val'] not free +[visit_id val'] not free +[scope_exit val'] +[visit_exp `val'*`] +[visit_id val'*] no dims +[visit_id val'*] +[visit_exp (s_2, [ga] ++ ga'*{ga' <- `ga'*`})] +[visit_exp s_2] +[visit_id s_2] +[visit_exp [ga] ++ ga'*{ga' <- `ga'*`}] +[visit_exp [ga]] +[visit_exp ga] +[visit_id ga] +[visit_exp ga'*{ga' <- `ga'*`}] +[scope_enter ga'] +[visit_exp ga'] +[visit_id ga'] not free +[visit_id ga'] not free +[scope_exit ga'] +[visit_exp `ga'*`] +[visit_id ga'*] no dims +[visit_id ga'*] +[visit_exp ((s_1, ga) = $allocglobal(s, globaltype, val))] +[visit_exp (s_1, ga)] +[visit_exp s_1] +[visit_id s_1] +[visit_exp ga] +[visit_id ga] not free +[visit_exp $allocglobal(s, globaltype, val)] +[visit_exp s] +[visit_id s] not free +[visit_exp globaltype] +[visit_id globaltype] not free +[visit_exp val] +[visit_id val] not free +[visit_exp ((s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}))] +[visit_exp (s_2, ga'*{ga' <- `ga'*`})] +[visit_exp s_2] +[visit_id s_2] not free +[visit_exp ga'*{ga' <- `ga'*`}] +[scope_enter ga'] +[visit_exp ga'] +[visit_id ga'] not free +[visit_id ga'] not free +[scope_exit ga'] +[visit_exp `ga'*`] +[visit_id ga'*] not free +[visit_id ga'*] no dims +[visit_exp $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`})] +[visit_exp s_1] +[visit_id s_1] not free +[visit_exp globaltype'*{globaltype' <- `globaltype'*`}] +[scope_enter globaltype'] +[visit_exp globaltype'] +[visit_id globaltype'] not free +[visit_id globaltype'] not free +[scope_exit globaltype'] +[visit_exp `globaltype'*`] +[visit_id globaltype'*] not free +[visit_id globaltype'*] no dims +[visit_exp val'*{val' <- `val'*`}] +[scope_enter val'] +[visit_exp val'] +[visit_id val'] not free +[visit_id val'] not free +[scope_exit val'] +[visit_exp `val'*`] +[visit_id val'*] not free +[visit_id val'*] no dims +=> + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + 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'*`}) + -- if ((s_1, ga) = $allocglobal(s, globaltype, val)) + -- if ((s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`})) +[check_dims] _ memtype store +DecD allocmem(store : store, memtype : memtype) : (store, memaddr) +[visit_id store] not free +[visit_id memtype] not free +[visit_id _] not free +[visit_id _] not free +[check_dims] addrtype#1147 addrtype#1159 arrayinst*#8 at byte*#1879 datainst*#7 eleminst*#7 exninst*#7 funcinst*#8 globalinst*#9 i i#46867 i#46875 j limits#1147 limits#1159 meminst meminst*#10 meminst*#9 memtype#531 s structinst*#8 tableinst*#9 taginst*#8 u64#443 u64#455 u64?#419 u64?#431 +[visit_exp s] +[visit_id s] +[visit_exp `%%PAGE`_memtype{addrtype#1147, limits#1147}(at, `[%..%]`_limits{u64#443, `u64?#419`}(i, j?{j <- `j?`}))] +[visit_exp addrtype#1147] +[visit_id addrtype#1147] +[visit_exp limits#1147] +[visit_id limits#1147] +[visit_exp (at, `[%..%]`_limits{u64#443, `u64?#419`}(i, j?{j <- `j?`}))] +[visit_exp at] +[visit_id at] +[visit_exp `[%..%]`_limits{u64#443, `u64?#419`}(i, j?{j <- `j?`})] +[visit_exp u64#443] +[visit_id u64#443] +[visit_exp `u64?#419`] +[visit_id u64?#419] +[visit_exp (i, j?{j <- `j?`})] +[visit_exp i] +[visit_id i] +[visit_exp j?{j <- `j?`}] +[scope_enter j] +[visit_exp j] +[visit_id j] not free +[visit_id j] not free +[scope_exit j] +[visit_exp `j?`] +[visit_id j?] no dims +[visit_id j?] +[visit_exp (s +++ {`TAGS`{`taginst*#8`} [], `GLOBALS`{`globalinst*#9`} [], `MEMS`{`meminst*#9`} [meminst], `TABLES`{`tableinst*#9`} [], `FUNCS`{`funcinst*#8`} [], `DATAS`{`datainst*#7`} [], `ELEMS`{`eleminst*#7`} [], `STRUCTS`{`structinst*#8`} [], `ARRAYS`{`arrayinst*#8`} [], `EXNS`{`exninst*#7`} []}, |s.`MEMS`_store{`meminst*#10`}|)] +[visit_exp s +++ {`TAGS`{`taginst*#8`} [], `GLOBALS`{`globalinst*#9`} [], `MEMS`{`meminst*#9`} [meminst], `TABLES`{`tableinst*#9`} [], `FUNCS`{`funcinst*#8`} [], `DATAS`{`datainst*#7`} [], `ELEMS`{`eleminst*#7`} [], `STRUCTS`{`structinst*#8`} [], `ARRAYS`{`arrayinst*#8`} [], `EXNS`{`exninst*#7`} []}] +[visit_exp s] +[visit_id s] not free +[visit_exp {`TAGS`{`taginst*#8`} [], `GLOBALS`{`globalinst*#9`} [], `MEMS`{`meminst*#9`} [meminst], `TABLES`{`tableinst*#9`} [], `FUNCS`{`funcinst*#8`} [], `DATAS`{`datainst*#7`} [], `ELEMS`{`eleminst*#7`} [], `STRUCTS`{`structinst*#8`} [], `ARRAYS`{`arrayinst*#8`} [], `EXNS`{`exninst*#7`} []}] +[visit_exp `taginst*#8`] +[visit_id taginst*#8] +[visit_exp []] +[visit_exp `globalinst*#9`] +[visit_id globalinst*#9] +[visit_exp []] +[visit_exp `meminst*#9`] +[visit_id meminst*#9] +[visit_exp [meminst]] +[visit_exp meminst] +[visit_id meminst] +[visit_exp `tableinst*#9`] +[visit_id tableinst*#9] +[visit_exp []] +[visit_exp `funcinst*#8`] +[visit_id funcinst*#8] +[visit_exp []] +[visit_exp `datainst*#7`] +[visit_id datainst*#7] +[visit_exp []] +[visit_exp `eleminst*#7`] +[visit_id eleminst*#7] +[visit_exp []] +[visit_exp `structinst*#8`] +[visit_id structinst*#8] +[visit_exp []] +[visit_exp `arrayinst*#8`] +[visit_id arrayinst*#8] +[visit_exp []] +[visit_exp `exninst*#7`] +[visit_id exninst*#7] +[visit_exp []] +[visit_exp |s.`MEMS`_store{`meminst*#10`}|] +[visit_exp s.`MEMS`_store{`meminst*#10`}] +[visit_exp s] +[visit_id s] not free +[visit_exp `meminst*#10`] +[visit_id meminst*#10] +[visit_exp (meminst = {`TYPE`{memtype#531} `%%PAGE`_memtype{addrtype#1159, limits#1159}(at, `[%..%]`_limits{u64#455, `u64?#431`}(i, j?{j <- `j?`})), `BYTES`{`byte*#1879`} `%`_byte{i#46875}(0)^(i!`%`_u64{i#46867}.0 * (64 * $Ki)){i#46875 <- `i#46875*`}})] +[visit_exp meminst] +[visit_id meminst] not free +[visit_exp {`TYPE`{memtype#531} `%%PAGE`_memtype{addrtype#1159, limits#1159}(at, `[%..%]`_limits{u64#455, `u64?#431`}(i, j?{j <- `j?`})), `BYTES`{`byte*#1879`} `%`_byte{i#46875}(0)^(i!`%`_u64{i#46867}.0 * (64 * $Ki)){i#46875 <- `i#46875*`}}] +[visit_exp memtype#531] +[visit_id memtype#531] +[visit_exp `%%PAGE`_memtype{addrtype#1159, limits#1159}(at, `[%..%]`_limits{u64#455, `u64?#431`}(i, j?{j <- `j?`}))] +[visit_exp addrtype#1159] +[visit_id addrtype#1159] +[visit_exp limits#1159] +[visit_id limits#1159] +[visit_exp (at, `[%..%]`_limits{u64#455, `u64?#431`}(i, j?{j <- `j?`}))] +[visit_exp at] +[visit_id at] not free +[visit_exp `[%..%]`_limits{u64#455, `u64?#431`}(i, j?{j <- `j?`})] +[visit_exp u64#455] +[visit_id u64#455] +[visit_exp `u64?#431`] +[visit_id u64?#431] +[visit_exp (i, j?{j <- `j?`})] +[visit_exp i] +[visit_id i] not free +[visit_exp j?{j <- `j?`}] +[scope_enter j] +[visit_exp j] +[visit_id j] not free +[visit_id j] not free +[scope_exit j] +[visit_exp `j?`] +[visit_id j?] not free +[visit_id j?] no dims +[visit_exp `byte*#1879`] +[visit_id byte*#1879] +[visit_exp `%`_byte{i#46875}(0)^(i!`%`_u64{i#46867}.0 * (64 * $Ki)){i#46875 <- `i#46875*`}] +[scope_enter i#46875] +[visit_exp `%`_byte{i#46875}(0)] +[visit_exp i#46875] +[visit_id i#46875] not free +[visit_exp (0)] +[visit_exp 0] +[visit_id i#46875] not free +[scope_exit i#46875] +[visit_exp (i!`%`_u64{i#46867}.0 * (64 * $Ki))] +[visit_exp i!`%`_u64{i#46867}.0] +[visit_exp i!`%`_u64{i#46867}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#46867] +[visit_id i#46867] +[visit_exp (64 * $Ki)] +[visit_exp 64] +[visit_exp $Ki] +[visit_exp `i#46875*`] +[visit_id i#46875*] no dims +[visit_id i#46875*] +=> + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocmem{s : store, addrtype#1147 : addrtype, limits#1147 : limits, at : addrtype, u64#443 : u64, `u64?#419` : u64?, i : u64, `j?` : u64?, `taginst*#8` : taginst*, `globalinst*#9` : globalinst*, `meminst*#9` : meminst*, meminst : meminst, `tableinst*#9` : tableinst*, `funcinst*#8` : funcinst*, `datainst*#7` : datainst*, `eleminst*#7` : eleminst*, `structinst*#8` : structinst*, `arrayinst*#8` : arrayinst*, `exninst*#7` : exninst*, `meminst*#10` : meminst*, memtype#531 : memtype, addrtype#1159 : addrtype, limits#1159 : limits, u64#455 : u64, `u64?#431` : u64?, `byte*#1879` : byte*, i#46867 : nat, `i#46875*` : nat*}(s, `%%PAGE`_memtype{addrtype#1147, limits#1147}(at, `[%..%]`_limits{u64#443, `u64?#419`}(i, j?{j <- `j?`}))) = (s +++ {`TAGS`{`taginst*#8`} [], `GLOBALS`{`globalinst*#9`} [], `MEMS`{`meminst*#9`} [meminst], `TABLES`{`tableinst*#9`} [], `FUNCS`{`funcinst*#8`} [], `DATAS`{`datainst*#7`} [], `ELEMS`{`eleminst*#7`} [], `STRUCTS`{`structinst*#8`} [], `ARRAYS`{`arrayinst*#8`} [], `EXNS`{`exninst*#7`} []}, |s.`MEMS`_store{`meminst*#10`}|) + -- if (meminst = {`TYPE`{memtype#531} `%%PAGE`_memtype{addrtype#1159, limits#1159}(at, `[%..%]`_limits{u64#455, `u64?#431`}(i, j?{j <- `j?`})), `BYTES`{`byte*#1879`} `%`_byte{i#46875}(0)^(i!`%`_u64{i#46867}.0 * (64 * $Ki)){i#46875 <- `i#46875*`}}) +[check_dims] _ store +DecD allocmems(store : store, memtype*) : (store, memaddr*) +[visit_id store] not free +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[check_dims] s +[visit_exp s] +[visit_id s] +[visit_exp []] +[visit_exp (s, [])] +[visit_exp s] +[visit_id s] not free +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocmems{s : store}(s, []) = (s, []) +[check_dims] ma ma' memtype memtype' s s_1 s_2 +[visit_exp s] +[visit_id s] +[visit_exp [memtype] ++ memtype'*{memtype' <- `memtype'*`}] +[visit_exp [memtype]] +[visit_exp memtype] +[visit_id memtype] +[visit_exp memtype'*{memtype' <- `memtype'*`}] +[scope_enter memtype'] +[visit_exp memtype'] +[visit_id memtype'] not free +[visit_id memtype'] not free +[scope_exit memtype'] +[visit_exp `memtype'*`] +[visit_id memtype'*] no dims +[visit_id memtype'*] +[visit_exp (s_2, [ma] ++ ma'*{ma' <- `ma'*`})] +[visit_exp s_2] +[visit_id s_2] +[visit_exp [ma] ++ ma'*{ma' <- `ma'*`}] +[visit_exp [ma]] +[visit_exp ma] +[visit_id ma] +[visit_exp ma'*{ma' <- `ma'*`}] +[scope_enter ma'] +[visit_exp ma'] +[visit_id ma'] not free +[visit_id ma'] not free +[scope_exit ma'] +[visit_exp `ma'*`] +[visit_id ma'*] no dims +[visit_id ma'*] +[visit_exp ((s_1, ma) = $allocmem(s, memtype))] +[visit_exp (s_1, ma)] +[visit_exp s_1] +[visit_id s_1] +[visit_exp ma] +[visit_id ma] not free +[visit_exp $allocmem(s, memtype)] +[visit_exp s] +[visit_id s] not free +[visit_exp memtype] +[visit_id memtype] not free +[visit_exp ((s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`}))] +[visit_exp (s_2, ma'*{ma' <- `ma'*`})] +[visit_exp s_2] +[visit_id s_2] not free +[visit_exp ma'*{ma' <- `ma'*`}] +[scope_enter ma'] +[visit_exp ma'] +[visit_id ma'] not free +[visit_id ma'] not free +[scope_exit ma'] +[visit_exp `ma'*`] +[visit_id ma'*] not free +[visit_id ma'*] no dims +[visit_exp $allocmems(s_1, memtype'*{memtype' <- `memtype'*`})] +[visit_exp s_1] +[visit_id s_1] not free +[visit_exp memtype'*{memtype' <- `memtype'*`}] +[scope_enter memtype'] +[visit_exp memtype'] +[visit_id memtype'] not free +[visit_id memtype'] not free +[scope_exit memtype'] +[visit_exp `memtype'*`] +[visit_id memtype'*] not free +[visit_id memtype'*] no dims +=> + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + 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'*`}) + -- if ((s_1, ma) = $allocmem(s, memtype)) + -- if ((s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`})) +[check_dims] _ ref store tabletype +DecD alloctable(store : store, tabletype : tabletype, ref : ref) : (store, tableaddr) +[visit_id store] not free +[visit_id tabletype] not free +[visit_id ref] not free +[visit_id _] not free +[visit_id _] not free +[check_dims] addrtype#1219 addrtype#1231 arrayinst*#9 at datainst*#8 eleminst*#8 exninst*#8 funcinst*#9 globalinst*#10 i i#46955 j limits#1219 limits#1231 meminst*#11 ref ref*#22 reftype#3485 reftype#3497 rt s structinst*#9 tableinst tableinst*#10 tableinst*#11 tabletype#881 taginst*#9 u64#467 u64#479 u64?#443 u64?#455 +[visit_exp s] +[visit_id s] +[visit_exp `%%%`_tabletype{addrtype#1219, limits#1219, reftype#3485}(at, `[%..%]`_limits{u64#467, `u64?#443`}(i, j?{j <- `j?`}), rt)] +[visit_exp addrtype#1219] +[visit_id addrtype#1219] +[visit_exp limits#1219] +[visit_id limits#1219] +[visit_exp reftype#3485] +[visit_id reftype#3485] +[visit_exp (at, `[%..%]`_limits{u64#467, `u64?#443`}(i, j?{j <- `j?`}), rt)] +[visit_exp at] +[visit_id at] +[visit_exp `[%..%]`_limits{u64#467, `u64?#443`}(i, j?{j <- `j?`})] +[visit_exp u64#467] +[visit_id u64#467] +[visit_exp `u64?#443`] +[visit_id u64?#443] +[visit_exp (i, j?{j <- `j?`})] +[visit_exp i] +[visit_id i] +[visit_exp j?{j <- `j?`}] +[scope_enter j] +[visit_exp j] +[visit_id j] not free +[visit_id j] not free +[scope_exit j] +[visit_exp `j?`] +[visit_id j?] no dims +[visit_id j?] +[visit_exp rt] +[visit_id rt] +[visit_exp ref] +[visit_id ref] +[visit_exp (s +++ {`TAGS`{`taginst*#9`} [], `GLOBALS`{`globalinst*#10`} [], `MEMS`{`meminst*#11`} [], `TABLES`{`tableinst*#10`} [tableinst], `FUNCS`{`funcinst*#9`} [], `DATAS`{`datainst*#8`} [], `ELEMS`{`eleminst*#8`} [], `STRUCTS`{`structinst*#9`} [], `ARRAYS`{`arrayinst*#9`} [], `EXNS`{`exninst*#8`} []}, |s.`TABLES`_store{`tableinst*#11`}|)] +[visit_exp s +++ {`TAGS`{`taginst*#9`} [], `GLOBALS`{`globalinst*#10`} [], `MEMS`{`meminst*#11`} [], `TABLES`{`tableinst*#10`} [tableinst], `FUNCS`{`funcinst*#9`} [], `DATAS`{`datainst*#8`} [], `ELEMS`{`eleminst*#8`} [], `STRUCTS`{`structinst*#9`} [], `ARRAYS`{`arrayinst*#9`} [], `EXNS`{`exninst*#8`} []}] +[visit_exp s] +[visit_id s] not free +[visit_exp {`TAGS`{`taginst*#9`} [], `GLOBALS`{`globalinst*#10`} [], `MEMS`{`meminst*#11`} [], `TABLES`{`tableinst*#10`} [tableinst], `FUNCS`{`funcinst*#9`} [], `DATAS`{`datainst*#8`} [], `ELEMS`{`eleminst*#8`} [], `STRUCTS`{`structinst*#9`} [], `ARRAYS`{`arrayinst*#9`} [], `EXNS`{`exninst*#8`} []}] +[visit_exp `taginst*#9`] +[visit_id taginst*#9] +[visit_exp []] +[visit_exp `globalinst*#10`] +[visit_id globalinst*#10] +[visit_exp []] +[visit_exp `meminst*#11`] +[visit_id meminst*#11] +[visit_exp []] +[visit_exp `tableinst*#10`] +[visit_id tableinst*#10] +[visit_exp [tableinst]] +[visit_exp tableinst] +[visit_id tableinst] +[visit_exp `funcinst*#9`] +[visit_id funcinst*#9] +[visit_exp []] +[visit_exp `datainst*#8`] +[visit_id datainst*#8] +[visit_exp []] +[visit_exp `eleminst*#8`] +[visit_id eleminst*#8] +[visit_exp []] +[visit_exp `structinst*#9`] +[visit_id structinst*#9] +[visit_exp []] +[visit_exp `arrayinst*#9`] +[visit_id arrayinst*#9] +[visit_exp []] +[visit_exp `exninst*#8`] +[visit_id exninst*#8] +[visit_exp []] +[visit_exp |s.`TABLES`_store{`tableinst*#11`}|] +[visit_exp s.`TABLES`_store{`tableinst*#11`}] +[visit_exp s] +[visit_id s] not free +[visit_exp `tableinst*#11`] +[visit_id tableinst*#11] +[visit_exp (tableinst = {`TYPE`{tabletype#881} `%%%`_tabletype{addrtype#1231, limits#1231, reftype#3497}(at, `[%..%]`_limits{u64#479, `u64?#455`}(i, j?{j <- `j?`}), rt), `REFS`{`ref*#22`} ref^i!`%`_u64{i#46955}.0{}})] +[visit_exp tableinst] +[visit_id tableinst] not free +[visit_exp {`TYPE`{tabletype#881} `%%%`_tabletype{addrtype#1231, limits#1231, reftype#3497}(at, `[%..%]`_limits{u64#479, `u64?#455`}(i, j?{j <- `j?`}), rt), `REFS`{`ref*#22`} ref^i!`%`_u64{i#46955}.0{}}] +[visit_exp tabletype#881] +[visit_id tabletype#881] +[visit_exp `%%%`_tabletype{addrtype#1231, limits#1231, reftype#3497}(at, `[%..%]`_limits{u64#479, `u64?#455`}(i, j?{j <- `j?`}), rt)] +[visit_exp addrtype#1231] +[visit_id addrtype#1231] +[visit_exp limits#1231] +[visit_id limits#1231] +[visit_exp reftype#3497] +[visit_id reftype#3497] +[visit_exp (at, `[%..%]`_limits{u64#479, `u64?#455`}(i, j?{j <- `j?`}), rt)] +[visit_exp at] +[visit_id at] not free +[visit_exp `[%..%]`_limits{u64#479, `u64?#455`}(i, j?{j <- `j?`})] +[visit_exp u64#479] +[visit_id u64#479] +[visit_exp `u64?#455`] +[visit_id u64?#455] +[visit_exp (i, j?{j <- `j?`})] +[visit_exp i] +[visit_id i] not free +[visit_exp j?{j <- `j?`}] +[scope_enter j] +[visit_exp j] +[visit_id j] not free +[visit_id j] not free +[scope_exit j] +[visit_exp `j?`] +[visit_id j?] not free +[visit_id j?] no dims +[visit_exp rt] +[visit_id rt] not free +[visit_exp `ref*#22`] +[visit_id ref*#22] +[visit_exp ref^i!`%`_u64{i#46955}.0{}] +[visit_exp ref] +[visit_id ref] not free +[visit_exp i!`%`_u64{i#46955}.0] +[visit_exp i!`%`_u64{i#46955}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#46955] +[visit_id i#46955] +=> + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $alloctable{s : store, addrtype#1219 : addrtype, limits#1219 : limits, reftype#3485 : reftype, at : addrtype, u64#467 : u64, `u64?#443` : u64?, i : u64, `j?` : u64?, rt : reftype, ref : ref, `taginst*#9` : taginst*, `globalinst*#10` : globalinst*, `meminst*#11` : meminst*, `tableinst*#10` : tableinst*, tableinst : tableinst, `funcinst*#9` : funcinst*, `datainst*#8` : datainst*, `eleminst*#8` : eleminst*, `structinst*#9` : structinst*, `arrayinst*#9` : arrayinst*, `exninst*#8` : exninst*, `tableinst*#11` : tableinst*, tabletype#881 : tabletype, addrtype#1231 : addrtype, limits#1231 : limits, reftype#3497 : reftype, u64#479 : u64, `u64?#455` : u64?, `ref*#22` : ref*, i#46955 : nat}(s, `%%%`_tabletype{addrtype#1219, limits#1219, reftype#3485}(at, `[%..%]`_limits{u64#467, `u64?#443`}(i, j?{j <- `j?`}), rt), ref) = (s +++ {`TAGS`{`taginst*#9`} [], `GLOBALS`{`globalinst*#10`} [], `MEMS`{`meminst*#11`} [], `TABLES`{`tableinst*#10`} [tableinst], `FUNCS`{`funcinst*#9`} [], `DATAS`{`datainst*#8`} [], `ELEMS`{`eleminst*#8`} [], `STRUCTS`{`structinst*#9`} [], `ARRAYS`{`arrayinst*#9`} [], `EXNS`{`exninst*#8`} []}, |s.`TABLES`_store{`tableinst*#11`}|) + -- if (tableinst = {`TYPE`{tabletype#881} `%%%`_tabletype{addrtype#1231, limits#1231, reftype#3497}(at, `[%..%]`_limits{u64#479, `u64?#455`}(i, j?{j <- `j?`}), rt), `REFS`{`ref*#22`} ref^i!`%`_u64{i#46955}.0{}}) +[check_dims] _ store +DecD alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) +[visit_id store] not free +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[check_dims] s +[visit_exp s] +[visit_id s] +[visit_exp []] +[visit_exp []] +[visit_exp (s, [])] +[visit_exp s] +[visit_id s] not free +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $alloctables{s : store}(s, [], []) = (s, []) +[check_dims] ref ref' s s_1 s_2 ta ta' tabletype tabletype' +[visit_exp s] +[visit_id s] +[visit_exp [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}] +[visit_exp [tabletype]] +[visit_exp tabletype] +[visit_id tabletype] +[visit_exp tabletype'*{tabletype' <- `tabletype'*`}] +[scope_enter tabletype'] +[visit_exp tabletype'] +[visit_id tabletype'] not free +[visit_id tabletype'] not free +[scope_exit tabletype'] +[visit_exp `tabletype'*`] +[visit_id tabletype'*] no dims +[visit_id tabletype'*] +[visit_exp [ref] ++ ref'*{ref' <- `ref'*`}] +[visit_exp [ref]] +[visit_exp ref] +[visit_id ref] +[visit_exp ref'*{ref' <- `ref'*`}] +[scope_enter ref'] +[visit_exp ref'] +[visit_id ref'] not free +[visit_id ref'] not free +[scope_exit ref'] +[visit_exp `ref'*`] +[visit_id ref'*] no dims +[visit_id ref'*] +[visit_exp (s_2, [ta] ++ ta'*{ta' <- `ta'*`})] +[visit_exp s_2] +[visit_id s_2] +[visit_exp [ta] ++ ta'*{ta' <- `ta'*`}] +[visit_exp [ta]] +[visit_exp ta] +[visit_id ta] +[visit_exp ta'*{ta' <- `ta'*`}] +[scope_enter ta'] +[visit_exp ta'] +[visit_id ta'] not free +[visit_id ta'] not free +[scope_exit ta'] +[visit_exp `ta'*`] +[visit_id ta'*] no dims +[visit_id ta'*] +[visit_exp ((s_1, ta) = $alloctable(s, tabletype, ref))] +[visit_exp (s_1, ta)] +[visit_exp s_1] +[visit_id s_1] +[visit_exp ta] +[visit_id ta] not free +[visit_exp $alloctable(s, tabletype, ref)] +[visit_exp s] +[visit_id s] not free +[visit_exp tabletype] +[visit_id tabletype] not free +[visit_exp ref] +[visit_id ref] not free +[visit_exp ((s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}))] +[visit_exp (s_2, ta'*{ta' <- `ta'*`})] +[visit_exp s_2] +[visit_id s_2] not free +[visit_exp ta'*{ta' <- `ta'*`}] +[scope_enter ta'] +[visit_exp ta'] +[visit_id ta'] not free +[visit_id ta'] not free +[scope_exit ta'] +[visit_exp `ta'*`] +[visit_id ta'*] not free +[visit_id ta'*] no dims +[visit_exp $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`})] +[visit_exp s_1] +[visit_id s_1] not free +[visit_exp tabletype'*{tabletype' <- `tabletype'*`}] +[scope_enter tabletype'] +[visit_exp tabletype'] +[visit_id tabletype'] not free +[visit_id tabletype'] not free +[scope_exit tabletype'] +[visit_exp `tabletype'*`] +[visit_id tabletype'*] not free +[visit_id tabletype'*] no dims +[visit_exp ref'*{ref' <- `ref'*`}] +[scope_enter ref'] +[visit_exp ref'] +[visit_id ref'] not free +[visit_id ref'] not free +[scope_exit ref'] +[visit_exp `ref'*`] +[visit_id ref'*] not free +[visit_id ref'*] no dims +=> + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + 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'*`}) + -- if ((s_1, ta) = $alloctable(s, tabletype, ref)) + -- if ((s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`})) +[check_dims] _ deftype funccode moduleinst store +DecD allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst) : (store, funcaddr) +[visit_id store] not free +[visit_id deftype] not free +[visit_id funccode] not free +[visit_id moduleinst] not free +[visit_id _] not free +[visit_id _] not free +[check_dims] arrayinst*#10 datainst*#9 deftype deftype#11 eleminst*#9 exninst*#9 funccode funccode#2 funcinst funcinst*#10 funcinst*#11 globalinst*#11 meminst*#12 moduleinst moduleinst#25 s structinst*#10 tableinst*#12 taginst*#10 +[visit_exp s] +[visit_id s] +[visit_exp deftype] +[visit_id deftype] +[visit_exp funccode] +[visit_id funccode] +[visit_exp moduleinst] +[visit_id moduleinst] +[visit_exp (s +++ {`TAGS`{`taginst*#10`} [], `GLOBALS`{`globalinst*#11`} [], `MEMS`{`meminst*#12`} [], `TABLES`{`tableinst*#12`} [], `FUNCS`{`funcinst*#10`} [funcinst], `DATAS`{`datainst*#9`} [], `ELEMS`{`eleminst*#9`} [], `STRUCTS`{`structinst*#10`} [], `ARRAYS`{`arrayinst*#10`} [], `EXNS`{`exninst*#9`} []}, |s.`FUNCS`_store{`funcinst*#11`}|)] +[visit_exp s +++ {`TAGS`{`taginst*#10`} [], `GLOBALS`{`globalinst*#11`} [], `MEMS`{`meminst*#12`} [], `TABLES`{`tableinst*#12`} [], `FUNCS`{`funcinst*#10`} [funcinst], `DATAS`{`datainst*#9`} [], `ELEMS`{`eleminst*#9`} [], `STRUCTS`{`structinst*#10`} [], `ARRAYS`{`arrayinst*#10`} [], `EXNS`{`exninst*#9`} []}] +[visit_exp s] +[visit_id s] not free +[visit_exp {`TAGS`{`taginst*#10`} [], `GLOBALS`{`globalinst*#11`} [], `MEMS`{`meminst*#12`} [], `TABLES`{`tableinst*#12`} [], `FUNCS`{`funcinst*#10`} [funcinst], `DATAS`{`datainst*#9`} [], `ELEMS`{`eleminst*#9`} [], `STRUCTS`{`structinst*#10`} [], `ARRAYS`{`arrayinst*#10`} [], `EXNS`{`exninst*#9`} []}] +[visit_exp `taginst*#10`] +[visit_id taginst*#10] +[visit_exp []] +[visit_exp `globalinst*#11`] +[visit_id globalinst*#11] +[visit_exp []] +[visit_exp `meminst*#12`] +[visit_id meminst*#12] +[visit_exp []] +[visit_exp `tableinst*#12`] +[visit_id tableinst*#12] +[visit_exp []] +[visit_exp `funcinst*#10`] +[visit_id funcinst*#10] +[visit_exp [funcinst]] +[visit_exp funcinst] +[visit_id funcinst] +[visit_exp `datainst*#9`] +[visit_id datainst*#9] +[visit_exp []] +[visit_exp `eleminst*#9`] +[visit_id eleminst*#9] +[visit_exp []] +[visit_exp `structinst*#10`] +[visit_id structinst*#10] +[visit_exp []] +[visit_exp `arrayinst*#10`] +[visit_id arrayinst*#10] +[visit_exp []] +[visit_exp `exninst*#9`] +[visit_id exninst*#9] +[visit_exp []] +[visit_exp |s.`FUNCS`_store{`funcinst*#11`}|] +[visit_exp s.`FUNCS`_store{`funcinst*#11`}] +[visit_exp s] +[visit_id s] not free +[visit_exp `funcinst*#11`] +[visit_id funcinst*#11] +[visit_exp (funcinst = {`TYPE`{deftype#11} deftype, `MODULE`{moduleinst#25} moduleinst, `CODE`{funccode#2} funccode})] +[visit_exp funcinst] +[visit_id funcinst] not free +[visit_exp {`TYPE`{deftype#11} deftype, `MODULE`{moduleinst#25} moduleinst, `CODE`{funccode#2} funccode}] +[visit_exp deftype#11] +[visit_id deftype#11] +[visit_exp deftype] +[visit_id deftype] not free +[visit_exp moduleinst#25] +[visit_id moduleinst#25] +[visit_exp moduleinst] +[visit_id moduleinst] not free +[visit_exp funccode#2] +[visit_id funccode#2] +[visit_exp funccode] +[visit_id funccode] not free +=> + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, `taginst*#10` : taginst*, `globalinst*#11` : globalinst*, `meminst*#12` : meminst*, `tableinst*#12` : tableinst*, `funcinst*#10` : funcinst*, funcinst : funcinst, `datainst*#9` : datainst*, `eleminst*#9` : eleminst*, `structinst*#10` : structinst*, `arrayinst*#10` : arrayinst*, `exninst*#9` : exninst*, `funcinst*#11` : funcinst*, deftype#11 : deftype, moduleinst#25 : moduleinst, funccode#2 : funccode}(s, deftype, funccode, moduleinst) = (s +++ {`TAGS`{`taginst*#10`} [], `GLOBALS`{`globalinst*#11`} [], `MEMS`{`meminst*#12`} [], `TABLES`{`tableinst*#12`} [], `FUNCS`{`funcinst*#10`} [funcinst], `DATAS`{`datainst*#9`} [], `ELEMS`{`eleminst*#9`} [], `STRUCTS`{`structinst*#10`} [], `ARRAYS`{`arrayinst*#10`} [], `EXNS`{`exninst*#9`} []}, |s.`FUNCS`_store{`funcinst*#11`}|) + -- if (funcinst = {`TYPE`{deftype#11} deftype, `MODULE`{moduleinst#25} moduleinst, `CODE`{funccode#2} funccode}) +[check_dims] _ store +DecD allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funcaddr*) +[visit_id store] not free +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[check_dims] s +[visit_exp s] +[visit_id s] +[visit_exp []] +[visit_exp []] +[visit_exp []] +[visit_exp (s, [])] +[visit_exp s] +[visit_id s] not free +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocfuncs{s : store}(s, [], [], []) = (s, []) +[check_dims] dt dt' fa fa' funccode funccode' moduleinst moduleinst' s s_1 s_2 +[visit_exp s] +[visit_id s] +[visit_exp [dt] ++ dt'*{dt' <- `dt'*`}] +[visit_exp [dt]] +[visit_exp dt] +[visit_id dt] +[visit_exp dt'*{dt' <- `dt'*`}] +[scope_enter dt'] +[visit_exp dt'] +[visit_id dt'] not free +[visit_id dt'] not free +[scope_exit dt'] +[visit_exp `dt'*`] +[visit_id dt'*] no dims +[visit_id dt'*] +[visit_exp [funccode] ++ funccode'*{funccode' <- `funccode'*`}] +[visit_exp [funccode]] +[visit_exp funccode] +[visit_id funccode] +[visit_exp funccode'*{funccode' <- `funccode'*`}] +[scope_enter funccode'] +[visit_exp funccode'] +[visit_id funccode'] not free +[visit_id funccode'] not free +[scope_exit funccode'] +[visit_exp `funccode'*`] +[visit_id funccode'*] no dims +[visit_id funccode'*] +[visit_exp [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}] +[visit_exp [moduleinst]] +[visit_exp moduleinst] +[visit_id moduleinst] +[visit_exp moduleinst'*{moduleinst' <- `moduleinst'*`}] +[scope_enter moduleinst'] +[visit_exp moduleinst'] +[visit_id moduleinst'] not free +[visit_id moduleinst'] not free +[scope_exit moduleinst'] +[visit_exp `moduleinst'*`] +[visit_id moduleinst'*] no dims +[visit_id moduleinst'*] +[visit_exp (s_2, [fa] ++ fa'*{fa' <- `fa'*`})] +[visit_exp s_2] +[visit_id s_2] +[visit_exp [fa] ++ fa'*{fa' <- `fa'*`}] +[visit_exp [fa]] +[visit_exp fa] +[visit_id fa] +[visit_exp fa'*{fa' <- `fa'*`}] +[scope_enter fa'] +[visit_exp fa'] +[visit_id fa'] not free +[visit_id fa'] not free +[scope_exit fa'] +[visit_exp `fa'*`] +[visit_id fa'*] no dims +[visit_id fa'*] +[visit_exp ((s_1, fa) = $allocfunc(s, dt, funccode, moduleinst))] +[visit_exp (s_1, fa)] +[visit_exp s_1] +[visit_id s_1] +[visit_exp fa] +[visit_id fa] not free +[visit_exp $allocfunc(s, dt, funccode, moduleinst)] +[visit_exp s] +[visit_id s] not free +[visit_exp dt] +[visit_id dt] not free +[visit_exp funccode] +[visit_id funccode] not free +[visit_exp moduleinst] +[visit_id moduleinst] not free +[visit_exp ((s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}))] +[visit_exp (s_2, fa'*{fa' <- `fa'*`})] +[visit_exp s_2] +[visit_id s_2] not free +[visit_exp fa'*{fa' <- `fa'*`}] +[scope_enter fa'] +[visit_exp fa'] +[visit_id fa'] not free +[visit_id fa'] not free +[scope_exit fa'] +[visit_exp `fa'*`] +[visit_id fa'*] not free +[visit_id fa'*] no dims +[visit_exp $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`})] +[visit_exp s_1] +[visit_id s_1] not free +[visit_exp dt'*{dt' <- `dt'*`}] +[scope_enter dt'] +[visit_exp dt'] +[visit_id dt'] not free +[visit_id dt'] not free +[scope_exit dt'] +[visit_exp `dt'*`] +[visit_id dt'*] not free +[visit_id dt'*] no dims +[visit_exp funccode'*{funccode' <- `funccode'*`}] +[scope_enter funccode'] +[visit_exp funccode'] +[visit_id funccode'] not free +[visit_id funccode'] not free +[scope_exit funccode'] +[visit_exp `funccode'*`] +[visit_id funccode'*] not free +[visit_id funccode'*] no dims +[visit_exp moduleinst'*{moduleinst' <- `moduleinst'*`}] +[scope_enter moduleinst'] +[visit_exp moduleinst'] +[visit_id moduleinst'] not free +[visit_id moduleinst'] not free +[scope_exit moduleinst'] +[visit_exp `moduleinst'*`] +[visit_id moduleinst'*] not free +[visit_id moduleinst'*] no dims +=> + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + 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'*`}) + -- 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'*`})) +[check_dims] _ datatype store +DecD allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) +[visit_id store] not free +[visit_id datatype] not free +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[check_dims] arrayinst*#11 byte byte*#1880 datainst datainst*#10 datainst*#11 eleminst*#10 exninst*#10 funcinst*#12 globalinst*#12 meminst*#13 s structinst*#11 tableinst*#13 taginst*#11 +[visit_exp s] +[visit_id s] +[visit_exp `OK`_datatype] +[visit_exp ()] +[visit_exp byte*{byte <- `byte*`}] +[scope_enter byte] +[visit_exp byte] +[visit_id byte] not free +[visit_id byte] not free +[scope_exit byte] +[visit_exp `byte*`] +[visit_id byte*] no dims +[visit_id byte*] +[visit_exp (s +++ {`TAGS`{`taginst*#11`} [], `GLOBALS`{`globalinst*#12`} [], `MEMS`{`meminst*#13`} [], `TABLES`{`tableinst*#13`} [], `FUNCS`{`funcinst*#12`} [], `DATAS`{`datainst*#10`} [datainst], `ELEMS`{`eleminst*#10`} [], `STRUCTS`{`structinst*#11`} [], `ARRAYS`{`arrayinst*#11`} [], `EXNS`{`exninst*#10`} []}, |s.`DATAS`_store{`datainst*#11`}|)] +[visit_exp s +++ {`TAGS`{`taginst*#11`} [], `GLOBALS`{`globalinst*#12`} [], `MEMS`{`meminst*#13`} [], `TABLES`{`tableinst*#13`} [], `FUNCS`{`funcinst*#12`} [], `DATAS`{`datainst*#10`} [datainst], `ELEMS`{`eleminst*#10`} [], `STRUCTS`{`structinst*#11`} [], `ARRAYS`{`arrayinst*#11`} [], `EXNS`{`exninst*#10`} []}] +[visit_exp s] +[visit_id s] not free +[visit_exp {`TAGS`{`taginst*#11`} [], `GLOBALS`{`globalinst*#12`} [], `MEMS`{`meminst*#13`} [], `TABLES`{`tableinst*#13`} [], `FUNCS`{`funcinst*#12`} [], `DATAS`{`datainst*#10`} [datainst], `ELEMS`{`eleminst*#10`} [], `STRUCTS`{`structinst*#11`} [], `ARRAYS`{`arrayinst*#11`} [], `EXNS`{`exninst*#10`} []}] +[visit_exp `taginst*#11`] +[visit_id taginst*#11] +[visit_exp []] +[visit_exp `globalinst*#12`] +[visit_id globalinst*#12] +[visit_exp []] +[visit_exp `meminst*#13`] +[visit_id meminst*#13] +[visit_exp []] +[visit_exp `tableinst*#13`] +[visit_id tableinst*#13] +[visit_exp []] +[visit_exp `funcinst*#12`] +[visit_id funcinst*#12] +[visit_exp []] +[visit_exp `datainst*#10`] +[visit_id datainst*#10] +[visit_exp [datainst]] +[visit_exp datainst] +[visit_id datainst] +[visit_exp `eleminst*#10`] +[visit_id eleminst*#10] +[visit_exp []] +[visit_exp `structinst*#11`] +[visit_id structinst*#11] +[visit_exp []] +[visit_exp `arrayinst*#11`] +[visit_id arrayinst*#11] +[visit_exp []] +[visit_exp `exninst*#10`] +[visit_id exninst*#10] +[visit_exp []] +[visit_exp |s.`DATAS`_store{`datainst*#11`}|] +[visit_exp s.`DATAS`_store{`datainst*#11`}] +[visit_exp s] +[visit_id s] not free +[visit_exp `datainst*#11`] +[visit_id datainst*#11] +[visit_exp (datainst = {`BYTES`{`byte*#1880`} byte*{byte <- `byte*`}})] +[visit_exp datainst] +[visit_id datainst] not free +[visit_exp {`BYTES`{`byte*#1880`} byte*{byte <- `byte*`}}] +[visit_exp `byte*#1880`] +[visit_id byte*#1880] +[visit_exp byte*{byte <- `byte*`}] +[scope_enter byte] +[visit_exp byte] +[visit_id byte] not free +[visit_id byte] not free +[scope_exit byte] +[visit_exp `byte*`] +[visit_id byte*] not free +[visit_id byte*] no dims +=> + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocdata{s : store, `byte*` : byte*, `taginst*#11` : taginst*, `globalinst*#12` : globalinst*, `meminst*#13` : meminst*, `tableinst*#13` : tableinst*, `funcinst*#12` : funcinst*, `datainst*#10` : datainst*, datainst : datainst, `eleminst*#10` : eleminst*, `structinst*#11` : structinst*, `arrayinst*#11` : arrayinst*, `exninst*#10` : exninst*, `datainst*#11` : datainst*, `byte*#1880` : byte*}(s, `OK`_datatype, byte*{byte <- `byte*`}) = (s +++ {`TAGS`{`taginst*#11`} [], `GLOBALS`{`globalinst*#12`} [], `MEMS`{`meminst*#13`} [], `TABLES`{`tableinst*#13`} [], `FUNCS`{`funcinst*#12`} [], `DATAS`{`datainst*#10`} [datainst], `ELEMS`{`eleminst*#10`} [], `STRUCTS`{`structinst*#11`} [], `ARRAYS`{`arrayinst*#11`} [], `EXNS`{`exninst*#10`} []}, |s.`DATAS`_store{`datainst*#11`}|) + -- if (datainst = {`BYTES`{`byte*#1880`} byte*{byte <- `byte*`}}) +[check_dims] _ store +DecD allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) +[visit_id store] not free +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[check_dims] s +[visit_exp s] +[visit_id s] +[visit_exp []] +[visit_exp []] +[visit_exp (s, [])] +[visit_exp s] +[visit_id s] not free +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocdatas{s : store}(s, [], []) = (s, []) +[check_dims] b b' da da' ok ok' s s_1 s_2 +[visit_exp s] +[visit_id s] +[visit_exp [ok] ++ ok'*{ok' <- `ok'*`}] +[visit_exp [ok]] +[visit_exp ok] +[visit_id ok] +[visit_exp ok'*{ok' <- `ok'*`}] +[scope_enter ok'] +[visit_exp ok'] +[visit_id ok'] not free +[visit_id ok'] not free +[scope_exit ok'] +[visit_exp `ok'*`] +[visit_id ok'*] no dims +[visit_id ok'*] +[visit_exp [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}] +[visit_exp [b*{b <- `b*`}]] +[visit_exp b*{b <- `b*`}] +[scope_enter b] +[visit_exp b] +[visit_id b] not free +[visit_id b] not free +[scope_exit b] +[visit_exp `b*`] +[visit_id b*] no dims +[visit_id b*] +[visit_exp b'*{b' <- `b'*`}*{`b'*` <- `b'**`}] +[scope_enter b'*] +[visit_exp b'*{b' <- `b'*`}] +[scope_enter b'] +[visit_exp b'] +[visit_id b'] not free +[visit_id b'] not free +[scope_exit b'] +[visit_exp `b'*`] +[visit_id b'*] not free +[visit_id b'*] no dims +[visit_id b'*] not free +[visit_id b'*] no dims +[scope_exit b'*] +[visit_exp `b'**`] +[visit_id b'**] no dims +[visit_id b'**] +[visit_exp (s_2, [da] ++ da'*{da' <- `da'*`})] +[visit_exp s_2] +[visit_id s_2] +[visit_exp [da] ++ da'*{da' <- `da'*`}] +[visit_exp [da]] +[visit_exp da] +[visit_id da] +[visit_exp da'*{da' <- `da'*`}] +[scope_enter da'] +[visit_exp da'] +[visit_id da'] not free +[visit_id da'] not free +[scope_exit da'] +[visit_exp `da'*`] +[visit_id da'*] no dims +[visit_id da'*] +[visit_exp ((s_1, da) = $allocdata(s, ok, b*{b <- `b*`}))] +[visit_exp (s_1, da)] +[visit_exp s_1] +[visit_id s_1] +[visit_exp da] +[visit_id da] not free +[visit_exp $allocdata(s, ok, b*{b <- `b*`})] +[visit_exp s] +[visit_id s] not free +[visit_exp ok] +[visit_id ok] not free +[visit_exp b*{b <- `b*`}] +[scope_enter b] +[visit_exp b] +[visit_id b] not free +[visit_id b] not free +[scope_exit b] +[visit_exp `b*`] +[visit_id b*] not free +[visit_id b*] no dims +[visit_exp ((s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}))] +[visit_exp (s_2, da'*{da' <- `da'*`})] +[visit_exp s_2] +[visit_id s_2] not free +[visit_exp da'*{da' <- `da'*`}] +[scope_enter da'] +[visit_exp da'] +[visit_id da'] not free +[visit_id da'] not free +[scope_exit da'] +[visit_exp `da'*`] +[visit_id da'*] not free +[visit_id da'*] no dims +[visit_exp $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`})] +[visit_exp s_1] +[visit_id s_1] not free +[visit_exp ok'*{ok' <- `ok'*`}] +[scope_enter ok'] +[visit_exp ok'] +[visit_id ok'] not free +[visit_id ok'] not free +[scope_exit ok'] +[visit_exp `ok'*`] +[visit_id ok'*] not free +[visit_id ok'*] no dims +[visit_exp b'*{b' <- `b'*`}*{`b'*` <- `b'**`}] +[scope_enter b'*] +[visit_exp b'*{b' <- `b'*`}] +[scope_enter b'] +[visit_exp b'] +[visit_id b'] not free +[visit_id b'] not free +[scope_exit b'] +[visit_exp `b'*`] +[visit_id b'*] not free +[visit_id b'*] no dims +[visit_id b'*] not free +[visit_id b'*] no dims +[scope_exit b'*] +[visit_exp `b'**`] +[visit_id b'**] not free +[visit_id b'**] no dims +=> + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + 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'*`}) + -- 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'**`})) +[check_dims] _ elemtype store +DecD allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) +[visit_id store] not free +[visit_id elemtype] not free +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[check_dims] arrayinst*#12 datainst*#12 eleminst eleminst*#11 eleminst*#12 elemtype elemtype#1 exninst*#11 funcinst*#13 globalinst*#13 meminst*#14 ref ref*#23 s structinst*#12 tableinst*#14 taginst*#12 +[visit_exp s] +[visit_id s] +[visit_exp elemtype] +[visit_id elemtype] +[visit_exp ref*{ref <- `ref*`}] +[scope_enter ref] +[visit_exp ref] +[visit_id ref] not free +[visit_id ref] not free +[scope_exit ref] +[visit_exp `ref*`] +[visit_id ref*] no dims +[visit_id ref*] +[visit_exp (s +++ {`TAGS`{`taginst*#12`} [], `GLOBALS`{`globalinst*#13`} [], `MEMS`{`meminst*#14`} [], `TABLES`{`tableinst*#14`} [], `FUNCS`{`funcinst*#13`} [], `DATAS`{`datainst*#12`} [], `ELEMS`{`eleminst*#11`} [eleminst], `STRUCTS`{`structinst*#12`} [], `ARRAYS`{`arrayinst*#12`} [], `EXNS`{`exninst*#11`} []}, |s.`ELEMS`_store{`eleminst*#12`}|)] +[visit_exp s +++ {`TAGS`{`taginst*#12`} [], `GLOBALS`{`globalinst*#13`} [], `MEMS`{`meminst*#14`} [], `TABLES`{`tableinst*#14`} [], `FUNCS`{`funcinst*#13`} [], `DATAS`{`datainst*#12`} [], `ELEMS`{`eleminst*#11`} [eleminst], `STRUCTS`{`structinst*#12`} [], `ARRAYS`{`arrayinst*#12`} [], `EXNS`{`exninst*#11`} []}] +[visit_exp s] +[visit_id s] not free +[visit_exp {`TAGS`{`taginst*#12`} [], `GLOBALS`{`globalinst*#13`} [], `MEMS`{`meminst*#14`} [], `TABLES`{`tableinst*#14`} [], `FUNCS`{`funcinst*#13`} [], `DATAS`{`datainst*#12`} [], `ELEMS`{`eleminst*#11`} [eleminst], `STRUCTS`{`structinst*#12`} [], `ARRAYS`{`arrayinst*#12`} [], `EXNS`{`exninst*#11`} []}] +[visit_exp `taginst*#12`] +[visit_id taginst*#12] +[visit_exp []] +[visit_exp `globalinst*#13`] +[visit_id globalinst*#13] +[visit_exp []] +[visit_exp `meminst*#14`] +[visit_id meminst*#14] +[visit_exp []] +[visit_exp `tableinst*#14`] +[visit_id tableinst*#14] +[visit_exp []] +[visit_exp `funcinst*#13`] +[visit_id funcinst*#13] +[visit_exp []] +[visit_exp `datainst*#12`] +[visit_id datainst*#12] +[visit_exp []] +[visit_exp `eleminst*#11`] +[visit_id eleminst*#11] +[visit_exp [eleminst]] +[visit_exp eleminst] +[visit_id eleminst] +[visit_exp `structinst*#12`] +[visit_id structinst*#12] +[visit_exp []] +[visit_exp `arrayinst*#12`] +[visit_id arrayinst*#12] +[visit_exp []] +[visit_exp `exninst*#11`] +[visit_id exninst*#11] +[visit_exp []] +[visit_exp |s.`ELEMS`_store{`eleminst*#12`}|] +[visit_exp s.`ELEMS`_store{`eleminst*#12`}] +[visit_exp s] +[visit_id s] not free +[visit_exp `eleminst*#12`] +[visit_id eleminst*#12] +[visit_exp (eleminst = {`TYPE`{elemtype#1} elemtype, `REFS`{`ref*#23`} ref*{ref <- `ref*`}})] +[visit_exp eleminst] +[visit_id eleminst] not free +[visit_exp {`TYPE`{elemtype#1} elemtype, `REFS`{`ref*#23`} ref*{ref <- `ref*`}}] +[visit_exp elemtype#1] +[visit_id elemtype#1] +[visit_exp elemtype] +[visit_id elemtype] not free +[visit_exp `ref*#23`] +[visit_id ref*#23] +[visit_exp ref*{ref <- `ref*`}] +[scope_enter ref] +[visit_exp ref] +[visit_id ref] not free +[visit_id ref] not free +[scope_exit ref] +[visit_exp `ref*`] +[visit_id ref*] not free +[visit_id ref*] no dims +=> + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocelem{s : store, elemtype : elemtype, `ref*` : ref*, `taginst*#12` : taginst*, `globalinst*#13` : globalinst*, `meminst*#14` : meminst*, `tableinst*#14` : tableinst*, `funcinst*#13` : funcinst*, `datainst*#12` : datainst*, `eleminst*#11` : eleminst*, eleminst : eleminst, `structinst*#12` : structinst*, `arrayinst*#12` : arrayinst*, `exninst*#11` : exninst*, `eleminst*#12` : eleminst*, elemtype#1 : elemtype, `ref*#23` : ref*}(s, elemtype, ref*{ref <- `ref*`}) = (s +++ {`TAGS`{`taginst*#12`} [], `GLOBALS`{`globalinst*#13`} [], `MEMS`{`meminst*#14`} [], `TABLES`{`tableinst*#14`} [], `FUNCS`{`funcinst*#13`} [], `DATAS`{`datainst*#12`} [], `ELEMS`{`eleminst*#11`} [eleminst], `STRUCTS`{`structinst*#12`} [], `ARRAYS`{`arrayinst*#12`} [], `EXNS`{`exninst*#11`} []}, |s.`ELEMS`_store{`eleminst*#12`}|) + -- if (eleminst = {`TYPE`{elemtype#1} elemtype, `REFS`{`ref*#23`} ref*{ref <- `ref*`}}) +[check_dims] _ store +DecD allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) +[visit_id store] not free +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[check_dims] s +[visit_exp s] +[visit_id s] +[visit_exp []] +[visit_exp []] +[visit_exp (s, [])] +[visit_exp s] +[visit_id s] not free +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocelems{s : store}(s, [], []) = (s, []) +[check_dims] ea ea' ref ref' rt rt' s s_1 s_2 +[visit_exp s] +[visit_id s] +[visit_exp [rt] ++ rt'*{rt' <- `rt'*`}] +[visit_exp [rt]] +[visit_exp rt] +[visit_id rt] +[visit_exp rt'*{rt' <- `rt'*`}] +[scope_enter rt'] +[visit_exp rt'] +[visit_id rt'] not free +[visit_id rt'] not free +[scope_exit rt'] +[visit_exp `rt'*`] +[visit_id rt'*] no dims +[visit_id rt'*] +[visit_exp [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}] +[visit_exp [ref*{ref <- `ref*`}]] +[visit_exp ref*{ref <- `ref*`}] +[scope_enter ref] +[visit_exp ref] +[visit_id ref] not free +[visit_id ref] not free +[scope_exit ref] +[visit_exp `ref*`] +[visit_id ref*] no dims +[visit_id ref*] +[visit_exp ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}] +[scope_enter ref'*] +[visit_exp ref'*{ref' <- `ref'*`}] +[scope_enter ref'] +[visit_exp ref'] +[visit_id ref'] not free +[visit_id ref'] not free +[scope_exit ref'] +[visit_exp `ref'*`] +[visit_id ref'*] not free +[visit_id ref'*] no dims +[visit_id ref'*] not free +[visit_id ref'*] no dims +[scope_exit ref'*] +[visit_exp `ref'**`] +[visit_id ref'**] no dims +[visit_id ref'**] +[visit_exp (s_2, [ea] ++ ea'*{ea' <- `ea'*`})] +[visit_exp s_2] +[visit_id s_2] +[visit_exp [ea] ++ ea'*{ea' <- `ea'*`}] +[visit_exp [ea]] +[visit_exp ea] +[visit_id ea] +[visit_exp ea'*{ea' <- `ea'*`}] +[scope_enter ea'] +[visit_exp ea'] +[visit_id ea'] not free +[visit_id ea'] not free +[scope_exit ea'] +[visit_exp `ea'*`] +[visit_id ea'*] no dims +[visit_id ea'*] +[visit_exp ((s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`}))] +[visit_exp (s_1, ea)] +[visit_exp s_1] +[visit_id s_1] +[visit_exp ea] +[visit_id ea] not free +[visit_exp $allocelem(s, rt, ref*{ref <- `ref*`})] +[visit_exp s] +[visit_id s] not free +[visit_exp rt] +[visit_id rt] not free +[visit_exp ref*{ref <- `ref*`}] +[scope_enter ref] +[visit_exp ref] +[visit_id ref] not free +[visit_id ref] not free +[scope_exit ref] +[visit_exp `ref*`] +[visit_id ref*] not free +[visit_id ref*] no dims +[visit_exp ((s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}))] +[visit_exp (s_2, ea'*{ea' <- `ea'*`})] +[visit_exp s_2] +[visit_id s_2] not free +[visit_exp ea'*{ea' <- `ea'*`}] +[scope_enter ea'] +[visit_exp ea'] +[visit_id ea'] not free +[visit_id ea'] not free +[scope_exit ea'] +[visit_exp `ea'*`] +[visit_id ea'*] not free +[visit_id ea'*] no dims +[visit_exp $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`})] +[visit_exp s_1] +[visit_id s_1] not free +[visit_exp rt'*{rt' <- `rt'*`}] +[scope_enter rt'] +[visit_exp rt'] +[visit_id rt'] not free +[visit_id rt'] not free +[scope_exit rt'] +[visit_exp `rt'*`] +[visit_id rt'*] not free +[visit_id rt'*] no dims +[visit_exp ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}] +[scope_enter ref'*] +[visit_exp ref'*{ref' <- `ref'*`}] +[scope_enter ref'] +[visit_exp ref'] +[visit_id ref'] not free +[visit_id ref'] not free +[scope_exit ref'] +[visit_exp `ref'*`] +[visit_id ref'*] not free +[visit_id ref'*] no dims +[visit_id ref'*] not free +[visit_id ref'*] no dims +[scope_exit ref'*] +[visit_exp `ref'**`] +[visit_id ref'**] not free +[visit_id ref'**] no dims +=> + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + 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'*`}) + -- 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'**`})) +[check_dims] export moduleinst +DecD allocexport(moduleinst : moduleinst, export : export) : exportinst +[visit_id moduleinst] not free +[visit_id export] not free +[check_dims] externaddr#1 externidx#5379 i#47111 moduleinst name name#5597 name#5599 tagaddr#8 tagaddr*#4 tagidx#17 x +[visit_exp moduleinst] +[visit_id moduleinst] +[visit_exp `EXPORT`_export{name#5597, externidx#5379}(name, `TAG`_externidx{tagidx#17}(x))] +[visit_exp name#5597] +[visit_id name#5597] +[visit_exp externidx#5379] +[visit_id externidx#5379] +[visit_exp (name, `TAG`_externidx{tagidx#17}(x))] +[visit_exp name] +[visit_id name] +[visit_exp `TAG`_externidx{tagidx#17}(x)] +[visit_exp tagidx#17] +[visit_id tagidx#17] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp {`NAME`{name#5599} name, `ADDR`{externaddr#1} `TAG`_externaddr{tagaddr#8}(moduleinst.`TAGS`_moduleinst{`tagaddr*#4`}[x!`%`_idx{i#47111}.0])}] +[visit_exp name#5599] +[visit_id name#5599] +[visit_exp name] +[visit_id name] not free +[visit_exp externaddr#1] +[visit_id externaddr#1] +[visit_exp `TAG`_externaddr{tagaddr#8}(moduleinst.`TAGS`_moduleinst{`tagaddr*#4`}[x!`%`_idx{i#47111}.0])] +[visit_exp tagaddr#8] +[visit_id tagaddr#8] +[visit_exp (moduleinst.`TAGS`_moduleinst{`tagaddr*#4`}[x!`%`_idx{i#47111}.0])] +[visit_exp moduleinst.`TAGS`_moduleinst{`tagaddr*#4`}[x!`%`_idx{i#47111}.0]] +[visit_exp moduleinst.`TAGS`_moduleinst{`tagaddr*#4`}] +[visit_exp moduleinst] +[visit_id moduleinst] not free +[visit_exp `tagaddr*#4`] +[visit_id tagaddr*#4] +[visit_exp x!`%`_idx{i#47111}.0] +[visit_exp x!`%`_idx{i#47111}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#47111] +[visit_id i#47111] +=> + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name#5597 : name, externidx#5379 : externidx, name : name, tagidx#17 : tagidx, x : idx, name#5599 : name, externaddr#1 : externaddr, tagaddr#8 : tagaddr, `tagaddr*#4` : tagaddr*, i#47111 : nat}(moduleinst, `EXPORT`_export{name#5597, externidx#5379}(name, `TAG`_externidx{tagidx#17}(x))) = {`NAME`{name#5599} name, `ADDR`{externaddr#1} `TAG`_externaddr{tagaddr#8}(moduleinst.`TAGS`_moduleinst{`tagaddr*#4`}[x!`%`_idx{i#47111}.0])} +[check_dims] externaddr#2 externidx#5391 globaladdr#5 globaladdr*#3 globalidx#21 i#47135 moduleinst name name#5610 name#5612 x +[visit_exp moduleinst] +[visit_id moduleinst] +[visit_exp `EXPORT`_export{name#5610, externidx#5391}(name, `GLOBAL`_externidx{globalidx#21}(x))] +[visit_exp name#5610] +[visit_id name#5610] +[visit_exp externidx#5391] +[visit_id externidx#5391] +[visit_exp (name, `GLOBAL`_externidx{globalidx#21}(x))] +[visit_exp name] +[visit_id name] +[visit_exp `GLOBAL`_externidx{globalidx#21}(x)] +[visit_exp globalidx#21] +[visit_id globalidx#21] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp {`NAME`{name#5612} name, `ADDR`{externaddr#2} `GLOBAL`_externaddr{globaladdr#5}(moduleinst.`GLOBALS`_moduleinst{`globaladdr*#3`}[x!`%`_idx{i#47135}.0])}] +[visit_exp name#5612] +[visit_id name#5612] +[visit_exp name] +[visit_id name] not free +[visit_exp externaddr#2] +[visit_id externaddr#2] +[visit_exp `GLOBAL`_externaddr{globaladdr#5}(moduleinst.`GLOBALS`_moduleinst{`globaladdr*#3`}[x!`%`_idx{i#47135}.0])] +[visit_exp globaladdr#5] +[visit_id globaladdr#5] +[visit_exp (moduleinst.`GLOBALS`_moduleinst{`globaladdr*#3`}[x!`%`_idx{i#47135}.0])] +[visit_exp moduleinst.`GLOBALS`_moduleinst{`globaladdr*#3`}[x!`%`_idx{i#47135}.0]] +[visit_exp moduleinst.`GLOBALS`_moduleinst{`globaladdr*#3`}] +[visit_exp moduleinst] +[visit_id moduleinst] not free +[visit_exp `globaladdr*#3`] +[visit_id globaladdr*#3] +[visit_exp x!`%`_idx{i#47135}.0] +[visit_exp x!`%`_idx{i#47135}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#47135] +[visit_id i#47135] +=> + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name#5610 : name, externidx#5391 : externidx, name : name, globalidx#21 : globalidx, x : idx, name#5612 : name, externaddr#2 : externaddr, globaladdr#5 : globaladdr, `globaladdr*#3` : globaladdr*, i#47135 : nat}(moduleinst, `EXPORT`_export{name#5610, externidx#5391}(name, `GLOBAL`_externidx{globalidx#21}(x))) = {`NAME`{name#5612} name, `ADDR`{externaddr#2} `GLOBAL`_externaddr{globaladdr#5}(moduleinst.`GLOBALS`_moduleinst{`globaladdr*#3`}[x!`%`_idx{i#47135}.0])} +[check_dims] externaddr#3 externidx#5403 i#47159 memaddr#5 memaddr*#4 memidx#163 moduleinst name name#5623 name#5625 x +[visit_exp moduleinst] +[visit_id moduleinst] +[visit_exp `EXPORT`_export{name#5623, externidx#5403}(name, `MEM`_externidx{memidx#163}(x))] +[visit_exp name#5623] +[visit_id name#5623] +[visit_exp externidx#5403] +[visit_id externidx#5403] +[visit_exp (name, `MEM`_externidx{memidx#163}(x))] +[visit_exp name] +[visit_id name] +[visit_exp `MEM`_externidx{memidx#163}(x)] +[visit_exp memidx#163] +[visit_id memidx#163] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp {`NAME`{name#5625} name, `ADDR`{externaddr#3} `MEM`_externaddr{memaddr#5}(moduleinst.`MEMS`_moduleinst{`memaddr*#4`}[x!`%`_idx{i#47159}.0])}] +[visit_exp name#5625] +[visit_id name#5625] +[visit_exp name] +[visit_id name] not free +[visit_exp externaddr#3] +[visit_id externaddr#3] +[visit_exp `MEM`_externaddr{memaddr#5}(moduleinst.`MEMS`_moduleinst{`memaddr*#4`}[x!`%`_idx{i#47159}.0])] +[visit_exp memaddr#5] +[visit_id memaddr#5] +[visit_exp (moduleinst.`MEMS`_moduleinst{`memaddr*#4`}[x!`%`_idx{i#47159}.0])] +[visit_exp moduleinst.`MEMS`_moduleinst{`memaddr*#4`}[x!`%`_idx{i#47159}.0]] +[visit_exp moduleinst.`MEMS`_moduleinst{`memaddr*#4`}] +[visit_exp moduleinst] +[visit_id moduleinst] not free +[visit_exp `memaddr*#4`] +[visit_id memaddr*#4] +[visit_exp x!`%`_idx{i#47159}.0] +[visit_exp x!`%`_idx{i#47159}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#47159] +[visit_id i#47159] +=> + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name#5623 : name, externidx#5403 : externidx, name : name, memidx#163 : memidx, x : idx, name#5625 : name, externaddr#3 : externaddr, memaddr#5 : memaddr, `memaddr*#4` : memaddr*, i#47159 : nat}(moduleinst, `EXPORT`_export{name#5623, externidx#5403}(name, `MEM`_externidx{memidx#163}(x))) = {`NAME`{name#5625} name, `ADDR`{externaddr#3} `MEM`_externaddr{memaddr#5}(moduleinst.`MEMS`_moduleinst{`memaddr*#4`}[x!`%`_idx{i#47159}.0])} +[check_dims] externaddr#4 externidx#5415 i#47183 moduleinst name name#5636 name#5638 tableaddr#5 tableaddr*#4 tableidx#117 x +[visit_exp moduleinst] +[visit_id moduleinst] +[visit_exp `EXPORT`_export{name#5636, externidx#5415}(name, `TABLE`_externidx{tableidx#117}(x))] +[visit_exp name#5636] +[visit_id name#5636] +[visit_exp externidx#5415] +[visit_id externidx#5415] +[visit_exp (name, `TABLE`_externidx{tableidx#117}(x))] +[visit_exp name] +[visit_id name] +[visit_exp `TABLE`_externidx{tableidx#117}(x)] +[visit_exp tableidx#117] +[visit_id tableidx#117] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp {`NAME`{name#5638} name, `ADDR`{externaddr#4} `TABLE`_externaddr{tableaddr#5}(moduleinst.`TABLES`_moduleinst{`tableaddr*#4`}[x!`%`_idx{i#47183}.0])}] +[visit_exp name#5638] +[visit_id name#5638] +[visit_exp name] +[visit_id name] not free +[visit_exp externaddr#4] +[visit_id externaddr#4] +[visit_exp `TABLE`_externaddr{tableaddr#5}(moduleinst.`TABLES`_moduleinst{`tableaddr*#4`}[x!`%`_idx{i#47183}.0])] +[visit_exp tableaddr#5] +[visit_id tableaddr#5] +[visit_exp (moduleinst.`TABLES`_moduleinst{`tableaddr*#4`}[x!`%`_idx{i#47183}.0])] +[visit_exp moduleinst.`TABLES`_moduleinst{`tableaddr*#4`}[x!`%`_idx{i#47183}.0]] +[visit_exp moduleinst.`TABLES`_moduleinst{`tableaddr*#4`}] +[visit_exp moduleinst] +[visit_id moduleinst] not free +[visit_exp `tableaddr*#4`] +[visit_id tableaddr*#4] +[visit_exp x!`%`_idx{i#47183}.0] +[visit_exp x!`%`_idx{i#47183}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#47183] +[visit_id i#47183] +=> + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name#5636 : name, externidx#5415 : externidx, name : name, tableidx#117 : tableidx, x : idx, name#5638 : name, externaddr#4 : externaddr, tableaddr#5 : tableaddr, `tableaddr*#4` : tableaddr*, i#47183 : nat}(moduleinst, `EXPORT`_export{name#5636, externidx#5415}(name, `TABLE`_externidx{tableidx#117}(x))) = {`NAME`{name#5638} name, `ADDR`{externaddr#4} `TABLE`_externaddr{tableaddr#5}(moduleinst.`TABLES`_moduleinst{`tableaddr*#4`}[x!`%`_idx{i#47183}.0])} +[check_dims] externaddr#5 externidx#5427 funcaddr#19 funcaddr*#5 funcidx#2843 i#47207 moduleinst name name#5649 name#5651 x +[visit_exp moduleinst] +[visit_id moduleinst] +[visit_exp `EXPORT`_export{name#5649, externidx#5427}(name, `FUNC`_externidx{funcidx#2843}(x))] +[visit_exp name#5649] +[visit_id name#5649] +[visit_exp externidx#5427] +[visit_id externidx#5427] +[visit_exp (name, `FUNC`_externidx{funcidx#2843}(x))] +[visit_exp name] +[visit_id name] +[visit_exp `FUNC`_externidx{funcidx#2843}(x)] +[visit_exp funcidx#2843] +[visit_id funcidx#2843] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp {`NAME`{name#5651} name, `ADDR`{externaddr#5} `FUNC`_externaddr{funcaddr#19}(moduleinst.`FUNCS`_moduleinst{`funcaddr*#5`}[x!`%`_idx{i#47207}.0])}] +[visit_exp name#5651] +[visit_id name#5651] +[visit_exp name] +[visit_id name] not free +[visit_exp externaddr#5] +[visit_id externaddr#5] +[visit_exp `FUNC`_externaddr{funcaddr#19}(moduleinst.`FUNCS`_moduleinst{`funcaddr*#5`}[x!`%`_idx{i#47207}.0])] +[visit_exp funcaddr#19] +[visit_id funcaddr#19] +[visit_exp (moduleinst.`FUNCS`_moduleinst{`funcaddr*#5`}[x!`%`_idx{i#47207}.0])] +[visit_exp moduleinst.`FUNCS`_moduleinst{`funcaddr*#5`}[x!`%`_idx{i#47207}.0]] +[visit_exp moduleinst.`FUNCS`_moduleinst{`funcaddr*#5`}] +[visit_exp moduleinst] +[visit_id moduleinst] not free +[visit_exp `funcaddr*#5`] +[visit_id funcaddr*#5] +[visit_exp x!`%`_idx{i#47207}.0] +[visit_exp x!`%`_idx{i#47207}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#47207] +[visit_id i#47207] +=> + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name#5649 : name, externidx#5427 : externidx, name : name, funcidx#2843 : funcidx, x : idx, name#5651 : name, externaddr#5 : externaddr, funcaddr#19 : funcaddr, `funcaddr*#5` : funcaddr*, i#47207 : nat}(moduleinst, `EXPORT`_export{name#5649, externidx#5427}(name, `FUNC`_externidx{funcidx#2843}(x))) = {`NAME`{name#5651} name, `ADDR`{externaddr#5} `FUNC`_externaddr{funcaddr#19}(moduleinst.`FUNCS`_moduleinst{`funcaddr*#5`}[x!`%`_idx{i#47207}.0])} +[check_dims] _ moduleinst +DecD allocexports(moduleinst : moduleinst, export*) : exportinst* +[visit_id moduleinst] not free +[visit_id _] not free +[check_dims] export moduleinst +[visit_exp moduleinst] +[visit_id moduleinst] +[visit_exp export*{export <- `export*`}] +[scope_enter export] +[visit_exp export] +[visit_id export] not free +[visit_id export] not free +[scope_exit export] +[visit_exp `export*`] +[visit_id export*] no dims +[visit_id export*] +[visit_exp $allocexport(moduleinst, export)*{export <- `export*`}] +[scope_enter export] +[visit_exp $allocexport(moduleinst, export)] +[visit_exp moduleinst] +[visit_id moduleinst] not free +[visit_exp export] +[visit_id export] not free +[visit_id export] not free +[scope_exit export] +[visit_exp `export*`] +[visit_id export*] not free +[visit_id export*] no dims +=> + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexports{moduleinst : moduleinst, `export*` : export*}(moduleinst, export*{export <- `export*`}) = $allocexport(moduleinst, export)*{export <- `export*`} +[check_dims] _ module store +DecD allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) +[visit_id store] not free +[visit_id module] not free +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[check_dims] aa aa_I byte byte*#2021 da data data*#101 dataaddr*#3 dataaddr*#4 datamode datamode#1985 deftype*#94 deftype*#95 dt ea elem elem*#125 elemaddr*#3 elemaddr*#4 elemmode elemmode#3087 elemtype export export*#101 exportinst*#1 exportinst*#2 expr#4459 expr#4477 expr#4495 expr#4497 expr*#3087 expr_E expr_F expr_G expr_T externaddr fa fa_I func func*#101 funcaddr*#6 funcaddr*#7 funcinst*#14 ga ga_I global global*#125 globaladdr*#4 globaladdr*#5 globaltype globaltype#2179 i#47295 i_F import import*#101 local local*#1351 local*#1353 ma ma_I mem mem*#125 memaddr*#5 memaddr*#6 memtype memtype#634 module moduleinst ref_E ref_T reftype#3705 s s_1 s_2 s_3 s_4 s_5 s_6 s_7 start start?#101 ta ta_I table table*#125 tableaddr*#5 tableaddr*#6 tabletype tabletype#998 tag tag*#101 tagaddr*#5 tagaddr*#6 tagtype tagtype#260 type type*#101 typeidx#1808 typeidx#1810 val_G x xi +[visit_exp s] +[visit_id s] +[visit_exp module] +[visit_id module] +[visit_exp externaddr*{externaddr <- `externaddr*`}] +[scope_enter externaddr] +[visit_exp externaddr] +[visit_id externaddr] not free +[visit_id externaddr] not free +[scope_exit externaddr] +[visit_exp `externaddr*`] +[visit_id externaddr*] no dims +[visit_id externaddr*] +[visit_exp val_G*{val_G <- `val_G*`}] +[scope_enter val_G] +[visit_exp val_G] +[visit_id val_G] not free +[visit_id val_G] not free +[scope_exit val_G] +[visit_exp `val_G*`] +[visit_id val_G*] no dims +[visit_id val_G*] +[visit_exp ref_T*{ref_T <- `ref_T*`}] +[scope_enter ref_T] +[visit_exp ref_T] +[visit_id ref_T] not free +[visit_id ref_T] not free +[scope_exit ref_T] +[visit_exp `ref_T*`] +[visit_id ref_T*] no dims +[visit_id ref_T*] +[visit_exp ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}] +[scope_enter ref_E*] +[visit_exp ref_E*{ref_E <- `ref_E*`}] +[scope_enter ref_E] +[visit_exp ref_E] +[visit_id ref_E] not free +[visit_id ref_E] not free +[scope_exit ref_E] +[visit_exp `ref_E*`] +[visit_id ref_E*] not free +[visit_id ref_E*] no dims +[visit_id ref_E*] not free +[visit_id ref_E*] no dims +[scope_exit ref_E*] +[visit_exp `ref_E**`] +[visit_id ref_E**] no dims +[visit_id ref_E**] +[visit_exp (s_7, moduleinst)] +[visit_exp s_7] +[visit_id s_7] +[visit_exp moduleinst] +[visit_id moduleinst] +[visit_exp (module = `MODULE`_module{`type*#101`, `import*#101`, `tag*#101`, `global*#125`, `mem*#125`, `table*#125`, `func*#101`, `data*#101`, `elem*#125`, `start?#101`, `export*#101`}(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*`}))] +[visit_exp module] +[visit_id module] not free +[visit_exp `MODULE`_module{`type*#101`, `import*#101`, `tag*#101`, `global*#125`, `mem*#125`, `table*#125`, `func*#101`, `data*#101`, `elem*#125`, `start?#101`, `export*#101`}(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*`})] +[visit_exp `type*#101`] +[visit_id type*#101] +[visit_exp `import*#101`] +[visit_id import*#101] +[visit_exp `tag*#101`] +[visit_id tag*#101] +[visit_exp `global*#125`] +[visit_id global*#125] +[visit_exp `mem*#125`] +[visit_id mem*#125] +[visit_exp `table*#125`] +[visit_id table*#125] +[visit_exp `func*#101`] +[visit_id func*#101] +[visit_exp `data*#101`] +[visit_id data*#101] +[visit_exp `elem*#125`] +[visit_id elem*#125] +[visit_exp `start?#101`] +[visit_id start?#101] +[visit_exp `export*#101`] +[visit_id export*#101] +[visit_exp (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*`})] +[visit_exp type*{type <- `type*`}] +[scope_enter type] +[visit_exp type] +[visit_id type] not free +[visit_id type] not free +[scope_exit type] +[visit_exp `type*`] +[visit_id type*] no dims +[visit_id type*] +[visit_exp import*{import <- `import*`}] +[scope_enter import] +[visit_exp import] +[visit_id import] not free +[visit_id import] not free +[scope_exit import] +[visit_exp `import*`] +[visit_id import*] no dims +[visit_id import*] +[visit_exp tag*{tag <- `tag*`}] +[scope_enter tag] +[visit_exp tag] +[visit_id tag] not free +[visit_id tag] not free +[scope_exit tag] +[visit_exp `tag*`] +[visit_id tag*] no dims +[visit_id tag*] +[visit_exp global*{global <- `global*`}] +[scope_enter global] +[visit_exp global] +[visit_id global] not free +[visit_id global] not free +[scope_exit global] +[visit_exp `global*`] +[visit_id global*] no dims +[visit_id global*] +[visit_exp mem*{mem <- `mem*`}] +[scope_enter mem] +[visit_exp mem] +[visit_id mem] not free +[visit_id mem] not free +[scope_exit mem] +[visit_exp `mem*`] +[visit_id mem*] no dims +[visit_id mem*] +[visit_exp table*{table <- `table*`}] +[scope_enter table] +[visit_exp table] +[visit_id table] not free +[visit_id table] not free +[scope_exit table] +[visit_exp `table*`] +[visit_id table*] no dims +[visit_id table*] +[visit_exp func*{func <- `func*`}] +[scope_enter func] +[visit_exp func] +[visit_id func] not free +[visit_id func] not free +[scope_exit func] +[visit_exp `func*`] +[visit_id func*] no dims +[visit_id func*] +[visit_exp data*{data <- `data*`}] +[scope_enter data] +[visit_exp data] +[visit_id data] not free +[visit_id data] not free +[scope_exit data] +[visit_exp `data*`] +[visit_id data*] no dims +[visit_id data*] +[visit_exp elem*{elem <- `elem*`}] +[scope_enter elem] +[visit_exp elem] +[visit_id elem] not free +[visit_id elem] not free +[scope_exit elem] +[visit_exp `elem*`] +[visit_id elem*] no dims +[visit_id elem*] +[visit_exp start?{start <- `start?`}] +[scope_enter start] +[visit_exp start] +[visit_id start] not free +[visit_id start] not free +[scope_exit start] +[visit_exp `start?`] +[visit_id start?] no dims +[visit_id start?] +[visit_exp export*{export <- `export*`}] +[scope_enter export] +[visit_exp export] +[visit_id export] not free +[visit_id export] not free +[scope_exit export] +[visit_exp `export*`] +[visit_id export*] no dims +[visit_id export*] +[visit_exp (tag*{tag <- `tag*`} = `TAG`_tag{tagtype#260}(tagtype)*{tagtype <- `tagtype*`, tagtype#260 <- `tagtype#260*`})] +[visit_exp tag*{tag <- `tag*`}] +[scope_enter tag] +[visit_exp tag] +[visit_id tag] not free +[visit_id tag] not free +[scope_exit tag] +[visit_exp `tag*`] +[visit_id tag*] not free +[visit_id tag*] no dims +[visit_exp `TAG`_tag{tagtype#260}(tagtype)*{tagtype <- `tagtype*`, tagtype#260 <- `tagtype#260*`}] +[scope_enter tagtype] +[scope_enter tagtype#260] +[visit_exp `TAG`_tag{tagtype#260}(tagtype)] +[visit_exp tagtype#260] +[visit_id tagtype#260] not free +[visit_exp (tagtype)] +[visit_exp tagtype] +[visit_id tagtype] not free +[visit_id tagtype] not free +[visit_id tagtype#260] not free +[scope_exit tagtype#260] +[scope_exit tagtype] +[visit_exp `tagtype*`] +[visit_id tagtype*] no dims +[visit_id tagtype*] +[visit_exp `tagtype#260*`] +[visit_id tagtype#260*] no dims +[visit_id tagtype#260*] +[visit_exp (global*{global <- `global*`} = `GLOBAL`_global{globaltype#2179, expr#4459}(globaltype, expr_G)*{expr#4459 <- `expr#4459*`, expr_G <- `expr_G*`, globaltype <- `globaltype*`, globaltype#2179 <- `globaltype#2179*`})] +[visit_exp global*{global <- `global*`}] +[scope_enter global] +[visit_exp global] +[visit_id global] not free +[visit_id global] not free +[scope_exit global] +[visit_exp `global*`] +[visit_id global*] not free +[visit_id global*] no dims +[visit_exp `GLOBAL`_global{globaltype#2179, expr#4459}(globaltype, expr_G)*{expr#4459 <- `expr#4459*`, expr_G <- `expr_G*`, globaltype <- `globaltype*`, globaltype#2179 <- `globaltype#2179*`}] +[scope_enter expr#4459] +[scope_enter expr_G] +[scope_enter globaltype] +[scope_enter globaltype#2179] +[visit_exp `GLOBAL`_global{globaltype#2179, expr#4459}(globaltype, expr_G)] +[visit_exp globaltype#2179] +[visit_id globaltype#2179] not free +[visit_exp expr#4459] +[visit_id expr#4459] not free +[visit_exp (globaltype, expr_G)] +[visit_exp globaltype] +[visit_id globaltype] not free +[visit_exp expr_G] +[visit_id expr_G] not free +[visit_id expr#4459] not free +[visit_id expr_G] not free +[visit_id globaltype] not free +[visit_id globaltype#2179] not free +[scope_exit globaltype#2179] +[scope_exit globaltype] +[scope_exit expr_G] +[scope_exit expr#4459] +[visit_exp `expr#4459*`] +[visit_id expr#4459*] no dims +[visit_id expr#4459*] +[visit_exp `expr_G*`] +[visit_id expr_G*] no dims +[visit_id expr_G*] +[visit_exp `globaltype*`] +[visit_id globaltype*] no dims +[visit_id globaltype*] +[visit_exp `globaltype#2179*`] +[visit_id globaltype#2179*] no dims +[visit_id globaltype#2179*] +[visit_exp (mem*{mem <- `mem*`} = `MEMORY`_mem{memtype#634}(memtype)*{memtype <- `memtype*`, memtype#634 <- `memtype#634*`})] +[visit_exp mem*{mem <- `mem*`}] +[scope_enter mem] +[visit_exp mem] +[visit_id mem] not free +[visit_id mem] not free +[scope_exit mem] +[visit_exp `mem*`] +[visit_id mem*] not free +[visit_id mem*] no dims +[visit_exp `MEMORY`_mem{memtype#634}(memtype)*{memtype <- `memtype*`, memtype#634 <- `memtype#634*`}] +[scope_enter memtype] +[scope_enter memtype#634] +[visit_exp `MEMORY`_mem{memtype#634}(memtype)] +[visit_exp memtype#634] +[visit_id memtype#634] not free +[visit_exp (memtype)] +[visit_exp memtype] +[visit_id memtype] not free +[visit_id memtype] not free +[visit_id memtype#634] not free +[scope_exit memtype#634] +[scope_exit memtype] +[visit_exp `memtype*`] +[visit_id memtype*] no dims +[visit_id memtype*] +[visit_exp `memtype#634*`] +[visit_id memtype#634*] no dims +[visit_id memtype#634*] +[visit_exp (table*{table <- `table*`} = `TABLE`_table{tabletype#998, expr#4477}(tabletype, expr_T)*{expr#4477 <- `expr#4477*`, expr_T <- `expr_T*`, tabletype <- `tabletype*`, tabletype#998 <- `tabletype#998*`})] +[visit_exp table*{table <- `table*`}] +[scope_enter table] +[visit_exp table] +[visit_id table] not free +[visit_id table] not free +[scope_exit table] +[visit_exp `table*`] +[visit_id table*] not free +[visit_id table*] no dims +[visit_exp `TABLE`_table{tabletype#998, expr#4477}(tabletype, expr_T)*{expr#4477 <- `expr#4477*`, expr_T <- `expr_T*`, tabletype <- `tabletype*`, tabletype#998 <- `tabletype#998*`}] +[scope_enter expr#4477] +[scope_enter expr_T] +[scope_enter tabletype] +[scope_enter tabletype#998] +[visit_exp `TABLE`_table{tabletype#998, expr#4477}(tabletype, expr_T)] +[visit_exp tabletype#998] +[visit_id tabletype#998] not free +[visit_exp expr#4477] +[visit_id expr#4477] not free +[visit_exp (tabletype, expr_T)] +[visit_exp tabletype] +[visit_id tabletype] not free +[visit_exp expr_T] +[visit_id expr_T] not free +[visit_id expr#4477] not free +[visit_id expr_T] not free +[visit_id tabletype] not free +[visit_id tabletype#998] not free +[scope_exit tabletype#998] +[scope_exit tabletype] +[scope_exit expr_T] +[scope_exit expr#4477] +[visit_exp `expr#4477*`] +[visit_id expr#4477*] no dims +[visit_id expr#4477*] +[visit_exp `expr_T*`] +[visit_id expr_T*] no dims +[visit_id expr_T*] +[visit_exp `tabletype*`] +[visit_id tabletype*] no dims +[visit_id tabletype*] +[visit_exp `tabletype#998*`] +[visit_id tabletype#998*] no dims +[visit_id tabletype#998*] +[visit_exp (func*{func <- `func*`} = `FUNC`_func{typeidx#1808, `local*#1351`, expr#4495}(x, local*{local <- `local*`}, expr_F)*{expr#4495 <- `expr#4495*`, expr_F <- `expr_F*`, `local*` <- `local**`, `local*#1351` <- `local*#1351*`, typeidx#1808 <- `typeidx#1808*`, x <- `x*`})] +[visit_exp func*{func <- `func*`}] +[scope_enter func] +[visit_exp func] +[visit_id func] not free +[visit_id func] not free +[scope_exit func] +[visit_exp `func*`] +[visit_id func*] not free +[visit_id func*] no dims +[visit_exp `FUNC`_func{typeidx#1808, `local*#1351`, expr#4495}(x, local*{local <- `local*`}, expr_F)*{expr#4495 <- `expr#4495*`, expr_F <- `expr_F*`, `local*` <- `local**`, `local*#1351` <- `local*#1351*`, typeidx#1808 <- `typeidx#1808*`, x <- `x*`}] +[scope_enter expr#4495] +[scope_enter expr_F] +[scope_enter local*] +[scope_enter local*#1351] +[scope_enter typeidx#1808] +[scope_enter x] +[visit_exp `FUNC`_func{typeidx#1808, `local*#1351`, expr#4495}(x, local*{local <- `local*`}, expr_F)] +[visit_exp typeidx#1808] +[visit_id typeidx#1808] not free +[visit_exp `local*#1351`] +[visit_id local*#1351] not free +[visit_exp expr#4495] +[visit_id expr#4495] not free +[visit_exp (x, local*{local <- `local*`}, expr_F)] +[visit_exp x] +[visit_id x] not free +[visit_exp local*{local <- `local*`}] +[scope_enter local] +[visit_exp local] +[visit_id local] not free +[visit_id local] not free +[scope_exit local] +[visit_exp `local*`] +[visit_id local*] not free +[visit_id local*] no dims +[visit_exp expr_F] +[visit_id expr_F] not free +[visit_id expr#4495] not free +[visit_id expr_F] not free +[visit_id local*] not free +[visit_id local*] no dims +[visit_id local*#1351] not free +[visit_id typeidx#1808] not free +[visit_id x] not free +[scope_exit x] +[scope_exit typeidx#1808] +[scope_exit local*#1351] +[scope_exit local*] +[scope_exit expr_F] +[scope_exit expr#4495] +[visit_exp `expr#4495*`] +[visit_id expr#4495*] no dims +[visit_id expr#4495*] +[visit_exp `expr_F*`] +[visit_id expr_F*] no dims +[visit_id expr_F*] +[visit_exp `local**`] +[visit_id local**] no dims +[visit_id local**] +[visit_exp `local*#1351*`] +[visit_id local*#1351*] no dims +[visit_id local*#1351*] +[visit_exp `typeidx#1808*`] +[visit_id typeidx#1808*] no dims +[visit_id typeidx#1808*] +[visit_exp `x*`] +[visit_id x*] no dims +[visit_id x*] +[visit_exp (data*{data <- `data*`} = `DATA`_data{`byte*#2021`, datamode#1985}(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, `byte*#2021` <- `byte*#2021*`, datamode <- `datamode*`, datamode#1985 <- `datamode#1985*`})] +[visit_exp data*{data <- `data*`}] +[scope_enter data] +[visit_exp data] +[visit_id data] not free +[visit_id data] not free +[scope_exit data] +[visit_exp `data*`] +[visit_id data*] not free +[visit_id data*] no dims +[visit_exp `DATA`_data{`byte*#2021`, datamode#1985}(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, `byte*#2021` <- `byte*#2021*`, datamode <- `datamode*`, datamode#1985 <- `datamode#1985*`}] +[scope_enter byte*] +[scope_enter byte*#2021] +[scope_enter datamode] +[scope_enter datamode#1985] +[visit_exp `DATA`_data{`byte*#2021`, datamode#1985}(byte*{byte <- `byte*`}, datamode)] +[visit_exp `byte*#2021`] +[visit_id byte*#2021] not free +[visit_exp datamode#1985] +[visit_id datamode#1985] not free +[visit_exp (byte*{byte <- `byte*`}, datamode)] +[visit_exp byte*{byte <- `byte*`}] +[scope_enter byte] +[visit_exp byte] +[visit_id byte] not free +[visit_id byte] not free +[scope_exit byte] +[visit_exp `byte*`] +[visit_id byte*] not free +[visit_id byte*] no dims +[visit_exp datamode] +[visit_id datamode] not free +[visit_id byte*] not free +[visit_id byte*] no dims +[visit_id byte*#2021] not free +[visit_id datamode] not free +[visit_id datamode#1985] not free +[scope_exit datamode#1985] +[scope_exit datamode] +[scope_exit byte*#2021] +[scope_exit byte*] +[visit_exp `byte**`] +[visit_id byte**] no dims +[visit_id byte**] +[visit_exp `byte*#2021*`] +[visit_id byte*#2021*] no dims +[visit_id byte*#2021*] +[visit_exp `datamode*`] +[visit_id datamode*] no dims +[visit_id datamode*] +[visit_exp `datamode#1985*`] +[visit_id datamode#1985*] no dims +[visit_id datamode#1985*] +[visit_exp (elem*{elem <- `elem*`} = `ELEM`_elem{reftype#3705, `expr*#3087`, elemmode#3087}(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemmode#3087 <- `elemmode#3087*`, elemtype <- `elemtype*`, `expr*#3087` <- `expr*#3087*`, `expr_E*` <- `expr_E**`, reftype#3705 <- `reftype#3705*`})] +[visit_exp elem*{elem <- `elem*`}] +[scope_enter elem] +[visit_exp elem] +[visit_id elem] not free +[visit_id elem] not free +[scope_exit elem] +[visit_exp `elem*`] +[visit_id elem*] not free +[visit_id elem*] no dims +[visit_exp `ELEM`_elem{reftype#3705, `expr*#3087`, elemmode#3087}(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemmode#3087 <- `elemmode#3087*`, elemtype <- `elemtype*`, `expr*#3087` <- `expr*#3087*`, `expr_E*` <- `expr_E**`, reftype#3705 <- `reftype#3705*`}] +[scope_enter elemmode] +[scope_enter elemmode#3087] +[scope_enter elemtype] +[scope_enter expr*#3087] +[scope_enter expr_E*] +[scope_enter reftype#3705] +[visit_exp `ELEM`_elem{reftype#3705, `expr*#3087`, elemmode#3087}(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)] +[visit_exp reftype#3705] +[visit_id reftype#3705] not free +[visit_exp `expr*#3087`] +[visit_id expr*#3087] not free +[visit_exp elemmode#3087] +[visit_id elemmode#3087] not free +[visit_exp (elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)] +[visit_exp elemtype] +[visit_id elemtype] not free +[visit_exp expr_E*{expr_E <- `expr_E*`}] +[scope_enter expr_E] +[visit_exp expr_E] +[visit_id expr_E] not free +[visit_id expr_E] not free +[scope_exit expr_E] +[visit_exp `expr_E*`] +[visit_id expr_E*] not free +[visit_id expr_E*] no dims +[visit_exp elemmode] +[visit_id elemmode] not free +[visit_id elemmode] not free +[visit_id elemmode#3087] not free +[visit_id elemtype] not free +[visit_id expr*#3087] not free +[visit_id expr_E*] not free +[visit_id expr_E*] no dims +[visit_id reftype#3705] not free +[scope_exit reftype#3705] +[scope_exit expr_E*] +[scope_exit expr*#3087] +[scope_exit elemtype] +[scope_exit elemmode#3087] +[scope_exit elemmode] +[visit_exp `elemmode*`] +[visit_id elemmode*] no dims +[visit_id elemmode*] +[visit_exp `elemmode#3087*`] +[visit_id elemmode#3087*] no dims +[visit_id elemmode#3087*] +[visit_exp `elemtype*`] +[visit_id elemtype*] no dims +[visit_id elemtype*] +[visit_exp `expr*#3087*`] +[visit_id expr*#3087*] no dims +[visit_id expr*#3087*] +[visit_exp `expr_E**`] +[visit_id expr_E**] no dims +[visit_id expr_E**] +[visit_exp `reftype#3705*`] +[visit_id reftype#3705*] no dims +[visit_id reftype#3705*] +[visit_exp (aa_I*{aa_I <- `aa_I*`} = $tagsxa(externaddr*{externaddr <- `externaddr*`}))] +[visit_exp aa_I*{aa_I <- `aa_I*`}] +[scope_enter aa_I] +[visit_exp aa_I] +[visit_id aa_I] not free +[visit_id aa_I] not free +[scope_exit aa_I] +[visit_exp `aa_I*`] +[visit_id aa_I*] no dims +[visit_id aa_I*] +[visit_exp $tagsxa(externaddr*{externaddr <- `externaddr*`})] +[visit_exp externaddr*{externaddr <- `externaddr*`}] +[scope_enter externaddr] +[visit_exp externaddr] +[visit_id externaddr] not free +[visit_id externaddr] not free +[scope_exit externaddr] +[visit_exp `externaddr*`] +[visit_id externaddr*] not free +[visit_id externaddr*] no dims +[visit_exp (ga_I*{ga_I <- `ga_I*`} = $globalsxa(externaddr*{externaddr <- `externaddr*`}))] +[visit_exp ga_I*{ga_I <- `ga_I*`}] +[scope_enter ga_I] +[visit_exp ga_I] +[visit_id ga_I] not free +[visit_id ga_I] not free +[scope_exit ga_I] +[visit_exp `ga_I*`] +[visit_id ga_I*] no dims +[visit_id ga_I*] +[visit_exp $globalsxa(externaddr*{externaddr <- `externaddr*`})] +[visit_exp externaddr*{externaddr <- `externaddr*`}] +[scope_enter externaddr] +[visit_exp externaddr] +[visit_id externaddr] not free +[visit_id externaddr] not free +[scope_exit externaddr] +[visit_exp `externaddr*`] +[visit_id externaddr*] not free +[visit_id externaddr*] no dims +[visit_exp (ma_I*{ma_I <- `ma_I*`} = $memsxa(externaddr*{externaddr <- `externaddr*`}))] +[visit_exp ma_I*{ma_I <- `ma_I*`}] +[scope_enter ma_I] +[visit_exp ma_I] +[visit_id ma_I] not free +[visit_id ma_I] not free +[scope_exit ma_I] +[visit_exp `ma_I*`] +[visit_id ma_I*] no dims +[visit_id ma_I*] +[visit_exp $memsxa(externaddr*{externaddr <- `externaddr*`})] +[visit_exp externaddr*{externaddr <- `externaddr*`}] +[scope_enter externaddr] +[visit_exp externaddr] +[visit_id externaddr] not free +[visit_id externaddr] not free +[scope_exit externaddr] +[visit_exp `externaddr*`] +[visit_id externaddr*] not free +[visit_id externaddr*] no dims +[visit_exp (ta_I*{ta_I <- `ta_I*`} = $tablesxa(externaddr*{externaddr <- `externaddr*`}))] +[visit_exp ta_I*{ta_I <- `ta_I*`}] +[scope_enter ta_I] +[visit_exp ta_I] +[visit_id ta_I] not free +[visit_id ta_I] not free +[scope_exit ta_I] +[visit_exp `ta_I*`] +[visit_id ta_I*] no dims +[visit_id ta_I*] +[visit_exp $tablesxa(externaddr*{externaddr <- `externaddr*`})] +[visit_exp externaddr*{externaddr <- `externaddr*`}] +[scope_enter externaddr] +[visit_exp externaddr] +[visit_id externaddr] not free +[visit_id externaddr] not free +[scope_exit externaddr] +[visit_exp `externaddr*`] +[visit_id externaddr*] not free +[visit_id externaddr*] no dims +[visit_exp (fa_I*{fa_I <- `fa_I*`} = $funcsxa(externaddr*{externaddr <- `externaddr*`}))] +[visit_exp fa_I*{fa_I <- `fa_I*`}] +[scope_enter fa_I] +[visit_exp fa_I] +[visit_id fa_I] not free +[visit_id fa_I] not free +[scope_exit fa_I] +[visit_exp `fa_I*`] +[visit_id fa_I*] no dims +[visit_id fa_I*] +[visit_exp $funcsxa(externaddr*{externaddr <- `externaddr*`})] +[visit_exp externaddr*{externaddr <- `externaddr*`}] +[scope_enter externaddr] +[visit_exp externaddr] +[visit_id externaddr] not free +[visit_id externaddr] not free +[scope_exit externaddr] +[visit_exp `externaddr*`] +[visit_id externaddr*] not free +[visit_id externaddr*] no dims +[visit_exp (dt*{dt <- `dt*`} = $alloctypes(type*{type <- `type*`}))] +[visit_exp dt*{dt <- `dt*`}] +[scope_enter dt] +[visit_exp dt] +[visit_id dt] not free +[visit_id dt] not free +[scope_exit dt] +[visit_exp `dt*`] +[visit_id dt*] no dims +[visit_id dt*] +[visit_exp $alloctypes(type*{type <- `type*`})] +[visit_exp type*{type <- `type*`}] +[scope_enter type] +[visit_exp type] +[visit_id type] not free +[visit_id type] not free +[scope_exit type] +[visit_exp `type*`] +[visit_id type*] not free +[visit_id type*] no dims +[visit_exp (fa*{fa <- `fa*`} = (|s.`FUNCS`_store{`funcinst*#14`}| + i_F)^(i_F<|func*{func <- `func*`}|){`funcinst*#14` <- `funcinst*#14*`})] +[visit_exp fa*{fa <- `fa*`}] +[scope_enter fa] +[visit_exp fa] +[visit_id fa] not free +[visit_id fa] not free +[scope_exit fa] +[visit_exp `fa*`] +[visit_id fa*] no dims +[visit_id fa*] +[visit_exp (|s.`FUNCS`_store{`funcinst*#14`}| + i_F)^(i_F<|func*{func <- `func*`}|){`funcinst*#14` <- `funcinst*#14*`}] +[scope_enter i_F] +[scope_enter funcinst*#14] +[visit_exp (|s.`FUNCS`_store{`funcinst*#14`}| + i_F)] +[visit_exp |s.`FUNCS`_store{`funcinst*#14`}|] +[visit_exp s.`FUNCS`_store{`funcinst*#14`}] +[visit_exp s] +[visit_id s] not free +[visit_exp `funcinst*#14`] +[visit_id funcinst*#14] not free +[visit_exp i_F] +[visit_id i_F] +[visit_id i_F] not free +[visit_id funcinst*#14] not free +[scope_exit funcinst*#14] +[scope_exit i_F] +[visit_exp |func*{func <- `func*`}|] +[visit_exp func*{func <- `func*`}] +[scope_enter func] +[visit_exp func] +[visit_id func] not free +[visit_id func] not free +[scope_exit func] +[visit_exp `func*`] +[visit_id func*] not free +[visit_id func*] no dims +[visit_exp `funcinst*#14*`] +[visit_id funcinst*#14*] no dims +[visit_id funcinst*#14*] +[visit_exp ((s_1, aa*{aa <- `aa*`}) = $alloctags(s, $subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tagtype <- `tagtype*`}))] +[visit_exp (s_1, aa*{aa <- `aa*`})] +[visit_exp s_1] +[visit_id s_1] +[visit_exp aa*{aa <- `aa*`}] +[scope_enter aa] +[visit_exp aa] +[visit_id aa] not free +[visit_id aa] not free +[scope_exit aa] +[visit_exp `aa*`] +[visit_id aa*] no dims +[visit_id aa*] +[visit_exp $alloctags(s, $subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tagtype <- `tagtype*`})] +[visit_exp s] +[visit_id s] not free +[visit_exp $subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tagtype <- `tagtype*`}] +[scope_enter tagtype] +[visit_exp $subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})] +[visit_exp tagtype] +[visit_id tagtype] not free +[visit_exp (dt : deftype <: typeuse)*{dt <- `dt*`}] +[scope_enter dt] +[visit_exp (dt : deftype <: typeuse)] +[visit_exp dt] +[visit_id dt] not free +[visit_id dt] not free +[scope_exit dt] +[visit_exp `dt*`] +[visit_id dt*] not free +[visit_id dt*] no dims +[visit_id tagtype] not free +[scope_exit tagtype] +[visit_exp `tagtype*`] +[visit_id tagtype*] not free +[visit_id tagtype*] no dims +[visit_exp ((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*`}))] +[visit_exp (s_2, ga*{ga <- `ga*`})] +[visit_exp s_2] +[visit_id s_2] +[visit_exp ga*{ga <- `ga*`}] +[scope_enter ga] +[visit_exp ga] +[visit_id ga] not free +[visit_id ga] not free +[scope_exit ga] +[visit_exp `ga*`] +[visit_id ga*] no dims +[visit_id ga*] +[visit_exp $allocglobals(s_1, $subst_all_globaltype(globaltype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{globaltype <- `globaltype*`}, val_G*{val_G <- `val_G*`})] +[visit_exp s_1] +[visit_id s_1] not free +[visit_exp $subst_all_globaltype(globaltype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{globaltype <- `globaltype*`}] +[scope_enter globaltype] +[visit_exp $subst_all_globaltype(globaltype, (dt : deftype <: typeuse)*{dt <- `dt*`})] +[visit_exp globaltype] +[visit_id globaltype] not free +[visit_exp (dt : deftype <: typeuse)*{dt <- `dt*`}] +[scope_enter dt] +[visit_exp (dt : deftype <: typeuse)] +[visit_exp dt] +[visit_id dt] not free +[visit_id dt] not free +[scope_exit dt] +[visit_exp `dt*`] +[visit_id dt*] not free +[visit_id dt*] no dims +[visit_id globaltype] not free +[scope_exit globaltype] +[visit_exp `globaltype*`] +[visit_id globaltype*] not free +[visit_id globaltype*] no dims +[visit_exp val_G*{val_G <- `val_G*`}] +[scope_enter val_G] +[visit_exp val_G] +[visit_id val_G] not free +[visit_id val_G] not free +[scope_exit val_G] +[visit_exp `val_G*`] +[visit_id val_G*] not free +[visit_id val_G*] no dims +[visit_exp ((s_3, ma*{ma <- `ma*`}) = $allocmems(s_2, $subst_all_memtype(memtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{memtype <- `memtype*`}))] +[visit_exp (s_3, ma*{ma <- `ma*`})] +[visit_exp s_3] +[visit_id s_3] +[visit_exp ma*{ma <- `ma*`}] +[scope_enter ma] +[visit_exp ma] +[visit_id ma] not free +[visit_id ma] not free +[scope_exit ma] +[visit_exp `ma*`] +[visit_id ma*] no dims +[visit_id ma*] +[visit_exp $allocmems(s_2, $subst_all_memtype(memtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{memtype <- `memtype*`})] +[visit_exp s_2] +[visit_id s_2] not free +[visit_exp $subst_all_memtype(memtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{memtype <- `memtype*`}] +[scope_enter memtype] +[visit_exp $subst_all_memtype(memtype, (dt : deftype <: typeuse)*{dt <- `dt*`})] +[visit_exp memtype] +[visit_id memtype] not free +[visit_exp (dt : deftype <: typeuse)*{dt <- `dt*`}] +[scope_enter dt] +[visit_exp (dt : deftype <: typeuse)] +[visit_exp dt] +[visit_id dt] not free +[visit_id dt] not free +[scope_exit dt] +[visit_exp `dt*`] +[visit_id dt*] not free +[visit_id dt*] no dims +[visit_id memtype] not free +[scope_exit memtype] +[visit_exp `memtype*`] +[visit_id memtype*] not free +[visit_id memtype*] no dims +[visit_exp ((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*`}))] +[visit_exp (s_4, ta*{ta <- `ta*`})] +[visit_exp s_4] +[visit_id s_4] +[visit_exp ta*{ta <- `ta*`}] +[scope_enter ta] +[visit_exp ta] +[visit_id ta] not free +[visit_id ta] not free +[scope_exit ta] +[visit_exp `ta*`] +[visit_id ta*] no dims +[visit_id ta*] +[visit_exp $alloctables(s_3, $subst_all_tabletype(tabletype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tabletype <- `tabletype*`}, ref_T*{ref_T <- `ref_T*`})] +[visit_exp s_3] +[visit_id s_3] not free +[visit_exp $subst_all_tabletype(tabletype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tabletype <- `tabletype*`}] +[scope_enter tabletype] +[visit_exp $subst_all_tabletype(tabletype, (dt : deftype <: typeuse)*{dt <- `dt*`})] +[visit_exp tabletype] +[visit_id tabletype] not free +[visit_exp (dt : deftype <: typeuse)*{dt <- `dt*`}] +[scope_enter dt] +[visit_exp (dt : deftype <: typeuse)] +[visit_exp dt] +[visit_id dt] not free +[visit_id dt] not free +[scope_exit dt] +[visit_exp `dt*`] +[visit_id dt*] not free +[visit_id dt*] no dims +[visit_id tabletype] not free +[scope_exit tabletype] +[visit_exp `tabletype*`] +[visit_id tabletype*] not free +[visit_id tabletype*] no dims +[visit_exp ref_T*{ref_T <- `ref_T*`}] +[scope_enter ref_T] +[visit_exp ref_T] +[visit_id ref_T] not free +[visit_id ref_T] not free +[scope_exit ref_T] +[visit_exp `ref_T*`] +[visit_id ref_T*] not free +[visit_id ref_T*] no dims +[visit_exp ((s_5, da*{da <- `da*`}) = $allocdatas(s_4, `OK`_datatype^|data*{data <- `data*`}|{}, byte*{byte <- `byte*`}*{`byte*` <- `byte**`}))] +[visit_exp (s_5, da*{da <- `da*`})] +[visit_exp s_5] +[visit_id s_5] +[visit_exp da*{da <- `da*`}] +[scope_enter da] +[visit_exp da] +[visit_id da] not free +[visit_id da] not free +[scope_exit da] +[visit_exp `da*`] +[visit_id da*] no dims +[visit_id da*] +[visit_exp $allocdatas(s_4, `OK`_datatype^|data*{data <- `data*`}|{}, byte*{byte <- `byte*`}*{`byte*` <- `byte**`})] +[visit_exp s_4] +[visit_id s_4] not free +[visit_exp `OK`_datatype^|data*{data <- `data*`}|{}] +[visit_exp `OK`_datatype] +[visit_exp ()] +[visit_exp |data*{data <- `data*`}|] +[visit_exp data*{data <- `data*`}] +[scope_enter data] +[visit_exp data] +[visit_id data] not free +[visit_id data] not free +[scope_exit data] +[visit_exp `data*`] +[visit_id data*] not free +[visit_id data*] no dims +[visit_exp byte*{byte <- `byte*`}*{`byte*` <- `byte**`}] +[scope_enter byte*] +[visit_exp byte*{byte <- `byte*`}] +[scope_enter byte] +[visit_exp byte] +[visit_id byte] not free +[visit_id byte] not free +[scope_exit byte] +[visit_exp `byte*`] +[visit_id byte*] not free +[visit_id byte*] no dims +[visit_id byte*] not free +[visit_id byte*] no dims +[scope_exit byte*] +[visit_exp `byte**`] +[visit_id byte**] not free +[visit_id byte**] no dims +[visit_exp ((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**`}))] +[visit_exp (s_6, ea*{ea <- `ea*`})] +[visit_exp s_6] +[visit_id s_6] +[visit_exp ea*{ea <- `ea*`}] +[scope_enter ea] +[visit_exp ea] +[visit_id ea] not free +[visit_id ea] not free +[scope_exit ea] +[visit_exp `ea*`] +[visit_id ea*] no dims +[visit_id ea*] +[visit_exp $allocelems(s_5, $subst_all_reftype(elemtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{elemtype <- `elemtype*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`})] +[visit_exp s_5] +[visit_id s_5] not free +[visit_exp $subst_all_reftype(elemtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{elemtype <- `elemtype*`}] +[scope_enter elemtype] +[visit_exp $subst_all_reftype(elemtype, (dt : deftype <: typeuse)*{dt <- `dt*`})] +[visit_exp elemtype] +[visit_id elemtype] not free +[visit_exp (dt : deftype <: typeuse)*{dt <- `dt*`}] +[scope_enter dt] +[visit_exp (dt : deftype <: typeuse)] +[visit_exp dt] +[visit_id dt] not free +[visit_id dt] not free +[scope_exit dt] +[visit_exp `dt*`] +[visit_id dt*] not free +[visit_id dt*] no dims +[visit_id elemtype] not free +[scope_exit elemtype] +[visit_exp `elemtype*`] +[visit_id elemtype*] not free +[visit_id elemtype*] no dims +[visit_exp ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}] +[scope_enter ref_E*] +[visit_exp ref_E*{ref_E <- `ref_E*`}] +[scope_enter ref_E] +[visit_exp ref_E] +[visit_id ref_E] not free +[visit_id ref_E] not free +[scope_exit ref_E] +[visit_exp `ref_E*`] +[visit_id ref_E*] not free +[visit_id ref_E*] no dims +[visit_id ref_E*] not free +[visit_id ref_E*] no dims +[scope_exit ref_E*] +[visit_exp `ref_E**`] +[visit_id ref_E**] not free +[visit_id ref_E**] no dims +[visit_exp ((s_7, fa*{fa <- `fa*`}) = $allocfuncs(s_6, dt*{dt <- `dt*`}[x!`%`_idx{i#47295}.0]*{i#47295 <- `i#47295*`, x <- `x*`}, `FUNC`_funccode{typeidx#1810, `local*#1353`, expr#4497}(x, local*{local <- `local*`}, expr_F)*{expr#4497 <- `expr#4497*`, expr_F <- `expr_F*`, `local*` <- `local**`, `local*#1353` <- `local*#1353*`, typeidx#1810 <- `typeidx#1810*`, x <- `x*`}, moduleinst^|func*{func <- `func*`}|{}))] +[visit_exp (s_7, fa*{fa <- `fa*`})] +[visit_exp s_7] +[visit_id s_7] not free +[visit_exp fa*{fa <- `fa*`}] +[scope_enter fa] +[visit_exp fa] +[visit_id fa] not free +[visit_id fa] not free +[scope_exit fa] +[visit_exp `fa*`] +[visit_id fa*] not free +[visit_id fa*] no dims +[visit_exp $allocfuncs(s_6, dt*{dt <- `dt*`}[x!`%`_idx{i#47295}.0]*{i#47295 <- `i#47295*`, x <- `x*`}, `FUNC`_funccode{typeidx#1810, `local*#1353`, expr#4497}(x, local*{local <- `local*`}, expr_F)*{expr#4497 <- `expr#4497*`, expr_F <- `expr_F*`, `local*` <- `local**`, `local*#1353` <- `local*#1353*`, typeidx#1810 <- `typeidx#1810*`, x <- `x*`}, moduleinst^|func*{func <- `func*`}|{})] +[visit_exp s_6] +[visit_id s_6] not free +[visit_exp dt*{dt <- `dt*`}[x!`%`_idx{i#47295}.0]*{i#47295 <- `i#47295*`, x <- `x*`}] +[scope_enter i#47295] +[scope_enter x] +[visit_exp dt*{dt <- `dt*`}[x!`%`_idx{i#47295}.0]] +[visit_exp dt*{dt <- `dt*`}] +[scope_enter dt] +[visit_exp dt] +[visit_id dt] not free +[visit_id dt] not free +[scope_exit dt] +[visit_exp `dt*`] +[visit_id dt*] not free +[visit_id dt*] no dims +[visit_exp x!`%`_idx{i#47295}.0] +[visit_exp x!`%`_idx{i#47295}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#47295] +[visit_id i#47295] not free +[visit_id i#47295] not free +[visit_id x] not free +[scope_exit x] +[scope_exit i#47295] +[visit_exp `i#47295*`] +[visit_id i#47295*] no dims +[visit_id i#47295*] +[visit_exp `x*`] +[visit_id x*] not free +[visit_id x*] no dims +[visit_exp `FUNC`_funccode{typeidx#1810, `local*#1353`, expr#4497}(x, local*{local <- `local*`}, expr_F)*{expr#4497 <- `expr#4497*`, expr_F <- `expr_F*`, `local*` <- `local**`, `local*#1353` <- `local*#1353*`, typeidx#1810 <- `typeidx#1810*`, x <- `x*`}] +[scope_enter expr#4497] +[scope_enter expr_F] +[scope_enter local*] +[scope_enter local*#1353] +[scope_enter typeidx#1810] +[scope_enter x] +[visit_exp `FUNC`_funccode{typeidx#1810, `local*#1353`, expr#4497}(x, local*{local <- `local*`}, expr_F)] +[visit_exp typeidx#1810] +[visit_id typeidx#1810] not free +[visit_exp `local*#1353`] +[visit_id local*#1353] not free +[visit_exp expr#4497] +[visit_id expr#4497] not free +[visit_exp (x, local*{local <- `local*`}, expr_F)] +[visit_exp x] +[visit_id x] not free +[visit_exp local*{local <- `local*`}] +[scope_enter local] +[visit_exp local] +[visit_id local] not free +[visit_id local] not free +[scope_exit local] +[visit_exp `local*`] +[visit_id local*] not free +[visit_id local*] no dims +[visit_exp expr_F] +[visit_id expr_F] not free +[visit_id expr#4497] not free +[visit_id expr_F] not free +[visit_id local*] not free +[visit_id local*] no dims +[visit_id local*#1353] not free +[visit_id typeidx#1810] not free +[visit_id x] not free +[scope_exit x] +[scope_exit typeidx#1810] +[scope_exit local*#1353] +[scope_exit local*] +[scope_exit expr_F] +[scope_exit expr#4497] +[visit_exp `expr#4497*`] +[visit_id expr#4497*] no dims +[visit_id expr#4497*] +[visit_exp `expr_F*`] +[visit_id expr_F*] not free +[visit_id expr_F*] no dims +[visit_exp `local**`] +[visit_id local**] not free +[visit_id local**] no dims +[visit_exp `local*#1353*`] +[visit_id local*#1353*] no dims +[visit_id local*#1353*] +[visit_exp `typeidx#1810*`] +[visit_id typeidx#1810*] no dims +[visit_id typeidx#1810*] +[visit_exp `x*`] +[visit_id x*] not free +[visit_id x*] no dims +[visit_exp moduleinst^|func*{func <- `func*`}|{}] +[visit_exp moduleinst] +[visit_id moduleinst] not free +[visit_exp |func*{func <- `func*`}|] +[visit_exp func*{func <- `func*`}] +[scope_enter func] +[visit_exp func] +[visit_id func] not free +[visit_id func] not free +[scope_exit func] +[visit_exp `func*`] +[visit_id func*] not free +[visit_id func*] no dims +[visit_exp (xi*{xi <- `xi*`} = $allocexports({`TYPES`{`deftype*#94`} [], `TAGS`{`tagaddr*#5`} aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, `GLOBALS`{`globaladdr*#4`} ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, `MEMS`{`memaddr*#5`} ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, `TABLES`{`tableaddr*#5`} ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, `FUNCS`{`funcaddr*#6`} fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, `DATAS`{`dataaddr*#3`} [], `ELEMS`{`elemaddr*#3`} [], `EXPORTS`{`exportinst*#1`} []}, export*{export <- `export*`}))] +[visit_exp xi*{xi <- `xi*`}] +[scope_enter xi] +[visit_exp xi] +[visit_id xi] not free +[visit_id xi] not free +[scope_exit xi] +[visit_exp `xi*`] +[visit_id xi*] no dims +[visit_id xi*] +[visit_exp $allocexports({`TYPES`{`deftype*#94`} [], `TAGS`{`tagaddr*#5`} aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, `GLOBALS`{`globaladdr*#4`} ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, `MEMS`{`memaddr*#5`} ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, `TABLES`{`tableaddr*#5`} ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, `FUNCS`{`funcaddr*#6`} fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, `DATAS`{`dataaddr*#3`} [], `ELEMS`{`elemaddr*#3`} [], `EXPORTS`{`exportinst*#1`} []}, export*{export <- `export*`})] +[visit_exp {`TYPES`{`deftype*#94`} [], `TAGS`{`tagaddr*#5`} aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, `GLOBALS`{`globaladdr*#4`} ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, `MEMS`{`memaddr*#5`} ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, `TABLES`{`tableaddr*#5`} ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, `FUNCS`{`funcaddr*#6`} fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, `DATAS`{`dataaddr*#3`} [], `ELEMS`{`elemaddr*#3`} [], `EXPORTS`{`exportinst*#1`} []}] +[visit_exp `deftype*#94`] +[visit_id deftype*#94] +[visit_exp []] +[visit_exp `tagaddr*#5`] +[visit_id tagaddr*#5] +[visit_exp aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}] +[visit_exp aa_I*{aa_I <- `aa_I*`}] +[scope_enter aa_I] +[visit_exp aa_I] +[visit_id aa_I] not free +[visit_id aa_I] not free +[scope_exit aa_I] +[visit_exp `aa_I*`] +[visit_id aa_I*] not free +[visit_id aa_I*] no dims +[visit_exp aa*{aa <- `aa*`}] +[scope_enter aa] +[visit_exp aa] +[visit_id aa] not free +[visit_id aa] not free +[scope_exit aa] +[visit_exp `aa*`] +[visit_id aa*] not free +[visit_id aa*] no dims +[visit_exp `globaladdr*#4`] +[visit_id globaladdr*#4] +[visit_exp ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}] +[visit_exp ga_I*{ga_I <- `ga_I*`}] +[scope_enter ga_I] +[visit_exp ga_I] +[visit_id ga_I] not free +[visit_id ga_I] not free +[scope_exit ga_I] +[visit_exp `ga_I*`] +[visit_id ga_I*] not free +[visit_id ga_I*] no dims +[visit_exp ga*{ga <- `ga*`}] +[scope_enter ga] +[visit_exp ga] +[visit_id ga] not free +[visit_id ga] not free +[scope_exit ga] +[visit_exp `ga*`] +[visit_id ga*] not free +[visit_id ga*] no dims +[visit_exp `memaddr*#5`] +[visit_id memaddr*#5] +[visit_exp ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}] +[visit_exp ma_I*{ma_I <- `ma_I*`}] +[scope_enter ma_I] +[visit_exp ma_I] +[visit_id ma_I] not free +[visit_id ma_I] not free +[scope_exit ma_I] +[visit_exp `ma_I*`] +[visit_id ma_I*] not free +[visit_id ma_I*] no dims +[visit_exp ma*{ma <- `ma*`}] +[scope_enter ma] +[visit_exp ma] +[visit_id ma] not free +[visit_id ma] not free +[scope_exit ma] +[visit_exp `ma*`] +[visit_id ma*] not free +[visit_id ma*] no dims +[visit_exp `tableaddr*#5`] +[visit_id tableaddr*#5] +[visit_exp ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}] +[visit_exp ta_I*{ta_I <- `ta_I*`}] +[scope_enter ta_I] +[visit_exp ta_I] +[visit_id ta_I] not free +[visit_id ta_I] not free +[scope_exit ta_I] +[visit_exp `ta_I*`] +[visit_id ta_I*] not free +[visit_id ta_I*] no dims +[visit_exp ta*{ta <- `ta*`}] +[scope_enter ta] +[visit_exp ta] +[visit_id ta] not free +[visit_id ta] not free +[scope_exit ta] +[visit_exp `ta*`] +[visit_id ta*] not free +[visit_id ta*] no dims +[visit_exp `funcaddr*#6`] +[visit_id funcaddr*#6] +[visit_exp fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}] +[visit_exp fa_I*{fa_I <- `fa_I*`}] +[scope_enter fa_I] +[visit_exp fa_I] +[visit_id fa_I] not free +[visit_id fa_I] not free +[scope_exit fa_I] +[visit_exp `fa_I*`] +[visit_id fa_I*] not free +[visit_id fa_I*] no dims +[visit_exp fa*{fa <- `fa*`}] +[scope_enter fa] +[visit_exp fa] +[visit_id fa] not free +[visit_id fa] not free +[scope_exit fa] +[visit_exp `fa*`] +[visit_id fa*] not free +[visit_id fa*] no dims +[visit_exp `dataaddr*#3`] +[visit_id dataaddr*#3] +[visit_exp []] +[visit_exp `elemaddr*#3`] +[visit_id elemaddr*#3] +[visit_exp []] +[visit_exp `exportinst*#1`] +[visit_id exportinst*#1] +[visit_exp []] +[visit_exp export*{export <- `export*`}] +[scope_enter export] +[visit_exp export] +[visit_id export] not free +[visit_id export] not free +[scope_exit export] +[visit_exp `export*`] +[visit_id export*] not free +[visit_id export*] no dims +[visit_exp (moduleinst = {`TYPES`{`deftype*#95`} dt*{dt <- `dt*`}, `TAGS`{`tagaddr*#6`} aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, `GLOBALS`{`globaladdr*#5`} ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, `MEMS`{`memaddr*#6`} ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, `TABLES`{`tableaddr*#6`} ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, `FUNCS`{`funcaddr*#7`} fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, `DATAS`{`dataaddr*#4`} da*{da <- `da*`}, `ELEMS`{`elemaddr*#4`} ea*{ea <- `ea*`}, `EXPORTS`{`exportinst*#2`} xi*{xi <- `xi*`}})] +[visit_exp moduleinst] +[visit_id moduleinst] not free +[visit_exp {`TYPES`{`deftype*#95`} dt*{dt <- `dt*`}, `TAGS`{`tagaddr*#6`} aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, `GLOBALS`{`globaladdr*#5`} ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, `MEMS`{`memaddr*#6`} ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, `TABLES`{`tableaddr*#6`} ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, `FUNCS`{`funcaddr*#7`} fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, `DATAS`{`dataaddr*#4`} da*{da <- `da*`}, `ELEMS`{`elemaddr*#4`} ea*{ea <- `ea*`}, `EXPORTS`{`exportinst*#2`} xi*{xi <- `xi*`}}] +[visit_exp `deftype*#95`] +[visit_id deftype*#95] +[visit_exp dt*{dt <- `dt*`}] +[scope_enter dt] +[visit_exp dt] +[visit_id dt] not free +[visit_id dt] not free +[scope_exit dt] +[visit_exp `dt*`] +[visit_id dt*] not free +[visit_id dt*] no dims +[visit_exp `tagaddr*#6`] +[visit_id tagaddr*#6] +[visit_exp aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}] +[visit_exp aa_I*{aa_I <- `aa_I*`}] +[scope_enter aa_I] +[visit_exp aa_I] +[visit_id aa_I] not free +[visit_id aa_I] not free +[scope_exit aa_I] +[visit_exp `aa_I*`] +[visit_id aa_I*] not free +[visit_id aa_I*] no dims +[visit_exp aa*{aa <- `aa*`}] +[scope_enter aa] +[visit_exp aa] +[visit_id aa] not free +[visit_id aa] not free +[scope_exit aa] +[visit_exp `aa*`] +[visit_id aa*] not free +[visit_id aa*] no dims +[visit_exp `globaladdr*#5`] +[visit_id globaladdr*#5] +[visit_exp ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}] +[visit_exp ga_I*{ga_I <- `ga_I*`}] +[scope_enter ga_I] +[visit_exp ga_I] +[visit_id ga_I] not free +[visit_id ga_I] not free +[scope_exit ga_I] +[visit_exp `ga_I*`] +[visit_id ga_I*] not free +[visit_id ga_I*] no dims +[visit_exp ga*{ga <- `ga*`}] +[scope_enter ga] +[visit_exp ga] +[visit_id ga] not free +[visit_id ga] not free +[scope_exit ga] +[visit_exp `ga*`] +[visit_id ga*] not free +[visit_id ga*] no dims +[visit_exp `memaddr*#6`] +[visit_id memaddr*#6] +[visit_exp ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}] +[visit_exp ma_I*{ma_I <- `ma_I*`}] +[scope_enter ma_I] +[visit_exp ma_I] +[visit_id ma_I] not free +[visit_id ma_I] not free +[scope_exit ma_I] +[visit_exp `ma_I*`] +[visit_id ma_I*] not free +[visit_id ma_I*] no dims +[visit_exp ma*{ma <- `ma*`}] +[scope_enter ma] +[visit_exp ma] +[visit_id ma] not free +[visit_id ma] not free +[scope_exit ma] +[visit_exp `ma*`] +[visit_id ma*] not free +[visit_id ma*] no dims +[visit_exp `tableaddr*#6`] +[visit_id tableaddr*#6] +[visit_exp ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}] +[visit_exp ta_I*{ta_I <- `ta_I*`}] +[scope_enter ta_I] +[visit_exp ta_I] +[visit_id ta_I] not free +[visit_id ta_I] not free +[scope_exit ta_I] +[visit_exp `ta_I*`] +[visit_id ta_I*] not free +[visit_id ta_I*] no dims +[visit_exp ta*{ta <- `ta*`}] +[scope_enter ta] +[visit_exp ta] +[visit_id ta] not free +[visit_id ta] not free +[scope_exit ta] +[visit_exp `ta*`] +[visit_id ta*] not free +[visit_id ta*] no dims +[visit_exp `funcaddr*#7`] +[visit_id funcaddr*#7] +[visit_exp fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}] +[visit_exp fa_I*{fa_I <- `fa_I*`}] +[scope_enter fa_I] +[visit_exp fa_I] +[visit_id fa_I] not free +[visit_id fa_I] not free +[scope_exit fa_I] +[visit_exp `fa_I*`] +[visit_id fa_I*] not free +[visit_id fa_I*] no dims +[visit_exp fa*{fa <- `fa*`}] +[scope_enter fa] +[visit_exp fa] +[visit_id fa] not free +[visit_id fa] not free +[scope_exit fa] +[visit_exp `fa*`] +[visit_id fa*] not free +[visit_id fa*] no dims +[visit_exp `dataaddr*#4`] +[visit_id dataaddr*#4] +[visit_exp da*{da <- `da*`}] +[scope_enter da] +[visit_exp da] +[visit_id da] not free +[visit_id da] not free +[scope_exit da] +[visit_exp `da*`] +[visit_id da*] not free +[visit_id da*] no dims +[visit_exp `elemaddr*#4`] +[visit_id elemaddr*#4] +[visit_exp ea*{ea <- `ea*`}] +[scope_enter ea] +[visit_exp ea] +[visit_id ea] not free +[visit_id ea] not free +[scope_exit ea] +[visit_exp `ea*`] +[visit_id ea*] not free +[visit_id ea*] no dims +[visit_exp `exportinst*#2`] +[visit_id exportinst*#2] +[visit_exp xi*{xi <- `xi*`}] +[scope_enter xi] +[visit_exp xi] +[visit_id xi] not free +[visit_id xi] not free +[scope_exit xi] +[visit_exp `xi*`] +[visit_id xi*] not free +[visit_id xi*] no dims +=> + ;; ../../../../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*#101` : type*, `import*#101` : import*, `tag*#101` : tag*, `global*#125` : global*, `mem*#125` : mem*, `table*#125` : table*, `func*#101` : func*, `data*#101` : data*, `elem*#125` : elem*, `start?#101` : start?, `export*#101` : export*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `tagtype#260*` : tagtype*, `expr#4459*` : expr*, `expr_G*` : expr*, `globaltype*` : globaltype*, `globaltype#2179*` : globaltype*, `memtype*` : memtype*, `memtype#634*` : memtype*, `expr#4477*` : expr*, `expr_T*` : expr*, `tabletype*` : tabletype*, `tabletype#998*` : tabletype*, `expr#4495*` : expr*, `expr_F*` : expr*, `local**` : local**, `local*#1351*` : local**, `typeidx#1808*` : typeidx*, `x*` : idx*, `byte**` : byte**, `byte*#2021*` : byte**, `datamode*` : datamode*, `datamode#1985*` : datamode*, `elemmode*` : elemmode*, `elemmode#3087*` : elemmode*, `elemtype*` : elemtype*, `expr*#3087*` : expr**, `expr_E**` : expr**, `reftype#3705*` : reftype*, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, i_F : nat, `funcinst*#14*` : funcinst**, 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*, `i#47295*` : nat*, `expr#4497*` : expr*, `local*#1353*` : local**, `typeidx#1810*` : typeidx*, `xi*` : exportinst*, `deftype*#94` : deftype*, `tagaddr*#5` : tagaddr*, `globaladdr*#4` : globaladdr*, `memaddr*#5` : memaddr*, `tableaddr*#5` : tableaddr*, `funcaddr*#6` : funcaddr*, `dataaddr*#3` : dataaddr*, `elemaddr*#3` : elemaddr*, `exportinst*#1` : exportinst*, `deftype*#95` : deftype*, `tagaddr*#6` : tagaddr*, `globaladdr*#5` : globaladdr*, `memaddr*#6` : memaddr*, `tableaddr*#6` : tableaddr*, `funcaddr*#7` : funcaddr*, `dataaddr*#4` : dataaddr*, `elemaddr*#4` : elemaddr*, `exportinst*#2` : 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*#101`, `import*#101`, `tag*#101`, `global*#125`, `mem*#125`, `table*#125`, `func*#101`, `data*#101`, `elem*#125`, `start?#101`, `export*#101`}(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#260}(tagtype)*{tagtype <- `tagtype*`, tagtype#260 <- `tagtype#260*`}) + -- if (global*{global <- `global*`} = `GLOBAL`_global{globaltype#2179, expr#4459}(globaltype, expr_G)*{expr#4459 <- `expr#4459*`, expr_G <- `expr_G*`, globaltype <- `globaltype*`, globaltype#2179 <- `globaltype#2179*`}) + -- if (mem*{mem <- `mem*`} = `MEMORY`_mem{memtype#634}(memtype)*{memtype <- `memtype*`, memtype#634 <- `memtype#634*`}) + -- if (table*{table <- `table*`} = `TABLE`_table{tabletype#998, expr#4477}(tabletype, expr_T)*{expr#4477 <- `expr#4477*`, expr_T <- `expr_T*`, tabletype <- `tabletype*`, tabletype#998 <- `tabletype#998*`}) + -- if (func*{func <- `func*`} = `FUNC`_func{typeidx#1808, `local*#1351`, expr#4495}(x, local*{local <- `local*`}, expr_F)*{expr#4495 <- `expr#4495*`, expr_F <- `expr_F*`, `local*` <- `local**`, `local*#1351` <- `local*#1351*`, typeidx#1808 <- `typeidx#1808*`, x <- `x*`}) + -- if (data*{data <- `data*`} = `DATA`_data{`byte*#2021`, datamode#1985}(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, `byte*#2021` <- `byte*#2021*`, datamode <- `datamode*`, datamode#1985 <- `datamode#1985*`}) + -- if (elem*{elem <- `elem*`} = `ELEM`_elem{reftype#3705, `expr*#3087`, elemmode#3087}(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemmode#3087 <- `elemmode#3087*`, elemtype <- `elemtype*`, `expr*#3087` <- `expr*#3087*`, `expr_E*` <- `expr_E**`, reftype#3705 <- `reftype#3705*`}) + -- 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{`funcinst*#14`}| + i_F)^(i_F<|func*{func <- `func*`}|){`funcinst*#14` <- `funcinst*#14*`}) + -- 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*`}[x!`%`_idx{i#47295}.0]*{i#47295 <- `i#47295*`, x <- `x*`}, `FUNC`_funccode{typeidx#1810, `local*#1353`, expr#4497}(x, local*{local <- `local*`}, expr_F)*{expr#4497 <- `expr#4497*`, expr_F <- `expr_F*`, `local*` <- `local**`, `local*#1353` <- `local*#1353*`, typeidx#1810 <- `typeidx#1810*`, x <- `x*`}, moduleinst^|func*{func <- `func*`}|{})) + -- if (xi*{xi <- `xi*`} = $allocexports({`TYPES`{`deftype*#94`} [], `TAGS`{`tagaddr*#5`} aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, `GLOBALS`{`globaladdr*#4`} ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, `MEMS`{`memaddr*#5`} ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, `TABLES`{`tableaddr*#5`} ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, `FUNCS`{`funcaddr*#6`} fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, `DATAS`{`dataaddr*#3`} [], `ELEMS`{`elemaddr*#3`} [], `EXPORTS`{`exportinst*#1`} []}, export*{export <- `export*`})) + -- if (moduleinst = {`TYPES`{`deftype*#95`} dt*{dt <- `dt*`}, `TAGS`{`tagaddr*#6`} aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, `GLOBALS`{`globaladdr*#5`} ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, `MEMS`{`memaddr*#6`} ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, `TABLES`{`tableaddr*#6`} ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, `FUNCS`{`funcaddr*#7`} fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, `DATAS`{`dataaddr*#4`} da*{da <- `da*`}, `ELEMS`{`elemaddr*#4`} ea*{ea <- `ea*`}, `EXPORTS`{`exportinst*#2`} xi*{xi <- `xi*`}}) +[check_dims] data dataidx +DecD rundata_(dataidx : dataidx, data : data) : instr* +[visit_id dataidx] not free +[visit_id data] not free +[check_dims] b byte*#2033 datamode#1997 n x +[visit_exp x] +[visit_id x] +[visit_exp `DATA`_data{`byte*#2033`, datamode#1997}(b^n{b <- `b*`}, `PASSIVE`_datamode)] +[visit_exp `byte*#2033`] +[visit_id byte*#2033] +[visit_exp datamode#1997] +[visit_id datamode#1997] +[visit_exp (b^n{b <- `b*`}, `PASSIVE`_datamode)] +[visit_exp b^n{b <- `b*`}] +[scope_enter b] +[visit_exp b] +[visit_id b] not free +[visit_id b] not free +[scope_exit b] +[visit_exp n] +[visit_id n] +[visit_exp `b*`] +[visit_id b*] no dims +[visit_id b*] +[visit_exp `PASSIVE`_datamode] +[visit_exp ()] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $rundata_{x : idx, `byte*#2033` : byte*, datamode#1997 : datamode, n : n, `b*` : byte*}(x, `DATA`_data{`byte*#2033`, datamode#1997}(b^n{b <- `b*`}, `PASSIVE`_datamode)) = [] +[check_dims] b byte*#2045 dataidx#43 dataidx#45 datamode#2009 expr#4499 i#47393 i#47417 instr memidx#165 memidx#167 n numtype#623 numtype#625 x y +[visit_exp x] +[visit_id x] +[visit_exp `DATA`_data{`byte*#2045`, datamode#2009}(b^n{b <- `b*`}, `ACTIVE`_datamode{memidx#165, expr#4499}(y, instr*{instr <- `instr*`}))] +[visit_exp `byte*#2045`] +[visit_id byte*#2045] +[visit_exp datamode#2009] +[visit_id datamode#2009] +[visit_exp (b^n{b <- `b*`}, `ACTIVE`_datamode{memidx#165, expr#4499}(y, instr*{instr <- `instr*`}))] +[visit_exp b^n{b <- `b*`}] +[scope_enter b] +[visit_exp b] +[visit_id b] not free +[visit_id b] not free +[scope_exit b] +[visit_exp n] +[visit_id n] +[visit_exp `b*`] +[visit_id b*] no dims +[visit_id b*] +[visit_exp `ACTIVE`_datamode{memidx#165, expr#4499}(y, instr*{instr <- `instr*`})] +[visit_exp memidx#165] +[visit_id memidx#165] +[visit_exp expr#4499] +[visit_id expr#4499] +[visit_exp (y, instr*{instr <- `instr*`})] +[visit_exp y] +[visit_id y] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] no dims +[visit_id instr*] +[visit_exp instr*{instr <- `instr*`} ++ [`CONST`_instr{numtype#623}(`I32`_numtype, `%`_num_{i#47393}(0)) `CONST`_instr{numtype#625}(`I32`_numtype, `%`_num_{i#47417}(n)) `MEMORY.INIT`_instr{memidx#167, dataidx#43}(y, x) `DATA.DROP`_instr{dataidx#45}(x)]] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] not free +[visit_id instr*] no dims +[visit_exp [`CONST`_instr{numtype#623}(`I32`_numtype, `%`_num_{i#47393}(0)) `CONST`_instr{numtype#625}(`I32`_numtype, `%`_num_{i#47417}(n)) `MEMORY.INIT`_instr{memidx#167, dataidx#43}(y, x) `DATA.DROP`_instr{dataidx#45}(x)]] +[visit_exp `CONST`_instr{numtype#623}(`I32`_numtype, `%`_num_{i#47393}(0))] +[visit_exp numtype#623] +[visit_id numtype#623] +[visit_exp (`I32`_numtype, `%`_num_{i#47393}(0))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#47393}(0)] +[visit_exp i#47393] +[visit_id i#47393] +[visit_exp (0)] +[visit_exp 0] +[visit_exp `CONST`_instr{numtype#625}(`I32`_numtype, `%`_num_{i#47417}(n))] +[visit_exp numtype#625] +[visit_id numtype#625] +[visit_exp (`I32`_numtype, `%`_num_{i#47417}(n))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#47417}(n)] +[visit_exp i#47417] +[visit_id i#47417] +[visit_exp (n)] +[visit_exp n] +[visit_id n] not free +[visit_exp `MEMORY.INIT`_instr{memidx#167, dataidx#43}(y, x)] +[visit_exp memidx#167] +[visit_id memidx#167] +[visit_exp dataidx#43] +[visit_id dataidx#43] +[visit_exp (y, x)] +[visit_exp y] +[visit_id y] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `DATA.DROP`_instr{dataidx#45}(x)] +[visit_exp dataidx#45] +[visit_id dataidx#45] +[visit_exp (x)] +[visit_exp x] +[visit_id x] not free +=> + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $rundata_{x : idx, `byte*#2045` : byte*, datamode#2009 : datamode, n : n, `b*` : byte*, memidx#165 : memidx, expr#4499 : expr, y : idx, `instr*` : instr*, numtype#623 : numtype, i#47393 : nat, numtype#625 : numtype, i#47417 : nat, memidx#167 : memidx, dataidx#43 : dataidx, dataidx#45 : dataidx}(x, `DATA`_data{`byte*#2045`, datamode#2009}(b^n{b <- `b*`}, `ACTIVE`_datamode{memidx#165, expr#4499}(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [`CONST`_instr{numtype#623}(`I32`_numtype, `%`_num_{i#47393}(0)) `CONST`_instr{numtype#625}(`I32`_numtype, `%`_num_{i#47417}(n)) `MEMORY.INIT`_instr{memidx#167, dataidx#43}(y, x) `DATA.DROP`_instr{dataidx#45}(x)] +[check_dims] elem elemidx +DecD runelem_(elemidx : elemidx, elem : elem) : instr* +[visit_id elemidx] not free +[visit_id elem] not free +[check_dims] e elemmode#3099 expr*#3099 n reftype#3735 rt x +[visit_exp x] +[visit_id x] +[visit_exp `ELEM`_elem{reftype#3735, `expr*#3099`, elemmode#3099}(rt, e^n{e <- `e*`}, `PASSIVE`_elemmode)] +[visit_exp reftype#3735] +[visit_id reftype#3735] +[visit_exp `expr*#3099`] +[visit_id expr*#3099] +[visit_exp elemmode#3099] +[visit_id elemmode#3099] +[visit_exp (rt, e^n{e <- `e*`}, `PASSIVE`_elemmode)] +[visit_exp rt] +[visit_id rt] +[visit_exp e^n{e <- `e*`}] +[scope_enter e] +[visit_exp e] +[visit_id e] not free +[visit_id e] not free +[scope_exit e] +[visit_exp n] +[visit_id n] +[visit_exp `e*`] +[visit_id e*] no dims +[visit_id e*] +[visit_exp `PASSIVE`_elemmode] +[visit_exp ()] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $runelem_{x : idx, reftype#3735 : reftype, `expr*#3099` : expr*, elemmode#3099 : elemmode, rt : reftype, n : n, `e*` : expr*}(x, `ELEM`_elem{reftype#3735, `expr*#3099`, elemmode#3099}(rt, e^n{e <- `e*`}, `PASSIVE`_elemmode)) = [] +[check_dims] e elemidx#43 elemmode#3111 expr*#3111 n reftype#3747 rt x +[visit_exp x] +[visit_id x] +[visit_exp `ELEM`_elem{reftype#3747, `expr*#3111`, elemmode#3111}(rt, e^n{e <- `e*`}, `DECLARE`_elemmode)] +[visit_exp reftype#3747] +[visit_id reftype#3747] +[visit_exp `expr*#3111`] +[visit_id expr*#3111] +[visit_exp elemmode#3111] +[visit_id elemmode#3111] +[visit_exp (rt, e^n{e <- `e*`}, `DECLARE`_elemmode)] +[visit_exp rt] +[visit_id rt] +[visit_exp e^n{e <- `e*`}] +[scope_enter e] +[visit_exp e] +[visit_id e] not free +[visit_id e] not free +[scope_exit e] +[visit_exp n] +[visit_id n] +[visit_exp `e*`] +[visit_id e*] no dims +[visit_id e*] +[visit_exp `DECLARE`_elemmode] +[visit_exp ()] +[visit_exp [`ELEM.DROP`_instr{elemidx#43}(x)]] +[visit_exp `ELEM.DROP`_instr{elemidx#43}(x)] +[visit_exp elemidx#43] +[visit_id elemidx#43] +[visit_exp (x)] +[visit_exp x] +[visit_id x] not free +=> + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $runelem_{x : idx, reftype#3747 : reftype, `expr*#3111` : expr*, elemmode#3111 : elemmode, rt : reftype, n : n, `e*` : expr*, elemidx#43 : elemidx}(x, `ELEM`_elem{reftype#3747, `expr*#3111`, elemmode#3111}(rt, e^n{e <- `e*`}, `DECLARE`_elemmode)) = [`ELEM.DROP`_instr{elemidx#43}(x)] +[check_dims] e elemidx#45 elemidx#47 elemmode#3123 expr#4501 expr*#3123 i#47545 i#47569 instr n numtype#627 numtype#629 reftype#3759 rt tableidx#119 tableidx#121 x y +[visit_exp x] +[visit_id x] +[visit_exp `ELEM`_elem{reftype#3759, `expr*#3123`, elemmode#3123}(rt, e^n{e <- `e*`}, `ACTIVE`_elemmode{tableidx#119, expr#4501}(y, instr*{instr <- `instr*`}))] +[visit_exp reftype#3759] +[visit_id reftype#3759] +[visit_exp `expr*#3123`] +[visit_id expr*#3123] +[visit_exp elemmode#3123] +[visit_id elemmode#3123] +[visit_exp (rt, e^n{e <- `e*`}, `ACTIVE`_elemmode{tableidx#119, expr#4501}(y, instr*{instr <- `instr*`}))] +[visit_exp rt] +[visit_id rt] +[visit_exp e^n{e <- `e*`}] +[scope_enter e] +[visit_exp e] +[visit_id e] not free +[visit_id e] not free +[scope_exit e] +[visit_exp n] +[visit_id n] +[visit_exp `e*`] +[visit_id e*] no dims +[visit_id e*] +[visit_exp `ACTIVE`_elemmode{tableidx#119, expr#4501}(y, instr*{instr <- `instr*`})] +[visit_exp tableidx#119] +[visit_id tableidx#119] +[visit_exp expr#4501] +[visit_id expr#4501] +[visit_exp (y, instr*{instr <- `instr*`})] +[visit_exp y] +[visit_id y] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] no dims +[visit_id instr*] +[visit_exp instr*{instr <- `instr*`} ++ [`CONST`_instr{numtype#627}(`I32`_numtype, `%`_num_{i#47545}(0)) `CONST`_instr{numtype#629}(`I32`_numtype, `%`_num_{i#47569}(n)) `TABLE.INIT`_instr{tableidx#121, elemidx#45}(y, x) `ELEM.DROP`_instr{elemidx#47}(x)]] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] not free +[visit_id instr*] no dims +[visit_exp [`CONST`_instr{numtype#627}(`I32`_numtype, `%`_num_{i#47545}(0)) `CONST`_instr{numtype#629}(`I32`_numtype, `%`_num_{i#47569}(n)) `TABLE.INIT`_instr{tableidx#121, elemidx#45}(y, x) `ELEM.DROP`_instr{elemidx#47}(x)]] +[visit_exp `CONST`_instr{numtype#627}(`I32`_numtype, `%`_num_{i#47545}(0))] +[visit_exp numtype#627] +[visit_id numtype#627] +[visit_exp (`I32`_numtype, `%`_num_{i#47545}(0))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#47545}(0)] +[visit_exp i#47545] +[visit_id i#47545] +[visit_exp (0)] +[visit_exp 0] +[visit_exp `CONST`_instr{numtype#629}(`I32`_numtype, `%`_num_{i#47569}(n))] +[visit_exp numtype#629] +[visit_id numtype#629] +[visit_exp (`I32`_numtype, `%`_num_{i#47569}(n))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#47569}(n)] +[visit_exp i#47569] +[visit_id i#47569] +[visit_exp (n)] +[visit_exp n] +[visit_id n] not free +[visit_exp `TABLE.INIT`_instr{tableidx#121, elemidx#45}(y, x)] +[visit_exp tableidx#121] +[visit_id tableidx#121] +[visit_exp elemidx#45] +[visit_id elemidx#45] +[visit_exp (y, x)] +[visit_exp y] +[visit_id y] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `ELEM.DROP`_instr{elemidx#47}(x)] +[visit_exp elemidx#47] +[visit_id elemidx#47] +[visit_exp (x)] +[visit_exp x] +[visit_id x] not free +=> + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $runelem_{x : idx, reftype#3759 : reftype, `expr*#3123` : expr*, elemmode#3123 : elemmode, rt : reftype, n : n, `e*` : expr*, tableidx#119 : tableidx, expr#4501 : expr, y : idx, `instr*` : instr*, numtype#627 : numtype, i#47545 : nat, numtype#629 : numtype, i#47569 : nat, tableidx#121 : tableidx, elemidx#45 : elemidx, elemidx#47 : elemidx}(x, `ELEM`_elem{reftype#3759, `expr*#3123`, elemmode#3123}(rt, e^n{e <- `e*`}, `ACTIVE`_elemmode{tableidx#119, expr#4501}(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [`CONST`_instr{numtype#627}(`I32`_numtype, `%`_num_{i#47545}(0)) `CONST`_instr{numtype#629}(`I32`_numtype, `%`_num_{i#47569}(n)) `TABLE.INIT`_instr{tableidx#121, elemidx#45}(y, x) `ELEM.DROP`_instr{elemidx#47}(x)] +[check_dims] _ state +DecD evalglobals(state : state, globaltype*, expr*) : (state, val*) +[visit_id state] not free +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[check_dims] z +[visit_exp z] +[visit_id z] +[visit_exp []] +[visit_exp []] +[visit_exp (z, [])] +[visit_exp z] +[visit_id z] not free +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $evalglobals{z : state}(z, [], []) = (z, []) +[check_dims] a expr expr' f frame#2561 frame#2573 globaladdr*#6 gt gt' moduleinst#26 s s' store#2543 store#2555 val val' z z' +[visit_exp z] +[visit_id z] +[visit_exp [gt] ++ gt'*{gt' <- `gt'*`}] +[visit_exp [gt]] +[visit_exp gt] +[visit_id gt] +[visit_exp gt'*{gt' <- `gt'*`}] +[scope_enter gt'] +[visit_exp gt'] +[visit_id gt'] not free +[visit_id gt'] not free +[scope_exit gt'] +[visit_exp `gt'*`] +[visit_id gt'*] no dims +[visit_id gt'*] +[visit_exp [expr] ++ expr'*{expr' <- `expr'*`}] +[visit_exp [expr]] +[visit_exp expr] +[visit_id expr] +[visit_exp expr'*{expr' <- `expr'*`}] +[scope_enter expr'] +[visit_exp expr'] +[visit_id expr'] not free +[visit_id expr'] not free +[scope_exit expr'] +[visit_exp `expr'*`] +[visit_id expr'*] no dims +[visit_id expr'*] +[visit_exp (z', [val] ++ val'*{val' <- `val'*`})] +[visit_exp z'] +[visit_id z'] +[visit_exp [val] ++ val'*{val' <- `val'*`}] +[visit_exp [val]] +[visit_exp val] +[visit_id val] +[visit_exp val'*{val' <- `val'*`}] +[scope_enter val'] +[visit_exp val'] +[visit_id val'] not free +[visit_id val'] not free +[scope_exit val'] +[visit_exp `val'*`] +[visit_id val'*] no dims +[visit_id val'*] +[visit_exp (z, expr, z, [val])] +[visit_exp z] +[visit_id z] not free +[visit_exp expr] +[visit_id expr] not free +[visit_exp z] +[visit_id z] not free +[visit_exp [val]] +[visit_exp val] +[visit_id val] not free +[visit_exp (z = `%;%`_state{store#2543, frame#2561}(s, f))] +[visit_exp z] +[visit_id z] not free +[visit_exp `%;%`_state{store#2543, frame#2561}(s, f)] +[visit_exp store#2543] +[visit_id store#2543] +[visit_exp frame#2561] +[visit_id frame#2561] +[visit_exp (s, f)] +[visit_exp s] +[visit_id s] +[visit_exp f] +[visit_id f] +[visit_exp ((s', a) = $allocglobal(s, gt, val))] +[visit_exp (s', a)] +[visit_exp s'] +[visit_id s'] +[visit_exp a] +[visit_id a] +[visit_exp $allocglobal(s, gt, val)] +[visit_exp s] +[visit_id s] not free +[visit_exp gt] +[visit_id gt] not free +[visit_exp val] +[visit_id val] not free +[visit_exp ((z', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state{store#2555, frame#2573}(s', f[`MODULE`_frame{moduleinst#26}.`GLOBALS`_moduleinst{`globaladdr*#6`} =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`}))] +[visit_exp (z', val'*{val' <- `val'*`})] +[visit_exp z'] +[visit_id z'] not free +[visit_exp val'*{val' <- `val'*`}] +[scope_enter val'] +[visit_exp val'] +[visit_id val'] not free +[visit_id val'] not free +[scope_exit val'] +[visit_exp `val'*`] +[visit_id val'*] not free +[visit_id val'*] no dims +[visit_exp $evalglobals(`%;%`_state{store#2555, frame#2573}(s', f[`MODULE`_frame{moduleinst#26}.`GLOBALS`_moduleinst{`globaladdr*#6`} =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`})] +[visit_exp `%;%`_state{store#2555, frame#2573}(s', f[`MODULE`_frame{moduleinst#26}.`GLOBALS`_moduleinst{`globaladdr*#6`} =++ [a]])] +[visit_exp store#2555] +[visit_id store#2555] +[visit_exp frame#2573] +[visit_id frame#2573] +[visit_exp (s', f[`MODULE`_frame{moduleinst#26}.`GLOBALS`_moduleinst{`globaladdr*#6`} =++ [a]])] +[visit_exp s'] +[visit_id s'] not free +[visit_exp f[`MODULE`_frame{moduleinst#26}.`GLOBALS`_moduleinst{`globaladdr*#6`} =++ [a]]] +[visit_exp f] +[visit_id f] not free +[visit_exp moduleinst#26] +[visit_id moduleinst#26] +[visit_exp `globaladdr*#6`] +[visit_id globaladdr*#6] +[visit_exp [a]] +[visit_exp a] +[visit_id a] not free +[visit_exp gt'*{gt' <- `gt'*`}] +[scope_enter gt'] +[visit_exp gt'] +[visit_id gt'] not free +[visit_id gt'] not free +[scope_exit gt'] +[visit_exp `gt'*`] +[visit_id gt'*] not free +[visit_id gt'*] no dims +[visit_exp expr'*{expr' <- `expr'*`}] +[scope_enter expr'] +[visit_exp expr'] +[visit_id expr'] not free +[visit_id expr'] not free +[scope_exit expr'] +[visit_exp `expr'*`] +[visit_id expr'*] not free +[visit_id expr'*] no dims +=> + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : expr, `expr'*` : expr*, z' : state, val : val, `val'*` : val*, store#2543 : store, frame#2561 : frame, s : store, f : frame, s' : store, a : addr, store#2555 : store, frame#2573 : frame, moduleinst#26 : moduleinst, `globaladdr*#6` : globaladdr*}(z, [gt] ++ gt'*{gt' <- `gt'*`}, [expr] ++ expr'*{expr' <- `expr'*`}) = (z', [val] ++ val'*{val' <- `val'*`}) + -- Eval_expr: `%;%~>*%;%`(z, expr, z, [val]) + -- if (z = `%;%`_state{store#2543, frame#2561}(s, f)) + -- if ((s', a) = $allocglobal(s, gt, val)) + -- if ((z', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state{store#2555, frame#2573}(s', f[`MODULE`_frame{moduleinst#26}.`GLOBALS`_moduleinst{`globaladdr*#6`} =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`})) +[check_dims] _ module store +DecD instantiate(store : store, module : module, externaddr*) : config +[visit_id store] not free +[visit_id module] not free +[visit_id _] not free +[check_dims] byte byte*#2187 data data*#125 dataaddr*#5 datamode datamode#2151 deftype*#96 elem elem*#149 elemaddr*#5 elemmode elemmode#3277 export export*#125 exportinst*#3 expr#4805 expr#4823 expr*#3277 expr_E expr_G expr_T externaddr externtype*#168 frame#2597 frame#2645 func func*#125 funcaddr*#8 funcidx#3157 funcidx#3159 funcinst*#15 global global*#149 globaladdr*#7 globaltype globaltype#2271 i#47725 i#47785 i_D i_E i_F import import*#125 instr*#2334 instr_D instr_E instr_S mem mem*#149 memaddr*#7 module moduleinst moduleinst#27 moduleinst#28 moduleinst_0 ref_E ref_T reftype reftype#3919 s s' start start?#125 state#2219 store#2579 store#2627 table table*#149 tableaddr*#7 tabletype tabletype#1116 tag tag*#125 tagaddr*#7 type type*#125 val?*#5 val?*#6 val_G x xt_E xt_I z z' +[visit_exp s] +[visit_id s] +[visit_exp module] +[visit_id module] +[visit_exp externaddr*{externaddr <- `externaddr*`}] +[scope_enter externaddr] +[visit_exp externaddr] +[visit_id externaddr] not free +[visit_id externaddr] not free +[scope_exit externaddr] +[visit_exp `externaddr*`] +[visit_id externaddr*] no dims +[visit_id externaddr*] +[visit_exp `%;%`_config{state#2219, `instr*#2334`}(`%;%`_state{store#2627, frame#2645}(s', {`LOCALS`{`val?*#6`} [], `MODULE`{moduleinst#28} moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))] +[visit_exp state#2219] +[visit_id state#2219] +[visit_exp `instr*#2334`] +[visit_id instr*#2334] +[visit_exp (`%;%`_state{store#2627, frame#2645}(s', {`LOCALS`{`val?*#6`} [], `MODULE`{moduleinst#28} moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))] +[visit_exp `%;%`_state{store#2627, frame#2645}(s', {`LOCALS`{`val?*#6`} [], `MODULE`{moduleinst#28} moduleinst})] +[visit_exp store#2627] +[visit_id store#2627] +[visit_exp frame#2645] +[visit_id frame#2645] +[visit_exp (s', {`LOCALS`{`val?*#6`} [], `MODULE`{moduleinst#28} moduleinst})] +[visit_exp s'] +[visit_id s'] +[visit_exp {`LOCALS`{`val?*#6`} [], `MODULE`{moduleinst#28} moduleinst}] +[visit_exp `val?*#6`] +[visit_id val?*#6] +[visit_exp []] +[visit_exp moduleinst#28] +[visit_id moduleinst#28] +[visit_exp moduleinst] +[visit_id moduleinst] +[visit_exp instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})] +[visit_exp instr_E*{instr_E <- `instr_E*`}] +[scope_enter instr_E] +[visit_exp instr_E] +[visit_id instr_E] not free +[visit_id instr_E] not free +[scope_exit instr_E] +[visit_exp `instr_E*`] +[visit_id instr_E*] no dims +[visit_id instr_E*] +[visit_exp instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})] +[visit_exp instr_D*{instr_D <- `instr_D*`}] +[scope_enter instr_D] +[visit_exp instr_D] +[visit_id instr_D] not free +[visit_id instr_D] not free +[scope_exit instr_D] +[visit_exp `instr_D*`] +[visit_id instr_D*] no dims +[visit_id instr_D*] +[visit_exp lift(instr_S?{instr_S <- `instr_S?`})] +[visit_exp instr_S?{instr_S <- `instr_S?`}] +[scope_enter instr_S] +[visit_exp instr_S] +[visit_id instr_S] not free +[visit_id instr_S] not free +[scope_exit instr_S] +[visit_exp `instr_S?`] +[visit_id instr_S?] no dims +[visit_id instr_S?] +[visit_exp (module, `%->%`_moduletype{`externtype*#168`}(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))] +[visit_exp module] +[visit_id module] not free +[visit_exp `%->%`_moduletype{`externtype*#168`}(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})] +[visit_exp `externtype*#168`] +[visit_id externtype*#168] +[visit_exp (xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})] +[visit_exp xt_I*{xt_I <- `xt_I*`}] +[scope_enter xt_I] +[visit_exp xt_I] +[visit_id xt_I] not free +[visit_id xt_I] not free +[scope_exit xt_I] +[visit_exp `xt_I*`] +[visit_id xt_I*] no dims +[visit_id xt_I*] +[visit_exp xt_E*{xt_E <- `xt_E*`}] +[scope_enter xt_E] +[visit_exp xt_E] +[visit_id xt_E] not free +[visit_id xt_E] not free +[scope_exit xt_E] +[visit_exp `xt_E*`] +[visit_id xt_E*] no dims +[visit_id xt_E*] +[scope_enter externaddr] +[scope_enter xt_I] +[visit_exp (s, externaddr, xt_I)] +[visit_exp s] +[visit_id s] not free +[visit_exp externaddr] +[visit_id externaddr] not free +[visit_exp xt_I] +[visit_id xt_I] not free +[visit_id externaddr] not free +[visit_id xt_I] not free +[scope_exit xt_I] +[scope_exit externaddr] +[visit_exp `externaddr*`] +[visit_id externaddr*] not free +[visit_id externaddr*] no dims +[visit_exp `xt_I*`] +[visit_id xt_I*] not free +[visit_id xt_I*] no dims +[visit_exp (module = `MODULE`_module{`type*#125`, `import*#125`, `tag*#125`, `global*#149`, `mem*#149`, `table*#149`, `func*#125`, `data*#125`, `elem*#149`, `start?#125`, `export*#125`}(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*`}))] +[visit_exp module] +[visit_id module] not free +[visit_exp `MODULE`_module{`type*#125`, `import*#125`, `tag*#125`, `global*#149`, `mem*#149`, `table*#149`, `func*#125`, `data*#125`, `elem*#149`, `start?#125`, `export*#125`}(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*`})] +[visit_exp `type*#125`] +[visit_id type*#125] +[visit_exp `import*#125`] +[visit_id import*#125] +[visit_exp `tag*#125`] +[visit_id tag*#125] +[visit_exp `global*#149`] +[visit_id global*#149] +[visit_exp `mem*#149`] +[visit_id mem*#149] +[visit_exp `table*#149`] +[visit_id table*#149] +[visit_exp `func*#125`] +[visit_id func*#125] +[visit_exp `data*#125`] +[visit_id data*#125] +[visit_exp `elem*#149`] +[visit_id elem*#149] +[visit_exp `start?#125`] +[visit_id start?#125] +[visit_exp `export*#125`] +[visit_id export*#125] +[visit_exp (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*`})] +[visit_exp type*{type <- `type*`}] +[scope_enter type] +[visit_exp type] +[visit_id type] not free +[visit_id type] not free +[scope_exit type] +[visit_exp `type*`] +[visit_id type*] no dims +[visit_id type*] +[visit_exp import*{import <- `import*`}] +[scope_enter import] +[visit_exp import] +[visit_id import] not free +[visit_id import] not free +[scope_exit import] +[visit_exp `import*`] +[visit_id import*] no dims +[visit_id import*] +[visit_exp tag*{tag <- `tag*`}] +[scope_enter tag] +[visit_exp tag] +[visit_id tag] not free +[visit_id tag] not free +[scope_exit tag] +[visit_exp `tag*`] +[visit_id tag*] no dims +[visit_id tag*] +[visit_exp global*{global <- `global*`}] +[scope_enter global] +[visit_exp global] +[visit_id global] not free +[visit_id global] not free +[scope_exit global] +[visit_exp `global*`] +[visit_id global*] no dims +[visit_id global*] +[visit_exp mem*{mem <- `mem*`}] +[scope_enter mem] +[visit_exp mem] +[visit_id mem] not free +[visit_id mem] not free +[scope_exit mem] +[visit_exp `mem*`] +[visit_id mem*] no dims +[visit_id mem*] +[visit_exp table*{table <- `table*`}] +[scope_enter table] +[visit_exp table] +[visit_id table] not free +[visit_id table] not free +[scope_exit table] +[visit_exp `table*`] +[visit_id table*] no dims +[visit_id table*] +[visit_exp func*{func <- `func*`}] +[scope_enter func] +[visit_exp func] +[visit_id func] not free +[visit_id func] not free +[scope_exit func] +[visit_exp `func*`] +[visit_id func*] no dims +[visit_id func*] +[visit_exp data*{data <- `data*`}] +[scope_enter data] +[visit_exp data] +[visit_id data] not free +[visit_id data] not free +[scope_exit data] +[visit_exp `data*`] +[visit_id data*] no dims +[visit_id data*] +[visit_exp elem*{elem <- `elem*`}] +[scope_enter elem] +[visit_exp elem] +[visit_id elem] not free +[visit_id elem] not free +[scope_exit elem] +[visit_exp `elem*`] +[visit_id elem*] no dims +[visit_id elem*] +[visit_exp start?{start <- `start?`}] +[scope_enter start] +[visit_exp start] +[visit_id start] not free +[visit_id start] not free +[scope_exit start] +[visit_exp `start?`] +[visit_id start?] no dims +[visit_id start?] +[visit_exp export*{export <- `export*`}] +[scope_enter export] +[visit_exp export] +[visit_id export] not free +[visit_id export] not free +[scope_exit export] +[visit_exp `export*`] +[visit_id export*] no dims +[visit_id export*] +[visit_exp (global*{global <- `global*`} = `GLOBAL`_global{globaltype#2271, expr#4805}(globaltype, expr_G)*{expr#4805 <- `expr#4805*`, expr_G <- `expr_G*`, globaltype <- `globaltype*`, globaltype#2271 <- `globaltype#2271*`})] +[visit_exp global*{global <- `global*`}] +[scope_enter global] +[visit_exp global] +[visit_id global] not free +[visit_id global] not free +[scope_exit global] +[visit_exp `global*`] +[visit_id global*] not free +[visit_id global*] no dims +[visit_exp `GLOBAL`_global{globaltype#2271, expr#4805}(globaltype, expr_G)*{expr#4805 <- `expr#4805*`, expr_G <- `expr_G*`, globaltype <- `globaltype*`, globaltype#2271 <- `globaltype#2271*`}] +[scope_enter expr#4805] +[scope_enter expr_G] +[scope_enter globaltype] +[scope_enter globaltype#2271] +[visit_exp `GLOBAL`_global{globaltype#2271, expr#4805}(globaltype, expr_G)] +[visit_exp globaltype#2271] +[visit_id globaltype#2271] not free +[visit_exp expr#4805] +[visit_id expr#4805] not free +[visit_exp (globaltype, expr_G)] +[visit_exp globaltype] +[visit_id globaltype] not free +[visit_exp expr_G] +[visit_id expr_G] not free +[visit_id expr#4805] not free +[visit_id expr_G] not free +[visit_id globaltype] not free +[visit_id globaltype#2271] not free +[scope_exit globaltype#2271] +[scope_exit globaltype] +[scope_exit expr_G] +[scope_exit expr#4805] +[visit_exp `expr#4805*`] +[visit_id expr#4805*] no dims +[visit_id expr#4805*] +[visit_exp `expr_G*`] +[visit_id expr_G*] no dims +[visit_id expr_G*] +[visit_exp `globaltype*`] +[visit_id globaltype*] no dims +[visit_id globaltype*] +[visit_exp `globaltype#2271*`] +[visit_id globaltype#2271*] no dims +[visit_id globaltype#2271*] +[visit_exp (table*{table <- `table*`} = `TABLE`_table{tabletype#1116, expr#4823}(tabletype, expr_T)*{expr#4823 <- `expr#4823*`, expr_T <- `expr_T*`, tabletype <- `tabletype*`, tabletype#1116 <- `tabletype#1116*`})] +[visit_exp table*{table <- `table*`}] +[scope_enter table] +[visit_exp table] +[visit_id table] not free +[visit_id table] not free +[scope_exit table] +[visit_exp `table*`] +[visit_id table*] not free +[visit_id table*] no dims +[visit_exp `TABLE`_table{tabletype#1116, expr#4823}(tabletype, expr_T)*{expr#4823 <- `expr#4823*`, expr_T <- `expr_T*`, tabletype <- `tabletype*`, tabletype#1116 <- `tabletype#1116*`}] +[scope_enter expr#4823] +[scope_enter expr_T] +[scope_enter tabletype] +[scope_enter tabletype#1116] +[visit_exp `TABLE`_table{tabletype#1116, expr#4823}(tabletype, expr_T)] +[visit_exp tabletype#1116] +[visit_id tabletype#1116] not free +[visit_exp expr#4823] +[visit_id expr#4823] not free +[visit_exp (tabletype, expr_T)] +[visit_exp tabletype] +[visit_id tabletype] not free +[visit_exp expr_T] +[visit_id expr_T] not free +[visit_id expr#4823] not free +[visit_id expr_T] not free +[visit_id tabletype] not free +[visit_id tabletype#1116] not free +[scope_exit tabletype#1116] +[scope_exit tabletype] +[scope_exit expr_T] +[scope_exit expr#4823] +[visit_exp `expr#4823*`] +[visit_id expr#4823*] no dims +[visit_id expr#4823*] +[visit_exp `expr_T*`] +[visit_id expr_T*] no dims +[visit_id expr_T*] +[visit_exp `tabletype*`] +[visit_id tabletype*] no dims +[visit_id tabletype*] +[visit_exp `tabletype#1116*`] +[visit_id tabletype#1116*] no dims +[visit_id tabletype#1116*] +[visit_exp (data*{data <- `data*`} = `DATA`_data{`byte*#2187`, datamode#2151}(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, `byte*#2187` <- `byte*#2187*`, datamode <- `datamode*`, datamode#2151 <- `datamode#2151*`})] +[visit_exp data*{data <- `data*`}] +[scope_enter data] +[visit_exp data] +[visit_id data] not free +[visit_id data] not free +[scope_exit data] +[visit_exp `data*`] +[visit_id data*] not free +[visit_id data*] no dims +[visit_exp `DATA`_data{`byte*#2187`, datamode#2151}(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, `byte*#2187` <- `byte*#2187*`, datamode <- `datamode*`, datamode#2151 <- `datamode#2151*`}] +[scope_enter byte*] +[scope_enter byte*#2187] +[scope_enter datamode] +[scope_enter datamode#2151] +[visit_exp `DATA`_data{`byte*#2187`, datamode#2151}(byte*{byte <- `byte*`}, datamode)] +[visit_exp `byte*#2187`] +[visit_id byte*#2187] not free +[visit_exp datamode#2151] +[visit_id datamode#2151] not free +[visit_exp (byte*{byte <- `byte*`}, datamode)] +[visit_exp byte*{byte <- `byte*`}] +[scope_enter byte] +[visit_exp byte] +[visit_id byte] not free +[visit_id byte] not free +[scope_exit byte] +[visit_exp `byte*`] +[visit_id byte*] not free +[visit_id byte*] no dims +[visit_exp datamode] +[visit_id datamode] not free +[visit_id byte*] not free +[visit_id byte*] no dims +[visit_id byte*#2187] not free +[visit_id datamode] not free +[visit_id datamode#2151] not free +[scope_exit datamode#2151] +[scope_exit datamode] +[scope_exit byte*#2187] +[scope_exit byte*] +[visit_exp `byte**`] +[visit_id byte**] no dims +[visit_id byte**] +[visit_exp `byte*#2187*`] +[visit_id byte*#2187*] no dims +[visit_id byte*#2187*] +[visit_exp `datamode*`] +[visit_id datamode*] no dims +[visit_id datamode*] +[visit_exp `datamode#2151*`] +[visit_id datamode#2151*] no dims +[visit_id datamode#2151*] +[visit_exp (elem*{elem <- `elem*`} = `ELEM`_elem{reftype#3919, `expr*#3277`, elemmode#3277}(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemmode#3277 <- `elemmode#3277*`, `expr*#3277` <- `expr*#3277*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`, reftype#3919 <- `reftype#3919*`})] +[visit_exp elem*{elem <- `elem*`}] +[scope_enter elem] +[visit_exp elem] +[visit_id elem] not free +[visit_id elem] not free +[scope_exit elem] +[visit_exp `elem*`] +[visit_id elem*] not free +[visit_id elem*] no dims +[visit_exp `ELEM`_elem{reftype#3919, `expr*#3277`, elemmode#3277}(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemmode#3277 <- `elemmode#3277*`, `expr*#3277` <- `expr*#3277*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`, reftype#3919 <- `reftype#3919*`}] +[scope_enter elemmode] +[scope_enter elemmode#3277] +[scope_enter expr*#3277] +[scope_enter expr_E*] +[scope_enter reftype] +[scope_enter reftype#3919] +[visit_exp `ELEM`_elem{reftype#3919, `expr*#3277`, elemmode#3277}(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)] +[visit_exp reftype#3919] +[visit_id reftype#3919] not free +[visit_exp `expr*#3277`] +[visit_id expr*#3277] not free +[visit_exp elemmode#3277] +[visit_id elemmode#3277] not free +[visit_exp (reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)] +[visit_exp reftype] +[visit_id reftype] not free +[visit_exp expr_E*{expr_E <- `expr_E*`}] +[scope_enter expr_E] +[visit_exp expr_E] +[visit_id expr_E] not free +[visit_id expr_E] not free +[scope_exit expr_E] +[visit_exp `expr_E*`] +[visit_id expr_E*] not free +[visit_id expr_E*] no dims +[visit_exp elemmode] +[visit_id elemmode] not free +[visit_id elemmode] not free +[visit_id elemmode#3277] not free +[visit_id expr*#3277] not free +[visit_id expr_E*] not free +[visit_id expr_E*] no dims +[visit_id reftype] not free +[visit_id reftype#3919] not free +[scope_exit reftype#3919] +[scope_exit reftype] +[scope_exit expr_E*] +[scope_exit expr*#3277] +[scope_exit elemmode#3277] +[scope_exit elemmode] +[visit_exp `elemmode*`] +[visit_id elemmode*] no dims +[visit_id elemmode*] +[visit_exp `elemmode#3277*`] +[visit_id elemmode#3277*] no dims +[visit_id elemmode#3277*] +[visit_exp `expr*#3277*`] +[visit_id expr*#3277*] no dims +[visit_id expr*#3277*] +[visit_exp `expr_E**`] +[visit_id expr_E**] no dims +[visit_id expr_E**] +[visit_exp `reftype*`] +[visit_id reftype*] no dims +[visit_id reftype*] +[visit_exp `reftype#3919*`] +[visit_id reftype#3919*] no dims +[visit_id reftype#3919*] +[visit_exp (start?{start <- `start?`} = `START`_start{funcidx#3157}(x)?{funcidx#3157 <- `funcidx#3157?`, x <- `x?`})] +[visit_exp start?{start <- `start?`}] +[scope_enter start] +[visit_exp start] +[visit_id start] not free +[visit_id start] not free +[scope_exit start] +[visit_exp `start?`] +[visit_id start?] not free +[visit_id start?] no dims +[visit_exp `START`_start{funcidx#3157}(x)?{funcidx#3157 <- `funcidx#3157?`, x <- `x?`}] +[scope_enter funcidx#3157] +[scope_enter x] +[visit_exp `START`_start{funcidx#3157}(x)] +[visit_exp funcidx#3157] +[visit_id funcidx#3157] not free +[visit_exp (x)] +[visit_exp x] +[visit_id x] not free +[visit_id funcidx#3157] not free +[visit_id x] not free +[scope_exit x] +[scope_exit funcidx#3157] +[visit_exp `funcidx#3157?`] +[visit_id funcidx#3157?] no dims +[visit_id funcidx#3157?] +[visit_exp `x?`] +[visit_id x?] no dims +[visit_id x?] +[visit_exp (moduleinst_0 = {`TYPES`{`deftype*#96`} $alloctypes(type*{type <- `type*`}), `TAGS`{`tagaddr*#7`} [], `GLOBALS`{`globaladdr*#7`} $globalsxa(externaddr*{externaddr <- `externaddr*`}), `MEMS`{`memaddr*#7`} [], `TABLES`{`tableaddr*#7`} [], `FUNCS`{`funcaddr*#8`} $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.`FUNCS`_store{`funcinst*#15`}| + i_F)^(i_F<|func*{func <- `func*`}|){`funcinst*#15` <- `funcinst*#15*`}, `DATAS`{`dataaddr*#5`} [], `ELEMS`{`elemaddr*#5`} [], `EXPORTS`{`exportinst*#3`} []})] +[visit_exp moduleinst_0] +[visit_id moduleinst_0] +[visit_exp {`TYPES`{`deftype*#96`} $alloctypes(type*{type <- `type*`}), `TAGS`{`tagaddr*#7`} [], `GLOBALS`{`globaladdr*#7`} $globalsxa(externaddr*{externaddr <- `externaddr*`}), `MEMS`{`memaddr*#7`} [], `TABLES`{`tableaddr*#7`} [], `FUNCS`{`funcaddr*#8`} $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.`FUNCS`_store{`funcinst*#15`}| + i_F)^(i_F<|func*{func <- `func*`}|){`funcinst*#15` <- `funcinst*#15*`}, `DATAS`{`dataaddr*#5`} [], `ELEMS`{`elemaddr*#5`} [], `EXPORTS`{`exportinst*#3`} []}] +[visit_exp `deftype*#96`] +[visit_id deftype*#96] +[visit_exp $alloctypes(type*{type <- `type*`})] +[visit_exp type*{type <- `type*`}] +[scope_enter type] +[visit_exp type] +[visit_id type] not free +[visit_id type] not free +[scope_exit type] +[visit_exp `type*`] +[visit_id type*] not free +[visit_id type*] no dims +[visit_exp `tagaddr*#7`] +[visit_id tagaddr*#7] +[visit_exp []] +[visit_exp `globaladdr*#7`] +[visit_id globaladdr*#7] +[visit_exp $globalsxa(externaddr*{externaddr <- `externaddr*`})] +[visit_exp externaddr*{externaddr <- `externaddr*`}] +[scope_enter externaddr] +[visit_exp externaddr] +[visit_id externaddr] not free +[visit_id externaddr] not free +[scope_exit externaddr] +[visit_exp `externaddr*`] +[visit_id externaddr*] not free +[visit_id externaddr*] no dims +[visit_exp `memaddr*#7`] +[visit_id memaddr*#7] +[visit_exp []] +[visit_exp `tableaddr*#7`] +[visit_id tableaddr*#7] +[visit_exp []] +[visit_exp `funcaddr*#8`] +[visit_id funcaddr*#8] +[visit_exp $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.`FUNCS`_store{`funcinst*#15`}| + i_F)^(i_F<|func*{func <- `func*`}|){`funcinst*#15` <- `funcinst*#15*`}] +[visit_exp $funcsxa(externaddr*{externaddr <- `externaddr*`})] +[visit_exp externaddr*{externaddr <- `externaddr*`}] +[scope_enter externaddr] +[visit_exp externaddr] +[visit_id externaddr] not free +[visit_id externaddr] not free +[scope_exit externaddr] +[visit_exp `externaddr*`] +[visit_id externaddr*] not free +[visit_id externaddr*] no dims +[visit_exp (|s.`FUNCS`_store{`funcinst*#15`}| + i_F)^(i_F<|func*{func <- `func*`}|){`funcinst*#15` <- `funcinst*#15*`}] +[scope_enter i_F] +[scope_enter funcinst*#15] +[visit_exp (|s.`FUNCS`_store{`funcinst*#15`}| + i_F)] +[visit_exp |s.`FUNCS`_store{`funcinst*#15`}|] +[visit_exp s.`FUNCS`_store{`funcinst*#15`}] +[visit_exp s] +[visit_id s] not free +[visit_exp `funcinst*#15`] +[visit_id funcinst*#15] not free +[visit_exp i_F] +[visit_id i_F] +[visit_id i_F] not free +[visit_id funcinst*#15] not free +[scope_exit funcinst*#15] +[scope_exit i_F] +[visit_exp |func*{func <- `func*`}|] +[visit_exp func*{func <- `func*`}] +[scope_enter func] +[visit_exp func] +[visit_id func] not free +[visit_id func] not free +[scope_exit func] +[visit_exp `func*`] +[visit_id func*] not free +[visit_id func*] no dims +[visit_exp `funcinst*#15*`] +[visit_id funcinst*#15*] no dims +[visit_id funcinst*#15*] +[visit_exp `dataaddr*#5`] +[visit_id dataaddr*#5] +[visit_exp []] +[visit_exp `elemaddr*#5`] +[visit_id elemaddr*#5] +[visit_exp []] +[visit_exp `exportinst*#3`] +[visit_id exportinst*#3] +[visit_exp []] +[visit_exp (z = `%;%`_state{store#2579, frame#2597}(s, {`LOCALS`{`val?*#5`} [], `MODULE`{moduleinst#27} moduleinst_0}))] +[visit_exp z] +[visit_id z] +[visit_exp `%;%`_state{store#2579, frame#2597}(s, {`LOCALS`{`val?*#5`} [], `MODULE`{moduleinst#27} moduleinst_0})] +[visit_exp store#2579] +[visit_id store#2579] +[visit_exp frame#2597] +[visit_id frame#2597] +[visit_exp (s, {`LOCALS`{`val?*#5`} [], `MODULE`{moduleinst#27} moduleinst_0})] +[visit_exp s] +[visit_id s] not free +[visit_exp {`LOCALS`{`val?*#5`} [], `MODULE`{moduleinst#27} moduleinst_0}] +[visit_exp `val?*#5`] +[visit_id val?*#5] +[visit_exp []] +[visit_exp moduleinst#27] +[visit_id moduleinst#27] +[visit_exp moduleinst_0] +[visit_id moduleinst_0] not free +[visit_exp ((z', val_G*{val_G <- `val_G*`}) = $evalglobals(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`}))] +[visit_exp (z', val_G*{val_G <- `val_G*`})] +[visit_exp z'] +[visit_id z'] +[visit_exp val_G*{val_G <- `val_G*`}] +[scope_enter val_G] +[visit_exp val_G] +[visit_id val_G] not free +[visit_id val_G] not free +[scope_exit val_G] +[visit_exp `val_G*`] +[visit_id val_G*] no dims +[visit_id val_G*] +[visit_exp $evalglobals(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`})] +[visit_exp z] +[visit_id z] not free +[visit_exp globaltype*{globaltype <- `globaltype*`}] +[scope_enter globaltype] +[visit_exp globaltype] +[visit_id globaltype] not free +[visit_id globaltype] not free +[scope_exit globaltype] +[visit_exp `globaltype*`] +[visit_id globaltype*] not free +[visit_id globaltype*] no dims +[visit_exp expr_G*{expr_G <- `expr_G*`}] +[scope_enter expr_G] +[visit_exp expr_G] +[visit_id expr_G] not free +[visit_id expr_G] not free +[scope_exit expr_G] +[visit_exp `expr_G*`] +[visit_id expr_G*] not free +[visit_id expr_G*] no dims +[scope_enter expr_T] +[scope_enter ref_T] +[visit_exp (z', expr_T, z', [(ref_T : ref <: val)])] +[visit_exp z'] +[visit_id z'] not free +[visit_exp expr_T] +[visit_id expr_T] not free +[visit_exp z'] +[visit_id z'] not free +[visit_exp [(ref_T : ref <: val)]] +[visit_exp (ref_T : ref <: val)] +[visit_exp ref_T] +[visit_id ref_T] not free +[visit_id expr_T] not free +[visit_id ref_T] not free +[scope_exit ref_T] +[scope_exit expr_T] +[visit_exp `expr_T*`] +[visit_id expr_T*] not free +[visit_id expr_T*] no dims +[visit_exp `ref_T*`] +[visit_id ref_T*] no dims +[visit_id ref_T*] +[scope_enter expr_E*] +[scope_enter ref_E*] +[scope_enter expr_E] +[scope_enter ref_E] +[visit_exp (z', expr_E, z', [(ref_E : ref <: val)])] +[visit_exp z'] +[visit_id z'] not free +[visit_exp expr_E] +[visit_id expr_E] not free +[visit_exp z'] +[visit_id z'] not free +[visit_exp [(ref_E : ref <: val)]] +[visit_exp (ref_E : ref <: val)] +[visit_exp ref_E] +[visit_id ref_E] not free +[visit_id expr_E] not free +[visit_id ref_E] not free +[scope_exit ref_E] +[scope_exit expr_E] +[visit_exp `expr_E*`] +[visit_id expr_E*] not free +[visit_id expr_E*] no dims +[visit_exp `ref_E*`] +[visit_id ref_E*] not free +[visit_id ref_E*] no dims +[visit_id expr_E*] not free +[visit_id expr_E*] no dims +[visit_id ref_E*] not free +[visit_id ref_E*] no dims +[scope_exit ref_E*] +[scope_exit expr_E*] +[visit_exp `expr_E**`] +[visit_id expr_E**] not free +[visit_id expr_E**] no dims +[visit_exp `ref_E**`] +[visit_id ref_E**] no dims +[visit_id ref_E**] +[visit_exp ((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**`}))] +[visit_exp (s', moduleinst)] +[visit_exp s'] +[visit_id s'] not free +[visit_exp moduleinst] +[visit_id moduleinst] not free +[visit_exp $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**`})] +[visit_exp s] +[visit_id s] not free +[visit_exp module] +[visit_id module] not free +[visit_exp externaddr*{externaddr <- `externaddr*`}] +[scope_enter externaddr] +[visit_exp externaddr] +[visit_id externaddr] not free +[visit_id externaddr] not free +[scope_exit externaddr] +[visit_exp `externaddr*`] +[visit_id externaddr*] not free +[visit_id externaddr*] no dims +[visit_exp val_G*{val_G <- `val_G*`}] +[scope_enter val_G] +[visit_exp val_G] +[visit_id val_G] not free +[visit_id val_G] not free +[scope_exit val_G] +[visit_exp `val_G*`] +[visit_id val_G*] not free +[visit_id val_G*] no dims +[visit_exp ref_T*{ref_T <- `ref_T*`}] +[scope_enter ref_T] +[visit_exp ref_T] +[visit_id ref_T] not free +[visit_id ref_T] not free +[scope_exit ref_T] +[visit_exp `ref_T*`] +[visit_id ref_T*] not free +[visit_id ref_T*] no dims +[visit_exp ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}] +[scope_enter ref_E*] +[visit_exp ref_E*{ref_E <- `ref_E*`}] +[scope_enter ref_E] +[visit_exp ref_E] +[visit_id ref_E] not free +[visit_id ref_E] not free +[scope_exit ref_E] +[visit_exp `ref_E*`] +[visit_id ref_E*] not free +[visit_id ref_E*] no dims +[visit_id ref_E*] not free +[visit_id ref_E*] no dims +[scope_exit ref_E*] +[visit_exp `ref_E**`] +[visit_id ref_E**] not free +[visit_id ref_E**] no dims +[visit_exp (instr_D*{instr_D <- `instr_D*`} = $concat_(syntax instr, $rundata_(`%`_dataidx{i#47725}(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){i#47725 <- `i#47725*`}))] +[visit_exp instr_D*{instr_D <- `instr_D*`}] +[scope_enter instr_D] +[visit_exp instr_D] +[visit_id instr_D] not free +[visit_id instr_D] not free +[scope_exit instr_D] +[visit_exp `instr_D*`] +[visit_id instr_D*] not free +[visit_id instr_D*] no dims +[visit_exp $concat_(syntax instr, $rundata_(`%`_dataidx{i#47725}(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){i#47725 <- `i#47725*`})] +[visit_exp $rundata_(`%`_dataidx{i#47725}(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){i#47725 <- `i#47725*`}] +[scope_enter i_D] +[scope_enter i#47725] +[visit_exp $rundata_(`%`_dataidx{i#47725}(i_D), data*{data <- `data*`}[i_D])] +[visit_exp `%`_dataidx{i#47725}(i_D)] +[visit_exp i#47725] +[visit_id i#47725] not free +[visit_exp (i_D)] +[visit_exp i_D] +[visit_id i_D] +[visit_exp data*{data <- `data*`}[i_D]] +[visit_exp data*{data <- `data*`}] +[scope_enter data] +[visit_exp data] +[visit_id data] not free +[visit_id data] not free +[scope_exit data] +[visit_exp `data*`] +[visit_id data*] not free +[visit_id data*] no dims +[visit_exp i_D] +[visit_id i_D] not free +[visit_id i_D] not free +[visit_id i#47725] not free +[scope_exit i#47725] +[scope_exit i_D] +[visit_exp |data*{data <- `data*`}|] +[visit_exp data*{data <- `data*`}] +[scope_enter data] +[visit_exp data] +[visit_id data] not free +[visit_id data] not free +[scope_exit data] +[visit_exp `data*`] +[visit_id data*] not free +[visit_id data*] no dims +[visit_exp `i#47725*`] +[visit_id i#47725*] no dims +[visit_id i#47725*] +[visit_exp (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx{i#47785}(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){i#47785 <- `i#47785*`}))] +[visit_exp instr_E*{instr_E <- `instr_E*`}] +[scope_enter instr_E] +[visit_exp instr_E] +[visit_id instr_E] not free +[visit_id instr_E] not free +[scope_exit instr_E] +[visit_exp `instr_E*`] +[visit_id instr_E*] not free +[visit_id instr_E*] no dims +[visit_exp $concat_(syntax instr, $runelem_(`%`_elemidx{i#47785}(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){i#47785 <- `i#47785*`})] +[visit_exp $runelem_(`%`_elemidx{i#47785}(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){i#47785 <- `i#47785*`}] +[scope_enter i_E] +[scope_enter i#47785] +[visit_exp $runelem_(`%`_elemidx{i#47785}(i_E), elem*{elem <- `elem*`}[i_E])] +[visit_exp `%`_elemidx{i#47785}(i_E)] +[visit_exp i#47785] +[visit_id i#47785] not free +[visit_exp (i_E)] +[visit_exp i_E] +[visit_id i_E] +[visit_exp elem*{elem <- `elem*`}[i_E]] +[visit_exp elem*{elem <- `elem*`}] +[scope_enter elem] +[visit_exp elem] +[visit_id elem] not free +[visit_id elem] not free +[scope_exit elem] +[visit_exp `elem*`] +[visit_id elem*] not free +[visit_id elem*] no dims +[visit_exp i_E] +[visit_id i_E] not free +[visit_id i_E] not free +[visit_id i#47785] not free +[scope_exit i#47785] +[scope_exit i_E] +[visit_exp |elem*{elem <- `elem*`}|] +[visit_exp elem*{elem <- `elem*`}] +[scope_enter elem] +[visit_exp elem] +[visit_id elem] not free +[visit_id elem] not free +[scope_exit elem] +[visit_exp `elem*`] +[visit_id elem*] not free +[visit_id elem*] no dims +[visit_exp `i#47785*`] +[visit_id i#47785*] no dims +[visit_id i#47785*] +[visit_exp (instr_S?{instr_S <- `instr_S?`} = `CALL`_instr{funcidx#3159}(x)?{funcidx#3159 <- `funcidx#3159?`, x <- `x?`})] +[visit_exp instr_S?{instr_S <- `instr_S?`}] +[scope_enter instr_S] +[visit_exp instr_S] +[visit_id instr_S] not free +[visit_id instr_S] not free +[scope_exit instr_S] +[visit_exp `instr_S?`] +[visit_id instr_S?] not free +[visit_id instr_S?] no dims +[visit_exp `CALL`_instr{funcidx#3159}(x)?{funcidx#3159 <- `funcidx#3159?`, x <- `x?`}] +[scope_enter funcidx#3159] +[scope_enter x] +[visit_exp `CALL`_instr{funcidx#3159}(x)] +[visit_exp funcidx#3159] +[visit_id funcidx#3159] not free +[visit_exp (x)] +[visit_exp x] +[visit_id x] not free +[visit_id funcidx#3159] not free +[visit_id x] not free +[scope_exit x] +[scope_exit funcidx#3159] +[visit_exp `funcidx#3159?`] +[visit_id funcidx#3159?] no dims +[visit_id funcidx#3159?] +[visit_exp `x?`] +[visit_id x?] not free +[visit_id x?] no dims +=> + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $instantiate{s : store, module : module, `externaddr*` : externaddr*, state#2219 : state, `instr*#2334` : instr*, store#2627 : store, frame#2645 : frame, s' : store, `val?*#6` : val?*, moduleinst#28 : moduleinst, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `externtype*#168` : externtype*, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*#125` : type*, `import*#125` : import*, `tag*#125` : tag*, `global*#149` : global*, `mem*#149` : mem*, `table*#149` : table*, `func*#125` : func*, `data*#125` : data*, `elem*#149` : elem*, `start?#125` : start?, `export*#125` : export*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `expr#4805*` : expr*, `expr_G*` : expr*, `globaltype*` : globaltype*, `globaltype#2271*` : globaltype*, `expr#4823*` : expr*, `expr_T*` : expr*, `tabletype*` : tabletype*, `tabletype#1116*` : tabletype*, `byte**` : byte**, `byte*#2187*` : byte**, `datamode*` : datamode*, `datamode#2151*` : datamode*, `elemmode*` : elemmode*, `elemmode#3277*` : elemmode*, `expr*#3277*` : expr**, `expr_E**` : expr**, `reftype*` : reftype*, `reftype#3919*` : reftype*, `funcidx#3157?` : funcidx?, `x?` : idx?, moduleinst_0 : moduleinst, `deftype*#96` : deftype*, `tagaddr*#7` : tagaddr*, `globaladdr*#7` : globaladdr*, `memaddr*#7` : memaddr*, `tableaddr*#7` : tableaddr*, `funcaddr*#8` : funcaddr*, i_F : nat, `funcinst*#15*` : funcinst**, `dataaddr*#5` : dataaddr*, `elemaddr*#5` : elemaddr*, `exportinst*#3` : exportinst*, z : state, store#2579 : store, frame#2597 : frame, `val?*#5` : val?*, moduleinst#27 : moduleinst, z' : state, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, i_D : nat, `i#47725*` : nat*, i_E : nat, `i#47785*` : nat*, `funcidx#3159?` : funcidx?}(s, module, externaddr*{externaddr <- `externaddr*`}) = `%;%`_config{state#2219, `instr*#2334`}(`%;%`_state{store#2627, frame#2645}(s', {`LOCALS`{`val?*#6`} [], `MODULE`{moduleinst#28} moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) + -- Module_ok: `|-%:%`(module, `%->%`_moduletype{`externtype*#168`}(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*#125`, `import*#125`, `tag*#125`, `global*#149`, `mem*#149`, `table*#149`, `func*#125`, `data*#125`, `elem*#149`, `start?#125`, `export*#125`}(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#2271, expr#4805}(globaltype, expr_G)*{expr#4805 <- `expr#4805*`, expr_G <- `expr_G*`, globaltype <- `globaltype*`, globaltype#2271 <- `globaltype#2271*`}) + -- if (table*{table <- `table*`} = `TABLE`_table{tabletype#1116, expr#4823}(tabletype, expr_T)*{expr#4823 <- `expr#4823*`, expr_T <- `expr_T*`, tabletype <- `tabletype*`, tabletype#1116 <- `tabletype#1116*`}) + -- if (data*{data <- `data*`} = `DATA`_data{`byte*#2187`, datamode#2151}(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, `byte*#2187` <- `byte*#2187*`, datamode <- `datamode*`, datamode#2151 <- `datamode#2151*`}) + -- if (elem*{elem <- `elem*`} = `ELEM`_elem{reftype#3919, `expr*#3277`, elemmode#3277}(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemmode#3277 <- `elemmode#3277*`, `expr*#3277` <- `expr*#3277*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`, reftype#3919 <- `reftype#3919*`}) + -- if (start?{start <- `start?`} = `START`_start{funcidx#3157}(x)?{funcidx#3157 <- `funcidx#3157?`, x <- `x?`}) + -- if (moduleinst_0 = {`TYPES`{`deftype*#96`} $alloctypes(type*{type <- `type*`}), `TAGS`{`tagaddr*#7`} [], `GLOBALS`{`globaladdr*#7`} $globalsxa(externaddr*{externaddr <- `externaddr*`}), `MEMS`{`memaddr*#7`} [], `TABLES`{`tableaddr*#7`} [], `FUNCS`{`funcaddr*#8`} $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.`FUNCS`_store{`funcinst*#15`}| + i_F)^(i_F<|func*{func <- `func*`}|){`funcinst*#15` <- `funcinst*#15*`}, `DATAS`{`dataaddr*#5`} [], `ELEMS`{`elemaddr*#5`} [], `EXPORTS`{`exportinst*#3`} []}) + -- if (z = `%;%`_state{store#2579, frame#2597}(s, {`LOCALS`{`val?*#5`} [], `MODULE`{moduleinst#27} 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#47725}(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){i#47725 <- `i#47725*`})) + -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx{i#47785}(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){i#47785 <- `i#47785*`})) + -- if (instr_S?{instr_S <- `instr_S?`} = `CALL`_instr{funcidx#3159}(x)?{funcidx#3159 <- `funcidx#3159?`, x <- `x?`}) +[check_dims] _ funcaddr store +DecD invoke(store : store, funcaddr : funcaddr, val*) : config +[visit_id store] not free +[visit_id funcaddr] not free +[visit_id _] not free +[check_dims] X*#13028 X*#13041 dataaddr*#6 deftype#12 deftype#13 deftype*#97 elemaddr*#6 exportinst*#4 frame#2657 funcaddr funcaddr#21 funcaddr*#9 funcinst*#16 funcinst*#17 globaladdr*#8 instr*#2346 memaddr*#8 moduleinst#29 resulttype#3026 s state#2231 store#2639 t_1 t_2 tableaddr*#8 tagaddr*#8 typeuse#65 val val?*#7 +[visit_exp s] +[visit_id s] +[visit_exp funcaddr] +[visit_id funcaddr] +[visit_exp val*{val <- `val*`}] +[scope_enter val] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp `val*`] +[visit_id val*] no dims +[visit_id val*] +[visit_exp `%;%`_config{state#2231, `instr*#2346`}(`%;%`_state{store#2639, frame#2657}(s, {`LOCALS`{`val?*#7`} [], `MODULE`{moduleinst#29} {`TYPES`{`deftype*#97`} [], `TAGS`{`tagaddr*#8`} [], `GLOBALS`{`globaladdr*#8`} [], `MEMS`{`memaddr*#8`} [], `TABLES`{`tableaddr*#8`} [], `FUNCS`{`funcaddr*#9`} [], `DATAS`{`dataaddr*#6`} [], `ELEMS`{`elemaddr*#6`} [], `EXPORTS`{`exportinst*#4`} []}}), (val : val <: instr)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr{funcaddr#21}(funcaddr) `CALL_REF`_instr{typeuse#65}((s.`FUNCS`_store{`funcinst*#17`}[funcaddr].`TYPE`_funcinst{deftype#13} : deftype <: typeuse))])] +[visit_exp state#2231] +[visit_id state#2231] +[visit_exp `instr*#2346`] +[visit_id instr*#2346] +[visit_exp (`%;%`_state{store#2639, frame#2657}(s, {`LOCALS`{`val?*#7`} [], `MODULE`{moduleinst#29} {`TYPES`{`deftype*#97`} [], `TAGS`{`tagaddr*#8`} [], `GLOBALS`{`globaladdr*#8`} [], `MEMS`{`memaddr*#8`} [], `TABLES`{`tableaddr*#8`} [], `FUNCS`{`funcaddr*#9`} [], `DATAS`{`dataaddr*#6`} [], `ELEMS`{`elemaddr*#6`} [], `EXPORTS`{`exportinst*#4`} []}}), (val : val <: instr)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr{funcaddr#21}(funcaddr) `CALL_REF`_instr{typeuse#65}((s.`FUNCS`_store{`funcinst*#17`}[funcaddr].`TYPE`_funcinst{deftype#13} : deftype <: typeuse))])] +[visit_exp `%;%`_state{store#2639, frame#2657}(s, {`LOCALS`{`val?*#7`} [], `MODULE`{moduleinst#29} {`TYPES`{`deftype*#97`} [], `TAGS`{`tagaddr*#8`} [], `GLOBALS`{`globaladdr*#8`} [], `MEMS`{`memaddr*#8`} [], `TABLES`{`tableaddr*#8`} [], `FUNCS`{`funcaddr*#9`} [], `DATAS`{`dataaddr*#6`} [], `ELEMS`{`elemaddr*#6`} [], `EXPORTS`{`exportinst*#4`} []}})] +[visit_exp store#2639] +[visit_id store#2639] +[visit_exp frame#2657] +[visit_id frame#2657] +[visit_exp (s, {`LOCALS`{`val?*#7`} [], `MODULE`{moduleinst#29} {`TYPES`{`deftype*#97`} [], `TAGS`{`tagaddr*#8`} [], `GLOBALS`{`globaladdr*#8`} [], `MEMS`{`memaddr*#8`} [], `TABLES`{`tableaddr*#8`} [], `FUNCS`{`funcaddr*#9`} [], `DATAS`{`dataaddr*#6`} [], `ELEMS`{`elemaddr*#6`} [], `EXPORTS`{`exportinst*#4`} []}})] +[visit_exp s] +[visit_id s] not free +[visit_exp {`LOCALS`{`val?*#7`} [], `MODULE`{moduleinst#29} {`TYPES`{`deftype*#97`} [], `TAGS`{`tagaddr*#8`} [], `GLOBALS`{`globaladdr*#8`} [], `MEMS`{`memaddr*#8`} [], `TABLES`{`tableaddr*#8`} [], `FUNCS`{`funcaddr*#9`} [], `DATAS`{`dataaddr*#6`} [], `ELEMS`{`elemaddr*#6`} [], `EXPORTS`{`exportinst*#4`} []}}] +[visit_exp `val?*#7`] +[visit_id val?*#7] +[visit_exp []] +[visit_exp moduleinst#29] +[visit_id moduleinst#29] +[visit_exp {`TYPES`{`deftype*#97`} [], `TAGS`{`tagaddr*#8`} [], `GLOBALS`{`globaladdr*#8`} [], `MEMS`{`memaddr*#8`} [], `TABLES`{`tableaddr*#8`} [], `FUNCS`{`funcaddr*#9`} [], `DATAS`{`dataaddr*#6`} [], `ELEMS`{`elemaddr*#6`} [], `EXPORTS`{`exportinst*#4`} []}] +[visit_exp `deftype*#97`] +[visit_id deftype*#97] +[visit_exp []] +[visit_exp `tagaddr*#8`] +[visit_id tagaddr*#8] +[visit_exp []] +[visit_exp `globaladdr*#8`] +[visit_id globaladdr*#8] +[visit_exp []] +[visit_exp `memaddr*#8`] +[visit_id memaddr*#8] +[visit_exp []] +[visit_exp `tableaddr*#8`] +[visit_id tableaddr*#8] +[visit_exp []] +[visit_exp `funcaddr*#9`] +[visit_id funcaddr*#9] +[visit_exp []] +[visit_exp `dataaddr*#6`] +[visit_id dataaddr*#6] +[visit_exp []] +[visit_exp `elemaddr*#6`] +[visit_id elemaddr*#6] +[visit_exp []] +[visit_exp `exportinst*#4`] +[visit_id exportinst*#4] +[visit_exp []] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr{funcaddr#21}(funcaddr) `CALL_REF`_instr{typeuse#65}((s.`FUNCS`_store{`funcinst*#17`}[funcaddr].`TYPE`_funcinst{deftype#13} : deftype <: typeuse))]] +[visit_exp (val : val <: instr)*{val <- `val*`}] +[scope_enter val] +[visit_exp (val : val <: instr)] +[visit_exp val] +[visit_id val] not free +[visit_id val] not free +[scope_exit val] +[visit_exp `val*`] +[visit_id val*] not free +[visit_id val*] no dims +[visit_exp [`REF.FUNC_ADDR`_instr{funcaddr#21}(funcaddr) `CALL_REF`_instr{typeuse#65}((s.`FUNCS`_store{`funcinst*#17`}[funcaddr].`TYPE`_funcinst{deftype#13} : deftype <: typeuse))]] +[visit_exp `REF.FUNC_ADDR`_instr{funcaddr#21}(funcaddr)] +[visit_exp funcaddr#21] +[visit_id funcaddr#21] +[visit_exp (funcaddr)] +[visit_exp funcaddr] +[visit_id funcaddr] not free +[visit_exp `CALL_REF`_instr{typeuse#65}((s.`FUNCS`_store{`funcinst*#17`}[funcaddr].`TYPE`_funcinst{deftype#13} : deftype <: typeuse))] +[visit_exp typeuse#65] +[visit_id typeuse#65] +[visit_exp ((s.`FUNCS`_store{`funcinst*#17`}[funcaddr].`TYPE`_funcinst{deftype#13} : deftype <: typeuse))] +[visit_exp (s.`FUNCS`_store{`funcinst*#17`}[funcaddr].`TYPE`_funcinst{deftype#13} : deftype <: typeuse)] +[visit_exp s.`FUNCS`_store{`funcinst*#17`}[funcaddr].`TYPE`_funcinst{deftype#13}] +[visit_exp s.`FUNCS`_store{`funcinst*#17`}[funcaddr]] +[visit_exp s.`FUNCS`_store{`funcinst*#17`}] +[visit_exp s] +[visit_id s] not free +[visit_exp `funcinst*#17`] +[visit_id funcinst*#17] +[visit_exp funcaddr] +[visit_id funcaddr] not free +[visit_exp deftype#13] +[visit_id deftype#13] +[visit_exp (s.`FUNCS`_store{`funcinst*#16`}[funcaddr].`TYPE`_funcinst{deftype#12}, `FUNC%->%`_comptype{resulttype#3026}(`%`_resulttype{`X*#13028`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13041`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp s.`FUNCS`_store{`funcinst*#16`}[funcaddr].`TYPE`_funcinst{deftype#12}] +[visit_exp s.`FUNCS`_store{`funcinst*#16`}[funcaddr]] +[visit_exp s.`FUNCS`_store{`funcinst*#16`}] +[visit_exp s] +[visit_id s] not free +[visit_exp `funcinst*#16`] +[visit_id funcinst*#16] +[visit_exp funcaddr] +[visit_id funcaddr] not free +[visit_exp deftype#12] +[visit_id deftype#12] +[visit_exp `FUNC%->%`_comptype{resulttype#3026}(`%`_resulttype{`X*#13028`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13041`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#3026] +[visit_id resulttype#3026] +[visit_exp (`%`_resulttype{`X*#13028`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13041`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#13028`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#13028`] +[visit_id X*#13028] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] no dims +[visit_id t_1*] +[visit_exp `%`_resulttype{`X*#13041`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#13041`] +[visit_id X*#13041] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] no dims +[visit_id t_2*] +[scope_enter t_1] +[scope_enter val] +[visit_exp (s, val, t_1)] +[visit_exp s] +[visit_id s] not free +[visit_exp val] +[visit_id val] not free +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[visit_id val] not free +[scope_exit val] +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] not free +[visit_id t_1*] no dims +[visit_exp `val*`] +[visit_id val*] not free +[visit_id val*] no dims +=> + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $invoke{s : store, funcaddr : funcaddr, `val*` : val*, state#2231 : state, `instr*#2346` : instr*, store#2639 : store, frame#2657 : frame, `val?*#7` : val?*, moduleinst#29 : moduleinst, `deftype*#97` : deftype*, `tagaddr*#8` : tagaddr*, `globaladdr*#8` : globaladdr*, `memaddr*#8` : memaddr*, `tableaddr*#8` : tableaddr*, `funcaddr*#9` : funcaddr*, `dataaddr*#6` : dataaddr*, `elemaddr*#6` : elemaddr*, `exportinst*#4` : exportinst*, funcaddr#21 : funcaddr, typeuse#65 : typeuse, `funcinst*#17` : funcinst*, deftype#13 : deftype, `funcinst*#16` : funcinst*, deftype#12 : deftype, resulttype#3026 : resulttype, `X*#13028` : valtype*, `t_1*` : valtype*, `X*#13041` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config{state#2231, `instr*#2346`}(`%;%`_state{store#2639, frame#2657}(s, {`LOCALS`{`val?*#7`} [], `MODULE`{moduleinst#29} {`TYPES`{`deftype*#97`} [], `TAGS`{`tagaddr*#8`} [], `GLOBALS`{`globaladdr*#8`} [], `MEMS`{`memaddr*#8`} [], `TABLES`{`tableaddr*#8`} [], `FUNCS`{`funcaddr*#9`} [], `DATAS`{`dataaddr*#6`} [], `ELEMS`{`elemaddr*#6`} [], `EXPORTS`{`exportinst*#4`} []}}), (val : val <: instr)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr{funcaddr#21}(funcaddr) `CALL_REF`_instr{typeuse#65}((s.`FUNCS`_store{`funcinst*#17`}[funcaddr].`TYPE`_funcinst{deftype#13} : deftype <: typeuse))]) + -- Expand: `%~~%`(s.`FUNCS`_store{`funcinst*#16`}[funcaddr].`TYPE`_funcinst{deftype#12}, `FUNC%->%`_comptype{resulttype#3026}(`%`_resulttype{`X*#13028`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13041`}(t_2*{t_2 <- `t_2*`}))) + -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} +ps' = +[check_dims] +[check_dims] i#47807 +dims \ = , i#47807 +[visit_exp `%`_byte{i#47807}(``)] +[visit_exp i#47807] +[visit_id i#47807] +[visit_exp (``)] +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = (N : N) +[check_dims] N +[check_dims] N i#47815 i#47823 n +dims \ N = i#47815, i#47823, n +[visit_exp `%`_uN{i#47823}(n)] +[visit_exp i#47823] +[visit_id i#47823] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `%`_byte{i#47815}(n)] +[visit_exp i#47815] +[visit_id i#47815] +[visit_exp (n)] +[visit_exp n] +[visit_id n] not free +[visit_exp ((n < (2 ^ 7)) /\ (n < (2 ^ N)))] +[visit_exp (n < (2 ^ 7))] +[visit_exp n] +[visit_id n] not free +[visit_exp (2 ^ 7)] +[visit_exp 2] +[visit_exp 7] +[visit_exp (n < (2 ^ N))] +[visit_exp n] +[visit_id n] not free +[visit_exp (2 ^ N)] +[visit_exp 2] +[visit_exp N] +[visit_id N] not free +[visit_id N] no dims +[check_dims] N i#47831 i#47856 i#47866 m n +dims \ N = i#47831, i#47856, i#47866, m, n +[visit_exp `%`_uN{i#47866}((((2 ^ 7) * m) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)))] +[visit_exp i#47866] +[visit_id i#47866] +[visit_exp ((((2 ^ 7) * m) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)))] +[visit_exp (((2 ^ 7) * m) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat))] +[visit_exp ((2 ^ 7) * m)] +[visit_exp (2 ^ 7)] +[visit_exp 2] +[visit_exp 7] +[visit_exp m] +[visit_id m] +[visit_exp (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)] +[visit_exp ((n : nat <:> int) - ((2 ^ 7) : nat <:> int))] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] +[visit_exp ((2 ^ 7) : nat <:> int)] +[visit_exp (2 ^ 7)] +[visit_exp 2] +[visit_exp 7] +[visit_exp `%`_byte{i#47831}(n)] +[visit_exp i#47831] +[visit_id i#47831] +[visit_exp (n)] +[visit_exp n] +[visit_id n] not free +[visit_exp `%`_uN{i#47856}(m)] +[visit_exp i#47856] +[visit_id i#47856] +[visit_exp (m)] +[visit_exp m] +[visit_id m] not free +[visit_exp (((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat)] +[visit_exp ((N : nat <:> int) - (7 : nat <:> int))] +[visit_exp (N : nat <:> int)] +[visit_exp N] +[visit_id N] not free +[visit_id N] no dims +[visit_exp (7 : nat <:> int)] +[visit_exp 7] +[visit_exp ((n >= (2 ^ 7)) /\ (N > 7))] +[visit_exp (n >= (2 ^ 7))] +[visit_exp n] +[visit_id n] not free +[visit_exp (2 ^ 7)] +[visit_exp 2] +[visit_exp 7] +[visit_exp (N > 7)] +[visit_exp N] +[visit_id N] not free +[visit_id N] no dims +[visit_exp 7] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +ps' = (N : N) +[check_dims] N +[check_dims] N i#47874 i#47882 n +dims \ N = i#47874, i#47882, n +[visit_exp `%`_sN{i#47882}((n : nat <:> int))] +[visit_exp i#47882] +[visit_id i#47882] +[visit_exp ((n : nat <:> int))] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] +[visit_exp `%`_byte{i#47874}(n)] +[visit_exp i#47874] +[visit_id i#47874] +[visit_exp (n)] +[visit_exp n] +[visit_id n] not free +[visit_exp ((n < (2 ^ 6)) /\ (n < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))] +[visit_exp (n < (2 ^ 6))] +[visit_exp n] +[visit_id n] not free +[visit_exp (2 ^ 6)] +[visit_exp 2] +[visit_exp 6] +[visit_exp (n < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp n] +[visit_id n] not free +[visit_exp (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp 2] +[visit_exp (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp ((N : nat <:> int) - (1 : nat <:> int))] +[visit_exp (N : nat <:> int)] +[visit_exp N] +[visit_id N] not free +[visit_id N] no dims +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[check_dims] N i#47890 i#47898 n +dims \ N = i#47890, i#47898, n +[visit_exp `%`_sN{i#47898}(((n : nat <:> int) - ((2 ^ 7) : nat <:> int)))] +[visit_exp i#47898] +[visit_id i#47898] +[visit_exp (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)))] +[visit_exp ((n : nat <:> int) - ((2 ^ 7) : nat <:> int))] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] +[visit_exp ((2 ^ 7) : nat <:> int)] +[visit_exp (2 ^ 7)] +[visit_exp 2] +[visit_exp 7] +[visit_exp `%`_byte{i#47890}(n)] +[visit_exp i#47890] +[visit_id i#47890] +[visit_exp (n)] +[visit_exp n] +[visit_id n] not free +[visit_exp ((((2 ^ 6) <= n) /\ (n < (2 ^ 7))) /\ ((n : nat <:> int) >= (((2 ^ 7) : nat <:> int) - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))))] +[visit_exp (((2 ^ 6) <= n) /\ (n < (2 ^ 7)))] +[visit_exp ((2 ^ 6) <= n)] +[visit_exp (2 ^ 6)] +[visit_exp 2] +[visit_exp 6] +[visit_exp n] +[visit_id n] not free +[visit_exp (n < (2 ^ 7))] +[visit_exp n] +[visit_id n] not free +[visit_exp (2 ^ 7)] +[visit_exp 2] +[visit_exp 7] +[visit_exp ((n : nat <:> int) >= (((2 ^ 7) : nat <:> int) - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)))] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp (((2 ^ 7) : nat <:> int) - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))] +[visit_exp ((2 ^ 7) : nat <:> int)] +[visit_exp (2 ^ 7)] +[visit_exp 2] +[visit_exp 7] +[visit_exp ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)] +[visit_exp (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp 2] +[visit_exp (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp ((N : nat <:> int) - (1 : nat <:> int))] +[visit_exp (N : nat <:> int)] +[visit_exp N] +[visit_id N] not free +[visit_id N] no dims +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[check_dims] N i i#47906 i#47943 i#47945 n +dims \ N = i, i#47906, i#47943, i#47945, n +[visit_exp `%`_sN{i#47945}(((((2 ^ 7) * i!`%`_uN{i#47943}.0) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int))] +[visit_exp i#47945] +[visit_id i#47945] +[visit_exp (((((2 ^ 7) * i!`%`_uN{i#47943}.0) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int))] +[visit_exp ((((2 ^ 7) * i!`%`_uN{i#47943}.0) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int)] +[visit_exp (((2 ^ 7) * i!`%`_uN{i#47943}.0) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat))] +[visit_exp ((2 ^ 7) * i!`%`_uN{i#47943}.0)] +[visit_exp (2 ^ 7)] +[visit_exp 2] +[visit_exp 7] +[visit_exp i!`%`_uN{i#47943}.0] +[visit_exp i!`%`_uN{i#47943}] +[visit_exp i] +[visit_id i] +[visit_exp i#47943] +[visit_id i#47943] +[visit_exp (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)] +[visit_exp ((n : nat <:> int) - ((2 ^ 7) : nat <:> int))] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] +[visit_exp ((2 ^ 7) : nat <:> int)] +[visit_exp (2 ^ 7)] +[visit_exp 2] +[visit_exp 7] +[visit_exp `%`_byte{i#47906}(n)] +[visit_exp i#47906] +[visit_id i#47906] +[visit_exp (n)] +[visit_exp n] +[visit_id n] not free +[visit_exp i] +[visit_id i] not free +[visit_exp (((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat)] +[visit_exp ((N : nat <:> int) - (7 : nat <:> int))] +[visit_exp (N : nat <:> int)] +[visit_exp N] +[visit_id N] not free +[visit_id N] no dims +[visit_exp (7 : nat <:> int)] +[visit_exp 7] +[visit_exp ((n >= (2 ^ 7)) /\ (N > 7))] +[visit_exp (n >= (2 ^ 7))] +[visit_exp n] +[visit_id n] not free +[visit_exp (2 ^ 7)] +[visit_exp 2] +[visit_exp 7] +[visit_exp (N > 7)] +[visit_exp N] +[visit_id N] not free +[visit_id N] no dims +[visit_exp 7] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +ps' = (N : N) +[check_dims] N +[check_dims] N i i#47959 i#47961 +dims \ N = i, i#47959, i#47961 +[visit_exp `%`_iN{i#47961}($inv_signed_(N, i!`%`_sN{i#47959}.0))] +[visit_exp i#47961] +[visit_id i#47961] +[visit_exp ($inv_signed_(N, i!`%`_sN{i#47959}.0))] +[visit_exp $inv_signed_(N, i!`%`_sN{i#47959}.0)] +[visit_exp N] +[visit_id N] not free +[visit_id N] no dims +[visit_exp i!`%`_sN{i#47959}.0] +[visit_exp i!`%`_sN{i#47959}] +[visit_exp i] +[visit_id i] +[visit_exp i#47959] +[visit_id i#47959] +[visit_exp i] +[visit_id i] not free +[visit_exp N] +[visit_id N] not free +[visit_id N] no dims +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +ps' = (N : N) +[check_dims] N +[check_dims] N b +dims \ N = b +[visit_exp $inv_fbytes_(N, b*{b <- `b*`})] +[visit_exp N] +[visit_id N] not free +[visit_id N] no dims +[visit_exp b*{b <- `b*`}] +[scope_enter b] +[visit_exp b] +[visit_id b] not free +[visit_id b] not free +[scope_exit b] +[visit_exp `b*`] +[visit_id b*] no dims +[visit_id b*] +[visit_exp b*{b <- `b*`}] +[scope_enter b] +[visit_exp b] +[visit_id b] not free +[visit_id b] not free +[scope_exit b] +[visit_exp `b*`] +[visit_id b*] not free +[visit_id b*] no dims +[visit_exp (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] +[visit_exp ((N : nat <:> rat) / (8 : nat <:> rat))] +[visit_exp (N : nat <:> rat)] +[visit_exp N] +[visit_id N] not free +[visit_id N] no dims +[visit_exp (8 : nat <:> rat)] +[visit_exp 8] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +ps' = +[check_dims] +[check_dims] i#48009 i#48033 n +dims \ = i#48009, i#48033, n +[visit_exp `%`_u32{i#48033}(n)] +[visit_exp i#48033] +[visit_id i#48033] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `%`_uN{i#48009}(n)] +[visit_exp i#48009] +[visit_id i#48009] +[visit_exp (n)] +[visit_exp n] +[visit_id n] not free +[visit_exp 32] +ps' = +[check_dims] +[check_dims] i#48057 i#48081 n +dims \ = i#48057, i#48081, n +[visit_exp `%`_u64{i#48081}(n)] +[visit_exp i#48081] +[visit_id i#48081] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `%`_uN{i#48057}(n)] +[visit_exp i#48057] +[visit_id i#48057] +[visit_exp (n)] +[visit_exp n] +[visit_id n] not free +[visit_exp 64] +ps' = +[check_dims] +[check_dims] i +dims \ = i +[visit_exp i] +[visit_id i] +[visit_exp i] +[visit_id i] not free +[visit_exp 33] +ps' = +[check_dims] +[check_dims] p +dims \ = p +[visit_exp p] +[visit_id p] +[visit_exp p] +[visit_id p] not free +[visit_exp 32] +ps' = +[check_dims] +[check_dims] p +dims \ = p +[visit_exp p] +[visit_id p] +[visit_exp p] +[visit_id p] not free +[visit_exp 64] +ps' = (syntax el, grammar BX : el) +[check_dims] el +[check_dims] el i#48134 n +dims \ = el, i#48134, n +[visit_exp el^n{el <- `el*`}] +[scope_enter el] +[visit_exp el] +[visit_id el] not free +[visit_id el] not free +[scope_exit el] +[visit_exp n] +[visit_id n] +[visit_exp `el*`] +[visit_id el*] no dims +[visit_id el*] +[visit_exp `%`_u32{i#48134}(n)] +[visit_exp i#48134] +[visit_id i#48134] +[visit_exp (n)] +[visit_exp n] +[visit_id n] not free +[scope_enter el] +[visit_exp el] +[visit_id el] not free +[visit_id el] not free +[scope_exit el] +[visit_exp n] +[visit_id n] not free +[visit_exp `el*`] +[visit_id el*] not free +[visit_id el*] no dims +[check_dims] +[check_dims] byte +DecD cont(byte : byte) : nat +[visit_id byte] not free +[check_dims] b i#48144 i#48146 i#48148 +[visit_exp b] +[visit_id b] +[visit_exp (((b!`%`_byte{i#48148}.0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat)] +[visit_exp ((b!`%`_byte{i#48148}.0 : nat <:> int) - (128 : nat <:> int))] +[visit_exp (b!`%`_byte{i#48148}.0 : nat <:> int)] +[visit_exp b!`%`_byte{i#48148}.0] +[visit_exp b!`%`_byte{i#48148}] +[visit_exp b] +[visit_id b] not free +[visit_exp i#48148] +[visit_id i#48148] +[visit_exp (128 : nat <:> int)] +[visit_exp 128] +[visit_exp ((128 < b!`%`_byte{i#48144}.0) /\ (b!`%`_byte{i#48146}.0 < 192))] +[visit_exp (128 < b!`%`_byte{i#48144}.0)] +[visit_exp 128] +[visit_exp b!`%`_byte{i#48144}.0] +[visit_exp b!`%`_byte{i#48144}] +[visit_exp b] +[visit_id b] not free +[visit_exp i#48144] +[visit_id i#48144] +[visit_exp (b!`%`_byte{i#48146}.0 < 192)] +[visit_exp b!`%`_byte{i#48146}.0] +[visit_exp b!`%`_byte{i#48146}] +[visit_exp b] +[visit_id b] not free +[visit_exp i#48146] +[visit_id i#48146] +[visit_exp 192] +=> + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + def $cont{b : byte, i#48148 : nat, i#48144 : nat, i#48146 : nat}(b) = (((b!`%`_byte{i#48148}.0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat) + -- if ((128 < b!`%`_byte{i#48144}.0) /\ (b!`%`_byte{i#48146}.0 < 192)) +[check_dims] ch +[visit_exp ch*{ch <- `ch*`}] +[scope_enter ch] +[visit_exp ch] +[visit_id ch] not free +[visit_id ch] not free +[scope_exit ch] +[visit_exp `ch*`] +[visit_id ch*] no dims +[visit_id ch*] +[visit_exp $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`})] +[visit_exp $utf8([ch])*{ch <- `ch*`}] +[scope_enter ch] +[visit_exp $utf8([ch])] +[visit_exp [ch]] +[visit_exp ch] +[visit_id ch] not free +[visit_id ch] not free +[scope_exit ch] +[visit_exp `ch*`] +[visit_id ch*] not free +[visit_id ch*] no dims +=> + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + def $utf8{`ch*` : char*}(ch*{ch <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) +[check_dims] b ch i#48332 i#48340 i#48341 +[visit_exp [ch]] +[visit_exp ch] +[visit_id ch] +[visit_exp [b]] +[visit_exp b] +[visit_id b] +[visit_exp (ch!`%`_char{i#48332}.0 < 128)] +[visit_exp ch!`%`_char{i#48332}.0] +[visit_exp ch!`%`_char{i#48332}] +[visit_exp ch] +[visit_id ch] not free +[visit_exp i#48332] +[visit_id i#48332] +[visit_exp 128] +[visit_exp (`%`_byte{i#48341}(ch!`%`_char{i#48340}.0) = b)] +[visit_exp `%`_byte{i#48341}(ch!`%`_char{i#48340}.0)] +[visit_exp i#48341] +[visit_id i#48341] +[visit_exp (ch!`%`_char{i#48340}.0)] +[visit_exp ch!`%`_char{i#48340}.0] +[visit_exp ch!`%`_char{i#48340}] +[visit_exp ch] +[visit_id ch] not free +[visit_exp i#48340] +[visit_id i#48340] +[visit_exp b] +[visit_id b] not free +=> + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + def $utf8{ch : char, b : byte, i#48332 : nat, i#48341 : nat, i#48340 : nat}([ch]) = [b] + -- if (ch!`%`_char{i#48332}.0 < 128) + -- if (`%`_byte{i#48341}(ch!`%`_char{i#48340}.0) = b) +[check_dims] b_1 b_2 ch i#48356 i#48358 i#48360 i#48368 +[visit_exp [ch]] +[visit_exp ch] +[visit_id ch] +[visit_exp [b_1 b_2]] +[visit_exp b_1] +[visit_id b_1] +[visit_exp b_2] +[visit_id b_2] +[visit_exp ((128 <= ch!`%`_char{i#48356}.0) /\ (ch!`%`_char{i#48358}.0 < 2048))] +[visit_exp (128 <= ch!`%`_char{i#48356}.0)] +[visit_exp 128] +[visit_exp ch!`%`_char{i#48356}.0] +[visit_exp ch!`%`_char{i#48356}] +[visit_exp ch] +[visit_id ch] not free +[visit_exp i#48356] +[visit_id i#48356] +[visit_exp (ch!`%`_char{i#48358}.0 < 2048)] +[visit_exp ch!`%`_char{i#48358}.0] +[visit_exp ch!`%`_char{i#48358}] +[visit_exp ch] +[visit_id ch] not free +[visit_exp i#48358] +[visit_id i#48358] +[visit_exp 2048] +[visit_exp (ch!`%`_char{i#48368}.0 = (((2 ^ 6) * (((b_1!`%`_byte{i#48360}.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2)))] +[visit_exp ch!`%`_char{i#48368}.0] +[visit_exp ch!`%`_char{i#48368}] +[visit_exp ch] +[visit_id ch] not free +[visit_exp i#48368] +[visit_id i#48368] +[visit_exp (((2 ^ 6) * (((b_1!`%`_byte{i#48360}.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))] +[visit_exp ((2 ^ 6) * (((b_1!`%`_byte{i#48360}.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat))] +[visit_exp (2 ^ 6)] +[visit_exp 2] +[visit_exp 6] +[visit_exp (((b_1!`%`_byte{i#48360}.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)] +[visit_exp ((b_1!`%`_byte{i#48360}.0 : nat <:> int) - (192 : nat <:> int))] +[visit_exp (b_1!`%`_byte{i#48360}.0 : nat <:> int)] +[visit_exp b_1!`%`_byte{i#48360}.0] +[visit_exp b_1!`%`_byte{i#48360}] +[visit_exp b_1] +[visit_id b_1] not free +[visit_exp i#48360] +[visit_id i#48360] +[visit_exp (192 : nat <:> int)] +[visit_exp 192] +[visit_exp $cont(b_2)] +[visit_exp b_2] +[visit_id b_2] not free +=> + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + def $utf8{ch : char, b_1 : byte, b_2 : byte, i#48356 : nat, i#48358 : nat, i#48368 : nat, i#48360 : nat}([ch]) = [b_1 b_2] + -- if ((128 <= ch!`%`_char{i#48356}.0) /\ (ch!`%`_char{i#48358}.0 < 2048)) + -- if (ch!`%`_char{i#48368}.0 = (((2 ^ 6) * (((b_1!`%`_byte{i#48360}.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) +[check_dims] b_1 b_2 b_3 ch i#48400 i#48402 i#48404 i#48406 i#48408 i#48422 +[visit_exp [ch]] +[visit_exp ch] +[visit_id ch] +[visit_exp [b_1 b_2 b_3]] +[visit_exp b_1] +[visit_id b_1] +[visit_exp b_2] +[visit_id b_2] +[visit_exp b_3] +[visit_id b_3] +[visit_exp (((2048 <= ch!`%`_char{i#48400}.0) /\ (ch!`%`_char{i#48402}.0 < 55296)) \/ ((57344 <= ch!`%`_char{i#48404}.0) /\ (ch!`%`_char{i#48406}.0 < 65536)))] +[visit_exp ((2048 <= ch!`%`_char{i#48400}.0) /\ (ch!`%`_char{i#48402}.0 < 55296))] +[visit_exp (2048 <= ch!`%`_char{i#48400}.0)] +[visit_exp 2048] +[visit_exp ch!`%`_char{i#48400}.0] +[visit_exp ch!`%`_char{i#48400}] +[visit_exp ch] +[visit_id ch] not free +[visit_exp i#48400] +[visit_id i#48400] +[visit_exp (ch!`%`_char{i#48402}.0 < 55296)] +[visit_exp ch!`%`_char{i#48402}.0] +[visit_exp ch!`%`_char{i#48402}] +[visit_exp ch] +[visit_id ch] not free +[visit_exp i#48402] +[visit_id i#48402] +[visit_exp 55296] +[visit_exp ((57344 <= ch!`%`_char{i#48404}.0) /\ (ch!`%`_char{i#48406}.0 < 65536))] +[visit_exp (57344 <= ch!`%`_char{i#48404}.0)] +[visit_exp 57344] +[visit_exp ch!`%`_char{i#48404}.0] +[visit_exp ch!`%`_char{i#48404}] +[visit_exp ch] +[visit_id ch] not free +[visit_exp i#48404] +[visit_id i#48404] +[visit_exp (ch!`%`_char{i#48406}.0 < 65536)] +[visit_exp ch!`%`_char{i#48406}.0] +[visit_exp ch!`%`_char{i#48406}] +[visit_exp ch] +[visit_id ch] not free +[visit_exp i#48406] +[visit_id i#48406] +[visit_exp 65536] +[visit_exp (ch!`%`_char{i#48422}.0 = ((((2 ^ 12) * (((b_1!`%`_byte{i#48408}.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3)))] +[visit_exp ch!`%`_char{i#48422}.0] +[visit_exp ch!`%`_char{i#48422}] +[visit_exp ch] +[visit_id ch] not free +[visit_exp i#48422] +[visit_id i#48422] +[visit_exp ((((2 ^ 12) * (((b_1!`%`_byte{i#48408}.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))] +[visit_exp (((2 ^ 12) * (((b_1!`%`_byte{i#48408}.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2)))] +[visit_exp ((2 ^ 12) * (((b_1!`%`_byte{i#48408}.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat))] +[visit_exp (2 ^ 12)] +[visit_exp 2] +[visit_exp 12] +[visit_exp (((b_1!`%`_byte{i#48408}.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)] +[visit_exp ((b_1!`%`_byte{i#48408}.0 : nat <:> int) - (224 : nat <:> int))] +[visit_exp (b_1!`%`_byte{i#48408}.0 : nat <:> int)] +[visit_exp b_1!`%`_byte{i#48408}.0] +[visit_exp b_1!`%`_byte{i#48408}] +[visit_exp b_1] +[visit_id b_1] not free +[visit_exp i#48408] +[visit_id i#48408] +[visit_exp (224 : nat <:> int)] +[visit_exp 224] +[visit_exp ((2 ^ 6) * $cont(b_2))] +[visit_exp (2 ^ 6)] +[visit_exp 2] +[visit_exp 6] +[visit_exp $cont(b_2)] +[visit_exp b_2] +[visit_id b_2] not free +[visit_exp $cont(b_3)] +[visit_exp b_3] +[visit_id b_3] not free +=> + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, i#48400 : nat, i#48402 : nat, i#48404 : nat, i#48406 : nat, i#48422 : nat, i#48408 : nat}([ch]) = [b_1 b_2 b_3] + -- if (((2048 <= ch!`%`_char{i#48400}.0) /\ (ch!`%`_char{i#48402}.0 < 55296)) \/ ((57344 <= ch!`%`_char{i#48404}.0) /\ (ch!`%`_char{i#48406}.0 < 65536))) + -- if (ch!`%`_char{i#48422}.0 = ((((2 ^ 12) * (((b_1!`%`_byte{i#48408}.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) +[check_dims] b_1 b_2 b_3 b_4 ch i#48460 i#48462 i#48464 i#48484 +[visit_exp [ch]] +[visit_exp ch] +[visit_id ch] +[visit_exp [b_1 b_2 b_3 b_4]] +[visit_exp b_1] +[visit_id b_1] +[visit_exp b_2] +[visit_id b_2] +[visit_exp b_3] +[visit_id b_3] +[visit_exp b_4] +[visit_id b_4] +[visit_exp ((65536 <= ch!`%`_char{i#48460}.0) /\ (ch!`%`_char{i#48462}.0 < 69632))] +[visit_exp (65536 <= ch!`%`_char{i#48460}.0)] +[visit_exp 65536] +[visit_exp ch!`%`_char{i#48460}.0] +[visit_exp ch!`%`_char{i#48460}] +[visit_exp ch] +[visit_id ch] not free +[visit_exp i#48460] +[visit_id i#48460] +[visit_exp (ch!`%`_char{i#48462}.0 < 69632)] +[visit_exp ch!`%`_char{i#48462}.0] +[visit_exp ch!`%`_char{i#48462}] +[visit_exp ch] +[visit_id ch] not free +[visit_exp i#48462] +[visit_id i#48462] +[visit_exp 69632] +[visit_exp (ch!`%`_char{i#48484}.0 = (((((2 ^ 18) * (((b_1!`%`_byte{i#48464}.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4)))] +[visit_exp ch!`%`_char{i#48484}.0] +[visit_exp ch!`%`_char{i#48484}] +[visit_exp ch] +[visit_id ch] not free +[visit_exp i#48484] +[visit_id i#48484] +[visit_exp (((((2 ^ 18) * (((b_1!`%`_byte{i#48464}.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))] +[visit_exp ((((2 ^ 18) * (((b_1!`%`_byte{i#48464}.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3)))] +[visit_exp (((2 ^ 18) * (((b_1!`%`_byte{i#48464}.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2)))] +[visit_exp ((2 ^ 18) * (((b_1!`%`_byte{i#48464}.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat))] +[visit_exp (2 ^ 18)] +[visit_exp 2] +[visit_exp 18] +[visit_exp (((b_1!`%`_byte{i#48464}.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)] +[visit_exp ((b_1!`%`_byte{i#48464}.0 : nat <:> int) - (240 : nat <:> int))] +[visit_exp (b_1!`%`_byte{i#48464}.0 : nat <:> int)] +[visit_exp b_1!`%`_byte{i#48464}.0] +[visit_exp b_1!`%`_byte{i#48464}] +[visit_exp b_1] +[visit_id b_1] not free +[visit_exp i#48464] +[visit_id i#48464] +[visit_exp (240 : nat <:> int)] +[visit_exp 240] +[visit_exp ((2 ^ 12) * $cont(b_2))] +[visit_exp (2 ^ 12)] +[visit_exp 2] +[visit_exp 12] +[visit_exp $cont(b_2)] +[visit_exp b_2] +[visit_id b_2] not free +[visit_exp ((2 ^ 6) * $cont(b_3))] +[visit_exp (2 ^ 6)] +[visit_exp 2] +[visit_exp 6] +[visit_exp $cont(b_3)] +[visit_exp b_3] +[visit_id b_3] not free +[visit_exp $cont(b_4)] +[visit_exp b_4] +[visit_id b_4] not free +=> + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte, i#48460 : nat, i#48462 : nat, i#48484 : nat, i#48464 : nat}([ch]) = [b_1 b_2 b_3 b_4] + -- if ((65536 <= ch!`%`_char{i#48460}.0) /\ (ch!`%`_char{i#48462}.0 < 69632)) + -- if (ch!`%`_char{i#48484}.0 = (((((2 ^ 18) * (((b_1!`%`_byte{i#48464}.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) +ps' = +[check_dims] +[check_dims] b char*#153 name +dims \ = b, char*#153, name +[visit_exp name] +[visit_id name] +[visit_exp b*{b <- `b*`}] +[scope_enter b] +[visit_exp b] +[visit_id b] not free +[visit_id b] not free +[scope_exit b] +[visit_exp `b*`] +[visit_id b*] no dims +[visit_id b*] +[visit_exp ($utf8(name!`%`_name{`char*#153`}.0) = b*{b <- `b*`})] +[visit_exp $utf8(name!`%`_name{`char*#153`}.0)] +[visit_exp name!`%`_name{`char*#153`}.0] +[visit_exp name!`%`_name{`char*#153`}] +[visit_exp name] +[visit_id name] not free +[visit_exp `char*#153`] +[visit_id char*#153] +[visit_exp b*{b <- `b*`}] +[scope_enter b] +[visit_exp b] +[visit_id b] not free +[visit_id b] not free +[scope_exit b] +[visit_exp `b*`] +[visit_id b*] not free +[visit_id b*] no dims +ps' = +[check_dims] +[check_dims] x +dims \ = x +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +ps' = +[check_dims] +[check_dims] x +dims \ = x +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +ps' = +[check_dims] +[check_dims] x +dims \ = x +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +ps' = +[check_dims] +[check_dims] x +dims \ = x +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +ps' = +[check_dims] +[check_dims] x +dims \ = x +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +ps' = +[check_dims] +[check_dims] x +dims \ = x +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +ps' = +[check_dims] +[check_dims] x +dims \ = x +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +ps' = +[check_dims] +[check_dims] x +dims \ = x +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +ps' = +[check_dims] +[check_dims] x +dims \ = x +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +ps' = +[check_dims] +[check_dims] l +dims \ = l +[visit_exp l] +[visit_id l] +[visit_exp l] +[visit_id l] not free +ps' = +[check_dims] +[check_dims] funcidx#3161 x +dims \ = funcidx#3161, x +[visit_exp `FUNC`_externidx{funcidx#3161}(x)] +[visit_exp funcidx#3161] +[visit_id funcidx#3161] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[check_dims] tableidx#123 x +dims \ = tableidx#123, x +[visit_exp `TABLE`_externidx{tableidx#123}(x)] +[visit_exp tableidx#123] +[visit_id tableidx#123] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[check_dims] memidx#169 x +dims \ = memidx#169, x +[visit_exp `MEM`_externidx{memidx#169}(x)] +[visit_exp memidx#169] +[visit_id memidx#169] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[check_dims] globalidx#23 x +dims \ = globalidx#23, x +[visit_exp `GLOBAL`_externidx{globalidx#23}(x)] +[visit_exp globalidx#23] +[visit_id globalidx#23] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[check_dims] tagidx#19 x +dims \ = tagidx#19, x +[visit_exp `TAG`_externidx{tagidx#19}(x)] +[visit_exp tagidx#19] +[visit_id tagidx#19] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp `F64`_numtype] +[visit_exp ()] +[check_dims] +dims \ = +[visit_exp `F32`_numtype] +[visit_exp ()] +[check_dims] +dims \ = +[visit_exp `I64`_numtype] +[visit_exp ()] +[check_dims] +dims \ = +[visit_exp `I32`_numtype] +[visit_exp ()] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp `V128`_vectype] +[visit_exp ()] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp `EXN`_heaptype] +[visit_exp ()] +[check_dims] +dims \ = +[visit_exp `ARRAY`_heaptype] +[visit_exp ()] +[check_dims] +dims \ = +[visit_exp `STRUCT`_heaptype] +[visit_exp ()] +[check_dims] +dims \ = +[visit_exp `I31`_heaptype] +[visit_exp ()] +[check_dims] +dims \ = +[visit_exp `EQ`_heaptype] +[visit_exp ()] +[check_dims] +dims \ = +[visit_exp `ANY`_heaptype] +[visit_exp ()] +[check_dims] +dims \ = +[visit_exp `EXTERN`_heaptype] +[visit_exp ()] +[check_dims] +dims \ = +[visit_exp `FUNC`_heaptype] +[visit_exp ()] +[check_dims] +dims \ = +[visit_exp `NONE`_heaptype] +[visit_exp ()] +[check_dims] +dims \ = +[visit_exp `NOEXTERN`_heaptype] +[visit_exp ()] +[check_dims] +dims \ = +[visit_exp `NOFUNC`_heaptype] +[visit_exp ()] +[check_dims] +dims \ = +[visit_exp `NOEXN`_heaptype] +[visit_exp ()] +ps' = +[check_dims] +[check_dims] ht +dims \ = ht +[visit_exp ht] +[visit_id ht] +[visit_exp ht] +[visit_id ht] not free +[check_dims] i#49064 typeidx#1924 x33 +dims \ = i#49064, typeidx#1924, x33 +[visit_exp `_IDX`_heaptype{typeidx#1924}($s33_to_u32(x33))] +[visit_exp typeidx#1924] +[visit_id typeidx#1924] +[visit_exp ($s33_to_u32(x33))] +[visit_exp $s33_to_u32(x33)] +[visit_exp x33] +[visit_id x33] +[visit_exp x33] +[visit_id x33] not free +[visit_exp (x33!`%`_s33{i#49064}.0 >= (0 : nat <:> int))] +[visit_exp x33!`%`_s33{i#49064}.0] +[visit_exp x33!`%`_s33{i#49064}] +[visit_exp x33] +[visit_id x33] not free +[visit_exp i#49064] +[visit_id i#49064] +[visit_exp (0 : nat <:> int)] +[visit_exp 0] +ps' = +[check_dims] +[check_dims] heaptype#1587 ht null?#1525 +dims \ = heaptype#1587, ht, null?#1525 +[visit_exp `REF`_reftype{`null?#1525`, heaptype#1587}(?(`NULL`_null), ht)] +[visit_exp `null?#1525`] +[visit_id null?#1525] +[visit_exp heaptype#1587] +[visit_id heaptype#1587] +[visit_exp (?(`NULL`_null), ht)] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp ht] +[visit_id ht] +[visit_exp ht] +[visit_id ht] not free +[check_dims] heaptype#1599 ht null?#1537 +dims \ = heaptype#1599, ht, null?#1537 +[visit_exp `REF`_reftype{`null?#1537`, heaptype#1599}(?(), ht)] +[visit_exp `null?#1537`] +[visit_id null?#1537] +[visit_exp heaptype#1599] +[visit_id heaptype#1599] +[visit_exp (?(), ht)] +[visit_exp ?()] +[visit_exp ht] +[visit_id ht] +[visit_exp ht] +[visit_id ht] not free +[check_dims] heaptype#1611 ht null?#1549 +dims \ = heaptype#1611, ht, null?#1549 +[visit_exp `REF`_reftype{`null?#1549`, heaptype#1611}(?(`NULL`_null), ht)] +[visit_exp `null?#1549`] +[visit_id null?#1549] +[visit_exp heaptype#1611] +[visit_id heaptype#1611] +[visit_exp (?(`NULL`_null), ht)] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp ht] +[visit_id ht] +[visit_exp ht] +[visit_id ht] not free +ps' = +[check_dims] +[check_dims] nt +dims \ = nt +[visit_exp (nt : numtype <: valtype)] +[visit_exp nt] +[visit_id nt] +[visit_exp nt] +[visit_id nt] not free +[check_dims] vt +dims \ = vt +[visit_exp (vt : vectype <: valtype)] +[visit_exp vt] +[visit_id vt] +[visit_exp vt] +[visit_id vt] not free +[check_dims] rt +dims \ = rt +[visit_exp (rt : reftype <: valtype)] +[visit_exp rt] +[visit_id rt] +[visit_exp rt] +[visit_id rt] not free +ps' = +[check_dims] +[check_dims] X*#13056 t +dims \ = X*#13056, t +[visit_exp `%`_resulttype{`X*#13056`}(t*{t <- `t*`})] +[visit_exp `X*#13056`] +[visit_id X*#13056] +[visit_exp (t*{t <- `t*`})] +[visit_exp t*{t <- `t*`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] no dims +[visit_id t*] +[visit_exp t*{t <- `t*`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] not free +[visit_id t*] no dims +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ?()] +[check_dims] +dims \ = +[visit_exp ?(`MUT`_mut)] +[visit_exp `MUT`_mut] +[visit_exp ()] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp `I16`_packtype] +[visit_exp ()] +[check_dims] +dims \ = +[visit_exp `I8`_packtype] +[visit_exp ()] +ps' = +[check_dims] +[check_dims] t +dims \ = t +[visit_exp (t : valtype <: storagetype)] +[visit_exp t] +[visit_id t] +[visit_exp t] +[visit_id t] not free +[check_dims] pt +dims \ = pt +[visit_exp (pt : packtype <: storagetype)] +[visit_exp pt] +[visit_id pt] +[visit_exp pt] +[visit_id pt] not free +ps' = +[check_dims] +[check_dims] mut mut?#1417 storagetype#755 zt +dims \ = mut, mut?#1417, storagetype#755, zt +[visit_exp `%%`_fieldtype{`mut?#1417`, storagetype#755}(mut?{mut <- `mut?`}, zt)] +[visit_exp `mut?#1417`] +[visit_id mut?#1417] +[visit_exp storagetype#755] +[visit_id storagetype#755] +[visit_exp (mut?{mut <- `mut?`}, zt)] +[visit_exp mut?{mut <- `mut?`}] +[scope_enter mut] +[visit_exp mut] +[visit_id mut] not free +[visit_id mut] not free +[scope_exit mut] +[visit_exp `mut?`] +[visit_id mut?] no dims +[visit_id mut?] +[visit_exp zt] +[visit_id zt] +[visit_exp zt] +[visit_id zt] not free +[visit_exp mut?{mut <- `mut?`}] +[scope_enter mut] +[visit_exp mut] +[visit_id mut] not free +[visit_id mut] not free +[scope_exit mut] +[visit_exp `mut?`] +[visit_id mut?] not free +[visit_id mut?] no dims +ps' = +[check_dims] +[check_dims] fieldtype#59 ft +dims \ = fieldtype#59, ft +[visit_exp `ARRAY`_comptype{fieldtype#59}(ft)] +[visit_exp fieldtype#59] +[visit_id fieldtype#59] +[visit_exp (ft)] +[visit_exp ft] +[visit_id ft] +[visit_exp ft] +[visit_id ft] not free +[check_dims] X*#13071 ft +dims \ = X*#13071, ft +[visit_exp `STRUCT`_comptype(`%`_list{`X*#13071`}(ft*{ft <- `ft*`}))] +[visit_exp (`%`_list{`X*#13071`}(ft*{ft <- `ft*`}))] +[visit_exp `%`_list{`X*#13071`}(ft*{ft <- `ft*`})] +[visit_exp `X*#13071`] +[visit_id X*#13071] +[visit_exp (ft*{ft <- `ft*`})] +[visit_exp ft*{ft <- `ft*`}] +[scope_enter ft] +[visit_exp ft] +[visit_id ft] not free +[visit_id ft] not free +[scope_exit ft] +[visit_exp `ft*`] +[visit_id ft*] no dims +[visit_id ft*] +[visit_exp ft*{ft <- `ft*`}] +[scope_enter ft] +[visit_exp ft] +[visit_id ft] not free +[visit_id ft] not free +[scope_exit ft] +[visit_exp `ft*`] +[visit_id ft*] not free +[visit_id ft*] no dims +[check_dims] X*#13087 X*#13105 X*#13122 X*#13135 resulttype#3029 t_1 t_2 +dims \ = X*#13087, X*#13105, X*#13122, X*#13135, resulttype#3029, t_1, t_2 +[visit_exp `FUNC%->%`_comptype{resulttype#3029}(`%`_resulttype{`X*#13122`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13135`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#3029] +[visit_id resulttype#3029] +[visit_exp (`%`_resulttype{`X*#13122`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13135`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#13122`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#13122`] +[visit_id X*#13122] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] no dims +[visit_id t_1*] +[visit_exp `%`_resulttype{`X*#13135`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#13135`] +[visit_id X*#13135] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] no dims +[visit_id t_2*] +[visit_exp `%`_resulttype{`X*#13087`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#13087`] +[visit_id X*#13087] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] not free +[visit_id t_1*] no dims +[visit_exp `%`_resulttype{`X*#13105`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#13105`] +[visit_id X*#13105] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] not free +[visit_id t_2*] no dims +ps' = +[check_dims] +[check_dims] comptype#449 ct final?#449 typeidx#1926 typeuse*#449 x +dims \ = comptype#449, ct, final?#449, typeidx#1926, typeuse*#449, x +[visit_exp `SUB`_subtype{`final?#449`, `typeuse*#449`, comptype#449}(?(`FINAL`_final), `_IDX`_typeuse{typeidx#1926}(x)*{typeidx#1926 <- `typeidx#1926*`, x <- `x*`}, ct)] +[visit_exp `final?#449`] +[visit_id final?#449] +[visit_exp `typeuse*#449`] +[visit_id typeuse*#449] +[visit_exp comptype#449] +[visit_id comptype#449] +[visit_exp (?(`FINAL`_final), `_IDX`_typeuse{typeidx#1926}(x)*{typeidx#1926 <- `typeidx#1926*`, x <- `x*`}, ct)] +[visit_exp ?(`FINAL`_final)] +[visit_exp `FINAL`_final] +[visit_exp ()] +[visit_exp `_IDX`_typeuse{typeidx#1926}(x)*{typeidx#1926 <- `typeidx#1926*`, x <- `x*`}] +[scope_enter typeidx#1926] +[scope_enter x] +[visit_exp `_IDX`_typeuse{typeidx#1926}(x)] +[visit_exp typeidx#1926] +[visit_id typeidx#1926] not free +[visit_exp (x)] +[visit_exp x] +[visit_id x] not free +[visit_id typeidx#1926] not free +[visit_id x] not free +[scope_exit x] +[scope_exit typeidx#1926] +[visit_exp `typeidx#1926*`] +[visit_id typeidx#1926*] no dims +[visit_id typeidx#1926*] +[visit_exp `x*`] +[visit_id x*] no dims +[visit_id x*] +[visit_exp ct] +[visit_id ct] +[visit_exp x*{x <- `x*`}] +[scope_enter x] +[visit_exp x] +[visit_id x] not free +[visit_id x] not free +[scope_exit x] +[visit_exp `x*`] +[visit_id x*] not free +[visit_id x*] no dims +[visit_exp ct] +[visit_id ct] not free +[check_dims] comptype#461 ct final?#461 typeidx#1928 typeuse*#461 x +dims \ = comptype#461, ct, final?#461, typeidx#1928, typeuse*#461, x +[visit_exp `SUB`_subtype{`final?#461`, `typeuse*#461`, comptype#461}(?(), `_IDX`_typeuse{typeidx#1928}(x)*{typeidx#1928 <- `typeidx#1928*`, x <- `x*`}, ct)] +[visit_exp `final?#461`] +[visit_id final?#461] +[visit_exp `typeuse*#461`] +[visit_id typeuse*#461] +[visit_exp comptype#461] +[visit_id comptype#461] +[visit_exp (?(), `_IDX`_typeuse{typeidx#1928}(x)*{typeidx#1928 <- `typeidx#1928*`, x <- `x*`}, ct)] +[visit_exp ?()] +[visit_exp `_IDX`_typeuse{typeidx#1928}(x)*{typeidx#1928 <- `typeidx#1928*`, x <- `x*`}] +[scope_enter typeidx#1928] +[scope_enter x] +[visit_exp `_IDX`_typeuse{typeidx#1928}(x)] +[visit_exp typeidx#1928] +[visit_id typeidx#1928] not free +[visit_exp (x)] +[visit_exp x] +[visit_id x] not free +[visit_id typeidx#1928] not free +[visit_id x] not free +[scope_exit x] +[scope_exit typeidx#1928] +[visit_exp `typeidx#1928*`] +[visit_id typeidx#1928*] no dims +[visit_id typeidx#1928*] +[visit_exp `x*`] +[visit_id x*] no dims +[visit_id x*] +[visit_exp ct] +[visit_id ct] +[visit_exp x*{x <- `x*`}] +[scope_enter x] +[visit_exp x] +[visit_id x] not free +[visit_id x] not free +[scope_exit x] +[visit_exp `x*`] +[visit_id x*] not free +[visit_id x*] no dims +[visit_exp ct] +[visit_id ct] not free +[check_dims] comptype#473 ct final?#473 typeuse*#473 +dims \ = comptype#473, ct, final?#473, typeuse*#473 +[visit_exp `SUB`_subtype{`final?#473`, `typeuse*#473`, comptype#473}(?(`FINAL`_final), [], ct)] +[visit_exp `final?#473`] +[visit_id final?#473] +[visit_exp `typeuse*#473`] +[visit_id typeuse*#473] +[visit_exp comptype#473] +[visit_id comptype#473] +[visit_exp (?(`FINAL`_final), [], ct)] +[visit_exp ?(`FINAL`_final)] +[visit_exp `FINAL`_final] +[visit_exp ()] +[visit_exp []] +[visit_exp ct] +[visit_id ct] +[visit_exp ct] +[visit_id ct] not free +ps' = +[check_dims] +[check_dims] X*#13150 st +dims \ = X*#13150, st +[visit_exp `REC`_rectype(`%`_list{`X*#13150`}(st*{st <- `st*`}))] +[visit_exp (`%`_list{`X*#13150`}(st*{st <- `st*`}))] +[visit_exp `%`_list{`X*#13150`}(st*{st <- `st*`})] +[visit_exp `X*#13150`] +[visit_id X*#13150] +[visit_exp (st*{st <- `st*`})] +[visit_exp st*{st <- `st*`}] +[scope_enter st] +[visit_exp st] +[visit_id st] not free +[visit_id st] not free +[scope_exit st] +[visit_exp `st*`] +[visit_id st*] no dims +[visit_id st*] +[visit_exp st*{st <- `st*`}] +[scope_enter st] +[visit_exp st] +[visit_id st] not free +[visit_id st] not free +[scope_exit st] +[visit_exp `st*`] +[visit_id st*] not free +[visit_id st*] no dims +[check_dims] X*#13165 st +dims \ = X*#13165, st +[visit_exp `REC`_rectype(`%`_list{`X*#13165`}([st]))] +[visit_exp (`%`_list{`X*#13165`}([st]))] +[visit_exp `%`_list{`X*#13165`}([st])] +[visit_exp `X*#13165`] +[visit_id X*#13165] +[visit_exp ([st])] +[visit_exp [st]] +[visit_exp st] +[visit_id st] +[visit_exp st] +[visit_id st] not free +ps' = +[check_dims] _ +[check_dims] i#49167 i#49191 n u64#491 u64?#467 +dims \ = i#49167, i#49191, n, u64#491, u64?#467 +[visit_exp (`I32`_addrtype, `[%..%]`_limits{u64#491, `u64?#467`}(`%`_u64{i#49191}(n), ?()))] +[visit_exp `I32`_addrtype] +[visit_exp ()] +[visit_exp `[%..%]`_limits{u64#491, `u64?#467`}(`%`_u64{i#49191}(n), ?())] +[visit_exp u64#491] +[visit_id u64#491] +[visit_exp `u64?#467`] +[visit_id u64?#467] +[visit_exp (`%`_u64{i#49191}(n), ?())] +[visit_exp `%`_u64{i#49191}(n)] +[visit_exp i#49191] +[visit_id i#49191] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp ?()] +[visit_exp `%`_u64{i#49167}(n)] +[visit_exp i#49167] +[visit_id i#49167] +[visit_exp (n)] +[visit_exp n] +[visit_id n] not free +[check_dims] i#49216 i#49243 i#49267 i#49289 m n u64#503 u64?#479 +dims \ = i#49216, i#49243, i#49267, i#49289, m, n, u64#503, u64?#479 +[visit_exp (`I32`_addrtype, `[%..%]`_limits{u64#503, `u64?#479`}(`%`_u64{i#49267}(n), ?(`%`_u64{i#49289}(m))))] +[visit_exp `I32`_addrtype] +[visit_exp ()] +[visit_exp `[%..%]`_limits{u64#503, `u64?#479`}(`%`_u64{i#49267}(n), ?(`%`_u64{i#49289}(m)))] +[visit_exp u64#503] +[visit_id u64#503] +[visit_exp `u64?#479`] +[visit_id u64?#479] +[visit_exp (`%`_u64{i#49267}(n), ?(`%`_u64{i#49289}(m)))] +[visit_exp `%`_u64{i#49267}(n)] +[visit_exp i#49267] +[visit_id i#49267] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp ?(`%`_u64{i#49289}(m))] +[visit_exp `%`_u64{i#49289}(m)] +[visit_exp i#49289] +[visit_id i#49289] +[visit_exp (m)] +[visit_exp m] +[visit_id m] +[visit_exp `%`_u64{i#49216}(n)] +[visit_exp i#49216] +[visit_id i#49216] +[visit_exp (n)] +[visit_exp n] +[visit_id n] not free +[visit_exp `%`_u64{i#49243}(m)] +[visit_exp i#49243] +[visit_id i#49243] +[visit_exp (m)] +[visit_exp m] +[visit_id m] not free +[check_dims] i#49314 i#49338 n u64#515 u64?#491 +dims \ = i#49314, i#49338, n, u64#515, u64?#491 +[visit_exp (`I64`_addrtype, `[%..%]`_limits{u64#515, `u64?#491`}(`%`_u64{i#49338}(n), ?()))] +[visit_exp `I64`_addrtype] +[visit_exp ()] +[visit_exp `[%..%]`_limits{u64#515, `u64?#491`}(`%`_u64{i#49338}(n), ?())] +[visit_exp u64#515] +[visit_id u64#515] +[visit_exp `u64?#491`] +[visit_id u64?#491] +[visit_exp (`%`_u64{i#49338}(n), ?())] +[visit_exp `%`_u64{i#49338}(n)] +[visit_exp i#49338] +[visit_id i#49338] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp ?()] +[visit_exp `%`_u64{i#49314}(n)] +[visit_exp i#49314] +[visit_id i#49314] +[visit_exp (n)] +[visit_exp n] +[visit_id n] not free +[check_dims] i#49363 i#49390 i#49414 i#49436 m n u64#527 u64?#503 +dims \ = i#49363, i#49390, i#49414, i#49436, m, n, u64#527, u64?#503 +[visit_exp (`I64`_addrtype, `[%..%]`_limits{u64#527, `u64?#503`}(`%`_u64{i#49414}(n), ?(`%`_u64{i#49436}(m))))] +[visit_exp `I64`_addrtype] +[visit_exp ()] +[visit_exp `[%..%]`_limits{u64#527, `u64?#503`}(`%`_u64{i#49414}(n), ?(`%`_u64{i#49436}(m)))] +[visit_exp u64#527] +[visit_id u64#527] +[visit_exp `u64?#503`] +[visit_id u64?#503] +[visit_exp (`%`_u64{i#49414}(n), ?(`%`_u64{i#49436}(m)))] +[visit_exp `%`_u64{i#49414}(n)] +[visit_exp i#49414] +[visit_id i#49414] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp ?(`%`_u64{i#49436}(m))] +[visit_exp `%`_u64{i#49436}(m)] +[visit_exp i#49436] +[visit_id i#49436] +[visit_exp (m)] +[visit_exp m] +[visit_id m] +[visit_exp `%`_u64{i#49363}(n)] +[visit_exp i#49363] +[visit_id i#49363] +[visit_exp (n)] +[visit_exp n] +[visit_id n] not free +[visit_exp `%`_u64{i#49390}(m)] +[visit_exp i#49390] +[visit_id i#49390] +[visit_exp (m)] +[visit_exp m] +[visit_id m] not free +[visit_id _] not free +[visit_id _] no dims +[visit_id _] not free +[visit_id _] no dims +ps' = +[check_dims] +[check_dims] typeidx#1930 x +dims \ = typeidx#1930, x +[visit_exp `_IDX`_tagtype{typeidx#1930}(x)] +[visit_exp typeidx#1930] +[visit_id typeidx#1930] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +ps' = +[check_dims] +[check_dims] mut mut?#1469 t valtype#991 +dims \ = mut, mut?#1469, t, valtype#991 +[visit_exp `%%`_globaltype{`mut?#1469`, valtype#991}(mut?{mut <- `mut?`}, t)] +[visit_exp `mut?#1469`] +[visit_id mut?#1469] +[visit_exp valtype#991] +[visit_id valtype#991] +[visit_exp (mut?{mut <- `mut?`}, t)] +[visit_exp mut?{mut <- `mut?`}] +[scope_enter mut] +[visit_exp mut] +[visit_id mut] not free +[visit_id mut] not free +[scope_exit mut] +[visit_exp `mut?`] +[visit_id mut?] no dims +[visit_id mut?] +[visit_exp t] +[visit_id t] +[visit_exp t] +[visit_id t] not free +[visit_exp mut?{mut <- `mut?`}] +[scope_enter mut] +[visit_exp mut] +[visit_id mut] not free +[visit_id mut] not free +[scope_exit mut] +[visit_exp `mut?`] +[visit_id mut?] not free +[visit_id mut?] no dims +ps' = +[check_dims] +[check_dims] addrtype#1373 at lim limits#1373 +dims \ = addrtype#1373, at, lim, limits#1373 +[visit_exp `%%PAGE`_memtype{addrtype#1373, limits#1373}(at, lim)] +[visit_exp addrtype#1373] +[visit_id addrtype#1373] +[visit_exp limits#1373] +[visit_id limits#1373] +[visit_exp (at, lim)] +[visit_exp at] +[visit_id at] +[visit_exp lim] +[visit_id lim] +[visit_exp (at, lim)] +[visit_exp at] +[visit_id at] not free +[visit_exp lim] +[visit_id lim] not free +ps' = +[check_dims] +[check_dims] addrtype#1385 at lim limits#1385 reftype#3949 rt +dims \ = addrtype#1385, at, lim, limits#1385, reftype#3949, rt +[visit_exp `%%%`_tabletype{addrtype#1385, limits#1385, reftype#3949}(at, lim, rt)] +[visit_exp addrtype#1385] +[visit_id addrtype#1385] +[visit_exp limits#1385] +[visit_id limits#1385] +[visit_exp reftype#3949] +[visit_id reftype#3949] +[visit_exp (at, lim, rt)] +[visit_exp at] +[visit_id at] +[visit_exp lim] +[visit_id lim] +[visit_exp rt] +[visit_id rt] +[visit_exp rt] +[visit_id rt] not free +[visit_exp (at, lim)] +[visit_exp at] +[visit_id at] not free +[visit_exp lim] +[visit_id lim] not free +ps' = +[check_dims] +[check_dims] typeidx#1932 typeuse#67 x +dims \ = typeidx#1932, typeuse#67, x +[visit_exp `FUNC`_externtype{typeuse#67}(`_IDX`_typeuse{typeidx#1932}(x))] +[visit_exp typeuse#67] +[visit_id typeuse#67] +[visit_exp (`_IDX`_typeuse{typeidx#1932}(x))] +[visit_exp `_IDX`_typeuse{typeidx#1932}(x)] +[visit_exp typeidx#1932] +[visit_id typeidx#1932] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[check_dims] tabletype#1118 tt +dims \ = tabletype#1118, tt +[visit_exp `TABLE`_externtype{tabletype#1118}(tt)] +[visit_exp tabletype#1118] +[visit_id tabletype#1118] +[visit_exp (tt)] +[visit_exp tt] +[visit_id tt] +[visit_exp tt] +[visit_id tt] not free +[check_dims] memtype#722 mt +dims \ = memtype#722, mt +[visit_exp `MEM`_externtype{memtype#722}(mt)] +[visit_exp memtype#722] +[visit_id memtype#722] +[visit_exp (mt)] +[visit_exp mt] +[visit_id mt] +[visit_exp mt] +[visit_id mt] not free +[check_dims] globaltype#2273 gt +dims \ = globaltype#2273, gt +[visit_exp `GLOBAL`_externtype{globaltype#2273}(gt)] +[visit_exp globaltype#2273] +[visit_id globaltype#2273] +[visit_exp (gt)] +[visit_exp gt] +[visit_id gt] +[visit_exp gt] +[visit_id gt] not free +[check_dims] jt tagtype#324 +dims \ = jt, tagtype#324 +[visit_exp `TAG`_externtype{tagtype#324}(jt)] +[visit_exp tagtype#324] +[visit_id tagtype#324] +[visit_exp (jt)] +[visit_exp jt] +[visit_id jt] +[visit_exp jt] +[visit_id jt] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp `UNREACHABLE`_instr] +[visit_exp ()] +[check_dims] +dims \ = +[visit_exp `NOP`_instr] +[visit_exp ()] +[check_dims] +dims \ = +[visit_exp `DROP`_instr] +[visit_exp ()] +[check_dims] valtype*?#11 +dims \ = valtype*?#11 +[visit_exp `SELECT`_instr{`valtype*?#11`}(?())] +[visit_exp `valtype*?#11`] +[visit_id valtype*?#11] +[visit_exp (?())] +[visit_exp ?()] +[check_dims] t valtype*?#13 +dims \ = t, valtype*?#13 +[visit_exp `SELECT`_instr{`valtype*?#13`}(?(t*{t <- `t*`}))] +[visit_exp `valtype*?#13`] +[visit_id valtype*?#13] +[visit_exp (?(t*{t <- `t*`}))] +[visit_exp ?(t*{t <- `t*`})] +[visit_exp t*{t <- `t*`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] no dims +[visit_id t*] +[visit_exp t*{t <- `t*`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] not free +[visit_id t*] no dims +[check_dims] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp (?(), ?())] +[visit_exp ?()] +[visit_exp ?()] +[check_dims] +dims \ = +[visit_exp (?(`NULL`_null), ?())] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp ?()] +[check_dims] +dims \ = +[visit_exp (?(), ?(`NULL`_null))] +[visit_exp ?()] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[check_dims] +dims \ = +[visit_exp (?(`NULL`_null), ?(`NULL`_null))] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +ps' = +[check_dims] +[check_dims] valtype?#7 +dims \ = valtype?#7 +[visit_exp `_RESULT`_blocktype{`valtype?#7`}(?())] +[visit_exp `valtype?#7`] +[visit_id valtype?#7] +[visit_exp (?())] +[visit_exp ?()] +[check_dims] t valtype?#9 +dims \ = t, valtype?#9 +[visit_exp `_RESULT`_blocktype{`valtype?#9`}(?(t))] +[visit_exp `valtype?#9`] +[visit_id valtype?#9] +[visit_exp (?(t))] +[visit_exp ?(t)] +[visit_exp t] +[visit_id t] +[visit_exp t] +[visit_id t] not free +[check_dims] i i#49559 i#49560 i#49575 typeidx#1934 +dims \ = i, i#49559, i#49560, i#49575, typeidx#1934 +[visit_exp `_IDX`_blocktype{typeidx#1934}(`%`_typeidx{i#49560}((i!`%`_s33{i#49559}.0 : int <:> nat)))] +[visit_exp typeidx#1934] +[visit_id typeidx#1934] +[visit_exp (`%`_typeidx{i#49560}((i!`%`_s33{i#49559}.0 : int <:> nat)))] +[visit_exp `%`_typeidx{i#49560}((i!`%`_s33{i#49559}.0 : int <:> nat))] +[visit_exp i#49560] +[visit_id i#49560] +[visit_exp ((i!`%`_s33{i#49559}.0 : int <:> nat))] +[visit_exp (i!`%`_s33{i#49559}.0 : int <:> nat)] +[visit_exp i!`%`_s33{i#49559}.0] +[visit_exp i!`%`_s33{i#49559}] +[visit_exp i] +[visit_id i] +[visit_exp i#49559] +[visit_id i#49559] +[visit_exp i] +[visit_id i] not free +[visit_exp (i!`%`_s33{i#49575}.0 >= (0 : nat <:> int))] +[visit_exp i!`%`_s33{i#49575}.0] +[visit_exp i!`%`_s33{i#49575}] +[visit_exp i] +[visit_id i] not free +[visit_exp i#49575] +[visit_id i#49575] +[visit_exp (0 : nat <:> int)] +[visit_exp 0] +ps' = +[check_dims] +[check_dims] blocktype#31 bt in instr*#2348 +dims \ = blocktype#31, bt, in, instr*#2348 +[visit_exp `BLOCK`_instr{blocktype#31, `instr*#2348`}(bt, in*{in <- `in*`})] +[visit_exp blocktype#31] +[visit_id blocktype#31] +[visit_exp `instr*#2348`] +[visit_id instr*#2348] +[visit_exp (bt, in*{in <- `in*`})] +[visit_exp bt] +[visit_id bt] +[visit_exp in*{in <- `in*`}] +[scope_enter in] +[visit_exp in] +[visit_id in] not free +[visit_id in] not free +[scope_exit in] +[visit_exp `in*`] +[visit_id in*] no dims +[visit_id in*] +[visit_exp bt] +[visit_id bt] not free +[scope_enter in] +[visit_exp in] +[visit_id in] not free +[visit_id in] not free +[scope_exit in] +[visit_exp `in*`] +[visit_id in*] not free +[visit_id in*] no dims +[check_dims] blocktype#33 bt in instr*#2350 +dims \ = blocktype#33, bt, in, instr*#2350 +[visit_exp `LOOP`_instr{blocktype#33, `instr*#2350`}(bt, in*{in <- `in*`})] +[visit_exp blocktype#33] +[visit_id blocktype#33] +[visit_exp `instr*#2350`] +[visit_id instr*#2350] +[visit_exp (bt, in*{in <- `in*`})] +[visit_exp bt] +[visit_id bt] +[visit_exp in*{in <- `in*`}] +[scope_enter in] +[visit_exp in] +[visit_id in] not free +[visit_id in] not free +[scope_exit in] +[visit_exp `in*`] +[visit_id in*] no dims +[visit_id in*] +[visit_exp bt] +[visit_id bt] not free +[scope_enter in] +[visit_exp in] +[visit_id in] not free +[visit_id in] not free +[scope_exit in] +[visit_exp `in*`] +[visit_id in*] not free +[visit_id in*] no dims +[check_dims] blocktype#35 bt in instr*#2352 +dims \ = blocktype#35, bt, in, instr*#2352 +[visit_exp `IF%%ELSE%`_instr{blocktype#35, `instr*#2352`}(bt, in*{in <- `in*`}, [])] +[visit_exp blocktype#35] +[visit_id blocktype#35] +[visit_exp `instr*#2352`] +[visit_id instr*#2352] +[visit_exp (bt, in*{in <- `in*`}, [])] +[visit_exp bt] +[visit_id bt] +[visit_exp in*{in <- `in*`}] +[scope_enter in] +[visit_exp in] +[visit_id in] not free +[visit_id in] not free +[scope_exit in] +[visit_exp `in*`] +[visit_id in*] no dims +[visit_id in*] +[visit_exp []] +[visit_exp bt] +[visit_id bt] not free +[scope_enter in] +[visit_exp in] +[visit_id in] not free +[visit_id in] not free +[scope_exit in] +[visit_exp `in*`] +[visit_id in*] not free +[visit_id in*] no dims +[check_dims] blocktype#37 bt in_1 in_2 instr*#2355 +dims \ = blocktype#37, bt, in_1, in_2, instr*#2355 +[visit_exp `IF%%ELSE%`_instr{blocktype#37, `instr*#2355`}(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`})] +[visit_exp blocktype#37] +[visit_id blocktype#37] +[visit_exp `instr*#2355`] +[visit_id instr*#2355] +[visit_exp (bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`})] +[visit_exp bt] +[visit_id bt] +[visit_exp in_1*{in_1 <- `in_1*`}] +[scope_enter in_1] +[visit_exp in_1] +[visit_id in_1] not free +[visit_id in_1] not free +[scope_exit in_1] +[visit_exp `in_1*`] +[visit_id in_1*] no dims +[visit_id in_1*] +[visit_exp in_2*{in_2 <- `in_2*`}] +[scope_enter in_2] +[visit_exp in_2] +[visit_id in_2] not free +[visit_id in_2] not free +[scope_exit in_2] +[visit_exp `in_2*`] +[visit_id in_2*] no dims +[visit_id in_2*] +[visit_exp bt] +[visit_id bt] not free +[scope_enter in_1] +[visit_exp in_1] +[visit_id in_1] not free +[visit_id in_1] not free +[scope_exit in_1] +[visit_exp `in_1*`] +[visit_id in_1*] not free +[visit_id in_1*] no dims +[scope_enter in_2] +[visit_exp in_2] +[visit_id in_2] not free +[visit_id in_2] not free +[scope_exit in_2] +[visit_exp `in_2*`] +[visit_id in_2*] not free +[visit_id in_2*] no dims +ps' = +[check_dims] +[check_dims] tagidx#21 x +dims \ = tagidx#21, x +[visit_exp `THROW`_instr{tagidx#21}(x)] +[visit_exp tagidx#21] +[visit_id tagidx#21] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[check_dims] +dims \ = +[visit_exp `THROW_REF`_instr] +[visit_exp ()] +[check_dims] l labelidx#101 +dims \ = l, labelidx#101 +[visit_exp `BR`_instr{labelidx#101}(l)] +[visit_exp labelidx#101] +[visit_id labelidx#101] +[visit_exp (l)] +[visit_exp l] +[visit_id l] +[visit_exp l] +[visit_id l] not free +[check_dims] l labelidx#103 +dims \ = l, labelidx#103 +[visit_exp `BR_IF`_instr{labelidx#103}(l)] +[visit_exp labelidx#103] +[visit_id labelidx#103] +[visit_exp (l)] +[visit_exp l] +[visit_id l] +[visit_exp l] +[visit_id l] not free +[check_dims] l l_n labelidx#105 labelidx*#54 +dims \ = l, l_n, labelidx#105, labelidx*#54 +[visit_exp `BR_TABLE`_instr{`labelidx*#54`, labelidx#105}(l*{l <- `l*`}, l_n)] +[visit_exp `labelidx*#54`] +[visit_id labelidx*#54] +[visit_exp labelidx#105] +[visit_id labelidx#105] +[visit_exp (l*{l <- `l*`}, l_n)] +[visit_exp l*{l <- `l*`}] +[scope_enter l] +[visit_exp l] +[visit_id l] not free +[visit_id l] not free +[scope_exit l] +[visit_exp `l*`] +[visit_id l*] no dims +[visit_id l*] +[visit_exp l_n] +[visit_id l_n] +[visit_exp l*{l <- `l*`}] +[scope_enter l] +[visit_exp l] +[visit_id l] not free +[visit_id l] not free +[scope_exit l] +[visit_exp `l*`] +[visit_id l*] not free +[visit_id l*] no dims +[visit_exp l_n] +[visit_id l_n] not free +[check_dims] +dims \ = +[visit_exp `RETURN`_instr] +[visit_exp ()] +[check_dims] funcidx#3163 x +dims \ = funcidx#3163, x +[visit_exp `CALL`_instr{funcidx#3163}(x)] +[visit_exp funcidx#3163] +[visit_id funcidx#3163] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[check_dims] tableidx#125 typeidx#1936 typeuse#69 x y +dims \ = tableidx#125, typeidx#1936, typeuse#69, x, y +[visit_exp `CALL_INDIRECT`_instr{tableidx#125, typeuse#69}(x, `_IDX`_typeuse{typeidx#1936}(y))] +[visit_exp tableidx#125] +[visit_id tableidx#125] +[visit_exp typeuse#69] +[visit_id typeuse#69] +[visit_exp (x, `_IDX`_typeuse{typeidx#1936}(y))] +[visit_exp x] +[visit_id x] +[visit_exp `_IDX`_typeuse{typeidx#1936}(y)] +[visit_exp typeidx#1936] +[visit_id typeidx#1936] +[visit_exp (y)] +[visit_exp y] +[visit_id y] +[visit_exp y] +[visit_id y] not free +[visit_exp x] +[visit_id x] not free +[check_dims] funcidx#3165 x +dims \ = funcidx#3165, x +[visit_exp `RETURN_CALL`_instr{funcidx#3165}(x)] +[visit_exp funcidx#3165] +[visit_id funcidx#3165] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[check_dims] tableidx#127 typeidx#1938 typeuse#71 x y +dims \ = tableidx#127, typeidx#1938, typeuse#71, x, y +[visit_exp `RETURN_CALL_INDIRECT`_instr{tableidx#127, typeuse#71}(x, `_IDX`_typeuse{typeidx#1938}(y))] +[visit_exp tableidx#127] +[visit_id tableidx#127] +[visit_exp typeuse#71] +[visit_id typeuse#71] +[visit_exp (x, `_IDX`_typeuse{typeidx#1938}(y))] +[visit_exp x] +[visit_id x] +[visit_exp `_IDX`_typeuse{typeidx#1938}(y)] +[visit_exp typeidx#1938] +[visit_id typeidx#1938] +[visit_exp (y)] +[visit_exp y] +[visit_id y] +[visit_exp y] +[visit_id y] not free +[visit_exp x] +[visit_id x] not free +[check_dims] typeidx#1940 typeuse#73 x +dims \ = typeidx#1940, typeuse#73, x +[visit_exp `CALL_REF`_instr{typeuse#73}(`_IDX`_typeuse{typeidx#1940}(x))] +[visit_exp typeuse#73] +[visit_id typeuse#73] +[visit_exp (`_IDX`_typeuse{typeidx#1940}(x))] +[visit_exp `_IDX`_typeuse{typeidx#1940}(x)] +[visit_exp typeidx#1940] +[visit_id typeidx#1940] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[check_dims] typeidx#1942 typeuse#75 x +dims \ = typeidx#1942, typeuse#75, x +[visit_exp `RETURN_CALL_REF`_instr{typeuse#75}(`_IDX`_typeuse{typeidx#1942}(x))] +[visit_exp typeuse#75] +[visit_id typeuse#75] +[visit_exp (`_IDX`_typeuse{typeidx#1942}(x))] +[visit_exp `_IDX`_typeuse{typeidx#1942}(x)] +[visit_exp typeidx#1942] +[visit_id typeidx#1942] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[check_dims] X*#13196 blocktype#39 bt c in instr*#2358 +dims \ = X*#13196, blocktype#39, bt, c, in, instr*#2358 +[visit_exp `TRY_TABLE`_instr{blocktype#39, `instr*#2358`}(bt, `%`_list{`X*#13196`}(c*{c <- `c*`}), in*{in <- `in*`})] +[visit_exp blocktype#39] +[visit_id blocktype#39] +[visit_exp `instr*#2358`] +[visit_id instr*#2358] +[visit_exp (bt, `%`_list{`X*#13196`}(c*{c <- `c*`}), in*{in <- `in*`})] +[visit_exp bt] +[visit_id bt] +[visit_exp `%`_list{`X*#13196`}(c*{c <- `c*`})] +[visit_exp `X*#13196`] +[visit_id X*#13196] +[visit_exp (c*{c <- `c*`})] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] no dims +[visit_id c*] +[visit_exp in*{in <- `in*`}] +[scope_enter in] +[visit_exp in] +[visit_id in] not free +[visit_id in] not free +[scope_exit in] +[visit_exp `in*`] +[visit_id in*] no dims +[visit_id in*] +[visit_exp bt] +[visit_id bt] not free +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[scope_enter in] +[visit_exp in] +[visit_id in] not free +[visit_id in] not free +[scope_exit in] +[visit_exp `in*`] +[visit_id in*] not free +[visit_id in*] no dims +[check_dims] l labelidx#107 +dims \ = l, labelidx#107 +[visit_exp `BR_ON_NULL`_instr{labelidx#107}(l)] +[visit_exp labelidx#107] +[visit_id labelidx#107] +[visit_exp (l)] +[visit_exp l] +[visit_id l] +[visit_exp l] +[visit_id l] not free +[check_dims] l labelidx#109 +dims \ = l, labelidx#109 +[visit_exp `BR_ON_NON_NULL`_instr{labelidx#109}(l)] +[visit_exp labelidx#109] +[visit_id labelidx#109] +[visit_exp (l)] +[visit_exp l] +[visit_id l] +[visit_exp l] +[visit_id l] not free +[check_dims] heaptype#1641 heaptype#1653 ht_1 ht_2 i#50095 l labelidx#111 null?#1579 null?#1591 null_1 null_2 reftype#3963 +dims \ = heaptype#1641, heaptype#1653, ht_1, ht_2, i#50095, l, labelidx#111, null?#1579, null?#1591, null_1, null_2, reftype#3963 +[visit_exp `BR_ON_CAST`_instr{labelidx#111, reftype#3963}(l, `REF`_reftype{`null?#1579`, heaptype#1641}(null_1?{null_1 <- `null_1?`}, ht_1), `REF`_reftype{`null?#1591`, heaptype#1653}(null_2?{null_2 <- `null_2?`}, ht_2))] +[visit_exp labelidx#111] +[visit_id labelidx#111] +[visit_exp reftype#3963] +[visit_id reftype#3963] +[visit_exp (l, `REF`_reftype{`null?#1579`, heaptype#1641}(null_1?{null_1 <- `null_1?`}, ht_1), `REF`_reftype{`null?#1591`, heaptype#1653}(null_2?{null_2 <- `null_2?`}, ht_2))] +[visit_exp l] +[visit_id l] +[visit_exp `REF`_reftype{`null?#1579`, heaptype#1641}(null_1?{null_1 <- `null_1?`}, ht_1)] +[visit_exp `null?#1579`] +[visit_id null?#1579] +[visit_exp heaptype#1641] +[visit_id heaptype#1641] +[visit_exp (null_1?{null_1 <- `null_1?`}, ht_1)] +[visit_exp null_1?{null_1 <- `null_1?`}] +[scope_enter null_1] +[visit_exp null_1] +[visit_id null_1] not free +[visit_id null_1] not free +[scope_exit null_1] +[visit_exp `null_1?`] +[visit_id null_1?] no dims +[visit_id null_1?] +[visit_exp ht_1] +[visit_id ht_1] +[visit_exp `REF`_reftype{`null?#1591`, heaptype#1653}(null_2?{null_2 <- `null_2?`}, ht_2)] +[visit_exp `null?#1591`] +[visit_id null?#1591] +[visit_exp heaptype#1653] +[visit_id heaptype#1653] +[visit_exp (null_2?{null_2 <- `null_2?`}, ht_2)] +[visit_exp null_2?{null_2 <- `null_2?`}] +[scope_enter null_2] +[visit_exp null_2] +[visit_id null_2] not free +[visit_id null_2] not free +[scope_exit null_2] +[visit_exp `null_2?`] +[visit_id null_2?] no dims +[visit_id null_2?] +[visit_exp ht_2] +[visit_id ht_2] +[visit_exp `%`_u32{i#50095}(24)] +[visit_exp i#50095] +[visit_id i#50095] +[visit_exp (24)] +[visit_exp 24] +[visit_exp (null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`})] +[visit_exp null_1?{null_1 <- `null_1?`}] +[scope_enter null_1] +[visit_exp null_1] +[visit_id null_1] not free +[visit_id null_1] not free +[scope_exit null_1] +[visit_exp `null_1?`] +[visit_id null_1?] not free +[visit_id null_1?] no dims +[visit_exp null_2?{null_2 <- `null_2?`}] +[scope_enter null_2] +[visit_exp null_2] +[visit_id null_2] not free +[visit_id null_2] not free +[scope_exit null_2] +[visit_exp `null_2?`] +[visit_id null_2?] not free +[visit_id null_2?] no dims +[visit_exp l] +[visit_id l] not free +[visit_exp ht_1] +[visit_id ht_1] not free +[visit_exp ht_2] +[visit_id ht_2] not free +[check_dims] heaptype#1665 heaptype#1677 ht_1 ht_2 i#50147 l labelidx#113 null?#1603 null?#1615 null_1 null_2 reftype#3966 +dims \ = heaptype#1665, heaptype#1677, ht_1, ht_2, i#50147, l, labelidx#113, null?#1603, null?#1615, null_1, null_2, reftype#3966 +[visit_exp `BR_ON_CAST_FAIL`_instr{labelidx#113, reftype#3966}(l, `REF`_reftype{`null?#1603`, heaptype#1665}(null_1?{null_1 <- `null_1?`}, ht_1), `REF`_reftype{`null?#1615`, heaptype#1677}(null_2?{null_2 <- `null_2?`}, ht_2))] +[visit_exp labelidx#113] +[visit_id labelidx#113] +[visit_exp reftype#3966] +[visit_id reftype#3966] +[visit_exp (l, `REF`_reftype{`null?#1603`, heaptype#1665}(null_1?{null_1 <- `null_1?`}, ht_1), `REF`_reftype{`null?#1615`, heaptype#1677}(null_2?{null_2 <- `null_2?`}, ht_2))] +[visit_exp l] +[visit_id l] +[visit_exp `REF`_reftype{`null?#1603`, heaptype#1665}(null_1?{null_1 <- `null_1?`}, ht_1)] +[visit_exp `null?#1603`] +[visit_id null?#1603] +[visit_exp heaptype#1665] +[visit_id heaptype#1665] +[visit_exp (null_1?{null_1 <- `null_1?`}, ht_1)] +[visit_exp null_1?{null_1 <- `null_1?`}] +[scope_enter null_1] +[visit_exp null_1] +[visit_id null_1] not free +[visit_id null_1] not free +[scope_exit null_1] +[visit_exp `null_1?`] +[visit_id null_1?] no dims +[visit_id null_1?] +[visit_exp ht_1] +[visit_id ht_1] +[visit_exp `REF`_reftype{`null?#1615`, heaptype#1677}(null_2?{null_2 <- `null_2?`}, ht_2)] +[visit_exp `null?#1615`] +[visit_id null?#1615] +[visit_exp heaptype#1677] +[visit_id heaptype#1677] +[visit_exp (null_2?{null_2 <- `null_2?`}, ht_2)] +[visit_exp null_2?{null_2 <- `null_2?`}] +[scope_enter null_2] +[visit_exp null_2] +[visit_id null_2] not free +[visit_id null_2] not free +[scope_exit null_2] +[visit_exp `null_2?`] +[visit_id null_2?] no dims +[visit_id null_2?] +[visit_exp ht_2] +[visit_id ht_2] +[visit_exp `%`_u32{i#50147}(25)] +[visit_exp i#50147] +[visit_id i#50147] +[visit_exp (25)] +[visit_exp 25] +[visit_exp (null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`})] +[visit_exp null_1?{null_1 <- `null_1?`}] +[scope_enter null_1] +[visit_exp null_1] +[visit_id null_1] not free +[visit_id null_1] not free +[scope_exit null_1] +[visit_exp `null_1?`] +[visit_id null_1?] not free +[visit_id null_1?] no dims +[visit_exp null_2?{null_2 <- `null_2?`}] +[scope_enter null_2] +[visit_exp null_2] +[visit_id null_2] not free +[visit_id null_2] not free +[scope_exit null_2] +[visit_exp `null_2?`] +[visit_id null_2?] not free +[visit_id null_2?] no dims +[visit_exp l] +[visit_id l] not free +[visit_exp ht_1] +[visit_id ht_1] not free +[visit_exp ht_2] +[visit_id ht_2] not free +ps' = +[check_dims] +[check_dims] l labelidx#115 tagidx#23 x +dims \ = l, labelidx#115, tagidx#23, x +[visit_exp `CATCH`_catch{tagidx#23, labelidx#115}(x, l)] +[visit_exp tagidx#23] +[visit_id tagidx#23] +[visit_exp labelidx#115] +[visit_id labelidx#115] +[visit_exp (x, l)] +[visit_exp x] +[visit_id x] +[visit_exp l] +[visit_id l] +[visit_exp x] +[visit_id x] not free +[visit_exp l] +[visit_id l] not free +[check_dims] l labelidx#117 tagidx#25 x +dims \ = l, labelidx#117, tagidx#25, x +[visit_exp `CATCH_REF`_catch{tagidx#25, labelidx#117}(x, l)] +[visit_exp tagidx#25] +[visit_id tagidx#25] +[visit_exp labelidx#117] +[visit_id labelidx#117] +[visit_exp (x, l)] +[visit_exp x] +[visit_id x] +[visit_exp l] +[visit_id l] +[visit_exp x] +[visit_id x] not free +[visit_exp l] +[visit_id l] not free +[check_dims] l labelidx#119 +dims \ = l, labelidx#119 +[visit_exp `CATCH_ALL`_catch{labelidx#119}(l)] +[visit_exp labelidx#119] +[visit_id labelidx#119] +[visit_exp (l)] +[visit_exp l] +[visit_id l] +[visit_exp l] +[visit_id l] not free +[check_dims] l labelidx#121 +dims \ = l, labelidx#121 +[visit_exp `CATCH_ALL_REF`_catch{labelidx#121}(l)] +[visit_exp labelidx#121] +[visit_id labelidx#121] +[visit_exp (l)] +[visit_exp l] +[visit_id l] +[visit_exp l] +[visit_id l] not free +ps' = +[check_dims] +[check_dims] localidx#21 x +dims \ = localidx#21, x +[visit_exp `LOCAL.GET`_instr{localidx#21}(x)] +[visit_exp localidx#21] +[visit_id localidx#21] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[check_dims] localidx#23 x +dims \ = localidx#23, x +[visit_exp `LOCAL.SET`_instr{localidx#23}(x)] +[visit_exp localidx#23] +[visit_id localidx#23] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[check_dims] localidx#25 x +dims \ = localidx#25, x +[visit_exp `LOCAL.TEE`_instr{localidx#25}(x)] +[visit_exp localidx#25] +[visit_id localidx#25] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +ps' = +[check_dims] +[check_dims] globalidx#25 x +dims \ = globalidx#25, x +[visit_exp `GLOBAL.GET`_instr{globalidx#25}(x)] +[visit_exp globalidx#25] +[visit_id globalidx#25] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[check_dims] globalidx#27 x +dims \ = globalidx#27, x +[visit_exp `GLOBAL.SET`_instr{globalidx#27}(x)] +[visit_exp globalidx#27] +[visit_id globalidx#27] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +ps' = +[check_dims] +[check_dims] tableidx#129 x +dims \ = tableidx#129, x +[visit_exp `TABLE.GET`_instr{tableidx#129}(x)] +[visit_exp tableidx#129] +[visit_id tableidx#129] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[check_dims] tableidx#131 x +dims \ = tableidx#131, x +[visit_exp `TABLE.SET`_instr{tableidx#131}(x)] +[visit_exp tableidx#131] +[visit_id tableidx#131] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[check_dims] elemidx#49 i#50586 tableidx#133 x y +dims \ = elemidx#49, i#50586, tableidx#133, x, y +[visit_exp `TABLE.INIT`_instr{tableidx#133, elemidx#49}(x, y)] +[visit_exp tableidx#133] +[visit_id tableidx#133] +[visit_exp elemidx#49] +[visit_id elemidx#49] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] +[visit_exp y] +[visit_id y] +[visit_exp `%`_u32{i#50586}(12)] +[visit_exp i#50586] +[visit_id i#50586] +[visit_exp (12)] +[visit_exp 12] +[visit_exp y] +[visit_id y] not free +[visit_exp x] +[visit_id x] not free +[check_dims] elemidx#51 i#50673 x +dims \ = elemidx#51, i#50673, x +[visit_exp `ELEM.DROP`_instr{elemidx#51}(x)] +[visit_exp elemidx#51] +[visit_id elemidx#51] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%`_u32{i#50673}(13)] +[visit_exp i#50673] +[visit_id i#50673] +[visit_exp (13)] +[visit_exp 13] +[visit_exp x] +[visit_id x] not free +[check_dims] i#50729 tableidx#135 x_1 x_2 +dims \ = i#50729, tableidx#135, x_1, x_2 +[visit_exp `TABLE.COPY`_instr{tableidx#135}(x_1, x_2)] +[visit_exp tableidx#135] +[visit_id tableidx#135] +[visit_exp (x_1, x_2)] +[visit_exp x_1] +[visit_id x_1] +[visit_exp x_2] +[visit_id x_2] +[visit_exp `%`_u32{i#50729}(14)] +[visit_exp i#50729] +[visit_id i#50729] +[visit_exp (14)] +[visit_exp 14] +[visit_exp x_1] +[visit_id x_1] not free +[visit_exp x_2] +[visit_id x_2] not free +[check_dims] i#50816 tableidx#138 x +dims \ = i#50816, tableidx#138, x +[visit_exp `TABLE.GROW`_instr{tableidx#138}(x)] +[visit_exp tableidx#138] +[visit_id tableidx#138] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%`_u32{i#50816}(15)] +[visit_exp i#50816] +[visit_id i#50816] +[visit_exp (15)] +[visit_exp 15] +[visit_exp x] +[visit_id x] not free +[check_dims] i#50872 tableidx#140 x +dims \ = i#50872, tableidx#140, x +[visit_exp `TABLE.SIZE`_instr{tableidx#140}(x)] +[visit_exp tableidx#140] +[visit_id tableidx#140] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%`_u32{i#50872}(16)] +[visit_exp i#50872] +[visit_id i#50872] +[visit_exp (16)] +[visit_exp 16] +[visit_exp x] +[visit_id x] not free +[check_dims] i#50928 tableidx#142 x +dims \ = i#50928, tableidx#142, x +[visit_exp `TABLE.FILL`_instr{tableidx#142}(x)] +[visit_exp tableidx#142] +[visit_id tableidx#142] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%`_u32{i#50928}(17)] +[visit_exp i#50928] +[visit_id i#50928] +[visit_exp (17)] +[visit_exp 17] +[visit_exp x] +[visit_id x] not free +[check_dims] +ps' = +[check_dims] +[check_dims] i#50986 i#51013 i#51035 i#51057 i#51079 m n u32#35 u64#553 +dims \ = i#50986, i#51013, i#51035, i#51057, i#51079, m, n, u32#35, u64#553 +[visit_exp (`%`_memidx{i#51035}(0), {`ALIGN`{u32#35} `%`_u32{i#51057}(n), `OFFSET`{u64#553} `%`_u64{i#51079}(m)})] +[visit_exp `%`_memidx{i#51035}(0)] +[visit_exp i#51035] +[visit_id i#51035] +[visit_exp (0)] +[visit_exp 0] +[visit_exp {`ALIGN`{u32#35} `%`_u32{i#51057}(n), `OFFSET`{u64#553} `%`_u64{i#51079}(m)}] +[visit_exp u32#35] +[visit_id u32#35] +[visit_exp `%`_u32{i#51057}(n)] +[visit_exp i#51057] +[visit_id i#51057] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp u64#553] +[visit_id u64#553] +[visit_exp `%`_u64{i#51079}(m)] +[visit_exp i#51079] +[visit_id i#51079] +[visit_exp (m)] +[visit_exp m] +[visit_id m] +[visit_exp `%`_u32{i#50986}(n)] +[visit_exp i#50986] +[visit_id i#50986] +[visit_exp (n)] +[visit_exp n] +[visit_id n] not free +[visit_exp `%`_u64{i#51013}(m)] +[visit_exp i#51013] +[visit_id i#51013] +[visit_exp (m)] +[visit_exp m] +[visit_id m] not free +[visit_exp (n < (2 ^ 6))] +[visit_exp n] +[visit_id n] not free +[visit_exp (2 ^ 6)] +[visit_exp 2] +[visit_exp 6] +[check_dims] i#51104 i#51148 i#51182 i#51204 m n u32#36 u64#554 x +dims \ = i#51104, i#51148, i#51182, i#51204, m, n, u32#36, u64#554, x +[visit_exp (x, {`ALIGN`{u32#36} `%`_u32{i#51182}((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat)), `OFFSET`{u64#554} `%`_u64{i#51204}(m)})] +[visit_exp x] +[visit_id x] +[visit_exp {`ALIGN`{u32#36} `%`_u32{i#51182}((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat)), `OFFSET`{u64#554} `%`_u64{i#51204}(m)}] +[visit_exp u32#36] +[visit_id u32#36] +[visit_exp `%`_u32{i#51182}((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat))] +[visit_exp i#51182] +[visit_id i#51182] +[visit_exp ((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat))] +[visit_exp (((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat)] +[visit_exp ((n : nat <:> int) - ((2 ^ 6) : nat <:> int))] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] +[visit_exp ((2 ^ 6) : nat <:> int)] +[visit_exp (2 ^ 6)] +[visit_exp 2] +[visit_exp 6] +[visit_exp u64#554] +[visit_id u64#554] +[visit_exp `%`_u64{i#51204}(m)] +[visit_exp i#51204] +[visit_id i#51204] +[visit_exp (m)] +[visit_exp m] +[visit_id m] +[visit_exp `%`_u32{i#51104}(n)] +[visit_exp i#51104] +[visit_id i#51104] +[visit_exp (n)] +[visit_exp n] +[visit_id n] not free +[visit_exp x] +[visit_id x] not free +[visit_exp `%`_u64{i#51148}(m)] +[visit_exp i#51148] +[visit_id i#51148] +[visit_exp (m)] +[visit_exp m] +[visit_id m] not free +[visit_exp (((2 ^ 6) <= n) /\ (n < (2 ^ 7)))] +[visit_exp ((2 ^ 6) <= n)] +[visit_exp (2 ^ 6)] +[visit_exp 2] +[visit_exp 6] +[visit_exp n] +[visit_id n] not free +[visit_exp (n < (2 ^ 7))] +[visit_exp n] +[visit_id n] not free +[visit_exp (2 ^ 7)] +[visit_exp 2] +[visit_exp 7] +ps' = +[check_dims] +[check_dims] ao memarg#91 memidx#171 numtype?#21 x +dims \ = ao, memarg#91, memidx#171, numtype?#21, x +[visit_exp `LOAD`_instr{`numtype?#21`, memidx#171, memarg#91}(`I32`_numtype, ?(), x, ao)] +[visit_exp `numtype?#21`] +[visit_id numtype?#21] +[visit_exp memidx#171] +[visit_id memidx#171] +[visit_exp memarg#91] +[visit_id memarg#91] +[visit_exp (`I32`_numtype, ?(), x, ao)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp ?()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +[check_dims] ao memarg#93 memidx#173 numtype?#22 x +dims \ = ao, memarg#93, memidx#173, numtype?#22, x +[visit_exp `LOAD`_instr{`numtype?#22`, memidx#173, memarg#93}(`I64`_numtype, ?(), x, ao)] +[visit_exp `numtype?#22`] +[visit_id numtype?#22] +[visit_exp memidx#173] +[visit_id memidx#173] +[visit_exp memarg#93] +[visit_id memarg#93] +[visit_exp (`I64`_numtype, ?(), x, ao)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp ?()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +[check_dims] ao memarg#95 memidx#175 numtype?#23 x +dims \ = ao, memarg#95, memidx#175, numtype?#23, x +[visit_exp `LOAD`_instr{`numtype?#23`, memidx#175, memarg#95}(`F32`_numtype, ?(), x, ao)] +[visit_exp `numtype?#23`] +[visit_id numtype?#23] +[visit_exp memidx#175] +[visit_id memidx#175] +[visit_exp memarg#95] +[visit_id memarg#95] +[visit_exp (`F32`_numtype, ?(), x, ao)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp ?()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +[check_dims] ao memarg#97 memidx#177 numtype?#24 x +dims \ = ao, memarg#97, memidx#177, numtype?#24, x +[visit_exp `LOAD`_instr{`numtype?#24`, memidx#177, memarg#97}(`F64`_numtype, ?(), x, ao)] +[visit_exp `numtype?#24`] +[visit_id numtype?#24] +[visit_exp memidx#177] +[visit_id memidx#177] +[visit_exp memarg#97] +[visit_id memarg#97] +[visit_exp (`F64`_numtype, ?(), x, ao)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp ?()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +[check_dims] ao i#51346 i#51353 memarg#99 memidx#179 numtype?#25 sx#426 sz#558 x +dims \ = ao, i#51346, i#51353, memarg#99, memidx#179, numtype?#25, sx#426, sz#558, x +[visit_exp `LOAD`_instr{`numtype?#25`, memidx#179, memarg#99}(`I32`_numtype, ?(`%_%`_loadop_{sz#558, sx#426, i#51346}(`%`_sz{i#51353}(8), `S`_sx)), x, ao)] +[visit_exp `numtype?#25`] +[visit_id numtype?#25] +[visit_exp memidx#179] +[visit_id memidx#179] +[visit_exp memarg#99] +[visit_id memarg#99] +[visit_exp (`I32`_numtype, ?(`%_%`_loadop_{sz#558, sx#426, i#51346}(`%`_sz{i#51353}(8), `S`_sx)), x, ao)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp ?(`%_%`_loadop_{sz#558, sx#426, i#51346}(`%`_sz{i#51353}(8), `S`_sx))] +[visit_exp `%_%`_loadop_{sz#558, sx#426, i#51346}(`%`_sz{i#51353}(8), `S`_sx)] +[visit_exp sz#558] +[visit_id sz#558] +[visit_exp sx#426] +[visit_id sx#426] +[visit_exp i#51346] +[visit_id i#51346] +[visit_exp (`%`_sz{i#51353}(8), `S`_sx)] +[visit_exp `%`_sz{i#51353}(8)] +[visit_exp i#51353] +[visit_id i#51353] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +[check_dims] ao i#51405 i#51412 memarg#101 memidx#181 numtype?#26 sx#444 sz#576 x +dims \ = ao, i#51405, i#51412, memarg#101, memidx#181, numtype?#26, sx#444, sz#576, x +[visit_exp `LOAD`_instr{`numtype?#26`, memidx#181, memarg#101}(`I32`_numtype, ?(`%_%`_loadop_{sz#576, sx#444, i#51405}(`%`_sz{i#51412}(8), `U`_sx)), x, ao)] +[visit_exp `numtype?#26`] +[visit_id numtype?#26] +[visit_exp memidx#181] +[visit_id memidx#181] +[visit_exp memarg#101] +[visit_id memarg#101] +[visit_exp (`I32`_numtype, ?(`%_%`_loadop_{sz#576, sx#444, i#51405}(`%`_sz{i#51412}(8), `U`_sx)), x, ao)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp ?(`%_%`_loadop_{sz#576, sx#444, i#51405}(`%`_sz{i#51412}(8), `U`_sx))] +[visit_exp `%_%`_loadop_{sz#576, sx#444, i#51405}(`%`_sz{i#51412}(8), `U`_sx)] +[visit_exp sz#576] +[visit_id sz#576] +[visit_exp sx#444] +[visit_id sx#444] +[visit_exp i#51405] +[visit_id i#51405] +[visit_exp (`%`_sz{i#51412}(8), `U`_sx)] +[visit_exp `%`_sz{i#51412}(8)] +[visit_exp i#51412] +[visit_id i#51412] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +[check_dims] ao i#51464 i#51471 memarg#103 memidx#183 numtype?#27 sx#462 sz#594 x +dims \ = ao, i#51464, i#51471, memarg#103, memidx#183, numtype?#27, sx#462, sz#594, x +[visit_exp `LOAD`_instr{`numtype?#27`, memidx#183, memarg#103}(`I32`_numtype, ?(`%_%`_loadop_{sz#594, sx#462, i#51464}(`%`_sz{i#51471}(16), `S`_sx)), x, ao)] +[visit_exp `numtype?#27`] +[visit_id numtype?#27] +[visit_exp memidx#183] +[visit_id memidx#183] +[visit_exp memarg#103] +[visit_id memarg#103] +[visit_exp (`I32`_numtype, ?(`%_%`_loadop_{sz#594, sx#462, i#51464}(`%`_sz{i#51471}(16), `S`_sx)), x, ao)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp ?(`%_%`_loadop_{sz#594, sx#462, i#51464}(`%`_sz{i#51471}(16), `S`_sx))] +[visit_exp `%_%`_loadop_{sz#594, sx#462, i#51464}(`%`_sz{i#51471}(16), `S`_sx)] +[visit_exp sz#594] +[visit_id sz#594] +[visit_exp sx#462] +[visit_id sx#462] +[visit_exp i#51464] +[visit_id i#51464] +[visit_exp (`%`_sz{i#51471}(16), `S`_sx)] +[visit_exp `%`_sz{i#51471}(16)] +[visit_exp i#51471] +[visit_id i#51471] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +[check_dims] ao i#51523 i#51530 memarg#105 memidx#185 numtype?#28 sx#480 sz#612 x +dims \ = ao, i#51523, i#51530, memarg#105, memidx#185, numtype?#28, sx#480, sz#612, x +[visit_exp `LOAD`_instr{`numtype?#28`, memidx#185, memarg#105}(`I32`_numtype, ?(`%_%`_loadop_{sz#612, sx#480, i#51523}(`%`_sz{i#51530}(16), `U`_sx)), x, ao)] +[visit_exp `numtype?#28`] +[visit_id numtype?#28] +[visit_exp memidx#185] +[visit_id memidx#185] +[visit_exp memarg#105] +[visit_id memarg#105] +[visit_exp (`I32`_numtype, ?(`%_%`_loadop_{sz#612, sx#480, i#51523}(`%`_sz{i#51530}(16), `U`_sx)), x, ao)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp ?(`%_%`_loadop_{sz#612, sx#480, i#51523}(`%`_sz{i#51530}(16), `U`_sx))] +[visit_exp `%_%`_loadop_{sz#612, sx#480, i#51523}(`%`_sz{i#51530}(16), `U`_sx)] +[visit_exp sz#612] +[visit_id sz#612] +[visit_exp sx#480] +[visit_id sx#480] +[visit_exp i#51523] +[visit_id i#51523] +[visit_exp (`%`_sz{i#51530}(16), `U`_sx)] +[visit_exp `%`_sz{i#51530}(16)] +[visit_exp i#51530] +[visit_id i#51530] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +[check_dims] ao i#51582 i#51589 memarg#107 memidx#187 numtype?#29 sx#498 sz#630 x +dims \ = ao, i#51582, i#51589, memarg#107, memidx#187, numtype?#29, sx#498, sz#630, x +[visit_exp `LOAD`_instr{`numtype?#29`, memidx#187, memarg#107}(`I64`_numtype, ?(`%_%`_loadop_{sz#630, sx#498, i#51582}(`%`_sz{i#51589}(8), `S`_sx)), x, ao)] +[visit_exp `numtype?#29`] +[visit_id numtype?#29] +[visit_exp memidx#187] +[visit_id memidx#187] +[visit_exp memarg#107] +[visit_id memarg#107] +[visit_exp (`I64`_numtype, ?(`%_%`_loadop_{sz#630, sx#498, i#51582}(`%`_sz{i#51589}(8), `S`_sx)), x, ao)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp ?(`%_%`_loadop_{sz#630, sx#498, i#51582}(`%`_sz{i#51589}(8), `S`_sx))] +[visit_exp `%_%`_loadop_{sz#630, sx#498, i#51582}(`%`_sz{i#51589}(8), `S`_sx)] +[visit_exp sz#630] +[visit_id sz#630] +[visit_exp sx#498] +[visit_id sx#498] +[visit_exp i#51582] +[visit_id i#51582] +[visit_exp (`%`_sz{i#51589}(8), `S`_sx)] +[visit_exp `%`_sz{i#51589}(8)] +[visit_exp i#51589] +[visit_id i#51589] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +[check_dims] ao i#51641 i#51648 memarg#109 memidx#189 numtype?#30 sx#516 sz#648 x +dims \ = ao, i#51641, i#51648, memarg#109, memidx#189, numtype?#30, sx#516, sz#648, x +[visit_exp `LOAD`_instr{`numtype?#30`, memidx#189, memarg#109}(`I64`_numtype, ?(`%_%`_loadop_{sz#648, sx#516, i#51641}(`%`_sz{i#51648}(8), `U`_sx)), x, ao)] +[visit_exp `numtype?#30`] +[visit_id numtype?#30] +[visit_exp memidx#189] +[visit_id memidx#189] +[visit_exp memarg#109] +[visit_id memarg#109] +[visit_exp (`I64`_numtype, ?(`%_%`_loadop_{sz#648, sx#516, i#51641}(`%`_sz{i#51648}(8), `U`_sx)), x, ao)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp ?(`%_%`_loadop_{sz#648, sx#516, i#51641}(`%`_sz{i#51648}(8), `U`_sx))] +[visit_exp `%_%`_loadop_{sz#648, sx#516, i#51641}(`%`_sz{i#51648}(8), `U`_sx)] +[visit_exp sz#648] +[visit_id sz#648] +[visit_exp sx#516] +[visit_id sx#516] +[visit_exp i#51641] +[visit_id i#51641] +[visit_exp (`%`_sz{i#51648}(8), `U`_sx)] +[visit_exp `%`_sz{i#51648}(8)] +[visit_exp i#51648] +[visit_id i#51648] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +[check_dims] ao i#51700 i#51707 memarg#111 memidx#191 numtype?#31 sx#534 sz#666 x +dims \ = ao, i#51700, i#51707, memarg#111, memidx#191, numtype?#31, sx#534, sz#666, x +[visit_exp `LOAD`_instr{`numtype?#31`, memidx#191, memarg#111}(`I64`_numtype, ?(`%_%`_loadop_{sz#666, sx#534, i#51700}(`%`_sz{i#51707}(16), `S`_sx)), x, ao)] +[visit_exp `numtype?#31`] +[visit_id numtype?#31] +[visit_exp memidx#191] +[visit_id memidx#191] +[visit_exp memarg#111] +[visit_id memarg#111] +[visit_exp (`I64`_numtype, ?(`%_%`_loadop_{sz#666, sx#534, i#51700}(`%`_sz{i#51707}(16), `S`_sx)), x, ao)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp ?(`%_%`_loadop_{sz#666, sx#534, i#51700}(`%`_sz{i#51707}(16), `S`_sx))] +[visit_exp `%_%`_loadop_{sz#666, sx#534, i#51700}(`%`_sz{i#51707}(16), `S`_sx)] +[visit_exp sz#666] +[visit_id sz#666] +[visit_exp sx#534] +[visit_id sx#534] +[visit_exp i#51700] +[visit_id i#51700] +[visit_exp (`%`_sz{i#51707}(16), `S`_sx)] +[visit_exp `%`_sz{i#51707}(16)] +[visit_exp i#51707] +[visit_id i#51707] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +[check_dims] ao i#51759 i#51766 memarg#113 memidx#193 numtype?#32 sx#552 sz#684 x +dims \ = ao, i#51759, i#51766, memarg#113, memidx#193, numtype?#32, sx#552, sz#684, x +[visit_exp `LOAD`_instr{`numtype?#32`, memidx#193, memarg#113}(`I64`_numtype, ?(`%_%`_loadop_{sz#684, sx#552, i#51759}(`%`_sz{i#51766}(16), `U`_sx)), x, ao)] +[visit_exp `numtype?#32`] +[visit_id numtype?#32] +[visit_exp memidx#193] +[visit_id memidx#193] +[visit_exp memarg#113] +[visit_id memarg#113] +[visit_exp (`I64`_numtype, ?(`%_%`_loadop_{sz#684, sx#552, i#51759}(`%`_sz{i#51766}(16), `U`_sx)), x, ao)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp ?(`%_%`_loadop_{sz#684, sx#552, i#51759}(`%`_sz{i#51766}(16), `U`_sx))] +[visit_exp `%_%`_loadop_{sz#684, sx#552, i#51759}(`%`_sz{i#51766}(16), `U`_sx)] +[visit_exp sz#684] +[visit_id sz#684] +[visit_exp sx#552] +[visit_id sx#552] +[visit_exp i#51759] +[visit_id i#51759] +[visit_exp (`%`_sz{i#51766}(16), `U`_sx)] +[visit_exp `%`_sz{i#51766}(16)] +[visit_exp i#51766] +[visit_id i#51766] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +[check_dims] ao i#51818 i#51825 memarg#115 memidx#195 numtype?#33 sx#570 sz#702 x +dims \ = ao, i#51818, i#51825, memarg#115, memidx#195, numtype?#33, sx#570, sz#702, x +[visit_exp `LOAD`_instr{`numtype?#33`, memidx#195, memarg#115}(`I64`_numtype, ?(`%_%`_loadop_{sz#702, sx#570, i#51818}(`%`_sz{i#51825}(32), `S`_sx)), x, ao)] +[visit_exp `numtype?#33`] +[visit_id numtype?#33] +[visit_exp memidx#195] +[visit_id memidx#195] +[visit_exp memarg#115] +[visit_id memarg#115] +[visit_exp (`I64`_numtype, ?(`%_%`_loadop_{sz#702, sx#570, i#51818}(`%`_sz{i#51825}(32), `S`_sx)), x, ao)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp ?(`%_%`_loadop_{sz#702, sx#570, i#51818}(`%`_sz{i#51825}(32), `S`_sx))] +[visit_exp `%_%`_loadop_{sz#702, sx#570, i#51818}(`%`_sz{i#51825}(32), `S`_sx)] +[visit_exp sz#702] +[visit_id sz#702] +[visit_exp sx#570] +[visit_id sx#570] +[visit_exp i#51818] +[visit_id i#51818] +[visit_exp (`%`_sz{i#51825}(32), `S`_sx)] +[visit_exp `%`_sz{i#51825}(32)] +[visit_exp i#51825] +[visit_id i#51825] +[visit_exp (32)] +[visit_exp 32] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +[check_dims] ao i#51877 i#51884 memarg#117 memidx#197 numtype?#34 sx#588 sz#720 x +dims \ = ao, i#51877, i#51884, memarg#117, memidx#197, numtype?#34, sx#588, sz#720, x +[visit_exp `LOAD`_instr{`numtype?#34`, memidx#197, memarg#117}(`I64`_numtype, ?(`%_%`_loadop_{sz#720, sx#588, i#51877}(`%`_sz{i#51884}(32), `U`_sx)), x, ao)] +[visit_exp `numtype?#34`] +[visit_id numtype?#34] +[visit_exp memidx#197] +[visit_id memidx#197] +[visit_exp memarg#117] +[visit_id memarg#117] +[visit_exp (`I64`_numtype, ?(`%_%`_loadop_{sz#720, sx#588, i#51877}(`%`_sz{i#51884}(32), `U`_sx)), x, ao)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp ?(`%_%`_loadop_{sz#720, sx#588, i#51877}(`%`_sz{i#51884}(32), `U`_sx))] +[visit_exp `%_%`_loadop_{sz#720, sx#588, i#51877}(`%`_sz{i#51884}(32), `U`_sx)] +[visit_exp sz#720] +[visit_id sz#720] +[visit_exp sx#588] +[visit_id sx#588] +[visit_exp i#51877] +[visit_id i#51877] +[visit_exp (`%`_sz{i#51884}(32), `U`_sx)] +[visit_exp `%`_sz{i#51884}(32)] +[visit_exp i#51884] +[visit_id i#51884] +[visit_exp (32)] +[visit_exp 32] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +[check_dims] ao memarg#119 memidx#199 numtype?#35 x +dims \ = ao, memarg#119, memidx#199, numtype?#35, x +[visit_exp `STORE`_instr{`numtype?#35`, memidx#199, memarg#119}(`I32`_numtype, ?(), x, ao)] +[visit_exp `numtype?#35`] +[visit_id numtype?#35] +[visit_exp memidx#199] +[visit_id memidx#199] +[visit_exp memarg#119] +[visit_id memarg#119] +[visit_exp (`I32`_numtype, ?(), x, ao)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp ?()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +[check_dims] ao memarg#121 memidx#201 numtype?#36 x +dims \ = ao, memarg#121, memidx#201, numtype?#36, x +[visit_exp `STORE`_instr{`numtype?#36`, memidx#201, memarg#121}(`I64`_numtype, ?(), x, ao)] +[visit_exp `numtype?#36`] +[visit_id numtype?#36] +[visit_exp memidx#201] +[visit_id memidx#201] +[visit_exp memarg#121] +[visit_id memarg#121] +[visit_exp (`I64`_numtype, ?(), x, ao)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp ?()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +[check_dims] ao memarg#123 memidx#203 numtype?#37 x +dims \ = ao, memarg#123, memidx#203, numtype?#37, x +[visit_exp `STORE`_instr{`numtype?#37`, memidx#203, memarg#123}(`F32`_numtype, ?(), x, ao)] +[visit_exp `numtype?#37`] +[visit_id numtype?#37] +[visit_exp memidx#203] +[visit_id memidx#203] +[visit_exp memarg#123] +[visit_id memarg#123] +[visit_exp (`F32`_numtype, ?(), x, ao)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp ?()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +[check_dims] ao memarg#125 memidx#205 numtype?#38 x +dims \ = ao, memarg#125, memidx#205, numtype?#38, x +[visit_exp `STORE`_instr{`numtype?#38`, memidx#205, memarg#125}(`F64`_numtype, ?(), x, ao)] +[visit_exp `numtype?#38`] +[visit_id numtype?#38] +[visit_exp memidx#205] +[visit_id memidx#205] +[visit_exp memarg#125] +[visit_id memarg#125] +[visit_exp (`F64`_numtype, ?(), x, ao)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp ?()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +[check_dims] ao i#52055 i#52056 memarg#127 memidx#207 numtype?#39 sz#733 x +dims \ = ao, i#52055, i#52056, memarg#127, memidx#207, numtype?#39, sz#733, x +[visit_exp `STORE`_instr{`numtype?#39`, memidx#207, memarg#127}(`I32`_numtype, ?(`%`_storeop_{sz#733, i#52055}(`%`_sz{i#52056}(8))), x, ao)] +[visit_exp `numtype?#39`] +[visit_id numtype?#39] +[visit_exp memidx#207] +[visit_id memidx#207] +[visit_exp memarg#127] +[visit_id memarg#127] +[visit_exp (`I32`_numtype, ?(`%`_storeop_{sz#733, i#52055}(`%`_sz{i#52056}(8))), x, ao)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp ?(`%`_storeop_{sz#733, i#52055}(`%`_sz{i#52056}(8)))] +[visit_exp `%`_storeop_{sz#733, i#52055}(`%`_sz{i#52056}(8))] +[visit_exp sz#733] +[visit_id sz#733] +[visit_exp i#52055] +[visit_id i#52055] +[visit_exp (`%`_sz{i#52056}(8))] +[visit_exp `%`_sz{i#52056}(8)] +[visit_exp i#52056] +[visit_id i#52056] +[visit_exp (8)] +[visit_exp 8] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +[check_dims] ao i#52123 i#52124 memarg#129 memidx#209 numtype?#40 sz#746 x +dims \ = ao, i#52123, i#52124, memarg#129, memidx#209, numtype?#40, sz#746, x +[visit_exp `STORE`_instr{`numtype?#40`, memidx#209, memarg#129}(`I32`_numtype, ?(`%`_storeop_{sz#746, i#52123}(`%`_sz{i#52124}(16))), x, ao)] +[visit_exp `numtype?#40`] +[visit_id numtype?#40] +[visit_exp memidx#209] +[visit_id memidx#209] +[visit_exp memarg#129] +[visit_id memarg#129] +[visit_exp (`I32`_numtype, ?(`%`_storeop_{sz#746, i#52123}(`%`_sz{i#52124}(16))), x, ao)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp ?(`%`_storeop_{sz#746, i#52123}(`%`_sz{i#52124}(16)))] +[visit_exp `%`_storeop_{sz#746, i#52123}(`%`_sz{i#52124}(16))] +[visit_exp sz#746] +[visit_id sz#746] +[visit_exp i#52123] +[visit_id i#52123] +[visit_exp (`%`_sz{i#52124}(16))] +[visit_exp `%`_sz{i#52124}(16)] +[visit_exp i#52124] +[visit_id i#52124] +[visit_exp (16)] +[visit_exp 16] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +[check_dims] ao i#52191 i#52192 memarg#131 memidx#211 numtype?#41 sz#759 x +dims \ = ao, i#52191, i#52192, memarg#131, memidx#211, numtype?#41, sz#759, x +[visit_exp `STORE`_instr{`numtype?#41`, memidx#211, memarg#131}(`I64`_numtype, ?(`%`_storeop_{sz#759, i#52191}(`%`_sz{i#52192}(8))), x, ao)] +[visit_exp `numtype?#41`] +[visit_id numtype?#41] +[visit_exp memidx#211] +[visit_id memidx#211] +[visit_exp memarg#131] +[visit_id memarg#131] +[visit_exp (`I64`_numtype, ?(`%`_storeop_{sz#759, i#52191}(`%`_sz{i#52192}(8))), x, ao)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp ?(`%`_storeop_{sz#759, i#52191}(`%`_sz{i#52192}(8)))] +[visit_exp `%`_storeop_{sz#759, i#52191}(`%`_sz{i#52192}(8))] +[visit_exp sz#759] +[visit_id sz#759] +[visit_exp i#52191] +[visit_id i#52191] +[visit_exp (`%`_sz{i#52192}(8))] +[visit_exp `%`_sz{i#52192}(8)] +[visit_exp i#52192] +[visit_id i#52192] +[visit_exp (8)] +[visit_exp 8] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +[check_dims] ao i#52259 i#52260 memarg#133 memidx#213 numtype?#42 sz#772 x +dims \ = ao, i#52259, i#52260, memarg#133, memidx#213, numtype?#42, sz#772, x +[visit_exp `STORE`_instr{`numtype?#42`, memidx#213, memarg#133}(`I64`_numtype, ?(`%`_storeop_{sz#772, i#52259}(`%`_sz{i#52260}(16))), x, ao)] +[visit_exp `numtype?#42`] +[visit_id numtype?#42] +[visit_exp memidx#213] +[visit_id memidx#213] +[visit_exp memarg#133] +[visit_id memarg#133] +[visit_exp (`I64`_numtype, ?(`%`_storeop_{sz#772, i#52259}(`%`_sz{i#52260}(16))), x, ao)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp ?(`%`_storeop_{sz#772, i#52259}(`%`_sz{i#52260}(16)))] +[visit_exp `%`_storeop_{sz#772, i#52259}(`%`_sz{i#52260}(16))] +[visit_exp sz#772] +[visit_id sz#772] +[visit_exp i#52259] +[visit_id i#52259] +[visit_exp (`%`_sz{i#52260}(16))] +[visit_exp `%`_sz{i#52260}(16)] +[visit_exp i#52260] +[visit_id i#52260] +[visit_exp (16)] +[visit_exp 16] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +[check_dims] ao i#52327 i#52328 memarg#135 memidx#215 numtype?#43 sz#785 x +dims \ = ao, i#52327, i#52328, memarg#135, memidx#215, numtype?#43, sz#785, x +[visit_exp `STORE`_instr{`numtype?#43`, memidx#215, memarg#135}(`I64`_numtype, ?(`%`_storeop_{sz#785, i#52327}(`%`_sz{i#52328}(32))), x, ao)] +[visit_exp `numtype?#43`] +[visit_id numtype?#43] +[visit_exp memidx#215] +[visit_id memidx#215] +[visit_exp memarg#135] +[visit_id memarg#135] +[visit_exp (`I64`_numtype, ?(`%`_storeop_{sz#785, i#52327}(`%`_sz{i#52328}(32))), x, ao)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp ?(`%`_storeop_{sz#785, i#52327}(`%`_sz{i#52328}(32)))] +[visit_exp `%`_storeop_{sz#785, i#52327}(`%`_sz{i#52328}(32))] +[visit_exp sz#785] +[visit_id sz#785] +[visit_exp i#52327] +[visit_id i#52327] +[visit_exp (`%`_sz{i#52328}(32))] +[visit_exp `%`_sz{i#52328}(32)] +[visit_exp i#52328] +[visit_id i#52328] +[visit_exp (32)] +[visit_exp 32] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +[check_dims] memidx#217 x +dims \ = memidx#217, x +[visit_exp `MEMORY.SIZE`_instr{memidx#217}(x)] +[visit_exp memidx#217] +[visit_id memidx#217] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[check_dims] memidx#219 x +dims \ = memidx#219, x +[visit_exp `MEMORY.GROW`_instr{memidx#219}(x)] +[visit_exp memidx#219] +[visit_id memidx#219] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[check_dims] dataidx#47 i#52427 memidx#221 x y +dims \ = dataidx#47, i#52427, memidx#221, x, y +[visit_exp `MEMORY.INIT`_instr{memidx#221, dataidx#47}(x, y)] +[visit_exp memidx#221] +[visit_id memidx#221] +[visit_exp dataidx#47] +[visit_id dataidx#47] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] +[visit_exp y] +[visit_id y] +[visit_exp `%`_u32{i#52427}(8)] +[visit_exp i#52427] +[visit_id i#52427] +[visit_exp (8)] +[visit_exp 8] +[visit_exp y] +[visit_id y] not free +[visit_exp x] +[visit_id x] not free +[check_dims] dataidx#49 i#52514 x +dims \ = dataidx#49, i#52514, x +[visit_exp `DATA.DROP`_instr{dataidx#49}(x)] +[visit_exp dataidx#49] +[visit_id dataidx#49] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%`_u32{i#52514}(9)] +[visit_exp i#52514] +[visit_id i#52514] +[visit_exp (9)] +[visit_exp 9] +[visit_exp x] +[visit_id x] not free +[check_dims] i#52570 memidx#223 x_1 x_2 +dims \ = i#52570, memidx#223, x_1, x_2 +[visit_exp `MEMORY.COPY`_instr{memidx#223}(x_1, x_2)] +[visit_exp memidx#223] +[visit_id memidx#223] +[visit_exp (x_1, x_2)] +[visit_exp x_1] +[visit_id x_1] +[visit_exp x_2] +[visit_id x_2] +[visit_exp `%`_u32{i#52570}(10)] +[visit_exp i#52570] +[visit_id i#52570] +[visit_exp (10)] +[visit_exp 10] +[visit_exp x_1] +[visit_id x_1] not free +[visit_exp x_2] +[visit_id x_2] not free +[check_dims] i#52657 memidx#226 x +dims \ = i#52657, memidx#226, x +[visit_exp `MEMORY.FILL`_instr{memidx#226}(x)] +[visit_exp memidx#226] +[visit_id memidx#226] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%`_u32{i#52657}(11)] +[visit_exp i#52657] +[visit_id i#52657] +[visit_exp (11)] +[visit_exp 11] +[visit_exp x] +[visit_id x] not free +ps' = +[check_dims] +[check_dims] heaptype#1679 ht +dims \ = heaptype#1679, ht +[visit_exp `REF.NULL`_instr{heaptype#1679}(ht)] +[visit_exp heaptype#1679] +[visit_id heaptype#1679] +[visit_exp (ht)] +[visit_exp ht] +[visit_id ht] +[visit_exp ht] +[visit_id ht] not free +[check_dims] +dims \ = +[visit_exp `REF.IS_NULL`_instr] +[visit_exp ()] +[check_dims] funcidx#3167 x +dims \ = funcidx#3167, x +[visit_exp `REF.FUNC`_instr{funcidx#3167}(x)] +[visit_exp funcidx#3167] +[visit_id funcidx#3167] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[check_dims] +dims \ = +[visit_exp `REF.EQ`_instr] +[visit_exp ()] +[check_dims] +dims \ = +[visit_exp `REF.AS_NON_NULL`_instr] +[visit_exp ()] +[check_dims] heaptype#1691 ht i#52744 null?#1627 reftype#3969 +dims \ = heaptype#1691, ht, i#52744, null?#1627, reftype#3969 +[visit_exp `REF.TEST`_instr{reftype#3969}(`REF`_reftype{`null?#1627`, heaptype#1691}(?(), ht))] +[visit_exp reftype#3969] +[visit_id reftype#3969] +[visit_exp (`REF`_reftype{`null?#1627`, heaptype#1691}(?(), ht))] +[visit_exp `REF`_reftype{`null?#1627`, heaptype#1691}(?(), ht)] +[visit_exp `null?#1627`] +[visit_id null?#1627] +[visit_exp heaptype#1691] +[visit_id heaptype#1691] +[visit_exp (?(), ht)] +[visit_exp ?()] +[visit_exp ht] +[visit_id ht] +[visit_exp `%`_u32{i#52744}(20)] +[visit_exp i#52744] +[visit_id i#52744] +[visit_exp (20)] +[visit_exp 20] +[visit_exp ht] +[visit_id ht] not free +[check_dims] heaptype#1703 ht i#52769 null?#1639 reftype#3971 +dims \ = heaptype#1703, ht, i#52769, null?#1639, reftype#3971 +[visit_exp `REF.TEST`_instr{reftype#3971}(`REF`_reftype{`null?#1639`, heaptype#1703}(?(`NULL`_null), ht))] +[visit_exp reftype#3971] +[visit_id reftype#3971] +[visit_exp (`REF`_reftype{`null?#1639`, heaptype#1703}(?(`NULL`_null), ht))] +[visit_exp `REF`_reftype{`null?#1639`, heaptype#1703}(?(`NULL`_null), ht)] +[visit_exp `null?#1639`] +[visit_id null?#1639] +[visit_exp heaptype#1703] +[visit_id heaptype#1703] +[visit_exp (?(`NULL`_null), ht)] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp ht] +[visit_id ht] +[visit_exp `%`_u32{i#52769}(21)] +[visit_exp i#52769] +[visit_id i#52769] +[visit_exp (21)] +[visit_exp 21] +[visit_exp ht] +[visit_id ht] not free +[check_dims] heaptype#1715 ht i#52794 null?#1651 reftype#3973 +dims \ = heaptype#1715, ht, i#52794, null?#1651, reftype#3973 +[visit_exp `REF.CAST`_instr{reftype#3973}(`REF`_reftype{`null?#1651`, heaptype#1715}(?(), ht))] +[visit_exp reftype#3973] +[visit_id reftype#3973] +[visit_exp (`REF`_reftype{`null?#1651`, heaptype#1715}(?(), ht))] +[visit_exp `REF`_reftype{`null?#1651`, heaptype#1715}(?(), ht)] +[visit_exp `null?#1651`] +[visit_id null?#1651] +[visit_exp heaptype#1715] +[visit_id heaptype#1715] +[visit_exp (?(), ht)] +[visit_exp ?()] +[visit_exp ht] +[visit_id ht] +[visit_exp `%`_u32{i#52794}(22)] +[visit_exp i#52794] +[visit_id i#52794] +[visit_exp (22)] +[visit_exp 22] +[visit_exp ht] +[visit_id ht] not free +[check_dims] heaptype#1727 ht i#52819 null?#1663 reftype#3975 +dims \ = heaptype#1727, ht, i#52819, null?#1663, reftype#3975 +[visit_exp `REF.CAST`_instr{reftype#3975}(`REF`_reftype{`null?#1663`, heaptype#1727}(?(`NULL`_null), ht))] +[visit_exp reftype#3975] +[visit_id reftype#3975] +[visit_exp (`REF`_reftype{`null?#1663`, heaptype#1727}(?(`NULL`_null), ht))] +[visit_exp `REF`_reftype{`null?#1663`, heaptype#1727}(?(`NULL`_null), ht)] +[visit_exp `null?#1663`] +[visit_id null?#1663] +[visit_exp heaptype#1727] +[visit_id heaptype#1727] +[visit_exp (?(`NULL`_null), ht)] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp ht] +[visit_id ht] +[visit_exp `%`_u32{i#52819}(23)] +[visit_exp i#52819] +[visit_id i#52819] +[visit_exp (23)] +[visit_exp 23] +[visit_exp ht] +[visit_id ht] not free +ps' = +[check_dims] +[check_dims] i#52844 typeidx#1944 x +dims \ = i#52844, typeidx#1944, x +[visit_exp `STRUCT.NEW`_instr{typeidx#1944}(x)] +[visit_exp typeidx#1944] +[visit_id typeidx#1944] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%`_u32{i#52844}(0)] +[visit_exp i#52844] +[visit_id i#52844] +[visit_exp (0)] +[visit_exp 0] +[visit_exp x] +[visit_id x] not free +[check_dims] i#52900 typeidx#1946 x +dims \ = i#52900, typeidx#1946, x +[visit_exp `STRUCT.NEW_DEFAULT`_instr{typeidx#1946}(x)] +[visit_exp typeidx#1946] +[visit_id typeidx#1946] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%`_u32{i#52900}(1)] +[visit_exp i#52900] +[visit_id i#52900] +[visit_exp (1)] +[visit_exp 1] +[visit_exp x] +[visit_id x] not free +[check_dims] i i#52956 sx?#31 typeidx#1948 u32#37 x +dims \ = i, i#52956, sx?#31, typeidx#1948, u32#37, x +[visit_exp `STRUCT.GET`_instr{`sx?#31`, typeidx#1948, u32#37}(?(), x, i)] +[visit_exp `sx?#31`] +[visit_id sx?#31] +[visit_exp typeidx#1948] +[visit_id typeidx#1948] +[visit_exp u32#37] +[visit_id u32#37] +[visit_exp (?(), x, i)] +[visit_exp ?()] +[visit_exp x] +[visit_id x] +[visit_exp i] +[visit_id i] +[visit_exp `%`_u32{i#52956}(2)] +[visit_exp i#52956] +[visit_id i#52956] +[visit_exp (2)] +[visit_exp 2] +[visit_exp x] +[visit_id x] not free +[visit_exp i] +[visit_id i] not free +[check_dims] i i#53041 sx?#33 typeidx#1950 u32#39 x +dims \ = i, i#53041, sx?#33, typeidx#1950, u32#39, x +[visit_exp `STRUCT.GET`_instr{`sx?#33`, typeidx#1950, u32#39}(?(`S`_sx), x, i)] +[visit_exp `sx?#33`] +[visit_id sx?#33] +[visit_exp typeidx#1950] +[visit_id typeidx#1950] +[visit_exp u32#39] +[visit_id u32#39] +[visit_exp (?(`S`_sx), x, i)] +[visit_exp ?(`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp i] +[visit_id i] +[visit_exp `%`_u32{i#53041}(3)] +[visit_exp i#53041] +[visit_id i#53041] +[visit_exp (3)] +[visit_exp 3] +[visit_exp x] +[visit_id x] not free +[visit_exp i] +[visit_id i] not free +[check_dims] i i#53148 sx?#35 typeidx#1952 u32#41 x +dims \ = i, i#53148, sx?#35, typeidx#1952, u32#41, x +[visit_exp `STRUCT.GET`_instr{`sx?#35`, typeidx#1952, u32#41}(?(`U`_sx), x, i)] +[visit_exp `sx?#35`] +[visit_id sx?#35] +[visit_exp typeidx#1952] +[visit_id typeidx#1952] +[visit_exp u32#41] +[visit_id u32#41] +[visit_exp (?(`U`_sx), x, i)] +[visit_exp ?(`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp i] +[visit_id i] +[visit_exp `%`_u32{i#53148}(4)] +[visit_exp i#53148] +[visit_id i#53148] +[visit_exp (4)] +[visit_exp 4] +[visit_exp x] +[visit_id x] not free +[visit_exp i] +[visit_id i] not free +[check_dims] i i#53255 typeidx#1954 u32#43 x +dims \ = i, i#53255, typeidx#1954, u32#43, x +[visit_exp `STRUCT.SET`_instr{typeidx#1954, u32#43}(x, i)] +[visit_exp typeidx#1954] +[visit_id typeidx#1954] +[visit_exp u32#43] +[visit_id u32#43] +[visit_exp (x, i)] +[visit_exp x] +[visit_id x] +[visit_exp i] +[visit_id i] +[visit_exp `%`_u32{i#53255}(5)] +[visit_exp i#53255] +[visit_id i#53255] +[visit_exp (5)] +[visit_exp 5] +[visit_exp x] +[visit_id x] not free +[visit_exp i] +[visit_id i] not free +ps' = +[check_dims] +[check_dims] i#53340 typeidx#1956 x +dims \ = i#53340, typeidx#1956, x +[visit_exp `ARRAY.NEW`_instr{typeidx#1956}(x)] +[visit_exp typeidx#1956] +[visit_id typeidx#1956] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%`_u32{i#53340}(6)] +[visit_exp i#53340] +[visit_id i#53340] +[visit_exp (6)] +[visit_exp 6] +[visit_exp x] +[visit_id x] not free +[check_dims] i#53396 typeidx#1958 x +dims \ = i#53396, typeidx#1958, x +[visit_exp `ARRAY.NEW_DEFAULT`_instr{typeidx#1958}(x)] +[visit_exp typeidx#1958] +[visit_id typeidx#1958] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%`_u32{i#53396}(7)] +[visit_exp i#53396] +[visit_id i#53396] +[visit_exp (7)] +[visit_exp 7] +[visit_exp x] +[visit_id x] not free +[check_dims] i#53452 i#53496 i#53536 n typeidx#1960 u32#45 x +dims \ = i#53452, i#53496, i#53536, n, typeidx#1960, u32#45, x +[visit_exp `ARRAY.NEW_FIXED`_instr{typeidx#1960, u32#45}(x, `%`_u32{i#53536}(n))] +[visit_exp typeidx#1960] +[visit_id typeidx#1960] +[visit_exp u32#45] +[visit_id u32#45] +[visit_exp (x, `%`_u32{i#53536}(n))] +[visit_exp x] +[visit_id x] +[visit_exp `%`_u32{i#53536}(n)] +[visit_exp i#53536] +[visit_id i#53536] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `%`_u32{i#53452}(8)] +[visit_exp i#53452] +[visit_id i#53452] +[visit_exp (8)] +[visit_exp 8] +[visit_exp x] +[visit_id x] not free +[visit_exp `%`_u32{i#53496}(n)] +[visit_exp i#53496] +[visit_id i#53496] +[visit_exp (n)] +[visit_exp n] +[visit_id n] not free +[check_dims] dataidx#51 i#53559 typeidx#1962 x y +dims \ = dataidx#51, i#53559, typeidx#1962, x, y +[visit_exp `ARRAY.NEW_DATA`_instr{typeidx#1962, dataidx#51}(x, y)] +[visit_exp typeidx#1962] +[visit_id typeidx#1962] +[visit_exp dataidx#51] +[visit_id dataidx#51] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] +[visit_exp y] +[visit_id y] +[visit_exp `%`_u32{i#53559}(9)] +[visit_exp i#53559] +[visit_id i#53559] +[visit_exp (9)] +[visit_exp 9] +[visit_exp x] +[visit_id x] not free +[visit_exp y] +[visit_id y] not free +[check_dims] elemidx#53 i#53646 typeidx#1964 x y +dims \ = elemidx#53, i#53646, typeidx#1964, x, y +[visit_exp `ARRAY.NEW_ELEM`_instr{typeidx#1964, elemidx#53}(x, y)] +[visit_exp typeidx#1964] +[visit_id typeidx#1964] +[visit_exp elemidx#53] +[visit_id elemidx#53] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] +[visit_exp y] +[visit_id y] +[visit_exp `%`_u32{i#53646}(10)] +[visit_exp i#53646] +[visit_id i#53646] +[visit_exp (10)] +[visit_exp 10] +[visit_exp x] +[visit_id x] not free +[visit_exp y] +[visit_id y] not free +[check_dims] i#53733 sx?#37 typeidx#1966 x +dims \ = i#53733, sx?#37, typeidx#1966, x +[visit_exp `ARRAY.GET`_instr{`sx?#37`, typeidx#1966}(?(), x)] +[visit_exp `sx?#37`] +[visit_id sx?#37] +[visit_exp typeidx#1966] +[visit_id typeidx#1966] +[visit_exp (?(), x)] +[visit_exp ?()] +[visit_exp x] +[visit_id x] +[visit_exp `%`_u32{i#53733}(11)] +[visit_exp i#53733] +[visit_id i#53733] +[visit_exp (11)] +[visit_exp 11] +[visit_exp x] +[visit_id x] not free +[check_dims] i#53789 sx?#39 typeidx#1968 x +dims \ = i#53789, sx?#39, typeidx#1968, x +[visit_exp `ARRAY.GET`_instr{`sx?#39`, typeidx#1968}(?(`S`_sx), x)] +[visit_exp `sx?#39`] +[visit_id sx?#39] +[visit_exp typeidx#1968] +[visit_id typeidx#1968] +[visit_exp (?(`S`_sx), x)] +[visit_exp ?(`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp `%`_u32{i#53789}(12)] +[visit_exp i#53789] +[visit_id i#53789] +[visit_exp (12)] +[visit_exp 12] +[visit_exp x] +[visit_id x] not free +[check_dims] i#53889 sx?#41 typeidx#1970 x +dims \ = i#53889, sx?#41, typeidx#1970, x +[visit_exp `ARRAY.GET`_instr{`sx?#41`, typeidx#1970}(?(`U`_sx), x)] +[visit_exp `sx?#41`] +[visit_id sx?#41] +[visit_exp typeidx#1970] +[visit_id typeidx#1970] +[visit_exp (?(`U`_sx), x)] +[visit_exp ?(`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp `%`_u32{i#53889}(13)] +[visit_exp i#53889] +[visit_id i#53889] +[visit_exp (13)] +[visit_exp 13] +[visit_exp x] +[visit_id x] not free +[check_dims] i#53989 typeidx#1972 x +dims \ = i#53989, typeidx#1972, x +[visit_exp `ARRAY.SET`_instr{typeidx#1972}(x)] +[visit_exp typeidx#1972] +[visit_id typeidx#1972] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%`_u32{i#53989}(14)] +[visit_exp i#53989] +[visit_id i#53989] +[visit_exp (14)] +[visit_exp 14] +[visit_exp x] +[visit_id x] not free +[check_dims] i#54045 +dims \ = i#54045 +[visit_exp `ARRAY.LEN`_instr] +[visit_exp ()] +[visit_exp `%`_u32{i#54045}(15)] +[visit_exp i#54045] +[visit_id i#54045] +[visit_exp (15)] +[visit_exp 15] +[check_dims] i#54070 typeidx#1974 x +dims \ = i#54070, typeidx#1974, x +[visit_exp `ARRAY.FILL`_instr{typeidx#1974}(x)] +[visit_exp typeidx#1974] +[visit_id typeidx#1974] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%`_u32{i#54070}(16)] +[visit_exp i#54070] +[visit_id i#54070] +[visit_exp (16)] +[visit_exp 16] +[visit_exp x] +[visit_id x] not free +[check_dims] i#54126 typeidx#1976 x_1 x_2 +dims \ = i#54126, typeidx#1976, x_1, x_2 +[visit_exp `ARRAY.COPY`_instr{typeidx#1976}(x_1, x_2)] +[visit_exp typeidx#1976] +[visit_id typeidx#1976] +[visit_exp (x_1, x_2)] +[visit_exp x_1] +[visit_id x_1] +[visit_exp x_2] +[visit_id x_2] +[visit_exp `%`_u32{i#54126}(17)] +[visit_exp i#54126] +[visit_id i#54126] +[visit_exp (17)] +[visit_exp 17] +[visit_exp x_1] +[visit_id x_1] not free +[visit_exp x_2] +[visit_id x_2] not free +[check_dims] dataidx#53 i#54213 typeidx#1979 x y +dims \ = dataidx#53, i#54213, typeidx#1979, x, y +[visit_exp `ARRAY.INIT_DATA`_instr{typeidx#1979, dataidx#53}(x, y)] +[visit_exp typeidx#1979] +[visit_id typeidx#1979] +[visit_exp dataidx#53] +[visit_id dataidx#53] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] +[visit_exp y] +[visit_id y] +[visit_exp `%`_u32{i#54213}(18)] +[visit_exp i#54213] +[visit_id i#54213] +[visit_exp (18)] +[visit_exp 18] +[visit_exp x] +[visit_id x] not free +[visit_exp y] +[visit_id y] not free +[check_dims] elemidx#55 i#54300 typeidx#1981 x y +dims \ = elemidx#55, i#54300, typeidx#1981, x, y +[visit_exp `ARRAY.INIT_ELEM`_instr{typeidx#1981, elemidx#55}(x, y)] +[visit_exp typeidx#1981] +[visit_id typeidx#1981] +[visit_exp elemidx#55] +[visit_id elemidx#55] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] +[visit_exp y] +[visit_id y] +[visit_exp `%`_u32{i#54300}(19)] +[visit_exp i#54300] +[visit_id i#54300] +[visit_exp (19)] +[visit_exp 19] +[visit_exp x] +[visit_id x] not free +[visit_exp y] +[visit_id y] not free +ps' = +[check_dims] +[check_dims] i#54387 +dims \ = i#54387 +[visit_exp `ANY.CONVERT_EXTERN`_instr] +[visit_exp ()] +[visit_exp `%`_u32{i#54387}(26)] +[visit_exp i#54387] +[visit_id i#54387] +[visit_exp (26)] +[visit_exp 26] +[check_dims] i#54412 +dims \ = i#54412 +[visit_exp `EXTERN.CONVERT_ANY`_instr] +[visit_exp ()] +[visit_exp `%`_u32{i#54412}(27)] +[visit_exp i#54412] +[visit_id i#54412] +[visit_exp (27)] +[visit_exp 27] +ps' = +[check_dims] +[check_dims] i#54437 +dims \ = i#54437 +[visit_exp `REF.I31`_instr] +[visit_exp ()] +[visit_exp `%`_u32{i#54437}(28)] +[visit_exp i#54437] +[visit_id i#54437] +[visit_exp (28)] +[visit_exp 28] +[check_dims] i#54462 sx#590 +dims \ = i#54462, sx#590 +[visit_exp `I31.GET`_instr{sx#590}(`S`_sx)] +[visit_exp sx#590] +[visit_id sx#590] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#54462}(29)] +[visit_exp i#54462] +[visit_id i#54462] +[visit_exp (29)] +[visit_exp 29] +[check_dims] i#54487 sx#592 +dims \ = i#54487, sx#592 +[visit_exp `I31.GET`_instr{sx#592}(`U`_sx)] +[visit_exp sx#592] +[visit_id sx#592] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#54487}(30)] +[visit_exp i#54487] +[visit_id i#54487] +[visit_exp (30)] +[visit_exp 30] +ps' = +[check_dims] +[check_dims] i#54514 i#54540 n numtype#654 +dims \ = i#54514, i#54540, n, numtype#654 +[visit_exp `CONST`_instr{numtype#654}(`I32`_numtype, `%`_num_{i#54540}(n))] +[visit_exp numtype#654] +[visit_id numtype#654] +[visit_exp (`I32`_numtype, `%`_num_{i#54540}(n))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#54540}(n)] +[visit_exp i#54540] +[visit_id i#54540] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `%`_u32{i#54514}(n)] +[visit_exp i#54514] +[visit_id i#54514] +[visit_exp (n)] +[visit_exp n] +[visit_id n] not free +[check_dims] i#54565 i#54591 n numtype#656 +dims \ = i#54565, i#54591, n, numtype#656 +[visit_exp `CONST`_instr{numtype#656}(`I64`_numtype, `%`_num_{i#54591}(n))] +[visit_exp numtype#656] +[visit_id numtype#656] +[visit_exp (`I64`_numtype, `%`_num_{i#54591}(n))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `%`_num_{i#54591}(n)] +[visit_exp i#54591] +[visit_id i#54591] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `%`_u64{i#54565}(n)] +[visit_exp i#54565] +[visit_id i#54565] +[visit_exp (n)] +[visit_exp n] +[visit_id n] not free +[check_dims] numtype#658 p +dims \ = numtype#658, p +[visit_exp `CONST`_instr{numtype#658}(`F32`_numtype, p)] +[visit_exp numtype#658] +[visit_id numtype#658] +[visit_exp (`F32`_numtype, p)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp p] +[visit_id p] +[visit_exp p] +[visit_id p] not free +[check_dims] numtype#660 p +dims \ = numtype#660, p +[visit_exp `CONST`_instr{numtype#660}(`F64`_numtype, p)] +[visit_exp numtype#660] +[visit_id numtype#660] +[visit_exp (`F64`_numtype, p)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp p] +[visit_id p] +[visit_exp p] +[visit_id p] not free +ps' = +[check_dims] +[check_dims] numtype#662 +dims \ = numtype#662 +[visit_exp `TESTOP`_instr{numtype#662}(`I32`_numtype, `EQZ`_testop_)] +[visit_exp numtype#662] +[visit_id numtype#662] +[visit_exp (`I32`_numtype, `EQZ`_testop_)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `EQZ`_testop_] +[visit_exp ()] +ps' = +[check_dims] +[check_dims] numtype#664 +dims \ = numtype#664 +[visit_exp `RELOP`_instr{numtype#664}(`I32`_numtype, `EQ`_relop_)] +[visit_exp numtype#664] +[visit_id numtype#664] +[visit_exp (`I32`_numtype, `EQ`_relop_)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `EQ`_relop_] +[visit_exp ()] +[check_dims] numtype#666 +dims \ = numtype#666 +[visit_exp `RELOP`_instr{numtype#666}(`I32`_numtype, `NE`_relop_)] +[visit_exp numtype#666] +[visit_id numtype#666] +[visit_exp (`I32`_numtype, `NE`_relop_)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `NE`_relop_] +[visit_exp ()] +[check_dims] numtype#668 sx#836 +dims \ = numtype#668, sx#836 +[visit_exp `RELOP`_instr{numtype#668}(`I32`_numtype, `LT`_relop_{sx#836}(`S`_sx))] +[visit_exp numtype#668] +[visit_id numtype#668] +[visit_exp (`I32`_numtype, `LT`_relop_{sx#836}(`S`_sx))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `LT`_relop_{sx#836}(`S`_sx)] +[visit_exp sx#836] +[visit_id sx#836] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] numtype#670 sx#960 +dims \ = numtype#670, sx#960 +[visit_exp `RELOP`_instr{numtype#670}(`I32`_numtype, `LT`_relop_{sx#960}(`U`_sx))] +[visit_exp numtype#670] +[visit_id numtype#670] +[visit_exp (`I32`_numtype, `LT`_relop_{sx#960}(`U`_sx))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `LT`_relop_{sx#960}(`U`_sx)] +[visit_exp sx#960] +[visit_id sx#960] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] numtype#672 sx#1084 +dims \ = numtype#672, sx#1084 +[visit_exp `RELOP`_instr{numtype#672}(`I32`_numtype, `GT`_relop_{sx#1084}(`S`_sx))] +[visit_exp numtype#672] +[visit_id numtype#672] +[visit_exp (`I32`_numtype, `GT`_relop_{sx#1084}(`S`_sx))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `GT`_relop_{sx#1084}(`S`_sx)] +[visit_exp sx#1084] +[visit_id sx#1084] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] numtype#674 sx#1208 +dims \ = numtype#674, sx#1208 +[visit_exp `RELOP`_instr{numtype#674}(`I32`_numtype, `GT`_relop_{sx#1208}(`U`_sx))] +[visit_exp numtype#674] +[visit_id numtype#674] +[visit_exp (`I32`_numtype, `GT`_relop_{sx#1208}(`U`_sx))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `GT`_relop_{sx#1208}(`U`_sx)] +[visit_exp sx#1208] +[visit_id sx#1208] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] numtype#676 sx#1332 +dims \ = numtype#676, sx#1332 +[visit_exp `RELOP`_instr{numtype#676}(`I32`_numtype, `LE`_relop_{sx#1332}(`S`_sx))] +[visit_exp numtype#676] +[visit_id numtype#676] +[visit_exp (`I32`_numtype, `LE`_relop_{sx#1332}(`S`_sx))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `LE`_relop_{sx#1332}(`S`_sx)] +[visit_exp sx#1332] +[visit_id sx#1332] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] numtype#678 sx#1456 +dims \ = numtype#678, sx#1456 +[visit_exp `RELOP`_instr{numtype#678}(`I32`_numtype, `LE`_relop_{sx#1456}(`U`_sx))] +[visit_exp numtype#678] +[visit_id numtype#678] +[visit_exp (`I32`_numtype, `LE`_relop_{sx#1456}(`U`_sx))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `LE`_relop_{sx#1456}(`U`_sx)] +[visit_exp sx#1456] +[visit_id sx#1456] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] numtype#680 sx#1580 +dims \ = numtype#680, sx#1580 +[visit_exp `RELOP`_instr{numtype#680}(`I32`_numtype, `GE`_relop_{sx#1580}(`S`_sx))] +[visit_exp numtype#680] +[visit_id numtype#680] +[visit_exp (`I32`_numtype, `GE`_relop_{sx#1580}(`S`_sx))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `GE`_relop_{sx#1580}(`S`_sx)] +[visit_exp sx#1580] +[visit_id sx#1580] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] numtype#682 sx#1704 +dims \ = numtype#682, sx#1704 +[visit_exp `RELOP`_instr{numtype#682}(`I32`_numtype, `GE`_relop_{sx#1704}(`U`_sx))] +[visit_exp numtype#682] +[visit_id numtype#682] +[visit_exp (`I32`_numtype, `GE`_relop_{sx#1704}(`U`_sx))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `GE`_relop_{sx#1704}(`U`_sx)] +[visit_exp sx#1704] +[visit_id sx#1704] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +ps' = +[check_dims] +[check_dims] numtype#684 +dims \ = numtype#684 +[visit_exp `TESTOP`_instr{numtype#684}(`I64`_numtype, `EQZ`_testop_)] +[visit_exp numtype#684] +[visit_id numtype#684] +[visit_exp (`I64`_numtype, `EQZ`_testop_)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `EQZ`_testop_] +[visit_exp ()] +ps' = +[check_dims] +[check_dims] numtype#686 +dims \ = numtype#686 +[visit_exp `RELOP`_instr{numtype#686}(`I64`_numtype, `EQ`_relop_)] +[visit_exp numtype#686] +[visit_id numtype#686] +[visit_exp (`I64`_numtype, `EQ`_relop_)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `EQ`_relop_] +[visit_exp ()] +[check_dims] numtype#688 +dims \ = numtype#688 +[visit_exp `RELOP`_instr{numtype#688}(`I64`_numtype, `NE`_relop_)] +[visit_exp numtype#688] +[visit_id numtype#688] +[visit_exp (`I64`_numtype, `NE`_relop_)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `NE`_relop_] +[visit_exp ()] +[check_dims] numtype#690 sx#1948 +dims \ = numtype#690, sx#1948 +[visit_exp `RELOP`_instr{numtype#690}(`I64`_numtype, `LT`_relop_{sx#1948}(`S`_sx))] +[visit_exp numtype#690] +[visit_id numtype#690] +[visit_exp (`I64`_numtype, `LT`_relop_{sx#1948}(`S`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `LT`_relop_{sx#1948}(`S`_sx)] +[visit_exp sx#1948] +[visit_id sx#1948] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] numtype#692 sx#2072 +dims \ = numtype#692, sx#2072 +[visit_exp `RELOP`_instr{numtype#692}(`I64`_numtype, `LT`_relop_{sx#2072}(`U`_sx))] +[visit_exp numtype#692] +[visit_id numtype#692] +[visit_exp (`I64`_numtype, `LT`_relop_{sx#2072}(`U`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `LT`_relop_{sx#2072}(`U`_sx)] +[visit_exp sx#2072] +[visit_id sx#2072] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] numtype#694 sx#2196 +dims \ = numtype#694, sx#2196 +[visit_exp `RELOP`_instr{numtype#694}(`I64`_numtype, `GT`_relop_{sx#2196}(`S`_sx))] +[visit_exp numtype#694] +[visit_id numtype#694] +[visit_exp (`I64`_numtype, `GT`_relop_{sx#2196}(`S`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `GT`_relop_{sx#2196}(`S`_sx)] +[visit_exp sx#2196] +[visit_id sx#2196] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] numtype#696 sx#2320 +dims \ = numtype#696, sx#2320 +[visit_exp `RELOP`_instr{numtype#696}(`I64`_numtype, `GT`_relop_{sx#2320}(`U`_sx))] +[visit_exp numtype#696] +[visit_id numtype#696] +[visit_exp (`I64`_numtype, `GT`_relop_{sx#2320}(`U`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `GT`_relop_{sx#2320}(`U`_sx)] +[visit_exp sx#2320] +[visit_id sx#2320] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] numtype#698 sx#2444 +dims \ = numtype#698, sx#2444 +[visit_exp `RELOP`_instr{numtype#698}(`I64`_numtype, `LE`_relop_{sx#2444}(`S`_sx))] +[visit_exp numtype#698] +[visit_id numtype#698] +[visit_exp (`I64`_numtype, `LE`_relop_{sx#2444}(`S`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `LE`_relop_{sx#2444}(`S`_sx)] +[visit_exp sx#2444] +[visit_id sx#2444] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] numtype#700 sx#2568 +dims \ = numtype#700, sx#2568 +[visit_exp `RELOP`_instr{numtype#700}(`I64`_numtype, `LE`_relop_{sx#2568}(`U`_sx))] +[visit_exp numtype#700] +[visit_id numtype#700] +[visit_exp (`I64`_numtype, `LE`_relop_{sx#2568}(`U`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `LE`_relop_{sx#2568}(`U`_sx)] +[visit_exp sx#2568] +[visit_id sx#2568] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] numtype#702 sx#2692 +dims \ = numtype#702, sx#2692 +[visit_exp `RELOP`_instr{numtype#702}(`I64`_numtype, `GE`_relop_{sx#2692}(`S`_sx))] +[visit_exp numtype#702] +[visit_id numtype#702] +[visit_exp (`I64`_numtype, `GE`_relop_{sx#2692}(`S`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `GE`_relop_{sx#2692}(`S`_sx)] +[visit_exp sx#2692] +[visit_id sx#2692] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] numtype#704 sx#2816 +dims \ = numtype#704, sx#2816 +[visit_exp `RELOP`_instr{numtype#704}(`I64`_numtype, `GE`_relop_{sx#2816}(`U`_sx))] +[visit_exp numtype#704] +[visit_id numtype#704] +[visit_exp (`I64`_numtype, `GE`_relop_{sx#2816}(`U`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `GE`_relop_{sx#2816}(`U`_sx)] +[visit_exp sx#2816] +[visit_id sx#2816] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +ps' = +[check_dims] +[check_dims] numtype#706 +dims \ = numtype#706 +[visit_exp `RELOP`_instr{numtype#706}(`F32`_numtype, `EQ`_relop_)] +[visit_exp numtype#706] +[visit_id numtype#706] +[visit_exp (`F32`_numtype, `EQ`_relop_)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `EQ`_relop_] +[visit_exp ()] +[check_dims] numtype#708 +dims \ = numtype#708 +[visit_exp `RELOP`_instr{numtype#708}(`F32`_numtype, `NE`_relop_)] +[visit_exp numtype#708] +[visit_id numtype#708] +[visit_exp (`F32`_numtype, `NE`_relop_)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `NE`_relop_] +[visit_exp ()] +[check_dims] numtype#710 +dims \ = numtype#710 +[visit_exp `RELOP`_instr{numtype#710}(`F32`_numtype, `LT`_relop_)] +[visit_exp numtype#710] +[visit_id numtype#710] +[visit_exp (`F32`_numtype, `LT`_relop_)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `LT`_relop_] +[visit_exp ()] +[check_dims] numtype#712 +dims \ = numtype#712 +[visit_exp `RELOP`_instr{numtype#712}(`F32`_numtype, `GT`_relop_)] +[visit_exp numtype#712] +[visit_id numtype#712] +[visit_exp (`F32`_numtype, `GT`_relop_)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `GT`_relop_] +[visit_exp ()] +[check_dims] numtype#714 +dims \ = numtype#714 +[visit_exp `RELOP`_instr{numtype#714}(`F32`_numtype, `LE`_relop_)] +[visit_exp numtype#714] +[visit_id numtype#714] +[visit_exp (`F32`_numtype, `LE`_relop_)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `LE`_relop_] +[visit_exp ()] +[check_dims] numtype#716 +dims \ = numtype#716 +[visit_exp `RELOP`_instr{numtype#716}(`F32`_numtype, `GE`_relop_)] +[visit_exp numtype#716] +[visit_id numtype#716] +[visit_exp (`F32`_numtype, `GE`_relop_)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `GE`_relop_] +[visit_exp ()] +ps' = +[check_dims] +[check_dims] numtype#718 +dims \ = numtype#718 +[visit_exp `RELOP`_instr{numtype#718}(`F64`_numtype, `EQ`_relop_)] +[visit_exp numtype#718] +[visit_id numtype#718] +[visit_exp (`F64`_numtype, `EQ`_relop_)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `EQ`_relop_] +[visit_exp ()] +[check_dims] numtype#720 +dims \ = numtype#720 +[visit_exp `RELOP`_instr{numtype#720}(`F64`_numtype, `NE`_relop_)] +[visit_exp numtype#720] +[visit_id numtype#720] +[visit_exp (`F64`_numtype, `NE`_relop_)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `NE`_relop_] +[visit_exp ()] +[check_dims] numtype#722 +dims \ = numtype#722 +[visit_exp `RELOP`_instr{numtype#722}(`F64`_numtype, `LT`_relop_)] +[visit_exp numtype#722] +[visit_id numtype#722] +[visit_exp (`F64`_numtype, `LT`_relop_)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `LT`_relop_] +[visit_exp ()] +[check_dims] numtype#724 +dims \ = numtype#724 +[visit_exp `RELOP`_instr{numtype#724}(`F64`_numtype, `GT`_relop_)] +[visit_exp numtype#724] +[visit_id numtype#724] +[visit_exp (`F64`_numtype, `GT`_relop_)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `GT`_relop_] +[visit_exp ()] +[check_dims] numtype#726 +dims \ = numtype#726 +[visit_exp `RELOP`_instr{numtype#726}(`F64`_numtype, `LE`_relop_)] +[visit_exp numtype#726] +[visit_id numtype#726] +[visit_exp (`F64`_numtype, `LE`_relop_)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `LE`_relop_] +[visit_exp ()] +[check_dims] numtype#728 +dims \ = numtype#728 +[visit_exp `RELOP`_instr{numtype#728}(`F64`_numtype, `GE`_relop_)] +[visit_exp numtype#728] +[visit_id numtype#728] +[visit_exp (`F64`_numtype, `GE`_relop_)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `GE`_relop_] +[visit_exp ()] +ps' = +[check_dims] +[check_dims] numtype#730 +dims \ = numtype#730 +[visit_exp `UNOP`_instr{numtype#730}(`I32`_numtype, `CLZ`_unop_)] +[visit_exp numtype#730] +[visit_id numtype#730] +[visit_exp (`I32`_numtype, `CLZ`_unop_)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `CLZ`_unop_] +[visit_exp ()] +[check_dims] numtype#732 +dims \ = numtype#732 +[visit_exp `UNOP`_instr{numtype#732}(`I32`_numtype, `CTZ`_unop_)] +[visit_exp numtype#732] +[visit_id numtype#732] +[visit_exp (`I32`_numtype, `CTZ`_unop_)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `CTZ`_unop_] +[visit_exp ()] +[check_dims] numtype#734 +dims \ = numtype#734 +[visit_exp `UNOP`_instr{numtype#734}(`I32`_numtype, `POPCNT`_unop_)] +[visit_exp numtype#734] +[visit_id numtype#734] +[visit_exp (`I32`_numtype, `POPCNT`_unop_)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `POPCNT`_unop_] +[visit_exp ()] +ps' = +[check_dims] +[check_dims] numtype#736 +dims \ = numtype#736 +[visit_exp `BINOP`_instr{numtype#736}(`I32`_numtype, `ADD`_binop_)] +[visit_exp numtype#736] +[visit_id numtype#736] +[visit_exp (`I32`_numtype, `ADD`_binop_)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `ADD`_binop_] +[visit_exp ()] +[check_dims] numtype#738 +dims \ = numtype#738 +[visit_exp `BINOP`_instr{numtype#738}(`I32`_numtype, `SUB`_binop_)] +[visit_exp numtype#738] +[visit_id numtype#738] +[visit_exp (`I32`_numtype, `SUB`_binop_)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `SUB`_binop_] +[visit_exp ()] +[check_dims] numtype#740 +dims \ = numtype#740 +[visit_exp `BINOP`_instr{numtype#740}(`I32`_numtype, `MUL`_binop_)] +[visit_exp numtype#740] +[visit_id numtype#740] +[visit_exp (`I32`_numtype, `MUL`_binop_)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `MUL`_binop_] +[visit_exp ()] +[check_dims] numtype#742 sx#3045 +dims \ = numtype#742, sx#3045 +[visit_exp `BINOP`_instr{numtype#742}(`I32`_numtype, `DIV`_binop_{sx#3045}(`S`_sx))] +[visit_exp numtype#742] +[visit_id numtype#742] +[visit_exp (`I32`_numtype, `DIV`_binop_{sx#3045}(`S`_sx))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `DIV`_binop_{sx#3045}(`S`_sx)] +[visit_exp sx#3045] +[visit_id sx#3045] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] numtype#744 sx#3139 +dims \ = numtype#744, sx#3139 +[visit_exp `BINOP`_instr{numtype#744}(`I32`_numtype, `DIV`_binop_{sx#3139}(`U`_sx))] +[visit_exp numtype#744] +[visit_id numtype#744] +[visit_exp (`I32`_numtype, `DIV`_binop_{sx#3139}(`U`_sx))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `DIV`_binop_{sx#3139}(`U`_sx)] +[visit_exp sx#3139] +[visit_id sx#3139] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] numtype#746 sx#3233 +dims \ = numtype#746, sx#3233 +[visit_exp `BINOP`_instr{numtype#746}(`I32`_numtype, `REM`_binop_{sx#3233}(`S`_sx))] +[visit_exp numtype#746] +[visit_id numtype#746] +[visit_exp (`I32`_numtype, `REM`_binop_{sx#3233}(`S`_sx))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `REM`_binop_{sx#3233}(`S`_sx)] +[visit_exp sx#3233] +[visit_id sx#3233] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] numtype#748 sx#3327 +dims \ = numtype#748, sx#3327 +[visit_exp `BINOP`_instr{numtype#748}(`I32`_numtype, `REM`_binop_{sx#3327}(`U`_sx))] +[visit_exp numtype#748] +[visit_id numtype#748] +[visit_exp (`I32`_numtype, `REM`_binop_{sx#3327}(`U`_sx))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `REM`_binop_{sx#3327}(`U`_sx)] +[visit_exp sx#3327] +[visit_id sx#3327] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] numtype#750 +dims \ = numtype#750 +[visit_exp `BINOP`_instr{numtype#750}(`I32`_numtype, `AND`_binop_)] +[visit_exp numtype#750] +[visit_id numtype#750] +[visit_exp (`I32`_numtype, `AND`_binop_)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `AND`_binop_] +[visit_exp ()] +[check_dims] numtype#752 +dims \ = numtype#752 +[visit_exp `BINOP`_instr{numtype#752}(`I32`_numtype, `OR`_binop_)] +[visit_exp numtype#752] +[visit_id numtype#752] +[visit_exp (`I32`_numtype, `OR`_binop_)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `OR`_binop_] +[visit_exp ()] +[check_dims] numtype#754 +dims \ = numtype#754 +[visit_exp `BINOP`_instr{numtype#754}(`I32`_numtype, `XOR`_binop_)] +[visit_exp numtype#754] +[visit_id numtype#754] +[visit_exp (`I32`_numtype, `XOR`_binop_)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `XOR`_binop_] +[visit_exp ()] +[check_dims] numtype#756 +dims \ = numtype#756 +[visit_exp `BINOP`_instr{numtype#756}(`I32`_numtype, `SHL`_binop_)] +[visit_exp numtype#756] +[visit_id numtype#756] +[visit_exp (`I32`_numtype, `SHL`_binop_)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `SHL`_binop_] +[visit_exp ()] +[check_dims] numtype#758 sx#3601 +dims \ = numtype#758, sx#3601 +[visit_exp `BINOP`_instr{numtype#758}(`I32`_numtype, `SHR`_binop_{sx#3601}(`S`_sx))] +[visit_exp numtype#758] +[visit_id numtype#758] +[visit_exp (`I32`_numtype, `SHR`_binop_{sx#3601}(`S`_sx))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `SHR`_binop_{sx#3601}(`S`_sx)] +[visit_exp sx#3601] +[visit_id sx#3601] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] numtype#760 sx#3695 +dims \ = numtype#760, sx#3695 +[visit_exp `BINOP`_instr{numtype#760}(`I32`_numtype, `SHR`_binop_{sx#3695}(`U`_sx))] +[visit_exp numtype#760] +[visit_id numtype#760] +[visit_exp (`I32`_numtype, `SHR`_binop_{sx#3695}(`U`_sx))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `SHR`_binop_{sx#3695}(`U`_sx)] +[visit_exp sx#3695] +[visit_id sx#3695] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] numtype#762 +dims \ = numtype#762 +[visit_exp `BINOP`_instr{numtype#762}(`I32`_numtype, `ROTL`_binop_)] +[visit_exp numtype#762] +[visit_id numtype#762] +[visit_exp (`I32`_numtype, `ROTL`_binop_)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `ROTL`_binop_] +[visit_exp ()] +[check_dims] numtype#764 +dims \ = numtype#764 +[visit_exp `BINOP`_instr{numtype#764}(`I32`_numtype, `ROTR`_binop_)] +[visit_exp numtype#764] +[visit_id numtype#764] +[visit_exp (`I32`_numtype, `ROTR`_binop_)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `ROTR`_binop_] +[visit_exp ()] +ps' = +[check_dims] +[check_dims] numtype#766 +dims \ = numtype#766 +[visit_exp `UNOP`_instr{numtype#766}(`I64`_numtype, `CLZ`_unop_)] +[visit_exp numtype#766] +[visit_id numtype#766] +[visit_exp (`I64`_numtype, `CLZ`_unop_)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `CLZ`_unop_] +[visit_exp ()] +[check_dims] numtype#768 +dims \ = numtype#768 +[visit_exp `UNOP`_instr{numtype#768}(`I64`_numtype, `CTZ`_unop_)] +[visit_exp numtype#768] +[visit_id numtype#768] +[visit_exp (`I64`_numtype, `CTZ`_unop_)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `CTZ`_unop_] +[visit_exp ()] +[check_dims] numtype#770 +dims \ = numtype#770 +[visit_exp `UNOP`_instr{numtype#770}(`I64`_numtype, `POPCNT`_unop_)] +[visit_exp numtype#770] +[visit_id numtype#770] +[visit_exp (`I64`_numtype, `POPCNT`_unop_)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `POPCNT`_unop_] +[visit_exp ()] +ps' = +[check_dims] +[check_dims] i#54600 i#54607 numtype#772 sz#909 +dims \ = i#54600, i#54607, numtype#772, sz#909 +[visit_exp `UNOP`_instr{numtype#772}(`I32`_numtype, `EXTEND`_unop_{sz#909, i#54600}(`%`_sz{i#54607}(8)))] +[visit_exp numtype#772] +[visit_id numtype#772] +[visit_exp (`I32`_numtype, `EXTEND`_unop_{sz#909, i#54600}(`%`_sz{i#54607}(8)))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `EXTEND`_unop_{sz#909, i#54600}(`%`_sz{i#54607}(8))] +[visit_exp sz#909] +[visit_id sz#909] +[visit_exp i#54600] +[visit_id i#54600] +[visit_exp (`%`_sz{i#54607}(8))] +[visit_exp `%`_sz{i#54607}(8)] +[visit_exp i#54607] +[visit_id i#54607] +[visit_exp (8)] +[visit_exp 8] +[check_dims] i#54616 i#54623 numtype#774 sz#943 +dims \ = i#54616, i#54623, numtype#774, sz#943 +[visit_exp `UNOP`_instr{numtype#774}(`I32`_numtype, `EXTEND`_unop_{sz#943, i#54616}(`%`_sz{i#54623}(16)))] +[visit_exp numtype#774] +[visit_id numtype#774] +[visit_exp (`I32`_numtype, `EXTEND`_unop_{sz#943, i#54616}(`%`_sz{i#54623}(16)))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `EXTEND`_unop_{sz#943, i#54616}(`%`_sz{i#54623}(16))] +[visit_exp sz#943] +[visit_id sz#943] +[visit_exp i#54616] +[visit_id i#54616] +[visit_exp (`%`_sz{i#54623}(16))] +[visit_exp `%`_sz{i#54623}(16)] +[visit_exp i#54623] +[visit_id i#54623] +[visit_exp (16)] +[visit_exp 16] +ps' = +[check_dims] +[check_dims] i#54632 i#54639 numtype#776 sz#977 +dims \ = i#54632, i#54639, numtype#776, sz#977 +[visit_exp `UNOP`_instr{numtype#776}(`I64`_numtype, `EXTEND`_unop_{sz#977, i#54632}(`%`_sz{i#54639}(8)))] +[visit_exp numtype#776] +[visit_id numtype#776] +[visit_exp (`I64`_numtype, `EXTEND`_unop_{sz#977, i#54632}(`%`_sz{i#54639}(8)))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `EXTEND`_unop_{sz#977, i#54632}(`%`_sz{i#54639}(8))] +[visit_exp sz#977] +[visit_id sz#977] +[visit_exp i#54632] +[visit_id i#54632] +[visit_exp (`%`_sz{i#54639}(8))] +[visit_exp `%`_sz{i#54639}(8)] +[visit_exp i#54639] +[visit_id i#54639] +[visit_exp (8)] +[visit_exp 8] +[check_dims] i#54648 i#54655 numtype#778 sz#1011 +dims \ = i#54648, i#54655, numtype#778, sz#1011 +[visit_exp `UNOP`_instr{numtype#778}(`I64`_numtype, `EXTEND`_unop_{sz#1011, i#54648}(`%`_sz{i#54655}(16)))] +[visit_exp numtype#778] +[visit_id numtype#778] +[visit_exp (`I64`_numtype, `EXTEND`_unop_{sz#1011, i#54648}(`%`_sz{i#54655}(16)))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `EXTEND`_unop_{sz#1011, i#54648}(`%`_sz{i#54655}(16))] +[visit_exp sz#1011] +[visit_id sz#1011] +[visit_exp i#54648] +[visit_id i#54648] +[visit_exp (`%`_sz{i#54655}(16))] +[visit_exp `%`_sz{i#54655}(16)] +[visit_exp i#54655] +[visit_id i#54655] +[visit_exp (16)] +[visit_exp 16] +[check_dims] i#54664 i#54671 numtype#780 sz#1045 +dims \ = i#54664, i#54671, numtype#780, sz#1045 +[visit_exp `UNOP`_instr{numtype#780}(`I64`_numtype, `EXTEND`_unop_{sz#1045, i#54664}(`%`_sz{i#54671}(32)))] +[visit_exp numtype#780] +[visit_id numtype#780] +[visit_exp (`I64`_numtype, `EXTEND`_unop_{sz#1045, i#54664}(`%`_sz{i#54671}(32)))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `EXTEND`_unop_{sz#1045, i#54664}(`%`_sz{i#54671}(32))] +[visit_exp sz#1045] +[visit_id sz#1045] +[visit_exp i#54664] +[visit_id i#54664] +[visit_exp (`%`_sz{i#54671}(32))] +[visit_exp `%`_sz{i#54671}(32)] +[visit_exp i#54671] +[visit_id i#54671] +[visit_exp (32)] +[visit_exp 32] +ps' = +[check_dims] +[check_dims] numtype#782 +dims \ = numtype#782 +[visit_exp `BINOP`_instr{numtype#782}(`I64`_numtype, `ADD`_binop_)] +[visit_exp numtype#782] +[visit_id numtype#782] +[visit_exp (`I64`_numtype, `ADD`_binop_)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `ADD`_binop_] +[visit_exp ()] +[check_dims] numtype#784 +dims \ = numtype#784 +[visit_exp `BINOP`_instr{numtype#784}(`I64`_numtype, `SUB`_binop_)] +[visit_exp numtype#784] +[visit_id numtype#784] +[visit_exp (`I64`_numtype, `SUB`_binop_)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `SUB`_binop_] +[visit_exp ()] +[check_dims] numtype#786 +dims \ = numtype#786 +[visit_exp `BINOP`_instr{numtype#786}(`I64`_numtype, `MUL`_binop_)] +[visit_exp numtype#786] +[visit_id numtype#786] +[visit_exp (`I64`_numtype, `MUL`_binop_)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `MUL`_binop_] +[visit_exp ()] +[check_dims] numtype#788 sx#4014 +dims \ = numtype#788, sx#4014 +[visit_exp `BINOP`_instr{numtype#788}(`I64`_numtype, `DIV`_binop_{sx#4014}(`S`_sx))] +[visit_exp numtype#788] +[visit_id numtype#788] +[visit_exp (`I64`_numtype, `DIV`_binop_{sx#4014}(`S`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `DIV`_binop_{sx#4014}(`S`_sx)] +[visit_exp sx#4014] +[visit_id sx#4014] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] numtype#790 sx#4108 +dims \ = numtype#790, sx#4108 +[visit_exp `BINOP`_instr{numtype#790}(`I64`_numtype, `DIV`_binop_{sx#4108}(`U`_sx))] +[visit_exp numtype#790] +[visit_id numtype#790] +[visit_exp (`I64`_numtype, `DIV`_binop_{sx#4108}(`U`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `DIV`_binop_{sx#4108}(`U`_sx)] +[visit_exp sx#4108] +[visit_id sx#4108] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] numtype#792 sx#4202 +dims \ = numtype#792, sx#4202 +[visit_exp `BINOP`_instr{numtype#792}(`I64`_numtype, `REM`_binop_{sx#4202}(`S`_sx))] +[visit_exp numtype#792] +[visit_id numtype#792] +[visit_exp (`I64`_numtype, `REM`_binop_{sx#4202}(`S`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `REM`_binop_{sx#4202}(`S`_sx)] +[visit_exp sx#4202] +[visit_id sx#4202] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] numtype#794 sx#4296 +dims \ = numtype#794, sx#4296 +[visit_exp `BINOP`_instr{numtype#794}(`I64`_numtype, `REM`_binop_{sx#4296}(`U`_sx))] +[visit_exp numtype#794] +[visit_id numtype#794] +[visit_exp (`I64`_numtype, `REM`_binop_{sx#4296}(`U`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `REM`_binop_{sx#4296}(`U`_sx)] +[visit_exp sx#4296] +[visit_id sx#4296] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] numtype#796 +dims \ = numtype#796 +[visit_exp `BINOP`_instr{numtype#796}(`I64`_numtype, `AND`_binop_)] +[visit_exp numtype#796] +[visit_id numtype#796] +[visit_exp (`I64`_numtype, `AND`_binop_)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `AND`_binop_] +[visit_exp ()] +[check_dims] numtype#798 +dims \ = numtype#798 +[visit_exp `BINOP`_instr{numtype#798}(`I64`_numtype, `OR`_binop_)] +[visit_exp numtype#798] +[visit_id numtype#798] +[visit_exp (`I64`_numtype, `OR`_binop_)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `OR`_binop_] +[visit_exp ()] +[check_dims] numtype#800 +dims \ = numtype#800 +[visit_exp `BINOP`_instr{numtype#800}(`I64`_numtype, `XOR`_binop_)] +[visit_exp numtype#800] +[visit_id numtype#800] +[visit_exp (`I64`_numtype, `XOR`_binop_)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `XOR`_binop_] +[visit_exp ()] +[check_dims] numtype#802 +dims \ = numtype#802 +[visit_exp `BINOP`_instr{numtype#802}(`I64`_numtype, `SHL`_binop_)] +[visit_exp numtype#802] +[visit_id numtype#802] +[visit_exp (`I64`_numtype, `SHL`_binop_)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `SHL`_binop_] +[visit_exp ()] +[check_dims] numtype#804 sx#4570 +dims \ = numtype#804, sx#4570 +[visit_exp `BINOP`_instr{numtype#804}(`I64`_numtype, `SHR`_binop_{sx#4570}(`S`_sx))] +[visit_exp numtype#804] +[visit_id numtype#804] +[visit_exp (`I64`_numtype, `SHR`_binop_{sx#4570}(`S`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `SHR`_binop_{sx#4570}(`S`_sx)] +[visit_exp sx#4570] +[visit_id sx#4570] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] numtype#806 sx#4664 +dims \ = numtype#806, sx#4664 +[visit_exp `BINOP`_instr{numtype#806}(`I64`_numtype, `SHR`_binop_{sx#4664}(`U`_sx))] +[visit_exp numtype#806] +[visit_id numtype#806] +[visit_exp (`I64`_numtype, `SHR`_binop_{sx#4664}(`U`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `SHR`_binop_{sx#4664}(`U`_sx)] +[visit_exp sx#4664] +[visit_id sx#4664] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] numtype#808 +dims \ = numtype#808 +[visit_exp `BINOP`_instr{numtype#808}(`I64`_numtype, `ROTL`_binop_)] +[visit_exp numtype#808] +[visit_id numtype#808] +[visit_exp (`I64`_numtype, `ROTL`_binop_)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `ROTL`_binop_] +[visit_exp ()] +[check_dims] numtype#810 +dims \ = numtype#810 +[visit_exp `BINOP`_instr{numtype#810}(`I64`_numtype, `ROTR`_binop_)] +[visit_exp numtype#810] +[visit_id numtype#810] +[visit_exp (`I64`_numtype, `ROTR`_binop_)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `ROTR`_binop_] +[visit_exp ()] +ps' = +[check_dims] +[check_dims] numtype#812 +dims \ = numtype#812 +[visit_exp `UNOP`_instr{numtype#812}(`F32`_numtype, `ABS`_unop_)] +[visit_exp numtype#812] +[visit_id numtype#812] +[visit_exp (`F32`_numtype, `ABS`_unop_)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `ABS`_unop_] +[visit_exp ()] +[check_dims] numtype#814 +dims \ = numtype#814 +[visit_exp `UNOP`_instr{numtype#814}(`F32`_numtype, `NEG`_unop_)] +[visit_exp numtype#814] +[visit_id numtype#814] +[visit_exp (`F32`_numtype, `NEG`_unop_)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `NEG`_unop_] +[visit_exp ()] +[check_dims] numtype#816 +dims \ = numtype#816 +[visit_exp `UNOP`_instr{numtype#816}(`F32`_numtype, `CEIL`_unop_)] +[visit_exp numtype#816] +[visit_id numtype#816] +[visit_exp (`F32`_numtype, `CEIL`_unop_)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `CEIL`_unop_] +[visit_exp ()] +[check_dims] numtype#818 +dims \ = numtype#818 +[visit_exp `UNOP`_instr{numtype#818}(`F32`_numtype, `FLOOR`_unop_)] +[visit_exp numtype#818] +[visit_id numtype#818] +[visit_exp (`F32`_numtype, `FLOOR`_unop_)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `FLOOR`_unop_] +[visit_exp ()] +[check_dims] numtype#820 +dims \ = numtype#820 +[visit_exp `UNOP`_instr{numtype#820}(`F32`_numtype, `TRUNC`_unop_)] +[visit_exp numtype#820] +[visit_id numtype#820] +[visit_exp (`F32`_numtype, `TRUNC`_unop_)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `TRUNC`_unop_] +[visit_exp ()] +[check_dims] numtype#822 +dims \ = numtype#822 +[visit_exp `UNOP`_instr{numtype#822}(`F32`_numtype, `NEAREST`_unop_)] +[visit_exp numtype#822] +[visit_id numtype#822] +[visit_exp (`F32`_numtype, `NEAREST`_unop_)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `NEAREST`_unop_] +[visit_exp ()] +[check_dims] numtype#824 +dims \ = numtype#824 +[visit_exp `UNOP`_instr{numtype#824}(`F32`_numtype, `SQRT`_unop_)] +[visit_exp numtype#824] +[visit_id numtype#824] +[visit_exp (`F32`_numtype, `SQRT`_unop_)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `SQRT`_unop_] +[visit_exp ()] +ps' = +[check_dims] +[check_dims] numtype#826 +dims \ = numtype#826 +[visit_exp `BINOP`_instr{numtype#826}(`F32`_numtype, `ADD`_binop_)] +[visit_exp numtype#826] +[visit_id numtype#826] +[visit_exp (`F32`_numtype, `ADD`_binop_)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `ADD`_binop_] +[visit_exp ()] +[check_dims] numtype#828 +dims \ = numtype#828 +[visit_exp `BINOP`_instr{numtype#828}(`F32`_numtype, `SUB`_binop_)] +[visit_exp numtype#828] +[visit_id numtype#828] +[visit_exp (`F32`_numtype, `SUB`_binop_)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `SUB`_binop_] +[visit_exp ()] +[check_dims] numtype#830 +dims \ = numtype#830 +[visit_exp `BINOP`_instr{numtype#830}(`F32`_numtype, `MUL`_binop_)] +[visit_exp numtype#830] +[visit_id numtype#830] +[visit_exp (`F32`_numtype, `MUL`_binop_)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `MUL`_binop_] +[visit_exp ()] +[check_dims] numtype#832 +dims \ = numtype#832 +[visit_exp `BINOP`_instr{numtype#832}(`F32`_numtype, `DIV`_binop_)] +[visit_exp numtype#832] +[visit_id numtype#832] +[visit_exp (`F32`_numtype, `DIV`_binop_)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `DIV`_binop_] +[visit_exp ()] +[check_dims] numtype#834 +dims \ = numtype#834 +[visit_exp `BINOP`_instr{numtype#834}(`F32`_numtype, `MIN`_binop_)] +[visit_exp numtype#834] +[visit_id numtype#834] +[visit_exp (`F32`_numtype, `MIN`_binop_)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `MIN`_binop_] +[visit_exp ()] +[check_dims] numtype#836 +dims \ = numtype#836 +[visit_exp `BINOP`_instr{numtype#836}(`F32`_numtype, `MAX`_binop_)] +[visit_exp numtype#836] +[visit_id numtype#836] +[visit_exp (`F32`_numtype, `MAX`_binop_)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `MAX`_binop_] +[visit_exp ()] +[check_dims] numtype#838 +dims \ = numtype#838 +[visit_exp `BINOP`_instr{numtype#838}(`F32`_numtype, `COPYSIGN`_binop_)] +[visit_exp numtype#838] +[visit_id numtype#838] +[visit_exp (`F32`_numtype, `COPYSIGN`_binop_)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `COPYSIGN`_binop_] +[visit_exp ()] +ps' = +[check_dims] +[check_dims] numtype#840 +dims \ = numtype#840 +[visit_exp `UNOP`_instr{numtype#840}(`F64`_numtype, `ABS`_unop_)] +[visit_exp numtype#840] +[visit_id numtype#840] +[visit_exp (`F64`_numtype, `ABS`_unop_)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `ABS`_unop_] +[visit_exp ()] +[check_dims] numtype#842 +dims \ = numtype#842 +[visit_exp `UNOP`_instr{numtype#842}(`F64`_numtype, `NEG`_unop_)] +[visit_exp numtype#842] +[visit_id numtype#842] +[visit_exp (`F64`_numtype, `NEG`_unop_)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `NEG`_unop_] +[visit_exp ()] +[check_dims] numtype#844 +dims \ = numtype#844 +[visit_exp `UNOP`_instr{numtype#844}(`F64`_numtype, `CEIL`_unop_)] +[visit_exp numtype#844] +[visit_id numtype#844] +[visit_exp (`F64`_numtype, `CEIL`_unop_)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `CEIL`_unop_] +[visit_exp ()] +[check_dims] numtype#846 +dims \ = numtype#846 +[visit_exp `UNOP`_instr{numtype#846}(`F64`_numtype, `FLOOR`_unop_)] +[visit_exp numtype#846] +[visit_id numtype#846] +[visit_exp (`F64`_numtype, `FLOOR`_unop_)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `FLOOR`_unop_] +[visit_exp ()] +[check_dims] numtype#848 +dims \ = numtype#848 +[visit_exp `UNOP`_instr{numtype#848}(`F64`_numtype, `TRUNC`_unop_)] +[visit_exp numtype#848] +[visit_id numtype#848] +[visit_exp (`F64`_numtype, `TRUNC`_unop_)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `TRUNC`_unop_] +[visit_exp ()] +[check_dims] numtype#850 +dims \ = numtype#850 +[visit_exp `UNOP`_instr{numtype#850}(`F64`_numtype, `NEAREST`_unop_)] +[visit_exp numtype#850] +[visit_id numtype#850] +[visit_exp (`F64`_numtype, `NEAREST`_unop_)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `NEAREST`_unop_] +[visit_exp ()] +[check_dims] numtype#852 +dims \ = numtype#852 +[visit_exp `UNOP`_instr{numtype#852}(`F64`_numtype, `SQRT`_unop_)] +[visit_exp numtype#852] +[visit_id numtype#852] +[visit_exp (`F64`_numtype, `SQRT`_unop_)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `SQRT`_unop_] +[visit_exp ()] +ps' = +[check_dims] +[check_dims] numtype#854 +dims \ = numtype#854 +[visit_exp `BINOP`_instr{numtype#854}(`F64`_numtype, `ADD`_binop_)] +[visit_exp numtype#854] +[visit_id numtype#854] +[visit_exp (`F64`_numtype, `ADD`_binop_)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `ADD`_binop_] +[visit_exp ()] +[check_dims] numtype#856 +dims \ = numtype#856 +[visit_exp `BINOP`_instr{numtype#856}(`F64`_numtype, `SUB`_binop_)] +[visit_exp numtype#856] +[visit_id numtype#856] +[visit_exp (`F64`_numtype, `SUB`_binop_)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `SUB`_binop_] +[visit_exp ()] +[check_dims] numtype#858 +dims \ = numtype#858 +[visit_exp `BINOP`_instr{numtype#858}(`F64`_numtype, `MUL`_binop_)] +[visit_exp numtype#858] +[visit_id numtype#858] +[visit_exp (`F64`_numtype, `MUL`_binop_)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `MUL`_binop_] +[visit_exp ()] +[check_dims] numtype#860 +dims \ = numtype#860 +[visit_exp `BINOP`_instr{numtype#860}(`F64`_numtype, `DIV`_binop_)] +[visit_exp numtype#860] +[visit_id numtype#860] +[visit_exp (`F64`_numtype, `DIV`_binop_)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `DIV`_binop_] +[visit_exp ()] +[check_dims] numtype#862 +dims \ = numtype#862 +[visit_exp `BINOP`_instr{numtype#862}(`F64`_numtype, `MIN`_binop_)] +[visit_exp numtype#862] +[visit_id numtype#862] +[visit_exp (`F64`_numtype, `MIN`_binop_)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `MIN`_binop_] +[visit_exp ()] +[check_dims] numtype#864 +dims \ = numtype#864 +[visit_exp `BINOP`_instr{numtype#864}(`F64`_numtype, `MAX`_binop_)] +[visit_exp numtype#864] +[visit_id numtype#864] +[visit_exp (`F64`_numtype, `MAX`_binop_)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `MAX`_binop_] +[visit_exp ()] +[check_dims] numtype#866 +dims \ = numtype#866 +[visit_exp `BINOP`_instr{numtype#866}(`F64`_numtype, `COPYSIGN`_binop_)] +[visit_exp numtype#866] +[visit_id numtype#866] +[visit_exp (`F64`_numtype, `COPYSIGN`_binop_)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `COPYSIGN`_binop_] +[visit_exp ()] +ps' = +[check_dims] +[check_dims] numtype_1#9 numtype_2#9 +dims \ = numtype_1#9, numtype_2#9 +[visit_exp `CVTOP`_instr{numtype_1#9, numtype_2#9}(`I32`_numtype, `I64`_numtype, `WRAP`_cvtop__)] +[visit_exp numtype_1#9] +[visit_id numtype_1#9] +[visit_exp numtype_2#9] +[visit_id numtype_2#9] +[visit_exp (`I32`_numtype, `I64`_numtype, `WRAP`_cvtop__)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `WRAP`_cvtop__] +[visit_exp ()] +[check_dims] numtype_1#11 numtype_2#11 sx#4833 +dims \ = numtype_1#11, numtype_2#11, sx#4833 +[visit_exp `CVTOP`_instr{numtype_1#11, numtype_2#11}(`I32`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#4833}(`S`_sx))] +[visit_exp numtype_1#11] +[visit_id numtype_1#11] +[visit_exp numtype_2#11] +[visit_id numtype_2#11] +[visit_exp (`I32`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#4833}(`S`_sx))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `TRUNC`_cvtop__{sx#4833}(`S`_sx)] +[visit_exp sx#4833] +[visit_id sx#4833] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] numtype_1#13 numtype_2#13 sx#4897 +dims \ = numtype_1#13, numtype_2#13, sx#4897 +[visit_exp `CVTOP`_instr{numtype_1#13, numtype_2#13}(`I32`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#4897}(`U`_sx))] +[visit_exp numtype_1#13] +[visit_id numtype_1#13] +[visit_exp numtype_2#13] +[visit_id numtype_2#13] +[visit_exp (`I32`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#4897}(`U`_sx))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `TRUNC`_cvtop__{sx#4897}(`U`_sx)] +[visit_exp sx#4897] +[visit_id sx#4897] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] numtype_1#15 numtype_2#15 sx#4961 +dims \ = numtype_1#15, numtype_2#15, sx#4961 +[visit_exp `CVTOP`_instr{numtype_1#15, numtype_2#15}(`I32`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#4961}(`S`_sx))] +[visit_exp numtype_1#15] +[visit_id numtype_1#15] +[visit_exp numtype_2#15] +[visit_id numtype_2#15] +[visit_exp (`I32`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#4961}(`S`_sx))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `TRUNC`_cvtop__{sx#4961}(`S`_sx)] +[visit_exp sx#4961] +[visit_id sx#4961] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] numtype_1#17 numtype_2#17 sx#5025 +dims \ = numtype_1#17, numtype_2#17, sx#5025 +[visit_exp `CVTOP`_instr{numtype_1#17, numtype_2#17}(`I32`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#5025}(`U`_sx))] +[visit_exp numtype_1#17] +[visit_id numtype_1#17] +[visit_exp numtype_2#17] +[visit_id numtype_2#17] +[visit_exp (`I32`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#5025}(`U`_sx))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `TRUNC`_cvtop__{sx#5025}(`U`_sx)] +[visit_exp sx#5025] +[visit_id sx#5025] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] numtype_1#19 numtype_2#19 sx#5059 +dims \ = numtype_1#19, numtype_2#19, sx#5059 +[visit_exp `CVTOP`_instr{numtype_1#19, numtype_2#19}(`I64`_numtype, `I32`_numtype, `EXTEND`_cvtop__{sx#5059}(`S`_sx))] +[visit_exp numtype_1#19] +[visit_id numtype_1#19] +[visit_exp numtype_2#19] +[visit_id numtype_2#19] +[visit_exp (`I64`_numtype, `I32`_numtype, `EXTEND`_cvtop__{sx#5059}(`S`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `EXTEND`_cvtop__{sx#5059}(`S`_sx)] +[visit_exp sx#5059] +[visit_id sx#5059] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] numtype_1#21 numtype_2#21 sx#5093 +dims \ = numtype_1#21, numtype_2#21, sx#5093 +[visit_exp `CVTOP`_instr{numtype_1#21, numtype_2#21}(`I64`_numtype, `I32`_numtype, `EXTEND`_cvtop__{sx#5093}(`U`_sx))] +[visit_exp numtype_1#21] +[visit_id numtype_1#21] +[visit_exp numtype_2#21] +[visit_id numtype_2#21] +[visit_exp (`I64`_numtype, `I32`_numtype, `EXTEND`_cvtop__{sx#5093}(`U`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `EXTEND`_cvtop__{sx#5093}(`U`_sx)] +[visit_exp sx#5093] +[visit_id sx#5093] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] numtype_1#23 numtype_2#23 sx#5157 +dims \ = numtype_1#23, numtype_2#23, sx#5157 +[visit_exp `CVTOP`_instr{numtype_1#23, numtype_2#23}(`I64`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#5157}(`S`_sx))] +[visit_exp numtype_1#23] +[visit_id numtype_1#23] +[visit_exp numtype_2#23] +[visit_id numtype_2#23] +[visit_exp (`I64`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#5157}(`S`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `TRUNC`_cvtop__{sx#5157}(`S`_sx)] +[visit_exp sx#5157] +[visit_id sx#5157] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] numtype_1#25 numtype_2#25 sx#5221 +dims \ = numtype_1#25, numtype_2#25, sx#5221 +[visit_exp `CVTOP`_instr{numtype_1#25, numtype_2#25}(`I64`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#5221}(`U`_sx))] +[visit_exp numtype_1#25] +[visit_id numtype_1#25] +[visit_exp numtype_2#25] +[visit_id numtype_2#25] +[visit_exp (`I64`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#5221}(`U`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `TRUNC`_cvtop__{sx#5221}(`U`_sx)] +[visit_exp sx#5221] +[visit_id sx#5221] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] numtype_1#27 numtype_2#27 sx#5285 +dims \ = numtype_1#27, numtype_2#27, sx#5285 +[visit_exp `CVTOP`_instr{numtype_1#27, numtype_2#27}(`I64`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#5285}(`S`_sx))] +[visit_exp numtype_1#27] +[visit_id numtype_1#27] +[visit_exp numtype_2#27] +[visit_id numtype_2#27] +[visit_exp (`I64`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#5285}(`S`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `TRUNC`_cvtop__{sx#5285}(`S`_sx)] +[visit_exp sx#5285] +[visit_id sx#5285] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] numtype_1#29 numtype_2#29 sx#5349 +dims \ = numtype_1#29, numtype_2#29, sx#5349 +[visit_exp `CVTOP`_instr{numtype_1#29, numtype_2#29}(`I64`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#5349}(`U`_sx))] +[visit_exp numtype_1#29] +[visit_id numtype_1#29] +[visit_exp numtype_2#29] +[visit_id numtype_2#29] +[visit_exp (`I64`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#5349}(`U`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `TRUNC`_cvtop__{sx#5349}(`U`_sx)] +[visit_exp sx#5349] +[visit_id sx#5349] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] numtype_1#31 numtype_2#31 sx#5383 +dims \ = numtype_1#31, numtype_2#31, sx#5383 +[visit_exp `CVTOP`_instr{numtype_1#31, numtype_2#31}(`F32`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#5383}(`S`_sx))] +[visit_exp numtype_1#31] +[visit_id numtype_1#31] +[visit_exp numtype_2#31] +[visit_id numtype_2#31] +[visit_exp (`F32`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#5383}(`S`_sx))] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `CONVERT`_cvtop__{sx#5383}(`S`_sx)] +[visit_exp sx#5383] +[visit_id sx#5383] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] numtype_1#33 numtype_2#33 sx#5417 +dims \ = numtype_1#33, numtype_2#33, sx#5417 +[visit_exp `CVTOP`_instr{numtype_1#33, numtype_2#33}(`F32`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#5417}(`U`_sx))] +[visit_exp numtype_1#33] +[visit_id numtype_1#33] +[visit_exp numtype_2#33] +[visit_id numtype_2#33] +[visit_exp (`F32`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#5417}(`U`_sx))] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `CONVERT`_cvtop__{sx#5417}(`U`_sx)] +[visit_exp sx#5417] +[visit_id sx#5417] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] numtype_1#35 numtype_2#35 sx#5451 +dims \ = numtype_1#35, numtype_2#35, sx#5451 +[visit_exp `CVTOP`_instr{numtype_1#35, numtype_2#35}(`F32`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#5451}(`S`_sx))] +[visit_exp numtype_1#35] +[visit_id numtype_1#35] +[visit_exp numtype_2#35] +[visit_id numtype_2#35] +[visit_exp (`F32`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#5451}(`S`_sx))] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `CONVERT`_cvtop__{sx#5451}(`S`_sx)] +[visit_exp sx#5451] +[visit_id sx#5451] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] numtype_1#37 numtype_2#37 sx#5485 +dims \ = numtype_1#37, numtype_2#37, sx#5485 +[visit_exp `CVTOP`_instr{numtype_1#37, numtype_2#37}(`F32`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#5485}(`U`_sx))] +[visit_exp numtype_1#37] +[visit_id numtype_1#37] +[visit_exp numtype_2#37] +[visit_id numtype_2#37] +[visit_exp (`F32`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#5485}(`U`_sx))] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `CONVERT`_cvtop__{sx#5485}(`U`_sx)] +[visit_exp sx#5485] +[visit_id sx#5485] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] numtype_1#39 numtype_2#39 +dims \ = numtype_1#39, numtype_2#39 +[visit_exp `CVTOP`_instr{numtype_1#39, numtype_2#39}(`F32`_numtype, `F64`_numtype, `DEMOTE`_cvtop__)] +[visit_exp numtype_1#39] +[visit_id numtype_1#39] +[visit_exp numtype_2#39] +[visit_id numtype_2#39] +[visit_exp (`F32`_numtype, `F64`_numtype, `DEMOTE`_cvtop__)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `DEMOTE`_cvtop__] +[visit_exp ()] +[check_dims] numtype_1#41 numtype_2#41 sx#5519 +dims \ = numtype_1#41, numtype_2#41, sx#5519 +[visit_exp `CVTOP`_instr{numtype_1#41, numtype_2#41}(`F64`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#5519}(`S`_sx))] +[visit_exp numtype_1#41] +[visit_id numtype_1#41] +[visit_exp numtype_2#41] +[visit_id numtype_2#41] +[visit_exp (`F64`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#5519}(`S`_sx))] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `CONVERT`_cvtop__{sx#5519}(`S`_sx)] +[visit_exp sx#5519] +[visit_id sx#5519] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] numtype_1#43 numtype_2#43 sx#5553 +dims \ = numtype_1#43, numtype_2#43, sx#5553 +[visit_exp `CVTOP`_instr{numtype_1#43, numtype_2#43}(`F64`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#5553}(`U`_sx))] +[visit_exp numtype_1#43] +[visit_id numtype_1#43] +[visit_exp numtype_2#43] +[visit_id numtype_2#43] +[visit_exp (`F64`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#5553}(`U`_sx))] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `CONVERT`_cvtop__{sx#5553}(`U`_sx)] +[visit_exp sx#5553] +[visit_id sx#5553] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] numtype_1#45 numtype_2#45 sx#5587 +dims \ = numtype_1#45, numtype_2#45, sx#5587 +[visit_exp `CVTOP`_instr{numtype_1#45, numtype_2#45}(`F64`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#5587}(`S`_sx))] +[visit_exp numtype_1#45] +[visit_id numtype_1#45] +[visit_exp numtype_2#45] +[visit_id numtype_2#45] +[visit_exp (`F64`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#5587}(`S`_sx))] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `CONVERT`_cvtop__{sx#5587}(`S`_sx)] +[visit_exp sx#5587] +[visit_id sx#5587] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] numtype_1#47 numtype_2#47 sx#5621 +dims \ = numtype_1#47, numtype_2#47, sx#5621 +[visit_exp `CVTOP`_instr{numtype_1#47, numtype_2#47}(`F64`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#5621}(`U`_sx))] +[visit_exp numtype_1#47] +[visit_id numtype_1#47] +[visit_exp numtype_2#47] +[visit_id numtype_2#47] +[visit_exp (`F64`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#5621}(`U`_sx))] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `CONVERT`_cvtop__{sx#5621}(`U`_sx)] +[visit_exp sx#5621] +[visit_id sx#5621] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] numtype_1#49 numtype_2#49 +dims \ = numtype_1#49, numtype_2#49 +[visit_exp `CVTOP`_instr{numtype_1#49, numtype_2#49}(`F64`_numtype, `F32`_numtype, `PROMOTE`_cvtop__)] +[visit_exp numtype_1#49] +[visit_id numtype_1#49] +[visit_exp numtype_2#49] +[visit_id numtype_2#49] +[visit_exp (`F64`_numtype, `F32`_numtype, `PROMOTE`_cvtop__)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `PROMOTE`_cvtop__] +[visit_exp ()] +[check_dims] numtype_1#51 numtype_2#51 +dims \ = numtype_1#51, numtype_2#51 +[visit_exp `CVTOP`_instr{numtype_1#51, numtype_2#51}(`I32`_numtype, `F32`_numtype, `REINTERPRET`_cvtop__)] +[visit_exp numtype_1#51] +[visit_id numtype_1#51] +[visit_exp numtype_2#51] +[visit_id numtype_2#51] +[visit_exp (`I32`_numtype, `F32`_numtype, `REINTERPRET`_cvtop__)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `REINTERPRET`_cvtop__] +[visit_exp ()] +[check_dims] numtype_1#53 numtype_2#53 +dims \ = numtype_1#53, numtype_2#53 +[visit_exp `CVTOP`_instr{numtype_1#53, numtype_2#53}(`I64`_numtype, `F64`_numtype, `REINTERPRET`_cvtop__)] +[visit_exp numtype_1#53] +[visit_id numtype_1#53] +[visit_exp numtype_2#53] +[visit_id numtype_2#53] +[visit_exp (`I64`_numtype, `F64`_numtype, `REINTERPRET`_cvtop__)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `REINTERPRET`_cvtop__] +[visit_exp ()] +[check_dims] numtype_1#55 numtype_2#55 +dims \ = numtype_1#55, numtype_2#55 +[visit_exp `CVTOP`_instr{numtype_1#55, numtype_2#55}(`F32`_numtype, `I32`_numtype, `REINTERPRET`_cvtop__)] +[visit_exp numtype_1#55] +[visit_id numtype_1#55] +[visit_exp numtype_2#55] +[visit_id numtype_2#55] +[visit_exp (`F32`_numtype, `I32`_numtype, `REINTERPRET`_cvtop__)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `REINTERPRET`_cvtop__] +[visit_exp ()] +[check_dims] numtype_1#57 numtype_2#57 +dims \ = numtype_1#57, numtype_2#57 +[visit_exp `CVTOP`_instr{numtype_1#57, numtype_2#57}(`F64`_numtype, `I64`_numtype, `REINTERPRET`_cvtop__)] +[visit_exp numtype_1#57] +[visit_id numtype_1#57] +[visit_exp numtype_2#57] +[visit_id numtype_2#57] +[visit_exp (`F64`_numtype, `I64`_numtype, `REINTERPRET`_cvtop__)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `REINTERPRET`_cvtop__] +[visit_exp ()] +ps' = +[check_dims] +[check_dims] i#54694 numtype_1#59 numtype_2#59 sx#5775 +dims \ = i#54694, numtype_1#59, numtype_2#59, sx#5775 +[visit_exp `CVTOP`_instr{numtype_1#59, numtype_2#59}(`I32`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#5775}(`S`_sx))] +[visit_exp numtype_1#59] +[visit_id numtype_1#59] +[visit_exp numtype_2#59] +[visit_id numtype_2#59] +[visit_exp (`I32`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#5775}(`S`_sx))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `TRUNC_SAT`_cvtop__{sx#5775}(`S`_sx)] +[visit_exp sx#5775] +[visit_id sx#5775] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#54694}(0)] +[visit_exp i#54694] +[visit_id i#54694] +[visit_exp (0)] +[visit_exp 0] +[check_dims] i#54719 numtype_1#61 numtype_2#61 sx#5839 +dims \ = i#54719, numtype_1#61, numtype_2#61, sx#5839 +[visit_exp `CVTOP`_instr{numtype_1#61, numtype_2#61}(`I32`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#5839}(`U`_sx))] +[visit_exp numtype_1#61] +[visit_id numtype_1#61] +[visit_exp numtype_2#61] +[visit_id numtype_2#61] +[visit_exp (`I32`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#5839}(`U`_sx))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `TRUNC_SAT`_cvtop__{sx#5839}(`U`_sx)] +[visit_exp sx#5839] +[visit_id sx#5839] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#54719}(1)] +[visit_exp i#54719] +[visit_id i#54719] +[visit_exp (1)] +[visit_exp 1] +[check_dims] i#54744 numtype_1#63 numtype_2#63 sx#5903 +dims \ = i#54744, numtype_1#63, numtype_2#63, sx#5903 +[visit_exp `CVTOP`_instr{numtype_1#63, numtype_2#63}(`I32`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#5903}(`S`_sx))] +[visit_exp numtype_1#63] +[visit_id numtype_1#63] +[visit_exp numtype_2#63] +[visit_id numtype_2#63] +[visit_exp (`I32`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#5903}(`S`_sx))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `TRUNC_SAT`_cvtop__{sx#5903}(`S`_sx)] +[visit_exp sx#5903] +[visit_id sx#5903] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#54744}(2)] +[visit_exp i#54744] +[visit_id i#54744] +[visit_exp (2)] +[visit_exp 2] +[check_dims] i#54769 numtype_1#65 numtype_2#65 sx#5967 +dims \ = i#54769, numtype_1#65, numtype_2#65, sx#5967 +[visit_exp `CVTOP`_instr{numtype_1#65, numtype_2#65}(`I32`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#5967}(`U`_sx))] +[visit_exp numtype_1#65] +[visit_id numtype_1#65] +[visit_exp numtype_2#65] +[visit_id numtype_2#65] +[visit_exp (`I32`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#5967}(`U`_sx))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `TRUNC_SAT`_cvtop__{sx#5967}(`U`_sx)] +[visit_exp sx#5967] +[visit_id sx#5967] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#54769}(3)] +[visit_exp i#54769] +[visit_id i#54769] +[visit_exp (3)] +[visit_exp 3] +[check_dims] i#54794 numtype_1#67 numtype_2#67 sx#6031 +dims \ = i#54794, numtype_1#67, numtype_2#67, sx#6031 +[visit_exp `CVTOP`_instr{numtype_1#67, numtype_2#67}(`I64`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#6031}(`S`_sx))] +[visit_exp numtype_1#67] +[visit_id numtype_1#67] +[visit_exp numtype_2#67] +[visit_id numtype_2#67] +[visit_exp (`I64`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#6031}(`S`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `TRUNC_SAT`_cvtop__{sx#6031}(`S`_sx)] +[visit_exp sx#6031] +[visit_id sx#6031] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#54794}(4)] +[visit_exp i#54794] +[visit_id i#54794] +[visit_exp (4)] +[visit_exp 4] +[check_dims] i#54819 numtype_1#69 numtype_2#69 sx#6095 +dims \ = i#54819, numtype_1#69, numtype_2#69, sx#6095 +[visit_exp `CVTOP`_instr{numtype_1#69, numtype_2#69}(`I64`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#6095}(`U`_sx))] +[visit_exp numtype_1#69] +[visit_id numtype_1#69] +[visit_exp numtype_2#69] +[visit_id numtype_2#69] +[visit_exp (`I64`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#6095}(`U`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `TRUNC_SAT`_cvtop__{sx#6095}(`U`_sx)] +[visit_exp sx#6095] +[visit_id sx#6095] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#54819}(5)] +[visit_exp i#54819] +[visit_id i#54819] +[visit_exp (5)] +[visit_exp 5] +[check_dims] i#54844 numtype_1#71 numtype_2#71 sx#6159 +dims \ = i#54844, numtype_1#71, numtype_2#71, sx#6159 +[visit_exp `CVTOP`_instr{numtype_1#71, numtype_2#71}(`I64`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#6159}(`S`_sx))] +[visit_exp numtype_1#71] +[visit_id numtype_1#71] +[visit_exp numtype_2#71] +[visit_id numtype_2#71] +[visit_exp (`I64`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#6159}(`S`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `TRUNC_SAT`_cvtop__{sx#6159}(`S`_sx)] +[visit_exp sx#6159] +[visit_id sx#6159] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#54844}(6)] +[visit_exp i#54844] +[visit_id i#54844] +[visit_exp (6)] +[visit_exp 6] +[check_dims] i#54869 numtype_1#73 numtype_2#73 sx#6223 +dims \ = i#54869, numtype_1#73, numtype_2#73, sx#6223 +[visit_exp `CVTOP`_instr{numtype_1#73, numtype_2#73}(`I64`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#6223}(`U`_sx))] +[visit_exp numtype_1#73] +[visit_id numtype_1#73] +[visit_exp numtype_2#73] +[visit_id numtype_2#73] +[visit_exp (`I64`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#6223}(`U`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `TRUNC_SAT`_cvtop__{sx#6223}(`U`_sx)] +[visit_exp sx#6223] +[visit_id sx#6223] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#54869}(7)] +[visit_exp i#54869] +[visit_id i#54869] +[visit_exp (7)] +[visit_exp 7] +ps' = +[check_dims] +[check_dims] i#54895 i#54896 i#54943 i#54944 l +dims \ = i#54895, i#54896, i#54943, i#54944, l +[visit_exp `%`_laneidx{i#54944}(l!`%`_labelidx{i#54943}.0)] +[visit_exp i#54944] +[visit_id i#54944] +[visit_exp (l!`%`_labelidx{i#54943}.0)] +[visit_exp l!`%`_labelidx{i#54943}.0] +[visit_exp l!`%`_labelidx{i#54943}] +[visit_exp l] +[visit_id l] +[visit_exp i#54943] +[visit_id i#54943] +[visit_exp `%`_byte{i#54896}(l!`%`_labelidx{i#54895}.0)] +[visit_exp i#54896] +[visit_id i#54896] +[visit_exp (l!`%`_labelidx{i#54895}.0)] +[visit_exp l!`%`_labelidx{i#54895}.0] +[visit_exp l!`%`_labelidx{i#54895}] +[visit_exp l] +[visit_id l] not free +[visit_exp i#54895] +[visit_id i#54895] +ps' = +[check_dims] +[check_dims] ao i#54968 memarg#137 memidx#228 vectype?#14 x +dims \ = ao, i#54968, memarg#137, memidx#228, vectype?#14, x +[visit_exp `VLOAD`_instr{`vectype?#14`, memidx#228, memarg#137}(`V128`_vectype, ?(), x, ao)] +[visit_exp `vectype?#14`] +[visit_id vectype?#14] +[visit_exp memidx#228] +[visit_id memidx#228] +[visit_exp memarg#137] +[visit_id memarg#137] +[visit_exp (`V128`_vectype, ?(), x, ao)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp ?()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp `%`_u32{i#54968}(0)] +[visit_exp i#54968] +[visit_id i#54968] +[visit_exp (0)] +[visit_exp 0] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +[check_dims] M#157 ao i#55019 i#55059 i#55066 memarg#139 memidx#230 sx#6240 sz#1092 vectype?#15 x +dims \ = M#157, ao, i#55019, i#55059, i#55066, memarg#139, memidx#230, sx#6240, sz#1092, vectype?#15, x +[visit_exp `VLOAD`_instr{`vectype?#15`, memidx#230, memarg#139}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1092, M#157, sx#6240, i#55059}(`%`_sz{i#55066}(8), 8, `S`_sx)), x, ao)] +[visit_exp `vectype?#15`] +[visit_id vectype?#15] +[visit_exp memidx#230] +[visit_id memidx#230] +[visit_exp memarg#139] +[visit_id memarg#139] +[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1092, M#157, sx#6240, i#55059}(`%`_sz{i#55066}(8), 8, `S`_sx)), x, ao)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp ?(`SHAPE%X%_%`_vloadop_{sz#1092, M#157, sx#6240, i#55059}(`%`_sz{i#55066}(8), 8, `S`_sx))] +[visit_exp `SHAPE%X%_%`_vloadop_{sz#1092, M#157, sx#6240, i#55059}(`%`_sz{i#55066}(8), 8, `S`_sx)] +[visit_exp sz#1092] +[visit_id sz#1092] +[visit_exp M#157] +[visit_id M#157] +[visit_exp sx#6240] +[visit_id sx#6240] +[visit_exp i#55059] +[visit_id i#55059] +[visit_exp (`%`_sz{i#55066}(8), 8, `S`_sx)] +[visit_exp `%`_sz{i#55066}(8)] +[visit_exp i#55066] +[visit_id i#55066] +[visit_exp (8)] +[visit_exp 8] +[visit_exp 8] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp `%`_u32{i#55019}(1)] +[visit_exp i#55019] +[visit_id i#55019] +[visit_exp (1)] +[visit_exp 1] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +[check_dims] M#174 ao i#55103 i#55143 i#55150 memarg#141 memidx#232 sx#6257 sz#1139 vectype?#16 x +dims \ = M#174, ao, i#55103, i#55143, i#55150, memarg#141, memidx#232, sx#6257, sz#1139, vectype?#16, x +[visit_exp `VLOAD`_instr{`vectype?#16`, memidx#232, memarg#141}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1139, M#174, sx#6257, i#55143}(`%`_sz{i#55150}(8), 8, `U`_sx)), x, ao)] +[visit_exp `vectype?#16`] +[visit_id vectype?#16] +[visit_exp memidx#232] +[visit_id memidx#232] +[visit_exp memarg#141] +[visit_id memarg#141] +[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1139, M#174, sx#6257, i#55143}(`%`_sz{i#55150}(8), 8, `U`_sx)), x, ao)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp ?(`SHAPE%X%_%`_vloadop_{sz#1139, M#174, sx#6257, i#55143}(`%`_sz{i#55150}(8), 8, `U`_sx))] +[visit_exp `SHAPE%X%_%`_vloadop_{sz#1139, M#174, sx#6257, i#55143}(`%`_sz{i#55150}(8), 8, `U`_sx)] +[visit_exp sz#1139] +[visit_id sz#1139] +[visit_exp M#174] +[visit_id M#174] +[visit_exp sx#6257] +[visit_id sx#6257] +[visit_exp i#55143] +[visit_id i#55143] +[visit_exp (`%`_sz{i#55150}(8), 8, `U`_sx)] +[visit_exp `%`_sz{i#55150}(8)] +[visit_exp i#55150] +[visit_id i#55150] +[visit_exp (8)] +[visit_exp 8] +[visit_exp 8] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp `%`_u32{i#55103}(2)] +[visit_exp i#55103] +[visit_id i#55103] +[visit_exp (2)] +[visit_exp 2] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +[check_dims] M#191 ao i#55187 i#55227 i#55234 memarg#143 memidx#234 sx#6274 sz#1186 vectype?#17 x +dims \ = M#191, ao, i#55187, i#55227, i#55234, memarg#143, memidx#234, sx#6274, sz#1186, vectype?#17, x +[visit_exp `VLOAD`_instr{`vectype?#17`, memidx#234, memarg#143}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1186, M#191, sx#6274, i#55227}(`%`_sz{i#55234}(16), 4, `S`_sx)), x, ao)] +[visit_exp `vectype?#17`] +[visit_id vectype?#17] +[visit_exp memidx#234] +[visit_id memidx#234] +[visit_exp memarg#143] +[visit_id memarg#143] +[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1186, M#191, sx#6274, i#55227}(`%`_sz{i#55234}(16), 4, `S`_sx)), x, ao)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp ?(`SHAPE%X%_%`_vloadop_{sz#1186, M#191, sx#6274, i#55227}(`%`_sz{i#55234}(16), 4, `S`_sx))] +[visit_exp `SHAPE%X%_%`_vloadop_{sz#1186, M#191, sx#6274, i#55227}(`%`_sz{i#55234}(16), 4, `S`_sx)] +[visit_exp sz#1186] +[visit_id sz#1186] +[visit_exp M#191] +[visit_id M#191] +[visit_exp sx#6274] +[visit_id sx#6274] +[visit_exp i#55227] +[visit_id i#55227] +[visit_exp (`%`_sz{i#55234}(16), 4, `S`_sx)] +[visit_exp `%`_sz{i#55234}(16)] +[visit_exp i#55234] +[visit_id i#55234] +[visit_exp (16)] +[visit_exp 16] +[visit_exp 4] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp `%`_u32{i#55187}(3)] +[visit_exp i#55187] +[visit_id i#55187] +[visit_exp (3)] +[visit_exp 3] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +[check_dims] M#208 ao i#55271 i#55311 i#55318 memarg#145 memidx#236 sx#6291 sz#1233 vectype?#18 x +dims \ = M#208, ao, i#55271, i#55311, i#55318, memarg#145, memidx#236, sx#6291, sz#1233, vectype?#18, x +[visit_exp `VLOAD`_instr{`vectype?#18`, memidx#236, memarg#145}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1233, M#208, sx#6291, i#55311}(`%`_sz{i#55318}(16), 4, `U`_sx)), x, ao)] +[visit_exp `vectype?#18`] +[visit_id vectype?#18] +[visit_exp memidx#236] +[visit_id memidx#236] +[visit_exp memarg#145] +[visit_id memarg#145] +[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1233, M#208, sx#6291, i#55311}(`%`_sz{i#55318}(16), 4, `U`_sx)), x, ao)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp ?(`SHAPE%X%_%`_vloadop_{sz#1233, M#208, sx#6291, i#55311}(`%`_sz{i#55318}(16), 4, `U`_sx))] +[visit_exp `SHAPE%X%_%`_vloadop_{sz#1233, M#208, sx#6291, i#55311}(`%`_sz{i#55318}(16), 4, `U`_sx)] +[visit_exp sz#1233] +[visit_id sz#1233] +[visit_exp M#208] +[visit_id M#208] +[visit_exp sx#6291] +[visit_id sx#6291] +[visit_exp i#55311] +[visit_id i#55311] +[visit_exp (`%`_sz{i#55318}(16), 4, `U`_sx)] +[visit_exp `%`_sz{i#55318}(16)] +[visit_exp i#55318] +[visit_id i#55318] +[visit_exp (16)] +[visit_exp 16] +[visit_exp 4] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp `%`_u32{i#55271}(4)] +[visit_exp i#55271] +[visit_id i#55271] +[visit_exp (4)] +[visit_exp 4] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +[check_dims] M#225 ao i#55355 i#55395 i#55402 memarg#147 memidx#238 sx#6308 sz#1280 vectype?#19 x +dims \ = M#225, ao, i#55355, i#55395, i#55402, memarg#147, memidx#238, sx#6308, sz#1280, vectype?#19, x +[visit_exp `VLOAD`_instr{`vectype?#19`, memidx#238, memarg#147}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1280, M#225, sx#6308, i#55395}(`%`_sz{i#55402}(32), 2, `S`_sx)), x, ao)] +[visit_exp `vectype?#19`] +[visit_id vectype?#19] +[visit_exp memidx#238] +[visit_id memidx#238] +[visit_exp memarg#147] +[visit_id memarg#147] +[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1280, M#225, sx#6308, i#55395}(`%`_sz{i#55402}(32), 2, `S`_sx)), x, ao)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp ?(`SHAPE%X%_%`_vloadop_{sz#1280, M#225, sx#6308, i#55395}(`%`_sz{i#55402}(32), 2, `S`_sx))] +[visit_exp `SHAPE%X%_%`_vloadop_{sz#1280, M#225, sx#6308, i#55395}(`%`_sz{i#55402}(32), 2, `S`_sx)] +[visit_exp sz#1280] +[visit_id sz#1280] +[visit_exp M#225] +[visit_id M#225] +[visit_exp sx#6308] +[visit_id sx#6308] +[visit_exp i#55395] +[visit_id i#55395] +[visit_exp (`%`_sz{i#55402}(32), 2, `S`_sx)] +[visit_exp `%`_sz{i#55402}(32)] +[visit_exp i#55402] +[visit_id i#55402] +[visit_exp (32)] +[visit_exp 32] +[visit_exp 2] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp `%`_u32{i#55355}(5)] +[visit_exp i#55355] +[visit_id i#55355] +[visit_exp (5)] +[visit_exp 5] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +[check_dims] M#242 ao i#55439 i#55479 i#55486 memarg#149 memidx#240 sx#6325 sz#1327 vectype?#20 x +dims \ = M#242, ao, i#55439, i#55479, i#55486, memarg#149, memidx#240, sx#6325, sz#1327, vectype?#20, x +[visit_exp `VLOAD`_instr{`vectype?#20`, memidx#240, memarg#149}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1327, M#242, sx#6325, i#55479}(`%`_sz{i#55486}(32), 2, `U`_sx)), x, ao)] +[visit_exp `vectype?#20`] +[visit_id vectype?#20] +[visit_exp memidx#240] +[visit_id memidx#240] +[visit_exp memarg#149] +[visit_id memarg#149] +[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1327, M#242, sx#6325, i#55479}(`%`_sz{i#55486}(32), 2, `U`_sx)), x, ao)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp ?(`SHAPE%X%_%`_vloadop_{sz#1327, M#242, sx#6325, i#55479}(`%`_sz{i#55486}(32), 2, `U`_sx))] +[visit_exp `SHAPE%X%_%`_vloadop_{sz#1327, M#242, sx#6325, i#55479}(`%`_sz{i#55486}(32), 2, `U`_sx)] +[visit_exp sz#1327] +[visit_id sz#1327] +[visit_exp M#242] +[visit_id M#242] +[visit_exp sx#6325] +[visit_id sx#6325] +[visit_exp i#55479] +[visit_id i#55479] +[visit_exp (`%`_sz{i#55486}(32), 2, `U`_sx)] +[visit_exp `%`_sz{i#55486}(32)] +[visit_exp i#55486] +[visit_id i#55486] +[visit_exp (32)] +[visit_exp 32] +[visit_exp 2] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp `%`_u32{i#55439}(6)] +[visit_exp i#55439] +[visit_id i#55439] +[visit_exp (6)] +[visit_exp 6] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +[check_dims] ao i#55523 i#55569 memarg#151 memidx#242 sz#1374 vectype?#21 x +dims \ = ao, i#55523, i#55569, memarg#151, memidx#242, sz#1374, vectype?#21, x +[visit_exp `VLOAD`_instr{`vectype?#21`, memidx#242, memarg#151}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#1374}(`%`_sz{i#55569}(8))), x, ao)] +[visit_exp `vectype?#21`] +[visit_id vectype?#21] +[visit_exp memidx#242] +[visit_id memidx#242] +[visit_exp memarg#151] +[visit_id memarg#151] +[visit_exp (`V128`_vectype, ?(`SPLAT`_vloadop_{sz#1374}(`%`_sz{i#55569}(8))), x, ao)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp ?(`SPLAT`_vloadop_{sz#1374}(`%`_sz{i#55569}(8)))] +[visit_exp `SPLAT`_vloadop_{sz#1374}(`%`_sz{i#55569}(8))] +[visit_exp sz#1374] +[visit_id sz#1374] +[visit_exp (`%`_sz{i#55569}(8))] +[visit_exp `%`_sz{i#55569}(8)] +[visit_exp i#55569] +[visit_id i#55569] +[visit_exp (8)] +[visit_exp 8] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp `%`_u32{i#55523}(7)] +[visit_exp i#55523] +[visit_id i#55523] +[visit_exp (7)] +[visit_exp 7] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +[check_dims] ao i#55606 i#55652 memarg#153 memidx#244 sz#1421 vectype?#22 x +dims \ = ao, i#55606, i#55652, memarg#153, memidx#244, sz#1421, vectype?#22, x +[visit_exp `VLOAD`_instr{`vectype?#22`, memidx#244, memarg#153}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#1421}(`%`_sz{i#55652}(16))), x, ao)] +[visit_exp `vectype?#22`] +[visit_id vectype?#22] +[visit_exp memidx#244] +[visit_id memidx#244] +[visit_exp memarg#153] +[visit_id memarg#153] +[visit_exp (`V128`_vectype, ?(`SPLAT`_vloadop_{sz#1421}(`%`_sz{i#55652}(16))), x, ao)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp ?(`SPLAT`_vloadop_{sz#1421}(`%`_sz{i#55652}(16)))] +[visit_exp `SPLAT`_vloadop_{sz#1421}(`%`_sz{i#55652}(16))] +[visit_exp sz#1421] +[visit_id sz#1421] +[visit_exp (`%`_sz{i#55652}(16))] +[visit_exp `%`_sz{i#55652}(16)] +[visit_exp i#55652] +[visit_id i#55652] +[visit_exp (16)] +[visit_exp 16] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp `%`_u32{i#55606}(8)] +[visit_exp i#55606] +[visit_id i#55606] +[visit_exp (8)] +[visit_exp 8] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +[check_dims] ao i#55689 i#55735 memarg#155 memidx#246 sz#1468 vectype?#23 x +dims \ = ao, i#55689, i#55735, memarg#155, memidx#246, sz#1468, vectype?#23, x +[visit_exp `VLOAD`_instr{`vectype?#23`, memidx#246, memarg#155}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#1468}(`%`_sz{i#55735}(32))), x, ao)] +[visit_exp `vectype?#23`] +[visit_id vectype?#23] +[visit_exp memidx#246] +[visit_id memidx#246] +[visit_exp memarg#155] +[visit_id memarg#155] +[visit_exp (`V128`_vectype, ?(`SPLAT`_vloadop_{sz#1468}(`%`_sz{i#55735}(32))), x, ao)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp ?(`SPLAT`_vloadop_{sz#1468}(`%`_sz{i#55735}(32)))] +[visit_exp `SPLAT`_vloadop_{sz#1468}(`%`_sz{i#55735}(32))] +[visit_exp sz#1468] +[visit_id sz#1468] +[visit_exp (`%`_sz{i#55735}(32))] +[visit_exp `%`_sz{i#55735}(32)] +[visit_exp i#55735] +[visit_id i#55735] +[visit_exp (32)] +[visit_exp 32] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp `%`_u32{i#55689}(9)] +[visit_exp i#55689] +[visit_id i#55689] +[visit_exp (9)] +[visit_exp 9] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +[check_dims] ao i#55772 i#55818 memarg#157 memidx#248 sz#1515 vectype?#24 x +dims \ = ao, i#55772, i#55818, memarg#157, memidx#248, sz#1515, vectype?#24, x +[visit_exp `VLOAD`_instr{`vectype?#24`, memidx#248, memarg#157}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#1515}(`%`_sz{i#55818}(64))), x, ao)] +[visit_exp `vectype?#24`] +[visit_id vectype?#24] +[visit_exp memidx#248] +[visit_id memidx#248] +[visit_exp memarg#157] +[visit_id memarg#157] +[visit_exp (`V128`_vectype, ?(`SPLAT`_vloadop_{sz#1515}(`%`_sz{i#55818}(64))), x, ao)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp ?(`SPLAT`_vloadop_{sz#1515}(`%`_sz{i#55818}(64)))] +[visit_exp `SPLAT`_vloadop_{sz#1515}(`%`_sz{i#55818}(64))] +[visit_exp sz#1515] +[visit_id sz#1515] +[visit_exp (`%`_sz{i#55818}(64))] +[visit_exp `%`_sz{i#55818}(64)] +[visit_exp i#55818] +[visit_id i#55818] +[visit_exp (64)] +[visit_exp 64] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp `%`_u32{i#55772}(10)] +[visit_exp i#55772] +[visit_id i#55772] +[visit_exp (10)] +[visit_exp 10] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +[check_dims] ao i#55855 memarg#159 memidx#250 vectype#237 x +dims \ = ao, i#55855, memarg#159, memidx#250, vectype#237, x +[visit_exp `VSTORE`_instr{vectype#237, memidx#250, memarg#159}(`V128`_vectype, x, ao)] +[visit_exp vectype#237] +[visit_id vectype#237] +[visit_exp memidx#250] +[visit_id memidx#250] +[visit_exp memarg#159] +[visit_id memarg#159] +[visit_exp (`V128`_vectype, x, ao)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp `%`_u32{i#55855}(11)] +[visit_exp i#55855] +[visit_id i#55855] +[visit_exp (11)] +[visit_exp 11] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +[check_dims] ao i i#55906 i#55945 laneidx#31 memarg#161 memidx#252 sz#1517 vectype#239 x +dims \ = ao, i, i#55906, i#55945, laneidx#31, memarg#161, memidx#252, sz#1517, vectype#239, x +[visit_exp `VLOAD_LANE`_instr{vectype#239, sz#1517, memidx#252, memarg#161, laneidx#31}(`V128`_vectype, `%`_sz{i#55945}(8), x, ao, i)] +[visit_exp vectype#239] +[visit_id vectype#239] +[visit_exp sz#1517] +[visit_id sz#1517] +[visit_exp memidx#252] +[visit_id memidx#252] +[visit_exp memarg#161] +[visit_id memarg#161] +[visit_exp laneidx#31] +[visit_id laneidx#31] +[visit_exp (`V128`_vectype, `%`_sz{i#55945}(8), x, ao, i)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp `%`_sz{i#55945}(8)] +[visit_exp i#55945] +[visit_id i#55945] +[visit_exp (8)] +[visit_exp 8] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp i] +[visit_id i] +[visit_exp `%`_u32{i#55906}(84)] +[visit_exp i#55906] +[visit_id i#55906] +[visit_exp (84)] +[visit_exp 84] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +[visit_exp i] +[visit_id i] not free +[check_dims] ao i i#55994 i#56033 laneidx#33 memarg#163 memidx#254 sz#1519 vectype#241 x +dims \ = ao, i, i#55994, i#56033, laneidx#33, memarg#163, memidx#254, sz#1519, vectype#241, x +[visit_exp `VLOAD_LANE`_instr{vectype#241, sz#1519, memidx#254, memarg#163, laneidx#33}(`V128`_vectype, `%`_sz{i#56033}(16), x, ao, i)] +[visit_exp vectype#241] +[visit_id vectype#241] +[visit_exp sz#1519] +[visit_id sz#1519] +[visit_exp memidx#254] +[visit_id memidx#254] +[visit_exp memarg#163] +[visit_id memarg#163] +[visit_exp laneidx#33] +[visit_id laneidx#33] +[visit_exp (`V128`_vectype, `%`_sz{i#56033}(16), x, ao, i)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp `%`_sz{i#56033}(16)] +[visit_exp i#56033] +[visit_id i#56033] +[visit_exp (16)] +[visit_exp 16] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp i] +[visit_id i] +[visit_exp `%`_u32{i#55994}(85)] +[visit_exp i#55994] +[visit_id i#55994] +[visit_exp (85)] +[visit_exp 85] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +[visit_exp i] +[visit_id i] not free +[check_dims] ao i i#56082 i#56121 laneidx#35 memarg#165 memidx#256 sz#1521 vectype#243 x +dims \ = ao, i, i#56082, i#56121, laneidx#35, memarg#165, memidx#256, sz#1521, vectype#243, x +[visit_exp `VLOAD_LANE`_instr{vectype#243, sz#1521, memidx#256, memarg#165, laneidx#35}(`V128`_vectype, `%`_sz{i#56121}(32), x, ao, i)] +[visit_exp vectype#243] +[visit_id vectype#243] +[visit_exp sz#1521] +[visit_id sz#1521] +[visit_exp memidx#256] +[visit_id memidx#256] +[visit_exp memarg#165] +[visit_id memarg#165] +[visit_exp laneidx#35] +[visit_id laneidx#35] +[visit_exp (`V128`_vectype, `%`_sz{i#56121}(32), x, ao, i)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp `%`_sz{i#56121}(32)] +[visit_exp i#56121] +[visit_id i#56121] +[visit_exp (32)] +[visit_exp 32] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp i] +[visit_id i] +[visit_exp `%`_u32{i#56082}(86)] +[visit_exp i#56082] +[visit_id i#56082] +[visit_exp (86)] +[visit_exp 86] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +[visit_exp i] +[visit_id i] not free +[check_dims] ao i i#56170 i#56209 laneidx#37 memarg#167 memidx#258 sz#1523 vectype#245 x +dims \ = ao, i, i#56170, i#56209, laneidx#37, memarg#167, memidx#258, sz#1523, vectype#245, x +[visit_exp `VLOAD_LANE`_instr{vectype#245, sz#1523, memidx#258, memarg#167, laneidx#37}(`V128`_vectype, `%`_sz{i#56209}(64), x, ao, i)] +[visit_exp vectype#245] +[visit_id vectype#245] +[visit_exp sz#1523] +[visit_id sz#1523] +[visit_exp memidx#258] +[visit_id memidx#258] +[visit_exp memarg#167] +[visit_id memarg#167] +[visit_exp laneidx#37] +[visit_id laneidx#37] +[visit_exp (`V128`_vectype, `%`_sz{i#56209}(64), x, ao, i)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp `%`_sz{i#56209}(64)] +[visit_exp i#56209] +[visit_id i#56209] +[visit_exp (64)] +[visit_exp 64] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp i] +[visit_id i] +[visit_exp `%`_u32{i#56170}(87)] +[visit_exp i#56170] +[visit_id i#56170] +[visit_exp (87)] +[visit_exp 87] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +[visit_exp i] +[visit_id i] not free +[check_dims] ao i i#56258 i#56297 laneidx#39 memarg#169 memidx#260 sz#1525 vectype#247 x +dims \ = ao, i, i#56258, i#56297, laneidx#39, memarg#169, memidx#260, sz#1525, vectype#247, x +[visit_exp `VSTORE_LANE`_instr{vectype#247, sz#1525, memidx#260, memarg#169, laneidx#39}(`V128`_vectype, `%`_sz{i#56297}(8), x, ao, i)] +[visit_exp vectype#247] +[visit_id vectype#247] +[visit_exp sz#1525] +[visit_id sz#1525] +[visit_exp memidx#260] +[visit_id memidx#260] +[visit_exp memarg#169] +[visit_id memarg#169] +[visit_exp laneidx#39] +[visit_id laneidx#39] +[visit_exp (`V128`_vectype, `%`_sz{i#56297}(8), x, ao, i)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp `%`_sz{i#56297}(8)] +[visit_exp i#56297] +[visit_id i#56297] +[visit_exp (8)] +[visit_exp 8] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp i] +[visit_id i] +[visit_exp `%`_u32{i#56258}(88)] +[visit_exp i#56258] +[visit_id i#56258] +[visit_exp (88)] +[visit_exp 88] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +[visit_exp i] +[visit_id i] not free +[check_dims] ao i i#56346 i#56385 laneidx#41 memarg#171 memidx#262 sz#1527 vectype#249 x +dims \ = ao, i, i#56346, i#56385, laneidx#41, memarg#171, memidx#262, sz#1527, vectype#249, x +[visit_exp `VSTORE_LANE`_instr{vectype#249, sz#1527, memidx#262, memarg#171, laneidx#41}(`V128`_vectype, `%`_sz{i#56385}(16), x, ao, i)] +[visit_exp vectype#249] +[visit_id vectype#249] +[visit_exp sz#1527] +[visit_id sz#1527] +[visit_exp memidx#262] +[visit_id memidx#262] +[visit_exp memarg#171] +[visit_id memarg#171] +[visit_exp laneidx#41] +[visit_id laneidx#41] +[visit_exp (`V128`_vectype, `%`_sz{i#56385}(16), x, ao, i)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp `%`_sz{i#56385}(16)] +[visit_exp i#56385] +[visit_id i#56385] +[visit_exp (16)] +[visit_exp 16] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp i] +[visit_id i] +[visit_exp `%`_u32{i#56346}(89)] +[visit_exp i#56346] +[visit_id i#56346] +[visit_exp (89)] +[visit_exp 89] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +[visit_exp i] +[visit_id i] not free +[check_dims] ao i i#56434 i#56473 laneidx#43 memarg#173 memidx#264 sz#1529 vectype#251 x +dims \ = ao, i, i#56434, i#56473, laneidx#43, memarg#173, memidx#264, sz#1529, vectype#251, x +[visit_exp `VSTORE_LANE`_instr{vectype#251, sz#1529, memidx#264, memarg#173, laneidx#43}(`V128`_vectype, `%`_sz{i#56473}(32), x, ao, i)] +[visit_exp vectype#251] +[visit_id vectype#251] +[visit_exp sz#1529] +[visit_id sz#1529] +[visit_exp memidx#264] +[visit_id memidx#264] +[visit_exp memarg#173] +[visit_id memarg#173] +[visit_exp laneidx#43] +[visit_id laneidx#43] +[visit_exp (`V128`_vectype, `%`_sz{i#56473}(32), x, ao, i)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp `%`_sz{i#56473}(32)] +[visit_exp i#56473] +[visit_id i#56473] +[visit_exp (32)] +[visit_exp 32] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp i] +[visit_id i] +[visit_exp `%`_u32{i#56434}(90)] +[visit_exp i#56434] +[visit_id i#56434] +[visit_exp (90)] +[visit_exp 90] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +[visit_exp i] +[visit_id i] not free +[check_dims] ao i i#56522 i#56561 laneidx#45 memarg#175 memidx#266 sz#1531 vectype#253 x +dims \ = ao, i, i#56522, i#56561, laneidx#45, memarg#175, memidx#266, sz#1531, vectype#253, x +[visit_exp `VSTORE_LANE`_instr{vectype#253, sz#1531, memidx#266, memarg#175, laneidx#45}(`V128`_vectype, `%`_sz{i#56561}(64), x, ao, i)] +[visit_exp vectype#253] +[visit_id vectype#253] +[visit_exp sz#1531] +[visit_id sz#1531] +[visit_exp memidx#266] +[visit_id memidx#266] +[visit_exp memarg#175] +[visit_id memarg#175] +[visit_exp laneidx#45] +[visit_id laneidx#45] +[visit_exp (`V128`_vectype, `%`_sz{i#56561}(64), x, ao, i)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp `%`_sz{i#56561}(64)] +[visit_exp i#56561] +[visit_id i#56561] +[visit_exp (64)] +[visit_exp 64] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp i] +[visit_id i] +[visit_exp `%`_u32{i#56522}(91)] +[visit_exp i#56522] +[visit_id i#56522] +[visit_exp (91)] +[visit_exp 91] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +[visit_exp i] +[visit_id i] not free +[check_dims] ao i#56610 i#56650 i#56657 memarg#177 memidx#268 sz#1578 vectype?#25 x +dims \ = ao, i#56610, i#56650, i#56657, memarg#177, memidx#268, sz#1578, vectype?#25, x +[visit_exp `VLOAD`_instr{`vectype?#25`, memidx#268, memarg#177}(`V128`_vectype, ?(`ZERO`_vloadop_{sz#1578, i#56650}(`%`_sz{i#56657}(32))), x, ao)] +[visit_exp `vectype?#25`] +[visit_id vectype?#25] +[visit_exp memidx#268] +[visit_id memidx#268] +[visit_exp memarg#177] +[visit_id memarg#177] +[visit_exp (`V128`_vectype, ?(`ZERO`_vloadop_{sz#1578, i#56650}(`%`_sz{i#56657}(32))), x, ao)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp ?(`ZERO`_vloadop_{sz#1578, i#56650}(`%`_sz{i#56657}(32)))] +[visit_exp `ZERO`_vloadop_{sz#1578, i#56650}(`%`_sz{i#56657}(32))] +[visit_exp sz#1578] +[visit_id sz#1578] +[visit_exp i#56650] +[visit_id i#56650] +[visit_exp (`%`_sz{i#56657}(32))] +[visit_exp `%`_sz{i#56657}(32)] +[visit_exp i#56657] +[visit_id i#56657] +[visit_exp (32)] +[visit_exp 32] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp `%`_u32{i#56610}(92)] +[visit_exp i#56610] +[visit_id i#56610] +[visit_exp (92)] +[visit_exp 92] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +[check_dims] ao i#56694 i#56734 i#56741 memarg#179 memidx#270 sz#1625 vectype?#26 x +dims \ = ao, i#56694, i#56734, i#56741, memarg#179, memidx#270, sz#1625, vectype?#26, x +[visit_exp `VLOAD`_instr{`vectype?#26`, memidx#270, memarg#179}(`V128`_vectype, ?(`ZERO`_vloadop_{sz#1625, i#56734}(`%`_sz{i#56741}(64))), x, ao)] +[visit_exp `vectype?#26`] +[visit_id vectype?#26] +[visit_exp memidx#270] +[visit_id memidx#270] +[visit_exp memarg#179] +[visit_id memarg#179] +[visit_exp (`V128`_vectype, ?(`ZERO`_vloadop_{sz#1625, i#56734}(`%`_sz{i#56741}(64))), x, ao)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp ?(`ZERO`_vloadop_{sz#1625, i#56734}(`%`_sz{i#56741}(64)))] +[visit_exp `ZERO`_vloadop_{sz#1625, i#56734}(`%`_sz{i#56741}(64))] +[visit_exp sz#1625] +[visit_id sz#1625] +[visit_exp i#56734] +[visit_id i#56734] +[visit_exp (`%`_sz{i#56741}(64))] +[visit_exp `%`_sz{i#56741}(64)] +[visit_exp i#56741] +[visit_id i#56741] +[visit_exp (64)] +[visit_exp 64] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp `%`_u32{i#56694}(93)] +[visit_exp i#56694] +[visit_id i#56694] +[visit_exp (93)] +[visit_exp 93] +[visit_exp (x, ao)] +[visit_exp x] +[visit_id x] not free +[visit_exp ao] +[visit_id ao] not free +ps' = +[check_dims] +[check_dims] b i#56778 vectype#257 +dims \ = b, i#56778, vectype#257 +[visit_exp `VCONST`_instr{vectype#257}(`V128`_vectype, $inv_ibytes_(128, b^16{b <- `b*`}))] +[visit_exp vectype#257] +[visit_id vectype#257] +[visit_exp (`V128`_vectype, $inv_ibytes_(128, b^16{b <- `b*`}))] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp $inv_ibytes_(128, b^16{b <- `b*`})] +[visit_exp 128] +[visit_exp b^16{b <- `b*`}] +[scope_enter b] +[visit_exp b] +[visit_id b] not free +[visit_id b] not free +[scope_exit b] +[visit_exp 16] +[visit_exp `b*`] +[visit_id b*] no dims +[visit_id b*] +[visit_exp `%`_u32{i#56778}(12)] +[visit_exp i#56778] +[visit_id i#56778] +[visit_exp (12)] +[visit_exp 12] +[scope_enter b] +[visit_exp b] +[visit_id b] not free +[visit_id b] not free +[scope_exit b] +[visit_exp 16] +[visit_exp `b*`] +[visit_id b*] not free +[visit_id b*] no dims +ps' = +[check_dims] +[check_dims] bshape#13 dim#7789 i#56835 i#56884 i#56885 i#56888 i#56892 i#56899 i#56956 i#56957 l laneidx*#7 lanetype#7789 shape#845 shape#856 +dims \ = bshape#13, dim#7789, i#56835, i#56884, i#56885, i#56888, i#56892, i#56899, i#56956, i#56957, l, laneidx*#7, lanetype#7789, shape#845, shape#856 +[visit_exp `VSHUFFLE`_instr{bshape#13, `laneidx*#7`, i#56888, shape#845}(`%`_bshape{shape#856}(`%X%`_shape{lanetype#7789, dim#7789, i#56892}(`I8`_lanetype, `%`_dim{i#56899}(16))), `%`_laneidx{i#56957}(l!`%`_labelidx{i#56956}.0)^16{i#56956 <- `i#56956*`, i#56957 <- `i#56957*`, l <- `l*`})] +[visit_exp bshape#13] +[visit_id bshape#13] +[visit_exp `laneidx*#7`] +[visit_id laneidx*#7] +[visit_exp i#56888] +[visit_id i#56888] +[visit_exp shape#845] +[visit_id shape#845] +[visit_exp (`%`_bshape{shape#856}(`%X%`_shape{lanetype#7789, dim#7789, i#56892}(`I8`_lanetype, `%`_dim{i#56899}(16))), `%`_laneidx{i#56957}(l!`%`_labelidx{i#56956}.0)^16{i#56956 <- `i#56956*`, i#56957 <- `i#56957*`, l <- `l*`})] +[visit_exp `%`_bshape{shape#856}(`%X%`_shape{lanetype#7789, dim#7789, i#56892}(`I8`_lanetype, `%`_dim{i#56899}(16)))] +[visit_exp shape#856] +[visit_id shape#856] +[visit_exp (`%X%`_shape{lanetype#7789, dim#7789, i#56892}(`I8`_lanetype, `%`_dim{i#56899}(16)))] +[visit_exp `%X%`_shape{lanetype#7789, dim#7789, i#56892}(`I8`_lanetype, `%`_dim{i#56899}(16))] +[visit_exp lanetype#7789] +[visit_id lanetype#7789] +[visit_exp dim#7789] +[visit_id dim#7789] +[visit_exp i#56892] +[visit_id i#56892] +[visit_exp (`I8`_lanetype, `%`_dim{i#56899}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#56899}(16)] +[visit_exp i#56899] +[visit_id i#56899] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `%`_laneidx{i#56957}(l!`%`_labelidx{i#56956}.0)^16{i#56956 <- `i#56956*`, i#56957 <- `i#56957*`, l <- `l*`}] +[scope_enter i#56956] +[scope_enter i#56957] +[scope_enter l] +[visit_exp `%`_laneidx{i#56957}(l!`%`_labelidx{i#56956}.0)] +[visit_exp i#56957] +[visit_id i#56957] not free +[visit_exp (l!`%`_labelidx{i#56956}.0)] +[visit_exp l!`%`_labelidx{i#56956}.0] +[visit_exp l!`%`_labelidx{i#56956}] +[visit_exp l] +[visit_id l] not free +[visit_exp i#56956] +[visit_id i#56956] not free +[visit_id i#56956] not free +[visit_id i#56957] not free +[visit_id l] not free +[scope_exit l] +[scope_exit i#56957] +[scope_exit i#56956] +[visit_exp 16] +[visit_exp `i#56956*`] +[visit_id i#56956*] no dims +[visit_id i#56956*] +[visit_exp `i#56957*`] +[visit_id i#56957*] no dims +[visit_id i#56957*] +[visit_exp `l*`] +[visit_id l*] no dims +[visit_id l*] +[visit_exp `%`_u32{i#56835}(13)] +[visit_exp i#56835] +[visit_id i#56835] +[visit_exp (13)] +[visit_exp 13] +[scope_enter i#56884] +[scope_enter i#56885] +[scope_enter l] +[visit_exp `%`_laneidx{i#56885}(l!`%`_labelidx{i#56884}.0)] +[visit_exp i#56885] +[visit_id i#56885] not free +[visit_exp (l!`%`_labelidx{i#56884}.0)] +[visit_exp l!`%`_labelidx{i#56884}.0] +[visit_exp l!`%`_labelidx{i#56884}] +[visit_exp l] +[visit_id l] not free +[visit_exp i#56884] +[visit_id i#56884] not free +[visit_id i#56884] not free +[visit_id i#56885] not free +[visit_id l] not free +[scope_exit l] +[scope_exit i#56885] +[scope_exit i#56884] +[visit_exp 16] +[visit_exp `i#56884*`] +[visit_id i#56884*] no dims +[visit_id i#56884*] +[visit_exp `i#56885*`] +[visit_id i#56885*] no dims +[visit_id i#56885*] +[visit_exp `l*`] +[visit_id l*] not free +[visit_id l*] no dims +[check_dims] bshape#15 dim#7801 i#56981 i#56988 i#56995 lanetype#7801 shape#868 +dims \ = bshape#15, dim#7801, i#56981, i#56988, i#56995, lanetype#7801, shape#868 +[visit_exp `VSWIZZLOP`_instr{bshape#15}(`%`_bshape{shape#868}(`%X%`_shape{lanetype#7801, dim#7801, i#56988}(`I8`_lanetype, `%`_dim{i#56995}(16))), `SWIZZLE`_vswizzlop_)] +[visit_exp bshape#15] +[visit_id bshape#15] +[visit_exp (`%`_bshape{shape#868}(`%X%`_shape{lanetype#7801, dim#7801, i#56988}(`I8`_lanetype, `%`_dim{i#56995}(16))), `SWIZZLE`_vswizzlop_)] +[visit_exp `%`_bshape{shape#868}(`%X%`_shape{lanetype#7801, dim#7801, i#56988}(`I8`_lanetype, `%`_dim{i#56995}(16)))] +[visit_exp shape#868] +[visit_id shape#868] +[visit_exp (`%X%`_shape{lanetype#7801, dim#7801, i#56988}(`I8`_lanetype, `%`_dim{i#56995}(16)))] +[visit_exp `%X%`_shape{lanetype#7801, dim#7801, i#56988}(`I8`_lanetype, `%`_dim{i#56995}(16))] +[visit_exp lanetype#7801] +[visit_id lanetype#7801] +[visit_exp dim#7801] +[visit_id dim#7801] +[visit_exp i#56988] +[visit_id i#56988] +[visit_exp (`I8`_lanetype, `%`_dim{i#56995}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#56995}(16)] +[visit_exp i#56995] +[visit_id i#56995] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `SWIZZLE`_vswizzlop_] +[visit_exp ()] +[visit_exp `%`_u32{i#56981}(14)] +[visit_exp i#56981] +[visit_id i#56981] +[visit_exp (14)] +[visit_exp 14] +[check_dims] bshape#17 dim#7858 i#57093 i#57100 i#57107 lanetype#7858 shape#895 +dims \ = bshape#17, dim#7858, i#57093, i#57100, i#57107, lanetype#7858, shape#895 +[visit_exp `VSWIZZLOP`_instr{bshape#17}(`%`_bshape{shape#895}(`%X%`_shape{lanetype#7858, dim#7858, i#57100}(`I8`_lanetype, `%`_dim{i#57107}(16))), `RELAXED_SWIZZLE`_vswizzlop_)] +[visit_exp bshape#17] +[visit_id bshape#17] +[visit_exp (`%`_bshape{shape#895}(`%X%`_shape{lanetype#7858, dim#7858, i#57100}(`I8`_lanetype, `%`_dim{i#57107}(16))), `RELAXED_SWIZZLE`_vswizzlop_)] +[visit_exp `%`_bshape{shape#895}(`%X%`_shape{lanetype#7858, dim#7858, i#57100}(`I8`_lanetype, `%`_dim{i#57107}(16)))] +[visit_exp shape#895] +[visit_id shape#895] +[visit_exp (`%X%`_shape{lanetype#7858, dim#7858, i#57100}(`I8`_lanetype, `%`_dim{i#57107}(16)))] +[visit_exp `%X%`_shape{lanetype#7858, dim#7858, i#57100}(`I8`_lanetype, `%`_dim{i#57107}(16))] +[visit_exp lanetype#7858] +[visit_id lanetype#7858] +[visit_exp dim#7858] +[visit_id dim#7858] +[visit_exp i#57100] +[visit_id i#57100] +[visit_exp (`I8`_lanetype, `%`_dim{i#57107}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#57107}(16)] +[visit_exp i#57107] +[visit_id i#57107] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `RELAXED_SWIZZLE`_vswizzlop_] +[visit_exp ()] +[visit_exp `%`_u32{i#57093}(256)] +[visit_exp i#57093] +[visit_id i#57093] +[visit_exp (256)] +[visit_exp 256] +ps' = +[check_dims] +[check_dims] dim#7915 i#57205 i#57212 i#57219 lanetype#7915 shape#912 +dims \ = dim#7915, i#57205, i#57212, i#57219, lanetype#7915, shape#912 +[visit_exp `VSPLAT`_instr{shape#912}(`%X%`_shape{lanetype#7915, dim#7915, i#57212}(`I8`_lanetype, `%`_dim{i#57219}(16)))] +[visit_exp shape#912] +[visit_id shape#912] +[visit_exp (`%X%`_shape{lanetype#7915, dim#7915, i#57212}(`I8`_lanetype, `%`_dim{i#57219}(16)))] +[visit_exp `%X%`_shape{lanetype#7915, dim#7915, i#57212}(`I8`_lanetype, `%`_dim{i#57219}(16))] +[visit_exp lanetype#7915] +[visit_id lanetype#7915] +[visit_exp dim#7915] +[visit_id dim#7915] +[visit_exp i#57212] +[visit_id i#57212] +[visit_exp (`I8`_lanetype, `%`_dim{i#57219}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#57219}(16)] +[visit_exp i#57219] +[visit_id i#57219] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `%`_u32{i#57205}(15)] +[visit_exp i#57205] +[visit_id i#57205] +[visit_exp (15)] +[visit_exp 15] +[check_dims] dim#7927 i#57242 i#57249 i#57256 lanetype#7927 shape#914 +dims \ = dim#7927, i#57242, i#57249, i#57256, lanetype#7927, shape#914 +[visit_exp `VSPLAT`_instr{shape#914}(`%X%`_shape{lanetype#7927, dim#7927, i#57249}(`I16`_lanetype, `%`_dim{i#57256}(8)))] +[visit_exp shape#914] +[visit_id shape#914] +[visit_exp (`%X%`_shape{lanetype#7927, dim#7927, i#57249}(`I16`_lanetype, `%`_dim{i#57256}(8)))] +[visit_exp `%X%`_shape{lanetype#7927, dim#7927, i#57249}(`I16`_lanetype, `%`_dim{i#57256}(8))] +[visit_exp lanetype#7927] +[visit_id lanetype#7927] +[visit_exp dim#7927] +[visit_id dim#7927] +[visit_exp i#57249] +[visit_id i#57249] +[visit_exp (`I16`_lanetype, `%`_dim{i#57256}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#57256}(8)] +[visit_exp i#57256] +[visit_id i#57256] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `%`_u32{i#57242}(16)] +[visit_exp i#57242] +[visit_id i#57242] +[visit_exp (16)] +[visit_exp 16] +[check_dims] dim#7939 i#57279 i#57286 i#57293 lanetype#7939 shape#916 +dims \ = dim#7939, i#57279, i#57286, i#57293, lanetype#7939, shape#916 +[visit_exp `VSPLAT`_instr{shape#916}(`%X%`_shape{lanetype#7939, dim#7939, i#57286}(`I32`_lanetype, `%`_dim{i#57293}(4)))] +[visit_exp shape#916] +[visit_id shape#916] +[visit_exp (`%X%`_shape{lanetype#7939, dim#7939, i#57286}(`I32`_lanetype, `%`_dim{i#57293}(4)))] +[visit_exp `%X%`_shape{lanetype#7939, dim#7939, i#57286}(`I32`_lanetype, `%`_dim{i#57293}(4))] +[visit_exp lanetype#7939] +[visit_id lanetype#7939] +[visit_exp dim#7939] +[visit_id dim#7939] +[visit_exp i#57286] +[visit_id i#57286] +[visit_exp (`I32`_lanetype, `%`_dim{i#57293}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#57293}(4)] +[visit_exp i#57293] +[visit_id i#57293] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%`_u32{i#57279}(17)] +[visit_exp i#57279] +[visit_id i#57279] +[visit_exp (17)] +[visit_exp 17] +[check_dims] dim#7951 i#57316 i#57323 i#57330 lanetype#7951 shape#918 +dims \ = dim#7951, i#57316, i#57323, i#57330, lanetype#7951, shape#918 +[visit_exp `VSPLAT`_instr{shape#918}(`%X%`_shape{lanetype#7951, dim#7951, i#57323}(`I64`_lanetype, `%`_dim{i#57330}(2)))] +[visit_exp shape#918] +[visit_id shape#918] +[visit_exp (`%X%`_shape{lanetype#7951, dim#7951, i#57323}(`I64`_lanetype, `%`_dim{i#57330}(2)))] +[visit_exp `%X%`_shape{lanetype#7951, dim#7951, i#57323}(`I64`_lanetype, `%`_dim{i#57330}(2))] +[visit_exp lanetype#7951] +[visit_id lanetype#7951] +[visit_exp dim#7951] +[visit_id dim#7951] +[visit_exp i#57323] +[visit_id i#57323] +[visit_exp (`I64`_lanetype, `%`_dim{i#57330}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#57330}(2)] +[visit_exp i#57330] +[visit_id i#57330] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `%`_u32{i#57316}(18)] +[visit_exp i#57316] +[visit_id i#57316] +[visit_exp (18)] +[visit_exp 18] +[check_dims] dim#7963 i#57353 i#57360 i#57367 lanetype#7963 shape#920 +dims \ = dim#7963, i#57353, i#57360, i#57367, lanetype#7963, shape#920 +[visit_exp `VSPLAT`_instr{shape#920}(`%X%`_shape{lanetype#7963, dim#7963, i#57360}(`F32`_lanetype, `%`_dim{i#57367}(4)))] +[visit_exp shape#920] +[visit_id shape#920] +[visit_exp (`%X%`_shape{lanetype#7963, dim#7963, i#57360}(`F32`_lanetype, `%`_dim{i#57367}(4)))] +[visit_exp `%X%`_shape{lanetype#7963, dim#7963, i#57360}(`F32`_lanetype, `%`_dim{i#57367}(4))] +[visit_exp lanetype#7963] +[visit_id lanetype#7963] +[visit_exp dim#7963] +[visit_id dim#7963] +[visit_exp i#57360] +[visit_id i#57360] +[visit_exp (`F32`_lanetype, `%`_dim{i#57367}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#57367}(4)] +[visit_exp i#57367] +[visit_id i#57367] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%`_u32{i#57353}(19)] +[visit_exp i#57353] +[visit_id i#57353] +[visit_exp (19)] +[visit_exp 19] +[check_dims] dim#7975 i#57390 i#57397 i#57404 lanetype#7975 shape#922 +dims \ = dim#7975, i#57390, i#57397, i#57404, lanetype#7975, shape#922 +[visit_exp `VSPLAT`_instr{shape#922}(`%X%`_shape{lanetype#7975, dim#7975, i#57397}(`F64`_lanetype, `%`_dim{i#57404}(2)))] +[visit_exp shape#922] +[visit_id shape#922] +[visit_exp (`%X%`_shape{lanetype#7975, dim#7975, i#57397}(`F64`_lanetype, `%`_dim{i#57404}(2)))] +[visit_exp `%X%`_shape{lanetype#7975, dim#7975, i#57397}(`F64`_lanetype, `%`_dim{i#57404}(2))] +[visit_exp lanetype#7975] +[visit_id lanetype#7975] +[visit_exp dim#7975] +[visit_id dim#7975] +[visit_exp i#57397] +[visit_id i#57397] +[visit_exp (`F64`_lanetype, `%`_dim{i#57404}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#57404}(2)] +[visit_exp i#57404] +[visit_id i#57404] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `%`_u32{i#57390}(20)] +[visit_exp i#57390] +[visit_id i#57390] +[visit_exp (20)] +[visit_exp 20] +ps' = +[check_dims] +[check_dims] dim#7987 i#57427 i#57476 i#57477 i#57485 i#57492 i#57582 i#57583 l laneidx#47 lanetype#7987 shape#924 sx?#43 +dims \ = dim#7987, i#57427, i#57476, i#57477, i#57485, i#57492, i#57582, i#57583, l, laneidx#47, lanetype#7987, shape#924, sx?#43 +[visit_exp `VEXTRACT_LANE`_instr{shape#924, `sx?#43`, laneidx#47}(`%X%`_shape{lanetype#7987, dim#7987, i#57485}(`I8`_lanetype, `%`_dim{i#57492}(16)), ?(`S`_sx), `%`_laneidx{i#57583}(l!`%`_labelidx{i#57582}.0))] +[visit_exp shape#924] +[visit_id shape#924] +[visit_exp `sx?#43`] +[visit_id sx?#43] +[visit_exp laneidx#47] +[visit_id laneidx#47] +[visit_exp (`%X%`_shape{lanetype#7987, dim#7987, i#57485}(`I8`_lanetype, `%`_dim{i#57492}(16)), ?(`S`_sx), `%`_laneidx{i#57583}(l!`%`_labelidx{i#57582}.0))] +[visit_exp `%X%`_shape{lanetype#7987, dim#7987, i#57485}(`I8`_lanetype, `%`_dim{i#57492}(16))] +[visit_exp lanetype#7987] +[visit_id lanetype#7987] +[visit_exp dim#7987] +[visit_id dim#7987] +[visit_exp i#57485] +[visit_id i#57485] +[visit_exp (`I8`_lanetype, `%`_dim{i#57492}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#57492}(16)] +[visit_exp i#57492] +[visit_id i#57492] +[visit_exp (16)] +[visit_exp 16] +[visit_exp ?(`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_laneidx{i#57583}(l!`%`_labelidx{i#57582}.0)] +[visit_exp i#57583] +[visit_id i#57583] +[visit_exp (l!`%`_labelidx{i#57582}.0)] +[visit_exp l!`%`_labelidx{i#57582}.0] +[visit_exp l!`%`_labelidx{i#57582}] +[visit_exp l] +[visit_id l] +[visit_exp i#57582] +[visit_id i#57582] +[visit_exp `%`_u32{i#57427}(21)] +[visit_exp i#57427] +[visit_id i#57427] +[visit_exp (21)] +[visit_exp 21] +[visit_exp `%`_laneidx{i#57477}(l!`%`_labelidx{i#57476}.0)] +[visit_exp i#57477] +[visit_id i#57477] +[visit_exp (l!`%`_labelidx{i#57476}.0)] +[visit_exp l!`%`_labelidx{i#57476}.0] +[visit_exp l!`%`_labelidx{i#57476}] +[visit_exp l] +[visit_id l] not free +[visit_exp i#57476] +[visit_id i#57476] +[check_dims] dim#7999 i#57607 i#57656 i#57657 i#57665 i#57672 i#57762 i#57763 l laneidx#49 lanetype#7999 shape#926 sx?#45 +dims \ = dim#7999, i#57607, i#57656, i#57657, i#57665, i#57672, i#57762, i#57763, l, laneidx#49, lanetype#7999, shape#926, sx?#45 +[visit_exp `VEXTRACT_LANE`_instr{shape#926, `sx?#45`, laneidx#49}(`%X%`_shape{lanetype#7999, dim#7999, i#57665}(`I8`_lanetype, `%`_dim{i#57672}(16)), ?(`U`_sx), `%`_laneidx{i#57763}(l!`%`_labelidx{i#57762}.0))] +[visit_exp shape#926] +[visit_id shape#926] +[visit_exp `sx?#45`] +[visit_id sx?#45] +[visit_exp laneidx#49] +[visit_id laneidx#49] +[visit_exp (`%X%`_shape{lanetype#7999, dim#7999, i#57665}(`I8`_lanetype, `%`_dim{i#57672}(16)), ?(`U`_sx), `%`_laneidx{i#57763}(l!`%`_labelidx{i#57762}.0))] +[visit_exp `%X%`_shape{lanetype#7999, dim#7999, i#57665}(`I8`_lanetype, `%`_dim{i#57672}(16))] +[visit_exp lanetype#7999] +[visit_id lanetype#7999] +[visit_exp dim#7999] +[visit_id dim#7999] +[visit_exp i#57665] +[visit_id i#57665] +[visit_exp (`I8`_lanetype, `%`_dim{i#57672}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#57672}(16)] +[visit_exp i#57672] +[visit_id i#57672] +[visit_exp (16)] +[visit_exp 16] +[visit_exp ?(`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_laneidx{i#57763}(l!`%`_labelidx{i#57762}.0)] +[visit_exp i#57763] +[visit_id i#57763] +[visit_exp (l!`%`_labelidx{i#57762}.0)] +[visit_exp l!`%`_labelidx{i#57762}.0] +[visit_exp l!`%`_labelidx{i#57762}] +[visit_exp l] +[visit_id l] +[visit_exp i#57762] +[visit_id i#57762] +[visit_exp `%`_u32{i#57607}(22)] +[visit_exp i#57607] +[visit_id i#57607] +[visit_exp (22)] +[visit_exp 22] +[visit_exp `%`_laneidx{i#57657}(l!`%`_labelidx{i#57656}.0)] +[visit_exp i#57657] +[visit_id i#57657] +[visit_exp (l!`%`_labelidx{i#57656}.0)] +[visit_exp l!`%`_labelidx{i#57656}.0] +[visit_exp l!`%`_labelidx{i#57656}] +[visit_exp l] +[visit_id l] not free +[visit_exp i#57656] +[visit_id i#57656] +[check_dims] dim#8011 i#57787 i#57836 i#57837 i#57845 i#57852 i#57898 i#57899 l laneidx#51 lanetype#8011 shape#928 +dims \ = dim#8011, i#57787, i#57836, i#57837, i#57845, i#57852, i#57898, i#57899, l, laneidx#51, lanetype#8011, shape#928 +[visit_exp `VREPLACE_LANE`_instr{shape#928, laneidx#51}(`%X%`_shape{lanetype#8011, dim#8011, i#57845}(`I8`_lanetype, `%`_dim{i#57852}(16)), `%`_laneidx{i#57899}(l!`%`_labelidx{i#57898}.0))] +[visit_exp shape#928] +[visit_id shape#928] +[visit_exp laneidx#51] +[visit_id laneidx#51] +[visit_exp (`%X%`_shape{lanetype#8011, dim#8011, i#57845}(`I8`_lanetype, `%`_dim{i#57852}(16)), `%`_laneidx{i#57899}(l!`%`_labelidx{i#57898}.0))] +[visit_exp `%X%`_shape{lanetype#8011, dim#8011, i#57845}(`I8`_lanetype, `%`_dim{i#57852}(16))] +[visit_exp lanetype#8011] +[visit_id lanetype#8011] +[visit_exp dim#8011] +[visit_id dim#8011] +[visit_exp i#57845] +[visit_id i#57845] +[visit_exp (`I8`_lanetype, `%`_dim{i#57852}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#57852}(16)] +[visit_exp i#57852] +[visit_id i#57852] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `%`_laneidx{i#57899}(l!`%`_labelidx{i#57898}.0)] +[visit_exp i#57899] +[visit_id i#57899] +[visit_exp (l!`%`_labelidx{i#57898}.0)] +[visit_exp l!`%`_labelidx{i#57898}.0] +[visit_exp l!`%`_labelidx{i#57898}] +[visit_exp l] +[visit_id l] +[visit_exp i#57898] +[visit_id i#57898] +[visit_exp `%`_u32{i#57787}(23)] +[visit_exp i#57787] +[visit_id i#57787] +[visit_exp (23)] +[visit_exp 23] +[visit_exp `%`_laneidx{i#57837}(l!`%`_labelidx{i#57836}.0)] +[visit_exp i#57837] +[visit_id i#57837] +[visit_exp (l!`%`_labelidx{i#57836}.0)] +[visit_exp l!`%`_labelidx{i#57836}.0] +[visit_exp l!`%`_labelidx{i#57836}] +[visit_exp l] +[visit_id l] not free +[visit_exp i#57836] +[visit_id i#57836] +[check_dims] dim#8023 i#57923 i#57972 i#57973 i#57981 i#57988 i#58078 i#58079 l laneidx#53 lanetype#8023 shape#930 sx?#47 +dims \ = dim#8023, i#57923, i#57972, i#57973, i#57981, i#57988, i#58078, i#58079, l, laneidx#53, lanetype#8023, shape#930, sx?#47 +[visit_exp `VEXTRACT_LANE`_instr{shape#930, `sx?#47`, laneidx#53}(`%X%`_shape{lanetype#8023, dim#8023, i#57981}(`I16`_lanetype, `%`_dim{i#57988}(8)), ?(`S`_sx), `%`_laneidx{i#58079}(l!`%`_labelidx{i#58078}.0))] +[visit_exp shape#930] +[visit_id shape#930] +[visit_exp `sx?#47`] +[visit_id sx?#47] +[visit_exp laneidx#53] +[visit_id laneidx#53] +[visit_exp (`%X%`_shape{lanetype#8023, dim#8023, i#57981}(`I16`_lanetype, `%`_dim{i#57988}(8)), ?(`S`_sx), `%`_laneidx{i#58079}(l!`%`_labelidx{i#58078}.0))] +[visit_exp `%X%`_shape{lanetype#8023, dim#8023, i#57981}(`I16`_lanetype, `%`_dim{i#57988}(8))] +[visit_exp lanetype#8023] +[visit_id lanetype#8023] +[visit_exp dim#8023] +[visit_id dim#8023] +[visit_exp i#57981] +[visit_id i#57981] +[visit_exp (`I16`_lanetype, `%`_dim{i#57988}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#57988}(8)] +[visit_exp i#57988] +[visit_id i#57988] +[visit_exp (8)] +[visit_exp 8] +[visit_exp ?(`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_laneidx{i#58079}(l!`%`_labelidx{i#58078}.0)] +[visit_exp i#58079] +[visit_id i#58079] +[visit_exp (l!`%`_labelidx{i#58078}.0)] +[visit_exp l!`%`_labelidx{i#58078}.0] +[visit_exp l!`%`_labelidx{i#58078}] +[visit_exp l] +[visit_id l] +[visit_exp i#58078] +[visit_id i#58078] +[visit_exp `%`_u32{i#57923}(24)] +[visit_exp i#57923] +[visit_id i#57923] +[visit_exp (24)] +[visit_exp 24] +[visit_exp `%`_laneidx{i#57973}(l!`%`_labelidx{i#57972}.0)] +[visit_exp i#57973] +[visit_id i#57973] +[visit_exp (l!`%`_labelidx{i#57972}.0)] +[visit_exp l!`%`_labelidx{i#57972}.0] +[visit_exp l!`%`_labelidx{i#57972}] +[visit_exp l] +[visit_id l] not free +[visit_exp i#57972] +[visit_id i#57972] +[check_dims] dim#8035 i#58103 i#58152 i#58153 i#58161 i#58168 i#58258 i#58259 l laneidx#55 lanetype#8035 shape#932 sx?#49 +dims \ = dim#8035, i#58103, i#58152, i#58153, i#58161, i#58168, i#58258, i#58259, l, laneidx#55, lanetype#8035, shape#932, sx?#49 +[visit_exp `VEXTRACT_LANE`_instr{shape#932, `sx?#49`, laneidx#55}(`%X%`_shape{lanetype#8035, dim#8035, i#58161}(`I16`_lanetype, `%`_dim{i#58168}(8)), ?(`U`_sx), `%`_laneidx{i#58259}(l!`%`_labelidx{i#58258}.0))] +[visit_exp shape#932] +[visit_id shape#932] +[visit_exp `sx?#49`] +[visit_id sx?#49] +[visit_exp laneidx#55] +[visit_id laneidx#55] +[visit_exp (`%X%`_shape{lanetype#8035, dim#8035, i#58161}(`I16`_lanetype, `%`_dim{i#58168}(8)), ?(`U`_sx), `%`_laneidx{i#58259}(l!`%`_labelidx{i#58258}.0))] +[visit_exp `%X%`_shape{lanetype#8035, dim#8035, i#58161}(`I16`_lanetype, `%`_dim{i#58168}(8))] +[visit_exp lanetype#8035] +[visit_id lanetype#8035] +[visit_exp dim#8035] +[visit_id dim#8035] +[visit_exp i#58161] +[visit_id i#58161] +[visit_exp (`I16`_lanetype, `%`_dim{i#58168}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#58168}(8)] +[visit_exp i#58168] +[visit_id i#58168] +[visit_exp (8)] +[visit_exp 8] +[visit_exp ?(`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_laneidx{i#58259}(l!`%`_labelidx{i#58258}.0)] +[visit_exp i#58259] +[visit_id i#58259] +[visit_exp (l!`%`_labelidx{i#58258}.0)] +[visit_exp l!`%`_labelidx{i#58258}.0] +[visit_exp l!`%`_labelidx{i#58258}] +[visit_exp l] +[visit_id l] +[visit_exp i#58258] +[visit_id i#58258] +[visit_exp `%`_u32{i#58103}(25)] +[visit_exp i#58103] +[visit_id i#58103] +[visit_exp (25)] +[visit_exp 25] +[visit_exp `%`_laneidx{i#58153}(l!`%`_labelidx{i#58152}.0)] +[visit_exp i#58153] +[visit_id i#58153] +[visit_exp (l!`%`_labelidx{i#58152}.0)] +[visit_exp l!`%`_labelidx{i#58152}.0] +[visit_exp l!`%`_labelidx{i#58152}] +[visit_exp l] +[visit_id l] not free +[visit_exp i#58152] +[visit_id i#58152] +[check_dims] dim#8047 i#58283 i#58332 i#58333 i#58341 i#58348 i#58394 i#58395 l laneidx#57 lanetype#8047 shape#934 +dims \ = dim#8047, i#58283, i#58332, i#58333, i#58341, i#58348, i#58394, i#58395, l, laneidx#57, lanetype#8047, shape#934 +[visit_exp `VREPLACE_LANE`_instr{shape#934, laneidx#57}(`%X%`_shape{lanetype#8047, dim#8047, i#58341}(`I16`_lanetype, `%`_dim{i#58348}(8)), `%`_laneidx{i#58395}(l!`%`_labelidx{i#58394}.0))] +[visit_exp shape#934] +[visit_id shape#934] +[visit_exp laneidx#57] +[visit_id laneidx#57] +[visit_exp (`%X%`_shape{lanetype#8047, dim#8047, i#58341}(`I16`_lanetype, `%`_dim{i#58348}(8)), `%`_laneidx{i#58395}(l!`%`_labelidx{i#58394}.0))] +[visit_exp `%X%`_shape{lanetype#8047, dim#8047, i#58341}(`I16`_lanetype, `%`_dim{i#58348}(8))] +[visit_exp lanetype#8047] +[visit_id lanetype#8047] +[visit_exp dim#8047] +[visit_id dim#8047] +[visit_exp i#58341] +[visit_id i#58341] +[visit_exp (`I16`_lanetype, `%`_dim{i#58348}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#58348}(8)] +[visit_exp i#58348] +[visit_id i#58348] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `%`_laneidx{i#58395}(l!`%`_labelidx{i#58394}.0)] +[visit_exp i#58395] +[visit_id i#58395] +[visit_exp (l!`%`_labelidx{i#58394}.0)] +[visit_exp l!`%`_labelidx{i#58394}.0] +[visit_exp l!`%`_labelidx{i#58394}] +[visit_exp l] +[visit_id l] +[visit_exp i#58394] +[visit_id i#58394] +[visit_exp `%`_u32{i#58283}(26)] +[visit_exp i#58283] +[visit_id i#58283] +[visit_exp (26)] +[visit_exp 26] +[visit_exp `%`_laneidx{i#58333}(l!`%`_labelidx{i#58332}.0)] +[visit_exp i#58333] +[visit_id i#58333] +[visit_exp (l!`%`_labelidx{i#58332}.0)] +[visit_exp l!`%`_labelidx{i#58332}.0] +[visit_exp l!`%`_labelidx{i#58332}] +[visit_exp l] +[visit_id l] not free +[visit_exp i#58332] +[visit_id i#58332] +[check_dims] dim#8059 i#58419 i#58468 i#58469 i#58477 i#58484 i#58530 i#58531 l laneidx#59 lanetype#8059 shape#936 sx?#51 +dims \ = dim#8059, i#58419, i#58468, i#58469, i#58477, i#58484, i#58530, i#58531, l, laneidx#59, lanetype#8059, shape#936, sx?#51 +[visit_exp `VEXTRACT_LANE`_instr{shape#936, `sx?#51`, laneidx#59}(`%X%`_shape{lanetype#8059, dim#8059, i#58477}(`I32`_lanetype, `%`_dim{i#58484}(4)), ?(), `%`_laneidx{i#58531}(l!`%`_labelidx{i#58530}.0))] +[visit_exp shape#936] +[visit_id shape#936] +[visit_exp `sx?#51`] +[visit_id sx?#51] +[visit_exp laneidx#59] +[visit_id laneidx#59] +[visit_exp (`%X%`_shape{lanetype#8059, dim#8059, i#58477}(`I32`_lanetype, `%`_dim{i#58484}(4)), ?(), `%`_laneidx{i#58531}(l!`%`_labelidx{i#58530}.0))] +[visit_exp `%X%`_shape{lanetype#8059, dim#8059, i#58477}(`I32`_lanetype, `%`_dim{i#58484}(4))] +[visit_exp lanetype#8059] +[visit_id lanetype#8059] +[visit_exp dim#8059] +[visit_id dim#8059] +[visit_exp i#58477] +[visit_id i#58477] +[visit_exp (`I32`_lanetype, `%`_dim{i#58484}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#58484}(4)] +[visit_exp i#58484] +[visit_id i#58484] +[visit_exp (4)] +[visit_exp 4] +[visit_exp ?()] +[visit_exp `%`_laneidx{i#58531}(l!`%`_labelidx{i#58530}.0)] +[visit_exp i#58531] +[visit_id i#58531] +[visit_exp (l!`%`_labelidx{i#58530}.0)] +[visit_exp l!`%`_labelidx{i#58530}.0] +[visit_exp l!`%`_labelidx{i#58530}] +[visit_exp l] +[visit_id l] +[visit_exp i#58530] +[visit_id i#58530] +[visit_exp `%`_u32{i#58419}(27)] +[visit_exp i#58419] +[visit_id i#58419] +[visit_exp (27)] +[visit_exp 27] +[visit_exp `%`_laneidx{i#58469}(l!`%`_labelidx{i#58468}.0)] +[visit_exp i#58469] +[visit_id i#58469] +[visit_exp (l!`%`_labelidx{i#58468}.0)] +[visit_exp l!`%`_labelidx{i#58468}.0] +[visit_exp l!`%`_labelidx{i#58468}] +[visit_exp l] +[visit_id l] not free +[visit_exp i#58468] +[visit_id i#58468] +[check_dims] dim#8071 i#58555 i#58604 i#58605 i#58613 i#58620 i#58666 i#58667 l laneidx#61 lanetype#8071 shape#938 +dims \ = dim#8071, i#58555, i#58604, i#58605, i#58613, i#58620, i#58666, i#58667, l, laneidx#61, lanetype#8071, shape#938 +[visit_exp `VREPLACE_LANE`_instr{shape#938, laneidx#61}(`%X%`_shape{lanetype#8071, dim#8071, i#58613}(`I32`_lanetype, `%`_dim{i#58620}(4)), `%`_laneidx{i#58667}(l!`%`_labelidx{i#58666}.0))] +[visit_exp shape#938] +[visit_id shape#938] +[visit_exp laneidx#61] +[visit_id laneidx#61] +[visit_exp (`%X%`_shape{lanetype#8071, dim#8071, i#58613}(`I32`_lanetype, `%`_dim{i#58620}(4)), `%`_laneidx{i#58667}(l!`%`_labelidx{i#58666}.0))] +[visit_exp `%X%`_shape{lanetype#8071, dim#8071, i#58613}(`I32`_lanetype, `%`_dim{i#58620}(4))] +[visit_exp lanetype#8071] +[visit_id lanetype#8071] +[visit_exp dim#8071] +[visit_id dim#8071] +[visit_exp i#58613] +[visit_id i#58613] +[visit_exp (`I32`_lanetype, `%`_dim{i#58620}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#58620}(4)] +[visit_exp i#58620] +[visit_id i#58620] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%`_laneidx{i#58667}(l!`%`_labelidx{i#58666}.0)] +[visit_exp i#58667] +[visit_id i#58667] +[visit_exp (l!`%`_labelidx{i#58666}.0)] +[visit_exp l!`%`_labelidx{i#58666}.0] +[visit_exp l!`%`_labelidx{i#58666}] +[visit_exp l] +[visit_id l] +[visit_exp i#58666] +[visit_id i#58666] +[visit_exp `%`_u32{i#58555}(28)] +[visit_exp i#58555] +[visit_id i#58555] +[visit_exp (28)] +[visit_exp 28] +[visit_exp `%`_laneidx{i#58605}(l!`%`_labelidx{i#58604}.0)] +[visit_exp i#58605] +[visit_id i#58605] +[visit_exp (l!`%`_labelidx{i#58604}.0)] +[visit_exp l!`%`_labelidx{i#58604}.0] +[visit_exp l!`%`_labelidx{i#58604}] +[visit_exp l] +[visit_id l] not free +[visit_exp i#58604] +[visit_id i#58604] +[check_dims] dim#8083 i#58691 i#58740 i#58741 i#58749 i#58756 i#58802 i#58803 l laneidx#63 lanetype#8083 shape#940 sx?#53 +dims \ = dim#8083, i#58691, i#58740, i#58741, i#58749, i#58756, i#58802, i#58803, l, laneidx#63, lanetype#8083, shape#940, sx?#53 +[visit_exp `VEXTRACT_LANE`_instr{shape#940, `sx?#53`, laneidx#63}(`%X%`_shape{lanetype#8083, dim#8083, i#58749}(`I64`_lanetype, `%`_dim{i#58756}(2)), ?(), `%`_laneidx{i#58803}(l!`%`_labelidx{i#58802}.0))] +[visit_exp shape#940] +[visit_id shape#940] +[visit_exp `sx?#53`] +[visit_id sx?#53] +[visit_exp laneidx#63] +[visit_id laneidx#63] +[visit_exp (`%X%`_shape{lanetype#8083, dim#8083, i#58749}(`I64`_lanetype, `%`_dim{i#58756}(2)), ?(), `%`_laneidx{i#58803}(l!`%`_labelidx{i#58802}.0))] +[visit_exp `%X%`_shape{lanetype#8083, dim#8083, i#58749}(`I64`_lanetype, `%`_dim{i#58756}(2))] +[visit_exp lanetype#8083] +[visit_id lanetype#8083] +[visit_exp dim#8083] +[visit_id dim#8083] +[visit_exp i#58749] +[visit_id i#58749] +[visit_exp (`I64`_lanetype, `%`_dim{i#58756}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#58756}(2)] +[visit_exp i#58756] +[visit_id i#58756] +[visit_exp (2)] +[visit_exp 2] +[visit_exp ?()] +[visit_exp `%`_laneidx{i#58803}(l!`%`_labelidx{i#58802}.0)] +[visit_exp i#58803] +[visit_id i#58803] +[visit_exp (l!`%`_labelidx{i#58802}.0)] +[visit_exp l!`%`_labelidx{i#58802}.0] +[visit_exp l!`%`_labelidx{i#58802}] +[visit_exp l] +[visit_id l] +[visit_exp i#58802] +[visit_id i#58802] +[visit_exp `%`_u32{i#58691}(29)] +[visit_exp i#58691] +[visit_id i#58691] +[visit_exp (29)] +[visit_exp 29] +[visit_exp `%`_laneidx{i#58741}(l!`%`_labelidx{i#58740}.0)] +[visit_exp i#58741] +[visit_id i#58741] +[visit_exp (l!`%`_labelidx{i#58740}.0)] +[visit_exp l!`%`_labelidx{i#58740}.0] +[visit_exp l!`%`_labelidx{i#58740}] +[visit_exp l] +[visit_id l] not free +[visit_exp i#58740] +[visit_id i#58740] +[check_dims] dim#8095 i#58827 i#58876 i#58877 i#58885 i#58892 i#58938 i#58939 l laneidx#65 lanetype#8095 shape#942 +dims \ = dim#8095, i#58827, i#58876, i#58877, i#58885, i#58892, i#58938, i#58939, l, laneidx#65, lanetype#8095, shape#942 +[visit_exp `VREPLACE_LANE`_instr{shape#942, laneidx#65}(`%X%`_shape{lanetype#8095, dim#8095, i#58885}(`I64`_lanetype, `%`_dim{i#58892}(2)), `%`_laneidx{i#58939}(l!`%`_labelidx{i#58938}.0))] +[visit_exp shape#942] +[visit_id shape#942] +[visit_exp laneidx#65] +[visit_id laneidx#65] +[visit_exp (`%X%`_shape{lanetype#8095, dim#8095, i#58885}(`I64`_lanetype, `%`_dim{i#58892}(2)), `%`_laneidx{i#58939}(l!`%`_labelidx{i#58938}.0))] +[visit_exp `%X%`_shape{lanetype#8095, dim#8095, i#58885}(`I64`_lanetype, `%`_dim{i#58892}(2))] +[visit_exp lanetype#8095] +[visit_id lanetype#8095] +[visit_exp dim#8095] +[visit_id dim#8095] +[visit_exp i#58885] +[visit_id i#58885] +[visit_exp (`I64`_lanetype, `%`_dim{i#58892}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#58892}(2)] +[visit_exp i#58892] +[visit_id i#58892] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `%`_laneidx{i#58939}(l!`%`_labelidx{i#58938}.0)] +[visit_exp i#58939] +[visit_id i#58939] +[visit_exp (l!`%`_labelidx{i#58938}.0)] +[visit_exp l!`%`_labelidx{i#58938}.0] +[visit_exp l!`%`_labelidx{i#58938}] +[visit_exp l] +[visit_id l] +[visit_exp i#58938] +[visit_id i#58938] +[visit_exp `%`_u32{i#58827}(30)] +[visit_exp i#58827] +[visit_id i#58827] +[visit_exp (30)] +[visit_exp 30] +[visit_exp `%`_laneidx{i#58877}(l!`%`_labelidx{i#58876}.0)] +[visit_exp i#58877] +[visit_id i#58877] +[visit_exp (l!`%`_labelidx{i#58876}.0)] +[visit_exp l!`%`_labelidx{i#58876}.0] +[visit_exp l!`%`_labelidx{i#58876}] +[visit_exp l] +[visit_id l] not free +[visit_exp i#58876] +[visit_id i#58876] +[check_dims] dim#8107 i#58963 i#59012 i#59013 i#59021 i#59028 i#59074 i#59075 l laneidx#67 lanetype#8107 shape#944 sx?#55 +dims \ = dim#8107, i#58963, i#59012, i#59013, i#59021, i#59028, i#59074, i#59075, l, laneidx#67, lanetype#8107, shape#944, sx?#55 +[visit_exp `VEXTRACT_LANE`_instr{shape#944, `sx?#55`, laneidx#67}(`%X%`_shape{lanetype#8107, dim#8107, i#59021}(`F32`_lanetype, `%`_dim{i#59028}(4)), ?(), `%`_laneidx{i#59075}(l!`%`_labelidx{i#59074}.0))] +[visit_exp shape#944] +[visit_id shape#944] +[visit_exp `sx?#55`] +[visit_id sx?#55] +[visit_exp laneidx#67] +[visit_id laneidx#67] +[visit_exp (`%X%`_shape{lanetype#8107, dim#8107, i#59021}(`F32`_lanetype, `%`_dim{i#59028}(4)), ?(), `%`_laneidx{i#59075}(l!`%`_labelidx{i#59074}.0))] +[visit_exp `%X%`_shape{lanetype#8107, dim#8107, i#59021}(`F32`_lanetype, `%`_dim{i#59028}(4))] +[visit_exp lanetype#8107] +[visit_id lanetype#8107] +[visit_exp dim#8107] +[visit_id dim#8107] +[visit_exp i#59021] +[visit_id i#59021] +[visit_exp (`F32`_lanetype, `%`_dim{i#59028}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#59028}(4)] +[visit_exp i#59028] +[visit_id i#59028] +[visit_exp (4)] +[visit_exp 4] +[visit_exp ?()] +[visit_exp `%`_laneidx{i#59075}(l!`%`_labelidx{i#59074}.0)] +[visit_exp i#59075] +[visit_id i#59075] +[visit_exp (l!`%`_labelidx{i#59074}.0)] +[visit_exp l!`%`_labelidx{i#59074}.0] +[visit_exp l!`%`_labelidx{i#59074}] +[visit_exp l] +[visit_id l] +[visit_exp i#59074] +[visit_id i#59074] +[visit_exp `%`_u32{i#58963}(31)] +[visit_exp i#58963] +[visit_id i#58963] +[visit_exp (31)] +[visit_exp 31] +[visit_exp `%`_laneidx{i#59013}(l!`%`_labelidx{i#59012}.0)] +[visit_exp i#59013] +[visit_id i#59013] +[visit_exp (l!`%`_labelidx{i#59012}.0)] +[visit_exp l!`%`_labelidx{i#59012}.0] +[visit_exp l!`%`_labelidx{i#59012}] +[visit_exp l] +[visit_id l] not free +[visit_exp i#59012] +[visit_id i#59012] +[check_dims] dim#8119 i#59099 i#59148 i#59149 i#59157 i#59164 i#59210 i#59211 l laneidx#69 lanetype#8119 shape#946 +dims \ = dim#8119, i#59099, i#59148, i#59149, i#59157, i#59164, i#59210, i#59211, l, laneidx#69, lanetype#8119, shape#946 +[visit_exp `VREPLACE_LANE`_instr{shape#946, laneidx#69}(`%X%`_shape{lanetype#8119, dim#8119, i#59157}(`F32`_lanetype, `%`_dim{i#59164}(4)), `%`_laneidx{i#59211}(l!`%`_labelidx{i#59210}.0))] +[visit_exp shape#946] +[visit_id shape#946] +[visit_exp laneidx#69] +[visit_id laneidx#69] +[visit_exp (`%X%`_shape{lanetype#8119, dim#8119, i#59157}(`F32`_lanetype, `%`_dim{i#59164}(4)), `%`_laneidx{i#59211}(l!`%`_labelidx{i#59210}.0))] +[visit_exp `%X%`_shape{lanetype#8119, dim#8119, i#59157}(`F32`_lanetype, `%`_dim{i#59164}(4))] +[visit_exp lanetype#8119] +[visit_id lanetype#8119] +[visit_exp dim#8119] +[visit_id dim#8119] +[visit_exp i#59157] +[visit_id i#59157] +[visit_exp (`F32`_lanetype, `%`_dim{i#59164}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#59164}(4)] +[visit_exp i#59164] +[visit_id i#59164] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%`_laneidx{i#59211}(l!`%`_labelidx{i#59210}.0)] +[visit_exp i#59211] +[visit_id i#59211] +[visit_exp (l!`%`_labelidx{i#59210}.0)] +[visit_exp l!`%`_labelidx{i#59210}.0] +[visit_exp l!`%`_labelidx{i#59210}] +[visit_exp l] +[visit_id l] +[visit_exp i#59210] +[visit_id i#59210] +[visit_exp `%`_u32{i#59099}(32)] +[visit_exp i#59099] +[visit_id i#59099] +[visit_exp (32)] +[visit_exp 32] +[visit_exp `%`_laneidx{i#59149}(l!`%`_labelidx{i#59148}.0)] +[visit_exp i#59149] +[visit_id i#59149] +[visit_exp (l!`%`_labelidx{i#59148}.0)] +[visit_exp l!`%`_labelidx{i#59148}.0] +[visit_exp l!`%`_labelidx{i#59148}] +[visit_exp l] +[visit_id l] not free +[visit_exp i#59148] +[visit_id i#59148] +[check_dims] dim#8131 i#59235 i#59284 i#59285 i#59293 i#59300 i#59346 i#59347 l laneidx#71 lanetype#8131 shape#948 sx?#57 +dims \ = dim#8131, i#59235, i#59284, i#59285, i#59293, i#59300, i#59346, i#59347, l, laneidx#71, lanetype#8131, shape#948, sx?#57 +[visit_exp `VEXTRACT_LANE`_instr{shape#948, `sx?#57`, laneidx#71}(`%X%`_shape{lanetype#8131, dim#8131, i#59293}(`F64`_lanetype, `%`_dim{i#59300}(2)), ?(), `%`_laneidx{i#59347}(l!`%`_labelidx{i#59346}.0))] +[visit_exp shape#948] +[visit_id shape#948] +[visit_exp `sx?#57`] +[visit_id sx?#57] +[visit_exp laneidx#71] +[visit_id laneidx#71] +[visit_exp (`%X%`_shape{lanetype#8131, dim#8131, i#59293}(`F64`_lanetype, `%`_dim{i#59300}(2)), ?(), `%`_laneidx{i#59347}(l!`%`_labelidx{i#59346}.0))] +[visit_exp `%X%`_shape{lanetype#8131, dim#8131, i#59293}(`F64`_lanetype, `%`_dim{i#59300}(2))] +[visit_exp lanetype#8131] +[visit_id lanetype#8131] +[visit_exp dim#8131] +[visit_id dim#8131] +[visit_exp i#59293] +[visit_id i#59293] +[visit_exp (`F64`_lanetype, `%`_dim{i#59300}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#59300}(2)] +[visit_exp i#59300] +[visit_id i#59300] +[visit_exp (2)] +[visit_exp 2] +[visit_exp ?()] +[visit_exp `%`_laneidx{i#59347}(l!`%`_labelidx{i#59346}.0)] +[visit_exp i#59347] +[visit_id i#59347] +[visit_exp (l!`%`_labelidx{i#59346}.0)] +[visit_exp l!`%`_labelidx{i#59346}.0] +[visit_exp l!`%`_labelidx{i#59346}] +[visit_exp l] +[visit_id l] +[visit_exp i#59346] +[visit_id i#59346] +[visit_exp `%`_u32{i#59235}(33)] +[visit_exp i#59235] +[visit_id i#59235] +[visit_exp (33)] +[visit_exp 33] +[visit_exp `%`_laneidx{i#59285}(l!`%`_labelidx{i#59284}.0)] +[visit_exp i#59285] +[visit_id i#59285] +[visit_exp (l!`%`_labelidx{i#59284}.0)] +[visit_exp l!`%`_labelidx{i#59284}.0] +[visit_exp l!`%`_labelidx{i#59284}] +[visit_exp l] +[visit_id l] not free +[visit_exp i#59284] +[visit_id i#59284] +[check_dims] dim#8143 i#59371 i#59420 i#59421 i#59429 i#59436 i#59482 i#59483 l laneidx#73 lanetype#8143 shape#950 +dims \ = dim#8143, i#59371, i#59420, i#59421, i#59429, i#59436, i#59482, i#59483, l, laneidx#73, lanetype#8143, shape#950 +[visit_exp `VREPLACE_LANE`_instr{shape#950, laneidx#73}(`%X%`_shape{lanetype#8143, dim#8143, i#59429}(`F64`_lanetype, `%`_dim{i#59436}(2)), `%`_laneidx{i#59483}(l!`%`_labelidx{i#59482}.0))] +[visit_exp shape#950] +[visit_id shape#950] +[visit_exp laneidx#73] +[visit_id laneidx#73] +[visit_exp (`%X%`_shape{lanetype#8143, dim#8143, i#59429}(`F64`_lanetype, `%`_dim{i#59436}(2)), `%`_laneidx{i#59483}(l!`%`_labelidx{i#59482}.0))] +[visit_exp `%X%`_shape{lanetype#8143, dim#8143, i#59429}(`F64`_lanetype, `%`_dim{i#59436}(2))] +[visit_exp lanetype#8143] +[visit_id lanetype#8143] +[visit_exp dim#8143] +[visit_id dim#8143] +[visit_exp i#59429] +[visit_id i#59429] +[visit_exp (`F64`_lanetype, `%`_dim{i#59436}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#59436}(2)] +[visit_exp i#59436] +[visit_id i#59436] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `%`_laneidx{i#59483}(l!`%`_labelidx{i#59482}.0)] +[visit_exp i#59483] +[visit_id i#59483] +[visit_exp (l!`%`_labelidx{i#59482}.0)] +[visit_exp l!`%`_labelidx{i#59482}.0] +[visit_exp l!`%`_labelidx{i#59482}] +[visit_exp l] +[visit_id l] +[visit_exp i#59482] +[visit_id i#59482] +[visit_exp `%`_u32{i#59371}(34)] +[visit_exp i#59371] +[visit_id i#59371] +[visit_exp (34)] +[visit_exp 34] +[visit_exp `%`_laneidx{i#59421}(l!`%`_labelidx{i#59420}.0)] +[visit_exp i#59421] +[visit_id i#59421] +[visit_exp (l!`%`_labelidx{i#59420}.0)] +[visit_exp l!`%`_labelidx{i#59420}.0] +[visit_exp l!`%`_labelidx{i#59420}] +[visit_exp l] +[visit_id l] not free +[visit_exp i#59420] +[visit_id i#59420] +ps' = +[check_dims] +[check_dims] dim#8155 i#59507 i#59514 i#59521 lanetype#8155 shape#952 +dims \ = dim#8155, i#59507, i#59514, i#59521, lanetype#8155, shape#952 +[visit_exp `VRELOP`_instr{shape#952}(`%X%`_shape{lanetype#8155, dim#8155, i#59514}(`I8`_lanetype, `%`_dim{i#59521}(16)), `EQ`_vrelop_)] +[visit_exp shape#952] +[visit_id shape#952] +[visit_exp (`%X%`_shape{lanetype#8155, dim#8155, i#59514}(`I8`_lanetype, `%`_dim{i#59521}(16)), `EQ`_vrelop_)] +[visit_exp `%X%`_shape{lanetype#8155, dim#8155, i#59514}(`I8`_lanetype, `%`_dim{i#59521}(16))] +[visit_exp lanetype#8155] +[visit_id lanetype#8155] +[visit_exp dim#8155] +[visit_id dim#8155] +[visit_exp i#59514] +[visit_id i#59514] +[visit_exp (`I8`_lanetype, `%`_dim{i#59521}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#59521}(16)] +[visit_exp i#59521] +[visit_id i#59521] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `EQ`_vrelop_] +[visit_exp ()] +[visit_exp `%`_u32{i#59507}(35)] +[visit_exp i#59507] +[visit_id i#59507] +[visit_exp (35)] +[visit_exp 35] +[check_dims] dim#8182 i#59589 i#59596 i#59603 lanetype#8182 shape#954 +dims \ = dim#8182, i#59589, i#59596, i#59603, lanetype#8182, shape#954 +[visit_exp `VRELOP`_instr{shape#954}(`%X%`_shape{lanetype#8182, dim#8182, i#59596}(`I8`_lanetype, `%`_dim{i#59603}(16)), `NE`_vrelop_)] +[visit_exp shape#954] +[visit_id shape#954] +[visit_exp (`%X%`_shape{lanetype#8182, dim#8182, i#59596}(`I8`_lanetype, `%`_dim{i#59603}(16)), `NE`_vrelop_)] +[visit_exp `%X%`_shape{lanetype#8182, dim#8182, i#59596}(`I8`_lanetype, `%`_dim{i#59603}(16))] +[visit_exp lanetype#8182] +[visit_id lanetype#8182] +[visit_exp dim#8182] +[visit_id dim#8182] +[visit_exp i#59596] +[visit_id i#59596] +[visit_exp (`I8`_lanetype, `%`_dim{i#59603}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#59603}(16)] +[visit_exp i#59603] +[visit_id i#59603] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `NE`_vrelop_] +[visit_exp ()] +[visit_exp `%`_u32{i#59589}(36)] +[visit_exp i#59589] +[visit_id i#59589] +[visit_exp (36)] +[visit_exp 36] +[check_dims] dim#8209 i#59671 i#59678 i#59685 lanetype#8209 shape#956 sx#6659 +dims \ = dim#8209, i#59671, i#59678, i#59685, lanetype#8209, shape#956, sx#6659 +[visit_exp `VRELOP`_instr{shape#956}(`%X%`_shape{lanetype#8209, dim#8209, i#59678}(`I8`_lanetype, `%`_dim{i#59685}(16)), `LT`_vrelop_{sx#6659}(`S`_sx))] +[visit_exp shape#956] +[visit_id shape#956] +[visit_exp (`%X%`_shape{lanetype#8209, dim#8209, i#59678}(`I8`_lanetype, `%`_dim{i#59685}(16)), `LT`_vrelop_{sx#6659}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#8209, dim#8209, i#59678}(`I8`_lanetype, `%`_dim{i#59685}(16))] +[visit_exp lanetype#8209] +[visit_id lanetype#8209] +[visit_exp dim#8209] +[visit_id dim#8209] +[visit_exp i#59678] +[visit_id i#59678] +[visit_exp (`I8`_lanetype, `%`_dim{i#59685}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#59685}(16)] +[visit_exp i#59685] +[visit_id i#59685] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `LT`_vrelop_{sx#6659}(`S`_sx)] +[visit_exp sx#6659] +[visit_id sx#6659] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#59671}(37)] +[visit_exp i#59671] +[visit_id i#59671] +[visit_exp (37)] +[visit_exp 37] +[check_dims] dim#8251 i#59798 i#59805 i#59812 lanetype#8251 shape#958 sx#6783 +dims \ = dim#8251, i#59798, i#59805, i#59812, lanetype#8251, shape#958, sx#6783 +[visit_exp `VRELOP`_instr{shape#958}(`%X%`_shape{lanetype#8251, dim#8251, i#59805}(`I8`_lanetype, `%`_dim{i#59812}(16)), `LT`_vrelop_{sx#6783}(`U`_sx))] +[visit_exp shape#958] +[visit_id shape#958] +[visit_exp (`%X%`_shape{lanetype#8251, dim#8251, i#59805}(`I8`_lanetype, `%`_dim{i#59812}(16)), `LT`_vrelop_{sx#6783}(`U`_sx))] +[visit_exp `%X%`_shape{lanetype#8251, dim#8251, i#59805}(`I8`_lanetype, `%`_dim{i#59812}(16))] +[visit_exp lanetype#8251] +[visit_id lanetype#8251] +[visit_exp dim#8251] +[visit_id dim#8251] +[visit_exp i#59805] +[visit_id i#59805] +[visit_exp (`I8`_lanetype, `%`_dim{i#59812}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#59812}(16)] +[visit_exp i#59812] +[visit_id i#59812] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `LT`_vrelop_{sx#6783}(`U`_sx)] +[visit_exp sx#6783] +[visit_id sx#6783] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#59798}(38)] +[visit_exp i#59798] +[visit_id i#59798] +[visit_exp (38)] +[visit_exp 38] +[check_dims] dim#8293 i#59925 i#59932 i#59939 lanetype#8293 shape#960 sx#6907 +dims \ = dim#8293, i#59925, i#59932, i#59939, lanetype#8293, shape#960, sx#6907 +[visit_exp `VRELOP`_instr{shape#960}(`%X%`_shape{lanetype#8293, dim#8293, i#59932}(`I8`_lanetype, `%`_dim{i#59939}(16)), `GT`_vrelop_{sx#6907}(`S`_sx))] +[visit_exp shape#960] +[visit_id shape#960] +[visit_exp (`%X%`_shape{lanetype#8293, dim#8293, i#59932}(`I8`_lanetype, `%`_dim{i#59939}(16)), `GT`_vrelop_{sx#6907}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#8293, dim#8293, i#59932}(`I8`_lanetype, `%`_dim{i#59939}(16))] +[visit_exp lanetype#8293] +[visit_id lanetype#8293] +[visit_exp dim#8293] +[visit_id dim#8293] +[visit_exp i#59932] +[visit_id i#59932] +[visit_exp (`I8`_lanetype, `%`_dim{i#59939}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#59939}(16)] +[visit_exp i#59939] +[visit_id i#59939] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `GT`_vrelop_{sx#6907}(`S`_sx)] +[visit_exp sx#6907] +[visit_id sx#6907] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#59925}(39)] +[visit_exp i#59925] +[visit_id i#59925] +[visit_exp (39)] +[visit_exp 39] +[check_dims] dim#8335 i#60052 i#60059 i#60066 lanetype#8335 shape#962 sx#7031 +dims \ = dim#8335, i#60052, i#60059, i#60066, lanetype#8335, shape#962, sx#7031 +[visit_exp `VRELOP`_instr{shape#962}(`%X%`_shape{lanetype#8335, dim#8335, i#60059}(`I8`_lanetype, `%`_dim{i#60066}(16)), `GT`_vrelop_{sx#7031}(`U`_sx))] +[visit_exp shape#962] +[visit_id shape#962] +[visit_exp (`%X%`_shape{lanetype#8335, dim#8335, i#60059}(`I8`_lanetype, `%`_dim{i#60066}(16)), `GT`_vrelop_{sx#7031}(`U`_sx))] +[visit_exp `%X%`_shape{lanetype#8335, dim#8335, i#60059}(`I8`_lanetype, `%`_dim{i#60066}(16))] +[visit_exp lanetype#8335] +[visit_id lanetype#8335] +[visit_exp dim#8335] +[visit_id dim#8335] +[visit_exp i#60059] +[visit_id i#60059] +[visit_exp (`I8`_lanetype, `%`_dim{i#60066}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#60066}(16)] +[visit_exp i#60066] +[visit_id i#60066] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `GT`_vrelop_{sx#7031}(`U`_sx)] +[visit_exp sx#7031] +[visit_id sx#7031] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#60052}(40)] +[visit_exp i#60052] +[visit_id i#60052] +[visit_exp (40)] +[visit_exp 40] +[check_dims] dim#8377 i#60179 i#60186 i#60193 lanetype#8377 shape#964 sx#7155 +dims \ = dim#8377, i#60179, i#60186, i#60193, lanetype#8377, shape#964, sx#7155 +[visit_exp `VRELOP`_instr{shape#964}(`%X%`_shape{lanetype#8377, dim#8377, i#60186}(`I8`_lanetype, `%`_dim{i#60193}(16)), `LE`_vrelop_{sx#7155}(`S`_sx))] +[visit_exp shape#964] +[visit_id shape#964] +[visit_exp (`%X%`_shape{lanetype#8377, dim#8377, i#60186}(`I8`_lanetype, `%`_dim{i#60193}(16)), `LE`_vrelop_{sx#7155}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#8377, dim#8377, i#60186}(`I8`_lanetype, `%`_dim{i#60193}(16))] +[visit_exp lanetype#8377] +[visit_id lanetype#8377] +[visit_exp dim#8377] +[visit_id dim#8377] +[visit_exp i#60186] +[visit_id i#60186] +[visit_exp (`I8`_lanetype, `%`_dim{i#60193}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#60193}(16)] +[visit_exp i#60193] +[visit_id i#60193] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `LE`_vrelop_{sx#7155}(`S`_sx)] +[visit_exp sx#7155] +[visit_id sx#7155] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#60179}(41)] +[visit_exp i#60179] +[visit_id i#60179] +[visit_exp (41)] +[visit_exp 41] +[check_dims] dim#8419 i#60306 i#60313 i#60320 lanetype#8419 shape#966 sx#7279 +dims \ = dim#8419, i#60306, i#60313, i#60320, lanetype#8419, shape#966, sx#7279 +[visit_exp `VRELOP`_instr{shape#966}(`%X%`_shape{lanetype#8419, dim#8419, i#60313}(`I8`_lanetype, `%`_dim{i#60320}(16)), `LE`_vrelop_{sx#7279}(`U`_sx))] +[visit_exp shape#966] +[visit_id shape#966] +[visit_exp (`%X%`_shape{lanetype#8419, dim#8419, i#60313}(`I8`_lanetype, `%`_dim{i#60320}(16)), `LE`_vrelop_{sx#7279}(`U`_sx))] +[visit_exp `%X%`_shape{lanetype#8419, dim#8419, i#60313}(`I8`_lanetype, `%`_dim{i#60320}(16))] +[visit_exp lanetype#8419] +[visit_id lanetype#8419] +[visit_exp dim#8419] +[visit_id dim#8419] +[visit_exp i#60313] +[visit_id i#60313] +[visit_exp (`I8`_lanetype, `%`_dim{i#60320}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#60320}(16)] +[visit_exp i#60320] +[visit_id i#60320] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `LE`_vrelop_{sx#7279}(`U`_sx)] +[visit_exp sx#7279] +[visit_id sx#7279] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#60306}(42)] +[visit_exp i#60306] +[visit_id i#60306] +[visit_exp (42)] +[visit_exp 42] +[check_dims] dim#8461 i#60433 i#60440 i#60447 lanetype#8461 shape#968 sx#7403 +dims \ = dim#8461, i#60433, i#60440, i#60447, lanetype#8461, shape#968, sx#7403 +[visit_exp `VRELOP`_instr{shape#968}(`%X%`_shape{lanetype#8461, dim#8461, i#60440}(`I8`_lanetype, `%`_dim{i#60447}(16)), `GE`_vrelop_{sx#7403}(`S`_sx))] +[visit_exp shape#968] +[visit_id shape#968] +[visit_exp (`%X%`_shape{lanetype#8461, dim#8461, i#60440}(`I8`_lanetype, `%`_dim{i#60447}(16)), `GE`_vrelop_{sx#7403}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#8461, dim#8461, i#60440}(`I8`_lanetype, `%`_dim{i#60447}(16))] +[visit_exp lanetype#8461] +[visit_id lanetype#8461] +[visit_exp dim#8461] +[visit_id dim#8461] +[visit_exp i#60440] +[visit_id i#60440] +[visit_exp (`I8`_lanetype, `%`_dim{i#60447}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#60447}(16)] +[visit_exp i#60447] +[visit_id i#60447] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `GE`_vrelop_{sx#7403}(`S`_sx)] +[visit_exp sx#7403] +[visit_id sx#7403] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#60433}(43)] +[visit_exp i#60433] +[visit_id i#60433] +[visit_exp (43)] +[visit_exp 43] +[check_dims] dim#8503 i#60560 i#60567 i#60574 lanetype#8503 shape#970 sx#7527 +dims \ = dim#8503, i#60560, i#60567, i#60574, lanetype#8503, shape#970, sx#7527 +[visit_exp `VRELOP`_instr{shape#970}(`%X%`_shape{lanetype#8503, dim#8503, i#60567}(`I8`_lanetype, `%`_dim{i#60574}(16)), `GE`_vrelop_{sx#7527}(`U`_sx))] +[visit_exp shape#970] +[visit_id shape#970] +[visit_exp (`%X%`_shape{lanetype#8503, dim#8503, i#60567}(`I8`_lanetype, `%`_dim{i#60574}(16)), `GE`_vrelop_{sx#7527}(`U`_sx))] +[visit_exp `%X%`_shape{lanetype#8503, dim#8503, i#60567}(`I8`_lanetype, `%`_dim{i#60574}(16))] +[visit_exp lanetype#8503] +[visit_id lanetype#8503] +[visit_exp dim#8503] +[visit_id dim#8503] +[visit_exp i#60567] +[visit_id i#60567] +[visit_exp (`I8`_lanetype, `%`_dim{i#60574}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#60574}(16)] +[visit_exp i#60574] +[visit_id i#60574] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `GE`_vrelop_{sx#7527}(`U`_sx)] +[visit_exp sx#7527] +[visit_id sx#7527] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#60560}(44)] +[visit_exp i#60560] +[visit_id i#60560] +[visit_exp (44)] +[visit_exp 44] +ps' = +[check_dims] +[check_dims] dim#8545 i#60687 i#60694 i#60701 lanetype#8545 shape#972 +dims \ = dim#8545, i#60687, i#60694, i#60701, lanetype#8545, shape#972 +[visit_exp `VRELOP`_instr{shape#972}(`%X%`_shape{lanetype#8545, dim#8545, i#60694}(`I16`_lanetype, `%`_dim{i#60701}(8)), `EQ`_vrelop_)] +[visit_exp shape#972] +[visit_id shape#972] +[visit_exp (`%X%`_shape{lanetype#8545, dim#8545, i#60694}(`I16`_lanetype, `%`_dim{i#60701}(8)), `EQ`_vrelop_)] +[visit_exp `%X%`_shape{lanetype#8545, dim#8545, i#60694}(`I16`_lanetype, `%`_dim{i#60701}(8))] +[visit_exp lanetype#8545] +[visit_id lanetype#8545] +[visit_exp dim#8545] +[visit_id dim#8545] +[visit_exp i#60694] +[visit_id i#60694] +[visit_exp (`I16`_lanetype, `%`_dim{i#60701}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#60701}(8)] +[visit_exp i#60701] +[visit_id i#60701] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `EQ`_vrelop_] +[visit_exp ()] +[visit_exp `%`_u32{i#60687}(45)] +[visit_exp i#60687] +[visit_id i#60687] +[visit_exp (45)] +[visit_exp 45] +[check_dims] dim#8572 i#60769 i#60776 i#60783 lanetype#8572 shape#974 +dims \ = dim#8572, i#60769, i#60776, i#60783, lanetype#8572, shape#974 +[visit_exp `VRELOP`_instr{shape#974}(`%X%`_shape{lanetype#8572, dim#8572, i#60776}(`I16`_lanetype, `%`_dim{i#60783}(8)), `NE`_vrelop_)] +[visit_exp shape#974] +[visit_id shape#974] +[visit_exp (`%X%`_shape{lanetype#8572, dim#8572, i#60776}(`I16`_lanetype, `%`_dim{i#60783}(8)), `NE`_vrelop_)] +[visit_exp `%X%`_shape{lanetype#8572, dim#8572, i#60776}(`I16`_lanetype, `%`_dim{i#60783}(8))] +[visit_exp lanetype#8572] +[visit_id lanetype#8572] +[visit_exp dim#8572] +[visit_id dim#8572] +[visit_exp i#60776] +[visit_id i#60776] +[visit_exp (`I16`_lanetype, `%`_dim{i#60783}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#60783}(8)] +[visit_exp i#60783] +[visit_id i#60783] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `NE`_vrelop_] +[visit_exp ()] +[visit_exp `%`_u32{i#60769}(46)] +[visit_exp i#60769] +[visit_id i#60769] +[visit_exp (46)] +[visit_exp 46] +[check_dims] dim#8599 i#60851 i#60858 i#60865 lanetype#8599 shape#976 sx#7771 +dims \ = dim#8599, i#60851, i#60858, i#60865, lanetype#8599, shape#976, sx#7771 +[visit_exp `VRELOP`_instr{shape#976}(`%X%`_shape{lanetype#8599, dim#8599, i#60858}(`I16`_lanetype, `%`_dim{i#60865}(8)), `LT`_vrelop_{sx#7771}(`S`_sx))] +[visit_exp shape#976] +[visit_id shape#976] +[visit_exp (`%X%`_shape{lanetype#8599, dim#8599, i#60858}(`I16`_lanetype, `%`_dim{i#60865}(8)), `LT`_vrelop_{sx#7771}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#8599, dim#8599, i#60858}(`I16`_lanetype, `%`_dim{i#60865}(8))] +[visit_exp lanetype#8599] +[visit_id lanetype#8599] +[visit_exp dim#8599] +[visit_id dim#8599] +[visit_exp i#60858] +[visit_id i#60858] +[visit_exp (`I16`_lanetype, `%`_dim{i#60865}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#60865}(8)] +[visit_exp i#60865] +[visit_id i#60865] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `LT`_vrelop_{sx#7771}(`S`_sx)] +[visit_exp sx#7771] +[visit_id sx#7771] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#60851}(47)] +[visit_exp i#60851] +[visit_id i#60851] +[visit_exp (47)] +[visit_exp 47] +[check_dims] dim#8641 i#60978 i#60985 i#60992 lanetype#8641 shape#978 sx#7895 +dims \ = dim#8641, i#60978, i#60985, i#60992, lanetype#8641, shape#978, sx#7895 +[visit_exp `VRELOP`_instr{shape#978}(`%X%`_shape{lanetype#8641, dim#8641, i#60985}(`I16`_lanetype, `%`_dim{i#60992}(8)), `LT`_vrelop_{sx#7895}(`U`_sx))] +[visit_exp shape#978] +[visit_id shape#978] +[visit_exp (`%X%`_shape{lanetype#8641, dim#8641, i#60985}(`I16`_lanetype, `%`_dim{i#60992}(8)), `LT`_vrelop_{sx#7895}(`U`_sx))] +[visit_exp `%X%`_shape{lanetype#8641, dim#8641, i#60985}(`I16`_lanetype, `%`_dim{i#60992}(8))] +[visit_exp lanetype#8641] +[visit_id lanetype#8641] +[visit_exp dim#8641] +[visit_id dim#8641] +[visit_exp i#60985] +[visit_id i#60985] +[visit_exp (`I16`_lanetype, `%`_dim{i#60992}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#60992}(8)] +[visit_exp i#60992] +[visit_id i#60992] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `LT`_vrelop_{sx#7895}(`U`_sx)] +[visit_exp sx#7895] +[visit_id sx#7895] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#60978}(48)] +[visit_exp i#60978] +[visit_id i#60978] +[visit_exp (48)] +[visit_exp 48] +[check_dims] dim#8683 i#61105 i#61112 i#61119 lanetype#8683 shape#980 sx#8019 +dims \ = dim#8683, i#61105, i#61112, i#61119, lanetype#8683, shape#980, sx#8019 +[visit_exp `VRELOP`_instr{shape#980}(`%X%`_shape{lanetype#8683, dim#8683, i#61112}(`I16`_lanetype, `%`_dim{i#61119}(8)), `GT`_vrelop_{sx#8019}(`S`_sx))] +[visit_exp shape#980] +[visit_id shape#980] +[visit_exp (`%X%`_shape{lanetype#8683, dim#8683, i#61112}(`I16`_lanetype, `%`_dim{i#61119}(8)), `GT`_vrelop_{sx#8019}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#8683, dim#8683, i#61112}(`I16`_lanetype, `%`_dim{i#61119}(8))] +[visit_exp lanetype#8683] +[visit_id lanetype#8683] +[visit_exp dim#8683] +[visit_id dim#8683] +[visit_exp i#61112] +[visit_id i#61112] +[visit_exp (`I16`_lanetype, `%`_dim{i#61119}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#61119}(8)] +[visit_exp i#61119] +[visit_id i#61119] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `GT`_vrelop_{sx#8019}(`S`_sx)] +[visit_exp sx#8019] +[visit_id sx#8019] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#61105}(49)] +[visit_exp i#61105] +[visit_id i#61105] +[visit_exp (49)] +[visit_exp 49] +[check_dims] dim#8725 i#61232 i#61239 i#61246 lanetype#8725 shape#982 sx#8143 +dims \ = dim#8725, i#61232, i#61239, i#61246, lanetype#8725, shape#982, sx#8143 +[visit_exp `VRELOP`_instr{shape#982}(`%X%`_shape{lanetype#8725, dim#8725, i#61239}(`I16`_lanetype, `%`_dim{i#61246}(8)), `GT`_vrelop_{sx#8143}(`U`_sx))] +[visit_exp shape#982] +[visit_id shape#982] +[visit_exp (`%X%`_shape{lanetype#8725, dim#8725, i#61239}(`I16`_lanetype, `%`_dim{i#61246}(8)), `GT`_vrelop_{sx#8143}(`U`_sx))] +[visit_exp `%X%`_shape{lanetype#8725, dim#8725, i#61239}(`I16`_lanetype, `%`_dim{i#61246}(8))] +[visit_exp lanetype#8725] +[visit_id lanetype#8725] +[visit_exp dim#8725] +[visit_id dim#8725] +[visit_exp i#61239] +[visit_id i#61239] +[visit_exp (`I16`_lanetype, `%`_dim{i#61246}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#61246}(8)] +[visit_exp i#61246] +[visit_id i#61246] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `GT`_vrelop_{sx#8143}(`U`_sx)] +[visit_exp sx#8143] +[visit_id sx#8143] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#61232}(50)] +[visit_exp i#61232] +[visit_id i#61232] +[visit_exp (50)] +[visit_exp 50] +[check_dims] dim#8767 i#61359 i#61366 i#61373 lanetype#8767 shape#984 sx#8267 +dims \ = dim#8767, i#61359, i#61366, i#61373, lanetype#8767, shape#984, sx#8267 +[visit_exp `VRELOP`_instr{shape#984}(`%X%`_shape{lanetype#8767, dim#8767, i#61366}(`I16`_lanetype, `%`_dim{i#61373}(8)), `LE`_vrelop_{sx#8267}(`S`_sx))] +[visit_exp shape#984] +[visit_id shape#984] +[visit_exp (`%X%`_shape{lanetype#8767, dim#8767, i#61366}(`I16`_lanetype, `%`_dim{i#61373}(8)), `LE`_vrelop_{sx#8267}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#8767, dim#8767, i#61366}(`I16`_lanetype, `%`_dim{i#61373}(8))] +[visit_exp lanetype#8767] +[visit_id lanetype#8767] +[visit_exp dim#8767] +[visit_id dim#8767] +[visit_exp i#61366] +[visit_id i#61366] +[visit_exp (`I16`_lanetype, `%`_dim{i#61373}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#61373}(8)] +[visit_exp i#61373] +[visit_id i#61373] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `LE`_vrelop_{sx#8267}(`S`_sx)] +[visit_exp sx#8267] +[visit_id sx#8267] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#61359}(51)] +[visit_exp i#61359] +[visit_id i#61359] +[visit_exp (51)] +[visit_exp 51] +[check_dims] dim#8809 i#61486 i#61493 i#61500 lanetype#8809 shape#986 sx#8391 +dims \ = dim#8809, i#61486, i#61493, i#61500, lanetype#8809, shape#986, sx#8391 +[visit_exp `VRELOP`_instr{shape#986}(`%X%`_shape{lanetype#8809, dim#8809, i#61493}(`I16`_lanetype, `%`_dim{i#61500}(8)), `LE`_vrelop_{sx#8391}(`U`_sx))] +[visit_exp shape#986] +[visit_id shape#986] +[visit_exp (`%X%`_shape{lanetype#8809, dim#8809, i#61493}(`I16`_lanetype, `%`_dim{i#61500}(8)), `LE`_vrelop_{sx#8391}(`U`_sx))] +[visit_exp `%X%`_shape{lanetype#8809, dim#8809, i#61493}(`I16`_lanetype, `%`_dim{i#61500}(8))] +[visit_exp lanetype#8809] +[visit_id lanetype#8809] +[visit_exp dim#8809] +[visit_id dim#8809] +[visit_exp i#61493] +[visit_id i#61493] +[visit_exp (`I16`_lanetype, `%`_dim{i#61500}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#61500}(8)] +[visit_exp i#61500] +[visit_id i#61500] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `LE`_vrelop_{sx#8391}(`U`_sx)] +[visit_exp sx#8391] +[visit_id sx#8391] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#61486}(52)] +[visit_exp i#61486] +[visit_id i#61486] +[visit_exp (52)] +[visit_exp 52] +[check_dims] dim#8851 i#61613 i#61620 i#61627 lanetype#8851 shape#988 sx#8515 +dims \ = dim#8851, i#61613, i#61620, i#61627, lanetype#8851, shape#988, sx#8515 +[visit_exp `VRELOP`_instr{shape#988}(`%X%`_shape{lanetype#8851, dim#8851, i#61620}(`I16`_lanetype, `%`_dim{i#61627}(8)), `GE`_vrelop_{sx#8515}(`S`_sx))] +[visit_exp shape#988] +[visit_id shape#988] +[visit_exp (`%X%`_shape{lanetype#8851, dim#8851, i#61620}(`I16`_lanetype, `%`_dim{i#61627}(8)), `GE`_vrelop_{sx#8515}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#8851, dim#8851, i#61620}(`I16`_lanetype, `%`_dim{i#61627}(8))] +[visit_exp lanetype#8851] +[visit_id lanetype#8851] +[visit_exp dim#8851] +[visit_id dim#8851] +[visit_exp i#61620] +[visit_id i#61620] +[visit_exp (`I16`_lanetype, `%`_dim{i#61627}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#61627}(8)] +[visit_exp i#61627] +[visit_id i#61627] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `GE`_vrelop_{sx#8515}(`S`_sx)] +[visit_exp sx#8515] +[visit_id sx#8515] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#61613}(53)] +[visit_exp i#61613] +[visit_id i#61613] +[visit_exp (53)] +[visit_exp 53] +[check_dims] dim#8893 i#61740 i#61747 i#61754 lanetype#8893 shape#990 sx#8639 +dims \ = dim#8893, i#61740, i#61747, i#61754, lanetype#8893, shape#990, sx#8639 +[visit_exp `VRELOP`_instr{shape#990}(`%X%`_shape{lanetype#8893, dim#8893, i#61747}(`I16`_lanetype, `%`_dim{i#61754}(8)), `GE`_vrelop_{sx#8639}(`U`_sx))] +[visit_exp shape#990] +[visit_id shape#990] +[visit_exp (`%X%`_shape{lanetype#8893, dim#8893, i#61747}(`I16`_lanetype, `%`_dim{i#61754}(8)), `GE`_vrelop_{sx#8639}(`U`_sx))] +[visit_exp `%X%`_shape{lanetype#8893, dim#8893, i#61747}(`I16`_lanetype, `%`_dim{i#61754}(8))] +[visit_exp lanetype#8893] +[visit_id lanetype#8893] +[visit_exp dim#8893] +[visit_id dim#8893] +[visit_exp i#61747] +[visit_id i#61747] +[visit_exp (`I16`_lanetype, `%`_dim{i#61754}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#61754}(8)] +[visit_exp i#61754] +[visit_id i#61754] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `GE`_vrelop_{sx#8639}(`U`_sx)] +[visit_exp sx#8639] +[visit_id sx#8639] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#61740}(54)] +[visit_exp i#61740] +[visit_id i#61740] +[visit_exp (54)] +[visit_exp 54] +ps' = +[check_dims] +[check_dims] dim#8935 i#61867 i#61874 i#61881 lanetype#8935 shape#992 +dims \ = dim#8935, i#61867, i#61874, i#61881, lanetype#8935, shape#992 +[visit_exp `VRELOP`_instr{shape#992}(`%X%`_shape{lanetype#8935, dim#8935, i#61874}(`I32`_lanetype, `%`_dim{i#61881}(4)), `EQ`_vrelop_)] +[visit_exp shape#992] +[visit_id shape#992] +[visit_exp (`%X%`_shape{lanetype#8935, dim#8935, i#61874}(`I32`_lanetype, `%`_dim{i#61881}(4)), `EQ`_vrelop_)] +[visit_exp `%X%`_shape{lanetype#8935, dim#8935, i#61874}(`I32`_lanetype, `%`_dim{i#61881}(4))] +[visit_exp lanetype#8935] +[visit_id lanetype#8935] +[visit_exp dim#8935] +[visit_id dim#8935] +[visit_exp i#61874] +[visit_id i#61874] +[visit_exp (`I32`_lanetype, `%`_dim{i#61881}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#61881}(4)] +[visit_exp i#61881] +[visit_id i#61881] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `EQ`_vrelop_] +[visit_exp ()] +[visit_exp `%`_u32{i#61867}(55)] +[visit_exp i#61867] +[visit_id i#61867] +[visit_exp (55)] +[visit_exp 55] +[check_dims] dim#8962 i#61949 i#61956 i#61963 lanetype#8962 shape#994 +dims \ = dim#8962, i#61949, i#61956, i#61963, lanetype#8962, shape#994 +[visit_exp `VRELOP`_instr{shape#994}(`%X%`_shape{lanetype#8962, dim#8962, i#61956}(`I32`_lanetype, `%`_dim{i#61963}(4)), `NE`_vrelop_)] +[visit_exp shape#994] +[visit_id shape#994] +[visit_exp (`%X%`_shape{lanetype#8962, dim#8962, i#61956}(`I32`_lanetype, `%`_dim{i#61963}(4)), `NE`_vrelop_)] +[visit_exp `%X%`_shape{lanetype#8962, dim#8962, i#61956}(`I32`_lanetype, `%`_dim{i#61963}(4))] +[visit_exp lanetype#8962] +[visit_id lanetype#8962] +[visit_exp dim#8962] +[visit_id dim#8962] +[visit_exp i#61956] +[visit_id i#61956] +[visit_exp (`I32`_lanetype, `%`_dim{i#61963}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#61963}(4)] +[visit_exp i#61963] +[visit_id i#61963] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `NE`_vrelop_] +[visit_exp ()] +[visit_exp `%`_u32{i#61949}(56)] +[visit_exp i#61949] +[visit_id i#61949] +[visit_exp (56)] +[visit_exp 56] +[check_dims] dim#8989 i#62031 i#62038 i#62045 lanetype#8989 shape#996 sx#8883 +dims \ = dim#8989, i#62031, i#62038, i#62045, lanetype#8989, shape#996, sx#8883 +[visit_exp `VRELOP`_instr{shape#996}(`%X%`_shape{lanetype#8989, dim#8989, i#62038}(`I32`_lanetype, `%`_dim{i#62045}(4)), `LT`_vrelop_{sx#8883}(`S`_sx))] +[visit_exp shape#996] +[visit_id shape#996] +[visit_exp (`%X%`_shape{lanetype#8989, dim#8989, i#62038}(`I32`_lanetype, `%`_dim{i#62045}(4)), `LT`_vrelop_{sx#8883}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#8989, dim#8989, i#62038}(`I32`_lanetype, `%`_dim{i#62045}(4))] +[visit_exp lanetype#8989] +[visit_id lanetype#8989] +[visit_exp dim#8989] +[visit_id dim#8989] +[visit_exp i#62038] +[visit_id i#62038] +[visit_exp (`I32`_lanetype, `%`_dim{i#62045}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#62045}(4)] +[visit_exp i#62045] +[visit_id i#62045] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `LT`_vrelop_{sx#8883}(`S`_sx)] +[visit_exp sx#8883] +[visit_id sx#8883] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#62031}(57)] +[visit_exp i#62031] +[visit_id i#62031] +[visit_exp (57)] +[visit_exp 57] +[check_dims] dim#9031 i#62158 i#62165 i#62172 lanetype#9031 shape#998 sx#9007 +dims \ = dim#9031, i#62158, i#62165, i#62172, lanetype#9031, shape#998, sx#9007 +[visit_exp `VRELOP`_instr{shape#998}(`%X%`_shape{lanetype#9031, dim#9031, i#62165}(`I32`_lanetype, `%`_dim{i#62172}(4)), `LT`_vrelop_{sx#9007}(`U`_sx))] +[visit_exp shape#998] +[visit_id shape#998] +[visit_exp (`%X%`_shape{lanetype#9031, dim#9031, i#62165}(`I32`_lanetype, `%`_dim{i#62172}(4)), `LT`_vrelop_{sx#9007}(`U`_sx))] +[visit_exp `%X%`_shape{lanetype#9031, dim#9031, i#62165}(`I32`_lanetype, `%`_dim{i#62172}(4))] +[visit_exp lanetype#9031] +[visit_id lanetype#9031] +[visit_exp dim#9031] +[visit_id dim#9031] +[visit_exp i#62165] +[visit_id i#62165] +[visit_exp (`I32`_lanetype, `%`_dim{i#62172}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#62172}(4)] +[visit_exp i#62172] +[visit_id i#62172] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `LT`_vrelop_{sx#9007}(`U`_sx)] +[visit_exp sx#9007] +[visit_id sx#9007] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#62158}(58)] +[visit_exp i#62158] +[visit_id i#62158] +[visit_exp (58)] +[visit_exp 58] +[check_dims] dim#9073 i#62285 i#62292 i#62299 lanetype#9073 shape#1000 sx#9131 +dims \ = dim#9073, i#62285, i#62292, i#62299, lanetype#9073, shape#1000, sx#9131 +[visit_exp `VRELOP`_instr{shape#1000}(`%X%`_shape{lanetype#9073, dim#9073, i#62292}(`I32`_lanetype, `%`_dim{i#62299}(4)), `GT`_vrelop_{sx#9131}(`S`_sx))] +[visit_exp shape#1000] +[visit_id shape#1000] +[visit_exp (`%X%`_shape{lanetype#9073, dim#9073, i#62292}(`I32`_lanetype, `%`_dim{i#62299}(4)), `GT`_vrelop_{sx#9131}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#9073, dim#9073, i#62292}(`I32`_lanetype, `%`_dim{i#62299}(4))] +[visit_exp lanetype#9073] +[visit_id lanetype#9073] +[visit_exp dim#9073] +[visit_id dim#9073] +[visit_exp i#62292] +[visit_id i#62292] +[visit_exp (`I32`_lanetype, `%`_dim{i#62299}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#62299}(4)] +[visit_exp i#62299] +[visit_id i#62299] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `GT`_vrelop_{sx#9131}(`S`_sx)] +[visit_exp sx#9131] +[visit_id sx#9131] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#62285}(59)] +[visit_exp i#62285] +[visit_id i#62285] +[visit_exp (59)] +[visit_exp 59] +[check_dims] dim#9115 i#62412 i#62419 i#62426 lanetype#9115 shape#1002 sx#9255 +dims \ = dim#9115, i#62412, i#62419, i#62426, lanetype#9115, shape#1002, sx#9255 +[visit_exp `VRELOP`_instr{shape#1002}(`%X%`_shape{lanetype#9115, dim#9115, i#62419}(`I32`_lanetype, `%`_dim{i#62426}(4)), `GT`_vrelop_{sx#9255}(`U`_sx))] +[visit_exp shape#1002] +[visit_id shape#1002] +[visit_exp (`%X%`_shape{lanetype#9115, dim#9115, i#62419}(`I32`_lanetype, `%`_dim{i#62426}(4)), `GT`_vrelop_{sx#9255}(`U`_sx))] +[visit_exp `%X%`_shape{lanetype#9115, dim#9115, i#62419}(`I32`_lanetype, `%`_dim{i#62426}(4))] +[visit_exp lanetype#9115] +[visit_id lanetype#9115] +[visit_exp dim#9115] +[visit_id dim#9115] +[visit_exp i#62419] +[visit_id i#62419] +[visit_exp (`I32`_lanetype, `%`_dim{i#62426}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#62426}(4)] +[visit_exp i#62426] +[visit_id i#62426] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `GT`_vrelop_{sx#9255}(`U`_sx)] +[visit_exp sx#9255] +[visit_id sx#9255] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#62412}(60)] +[visit_exp i#62412] +[visit_id i#62412] +[visit_exp (60)] +[visit_exp 60] +[check_dims] dim#9157 i#62539 i#62546 i#62553 lanetype#9157 shape#1004 sx#9379 +dims \ = dim#9157, i#62539, i#62546, i#62553, lanetype#9157, shape#1004, sx#9379 +[visit_exp `VRELOP`_instr{shape#1004}(`%X%`_shape{lanetype#9157, dim#9157, i#62546}(`I32`_lanetype, `%`_dim{i#62553}(4)), `LE`_vrelop_{sx#9379}(`S`_sx))] +[visit_exp shape#1004] +[visit_id shape#1004] +[visit_exp (`%X%`_shape{lanetype#9157, dim#9157, i#62546}(`I32`_lanetype, `%`_dim{i#62553}(4)), `LE`_vrelop_{sx#9379}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#9157, dim#9157, i#62546}(`I32`_lanetype, `%`_dim{i#62553}(4))] +[visit_exp lanetype#9157] +[visit_id lanetype#9157] +[visit_exp dim#9157] +[visit_id dim#9157] +[visit_exp i#62546] +[visit_id i#62546] +[visit_exp (`I32`_lanetype, `%`_dim{i#62553}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#62553}(4)] +[visit_exp i#62553] +[visit_id i#62553] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `LE`_vrelop_{sx#9379}(`S`_sx)] +[visit_exp sx#9379] +[visit_id sx#9379] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#62539}(61)] +[visit_exp i#62539] +[visit_id i#62539] +[visit_exp (61)] +[visit_exp 61] +[check_dims] dim#9199 i#62666 i#62673 i#62680 lanetype#9199 shape#1006 sx#9503 +dims \ = dim#9199, i#62666, i#62673, i#62680, lanetype#9199, shape#1006, sx#9503 +[visit_exp `VRELOP`_instr{shape#1006}(`%X%`_shape{lanetype#9199, dim#9199, i#62673}(`I32`_lanetype, `%`_dim{i#62680}(4)), `LE`_vrelop_{sx#9503}(`U`_sx))] +[visit_exp shape#1006] +[visit_id shape#1006] +[visit_exp (`%X%`_shape{lanetype#9199, dim#9199, i#62673}(`I32`_lanetype, `%`_dim{i#62680}(4)), `LE`_vrelop_{sx#9503}(`U`_sx))] +[visit_exp `%X%`_shape{lanetype#9199, dim#9199, i#62673}(`I32`_lanetype, `%`_dim{i#62680}(4))] +[visit_exp lanetype#9199] +[visit_id lanetype#9199] +[visit_exp dim#9199] +[visit_id dim#9199] +[visit_exp i#62673] +[visit_id i#62673] +[visit_exp (`I32`_lanetype, `%`_dim{i#62680}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#62680}(4)] +[visit_exp i#62680] +[visit_id i#62680] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `LE`_vrelop_{sx#9503}(`U`_sx)] +[visit_exp sx#9503] +[visit_id sx#9503] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#62666}(62)] +[visit_exp i#62666] +[visit_id i#62666] +[visit_exp (62)] +[visit_exp 62] +[check_dims] dim#9241 i#62793 i#62800 i#62807 lanetype#9241 shape#1008 sx#9627 +dims \ = dim#9241, i#62793, i#62800, i#62807, lanetype#9241, shape#1008, sx#9627 +[visit_exp `VRELOP`_instr{shape#1008}(`%X%`_shape{lanetype#9241, dim#9241, i#62800}(`I32`_lanetype, `%`_dim{i#62807}(4)), `GE`_vrelop_{sx#9627}(`S`_sx))] +[visit_exp shape#1008] +[visit_id shape#1008] +[visit_exp (`%X%`_shape{lanetype#9241, dim#9241, i#62800}(`I32`_lanetype, `%`_dim{i#62807}(4)), `GE`_vrelop_{sx#9627}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#9241, dim#9241, i#62800}(`I32`_lanetype, `%`_dim{i#62807}(4))] +[visit_exp lanetype#9241] +[visit_id lanetype#9241] +[visit_exp dim#9241] +[visit_id dim#9241] +[visit_exp i#62800] +[visit_id i#62800] +[visit_exp (`I32`_lanetype, `%`_dim{i#62807}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#62807}(4)] +[visit_exp i#62807] +[visit_id i#62807] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `GE`_vrelop_{sx#9627}(`S`_sx)] +[visit_exp sx#9627] +[visit_id sx#9627] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#62793}(63)] +[visit_exp i#62793] +[visit_id i#62793] +[visit_exp (63)] +[visit_exp 63] +[check_dims] dim#9283 i#62920 i#62927 i#62934 lanetype#9283 shape#1010 sx#9751 +dims \ = dim#9283, i#62920, i#62927, i#62934, lanetype#9283, shape#1010, sx#9751 +[visit_exp `VRELOP`_instr{shape#1010}(`%X%`_shape{lanetype#9283, dim#9283, i#62927}(`I32`_lanetype, `%`_dim{i#62934}(4)), `GE`_vrelop_{sx#9751}(`U`_sx))] +[visit_exp shape#1010] +[visit_id shape#1010] +[visit_exp (`%X%`_shape{lanetype#9283, dim#9283, i#62927}(`I32`_lanetype, `%`_dim{i#62934}(4)), `GE`_vrelop_{sx#9751}(`U`_sx))] +[visit_exp `%X%`_shape{lanetype#9283, dim#9283, i#62927}(`I32`_lanetype, `%`_dim{i#62934}(4))] +[visit_exp lanetype#9283] +[visit_id lanetype#9283] +[visit_exp dim#9283] +[visit_id dim#9283] +[visit_exp i#62927] +[visit_id i#62927] +[visit_exp (`I32`_lanetype, `%`_dim{i#62934}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#62934}(4)] +[visit_exp i#62934] +[visit_id i#62934] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `GE`_vrelop_{sx#9751}(`U`_sx)] +[visit_exp sx#9751] +[visit_id sx#9751] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#62920}(64)] +[visit_exp i#62920] +[visit_id i#62920] +[visit_exp (64)] +[visit_exp 64] +ps' = +[check_dims] +[check_dims] dim#9325 i#63047 i#63054 i#63061 lanetype#9325 shape#1012 +dims \ = dim#9325, i#63047, i#63054, i#63061, lanetype#9325, shape#1012 +[visit_exp `VRELOP`_instr{shape#1012}(`%X%`_shape{lanetype#9325, dim#9325, i#63054}(`F32`_lanetype, `%`_dim{i#63061}(4)), `EQ`_vrelop_)] +[visit_exp shape#1012] +[visit_id shape#1012] +[visit_exp (`%X%`_shape{lanetype#9325, dim#9325, i#63054}(`F32`_lanetype, `%`_dim{i#63061}(4)), `EQ`_vrelop_)] +[visit_exp `%X%`_shape{lanetype#9325, dim#9325, i#63054}(`F32`_lanetype, `%`_dim{i#63061}(4))] +[visit_exp lanetype#9325] +[visit_id lanetype#9325] +[visit_exp dim#9325] +[visit_id dim#9325] +[visit_exp i#63054] +[visit_id i#63054] +[visit_exp (`F32`_lanetype, `%`_dim{i#63061}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#63061}(4)] +[visit_exp i#63061] +[visit_id i#63061] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `EQ`_vrelop_] +[visit_exp ()] +[visit_exp `%`_u32{i#63047}(65)] +[visit_exp i#63047] +[visit_id i#63047] +[visit_exp (65)] +[visit_exp 65] +[check_dims] dim#9367 i#63144 i#63151 i#63158 lanetype#9367 shape#1014 +dims \ = dim#9367, i#63144, i#63151, i#63158, lanetype#9367, shape#1014 +[visit_exp `VRELOP`_instr{shape#1014}(`%X%`_shape{lanetype#9367, dim#9367, i#63151}(`F32`_lanetype, `%`_dim{i#63158}(4)), `NE`_vrelop_)] +[visit_exp shape#1014] +[visit_id shape#1014] +[visit_exp (`%X%`_shape{lanetype#9367, dim#9367, i#63151}(`F32`_lanetype, `%`_dim{i#63158}(4)), `NE`_vrelop_)] +[visit_exp `%X%`_shape{lanetype#9367, dim#9367, i#63151}(`F32`_lanetype, `%`_dim{i#63158}(4))] +[visit_exp lanetype#9367] +[visit_id lanetype#9367] +[visit_exp dim#9367] +[visit_id dim#9367] +[visit_exp i#63151] +[visit_id i#63151] +[visit_exp (`F32`_lanetype, `%`_dim{i#63158}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#63158}(4)] +[visit_exp i#63158] +[visit_id i#63158] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `NE`_vrelop_] +[visit_exp ()] +[visit_exp `%`_u32{i#63144}(66)] +[visit_exp i#63144] +[visit_id i#63144] +[visit_exp (66)] +[visit_exp 66] +[check_dims] dim#9409 i#63241 i#63248 i#63255 lanetype#9409 shape#1016 +dims \ = dim#9409, i#63241, i#63248, i#63255, lanetype#9409, shape#1016 +[visit_exp `VRELOP`_instr{shape#1016}(`%X%`_shape{lanetype#9409, dim#9409, i#63248}(`F32`_lanetype, `%`_dim{i#63255}(4)), `LT`_vrelop_)] +[visit_exp shape#1016] +[visit_id shape#1016] +[visit_exp (`%X%`_shape{lanetype#9409, dim#9409, i#63248}(`F32`_lanetype, `%`_dim{i#63255}(4)), `LT`_vrelop_)] +[visit_exp `%X%`_shape{lanetype#9409, dim#9409, i#63248}(`F32`_lanetype, `%`_dim{i#63255}(4))] +[visit_exp lanetype#9409] +[visit_id lanetype#9409] +[visit_exp dim#9409] +[visit_id dim#9409] +[visit_exp i#63248] +[visit_id i#63248] +[visit_exp (`F32`_lanetype, `%`_dim{i#63255}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#63255}(4)] +[visit_exp i#63255] +[visit_id i#63255] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `LT`_vrelop_] +[visit_exp ()] +[visit_exp `%`_u32{i#63241}(67)] +[visit_exp i#63241] +[visit_id i#63241] +[visit_exp (67)] +[visit_exp 67] +[check_dims] dim#9451 i#63338 i#63345 i#63352 lanetype#9451 shape#1018 +dims \ = dim#9451, i#63338, i#63345, i#63352, lanetype#9451, shape#1018 +[visit_exp `VRELOP`_instr{shape#1018}(`%X%`_shape{lanetype#9451, dim#9451, i#63345}(`F32`_lanetype, `%`_dim{i#63352}(4)), `GT`_vrelop_)] +[visit_exp shape#1018] +[visit_id shape#1018] +[visit_exp (`%X%`_shape{lanetype#9451, dim#9451, i#63345}(`F32`_lanetype, `%`_dim{i#63352}(4)), `GT`_vrelop_)] +[visit_exp `%X%`_shape{lanetype#9451, dim#9451, i#63345}(`F32`_lanetype, `%`_dim{i#63352}(4))] +[visit_exp lanetype#9451] +[visit_id lanetype#9451] +[visit_exp dim#9451] +[visit_id dim#9451] +[visit_exp i#63345] +[visit_id i#63345] +[visit_exp (`F32`_lanetype, `%`_dim{i#63352}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#63352}(4)] +[visit_exp i#63352] +[visit_id i#63352] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `GT`_vrelop_] +[visit_exp ()] +[visit_exp `%`_u32{i#63338}(68)] +[visit_exp i#63338] +[visit_id i#63338] +[visit_exp (68)] +[visit_exp 68] +[check_dims] dim#9493 i#63435 i#63442 i#63449 lanetype#9493 shape#1020 +dims \ = dim#9493, i#63435, i#63442, i#63449, lanetype#9493, shape#1020 +[visit_exp `VRELOP`_instr{shape#1020}(`%X%`_shape{lanetype#9493, dim#9493, i#63442}(`F32`_lanetype, `%`_dim{i#63449}(4)), `LE`_vrelop_)] +[visit_exp shape#1020] +[visit_id shape#1020] +[visit_exp (`%X%`_shape{lanetype#9493, dim#9493, i#63442}(`F32`_lanetype, `%`_dim{i#63449}(4)), `LE`_vrelop_)] +[visit_exp `%X%`_shape{lanetype#9493, dim#9493, i#63442}(`F32`_lanetype, `%`_dim{i#63449}(4))] +[visit_exp lanetype#9493] +[visit_id lanetype#9493] +[visit_exp dim#9493] +[visit_id dim#9493] +[visit_exp i#63442] +[visit_id i#63442] +[visit_exp (`F32`_lanetype, `%`_dim{i#63449}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#63449}(4)] +[visit_exp i#63449] +[visit_id i#63449] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `LE`_vrelop_] +[visit_exp ()] +[visit_exp `%`_u32{i#63435}(69)] +[visit_exp i#63435] +[visit_id i#63435] +[visit_exp (69)] +[visit_exp 69] +[check_dims] dim#9535 i#63532 i#63539 i#63546 lanetype#9535 shape#1022 +dims \ = dim#9535, i#63532, i#63539, i#63546, lanetype#9535, shape#1022 +[visit_exp `VRELOP`_instr{shape#1022}(`%X%`_shape{lanetype#9535, dim#9535, i#63539}(`F32`_lanetype, `%`_dim{i#63546}(4)), `GE`_vrelop_)] +[visit_exp shape#1022] +[visit_id shape#1022] +[visit_exp (`%X%`_shape{lanetype#9535, dim#9535, i#63539}(`F32`_lanetype, `%`_dim{i#63546}(4)), `GE`_vrelop_)] +[visit_exp `%X%`_shape{lanetype#9535, dim#9535, i#63539}(`F32`_lanetype, `%`_dim{i#63546}(4))] +[visit_exp lanetype#9535] +[visit_id lanetype#9535] +[visit_exp dim#9535] +[visit_id dim#9535] +[visit_exp i#63539] +[visit_id i#63539] +[visit_exp (`F32`_lanetype, `%`_dim{i#63546}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#63546}(4)] +[visit_exp i#63546] +[visit_id i#63546] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `GE`_vrelop_] +[visit_exp ()] +[visit_exp `%`_u32{i#63532}(70)] +[visit_exp i#63532] +[visit_id i#63532] +[visit_exp (70)] +[visit_exp 70] +ps' = +[check_dims] +[check_dims] dim#9577 i#63629 i#63636 i#63643 lanetype#9577 shape#1024 +dims \ = dim#9577, i#63629, i#63636, i#63643, lanetype#9577, shape#1024 +[visit_exp `VRELOP`_instr{shape#1024}(`%X%`_shape{lanetype#9577, dim#9577, i#63636}(`F64`_lanetype, `%`_dim{i#63643}(2)), `EQ`_vrelop_)] +[visit_exp shape#1024] +[visit_id shape#1024] +[visit_exp (`%X%`_shape{lanetype#9577, dim#9577, i#63636}(`F64`_lanetype, `%`_dim{i#63643}(2)), `EQ`_vrelop_)] +[visit_exp `%X%`_shape{lanetype#9577, dim#9577, i#63636}(`F64`_lanetype, `%`_dim{i#63643}(2))] +[visit_exp lanetype#9577] +[visit_id lanetype#9577] +[visit_exp dim#9577] +[visit_id dim#9577] +[visit_exp i#63636] +[visit_id i#63636] +[visit_exp (`F64`_lanetype, `%`_dim{i#63643}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#63643}(2)] +[visit_exp i#63643] +[visit_id i#63643] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `EQ`_vrelop_] +[visit_exp ()] +[visit_exp `%`_u32{i#63629}(71)] +[visit_exp i#63629] +[visit_id i#63629] +[visit_exp (71)] +[visit_exp 71] +[check_dims] dim#9619 i#63726 i#63733 i#63740 lanetype#9619 shape#1026 +dims \ = dim#9619, i#63726, i#63733, i#63740, lanetype#9619, shape#1026 +[visit_exp `VRELOP`_instr{shape#1026}(`%X%`_shape{lanetype#9619, dim#9619, i#63733}(`F64`_lanetype, `%`_dim{i#63740}(2)), `NE`_vrelop_)] +[visit_exp shape#1026] +[visit_id shape#1026] +[visit_exp (`%X%`_shape{lanetype#9619, dim#9619, i#63733}(`F64`_lanetype, `%`_dim{i#63740}(2)), `NE`_vrelop_)] +[visit_exp `%X%`_shape{lanetype#9619, dim#9619, i#63733}(`F64`_lanetype, `%`_dim{i#63740}(2))] +[visit_exp lanetype#9619] +[visit_id lanetype#9619] +[visit_exp dim#9619] +[visit_id dim#9619] +[visit_exp i#63733] +[visit_id i#63733] +[visit_exp (`F64`_lanetype, `%`_dim{i#63740}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#63740}(2)] +[visit_exp i#63740] +[visit_id i#63740] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `NE`_vrelop_] +[visit_exp ()] +[visit_exp `%`_u32{i#63726}(72)] +[visit_exp i#63726] +[visit_id i#63726] +[visit_exp (72)] +[visit_exp 72] +[check_dims] dim#9661 i#63823 i#63830 i#63837 lanetype#9661 shape#1028 +dims \ = dim#9661, i#63823, i#63830, i#63837, lanetype#9661, shape#1028 +[visit_exp `VRELOP`_instr{shape#1028}(`%X%`_shape{lanetype#9661, dim#9661, i#63830}(`F64`_lanetype, `%`_dim{i#63837}(2)), `LT`_vrelop_)] +[visit_exp shape#1028] +[visit_id shape#1028] +[visit_exp (`%X%`_shape{lanetype#9661, dim#9661, i#63830}(`F64`_lanetype, `%`_dim{i#63837}(2)), `LT`_vrelop_)] +[visit_exp `%X%`_shape{lanetype#9661, dim#9661, i#63830}(`F64`_lanetype, `%`_dim{i#63837}(2))] +[visit_exp lanetype#9661] +[visit_id lanetype#9661] +[visit_exp dim#9661] +[visit_id dim#9661] +[visit_exp i#63830] +[visit_id i#63830] +[visit_exp (`F64`_lanetype, `%`_dim{i#63837}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#63837}(2)] +[visit_exp i#63837] +[visit_id i#63837] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `LT`_vrelop_] +[visit_exp ()] +[visit_exp `%`_u32{i#63823}(73)] +[visit_exp i#63823] +[visit_id i#63823] +[visit_exp (73)] +[visit_exp 73] +[check_dims] dim#9703 i#63920 i#63927 i#63934 lanetype#9703 shape#1030 +dims \ = dim#9703, i#63920, i#63927, i#63934, lanetype#9703, shape#1030 +[visit_exp `VRELOP`_instr{shape#1030}(`%X%`_shape{lanetype#9703, dim#9703, i#63927}(`F64`_lanetype, `%`_dim{i#63934}(2)), `GT`_vrelop_)] +[visit_exp shape#1030] +[visit_id shape#1030] +[visit_exp (`%X%`_shape{lanetype#9703, dim#9703, i#63927}(`F64`_lanetype, `%`_dim{i#63934}(2)), `GT`_vrelop_)] +[visit_exp `%X%`_shape{lanetype#9703, dim#9703, i#63927}(`F64`_lanetype, `%`_dim{i#63934}(2))] +[visit_exp lanetype#9703] +[visit_id lanetype#9703] +[visit_exp dim#9703] +[visit_id dim#9703] +[visit_exp i#63927] +[visit_id i#63927] +[visit_exp (`F64`_lanetype, `%`_dim{i#63934}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#63934}(2)] +[visit_exp i#63934] +[visit_id i#63934] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `GT`_vrelop_] +[visit_exp ()] +[visit_exp `%`_u32{i#63920}(74)] +[visit_exp i#63920] +[visit_id i#63920] +[visit_exp (74)] +[visit_exp 74] +[check_dims] dim#9745 i#64017 i#64024 i#64031 lanetype#9745 shape#1032 +dims \ = dim#9745, i#64017, i#64024, i#64031, lanetype#9745, shape#1032 +[visit_exp `VRELOP`_instr{shape#1032}(`%X%`_shape{lanetype#9745, dim#9745, i#64024}(`F64`_lanetype, `%`_dim{i#64031}(2)), `LE`_vrelop_)] +[visit_exp shape#1032] +[visit_id shape#1032] +[visit_exp (`%X%`_shape{lanetype#9745, dim#9745, i#64024}(`F64`_lanetype, `%`_dim{i#64031}(2)), `LE`_vrelop_)] +[visit_exp `%X%`_shape{lanetype#9745, dim#9745, i#64024}(`F64`_lanetype, `%`_dim{i#64031}(2))] +[visit_exp lanetype#9745] +[visit_id lanetype#9745] +[visit_exp dim#9745] +[visit_id dim#9745] +[visit_exp i#64024] +[visit_id i#64024] +[visit_exp (`F64`_lanetype, `%`_dim{i#64031}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#64031}(2)] +[visit_exp i#64031] +[visit_id i#64031] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `LE`_vrelop_] +[visit_exp ()] +[visit_exp `%`_u32{i#64017}(75)] +[visit_exp i#64017] +[visit_id i#64017] +[visit_exp (75)] +[visit_exp 75] +[check_dims] dim#9787 i#64114 i#64121 i#64128 lanetype#9787 shape#1034 +dims \ = dim#9787, i#64114, i#64121, i#64128, lanetype#9787, shape#1034 +[visit_exp `VRELOP`_instr{shape#1034}(`%X%`_shape{lanetype#9787, dim#9787, i#64121}(`F64`_lanetype, `%`_dim{i#64128}(2)), `GE`_vrelop_)] +[visit_exp shape#1034] +[visit_id shape#1034] +[visit_exp (`%X%`_shape{lanetype#9787, dim#9787, i#64121}(`F64`_lanetype, `%`_dim{i#64128}(2)), `GE`_vrelop_)] +[visit_exp `%X%`_shape{lanetype#9787, dim#9787, i#64121}(`F64`_lanetype, `%`_dim{i#64128}(2))] +[visit_exp lanetype#9787] +[visit_id lanetype#9787] +[visit_exp dim#9787] +[visit_id dim#9787] +[visit_exp i#64121] +[visit_id i#64121] +[visit_exp (`F64`_lanetype, `%`_dim{i#64128}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#64128}(2)] +[visit_exp i#64128] +[visit_id i#64128] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `GE`_vrelop_] +[visit_exp ()] +[visit_exp `%`_u32{i#64114}(76)] +[visit_exp i#64114] +[visit_id i#64114] +[visit_exp (76)] +[visit_exp 76] +ps' = +[check_dims] +[check_dims] i#64211 vectype#259 vvunop#7 +dims \ = i#64211, vectype#259, vvunop#7 +[visit_exp `VVUNOP`_instr{vectype#259, vvunop#7}(`V128`_vectype, `NOT`_vvunop)] +[visit_exp vectype#259] +[visit_id vectype#259] +[visit_exp vvunop#7] +[visit_id vvunop#7] +[visit_exp (`V128`_vectype, `NOT`_vvunop)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp `NOT`_vvunop] +[visit_exp ()] +[visit_exp `%`_u32{i#64211}(77)] +[visit_exp i#64211] +[visit_id i#64211] +[visit_exp (77)] +[visit_exp 77] +ps' = +[check_dims] +[check_dims] i#64236 vectype#261 vvbinop#7 +dims \ = i#64236, vectype#261, vvbinop#7 +[visit_exp `VVBINOP`_instr{vectype#261, vvbinop#7}(`V128`_vectype, `AND`_vvbinop)] +[visit_exp vectype#261] +[visit_id vectype#261] +[visit_exp vvbinop#7] +[visit_id vvbinop#7] +[visit_exp (`V128`_vectype, `AND`_vvbinop)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp `AND`_vvbinop] +[visit_exp ()] +[visit_exp `%`_u32{i#64236}(78)] +[visit_exp i#64236] +[visit_id i#64236] +[visit_exp (78)] +[visit_exp 78] +[check_dims] i#64261 vectype#263 vvbinop#9 +dims \ = i#64261, vectype#263, vvbinop#9 +[visit_exp `VVBINOP`_instr{vectype#263, vvbinop#9}(`V128`_vectype, `ANDNOT`_vvbinop)] +[visit_exp vectype#263] +[visit_id vectype#263] +[visit_exp vvbinop#9] +[visit_id vvbinop#9] +[visit_exp (`V128`_vectype, `ANDNOT`_vvbinop)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp `ANDNOT`_vvbinop] +[visit_exp ()] +[visit_exp `%`_u32{i#64261}(79)] +[visit_exp i#64261] +[visit_id i#64261] +[visit_exp (79)] +[visit_exp 79] +[check_dims] i#64286 vectype#265 vvbinop#11 +dims \ = i#64286, vectype#265, vvbinop#11 +[visit_exp `VVBINOP`_instr{vectype#265, vvbinop#11}(`V128`_vectype, `OR`_vvbinop)] +[visit_exp vectype#265] +[visit_id vectype#265] +[visit_exp vvbinop#11] +[visit_id vvbinop#11] +[visit_exp (`V128`_vectype, `OR`_vvbinop)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp `OR`_vvbinop] +[visit_exp ()] +[visit_exp `%`_u32{i#64286}(80)] +[visit_exp i#64286] +[visit_id i#64286] +[visit_exp (80)] +[visit_exp 80] +[check_dims] i#64311 vectype#267 vvbinop#13 +dims \ = i#64311, vectype#267, vvbinop#13 +[visit_exp `VVBINOP`_instr{vectype#267, vvbinop#13}(`V128`_vectype, `XOR`_vvbinop)] +[visit_exp vectype#267] +[visit_id vectype#267] +[visit_exp vvbinop#13] +[visit_id vvbinop#13] +[visit_exp (`V128`_vectype, `XOR`_vvbinop)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp `XOR`_vvbinop] +[visit_exp ()] +[visit_exp `%`_u32{i#64311}(81)] +[visit_exp i#64311] +[visit_id i#64311] +[visit_exp (81)] +[visit_exp 81] +ps' = +[check_dims] +[check_dims] i#64336 vectype#269 vvternop#7 +dims \ = i#64336, vectype#269, vvternop#7 +[visit_exp `VVTERNOP`_instr{vectype#269, vvternop#7}(`V128`_vectype, `BITSELECT`_vvternop)] +[visit_exp vectype#269] +[visit_id vectype#269] +[visit_exp vvternop#7] +[visit_id vvternop#7] +[visit_exp (`V128`_vectype, `BITSELECT`_vvternop)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp `BITSELECT`_vvternop] +[visit_exp ()] +[visit_exp `%`_u32{i#64336}(82)] +[visit_exp i#64336] +[visit_id i#64336] +[visit_exp (82)] +[visit_exp 82] +ps' = +[check_dims] +[check_dims] i#64361 vectype#271 vvtestop#7 +dims \ = i#64361, vectype#271, vvtestop#7 +[visit_exp `VVTESTOP`_instr{vectype#271, vvtestop#7}(`V128`_vectype, `ANY_TRUE`_vvtestop)] +[visit_exp vectype#271] +[visit_id vectype#271] +[visit_exp vvtestop#7] +[visit_id vvtestop#7] +[visit_exp (`V128`_vectype, `ANY_TRUE`_vvtestop)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp `ANY_TRUE`_vvtestop] +[visit_exp ()] +[visit_exp `%`_u32{i#64361}(83)] +[visit_exp i#64361] +[visit_id i#64361] +[visit_exp (83)] +[visit_exp 83] +ps' = +[check_dims] +[check_dims] dim#9829 i#64386 i#64393 i#64400 lanetype#9829 shape#1036 +dims \ = dim#9829, i#64386, i#64393, i#64400, lanetype#9829, shape#1036 +[visit_exp `VUNOP`_instr{shape#1036}(`%X%`_shape{lanetype#9829, dim#9829, i#64393}(`I8`_lanetype, `%`_dim{i#64400}(16)), `ABS`_vunop_)] +[visit_exp shape#1036] +[visit_id shape#1036] +[visit_exp (`%X%`_shape{lanetype#9829, dim#9829, i#64393}(`I8`_lanetype, `%`_dim{i#64400}(16)), `ABS`_vunop_)] +[visit_exp `%X%`_shape{lanetype#9829, dim#9829, i#64393}(`I8`_lanetype, `%`_dim{i#64400}(16))] +[visit_exp lanetype#9829] +[visit_id lanetype#9829] +[visit_exp dim#9829] +[visit_id dim#9829] +[visit_exp i#64393] +[visit_id i#64393] +[visit_exp (`I8`_lanetype, `%`_dim{i#64400}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#64400}(16)] +[visit_exp i#64400] +[visit_id i#64400] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `ABS`_vunop_] +[visit_exp ()] +[visit_exp `%`_u32{i#64386}(96)] +[visit_exp i#64386] +[visit_id i#64386] +[visit_exp (96)] +[visit_exp 96] +[check_dims] dim#9856 i#64468 i#64475 i#64482 lanetype#9856 shape#1038 +dims \ = dim#9856, i#64468, i#64475, i#64482, lanetype#9856, shape#1038 +[visit_exp `VUNOP`_instr{shape#1038}(`%X%`_shape{lanetype#9856, dim#9856, i#64475}(`I8`_lanetype, `%`_dim{i#64482}(16)), `NEG`_vunop_)] +[visit_exp shape#1038] +[visit_id shape#1038] +[visit_exp (`%X%`_shape{lanetype#9856, dim#9856, i#64475}(`I8`_lanetype, `%`_dim{i#64482}(16)), `NEG`_vunop_)] +[visit_exp `%X%`_shape{lanetype#9856, dim#9856, i#64475}(`I8`_lanetype, `%`_dim{i#64482}(16))] +[visit_exp lanetype#9856] +[visit_id lanetype#9856] +[visit_exp dim#9856] +[visit_id dim#9856] +[visit_exp i#64475] +[visit_id i#64475] +[visit_exp (`I8`_lanetype, `%`_dim{i#64482}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#64482}(16)] +[visit_exp i#64482] +[visit_id i#64482] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `NEG`_vunop_] +[visit_exp ()] +[visit_exp `%`_u32{i#64468}(97)] +[visit_exp i#64468] +[visit_id i#64468] +[visit_exp (97)] +[visit_exp 97] +[check_dims] dim#9883 i#64550 i#64557 i#64564 lanetype#9883 shape#1040 +dims \ = dim#9883, i#64550, i#64557, i#64564, lanetype#9883, shape#1040 +[visit_exp `VUNOP`_instr{shape#1040}(`%X%`_shape{lanetype#9883, dim#9883, i#64557}(`I8`_lanetype, `%`_dim{i#64564}(16)), `POPCNT`_vunop_)] +[visit_exp shape#1040] +[visit_id shape#1040] +[visit_exp (`%X%`_shape{lanetype#9883, dim#9883, i#64557}(`I8`_lanetype, `%`_dim{i#64564}(16)), `POPCNT`_vunop_)] +[visit_exp `%X%`_shape{lanetype#9883, dim#9883, i#64557}(`I8`_lanetype, `%`_dim{i#64564}(16))] +[visit_exp lanetype#9883] +[visit_id lanetype#9883] +[visit_exp dim#9883] +[visit_id dim#9883] +[visit_exp i#64557] +[visit_id i#64557] +[visit_exp (`I8`_lanetype, `%`_dim{i#64564}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#64564}(16)] +[visit_exp i#64564] +[visit_id i#64564] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `POPCNT`_vunop_] +[visit_exp ()] +[visit_exp `%`_u32{i#64550}(98)] +[visit_exp i#64550] +[visit_id i#64550] +[visit_exp (98)] +[visit_exp 98] +ps' = +[check_dims] +[check_dims] dim#9910 i#64632 i#64639 i#64646 lanetype#9910 shape#1042 +dims \ = dim#9910, i#64632, i#64639, i#64646, lanetype#9910, shape#1042 +[visit_exp `VTESTOP`_instr{shape#1042}(`%X%`_shape{lanetype#9910, dim#9910, i#64639}(`I8`_lanetype, `%`_dim{i#64646}(16)), `ALL_TRUE`_vtestop_)] +[visit_exp shape#1042] +[visit_id shape#1042] +[visit_exp (`%X%`_shape{lanetype#9910, dim#9910, i#64639}(`I8`_lanetype, `%`_dim{i#64646}(16)), `ALL_TRUE`_vtestop_)] +[visit_exp `%X%`_shape{lanetype#9910, dim#9910, i#64639}(`I8`_lanetype, `%`_dim{i#64646}(16))] +[visit_exp lanetype#9910] +[visit_id lanetype#9910] +[visit_exp dim#9910] +[visit_id dim#9910] +[visit_exp i#64639] +[visit_id i#64639] +[visit_exp (`I8`_lanetype, `%`_dim{i#64646}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#64646}(16)] +[visit_exp i#64646] +[visit_id i#64646] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `ALL_TRUE`_vtestop_] +[visit_exp ()] +[visit_exp `%`_u32{i#64632}(99)] +[visit_exp i#64632] +[visit_id i#64632] +[visit_exp (99)] +[visit_exp 99] +ps' = +[check_dims] +[check_dims] Jnn#228 dim#9937 i#64714 i#64721 i#64728 ishape#13 lanetype#9937 shape#1054 +dims \ = Jnn#228, dim#9937, i#64714, i#64721, i#64728, ishape#13, lanetype#9937, shape#1054 +[visit_exp `VBITMASK`_instr{ishape#13}(`%`_ishape{shape#1054, Jnn#228}(`%X%`_shape{lanetype#9937, dim#9937, i#64721}(`I8`_lanetype, `%`_dim{i#64728}(16))))] +[visit_exp ishape#13] +[visit_id ishape#13] +[visit_exp (`%`_ishape{shape#1054, Jnn#228}(`%X%`_shape{lanetype#9937, dim#9937, i#64721}(`I8`_lanetype, `%`_dim{i#64728}(16))))] +[visit_exp `%`_ishape{shape#1054, Jnn#228}(`%X%`_shape{lanetype#9937, dim#9937, i#64721}(`I8`_lanetype, `%`_dim{i#64728}(16)))] +[visit_exp shape#1054] +[visit_id shape#1054] +[visit_exp Jnn#228] +[visit_id Jnn#228] +[visit_exp (`%X%`_shape{lanetype#9937, dim#9937, i#64721}(`I8`_lanetype, `%`_dim{i#64728}(16)))] +[visit_exp `%X%`_shape{lanetype#9937, dim#9937, i#64721}(`I8`_lanetype, `%`_dim{i#64728}(16))] +[visit_exp lanetype#9937] +[visit_id lanetype#9937] +[visit_exp dim#9937] +[visit_id dim#9937] +[visit_exp i#64721] +[visit_id i#64721] +[visit_exp (`I8`_lanetype, `%`_dim{i#64728}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#64728}(16)] +[visit_exp i#64728] +[visit_id i#64728] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `%`_u32{i#64714}(100)] +[visit_exp i#64714] +[visit_id i#64714] +[visit_exp (100)] +[visit_exp 100] +ps' = +[check_dims] +[check_dims] Jnn#229 Jnn#230 Jnn#231 Jnn#235 Jnn#239 dim#9949 dim#9961 i#64751 i#64758 i#64765 i#64770 i#64777 ishape_1#25 ishape_2#25 lanetype#9949 lanetype#9961 shape#1056 shape#1057 shape#1058 shape#1069 shape#1081 sx#9753 +dims \ = Jnn#229, Jnn#230, Jnn#231, Jnn#235, Jnn#239, dim#9949, dim#9961, i#64751, i#64758, i#64765, i#64770, i#64777, ishape_1#25, ishape_2#25, lanetype#9949, lanetype#9961, shape#1056, shape#1057, shape#1058, shape#1069, shape#1081, sx#9753 +[visit_exp `VNARROW`_instr{ishape_1#25, ishape_2#25, sx#9753, shape#1056, Jnn#229, shape#1057, Jnn#230, shape#1058, Jnn#231}(`%`_ishape{shape#1069, Jnn#235}(`%X%`_shape{lanetype#9949, dim#9949, i#64758}(`I8`_lanetype, `%`_dim{i#64765}(16))), `%`_ishape{shape#1081, Jnn#239}(`%X%`_shape{lanetype#9961, dim#9961, i#64770}(`I16`_lanetype, `%`_dim{i#64777}(8))), `S`_sx)] +[visit_exp ishape_1#25] +[visit_id ishape_1#25] +[visit_exp ishape_2#25] +[visit_id ishape_2#25] +[visit_exp sx#9753] +[visit_id sx#9753] +[visit_exp shape#1056] +[visit_id shape#1056] +[visit_exp Jnn#229] +[visit_id Jnn#229] +[visit_exp shape#1057] +[visit_id shape#1057] +[visit_exp Jnn#230] +[visit_id Jnn#230] +[visit_exp shape#1058] +[visit_id shape#1058] +[visit_exp Jnn#231] +[visit_id Jnn#231] +[visit_exp (`%`_ishape{shape#1069, Jnn#235}(`%X%`_shape{lanetype#9949, dim#9949, i#64758}(`I8`_lanetype, `%`_dim{i#64765}(16))), `%`_ishape{shape#1081, Jnn#239}(`%X%`_shape{lanetype#9961, dim#9961, i#64770}(`I16`_lanetype, `%`_dim{i#64777}(8))), `S`_sx)] +[visit_exp `%`_ishape{shape#1069, Jnn#235}(`%X%`_shape{lanetype#9949, dim#9949, i#64758}(`I8`_lanetype, `%`_dim{i#64765}(16)))] +[visit_exp shape#1069] +[visit_id shape#1069] +[visit_exp Jnn#235] +[visit_id Jnn#235] +[visit_exp (`%X%`_shape{lanetype#9949, dim#9949, i#64758}(`I8`_lanetype, `%`_dim{i#64765}(16)))] +[visit_exp `%X%`_shape{lanetype#9949, dim#9949, i#64758}(`I8`_lanetype, `%`_dim{i#64765}(16))] +[visit_exp lanetype#9949] +[visit_id lanetype#9949] +[visit_exp dim#9949] +[visit_id dim#9949] +[visit_exp i#64758] +[visit_id i#64758] +[visit_exp (`I8`_lanetype, `%`_dim{i#64765}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#64765}(16)] +[visit_exp i#64765] +[visit_id i#64765] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `%`_ishape{shape#1081, Jnn#239}(`%X%`_shape{lanetype#9961, dim#9961, i#64770}(`I16`_lanetype, `%`_dim{i#64777}(8)))] +[visit_exp shape#1081] +[visit_id shape#1081] +[visit_exp Jnn#239] +[visit_id Jnn#239] +[visit_exp (`%X%`_shape{lanetype#9961, dim#9961, i#64770}(`I16`_lanetype, `%`_dim{i#64777}(8)))] +[visit_exp `%X%`_shape{lanetype#9961, dim#9961, i#64770}(`I16`_lanetype, `%`_dim{i#64777}(8))] +[visit_exp lanetype#9961] +[visit_id lanetype#9961] +[visit_exp dim#9961] +[visit_id dim#9961] +[visit_exp i#64770] +[visit_id i#64770] +[visit_exp (`I16`_lanetype, `%`_dim{i#64777}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#64777}(8)] +[visit_exp i#64777] +[visit_id i#64777] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#64751}(101)] +[visit_exp i#64751] +[visit_id i#64751] +[visit_exp (101)] +[visit_exp 101] +[check_dims] Jnn#240 Jnn#241 Jnn#242 Jnn#246 Jnn#250 dim#9973 dim#9985 i#64800 i#64807 i#64814 i#64819 i#64826 ishape_1#27 ishape_2#27 lanetype#9973 lanetype#9985 shape#1083 shape#1084 shape#1085 shape#1096 shape#1108 sx#9755 +dims \ = Jnn#240, Jnn#241, Jnn#242, Jnn#246, Jnn#250, dim#9973, dim#9985, i#64800, i#64807, i#64814, i#64819, i#64826, ishape_1#27, ishape_2#27, lanetype#9973, lanetype#9985, shape#1083, shape#1084, shape#1085, shape#1096, shape#1108, sx#9755 +[visit_exp `VNARROW`_instr{ishape_1#27, ishape_2#27, sx#9755, shape#1083, Jnn#240, shape#1084, Jnn#241, shape#1085, Jnn#242}(`%`_ishape{shape#1096, Jnn#246}(`%X%`_shape{lanetype#9973, dim#9973, i#64807}(`I8`_lanetype, `%`_dim{i#64814}(16))), `%`_ishape{shape#1108, Jnn#250}(`%X%`_shape{lanetype#9985, dim#9985, i#64819}(`I16`_lanetype, `%`_dim{i#64826}(8))), `U`_sx)] +[visit_exp ishape_1#27] +[visit_id ishape_1#27] +[visit_exp ishape_2#27] +[visit_id ishape_2#27] +[visit_exp sx#9755] +[visit_id sx#9755] +[visit_exp shape#1083] +[visit_id shape#1083] +[visit_exp Jnn#240] +[visit_id Jnn#240] +[visit_exp shape#1084] +[visit_id shape#1084] +[visit_exp Jnn#241] +[visit_id Jnn#241] +[visit_exp shape#1085] +[visit_id shape#1085] +[visit_exp Jnn#242] +[visit_id Jnn#242] +[visit_exp (`%`_ishape{shape#1096, Jnn#246}(`%X%`_shape{lanetype#9973, dim#9973, i#64807}(`I8`_lanetype, `%`_dim{i#64814}(16))), `%`_ishape{shape#1108, Jnn#250}(`%X%`_shape{lanetype#9985, dim#9985, i#64819}(`I16`_lanetype, `%`_dim{i#64826}(8))), `U`_sx)] +[visit_exp `%`_ishape{shape#1096, Jnn#246}(`%X%`_shape{lanetype#9973, dim#9973, i#64807}(`I8`_lanetype, `%`_dim{i#64814}(16)))] +[visit_exp shape#1096] +[visit_id shape#1096] +[visit_exp Jnn#246] +[visit_id Jnn#246] +[visit_exp (`%X%`_shape{lanetype#9973, dim#9973, i#64807}(`I8`_lanetype, `%`_dim{i#64814}(16)))] +[visit_exp `%X%`_shape{lanetype#9973, dim#9973, i#64807}(`I8`_lanetype, `%`_dim{i#64814}(16))] +[visit_exp lanetype#9973] +[visit_id lanetype#9973] +[visit_exp dim#9973] +[visit_id dim#9973] +[visit_exp i#64807] +[visit_id i#64807] +[visit_exp (`I8`_lanetype, `%`_dim{i#64814}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#64814}(16)] +[visit_exp i#64814] +[visit_id i#64814] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `%`_ishape{shape#1108, Jnn#250}(`%X%`_shape{lanetype#9985, dim#9985, i#64819}(`I16`_lanetype, `%`_dim{i#64826}(8)))] +[visit_exp shape#1108] +[visit_id shape#1108] +[visit_exp Jnn#250] +[visit_id Jnn#250] +[visit_exp (`%X%`_shape{lanetype#9985, dim#9985, i#64819}(`I16`_lanetype, `%`_dim{i#64826}(8)))] +[visit_exp `%X%`_shape{lanetype#9985, dim#9985, i#64819}(`I16`_lanetype, `%`_dim{i#64826}(8))] +[visit_exp lanetype#9985] +[visit_id lanetype#9985] +[visit_exp dim#9985] +[visit_id dim#9985] +[visit_exp i#64819] +[visit_id i#64819] +[visit_exp (`I16`_lanetype, `%`_dim{i#64826}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#64826}(8)] +[visit_exp i#64826] +[visit_id i#64826] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#64800}(102)] +[visit_exp i#64800] +[visit_id i#64800] +[visit_exp (102)] +[visit_exp 102] +ps' = +[check_dims] +[check_dims] Jnn#254 dim#9997 i#64849 i#64856 i#64863 ishape#15 lanetype#9997 shape#1120 +dims \ = Jnn#254, dim#9997, i#64849, i#64856, i#64863, ishape#15, lanetype#9997, shape#1120 +[visit_exp `VSHIFTOP`_instr{ishape#15}(`%`_ishape{shape#1120, Jnn#254}(`%X%`_shape{lanetype#9997, dim#9997, i#64856}(`I8`_lanetype, `%`_dim{i#64863}(16))), `SHL`_vshiftop_)] +[visit_exp ishape#15] +[visit_id ishape#15] +[visit_exp (`%`_ishape{shape#1120, Jnn#254}(`%X%`_shape{lanetype#9997, dim#9997, i#64856}(`I8`_lanetype, `%`_dim{i#64863}(16))), `SHL`_vshiftop_)] +[visit_exp `%`_ishape{shape#1120, Jnn#254}(`%X%`_shape{lanetype#9997, dim#9997, i#64856}(`I8`_lanetype, `%`_dim{i#64863}(16)))] +[visit_exp shape#1120] +[visit_id shape#1120] +[visit_exp Jnn#254] +[visit_id Jnn#254] +[visit_exp (`%X%`_shape{lanetype#9997, dim#9997, i#64856}(`I8`_lanetype, `%`_dim{i#64863}(16)))] +[visit_exp `%X%`_shape{lanetype#9997, dim#9997, i#64856}(`I8`_lanetype, `%`_dim{i#64863}(16))] +[visit_exp lanetype#9997] +[visit_id lanetype#9997] +[visit_exp dim#9997] +[visit_id dim#9997] +[visit_exp i#64856] +[visit_id i#64856] +[visit_exp (`I8`_lanetype, `%`_dim{i#64863}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#64863}(16)] +[visit_exp i#64863] +[visit_id i#64863] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `SHL`_vshiftop_] +[visit_exp ()] +[visit_exp `%`_u32{i#64849}(107)] +[visit_exp i#64849] +[visit_id i#64849] +[visit_exp (107)] +[visit_exp 107] +[check_dims] Jnn#258 dim#10054 i#64961 i#64968 i#64975 ishape#17 lanetype#10054 shape#1147 sx#9804 +dims \ = Jnn#258, dim#10054, i#64961, i#64968, i#64975, ishape#17, lanetype#10054, shape#1147, sx#9804 +[visit_exp `VSHIFTOP`_instr{ishape#17}(`%`_ishape{shape#1147, Jnn#258}(`%X%`_shape{lanetype#10054, dim#10054, i#64968}(`I8`_lanetype, `%`_dim{i#64975}(16))), `SHR`_vshiftop_{sx#9804}(`S`_sx))] +[visit_exp ishape#17] +[visit_id ishape#17] +[visit_exp (`%`_ishape{shape#1147, Jnn#258}(`%X%`_shape{lanetype#10054, dim#10054, i#64968}(`I8`_lanetype, `%`_dim{i#64975}(16))), `SHR`_vshiftop_{sx#9804}(`S`_sx))] +[visit_exp `%`_ishape{shape#1147, Jnn#258}(`%X%`_shape{lanetype#10054, dim#10054, i#64968}(`I8`_lanetype, `%`_dim{i#64975}(16)))] +[visit_exp shape#1147] +[visit_id shape#1147] +[visit_exp Jnn#258] +[visit_id Jnn#258] +[visit_exp (`%X%`_shape{lanetype#10054, dim#10054, i#64968}(`I8`_lanetype, `%`_dim{i#64975}(16)))] +[visit_exp `%X%`_shape{lanetype#10054, dim#10054, i#64968}(`I8`_lanetype, `%`_dim{i#64975}(16))] +[visit_exp lanetype#10054] +[visit_id lanetype#10054] +[visit_exp dim#10054] +[visit_id dim#10054] +[visit_exp i#64968] +[visit_id i#64968] +[visit_exp (`I8`_lanetype, `%`_dim{i#64975}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#64975}(16)] +[visit_exp i#64975] +[visit_id i#64975] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `SHR`_vshiftop_{sx#9804}(`S`_sx)] +[visit_exp sx#9804] +[visit_id sx#9804] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#64961}(108)] +[visit_exp i#64961] +[visit_id i#64961] +[visit_exp (108)] +[visit_exp 108] +[check_dims] Jnn#262 dim#10156 i#65148 i#65155 i#65162 ishape#19 lanetype#10156 shape#1189 sx#9838 +dims \ = Jnn#262, dim#10156, i#65148, i#65155, i#65162, ishape#19, lanetype#10156, shape#1189, sx#9838 +[visit_exp `VSHIFTOP`_instr{ishape#19}(`%`_ishape{shape#1189, Jnn#262}(`%X%`_shape{lanetype#10156, dim#10156, i#65155}(`I8`_lanetype, `%`_dim{i#65162}(16))), `SHR`_vshiftop_{sx#9838}(`U`_sx))] +[visit_exp ishape#19] +[visit_id ishape#19] +[visit_exp (`%`_ishape{shape#1189, Jnn#262}(`%X%`_shape{lanetype#10156, dim#10156, i#65155}(`I8`_lanetype, `%`_dim{i#65162}(16))), `SHR`_vshiftop_{sx#9838}(`U`_sx))] +[visit_exp `%`_ishape{shape#1189, Jnn#262}(`%X%`_shape{lanetype#10156, dim#10156, i#65155}(`I8`_lanetype, `%`_dim{i#65162}(16)))] +[visit_exp shape#1189] +[visit_id shape#1189] +[visit_exp Jnn#262] +[visit_id Jnn#262] +[visit_exp (`%X%`_shape{lanetype#10156, dim#10156, i#65155}(`I8`_lanetype, `%`_dim{i#65162}(16)))] +[visit_exp `%X%`_shape{lanetype#10156, dim#10156, i#65155}(`I8`_lanetype, `%`_dim{i#65162}(16))] +[visit_exp lanetype#10156] +[visit_id lanetype#10156] +[visit_exp dim#10156] +[visit_id dim#10156] +[visit_exp i#65155] +[visit_id i#65155] +[visit_exp (`I8`_lanetype, `%`_dim{i#65162}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#65162}(16)] +[visit_exp i#65162] +[visit_id i#65162] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `SHR`_vshiftop_{sx#9838}(`U`_sx)] +[visit_exp sx#9838] +[visit_id sx#9838] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#65148}(109)] +[visit_exp i#65148] +[visit_id i#65148] +[visit_exp (109)] +[visit_exp 109] +ps' = +[check_dims] +[check_dims] dim#10258 i#65335 i#65342 i#65349 lanetype#10258 shape#1221 +dims \ = dim#10258, i#65335, i#65342, i#65349, lanetype#10258, shape#1221 +[visit_exp `VBINOP`_instr{shape#1221}(`%X%`_shape{lanetype#10258, dim#10258, i#65342}(`I8`_lanetype, `%`_dim{i#65349}(16)), `ADD`_vbinop_)] +[visit_exp shape#1221] +[visit_id shape#1221] +[visit_exp (`%X%`_shape{lanetype#10258, dim#10258, i#65342}(`I8`_lanetype, `%`_dim{i#65349}(16)), `ADD`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#10258, dim#10258, i#65342}(`I8`_lanetype, `%`_dim{i#65349}(16))] +[visit_exp lanetype#10258] +[visit_id lanetype#10258] +[visit_exp dim#10258] +[visit_id dim#10258] +[visit_exp i#65342] +[visit_id i#65342] +[visit_exp (`I8`_lanetype, `%`_dim{i#65349}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#65349}(16)] +[visit_exp i#65349] +[visit_id i#65349] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `ADD`_vbinop_] +[visit_exp ()] +[visit_exp `%`_u32{i#65335}(110)] +[visit_exp i#65335] +[visit_id i#65335] +[visit_exp (110)] +[visit_exp 110] +[check_dims] dim#10285 i#65417 i#65424 i#65431 lanetype#10285 shape#1223 sx#10022 +dims \ = dim#10285, i#65417, i#65424, i#65431, lanetype#10285, shape#1223, sx#10022 +[visit_exp `VBINOP`_instr{shape#1223}(`%X%`_shape{lanetype#10285, dim#10285, i#65424}(`I8`_lanetype, `%`_dim{i#65431}(16)), `ADD_SAT`_vbinop_{sx#10022}(`S`_sx))] +[visit_exp shape#1223] +[visit_id shape#1223] +[visit_exp (`%X%`_shape{lanetype#10285, dim#10285, i#65424}(`I8`_lanetype, `%`_dim{i#65431}(16)), `ADD_SAT`_vbinop_{sx#10022}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#10285, dim#10285, i#65424}(`I8`_lanetype, `%`_dim{i#65431}(16))] +[visit_exp lanetype#10285] +[visit_id lanetype#10285] +[visit_exp dim#10285] +[visit_id dim#10285] +[visit_exp i#65424] +[visit_id i#65424] +[visit_exp (`I8`_lanetype, `%`_dim{i#65431}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#65431}(16)] +[visit_exp i#65431] +[visit_id i#65431] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `ADD_SAT`_vbinop_{sx#10022}(`S`_sx)] +[visit_exp sx#10022] +[visit_id sx#10022] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#65417}(111)] +[visit_exp i#65417] +[visit_id i#65417] +[visit_exp (111)] +[visit_exp 111] +[check_dims] dim#10327 i#65544 i#65551 i#65558 lanetype#10327 shape#1225 sx#10146 +dims \ = dim#10327, i#65544, i#65551, i#65558, lanetype#10327, shape#1225, sx#10146 +[visit_exp `VBINOP`_instr{shape#1225}(`%X%`_shape{lanetype#10327, dim#10327, i#65551}(`I8`_lanetype, `%`_dim{i#65558}(16)), `ADD_SAT`_vbinop_{sx#10146}(`U`_sx))] +[visit_exp shape#1225] +[visit_id shape#1225] +[visit_exp (`%X%`_shape{lanetype#10327, dim#10327, i#65551}(`I8`_lanetype, `%`_dim{i#65558}(16)), `ADD_SAT`_vbinop_{sx#10146}(`U`_sx))] +[visit_exp `%X%`_shape{lanetype#10327, dim#10327, i#65551}(`I8`_lanetype, `%`_dim{i#65558}(16))] +[visit_exp lanetype#10327] +[visit_id lanetype#10327] +[visit_exp dim#10327] +[visit_id dim#10327] +[visit_exp i#65551] +[visit_id i#65551] +[visit_exp (`I8`_lanetype, `%`_dim{i#65558}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#65558}(16)] +[visit_exp i#65558] +[visit_id i#65558] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `ADD_SAT`_vbinop_{sx#10146}(`U`_sx)] +[visit_exp sx#10146] +[visit_id sx#10146] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#65544}(112)] +[visit_exp i#65544] +[visit_id i#65544] +[visit_exp (112)] +[visit_exp 112] +[check_dims] dim#10369 i#65671 i#65678 i#65685 lanetype#10369 shape#1227 +dims \ = dim#10369, i#65671, i#65678, i#65685, lanetype#10369, shape#1227 +[visit_exp `VBINOP`_instr{shape#1227}(`%X%`_shape{lanetype#10369, dim#10369, i#65678}(`I8`_lanetype, `%`_dim{i#65685}(16)), `SUB`_vbinop_)] +[visit_exp shape#1227] +[visit_id shape#1227] +[visit_exp (`%X%`_shape{lanetype#10369, dim#10369, i#65678}(`I8`_lanetype, `%`_dim{i#65685}(16)), `SUB`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#10369, dim#10369, i#65678}(`I8`_lanetype, `%`_dim{i#65685}(16))] +[visit_exp lanetype#10369] +[visit_id lanetype#10369] +[visit_exp dim#10369] +[visit_id dim#10369] +[visit_exp i#65678] +[visit_id i#65678] +[visit_exp (`I8`_lanetype, `%`_dim{i#65685}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#65685}(16)] +[visit_exp i#65685] +[visit_id i#65685] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `SUB`_vbinop_] +[visit_exp ()] +[visit_exp `%`_u32{i#65671}(113)] +[visit_exp i#65671] +[visit_id i#65671] +[visit_exp (113)] +[visit_exp 113] +[check_dims] dim#10396 i#65753 i#65760 i#65767 lanetype#10396 shape#1229 sx#10330 +dims \ = dim#10396, i#65753, i#65760, i#65767, lanetype#10396, shape#1229, sx#10330 +[visit_exp `VBINOP`_instr{shape#1229}(`%X%`_shape{lanetype#10396, dim#10396, i#65760}(`I8`_lanetype, `%`_dim{i#65767}(16)), `SUB_SAT`_vbinop_{sx#10330}(`S`_sx))] +[visit_exp shape#1229] +[visit_id shape#1229] +[visit_exp (`%X%`_shape{lanetype#10396, dim#10396, i#65760}(`I8`_lanetype, `%`_dim{i#65767}(16)), `SUB_SAT`_vbinop_{sx#10330}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#10396, dim#10396, i#65760}(`I8`_lanetype, `%`_dim{i#65767}(16))] +[visit_exp lanetype#10396] +[visit_id lanetype#10396] +[visit_exp dim#10396] +[visit_id dim#10396] +[visit_exp i#65760] +[visit_id i#65760] +[visit_exp (`I8`_lanetype, `%`_dim{i#65767}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#65767}(16)] +[visit_exp i#65767] +[visit_id i#65767] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `SUB_SAT`_vbinop_{sx#10330}(`S`_sx)] +[visit_exp sx#10330] +[visit_id sx#10330] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#65753}(114)] +[visit_exp i#65753] +[visit_id i#65753] +[visit_exp (114)] +[visit_exp 114] +[check_dims] dim#10438 i#65880 i#65887 i#65894 lanetype#10438 shape#1231 sx#10454 +dims \ = dim#10438, i#65880, i#65887, i#65894, lanetype#10438, shape#1231, sx#10454 +[visit_exp `VBINOP`_instr{shape#1231}(`%X%`_shape{lanetype#10438, dim#10438, i#65887}(`I8`_lanetype, `%`_dim{i#65894}(16)), `SUB_SAT`_vbinop_{sx#10454}(`U`_sx))] +[visit_exp shape#1231] +[visit_id shape#1231] +[visit_exp (`%X%`_shape{lanetype#10438, dim#10438, i#65887}(`I8`_lanetype, `%`_dim{i#65894}(16)), `SUB_SAT`_vbinop_{sx#10454}(`U`_sx))] +[visit_exp `%X%`_shape{lanetype#10438, dim#10438, i#65887}(`I8`_lanetype, `%`_dim{i#65894}(16))] +[visit_exp lanetype#10438] +[visit_id lanetype#10438] +[visit_exp dim#10438] +[visit_id dim#10438] +[visit_exp i#65887] +[visit_id i#65887] +[visit_exp (`I8`_lanetype, `%`_dim{i#65894}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#65894}(16)] +[visit_exp i#65894] +[visit_id i#65894] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `SUB_SAT`_vbinop_{sx#10454}(`U`_sx)] +[visit_exp sx#10454] +[visit_id sx#10454] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#65880}(115)] +[visit_exp i#65880] +[visit_id i#65880] +[visit_exp (115)] +[visit_exp 115] +[check_dims] dim#10480 i#66007 i#66014 i#66021 lanetype#10480 shape#1233 sx#10578 +dims \ = dim#10480, i#66007, i#66014, i#66021, lanetype#10480, shape#1233, sx#10578 +[visit_exp `VBINOP`_instr{shape#1233}(`%X%`_shape{lanetype#10480, dim#10480, i#66014}(`I8`_lanetype, `%`_dim{i#66021}(16)), `MIN`_vbinop_{sx#10578}(`S`_sx))] +[visit_exp shape#1233] +[visit_id shape#1233] +[visit_exp (`%X%`_shape{lanetype#10480, dim#10480, i#66014}(`I8`_lanetype, `%`_dim{i#66021}(16)), `MIN`_vbinop_{sx#10578}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#10480, dim#10480, i#66014}(`I8`_lanetype, `%`_dim{i#66021}(16))] +[visit_exp lanetype#10480] +[visit_id lanetype#10480] +[visit_exp dim#10480] +[visit_id dim#10480] +[visit_exp i#66014] +[visit_id i#66014] +[visit_exp (`I8`_lanetype, `%`_dim{i#66021}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#66021}(16)] +[visit_exp i#66021] +[visit_id i#66021] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `MIN`_vbinop_{sx#10578}(`S`_sx)] +[visit_exp sx#10578] +[visit_id sx#10578] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#66007}(118)] +[visit_exp i#66007] +[visit_id i#66007] +[visit_exp (118)] +[visit_exp 118] +[check_dims] dim#10522 i#66134 i#66141 i#66148 lanetype#10522 shape#1235 sx#10702 +dims \ = dim#10522, i#66134, i#66141, i#66148, lanetype#10522, shape#1235, sx#10702 +[visit_exp `VBINOP`_instr{shape#1235}(`%X%`_shape{lanetype#10522, dim#10522, i#66141}(`I8`_lanetype, `%`_dim{i#66148}(16)), `MIN`_vbinop_{sx#10702}(`U`_sx))] +[visit_exp shape#1235] +[visit_id shape#1235] +[visit_exp (`%X%`_shape{lanetype#10522, dim#10522, i#66141}(`I8`_lanetype, `%`_dim{i#66148}(16)), `MIN`_vbinop_{sx#10702}(`U`_sx))] +[visit_exp `%X%`_shape{lanetype#10522, dim#10522, i#66141}(`I8`_lanetype, `%`_dim{i#66148}(16))] +[visit_exp lanetype#10522] +[visit_id lanetype#10522] +[visit_exp dim#10522] +[visit_id dim#10522] +[visit_exp i#66141] +[visit_id i#66141] +[visit_exp (`I8`_lanetype, `%`_dim{i#66148}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#66148}(16)] +[visit_exp i#66148] +[visit_id i#66148] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `MIN`_vbinop_{sx#10702}(`U`_sx)] +[visit_exp sx#10702] +[visit_id sx#10702] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#66134}(119)] +[visit_exp i#66134] +[visit_id i#66134] +[visit_exp (119)] +[visit_exp 119] +[check_dims] dim#10564 i#66261 i#66268 i#66275 lanetype#10564 shape#1237 sx#10826 +dims \ = dim#10564, i#66261, i#66268, i#66275, lanetype#10564, shape#1237, sx#10826 +[visit_exp `VBINOP`_instr{shape#1237}(`%X%`_shape{lanetype#10564, dim#10564, i#66268}(`I8`_lanetype, `%`_dim{i#66275}(16)), `MAX`_vbinop_{sx#10826}(`S`_sx))] +[visit_exp shape#1237] +[visit_id shape#1237] +[visit_exp (`%X%`_shape{lanetype#10564, dim#10564, i#66268}(`I8`_lanetype, `%`_dim{i#66275}(16)), `MAX`_vbinop_{sx#10826}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#10564, dim#10564, i#66268}(`I8`_lanetype, `%`_dim{i#66275}(16))] +[visit_exp lanetype#10564] +[visit_id lanetype#10564] +[visit_exp dim#10564] +[visit_id dim#10564] +[visit_exp i#66268] +[visit_id i#66268] +[visit_exp (`I8`_lanetype, `%`_dim{i#66275}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#66275}(16)] +[visit_exp i#66275] +[visit_id i#66275] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `MAX`_vbinop_{sx#10826}(`S`_sx)] +[visit_exp sx#10826] +[visit_id sx#10826] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#66261}(120)] +[visit_exp i#66261] +[visit_id i#66261] +[visit_exp (120)] +[visit_exp 120] +[check_dims] dim#10606 i#66388 i#66395 i#66402 lanetype#10606 shape#1239 sx#10950 +dims \ = dim#10606, i#66388, i#66395, i#66402, lanetype#10606, shape#1239, sx#10950 +[visit_exp `VBINOP`_instr{shape#1239}(`%X%`_shape{lanetype#10606, dim#10606, i#66395}(`I8`_lanetype, `%`_dim{i#66402}(16)), `MAX`_vbinop_{sx#10950}(`U`_sx))] +[visit_exp shape#1239] +[visit_id shape#1239] +[visit_exp (`%X%`_shape{lanetype#10606, dim#10606, i#66395}(`I8`_lanetype, `%`_dim{i#66402}(16)), `MAX`_vbinop_{sx#10950}(`U`_sx))] +[visit_exp `%X%`_shape{lanetype#10606, dim#10606, i#66395}(`I8`_lanetype, `%`_dim{i#66402}(16))] +[visit_exp lanetype#10606] +[visit_id lanetype#10606] +[visit_exp dim#10606] +[visit_id dim#10606] +[visit_exp i#66395] +[visit_id i#66395] +[visit_exp (`I8`_lanetype, `%`_dim{i#66402}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#66402}(16)] +[visit_exp i#66402] +[visit_id i#66402] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `MAX`_vbinop_{sx#10950}(`U`_sx)] +[visit_exp sx#10950] +[visit_id sx#10950] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#66388}(121)] +[visit_exp i#66388] +[visit_id i#66388] +[visit_exp (121)] +[visit_exp 121] +[check_dims] dim#10648 i#66515 i#66522 i#66529 lanetype#10648 shape#1241 +dims \ = dim#10648, i#66515, i#66522, i#66529, lanetype#10648, shape#1241 +[visit_exp `VBINOP`_instr{shape#1241}(`%X%`_shape{lanetype#10648, dim#10648, i#66522}(`I8`_lanetype, `%`_dim{i#66529}(16)), `AVGRU`_vbinop_)] +[visit_exp shape#1241] +[visit_id shape#1241] +[visit_exp (`%X%`_shape{lanetype#10648, dim#10648, i#66522}(`I8`_lanetype, `%`_dim{i#66529}(16)), `AVGRU`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#10648, dim#10648, i#66522}(`I8`_lanetype, `%`_dim{i#66529}(16))] +[visit_exp lanetype#10648] +[visit_id lanetype#10648] +[visit_exp dim#10648] +[visit_id dim#10648] +[visit_exp i#66522] +[visit_id i#66522] +[visit_exp (`I8`_lanetype, `%`_dim{i#66529}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#66529}(16)] +[visit_exp i#66529] +[visit_id i#66529] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `AVGRU`_vbinop_] +[visit_exp ()] +[visit_exp `%`_u32{i#66515}(123)] +[visit_exp i#66515] +[visit_id i#66515] +[visit_exp (123)] +[visit_exp 123] +ps' = +[check_dims] +[check_dims] Jnn#266 Jnn#270 dim#10690 dim#10702 i#66642 i#66649 i#66656 i#66661 i#66668 ishape_1#29 ishape_2#29 lanetype#10690 lanetype#10702 shape#1253 shape#1265 sx#11104 +dims \ = Jnn#266, Jnn#270, dim#10690, dim#10702, i#66642, i#66649, i#66656, i#66661, i#66668, ishape_1#29, ishape_2#29, lanetype#10690, lanetype#10702, shape#1253, shape#1265, sx#11104 +[visit_exp `VEXTUNOP`_instr{ishape_1#29, ishape_2#29}(`%`_ishape{shape#1253, Jnn#266}(`%X%`_shape{lanetype#10690, dim#10690, i#66649}(`I16`_lanetype, `%`_dim{i#66656}(8))), `%`_ishape{shape#1265, Jnn#270}(`%X%`_shape{lanetype#10702, dim#10702, i#66661}(`I8`_lanetype, `%`_dim{i#66668}(16))), `EXTADD_PAIRWISE`_vextunop__{sx#11104}(`S`_sx))] +[visit_exp ishape_1#29] +[visit_id ishape_1#29] +[visit_exp ishape_2#29] +[visit_id ishape_2#29] +[visit_exp (`%`_ishape{shape#1253, Jnn#266}(`%X%`_shape{lanetype#10690, dim#10690, i#66649}(`I16`_lanetype, `%`_dim{i#66656}(8))), `%`_ishape{shape#1265, Jnn#270}(`%X%`_shape{lanetype#10702, dim#10702, i#66661}(`I8`_lanetype, `%`_dim{i#66668}(16))), `EXTADD_PAIRWISE`_vextunop__{sx#11104}(`S`_sx))] +[visit_exp `%`_ishape{shape#1253, Jnn#266}(`%X%`_shape{lanetype#10690, dim#10690, i#66649}(`I16`_lanetype, `%`_dim{i#66656}(8)))] +[visit_exp shape#1253] +[visit_id shape#1253] +[visit_exp Jnn#266] +[visit_id Jnn#266] +[visit_exp (`%X%`_shape{lanetype#10690, dim#10690, i#66649}(`I16`_lanetype, `%`_dim{i#66656}(8)))] +[visit_exp `%X%`_shape{lanetype#10690, dim#10690, i#66649}(`I16`_lanetype, `%`_dim{i#66656}(8))] +[visit_exp lanetype#10690] +[visit_id lanetype#10690] +[visit_exp dim#10690] +[visit_id dim#10690] +[visit_exp i#66649] +[visit_id i#66649] +[visit_exp (`I16`_lanetype, `%`_dim{i#66656}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#66656}(8)] +[visit_exp i#66656] +[visit_id i#66656] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `%`_ishape{shape#1265, Jnn#270}(`%X%`_shape{lanetype#10702, dim#10702, i#66661}(`I8`_lanetype, `%`_dim{i#66668}(16)))] +[visit_exp shape#1265] +[visit_id shape#1265] +[visit_exp Jnn#270] +[visit_id Jnn#270] +[visit_exp (`%X%`_shape{lanetype#10702, dim#10702, i#66661}(`I8`_lanetype, `%`_dim{i#66668}(16)))] +[visit_exp `%X%`_shape{lanetype#10702, dim#10702, i#66661}(`I8`_lanetype, `%`_dim{i#66668}(16))] +[visit_exp lanetype#10702] +[visit_id lanetype#10702] +[visit_exp dim#10702] +[visit_id dim#10702] +[visit_exp i#66661] +[visit_id i#66661] +[visit_exp (`I8`_lanetype, `%`_dim{i#66668}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#66668}(16)] +[visit_exp i#66668] +[visit_id i#66668] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `EXTADD_PAIRWISE`_vextunop__{sx#11104}(`S`_sx)] +[visit_exp sx#11104] +[visit_id sx#11104] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#66642}(124)] +[visit_exp i#66642] +[visit_id i#66642] +[visit_exp (124)] +[visit_exp 124] +[check_dims] Jnn#274 Jnn#278 dim#10925 dim#10937 i#67022 i#67029 i#67036 i#67041 i#67048 ishape_1#31 ishape_2#31 lanetype#10925 lanetype#10937 shape#1368 shape#1380 sx#11138 +dims \ = Jnn#274, Jnn#278, dim#10925, dim#10937, i#67022, i#67029, i#67036, i#67041, i#67048, ishape_1#31, ishape_2#31, lanetype#10925, lanetype#10937, shape#1368, shape#1380, sx#11138 +[visit_exp `VEXTUNOP`_instr{ishape_1#31, ishape_2#31}(`%`_ishape{shape#1368, Jnn#274}(`%X%`_shape{lanetype#10925, dim#10925, i#67029}(`I16`_lanetype, `%`_dim{i#67036}(8))), `%`_ishape{shape#1380, Jnn#278}(`%X%`_shape{lanetype#10937, dim#10937, i#67041}(`I8`_lanetype, `%`_dim{i#67048}(16))), `EXTADD_PAIRWISE`_vextunop__{sx#11138}(`U`_sx))] +[visit_exp ishape_1#31] +[visit_id ishape_1#31] +[visit_exp ishape_2#31] +[visit_id ishape_2#31] +[visit_exp (`%`_ishape{shape#1368, Jnn#274}(`%X%`_shape{lanetype#10925, dim#10925, i#67029}(`I16`_lanetype, `%`_dim{i#67036}(8))), `%`_ishape{shape#1380, Jnn#278}(`%X%`_shape{lanetype#10937, dim#10937, i#67041}(`I8`_lanetype, `%`_dim{i#67048}(16))), `EXTADD_PAIRWISE`_vextunop__{sx#11138}(`U`_sx))] +[visit_exp `%`_ishape{shape#1368, Jnn#274}(`%X%`_shape{lanetype#10925, dim#10925, i#67029}(`I16`_lanetype, `%`_dim{i#67036}(8)))] +[visit_exp shape#1368] +[visit_id shape#1368] +[visit_exp Jnn#274] +[visit_id Jnn#274] +[visit_exp (`%X%`_shape{lanetype#10925, dim#10925, i#67029}(`I16`_lanetype, `%`_dim{i#67036}(8)))] +[visit_exp `%X%`_shape{lanetype#10925, dim#10925, i#67029}(`I16`_lanetype, `%`_dim{i#67036}(8))] +[visit_exp lanetype#10925] +[visit_id lanetype#10925] +[visit_exp dim#10925] +[visit_id dim#10925] +[visit_exp i#67029] +[visit_id i#67029] +[visit_exp (`I16`_lanetype, `%`_dim{i#67036}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#67036}(8)] +[visit_exp i#67036] +[visit_id i#67036] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `%`_ishape{shape#1380, Jnn#278}(`%X%`_shape{lanetype#10937, dim#10937, i#67041}(`I8`_lanetype, `%`_dim{i#67048}(16)))] +[visit_exp shape#1380] +[visit_id shape#1380] +[visit_exp Jnn#278] +[visit_id Jnn#278] +[visit_exp (`%X%`_shape{lanetype#10937, dim#10937, i#67041}(`I8`_lanetype, `%`_dim{i#67048}(16)))] +[visit_exp `%X%`_shape{lanetype#10937, dim#10937, i#67041}(`I8`_lanetype, `%`_dim{i#67048}(16))] +[visit_exp lanetype#10937] +[visit_id lanetype#10937] +[visit_exp dim#10937] +[visit_id dim#10937] +[visit_exp i#67041] +[visit_id i#67041] +[visit_exp (`I8`_lanetype, `%`_dim{i#67048}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#67048}(16)] +[visit_exp i#67048] +[visit_id i#67048] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `EXTADD_PAIRWISE`_vextunop__{sx#11138}(`U`_sx)] +[visit_exp sx#11138] +[visit_id sx#11138] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#67022}(125)] +[visit_exp i#67022] +[visit_id i#67022] +[visit_exp (125)] +[visit_exp 125] +ps' = +[check_dims] +[check_dims] dim#11160 i#67402 i#67409 i#67416 lanetype#11160 shape#1473 +dims \ = dim#11160, i#67402, i#67409, i#67416, lanetype#11160, shape#1473 +[visit_exp `VUNOP`_instr{shape#1473}(`%X%`_shape{lanetype#11160, dim#11160, i#67409}(`I16`_lanetype, `%`_dim{i#67416}(8)), `ABS`_vunop_)] +[visit_exp shape#1473] +[visit_id shape#1473] +[visit_exp (`%X%`_shape{lanetype#11160, dim#11160, i#67409}(`I16`_lanetype, `%`_dim{i#67416}(8)), `ABS`_vunop_)] +[visit_exp `%X%`_shape{lanetype#11160, dim#11160, i#67409}(`I16`_lanetype, `%`_dim{i#67416}(8))] +[visit_exp lanetype#11160] +[visit_id lanetype#11160] +[visit_exp dim#11160] +[visit_id dim#11160] +[visit_exp i#67409] +[visit_id i#67409] +[visit_exp (`I16`_lanetype, `%`_dim{i#67416}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#67416}(8)] +[visit_exp i#67416] +[visit_id i#67416] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `ABS`_vunop_] +[visit_exp ()] +[visit_exp `%`_u32{i#67402}(128)] +[visit_exp i#67402] +[visit_id i#67402] +[visit_exp (128)] +[visit_exp 128] +[check_dims] dim#11187 i#67484 i#67491 i#67498 lanetype#11187 shape#1475 +dims \ = dim#11187, i#67484, i#67491, i#67498, lanetype#11187, shape#1475 +[visit_exp `VUNOP`_instr{shape#1475}(`%X%`_shape{lanetype#11187, dim#11187, i#67491}(`I16`_lanetype, `%`_dim{i#67498}(8)), `NEG`_vunop_)] +[visit_exp shape#1475] +[visit_id shape#1475] +[visit_exp (`%X%`_shape{lanetype#11187, dim#11187, i#67491}(`I16`_lanetype, `%`_dim{i#67498}(8)), `NEG`_vunop_)] +[visit_exp `%X%`_shape{lanetype#11187, dim#11187, i#67491}(`I16`_lanetype, `%`_dim{i#67498}(8))] +[visit_exp lanetype#11187] +[visit_id lanetype#11187] +[visit_exp dim#11187] +[visit_id dim#11187] +[visit_exp i#67491] +[visit_id i#67491] +[visit_exp (`I16`_lanetype, `%`_dim{i#67498}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#67498}(8)] +[visit_exp i#67498] +[visit_id i#67498] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `NEG`_vunop_] +[visit_exp ()] +[visit_exp `%`_u32{i#67484}(129)] +[visit_exp i#67484] +[visit_id i#67484] +[visit_exp (129)] +[visit_exp 129] +ps' = +[check_dims] +[check_dims] dim#11214 i#67566 i#67573 i#67580 lanetype#11214 shape#1477 +dims \ = dim#11214, i#67566, i#67573, i#67580, lanetype#11214, shape#1477 +[visit_exp `VBINOP`_instr{shape#1477}(`%X%`_shape{lanetype#11214, dim#11214, i#67573}(`I16`_lanetype, `%`_dim{i#67580}(8)), `Q15MULR_SATS`_vbinop_)] +[visit_exp shape#1477] +[visit_id shape#1477] +[visit_exp (`%X%`_shape{lanetype#11214, dim#11214, i#67573}(`I16`_lanetype, `%`_dim{i#67580}(8)), `Q15MULR_SATS`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#11214, dim#11214, i#67573}(`I16`_lanetype, `%`_dim{i#67580}(8))] +[visit_exp lanetype#11214] +[visit_id lanetype#11214] +[visit_exp dim#11214] +[visit_id dim#11214] +[visit_exp i#67573] +[visit_id i#67573] +[visit_exp (`I16`_lanetype, `%`_dim{i#67580}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#67580}(8)] +[visit_exp i#67580] +[visit_id i#67580] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `Q15MULR_SATS`_vbinop_] +[visit_exp ()] +[visit_exp `%`_u32{i#67566}(130)] +[visit_exp i#67566] +[visit_id i#67566] +[visit_exp (130)] +[visit_exp 130] +[check_dims] dim#11256 i#67693 i#67700 i#67707 lanetype#11256 shape#1479 +dims \ = dim#11256, i#67693, i#67700, i#67707, lanetype#11256, shape#1479 +[visit_exp `VBINOP`_instr{shape#1479}(`%X%`_shape{lanetype#11256, dim#11256, i#67700}(`I16`_lanetype, `%`_dim{i#67707}(8)), `ADD`_vbinop_)] +[visit_exp shape#1479] +[visit_id shape#1479] +[visit_exp (`%X%`_shape{lanetype#11256, dim#11256, i#67700}(`I16`_lanetype, `%`_dim{i#67707}(8)), `ADD`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#11256, dim#11256, i#67700}(`I16`_lanetype, `%`_dim{i#67707}(8))] +[visit_exp lanetype#11256] +[visit_id lanetype#11256] +[visit_exp dim#11256] +[visit_id dim#11256] +[visit_exp i#67700] +[visit_id i#67700] +[visit_exp (`I16`_lanetype, `%`_dim{i#67707}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#67707}(8)] +[visit_exp i#67707] +[visit_id i#67707] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `ADD`_vbinop_] +[visit_exp ()] +[visit_exp `%`_u32{i#67693}(142)] +[visit_exp i#67693] +[visit_id i#67693] +[visit_exp (142)] +[visit_exp 142] +[check_dims] dim#11283 i#67775 i#67782 i#67789 lanetype#11283 shape#1481 sx#11442 +dims \ = dim#11283, i#67775, i#67782, i#67789, lanetype#11283, shape#1481, sx#11442 +[visit_exp `VBINOP`_instr{shape#1481}(`%X%`_shape{lanetype#11283, dim#11283, i#67782}(`I16`_lanetype, `%`_dim{i#67789}(8)), `ADD_SAT`_vbinop_{sx#11442}(`S`_sx))] +[visit_exp shape#1481] +[visit_id shape#1481] +[visit_exp (`%X%`_shape{lanetype#11283, dim#11283, i#67782}(`I16`_lanetype, `%`_dim{i#67789}(8)), `ADD_SAT`_vbinop_{sx#11442}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#11283, dim#11283, i#67782}(`I16`_lanetype, `%`_dim{i#67789}(8))] +[visit_exp lanetype#11283] +[visit_id lanetype#11283] +[visit_exp dim#11283] +[visit_id dim#11283] +[visit_exp i#67782] +[visit_id i#67782] +[visit_exp (`I16`_lanetype, `%`_dim{i#67789}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#67789}(8)] +[visit_exp i#67789] +[visit_id i#67789] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `ADD_SAT`_vbinop_{sx#11442}(`S`_sx)] +[visit_exp sx#11442] +[visit_id sx#11442] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#67775}(143)] +[visit_exp i#67775] +[visit_id i#67775] +[visit_exp (143)] +[visit_exp 143] +[check_dims] dim#11325 i#67902 i#67909 i#67916 lanetype#11325 shape#1483 sx#11566 +dims \ = dim#11325, i#67902, i#67909, i#67916, lanetype#11325, shape#1483, sx#11566 +[visit_exp `VBINOP`_instr{shape#1483}(`%X%`_shape{lanetype#11325, dim#11325, i#67909}(`I16`_lanetype, `%`_dim{i#67916}(8)), `ADD_SAT`_vbinop_{sx#11566}(`U`_sx))] +[visit_exp shape#1483] +[visit_id shape#1483] +[visit_exp (`%X%`_shape{lanetype#11325, dim#11325, i#67909}(`I16`_lanetype, `%`_dim{i#67916}(8)), `ADD_SAT`_vbinop_{sx#11566}(`U`_sx))] +[visit_exp `%X%`_shape{lanetype#11325, dim#11325, i#67909}(`I16`_lanetype, `%`_dim{i#67916}(8))] +[visit_exp lanetype#11325] +[visit_id lanetype#11325] +[visit_exp dim#11325] +[visit_id dim#11325] +[visit_exp i#67909] +[visit_id i#67909] +[visit_exp (`I16`_lanetype, `%`_dim{i#67916}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#67916}(8)] +[visit_exp i#67916] +[visit_id i#67916] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `ADD_SAT`_vbinop_{sx#11566}(`U`_sx)] +[visit_exp sx#11566] +[visit_id sx#11566] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#67902}(144)] +[visit_exp i#67902] +[visit_id i#67902] +[visit_exp (144)] +[visit_exp 144] +[check_dims] dim#11367 i#68029 i#68036 i#68043 lanetype#11367 shape#1485 +dims \ = dim#11367, i#68029, i#68036, i#68043, lanetype#11367, shape#1485 +[visit_exp `VBINOP`_instr{shape#1485}(`%X%`_shape{lanetype#11367, dim#11367, i#68036}(`I16`_lanetype, `%`_dim{i#68043}(8)), `SUB`_vbinop_)] +[visit_exp shape#1485] +[visit_id shape#1485] +[visit_exp (`%X%`_shape{lanetype#11367, dim#11367, i#68036}(`I16`_lanetype, `%`_dim{i#68043}(8)), `SUB`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#11367, dim#11367, i#68036}(`I16`_lanetype, `%`_dim{i#68043}(8))] +[visit_exp lanetype#11367] +[visit_id lanetype#11367] +[visit_exp dim#11367] +[visit_id dim#11367] +[visit_exp i#68036] +[visit_id i#68036] +[visit_exp (`I16`_lanetype, `%`_dim{i#68043}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#68043}(8)] +[visit_exp i#68043] +[visit_id i#68043] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `SUB`_vbinop_] +[visit_exp ()] +[visit_exp `%`_u32{i#68029}(145)] +[visit_exp i#68029] +[visit_id i#68029] +[visit_exp (145)] +[visit_exp 145] +[check_dims] dim#11394 i#68111 i#68118 i#68125 lanetype#11394 shape#1487 sx#11750 +dims \ = dim#11394, i#68111, i#68118, i#68125, lanetype#11394, shape#1487, sx#11750 +[visit_exp `VBINOP`_instr{shape#1487}(`%X%`_shape{lanetype#11394, dim#11394, i#68118}(`I16`_lanetype, `%`_dim{i#68125}(8)), `SUB_SAT`_vbinop_{sx#11750}(`S`_sx))] +[visit_exp shape#1487] +[visit_id shape#1487] +[visit_exp (`%X%`_shape{lanetype#11394, dim#11394, i#68118}(`I16`_lanetype, `%`_dim{i#68125}(8)), `SUB_SAT`_vbinop_{sx#11750}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#11394, dim#11394, i#68118}(`I16`_lanetype, `%`_dim{i#68125}(8))] +[visit_exp lanetype#11394] +[visit_id lanetype#11394] +[visit_exp dim#11394] +[visit_id dim#11394] +[visit_exp i#68118] +[visit_id i#68118] +[visit_exp (`I16`_lanetype, `%`_dim{i#68125}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#68125}(8)] +[visit_exp i#68125] +[visit_id i#68125] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `SUB_SAT`_vbinop_{sx#11750}(`S`_sx)] +[visit_exp sx#11750] +[visit_id sx#11750] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#68111}(146)] +[visit_exp i#68111] +[visit_id i#68111] +[visit_exp (146)] +[visit_exp 146] +[check_dims] dim#11436 i#68238 i#68245 i#68252 lanetype#11436 shape#1489 sx#11874 +dims \ = dim#11436, i#68238, i#68245, i#68252, lanetype#11436, shape#1489, sx#11874 +[visit_exp `VBINOP`_instr{shape#1489}(`%X%`_shape{lanetype#11436, dim#11436, i#68245}(`I16`_lanetype, `%`_dim{i#68252}(8)), `SUB_SAT`_vbinop_{sx#11874}(`U`_sx))] +[visit_exp shape#1489] +[visit_id shape#1489] +[visit_exp (`%X%`_shape{lanetype#11436, dim#11436, i#68245}(`I16`_lanetype, `%`_dim{i#68252}(8)), `SUB_SAT`_vbinop_{sx#11874}(`U`_sx))] +[visit_exp `%X%`_shape{lanetype#11436, dim#11436, i#68245}(`I16`_lanetype, `%`_dim{i#68252}(8))] +[visit_exp lanetype#11436] +[visit_id lanetype#11436] +[visit_exp dim#11436] +[visit_id dim#11436] +[visit_exp i#68245] +[visit_id i#68245] +[visit_exp (`I16`_lanetype, `%`_dim{i#68252}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#68252}(8)] +[visit_exp i#68252] +[visit_id i#68252] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `SUB_SAT`_vbinop_{sx#11874}(`U`_sx)] +[visit_exp sx#11874] +[visit_id sx#11874] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#68238}(147)] +[visit_exp i#68238] +[visit_id i#68238] +[visit_exp (147)] +[visit_exp 147] +[check_dims] dim#11478 i#68365 i#68372 i#68379 lanetype#11478 shape#1491 +dims \ = dim#11478, i#68365, i#68372, i#68379, lanetype#11478, shape#1491 +[visit_exp `VBINOP`_instr{shape#1491}(`%X%`_shape{lanetype#11478, dim#11478, i#68372}(`I16`_lanetype, `%`_dim{i#68379}(8)), `MUL`_vbinop_)] +[visit_exp shape#1491] +[visit_id shape#1491] +[visit_exp (`%X%`_shape{lanetype#11478, dim#11478, i#68372}(`I16`_lanetype, `%`_dim{i#68379}(8)), `MUL`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#11478, dim#11478, i#68372}(`I16`_lanetype, `%`_dim{i#68379}(8))] +[visit_exp lanetype#11478] +[visit_id lanetype#11478] +[visit_exp dim#11478] +[visit_id dim#11478] +[visit_exp i#68372] +[visit_id i#68372] +[visit_exp (`I16`_lanetype, `%`_dim{i#68379}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#68379}(8)] +[visit_exp i#68379] +[visit_id i#68379] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `MUL`_vbinop_] +[visit_exp ()] +[visit_exp `%`_u32{i#68365}(149)] +[visit_exp i#68365] +[visit_id i#68365] +[visit_exp (149)] +[visit_exp 149] +[check_dims] dim#11505 i#68447 i#68454 i#68461 lanetype#11505 shape#1493 sx#12058 +dims \ = dim#11505, i#68447, i#68454, i#68461, lanetype#11505, shape#1493, sx#12058 +[visit_exp `VBINOP`_instr{shape#1493}(`%X%`_shape{lanetype#11505, dim#11505, i#68454}(`I16`_lanetype, `%`_dim{i#68461}(8)), `MIN`_vbinop_{sx#12058}(`S`_sx))] +[visit_exp shape#1493] +[visit_id shape#1493] +[visit_exp (`%X%`_shape{lanetype#11505, dim#11505, i#68454}(`I16`_lanetype, `%`_dim{i#68461}(8)), `MIN`_vbinop_{sx#12058}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#11505, dim#11505, i#68454}(`I16`_lanetype, `%`_dim{i#68461}(8))] +[visit_exp lanetype#11505] +[visit_id lanetype#11505] +[visit_exp dim#11505] +[visit_id dim#11505] +[visit_exp i#68454] +[visit_id i#68454] +[visit_exp (`I16`_lanetype, `%`_dim{i#68461}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#68461}(8)] +[visit_exp i#68461] +[visit_id i#68461] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `MIN`_vbinop_{sx#12058}(`S`_sx)] +[visit_exp sx#12058] +[visit_id sx#12058] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#68447}(150)] +[visit_exp i#68447] +[visit_id i#68447] +[visit_exp (150)] +[visit_exp 150] +[check_dims] dim#11547 i#68574 i#68581 i#68588 lanetype#11547 shape#1495 sx#12182 +dims \ = dim#11547, i#68574, i#68581, i#68588, lanetype#11547, shape#1495, sx#12182 +[visit_exp `VBINOP`_instr{shape#1495}(`%X%`_shape{lanetype#11547, dim#11547, i#68581}(`I16`_lanetype, `%`_dim{i#68588}(8)), `MIN`_vbinop_{sx#12182}(`U`_sx))] +[visit_exp shape#1495] +[visit_id shape#1495] +[visit_exp (`%X%`_shape{lanetype#11547, dim#11547, i#68581}(`I16`_lanetype, `%`_dim{i#68588}(8)), `MIN`_vbinop_{sx#12182}(`U`_sx))] +[visit_exp `%X%`_shape{lanetype#11547, dim#11547, i#68581}(`I16`_lanetype, `%`_dim{i#68588}(8))] +[visit_exp lanetype#11547] +[visit_id lanetype#11547] +[visit_exp dim#11547] +[visit_id dim#11547] +[visit_exp i#68581] +[visit_id i#68581] +[visit_exp (`I16`_lanetype, `%`_dim{i#68588}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#68588}(8)] +[visit_exp i#68588] +[visit_id i#68588] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `MIN`_vbinop_{sx#12182}(`U`_sx)] +[visit_exp sx#12182] +[visit_id sx#12182] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#68574}(151)] +[visit_exp i#68574] +[visit_id i#68574] +[visit_exp (151)] +[visit_exp 151] +[check_dims] dim#11589 i#68701 i#68708 i#68715 lanetype#11589 shape#1497 sx#12306 +dims \ = dim#11589, i#68701, i#68708, i#68715, lanetype#11589, shape#1497, sx#12306 +[visit_exp `VBINOP`_instr{shape#1497}(`%X%`_shape{lanetype#11589, dim#11589, i#68708}(`I16`_lanetype, `%`_dim{i#68715}(8)), `MAX`_vbinop_{sx#12306}(`S`_sx))] +[visit_exp shape#1497] +[visit_id shape#1497] +[visit_exp (`%X%`_shape{lanetype#11589, dim#11589, i#68708}(`I16`_lanetype, `%`_dim{i#68715}(8)), `MAX`_vbinop_{sx#12306}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#11589, dim#11589, i#68708}(`I16`_lanetype, `%`_dim{i#68715}(8))] +[visit_exp lanetype#11589] +[visit_id lanetype#11589] +[visit_exp dim#11589] +[visit_id dim#11589] +[visit_exp i#68708] +[visit_id i#68708] +[visit_exp (`I16`_lanetype, `%`_dim{i#68715}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#68715}(8)] +[visit_exp i#68715] +[visit_id i#68715] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `MAX`_vbinop_{sx#12306}(`S`_sx)] +[visit_exp sx#12306] +[visit_id sx#12306] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#68701}(152)] +[visit_exp i#68701] +[visit_id i#68701] +[visit_exp (152)] +[visit_exp 152] +[check_dims] dim#11631 i#68828 i#68835 i#68842 lanetype#11631 shape#1499 sx#12430 +dims \ = dim#11631, i#68828, i#68835, i#68842, lanetype#11631, shape#1499, sx#12430 +[visit_exp `VBINOP`_instr{shape#1499}(`%X%`_shape{lanetype#11631, dim#11631, i#68835}(`I16`_lanetype, `%`_dim{i#68842}(8)), `MAX`_vbinop_{sx#12430}(`U`_sx))] +[visit_exp shape#1499] +[visit_id shape#1499] +[visit_exp (`%X%`_shape{lanetype#11631, dim#11631, i#68835}(`I16`_lanetype, `%`_dim{i#68842}(8)), `MAX`_vbinop_{sx#12430}(`U`_sx))] +[visit_exp `%X%`_shape{lanetype#11631, dim#11631, i#68835}(`I16`_lanetype, `%`_dim{i#68842}(8))] +[visit_exp lanetype#11631] +[visit_id lanetype#11631] +[visit_exp dim#11631] +[visit_id dim#11631] +[visit_exp i#68835] +[visit_id i#68835] +[visit_exp (`I16`_lanetype, `%`_dim{i#68842}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#68842}(8)] +[visit_exp i#68842] +[visit_id i#68842] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `MAX`_vbinop_{sx#12430}(`U`_sx)] +[visit_exp sx#12430] +[visit_id sx#12430] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#68828}(153)] +[visit_exp i#68828] +[visit_id i#68828] +[visit_exp (153)] +[visit_exp 153] +[check_dims] dim#11673 i#68955 i#68962 i#68969 lanetype#11673 shape#1501 +dims \ = dim#11673, i#68955, i#68962, i#68969, lanetype#11673, shape#1501 +[visit_exp `VBINOP`_instr{shape#1501}(`%X%`_shape{lanetype#11673, dim#11673, i#68962}(`I16`_lanetype, `%`_dim{i#68969}(8)), `AVGRU`_vbinop_)] +[visit_exp shape#1501] +[visit_id shape#1501] +[visit_exp (`%X%`_shape{lanetype#11673, dim#11673, i#68962}(`I16`_lanetype, `%`_dim{i#68969}(8)), `AVGRU`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#11673, dim#11673, i#68962}(`I16`_lanetype, `%`_dim{i#68969}(8))] +[visit_exp lanetype#11673] +[visit_id lanetype#11673] +[visit_exp dim#11673] +[visit_id dim#11673] +[visit_exp i#68962] +[visit_id i#68962] +[visit_exp (`I16`_lanetype, `%`_dim{i#68969}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#68969}(8)] +[visit_exp i#68969] +[visit_id i#68969] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `AVGRU`_vbinop_] +[visit_exp ()] +[visit_exp `%`_u32{i#68955}(155)] +[visit_exp i#68955] +[visit_id i#68955] +[visit_exp (155)] +[visit_exp 155] +[check_dims] dim#11715 i#69082 i#69089 i#69096 lanetype#11715 shape#1503 +dims \ = dim#11715, i#69082, i#69089, i#69096, lanetype#11715, shape#1503 +[visit_exp `VBINOP`_instr{shape#1503}(`%X%`_shape{lanetype#11715, dim#11715, i#69089}(`I16`_lanetype, `%`_dim{i#69096}(8)), `RELAXED_Q15MULRS`_vbinop_)] +[visit_exp shape#1503] +[visit_id shape#1503] +[visit_exp (`%X%`_shape{lanetype#11715, dim#11715, i#69089}(`I16`_lanetype, `%`_dim{i#69096}(8)), `RELAXED_Q15MULRS`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#11715, dim#11715, i#69089}(`I16`_lanetype, `%`_dim{i#69096}(8))] +[visit_exp lanetype#11715] +[visit_id lanetype#11715] +[visit_exp dim#11715] +[visit_id dim#11715] +[visit_exp i#69089] +[visit_id i#69089] +[visit_exp (`I16`_lanetype, `%`_dim{i#69096}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#69096}(8)] +[visit_exp i#69096] +[visit_id i#69096] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `RELAXED_Q15MULRS`_vbinop_] +[visit_exp ()] +[visit_exp `%`_u32{i#69082}(273)] +[visit_exp i#69082] +[visit_id i#69082] +[visit_exp (273)] +[visit_exp 273] +ps' = +[check_dims] +[check_dims] dim#11757 i#69209 i#69216 i#69223 lanetype#11757 shape#1505 +dims \ = dim#11757, i#69209, i#69216, i#69223, lanetype#11757, shape#1505 +[visit_exp `VTESTOP`_instr{shape#1505}(`%X%`_shape{lanetype#11757, dim#11757, i#69216}(`I16`_lanetype, `%`_dim{i#69223}(8)), `ALL_TRUE`_vtestop_)] +[visit_exp shape#1505] +[visit_id shape#1505] +[visit_exp (`%X%`_shape{lanetype#11757, dim#11757, i#69216}(`I16`_lanetype, `%`_dim{i#69223}(8)), `ALL_TRUE`_vtestop_)] +[visit_exp `%X%`_shape{lanetype#11757, dim#11757, i#69216}(`I16`_lanetype, `%`_dim{i#69223}(8))] +[visit_exp lanetype#11757] +[visit_id lanetype#11757] +[visit_exp dim#11757] +[visit_id dim#11757] +[visit_exp i#69216] +[visit_id i#69216] +[visit_exp (`I16`_lanetype, `%`_dim{i#69223}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#69223}(8)] +[visit_exp i#69223] +[visit_id i#69223] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `ALL_TRUE`_vtestop_] +[visit_exp ()] +[visit_exp `%`_u32{i#69209}(131)] +[visit_exp i#69209] +[visit_id i#69209] +[visit_exp (131)] +[visit_exp 131] +ps' = +[check_dims] +[check_dims] Jnn#282 dim#11784 i#69291 i#69298 i#69305 ishape#21 lanetype#11784 shape#1517 +dims \ = Jnn#282, dim#11784, i#69291, i#69298, i#69305, ishape#21, lanetype#11784, shape#1517 +[visit_exp `VBITMASK`_instr{ishape#21}(`%`_ishape{shape#1517, Jnn#282}(`%X%`_shape{lanetype#11784, dim#11784, i#69298}(`I16`_lanetype, `%`_dim{i#69305}(8))))] +[visit_exp ishape#21] +[visit_id ishape#21] +[visit_exp (`%`_ishape{shape#1517, Jnn#282}(`%X%`_shape{lanetype#11784, dim#11784, i#69298}(`I16`_lanetype, `%`_dim{i#69305}(8))))] +[visit_exp `%`_ishape{shape#1517, Jnn#282}(`%X%`_shape{lanetype#11784, dim#11784, i#69298}(`I16`_lanetype, `%`_dim{i#69305}(8)))] +[visit_exp shape#1517] +[visit_id shape#1517] +[visit_exp Jnn#282] +[visit_id Jnn#282] +[visit_exp (`%X%`_shape{lanetype#11784, dim#11784, i#69298}(`I16`_lanetype, `%`_dim{i#69305}(8)))] +[visit_exp `%X%`_shape{lanetype#11784, dim#11784, i#69298}(`I16`_lanetype, `%`_dim{i#69305}(8))] +[visit_exp lanetype#11784] +[visit_id lanetype#11784] +[visit_exp dim#11784] +[visit_id dim#11784] +[visit_exp i#69298] +[visit_id i#69298] +[visit_exp (`I16`_lanetype, `%`_dim{i#69305}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#69305}(8)] +[visit_exp i#69305] +[visit_id i#69305] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `%`_u32{i#69291}(132)] +[visit_exp i#69291] +[visit_id i#69291] +[visit_exp (132)] +[visit_exp 132] +ps' = +[check_dims] +[check_dims] Jnn#283 Jnn#284 Jnn#285 Jnn#289 Jnn#293 dim#11796 dim#11808 i#69328 i#69335 i#69342 i#69347 i#69354 ishape_1#33 ishape_2#33 lanetype#11796 lanetype#11808 shape#1519 shape#1520 shape#1521 shape#1532 shape#1544 sx#12672 +dims \ = Jnn#283, Jnn#284, Jnn#285, Jnn#289, Jnn#293, dim#11796, dim#11808, i#69328, i#69335, i#69342, i#69347, i#69354, ishape_1#33, ishape_2#33, lanetype#11796, lanetype#11808, shape#1519, shape#1520, shape#1521, shape#1532, shape#1544, sx#12672 +[visit_exp `VNARROW`_instr{ishape_1#33, ishape_2#33, sx#12672, shape#1519, Jnn#283, shape#1520, Jnn#284, shape#1521, Jnn#285}(`%`_ishape{shape#1532, Jnn#289}(`%X%`_shape{lanetype#11796, dim#11796, i#69335}(`I16`_lanetype, `%`_dim{i#69342}(8))), `%`_ishape{shape#1544, Jnn#293}(`%X%`_shape{lanetype#11808, dim#11808, i#69347}(`I32`_lanetype, `%`_dim{i#69354}(4))), `S`_sx)] +[visit_exp ishape_1#33] +[visit_id ishape_1#33] +[visit_exp ishape_2#33] +[visit_id ishape_2#33] +[visit_exp sx#12672] +[visit_id sx#12672] +[visit_exp shape#1519] +[visit_id shape#1519] +[visit_exp Jnn#283] +[visit_id Jnn#283] +[visit_exp shape#1520] +[visit_id shape#1520] +[visit_exp Jnn#284] +[visit_id Jnn#284] +[visit_exp shape#1521] +[visit_id shape#1521] +[visit_exp Jnn#285] +[visit_id Jnn#285] +[visit_exp (`%`_ishape{shape#1532, Jnn#289}(`%X%`_shape{lanetype#11796, dim#11796, i#69335}(`I16`_lanetype, `%`_dim{i#69342}(8))), `%`_ishape{shape#1544, Jnn#293}(`%X%`_shape{lanetype#11808, dim#11808, i#69347}(`I32`_lanetype, `%`_dim{i#69354}(4))), `S`_sx)] +[visit_exp `%`_ishape{shape#1532, Jnn#289}(`%X%`_shape{lanetype#11796, dim#11796, i#69335}(`I16`_lanetype, `%`_dim{i#69342}(8)))] +[visit_exp shape#1532] +[visit_id shape#1532] +[visit_exp Jnn#289] +[visit_id Jnn#289] +[visit_exp (`%X%`_shape{lanetype#11796, dim#11796, i#69335}(`I16`_lanetype, `%`_dim{i#69342}(8)))] +[visit_exp `%X%`_shape{lanetype#11796, dim#11796, i#69335}(`I16`_lanetype, `%`_dim{i#69342}(8))] +[visit_exp lanetype#11796] +[visit_id lanetype#11796] +[visit_exp dim#11796] +[visit_id dim#11796] +[visit_exp i#69335] +[visit_id i#69335] +[visit_exp (`I16`_lanetype, `%`_dim{i#69342}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#69342}(8)] +[visit_exp i#69342] +[visit_id i#69342] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `%`_ishape{shape#1544, Jnn#293}(`%X%`_shape{lanetype#11808, dim#11808, i#69347}(`I32`_lanetype, `%`_dim{i#69354}(4)))] +[visit_exp shape#1544] +[visit_id shape#1544] +[visit_exp Jnn#293] +[visit_id Jnn#293] +[visit_exp (`%X%`_shape{lanetype#11808, dim#11808, i#69347}(`I32`_lanetype, `%`_dim{i#69354}(4)))] +[visit_exp `%X%`_shape{lanetype#11808, dim#11808, i#69347}(`I32`_lanetype, `%`_dim{i#69354}(4))] +[visit_exp lanetype#11808] +[visit_id lanetype#11808] +[visit_exp dim#11808] +[visit_id dim#11808] +[visit_exp i#69347] +[visit_id i#69347] +[visit_exp (`I32`_lanetype, `%`_dim{i#69354}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#69354}(4)] +[visit_exp i#69354] +[visit_id i#69354] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#69328}(133)] +[visit_exp i#69328] +[visit_id i#69328] +[visit_exp (133)] +[visit_exp 133] +[check_dims] Jnn#294 Jnn#295 Jnn#296 Jnn#300 Jnn#304 dim#11820 dim#11832 i#69377 i#69384 i#69391 i#69396 i#69403 ishape_1#35 ishape_2#35 lanetype#11820 lanetype#11832 shape#1546 shape#1547 shape#1548 shape#1559 shape#1571 sx#12674 +dims \ = Jnn#294, Jnn#295, Jnn#296, Jnn#300, Jnn#304, dim#11820, dim#11832, i#69377, i#69384, i#69391, i#69396, i#69403, ishape_1#35, ishape_2#35, lanetype#11820, lanetype#11832, shape#1546, shape#1547, shape#1548, shape#1559, shape#1571, sx#12674 +[visit_exp `VNARROW`_instr{ishape_1#35, ishape_2#35, sx#12674, shape#1546, Jnn#294, shape#1547, Jnn#295, shape#1548, Jnn#296}(`%`_ishape{shape#1559, Jnn#300}(`%X%`_shape{lanetype#11820, dim#11820, i#69384}(`I16`_lanetype, `%`_dim{i#69391}(8))), `%`_ishape{shape#1571, Jnn#304}(`%X%`_shape{lanetype#11832, dim#11832, i#69396}(`I32`_lanetype, `%`_dim{i#69403}(4))), `U`_sx)] +[visit_exp ishape_1#35] +[visit_id ishape_1#35] +[visit_exp ishape_2#35] +[visit_id ishape_2#35] +[visit_exp sx#12674] +[visit_id sx#12674] +[visit_exp shape#1546] +[visit_id shape#1546] +[visit_exp Jnn#294] +[visit_id Jnn#294] +[visit_exp shape#1547] +[visit_id shape#1547] +[visit_exp Jnn#295] +[visit_id Jnn#295] +[visit_exp shape#1548] +[visit_id shape#1548] +[visit_exp Jnn#296] +[visit_id Jnn#296] +[visit_exp (`%`_ishape{shape#1559, Jnn#300}(`%X%`_shape{lanetype#11820, dim#11820, i#69384}(`I16`_lanetype, `%`_dim{i#69391}(8))), `%`_ishape{shape#1571, Jnn#304}(`%X%`_shape{lanetype#11832, dim#11832, i#69396}(`I32`_lanetype, `%`_dim{i#69403}(4))), `U`_sx)] +[visit_exp `%`_ishape{shape#1559, Jnn#300}(`%X%`_shape{lanetype#11820, dim#11820, i#69384}(`I16`_lanetype, `%`_dim{i#69391}(8)))] +[visit_exp shape#1559] +[visit_id shape#1559] +[visit_exp Jnn#300] +[visit_id Jnn#300] +[visit_exp (`%X%`_shape{lanetype#11820, dim#11820, i#69384}(`I16`_lanetype, `%`_dim{i#69391}(8)))] +[visit_exp `%X%`_shape{lanetype#11820, dim#11820, i#69384}(`I16`_lanetype, `%`_dim{i#69391}(8))] +[visit_exp lanetype#11820] +[visit_id lanetype#11820] +[visit_exp dim#11820] +[visit_id dim#11820] +[visit_exp i#69384] +[visit_id i#69384] +[visit_exp (`I16`_lanetype, `%`_dim{i#69391}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#69391}(8)] +[visit_exp i#69391] +[visit_id i#69391] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `%`_ishape{shape#1571, Jnn#304}(`%X%`_shape{lanetype#11832, dim#11832, i#69396}(`I32`_lanetype, `%`_dim{i#69403}(4)))] +[visit_exp shape#1571] +[visit_id shape#1571] +[visit_exp Jnn#304] +[visit_id Jnn#304] +[visit_exp (`%X%`_shape{lanetype#11832, dim#11832, i#69396}(`I32`_lanetype, `%`_dim{i#69403}(4)))] +[visit_exp `%X%`_shape{lanetype#11832, dim#11832, i#69396}(`I32`_lanetype, `%`_dim{i#69403}(4))] +[visit_exp lanetype#11832] +[visit_id lanetype#11832] +[visit_exp dim#11832] +[visit_id dim#11832] +[visit_exp i#69396] +[visit_id i#69396] +[visit_exp (`I32`_lanetype, `%`_dim{i#69403}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#69403}(4)] +[visit_exp i#69403] +[visit_id i#69403] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#69377}(134)] +[visit_exp i#69377] +[visit_id i#69377] +[visit_exp (134)] +[visit_exp 134] +ps' = +[check_dims] +[check_dims] dim#11844 dim#11856 half#56 i#69426 i#69433 i#69440 i#69445 i#69452 lanetype#11844 lanetype#11856 shape_1#7 shape_2#7 sx#12708 +dims \ = dim#11844, dim#11856, half#56, i#69426, i#69433, i#69440, i#69445, i#69452, lanetype#11844, lanetype#11856, shape_1#7, shape_2#7, sx#12708 +[visit_exp `VCVTOP`_instr{shape_1#7, shape_2#7}(`%X%`_shape{lanetype#11844, dim#11844, i#69433}(`I16`_lanetype, `%`_dim{i#69440}(8)), `%X%`_shape{lanetype#11856, dim#11856, i#69445}(`I8`_lanetype, `%`_dim{i#69452}(16)), `EXTEND`_vcvtop__{half#56, sx#12708}(`LOW`_half, `S`_sx))] +[visit_exp shape_1#7] +[visit_id shape_1#7] +[visit_exp shape_2#7] +[visit_id shape_2#7] +[visit_exp (`%X%`_shape{lanetype#11844, dim#11844, i#69433}(`I16`_lanetype, `%`_dim{i#69440}(8)), `%X%`_shape{lanetype#11856, dim#11856, i#69445}(`I8`_lanetype, `%`_dim{i#69452}(16)), `EXTEND`_vcvtop__{half#56, sx#12708}(`LOW`_half, `S`_sx))] +[visit_exp `%X%`_shape{lanetype#11844, dim#11844, i#69433}(`I16`_lanetype, `%`_dim{i#69440}(8))] +[visit_exp lanetype#11844] +[visit_id lanetype#11844] +[visit_exp dim#11844] +[visit_id dim#11844] +[visit_exp i#69433] +[visit_id i#69433] +[visit_exp (`I16`_lanetype, `%`_dim{i#69440}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#69440}(8)] +[visit_exp i#69440] +[visit_id i#69440] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `%X%`_shape{lanetype#11856, dim#11856, i#69445}(`I8`_lanetype, `%`_dim{i#69452}(16))] +[visit_exp lanetype#11856] +[visit_id lanetype#11856] +[visit_exp dim#11856] +[visit_id dim#11856] +[visit_exp i#69445] +[visit_id i#69445] +[visit_exp (`I8`_lanetype, `%`_dim{i#69452}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#69452}(16)] +[visit_exp i#69452] +[visit_id i#69452] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `EXTEND`_vcvtop__{half#56, sx#12708}(`LOW`_half, `S`_sx)] +[visit_exp half#56] +[visit_id half#56] +[visit_exp sx#12708] +[visit_id sx#12708] +[visit_exp (`LOW`_half, `S`_sx)] +[visit_exp `LOW`_half] +[visit_exp ()] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#69426}(135)] +[visit_exp i#69426] +[visit_id i#69426] +[visit_exp (135)] +[visit_exp 135] +[check_dims] dim#11959 dim#11971 half#90 i#69686 i#69693 i#69700 i#69705 i#69712 lanetype#11959 lanetype#11971 shape_1#9 shape_2#9 sx#12742 +dims \ = dim#11959, dim#11971, half#90, i#69686, i#69693, i#69700, i#69705, i#69712, lanetype#11959, lanetype#11971, shape_1#9, shape_2#9, sx#12742 +[visit_exp `VCVTOP`_instr{shape_1#9, shape_2#9}(`%X%`_shape{lanetype#11959, dim#11959, i#69693}(`I16`_lanetype, `%`_dim{i#69700}(8)), `%X%`_shape{lanetype#11971, dim#11971, i#69705}(`I8`_lanetype, `%`_dim{i#69712}(16)), `EXTEND`_vcvtop__{half#90, sx#12742}(`HIGH`_half, `S`_sx))] +[visit_exp shape_1#9] +[visit_id shape_1#9] +[visit_exp shape_2#9] +[visit_id shape_2#9] +[visit_exp (`%X%`_shape{lanetype#11959, dim#11959, i#69693}(`I16`_lanetype, `%`_dim{i#69700}(8)), `%X%`_shape{lanetype#11971, dim#11971, i#69705}(`I8`_lanetype, `%`_dim{i#69712}(16)), `EXTEND`_vcvtop__{half#90, sx#12742}(`HIGH`_half, `S`_sx))] +[visit_exp `%X%`_shape{lanetype#11959, dim#11959, i#69693}(`I16`_lanetype, `%`_dim{i#69700}(8))] +[visit_exp lanetype#11959] +[visit_id lanetype#11959] +[visit_exp dim#11959] +[visit_id dim#11959] +[visit_exp i#69693] +[visit_id i#69693] +[visit_exp (`I16`_lanetype, `%`_dim{i#69700}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#69700}(8)] +[visit_exp i#69700] +[visit_id i#69700] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `%X%`_shape{lanetype#11971, dim#11971, i#69705}(`I8`_lanetype, `%`_dim{i#69712}(16))] +[visit_exp lanetype#11971] +[visit_id lanetype#11971] +[visit_exp dim#11971] +[visit_id dim#11971] +[visit_exp i#69705] +[visit_id i#69705] +[visit_exp (`I8`_lanetype, `%`_dim{i#69712}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#69712}(16)] +[visit_exp i#69712] +[visit_id i#69712] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `EXTEND`_vcvtop__{half#90, sx#12742}(`HIGH`_half, `S`_sx)] +[visit_exp half#90] +[visit_id half#90] +[visit_exp sx#12742] +[visit_id sx#12742] +[visit_exp (`HIGH`_half, `S`_sx)] +[visit_exp `HIGH`_half] +[visit_exp ()] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#69686}(136)] +[visit_exp i#69686] +[visit_id i#69686] +[visit_exp (136)] +[visit_exp 136] +[check_dims] dim#12074 dim#12086 half#124 i#69946 i#69953 i#69960 i#69965 i#69972 lanetype#12074 lanetype#12086 shape_1#11 shape_2#11 sx#12776 +dims \ = dim#12074, dim#12086, half#124, i#69946, i#69953, i#69960, i#69965, i#69972, lanetype#12074, lanetype#12086, shape_1#11, shape_2#11, sx#12776 +[visit_exp `VCVTOP`_instr{shape_1#11, shape_2#11}(`%X%`_shape{lanetype#12074, dim#12074, i#69953}(`I16`_lanetype, `%`_dim{i#69960}(8)), `%X%`_shape{lanetype#12086, dim#12086, i#69965}(`I8`_lanetype, `%`_dim{i#69972}(16)), `EXTEND`_vcvtop__{half#124, sx#12776}(`LOW`_half, `U`_sx))] +[visit_exp shape_1#11] +[visit_id shape_1#11] +[visit_exp shape_2#11] +[visit_id shape_2#11] +[visit_exp (`%X%`_shape{lanetype#12074, dim#12074, i#69953}(`I16`_lanetype, `%`_dim{i#69960}(8)), `%X%`_shape{lanetype#12086, dim#12086, i#69965}(`I8`_lanetype, `%`_dim{i#69972}(16)), `EXTEND`_vcvtop__{half#124, sx#12776}(`LOW`_half, `U`_sx))] +[visit_exp `%X%`_shape{lanetype#12074, dim#12074, i#69953}(`I16`_lanetype, `%`_dim{i#69960}(8))] +[visit_exp lanetype#12074] +[visit_id lanetype#12074] +[visit_exp dim#12074] +[visit_id dim#12074] +[visit_exp i#69953] +[visit_id i#69953] +[visit_exp (`I16`_lanetype, `%`_dim{i#69960}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#69960}(8)] +[visit_exp i#69960] +[visit_id i#69960] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `%X%`_shape{lanetype#12086, dim#12086, i#69965}(`I8`_lanetype, `%`_dim{i#69972}(16))] +[visit_exp lanetype#12086] +[visit_id lanetype#12086] +[visit_exp dim#12086] +[visit_id dim#12086] +[visit_exp i#69965] +[visit_id i#69965] +[visit_exp (`I8`_lanetype, `%`_dim{i#69972}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#69972}(16)] +[visit_exp i#69972] +[visit_id i#69972] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `EXTEND`_vcvtop__{half#124, sx#12776}(`LOW`_half, `U`_sx)] +[visit_exp half#124] +[visit_id half#124] +[visit_exp sx#12776] +[visit_id sx#12776] +[visit_exp (`LOW`_half, `U`_sx)] +[visit_exp `LOW`_half] +[visit_exp ()] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#69946}(137)] +[visit_exp i#69946] +[visit_id i#69946] +[visit_exp (137)] +[visit_exp 137] +[check_dims] dim#12189 dim#12201 half#158 i#70206 i#70213 i#70220 i#70225 i#70232 lanetype#12189 lanetype#12201 shape_1#13 shape_2#13 sx#12810 +dims \ = dim#12189, dim#12201, half#158, i#70206, i#70213, i#70220, i#70225, i#70232, lanetype#12189, lanetype#12201, shape_1#13, shape_2#13, sx#12810 +[visit_exp `VCVTOP`_instr{shape_1#13, shape_2#13}(`%X%`_shape{lanetype#12189, dim#12189, i#70213}(`I16`_lanetype, `%`_dim{i#70220}(8)), `%X%`_shape{lanetype#12201, dim#12201, i#70225}(`I8`_lanetype, `%`_dim{i#70232}(16)), `EXTEND`_vcvtop__{half#158, sx#12810}(`HIGH`_half, `U`_sx))] +[visit_exp shape_1#13] +[visit_id shape_1#13] +[visit_exp shape_2#13] +[visit_id shape_2#13] +[visit_exp (`%X%`_shape{lanetype#12189, dim#12189, i#70213}(`I16`_lanetype, `%`_dim{i#70220}(8)), `%X%`_shape{lanetype#12201, dim#12201, i#70225}(`I8`_lanetype, `%`_dim{i#70232}(16)), `EXTEND`_vcvtop__{half#158, sx#12810}(`HIGH`_half, `U`_sx))] +[visit_exp `%X%`_shape{lanetype#12189, dim#12189, i#70213}(`I16`_lanetype, `%`_dim{i#70220}(8))] +[visit_exp lanetype#12189] +[visit_id lanetype#12189] +[visit_exp dim#12189] +[visit_id dim#12189] +[visit_exp i#70213] +[visit_id i#70213] +[visit_exp (`I16`_lanetype, `%`_dim{i#70220}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#70220}(8)] +[visit_exp i#70220] +[visit_id i#70220] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `%X%`_shape{lanetype#12201, dim#12201, i#70225}(`I8`_lanetype, `%`_dim{i#70232}(16))] +[visit_exp lanetype#12201] +[visit_id lanetype#12201] +[visit_exp dim#12201] +[visit_id dim#12201] +[visit_exp i#70225] +[visit_id i#70225] +[visit_exp (`I8`_lanetype, `%`_dim{i#70232}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#70232}(16)] +[visit_exp i#70232] +[visit_id i#70232] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `EXTEND`_vcvtop__{half#158, sx#12810}(`HIGH`_half, `U`_sx)] +[visit_exp half#158] +[visit_id half#158] +[visit_exp sx#12810] +[visit_id sx#12810] +[visit_exp (`HIGH`_half, `U`_sx)] +[visit_exp `HIGH`_half] +[visit_exp ()] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#70206}(138)] +[visit_exp i#70206] +[visit_id i#70206] +[visit_exp (138)] +[visit_exp 138] +ps' = +[check_dims] +[check_dims] Jnn#308 dim#12304 i#70466 i#70473 i#70480 ishape#23 lanetype#12304 shape#1583 +dims \ = Jnn#308, dim#12304, i#70466, i#70473, i#70480, ishape#23, lanetype#12304, shape#1583 +[visit_exp `VSHIFTOP`_instr{ishape#23}(`%`_ishape{shape#1583, Jnn#308}(`%X%`_shape{lanetype#12304, dim#12304, i#70473}(`I16`_lanetype, `%`_dim{i#70480}(8))), `SHL`_vshiftop_)] +[visit_exp ishape#23] +[visit_id ishape#23] +[visit_exp (`%`_ishape{shape#1583, Jnn#308}(`%X%`_shape{lanetype#12304, dim#12304, i#70473}(`I16`_lanetype, `%`_dim{i#70480}(8))), `SHL`_vshiftop_)] +[visit_exp `%`_ishape{shape#1583, Jnn#308}(`%X%`_shape{lanetype#12304, dim#12304, i#70473}(`I16`_lanetype, `%`_dim{i#70480}(8)))] +[visit_exp shape#1583] +[visit_id shape#1583] +[visit_exp Jnn#308] +[visit_id Jnn#308] +[visit_exp (`%X%`_shape{lanetype#12304, dim#12304, i#70473}(`I16`_lanetype, `%`_dim{i#70480}(8)))] +[visit_exp `%X%`_shape{lanetype#12304, dim#12304, i#70473}(`I16`_lanetype, `%`_dim{i#70480}(8))] +[visit_exp lanetype#12304] +[visit_id lanetype#12304] +[visit_exp dim#12304] +[visit_id dim#12304] +[visit_exp i#70473] +[visit_id i#70473] +[visit_exp (`I16`_lanetype, `%`_dim{i#70480}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#70480}(8)] +[visit_exp i#70480] +[visit_id i#70480] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `SHL`_vshiftop_] +[visit_exp ()] +[visit_exp `%`_u32{i#70466}(139)] +[visit_exp i#70466] +[visit_id i#70466] +[visit_exp (139)] +[visit_exp 139] +[check_dims] Jnn#312 dim#12361 i#70578 i#70585 i#70592 ishape#25 lanetype#12361 shape#1610 sx#12859 +dims \ = Jnn#312, dim#12361, i#70578, i#70585, i#70592, ishape#25, lanetype#12361, shape#1610, sx#12859 +[visit_exp `VSHIFTOP`_instr{ishape#25}(`%`_ishape{shape#1610, Jnn#312}(`%X%`_shape{lanetype#12361, dim#12361, i#70585}(`I16`_lanetype, `%`_dim{i#70592}(8))), `SHR`_vshiftop_{sx#12859}(`S`_sx))] +[visit_exp ishape#25] +[visit_id ishape#25] +[visit_exp (`%`_ishape{shape#1610, Jnn#312}(`%X%`_shape{lanetype#12361, dim#12361, i#70585}(`I16`_lanetype, `%`_dim{i#70592}(8))), `SHR`_vshiftop_{sx#12859}(`S`_sx))] +[visit_exp `%`_ishape{shape#1610, Jnn#312}(`%X%`_shape{lanetype#12361, dim#12361, i#70585}(`I16`_lanetype, `%`_dim{i#70592}(8)))] +[visit_exp shape#1610] +[visit_id shape#1610] +[visit_exp Jnn#312] +[visit_id Jnn#312] +[visit_exp (`%X%`_shape{lanetype#12361, dim#12361, i#70585}(`I16`_lanetype, `%`_dim{i#70592}(8)))] +[visit_exp `%X%`_shape{lanetype#12361, dim#12361, i#70585}(`I16`_lanetype, `%`_dim{i#70592}(8))] +[visit_exp lanetype#12361] +[visit_id lanetype#12361] +[visit_exp dim#12361] +[visit_id dim#12361] +[visit_exp i#70585] +[visit_id i#70585] +[visit_exp (`I16`_lanetype, `%`_dim{i#70592}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#70592}(8)] +[visit_exp i#70592] +[visit_id i#70592] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `SHR`_vshiftop_{sx#12859}(`S`_sx)] +[visit_exp sx#12859] +[visit_id sx#12859] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#70578}(140)] +[visit_exp i#70578] +[visit_id i#70578] +[visit_exp (140)] +[visit_exp 140] +[check_dims] Jnn#316 dim#12463 i#70765 i#70772 i#70779 ishape#27 lanetype#12463 shape#1652 sx#12893 +dims \ = Jnn#316, dim#12463, i#70765, i#70772, i#70779, ishape#27, lanetype#12463, shape#1652, sx#12893 +[visit_exp `VSHIFTOP`_instr{ishape#27}(`%`_ishape{shape#1652, Jnn#316}(`%X%`_shape{lanetype#12463, dim#12463, i#70772}(`I16`_lanetype, `%`_dim{i#70779}(8))), `SHR`_vshiftop_{sx#12893}(`U`_sx))] +[visit_exp ishape#27] +[visit_id ishape#27] +[visit_exp (`%`_ishape{shape#1652, Jnn#316}(`%X%`_shape{lanetype#12463, dim#12463, i#70772}(`I16`_lanetype, `%`_dim{i#70779}(8))), `SHR`_vshiftop_{sx#12893}(`U`_sx))] +[visit_exp `%`_ishape{shape#1652, Jnn#316}(`%X%`_shape{lanetype#12463, dim#12463, i#70772}(`I16`_lanetype, `%`_dim{i#70779}(8)))] +[visit_exp shape#1652] +[visit_id shape#1652] +[visit_exp Jnn#316] +[visit_id Jnn#316] +[visit_exp (`%X%`_shape{lanetype#12463, dim#12463, i#70772}(`I16`_lanetype, `%`_dim{i#70779}(8)))] +[visit_exp `%X%`_shape{lanetype#12463, dim#12463, i#70772}(`I16`_lanetype, `%`_dim{i#70779}(8))] +[visit_exp lanetype#12463] +[visit_id lanetype#12463] +[visit_exp dim#12463] +[visit_id dim#12463] +[visit_exp i#70772] +[visit_id i#70772] +[visit_exp (`I16`_lanetype, `%`_dim{i#70779}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#70779}(8)] +[visit_exp i#70779] +[visit_id i#70779] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `SHR`_vshiftop_{sx#12893}(`U`_sx)] +[visit_exp sx#12893] +[visit_id sx#12893] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#70765}(141)] +[visit_exp i#70765] +[visit_id i#70765] +[visit_exp (141)] +[visit_exp 141] +ps' = +[check_dims] +[check_dims] Jnn#320 Jnn#324 dim#12565 dim#12577 half#192 i#70952 i#70959 i#70966 i#70971 i#70978 ishape_1#37 ishape_2#37 lanetype#12565 lanetype#12577 shape#1694 shape#1706 sx#12927 +dims \ = Jnn#320, Jnn#324, dim#12565, dim#12577, half#192, i#70952, i#70959, i#70966, i#70971, i#70978, ishape_1#37, ishape_2#37, lanetype#12565, lanetype#12577, shape#1694, shape#1706, sx#12927 +[visit_exp `VEXTBINOP`_instr{ishape_1#37, ishape_2#37}(`%`_ishape{shape#1694, Jnn#320}(`%X%`_shape{lanetype#12565, dim#12565, i#70959}(`I16`_lanetype, `%`_dim{i#70966}(8))), `%`_ishape{shape#1706, Jnn#324}(`%X%`_shape{lanetype#12577, dim#12577, i#70971}(`I8`_lanetype, `%`_dim{i#70978}(16))), `EXTMUL`_vextbinop__{half#192, sx#12927}(`LOW`_half, `S`_sx))] +[visit_exp ishape_1#37] +[visit_id ishape_1#37] +[visit_exp ishape_2#37] +[visit_id ishape_2#37] +[visit_exp (`%`_ishape{shape#1694, Jnn#320}(`%X%`_shape{lanetype#12565, dim#12565, i#70959}(`I16`_lanetype, `%`_dim{i#70966}(8))), `%`_ishape{shape#1706, Jnn#324}(`%X%`_shape{lanetype#12577, dim#12577, i#70971}(`I8`_lanetype, `%`_dim{i#70978}(16))), `EXTMUL`_vextbinop__{half#192, sx#12927}(`LOW`_half, `S`_sx))] +[visit_exp `%`_ishape{shape#1694, Jnn#320}(`%X%`_shape{lanetype#12565, dim#12565, i#70959}(`I16`_lanetype, `%`_dim{i#70966}(8)))] +[visit_exp shape#1694] +[visit_id shape#1694] +[visit_exp Jnn#320] +[visit_id Jnn#320] +[visit_exp (`%X%`_shape{lanetype#12565, dim#12565, i#70959}(`I16`_lanetype, `%`_dim{i#70966}(8)))] +[visit_exp `%X%`_shape{lanetype#12565, dim#12565, i#70959}(`I16`_lanetype, `%`_dim{i#70966}(8))] +[visit_exp lanetype#12565] +[visit_id lanetype#12565] +[visit_exp dim#12565] +[visit_id dim#12565] +[visit_exp i#70959] +[visit_id i#70959] +[visit_exp (`I16`_lanetype, `%`_dim{i#70966}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#70966}(8)] +[visit_exp i#70966] +[visit_id i#70966] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `%`_ishape{shape#1706, Jnn#324}(`%X%`_shape{lanetype#12577, dim#12577, i#70971}(`I8`_lanetype, `%`_dim{i#70978}(16)))] +[visit_exp shape#1706] +[visit_id shape#1706] +[visit_exp Jnn#324] +[visit_id Jnn#324] +[visit_exp (`%X%`_shape{lanetype#12577, dim#12577, i#70971}(`I8`_lanetype, `%`_dim{i#70978}(16)))] +[visit_exp `%X%`_shape{lanetype#12577, dim#12577, i#70971}(`I8`_lanetype, `%`_dim{i#70978}(16))] +[visit_exp lanetype#12577] +[visit_id lanetype#12577] +[visit_exp dim#12577] +[visit_id dim#12577] +[visit_exp i#70971] +[visit_id i#70971] +[visit_exp (`I8`_lanetype, `%`_dim{i#70978}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#70978}(16)] +[visit_exp i#70978] +[visit_id i#70978] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `EXTMUL`_vextbinop__{half#192, sx#12927}(`LOW`_half, `S`_sx)] +[visit_exp half#192] +[visit_id half#192] +[visit_exp sx#12927] +[visit_id sx#12927] +[visit_exp (`LOW`_half, `S`_sx)] +[visit_exp `LOW`_half] +[visit_exp ()] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#70952}(156)] +[visit_exp i#70952] +[visit_id i#70952] +[visit_exp (156)] +[visit_exp 156] +[check_dims] Jnn#328 Jnn#332 dim#12800 dim#12812 half#226 i#71332 i#71339 i#71346 i#71351 i#71358 ishape_1#39 ishape_2#39 lanetype#12800 lanetype#12812 shape#1809 shape#1821 sx#12961 +dims \ = Jnn#328, Jnn#332, dim#12800, dim#12812, half#226, i#71332, i#71339, i#71346, i#71351, i#71358, ishape_1#39, ishape_2#39, lanetype#12800, lanetype#12812, shape#1809, shape#1821, sx#12961 +[visit_exp `VEXTBINOP`_instr{ishape_1#39, ishape_2#39}(`%`_ishape{shape#1809, Jnn#328}(`%X%`_shape{lanetype#12800, dim#12800, i#71339}(`I16`_lanetype, `%`_dim{i#71346}(8))), `%`_ishape{shape#1821, Jnn#332}(`%X%`_shape{lanetype#12812, dim#12812, i#71351}(`I8`_lanetype, `%`_dim{i#71358}(16))), `EXTMUL`_vextbinop__{half#226, sx#12961}(`HIGH`_half, `S`_sx))] +[visit_exp ishape_1#39] +[visit_id ishape_1#39] +[visit_exp ishape_2#39] +[visit_id ishape_2#39] +[visit_exp (`%`_ishape{shape#1809, Jnn#328}(`%X%`_shape{lanetype#12800, dim#12800, i#71339}(`I16`_lanetype, `%`_dim{i#71346}(8))), `%`_ishape{shape#1821, Jnn#332}(`%X%`_shape{lanetype#12812, dim#12812, i#71351}(`I8`_lanetype, `%`_dim{i#71358}(16))), `EXTMUL`_vextbinop__{half#226, sx#12961}(`HIGH`_half, `S`_sx))] +[visit_exp `%`_ishape{shape#1809, Jnn#328}(`%X%`_shape{lanetype#12800, dim#12800, i#71339}(`I16`_lanetype, `%`_dim{i#71346}(8)))] +[visit_exp shape#1809] +[visit_id shape#1809] +[visit_exp Jnn#328] +[visit_id Jnn#328] +[visit_exp (`%X%`_shape{lanetype#12800, dim#12800, i#71339}(`I16`_lanetype, `%`_dim{i#71346}(8)))] +[visit_exp `%X%`_shape{lanetype#12800, dim#12800, i#71339}(`I16`_lanetype, `%`_dim{i#71346}(8))] +[visit_exp lanetype#12800] +[visit_id lanetype#12800] +[visit_exp dim#12800] +[visit_id dim#12800] +[visit_exp i#71339] +[visit_id i#71339] +[visit_exp (`I16`_lanetype, `%`_dim{i#71346}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#71346}(8)] +[visit_exp i#71346] +[visit_id i#71346] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `%`_ishape{shape#1821, Jnn#332}(`%X%`_shape{lanetype#12812, dim#12812, i#71351}(`I8`_lanetype, `%`_dim{i#71358}(16)))] +[visit_exp shape#1821] +[visit_id shape#1821] +[visit_exp Jnn#332] +[visit_id Jnn#332] +[visit_exp (`%X%`_shape{lanetype#12812, dim#12812, i#71351}(`I8`_lanetype, `%`_dim{i#71358}(16)))] +[visit_exp `%X%`_shape{lanetype#12812, dim#12812, i#71351}(`I8`_lanetype, `%`_dim{i#71358}(16))] +[visit_exp lanetype#12812] +[visit_id lanetype#12812] +[visit_exp dim#12812] +[visit_id dim#12812] +[visit_exp i#71351] +[visit_id i#71351] +[visit_exp (`I8`_lanetype, `%`_dim{i#71358}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#71358}(16)] +[visit_exp i#71358] +[visit_id i#71358] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `EXTMUL`_vextbinop__{half#226, sx#12961}(`HIGH`_half, `S`_sx)] +[visit_exp half#226] +[visit_id half#226] +[visit_exp sx#12961] +[visit_id sx#12961] +[visit_exp (`HIGH`_half, `S`_sx)] +[visit_exp `HIGH`_half] +[visit_exp ()] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#71332}(157)] +[visit_exp i#71332] +[visit_id i#71332] +[visit_exp (157)] +[visit_exp 157] +[check_dims] Jnn#336 Jnn#340 dim#13035 dim#13047 half#260 i#71712 i#71719 i#71726 i#71731 i#71738 ishape_1#41 ishape_2#41 lanetype#13035 lanetype#13047 shape#1924 shape#1936 sx#12995 +dims \ = Jnn#336, Jnn#340, dim#13035, dim#13047, half#260, i#71712, i#71719, i#71726, i#71731, i#71738, ishape_1#41, ishape_2#41, lanetype#13035, lanetype#13047, shape#1924, shape#1936, sx#12995 +[visit_exp `VEXTBINOP`_instr{ishape_1#41, ishape_2#41}(`%`_ishape{shape#1924, Jnn#336}(`%X%`_shape{lanetype#13035, dim#13035, i#71719}(`I16`_lanetype, `%`_dim{i#71726}(8))), `%`_ishape{shape#1936, Jnn#340}(`%X%`_shape{lanetype#13047, dim#13047, i#71731}(`I8`_lanetype, `%`_dim{i#71738}(16))), `EXTMUL`_vextbinop__{half#260, sx#12995}(`LOW`_half, `U`_sx))] +[visit_exp ishape_1#41] +[visit_id ishape_1#41] +[visit_exp ishape_2#41] +[visit_id ishape_2#41] +[visit_exp (`%`_ishape{shape#1924, Jnn#336}(`%X%`_shape{lanetype#13035, dim#13035, i#71719}(`I16`_lanetype, `%`_dim{i#71726}(8))), `%`_ishape{shape#1936, Jnn#340}(`%X%`_shape{lanetype#13047, dim#13047, i#71731}(`I8`_lanetype, `%`_dim{i#71738}(16))), `EXTMUL`_vextbinop__{half#260, sx#12995}(`LOW`_half, `U`_sx))] +[visit_exp `%`_ishape{shape#1924, Jnn#336}(`%X%`_shape{lanetype#13035, dim#13035, i#71719}(`I16`_lanetype, `%`_dim{i#71726}(8)))] +[visit_exp shape#1924] +[visit_id shape#1924] +[visit_exp Jnn#336] +[visit_id Jnn#336] +[visit_exp (`%X%`_shape{lanetype#13035, dim#13035, i#71719}(`I16`_lanetype, `%`_dim{i#71726}(8)))] +[visit_exp `%X%`_shape{lanetype#13035, dim#13035, i#71719}(`I16`_lanetype, `%`_dim{i#71726}(8))] +[visit_exp lanetype#13035] +[visit_id lanetype#13035] +[visit_exp dim#13035] +[visit_id dim#13035] +[visit_exp i#71719] +[visit_id i#71719] +[visit_exp (`I16`_lanetype, `%`_dim{i#71726}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#71726}(8)] +[visit_exp i#71726] +[visit_id i#71726] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `%`_ishape{shape#1936, Jnn#340}(`%X%`_shape{lanetype#13047, dim#13047, i#71731}(`I8`_lanetype, `%`_dim{i#71738}(16)))] +[visit_exp shape#1936] +[visit_id shape#1936] +[visit_exp Jnn#340] +[visit_id Jnn#340] +[visit_exp (`%X%`_shape{lanetype#13047, dim#13047, i#71731}(`I8`_lanetype, `%`_dim{i#71738}(16)))] +[visit_exp `%X%`_shape{lanetype#13047, dim#13047, i#71731}(`I8`_lanetype, `%`_dim{i#71738}(16))] +[visit_exp lanetype#13047] +[visit_id lanetype#13047] +[visit_exp dim#13047] +[visit_id dim#13047] +[visit_exp i#71731] +[visit_id i#71731] +[visit_exp (`I8`_lanetype, `%`_dim{i#71738}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#71738}(16)] +[visit_exp i#71738] +[visit_id i#71738] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `EXTMUL`_vextbinop__{half#260, sx#12995}(`LOW`_half, `U`_sx)] +[visit_exp half#260] +[visit_id half#260] +[visit_exp sx#12995] +[visit_id sx#12995] +[visit_exp (`LOW`_half, `U`_sx)] +[visit_exp `LOW`_half] +[visit_exp ()] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#71712}(158)] +[visit_exp i#71712] +[visit_id i#71712] +[visit_exp (158)] +[visit_exp 158] +[check_dims] Jnn#344 Jnn#348 dim#13270 dim#13282 half#294 i#72092 i#72099 i#72106 i#72111 i#72118 ishape_1#43 ishape_2#43 lanetype#13270 lanetype#13282 shape#2039 shape#2051 sx#13029 +dims \ = Jnn#344, Jnn#348, dim#13270, dim#13282, half#294, i#72092, i#72099, i#72106, i#72111, i#72118, ishape_1#43, ishape_2#43, lanetype#13270, lanetype#13282, shape#2039, shape#2051, sx#13029 +[visit_exp `VEXTBINOP`_instr{ishape_1#43, ishape_2#43}(`%`_ishape{shape#2039, Jnn#344}(`%X%`_shape{lanetype#13270, dim#13270, i#72099}(`I16`_lanetype, `%`_dim{i#72106}(8))), `%`_ishape{shape#2051, Jnn#348}(`%X%`_shape{lanetype#13282, dim#13282, i#72111}(`I8`_lanetype, `%`_dim{i#72118}(16))), `EXTMUL`_vextbinop__{half#294, sx#13029}(`HIGH`_half, `U`_sx))] +[visit_exp ishape_1#43] +[visit_id ishape_1#43] +[visit_exp ishape_2#43] +[visit_id ishape_2#43] +[visit_exp (`%`_ishape{shape#2039, Jnn#344}(`%X%`_shape{lanetype#13270, dim#13270, i#72099}(`I16`_lanetype, `%`_dim{i#72106}(8))), `%`_ishape{shape#2051, Jnn#348}(`%X%`_shape{lanetype#13282, dim#13282, i#72111}(`I8`_lanetype, `%`_dim{i#72118}(16))), `EXTMUL`_vextbinop__{half#294, sx#13029}(`HIGH`_half, `U`_sx))] +[visit_exp `%`_ishape{shape#2039, Jnn#344}(`%X%`_shape{lanetype#13270, dim#13270, i#72099}(`I16`_lanetype, `%`_dim{i#72106}(8)))] +[visit_exp shape#2039] +[visit_id shape#2039] +[visit_exp Jnn#344] +[visit_id Jnn#344] +[visit_exp (`%X%`_shape{lanetype#13270, dim#13270, i#72099}(`I16`_lanetype, `%`_dim{i#72106}(8)))] +[visit_exp `%X%`_shape{lanetype#13270, dim#13270, i#72099}(`I16`_lanetype, `%`_dim{i#72106}(8))] +[visit_exp lanetype#13270] +[visit_id lanetype#13270] +[visit_exp dim#13270] +[visit_id dim#13270] +[visit_exp i#72099] +[visit_id i#72099] +[visit_exp (`I16`_lanetype, `%`_dim{i#72106}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#72106}(8)] +[visit_exp i#72106] +[visit_id i#72106] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `%`_ishape{shape#2051, Jnn#348}(`%X%`_shape{lanetype#13282, dim#13282, i#72111}(`I8`_lanetype, `%`_dim{i#72118}(16)))] +[visit_exp shape#2051] +[visit_id shape#2051] +[visit_exp Jnn#348] +[visit_id Jnn#348] +[visit_exp (`%X%`_shape{lanetype#13282, dim#13282, i#72111}(`I8`_lanetype, `%`_dim{i#72118}(16)))] +[visit_exp `%X%`_shape{lanetype#13282, dim#13282, i#72111}(`I8`_lanetype, `%`_dim{i#72118}(16))] +[visit_exp lanetype#13282] +[visit_id lanetype#13282] +[visit_exp dim#13282] +[visit_id dim#13282] +[visit_exp i#72111] +[visit_id i#72111] +[visit_exp (`I8`_lanetype, `%`_dim{i#72118}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#72118}(16)] +[visit_exp i#72118] +[visit_id i#72118] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `EXTMUL`_vextbinop__{half#294, sx#13029}(`HIGH`_half, `U`_sx)] +[visit_exp half#294] +[visit_id half#294] +[visit_exp sx#13029] +[visit_id sx#13029] +[visit_exp (`HIGH`_half, `U`_sx)] +[visit_exp `HIGH`_half] +[visit_exp ()] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#72092}(159)] +[visit_exp i#72092] +[visit_id i#72092] +[visit_exp (159)] +[visit_exp 159] +[check_dims] Jnn#352 Jnn#356 dim#13505 dim#13517 i#72472 i#72479 i#72486 i#72491 i#72498 ishape_1#45 ishape_2#45 lanetype#13505 lanetype#13517 shape#2154 shape#2166 +dims \ = Jnn#352, Jnn#356, dim#13505, dim#13517, i#72472, i#72479, i#72486, i#72491, i#72498, ishape_1#45, ishape_2#45, lanetype#13505, lanetype#13517, shape#2154, shape#2166 +[visit_exp `VEXTBINOP`_instr{ishape_1#45, ishape_2#45}(`%`_ishape{shape#2154, Jnn#352}(`%X%`_shape{lanetype#13505, dim#13505, i#72479}(`I16`_lanetype, `%`_dim{i#72486}(8))), `%`_ishape{shape#2166, Jnn#356}(`%X%`_shape{lanetype#13517, dim#13517, i#72491}(`I8`_lanetype, `%`_dim{i#72498}(16))), `RELAXED_DOTS`_vextbinop__)] +[visit_exp ishape_1#45] +[visit_id ishape_1#45] +[visit_exp ishape_2#45] +[visit_id ishape_2#45] +[visit_exp (`%`_ishape{shape#2154, Jnn#352}(`%X%`_shape{lanetype#13505, dim#13505, i#72479}(`I16`_lanetype, `%`_dim{i#72486}(8))), `%`_ishape{shape#2166, Jnn#356}(`%X%`_shape{lanetype#13517, dim#13517, i#72491}(`I8`_lanetype, `%`_dim{i#72498}(16))), `RELAXED_DOTS`_vextbinop__)] +[visit_exp `%`_ishape{shape#2154, Jnn#352}(`%X%`_shape{lanetype#13505, dim#13505, i#72479}(`I16`_lanetype, `%`_dim{i#72486}(8)))] +[visit_exp shape#2154] +[visit_id shape#2154] +[visit_exp Jnn#352] +[visit_id Jnn#352] +[visit_exp (`%X%`_shape{lanetype#13505, dim#13505, i#72479}(`I16`_lanetype, `%`_dim{i#72486}(8)))] +[visit_exp `%X%`_shape{lanetype#13505, dim#13505, i#72479}(`I16`_lanetype, `%`_dim{i#72486}(8))] +[visit_exp lanetype#13505] +[visit_id lanetype#13505] +[visit_exp dim#13505] +[visit_id dim#13505] +[visit_exp i#72479] +[visit_id i#72479] +[visit_exp (`I16`_lanetype, `%`_dim{i#72486}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#72486}(8)] +[visit_exp i#72486] +[visit_id i#72486] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `%`_ishape{shape#2166, Jnn#356}(`%X%`_shape{lanetype#13517, dim#13517, i#72491}(`I8`_lanetype, `%`_dim{i#72498}(16)))] +[visit_exp shape#2166] +[visit_id shape#2166] +[visit_exp Jnn#356] +[visit_id Jnn#356] +[visit_exp (`%X%`_shape{lanetype#13517, dim#13517, i#72491}(`I8`_lanetype, `%`_dim{i#72498}(16)))] +[visit_exp `%X%`_shape{lanetype#13517, dim#13517, i#72491}(`I8`_lanetype, `%`_dim{i#72498}(16))] +[visit_exp lanetype#13517] +[visit_id lanetype#13517] +[visit_exp dim#13517] +[visit_id dim#13517] +[visit_exp i#72491] +[visit_id i#72491] +[visit_exp (`I8`_lanetype, `%`_dim{i#72498}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#72498}(16)] +[visit_exp i#72498] +[visit_id i#72498] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `RELAXED_DOTS`_vextbinop__] +[visit_exp ()] +[visit_exp `%`_u32{i#72472}(274)] +[visit_exp i#72472] +[visit_id i#72472] +[visit_exp (274)] +[visit_exp 274] +ps' = +[check_dims] +[check_dims] Jnn#360 Jnn#364 dim#13740 dim#13752 i#72852 i#72859 i#72866 i#72871 i#72878 ishape_1#47 ishape_2#47 lanetype#13740 lanetype#13752 shape#2269 shape#2281 sx#13093 +dims \ = Jnn#360, Jnn#364, dim#13740, dim#13752, i#72852, i#72859, i#72866, i#72871, i#72878, ishape_1#47, ishape_2#47, lanetype#13740, lanetype#13752, shape#2269, shape#2281, sx#13093 +[visit_exp `VEXTUNOP`_instr{ishape_1#47, ishape_2#47}(`%`_ishape{shape#2269, Jnn#360}(`%X%`_shape{lanetype#13740, dim#13740, i#72859}(`I32`_lanetype, `%`_dim{i#72866}(4))), `%`_ishape{shape#2281, Jnn#364}(`%X%`_shape{lanetype#13752, dim#13752, i#72871}(`I16`_lanetype, `%`_dim{i#72878}(8))), `EXTADD_PAIRWISE`_vextunop__{sx#13093}(`S`_sx))] +[visit_exp ishape_1#47] +[visit_id ishape_1#47] +[visit_exp ishape_2#47] +[visit_id ishape_2#47] +[visit_exp (`%`_ishape{shape#2269, Jnn#360}(`%X%`_shape{lanetype#13740, dim#13740, i#72859}(`I32`_lanetype, `%`_dim{i#72866}(4))), `%`_ishape{shape#2281, Jnn#364}(`%X%`_shape{lanetype#13752, dim#13752, i#72871}(`I16`_lanetype, `%`_dim{i#72878}(8))), `EXTADD_PAIRWISE`_vextunop__{sx#13093}(`S`_sx))] +[visit_exp `%`_ishape{shape#2269, Jnn#360}(`%X%`_shape{lanetype#13740, dim#13740, i#72859}(`I32`_lanetype, `%`_dim{i#72866}(4)))] +[visit_exp shape#2269] +[visit_id shape#2269] +[visit_exp Jnn#360] +[visit_id Jnn#360] +[visit_exp (`%X%`_shape{lanetype#13740, dim#13740, i#72859}(`I32`_lanetype, `%`_dim{i#72866}(4)))] +[visit_exp `%X%`_shape{lanetype#13740, dim#13740, i#72859}(`I32`_lanetype, `%`_dim{i#72866}(4))] +[visit_exp lanetype#13740] +[visit_id lanetype#13740] +[visit_exp dim#13740] +[visit_id dim#13740] +[visit_exp i#72859] +[visit_id i#72859] +[visit_exp (`I32`_lanetype, `%`_dim{i#72866}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#72866}(4)] +[visit_exp i#72866] +[visit_id i#72866] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%`_ishape{shape#2281, Jnn#364}(`%X%`_shape{lanetype#13752, dim#13752, i#72871}(`I16`_lanetype, `%`_dim{i#72878}(8)))] +[visit_exp shape#2281] +[visit_id shape#2281] +[visit_exp Jnn#364] +[visit_id Jnn#364] +[visit_exp (`%X%`_shape{lanetype#13752, dim#13752, i#72871}(`I16`_lanetype, `%`_dim{i#72878}(8)))] +[visit_exp `%X%`_shape{lanetype#13752, dim#13752, i#72871}(`I16`_lanetype, `%`_dim{i#72878}(8))] +[visit_exp lanetype#13752] +[visit_id lanetype#13752] +[visit_exp dim#13752] +[visit_id dim#13752] +[visit_exp i#72871] +[visit_id i#72871] +[visit_exp (`I16`_lanetype, `%`_dim{i#72878}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#72878}(8)] +[visit_exp i#72878] +[visit_id i#72878] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `EXTADD_PAIRWISE`_vextunop__{sx#13093}(`S`_sx)] +[visit_exp sx#13093] +[visit_id sx#13093] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#72852}(126)] +[visit_exp i#72852] +[visit_id i#72852] +[visit_exp (126)] +[visit_exp 126] +[check_dims] Jnn#368 Jnn#372 dim#13975 dim#13987 i#73232 i#73239 i#73246 i#73251 i#73258 ishape_1#49 ishape_2#49 lanetype#13975 lanetype#13987 shape#2384 shape#2396 sx#13127 +dims \ = Jnn#368, Jnn#372, dim#13975, dim#13987, i#73232, i#73239, i#73246, i#73251, i#73258, ishape_1#49, ishape_2#49, lanetype#13975, lanetype#13987, shape#2384, shape#2396, sx#13127 +[visit_exp `VEXTUNOP`_instr{ishape_1#49, ishape_2#49}(`%`_ishape{shape#2384, Jnn#368}(`%X%`_shape{lanetype#13975, dim#13975, i#73239}(`I32`_lanetype, `%`_dim{i#73246}(4))), `%`_ishape{shape#2396, Jnn#372}(`%X%`_shape{lanetype#13987, dim#13987, i#73251}(`I16`_lanetype, `%`_dim{i#73258}(8))), `EXTADD_PAIRWISE`_vextunop__{sx#13127}(`U`_sx))] +[visit_exp ishape_1#49] +[visit_id ishape_1#49] +[visit_exp ishape_2#49] +[visit_id ishape_2#49] +[visit_exp (`%`_ishape{shape#2384, Jnn#368}(`%X%`_shape{lanetype#13975, dim#13975, i#73239}(`I32`_lanetype, `%`_dim{i#73246}(4))), `%`_ishape{shape#2396, Jnn#372}(`%X%`_shape{lanetype#13987, dim#13987, i#73251}(`I16`_lanetype, `%`_dim{i#73258}(8))), `EXTADD_PAIRWISE`_vextunop__{sx#13127}(`U`_sx))] +[visit_exp `%`_ishape{shape#2384, Jnn#368}(`%X%`_shape{lanetype#13975, dim#13975, i#73239}(`I32`_lanetype, `%`_dim{i#73246}(4)))] +[visit_exp shape#2384] +[visit_id shape#2384] +[visit_exp Jnn#368] +[visit_id Jnn#368] +[visit_exp (`%X%`_shape{lanetype#13975, dim#13975, i#73239}(`I32`_lanetype, `%`_dim{i#73246}(4)))] +[visit_exp `%X%`_shape{lanetype#13975, dim#13975, i#73239}(`I32`_lanetype, `%`_dim{i#73246}(4))] +[visit_exp lanetype#13975] +[visit_id lanetype#13975] +[visit_exp dim#13975] +[visit_id dim#13975] +[visit_exp i#73239] +[visit_id i#73239] +[visit_exp (`I32`_lanetype, `%`_dim{i#73246}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#73246}(4)] +[visit_exp i#73246] +[visit_id i#73246] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%`_ishape{shape#2396, Jnn#372}(`%X%`_shape{lanetype#13987, dim#13987, i#73251}(`I16`_lanetype, `%`_dim{i#73258}(8)))] +[visit_exp shape#2396] +[visit_id shape#2396] +[visit_exp Jnn#372] +[visit_id Jnn#372] +[visit_exp (`%X%`_shape{lanetype#13987, dim#13987, i#73251}(`I16`_lanetype, `%`_dim{i#73258}(8)))] +[visit_exp `%X%`_shape{lanetype#13987, dim#13987, i#73251}(`I16`_lanetype, `%`_dim{i#73258}(8))] +[visit_exp lanetype#13987] +[visit_id lanetype#13987] +[visit_exp dim#13987] +[visit_id dim#13987] +[visit_exp i#73251] +[visit_id i#73251] +[visit_exp (`I16`_lanetype, `%`_dim{i#73258}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#73258}(8)] +[visit_exp i#73258] +[visit_id i#73258] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `EXTADD_PAIRWISE`_vextunop__{sx#13127}(`U`_sx)] +[visit_exp sx#13127] +[visit_id sx#13127] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#73232}(127)] +[visit_exp i#73232] +[visit_id i#73232] +[visit_exp (127)] +[visit_exp 127] +ps' = +[check_dims] +[check_dims] dim#14210 i#73612 i#73619 i#73626 lanetype#14210 shape#2489 +dims \ = dim#14210, i#73612, i#73619, i#73626, lanetype#14210, shape#2489 +[visit_exp `VUNOP`_instr{shape#2489}(`%X%`_shape{lanetype#14210, dim#14210, i#73619}(`I32`_lanetype, `%`_dim{i#73626}(4)), `ABS`_vunop_)] +[visit_exp shape#2489] +[visit_id shape#2489] +[visit_exp (`%X%`_shape{lanetype#14210, dim#14210, i#73619}(`I32`_lanetype, `%`_dim{i#73626}(4)), `ABS`_vunop_)] +[visit_exp `%X%`_shape{lanetype#14210, dim#14210, i#73619}(`I32`_lanetype, `%`_dim{i#73626}(4))] +[visit_exp lanetype#14210] +[visit_id lanetype#14210] +[visit_exp dim#14210] +[visit_id dim#14210] +[visit_exp i#73619] +[visit_id i#73619] +[visit_exp (`I32`_lanetype, `%`_dim{i#73626}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#73626}(4)] +[visit_exp i#73626] +[visit_id i#73626] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `ABS`_vunop_] +[visit_exp ()] +[visit_exp `%`_u32{i#73612}(160)] +[visit_exp i#73612] +[visit_id i#73612] +[visit_exp (160)] +[visit_exp 160] +[check_dims] dim#14237 i#73694 i#73701 i#73708 lanetype#14237 shape#2491 +dims \ = dim#14237, i#73694, i#73701, i#73708, lanetype#14237, shape#2491 +[visit_exp `VUNOP`_instr{shape#2491}(`%X%`_shape{lanetype#14237, dim#14237, i#73701}(`I32`_lanetype, `%`_dim{i#73708}(4)), `NEG`_vunop_)] +[visit_exp shape#2491] +[visit_id shape#2491] +[visit_exp (`%X%`_shape{lanetype#14237, dim#14237, i#73701}(`I32`_lanetype, `%`_dim{i#73708}(4)), `NEG`_vunop_)] +[visit_exp `%X%`_shape{lanetype#14237, dim#14237, i#73701}(`I32`_lanetype, `%`_dim{i#73708}(4))] +[visit_exp lanetype#14237] +[visit_id lanetype#14237] +[visit_exp dim#14237] +[visit_id dim#14237] +[visit_exp i#73701] +[visit_id i#73701] +[visit_exp (`I32`_lanetype, `%`_dim{i#73708}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#73708}(4)] +[visit_exp i#73708] +[visit_id i#73708] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `NEG`_vunop_] +[visit_exp ()] +[visit_exp `%`_u32{i#73694}(161)] +[visit_exp i#73694] +[visit_id i#73694] +[visit_exp (161)] +[visit_exp 161] +ps' = +[check_dims] +[check_dims] dim#14264 i#73776 i#73783 i#73790 lanetype#14264 shape#2493 +dims \ = dim#14264, i#73776, i#73783, i#73790, lanetype#14264, shape#2493 +[visit_exp `VTESTOP`_instr{shape#2493}(`%X%`_shape{lanetype#14264, dim#14264, i#73783}(`I32`_lanetype, `%`_dim{i#73790}(4)), `ALL_TRUE`_vtestop_)] +[visit_exp shape#2493] +[visit_id shape#2493] +[visit_exp (`%X%`_shape{lanetype#14264, dim#14264, i#73783}(`I32`_lanetype, `%`_dim{i#73790}(4)), `ALL_TRUE`_vtestop_)] +[visit_exp `%X%`_shape{lanetype#14264, dim#14264, i#73783}(`I32`_lanetype, `%`_dim{i#73790}(4))] +[visit_exp lanetype#14264] +[visit_id lanetype#14264] +[visit_exp dim#14264] +[visit_id dim#14264] +[visit_exp i#73783] +[visit_id i#73783] +[visit_exp (`I32`_lanetype, `%`_dim{i#73790}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#73790}(4)] +[visit_exp i#73790] +[visit_id i#73790] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `ALL_TRUE`_vtestop_] +[visit_exp ()] +[visit_exp `%`_u32{i#73776}(163)] +[visit_exp i#73776] +[visit_id i#73776] +[visit_exp (163)] +[visit_exp 163] +ps' = +[check_dims] +[check_dims] Jnn#376 dim#14291 i#73858 i#73865 i#73872 ishape#29 lanetype#14291 shape#2505 +dims \ = Jnn#376, dim#14291, i#73858, i#73865, i#73872, ishape#29, lanetype#14291, shape#2505 +[visit_exp `VBITMASK`_instr{ishape#29}(`%`_ishape{shape#2505, Jnn#376}(`%X%`_shape{lanetype#14291, dim#14291, i#73865}(`I32`_lanetype, `%`_dim{i#73872}(4))))] +[visit_exp ishape#29] +[visit_id ishape#29] +[visit_exp (`%`_ishape{shape#2505, Jnn#376}(`%X%`_shape{lanetype#14291, dim#14291, i#73865}(`I32`_lanetype, `%`_dim{i#73872}(4))))] +[visit_exp `%`_ishape{shape#2505, Jnn#376}(`%X%`_shape{lanetype#14291, dim#14291, i#73865}(`I32`_lanetype, `%`_dim{i#73872}(4)))] +[visit_exp shape#2505] +[visit_id shape#2505] +[visit_exp Jnn#376] +[visit_id Jnn#376] +[visit_exp (`%X%`_shape{lanetype#14291, dim#14291, i#73865}(`I32`_lanetype, `%`_dim{i#73872}(4)))] +[visit_exp `%X%`_shape{lanetype#14291, dim#14291, i#73865}(`I32`_lanetype, `%`_dim{i#73872}(4))] +[visit_exp lanetype#14291] +[visit_id lanetype#14291] +[visit_exp dim#14291] +[visit_id dim#14291] +[visit_exp i#73865] +[visit_id i#73865] +[visit_exp (`I32`_lanetype, `%`_dim{i#73872}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#73872}(4)] +[visit_exp i#73872] +[visit_id i#73872] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%`_u32{i#73858}(164)] +[visit_exp i#73858] +[visit_id i#73858] +[visit_exp (164)] +[visit_exp 164] +ps' = +[check_dims] +[check_dims] dim#14303 dim#14315 half#358 i#73895 i#73902 i#73909 i#73914 i#73921 lanetype#14303 lanetype#14315 shape_1#15 shape_2#15 sx#13161 +dims \ = dim#14303, dim#14315, half#358, i#73895, i#73902, i#73909, i#73914, i#73921, lanetype#14303, lanetype#14315, shape_1#15, shape_2#15, sx#13161 +[visit_exp `VCVTOP`_instr{shape_1#15, shape_2#15}(`%X%`_shape{lanetype#14303, dim#14303, i#73902}(`I32`_lanetype, `%`_dim{i#73909}(4)), `%X%`_shape{lanetype#14315, dim#14315, i#73914}(`I16`_lanetype, `%`_dim{i#73921}(8)), `EXTEND`_vcvtop__{half#358, sx#13161}(`LOW`_half, `S`_sx))] +[visit_exp shape_1#15] +[visit_id shape_1#15] +[visit_exp shape_2#15] +[visit_id shape_2#15] +[visit_exp (`%X%`_shape{lanetype#14303, dim#14303, i#73902}(`I32`_lanetype, `%`_dim{i#73909}(4)), `%X%`_shape{lanetype#14315, dim#14315, i#73914}(`I16`_lanetype, `%`_dim{i#73921}(8)), `EXTEND`_vcvtop__{half#358, sx#13161}(`LOW`_half, `S`_sx))] +[visit_exp `%X%`_shape{lanetype#14303, dim#14303, i#73902}(`I32`_lanetype, `%`_dim{i#73909}(4))] +[visit_exp lanetype#14303] +[visit_id lanetype#14303] +[visit_exp dim#14303] +[visit_id dim#14303] +[visit_exp i#73902] +[visit_id i#73902] +[visit_exp (`I32`_lanetype, `%`_dim{i#73909}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#73909}(4)] +[visit_exp i#73909] +[visit_id i#73909] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%X%`_shape{lanetype#14315, dim#14315, i#73914}(`I16`_lanetype, `%`_dim{i#73921}(8))] +[visit_exp lanetype#14315] +[visit_id lanetype#14315] +[visit_exp dim#14315] +[visit_id dim#14315] +[visit_exp i#73914] +[visit_id i#73914] +[visit_exp (`I16`_lanetype, `%`_dim{i#73921}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#73921}(8)] +[visit_exp i#73921] +[visit_id i#73921] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `EXTEND`_vcvtop__{half#358, sx#13161}(`LOW`_half, `S`_sx)] +[visit_exp half#358] +[visit_id half#358] +[visit_exp sx#13161] +[visit_id sx#13161] +[visit_exp (`LOW`_half, `S`_sx)] +[visit_exp `LOW`_half] +[visit_exp ()] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#73895}(167)] +[visit_exp i#73895] +[visit_id i#73895] +[visit_exp (167)] +[visit_exp 167] +[check_dims] dim#14418 dim#14430 half#392 i#74155 i#74162 i#74169 i#74174 i#74181 lanetype#14418 lanetype#14430 shape_1#17 shape_2#17 sx#13195 +dims \ = dim#14418, dim#14430, half#392, i#74155, i#74162, i#74169, i#74174, i#74181, lanetype#14418, lanetype#14430, shape_1#17, shape_2#17, sx#13195 +[visit_exp `VCVTOP`_instr{shape_1#17, shape_2#17}(`%X%`_shape{lanetype#14418, dim#14418, i#74162}(`I32`_lanetype, `%`_dim{i#74169}(4)), `%X%`_shape{lanetype#14430, dim#14430, i#74174}(`I16`_lanetype, `%`_dim{i#74181}(8)), `EXTEND`_vcvtop__{half#392, sx#13195}(`HIGH`_half, `S`_sx))] +[visit_exp shape_1#17] +[visit_id shape_1#17] +[visit_exp shape_2#17] +[visit_id shape_2#17] +[visit_exp (`%X%`_shape{lanetype#14418, dim#14418, i#74162}(`I32`_lanetype, `%`_dim{i#74169}(4)), `%X%`_shape{lanetype#14430, dim#14430, i#74174}(`I16`_lanetype, `%`_dim{i#74181}(8)), `EXTEND`_vcvtop__{half#392, sx#13195}(`HIGH`_half, `S`_sx))] +[visit_exp `%X%`_shape{lanetype#14418, dim#14418, i#74162}(`I32`_lanetype, `%`_dim{i#74169}(4))] +[visit_exp lanetype#14418] +[visit_id lanetype#14418] +[visit_exp dim#14418] +[visit_id dim#14418] +[visit_exp i#74162] +[visit_id i#74162] +[visit_exp (`I32`_lanetype, `%`_dim{i#74169}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#74169}(4)] +[visit_exp i#74169] +[visit_id i#74169] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%X%`_shape{lanetype#14430, dim#14430, i#74174}(`I16`_lanetype, `%`_dim{i#74181}(8))] +[visit_exp lanetype#14430] +[visit_id lanetype#14430] +[visit_exp dim#14430] +[visit_id dim#14430] +[visit_exp i#74174] +[visit_id i#74174] +[visit_exp (`I16`_lanetype, `%`_dim{i#74181}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#74181}(8)] +[visit_exp i#74181] +[visit_id i#74181] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `EXTEND`_vcvtop__{half#392, sx#13195}(`HIGH`_half, `S`_sx)] +[visit_exp half#392] +[visit_id half#392] +[visit_exp sx#13195] +[visit_id sx#13195] +[visit_exp (`HIGH`_half, `S`_sx)] +[visit_exp `HIGH`_half] +[visit_exp ()] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#74155}(168)] +[visit_exp i#74155] +[visit_id i#74155] +[visit_exp (168)] +[visit_exp 168] +[check_dims] dim#14533 dim#14545 half#426 i#74415 i#74422 i#74429 i#74434 i#74441 lanetype#14533 lanetype#14545 shape_1#19 shape_2#19 sx#13229 +dims \ = dim#14533, dim#14545, half#426, i#74415, i#74422, i#74429, i#74434, i#74441, lanetype#14533, lanetype#14545, shape_1#19, shape_2#19, sx#13229 +[visit_exp `VCVTOP`_instr{shape_1#19, shape_2#19}(`%X%`_shape{lanetype#14533, dim#14533, i#74422}(`I32`_lanetype, `%`_dim{i#74429}(4)), `%X%`_shape{lanetype#14545, dim#14545, i#74434}(`I16`_lanetype, `%`_dim{i#74441}(8)), `EXTEND`_vcvtop__{half#426, sx#13229}(`LOW`_half, `U`_sx))] +[visit_exp shape_1#19] +[visit_id shape_1#19] +[visit_exp shape_2#19] +[visit_id shape_2#19] +[visit_exp (`%X%`_shape{lanetype#14533, dim#14533, i#74422}(`I32`_lanetype, `%`_dim{i#74429}(4)), `%X%`_shape{lanetype#14545, dim#14545, i#74434}(`I16`_lanetype, `%`_dim{i#74441}(8)), `EXTEND`_vcvtop__{half#426, sx#13229}(`LOW`_half, `U`_sx))] +[visit_exp `%X%`_shape{lanetype#14533, dim#14533, i#74422}(`I32`_lanetype, `%`_dim{i#74429}(4))] +[visit_exp lanetype#14533] +[visit_id lanetype#14533] +[visit_exp dim#14533] +[visit_id dim#14533] +[visit_exp i#74422] +[visit_id i#74422] +[visit_exp (`I32`_lanetype, `%`_dim{i#74429}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#74429}(4)] +[visit_exp i#74429] +[visit_id i#74429] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%X%`_shape{lanetype#14545, dim#14545, i#74434}(`I16`_lanetype, `%`_dim{i#74441}(8))] +[visit_exp lanetype#14545] +[visit_id lanetype#14545] +[visit_exp dim#14545] +[visit_id dim#14545] +[visit_exp i#74434] +[visit_id i#74434] +[visit_exp (`I16`_lanetype, `%`_dim{i#74441}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#74441}(8)] +[visit_exp i#74441] +[visit_id i#74441] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `EXTEND`_vcvtop__{half#426, sx#13229}(`LOW`_half, `U`_sx)] +[visit_exp half#426] +[visit_id half#426] +[visit_exp sx#13229] +[visit_id sx#13229] +[visit_exp (`LOW`_half, `U`_sx)] +[visit_exp `LOW`_half] +[visit_exp ()] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#74415}(169)] +[visit_exp i#74415] +[visit_id i#74415] +[visit_exp (169)] +[visit_exp 169] +[check_dims] dim#14648 dim#14660 half#460 i#74675 i#74682 i#74689 i#74694 i#74701 lanetype#14648 lanetype#14660 shape_1#21 shape_2#21 sx#13263 +dims \ = dim#14648, dim#14660, half#460, i#74675, i#74682, i#74689, i#74694, i#74701, lanetype#14648, lanetype#14660, shape_1#21, shape_2#21, sx#13263 +[visit_exp `VCVTOP`_instr{shape_1#21, shape_2#21}(`%X%`_shape{lanetype#14648, dim#14648, i#74682}(`I32`_lanetype, `%`_dim{i#74689}(4)), `%X%`_shape{lanetype#14660, dim#14660, i#74694}(`I16`_lanetype, `%`_dim{i#74701}(8)), `EXTEND`_vcvtop__{half#460, sx#13263}(`HIGH`_half, `U`_sx))] +[visit_exp shape_1#21] +[visit_id shape_1#21] +[visit_exp shape_2#21] +[visit_id shape_2#21] +[visit_exp (`%X%`_shape{lanetype#14648, dim#14648, i#74682}(`I32`_lanetype, `%`_dim{i#74689}(4)), `%X%`_shape{lanetype#14660, dim#14660, i#74694}(`I16`_lanetype, `%`_dim{i#74701}(8)), `EXTEND`_vcvtop__{half#460, sx#13263}(`HIGH`_half, `U`_sx))] +[visit_exp `%X%`_shape{lanetype#14648, dim#14648, i#74682}(`I32`_lanetype, `%`_dim{i#74689}(4))] +[visit_exp lanetype#14648] +[visit_id lanetype#14648] +[visit_exp dim#14648] +[visit_id dim#14648] +[visit_exp i#74682] +[visit_id i#74682] +[visit_exp (`I32`_lanetype, `%`_dim{i#74689}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#74689}(4)] +[visit_exp i#74689] +[visit_id i#74689] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%X%`_shape{lanetype#14660, dim#14660, i#74694}(`I16`_lanetype, `%`_dim{i#74701}(8))] +[visit_exp lanetype#14660] +[visit_id lanetype#14660] +[visit_exp dim#14660] +[visit_id dim#14660] +[visit_exp i#74694] +[visit_id i#74694] +[visit_exp (`I16`_lanetype, `%`_dim{i#74701}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#74701}(8)] +[visit_exp i#74701] +[visit_id i#74701] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `EXTEND`_vcvtop__{half#460, sx#13263}(`HIGH`_half, `U`_sx)] +[visit_exp half#460] +[visit_id half#460] +[visit_exp sx#13263] +[visit_id sx#13263] +[visit_exp (`HIGH`_half, `U`_sx)] +[visit_exp `HIGH`_half] +[visit_exp ()] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#74675}(170)] +[visit_exp i#74675] +[visit_id i#74675] +[visit_exp (170)] +[visit_exp 170] +ps' = +[check_dims] +[check_dims] Jnn#380 dim#14763 i#74935 i#74942 i#74949 ishape#31 lanetype#14763 shape#2517 +dims \ = Jnn#380, dim#14763, i#74935, i#74942, i#74949, ishape#31, lanetype#14763, shape#2517 +[visit_exp `VSHIFTOP`_instr{ishape#31}(`%`_ishape{shape#2517, Jnn#380}(`%X%`_shape{lanetype#14763, dim#14763, i#74942}(`I32`_lanetype, `%`_dim{i#74949}(4))), `SHL`_vshiftop_)] +[visit_exp ishape#31] +[visit_id ishape#31] +[visit_exp (`%`_ishape{shape#2517, Jnn#380}(`%X%`_shape{lanetype#14763, dim#14763, i#74942}(`I32`_lanetype, `%`_dim{i#74949}(4))), `SHL`_vshiftop_)] +[visit_exp `%`_ishape{shape#2517, Jnn#380}(`%X%`_shape{lanetype#14763, dim#14763, i#74942}(`I32`_lanetype, `%`_dim{i#74949}(4)))] +[visit_exp shape#2517] +[visit_id shape#2517] +[visit_exp Jnn#380] +[visit_id Jnn#380] +[visit_exp (`%X%`_shape{lanetype#14763, dim#14763, i#74942}(`I32`_lanetype, `%`_dim{i#74949}(4)))] +[visit_exp `%X%`_shape{lanetype#14763, dim#14763, i#74942}(`I32`_lanetype, `%`_dim{i#74949}(4))] +[visit_exp lanetype#14763] +[visit_id lanetype#14763] +[visit_exp dim#14763] +[visit_id dim#14763] +[visit_exp i#74942] +[visit_id i#74942] +[visit_exp (`I32`_lanetype, `%`_dim{i#74949}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#74949}(4)] +[visit_exp i#74949] +[visit_id i#74949] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `SHL`_vshiftop_] +[visit_exp ()] +[visit_exp `%`_u32{i#74935}(171)] +[visit_exp i#74935] +[visit_id i#74935] +[visit_exp (171)] +[visit_exp 171] +[check_dims] Jnn#384 dim#14820 i#75047 i#75054 i#75061 ishape#33 lanetype#14820 shape#2544 sx#13297 +dims \ = Jnn#384, dim#14820, i#75047, i#75054, i#75061, ishape#33, lanetype#14820, shape#2544, sx#13297 +[visit_exp `VSHIFTOP`_instr{ishape#33}(`%`_ishape{shape#2544, Jnn#384}(`%X%`_shape{lanetype#14820, dim#14820, i#75054}(`I32`_lanetype, `%`_dim{i#75061}(4))), `SHR`_vshiftop_{sx#13297}(`S`_sx))] +[visit_exp ishape#33] +[visit_id ishape#33] +[visit_exp (`%`_ishape{shape#2544, Jnn#384}(`%X%`_shape{lanetype#14820, dim#14820, i#75054}(`I32`_lanetype, `%`_dim{i#75061}(4))), `SHR`_vshiftop_{sx#13297}(`S`_sx))] +[visit_exp `%`_ishape{shape#2544, Jnn#384}(`%X%`_shape{lanetype#14820, dim#14820, i#75054}(`I32`_lanetype, `%`_dim{i#75061}(4)))] +[visit_exp shape#2544] +[visit_id shape#2544] +[visit_exp Jnn#384] +[visit_id Jnn#384] +[visit_exp (`%X%`_shape{lanetype#14820, dim#14820, i#75054}(`I32`_lanetype, `%`_dim{i#75061}(4)))] +[visit_exp `%X%`_shape{lanetype#14820, dim#14820, i#75054}(`I32`_lanetype, `%`_dim{i#75061}(4))] +[visit_exp lanetype#14820] +[visit_id lanetype#14820] +[visit_exp dim#14820] +[visit_id dim#14820] +[visit_exp i#75054] +[visit_id i#75054] +[visit_exp (`I32`_lanetype, `%`_dim{i#75061}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#75061}(4)] +[visit_exp i#75061] +[visit_id i#75061] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `SHR`_vshiftop_{sx#13297}(`S`_sx)] +[visit_exp sx#13297] +[visit_id sx#13297] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#75047}(172)] +[visit_exp i#75047] +[visit_id i#75047] +[visit_exp (172)] +[visit_exp 172] +[check_dims] Jnn#388 dim#14883 i#75169 i#75176 i#75183 ishape#35 lanetype#14883 shape#2573 sx#13316 +dims \ = Jnn#388, dim#14883, i#75169, i#75176, i#75183, ishape#35, lanetype#14883, shape#2573, sx#13316 +[visit_exp `VSHIFTOP`_instr{ishape#35}(`%`_ishape{shape#2573, Jnn#388}(`%X%`_shape{lanetype#14883, dim#14883, i#75176}(`I32`_lanetype, `%`_dim{i#75183}(4))), `SHR`_vshiftop_{sx#13316}(`U`_sx))] +[visit_exp ishape#35] +[visit_id ishape#35] +[visit_exp (`%`_ishape{shape#2573, Jnn#388}(`%X%`_shape{lanetype#14883, dim#14883, i#75176}(`I32`_lanetype, `%`_dim{i#75183}(4))), `SHR`_vshiftop_{sx#13316}(`U`_sx))] +[visit_exp `%`_ishape{shape#2573, Jnn#388}(`%X%`_shape{lanetype#14883, dim#14883, i#75176}(`I32`_lanetype, `%`_dim{i#75183}(4)))] +[visit_exp shape#2573] +[visit_id shape#2573] +[visit_exp Jnn#388] +[visit_id Jnn#388] +[visit_exp (`%X%`_shape{lanetype#14883, dim#14883, i#75176}(`I32`_lanetype, `%`_dim{i#75183}(4)))] +[visit_exp `%X%`_shape{lanetype#14883, dim#14883, i#75176}(`I32`_lanetype, `%`_dim{i#75183}(4))] +[visit_exp lanetype#14883] +[visit_id lanetype#14883] +[visit_exp dim#14883] +[visit_id dim#14883] +[visit_exp i#75176] +[visit_id i#75176] +[visit_exp (`I32`_lanetype, `%`_dim{i#75183}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#75183}(4)] +[visit_exp i#75183] +[visit_id i#75183] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `SHR`_vshiftop_{sx#13316}(`U`_sx)] +[visit_exp sx#13316] +[visit_id sx#13316] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#75169}(173)] +[visit_exp i#75169] +[visit_id i#75169] +[visit_exp (173)] +[visit_exp 173] +ps' = +[check_dims] +[check_dims] dim#14946 i#75291 i#75298 i#75305 lanetype#14946 shape#2592 +dims \ = dim#14946, i#75291, i#75298, i#75305, lanetype#14946, shape#2592 +[visit_exp `VBINOP`_instr{shape#2592}(`%X%`_shape{lanetype#14946, dim#14946, i#75298}(`I32`_lanetype, `%`_dim{i#75305}(4)), `ADD`_vbinop_)] +[visit_exp shape#2592] +[visit_id shape#2592] +[visit_exp (`%X%`_shape{lanetype#14946, dim#14946, i#75298}(`I32`_lanetype, `%`_dim{i#75305}(4)), `ADD`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#14946, dim#14946, i#75298}(`I32`_lanetype, `%`_dim{i#75305}(4))] +[visit_exp lanetype#14946] +[visit_id lanetype#14946] +[visit_exp dim#14946] +[visit_id dim#14946] +[visit_exp i#75298] +[visit_id i#75298] +[visit_exp (`I32`_lanetype, `%`_dim{i#75305}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#75305}(4)] +[visit_exp i#75305] +[visit_id i#75305] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `ADD`_vbinop_] +[visit_exp ()] +[visit_exp `%`_u32{i#75291}(174)] +[visit_exp i#75291] +[visit_id i#75291] +[visit_exp (174)] +[visit_exp 174] +[check_dims] dim#14973 i#75373 i#75380 i#75387 lanetype#14973 shape#2594 +dims \ = dim#14973, i#75373, i#75380, i#75387, lanetype#14973, shape#2594 +[visit_exp `VBINOP`_instr{shape#2594}(`%X%`_shape{lanetype#14973, dim#14973, i#75380}(`I32`_lanetype, `%`_dim{i#75387}(4)), `SUB`_vbinop_)] +[visit_exp shape#2594] +[visit_id shape#2594] +[visit_exp (`%X%`_shape{lanetype#14973, dim#14973, i#75380}(`I32`_lanetype, `%`_dim{i#75387}(4)), `SUB`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#14973, dim#14973, i#75380}(`I32`_lanetype, `%`_dim{i#75387}(4))] +[visit_exp lanetype#14973] +[visit_id lanetype#14973] +[visit_exp dim#14973] +[visit_id dim#14973] +[visit_exp i#75380] +[visit_id i#75380] +[visit_exp (`I32`_lanetype, `%`_dim{i#75387}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#75387}(4)] +[visit_exp i#75387] +[visit_id i#75387] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `SUB`_vbinop_] +[visit_exp ()] +[visit_exp `%`_u32{i#75373}(177)] +[visit_exp i#75373] +[visit_id i#75373] +[visit_exp (177)] +[visit_exp 177] +[check_dims] dim#15000 i#75455 i#75462 i#75469 lanetype#15000 shape#2596 +dims \ = dim#15000, i#75455, i#75462, i#75469, lanetype#15000, shape#2596 +[visit_exp `VBINOP`_instr{shape#2596}(`%X%`_shape{lanetype#15000, dim#15000, i#75462}(`I32`_lanetype, `%`_dim{i#75469}(4)), `MUL`_vbinop_)] +[visit_exp shape#2596] +[visit_id shape#2596] +[visit_exp (`%X%`_shape{lanetype#15000, dim#15000, i#75462}(`I32`_lanetype, `%`_dim{i#75469}(4)), `MUL`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#15000, dim#15000, i#75462}(`I32`_lanetype, `%`_dim{i#75469}(4))] +[visit_exp lanetype#15000] +[visit_id lanetype#15000] +[visit_exp dim#15000] +[visit_id dim#15000] +[visit_exp i#75462] +[visit_id i#75462] +[visit_exp (`I32`_lanetype, `%`_dim{i#75469}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#75469}(4)] +[visit_exp i#75469] +[visit_id i#75469] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `MUL`_vbinop_] +[visit_exp ()] +[visit_exp `%`_u32{i#75455}(181)] +[visit_exp i#75455] +[visit_id i#75455] +[visit_exp (181)] +[visit_exp 181] +[check_dims] dim#15027 i#75537 i#75544 i#75551 lanetype#15027 shape#2598 sx#13620 +dims \ = dim#15027, i#75537, i#75544, i#75551, lanetype#15027, shape#2598, sx#13620 +[visit_exp `VBINOP`_instr{shape#2598}(`%X%`_shape{lanetype#15027, dim#15027, i#75544}(`I32`_lanetype, `%`_dim{i#75551}(4)), `MIN`_vbinop_{sx#13620}(`S`_sx))] +[visit_exp shape#2598] +[visit_id shape#2598] +[visit_exp (`%X%`_shape{lanetype#15027, dim#15027, i#75544}(`I32`_lanetype, `%`_dim{i#75551}(4)), `MIN`_vbinop_{sx#13620}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#15027, dim#15027, i#75544}(`I32`_lanetype, `%`_dim{i#75551}(4))] +[visit_exp lanetype#15027] +[visit_id lanetype#15027] +[visit_exp dim#15027] +[visit_id dim#15027] +[visit_exp i#75544] +[visit_id i#75544] +[visit_exp (`I32`_lanetype, `%`_dim{i#75551}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#75551}(4)] +[visit_exp i#75551] +[visit_id i#75551] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `MIN`_vbinop_{sx#13620}(`S`_sx)] +[visit_exp sx#13620] +[visit_id sx#13620] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#75537}(182)] +[visit_exp i#75537] +[visit_id i#75537] +[visit_exp (182)] +[visit_exp 182] +[check_dims] dim#15069 i#75664 i#75671 i#75678 lanetype#15069 shape#2600 sx#13744 +dims \ = dim#15069, i#75664, i#75671, i#75678, lanetype#15069, shape#2600, sx#13744 +[visit_exp `VBINOP`_instr{shape#2600}(`%X%`_shape{lanetype#15069, dim#15069, i#75671}(`I32`_lanetype, `%`_dim{i#75678}(4)), `MIN`_vbinop_{sx#13744}(`U`_sx))] +[visit_exp shape#2600] +[visit_id shape#2600] +[visit_exp (`%X%`_shape{lanetype#15069, dim#15069, i#75671}(`I32`_lanetype, `%`_dim{i#75678}(4)), `MIN`_vbinop_{sx#13744}(`U`_sx))] +[visit_exp `%X%`_shape{lanetype#15069, dim#15069, i#75671}(`I32`_lanetype, `%`_dim{i#75678}(4))] +[visit_exp lanetype#15069] +[visit_id lanetype#15069] +[visit_exp dim#15069] +[visit_id dim#15069] +[visit_exp i#75671] +[visit_id i#75671] +[visit_exp (`I32`_lanetype, `%`_dim{i#75678}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#75678}(4)] +[visit_exp i#75678] +[visit_id i#75678] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `MIN`_vbinop_{sx#13744}(`U`_sx)] +[visit_exp sx#13744] +[visit_id sx#13744] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#75664}(183)] +[visit_exp i#75664] +[visit_id i#75664] +[visit_exp (183)] +[visit_exp 183] +[check_dims] dim#15111 i#75791 i#75798 i#75805 lanetype#15111 shape#2602 sx#13868 +dims \ = dim#15111, i#75791, i#75798, i#75805, lanetype#15111, shape#2602, sx#13868 +[visit_exp `VBINOP`_instr{shape#2602}(`%X%`_shape{lanetype#15111, dim#15111, i#75798}(`I32`_lanetype, `%`_dim{i#75805}(4)), `MAX`_vbinop_{sx#13868}(`S`_sx))] +[visit_exp shape#2602] +[visit_id shape#2602] +[visit_exp (`%X%`_shape{lanetype#15111, dim#15111, i#75798}(`I32`_lanetype, `%`_dim{i#75805}(4)), `MAX`_vbinop_{sx#13868}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#15111, dim#15111, i#75798}(`I32`_lanetype, `%`_dim{i#75805}(4))] +[visit_exp lanetype#15111] +[visit_id lanetype#15111] +[visit_exp dim#15111] +[visit_id dim#15111] +[visit_exp i#75798] +[visit_id i#75798] +[visit_exp (`I32`_lanetype, `%`_dim{i#75805}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#75805}(4)] +[visit_exp i#75805] +[visit_id i#75805] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `MAX`_vbinop_{sx#13868}(`S`_sx)] +[visit_exp sx#13868] +[visit_id sx#13868] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#75791}(184)] +[visit_exp i#75791] +[visit_id i#75791] +[visit_exp (184)] +[visit_exp 184] +[check_dims] dim#15153 i#75918 i#75925 i#75932 lanetype#15153 shape#2604 sx#13992 +dims \ = dim#15153, i#75918, i#75925, i#75932, lanetype#15153, shape#2604, sx#13992 +[visit_exp `VBINOP`_instr{shape#2604}(`%X%`_shape{lanetype#15153, dim#15153, i#75925}(`I32`_lanetype, `%`_dim{i#75932}(4)), `MAX`_vbinop_{sx#13992}(`U`_sx))] +[visit_exp shape#2604] +[visit_id shape#2604] +[visit_exp (`%X%`_shape{lanetype#15153, dim#15153, i#75925}(`I32`_lanetype, `%`_dim{i#75932}(4)), `MAX`_vbinop_{sx#13992}(`U`_sx))] +[visit_exp `%X%`_shape{lanetype#15153, dim#15153, i#75925}(`I32`_lanetype, `%`_dim{i#75932}(4))] +[visit_exp lanetype#15153] +[visit_id lanetype#15153] +[visit_exp dim#15153] +[visit_id dim#15153] +[visit_exp i#75925] +[visit_id i#75925] +[visit_exp (`I32`_lanetype, `%`_dim{i#75932}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#75932}(4)] +[visit_exp i#75932] +[visit_id i#75932] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `MAX`_vbinop_{sx#13992}(`U`_sx)] +[visit_exp sx#13992] +[visit_id sx#13992] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#75918}(185)] +[visit_exp i#75918] +[visit_id i#75918] +[visit_exp (185)] +[visit_exp 185] +ps' = +[check_dims] +[check_dims] Jnn#392 Jnn#396 dim#15195 dim#15207 i#76045 i#76052 i#76059 i#76064 i#76071 ishape_1#51 ishape_2#51 lanetype#15195 lanetype#15207 shape#2616 shape#2628 +dims \ = Jnn#392, Jnn#396, dim#15195, dim#15207, i#76045, i#76052, i#76059, i#76064, i#76071, ishape_1#51, ishape_2#51, lanetype#15195, lanetype#15207, shape#2616, shape#2628 +[visit_exp `VEXTBINOP`_instr{ishape_1#51, ishape_2#51}(`%`_ishape{shape#2616, Jnn#392}(`%X%`_shape{lanetype#15195, dim#15195, i#76052}(`I32`_lanetype, `%`_dim{i#76059}(4))), `%`_ishape{shape#2628, Jnn#396}(`%X%`_shape{lanetype#15207, dim#15207, i#76064}(`I16`_lanetype, `%`_dim{i#76071}(8))), `DOTS`_vextbinop__)] +[visit_exp ishape_1#51] +[visit_id ishape_1#51] +[visit_exp ishape_2#51] +[visit_id ishape_2#51] +[visit_exp (`%`_ishape{shape#2616, Jnn#392}(`%X%`_shape{lanetype#15195, dim#15195, i#76052}(`I32`_lanetype, `%`_dim{i#76059}(4))), `%`_ishape{shape#2628, Jnn#396}(`%X%`_shape{lanetype#15207, dim#15207, i#76064}(`I16`_lanetype, `%`_dim{i#76071}(8))), `DOTS`_vextbinop__)] +[visit_exp `%`_ishape{shape#2616, Jnn#392}(`%X%`_shape{lanetype#15195, dim#15195, i#76052}(`I32`_lanetype, `%`_dim{i#76059}(4)))] +[visit_exp shape#2616] +[visit_id shape#2616] +[visit_exp Jnn#392] +[visit_id Jnn#392] +[visit_exp (`%X%`_shape{lanetype#15195, dim#15195, i#76052}(`I32`_lanetype, `%`_dim{i#76059}(4)))] +[visit_exp `%X%`_shape{lanetype#15195, dim#15195, i#76052}(`I32`_lanetype, `%`_dim{i#76059}(4))] +[visit_exp lanetype#15195] +[visit_id lanetype#15195] +[visit_exp dim#15195] +[visit_id dim#15195] +[visit_exp i#76052] +[visit_id i#76052] +[visit_exp (`I32`_lanetype, `%`_dim{i#76059}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#76059}(4)] +[visit_exp i#76059] +[visit_id i#76059] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%`_ishape{shape#2628, Jnn#396}(`%X%`_shape{lanetype#15207, dim#15207, i#76064}(`I16`_lanetype, `%`_dim{i#76071}(8)))] +[visit_exp shape#2628] +[visit_id shape#2628] +[visit_exp Jnn#396] +[visit_id Jnn#396] +[visit_exp (`%X%`_shape{lanetype#15207, dim#15207, i#76064}(`I16`_lanetype, `%`_dim{i#76071}(8)))] +[visit_exp `%X%`_shape{lanetype#15207, dim#15207, i#76064}(`I16`_lanetype, `%`_dim{i#76071}(8))] +[visit_exp lanetype#15207] +[visit_id lanetype#15207] +[visit_exp dim#15207] +[visit_id dim#15207] +[visit_exp i#76064] +[visit_id i#76064] +[visit_exp (`I16`_lanetype, `%`_dim{i#76071}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#76071}(8)] +[visit_exp i#76071] +[visit_id i#76071] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `DOTS`_vextbinop__] +[visit_exp ()] +[visit_exp `%`_u32{i#76045}(186)] +[visit_exp i#76045] +[visit_id i#76045] +[visit_exp (186)] +[visit_exp 186] +[check_dims] Jnn#400 Jnn#404 dim#15430 dim#15442 half#524 i#76425 i#76432 i#76439 i#76444 i#76451 ishape_1#53 ishape_2#53 lanetype#15430 lanetype#15442 shape#2731 shape#2743 sx#14056 +dims \ = Jnn#400, Jnn#404, dim#15430, dim#15442, half#524, i#76425, i#76432, i#76439, i#76444, i#76451, ishape_1#53, ishape_2#53, lanetype#15430, lanetype#15442, shape#2731, shape#2743, sx#14056 +[visit_exp `VEXTBINOP`_instr{ishape_1#53, ishape_2#53}(`%`_ishape{shape#2731, Jnn#400}(`%X%`_shape{lanetype#15430, dim#15430, i#76432}(`I32`_lanetype, `%`_dim{i#76439}(4))), `%`_ishape{shape#2743, Jnn#404}(`%X%`_shape{lanetype#15442, dim#15442, i#76444}(`I16`_lanetype, `%`_dim{i#76451}(8))), `EXTMUL`_vextbinop__{half#524, sx#14056}(`LOW`_half, `S`_sx))] +[visit_exp ishape_1#53] +[visit_id ishape_1#53] +[visit_exp ishape_2#53] +[visit_id ishape_2#53] +[visit_exp (`%`_ishape{shape#2731, Jnn#400}(`%X%`_shape{lanetype#15430, dim#15430, i#76432}(`I32`_lanetype, `%`_dim{i#76439}(4))), `%`_ishape{shape#2743, Jnn#404}(`%X%`_shape{lanetype#15442, dim#15442, i#76444}(`I16`_lanetype, `%`_dim{i#76451}(8))), `EXTMUL`_vextbinop__{half#524, sx#14056}(`LOW`_half, `S`_sx))] +[visit_exp `%`_ishape{shape#2731, Jnn#400}(`%X%`_shape{lanetype#15430, dim#15430, i#76432}(`I32`_lanetype, `%`_dim{i#76439}(4)))] +[visit_exp shape#2731] +[visit_id shape#2731] +[visit_exp Jnn#400] +[visit_id Jnn#400] +[visit_exp (`%X%`_shape{lanetype#15430, dim#15430, i#76432}(`I32`_lanetype, `%`_dim{i#76439}(4)))] +[visit_exp `%X%`_shape{lanetype#15430, dim#15430, i#76432}(`I32`_lanetype, `%`_dim{i#76439}(4))] +[visit_exp lanetype#15430] +[visit_id lanetype#15430] +[visit_exp dim#15430] +[visit_id dim#15430] +[visit_exp i#76432] +[visit_id i#76432] +[visit_exp (`I32`_lanetype, `%`_dim{i#76439}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#76439}(4)] +[visit_exp i#76439] +[visit_id i#76439] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%`_ishape{shape#2743, Jnn#404}(`%X%`_shape{lanetype#15442, dim#15442, i#76444}(`I16`_lanetype, `%`_dim{i#76451}(8)))] +[visit_exp shape#2743] +[visit_id shape#2743] +[visit_exp Jnn#404] +[visit_id Jnn#404] +[visit_exp (`%X%`_shape{lanetype#15442, dim#15442, i#76444}(`I16`_lanetype, `%`_dim{i#76451}(8)))] +[visit_exp `%X%`_shape{lanetype#15442, dim#15442, i#76444}(`I16`_lanetype, `%`_dim{i#76451}(8))] +[visit_exp lanetype#15442] +[visit_id lanetype#15442] +[visit_exp dim#15442] +[visit_id dim#15442] +[visit_exp i#76444] +[visit_id i#76444] +[visit_exp (`I16`_lanetype, `%`_dim{i#76451}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#76451}(8)] +[visit_exp i#76451] +[visit_id i#76451] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `EXTMUL`_vextbinop__{half#524, sx#14056}(`LOW`_half, `S`_sx)] +[visit_exp half#524] +[visit_id half#524] +[visit_exp sx#14056] +[visit_id sx#14056] +[visit_exp (`LOW`_half, `S`_sx)] +[visit_exp `LOW`_half] +[visit_exp ()] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#76425}(188)] +[visit_exp i#76425] +[visit_id i#76425] +[visit_exp (188)] +[visit_exp 188] +[check_dims] Jnn#408 Jnn#412 dim#15665 dim#15677 half#558 i#76805 i#76812 i#76819 i#76824 i#76831 ishape_1#55 ishape_2#55 lanetype#15665 lanetype#15677 shape#2846 shape#2858 sx#14090 +dims \ = Jnn#408, Jnn#412, dim#15665, dim#15677, half#558, i#76805, i#76812, i#76819, i#76824, i#76831, ishape_1#55, ishape_2#55, lanetype#15665, lanetype#15677, shape#2846, shape#2858, sx#14090 +[visit_exp `VEXTBINOP`_instr{ishape_1#55, ishape_2#55}(`%`_ishape{shape#2846, Jnn#408}(`%X%`_shape{lanetype#15665, dim#15665, i#76812}(`I32`_lanetype, `%`_dim{i#76819}(4))), `%`_ishape{shape#2858, Jnn#412}(`%X%`_shape{lanetype#15677, dim#15677, i#76824}(`I16`_lanetype, `%`_dim{i#76831}(8))), `EXTMUL`_vextbinop__{half#558, sx#14090}(`HIGH`_half, `S`_sx))] +[visit_exp ishape_1#55] +[visit_id ishape_1#55] +[visit_exp ishape_2#55] +[visit_id ishape_2#55] +[visit_exp (`%`_ishape{shape#2846, Jnn#408}(`%X%`_shape{lanetype#15665, dim#15665, i#76812}(`I32`_lanetype, `%`_dim{i#76819}(4))), `%`_ishape{shape#2858, Jnn#412}(`%X%`_shape{lanetype#15677, dim#15677, i#76824}(`I16`_lanetype, `%`_dim{i#76831}(8))), `EXTMUL`_vextbinop__{half#558, sx#14090}(`HIGH`_half, `S`_sx))] +[visit_exp `%`_ishape{shape#2846, Jnn#408}(`%X%`_shape{lanetype#15665, dim#15665, i#76812}(`I32`_lanetype, `%`_dim{i#76819}(4)))] +[visit_exp shape#2846] +[visit_id shape#2846] +[visit_exp Jnn#408] +[visit_id Jnn#408] +[visit_exp (`%X%`_shape{lanetype#15665, dim#15665, i#76812}(`I32`_lanetype, `%`_dim{i#76819}(4)))] +[visit_exp `%X%`_shape{lanetype#15665, dim#15665, i#76812}(`I32`_lanetype, `%`_dim{i#76819}(4))] +[visit_exp lanetype#15665] +[visit_id lanetype#15665] +[visit_exp dim#15665] +[visit_id dim#15665] +[visit_exp i#76812] +[visit_id i#76812] +[visit_exp (`I32`_lanetype, `%`_dim{i#76819}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#76819}(4)] +[visit_exp i#76819] +[visit_id i#76819] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%`_ishape{shape#2858, Jnn#412}(`%X%`_shape{lanetype#15677, dim#15677, i#76824}(`I16`_lanetype, `%`_dim{i#76831}(8)))] +[visit_exp shape#2858] +[visit_id shape#2858] +[visit_exp Jnn#412] +[visit_id Jnn#412] +[visit_exp (`%X%`_shape{lanetype#15677, dim#15677, i#76824}(`I16`_lanetype, `%`_dim{i#76831}(8)))] +[visit_exp `%X%`_shape{lanetype#15677, dim#15677, i#76824}(`I16`_lanetype, `%`_dim{i#76831}(8))] +[visit_exp lanetype#15677] +[visit_id lanetype#15677] +[visit_exp dim#15677] +[visit_id dim#15677] +[visit_exp i#76824] +[visit_id i#76824] +[visit_exp (`I16`_lanetype, `%`_dim{i#76831}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#76831}(8)] +[visit_exp i#76831] +[visit_id i#76831] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `EXTMUL`_vextbinop__{half#558, sx#14090}(`HIGH`_half, `S`_sx)] +[visit_exp half#558] +[visit_id half#558] +[visit_exp sx#14090] +[visit_id sx#14090] +[visit_exp (`HIGH`_half, `S`_sx)] +[visit_exp `HIGH`_half] +[visit_exp ()] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#76805}(189)] +[visit_exp i#76805] +[visit_id i#76805] +[visit_exp (189)] +[visit_exp 189] +[check_dims] Jnn#416 Jnn#420 dim#15900 dim#15912 half#592 i#77185 i#77192 i#77199 i#77204 i#77211 ishape_1#57 ishape_2#57 lanetype#15900 lanetype#15912 shape#2961 shape#2973 sx#14124 +dims \ = Jnn#416, Jnn#420, dim#15900, dim#15912, half#592, i#77185, i#77192, i#77199, i#77204, i#77211, ishape_1#57, ishape_2#57, lanetype#15900, lanetype#15912, shape#2961, shape#2973, sx#14124 +[visit_exp `VEXTBINOP`_instr{ishape_1#57, ishape_2#57}(`%`_ishape{shape#2961, Jnn#416}(`%X%`_shape{lanetype#15900, dim#15900, i#77192}(`I32`_lanetype, `%`_dim{i#77199}(4))), `%`_ishape{shape#2973, Jnn#420}(`%X%`_shape{lanetype#15912, dim#15912, i#77204}(`I16`_lanetype, `%`_dim{i#77211}(8))), `EXTMUL`_vextbinop__{half#592, sx#14124}(`LOW`_half, `U`_sx))] +[visit_exp ishape_1#57] +[visit_id ishape_1#57] +[visit_exp ishape_2#57] +[visit_id ishape_2#57] +[visit_exp (`%`_ishape{shape#2961, Jnn#416}(`%X%`_shape{lanetype#15900, dim#15900, i#77192}(`I32`_lanetype, `%`_dim{i#77199}(4))), `%`_ishape{shape#2973, Jnn#420}(`%X%`_shape{lanetype#15912, dim#15912, i#77204}(`I16`_lanetype, `%`_dim{i#77211}(8))), `EXTMUL`_vextbinop__{half#592, sx#14124}(`LOW`_half, `U`_sx))] +[visit_exp `%`_ishape{shape#2961, Jnn#416}(`%X%`_shape{lanetype#15900, dim#15900, i#77192}(`I32`_lanetype, `%`_dim{i#77199}(4)))] +[visit_exp shape#2961] +[visit_id shape#2961] +[visit_exp Jnn#416] +[visit_id Jnn#416] +[visit_exp (`%X%`_shape{lanetype#15900, dim#15900, i#77192}(`I32`_lanetype, `%`_dim{i#77199}(4)))] +[visit_exp `%X%`_shape{lanetype#15900, dim#15900, i#77192}(`I32`_lanetype, `%`_dim{i#77199}(4))] +[visit_exp lanetype#15900] +[visit_id lanetype#15900] +[visit_exp dim#15900] +[visit_id dim#15900] +[visit_exp i#77192] +[visit_id i#77192] +[visit_exp (`I32`_lanetype, `%`_dim{i#77199}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#77199}(4)] +[visit_exp i#77199] +[visit_id i#77199] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%`_ishape{shape#2973, Jnn#420}(`%X%`_shape{lanetype#15912, dim#15912, i#77204}(`I16`_lanetype, `%`_dim{i#77211}(8)))] +[visit_exp shape#2973] +[visit_id shape#2973] +[visit_exp Jnn#420] +[visit_id Jnn#420] +[visit_exp (`%X%`_shape{lanetype#15912, dim#15912, i#77204}(`I16`_lanetype, `%`_dim{i#77211}(8)))] +[visit_exp `%X%`_shape{lanetype#15912, dim#15912, i#77204}(`I16`_lanetype, `%`_dim{i#77211}(8))] +[visit_exp lanetype#15912] +[visit_id lanetype#15912] +[visit_exp dim#15912] +[visit_id dim#15912] +[visit_exp i#77204] +[visit_id i#77204] +[visit_exp (`I16`_lanetype, `%`_dim{i#77211}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#77211}(8)] +[visit_exp i#77211] +[visit_id i#77211] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `EXTMUL`_vextbinop__{half#592, sx#14124}(`LOW`_half, `U`_sx)] +[visit_exp half#592] +[visit_id half#592] +[visit_exp sx#14124] +[visit_id sx#14124] +[visit_exp (`LOW`_half, `U`_sx)] +[visit_exp `LOW`_half] +[visit_exp ()] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#77185}(190)] +[visit_exp i#77185] +[visit_id i#77185] +[visit_exp (190)] +[visit_exp 190] +[check_dims] Jnn#424 Jnn#428 dim#16135 dim#16147 half#626 i#77565 i#77572 i#77579 i#77584 i#77591 ishape_1#59 ishape_2#59 lanetype#16135 lanetype#16147 shape#3076 shape#3088 sx#14158 +dims \ = Jnn#424, Jnn#428, dim#16135, dim#16147, half#626, i#77565, i#77572, i#77579, i#77584, i#77591, ishape_1#59, ishape_2#59, lanetype#16135, lanetype#16147, shape#3076, shape#3088, sx#14158 +[visit_exp `VEXTBINOP`_instr{ishape_1#59, ishape_2#59}(`%`_ishape{shape#3076, Jnn#424}(`%X%`_shape{lanetype#16135, dim#16135, i#77572}(`I32`_lanetype, `%`_dim{i#77579}(4))), `%`_ishape{shape#3088, Jnn#428}(`%X%`_shape{lanetype#16147, dim#16147, i#77584}(`I16`_lanetype, `%`_dim{i#77591}(8))), `EXTMUL`_vextbinop__{half#626, sx#14158}(`HIGH`_half, `U`_sx))] +[visit_exp ishape_1#59] +[visit_id ishape_1#59] +[visit_exp ishape_2#59] +[visit_id ishape_2#59] +[visit_exp (`%`_ishape{shape#3076, Jnn#424}(`%X%`_shape{lanetype#16135, dim#16135, i#77572}(`I32`_lanetype, `%`_dim{i#77579}(4))), `%`_ishape{shape#3088, Jnn#428}(`%X%`_shape{lanetype#16147, dim#16147, i#77584}(`I16`_lanetype, `%`_dim{i#77591}(8))), `EXTMUL`_vextbinop__{half#626, sx#14158}(`HIGH`_half, `U`_sx))] +[visit_exp `%`_ishape{shape#3076, Jnn#424}(`%X%`_shape{lanetype#16135, dim#16135, i#77572}(`I32`_lanetype, `%`_dim{i#77579}(4)))] +[visit_exp shape#3076] +[visit_id shape#3076] +[visit_exp Jnn#424] +[visit_id Jnn#424] +[visit_exp (`%X%`_shape{lanetype#16135, dim#16135, i#77572}(`I32`_lanetype, `%`_dim{i#77579}(4)))] +[visit_exp `%X%`_shape{lanetype#16135, dim#16135, i#77572}(`I32`_lanetype, `%`_dim{i#77579}(4))] +[visit_exp lanetype#16135] +[visit_id lanetype#16135] +[visit_exp dim#16135] +[visit_id dim#16135] +[visit_exp i#77572] +[visit_id i#77572] +[visit_exp (`I32`_lanetype, `%`_dim{i#77579}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#77579}(4)] +[visit_exp i#77579] +[visit_id i#77579] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%`_ishape{shape#3088, Jnn#428}(`%X%`_shape{lanetype#16147, dim#16147, i#77584}(`I16`_lanetype, `%`_dim{i#77591}(8)))] +[visit_exp shape#3088] +[visit_id shape#3088] +[visit_exp Jnn#428] +[visit_id Jnn#428] +[visit_exp (`%X%`_shape{lanetype#16147, dim#16147, i#77584}(`I16`_lanetype, `%`_dim{i#77591}(8)))] +[visit_exp `%X%`_shape{lanetype#16147, dim#16147, i#77584}(`I16`_lanetype, `%`_dim{i#77591}(8))] +[visit_exp lanetype#16147] +[visit_id lanetype#16147] +[visit_exp dim#16147] +[visit_id dim#16147] +[visit_exp i#77584] +[visit_id i#77584] +[visit_exp (`I16`_lanetype, `%`_dim{i#77591}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#77591}(8)] +[visit_exp i#77591] +[visit_id i#77591] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `EXTMUL`_vextbinop__{half#626, sx#14158}(`HIGH`_half, `U`_sx)] +[visit_exp half#626] +[visit_id half#626] +[visit_exp sx#14158] +[visit_id sx#14158] +[visit_exp (`HIGH`_half, `U`_sx)] +[visit_exp `HIGH`_half] +[visit_exp ()] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#77565}(191)] +[visit_exp i#77565] +[visit_id i#77565] +[visit_exp (191)] +[visit_exp 191] +ps' = +[check_dims] +[check_dims] Jnn#432 Jnn#436 dim#16370 dim#16382 i#77945 i#77952 i#77959 i#77964 i#77971 ishape_1#61 ishape_2#61 lanetype#16370 lanetype#16382 shape#3191 shape#3203 +dims \ = Jnn#432, Jnn#436, dim#16370, dim#16382, i#77945, i#77952, i#77959, i#77964, i#77971, ishape_1#61, ishape_2#61, lanetype#16370, lanetype#16382, shape#3191, shape#3203 +[visit_exp `VEXTTERNOP`_instr{ishape_1#61, ishape_2#61}(`%`_ishape{shape#3191, Jnn#432}(`%X%`_shape{lanetype#16370, dim#16370, i#77952}(`I32`_lanetype, `%`_dim{i#77959}(4))), `%`_ishape{shape#3203, Jnn#436}(`%X%`_shape{lanetype#16382, dim#16382, i#77964}(`I16`_lanetype, `%`_dim{i#77971}(8))), `RELAXED_DOT_ADDS`_vextternop__)] +[visit_exp ishape_1#61] +[visit_id ishape_1#61] +[visit_exp ishape_2#61] +[visit_id ishape_2#61] +[visit_exp (`%`_ishape{shape#3191, Jnn#432}(`%X%`_shape{lanetype#16370, dim#16370, i#77952}(`I32`_lanetype, `%`_dim{i#77959}(4))), `%`_ishape{shape#3203, Jnn#436}(`%X%`_shape{lanetype#16382, dim#16382, i#77964}(`I16`_lanetype, `%`_dim{i#77971}(8))), `RELAXED_DOT_ADDS`_vextternop__)] +[visit_exp `%`_ishape{shape#3191, Jnn#432}(`%X%`_shape{lanetype#16370, dim#16370, i#77952}(`I32`_lanetype, `%`_dim{i#77959}(4)))] +[visit_exp shape#3191] +[visit_id shape#3191] +[visit_exp Jnn#432] +[visit_id Jnn#432] +[visit_exp (`%X%`_shape{lanetype#16370, dim#16370, i#77952}(`I32`_lanetype, `%`_dim{i#77959}(4)))] +[visit_exp `%X%`_shape{lanetype#16370, dim#16370, i#77952}(`I32`_lanetype, `%`_dim{i#77959}(4))] +[visit_exp lanetype#16370] +[visit_id lanetype#16370] +[visit_exp dim#16370] +[visit_id dim#16370] +[visit_exp i#77952] +[visit_id i#77952] +[visit_exp (`I32`_lanetype, `%`_dim{i#77959}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#77959}(4)] +[visit_exp i#77959] +[visit_id i#77959] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%`_ishape{shape#3203, Jnn#436}(`%X%`_shape{lanetype#16382, dim#16382, i#77964}(`I16`_lanetype, `%`_dim{i#77971}(8)))] +[visit_exp shape#3203] +[visit_id shape#3203] +[visit_exp Jnn#436] +[visit_id Jnn#436] +[visit_exp (`%X%`_shape{lanetype#16382, dim#16382, i#77964}(`I16`_lanetype, `%`_dim{i#77971}(8)))] +[visit_exp `%X%`_shape{lanetype#16382, dim#16382, i#77964}(`I16`_lanetype, `%`_dim{i#77971}(8))] +[visit_exp lanetype#16382] +[visit_id lanetype#16382] +[visit_exp dim#16382] +[visit_id dim#16382] +[visit_exp i#77964] +[visit_id i#77964] +[visit_exp (`I16`_lanetype, `%`_dim{i#77971}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#77971}(8)] +[visit_exp i#77971] +[visit_id i#77971] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `RELAXED_DOT_ADDS`_vextternop__] +[visit_exp ()] +[visit_exp `%`_u32{i#77945}(275)] +[visit_exp i#77945] +[visit_id i#77945] +[visit_exp (275)] +[visit_exp 275] +ps' = +[check_dims] +[check_dims] dim#16605 i#78325 i#78332 i#78339 lanetype#16605 shape#3296 +dims \ = dim#16605, i#78325, i#78332, i#78339, lanetype#16605, shape#3296 +[visit_exp `VUNOP`_instr{shape#3296}(`%X%`_shape{lanetype#16605, dim#16605, i#78332}(`I64`_lanetype, `%`_dim{i#78339}(2)), `ABS`_vunop_)] +[visit_exp shape#3296] +[visit_id shape#3296] +[visit_exp (`%X%`_shape{lanetype#16605, dim#16605, i#78332}(`I64`_lanetype, `%`_dim{i#78339}(2)), `ABS`_vunop_)] +[visit_exp `%X%`_shape{lanetype#16605, dim#16605, i#78332}(`I64`_lanetype, `%`_dim{i#78339}(2))] +[visit_exp lanetype#16605] +[visit_id lanetype#16605] +[visit_exp dim#16605] +[visit_id dim#16605] +[visit_exp i#78332] +[visit_id i#78332] +[visit_exp (`I64`_lanetype, `%`_dim{i#78339}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#78339}(2)] +[visit_exp i#78339] +[visit_id i#78339] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `ABS`_vunop_] +[visit_exp ()] +[visit_exp `%`_u32{i#78325}(192)] +[visit_exp i#78325] +[visit_id i#78325] +[visit_exp (192)] +[visit_exp 192] +[check_dims] dim#16632 i#78407 i#78414 i#78421 lanetype#16632 shape#3298 +dims \ = dim#16632, i#78407, i#78414, i#78421, lanetype#16632, shape#3298 +[visit_exp `VUNOP`_instr{shape#3298}(`%X%`_shape{lanetype#16632, dim#16632, i#78414}(`I64`_lanetype, `%`_dim{i#78421}(2)), `NEG`_vunop_)] +[visit_exp shape#3298] +[visit_id shape#3298] +[visit_exp (`%X%`_shape{lanetype#16632, dim#16632, i#78414}(`I64`_lanetype, `%`_dim{i#78421}(2)), `NEG`_vunop_)] +[visit_exp `%X%`_shape{lanetype#16632, dim#16632, i#78414}(`I64`_lanetype, `%`_dim{i#78421}(2))] +[visit_exp lanetype#16632] +[visit_id lanetype#16632] +[visit_exp dim#16632] +[visit_id dim#16632] +[visit_exp i#78414] +[visit_id i#78414] +[visit_exp (`I64`_lanetype, `%`_dim{i#78421}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#78421}(2)] +[visit_exp i#78421] +[visit_id i#78421] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `NEG`_vunop_] +[visit_exp ()] +[visit_exp `%`_u32{i#78407}(193)] +[visit_exp i#78407] +[visit_id i#78407] +[visit_exp (193)] +[visit_exp 193] +ps' = +[check_dims] +[check_dims] dim#16659 i#78489 i#78496 i#78503 lanetype#16659 shape#3300 +dims \ = dim#16659, i#78489, i#78496, i#78503, lanetype#16659, shape#3300 +[visit_exp `VTESTOP`_instr{shape#3300}(`%X%`_shape{lanetype#16659, dim#16659, i#78496}(`I64`_lanetype, `%`_dim{i#78503}(2)), `ALL_TRUE`_vtestop_)] +[visit_exp shape#3300] +[visit_id shape#3300] +[visit_exp (`%X%`_shape{lanetype#16659, dim#16659, i#78496}(`I64`_lanetype, `%`_dim{i#78503}(2)), `ALL_TRUE`_vtestop_)] +[visit_exp `%X%`_shape{lanetype#16659, dim#16659, i#78496}(`I64`_lanetype, `%`_dim{i#78503}(2))] +[visit_exp lanetype#16659] +[visit_id lanetype#16659] +[visit_exp dim#16659] +[visit_id dim#16659] +[visit_exp i#78496] +[visit_id i#78496] +[visit_exp (`I64`_lanetype, `%`_dim{i#78503}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#78503}(2)] +[visit_exp i#78503] +[visit_id i#78503] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `ALL_TRUE`_vtestop_] +[visit_exp ()] +[visit_exp `%`_u32{i#78489}(195)] +[visit_exp i#78489] +[visit_id i#78489] +[visit_exp (195)] +[visit_exp 195] +ps' = +[check_dims] +[check_dims] Jnn#440 dim#16686 i#78571 i#78578 i#78585 ishape#37 lanetype#16686 shape#3312 +dims \ = Jnn#440, dim#16686, i#78571, i#78578, i#78585, ishape#37, lanetype#16686, shape#3312 +[visit_exp `VBITMASK`_instr{ishape#37}(`%`_ishape{shape#3312, Jnn#440}(`%X%`_shape{lanetype#16686, dim#16686, i#78578}(`I64`_lanetype, `%`_dim{i#78585}(2))))] +[visit_exp ishape#37] +[visit_id ishape#37] +[visit_exp (`%`_ishape{shape#3312, Jnn#440}(`%X%`_shape{lanetype#16686, dim#16686, i#78578}(`I64`_lanetype, `%`_dim{i#78585}(2))))] +[visit_exp `%`_ishape{shape#3312, Jnn#440}(`%X%`_shape{lanetype#16686, dim#16686, i#78578}(`I64`_lanetype, `%`_dim{i#78585}(2)))] +[visit_exp shape#3312] +[visit_id shape#3312] +[visit_exp Jnn#440] +[visit_id Jnn#440] +[visit_exp (`%X%`_shape{lanetype#16686, dim#16686, i#78578}(`I64`_lanetype, `%`_dim{i#78585}(2)))] +[visit_exp `%X%`_shape{lanetype#16686, dim#16686, i#78578}(`I64`_lanetype, `%`_dim{i#78585}(2))] +[visit_exp lanetype#16686] +[visit_id lanetype#16686] +[visit_exp dim#16686] +[visit_id dim#16686] +[visit_exp i#78578] +[visit_id i#78578] +[visit_exp (`I64`_lanetype, `%`_dim{i#78585}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#78585}(2)] +[visit_exp i#78585] +[visit_id i#78585] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `%`_u32{i#78571}(196)] +[visit_exp i#78571] +[visit_id i#78571] +[visit_exp (196)] +[visit_exp 196] +ps' = +[check_dims] +[check_dims] dim#16698 dim#16710 half#660 i#78608 i#78615 i#78622 i#78627 i#78634 lanetype#16698 lanetype#16710 shape_1#23 shape_2#23 sx#14192 +dims \ = dim#16698, dim#16710, half#660, i#78608, i#78615, i#78622, i#78627, i#78634, lanetype#16698, lanetype#16710, shape_1#23, shape_2#23, sx#14192 +[visit_exp `VCVTOP`_instr{shape_1#23, shape_2#23}(`%X%`_shape{lanetype#16698, dim#16698, i#78615}(`I64`_lanetype, `%`_dim{i#78622}(2)), `%X%`_shape{lanetype#16710, dim#16710, i#78627}(`I32`_lanetype, `%`_dim{i#78634}(4)), `EXTEND`_vcvtop__{half#660, sx#14192}(`LOW`_half, `S`_sx))] +[visit_exp shape_1#23] +[visit_id shape_1#23] +[visit_exp shape_2#23] +[visit_id shape_2#23] +[visit_exp (`%X%`_shape{lanetype#16698, dim#16698, i#78615}(`I64`_lanetype, `%`_dim{i#78622}(2)), `%X%`_shape{lanetype#16710, dim#16710, i#78627}(`I32`_lanetype, `%`_dim{i#78634}(4)), `EXTEND`_vcvtop__{half#660, sx#14192}(`LOW`_half, `S`_sx))] +[visit_exp `%X%`_shape{lanetype#16698, dim#16698, i#78615}(`I64`_lanetype, `%`_dim{i#78622}(2))] +[visit_exp lanetype#16698] +[visit_id lanetype#16698] +[visit_exp dim#16698] +[visit_id dim#16698] +[visit_exp i#78615] +[visit_id i#78615] +[visit_exp (`I64`_lanetype, `%`_dim{i#78622}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#78622}(2)] +[visit_exp i#78622] +[visit_id i#78622] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `%X%`_shape{lanetype#16710, dim#16710, i#78627}(`I32`_lanetype, `%`_dim{i#78634}(4))] +[visit_exp lanetype#16710] +[visit_id lanetype#16710] +[visit_exp dim#16710] +[visit_id dim#16710] +[visit_exp i#78627] +[visit_id i#78627] +[visit_exp (`I32`_lanetype, `%`_dim{i#78634}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#78634}(4)] +[visit_exp i#78634] +[visit_id i#78634] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `EXTEND`_vcvtop__{half#660, sx#14192}(`LOW`_half, `S`_sx)] +[visit_exp half#660] +[visit_id half#660] +[visit_exp sx#14192] +[visit_id sx#14192] +[visit_exp (`LOW`_half, `S`_sx)] +[visit_exp `LOW`_half] +[visit_exp ()] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#78608}(199)] +[visit_exp i#78608] +[visit_id i#78608] +[visit_exp (199)] +[visit_exp 199] +[check_dims] dim#16813 dim#16825 half#694 i#78868 i#78875 i#78882 i#78887 i#78894 lanetype#16813 lanetype#16825 shape_1#25 shape_2#25 sx#14226 +dims \ = dim#16813, dim#16825, half#694, i#78868, i#78875, i#78882, i#78887, i#78894, lanetype#16813, lanetype#16825, shape_1#25, shape_2#25, sx#14226 +[visit_exp `VCVTOP`_instr{shape_1#25, shape_2#25}(`%X%`_shape{lanetype#16813, dim#16813, i#78875}(`I64`_lanetype, `%`_dim{i#78882}(2)), `%X%`_shape{lanetype#16825, dim#16825, i#78887}(`I32`_lanetype, `%`_dim{i#78894}(4)), `EXTEND`_vcvtop__{half#694, sx#14226}(`HIGH`_half, `S`_sx))] +[visit_exp shape_1#25] +[visit_id shape_1#25] +[visit_exp shape_2#25] +[visit_id shape_2#25] +[visit_exp (`%X%`_shape{lanetype#16813, dim#16813, i#78875}(`I64`_lanetype, `%`_dim{i#78882}(2)), `%X%`_shape{lanetype#16825, dim#16825, i#78887}(`I32`_lanetype, `%`_dim{i#78894}(4)), `EXTEND`_vcvtop__{half#694, sx#14226}(`HIGH`_half, `S`_sx))] +[visit_exp `%X%`_shape{lanetype#16813, dim#16813, i#78875}(`I64`_lanetype, `%`_dim{i#78882}(2))] +[visit_exp lanetype#16813] +[visit_id lanetype#16813] +[visit_exp dim#16813] +[visit_id dim#16813] +[visit_exp i#78875] +[visit_id i#78875] +[visit_exp (`I64`_lanetype, `%`_dim{i#78882}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#78882}(2)] +[visit_exp i#78882] +[visit_id i#78882] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `%X%`_shape{lanetype#16825, dim#16825, i#78887}(`I32`_lanetype, `%`_dim{i#78894}(4))] +[visit_exp lanetype#16825] +[visit_id lanetype#16825] +[visit_exp dim#16825] +[visit_id dim#16825] +[visit_exp i#78887] +[visit_id i#78887] +[visit_exp (`I32`_lanetype, `%`_dim{i#78894}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#78894}(4)] +[visit_exp i#78894] +[visit_id i#78894] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `EXTEND`_vcvtop__{half#694, sx#14226}(`HIGH`_half, `S`_sx)] +[visit_exp half#694] +[visit_id half#694] +[visit_exp sx#14226] +[visit_id sx#14226] +[visit_exp (`HIGH`_half, `S`_sx)] +[visit_exp `HIGH`_half] +[visit_exp ()] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#78868}(200)] +[visit_exp i#78868] +[visit_id i#78868] +[visit_exp (200)] +[visit_exp 200] +[check_dims] dim#16928 dim#16940 half#728 i#79128 i#79135 i#79142 i#79147 i#79154 lanetype#16928 lanetype#16940 shape_1#27 shape_2#27 sx#14260 +dims \ = dim#16928, dim#16940, half#728, i#79128, i#79135, i#79142, i#79147, i#79154, lanetype#16928, lanetype#16940, shape_1#27, shape_2#27, sx#14260 +[visit_exp `VCVTOP`_instr{shape_1#27, shape_2#27}(`%X%`_shape{lanetype#16928, dim#16928, i#79135}(`I64`_lanetype, `%`_dim{i#79142}(2)), `%X%`_shape{lanetype#16940, dim#16940, i#79147}(`I32`_lanetype, `%`_dim{i#79154}(4)), `EXTEND`_vcvtop__{half#728, sx#14260}(`LOW`_half, `U`_sx))] +[visit_exp shape_1#27] +[visit_id shape_1#27] +[visit_exp shape_2#27] +[visit_id shape_2#27] +[visit_exp (`%X%`_shape{lanetype#16928, dim#16928, i#79135}(`I64`_lanetype, `%`_dim{i#79142}(2)), `%X%`_shape{lanetype#16940, dim#16940, i#79147}(`I32`_lanetype, `%`_dim{i#79154}(4)), `EXTEND`_vcvtop__{half#728, sx#14260}(`LOW`_half, `U`_sx))] +[visit_exp `%X%`_shape{lanetype#16928, dim#16928, i#79135}(`I64`_lanetype, `%`_dim{i#79142}(2))] +[visit_exp lanetype#16928] +[visit_id lanetype#16928] +[visit_exp dim#16928] +[visit_id dim#16928] +[visit_exp i#79135] +[visit_id i#79135] +[visit_exp (`I64`_lanetype, `%`_dim{i#79142}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#79142}(2)] +[visit_exp i#79142] +[visit_id i#79142] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `%X%`_shape{lanetype#16940, dim#16940, i#79147}(`I32`_lanetype, `%`_dim{i#79154}(4))] +[visit_exp lanetype#16940] +[visit_id lanetype#16940] +[visit_exp dim#16940] +[visit_id dim#16940] +[visit_exp i#79147] +[visit_id i#79147] +[visit_exp (`I32`_lanetype, `%`_dim{i#79154}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#79154}(4)] +[visit_exp i#79154] +[visit_id i#79154] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `EXTEND`_vcvtop__{half#728, sx#14260}(`LOW`_half, `U`_sx)] +[visit_exp half#728] +[visit_id half#728] +[visit_exp sx#14260] +[visit_id sx#14260] +[visit_exp (`LOW`_half, `U`_sx)] +[visit_exp `LOW`_half] +[visit_exp ()] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#79128}(201)] +[visit_exp i#79128] +[visit_id i#79128] +[visit_exp (201)] +[visit_exp 201] +[check_dims] dim#17043 dim#17055 half#762 i#79388 i#79395 i#79402 i#79407 i#79414 lanetype#17043 lanetype#17055 shape_1#29 shape_2#29 sx#14294 +dims \ = dim#17043, dim#17055, half#762, i#79388, i#79395, i#79402, i#79407, i#79414, lanetype#17043, lanetype#17055, shape_1#29, shape_2#29, sx#14294 +[visit_exp `VCVTOP`_instr{shape_1#29, shape_2#29}(`%X%`_shape{lanetype#17043, dim#17043, i#79395}(`I64`_lanetype, `%`_dim{i#79402}(2)), `%X%`_shape{lanetype#17055, dim#17055, i#79407}(`I32`_lanetype, `%`_dim{i#79414}(4)), `EXTEND`_vcvtop__{half#762, sx#14294}(`HIGH`_half, `U`_sx))] +[visit_exp shape_1#29] +[visit_id shape_1#29] +[visit_exp shape_2#29] +[visit_id shape_2#29] +[visit_exp (`%X%`_shape{lanetype#17043, dim#17043, i#79395}(`I64`_lanetype, `%`_dim{i#79402}(2)), `%X%`_shape{lanetype#17055, dim#17055, i#79407}(`I32`_lanetype, `%`_dim{i#79414}(4)), `EXTEND`_vcvtop__{half#762, sx#14294}(`HIGH`_half, `U`_sx))] +[visit_exp `%X%`_shape{lanetype#17043, dim#17043, i#79395}(`I64`_lanetype, `%`_dim{i#79402}(2))] +[visit_exp lanetype#17043] +[visit_id lanetype#17043] +[visit_exp dim#17043] +[visit_id dim#17043] +[visit_exp i#79395] +[visit_id i#79395] +[visit_exp (`I64`_lanetype, `%`_dim{i#79402}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#79402}(2)] +[visit_exp i#79402] +[visit_id i#79402] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `%X%`_shape{lanetype#17055, dim#17055, i#79407}(`I32`_lanetype, `%`_dim{i#79414}(4))] +[visit_exp lanetype#17055] +[visit_id lanetype#17055] +[visit_exp dim#17055] +[visit_id dim#17055] +[visit_exp i#79407] +[visit_id i#79407] +[visit_exp (`I32`_lanetype, `%`_dim{i#79414}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#79414}(4)] +[visit_exp i#79414] +[visit_id i#79414] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `EXTEND`_vcvtop__{half#762, sx#14294}(`HIGH`_half, `U`_sx)] +[visit_exp half#762] +[visit_id half#762] +[visit_exp sx#14294] +[visit_id sx#14294] +[visit_exp (`HIGH`_half, `U`_sx)] +[visit_exp `HIGH`_half] +[visit_exp ()] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#79388}(202)] +[visit_exp i#79388] +[visit_id i#79388] +[visit_exp (202)] +[visit_exp 202] +ps' = +[check_dims] +[check_dims] Jnn#444 dim#17158 i#79648 i#79655 i#79662 ishape#39 lanetype#17158 shape#3324 +dims \ = Jnn#444, dim#17158, i#79648, i#79655, i#79662, ishape#39, lanetype#17158, shape#3324 +[visit_exp `VSHIFTOP`_instr{ishape#39}(`%`_ishape{shape#3324, Jnn#444}(`%X%`_shape{lanetype#17158, dim#17158, i#79655}(`I64`_lanetype, `%`_dim{i#79662}(2))), `SHL`_vshiftop_)] +[visit_exp ishape#39] +[visit_id ishape#39] +[visit_exp (`%`_ishape{shape#3324, Jnn#444}(`%X%`_shape{lanetype#17158, dim#17158, i#79655}(`I64`_lanetype, `%`_dim{i#79662}(2))), `SHL`_vshiftop_)] +[visit_exp `%`_ishape{shape#3324, Jnn#444}(`%X%`_shape{lanetype#17158, dim#17158, i#79655}(`I64`_lanetype, `%`_dim{i#79662}(2)))] +[visit_exp shape#3324] +[visit_id shape#3324] +[visit_exp Jnn#444] +[visit_id Jnn#444] +[visit_exp (`%X%`_shape{lanetype#17158, dim#17158, i#79655}(`I64`_lanetype, `%`_dim{i#79662}(2)))] +[visit_exp `%X%`_shape{lanetype#17158, dim#17158, i#79655}(`I64`_lanetype, `%`_dim{i#79662}(2))] +[visit_exp lanetype#17158] +[visit_id lanetype#17158] +[visit_exp dim#17158] +[visit_id dim#17158] +[visit_exp i#79655] +[visit_id i#79655] +[visit_exp (`I64`_lanetype, `%`_dim{i#79662}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#79662}(2)] +[visit_exp i#79662] +[visit_id i#79662] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `SHL`_vshiftop_] +[visit_exp ()] +[visit_exp `%`_u32{i#79648}(203)] +[visit_exp i#79648] +[visit_id i#79648] +[visit_exp (203)] +[visit_exp 203] +[check_dims] Jnn#448 dim#17215 i#79760 i#79767 i#79774 ishape#41 lanetype#17215 shape#3351 sx#14328 +dims \ = Jnn#448, dim#17215, i#79760, i#79767, i#79774, ishape#41, lanetype#17215, shape#3351, sx#14328 +[visit_exp `VSHIFTOP`_instr{ishape#41}(`%`_ishape{shape#3351, Jnn#448}(`%X%`_shape{lanetype#17215, dim#17215, i#79767}(`I64`_lanetype, `%`_dim{i#79774}(2))), `SHR`_vshiftop_{sx#14328}(`S`_sx))] +[visit_exp ishape#41] +[visit_id ishape#41] +[visit_exp (`%`_ishape{shape#3351, Jnn#448}(`%X%`_shape{lanetype#17215, dim#17215, i#79767}(`I64`_lanetype, `%`_dim{i#79774}(2))), `SHR`_vshiftop_{sx#14328}(`S`_sx))] +[visit_exp `%`_ishape{shape#3351, Jnn#448}(`%X%`_shape{lanetype#17215, dim#17215, i#79767}(`I64`_lanetype, `%`_dim{i#79774}(2)))] +[visit_exp shape#3351] +[visit_id shape#3351] +[visit_exp Jnn#448] +[visit_id Jnn#448] +[visit_exp (`%X%`_shape{lanetype#17215, dim#17215, i#79767}(`I64`_lanetype, `%`_dim{i#79774}(2)))] +[visit_exp `%X%`_shape{lanetype#17215, dim#17215, i#79767}(`I64`_lanetype, `%`_dim{i#79774}(2))] +[visit_exp lanetype#17215] +[visit_id lanetype#17215] +[visit_exp dim#17215] +[visit_id dim#17215] +[visit_exp i#79767] +[visit_id i#79767] +[visit_exp (`I64`_lanetype, `%`_dim{i#79774}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#79774}(2)] +[visit_exp i#79774] +[visit_id i#79774] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `SHR`_vshiftop_{sx#14328}(`S`_sx)] +[visit_exp sx#14328] +[visit_id sx#14328] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#79760}(204)] +[visit_exp i#79760] +[visit_id i#79760] +[visit_exp (204)] +[visit_exp 204] +[check_dims] Jnn#452 dim#17278 i#79882 i#79889 i#79896 ishape#43 lanetype#17278 shape#3380 sx#14347 +dims \ = Jnn#452, dim#17278, i#79882, i#79889, i#79896, ishape#43, lanetype#17278, shape#3380, sx#14347 +[visit_exp `VSHIFTOP`_instr{ishape#43}(`%`_ishape{shape#3380, Jnn#452}(`%X%`_shape{lanetype#17278, dim#17278, i#79889}(`I64`_lanetype, `%`_dim{i#79896}(2))), `SHR`_vshiftop_{sx#14347}(`U`_sx))] +[visit_exp ishape#43] +[visit_id ishape#43] +[visit_exp (`%`_ishape{shape#3380, Jnn#452}(`%X%`_shape{lanetype#17278, dim#17278, i#79889}(`I64`_lanetype, `%`_dim{i#79896}(2))), `SHR`_vshiftop_{sx#14347}(`U`_sx))] +[visit_exp `%`_ishape{shape#3380, Jnn#452}(`%X%`_shape{lanetype#17278, dim#17278, i#79889}(`I64`_lanetype, `%`_dim{i#79896}(2)))] +[visit_exp shape#3380] +[visit_id shape#3380] +[visit_exp Jnn#452] +[visit_id Jnn#452] +[visit_exp (`%X%`_shape{lanetype#17278, dim#17278, i#79889}(`I64`_lanetype, `%`_dim{i#79896}(2)))] +[visit_exp `%X%`_shape{lanetype#17278, dim#17278, i#79889}(`I64`_lanetype, `%`_dim{i#79896}(2))] +[visit_exp lanetype#17278] +[visit_id lanetype#17278] +[visit_exp dim#17278] +[visit_id dim#17278] +[visit_exp i#79889] +[visit_id i#79889] +[visit_exp (`I64`_lanetype, `%`_dim{i#79896}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#79896}(2)] +[visit_exp i#79896] +[visit_id i#79896] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `SHR`_vshiftop_{sx#14347}(`U`_sx)] +[visit_exp sx#14347] +[visit_id sx#14347] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#79882}(205)] +[visit_exp i#79882] +[visit_id i#79882] +[visit_exp (205)] +[visit_exp 205] +ps' = +[check_dims] +[check_dims] dim#17341 i#80004 i#80011 i#80018 lanetype#17341 shape#3399 +dims \ = dim#17341, i#80004, i#80011, i#80018, lanetype#17341, shape#3399 +[visit_exp `VBINOP`_instr{shape#3399}(`%X%`_shape{lanetype#17341, dim#17341, i#80011}(`I64`_lanetype, `%`_dim{i#80018}(2)), `ADD`_vbinop_)] +[visit_exp shape#3399] +[visit_id shape#3399] +[visit_exp (`%X%`_shape{lanetype#17341, dim#17341, i#80011}(`I64`_lanetype, `%`_dim{i#80018}(2)), `ADD`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#17341, dim#17341, i#80011}(`I64`_lanetype, `%`_dim{i#80018}(2))] +[visit_exp lanetype#17341] +[visit_id lanetype#17341] +[visit_exp dim#17341] +[visit_id dim#17341] +[visit_exp i#80011] +[visit_id i#80011] +[visit_exp (`I64`_lanetype, `%`_dim{i#80018}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#80018}(2)] +[visit_exp i#80018] +[visit_id i#80018] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `ADD`_vbinop_] +[visit_exp ()] +[visit_exp `%`_u32{i#80004}(206)] +[visit_exp i#80004] +[visit_id i#80004] +[visit_exp (206)] +[visit_exp 206] +[check_dims] dim#17368 i#80086 i#80093 i#80100 lanetype#17368 shape#3401 +dims \ = dim#17368, i#80086, i#80093, i#80100, lanetype#17368, shape#3401 +[visit_exp `VBINOP`_instr{shape#3401}(`%X%`_shape{lanetype#17368, dim#17368, i#80093}(`I64`_lanetype, `%`_dim{i#80100}(2)), `SUB`_vbinop_)] +[visit_exp shape#3401] +[visit_id shape#3401] +[visit_exp (`%X%`_shape{lanetype#17368, dim#17368, i#80093}(`I64`_lanetype, `%`_dim{i#80100}(2)), `SUB`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#17368, dim#17368, i#80093}(`I64`_lanetype, `%`_dim{i#80100}(2))] +[visit_exp lanetype#17368] +[visit_id lanetype#17368] +[visit_exp dim#17368] +[visit_id dim#17368] +[visit_exp i#80093] +[visit_id i#80093] +[visit_exp (`I64`_lanetype, `%`_dim{i#80100}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#80100}(2)] +[visit_exp i#80100] +[visit_id i#80100] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `SUB`_vbinop_] +[visit_exp ()] +[visit_exp `%`_u32{i#80086}(209)] +[visit_exp i#80086] +[visit_id i#80086] +[visit_exp (209)] +[visit_exp 209] +[check_dims] dim#17395 i#80168 i#80175 i#80182 lanetype#17395 shape#3403 +dims \ = dim#17395, i#80168, i#80175, i#80182, lanetype#17395, shape#3403 +[visit_exp `VBINOP`_instr{shape#3403}(`%X%`_shape{lanetype#17395, dim#17395, i#80175}(`I64`_lanetype, `%`_dim{i#80182}(2)), `MUL`_vbinop_)] +[visit_exp shape#3403] +[visit_id shape#3403] +[visit_exp (`%X%`_shape{lanetype#17395, dim#17395, i#80175}(`I64`_lanetype, `%`_dim{i#80182}(2)), `MUL`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#17395, dim#17395, i#80175}(`I64`_lanetype, `%`_dim{i#80182}(2))] +[visit_exp lanetype#17395] +[visit_id lanetype#17395] +[visit_exp dim#17395] +[visit_id dim#17395] +[visit_exp i#80175] +[visit_id i#80175] +[visit_exp (`I64`_lanetype, `%`_dim{i#80182}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#80182}(2)] +[visit_exp i#80182] +[visit_id i#80182] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `MUL`_vbinop_] +[visit_exp ()] +[visit_exp `%`_u32{i#80168}(213)] +[visit_exp i#80168] +[visit_id i#80168] +[visit_exp (213)] +[visit_exp 213] +ps' = +[check_dims] +[check_dims] dim#17422 i#80250 i#80257 i#80264 lanetype#17422 shape#3405 +dims \ = dim#17422, i#80250, i#80257, i#80264, lanetype#17422, shape#3405 +[visit_exp `VRELOP`_instr{shape#3405}(`%X%`_shape{lanetype#17422, dim#17422, i#80257}(`I64`_lanetype, `%`_dim{i#80264}(2)), `EQ`_vrelop_)] +[visit_exp shape#3405] +[visit_id shape#3405] +[visit_exp (`%X%`_shape{lanetype#17422, dim#17422, i#80257}(`I64`_lanetype, `%`_dim{i#80264}(2)), `EQ`_vrelop_)] +[visit_exp `%X%`_shape{lanetype#17422, dim#17422, i#80257}(`I64`_lanetype, `%`_dim{i#80264}(2))] +[visit_exp lanetype#17422] +[visit_id lanetype#17422] +[visit_exp dim#17422] +[visit_id dim#17422] +[visit_exp i#80257] +[visit_id i#80257] +[visit_exp (`I64`_lanetype, `%`_dim{i#80264}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#80264}(2)] +[visit_exp i#80264] +[visit_id i#80264] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `EQ`_vrelop_] +[visit_exp ()] +[visit_exp `%`_u32{i#80250}(214)] +[visit_exp i#80250] +[visit_id i#80250] +[visit_exp (214)] +[visit_exp 214] +[check_dims] dim#17449 i#80332 i#80339 i#80346 lanetype#17449 shape#3407 +dims \ = dim#17449, i#80332, i#80339, i#80346, lanetype#17449, shape#3407 +[visit_exp `VRELOP`_instr{shape#3407}(`%X%`_shape{lanetype#17449, dim#17449, i#80339}(`I64`_lanetype, `%`_dim{i#80346}(2)), `NE`_vrelop_)] +[visit_exp shape#3407] +[visit_id shape#3407] +[visit_exp (`%X%`_shape{lanetype#17449, dim#17449, i#80339}(`I64`_lanetype, `%`_dim{i#80346}(2)), `NE`_vrelop_)] +[visit_exp `%X%`_shape{lanetype#17449, dim#17449, i#80339}(`I64`_lanetype, `%`_dim{i#80346}(2))] +[visit_exp lanetype#17449] +[visit_id lanetype#17449] +[visit_exp dim#17449] +[visit_id dim#17449] +[visit_exp i#80339] +[visit_id i#80339] +[visit_exp (`I64`_lanetype, `%`_dim{i#80346}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#80346}(2)] +[visit_exp i#80346] +[visit_id i#80346] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `NE`_vrelop_] +[visit_exp ()] +[visit_exp `%`_u32{i#80332}(215)] +[visit_exp i#80332] +[visit_id i#80332] +[visit_exp (215)] +[visit_exp 215] +[check_dims] dim#17476 i#80414 i#80421 i#80428 lanetype#17476 shape#3409 sx#14717 +dims \ = dim#17476, i#80414, i#80421, i#80428, lanetype#17476, shape#3409, sx#14717 +[visit_exp `VRELOP`_instr{shape#3409}(`%X%`_shape{lanetype#17476, dim#17476, i#80421}(`I64`_lanetype, `%`_dim{i#80428}(2)), `LT`_vrelop_{sx#14717}(`S`_sx))] +[visit_exp shape#3409] +[visit_id shape#3409] +[visit_exp (`%X%`_shape{lanetype#17476, dim#17476, i#80421}(`I64`_lanetype, `%`_dim{i#80428}(2)), `LT`_vrelop_{sx#14717}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#17476, dim#17476, i#80421}(`I64`_lanetype, `%`_dim{i#80428}(2))] +[visit_exp lanetype#17476] +[visit_id lanetype#17476] +[visit_exp dim#17476] +[visit_id dim#17476] +[visit_exp i#80421] +[visit_id i#80421] +[visit_exp (`I64`_lanetype, `%`_dim{i#80428}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#80428}(2)] +[visit_exp i#80428] +[visit_id i#80428] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `LT`_vrelop_{sx#14717}(`S`_sx)] +[visit_exp sx#14717] +[visit_id sx#14717] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#80414}(216)] +[visit_exp i#80414] +[visit_id i#80414] +[visit_exp (216)] +[visit_exp 216] +[check_dims] dim#17505 i#80502 i#80509 i#80516 lanetype#17505 shape#3411 sx#14787 +dims \ = dim#17505, i#80502, i#80509, i#80516, lanetype#17505, shape#3411, sx#14787 +[visit_exp `VRELOP`_instr{shape#3411}(`%X%`_shape{lanetype#17505, dim#17505, i#80509}(`I64`_lanetype, `%`_dim{i#80516}(2)), `GT`_vrelop_{sx#14787}(`S`_sx))] +[visit_exp shape#3411] +[visit_id shape#3411] +[visit_exp (`%X%`_shape{lanetype#17505, dim#17505, i#80509}(`I64`_lanetype, `%`_dim{i#80516}(2)), `GT`_vrelop_{sx#14787}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#17505, dim#17505, i#80509}(`I64`_lanetype, `%`_dim{i#80516}(2))] +[visit_exp lanetype#17505] +[visit_id lanetype#17505] +[visit_exp dim#17505] +[visit_id dim#17505] +[visit_exp i#80509] +[visit_id i#80509] +[visit_exp (`I64`_lanetype, `%`_dim{i#80516}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#80516}(2)] +[visit_exp i#80516] +[visit_id i#80516] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `GT`_vrelop_{sx#14787}(`S`_sx)] +[visit_exp sx#14787] +[visit_id sx#14787] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#80502}(217)] +[visit_exp i#80502] +[visit_id i#80502] +[visit_exp (217)] +[visit_exp 217] +[check_dims] dim#17534 i#80590 i#80597 i#80604 lanetype#17534 shape#3413 sx#14857 +dims \ = dim#17534, i#80590, i#80597, i#80604, lanetype#17534, shape#3413, sx#14857 +[visit_exp `VRELOP`_instr{shape#3413}(`%X%`_shape{lanetype#17534, dim#17534, i#80597}(`I64`_lanetype, `%`_dim{i#80604}(2)), `LE`_vrelop_{sx#14857}(`S`_sx))] +[visit_exp shape#3413] +[visit_id shape#3413] +[visit_exp (`%X%`_shape{lanetype#17534, dim#17534, i#80597}(`I64`_lanetype, `%`_dim{i#80604}(2)), `LE`_vrelop_{sx#14857}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#17534, dim#17534, i#80597}(`I64`_lanetype, `%`_dim{i#80604}(2))] +[visit_exp lanetype#17534] +[visit_id lanetype#17534] +[visit_exp dim#17534] +[visit_id dim#17534] +[visit_exp i#80597] +[visit_id i#80597] +[visit_exp (`I64`_lanetype, `%`_dim{i#80604}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#80604}(2)] +[visit_exp i#80604] +[visit_id i#80604] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `LE`_vrelop_{sx#14857}(`S`_sx)] +[visit_exp sx#14857] +[visit_id sx#14857] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#80590}(218)] +[visit_exp i#80590] +[visit_id i#80590] +[visit_exp (218)] +[visit_exp 218] +[check_dims] dim#17563 i#80678 i#80685 i#80692 lanetype#17563 shape#3415 sx#14927 +dims \ = dim#17563, i#80678, i#80685, i#80692, lanetype#17563, shape#3415, sx#14927 +[visit_exp `VRELOP`_instr{shape#3415}(`%X%`_shape{lanetype#17563, dim#17563, i#80685}(`I64`_lanetype, `%`_dim{i#80692}(2)), `GE`_vrelop_{sx#14927}(`S`_sx))] +[visit_exp shape#3415] +[visit_id shape#3415] +[visit_exp (`%X%`_shape{lanetype#17563, dim#17563, i#80685}(`I64`_lanetype, `%`_dim{i#80692}(2)), `GE`_vrelop_{sx#14927}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#17563, dim#17563, i#80685}(`I64`_lanetype, `%`_dim{i#80692}(2))] +[visit_exp lanetype#17563] +[visit_id lanetype#17563] +[visit_exp dim#17563] +[visit_id dim#17563] +[visit_exp i#80685] +[visit_id i#80685] +[visit_exp (`I64`_lanetype, `%`_dim{i#80692}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#80692}(2)] +[visit_exp i#80692] +[visit_id i#80692] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `GE`_vrelop_{sx#14927}(`S`_sx)] +[visit_exp sx#14927] +[visit_id sx#14927] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#80678}(219)] +[visit_exp i#80678] +[visit_id i#80678] +[visit_exp (219)] +[visit_exp 219] +ps' = +[check_dims] +[check_dims] Jnn#456 Jnn#460 dim#17592 dim#17604 half#796 i#80766 i#80773 i#80780 i#80785 i#80792 ishape_1#63 ishape_2#63 lanetype#17592 lanetype#17604 shape#3427 shape#3439 sx#14961 +dims \ = Jnn#456, Jnn#460, dim#17592, dim#17604, half#796, i#80766, i#80773, i#80780, i#80785, i#80792, ishape_1#63, ishape_2#63, lanetype#17592, lanetype#17604, shape#3427, shape#3439, sx#14961 +[visit_exp `VEXTBINOP`_instr{ishape_1#63, ishape_2#63}(`%`_ishape{shape#3427, Jnn#456}(`%X%`_shape{lanetype#17592, dim#17592, i#80773}(`I64`_lanetype, `%`_dim{i#80780}(2))), `%`_ishape{shape#3439, Jnn#460}(`%X%`_shape{lanetype#17604, dim#17604, i#80785}(`I32`_lanetype, `%`_dim{i#80792}(4))), `EXTMUL`_vextbinop__{half#796, sx#14961}(`LOW`_half, `S`_sx))] +[visit_exp ishape_1#63] +[visit_id ishape_1#63] +[visit_exp ishape_2#63] +[visit_id ishape_2#63] +[visit_exp (`%`_ishape{shape#3427, Jnn#456}(`%X%`_shape{lanetype#17592, dim#17592, i#80773}(`I64`_lanetype, `%`_dim{i#80780}(2))), `%`_ishape{shape#3439, Jnn#460}(`%X%`_shape{lanetype#17604, dim#17604, i#80785}(`I32`_lanetype, `%`_dim{i#80792}(4))), `EXTMUL`_vextbinop__{half#796, sx#14961}(`LOW`_half, `S`_sx))] +[visit_exp `%`_ishape{shape#3427, Jnn#456}(`%X%`_shape{lanetype#17592, dim#17592, i#80773}(`I64`_lanetype, `%`_dim{i#80780}(2)))] +[visit_exp shape#3427] +[visit_id shape#3427] +[visit_exp Jnn#456] +[visit_id Jnn#456] +[visit_exp (`%X%`_shape{lanetype#17592, dim#17592, i#80773}(`I64`_lanetype, `%`_dim{i#80780}(2)))] +[visit_exp `%X%`_shape{lanetype#17592, dim#17592, i#80773}(`I64`_lanetype, `%`_dim{i#80780}(2))] +[visit_exp lanetype#17592] +[visit_id lanetype#17592] +[visit_exp dim#17592] +[visit_id dim#17592] +[visit_exp i#80773] +[visit_id i#80773] +[visit_exp (`I64`_lanetype, `%`_dim{i#80780}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#80780}(2)] +[visit_exp i#80780] +[visit_id i#80780] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `%`_ishape{shape#3439, Jnn#460}(`%X%`_shape{lanetype#17604, dim#17604, i#80785}(`I32`_lanetype, `%`_dim{i#80792}(4)))] +[visit_exp shape#3439] +[visit_id shape#3439] +[visit_exp Jnn#460] +[visit_id Jnn#460] +[visit_exp (`%X%`_shape{lanetype#17604, dim#17604, i#80785}(`I32`_lanetype, `%`_dim{i#80792}(4)))] +[visit_exp `%X%`_shape{lanetype#17604, dim#17604, i#80785}(`I32`_lanetype, `%`_dim{i#80792}(4))] +[visit_exp lanetype#17604] +[visit_id lanetype#17604] +[visit_exp dim#17604] +[visit_id dim#17604] +[visit_exp i#80785] +[visit_id i#80785] +[visit_exp (`I32`_lanetype, `%`_dim{i#80792}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#80792}(4)] +[visit_exp i#80792] +[visit_id i#80792] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `EXTMUL`_vextbinop__{half#796, sx#14961}(`LOW`_half, `S`_sx)] +[visit_exp half#796] +[visit_id half#796] +[visit_exp sx#14961] +[visit_id sx#14961] +[visit_exp (`LOW`_half, `S`_sx)] +[visit_exp `LOW`_half] +[visit_exp ()] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#80766}(220)] +[visit_exp i#80766] +[visit_id i#80766] +[visit_exp (220)] +[visit_exp 220] +[check_dims] Jnn#464 Jnn#468 dim#17827 dim#17839 half#830 i#81146 i#81153 i#81160 i#81165 i#81172 ishape_1#65 ishape_2#65 lanetype#17827 lanetype#17839 shape#3542 shape#3554 sx#14995 +dims \ = Jnn#464, Jnn#468, dim#17827, dim#17839, half#830, i#81146, i#81153, i#81160, i#81165, i#81172, ishape_1#65, ishape_2#65, lanetype#17827, lanetype#17839, shape#3542, shape#3554, sx#14995 +[visit_exp `VEXTBINOP`_instr{ishape_1#65, ishape_2#65}(`%`_ishape{shape#3542, Jnn#464}(`%X%`_shape{lanetype#17827, dim#17827, i#81153}(`I64`_lanetype, `%`_dim{i#81160}(2))), `%`_ishape{shape#3554, Jnn#468}(`%X%`_shape{lanetype#17839, dim#17839, i#81165}(`I32`_lanetype, `%`_dim{i#81172}(4))), `EXTMUL`_vextbinop__{half#830, sx#14995}(`HIGH`_half, `S`_sx))] +[visit_exp ishape_1#65] +[visit_id ishape_1#65] +[visit_exp ishape_2#65] +[visit_id ishape_2#65] +[visit_exp (`%`_ishape{shape#3542, Jnn#464}(`%X%`_shape{lanetype#17827, dim#17827, i#81153}(`I64`_lanetype, `%`_dim{i#81160}(2))), `%`_ishape{shape#3554, Jnn#468}(`%X%`_shape{lanetype#17839, dim#17839, i#81165}(`I32`_lanetype, `%`_dim{i#81172}(4))), `EXTMUL`_vextbinop__{half#830, sx#14995}(`HIGH`_half, `S`_sx))] +[visit_exp `%`_ishape{shape#3542, Jnn#464}(`%X%`_shape{lanetype#17827, dim#17827, i#81153}(`I64`_lanetype, `%`_dim{i#81160}(2)))] +[visit_exp shape#3542] +[visit_id shape#3542] +[visit_exp Jnn#464] +[visit_id Jnn#464] +[visit_exp (`%X%`_shape{lanetype#17827, dim#17827, i#81153}(`I64`_lanetype, `%`_dim{i#81160}(2)))] +[visit_exp `%X%`_shape{lanetype#17827, dim#17827, i#81153}(`I64`_lanetype, `%`_dim{i#81160}(2))] +[visit_exp lanetype#17827] +[visit_id lanetype#17827] +[visit_exp dim#17827] +[visit_id dim#17827] +[visit_exp i#81153] +[visit_id i#81153] +[visit_exp (`I64`_lanetype, `%`_dim{i#81160}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#81160}(2)] +[visit_exp i#81160] +[visit_id i#81160] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `%`_ishape{shape#3554, Jnn#468}(`%X%`_shape{lanetype#17839, dim#17839, i#81165}(`I32`_lanetype, `%`_dim{i#81172}(4)))] +[visit_exp shape#3554] +[visit_id shape#3554] +[visit_exp Jnn#468] +[visit_id Jnn#468] +[visit_exp (`%X%`_shape{lanetype#17839, dim#17839, i#81165}(`I32`_lanetype, `%`_dim{i#81172}(4)))] +[visit_exp `%X%`_shape{lanetype#17839, dim#17839, i#81165}(`I32`_lanetype, `%`_dim{i#81172}(4))] +[visit_exp lanetype#17839] +[visit_id lanetype#17839] +[visit_exp dim#17839] +[visit_id dim#17839] +[visit_exp i#81165] +[visit_id i#81165] +[visit_exp (`I32`_lanetype, `%`_dim{i#81172}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#81172}(4)] +[visit_exp i#81172] +[visit_id i#81172] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `EXTMUL`_vextbinop__{half#830, sx#14995}(`HIGH`_half, `S`_sx)] +[visit_exp half#830] +[visit_id half#830] +[visit_exp sx#14995] +[visit_id sx#14995] +[visit_exp (`HIGH`_half, `S`_sx)] +[visit_exp `HIGH`_half] +[visit_exp ()] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#81146}(221)] +[visit_exp i#81146] +[visit_id i#81146] +[visit_exp (221)] +[visit_exp 221] +[check_dims] Jnn#472 Jnn#476 dim#18062 dim#18074 half#864 i#81526 i#81533 i#81540 i#81545 i#81552 ishape_1#67 ishape_2#67 lanetype#18062 lanetype#18074 shape#3657 shape#3669 sx#15029 +dims \ = Jnn#472, Jnn#476, dim#18062, dim#18074, half#864, i#81526, i#81533, i#81540, i#81545, i#81552, ishape_1#67, ishape_2#67, lanetype#18062, lanetype#18074, shape#3657, shape#3669, sx#15029 +[visit_exp `VEXTBINOP`_instr{ishape_1#67, ishape_2#67}(`%`_ishape{shape#3657, Jnn#472}(`%X%`_shape{lanetype#18062, dim#18062, i#81533}(`I64`_lanetype, `%`_dim{i#81540}(2))), `%`_ishape{shape#3669, Jnn#476}(`%X%`_shape{lanetype#18074, dim#18074, i#81545}(`I32`_lanetype, `%`_dim{i#81552}(4))), `EXTMUL`_vextbinop__{half#864, sx#15029}(`LOW`_half, `U`_sx))] +[visit_exp ishape_1#67] +[visit_id ishape_1#67] +[visit_exp ishape_2#67] +[visit_id ishape_2#67] +[visit_exp (`%`_ishape{shape#3657, Jnn#472}(`%X%`_shape{lanetype#18062, dim#18062, i#81533}(`I64`_lanetype, `%`_dim{i#81540}(2))), `%`_ishape{shape#3669, Jnn#476}(`%X%`_shape{lanetype#18074, dim#18074, i#81545}(`I32`_lanetype, `%`_dim{i#81552}(4))), `EXTMUL`_vextbinop__{half#864, sx#15029}(`LOW`_half, `U`_sx))] +[visit_exp `%`_ishape{shape#3657, Jnn#472}(`%X%`_shape{lanetype#18062, dim#18062, i#81533}(`I64`_lanetype, `%`_dim{i#81540}(2)))] +[visit_exp shape#3657] +[visit_id shape#3657] +[visit_exp Jnn#472] +[visit_id Jnn#472] +[visit_exp (`%X%`_shape{lanetype#18062, dim#18062, i#81533}(`I64`_lanetype, `%`_dim{i#81540}(2)))] +[visit_exp `%X%`_shape{lanetype#18062, dim#18062, i#81533}(`I64`_lanetype, `%`_dim{i#81540}(2))] +[visit_exp lanetype#18062] +[visit_id lanetype#18062] +[visit_exp dim#18062] +[visit_id dim#18062] +[visit_exp i#81533] +[visit_id i#81533] +[visit_exp (`I64`_lanetype, `%`_dim{i#81540}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#81540}(2)] +[visit_exp i#81540] +[visit_id i#81540] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `%`_ishape{shape#3669, Jnn#476}(`%X%`_shape{lanetype#18074, dim#18074, i#81545}(`I32`_lanetype, `%`_dim{i#81552}(4)))] +[visit_exp shape#3669] +[visit_id shape#3669] +[visit_exp Jnn#476] +[visit_id Jnn#476] +[visit_exp (`%X%`_shape{lanetype#18074, dim#18074, i#81545}(`I32`_lanetype, `%`_dim{i#81552}(4)))] +[visit_exp `%X%`_shape{lanetype#18074, dim#18074, i#81545}(`I32`_lanetype, `%`_dim{i#81552}(4))] +[visit_exp lanetype#18074] +[visit_id lanetype#18074] +[visit_exp dim#18074] +[visit_id dim#18074] +[visit_exp i#81545] +[visit_id i#81545] +[visit_exp (`I32`_lanetype, `%`_dim{i#81552}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#81552}(4)] +[visit_exp i#81552] +[visit_id i#81552] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `EXTMUL`_vextbinop__{half#864, sx#15029}(`LOW`_half, `U`_sx)] +[visit_exp half#864] +[visit_id half#864] +[visit_exp sx#15029] +[visit_id sx#15029] +[visit_exp (`LOW`_half, `U`_sx)] +[visit_exp `LOW`_half] +[visit_exp ()] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#81526}(222)] +[visit_exp i#81526] +[visit_id i#81526] +[visit_exp (222)] +[visit_exp 222] +[check_dims] Jnn#480 Jnn#484 dim#18297 dim#18309 half#898 i#81906 i#81913 i#81920 i#81925 i#81932 ishape_1#69 ishape_2#69 lanetype#18297 lanetype#18309 shape#3772 shape#3784 sx#15063 +dims \ = Jnn#480, Jnn#484, dim#18297, dim#18309, half#898, i#81906, i#81913, i#81920, i#81925, i#81932, ishape_1#69, ishape_2#69, lanetype#18297, lanetype#18309, shape#3772, shape#3784, sx#15063 +[visit_exp `VEXTBINOP`_instr{ishape_1#69, ishape_2#69}(`%`_ishape{shape#3772, Jnn#480}(`%X%`_shape{lanetype#18297, dim#18297, i#81913}(`I64`_lanetype, `%`_dim{i#81920}(2))), `%`_ishape{shape#3784, Jnn#484}(`%X%`_shape{lanetype#18309, dim#18309, i#81925}(`I32`_lanetype, `%`_dim{i#81932}(4))), `EXTMUL`_vextbinop__{half#898, sx#15063}(`HIGH`_half, `U`_sx))] +[visit_exp ishape_1#69] +[visit_id ishape_1#69] +[visit_exp ishape_2#69] +[visit_id ishape_2#69] +[visit_exp (`%`_ishape{shape#3772, Jnn#480}(`%X%`_shape{lanetype#18297, dim#18297, i#81913}(`I64`_lanetype, `%`_dim{i#81920}(2))), `%`_ishape{shape#3784, Jnn#484}(`%X%`_shape{lanetype#18309, dim#18309, i#81925}(`I32`_lanetype, `%`_dim{i#81932}(4))), `EXTMUL`_vextbinop__{half#898, sx#15063}(`HIGH`_half, `U`_sx))] +[visit_exp `%`_ishape{shape#3772, Jnn#480}(`%X%`_shape{lanetype#18297, dim#18297, i#81913}(`I64`_lanetype, `%`_dim{i#81920}(2)))] +[visit_exp shape#3772] +[visit_id shape#3772] +[visit_exp Jnn#480] +[visit_id Jnn#480] +[visit_exp (`%X%`_shape{lanetype#18297, dim#18297, i#81913}(`I64`_lanetype, `%`_dim{i#81920}(2)))] +[visit_exp `%X%`_shape{lanetype#18297, dim#18297, i#81913}(`I64`_lanetype, `%`_dim{i#81920}(2))] +[visit_exp lanetype#18297] +[visit_id lanetype#18297] +[visit_exp dim#18297] +[visit_id dim#18297] +[visit_exp i#81913] +[visit_id i#81913] +[visit_exp (`I64`_lanetype, `%`_dim{i#81920}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#81920}(2)] +[visit_exp i#81920] +[visit_id i#81920] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `%`_ishape{shape#3784, Jnn#484}(`%X%`_shape{lanetype#18309, dim#18309, i#81925}(`I32`_lanetype, `%`_dim{i#81932}(4)))] +[visit_exp shape#3784] +[visit_id shape#3784] +[visit_exp Jnn#484] +[visit_id Jnn#484] +[visit_exp (`%X%`_shape{lanetype#18309, dim#18309, i#81925}(`I32`_lanetype, `%`_dim{i#81932}(4)))] +[visit_exp `%X%`_shape{lanetype#18309, dim#18309, i#81925}(`I32`_lanetype, `%`_dim{i#81932}(4))] +[visit_exp lanetype#18309] +[visit_id lanetype#18309] +[visit_exp dim#18309] +[visit_id dim#18309] +[visit_exp i#81925] +[visit_id i#81925] +[visit_exp (`I32`_lanetype, `%`_dim{i#81932}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#81932}(4)] +[visit_exp i#81932] +[visit_id i#81932] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `EXTMUL`_vextbinop__{half#898, sx#15063}(`HIGH`_half, `U`_sx)] +[visit_exp half#898] +[visit_id half#898] +[visit_exp sx#15063] +[visit_id sx#15063] +[visit_exp (`HIGH`_half, `U`_sx)] +[visit_exp `HIGH`_half] +[visit_exp ()] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#81906}(223)] +[visit_exp i#81906] +[visit_id i#81906] +[visit_exp (223)] +[visit_exp 223] +ps' = +[check_dims] +[check_dims] dim#18532 i#82286 i#82293 i#82300 lanetype#18532 shape#3877 +dims \ = dim#18532, i#82286, i#82293, i#82300, lanetype#18532, shape#3877 +[visit_exp `VUNOP`_instr{shape#3877}(`%X%`_shape{lanetype#18532, dim#18532, i#82293}(`F32`_lanetype, `%`_dim{i#82300}(4)), `CEIL`_vunop_)] +[visit_exp shape#3877] +[visit_id shape#3877] +[visit_exp (`%X%`_shape{lanetype#18532, dim#18532, i#82293}(`F32`_lanetype, `%`_dim{i#82300}(4)), `CEIL`_vunop_)] +[visit_exp `%X%`_shape{lanetype#18532, dim#18532, i#82293}(`F32`_lanetype, `%`_dim{i#82300}(4))] +[visit_exp lanetype#18532] +[visit_id lanetype#18532] +[visit_exp dim#18532] +[visit_id dim#18532] +[visit_exp i#82293] +[visit_id i#82293] +[visit_exp (`F32`_lanetype, `%`_dim{i#82300}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#82300}(4)] +[visit_exp i#82300] +[visit_id i#82300] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `CEIL`_vunop_] +[visit_exp ()] +[visit_exp `%`_u32{i#82286}(103)] +[visit_exp i#82286] +[visit_id i#82286] +[visit_exp (103)] +[visit_exp 103] +[check_dims] dim#18574 i#82383 i#82390 i#82397 lanetype#18574 shape#3879 +dims \ = dim#18574, i#82383, i#82390, i#82397, lanetype#18574, shape#3879 +[visit_exp `VUNOP`_instr{shape#3879}(`%X%`_shape{lanetype#18574, dim#18574, i#82390}(`F32`_lanetype, `%`_dim{i#82397}(4)), `FLOOR`_vunop_)] +[visit_exp shape#3879] +[visit_id shape#3879] +[visit_exp (`%X%`_shape{lanetype#18574, dim#18574, i#82390}(`F32`_lanetype, `%`_dim{i#82397}(4)), `FLOOR`_vunop_)] +[visit_exp `%X%`_shape{lanetype#18574, dim#18574, i#82390}(`F32`_lanetype, `%`_dim{i#82397}(4))] +[visit_exp lanetype#18574] +[visit_id lanetype#18574] +[visit_exp dim#18574] +[visit_id dim#18574] +[visit_exp i#82390] +[visit_id i#82390] +[visit_exp (`F32`_lanetype, `%`_dim{i#82397}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#82397}(4)] +[visit_exp i#82397] +[visit_id i#82397] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `FLOOR`_vunop_] +[visit_exp ()] +[visit_exp `%`_u32{i#82383}(104)] +[visit_exp i#82383] +[visit_id i#82383] +[visit_exp (104)] +[visit_exp 104] +[check_dims] dim#18616 i#82480 i#82487 i#82494 lanetype#18616 shape#3881 +dims \ = dim#18616, i#82480, i#82487, i#82494, lanetype#18616, shape#3881 +[visit_exp `VUNOP`_instr{shape#3881}(`%X%`_shape{lanetype#18616, dim#18616, i#82487}(`F32`_lanetype, `%`_dim{i#82494}(4)), `TRUNC`_vunop_)] +[visit_exp shape#3881] +[visit_id shape#3881] +[visit_exp (`%X%`_shape{lanetype#18616, dim#18616, i#82487}(`F32`_lanetype, `%`_dim{i#82494}(4)), `TRUNC`_vunop_)] +[visit_exp `%X%`_shape{lanetype#18616, dim#18616, i#82487}(`F32`_lanetype, `%`_dim{i#82494}(4))] +[visit_exp lanetype#18616] +[visit_id lanetype#18616] +[visit_exp dim#18616] +[visit_id dim#18616] +[visit_exp i#82487] +[visit_id i#82487] +[visit_exp (`F32`_lanetype, `%`_dim{i#82494}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#82494}(4)] +[visit_exp i#82494] +[visit_id i#82494] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `TRUNC`_vunop_] +[visit_exp ()] +[visit_exp `%`_u32{i#82480}(105)] +[visit_exp i#82480] +[visit_id i#82480] +[visit_exp (105)] +[visit_exp 105] +[check_dims] dim#18658 i#82577 i#82584 i#82591 lanetype#18658 shape#3883 +dims \ = dim#18658, i#82577, i#82584, i#82591, lanetype#18658, shape#3883 +[visit_exp `VUNOP`_instr{shape#3883}(`%X%`_shape{lanetype#18658, dim#18658, i#82584}(`F32`_lanetype, `%`_dim{i#82591}(4)), `NEAREST`_vunop_)] +[visit_exp shape#3883] +[visit_id shape#3883] +[visit_exp (`%X%`_shape{lanetype#18658, dim#18658, i#82584}(`F32`_lanetype, `%`_dim{i#82591}(4)), `NEAREST`_vunop_)] +[visit_exp `%X%`_shape{lanetype#18658, dim#18658, i#82584}(`F32`_lanetype, `%`_dim{i#82591}(4))] +[visit_exp lanetype#18658] +[visit_id lanetype#18658] +[visit_exp dim#18658] +[visit_id dim#18658] +[visit_exp i#82584] +[visit_id i#82584] +[visit_exp (`F32`_lanetype, `%`_dim{i#82591}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#82591}(4)] +[visit_exp i#82591] +[visit_id i#82591] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `NEAREST`_vunop_] +[visit_exp ()] +[visit_exp `%`_u32{i#82577}(106)] +[visit_exp i#82577] +[visit_id i#82577] +[visit_exp (106)] +[visit_exp 106] +[check_dims] dim#18700 i#82674 i#82681 i#82688 lanetype#18700 shape#3885 +dims \ = dim#18700, i#82674, i#82681, i#82688, lanetype#18700, shape#3885 +[visit_exp `VUNOP`_instr{shape#3885}(`%X%`_shape{lanetype#18700, dim#18700, i#82681}(`F32`_lanetype, `%`_dim{i#82688}(4)), `ABS`_vunop_)] +[visit_exp shape#3885] +[visit_id shape#3885] +[visit_exp (`%X%`_shape{lanetype#18700, dim#18700, i#82681}(`F32`_lanetype, `%`_dim{i#82688}(4)), `ABS`_vunop_)] +[visit_exp `%X%`_shape{lanetype#18700, dim#18700, i#82681}(`F32`_lanetype, `%`_dim{i#82688}(4))] +[visit_exp lanetype#18700] +[visit_id lanetype#18700] +[visit_exp dim#18700] +[visit_id dim#18700] +[visit_exp i#82681] +[visit_id i#82681] +[visit_exp (`F32`_lanetype, `%`_dim{i#82688}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#82688}(4)] +[visit_exp i#82688] +[visit_id i#82688] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `ABS`_vunop_] +[visit_exp ()] +[visit_exp `%`_u32{i#82674}(224)] +[visit_exp i#82674] +[visit_id i#82674] +[visit_exp (224)] +[visit_exp 224] +[check_dims] dim#18742 i#82771 i#82778 i#82785 lanetype#18742 shape#3887 +dims \ = dim#18742, i#82771, i#82778, i#82785, lanetype#18742, shape#3887 +[visit_exp `VUNOP`_instr{shape#3887}(`%X%`_shape{lanetype#18742, dim#18742, i#82778}(`F32`_lanetype, `%`_dim{i#82785}(4)), `NEG`_vunop_)] +[visit_exp shape#3887] +[visit_id shape#3887] +[visit_exp (`%X%`_shape{lanetype#18742, dim#18742, i#82778}(`F32`_lanetype, `%`_dim{i#82785}(4)), `NEG`_vunop_)] +[visit_exp `%X%`_shape{lanetype#18742, dim#18742, i#82778}(`F32`_lanetype, `%`_dim{i#82785}(4))] +[visit_exp lanetype#18742] +[visit_id lanetype#18742] +[visit_exp dim#18742] +[visit_id dim#18742] +[visit_exp i#82778] +[visit_id i#82778] +[visit_exp (`F32`_lanetype, `%`_dim{i#82785}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#82785}(4)] +[visit_exp i#82785] +[visit_id i#82785] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `NEG`_vunop_] +[visit_exp ()] +[visit_exp `%`_u32{i#82771}(225)] +[visit_exp i#82771] +[visit_id i#82771] +[visit_exp (225)] +[visit_exp 225] +[check_dims] dim#18784 i#82868 i#82875 i#82882 lanetype#18784 shape#3889 +dims \ = dim#18784, i#82868, i#82875, i#82882, lanetype#18784, shape#3889 +[visit_exp `VUNOP`_instr{shape#3889}(`%X%`_shape{lanetype#18784, dim#18784, i#82875}(`F32`_lanetype, `%`_dim{i#82882}(4)), `SQRT`_vunop_)] +[visit_exp shape#3889] +[visit_id shape#3889] +[visit_exp (`%X%`_shape{lanetype#18784, dim#18784, i#82875}(`F32`_lanetype, `%`_dim{i#82882}(4)), `SQRT`_vunop_)] +[visit_exp `%X%`_shape{lanetype#18784, dim#18784, i#82875}(`F32`_lanetype, `%`_dim{i#82882}(4))] +[visit_exp lanetype#18784] +[visit_id lanetype#18784] +[visit_exp dim#18784] +[visit_id dim#18784] +[visit_exp i#82875] +[visit_id i#82875] +[visit_exp (`F32`_lanetype, `%`_dim{i#82882}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#82882}(4)] +[visit_exp i#82882] +[visit_id i#82882] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `SQRT`_vunop_] +[visit_exp ()] +[visit_exp `%`_u32{i#82868}(227)] +[visit_exp i#82868] +[visit_id i#82868] +[visit_exp (227)] +[visit_exp 227] +ps' = +[check_dims] +[check_dims] dim#18826 i#82965 i#82972 i#82979 lanetype#18826 shape#3891 +dims \ = dim#18826, i#82965, i#82972, i#82979, lanetype#18826, shape#3891 +[visit_exp `VBINOP`_instr{shape#3891}(`%X%`_shape{lanetype#18826, dim#18826, i#82972}(`F32`_lanetype, `%`_dim{i#82979}(4)), `ADD`_vbinop_)] +[visit_exp shape#3891] +[visit_id shape#3891] +[visit_exp (`%X%`_shape{lanetype#18826, dim#18826, i#82972}(`F32`_lanetype, `%`_dim{i#82979}(4)), `ADD`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#18826, dim#18826, i#82972}(`F32`_lanetype, `%`_dim{i#82979}(4))] +[visit_exp lanetype#18826] +[visit_id lanetype#18826] +[visit_exp dim#18826] +[visit_id dim#18826] +[visit_exp i#82972] +[visit_id i#82972] +[visit_exp (`F32`_lanetype, `%`_dim{i#82979}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#82979}(4)] +[visit_exp i#82979] +[visit_id i#82979] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `ADD`_vbinop_] +[visit_exp ()] +[visit_exp `%`_u32{i#82965}(228)] +[visit_exp i#82965] +[visit_id i#82965] +[visit_exp (228)] +[visit_exp 228] +[check_dims] dim#18868 i#83062 i#83069 i#83076 lanetype#18868 shape#3893 +dims \ = dim#18868, i#83062, i#83069, i#83076, lanetype#18868, shape#3893 +[visit_exp `VBINOP`_instr{shape#3893}(`%X%`_shape{lanetype#18868, dim#18868, i#83069}(`F32`_lanetype, `%`_dim{i#83076}(4)), `SUB`_vbinop_)] +[visit_exp shape#3893] +[visit_id shape#3893] +[visit_exp (`%X%`_shape{lanetype#18868, dim#18868, i#83069}(`F32`_lanetype, `%`_dim{i#83076}(4)), `SUB`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#18868, dim#18868, i#83069}(`F32`_lanetype, `%`_dim{i#83076}(4))] +[visit_exp lanetype#18868] +[visit_id lanetype#18868] +[visit_exp dim#18868] +[visit_id dim#18868] +[visit_exp i#83069] +[visit_id i#83069] +[visit_exp (`F32`_lanetype, `%`_dim{i#83076}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#83076}(4)] +[visit_exp i#83076] +[visit_id i#83076] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `SUB`_vbinop_] +[visit_exp ()] +[visit_exp `%`_u32{i#83062}(229)] +[visit_exp i#83062] +[visit_id i#83062] +[visit_exp (229)] +[visit_exp 229] +[check_dims] dim#18910 i#83159 i#83166 i#83173 lanetype#18910 shape#3895 +dims \ = dim#18910, i#83159, i#83166, i#83173, lanetype#18910, shape#3895 +[visit_exp `VBINOP`_instr{shape#3895}(`%X%`_shape{lanetype#18910, dim#18910, i#83166}(`F32`_lanetype, `%`_dim{i#83173}(4)), `MUL`_vbinop_)] +[visit_exp shape#3895] +[visit_id shape#3895] +[visit_exp (`%X%`_shape{lanetype#18910, dim#18910, i#83166}(`F32`_lanetype, `%`_dim{i#83173}(4)), `MUL`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#18910, dim#18910, i#83166}(`F32`_lanetype, `%`_dim{i#83173}(4))] +[visit_exp lanetype#18910] +[visit_id lanetype#18910] +[visit_exp dim#18910] +[visit_id dim#18910] +[visit_exp i#83166] +[visit_id i#83166] +[visit_exp (`F32`_lanetype, `%`_dim{i#83173}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#83173}(4)] +[visit_exp i#83173] +[visit_id i#83173] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `MUL`_vbinop_] +[visit_exp ()] +[visit_exp `%`_u32{i#83159}(230)] +[visit_exp i#83159] +[visit_id i#83159] +[visit_exp (230)] +[visit_exp 230] +[check_dims] dim#18952 i#83256 i#83263 i#83270 lanetype#18952 shape#3897 +dims \ = dim#18952, i#83256, i#83263, i#83270, lanetype#18952, shape#3897 +[visit_exp `VBINOP`_instr{shape#3897}(`%X%`_shape{lanetype#18952, dim#18952, i#83263}(`F32`_lanetype, `%`_dim{i#83270}(4)), `DIV`_vbinop_)] +[visit_exp shape#3897] +[visit_id shape#3897] +[visit_exp (`%X%`_shape{lanetype#18952, dim#18952, i#83263}(`F32`_lanetype, `%`_dim{i#83270}(4)), `DIV`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#18952, dim#18952, i#83263}(`F32`_lanetype, `%`_dim{i#83270}(4))] +[visit_exp lanetype#18952] +[visit_id lanetype#18952] +[visit_exp dim#18952] +[visit_id dim#18952] +[visit_exp i#83263] +[visit_id i#83263] +[visit_exp (`F32`_lanetype, `%`_dim{i#83270}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#83270}(4)] +[visit_exp i#83270] +[visit_id i#83270] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `DIV`_vbinop_] +[visit_exp ()] +[visit_exp `%`_u32{i#83256}(231)] +[visit_exp i#83256] +[visit_id i#83256] +[visit_exp (231)] +[visit_exp 231] +[check_dims] dim#18994 i#83353 i#83360 i#83367 lanetype#18994 shape#3899 +dims \ = dim#18994, i#83353, i#83360, i#83367, lanetype#18994, shape#3899 +[visit_exp `VBINOP`_instr{shape#3899}(`%X%`_shape{lanetype#18994, dim#18994, i#83360}(`F32`_lanetype, `%`_dim{i#83367}(4)), `MIN`_vbinop_)] +[visit_exp shape#3899] +[visit_id shape#3899] +[visit_exp (`%X%`_shape{lanetype#18994, dim#18994, i#83360}(`F32`_lanetype, `%`_dim{i#83367}(4)), `MIN`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#18994, dim#18994, i#83360}(`F32`_lanetype, `%`_dim{i#83367}(4))] +[visit_exp lanetype#18994] +[visit_id lanetype#18994] +[visit_exp dim#18994] +[visit_id dim#18994] +[visit_exp i#83360] +[visit_id i#83360] +[visit_exp (`F32`_lanetype, `%`_dim{i#83367}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#83367}(4)] +[visit_exp i#83367] +[visit_id i#83367] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `MIN`_vbinop_] +[visit_exp ()] +[visit_exp `%`_u32{i#83353}(232)] +[visit_exp i#83353] +[visit_id i#83353] +[visit_exp (232)] +[visit_exp 232] +[check_dims] dim#19036 i#83450 i#83457 i#83464 lanetype#19036 shape#3901 +dims \ = dim#19036, i#83450, i#83457, i#83464, lanetype#19036, shape#3901 +[visit_exp `VBINOP`_instr{shape#3901}(`%X%`_shape{lanetype#19036, dim#19036, i#83457}(`F32`_lanetype, `%`_dim{i#83464}(4)), `MAX`_vbinop_)] +[visit_exp shape#3901] +[visit_id shape#3901] +[visit_exp (`%X%`_shape{lanetype#19036, dim#19036, i#83457}(`F32`_lanetype, `%`_dim{i#83464}(4)), `MAX`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#19036, dim#19036, i#83457}(`F32`_lanetype, `%`_dim{i#83464}(4))] +[visit_exp lanetype#19036] +[visit_id lanetype#19036] +[visit_exp dim#19036] +[visit_id dim#19036] +[visit_exp i#83457] +[visit_id i#83457] +[visit_exp (`F32`_lanetype, `%`_dim{i#83464}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#83464}(4)] +[visit_exp i#83464] +[visit_id i#83464] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `MAX`_vbinop_] +[visit_exp ()] +[visit_exp `%`_u32{i#83450}(233)] +[visit_exp i#83450] +[visit_id i#83450] +[visit_exp (233)] +[visit_exp 233] +[check_dims] dim#19078 i#83547 i#83554 i#83561 lanetype#19078 shape#3903 +dims \ = dim#19078, i#83547, i#83554, i#83561, lanetype#19078, shape#3903 +[visit_exp `VBINOP`_instr{shape#3903}(`%X%`_shape{lanetype#19078, dim#19078, i#83554}(`F32`_lanetype, `%`_dim{i#83561}(4)), `PMIN`_vbinop_)] +[visit_exp shape#3903] +[visit_id shape#3903] +[visit_exp (`%X%`_shape{lanetype#19078, dim#19078, i#83554}(`F32`_lanetype, `%`_dim{i#83561}(4)), `PMIN`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#19078, dim#19078, i#83554}(`F32`_lanetype, `%`_dim{i#83561}(4))] +[visit_exp lanetype#19078] +[visit_id lanetype#19078] +[visit_exp dim#19078] +[visit_id dim#19078] +[visit_exp i#83554] +[visit_id i#83554] +[visit_exp (`F32`_lanetype, `%`_dim{i#83561}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#83561}(4)] +[visit_exp i#83561] +[visit_id i#83561] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `PMIN`_vbinop_] +[visit_exp ()] +[visit_exp `%`_u32{i#83547}(234)] +[visit_exp i#83547] +[visit_id i#83547] +[visit_exp (234)] +[visit_exp 234] +[check_dims] dim#19120 i#83644 i#83651 i#83658 lanetype#19120 shape#3905 +dims \ = dim#19120, i#83644, i#83651, i#83658, lanetype#19120, shape#3905 +[visit_exp `VBINOP`_instr{shape#3905}(`%X%`_shape{lanetype#19120, dim#19120, i#83651}(`F32`_lanetype, `%`_dim{i#83658}(4)), `PMAX`_vbinop_)] +[visit_exp shape#3905] +[visit_id shape#3905] +[visit_exp (`%X%`_shape{lanetype#19120, dim#19120, i#83651}(`F32`_lanetype, `%`_dim{i#83658}(4)), `PMAX`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#19120, dim#19120, i#83651}(`F32`_lanetype, `%`_dim{i#83658}(4))] +[visit_exp lanetype#19120] +[visit_id lanetype#19120] +[visit_exp dim#19120] +[visit_id dim#19120] +[visit_exp i#83651] +[visit_id i#83651] +[visit_exp (`F32`_lanetype, `%`_dim{i#83658}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#83658}(4)] +[visit_exp i#83658] +[visit_id i#83658] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `PMAX`_vbinop_] +[visit_exp ()] +[visit_exp `%`_u32{i#83644}(235)] +[visit_exp i#83644] +[visit_id i#83644] +[visit_exp (235)] +[visit_exp 235] +[check_dims] dim#19162 i#83741 i#83748 i#83755 lanetype#19162 shape#3907 +dims \ = dim#19162, i#83741, i#83748, i#83755, lanetype#19162, shape#3907 +[visit_exp `VBINOP`_instr{shape#3907}(`%X%`_shape{lanetype#19162, dim#19162, i#83748}(`F32`_lanetype, `%`_dim{i#83755}(4)), `RELAXED_MIN`_vbinop_)] +[visit_exp shape#3907] +[visit_id shape#3907] +[visit_exp (`%X%`_shape{lanetype#19162, dim#19162, i#83748}(`F32`_lanetype, `%`_dim{i#83755}(4)), `RELAXED_MIN`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#19162, dim#19162, i#83748}(`F32`_lanetype, `%`_dim{i#83755}(4))] +[visit_exp lanetype#19162] +[visit_id lanetype#19162] +[visit_exp dim#19162] +[visit_id dim#19162] +[visit_exp i#83748] +[visit_id i#83748] +[visit_exp (`F32`_lanetype, `%`_dim{i#83755}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#83755}(4)] +[visit_exp i#83755] +[visit_id i#83755] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `RELAXED_MIN`_vbinop_] +[visit_exp ()] +[visit_exp `%`_u32{i#83741}(269)] +[visit_exp i#83741] +[visit_id i#83741] +[visit_exp (269)] +[visit_exp 269] +[check_dims] dim#19204 i#83838 i#83845 i#83852 lanetype#19204 shape#3909 +dims \ = dim#19204, i#83838, i#83845, i#83852, lanetype#19204, shape#3909 +[visit_exp `VBINOP`_instr{shape#3909}(`%X%`_shape{lanetype#19204, dim#19204, i#83845}(`F32`_lanetype, `%`_dim{i#83852}(4)), `RELAXED_MAX`_vbinop_)] +[visit_exp shape#3909] +[visit_id shape#3909] +[visit_exp (`%X%`_shape{lanetype#19204, dim#19204, i#83845}(`F32`_lanetype, `%`_dim{i#83852}(4)), `RELAXED_MAX`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#19204, dim#19204, i#83845}(`F32`_lanetype, `%`_dim{i#83852}(4))] +[visit_exp lanetype#19204] +[visit_id lanetype#19204] +[visit_exp dim#19204] +[visit_id dim#19204] +[visit_exp i#83845] +[visit_id i#83845] +[visit_exp (`F32`_lanetype, `%`_dim{i#83852}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#83852}(4)] +[visit_exp i#83852] +[visit_id i#83852] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `RELAXED_MAX`_vbinop_] +[visit_exp ()] +[visit_exp `%`_u32{i#83838}(270)] +[visit_exp i#83838] +[visit_id i#83838] +[visit_exp (270)] +[visit_exp 270] +ps' = +[check_dims] +[check_dims] dim#19246 i#83935 i#83942 i#83949 lanetype#19246 shape#3911 +dims \ = dim#19246, i#83935, i#83942, i#83949, lanetype#19246, shape#3911 +[visit_exp `VTERNOP`_instr{shape#3911}(`%X%`_shape{lanetype#19246, dim#19246, i#83942}(`F32`_lanetype, `%`_dim{i#83949}(4)), `RELAXED_MADD`_vternop_)] +[visit_exp shape#3911] +[visit_id shape#3911] +[visit_exp (`%X%`_shape{lanetype#19246, dim#19246, i#83942}(`F32`_lanetype, `%`_dim{i#83949}(4)), `RELAXED_MADD`_vternop_)] +[visit_exp `%X%`_shape{lanetype#19246, dim#19246, i#83942}(`F32`_lanetype, `%`_dim{i#83949}(4))] +[visit_exp lanetype#19246] +[visit_id lanetype#19246] +[visit_exp dim#19246] +[visit_id dim#19246] +[visit_exp i#83942] +[visit_id i#83942] +[visit_exp (`F32`_lanetype, `%`_dim{i#83949}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#83949}(4)] +[visit_exp i#83949] +[visit_id i#83949] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `RELAXED_MADD`_vternop_] +[visit_exp ()] +[visit_exp `%`_u32{i#83935}(261)] +[visit_exp i#83935] +[visit_id i#83935] +[visit_exp (261)] +[visit_exp 261] +[check_dims] dim#19288 i#84032 i#84039 i#84046 lanetype#19288 shape#3913 +dims \ = dim#19288, i#84032, i#84039, i#84046, lanetype#19288, shape#3913 +[visit_exp `VTERNOP`_instr{shape#3913}(`%X%`_shape{lanetype#19288, dim#19288, i#84039}(`F32`_lanetype, `%`_dim{i#84046}(4)), `RELAXED_NMADD`_vternop_)] +[visit_exp shape#3913] +[visit_id shape#3913] +[visit_exp (`%X%`_shape{lanetype#19288, dim#19288, i#84039}(`F32`_lanetype, `%`_dim{i#84046}(4)), `RELAXED_NMADD`_vternop_)] +[visit_exp `%X%`_shape{lanetype#19288, dim#19288, i#84039}(`F32`_lanetype, `%`_dim{i#84046}(4))] +[visit_exp lanetype#19288] +[visit_id lanetype#19288] +[visit_exp dim#19288] +[visit_id dim#19288] +[visit_exp i#84039] +[visit_id i#84039] +[visit_exp (`F32`_lanetype, `%`_dim{i#84046}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#84046}(4)] +[visit_exp i#84046] +[visit_id i#84046] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `RELAXED_NMADD`_vternop_] +[visit_exp ()] +[visit_exp `%`_u32{i#84032}(262)] +[visit_exp i#84032] +[visit_id i#84032] +[visit_exp (262)] +[visit_exp 262] +ps' = +[check_dims] +[check_dims] dim#19330 i#84129 i#84136 i#84143 lanetype#19330 shape#3915 +dims \ = dim#19330, i#84129, i#84136, i#84143, lanetype#19330, shape#3915 +[visit_exp `VUNOP`_instr{shape#3915}(`%X%`_shape{lanetype#19330, dim#19330, i#84136}(`F64`_lanetype, `%`_dim{i#84143}(2)), `CEIL`_vunop_)] +[visit_exp shape#3915] +[visit_id shape#3915] +[visit_exp (`%X%`_shape{lanetype#19330, dim#19330, i#84136}(`F64`_lanetype, `%`_dim{i#84143}(2)), `CEIL`_vunop_)] +[visit_exp `%X%`_shape{lanetype#19330, dim#19330, i#84136}(`F64`_lanetype, `%`_dim{i#84143}(2))] +[visit_exp lanetype#19330] +[visit_id lanetype#19330] +[visit_exp dim#19330] +[visit_id dim#19330] +[visit_exp i#84136] +[visit_id i#84136] +[visit_exp (`F64`_lanetype, `%`_dim{i#84143}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#84143}(2)] +[visit_exp i#84143] +[visit_id i#84143] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `CEIL`_vunop_] +[visit_exp ()] +[visit_exp `%`_u32{i#84129}(116)] +[visit_exp i#84129] +[visit_id i#84129] +[visit_exp (116)] +[visit_exp 116] +[check_dims] dim#19372 i#84226 i#84233 i#84240 lanetype#19372 shape#3917 +dims \ = dim#19372, i#84226, i#84233, i#84240, lanetype#19372, shape#3917 +[visit_exp `VUNOP`_instr{shape#3917}(`%X%`_shape{lanetype#19372, dim#19372, i#84233}(`F64`_lanetype, `%`_dim{i#84240}(2)), `FLOOR`_vunop_)] +[visit_exp shape#3917] +[visit_id shape#3917] +[visit_exp (`%X%`_shape{lanetype#19372, dim#19372, i#84233}(`F64`_lanetype, `%`_dim{i#84240}(2)), `FLOOR`_vunop_)] +[visit_exp `%X%`_shape{lanetype#19372, dim#19372, i#84233}(`F64`_lanetype, `%`_dim{i#84240}(2))] +[visit_exp lanetype#19372] +[visit_id lanetype#19372] +[visit_exp dim#19372] +[visit_id dim#19372] +[visit_exp i#84233] +[visit_id i#84233] +[visit_exp (`F64`_lanetype, `%`_dim{i#84240}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#84240}(2)] +[visit_exp i#84240] +[visit_id i#84240] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `FLOOR`_vunop_] +[visit_exp ()] +[visit_exp `%`_u32{i#84226}(117)] +[visit_exp i#84226] +[visit_id i#84226] +[visit_exp (117)] +[visit_exp 117] +[check_dims] dim#19414 i#84323 i#84330 i#84337 lanetype#19414 shape#3919 +dims \ = dim#19414, i#84323, i#84330, i#84337, lanetype#19414, shape#3919 +[visit_exp `VUNOP`_instr{shape#3919}(`%X%`_shape{lanetype#19414, dim#19414, i#84330}(`F64`_lanetype, `%`_dim{i#84337}(2)), `TRUNC`_vunop_)] +[visit_exp shape#3919] +[visit_id shape#3919] +[visit_exp (`%X%`_shape{lanetype#19414, dim#19414, i#84330}(`F64`_lanetype, `%`_dim{i#84337}(2)), `TRUNC`_vunop_)] +[visit_exp `%X%`_shape{lanetype#19414, dim#19414, i#84330}(`F64`_lanetype, `%`_dim{i#84337}(2))] +[visit_exp lanetype#19414] +[visit_id lanetype#19414] +[visit_exp dim#19414] +[visit_id dim#19414] +[visit_exp i#84330] +[visit_id i#84330] +[visit_exp (`F64`_lanetype, `%`_dim{i#84337}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#84337}(2)] +[visit_exp i#84337] +[visit_id i#84337] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `TRUNC`_vunop_] +[visit_exp ()] +[visit_exp `%`_u32{i#84323}(122)] +[visit_exp i#84323] +[visit_id i#84323] +[visit_exp (122)] +[visit_exp 122] +[check_dims] dim#19456 i#84420 i#84427 i#84434 lanetype#19456 shape#3921 +dims \ = dim#19456, i#84420, i#84427, i#84434, lanetype#19456, shape#3921 +[visit_exp `VUNOP`_instr{shape#3921}(`%X%`_shape{lanetype#19456, dim#19456, i#84427}(`F64`_lanetype, `%`_dim{i#84434}(2)), `NEAREST`_vunop_)] +[visit_exp shape#3921] +[visit_id shape#3921] +[visit_exp (`%X%`_shape{lanetype#19456, dim#19456, i#84427}(`F64`_lanetype, `%`_dim{i#84434}(2)), `NEAREST`_vunop_)] +[visit_exp `%X%`_shape{lanetype#19456, dim#19456, i#84427}(`F64`_lanetype, `%`_dim{i#84434}(2))] +[visit_exp lanetype#19456] +[visit_id lanetype#19456] +[visit_exp dim#19456] +[visit_id dim#19456] +[visit_exp i#84427] +[visit_id i#84427] +[visit_exp (`F64`_lanetype, `%`_dim{i#84434}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#84434}(2)] +[visit_exp i#84434] +[visit_id i#84434] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `NEAREST`_vunop_] +[visit_exp ()] +[visit_exp `%`_u32{i#84420}(148)] +[visit_exp i#84420] +[visit_id i#84420] +[visit_exp (148)] +[visit_exp 148] +[check_dims] dim#19498 i#84517 i#84524 i#84531 lanetype#19498 shape#3923 +dims \ = dim#19498, i#84517, i#84524, i#84531, lanetype#19498, shape#3923 +[visit_exp `VUNOP`_instr{shape#3923}(`%X%`_shape{lanetype#19498, dim#19498, i#84524}(`F64`_lanetype, `%`_dim{i#84531}(2)), `ABS`_vunop_)] +[visit_exp shape#3923] +[visit_id shape#3923] +[visit_exp (`%X%`_shape{lanetype#19498, dim#19498, i#84524}(`F64`_lanetype, `%`_dim{i#84531}(2)), `ABS`_vunop_)] +[visit_exp `%X%`_shape{lanetype#19498, dim#19498, i#84524}(`F64`_lanetype, `%`_dim{i#84531}(2))] +[visit_exp lanetype#19498] +[visit_id lanetype#19498] +[visit_exp dim#19498] +[visit_id dim#19498] +[visit_exp i#84524] +[visit_id i#84524] +[visit_exp (`F64`_lanetype, `%`_dim{i#84531}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#84531}(2)] +[visit_exp i#84531] +[visit_id i#84531] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `ABS`_vunop_] +[visit_exp ()] +[visit_exp `%`_u32{i#84517}(236)] +[visit_exp i#84517] +[visit_id i#84517] +[visit_exp (236)] +[visit_exp 236] +[check_dims] dim#19540 i#84614 i#84621 i#84628 lanetype#19540 shape#3925 +dims \ = dim#19540, i#84614, i#84621, i#84628, lanetype#19540, shape#3925 +[visit_exp `VUNOP`_instr{shape#3925}(`%X%`_shape{lanetype#19540, dim#19540, i#84621}(`F64`_lanetype, `%`_dim{i#84628}(2)), `NEG`_vunop_)] +[visit_exp shape#3925] +[visit_id shape#3925] +[visit_exp (`%X%`_shape{lanetype#19540, dim#19540, i#84621}(`F64`_lanetype, `%`_dim{i#84628}(2)), `NEG`_vunop_)] +[visit_exp `%X%`_shape{lanetype#19540, dim#19540, i#84621}(`F64`_lanetype, `%`_dim{i#84628}(2))] +[visit_exp lanetype#19540] +[visit_id lanetype#19540] +[visit_exp dim#19540] +[visit_id dim#19540] +[visit_exp i#84621] +[visit_id i#84621] +[visit_exp (`F64`_lanetype, `%`_dim{i#84628}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#84628}(2)] +[visit_exp i#84628] +[visit_id i#84628] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `NEG`_vunop_] +[visit_exp ()] +[visit_exp `%`_u32{i#84614}(237)] +[visit_exp i#84614] +[visit_id i#84614] +[visit_exp (237)] +[visit_exp 237] +[check_dims] dim#19582 i#84711 i#84718 i#84725 lanetype#19582 shape#3927 +dims \ = dim#19582, i#84711, i#84718, i#84725, lanetype#19582, shape#3927 +[visit_exp `VUNOP`_instr{shape#3927}(`%X%`_shape{lanetype#19582, dim#19582, i#84718}(`F64`_lanetype, `%`_dim{i#84725}(2)), `SQRT`_vunop_)] +[visit_exp shape#3927] +[visit_id shape#3927] +[visit_exp (`%X%`_shape{lanetype#19582, dim#19582, i#84718}(`F64`_lanetype, `%`_dim{i#84725}(2)), `SQRT`_vunop_)] +[visit_exp `%X%`_shape{lanetype#19582, dim#19582, i#84718}(`F64`_lanetype, `%`_dim{i#84725}(2))] +[visit_exp lanetype#19582] +[visit_id lanetype#19582] +[visit_exp dim#19582] +[visit_id dim#19582] +[visit_exp i#84718] +[visit_id i#84718] +[visit_exp (`F64`_lanetype, `%`_dim{i#84725}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#84725}(2)] +[visit_exp i#84725] +[visit_id i#84725] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `SQRT`_vunop_] +[visit_exp ()] +[visit_exp `%`_u32{i#84711}(239)] +[visit_exp i#84711] +[visit_id i#84711] +[visit_exp (239)] +[visit_exp 239] +ps' = +[check_dims] +[check_dims] dim#19624 i#84808 i#84815 i#84822 lanetype#19624 shape#3929 +dims \ = dim#19624, i#84808, i#84815, i#84822, lanetype#19624, shape#3929 +[visit_exp `VBINOP`_instr{shape#3929}(`%X%`_shape{lanetype#19624, dim#19624, i#84815}(`F64`_lanetype, `%`_dim{i#84822}(2)), `ADD`_vbinop_)] +[visit_exp shape#3929] +[visit_id shape#3929] +[visit_exp (`%X%`_shape{lanetype#19624, dim#19624, i#84815}(`F64`_lanetype, `%`_dim{i#84822}(2)), `ADD`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#19624, dim#19624, i#84815}(`F64`_lanetype, `%`_dim{i#84822}(2))] +[visit_exp lanetype#19624] +[visit_id lanetype#19624] +[visit_exp dim#19624] +[visit_id dim#19624] +[visit_exp i#84815] +[visit_id i#84815] +[visit_exp (`F64`_lanetype, `%`_dim{i#84822}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#84822}(2)] +[visit_exp i#84822] +[visit_id i#84822] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `ADD`_vbinop_] +[visit_exp ()] +[visit_exp `%`_u32{i#84808}(240)] +[visit_exp i#84808] +[visit_id i#84808] +[visit_exp (240)] +[visit_exp 240] +[check_dims] dim#19666 i#84905 i#84912 i#84919 lanetype#19666 shape#3931 +dims \ = dim#19666, i#84905, i#84912, i#84919, lanetype#19666, shape#3931 +[visit_exp `VBINOP`_instr{shape#3931}(`%X%`_shape{lanetype#19666, dim#19666, i#84912}(`F64`_lanetype, `%`_dim{i#84919}(2)), `SUB`_vbinop_)] +[visit_exp shape#3931] +[visit_id shape#3931] +[visit_exp (`%X%`_shape{lanetype#19666, dim#19666, i#84912}(`F64`_lanetype, `%`_dim{i#84919}(2)), `SUB`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#19666, dim#19666, i#84912}(`F64`_lanetype, `%`_dim{i#84919}(2))] +[visit_exp lanetype#19666] +[visit_id lanetype#19666] +[visit_exp dim#19666] +[visit_id dim#19666] +[visit_exp i#84912] +[visit_id i#84912] +[visit_exp (`F64`_lanetype, `%`_dim{i#84919}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#84919}(2)] +[visit_exp i#84919] +[visit_id i#84919] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `SUB`_vbinop_] +[visit_exp ()] +[visit_exp `%`_u32{i#84905}(241)] +[visit_exp i#84905] +[visit_id i#84905] +[visit_exp (241)] +[visit_exp 241] +[check_dims] dim#19708 i#85002 i#85009 i#85016 lanetype#19708 shape#3933 +dims \ = dim#19708, i#85002, i#85009, i#85016, lanetype#19708, shape#3933 +[visit_exp `VBINOP`_instr{shape#3933}(`%X%`_shape{lanetype#19708, dim#19708, i#85009}(`F64`_lanetype, `%`_dim{i#85016}(2)), `MUL`_vbinop_)] +[visit_exp shape#3933] +[visit_id shape#3933] +[visit_exp (`%X%`_shape{lanetype#19708, dim#19708, i#85009}(`F64`_lanetype, `%`_dim{i#85016}(2)), `MUL`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#19708, dim#19708, i#85009}(`F64`_lanetype, `%`_dim{i#85016}(2))] +[visit_exp lanetype#19708] +[visit_id lanetype#19708] +[visit_exp dim#19708] +[visit_id dim#19708] +[visit_exp i#85009] +[visit_id i#85009] +[visit_exp (`F64`_lanetype, `%`_dim{i#85016}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#85016}(2)] +[visit_exp i#85016] +[visit_id i#85016] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `MUL`_vbinop_] +[visit_exp ()] +[visit_exp `%`_u32{i#85002}(242)] +[visit_exp i#85002] +[visit_id i#85002] +[visit_exp (242)] +[visit_exp 242] +[check_dims] dim#19750 i#85099 i#85106 i#85113 lanetype#19750 shape#3935 +dims \ = dim#19750, i#85099, i#85106, i#85113, lanetype#19750, shape#3935 +[visit_exp `VBINOP`_instr{shape#3935}(`%X%`_shape{lanetype#19750, dim#19750, i#85106}(`F64`_lanetype, `%`_dim{i#85113}(2)), `DIV`_vbinop_)] +[visit_exp shape#3935] +[visit_id shape#3935] +[visit_exp (`%X%`_shape{lanetype#19750, dim#19750, i#85106}(`F64`_lanetype, `%`_dim{i#85113}(2)), `DIV`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#19750, dim#19750, i#85106}(`F64`_lanetype, `%`_dim{i#85113}(2))] +[visit_exp lanetype#19750] +[visit_id lanetype#19750] +[visit_exp dim#19750] +[visit_id dim#19750] +[visit_exp i#85106] +[visit_id i#85106] +[visit_exp (`F64`_lanetype, `%`_dim{i#85113}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#85113}(2)] +[visit_exp i#85113] +[visit_id i#85113] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `DIV`_vbinop_] +[visit_exp ()] +[visit_exp `%`_u32{i#85099}(243)] +[visit_exp i#85099] +[visit_id i#85099] +[visit_exp (243)] +[visit_exp 243] +[check_dims] dim#19792 i#85196 i#85203 i#85210 lanetype#19792 shape#3937 +dims \ = dim#19792, i#85196, i#85203, i#85210, lanetype#19792, shape#3937 +[visit_exp `VBINOP`_instr{shape#3937}(`%X%`_shape{lanetype#19792, dim#19792, i#85203}(`F64`_lanetype, `%`_dim{i#85210}(2)), `MIN`_vbinop_)] +[visit_exp shape#3937] +[visit_id shape#3937] +[visit_exp (`%X%`_shape{lanetype#19792, dim#19792, i#85203}(`F64`_lanetype, `%`_dim{i#85210}(2)), `MIN`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#19792, dim#19792, i#85203}(`F64`_lanetype, `%`_dim{i#85210}(2))] +[visit_exp lanetype#19792] +[visit_id lanetype#19792] +[visit_exp dim#19792] +[visit_id dim#19792] +[visit_exp i#85203] +[visit_id i#85203] +[visit_exp (`F64`_lanetype, `%`_dim{i#85210}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#85210}(2)] +[visit_exp i#85210] +[visit_id i#85210] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `MIN`_vbinop_] +[visit_exp ()] +[visit_exp `%`_u32{i#85196}(244)] +[visit_exp i#85196] +[visit_id i#85196] +[visit_exp (244)] +[visit_exp 244] +[check_dims] dim#19834 i#85293 i#85300 i#85307 lanetype#19834 shape#3939 +dims \ = dim#19834, i#85293, i#85300, i#85307, lanetype#19834, shape#3939 +[visit_exp `VBINOP`_instr{shape#3939}(`%X%`_shape{lanetype#19834, dim#19834, i#85300}(`F64`_lanetype, `%`_dim{i#85307}(2)), `MAX`_vbinop_)] +[visit_exp shape#3939] +[visit_id shape#3939] +[visit_exp (`%X%`_shape{lanetype#19834, dim#19834, i#85300}(`F64`_lanetype, `%`_dim{i#85307}(2)), `MAX`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#19834, dim#19834, i#85300}(`F64`_lanetype, `%`_dim{i#85307}(2))] +[visit_exp lanetype#19834] +[visit_id lanetype#19834] +[visit_exp dim#19834] +[visit_id dim#19834] +[visit_exp i#85300] +[visit_id i#85300] +[visit_exp (`F64`_lanetype, `%`_dim{i#85307}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#85307}(2)] +[visit_exp i#85307] +[visit_id i#85307] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `MAX`_vbinop_] +[visit_exp ()] +[visit_exp `%`_u32{i#85293}(245)] +[visit_exp i#85293] +[visit_id i#85293] +[visit_exp (245)] +[visit_exp 245] +[check_dims] dim#19876 i#85390 i#85397 i#85404 lanetype#19876 shape#3941 +dims \ = dim#19876, i#85390, i#85397, i#85404, lanetype#19876, shape#3941 +[visit_exp `VBINOP`_instr{shape#3941}(`%X%`_shape{lanetype#19876, dim#19876, i#85397}(`F64`_lanetype, `%`_dim{i#85404}(2)), `PMIN`_vbinop_)] +[visit_exp shape#3941] +[visit_id shape#3941] +[visit_exp (`%X%`_shape{lanetype#19876, dim#19876, i#85397}(`F64`_lanetype, `%`_dim{i#85404}(2)), `PMIN`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#19876, dim#19876, i#85397}(`F64`_lanetype, `%`_dim{i#85404}(2))] +[visit_exp lanetype#19876] +[visit_id lanetype#19876] +[visit_exp dim#19876] +[visit_id dim#19876] +[visit_exp i#85397] +[visit_id i#85397] +[visit_exp (`F64`_lanetype, `%`_dim{i#85404}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#85404}(2)] +[visit_exp i#85404] +[visit_id i#85404] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `PMIN`_vbinop_] +[visit_exp ()] +[visit_exp `%`_u32{i#85390}(246)] +[visit_exp i#85390] +[visit_id i#85390] +[visit_exp (246)] +[visit_exp 246] +[check_dims] dim#19918 i#85487 i#85494 i#85501 lanetype#19918 shape#3943 +dims \ = dim#19918, i#85487, i#85494, i#85501, lanetype#19918, shape#3943 +[visit_exp `VBINOP`_instr{shape#3943}(`%X%`_shape{lanetype#19918, dim#19918, i#85494}(`F64`_lanetype, `%`_dim{i#85501}(2)), `PMAX`_vbinop_)] +[visit_exp shape#3943] +[visit_id shape#3943] +[visit_exp (`%X%`_shape{lanetype#19918, dim#19918, i#85494}(`F64`_lanetype, `%`_dim{i#85501}(2)), `PMAX`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#19918, dim#19918, i#85494}(`F64`_lanetype, `%`_dim{i#85501}(2))] +[visit_exp lanetype#19918] +[visit_id lanetype#19918] +[visit_exp dim#19918] +[visit_id dim#19918] +[visit_exp i#85494] +[visit_id i#85494] +[visit_exp (`F64`_lanetype, `%`_dim{i#85501}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#85501}(2)] +[visit_exp i#85501] +[visit_id i#85501] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `PMAX`_vbinop_] +[visit_exp ()] +[visit_exp `%`_u32{i#85487}(247)] +[visit_exp i#85487] +[visit_id i#85487] +[visit_exp (247)] +[visit_exp 247] +[check_dims] dim#19960 i#85584 i#85591 i#85598 lanetype#19960 shape#3945 +dims \ = dim#19960, i#85584, i#85591, i#85598, lanetype#19960, shape#3945 +[visit_exp `VBINOP`_instr{shape#3945}(`%X%`_shape{lanetype#19960, dim#19960, i#85591}(`F64`_lanetype, `%`_dim{i#85598}(2)), `RELAXED_MIN`_vbinop_)] +[visit_exp shape#3945] +[visit_id shape#3945] +[visit_exp (`%X%`_shape{lanetype#19960, dim#19960, i#85591}(`F64`_lanetype, `%`_dim{i#85598}(2)), `RELAXED_MIN`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#19960, dim#19960, i#85591}(`F64`_lanetype, `%`_dim{i#85598}(2))] +[visit_exp lanetype#19960] +[visit_id lanetype#19960] +[visit_exp dim#19960] +[visit_id dim#19960] +[visit_exp i#85591] +[visit_id i#85591] +[visit_exp (`F64`_lanetype, `%`_dim{i#85598}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#85598}(2)] +[visit_exp i#85598] +[visit_id i#85598] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `RELAXED_MIN`_vbinop_] +[visit_exp ()] +[visit_exp `%`_u32{i#85584}(271)] +[visit_exp i#85584] +[visit_id i#85584] +[visit_exp (271)] +[visit_exp 271] +[check_dims] dim#20002 i#85681 i#85688 i#85695 lanetype#20002 shape#3947 +dims \ = dim#20002, i#85681, i#85688, i#85695, lanetype#20002, shape#3947 +[visit_exp `VBINOP`_instr{shape#3947}(`%X%`_shape{lanetype#20002, dim#20002, i#85688}(`F64`_lanetype, `%`_dim{i#85695}(2)), `RELAXED_MAX`_vbinop_)] +[visit_exp shape#3947] +[visit_id shape#3947] +[visit_exp (`%X%`_shape{lanetype#20002, dim#20002, i#85688}(`F64`_lanetype, `%`_dim{i#85695}(2)), `RELAXED_MAX`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#20002, dim#20002, i#85688}(`F64`_lanetype, `%`_dim{i#85695}(2))] +[visit_exp lanetype#20002] +[visit_id lanetype#20002] +[visit_exp dim#20002] +[visit_id dim#20002] +[visit_exp i#85688] +[visit_id i#85688] +[visit_exp (`F64`_lanetype, `%`_dim{i#85695}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#85695}(2)] +[visit_exp i#85695] +[visit_id i#85695] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `RELAXED_MAX`_vbinop_] +[visit_exp ()] +[visit_exp `%`_u32{i#85681}(272)] +[visit_exp i#85681] +[visit_id i#85681] +[visit_exp (272)] +[visit_exp 272] +ps' = +[check_dims] +[check_dims] dim#20044 i#85778 i#85785 i#85792 lanetype#20044 shape#3949 +dims \ = dim#20044, i#85778, i#85785, i#85792, lanetype#20044, shape#3949 +[visit_exp `VTERNOP`_instr{shape#3949}(`%X%`_shape{lanetype#20044, dim#20044, i#85785}(`F64`_lanetype, `%`_dim{i#85792}(2)), `RELAXED_MADD`_vternop_)] +[visit_exp shape#3949] +[visit_id shape#3949] +[visit_exp (`%X%`_shape{lanetype#20044, dim#20044, i#85785}(`F64`_lanetype, `%`_dim{i#85792}(2)), `RELAXED_MADD`_vternop_)] +[visit_exp `%X%`_shape{lanetype#20044, dim#20044, i#85785}(`F64`_lanetype, `%`_dim{i#85792}(2))] +[visit_exp lanetype#20044] +[visit_id lanetype#20044] +[visit_exp dim#20044] +[visit_id dim#20044] +[visit_exp i#85785] +[visit_id i#85785] +[visit_exp (`F64`_lanetype, `%`_dim{i#85792}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#85792}(2)] +[visit_exp i#85792] +[visit_id i#85792] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `RELAXED_MADD`_vternop_] +[visit_exp ()] +[visit_exp `%`_u32{i#85778}(263)] +[visit_exp i#85778] +[visit_id i#85778] +[visit_exp (263)] +[visit_exp 263] +[check_dims] dim#20086 i#85875 i#85882 i#85889 lanetype#20086 shape#3951 +dims \ = dim#20086, i#85875, i#85882, i#85889, lanetype#20086, shape#3951 +[visit_exp `VTERNOP`_instr{shape#3951}(`%X%`_shape{lanetype#20086, dim#20086, i#85882}(`F64`_lanetype, `%`_dim{i#85889}(2)), `RELAXED_NMADD`_vternop_)] +[visit_exp shape#3951] +[visit_id shape#3951] +[visit_exp (`%X%`_shape{lanetype#20086, dim#20086, i#85882}(`F64`_lanetype, `%`_dim{i#85889}(2)), `RELAXED_NMADD`_vternop_)] +[visit_exp `%X%`_shape{lanetype#20086, dim#20086, i#85882}(`F64`_lanetype, `%`_dim{i#85889}(2))] +[visit_exp lanetype#20086] +[visit_id lanetype#20086] +[visit_exp dim#20086] +[visit_id dim#20086] +[visit_exp i#85882] +[visit_id i#85882] +[visit_exp (`F64`_lanetype, `%`_dim{i#85889}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#85889}(2)] +[visit_exp i#85889] +[visit_id i#85889] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `RELAXED_NMADD`_vternop_] +[visit_exp ()] +[visit_exp `%`_u32{i#85875}(264)] +[visit_exp i#85875] +[visit_id i#85875] +[visit_exp (264)] +[visit_exp 264] +[check_dims] dim#20128 i#85972 i#85979 i#85986 lanetype#20128 shape#3953 +dims \ = dim#20128, i#85972, i#85979, i#85986, lanetype#20128, shape#3953 +[visit_exp `VTERNOP`_instr{shape#3953}(`%X%`_shape{lanetype#20128, dim#20128, i#85979}(`I8`_lanetype, `%`_dim{i#85986}(16)), `RELAXED_LANESELECT`_vternop_)] +[visit_exp shape#3953] +[visit_id shape#3953] +[visit_exp (`%X%`_shape{lanetype#20128, dim#20128, i#85979}(`I8`_lanetype, `%`_dim{i#85986}(16)), `RELAXED_LANESELECT`_vternop_)] +[visit_exp `%X%`_shape{lanetype#20128, dim#20128, i#85979}(`I8`_lanetype, `%`_dim{i#85986}(16))] +[visit_exp lanetype#20128] +[visit_id lanetype#20128] +[visit_exp dim#20128] +[visit_id dim#20128] +[visit_exp i#85979] +[visit_id i#85979] +[visit_exp (`I8`_lanetype, `%`_dim{i#85986}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#85986}(16)] +[visit_exp i#85986] +[visit_id i#85986] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `RELAXED_LANESELECT`_vternop_] +[visit_exp ()] +[visit_exp `%`_u32{i#85972}(265)] +[visit_exp i#85972] +[visit_id i#85972] +[visit_exp (265)] +[visit_exp 265] +[check_dims] dim#20155 i#86054 i#86061 i#86068 lanetype#20155 shape#3955 +dims \ = dim#20155, i#86054, i#86061, i#86068, lanetype#20155, shape#3955 +[visit_exp `VTERNOP`_instr{shape#3955}(`%X%`_shape{lanetype#20155, dim#20155, i#86061}(`I16`_lanetype, `%`_dim{i#86068}(8)), `RELAXED_LANESELECT`_vternop_)] +[visit_exp shape#3955] +[visit_id shape#3955] +[visit_exp (`%X%`_shape{lanetype#20155, dim#20155, i#86061}(`I16`_lanetype, `%`_dim{i#86068}(8)), `RELAXED_LANESELECT`_vternop_)] +[visit_exp `%X%`_shape{lanetype#20155, dim#20155, i#86061}(`I16`_lanetype, `%`_dim{i#86068}(8))] +[visit_exp lanetype#20155] +[visit_id lanetype#20155] +[visit_exp dim#20155] +[visit_id dim#20155] +[visit_exp i#86061] +[visit_id i#86061] +[visit_exp (`I16`_lanetype, `%`_dim{i#86068}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#86068}(8)] +[visit_exp i#86068] +[visit_id i#86068] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `RELAXED_LANESELECT`_vternop_] +[visit_exp ()] +[visit_exp `%`_u32{i#86054}(266)] +[visit_exp i#86054] +[visit_id i#86054] +[visit_exp (266)] +[visit_exp 266] +[check_dims] dim#20182 i#86136 i#86143 i#86150 lanetype#20182 shape#3957 +dims \ = dim#20182, i#86136, i#86143, i#86150, lanetype#20182, shape#3957 +[visit_exp `VTERNOP`_instr{shape#3957}(`%X%`_shape{lanetype#20182, dim#20182, i#86143}(`I32`_lanetype, `%`_dim{i#86150}(4)), `RELAXED_LANESELECT`_vternop_)] +[visit_exp shape#3957] +[visit_id shape#3957] +[visit_exp (`%X%`_shape{lanetype#20182, dim#20182, i#86143}(`I32`_lanetype, `%`_dim{i#86150}(4)), `RELAXED_LANESELECT`_vternop_)] +[visit_exp `%X%`_shape{lanetype#20182, dim#20182, i#86143}(`I32`_lanetype, `%`_dim{i#86150}(4))] +[visit_exp lanetype#20182] +[visit_id lanetype#20182] +[visit_exp dim#20182] +[visit_id dim#20182] +[visit_exp i#86143] +[visit_id i#86143] +[visit_exp (`I32`_lanetype, `%`_dim{i#86150}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#86150}(4)] +[visit_exp i#86150] +[visit_id i#86150] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `RELAXED_LANESELECT`_vternop_] +[visit_exp ()] +[visit_exp `%`_u32{i#86136}(267)] +[visit_exp i#86136] +[visit_id i#86136] +[visit_exp (267)] +[visit_exp 267] +[check_dims] dim#20209 i#86218 i#86225 i#86232 lanetype#20209 shape#3959 +dims \ = dim#20209, i#86218, i#86225, i#86232, lanetype#20209, shape#3959 +[visit_exp `VTERNOP`_instr{shape#3959}(`%X%`_shape{lanetype#20209, dim#20209, i#86225}(`I64`_lanetype, `%`_dim{i#86232}(2)), `RELAXED_LANESELECT`_vternop_)] +[visit_exp shape#3959] +[visit_id shape#3959] +[visit_exp (`%X%`_shape{lanetype#20209, dim#20209, i#86225}(`I64`_lanetype, `%`_dim{i#86232}(2)), `RELAXED_LANESELECT`_vternop_)] +[visit_exp `%X%`_shape{lanetype#20209, dim#20209, i#86225}(`I64`_lanetype, `%`_dim{i#86232}(2))] +[visit_exp lanetype#20209] +[visit_id lanetype#20209] +[visit_exp dim#20209] +[visit_id dim#20209] +[visit_exp i#86225] +[visit_id i#86225] +[visit_exp (`I64`_lanetype, `%`_dim{i#86232}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#86232}(2)] +[visit_exp i#86232] +[visit_id i#86232] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `RELAXED_LANESELECT`_vternop_] +[visit_exp ()] +[visit_exp `%`_u32{i#86218}(268)] +[visit_exp i#86218] +[visit_id i#86218] +[visit_exp (268)] +[visit_exp 268] +ps' = +[check_dims] +[check_dims] dim#20236 dim#20248 i#86300 i#86307 i#86314 i#86319 i#86326 lanetype#20236 lanetype#20248 shape_1#31 shape_2#31 zero#159 +dims \ = dim#20236, dim#20248, i#86300, i#86307, i#86314, i#86319, i#86326, lanetype#20236, lanetype#20248, shape_1#31, shape_2#31, zero#159 +[visit_exp `VCVTOP`_instr{shape_1#31, shape_2#31}(`%X%`_shape{lanetype#20236, dim#20236, i#86307}(`F32`_lanetype, `%`_dim{i#86314}(4)), `%X%`_shape{lanetype#20248, dim#20248, i#86319}(`F64`_lanetype, `%`_dim{i#86326}(2)), `DEMOTE`_vcvtop__{zero#159}(`ZERO`_zero))] +[visit_exp shape_1#31] +[visit_id shape_1#31] +[visit_exp shape_2#31] +[visit_id shape_2#31] +[visit_exp (`%X%`_shape{lanetype#20236, dim#20236, i#86307}(`F32`_lanetype, `%`_dim{i#86314}(4)), `%X%`_shape{lanetype#20248, dim#20248, i#86319}(`F64`_lanetype, `%`_dim{i#86326}(2)), `DEMOTE`_vcvtop__{zero#159}(`ZERO`_zero))] +[visit_exp `%X%`_shape{lanetype#20236, dim#20236, i#86307}(`F32`_lanetype, `%`_dim{i#86314}(4))] +[visit_exp lanetype#20236] +[visit_id lanetype#20236] +[visit_exp dim#20236] +[visit_id dim#20236] +[visit_exp i#86307] +[visit_id i#86307] +[visit_exp (`F32`_lanetype, `%`_dim{i#86314}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#86314}(4)] +[visit_exp i#86314] +[visit_id i#86314] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%X%`_shape{lanetype#20248, dim#20248, i#86319}(`F64`_lanetype, `%`_dim{i#86326}(2))] +[visit_exp lanetype#20248] +[visit_id lanetype#20248] +[visit_exp dim#20248] +[visit_id dim#20248] +[visit_exp i#86319] +[visit_id i#86319] +[visit_exp (`F64`_lanetype, `%`_dim{i#86326}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#86326}(2)] +[visit_exp i#86326] +[visit_id i#86326] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `DEMOTE`_vcvtop__{zero#159}(`ZERO`_zero)] +[visit_exp zero#159] +[visit_id zero#159] +[visit_exp (`ZERO`_zero)] +[visit_exp `ZERO`_zero] +[visit_exp ()] +[visit_exp `%`_u32{i#86300}(94)] +[visit_exp i#86300] +[visit_id i#86300] +[visit_exp (94)] +[visit_exp 94] +[check_dims] dim#20501 dim#20513 i#86770 i#86777 i#86784 i#86789 i#86796 lanetype#20501 lanetype#20513 shape_1#33 shape_2#33 +dims \ = dim#20501, dim#20513, i#86770, i#86777, i#86784, i#86789, i#86796, lanetype#20501, lanetype#20513, shape_1#33, shape_2#33 +[visit_exp `VCVTOP`_instr{shape_1#33, shape_2#33}(`%X%`_shape{lanetype#20501, dim#20501, i#86777}(`F64`_lanetype, `%`_dim{i#86784}(2)), `%X%`_shape{lanetype#20513, dim#20513, i#86789}(`F32`_lanetype, `%`_dim{i#86796}(4)), `PROMOTELOW`_vcvtop__)] +[visit_exp shape_1#33] +[visit_id shape_1#33] +[visit_exp shape_2#33] +[visit_id shape_2#33] +[visit_exp (`%X%`_shape{lanetype#20501, dim#20501, i#86777}(`F64`_lanetype, `%`_dim{i#86784}(2)), `%X%`_shape{lanetype#20513, dim#20513, i#86789}(`F32`_lanetype, `%`_dim{i#86796}(4)), `PROMOTELOW`_vcvtop__)] +[visit_exp `%X%`_shape{lanetype#20501, dim#20501, i#86777}(`F64`_lanetype, `%`_dim{i#86784}(2))] +[visit_exp lanetype#20501] +[visit_id lanetype#20501] +[visit_exp dim#20501] +[visit_id dim#20501] +[visit_exp i#86777] +[visit_id i#86777] +[visit_exp (`F64`_lanetype, `%`_dim{i#86784}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#86784}(2)] +[visit_exp i#86784] +[visit_id i#86784] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `%X%`_shape{lanetype#20513, dim#20513, i#86789}(`F32`_lanetype, `%`_dim{i#86796}(4))] +[visit_exp lanetype#20513] +[visit_id lanetype#20513] +[visit_exp dim#20513] +[visit_id dim#20513] +[visit_exp i#86789] +[visit_id i#86789] +[visit_exp (`F32`_lanetype, `%`_dim{i#86796}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#86796}(4)] +[visit_exp i#86796] +[visit_id i#86796] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `PROMOTELOW`_vcvtop__] +[visit_exp ()] +[visit_exp `%`_u32{i#86770}(95)] +[visit_exp i#86770] +[visit_id i#86770] +[visit_exp (95)] +[visit_exp 95] +[check_dims] dim#20766 dim#20778 i#87240 i#87247 i#87254 i#87259 i#87266 lanetype#20766 lanetype#20778 shape_1#35 shape_2#35 sx#15127 zero?#135 +dims \ = dim#20766, dim#20778, i#87240, i#87247, i#87254, i#87259, i#87266, lanetype#20766, lanetype#20778, shape_1#35, shape_2#35, sx#15127, zero?#135 +[visit_exp `VCVTOP`_instr{shape_1#35, shape_2#35}(`%X%`_shape{lanetype#20766, dim#20766, i#87247}(`I32`_lanetype, `%`_dim{i#87254}(4)), `%X%`_shape{lanetype#20778, dim#20778, i#87259}(`F32`_lanetype, `%`_dim{i#87266}(4)), `TRUNC_SAT`_vcvtop__{sx#15127, `zero?#135`}(`S`_sx, ?()))] +[visit_exp shape_1#35] +[visit_id shape_1#35] +[visit_exp shape_2#35] +[visit_id shape_2#35] +[visit_exp (`%X%`_shape{lanetype#20766, dim#20766, i#87247}(`I32`_lanetype, `%`_dim{i#87254}(4)), `%X%`_shape{lanetype#20778, dim#20778, i#87259}(`F32`_lanetype, `%`_dim{i#87266}(4)), `TRUNC_SAT`_vcvtop__{sx#15127, `zero?#135`}(`S`_sx, ?()))] +[visit_exp `%X%`_shape{lanetype#20766, dim#20766, i#87247}(`I32`_lanetype, `%`_dim{i#87254}(4))] +[visit_exp lanetype#20766] +[visit_id lanetype#20766] +[visit_exp dim#20766] +[visit_id dim#20766] +[visit_exp i#87247] +[visit_id i#87247] +[visit_exp (`I32`_lanetype, `%`_dim{i#87254}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#87254}(4)] +[visit_exp i#87254] +[visit_id i#87254] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%X%`_shape{lanetype#20778, dim#20778, i#87259}(`F32`_lanetype, `%`_dim{i#87266}(4))] +[visit_exp lanetype#20778] +[visit_id lanetype#20778] +[visit_exp dim#20778] +[visit_id dim#20778] +[visit_exp i#87259] +[visit_id i#87259] +[visit_exp (`F32`_lanetype, `%`_dim{i#87266}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#87266}(4)] +[visit_exp i#87266] +[visit_id i#87266] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `TRUNC_SAT`_vcvtop__{sx#15127, `zero?#135`}(`S`_sx, ?())] +[visit_exp sx#15127] +[visit_id sx#15127] +[visit_exp `zero?#135`] +[visit_id zero?#135] +[visit_exp (`S`_sx, ?())] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp ?()] +[visit_exp `%`_u32{i#87240}(248)] +[visit_exp i#87240] +[visit_id i#87240] +[visit_exp (248)] +[visit_exp 248] +[check_dims] dim#20941 dim#20953 i#87560 i#87567 i#87574 i#87579 i#87586 lanetype#20941 lanetype#20953 shape_1#37 shape_2#37 sx#15191 zero?#199 +dims \ = dim#20941, dim#20953, i#87560, i#87567, i#87574, i#87579, i#87586, lanetype#20941, lanetype#20953, shape_1#37, shape_2#37, sx#15191, zero?#199 +[visit_exp `VCVTOP`_instr{shape_1#37, shape_2#37}(`%X%`_shape{lanetype#20941, dim#20941, i#87567}(`I32`_lanetype, `%`_dim{i#87574}(4)), `%X%`_shape{lanetype#20953, dim#20953, i#87579}(`F32`_lanetype, `%`_dim{i#87586}(4)), `TRUNC_SAT`_vcvtop__{sx#15191, `zero?#199`}(`U`_sx, ?()))] +[visit_exp shape_1#37] +[visit_id shape_1#37] +[visit_exp shape_2#37] +[visit_id shape_2#37] +[visit_exp (`%X%`_shape{lanetype#20941, dim#20941, i#87567}(`I32`_lanetype, `%`_dim{i#87574}(4)), `%X%`_shape{lanetype#20953, dim#20953, i#87579}(`F32`_lanetype, `%`_dim{i#87586}(4)), `TRUNC_SAT`_vcvtop__{sx#15191, `zero?#199`}(`U`_sx, ?()))] +[visit_exp `%X%`_shape{lanetype#20941, dim#20941, i#87567}(`I32`_lanetype, `%`_dim{i#87574}(4))] +[visit_exp lanetype#20941] +[visit_id lanetype#20941] +[visit_exp dim#20941] +[visit_id dim#20941] +[visit_exp i#87567] +[visit_id i#87567] +[visit_exp (`I32`_lanetype, `%`_dim{i#87574}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#87574}(4)] +[visit_exp i#87574] +[visit_id i#87574] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%X%`_shape{lanetype#20953, dim#20953, i#87579}(`F32`_lanetype, `%`_dim{i#87586}(4))] +[visit_exp lanetype#20953] +[visit_id lanetype#20953] +[visit_exp dim#20953] +[visit_id dim#20953] +[visit_exp i#87579] +[visit_id i#87579] +[visit_exp (`F32`_lanetype, `%`_dim{i#87586}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#87586}(4)] +[visit_exp i#87586] +[visit_id i#87586] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `TRUNC_SAT`_vcvtop__{sx#15191, `zero?#199`}(`U`_sx, ?())] +[visit_exp sx#15191] +[visit_id sx#15191] +[visit_exp `zero?#199`] +[visit_id zero?#199] +[visit_exp (`U`_sx, ?())] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp ?()] +[visit_exp `%`_u32{i#87560}(249)] +[visit_exp i#87560] +[visit_id i#87560] +[visit_exp (249)] +[visit_exp 249] +[check_dims] dim#21116 dim#21128 half?#39 i#87880 i#87887 i#87894 i#87899 i#87906 lanetype#21116 lanetype#21128 shape_1#39 shape_2#39 sx#15225 +dims \ = dim#21116, dim#21128, half?#39, i#87880, i#87887, i#87894, i#87899, i#87906, lanetype#21116, lanetype#21128, shape_1#39, shape_2#39, sx#15225 +[visit_exp `VCVTOP`_instr{shape_1#39, shape_2#39}(`%X%`_shape{lanetype#21116, dim#21116, i#87887}(`F32`_lanetype, `%`_dim{i#87894}(4)), `%X%`_shape{lanetype#21128, dim#21128, i#87899}(`I32`_lanetype, `%`_dim{i#87906}(4)), `CONVERT`_vcvtop__{`half?#39`, sx#15225}(?(), `S`_sx))] +[visit_exp shape_1#39] +[visit_id shape_1#39] +[visit_exp shape_2#39] +[visit_id shape_2#39] +[visit_exp (`%X%`_shape{lanetype#21116, dim#21116, i#87887}(`F32`_lanetype, `%`_dim{i#87894}(4)), `%X%`_shape{lanetype#21128, dim#21128, i#87899}(`I32`_lanetype, `%`_dim{i#87906}(4)), `CONVERT`_vcvtop__{`half?#39`, sx#15225}(?(), `S`_sx))] +[visit_exp `%X%`_shape{lanetype#21116, dim#21116, i#87887}(`F32`_lanetype, `%`_dim{i#87894}(4))] +[visit_exp lanetype#21116] +[visit_id lanetype#21116] +[visit_exp dim#21116] +[visit_id dim#21116] +[visit_exp i#87887] +[visit_id i#87887] +[visit_exp (`F32`_lanetype, `%`_dim{i#87894}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#87894}(4)] +[visit_exp i#87894] +[visit_id i#87894] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%X%`_shape{lanetype#21128, dim#21128, i#87899}(`I32`_lanetype, `%`_dim{i#87906}(4))] +[visit_exp lanetype#21128] +[visit_id lanetype#21128] +[visit_exp dim#21128] +[visit_id dim#21128] +[visit_exp i#87899] +[visit_id i#87899] +[visit_exp (`I32`_lanetype, `%`_dim{i#87906}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#87906}(4)] +[visit_exp i#87906] +[visit_id i#87906] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `CONVERT`_vcvtop__{`half?#39`, sx#15225}(?(), `S`_sx)] +[visit_exp `half?#39`] +[visit_id half?#39] +[visit_exp sx#15225] +[visit_id sx#15225] +[visit_exp (?(), `S`_sx)] +[visit_exp ?()] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#87880}(250)] +[visit_exp i#87880] +[visit_id i#87880] +[visit_exp (250)] +[visit_exp 250] +[check_dims] dim#21321 dim#21333 half?#73 i#88290 i#88297 i#88304 i#88309 i#88316 lanetype#21321 lanetype#21333 shape_1#41 shape_2#41 sx#15259 +dims \ = dim#21321, dim#21333, half?#73, i#88290, i#88297, i#88304, i#88309, i#88316, lanetype#21321, lanetype#21333, shape_1#41, shape_2#41, sx#15259 +[visit_exp `VCVTOP`_instr{shape_1#41, shape_2#41}(`%X%`_shape{lanetype#21321, dim#21321, i#88297}(`F32`_lanetype, `%`_dim{i#88304}(4)), `%X%`_shape{lanetype#21333, dim#21333, i#88309}(`I32`_lanetype, `%`_dim{i#88316}(4)), `CONVERT`_vcvtop__{`half?#73`, sx#15259}(?(), `U`_sx))] +[visit_exp shape_1#41] +[visit_id shape_1#41] +[visit_exp shape_2#41] +[visit_id shape_2#41] +[visit_exp (`%X%`_shape{lanetype#21321, dim#21321, i#88297}(`F32`_lanetype, `%`_dim{i#88304}(4)), `%X%`_shape{lanetype#21333, dim#21333, i#88309}(`I32`_lanetype, `%`_dim{i#88316}(4)), `CONVERT`_vcvtop__{`half?#73`, sx#15259}(?(), `U`_sx))] +[visit_exp `%X%`_shape{lanetype#21321, dim#21321, i#88297}(`F32`_lanetype, `%`_dim{i#88304}(4))] +[visit_exp lanetype#21321] +[visit_id lanetype#21321] +[visit_exp dim#21321] +[visit_id dim#21321] +[visit_exp i#88297] +[visit_id i#88297] +[visit_exp (`F32`_lanetype, `%`_dim{i#88304}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#88304}(4)] +[visit_exp i#88304] +[visit_id i#88304] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%X%`_shape{lanetype#21333, dim#21333, i#88309}(`I32`_lanetype, `%`_dim{i#88316}(4))] +[visit_exp lanetype#21333] +[visit_id lanetype#21333] +[visit_exp dim#21333] +[visit_id dim#21333] +[visit_exp i#88309] +[visit_id i#88309] +[visit_exp (`I32`_lanetype, `%`_dim{i#88316}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#88316}(4)] +[visit_exp i#88316] +[visit_id i#88316] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `CONVERT`_vcvtop__{`half?#73`, sx#15259}(?(), `U`_sx)] +[visit_exp `half?#73`] +[visit_id half?#73] +[visit_exp sx#15259] +[visit_id sx#15259] +[visit_exp (?(), `U`_sx)] +[visit_exp ?()] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#88290}(251)] +[visit_exp i#88290] +[visit_id i#88290] +[visit_exp (251)] +[visit_exp 251] +[check_dims] dim#21526 dim#21538 i#88700 i#88707 i#88714 i#88719 i#88726 lanetype#21526 lanetype#21538 shape_1#43 shape_2#43 sx#15323 zero?#263 +dims \ = dim#21526, dim#21538, i#88700, i#88707, i#88714, i#88719, i#88726, lanetype#21526, lanetype#21538, shape_1#43, shape_2#43, sx#15323, zero?#263 +[visit_exp `VCVTOP`_instr{shape_1#43, shape_2#43}(`%X%`_shape{lanetype#21526, dim#21526, i#88707}(`I32`_lanetype, `%`_dim{i#88714}(4)), `%X%`_shape{lanetype#21538, dim#21538, i#88719}(`F64`_lanetype, `%`_dim{i#88726}(2)), `TRUNC_SAT`_vcvtop__{sx#15323, `zero?#263`}(`S`_sx, ?(`ZERO`_zero)))] +[visit_exp shape_1#43] +[visit_id shape_1#43] +[visit_exp shape_2#43] +[visit_id shape_2#43] +[visit_exp (`%X%`_shape{lanetype#21526, dim#21526, i#88707}(`I32`_lanetype, `%`_dim{i#88714}(4)), `%X%`_shape{lanetype#21538, dim#21538, i#88719}(`F64`_lanetype, `%`_dim{i#88726}(2)), `TRUNC_SAT`_vcvtop__{sx#15323, `zero?#263`}(`S`_sx, ?(`ZERO`_zero)))] +[visit_exp `%X%`_shape{lanetype#21526, dim#21526, i#88707}(`I32`_lanetype, `%`_dim{i#88714}(4))] +[visit_exp lanetype#21526] +[visit_id lanetype#21526] +[visit_exp dim#21526] +[visit_id dim#21526] +[visit_exp i#88707] +[visit_id i#88707] +[visit_exp (`I32`_lanetype, `%`_dim{i#88714}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#88714}(4)] +[visit_exp i#88714] +[visit_id i#88714] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%X%`_shape{lanetype#21538, dim#21538, i#88719}(`F64`_lanetype, `%`_dim{i#88726}(2))] +[visit_exp lanetype#21538] +[visit_id lanetype#21538] +[visit_exp dim#21538] +[visit_id dim#21538] +[visit_exp i#88719] +[visit_id i#88719] +[visit_exp (`F64`_lanetype, `%`_dim{i#88726}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#88726}(2)] +[visit_exp i#88726] +[visit_id i#88726] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `TRUNC_SAT`_vcvtop__{sx#15323, `zero?#263`}(`S`_sx, ?(`ZERO`_zero))] +[visit_exp sx#15323] +[visit_id sx#15323] +[visit_exp `zero?#263`] +[visit_id zero?#263] +[visit_exp (`S`_sx, ?(`ZERO`_zero))] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp ?(`ZERO`_zero)] +[visit_exp `ZERO`_zero] +[visit_exp ()] +[visit_exp `%`_u32{i#88700}(252)] +[visit_exp i#88700] +[visit_id i#88700] +[visit_exp (252)] +[visit_exp 252] +[check_dims] dim#21701 dim#21713 i#89020 i#89027 i#89034 i#89039 i#89046 lanetype#21701 lanetype#21713 shape_1#45 shape_2#45 sx#15387 zero?#327 +dims \ = dim#21701, dim#21713, i#89020, i#89027, i#89034, i#89039, i#89046, lanetype#21701, lanetype#21713, shape_1#45, shape_2#45, sx#15387, zero?#327 +[visit_exp `VCVTOP`_instr{shape_1#45, shape_2#45}(`%X%`_shape{lanetype#21701, dim#21701, i#89027}(`I32`_lanetype, `%`_dim{i#89034}(4)), `%X%`_shape{lanetype#21713, dim#21713, i#89039}(`F64`_lanetype, `%`_dim{i#89046}(2)), `TRUNC_SAT`_vcvtop__{sx#15387, `zero?#327`}(`U`_sx, ?(`ZERO`_zero)))] +[visit_exp shape_1#45] +[visit_id shape_1#45] +[visit_exp shape_2#45] +[visit_id shape_2#45] +[visit_exp (`%X%`_shape{lanetype#21701, dim#21701, i#89027}(`I32`_lanetype, `%`_dim{i#89034}(4)), `%X%`_shape{lanetype#21713, dim#21713, i#89039}(`F64`_lanetype, `%`_dim{i#89046}(2)), `TRUNC_SAT`_vcvtop__{sx#15387, `zero?#327`}(`U`_sx, ?(`ZERO`_zero)))] +[visit_exp `%X%`_shape{lanetype#21701, dim#21701, i#89027}(`I32`_lanetype, `%`_dim{i#89034}(4))] +[visit_exp lanetype#21701] +[visit_id lanetype#21701] +[visit_exp dim#21701] +[visit_id dim#21701] +[visit_exp i#89027] +[visit_id i#89027] +[visit_exp (`I32`_lanetype, `%`_dim{i#89034}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#89034}(4)] +[visit_exp i#89034] +[visit_id i#89034] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%X%`_shape{lanetype#21713, dim#21713, i#89039}(`F64`_lanetype, `%`_dim{i#89046}(2))] +[visit_exp lanetype#21713] +[visit_id lanetype#21713] +[visit_exp dim#21713] +[visit_id dim#21713] +[visit_exp i#89039] +[visit_id i#89039] +[visit_exp (`F64`_lanetype, `%`_dim{i#89046}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#89046}(2)] +[visit_exp i#89046] +[visit_id i#89046] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `TRUNC_SAT`_vcvtop__{sx#15387, `zero?#327`}(`U`_sx, ?(`ZERO`_zero))] +[visit_exp sx#15387] +[visit_id sx#15387] +[visit_exp `zero?#327`] +[visit_id zero?#327] +[visit_exp (`U`_sx, ?(`ZERO`_zero))] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp ?(`ZERO`_zero)] +[visit_exp `ZERO`_zero] +[visit_exp ()] +[visit_exp `%`_u32{i#89020}(253)] +[visit_exp i#89020] +[visit_id i#89020] +[visit_exp (253)] +[visit_exp 253] +[check_dims] dim#21876 dim#21888 half?#107 i#89340 i#89347 i#89354 i#89359 i#89366 lanetype#21876 lanetype#21888 shape_1#47 shape_2#47 sx#15421 +dims \ = dim#21876, dim#21888, half?#107, i#89340, i#89347, i#89354, i#89359, i#89366, lanetype#21876, lanetype#21888, shape_1#47, shape_2#47, sx#15421 +[visit_exp `VCVTOP`_instr{shape_1#47, shape_2#47}(`%X%`_shape{lanetype#21876, dim#21876, i#89347}(`F64`_lanetype, `%`_dim{i#89354}(2)), `%X%`_shape{lanetype#21888, dim#21888, i#89359}(`I32`_lanetype, `%`_dim{i#89366}(4)), `CONVERT`_vcvtop__{`half?#107`, sx#15421}(?(`LOW`_half), `S`_sx))] +[visit_exp shape_1#47] +[visit_id shape_1#47] +[visit_exp shape_2#47] +[visit_id shape_2#47] +[visit_exp (`%X%`_shape{lanetype#21876, dim#21876, i#89347}(`F64`_lanetype, `%`_dim{i#89354}(2)), `%X%`_shape{lanetype#21888, dim#21888, i#89359}(`I32`_lanetype, `%`_dim{i#89366}(4)), `CONVERT`_vcvtop__{`half?#107`, sx#15421}(?(`LOW`_half), `S`_sx))] +[visit_exp `%X%`_shape{lanetype#21876, dim#21876, i#89347}(`F64`_lanetype, `%`_dim{i#89354}(2))] +[visit_exp lanetype#21876] +[visit_id lanetype#21876] +[visit_exp dim#21876] +[visit_id dim#21876] +[visit_exp i#89347] +[visit_id i#89347] +[visit_exp (`F64`_lanetype, `%`_dim{i#89354}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#89354}(2)] +[visit_exp i#89354] +[visit_id i#89354] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `%X%`_shape{lanetype#21888, dim#21888, i#89359}(`I32`_lanetype, `%`_dim{i#89366}(4))] +[visit_exp lanetype#21888] +[visit_id lanetype#21888] +[visit_exp dim#21888] +[visit_id dim#21888] +[visit_exp i#89359] +[visit_id i#89359] +[visit_exp (`I32`_lanetype, `%`_dim{i#89366}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#89366}(4)] +[visit_exp i#89366] +[visit_id i#89366] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `CONVERT`_vcvtop__{`half?#107`, sx#15421}(?(`LOW`_half), `S`_sx)] +[visit_exp `half?#107`] +[visit_id half?#107] +[visit_exp sx#15421] +[visit_id sx#15421] +[visit_exp (?(`LOW`_half), `S`_sx)] +[visit_exp ?(`LOW`_half)] +[visit_exp `LOW`_half] +[visit_exp ()] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#89340}(254)] +[visit_exp i#89340] +[visit_id i#89340] +[visit_exp (254)] +[visit_exp 254] +[check_dims] dim#22081 dim#22093 half?#141 i#89750 i#89757 i#89764 i#89769 i#89776 lanetype#22081 lanetype#22093 shape_1#49 shape_2#49 sx#15455 +dims \ = dim#22081, dim#22093, half?#141, i#89750, i#89757, i#89764, i#89769, i#89776, lanetype#22081, lanetype#22093, shape_1#49, shape_2#49, sx#15455 +[visit_exp `VCVTOP`_instr{shape_1#49, shape_2#49}(`%X%`_shape{lanetype#22081, dim#22081, i#89757}(`F64`_lanetype, `%`_dim{i#89764}(2)), `%X%`_shape{lanetype#22093, dim#22093, i#89769}(`I32`_lanetype, `%`_dim{i#89776}(4)), `CONVERT`_vcvtop__{`half?#141`, sx#15455}(?(`LOW`_half), `U`_sx))] +[visit_exp shape_1#49] +[visit_id shape_1#49] +[visit_exp shape_2#49] +[visit_id shape_2#49] +[visit_exp (`%X%`_shape{lanetype#22081, dim#22081, i#89757}(`F64`_lanetype, `%`_dim{i#89764}(2)), `%X%`_shape{lanetype#22093, dim#22093, i#89769}(`I32`_lanetype, `%`_dim{i#89776}(4)), `CONVERT`_vcvtop__{`half?#141`, sx#15455}(?(`LOW`_half), `U`_sx))] +[visit_exp `%X%`_shape{lanetype#22081, dim#22081, i#89757}(`F64`_lanetype, `%`_dim{i#89764}(2))] +[visit_exp lanetype#22081] +[visit_id lanetype#22081] +[visit_exp dim#22081] +[visit_id dim#22081] +[visit_exp i#89757] +[visit_id i#89757] +[visit_exp (`F64`_lanetype, `%`_dim{i#89764}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#89764}(2)] +[visit_exp i#89764] +[visit_id i#89764] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `%X%`_shape{lanetype#22093, dim#22093, i#89769}(`I32`_lanetype, `%`_dim{i#89776}(4))] +[visit_exp lanetype#22093] +[visit_id lanetype#22093] +[visit_exp dim#22093] +[visit_id dim#22093] +[visit_exp i#89769] +[visit_id i#89769] +[visit_exp (`I32`_lanetype, `%`_dim{i#89776}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#89776}(4)] +[visit_exp i#89776] +[visit_id i#89776] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `CONVERT`_vcvtop__{`half?#141`, sx#15455}(?(`LOW`_half), `U`_sx)] +[visit_exp `half?#141`] +[visit_id half?#141] +[visit_exp sx#15455] +[visit_id sx#15455] +[visit_exp (?(`LOW`_half), `U`_sx)] +[visit_exp ?(`LOW`_half)] +[visit_exp `LOW`_half] +[visit_exp ()] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp `%`_u32{i#89750}(255)] +[visit_exp i#89750] +[visit_id i#89750] +[visit_exp (255)] +[visit_exp 255] +[check_dims] dim#22286 dim#22298 i#90160 i#90167 i#90174 i#90179 i#90186 lanetype#22286 lanetype#22298 shape_1#51 shape_2#51 sx#15519 zero?#391 +dims \ = dim#22286, dim#22298, i#90160, i#90167, i#90174, i#90179, i#90186, lanetype#22286, lanetype#22298, shape_1#51, shape_2#51, sx#15519, zero?#391 +[visit_exp `VCVTOP`_instr{shape_1#51, shape_2#51}(`%X%`_shape{lanetype#22286, dim#22286, i#90167}(`I32`_lanetype, `%`_dim{i#90174}(4)), `%X%`_shape{lanetype#22298, dim#22298, i#90179}(`F32`_lanetype, `%`_dim{i#90186}(4)), `RELAXED_TRUNC`_vcvtop__{sx#15519, `zero?#391`}(`S`_sx, ?()))] +[visit_exp shape_1#51] +[visit_id shape_1#51] +[visit_exp shape_2#51] +[visit_id shape_2#51] +[visit_exp (`%X%`_shape{lanetype#22286, dim#22286, i#90167}(`I32`_lanetype, `%`_dim{i#90174}(4)), `%X%`_shape{lanetype#22298, dim#22298, i#90179}(`F32`_lanetype, `%`_dim{i#90186}(4)), `RELAXED_TRUNC`_vcvtop__{sx#15519, `zero?#391`}(`S`_sx, ?()))] +[visit_exp `%X%`_shape{lanetype#22286, dim#22286, i#90167}(`I32`_lanetype, `%`_dim{i#90174}(4))] +[visit_exp lanetype#22286] +[visit_id lanetype#22286] +[visit_exp dim#22286] +[visit_id dim#22286] +[visit_exp i#90167] +[visit_id i#90167] +[visit_exp (`I32`_lanetype, `%`_dim{i#90174}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#90174}(4)] +[visit_exp i#90174] +[visit_id i#90174] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%X%`_shape{lanetype#22298, dim#22298, i#90179}(`F32`_lanetype, `%`_dim{i#90186}(4))] +[visit_exp lanetype#22298] +[visit_id lanetype#22298] +[visit_exp dim#22298] +[visit_id dim#22298] +[visit_exp i#90179] +[visit_id i#90179] +[visit_exp (`F32`_lanetype, `%`_dim{i#90186}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#90186}(4)] +[visit_exp i#90186] +[visit_id i#90186] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `RELAXED_TRUNC`_vcvtop__{sx#15519, `zero?#391`}(`S`_sx, ?())] +[visit_exp sx#15519] +[visit_id sx#15519] +[visit_exp `zero?#391`] +[visit_id zero?#391] +[visit_exp (`S`_sx, ?())] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp ?()] +[visit_exp `%`_u32{i#90160}(257)] +[visit_exp i#90160] +[visit_id i#90160] +[visit_exp (257)] +[visit_exp 257] +[check_dims] dim#22461 dim#22473 i#90480 i#90487 i#90494 i#90499 i#90506 lanetype#22461 lanetype#22473 shape_1#53 shape_2#53 sx#15583 zero?#455 +dims \ = dim#22461, dim#22473, i#90480, i#90487, i#90494, i#90499, i#90506, lanetype#22461, lanetype#22473, shape_1#53, shape_2#53, sx#15583, zero?#455 +[visit_exp `VCVTOP`_instr{shape_1#53, shape_2#53}(`%X%`_shape{lanetype#22461, dim#22461, i#90487}(`I32`_lanetype, `%`_dim{i#90494}(4)), `%X%`_shape{lanetype#22473, dim#22473, i#90499}(`F32`_lanetype, `%`_dim{i#90506}(4)), `RELAXED_TRUNC`_vcvtop__{sx#15583, `zero?#455`}(`U`_sx, ?()))] +[visit_exp shape_1#53] +[visit_id shape_1#53] +[visit_exp shape_2#53] +[visit_id shape_2#53] +[visit_exp (`%X%`_shape{lanetype#22461, dim#22461, i#90487}(`I32`_lanetype, `%`_dim{i#90494}(4)), `%X%`_shape{lanetype#22473, dim#22473, i#90499}(`F32`_lanetype, `%`_dim{i#90506}(4)), `RELAXED_TRUNC`_vcvtop__{sx#15583, `zero?#455`}(`U`_sx, ?()))] +[visit_exp `%X%`_shape{lanetype#22461, dim#22461, i#90487}(`I32`_lanetype, `%`_dim{i#90494}(4))] +[visit_exp lanetype#22461] +[visit_id lanetype#22461] +[visit_exp dim#22461] +[visit_id dim#22461] +[visit_exp i#90487] +[visit_id i#90487] +[visit_exp (`I32`_lanetype, `%`_dim{i#90494}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#90494}(4)] +[visit_exp i#90494] +[visit_id i#90494] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%X%`_shape{lanetype#22473, dim#22473, i#90499}(`F32`_lanetype, `%`_dim{i#90506}(4))] +[visit_exp lanetype#22473] +[visit_id lanetype#22473] +[visit_exp dim#22473] +[visit_id dim#22473] +[visit_exp i#90499] +[visit_id i#90499] +[visit_exp (`F32`_lanetype, `%`_dim{i#90506}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#90506}(4)] +[visit_exp i#90506] +[visit_id i#90506] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `RELAXED_TRUNC`_vcvtop__{sx#15583, `zero?#455`}(`U`_sx, ?())] +[visit_exp sx#15583] +[visit_id sx#15583] +[visit_exp `zero?#455`] +[visit_id zero?#455] +[visit_exp (`U`_sx, ?())] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp ?()] +[visit_exp `%`_u32{i#90480}(258)] +[visit_exp i#90480] +[visit_id i#90480] +[visit_exp (258)] +[visit_exp 258] +[check_dims] dim#22636 dim#22648 i#90800 i#90807 i#90814 i#90819 i#90826 lanetype#22636 lanetype#22648 shape_1#55 shape_2#55 sx#15647 zero?#519 +dims \ = dim#22636, dim#22648, i#90800, i#90807, i#90814, i#90819, i#90826, lanetype#22636, lanetype#22648, shape_1#55, shape_2#55, sx#15647, zero?#519 +[visit_exp `VCVTOP`_instr{shape_1#55, shape_2#55}(`%X%`_shape{lanetype#22636, dim#22636, i#90807}(`I32`_lanetype, `%`_dim{i#90814}(4)), `%X%`_shape{lanetype#22648, dim#22648, i#90819}(`F64`_lanetype, `%`_dim{i#90826}(2)), `RELAXED_TRUNC`_vcvtop__{sx#15647, `zero?#519`}(`S`_sx, ?(`ZERO`_zero)))] +[visit_exp shape_1#55] +[visit_id shape_1#55] +[visit_exp shape_2#55] +[visit_id shape_2#55] +[visit_exp (`%X%`_shape{lanetype#22636, dim#22636, i#90807}(`I32`_lanetype, `%`_dim{i#90814}(4)), `%X%`_shape{lanetype#22648, dim#22648, i#90819}(`F64`_lanetype, `%`_dim{i#90826}(2)), `RELAXED_TRUNC`_vcvtop__{sx#15647, `zero?#519`}(`S`_sx, ?(`ZERO`_zero)))] +[visit_exp `%X%`_shape{lanetype#22636, dim#22636, i#90807}(`I32`_lanetype, `%`_dim{i#90814}(4))] +[visit_exp lanetype#22636] +[visit_id lanetype#22636] +[visit_exp dim#22636] +[visit_id dim#22636] +[visit_exp i#90807] +[visit_id i#90807] +[visit_exp (`I32`_lanetype, `%`_dim{i#90814}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#90814}(4)] +[visit_exp i#90814] +[visit_id i#90814] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%X%`_shape{lanetype#22648, dim#22648, i#90819}(`F64`_lanetype, `%`_dim{i#90826}(2))] +[visit_exp lanetype#22648] +[visit_id lanetype#22648] +[visit_exp dim#22648] +[visit_id dim#22648] +[visit_exp i#90819] +[visit_id i#90819] +[visit_exp (`F64`_lanetype, `%`_dim{i#90826}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#90826}(2)] +[visit_exp i#90826] +[visit_id i#90826] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `RELAXED_TRUNC`_vcvtop__{sx#15647, `zero?#519`}(`S`_sx, ?(`ZERO`_zero))] +[visit_exp sx#15647] +[visit_id sx#15647] +[visit_exp `zero?#519`] +[visit_id zero?#519] +[visit_exp (`S`_sx, ?(`ZERO`_zero))] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp ?(`ZERO`_zero)] +[visit_exp `ZERO`_zero] +[visit_exp ()] +[visit_exp `%`_u32{i#90800}(259)] +[visit_exp i#90800] +[visit_id i#90800] +[visit_exp (259)] +[visit_exp 259] +[check_dims] dim#22811 dim#22823 i#91120 i#91127 i#91134 i#91139 i#91146 lanetype#22811 lanetype#22823 shape_1#57 shape_2#57 sx#15711 zero?#583 +dims \ = dim#22811, dim#22823, i#91120, i#91127, i#91134, i#91139, i#91146, lanetype#22811, lanetype#22823, shape_1#57, shape_2#57, sx#15711, zero?#583 +[visit_exp `VCVTOP`_instr{shape_1#57, shape_2#57}(`%X%`_shape{lanetype#22811, dim#22811, i#91127}(`I32`_lanetype, `%`_dim{i#91134}(4)), `%X%`_shape{lanetype#22823, dim#22823, i#91139}(`F64`_lanetype, `%`_dim{i#91146}(2)), `RELAXED_TRUNC`_vcvtop__{sx#15711, `zero?#583`}(`U`_sx, ?(`ZERO`_zero)))] +[visit_exp shape_1#57] +[visit_id shape_1#57] +[visit_exp shape_2#57] +[visit_id shape_2#57] +[visit_exp (`%X%`_shape{lanetype#22811, dim#22811, i#91127}(`I32`_lanetype, `%`_dim{i#91134}(4)), `%X%`_shape{lanetype#22823, dim#22823, i#91139}(`F64`_lanetype, `%`_dim{i#91146}(2)), `RELAXED_TRUNC`_vcvtop__{sx#15711, `zero?#583`}(`U`_sx, ?(`ZERO`_zero)))] +[visit_exp `%X%`_shape{lanetype#22811, dim#22811, i#91127}(`I32`_lanetype, `%`_dim{i#91134}(4))] +[visit_exp lanetype#22811] +[visit_id lanetype#22811] +[visit_exp dim#22811] +[visit_id dim#22811] +[visit_exp i#91127] +[visit_id i#91127] +[visit_exp (`I32`_lanetype, `%`_dim{i#91134}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#91134}(4)] +[visit_exp i#91134] +[visit_id i#91134] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%X%`_shape{lanetype#22823, dim#22823, i#91139}(`F64`_lanetype, `%`_dim{i#91146}(2))] +[visit_exp lanetype#22823] +[visit_id lanetype#22823] +[visit_exp dim#22823] +[visit_id dim#22823] +[visit_exp i#91139] +[visit_id i#91139] +[visit_exp (`F64`_lanetype, `%`_dim{i#91146}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#91146}(2)] +[visit_exp i#91146] +[visit_id i#91146] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `RELAXED_TRUNC`_vcvtop__{sx#15711, `zero?#583`}(`U`_sx, ?(`ZERO`_zero))] +[visit_exp sx#15711] +[visit_id sx#15711] +[visit_exp `zero?#583`] +[visit_id zero?#583] +[visit_exp (`U`_sx, ?(`ZERO`_zero))] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp ?(`ZERO`_zero)] +[visit_exp `ZERO`_zero] +[visit_exp ()] +[visit_exp `%`_u32{i#91120}(260)] +[visit_exp i#91120] +[visit_id i#91120] +[visit_exp (260)] +[visit_exp 260] +ps' = +[check_dims] +[check_dims] in +dims \ = in +[visit_exp in*{in <- `in*`}] +[scope_enter in] +[visit_exp in] +[visit_id in] not free +[visit_id in] not free +[scope_exit in] +[visit_exp `in*`] +[visit_id in*] no dims +[visit_id in*] +[scope_enter in] +[visit_exp in] +[visit_id in] not free +[visit_id in] not free +[scope_exit in] +[visit_exp `in*`] +[visit_id in*] not free +[visit_id in*] no dims +[check_dims] +ps' = (N : N, syntax en, grammar BX : en*) +[check_dims] N en +[check_dims] N en i#91425 i#91448 len +dims \ N = en, i#91425, i#91448, len +[visit_exp en*{en <- `en*`}] +[scope_enter en] +[visit_exp en] +[visit_id en] not free +[visit_id en] not free +[scope_exit en] +[visit_exp `en*`] +[visit_id en*] no dims +[visit_id en*] +[visit_exp `%`_byte{i#91425}(N)] +[visit_exp i#91425] +[visit_id i#91425] +[visit_exp (N)] +[visit_exp N] +[visit_id N] not free +[visit_id N] no dims +[visit_exp `%`_u32{i#91448}(len)] +[visit_exp i#91448] +[visit_id i#91448] +[visit_exp (len)] +[visit_exp len] +[visit_id len] +[visit_exp en*{en <- `en*`}] +[scope_enter en] +[visit_exp en] +[visit_id en] not free +[visit_id en] not free +[scope_exit en] +[visit_exp `en*`] +[visit_id en*] not free +[visit_id en*] no dims +[visit_exp (len = 0)] +[visit_exp len] +[visit_id len] not free +[visit_exp 0] +[check_dims] N +dims \ N = +[visit_exp []] +[visit_id N] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp []] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ((), ()).1] +[visit_exp ((), ())] +[visit_exp ()] +[visit_exp ()] +[visit_exp 0] +ps' = +[check_dims] +[check_dims] qt rectype#1727 +dims \ = qt, rectype#1727 +[visit_exp `TYPE`_type{rectype#1727}(qt)] +[visit_exp rectype#1727] +[visit_id rectype#1727] +[visit_exp (qt)] +[visit_exp qt] +[visit_id qt] +[visit_exp qt] +[visit_id qt] not free +ps' = +[check_dims] +[check_dims] ty +dims \ = ty +[visit_exp ty*{ty <- `ty*`}] +[scope_enter ty] +[visit_exp ty] +[visit_id ty] not free +[visit_id ty] not free +[scope_exit ty] +[visit_exp `ty*`] +[visit_id ty*] no dims +[visit_id ty*] +[visit_exp ty*{ty <- `ty*`}] +[scope_enter ty] +[visit_exp ty] +[visit_id ty] not free +[visit_id ty] not free +[scope_exit ty] +[visit_exp `ty*`] +[visit_id ty*] not free +[visit_id ty*] no dims +[visit_exp 1] +ps' = +[check_dims] +[check_dims] externtype#247 name#6185 nm_1 nm_2 xt +dims \ = externtype#247, name#6185, nm_1, nm_2, xt +[visit_exp `IMPORT`_import{name#6185, externtype#247}(nm_1, nm_2, xt)] +[visit_exp name#6185] +[visit_id name#6185] +[visit_exp externtype#247] +[visit_id externtype#247] +[visit_exp (nm_1, nm_2, xt)] +[visit_exp nm_1] +[visit_id nm_1] +[visit_exp nm_2] +[visit_id nm_2] +[visit_exp xt] +[visit_id xt] +[visit_exp nm_1] +[visit_id nm_1] not free +[visit_exp nm_2] +[visit_id nm_2] not free +[visit_exp xt] +[visit_id xt] not free +ps' = +[check_dims] +[check_dims] im +dims \ = im +[visit_exp im*{im <- `im*`}] +[scope_enter im] +[visit_exp im] +[visit_id im] not free +[visit_id im] not free +[scope_exit im] +[visit_exp `im*`] +[visit_id im*] no dims +[visit_id im*] +[visit_exp im*{im <- `im*`}] +[scope_enter im] +[visit_exp im] +[visit_id im] not free +[visit_id im] not free +[scope_exit im] +[visit_exp `im*`] +[visit_id im*] not free +[visit_id im*] no dims +[visit_exp 2] +ps' = +[check_dims] +[check_dims] x +dims \ = x +[visit_exp x*{x <- `x*`}] +[scope_enter x] +[visit_exp x] +[visit_id x] not free +[visit_id x] not free +[scope_exit x] +[visit_exp `x*`] +[visit_id x*] no dims +[visit_id x*] +[visit_exp x*{x <- `x*`}] +[scope_enter x] +[visit_exp x] +[visit_id x] not free +[visit_id x] not free +[scope_exit x] +[visit_exp `x*`] +[visit_id x*] not free +[visit_id x*] no dims +[visit_exp 3] +ps' = +[check_dims] +[check_dims] addrtype#1433 at expr#4835 heaptype#1729 heaptype#1741 ht lim limits#1433 null?#1675 reftype#3999 tabletype#1130 tt +dims \ = addrtype#1433, at, expr#4835, heaptype#1729, heaptype#1741, ht, lim, limits#1433, null?#1675, reftype#3999, tabletype#1130, tt +[visit_exp `TABLE`_table{tabletype#1130, expr#4835}(tt, [`REF.NULL`_instr{heaptype#1729}(ht)])] +[visit_exp tabletype#1130] +[visit_id tabletype#1130] +[visit_exp expr#4835] +[visit_id expr#4835] +[visit_exp (tt, [`REF.NULL`_instr{heaptype#1729}(ht)])] +[visit_exp tt] +[visit_id tt] +[visit_exp [`REF.NULL`_instr{heaptype#1729}(ht)]] +[visit_exp `REF.NULL`_instr{heaptype#1729}(ht)] +[visit_exp heaptype#1729] +[visit_id heaptype#1729] +[visit_exp (ht)] +[visit_exp ht] +[visit_id ht] +[visit_exp tt] +[visit_id tt] not free +[visit_exp (tt = `%%%`_tabletype{addrtype#1433, limits#1433, reftype#3999}(at, lim, `REF`_reftype{`null?#1675`, heaptype#1741}(`NULL`_null?{}, ht)))] +[visit_exp tt] +[visit_id tt] not free +[visit_exp `%%%`_tabletype{addrtype#1433, limits#1433, reftype#3999}(at, lim, `REF`_reftype{`null?#1675`, heaptype#1741}(`NULL`_null?{}, ht))] +[visit_exp addrtype#1433] +[visit_id addrtype#1433] +[visit_exp limits#1433] +[visit_id limits#1433] +[visit_exp reftype#3999] +[visit_id reftype#3999] +[visit_exp (at, lim, `REF`_reftype{`null?#1675`, heaptype#1741}(`NULL`_null?{}, ht))] +[visit_exp at] +[visit_id at] +[visit_exp lim] +[visit_id lim] +[visit_exp `REF`_reftype{`null?#1675`, heaptype#1741}(`NULL`_null?{}, ht)] +[visit_exp `null?#1675`] +[visit_id null?#1675] +[visit_exp heaptype#1741] +[visit_id heaptype#1741] +[visit_exp (`NULL`_null?{}, ht)] +[visit_exp `NULL`_null?{}] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp ht] +[visit_id ht] not free +[check_dims] e expr#4847 tabletype#1142 tt +dims \ = e, expr#4847, tabletype#1142, tt +[visit_exp `TABLE`_table{tabletype#1142, expr#4847}(tt, e)] +[visit_exp tabletype#1142] +[visit_id tabletype#1142] +[visit_exp expr#4847] +[visit_id expr#4847] +[visit_exp (tt, e)] +[visit_exp tt] +[visit_id tt] +[visit_exp e] +[visit_id e] +[visit_exp tt] +[visit_id tt] not free +[visit_exp e] +[visit_id e] not free +ps' = +[check_dims] +[check_dims] tab +dims \ = tab +[visit_exp tab*{tab <- `tab*`}] +[scope_enter tab] +[visit_exp tab] +[visit_id tab] not free +[visit_id tab] not free +[scope_exit tab] +[visit_exp `tab*`] +[visit_id tab*] no dims +[visit_id tab*] +[visit_exp tab*{tab <- `tab*`}] +[scope_enter tab] +[visit_exp tab] +[visit_id tab] not free +[visit_id tab] not free +[scope_exit tab] +[visit_exp `tab*`] +[visit_id tab*] not free +[visit_id tab*] no dims +[visit_exp 4] +ps' = +[check_dims] +[check_dims] memtype#734 mt +dims \ = memtype#734, mt +[visit_exp `MEMORY`_mem{memtype#734}(mt)] +[visit_exp memtype#734] +[visit_id memtype#734] +[visit_exp (mt)] +[visit_exp mt] +[visit_id mt] +[visit_exp mt] +[visit_id mt] not free +ps' = +[check_dims] +[check_dims] mem +dims \ = mem +[visit_exp mem*{mem <- `mem*`}] +[scope_enter mem] +[visit_exp mem] +[visit_id mem] not free +[visit_id mem] not free +[scope_exit mem] +[visit_exp `mem*`] +[visit_id mem*] no dims +[visit_id mem*] +[visit_exp mem*{mem <- `mem*`}] +[scope_enter mem] +[visit_exp mem] +[visit_id mem] not free +[visit_id mem] not free +[scope_exit mem] +[visit_exp `mem*`] +[visit_id mem*] not free +[visit_id mem*] no dims +[visit_exp 5] +ps' = +[check_dims] +[check_dims] e expr#4883 globaltype#2285 gt +dims \ = e, expr#4883, globaltype#2285, gt +[visit_exp `GLOBAL`_global{globaltype#2285, expr#4883}(gt, e)] +[visit_exp globaltype#2285] +[visit_id globaltype#2285] +[visit_exp expr#4883] +[visit_id expr#4883] +[visit_exp (gt, e)] +[visit_exp gt] +[visit_id gt] +[visit_exp e] +[visit_id e] +[visit_exp gt] +[visit_id gt] not free +[visit_exp e] +[visit_id e] not free +ps' = +[check_dims] +[check_dims] glob +dims \ = glob +[visit_exp glob*{glob <- `glob*`}] +[scope_enter glob] +[visit_exp glob] +[visit_id glob] not free +[visit_id glob] not free +[scope_exit glob] +[visit_exp `glob*`] +[visit_id glob*] no dims +[visit_id glob*] +[visit_exp glob*{glob <- `glob*`}] +[scope_enter glob] +[visit_exp glob] +[visit_id glob] not free +[visit_id glob] not free +[scope_exit glob] +[visit_exp `glob*`] +[visit_id glob*] not free +[visit_id glob*] no dims +[visit_exp 6] +ps' = +[check_dims] +[check_dims] externidx#5797 name#6238 nm xx +dims \ = externidx#5797, name#6238, nm, xx +[visit_exp `EXPORT`_export{name#6238, externidx#5797}(nm, xx)] +[visit_exp name#6238] +[visit_id name#6238] +[visit_exp externidx#5797] +[visit_id externidx#5797] +[visit_exp (nm, xx)] +[visit_exp nm] +[visit_id nm] +[visit_exp xx] +[visit_id xx] +[visit_exp nm] +[visit_id nm] not free +[visit_exp xx] +[visit_id xx] not free +ps' = +[check_dims] +[check_dims] ex +dims \ = ex +[visit_exp ex*{ex <- `ex*`}] +[scope_enter ex] +[visit_exp ex] +[visit_id ex] not free +[visit_id ex] not free +[scope_exit ex] +[visit_exp `ex*`] +[visit_id ex*] no dims +[visit_id ex*] +[visit_exp ex*{ex <- `ex*`}] +[scope_enter ex] +[visit_exp ex] +[visit_id ex] not free +[visit_id ex] not free +[scope_exit ex] +[visit_exp `ex*`] +[visit_id ex*] not free +[visit_id ex*] no dims +[visit_exp 7] +ps' = +[check_dims] +[check_dims] funcidx#3179 x +dims \ = funcidx#3179, x +[visit_exp [`START`_start{funcidx#3179}(x)]] +[visit_exp `START`_start{funcidx#3179}(x)] +[visit_exp funcidx#3179] +[visit_id funcidx#3179] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[check_dims] +ps' = +[check_dims] +[check_dims] startopt +dims \ = startopt +[visit_exp $opt_(syntax start, startopt)] +[visit_exp startopt] +[visit_id startopt] +[visit_exp startopt] +[visit_id startopt] not free +[visit_exp 8] +ps' = +[check_dims] +[check_dims] heaptype#1753 null?#1687 +dims \ = heaptype#1753, null?#1687 +[visit_exp `REF`_reftype{`null?#1687`, heaptype#1753}(?(`NULL`_null), `FUNC`_heaptype)] +[visit_exp `null?#1687`] +[visit_id null?#1687] +[visit_exp heaptype#1753] +[visit_id heaptype#1753] +[visit_exp (?(`NULL`_null), `FUNC`_heaptype)] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp `FUNC`_heaptype] +[visit_exp ()] +ps' = +[check_dims] +[check_dims] e_o elemmode#3307 expr#4909 expr*#3307 funcidx#3213 heaptype#1765 i#91592 i#91655 null?#1699 reftype#4023 tableidx#144 y +dims \ = e_o, elemmode#3307, expr#4909, expr*#3307, funcidx#3213, heaptype#1765, i#91592, i#91655, null?#1699, reftype#4023, tableidx#144, y +[visit_exp `ELEM`_elem{reftype#4023, `expr*#3307`, elemmode#3307}(`REF`_reftype{`null?#1699`, heaptype#1765}(?(), `FUNC`_heaptype), [`REF.FUNC`_instr{funcidx#3213}(y)*{funcidx#3213 <- `funcidx#3213*`, y <- `y*`}], `ACTIVE`_elemmode{tableidx#144, expr#4909}(`%`_tableidx{i#91655}(0), e_o))] +[visit_exp reftype#4023] +[visit_id reftype#4023] +[visit_exp `expr*#3307`] +[visit_id expr*#3307] +[visit_exp elemmode#3307] +[visit_id elemmode#3307] +[visit_exp (`REF`_reftype{`null?#1699`, heaptype#1765}(?(), `FUNC`_heaptype), [`REF.FUNC`_instr{funcidx#3213}(y)*{funcidx#3213 <- `funcidx#3213*`, y <- `y*`}], `ACTIVE`_elemmode{tableidx#144, expr#4909}(`%`_tableidx{i#91655}(0), e_o))] +[visit_exp `REF`_reftype{`null?#1699`, heaptype#1765}(?(), `FUNC`_heaptype)] +[visit_exp `null?#1699`] +[visit_id null?#1699] +[visit_exp heaptype#1765] +[visit_id heaptype#1765] +[visit_exp (?(), `FUNC`_heaptype)] +[visit_exp ?()] +[visit_exp `FUNC`_heaptype] +[visit_exp ()] +[visit_exp [`REF.FUNC`_instr{funcidx#3213}(y)*{funcidx#3213 <- `funcidx#3213*`, y <- `y*`}]] +[visit_exp `REF.FUNC`_instr{funcidx#3213}(y)*{funcidx#3213 <- `funcidx#3213*`, y <- `y*`}] +[scope_enter funcidx#3213] +[scope_enter y] +[visit_exp `REF.FUNC`_instr{funcidx#3213}(y)] +[visit_exp funcidx#3213] +[visit_id funcidx#3213] not free +[visit_exp (y)] +[visit_exp y] +[visit_id y] not free +[visit_id funcidx#3213] not free +[visit_id y] not free +[scope_exit y] +[scope_exit funcidx#3213] +[visit_exp `funcidx#3213*`] +[visit_id funcidx#3213*] no dims +[visit_id funcidx#3213*] +[visit_exp `y*`] +[visit_id y*] no dims +[visit_id y*] +[visit_exp `ACTIVE`_elemmode{tableidx#144, expr#4909}(`%`_tableidx{i#91655}(0), e_o)] +[visit_exp tableidx#144] +[visit_id tableidx#144] +[visit_exp expr#4909] +[visit_id expr#4909] +[visit_exp (`%`_tableidx{i#91655}(0), e_o)] +[visit_exp `%`_tableidx{i#91655}(0)] +[visit_exp i#91655] +[visit_id i#91655] +[visit_exp (0)] +[visit_exp 0] +[visit_exp e_o] +[visit_id e_o] +[visit_exp `%`_u32{i#91592}(0)] +[visit_exp i#91592] +[visit_id i#91592] +[visit_exp (0)] +[visit_exp 0] +[visit_exp e_o] +[visit_id e_o] not free +[visit_exp y*{y <- `y*`}] +[scope_enter y] +[visit_exp y] +[visit_id y] not free +[visit_id y] not free +[scope_exit y] +[visit_exp `y*`] +[visit_id y*] not free +[visit_id y*] no dims +[check_dims] elemmode#3319 expr*#3319 funcidx#3215 i#91678 reftype#4035 rt y +dims \ = elemmode#3319, expr*#3319, funcidx#3215, i#91678, reftype#4035, rt, y +[visit_exp `ELEM`_elem{reftype#4035, `expr*#3319`, elemmode#3319}(rt, [`REF.FUNC`_instr{funcidx#3215}(y)*{funcidx#3215 <- `funcidx#3215*`, y <- `y*`}], `PASSIVE`_elemmode)] +[visit_exp reftype#4035] +[visit_id reftype#4035] +[visit_exp `expr*#3319`] +[visit_id expr*#3319] +[visit_exp elemmode#3319] +[visit_id elemmode#3319] +[visit_exp (rt, [`REF.FUNC`_instr{funcidx#3215}(y)*{funcidx#3215 <- `funcidx#3215*`, y <- `y*`}], `PASSIVE`_elemmode)] +[visit_exp rt] +[visit_id rt] +[visit_exp [`REF.FUNC`_instr{funcidx#3215}(y)*{funcidx#3215 <- `funcidx#3215*`, y <- `y*`}]] +[visit_exp `REF.FUNC`_instr{funcidx#3215}(y)*{funcidx#3215 <- `funcidx#3215*`, y <- `y*`}] +[scope_enter funcidx#3215] +[scope_enter y] +[visit_exp `REF.FUNC`_instr{funcidx#3215}(y)] +[visit_exp funcidx#3215] +[visit_id funcidx#3215] not free +[visit_exp (y)] +[visit_exp y] +[visit_id y] not free +[visit_id funcidx#3215] not free +[visit_id y] not free +[scope_exit y] +[scope_exit funcidx#3215] +[visit_exp `funcidx#3215*`] +[visit_id funcidx#3215*] no dims +[visit_id funcidx#3215*] +[visit_exp `y*`] +[visit_id y*] no dims +[visit_id y*] +[visit_exp `PASSIVE`_elemmode] +[visit_exp ()] +[visit_exp `%`_u32{i#91678}(1)] +[visit_exp i#91678] +[visit_id i#91678] +[visit_exp (1)] +[visit_exp 1] +[visit_exp rt] +[visit_id rt] not free +[visit_exp y*{y <- `y*`}] +[scope_enter y] +[visit_exp y] +[visit_id y] not free +[visit_id y] not free +[scope_exit y] +[visit_exp `y*`] +[visit_id y*] not free +[visit_id y*] no dims +[check_dims] e elemmode#3331 expr#4911 expr*#3331 funcidx#3217 i#91742 reftype#4047 rt tableidx#146 x y +dims \ = e, elemmode#3331, expr#4911, expr*#3331, funcidx#3217, i#91742, reftype#4047, rt, tableidx#146, x, y +[visit_exp `ELEM`_elem{reftype#4047, `expr*#3331`, elemmode#3331}(rt, [`REF.FUNC`_instr{funcidx#3217}(y)*{funcidx#3217 <- `funcidx#3217*`, y <- `y*`}], `ACTIVE`_elemmode{tableidx#146, expr#4911}(x, e))] +[visit_exp reftype#4047] +[visit_id reftype#4047] +[visit_exp `expr*#3331`] +[visit_id expr*#3331] +[visit_exp elemmode#3331] +[visit_id elemmode#3331] +[visit_exp (rt, [`REF.FUNC`_instr{funcidx#3217}(y)*{funcidx#3217 <- `funcidx#3217*`, y <- `y*`}], `ACTIVE`_elemmode{tableidx#146, expr#4911}(x, e))] +[visit_exp rt] +[visit_id rt] +[visit_exp [`REF.FUNC`_instr{funcidx#3217}(y)*{funcidx#3217 <- `funcidx#3217*`, y <- `y*`}]] +[visit_exp `REF.FUNC`_instr{funcidx#3217}(y)*{funcidx#3217 <- `funcidx#3217*`, y <- `y*`}] +[scope_enter funcidx#3217] +[scope_enter y] +[visit_exp `REF.FUNC`_instr{funcidx#3217}(y)] +[visit_exp funcidx#3217] +[visit_id funcidx#3217] not free +[visit_exp (y)] +[visit_exp y] +[visit_id y] not free +[visit_id funcidx#3217] not free +[visit_id y] not free +[scope_exit y] +[scope_exit funcidx#3217] +[visit_exp `funcidx#3217*`] +[visit_id funcidx#3217*] no dims +[visit_id funcidx#3217*] +[visit_exp `y*`] +[visit_id y*] no dims +[visit_id y*] +[visit_exp `ACTIVE`_elemmode{tableidx#146, expr#4911}(x, e)] +[visit_exp tableidx#146] +[visit_id tableidx#146] +[visit_exp expr#4911] +[visit_id expr#4911] +[visit_exp (x, e)] +[visit_exp x] +[visit_id x] +[visit_exp e] +[visit_id e] +[visit_exp `%`_u32{i#91742}(2)] +[visit_exp i#91742] +[visit_id i#91742] +[visit_exp (2)] +[visit_exp 2] +[visit_exp x] +[visit_id x] not free +[visit_exp e] +[visit_id e] not free +[visit_exp rt] +[visit_id rt] not free +[visit_exp y*{y <- `y*`}] +[scope_enter y] +[visit_exp y] +[visit_id y] not free +[visit_id y] not free +[scope_exit y] +[visit_exp `y*`] +[visit_id y*] not free +[visit_id y*] no dims +[check_dims] elemmode#3343 expr*#3343 funcidx#3219 i#91837 reftype#4059 rt y +dims \ = elemmode#3343, expr*#3343, funcidx#3219, i#91837, reftype#4059, rt, y +[visit_exp `ELEM`_elem{reftype#4059, `expr*#3343`, elemmode#3343}(rt, [`REF.FUNC`_instr{funcidx#3219}(y)*{funcidx#3219 <- `funcidx#3219*`, y <- `y*`}], `DECLARE`_elemmode)] +[visit_exp reftype#4059] +[visit_id reftype#4059] +[visit_exp `expr*#3343`] +[visit_id expr*#3343] +[visit_exp elemmode#3343] +[visit_id elemmode#3343] +[visit_exp (rt, [`REF.FUNC`_instr{funcidx#3219}(y)*{funcidx#3219 <- `funcidx#3219*`, y <- `y*`}], `DECLARE`_elemmode)] +[visit_exp rt] +[visit_id rt] +[visit_exp [`REF.FUNC`_instr{funcidx#3219}(y)*{funcidx#3219 <- `funcidx#3219*`, y <- `y*`}]] +[visit_exp `REF.FUNC`_instr{funcidx#3219}(y)*{funcidx#3219 <- `funcidx#3219*`, y <- `y*`}] +[scope_enter funcidx#3219] +[scope_enter y] +[visit_exp `REF.FUNC`_instr{funcidx#3219}(y)] +[visit_exp funcidx#3219] +[visit_id funcidx#3219] not free +[visit_exp (y)] +[visit_exp y] +[visit_id y] not free +[visit_id funcidx#3219] not free +[visit_id y] not free +[scope_exit y] +[scope_exit funcidx#3219] +[visit_exp `funcidx#3219*`] +[visit_id funcidx#3219*] no dims +[visit_id funcidx#3219*] +[visit_exp `y*`] +[visit_id y*] no dims +[visit_id y*] +[visit_exp `DECLARE`_elemmode] +[visit_exp ()] +[visit_exp `%`_u32{i#91837}(3)] +[visit_exp i#91837] +[visit_id i#91837] +[visit_exp (3)] +[visit_exp 3] +[visit_exp rt] +[visit_id rt] not free +[visit_exp y*{y <- `y*`}] +[scope_enter y] +[visit_exp y] +[visit_id y] not free +[visit_id y] not free +[scope_exit y] +[visit_exp `y*`] +[visit_id y*] not free +[visit_id y*] no dims +[check_dims] e e_O elemmode#3355 expr#4913 expr*#3355 heaptype#1813 i#91901 i#91925 null?#1747 reftype#4071 tableidx#148 +dims \ = e, e_O, elemmode#3355, expr#4913, expr*#3355, heaptype#1813, i#91901, i#91925, null?#1747, reftype#4071, tableidx#148 +[visit_exp `ELEM`_elem{reftype#4071, `expr*#3355`, elemmode#3355}(`REF`_reftype{`null?#1747`, heaptype#1813}(?(`NULL`_null), `FUNC`_heaptype), e*{e <- `e*`}, `ACTIVE`_elemmode{tableidx#148, expr#4913}(`%`_tableidx{i#91925}(0), e_O))] +[visit_exp reftype#4071] +[visit_id reftype#4071] +[visit_exp `expr*#3355`] +[visit_id expr*#3355] +[visit_exp elemmode#3355] +[visit_id elemmode#3355] +[visit_exp (`REF`_reftype{`null?#1747`, heaptype#1813}(?(`NULL`_null), `FUNC`_heaptype), e*{e <- `e*`}, `ACTIVE`_elemmode{tableidx#148, expr#4913}(`%`_tableidx{i#91925}(0), e_O))] +[visit_exp `REF`_reftype{`null?#1747`, heaptype#1813}(?(`NULL`_null), `FUNC`_heaptype)] +[visit_exp `null?#1747`] +[visit_id null?#1747] +[visit_exp heaptype#1813] +[visit_id heaptype#1813] +[visit_exp (?(`NULL`_null), `FUNC`_heaptype)] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp `FUNC`_heaptype] +[visit_exp ()] +[visit_exp e*{e <- `e*`}] +[scope_enter e] +[visit_exp e] +[visit_id e] not free +[visit_id e] not free +[scope_exit e] +[visit_exp `e*`] +[visit_id e*] no dims +[visit_id e*] +[visit_exp `ACTIVE`_elemmode{tableidx#148, expr#4913}(`%`_tableidx{i#91925}(0), e_O)] +[visit_exp tableidx#148] +[visit_id tableidx#148] +[visit_exp expr#4913] +[visit_id expr#4913] +[visit_exp (`%`_tableidx{i#91925}(0), e_O)] +[visit_exp `%`_tableidx{i#91925}(0)] +[visit_exp i#91925] +[visit_id i#91925] +[visit_exp (0)] +[visit_exp 0] +[visit_exp e_O] +[visit_id e_O] +[visit_exp `%`_u32{i#91901}(4)] +[visit_exp i#91901] +[visit_id i#91901] +[visit_exp (4)] +[visit_exp 4] +[visit_exp e_O] +[visit_id e_O] not free +[visit_exp e*{e <- `e*`}] +[scope_enter e] +[visit_exp e] +[visit_id e] not free +[visit_id e] not free +[scope_exit e] +[visit_exp `e*`] +[visit_id e*] not free +[visit_id e*] no dims +[check_dims] e elemmode#3367 expr*#3367 i#91948 reftype#4083 rt +dims \ = e, elemmode#3367, expr*#3367, i#91948, reftype#4083, rt +[visit_exp `ELEM`_elem{reftype#4083, `expr*#3367`, elemmode#3367}(rt, e*{e <- `e*`}, `PASSIVE`_elemmode)] +[visit_exp reftype#4083] +[visit_id reftype#4083] +[visit_exp `expr*#3367`] +[visit_id expr*#3367] +[visit_exp elemmode#3367] +[visit_id elemmode#3367] +[visit_exp (rt, e*{e <- `e*`}, `PASSIVE`_elemmode)] +[visit_exp rt] +[visit_id rt] +[visit_exp e*{e <- `e*`}] +[scope_enter e] +[visit_exp e] +[visit_id e] not free +[visit_id e] not free +[scope_exit e] +[visit_exp `e*`] +[visit_id e*] no dims +[visit_id e*] +[visit_exp `PASSIVE`_elemmode] +[visit_exp ()] +[visit_exp `%`_u32{i#91948}(5)] +[visit_exp i#91948] +[visit_id i#91948] +[visit_exp (5)] +[visit_exp 5] +[visit_exp rt] +[visit_id rt] not free +[visit_exp e*{e <- `e*`}] +[scope_enter e] +[visit_exp e] +[visit_id e] not free +[visit_id e] not free +[scope_exit e] +[visit_exp `e*`] +[visit_id e*] not free +[visit_id e*] no dims +[check_dims] e e_O elemmode#3379 expr#4915 expr*#3379 heaptype#1837 i#91973 null?#1771 reftype#4095 tableidx#150 x +dims \ = e, e_O, elemmode#3379, expr#4915, expr*#3379, heaptype#1837, i#91973, null?#1771, reftype#4095, tableidx#150, x +[visit_exp `ELEM`_elem{reftype#4095, `expr*#3379`, elemmode#3379}(`REF`_reftype{`null?#1771`, heaptype#1837}(?(`NULL`_null), `FUNC`_heaptype), e*{e <- `e*`}, `ACTIVE`_elemmode{tableidx#150, expr#4915}(x, e_O))] +[visit_exp reftype#4095] +[visit_id reftype#4095] +[visit_exp `expr*#3379`] +[visit_id expr*#3379] +[visit_exp elemmode#3379] +[visit_id elemmode#3379] +[visit_exp (`REF`_reftype{`null?#1771`, heaptype#1837}(?(`NULL`_null), `FUNC`_heaptype), e*{e <- `e*`}, `ACTIVE`_elemmode{tableidx#150, expr#4915}(x, e_O))] +[visit_exp `REF`_reftype{`null?#1771`, heaptype#1837}(?(`NULL`_null), `FUNC`_heaptype)] +[visit_exp `null?#1771`] +[visit_id null?#1771] +[visit_exp heaptype#1837] +[visit_id heaptype#1837] +[visit_exp (?(`NULL`_null), `FUNC`_heaptype)] +[visit_exp ?(`NULL`_null)] +[visit_exp `NULL`_null] +[visit_exp ()] +[visit_exp `FUNC`_heaptype] +[visit_exp ()] +[visit_exp e*{e <- `e*`}] +[scope_enter e] +[visit_exp e] +[visit_id e] not free +[visit_id e] not free +[scope_exit e] +[visit_exp `e*`] +[visit_id e*] no dims +[visit_id e*] +[visit_exp `ACTIVE`_elemmode{tableidx#150, expr#4915}(x, e_O)] +[visit_exp tableidx#150] +[visit_id tableidx#150] +[visit_exp expr#4915] +[visit_id expr#4915] +[visit_exp (x, e_O)] +[visit_exp x] +[visit_id x] +[visit_exp e_O] +[visit_id e_O] +[visit_exp `%`_u32{i#91973}(6)] +[visit_exp i#91973] +[visit_id i#91973] +[visit_exp (6)] +[visit_exp 6] +[visit_exp x] +[visit_id x] not free +[visit_exp e_O] +[visit_id e_O] not free +[visit_exp e*{e <- `e*`}] +[scope_enter e] +[visit_exp e] +[visit_id e] not free +[visit_id e] not free +[scope_exit e] +[visit_exp `e*`] +[visit_id e*] not free +[visit_id e*] no dims +[check_dims] e elemmode#3391 expr*#3391 i#92029 reftype#4107 rt +dims \ = e, elemmode#3391, expr*#3391, i#92029, reftype#4107, rt +[visit_exp `ELEM`_elem{reftype#4107, `expr*#3391`, elemmode#3391}(rt, e*{e <- `e*`}, `DECLARE`_elemmode)] +[visit_exp reftype#4107] +[visit_id reftype#4107] +[visit_exp `expr*#3391`] +[visit_id expr*#3391] +[visit_exp elemmode#3391] +[visit_id elemmode#3391] +[visit_exp (rt, e*{e <- `e*`}, `DECLARE`_elemmode)] +[visit_exp rt] +[visit_id rt] +[visit_exp e*{e <- `e*`}] +[scope_enter e] +[visit_exp e] +[visit_id e] not free +[visit_id e] not free +[scope_exit e] +[visit_exp `e*`] +[visit_id e*] no dims +[visit_id e*] +[visit_exp `DECLARE`_elemmode] +[visit_exp ()] +[visit_exp `%`_u32{i#92029}(7)] +[visit_exp i#92029] +[visit_id i#92029] +[visit_exp (7)] +[visit_exp 7] +[visit_exp rt] +[visit_id rt] not free +[visit_exp e*{e <- `e*`}] +[scope_enter e] +[visit_exp e] +[visit_id e] not free +[visit_id e] not free +[scope_exit e] +[visit_exp `e*`] +[visit_id e*] not free +[visit_id e*] no dims +ps' = +[check_dims] +[check_dims] elem +dims \ = elem +[visit_exp elem*{elem <- `elem*`}] +[scope_enter elem] +[visit_exp elem] +[visit_id elem] not free +[visit_id elem] not free +[scope_exit elem] +[visit_exp `elem*`] +[visit_id elem*] no dims +[visit_id elem*] +[visit_exp elem*{elem <- `elem*`}] +[scope_enter elem] +[visit_exp elem] +[visit_id elem] not free +[visit_id elem] not free +[scope_exit elem] +[visit_exp `elem*`] +[visit_id elem*] not free +[visit_id elem*] no dims +[visit_exp 9] +[check_dims] +ps' = +[check_dims] +[check_dims] i#92056 n t valtype#1033 +dims \ = i#92056, n, t, valtype#1033 +[visit_exp `LOCAL`_local{valtype#1033}(t)^n{valtype#1033 <- `valtype#1033*`}] +[scope_enter valtype#1033] +[visit_exp `LOCAL`_local{valtype#1033}(t)] +[visit_exp valtype#1033] +[visit_id valtype#1033] not free +[visit_exp (t)] +[visit_exp t] +[visit_id t] +[visit_id valtype#1033] not free +[scope_exit valtype#1033] +[visit_exp n] +[visit_id n] +[visit_exp `valtype#1033*`] +[visit_id valtype#1033*] no dims +[visit_id valtype#1033*] +[visit_exp `%`_u32{i#92056}(n)] +[visit_exp i#92056] +[visit_id i#92056] +[visit_exp (n)] +[visit_exp n] +[visit_id n] not free +[visit_exp t] +[visit_id t] not free +ps' = +[check_dims] +[check_dims] e loc +dims \ = e, loc +[visit_exp ($concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e)] +[visit_exp $concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`})] +[visit_exp loc*{loc <- `loc*`}*{`loc*` <- `loc**`}] +[scope_enter loc*] +[visit_exp loc*{loc <- `loc*`}] +[scope_enter loc] +[visit_exp loc] +[visit_id loc] not free +[visit_id loc] not free +[scope_exit loc] +[visit_exp `loc*`] +[visit_id loc*] not free +[visit_id loc*] no dims +[visit_id loc*] not free +[visit_id loc*] no dims +[scope_exit loc*] +[visit_exp `loc**`] +[visit_id loc**] no dims +[visit_id loc**] +[visit_exp e] +[visit_id e] +[visit_exp loc*{loc <- `loc*`}*{`loc*` <- `loc**`}] +[scope_enter loc*] +[visit_exp loc*{loc <- `loc*`}] +[scope_enter loc] +[visit_exp loc] +[visit_id loc] not free +[visit_id loc] not free +[scope_exit loc] +[visit_exp `loc*`] +[visit_id loc*] not free +[visit_id loc*] no dims +[visit_id loc*] not free +[visit_id loc*] no dims +[scope_exit loc*] +[visit_exp `loc**`] +[visit_id loc**] not free +[visit_id loc**] no dims +[visit_exp e] +[visit_id e] not free +[visit_exp (|$concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`})| < (2 ^ 32))] +[visit_exp |$concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`})|] +[visit_exp $concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`})] +[visit_exp loc*{loc <- `loc*`}*{`loc*` <- `loc**`}] +[scope_enter loc*] +[visit_exp loc*{loc <- `loc*`}] +[scope_enter loc] +[visit_exp loc] +[visit_id loc] not free +[visit_id loc] not free +[scope_exit loc] +[visit_exp `loc*`] +[visit_id loc*] not free +[visit_id loc*] no dims +[visit_id loc*] not free +[visit_id loc*] no dims +[scope_exit loc*] +[visit_exp `loc**`] +[visit_id loc**] not free +[visit_id loc**] no dims +[visit_exp (2 ^ 32)] +[visit_exp 2] +[visit_exp 32] +ps' = +[check_dims] +[check_dims] code i#92081 len +dims \ = code, i#92081, len +[visit_exp code] +[visit_id code] +[visit_exp `%`_u32{i#92081}(len)] +[visit_exp i#92081] +[visit_id i#92081] +[visit_exp (len)] +[visit_exp len] +[visit_id len] +[visit_exp code] +[visit_id code] not free +[visit_exp (len = 0)] +[visit_exp len] +[visit_id len] not free +[visit_exp 0] +ps' = +[check_dims] +[check_dims] code +dims \ = code +[visit_exp code*{code <- `code*`}] +[scope_enter code] +[visit_exp code] +[visit_id code] not free +[visit_id code] not free +[scope_exit code] +[visit_exp `code*`] +[visit_id code*] no dims +[visit_id code*] +[visit_exp code*{code <- `code*`}] +[scope_enter code] +[visit_exp code] +[visit_id code] not free +[visit_id code] not free +[scope_exit code] +[visit_exp `code*`] +[visit_id code*] not free +[visit_id code*] no dims +[visit_exp 10] +ps' = +[check_dims] +[check_dims] b byte*#2217 datamode#2181 e expr#4917 i#92106 i#92154 memidx#272 +dims \ = b, byte*#2217, datamode#2181, e, expr#4917, i#92106, i#92154, memidx#272 +[visit_exp `DATA`_data{`byte*#2217`, datamode#2181}(b*{b <- `b*`}, `ACTIVE`_datamode{memidx#272, expr#4917}(`%`_memidx{i#92154}(0), e))] +[visit_exp `byte*#2217`] +[visit_id byte*#2217] +[visit_exp datamode#2181] +[visit_id datamode#2181] +[visit_exp (b*{b <- `b*`}, `ACTIVE`_datamode{memidx#272, expr#4917}(`%`_memidx{i#92154}(0), e))] +[visit_exp b*{b <- `b*`}] +[scope_enter b] +[visit_exp b] +[visit_id b] not free +[visit_id b] not free +[scope_exit b] +[visit_exp `b*`] +[visit_id b*] no dims +[visit_id b*] +[visit_exp `ACTIVE`_datamode{memidx#272, expr#4917}(`%`_memidx{i#92154}(0), e)] +[visit_exp memidx#272] +[visit_id memidx#272] +[visit_exp expr#4917] +[visit_id expr#4917] +[visit_exp (`%`_memidx{i#92154}(0), e)] +[visit_exp `%`_memidx{i#92154}(0)] +[visit_exp i#92154] +[visit_id i#92154] +[visit_exp (0)] +[visit_exp 0] +[visit_exp e] +[visit_id e] +[visit_exp `%`_u32{i#92106}(0)] +[visit_exp i#92106] +[visit_id i#92106] +[visit_exp (0)] +[visit_exp 0] +[visit_exp e] +[visit_id e] not free +[visit_exp b*{b <- `b*`}] +[scope_enter b] +[visit_exp b] +[visit_id b] not free +[visit_id b] not free +[scope_exit b] +[visit_exp `b*`] +[visit_id b*] not free +[visit_id b*] no dims +[check_dims] b byte*#2229 datamode#2193 i#92177 +dims \ = b, byte*#2229, datamode#2193, i#92177 +[visit_exp `DATA`_data{`byte*#2229`, datamode#2193}(b*{b <- `b*`}, `PASSIVE`_datamode)] +[visit_exp `byte*#2229`] +[visit_id byte*#2229] +[visit_exp datamode#2193] +[visit_id datamode#2193] +[visit_exp (b*{b <- `b*`}, `PASSIVE`_datamode)] +[visit_exp b*{b <- `b*`}] +[scope_enter b] +[visit_exp b] +[visit_id b] not free +[visit_id b] not free +[scope_exit b] +[visit_exp `b*`] +[visit_id b*] no dims +[visit_id b*] +[visit_exp `PASSIVE`_datamode] +[visit_exp ()] +[visit_exp `%`_u32{i#92177}(1)] +[visit_exp i#92177] +[visit_id i#92177] +[visit_exp (1)] +[visit_exp 1] +[visit_exp b*{b <- `b*`}] +[scope_enter b] +[visit_exp b] +[visit_id b] not free +[visit_id b] not free +[scope_exit b] +[visit_exp `b*`] +[visit_id b*] not free +[visit_id b*] no dims +[check_dims] b byte*#2241 datamode#2205 e expr#4919 i#92226 memidx#274 x +dims \ = b, byte*#2241, datamode#2205, e, expr#4919, i#92226, memidx#274, x +[visit_exp `DATA`_data{`byte*#2241`, datamode#2205}(b*{b <- `b*`}, `ACTIVE`_datamode{memidx#274, expr#4919}(x, e))] +[visit_exp `byte*#2241`] +[visit_id byte*#2241] +[visit_exp datamode#2205] +[visit_id datamode#2205] +[visit_exp (b*{b <- `b*`}, `ACTIVE`_datamode{memidx#274, expr#4919}(x, e))] +[visit_exp b*{b <- `b*`}] +[scope_enter b] +[visit_exp b] +[visit_id b] not free +[visit_id b] not free +[scope_exit b] +[visit_exp `b*`] +[visit_id b*] no dims +[visit_id b*] +[visit_exp `ACTIVE`_datamode{memidx#274, expr#4919}(x, e)] +[visit_exp memidx#274] +[visit_id memidx#274] +[visit_exp expr#4919] +[visit_id expr#4919] +[visit_exp (x, e)] +[visit_exp x] +[visit_id x] +[visit_exp e] +[visit_id e] +[visit_exp `%`_u32{i#92226}(2)] +[visit_exp i#92226] +[visit_id i#92226] +[visit_exp (2)] +[visit_exp 2] +[visit_exp x] +[visit_id x] not free +[visit_exp e] +[visit_id e] not free +[visit_exp b*{b <- `b*`}] +[scope_enter b] +[visit_exp b] +[visit_id b] not free +[visit_id b] not free +[scope_exit b] +[visit_exp `b*`] +[visit_id b*] not free +[visit_id b*] no dims +ps' = +[check_dims] +[check_dims] data +dims \ = data +[visit_exp data*{data <- `data*`}] +[scope_enter data] +[visit_exp data] +[visit_id data] not free +[visit_id data] not free +[scope_exit data] +[visit_exp `data*`] +[visit_id data*] no dims +[visit_id data*] +[visit_exp data*{data <- `data*`}] +[scope_enter data] +[visit_exp data] +[visit_id data] not free +[visit_id data] not free +[scope_exit data] +[visit_exp `data*`] +[visit_id data*] not free +[visit_id data*] no dims +[visit_exp 11] +ps' = +[check_dims] +[check_dims] i#92308 i#92330 n +dims \ = i#92308, i#92330, n +[visit_exp [`%`_u32{i#92330}(n)]] +[visit_exp `%`_u32{i#92330}(n)] +[visit_exp i#92330] +[visit_id i#92330] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `%`_u32{i#92308}(n)] +[visit_exp i#92308] +[visit_id i#92308] +[visit_exp (n)] +[visit_exp n] +[visit_id n] not free +[check_dims] +ps' = +[check_dims] +[check_dims] nopt +dims \ = nopt +[visit_exp $opt_(syntax u32, nopt)] +[visit_exp nopt] +[visit_id nopt] +[visit_exp nopt] +[visit_id nopt] not free +[visit_exp 12] +ps' = +[check_dims] +[check_dims] jt tagtype#336 +dims \ = jt, tagtype#336 +[visit_exp `TAG`_tag{tagtype#336}(jt)] +[visit_exp tagtype#336] +[visit_id tagtype#336] +[visit_exp (jt)] +[visit_exp jt] +[visit_id jt] +[visit_exp jt] +[visit_id jt] not free +ps' = +[check_dims] +[check_dims] tag +dims \ = tag +[visit_exp tag*{tag <- `tag*`}] +[scope_enter tag] +[visit_exp tag] +[visit_id tag] not free +[visit_id tag] not free +[scope_exit tag] +[visit_exp `tag*`] +[visit_id tag*] no dims +[visit_id tag*] +[visit_exp tag*{tag <- `tag*`}] +[scope_enter tag] +[visit_exp tag] +[visit_id tag] not free +[visit_id tag] not free +[scope_exit tag] +[visit_exp `tag*`] +[visit_id tag*] not free +[visit_id tag*] no dims +[visit_exp 13] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ((), ()).1] +[visit_exp ((), ())] +[visit_exp ()] +[visit_exp ()] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ((), ()).1] +[visit_exp ((), ())] +[visit_exp ()] +[visit_exp ()] +ps' = +[check_dims] +[check_dims] data data*#143 elem elem*#167 export export*#143 expr expr#5253 func func*#143 global global*#167 i#92509 import import*#143 local local*#1601 mem mem*#167 n start start?#143 table table*#167 tag tag*#143 type type*#143 typeidx typeidx#2117 +dims \ = data, data*#143, elem, elem*#167, export, export*#143, expr, expr#5253, func, func*#143, global, global*#167, i#92509, import, import*#143, local, local*#1601, mem, mem*#167, n, start, start?#143, table, table*#167, tag, tag*#143, type, type*#143, typeidx, typeidx#2117 +[visit_exp `MODULE`_module{`type*#143`, `import*#143`, `tag*#143`, `global*#167`, `mem*#167`, `table*#167`, `func*#143`, `data*#143`, `elem*#167`, `start?#143`, `export*#143`}(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*`})] +[visit_exp `type*#143`] +[visit_id type*#143] +[visit_exp `import*#143`] +[visit_id import*#143] +[visit_exp `tag*#143`] +[visit_id tag*#143] +[visit_exp `global*#167`] +[visit_id global*#167] +[visit_exp `mem*#167`] +[visit_id mem*#167] +[visit_exp `table*#167`] +[visit_id table*#167] +[visit_exp `func*#143`] +[visit_id func*#143] +[visit_exp `data*#143`] +[visit_id data*#143] +[visit_exp `elem*#167`] +[visit_id elem*#167] +[visit_exp `start?#143`] +[visit_id start?#143] +[visit_exp `export*#143`] +[visit_id export*#143] +[visit_exp (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*`})] +[visit_exp type*{type <- `type*`}] +[scope_enter type] +[visit_exp type] +[visit_id type] not free +[visit_id type] not free +[scope_exit type] +[visit_exp `type*`] +[visit_id type*] no dims +[visit_id type*] +[visit_exp import*{import <- `import*`}] +[scope_enter import] +[visit_exp import] +[visit_id import] not free +[visit_id import] not free +[scope_exit import] +[visit_exp `import*`] +[visit_id import*] no dims +[visit_id import*] +[visit_exp tag*{tag <- `tag*`}] +[scope_enter tag] +[visit_exp tag] +[visit_id tag] not free +[visit_id tag] not free +[scope_exit tag] +[visit_exp `tag*`] +[visit_id tag*] no dims +[visit_id tag*] +[visit_exp global*{global <- `global*`}] +[scope_enter global] +[visit_exp global] +[visit_id global] not free +[visit_id global] not free +[scope_exit global] +[visit_exp `global*`] +[visit_id global*] no dims +[visit_id global*] +[visit_exp mem*{mem <- `mem*`}] +[scope_enter mem] +[visit_exp mem] +[visit_id mem] not free +[visit_id mem] not free +[scope_exit mem] +[visit_exp `mem*`] +[visit_id mem*] no dims +[visit_id mem*] +[visit_exp table*{table <- `table*`}] +[scope_enter table] +[visit_exp table] +[visit_id table] not free +[visit_id table] not free +[scope_exit table] +[visit_exp `table*`] +[visit_id table*] no dims +[visit_id table*] +[visit_exp func*{func <- `func*`}] +[scope_enter func] +[visit_exp func] +[visit_id func] not free +[visit_id func] not free +[scope_exit func] +[visit_exp `func*`] +[visit_id func*] no dims +[visit_id func*] +[visit_exp data*{data <- `data*`}] +[scope_enter data] +[visit_exp data] +[visit_id data] not free +[visit_id data] not free +[scope_exit data] +[visit_exp `data*`] +[visit_id data*] no dims +[visit_id data*] +[visit_exp elem*{elem <- `elem*`}] +[scope_enter elem] +[visit_exp elem] +[visit_id elem] not free +[visit_id elem] not free +[scope_exit elem] +[visit_exp `elem*`] +[visit_id elem*] no dims +[visit_id elem*] +[visit_exp start?{start <- `start?`}] +[scope_enter start] +[visit_exp start] +[visit_id start] not free +[visit_id start] not free +[scope_exit start] +[visit_exp `start?`] +[visit_id start?] no dims +[visit_id start?] +[visit_exp export*{export <- `export*`}] +[scope_enter export] +[visit_exp export] +[visit_id export] not free +[visit_id export] not free +[scope_exit export] +[visit_exp `export*`] +[visit_id export*] no dims +[visit_id export*] +[visit_exp type*{type <- `type*`}] +[scope_enter type] +[visit_exp type] +[visit_id type] not free +[visit_id type] not free +[scope_exit type] +[visit_exp `type*`] +[visit_id type*] not free +[visit_id type*] no dims +[visit_exp import*{import <- `import*`}] +[scope_enter import] +[visit_exp import] +[visit_id import] not free +[visit_id import] not free +[scope_exit import] +[visit_exp `import*`] +[visit_id import*] not free +[visit_id import*] no dims +[visit_exp typeidx*{typeidx <- `typeidx*`}] +[scope_enter typeidx] +[visit_exp typeidx] +[visit_id typeidx] not free +[visit_id typeidx] not free +[scope_exit typeidx] +[visit_exp `typeidx*`] +[visit_id typeidx*] no dims +[visit_id typeidx*] +[visit_exp table*{table <- `table*`}] +[scope_enter table] +[visit_exp table] +[visit_id table] not free +[visit_id table] not free +[scope_exit table] +[visit_exp `table*`] +[visit_id table*] not free +[visit_id table*] no dims +[visit_exp mem*{mem <- `mem*`}] +[scope_enter mem] +[visit_exp mem] +[visit_id mem] not free +[visit_id mem] not free +[scope_exit mem] +[visit_exp `mem*`] +[visit_id mem*] not free +[visit_id mem*] no dims +[visit_exp tag*{tag <- `tag*`}] +[scope_enter tag] +[visit_exp tag] +[visit_id tag] not free +[visit_id tag] not free +[scope_exit tag] +[visit_exp `tag*`] +[visit_id tag*] not free +[visit_id tag*] no dims +[visit_exp global*{global <- `global*`}] +[scope_enter global] +[visit_exp global] +[visit_id global] not free +[visit_id global] not free +[scope_exit global] +[visit_exp `global*`] +[visit_id global*] not free +[visit_id global*] no dims +[visit_exp export*{export <- `export*`}] +[scope_enter export] +[visit_exp export] +[visit_id export] not free +[visit_id export] not free +[scope_exit export] +[visit_exp `export*`] +[visit_id export*] not free +[visit_id export*] no dims +[visit_exp start?{start <- `start?`}] +[scope_enter start] +[visit_exp start] +[visit_id start] not free +[visit_id start] not free +[scope_exit start] +[visit_exp `start?`] +[visit_id start?] not free +[visit_id start?] no dims +[visit_exp elem*{elem <- `elem*`}] +[scope_enter elem] +[visit_exp elem] +[visit_id elem] not free +[visit_id elem] not free +[scope_exit elem] +[visit_exp `elem*`] +[visit_id elem*] not free +[visit_id elem*] no dims +[visit_exp `%`_u32{i#92509}(n)?{i#92509 <- `i#92509?`, n <- `n?`}] +[scope_enter i#92509] +[scope_enter n] +[visit_exp `%`_u32{i#92509}(n)] +[visit_exp i#92509] +[visit_id i#92509] not free +[visit_exp (n)] +[visit_exp n] +[visit_id n] not free +[visit_id i#92509] not free +[visit_id n] not free +[scope_exit n] +[scope_exit i#92509] +[visit_exp `i#92509?`] +[visit_id i#92509?] no dims +[visit_id i#92509?] +[visit_exp `n?`] +[visit_id n?] no dims +[visit_id n?] +[visit_exp (local*{local <- `local*`}, expr)*{expr <- `expr*`, `local*` <- `local**`}] +[scope_enter expr] +[scope_enter local*] +[visit_exp (local*{local <- `local*`}, expr)] +[visit_exp local*{local <- `local*`}] +[scope_enter local] +[visit_exp local] +[visit_id local] not free +[visit_id local] not free +[scope_exit local] +[visit_exp `local*`] +[visit_id local*] not free +[visit_id local*] no dims +[visit_exp expr] +[visit_id expr] not free +[visit_id expr] not free +[visit_id local*] not free +[visit_id local*] no dims +[scope_exit local*] +[scope_exit expr] +[visit_exp `expr*`] +[visit_id expr*] no dims +[visit_id expr*] +[visit_exp `local**`] +[visit_id local**] no dims +[visit_id local**] +[visit_exp data*{data <- `data*`}] +[scope_enter data] +[visit_exp data] +[visit_id data] not free +[visit_id data] not free +[scope_exit data] +[visit_exp `data*`] +[visit_id data*] not free +[visit_id data*] no dims +[scope_enter n] +[visit_exp (n = |data*{data <- `data*`}|)] +[visit_exp n] +[visit_id n] not free +[visit_exp |data*{data <- `data*`}|] +[visit_exp data*{data <- `data*`}] +[scope_enter data] +[visit_exp data] +[visit_id data] not free +[visit_id data] not free +[scope_exit data] +[visit_exp `data*`] +[visit_id data*] not free +[visit_id data*] no dims +[visit_id n] not free +[scope_exit n] +[visit_exp `n?`] +[visit_id n?] not free +[visit_id n?] no dims +[visit_exp ((n?{n <- `n?`} =/= ?()) \/ ($dataidx_funcs(func*{func <- `func*`}) = []))] +[visit_exp (n?{n <- `n?`} =/= ?())] +[visit_exp n?{n <- `n?`}] +[scope_enter n] +[visit_exp n] +[visit_id n] not free +[visit_id n] not free +[scope_exit n] +[visit_exp `n?`] +[visit_id n?] not free +[visit_id n?] no dims +[visit_exp ?()] +[visit_exp ($dataidx_funcs(func*{func <- `func*`}) = [])] +[visit_exp $dataidx_funcs(func*{func <- `func*`})] +[visit_exp func*{func <- `func*`}] +[scope_enter func] +[visit_exp func] +[visit_id func] not free +[visit_id func] not free +[scope_exit func] +[visit_exp `func*`] +[visit_id func*] not free +[visit_id func*] no dims +[visit_exp []] +[scope_enter expr] +[scope_enter expr#5253] +[scope_enter func] +[scope_enter local*] +[scope_enter local*#1601] +[scope_enter typeidx] +[scope_enter typeidx#2117] +[visit_exp (func = `FUNC`_func{typeidx#2117, `local*#1601`, expr#5253}(typeidx, local*{local <- `local*`}, expr))] +[visit_exp func] +[visit_id func] not free +[visit_exp `FUNC`_func{typeidx#2117, `local*#1601`, expr#5253}(typeidx, local*{local <- `local*`}, expr)] +[visit_exp typeidx#2117] +[visit_id typeidx#2117] not free +[visit_exp `local*#1601`] +[visit_id local*#1601] not free +[visit_exp expr#5253] +[visit_id expr#5253] not free +[visit_exp (typeidx, local*{local <- `local*`}, expr)] +[visit_exp typeidx] +[visit_id typeidx] not free +[visit_exp local*{local <- `local*`}] +[scope_enter local] +[visit_exp local] +[visit_id local] not free +[visit_id local] not free +[scope_exit local] +[visit_exp `local*`] +[visit_id local*] not free +[visit_id local*] no dims +[visit_exp expr] +[visit_id expr] not free +[visit_id expr] not free +[visit_id expr#5253] not free +[visit_id func] not free +[visit_id local*] not free +[visit_id local*] no dims +[visit_id local*#1601] not free +[visit_id typeidx] not free +[visit_id typeidx#2117] not free +[scope_exit typeidx#2117] +[scope_exit typeidx] +[scope_exit local*#1601] +[scope_exit local*] +[scope_exit func] +[scope_exit expr#5253] +[scope_exit expr] +[visit_exp `expr*`] +[visit_id expr*] not free +[visit_id expr*] no dims +[visit_exp `expr#5253*`] +[visit_id expr#5253*] no dims +[visit_id expr#5253*] +[visit_exp `func*`] +[visit_id func*] not free +[visit_id func*] no dims +[visit_exp `local**`] +[visit_id local**] not free +[visit_id local**] no dims +[visit_exp `local*#1601*`] +[visit_id local*#1601*] no dims +[visit_id local*#1601*] +[visit_exp `typeidx*`] +[visit_id typeidx*] not free +[visit_id typeidx*] no dims +[visit_exp `typeidx#2117*`] +[visit_id typeidx#2117*] no dims +[visit_id typeidx#2117*] +ps' = +[check_dims] +[check_dims] i#92557 +dims \ = , i#92557 +[visit_exp `%`_char{i#92557}(``)] +[visit_exp i#92557] +[visit_id i#92557] +[visit_exp (``)] +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] i#92565 +dims \ = , i#92565 +[visit_exp `%`_char{i#92565}(``)] +[visit_exp i#92565] +[visit_id i#92565] +[visit_exp (``)] +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp [``]] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp [``]] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp [``]] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp [``]] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] c i#92597 i#92599 +dims \ = , c, i#92597, i#92599 +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +[visit_exp c] +[visit_id c] +[visit_exp ((c!`%`_char{i#92597}.0 =/= 10) /\ (c!`%`_char{i#92599}.0 =/= 13))] +[visit_exp (c!`%`_char{i#92597}.0 =/= 10)] +[visit_exp c!`%`_char{i#92597}.0] +[visit_exp c!`%`_char{i#92597}] +[visit_exp c] +[visit_id c] not free +[visit_exp i#92597] +[visit_id i#92597] +[visit_exp 10] +[visit_exp (c!`%`_char{i#92599}.0 =/= 13)] +[visit_exp c!`%`_char{i#92599}.0] +[visit_exp c!`%`_char{i#92599}] +[visit_exp c] +[visit_id c] not free +[visit_exp i#92599] +[visit_id i#92599] +[visit_exp 13] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] c i#92625 i#92635 +dims \ = , c, i#92625, i#92635 +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +[visit_exp c] +[visit_id c] +[visit_exp ((c =/= `%`_char{i#92625}(59)) /\ (c =/= `%`_char{i#92635}(40)))] +[visit_exp (c =/= `%`_char{i#92625}(59))] +[visit_exp c] +[visit_id c] not free +[visit_exp `%`_char{i#92625}(59)] +[visit_exp i#92625] +[visit_id i#92625] +[visit_exp (59)] +[visit_exp 59] +[visit_exp (c =/= `%`_char{i#92635}(40))] +[visit_exp c] +[visit_id c] not free +[visit_exp `%`_char{i#92635}(40)] +[visit_exp i#92635] +[visit_id i#92635] +[visit_exp (40)] +[visit_exp 40] +[check_dims] c i#92657 i#92667 +dims \ = , c, i#92657, i#92667 +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +[visit_exp c] +[visit_id c] +[visit_exp ((c =/= `%`_char{i#92657}(59)) /\ (c =/= `%`_char{i#92667}(41)))] +[visit_exp (c =/= `%`_char{i#92657}(59))] +[visit_exp c] +[visit_id c] not free +[visit_exp `%`_char{i#92657}(59)] +[visit_exp i#92657] +[visit_id i#92657] +[visit_exp (59)] +[visit_exp 59] +[visit_exp (c =/= `%`_char{i#92667}(41))] +[visit_exp c] +[visit_id c] not free +[visit_exp `%`_char{i#92667}(41)] +[visit_exp i#92667] +[visit_id i#92667] +[visit_exp (41)] +[visit_exp 41] +[check_dims] c i#92689 i#92699 +dims \ = , c, i#92689, i#92699 +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +[visit_exp c] +[visit_id c] +[visit_exp ((c =/= `%`_char{i#92689}(59)) /\ (c =/= `%`_char{i#92699}(40)))] +[visit_exp (c =/= `%`_char{i#92689}(59))] +[visit_exp c] +[visit_id c] not free +[visit_exp `%`_char{i#92689}(59)] +[visit_exp i#92689] +[visit_id i#92689] +[visit_exp (59)] +[visit_exp 59] +[visit_exp (c =/= `%`_char{i#92699}(40))] +[visit_exp c] +[visit_id c] not free +[visit_exp `%`_char{i#92699}(40)] +[visit_exp i#92699] +[visit_id i#92699] +[visit_exp (40)] +[visit_exp 40] +[check_dims] +dims \ = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp [``]] +[visit_exp ``] +[visit_id ] not free +[check_dims] +dims \ = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp + (1 : nat <:> int)] +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[check_dims] +dims \ = +[visit_exp + (1 : nat <:> int)] +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[check_dims] +dims \ = +[visit_exp - (1 : nat <:> int)] +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +ps' = +[check_dims] +[check_dims] +[visit_exp 0] +[visit_exp 9] +ps' = +[check_dims] +[check_dims] d +dims \ = d +[visit_exp d] +[visit_id d] +[visit_exp d] +[visit_id d] not free +[check_dims] +[visit_exp 10] +[visit_exp 15] +[check_dims] +[visit_exp 10] +[visit_exp 15] +ps' = +[check_dims] +[check_dims] d +dims \ = d +[visit_exp d] +[visit_id d] +[visit_exp d] +[visit_id d] not free +[check_dims] d n +dims \ = d, n +[visit_exp ((10 * n) + d)] +[visit_exp (10 * n)] +[visit_exp 10] +[visit_exp n] +[visit_id n] +[visit_exp d] +[visit_id d] +[visit_exp n] +[visit_id n] not free +[visit_exp d] +[visit_id d] not free +ps' = +[check_dims] +[check_dims] h +dims \ = h +[visit_exp h] +[visit_id h] +[visit_exp h] +[visit_id h] not free +[check_dims] h n +dims \ = h, n +[visit_exp ((16 * n) + h)] +[visit_exp (16 * n)] +[visit_exp 16] +[visit_exp n] +[visit_id n] +[visit_exp h] +[visit_id h] +[visit_exp n] +[visit_id n] not free +[visit_exp h] +[visit_id h] not free +ps' = (N : N) +[check_dims] N +[check_dims] N i#92715 n +dims \ N = i#92715, n +[visit_exp `%`_uN{i#92715}(n)] +[visit_exp i#92715] +[visit_id i#92715] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp n] +[visit_id n] not free +[visit_exp (n < (2 ^ N))] +[visit_exp n] +[visit_id n] not free +[visit_exp (2 ^ N)] +[visit_exp 2] +[visit_exp N] +[visit_id N] not free +[visit_id N] no dims +[check_dims] N i#92723 n +dims \ N = i#92723, n +[visit_exp `%`_uN{i#92723}(n)] +[visit_exp i#92723] +[visit_id i#92723] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp n] +[visit_id n] not free +[visit_exp (n < (2 ^ N))] +[visit_exp n] +[visit_id n] not free +[visit_exp (2 ^ N)] +[visit_exp 2] +[visit_exp N] +[visit_id N] not free +[visit_id N] no dims +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +ps' = (N : N) +[check_dims] N +[check_dims] N i#92731 i#92739 n s +dims \ N = i#92731, i#92739, n, s +[visit_exp `%`_sN{i#92739}((s * (n : nat <:> int)))] +[visit_exp i#92739] +[visit_id i#92739] +[visit_exp ((s * (n : nat <:> int)))] +[visit_exp (s * (n : nat <:> int))] +[visit_exp s] +[visit_id s] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] +[visit_exp s] +[visit_id s] not free +[visit_exp `%`_uN{i#92731}(n)] +[visit_exp i#92731] +[visit_id i#92731] +[visit_exp (n)] +[visit_exp n] +[visit_id n] not free +[visit_exp N] +[visit_id N] not free +[visit_id N] no dims +[visit_exp ((- ((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)))] +[visit_exp (- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= (s * (n : nat <:> int)))] +[visit_exp - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)] +[visit_exp ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)] +[visit_exp (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp 2] +[visit_exp (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp ((N : nat <:> int) - (1 : nat <:> int))] +[visit_exp (N : nat <:> int)] +[visit_exp N] +[visit_id N] not free +[visit_id N] no dims +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp (s * (n : nat <:> int))] +[visit_exp s] +[visit_id s] not free +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp ((s * (n : nat <:> int)) < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))] +[visit_exp (s * (n : nat <:> int))] +[visit_exp s] +[visit_id s] not free +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)] +[visit_exp (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp 2] +[visit_exp (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp ((N : nat <:> int) - (1 : nat <:> int))] +[visit_exp (N : nat <:> int)] +[visit_exp N] +[visit_id N] not free +[visit_id N] no dims +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +ps' = (N : N) +[check_dims] N +[check_dims] N i#92747 i#92755 n +dims \ N = i#92747, i#92755, n +[visit_exp `%`_iN{i#92755}(n)] +[visit_exp i#92755] +[visit_id i#92755] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `%`_uN{i#92747}(n)] +[visit_exp i#92747] +[visit_id i#92747] +[visit_exp (n)] +[visit_exp n] +[visit_id n] not free +[visit_exp N] +[visit_id N] not free +[visit_id N] no dims +[check_dims] N i i#92769 i#92771 +dims \ N = i, i#92769, i#92771 +[visit_exp `%`_iN{i#92771}($inv_signed_(N, i!`%`_sN{i#92769}.0))] +[visit_exp i#92771] +[visit_id i#92771] +[visit_exp ($inv_signed_(N, i!`%`_sN{i#92769}.0))] +[visit_exp $inv_signed_(N, i!`%`_sN{i#92769}.0)] +[visit_exp N] +[visit_id N] not free +[visit_id N] no dims +[visit_exp i!`%`_sN{i#92769}.0] +[visit_exp i!`%`_sN{i#92769}] +[visit_exp i] +[visit_id i] +[visit_exp i#92769] +[visit_id i#92769] +[visit_exp i] +[visit_id i] not free +[visit_exp N] +[visit_id N] not free +[visit_id N] no dims +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +ps' = +[check_dims] +[check_dims] d +dims \ = d +[visit_exp ((d : nat <:> rat) / (10 : nat <:> rat))] +[visit_exp (d : nat <:> rat)] +[visit_exp d] +[visit_id d] +[visit_exp (10 : nat <:> rat)] +[visit_exp 10] +[visit_exp d] +[visit_id d] not free +[check_dims] d p +dims \ = d, p +[visit_exp (((d + ((p / (10 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (10 : nat <:> rat))] +[visit_exp ((d + ((p / (10 : nat <:> rat)) : rat <:> nat)) : nat <:> rat)] +[visit_exp (d + ((p / (10 : nat <:> rat)) : rat <:> nat))] +[visit_exp d] +[visit_id d] +[visit_exp ((p / (10 : nat <:> rat)) : rat <:> nat)] +[visit_exp (p / (10 : nat <:> rat))] +[visit_exp p] +[visit_id p] +[visit_exp (10 : nat <:> rat)] +[visit_exp 10] +[visit_exp (10 : nat <:> rat)] +[visit_exp 10] +[visit_exp d] +[visit_id d] not free +[visit_exp p] +[visit_id p] not free +ps' = +[check_dims] +[check_dims] h +dims \ = h +[visit_exp ((h : nat <:> rat) / (16 : nat <:> rat))] +[visit_exp (h : nat <:> rat)] +[visit_exp h] +[visit_id h] +[visit_exp (16 : nat <:> rat)] +[visit_exp 16] +[visit_exp h] +[visit_id h] not free +[check_dims] h p +dims \ = h, p +[visit_exp (((h + ((p / (16 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (16 : nat <:> rat))] +[visit_exp ((h + ((p / (16 : nat <:> rat)) : rat <:> nat)) : nat <:> rat)] +[visit_exp (h + ((p / (16 : nat <:> rat)) : rat <:> nat))] +[visit_exp h] +[visit_id h] +[visit_exp ((p / (16 : nat <:> rat)) : rat <:> nat)] +[visit_exp (p / (16 : nat <:> rat))] +[visit_exp p] +[visit_id p] +[visit_exp (16 : nat <:> rat)] +[visit_exp 16] +[visit_exp (16 : nat <:> rat)] +[visit_exp 16] +[visit_exp h] +[visit_id h] not free +[visit_exp p] +[visit_id p] not free +ps' = +[check_dims] +[check_dims] p +dims \ = p +[visit_exp (p : nat <:> rat)] +[visit_exp p] +[visit_id p] +[visit_exp p] +[visit_id p] not free +[check_dims] p q +dims \ = p, q +[visit_exp ((p + (q : rat <:> nat)) : nat <:> rat)] +[visit_exp (p + (q : rat <:> nat))] +[visit_exp p] +[visit_id p] +[visit_exp (q : rat <:> nat)] +[visit_exp q] +[visit_id q] +[visit_exp p] +[visit_id p] not free +[visit_exp q] +[visit_id q] not free +ps' = +[check_dims] +[check_dims] p +dims \ = p +[visit_exp (p : nat <:> rat)] +[visit_exp p] +[visit_id p] +[visit_exp p] +[visit_id p] not free +[check_dims] p q +dims \ = p, q +[visit_exp ((p + (q : rat <:> nat)) : nat <:> rat)] +[visit_exp (p + (q : rat <:> nat))] +[visit_exp p] +[visit_id p] +[visit_exp (q : rat <:> nat)] +[visit_exp q] +[visit_id q] +[visit_exp p] +[visit_id p] not free +[visit_exp q] +[visit_id q] not free +[check_dims] N rat +DecD ieee_(N : N, rat : rat) : fNmag(N) +[visit_id N] not free +[visit_id rat] not free +[visit_exp N] +[visit_id N] not free +[check_dims] +ps' = +[check_dims] +[check_dims] ee p s +dims \ = ee, p, s +[visit_exp (p * ((10 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat))] +[visit_exp p] +[visit_id p] +[visit_exp ((10 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)] +[visit_exp (10 ^ ((s * (ee : nat <:> int)) : int <:> nat))] +[visit_exp 10] +[visit_exp ((s * (ee : nat <:> int)) : int <:> nat)] +[visit_exp (s * (ee : nat <:> int))] +[visit_exp s] +[visit_id s] +[visit_exp (ee : nat <:> int)] +[visit_exp ee] +[visit_id ee] +[visit_exp p] +[visit_id p] not free +[visit_exp s] +[visit_id s] not free +[visit_exp ee] +[visit_id ee] not free +ps' = +[check_dims] +[check_dims] ee p s +dims \ = ee, p, s +[visit_exp (p * ((2 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat))] +[visit_exp p] +[visit_id p] +[visit_exp ((2 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)] +[visit_exp (2 ^ ((s * (ee : nat <:> int)) : int <:> nat))] +[visit_exp 2] +[visit_exp ((s * (ee : nat <:> int)) : int <:> nat)] +[visit_exp (s * (ee : nat <:> int))] +[visit_exp s] +[visit_id s] +[visit_exp (ee : nat <:> int)] +[visit_exp ee] +[visit_id ee] +[visit_exp p] +[visit_id p] not free +[visit_exp s] +[visit_id s] not free +[visit_exp ee] +[visit_id ee] not free +ps' = (N : N) +[check_dims] N +[check_dims] N q +dims \ N = q +[visit_exp $ieee_(N, q)] +[visit_exp N] +[visit_id N] not free +[visit_id N] no dims +[visit_exp q] +[visit_id q] +[visit_exp q] +[visit_id q] not free +[visit_exp ($ieee_(N, q) =/= `INF`_fNmag)] +[visit_exp $ieee_(N, q)] +[visit_exp N] +[visit_id N] not free +[visit_id N] no dims +[visit_exp q] +[visit_id q] not free +[visit_exp `INF`_fNmag] +[visit_exp ()] +[check_dims] N q +dims \ N = q +[visit_exp $ieee_(N, q)] +[visit_exp N] +[visit_id N] not free +[visit_id N] no dims +[visit_exp q] +[visit_id q] +[visit_exp q] +[visit_id q] not free +[visit_exp ($ieee_(N, q) =/= `INF`_fNmag)] +[visit_exp $ieee_(N, q)] +[visit_exp N] +[visit_id N] not free +[visit_id N] no dims +[visit_exp q] +[visit_id q] not free +[visit_exp `INF`_fNmag] +[visit_exp ()] +[check_dims] N +dims \ N = +[visit_exp `INF`_fNmag] +[visit_exp ()] +[check_dims] N m#7 +dims \ N = m#7 +[visit_exp `NAN`_fNmag{m#7}($canon_(N))] +[visit_exp m#7] +[visit_id m#7] +[visit_exp ($canon_(N))] +[visit_exp $canon_(N)] +[visit_exp N] +[visit_id N] not free +[visit_id N] no dims +[check_dims] N m#9 n +dims \ N = m#9, n +[visit_exp `NAN`_fNmag{m#9}(n)] +[visit_exp m#9] +[visit_id m#9] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp n] +[visit_id n] not free +[visit_exp ((1 <= n) /\ (n < (2 ^ $signif(N))))] +[visit_exp (1 <= n)] +[visit_exp 1] +[visit_exp n] +[visit_id n] not free +[visit_exp (n < (2 ^ $signif(N)))] +[visit_exp n] +[visit_id n] not free +[visit_exp (2 ^ $signif(N))] +[visit_exp 2] +[visit_exp $signif(N)] +[visit_exp N] +[visit_id N] not free +[visit_id N] no dims +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +ps' = (N : N) +[check_dims] N +[check_dims] N q +dims \ N = q +[visit_exp `POS`_fN(q)] +[visit_exp (q)] +[visit_exp q] +[visit_id q] +[visit_exp + (1 : nat <:> int)] +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp q] +[visit_id q] not free +[visit_exp N] +[visit_id N] not free +[visit_id N] no dims +[check_dims] N q +dims \ N = q +[visit_exp `NEG`_fN(q)] +[visit_exp (q)] +[visit_exp q] +[visit_id q] +[visit_exp - (1 : nat <:> int)] +[visit_exp (1 : nat <:> int)] +[visit_exp 1] +[visit_exp q] +[visit_id q] not free +[visit_exp N] +[visit_id N] not free +[visit_id N] no dims +[visit_id N] not free +[visit_exp N] +[visit_id N] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[visit_exp 8] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[visit_exp 32] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[visit_exp 64] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[visit_exp 8] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[visit_exp 16] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[visit_exp 32] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[visit_exp 64] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[visit_exp 128] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[visit_exp 32] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[visit_exp 64] +ps' = +[check_dims] +[check_dims] c i#93014 i#93016 i#93024 i#93034 +dims \ = c, i#93014, i#93016, i#93024, i#93034 +[visit_exp c] +[visit_id c] +[visit_exp c] +[visit_id c] not free +[visit_exp ((((c!`%`_char{i#93014}.0 >= 32) /\ (c!`%`_char{i#93016}.0 =/= 127)) /\ (c =/= `%`_char{i#93024}(34))) /\ (c =/= `%`_char{i#93034}(92)))] +[visit_exp (((c!`%`_char{i#93014}.0 >= 32) /\ (c!`%`_char{i#93016}.0 =/= 127)) /\ (c =/= `%`_char{i#93024}(34)))] +[visit_exp ((c!`%`_char{i#93014}.0 >= 32) /\ (c!`%`_char{i#93016}.0 =/= 127))] +[visit_exp (c!`%`_char{i#93014}.0 >= 32)] +[visit_exp c!`%`_char{i#93014}.0] +[visit_exp c!`%`_char{i#93014}] +[visit_exp c] +[visit_id c] not free +[visit_exp i#93014] +[visit_id i#93014] +[visit_exp 32] +[visit_exp (c!`%`_char{i#93016}.0 =/= 127)] +[visit_exp c!`%`_char{i#93016}.0] +[visit_exp c!`%`_char{i#93016}] +[visit_exp c] +[visit_id c] not free +[visit_exp i#93016] +[visit_id i#93016] +[visit_exp 127] +[visit_exp (c =/= `%`_char{i#93024}(34))] +[visit_exp c] +[visit_id c] not free +[visit_exp `%`_char{i#93024}(34)] +[visit_exp i#93024] +[visit_id i#93024] +[visit_exp (34)] +[visit_exp 34] +[visit_exp (c =/= `%`_char{i#93034}(92))] +[visit_exp c] +[visit_id c] not free +[visit_exp `%`_char{i#93034}(92)] +[visit_exp i#93034] +[visit_id i#93034] +[visit_exp (92)] +[visit_exp 92] +[check_dims] i#93044 +dims \ = i#93044 +[visit_exp `%`_char{i#93044}(9)] +[visit_exp i#93044] +[visit_id i#93044] +[visit_exp (9)] +[visit_exp 9] +[check_dims] i#93052 +dims \ = i#93052 +[visit_exp `%`_char{i#93052}(10)] +[visit_exp i#93052] +[visit_id i#93052] +[visit_exp (10)] +[visit_exp 10] +[check_dims] i#93060 +dims \ = i#93060 +[visit_exp `%`_char{i#93060}(13)] +[visit_exp i#93060] +[visit_id i#93060] +[visit_exp (13)] +[visit_exp 13] +[check_dims] i#93068 +dims \ = i#93068 +[visit_exp `%`_char{i#93068}(34)] +[visit_exp i#93068] +[visit_id i#93068] +[visit_exp (34)] +[visit_exp 34] +[check_dims] i#93076 +dims \ = i#93076 +[visit_exp `%`_char{i#93076}(39)] +[visit_exp i#93076] +[visit_id i#93076] +[visit_exp (39)] +[visit_exp 39] +[check_dims] i#93084 +dims \ = i#93084 +[visit_exp `%`_char{i#93084}(92)] +[visit_exp i#93084] +[visit_id i#93084] +[visit_exp (92)] +[visit_exp 92] +[check_dims] i#93092 n +dims \ = i#93092, n +[visit_exp `%`_char{i#93092}(n)] +[visit_exp i#93092] +[visit_id i#93092] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp n] +[visit_id n] not free +[visit_exp ((n < 55296) \/ ((59392 <= n) /\ (n < 1114112)))] +[visit_exp (n < 55296)] +[visit_exp n] +[visit_id n] not free +[visit_exp 55296] +[visit_exp ((59392 <= n) /\ (n < 1114112))] +[visit_exp (59392 <= n)] +[visit_exp 59392] +[visit_exp n] +[visit_id n] not free +[visit_exp (n < 1114112)] +[visit_exp n] +[visit_id n] not free +[visit_exp 1114112] +ps' = +[check_dims] +[check_dims] c +dims \ = c +[visit_exp $utf8([c])] +[visit_exp [c]] +[visit_exp c] +[visit_id c] +[visit_exp c] +[visit_id c] not free +[check_dims] h_1 h_2 i#93132 +dims \ = h_1, h_2, i#93132 +[visit_exp [`%`_byte{i#93132}(((16 * h_1) + h_2))]] +[visit_exp `%`_byte{i#93132}(((16 * h_1) + h_2))] +[visit_exp i#93132] +[visit_id i#93132] +[visit_exp (((16 * h_1) + h_2))] +[visit_exp ((16 * h_1) + h_2)] +[visit_exp (16 * h_1)] +[visit_exp 16] +[visit_exp h_1] +[visit_id h_1] +[visit_exp h_2] +[visit_id h_2] +[visit_exp h_1] +[visit_id h_1] not free +[visit_exp h_2] +[visit_id h_2] not free +ps' = +[check_dims] +[check_dims] b +dims \ = b +[visit_exp $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`})] +[visit_exp b*{b <- `b*`}*{`b*` <- `b**`}] +[scope_enter b*] +[visit_exp b*{b <- `b*`}] +[scope_enter b] +[visit_exp b] +[visit_id b] not free +[visit_id b] not free +[scope_exit b] +[visit_exp `b*`] +[visit_id b*] not free +[visit_id b*] no dims +[visit_id b*] not free +[visit_id b*] no dims +[scope_exit b*] +[visit_exp `b**`] +[visit_id b**] no dims +[visit_id b**] +[scope_enter b*] +[visit_exp b*{b <- `b*`}] +[scope_enter b] +[visit_exp b] +[visit_id b] not free +[visit_id b] not free +[scope_exit b] +[visit_exp `b*`] +[visit_id b*] not free +[visit_id b*] no dims +[visit_id b*] not free +[visit_id b*] no dims +[scope_exit b*] +[visit_exp `b**`] +[visit_id b**] not free +[visit_id b**] no dims +[visit_exp (|$concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`})| < (2 ^ 32))] +[visit_exp |$concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`})|] +[visit_exp $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`})] +[visit_exp b*{b <- `b*`}*{`b*` <- `b**`}] +[scope_enter b*] +[visit_exp b*{b <- `b*`}] +[scope_enter b] +[visit_exp b] +[visit_id b] not free +[visit_id b] not free +[scope_exit b] +[visit_exp `b*`] +[visit_id b*] not free +[visit_id b*] no dims +[visit_id b*] not free +[visit_id b*] no dims +[scope_exit b*] +[visit_exp `b**`] +[visit_id b**] not free +[visit_id b**] no dims +[visit_exp (2 ^ 32)] +[visit_exp 2] +[visit_exp 32] +ps' = (syntax el, grammar TX : el) +[check_dims] el +[check_dims] el +dims \ = el +[visit_exp el*{el <- `el*`}] +[scope_enter el] +[visit_exp el] +[visit_id el] not free +[visit_id el] not free +[scope_exit el] +[visit_exp `el*`] +[visit_id el*] no dims +[visit_id el*] +[scope_enter el] +[visit_exp el] +[visit_id el] not free +[visit_id el] not free +[scope_exit el] +[visit_exp `el*`] +[visit_id el*] not free +[visit_id el*] no dims +[visit_exp (|el*{el <- `el*`}| < (2 ^ 32))] +[visit_exp |el*{el <- `el*`}|] +[visit_exp el*{el <- `el*`}] +[scope_enter el] +[visit_exp el] +[visit_id el] not free +[visit_id el] not free +[scope_exit el] +[visit_exp `el*`] +[visit_id el*] not free +[visit_id el*] no dims +[visit_exp (2 ^ 32)] +[visit_exp 2] +[visit_exp 32] +ps' = +[check_dims] +[check_dims] b c char*#207 +dims \ = b, c, char*#207 +[visit_exp `%`_name{`char*#207`}(c*{c <- `c*`})] +[visit_exp `char*#207`] +[visit_id char*#207] +[visit_exp (c*{c <- `c*`})] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] no dims +[visit_id c*] +[visit_exp b*{b <- `b*`}] +[scope_enter b] +[visit_exp b] +[visit_id b] not free +[visit_id b] not free +[scope_exit b] +[visit_exp `b*`] +[visit_id b*] no dims +[visit_id b*] +[visit_exp (b*{b <- `b*`} = $utf8(c*{c <- `c*`}))] +[visit_exp b*{b <- `b*`}] +[scope_enter b] +[visit_exp b] +[visit_id b] not free +[visit_id b] not free +[scope_exit b] +[visit_exp `b*`] +[visit_id b*] not free +[visit_id b*] no dims +[visit_exp $utf8(c*{c <- `c*`})] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +ps' = +[check_dims] +[check_dims] i#93304 +dims \ = , i#93304 +[visit_exp `%`_char{i#93304}(``)] +[visit_exp i#93304] +[visit_id i#93304] +[visit_exp (``)] +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] i#93312 +dims \ = , i#93312 +[visit_exp `%`_char{i#93312}(``)] +[visit_exp i#93312] +[visit_id i#93312] +[visit_exp (``)] +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] i#93320 +dims \ = , i#93320 +[visit_exp `%`_char{i#93320}(``)] +[visit_exp i#93320] +[visit_id i#93320] +[visit_exp (``)] +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] i#93328 +dims \ = , i#93328 +[visit_exp `%`_char{i#93328}(``)] +[visit_exp i#93328] +[visit_id i#93328] +[visit_exp (``)] +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] i#93336 +dims \ = , i#93336 +[visit_exp `%`_char{i#93336}(``)] +[visit_exp i#93336] +[visit_id i#93336] +[visit_exp (``)] +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] i#93344 +dims \ = , i#93344 +[visit_exp `%`_char{i#93344}(``)] +[visit_exp i#93344] +[visit_id i#93344] +[visit_exp (``)] +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] i#93352 +dims \ = , i#93352 +[visit_exp `%`_char{i#93352}(``)] +[visit_exp i#93352] +[visit_id i#93352] +[visit_exp (``)] +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] i#93360 +dims \ = , i#93360 +[visit_exp `%`_char{i#93360}(``)] +[visit_exp i#93360] +[visit_id i#93360] +[visit_exp (``)] +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] i#93368 +dims \ = , i#93368 +[visit_exp `%`_char{i#93368}(``)] +[visit_exp i#93368] +[visit_id i#93368] +[visit_exp (``)] +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] i#93376 +dims \ = , i#93376 +[visit_exp `%`_char{i#93376}(``)] +[visit_exp i#93376] +[visit_id i#93376] +[visit_exp (``)] +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] i#93384 +dims \ = , i#93384 +[visit_exp `%`_char{i#93384}(``)] +[visit_exp i#93384] +[visit_id i#93384] +[visit_exp (``)] +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] i#93392 +dims \ = , i#93392 +[visit_exp `%`_char{i#93392}(``)] +[visit_exp i#93392] +[visit_id i#93392] +[visit_exp (``)] +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] i#93400 +dims \ = , i#93400 +[visit_exp `%`_char{i#93400}(``)] +[visit_exp i#93400] +[visit_id i#93400] +[visit_exp (``)] +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] i#93408 +dims \ = , i#93408 +[visit_exp `%`_char{i#93408}(``)] +[visit_exp i#93408] +[visit_id i#93408] +[visit_exp (``)] +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] i#93416 +dims \ = , i#93416 +[visit_exp `%`_char{i#93416}(``)] +[visit_exp i#93416] +[visit_id i#93416] +[visit_exp (``)] +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] i#93424 +dims \ = , i#93424 +[visit_exp `%`_char{i#93424}(``)] +[visit_exp i#93424] +[visit_id i#93424] +[visit_exp (``)] +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] i#93432 +dims \ = , i#93432 +[visit_exp `%`_char{i#93432}(``)] +[visit_exp i#93432] +[visit_id i#93432] +[visit_exp (``)] +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] i#93440 +dims \ = , i#93440 +[visit_exp `%`_char{i#93440}(``)] +[visit_exp i#93440] +[visit_id i#93440] +[visit_exp (``)] +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] i#93448 +dims \ = , i#93448 +[visit_exp `%`_char{i#93448}(``)] +[visit_exp i#93448] +[visit_id i#93448] +[visit_exp (``)] +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] i#93456 +dims \ = , i#93456 +[visit_exp `%`_char{i#93456}(``)] +[visit_exp i#93456] +[visit_id i#93456] +[visit_exp (``)] +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] i#93464 +dims \ = , i#93464 +[visit_exp `%`_char{i#93464}(``)] +[visit_exp i#93464] +[visit_id i#93464] +[visit_exp (``)] +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] i#93472 +dims \ = , i#93472 +[visit_exp `%`_char{i#93472}(``)] +[visit_exp i#93472] +[visit_id i#93472] +[visit_exp (``)] +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] i#93480 +dims \ = , i#93480 +[visit_exp `%`_char{i#93480}(``)] +[visit_exp i#93480] +[visit_id i#93480] +[visit_exp (``)] +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] i#93488 +dims \ = , i#93488 +[visit_exp `%`_char{i#93488}(``)] +[visit_exp i#93488] +[visit_id i#93488] +[visit_exp (``)] +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] i#93496 +dims \ = , i#93496 +[visit_exp `%`_char{i#93496}(``)] +[visit_exp i#93496] +[visit_id i#93496] +[visit_exp (``)] +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[check_dims] i#93504 +dims \ = , i#93504 +[visit_exp `%`_char{i#93504}(``)] +[visit_exp i#93504] +[visit_id i#93504] +[visit_exp (``)] +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] c char*#213 +dims \ = c, char*#213 +[visit_exp `%`_name{`char*#213`}(c*{c <- `c*`})] +[visit_exp `char*#213`] +[visit_id char*#213] +[visit_exp (c*{c <- `c*`})] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] no dims +[visit_id c*] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[check_dims] c char*#219 char*#225 +dims \ = c, char*#219, char*#225 +[visit_exp `%`_name{`char*#225`}(c*{c <- `c*`})] +[visit_exp `char*#225`] +[visit_id char*#225] +[visit_exp (c*{c <- `c*`})] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] no dims +[visit_id c*] +[visit_exp `%`_name{`char*#219`}(c*{c <- `c*`})] +[visit_exp `char*#219`] +[visit_id char*#219] +[visit_exp (c*{c <- `c*`})] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[visit_exp (|c*{c <- `c*`}| > 0)] +[visit_exp |c*{c <- `c*`}|] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[visit_exp 0] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id name?*] no dims +[visit_id name?*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id name?*] no dims +[visit_id name?*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id name?*] no dims +[visit_id name?*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id name?*] no dims +[visit_id name?*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id name?*] no dims +[visit_id name?*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id name?*] no dims +[visit_id name?*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id name?*] no dims +[visit_id name?*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id name?*] no dims +[visit_id name?*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id name?*] no dims +[visit_id name?*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id name?*] no dims +[visit_id name?*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id name?**] no dims +[visit_id name?**] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id deftype?*] no dims +[visit_id deftype?*] +[check_dims] +[check_dims] _ +DecD concat_idctxt(idctxt*) : idctxt +[visit_id _] not free +[check_dims] deftype?*#1 name?*#1 name?*#10 name?*#2 name?*#3 name?*#4 name?*#5 name?*#6 name?*#7 name?*#8 name?*#9 name?**#1 +[visit_exp []] +[visit_exp {`TYPES`{`name?*#1`} [], `TAGS`{`name?*#2`} [], `GLOBALS`{`name?*#3`} [], `MEMS`{`name?*#4`} [], `TABLES`{`name?*#5`} [], `FUNCS`{`name?*#6`} [], `DATAS`{`name?*#7`} [], `ELEMS`{`name?*#8`} [], `LOCALS`{`name?*#9`} [], `LABELS`{`name?*#10`} [], `FIELDS`{`name?**#1`} [], `TYPEDEFS`{`deftype?*#1`} []}] +[visit_exp `name?*#1`] +[visit_id name?*#1] +[visit_exp []] +[visit_exp `name?*#2`] +[visit_id name?*#2] +[visit_exp []] +[visit_exp `name?*#3`] +[visit_id name?*#3] +[visit_exp []] +[visit_exp `name?*#4`] +[visit_id name?*#4] +[visit_exp []] +[visit_exp `name?*#5`] +[visit_id name?*#5] +[visit_exp []] +[visit_exp `name?*#6`] +[visit_id name?*#6] +[visit_exp []] +[visit_exp `name?*#7`] +[visit_id name?*#7] +[visit_exp []] +[visit_exp `name?*#8`] +[visit_id name?*#8] +[visit_exp []] +[visit_exp `name?*#9`] +[visit_id name?*#9] +[visit_exp []] +[visit_exp `name?*#10`] +[visit_id name?*#10] +[visit_exp []] +[visit_exp `name?**#1`] +[visit_id name?**#1] +[visit_exp []] +[visit_exp `deftype?*#1`] +[visit_id deftype?*#1] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + def $concat_idctxt{`name?*#1` : name?*, `name?*#2` : name?*, `name?*#3` : name?*, `name?*#4` : name?*, `name?*#5` : name?*, `name?*#6` : name?*, `name?*#7` : name?*, `name?*#8` : name?*, `name?*#9` : name?*, `name?*#10` : name?*, `name?**#1` : name?**, `deftype?*#1` : deftype?*}([]) = {`TYPES`{`name?*#1`} [], `TAGS`{`name?*#2`} [], `GLOBALS`{`name?*#3`} [], `MEMS`{`name?*#4`} [], `TABLES`{`name?*#5`} [], `FUNCS`{`name?*#6`} [], `DATAS`{`name?*#7`} [], `ELEMS`{`name?*#8`} [], `LOCALS`{`name?*#9`} [], `LABELS`{`name?*#10`} [], `FIELDS`{`name?**#1`} [], `TYPEDEFS`{`deftype?*#1`} []} +[check_dims] I I' +[visit_exp [I] ++ I'*{I' <- `I'*`}] +[visit_exp [I]] +[visit_exp I] +[visit_id I] +[visit_exp I'*{I' <- `I'*`}] +[scope_enter I'] +[visit_exp I'] +[visit_id I'] not free +[visit_id I'] not free +[scope_exit I'] +[visit_exp `I'*`] +[visit_id I'*] no dims +[visit_id I'*] +[visit_exp I +++ $concat_idctxt(I'*{I' <- `I'*`})] +[visit_exp I] +[visit_id I] not free +[visit_exp $concat_idctxt(I'*{I' <- `I'*`})] +[visit_exp I'*{I' <- `I'*`}] +[scope_enter I'] +[visit_exp I'] +[visit_id I'] not free +[visit_id I'] not free +[scope_exit I'] +[visit_exp `I'*`] +[visit_id I'*] not free +[visit_id I'*] no dims +=> + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + def $concat_idctxt{I : I, `I'*` : I*}([I] ++ I'*{I' <- `I'*`}) = I +++ $concat_idctxt(I'*{I' <- `I'*`}) +[check_dims] +[check_dims] I char*#743 char*#761 field name?*#100 name?*#130 name?*#160 name?*#190 name?*#220 name?*#250 name?*#280 name?*#310 name?*#40 name?*#70 name?**#2 +[visit_exp I] +[visit_id I] +[visit_exp $disjoint_(syntax name, $concatopt_(syntax name, I.`TYPES`_I{`name?*#40`}))] +[visit_exp $concatopt_(syntax name, I.`TYPES`_I{`name?*#40`})] +[visit_exp I.`TYPES`_I{`name?*#40`}] +[visit_exp I] +[visit_id I] not free +[visit_exp `name?*#40`] +[visit_id name?*#40] +[visit_exp $disjoint_(syntax name, $concatopt_(syntax name, I.`TAGS`_I{`name?*#70`}))] +[visit_exp $concatopt_(syntax name, I.`TAGS`_I{`name?*#70`})] +[visit_exp I.`TAGS`_I{`name?*#70`}] +[visit_exp I] +[visit_id I] not free +[visit_exp `name?*#70`] +[visit_id name?*#70] +[visit_exp $disjoint_(syntax name, $concatopt_(syntax name, I.`GLOBALS`_I{`name?*#100`}))] +[visit_exp $concatopt_(syntax name, I.`GLOBALS`_I{`name?*#100`})] +[visit_exp I.`GLOBALS`_I{`name?*#100`}] +[visit_exp I] +[visit_id I] not free +[visit_exp `name?*#100`] +[visit_id name?*#100] +[visit_exp $disjoint_(syntax name, $concatopt_(syntax name, I.`MEMS`_I{`name?*#130`}))] +[visit_exp $concatopt_(syntax name, I.`MEMS`_I{`name?*#130`})] +[visit_exp I.`MEMS`_I{`name?*#130`}] +[visit_exp I] +[visit_id I] not free +[visit_exp `name?*#130`] +[visit_id name?*#130] +[visit_exp $disjoint_(syntax name, $concatopt_(syntax name, I.`TABLES`_I{`name?*#160`}))] +[visit_exp $concatopt_(syntax name, I.`TABLES`_I{`name?*#160`})] +[visit_exp I.`TABLES`_I{`name?*#160`}] +[visit_exp I] +[visit_id I] not free +[visit_exp `name?*#160`] +[visit_id name?*#160] +[visit_exp $disjoint_(syntax name, $concatopt_(syntax name, I.`FUNCS`_I{`name?*#190`}))] +[visit_exp $concatopt_(syntax name, I.`FUNCS`_I{`name?*#190`})] +[visit_exp I.`FUNCS`_I{`name?*#190`}] +[visit_exp I] +[visit_id I] not free +[visit_exp `name?*#190`] +[visit_id name?*#190] +[visit_exp $disjoint_(syntax name, $concatopt_(syntax name, I.`DATAS`_I{`name?*#220`}))] +[visit_exp $concatopt_(syntax name, I.`DATAS`_I{`name?*#220`})] +[visit_exp I.`DATAS`_I{`name?*#220`}] +[visit_exp I] +[visit_id I] not free +[visit_exp `name?*#220`] +[visit_id name?*#220] +[visit_exp $disjoint_(syntax name, $concatopt_(syntax name, I.`ELEMS`_I{`name?*#250`}))] +[visit_exp $concatopt_(syntax name, I.`ELEMS`_I{`name?*#250`})] +[visit_exp I.`ELEMS`_I{`name?*#250`}] +[visit_exp I] +[visit_id I] not free +[visit_exp `name?*#250`] +[visit_id name?*#250] +[visit_exp $disjoint_(syntax name, $concatopt_(syntax name, I.`LOCALS`_I{`name?*#280`}))] +[visit_exp $concatopt_(syntax name, I.`LOCALS`_I{`name?*#280`})] +[visit_exp I.`LOCALS`_I{`name?*#280`}] +[visit_exp I] +[visit_id I] not free +[visit_exp `name?*#280`] +[visit_id name?*#280] +[visit_exp $disjoint_(syntax name, $concatopt_(syntax name, I.`LABELS`_I{`name?*#310`}))] +[visit_exp $concatopt_(syntax name, I.`LABELS`_I{`name?*#310`})] +[visit_exp I.`LABELS`_I{`name?*#310`}] +[visit_exp I] +[visit_id I] not free +[visit_exp `name?*#310`] +[visit_id name?*#310] +[scope_enter char*#743] +[scope_enter field*] +[visit_exp $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name{`char*#743`}(field*{field <- `field*`}))]))] +[visit_exp $concatopt_(syntax name, [?(`%`_name{`char*#743`}(field*{field <- `field*`}))])] +[visit_exp [?(`%`_name{`char*#743`}(field*{field <- `field*`}))]] +[visit_exp ?(`%`_name{`char*#743`}(field*{field <- `field*`}))] +[visit_exp `%`_name{`char*#743`}(field*{field <- `field*`})] +[visit_exp `char*#743`] +[visit_id char*#743] not free +[visit_exp (field*{field <- `field*`})] +[visit_exp field*{field <- `field*`}] +[scope_enter field] +[visit_exp field] +[visit_id field] not free +[visit_id field] not free +[scope_exit field] +[visit_exp `field*`] +[visit_id field*] not free +[visit_id field*] no dims +[visit_id char*#743] not free +[visit_id field*] not free +[visit_id field*] no dims +[scope_exit field*] +[scope_exit char*#743] +[visit_exp `char*#743*`] +[visit_id char*#743*] no dims +[visit_id char*#743*] +[visit_exp `field**`] +[visit_id field**] no dims +[visit_id field**] +[visit_exp ([?(`%`_name{`char*#761`}(field*{field <- `field*`}))*{`char*#761` <- `char*#761*`, `field*` <- `field**`}] = I.`FIELDS`_I{`name?**#2`})] +[visit_exp [?(`%`_name{`char*#761`}(field*{field <- `field*`}))*{`char*#761` <- `char*#761*`, `field*` <- `field**`}]] +[visit_exp ?(`%`_name{`char*#761`}(field*{field <- `field*`}))*{`char*#761` <- `char*#761*`, `field*` <- `field**`}] +[scope_enter char*#761] +[scope_enter field*] +[visit_exp ?(`%`_name{`char*#761`}(field*{field <- `field*`}))] +[visit_exp `%`_name{`char*#761`}(field*{field <- `field*`})] +[visit_exp `char*#761`] +[visit_id char*#761] not free +[visit_exp (field*{field <- `field*`})] +[visit_exp field*{field <- `field*`}] +[scope_enter field] +[visit_exp field] +[visit_id field] not free +[visit_id field] not free +[scope_exit field] +[visit_exp `field*`] +[visit_id field*] not free +[visit_id field*] no dims +[visit_id char*#761] not free +[visit_id field*] not free +[visit_id field*] no dims +[scope_exit field*] +[scope_exit char*#761] +[visit_exp `char*#761*`] +[visit_id char*#761*] no dims +[visit_id char*#761*] +[visit_exp `field**`] +[visit_id field**] not free +[visit_id field**] no dims +[visit_exp I.`FIELDS`_I{`name?**#2`}] +[visit_exp I] +[visit_id I] not free +[visit_exp `name?**#2`] +[visit_id name?**#2] +ps' = (ids : name?*) +[check_dims] ids +[check_dims] ids x +dims \ ids = x +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[check_dims] i#94485 id ids x +dims \ ids = i#94485, id, x +[visit_exp x] +[visit_id x] +[visit_exp id] +[visit_id id] +[visit_exp (ids[x!`%`_idx{i#94485}.0] = ?(id))] +[visit_exp ids[x!`%`_idx{i#94485}.0]] +[visit_exp ids] +[visit_id ids] not free +[visit_id ids] no dims +[visit_exp x!`%`_idx{i#94485}.0] +[visit_exp x!`%`_idx{i#94485}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#94485] +[visit_id i#94485] +[visit_exp ?(id)] +[visit_exp id] +[visit_id id] not free +[visit_id ids] not free +ps' = (I : I) +[check_dims] I +[check_dims] I name?*#322 +dims \ I = , name?*#322 +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[visit_exp I.`TYPES`_I{`name?*#322`}] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp `name?*#322`] +[visit_id name?*#322] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I name?*#334 +dims \ I = , name?*#334 +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[visit_exp I.`TAGS`_I{`name?*#334`}] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp `name?*#334`] +[visit_id name?*#334] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I name?*#346 +dims \ I = , name?*#346 +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[visit_exp I.`GLOBALS`_I{`name?*#346`}] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp `name?*#346`] +[visit_id name?*#346] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I name?*#358 +dims \ I = , name?*#358 +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[visit_exp I.`MEMS`_I{`name?*#358`}] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp `name?*#358`] +[visit_id name?*#358] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I name?*#370 +dims \ I = , name?*#370 +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[visit_exp I.`TABLES`_I{`name?*#370`}] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp `name?*#370`] +[visit_id name?*#370] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I name?*#382 +dims \ I = , name?*#382 +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[visit_exp I.`FUNCS`_I{`name?*#382`}] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp `name?*#382`] +[visit_id name?*#382] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I name?*#394 +dims \ I = , name?*#394 +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[visit_exp I.`DATAS`_I{`name?*#394`}] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp `name?*#394`] +[visit_id name?*#394] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I name?*#406 +dims \ I = , name?*#406 +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[visit_exp I.`ELEMS`_I{`name?*#406`}] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp `name?*#406`] +[visit_id name?*#406] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I name?*#418 +dims \ I = , name?*#418 +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[visit_exp I.`LOCALS`_I{`name?*#418`}] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp `name?*#418`] +[visit_id name?*#418] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I name?*#430 +dims \ I = , name?*#430 +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[visit_exp I.`LABELS`_I{`name?*#430`}] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp `name?*#430`] +[visit_id name?*#430] +[visit_id I] not free +ps' = (I : I, x : idx) +[check_dims] I x +[check_dims] I i#95162 name?**#14 x +dims \ I x = , i#95162, name?**#14 +[visit_exp ``] +[visit_id ] +[visit_exp ``] +[visit_id ] not free +[visit_exp I.`FIELDS`_I{`name?**#14`}[x!`%`_idx{i#95162}.0]] +[visit_exp I.`FIELDS`_I{`name?**#14`}] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp `name?**#14`] +[visit_id name?**#14] +[visit_exp x!`%`_idx{i#95162}.0] +[visit_exp x!`%`_idx{i#95162}] +[visit_exp x] +[visit_id x] not free +[visit_id x] no dims +[visit_exp i#95162] +[visit_id i#95162] +[visit_id I] not free +[visit_id x] not free +ps' = (I : I) +[check_dims] I +[check_dims] I tagidx#27 x +dims \ I = tagidx#27, x +[visit_exp `TAG`_externidx{tagidx#27}(x)] +[visit_exp tagidx#27] +[visit_id tagidx#27] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I globalidx#29 x +dims \ I = globalidx#29, x +[visit_exp `GLOBAL`_externidx{globalidx#29}(x)] +[visit_exp globalidx#29] +[visit_id globalidx#29] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I memidx#276 x +dims \ I = memidx#276, x +[visit_exp `MEM`_externidx{memidx#276}(x)] +[visit_exp memidx#276] +[visit_id memidx#276] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I tableidx#152 x +dims \ I = tableidx#152, x +[visit_exp `TABLE`_externidx{tableidx#152}(x)] +[visit_exp tableidx#152] +[visit_id tableidx#152] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I funcidx#3381 x +dims \ I = funcidx#3381, x +[visit_exp `FUNC`_externidx{funcidx#3381}(x)] +[visit_exp funcidx#3381] +[visit_id funcidx#3381] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp `I32`_numtype] +[visit_exp ()] +[check_dims] +dims \ = +[visit_exp `I64`_numtype] +[visit_exp ()] +[check_dims] +dims \ = +[visit_exp `F32`_numtype] +[visit_exp ()] +[check_dims] +dims \ = +[visit_exp `F64`_numtype] +[visit_exp ()] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp `V128`_vectype] +[visit_exp ()] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp `ANY`_heaptype] +[visit_exp ()] +[check_dims] +dims \ = +[visit_exp `EQ`_heaptype] +[visit_exp ()] +[check_dims] +dims \ = +[visit_exp `I31`_heaptype] +[visit_exp ()] +[check_dims] +dims \ = +[visit_exp `STRUCT`_heaptype] +[visit_exp ()] +[check_dims] +dims \ = +[visit_exp `ARRAY`_heaptype] +[visit_exp ()] +[check_dims] +dims \ = +[visit_exp `NONE`_heaptype] +[visit_exp ()] +[check_dims] +dims \ = +[visit_exp `FUNC`_heaptype] +[visit_exp ()] +[check_dims] +dims \ = +[visit_exp `NOFUNC`_heaptype] +[visit_exp ()] +[check_dims] +dims \ = +[visit_exp `EXN`_heaptype] +[visit_exp ()] +[check_dims] +dims \ = +[visit_exp `NOEXN`_heaptype] +[visit_exp ()] +[check_dims] +dims \ = +[visit_exp `EXTERN`_heaptype] +[visit_exp ()] +[check_dims] +dims \ = +[visit_exp `NOEXTERN`_heaptype] +[visit_exp ()] +ps' = (I : I) +[check_dims] I +[check_dims] I ht +dims \ I = ht +[visit_exp ht] +[visit_id ht] +[visit_exp ht] +[visit_id ht] not free +[check_dims] I typeidx#2119 x +dims \ I = typeidx#2119, x +[visit_exp `_IDX`_heaptype{typeidx#2119}(x)] +[visit_exp typeidx#2119] +[visit_id typeidx#2119] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp `NULL`_null] +[visit_exp ()] +ps' = (I : I) +[check_dims] I +[check_dims] I heaptype#1861 ht null null?#1795 +dims \ I = heaptype#1861, ht, null, null?#1795 +[visit_exp `REF`_reftype{`null?#1795`, heaptype#1861}(null?{null <- `null?`}, ht)] +[visit_exp `null?#1795`] +[visit_id null?#1795] +[visit_exp heaptype#1861] +[visit_id heaptype#1861] +[visit_exp (null?{null <- `null?`}, ht)] +[visit_exp null?{null <- `null?`}] +[scope_enter null] +[visit_exp null] +[visit_id null] not free +[visit_id null] not free +[scope_exit null] +[visit_exp `null?`] +[visit_id null?] no dims +[visit_id null?] +[visit_exp ht] +[visit_id ht] +[visit_exp null?{null <- `null?`}] +[scope_enter null] +[visit_exp null] +[visit_id null] not free +[visit_id null] not free +[scope_exit null] +[visit_exp `null?`] +[visit_id null?] not free +[visit_id null?] no dims +[visit_exp ht] +[visit_id ht] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I +[check_dims] I +[check_dims] I +[check_dims] I +[check_dims] I +[check_dims] I +[check_dims] I +[check_dims] I +[check_dims] I +[check_dims] I +[check_dims] I +[check_dims] I +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I nt +dims \ I = nt +[visit_exp (nt : numtype <: valtype)] +[visit_exp nt] +[visit_id nt] +[visit_exp nt] +[visit_id nt] not free +[check_dims] I vt +dims \ I = vt +[visit_exp (vt : vectype <: valtype)] +[visit_exp vt] +[visit_id vt] +[visit_exp vt] +[visit_id vt] not free +[check_dims] I rt +dims \ I = rt +[visit_exp (rt : reftype <: valtype)] +[visit_exp rt] +[visit_id rt] +[visit_exp rt] +[visit_id rt] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp `I8`_packtype] +[visit_exp ()] +[check_dims] +dims \ = +[visit_exp `I16`_packtype] +[visit_exp ()] +ps' = (I : I) +[check_dims] I +[check_dims] I t +dims \ I = t +[visit_exp (t : valtype <: storagetype)] +[visit_exp t] +[visit_id t] +[visit_exp t] +[visit_id t] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I pt +dims \ I = pt +[visit_exp (pt : packtype <: storagetype)] +[visit_exp pt] +[visit_id pt] +[visit_exp pt] +[visit_id pt] not free +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I mut?#1499 storagetype#801 zt +dims \ I = mut?#1499, storagetype#801, zt +[visit_exp `%%`_fieldtype{`mut?#1499`, storagetype#801}(?(), zt)] +[visit_exp `mut?#1499`] +[visit_id mut?#1499] +[visit_exp storagetype#801] +[visit_id storagetype#801] +[visit_exp (?(), zt)] +[visit_exp ?()] +[visit_exp zt] +[visit_id zt] +[visit_exp zt] +[visit_id zt] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I mut?#1511 storagetype#813 zt +dims \ I = mut?#1511, storagetype#813, zt +[visit_exp `%%`_fieldtype{`mut?#1511`, storagetype#813}(?(`MUT`_mut), zt)] +[visit_exp `mut?#1511`] +[visit_id mut?#1511] +[visit_exp storagetype#813] +[visit_id storagetype#813] +[visit_exp (?(`MUT`_mut), zt)] +[visit_exp ?(`MUT`_mut)] +[visit_exp `MUT`_mut] +[visit_exp ()] +[visit_exp zt] +[visit_id zt] +[visit_exp zt] +[visit_id zt] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +ps' = (I : I) +[check_dims] I _ +[check_dims] I char*#963 char*#969 ft id +dims \ I = char*#963, char*#969, ft, id +[visit_exp (ft, ?(`%`_name{`char*#969`}(lift(id?{id <- `id?`}))))] +[visit_exp ft] +[visit_id ft] +[visit_exp ?(`%`_name{`char*#969`}(lift(id?{id <- `id?`})))] +[visit_exp `%`_name{`char*#969`}(lift(id?{id <- `id?`}))] +[visit_exp `char*#969`] +[visit_id char*#969] +[visit_exp (lift(id?{id <- `id?`}))] +[visit_exp lift(id?{id <- `id?`})] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] no dims +[visit_id id?] +[visit_exp ?(`%`_name{`char*#963`}(lift(id?{id <- `id?`})))] +[visit_exp `%`_name{`char*#963`}(lift(id?{id <- `id?`}))] +[visit_exp `char*#963`] +[visit_id char*#963] +[visit_exp (lift(id?{id <- `id?`}))] +[visit_exp lift(id?{id <- `id?`})] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] not free +[visit_id id?] no dims +[visit_exp ft] +[visit_id ft] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +[visit_id _] not free +[visit_id _] no dims +[visit_id _] not free +[visit_id _] no dims +ps' = (I : I) +[check_dims] I _ +[check_dims] I +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +[visit_id _] not free +[visit_id _] no dims +[visit_id _] not free +[visit_id _] no dims +ps' = (I : I) +[check_dims] I _ +[check_dims] I char*#975 char*#981 id t +dims \ I = char*#975, char*#981, id, t +[visit_exp (t, ?(`%`_name{`char*#981`}(lift(id?{id <- `id?`}))))] +[visit_exp t] +[visit_id t] +[visit_exp ?(`%`_name{`char*#981`}(lift(id?{id <- `id?`})))] +[visit_exp `%`_name{`char*#981`}(lift(id?{id <- `id?`}))] +[visit_exp `char*#981`] +[visit_id char*#981] +[visit_exp (lift(id?{id <- `id?`}))] +[visit_exp lift(id?{id <- `id?`})] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] no dims +[visit_id id?] +[visit_exp ?(`%`_name{`char*#975`}(lift(id?{id <- `id?`})))] +[visit_exp `%`_name{`char*#975`}(lift(id?{id <- `id?`}))] +[visit_exp `char*#975`] +[visit_id char*#975] +[visit_exp (lift(id?{id <- `id?`}))] +[visit_exp lift(id?{id <- `id?`})] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] not free +[visit_id id?] no dims +[visit_exp t] +[visit_id t] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +[visit_id _] not free +[visit_id _] no dims +[visit_id _] not free +[visit_id _] no dims +ps' = (I : I) +[check_dims] I _ +[check_dims] I +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +[visit_id _] not free +[visit_id _] no dims +[visit_id _] not free +[visit_id _] no dims +ps' = (I : I) +[check_dims] I +[check_dims] I t +dims \ I = t +[visit_exp t] +[visit_id t] +[visit_exp t] +[visit_id t] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +ps' = (I : I) +[check_dims] I _ +[check_dims] I X*#13361 _ char*#1005 char*#987 deftype?*#2 ft id name?*#431 name?*#432 name?*#433 name?*#434 name?*#435 name?*#436 name?*#437 name?*#438 name?*#439 name?*#440 name?**#15 +dims \ I = X*#13361, _, char*#1005, char*#987, deftype?*#2, ft, id, name?*#431, name?*#432, name?*#433, name?*#434, name?*#435, name?*#436, name?*#437, name?*#438, name?*#439, name?*#440, name?**#15 +[visit_exp (`STRUCT`_comptype(`%`_list{`X*#13361`}(ft*{ft <- `ft*`})), {`TYPES`{`name?*#431`} [], `TAGS`{`name?*#432`} [], `GLOBALS`{`name?*#433`} [], `MEMS`{`name?*#434`} [], `TABLES`{`name?*#435`} [], `FUNCS`{`name?*#436`} [], `DATAS`{`name?*#437`} [], `ELEMS`{`name?*#438`} [], `LOCALS`{`name?*#439`} [], `LABELS`{`name?*#440`} [], `FIELDS`{`name?**#15`} [?(`%`_name{`char*#1005`}(lift(id?{id <- `id?`})))*{`char*#1005` <- `char*#1005*`, `id?` <- `id?*`}], `TYPEDEFS`{`deftype?*#2`} []})] +[visit_exp `STRUCT`_comptype(`%`_list{`X*#13361`}(ft*{ft <- `ft*`}))] +[visit_exp (`%`_list{`X*#13361`}(ft*{ft <- `ft*`}))] +[visit_exp `%`_list{`X*#13361`}(ft*{ft <- `ft*`})] +[visit_exp `X*#13361`] +[visit_id X*#13361] +[visit_exp (ft*{ft <- `ft*`})] +[visit_exp ft*{ft <- `ft*`}] +[scope_enter ft] +[visit_exp ft] +[visit_id ft] not free +[visit_id ft] not free +[scope_exit ft] +[visit_exp `ft*`] +[visit_id ft*] no dims +[visit_id ft*] +[visit_exp {`TYPES`{`name?*#431`} [], `TAGS`{`name?*#432`} [], `GLOBALS`{`name?*#433`} [], `MEMS`{`name?*#434`} [], `TABLES`{`name?*#435`} [], `FUNCS`{`name?*#436`} [], `DATAS`{`name?*#437`} [], `ELEMS`{`name?*#438`} [], `LOCALS`{`name?*#439`} [], `LABELS`{`name?*#440`} [], `FIELDS`{`name?**#15`} [?(`%`_name{`char*#1005`}(lift(id?{id <- `id?`})))*{`char*#1005` <- `char*#1005*`, `id?` <- `id?*`}], `TYPEDEFS`{`deftype?*#2`} []}] +[visit_exp `name?*#431`] +[visit_id name?*#431] +[visit_exp []] +[visit_exp `name?*#432`] +[visit_id name?*#432] +[visit_exp []] +[visit_exp `name?*#433`] +[visit_id name?*#433] +[visit_exp []] +[visit_exp `name?*#434`] +[visit_id name?*#434] +[visit_exp []] +[visit_exp `name?*#435`] +[visit_id name?*#435] +[visit_exp []] +[visit_exp `name?*#436`] +[visit_id name?*#436] +[visit_exp []] +[visit_exp `name?*#437`] +[visit_id name?*#437] +[visit_exp []] +[visit_exp `name?*#438`] +[visit_id name?*#438] +[visit_exp []] +[visit_exp `name?*#439`] +[visit_id name?*#439] +[visit_exp []] +[visit_exp `name?*#440`] +[visit_id name?*#440] +[visit_exp []] +[visit_exp `name?**#15`] +[visit_id name?**#15] +[visit_exp [?(`%`_name{`char*#1005`}(lift(id?{id <- `id?`})))*{`char*#1005` <- `char*#1005*`, `id?` <- `id?*`}]] +[visit_exp ?(`%`_name{`char*#1005`}(lift(id?{id <- `id?`})))*{`char*#1005` <- `char*#1005*`, `id?` <- `id?*`}] +[scope_enter char*#1005] +[scope_enter id?] +[visit_exp ?(`%`_name{`char*#1005`}(lift(id?{id <- `id?`})))] +[visit_exp `%`_name{`char*#1005`}(lift(id?{id <- `id?`}))] +[visit_exp `char*#1005`] +[visit_id char*#1005] not free +[visit_exp (lift(id?{id <- `id?`}))] +[visit_exp lift(id?{id <- `id?`})] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] not free +[visit_id id?] no dims +[visit_id char*#1005] not free +[visit_id id?] not free +[visit_id id?] no dims +[scope_exit id?] +[scope_exit char*#1005] +[visit_exp `char*#1005*`] +[visit_id char*#1005*] no dims +[visit_id char*#1005*] +[visit_exp `id?*`] +[visit_id id?*] no dims +[visit_id id?*] +[visit_exp `deftype?*#2`] +[visit_id deftype?*#2] +[visit_exp []] +[visit_exp (ft, ?(`%`_name{`char*#987`}(lift(id?{id <- `id?`}))))*{`char*#987` <- `char*#987*`, ft <- `ft*`, `id?` <- `id?*`}] +[scope_enter char*#987] +[scope_enter ft] +[scope_enter id?] +[visit_exp (ft, ?(`%`_name{`char*#987`}(lift(id?{id <- `id?`}))))] +[visit_exp ft] +[visit_id ft] not free +[visit_exp ?(`%`_name{`char*#987`}(lift(id?{id <- `id?`})))] +[visit_exp `%`_name{`char*#987`}(lift(id?{id <- `id?`}))] +[visit_exp `char*#987`] +[visit_id char*#987] not free +[visit_exp (lift(id?{id <- `id?`}))] +[visit_exp lift(id?{id <- `id?`})] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] not free +[visit_id id?] no dims +[visit_id char*#987] not free +[visit_id ft] not free +[visit_id id?] not free +[visit_id id?] no dims +[scope_exit id?] +[scope_exit ft] +[scope_exit char*#987] +[visit_exp `char*#987*`] +[visit_id char*#987*] no dims +[visit_id char*#987*] +[visit_exp `ft*`] +[visit_id ft*] not free +[visit_id ft*] no dims +[visit_exp `id?*`] +[visit_id id?*] not free +[visit_id id?*] no dims +[visit_id _] not free +[visit_id _] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I deftype?*#3 fieldtype#61 ft name?*#441 name?*#442 name?*#443 name?*#444 name?*#445 name?*#446 name?*#447 name?*#448 name?*#449 name?*#450 name?**#16 +dims \ I = deftype?*#3, fieldtype#61, ft, name?*#441, name?*#442, name?*#443, name?*#444, name?*#445, name?*#446, name?*#447, name?*#448, name?*#449, name?*#450, name?**#16 +[visit_exp (`ARRAY`_comptype{fieldtype#61}(ft), {`TYPES`{`name?*#441`} [], `TAGS`{`name?*#442`} [], `GLOBALS`{`name?*#443`} [], `MEMS`{`name?*#444`} [], `TABLES`{`name?*#445`} [], `FUNCS`{`name?*#446`} [], `DATAS`{`name?*#447`} [], `ELEMS`{`name?*#448`} [], `LOCALS`{`name?*#449`} [], `LABELS`{`name?*#450`} [], `FIELDS`{`name?**#16`} [], `TYPEDEFS`{`deftype?*#3`} []})] +[visit_exp `ARRAY`_comptype{fieldtype#61}(ft)] +[visit_exp fieldtype#61] +[visit_id fieldtype#61] +[visit_exp (ft)] +[visit_exp ft] +[visit_id ft] +[visit_exp {`TYPES`{`name?*#441`} [], `TAGS`{`name?*#442`} [], `GLOBALS`{`name?*#443`} [], `MEMS`{`name?*#444`} [], `TABLES`{`name?*#445`} [], `FUNCS`{`name?*#446`} [], `DATAS`{`name?*#447`} [], `ELEMS`{`name?*#448`} [], `LOCALS`{`name?*#449`} [], `LABELS`{`name?*#450`} [], `FIELDS`{`name?**#16`} [], `TYPEDEFS`{`deftype?*#3`} []}] +[visit_exp `name?*#441`] +[visit_id name?*#441] +[visit_exp []] +[visit_exp `name?*#442`] +[visit_id name?*#442] +[visit_exp []] +[visit_exp `name?*#443`] +[visit_id name?*#443] +[visit_exp []] +[visit_exp `name?*#444`] +[visit_id name?*#444] +[visit_exp []] +[visit_exp `name?*#445`] +[visit_id name?*#445] +[visit_exp []] +[visit_exp `name?*#446`] +[visit_id name?*#446] +[visit_exp []] +[visit_exp `name?*#447`] +[visit_id name?*#447] +[visit_exp []] +[visit_exp `name?*#448`] +[visit_id name?*#448] +[visit_exp []] +[visit_exp `name?*#449`] +[visit_id name?*#449] +[visit_exp []] +[visit_exp `name?*#450`] +[visit_id name?*#450] +[visit_exp []] +[visit_exp `name?**#16`] +[visit_id name?**#16] +[visit_exp []] +[visit_exp `deftype?*#3`] +[visit_id deftype?*#3] +[visit_exp []] +[visit_exp ft] +[visit_id ft] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I X*#13376 X*#13389 _ char*#1011 deftype?*#4 id name?*#451 name?*#452 name?*#453 name?*#454 name?*#455 name?*#456 name?*#457 name?*#458 name?*#459 name?*#460 name?**#17 resulttype#3032 t_1 t_2 +dims \ I = X*#13376, X*#13389, _, char*#1011, deftype?*#4, id, name?*#451, name?*#452, name?*#453, name?*#454, name?*#455, name?*#456, name?*#457, name?*#458, name?*#459, name?*#460, name?**#17, resulttype#3032, t_1, t_2 +[visit_exp (`FUNC%->%`_comptype{resulttype#3032}(`%`_resulttype{`X*#13376`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13389`}(t_2*{t_2 <- `t_2*`})), {`TYPES`{`name?*#451`} [], `TAGS`{`name?*#452`} [], `GLOBALS`{`name?*#453`} [], `MEMS`{`name?*#454`} [], `TABLES`{`name?*#455`} [], `FUNCS`{`name?*#456`} [], `DATAS`{`name?*#457`} [], `ELEMS`{`name?*#458`} [], `LOCALS`{`name?*#459`} [], `LABELS`{`name?*#460`} [], `FIELDS`{`name?**#17`} [], `TYPEDEFS`{`deftype?*#4`} []})] +[visit_exp `FUNC%->%`_comptype{resulttype#3032}(`%`_resulttype{`X*#13376`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13389`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#3032] +[visit_id resulttype#3032] +[visit_exp (`%`_resulttype{`X*#13376`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13389`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#13376`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#13376`] +[visit_id X*#13376] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] no dims +[visit_id t_1*] +[visit_exp `%`_resulttype{`X*#13389`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#13389`] +[visit_id X*#13389] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] no dims +[visit_id t_2*] +[visit_exp {`TYPES`{`name?*#451`} [], `TAGS`{`name?*#452`} [], `GLOBALS`{`name?*#453`} [], `MEMS`{`name?*#454`} [], `TABLES`{`name?*#455`} [], `FUNCS`{`name?*#456`} [], `DATAS`{`name?*#457`} [], `ELEMS`{`name?*#458`} [], `LOCALS`{`name?*#459`} [], `LABELS`{`name?*#460`} [], `FIELDS`{`name?**#17`} [], `TYPEDEFS`{`deftype?*#4`} []}] +[visit_exp `name?*#451`] +[visit_id name?*#451] +[visit_exp []] +[visit_exp `name?*#452`] +[visit_id name?*#452] +[visit_exp []] +[visit_exp `name?*#453`] +[visit_id name?*#453] +[visit_exp []] +[visit_exp `name?*#454`] +[visit_id name?*#454] +[visit_exp []] +[visit_exp `name?*#455`] +[visit_id name?*#455] +[visit_exp []] +[visit_exp `name?*#456`] +[visit_id name?*#456] +[visit_exp []] +[visit_exp `name?*#457`] +[visit_id name?*#457] +[visit_exp []] +[visit_exp `name?*#458`] +[visit_id name?*#458] +[visit_exp []] +[visit_exp `name?*#459`] +[visit_id name?*#459] +[visit_exp []] +[visit_exp `name?*#460`] +[visit_id name?*#460] +[visit_exp []] +[visit_exp `name?**#17`] +[visit_id name?**#17] +[visit_exp []] +[visit_exp `deftype?*#4`] +[visit_id deftype?*#4] +[visit_exp []] +[visit_exp (t_1, ?(`%`_name{`char*#1011`}(lift(id?{id <- `id?`}))))*{`char*#1011` <- `char*#1011*`, `id?` <- `id?*`, t_1 <- `t_1*`}] +[scope_enter char*#1011] +[scope_enter id?] +[scope_enter t_1] +[visit_exp (t_1, ?(`%`_name{`char*#1011`}(lift(id?{id <- `id?`}))))] +[visit_exp t_1] +[visit_id t_1] not free +[visit_exp ?(`%`_name{`char*#1011`}(lift(id?{id <- `id?`})))] +[visit_exp `%`_name{`char*#1011`}(lift(id?{id <- `id?`}))] +[visit_exp `char*#1011`] +[visit_id char*#1011] not free +[visit_exp (lift(id?{id <- `id?`}))] +[visit_exp lift(id?{id <- `id?`})] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] not free +[visit_id id?] no dims +[visit_id char*#1011] not free +[visit_id id?] not free +[visit_id id?] no dims +[visit_id t_1] not free +[scope_exit t_1] +[scope_exit id?] +[scope_exit char*#1011] +[visit_exp `char*#1011*`] +[visit_id char*#1011*] no dims +[visit_id char*#1011*] +[visit_exp `id?*`] +[visit_id id?*] no dims +[visit_id id?*] +[visit_exp `t_1*`] +[visit_id t_1*] not free +[visit_id t_1*] no dims +[visit_id _] not free +[visit_id _] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] not free +[visit_id t_2*] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +[visit_id _] not free +[visit_id _] no dims +[visit_id _] not free +[visit_id _] no dims +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp `FINAL`_final] +[visit_exp ()] +ps' = (I : I) +[check_dims] I _ +[check_dims] I I' comptype#523 ct fin final?#523 typeidx#2121 typeuse*#523 x +dims \ I = I', comptype#523, ct, fin, final?#523, typeidx#2121, typeuse*#523, x +[visit_exp (`SUB`_subtype{`final?#523`, `typeuse*#523`, comptype#523}(fin?{fin <- `fin?`}, `_IDX`_typeuse{typeidx#2121}(x)*{typeidx#2121 <- `typeidx#2121*`, x <- `x*`}, ct), I')] +[visit_exp `SUB`_subtype{`final?#523`, `typeuse*#523`, comptype#523}(fin?{fin <- `fin?`}, `_IDX`_typeuse{typeidx#2121}(x)*{typeidx#2121 <- `typeidx#2121*`, x <- `x*`}, ct)] +[visit_exp `final?#523`] +[visit_id final?#523] +[visit_exp `typeuse*#523`] +[visit_id typeuse*#523] +[visit_exp comptype#523] +[visit_id comptype#523] +[visit_exp (fin?{fin <- `fin?`}, `_IDX`_typeuse{typeidx#2121}(x)*{typeidx#2121 <- `typeidx#2121*`, x <- `x*`}, ct)] +[visit_exp fin?{fin <- `fin?`}] +[scope_enter fin] +[visit_exp fin] +[visit_id fin] not free +[visit_id fin] not free +[scope_exit fin] +[visit_exp `fin?`] +[visit_id fin?] no dims +[visit_id fin?] +[visit_exp `_IDX`_typeuse{typeidx#2121}(x)*{typeidx#2121 <- `typeidx#2121*`, x <- `x*`}] +[scope_enter typeidx#2121] +[scope_enter x] +[visit_exp `_IDX`_typeuse{typeidx#2121}(x)] +[visit_exp typeidx#2121] +[visit_id typeidx#2121] not free +[visit_exp (x)] +[visit_exp x] +[visit_id x] not free +[visit_id typeidx#2121] not free +[visit_id x] not free +[scope_exit x] +[scope_exit typeidx#2121] +[visit_exp `typeidx#2121*`] +[visit_id typeidx#2121*] no dims +[visit_id typeidx#2121*] +[visit_exp `x*`] +[visit_id x*] no dims +[visit_id x*] +[visit_exp ct] +[visit_id ct] +[visit_exp I'] +[visit_id I'] +[visit_exp fin?{fin <- `fin?`}] +[scope_enter fin] +[visit_exp fin] +[visit_id fin] not free +[visit_id fin] not free +[scope_exit fin] +[visit_exp `fin?`] +[visit_id fin?] not free +[visit_id fin?] no dims +[visit_exp x*{x <- `x*`}] +[scope_enter x] +[visit_exp x] +[visit_id x] not free +[visit_id x] not free +[scope_exit x] +[visit_exp `x*`] +[visit_id x*] not free +[visit_id x*] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp (ct, I')] +[visit_exp ct] +[visit_id ct] not free +[visit_exp I'] +[visit_id I'] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +[visit_id _] not free +[visit_id _] no dims +[visit_id _] not free +[visit_id _] no dims +ps' = (I : I) +[check_dims] I _ +[check_dims] I +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +[visit_id _] not free +[visit_id _] no dims +[visit_id _] not free +[visit_id _] no dims +ps' = (I : I) +[check_dims] I _ +[check_dims] I I' char*#1017 char*#1023 deftype?*#5 id name?*#461 name?*#462 name?*#463 name?*#464 name?*#465 name?*#466 name?*#467 name?*#468 name?*#469 name?*#470 name?**#18 st +dims \ I = I', char*#1017, char*#1023, deftype?*#5, id, name?*#461, name?*#462, name?*#463, name?*#464, name?*#465, name?*#466, name?*#467, name?*#468, name?*#469, name?*#470, name?**#18, st +[visit_exp (st, I' +++ {`TYPES`{`name?*#461`} [?(`%`_name{`char*#1023`}(lift(id?{id <- `id?`})))], `TAGS`{`name?*#462`} [], `GLOBALS`{`name?*#463`} [], `MEMS`{`name?*#464`} [], `TABLES`{`name?*#465`} [], `FUNCS`{`name?*#466`} [], `DATAS`{`name?*#467`} [], `ELEMS`{`name?*#468`} [], `LOCALS`{`name?*#469`} [], `LABELS`{`name?*#470`} [], `FIELDS`{`name?**#18`} [], `TYPEDEFS`{`deftype?*#5`} []})] +[visit_exp st] +[visit_id st] +[visit_exp I' +++ {`TYPES`{`name?*#461`} [?(`%`_name{`char*#1023`}(lift(id?{id <- `id?`})))], `TAGS`{`name?*#462`} [], `GLOBALS`{`name?*#463`} [], `MEMS`{`name?*#464`} [], `TABLES`{`name?*#465`} [], `FUNCS`{`name?*#466`} [], `DATAS`{`name?*#467`} [], `ELEMS`{`name?*#468`} [], `LOCALS`{`name?*#469`} [], `LABELS`{`name?*#470`} [], `FIELDS`{`name?**#18`} [], `TYPEDEFS`{`deftype?*#5`} []}] +[visit_exp I'] +[visit_id I'] +[visit_exp {`TYPES`{`name?*#461`} [?(`%`_name{`char*#1023`}(lift(id?{id <- `id?`})))], `TAGS`{`name?*#462`} [], `GLOBALS`{`name?*#463`} [], `MEMS`{`name?*#464`} [], `TABLES`{`name?*#465`} [], `FUNCS`{`name?*#466`} [], `DATAS`{`name?*#467`} [], `ELEMS`{`name?*#468`} [], `LOCALS`{`name?*#469`} [], `LABELS`{`name?*#470`} [], `FIELDS`{`name?**#18`} [], `TYPEDEFS`{`deftype?*#5`} []}] +[visit_exp `name?*#461`] +[visit_id name?*#461] +[visit_exp [?(`%`_name{`char*#1023`}(lift(id?{id <- `id?`})))]] +[visit_exp ?(`%`_name{`char*#1023`}(lift(id?{id <- `id?`})))] +[visit_exp `%`_name{`char*#1023`}(lift(id?{id <- `id?`}))] +[visit_exp `char*#1023`] +[visit_id char*#1023] +[visit_exp (lift(id?{id <- `id?`}))] +[visit_exp lift(id?{id <- `id?`})] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] no dims +[visit_id id?] +[visit_exp `name?*#462`] +[visit_id name?*#462] +[visit_exp []] +[visit_exp `name?*#463`] +[visit_id name?*#463] +[visit_exp []] +[visit_exp `name?*#464`] +[visit_id name?*#464] +[visit_exp []] +[visit_exp `name?*#465`] +[visit_id name?*#465] +[visit_exp []] +[visit_exp `name?*#466`] +[visit_id name?*#466] +[visit_exp []] +[visit_exp `name?*#467`] +[visit_id name?*#467] +[visit_exp []] +[visit_exp `name?*#468`] +[visit_id name?*#468] +[visit_exp []] +[visit_exp `name?*#469`] +[visit_id name?*#469] +[visit_exp []] +[visit_exp `name?*#470`] +[visit_id name?*#470] +[visit_exp []] +[visit_exp `name?**#18`] +[visit_id name?**#18] +[visit_exp []] +[visit_exp `deftype?*#5`] +[visit_id deftype?*#5] +[visit_exp []] +[visit_exp ?(`%`_name{`char*#1017`}(lift(id?{id <- `id?`})))] +[visit_exp `%`_name{`char*#1017`}(lift(id?{id <- `id?`}))] +[visit_exp `char*#1017`] +[visit_id char*#1017] +[visit_exp (lift(id?{id <- `id?`}))] +[visit_exp lift(id?{id <- `id?`})] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] not free +[visit_id id?] no dims +[visit_exp (st, I')] +[visit_exp st] +[visit_id st] not free +[visit_exp I'] +[visit_id I'] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +[visit_id _] not free +[visit_id _] no dims +[visit_id _] not free +[visit_id _] no dims +ps' = (I : I) +[check_dims] I _ +[check_dims] I I' X*#13404 _ st +dims \ I = I', X*#13404, _, st +[visit_exp (`REC`_rectype(`%`_list{`X*#13404`}(st*{st <- `st*`})), $concat_idctxt(I'*{I' <- `I'*`}))] +[visit_exp `REC`_rectype(`%`_list{`X*#13404`}(st*{st <- `st*`}))] +[visit_exp (`%`_list{`X*#13404`}(st*{st <- `st*`}))] +[visit_exp `%`_list{`X*#13404`}(st*{st <- `st*`})] +[visit_exp `X*#13404`] +[visit_id X*#13404] +[visit_exp (st*{st <- `st*`})] +[visit_exp st*{st <- `st*`}] +[scope_enter st] +[visit_exp st] +[visit_id st] not free +[visit_id st] not free +[scope_exit st] +[visit_exp `st*`] +[visit_id st*] no dims +[visit_id st*] +[visit_exp $concat_idctxt(I'*{I' <- `I'*`})] +[visit_exp I'*{I' <- `I'*`}] +[scope_enter I'] +[visit_exp I'] +[visit_id I'] not free +[visit_id I'] not free +[scope_exit I'] +[visit_exp `I'*`] +[visit_id I'*] no dims +[visit_id I'*] +[visit_exp (st, I')*{I' <- `I'*`, st <- `st*`}] +[scope_enter I'] +[scope_enter st] +[visit_exp (st, I')] +[visit_exp st] +[visit_id st] not free +[visit_exp I'] +[visit_id I'] not free +[visit_id I'] not free +[visit_id st] not free +[scope_exit st] +[scope_exit I'] +[visit_exp `I'*`] +[visit_id I'*] not free +[visit_id I'*] no dims +[visit_exp `st*`] +[visit_id st*] not free +[visit_id st*] no dims +[visit_id _] not free +[visit_id _] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +[visit_id _] not free +[visit_id _] no dims +[visit_id _] not free +[visit_id _] no dims +ps' = (I : I) +[check_dims] I _ +[check_dims] I +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +[visit_id _] not free +[visit_id _] no dims +[visit_id _] not free +[visit_id _] no dims +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp `I32`_addrtype] +[visit_exp ()] +[check_dims] +dims \ = +[visit_exp `I64`_addrtype] +[visit_exp ()] +ps' = +[check_dims] +[check_dims] +ps' = +[check_dims] +[check_dims] i#95568 i#95590 n u64#571 u64?#545 +dims \ = i#95568, i#95590, n, u64#571, u64?#545 +[visit_exp `[%..%]`_limits{u64#571, `u64?#545`}(`%`_u64{i#95590}(n), ?())] +[visit_exp u64#571] +[visit_id u64#571] +[visit_exp `u64?#545`] +[visit_id u64?#545] +[visit_exp (`%`_u64{i#95590}(n), ?())] +[visit_exp `%`_u64{i#95590}(n)] +[visit_exp i#95590] +[visit_id i#95590] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp ?()] +[visit_exp `%`_u64{i#95568}(n)] +[visit_exp i#95568] +[visit_id i#95568] +[visit_exp (n)] +[visit_exp n] +[visit_id n] not free +[check_dims] i#95615 i#95642 i#95666 i#95688 m n u64#583 u64?#557 +dims \ = i#95615, i#95642, i#95666, i#95688, m, n, u64#583, u64?#557 +[visit_exp `[%..%]`_limits{u64#583, `u64?#557`}(`%`_u64{i#95666}(n), ?(`%`_u64{i#95688}(m)))] +[visit_exp u64#583] +[visit_id u64#583] +[visit_exp `u64?#557`] +[visit_id u64?#557] +[visit_exp (`%`_u64{i#95666}(n), ?(`%`_u64{i#95688}(m)))] +[visit_exp `%`_u64{i#95666}(n)] +[visit_exp i#95666] +[visit_id i#95666] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp ?(`%`_u64{i#95688}(m))] +[visit_exp `%`_u64{i#95688}(m)] +[visit_exp i#95688] +[visit_id i#95688] +[visit_exp (m)] +[visit_exp m] +[visit_id m] +[visit_exp `%`_u64{i#95615}(n)] +[visit_exp i#95615] +[visit_id i#95615] +[visit_exp (n)] +[visit_exp n] +[visit_id n] not free +[visit_exp `%`_u64{i#95642}(m)] +[visit_exp i#95642] +[visit_id i#95642] +[visit_exp (m)] +[visit_exp m] +[visit_id m] not free +ps' = (I : I) +[check_dims] I +[check_dims] I I' typeidx#2123 x +dims \ I = I', typeidx#2123, x +[visit_exp `_IDX`_tagtype{typeidx#2123}(x)] +[visit_exp typeidx#2123] +[visit_id typeidx#2123] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp (x, I')] +[visit_exp x] +[visit_id x] not free +[visit_exp I'] +[visit_id I'] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I mut?#1561 t valtype#1167 +dims \ I = mut?#1561, t, valtype#1167 +[visit_exp `%%`_globaltype{`mut?#1561`, valtype#1167}(?(), t)] +[visit_exp `mut?#1561`] +[visit_id mut?#1561] +[visit_exp valtype#1167] +[visit_id valtype#1167] +[visit_exp (?(), t)] +[visit_exp ?()] +[visit_exp t] +[visit_id t] +[visit_exp t] +[visit_id t] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I mut?#1573 t valtype#1179 +dims \ I = mut?#1573, t, valtype#1179 +[visit_exp `%%`_globaltype{`mut?#1573`, valtype#1179}(?(`MUT`_mut), t)] +[visit_exp `mut?#1573`] +[visit_id mut?#1573] +[visit_exp valtype#1179] +[visit_id valtype#1179] +[visit_exp (?(`MUT`_mut), t)] +[visit_exp ?(`MUT`_mut)] +[visit_exp `MUT`_mut] +[visit_exp ()] +[visit_exp t] +[visit_id t] +[visit_exp t] +[visit_id t] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I addrtype#1483 at lim limits#1483 +dims \ I = addrtype#1483, at, lim, limits#1483 +[visit_exp `%%PAGE`_memtype{addrtype#1483, limits#1483}(at, lim)] +[visit_exp addrtype#1483] +[visit_id addrtype#1483] +[visit_exp limits#1483] +[visit_id limits#1483] +[visit_exp (at, lim)] +[visit_exp at] +[visit_id at] +[visit_exp lim] +[visit_id lim] +[visit_exp at] +[visit_id at] not free +[visit_exp lim] +[visit_id lim] not free +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I addrtype#1495 at lim limits#1495 reftype#4291 rt +dims \ I = addrtype#1495, at, lim, limits#1495, reftype#4291, rt +[visit_exp `%%%`_tabletype{addrtype#1495, limits#1495, reftype#4291}(at, lim, rt)] +[visit_exp addrtype#1495] +[visit_id addrtype#1495] +[visit_exp limits#1495] +[visit_id limits#1495] +[visit_exp reftype#4291] +[visit_id reftype#4291] +[visit_exp (at, lim, rt)] +[visit_exp at] +[visit_id at] +[visit_exp lim] +[visit_id lim] +[visit_exp rt] +[visit_id rt] +[visit_exp at] +[visit_id at] not free +[visit_exp lim] +[visit_id lim] not free +[visit_exp rt] +[visit_id rt] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +ps' = (I : I) +[check_dims] I _ +[check_dims] I char*#1029 char*#1035 deftype?*#6 id jt name?*#471 name?*#472 name?*#473 name?*#474 name?*#475 name?*#476 name?*#477 name?*#478 name?*#479 name?*#480 name?**#19 tagtype#436 +dims \ I = char*#1029, char*#1035, deftype?*#6, id, jt, name?*#471, name?*#472, name?*#473, name?*#474, name?*#475, name?*#476, name?*#477, name?*#478, name?*#479, name?*#480, name?**#19, tagtype#436 +[visit_exp (`TAG`_externtype{tagtype#436}(jt), {`TYPES`{`name?*#471`} [], `TAGS`{`name?*#472`} [?(`%`_name{`char*#1035`}(lift(id?{id <- `id?`})))], `GLOBALS`{`name?*#473`} [], `MEMS`{`name?*#474`} [], `TABLES`{`name?*#475`} [], `FUNCS`{`name?*#476`} [], `DATAS`{`name?*#477`} [], `ELEMS`{`name?*#478`} [], `LOCALS`{`name?*#479`} [], `LABELS`{`name?*#480`} [], `FIELDS`{`name?**#19`} [], `TYPEDEFS`{`deftype?*#6`} []})] +[visit_exp `TAG`_externtype{tagtype#436}(jt)] +[visit_exp tagtype#436] +[visit_id tagtype#436] +[visit_exp (jt)] +[visit_exp jt] +[visit_id jt] +[visit_exp {`TYPES`{`name?*#471`} [], `TAGS`{`name?*#472`} [?(`%`_name{`char*#1035`}(lift(id?{id <- `id?`})))], `GLOBALS`{`name?*#473`} [], `MEMS`{`name?*#474`} [], `TABLES`{`name?*#475`} [], `FUNCS`{`name?*#476`} [], `DATAS`{`name?*#477`} [], `ELEMS`{`name?*#478`} [], `LOCALS`{`name?*#479`} [], `LABELS`{`name?*#480`} [], `FIELDS`{`name?**#19`} [], `TYPEDEFS`{`deftype?*#6`} []}] +[visit_exp `name?*#471`] +[visit_id name?*#471] +[visit_exp []] +[visit_exp `name?*#472`] +[visit_id name?*#472] +[visit_exp [?(`%`_name{`char*#1035`}(lift(id?{id <- `id?`})))]] +[visit_exp ?(`%`_name{`char*#1035`}(lift(id?{id <- `id?`})))] +[visit_exp `%`_name{`char*#1035`}(lift(id?{id <- `id?`}))] +[visit_exp `char*#1035`] +[visit_id char*#1035] +[visit_exp (lift(id?{id <- `id?`}))] +[visit_exp lift(id?{id <- `id?`})] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] no dims +[visit_id id?] +[visit_exp `name?*#473`] +[visit_id name?*#473] +[visit_exp []] +[visit_exp `name?*#474`] +[visit_id name?*#474] +[visit_exp []] +[visit_exp `name?*#475`] +[visit_id name?*#475] +[visit_exp []] +[visit_exp `name?*#476`] +[visit_id name?*#476] +[visit_exp []] +[visit_exp `name?*#477`] +[visit_id name?*#477] +[visit_exp []] +[visit_exp `name?*#478`] +[visit_id name?*#478] +[visit_exp []] +[visit_exp `name?*#479`] +[visit_id name?*#479] +[visit_exp []] +[visit_exp `name?*#480`] +[visit_id name?*#480] +[visit_exp []] +[visit_exp `name?**#19`] +[visit_id name?**#19] +[visit_exp []] +[visit_exp `deftype?*#6`] +[visit_id deftype?*#6] +[visit_exp []] +[visit_exp ?(`%`_name{`char*#1029`}(lift(id?{id <- `id?`})))] +[visit_exp `%`_name{`char*#1029`}(lift(id?{id <- `id?`}))] +[visit_exp `char*#1029`] +[visit_id char*#1029] +[visit_exp (lift(id?{id <- `id?`}))] +[visit_exp lift(id?{id <- `id?`})] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] not free +[visit_id id?] no dims +[visit_exp jt] +[visit_id jt] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I char*#1041 char*#1047 deftype?*#7 globaltype#2397 gt id name?*#481 name?*#482 name?*#483 name?*#484 name?*#485 name?*#486 name?*#487 name?*#488 name?*#489 name?*#490 name?**#20 +dims \ I = char*#1041, char*#1047, deftype?*#7, globaltype#2397, gt, id, name?*#481, name?*#482, name?*#483, name?*#484, name?*#485, name?*#486, name?*#487, name?*#488, name?*#489, name?*#490, name?**#20 +[visit_exp (`GLOBAL`_externtype{globaltype#2397}(gt), {`TYPES`{`name?*#481`} [], `TAGS`{`name?*#482`} [], `GLOBALS`{`name?*#483`} [?(`%`_name{`char*#1047`}(lift(id?{id <- `id?`})))], `MEMS`{`name?*#484`} [], `TABLES`{`name?*#485`} [], `FUNCS`{`name?*#486`} [], `DATAS`{`name?*#487`} [], `ELEMS`{`name?*#488`} [], `LOCALS`{`name?*#489`} [], `LABELS`{`name?*#490`} [], `FIELDS`{`name?**#20`} [], `TYPEDEFS`{`deftype?*#7`} []})] +[visit_exp `GLOBAL`_externtype{globaltype#2397}(gt)] +[visit_exp globaltype#2397] +[visit_id globaltype#2397] +[visit_exp (gt)] +[visit_exp gt] +[visit_id gt] +[visit_exp {`TYPES`{`name?*#481`} [], `TAGS`{`name?*#482`} [], `GLOBALS`{`name?*#483`} [?(`%`_name{`char*#1047`}(lift(id?{id <- `id?`})))], `MEMS`{`name?*#484`} [], `TABLES`{`name?*#485`} [], `FUNCS`{`name?*#486`} [], `DATAS`{`name?*#487`} [], `ELEMS`{`name?*#488`} [], `LOCALS`{`name?*#489`} [], `LABELS`{`name?*#490`} [], `FIELDS`{`name?**#20`} [], `TYPEDEFS`{`deftype?*#7`} []}] +[visit_exp `name?*#481`] +[visit_id name?*#481] +[visit_exp []] +[visit_exp `name?*#482`] +[visit_id name?*#482] +[visit_exp []] +[visit_exp `name?*#483`] +[visit_id name?*#483] +[visit_exp [?(`%`_name{`char*#1047`}(lift(id?{id <- `id?`})))]] +[visit_exp ?(`%`_name{`char*#1047`}(lift(id?{id <- `id?`})))] +[visit_exp `%`_name{`char*#1047`}(lift(id?{id <- `id?`}))] +[visit_exp `char*#1047`] +[visit_id char*#1047] +[visit_exp (lift(id?{id <- `id?`}))] +[visit_exp lift(id?{id <- `id?`})] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] no dims +[visit_id id?] +[visit_exp `name?*#484`] +[visit_id name?*#484] +[visit_exp []] +[visit_exp `name?*#485`] +[visit_id name?*#485] +[visit_exp []] +[visit_exp `name?*#486`] +[visit_id name?*#486] +[visit_exp []] +[visit_exp `name?*#487`] +[visit_id name?*#487] +[visit_exp []] +[visit_exp `name?*#488`] +[visit_id name?*#488] +[visit_exp []] +[visit_exp `name?*#489`] +[visit_id name?*#489] +[visit_exp []] +[visit_exp `name?*#490`] +[visit_id name?*#490] +[visit_exp []] +[visit_exp `name?**#20`] +[visit_id name?**#20] +[visit_exp []] +[visit_exp `deftype?*#7`] +[visit_id deftype?*#7] +[visit_exp []] +[visit_exp ?(`%`_name{`char*#1041`}(lift(id?{id <- `id?`})))] +[visit_exp `%`_name{`char*#1041`}(lift(id?{id <- `id?`}))] +[visit_exp `char*#1041`] +[visit_id char*#1041] +[visit_exp (lift(id?{id <- `id?`}))] +[visit_exp lift(id?{id <- `id?`})] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] not free +[visit_id id?] no dims +[visit_exp gt] +[visit_id gt] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I char*#1053 char*#1059 deftype?*#8 id memtype#858 mt name?*#491 name?*#492 name?*#493 name?*#494 name?*#495 name?*#496 name?*#497 name?*#498 name?*#499 name?*#500 name?**#21 +dims \ I = char*#1053, char*#1059, deftype?*#8, id, memtype#858, mt, name?*#491, name?*#492, name?*#493, name?*#494, name?*#495, name?*#496, name?*#497, name?*#498, name?*#499, name?*#500, name?**#21 +[visit_exp (`MEM`_externtype{memtype#858}(mt), {`TYPES`{`name?*#491`} [], `TAGS`{`name?*#492`} [], `GLOBALS`{`name?*#493`} [], `MEMS`{`name?*#494`} [?(`%`_name{`char*#1059`}(lift(id?{id <- `id?`})))], `TABLES`{`name?*#495`} [], `FUNCS`{`name?*#496`} [], `DATAS`{`name?*#497`} [], `ELEMS`{`name?*#498`} [], `LOCALS`{`name?*#499`} [], `LABELS`{`name?*#500`} [], `FIELDS`{`name?**#21`} [], `TYPEDEFS`{`deftype?*#8`} []})] +[visit_exp `MEM`_externtype{memtype#858}(mt)] +[visit_exp memtype#858] +[visit_id memtype#858] +[visit_exp (mt)] +[visit_exp mt] +[visit_id mt] +[visit_exp {`TYPES`{`name?*#491`} [], `TAGS`{`name?*#492`} [], `GLOBALS`{`name?*#493`} [], `MEMS`{`name?*#494`} [?(`%`_name{`char*#1059`}(lift(id?{id <- `id?`})))], `TABLES`{`name?*#495`} [], `FUNCS`{`name?*#496`} [], `DATAS`{`name?*#497`} [], `ELEMS`{`name?*#498`} [], `LOCALS`{`name?*#499`} [], `LABELS`{`name?*#500`} [], `FIELDS`{`name?**#21`} [], `TYPEDEFS`{`deftype?*#8`} []}] +[visit_exp `name?*#491`] +[visit_id name?*#491] +[visit_exp []] +[visit_exp `name?*#492`] +[visit_id name?*#492] +[visit_exp []] +[visit_exp `name?*#493`] +[visit_id name?*#493] +[visit_exp []] +[visit_exp `name?*#494`] +[visit_id name?*#494] +[visit_exp [?(`%`_name{`char*#1059`}(lift(id?{id <- `id?`})))]] +[visit_exp ?(`%`_name{`char*#1059`}(lift(id?{id <- `id?`})))] +[visit_exp `%`_name{`char*#1059`}(lift(id?{id <- `id?`}))] +[visit_exp `char*#1059`] +[visit_id char*#1059] +[visit_exp (lift(id?{id <- `id?`}))] +[visit_exp lift(id?{id <- `id?`})] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] no dims +[visit_id id?] +[visit_exp `name?*#495`] +[visit_id name?*#495] +[visit_exp []] +[visit_exp `name?*#496`] +[visit_id name?*#496] +[visit_exp []] +[visit_exp `name?*#497`] +[visit_id name?*#497] +[visit_exp []] +[visit_exp `name?*#498`] +[visit_id name?*#498] +[visit_exp []] +[visit_exp `name?*#499`] +[visit_id name?*#499] +[visit_exp []] +[visit_exp `name?*#500`] +[visit_id name?*#500] +[visit_exp []] +[visit_exp `name?**#21`] +[visit_id name?**#21] +[visit_exp []] +[visit_exp `deftype?*#8`] +[visit_id deftype?*#8] +[visit_exp []] +[visit_exp ?(`%`_name{`char*#1053`}(lift(id?{id <- `id?`})))] +[visit_exp `%`_name{`char*#1053`}(lift(id?{id <- `id?`}))] +[visit_exp `char*#1053`] +[visit_id char*#1053] +[visit_exp (lift(id?{id <- `id?`}))] +[visit_exp lift(id?{id <- `id?`})] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] not free +[visit_id id?] no dims +[visit_exp mt] +[visit_id mt] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I char*#1065 char*#1071 deftype?*#9 id name?*#501 name?*#502 name?*#503 name?*#504 name?*#505 name?*#506 name?*#507 name?*#508 name?*#509 name?*#510 name?**#22 tabletype#1280 tt +dims \ I = char*#1065, char*#1071, deftype?*#9, id, name?*#501, name?*#502, name?*#503, name?*#504, name?*#505, name?*#506, name?*#507, name?*#508, name?*#509, name?*#510, name?**#22, tabletype#1280, tt +[visit_exp (`TABLE`_externtype{tabletype#1280}(tt), {`TYPES`{`name?*#501`} [], `TAGS`{`name?*#502`} [], `GLOBALS`{`name?*#503`} [], `MEMS`{`name?*#504`} [], `TABLES`{`name?*#505`} [?(`%`_name{`char*#1071`}(lift(id?{id <- `id?`})))], `FUNCS`{`name?*#506`} [], `DATAS`{`name?*#507`} [], `ELEMS`{`name?*#508`} [], `LOCALS`{`name?*#509`} [], `LABELS`{`name?*#510`} [], `FIELDS`{`name?**#22`} [], `TYPEDEFS`{`deftype?*#9`} []})] +[visit_exp `TABLE`_externtype{tabletype#1280}(tt)] +[visit_exp tabletype#1280] +[visit_id tabletype#1280] +[visit_exp (tt)] +[visit_exp tt] +[visit_id tt] +[visit_exp {`TYPES`{`name?*#501`} [], `TAGS`{`name?*#502`} [], `GLOBALS`{`name?*#503`} [], `MEMS`{`name?*#504`} [], `TABLES`{`name?*#505`} [?(`%`_name{`char*#1071`}(lift(id?{id <- `id?`})))], `FUNCS`{`name?*#506`} [], `DATAS`{`name?*#507`} [], `ELEMS`{`name?*#508`} [], `LOCALS`{`name?*#509`} [], `LABELS`{`name?*#510`} [], `FIELDS`{`name?**#22`} [], `TYPEDEFS`{`deftype?*#9`} []}] +[visit_exp `name?*#501`] +[visit_id name?*#501] +[visit_exp []] +[visit_exp `name?*#502`] +[visit_id name?*#502] +[visit_exp []] +[visit_exp `name?*#503`] +[visit_id name?*#503] +[visit_exp []] +[visit_exp `name?*#504`] +[visit_id name?*#504] +[visit_exp []] +[visit_exp `name?*#505`] +[visit_id name?*#505] +[visit_exp [?(`%`_name{`char*#1071`}(lift(id?{id <- `id?`})))]] +[visit_exp ?(`%`_name{`char*#1071`}(lift(id?{id <- `id?`})))] +[visit_exp `%`_name{`char*#1071`}(lift(id?{id <- `id?`}))] +[visit_exp `char*#1071`] +[visit_id char*#1071] +[visit_exp (lift(id?{id <- `id?`}))] +[visit_exp lift(id?{id <- `id?`})] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] no dims +[visit_id id?] +[visit_exp `name?*#506`] +[visit_id name?*#506] +[visit_exp []] +[visit_exp `name?*#507`] +[visit_id name?*#507] +[visit_exp []] +[visit_exp `name?*#508`] +[visit_id name?*#508] +[visit_exp []] +[visit_exp `name?*#509`] +[visit_id name?*#509] +[visit_exp []] +[visit_exp `name?*#510`] +[visit_id name?*#510] +[visit_exp []] +[visit_exp `name?**#22`] +[visit_id name?**#22] +[visit_exp []] +[visit_exp `deftype?*#9`] +[visit_id deftype?*#9] +[visit_exp []] +[visit_exp ?(`%`_name{`char*#1065`}(lift(id?{id <- `id?`})))] +[visit_exp `%`_name{`char*#1065`}(lift(id?{id <- `id?`}))] +[visit_exp `char*#1065`] +[visit_id char*#1065] +[visit_exp (lift(id?{id <- `id?`}))] +[visit_exp lift(id?{id <- `id?`})] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] not free +[visit_id id?] no dims +[visit_exp tt] +[visit_id tt] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I I' char*#1077 char*#1083 deftype?*#10 id name?*#511 name?*#512 name?*#513 name?*#514 name?*#515 name?*#516 name?*#517 name?*#518 name?*#519 name?*#520 name?**#23 typeidx#2125 typeuse#77 x +dims \ I = I', char*#1077, char*#1083, deftype?*#10, id, name?*#511, name?*#512, name?*#513, name?*#514, name?*#515, name?*#516, name?*#517, name?*#518, name?*#519, name?*#520, name?**#23, typeidx#2125, typeuse#77, x +[visit_exp (`FUNC`_externtype{typeuse#77}(`_IDX`_typeuse{typeidx#2125}(x)), {`TYPES`{`name?*#511`} [], `TAGS`{`name?*#512`} [], `GLOBALS`{`name?*#513`} [], `MEMS`{`name?*#514`} [], `TABLES`{`name?*#515`} [], `FUNCS`{`name?*#516`} [?(`%`_name{`char*#1083`}(lift(id?{id <- `id?`})))], `DATAS`{`name?*#517`} [], `ELEMS`{`name?*#518`} [], `LOCALS`{`name?*#519`} [], `LABELS`{`name?*#520`} [], `FIELDS`{`name?**#23`} [], `TYPEDEFS`{`deftype?*#10`} []})] +[visit_exp `FUNC`_externtype{typeuse#77}(`_IDX`_typeuse{typeidx#2125}(x))] +[visit_exp typeuse#77] +[visit_id typeuse#77] +[visit_exp (`_IDX`_typeuse{typeidx#2125}(x))] +[visit_exp `_IDX`_typeuse{typeidx#2125}(x)] +[visit_exp typeidx#2125] +[visit_id typeidx#2125] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp {`TYPES`{`name?*#511`} [], `TAGS`{`name?*#512`} [], `GLOBALS`{`name?*#513`} [], `MEMS`{`name?*#514`} [], `TABLES`{`name?*#515`} [], `FUNCS`{`name?*#516`} [?(`%`_name{`char*#1083`}(lift(id?{id <- `id?`})))], `DATAS`{`name?*#517`} [], `ELEMS`{`name?*#518`} [], `LOCALS`{`name?*#519`} [], `LABELS`{`name?*#520`} [], `FIELDS`{`name?**#23`} [], `TYPEDEFS`{`deftype?*#10`} []}] +[visit_exp `name?*#511`] +[visit_id name?*#511] +[visit_exp []] +[visit_exp `name?*#512`] +[visit_id name?*#512] +[visit_exp []] +[visit_exp `name?*#513`] +[visit_id name?*#513] +[visit_exp []] +[visit_exp `name?*#514`] +[visit_id name?*#514] +[visit_exp []] +[visit_exp `name?*#515`] +[visit_id name?*#515] +[visit_exp []] +[visit_exp `name?*#516`] +[visit_id name?*#516] +[visit_exp [?(`%`_name{`char*#1083`}(lift(id?{id <- `id?`})))]] +[visit_exp ?(`%`_name{`char*#1083`}(lift(id?{id <- `id?`})))] +[visit_exp `%`_name{`char*#1083`}(lift(id?{id <- `id?`}))] +[visit_exp `char*#1083`] +[visit_id char*#1083] +[visit_exp (lift(id?{id <- `id?`}))] +[visit_exp lift(id?{id <- `id?`})] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] no dims +[visit_id id?] +[visit_exp `name?*#517`] +[visit_id name?*#517] +[visit_exp []] +[visit_exp `name?*#518`] +[visit_id name?*#518] +[visit_exp []] +[visit_exp `name?*#519`] +[visit_id name?*#519] +[visit_exp []] +[visit_exp `name?*#520`] +[visit_id name?*#520] +[visit_exp []] +[visit_exp `name?**#23`] +[visit_id name?**#23] +[visit_exp []] +[visit_exp `deftype?*#10`] +[visit_id deftype?*#10] +[visit_exp []] +[visit_exp ?(`%`_name{`char*#1077`}(lift(id?{id <- `id?`})))] +[visit_exp `%`_name{`char*#1077`}(lift(id?{id <- `id?`}))] +[visit_exp `char*#1077`] +[visit_id char*#1077] +[visit_exp (lift(id?{id <- `id?`}))] +[visit_exp lift(id?{id <- `id?`})] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] not free +[visit_id id?] no dims +[visit_exp (x, I')] +[visit_exp x] +[visit_id x] not free +[visit_exp I'] +[visit_id I'] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +[visit_id _] not free +[visit_id _] no dims +[visit_id _] not free +[visit_id _] no dims +ps' = (I : I) +[check_dims] I _ +[check_dims] I I' X*#13419 X*#13434 X*#13447 char*#1113 comptype#577 deftype?*#11 deftype?*#12 final?#577 i i#95899 n#1503 name?*#521 name?*#522 name?*#523 name?*#524 name?*#525 name?*#526 name?*#527 name?*#528 name?*#529 name?*#530 name?**#24 rectype#1807 resulttype#3035 st t_1 t_2 typeuse*#577 x +dims \ I = I', X*#13419, X*#13434, X*#13447, char*#1113, comptype#577, deftype?*#11, deftype?*#12, final?#577, i, i#95899, n#1503, name?*#521, name?*#522, name?*#523, name?*#524, name?*#525, name?*#526, name?*#527, name?*#528, name?*#529, name?*#530, name?**#24, rectype#1807, resulttype#3035, st, t_1, t_2, typeuse*#577, x +[visit_exp (x, I')] +[visit_exp x] +[visit_id x] +[visit_exp I'] +[visit_id I'] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp (I.`TYPEDEFS`_I{`deftype?*#11`}[x!`%`_idx{i#95899}.0] = ?(`_DEF`_deftype{rectype#1807, n#1503}(`REC`_rectype(`%`_list{`X*#13419`}(st*{st <- `st*`})), i)))] +[visit_exp I.`TYPEDEFS`_I{`deftype?*#11`}[x!`%`_idx{i#95899}.0]] +[visit_exp I.`TYPEDEFS`_I{`deftype?*#11`}] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp `deftype?*#11`] +[visit_id deftype?*#11] +[visit_exp x!`%`_idx{i#95899}.0] +[visit_exp x!`%`_idx{i#95899}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#95899] +[visit_id i#95899] +[visit_exp ?(`_DEF`_deftype{rectype#1807, n#1503}(`REC`_rectype(`%`_list{`X*#13419`}(st*{st <- `st*`})), i))] +[visit_exp `_DEF`_deftype{rectype#1807, n#1503}(`REC`_rectype(`%`_list{`X*#13419`}(st*{st <- `st*`})), i)] +[visit_exp rectype#1807] +[visit_id rectype#1807] +[visit_exp n#1503] +[visit_id n#1503] +[visit_exp (`REC`_rectype(`%`_list{`X*#13419`}(st*{st <- `st*`})), i)] +[visit_exp `REC`_rectype(`%`_list{`X*#13419`}(st*{st <- `st*`}))] +[visit_exp (`%`_list{`X*#13419`}(st*{st <- `st*`}))] +[visit_exp `%`_list{`X*#13419`}(st*{st <- `st*`})] +[visit_exp `X*#13419`] +[visit_id X*#13419] +[visit_exp (st*{st <- `st*`})] +[visit_exp st*{st <- `st*`}] +[scope_enter st] +[visit_exp st] +[visit_id st] not free +[visit_id st] not free +[scope_exit st] +[visit_exp `st*`] +[visit_id st*] no dims +[visit_id st*] +[visit_exp i] +[visit_id i] +[visit_exp (st*{st <- `st*`}[i] = `SUB`_subtype{`final?#577`, `typeuse*#577`, comptype#577}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3035}(`%`_resulttype{`X*#13434`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13447`}(t_2*{t_2 <- `t_2*`}))))] +[visit_exp st*{st <- `st*`}[i]] +[visit_exp st*{st <- `st*`}] +[scope_enter st] +[visit_exp st] +[visit_id st] not free +[visit_id st] not free +[scope_exit st] +[visit_exp `st*`] +[visit_id st*] not free +[visit_id st*] no dims +[visit_exp i] +[visit_id i] not free +[visit_exp `SUB`_subtype{`final?#577`, `typeuse*#577`, comptype#577}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3035}(`%`_resulttype{`X*#13434`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13447`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp `final?#577`] +[visit_id final?#577] +[visit_exp `typeuse*#577`] +[visit_id typeuse*#577] +[visit_exp comptype#577] +[visit_id comptype#577] +[visit_exp (?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3035}(`%`_resulttype{`X*#13434`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13447`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp ?(`FINAL`_final)] +[visit_exp `FINAL`_final] +[visit_exp ()] +[visit_exp []] +[visit_exp `FUNC%->%`_comptype{resulttype#3035}(`%`_resulttype{`X*#13434`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13447`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#3035] +[visit_id resulttype#3035] +[visit_exp (`%`_resulttype{`X*#13434`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13447`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#13434`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#13434`] +[visit_id X*#13434] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] no dims +[visit_id t_1*] +[visit_exp `%`_resulttype{`X*#13447`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#13447`] +[visit_id X*#13447] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] no dims +[visit_id t_2*] +[visit_exp (I' = {`TYPES`{`name?*#521`} [], `TAGS`{`name?*#522`} [], `GLOBALS`{`name?*#523`} [], `MEMS`{`name?*#524`} [], `TABLES`{`name?*#525`} [], `FUNCS`{`name?*#526`} [], `DATAS`{`name?*#527`} [], `ELEMS`{`name?*#528`} [], `LOCALS`{`name?*#529`} ?(`%`_name{`char*#1113`}([]))^|t_1*{t_1 <- `t_1*`}|{`char*#1113` <- `char*#1113*`}, `LABELS`{`name?*#530`} [], `FIELDS`{`name?**#24`} [], `TYPEDEFS`{`deftype?*#12`} []})] +[visit_exp I'] +[visit_id I'] not free +[visit_exp {`TYPES`{`name?*#521`} [], `TAGS`{`name?*#522`} [], `GLOBALS`{`name?*#523`} [], `MEMS`{`name?*#524`} [], `TABLES`{`name?*#525`} [], `FUNCS`{`name?*#526`} [], `DATAS`{`name?*#527`} [], `ELEMS`{`name?*#528`} [], `LOCALS`{`name?*#529`} ?(`%`_name{`char*#1113`}([]))^|t_1*{t_1 <- `t_1*`}|{`char*#1113` <- `char*#1113*`}, `LABELS`{`name?*#530`} [], `FIELDS`{`name?**#24`} [], `TYPEDEFS`{`deftype?*#12`} []}] +[visit_exp `name?*#521`] +[visit_id name?*#521] +[visit_exp []] +[visit_exp `name?*#522`] +[visit_id name?*#522] +[visit_exp []] +[visit_exp `name?*#523`] +[visit_id name?*#523] +[visit_exp []] +[visit_exp `name?*#524`] +[visit_id name?*#524] +[visit_exp []] +[visit_exp `name?*#525`] +[visit_id name?*#525] +[visit_exp []] +[visit_exp `name?*#526`] +[visit_id name?*#526] +[visit_exp []] +[visit_exp `name?*#527`] +[visit_id name?*#527] +[visit_exp []] +[visit_exp `name?*#528`] +[visit_id name?*#528] +[visit_exp []] +[visit_exp `name?*#529`] +[visit_id name?*#529] +[visit_exp ?(`%`_name{`char*#1113`}([]))^|t_1*{t_1 <- `t_1*`}|{`char*#1113` <- `char*#1113*`}] +[scope_enter char*#1113] +[visit_exp ?(`%`_name{`char*#1113`}([]))] +[visit_exp `%`_name{`char*#1113`}([])] +[visit_exp `char*#1113`] +[visit_id char*#1113] not free +[visit_exp ([])] +[visit_exp []] +[visit_id char*#1113] not free +[scope_exit char*#1113] +[visit_exp |t_1*{t_1 <- `t_1*`}|] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] not free +[visit_id t_1*] no dims +[visit_exp `char*#1113*`] +[visit_id char*#1113*] no dims +[visit_id char*#1113*] +[visit_exp `name?*#530`] +[visit_id name?*#530] +[visit_exp []] +[visit_exp `name?**#24`] +[visit_id name?**#24] +[visit_exp []] +[visit_exp `deftype?*#12`] +[visit_id deftype?*#12] +[visit_exp []] +[check_dims] I I' X*#13462 X*#13477 X*#13490 char*#1119 char*#1137 comptype#601 deftype?*#13 deftype?*#14 final?#601 i i#95968 id n#1515 name?*#531 name?*#532 name?*#533 name?*#534 name?*#535 name?*#536 name?*#537 name?*#538 name?*#539 name?*#540 name?**#25 rectype#1819 resulttype#3038 st t_1 t_2 typeuse*#601 x +dims \ I = I', X*#13462, X*#13477, X*#13490, char*#1119, char*#1137, comptype#601, deftype?*#13, deftype?*#14, final?#601, i, i#95968, id, n#1515, name?*#531, name?*#532, name?*#533, name?*#534, name?*#535, name?*#536, name?*#537, name?*#538, name?*#539, name?*#540, name?**#25, rectype#1819, resulttype#3038, st, t_1, t_2, typeuse*#601, x +[visit_exp (x, I')] +[visit_exp x] +[visit_id x] +[visit_exp I'] +[visit_id I'] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp (t_1, ?(`%`_name{`char*#1119`}(lift(id?{id <- `id?`}))))*{`char*#1119` <- `char*#1119*`, `id?` <- `id?*`, t_1 <- `t_1*`}] +[scope_enter char*#1119] +[scope_enter id?] +[scope_enter t_1] +[visit_exp (t_1, ?(`%`_name{`char*#1119`}(lift(id?{id <- `id?`}))))] +[visit_exp t_1] +[visit_id t_1] not free +[visit_exp ?(`%`_name{`char*#1119`}(lift(id?{id <- `id?`})))] +[visit_exp `%`_name{`char*#1119`}(lift(id?{id <- `id?`}))] +[visit_exp `char*#1119`] +[visit_id char*#1119] not free +[visit_exp (lift(id?{id <- `id?`}))] +[visit_exp lift(id?{id <- `id?`})] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] not free +[visit_id id?] no dims +[visit_id char*#1119] not free +[visit_id id?] not free +[visit_id id?] no dims +[visit_id t_1] not free +[scope_exit t_1] +[scope_exit id?] +[scope_exit char*#1119] +[visit_exp `char*#1119*`] +[visit_id char*#1119*] no dims +[visit_id char*#1119*] +[visit_exp `id?*`] +[visit_id id?*] no dims +[visit_id id?*] +[visit_exp `t_1*`] +[visit_id t_1*] no dims +[visit_id t_1*] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] no dims +[visit_id t_2*] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp (I.`TYPEDEFS`_I{`deftype?*#13`}[x!`%`_idx{i#95968}.0] = ?(`_DEF`_deftype{rectype#1819, n#1515}(`REC`_rectype(`%`_list{`X*#13462`}(st*{st <- `st*`})), i)))] +[visit_exp I.`TYPEDEFS`_I{`deftype?*#13`}[x!`%`_idx{i#95968}.0]] +[visit_exp I.`TYPEDEFS`_I{`deftype?*#13`}] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp `deftype?*#13`] +[visit_id deftype?*#13] +[visit_exp x!`%`_idx{i#95968}.0] +[visit_exp x!`%`_idx{i#95968}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#95968] +[visit_id i#95968] +[visit_exp ?(`_DEF`_deftype{rectype#1819, n#1515}(`REC`_rectype(`%`_list{`X*#13462`}(st*{st <- `st*`})), i))] +[visit_exp `_DEF`_deftype{rectype#1819, n#1515}(`REC`_rectype(`%`_list{`X*#13462`}(st*{st <- `st*`})), i)] +[visit_exp rectype#1819] +[visit_id rectype#1819] +[visit_exp n#1515] +[visit_id n#1515] +[visit_exp (`REC`_rectype(`%`_list{`X*#13462`}(st*{st <- `st*`})), i)] +[visit_exp `REC`_rectype(`%`_list{`X*#13462`}(st*{st <- `st*`}))] +[visit_exp (`%`_list{`X*#13462`}(st*{st <- `st*`}))] +[visit_exp `%`_list{`X*#13462`}(st*{st <- `st*`})] +[visit_exp `X*#13462`] +[visit_id X*#13462] +[visit_exp (st*{st <- `st*`})] +[visit_exp st*{st <- `st*`}] +[scope_enter st] +[visit_exp st] +[visit_id st] not free +[visit_id st] not free +[scope_exit st] +[visit_exp `st*`] +[visit_id st*] no dims +[visit_id st*] +[visit_exp i] +[visit_id i] +[visit_exp (st*{st <- `st*`}[i] = `SUB`_subtype{`final?#601`, `typeuse*#601`, comptype#601}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3038}(`%`_resulttype{`X*#13477`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13490`}(t_2*{t_2 <- `t_2*`}))))] +[visit_exp st*{st <- `st*`}[i]] +[visit_exp st*{st <- `st*`}] +[scope_enter st] +[visit_exp st] +[visit_id st] not free +[visit_id st] not free +[scope_exit st] +[visit_exp `st*`] +[visit_id st*] not free +[visit_id st*] no dims +[visit_exp i] +[visit_id i] not free +[visit_exp `SUB`_subtype{`final?#601`, `typeuse*#601`, comptype#601}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3038}(`%`_resulttype{`X*#13477`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13490`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp `final?#601`] +[visit_id final?#601] +[visit_exp `typeuse*#601`] +[visit_id typeuse*#601] +[visit_exp comptype#601] +[visit_id comptype#601] +[visit_exp (?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3038}(`%`_resulttype{`X*#13477`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13490`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp ?(`FINAL`_final)] +[visit_exp `FINAL`_final] +[visit_exp ()] +[visit_exp []] +[visit_exp `FUNC%->%`_comptype{resulttype#3038}(`%`_resulttype{`X*#13477`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13490`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#3038] +[visit_id resulttype#3038] +[visit_exp (`%`_resulttype{`X*#13477`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13490`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#13477`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#13477`] +[visit_id X*#13477] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] not free +[visit_id t_1*] no dims +[visit_exp `%`_resulttype{`X*#13490`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#13490`] +[visit_id X*#13490] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] not free +[visit_id t_2*] no dims +[visit_exp (I' = {`TYPES`{`name?*#531`} [], `TAGS`{`name?*#532`} [], `GLOBALS`{`name?*#533`} [], `MEMS`{`name?*#534`} [], `TABLES`{`name?*#535`} [], `FUNCS`{`name?*#536`} [], `DATAS`{`name?*#537`} [], `ELEMS`{`name?*#538`} [], `LOCALS`{`name?*#539`} ?(`%`_name{`char*#1137`}(lift(id?{id <- `id?`})))*{`char*#1137` <- `char*#1137*`, `id?` <- `id?*`}, `LABELS`{`name?*#540`} [], `FIELDS`{`name?**#25`} [], `TYPEDEFS`{`deftype?*#14`} []})] +[visit_exp I'] +[visit_id I'] not free +[visit_exp {`TYPES`{`name?*#531`} [], `TAGS`{`name?*#532`} [], `GLOBALS`{`name?*#533`} [], `MEMS`{`name?*#534`} [], `TABLES`{`name?*#535`} [], `FUNCS`{`name?*#536`} [], `DATAS`{`name?*#537`} [], `ELEMS`{`name?*#538`} [], `LOCALS`{`name?*#539`} ?(`%`_name{`char*#1137`}(lift(id?{id <- `id?`})))*{`char*#1137` <- `char*#1137*`, `id?` <- `id?*`}, `LABELS`{`name?*#540`} [], `FIELDS`{`name?**#25`} [], `TYPEDEFS`{`deftype?*#14`} []}] +[visit_exp `name?*#531`] +[visit_id name?*#531] +[visit_exp []] +[visit_exp `name?*#532`] +[visit_id name?*#532] +[visit_exp []] +[visit_exp `name?*#533`] +[visit_id name?*#533] +[visit_exp []] +[visit_exp `name?*#534`] +[visit_id name?*#534] +[visit_exp []] +[visit_exp `name?*#535`] +[visit_id name?*#535] +[visit_exp []] +[visit_exp `name?*#536`] +[visit_id name?*#536] +[visit_exp []] +[visit_exp `name?*#537`] +[visit_id name?*#537] +[visit_exp []] +[visit_exp `name?*#538`] +[visit_id name?*#538] +[visit_exp []] +[visit_exp `name?*#539`] +[visit_id name?*#539] +[visit_exp ?(`%`_name{`char*#1137`}(lift(id?{id <- `id?`})))*{`char*#1137` <- `char*#1137*`, `id?` <- `id?*`}] +[scope_enter char*#1137] +[scope_enter id?] +[visit_exp ?(`%`_name{`char*#1137`}(lift(id?{id <- `id?`})))] +[visit_exp `%`_name{`char*#1137`}(lift(id?{id <- `id?`}))] +[visit_exp `char*#1137`] +[visit_id char*#1137] not free +[visit_exp (lift(id?{id <- `id?`}))] +[visit_exp lift(id?{id <- `id?`})] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] not free +[visit_id id?] no dims +[visit_id char*#1137] not free +[visit_id id?] not free +[visit_id id?] no dims +[scope_exit id?] +[scope_exit char*#1137] +[visit_exp `char*#1137*`] +[visit_id char*#1137*] no dims +[visit_id char*#1137*] +[visit_exp `id?*`] +[visit_id id?*] not free +[visit_id id?*] no dims +[visit_exp `name?*#540`] +[visit_id name?*#540] +[visit_exp []] +[visit_exp `name?**#25`] +[visit_id name?**#25] +[visit_exp []] +[visit_exp `deftype?*#14`] +[visit_id deftype?*#14] +[visit_exp []] +[visit_exp I'] +[visit_id I'] not free +[visit_id I] not free +[visit_id _] not free +[visit_id _] no dims +[visit_id _] not free +[visit_id _] no dims +ps' = (I : I) +[check_dims] I _ +[check_dims] I X*#13515 X*#13528 X*#13541 X*#13566 X*#13579 X*#13592 char*#1143 comptype#613 comptype#625 deftype?*#15 deftype?*#16 final?#613 final?#625 i i#96043 i#96053 id n#1527 n#1539 rectype#1831 rectype#1843 resulttype#3041 resulttype#3044 t_1 t_2 typeuse*#613 typeuse*#625 x +[visit_exp (t_1, ?(`%`_name{`char*#1143`}(lift(id?{id <- `id?`}))))*{`char*#1143` <- `char*#1143*`, `id?` <- `id?*`, t_1 <- `t_1*`}] +[scope_enter char*#1143] +[scope_enter id?] +[scope_enter t_1] +[visit_exp (t_1, ?(`%`_name{`char*#1143`}(lift(id?{id <- `id?`}))))] +[visit_exp t_1] +[visit_id t_1] not free +[visit_exp ?(`%`_name{`char*#1143`}(lift(id?{id <- `id?`})))] +[visit_exp `%`_name{`char*#1143`}(lift(id?{id <- `id?`}))] +[visit_exp `char*#1143`] +[visit_id char*#1143] not free +[visit_exp (lift(id?{id <- `id?`}))] +[visit_exp lift(id?{id <- `id?`})] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] not free +[visit_id id?] no dims +[visit_id char*#1143] not free +[visit_id id?] not free +[visit_id id?] no dims +[visit_id t_1] not free +[scope_exit t_1] +[scope_exit id?] +[scope_exit char*#1143] +[visit_exp `char*#1143*`] +[visit_id char*#1143*] no dims +[visit_id char*#1143*] +[visit_exp `id?*`] +[visit_id id?*] no dims +[visit_id id?*] +[visit_exp `t_1*`] +[visit_id t_1*] no dims +[visit_id t_1*] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] no dims +[visit_id t_2*] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp x] +[visit_id x] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp (I.`TYPEDEFS`_I{`deftype?*#15`}[x!`%`_idx{i#96043}.0] = ?(`_DEF`_deftype{rectype#1831, n#1527}(`REC`_rectype(`%`_list{`X*#13515`}([`SUB`_subtype{`final?#613`, `typeuse*#613`, comptype#613}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3041}(`%`_resulttype{`X*#13528`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13541`}(t_2*{t_2 <- `t_2*`})))])), 0)))] +[visit_exp I.`TYPEDEFS`_I{`deftype?*#15`}[x!`%`_idx{i#96043}.0]] +[visit_exp I.`TYPEDEFS`_I{`deftype?*#15`}] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp `deftype?*#15`] +[visit_id deftype?*#15] +[visit_exp x!`%`_idx{i#96043}.0] +[visit_exp x!`%`_idx{i#96043}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#96043] +[visit_id i#96043] +[visit_exp ?(`_DEF`_deftype{rectype#1831, n#1527}(`REC`_rectype(`%`_list{`X*#13515`}([`SUB`_subtype{`final?#613`, `typeuse*#613`, comptype#613}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3041}(`%`_resulttype{`X*#13528`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13541`}(t_2*{t_2 <- `t_2*`})))])), 0))] +[visit_exp `_DEF`_deftype{rectype#1831, n#1527}(`REC`_rectype(`%`_list{`X*#13515`}([`SUB`_subtype{`final?#613`, `typeuse*#613`, comptype#613}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3041}(`%`_resulttype{`X*#13528`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13541`}(t_2*{t_2 <- `t_2*`})))])), 0)] +[visit_exp rectype#1831] +[visit_id rectype#1831] +[visit_exp n#1527] +[visit_id n#1527] +[visit_exp (`REC`_rectype(`%`_list{`X*#13515`}([`SUB`_subtype{`final?#613`, `typeuse*#613`, comptype#613}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3041}(`%`_resulttype{`X*#13528`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13541`}(t_2*{t_2 <- `t_2*`})))])), 0)] +[visit_exp `REC`_rectype(`%`_list{`X*#13515`}([`SUB`_subtype{`final?#613`, `typeuse*#613`, comptype#613}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3041}(`%`_resulttype{`X*#13528`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13541`}(t_2*{t_2 <- `t_2*`})))]))] +[visit_exp (`%`_list{`X*#13515`}([`SUB`_subtype{`final?#613`, `typeuse*#613`, comptype#613}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3041}(`%`_resulttype{`X*#13528`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13541`}(t_2*{t_2 <- `t_2*`})))]))] +[visit_exp `%`_list{`X*#13515`}([`SUB`_subtype{`final?#613`, `typeuse*#613`, comptype#613}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3041}(`%`_resulttype{`X*#13528`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13541`}(t_2*{t_2 <- `t_2*`})))])] +[visit_exp `X*#13515`] +[visit_id X*#13515] +[visit_exp ([`SUB`_subtype{`final?#613`, `typeuse*#613`, comptype#613}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3041}(`%`_resulttype{`X*#13528`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13541`}(t_2*{t_2 <- `t_2*`})))])] +[visit_exp [`SUB`_subtype{`final?#613`, `typeuse*#613`, comptype#613}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3041}(`%`_resulttype{`X*#13528`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13541`}(t_2*{t_2 <- `t_2*`})))]] +[visit_exp `SUB`_subtype{`final?#613`, `typeuse*#613`, comptype#613}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3041}(`%`_resulttype{`X*#13528`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13541`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp `final?#613`] +[visit_id final?#613] +[visit_exp `typeuse*#613`] +[visit_id typeuse*#613] +[visit_exp comptype#613] +[visit_id comptype#613] +[visit_exp (?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3041}(`%`_resulttype{`X*#13528`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13541`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp ?(`FINAL`_final)] +[visit_exp `FINAL`_final] +[visit_exp ()] +[visit_exp []] +[visit_exp `FUNC%->%`_comptype{resulttype#3041}(`%`_resulttype{`X*#13528`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13541`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#3041] +[visit_id resulttype#3041] +[visit_exp (`%`_resulttype{`X*#13528`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13541`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#13528`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#13528`] +[visit_id X*#13528] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] not free +[visit_id t_1*] no dims +[visit_exp `%`_resulttype{`X*#13541`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#13541`] +[visit_id X*#13541] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] not free +[visit_id t_2*] no dims +[visit_exp 0] +[scope_enter i] +[scope_enter X*#13566] +[scope_enter X*#13579] +[scope_enter X*#13592] +[scope_enter comptype#625] +[scope_enter deftype?*#16] +[scope_enter final?#625] +[scope_enter n#1539] +[scope_enter rectype#1843] +[scope_enter resulttype#3044] +[scope_enter typeuse*#625] +[visit_exp (I.`TYPEDEFS`_I{`deftype?*#16`}[i] =/= ?(`_DEF`_deftype{rectype#1843, n#1539}(`REC`_rectype(`%`_list{`X*#13566`}([`SUB`_subtype{`final?#625`, `typeuse*#625`, comptype#625}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3044}(`%`_resulttype{`X*#13579`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13592`}(t_2*{t_2 <- `t_2*`})))])), 0)))] +[visit_exp I.`TYPEDEFS`_I{`deftype?*#16`}[i]] +[visit_exp I.`TYPEDEFS`_I{`deftype?*#16`}] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp `deftype?*#16`] +[visit_id deftype?*#16] not free +[visit_exp i] +[visit_id i] +[visit_exp ?(`_DEF`_deftype{rectype#1843, n#1539}(`REC`_rectype(`%`_list{`X*#13566`}([`SUB`_subtype{`final?#625`, `typeuse*#625`, comptype#625}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3044}(`%`_resulttype{`X*#13579`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13592`}(t_2*{t_2 <- `t_2*`})))])), 0))] +[visit_exp `_DEF`_deftype{rectype#1843, n#1539}(`REC`_rectype(`%`_list{`X*#13566`}([`SUB`_subtype{`final?#625`, `typeuse*#625`, comptype#625}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3044}(`%`_resulttype{`X*#13579`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13592`}(t_2*{t_2 <- `t_2*`})))])), 0)] +[visit_exp rectype#1843] +[visit_id rectype#1843] not free +[visit_exp n#1539] +[visit_id n#1539] not free +[visit_exp (`REC`_rectype(`%`_list{`X*#13566`}([`SUB`_subtype{`final?#625`, `typeuse*#625`, comptype#625}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3044}(`%`_resulttype{`X*#13579`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13592`}(t_2*{t_2 <- `t_2*`})))])), 0)] +[visit_exp `REC`_rectype(`%`_list{`X*#13566`}([`SUB`_subtype{`final?#625`, `typeuse*#625`, comptype#625}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3044}(`%`_resulttype{`X*#13579`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13592`}(t_2*{t_2 <- `t_2*`})))]))] +[visit_exp (`%`_list{`X*#13566`}([`SUB`_subtype{`final?#625`, `typeuse*#625`, comptype#625}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3044}(`%`_resulttype{`X*#13579`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13592`}(t_2*{t_2 <- `t_2*`})))]))] +[visit_exp `%`_list{`X*#13566`}([`SUB`_subtype{`final?#625`, `typeuse*#625`, comptype#625}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3044}(`%`_resulttype{`X*#13579`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13592`}(t_2*{t_2 <- `t_2*`})))])] +[visit_exp `X*#13566`] +[visit_id X*#13566] not free +[visit_exp ([`SUB`_subtype{`final?#625`, `typeuse*#625`, comptype#625}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3044}(`%`_resulttype{`X*#13579`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13592`}(t_2*{t_2 <- `t_2*`})))])] +[visit_exp [`SUB`_subtype{`final?#625`, `typeuse*#625`, comptype#625}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3044}(`%`_resulttype{`X*#13579`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13592`}(t_2*{t_2 <- `t_2*`})))]] +[visit_exp `SUB`_subtype{`final?#625`, `typeuse*#625`, comptype#625}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3044}(`%`_resulttype{`X*#13579`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13592`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp `final?#625`] +[visit_id final?#625] not free +[visit_exp `typeuse*#625`] +[visit_id typeuse*#625] not free +[visit_exp comptype#625] +[visit_id comptype#625] not free +[visit_exp (?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3044}(`%`_resulttype{`X*#13579`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13592`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp ?(`FINAL`_final)] +[visit_exp `FINAL`_final] +[visit_exp ()] +[visit_exp []] +[visit_exp `FUNC%->%`_comptype{resulttype#3044}(`%`_resulttype{`X*#13579`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13592`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#3044] +[visit_id resulttype#3044] not free +[visit_exp (`%`_resulttype{`X*#13579`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13592`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#13579`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#13579`] +[visit_id X*#13579] not free +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] not free +[visit_id t_1*] no dims +[visit_exp `%`_resulttype{`X*#13592`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#13592`] +[visit_id X*#13592] not free +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] not free +[visit_id t_2*] no dims +[visit_exp 0] +[visit_id i] not free +[visit_id X*#13566] not free +[visit_id X*#13579] not free +[visit_id X*#13592] not free +[visit_id comptype#625] not free +[visit_id deftype?*#16] not free +[visit_id final?#625] not free +[visit_id n#1539] not free +[visit_id rectype#1843] not free +[visit_id resulttype#3044] not free +[visit_id typeuse*#625] not free +[scope_exit typeuse*#625] +[scope_exit resulttype#3044] +[scope_exit rectype#1843] +[scope_exit n#1539] +[scope_exit final?#625] +[scope_exit deftype?*#16] +[scope_exit comptype#625] +[scope_exit X*#13592] +[scope_exit X*#13579] +[scope_exit X*#13566] +[scope_exit i] +[visit_exp x!`%`_idx{i#96053}.0] +[visit_exp x!`%`_idx{i#96053}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#96053] +[visit_id i#96053] +[visit_exp `X*#13566*`] +[visit_id X*#13566*] no dims +[visit_id X*#13566*] +[visit_exp `X*#13579*`] +[visit_id X*#13579*] no dims +[visit_id X*#13579*] +[visit_exp `X*#13592*`] +[visit_id X*#13592*] no dims +[visit_id X*#13592*] +[visit_exp `comptype#625*`] +[visit_id comptype#625*] no dims +[visit_id comptype#625*] +[visit_exp `deftype?*#16*`] +[visit_id deftype?*#16*] no dims +[visit_id deftype?*#16*] +[visit_exp `final?#625*`] +[visit_id final?#625*] no dims +[visit_id final?#625*] +[visit_exp `n#1539*`] +[visit_id n#1539*] no dims +[visit_id n#1539*] +[visit_exp `rectype#1843*`] +[visit_id rectype#1843*] no dims +[visit_id rectype#1843*] +[visit_exp `resulttype#3044*`] +[visit_id resulttype#3044*] no dims +[visit_id resulttype#3044*] +[visit_exp `typeuse*#625*`] +[visit_id typeuse*#625*] no dims +[visit_id typeuse*#625*] +[visit_id I] not free +[visit_id _] not free +[visit_id _] no dims +[visit_id _] not free +[visit_id _] no dims +ps' = (I : I) +[check_dims] I _ +[check_dims] I deftype?*#17 name?*#541 name?*#542 name?*#543 name?*#544 name?*#545 name?*#546 name?*#547 name?*#548 name?*#549 name?*#550 name?**#26 +dims \ I = deftype?*#17, name?*#541, name?*#542, name?*#543, name?*#544, name?*#545, name?*#546, name?*#547, name?*#548, name?*#549, name?*#550, name?**#26 +[visit_exp (?(), {`TYPES`{`name?*#541`} [], `TAGS`{`name?*#542`} [], `GLOBALS`{`name?*#543`} [], `MEMS`{`name?*#544`} [], `TABLES`{`name?*#545`} [], `FUNCS`{`name?*#546`} [], `DATAS`{`name?*#547`} [], `ELEMS`{`name?*#548`} [], `LOCALS`{`name?*#549`} [], `LABELS`{`name?*#550`} [], `FIELDS`{`name?**#26`} [], `TYPEDEFS`{`deftype?*#17`} []} +++ I)] +[visit_exp ?()] +[visit_exp {`TYPES`{`name?*#541`} [], `TAGS`{`name?*#542`} [], `GLOBALS`{`name?*#543`} [], `MEMS`{`name?*#544`} [], `TABLES`{`name?*#545`} [], `FUNCS`{`name?*#546`} [], `DATAS`{`name?*#547`} [], `ELEMS`{`name?*#548`} [], `LOCALS`{`name?*#549`} [], `LABELS`{`name?*#550`} [], `FIELDS`{`name?**#26`} [], `TYPEDEFS`{`deftype?*#17`} []} +++ I] +[visit_exp {`TYPES`{`name?*#541`} [], `TAGS`{`name?*#542`} [], `GLOBALS`{`name?*#543`} [], `MEMS`{`name?*#544`} [], `TABLES`{`name?*#545`} [], `FUNCS`{`name?*#546`} [], `DATAS`{`name?*#547`} [], `ELEMS`{`name?*#548`} [], `LOCALS`{`name?*#549`} [], `LABELS`{`name?*#550`} [], `FIELDS`{`name?**#26`} [], `TYPEDEFS`{`deftype?*#17`} []}] +[visit_exp `name?*#541`] +[visit_id name?*#541] +[visit_exp []] +[visit_exp `name?*#542`] +[visit_id name?*#542] +[visit_exp []] +[visit_exp `name?*#543`] +[visit_id name?*#543] +[visit_exp []] +[visit_exp `name?*#544`] +[visit_id name?*#544] +[visit_exp []] +[visit_exp `name?*#545`] +[visit_id name?*#545] +[visit_exp []] +[visit_exp `name?*#546`] +[visit_id name?*#546] +[visit_exp []] +[visit_exp `name?*#547`] +[visit_id name?*#547] +[visit_exp []] +[visit_exp `name?*#548`] +[visit_id name?*#548] +[visit_exp []] +[visit_exp `name?*#549`] +[visit_id name?*#549] +[visit_exp []] +[visit_exp `name?*#550`] +[visit_id name?*#550] +[visit_exp []] +[visit_exp `name?**#26`] +[visit_id name?**#26] +[visit_exp []] +[visit_exp `deftype?*#17`] +[visit_id deftype?*#17] +[visit_exp []] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I deftype?*#18 id name?*#551 name?*#552 name?*#553 name?*#554 name?*#555 name?*#556 name?*#557 name?*#558 name?*#559 name?*#560 name?*#566 name?**#27 +dims \ I = deftype?*#18, id, name?*#551, name?*#552, name?*#553, name?*#554, name?*#555, name?*#556, name?*#557, name?*#558, name?*#559, name?*#560, name?*#566, name?**#27 +[visit_exp (?(id), {`TYPES`{`name?*#551`} [], `TAGS`{`name?*#552`} [], `GLOBALS`{`name?*#553`} [], `MEMS`{`name?*#554`} [], `TABLES`{`name?*#555`} [], `FUNCS`{`name?*#556`} [], `DATAS`{`name?*#557`} [], `ELEMS`{`name?*#558`} [], `LOCALS`{`name?*#559`} [], `LABELS`{`name?*#560`} [?(id)], `FIELDS`{`name?**#27`} [], `TYPEDEFS`{`deftype?*#18`} []} +++ I)] +[visit_exp ?(id)] +[visit_exp id] +[visit_id id] +[visit_exp {`TYPES`{`name?*#551`} [], `TAGS`{`name?*#552`} [], `GLOBALS`{`name?*#553`} [], `MEMS`{`name?*#554`} [], `TABLES`{`name?*#555`} [], `FUNCS`{`name?*#556`} [], `DATAS`{`name?*#557`} [], `ELEMS`{`name?*#558`} [], `LOCALS`{`name?*#559`} [], `LABELS`{`name?*#560`} [?(id)], `FIELDS`{`name?**#27`} [], `TYPEDEFS`{`deftype?*#18`} []} +++ I] +[visit_exp {`TYPES`{`name?*#551`} [], `TAGS`{`name?*#552`} [], `GLOBALS`{`name?*#553`} [], `MEMS`{`name?*#554`} [], `TABLES`{`name?*#555`} [], `FUNCS`{`name?*#556`} [], `DATAS`{`name?*#557`} [], `ELEMS`{`name?*#558`} [], `LOCALS`{`name?*#559`} [], `LABELS`{`name?*#560`} [?(id)], `FIELDS`{`name?**#27`} [], `TYPEDEFS`{`deftype?*#18`} []}] +[visit_exp `name?*#551`] +[visit_id name?*#551] +[visit_exp []] +[visit_exp `name?*#552`] +[visit_id name?*#552] +[visit_exp []] +[visit_exp `name?*#553`] +[visit_id name?*#553] +[visit_exp []] +[visit_exp `name?*#554`] +[visit_id name?*#554] +[visit_exp []] +[visit_exp `name?*#555`] +[visit_id name?*#555] +[visit_exp []] +[visit_exp `name?*#556`] +[visit_id name?*#556] +[visit_exp []] +[visit_exp `name?*#557`] +[visit_id name?*#557] +[visit_exp []] +[visit_exp `name?*#558`] +[visit_id name?*#558] +[visit_exp []] +[visit_exp `name?*#559`] +[visit_id name?*#559] +[visit_exp []] +[visit_exp `name?*#560`] +[visit_id name?*#560] +[visit_exp [?(id)]] +[visit_exp ?(id)] +[visit_exp id] +[visit_id id] not free +[visit_exp `name?**#27`] +[visit_id name?**#27] +[visit_exp []] +[visit_exp `deftype?*#18`] +[visit_id deftype?*#18] +[visit_exp []] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp id] +[visit_id id] not free +[visit_exp ~ (?(id) <- I.`LABELS`_I{`name?*#566`})] +[visit_exp (?(id) <- I.`LABELS`_I{`name?*#566`})] +[visit_exp ?(id)] +[visit_exp id] +[visit_id id] not free +[visit_exp I.`LABELS`_I{`name?*#566`}] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp `name?*#566`] +[visit_id name?*#566] +[check_dims] I deftype?*#19 i#96077 i#96087 id name?*#567 name?*#568 name?*#569 name?*#570 name?*#571 name?*#572 name?*#573 name?*#574 name?*#575 name?*#576 name?*#577 name?*#578 name?**#28 x +dims \ I = deftype?*#19, i#96077, i#96087, id, name?*#567, name?*#568, name?*#569, name?*#570, name?*#571, name?*#572, name?*#573, name?*#574, name?*#575, name?*#576, name?*#577, name?*#578, name?**#28, x +[visit_exp (?(id), {`TYPES`{`name?*#567`} [], `TAGS`{`name?*#568`} [], `GLOBALS`{`name?*#569`} [], `MEMS`{`name?*#570`} [], `TABLES`{`name?*#571`} [], `FUNCS`{`name?*#572`} [], `DATAS`{`name?*#573`} [], `ELEMS`{`name?*#574`} [], `LOCALS`{`name?*#575`} [], `LABELS`{`name?*#576`} [?(id)], `FIELDS`{`name?**#28`} [], `TYPEDEFS`{`deftype?*#19`} []} +++ I[`LABELS`_I{`name?*#577`}[x!`%`_idx{i#96077}.0] = ?()])] +[visit_exp ?(id)] +[visit_exp id] +[visit_id id] +[visit_exp {`TYPES`{`name?*#567`} [], `TAGS`{`name?*#568`} [], `GLOBALS`{`name?*#569`} [], `MEMS`{`name?*#570`} [], `TABLES`{`name?*#571`} [], `FUNCS`{`name?*#572`} [], `DATAS`{`name?*#573`} [], `ELEMS`{`name?*#574`} [], `LOCALS`{`name?*#575`} [], `LABELS`{`name?*#576`} [?(id)], `FIELDS`{`name?**#28`} [], `TYPEDEFS`{`deftype?*#19`} []} +++ I[`LABELS`_I{`name?*#577`}[x!`%`_idx{i#96077}.0] = ?()]] +[visit_exp {`TYPES`{`name?*#567`} [], `TAGS`{`name?*#568`} [], `GLOBALS`{`name?*#569`} [], `MEMS`{`name?*#570`} [], `TABLES`{`name?*#571`} [], `FUNCS`{`name?*#572`} [], `DATAS`{`name?*#573`} [], `ELEMS`{`name?*#574`} [], `LOCALS`{`name?*#575`} [], `LABELS`{`name?*#576`} [?(id)], `FIELDS`{`name?**#28`} [], `TYPEDEFS`{`deftype?*#19`} []}] +[visit_exp `name?*#567`] +[visit_id name?*#567] +[visit_exp []] +[visit_exp `name?*#568`] +[visit_id name?*#568] +[visit_exp []] +[visit_exp `name?*#569`] +[visit_id name?*#569] +[visit_exp []] +[visit_exp `name?*#570`] +[visit_id name?*#570] +[visit_exp []] +[visit_exp `name?*#571`] +[visit_id name?*#571] +[visit_exp []] +[visit_exp `name?*#572`] +[visit_id name?*#572] +[visit_exp []] +[visit_exp `name?*#573`] +[visit_id name?*#573] +[visit_exp []] +[visit_exp `name?*#574`] +[visit_id name?*#574] +[visit_exp []] +[visit_exp `name?*#575`] +[visit_id name?*#575] +[visit_exp []] +[visit_exp `name?*#576`] +[visit_id name?*#576] +[visit_exp [?(id)]] +[visit_exp ?(id)] +[visit_exp id] +[visit_id id] not free +[visit_exp `name?**#28`] +[visit_id name?**#28] +[visit_exp []] +[visit_exp `deftype?*#19`] +[visit_id deftype?*#19] +[visit_exp []] +[visit_exp I[`LABELS`_I{`name?*#577`}[x!`%`_idx{i#96077}.0] = ?()]] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp `name?*#577`] +[visit_id name?*#577] +[visit_exp x!`%`_idx{i#96077}.0] +[visit_exp x!`%`_idx{i#96077}] +[visit_exp x] +[visit_id x] +[visit_exp i#96077] +[visit_id i#96077] +[visit_exp ?()] +[visit_exp id] +[visit_id id] not free +[visit_exp (?(id) = I.`LABELS`_I{`name?*#578`}[x!`%`_idx{i#96087}.0])] +[visit_exp ?(id)] +[visit_exp id] +[visit_id id] not free +[visit_exp I.`LABELS`_I{`name?*#578`}[x!`%`_idx{i#96087}.0]] +[visit_exp I.`LABELS`_I{`name?*#578`}] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp `name?*#578`] +[visit_id name?*#578] +[visit_exp x!`%`_idx{i#96087}.0] +[visit_exp x!`%`_idx{i#96087}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#96087] +[visit_id i#96087] +[visit_id I] not free +[visit_id _] not free +[visit_id _] no dims +[visit_id _] not free +[visit_id _] no dims +ps' = (I : I) +[check_dims] I +[check_dims] I in +dims \ I = in +[visit_exp in] +[visit_id in] +[visit_exp in] +[visit_id in] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I in +dims \ I = in +[visit_exp in] +[visit_id in] +[visit_exp in] +[visit_id in] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I in +dims \ I = in +[visit_exp in*{in <- `in*`}] +[scope_enter in] +[visit_exp in] +[visit_id in] not free +[visit_id in] not free +[scope_exit in] +[visit_exp `in*`] +[visit_id in*] no dims +[visit_id in*] +[visit_exp in*{in <- `in*`}] +[scope_enter in] +[visit_exp in] +[visit_id in] not free +[visit_id in] not free +[scope_exit in] +[visit_exp `in*`] +[visit_id in*] not free +[visit_id in*] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I in +dims \ I = in +[visit_exp $concat_(syntax instr, in*{in <- `in*`}*{`in*` <- `in**`})] +[visit_exp in*{in <- `in*`}*{`in*` <- `in**`}] +[scope_enter in*] +[visit_exp in*{in <- `in*`}] +[scope_enter in] +[visit_exp in] +[visit_id in] not free +[visit_id in] not free +[scope_exit in] +[visit_exp `in*`] +[visit_id in*] not free +[visit_id in*] no dims +[visit_id in*] not free +[visit_id in*] no dims +[scope_exit in*] +[visit_exp `in**`] +[visit_id in**] no dims +[visit_id in**] +[visit_exp in*{in <- `in*`}*{`in*` <- `in**`}] +[scope_enter in*] +[visit_exp in*{in <- `in*`}] +[scope_enter in] +[visit_exp in] +[visit_id in] not free +[visit_id in] not free +[scope_exit in] +[visit_exp `in*`] +[visit_id in*] not free +[visit_id in*] no dims +[visit_id in*] not free +[visit_id in*] no dims +[scope_exit in*] +[visit_exp `in**`] +[visit_id in**] not free +[visit_id in**] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I I' +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp I'] +[visit_id I'] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp I'] +[visit_id I'] not free +[check_dims] I I' +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp I'] +[visit_id I'] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp I'] +[visit_id I'] not free +[check_dims] I I' in_1 in_2 +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp in_1*{in_1 <- `in_1*`}] +[scope_enter in_1] +[visit_exp in_1] +[visit_id in_1] not free +[visit_id in_1] not free +[scope_exit in_1] +[visit_exp `in_1*`] +[visit_id in_1*] no dims +[visit_id in_1*] +[visit_exp I'] +[visit_id I'] +[scope_enter in_2*] +[visit_exp in_2*{in_2 <- `in_2*`}] +[scope_enter in_2] +[visit_exp in_2] +[visit_id in_2] not free +[visit_id in_2] not free +[scope_exit in_2] +[visit_exp `in_2*`] +[visit_id in_2*] not free +[visit_id in_2*] no dims +[visit_exp I'] +[visit_id I'] not free +[visit_id in_2*] not free +[visit_id in_2*] no dims +[scope_exit in_2*] +[visit_exp `in_2*?`] +[visit_id in_2*?] no dims +[visit_id in_2*?] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp in_1*{in_1 <- `in_1*`}] +[scope_enter in_1] +[visit_exp in_1] +[visit_id in_1] not free +[visit_id in_1] not free +[scope_exit in_1] +[visit_exp `in_1*`] +[visit_id in_1*] not free +[visit_id in_1*] no dims +[visit_exp I'] +[visit_id I'] not free +[scope_enter in_2*] +[visit_exp in_2*{in_2 <- `in_2*`}] +[scope_enter in_2] +[visit_exp in_2] +[visit_id in_2] not free +[visit_id in_2] not free +[scope_exit in_2] +[visit_exp `in_2*`] +[visit_id in_2*] not free +[visit_id in_2*] no dims +[visit_exp I'] +[visit_id I'] not free +[visit_id in_2*] not free +[visit_id in_2*] no dims +[scope_exit in_2*] +[visit_exp `in_2*?`] +[visit_id in_2*?] not free +[visit_id in_2*?] no dims +[check_dims] I I' +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp I'] +[visit_id I'] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp I'] +[visit_id I'] not free +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I +dims \ I = +[visit_exp `UNREACHABLE`_instr] +[visit_exp ()] +[check_dims] I +dims \ I = +[visit_exp `NOP`_instr] +[visit_exp ()] +[check_dims] I +dims \ I = +[visit_exp `DROP`_instr] +[visit_exp ()] +[check_dims] I t valtype*?#15 +dims \ I = t, valtype*?#15 +[visit_exp `SELECT`_instr{`valtype*?#15`}(t*{t <- `t*`}?{`t*` <- `t*?`})] +[visit_exp `valtype*?#15`] +[visit_id valtype*?#15] +[visit_exp (t*{t <- `t*`}?{`t*` <- `t*?`})] +[visit_exp t*{t <- `t*`}?{`t*` <- `t*?`}] +[scope_enter t*] +[visit_exp t*{t <- `t*`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] not free +[visit_id t*] no dims +[visit_id t*] not free +[visit_id t*] no dims +[scope_exit t*] +[visit_exp `t*?`] +[visit_id t*?] no dims +[visit_id t*?] +[scope_enter t*] +[visit_exp t*{t <- `t*`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t*`] +[visit_id t*] not free +[visit_id t*] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id t*] not free +[visit_id t*] no dims +[scope_exit t*] +[visit_exp `t*?`] +[visit_id t*?] not free +[visit_id t*?] no dims +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I t valtype?#11 +dims \ I = t, valtype?#11 +[visit_exp `_RESULT`_blocktype{`valtype?#11`}(t?{t <- `t?`})] +[visit_exp `valtype?#11`] +[visit_id valtype?#11] +[visit_exp (t?{t <- `t?`})] +[visit_exp t?{t <- `t?`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t?`] +[visit_id t?] no dims +[visit_id t?] +[visit_exp t?{t <- `t?`}] +[scope_enter t] +[visit_exp t] +[visit_id t] not free +[visit_id t] not free +[scope_exit t] +[visit_exp `t?`] +[visit_id t?] not free +[visit_id t?] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I I' char*#1231 deftype?*#20 name?*#579 name?*#580 name?*#581 name?*#582 name?*#583 name?*#584 name?*#585 name?*#586 name?*#587 name?*#588 name?**#29 typeidx#2127 x +dims \ I = I', char*#1231, deftype?*#20, name?*#579, name?*#580, name?*#581, name?*#582, name?*#583, name?*#584, name?*#585, name?*#586, name?*#587, name?*#588, name?**#29, typeidx#2127, x +[visit_exp `_IDX`_blocktype{typeidx#2127}(x)] +[visit_exp typeidx#2127] +[visit_id typeidx#2127] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp (x, I')] +[visit_exp x] +[visit_id x] not free +[visit_exp I'] +[visit_id I'] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp (I' = {`TYPES`{`name?*#579`} [], `TAGS`{`name?*#580`} [], `GLOBALS`{`name?*#581`} [], `MEMS`{`name?*#582`} [], `TABLES`{`name?*#583`} [], `FUNCS`{`name?*#584`} [], `DATAS`{`name?*#585`} [], `ELEMS`{`name?*#586`} [], `LOCALS`{`name?*#587`} ?(`%`_name{`char*#1231`}([]))*{`char*#1231` <- `char*#1231*`}, `LABELS`{`name?*#588`} [], `FIELDS`{`name?**#29`} [], `TYPEDEFS`{`deftype?*#20`} []})] +[visit_exp I'] +[visit_id I'] not free +[visit_exp {`TYPES`{`name?*#579`} [], `TAGS`{`name?*#580`} [], `GLOBALS`{`name?*#581`} [], `MEMS`{`name?*#582`} [], `TABLES`{`name?*#583`} [], `FUNCS`{`name?*#584`} [], `DATAS`{`name?*#585`} [], `ELEMS`{`name?*#586`} [], `LOCALS`{`name?*#587`} ?(`%`_name{`char*#1231`}([]))*{`char*#1231` <- `char*#1231*`}, `LABELS`{`name?*#588`} [], `FIELDS`{`name?**#29`} [], `TYPEDEFS`{`deftype?*#20`} []}] +[visit_exp `name?*#579`] +[visit_id name?*#579] +[visit_exp []] +[visit_exp `name?*#580`] +[visit_id name?*#580] +[visit_exp []] +[visit_exp `name?*#581`] +[visit_id name?*#581] +[visit_exp []] +[visit_exp `name?*#582`] +[visit_id name?*#582] +[visit_exp []] +[visit_exp `name?*#583`] +[visit_id name?*#583] +[visit_exp []] +[visit_exp `name?*#584`] +[visit_id name?*#584] +[visit_exp []] +[visit_exp `name?*#585`] +[visit_id name?*#585] +[visit_exp []] +[visit_exp `name?*#586`] +[visit_id name?*#586] +[visit_exp []] +[visit_exp `name?*#587`] +[visit_id name?*#587] +[visit_exp ?(`%`_name{`char*#1231`}([]))*{`char*#1231` <- `char*#1231*`}] +[scope_enter char*#1231] +[visit_exp ?(`%`_name{`char*#1231`}([]))] +[visit_exp `%`_name{`char*#1231`}([])] +[visit_exp `char*#1231`] +[visit_id char*#1231] not free +[visit_exp ([])] +[visit_exp []] +[visit_id char*#1231] not free +[scope_exit char*#1231] +[visit_exp `char*#1231*`] +[visit_id char*#1231*] no dims +[visit_id char*#1231*] +[visit_exp `name?*#588`] +[visit_id name?*#588] +[visit_exp []] +[visit_exp `name?**#29`] +[visit_id name?**#29] +[visit_exp []] +[visit_exp `deftype?*#20`] +[visit_id deftype?*#20] +[visit_exp []] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I I' blocktype#41 bt char*#1237 char*#1243 id id' in instr*#2360 +dims \ I = I', blocktype#41, bt, char*#1237, char*#1243, id, id', in, instr*#2360 +[visit_exp `BLOCK`_instr{blocktype#41, `instr*#2360`}(bt, in*{in <- `in*`})] +[visit_exp blocktype#41] +[visit_id blocktype#41] +[visit_exp `instr*#2360`] +[visit_id instr*#2360] +[visit_exp (bt, in*{in <- `in*`})] +[visit_exp bt] +[visit_id bt] +[visit_exp in*{in <- `in*`}] +[scope_enter in] +[visit_exp in] +[visit_id in] not free +[visit_id in] not free +[scope_exit in] +[visit_exp `in*`] +[visit_id in*] no dims +[visit_id in*] +[visit_exp (?(`%`_name{`char*#1237`}(lift(id?{id <- `id?`}))), I')] +[visit_exp ?(`%`_name{`char*#1237`}(lift(id?{id <- `id?`})))] +[visit_exp `%`_name{`char*#1237`}(lift(id?{id <- `id?`}))] +[visit_exp `char*#1237`] +[visit_id char*#1237] +[visit_exp (lift(id?{id <- `id?`}))] +[visit_exp lift(id?{id <- `id?`})] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] no dims +[visit_id id?] +[visit_exp I'] +[visit_id I'] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp bt] +[visit_id bt] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp in*{in <- `in*`}] +[scope_enter in] +[visit_exp in] +[visit_id in] not free +[visit_id in] not free +[scope_exit in] +[visit_exp `in*`] +[visit_id in*] not free +[visit_id in*] no dims +[visit_exp I'] +[visit_id I'] not free +[visit_exp ?(`%`_name{`char*#1243`}(lift(id'?{id' <- `id'?`})))] +[visit_exp `%`_name{`char*#1243`}(lift(id'?{id' <- `id'?`}))] +[visit_exp `char*#1243`] +[visit_id char*#1243] +[visit_exp (lift(id'?{id' <- `id'?`}))] +[visit_exp lift(id'?{id' <- `id'?`})] +[visit_exp id'?{id' <- `id'?`}] +[scope_enter id'] +[visit_exp id'] +[visit_id id'] not free +[visit_id id'] not free +[scope_exit id'] +[visit_exp `id'?`] +[visit_id id'?] no dims +[visit_id id'?] +[visit_exp ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`}))] +[visit_exp (id'?{id' <- `id'?`} = ?())] +[visit_exp id'?{id' <- `id'?`}] +[scope_enter id'] +[visit_exp id'] +[visit_id id'] not free +[visit_id id'] not free +[scope_exit id'] +[visit_exp `id'?`] +[visit_id id'?] not free +[visit_id id'?] no dims +[visit_exp ?()] +[visit_exp (id'?{id' <- `id'?`} = id?{id <- `id?`})] +[visit_exp id'?{id' <- `id'?`}] +[scope_enter id'] +[visit_exp id'] +[visit_id id'] not free +[visit_id id'] not free +[scope_exit id'] +[visit_exp `id'?`] +[visit_id id'?] not free +[visit_id id'?] no dims +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] not free +[visit_id id?] no dims +[check_dims] I I' blocktype#43 bt char*#1249 char*#1255 id id' in instr*#2362 +dims \ I = I', blocktype#43, bt, char*#1249, char*#1255, id, id', in, instr*#2362 +[visit_exp `LOOP`_instr{blocktype#43, `instr*#2362`}(bt, in*{in <- `in*`})] +[visit_exp blocktype#43] +[visit_id blocktype#43] +[visit_exp `instr*#2362`] +[visit_id instr*#2362] +[visit_exp (bt, in*{in <- `in*`})] +[visit_exp bt] +[visit_id bt] +[visit_exp in*{in <- `in*`}] +[scope_enter in] +[visit_exp in] +[visit_id in] not free +[visit_id in] not free +[scope_exit in] +[visit_exp `in*`] +[visit_id in*] no dims +[visit_id in*] +[visit_exp (?(`%`_name{`char*#1249`}(lift(id?{id <- `id?`}))), I')] +[visit_exp ?(`%`_name{`char*#1249`}(lift(id?{id <- `id?`})))] +[visit_exp `%`_name{`char*#1249`}(lift(id?{id <- `id?`}))] +[visit_exp `char*#1249`] +[visit_id char*#1249] +[visit_exp (lift(id?{id <- `id?`}))] +[visit_exp lift(id?{id <- `id?`})] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] no dims +[visit_id id?] +[visit_exp I'] +[visit_id I'] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp bt] +[visit_id bt] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp in*{in <- `in*`}] +[scope_enter in] +[visit_exp in] +[visit_id in] not free +[visit_id in] not free +[scope_exit in] +[visit_exp `in*`] +[visit_id in*] not free +[visit_id in*] no dims +[visit_exp I'] +[visit_id I'] not free +[visit_exp ?(`%`_name{`char*#1255`}(lift(id'?{id' <- `id'?`})))] +[visit_exp `%`_name{`char*#1255`}(lift(id'?{id' <- `id'?`}))] +[visit_exp `char*#1255`] +[visit_id char*#1255] +[visit_exp (lift(id'?{id' <- `id'?`}))] +[visit_exp lift(id'?{id' <- `id'?`})] +[visit_exp id'?{id' <- `id'?`}] +[scope_enter id'] +[visit_exp id'] +[visit_id id'] not free +[visit_id id'] not free +[scope_exit id'] +[visit_exp `id'?`] +[visit_id id'?] no dims +[visit_id id'?] +[visit_exp ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`}))] +[visit_exp (id'?{id' <- `id'?`} = ?())] +[visit_exp id'?{id' <- `id'?`}] +[scope_enter id'] +[visit_exp id'] +[visit_id id'] not free +[visit_id id'] not free +[scope_exit id'] +[visit_exp `id'?`] +[visit_id id'?] not free +[visit_id id'?] no dims +[visit_exp ?()] +[visit_exp (id'?{id' <- `id'?`} = id?{id <- `id?`})] +[visit_exp id'?{id' <- `id'?`}] +[scope_enter id'] +[visit_exp id'] +[visit_id id'] not free +[visit_id id'] not free +[scope_exit id'] +[visit_exp `id'?`] +[visit_id id'?] not free +[visit_id id'?] no dims +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] not free +[visit_id id?] no dims +[check_dims] I I' blocktype#45 bt char*#1261 char*#1267 char*#1273 id id_1 id_2 in_1 in_2 instr*#2364 +dims \ I = I', blocktype#45, bt, char*#1261, char*#1267, char*#1273, id, id_1, id_2, in_1, in_2, instr*#2364 +[visit_exp `IF%%ELSE%`_instr{blocktype#45, `instr*#2364`}(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`})] +[visit_exp blocktype#45] +[visit_id blocktype#45] +[visit_exp `instr*#2364`] +[visit_id instr*#2364] +[visit_exp (bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`})] +[visit_exp bt] +[visit_id bt] +[visit_exp in_1*{in_1 <- `in_1*`}] +[scope_enter in_1] +[visit_exp in_1] +[visit_id in_1] not free +[visit_id in_1] not free +[scope_exit in_1] +[visit_exp `in_1*`] +[visit_id in_1*] no dims +[visit_id in_1*] +[visit_exp in_2*{in_2 <- `in_2*`}] +[scope_enter in_2] +[visit_exp in_2] +[visit_id in_2] not free +[visit_id in_2] not free +[scope_exit in_2] +[visit_exp `in_2*`] +[visit_id in_2*] no dims +[visit_id in_2*] +[visit_exp (?(`%`_name{`char*#1261`}(lift(id?{id <- `id?`}))), I')] +[visit_exp ?(`%`_name{`char*#1261`}(lift(id?{id <- `id?`})))] +[visit_exp `%`_name{`char*#1261`}(lift(id?{id <- `id?`}))] +[visit_exp `char*#1261`] +[visit_id char*#1261] +[visit_exp (lift(id?{id <- `id?`}))] +[visit_exp lift(id?{id <- `id?`})] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] no dims +[visit_id id?] +[visit_exp I'] +[visit_id I'] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp bt] +[visit_id bt] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp in_1*{in_1 <- `in_1*`}] +[scope_enter in_1] +[visit_exp in_1] +[visit_id in_1] not free +[visit_id in_1] not free +[scope_exit in_1] +[visit_exp `in_1*`] +[visit_id in_1*] not free +[visit_id in_1*] no dims +[visit_exp I'] +[visit_id I'] not free +[visit_exp ?(`%`_name{`char*#1267`}(lift(id_1?{id_1 <- `id_1?`})))] +[visit_exp `%`_name{`char*#1267`}(lift(id_1?{id_1 <- `id_1?`}))] +[visit_exp `char*#1267`] +[visit_id char*#1267] +[visit_exp (lift(id_1?{id_1 <- `id_1?`}))] +[visit_exp lift(id_1?{id_1 <- `id_1?`})] +[visit_exp id_1?{id_1 <- `id_1?`}] +[scope_enter id_1] +[visit_exp id_1] +[visit_id id_1] not free +[visit_id id_1] not free +[scope_exit id_1] +[visit_exp `id_1?`] +[visit_id id_1?] no dims +[visit_id id_1?] +[visit_exp in_2*{in_2 <- `in_2*`}] +[scope_enter in_2] +[visit_exp in_2] +[visit_id in_2] not free +[visit_id in_2] not free +[scope_exit in_2] +[visit_exp `in_2*`] +[visit_id in_2*] not free +[visit_id in_2*] no dims +[visit_exp I'] +[visit_id I'] not free +[visit_exp ?(`%`_name{`char*#1273`}(lift(id_2?{id_2 <- `id_2?`})))] +[visit_exp `%`_name{`char*#1273`}(lift(id_2?{id_2 <- `id_2?`}))] +[visit_exp `char*#1273`] +[visit_id char*#1273] +[visit_exp (lift(id_2?{id_2 <- `id_2?`}))] +[visit_exp lift(id_2?{id_2 <- `id_2?`})] +[visit_exp id_2?{id_2 <- `id_2?`}] +[scope_enter id_2] +[visit_exp id_2] +[visit_id id_2] not free +[visit_id id_2] not free +[scope_exit id_2] +[visit_exp `id_2?`] +[visit_id id_2?] no dims +[visit_id id_2?] +[visit_exp (((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?`})))] +[visit_exp ((id_1?{id_1 <- `id_1?`} = ?()) \/ (id_1?{id_1 <- `id_1?`} = id?{id <- `id?`}))] +[visit_exp (id_1?{id_1 <- `id_1?`} = ?())] +[visit_exp id_1?{id_1 <- `id_1?`}] +[scope_enter id_1] +[visit_exp id_1] +[visit_id id_1] not free +[visit_id id_1] not free +[scope_exit id_1] +[visit_exp `id_1?`] +[visit_id id_1?] not free +[visit_id id_1?] no dims +[visit_exp ?()] +[visit_exp (id_1?{id_1 <- `id_1?`} = id?{id <- `id?`})] +[visit_exp id_1?{id_1 <- `id_1?`}] +[scope_enter id_1] +[visit_exp id_1] +[visit_id id_1] not free +[visit_id id_1] not free +[scope_exit id_1] +[visit_exp `id_1?`] +[visit_id id_1?] not free +[visit_id id_1?] no dims +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] not free +[visit_id id?] no dims +[visit_exp ((id_2?{id_2 <- `id_2?`} = ?()) \/ (id_2?{id_2 <- `id_2?`} = id?{id <- `id?`}))] +[visit_exp (id_2?{id_2 <- `id_2?`} = ?())] +[visit_exp id_2?{id_2 <- `id_2?`}] +[scope_enter id_2] +[visit_exp id_2] +[visit_id id_2] not free +[visit_id id_2] not free +[scope_exit id_2] +[visit_exp `id_2?`] +[visit_id id_2?] not free +[visit_id id_2?] no dims +[visit_exp ?()] +[visit_exp (id_2?{id_2 <- `id_2?`} = id?{id <- `id?`})] +[visit_exp id_2?{id_2 <- `id_2?`}] +[scope_enter id_2] +[visit_exp id_2] +[visit_id id_2] not free +[visit_id id_2] not free +[scope_exit id_2] +[visit_exp `id_2?`] +[visit_id id_2?] not free +[visit_id id_2?] no dims +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] not free +[visit_id id?] no dims +[check_dims] I I' X*#13607 blocktype#47 bt c char*#1279 char*#1285 id id' in instr*#2367 +dims \ I = I', X*#13607, blocktype#47, bt, c, char*#1279, char*#1285, id, id', in, instr*#2367 +[visit_exp `TRY_TABLE`_instr{blocktype#47, `instr*#2367`}(bt, `%`_list{`X*#13607`}(c*{c <- `c*`}), in*{in <- `in*`})] +[visit_exp blocktype#47] +[visit_id blocktype#47] +[visit_exp `instr*#2367`] +[visit_id instr*#2367] +[visit_exp (bt, `%`_list{`X*#13607`}(c*{c <- `c*`}), in*{in <- `in*`})] +[visit_exp bt] +[visit_id bt] +[visit_exp `%`_list{`X*#13607`}(c*{c <- `c*`})] +[visit_exp `X*#13607`] +[visit_id X*#13607] +[visit_exp (c*{c <- `c*`})] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] no dims +[visit_id c*] +[visit_exp in*{in <- `in*`}] +[scope_enter in] +[visit_exp in] +[visit_id in] not free +[visit_id in] not free +[scope_exit in] +[visit_exp `in*`] +[visit_id in*] no dims +[visit_id in*] +[visit_exp (?(`%`_name{`char*#1279`}(lift(id?{id <- `id?`}))), I')] +[visit_exp ?(`%`_name{`char*#1279`}(lift(id?{id <- `id?`})))] +[visit_exp `%`_name{`char*#1279`}(lift(id?{id <- `id?`}))] +[visit_exp `char*#1279`] +[visit_id char*#1279] +[visit_exp (lift(id?{id <- `id?`}))] +[visit_exp lift(id?{id <- `id?`})] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] no dims +[visit_id id?] +[visit_exp I'] +[visit_id I'] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp bt] +[visit_id bt] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp in*{in <- `in*`}] +[scope_enter in] +[visit_exp in] +[visit_id in] not free +[visit_id in] not free +[scope_exit in] +[visit_exp `in*`] +[visit_id in*] not free +[visit_id in*] no dims +[visit_exp I'] +[visit_id I'] not free +[visit_exp ?(`%`_name{`char*#1285`}(lift(id'?{id' <- `id'?`})))] +[visit_exp `%`_name{`char*#1285`}(lift(id'?{id' <- `id'?`}))] +[visit_exp `char*#1285`] +[visit_id char*#1285] +[visit_exp (lift(id'?{id' <- `id'?`}))] +[visit_exp lift(id'?{id' <- `id'?`})] +[visit_exp id'?{id' <- `id'?`}] +[scope_enter id'] +[visit_exp id'] +[visit_id id'] not free +[visit_id id'] not free +[scope_exit id'] +[visit_exp `id'?`] +[visit_id id'?] no dims +[visit_id id'?] +[visit_exp ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`}))] +[visit_exp (id'?{id' <- `id'?`} = ?())] +[visit_exp id'?{id' <- `id'?`}] +[scope_enter id'] +[visit_exp id'] +[visit_id id'] not free +[visit_id id'] not free +[scope_exit id'] +[visit_exp `id'?`] +[visit_id id'?] not free +[visit_id id'?] no dims +[visit_exp ?()] +[visit_exp (id'?{id' <- `id'?`} = id?{id <- `id?`})] +[visit_exp id'?{id' <- `id'?`}] +[scope_enter id'] +[visit_exp id'] +[visit_id id'] not free +[visit_id id'] not free +[scope_exit id'] +[visit_exp `id'?`] +[visit_id id'?] not free +[visit_id id'?] no dims +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] not free +[visit_id id?] no dims +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I l labelidx#123 tagidx#29 x +dims \ I = l, labelidx#123, tagidx#29, x +[visit_exp `CATCH`_catch{tagidx#29, labelidx#123}(x, l)] +[visit_exp tagidx#29] +[visit_id tagidx#29] +[visit_exp labelidx#123] +[visit_id labelidx#123] +[visit_exp (x, l)] +[visit_exp x] +[visit_id x] +[visit_exp l] +[visit_id l] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp l] +[visit_id l] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I l labelidx#125 tagidx#31 x +dims \ I = l, labelidx#125, tagidx#31, x +[visit_exp `CATCH_REF`_catch{tagidx#31, labelidx#125}(x, l)] +[visit_exp tagidx#31] +[visit_id tagidx#31] +[visit_exp labelidx#125] +[visit_id labelidx#125] +[visit_exp (x, l)] +[visit_exp x] +[visit_id x] +[visit_exp l] +[visit_id l] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp l] +[visit_id l] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I l labelidx#127 +dims \ I = l, labelidx#127 +[visit_exp `CATCH_ALL`_catch{labelidx#127}(l)] +[visit_exp labelidx#127] +[visit_id labelidx#127] +[visit_exp (l)] +[visit_exp l] +[visit_id l] +[visit_exp l] +[visit_id l] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I l labelidx#129 +dims \ I = l, labelidx#129 +[visit_exp `CATCH_ALL_REF`_catch{labelidx#129}(l)] +[visit_exp labelidx#129] +[visit_id labelidx#129] +[visit_exp (l)] +[visit_exp l] +[visit_id l] +[visit_exp l] +[visit_id l] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I l labelidx#131 +dims \ I = l, labelidx#131 +[visit_exp `BR`_instr{labelidx#131}(l)] +[visit_exp labelidx#131] +[visit_id labelidx#131] +[visit_exp (l)] +[visit_exp l] +[visit_id l] +[visit_exp l] +[visit_id l] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I l labelidx#133 +dims \ I = l, labelidx#133 +[visit_exp `BR_IF`_instr{labelidx#133}(l)] +[visit_exp labelidx#133] +[visit_id labelidx#133] +[visit_exp (l)] +[visit_exp l] +[visit_id l] +[visit_exp l] +[visit_id l] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I l l' labelidx#135 labelidx*#56 +dims \ I = l, l', labelidx#135, labelidx*#56 +[visit_exp `BR_TABLE`_instr{`labelidx*#56`, labelidx#135}(l*{l <- `l*`}, l')] +[visit_exp `labelidx*#56`] +[visit_id labelidx*#56] +[visit_exp labelidx#135] +[visit_id labelidx#135] +[visit_exp (l*{l <- `l*`}, l')] +[visit_exp l*{l <- `l*`}] +[scope_enter l] +[visit_exp l] +[visit_id l] not free +[visit_id l] not free +[scope_exit l] +[visit_exp `l*`] +[visit_id l*] no dims +[visit_id l*] +[visit_exp l'] +[visit_id l'] +[visit_exp l*{l <- `l*`}] +[scope_enter l] +[visit_exp l] +[visit_id l] not free +[visit_id l] not free +[scope_exit l] +[visit_exp `l*`] +[visit_id l*] not free +[visit_id l*] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp l'] +[visit_id l'] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I l labelidx#137 +dims \ I = l, labelidx#137 +[visit_exp `BR_ON_NULL`_instr{labelidx#137}(l)] +[visit_exp labelidx#137] +[visit_id labelidx#137] +[visit_exp (l)] +[visit_exp l] +[visit_id l] +[visit_exp l] +[visit_id l] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I l labelidx#139 +dims \ I = l, labelidx#139 +[visit_exp `BR_ON_NON_NULL`_instr{labelidx#139}(l)] +[visit_exp labelidx#139] +[visit_id labelidx#139] +[visit_exp (l)] +[visit_exp l] +[visit_id l] +[visit_exp l] +[visit_id l] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I l labelidx#141 reftype#4305 rt_1 rt_2 +dims \ I = l, labelidx#141, reftype#4305, rt_1, rt_2 +[visit_exp `BR_ON_CAST`_instr{labelidx#141, reftype#4305}(l, rt_1, rt_2)] +[visit_exp labelidx#141] +[visit_id labelidx#141] +[visit_exp reftype#4305] +[visit_id reftype#4305] +[visit_exp (l, rt_1, rt_2)] +[visit_exp l] +[visit_id l] +[visit_exp rt_1] +[visit_id rt_1] +[visit_exp rt_2] +[visit_id rt_2] +[visit_exp l] +[visit_id l] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp rt_1] +[visit_id rt_1] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp rt_2] +[visit_id rt_2] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I l labelidx#143 reftype#4308 rt_1 rt_2 +dims \ I = l, labelidx#143, reftype#4308, rt_1, rt_2 +[visit_exp `BR_ON_CAST_FAIL`_instr{labelidx#143, reftype#4308}(l, rt_1, rt_2)] +[visit_exp labelidx#143] +[visit_id labelidx#143] +[visit_exp reftype#4308] +[visit_id reftype#4308] +[visit_exp (l, rt_1, rt_2)] +[visit_exp l] +[visit_id l] +[visit_exp rt_1] +[visit_id rt_1] +[visit_exp rt_2] +[visit_id rt_2] +[visit_exp l] +[visit_id l] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp rt_1] +[visit_id rt_1] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp rt_2] +[visit_id rt_2] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I funcidx#3383 x +dims \ I = funcidx#3383, x +[visit_exp `CALL`_instr{funcidx#3383}(x)] +[visit_exp funcidx#3383] +[visit_id funcidx#3383] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I typeidx#2129 typeuse#79 x +dims \ I = typeidx#2129, typeuse#79, x +[visit_exp `CALL_REF`_instr{typeuse#79}(`_IDX`_typeuse{typeidx#2129}(x))] +[visit_exp typeuse#79] +[visit_id typeuse#79] +[visit_exp (`_IDX`_typeuse{typeidx#2129}(x))] +[visit_exp `_IDX`_typeuse{typeidx#2129}(x)] +[visit_exp typeidx#2129] +[visit_id typeidx#2129] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I I' char*#1315 deftype?*#21 name?*#589 name?*#590 name?*#591 name?*#592 name?*#593 name?*#594 name?*#595 name?*#596 name?*#597 name?*#598 name?**#30 tableidx#154 typeidx#2131 typeuse#81 x y +dims \ I = I', char*#1315, deftype?*#21, name?*#589, name?*#590, name?*#591, name?*#592, name?*#593, name?*#594, name?*#595, name?*#596, name?*#597, name?*#598, name?**#30, tableidx#154, typeidx#2131, typeuse#81, x, y +[visit_exp `CALL_INDIRECT`_instr{tableidx#154, typeuse#81}(x, `_IDX`_typeuse{typeidx#2131}(y))] +[visit_exp tableidx#154] +[visit_id tableidx#154] +[visit_exp typeuse#81] +[visit_id typeuse#81] +[visit_exp (x, `_IDX`_typeuse{typeidx#2131}(y))] +[visit_exp x] +[visit_id x] +[visit_exp `_IDX`_typeuse{typeidx#2131}(y)] +[visit_exp typeidx#2131] +[visit_id typeidx#2131] +[visit_exp (y)] +[visit_exp y] +[visit_id y] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp (y, I')] +[visit_exp y] +[visit_id y] not free +[visit_exp I'] +[visit_id I'] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp (I' = {`TYPES`{`name?*#589`} [], `TAGS`{`name?*#590`} [], `GLOBALS`{`name?*#591`} [], `MEMS`{`name?*#592`} [], `TABLES`{`name?*#593`} [], `FUNCS`{`name?*#594`} [], `DATAS`{`name?*#595`} [], `ELEMS`{`name?*#596`} [], `LOCALS`{`name?*#597`} ?(`%`_name{`char*#1315`}([]))*{`char*#1315` <- `char*#1315*`}, `LABELS`{`name?*#598`} [], `FIELDS`{`name?**#30`} [], `TYPEDEFS`{`deftype?*#21`} []})] +[visit_exp I'] +[visit_id I'] not free +[visit_exp {`TYPES`{`name?*#589`} [], `TAGS`{`name?*#590`} [], `GLOBALS`{`name?*#591`} [], `MEMS`{`name?*#592`} [], `TABLES`{`name?*#593`} [], `FUNCS`{`name?*#594`} [], `DATAS`{`name?*#595`} [], `ELEMS`{`name?*#596`} [], `LOCALS`{`name?*#597`} ?(`%`_name{`char*#1315`}([]))*{`char*#1315` <- `char*#1315*`}, `LABELS`{`name?*#598`} [], `FIELDS`{`name?**#30`} [], `TYPEDEFS`{`deftype?*#21`} []}] +[visit_exp `name?*#589`] +[visit_id name?*#589] +[visit_exp []] +[visit_exp `name?*#590`] +[visit_id name?*#590] +[visit_exp []] +[visit_exp `name?*#591`] +[visit_id name?*#591] +[visit_exp []] +[visit_exp `name?*#592`] +[visit_id name?*#592] +[visit_exp []] +[visit_exp `name?*#593`] +[visit_id name?*#593] +[visit_exp []] +[visit_exp `name?*#594`] +[visit_id name?*#594] +[visit_exp []] +[visit_exp `name?*#595`] +[visit_id name?*#595] +[visit_exp []] +[visit_exp `name?*#596`] +[visit_id name?*#596] +[visit_exp []] +[visit_exp `name?*#597`] +[visit_id name?*#597] +[visit_exp ?(`%`_name{`char*#1315`}([]))*{`char*#1315` <- `char*#1315*`}] +[scope_enter char*#1315] +[visit_exp ?(`%`_name{`char*#1315`}([]))] +[visit_exp `%`_name{`char*#1315`}([])] +[visit_exp `char*#1315`] +[visit_id char*#1315] not free +[visit_exp ([])] +[visit_exp []] +[visit_id char*#1315] not free +[scope_exit char*#1315] +[visit_exp `char*#1315*`] +[visit_id char*#1315*] no dims +[visit_id char*#1315*] +[visit_exp `name?*#598`] +[visit_id name?*#598] +[visit_exp []] +[visit_exp `name?**#30`] +[visit_id name?**#30] +[visit_exp []] +[visit_exp `deftype?*#21`] +[visit_id deftype?*#21] +[visit_exp []] +[check_dims] I +dims \ I = +[visit_exp `RETURN`_instr] +[visit_exp ()] +[check_dims] I funcidx#3385 x +dims \ I = funcidx#3385, x +[visit_exp `RETURN_CALL`_instr{funcidx#3385}(x)] +[visit_exp funcidx#3385] +[visit_id funcidx#3385] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I typeidx#2133 typeuse#83 x +dims \ I = typeidx#2133, typeuse#83, x +[visit_exp `RETURN_CALL_REF`_instr{typeuse#83}(`_IDX`_typeuse{typeidx#2133}(x))] +[visit_exp typeuse#83] +[visit_id typeuse#83] +[visit_exp (`_IDX`_typeuse{typeidx#2133}(x))] +[visit_exp `_IDX`_typeuse{typeidx#2133}(x)] +[visit_exp typeidx#2133] +[visit_id typeidx#2133] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I I' char*#1345 deftype?*#22 name?*#599 name?*#600 name?*#601 name?*#602 name?*#603 name?*#604 name?*#605 name?*#606 name?*#607 name?*#608 name?**#31 tableidx#156 typeidx#2135 typeuse#85 x y +dims \ I = I', char*#1345, deftype?*#22, name?*#599, name?*#600, name?*#601, name?*#602, name?*#603, name?*#604, name?*#605, name?*#606, name?*#607, name?*#608, name?**#31, tableidx#156, typeidx#2135, typeuse#85, x, y +[visit_exp `RETURN_CALL_INDIRECT`_instr{tableidx#156, typeuse#85}(x, `_IDX`_typeuse{typeidx#2135}(y))] +[visit_exp tableidx#156] +[visit_id tableidx#156] +[visit_exp typeuse#85] +[visit_id typeuse#85] +[visit_exp (x, `_IDX`_typeuse{typeidx#2135}(y))] +[visit_exp x] +[visit_id x] +[visit_exp `_IDX`_typeuse{typeidx#2135}(y)] +[visit_exp typeidx#2135] +[visit_id typeidx#2135] +[visit_exp (y)] +[visit_exp y] +[visit_id y] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp (y, I')] +[visit_exp y] +[visit_id y] not free +[visit_exp I'] +[visit_id I'] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp (I' = {`TYPES`{`name?*#599`} [], `TAGS`{`name?*#600`} [], `GLOBALS`{`name?*#601`} [], `MEMS`{`name?*#602`} [], `TABLES`{`name?*#603`} [], `FUNCS`{`name?*#604`} [], `DATAS`{`name?*#605`} [], `ELEMS`{`name?*#606`} [], `LOCALS`{`name?*#607`} ?(`%`_name{`char*#1345`}([]))*{`char*#1345` <- `char*#1345*`}, `LABELS`{`name?*#608`} [], `FIELDS`{`name?**#31`} [], `TYPEDEFS`{`deftype?*#22`} []})] +[visit_exp I'] +[visit_id I'] not free +[visit_exp {`TYPES`{`name?*#599`} [], `TAGS`{`name?*#600`} [], `GLOBALS`{`name?*#601`} [], `MEMS`{`name?*#602`} [], `TABLES`{`name?*#603`} [], `FUNCS`{`name?*#604`} [], `DATAS`{`name?*#605`} [], `ELEMS`{`name?*#606`} [], `LOCALS`{`name?*#607`} ?(`%`_name{`char*#1345`}([]))*{`char*#1345` <- `char*#1345*`}, `LABELS`{`name?*#608`} [], `FIELDS`{`name?**#31`} [], `TYPEDEFS`{`deftype?*#22`} []}] +[visit_exp `name?*#599`] +[visit_id name?*#599] +[visit_exp []] +[visit_exp `name?*#600`] +[visit_id name?*#600] +[visit_exp []] +[visit_exp `name?*#601`] +[visit_id name?*#601] +[visit_exp []] +[visit_exp `name?*#602`] +[visit_id name?*#602] +[visit_exp []] +[visit_exp `name?*#603`] +[visit_id name?*#603] +[visit_exp []] +[visit_exp `name?*#604`] +[visit_id name?*#604] +[visit_exp []] +[visit_exp `name?*#605`] +[visit_id name?*#605] +[visit_exp []] +[visit_exp `name?*#606`] +[visit_id name?*#606] +[visit_exp []] +[visit_exp `name?*#607`] +[visit_id name?*#607] +[visit_exp ?(`%`_name{`char*#1345`}([]))*{`char*#1345` <- `char*#1345*`}] +[scope_enter char*#1345] +[visit_exp ?(`%`_name{`char*#1345`}([]))] +[visit_exp `%`_name{`char*#1345`}([])] +[visit_exp `char*#1345`] +[visit_id char*#1345] not free +[visit_exp ([])] +[visit_exp []] +[visit_id char*#1345] not free +[scope_exit char*#1345] +[visit_exp `char*#1345*`] +[visit_id char*#1345*] no dims +[visit_id char*#1345*] +[visit_exp `name?*#608`] +[visit_id name?*#608] +[visit_exp []] +[visit_exp `name?**#31`] +[visit_id name?**#31] +[visit_exp []] +[visit_exp `deftype?*#22`] +[visit_id deftype?*#22] +[visit_exp []] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I tagidx#33 x +dims \ I = tagidx#33, x +[visit_exp `THROW`_instr{tagidx#33}(x)] +[visit_exp tagidx#33] +[visit_id tagidx#33] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I +dims \ I = +[visit_exp `THROW_REF`_instr] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I localidx#27 x +dims \ I = localidx#27, x +[visit_exp `LOCAL.GET`_instr{localidx#27}(x)] +[visit_exp localidx#27] +[visit_id localidx#27] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I localidx#29 x +dims \ I = localidx#29, x +[visit_exp `LOCAL.SET`_instr{localidx#29}(x)] +[visit_exp localidx#29] +[visit_id localidx#29] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I localidx#31 x +dims \ I = localidx#31, x +[visit_exp `LOCAL.TEE`_instr{localidx#31}(x)] +[visit_exp localidx#31] +[visit_id localidx#31] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I globalidx#31 x +dims \ I = globalidx#31, x +[visit_exp `GLOBAL.GET`_instr{globalidx#31}(x)] +[visit_exp globalidx#31] +[visit_id globalidx#31] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I globalidx#33 x +dims \ I = globalidx#33, x +[visit_exp `GLOBAL.SET`_instr{globalidx#33}(x)] +[visit_exp globalidx#33] +[visit_id globalidx#33] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I tableidx#158 x +dims \ I = tableidx#158, x +[visit_exp `TABLE.GET`_instr{tableidx#158}(x)] +[visit_exp tableidx#158] +[visit_id tableidx#158] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I tableidx#160 x +dims \ I = tableidx#160, x +[visit_exp `TABLE.SET`_instr{tableidx#160}(x)] +[visit_exp tableidx#160] +[visit_id tableidx#160] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I tableidx#162 x +dims \ I = tableidx#162, x +[visit_exp `TABLE.SIZE`_instr{tableidx#162}(x)] +[visit_exp tableidx#162] +[visit_id tableidx#162] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I tableidx#164 x +dims \ I = tableidx#164, x +[visit_exp `TABLE.GROW`_instr{tableidx#164}(x)] +[visit_exp tableidx#164] +[visit_id tableidx#164] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I tableidx#166 x +dims \ I = tableidx#166, x +[visit_exp `TABLE.FILL`_instr{tableidx#166}(x)] +[visit_exp tableidx#166] +[visit_id tableidx#166] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I tableidx#168 x_1 x_2 +dims \ I = tableidx#168, x_1, x_2 +[visit_exp `TABLE.COPY`_instr{tableidx#168}(x_1, x_2)] +[visit_exp tableidx#168] +[visit_id tableidx#168] +[visit_exp (x_1, x_2)] +[visit_exp x_1] +[visit_id x_1] +[visit_exp x_2] +[visit_id x_2] +[visit_exp x_1] +[visit_id x_1] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp x_2] +[visit_id x_2] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I elemidx#57 tableidx#171 x y +dims \ I = elemidx#57, tableidx#171, x, y +[visit_exp `TABLE.INIT`_instr{tableidx#171, elemidx#57}(x, y)] +[visit_exp tableidx#171] +[visit_id tableidx#171] +[visit_exp elemidx#57] +[visit_id elemidx#57] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] +[visit_exp y] +[visit_id y] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp y] +[visit_id y] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I +[check_dims] I +[check_dims] I +[check_dims] I +[check_dims] I +[check_dims] I +[check_dims] I +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I elemidx#59 x +dims \ I = elemidx#59, x +[visit_exp `ELEM.DROP`_instr{elemidx#59}(x)] +[visit_exp elemidx#59] +[visit_id elemidx#59] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +ps' = (N : N) +[check_dims] N +[check_dims] N i#97540 i#97567 i#97591 i#97613 m n u32#47 u64#609 +dims \ N = i#97540, i#97567, i#97591, i#97613, m, n, u32#47, u64#609 +[visit_exp {`ALIGN`{u32#47} `%`_u32{i#97591}(n), `OFFSET`{u64#609} `%`_u64{i#97613}(m)}] +[visit_exp u32#47] +[visit_id u32#47] +[visit_exp `%`_u32{i#97591}(n)] +[visit_exp i#97591] +[visit_id i#97591] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp u64#609] +[visit_id u64#609] +[visit_exp `%`_u64{i#97613}(m)] +[visit_exp i#97613] +[visit_id i#97613] +[visit_exp (m)] +[visit_exp m] +[visit_id m] +[visit_exp `%`_u64{i#97540}(n)] +[visit_exp i#97540] +[visit_id i#97540] +[visit_exp (n)] +[visit_exp n] +[visit_id n] not free +[visit_exp `%`_u64{i#97567}(m)] +[visit_exp i#97567] +[visit_id i#97567] +[visit_exp (m)] +[visit_exp m] +[visit_id m] not free +[visit_exp N] +[visit_id N] not free +[visit_id N] no dims +[visit_id N] not free +ps' = +[check_dims] +[check_dims] i#97638 i#97664 n +dims \ = i#97638, i#97664, n +[visit_exp `%`_u64{i#97664}(n)] +[visit_exp i#97664] +[visit_id i#97664] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `%`_u64{i#97638}(n)] +[visit_exp i#97638] +[visit_id i#97638] +[visit_exp (n)] +[visit_exp n] +[visit_id n] not free +[check_dims] i#97686 +dims \ = i#97686 +[visit_exp `%`_u64{i#97686}(0)] +[visit_exp i#97686] +[visit_id i#97686] +[visit_exp (0)] +[visit_exp 0] +ps' = (N : N) +[check_dims] N +[check_dims] N i#97711 i#97737 m n +dims \ N = i#97711, i#97737, m, n +[visit_exp `%`_u64{i#97737}(m)] +[visit_exp i#97737] +[visit_id i#97737] +[visit_exp (m)] +[visit_exp m] +[visit_id m] +[visit_exp `%`_u64{i#97711}(m)] +[visit_exp i#97711] +[visit_id i#97711] +[visit_exp (m)] +[visit_exp m] +[visit_id m] not free +[visit_exp (m = (2 ^ n))] +[visit_exp m] +[visit_id m] not free +[visit_exp (2 ^ n)] +[visit_exp 2] +[visit_exp n] +[visit_id n] +[check_dims] N i#97761 +dims \ N = i#97761 +[visit_exp `%`_u64{i#97761}(N)] +[visit_exp i#97761] +[visit_id i#97761] +[visit_exp (N)] +[visit_exp N] +[visit_id N] not free +[visit_id N] no dims +[visit_id N] not free +ps' = +[check_dims] +[check_dims] i +dims \ = i +[visit_exp i] +[visit_id i] +[visit_exp i] +[visit_id i] not free +ps' = (I : I) +[check_dims] I +[check_dims] I ao memarg#181 memidx#278 numtype?#44 x +dims \ I = ao, memarg#181, memidx#278, numtype?#44, x +[visit_exp `LOAD`_instr{`numtype?#44`, memidx#278, memarg#181}(`I32`_numtype, ?(), x, ao)] +[visit_exp `numtype?#44`] +[visit_id numtype?#44] +[visit_exp memidx#278] +[visit_id memidx#278] +[visit_exp memarg#181] +[visit_id memarg#181] +[visit_exp (`I32`_numtype, ?(), x, ao)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp ?()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 4] +[check_dims] I ao memarg#183 memidx#280 numtype?#45 x +dims \ I = ao, memarg#183, memidx#280, numtype?#45, x +[visit_exp `LOAD`_instr{`numtype?#45`, memidx#280, memarg#183}(`I64`_numtype, ?(), x, ao)] +[visit_exp `numtype?#45`] +[visit_id numtype?#45] +[visit_exp memidx#280] +[visit_id memidx#280] +[visit_exp memarg#183] +[visit_id memarg#183] +[visit_exp (`I64`_numtype, ?(), x, ao)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp ?()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 8] +[check_dims] I ao memarg#185 memidx#282 numtype?#46 x +dims \ I = ao, memarg#185, memidx#282, numtype?#46, x +[visit_exp `LOAD`_instr{`numtype?#46`, memidx#282, memarg#185}(`F32`_numtype, ?(), x, ao)] +[visit_exp `numtype?#46`] +[visit_id numtype?#46] +[visit_exp memidx#282] +[visit_id memidx#282] +[visit_exp memarg#185] +[visit_id memarg#185] +[visit_exp (`F32`_numtype, ?(), x, ao)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp ?()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 4] +[check_dims] I ao memarg#187 memidx#284 numtype?#47 x +dims \ I = ao, memarg#187, memidx#284, numtype?#47, x +[visit_exp `LOAD`_instr{`numtype?#47`, memidx#284, memarg#187}(`F64`_numtype, ?(), x, ao)] +[visit_exp `numtype?#47`] +[visit_id numtype?#47] +[visit_exp memidx#284] +[visit_id memidx#284] +[visit_exp memarg#187] +[visit_id memarg#187] +[visit_exp (`F64`_numtype, ?(), x, ao)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp ?()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 8] +[check_dims] I ao i#97957 i#97964 memarg#189 memidx#286 numtype?#48 sx#15729 sz#1643 x +dims \ I = ao, i#97957, i#97964, memarg#189, memidx#286, numtype?#48, sx#15729, sz#1643, x +[visit_exp `LOAD`_instr{`numtype?#48`, memidx#286, memarg#189}(`I32`_numtype, ?(`%_%`_loadop_{sz#1643, sx#15729, i#97957}(`%`_sz{i#97964}(8), `S`_sx)), x, ao)] +[visit_exp `numtype?#48`] +[visit_id numtype?#48] +[visit_exp memidx#286] +[visit_id memidx#286] +[visit_exp memarg#189] +[visit_id memarg#189] +[visit_exp (`I32`_numtype, ?(`%_%`_loadop_{sz#1643, sx#15729, i#97957}(`%`_sz{i#97964}(8), `S`_sx)), x, ao)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp ?(`%_%`_loadop_{sz#1643, sx#15729, i#97957}(`%`_sz{i#97964}(8), `S`_sx))] +[visit_exp `%_%`_loadop_{sz#1643, sx#15729, i#97957}(`%`_sz{i#97964}(8), `S`_sx)] +[visit_exp sz#1643] +[visit_id sz#1643] +[visit_exp sx#15729] +[visit_id sx#15729] +[visit_exp i#97957] +[visit_id i#97957] +[visit_exp (`%`_sz{i#97964}(8), `S`_sx)] +[visit_exp `%`_sz{i#97964}(8)] +[visit_exp i#97964] +[visit_id i#97964] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 1] +[check_dims] I ao i#98021 i#98028 memarg#191 memidx#288 numtype?#49 sx#15747 sz#1661 x +dims \ I = ao, i#98021, i#98028, memarg#191, memidx#288, numtype?#49, sx#15747, sz#1661, x +[visit_exp `LOAD`_instr{`numtype?#49`, memidx#288, memarg#191}(`I32`_numtype, ?(`%_%`_loadop_{sz#1661, sx#15747, i#98021}(`%`_sz{i#98028}(8), `U`_sx)), x, ao)] +[visit_exp `numtype?#49`] +[visit_id numtype?#49] +[visit_exp memidx#288] +[visit_id memidx#288] +[visit_exp memarg#191] +[visit_id memarg#191] +[visit_exp (`I32`_numtype, ?(`%_%`_loadop_{sz#1661, sx#15747, i#98021}(`%`_sz{i#98028}(8), `U`_sx)), x, ao)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp ?(`%_%`_loadop_{sz#1661, sx#15747, i#98021}(`%`_sz{i#98028}(8), `U`_sx))] +[visit_exp `%_%`_loadop_{sz#1661, sx#15747, i#98021}(`%`_sz{i#98028}(8), `U`_sx)] +[visit_exp sz#1661] +[visit_id sz#1661] +[visit_exp sx#15747] +[visit_id sx#15747] +[visit_exp i#98021] +[visit_id i#98021] +[visit_exp (`%`_sz{i#98028}(8), `U`_sx)] +[visit_exp `%`_sz{i#98028}(8)] +[visit_exp i#98028] +[visit_id i#98028] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 1] +[check_dims] I ao i#98085 i#98092 memarg#193 memidx#290 numtype?#50 sx#15765 sz#1679 x +dims \ I = ao, i#98085, i#98092, memarg#193, memidx#290, numtype?#50, sx#15765, sz#1679, x +[visit_exp `LOAD`_instr{`numtype?#50`, memidx#290, memarg#193}(`I32`_numtype, ?(`%_%`_loadop_{sz#1679, sx#15765, i#98085}(`%`_sz{i#98092}(16), `S`_sx)), x, ao)] +[visit_exp `numtype?#50`] +[visit_id numtype?#50] +[visit_exp memidx#290] +[visit_id memidx#290] +[visit_exp memarg#193] +[visit_id memarg#193] +[visit_exp (`I32`_numtype, ?(`%_%`_loadop_{sz#1679, sx#15765, i#98085}(`%`_sz{i#98092}(16), `S`_sx)), x, ao)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp ?(`%_%`_loadop_{sz#1679, sx#15765, i#98085}(`%`_sz{i#98092}(16), `S`_sx))] +[visit_exp `%_%`_loadop_{sz#1679, sx#15765, i#98085}(`%`_sz{i#98092}(16), `S`_sx)] +[visit_exp sz#1679] +[visit_id sz#1679] +[visit_exp sx#15765] +[visit_id sx#15765] +[visit_exp i#98085] +[visit_id i#98085] +[visit_exp (`%`_sz{i#98092}(16), `S`_sx)] +[visit_exp `%`_sz{i#98092}(16)] +[visit_exp i#98092] +[visit_id i#98092] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 2] +[check_dims] I ao i#98149 i#98156 memarg#195 memidx#292 numtype?#51 sx#15783 sz#1697 x +dims \ I = ao, i#98149, i#98156, memarg#195, memidx#292, numtype?#51, sx#15783, sz#1697, x +[visit_exp `LOAD`_instr{`numtype?#51`, memidx#292, memarg#195}(`I32`_numtype, ?(`%_%`_loadop_{sz#1697, sx#15783, i#98149}(`%`_sz{i#98156}(16), `U`_sx)), x, ao)] +[visit_exp `numtype?#51`] +[visit_id numtype?#51] +[visit_exp memidx#292] +[visit_id memidx#292] +[visit_exp memarg#195] +[visit_id memarg#195] +[visit_exp (`I32`_numtype, ?(`%_%`_loadop_{sz#1697, sx#15783, i#98149}(`%`_sz{i#98156}(16), `U`_sx)), x, ao)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp ?(`%_%`_loadop_{sz#1697, sx#15783, i#98149}(`%`_sz{i#98156}(16), `U`_sx))] +[visit_exp `%_%`_loadop_{sz#1697, sx#15783, i#98149}(`%`_sz{i#98156}(16), `U`_sx)] +[visit_exp sz#1697] +[visit_id sz#1697] +[visit_exp sx#15783] +[visit_id sx#15783] +[visit_exp i#98149] +[visit_id i#98149] +[visit_exp (`%`_sz{i#98156}(16), `U`_sx)] +[visit_exp `%`_sz{i#98156}(16)] +[visit_exp i#98156] +[visit_id i#98156] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 2] +[check_dims] I ao i#98213 i#98220 memarg#197 memidx#294 numtype?#52 sx#15801 sz#1715 x +dims \ I = ao, i#98213, i#98220, memarg#197, memidx#294, numtype?#52, sx#15801, sz#1715, x +[visit_exp `LOAD`_instr{`numtype?#52`, memidx#294, memarg#197}(`I64`_numtype, ?(`%_%`_loadop_{sz#1715, sx#15801, i#98213}(`%`_sz{i#98220}(8), `S`_sx)), x, ao)] +[visit_exp `numtype?#52`] +[visit_id numtype?#52] +[visit_exp memidx#294] +[visit_id memidx#294] +[visit_exp memarg#197] +[visit_id memarg#197] +[visit_exp (`I64`_numtype, ?(`%_%`_loadop_{sz#1715, sx#15801, i#98213}(`%`_sz{i#98220}(8), `S`_sx)), x, ao)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp ?(`%_%`_loadop_{sz#1715, sx#15801, i#98213}(`%`_sz{i#98220}(8), `S`_sx))] +[visit_exp `%_%`_loadop_{sz#1715, sx#15801, i#98213}(`%`_sz{i#98220}(8), `S`_sx)] +[visit_exp sz#1715] +[visit_id sz#1715] +[visit_exp sx#15801] +[visit_id sx#15801] +[visit_exp i#98213] +[visit_id i#98213] +[visit_exp (`%`_sz{i#98220}(8), `S`_sx)] +[visit_exp `%`_sz{i#98220}(8)] +[visit_exp i#98220] +[visit_id i#98220] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 1] +[check_dims] I ao i#98277 i#98284 memarg#199 memidx#296 numtype?#53 sx#15819 sz#1733 x +dims \ I = ao, i#98277, i#98284, memarg#199, memidx#296, numtype?#53, sx#15819, sz#1733, x +[visit_exp `LOAD`_instr{`numtype?#53`, memidx#296, memarg#199}(`I64`_numtype, ?(`%_%`_loadop_{sz#1733, sx#15819, i#98277}(`%`_sz{i#98284}(8), `U`_sx)), x, ao)] +[visit_exp `numtype?#53`] +[visit_id numtype?#53] +[visit_exp memidx#296] +[visit_id memidx#296] +[visit_exp memarg#199] +[visit_id memarg#199] +[visit_exp (`I64`_numtype, ?(`%_%`_loadop_{sz#1733, sx#15819, i#98277}(`%`_sz{i#98284}(8), `U`_sx)), x, ao)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp ?(`%_%`_loadop_{sz#1733, sx#15819, i#98277}(`%`_sz{i#98284}(8), `U`_sx))] +[visit_exp `%_%`_loadop_{sz#1733, sx#15819, i#98277}(`%`_sz{i#98284}(8), `U`_sx)] +[visit_exp sz#1733] +[visit_id sz#1733] +[visit_exp sx#15819] +[visit_id sx#15819] +[visit_exp i#98277] +[visit_id i#98277] +[visit_exp (`%`_sz{i#98284}(8), `U`_sx)] +[visit_exp `%`_sz{i#98284}(8)] +[visit_exp i#98284] +[visit_id i#98284] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 1] +[check_dims] I ao i#98341 i#98348 memarg#201 memidx#298 numtype?#54 sx#15837 sz#1751 x +dims \ I = ao, i#98341, i#98348, memarg#201, memidx#298, numtype?#54, sx#15837, sz#1751, x +[visit_exp `LOAD`_instr{`numtype?#54`, memidx#298, memarg#201}(`I64`_numtype, ?(`%_%`_loadop_{sz#1751, sx#15837, i#98341}(`%`_sz{i#98348}(16), `S`_sx)), x, ao)] +[visit_exp `numtype?#54`] +[visit_id numtype?#54] +[visit_exp memidx#298] +[visit_id memidx#298] +[visit_exp memarg#201] +[visit_id memarg#201] +[visit_exp (`I64`_numtype, ?(`%_%`_loadop_{sz#1751, sx#15837, i#98341}(`%`_sz{i#98348}(16), `S`_sx)), x, ao)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp ?(`%_%`_loadop_{sz#1751, sx#15837, i#98341}(`%`_sz{i#98348}(16), `S`_sx))] +[visit_exp `%_%`_loadop_{sz#1751, sx#15837, i#98341}(`%`_sz{i#98348}(16), `S`_sx)] +[visit_exp sz#1751] +[visit_id sz#1751] +[visit_exp sx#15837] +[visit_id sx#15837] +[visit_exp i#98341] +[visit_id i#98341] +[visit_exp (`%`_sz{i#98348}(16), `S`_sx)] +[visit_exp `%`_sz{i#98348}(16)] +[visit_exp i#98348] +[visit_id i#98348] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 2] +[check_dims] I ao i#98405 i#98412 memarg#203 memidx#300 numtype?#55 sx#15855 sz#1769 x +dims \ I = ao, i#98405, i#98412, memarg#203, memidx#300, numtype?#55, sx#15855, sz#1769, x +[visit_exp `LOAD`_instr{`numtype?#55`, memidx#300, memarg#203}(`I64`_numtype, ?(`%_%`_loadop_{sz#1769, sx#15855, i#98405}(`%`_sz{i#98412}(16), `U`_sx)), x, ao)] +[visit_exp `numtype?#55`] +[visit_id numtype?#55] +[visit_exp memidx#300] +[visit_id memidx#300] +[visit_exp memarg#203] +[visit_id memarg#203] +[visit_exp (`I64`_numtype, ?(`%_%`_loadop_{sz#1769, sx#15855, i#98405}(`%`_sz{i#98412}(16), `U`_sx)), x, ao)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp ?(`%_%`_loadop_{sz#1769, sx#15855, i#98405}(`%`_sz{i#98412}(16), `U`_sx))] +[visit_exp `%_%`_loadop_{sz#1769, sx#15855, i#98405}(`%`_sz{i#98412}(16), `U`_sx)] +[visit_exp sz#1769] +[visit_id sz#1769] +[visit_exp sx#15855] +[visit_id sx#15855] +[visit_exp i#98405] +[visit_id i#98405] +[visit_exp (`%`_sz{i#98412}(16), `U`_sx)] +[visit_exp `%`_sz{i#98412}(16)] +[visit_exp i#98412] +[visit_id i#98412] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 2] +[check_dims] I ao i#98469 i#98476 memarg#205 memidx#302 numtype?#56 sx#15873 sz#1787 x +dims \ I = ao, i#98469, i#98476, memarg#205, memidx#302, numtype?#56, sx#15873, sz#1787, x +[visit_exp `LOAD`_instr{`numtype?#56`, memidx#302, memarg#205}(`I64`_numtype, ?(`%_%`_loadop_{sz#1787, sx#15873, i#98469}(`%`_sz{i#98476}(32), `S`_sx)), x, ao)] +[visit_exp `numtype?#56`] +[visit_id numtype?#56] +[visit_exp memidx#302] +[visit_id memidx#302] +[visit_exp memarg#205] +[visit_id memarg#205] +[visit_exp (`I64`_numtype, ?(`%_%`_loadop_{sz#1787, sx#15873, i#98469}(`%`_sz{i#98476}(32), `S`_sx)), x, ao)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp ?(`%_%`_loadop_{sz#1787, sx#15873, i#98469}(`%`_sz{i#98476}(32), `S`_sx))] +[visit_exp `%_%`_loadop_{sz#1787, sx#15873, i#98469}(`%`_sz{i#98476}(32), `S`_sx)] +[visit_exp sz#1787] +[visit_id sz#1787] +[visit_exp sx#15873] +[visit_id sx#15873] +[visit_exp i#98469] +[visit_id i#98469] +[visit_exp (`%`_sz{i#98476}(32), `S`_sx)] +[visit_exp `%`_sz{i#98476}(32)] +[visit_exp i#98476] +[visit_id i#98476] +[visit_exp (32)] +[visit_exp 32] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 4] +[check_dims] I ao i#98533 i#98540 memarg#207 memidx#304 numtype?#57 sx#15891 sz#1805 x +dims \ I = ao, i#98533, i#98540, memarg#207, memidx#304, numtype?#57, sx#15891, sz#1805, x +[visit_exp `LOAD`_instr{`numtype?#57`, memidx#304, memarg#207}(`I64`_numtype, ?(`%_%`_loadop_{sz#1805, sx#15891, i#98533}(`%`_sz{i#98540}(32), `U`_sx)), x, ao)] +[visit_exp `numtype?#57`] +[visit_id numtype?#57] +[visit_exp memidx#304] +[visit_id memidx#304] +[visit_exp memarg#207] +[visit_id memarg#207] +[visit_exp (`I64`_numtype, ?(`%_%`_loadop_{sz#1805, sx#15891, i#98533}(`%`_sz{i#98540}(32), `U`_sx)), x, ao)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp ?(`%_%`_loadop_{sz#1805, sx#15891, i#98533}(`%`_sz{i#98540}(32), `U`_sx))] +[visit_exp `%_%`_loadop_{sz#1805, sx#15891, i#98533}(`%`_sz{i#98540}(32), `U`_sx)] +[visit_exp sz#1805] +[visit_id sz#1805] +[visit_exp sx#15891] +[visit_id sx#15891] +[visit_exp i#98533] +[visit_id i#98533] +[visit_exp (`%`_sz{i#98540}(32), `U`_sx)] +[visit_exp `%`_sz{i#98540}(32)] +[visit_exp i#98540] +[visit_id i#98540] +[visit_exp (32)] +[visit_exp 32] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 4] +[check_dims] I ao memarg#209 memidx#306 vectype?#27 x +dims \ I = ao, memarg#209, memidx#306, vectype?#27, x +[visit_exp `VLOAD`_instr{`vectype?#27`, memidx#306, memarg#209}(`V128`_vectype, ?(), x, ao)] +[visit_exp `vectype?#27`] +[visit_id vectype?#27] +[visit_exp memidx#306] +[visit_id memidx#306] +[visit_exp memarg#209] +[visit_id memarg#209] +[visit_exp (`V128`_vectype, ?(), x, ao)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp ?()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 16] +[check_dims] I M#349 ao i#98628 i#98635 memarg#211 memidx#308 sx#15908 sz#1852 vectype?#28 x +dims \ I = M#349, ao, i#98628, i#98635, memarg#211, memidx#308, sx#15908, sz#1852, vectype?#28, x +[visit_exp `VLOAD`_instr{`vectype?#28`, memidx#308, memarg#211}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1852, M#349, sx#15908, i#98628}(`%`_sz{i#98635}(8), 8, `S`_sx)), x, ao)] +[visit_exp `vectype?#28`] +[visit_id vectype?#28] +[visit_exp memidx#308] +[visit_id memidx#308] +[visit_exp memarg#211] +[visit_id memarg#211] +[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1852, M#349, sx#15908, i#98628}(`%`_sz{i#98635}(8), 8, `S`_sx)), x, ao)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp ?(`SHAPE%X%_%`_vloadop_{sz#1852, M#349, sx#15908, i#98628}(`%`_sz{i#98635}(8), 8, `S`_sx))] +[visit_exp `SHAPE%X%_%`_vloadop_{sz#1852, M#349, sx#15908, i#98628}(`%`_sz{i#98635}(8), 8, `S`_sx)] +[visit_exp sz#1852] +[visit_id sz#1852] +[visit_exp M#349] +[visit_id M#349] +[visit_exp sx#15908] +[visit_id sx#15908] +[visit_exp i#98628] +[visit_id i#98628] +[visit_exp (`%`_sz{i#98635}(8), 8, `S`_sx)] +[visit_exp `%`_sz{i#98635}(8)] +[visit_exp i#98635] +[visit_id i#98635] +[visit_exp (8)] +[visit_exp 8] +[visit_exp 8] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 8] +[check_dims] I M#366 ao i#98692 i#98699 memarg#213 memidx#310 sx#15925 sz#1899 vectype?#29 x +dims \ I = M#366, ao, i#98692, i#98699, memarg#213, memidx#310, sx#15925, sz#1899, vectype?#29, x +[visit_exp `VLOAD`_instr{`vectype?#29`, memidx#310, memarg#213}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1899, M#366, sx#15925, i#98692}(`%`_sz{i#98699}(8), 8, `U`_sx)), x, ao)] +[visit_exp `vectype?#29`] +[visit_id vectype?#29] +[visit_exp memidx#310] +[visit_id memidx#310] +[visit_exp memarg#213] +[visit_id memarg#213] +[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1899, M#366, sx#15925, i#98692}(`%`_sz{i#98699}(8), 8, `U`_sx)), x, ao)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp ?(`SHAPE%X%_%`_vloadop_{sz#1899, M#366, sx#15925, i#98692}(`%`_sz{i#98699}(8), 8, `U`_sx))] +[visit_exp `SHAPE%X%_%`_vloadop_{sz#1899, M#366, sx#15925, i#98692}(`%`_sz{i#98699}(8), 8, `U`_sx)] +[visit_exp sz#1899] +[visit_id sz#1899] +[visit_exp M#366] +[visit_id M#366] +[visit_exp sx#15925] +[visit_id sx#15925] +[visit_exp i#98692] +[visit_id i#98692] +[visit_exp (`%`_sz{i#98699}(8), 8, `U`_sx)] +[visit_exp `%`_sz{i#98699}(8)] +[visit_exp i#98699] +[visit_id i#98699] +[visit_exp (8)] +[visit_exp 8] +[visit_exp 8] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 8] +[check_dims] I M#383 ao i#98756 i#98763 memarg#215 memidx#312 sx#15942 sz#1946 vectype?#30 x +dims \ I = M#383, ao, i#98756, i#98763, memarg#215, memidx#312, sx#15942, sz#1946, vectype?#30, x +[visit_exp `VLOAD`_instr{`vectype?#30`, memidx#312, memarg#215}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1946, M#383, sx#15942, i#98756}(`%`_sz{i#98763}(16), 4, `S`_sx)), x, ao)] +[visit_exp `vectype?#30`] +[visit_id vectype?#30] +[visit_exp memidx#312] +[visit_id memidx#312] +[visit_exp memarg#215] +[visit_id memarg#215] +[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1946, M#383, sx#15942, i#98756}(`%`_sz{i#98763}(16), 4, `S`_sx)), x, ao)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp ?(`SHAPE%X%_%`_vloadop_{sz#1946, M#383, sx#15942, i#98756}(`%`_sz{i#98763}(16), 4, `S`_sx))] +[visit_exp `SHAPE%X%_%`_vloadop_{sz#1946, M#383, sx#15942, i#98756}(`%`_sz{i#98763}(16), 4, `S`_sx)] +[visit_exp sz#1946] +[visit_id sz#1946] +[visit_exp M#383] +[visit_id M#383] +[visit_exp sx#15942] +[visit_id sx#15942] +[visit_exp i#98756] +[visit_id i#98756] +[visit_exp (`%`_sz{i#98763}(16), 4, `S`_sx)] +[visit_exp `%`_sz{i#98763}(16)] +[visit_exp i#98763] +[visit_id i#98763] +[visit_exp (16)] +[visit_exp 16] +[visit_exp 4] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 8] +[check_dims] I M#400 ao i#98820 i#98827 memarg#217 memidx#314 sx#15959 sz#1993 vectype?#31 x +dims \ I = M#400, ao, i#98820, i#98827, memarg#217, memidx#314, sx#15959, sz#1993, vectype?#31, x +[visit_exp `VLOAD`_instr{`vectype?#31`, memidx#314, memarg#217}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1993, M#400, sx#15959, i#98820}(`%`_sz{i#98827}(16), 4, `U`_sx)), x, ao)] +[visit_exp `vectype?#31`] +[visit_id vectype?#31] +[visit_exp memidx#314] +[visit_id memidx#314] +[visit_exp memarg#217] +[visit_id memarg#217] +[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1993, M#400, sx#15959, i#98820}(`%`_sz{i#98827}(16), 4, `U`_sx)), x, ao)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp ?(`SHAPE%X%_%`_vloadop_{sz#1993, M#400, sx#15959, i#98820}(`%`_sz{i#98827}(16), 4, `U`_sx))] +[visit_exp `SHAPE%X%_%`_vloadop_{sz#1993, M#400, sx#15959, i#98820}(`%`_sz{i#98827}(16), 4, `U`_sx)] +[visit_exp sz#1993] +[visit_id sz#1993] +[visit_exp M#400] +[visit_id M#400] +[visit_exp sx#15959] +[visit_id sx#15959] +[visit_exp i#98820] +[visit_id i#98820] +[visit_exp (`%`_sz{i#98827}(16), 4, `U`_sx)] +[visit_exp `%`_sz{i#98827}(16)] +[visit_exp i#98827] +[visit_id i#98827] +[visit_exp (16)] +[visit_exp 16] +[visit_exp 4] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 8] +[check_dims] I M#417 ao i#98884 i#98891 memarg#219 memidx#316 sx#15976 sz#2040 vectype?#32 x +dims \ I = M#417, ao, i#98884, i#98891, memarg#219, memidx#316, sx#15976, sz#2040, vectype?#32, x +[visit_exp `VLOAD`_instr{`vectype?#32`, memidx#316, memarg#219}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#2040, M#417, sx#15976, i#98884}(`%`_sz{i#98891}(32), 2, `S`_sx)), x, ao)] +[visit_exp `vectype?#32`] +[visit_id vectype?#32] +[visit_exp memidx#316] +[visit_id memidx#316] +[visit_exp memarg#219] +[visit_id memarg#219] +[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#2040, M#417, sx#15976, i#98884}(`%`_sz{i#98891}(32), 2, `S`_sx)), x, ao)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp ?(`SHAPE%X%_%`_vloadop_{sz#2040, M#417, sx#15976, i#98884}(`%`_sz{i#98891}(32), 2, `S`_sx))] +[visit_exp `SHAPE%X%_%`_vloadop_{sz#2040, M#417, sx#15976, i#98884}(`%`_sz{i#98891}(32), 2, `S`_sx)] +[visit_exp sz#2040] +[visit_id sz#2040] +[visit_exp M#417] +[visit_id M#417] +[visit_exp sx#15976] +[visit_id sx#15976] +[visit_exp i#98884] +[visit_id i#98884] +[visit_exp (`%`_sz{i#98891}(32), 2, `S`_sx)] +[visit_exp `%`_sz{i#98891}(32)] +[visit_exp i#98891] +[visit_id i#98891] +[visit_exp (32)] +[visit_exp 32] +[visit_exp 2] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 8] +[check_dims] I M#434 ao i#98948 i#98955 memarg#221 memidx#318 sx#15993 sz#2087 vectype?#33 x +dims \ I = M#434, ao, i#98948, i#98955, memarg#221, memidx#318, sx#15993, sz#2087, vectype?#33, x +[visit_exp `VLOAD`_instr{`vectype?#33`, memidx#318, memarg#221}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#2087, M#434, sx#15993, i#98948}(`%`_sz{i#98955}(32), 2, `U`_sx)), x, ao)] +[visit_exp `vectype?#33`] +[visit_id vectype?#33] +[visit_exp memidx#318] +[visit_id memidx#318] +[visit_exp memarg#221] +[visit_id memarg#221] +[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#2087, M#434, sx#15993, i#98948}(`%`_sz{i#98955}(32), 2, `U`_sx)), x, ao)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp ?(`SHAPE%X%_%`_vloadop_{sz#2087, M#434, sx#15993, i#98948}(`%`_sz{i#98955}(32), 2, `U`_sx))] +[visit_exp `SHAPE%X%_%`_vloadop_{sz#2087, M#434, sx#15993, i#98948}(`%`_sz{i#98955}(32), 2, `U`_sx)] +[visit_exp sz#2087] +[visit_id sz#2087] +[visit_exp M#434] +[visit_id M#434] +[visit_exp sx#15993] +[visit_id sx#15993] +[visit_exp i#98948] +[visit_id i#98948] +[visit_exp (`%`_sz{i#98955}(32), 2, `U`_sx)] +[visit_exp `%`_sz{i#98955}(32)] +[visit_exp i#98955] +[visit_id i#98955] +[visit_exp (32)] +[visit_exp 32] +[visit_exp 2] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 8] +[check_dims] I ao i#99018 memarg#223 memidx#320 sz#2134 vectype?#34 x +dims \ I = ao, i#99018, memarg#223, memidx#320, sz#2134, vectype?#34, x +[visit_exp `VLOAD`_instr{`vectype?#34`, memidx#320, memarg#223}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#2134}(`%`_sz{i#99018}(8))), x, ao)] +[visit_exp `vectype?#34`] +[visit_id vectype?#34] +[visit_exp memidx#320] +[visit_id memidx#320] +[visit_exp memarg#223] +[visit_id memarg#223] +[visit_exp (`V128`_vectype, ?(`SPLAT`_vloadop_{sz#2134}(`%`_sz{i#99018}(8))), x, ao)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp ?(`SPLAT`_vloadop_{sz#2134}(`%`_sz{i#99018}(8)))] +[visit_exp `SPLAT`_vloadop_{sz#2134}(`%`_sz{i#99018}(8))] +[visit_exp sz#2134] +[visit_id sz#2134] +[visit_exp (`%`_sz{i#99018}(8))] +[visit_exp `%`_sz{i#99018}(8)] +[visit_exp i#99018] +[visit_id i#99018] +[visit_exp (8)] +[visit_exp 8] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 1] +[check_dims] I ao i#99081 memarg#225 memidx#322 sz#2181 vectype?#35 x +dims \ I = ao, i#99081, memarg#225, memidx#322, sz#2181, vectype?#35, x +[visit_exp `VLOAD`_instr{`vectype?#35`, memidx#322, memarg#225}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#2181}(`%`_sz{i#99081}(16))), x, ao)] +[visit_exp `vectype?#35`] +[visit_id vectype?#35] +[visit_exp memidx#322] +[visit_id memidx#322] +[visit_exp memarg#225] +[visit_id memarg#225] +[visit_exp (`V128`_vectype, ?(`SPLAT`_vloadop_{sz#2181}(`%`_sz{i#99081}(16))), x, ao)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp ?(`SPLAT`_vloadop_{sz#2181}(`%`_sz{i#99081}(16)))] +[visit_exp `SPLAT`_vloadop_{sz#2181}(`%`_sz{i#99081}(16))] +[visit_exp sz#2181] +[visit_id sz#2181] +[visit_exp (`%`_sz{i#99081}(16))] +[visit_exp `%`_sz{i#99081}(16)] +[visit_exp i#99081] +[visit_id i#99081] +[visit_exp (16)] +[visit_exp 16] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 2] +[check_dims] I ao i#99144 memarg#227 memidx#324 sz#2228 vectype?#36 x +dims \ I = ao, i#99144, memarg#227, memidx#324, sz#2228, vectype?#36, x +[visit_exp `VLOAD`_instr{`vectype?#36`, memidx#324, memarg#227}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#2228}(`%`_sz{i#99144}(32))), x, ao)] +[visit_exp `vectype?#36`] +[visit_id vectype?#36] +[visit_exp memidx#324] +[visit_id memidx#324] +[visit_exp memarg#227] +[visit_id memarg#227] +[visit_exp (`V128`_vectype, ?(`SPLAT`_vloadop_{sz#2228}(`%`_sz{i#99144}(32))), x, ao)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp ?(`SPLAT`_vloadop_{sz#2228}(`%`_sz{i#99144}(32)))] +[visit_exp `SPLAT`_vloadop_{sz#2228}(`%`_sz{i#99144}(32))] +[visit_exp sz#2228] +[visit_id sz#2228] +[visit_exp (`%`_sz{i#99144}(32))] +[visit_exp `%`_sz{i#99144}(32)] +[visit_exp i#99144] +[visit_id i#99144] +[visit_exp (32)] +[visit_exp 32] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 4] +[check_dims] I ao i#99207 memarg#229 memidx#326 sz#2275 vectype?#37 x +dims \ I = ao, i#99207, memarg#229, memidx#326, sz#2275, vectype?#37, x +[visit_exp `VLOAD`_instr{`vectype?#37`, memidx#326, memarg#229}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#2275}(`%`_sz{i#99207}(64))), x, ao)] +[visit_exp `vectype?#37`] +[visit_id vectype?#37] +[visit_exp memidx#326] +[visit_id memidx#326] +[visit_exp memarg#229] +[visit_id memarg#229] +[visit_exp (`V128`_vectype, ?(`SPLAT`_vloadop_{sz#2275}(`%`_sz{i#99207}(64))), x, ao)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp ?(`SPLAT`_vloadop_{sz#2275}(`%`_sz{i#99207}(64)))] +[visit_exp `SPLAT`_vloadop_{sz#2275}(`%`_sz{i#99207}(64))] +[visit_exp sz#2275] +[visit_id sz#2275] +[visit_exp (`%`_sz{i#99207}(64))] +[visit_exp `%`_sz{i#99207}(64)] +[visit_exp i#99207] +[visit_id i#99207] +[visit_exp (64)] +[visit_exp 64] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 8] +[check_dims] I ao i#99264 i#99271 memarg#231 memidx#328 sz#2322 vectype?#38 x +dims \ I = ao, i#99264, i#99271, memarg#231, memidx#328, sz#2322, vectype?#38, x +[visit_exp `VLOAD`_instr{`vectype?#38`, memidx#328, memarg#231}(`V128`_vectype, ?(`ZERO`_vloadop_{sz#2322, i#99264}(`%`_sz{i#99271}(32))), x, ao)] +[visit_exp `vectype?#38`] +[visit_id vectype?#38] +[visit_exp memidx#328] +[visit_id memidx#328] +[visit_exp memarg#231] +[visit_id memarg#231] +[visit_exp (`V128`_vectype, ?(`ZERO`_vloadop_{sz#2322, i#99264}(`%`_sz{i#99271}(32))), x, ao)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp ?(`ZERO`_vloadop_{sz#2322, i#99264}(`%`_sz{i#99271}(32)))] +[visit_exp `ZERO`_vloadop_{sz#2322, i#99264}(`%`_sz{i#99271}(32))] +[visit_exp sz#2322] +[visit_id sz#2322] +[visit_exp i#99264] +[visit_id i#99264] +[visit_exp (`%`_sz{i#99271}(32))] +[visit_exp `%`_sz{i#99271}(32)] +[visit_exp i#99271] +[visit_id i#99271] +[visit_exp (32)] +[visit_exp 32] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 4] +[check_dims] I ao i#99328 i#99335 memarg#233 memidx#330 sz#2369 vectype?#39 x +dims \ I = ao, i#99328, i#99335, memarg#233, memidx#330, sz#2369, vectype?#39, x +[visit_exp `VLOAD`_instr{`vectype?#39`, memidx#330, memarg#233}(`V128`_vectype, ?(`ZERO`_vloadop_{sz#2369, i#99328}(`%`_sz{i#99335}(64))), x, ao)] +[visit_exp `vectype?#39`] +[visit_id vectype?#39] +[visit_exp memidx#330] +[visit_id memidx#330] +[visit_exp memarg#233] +[visit_id memarg#233] +[visit_exp (`V128`_vectype, ?(`ZERO`_vloadop_{sz#2369, i#99328}(`%`_sz{i#99335}(64))), x, ao)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp ?(`ZERO`_vloadop_{sz#2369, i#99328}(`%`_sz{i#99335}(64)))] +[visit_exp `ZERO`_vloadop_{sz#2369, i#99328}(`%`_sz{i#99335}(64))] +[visit_exp sz#2369] +[visit_id sz#2369] +[visit_exp i#99328] +[visit_id i#99328] +[visit_exp (`%`_sz{i#99335}(64))] +[visit_exp `%`_sz{i#99335}(64)] +[visit_exp i#99335] +[visit_id i#99335] +[visit_exp (64)] +[visit_exp 64] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 8] +[check_dims] I ao i i#99391 laneidx#75 memarg#235 memidx#332 sz#2371 vectype#286 x +dims \ I = ao, i, i#99391, laneidx#75, memarg#235, memidx#332, sz#2371, vectype#286, x +[visit_exp `VLOAD_LANE`_instr{vectype#286, sz#2371, memidx#332, memarg#235, laneidx#75}(`V128`_vectype, `%`_sz{i#99391}(8), x, ao, i)] +[visit_exp vectype#286] +[visit_id vectype#286] +[visit_exp sz#2371] +[visit_id sz#2371] +[visit_exp memidx#332] +[visit_id memidx#332] +[visit_exp memarg#235] +[visit_id memarg#235] +[visit_exp laneidx#75] +[visit_id laneidx#75] +[visit_exp (`V128`_vectype, `%`_sz{i#99391}(8), x, ao, i)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp `%`_sz{i#99391}(8)] +[visit_exp i#99391] +[visit_id i#99391] +[visit_exp (8)] +[visit_exp 8] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp i] +[visit_id i] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 1] +[visit_exp i] +[visit_id i] not free +[check_dims] I ao i i#99459 laneidx#77 memarg#237 memidx#334 sz#2373 vectype#288 x +dims \ I = ao, i, i#99459, laneidx#77, memarg#237, memidx#334, sz#2373, vectype#288, x +[visit_exp `VLOAD_LANE`_instr{vectype#288, sz#2373, memidx#334, memarg#237, laneidx#77}(`V128`_vectype, `%`_sz{i#99459}(16), x, ao, i)] +[visit_exp vectype#288] +[visit_id vectype#288] +[visit_exp sz#2373] +[visit_id sz#2373] +[visit_exp memidx#334] +[visit_id memidx#334] +[visit_exp memarg#237] +[visit_id memarg#237] +[visit_exp laneidx#77] +[visit_id laneidx#77] +[visit_exp (`V128`_vectype, `%`_sz{i#99459}(16), x, ao, i)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp `%`_sz{i#99459}(16)] +[visit_exp i#99459] +[visit_id i#99459] +[visit_exp (16)] +[visit_exp 16] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp i] +[visit_id i] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 2] +[visit_exp i] +[visit_id i] not free +[check_dims] I ao i i#99527 laneidx#79 memarg#239 memidx#336 sz#2375 vectype#290 x +dims \ I = ao, i, i#99527, laneidx#79, memarg#239, memidx#336, sz#2375, vectype#290, x +[visit_exp `VLOAD_LANE`_instr{vectype#290, sz#2375, memidx#336, memarg#239, laneidx#79}(`V128`_vectype, `%`_sz{i#99527}(32), x, ao, i)] +[visit_exp vectype#290] +[visit_id vectype#290] +[visit_exp sz#2375] +[visit_id sz#2375] +[visit_exp memidx#336] +[visit_id memidx#336] +[visit_exp memarg#239] +[visit_id memarg#239] +[visit_exp laneidx#79] +[visit_id laneidx#79] +[visit_exp (`V128`_vectype, `%`_sz{i#99527}(32), x, ao, i)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp `%`_sz{i#99527}(32)] +[visit_exp i#99527] +[visit_id i#99527] +[visit_exp (32)] +[visit_exp 32] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp i] +[visit_id i] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 4] +[visit_exp i] +[visit_id i] not free +[check_dims] I ao i i#99595 laneidx#81 memarg#241 memidx#338 sz#2377 vectype#292 x +dims \ I = ao, i, i#99595, laneidx#81, memarg#241, memidx#338, sz#2377, vectype#292, x +[visit_exp `VLOAD_LANE`_instr{vectype#292, sz#2377, memidx#338, memarg#241, laneidx#81}(`V128`_vectype, `%`_sz{i#99595}(64), x, ao, i)] +[visit_exp vectype#292] +[visit_id vectype#292] +[visit_exp sz#2377] +[visit_id sz#2377] +[visit_exp memidx#338] +[visit_id memidx#338] +[visit_exp memarg#241] +[visit_id memarg#241] +[visit_exp laneidx#81] +[visit_id laneidx#81] +[visit_exp (`V128`_vectype, `%`_sz{i#99595}(64), x, ao, i)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp `%`_sz{i#99595}(64)] +[visit_exp i#99595] +[visit_id i#99595] +[visit_exp (64)] +[visit_exp 64] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp i] +[visit_id i] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 8] +[visit_exp i] +[visit_id i] not free +[check_dims] I ao memarg#243 memidx#340 numtype?#58 x +dims \ I = ao, memarg#243, memidx#340, numtype?#58, x +[visit_exp `STORE`_instr{`numtype?#58`, memidx#340, memarg#243}(`I32`_numtype, ?(), x, ao)] +[visit_exp `numtype?#58`] +[visit_id numtype?#58] +[visit_exp memidx#340] +[visit_id memidx#340] +[visit_exp memarg#243] +[visit_id memarg#243] +[visit_exp (`I32`_numtype, ?(), x, ao)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp ?()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 4] +[check_dims] I ao memarg#245 memidx#342 numtype?#59 x +dims \ I = ao, memarg#245, memidx#342, numtype?#59, x +[visit_exp `STORE`_instr{`numtype?#59`, memidx#342, memarg#245}(`I64`_numtype, ?(), x, ao)] +[visit_exp `numtype?#59`] +[visit_id numtype?#59] +[visit_exp memidx#342] +[visit_id memidx#342] +[visit_exp memarg#245] +[visit_id memarg#245] +[visit_exp (`I64`_numtype, ?(), x, ao)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp ?()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 8] +[check_dims] I ao memarg#247 memidx#344 numtype?#60 x +dims \ I = ao, memarg#247, memidx#344, numtype?#60, x +[visit_exp `STORE`_instr{`numtype?#60`, memidx#344, memarg#247}(`F32`_numtype, ?(), x, ao)] +[visit_exp `numtype?#60`] +[visit_id numtype?#60] +[visit_exp memidx#344] +[visit_id memidx#344] +[visit_exp memarg#247] +[visit_id memarg#247] +[visit_exp (`F32`_numtype, ?(), x, ao)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp ?()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 4] +[check_dims] I ao memarg#249 memidx#346 numtype?#61 x +dims \ I = ao, memarg#249, memidx#346, numtype?#61, x +[visit_exp `STORE`_instr{`numtype?#61`, memidx#346, memarg#249}(`F64`_numtype, ?(), x, ao)] +[visit_exp `numtype?#61`] +[visit_id numtype?#61] +[visit_exp memidx#346] +[visit_id memidx#346] +[visit_exp memarg#249] +[visit_id memarg#249] +[visit_exp (`F64`_numtype, ?(), x, ao)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp ?()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 8] +[check_dims] I ao i#99803 i#99804 memarg#251 memidx#348 numtype?#62 sz#2390 x +dims \ I = ao, i#99803, i#99804, memarg#251, memidx#348, numtype?#62, sz#2390, x +[visit_exp `STORE`_instr{`numtype?#62`, memidx#348, memarg#251}(`I32`_numtype, ?(`%`_storeop_{sz#2390, i#99803}(`%`_sz{i#99804}(8))), x, ao)] +[visit_exp `numtype?#62`] +[visit_id numtype?#62] +[visit_exp memidx#348] +[visit_id memidx#348] +[visit_exp memarg#251] +[visit_id memarg#251] +[visit_exp (`I32`_numtype, ?(`%`_storeop_{sz#2390, i#99803}(`%`_sz{i#99804}(8))), x, ao)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp ?(`%`_storeop_{sz#2390, i#99803}(`%`_sz{i#99804}(8)))] +[visit_exp `%`_storeop_{sz#2390, i#99803}(`%`_sz{i#99804}(8))] +[visit_exp sz#2390] +[visit_id sz#2390] +[visit_exp i#99803] +[visit_id i#99803] +[visit_exp (`%`_sz{i#99804}(8))] +[visit_exp `%`_sz{i#99804}(8)] +[visit_exp i#99804] +[visit_id i#99804] +[visit_exp (8)] +[visit_exp 8] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 1] +[check_dims] I ao i#99876 i#99877 memarg#253 memidx#350 numtype?#63 sz#2403 x +dims \ I = ao, i#99876, i#99877, memarg#253, memidx#350, numtype?#63, sz#2403, x +[visit_exp `STORE`_instr{`numtype?#63`, memidx#350, memarg#253}(`I32`_numtype, ?(`%`_storeop_{sz#2403, i#99876}(`%`_sz{i#99877}(16))), x, ao)] +[visit_exp `numtype?#63`] +[visit_id numtype?#63] +[visit_exp memidx#350] +[visit_id memidx#350] +[visit_exp memarg#253] +[visit_id memarg#253] +[visit_exp (`I32`_numtype, ?(`%`_storeop_{sz#2403, i#99876}(`%`_sz{i#99877}(16))), x, ao)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp ?(`%`_storeop_{sz#2403, i#99876}(`%`_sz{i#99877}(16)))] +[visit_exp `%`_storeop_{sz#2403, i#99876}(`%`_sz{i#99877}(16))] +[visit_exp sz#2403] +[visit_id sz#2403] +[visit_exp i#99876] +[visit_id i#99876] +[visit_exp (`%`_sz{i#99877}(16))] +[visit_exp `%`_sz{i#99877}(16)] +[visit_exp i#99877] +[visit_id i#99877] +[visit_exp (16)] +[visit_exp 16] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 2] +[check_dims] I ao i#99949 i#99950 memarg#255 memidx#352 numtype?#64 sz#2416 x +dims \ I = ao, i#99949, i#99950, memarg#255, memidx#352, numtype?#64, sz#2416, x +[visit_exp `STORE`_instr{`numtype?#64`, memidx#352, memarg#255}(`I64`_numtype, ?(`%`_storeop_{sz#2416, i#99949}(`%`_sz{i#99950}(8))), x, ao)] +[visit_exp `numtype?#64`] +[visit_id numtype?#64] +[visit_exp memidx#352] +[visit_id memidx#352] +[visit_exp memarg#255] +[visit_id memarg#255] +[visit_exp (`I64`_numtype, ?(`%`_storeop_{sz#2416, i#99949}(`%`_sz{i#99950}(8))), x, ao)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp ?(`%`_storeop_{sz#2416, i#99949}(`%`_sz{i#99950}(8)))] +[visit_exp `%`_storeop_{sz#2416, i#99949}(`%`_sz{i#99950}(8))] +[visit_exp sz#2416] +[visit_id sz#2416] +[visit_exp i#99949] +[visit_id i#99949] +[visit_exp (`%`_sz{i#99950}(8))] +[visit_exp `%`_sz{i#99950}(8)] +[visit_exp i#99950] +[visit_id i#99950] +[visit_exp (8)] +[visit_exp 8] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 1] +[check_dims] I ao i#100022 i#100023 memarg#257 memidx#354 numtype?#65 sz#2429 x +dims \ I = ao, i#100022, i#100023, memarg#257, memidx#354, numtype?#65, sz#2429, x +[visit_exp `STORE`_instr{`numtype?#65`, memidx#354, memarg#257}(`I64`_numtype, ?(`%`_storeop_{sz#2429, i#100022}(`%`_sz{i#100023}(16))), x, ao)] +[visit_exp `numtype?#65`] +[visit_id numtype?#65] +[visit_exp memidx#354] +[visit_id memidx#354] +[visit_exp memarg#257] +[visit_id memarg#257] +[visit_exp (`I64`_numtype, ?(`%`_storeop_{sz#2429, i#100022}(`%`_sz{i#100023}(16))), x, ao)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp ?(`%`_storeop_{sz#2429, i#100022}(`%`_sz{i#100023}(16)))] +[visit_exp `%`_storeop_{sz#2429, i#100022}(`%`_sz{i#100023}(16))] +[visit_exp sz#2429] +[visit_id sz#2429] +[visit_exp i#100022] +[visit_id i#100022] +[visit_exp (`%`_sz{i#100023}(16))] +[visit_exp `%`_sz{i#100023}(16)] +[visit_exp i#100023] +[visit_id i#100023] +[visit_exp (16)] +[visit_exp 16] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 2] +[check_dims] I ao i#100095 i#100096 memarg#259 memidx#356 numtype?#66 sz#2442 x +dims \ I = ao, i#100095, i#100096, memarg#259, memidx#356, numtype?#66, sz#2442, x +[visit_exp `STORE`_instr{`numtype?#66`, memidx#356, memarg#259}(`I64`_numtype, ?(`%`_storeop_{sz#2442, i#100095}(`%`_sz{i#100096}(32))), x, ao)] +[visit_exp `numtype?#66`] +[visit_id numtype?#66] +[visit_exp memidx#356] +[visit_id memidx#356] +[visit_exp memarg#259] +[visit_id memarg#259] +[visit_exp (`I64`_numtype, ?(`%`_storeop_{sz#2442, i#100095}(`%`_sz{i#100096}(32))), x, ao)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp ?(`%`_storeop_{sz#2442, i#100095}(`%`_sz{i#100096}(32)))] +[visit_exp `%`_storeop_{sz#2442, i#100095}(`%`_sz{i#100096}(32))] +[visit_exp sz#2442] +[visit_id sz#2442] +[visit_exp i#100095] +[visit_id i#100095] +[visit_exp (`%`_sz{i#100096}(32))] +[visit_exp `%`_sz{i#100096}(32)] +[visit_exp i#100096] +[visit_id i#100096] +[visit_exp (32)] +[visit_exp 32] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 4] +[check_dims] I ao memarg#261 memidx#358 vectype#294 x +dims \ I = ao, memarg#261, memidx#358, vectype#294, x +[visit_exp `VSTORE`_instr{vectype#294, memidx#358, memarg#261}(`V128`_vectype, x, ao)] +[visit_exp vectype#294] +[visit_id vectype#294] +[visit_exp memidx#358] +[visit_id memidx#358] +[visit_exp memarg#261] +[visit_id memarg#261] +[visit_exp (`V128`_vectype, x, ao)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 16] +[check_dims] I ao i i#100183 laneidx#83 memarg#263 memidx#360 sz#2444 vectype#296 x +dims \ I = ao, i, i#100183, laneidx#83, memarg#263, memidx#360, sz#2444, vectype#296, x +[visit_exp `VSTORE_LANE`_instr{vectype#296, sz#2444, memidx#360, memarg#263, laneidx#83}(`V128`_vectype, `%`_sz{i#100183}(8), x, ao, i)] +[visit_exp vectype#296] +[visit_id vectype#296] +[visit_exp sz#2444] +[visit_id sz#2444] +[visit_exp memidx#360] +[visit_id memidx#360] +[visit_exp memarg#263] +[visit_id memarg#263] +[visit_exp laneidx#83] +[visit_id laneidx#83] +[visit_exp (`V128`_vectype, `%`_sz{i#100183}(8), x, ao, i)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp `%`_sz{i#100183}(8)] +[visit_exp i#100183] +[visit_id i#100183] +[visit_exp (8)] +[visit_exp 8] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp i] +[visit_id i] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 1] +[visit_exp i] +[visit_id i] not free +[check_dims] I ao i i#100251 laneidx#85 memarg#265 memidx#362 sz#2446 vectype#298 x +dims \ I = ao, i, i#100251, laneidx#85, memarg#265, memidx#362, sz#2446, vectype#298, x +[visit_exp `VSTORE_LANE`_instr{vectype#298, sz#2446, memidx#362, memarg#265, laneidx#85}(`V128`_vectype, `%`_sz{i#100251}(16), x, ao, i)] +[visit_exp vectype#298] +[visit_id vectype#298] +[visit_exp sz#2446] +[visit_id sz#2446] +[visit_exp memidx#362] +[visit_id memidx#362] +[visit_exp memarg#265] +[visit_id memarg#265] +[visit_exp laneidx#85] +[visit_id laneidx#85] +[visit_exp (`V128`_vectype, `%`_sz{i#100251}(16), x, ao, i)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp `%`_sz{i#100251}(16)] +[visit_exp i#100251] +[visit_id i#100251] +[visit_exp (16)] +[visit_exp 16] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp i] +[visit_id i] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 2] +[visit_exp i] +[visit_id i] not free +[check_dims] I ao i i#100319 laneidx#87 memarg#267 memidx#364 sz#2448 vectype#300 x +dims \ I = ao, i, i#100319, laneidx#87, memarg#267, memidx#364, sz#2448, vectype#300, x +[visit_exp `VSTORE_LANE`_instr{vectype#300, sz#2448, memidx#364, memarg#267, laneidx#87}(`V128`_vectype, `%`_sz{i#100319}(32), x, ao, i)] +[visit_exp vectype#300] +[visit_id vectype#300] +[visit_exp sz#2448] +[visit_id sz#2448] +[visit_exp memidx#364] +[visit_id memidx#364] +[visit_exp memarg#267] +[visit_id memarg#267] +[visit_exp laneidx#87] +[visit_id laneidx#87] +[visit_exp (`V128`_vectype, `%`_sz{i#100319}(32), x, ao, i)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp `%`_sz{i#100319}(32)] +[visit_exp i#100319] +[visit_id i#100319] +[visit_exp (32)] +[visit_exp 32] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp i] +[visit_id i] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 4] +[visit_exp i] +[visit_id i] not free +[check_dims] I ao i i#100387 laneidx#89 memarg#269 memidx#366 sz#2450 vectype#302 x +dims \ I = ao, i, i#100387, laneidx#89, memarg#269, memidx#366, sz#2450, vectype#302, x +[visit_exp `VSTORE_LANE`_instr{vectype#302, sz#2450, memidx#366, memarg#269, laneidx#89}(`V128`_vectype, `%`_sz{i#100387}(64), x, ao, i)] +[visit_exp vectype#302] +[visit_id vectype#302] +[visit_exp sz#2450] +[visit_id sz#2450] +[visit_exp memidx#366] +[visit_id memidx#366] +[visit_exp memarg#269] +[visit_id memarg#269] +[visit_exp laneidx#89] +[visit_id laneidx#89] +[visit_exp (`V128`_vectype, `%`_sz{i#100387}(64), x, ao, i)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp `%`_sz{i#100387}(64)] +[visit_exp i#100387] +[visit_id i#100387] +[visit_exp (64)] +[visit_exp 64] +[visit_exp x] +[visit_id x] +[visit_exp ao] +[visit_id ao] +[visit_exp i] +[visit_id i] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ao] +[visit_id ao] not free +[visit_exp 8] +[visit_exp i] +[visit_id i] not free +[check_dims] I memidx#368 x +dims \ I = memidx#368, x +[visit_exp `MEMORY.SIZE`_instr{memidx#368}(x)] +[visit_exp memidx#368] +[visit_id memidx#368] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I memidx#370 x +dims \ I = memidx#370, x +[visit_exp `MEMORY.GROW`_instr{memidx#370}(x)] +[visit_exp memidx#370] +[visit_id memidx#370] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I memidx#372 x +dims \ I = memidx#372, x +[visit_exp `MEMORY.FILL`_instr{memidx#372}(x)] +[visit_exp memidx#372] +[visit_id memidx#372] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I memidx#374 x_1 x_2 +dims \ I = memidx#374, x_1, x_2 +[visit_exp `MEMORY.COPY`_instr{memidx#374}(x_1, x_2)] +[visit_exp memidx#374] +[visit_id memidx#374] +[visit_exp (x_1, x_2)] +[visit_exp x_1] +[visit_id x_1] +[visit_exp x_2] +[visit_id x_2] +[visit_exp x_1] +[visit_id x_1] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp x_2] +[visit_id x_2] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I dataidx#55 memidx#377 x y +dims \ I = dataidx#55, memidx#377, x, y +[visit_exp `MEMORY.INIT`_instr{memidx#377, dataidx#55}(x, y)] +[visit_exp memidx#377] +[visit_id memidx#377] +[visit_exp dataidx#55] +[visit_id dataidx#55] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] +[visit_exp y] +[visit_id y] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp y] +[visit_id y] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I +[visit_exp 4] +[visit_exp 4] +[check_dims] I +[visit_exp 8] +[visit_exp 8] +[check_dims] I +[visit_exp 4] +[visit_exp 4] +[check_dims] I +[visit_exp 8] +[visit_exp 8] +[check_dims] I +[visit_exp 1] +[visit_exp 1] +[check_dims] I +[visit_exp 1] +[visit_exp 1] +[check_dims] I +[visit_exp 2] +[visit_exp 2] +[check_dims] I +[visit_exp 2] +[visit_exp 2] +[check_dims] I +[visit_exp 1] +[visit_exp 1] +[check_dims] I +[visit_exp 1] +[visit_exp 1] +[check_dims] I +[visit_exp 2] +[visit_exp 2] +[check_dims] I +[visit_exp 2] +[visit_exp 2] +[check_dims] I +[visit_exp 4] +[visit_exp 4] +[check_dims] I +[visit_exp 4] +[visit_exp 4] +[check_dims] I +[visit_exp 16] +[visit_exp 16] +[check_dims] I +[visit_exp 8] +[visit_exp 8] +[check_dims] I +[visit_exp 8] +[visit_exp 8] +[check_dims] I +[visit_exp 8] +[visit_exp 8] +[check_dims] I +[visit_exp 8] +[visit_exp 8] +[check_dims] I +[visit_exp 8] +[visit_exp 8] +[check_dims] I +[visit_exp 8] +[visit_exp 8] +[check_dims] I +[visit_exp 1] +[visit_exp 1] +[check_dims] I +[visit_exp 2] +[visit_exp 2] +[check_dims] I +[visit_exp 4] +[visit_exp 4] +[check_dims] I +[visit_exp 8] +[visit_exp 8] +[check_dims] I +[visit_exp 4] +[visit_exp 4] +[check_dims] I +[visit_exp 8] +[visit_exp 8] +[check_dims] I +[visit_exp 1] +[visit_exp 1] +[check_dims] I +[visit_exp 2] +[visit_exp 2] +[check_dims] I +[visit_exp 4] +[visit_exp 4] +[check_dims] I +[visit_exp 8] +[visit_exp 8] +[check_dims] I +[visit_exp 4] +[visit_exp 4] +[check_dims] I +[visit_exp 8] +[visit_exp 8] +[check_dims] I +[visit_exp 4] +[visit_exp 4] +[check_dims] I +[visit_exp 8] +[visit_exp 8] +[check_dims] I +[visit_exp 1] +[visit_exp 1] +[check_dims] I +[visit_exp 2] +[visit_exp 2] +[check_dims] I +[visit_exp 1] +[visit_exp 1] +[check_dims] I +[visit_exp 2] +[visit_exp 2] +[check_dims] I +[visit_exp 4] +[visit_exp 4] +[check_dims] I +[visit_exp 16] +[visit_exp 16] +[check_dims] I +[visit_exp 1] +[visit_exp 1] +[check_dims] I +[visit_exp 2] +[visit_exp 1] +[check_dims] I +[visit_exp 4] +[visit_exp 1] +[check_dims] I +[visit_exp 8] +[visit_exp 1] +[check_dims] I +[check_dims] I +[check_dims] I +[check_dims] I +[check_dims] I +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I dataidx#57 x +dims \ I = dataidx#57, x +[visit_exp `DATA.DROP`_instr{dataidx#57}(x)] +[visit_exp dataidx#57] +[visit_id dataidx#57] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I heaptype#1929 ht +dims \ I = heaptype#1929, ht +[visit_exp `REF.NULL`_instr{heaptype#1929}(ht)] +[visit_exp heaptype#1929] +[visit_id heaptype#1929] +[visit_exp (ht)] +[visit_exp ht] +[visit_id ht] +[visit_exp ht] +[visit_id ht] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I funcidx#3387 x +dims \ I = funcidx#3387, x +[visit_exp `REF.FUNC`_instr{funcidx#3387}(x)] +[visit_exp funcidx#3387] +[visit_id funcidx#3387] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I +dims \ I = +[visit_exp `REF.IS_NULL`_instr] +[visit_exp ()] +[check_dims] I +dims \ I = +[visit_exp `REF.AS_NON_NULL`_instr] +[visit_exp ()] +[check_dims] I +dims \ I = +[visit_exp `REF.EQ`_instr] +[visit_exp ()] +[check_dims] I reftype#4311 rt +dims \ I = reftype#4311, rt +[visit_exp `REF.TEST`_instr{reftype#4311}(rt)] +[visit_exp reftype#4311] +[visit_id reftype#4311] +[visit_exp (rt)] +[visit_exp rt] +[visit_id rt] +[visit_exp rt] +[visit_id rt] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I reftype#4313 rt +dims \ I = reftype#4313, rt +[visit_exp `REF.CAST`_instr{reftype#4313}(rt)] +[visit_exp reftype#4313] +[visit_id reftype#4313] +[visit_exp (rt)] +[visit_exp rt] +[visit_id rt] +[visit_exp rt] +[visit_id rt] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I +dims \ I = +[visit_exp `REF.I31`_instr] +[visit_exp ()] +[check_dims] I sx#16085 +dims \ I = sx#16085 +[visit_exp `I31.GET`_instr{sx#16085}(`S`_sx)] +[visit_exp sx#16085] +[visit_id sx#16085] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I sx#16087 +dims \ I = sx#16087 +[visit_exp `I31.GET`_instr{sx#16087}(`U`_sx)] +[visit_exp sx#16087] +[visit_id sx#16087] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I typeidx#2137 x +dims \ I = typeidx#2137, x +[visit_exp `STRUCT.NEW`_instr{typeidx#2137}(x)] +[visit_exp typeidx#2137] +[visit_id typeidx#2137] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I typeidx#2139 x +dims \ I = typeidx#2139, x +[visit_exp `STRUCT.NEW_DEFAULT`_instr{typeidx#2139}(x)] +[visit_exp typeidx#2139] +[visit_id typeidx#2139] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I i sx?#59 typeidx#2141 u32#48 x +dims \ I = i, sx?#59, typeidx#2141, u32#48, x +[visit_exp `STRUCT.GET`_instr{`sx?#59`, typeidx#2141, u32#48}(?(), x, i)] +[visit_exp `sx?#59`] +[visit_id sx?#59] +[visit_exp typeidx#2141] +[visit_id typeidx#2141] +[visit_exp u32#48] +[visit_id u32#48] +[visit_exp (?(), x, i)] +[visit_exp ?()] +[visit_exp x] +[visit_id x] +[visit_exp i] +[visit_id i] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp i] +[visit_id i] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp x] +[visit_id x] not free +[check_dims] I i sx?#61 typeidx#2143 u32#50 x +dims \ I = i, sx?#61, typeidx#2143, u32#50, x +[visit_exp `STRUCT.GET`_instr{`sx?#61`, typeidx#2143, u32#50}(?(`S`_sx), x, i)] +[visit_exp `sx?#61`] +[visit_id sx?#61] +[visit_exp typeidx#2143] +[visit_id typeidx#2143] +[visit_exp u32#50] +[visit_id u32#50] +[visit_exp (?(`S`_sx), x, i)] +[visit_exp ?(`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp i] +[visit_id i] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp i] +[visit_id i] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp x] +[visit_id x] not free +[check_dims] I i sx?#63 typeidx#2145 u32#52 x +dims \ I = i, sx?#63, typeidx#2145, u32#52, x +[visit_exp `STRUCT.GET`_instr{`sx?#63`, typeidx#2145, u32#52}(?(`U`_sx), x, i)] +[visit_exp `sx?#63`] +[visit_id sx?#63] +[visit_exp typeidx#2145] +[visit_id typeidx#2145] +[visit_exp u32#52] +[visit_id u32#52] +[visit_exp (?(`U`_sx), x, i)] +[visit_exp ?(`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp i] +[visit_id i] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp i] +[visit_id i] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp x] +[visit_id x] not free +[check_dims] I i typeidx#2147 u32#54 x +dims \ I = i, typeidx#2147, u32#54, x +[visit_exp `STRUCT.SET`_instr{typeidx#2147, u32#54}(x, i)] +[visit_exp typeidx#2147] +[visit_id typeidx#2147] +[visit_exp u32#54] +[visit_id u32#54] +[visit_exp (x, i)] +[visit_exp x] +[visit_id x] +[visit_exp i] +[visit_id i] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp i] +[visit_id i] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp x] +[visit_id x] not free +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I typeidx#2149 x +dims \ I = typeidx#2149, x +[visit_exp `ARRAY.NEW`_instr{typeidx#2149}(x)] +[visit_exp typeidx#2149] +[visit_id typeidx#2149] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I typeidx#2151 x +dims \ I = typeidx#2151, x +[visit_exp `ARRAY.NEW_DEFAULT`_instr{typeidx#2151}(x)] +[visit_exp typeidx#2151] +[visit_id typeidx#2151] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I i#101266 i#101306 n typeidx#2153 u32#56 x +dims \ I = i#101266, i#101306, n, typeidx#2153, u32#56, x +[visit_exp `ARRAY.NEW_FIXED`_instr{typeidx#2153, u32#56}(x, `%`_u32{i#101306}(n))] +[visit_exp typeidx#2153] +[visit_id typeidx#2153] +[visit_exp u32#56] +[visit_id u32#56] +[visit_exp (x, `%`_u32{i#101306}(n))] +[visit_exp x] +[visit_id x] +[visit_exp `%`_u32{i#101306}(n)] +[visit_exp i#101306] +[visit_id i#101306] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp `%`_u32{i#101266}(n)] +[visit_exp i#101266] +[visit_id i#101266] +[visit_exp (n)] +[visit_exp n] +[visit_id n] not free +[check_dims] I dataidx#59 typeidx#2155 x y +dims \ I = dataidx#59, typeidx#2155, x, y +[visit_exp `ARRAY.NEW_DATA`_instr{typeidx#2155, dataidx#59}(x, y)] +[visit_exp typeidx#2155] +[visit_id typeidx#2155] +[visit_exp dataidx#59] +[visit_id dataidx#59] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] +[visit_exp y] +[visit_id y] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp y] +[visit_id y] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I elemidx#61 typeidx#2157 x y +dims \ I = elemidx#61, typeidx#2157, x, y +[visit_exp `ARRAY.NEW_ELEM`_instr{typeidx#2157, elemidx#61}(x, y)] +[visit_exp typeidx#2157] +[visit_id typeidx#2157] +[visit_exp elemidx#61] +[visit_id elemidx#61] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] +[visit_exp y] +[visit_id y] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp y] +[visit_id y] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I sx?#65 typeidx#2159 x +dims \ I = sx?#65, typeidx#2159, x +[visit_exp `ARRAY.GET`_instr{`sx?#65`, typeidx#2159}(?(), x)] +[visit_exp `sx?#65`] +[visit_id sx?#65] +[visit_exp typeidx#2159] +[visit_id typeidx#2159] +[visit_exp (?(), x)] +[visit_exp ?()] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I sx?#67 typeidx#2161 x +dims \ I = sx?#67, typeidx#2161, x +[visit_exp `ARRAY.GET`_instr{`sx?#67`, typeidx#2161}(?(`S`_sx), x)] +[visit_exp `sx?#67`] +[visit_id sx?#67] +[visit_exp typeidx#2161] +[visit_id typeidx#2161] +[visit_exp (?(`S`_sx), x)] +[visit_exp ?(`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I sx?#69 typeidx#2163 x +dims \ I = sx?#69, typeidx#2163, x +[visit_exp `ARRAY.GET`_instr{`sx?#69`, typeidx#2163}(?(`U`_sx), x)] +[visit_exp `sx?#69`] +[visit_id sx?#69] +[visit_exp typeidx#2163] +[visit_id typeidx#2163] +[visit_exp (?(`U`_sx), x)] +[visit_exp ?(`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I typeidx#2165 x +dims \ I = typeidx#2165, x +[visit_exp `ARRAY.SET`_instr{typeidx#2165}(x)] +[visit_exp typeidx#2165] +[visit_id typeidx#2165] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I +dims \ I = +[visit_exp `ARRAY.LEN`_instr] +[visit_exp ()] +[check_dims] I typeidx#2167 x +dims \ I = typeidx#2167, x +[visit_exp `ARRAY.FILL`_instr{typeidx#2167}(x)] +[visit_exp typeidx#2167] +[visit_id typeidx#2167] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I typeidx#2169 x_1 x_2 +dims \ I = typeidx#2169, x_1, x_2 +[visit_exp `ARRAY.COPY`_instr{typeidx#2169}(x_1, x_2)] +[visit_exp typeidx#2169] +[visit_id typeidx#2169] +[visit_exp (x_1, x_2)] +[visit_exp x_1] +[visit_id x_1] +[visit_exp x_2] +[visit_id x_2] +[visit_exp x_1] +[visit_id x_1] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp x_2] +[visit_id x_2] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I dataidx#61 typeidx#2172 x y +dims \ I = dataidx#61, typeidx#2172, x, y +[visit_exp `ARRAY.INIT_DATA`_instr{typeidx#2172, dataidx#61}(x, y)] +[visit_exp typeidx#2172] +[visit_id typeidx#2172] +[visit_exp dataidx#61] +[visit_id dataidx#61] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] +[visit_exp y] +[visit_id y] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp y] +[visit_id y] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I elemidx#63 typeidx#2174 x y +dims \ I = elemidx#63, typeidx#2174, x, y +[visit_exp `ARRAY.INIT_ELEM`_instr{typeidx#2174, elemidx#63}(x, y)] +[visit_exp typeidx#2174] +[visit_id typeidx#2174] +[visit_exp elemidx#63] +[visit_id elemidx#63] +[visit_exp (x, y)] +[visit_exp x] +[visit_id x] +[visit_exp y] +[visit_id y] +[visit_exp x] +[visit_id x] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp y] +[visit_id y] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I +dims \ I = +[visit_exp `ANY.CONVERT_EXTERN`_instr] +[visit_exp ()] +[check_dims] I +dims \ I = +[visit_exp `EXTERN.CONVERT_ANY`_instr] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I c numtype#891 +dims \ I = c, numtype#891 +[visit_exp `CONST`_instr{numtype#891}(`I32`_numtype, c)] +[visit_exp numtype#891] +[visit_id numtype#891] +[visit_exp (`I32`_numtype, c)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp c] +[visit_id c] +[visit_exp c] +[visit_id c] not free +[check_dims] I c numtype#893 +dims \ I = c, numtype#893 +[visit_exp `CONST`_instr{numtype#893}(`I64`_numtype, c)] +[visit_exp numtype#893] +[visit_id numtype#893] +[visit_exp (`I64`_numtype, c)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp c] +[visit_id c] +[visit_exp c] +[visit_id c] not free +[check_dims] I c numtype#895 +dims \ I = c, numtype#895 +[visit_exp `CONST`_instr{numtype#895}(`F32`_numtype, c)] +[visit_exp numtype#895] +[visit_id numtype#895] +[visit_exp (`F32`_numtype, c)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp c] +[visit_id c] +[visit_exp c] +[visit_id c] not free +[check_dims] I c numtype#897 +dims \ I = c, numtype#897 +[visit_exp `CONST`_instr{numtype#897}(`F64`_numtype, c)] +[visit_exp numtype#897] +[visit_id numtype#897] +[visit_exp (`F64`_numtype, c)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp c] +[visit_id c] +[visit_exp c] +[visit_id c] not free +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I numtype#899 +dims \ I = numtype#899 +[visit_exp `TESTOP`_instr{numtype#899}(`I32`_numtype, `EQZ`_testop_)] +[visit_exp numtype#899] +[visit_id numtype#899] +[visit_exp (`I32`_numtype, `EQZ`_testop_)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `EQZ`_testop_] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I numtype#901 +dims \ I = numtype#901 +[visit_exp `TESTOP`_instr{numtype#901}(`I64`_numtype, `EQZ`_testop_)] +[visit_exp numtype#901] +[visit_id numtype#901] +[visit_exp (`I64`_numtype, `EQZ`_testop_)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `EQZ`_testop_] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I numtype#903 +dims \ I = numtype#903 +[visit_exp `RELOP`_instr{numtype#903}(`I32`_numtype, `EQ`_relop_)] +[visit_exp numtype#903] +[visit_id numtype#903] +[visit_exp (`I32`_numtype, `EQ`_relop_)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `EQ`_relop_] +[visit_exp ()] +[check_dims] I numtype#905 +dims \ I = numtype#905 +[visit_exp `RELOP`_instr{numtype#905}(`I32`_numtype, `NE`_relop_)] +[visit_exp numtype#905] +[visit_id numtype#905] +[visit_exp (`I32`_numtype, `NE`_relop_)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `NE`_relop_] +[visit_exp ()] +[check_dims] I numtype#907 sx#16331 +dims \ I = numtype#907, sx#16331 +[visit_exp `RELOP`_instr{numtype#907}(`I32`_numtype, `LT`_relop_{sx#16331}(`S`_sx))] +[visit_exp numtype#907] +[visit_id numtype#907] +[visit_exp (`I32`_numtype, `LT`_relop_{sx#16331}(`S`_sx))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `LT`_relop_{sx#16331}(`S`_sx)] +[visit_exp sx#16331] +[visit_id sx#16331] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I numtype#909 sx#16455 +dims \ I = numtype#909, sx#16455 +[visit_exp `RELOP`_instr{numtype#909}(`I32`_numtype, `LT`_relop_{sx#16455}(`U`_sx))] +[visit_exp numtype#909] +[visit_id numtype#909] +[visit_exp (`I32`_numtype, `LT`_relop_{sx#16455}(`U`_sx))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `LT`_relop_{sx#16455}(`U`_sx)] +[visit_exp sx#16455] +[visit_id sx#16455] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I numtype#911 sx#16579 +dims \ I = numtype#911, sx#16579 +[visit_exp `RELOP`_instr{numtype#911}(`I32`_numtype, `GT`_relop_{sx#16579}(`S`_sx))] +[visit_exp numtype#911] +[visit_id numtype#911] +[visit_exp (`I32`_numtype, `GT`_relop_{sx#16579}(`S`_sx))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `GT`_relop_{sx#16579}(`S`_sx)] +[visit_exp sx#16579] +[visit_id sx#16579] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I numtype#913 sx#16703 +dims \ I = numtype#913, sx#16703 +[visit_exp `RELOP`_instr{numtype#913}(`I32`_numtype, `GT`_relop_{sx#16703}(`U`_sx))] +[visit_exp numtype#913] +[visit_id numtype#913] +[visit_exp (`I32`_numtype, `GT`_relop_{sx#16703}(`U`_sx))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `GT`_relop_{sx#16703}(`U`_sx)] +[visit_exp sx#16703] +[visit_id sx#16703] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I numtype#915 sx#16827 +dims \ I = numtype#915, sx#16827 +[visit_exp `RELOP`_instr{numtype#915}(`I32`_numtype, `LE`_relop_{sx#16827}(`S`_sx))] +[visit_exp numtype#915] +[visit_id numtype#915] +[visit_exp (`I32`_numtype, `LE`_relop_{sx#16827}(`S`_sx))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `LE`_relop_{sx#16827}(`S`_sx)] +[visit_exp sx#16827] +[visit_id sx#16827] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I numtype#917 sx#16951 +dims \ I = numtype#917, sx#16951 +[visit_exp `RELOP`_instr{numtype#917}(`I32`_numtype, `LE`_relop_{sx#16951}(`U`_sx))] +[visit_exp numtype#917] +[visit_id numtype#917] +[visit_exp (`I32`_numtype, `LE`_relop_{sx#16951}(`U`_sx))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `LE`_relop_{sx#16951}(`U`_sx)] +[visit_exp sx#16951] +[visit_id sx#16951] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I numtype#919 sx#17075 +dims \ I = numtype#919, sx#17075 +[visit_exp `RELOP`_instr{numtype#919}(`I32`_numtype, `GE`_relop_{sx#17075}(`S`_sx))] +[visit_exp numtype#919] +[visit_id numtype#919] +[visit_exp (`I32`_numtype, `GE`_relop_{sx#17075}(`S`_sx))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `GE`_relop_{sx#17075}(`S`_sx)] +[visit_exp sx#17075] +[visit_id sx#17075] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I numtype#921 sx#17199 +dims \ I = numtype#921, sx#17199 +[visit_exp `RELOP`_instr{numtype#921}(`I32`_numtype, `GE`_relop_{sx#17199}(`U`_sx))] +[visit_exp numtype#921] +[visit_id numtype#921] +[visit_exp (`I32`_numtype, `GE`_relop_{sx#17199}(`U`_sx))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `GE`_relop_{sx#17199}(`U`_sx)] +[visit_exp sx#17199] +[visit_id sx#17199] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I numtype#923 +dims \ I = numtype#923 +[visit_exp `RELOP`_instr{numtype#923}(`I64`_numtype, `EQ`_relop_)] +[visit_exp numtype#923] +[visit_id numtype#923] +[visit_exp (`I64`_numtype, `EQ`_relop_)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `EQ`_relop_] +[visit_exp ()] +[check_dims] I numtype#925 +dims \ I = numtype#925 +[visit_exp `RELOP`_instr{numtype#925}(`I64`_numtype, `NE`_relop_)] +[visit_exp numtype#925] +[visit_id numtype#925] +[visit_exp (`I64`_numtype, `NE`_relop_)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `NE`_relop_] +[visit_exp ()] +[check_dims] I numtype#927 sx#17443 +dims \ I = numtype#927, sx#17443 +[visit_exp `RELOP`_instr{numtype#927}(`I64`_numtype, `LT`_relop_{sx#17443}(`S`_sx))] +[visit_exp numtype#927] +[visit_id numtype#927] +[visit_exp (`I64`_numtype, `LT`_relop_{sx#17443}(`S`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `LT`_relop_{sx#17443}(`S`_sx)] +[visit_exp sx#17443] +[visit_id sx#17443] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I numtype#929 sx#17567 +dims \ I = numtype#929, sx#17567 +[visit_exp `RELOP`_instr{numtype#929}(`I64`_numtype, `LT`_relop_{sx#17567}(`U`_sx))] +[visit_exp numtype#929] +[visit_id numtype#929] +[visit_exp (`I64`_numtype, `LT`_relop_{sx#17567}(`U`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `LT`_relop_{sx#17567}(`U`_sx)] +[visit_exp sx#17567] +[visit_id sx#17567] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I numtype#931 sx#17691 +dims \ I = numtype#931, sx#17691 +[visit_exp `RELOP`_instr{numtype#931}(`I64`_numtype, `GT`_relop_{sx#17691}(`S`_sx))] +[visit_exp numtype#931] +[visit_id numtype#931] +[visit_exp (`I64`_numtype, `GT`_relop_{sx#17691}(`S`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `GT`_relop_{sx#17691}(`S`_sx)] +[visit_exp sx#17691] +[visit_id sx#17691] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I numtype#933 sx#17815 +dims \ I = numtype#933, sx#17815 +[visit_exp `RELOP`_instr{numtype#933}(`I64`_numtype, `GT`_relop_{sx#17815}(`U`_sx))] +[visit_exp numtype#933] +[visit_id numtype#933] +[visit_exp (`I64`_numtype, `GT`_relop_{sx#17815}(`U`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `GT`_relop_{sx#17815}(`U`_sx)] +[visit_exp sx#17815] +[visit_id sx#17815] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I numtype#935 sx#17939 +dims \ I = numtype#935, sx#17939 +[visit_exp `RELOP`_instr{numtype#935}(`I64`_numtype, `LE`_relop_{sx#17939}(`S`_sx))] +[visit_exp numtype#935] +[visit_id numtype#935] +[visit_exp (`I64`_numtype, `LE`_relop_{sx#17939}(`S`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `LE`_relop_{sx#17939}(`S`_sx)] +[visit_exp sx#17939] +[visit_id sx#17939] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I numtype#937 sx#18063 +dims \ I = numtype#937, sx#18063 +[visit_exp `RELOP`_instr{numtype#937}(`I64`_numtype, `LE`_relop_{sx#18063}(`U`_sx))] +[visit_exp numtype#937] +[visit_id numtype#937] +[visit_exp (`I64`_numtype, `LE`_relop_{sx#18063}(`U`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `LE`_relop_{sx#18063}(`U`_sx)] +[visit_exp sx#18063] +[visit_id sx#18063] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I numtype#939 sx#18187 +dims \ I = numtype#939, sx#18187 +[visit_exp `RELOP`_instr{numtype#939}(`I64`_numtype, `GE`_relop_{sx#18187}(`S`_sx))] +[visit_exp numtype#939] +[visit_id numtype#939] +[visit_exp (`I64`_numtype, `GE`_relop_{sx#18187}(`S`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `GE`_relop_{sx#18187}(`S`_sx)] +[visit_exp sx#18187] +[visit_id sx#18187] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I numtype#941 sx#18311 +dims \ I = numtype#941, sx#18311 +[visit_exp `RELOP`_instr{numtype#941}(`I64`_numtype, `GE`_relop_{sx#18311}(`U`_sx))] +[visit_exp numtype#941] +[visit_id numtype#941] +[visit_exp (`I64`_numtype, `GE`_relop_{sx#18311}(`U`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `GE`_relop_{sx#18311}(`U`_sx)] +[visit_exp sx#18311] +[visit_id sx#18311] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I numtype#943 +dims \ I = numtype#943 +[visit_exp `RELOP`_instr{numtype#943}(`F32`_numtype, `EQ`_relop_)] +[visit_exp numtype#943] +[visit_id numtype#943] +[visit_exp (`F32`_numtype, `EQ`_relop_)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `EQ`_relop_] +[visit_exp ()] +[check_dims] I numtype#945 +dims \ I = numtype#945 +[visit_exp `RELOP`_instr{numtype#945}(`F32`_numtype, `NE`_relop_)] +[visit_exp numtype#945] +[visit_id numtype#945] +[visit_exp (`F32`_numtype, `NE`_relop_)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `NE`_relop_] +[visit_exp ()] +[check_dims] I numtype#947 +dims \ I = numtype#947 +[visit_exp `RELOP`_instr{numtype#947}(`F32`_numtype, `LT`_relop_)] +[visit_exp numtype#947] +[visit_id numtype#947] +[visit_exp (`F32`_numtype, `LT`_relop_)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `LT`_relop_] +[visit_exp ()] +[check_dims] I numtype#949 +dims \ I = numtype#949 +[visit_exp `RELOP`_instr{numtype#949}(`F32`_numtype, `GT`_relop_)] +[visit_exp numtype#949] +[visit_id numtype#949] +[visit_exp (`F32`_numtype, `GT`_relop_)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `GT`_relop_] +[visit_exp ()] +[check_dims] I numtype#951 +dims \ I = numtype#951 +[visit_exp `RELOP`_instr{numtype#951}(`F32`_numtype, `LE`_relop_)] +[visit_exp numtype#951] +[visit_id numtype#951] +[visit_exp (`F32`_numtype, `LE`_relop_)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `LE`_relop_] +[visit_exp ()] +[check_dims] I numtype#953 +dims \ I = numtype#953 +[visit_exp `RELOP`_instr{numtype#953}(`F32`_numtype, `GE`_relop_)] +[visit_exp numtype#953] +[visit_id numtype#953] +[visit_exp (`F32`_numtype, `GE`_relop_)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `GE`_relop_] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I numtype#955 +dims \ I = numtype#955 +[visit_exp `RELOP`_instr{numtype#955}(`F64`_numtype, `EQ`_relop_)] +[visit_exp numtype#955] +[visit_id numtype#955] +[visit_exp (`F64`_numtype, `EQ`_relop_)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `EQ`_relop_] +[visit_exp ()] +[check_dims] I numtype#957 +dims \ I = numtype#957 +[visit_exp `RELOP`_instr{numtype#957}(`F64`_numtype, `NE`_relop_)] +[visit_exp numtype#957] +[visit_id numtype#957] +[visit_exp (`F64`_numtype, `NE`_relop_)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `NE`_relop_] +[visit_exp ()] +[check_dims] I numtype#959 +dims \ I = numtype#959 +[visit_exp `RELOP`_instr{numtype#959}(`F64`_numtype, `LT`_relop_)] +[visit_exp numtype#959] +[visit_id numtype#959] +[visit_exp (`F64`_numtype, `LT`_relop_)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `LT`_relop_] +[visit_exp ()] +[check_dims] I numtype#961 +dims \ I = numtype#961 +[visit_exp `RELOP`_instr{numtype#961}(`F64`_numtype, `GT`_relop_)] +[visit_exp numtype#961] +[visit_id numtype#961] +[visit_exp (`F64`_numtype, `GT`_relop_)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `GT`_relop_] +[visit_exp ()] +[check_dims] I numtype#963 +dims \ I = numtype#963 +[visit_exp `RELOP`_instr{numtype#963}(`F64`_numtype, `LE`_relop_)] +[visit_exp numtype#963] +[visit_id numtype#963] +[visit_exp (`F64`_numtype, `LE`_relop_)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `LE`_relop_] +[visit_exp ()] +[check_dims] I numtype#965 +dims \ I = numtype#965 +[visit_exp `RELOP`_instr{numtype#965}(`F64`_numtype, `GE`_relop_)] +[visit_exp numtype#965] +[visit_id numtype#965] +[visit_exp (`F64`_numtype, `GE`_relop_)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `GE`_relop_] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I numtype#967 +dims \ I = numtype#967 +[visit_exp `UNOP`_instr{numtype#967}(`I32`_numtype, `CLZ`_unop_)] +[visit_exp numtype#967] +[visit_id numtype#967] +[visit_exp (`I32`_numtype, `CLZ`_unop_)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `CLZ`_unop_] +[visit_exp ()] +[check_dims] I numtype#969 +dims \ I = numtype#969 +[visit_exp `UNOP`_instr{numtype#969}(`I32`_numtype, `CTZ`_unop_)] +[visit_exp numtype#969] +[visit_id numtype#969] +[visit_exp (`I32`_numtype, `CTZ`_unop_)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `CTZ`_unop_] +[visit_exp ()] +[check_dims] I numtype#971 +dims \ I = numtype#971 +[visit_exp `UNOP`_instr{numtype#971}(`I32`_numtype, `POPCNT`_unop_)] +[visit_exp numtype#971] +[visit_id numtype#971] +[visit_exp (`I32`_numtype, `POPCNT`_unop_)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `POPCNT`_unop_] +[visit_exp ()] +[check_dims] I i#101930 i#101937 numtype#973 sz#2529 +dims \ I = i#101930, i#101937, numtype#973, sz#2529 +[visit_exp `UNOP`_instr{numtype#973}(`I32`_numtype, `EXTEND`_unop_{sz#2529, i#101930}(`%`_sz{i#101937}(8)))] +[visit_exp numtype#973] +[visit_id numtype#973] +[visit_exp (`I32`_numtype, `EXTEND`_unop_{sz#2529, i#101930}(`%`_sz{i#101937}(8)))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `EXTEND`_unop_{sz#2529, i#101930}(`%`_sz{i#101937}(8))] +[visit_exp sz#2529] +[visit_id sz#2529] +[visit_exp i#101930] +[visit_id i#101930] +[visit_exp (`%`_sz{i#101937}(8))] +[visit_exp `%`_sz{i#101937}(8)] +[visit_exp i#101937] +[visit_id i#101937] +[visit_exp (8)] +[visit_exp 8] +[check_dims] I i#101946 i#101953 numtype#975 sz#2563 +dims \ I = i#101946, i#101953, numtype#975, sz#2563 +[visit_exp `UNOP`_instr{numtype#975}(`I32`_numtype, `EXTEND`_unop_{sz#2563, i#101946}(`%`_sz{i#101953}(16)))] +[visit_exp numtype#975] +[visit_id numtype#975] +[visit_exp (`I32`_numtype, `EXTEND`_unop_{sz#2563, i#101946}(`%`_sz{i#101953}(16)))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `EXTEND`_unop_{sz#2563, i#101946}(`%`_sz{i#101953}(16))] +[visit_exp sz#2563] +[visit_id sz#2563] +[visit_exp i#101946] +[visit_id i#101946] +[visit_exp (`%`_sz{i#101953}(16))] +[visit_exp `%`_sz{i#101953}(16)] +[visit_exp i#101953] +[visit_id i#101953] +[visit_exp (16)] +[visit_exp 16] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I numtype#977 +dims \ I = numtype#977 +[visit_exp `UNOP`_instr{numtype#977}(`I64`_numtype, `CLZ`_unop_)] +[visit_exp numtype#977] +[visit_id numtype#977] +[visit_exp (`I64`_numtype, `CLZ`_unop_)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `CLZ`_unop_] +[visit_exp ()] +[check_dims] I numtype#979 +dims \ I = numtype#979 +[visit_exp `UNOP`_instr{numtype#979}(`I64`_numtype, `CTZ`_unop_)] +[visit_exp numtype#979] +[visit_id numtype#979] +[visit_exp (`I64`_numtype, `CTZ`_unop_)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `CTZ`_unop_] +[visit_exp ()] +[check_dims] I numtype#981 +dims \ I = numtype#981 +[visit_exp `UNOP`_instr{numtype#981}(`I64`_numtype, `POPCNT`_unop_)] +[visit_exp numtype#981] +[visit_id numtype#981] +[visit_exp (`I64`_numtype, `POPCNT`_unop_)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `POPCNT`_unop_] +[visit_exp ()] +[check_dims] I i#101962 i#101969 numtype#983 sz#2642 +dims \ I = i#101962, i#101969, numtype#983, sz#2642 +[visit_exp `UNOP`_instr{numtype#983}(`I64`_numtype, `EXTEND`_unop_{sz#2642, i#101962}(`%`_sz{i#101969}(8)))] +[visit_exp numtype#983] +[visit_id numtype#983] +[visit_exp (`I64`_numtype, `EXTEND`_unop_{sz#2642, i#101962}(`%`_sz{i#101969}(8)))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `EXTEND`_unop_{sz#2642, i#101962}(`%`_sz{i#101969}(8))] +[visit_exp sz#2642] +[visit_id sz#2642] +[visit_exp i#101962] +[visit_id i#101962] +[visit_exp (`%`_sz{i#101969}(8))] +[visit_exp `%`_sz{i#101969}(8)] +[visit_exp i#101969] +[visit_id i#101969] +[visit_exp (8)] +[visit_exp 8] +[check_dims] I i#101978 i#101985 numtype#985 sz#2676 +dims \ I = i#101978, i#101985, numtype#985, sz#2676 +[visit_exp `UNOP`_instr{numtype#985}(`I64`_numtype, `EXTEND`_unop_{sz#2676, i#101978}(`%`_sz{i#101985}(16)))] +[visit_exp numtype#985] +[visit_id numtype#985] +[visit_exp (`I64`_numtype, `EXTEND`_unop_{sz#2676, i#101978}(`%`_sz{i#101985}(16)))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `EXTEND`_unop_{sz#2676, i#101978}(`%`_sz{i#101985}(16))] +[visit_exp sz#2676] +[visit_id sz#2676] +[visit_exp i#101978] +[visit_id i#101978] +[visit_exp (`%`_sz{i#101985}(16))] +[visit_exp `%`_sz{i#101985}(16)] +[visit_exp i#101985] +[visit_id i#101985] +[visit_exp (16)] +[visit_exp 16] +[check_dims] I i#101994 i#102001 numtype#987 sz#2710 +dims \ I = i#101994, i#102001, numtype#987, sz#2710 +[visit_exp `UNOP`_instr{numtype#987}(`I64`_numtype, `EXTEND`_unop_{sz#2710, i#101994}(`%`_sz{i#102001}(32)))] +[visit_exp numtype#987] +[visit_id numtype#987] +[visit_exp (`I64`_numtype, `EXTEND`_unop_{sz#2710, i#101994}(`%`_sz{i#102001}(32)))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `EXTEND`_unop_{sz#2710, i#101994}(`%`_sz{i#102001}(32))] +[visit_exp sz#2710] +[visit_id sz#2710] +[visit_exp i#101994] +[visit_id i#101994] +[visit_exp (`%`_sz{i#102001}(32))] +[visit_exp `%`_sz{i#102001}(32)] +[visit_exp i#102001] +[visit_id i#102001] +[visit_exp (32)] +[visit_exp 32] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I numtype#989 +dims \ I = numtype#989 +[visit_exp `UNOP`_instr{numtype#989}(`F32`_numtype, `ABS`_unop_)] +[visit_exp numtype#989] +[visit_id numtype#989] +[visit_exp (`F32`_numtype, `ABS`_unop_)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `ABS`_unop_] +[visit_exp ()] +[check_dims] I numtype#991 +dims \ I = numtype#991 +[visit_exp `UNOP`_instr{numtype#991}(`F32`_numtype, `NEG`_unop_)] +[visit_exp numtype#991] +[visit_id numtype#991] +[visit_exp (`F32`_numtype, `NEG`_unop_)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `NEG`_unop_] +[visit_exp ()] +[check_dims] I numtype#993 +dims \ I = numtype#993 +[visit_exp `UNOP`_instr{numtype#993}(`F32`_numtype, `SQRT`_unop_)] +[visit_exp numtype#993] +[visit_id numtype#993] +[visit_exp (`F32`_numtype, `SQRT`_unop_)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `SQRT`_unop_] +[visit_exp ()] +[check_dims] I numtype#995 +dims \ I = numtype#995 +[visit_exp `UNOP`_instr{numtype#995}(`F32`_numtype, `CEIL`_unop_)] +[visit_exp numtype#995] +[visit_id numtype#995] +[visit_exp (`F32`_numtype, `CEIL`_unop_)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `CEIL`_unop_] +[visit_exp ()] +[check_dims] I numtype#997 +dims \ I = numtype#997 +[visit_exp `UNOP`_instr{numtype#997}(`F32`_numtype, `FLOOR`_unop_)] +[visit_exp numtype#997] +[visit_id numtype#997] +[visit_exp (`F32`_numtype, `FLOOR`_unop_)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `FLOOR`_unop_] +[visit_exp ()] +[check_dims] I numtype#999 +dims \ I = numtype#999 +[visit_exp `UNOP`_instr{numtype#999}(`F32`_numtype, `TRUNC`_unop_)] +[visit_exp numtype#999] +[visit_id numtype#999] +[visit_exp (`F32`_numtype, `TRUNC`_unop_)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `TRUNC`_unop_] +[visit_exp ()] +[check_dims] I numtype#1001 +dims \ I = numtype#1001 +[visit_exp `UNOP`_instr{numtype#1001}(`F32`_numtype, `NEAREST`_unop_)] +[visit_exp numtype#1001] +[visit_id numtype#1001] +[visit_exp (`F32`_numtype, `NEAREST`_unop_)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `NEAREST`_unop_] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I numtype#1003 +dims \ I = numtype#1003 +[visit_exp `UNOP`_instr{numtype#1003}(`F64`_numtype, `ABS`_unop_)] +[visit_exp numtype#1003] +[visit_id numtype#1003] +[visit_exp (`F64`_numtype, `ABS`_unop_)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `ABS`_unop_] +[visit_exp ()] +[check_dims] I numtype#1005 +dims \ I = numtype#1005 +[visit_exp `UNOP`_instr{numtype#1005}(`F64`_numtype, `NEG`_unop_)] +[visit_exp numtype#1005] +[visit_id numtype#1005] +[visit_exp (`F64`_numtype, `NEG`_unop_)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `NEG`_unop_] +[visit_exp ()] +[check_dims] I numtype#1007 +dims \ I = numtype#1007 +[visit_exp `UNOP`_instr{numtype#1007}(`F64`_numtype, `SQRT`_unop_)] +[visit_exp numtype#1007] +[visit_id numtype#1007] +[visit_exp (`F64`_numtype, `SQRT`_unop_)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `SQRT`_unop_] +[visit_exp ()] +[check_dims] I numtype#1009 +dims \ I = numtype#1009 +[visit_exp `UNOP`_instr{numtype#1009}(`F64`_numtype, `CEIL`_unop_)] +[visit_exp numtype#1009] +[visit_id numtype#1009] +[visit_exp (`F64`_numtype, `CEIL`_unop_)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `CEIL`_unop_] +[visit_exp ()] +[check_dims] I numtype#1011 +dims \ I = numtype#1011 +[visit_exp `UNOP`_instr{numtype#1011}(`F64`_numtype, `FLOOR`_unop_)] +[visit_exp numtype#1011] +[visit_id numtype#1011] +[visit_exp (`F64`_numtype, `FLOOR`_unop_)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `FLOOR`_unop_] +[visit_exp ()] +[check_dims] I numtype#1013 +dims \ I = numtype#1013 +[visit_exp `UNOP`_instr{numtype#1013}(`F64`_numtype, `TRUNC`_unop_)] +[visit_exp numtype#1013] +[visit_id numtype#1013] +[visit_exp (`F64`_numtype, `TRUNC`_unop_)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `TRUNC`_unop_] +[visit_exp ()] +[check_dims] I numtype#1015 +dims \ I = numtype#1015 +[visit_exp `UNOP`_instr{numtype#1015}(`F64`_numtype, `NEAREST`_unop_)] +[visit_exp numtype#1015] +[visit_id numtype#1015] +[visit_exp (`F64`_numtype, `NEAREST`_unop_)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `NEAREST`_unop_] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I numtype#1017 +dims \ I = numtype#1017 +[visit_exp `BINOP`_instr{numtype#1017}(`I32`_numtype, `ADD`_binop_)] +[visit_exp numtype#1017] +[visit_id numtype#1017] +[visit_exp (`I32`_numtype, `ADD`_binop_)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `ADD`_binop_] +[visit_exp ()] +[check_dims] I numtype#1019 +dims \ I = numtype#1019 +[visit_exp `BINOP`_instr{numtype#1019}(`I32`_numtype, `SUB`_binop_)] +[visit_exp numtype#1019] +[visit_id numtype#1019] +[visit_exp (`I32`_numtype, `SUB`_binop_)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `SUB`_binop_] +[visit_exp ()] +[check_dims] I numtype#1021 +dims \ I = numtype#1021 +[visit_exp `BINOP`_instr{numtype#1021}(`I32`_numtype, `MUL`_binop_)] +[visit_exp numtype#1021] +[visit_id numtype#1021] +[visit_exp (`I32`_numtype, `MUL`_binop_)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `MUL`_binop_] +[visit_exp ()] +[check_dims] I numtype#1023 sx#18540 +dims \ I = numtype#1023, sx#18540 +[visit_exp `BINOP`_instr{numtype#1023}(`I32`_numtype, `DIV`_binop_{sx#18540}(`S`_sx))] +[visit_exp numtype#1023] +[visit_id numtype#1023] +[visit_exp (`I32`_numtype, `DIV`_binop_{sx#18540}(`S`_sx))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `DIV`_binop_{sx#18540}(`S`_sx)] +[visit_exp sx#18540] +[visit_id sx#18540] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I numtype#1025 sx#18634 +dims \ I = numtype#1025, sx#18634 +[visit_exp `BINOP`_instr{numtype#1025}(`I32`_numtype, `DIV`_binop_{sx#18634}(`U`_sx))] +[visit_exp numtype#1025] +[visit_id numtype#1025] +[visit_exp (`I32`_numtype, `DIV`_binop_{sx#18634}(`U`_sx))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `DIV`_binop_{sx#18634}(`U`_sx)] +[visit_exp sx#18634] +[visit_id sx#18634] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I numtype#1027 sx#18728 +dims \ I = numtype#1027, sx#18728 +[visit_exp `BINOP`_instr{numtype#1027}(`I32`_numtype, `REM`_binop_{sx#18728}(`S`_sx))] +[visit_exp numtype#1027] +[visit_id numtype#1027] +[visit_exp (`I32`_numtype, `REM`_binop_{sx#18728}(`S`_sx))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `REM`_binop_{sx#18728}(`S`_sx)] +[visit_exp sx#18728] +[visit_id sx#18728] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I numtype#1029 sx#18822 +dims \ I = numtype#1029, sx#18822 +[visit_exp `BINOP`_instr{numtype#1029}(`I32`_numtype, `REM`_binop_{sx#18822}(`U`_sx))] +[visit_exp numtype#1029] +[visit_id numtype#1029] +[visit_exp (`I32`_numtype, `REM`_binop_{sx#18822}(`U`_sx))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `REM`_binop_{sx#18822}(`U`_sx)] +[visit_exp sx#18822] +[visit_id sx#18822] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I numtype#1031 +dims \ I = numtype#1031 +[visit_exp `BINOP`_instr{numtype#1031}(`I32`_numtype, `AND`_binop_)] +[visit_exp numtype#1031] +[visit_id numtype#1031] +[visit_exp (`I32`_numtype, `AND`_binop_)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `AND`_binop_] +[visit_exp ()] +[check_dims] I numtype#1033 +dims \ I = numtype#1033 +[visit_exp `BINOP`_instr{numtype#1033}(`I32`_numtype, `OR`_binop_)] +[visit_exp numtype#1033] +[visit_id numtype#1033] +[visit_exp (`I32`_numtype, `OR`_binop_)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `OR`_binop_] +[visit_exp ()] +[check_dims] I numtype#1035 +dims \ I = numtype#1035 +[visit_exp `BINOP`_instr{numtype#1035}(`I32`_numtype, `XOR`_binop_)] +[visit_exp numtype#1035] +[visit_id numtype#1035] +[visit_exp (`I32`_numtype, `XOR`_binop_)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `XOR`_binop_] +[visit_exp ()] +[check_dims] I numtype#1037 +dims \ I = numtype#1037 +[visit_exp `BINOP`_instr{numtype#1037}(`I32`_numtype, `SHL`_binop_)] +[visit_exp numtype#1037] +[visit_id numtype#1037] +[visit_exp (`I32`_numtype, `SHL`_binop_)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `SHL`_binop_] +[visit_exp ()] +[check_dims] I numtype#1039 sx#19096 +dims \ I = numtype#1039, sx#19096 +[visit_exp `BINOP`_instr{numtype#1039}(`I32`_numtype, `SHR`_binop_{sx#19096}(`S`_sx))] +[visit_exp numtype#1039] +[visit_id numtype#1039] +[visit_exp (`I32`_numtype, `SHR`_binop_{sx#19096}(`S`_sx))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `SHR`_binop_{sx#19096}(`S`_sx)] +[visit_exp sx#19096] +[visit_id sx#19096] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I numtype#1041 sx#19190 +dims \ I = numtype#1041, sx#19190 +[visit_exp `BINOP`_instr{numtype#1041}(`I32`_numtype, `SHR`_binop_{sx#19190}(`U`_sx))] +[visit_exp numtype#1041] +[visit_id numtype#1041] +[visit_exp (`I32`_numtype, `SHR`_binop_{sx#19190}(`U`_sx))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `SHR`_binop_{sx#19190}(`U`_sx)] +[visit_exp sx#19190] +[visit_id sx#19190] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I numtype#1043 +dims \ I = numtype#1043 +[visit_exp `BINOP`_instr{numtype#1043}(`I32`_numtype, `ROTL`_binop_)] +[visit_exp numtype#1043] +[visit_id numtype#1043] +[visit_exp (`I32`_numtype, `ROTL`_binop_)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `ROTL`_binop_] +[visit_exp ()] +[check_dims] I numtype#1045 +dims \ I = numtype#1045 +[visit_exp `BINOP`_instr{numtype#1045}(`I32`_numtype, `ROTR`_binop_)] +[visit_exp numtype#1045] +[visit_id numtype#1045] +[visit_exp (`I32`_numtype, `ROTR`_binop_)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `ROTR`_binop_] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I numtype#1047 +dims \ I = numtype#1047 +[visit_exp `BINOP`_instr{numtype#1047}(`I64`_numtype, `ADD`_binop_)] +[visit_exp numtype#1047] +[visit_id numtype#1047] +[visit_exp (`I64`_numtype, `ADD`_binop_)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `ADD`_binop_] +[visit_exp ()] +[check_dims] I numtype#1049 +dims \ I = numtype#1049 +[visit_exp `BINOP`_instr{numtype#1049}(`I64`_numtype, `SUB`_binop_)] +[visit_exp numtype#1049] +[visit_id numtype#1049] +[visit_exp (`I64`_numtype, `SUB`_binop_)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `SUB`_binop_] +[visit_exp ()] +[check_dims] I numtype#1051 +dims \ I = numtype#1051 +[visit_exp `BINOP`_instr{numtype#1051}(`I64`_numtype, `MUL`_binop_)] +[visit_exp numtype#1051] +[visit_id numtype#1051] +[visit_exp (`I64`_numtype, `MUL`_binop_)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `MUL`_binop_] +[visit_exp ()] +[check_dims] I numtype#1053 sx#19509 +dims \ I = numtype#1053, sx#19509 +[visit_exp `BINOP`_instr{numtype#1053}(`I64`_numtype, `DIV`_binop_{sx#19509}(`S`_sx))] +[visit_exp numtype#1053] +[visit_id numtype#1053] +[visit_exp (`I64`_numtype, `DIV`_binop_{sx#19509}(`S`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `DIV`_binop_{sx#19509}(`S`_sx)] +[visit_exp sx#19509] +[visit_id sx#19509] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I numtype#1055 sx#19603 +dims \ I = numtype#1055, sx#19603 +[visit_exp `BINOP`_instr{numtype#1055}(`I64`_numtype, `DIV`_binop_{sx#19603}(`U`_sx))] +[visit_exp numtype#1055] +[visit_id numtype#1055] +[visit_exp (`I64`_numtype, `DIV`_binop_{sx#19603}(`U`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `DIV`_binop_{sx#19603}(`U`_sx)] +[visit_exp sx#19603] +[visit_id sx#19603] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I numtype#1057 sx#19697 +dims \ I = numtype#1057, sx#19697 +[visit_exp `BINOP`_instr{numtype#1057}(`I64`_numtype, `REM`_binop_{sx#19697}(`S`_sx))] +[visit_exp numtype#1057] +[visit_id numtype#1057] +[visit_exp (`I64`_numtype, `REM`_binop_{sx#19697}(`S`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `REM`_binop_{sx#19697}(`S`_sx)] +[visit_exp sx#19697] +[visit_id sx#19697] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I numtype#1059 sx#19791 +dims \ I = numtype#1059, sx#19791 +[visit_exp `BINOP`_instr{numtype#1059}(`I64`_numtype, `REM`_binop_{sx#19791}(`U`_sx))] +[visit_exp numtype#1059] +[visit_id numtype#1059] +[visit_exp (`I64`_numtype, `REM`_binop_{sx#19791}(`U`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `REM`_binop_{sx#19791}(`U`_sx)] +[visit_exp sx#19791] +[visit_id sx#19791] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I numtype#1061 +dims \ I = numtype#1061 +[visit_exp `BINOP`_instr{numtype#1061}(`I64`_numtype, `AND`_binop_)] +[visit_exp numtype#1061] +[visit_id numtype#1061] +[visit_exp (`I64`_numtype, `AND`_binop_)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `AND`_binop_] +[visit_exp ()] +[check_dims] I numtype#1063 +dims \ I = numtype#1063 +[visit_exp `BINOP`_instr{numtype#1063}(`I64`_numtype, `OR`_binop_)] +[visit_exp numtype#1063] +[visit_id numtype#1063] +[visit_exp (`I64`_numtype, `OR`_binop_)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `OR`_binop_] +[visit_exp ()] +[check_dims] I numtype#1065 +dims \ I = numtype#1065 +[visit_exp `BINOP`_instr{numtype#1065}(`I64`_numtype, `XOR`_binop_)] +[visit_exp numtype#1065] +[visit_id numtype#1065] +[visit_exp (`I64`_numtype, `XOR`_binop_)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `XOR`_binop_] +[visit_exp ()] +[check_dims] I numtype#1067 +dims \ I = numtype#1067 +[visit_exp `BINOP`_instr{numtype#1067}(`I64`_numtype, `SHL`_binop_)] +[visit_exp numtype#1067] +[visit_id numtype#1067] +[visit_exp (`I64`_numtype, `SHL`_binop_)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `SHL`_binop_] +[visit_exp ()] +[check_dims] I numtype#1069 sx#20065 +dims \ I = numtype#1069, sx#20065 +[visit_exp `BINOP`_instr{numtype#1069}(`I64`_numtype, `SHR`_binop_{sx#20065}(`S`_sx))] +[visit_exp numtype#1069] +[visit_id numtype#1069] +[visit_exp (`I64`_numtype, `SHR`_binop_{sx#20065}(`S`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `SHR`_binop_{sx#20065}(`S`_sx)] +[visit_exp sx#20065] +[visit_id sx#20065] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I numtype#1071 sx#20159 +dims \ I = numtype#1071, sx#20159 +[visit_exp `BINOP`_instr{numtype#1071}(`I64`_numtype, `SHR`_binop_{sx#20159}(`U`_sx))] +[visit_exp numtype#1071] +[visit_id numtype#1071] +[visit_exp (`I64`_numtype, `SHR`_binop_{sx#20159}(`U`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `SHR`_binop_{sx#20159}(`U`_sx)] +[visit_exp sx#20159] +[visit_id sx#20159] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I numtype#1073 +dims \ I = numtype#1073 +[visit_exp `BINOP`_instr{numtype#1073}(`I64`_numtype, `ROTL`_binop_)] +[visit_exp numtype#1073] +[visit_id numtype#1073] +[visit_exp (`I64`_numtype, `ROTL`_binop_)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `ROTL`_binop_] +[visit_exp ()] +[check_dims] I numtype#1075 +dims \ I = numtype#1075 +[visit_exp `BINOP`_instr{numtype#1075}(`I64`_numtype, `ROTR`_binop_)] +[visit_exp numtype#1075] +[visit_id numtype#1075] +[visit_exp (`I64`_numtype, `ROTR`_binop_)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `ROTR`_binop_] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I numtype#1077 +dims \ I = numtype#1077 +[visit_exp `BINOP`_instr{numtype#1077}(`F32`_numtype, `ADD`_binop_)] +[visit_exp numtype#1077] +[visit_id numtype#1077] +[visit_exp (`F32`_numtype, `ADD`_binop_)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `ADD`_binop_] +[visit_exp ()] +[check_dims] I numtype#1079 +dims \ I = numtype#1079 +[visit_exp `BINOP`_instr{numtype#1079}(`F32`_numtype, `SUB`_binop_)] +[visit_exp numtype#1079] +[visit_id numtype#1079] +[visit_exp (`F32`_numtype, `SUB`_binop_)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `SUB`_binop_] +[visit_exp ()] +[check_dims] I numtype#1081 +dims \ I = numtype#1081 +[visit_exp `BINOP`_instr{numtype#1081}(`F32`_numtype, `MUL`_binop_)] +[visit_exp numtype#1081] +[visit_id numtype#1081] +[visit_exp (`F32`_numtype, `MUL`_binop_)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `MUL`_binop_] +[visit_exp ()] +[check_dims] I numtype#1083 +dims \ I = numtype#1083 +[visit_exp `BINOP`_instr{numtype#1083}(`F32`_numtype, `DIV`_binop_)] +[visit_exp numtype#1083] +[visit_id numtype#1083] +[visit_exp (`F32`_numtype, `DIV`_binop_)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `DIV`_binop_] +[visit_exp ()] +[check_dims] I numtype#1085 +dims \ I = numtype#1085 +[visit_exp `BINOP`_instr{numtype#1085}(`F32`_numtype, `MIN`_binop_)] +[visit_exp numtype#1085] +[visit_id numtype#1085] +[visit_exp (`F32`_numtype, `MIN`_binop_)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `MIN`_binop_] +[visit_exp ()] +[check_dims] I numtype#1087 +dims \ I = numtype#1087 +[visit_exp `BINOP`_instr{numtype#1087}(`F32`_numtype, `MAX`_binop_)] +[visit_exp numtype#1087] +[visit_id numtype#1087] +[visit_exp (`F32`_numtype, `MAX`_binop_)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `MAX`_binop_] +[visit_exp ()] +[check_dims] I numtype#1089 +dims \ I = numtype#1089 +[visit_exp `BINOP`_instr{numtype#1089}(`F32`_numtype, `COPYSIGN`_binop_)] +[visit_exp numtype#1089] +[visit_id numtype#1089] +[visit_exp (`F32`_numtype, `COPYSIGN`_binop_)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `COPYSIGN`_binop_] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I numtype#1091 +dims \ I = numtype#1091 +[visit_exp `BINOP`_instr{numtype#1091}(`F64`_numtype, `ADD`_binop_)] +[visit_exp numtype#1091] +[visit_id numtype#1091] +[visit_exp (`F64`_numtype, `ADD`_binop_)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `ADD`_binop_] +[visit_exp ()] +[check_dims] I numtype#1093 +dims \ I = numtype#1093 +[visit_exp `BINOP`_instr{numtype#1093}(`F64`_numtype, `SUB`_binop_)] +[visit_exp numtype#1093] +[visit_id numtype#1093] +[visit_exp (`F64`_numtype, `SUB`_binop_)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `SUB`_binop_] +[visit_exp ()] +[check_dims] I numtype#1095 +dims \ I = numtype#1095 +[visit_exp `BINOP`_instr{numtype#1095}(`F64`_numtype, `MUL`_binop_)] +[visit_exp numtype#1095] +[visit_id numtype#1095] +[visit_exp (`F64`_numtype, `MUL`_binop_)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `MUL`_binop_] +[visit_exp ()] +[check_dims] I numtype#1097 +dims \ I = numtype#1097 +[visit_exp `BINOP`_instr{numtype#1097}(`F64`_numtype, `DIV`_binop_)] +[visit_exp numtype#1097] +[visit_id numtype#1097] +[visit_exp (`F64`_numtype, `DIV`_binop_)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `DIV`_binop_] +[visit_exp ()] +[check_dims] I numtype#1099 +dims \ I = numtype#1099 +[visit_exp `BINOP`_instr{numtype#1099}(`F64`_numtype, `MIN`_binop_)] +[visit_exp numtype#1099] +[visit_id numtype#1099] +[visit_exp (`F64`_numtype, `MIN`_binop_)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `MIN`_binop_] +[visit_exp ()] +[check_dims] I numtype#1101 +dims \ I = numtype#1101 +[visit_exp `BINOP`_instr{numtype#1101}(`F64`_numtype, `MAX`_binop_)] +[visit_exp numtype#1101] +[visit_id numtype#1101] +[visit_exp (`F64`_numtype, `MAX`_binop_)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `MAX`_binop_] +[visit_exp ()] +[check_dims] I numtype#1103 +dims \ I = numtype#1103 +[visit_exp `BINOP`_instr{numtype#1103}(`F64`_numtype, `COPYSIGN`_binop_)] +[visit_exp numtype#1103] +[visit_id numtype#1103] +[visit_exp (`F64`_numtype, `COPYSIGN`_binop_)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `COPYSIGN`_binop_] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I numtype_1#75 numtype_2#75 +dims \ I = numtype_1#75, numtype_2#75 +[visit_exp `CVTOP`_instr{numtype_1#75, numtype_2#75}(`I32`_numtype, `I64`_numtype, `WRAP`_cvtop__)] +[visit_exp numtype_1#75] +[visit_id numtype_1#75] +[visit_exp numtype_2#75] +[visit_id numtype_2#75] +[visit_exp (`I32`_numtype, `I64`_numtype, `WRAP`_cvtop__)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `WRAP`_cvtop__] +[visit_exp ()] +[check_dims] I numtype_1#77 numtype_2#77 sx#20328 +dims \ I = numtype_1#77, numtype_2#77, sx#20328 +[visit_exp `CVTOP`_instr{numtype_1#77, numtype_2#77}(`I32`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#20328}(`S`_sx))] +[visit_exp numtype_1#77] +[visit_id numtype_1#77] +[visit_exp numtype_2#77] +[visit_id numtype_2#77] +[visit_exp (`I32`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#20328}(`S`_sx))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `TRUNC`_cvtop__{sx#20328}(`S`_sx)] +[visit_exp sx#20328] +[visit_id sx#20328] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I numtype_1#79 numtype_2#79 sx#20392 +dims \ I = numtype_1#79, numtype_2#79, sx#20392 +[visit_exp `CVTOP`_instr{numtype_1#79, numtype_2#79}(`I32`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#20392}(`U`_sx))] +[visit_exp numtype_1#79] +[visit_id numtype_1#79] +[visit_exp numtype_2#79] +[visit_id numtype_2#79] +[visit_exp (`I32`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#20392}(`U`_sx))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `TRUNC`_cvtop__{sx#20392}(`U`_sx)] +[visit_exp sx#20392] +[visit_id sx#20392] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I numtype_1#81 numtype_2#81 sx#20456 +dims \ I = numtype_1#81, numtype_2#81, sx#20456 +[visit_exp `CVTOP`_instr{numtype_1#81, numtype_2#81}(`I32`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#20456}(`S`_sx))] +[visit_exp numtype_1#81] +[visit_id numtype_1#81] +[visit_exp numtype_2#81] +[visit_id numtype_2#81] +[visit_exp (`I32`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#20456}(`S`_sx))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `TRUNC`_cvtop__{sx#20456}(`S`_sx)] +[visit_exp sx#20456] +[visit_id sx#20456] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I numtype_1#83 numtype_2#83 sx#20520 +dims \ I = numtype_1#83, numtype_2#83, sx#20520 +[visit_exp `CVTOP`_instr{numtype_1#83, numtype_2#83}(`I32`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#20520}(`U`_sx))] +[visit_exp numtype_1#83] +[visit_id numtype_1#83] +[visit_exp numtype_2#83] +[visit_id numtype_2#83] +[visit_exp (`I32`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#20520}(`U`_sx))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `TRUNC`_cvtop__{sx#20520}(`U`_sx)] +[visit_exp sx#20520] +[visit_id sx#20520] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I numtype_1#85 numtype_2#85 sx#20584 +dims \ I = numtype_1#85, numtype_2#85, sx#20584 +[visit_exp `CVTOP`_instr{numtype_1#85, numtype_2#85}(`I32`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#20584}(`S`_sx))] +[visit_exp numtype_1#85] +[visit_id numtype_1#85] +[visit_exp numtype_2#85] +[visit_id numtype_2#85] +[visit_exp (`I32`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#20584}(`S`_sx))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `TRUNC_SAT`_cvtop__{sx#20584}(`S`_sx)] +[visit_exp sx#20584] +[visit_id sx#20584] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I numtype_1#87 numtype_2#87 sx#20648 +dims \ I = numtype_1#87, numtype_2#87, sx#20648 +[visit_exp `CVTOP`_instr{numtype_1#87, numtype_2#87}(`I32`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#20648}(`U`_sx))] +[visit_exp numtype_1#87] +[visit_id numtype_1#87] +[visit_exp numtype_2#87] +[visit_id numtype_2#87] +[visit_exp (`I32`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#20648}(`U`_sx))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `TRUNC_SAT`_cvtop__{sx#20648}(`U`_sx)] +[visit_exp sx#20648] +[visit_id sx#20648] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I numtype_1#89 numtype_2#89 sx#20712 +dims \ I = numtype_1#89, numtype_2#89, sx#20712 +[visit_exp `CVTOP`_instr{numtype_1#89, numtype_2#89}(`I32`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#20712}(`S`_sx))] +[visit_exp numtype_1#89] +[visit_id numtype_1#89] +[visit_exp numtype_2#89] +[visit_id numtype_2#89] +[visit_exp (`I32`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#20712}(`S`_sx))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `TRUNC_SAT`_cvtop__{sx#20712}(`S`_sx)] +[visit_exp sx#20712] +[visit_id sx#20712] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I numtype_1#91 numtype_2#91 sx#20776 +dims \ I = numtype_1#91, numtype_2#91, sx#20776 +[visit_exp `CVTOP`_instr{numtype_1#91, numtype_2#91}(`I32`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#20776}(`U`_sx))] +[visit_exp numtype_1#91] +[visit_id numtype_1#91] +[visit_exp numtype_2#91] +[visit_id numtype_2#91] +[visit_exp (`I32`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#20776}(`U`_sx))] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `TRUNC_SAT`_cvtop__{sx#20776}(`U`_sx)] +[visit_exp sx#20776] +[visit_id sx#20776] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I numtype_1#93 numtype_2#93 sx#20810 +dims \ I = numtype_1#93, numtype_2#93, sx#20810 +[visit_exp `CVTOP`_instr{numtype_1#93, numtype_2#93}(`I64`_numtype, `I64`_numtype, `EXTEND`_cvtop__{sx#20810}(`S`_sx))] +[visit_exp numtype_1#93] +[visit_id numtype_1#93] +[visit_exp numtype_2#93] +[visit_id numtype_2#93] +[visit_exp (`I64`_numtype, `I64`_numtype, `EXTEND`_cvtop__{sx#20810}(`S`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `EXTEND`_cvtop__{sx#20810}(`S`_sx)] +[visit_exp sx#20810] +[visit_id sx#20810] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I numtype_1#95 numtype_2#95 sx#20844 +dims \ I = numtype_1#95, numtype_2#95, sx#20844 +[visit_exp `CVTOP`_instr{numtype_1#95, numtype_2#95}(`I64`_numtype, `I64`_numtype, `EXTEND`_cvtop__{sx#20844}(`U`_sx))] +[visit_exp numtype_1#95] +[visit_id numtype_1#95] +[visit_exp numtype_2#95] +[visit_id numtype_2#95] +[visit_exp (`I64`_numtype, `I64`_numtype, `EXTEND`_cvtop__{sx#20844}(`U`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `EXTEND`_cvtop__{sx#20844}(`U`_sx)] +[visit_exp sx#20844] +[visit_id sx#20844] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I numtype_1#97 numtype_2#97 sx#20908 +dims \ I = numtype_1#97, numtype_2#97, sx#20908 +[visit_exp `CVTOP`_instr{numtype_1#97, numtype_2#97}(`I64`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#20908}(`S`_sx))] +[visit_exp numtype_1#97] +[visit_id numtype_1#97] +[visit_exp numtype_2#97] +[visit_id numtype_2#97] +[visit_exp (`I64`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#20908}(`S`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `TRUNC`_cvtop__{sx#20908}(`S`_sx)] +[visit_exp sx#20908] +[visit_id sx#20908] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I numtype_1#99 numtype_2#99 sx#20972 +dims \ I = numtype_1#99, numtype_2#99, sx#20972 +[visit_exp `CVTOP`_instr{numtype_1#99, numtype_2#99}(`I64`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#20972}(`U`_sx))] +[visit_exp numtype_1#99] +[visit_id numtype_1#99] +[visit_exp numtype_2#99] +[visit_id numtype_2#99] +[visit_exp (`I64`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#20972}(`U`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `TRUNC`_cvtop__{sx#20972}(`U`_sx)] +[visit_exp sx#20972] +[visit_id sx#20972] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I numtype_1#101 numtype_2#101 sx#21036 +dims \ I = numtype_1#101, numtype_2#101, sx#21036 +[visit_exp `CVTOP`_instr{numtype_1#101, numtype_2#101}(`I64`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#21036}(`S`_sx))] +[visit_exp numtype_1#101] +[visit_id numtype_1#101] +[visit_exp numtype_2#101] +[visit_id numtype_2#101] +[visit_exp (`I64`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#21036}(`S`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `TRUNC`_cvtop__{sx#21036}(`S`_sx)] +[visit_exp sx#21036] +[visit_id sx#21036] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I numtype_1#103 numtype_2#103 sx#21100 +dims \ I = numtype_1#103, numtype_2#103, sx#21100 +[visit_exp `CVTOP`_instr{numtype_1#103, numtype_2#103}(`I64`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#21100}(`U`_sx))] +[visit_exp numtype_1#103] +[visit_id numtype_1#103] +[visit_exp numtype_2#103] +[visit_id numtype_2#103] +[visit_exp (`I64`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#21100}(`U`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `TRUNC`_cvtop__{sx#21100}(`U`_sx)] +[visit_exp sx#21100] +[visit_id sx#21100] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I numtype_1#105 numtype_2#105 sx#21164 +dims \ I = numtype_1#105, numtype_2#105, sx#21164 +[visit_exp `CVTOP`_instr{numtype_1#105, numtype_2#105}(`I64`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#21164}(`S`_sx))] +[visit_exp numtype_1#105] +[visit_id numtype_1#105] +[visit_exp numtype_2#105] +[visit_id numtype_2#105] +[visit_exp (`I64`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#21164}(`S`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `TRUNC_SAT`_cvtop__{sx#21164}(`S`_sx)] +[visit_exp sx#21164] +[visit_id sx#21164] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I numtype_1#107 numtype_2#107 sx#21228 +dims \ I = numtype_1#107, numtype_2#107, sx#21228 +[visit_exp `CVTOP`_instr{numtype_1#107, numtype_2#107}(`I64`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#21228}(`U`_sx))] +[visit_exp numtype_1#107] +[visit_id numtype_1#107] +[visit_exp numtype_2#107] +[visit_id numtype_2#107] +[visit_exp (`I64`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#21228}(`U`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `TRUNC_SAT`_cvtop__{sx#21228}(`U`_sx)] +[visit_exp sx#21228] +[visit_id sx#21228] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I numtype_1#109 numtype_2#109 sx#21292 +dims \ I = numtype_1#109, numtype_2#109, sx#21292 +[visit_exp `CVTOP`_instr{numtype_1#109, numtype_2#109}(`I64`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#21292}(`S`_sx))] +[visit_exp numtype_1#109] +[visit_id numtype_1#109] +[visit_exp numtype_2#109] +[visit_id numtype_2#109] +[visit_exp (`I64`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#21292}(`S`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `TRUNC_SAT`_cvtop__{sx#21292}(`S`_sx)] +[visit_exp sx#21292] +[visit_id sx#21292] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I numtype_1#111 numtype_2#111 sx#21356 +dims \ I = numtype_1#111, numtype_2#111, sx#21356 +[visit_exp `CVTOP`_instr{numtype_1#111, numtype_2#111}(`I64`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#21356}(`U`_sx))] +[visit_exp numtype_1#111] +[visit_id numtype_1#111] +[visit_exp numtype_2#111] +[visit_id numtype_2#111] +[visit_exp (`I64`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#21356}(`U`_sx))] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `TRUNC_SAT`_cvtop__{sx#21356}(`U`_sx)] +[visit_exp sx#21356] +[visit_id sx#21356] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I numtype_1#113 numtype_2#113 +dims \ I = numtype_1#113, numtype_2#113 +[visit_exp `CVTOP`_instr{numtype_1#113, numtype_2#113}(`F32`_numtype, `F64`_numtype, `DEMOTE`_cvtop__)] +[visit_exp numtype_1#113] +[visit_id numtype_1#113] +[visit_exp numtype_2#113] +[visit_id numtype_2#113] +[visit_exp (`F32`_numtype, `F64`_numtype, `DEMOTE`_cvtop__)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `DEMOTE`_cvtop__] +[visit_exp ()] +[check_dims] I numtype_1#115 numtype_2#115 sx#21390 +dims \ I = numtype_1#115, numtype_2#115, sx#21390 +[visit_exp `CVTOP`_instr{numtype_1#115, numtype_2#115}(`F32`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#21390}(`S`_sx))] +[visit_exp numtype_1#115] +[visit_id numtype_1#115] +[visit_exp numtype_2#115] +[visit_id numtype_2#115] +[visit_exp (`F32`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#21390}(`S`_sx))] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `CONVERT`_cvtop__{sx#21390}(`S`_sx)] +[visit_exp sx#21390] +[visit_id sx#21390] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I numtype_1#117 numtype_2#117 sx#21424 +dims \ I = numtype_1#117, numtype_2#117, sx#21424 +[visit_exp `CVTOP`_instr{numtype_1#117, numtype_2#117}(`F32`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#21424}(`U`_sx))] +[visit_exp numtype_1#117] +[visit_id numtype_1#117] +[visit_exp numtype_2#117] +[visit_id numtype_2#117] +[visit_exp (`F32`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#21424}(`U`_sx))] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `CONVERT`_cvtop__{sx#21424}(`U`_sx)] +[visit_exp sx#21424] +[visit_id sx#21424] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I numtype_1#119 numtype_2#119 sx#21458 +dims \ I = numtype_1#119, numtype_2#119, sx#21458 +[visit_exp `CVTOP`_instr{numtype_1#119, numtype_2#119}(`F32`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#21458}(`S`_sx))] +[visit_exp numtype_1#119] +[visit_id numtype_1#119] +[visit_exp numtype_2#119] +[visit_id numtype_2#119] +[visit_exp (`F32`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#21458}(`S`_sx))] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `CONVERT`_cvtop__{sx#21458}(`S`_sx)] +[visit_exp sx#21458] +[visit_id sx#21458] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I numtype_1#121 numtype_2#121 sx#21492 +dims \ I = numtype_1#121, numtype_2#121, sx#21492 +[visit_exp `CVTOP`_instr{numtype_1#121, numtype_2#121}(`F32`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#21492}(`U`_sx))] +[visit_exp numtype_1#121] +[visit_id numtype_1#121] +[visit_exp numtype_2#121] +[visit_id numtype_2#121] +[visit_exp (`F32`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#21492}(`U`_sx))] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `CONVERT`_cvtop__{sx#21492}(`U`_sx)] +[visit_exp sx#21492] +[visit_id sx#21492] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I numtype_1#123 numtype_2#123 +dims \ I = numtype_1#123, numtype_2#123 +[visit_exp `CVTOP`_instr{numtype_1#123, numtype_2#123}(`F64`_numtype, `F32`_numtype, `PROMOTE`_cvtop__)] +[visit_exp numtype_1#123] +[visit_id numtype_1#123] +[visit_exp numtype_2#123] +[visit_id numtype_2#123] +[visit_exp (`F64`_numtype, `F32`_numtype, `PROMOTE`_cvtop__)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `PROMOTE`_cvtop__] +[visit_exp ()] +[check_dims] I numtype_1#125 numtype_2#125 sx#21526 +dims \ I = numtype_1#125, numtype_2#125, sx#21526 +[visit_exp `CVTOP`_instr{numtype_1#125, numtype_2#125}(`F64`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#21526}(`S`_sx))] +[visit_exp numtype_1#125] +[visit_id numtype_1#125] +[visit_exp numtype_2#125] +[visit_id numtype_2#125] +[visit_exp (`F64`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#21526}(`S`_sx))] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `CONVERT`_cvtop__{sx#21526}(`S`_sx)] +[visit_exp sx#21526] +[visit_id sx#21526] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I numtype_1#127 numtype_2#127 sx#21560 +dims \ I = numtype_1#127, numtype_2#127, sx#21560 +[visit_exp `CVTOP`_instr{numtype_1#127, numtype_2#127}(`F64`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#21560}(`U`_sx))] +[visit_exp numtype_1#127] +[visit_id numtype_1#127] +[visit_exp numtype_2#127] +[visit_id numtype_2#127] +[visit_exp (`F64`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#21560}(`U`_sx))] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `CONVERT`_cvtop__{sx#21560}(`U`_sx)] +[visit_exp sx#21560] +[visit_id sx#21560] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I numtype_1#129 numtype_2#129 sx#21594 +dims \ I = numtype_1#129, numtype_2#129, sx#21594 +[visit_exp `CVTOP`_instr{numtype_1#129, numtype_2#129}(`F64`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#21594}(`S`_sx))] +[visit_exp numtype_1#129] +[visit_id numtype_1#129] +[visit_exp numtype_2#129] +[visit_id numtype_2#129] +[visit_exp (`F64`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#21594}(`S`_sx))] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `CONVERT`_cvtop__{sx#21594}(`S`_sx)] +[visit_exp sx#21594] +[visit_id sx#21594] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I numtype_1#131 numtype_2#131 sx#21628 +dims \ I = numtype_1#131, numtype_2#131, sx#21628 +[visit_exp `CVTOP`_instr{numtype_1#131, numtype_2#131}(`F64`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#21628}(`U`_sx))] +[visit_exp numtype_1#131] +[visit_id numtype_1#131] +[visit_exp numtype_2#131] +[visit_id numtype_2#131] +[visit_exp (`F64`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#21628}(`U`_sx))] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `CONVERT`_cvtop__{sx#21628}(`U`_sx)] +[visit_exp sx#21628] +[visit_id sx#21628] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I numtype_1#133 numtype_2#133 +dims \ I = numtype_1#133, numtype_2#133 +[visit_exp `CVTOP`_instr{numtype_1#133, numtype_2#133}(`I32`_numtype, `F32`_numtype, `REINTERPRET`_cvtop__)] +[visit_exp numtype_1#133] +[visit_id numtype_1#133] +[visit_exp numtype_2#133] +[visit_id numtype_2#133] +[visit_exp (`I32`_numtype, `F32`_numtype, `REINTERPRET`_cvtop__)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `REINTERPRET`_cvtop__] +[visit_exp ()] +[check_dims] I numtype_1#135 numtype_2#135 +dims \ I = numtype_1#135, numtype_2#135 +[visit_exp `CVTOP`_instr{numtype_1#135, numtype_2#135}(`I64`_numtype, `F64`_numtype, `REINTERPRET`_cvtop__)] +[visit_exp numtype_1#135] +[visit_id numtype_1#135] +[visit_exp numtype_2#135] +[visit_id numtype_2#135] +[visit_exp (`I64`_numtype, `F64`_numtype, `REINTERPRET`_cvtop__)] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `REINTERPRET`_cvtop__] +[visit_exp ()] +[check_dims] I numtype_1#137 numtype_2#137 +dims \ I = numtype_1#137, numtype_2#137 +[visit_exp `CVTOP`_instr{numtype_1#137, numtype_2#137}(`F32`_numtype, `I32`_numtype, `REINTERPRET`_cvtop__)] +[visit_exp numtype_1#137] +[visit_id numtype_1#137] +[visit_exp numtype_2#137] +[visit_id numtype_2#137] +[visit_exp (`F32`_numtype, `I32`_numtype, `REINTERPRET`_cvtop__)] +[visit_exp `F32`_numtype] +[visit_exp ()] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `REINTERPRET`_cvtop__] +[visit_exp ()] +[check_dims] I numtype_1#139 numtype_2#139 +dims \ I = numtype_1#139, numtype_2#139 +[visit_exp `CVTOP`_instr{numtype_1#139, numtype_2#139}(`F64`_numtype, `I64`_numtype, `REINTERPRET`_cvtop__)] +[visit_exp numtype_1#139] +[visit_id numtype_1#139] +[visit_exp numtype_2#139] +[visit_id numtype_2#139] +[visit_exp (`F64`_numtype, `I64`_numtype, `REINTERPRET`_cvtop__)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `I64`_numtype] +[visit_exp ()] +[visit_exp `REINTERPRET`_cvtop__] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I c vectype#304 +dims \ I = c, vectype#304 +[visit_exp `VCONST`_instr{vectype#304}(`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(8, c)*{c <- `c*`})))] +[visit_exp vectype#304] +[visit_id vectype#304] +[visit_exp (`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(8, c)*{c <- `c*`})))] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(8, c)*{c <- `c*`}))] +[visit_exp 128] +[visit_exp $concat_(syntax byte, $ibytes_(8, c)*{c <- `c*`})] +[visit_exp $ibytes_(8, c)*{c <- `c*`}] +[scope_enter c] +[visit_exp $ibytes_(8, c)] +[visit_exp 8] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] no dims +[visit_id c*] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[visit_exp 16] +[check_dims] I c vectype#306 +dims \ I = c, vectype#306 +[visit_exp `VCONST`_instr{vectype#306}(`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(16, c)*{c <- `c*`})))] +[visit_exp vectype#306] +[visit_id vectype#306] +[visit_exp (`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(16, c)*{c <- `c*`})))] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(16, c)*{c <- `c*`}))] +[visit_exp 128] +[visit_exp $concat_(syntax byte, $ibytes_(16, c)*{c <- `c*`})] +[visit_exp $ibytes_(16, c)*{c <- `c*`}] +[scope_enter c] +[visit_exp $ibytes_(16, c)] +[visit_exp 16] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] no dims +[visit_id c*] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[visit_exp 8] +[check_dims] I c vectype#308 +dims \ I = c, vectype#308 +[visit_exp `VCONST`_instr{vectype#308}(`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(32, c)*{c <- `c*`})))] +[visit_exp vectype#308] +[visit_id vectype#308] +[visit_exp (`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(32, c)*{c <- `c*`})))] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(32, c)*{c <- `c*`}))] +[visit_exp 128] +[visit_exp $concat_(syntax byte, $ibytes_(32, c)*{c <- `c*`})] +[visit_exp $ibytes_(32, c)*{c <- `c*`}] +[scope_enter c] +[visit_exp $ibytes_(32, c)] +[visit_exp 32] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] no dims +[visit_id c*] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[visit_exp 4] +[check_dims] I c vectype#310 +dims \ I = c, vectype#310 +[visit_exp `VCONST`_instr{vectype#310}(`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(64, c)*{c <- `c*`})))] +[visit_exp vectype#310] +[visit_id vectype#310] +[visit_exp (`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(64, c)*{c <- `c*`})))] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(64, c)*{c <- `c*`}))] +[visit_exp 128] +[visit_exp $concat_(syntax byte, $ibytes_(64, c)*{c <- `c*`})] +[visit_exp $ibytes_(64, c)*{c <- `c*`}] +[scope_enter c] +[visit_exp $ibytes_(64, c)] +[visit_exp 64] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] no dims +[visit_id c*] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[visit_exp 2] +[check_dims] I c vectype#312 +dims \ I = c, vectype#312 +[visit_exp `VCONST`_instr{vectype#312}(`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(32, c)*{c <- `c*`})))] +[visit_exp vectype#312] +[visit_id vectype#312] +[visit_exp (`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(32, c)*{c <- `c*`})))] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(32, c)*{c <- `c*`}))] +[visit_exp 128] +[visit_exp $concat_(syntax byte, $fbytes_(32, c)*{c <- `c*`})] +[visit_exp $fbytes_(32, c)*{c <- `c*`}] +[scope_enter c] +[visit_exp $fbytes_(32, c)] +[visit_exp 32] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] no dims +[visit_id c*] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[visit_exp 4] +[check_dims] I c vectype#314 +dims \ I = c, vectype#314 +[visit_exp `VCONST`_instr{vectype#314}(`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(64, c)*{c <- `c*`})))] +[visit_exp vectype#314] +[visit_id vectype#314] +[visit_exp (`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(64, c)*{c <- `c*`})))] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(64, c)*{c <- `c*`}))] +[visit_exp 128] +[visit_exp $concat_(syntax byte, $fbytes_(64, c)*{c <- `c*`})] +[visit_exp $fbytes_(64, c)*{c <- `c*`}] +[scope_enter c] +[visit_exp $fbytes_(64, c)] +[visit_exp 64] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] no dims +[visit_id c*] +[visit_exp c*{c <- `c*`}] +[scope_enter c] +[visit_exp c] +[visit_id c] not free +[visit_id c] not free +[scope_exit c] +[visit_exp `c*`] +[visit_id c*] not free +[visit_id c*] no dims +[visit_exp 2] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I bshape#19 dim#22986 i i#103376 i#103380 i#103387 laneidx*#9 lanetype#22986 shape#3961 shape#3972 +dims \ I = bshape#19, dim#22986, i, i#103376, i#103380, i#103387, laneidx*#9, lanetype#22986, shape#3961, shape#3972 +[visit_exp `VSHUFFLE`_instr{bshape#19, `laneidx*#9`, i#103376, shape#3961}(`%`_bshape{shape#3972}(`%X%`_shape{lanetype#22986, dim#22986, i#103380}(`I8`_lanetype, `%`_dim{i#103387}(16))), i*{i <- `i*`})] +[visit_exp bshape#19] +[visit_id bshape#19] +[visit_exp `laneidx*#9`] +[visit_id laneidx*#9] +[visit_exp i#103376] +[visit_id i#103376] +[visit_exp shape#3961] +[visit_id shape#3961] +[visit_exp (`%`_bshape{shape#3972}(`%X%`_shape{lanetype#22986, dim#22986, i#103380}(`I8`_lanetype, `%`_dim{i#103387}(16))), i*{i <- `i*`})] +[visit_exp `%`_bshape{shape#3972}(`%X%`_shape{lanetype#22986, dim#22986, i#103380}(`I8`_lanetype, `%`_dim{i#103387}(16)))] +[visit_exp shape#3972] +[visit_id shape#3972] +[visit_exp (`%X%`_shape{lanetype#22986, dim#22986, i#103380}(`I8`_lanetype, `%`_dim{i#103387}(16)))] +[visit_exp `%X%`_shape{lanetype#22986, dim#22986, i#103380}(`I8`_lanetype, `%`_dim{i#103387}(16))] +[visit_exp lanetype#22986] +[visit_id lanetype#22986] +[visit_exp dim#22986] +[visit_id dim#22986] +[visit_exp i#103380] +[visit_id i#103380] +[visit_exp (`I8`_lanetype, `%`_dim{i#103387}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#103387}(16)] +[visit_exp i#103387] +[visit_id i#103387] +[visit_exp (16)] +[visit_exp 16] +[visit_exp i*{i <- `i*`}] +[scope_enter i] +[visit_exp i] +[visit_id i] not free +[visit_id i] not free +[scope_exit i] +[visit_exp `i*`] +[visit_id i*] no dims +[visit_id i*] +[visit_exp i*{i <- `i*`}] +[scope_enter i] +[visit_exp i] +[visit_id i] not free +[visit_id i] not free +[scope_exit i] +[visit_exp `i*`] +[visit_id i*] not free +[visit_id i*] no dims +[visit_exp 16] +[check_dims] I bshape#21 dim#22998 i#103415 i#103422 lanetype#22998 shape#3984 +dims \ I = bshape#21, dim#22998, i#103415, i#103422, lanetype#22998, shape#3984 +[visit_exp `VSWIZZLOP`_instr{bshape#21}(`%`_bshape{shape#3984}(`%X%`_shape{lanetype#22998, dim#22998, i#103415}(`I8`_lanetype, `%`_dim{i#103422}(16))), `SWIZZLE`_vswizzlop_)] +[visit_exp bshape#21] +[visit_id bshape#21] +[visit_exp (`%`_bshape{shape#3984}(`%X%`_shape{lanetype#22998, dim#22998, i#103415}(`I8`_lanetype, `%`_dim{i#103422}(16))), `SWIZZLE`_vswizzlop_)] +[visit_exp `%`_bshape{shape#3984}(`%X%`_shape{lanetype#22998, dim#22998, i#103415}(`I8`_lanetype, `%`_dim{i#103422}(16)))] +[visit_exp shape#3984] +[visit_id shape#3984] +[visit_exp (`%X%`_shape{lanetype#22998, dim#22998, i#103415}(`I8`_lanetype, `%`_dim{i#103422}(16)))] +[visit_exp `%X%`_shape{lanetype#22998, dim#22998, i#103415}(`I8`_lanetype, `%`_dim{i#103422}(16))] +[visit_exp lanetype#22998] +[visit_id lanetype#22998] +[visit_exp dim#22998] +[visit_id dim#22998] +[visit_exp i#103415] +[visit_id i#103415] +[visit_exp (`I8`_lanetype, `%`_dim{i#103422}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#103422}(16)] +[visit_exp i#103422] +[visit_id i#103422] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `SWIZZLE`_vswizzlop_] +[visit_exp ()] +[check_dims] I bshape#23 dim#23055 i#103502 i#103509 lanetype#23055 shape#4011 +dims \ I = bshape#23, dim#23055, i#103502, i#103509, lanetype#23055, shape#4011 +[visit_exp `VSWIZZLOP`_instr{bshape#23}(`%`_bshape{shape#4011}(`%X%`_shape{lanetype#23055, dim#23055, i#103502}(`I8`_lanetype, `%`_dim{i#103509}(16))), `RELAXED_SWIZZLE`_vswizzlop_)] +[visit_exp bshape#23] +[visit_id bshape#23] +[visit_exp (`%`_bshape{shape#4011}(`%X%`_shape{lanetype#23055, dim#23055, i#103502}(`I8`_lanetype, `%`_dim{i#103509}(16))), `RELAXED_SWIZZLE`_vswizzlop_)] +[visit_exp `%`_bshape{shape#4011}(`%X%`_shape{lanetype#23055, dim#23055, i#103502}(`I8`_lanetype, `%`_dim{i#103509}(16)))] +[visit_exp shape#4011] +[visit_id shape#4011] +[visit_exp (`%X%`_shape{lanetype#23055, dim#23055, i#103502}(`I8`_lanetype, `%`_dim{i#103509}(16)))] +[visit_exp `%X%`_shape{lanetype#23055, dim#23055, i#103502}(`I8`_lanetype, `%`_dim{i#103509}(16))] +[visit_exp lanetype#23055] +[visit_id lanetype#23055] +[visit_exp dim#23055] +[visit_id dim#23055] +[visit_exp i#103502] +[visit_id i#103502] +[visit_exp (`I8`_lanetype, `%`_dim{i#103509}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#103509}(16)] +[visit_exp i#103509] +[visit_id i#103509] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `RELAXED_SWIZZLE`_vswizzlop_] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I dim#23112 i#103589 i#103596 lanetype#23112 shape#4028 +dims \ I = dim#23112, i#103589, i#103596, lanetype#23112, shape#4028 +[visit_exp `VSPLAT`_instr{shape#4028}(`%X%`_shape{lanetype#23112, dim#23112, i#103589}(`I8`_lanetype, `%`_dim{i#103596}(16)))] +[visit_exp shape#4028] +[visit_id shape#4028] +[visit_exp (`%X%`_shape{lanetype#23112, dim#23112, i#103589}(`I8`_lanetype, `%`_dim{i#103596}(16)))] +[visit_exp `%X%`_shape{lanetype#23112, dim#23112, i#103589}(`I8`_lanetype, `%`_dim{i#103596}(16))] +[visit_exp lanetype#23112] +[visit_id lanetype#23112] +[visit_exp dim#23112] +[visit_id dim#23112] +[visit_exp i#103589] +[visit_id i#103589] +[visit_exp (`I8`_lanetype, `%`_dim{i#103596}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#103596}(16)] +[visit_exp i#103596] +[visit_id i#103596] +[visit_exp (16)] +[visit_exp 16] +[check_dims] I dim#23124 i#103601 i#103608 lanetype#23124 shape#4030 +dims \ I = dim#23124, i#103601, i#103608, lanetype#23124, shape#4030 +[visit_exp `VSPLAT`_instr{shape#4030}(`%X%`_shape{lanetype#23124, dim#23124, i#103601}(`I16`_lanetype, `%`_dim{i#103608}(8)))] +[visit_exp shape#4030] +[visit_id shape#4030] +[visit_exp (`%X%`_shape{lanetype#23124, dim#23124, i#103601}(`I16`_lanetype, `%`_dim{i#103608}(8)))] +[visit_exp `%X%`_shape{lanetype#23124, dim#23124, i#103601}(`I16`_lanetype, `%`_dim{i#103608}(8))] +[visit_exp lanetype#23124] +[visit_id lanetype#23124] +[visit_exp dim#23124] +[visit_id dim#23124] +[visit_exp i#103601] +[visit_id i#103601] +[visit_exp (`I16`_lanetype, `%`_dim{i#103608}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#103608}(8)] +[visit_exp i#103608] +[visit_id i#103608] +[visit_exp (8)] +[visit_exp 8] +[check_dims] I dim#23136 i#103613 i#103620 lanetype#23136 shape#4032 +dims \ I = dim#23136, i#103613, i#103620, lanetype#23136, shape#4032 +[visit_exp `VSPLAT`_instr{shape#4032}(`%X%`_shape{lanetype#23136, dim#23136, i#103613}(`I32`_lanetype, `%`_dim{i#103620}(4)))] +[visit_exp shape#4032] +[visit_id shape#4032] +[visit_exp (`%X%`_shape{lanetype#23136, dim#23136, i#103613}(`I32`_lanetype, `%`_dim{i#103620}(4)))] +[visit_exp `%X%`_shape{lanetype#23136, dim#23136, i#103613}(`I32`_lanetype, `%`_dim{i#103620}(4))] +[visit_exp lanetype#23136] +[visit_id lanetype#23136] +[visit_exp dim#23136] +[visit_id dim#23136] +[visit_exp i#103613] +[visit_id i#103613] +[visit_exp (`I32`_lanetype, `%`_dim{i#103620}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#103620}(4)] +[visit_exp i#103620] +[visit_id i#103620] +[visit_exp (4)] +[visit_exp 4] +[check_dims] I dim#23148 i#103625 i#103632 lanetype#23148 shape#4034 +dims \ I = dim#23148, i#103625, i#103632, lanetype#23148, shape#4034 +[visit_exp `VSPLAT`_instr{shape#4034}(`%X%`_shape{lanetype#23148, dim#23148, i#103625}(`I64`_lanetype, `%`_dim{i#103632}(2)))] +[visit_exp shape#4034] +[visit_id shape#4034] +[visit_exp (`%X%`_shape{lanetype#23148, dim#23148, i#103625}(`I64`_lanetype, `%`_dim{i#103632}(2)))] +[visit_exp `%X%`_shape{lanetype#23148, dim#23148, i#103625}(`I64`_lanetype, `%`_dim{i#103632}(2))] +[visit_exp lanetype#23148] +[visit_id lanetype#23148] +[visit_exp dim#23148] +[visit_id dim#23148] +[visit_exp i#103625] +[visit_id i#103625] +[visit_exp (`I64`_lanetype, `%`_dim{i#103632}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#103632}(2)] +[visit_exp i#103632] +[visit_id i#103632] +[visit_exp (2)] +[visit_exp 2] +[check_dims] I dim#23160 i#103637 i#103644 lanetype#23160 shape#4036 +dims \ I = dim#23160, i#103637, i#103644, lanetype#23160, shape#4036 +[visit_exp `VSPLAT`_instr{shape#4036}(`%X%`_shape{lanetype#23160, dim#23160, i#103637}(`F32`_lanetype, `%`_dim{i#103644}(4)))] +[visit_exp shape#4036] +[visit_id shape#4036] +[visit_exp (`%X%`_shape{lanetype#23160, dim#23160, i#103637}(`F32`_lanetype, `%`_dim{i#103644}(4)))] +[visit_exp `%X%`_shape{lanetype#23160, dim#23160, i#103637}(`F32`_lanetype, `%`_dim{i#103644}(4))] +[visit_exp lanetype#23160] +[visit_id lanetype#23160] +[visit_exp dim#23160] +[visit_id dim#23160] +[visit_exp i#103637] +[visit_id i#103637] +[visit_exp (`F32`_lanetype, `%`_dim{i#103644}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#103644}(4)] +[visit_exp i#103644] +[visit_id i#103644] +[visit_exp (4)] +[visit_exp 4] +[check_dims] I dim#23172 i#103649 i#103656 lanetype#23172 shape#4038 +dims \ I = dim#23172, i#103649, i#103656, lanetype#23172, shape#4038 +[visit_exp `VSPLAT`_instr{shape#4038}(`%X%`_shape{lanetype#23172, dim#23172, i#103649}(`F64`_lanetype, `%`_dim{i#103656}(2)))] +[visit_exp shape#4038] +[visit_id shape#4038] +[visit_exp (`%X%`_shape{lanetype#23172, dim#23172, i#103649}(`F64`_lanetype, `%`_dim{i#103656}(2)))] +[visit_exp `%X%`_shape{lanetype#23172, dim#23172, i#103649}(`F64`_lanetype, `%`_dim{i#103656}(2))] +[visit_exp lanetype#23172] +[visit_id lanetype#23172] +[visit_exp dim#23172] +[visit_id dim#23172] +[visit_exp i#103649] +[visit_id i#103649] +[visit_exp (`F64`_lanetype, `%`_dim{i#103656}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#103656}(2)] +[visit_exp i#103656] +[visit_id i#103656] +[visit_exp (2)] +[visit_exp 2] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I dim#23184 i i#103678 i#103685 laneidx#91 lanetype#23184 shape#4040 sx?#71 +dims \ I = dim#23184, i, i#103678, i#103685, laneidx#91, lanetype#23184, shape#4040, sx?#71 +[visit_exp `VEXTRACT_LANE`_instr{shape#4040, `sx?#71`, laneidx#91}(`%X%`_shape{lanetype#23184, dim#23184, i#103678}(`I8`_lanetype, `%`_dim{i#103685}(16)), ?(`S`_sx), i)] +[visit_exp shape#4040] +[visit_id shape#4040] +[visit_exp `sx?#71`] +[visit_id sx?#71] +[visit_exp laneidx#91] +[visit_id laneidx#91] +[visit_exp (`%X%`_shape{lanetype#23184, dim#23184, i#103678}(`I8`_lanetype, `%`_dim{i#103685}(16)), ?(`S`_sx), i)] +[visit_exp `%X%`_shape{lanetype#23184, dim#23184, i#103678}(`I8`_lanetype, `%`_dim{i#103685}(16))] +[visit_exp lanetype#23184] +[visit_id lanetype#23184] +[visit_exp dim#23184] +[visit_id dim#23184] +[visit_exp i#103678] +[visit_id i#103678] +[visit_exp (`I8`_lanetype, `%`_dim{i#103685}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#103685}(16)] +[visit_exp i#103685] +[visit_id i#103685] +[visit_exp (16)] +[visit_exp 16] +[visit_exp ?(`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp i] +[visit_id i] +[visit_exp i] +[visit_id i] not free +[check_dims] I dim#23196 i i#103763 i#103770 laneidx#93 lanetype#23196 shape#4042 sx?#73 +dims \ I = dim#23196, i, i#103763, i#103770, laneidx#93, lanetype#23196, shape#4042, sx?#73 +[visit_exp `VEXTRACT_LANE`_instr{shape#4042, `sx?#73`, laneidx#93}(`%X%`_shape{lanetype#23196, dim#23196, i#103763}(`I8`_lanetype, `%`_dim{i#103770}(16)), ?(`U`_sx), i)] +[visit_exp shape#4042] +[visit_id shape#4042] +[visit_exp `sx?#73`] +[visit_id sx?#73] +[visit_exp laneidx#93] +[visit_id laneidx#93] +[visit_exp (`%X%`_shape{lanetype#23196, dim#23196, i#103763}(`I8`_lanetype, `%`_dim{i#103770}(16)), ?(`U`_sx), i)] +[visit_exp `%X%`_shape{lanetype#23196, dim#23196, i#103763}(`I8`_lanetype, `%`_dim{i#103770}(16))] +[visit_exp lanetype#23196] +[visit_id lanetype#23196] +[visit_exp dim#23196] +[visit_id dim#23196] +[visit_exp i#103763] +[visit_id i#103763] +[visit_exp (`I8`_lanetype, `%`_dim{i#103770}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#103770}(16)] +[visit_exp i#103770] +[visit_id i#103770] +[visit_exp (16)] +[visit_exp 16] +[visit_exp ?(`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp i] +[visit_id i] +[visit_exp i] +[visit_id i] not free +[check_dims] I dim#23208 i i#103848 i#103855 laneidx#95 lanetype#23208 shape#4044 sx?#75 +dims \ I = dim#23208, i, i#103848, i#103855, laneidx#95, lanetype#23208, shape#4044, sx?#75 +[visit_exp `VEXTRACT_LANE`_instr{shape#4044, `sx?#75`, laneidx#95}(`%X%`_shape{lanetype#23208, dim#23208, i#103848}(`I16`_lanetype, `%`_dim{i#103855}(8)), ?(`S`_sx), i)] +[visit_exp shape#4044] +[visit_id shape#4044] +[visit_exp `sx?#75`] +[visit_id sx?#75] +[visit_exp laneidx#95] +[visit_id laneidx#95] +[visit_exp (`%X%`_shape{lanetype#23208, dim#23208, i#103848}(`I16`_lanetype, `%`_dim{i#103855}(8)), ?(`S`_sx), i)] +[visit_exp `%X%`_shape{lanetype#23208, dim#23208, i#103848}(`I16`_lanetype, `%`_dim{i#103855}(8))] +[visit_exp lanetype#23208] +[visit_id lanetype#23208] +[visit_exp dim#23208] +[visit_id dim#23208] +[visit_exp i#103848] +[visit_id i#103848] +[visit_exp (`I16`_lanetype, `%`_dim{i#103855}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#103855}(8)] +[visit_exp i#103855] +[visit_id i#103855] +[visit_exp (8)] +[visit_exp 8] +[visit_exp ?(`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp i] +[visit_id i] +[visit_exp i] +[visit_id i] not free +[check_dims] I dim#23220 i i#103933 i#103940 laneidx#97 lanetype#23220 shape#4046 sx?#77 +dims \ I = dim#23220, i, i#103933, i#103940, laneidx#97, lanetype#23220, shape#4046, sx?#77 +[visit_exp `VEXTRACT_LANE`_instr{shape#4046, `sx?#77`, laneidx#97}(`%X%`_shape{lanetype#23220, dim#23220, i#103933}(`I16`_lanetype, `%`_dim{i#103940}(8)), ?(`U`_sx), i)] +[visit_exp shape#4046] +[visit_id shape#4046] +[visit_exp `sx?#77`] +[visit_id sx?#77] +[visit_exp laneidx#97] +[visit_id laneidx#97] +[visit_exp (`%X%`_shape{lanetype#23220, dim#23220, i#103933}(`I16`_lanetype, `%`_dim{i#103940}(8)), ?(`U`_sx), i)] +[visit_exp `%X%`_shape{lanetype#23220, dim#23220, i#103933}(`I16`_lanetype, `%`_dim{i#103940}(8))] +[visit_exp lanetype#23220] +[visit_id lanetype#23220] +[visit_exp dim#23220] +[visit_id dim#23220] +[visit_exp i#103933] +[visit_id i#103933] +[visit_exp (`I16`_lanetype, `%`_dim{i#103940}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#103940}(8)] +[visit_exp i#103940] +[visit_id i#103940] +[visit_exp (8)] +[visit_exp 8] +[visit_exp ?(`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp i] +[visit_id i] +[visit_exp i] +[visit_id i] not free +[check_dims] I dim#23232 i i#104018 i#104025 laneidx#99 lanetype#23232 shape#4048 sx?#79 +dims \ I = dim#23232, i, i#104018, i#104025, laneidx#99, lanetype#23232, shape#4048, sx?#79 +[visit_exp `VEXTRACT_LANE`_instr{shape#4048, `sx?#79`, laneidx#99}(`%X%`_shape{lanetype#23232, dim#23232, i#104018}(`I32`_lanetype, `%`_dim{i#104025}(4)), ?(), i)] +[visit_exp shape#4048] +[visit_id shape#4048] +[visit_exp `sx?#79`] +[visit_id sx?#79] +[visit_exp laneidx#99] +[visit_id laneidx#99] +[visit_exp (`%X%`_shape{lanetype#23232, dim#23232, i#104018}(`I32`_lanetype, `%`_dim{i#104025}(4)), ?(), i)] +[visit_exp `%X%`_shape{lanetype#23232, dim#23232, i#104018}(`I32`_lanetype, `%`_dim{i#104025}(4))] +[visit_exp lanetype#23232] +[visit_id lanetype#23232] +[visit_exp dim#23232] +[visit_id dim#23232] +[visit_exp i#104018] +[visit_id i#104018] +[visit_exp (`I32`_lanetype, `%`_dim{i#104025}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#104025}(4)] +[visit_exp i#104025] +[visit_id i#104025] +[visit_exp (4)] +[visit_exp 4] +[visit_exp ?()] +[visit_exp i] +[visit_id i] +[visit_exp i] +[visit_id i] not free +[check_dims] I dim#23244 i i#104059 i#104066 laneidx#101 lanetype#23244 shape#4050 sx?#81 +dims \ I = dim#23244, i, i#104059, i#104066, laneidx#101, lanetype#23244, shape#4050, sx?#81 +[visit_exp `VEXTRACT_LANE`_instr{shape#4050, `sx?#81`, laneidx#101}(`%X%`_shape{lanetype#23244, dim#23244, i#104059}(`I64`_lanetype, `%`_dim{i#104066}(2)), ?(), i)] +[visit_exp shape#4050] +[visit_id shape#4050] +[visit_exp `sx?#81`] +[visit_id sx?#81] +[visit_exp laneidx#101] +[visit_id laneidx#101] +[visit_exp (`%X%`_shape{lanetype#23244, dim#23244, i#104059}(`I64`_lanetype, `%`_dim{i#104066}(2)), ?(), i)] +[visit_exp `%X%`_shape{lanetype#23244, dim#23244, i#104059}(`I64`_lanetype, `%`_dim{i#104066}(2))] +[visit_exp lanetype#23244] +[visit_id lanetype#23244] +[visit_exp dim#23244] +[visit_id dim#23244] +[visit_exp i#104059] +[visit_id i#104059] +[visit_exp (`I64`_lanetype, `%`_dim{i#104066}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#104066}(2)] +[visit_exp i#104066] +[visit_id i#104066] +[visit_exp (2)] +[visit_exp 2] +[visit_exp ?()] +[visit_exp i] +[visit_id i] +[visit_exp i] +[visit_id i] not free +[check_dims] I dim#23256 i i#104100 i#104107 laneidx#103 lanetype#23256 shape#4052 sx?#83 +dims \ I = dim#23256, i, i#104100, i#104107, laneidx#103, lanetype#23256, shape#4052, sx?#83 +[visit_exp `VEXTRACT_LANE`_instr{shape#4052, `sx?#83`, laneidx#103}(`%X%`_shape{lanetype#23256, dim#23256, i#104100}(`F32`_lanetype, `%`_dim{i#104107}(4)), ?(), i)] +[visit_exp shape#4052] +[visit_id shape#4052] +[visit_exp `sx?#83`] +[visit_id sx?#83] +[visit_exp laneidx#103] +[visit_id laneidx#103] +[visit_exp (`%X%`_shape{lanetype#23256, dim#23256, i#104100}(`F32`_lanetype, `%`_dim{i#104107}(4)), ?(), i)] +[visit_exp `%X%`_shape{lanetype#23256, dim#23256, i#104100}(`F32`_lanetype, `%`_dim{i#104107}(4))] +[visit_exp lanetype#23256] +[visit_id lanetype#23256] +[visit_exp dim#23256] +[visit_id dim#23256] +[visit_exp i#104100] +[visit_id i#104100] +[visit_exp (`F32`_lanetype, `%`_dim{i#104107}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#104107}(4)] +[visit_exp i#104107] +[visit_id i#104107] +[visit_exp (4)] +[visit_exp 4] +[visit_exp ?()] +[visit_exp i] +[visit_id i] +[visit_exp i] +[visit_id i] not free +[check_dims] I dim#23268 i i#104141 i#104148 laneidx#105 lanetype#23268 shape#4054 sx?#85 +dims \ I = dim#23268, i, i#104141, i#104148, laneidx#105, lanetype#23268, shape#4054, sx?#85 +[visit_exp `VEXTRACT_LANE`_instr{shape#4054, `sx?#85`, laneidx#105}(`%X%`_shape{lanetype#23268, dim#23268, i#104141}(`F64`_lanetype, `%`_dim{i#104148}(2)), ?(), i)] +[visit_exp shape#4054] +[visit_id shape#4054] +[visit_exp `sx?#85`] +[visit_id sx?#85] +[visit_exp laneidx#105] +[visit_id laneidx#105] +[visit_exp (`%X%`_shape{lanetype#23268, dim#23268, i#104141}(`F64`_lanetype, `%`_dim{i#104148}(2)), ?(), i)] +[visit_exp `%X%`_shape{lanetype#23268, dim#23268, i#104141}(`F64`_lanetype, `%`_dim{i#104148}(2))] +[visit_exp lanetype#23268] +[visit_id lanetype#23268] +[visit_exp dim#23268] +[visit_id dim#23268] +[visit_exp i#104141] +[visit_id i#104141] +[visit_exp (`F64`_lanetype, `%`_dim{i#104148}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#104148}(2)] +[visit_exp i#104148] +[visit_id i#104148] +[visit_exp (2)] +[visit_exp 2] +[visit_exp ?()] +[visit_exp i] +[visit_id i] +[visit_exp i] +[visit_id i] not free +[check_dims] I dim#23280 i i#104182 i#104189 laneidx#107 lanetype#23280 shape#4056 +dims \ I = dim#23280, i, i#104182, i#104189, laneidx#107, lanetype#23280, shape#4056 +[visit_exp `VREPLACE_LANE`_instr{shape#4056, laneidx#107}(`%X%`_shape{lanetype#23280, dim#23280, i#104182}(`I8`_lanetype, `%`_dim{i#104189}(16)), i)] +[visit_exp shape#4056] +[visit_id shape#4056] +[visit_exp laneidx#107] +[visit_id laneidx#107] +[visit_exp (`%X%`_shape{lanetype#23280, dim#23280, i#104182}(`I8`_lanetype, `%`_dim{i#104189}(16)), i)] +[visit_exp `%X%`_shape{lanetype#23280, dim#23280, i#104182}(`I8`_lanetype, `%`_dim{i#104189}(16))] +[visit_exp lanetype#23280] +[visit_id lanetype#23280] +[visit_exp dim#23280] +[visit_id dim#23280] +[visit_exp i#104182] +[visit_id i#104182] +[visit_exp (`I8`_lanetype, `%`_dim{i#104189}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#104189}(16)] +[visit_exp i#104189] +[visit_id i#104189] +[visit_exp (16)] +[visit_exp 16] +[visit_exp i] +[visit_id i] +[visit_exp i] +[visit_id i] not free +[check_dims] I dim#23292 i i#104223 i#104230 laneidx#109 lanetype#23292 shape#4058 +dims \ I = dim#23292, i, i#104223, i#104230, laneidx#109, lanetype#23292, shape#4058 +[visit_exp `VREPLACE_LANE`_instr{shape#4058, laneidx#109}(`%X%`_shape{lanetype#23292, dim#23292, i#104223}(`I16`_lanetype, `%`_dim{i#104230}(8)), i)] +[visit_exp shape#4058] +[visit_id shape#4058] +[visit_exp laneidx#109] +[visit_id laneidx#109] +[visit_exp (`%X%`_shape{lanetype#23292, dim#23292, i#104223}(`I16`_lanetype, `%`_dim{i#104230}(8)), i)] +[visit_exp `%X%`_shape{lanetype#23292, dim#23292, i#104223}(`I16`_lanetype, `%`_dim{i#104230}(8))] +[visit_exp lanetype#23292] +[visit_id lanetype#23292] +[visit_exp dim#23292] +[visit_id dim#23292] +[visit_exp i#104223] +[visit_id i#104223] +[visit_exp (`I16`_lanetype, `%`_dim{i#104230}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#104230}(8)] +[visit_exp i#104230] +[visit_id i#104230] +[visit_exp (8)] +[visit_exp 8] +[visit_exp i] +[visit_id i] +[visit_exp i] +[visit_id i] not free +[check_dims] I dim#23304 i i#104264 i#104271 laneidx#111 lanetype#23304 shape#4060 +dims \ I = dim#23304, i, i#104264, i#104271, laneidx#111, lanetype#23304, shape#4060 +[visit_exp `VREPLACE_LANE`_instr{shape#4060, laneidx#111}(`%X%`_shape{lanetype#23304, dim#23304, i#104264}(`I32`_lanetype, `%`_dim{i#104271}(4)), i)] +[visit_exp shape#4060] +[visit_id shape#4060] +[visit_exp laneidx#111] +[visit_id laneidx#111] +[visit_exp (`%X%`_shape{lanetype#23304, dim#23304, i#104264}(`I32`_lanetype, `%`_dim{i#104271}(4)), i)] +[visit_exp `%X%`_shape{lanetype#23304, dim#23304, i#104264}(`I32`_lanetype, `%`_dim{i#104271}(4))] +[visit_exp lanetype#23304] +[visit_id lanetype#23304] +[visit_exp dim#23304] +[visit_id dim#23304] +[visit_exp i#104264] +[visit_id i#104264] +[visit_exp (`I32`_lanetype, `%`_dim{i#104271}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#104271}(4)] +[visit_exp i#104271] +[visit_id i#104271] +[visit_exp (4)] +[visit_exp 4] +[visit_exp i] +[visit_id i] +[visit_exp i] +[visit_id i] not free +[check_dims] I dim#23316 i i#104305 i#104312 laneidx#113 lanetype#23316 shape#4062 +dims \ I = dim#23316, i, i#104305, i#104312, laneidx#113, lanetype#23316, shape#4062 +[visit_exp `VREPLACE_LANE`_instr{shape#4062, laneidx#113}(`%X%`_shape{lanetype#23316, dim#23316, i#104305}(`I64`_lanetype, `%`_dim{i#104312}(2)), i)] +[visit_exp shape#4062] +[visit_id shape#4062] +[visit_exp laneidx#113] +[visit_id laneidx#113] +[visit_exp (`%X%`_shape{lanetype#23316, dim#23316, i#104305}(`I64`_lanetype, `%`_dim{i#104312}(2)), i)] +[visit_exp `%X%`_shape{lanetype#23316, dim#23316, i#104305}(`I64`_lanetype, `%`_dim{i#104312}(2))] +[visit_exp lanetype#23316] +[visit_id lanetype#23316] +[visit_exp dim#23316] +[visit_id dim#23316] +[visit_exp i#104305] +[visit_id i#104305] +[visit_exp (`I64`_lanetype, `%`_dim{i#104312}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#104312}(2)] +[visit_exp i#104312] +[visit_id i#104312] +[visit_exp (2)] +[visit_exp 2] +[visit_exp i] +[visit_id i] +[visit_exp i] +[visit_id i] not free +[check_dims] I dim#23328 i i#104346 i#104353 laneidx#115 lanetype#23328 shape#4064 +dims \ I = dim#23328, i, i#104346, i#104353, laneidx#115, lanetype#23328, shape#4064 +[visit_exp `VREPLACE_LANE`_instr{shape#4064, laneidx#115}(`%X%`_shape{lanetype#23328, dim#23328, i#104346}(`F32`_lanetype, `%`_dim{i#104353}(4)), i)] +[visit_exp shape#4064] +[visit_id shape#4064] +[visit_exp laneidx#115] +[visit_id laneidx#115] +[visit_exp (`%X%`_shape{lanetype#23328, dim#23328, i#104346}(`F32`_lanetype, `%`_dim{i#104353}(4)), i)] +[visit_exp `%X%`_shape{lanetype#23328, dim#23328, i#104346}(`F32`_lanetype, `%`_dim{i#104353}(4))] +[visit_exp lanetype#23328] +[visit_id lanetype#23328] +[visit_exp dim#23328] +[visit_id dim#23328] +[visit_exp i#104346] +[visit_id i#104346] +[visit_exp (`F32`_lanetype, `%`_dim{i#104353}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#104353}(4)] +[visit_exp i#104353] +[visit_id i#104353] +[visit_exp (4)] +[visit_exp 4] +[visit_exp i] +[visit_id i] +[visit_exp i] +[visit_id i] not free +[check_dims] I dim#23340 i i#104387 i#104394 laneidx#117 lanetype#23340 shape#4066 +dims \ I = dim#23340, i, i#104387, i#104394, laneidx#117, lanetype#23340, shape#4066 +[visit_exp `VREPLACE_LANE`_instr{shape#4066, laneidx#117}(`%X%`_shape{lanetype#23340, dim#23340, i#104387}(`F64`_lanetype, `%`_dim{i#104394}(2)), i)] +[visit_exp shape#4066] +[visit_id shape#4066] +[visit_exp laneidx#117] +[visit_id laneidx#117] +[visit_exp (`%X%`_shape{lanetype#23340, dim#23340, i#104387}(`F64`_lanetype, `%`_dim{i#104394}(2)), i)] +[visit_exp `%X%`_shape{lanetype#23340, dim#23340, i#104387}(`F64`_lanetype, `%`_dim{i#104394}(2))] +[visit_exp lanetype#23340] +[visit_id lanetype#23340] +[visit_exp dim#23340] +[visit_id dim#23340] +[visit_exp i#104387] +[visit_id i#104387] +[visit_exp (`F64`_lanetype, `%`_dim{i#104394}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#104394}(2)] +[visit_exp i#104394] +[visit_id i#104394] +[visit_exp (2)] +[visit_exp 2] +[visit_exp i] +[visit_id i] +[visit_exp i] +[visit_id i] not free +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I vectype#316 vvtestop#9 +dims \ I = vectype#316, vvtestop#9 +[visit_exp `VVTESTOP`_instr{vectype#316, vvtestop#9}(`V128`_vectype, `ANY_TRUE`_vvtestop)] +[visit_exp vectype#316] +[visit_id vectype#316] +[visit_exp vvtestop#9] +[visit_id vvtestop#9] +[visit_exp (`V128`_vectype, `ANY_TRUE`_vvtestop)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp `ANY_TRUE`_vvtestop] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I dim#23352 i#104411 i#104418 lanetype#23352 shape#4068 +dims \ I = dim#23352, i#104411, i#104418, lanetype#23352, shape#4068 +[visit_exp `VTESTOP`_instr{shape#4068}(`%X%`_shape{lanetype#23352, dim#23352, i#104411}(`I8`_lanetype, `%`_dim{i#104418}(16)), `ALL_TRUE`_vtestop_)] +[visit_exp shape#4068] +[visit_id shape#4068] +[visit_exp (`%X%`_shape{lanetype#23352, dim#23352, i#104411}(`I8`_lanetype, `%`_dim{i#104418}(16)), `ALL_TRUE`_vtestop_)] +[visit_exp `%X%`_shape{lanetype#23352, dim#23352, i#104411}(`I8`_lanetype, `%`_dim{i#104418}(16))] +[visit_exp lanetype#23352] +[visit_id lanetype#23352] +[visit_exp dim#23352] +[visit_id dim#23352] +[visit_exp i#104411] +[visit_id i#104411] +[visit_exp (`I8`_lanetype, `%`_dim{i#104418}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#104418}(16)] +[visit_exp i#104418] +[visit_id i#104418] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `ALL_TRUE`_vtestop_] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I dim#23379 i#104468 i#104475 lanetype#23379 shape#4070 +dims \ I = dim#23379, i#104468, i#104475, lanetype#23379, shape#4070 +[visit_exp `VTESTOP`_instr{shape#4070}(`%X%`_shape{lanetype#23379, dim#23379, i#104468}(`I16`_lanetype, `%`_dim{i#104475}(8)), `ALL_TRUE`_vtestop_)] +[visit_exp shape#4070] +[visit_id shape#4070] +[visit_exp (`%X%`_shape{lanetype#23379, dim#23379, i#104468}(`I16`_lanetype, `%`_dim{i#104475}(8)), `ALL_TRUE`_vtestop_)] +[visit_exp `%X%`_shape{lanetype#23379, dim#23379, i#104468}(`I16`_lanetype, `%`_dim{i#104475}(8))] +[visit_exp lanetype#23379] +[visit_id lanetype#23379] +[visit_exp dim#23379] +[visit_id dim#23379] +[visit_exp i#104468] +[visit_id i#104468] +[visit_exp (`I16`_lanetype, `%`_dim{i#104475}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#104475}(8)] +[visit_exp i#104475] +[visit_id i#104475] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `ALL_TRUE`_vtestop_] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I dim#23406 i#104525 i#104532 lanetype#23406 shape#4072 +dims \ I = dim#23406, i#104525, i#104532, lanetype#23406, shape#4072 +[visit_exp `VTESTOP`_instr{shape#4072}(`%X%`_shape{lanetype#23406, dim#23406, i#104525}(`I32`_lanetype, `%`_dim{i#104532}(4)), `ALL_TRUE`_vtestop_)] +[visit_exp shape#4072] +[visit_id shape#4072] +[visit_exp (`%X%`_shape{lanetype#23406, dim#23406, i#104525}(`I32`_lanetype, `%`_dim{i#104532}(4)), `ALL_TRUE`_vtestop_)] +[visit_exp `%X%`_shape{lanetype#23406, dim#23406, i#104525}(`I32`_lanetype, `%`_dim{i#104532}(4))] +[visit_exp lanetype#23406] +[visit_id lanetype#23406] +[visit_exp dim#23406] +[visit_id dim#23406] +[visit_exp i#104525] +[visit_id i#104525] +[visit_exp (`I32`_lanetype, `%`_dim{i#104532}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#104532}(4)] +[visit_exp i#104532] +[visit_id i#104532] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `ALL_TRUE`_vtestop_] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I dim#23433 i#104582 i#104589 lanetype#23433 shape#4074 +dims \ I = dim#23433, i#104582, i#104589, lanetype#23433, shape#4074 +[visit_exp `VTESTOP`_instr{shape#4074}(`%X%`_shape{lanetype#23433, dim#23433, i#104582}(`I64`_lanetype, `%`_dim{i#104589}(2)), `ALL_TRUE`_vtestop_)] +[visit_exp shape#4074] +[visit_id shape#4074] +[visit_exp (`%X%`_shape{lanetype#23433, dim#23433, i#104582}(`I64`_lanetype, `%`_dim{i#104589}(2)), `ALL_TRUE`_vtestop_)] +[visit_exp `%X%`_shape{lanetype#23433, dim#23433, i#104582}(`I64`_lanetype, `%`_dim{i#104589}(2))] +[visit_exp lanetype#23433] +[visit_id lanetype#23433] +[visit_exp dim#23433] +[visit_id dim#23433] +[visit_exp i#104582] +[visit_id i#104582] +[visit_exp (`I64`_lanetype, `%`_dim{i#104589}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#104589}(2)] +[visit_exp i#104589] +[visit_id i#104589] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `ALL_TRUE`_vtestop_] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I dim#23460 i#104639 i#104646 lanetype#23460 shape#4076 +dims \ I = dim#23460, i#104639, i#104646, lanetype#23460, shape#4076 +[visit_exp `VRELOP`_instr{shape#4076}(`%X%`_shape{lanetype#23460, dim#23460, i#104639}(`I8`_lanetype, `%`_dim{i#104646}(16)), `EQ`_vrelop_)] +[visit_exp shape#4076] +[visit_id shape#4076] +[visit_exp (`%X%`_shape{lanetype#23460, dim#23460, i#104639}(`I8`_lanetype, `%`_dim{i#104646}(16)), `EQ`_vrelop_)] +[visit_exp `%X%`_shape{lanetype#23460, dim#23460, i#104639}(`I8`_lanetype, `%`_dim{i#104646}(16))] +[visit_exp lanetype#23460] +[visit_id lanetype#23460] +[visit_exp dim#23460] +[visit_id dim#23460] +[visit_exp i#104639] +[visit_id i#104639] +[visit_exp (`I8`_lanetype, `%`_dim{i#104646}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#104646}(16)] +[visit_exp i#104646] +[visit_id i#104646] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `EQ`_vrelop_] +[visit_exp ()] +[check_dims] I dim#23487 i#104696 i#104703 lanetype#23487 shape#4078 +dims \ I = dim#23487, i#104696, i#104703, lanetype#23487, shape#4078 +[visit_exp `VRELOP`_instr{shape#4078}(`%X%`_shape{lanetype#23487, dim#23487, i#104696}(`I8`_lanetype, `%`_dim{i#104703}(16)), `NE`_vrelop_)] +[visit_exp shape#4078] +[visit_id shape#4078] +[visit_exp (`%X%`_shape{lanetype#23487, dim#23487, i#104696}(`I8`_lanetype, `%`_dim{i#104703}(16)), `NE`_vrelop_)] +[visit_exp `%X%`_shape{lanetype#23487, dim#23487, i#104696}(`I8`_lanetype, `%`_dim{i#104703}(16))] +[visit_exp lanetype#23487] +[visit_id lanetype#23487] +[visit_exp dim#23487] +[visit_id dim#23487] +[visit_exp i#104696] +[visit_id i#104696] +[visit_exp (`I8`_lanetype, `%`_dim{i#104703}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#104703}(16)] +[visit_exp i#104703] +[visit_id i#104703] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `NE`_vrelop_] +[visit_exp ()] +[check_dims] I dim#23514 i#104753 i#104760 lanetype#23514 shape#4080 sx#21962 +dims \ I = dim#23514, i#104753, i#104760, lanetype#23514, shape#4080, sx#21962 +[visit_exp `VRELOP`_instr{shape#4080}(`%X%`_shape{lanetype#23514, dim#23514, i#104753}(`I8`_lanetype, `%`_dim{i#104760}(16)), `LT`_vrelop_{sx#21962}(`S`_sx))] +[visit_exp shape#4080] +[visit_id shape#4080] +[visit_exp (`%X%`_shape{lanetype#23514, dim#23514, i#104753}(`I8`_lanetype, `%`_dim{i#104760}(16)), `LT`_vrelop_{sx#21962}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#23514, dim#23514, i#104753}(`I8`_lanetype, `%`_dim{i#104760}(16))] +[visit_exp lanetype#23514] +[visit_id lanetype#23514] +[visit_exp dim#23514] +[visit_id dim#23514] +[visit_exp i#104753] +[visit_id i#104753] +[visit_exp (`I8`_lanetype, `%`_dim{i#104760}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#104760}(16)] +[visit_exp i#104760] +[visit_id i#104760] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `LT`_vrelop_{sx#21962}(`S`_sx)] +[visit_exp sx#21962] +[visit_id sx#21962] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I dim#23556 i#104855 i#104862 lanetype#23556 shape#4082 sx#22086 +dims \ I = dim#23556, i#104855, i#104862, lanetype#23556, shape#4082, sx#22086 +[visit_exp `VRELOP`_instr{shape#4082}(`%X%`_shape{lanetype#23556, dim#23556, i#104855}(`I8`_lanetype, `%`_dim{i#104862}(16)), `LT`_vrelop_{sx#22086}(`U`_sx))] +[visit_exp shape#4082] +[visit_id shape#4082] +[visit_exp (`%X%`_shape{lanetype#23556, dim#23556, i#104855}(`I8`_lanetype, `%`_dim{i#104862}(16)), `LT`_vrelop_{sx#22086}(`U`_sx))] +[visit_exp `%X%`_shape{lanetype#23556, dim#23556, i#104855}(`I8`_lanetype, `%`_dim{i#104862}(16))] +[visit_exp lanetype#23556] +[visit_id lanetype#23556] +[visit_exp dim#23556] +[visit_id dim#23556] +[visit_exp i#104855] +[visit_id i#104855] +[visit_exp (`I8`_lanetype, `%`_dim{i#104862}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#104862}(16)] +[visit_exp i#104862] +[visit_id i#104862] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `LT`_vrelop_{sx#22086}(`U`_sx)] +[visit_exp sx#22086] +[visit_id sx#22086] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I dim#23598 i#104957 i#104964 lanetype#23598 shape#4084 sx#22210 +dims \ I = dim#23598, i#104957, i#104964, lanetype#23598, shape#4084, sx#22210 +[visit_exp `VRELOP`_instr{shape#4084}(`%X%`_shape{lanetype#23598, dim#23598, i#104957}(`I8`_lanetype, `%`_dim{i#104964}(16)), `GT`_vrelop_{sx#22210}(`S`_sx))] +[visit_exp shape#4084] +[visit_id shape#4084] +[visit_exp (`%X%`_shape{lanetype#23598, dim#23598, i#104957}(`I8`_lanetype, `%`_dim{i#104964}(16)), `GT`_vrelop_{sx#22210}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#23598, dim#23598, i#104957}(`I8`_lanetype, `%`_dim{i#104964}(16))] +[visit_exp lanetype#23598] +[visit_id lanetype#23598] +[visit_exp dim#23598] +[visit_id dim#23598] +[visit_exp i#104957] +[visit_id i#104957] +[visit_exp (`I8`_lanetype, `%`_dim{i#104964}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#104964}(16)] +[visit_exp i#104964] +[visit_id i#104964] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `GT`_vrelop_{sx#22210}(`S`_sx)] +[visit_exp sx#22210] +[visit_id sx#22210] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I dim#23640 i#105059 i#105066 lanetype#23640 shape#4086 sx#22334 +dims \ I = dim#23640, i#105059, i#105066, lanetype#23640, shape#4086, sx#22334 +[visit_exp `VRELOP`_instr{shape#4086}(`%X%`_shape{lanetype#23640, dim#23640, i#105059}(`I8`_lanetype, `%`_dim{i#105066}(16)), `GT`_vrelop_{sx#22334}(`U`_sx))] +[visit_exp shape#4086] +[visit_id shape#4086] +[visit_exp (`%X%`_shape{lanetype#23640, dim#23640, i#105059}(`I8`_lanetype, `%`_dim{i#105066}(16)), `GT`_vrelop_{sx#22334}(`U`_sx))] +[visit_exp `%X%`_shape{lanetype#23640, dim#23640, i#105059}(`I8`_lanetype, `%`_dim{i#105066}(16))] +[visit_exp lanetype#23640] +[visit_id lanetype#23640] +[visit_exp dim#23640] +[visit_id dim#23640] +[visit_exp i#105059] +[visit_id i#105059] +[visit_exp (`I8`_lanetype, `%`_dim{i#105066}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#105066}(16)] +[visit_exp i#105066] +[visit_id i#105066] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `GT`_vrelop_{sx#22334}(`U`_sx)] +[visit_exp sx#22334] +[visit_id sx#22334] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I dim#23682 i#105161 i#105168 lanetype#23682 shape#4088 sx#22458 +dims \ I = dim#23682, i#105161, i#105168, lanetype#23682, shape#4088, sx#22458 +[visit_exp `VRELOP`_instr{shape#4088}(`%X%`_shape{lanetype#23682, dim#23682, i#105161}(`I8`_lanetype, `%`_dim{i#105168}(16)), `LE`_vrelop_{sx#22458}(`S`_sx))] +[visit_exp shape#4088] +[visit_id shape#4088] +[visit_exp (`%X%`_shape{lanetype#23682, dim#23682, i#105161}(`I8`_lanetype, `%`_dim{i#105168}(16)), `LE`_vrelop_{sx#22458}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#23682, dim#23682, i#105161}(`I8`_lanetype, `%`_dim{i#105168}(16))] +[visit_exp lanetype#23682] +[visit_id lanetype#23682] +[visit_exp dim#23682] +[visit_id dim#23682] +[visit_exp i#105161] +[visit_id i#105161] +[visit_exp (`I8`_lanetype, `%`_dim{i#105168}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#105168}(16)] +[visit_exp i#105168] +[visit_id i#105168] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `LE`_vrelop_{sx#22458}(`S`_sx)] +[visit_exp sx#22458] +[visit_id sx#22458] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I dim#23724 i#105263 i#105270 lanetype#23724 shape#4090 sx#22582 +dims \ I = dim#23724, i#105263, i#105270, lanetype#23724, shape#4090, sx#22582 +[visit_exp `VRELOP`_instr{shape#4090}(`%X%`_shape{lanetype#23724, dim#23724, i#105263}(`I8`_lanetype, `%`_dim{i#105270}(16)), `LE`_vrelop_{sx#22582}(`U`_sx))] +[visit_exp shape#4090] +[visit_id shape#4090] +[visit_exp (`%X%`_shape{lanetype#23724, dim#23724, i#105263}(`I8`_lanetype, `%`_dim{i#105270}(16)), `LE`_vrelop_{sx#22582}(`U`_sx))] +[visit_exp `%X%`_shape{lanetype#23724, dim#23724, i#105263}(`I8`_lanetype, `%`_dim{i#105270}(16))] +[visit_exp lanetype#23724] +[visit_id lanetype#23724] +[visit_exp dim#23724] +[visit_id dim#23724] +[visit_exp i#105263] +[visit_id i#105263] +[visit_exp (`I8`_lanetype, `%`_dim{i#105270}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#105270}(16)] +[visit_exp i#105270] +[visit_id i#105270] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `LE`_vrelop_{sx#22582}(`U`_sx)] +[visit_exp sx#22582] +[visit_id sx#22582] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I dim#23766 i#105365 i#105372 lanetype#23766 shape#4092 sx#22706 +dims \ I = dim#23766, i#105365, i#105372, lanetype#23766, shape#4092, sx#22706 +[visit_exp `VRELOP`_instr{shape#4092}(`%X%`_shape{lanetype#23766, dim#23766, i#105365}(`I8`_lanetype, `%`_dim{i#105372}(16)), `GE`_vrelop_{sx#22706}(`S`_sx))] +[visit_exp shape#4092] +[visit_id shape#4092] +[visit_exp (`%X%`_shape{lanetype#23766, dim#23766, i#105365}(`I8`_lanetype, `%`_dim{i#105372}(16)), `GE`_vrelop_{sx#22706}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#23766, dim#23766, i#105365}(`I8`_lanetype, `%`_dim{i#105372}(16))] +[visit_exp lanetype#23766] +[visit_id lanetype#23766] +[visit_exp dim#23766] +[visit_id dim#23766] +[visit_exp i#105365] +[visit_id i#105365] +[visit_exp (`I8`_lanetype, `%`_dim{i#105372}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#105372}(16)] +[visit_exp i#105372] +[visit_id i#105372] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `GE`_vrelop_{sx#22706}(`S`_sx)] +[visit_exp sx#22706] +[visit_id sx#22706] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I dim#23808 i#105467 i#105474 lanetype#23808 shape#4094 sx#22830 +dims \ I = dim#23808, i#105467, i#105474, lanetype#23808, shape#4094, sx#22830 +[visit_exp `VRELOP`_instr{shape#4094}(`%X%`_shape{lanetype#23808, dim#23808, i#105467}(`I8`_lanetype, `%`_dim{i#105474}(16)), `GE`_vrelop_{sx#22830}(`U`_sx))] +[visit_exp shape#4094] +[visit_id shape#4094] +[visit_exp (`%X%`_shape{lanetype#23808, dim#23808, i#105467}(`I8`_lanetype, `%`_dim{i#105474}(16)), `GE`_vrelop_{sx#22830}(`U`_sx))] +[visit_exp `%X%`_shape{lanetype#23808, dim#23808, i#105467}(`I8`_lanetype, `%`_dim{i#105474}(16))] +[visit_exp lanetype#23808] +[visit_id lanetype#23808] +[visit_exp dim#23808] +[visit_id dim#23808] +[visit_exp i#105467] +[visit_id i#105467] +[visit_exp (`I8`_lanetype, `%`_dim{i#105474}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#105474}(16)] +[visit_exp i#105474] +[visit_id i#105474] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `GE`_vrelop_{sx#22830}(`U`_sx)] +[visit_exp sx#22830] +[visit_id sx#22830] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I dim#23850 i#105569 i#105576 lanetype#23850 shape#4096 +dims \ I = dim#23850, i#105569, i#105576, lanetype#23850, shape#4096 +[visit_exp `VRELOP`_instr{shape#4096}(`%X%`_shape{lanetype#23850, dim#23850, i#105569}(`I16`_lanetype, `%`_dim{i#105576}(8)), `EQ`_vrelop_)] +[visit_exp shape#4096] +[visit_id shape#4096] +[visit_exp (`%X%`_shape{lanetype#23850, dim#23850, i#105569}(`I16`_lanetype, `%`_dim{i#105576}(8)), `EQ`_vrelop_)] +[visit_exp `%X%`_shape{lanetype#23850, dim#23850, i#105569}(`I16`_lanetype, `%`_dim{i#105576}(8))] +[visit_exp lanetype#23850] +[visit_id lanetype#23850] +[visit_exp dim#23850] +[visit_id dim#23850] +[visit_exp i#105569] +[visit_id i#105569] +[visit_exp (`I16`_lanetype, `%`_dim{i#105576}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#105576}(8)] +[visit_exp i#105576] +[visit_id i#105576] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `EQ`_vrelop_] +[visit_exp ()] +[check_dims] I dim#23877 i#105626 i#105633 lanetype#23877 shape#4098 +dims \ I = dim#23877, i#105626, i#105633, lanetype#23877, shape#4098 +[visit_exp `VRELOP`_instr{shape#4098}(`%X%`_shape{lanetype#23877, dim#23877, i#105626}(`I16`_lanetype, `%`_dim{i#105633}(8)), `NE`_vrelop_)] +[visit_exp shape#4098] +[visit_id shape#4098] +[visit_exp (`%X%`_shape{lanetype#23877, dim#23877, i#105626}(`I16`_lanetype, `%`_dim{i#105633}(8)), `NE`_vrelop_)] +[visit_exp `%X%`_shape{lanetype#23877, dim#23877, i#105626}(`I16`_lanetype, `%`_dim{i#105633}(8))] +[visit_exp lanetype#23877] +[visit_id lanetype#23877] +[visit_exp dim#23877] +[visit_id dim#23877] +[visit_exp i#105626] +[visit_id i#105626] +[visit_exp (`I16`_lanetype, `%`_dim{i#105633}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#105633}(8)] +[visit_exp i#105633] +[visit_id i#105633] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `NE`_vrelop_] +[visit_exp ()] +[check_dims] I dim#23904 i#105683 i#105690 lanetype#23904 shape#4100 sx#23074 +dims \ I = dim#23904, i#105683, i#105690, lanetype#23904, shape#4100, sx#23074 +[visit_exp `VRELOP`_instr{shape#4100}(`%X%`_shape{lanetype#23904, dim#23904, i#105683}(`I16`_lanetype, `%`_dim{i#105690}(8)), `LT`_vrelop_{sx#23074}(`S`_sx))] +[visit_exp shape#4100] +[visit_id shape#4100] +[visit_exp (`%X%`_shape{lanetype#23904, dim#23904, i#105683}(`I16`_lanetype, `%`_dim{i#105690}(8)), `LT`_vrelop_{sx#23074}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#23904, dim#23904, i#105683}(`I16`_lanetype, `%`_dim{i#105690}(8))] +[visit_exp lanetype#23904] +[visit_id lanetype#23904] +[visit_exp dim#23904] +[visit_id dim#23904] +[visit_exp i#105683] +[visit_id i#105683] +[visit_exp (`I16`_lanetype, `%`_dim{i#105690}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#105690}(8)] +[visit_exp i#105690] +[visit_id i#105690] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `LT`_vrelop_{sx#23074}(`S`_sx)] +[visit_exp sx#23074] +[visit_id sx#23074] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I dim#23946 i#105785 i#105792 lanetype#23946 shape#4102 sx#23198 +dims \ I = dim#23946, i#105785, i#105792, lanetype#23946, shape#4102, sx#23198 +[visit_exp `VRELOP`_instr{shape#4102}(`%X%`_shape{lanetype#23946, dim#23946, i#105785}(`I16`_lanetype, `%`_dim{i#105792}(8)), `LT`_vrelop_{sx#23198}(`U`_sx))] +[visit_exp shape#4102] +[visit_id shape#4102] +[visit_exp (`%X%`_shape{lanetype#23946, dim#23946, i#105785}(`I16`_lanetype, `%`_dim{i#105792}(8)), `LT`_vrelop_{sx#23198}(`U`_sx))] +[visit_exp `%X%`_shape{lanetype#23946, dim#23946, i#105785}(`I16`_lanetype, `%`_dim{i#105792}(8))] +[visit_exp lanetype#23946] +[visit_id lanetype#23946] +[visit_exp dim#23946] +[visit_id dim#23946] +[visit_exp i#105785] +[visit_id i#105785] +[visit_exp (`I16`_lanetype, `%`_dim{i#105792}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#105792}(8)] +[visit_exp i#105792] +[visit_id i#105792] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `LT`_vrelop_{sx#23198}(`U`_sx)] +[visit_exp sx#23198] +[visit_id sx#23198] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I dim#23988 i#105887 i#105894 lanetype#23988 shape#4104 sx#23322 +dims \ I = dim#23988, i#105887, i#105894, lanetype#23988, shape#4104, sx#23322 +[visit_exp `VRELOP`_instr{shape#4104}(`%X%`_shape{lanetype#23988, dim#23988, i#105887}(`I16`_lanetype, `%`_dim{i#105894}(8)), `GT`_vrelop_{sx#23322}(`S`_sx))] +[visit_exp shape#4104] +[visit_id shape#4104] +[visit_exp (`%X%`_shape{lanetype#23988, dim#23988, i#105887}(`I16`_lanetype, `%`_dim{i#105894}(8)), `GT`_vrelop_{sx#23322}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#23988, dim#23988, i#105887}(`I16`_lanetype, `%`_dim{i#105894}(8))] +[visit_exp lanetype#23988] +[visit_id lanetype#23988] +[visit_exp dim#23988] +[visit_id dim#23988] +[visit_exp i#105887] +[visit_id i#105887] +[visit_exp (`I16`_lanetype, `%`_dim{i#105894}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#105894}(8)] +[visit_exp i#105894] +[visit_id i#105894] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `GT`_vrelop_{sx#23322}(`S`_sx)] +[visit_exp sx#23322] +[visit_id sx#23322] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I dim#24030 i#105989 i#105996 lanetype#24030 shape#4106 sx#23446 +dims \ I = dim#24030, i#105989, i#105996, lanetype#24030, shape#4106, sx#23446 +[visit_exp `VRELOP`_instr{shape#4106}(`%X%`_shape{lanetype#24030, dim#24030, i#105989}(`I16`_lanetype, `%`_dim{i#105996}(8)), `GT`_vrelop_{sx#23446}(`U`_sx))] +[visit_exp shape#4106] +[visit_id shape#4106] +[visit_exp (`%X%`_shape{lanetype#24030, dim#24030, i#105989}(`I16`_lanetype, `%`_dim{i#105996}(8)), `GT`_vrelop_{sx#23446}(`U`_sx))] +[visit_exp `%X%`_shape{lanetype#24030, dim#24030, i#105989}(`I16`_lanetype, `%`_dim{i#105996}(8))] +[visit_exp lanetype#24030] +[visit_id lanetype#24030] +[visit_exp dim#24030] +[visit_id dim#24030] +[visit_exp i#105989] +[visit_id i#105989] +[visit_exp (`I16`_lanetype, `%`_dim{i#105996}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#105996}(8)] +[visit_exp i#105996] +[visit_id i#105996] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `GT`_vrelop_{sx#23446}(`U`_sx)] +[visit_exp sx#23446] +[visit_id sx#23446] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I dim#24072 i#106091 i#106098 lanetype#24072 shape#4108 sx#23570 +dims \ I = dim#24072, i#106091, i#106098, lanetype#24072, shape#4108, sx#23570 +[visit_exp `VRELOP`_instr{shape#4108}(`%X%`_shape{lanetype#24072, dim#24072, i#106091}(`I16`_lanetype, `%`_dim{i#106098}(8)), `LE`_vrelop_{sx#23570}(`S`_sx))] +[visit_exp shape#4108] +[visit_id shape#4108] +[visit_exp (`%X%`_shape{lanetype#24072, dim#24072, i#106091}(`I16`_lanetype, `%`_dim{i#106098}(8)), `LE`_vrelop_{sx#23570}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#24072, dim#24072, i#106091}(`I16`_lanetype, `%`_dim{i#106098}(8))] +[visit_exp lanetype#24072] +[visit_id lanetype#24072] +[visit_exp dim#24072] +[visit_id dim#24072] +[visit_exp i#106091] +[visit_id i#106091] +[visit_exp (`I16`_lanetype, `%`_dim{i#106098}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#106098}(8)] +[visit_exp i#106098] +[visit_id i#106098] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `LE`_vrelop_{sx#23570}(`S`_sx)] +[visit_exp sx#23570] +[visit_id sx#23570] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I dim#24114 i#106193 i#106200 lanetype#24114 shape#4110 sx#23694 +dims \ I = dim#24114, i#106193, i#106200, lanetype#24114, shape#4110, sx#23694 +[visit_exp `VRELOP`_instr{shape#4110}(`%X%`_shape{lanetype#24114, dim#24114, i#106193}(`I16`_lanetype, `%`_dim{i#106200}(8)), `LE`_vrelop_{sx#23694}(`U`_sx))] +[visit_exp shape#4110] +[visit_id shape#4110] +[visit_exp (`%X%`_shape{lanetype#24114, dim#24114, i#106193}(`I16`_lanetype, `%`_dim{i#106200}(8)), `LE`_vrelop_{sx#23694}(`U`_sx))] +[visit_exp `%X%`_shape{lanetype#24114, dim#24114, i#106193}(`I16`_lanetype, `%`_dim{i#106200}(8))] +[visit_exp lanetype#24114] +[visit_id lanetype#24114] +[visit_exp dim#24114] +[visit_id dim#24114] +[visit_exp i#106193] +[visit_id i#106193] +[visit_exp (`I16`_lanetype, `%`_dim{i#106200}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#106200}(8)] +[visit_exp i#106200] +[visit_id i#106200] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `LE`_vrelop_{sx#23694}(`U`_sx)] +[visit_exp sx#23694] +[visit_id sx#23694] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I dim#24156 i#106295 i#106302 lanetype#24156 shape#4112 sx#23818 +dims \ I = dim#24156, i#106295, i#106302, lanetype#24156, shape#4112, sx#23818 +[visit_exp `VRELOP`_instr{shape#4112}(`%X%`_shape{lanetype#24156, dim#24156, i#106295}(`I16`_lanetype, `%`_dim{i#106302}(8)), `GE`_vrelop_{sx#23818}(`S`_sx))] +[visit_exp shape#4112] +[visit_id shape#4112] +[visit_exp (`%X%`_shape{lanetype#24156, dim#24156, i#106295}(`I16`_lanetype, `%`_dim{i#106302}(8)), `GE`_vrelop_{sx#23818}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#24156, dim#24156, i#106295}(`I16`_lanetype, `%`_dim{i#106302}(8))] +[visit_exp lanetype#24156] +[visit_id lanetype#24156] +[visit_exp dim#24156] +[visit_id dim#24156] +[visit_exp i#106295] +[visit_id i#106295] +[visit_exp (`I16`_lanetype, `%`_dim{i#106302}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#106302}(8)] +[visit_exp i#106302] +[visit_id i#106302] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `GE`_vrelop_{sx#23818}(`S`_sx)] +[visit_exp sx#23818] +[visit_id sx#23818] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I dim#24198 i#106397 i#106404 lanetype#24198 shape#4114 sx#23942 +dims \ I = dim#24198, i#106397, i#106404, lanetype#24198, shape#4114, sx#23942 +[visit_exp `VRELOP`_instr{shape#4114}(`%X%`_shape{lanetype#24198, dim#24198, i#106397}(`I16`_lanetype, `%`_dim{i#106404}(8)), `GE`_vrelop_{sx#23942}(`U`_sx))] +[visit_exp shape#4114] +[visit_id shape#4114] +[visit_exp (`%X%`_shape{lanetype#24198, dim#24198, i#106397}(`I16`_lanetype, `%`_dim{i#106404}(8)), `GE`_vrelop_{sx#23942}(`U`_sx))] +[visit_exp `%X%`_shape{lanetype#24198, dim#24198, i#106397}(`I16`_lanetype, `%`_dim{i#106404}(8))] +[visit_exp lanetype#24198] +[visit_id lanetype#24198] +[visit_exp dim#24198] +[visit_id dim#24198] +[visit_exp i#106397] +[visit_id i#106397] +[visit_exp (`I16`_lanetype, `%`_dim{i#106404}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#106404}(8)] +[visit_exp i#106404] +[visit_id i#106404] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `GE`_vrelop_{sx#23942}(`U`_sx)] +[visit_exp sx#23942] +[visit_id sx#23942] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I dim#24240 i#106499 i#106506 lanetype#24240 shape#4116 +dims \ I = dim#24240, i#106499, i#106506, lanetype#24240, shape#4116 +[visit_exp `VRELOP`_instr{shape#4116}(`%X%`_shape{lanetype#24240, dim#24240, i#106499}(`I32`_lanetype, `%`_dim{i#106506}(4)), `EQ`_vrelop_)] +[visit_exp shape#4116] +[visit_id shape#4116] +[visit_exp (`%X%`_shape{lanetype#24240, dim#24240, i#106499}(`I32`_lanetype, `%`_dim{i#106506}(4)), `EQ`_vrelop_)] +[visit_exp `%X%`_shape{lanetype#24240, dim#24240, i#106499}(`I32`_lanetype, `%`_dim{i#106506}(4))] +[visit_exp lanetype#24240] +[visit_id lanetype#24240] +[visit_exp dim#24240] +[visit_id dim#24240] +[visit_exp i#106499] +[visit_id i#106499] +[visit_exp (`I32`_lanetype, `%`_dim{i#106506}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#106506}(4)] +[visit_exp i#106506] +[visit_id i#106506] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `EQ`_vrelop_] +[visit_exp ()] +[check_dims] I dim#24267 i#106556 i#106563 lanetype#24267 shape#4118 +dims \ I = dim#24267, i#106556, i#106563, lanetype#24267, shape#4118 +[visit_exp `VRELOP`_instr{shape#4118}(`%X%`_shape{lanetype#24267, dim#24267, i#106556}(`I32`_lanetype, `%`_dim{i#106563}(4)), `NE`_vrelop_)] +[visit_exp shape#4118] +[visit_id shape#4118] +[visit_exp (`%X%`_shape{lanetype#24267, dim#24267, i#106556}(`I32`_lanetype, `%`_dim{i#106563}(4)), `NE`_vrelop_)] +[visit_exp `%X%`_shape{lanetype#24267, dim#24267, i#106556}(`I32`_lanetype, `%`_dim{i#106563}(4))] +[visit_exp lanetype#24267] +[visit_id lanetype#24267] +[visit_exp dim#24267] +[visit_id dim#24267] +[visit_exp i#106556] +[visit_id i#106556] +[visit_exp (`I32`_lanetype, `%`_dim{i#106563}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#106563}(4)] +[visit_exp i#106563] +[visit_id i#106563] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `NE`_vrelop_] +[visit_exp ()] +[check_dims] I dim#24294 i#106613 i#106620 lanetype#24294 shape#4120 sx#24186 +dims \ I = dim#24294, i#106613, i#106620, lanetype#24294, shape#4120, sx#24186 +[visit_exp `VRELOP`_instr{shape#4120}(`%X%`_shape{lanetype#24294, dim#24294, i#106613}(`I32`_lanetype, `%`_dim{i#106620}(4)), `LT`_vrelop_{sx#24186}(`S`_sx))] +[visit_exp shape#4120] +[visit_id shape#4120] +[visit_exp (`%X%`_shape{lanetype#24294, dim#24294, i#106613}(`I32`_lanetype, `%`_dim{i#106620}(4)), `LT`_vrelop_{sx#24186}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#24294, dim#24294, i#106613}(`I32`_lanetype, `%`_dim{i#106620}(4))] +[visit_exp lanetype#24294] +[visit_id lanetype#24294] +[visit_exp dim#24294] +[visit_id dim#24294] +[visit_exp i#106613] +[visit_id i#106613] +[visit_exp (`I32`_lanetype, `%`_dim{i#106620}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#106620}(4)] +[visit_exp i#106620] +[visit_id i#106620] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `LT`_vrelop_{sx#24186}(`S`_sx)] +[visit_exp sx#24186] +[visit_id sx#24186] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I dim#24336 i#106715 i#106722 lanetype#24336 shape#4122 sx#24310 +dims \ I = dim#24336, i#106715, i#106722, lanetype#24336, shape#4122, sx#24310 +[visit_exp `VRELOP`_instr{shape#4122}(`%X%`_shape{lanetype#24336, dim#24336, i#106715}(`I32`_lanetype, `%`_dim{i#106722}(4)), `LT`_vrelop_{sx#24310}(`U`_sx))] +[visit_exp shape#4122] +[visit_id shape#4122] +[visit_exp (`%X%`_shape{lanetype#24336, dim#24336, i#106715}(`I32`_lanetype, `%`_dim{i#106722}(4)), `LT`_vrelop_{sx#24310}(`U`_sx))] +[visit_exp `%X%`_shape{lanetype#24336, dim#24336, i#106715}(`I32`_lanetype, `%`_dim{i#106722}(4))] +[visit_exp lanetype#24336] +[visit_id lanetype#24336] +[visit_exp dim#24336] +[visit_id dim#24336] +[visit_exp i#106715] +[visit_id i#106715] +[visit_exp (`I32`_lanetype, `%`_dim{i#106722}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#106722}(4)] +[visit_exp i#106722] +[visit_id i#106722] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `LT`_vrelop_{sx#24310}(`U`_sx)] +[visit_exp sx#24310] +[visit_id sx#24310] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I dim#24378 i#106817 i#106824 lanetype#24378 shape#4124 sx#24434 +dims \ I = dim#24378, i#106817, i#106824, lanetype#24378, shape#4124, sx#24434 +[visit_exp `VRELOP`_instr{shape#4124}(`%X%`_shape{lanetype#24378, dim#24378, i#106817}(`I32`_lanetype, `%`_dim{i#106824}(4)), `GT`_vrelop_{sx#24434}(`S`_sx))] +[visit_exp shape#4124] +[visit_id shape#4124] +[visit_exp (`%X%`_shape{lanetype#24378, dim#24378, i#106817}(`I32`_lanetype, `%`_dim{i#106824}(4)), `GT`_vrelop_{sx#24434}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#24378, dim#24378, i#106817}(`I32`_lanetype, `%`_dim{i#106824}(4))] +[visit_exp lanetype#24378] +[visit_id lanetype#24378] +[visit_exp dim#24378] +[visit_id dim#24378] +[visit_exp i#106817] +[visit_id i#106817] +[visit_exp (`I32`_lanetype, `%`_dim{i#106824}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#106824}(4)] +[visit_exp i#106824] +[visit_id i#106824] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `GT`_vrelop_{sx#24434}(`S`_sx)] +[visit_exp sx#24434] +[visit_id sx#24434] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I dim#24420 i#106919 i#106926 lanetype#24420 shape#4126 sx#24558 +dims \ I = dim#24420, i#106919, i#106926, lanetype#24420, shape#4126, sx#24558 +[visit_exp `VRELOP`_instr{shape#4126}(`%X%`_shape{lanetype#24420, dim#24420, i#106919}(`I32`_lanetype, `%`_dim{i#106926}(4)), `GT`_vrelop_{sx#24558}(`U`_sx))] +[visit_exp shape#4126] +[visit_id shape#4126] +[visit_exp (`%X%`_shape{lanetype#24420, dim#24420, i#106919}(`I32`_lanetype, `%`_dim{i#106926}(4)), `GT`_vrelop_{sx#24558}(`U`_sx))] +[visit_exp `%X%`_shape{lanetype#24420, dim#24420, i#106919}(`I32`_lanetype, `%`_dim{i#106926}(4))] +[visit_exp lanetype#24420] +[visit_id lanetype#24420] +[visit_exp dim#24420] +[visit_id dim#24420] +[visit_exp i#106919] +[visit_id i#106919] +[visit_exp (`I32`_lanetype, `%`_dim{i#106926}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#106926}(4)] +[visit_exp i#106926] +[visit_id i#106926] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `GT`_vrelop_{sx#24558}(`U`_sx)] +[visit_exp sx#24558] +[visit_id sx#24558] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I dim#24462 i#107021 i#107028 lanetype#24462 shape#4128 sx#24682 +dims \ I = dim#24462, i#107021, i#107028, lanetype#24462, shape#4128, sx#24682 +[visit_exp `VRELOP`_instr{shape#4128}(`%X%`_shape{lanetype#24462, dim#24462, i#107021}(`I32`_lanetype, `%`_dim{i#107028}(4)), `LE`_vrelop_{sx#24682}(`S`_sx))] +[visit_exp shape#4128] +[visit_id shape#4128] +[visit_exp (`%X%`_shape{lanetype#24462, dim#24462, i#107021}(`I32`_lanetype, `%`_dim{i#107028}(4)), `LE`_vrelop_{sx#24682}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#24462, dim#24462, i#107021}(`I32`_lanetype, `%`_dim{i#107028}(4))] +[visit_exp lanetype#24462] +[visit_id lanetype#24462] +[visit_exp dim#24462] +[visit_id dim#24462] +[visit_exp i#107021] +[visit_id i#107021] +[visit_exp (`I32`_lanetype, `%`_dim{i#107028}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#107028}(4)] +[visit_exp i#107028] +[visit_id i#107028] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `LE`_vrelop_{sx#24682}(`S`_sx)] +[visit_exp sx#24682] +[visit_id sx#24682] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I dim#24504 i#107123 i#107130 lanetype#24504 shape#4130 sx#24806 +dims \ I = dim#24504, i#107123, i#107130, lanetype#24504, shape#4130, sx#24806 +[visit_exp `VRELOP`_instr{shape#4130}(`%X%`_shape{lanetype#24504, dim#24504, i#107123}(`I32`_lanetype, `%`_dim{i#107130}(4)), `LE`_vrelop_{sx#24806}(`U`_sx))] +[visit_exp shape#4130] +[visit_id shape#4130] +[visit_exp (`%X%`_shape{lanetype#24504, dim#24504, i#107123}(`I32`_lanetype, `%`_dim{i#107130}(4)), `LE`_vrelop_{sx#24806}(`U`_sx))] +[visit_exp `%X%`_shape{lanetype#24504, dim#24504, i#107123}(`I32`_lanetype, `%`_dim{i#107130}(4))] +[visit_exp lanetype#24504] +[visit_id lanetype#24504] +[visit_exp dim#24504] +[visit_id dim#24504] +[visit_exp i#107123] +[visit_id i#107123] +[visit_exp (`I32`_lanetype, `%`_dim{i#107130}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#107130}(4)] +[visit_exp i#107130] +[visit_id i#107130] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `LE`_vrelop_{sx#24806}(`U`_sx)] +[visit_exp sx#24806] +[visit_id sx#24806] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I dim#24546 i#107225 i#107232 lanetype#24546 shape#4132 sx#24930 +dims \ I = dim#24546, i#107225, i#107232, lanetype#24546, shape#4132, sx#24930 +[visit_exp `VRELOP`_instr{shape#4132}(`%X%`_shape{lanetype#24546, dim#24546, i#107225}(`I32`_lanetype, `%`_dim{i#107232}(4)), `GE`_vrelop_{sx#24930}(`S`_sx))] +[visit_exp shape#4132] +[visit_id shape#4132] +[visit_exp (`%X%`_shape{lanetype#24546, dim#24546, i#107225}(`I32`_lanetype, `%`_dim{i#107232}(4)), `GE`_vrelop_{sx#24930}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#24546, dim#24546, i#107225}(`I32`_lanetype, `%`_dim{i#107232}(4))] +[visit_exp lanetype#24546] +[visit_id lanetype#24546] +[visit_exp dim#24546] +[visit_id dim#24546] +[visit_exp i#107225] +[visit_id i#107225] +[visit_exp (`I32`_lanetype, `%`_dim{i#107232}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#107232}(4)] +[visit_exp i#107232] +[visit_id i#107232] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `GE`_vrelop_{sx#24930}(`S`_sx)] +[visit_exp sx#24930] +[visit_id sx#24930] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I dim#24588 i#107327 i#107334 lanetype#24588 shape#4134 sx#25054 +dims \ I = dim#24588, i#107327, i#107334, lanetype#24588, shape#4134, sx#25054 +[visit_exp `VRELOP`_instr{shape#4134}(`%X%`_shape{lanetype#24588, dim#24588, i#107327}(`I32`_lanetype, `%`_dim{i#107334}(4)), `GE`_vrelop_{sx#25054}(`U`_sx))] +[visit_exp shape#4134] +[visit_id shape#4134] +[visit_exp (`%X%`_shape{lanetype#24588, dim#24588, i#107327}(`I32`_lanetype, `%`_dim{i#107334}(4)), `GE`_vrelop_{sx#25054}(`U`_sx))] +[visit_exp `%X%`_shape{lanetype#24588, dim#24588, i#107327}(`I32`_lanetype, `%`_dim{i#107334}(4))] +[visit_exp lanetype#24588] +[visit_id lanetype#24588] +[visit_exp dim#24588] +[visit_id dim#24588] +[visit_exp i#107327] +[visit_id i#107327] +[visit_exp (`I32`_lanetype, `%`_dim{i#107334}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#107334}(4)] +[visit_exp i#107334] +[visit_id i#107334] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `GE`_vrelop_{sx#25054}(`U`_sx)] +[visit_exp sx#25054] +[visit_id sx#25054] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I dim#24630 i#107429 i#107436 lanetype#24630 shape#4136 +dims \ I = dim#24630, i#107429, i#107436, lanetype#24630, shape#4136 +[visit_exp `VRELOP`_instr{shape#4136}(`%X%`_shape{lanetype#24630, dim#24630, i#107429}(`I64`_lanetype, `%`_dim{i#107436}(2)), `EQ`_vrelop_)] +[visit_exp shape#4136] +[visit_id shape#4136] +[visit_exp (`%X%`_shape{lanetype#24630, dim#24630, i#107429}(`I64`_lanetype, `%`_dim{i#107436}(2)), `EQ`_vrelop_)] +[visit_exp `%X%`_shape{lanetype#24630, dim#24630, i#107429}(`I64`_lanetype, `%`_dim{i#107436}(2))] +[visit_exp lanetype#24630] +[visit_id lanetype#24630] +[visit_exp dim#24630] +[visit_id dim#24630] +[visit_exp i#107429] +[visit_id i#107429] +[visit_exp (`I64`_lanetype, `%`_dim{i#107436}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#107436}(2)] +[visit_exp i#107436] +[visit_id i#107436] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `EQ`_vrelop_] +[visit_exp ()] +[check_dims] I dim#24657 i#107486 i#107493 lanetype#24657 shape#4138 +dims \ I = dim#24657, i#107486, i#107493, lanetype#24657, shape#4138 +[visit_exp `VRELOP`_instr{shape#4138}(`%X%`_shape{lanetype#24657, dim#24657, i#107486}(`I64`_lanetype, `%`_dim{i#107493}(2)), `NE`_vrelop_)] +[visit_exp shape#4138] +[visit_id shape#4138] +[visit_exp (`%X%`_shape{lanetype#24657, dim#24657, i#107486}(`I64`_lanetype, `%`_dim{i#107493}(2)), `NE`_vrelop_)] +[visit_exp `%X%`_shape{lanetype#24657, dim#24657, i#107486}(`I64`_lanetype, `%`_dim{i#107493}(2))] +[visit_exp lanetype#24657] +[visit_id lanetype#24657] +[visit_exp dim#24657] +[visit_id dim#24657] +[visit_exp i#107486] +[visit_id i#107486] +[visit_exp (`I64`_lanetype, `%`_dim{i#107493}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#107493}(2)] +[visit_exp i#107493] +[visit_id i#107493] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `NE`_vrelop_] +[visit_exp ()] +[check_dims] I dim#24684 i#107543 i#107550 lanetype#24684 shape#4140 sx#25298 +dims \ I = dim#24684, i#107543, i#107550, lanetype#24684, shape#4140, sx#25298 +[visit_exp `VRELOP`_instr{shape#4140}(`%X%`_shape{lanetype#24684, dim#24684, i#107543}(`I64`_lanetype, `%`_dim{i#107550}(2)), `LT`_vrelop_{sx#25298}(`S`_sx))] +[visit_exp shape#4140] +[visit_id shape#4140] +[visit_exp (`%X%`_shape{lanetype#24684, dim#24684, i#107543}(`I64`_lanetype, `%`_dim{i#107550}(2)), `LT`_vrelop_{sx#25298}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#24684, dim#24684, i#107543}(`I64`_lanetype, `%`_dim{i#107550}(2))] +[visit_exp lanetype#24684] +[visit_id lanetype#24684] +[visit_exp dim#24684] +[visit_id dim#24684] +[visit_exp i#107543] +[visit_id i#107543] +[visit_exp (`I64`_lanetype, `%`_dim{i#107550}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#107550}(2)] +[visit_exp i#107550] +[visit_id i#107550] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `LT`_vrelop_{sx#25298}(`S`_sx)] +[visit_exp sx#25298] +[visit_id sx#25298] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I dim#24726 i#107645 i#107652 lanetype#24726 shape#4142 sx#25422 +dims \ I = dim#24726, i#107645, i#107652, lanetype#24726, shape#4142, sx#25422 +[visit_exp `VRELOP`_instr{shape#4142}(`%X%`_shape{lanetype#24726, dim#24726, i#107645}(`I64`_lanetype, `%`_dim{i#107652}(2)), `GT`_vrelop_{sx#25422}(`S`_sx))] +[visit_exp shape#4142] +[visit_id shape#4142] +[visit_exp (`%X%`_shape{lanetype#24726, dim#24726, i#107645}(`I64`_lanetype, `%`_dim{i#107652}(2)), `GT`_vrelop_{sx#25422}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#24726, dim#24726, i#107645}(`I64`_lanetype, `%`_dim{i#107652}(2))] +[visit_exp lanetype#24726] +[visit_id lanetype#24726] +[visit_exp dim#24726] +[visit_id dim#24726] +[visit_exp i#107645] +[visit_id i#107645] +[visit_exp (`I64`_lanetype, `%`_dim{i#107652}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#107652}(2)] +[visit_exp i#107652] +[visit_id i#107652] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `GT`_vrelop_{sx#25422}(`S`_sx)] +[visit_exp sx#25422] +[visit_id sx#25422] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I dim#24768 i#107747 i#107754 lanetype#24768 shape#4144 sx#25546 +dims \ I = dim#24768, i#107747, i#107754, lanetype#24768, shape#4144, sx#25546 +[visit_exp `VRELOP`_instr{shape#4144}(`%X%`_shape{lanetype#24768, dim#24768, i#107747}(`I64`_lanetype, `%`_dim{i#107754}(2)), `LE`_vrelop_{sx#25546}(`S`_sx))] +[visit_exp shape#4144] +[visit_id shape#4144] +[visit_exp (`%X%`_shape{lanetype#24768, dim#24768, i#107747}(`I64`_lanetype, `%`_dim{i#107754}(2)), `LE`_vrelop_{sx#25546}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#24768, dim#24768, i#107747}(`I64`_lanetype, `%`_dim{i#107754}(2))] +[visit_exp lanetype#24768] +[visit_id lanetype#24768] +[visit_exp dim#24768] +[visit_id dim#24768] +[visit_exp i#107747] +[visit_id i#107747] +[visit_exp (`I64`_lanetype, `%`_dim{i#107754}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#107754}(2)] +[visit_exp i#107754] +[visit_id i#107754] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `LE`_vrelop_{sx#25546}(`S`_sx)] +[visit_exp sx#25546] +[visit_id sx#25546] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I dim#24810 i#107849 i#107856 lanetype#24810 shape#4146 sx#25670 +dims \ I = dim#24810, i#107849, i#107856, lanetype#24810, shape#4146, sx#25670 +[visit_exp `VRELOP`_instr{shape#4146}(`%X%`_shape{lanetype#24810, dim#24810, i#107849}(`I64`_lanetype, `%`_dim{i#107856}(2)), `GE`_vrelop_{sx#25670}(`S`_sx))] +[visit_exp shape#4146] +[visit_id shape#4146] +[visit_exp (`%X%`_shape{lanetype#24810, dim#24810, i#107849}(`I64`_lanetype, `%`_dim{i#107856}(2)), `GE`_vrelop_{sx#25670}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#24810, dim#24810, i#107849}(`I64`_lanetype, `%`_dim{i#107856}(2))] +[visit_exp lanetype#24810] +[visit_id lanetype#24810] +[visit_exp dim#24810] +[visit_id dim#24810] +[visit_exp i#107849] +[visit_id i#107849] +[visit_exp (`I64`_lanetype, `%`_dim{i#107856}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#107856}(2)] +[visit_exp i#107856] +[visit_id i#107856] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `GE`_vrelop_{sx#25670}(`S`_sx)] +[visit_exp sx#25670] +[visit_id sx#25670] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I dim#24852 i#107951 i#107958 lanetype#24852 shape#4148 +dims \ I = dim#24852, i#107951, i#107958, lanetype#24852, shape#4148 +[visit_exp `VRELOP`_instr{shape#4148}(`%X%`_shape{lanetype#24852, dim#24852, i#107951}(`F32`_lanetype, `%`_dim{i#107958}(4)), `EQ`_vrelop_)] +[visit_exp shape#4148] +[visit_id shape#4148] +[visit_exp (`%X%`_shape{lanetype#24852, dim#24852, i#107951}(`F32`_lanetype, `%`_dim{i#107958}(4)), `EQ`_vrelop_)] +[visit_exp `%X%`_shape{lanetype#24852, dim#24852, i#107951}(`F32`_lanetype, `%`_dim{i#107958}(4))] +[visit_exp lanetype#24852] +[visit_id lanetype#24852] +[visit_exp dim#24852] +[visit_id dim#24852] +[visit_exp i#107951] +[visit_id i#107951] +[visit_exp (`F32`_lanetype, `%`_dim{i#107958}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#107958}(4)] +[visit_exp i#107958] +[visit_id i#107958] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `EQ`_vrelop_] +[visit_exp ()] +[check_dims] I dim#24894 i#108023 i#108030 lanetype#24894 shape#4150 +dims \ I = dim#24894, i#108023, i#108030, lanetype#24894, shape#4150 +[visit_exp `VRELOP`_instr{shape#4150}(`%X%`_shape{lanetype#24894, dim#24894, i#108023}(`F32`_lanetype, `%`_dim{i#108030}(4)), `NE`_vrelop_)] +[visit_exp shape#4150] +[visit_id shape#4150] +[visit_exp (`%X%`_shape{lanetype#24894, dim#24894, i#108023}(`F32`_lanetype, `%`_dim{i#108030}(4)), `NE`_vrelop_)] +[visit_exp `%X%`_shape{lanetype#24894, dim#24894, i#108023}(`F32`_lanetype, `%`_dim{i#108030}(4))] +[visit_exp lanetype#24894] +[visit_id lanetype#24894] +[visit_exp dim#24894] +[visit_id dim#24894] +[visit_exp i#108023] +[visit_id i#108023] +[visit_exp (`F32`_lanetype, `%`_dim{i#108030}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#108030}(4)] +[visit_exp i#108030] +[visit_id i#108030] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `NE`_vrelop_] +[visit_exp ()] +[check_dims] I dim#24936 i#108095 i#108102 lanetype#24936 shape#4152 +dims \ I = dim#24936, i#108095, i#108102, lanetype#24936, shape#4152 +[visit_exp `VRELOP`_instr{shape#4152}(`%X%`_shape{lanetype#24936, dim#24936, i#108095}(`F32`_lanetype, `%`_dim{i#108102}(4)), `LT`_vrelop_)] +[visit_exp shape#4152] +[visit_id shape#4152] +[visit_exp (`%X%`_shape{lanetype#24936, dim#24936, i#108095}(`F32`_lanetype, `%`_dim{i#108102}(4)), `LT`_vrelop_)] +[visit_exp `%X%`_shape{lanetype#24936, dim#24936, i#108095}(`F32`_lanetype, `%`_dim{i#108102}(4))] +[visit_exp lanetype#24936] +[visit_id lanetype#24936] +[visit_exp dim#24936] +[visit_id dim#24936] +[visit_exp i#108095] +[visit_id i#108095] +[visit_exp (`F32`_lanetype, `%`_dim{i#108102}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#108102}(4)] +[visit_exp i#108102] +[visit_id i#108102] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `LT`_vrelop_] +[visit_exp ()] +[check_dims] I dim#24978 i#108167 i#108174 lanetype#24978 shape#4154 +dims \ I = dim#24978, i#108167, i#108174, lanetype#24978, shape#4154 +[visit_exp `VRELOP`_instr{shape#4154}(`%X%`_shape{lanetype#24978, dim#24978, i#108167}(`F32`_lanetype, `%`_dim{i#108174}(4)), `GT`_vrelop_)] +[visit_exp shape#4154] +[visit_id shape#4154] +[visit_exp (`%X%`_shape{lanetype#24978, dim#24978, i#108167}(`F32`_lanetype, `%`_dim{i#108174}(4)), `GT`_vrelop_)] +[visit_exp `%X%`_shape{lanetype#24978, dim#24978, i#108167}(`F32`_lanetype, `%`_dim{i#108174}(4))] +[visit_exp lanetype#24978] +[visit_id lanetype#24978] +[visit_exp dim#24978] +[visit_id dim#24978] +[visit_exp i#108167] +[visit_id i#108167] +[visit_exp (`F32`_lanetype, `%`_dim{i#108174}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#108174}(4)] +[visit_exp i#108174] +[visit_id i#108174] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `GT`_vrelop_] +[visit_exp ()] +[check_dims] I dim#25020 i#108239 i#108246 lanetype#25020 shape#4156 +dims \ I = dim#25020, i#108239, i#108246, lanetype#25020, shape#4156 +[visit_exp `VRELOP`_instr{shape#4156}(`%X%`_shape{lanetype#25020, dim#25020, i#108239}(`F32`_lanetype, `%`_dim{i#108246}(4)), `LE`_vrelop_)] +[visit_exp shape#4156] +[visit_id shape#4156] +[visit_exp (`%X%`_shape{lanetype#25020, dim#25020, i#108239}(`F32`_lanetype, `%`_dim{i#108246}(4)), `LE`_vrelop_)] +[visit_exp `%X%`_shape{lanetype#25020, dim#25020, i#108239}(`F32`_lanetype, `%`_dim{i#108246}(4))] +[visit_exp lanetype#25020] +[visit_id lanetype#25020] +[visit_exp dim#25020] +[visit_id dim#25020] +[visit_exp i#108239] +[visit_id i#108239] +[visit_exp (`F32`_lanetype, `%`_dim{i#108246}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#108246}(4)] +[visit_exp i#108246] +[visit_id i#108246] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `LE`_vrelop_] +[visit_exp ()] +[check_dims] I dim#25062 i#108311 i#108318 lanetype#25062 shape#4158 +dims \ I = dim#25062, i#108311, i#108318, lanetype#25062, shape#4158 +[visit_exp `VRELOP`_instr{shape#4158}(`%X%`_shape{lanetype#25062, dim#25062, i#108311}(`F32`_lanetype, `%`_dim{i#108318}(4)), `GE`_vrelop_)] +[visit_exp shape#4158] +[visit_id shape#4158] +[visit_exp (`%X%`_shape{lanetype#25062, dim#25062, i#108311}(`F32`_lanetype, `%`_dim{i#108318}(4)), `GE`_vrelop_)] +[visit_exp `%X%`_shape{lanetype#25062, dim#25062, i#108311}(`F32`_lanetype, `%`_dim{i#108318}(4))] +[visit_exp lanetype#25062] +[visit_id lanetype#25062] +[visit_exp dim#25062] +[visit_id dim#25062] +[visit_exp i#108311] +[visit_id i#108311] +[visit_exp (`F32`_lanetype, `%`_dim{i#108318}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#108318}(4)] +[visit_exp i#108318] +[visit_id i#108318] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `GE`_vrelop_] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I dim#25104 i#108383 i#108390 lanetype#25104 shape#4160 +dims \ I = dim#25104, i#108383, i#108390, lanetype#25104, shape#4160 +[visit_exp `VRELOP`_instr{shape#4160}(`%X%`_shape{lanetype#25104, dim#25104, i#108383}(`F64`_lanetype, `%`_dim{i#108390}(2)), `EQ`_vrelop_)] +[visit_exp shape#4160] +[visit_id shape#4160] +[visit_exp (`%X%`_shape{lanetype#25104, dim#25104, i#108383}(`F64`_lanetype, `%`_dim{i#108390}(2)), `EQ`_vrelop_)] +[visit_exp `%X%`_shape{lanetype#25104, dim#25104, i#108383}(`F64`_lanetype, `%`_dim{i#108390}(2))] +[visit_exp lanetype#25104] +[visit_id lanetype#25104] +[visit_exp dim#25104] +[visit_id dim#25104] +[visit_exp i#108383] +[visit_id i#108383] +[visit_exp (`F64`_lanetype, `%`_dim{i#108390}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#108390}(2)] +[visit_exp i#108390] +[visit_id i#108390] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `EQ`_vrelop_] +[visit_exp ()] +[check_dims] I dim#25146 i#108455 i#108462 lanetype#25146 shape#4162 +dims \ I = dim#25146, i#108455, i#108462, lanetype#25146, shape#4162 +[visit_exp `VRELOP`_instr{shape#4162}(`%X%`_shape{lanetype#25146, dim#25146, i#108455}(`F64`_lanetype, `%`_dim{i#108462}(2)), `NE`_vrelop_)] +[visit_exp shape#4162] +[visit_id shape#4162] +[visit_exp (`%X%`_shape{lanetype#25146, dim#25146, i#108455}(`F64`_lanetype, `%`_dim{i#108462}(2)), `NE`_vrelop_)] +[visit_exp `%X%`_shape{lanetype#25146, dim#25146, i#108455}(`F64`_lanetype, `%`_dim{i#108462}(2))] +[visit_exp lanetype#25146] +[visit_id lanetype#25146] +[visit_exp dim#25146] +[visit_id dim#25146] +[visit_exp i#108455] +[visit_id i#108455] +[visit_exp (`F64`_lanetype, `%`_dim{i#108462}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#108462}(2)] +[visit_exp i#108462] +[visit_id i#108462] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `NE`_vrelop_] +[visit_exp ()] +[check_dims] I dim#25188 i#108527 i#108534 lanetype#25188 shape#4164 +dims \ I = dim#25188, i#108527, i#108534, lanetype#25188, shape#4164 +[visit_exp `VRELOP`_instr{shape#4164}(`%X%`_shape{lanetype#25188, dim#25188, i#108527}(`F64`_lanetype, `%`_dim{i#108534}(2)), `LT`_vrelop_)] +[visit_exp shape#4164] +[visit_id shape#4164] +[visit_exp (`%X%`_shape{lanetype#25188, dim#25188, i#108527}(`F64`_lanetype, `%`_dim{i#108534}(2)), `LT`_vrelop_)] +[visit_exp `%X%`_shape{lanetype#25188, dim#25188, i#108527}(`F64`_lanetype, `%`_dim{i#108534}(2))] +[visit_exp lanetype#25188] +[visit_id lanetype#25188] +[visit_exp dim#25188] +[visit_id dim#25188] +[visit_exp i#108527] +[visit_id i#108527] +[visit_exp (`F64`_lanetype, `%`_dim{i#108534}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#108534}(2)] +[visit_exp i#108534] +[visit_id i#108534] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `LT`_vrelop_] +[visit_exp ()] +[check_dims] I dim#25230 i#108599 i#108606 lanetype#25230 shape#4166 +dims \ I = dim#25230, i#108599, i#108606, lanetype#25230, shape#4166 +[visit_exp `VRELOP`_instr{shape#4166}(`%X%`_shape{lanetype#25230, dim#25230, i#108599}(`F64`_lanetype, `%`_dim{i#108606}(2)), `GT`_vrelop_)] +[visit_exp shape#4166] +[visit_id shape#4166] +[visit_exp (`%X%`_shape{lanetype#25230, dim#25230, i#108599}(`F64`_lanetype, `%`_dim{i#108606}(2)), `GT`_vrelop_)] +[visit_exp `%X%`_shape{lanetype#25230, dim#25230, i#108599}(`F64`_lanetype, `%`_dim{i#108606}(2))] +[visit_exp lanetype#25230] +[visit_id lanetype#25230] +[visit_exp dim#25230] +[visit_id dim#25230] +[visit_exp i#108599] +[visit_id i#108599] +[visit_exp (`F64`_lanetype, `%`_dim{i#108606}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#108606}(2)] +[visit_exp i#108606] +[visit_id i#108606] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `GT`_vrelop_] +[visit_exp ()] +[check_dims] I dim#25272 i#108671 i#108678 lanetype#25272 shape#4168 +dims \ I = dim#25272, i#108671, i#108678, lanetype#25272, shape#4168 +[visit_exp `VRELOP`_instr{shape#4168}(`%X%`_shape{lanetype#25272, dim#25272, i#108671}(`F64`_lanetype, `%`_dim{i#108678}(2)), `LE`_vrelop_)] +[visit_exp shape#4168] +[visit_id shape#4168] +[visit_exp (`%X%`_shape{lanetype#25272, dim#25272, i#108671}(`F64`_lanetype, `%`_dim{i#108678}(2)), `LE`_vrelop_)] +[visit_exp `%X%`_shape{lanetype#25272, dim#25272, i#108671}(`F64`_lanetype, `%`_dim{i#108678}(2))] +[visit_exp lanetype#25272] +[visit_id lanetype#25272] +[visit_exp dim#25272] +[visit_id dim#25272] +[visit_exp i#108671] +[visit_id i#108671] +[visit_exp (`F64`_lanetype, `%`_dim{i#108678}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#108678}(2)] +[visit_exp i#108678] +[visit_id i#108678] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `LE`_vrelop_] +[visit_exp ()] +[check_dims] I dim#25314 i#108743 i#108750 lanetype#25314 shape#4170 +dims \ I = dim#25314, i#108743, i#108750, lanetype#25314, shape#4170 +[visit_exp `VRELOP`_instr{shape#4170}(`%X%`_shape{lanetype#25314, dim#25314, i#108743}(`F64`_lanetype, `%`_dim{i#108750}(2)), `GE`_vrelop_)] +[visit_exp shape#4170] +[visit_id shape#4170] +[visit_exp (`%X%`_shape{lanetype#25314, dim#25314, i#108743}(`F64`_lanetype, `%`_dim{i#108750}(2)), `GE`_vrelop_)] +[visit_exp `%X%`_shape{lanetype#25314, dim#25314, i#108743}(`F64`_lanetype, `%`_dim{i#108750}(2))] +[visit_exp lanetype#25314] +[visit_id lanetype#25314] +[visit_exp dim#25314] +[visit_id dim#25314] +[visit_exp i#108743] +[visit_id i#108743] +[visit_exp (`F64`_lanetype, `%`_dim{i#108750}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#108750}(2)] +[visit_exp i#108750] +[visit_id i#108750] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `GE`_vrelop_] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I vectype#318 vvunop#9 +dims \ I = vectype#318, vvunop#9 +[visit_exp `VVUNOP`_instr{vectype#318, vvunop#9}(`V128`_vectype, `NOT`_vvunop)] +[visit_exp vectype#318] +[visit_id vectype#318] +[visit_exp vvunop#9] +[visit_id vvunop#9] +[visit_exp (`V128`_vectype, `NOT`_vvunop)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp `NOT`_vvunop] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I dim#25356 i#108815 i#108822 lanetype#25356 shape#4172 +dims \ I = dim#25356, i#108815, i#108822, lanetype#25356, shape#4172 +[visit_exp `VUNOP`_instr{shape#4172}(`%X%`_shape{lanetype#25356, dim#25356, i#108815}(`I8`_lanetype, `%`_dim{i#108822}(16)), `ABS`_vunop_)] +[visit_exp shape#4172] +[visit_id shape#4172] +[visit_exp (`%X%`_shape{lanetype#25356, dim#25356, i#108815}(`I8`_lanetype, `%`_dim{i#108822}(16)), `ABS`_vunop_)] +[visit_exp `%X%`_shape{lanetype#25356, dim#25356, i#108815}(`I8`_lanetype, `%`_dim{i#108822}(16))] +[visit_exp lanetype#25356] +[visit_id lanetype#25356] +[visit_exp dim#25356] +[visit_id dim#25356] +[visit_exp i#108815] +[visit_id i#108815] +[visit_exp (`I8`_lanetype, `%`_dim{i#108822}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#108822}(16)] +[visit_exp i#108822] +[visit_id i#108822] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `ABS`_vunop_] +[visit_exp ()] +[check_dims] I dim#25383 i#108872 i#108879 lanetype#25383 shape#4174 +dims \ I = dim#25383, i#108872, i#108879, lanetype#25383, shape#4174 +[visit_exp `VUNOP`_instr{shape#4174}(`%X%`_shape{lanetype#25383, dim#25383, i#108872}(`I8`_lanetype, `%`_dim{i#108879}(16)), `NEG`_vunop_)] +[visit_exp shape#4174] +[visit_id shape#4174] +[visit_exp (`%X%`_shape{lanetype#25383, dim#25383, i#108872}(`I8`_lanetype, `%`_dim{i#108879}(16)), `NEG`_vunop_)] +[visit_exp `%X%`_shape{lanetype#25383, dim#25383, i#108872}(`I8`_lanetype, `%`_dim{i#108879}(16))] +[visit_exp lanetype#25383] +[visit_id lanetype#25383] +[visit_exp dim#25383] +[visit_id dim#25383] +[visit_exp i#108872] +[visit_id i#108872] +[visit_exp (`I8`_lanetype, `%`_dim{i#108879}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#108879}(16)] +[visit_exp i#108879] +[visit_id i#108879] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `NEG`_vunop_] +[visit_exp ()] +[check_dims] I dim#25410 i#108929 i#108936 lanetype#25410 shape#4176 +dims \ I = dim#25410, i#108929, i#108936, lanetype#25410, shape#4176 +[visit_exp `VUNOP`_instr{shape#4176}(`%X%`_shape{lanetype#25410, dim#25410, i#108929}(`I8`_lanetype, `%`_dim{i#108936}(16)), `POPCNT`_vunop_)] +[visit_exp shape#4176] +[visit_id shape#4176] +[visit_exp (`%X%`_shape{lanetype#25410, dim#25410, i#108929}(`I8`_lanetype, `%`_dim{i#108936}(16)), `POPCNT`_vunop_)] +[visit_exp `%X%`_shape{lanetype#25410, dim#25410, i#108929}(`I8`_lanetype, `%`_dim{i#108936}(16))] +[visit_exp lanetype#25410] +[visit_id lanetype#25410] +[visit_exp dim#25410] +[visit_id dim#25410] +[visit_exp i#108929] +[visit_id i#108929] +[visit_exp (`I8`_lanetype, `%`_dim{i#108936}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#108936}(16)] +[visit_exp i#108936] +[visit_id i#108936] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `POPCNT`_vunop_] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I dim#25437 i#108986 i#108993 lanetype#25437 shape#4178 +dims \ I = dim#25437, i#108986, i#108993, lanetype#25437, shape#4178 +[visit_exp `VUNOP`_instr{shape#4178}(`%X%`_shape{lanetype#25437, dim#25437, i#108986}(`I16`_lanetype, `%`_dim{i#108993}(8)), `ABS`_vunop_)] +[visit_exp shape#4178] +[visit_id shape#4178] +[visit_exp (`%X%`_shape{lanetype#25437, dim#25437, i#108986}(`I16`_lanetype, `%`_dim{i#108993}(8)), `ABS`_vunop_)] +[visit_exp `%X%`_shape{lanetype#25437, dim#25437, i#108986}(`I16`_lanetype, `%`_dim{i#108993}(8))] +[visit_exp lanetype#25437] +[visit_id lanetype#25437] +[visit_exp dim#25437] +[visit_id dim#25437] +[visit_exp i#108986] +[visit_id i#108986] +[visit_exp (`I16`_lanetype, `%`_dim{i#108993}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#108993}(8)] +[visit_exp i#108993] +[visit_id i#108993] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `ABS`_vunop_] +[visit_exp ()] +[check_dims] I dim#25464 i#109043 i#109050 lanetype#25464 shape#4180 +dims \ I = dim#25464, i#109043, i#109050, lanetype#25464, shape#4180 +[visit_exp `VUNOP`_instr{shape#4180}(`%X%`_shape{lanetype#25464, dim#25464, i#109043}(`I16`_lanetype, `%`_dim{i#109050}(8)), `NEG`_vunop_)] +[visit_exp shape#4180] +[visit_id shape#4180] +[visit_exp (`%X%`_shape{lanetype#25464, dim#25464, i#109043}(`I16`_lanetype, `%`_dim{i#109050}(8)), `NEG`_vunop_)] +[visit_exp `%X%`_shape{lanetype#25464, dim#25464, i#109043}(`I16`_lanetype, `%`_dim{i#109050}(8))] +[visit_exp lanetype#25464] +[visit_id lanetype#25464] +[visit_exp dim#25464] +[visit_id dim#25464] +[visit_exp i#109043] +[visit_id i#109043] +[visit_exp (`I16`_lanetype, `%`_dim{i#109050}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#109050}(8)] +[visit_exp i#109050] +[visit_id i#109050] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `NEG`_vunop_] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I dim#25491 i#109100 i#109107 lanetype#25491 shape#4182 +dims \ I = dim#25491, i#109100, i#109107, lanetype#25491, shape#4182 +[visit_exp `VUNOP`_instr{shape#4182}(`%X%`_shape{lanetype#25491, dim#25491, i#109100}(`I32`_lanetype, `%`_dim{i#109107}(4)), `ABS`_vunop_)] +[visit_exp shape#4182] +[visit_id shape#4182] +[visit_exp (`%X%`_shape{lanetype#25491, dim#25491, i#109100}(`I32`_lanetype, `%`_dim{i#109107}(4)), `ABS`_vunop_)] +[visit_exp `%X%`_shape{lanetype#25491, dim#25491, i#109100}(`I32`_lanetype, `%`_dim{i#109107}(4))] +[visit_exp lanetype#25491] +[visit_id lanetype#25491] +[visit_exp dim#25491] +[visit_id dim#25491] +[visit_exp i#109100] +[visit_id i#109100] +[visit_exp (`I32`_lanetype, `%`_dim{i#109107}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#109107}(4)] +[visit_exp i#109107] +[visit_id i#109107] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `ABS`_vunop_] +[visit_exp ()] +[check_dims] I dim#25518 i#109157 i#109164 lanetype#25518 shape#4184 +dims \ I = dim#25518, i#109157, i#109164, lanetype#25518, shape#4184 +[visit_exp `VUNOP`_instr{shape#4184}(`%X%`_shape{lanetype#25518, dim#25518, i#109157}(`I32`_lanetype, `%`_dim{i#109164}(4)), `NEG`_vunop_)] +[visit_exp shape#4184] +[visit_id shape#4184] +[visit_exp (`%X%`_shape{lanetype#25518, dim#25518, i#109157}(`I32`_lanetype, `%`_dim{i#109164}(4)), `NEG`_vunop_)] +[visit_exp `%X%`_shape{lanetype#25518, dim#25518, i#109157}(`I32`_lanetype, `%`_dim{i#109164}(4))] +[visit_exp lanetype#25518] +[visit_id lanetype#25518] +[visit_exp dim#25518] +[visit_id dim#25518] +[visit_exp i#109157] +[visit_id i#109157] +[visit_exp (`I32`_lanetype, `%`_dim{i#109164}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#109164}(4)] +[visit_exp i#109164] +[visit_id i#109164] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `NEG`_vunop_] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I dim#25545 i#109214 i#109221 lanetype#25545 shape#4186 +dims \ I = dim#25545, i#109214, i#109221, lanetype#25545, shape#4186 +[visit_exp `VUNOP`_instr{shape#4186}(`%X%`_shape{lanetype#25545, dim#25545, i#109214}(`I64`_lanetype, `%`_dim{i#109221}(2)), `ABS`_vunop_)] +[visit_exp shape#4186] +[visit_id shape#4186] +[visit_exp (`%X%`_shape{lanetype#25545, dim#25545, i#109214}(`I64`_lanetype, `%`_dim{i#109221}(2)), `ABS`_vunop_)] +[visit_exp `%X%`_shape{lanetype#25545, dim#25545, i#109214}(`I64`_lanetype, `%`_dim{i#109221}(2))] +[visit_exp lanetype#25545] +[visit_id lanetype#25545] +[visit_exp dim#25545] +[visit_id dim#25545] +[visit_exp i#109214] +[visit_id i#109214] +[visit_exp (`I64`_lanetype, `%`_dim{i#109221}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#109221}(2)] +[visit_exp i#109221] +[visit_id i#109221] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `ABS`_vunop_] +[visit_exp ()] +[check_dims] I dim#25572 i#109271 i#109278 lanetype#25572 shape#4188 +dims \ I = dim#25572, i#109271, i#109278, lanetype#25572, shape#4188 +[visit_exp `VUNOP`_instr{shape#4188}(`%X%`_shape{lanetype#25572, dim#25572, i#109271}(`I64`_lanetype, `%`_dim{i#109278}(2)), `NEG`_vunop_)] +[visit_exp shape#4188] +[visit_id shape#4188] +[visit_exp (`%X%`_shape{lanetype#25572, dim#25572, i#109271}(`I64`_lanetype, `%`_dim{i#109278}(2)), `NEG`_vunop_)] +[visit_exp `%X%`_shape{lanetype#25572, dim#25572, i#109271}(`I64`_lanetype, `%`_dim{i#109278}(2))] +[visit_exp lanetype#25572] +[visit_id lanetype#25572] +[visit_exp dim#25572] +[visit_id dim#25572] +[visit_exp i#109271] +[visit_id i#109271] +[visit_exp (`I64`_lanetype, `%`_dim{i#109278}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#109278}(2)] +[visit_exp i#109278] +[visit_id i#109278] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `NEG`_vunop_] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I dim#25599 i#109328 i#109335 lanetype#25599 shape#4190 +dims \ I = dim#25599, i#109328, i#109335, lanetype#25599, shape#4190 +[visit_exp `VUNOP`_instr{shape#4190}(`%X%`_shape{lanetype#25599, dim#25599, i#109328}(`F32`_lanetype, `%`_dim{i#109335}(4)), `ABS`_vunop_)] +[visit_exp shape#4190] +[visit_id shape#4190] +[visit_exp (`%X%`_shape{lanetype#25599, dim#25599, i#109328}(`F32`_lanetype, `%`_dim{i#109335}(4)), `ABS`_vunop_)] +[visit_exp `%X%`_shape{lanetype#25599, dim#25599, i#109328}(`F32`_lanetype, `%`_dim{i#109335}(4))] +[visit_exp lanetype#25599] +[visit_id lanetype#25599] +[visit_exp dim#25599] +[visit_id dim#25599] +[visit_exp i#109328] +[visit_id i#109328] +[visit_exp (`F32`_lanetype, `%`_dim{i#109335}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#109335}(4)] +[visit_exp i#109335] +[visit_id i#109335] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `ABS`_vunop_] +[visit_exp ()] +[check_dims] I dim#25641 i#109400 i#109407 lanetype#25641 shape#4192 +dims \ I = dim#25641, i#109400, i#109407, lanetype#25641, shape#4192 +[visit_exp `VUNOP`_instr{shape#4192}(`%X%`_shape{lanetype#25641, dim#25641, i#109400}(`F32`_lanetype, `%`_dim{i#109407}(4)), `NEG`_vunop_)] +[visit_exp shape#4192] +[visit_id shape#4192] +[visit_exp (`%X%`_shape{lanetype#25641, dim#25641, i#109400}(`F32`_lanetype, `%`_dim{i#109407}(4)), `NEG`_vunop_)] +[visit_exp `%X%`_shape{lanetype#25641, dim#25641, i#109400}(`F32`_lanetype, `%`_dim{i#109407}(4))] +[visit_exp lanetype#25641] +[visit_id lanetype#25641] +[visit_exp dim#25641] +[visit_id dim#25641] +[visit_exp i#109400] +[visit_id i#109400] +[visit_exp (`F32`_lanetype, `%`_dim{i#109407}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#109407}(4)] +[visit_exp i#109407] +[visit_id i#109407] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `NEG`_vunop_] +[visit_exp ()] +[check_dims] I dim#25683 i#109472 i#109479 lanetype#25683 shape#4194 +dims \ I = dim#25683, i#109472, i#109479, lanetype#25683, shape#4194 +[visit_exp `VUNOP`_instr{shape#4194}(`%X%`_shape{lanetype#25683, dim#25683, i#109472}(`F32`_lanetype, `%`_dim{i#109479}(4)), `SQRT`_vunop_)] +[visit_exp shape#4194] +[visit_id shape#4194] +[visit_exp (`%X%`_shape{lanetype#25683, dim#25683, i#109472}(`F32`_lanetype, `%`_dim{i#109479}(4)), `SQRT`_vunop_)] +[visit_exp `%X%`_shape{lanetype#25683, dim#25683, i#109472}(`F32`_lanetype, `%`_dim{i#109479}(4))] +[visit_exp lanetype#25683] +[visit_id lanetype#25683] +[visit_exp dim#25683] +[visit_id dim#25683] +[visit_exp i#109472] +[visit_id i#109472] +[visit_exp (`F32`_lanetype, `%`_dim{i#109479}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#109479}(4)] +[visit_exp i#109479] +[visit_id i#109479] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `SQRT`_vunop_] +[visit_exp ()] +[check_dims] I dim#25725 i#109544 i#109551 lanetype#25725 shape#4196 +dims \ I = dim#25725, i#109544, i#109551, lanetype#25725, shape#4196 +[visit_exp `VUNOP`_instr{shape#4196}(`%X%`_shape{lanetype#25725, dim#25725, i#109544}(`F32`_lanetype, `%`_dim{i#109551}(4)), `CEIL`_vunop_)] +[visit_exp shape#4196] +[visit_id shape#4196] +[visit_exp (`%X%`_shape{lanetype#25725, dim#25725, i#109544}(`F32`_lanetype, `%`_dim{i#109551}(4)), `CEIL`_vunop_)] +[visit_exp `%X%`_shape{lanetype#25725, dim#25725, i#109544}(`F32`_lanetype, `%`_dim{i#109551}(4))] +[visit_exp lanetype#25725] +[visit_id lanetype#25725] +[visit_exp dim#25725] +[visit_id dim#25725] +[visit_exp i#109544] +[visit_id i#109544] +[visit_exp (`F32`_lanetype, `%`_dim{i#109551}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#109551}(4)] +[visit_exp i#109551] +[visit_id i#109551] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `CEIL`_vunop_] +[visit_exp ()] +[check_dims] I dim#25767 i#109616 i#109623 lanetype#25767 shape#4198 +dims \ I = dim#25767, i#109616, i#109623, lanetype#25767, shape#4198 +[visit_exp `VUNOP`_instr{shape#4198}(`%X%`_shape{lanetype#25767, dim#25767, i#109616}(`F32`_lanetype, `%`_dim{i#109623}(4)), `FLOOR`_vunop_)] +[visit_exp shape#4198] +[visit_id shape#4198] +[visit_exp (`%X%`_shape{lanetype#25767, dim#25767, i#109616}(`F32`_lanetype, `%`_dim{i#109623}(4)), `FLOOR`_vunop_)] +[visit_exp `%X%`_shape{lanetype#25767, dim#25767, i#109616}(`F32`_lanetype, `%`_dim{i#109623}(4))] +[visit_exp lanetype#25767] +[visit_id lanetype#25767] +[visit_exp dim#25767] +[visit_id dim#25767] +[visit_exp i#109616] +[visit_id i#109616] +[visit_exp (`F32`_lanetype, `%`_dim{i#109623}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#109623}(4)] +[visit_exp i#109623] +[visit_id i#109623] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `FLOOR`_vunop_] +[visit_exp ()] +[check_dims] I dim#25809 i#109688 i#109695 lanetype#25809 shape#4200 +dims \ I = dim#25809, i#109688, i#109695, lanetype#25809, shape#4200 +[visit_exp `VUNOP`_instr{shape#4200}(`%X%`_shape{lanetype#25809, dim#25809, i#109688}(`F32`_lanetype, `%`_dim{i#109695}(4)), `TRUNC`_vunop_)] +[visit_exp shape#4200] +[visit_id shape#4200] +[visit_exp (`%X%`_shape{lanetype#25809, dim#25809, i#109688}(`F32`_lanetype, `%`_dim{i#109695}(4)), `TRUNC`_vunop_)] +[visit_exp `%X%`_shape{lanetype#25809, dim#25809, i#109688}(`F32`_lanetype, `%`_dim{i#109695}(4))] +[visit_exp lanetype#25809] +[visit_id lanetype#25809] +[visit_exp dim#25809] +[visit_id dim#25809] +[visit_exp i#109688] +[visit_id i#109688] +[visit_exp (`F32`_lanetype, `%`_dim{i#109695}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#109695}(4)] +[visit_exp i#109695] +[visit_id i#109695] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `TRUNC`_vunop_] +[visit_exp ()] +[check_dims] I dim#25851 i#109760 i#109767 lanetype#25851 shape#4202 +dims \ I = dim#25851, i#109760, i#109767, lanetype#25851, shape#4202 +[visit_exp `VUNOP`_instr{shape#4202}(`%X%`_shape{lanetype#25851, dim#25851, i#109760}(`F32`_lanetype, `%`_dim{i#109767}(4)), `NEAREST`_vunop_)] +[visit_exp shape#4202] +[visit_id shape#4202] +[visit_exp (`%X%`_shape{lanetype#25851, dim#25851, i#109760}(`F32`_lanetype, `%`_dim{i#109767}(4)), `NEAREST`_vunop_)] +[visit_exp `%X%`_shape{lanetype#25851, dim#25851, i#109760}(`F32`_lanetype, `%`_dim{i#109767}(4))] +[visit_exp lanetype#25851] +[visit_id lanetype#25851] +[visit_exp dim#25851] +[visit_id dim#25851] +[visit_exp i#109760] +[visit_id i#109760] +[visit_exp (`F32`_lanetype, `%`_dim{i#109767}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#109767}(4)] +[visit_exp i#109767] +[visit_id i#109767] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `NEAREST`_vunop_] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I dim#25893 i#109832 i#109839 lanetype#25893 shape#4204 +dims \ I = dim#25893, i#109832, i#109839, lanetype#25893, shape#4204 +[visit_exp `VUNOP`_instr{shape#4204}(`%X%`_shape{lanetype#25893, dim#25893, i#109832}(`F64`_lanetype, `%`_dim{i#109839}(2)), `ABS`_vunop_)] +[visit_exp shape#4204] +[visit_id shape#4204] +[visit_exp (`%X%`_shape{lanetype#25893, dim#25893, i#109832}(`F64`_lanetype, `%`_dim{i#109839}(2)), `ABS`_vunop_)] +[visit_exp `%X%`_shape{lanetype#25893, dim#25893, i#109832}(`F64`_lanetype, `%`_dim{i#109839}(2))] +[visit_exp lanetype#25893] +[visit_id lanetype#25893] +[visit_exp dim#25893] +[visit_id dim#25893] +[visit_exp i#109832] +[visit_id i#109832] +[visit_exp (`F64`_lanetype, `%`_dim{i#109839}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#109839}(2)] +[visit_exp i#109839] +[visit_id i#109839] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `ABS`_vunop_] +[visit_exp ()] +[check_dims] I dim#25935 i#109904 i#109911 lanetype#25935 shape#4206 +dims \ I = dim#25935, i#109904, i#109911, lanetype#25935, shape#4206 +[visit_exp `VUNOP`_instr{shape#4206}(`%X%`_shape{lanetype#25935, dim#25935, i#109904}(`F64`_lanetype, `%`_dim{i#109911}(2)), `NEG`_vunop_)] +[visit_exp shape#4206] +[visit_id shape#4206] +[visit_exp (`%X%`_shape{lanetype#25935, dim#25935, i#109904}(`F64`_lanetype, `%`_dim{i#109911}(2)), `NEG`_vunop_)] +[visit_exp `%X%`_shape{lanetype#25935, dim#25935, i#109904}(`F64`_lanetype, `%`_dim{i#109911}(2))] +[visit_exp lanetype#25935] +[visit_id lanetype#25935] +[visit_exp dim#25935] +[visit_id dim#25935] +[visit_exp i#109904] +[visit_id i#109904] +[visit_exp (`F64`_lanetype, `%`_dim{i#109911}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#109911}(2)] +[visit_exp i#109911] +[visit_id i#109911] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `NEG`_vunop_] +[visit_exp ()] +[check_dims] I dim#25977 i#109976 i#109983 lanetype#25977 shape#4208 +dims \ I = dim#25977, i#109976, i#109983, lanetype#25977, shape#4208 +[visit_exp `VUNOP`_instr{shape#4208}(`%X%`_shape{lanetype#25977, dim#25977, i#109976}(`F64`_lanetype, `%`_dim{i#109983}(2)), `SQRT`_vunop_)] +[visit_exp shape#4208] +[visit_id shape#4208] +[visit_exp (`%X%`_shape{lanetype#25977, dim#25977, i#109976}(`F64`_lanetype, `%`_dim{i#109983}(2)), `SQRT`_vunop_)] +[visit_exp `%X%`_shape{lanetype#25977, dim#25977, i#109976}(`F64`_lanetype, `%`_dim{i#109983}(2))] +[visit_exp lanetype#25977] +[visit_id lanetype#25977] +[visit_exp dim#25977] +[visit_id dim#25977] +[visit_exp i#109976] +[visit_id i#109976] +[visit_exp (`F64`_lanetype, `%`_dim{i#109983}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#109983}(2)] +[visit_exp i#109983] +[visit_id i#109983] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `SQRT`_vunop_] +[visit_exp ()] +[check_dims] I dim#26019 i#110048 i#110055 lanetype#26019 shape#4210 +dims \ I = dim#26019, i#110048, i#110055, lanetype#26019, shape#4210 +[visit_exp `VUNOP`_instr{shape#4210}(`%X%`_shape{lanetype#26019, dim#26019, i#110048}(`F64`_lanetype, `%`_dim{i#110055}(2)), `CEIL`_vunop_)] +[visit_exp shape#4210] +[visit_id shape#4210] +[visit_exp (`%X%`_shape{lanetype#26019, dim#26019, i#110048}(`F64`_lanetype, `%`_dim{i#110055}(2)), `CEIL`_vunop_)] +[visit_exp `%X%`_shape{lanetype#26019, dim#26019, i#110048}(`F64`_lanetype, `%`_dim{i#110055}(2))] +[visit_exp lanetype#26019] +[visit_id lanetype#26019] +[visit_exp dim#26019] +[visit_id dim#26019] +[visit_exp i#110048] +[visit_id i#110048] +[visit_exp (`F64`_lanetype, `%`_dim{i#110055}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#110055}(2)] +[visit_exp i#110055] +[visit_id i#110055] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `CEIL`_vunop_] +[visit_exp ()] +[check_dims] I dim#26061 i#110120 i#110127 lanetype#26061 shape#4212 +dims \ I = dim#26061, i#110120, i#110127, lanetype#26061, shape#4212 +[visit_exp `VUNOP`_instr{shape#4212}(`%X%`_shape{lanetype#26061, dim#26061, i#110120}(`F64`_lanetype, `%`_dim{i#110127}(2)), `FLOOR`_vunop_)] +[visit_exp shape#4212] +[visit_id shape#4212] +[visit_exp (`%X%`_shape{lanetype#26061, dim#26061, i#110120}(`F64`_lanetype, `%`_dim{i#110127}(2)), `FLOOR`_vunop_)] +[visit_exp `%X%`_shape{lanetype#26061, dim#26061, i#110120}(`F64`_lanetype, `%`_dim{i#110127}(2))] +[visit_exp lanetype#26061] +[visit_id lanetype#26061] +[visit_exp dim#26061] +[visit_id dim#26061] +[visit_exp i#110120] +[visit_id i#110120] +[visit_exp (`F64`_lanetype, `%`_dim{i#110127}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#110127}(2)] +[visit_exp i#110127] +[visit_id i#110127] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `FLOOR`_vunop_] +[visit_exp ()] +[check_dims] I dim#26103 i#110192 i#110199 lanetype#26103 shape#4214 +dims \ I = dim#26103, i#110192, i#110199, lanetype#26103, shape#4214 +[visit_exp `VUNOP`_instr{shape#4214}(`%X%`_shape{lanetype#26103, dim#26103, i#110192}(`F64`_lanetype, `%`_dim{i#110199}(2)), `TRUNC`_vunop_)] +[visit_exp shape#4214] +[visit_id shape#4214] +[visit_exp (`%X%`_shape{lanetype#26103, dim#26103, i#110192}(`F64`_lanetype, `%`_dim{i#110199}(2)), `TRUNC`_vunop_)] +[visit_exp `%X%`_shape{lanetype#26103, dim#26103, i#110192}(`F64`_lanetype, `%`_dim{i#110199}(2))] +[visit_exp lanetype#26103] +[visit_id lanetype#26103] +[visit_exp dim#26103] +[visit_id dim#26103] +[visit_exp i#110192] +[visit_id i#110192] +[visit_exp (`F64`_lanetype, `%`_dim{i#110199}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#110199}(2)] +[visit_exp i#110199] +[visit_id i#110199] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `TRUNC`_vunop_] +[visit_exp ()] +[check_dims] I dim#26145 i#110264 i#110271 lanetype#26145 shape#4216 +dims \ I = dim#26145, i#110264, i#110271, lanetype#26145, shape#4216 +[visit_exp `VUNOP`_instr{shape#4216}(`%X%`_shape{lanetype#26145, dim#26145, i#110264}(`F64`_lanetype, `%`_dim{i#110271}(2)), `NEAREST`_vunop_)] +[visit_exp shape#4216] +[visit_id shape#4216] +[visit_exp (`%X%`_shape{lanetype#26145, dim#26145, i#110264}(`F64`_lanetype, `%`_dim{i#110271}(2)), `NEAREST`_vunop_)] +[visit_exp `%X%`_shape{lanetype#26145, dim#26145, i#110264}(`F64`_lanetype, `%`_dim{i#110271}(2))] +[visit_exp lanetype#26145] +[visit_id lanetype#26145] +[visit_exp dim#26145] +[visit_id dim#26145] +[visit_exp i#110264] +[visit_id i#110264] +[visit_exp (`F64`_lanetype, `%`_dim{i#110271}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#110271}(2)] +[visit_exp i#110271] +[visit_id i#110271] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `NEAREST`_vunop_] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I vectype#320 vvbinop#15 +dims \ I = vectype#320, vvbinop#15 +[visit_exp `VVBINOP`_instr{vectype#320, vvbinop#15}(`V128`_vectype, `AND`_vvbinop)] +[visit_exp vectype#320] +[visit_id vectype#320] +[visit_exp vvbinop#15] +[visit_id vvbinop#15] +[visit_exp (`V128`_vectype, `AND`_vvbinop)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp `AND`_vvbinop] +[visit_exp ()] +[check_dims] I vectype#322 vvbinop#17 +dims \ I = vectype#322, vvbinop#17 +[visit_exp `VVBINOP`_instr{vectype#322, vvbinop#17}(`V128`_vectype, `ANDNOT`_vvbinop)] +[visit_exp vectype#322] +[visit_id vectype#322] +[visit_exp vvbinop#17] +[visit_id vvbinop#17] +[visit_exp (`V128`_vectype, `ANDNOT`_vvbinop)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp `ANDNOT`_vvbinop] +[visit_exp ()] +[check_dims] I vectype#324 vvbinop#19 +dims \ I = vectype#324, vvbinop#19 +[visit_exp `VVBINOP`_instr{vectype#324, vvbinop#19}(`V128`_vectype, `OR`_vvbinop)] +[visit_exp vectype#324] +[visit_id vectype#324] +[visit_exp vvbinop#19] +[visit_id vvbinop#19] +[visit_exp (`V128`_vectype, `OR`_vvbinop)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp `OR`_vvbinop] +[visit_exp ()] +[check_dims] I vectype#326 vvbinop#21 +dims \ I = vectype#326, vvbinop#21 +[visit_exp `VVBINOP`_instr{vectype#326, vvbinop#21}(`V128`_vectype, `XOR`_vvbinop)] +[visit_exp vectype#326] +[visit_id vectype#326] +[visit_exp vvbinop#21] +[visit_id vvbinop#21] +[visit_exp (`V128`_vectype, `XOR`_vvbinop)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp `XOR`_vvbinop] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I dim#26187 i#110336 i#110343 lanetype#26187 shape#4218 +dims \ I = dim#26187, i#110336, i#110343, lanetype#26187, shape#4218 +[visit_exp `VBINOP`_instr{shape#4218}(`%X%`_shape{lanetype#26187, dim#26187, i#110336}(`I8`_lanetype, `%`_dim{i#110343}(16)), `ADD`_vbinop_)] +[visit_exp shape#4218] +[visit_id shape#4218] +[visit_exp (`%X%`_shape{lanetype#26187, dim#26187, i#110336}(`I8`_lanetype, `%`_dim{i#110343}(16)), `ADD`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#26187, dim#26187, i#110336}(`I8`_lanetype, `%`_dim{i#110343}(16))] +[visit_exp lanetype#26187] +[visit_id lanetype#26187] +[visit_exp dim#26187] +[visit_id dim#26187] +[visit_exp i#110336] +[visit_id i#110336] +[visit_exp (`I8`_lanetype, `%`_dim{i#110343}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#110343}(16)] +[visit_exp i#110343] +[visit_id i#110343] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `ADD`_vbinop_] +[visit_exp ()] +[check_dims] I dim#26214 i#110393 i#110400 lanetype#26214 shape#4220 sx#25854 +dims \ I = dim#26214, i#110393, i#110400, lanetype#26214, shape#4220, sx#25854 +[visit_exp `VBINOP`_instr{shape#4220}(`%X%`_shape{lanetype#26214, dim#26214, i#110393}(`I8`_lanetype, `%`_dim{i#110400}(16)), `ADD_SAT`_vbinop_{sx#25854}(`S`_sx))] +[visit_exp shape#4220] +[visit_id shape#4220] +[visit_exp (`%X%`_shape{lanetype#26214, dim#26214, i#110393}(`I8`_lanetype, `%`_dim{i#110400}(16)), `ADD_SAT`_vbinop_{sx#25854}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#26214, dim#26214, i#110393}(`I8`_lanetype, `%`_dim{i#110400}(16))] +[visit_exp lanetype#26214] +[visit_id lanetype#26214] +[visit_exp dim#26214] +[visit_id dim#26214] +[visit_exp i#110393] +[visit_id i#110393] +[visit_exp (`I8`_lanetype, `%`_dim{i#110400}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#110400}(16)] +[visit_exp i#110400] +[visit_id i#110400] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `ADD_SAT`_vbinop_{sx#25854}(`S`_sx)] +[visit_exp sx#25854] +[visit_id sx#25854] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I dim#26256 i#110495 i#110502 lanetype#26256 shape#4222 sx#25978 +dims \ I = dim#26256, i#110495, i#110502, lanetype#26256, shape#4222, sx#25978 +[visit_exp `VBINOP`_instr{shape#4222}(`%X%`_shape{lanetype#26256, dim#26256, i#110495}(`I8`_lanetype, `%`_dim{i#110502}(16)), `ADD_SAT`_vbinop_{sx#25978}(`U`_sx))] +[visit_exp shape#4222] +[visit_id shape#4222] +[visit_exp (`%X%`_shape{lanetype#26256, dim#26256, i#110495}(`I8`_lanetype, `%`_dim{i#110502}(16)), `ADD_SAT`_vbinop_{sx#25978}(`U`_sx))] +[visit_exp `%X%`_shape{lanetype#26256, dim#26256, i#110495}(`I8`_lanetype, `%`_dim{i#110502}(16))] +[visit_exp lanetype#26256] +[visit_id lanetype#26256] +[visit_exp dim#26256] +[visit_id dim#26256] +[visit_exp i#110495] +[visit_id i#110495] +[visit_exp (`I8`_lanetype, `%`_dim{i#110502}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#110502}(16)] +[visit_exp i#110502] +[visit_id i#110502] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `ADD_SAT`_vbinop_{sx#25978}(`U`_sx)] +[visit_exp sx#25978] +[visit_id sx#25978] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I dim#26298 i#110597 i#110604 lanetype#26298 shape#4224 +dims \ I = dim#26298, i#110597, i#110604, lanetype#26298, shape#4224 +[visit_exp `VBINOP`_instr{shape#4224}(`%X%`_shape{lanetype#26298, dim#26298, i#110597}(`I8`_lanetype, `%`_dim{i#110604}(16)), `SUB`_vbinop_)] +[visit_exp shape#4224] +[visit_id shape#4224] +[visit_exp (`%X%`_shape{lanetype#26298, dim#26298, i#110597}(`I8`_lanetype, `%`_dim{i#110604}(16)), `SUB`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#26298, dim#26298, i#110597}(`I8`_lanetype, `%`_dim{i#110604}(16))] +[visit_exp lanetype#26298] +[visit_id lanetype#26298] +[visit_exp dim#26298] +[visit_id dim#26298] +[visit_exp i#110597] +[visit_id i#110597] +[visit_exp (`I8`_lanetype, `%`_dim{i#110604}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#110604}(16)] +[visit_exp i#110604] +[visit_id i#110604] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `SUB`_vbinop_] +[visit_exp ()] +[check_dims] I dim#26325 i#110654 i#110661 lanetype#26325 shape#4226 sx#26162 +dims \ I = dim#26325, i#110654, i#110661, lanetype#26325, shape#4226, sx#26162 +[visit_exp `VBINOP`_instr{shape#4226}(`%X%`_shape{lanetype#26325, dim#26325, i#110654}(`I8`_lanetype, `%`_dim{i#110661}(16)), `SUB_SAT`_vbinop_{sx#26162}(`S`_sx))] +[visit_exp shape#4226] +[visit_id shape#4226] +[visit_exp (`%X%`_shape{lanetype#26325, dim#26325, i#110654}(`I8`_lanetype, `%`_dim{i#110661}(16)), `SUB_SAT`_vbinop_{sx#26162}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#26325, dim#26325, i#110654}(`I8`_lanetype, `%`_dim{i#110661}(16))] +[visit_exp lanetype#26325] +[visit_id lanetype#26325] +[visit_exp dim#26325] +[visit_id dim#26325] +[visit_exp i#110654] +[visit_id i#110654] +[visit_exp (`I8`_lanetype, `%`_dim{i#110661}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#110661}(16)] +[visit_exp i#110661] +[visit_id i#110661] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `SUB_SAT`_vbinop_{sx#26162}(`S`_sx)] +[visit_exp sx#26162] +[visit_id sx#26162] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I dim#26367 i#110756 i#110763 lanetype#26367 shape#4228 sx#26286 +dims \ I = dim#26367, i#110756, i#110763, lanetype#26367, shape#4228, sx#26286 +[visit_exp `VBINOP`_instr{shape#4228}(`%X%`_shape{lanetype#26367, dim#26367, i#110756}(`I8`_lanetype, `%`_dim{i#110763}(16)), `SUB_SAT`_vbinop_{sx#26286}(`U`_sx))] +[visit_exp shape#4228] +[visit_id shape#4228] +[visit_exp (`%X%`_shape{lanetype#26367, dim#26367, i#110756}(`I8`_lanetype, `%`_dim{i#110763}(16)), `SUB_SAT`_vbinop_{sx#26286}(`U`_sx))] +[visit_exp `%X%`_shape{lanetype#26367, dim#26367, i#110756}(`I8`_lanetype, `%`_dim{i#110763}(16))] +[visit_exp lanetype#26367] +[visit_id lanetype#26367] +[visit_exp dim#26367] +[visit_id dim#26367] +[visit_exp i#110756] +[visit_id i#110756] +[visit_exp (`I8`_lanetype, `%`_dim{i#110763}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#110763}(16)] +[visit_exp i#110763] +[visit_id i#110763] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `SUB_SAT`_vbinop_{sx#26286}(`U`_sx)] +[visit_exp sx#26286] +[visit_id sx#26286] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I dim#26409 i#110858 i#110865 lanetype#26409 shape#4230 sx#26410 +dims \ I = dim#26409, i#110858, i#110865, lanetype#26409, shape#4230, sx#26410 +[visit_exp `VBINOP`_instr{shape#4230}(`%X%`_shape{lanetype#26409, dim#26409, i#110858}(`I8`_lanetype, `%`_dim{i#110865}(16)), `MIN`_vbinop_{sx#26410}(`S`_sx))] +[visit_exp shape#4230] +[visit_id shape#4230] +[visit_exp (`%X%`_shape{lanetype#26409, dim#26409, i#110858}(`I8`_lanetype, `%`_dim{i#110865}(16)), `MIN`_vbinop_{sx#26410}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#26409, dim#26409, i#110858}(`I8`_lanetype, `%`_dim{i#110865}(16))] +[visit_exp lanetype#26409] +[visit_id lanetype#26409] +[visit_exp dim#26409] +[visit_id dim#26409] +[visit_exp i#110858] +[visit_id i#110858] +[visit_exp (`I8`_lanetype, `%`_dim{i#110865}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#110865}(16)] +[visit_exp i#110865] +[visit_id i#110865] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `MIN`_vbinop_{sx#26410}(`S`_sx)] +[visit_exp sx#26410] +[visit_id sx#26410] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I dim#26451 i#110960 i#110967 lanetype#26451 shape#4232 sx#26534 +dims \ I = dim#26451, i#110960, i#110967, lanetype#26451, shape#4232, sx#26534 +[visit_exp `VBINOP`_instr{shape#4232}(`%X%`_shape{lanetype#26451, dim#26451, i#110960}(`I8`_lanetype, `%`_dim{i#110967}(16)), `MIN`_vbinop_{sx#26534}(`U`_sx))] +[visit_exp shape#4232] +[visit_id shape#4232] +[visit_exp (`%X%`_shape{lanetype#26451, dim#26451, i#110960}(`I8`_lanetype, `%`_dim{i#110967}(16)), `MIN`_vbinop_{sx#26534}(`U`_sx))] +[visit_exp `%X%`_shape{lanetype#26451, dim#26451, i#110960}(`I8`_lanetype, `%`_dim{i#110967}(16))] +[visit_exp lanetype#26451] +[visit_id lanetype#26451] +[visit_exp dim#26451] +[visit_id dim#26451] +[visit_exp i#110960] +[visit_id i#110960] +[visit_exp (`I8`_lanetype, `%`_dim{i#110967}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#110967}(16)] +[visit_exp i#110967] +[visit_id i#110967] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `MIN`_vbinop_{sx#26534}(`U`_sx)] +[visit_exp sx#26534] +[visit_id sx#26534] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I dim#26493 i#111062 i#111069 lanetype#26493 shape#4234 sx#26658 +dims \ I = dim#26493, i#111062, i#111069, lanetype#26493, shape#4234, sx#26658 +[visit_exp `VBINOP`_instr{shape#4234}(`%X%`_shape{lanetype#26493, dim#26493, i#111062}(`I8`_lanetype, `%`_dim{i#111069}(16)), `MAX`_vbinop_{sx#26658}(`S`_sx))] +[visit_exp shape#4234] +[visit_id shape#4234] +[visit_exp (`%X%`_shape{lanetype#26493, dim#26493, i#111062}(`I8`_lanetype, `%`_dim{i#111069}(16)), `MAX`_vbinop_{sx#26658}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#26493, dim#26493, i#111062}(`I8`_lanetype, `%`_dim{i#111069}(16))] +[visit_exp lanetype#26493] +[visit_id lanetype#26493] +[visit_exp dim#26493] +[visit_id dim#26493] +[visit_exp i#111062] +[visit_id i#111062] +[visit_exp (`I8`_lanetype, `%`_dim{i#111069}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#111069}(16)] +[visit_exp i#111069] +[visit_id i#111069] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `MAX`_vbinop_{sx#26658}(`S`_sx)] +[visit_exp sx#26658] +[visit_id sx#26658] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I dim#26535 i#111164 i#111171 lanetype#26535 shape#4236 sx#26782 +dims \ I = dim#26535, i#111164, i#111171, lanetype#26535, shape#4236, sx#26782 +[visit_exp `VBINOP`_instr{shape#4236}(`%X%`_shape{lanetype#26535, dim#26535, i#111164}(`I8`_lanetype, `%`_dim{i#111171}(16)), `MAX`_vbinop_{sx#26782}(`U`_sx))] +[visit_exp shape#4236] +[visit_id shape#4236] +[visit_exp (`%X%`_shape{lanetype#26535, dim#26535, i#111164}(`I8`_lanetype, `%`_dim{i#111171}(16)), `MAX`_vbinop_{sx#26782}(`U`_sx))] +[visit_exp `%X%`_shape{lanetype#26535, dim#26535, i#111164}(`I8`_lanetype, `%`_dim{i#111171}(16))] +[visit_exp lanetype#26535] +[visit_id lanetype#26535] +[visit_exp dim#26535] +[visit_id dim#26535] +[visit_exp i#111164] +[visit_id i#111164] +[visit_exp (`I8`_lanetype, `%`_dim{i#111171}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#111171}(16)] +[visit_exp i#111171] +[visit_id i#111171] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `MAX`_vbinop_{sx#26782}(`U`_sx)] +[visit_exp sx#26782] +[visit_id sx#26782] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I dim#26577 i#111266 i#111273 lanetype#26577 shape#4238 +dims \ I = dim#26577, i#111266, i#111273, lanetype#26577, shape#4238 +[visit_exp `VBINOP`_instr{shape#4238}(`%X%`_shape{lanetype#26577, dim#26577, i#111266}(`I8`_lanetype, `%`_dim{i#111273}(16)), `AVGRU`_vbinop_)] +[visit_exp shape#4238] +[visit_id shape#4238] +[visit_exp (`%X%`_shape{lanetype#26577, dim#26577, i#111266}(`I8`_lanetype, `%`_dim{i#111273}(16)), `AVGRU`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#26577, dim#26577, i#111266}(`I8`_lanetype, `%`_dim{i#111273}(16))] +[visit_exp lanetype#26577] +[visit_id lanetype#26577] +[visit_exp dim#26577] +[visit_id dim#26577] +[visit_exp i#111266] +[visit_id i#111266] +[visit_exp (`I8`_lanetype, `%`_dim{i#111273}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#111273}(16)] +[visit_exp i#111273] +[visit_id i#111273] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `AVGRU`_vbinop_] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I dim#26619 i#111368 i#111375 lanetype#26619 shape#4240 +dims \ I = dim#26619, i#111368, i#111375, lanetype#26619, shape#4240 +[visit_exp `VBINOP`_instr{shape#4240}(`%X%`_shape{lanetype#26619, dim#26619, i#111368}(`I16`_lanetype, `%`_dim{i#111375}(8)), `ADD`_vbinop_)] +[visit_exp shape#4240] +[visit_id shape#4240] +[visit_exp (`%X%`_shape{lanetype#26619, dim#26619, i#111368}(`I16`_lanetype, `%`_dim{i#111375}(8)), `ADD`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#26619, dim#26619, i#111368}(`I16`_lanetype, `%`_dim{i#111375}(8))] +[visit_exp lanetype#26619] +[visit_id lanetype#26619] +[visit_exp dim#26619] +[visit_id dim#26619] +[visit_exp i#111368] +[visit_id i#111368] +[visit_exp (`I16`_lanetype, `%`_dim{i#111375}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#111375}(8)] +[visit_exp i#111375] +[visit_id i#111375] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `ADD`_vbinop_] +[visit_exp ()] +[check_dims] I dim#26646 i#111425 i#111432 lanetype#26646 shape#4242 sx#27086 +dims \ I = dim#26646, i#111425, i#111432, lanetype#26646, shape#4242, sx#27086 +[visit_exp `VBINOP`_instr{shape#4242}(`%X%`_shape{lanetype#26646, dim#26646, i#111425}(`I16`_lanetype, `%`_dim{i#111432}(8)), `ADD_SAT`_vbinop_{sx#27086}(`S`_sx))] +[visit_exp shape#4242] +[visit_id shape#4242] +[visit_exp (`%X%`_shape{lanetype#26646, dim#26646, i#111425}(`I16`_lanetype, `%`_dim{i#111432}(8)), `ADD_SAT`_vbinop_{sx#27086}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#26646, dim#26646, i#111425}(`I16`_lanetype, `%`_dim{i#111432}(8))] +[visit_exp lanetype#26646] +[visit_id lanetype#26646] +[visit_exp dim#26646] +[visit_id dim#26646] +[visit_exp i#111425] +[visit_id i#111425] +[visit_exp (`I16`_lanetype, `%`_dim{i#111432}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#111432}(8)] +[visit_exp i#111432] +[visit_id i#111432] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `ADD_SAT`_vbinop_{sx#27086}(`S`_sx)] +[visit_exp sx#27086] +[visit_id sx#27086] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I dim#26688 i#111527 i#111534 lanetype#26688 shape#4244 sx#27210 +dims \ I = dim#26688, i#111527, i#111534, lanetype#26688, shape#4244, sx#27210 +[visit_exp `VBINOP`_instr{shape#4244}(`%X%`_shape{lanetype#26688, dim#26688, i#111527}(`I16`_lanetype, `%`_dim{i#111534}(8)), `ADD_SAT`_vbinop_{sx#27210}(`U`_sx))] +[visit_exp shape#4244] +[visit_id shape#4244] +[visit_exp (`%X%`_shape{lanetype#26688, dim#26688, i#111527}(`I16`_lanetype, `%`_dim{i#111534}(8)), `ADD_SAT`_vbinop_{sx#27210}(`U`_sx))] +[visit_exp `%X%`_shape{lanetype#26688, dim#26688, i#111527}(`I16`_lanetype, `%`_dim{i#111534}(8))] +[visit_exp lanetype#26688] +[visit_id lanetype#26688] +[visit_exp dim#26688] +[visit_id dim#26688] +[visit_exp i#111527] +[visit_id i#111527] +[visit_exp (`I16`_lanetype, `%`_dim{i#111534}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#111534}(8)] +[visit_exp i#111534] +[visit_id i#111534] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `ADD_SAT`_vbinop_{sx#27210}(`U`_sx)] +[visit_exp sx#27210] +[visit_id sx#27210] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I dim#26730 i#111629 i#111636 lanetype#26730 shape#4246 +dims \ I = dim#26730, i#111629, i#111636, lanetype#26730, shape#4246 +[visit_exp `VBINOP`_instr{shape#4246}(`%X%`_shape{lanetype#26730, dim#26730, i#111629}(`I16`_lanetype, `%`_dim{i#111636}(8)), `SUB`_vbinop_)] +[visit_exp shape#4246] +[visit_id shape#4246] +[visit_exp (`%X%`_shape{lanetype#26730, dim#26730, i#111629}(`I16`_lanetype, `%`_dim{i#111636}(8)), `SUB`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#26730, dim#26730, i#111629}(`I16`_lanetype, `%`_dim{i#111636}(8))] +[visit_exp lanetype#26730] +[visit_id lanetype#26730] +[visit_exp dim#26730] +[visit_id dim#26730] +[visit_exp i#111629] +[visit_id i#111629] +[visit_exp (`I16`_lanetype, `%`_dim{i#111636}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#111636}(8)] +[visit_exp i#111636] +[visit_id i#111636] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `SUB`_vbinop_] +[visit_exp ()] +[check_dims] I dim#26757 i#111686 i#111693 lanetype#26757 shape#4248 sx#27394 +dims \ I = dim#26757, i#111686, i#111693, lanetype#26757, shape#4248, sx#27394 +[visit_exp `VBINOP`_instr{shape#4248}(`%X%`_shape{lanetype#26757, dim#26757, i#111686}(`I16`_lanetype, `%`_dim{i#111693}(8)), `SUB_SAT`_vbinop_{sx#27394}(`S`_sx))] +[visit_exp shape#4248] +[visit_id shape#4248] +[visit_exp (`%X%`_shape{lanetype#26757, dim#26757, i#111686}(`I16`_lanetype, `%`_dim{i#111693}(8)), `SUB_SAT`_vbinop_{sx#27394}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#26757, dim#26757, i#111686}(`I16`_lanetype, `%`_dim{i#111693}(8))] +[visit_exp lanetype#26757] +[visit_id lanetype#26757] +[visit_exp dim#26757] +[visit_id dim#26757] +[visit_exp i#111686] +[visit_id i#111686] +[visit_exp (`I16`_lanetype, `%`_dim{i#111693}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#111693}(8)] +[visit_exp i#111693] +[visit_id i#111693] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `SUB_SAT`_vbinop_{sx#27394}(`S`_sx)] +[visit_exp sx#27394] +[visit_id sx#27394] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I dim#26799 i#111788 i#111795 lanetype#26799 shape#4250 sx#27518 +dims \ I = dim#26799, i#111788, i#111795, lanetype#26799, shape#4250, sx#27518 +[visit_exp `VBINOP`_instr{shape#4250}(`%X%`_shape{lanetype#26799, dim#26799, i#111788}(`I16`_lanetype, `%`_dim{i#111795}(8)), `SUB_SAT`_vbinop_{sx#27518}(`U`_sx))] +[visit_exp shape#4250] +[visit_id shape#4250] +[visit_exp (`%X%`_shape{lanetype#26799, dim#26799, i#111788}(`I16`_lanetype, `%`_dim{i#111795}(8)), `SUB_SAT`_vbinop_{sx#27518}(`U`_sx))] +[visit_exp `%X%`_shape{lanetype#26799, dim#26799, i#111788}(`I16`_lanetype, `%`_dim{i#111795}(8))] +[visit_exp lanetype#26799] +[visit_id lanetype#26799] +[visit_exp dim#26799] +[visit_id dim#26799] +[visit_exp i#111788] +[visit_id i#111788] +[visit_exp (`I16`_lanetype, `%`_dim{i#111795}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#111795}(8)] +[visit_exp i#111795] +[visit_id i#111795] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `SUB_SAT`_vbinop_{sx#27518}(`U`_sx)] +[visit_exp sx#27518] +[visit_id sx#27518] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I dim#26841 i#111890 i#111897 lanetype#26841 shape#4252 +dims \ I = dim#26841, i#111890, i#111897, lanetype#26841, shape#4252 +[visit_exp `VBINOP`_instr{shape#4252}(`%X%`_shape{lanetype#26841, dim#26841, i#111890}(`I16`_lanetype, `%`_dim{i#111897}(8)), `MUL`_vbinop_)] +[visit_exp shape#4252] +[visit_id shape#4252] +[visit_exp (`%X%`_shape{lanetype#26841, dim#26841, i#111890}(`I16`_lanetype, `%`_dim{i#111897}(8)), `MUL`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#26841, dim#26841, i#111890}(`I16`_lanetype, `%`_dim{i#111897}(8))] +[visit_exp lanetype#26841] +[visit_id lanetype#26841] +[visit_exp dim#26841] +[visit_id dim#26841] +[visit_exp i#111890] +[visit_id i#111890] +[visit_exp (`I16`_lanetype, `%`_dim{i#111897}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#111897}(8)] +[visit_exp i#111897] +[visit_id i#111897] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `MUL`_vbinop_] +[visit_exp ()] +[check_dims] I dim#26868 i#111947 i#111954 lanetype#26868 shape#4254 sx#27702 +dims \ I = dim#26868, i#111947, i#111954, lanetype#26868, shape#4254, sx#27702 +[visit_exp `VBINOP`_instr{shape#4254}(`%X%`_shape{lanetype#26868, dim#26868, i#111947}(`I16`_lanetype, `%`_dim{i#111954}(8)), `MIN`_vbinop_{sx#27702}(`S`_sx))] +[visit_exp shape#4254] +[visit_id shape#4254] +[visit_exp (`%X%`_shape{lanetype#26868, dim#26868, i#111947}(`I16`_lanetype, `%`_dim{i#111954}(8)), `MIN`_vbinop_{sx#27702}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#26868, dim#26868, i#111947}(`I16`_lanetype, `%`_dim{i#111954}(8))] +[visit_exp lanetype#26868] +[visit_id lanetype#26868] +[visit_exp dim#26868] +[visit_id dim#26868] +[visit_exp i#111947] +[visit_id i#111947] +[visit_exp (`I16`_lanetype, `%`_dim{i#111954}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#111954}(8)] +[visit_exp i#111954] +[visit_id i#111954] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `MIN`_vbinop_{sx#27702}(`S`_sx)] +[visit_exp sx#27702] +[visit_id sx#27702] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I dim#26910 i#112049 i#112056 lanetype#26910 shape#4256 sx#27826 +dims \ I = dim#26910, i#112049, i#112056, lanetype#26910, shape#4256, sx#27826 +[visit_exp `VBINOP`_instr{shape#4256}(`%X%`_shape{lanetype#26910, dim#26910, i#112049}(`I16`_lanetype, `%`_dim{i#112056}(8)), `MIN`_vbinop_{sx#27826}(`U`_sx))] +[visit_exp shape#4256] +[visit_id shape#4256] +[visit_exp (`%X%`_shape{lanetype#26910, dim#26910, i#112049}(`I16`_lanetype, `%`_dim{i#112056}(8)), `MIN`_vbinop_{sx#27826}(`U`_sx))] +[visit_exp `%X%`_shape{lanetype#26910, dim#26910, i#112049}(`I16`_lanetype, `%`_dim{i#112056}(8))] +[visit_exp lanetype#26910] +[visit_id lanetype#26910] +[visit_exp dim#26910] +[visit_id dim#26910] +[visit_exp i#112049] +[visit_id i#112049] +[visit_exp (`I16`_lanetype, `%`_dim{i#112056}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#112056}(8)] +[visit_exp i#112056] +[visit_id i#112056] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `MIN`_vbinop_{sx#27826}(`U`_sx)] +[visit_exp sx#27826] +[visit_id sx#27826] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I dim#26952 i#112151 i#112158 lanetype#26952 shape#4258 sx#27950 +dims \ I = dim#26952, i#112151, i#112158, lanetype#26952, shape#4258, sx#27950 +[visit_exp `VBINOP`_instr{shape#4258}(`%X%`_shape{lanetype#26952, dim#26952, i#112151}(`I16`_lanetype, `%`_dim{i#112158}(8)), `MAX`_vbinop_{sx#27950}(`S`_sx))] +[visit_exp shape#4258] +[visit_id shape#4258] +[visit_exp (`%X%`_shape{lanetype#26952, dim#26952, i#112151}(`I16`_lanetype, `%`_dim{i#112158}(8)), `MAX`_vbinop_{sx#27950}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#26952, dim#26952, i#112151}(`I16`_lanetype, `%`_dim{i#112158}(8))] +[visit_exp lanetype#26952] +[visit_id lanetype#26952] +[visit_exp dim#26952] +[visit_id dim#26952] +[visit_exp i#112151] +[visit_id i#112151] +[visit_exp (`I16`_lanetype, `%`_dim{i#112158}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#112158}(8)] +[visit_exp i#112158] +[visit_id i#112158] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `MAX`_vbinop_{sx#27950}(`S`_sx)] +[visit_exp sx#27950] +[visit_id sx#27950] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I dim#26994 i#112253 i#112260 lanetype#26994 shape#4260 sx#28074 +dims \ I = dim#26994, i#112253, i#112260, lanetype#26994, shape#4260, sx#28074 +[visit_exp `VBINOP`_instr{shape#4260}(`%X%`_shape{lanetype#26994, dim#26994, i#112253}(`I16`_lanetype, `%`_dim{i#112260}(8)), `MAX`_vbinop_{sx#28074}(`U`_sx))] +[visit_exp shape#4260] +[visit_id shape#4260] +[visit_exp (`%X%`_shape{lanetype#26994, dim#26994, i#112253}(`I16`_lanetype, `%`_dim{i#112260}(8)), `MAX`_vbinop_{sx#28074}(`U`_sx))] +[visit_exp `%X%`_shape{lanetype#26994, dim#26994, i#112253}(`I16`_lanetype, `%`_dim{i#112260}(8))] +[visit_exp lanetype#26994] +[visit_id lanetype#26994] +[visit_exp dim#26994] +[visit_id dim#26994] +[visit_exp i#112253] +[visit_id i#112253] +[visit_exp (`I16`_lanetype, `%`_dim{i#112260}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#112260}(8)] +[visit_exp i#112260] +[visit_id i#112260] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `MAX`_vbinop_{sx#28074}(`U`_sx)] +[visit_exp sx#28074] +[visit_id sx#28074] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I dim#27036 i#112355 i#112362 lanetype#27036 shape#4262 +dims \ I = dim#27036, i#112355, i#112362, lanetype#27036, shape#4262 +[visit_exp `VBINOP`_instr{shape#4262}(`%X%`_shape{lanetype#27036, dim#27036, i#112355}(`I16`_lanetype, `%`_dim{i#112362}(8)), `AVGRU`_vbinop_)] +[visit_exp shape#4262] +[visit_id shape#4262] +[visit_exp (`%X%`_shape{lanetype#27036, dim#27036, i#112355}(`I16`_lanetype, `%`_dim{i#112362}(8)), `AVGRU`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#27036, dim#27036, i#112355}(`I16`_lanetype, `%`_dim{i#112362}(8))] +[visit_exp lanetype#27036] +[visit_id lanetype#27036] +[visit_exp dim#27036] +[visit_id dim#27036] +[visit_exp i#112355] +[visit_id i#112355] +[visit_exp (`I16`_lanetype, `%`_dim{i#112362}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#112362}(8)] +[visit_exp i#112362] +[visit_id i#112362] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `AVGRU`_vbinop_] +[visit_exp ()] +[check_dims] I dim#27078 i#112457 i#112464 lanetype#27078 shape#4264 +dims \ I = dim#27078, i#112457, i#112464, lanetype#27078, shape#4264 +[visit_exp `VBINOP`_instr{shape#4264}(`%X%`_shape{lanetype#27078, dim#27078, i#112457}(`I16`_lanetype, `%`_dim{i#112464}(8)), `Q15MULR_SATS`_vbinop_)] +[visit_exp shape#4264] +[visit_id shape#4264] +[visit_exp (`%X%`_shape{lanetype#27078, dim#27078, i#112457}(`I16`_lanetype, `%`_dim{i#112464}(8)), `Q15MULR_SATS`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#27078, dim#27078, i#112457}(`I16`_lanetype, `%`_dim{i#112464}(8))] +[visit_exp lanetype#27078] +[visit_id lanetype#27078] +[visit_exp dim#27078] +[visit_id dim#27078] +[visit_exp i#112457] +[visit_id i#112457] +[visit_exp (`I16`_lanetype, `%`_dim{i#112464}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#112464}(8)] +[visit_exp i#112464] +[visit_id i#112464] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `Q15MULR_SATS`_vbinop_] +[visit_exp ()] +[check_dims] I dim#27120 i#112559 i#112566 lanetype#27120 shape#4266 +dims \ I = dim#27120, i#112559, i#112566, lanetype#27120, shape#4266 +[visit_exp `VBINOP`_instr{shape#4266}(`%X%`_shape{lanetype#27120, dim#27120, i#112559}(`I16`_lanetype, `%`_dim{i#112566}(8)), `RELAXED_Q15MULRS`_vbinop_)] +[visit_exp shape#4266] +[visit_id shape#4266] +[visit_exp (`%X%`_shape{lanetype#27120, dim#27120, i#112559}(`I16`_lanetype, `%`_dim{i#112566}(8)), `RELAXED_Q15MULRS`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#27120, dim#27120, i#112559}(`I16`_lanetype, `%`_dim{i#112566}(8))] +[visit_exp lanetype#27120] +[visit_id lanetype#27120] +[visit_exp dim#27120] +[visit_id dim#27120] +[visit_exp i#112559] +[visit_id i#112559] +[visit_exp (`I16`_lanetype, `%`_dim{i#112566}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#112566}(8)] +[visit_exp i#112566] +[visit_id i#112566] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `RELAXED_Q15MULRS`_vbinop_] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I dim#27162 i#112661 i#112668 lanetype#27162 shape#4268 +dims \ I = dim#27162, i#112661, i#112668, lanetype#27162, shape#4268 +[visit_exp `VBINOP`_instr{shape#4268}(`%X%`_shape{lanetype#27162, dim#27162, i#112661}(`I32`_lanetype, `%`_dim{i#112668}(4)), `ADD`_vbinop_)] +[visit_exp shape#4268] +[visit_id shape#4268] +[visit_exp (`%X%`_shape{lanetype#27162, dim#27162, i#112661}(`I32`_lanetype, `%`_dim{i#112668}(4)), `ADD`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#27162, dim#27162, i#112661}(`I32`_lanetype, `%`_dim{i#112668}(4))] +[visit_exp lanetype#27162] +[visit_id lanetype#27162] +[visit_exp dim#27162] +[visit_id dim#27162] +[visit_exp i#112661] +[visit_id i#112661] +[visit_exp (`I32`_lanetype, `%`_dim{i#112668}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#112668}(4)] +[visit_exp i#112668] +[visit_id i#112668] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `ADD`_vbinop_] +[visit_exp ()] +[check_dims] I dim#27189 i#112718 i#112725 lanetype#27189 shape#4270 +dims \ I = dim#27189, i#112718, i#112725, lanetype#27189, shape#4270 +[visit_exp `VBINOP`_instr{shape#4270}(`%X%`_shape{lanetype#27189, dim#27189, i#112718}(`I32`_lanetype, `%`_dim{i#112725}(4)), `SUB`_vbinop_)] +[visit_exp shape#4270] +[visit_id shape#4270] +[visit_exp (`%X%`_shape{lanetype#27189, dim#27189, i#112718}(`I32`_lanetype, `%`_dim{i#112725}(4)), `SUB`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#27189, dim#27189, i#112718}(`I32`_lanetype, `%`_dim{i#112725}(4))] +[visit_exp lanetype#27189] +[visit_id lanetype#27189] +[visit_exp dim#27189] +[visit_id dim#27189] +[visit_exp i#112718] +[visit_id i#112718] +[visit_exp (`I32`_lanetype, `%`_dim{i#112725}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#112725}(4)] +[visit_exp i#112725] +[visit_id i#112725] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `SUB`_vbinop_] +[visit_exp ()] +[check_dims] I dim#27216 i#112775 i#112782 lanetype#27216 shape#4272 +dims \ I = dim#27216, i#112775, i#112782, lanetype#27216, shape#4272 +[visit_exp `VBINOP`_instr{shape#4272}(`%X%`_shape{lanetype#27216, dim#27216, i#112775}(`I32`_lanetype, `%`_dim{i#112782}(4)), `MUL`_vbinop_)] +[visit_exp shape#4272] +[visit_id shape#4272] +[visit_exp (`%X%`_shape{lanetype#27216, dim#27216, i#112775}(`I32`_lanetype, `%`_dim{i#112782}(4)), `MUL`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#27216, dim#27216, i#112775}(`I32`_lanetype, `%`_dim{i#112782}(4))] +[visit_exp lanetype#27216] +[visit_id lanetype#27216] +[visit_exp dim#27216] +[visit_id dim#27216] +[visit_exp i#112775] +[visit_id i#112775] +[visit_exp (`I32`_lanetype, `%`_dim{i#112782}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#112782}(4)] +[visit_exp i#112782] +[visit_id i#112782] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `MUL`_vbinop_] +[visit_exp ()] +[check_dims] I dim#27243 i#112832 i#112839 lanetype#27243 shape#4274 sx#28738 +dims \ I = dim#27243, i#112832, i#112839, lanetype#27243, shape#4274, sx#28738 +[visit_exp `VBINOP`_instr{shape#4274}(`%X%`_shape{lanetype#27243, dim#27243, i#112832}(`I32`_lanetype, `%`_dim{i#112839}(4)), `MIN`_vbinop_{sx#28738}(`S`_sx))] +[visit_exp shape#4274] +[visit_id shape#4274] +[visit_exp (`%X%`_shape{lanetype#27243, dim#27243, i#112832}(`I32`_lanetype, `%`_dim{i#112839}(4)), `MIN`_vbinop_{sx#28738}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#27243, dim#27243, i#112832}(`I32`_lanetype, `%`_dim{i#112839}(4))] +[visit_exp lanetype#27243] +[visit_id lanetype#27243] +[visit_exp dim#27243] +[visit_id dim#27243] +[visit_exp i#112832] +[visit_id i#112832] +[visit_exp (`I32`_lanetype, `%`_dim{i#112839}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#112839}(4)] +[visit_exp i#112839] +[visit_id i#112839] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `MIN`_vbinop_{sx#28738}(`S`_sx)] +[visit_exp sx#28738] +[visit_id sx#28738] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I dim#27285 i#112934 i#112941 lanetype#27285 shape#4276 sx#28862 +dims \ I = dim#27285, i#112934, i#112941, lanetype#27285, shape#4276, sx#28862 +[visit_exp `VBINOP`_instr{shape#4276}(`%X%`_shape{lanetype#27285, dim#27285, i#112934}(`I32`_lanetype, `%`_dim{i#112941}(4)), `MIN`_vbinop_{sx#28862}(`U`_sx))] +[visit_exp shape#4276] +[visit_id shape#4276] +[visit_exp (`%X%`_shape{lanetype#27285, dim#27285, i#112934}(`I32`_lanetype, `%`_dim{i#112941}(4)), `MIN`_vbinop_{sx#28862}(`U`_sx))] +[visit_exp `%X%`_shape{lanetype#27285, dim#27285, i#112934}(`I32`_lanetype, `%`_dim{i#112941}(4))] +[visit_exp lanetype#27285] +[visit_id lanetype#27285] +[visit_exp dim#27285] +[visit_id dim#27285] +[visit_exp i#112934] +[visit_id i#112934] +[visit_exp (`I32`_lanetype, `%`_dim{i#112941}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#112941}(4)] +[visit_exp i#112941] +[visit_id i#112941] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `MIN`_vbinop_{sx#28862}(`U`_sx)] +[visit_exp sx#28862] +[visit_id sx#28862] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I dim#27327 i#113036 i#113043 lanetype#27327 shape#4278 sx#28986 +dims \ I = dim#27327, i#113036, i#113043, lanetype#27327, shape#4278, sx#28986 +[visit_exp `VBINOP`_instr{shape#4278}(`%X%`_shape{lanetype#27327, dim#27327, i#113036}(`I32`_lanetype, `%`_dim{i#113043}(4)), `MAX`_vbinop_{sx#28986}(`S`_sx))] +[visit_exp shape#4278] +[visit_id shape#4278] +[visit_exp (`%X%`_shape{lanetype#27327, dim#27327, i#113036}(`I32`_lanetype, `%`_dim{i#113043}(4)), `MAX`_vbinop_{sx#28986}(`S`_sx))] +[visit_exp `%X%`_shape{lanetype#27327, dim#27327, i#113036}(`I32`_lanetype, `%`_dim{i#113043}(4))] +[visit_exp lanetype#27327] +[visit_id lanetype#27327] +[visit_exp dim#27327] +[visit_id dim#27327] +[visit_exp i#113036] +[visit_id i#113036] +[visit_exp (`I32`_lanetype, `%`_dim{i#113043}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#113043}(4)] +[visit_exp i#113043] +[visit_id i#113043] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `MAX`_vbinop_{sx#28986}(`S`_sx)] +[visit_exp sx#28986] +[visit_id sx#28986] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I dim#27369 i#113138 i#113145 lanetype#27369 shape#4280 sx#29110 +dims \ I = dim#27369, i#113138, i#113145, lanetype#27369, shape#4280, sx#29110 +[visit_exp `VBINOP`_instr{shape#4280}(`%X%`_shape{lanetype#27369, dim#27369, i#113138}(`I32`_lanetype, `%`_dim{i#113145}(4)), `MAX`_vbinop_{sx#29110}(`U`_sx))] +[visit_exp shape#4280] +[visit_id shape#4280] +[visit_exp (`%X%`_shape{lanetype#27369, dim#27369, i#113138}(`I32`_lanetype, `%`_dim{i#113145}(4)), `MAX`_vbinop_{sx#29110}(`U`_sx))] +[visit_exp `%X%`_shape{lanetype#27369, dim#27369, i#113138}(`I32`_lanetype, `%`_dim{i#113145}(4))] +[visit_exp lanetype#27369] +[visit_id lanetype#27369] +[visit_exp dim#27369] +[visit_id dim#27369] +[visit_exp i#113138] +[visit_id i#113138] +[visit_exp (`I32`_lanetype, `%`_dim{i#113145}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#113145}(4)] +[visit_exp i#113145] +[visit_id i#113145] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `MAX`_vbinop_{sx#29110}(`U`_sx)] +[visit_exp sx#29110] +[visit_id sx#29110] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I dim#27411 i#113240 i#113247 lanetype#27411 shape#4282 +dims \ I = dim#27411, i#113240, i#113247, lanetype#27411, shape#4282 +[visit_exp `VBINOP`_instr{shape#4282}(`%X%`_shape{lanetype#27411, dim#27411, i#113240}(`I64`_lanetype, `%`_dim{i#113247}(2)), `ADD`_vbinop_)] +[visit_exp shape#4282] +[visit_id shape#4282] +[visit_exp (`%X%`_shape{lanetype#27411, dim#27411, i#113240}(`I64`_lanetype, `%`_dim{i#113247}(2)), `ADD`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#27411, dim#27411, i#113240}(`I64`_lanetype, `%`_dim{i#113247}(2))] +[visit_exp lanetype#27411] +[visit_id lanetype#27411] +[visit_exp dim#27411] +[visit_id dim#27411] +[visit_exp i#113240] +[visit_id i#113240] +[visit_exp (`I64`_lanetype, `%`_dim{i#113247}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#113247}(2)] +[visit_exp i#113247] +[visit_id i#113247] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `ADD`_vbinop_] +[visit_exp ()] +[check_dims] I dim#27438 i#113297 i#113304 lanetype#27438 shape#4284 +dims \ I = dim#27438, i#113297, i#113304, lanetype#27438, shape#4284 +[visit_exp `VBINOP`_instr{shape#4284}(`%X%`_shape{lanetype#27438, dim#27438, i#113297}(`I64`_lanetype, `%`_dim{i#113304}(2)), `SUB`_vbinop_)] +[visit_exp shape#4284] +[visit_id shape#4284] +[visit_exp (`%X%`_shape{lanetype#27438, dim#27438, i#113297}(`I64`_lanetype, `%`_dim{i#113304}(2)), `SUB`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#27438, dim#27438, i#113297}(`I64`_lanetype, `%`_dim{i#113304}(2))] +[visit_exp lanetype#27438] +[visit_id lanetype#27438] +[visit_exp dim#27438] +[visit_id dim#27438] +[visit_exp i#113297] +[visit_id i#113297] +[visit_exp (`I64`_lanetype, `%`_dim{i#113304}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#113304}(2)] +[visit_exp i#113304] +[visit_id i#113304] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `SUB`_vbinop_] +[visit_exp ()] +[check_dims] I dim#27465 i#113354 i#113361 lanetype#27465 shape#4286 +dims \ I = dim#27465, i#113354, i#113361, lanetype#27465, shape#4286 +[visit_exp `VBINOP`_instr{shape#4286}(`%X%`_shape{lanetype#27465, dim#27465, i#113354}(`I64`_lanetype, `%`_dim{i#113361}(2)), `MUL`_vbinop_)] +[visit_exp shape#4286] +[visit_id shape#4286] +[visit_exp (`%X%`_shape{lanetype#27465, dim#27465, i#113354}(`I64`_lanetype, `%`_dim{i#113361}(2)), `MUL`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#27465, dim#27465, i#113354}(`I64`_lanetype, `%`_dim{i#113361}(2))] +[visit_exp lanetype#27465] +[visit_id lanetype#27465] +[visit_exp dim#27465] +[visit_id dim#27465] +[visit_exp i#113354] +[visit_id i#113354] +[visit_exp (`I64`_lanetype, `%`_dim{i#113361}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#113361}(2)] +[visit_exp i#113361] +[visit_id i#113361] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `MUL`_vbinop_] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I dim#27492 i#113411 i#113418 lanetype#27492 shape#4288 +dims \ I = dim#27492, i#113411, i#113418, lanetype#27492, shape#4288 +[visit_exp `VBINOP`_instr{shape#4288}(`%X%`_shape{lanetype#27492, dim#27492, i#113411}(`F32`_lanetype, `%`_dim{i#113418}(4)), `ADD`_vbinop_)] +[visit_exp shape#4288] +[visit_id shape#4288] +[visit_exp (`%X%`_shape{lanetype#27492, dim#27492, i#113411}(`F32`_lanetype, `%`_dim{i#113418}(4)), `ADD`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#27492, dim#27492, i#113411}(`F32`_lanetype, `%`_dim{i#113418}(4))] +[visit_exp lanetype#27492] +[visit_id lanetype#27492] +[visit_exp dim#27492] +[visit_id dim#27492] +[visit_exp i#113411] +[visit_id i#113411] +[visit_exp (`F32`_lanetype, `%`_dim{i#113418}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#113418}(4)] +[visit_exp i#113418] +[visit_id i#113418] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `ADD`_vbinop_] +[visit_exp ()] +[check_dims] I dim#27534 i#113483 i#113490 lanetype#27534 shape#4290 +dims \ I = dim#27534, i#113483, i#113490, lanetype#27534, shape#4290 +[visit_exp `VBINOP`_instr{shape#4290}(`%X%`_shape{lanetype#27534, dim#27534, i#113483}(`F32`_lanetype, `%`_dim{i#113490}(4)), `SUB`_vbinop_)] +[visit_exp shape#4290] +[visit_id shape#4290] +[visit_exp (`%X%`_shape{lanetype#27534, dim#27534, i#113483}(`F32`_lanetype, `%`_dim{i#113490}(4)), `SUB`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#27534, dim#27534, i#113483}(`F32`_lanetype, `%`_dim{i#113490}(4))] +[visit_exp lanetype#27534] +[visit_id lanetype#27534] +[visit_exp dim#27534] +[visit_id dim#27534] +[visit_exp i#113483] +[visit_id i#113483] +[visit_exp (`F32`_lanetype, `%`_dim{i#113490}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#113490}(4)] +[visit_exp i#113490] +[visit_id i#113490] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `SUB`_vbinop_] +[visit_exp ()] +[check_dims] I dim#27576 i#113555 i#113562 lanetype#27576 shape#4292 +dims \ I = dim#27576, i#113555, i#113562, lanetype#27576, shape#4292 +[visit_exp `VBINOP`_instr{shape#4292}(`%X%`_shape{lanetype#27576, dim#27576, i#113555}(`F32`_lanetype, `%`_dim{i#113562}(4)), `MUL`_vbinop_)] +[visit_exp shape#4292] +[visit_id shape#4292] +[visit_exp (`%X%`_shape{lanetype#27576, dim#27576, i#113555}(`F32`_lanetype, `%`_dim{i#113562}(4)), `MUL`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#27576, dim#27576, i#113555}(`F32`_lanetype, `%`_dim{i#113562}(4))] +[visit_exp lanetype#27576] +[visit_id lanetype#27576] +[visit_exp dim#27576] +[visit_id dim#27576] +[visit_exp i#113555] +[visit_id i#113555] +[visit_exp (`F32`_lanetype, `%`_dim{i#113562}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#113562}(4)] +[visit_exp i#113562] +[visit_id i#113562] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `MUL`_vbinop_] +[visit_exp ()] +[check_dims] I dim#27618 i#113627 i#113634 lanetype#27618 shape#4294 +dims \ I = dim#27618, i#113627, i#113634, lanetype#27618, shape#4294 +[visit_exp `VBINOP`_instr{shape#4294}(`%X%`_shape{lanetype#27618, dim#27618, i#113627}(`F32`_lanetype, `%`_dim{i#113634}(4)), `DIV`_vbinop_)] +[visit_exp shape#4294] +[visit_id shape#4294] +[visit_exp (`%X%`_shape{lanetype#27618, dim#27618, i#113627}(`F32`_lanetype, `%`_dim{i#113634}(4)), `DIV`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#27618, dim#27618, i#113627}(`F32`_lanetype, `%`_dim{i#113634}(4))] +[visit_exp lanetype#27618] +[visit_id lanetype#27618] +[visit_exp dim#27618] +[visit_id dim#27618] +[visit_exp i#113627] +[visit_id i#113627] +[visit_exp (`F32`_lanetype, `%`_dim{i#113634}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#113634}(4)] +[visit_exp i#113634] +[visit_id i#113634] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `DIV`_vbinop_] +[visit_exp ()] +[check_dims] I dim#27660 i#113699 i#113706 lanetype#27660 shape#4296 +dims \ I = dim#27660, i#113699, i#113706, lanetype#27660, shape#4296 +[visit_exp `VBINOP`_instr{shape#4296}(`%X%`_shape{lanetype#27660, dim#27660, i#113699}(`F32`_lanetype, `%`_dim{i#113706}(4)), `MIN`_vbinop_)] +[visit_exp shape#4296] +[visit_id shape#4296] +[visit_exp (`%X%`_shape{lanetype#27660, dim#27660, i#113699}(`F32`_lanetype, `%`_dim{i#113706}(4)), `MIN`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#27660, dim#27660, i#113699}(`F32`_lanetype, `%`_dim{i#113706}(4))] +[visit_exp lanetype#27660] +[visit_id lanetype#27660] +[visit_exp dim#27660] +[visit_id dim#27660] +[visit_exp i#113699] +[visit_id i#113699] +[visit_exp (`F32`_lanetype, `%`_dim{i#113706}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#113706}(4)] +[visit_exp i#113706] +[visit_id i#113706] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `MIN`_vbinop_] +[visit_exp ()] +[check_dims] I dim#27702 i#113771 i#113778 lanetype#27702 shape#4298 +dims \ I = dim#27702, i#113771, i#113778, lanetype#27702, shape#4298 +[visit_exp `VBINOP`_instr{shape#4298}(`%X%`_shape{lanetype#27702, dim#27702, i#113771}(`F32`_lanetype, `%`_dim{i#113778}(4)), `MAX`_vbinop_)] +[visit_exp shape#4298] +[visit_id shape#4298] +[visit_exp (`%X%`_shape{lanetype#27702, dim#27702, i#113771}(`F32`_lanetype, `%`_dim{i#113778}(4)), `MAX`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#27702, dim#27702, i#113771}(`F32`_lanetype, `%`_dim{i#113778}(4))] +[visit_exp lanetype#27702] +[visit_id lanetype#27702] +[visit_exp dim#27702] +[visit_id dim#27702] +[visit_exp i#113771] +[visit_id i#113771] +[visit_exp (`F32`_lanetype, `%`_dim{i#113778}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#113778}(4)] +[visit_exp i#113778] +[visit_id i#113778] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `MAX`_vbinop_] +[visit_exp ()] +[check_dims] I dim#27744 i#113843 i#113850 lanetype#27744 shape#4300 +dims \ I = dim#27744, i#113843, i#113850, lanetype#27744, shape#4300 +[visit_exp `VBINOP`_instr{shape#4300}(`%X%`_shape{lanetype#27744, dim#27744, i#113843}(`F32`_lanetype, `%`_dim{i#113850}(4)), `PMIN`_vbinop_)] +[visit_exp shape#4300] +[visit_id shape#4300] +[visit_exp (`%X%`_shape{lanetype#27744, dim#27744, i#113843}(`F32`_lanetype, `%`_dim{i#113850}(4)), `PMIN`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#27744, dim#27744, i#113843}(`F32`_lanetype, `%`_dim{i#113850}(4))] +[visit_exp lanetype#27744] +[visit_id lanetype#27744] +[visit_exp dim#27744] +[visit_id dim#27744] +[visit_exp i#113843] +[visit_id i#113843] +[visit_exp (`F32`_lanetype, `%`_dim{i#113850}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#113850}(4)] +[visit_exp i#113850] +[visit_id i#113850] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `PMIN`_vbinop_] +[visit_exp ()] +[check_dims] I dim#27786 i#113915 i#113922 lanetype#27786 shape#4302 +dims \ I = dim#27786, i#113915, i#113922, lanetype#27786, shape#4302 +[visit_exp `VBINOP`_instr{shape#4302}(`%X%`_shape{lanetype#27786, dim#27786, i#113915}(`F32`_lanetype, `%`_dim{i#113922}(4)), `PMAX`_vbinop_)] +[visit_exp shape#4302] +[visit_id shape#4302] +[visit_exp (`%X%`_shape{lanetype#27786, dim#27786, i#113915}(`F32`_lanetype, `%`_dim{i#113922}(4)), `PMAX`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#27786, dim#27786, i#113915}(`F32`_lanetype, `%`_dim{i#113922}(4))] +[visit_exp lanetype#27786] +[visit_id lanetype#27786] +[visit_exp dim#27786] +[visit_id dim#27786] +[visit_exp i#113915] +[visit_id i#113915] +[visit_exp (`F32`_lanetype, `%`_dim{i#113922}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#113922}(4)] +[visit_exp i#113922] +[visit_id i#113922] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `PMAX`_vbinop_] +[visit_exp ()] +[check_dims] I dim#27828 i#113987 i#113994 lanetype#27828 shape#4304 +dims \ I = dim#27828, i#113987, i#113994, lanetype#27828, shape#4304 +[visit_exp `VBINOP`_instr{shape#4304}(`%X%`_shape{lanetype#27828, dim#27828, i#113987}(`F32`_lanetype, `%`_dim{i#113994}(4)), `RELAXED_MIN`_vbinop_)] +[visit_exp shape#4304] +[visit_id shape#4304] +[visit_exp (`%X%`_shape{lanetype#27828, dim#27828, i#113987}(`F32`_lanetype, `%`_dim{i#113994}(4)), `RELAXED_MIN`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#27828, dim#27828, i#113987}(`F32`_lanetype, `%`_dim{i#113994}(4))] +[visit_exp lanetype#27828] +[visit_id lanetype#27828] +[visit_exp dim#27828] +[visit_id dim#27828] +[visit_exp i#113987] +[visit_id i#113987] +[visit_exp (`F32`_lanetype, `%`_dim{i#113994}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#113994}(4)] +[visit_exp i#113994] +[visit_id i#113994] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `RELAXED_MIN`_vbinop_] +[visit_exp ()] +[check_dims] I dim#27870 i#114059 i#114066 lanetype#27870 shape#4306 +dims \ I = dim#27870, i#114059, i#114066, lanetype#27870, shape#4306 +[visit_exp `VBINOP`_instr{shape#4306}(`%X%`_shape{lanetype#27870, dim#27870, i#114059}(`F32`_lanetype, `%`_dim{i#114066}(4)), `RELAXED_MAX`_vbinop_)] +[visit_exp shape#4306] +[visit_id shape#4306] +[visit_exp (`%X%`_shape{lanetype#27870, dim#27870, i#114059}(`F32`_lanetype, `%`_dim{i#114066}(4)), `RELAXED_MAX`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#27870, dim#27870, i#114059}(`F32`_lanetype, `%`_dim{i#114066}(4))] +[visit_exp lanetype#27870] +[visit_id lanetype#27870] +[visit_exp dim#27870] +[visit_id dim#27870] +[visit_exp i#114059] +[visit_id i#114059] +[visit_exp (`F32`_lanetype, `%`_dim{i#114066}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#114066}(4)] +[visit_exp i#114066] +[visit_id i#114066] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `RELAXED_MAX`_vbinop_] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I dim#27912 i#114131 i#114138 lanetype#27912 shape#4308 +dims \ I = dim#27912, i#114131, i#114138, lanetype#27912, shape#4308 +[visit_exp `VBINOP`_instr{shape#4308}(`%X%`_shape{lanetype#27912, dim#27912, i#114131}(`F64`_lanetype, `%`_dim{i#114138}(2)), `ADD`_vbinop_)] +[visit_exp shape#4308] +[visit_id shape#4308] +[visit_exp (`%X%`_shape{lanetype#27912, dim#27912, i#114131}(`F64`_lanetype, `%`_dim{i#114138}(2)), `ADD`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#27912, dim#27912, i#114131}(`F64`_lanetype, `%`_dim{i#114138}(2))] +[visit_exp lanetype#27912] +[visit_id lanetype#27912] +[visit_exp dim#27912] +[visit_id dim#27912] +[visit_exp i#114131] +[visit_id i#114131] +[visit_exp (`F64`_lanetype, `%`_dim{i#114138}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#114138}(2)] +[visit_exp i#114138] +[visit_id i#114138] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `ADD`_vbinop_] +[visit_exp ()] +[check_dims] I dim#27954 i#114203 i#114210 lanetype#27954 shape#4310 +dims \ I = dim#27954, i#114203, i#114210, lanetype#27954, shape#4310 +[visit_exp `VBINOP`_instr{shape#4310}(`%X%`_shape{lanetype#27954, dim#27954, i#114203}(`F64`_lanetype, `%`_dim{i#114210}(2)), `SUB`_vbinop_)] +[visit_exp shape#4310] +[visit_id shape#4310] +[visit_exp (`%X%`_shape{lanetype#27954, dim#27954, i#114203}(`F64`_lanetype, `%`_dim{i#114210}(2)), `SUB`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#27954, dim#27954, i#114203}(`F64`_lanetype, `%`_dim{i#114210}(2))] +[visit_exp lanetype#27954] +[visit_id lanetype#27954] +[visit_exp dim#27954] +[visit_id dim#27954] +[visit_exp i#114203] +[visit_id i#114203] +[visit_exp (`F64`_lanetype, `%`_dim{i#114210}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#114210}(2)] +[visit_exp i#114210] +[visit_id i#114210] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `SUB`_vbinop_] +[visit_exp ()] +[check_dims] I dim#27996 i#114275 i#114282 lanetype#27996 shape#4312 +dims \ I = dim#27996, i#114275, i#114282, lanetype#27996, shape#4312 +[visit_exp `VBINOP`_instr{shape#4312}(`%X%`_shape{lanetype#27996, dim#27996, i#114275}(`F64`_lanetype, `%`_dim{i#114282}(2)), `MUL`_vbinop_)] +[visit_exp shape#4312] +[visit_id shape#4312] +[visit_exp (`%X%`_shape{lanetype#27996, dim#27996, i#114275}(`F64`_lanetype, `%`_dim{i#114282}(2)), `MUL`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#27996, dim#27996, i#114275}(`F64`_lanetype, `%`_dim{i#114282}(2))] +[visit_exp lanetype#27996] +[visit_id lanetype#27996] +[visit_exp dim#27996] +[visit_id dim#27996] +[visit_exp i#114275] +[visit_id i#114275] +[visit_exp (`F64`_lanetype, `%`_dim{i#114282}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#114282}(2)] +[visit_exp i#114282] +[visit_id i#114282] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `MUL`_vbinop_] +[visit_exp ()] +[check_dims] I dim#28038 i#114347 i#114354 lanetype#28038 shape#4314 +dims \ I = dim#28038, i#114347, i#114354, lanetype#28038, shape#4314 +[visit_exp `VBINOP`_instr{shape#4314}(`%X%`_shape{lanetype#28038, dim#28038, i#114347}(`F64`_lanetype, `%`_dim{i#114354}(2)), `DIV`_vbinop_)] +[visit_exp shape#4314] +[visit_id shape#4314] +[visit_exp (`%X%`_shape{lanetype#28038, dim#28038, i#114347}(`F64`_lanetype, `%`_dim{i#114354}(2)), `DIV`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#28038, dim#28038, i#114347}(`F64`_lanetype, `%`_dim{i#114354}(2))] +[visit_exp lanetype#28038] +[visit_id lanetype#28038] +[visit_exp dim#28038] +[visit_id dim#28038] +[visit_exp i#114347] +[visit_id i#114347] +[visit_exp (`F64`_lanetype, `%`_dim{i#114354}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#114354}(2)] +[visit_exp i#114354] +[visit_id i#114354] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `DIV`_vbinop_] +[visit_exp ()] +[check_dims] I dim#28080 i#114419 i#114426 lanetype#28080 shape#4316 +dims \ I = dim#28080, i#114419, i#114426, lanetype#28080, shape#4316 +[visit_exp `VBINOP`_instr{shape#4316}(`%X%`_shape{lanetype#28080, dim#28080, i#114419}(`F64`_lanetype, `%`_dim{i#114426}(2)), `MIN`_vbinop_)] +[visit_exp shape#4316] +[visit_id shape#4316] +[visit_exp (`%X%`_shape{lanetype#28080, dim#28080, i#114419}(`F64`_lanetype, `%`_dim{i#114426}(2)), `MIN`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#28080, dim#28080, i#114419}(`F64`_lanetype, `%`_dim{i#114426}(2))] +[visit_exp lanetype#28080] +[visit_id lanetype#28080] +[visit_exp dim#28080] +[visit_id dim#28080] +[visit_exp i#114419] +[visit_id i#114419] +[visit_exp (`F64`_lanetype, `%`_dim{i#114426}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#114426}(2)] +[visit_exp i#114426] +[visit_id i#114426] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `MIN`_vbinop_] +[visit_exp ()] +[check_dims] I dim#28122 i#114491 i#114498 lanetype#28122 shape#4318 +dims \ I = dim#28122, i#114491, i#114498, lanetype#28122, shape#4318 +[visit_exp `VBINOP`_instr{shape#4318}(`%X%`_shape{lanetype#28122, dim#28122, i#114491}(`F64`_lanetype, `%`_dim{i#114498}(2)), `MAX`_vbinop_)] +[visit_exp shape#4318] +[visit_id shape#4318] +[visit_exp (`%X%`_shape{lanetype#28122, dim#28122, i#114491}(`F64`_lanetype, `%`_dim{i#114498}(2)), `MAX`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#28122, dim#28122, i#114491}(`F64`_lanetype, `%`_dim{i#114498}(2))] +[visit_exp lanetype#28122] +[visit_id lanetype#28122] +[visit_exp dim#28122] +[visit_id dim#28122] +[visit_exp i#114491] +[visit_id i#114491] +[visit_exp (`F64`_lanetype, `%`_dim{i#114498}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#114498}(2)] +[visit_exp i#114498] +[visit_id i#114498] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `MAX`_vbinop_] +[visit_exp ()] +[check_dims] I dim#28164 i#114563 i#114570 lanetype#28164 shape#4320 +dims \ I = dim#28164, i#114563, i#114570, lanetype#28164, shape#4320 +[visit_exp `VBINOP`_instr{shape#4320}(`%X%`_shape{lanetype#28164, dim#28164, i#114563}(`F64`_lanetype, `%`_dim{i#114570}(2)), `PMIN`_vbinop_)] +[visit_exp shape#4320] +[visit_id shape#4320] +[visit_exp (`%X%`_shape{lanetype#28164, dim#28164, i#114563}(`F64`_lanetype, `%`_dim{i#114570}(2)), `PMIN`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#28164, dim#28164, i#114563}(`F64`_lanetype, `%`_dim{i#114570}(2))] +[visit_exp lanetype#28164] +[visit_id lanetype#28164] +[visit_exp dim#28164] +[visit_id dim#28164] +[visit_exp i#114563] +[visit_id i#114563] +[visit_exp (`F64`_lanetype, `%`_dim{i#114570}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#114570}(2)] +[visit_exp i#114570] +[visit_id i#114570] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `PMIN`_vbinop_] +[visit_exp ()] +[check_dims] I dim#28206 i#114635 i#114642 lanetype#28206 shape#4322 +dims \ I = dim#28206, i#114635, i#114642, lanetype#28206, shape#4322 +[visit_exp `VBINOP`_instr{shape#4322}(`%X%`_shape{lanetype#28206, dim#28206, i#114635}(`F64`_lanetype, `%`_dim{i#114642}(2)), `PMAX`_vbinop_)] +[visit_exp shape#4322] +[visit_id shape#4322] +[visit_exp (`%X%`_shape{lanetype#28206, dim#28206, i#114635}(`F64`_lanetype, `%`_dim{i#114642}(2)), `PMAX`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#28206, dim#28206, i#114635}(`F64`_lanetype, `%`_dim{i#114642}(2))] +[visit_exp lanetype#28206] +[visit_id lanetype#28206] +[visit_exp dim#28206] +[visit_id dim#28206] +[visit_exp i#114635] +[visit_id i#114635] +[visit_exp (`F64`_lanetype, `%`_dim{i#114642}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#114642}(2)] +[visit_exp i#114642] +[visit_id i#114642] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `PMAX`_vbinop_] +[visit_exp ()] +[check_dims] I dim#28248 i#114707 i#114714 lanetype#28248 shape#4324 +dims \ I = dim#28248, i#114707, i#114714, lanetype#28248, shape#4324 +[visit_exp `VBINOP`_instr{shape#4324}(`%X%`_shape{lanetype#28248, dim#28248, i#114707}(`F64`_lanetype, `%`_dim{i#114714}(2)), `RELAXED_MIN`_vbinop_)] +[visit_exp shape#4324] +[visit_id shape#4324] +[visit_exp (`%X%`_shape{lanetype#28248, dim#28248, i#114707}(`F64`_lanetype, `%`_dim{i#114714}(2)), `RELAXED_MIN`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#28248, dim#28248, i#114707}(`F64`_lanetype, `%`_dim{i#114714}(2))] +[visit_exp lanetype#28248] +[visit_id lanetype#28248] +[visit_exp dim#28248] +[visit_id dim#28248] +[visit_exp i#114707] +[visit_id i#114707] +[visit_exp (`F64`_lanetype, `%`_dim{i#114714}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#114714}(2)] +[visit_exp i#114714] +[visit_id i#114714] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `RELAXED_MIN`_vbinop_] +[visit_exp ()] +[check_dims] I dim#28290 i#114779 i#114786 lanetype#28290 shape#4326 +dims \ I = dim#28290, i#114779, i#114786, lanetype#28290, shape#4326 +[visit_exp `VBINOP`_instr{shape#4326}(`%X%`_shape{lanetype#28290, dim#28290, i#114779}(`F64`_lanetype, `%`_dim{i#114786}(2)), `RELAXED_MAX`_vbinop_)] +[visit_exp shape#4326] +[visit_id shape#4326] +[visit_exp (`%X%`_shape{lanetype#28290, dim#28290, i#114779}(`F64`_lanetype, `%`_dim{i#114786}(2)), `RELAXED_MAX`_vbinop_)] +[visit_exp `%X%`_shape{lanetype#28290, dim#28290, i#114779}(`F64`_lanetype, `%`_dim{i#114786}(2))] +[visit_exp lanetype#28290] +[visit_id lanetype#28290] +[visit_exp dim#28290] +[visit_id dim#28290] +[visit_exp i#114779] +[visit_id i#114779] +[visit_exp (`F64`_lanetype, `%`_dim{i#114786}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#114786}(2)] +[visit_exp i#114786] +[visit_id i#114786] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `RELAXED_MAX`_vbinop_] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I vectype#328 vvternop#9 +dims \ I = vectype#328, vvternop#9 +[visit_exp `VVTERNOP`_instr{vectype#328, vvternop#9}(`V128`_vectype, `BITSELECT`_vvternop)] +[visit_exp vectype#328] +[visit_id vectype#328] +[visit_exp vvternop#9] +[visit_id vvternop#9] +[visit_exp (`V128`_vectype, `BITSELECT`_vvternop)] +[visit_exp `V128`_vectype] +[visit_exp ()] +[visit_exp `BITSELECT`_vvternop] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I dim#28332 i#114851 i#114858 lanetype#28332 shape#4328 +dims \ I = dim#28332, i#114851, i#114858, lanetype#28332, shape#4328 +[visit_exp `VTERNOP`_instr{shape#4328}(`%X%`_shape{lanetype#28332, dim#28332, i#114851}(`I8`_lanetype, `%`_dim{i#114858}(16)), `RELAXED_LANESELECT`_vternop_)] +[visit_exp shape#4328] +[visit_id shape#4328] +[visit_exp (`%X%`_shape{lanetype#28332, dim#28332, i#114851}(`I8`_lanetype, `%`_dim{i#114858}(16)), `RELAXED_LANESELECT`_vternop_)] +[visit_exp `%X%`_shape{lanetype#28332, dim#28332, i#114851}(`I8`_lanetype, `%`_dim{i#114858}(16))] +[visit_exp lanetype#28332] +[visit_id lanetype#28332] +[visit_exp dim#28332] +[visit_id dim#28332] +[visit_exp i#114851] +[visit_id i#114851] +[visit_exp (`I8`_lanetype, `%`_dim{i#114858}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#114858}(16)] +[visit_exp i#114858] +[visit_id i#114858] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `RELAXED_LANESELECT`_vternop_] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I dim#28359 i#114908 i#114915 lanetype#28359 shape#4330 +dims \ I = dim#28359, i#114908, i#114915, lanetype#28359, shape#4330 +[visit_exp `VTERNOP`_instr{shape#4330}(`%X%`_shape{lanetype#28359, dim#28359, i#114908}(`I16`_lanetype, `%`_dim{i#114915}(8)), `RELAXED_LANESELECT`_vternop_)] +[visit_exp shape#4330] +[visit_id shape#4330] +[visit_exp (`%X%`_shape{lanetype#28359, dim#28359, i#114908}(`I16`_lanetype, `%`_dim{i#114915}(8)), `RELAXED_LANESELECT`_vternop_)] +[visit_exp `%X%`_shape{lanetype#28359, dim#28359, i#114908}(`I16`_lanetype, `%`_dim{i#114915}(8))] +[visit_exp lanetype#28359] +[visit_id lanetype#28359] +[visit_exp dim#28359] +[visit_id dim#28359] +[visit_exp i#114908] +[visit_id i#114908] +[visit_exp (`I16`_lanetype, `%`_dim{i#114915}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#114915}(8)] +[visit_exp i#114915] +[visit_id i#114915] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `RELAXED_LANESELECT`_vternop_] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I dim#28386 i#114965 i#114972 lanetype#28386 shape#4332 +dims \ I = dim#28386, i#114965, i#114972, lanetype#28386, shape#4332 +[visit_exp `VTERNOP`_instr{shape#4332}(`%X%`_shape{lanetype#28386, dim#28386, i#114965}(`I32`_lanetype, `%`_dim{i#114972}(4)), `RELAXED_LANESELECT`_vternop_)] +[visit_exp shape#4332] +[visit_id shape#4332] +[visit_exp (`%X%`_shape{lanetype#28386, dim#28386, i#114965}(`I32`_lanetype, `%`_dim{i#114972}(4)), `RELAXED_LANESELECT`_vternop_)] +[visit_exp `%X%`_shape{lanetype#28386, dim#28386, i#114965}(`I32`_lanetype, `%`_dim{i#114972}(4))] +[visit_exp lanetype#28386] +[visit_id lanetype#28386] +[visit_exp dim#28386] +[visit_id dim#28386] +[visit_exp i#114965] +[visit_id i#114965] +[visit_exp (`I32`_lanetype, `%`_dim{i#114972}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#114972}(4)] +[visit_exp i#114972] +[visit_id i#114972] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `RELAXED_LANESELECT`_vternop_] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I dim#28413 i#115022 i#115029 lanetype#28413 shape#4334 +dims \ I = dim#28413, i#115022, i#115029, lanetype#28413, shape#4334 +[visit_exp `VTERNOP`_instr{shape#4334}(`%X%`_shape{lanetype#28413, dim#28413, i#115022}(`I64`_lanetype, `%`_dim{i#115029}(2)), `RELAXED_LANESELECT`_vternop_)] +[visit_exp shape#4334] +[visit_id shape#4334] +[visit_exp (`%X%`_shape{lanetype#28413, dim#28413, i#115022}(`I64`_lanetype, `%`_dim{i#115029}(2)), `RELAXED_LANESELECT`_vternop_)] +[visit_exp `%X%`_shape{lanetype#28413, dim#28413, i#115022}(`I64`_lanetype, `%`_dim{i#115029}(2))] +[visit_exp lanetype#28413] +[visit_id lanetype#28413] +[visit_exp dim#28413] +[visit_id dim#28413] +[visit_exp i#115022] +[visit_id i#115022] +[visit_exp (`I64`_lanetype, `%`_dim{i#115029}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#115029}(2)] +[visit_exp i#115029] +[visit_id i#115029] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `RELAXED_LANESELECT`_vternop_] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I dim#28440 i#115079 i#115086 lanetype#28440 shape#4336 +dims \ I = dim#28440, i#115079, i#115086, lanetype#28440, shape#4336 +[visit_exp `VTERNOP`_instr{shape#4336}(`%X%`_shape{lanetype#28440, dim#28440, i#115079}(`F32`_lanetype, `%`_dim{i#115086}(4)), `RELAXED_MADD`_vternop_)] +[visit_exp shape#4336] +[visit_id shape#4336] +[visit_exp (`%X%`_shape{lanetype#28440, dim#28440, i#115079}(`F32`_lanetype, `%`_dim{i#115086}(4)), `RELAXED_MADD`_vternop_)] +[visit_exp `%X%`_shape{lanetype#28440, dim#28440, i#115079}(`F32`_lanetype, `%`_dim{i#115086}(4))] +[visit_exp lanetype#28440] +[visit_id lanetype#28440] +[visit_exp dim#28440] +[visit_id dim#28440] +[visit_exp i#115079] +[visit_id i#115079] +[visit_exp (`F32`_lanetype, `%`_dim{i#115086}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#115086}(4)] +[visit_exp i#115086] +[visit_id i#115086] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `RELAXED_MADD`_vternop_] +[visit_exp ()] +[check_dims] I dim#28482 i#115151 i#115158 lanetype#28482 shape#4338 +dims \ I = dim#28482, i#115151, i#115158, lanetype#28482, shape#4338 +[visit_exp `VTERNOP`_instr{shape#4338}(`%X%`_shape{lanetype#28482, dim#28482, i#115151}(`F32`_lanetype, `%`_dim{i#115158}(4)), `RELAXED_NMADD`_vternop_)] +[visit_exp shape#4338] +[visit_id shape#4338] +[visit_exp (`%X%`_shape{lanetype#28482, dim#28482, i#115151}(`F32`_lanetype, `%`_dim{i#115158}(4)), `RELAXED_NMADD`_vternop_)] +[visit_exp `%X%`_shape{lanetype#28482, dim#28482, i#115151}(`F32`_lanetype, `%`_dim{i#115158}(4))] +[visit_exp lanetype#28482] +[visit_id lanetype#28482] +[visit_exp dim#28482] +[visit_id dim#28482] +[visit_exp i#115151] +[visit_id i#115151] +[visit_exp (`F32`_lanetype, `%`_dim{i#115158}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#115158}(4)] +[visit_exp i#115158] +[visit_id i#115158] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `RELAXED_NMADD`_vternop_] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I dim#28524 i#115223 i#115230 lanetype#28524 shape#4340 +dims \ I = dim#28524, i#115223, i#115230, lanetype#28524, shape#4340 +[visit_exp `VTERNOP`_instr{shape#4340}(`%X%`_shape{lanetype#28524, dim#28524, i#115223}(`F64`_lanetype, `%`_dim{i#115230}(2)), `RELAXED_MADD`_vternop_)] +[visit_exp shape#4340] +[visit_id shape#4340] +[visit_exp (`%X%`_shape{lanetype#28524, dim#28524, i#115223}(`F64`_lanetype, `%`_dim{i#115230}(2)), `RELAXED_MADD`_vternop_)] +[visit_exp `%X%`_shape{lanetype#28524, dim#28524, i#115223}(`F64`_lanetype, `%`_dim{i#115230}(2))] +[visit_exp lanetype#28524] +[visit_id lanetype#28524] +[visit_exp dim#28524] +[visit_id dim#28524] +[visit_exp i#115223] +[visit_id i#115223] +[visit_exp (`F64`_lanetype, `%`_dim{i#115230}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#115230}(2)] +[visit_exp i#115230] +[visit_id i#115230] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `RELAXED_MADD`_vternop_] +[visit_exp ()] +[check_dims] I dim#28566 i#115295 i#115302 lanetype#28566 shape#4342 +dims \ I = dim#28566, i#115295, i#115302, lanetype#28566, shape#4342 +[visit_exp `VTERNOP`_instr{shape#4342}(`%X%`_shape{lanetype#28566, dim#28566, i#115295}(`F64`_lanetype, `%`_dim{i#115302}(2)), `RELAXED_NMADD`_vternop_)] +[visit_exp shape#4342] +[visit_id shape#4342] +[visit_exp (`%X%`_shape{lanetype#28566, dim#28566, i#115295}(`F64`_lanetype, `%`_dim{i#115302}(2)), `RELAXED_NMADD`_vternop_)] +[visit_exp `%X%`_shape{lanetype#28566, dim#28566, i#115295}(`F64`_lanetype, `%`_dim{i#115302}(2))] +[visit_exp lanetype#28566] +[visit_id lanetype#28566] +[visit_exp dim#28566] +[visit_id dim#28566] +[visit_exp i#115295] +[visit_id i#115295] +[visit_exp (`F64`_lanetype, `%`_dim{i#115302}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#115302}(2)] +[visit_exp i#115302] +[visit_id i#115302] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `RELAXED_NMADD`_vternop_] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I Jnn#488 dim#28608 i#115367 i#115374 ishape#45 lanetype#28608 shape#4354 +dims \ I = Jnn#488, dim#28608, i#115367, i#115374, ishape#45, lanetype#28608, shape#4354 +[visit_exp `VSHIFTOP`_instr{ishape#45}(`%`_ishape{shape#4354, Jnn#488}(`%X%`_shape{lanetype#28608, dim#28608, i#115367}(`I8`_lanetype, `%`_dim{i#115374}(16))), `SHL`_vshiftop_)] +[visit_exp ishape#45] +[visit_id ishape#45] +[visit_exp (`%`_ishape{shape#4354, Jnn#488}(`%X%`_shape{lanetype#28608, dim#28608, i#115367}(`I8`_lanetype, `%`_dim{i#115374}(16))), `SHL`_vshiftop_)] +[visit_exp `%`_ishape{shape#4354, Jnn#488}(`%X%`_shape{lanetype#28608, dim#28608, i#115367}(`I8`_lanetype, `%`_dim{i#115374}(16)))] +[visit_exp shape#4354] +[visit_id shape#4354] +[visit_exp Jnn#488] +[visit_id Jnn#488] +[visit_exp (`%X%`_shape{lanetype#28608, dim#28608, i#115367}(`I8`_lanetype, `%`_dim{i#115374}(16)))] +[visit_exp `%X%`_shape{lanetype#28608, dim#28608, i#115367}(`I8`_lanetype, `%`_dim{i#115374}(16))] +[visit_exp lanetype#28608] +[visit_id lanetype#28608] +[visit_exp dim#28608] +[visit_id dim#28608] +[visit_exp i#115367] +[visit_id i#115367] +[visit_exp (`I8`_lanetype, `%`_dim{i#115374}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#115374}(16)] +[visit_exp i#115374] +[visit_id i#115374] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `SHL`_vshiftop_] +[visit_exp ()] +[check_dims] I Jnn#492 dim#28665 i#115454 i#115461 ishape#47 lanetype#28665 shape#4381 sx#29339 +dims \ I = Jnn#492, dim#28665, i#115454, i#115461, ishape#47, lanetype#28665, shape#4381, sx#29339 +[visit_exp `VSHIFTOP`_instr{ishape#47}(`%`_ishape{shape#4381, Jnn#492}(`%X%`_shape{lanetype#28665, dim#28665, i#115454}(`I8`_lanetype, `%`_dim{i#115461}(16))), `SHR`_vshiftop_{sx#29339}(`S`_sx))] +[visit_exp ishape#47] +[visit_id ishape#47] +[visit_exp (`%`_ishape{shape#4381, Jnn#492}(`%X%`_shape{lanetype#28665, dim#28665, i#115454}(`I8`_lanetype, `%`_dim{i#115461}(16))), `SHR`_vshiftop_{sx#29339}(`S`_sx))] +[visit_exp `%`_ishape{shape#4381, Jnn#492}(`%X%`_shape{lanetype#28665, dim#28665, i#115454}(`I8`_lanetype, `%`_dim{i#115461}(16)))] +[visit_exp shape#4381] +[visit_id shape#4381] +[visit_exp Jnn#492] +[visit_id Jnn#492] +[visit_exp (`%X%`_shape{lanetype#28665, dim#28665, i#115454}(`I8`_lanetype, `%`_dim{i#115461}(16)))] +[visit_exp `%X%`_shape{lanetype#28665, dim#28665, i#115454}(`I8`_lanetype, `%`_dim{i#115461}(16))] +[visit_exp lanetype#28665] +[visit_id lanetype#28665] +[visit_exp dim#28665] +[visit_id dim#28665] +[visit_exp i#115454] +[visit_id i#115454] +[visit_exp (`I8`_lanetype, `%`_dim{i#115461}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#115461}(16)] +[visit_exp i#115461] +[visit_id i#115461] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `SHR`_vshiftop_{sx#29339}(`S`_sx)] +[visit_exp sx#29339] +[visit_id sx#29339] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I Jnn#496 dim#28767 i#115616 i#115623 ishape#49 lanetype#28767 shape#4423 sx#29373 +dims \ I = Jnn#496, dim#28767, i#115616, i#115623, ishape#49, lanetype#28767, shape#4423, sx#29373 +[visit_exp `VSHIFTOP`_instr{ishape#49}(`%`_ishape{shape#4423, Jnn#496}(`%X%`_shape{lanetype#28767, dim#28767, i#115616}(`I8`_lanetype, `%`_dim{i#115623}(16))), `SHR`_vshiftop_{sx#29373}(`U`_sx))] +[visit_exp ishape#49] +[visit_id ishape#49] +[visit_exp (`%`_ishape{shape#4423, Jnn#496}(`%X%`_shape{lanetype#28767, dim#28767, i#115616}(`I8`_lanetype, `%`_dim{i#115623}(16))), `SHR`_vshiftop_{sx#29373}(`U`_sx))] +[visit_exp `%`_ishape{shape#4423, Jnn#496}(`%X%`_shape{lanetype#28767, dim#28767, i#115616}(`I8`_lanetype, `%`_dim{i#115623}(16)))] +[visit_exp shape#4423] +[visit_id shape#4423] +[visit_exp Jnn#496] +[visit_id Jnn#496] +[visit_exp (`%X%`_shape{lanetype#28767, dim#28767, i#115616}(`I8`_lanetype, `%`_dim{i#115623}(16)))] +[visit_exp `%X%`_shape{lanetype#28767, dim#28767, i#115616}(`I8`_lanetype, `%`_dim{i#115623}(16))] +[visit_exp lanetype#28767] +[visit_id lanetype#28767] +[visit_exp dim#28767] +[visit_id dim#28767] +[visit_exp i#115616] +[visit_id i#115616] +[visit_exp (`I8`_lanetype, `%`_dim{i#115623}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#115623}(16)] +[visit_exp i#115623] +[visit_id i#115623] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `SHR`_vshiftop_{sx#29373}(`U`_sx)] +[visit_exp sx#29373] +[visit_id sx#29373] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I Jnn#500 dim#28869 i#115778 i#115785 ishape#51 lanetype#28869 shape#4465 +dims \ I = Jnn#500, dim#28869, i#115778, i#115785, ishape#51, lanetype#28869, shape#4465 +[visit_exp `VSHIFTOP`_instr{ishape#51}(`%`_ishape{shape#4465, Jnn#500}(`%X%`_shape{lanetype#28869, dim#28869, i#115778}(`I16`_lanetype, `%`_dim{i#115785}(8))), `SHL`_vshiftop_)] +[visit_exp ishape#51] +[visit_id ishape#51] +[visit_exp (`%`_ishape{shape#4465, Jnn#500}(`%X%`_shape{lanetype#28869, dim#28869, i#115778}(`I16`_lanetype, `%`_dim{i#115785}(8))), `SHL`_vshiftop_)] +[visit_exp `%`_ishape{shape#4465, Jnn#500}(`%X%`_shape{lanetype#28869, dim#28869, i#115778}(`I16`_lanetype, `%`_dim{i#115785}(8)))] +[visit_exp shape#4465] +[visit_id shape#4465] +[visit_exp Jnn#500] +[visit_id Jnn#500] +[visit_exp (`%X%`_shape{lanetype#28869, dim#28869, i#115778}(`I16`_lanetype, `%`_dim{i#115785}(8)))] +[visit_exp `%X%`_shape{lanetype#28869, dim#28869, i#115778}(`I16`_lanetype, `%`_dim{i#115785}(8))] +[visit_exp lanetype#28869] +[visit_id lanetype#28869] +[visit_exp dim#28869] +[visit_id dim#28869] +[visit_exp i#115778] +[visit_id i#115778] +[visit_exp (`I16`_lanetype, `%`_dim{i#115785}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#115785}(8)] +[visit_exp i#115785] +[visit_id i#115785] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `SHL`_vshiftop_] +[visit_exp ()] +[check_dims] I Jnn#504 dim#28926 i#115865 i#115872 ishape#53 lanetype#28926 shape#4492 sx#29422 +dims \ I = Jnn#504, dim#28926, i#115865, i#115872, ishape#53, lanetype#28926, shape#4492, sx#29422 +[visit_exp `VSHIFTOP`_instr{ishape#53}(`%`_ishape{shape#4492, Jnn#504}(`%X%`_shape{lanetype#28926, dim#28926, i#115865}(`I16`_lanetype, `%`_dim{i#115872}(8))), `SHR`_vshiftop_{sx#29422}(`S`_sx))] +[visit_exp ishape#53] +[visit_id ishape#53] +[visit_exp (`%`_ishape{shape#4492, Jnn#504}(`%X%`_shape{lanetype#28926, dim#28926, i#115865}(`I16`_lanetype, `%`_dim{i#115872}(8))), `SHR`_vshiftop_{sx#29422}(`S`_sx))] +[visit_exp `%`_ishape{shape#4492, Jnn#504}(`%X%`_shape{lanetype#28926, dim#28926, i#115865}(`I16`_lanetype, `%`_dim{i#115872}(8)))] +[visit_exp shape#4492] +[visit_id shape#4492] +[visit_exp Jnn#504] +[visit_id Jnn#504] +[visit_exp (`%X%`_shape{lanetype#28926, dim#28926, i#115865}(`I16`_lanetype, `%`_dim{i#115872}(8)))] +[visit_exp `%X%`_shape{lanetype#28926, dim#28926, i#115865}(`I16`_lanetype, `%`_dim{i#115872}(8))] +[visit_exp lanetype#28926] +[visit_id lanetype#28926] +[visit_exp dim#28926] +[visit_id dim#28926] +[visit_exp i#115865] +[visit_id i#115865] +[visit_exp (`I16`_lanetype, `%`_dim{i#115872}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#115872}(8)] +[visit_exp i#115872] +[visit_id i#115872] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `SHR`_vshiftop_{sx#29422}(`S`_sx)] +[visit_exp sx#29422] +[visit_id sx#29422] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I Jnn#508 dim#29028 i#116027 i#116034 ishape#55 lanetype#29028 shape#4534 sx#29456 +dims \ I = Jnn#508, dim#29028, i#116027, i#116034, ishape#55, lanetype#29028, shape#4534, sx#29456 +[visit_exp `VSHIFTOP`_instr{ishape#55}(`%`_ishape{shape#4534, Jnn#508}(`%X%`_shape{lanetype#29028, dim#29028, i#116027}(`I16`_lanetype, `%`_dim{i#116034}(8))), `SHR`_vshiftop_{sx#29456}(`U`_sx))] +[visit_exp ishape#55] +[visit_id ishape#55] +[visit_exp (`%`_ishape{shape#4534, Jnn#508}(`%X%`_shape{lanetype#29028, dim#29028, i#116027}(`I16`_lanetype, `%`_dim{i#116034}(8))), `SHR`_vshiftop_{sx#29456}(`U`_sx))] +[visit_exp `%`_ishape{shape#4534, Jnn#508}(`%X%`_shape{lanetype#29028, dim#29028, i#116027}(`I16`_lanetype, `%`_dim{i#116034}(8)))] +[visit_exp shape#4534] +[visit_id shape#4534] +[visit_exp Jnn#508] +[visit_id Jnn#508] +[visit_exp (`%X%`_shape{lanetype#29028, dim#29028, i#116027}(`I16`_lanetype, `%`_dim{i#116034}(8)))] +[visit_exp `%X%`_shape{lanetype#29028, dim#29028, i#116027}(`I16`_lanetype, `%`_dim{i#116034}(8))] +[visit_exp lanetype#29028] +[visit_id lanetype#29028] +[visit_exp dim#29028] +[visit_id dim#29028] +[visit_exp i#116027] +[visit_id i#116027] +[visit_exp (`I16`_lanetype, `%`_dim{i#116034}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#116034}(8)] +[visit_exp i#116034] +[visit_id i#116034] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `SHR`_vshiftop_{sx#29456}(`U`_sx)] +[visit_exp sx#29456] +[visit_id sx#29456] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I Jnn#512 dim#29130 i#116189 i#116196 ishape#57 lanetype#29130 shape#4576 +dims \ I = Jnn#512, dim#29130, i#116189, i#116196, ishape#57, lanetype#29130, shape#4576 +[visit_exp `VSHIFTOP`_instr{ishape#57}(`%`_ishape{shape#4576, Jnn#512}(`%X%`_shape{lanetype#29130, dim#29130, i#116189}(`I32`_lanetype, `%`_dim{i#116196}(4))), `SHL`_vshiftop_)] +[visit_exp ishape#57] +[visit_id ishape#57] +[visit_exp (`%`_ishape{shape#4576, Jnn#512}(`%X%`_shape{lanetype#29130, dim#29130, i#116189}(`I32`_lanetype, `%`_dim{i#116196}(4))), `SHL`_vshiftop_)] +[visit_exp `%`_ishape{shape#4576, Jnn#512}(`%X%`_shape{lanetype#29130, dim#29130, i#116189}(`I32`_lanetype, `%`_dim{i#116196}(4)))] +[visit_exp shape#4576] +[visit_id shape#4576] +[visit_exp Jnn#512] +[visit_id Jnn#512] +[visit_exp (`%X%`_shape{lanetype#29130, dim#29130, i#116189}(`I32`_lanetype, `%`_dim{i#116196}(4)))] +[visit_exp `%X%`_shape{lanetype#29130, dim#29130, i#116189}(`I32`_lanetype, `%`_dim{i#116196}(4))] +[visit_exp lanetype#29130] +[visit_id lanetype#29130] +[visit_exp dim#29130] +[visit_id dim#29130] +[visit_exp i#116189] +[visit_id i#116189] +[visit_exp (`I32`_lanetype, `%`_dim{i#116196}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#116196}(4)] +[visit_exp i#116196] +[visit_id i#116196] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `SHL`_vshiftop_] +[visit_exp ()] +[check_dims] I Jnn#516 dim#29187 i#116276 i#116283 ishape#59 lanetype#29187 shape#4603 sx#29505 +dims \ I = Jnn#516, dim#29187, i#116276, i#116283, ishape#59, lanetype#29187, shape#4603, sx#29505 +[visit_exp `VSHIFTOP`_instr{ishape#59}(`%`_ishape{shape#4603, Jnn#516}(`%X%`_shape{lanetype#29187, dim#29187, i#116276}(`I32`_lanetype, `%`_dim{i#116283}(4))), `SHR`_vshiftop_{sx#29505}(`S`_sx))] +[visit_exp ishape#59] +[visit_id ishape#59] +[visit_exp (`%`_ishape{shape#4603, Jnn#516}(`%X%`_shape{lanetype#29187, dim#29187, i#116276}(`I32`_lanetype, `%`_dim{i#116283}(4))), `SHR`_vshiftop_{sx#29505}(`S`_sx))] +[visit_exp `%`_ishape{shape#4603, Jnn#516}(`%X%`_shape{lanetype#29187, dim#29187, i#116276}(`I32`_lanetype, `%`_dim{i#116283}(4)))] +[visit_exp shape#4603] +[visit_id shape#4603] +[visit_exp Jnn#516] +[visit_id Jnn#516] +[visit_exp (`%X%`_shape{lanetype#29187, dim#29187, i#116276}(`I32`_lanetype, `%`_dim{i#116283}(4)))] +[visit_exp `%X%`_shape{lanetype#29187, dim#29187, i#116276}(`I32`_lanetype, `%`_dim{i#116283}(4))] +[visit_exp lanetype#29187] +[visit_id lanetype#29187] +[visit_exp dim#29187] +[visit_id dim#29187] +[visit_exp i#116276] +[visit_id i#116276] +[visit_exp (`I32`_lanetype, `%`_dim{i#116283}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#116283}(4)] +[visit_exp i#116283] +[visit_id i#116283] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `SHR`_vshiftop_{sx#29505}(`S`_sx)] +[visit_exp sx#29505] +[visit_id sx#29505] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I Jnn#520 dim#29289 i#116438 i#116445 ishape#61 lanetype#29289 shape#4645 sx#29539 +dims \ I = Jnn#520, dim#29289, i#116438, i#116445, ishape#61, lanetype#29289, shape#4645, sx#29539 +[visit_exp `VSHIFTOP`_instr{ishape#61}(`%`_ishape{shape#4645, Jnn#520}(`%X%`_shape{lanetype#29289, dim#29289, i#116438}(`I32`_lanetype, `%`_dim{i#116445}(4))), `SHR`_vshiftop_{sx#29539}(`U`_sx))] +[visit_exp ishape#61] +[visit_id ishape#61] +[visit_exp (`%`_ishape{shape#4645, Jnn#520}(`%X%`_shape{lanetype#29289, dim#29289, i#116438}(`I32`_lanetype, `%`_dim{i#116445}(4))), `SHR`_vshiftop_{sx#29539}(`U`_sx))] +[visit_exp `%`_ishape{shape#4645, Jnn#520}(`%X%`_shape{lanetype#29289, dim#29289, i#116438}(`I32`_lanetype, `%`_dim{i#116445}(4)))] +[visit_exp shape#4645] +[visit_id shape#4645] +[visit_exp Jnn#520] +[visit_id Jnn#520] +[visit_exp (`%X%`_shape{lanetype#29289, dim#29289, i#116438}(`I32`_lanetype, `%`_dim{i#116445}(4)))] +[visit_exp `%X%`_shape{lanetype#29289, dim#29289, i#116438}(`I32`_lanetype, `%`_dim{i#116445}(4))] +[visit_exp lanetype#29289] +[visit_id lanetype#29289] +[visit_exp dim#29289] +[visit_id dim#29289] +[visit_exp i#116438] +[visit_id i#116438] +[visit_exp (`I32`_lanetype, `%`_dim{i#116445}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#116445}(4)] +[visit_exp i#116445] +[visit_id i#116445] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `SHR`_vshiftop_{sx#29539}(`U`_sx)] +[visit_exp sx#29539] +[visit_id sx#29539] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I Jnn#524 dim#29391 i#116600 i#116607 ishape#63 lanetype#29391 shape#4687 +dims \ I = Jnn#524, dim#29391, i#116600, i#116607, ishape#63, lanetype#29391, shape#4687 +[visit_exp `VSHIFTOP`_instr{ishape#63}(`%`_ishape{shape#4687, Jnn#524}(`%X%`_shape{lanetype#29391, dim#29391, i#116600}(`I64`_lanetype, `%`_dim{i#116607}(2))), `SHL`_vshiftop_)] +[visit_exp ishape#63] +[visit_id ishape#63] +[visit_exp (`%`_ishape{shape#4687, Jnn#524}(`%X%`_shape{lanetype#29391, dim#29391, i#116600}(`I64`_lanetype, `%`_dim{i#116607}(2))), `SHL`_vshiftop_)] +[visit_exp `%`_ishape{shape#4687, Jnn#524}(`%X%`_shape{lanetype#29391, dim#29391, i#116600}(`I64`_lanetype, `%`_dim{i#116607}(2)))] +[visit_exp shape#4687] +[visit_id shape#4687] +[visit_exp Jnn#524] +[visit_id Jnn#524] +[visit_exp (`%X%`_shape{lanetype#29391, dim#29391, i#116600}(`I64`_lanetype, `%`_dim{i#116607}(2)))] +[visit_exp `%X%`_shape{lanetype#29391, dim#29391, i#116600}(`I64`_lanetype, `%`_dim{i#116607}(2))] +[visit_exp lanetype#29391] +[visit_id lanetype#29391] +[visit_exp dim#29391] +[visit_id dim#29391] +[visit_exp i#116600] +[visit_id i#116600] +[visit_exp (`I64`_lanetype, `%`_dim{i#116607}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#116607}(2)] +[visit_exp i#116607] +[visit_id i#116607] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `SHL`_vshiftop_] +[visit_exp ()] +[check_dims] I Jnn#528 dim#29448 i#116687 i#116694 ishape#65 lanetype#29448 shape#4714 sx#29588 +dims \ I = Jnn#528, dim#29448, i#116687, i#116694, ishape#65, lanetype#29448, shape#4714, sx#29588 +[visit_exp `VSHIFTOP`_instr{ishape#65}(`%`_ishape{shape#4714, Jnn#528}(`%X%`_shape{lanetype#29448, dim#29448, i#116687}(`I64`_lanetype, `%`_dim{i#116694}(2))), `SHR`_vshiftop_{sx#29588}(`S`_sx))] +[visit_exp ishape#65] +[visit_id ishape#65] +[visit_exp (`%`_ishape{shape#4714, Jnn#528}(`%X%`_shape{lanetype#29448, dim#29448, i#116687}(`I64`_lanetype, `%`_dim{i#116694}(2))), `SHR`_vshiftop_{sx#29588}(`S`_sx))] +[visit_exp `%`_ishape{shape#4714, Jnn#528}(`%X%`_shape{lanetype#29448, dim#29448, i#116687}(`I64`_lanetype, `%`_dim{i#116694}(2)))] +[visit_exp shape#4714] +[visit_id shape#4714] +[visit_exp Jnn#528] +[visit_id Jnn#528] +[visit_exp (`%X%`_shape{lanetype#29448, dim#29448, i#116687}(`I64`_lanetype, `%`_dim{i#116694}(2)))] +[visit_exp `%X%`_shape{lanetype#29448, dim#29448, i#116687}(`I64`_lanetype, `%`_dim{i#116694}(2))] +[visit_exp lanetype#29448] +[visit_id lanetype#29448] +[visit_exp dim#29448] +[visit_id dim#29448] +[visit_exp i#116687] +[visit_id i#116687] +[visit_exp (`I64`_lanetype, `%`_dim{i#116694}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#116694}(2)] +[visit_exp i#116694] +[visit_id i#116694] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `SHR`_vshiftop_{sx#29588}(`S`_sx)] +[visit_exp sx#29588] +[visit_id sx#29588] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I Jnn#532 dim#29550 i#116849 i#116856 ishape#67 lanetype#29550 shape#4756 sx#29622 +dims \ I = Jnn#532, dim#29550, i#116849, i#116856, ishape#67, lanetype#29550, shape#4756, sx#29622 +[visit_exp `VSHIFTOP`_instr{ishape#67}(`%`_ishape{shape#4756, Jnn#532}(`%X%`_shape{lanetype#29550, dim#29550, i#116849}(`I64`_lanetype, `%`_dim{i#116856}(2))), `SHR`_vshiftop_{sx#29622}(`U`_sx))] +[visit_exp ishape#67] +[visit_id ishape#67] +[visit_exp (`%`_ishape{shape#4756, Jnn#532}(`%X%`_shape{lanetype#29550, dim#29550, i#116849}(`I64`_lanetype, `%`_dim{i#116856}(2))), `SHR`_vshiftop_{sx#29622}(`U`_sx))] +[visit_exp `%`_ishape{shape#4756, Jnn#532}(`%X%`_shape{lanetype#29550, dim#29550, i#116849}(`I64`_lanetype, `%`_dim{i#116856}(2)))] +[visit_exp shape#4756] +[visit_id shape#4756] +[visit_exp Jnn#532] +[visit_id Jnn#532] +[visit_exp (`%X%`_shape{lanetype#29550, dim#29550, i#116849}(`I64`_lanetype, `%`_dim{i#116856}(2)))] +[visit_exp `%X%`_shape{lanetype#29550, dim#29550, i#116849}(`I64`_lanetype, `%`_dim{i#116856}(2))] +[visit_exp lanetype#29550] +[visit_id lanetype#29550] +[visit_exp dim#29550] +[visit_id dim#29550] +[visit_exp i#116849] +[visit_id i#116849] +[visit_exp (`I64`_lanetype, `%`_dim{i#116856}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#116856}(2)] +[visit_exp i#116856] +[visit_id i#116856] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `SHR`_vshiftop_{sx#29622}(`U`_sx)] +[visit_exp sx#29622] +[visit_id sx#29622] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I Jnn#536 dim#29652 i#117011 i#117018 ishape#69 lanetype#29652 shape#4798 +dims \ I = Jnn#536, dim#29652, i#117011, i#117018, ishape#69, lanetype#29652, shape#4798 +[visit_exp `VBITMASK`_instr{ishape#69}(`%`_ishape{shape#4798, Jnn#536}(`%X%`_shape{lanetype#29652, dim#29652, i#117011}(`I8`_lanetype, `%`_dim{i#117018}(16))))] +[visit_exp ishape#69] +[visit_id ishape#69] +[visit_exp (`%`_ishape{shape#4798, Jnn#536}(`%X%`_shape{lanetype#29652, dim#29652, i#117011}(`I8`_lanetype, `%`_dim{i#117018}(16))))] +[visit_exp `%`_ishape{shape#4798, Jnn#536}(`%X%`_shape{lanetype#29652, dim#29652, i#117011}(`I8`_lanetype, `%`_dim{i#117018}(16)))] +[visit_exp shape#4798] +[visit_id shape#4798] +[visit_exp Jnn#536] +[visit_id Jnn#536] +[visit_exp (`%X%`_shape{lanetype#29652, dim#29652, i#117011}(`I8`_lanetype, `%`_dim{i#117018}(16)))] +[visit_exp `%X%`_shape{lanetype#29652, dim#29652, i#117011}(`I8`_lanetype, `%`_dim{i#117018}(16))] +[visit_exp lanetype#29652] +[visit_id lanetype#29652] +[visit_exp dim#29652] +[visit_id dim#29652] +[visit_exp i#117011] +[visit_id i#117011] +[visit_exp (`I8`_lanetype, `%`_dim{i#117018}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#117018}(16)] +[visit_exp i#117018] +[visit_id i#117018] +[visit_exp (16)] +[visit_exp 16] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I Jnn#540 dim#29664 i#117023 i#117030 ishape#71 lanetype#29664 shape#4810 +dims \ I = Jnn#540, dim#29664, i#117023, i#117030, ishape#71, lanetype#29664, shape#4810 +[visit_exp `VBITMASK`_instr{ishape#71}(`%`_ishape{shape#4810, Jnn#540}(`%X%`_shape{lanetype#29664, dim#29664, i#117023}(`I16`_lanetype, `%`_dim{i#117030}(8))))] +[visit_exp ishape#71] +[visit_id ishape#71] +[visit_exp (`%`_ishape{shape#4810, Jnn#540}(`%X%`_shape{lanetype#29664, dim#29664, i#117023}(`I16`_lanetype, `%`_dim{i#117030}(8))))] +[visit_exp `%`_ishape{shape#4810, Jnn#540}(`%X%`_shape{lanetype#29664, dim#29664, i#117023}(`I16`_lanetype, `%`_dim{i#117030}(8)))] +[visit_exp shape#4810] +[visit_id shape#4810] +[visit_exp Jnn#540] +[visit_id Jnn#540] +[visit_exp (`%X%`_shape{lanetype#29664, dim#29664, i#117023}(`I16`_lanetype, `%`_dim{i#117030}(8)))] +[visit_exp `%X%`_shape{lanetype#29664, dim#29664, i#117023}(`I16`_lanetype, `%`_dim{i#117030}(8))] +[visit_exp lanetype#29664] +[visit_id lanetype#29664] +[visit_exp dim#29664] +[visit_id dim#29664] +[visit_exp i#117023] +[visit_id i#117023] +[visit_exp (`I16`_lanetype, `%`_dim{i#117030}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#117030}(8)] +[visit_exp i#117030] +[visit_id i#117030] +[visit_exp (8)] +[visit_exp 8] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I Jnn#544 dim#29676 i#117035 i#117042 ishape#73 lanetype#29676 shape#4822 +dims \ I = Jnn#544, dim#29676, i#117035, i#117042, ishape#73, lanetype#29676, shape#4822 +[visit_exp `VBITMASK`_instr{ishape#73}(`%`_ishape{shape#4822, Jnn#544}(`%X%`_shape{lanetype#29676, dim#29676, i#117035}(`I32`_lanetype, `%`_dim{i#117042}(4))))] +[visit_exp ishape#73] +[visit_id ishape#73] +[visit_exp (`%`_ishape{shape#4822, Jnn#544}(`%X%`_shape{lanetype#29676, dim#29676, i#117035}(`I32`_lanetype, `%`_dim{i#117042}(4))))] +[visit_exp `%`_ishape{shape#4822, Jnn#544}(`%X%`_shape{lanetype#29676, dim#29676, i#117035}(`I32`_lanetype, `%`_dim{i#117042}(4)))] +[visit_exp shape#4822] +[visit_id shape#4822] +[visit_exp Jnn#544] +[visit_id Jnn#544] +[visit_exp (`%X%`_shape{lanetype#29676, dim#29676, i#117035}(`I32`_lanetype, `%`_dim{i#117042}(4)))] +[visit_exp `%X%`_shape{lanetype#29676, dim#29676, i#117035}(`I32`_lanetype, `%`_dim{i#117042}(4))] +[visit_exp lanetype#29676] +[visit_id lanetype#29676] +[visit_exp dim#29676] +[visit_id dim#29676] +[visit_exp i#117035] +[visit_id i#117035] +[visit_exp (`I32`_lanetype, `%`_dim{i#117042}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#117042}(4)] +[visit_exp i#117042] +[visit_id i#117042] +[visit_exp (4)] +[visit_exp 4] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I Jnn#548 dim#29688 i#117047 i#117054 ishape#75 lanetype#29688 shape#4834 +dims \ I = Jnn#548, dim#29688, i#117047, i#117054, ishape#75, lanetype#29688, shape#4834 +[visit_exp `VBITMASK`_instr{ishape#75}(`%`_ishape{shape#4834, Jnn#548}(`%X%`_shape{lanetype#29688, dim#29688, i#117047}(`I64`_lanetype, `%`_dim{i#117054}(2))))] +[visit_exp ishape#75] +[visit_id ishape#75] +[visit_exp (`%`_ishape{shape#4834, Jnn#548}(`%X%`_shape{lanetype#29688, dim#29688, i#117047}(`I64`_lanetype, `%`_dim{i#117054}(2))))] +[visit_exp `%`_ishape{shape#4834, Jnn#548}(`%X%`_shape{lanetype#29688, dim#29688, i#117047}(`I64`_lanetype, `%`_dim{i#117054}(2)))] +[visit_exp shape#4834] +[visit_id shape#4834] +[visit_exp Jnn#548] +[visit_id Jnn#548] +[visit_exp (`%X%`_shape{lanetype#29688, dim#29688, i#117047}(`I64`_lanetype, `%`_dim{i#117054}(2)))] +[visit_exp `%X%`_shape{lanetype#29688, dim#29688, i#117047}(`I64`_lanetype, `%`_dim{i#117054}(2))] +[visit_exp lanetype#29688] +[visit_id lanetype#29688] +[visit_exp dim#29688] +[visit_id dim#29688] +[visit_exp i#117047] +[visit_id i#117047] +[visit_exp (`I64`_lanetype, `%`_dim{i#117054}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#117054}(2)] +[visit_exp i#117054] +[visit_id i#117054] +[visit_exp (2)] +[visit_exp 2] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I Jnn#549 Jnn#550 Jnn#551 Jnn#555 Jnn#559 dim#29700 dim#29712 i#117059 i#117066 i#117071 i#117078 ishape_1#71 ishape_2#71 lanetype#29700 lanetype#29712 shape#4836 shape#4837 shape#4838 shape#4849 shape#4861 sx#29624 +dims \ I = Jnn#549, Jnn#550, Jnn#551, Jnn#555, Jnn#559, dim#29700, dim#29712, i#117059, i#117066, i#117071, i#117078, ishape_1#71, ishape_2#71, lanetype#29700, lanetype#29712, shape#4836, shape#4837, shape#4838, shape#4849, shape#4861, sx#29624 +[visit_exp `VNARROW`_instr{ishape_1#71, ishape_2#71, sx#29624, shape#4836, Jnn#549, shape#4837, Jnn#550, shape#4838, Jnn#551}(`%`_ishape{shape#4849, Jnn#555}(`%X%`_shape{lanetype#29700, dim#29700, i#117059}(`I8`_lanetype, `%`_dim{i#117066}(16))), `%`_ishape{shape#4861, Jnn#559}(`%X%`_shape{lanetype#29712, dim#29712, i#117071}(`I16`_lanetype, `%`_dim{i#117078}(8))), `S`_sx)] +[visit_exp ishape_1#71] +[visit_id ishape_1#71] +[visit_exp ishape_2#71] +[visit_id ishape_2#71] +[visit_exp sx#29624] +[visit_id sx#29624] +[visit_exp shape#4836] +[visit_id shape#4836] +[visit_exp Jnn#549] +[visit_id Jnn#549] +[visit_exp shape#4837] +[visit_id shape#4837] +[visit_exp Jnn#550] +[visit_id Jnn#550] +[visit_exp shape#4838] +[visit_id shape#4838] +[visit_exp Jnn#551] +[visit_id Jnn#551] +[visit_exp (`%`_ishape{shape#4849, Jnn#555}(`%X%`_shape{lanetype#29700, dim#29700, i#117059}(`I8`_lanetype, `%`_dim{i#117066}(16))), `%`_ishape{shape#4861, Jnn#559}(`%X%`_shape{lanetype#29712, dim#29712, i#117071}(`I16`_lanetype, `%`_dim{i#117078}(8))), `S`_sx)] +[visit_exp `%`_ishape{shape#4849, Jnn#555}(`%X%`_shape{lanetype#29700, dim#29700, i#117059}(`I8`_lanetype, `%`_dim{i#117066}(16)))] +[visit_exp shape#4849] +[visit_id shape#4849] +[visit_exp Jnn#555] +[visit_id Jnn#555] +[visit_exp (`%X%`_shape{lanetype#29700, dim#29700, i#117059}(`I8`_lanetype, `%`_dim{i#117066}(16)))] +[visit_exp `%X%`_shape{lanetype#29700, dim#29700, i#117059}(`I8`_lanetype, `%`_dim{i#117066}(16))] +[visit_exp lanetype#29700] +[visit_id lanetype#29700] +[visit_exp dim#29700] +[visit_id dim#29700] +[visit_exp i#117059] +[visit_id i#117059] +[visit_exp (`I8`_lanetype, `%`_dim{i#117066}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#117066}(16)] +[visit_exp i#117066] +[visit_id i#117066] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `%`_ishape{shape#4861, Jnn#559}(`%X%`_shape{lanetype#29712, dim#29712, i#117071}(`I16`_lanetype, `%`_dim{i#117078}(8)))] +[visit_exp shape#4861] +[visit_id shape#4861] +[visit_exp Jnn#559] +[visit_id Jnn#559] +[visit_exp (`%X%`_shape{lanetype#29712, dim#29712, i#117071}(`I16`_lanetype, `%`_dim{i#117078}(8)))] +[visit_exp `%X%`_shape{lanetype#29712, dim#29712, i#117071}(`I16`_lanetype, `%`_dim{i#117078}(8))] +[visit_exp lanetype#29712] +[visit_id lanetype#29712] +[visit_exp dim#29712] +[visit_id dim#29712] +[visit_exp i#117071] +[visit_id i#117071] +[visit_exp (`I16`_lanetype, `%`_dim{i#117078}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#117078}(8)] +[visit_exp i#117078] +[visit_id i#117078] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I Jnn#560 Jnn#561 Jnn#562 Jnn#566 Jnn#570 dim#29724 dim#29736 i#117083 i#117090 i#117095 i#117102 ishape_1#73 ishape_2#73 lanetype#29724 lanetype#29736 shape#4863 shape#4864 shape#4865 shape#4876 shape#4888 sx#29626 +dims \ I = Jnn#560, Jnn#561, Jnn#562, Jnn#566, Jnn#570, dim#29724, dim#29736, i#117083, i#117090, i#117095, i#117102, ishape_1#73, ishape_2#73, lanetype#29724, lanetype#29736, shape#4863, shape#4864, shape#4865, shape#4876, shape#4888, sx#29626 +[visit_exp `VNARROW`_instr{ishape_1#73, ishape_2#73, sx#29626, shape#4863, Jnn#560, shape#4864, Jnn#561, shape#4865, Jnn#562}(`%`_ishape{shape#4876, Jnn#566}(`%X%`_shape{lanetype#29724, dim#29724, i#117083}(`I8`_lanetype, `%`_dim{i#117090}(16))), `%`_ishape{shape#4888, Jnn#570}(`%X%`_shape{lanetype#29736, dim#29736, i#117095}(`I16`_lanetype, `%`_dim{i#117102}(8))), `U`_sx)] +[visit_exp ishape_1#73] +[visit_id ishape_1#73] +[visit_exp ishape_2#73] +[visit_id ishape_2#73] +[visit_exp sx#29626] +[visit_id sx#29626] +[visit_exp shape#4863] +[visit_id shape#4863] +[visit_exp Jnn#560] +[visit_id Jnn#560] +[visit_exp shape#4864] +[visit_id shape#4864] +[visit_exp Jnn#561] +[visit_id Jnn#561] +[visit_exp shape#4865] +[visit_id shape#4865] +[visit_exp Jnn#562] +[visit_id Jnn#562] +[visit_exp (`%`_ishape{shape#4876, Jnn#566}(`%X%`_shape{lanetype#29724, dim#29724, i#117083}(`I8`_lanetype, `%`_dim{i#117090}(16))), `%`_ishape{shape#4888, Jnn#570}(`%X%`_shape{lanetype#29736, dim#29736, i#117095}(`I16`_lanetype, `%`_dim{i#117102}(8))), `U`_sx)] +[visit_exp `%`_ishape{shape#4876, Jnn#566}(`%X%`_shape{lanetype#29724, dim#29724, i#117083}(`I8`_lanetype, `%`_dim{i#117090}(16)))] +[visit_exp shape#4876] +[visit_id shape#4876] +[visit_exp Jnn#566] +[visit_id Jnn#566] +[visit_exp (`%X%`_shape{lanetype#29724, dim#29724, i#117083}(`I8`_lanetype, `%`_dim{i#117090}(16)))] +[visit_exp `%X%`_shape{lanetype#29724, dim#29724, i#117083}(`I8`_lanetype, `%`_dim{i#117090}(16))] +[visit_exp lanetype#29724] +[visit_id lanetype#29724] +[visit_exp dim#29724] +[visit_id dim#29724] +[visit_exp i#117083] +[visit_id i#117083] +[visit_exp (`I8`_lanetype, `%`_dim{i#117090}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#117090}(16)] +[visit_exp i#117090] +[visit_id i#117090] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `%`_ishape{shape#4888, Jnn#570}(`%X%`_shape{lanetype#29736, dim#29736, i#117095}(`I16`_lanetype, `%`_dim{i#117102}(8)))] +[visit_exp shape#4888] +[visit_id shape#4888] +[visit_exp Jnn#570] +[visit_id Jnn#570] +[visit_exp (`%X%`_shape{lanetype#29736, dim#29736, i#117095}(`I16`_lanetype, `%`_dim{i#117102}(8)))] +[visit_exp `%X%`_shape{lanetype#29736, dim#29736, i#117095}(`I16`_lanetype, `%`_dim{i#117102}(8))] +[visit_exp lanetype#29736] +[visit_id lanetype#29736] +[visit_exp dim#29736] +[visit_id dim#29736] +[visit_exp i#117095] +[visit_id i#117095] +[visit_exp (`I16`_lanetype, `%`_dim{i#117102}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#117102}(8)] +[visit_exp i#117102] +[visit_id i#117102] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I Jnn#571 Jnn#572 Jnn#573 Jnn#577 Jnn#581 dim#29748 dim#29760 i#117107 i#117114 i#117119 i#117126 ishape_1#75 ishape_2#75 lanetype#29748 lanetype#29760 shape#4890 shape#4891 shape#4892 shape#4903 shape#4915 sx#29628 +dims \ I = Jnn#571, Jnn#572, Jnn#573, Jnn#577, Jnn#581, dim#29748, dim#29760, i#117107, i#117114, i#117119, i#117126, ishape_1#75, ishape_2#75, lanetype#29748, lanetype#29760, shape#4890, shape#4891, shape#4892, shape#4903, shape#4915, sx#29628 +[visit_exp `VNARROW`_instr{ishape_1#75, ishape_2#75, sx#29628, shape#4890, Jnn#571, shape#4891, Jnn#572, shape#4892, Jnn#573}(`%`_ishape{shape#4903, Jnn#577}(`%X%`_shape{lanetype#29748, dim#29748, i#117107}(`I16`_lanetype, `%`_dim{i#117114}(8))), `%`_ishape{shape#4915, Jnn#581}(`%X%`_shape{lanetype#29760, dim#29760, i#117119}(`I32`_lanetype, `%`_dim{i#117126}(4))), `S`_sx)] +[visit_exp ishape_1#75] +[visit_id ishape_1#75] +[visit_exp ishape_2#75] +[visit_id ishape_2#75] +[visit_exp sx#29628] +[visit_id sx#29628] +[visit_exp shape#4890] +[visit_id shape#4890] +[visit_exp Jnn#571] +[visit_id Jnn#571] +[visit_exp shape#4891] +[visit_id shape#4891] +[visit_exp Jnn#572] +[visit_id Jnn#572] +[visit_exp shape#4892] +[visit_id shape#4892] +[visit_exp Jnn#573] +[visit_id Jnn#573] +[visit_exp (`%`_ishape{shape#4903, Jnn#577}(`%X%`_shape{lanetype#29748, dim#29748, i#117107}(`I16`_lanetype, `%`_dim{i#117114}(8))), `%`_ishape{shape#4915, Jnn#581}(`%X%`_shape{lanetype#29760, dim#29760, i#117119}(`I32`_lanetype, `%`_dim{i#117126}(4))), `S`_sx)] +[visit_exp `%`_ishape{shape#4903, Jnn#577}(`%X%`_shape{lanetype#29748, dim#29748, i#117107}(`I16`_lanetype, `%`_dim{i#117114}(8)))] +[visit_exp shape#4903] +[visit_id shape#4903] +[visit_exp Jnn#577] +[visit_id Jnn#577] +[visit_exp (`%X%`_shape{lanetype#29748, dim#29748, i#117107}(`I16`_lanetype, `%`_dim{i#117114}(8)))] +[visit_exp `%X%`_shape{lanetype#29748, dim#29748, i#117107}(`I16`_lanetype, `%`_dim{i#117114}(8))] +[visit_exp lanetype#29748] +[visit_id lanetype#29748] +[visit_exp dim#29748] +[visit_id dim#29748] +[visit_exp i#117107] +[visit_id i#117107] +[visit_exp (`I16`_lanetype, `%`_dim{i#117114}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#117114}(8)] +[visit_exp i#117114] +[visit_id i#117114] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `%`_ishape{shape#4915, Jnn#581}(`%X%`_shape{lanetype#29760, dim#29760, i#117119}(`I32`_lanetype, `%`_dim{i#117126}(4)))] +[visit_exp shape#4915] +[visit_id shape#4915] +[visit_exp Jnn#581] +[visit_id Jnn#581] +[visit_exp (`%X%`_shape{lanetype#29760, dim#29760, i#117119}(`I32`_lanetype, `%`_dim{i#117126}(4)))] +[visit_exp `%X%`_shape{lanetype#29760, dim#29760, i#117119}(`I32`_lanetype, `%`_dim{i#117126}(4))] +[visit_exp lanetype#29760] +[visit_id lanetype#29760] +[visit_exp dim#29760] +[visit_id dim#29760] +[visit_exp i#117119] +[visit_id i#117119] +[visit_exp (`I32`_lanetype, `%`_dim{i#117126}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#117126}(4)] +[visit_exp i#117126] +[visit_id i#117126] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I Jnn#582 Jnn#583 Jnn#584 Jnn#588 Jnn#592 dim#29772 dim#29784 i#117131 i#117138 i#117143 i#117150 ishape_1#77 ishape_2#77 lanetype#29772 lanetype#29784 shape#4917 shape#4918 shape#4919 shape#4930 shape#4942 sx#29630 +dims \ I = Jnn#582, Jnn#583, Jnn#584, Jnn#588, Jnn#592, dim#29772, dim#29784, i#117131, i#117138, i#117143, i#117150, ishape_1#77, ishape_2#77, lanetype#29772, lanetype#29784, shape#4917, shape#4918, shape#4919, shape#4930, shape#4942, sx#29630 +[visit_exp `VNARROW`_instr{ishape_1#77, ishape_2#77, sx#29630, shape#4917, Jnn#582, shape#4918, Jnn#583, shape#4919, Jnn#584}(`%`_ishape{shape#4930, Jnn#588}(`%X%`_shape{lanetype#29772, dim#29772, i#117131}(`I16`_lanetype, `%`_dim{i#117138}(8))), `%`_ishape{shape#4942, Jnn#592}(`%X%`_shape{lanetype#29784, dim#29784, i#117143}(`I32`_lanetype, `%`_dim{i#117150}(4))), `U`_sx)] +[visit_exp ishape_1#77] +[visit_id ishape_1#77] +[visit_exp ishape_2#77] +[visit_id ishape_2#77] +[visit_exp sx#29630] +[visit_id sx#29630] +[visit_exp shape#4917] +[visit_id shape#4917] +[visit_exp Jnn#582] +[visit_id Jnn#582] +[visit_exp shape#4918] +[visit_id shape#4918] +[visit_exp Jnn#583] +[visit_id Jnn#583] +[visit_exp shape#4919] +[visit_id shape#4919] +[visit_exp Jnn#584] +[visit_id Jnn#584] +[visit_exp (`%`_ishape{shape#4930, Jnn#588}(`%X%`_shape{lanetype#29772, dim#29772, i#117131}(`I16`_lanetype, `%`_dim{i#117138}(8))), `%`_ishape{shape#4942, Jnn#592}(`%X%`_shape{lanetype#29784, dim#29784, i#117143}(`I32`_lanetype, `%`_dim{i#117150}(4))), `U`_sx)] +[visit_exp `%`_ishape{shape#4930, Jnn#588}(`%X%`_shape{lanetype#29772, dim#29772, i#117131}(`I16`_lanetype, `%`_dim{i#117138}(8)))] +[visit_exp shape#4930] +[visit_id shape#4930] +[visit_exp Jnn#588] +[visit_id Jnn#588] +[visit_exp (`%X%`_shape{lanetype#29772, dim#29772, i#117131}(`I16`_lanetype, `%`_dim{i#117138}(8)))] +[visit_exp `%X%`_shape{lanetype#29772, dim#29772, i#117131}(`I16`_lanetype, `%`_dim{i#117138}(8))] +[visit_exp lanetype#29772] +[visit_id lanetype#29772] +[visit_exp dim#29772] +[visit_id dim#29772] +[visit_exp i#117131] +[visit_id i#117131] +[visit_exp (`I16`_lanetype, `%`_dim{i#117138}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#117138}(8)] +[visit_exp i#117138] +[visit_id i#117138] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `%`_ishape{shape#4942, Jnn#592}(`%X%`_shape{lanetype#29784, dim#29784, i#117143}(`I32`_lanetype, `%`_dim{i#117150}(4)))] +[visit_exp shape#4942] +[visit_id shape#4942] +[visit_exp Jnn#592] +[visit_id Jnn#592] +[visit_exp (`%X%`_shape{lanetype#29784, dim#29784, i#117143}(`I32`_lanetype, `%`_dim{i#117150}(4)))] +[visit_exp `%X%`_shape{lanetype#29784, dim#29784, i#117143}(`I32`_lanetype, `%`_dim{i#117150}(4))] +[visit_exp lanetype#29784] +[visit_id lanetype#29784] +[visit_exp dim#29784] +[visit_id dim#29784] +[visit_exp i#117143] +[visit_id i#117143] +[visit_exp (`I32`_lanetype, `%`_dim{i#117150}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#117150}(4)] +[visit_exp i#117150] +[visit_id i#117150] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I dim#29796 dim#29808 half#1172 i#117155 i#117162 i#117167 i#117174 lanetype#29796 lanetype#29808 shape_1#59 shape_2#59 sx#29664 +dims \ I = dim#29796, dim#29808, half#1172, i#117155, i#117162, i#117167, i#117174, lanetype#29796, lanetype#29808, shape_1#59, shape_2#59, sx#29664 +[visit_exp `VCVTOP`_instr{shape_1#59, shape_2#59}(`%X%`_shape{lanetype#29796, dim#29796, i#117155}(`I16`_lanetype, `%`_dim{i#117162}(8)), `%X%`_shape{lanetype#29808, dim#29808, i#117167}(`I8`_lanetype, `%`_dim{i#117174}(16)), `EXTEND`_vcvtop__{half#1172, sx#29664}(`LOW`_half, `S`_sx))] +[visit_exp shape_1#59] +[visit_id shape_1#59] +[visit_exp shape_2#59] +[visit_id shape_2#59] +[visit_exp (`%X%`_shape{lanetype#29796, dim#29796, i#117155}(`I16`_lanetype, `%`_dim{i#117162}(8)), `%X%`_shape{lanetype#29808, dim#29808, i#117167}(`I8`_lanetype, `%`_dim{i#117174}(16)), `EXTEND`_vcvtop__{half#1172, sx#29664}(`LOW`_half, `S`_sx))] +[visit_exp `%X%`_shape{lanetype#29796, dim#29796, i#117155}(`I16`_lanetype, `%`_dim{i#117162}(8))] +[visit_exp lanetype#29796] +[visit_id lanetype#29796] +[visit_exp dim#29796] +[visit_id dim#29796] +[visit_exp i#117155] +[visit_id i#117155] +[visit_exp (`I16`_lanetype, `%`_dim{i#117162}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#117162}(8)] +[visit_exp i#117162] +[visit_id i#117162] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `%X%`_shape{lanetype#29808, dim#29808, i#117167}(`I8`_lanetype, `%`_dim{i#117174}(16))] +[visit_exp lanetype#29808] +[visit_id lanetype#29808] +[visit_exp dim#29808] +[visit_id dim#29808] +[visit_exp i#117167] +[visit_id i#117167] +[visit_exp (`I8`_lanetype, `%`_dim{i#117174}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#117174}(16)] +[visit_exp i#117174] +[visit_id i#117174] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `EXTEND`_vcvtop__{half#1172, sx#29664}(`LOW`_half, `S`_sx)] +[visit_exp half#1172] +[visit_id half#1172] +[visit_exp sx#29664] +[visit_id sx#29664] +[visit_exp (`LOW`_half, `S`_sx)] +[visit_exp `LOW`_half] +[visit_exp ()] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I dim#29911 dim#29923 half#1206 i#117390 i#117397 i#117402 i#117409 lanetype#29911 lanetype#29923 shape_1#61 shape_2#61 sx#29698 +dims \ I = dim#29911, dim#29923, half#1206, i#117390, i#117397, i#117402, i#117409, lanetype#29911, lanetype#29923, shape_1#61, shape_2#61, sx#29698 +[visit_exp `VCVTOP`_instr{shape_1#61, shape_2#61}(`%X%`_shape{lanetype#29911, dim#29911, i#117390}(`I16`_lanetype, `%`_dim{i#117397}(8)), `%X%`_shape{lanetype#29923, dim#29923, i#117402}(`I8`_lanetype, `%`_dim{i#117409}(16)), `EXTEND`_vcvtop__{half#1206, sx#29698}(`LOW`_half, `U`_sx))] +[visit_exp shape_1#61] +[visit_id shape_1#61] +[visit_exp shape_2#61] +[visit_id shape_2#61] +[visit_exp (`%X%`_shape{lanetype#29911, dim#29911, i#117390}(`I16`_lanetype, `%`_dim{i#117397}(8)), `%X%`_shape{lanetype#29923, dim#29923, i#117402}(`I8`_lanetype, `%`_dim{i#117409}(16)), `EXTEND`_vcvtop__{half#1206, sx#29698}(`LOW`_half, `U`_sx))] +[visit_exp `%X%`_shape{lanetype#29911, dim#29911, i#117390}(`I16`_lanetype, `%`_dim{i#117397}(8))] +[visit_exp lanetype#29911] +[visit_id lanetype#29911] +[visit_exp dim#29911] +[visit_id dim#29911] +[visit_exp i#117390] +[visit_id i#117390] +[visit_exp (`I16`_lanetype, `%`_dim{i#117397}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#117397}(8)] +[visit_exp i#117397] +[visit_id i#117397] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `%X%`_shape{lanetype#29923, dim#29923, i#117402}(`I8`_lanetype, `%`_dim{i#117409}(16))] +[visit_exp lanetype#29923] +[visit_id lanetype#29923] +[visit_exp dim#29923] +[visit_id dim#29923] +[visit_exp i#117402] +[visit_id i#117402] +[visit_exp (`I8`_lanetype, `%`_dim{i#117409}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#117409}(16)] +[visit_exp i#117409] +[visit_id i#117409] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `EXTEND`_vcvtop__{half#1206, sx#29698}(`LOW`_half, `U`_sx)] +[visit_exp half#1206] +[visit_id half#1206] +[visit_exp sx#29698] +[visit_id sx#29698] +[visit_exp (`LOW`_half, `U`_sx)] +[visit_exp `LOW`_half] +[visit_exp ()] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I dim#30026 dim#30038 half#1240 i#117625 i#117632 i#117637 i#117644 lanetype#30026 lanetype#30038 shape_1#63 shape_2#63 sx#29732 +dims \ I = dim#30026, dim#30038, half#1240, i#117625, i#117632, i#117637, i#117644, lanetype#30026, lanetype#30038, shape_1#63, shape_2#63, sx#29732 +[visit_exp `VCVTOP`_instr{shape_1#63, shape_2#63}(`%X%`_shape{lanetype#30026, dim#30026, i#117625}(`I16`_lanetype, `%`_dim{i#117632}(8)), `%X%`_shape{lanetype#30038, dim#30038, i#117637}(`I8`_lanetype, `%`_dim{i#117644}(16)), `EXTEND`_vcvtop__{half#1240, sx#29732}(`HIGH`_half, `S`_sx))] +[visit_exp shape_1#63] +[visit_id shape_1#63] +[visit_exp shape_2#63] +[visit_id shape_2#63] +[visit_exp (`%X%`_shape{lanetype#30026, dim#30026, i#117625}(`I16`_lanetype, `%`_dim{i#117632}(8)), `%X%`_shape{lanetype#30038, dim#30038, i#117637}(`I8`_lanetype, `%`_dim{i#117644}(16)), `EXTEND`_vcvtop__{half#1240, sx#29732}(`HIGH`_half, `S`_sx))] +[visit_exp `%X%`_shape{lanetype#30026, dim#30026, i#117625}(`I16`_lanetype, `%`_dim{i#117632}(8))] +[visit_exp lanetype#30026] +[visit_id lanetype#30026] +[visit_exp dim#30026] +[visit_id dim#30026] +[visit_exp i#117625] +[visit_id i#117625] +[visit_exp (`I16`_lanetype, `%`_dim{i#117632}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#117632}(8)] +[visit_exp i#117632] +[visit_id i#117632] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `%X%`_shape{lanetype#30038, dim#30038, i#117637}(`I8`_lanetype, `%`_dim{i#117644}(16))] +[visit_exp lanetype#30038] +[visit_id lanetype#30038] +[visit_exp dim#30038] +[visit_id dim#30038] +[visit_exp i#117637] +[visit_id i#117637] +[visit_exp (`I8`_lanetype, `%`_dim{i#117644}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#117644}(16)] +[visit_exp i#117644] +[visit_id i#117644] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `EXTEND`_vcvtop__{half#1240, sx#29732}(`HIGH`_half, `S`_sx)] +[visit_exp half#1240] +[visit_id half#1240] +[visit_exp sx#29732] +[visit_id sx#29732] +[visit_exp (`HIGH`_half, `S`_sx)] +[visit_exp `HIGH`_half] +[visit_exp ()] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I dim#30141 dim#30153 half#1274 i#117860 i#117867 i#117872 i#117879 lanetype#30141 lanetype#30153 shape_1#65 shape_2#65 sx#29766 +dims \ I = dim#30141, dim#30153, half#1274, i#117860, i#117867, i#117872, i#117879, lanetype#30141, lanetype#30153, shape_1#65, shape_2#65, sx#29766 +[visit_exp `VCVTOP`_instr{shape_1#65, shape_2#65}(`%X%`_shape{lanetype#30141, dim#30141, i#117860}(`I16`_lanetype, `%`_dim{i#117867}(8)), `%X%`_shape{lanetype#30153, dim#30153, i#117872}(`I8`_lanetype, `%`_dim{i#117879}(16)), `EXTEND`_vcvtop__{half#1274, sx#29766}(`HIGH`_half, `U`_sx))] +[visit_exp shape_1#65] +[visit_id shape_1#65] +[visit_exp shape_2#65] +[visit_id shape_2#65] +[visit_exp (`%X%`_shape{lanetype#30141, dim#30141, i#117860}(`I16`_lanetype, `%`_dim{i#117867}(8)), `%X%`_shape{lanetype#30153, dim#30153, i#117872}(`I8`_lanetype, `%`_dim{i#117879}(16)), `EXTEND`_vcvtop__{half#1274, sx#29766}(`HIGH`_half, `U`_sx))] +[visit_exp `%X%`_shape{lanetype#30141, dim#30141, i#117860}(`I16`_lanetype, `%`_dim{i#117867}(8))] +[visit_exp lanetype#30141] +[visit_id lanetype#30141] +[visit_exp dim#30141] +[visit_id dim#30141] +[visit_exp i#117860] +[visit_id i#117860] +[visit_exp (`I16`_lanetype, `%`_dim{i#117867}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#117867}(8)] +[visit_exp i#117867] +[visit_id i#117867] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `%X%`_shape{lanetype#30153, dim#30153, i#117872}(`I8`_lanetype, `%`_dim{i#117879}(16))] +[visit_exp lanetype#30153] +[visit_id lanetype#30153] +[visit_exp dim#30153] +[visit_id dim#30153] +[visit_exp i#117872] +[visit_id i#117872] +[visit_exp (`I8`_lanetype, `%`_dim{i#117879}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#117879}(16)] +[visit_exp i#117879] +[visit_id i#117879] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `EXTEND`_vcvtop__{half#1274, sx#29766}(`HIGH`_half, `U`_sx)] +[visit_exp half#1274] +[visit_id half#1274] +[visit_exp sx#29766] +[visit_id sx#29766] +[visit_exp (`HIGH`_half, `U`_sx)] +[visit_exp `HIGH`_half] +[visit_exp ()] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I dim#30256 dim#30268 half#1308 i#118095 i#118102 i#118107 i#118114 lanetype#30256 lanetype#30268 shape_1#67 shape_2#67 sx#29800 +dims \ I = dim#30256, dim#30268, half#1308, i#118095, i#118102, i#118107, i#118114, lanetype#30256, lanetype#30268, shape_1#67, shape_2#67, sx#29800 +[visit_exp `VCVTOP`_instr{shape_1#67, shape_2#67}(`%X%`_shape{lanetype#30256, dim#30256, i#118095}(`I32`_lanetype, `%`_dim{i#118102}(4)), `%X%`_shape{lanetype#30268, dim#30268, i#118107}(`I16`_lanetype, `%`_dim{i#118114}(8)), `EXTEND`_vcvtop__{half#1308, sx#29800}(`LOW`_half, `S`_sx))] +[visit_exp shape_1#67] +[visit_id shape_1#67] +[visit_exp shape_2#67] +[visit_id shape_2#67] +[visit_exp (`%X%`_shape{lanetype#30256, dim#30256, i#118095}(`I32`_lanetype, `%`_dim{i#118102}(4)), `%X%`_shape{lanetype#30268, dim#30268, i#118107}(`I16`_lanetype, `%`_dim{i#118114}(8)), `EXTEND`_vcvtop__{half#1308, sx#29800}(`LOW`_half, `S`_sx))] +[visit_exp `%X%`_shape{lanetype#30256, dim#30256, i#118095}(`I32`_lanetype, `%`_dim{i#118102}(4))] +[visit_exp lanetype#30256] +[visit_id lanetype#30256] +[visit_exp dim#30256] +[visit_id dim#30256] +[visit_exp i#118095] +[visit_id i#118095] +[visit_exp (`I32`_lanetype, `%`_dim{i#118102}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#118102}(4)] +[visit_exp i#118102] +[visit_id i#118102] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%X%`_shape{lanetype#30268, dim#30268, i#118107}(`I16`_lanetype, `%`_dim{i#118114}(8))] +[visit_exp lanetype#30268] +[visit_id lanetype#30268] +[visit_exp dim#30268] +[visit_id dim#30268] +[visit_exp i#118107] +[visit_id i#118107] +[visit_exp (`I16`_lanetype, `%`_dim{i#118114}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#118114}(8)] +[visit_exp i#118114] +[visit_id i#118114] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `EXTEND`_vcvtop__{half#1308, sx#29800}(`LOW`_half, `S`_sx)] +[visit_exp half#1308] +[visit_id half#1308] +[visit_exp sx#29800] +[visit_id sx#29800] +[visit_exp (`LOW`_half, `S`_sx)] +[visit_exp `LOW`_half] +[visit_exp ()] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I dim#30371 dim#30383 half#1342 i#118330 i#118337 i#118342 i#118349 lanetype#30371 lanetype#30383 shape_1#69 shape_2#69 sx#29834 +dims \ I = dim#30371, dim#30383, half#1342, i#118330, i#118337, i#118342, i#118349, lanetype#30371, lanetype#30383, shape_1#69, shape_2#69, sx#29834 +[visit_exp `VCVTOP`_instr{shape_1#69, shape_2#69}(`%X%`_shape{lanetype#30371, dim#30371, i#118330}(`I32`_lanetype, `%`_dim{i#118337}(4)), `%X%`_shape{lanetype#30383, dim#30383, i#118342}(`I16`_lanetype, `%`_dim{i#118349}(8)), `EXTEND`_vcvtop__{half#1342, sx#29834}(`LOW`_half, `U`_sx))] +[visit_exp shape_1#69] +[visit_id shape_1#69] +[visit_exp shape_2#69] +[visit_id shape_2#69] +[visit_exp (`%X%`_shape{lanetype#30371, dim#30371, i#118330}(`I32`_lanetype, `%`_dim{i#118337}(4)), `%X%`_shape{lanetype#30383, dim#30383, i#118342}(`I16`_lanetype, `%`_dim{i#118349}(8)), `EXTEND`_vcvtop__{half#1342, sx#29834}(`LOW`_half, `U`_sx))] +[visit_exp `%X%`_shape{lanetype#30371, dim#30371, i#118330}(`I32`_lanetype, `%`_dim{i#118337}(4))] +[visit_exp lanetype#30371] +[visit_id lanetype#30371] +[visit_exp dim#30371] +[visit_id dim#30371] +[visit_exp i#118330] +[visit_id i#118330] +[visit_exp (`I32`_lanetype, `%`_dim{i#118337}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#118337}(4)] +[visit_exp i#118337] +[visit_id i#118337] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%X%`_shape{lanetype#30383, dim#30383, i#118342}(`I16`_lanetype, `%`_dim{i#118349}(8))] +[visit_exp lanetype#30383] +[visit_id lanetype#30383] +[visit_exp dim#30383] +[visit_id dim#30383] +[visit_exp i#118342] +[visit_id i#118342] +[visit_exp (`I16`_lanetype, `%`_dim{i#118349}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#118349}(8)] +[visit_exp i#118349] +[visit_id i#118349] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `EXTEND`_vcvtop__{half#1342, sx#29834}(`LOW`_half, `U`_sx)] +[visit_exp half#1342] +[visit_id half#1342] +[visit_exp sx#29834] +[visit_id sx#29834] +[visit_exp (`LOW`_half, `U`_sx)] +[visit_exp `LOW`_half] +[visit_exp ()] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I dim#30486 dim#30498 half#1376 i#118565 i#118572 i#118577 i#118584 lanetype#30486 lanetype#30498 shape_1#71 shape_2#71 sx#29868 +dims \ I = dim#30486, dim#30498, half#1376, i#118565, i#118572, i#118577, i#118584, lanetype#30486, lanetype#30498, shape_1#71, shape_2#71, sx#29868 +[visit_exp `VCVTOP`_instr{shape_1#71, shape_2#71}(`%X%`_shape{lanetype#30486, dim#30486, i#118565}(`I32`_lanetype, `%`_dim{i#118572}(4)), `%X%`_shape{lanetype#30498, dim#30498, i#118577}(`I16`_lanetype, `%`_dim{i#118584}(8)), `EXTEND`_vcvtop__{half#1376, sx#29868}(`HIGH`_half, `S`_sx))] +[visit_exp shape_1#71] +[visit_id shape_1#71] +[visit_exp shape_2#71] +[visit_id shape_2#71] +[visit_exp (`%X%`_shape{lanetype#30486, dim#30486, i#118565}(`I32`_lanetype, `%`_dim{i#118572}(4)), `%X%`_shape{lanetype#30498, dim#30498, i#118577}(`I16`_lanetype, `%`_dim{i#118584}(8)), `EXTEND`_vcvtop__{half#1376, sx#29868}(`HIGH`_half, `S`_sx))] +[visit_exp `%X%`_shape{lanetype#30486, dim#30486, i#118565}(`I32`_lanetype, `%`_dim{i#118572}(4))] +[visit_exp lanetype#30486] +[visit_id lanetype#30486] +[visit_exp dim#30486] +[visit_id dim#30486] +[visit_exp i#118565] +[visit_id i#118565] +[visit_exp (`I32`_lanetype, `%`_dim{i#118572}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#118572}(4)] +[visit_exp i#118572] +[visit_id i#118572] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%X%`_shape{lanetype#30498, dim#30498, i#118577}(`I16`_lanetype, `%`_dim{i#118584}(8))] +[visit_exp lanetype#30498] +[visit_id lanetype#30498] +[visit_exp dim#30498] +[visit_id dim#30498] +[visit_exp i#118577] +[visit_id i#118577] +[visit_exp (`I16`_lanetype, `%`_dim{i#118584}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#118584}(8)] +[visit_exp i#118584] +[visit_id i#118584] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `EXTEND`_vcvtop__{half#1376, sx#29868}(`HIGH`_half, `S`_sx)] +[visit_exp half#1376] +[visit_id half#1376] +[visit_exp sx#29868] +[visit_id sx#29868] +[visit_exp (`HIGH`_half, `S`_sx)] +[visit_exp `HIGH`_half] +[visit_exp ()] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I dim#30601 dim#30613 half#1410 i#118800 i#118807 i#118812 i#118819 lanetype#30601 lanetype#30613 shape_1#73 shape_2#73 sx#29902 +dims \ I = dim#30601, dim#30613, half#1410, i#118800, i#118807, i#118812, i#118819, lanetype#30601, lanetype#30613, shape_1#73, shape_2#73, sx#29902 +[visit_exp `VCVTOP`_instr{shape_1#73, shape_2#73}(`%X%`_shape{lanetype#30601, dim#30601, i#118800}(`I32`_lanetype, `%`_dim{i#118807}(4)), `%X%`_shape{lanetype#30613, dim#30613, i#118812}(`I16`_lanetype, `%`_dim{i#118819}(8)), `EXTEND`_vcvtop__{half#1410, sx#29902}(`HIGH`_half, `U`_sx))] +[visit_exp shape_1#73] +[visit_id shape_1#73] +[visit_exp shape_2#73] +[visit_id shape_2#73] +[visit_exp (`%X%`_shape{lanetype#30601, dim#30601, i#118800}(`I32`_lanetype, `%`_dim{i#118807}(4)), `%X%`_shape{lanetype#30613, dim#30613, i#118812}(`I16`_lanetype, `%`_dim{i#118819}(8)), `EXTEND`_vcvtop__{half#1410, sx#29902}(`HIGH`_half, `U`_sx))] +[visit_exp `%X%`_shape{lanetype#30601, dim#30601, i#118800}(`I32`_lanetype, `%`_dim{i#118807}(4))] +[visit_exp lanetype#30601] +[visit_id lanetype#30601] +[visit_exp dim#30601] +[visit_id dim#30601] +[visit_exp i#118800] +[visit_id i#118800] +[visit_exp (`I32`_lanetype, `%`_dim{i#118807}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#118807}(4)] +[visit_exp i#118807] +[visit_id i#118807] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%X%`_shape{lanetype#30613, dim#30613, i#118812}(`I16`_lanetype, `%`_dim{i#118819}(8))] +[visit_exp lanetype#30613] +[visit_id lanetype#30613] +[visit_exp dim#30613] +[visit_id dim#30613] +[visit_exp i#118812] +[visit_id i#118812] +[visit_exp (`I16`_lanetype, `%`_dim{i#118819}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#118819}(8)] +[visit_exp i#118819] +[visit_id i#118819] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `EXTEND`_vcvtop__{half#1410, sx#29902}(`HIGH`_half, `U`_sx)] +[visit_exp half#1410] +[visit_id half#1410] +[visit_exp sx#29902] +[visit_id sx#29902] +[visit_exp (`HIGH`_half, `U`_sx)] +[visit_exp `HIGH`_half] +[visit_exp ()] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I dim#30716 dim#30728 i#119035 i#119042 i#119047 i#119054 lanetype#30716 lanetype#30728 shape_1#75 shape_2#75 sx#29966 zero?#647 +dims \ I = dim#30716, dim#30728, i#119035, i#119042, i#119047, i#119054, lanetype#30716, lanetype#30728, shape_1#75, shape_2#75, sx#29966, zero?#647 +[visit_exp `VCVTOP`_instr{shape_1#75, shape_2#75}(`%X%`_shape{lanetype#30716, dim#30716, i#119035}(`I32`_lanetype, `%`_dim{i#119042}(4)), `%X%`_shape{lanetype#30728, dim#30728, i#119047}(`F32`_lanetype, `%`_dim{i#119054}(4)), `TRUNC_SAT`_vcvtop__{sx#29966, `zero?#647`}(`S`_sx, ?()))] +[visit_exp shape_1#75] +[visit_id shape_1#75] +[visit_exp shape_2#75] +[visit_id shape_2#75] +[visit_exp (`%X%`_shape{lanetype#30716, dim#30716, i#119035}(`I32`_lanetype, `%`_dim{i#119042}(4)), `%X%`_shape{lanetype#30728, dim#30728, i#119047}(`F32`_lanetype, `%`_dim{i#119054}(4)), `TRUNC_SAT`_vcvtop__{sx#29966, `zero?#647`}(`S`_sx, ?()))] +[visit_exp `%X%`_shape{lanetype#30716, dim#30716, i#119035}(`I32`_lanetype, `%`_dim{i#119042}(4))] +[visit_exp lanetype#30716] +[visit_id lanetype#30716] +[visit_exp dim#30716] +[visit_id dim#30716] +[visit_exp i#119035] +[visit_id i#119035] +[visit_exp (`I32`_lanetype, `%`_dim{i#119042}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#119042}(4)] +[visit_exp i#119042] +[visit_id i#119042] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%X%`_shape{lanetype#30728, dim#30728, i#119047}(`F32`_lanetype, `%`_dim{i#119054}(4))] +[visit_exp lanetype#30728] +[visit_id lanetype#30728] +[visit_exp dim#30728] +[visit_id dim#30728] +[visit_exp i#119047] +[visit_id i#119047] +[visit_exp (`F32`_lanetype, `%`_dim{i#119054}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#119054}(4)] +[visit_exp i#119054] +[visit_id i#119054] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `TRUNC_SAT`_vcvtop__{sx#29966, `zero?#647`}(`S`_sx, ?())] +[visit_exp sx#29966] +[visit_id sx#29966] +[visit_exp `zero?#647`] +[visit_id zero?#647] +[visit_exp (`S`_sx, ?())] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp ?()] +[check_dims] I dim#30891 dim#30903 i#119330 i#119337 i#119342 i#119349 lanetype#30891 lanetype#30903 shape_1#77 shape_2#77 sx#30030 zero?#711 +dims \ I = dim#30891, dim#30903, i#119330, i#119337, i#119342, i#119349, lanetype#30891, lanetype#30903, shape_1#77, shape_2#77, sx#30030, zero?#711 +[visit_exp `VCVTOP`_instr{shape_1#77, shape_2#77}(`%X%`_shape{lanetype#30891, dim#30891, i#119330}(`I32`_lanetype, `%`_dim{i#119337}(4)), `%X%`_shape{lanetype#30903, dim#30903, i#119342}(`F32`_lanetype, `%`_dim{i#119349}(4)), `TRUNC_SAT`_vcvtop__{sx#30030, `zero?#711`}(`U`_sx, ?()))] +[visit_exp shape_1#77] +[visit_id shape_1#77] +[visit_exp shape_2#77] +[visit_id shape_2#77] +[visit_exp (`%X%`_shape{lanetype#30891, dim#30891, i#119330}(`I32`_lanetype, `%`_dim{i#119337}(4)), `%X%`_shape{lanetype#30903, dim#30903, i#119342}(`F32`_lanetype, `%`_dim{i#119349}(4)), `TRUNC_SAT`_vcvtop__{sx#30030, `zero?#711`}(`U`_sx, ?()))] +[visit_exp `%X%`_shape{lanetype#30891, dim#30891, i#119330}(`I32`_lanetype, `%`_dim{i#119337}(4))] +[visit_exp lanetype#30891] +[visit_id lanetype#30891] +[visit_exp dim#30891] +[visit_id dim#30891] +[visit_exp i#119330] +[visit_id i#119330] +[visit_exp (`I32`_lanetype, `%`_dim{i#119337}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#119337}(4)] +[visit_exp i#119337] +[visit_id i#119337] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%X%`_shape{lanetype#30903, dim#30903, i#119342}(`F32`_lanetype, `%`_dim{i#119349}(4))] +[visit_exp lanetype#30903] +[visit_id lanetype#30903] +[visit_exp dim#30903] +[visit_id dim#30903] +[visit_exp i#119342] +[visit_id i#119342] +[visit_exp (`F32`_lanetype, `%`_dim{i#119349}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#119349}(4)] +[visit_exp i#119349] +[visit_id i#119349] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `TRUNC_SAT`_vcvtop__{sx#30030, `zero?#711`}(`U`_sx, ?())] +[visit_exp sx#30030] +[visit_id sx#30030] +[visit_exp `zero?#711`] +[visit_id zero?#711] +[visit_exp (`U`_sx, ?())] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp ?()] +[check_dims] I dim#31066 dim#31078 i#119625 i#119632 i#119637 i#119644 lanetype#31066 lanetype#31078 shape_1#79 shape_2#79 sx#30094 zero?#775 +dims \ I = dim#31066, dim#31078, i#119625, i#119632, i#119637, i#119644, lanetype#31066, lanetype#31078, shape_1#79, shape_2#79, sx#30094, zero?#775 +[visit_exp `VCVTOP`_instr{shape_1#79, shape_2#79}(`%X%`_shape{lanetype#31066, dim#31066, i#119625}(`I32`_lanetype, `%`_dim{i#119632}(4)), `%X%`_shape{lanetype#31078, dim#31078, i#119637}(`F64`_lanetype, `%`_dim{i#119644}(2)), `TRUNC_SAT`_vcvtop__{sx#30094, `zero?#775`}(`S`_sx, ?(`ZERO`_zero)))] +[visit_exp shape_1#79] +[visit_id shape_1#79] +[visit_exp shape_2#79] +[visit_id shape_2#79] +[visit_exp (`%X%`_shape{lanetype#31066, dim#31066, i#119625}(`I32`_lanetype, `%`_dim{i#119632}(4)), `%X%`_shape{lanetype#31078, dim#31078, i#119637}(`F64`_lanetype, `%`_dim{i#119644}(2)), `TRUNC_SAT`_vcvtop__{sx#30094, `zero?#775`}(`S`_sx, ?(`ZERO`_zero)))] +[visit_exp `%X%`_shape{lanetype#31066, dim#31066, i#119625}(`I32`_lanetype, `%`_dim{i#119632}(4))] +[visit_exp lanetype#31066] +[visit_id lanetype#31066] +[visit_exp dim#31066] +[visit_id dim#31066] +[visit_exp i#119625] +[visit_id i#119625] +[visit_exp (`I32`_lanetype, `%`_dim{i#119632}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#119632}(4)] +[visit_exp i#119632] +[visit_id i#119632] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%X%`_shape{lanetype#31078, dim#31078, i#119637}(`F64`_lanetype, `%`_dim{i#119644}(2))] +[visit_exp lanetype#31078] +[visit_id lanetype#31078] +[visit_exp dim#31078] +[visit_id dim#31078] +[visit_exp i#119637] +[visit_id i#119637] +[visit_exp (`F64`_lanetype, `%`_dim{i#119644}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#119644}(2)] +[visit_exp i#119644] +[visit_id i#119644] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `TRUNC_SAT`_vcvtop__{sx#30094, `zero?#775`}(`S`_sx, ?(`ZERO`_zero))] +[visit_exp sx#30094] +[visit_id sx#30094] +[visit_exp `zero?#775`] +[visit_id zero?#775] +[visit_exp (`S`_sx, ?(`ZERO`_zero))] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp ?(`ZERO`_zero)] +[visit_exp `ZERO`_zero] +[visit_exp ()] +[check_dims] I dim#31241 dim#31253 i#119920 i#119927 i#119932 i#119939 lanetype#31241 lanetype#31253 shape_1#81 shape_2#81 sx#30158 zero?#839 +dims \ I = dim#31241, dim#31253, i#119920, i#119927, i#119932, i#119939, lanetype#31241, lanetype#31253, shape_1#81, shape_2#81, sx#30158, zero?#839 +[visit_exp `VCVTOP`_instr{shape_1#81, shape_2#81}(`%X%`_shape{lanetype#31241, dim#31241, i#119920}(`I32`_lanetype, `%`_dim{i#119927}(4)), `%X%`_shape{lanetype#31253, dim#31253, i#119932}(`F64`_lanetype, `%`_dim{i#119939}(2)), `TRUNC_SAT`_vcvtop__{sx#30158, `zero?#839`}(`U`_sx, ?(`ZERO`_zero)))] +[visit_exp shape_1#81] +[visit_id shape_1#81] +[visit_exp shape_2#81] +[visit_id shape_2#81] +[visit_exp (`%X%`_shape{lanetype#31241, dim#31241, i#119920}(`I32`_lanetype, `%`_dim{i#119927}(4)), `%X%`_shape{lanetype#31253, dim#31253, i#119932}(`F64`_lanetype, `%`_dim{i#119939}(2)), `TRUNC_SAT`_vcvtop__{sx#30158, `zero?#839`}(`U`_sx, ?(`ZERO`_zero)))] +[visit_exp `%X%`_shape{lanetype#31241, dim#31241, i#119920}(`I32`_lanetype, `%`_dim{i#119927}(4))] +[visit_exp lanetype#31241] +[visit_id lanetype#31241] +[visit_exp dim#31241] +[visit_id dim#31241] +[visit_exp i#119920] +[visit_id i#119920] +[visit_exp (`I32`_lanetype, `%`_dim{i#119927}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#119927}(4)] +[visit_exp i#119927] +[visit_id i#119927] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%X%`_shape{lanetype#31253, dim#31253, i#119932}(`F64`_lanetype, `%`_dim{i#119939}(2))] +[visit_exp lanetype#31253] +[visit_id lanetype#31253] +[visit_exp dim#31253] +[visit_id dim#31253] +[visit_exp i#119932] +[visit_id i#119932] +[visit_exp (`F64`_lanetype, `%`_dim{i#119939}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#119939}(2)] +[visit_exp i#119939] +[visit_id i#119939] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `TRUNC_SAT`_vcvtop__{sx#30158, `zero?#839`}(`U`_sx, ?(`ZERO`_zero))] +[visit_exp sx#30158] +[visit_id sx#30158] +[visit_exp `zero?#839`] +[visit_id zero?#839] +[visit_exp (`U`_sx, ?(`ZERO`_zero))] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp ?(`ZERO`_zero)] +[visit_exp `ZERO`_zero] +[visit_exp ()] +[check_dims] I dim#31416 dim#31428 i#120215 i#120222 i#120227 i#120234 lanetype#31416 lanetype#31428 shape_1#83 shape_2#83 sx#30222 zero?#903 +dims \ I = dim#31416, dim#31428, i#120215, i#120222, i#120227, i#120234, lanetype#31416, lanetype#31428, shape_1#83, shape_2#83, sx#30222, zero?#903 +[visit_exp `VCVTOP`_instr{shape_1#83, shape_2#83}(`%X%`_shape{lanetype#31416, dim#31416, i#120215}(`I32`_lanetype, `%`_dim{i#120222}(4)), `%X%`_shape{lanetype#31428, dim#31428, i#120227}(`F32`_lanetype, `%`_dim{i#120234}(4)), `RELAXED_TRUNC`_vcvtop__{sx#30222, `zero?#903`}(`S`_sx, ?()))] +[visit_exp shape_1#83] +[visit_id shape_1#83] +[visit_exp shape_2#83] +[visit_id shape_2#83] +[visit_exp (`%X%`_shape{lanetype#31416, dim#31416, i#120215}(`I32`_lanetype, `%`_dim{i#120222}(4)), `%X%`_shape{lanetype#31428, dim#31428, i#120227}(`F32`_lanetype, `%`_dim{i#120234}(4)), `RELAXED_TRUNC`_vcvtop__{sx#30222, `zero?#903`}(`S`_sx, ?()))] +[visit_exp `%X%`_shape{lanetype#31416, dim#31416, i#120215}(`I32`_lanetype, `%`_dim{i#120222}(4))] +[visit_exp lanetype#31416] +[visit_id lanetype#31416] +[visit_exp dim#31416] +[visit_id dim#31416] +[visit_exp i#120215] +[visit_id i#120215] +[visit_exp (`I32`_lanetype, `%`_dim{i#120222}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#120222}(4)] +[visit_exp i#120222] +[visit_id i#120222] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%X%`_shape{lanetype#31428, dim#31428, i#120227}(`F32`_lanetype, `%`_dim{i#120234}(4))] +[visit_exp lanetype#31428] +[visit_id lanetype#31428] +[visit_exp dim#31428] +[visit_id dim#31428] +[visit_exp i#120227] +[visit_id i#120227] +[visit_exp (`F32`_lanetype, `%`_dim{i#120234}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#120234}(4)] +[visit_exp i#120234] +[visit_id i#120234] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `RELAXED_TRUNC`_vcvtop__{sx#30222, `zero?#903`}(`S`_sx, ?())] +[visit_exp sx#30222] +[visit_id sx#30222] +[visit_exp `zero?#903`] +[visit_id zero?#903] +[visit_exp (`S`_sx, ?())] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp ?()] +[check_dims] I dim#31591 dim#31603 i#120510 i#120517 i#120522 i#120529 lanetype#31591 lanetype#31603 shape_1#85 shape_2#85 sx#30286 zero?#967 +dims \ I = dim#31591, dim#31603, i#120510, i#120517, i#120522, i#120529, lanetype#31591, lanetype#31603, shape_1#85, shape_2#85, sx#30286, zero?#967 +[visit_exp `VCVTOP`_instr{shape_1#85, shape_2#85}(`%X%`_shape{lanetype#31591, dim#31591, i#120510}(`I32`_lanetype, `%`_dim{i#120517}(4)), `%X%`_shape{lanetype#31603, dim#31603, i#120522}(`F32`_lanetype, `%`_dim{i#120529}(4)), `RELAXED_TRUNC`_vcvtop__{sx#30286, `zero?#967`}(`U`_sx, ?()))] +[visit_exp shape_1#85] +[visit_id shape_1#85] +[visit_exp shape_2#85] +[visit_id shape_2#85] +[visit_exp (`%X%`_shape{lanetype#31591, dim#31591, i#120510}(`I32`_lanetype, `%`_dim{i#120517}(4)), `%X%`_shape{lanetype#31603, dim#31603, i#120522}(`F32`_lanetype, `%`_dim{i#120529}(4)), `RELAXED_TRUNC`_vcvtop__{sx#30286, `zero?#967`}(`U`_sx, ?()))] +[visit_exp `%X%`_shape{lanetype#31591, dim#31591, i#120510}(`I32`_lanetype, `%`_dim{i#120517}(4))] +[visit_exp lanetype#31591] +[visit_id lanetype#31591] +[visit_exp dim#31591] +[visit_id dim#31591] +[visit_exp i#120510] +[visit_id i#120510] +[visit_exp (`I32`_lanetype, `%`_dim{i#120517}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#120517}(4)] +[visit_exp i#120517] +[visit_id i#120517] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%X%`_shape{lanetype#31603, dim#31603, i#120522}(`F32`_lanetype, `%`_dim{i#120529}(4))] +[visit_exp lanetype#31603] +[visit_id lanetype#31603] +[visit_exp dim#31603] +[visit_id dim#31603] +[visit_exp i#120522] +[visit_id i#120522] +[visit_exp (`F32`_lanetype, `%`_dim{i#120529}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#120529}(4)] +[visit_exp i#120529] +[visit_id i#120529] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `RELAXED_TRUNC`_vcvtop__{sx#30286, `zero?#967`}(`U`_sx, ?())] +[visit_exp sx#30286] +[visit_id sx#30286] +[visit_exp `zero?#967`] +[visit_id zero?#967] +[visit_exp (`U`_sx, ?())] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp ?()] +[check_dims] I dim#31766 dim#31778 i#120805 i#120812 i#120817 i#120824 lanetype#31766 lanetype#31778 shape_1#87 shape_2#87 sx#30350 zero?#1031 +dims \ I = dim#31766, dim#31778, i#120805, i#120812, i#120817, i#120824, lanetype#31766, lanetype#31778, shape_1#87, shape_2#87, sx#30350, zero?#1031 +[visit_exp `VCVTOP`_instr{shape_1#87, shape_2#87}(`%X%`_shape{lanetype#31766, dim#31766, i#120805}(`I32`_lanetype, `%`_dim{i#120812}(4)), `%X%`_shape{lanetype#31778, dim#31778, i#120817}(`F64`_lanetype, `%`_dim{i#120824}(2)), `RELAXED_TRUNC`_vcvtop__{sx#30350, `zero?#1031`}(`S`_sx, ?(`ZERO`_zero)))] +[visit_exp shape_1#87] +[visit_id shape_1#87] +[visit_exp shape_2#87] +[visit_id shape_2#87] +[visit_exp (`%X%`_shape{lanetype#31766, dim#31766, i#120805}(`I32`_lanetype, `%`_dim{i#120812}(4)), `%X%`_shape{lanetype#31778, dim#31778, i#120817}(`F64`_lanetype, `%`_dim{i#120824}(2)), `RELAXED_TRUNC`_vcvtop__{sx#30350, `zero?#1031`}(`S`_sx, ?(`ZERO`_zero)))] +[visit_exp `%X%`_shape{lanetype#31766, dim#31766, i#120805}(`I32`_lanetype, `%`_dim{i#120812}(4))] +[visit_exp lanetype#31766] +[visit_id lanetype#31766] +[visit_exp dim#31766] +[visit_id dim#31766] +[visit_exp i#120805] +[visit_id i#120805] +[visit_exp (`I32`_lanetype, `%`_dim{i#120812}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#120812}(4)] +[visit_exp i#120812] +[visit_id i#120812] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%X%`_shape{lanetype#31778, dim#31778, i#120817}(`F64`_lanetype, `%`_dim{i#120824}(2))] +[visit_exp lanetype#31778] +[visit_id lanetype#31778] +[visit_exp dim#31778] +[visit_id dim#31778] +[visit_exp i#120817] +[visit_id i#120817] +[visit_exp (`F64`_lanetype, `%`_dim{i#120824}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#120824}(2)] +[visit_exp i#120824] +[visit_id i#120824] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `RELAXED_TRUNC`_vcvtop__{sx#30350, `zero?#1031`}(`S`_sx, ?(`ZERO`_zero))] +[visit_exp sx#30350] +[visit_id sx#30350] +[visit_exp `zero?#1031`] +[visit_id zero?#1031] +[visit_exp (`S`_sx, ?(`ZERO`_zero))] +[visit_exp `S`_sx] +[visit_exp ()] +[visit_exp ?(`ZERO`_zero)] +[visit_exp `ZERO`_zero] +[visit_exp ()] +[check_dims] I dim#31941 dim#31953 i#121100 i#121107 i#121112 i#121119 lanetype#31941 lanetype#31953 shape_1#89 shape_2#89 sx#30414 zero?#1095 +dims \ I = dim#31941, dim#31953, i#121100, i#121107, i#121112, i#121119, lanetype#31941, lanetype#31953, shape_1#89, shape_2#89, sx#30414, zero?#1095 +[visit_exp `VCVTOP`_instr{shape_1#89, shape_2#89}(`%X%`_shape{lanetype#31941, dim#31941, i#121100}(`I32`_lanetype, `%`_dim{i#121107}(4)), `%X%`_shape{lanetype#31953, dim#31953, i#121112}(`F64`_lanetype, `%`_dim{i#121119}(2)), `RELAXED_TRUNC`_vcvtop__{sx#30414, `zero?#1095`}(`U`_sx, ?(`ZERO`_zero)))] +[visit_exp shape_1#89] +[visit_id shape_1#89] +[visit_exp shape_2#89] +[visit_id shape_2#89] +[visit_exp (`%X%`_shape{lanetype#31941, dim#31941, i#121100}(`I32`_lanetype, `%`_dim{i#121107}(4)), `%X%`_shape{lanetype#31953, dim#31953, i#121112}(`F64`_lanetype, `%`_dim{i#121119}(2)), `RELAXED_TRUNC`_vcvtop__{sx#30414, `zero?#1095`}(`U`_sx, ?(`ZERO`_zero)))] +[visit_exp `%X%`_shape{lanetype#31941, dim#31941, i#121100}(`I32`_lanetype, `%`_dim{i#121107}(4))] +[visit_exp lanetype#31941] +[visit_id lanetype#31941] +[visit_exp dim#31941] +[visit_id dim#31941] +[visit_exp i#121100] +[visit_id i#121100] +[visit_exp (`I32`_lanetype, `%`_dim{i#121107}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#121107}(4)] +[visit_exp i#121107] +[visit_id i#121107] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%X%`_shape{lanetype#31953, dim#31953, i#121112}(`F64`_lanetype, `%`_dim{i#121119}(2))] +[visit_exp lanetype#31953] +[visit_id lanetype#31953] +[visit_exp dim#31953] +[visit_id dim#31953] +[visit_exp i#121112] +[visit_id i#121112] +[visit_exp (`F64`_lanetype, `%`_dim{i#121119}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#121119}(2)] +[visit_exp i#121119] +[visit_id i#121119] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `RELAXED_TRUNC`_vcvtop__{sx#30414, `zero?#1095`}(`U`_sx, ?(`ZERO`_zero))] +[visit_exp sx#30414] +[visit_id sx#30414] +[visit_exp `zero?#1095`] +[visit_id zero?#1095] +[visit_exp (`U`_sx, ?(`ZERO`_zero))] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_exp ?(`ZERO`_zero)] +[visit_exp `ZERO`_zero] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I dim#32116 dim#32128 half#1444 i#121395 i#121402 i#121407 i#121414 lanetype#32116 lanetype#32128 shape_1#91 shape_2#91 sx#30448 +dims \ I = dim#32116, dim#32128, half#1444, i#121395, i#121402, i#121407, i#121414, lanetype#32116, lanetype#32128, shape_1#91, shape_2#91, sx#30448 +[visit_exp `VCVTOP`_instr{shape_1#91, shape_2#91}(`%X%`_shape{lanetype#32116, dim#32116, i#121395}(`I64`_lanetype, `%`_dim{i#121402}(2)), `%X%`_shape{lanetype#32128, dim#32128, i#121407}(`I32`_lanetype, `%`_dim{i#121414}(4)), `EXTEND`_vcvtop__{half#1444, sx#30448}(`LOW`_half, `S`_sx))] +[visit_exp shape_1#91] +[visit_id shape_1#91] +[visit_exp shape_2#91] +[visit_id shape_2#91] +[visit_exp (`%X%`_shape{lanetype#32116, dim#32116, i#121395}(`I64`_lanetype, `%`_dim{i#121402}(2)), `%X%`_shape{lanetype#32128, dim#32128, i#121407}(`I32`_lanetype, `%`_dim{i#121414}(4)), `EXTEND`_vcvtop__{half#1444, sx#30448}(`LOW`_half, `S`_sx))] +[visit_exp `%X%`_shape{lanetype#32116, dim#32116, i#121395}(`I64`_lanetype, `%`_dim{i#121402}(2))] +[visit_exp lanetype#32116] +[visit_id lanetype#32116] +[visit_exp dim#32116] +[visit_id dim#32116] +[visit_exp i#121395] +[visit_id i#121395] +[visit_exp (`I64`_lanetype, `%`_dim{i#121402}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#121402}(2)] +[visit_exp i#121402] +[visit_id i#121402] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `%X%`_shape{lanetype#32128, dim#32128, i#121407}(`I32`_lanetype, `%`_dim{i#121414}(4))] +[visit_exp lanetype#32128] +[visit_id lanetype#32128] +[visit_exp dim#32128] +[visit_id dim#32128] +[visit_exp i#121407] +[visit_id i#121407] +[visit_exp (`I32`_lanetype, `%`_dim{i#121414}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#121414}(4)] +[visit_exp i#121414] +[visit_id i#121414] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `EXTEND`_vcvtop__{half#1444, sx#30448}(`LOW`_half, `S`_sx)] +[visit_exp half#1444] +[visit_id half#1444] +[visit_exp sx#30448] +[visit_id sx#30448] +[visit_exp (`LOW`_half, `S`_sx)] +[visit_exp `LOW`_half] +[visit_exp ()] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I dim#32231 dim#32243 half#1478 i#121630 i#121637 i#121642 i#121649 lanetype#32231 lanetype#32243 shape_1#93 shape_2#93 sx#30482 +dims \ I = dim#32231, dim#32243, half#1478, i#121630, i#121637, i#121642, i#121649, lanetype#32231, lanetype#32243, shape_1#93, shape_2#93, sx#30482 +[visit_exp `VCVTOP`_instr{shape_1#93, shape_2#93}(`%X%`_shape{lanetype#32231, dim#32231, i#121630}(`I64`_lanetype, `%`_dim{i#121637}(2)), `%X%`_shape{lanetype#32243, dim#32243, i#121642}(`I32`_lanetype, `%`_dim{i#121649}(4)), `EXTEND`_vcvtop__{half#1478, sx#30482}(`LOW`_half, `U`_sx))] +[visit_exp shape_1#93] +[visit_id shape_1#93] +[visit_exp shape_2#93] +[visit_id shape_2#93] +[visit_exp (`%X%`_shape{lanetype#32231, dim#32231, i#121630}(`I64`_lanetype, `%`_dim{i#121637}(2)), `%X%`_shape{lanetype#32243, dim#32243, i#121642}(`I32`_lanetype, `%`_dim{i#121649}(4)), `EXTEND`_vcvtop__{half#1478, sx#30482}(`LOW`_half, `U`_sx))] +[visit_exp `%X%`_shape{lanetype#32231, dim#32231, i#121630}(`I64`_lanetype, `%`_dim{i#121637}(2))] +[visit_exp lanetype#32231] +[visit_id lanetype#32231] +[visit_exp dim#32231] +[visit_id dim#32231] +[visit_exp i#121630] +[visit_id i#121630] +[visit_exp (`I64`_lanetype, `%`_dim{i#121637}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#121637}(2)] +[visit_exp i#121637] +[visit_id i#121637] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `%X%`_shape{lanetype#32243, dim#32243, i#121642}(`I32`_lanetype, `%`_dim{i#121649}(4))] +[visit_exp lanetype#32243] +[visit_id lanetype#32243] +[visit_exp dim#32243] +[visit_id dim#32243] +[visit_exp i#121642] +[visit_id i#121642] +[visit_exp (`I32`_lanetype, `%`_dim{i#121649}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#121649}(4)] +[visit_exp i#121649] +[visit_id i#121649] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `EXTEND`_vcvtop__{half#1478, sx#30482}(`LOW`_half, `U`_sx)] +[visit_exp half#1478] +[visit_id half#1478] +[visit_exp sx#30482] +[visit_id sx#30482] +[visit_exp (`LOW`_half, `U`_sx)] +[visit_exp `LOW`_half] +[visit_exp ()] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I dim#32346 dim#32358 half#1512 i#121865 i#121872 i#121877 i#121884 lanetype#32346 lanetype#32358 shape_1#95 shape_2#95 sx#30516 +dims \ I = dim#32346, dim#32358, half#1512, i#121865, i#121872, i#121877, i#121884, lanetype#32346, lanetype#32358, shape_1#95, shape_2#95, sx#30516 +[visit_exp `VCVTOP`_instr{shape_1#95, shape_2#95}(`%X%`_shape{lanetype#32346, dim#32346, i#121865}(`I64`_lanetype, `%`_dim{i#121872}(2)), `%X%`_shape{lanetype#32358, dim#32358, i#121877}(`I32`_lanetype, `%`_dim{i#121884}(4)), `EXTEND`_vcvtop__{half#1512, sx#30516}(`HIGH`_half, `S`_sx))] +[visit_exp shape_1#95] +[visit_id shape_1#95] +[visit_exp shape_2#95] +[visit_id shape_2#95] +[visit_exp (`%X%`_shape{lanetype#32346, dim#32346, i#121865}(`I64`_lanetype, `%`_dim{i#121872}(2)), `%X%`_shape{lanetype#32358, dim#32358, i#121877}(`I32`_lanetype, `%`_dim{i#121884}(4)), `EXTEND`_vcvtop__{half#1512, sx#30516}(`HIGH`_half, `S`_sx))] +[visit_exp `%X%`_shape{lanetype#32346, dim#32346, i#121865}(`I64`_lanetype, `%`_dim{i#121872}(2))] +[visit_exp lanetype#32346] +[visit_id lanetype#32346] +[visit_exp dim#32346] +[visit_id dim#32346] +[visit_exp i#121865] +[visit_id i#121865] +[visit_exp (`I64`_lanetype, `%`_dim{i#121872}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#121872}(2)] +[visit_exp i#121872] +[visit_id i#121872] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `%X%`_shape{lanetype#32358, dim#32358, i#121877}(`I32`_lanetype, `%`_dim{i#121884}(4))] +[visit_exp lanetype#32358] +[visit_id lanetype#32358] +[visit_exp dim#32358] +[visit_id dim#32358] +[visit_exp i#121877] +[visit_id i#121877] +[visit_exp (`I32`_lanetype, `%`_dim{i#121884}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#121884}(4)] +[visit_exp i#121884] +[visit_id i#121884] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `EXTEND`_vcvtop__{half#1512, sx#30516}(`HIGH`_half, `S`_sx)] +[visit_exp half#1512] +[visit_id half#1512] +[visit_exp sx#30516] +[visit_id sx#30516] +[visit_exp (`HIGH`_half, `S`_sx)] +[visit_exp `HIGH`_half] +[visit_exp ()] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I dim#32461 dim#32473 half#1546 i#122100 i#122107 i#122112 i#122119 lanetype#32461 lanetype#32473 shape_1#97 shape_2#97 sx#30550 +dims \ I = dim#32461, dim#32473, half#1546, i#122100, i#122107, i#122112, i#122119, lanetype#32461, lanetype#32473, shape_1#97, shape_2#97, sx#30550 +[visit_exp `VCVTOP`_instr{shape_1#97, shape_2#97}(`%X%`_shape{lanetype#32461, dim#32461, i#122100}(`I64`_lanetype, `%`_dim{i#122107}(2)), `%X%`_shape{lanetype#32473, dim#32473, i#122112}(`I32`_lanetype, `%`_dim{i#122119}(4)), `EXTEND`_vcvtop__{half#1546, sx#30550}(`HIGH`_half, `U`_sx))] +[visit_exp shape_1#97] +[visit_id shape_1#97] +[visit_exp shape_2#97] +[visit_id shape_2#97] +[visit_exp (`%X%`_shape{lanetype#32461, dim#32461, i#122100}(`I64`_lanetype, `%`_dim{i#122107}(2)), `%X%`_shape{lanetype#32473, dim#32473, i#122112}(`I32`_lanetype, `%`_dim{i#122119}(4)), `EXTEND`_vcvtop__{half#1546, sx#30550}(`HIGH`_half, `U`_sx))] +[visit_exp `%X%`_shape{lanetype#32461, dim#32461, i#122100}(`I64`_lanetype, `%`_dim{i#122107}(2))] +[visit_exp lanetype#32461] +[visit_id lanetype#32461] +[visit_exp dim#32461] +[visit_id dim#32461] +[visit_exp i#122100] +[visit_id i#122100] +[visit_exp (`I64`_lanetype, `%`_dim{i#122107}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#122107}(2)] +[visit_exp i#122107] +[visit_id i#122107] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `%X%`_shape{lanetype#32473, dim#32473, i#122112}(`I32`_lanetype, `%`_dim{i#122119}(4))] +[visit_exp lanetype#32473] +[visit_id lanetype#32473] +[visit_exp dim#32473] +[visit_id dim#32473] +[visit_exp i#122112] +[visit_id i#122112] +[visit_exp (`I32`_lanetype, `%`_dim{i#122119}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#122119}(4)] +[visit_exp i#122119] +[visit_id i#122119] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `EXTEND`_vcvtop__{half#1546, sx#30550}(`HIGH`_half, `U`_sx)] +[visit_exp half#1546] +[visit_id half#1546] +[visit_exp sx#30550] +[visit_id sx#30550] +[visit_exp (`HIGH`_half, `U`_sx)] +[visit_exp `HIGH`_half] +[visit_exp ()] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I dim#32576 dim#32588 i#122335 i#122342 i#122347 i#122354 lanetype#32576 lanetype#32588 shape_1#99 shape_2#99 zero#2143 +dims \ I = dim#32576, dim#32588, i#122335, i#122342, i#122347, i#122354, lanetype#32576, lanetype#32588, shape_1#99, shape_2#99, zero#2143 +[visit_exp `VCVTOP`_instr{shape_1#99, shape_2#99}(`%X%`_shape{lanetype#32576, dim#32576, i#122335}(`F32`_lanetype, `%`_dim{i#122342}(4)), `%X%`_shape{lanetype#32588, dim#32588, i#122347}(`F64`_lanetype, `%`_dim{i#122354}(2)), `DEMOTE`_vcvtop__{zero#2143}(`ZERO`_zero))] +[visit_exp shape_1#99] +[visit_id shape_1#99] +[visit_exp shape_2#99] +[visit_id shape_2#99] +[visit_exp (`%X%`_shape{lanetype#32576, dim#32576, i#122335}(`F32`_lanetype, `%`_dim{i#122342}(4)), `%X%`_shape{lanetype#32588, dim#32588, i#122347}(`F64`_lanetype, `%`_dim{i#122354}(2)), `DEMOTE`_vcvtop__{zero#2143}(`ZERO`_zero))] +[visit_exp `%X%`_shape{lanetype#32576, dim#32576, i#122335}(`F32`_lanetype, `%`_dim{i#122342}(4))] +[visit_exp lanetype#32576] +[visit_id lanetype#32576] +[visit_exp dim#32576] +[visit_id dim#32576] +[visit_exp i#122335] +[visit_id i#122335] +[visit_exp (`F32`_lanetype, `%`_dim{i#122342}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#122342}(4)] +[visit_exp i#122342] +[visit_id i#122342] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%X%`_shape{lanetype#32588, dim#32588, i#122347}(`F64`_lanetype, `%`_dim{i#122354}(2))] +[visit_exp lanetype#32588] +[visit_id lanetype#32588] +[visit_exp dim#32588] +[visit_id dim#32588] +[visit_exp i#122347] +[visit_id i#122347] +[visit_exp (`F64`_lanetype, `%`_dim{i#122354}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#122354}(2)] +[visit_exp i#122354] +[visit_id i#122354] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `DEMOTE`_vcvtop__{zero#2143}(`ZERO`_zero)] +[visit_exp zero#2143] +[visit_id zero#2143] +[visit_exp (`ZERO`_zero)] +[visit_exp `ZERO`_zero] +[visit_exp ()] +[check_dims] I dim#32841 dim#32853 half?#175 i#122780 i#122787 i#122792 i#122799 lanetype#32841 lanetype#32853 shape_1#101 shape_2#101 sx#30584 +dims \ I = dim#32841, dim#32853, half?#175, i#122780, i#122787, i#122792, i#122799, lanetype#32841, lanetype#32853, shape_1#101, shape_2#101, sx#30584 +[visit_exp `VCVTOP`_instr{shape_1#101, shape_2#101}(`%X%`_shape{lanetype#32841, dim#32841, i#122780}(`F32`_lanetype, `%`_dim{i#122787}(4)), `%X%`_shape{lanetype#32853, dim#32853, i#122792}(`I32`_lanetype, `%`_dim{i#122799}(4)), `CONVERT`_vcvtop__{`half?#175`, sx#30584}(?(), `S`_sx))] +[visit_exp shape_1#101] +[visit_id shape_1#101] +[visit_exp shape_2#101] +[visit_id shape_2#101] +[visit_exp (`%X%`_shape{lanetype#32841, dim#32841, i#122780}(`F32`_lanetype, `%`_dim{i#122787}(4)), `%X%`_shape{lanetype#32853, dim#32853, i#122792}(`I32`_lanetype, `%`_dim{i#122799}(4)), `CONVERT`_vcvtop__{`half?#175`, sx#30584}(?(), `S`_sx))] +[visit_exp `%X%`_shape{lanetype#32841, dim#32841, i#122780}(`F32`_lanetype, `%`_dim{i#122787}(4))] +[visit_exp lanetype#32841] +[visit_id lanetype#32841] +[visit_exp dim#32841] +[visit_id dim#32841] +[visit_exp i#122780] +[visit_id i#122780] +[visit_exp (`F32`_lanetype, `%`_dim{i#122787}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#122787}(4)] +[visit_exp i#122787] +[visit_id i#122787] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%X%`_shape{lanetype#32853, dim#32853, i#122792}(`I32`_lanetype, `%`_dim{i#122799}(4))] +[visit_exp lanetype#32853] +[visit_id lanetype#32853] +[visit_exp dim#32853] +[visit_id dim#32853] +[visit_exp i#122792] +[visit_id i#122792] +[visit_exp (`I32`_lanetype, `%`_dim{i#122799}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#122799}(4)] +[visit_exp i#122799] +[visit_id i#122799] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `CONVERT`_vcvtop__{`half?#175`, sx#30584}(?(), `S`_sx)] +[visit_exp `half?#175`] +[visit_id half?#175] +[visit_exp sx#30584] +[visit_id sx#30584] +[visit_exp (?(), `S`_sx)] +[visit_exp ?()] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I dim#33046 dim#33058 half?#209 i#123165 i#123172 i#123177 i#123184 lanetype#33046 lanetype#33058 shape_1#103 shape_2#103 sx#30618 +dims \ I = dim#33046, dim#33058, half?#209, i#123165, i#123172, i#123177, i#123184, lanetype#33046, lanetype#33058, shape_1#103, shape_2#103, sx#30618 +[visit_exp `VCVTOP`_instr{shape_1#103, shape_2#103}(`%X%`_shape{lanetype#33046, dim#33046, i#123165}(`F32`_lanetype, `%`_dim{i#123172}(4)), `%X%`_shape{lanetype#33058, dim#33058, i#123177}(`I32`_lanetype, `%`_dim{i#123184}(4)), `CONVERT`_vcvtop__{`half?#209`, sx#30618}(?(), `U`_sx))] +[visit_exp shape_1#103] +[visit_id shape_1#103] +[visit_exp shape_2#103] +[visit_id shape_2#103] +[visit_exp (`%X%`_shape{lanetype#33046, dim#33046, i#123165}(`F32`_lanetype, `%`_dim{i#123172}(4)), `%X%`_shape{lanetype#33058, dim#33058, i#123177}(`I32`_lanetype, `%`_dim{i#123184}(4)), `CONVERT`_vcvtop__{`half?#209`, sx#30618}(?(), `U`_sx))] +[visit_exp `%X%`_shape{lanetype#33046, dim#33046, i#123165}(`F32`_lanetype, `%`_dim{i#123172}(4))] +[visit_exp lanetype#33046] +[visit_id lanetype#33046] +[visit_exp dim#33046] +[visit_id dim#33046] +[visit_exp i#123165] +[visit_id i#123165] +[visit_exp (`F32`_lanetype, `%`_dim{i#123172}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#123172}(4)] +[visit_exp i#123172] +[visit_id i#123172] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%X%`_shape{lanetype#33058, dim#33058, i#123177}(`I32`_lanetype, `%`_dim{i#123184}(4))] +[visit_exp lanetype#33058] +[visit_id lanetype#33058] +[visit_exp dim#33058] +[visit_id dim#33058] +[visit_exp i#123177] +[visit_id i#123177] +[visit_exp (`I32`_lanetype, `%`_dim{i#123184}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#123184}(4)] +[visit_exp i#123184] +[visit_id i#123184] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `CONVERT`_vcvtop__{`half?#209`, sx#30618}(?(), `U`_sx)] +[visit_exp `half?#209`] +[visit_id half?#209] +[visit_exp sx#30618] +[visit_id sx#30618] +[visit_exp (?(), `U`_sx)] +[visit_exp ?()] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I dim#33251 dim#33263 i#123550 i#123557 i#123562 i#123569 lanetype#33251 lanetype#33263 shape_1#105 shape_2#105 +dims \ I = dim#33251, dim#33263, i#123550, i#123557, i#123562, i#123569, lanetype#33251, lanetype#33263, shape_1#105, shape_2#105 +[visit_exp `VCVTOP`_instr{shape_1#105, shape_2#105}(`%X%`_shape{lanetype#33251, dim#33251, i#123550}(`F64`_lanetype, `%`_dim{i#123557}(2)), `%X%`_shape{lanetype#33263, dim#33263, i#123562}(`F32`_lanetype, `%`_dim{i#123569}(4)), `PROMOTELOW`_vcvtop__)] +[visit_exp shape_1#105] +[visit_id shape_1#105] +[visit_exp shape_2#105] +[visit_id shape_2#105] +[visit_exp (`%X%`_shape{lanetype#33251, dim#33251, i#123550}(`F64`_lanetype, `%`_dim{i#123557}(2)), `%X%`_shape{lanetype#33263, dim#33263, i#123562}(`F32`_lanetype, `%`_dim{i#123569}(4)), `PROMOTELOW`_vcvtop__)] +[visit_exp `%X%`_shape{lanetype#33251, dim#33251, i#123550}(`F64`_lanetype, `%`_dim{i#123557}(2))] +[visit_exp lanetype#33251] +[visit_id lanetype#33251] +[visit_exp dim#33251] +[visit_id dim#33251] +[visit_exp i#123550] +[visit_id i#123550] +[visit_exp (`F64`_lanetype, `%`_dim{i#123557}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#123557}(2)] +[visit_exp i#123557] +[visit_id i#123557] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `%X%`_shape{lanetype#33263, dim#33263, i#123562}(`F32`_lanetype, `%`_dim{i#123569}(4))] +[visit_exp lanetype#33263] +[visit_id lanetype#33263] +[visit_exp dim#33263] +[visit_id dim#33263] +[visit_exp i#123562] +[visit_id i#123562] +[visit_exp (`F32`_lanetype, `%`_dim{i#123569}(4))] +[visit_exp `F32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#123569}(4)] +[visit_exp i#123569] +[visit_id i#123569] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `PROMOTELOW`_vcvtop__] +[visit_exp ()] +[check_dims] I dim#33516 dim#33528 half?#243 i#123995 i#124002 i#124007 i#124014 lanetype#33516 lanetype#33528 shape_1#107 shape_2#107 sx#30652 +dims \ I = dim#33516, dim#33528, half?#243, i#123995, i#124002, i#124007, i#124014, lanetype#33516, lanetype#33528, shape_1#107, shape_2#107, sx#30652 +[visit_exp `VCVTOP`_instr{shape_1#107, shape_2#107}(`%X%`_shape{lanetype#33516, dim#33516, i#123995}(`F64`_lanetype, `%`_dim{i#124002}(2)), `%X%`_shape{lanetype#33528, dim#33528, i#124007}(`I32`_lanetype, `%`_dim{i#124014}(4)), `CONVERT`_vcvtop__{`half?#243`, sx#30652}(?(`LOW`_half), `S`_sx))] +[visit_exp shape_1#107] +[visit_id shape_1#107] +[visit_exp shape_2#107] +[visit_id shape_2#107] +[visit_exp (`%X%`_shape{lanetype#33516, dim#33516, i#123995}(`F64`_lanetype, `%`_dim{i#124002}(2)), `%X%`_shape{lanetype#33528, dim#33528, i#124007}(`I32`_lanetype, `%`_dim{i#124014}(4)), `CONVERT`_vcvtop__{`half?#243`, sx#30652}(?(`LOW`_half), `S`_sx))] +[visit_exp `%X%`_shape{lanetype#33516, dim#33516, i#123995}(`F64`_lanetype, `%`_dim{i#124002}(2))] +[visit_exp lanetype#33516] +[visit_id lanetype#33516] +[visit_exp dim#33516] +[visit_id dim#33516] +[visit_exp i#123995] +[visit_id i#123995] +[visit_exp (`F64`_lanetype, `%`_dim{i#124002}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#124002}(2)] +[visit_exp i#124002] +[visit_id i#124002] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `%X%`_shape{lanetype#33528, dim#33528, i#124007}(`I32`_lanetype, `%`_dim{i#124014}(4))] +[visit_exp lanetype#33528] +[visit_id lanetype#33528] +[visit_exp dim#33528] +[visit_id dim#33528] +[visit_exp i#124007] +[visit_id i#124007] +[visit_exp (`I32`_lanetype, `%`_dim{i#124014}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#124014}(4)] +[visit_exp i#124014] +[visit_id i#124014] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `CONVERT`_vcvtop__{`half?#243`, sx#30652}(?(`LOW`_half), `S`_sx)] +[visit_exp `half?#243`] +[visit_id half?#243] +[visit_exp sx#30652] +[visit_id sx#30652] +[visit_exp (?(`LOW`_half), `S`_sx)] +[visit_exp ?(`LOW`_half)] +[visit_exp `LOW`_half] +[visit_exp ()] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I dim#33721 dim#33733 half?#277 i#124380 i#124387 i#124392 i#124399 lanetype#33721 lanetype#33733 shape_1#109 shape_2#109 sx#30686 +dims \ I = dim#33721, dim#33733, half?#277, i#124380, i#124387, i#124392, i#124399, lanetype#33721, lanetype#33733, shape_1#109, shape_2#109, sx#30686 +[visit_exp `VCVTOP`_instr{shape_1#109, shape_2#109}(`%X%`_shape{lanetype#33721, dim#33721, i#124380}(`F64`_lanetype, `%`_dim{i#124387}(2)), `%X%`_shape{lanetype#33733, dim#33733, i#124392}(`I32`_lanetype, `%`_dim{i#124399}(4)), `CONVERT`_vcvtop__{`half?#277`, sx#30686}(?(`LOW`_half), `U`_sx))] +[visit_exp shape_1#109] +[visit_id shape_1#109] +[visit_exp shape_2#109] +[visit_id shape_2#109] +[visit_exp (`%X%`_shape{lanetype#33721, dim#33721, i#124380}(`F64`_lanetype, `%`_dim{i#124387}(2)), `%X%`_shape{lanetype#33733, dim#33733, i#124392}(`I32`_lanetype, `%`_dim{i#124399}(4)), `CONVERT`_vcvtop__{`half?#277`, sx#30686}(?(`LOW`_half), `U`_sx))] +[visit_exp `%X%`_shape{lanetype#33721, dim#33721, i#124380}(`F64`_lanetype, `%`_dim{i#124387}(2))] +[visit_exp lanetype#33721] +[visit_id lanetype#33721] +[visit_exp dim#33721] +[visit_id dim#33721] +[visit_exp i#124380] +[visit_id i#124380] +[visit_exp (`F64`_lanetype, `%`_dim{i#124387}(2))] +[visit_exp `F64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#124387}(2)] +[visit_exp i#124387] +[visit_id i#124387] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `%X%`_shape{lanetype#33733, dim#33733, i#124392}(`I32`_lanetype, `%`_dim{i#124399}(4))] +[visit_exp lanetype#33733] +[visit_id lanetype#33733] +[visit_exp dim#33733] +[visit_id dim#33733] +[visit_exp i#124392] +[visit_id i#124392] +[visit_exp (`I32`_lanetype, `%`_dim{i#124399}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#124399}(4)] +[visit_exp i#124399] +[visit_id i#124399] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `CONVERT`_vcvtop__{`half?#277`, sx#30686}(?(`LOW`_half), `U`_sx)] +[visit_exp `half?#277`] +[visit_id half?#277] +[visit_exp sx#30686] +[visit_id sx#30686] +[visit_exp (?(`LOW`_half), `U`_sx)] +[visit_exp ?(`LOW`_half)] +[visit_exp `LOW`_half] +[visit_exp ()] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I Jnn#596 Jnn#600 dim#33926 dim#33938 i#124765 i#124772 i#124777 i#124784 ishape_1#79 ishape_2#79 lanetype#33926 lanetype#33938 shape#4954 shape#4966 sx#30720 +dims \ I = Jnn#596, Jnn#600, dim#33926, dim#33938, i#124765, i#124772, i#124777, i#124784, ishape_1#79, ishape_2#79, lanetype#33926, lanetype#33938, shape#4954, shape#4966, sx#30720 +[visit_exp `VEXTUNOP`_instr{ishape_1#79, ishape_2#79}(`%`_ishape{shape#4954, Jnn#596}(`%X%`_shape{lanetype#33926, dim#33926, i#124765}(`I16`_lanetype, `%`_dim{i#124772}(8))), `%`_ishape{shape#4966, Jnn#600}(`%X%`_shape{lanetype#33938, dim#33938, i#124777}(`I8`_lanetype, `%`_dim{i#124784}(16))), `EXTADD_PAIRWISE`_vextunop__{sx#30720}(`S`_sx))] +[visit_exp ishape_1#79] +[visit_id ishape_1#79] +[visit_exp ishape_2#79] +[visit_id ishape_2#79] +[visit_exp (`%`_ishape{shape#4954, Jnn#596}(`%X%`_shape{lanetype#33926, dim#33926, i#124765}(`I16`_lanetype, `%`_dim{i#124772}(8))), `%`_ishape{shape#4966, Jnn#600}(`%X%`_shape{lanetype#33938, dim#33938, i#124777}(`I8`_lanetype, `%`_dim{i#124784}(16))), `EXTADD_PAIRWISE`_vextunop__{sx#30720}(`S`_sx))] +[visit_exp `%`_ishape{shape#4954, Jnn#596}(`%X%`_shape{lanetype#33926, dim#33926, i#124765}(`I16`_lanetype, `%`_dim{i#124772}(8)))] +[visit_exp shape#4954] +[visit_id shape#4954] +[visit_exp Jnn#596] +[visit_id Jnn#596] +[visit_exp (`%X%`_shape{lanetype#33926, dim#33926, i#124765}(`I16`_lanetype, `%`_dim{i#124772}(8)))] +[visit_exp `%X%`_shape{lanetype#33926, dim#33926, i#124765}(`I16`_lanetype, `%`_dim{i#124772}(8))] +[visit_exp lanetype#33926] +[visit_id lanetype#33926] +[visit_exp dim#33926] +[visit_id dim#33926] +[visit_exp i#124765] +[visit_id i#124765] +[visit_exp (`I16`_lanetype, `%`_dim{i#124772}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#124772}(8)] +[visit_exp i#124772] +[visit_id i#124772] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `%`_ishape{shape#4966, Jnn#600}(`%X%`_shape{lanetype#33938, dim#33938, i#124777}(`I8`_lanetype, `%`_dim{i#124784}(16)))] +[visit_exp shape#4966] +[visit_id shape#4966] +[visit_exp Jnn#600] +[visit_id Jnn#600] +[visit_exp (`%X%`_shape{lanetype#33938, dim#33938, i#124777}(`I8`_lanetype, `%`_dim{i#124784}(16)))] +[visit_exp `%X%`_shape{lanetype#33938, dim#33938, i#124777}(`I8`_lanetype, `%`_dim{i#124784}(16))] +[visit_exp lanetype#33938] +[visit_id lanetype#33938] +[visit_exp dim#33938] +[visit_id dim#33938] +[visit_exp i#124777] +[visit_id i#124777] +[visit_exp (`I8`_lanetype, `%`_dim{i#124784}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#124784}(16)] +[visit_exp i#124784] +[visit_id i#124784] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `EXTADD_PAIRWISE`_vextunop__{sx#30720}(`S`_sx)] +[visit_exp sx#30720] +[visit_id sx#30720] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I Jnn#604 Jnn#608 dim#34161 dim#34173 i#125120 i#125127 i#125132 i#125139 ishape_1#81 ishape_2#81 lanetype#34161 lanetype#34173 shape#5069 shape#5081 sx#30754 +dims \ I = Jnn#604, Jnn#608, dim#34161, dim#34173, i#125120, i#125127, i#125132, i#125139, ishape_1#81, ishape_2#81, lanetype#34161, lanetype#34173, shape#5069, shape#5081, sx#30754 +[visit_exp `VEXTUNOP`_instr{ishape_1#81, ishape_2#81}(`%`_ishape{shape#5069, Jnn#604}(`%X%`_shape{lanetype#34161, dim#34161, i#125120}(`I16`_lanetype, `%`_dim{i#125127}(8))), `%`_ishape{shape#5081, Jnn#608}(`%X%`_shape{lanetype#34173, dim#34173, i#125132}(`I8`_lanetype, `%`_dim{i#125139}(16))), `EXTADD_PAIRWISE`_vextunop__{sx#30754}(`U`_sx))] +[visit_exp ishape_1#81] +[visit_id ishape_1#81] +[visit_exp ishape_2#81] +[visit_id ishape_2#81] +[visit_exp (`%`_ishape{shape#5069, Jnn#604}(`%X%`_shape{lanetype#34161, dim#34161, i#125120}(`I16`_lanetype, `%`_dim{i#125127}(8))), `%`_ishape{shape#5081, Jnn#608}(`%X%`_shape{lanetype#34173, dim#34173, i#125132}(`I8`_lanetype, `%`_dim{i#125139}(16))), `EXTADD_PAIRWISE`_vextunop__{sx#30754}(`U`_sx))] +[visit_exp `%`_ishape{shape#5069, Jnn#604}(`%X%`_shape{lanetype#34161, dim#34161, i#125120}(`I16`_lanetype, `%`_dim{i#125127}(8)))] +[visit_exp shape#5069] +[visit_id shape#5069] +[visit_exp Jnn#604] +[visit_id Jnn#604] +[visit_exp (`%X%`_shape{lanetype#34161, dim#34161, i#125120}(`I16`_lanetype, `%`_dim{i#125127}(8)))] +[visit_exp `%X%`_shape{lanetype#34161, dim#34161, i#125120}(`I16`_lanetype, `%`_dim{i#125127}(8))] +[visit_exp lanetype#34161] +[visit_id lanetype#34161] +[visit_exp dim#34161] +[visit_id dim#34161] +[visit_exp i#125120] +[visit_id i#125120] +[visit_exp (`I16`_lanetype, `%`_dim{i#125127}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#125127}(8)] +[visit_exp i#125127] +[visit_id i#125127] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `%`_ishape{shape#5081, Jnn#608}(`%X%`_shape{lanetype#34173, dim#34173, i#125132}(`I8`_lanetype, `%`_dim{i#125139}(16)))] +[visit_exp shape#5081] +[visit_id shape#5081] +[visit_exp Jnn#608] +[visit_id Jnn#608] +[visit_exp (`%X%`_shape{lanetype#34173, dim#34173, i#125132}(`I8`_lanetype, `%`_dim{i#125139}(16)))] +[visit_exp `%X%`_shape{lanetype#34173, dim#34173, i#125132}(`I8`_lanetype, `%`_dim{i#125139}(16))] +[visit_exp lanetype#34173] +[visit_id lanetype#34173] +[visit_exp dim#34173] +[visit_id dim#34173] +[visit_exp i#125132] +[visit_id i#125132] +[visit_exp (`I8`_lanetype, `%`_dim{i#125139}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#125139}(16)] +[visit_exp i#125139] +[visit_id i#125139] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `EXTADD_PAIRWISE`_vextunop__{sx#30754}(`U`_sx)] +[visit_exp sx#30754] +[visit_id sx#30754] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I Jnn#612 Jnn#616 dim#34396 dim#34408 i#125475 i#125482 i#125487 i#125494 ishape_1#83 ishape_2#83 lanetype#34396 lanetype#34408 shape#5184 shape#5196 sx#30788 +dims \ I = Jnn#612, Jnn#616, dim#34396, dim#34408, i#125475, i#125482, i#125487, i#125494, ishape_1#83, ishape_2#83, lanetype#34396, lanetype#34408, shape#5184, shape#5196, sx#30788 +[visit_exp `VEXTUNOP`_instr{ishape_1#83, ishape_2#83}(`%`_ishape{shape#5184, Jnn#612}(`%X%`_shape{lanetype#34396, dim#34396, i#125475}(`I32`_lanetype, `%`_dim{i#125482}(4))), `%`_ishape{shape#5196, Jnn#616}(`%X%`_shape{lanetype#34408, dim#34408, i#125487}(`I16`_lanetype, `%`_dim{i#125494}(8))), `EXTADD_PAIRWISE`_vextunop__{sx#30788}(`S`_sx))] +[visit_exp ishape_1#83] +[visit_id ishape_1#83] +[visit_exp ishape_2#83] +[visit_id ishape_2#83] +[visit_exp (`%`_ishape{shape#5184, Jnn#612}(`%X%`_shape{lanetype#34396, dim#34396, i#125475}(`I32`_lanetype, `%`_dim{i#125482}(4))), `%`_ishape{shape#5196, Jnn#616}(`%X%`_shape{lanetype#34408, dim#34408, i#125487}(`I16`_lanetype, `%`_dim{i#125494}(8))), `EXTADD_PAIRWISE`_vextunop__{sx#30788}(`S`_sx))] +[visit_exp `%`_ishape{shape#5184, Jnn#612}(`%X%`_shape{lanetype#34396, dim#34396, i#125475}(`I32`_lanetype, `%`_dim{i#125482}(4)))] +[visit_exp shape#5184] +[visit_id shape#5184] +[visit_exp Jnn#612] +[visit_id Jnn#612] +[visit_exp (`%X%`_shape{lanetype#34396, dim#34396, i#125475}(`I32`_lanetype, `%`_dim{i#125482}(4)))] +[visit_exp `%X%`_shape{lanetype#34396, dim#34396, i#125475}(`I32`_lanetype, `%`_dim{i#125482}(4))] +[visit_exp lanetype#34396] +[visit_id lanetype#34396] +[visit_exp dim#34396] +[visit_id dim#34396] +[visit_exp i#125475] +[visit_id i#125475] +[visit_exp (`I32`_lanetype, `%`_dim{i#125482}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#125482}(4)] +[visit_exp i#125482] +[visit_id i#125482] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%`_ishape{shape#5196, Jnn#616}(`%X%`_shape{lanetype#34408, dim#34408, i#125487}(`I16`_lanetype, `%`_dim{i#125494}(8)))] +[visit_exp shape#5196] +[visit_id shape#5196] +[visit_exp Jnn#616] +[visit_id Jnn#616] +[visit_exp (`%X%`_shape{lanetype#34408, dim#34408, i#125487}(`I16`_lanetype, `%`_dim{i#125494}(8)))] +[visit_exp `%X%`_shape{lanetype#34408, dim#34408, i#125487}(`I16`_lanetype, `%`_dim{i#125494}(8))] +[visit_exp lanetype#34408] +[visit_id lanetype#34408] +[visit_exp dim#34408] +[visit_id dim#34408] +[visit_exp i#125487] +[visit_id i#125487] +[visit_exp (`I16`_lanetype, `%`_dim{i#125494}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#125494}(8)] +[visit_exp i#125494] +[visit_id i#125494] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `EXTADD_PAIRWISE`_vextunop__{sx#30788}(`S`_sx)] +[visit_exp sx#30788] +[visit_id sx#30788] +[visit_exp (`S`_sx)] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I Jnn#620 Jnn#624 dim#34631 dim#34643 i#125830 i#125837 i#125842 i#125849 ishape_1#85 ishape_2#85 lanetype#34631 lanetype#34643 shape#5299 shape#5311 sx#30822 +dims \ I = Jnn#620, Jnn#624, dim#34631, dim#34643, i#125830, i#125837, i#125842, i#125849, ishape_1#85, ishape_2#85, lanetype#34631, lanetype#34643, shape#5299, shape#5311, sx#30822 +[visit_exp `VEXTUNOP`_instr{ishape_1#85, ishape_2#85}(`%`_ishape{shape#5299, Jnn#620}(`%X%`_shape{lanetype#34631, dim#34631, i#125830}(`I32`_lanetype, `%`_dim{i#125837}(4))), `%`_ishape{shape#5311, Jnn#624}(`%X%`_shape{lanetype#34643, dim#34643, i#125842}(`I16`_lanetype, `%`_dim{i#125849}(8))), `EXTADD_PAIRWISE`_vextunop__{sx#30822}(`U`_sx))] +[visit_exp ishape_1#85] +[visit_id ishape_1#85] +[visit_exp ishape_2#85] +[visit_id ishape_2#85] +[visit_exp (`%`_ishape{shape#5299, Jnn#620}(`%X%`_shape{lanetype#34631, dim#34631, i#125830}(`I32`_lanetype, `%`_dim{i#125837}(4))), `%`_ishape{shape#5311, Jnn#624}(`%X%`_shape{lanetype#34643, dim#34643, i#125842}(`I16`_lanetype, `%`_dim{i#125849}(8))), `EXTADD_PAIRWISE`_vextunop__{sx#30822}(`U`_sx))] +[visit_exp `%`_ishape{shape#5299, Jnn#620}(`%X%`_shape{lanetype#34631, dim#34631, i#125830}(`I32`_lanetype, `%`_dim{i#125837}(4)))] +[visit_exp shape#5299] +[visit_id shape#5299] +[visit_exp Jnn#620] +[visit_id Jnn#620] +[visit_exp (`%X%`_shape{lanetype#34631, dim#34631, i#125830}(`I32`_lanetype, `%`_dim{i#125837}(4)))] +[visit_exp `%X%`_shape{lanetype#34631, dim#34631, i#125830}(`I32`_lanetype, `%`_dim{i#125837}(4))] +[visit_exp lanetype#34631] +[visit_id lanetype#34631] +[visit_exp dim#34631] +[visit_id dim#34631] +[visit_exp i#125830] +[visit_id i#125830] +[visit_exp (`I32`_lanetype, `%`_dim{i#125837}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#125837}(4)] +[visit_exp i#125837] +[visit_id i#125837] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%`_ishape{shape#5311, Jnn#624}(`%X%`_shape{lanetype#34643, dim#34643, i#125842}(`I16`_lanetype, `%`_dim{i#125849}(8)))] +[visit_exp shape#5311] +[visit_id shape#5311] +[visit_exp Jnn#624] +[visit_id Jnn#624] +[visit_exp (`%X%`_shape{lanetype#34643, dim#34643, i#125842}(`I16`_lanetype, `%`_dim{i#125849}(8)))] +[visit_exp `%X%`_shape{lanetype#34643, dim#34643, i#125842}(`I16`_lanetype, `%`_dim{i#125849}(8))] +[visit_exp lanetype#34643] +[visit_id lanetype#34643] +[visit_exp dim#34643] +[visit_id dim#34643] +[visit_exp i#125842] +[visit_id i#125842] +[visit_exp (`I16`_lanetype, `%`_dim{i#125849}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#125849}(8)] +[visit_exp i#125849] +[visit_id i#125849] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `EXTADD_PAIRWISE`_vextunop__{sx#30822}(`U`_sx)] +[visit_exp sx#30822] +[visit_id sx#30822] +[visit_exp (`U`_sx)] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I Jnn#628 Jnn#632 dim#34866 dim#34878 half#1820 i#126185 i#126192 i#126197 i#126204 ishape_1#87 ishape_2#87 lanetype#34866 lanetype#34878 shape#5414 shape#5426 sx#30856 +dims \ I = Jnn#628, Jnn#632, dim#34866, dim#34878, half#1820, i#126185, i#126192, i#126197, i#126204, ishape_1#87, ishape_2#87, lanetype#34866, lanetype#34878, shape#5414, shape#5426, sx#30856 +[visit_exp `VEXTBINOP`_instr{ishape_1#87, ishape_2#87}(`%`_ishape{shape#5414, Jnn#628}(`%X%`_shape{lanetype#34866, dim#34866, i#126185}(`I16`_lanetype, `%`_dim{i#126192}(8))), `%`_ishape{shape#5426, Jnn#632}(`%X%`_shape{lanetype#34878, dim#34878, i#126197}(`I8`_lanetype, `%`_dim{i#126204}(16))), `EXTMUL`_vextbinop__{half#1820, sx#30856}(`LOW`_half, `S`_sx))] +[visit_exp ishape_1#87] +[visit_id ishape_1#87] +[visit_exp ishape_2#87] +[visit_id ishape_2#87] +[visit_exp (`%`_ishape{shape#5414, Jnn#628}(`%X%`_shape{lanetype#34866, dim#34866, i#126185}(`I16`_lanetype, `%`_dim{i#126192}(8))), `%`_ishape{shape#5426, Jnn#632}(`%X%`_shape{lanetype#34878, dim#34878, i#126197}(`I8`_lanetype, `%`_dim{i#126204}(16))), `EXTMUL`_vextbinop__{half#1820, sx#30856}(`LOW`_half, `S`_sx))] +[visit_exp `%`_ishape{shape#5414, Jnn#628}(`%X%`_shape{lanetype#34866, dim#34866, i#126185}(`I16`_lanetype, `%`_dim{i#126192}(8)))] +[visit_exp shape#5414] +[visit_id shape#5414] +[visit_exp Jnn#628] +[visit_id Jnn#628] +[visit_exp (`%X%`_shape{lanetype#34866, dim#34866, i#126185}(`I16`_lanetype, `%`_dim{i#126192}(8)))] +[visit_exp `%X%`_shape{lanetype#34866, dim#34866, i#126185}(`I16`_lanetype, `%`_dim{i#126192}(8))] +[visit_exp lanetype#34866] +[visit_id lanetype#34866] +[visit_exp dim#34866] +[visit_id dim#34866] +[visit_exp i#126185] +[visit_id i#126185] +[visit_exp (`I16`_lanetype, `%`_dim{i#126192}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#126192}(8)] +[visit_exp i#126192] +[visit_id i#126192] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `%`_ishape{shape#5426, Jnn#632}(`%X%`_shape{lanetype#34878, dim#34878, i#126197}(`I8`_lanetype, `%`_dim{i#126204}(16)))] +[visit_exp shape#5426] +[visit_id shape#5426] +[visit_exp Jnn#632] +[visit_id Jnn#632] +[visit_exp (`%X%`_shape{lanetype#34878, dim#34878, i#126197}(`I8`_lanetype, `%`_dim{i#126204}(16)))] +[visit_exp `%X%`_shape{lanetype#34878, dim#34878, i#126197}(`I8`_lanetype, `%`_dim{i#126204}(16))] +[visit_exp lanetype#34878] +[visit_id lanetype#34878] +[visit_exp dim#34878] +[visit_id dim#34878] +[visit_exp i#126197] +[visit_id i#126197] +[visit_exp (`I8`_lanetype, `%`_dim{i#126204}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#126204}(16)] +[visit_exp i#126204] +[visit_id i#126204] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `EXTMUL`_vextbinop__{half#1820, sx#30856}(`LOW`_half, `S`_sx)] +[visit_exp half#1820] +[visit_id half#1820] +[visit_exp sx#30856] +[visit_id sx#30856] +[visit_exp (`LOW`_half, `S`_sx)] +[visit_exp `LOW`_half] +[visit_exp ()] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I Jnn#636 Jnn#640 dim#35101 dim#35113 half#1854 i#126540 i#126547 i#126552 i#126559 ishape_1#89 ishape_2#89 lanetype#35101 lanetype#35113 shape#5529 shape#5541 sx#30890 +dims \ I = Jnn#636, Jnn#640, dim#35101, dim#35113, half#1854, i#126540, i#126547, i#126552, i#126559, ishape_1#89, ishape_2#89, lanetype#35101, lanetype#35113, shape#5529, shape#5541, sx#30890 +[visit_exp `VEXTBINOP`_instr{ishape_1#89, ishape_2#89}(`%`_ishape{shape#5529, Jnn#636}(`%X%`_shape{lanetype#35101, dim#35101, i#126540}(`I16`_lanetype, `%`_dim{i#126547}(8))), `%`_ishape{shape#5541, Jnn#640}(`%X%`_shape{lanetype#35113, dim#35113, i#126552}(`I8`_lanetype, `%`_dim{i#126559}(16))), `EXTMUL`_vextbinop__{half#1854, sx#30890}(`LOW`_half, `U`_sx))] +[visit_exp ishape_1#89] +[visit_id ishape_1#89] +[visit_exp ishape_2#89] +[visit_id ishape_2#89] +[visit_exp (`%`_ishape{shape#5529, Jnn#636}(`%X%`_shape{lanetype#35101, dim#35101, i#126540}(`I16`_lanetype, `%`_dim{i#126547}(8))), `%`_ishape{shape#5541, Jnn#640}(`%X%`_shape{lanetype#35113, dim#35113, i#126552}(`I8`_lanetype, `%`_dim{i#126559}(16))), `EXTMUL`_vextbinop__{half#1854, sx#30890}(`LOW`_half, `U`_sx))] +[visit_exp `%`_ishape{shape#5529, Jnn#636}(`%X%`_shape{lanetype#35101, dim#35101, i#126540}(`I16`_lanetype, `%`_dim{i#126547}(8)))] +[visit_exp shape#5529] +[visit_id shape#5529] +[visit_exp Jnn#636] +[visit_id Jnn#636] +[visit_exp (`%X%`_shape{lanetype#35101, dim#35101, i#126540}(`I16`_lanetype, `%`_dim{i#126547}(8)))] +[visit_exp `%X%`_shape{lanetype#35101, dim#35101, i#126540}(`I16`_lanetype, `%`_dim{i#126547}(8))] +[visit_exp lanetype#35101] +[visit_id lanetype#35101] +[visit_exp dim#35101] +[visit_id dim#35101] +[visit_exp i#126540] +[visit_id i#126540] +[visit_exp (`I16`_lanetype, `%`_dim{i#126547}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#126547}(8)] +[visit_exp i#126547] +[visit_id i#126547] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `%`_ishape{shape#5541, Jnn#640}(`%X%`_shape{lanetype#35113, dim#35113, i#126552}(`I8`_lanetype, `%`_dim{i#126559}(16)))] +[visit_exp shape#5541] +[visit_id shape#5541] +[visit_exp Jnn#640] +[visit_id Jnn#640] +[visit_exp (`%X%`_shape{lanetype#35113, dim#35113, i#126552}(`I8`_lanetype, `%`_dim{i#126559}(16)))] +[visit_exp `%X%`_shape{lanetype#35113, dim#35113, i#126552}(`I8`_lanetype, `%`_dim{i#126559}(16))] +[visit_exp lanetype#35113] +[visit_id lanetype#35113] +[visit_exp dim#35113] +[visit_id dim#35113] +[visit_exp i#126552] +[visit_id i#126552] +[visit_exp (`I8`_lanetype, `%`_dim{i#126559}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#126559}(16)] +[visit_exp i#126559] +[visit_id i#126559] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `EXTMUL`_vextbinop__{half#1854, sx#30890}(`LOW`_half, `U`_sx)] +[visit_exp half#1854] +[visit_id half#1854] +[visit_exp sx#30890] +[visit_id sx#30890] +[visit_exp (`LOW`_half, `U`_sx)] +[visit_exp `LOW`_half] +[visit_exp ()] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I Jnn#644 Jnn#648 dim#35336 dim#35348 half#1888 i#126895 i#126902 i#126907 i#126914 ishape_1#91 ishape_2#91 lanetype#35336 lanetype#35348 shape#5644 shape#5656 sx#30924 +dims \ I = Jnn#644, Jnn#648, dim#35336, dim#35348, half#1888, i#126895, i#126902, i#126907, i#126914, ishape_1#91, ishape_2#91, lanetype#35336, lanetype#35348, shape#5644, shape#5656, sx#30924 +[visit_exp `VEXTBINOP`_instr{ishape_1#91, ishape_2#91}(`%`_ishape{shape#5644, Jnn#644}(`%X%`_shape{lanetype#35336, dim#35336, i#126895}(`I16`_lanetype, `%`_dim{i#126902}(8))), `%`_ishape{shape#5656, Jnn#648}(`%X%`_shape{lanetype#35348, dim#35348, i#126907}(`I8`_lanetype, `%`_dim{i#126914}(16))), `EXTMUL`_vextbinop__{half#1888, sx#30924}(`HIGH`_half, `S`_sx))] +[visit_exp ishape_1#91] +[visit_id ishape_1#91] +[visit_exp ishape_2#91] +[visit_id ishape_2#91] +[visit_exp (`%`_ishape{shape#5644, Jnn#644}(`%X%`_shape{lanetype#35336, dim#35336, i#126895}(`I16`_lanetype, `%`_dim{i#126902}(8))), `%`_ishape{shape#5656, Jnn#648}(`%X%`_shape{lanetype#35348, dim#35348, i#126907}(`I8`_lanetype, `%`_dim{i#126914}(16))), `EXTMUL`_vextbinop__{half#1888, sx#30924}(`HIGH`_half, `S`_sx))] +[visit_exp `%`_ishape{shape#5644, Jnn#644}(`%X%`_shape{lanetype#35336, dim#35336, i#126895}(`I16`_lanetype, `%`_dim{i#126902}(8)))] +[visit_exp shape#5644] +[visit_id shape#5644] +[visit_exp Jnn#644] +[visit_id Jnn#644] +[visit_exp (`%X%`_shape{lanetype#35336, dim#35336, i#126895}(`I16`_lanetype, `%`_dim{i#126902}(8)))] +[visit_exp `%X%`_shape{lanetype#35336, dim#35336, i#126895}(`I16`_lanetype, `%`_dim{i#126902}(8))] +[visit_exp lanetype#35336] +[visit_id lanetype#35336] +[visit_exp dim#35336] +[visit_id dim#35336] +[visit_exp i#126895] +[visit_id i#126895] +[visit_exp (`I16`_lanetype, `%`_dim{i#126902}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#126902}(8)] +[visit_exp i#126902] +[visit_id i#126902] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `%`_ishape{shape#5656, Jnn#648}(`%X%`_shape{lanetype#35348, dim#35348, i#126907}(`I8`_lanetype, `%`_dim{i#126914}(16)))] +[visit_exp shape#5656] +[visit_id shape#5656] +[visit_exp Jnn#648] +[visit_id Jnn#648] +[visit_exp (`%X%`_shape{lanetype#35348, dim#35348, i#126907}(`I8`_lanetype, `%`_dim{i#126914}(16)))] +[visit_exp `%X%`_shape{lanetype#35348, dim#35348, i#126907}(`I8`_lanetype, `%`_dim{i#126914}(16))] +[visit_exp lanetype#35348] +[visit_id lanetype#35348] +[visit_exp dim#35348] +[visit_id dim#35348] +[visit_exp i#126907] +[visit_id i#126907] +[visit_exp (`I8`_lanetype, `%`_dim{i#126914}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#126914}(16)] +[visit_exp i#126914] +[visit_id i#126914] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `EXTMUL`_vextbinop__{half#1888, sx#30924}(`HIGH`_half, `S`_sx)] +[visit_exp half#1888] +[visit_id half#1888] +[visit_exp sx#30924] +[visit_id sx#30924] +[visit_exp (`HIGH`_half, `S`_sx)] +[visit_exp `HIGH`_half] +[visit_exp ()] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I Jnn#652 Jnn#656 dim#35571 dim#35583 half#1922 i#127250 i#127257 i#127262 i#127269 ishape_1#93 ishape_2#93 lanetype#35571 lanetype#35583 shape#5759 shape#5771 sx#30958 +dims \ I = Jnn#652, Jnn#656, dim#35571, dim#35583, half#1922, i#127250, i#127257, i#127262, i#127269, ishape_1#93, ishape_2#93, lanetype#35571, lanetype#35583, shape#5759, shape#5771, sx#30958 +[visit_exp `VEXTBINOP`_instr{ishape_1#93, ishape_2#93}(`%`_ishape{shape#5759, Jnn#652}(`%X%`_shape{lanetype#35571, dim#35571, i#127250}(`I16`_lanetype, `%`_dim{i#127257}(8))), `%`_ishape{shape#5771, Jnn#656}(`%X%`_shape{lanetype#35583, dim#35583, i#127262}(`I8`_lanetype, `%`_dim{i#127269}(16))), `EXTMUL`_vextbinop__{half#1922, sx#30958}(`HIGH`_half, `U`_sx))] +[visit_exp ishape_1#93] +[visit_id ishape_1#93] +[visit_exp ishape_2#93] +[visit_id ishape_2#93] +[visit_exp (`%`_ishape{shape#5759, Jnn#652}(`%X%`_shape{lanetype#35571, dim#35571, i#127250}(`I16`_lanetype, `%`_dim{i#127257}(8))), `%`_ishape{shape#5771, Jnn#656}(`%X%`_shape{lanetype#35583, dim#35583, i#127262}(`I8`_lanetype, `%`_dim{i#127269}(16))), `EXTMUL`_vextbinop__{half#1922, sx#30958}(`HIGH`_half, `U`_sx))] +[visit_exp `%`_ishape{shape#5759, Jnn#652}(`%X%`_shape{lanetype#35571, dim#35571, i#127250}(`I16`_lanetype, `%`_dim{i#127257}(8)))] +[visit_exp shape#5759] +[visit_id shape#5759] +[visit_exp Jnn#652] +[visit_id Jnn#652] +[visit_exp (`%X%`_shape{lanetype#35571, dim#35571, i#127250}(`I16`_lanetype, `%`_dim{i#127257}(8)))] +[visit_exp `%X%`_shape{lanetype#35571, dim#35571, i#127250}(`I16`_lanetype, `%`_dim{i#127257}(8))] +[visit_exp lanetype#35571] +[visit_id lanetype#35571] +[visit_exp dim#35571] +[visit_id dim#35571] +[visit_exp i#127250] +[visit_id i#127250] +[visit_exp (`I16`_lanetype, `%`_dim{i#127257}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#127257}(8)] +[visit_exp i#127257] +[visit_id i#127257] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `%`_ishape{shape#5771, Jnn#656}(`%X%`_shape{lanetype#35583, dim#35583, i#127262}(`I8`_lanetype, `%`_dim{i#127269}(16)))] +[visit_exp shape#5771] +[visit_id shape#5771] +[visit_exp Jnn#656] +[visit_id Jnn#656] +[visit_exp (`%X%`_shape{lanetype#35583, dim#35583, i#127262}(`I8`_lanetype, `%`_dim{i#127269}(16)))] +[visit_exp `%X%`_shape{lanetype#35583, dim#35583, i#127262}(`I8`_lanetype, `%`_dim{i#127269}(16))] +[visit_exp lanetype#35583] +[visit_id lanetype#35583] +[visit_exp dim#35583] +[visit_id dim#35583] +[visit_exp i#127262] +[visit_id i#127262] +[visit_exp (`I8`_lanetype, `%`_dim{i#127269}(16))] +[visit_exp `I8`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#127269}(16)] +[visit_exp i#127269] +[visit_id i#127269] +[visit_exp (16)] +[visit_exp 16] +[visit_exp `EXTMUL`_vextbinop__{half#1922, sx#30958}(`HIGH`_half, `U`_sx)] +[visit_exp half#1922] +[visit_id half#1922] +[visit_exp sx#30958] +[visit_id sx#30958] +[visit_exp (`HIGH`_half, `U`_sx)] +[visit_exp `HIGH`_half] +[visit_exp ()] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I Jnn#660 Jnn#664 dim#35806 dim#35818 half#1956 i#127605 i#127612 i#127617 i#127624 ishape_1#95 ishape_2#95 lanetype#35806 lanetype#35818 shape#5874 shape#5886 sx#30992 +dims \ I = Jnn#660, Jnn#664, dim#35806, dim#35818, half#1956, i#127605, i#127612, i#127617, i#127624, ishape_1#95, ishape_2#95, lanetype#35806, lanetype#35818, shape#5874, shape#5886, sx#30992 +[visit_exp `VEXTBINOP`_instr{ishape_1#95, ishape_2#95}(`%`_ishape{shape#5874, Jnn#660}(`%X%`_shape{lanetype#35806, dim#35806, i#127605}(`I32`_lanetype, `%`_dim{i#127612}(4))), `%`_ishape{shape#5886, Jnn#664}(`%X%`_shape{lanetype#35818, dim#35818, i#127617}(`I16`_lanetype, `%`_dim{i#127624}(8))), `EXTMUL`_vextbinop__{half#1956, sx#30992}(`LOW`_half, `S`_sx))] +[visit_exp ishape_1#95] +[visit_id ishape_1#95] +[visit_exp ishape_2#95] +[visit_id ishape_2#95] +[visit_exp (`%`_ishape{shape#5874, Jnn#660}(`%X%`_shape{lanetype#35806, dim#35806, i#127605}(`I32`_lanetype, `%`_dim{i#127612}(4))), `%`_ishape{shape#5886, Jnn#664}(`%X%`_shape{lanetype#35818, dim#35818, i#127617}(`I16`_lanetype, `%`_dim{i#127624}(8))), `EXTMUL`_vextbinop__{half#1956, sx#30992}(`LOW`_half, `S`_sx))] +[visit_exp `%`_ishape{shape#5874, Jnn#660}(`%X%`_shape{lanetype#35806, dim#35806, i#127605}(`I32`_lanetype, `%`_dim{i#127612}(4)))] +[visit_exp shape#5874] +[visit_id shape#5874] +[visit_exp Jnn#660] +[visit_id Jnn#660] +[visit_exp (`%X%`_shape{lanetype#35806, dim#35806, i#127605}(`I32`_lanetype, `%`_dim{i#127612}(4)))] +[visit_exp `%X%`_shape{lanetype#35806, dim#35806, i#127605}(`I32`_lanetype, `%`_dim{i#127612}(4))] +[visit_exp lanetype#35806] +[visit_id lanetype#35806] +[visit_exp dim#35806] +[visit_id dim#35806] +[visit_exp i#127605] +[visit_id i#127605] +[visit_exp (`I32`_lanetype, `%`_dim{i#127612}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#127612}(4)] +[visit_exp i#127612] +[visit_id i#127612] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%`_ishape{shape#5886, Jnn#664}(`%X%`_shape{lanetype#35818, dim#35818, i#127617}(`I16`_lanetype, `%`_dim{i#127624}(8)))] +[visit_exp shape#5886] +[visit_id shape#5886] +[visit_exp Jnn#664] +[visit_id Jnn#664] +[visit_exp (`%X%`_shape{lanetype#35818, dim#35818, i#127617}(`I16`_lanetype, `%`_dim{i#127624}(8)))] +[visit_exp `%X%`_shape{lanetype#35818, dim#35818, i#127617}(`I16`_lanetype, `%`_dim{i#127624}(8))] +[visit_exp lanetype#35818] +[visit_id lanetype#35818] +[visit_exp dim#35818] +[visit_id dim#35818] +[visit_exp i#127617] +[visit_id i#127617] +[visit_exp (`I16`_lanetype, `%`_dim{i#127624}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#127624}(8)] +[visit_exp i#127624] +[visit_id i#127624] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `EXTMUL`_vextbinop__{half#1956, sx#30992}(`LOW`_half, `S`_sx)] +[visit_exp half#1956] +[visit_id half#1956] +[visit_exp sx#30992] +[visit_id sx#30992] +[visit_exp (`LOW`_half, `S`_sx)] +[visit_exp `LOW`_half] +[visit_exp ()] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I Jnn#668 Jnn#672 dim#36041 dim#36053 half#1990 i#127960 i#127967 i#127972 i#127979 ishape_1#97 ishape_2#97 lanetype#36041 lanetype#36053 shape#5989 shape#6001 sx#31026 +dims \ I = Jnn#668, Jnn#672, dim#36041, dim#36053, half#1990, i#127960, i#127967, i#127972, i#127979, ishape_1#97, ishape_2#97, lanetype#36041, lanetype#36053, shape#5989, shape#6001, sx#31026 +[visit_exp `VEXTBINOP`_instr{ishape_1#97, ishape_2#97}(`%`_ishape{shape#5989, Jnn#668}(`%X%`_shape{lanetype#36041, dim#36041, i#127960}(`I32`_lanetype, `%`_dim{i#127967}(4))), `%`_ishape{shape#6001, Jnn#672}(`%X%`_shape{lanetype#36053, dim#36053, i#127972}(`I16`_lanetype, `%`_dim{i#127979}(8))), `EXTMUL`_vextbinop__{half#1990, sx#31026}(`LOW`_half, `U`_sx))] +[visit_exp ishape_1#97] +[visit_id ishape_1#97] +[visit_exp ishape_2#97] +[visit_id ishape_2#97] +[visit_exp (`%`_ishape{shape#5989, Jnn#668}(`%X%`_shape{lanetype#36041, dim#36041, i#127960}(`I32`_lanetype, `%`_dim{i#127967}(4))), `%`_ishape{shape#6001, Jnn#672}(`%X%`_shape{lanetype#36053, dim#36053, i#127972}(`I16`_lanetype, `%`_dim{i#127979}(8))), `EXTMUL`_vextbinop__{half#1990, sx#31026}(`LOW`_half, `U`_sx))] +[visit_exp `%`_ishape{shape#5989, Jnn#668}(`%X%`_shape{lanetype#36041, dim#36041, i#127960}(`I32`_lanetype, `%`_dim{i#127967}(4)))] +[visit_exp shape#5989] +[visit_id shape#5989] +[visit_exp Jnn#668] +[visit_id Jnn#668] +[visit_exp (`%X%`_shape{lanetype#36041, dim#36041, i#127960}(`I32`_lanetype, `%`_dim{i#127967}(4)))] +[visit_exp `%X%`_shape{lanetype#36041, dim#36041, i#127960}(`I32`_lanetype, `%`_dim{i#127967}(4))] +[visit_exp lanetype#36041] +[visit_id lanetype#36041] +[visit_exp dim#36041] +[visit_id dim#36041] +[visit_exp i#127960] +[visit_id i#127960] +[visit_exp (`I32`_lanetype, `%`_dim{i#127967}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#127967}(4)] +[visit_exp i#127967] +[visit_id i#127967] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%`_ishape{shape#6001, Jnn#672}(`%X%`_shape{lanetype#36053, dim#36053, i#127972}(`I16`_lanetype, `%`_dim{i#127979}(8)))] +[visit_exp shape#6001] +[visit_id shape#6001] +[visit_exp Jnn#672] +[visit_id Jnn#672] +[visit_exp (`%X%`_shape{lanetype#36053, dim#36053, i#127972}(`I16`_lanetype, `%`_dim{i#127979}(8)))] +[visit_exp `%X%`_shape{lanetype#36053, dim#36053, i#127972}(`I16`_lanetype, `%`_dim{i#127979}(8))] +[visit_exp lanetype#36053] +[visit_id lanetype#36053] +[visit_exp dim#36053] +[visit_id dim#36053] +[visit_exp i#127972] +[visit_id i#127972] +[visit_exp (`I16`_lanetype, `%`_dim{i#127979}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#127979}(8)] +[visit_exp i#127979] +[visit_id i#127979] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `EXTMUL`_vextbinop__{half#1990, sx#31026}(`LOW`_half, `U`_sx)] +[visit_exp half#1990] +[visit_id half#1990] +[visit_exp sx#31026] +[visit_id sx#31026] +[visit_exp (`LOW`_half, `U`_sx)] +[visit_exp `LOW`_half] +[visit_exp ()] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I Jnn#676 Jnn#680 dim#36276 dim#36288 half#2024 i#128315 i#128322 i#128327 i#128334 ishape_1#99 ishape_2#99 lanetype#36276 lanetype#36288 shape#6104 shape#6116 sx#31060 +dims \ I = Jnn#676, Jnn#680, dim#36276, dim#36288, half#2024, i#128315, i#128322, i#128327, i#128334, ishape_1#99, ishape_2#99, lanetype#36276, lanetype#36288, shape#6104, shape#6116, sx#31060 +[visit_exp `VEXTBINOP`_instr{ishape_1#99, ishape_2#99}(`%`_ishape{shape#6104, Jnn#676}(`%X%`_shape{lanetype#36276, dim#36276, i#128315}(`I32`_lanetype, `%`_dim{i#128322}(4))), `%`_ishape{shape#6116, Jnn#680}(`%X%`_shape{lanetype#36288, dim#36288, i#128327}(`I16`_lanetype, `%`_dim{i#128334}(8))), `EXTMUL`_vextbinop__{half#2024, sx#31060}(`HIGH`_half, `S`_sx))] +[visit_exp ishape_1#99] +[visit_id ishape_1#99] +[visit_exp ishape_2#99] +[visit_id ishape_2#99] +[visit_exp (`%`_ishape{shape#6104, Jnn#676}(`%X%`_shape{lanetype#36276, dim#36276, i#128315}(`I32`_lanetype, `%`_dim{i#128322}(4))), `%`_ishape{shape#6116, Jnn#680}(`%X%`_shape{lanetype#36288, dim#36288, i#128327}(`I16`_lanetype, `%`_dim{i#128334}(8))), `EXTMUL`_vextbinop__{half#2024, sx#31060}(`HIGH`_half, `S`_sx))] +[visit_exp `%`_ishape{shape#6104, Jnn#676}(`%X%`_shape{lanetype#36276, dim#36276, i#128315}(`I32`_lanetype, `%`_dim{i#128322}(4)))] +[visit_exp shape#6104] +[visit_id shape#6104] +[visit_exp Jnn#676] +[visit_id Jnn#676] +[visit_exp (`%X%`_shape{lanetype#36276, dim#36276, i#128315}(`I32`_lanetype, `%`_dim{i#128322}(4)))] +[visit_exp `%X%`_shape{lanetype#36276, dim#36276, i#128315}(`I32`_lanetype, `%`_dim{i#128322}(4))] +[visit_exp lanetype#36276] +[visit_id lanetype#36276] +[visit_exp dim#36276] +[visit_id dim#36276] +[visit_exp i#128315] +[visit_id i#128315] +[visit_exp (`I32`_lanetype, `%`_dim{i#128322}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#128322}(4)] +[visit_exp i#128322] +[visit_id i#128322] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%`_ishape{shape#6116, Jnn#680}(`%X%`_shape{lanetype#36288, dim#36288, i#128327}(`I16`_lanetype, `%`_dim{i#128334}(8)))] +[visit_exp shape#6116] +[visit_id shape#6116] +[visit_exp Jnn#680] +[visit_id Jnn#680] +[visit_exp (`%X%`_shape{lanetype#36288, dim#36288, i#128327}(`I16`_lanetype, `%`_dim{i#128334}(8)))] +[visit_exp `%X%`_shape{lanetype#36288, dim#36288, i#128327}(`I16`_lanetype, `%`_dim{i#128334}(8))] +[visit_exp lanetype#36288] +[visit_id lanetype#36288] +[visit_exp dim#36288] +[visit_id dim#36288] +[visit_exp i#128327] +[visit_id i#128327] +[visit_exp (`I16`_lanetype, `%`_dim{i#128334}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#128334}(8)] +[visit_exp i#128334] +[visit_id i#128334] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `EXTMUL`_vextbinop__{half#2024, sx#31060}(`HIGH`_half, `S`_sx)] +[visit_exp half#2024] +[visit_id half#2024] +[visit_exp sx#31060] +[visit_id sx#31060] +[visit_exp (`HIGH`_half, `S`_sx)] +[visit_exp `HIGH`_half] +[visit_exp ()] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I Jnn#684 Jnn#688 dim#36511 dim#36523 half#2058 i#128670 i#128677 i#128682 i#128689 ishape_1#101 ishape_2#101 lanetype#36511 lanetype#36523 shape#6219 shape#6231 sx#31094 +dims \ I = Jnn#684, Jnn#688, dim#36511, dim#36523, half#2058, i#128670, i#128677, i#128682, i#128689, ishape_1#101, ishape_2#101, lanetype#36511, lanetype#36523, shape#6219, shape#6231, sx#31094 +[visit_exp `VEXTBINOP`_instr{ishape_1#101, ishape_2#101}(`%`_ishape{shape#6219, Jnn#684}(`%X%`_shape{lanetype#36511, dim#36511, i#128670}(`I32`_lanetype, `%`_dim{i#128677}(4))), `%`_ishape{shape#6231, Jnn#688}(`%X%`_shape{lanetype#36523, dim#36523, i#128682}(`I16`_lanetype, `%`_dim{i#128689}(8))), `EXTMUL`_vextbinop__{half#2058, sx#31094}(`HIGH`_half, `U`_sx))] +[visit_exp ishape_1#101] +[visit_id ishape_1#101] +[visit_exp ishape_2#101] +[visit_id ishape_2#101] +[visit_exp (`%`_ishape{shape#6219, Jnn#684}(`%X%`_shape{lanetype#36511, dim#36511, i#128670}(`I32`_lanetype, `%`_dim{i#128677}(4))), `%`_ishape{shape#6231, Jnn#688}(`%X%`_shape{lanetype#36523, dim#36523, i#128682}(`I16`_lanetype, `%`_dim{i#128689}(8))), `EXTMUL`_vextbinop__{half#2058, sx#31094}(`HIGH`_half, `U`_sx))] +[visit_exp `%`_ishape{shape#6219, Jnn#684}(`%X%`_shape{lanetype#36511, dim#36511, i#128670}(`I32`_lanetype, `%`_dim{i#128677}(4)))] +[visit_exp shape#6219] +[visit_id shape#6219] +[visit_exp Jnn#684] +[visit_id Jnn#684] +[visit_exp (`%X%`_shape{lanetype#36511, dim#36511, i#128670}(`I32`_lanetype, `%`_dim{i#128677}(4)))] +[visit_exp `%X%`_shape{lanetype#36511, dim#36511, i#128670}(`I32`_lanetype, `%`_dim{i#128677}(4))] +[visit_exp lanetype#36511] +[visit_id lanetype#36511] +[visit_exp dim#36511] +[visit_id dim#36511] +[visit_exp i#128670] +[visit_id i#128670] +[visit_exp (`I32`_lanetype, `%`_dim{i#128677}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#128677}(4)] +[visit_exp i#128677] +[visit_id i#128677] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%`_ishape{shape#6231, Jnn#688}(`%X%`_shape{lanetype#36523, dim#36523, i#128682}(`I16`_lanetype, `%`_dim{i#128689}(8)))] +[visit_exp shape#6231] +[visit_id shape#6231] +[visit_exp Jnn#688] +[visit_id Jnn#688] +[visit_exp (`%X%`_shape{lanetype#36523, dim#36523, i#128682}(`I16`_lanetype, `%`_dim{i#128689}(8)))] +[visit_exp `%X%`_shape{lanetype#36523, dim#36523, i#128682}(`I16`_lanetype, `%`_dim{i#128689}(8))] +[visit_exp lanetype#36523] +[visit_id lanetype#36523] +[visit_exp dim#36523] +[visit_id dim#36523] +[visit_exp i#128682] +[visit_id i#128682] +[visit_exp (`I16`_lanetype, `%`_dim{i#128689}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#128689}(8)] +[visit_exp i#128689] +[visit_id i#128689] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `EXTMUL`_vextbinop__{half#2058, sx#31094}(`HIGH`_half, `U`_sx)] +[visit_exp half#2058] +[visit_id half#2058] +[visit_exp sx#31094] +[visit_id sx#31094] +[visit_exp (`HIGH`_half, `U`_sx)] +[visit_exp `HIGH`_half] +[visit_exp ()] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I Jnn#692 Jnn#696 dim#36746 dim#36758 i#129025 i#129032 i#129037 i#129044 ishape_1#103 ishape_2#103 lanetype#36746 lanetype#36758 shape#6334 shape#6346 +dims \ I = Jnn#692, Jnn#696, dim#36746, dim#36758, i#129025, i#129032, i#129037, i#129044, ishape_1#103, ishape_2#103, lanetype#36746, lanetype#36758, shape#6334, shape#6346 +[visit_exp `VEXTBINOP`_instr{ishape_1#103, ishape_2#103}(`%`_ishape{shape#6334, Jnn#692}(`%X%`_shape{lanetype#36746, dim#36746, i#129025}(`I32`_lanetype, `%`_dim{i#129032}(4))), `%`_ishape{shape#6346, Jnn#696}(`%X%`_shape{lanetype#36758, dim#36758, i#129037}(`I16`_lanetype, `%`_dim{i#129044}(8))), `DOTS`_vextbinop__)] +[visit_exp ishape_1#103] +[visit_id ishape_1#103] +[visit_exp ishape_2#103] +[visit_id ishape_2#103] +[visit_exp (`%`_ishape{shape#6334, Jnn#692}(`%X%`_shape{lanetype#36746, dim#36746, i#129025}(`I32`_lanetype, `%`_dim{i#129032}(4))), `%`_ishape{shape#6346, Jnn#696}(`%X%`_shape{lanetype#36758, dim#36758, i#129037}(`I16`_lanetype, `%`_dim{i#129044}(8))), `DOTS`_vextbinop__)] +[visit_exp `%`_ishape{shape#6334, Jnn#692}(`%X%`_shape{lanetype#36746, dim#36746, i#129025}(`I32`_lanetype, `%`_dim{i#129032}(4)))] +[visit_exp shape#6334] +[visit_id shape#6334] +[visit_exp Jnn#692] +[visit_id Jnn#692] +[visit_exp (`%X%`_shape{lanetype#36746, dim#36746, i#129025}(`I32`_lanetype, `%`_dim{i#129032}(4)))] +[visit_exp `%X%`_shape{lanetype#36746, dim#36746, i#129025}(`I32`_lanetype, `%`_dim{i#129032}(4))] +[visit_exp lanetype#36746] +[visit_id lanetype#36746] +[visit_exp dim#36746] +[visit_id dim#36746] +[visit_exp i#129025] +[visit_id i#129025] +[visit_exp (`I32`_lanetype, `%`_dim{i#129032}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#129032}(4)] +[visit_exp i#129032] +[visit_id i#129032] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `%`_ishape{shape#6346, Jnn#696}(`%X%`_shape{lanetype#36758, dim#36758, i#129037}(`I16`_lanetype, `%`_dim{i#129044}(8)))] +[visit_exp shape#6346] +[visit_id shape#6346] +[visit_exp Jnn#696] +[visit_id Jnn#696] +[visit_exp (`%X%`_shape{lanetype#36758, dim#36758, i#129037}(`I16`_lanetype, `%`_dim{i#129044}(8)))] +[visit_exp `%X%`_shape{lanetype#36758, dim#36758, i#129037}(`I16`_lanetype, `%`_dim{i#129044}(8))] +[visit_exp lanetype#36758] +[visit_id lanetype#36758] +[visit_exp dim#36758] +[visit_id dim#36758] +[visit_exp i#129037] +[visit_id i#129037] +[visit_exp (`I16`_lanetype, `%`_dim{i#129044}(8))] +[visit_exp `I16`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#129044}(8)] +[visit_exp i#129044] +[visit_id i#129044] +[visit_exp (8)] +[visit_exp 8] +[visit_exp `DOTS`_vextbinop__] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I Jnn#700 Jnn#704 dim#36981 dim#36993 half#2122 i#129380 i#129387 i#129392 i#129399 ishape_1#105 ishape_2#105 lanetype#36981 lanetype#36993 shape#6449 shape#6461 sx#31158 +dims \ I = Jnn#700, Jnn#704, dim#36981, dim#36993, half#2122, i#129380, i#129387, i#129392, i#129399, ishape_1#105, ishape_2#105, lanetype#36981, lanetype#36993, shape#6449, shape#6461, sx#31158 +[visit_exp `VEXTBINOP`_instr{ishape_1#105, ishape_2#105}(`%`_ishape{shape#6449, Jnn#700}(`%X%`_shape{lanetype#36981, dim#36981, i#129380}(`I64`_lanetype, `%`_dim{i#129387}(2))), `%`_ishape{shape#6461, Jnn#704}(`%X%`_shape{lanetype#36993, dim#36993, i#129392}(`I32`_lanetype, `%`_dim{i#129399}(4))), `EXTMUL`_vextbinop__{half#2122, sx#31158}(`LOW`_half, `S`_sx))] +[visit_exp ishape_1#105] +[visit_id ishape_1#105] +[visit_exp ishape_2#105] +[visit_id ishape_2#105] +[visit_exp (`%`_ishape{shape#6449, Jnn#700}(`%X%`_shape{lanetype#36981, dim#36981, i#129380}(`I64`_lanetype, `%`_dim{i#129387}(2))), `%`_ishape{shape#6461, Jnn#704}(`%X%`_shape{lanetype#36993, dim#36993, i#129392}(`I32`_lanetype, `%`_dim{i#129399}(4))), `EXTMUL`_vextbinop__{half#2122, sx#31158}(`LOW`_half, `S`_sx))] +[visit_exp `%`_ishape{shape#6449, Jnn#700}(`%X%`_shape{lanetype#36981, dim#36981, i#129380}(`I64`_lanetype, `%`_dim{i#129387}(2)))] +[visit_exp shape#6449] +[visit_id shape#6449] +[visit_exp Jnn#700] +[visit_id Jnn#700] +[visit_exp (`%X%`_shape{lanetype#36981, dim#36981, i#129380}(`I64`_lanetype, `%`_dim{i#129387}(2)))] +[visit_exp `%X%`_shape{lanetype#36981, dim#36981, i#129380}(`I64`_lanetype, `%`_dim{i#129387}(2))] +[visit_exp lanetype#36981] +[visit_id lanetype#36981] +[visit_exp dim#36981] +[visit_id dim#36981] +[visit_exp i#129380] +[visit_id i#129380] +[visit_exp (`I64`_lanetype, `%`_dim{i#129387}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#129387}(2)] +[visit_exp i#129387] +[visit_id i#129387] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `%`_ishape{shape#6461, Jnn#704}(`%X%`_shape{lanetype#36993, dim#36993, i#129392}(`I32`_lanetype, `%`_dim{i#129399}(4)))] +[visit_exp shape#6461] +[visit_id shape#6461] +[visit_exp Jnn#704] +[visit_id Jnn#704] +[visit_exp (`%X%`_shape{lanetype#36993, dim#36993, i#129392}(`I32`_lanetype, `%`_dim{i#129399}(4)))] +[visit_exp `%X%`_shape{lanetype#36993, dim#36993, i#129392}(`I32`_lanetype, `%`_dim{i#129399}(4))] +[visit_exp lanetype#36993] +[visit_id lanetype#36993] +[visit_exp dim#36993] +[visit_id dim#36993] +[visit_exp i#129392] +[visit_id i#129392] +[visit_exp (`I32`_lanetype, `%`_dim{i#129399}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#129399}(4)] +[visit_exp i#129399] +[visit_id i#129399] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `EXTMUL`_vextbinop__{half#2122, sx#31158}(`LOW`_half, `S`_sx)] +[visit_exp half#2122] +[visit_id half#2122] +[visit_exp sx#31158] +[visit_id sx#31158] +[visit_exp (`LOW`_half, `S`_sx)] +[visit_exp `LOW`_half] +[visit_exp ()] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I Jnn#708 Jnn#712 dim#37216 dim#37228 half#2156 i#129735 i#129742 i#129747 i#129754 ishape_1#107 ishape_2#107 lanetype#37216 lanetype#37228 shape#6564 shape#6576 sx#31192 +dims \ I = Jnn#708, Jnn#712, dim#37216, dim#37228, half#2156, i#129735, i#129742, i#129747, i#129754, ishape_1#107, ishape_2#107, lanetype#37216, lanetype#37228, shape#6564, shape#6576, sx#31192 +[visit_exp `VEXTBINOP`_instr{ishape_1#107, ishape_2#107}(`%`_ishape{shape#6564, Jnn#708}(`%X%`_shape{lanetype#37216, dim#37216, i#129735}(`I64`_lanetype, `%`_dim{i#129742}(2))), `%`_ishape{shape#6576, Jnn#712}(`%X%`_shape{lanetype#37228, dim#37228, i#129747}(`I32`_lanetype, `%`_dim{i#129754}(4))), `EXTMUL`_vextbinop__{half#2156, sx#31192}(`LOW`_half, `U`_sx))] +[visit_exp ishape_1#107] +[visit_id ishape_1#107] +[visit_exp ishape_2#107] +[visit_id ishape_2#107] +[visit_exp (`%`_ishape{shape#6564, Jnn#708}(`%X%`_shape{lanetype#37216, dim#37216, i#129735}(`I64`_lanetype, `%`_dim{i#129742}(2))), `%`_ishape{shape#6576, Jnn#712}(`%X%`_shape{lanetype#37228, dim#37228, i#129747}(`I32`_lanetype, `%`_dim{i#129754}(4))), `EXTMUL`_vextbinop__{half#2156, sx#31192}(`LOW`_half, `U`_sx))] +[visit_exp `%`_ishape{shape#6564, Jnn#708}(`%X%`_shape{lanetype#37216, dim#37216, i#129735}(`I64`_lanetype, `%`_dim{i#129742}(2)))] +[visit_exp shape#6564] +[visit_id shape#6564] +[visit_exp Jnn#708] +[visit_id Jnn#708] +[visit_exp (`%X%`_shape{lanetype#37216, dim#37216, i#129735}(`I64`_lanetype, `%`_dim{i#129742}(2)))] +[visit_exp `%X%`_shape{lanetype#37216, dim#37216, i#129735}(`I64`_lanetype, `%`_dim{i#129742}(2))] +[visit_exp lanetype#37216] +[visit_id lanetype#37216] +[visit_exp dim#37216] +[visit_id dim#37216] +[visit_exp i#129735] +[visit_id i#129735] +[visit_exp (`I64`_lanetype, `%`_dim{i#129742}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#129742}(2)] +[visit_exp i#129742] +[visit_id i#129742] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `%`_ishape{shape#6576, Jnn#712}(`%X%`_shape{lanetype#37228, dim#37228, i#129747}(`I32`_lanetype, `%`_dim{i#129754}(4)))] +[visit_exp shape#6576] +[visit_id shape#6576] +[visit_exp Jnn#712] +[visit_id Jnn#712] +[visit_exp (`%X%`_shape{lanetype#37228, dim#37228, i#129747}(`I32`_lanetype, `%`_dim{i#129754}(4)))] +[visit_exp `%X%`_shape{lanetype#37228, dim#37228, i#129747}(`I32`_lanetype, `%`_dim{i#129754}(4))] +[visit_exp lanetype#37228] +[visit_id lanetype#37228] +[visit_exp dim#37228] +[visit_id dim#37228] +[visit_exp i#129747] +[visit_id i#129747] +[visit_exp (`I32`_lanetype, `%`_dim{i#129754}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#129754}(4)] +[visit_exp i#129754] +[visit_id i#129754] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `EXTMUL`_vextbinop__{half#2156, sx#31192}(`LOW`_half, `U`_sx)] +[visit_exp half#2156] +[visit_id half#2156] +[visit_exp sx#31192] +[visit_id sx#31192] +[visit_exp (`LOW`_half, `U`_sx)] +[visit_exp `LOW`_half] +[visit_exp ()] +[visit_exp `U`_sx] +[visit_exp ()] +[check_dims] I Jnn#716 Jnn#720 dim#37451 dim#37463 half#2190 i#130090 i#130097 i#130102 i#130109 ishape_1#109 ishape_2#109 lanetype#37451 lanetype#37463 shape#6679 shape#6691 sx#31226 +dims \ I = Jnn#716, Jnn#720, dim#37451, dim#37463, half#2190, i#130090, i#130097, i#130102, i#130109, ishape_1#109, ishape_2#109, lanetype#37451, lanetype#37463, shape#6679, shape#6691, sx#31226 +[visit_exp `VEXTBINOP`_instr{ishape_1#109, ishape_2#109}(`%`_ishape{shape#6679, Jnn#716}(`%X%`_shape{lanetype#37451, dim#37451, i#130090}(`I64`_lanetype, `%`_dim{i#130097}(2))), `%`_ishape{shape#6691, Jnn#720}(`%X%`_shape{lanetype#37463, dim#37463, i#130102}(`I32`_lanetype, `%`_dim{i#130109}(4))), `EXTMUL`_vextbinop__{half#2190, sx#31226}(`HIGH`_half, `S`_sx))] +[visit_exp ishape_1#109] +[visit_id ishape_1#109] +[visit_exp ishape_2#109] +[visit_id ishape_2#109] +[visit_exp (`%`_ishape{shape#6679, Jnn#716}(`%X%`_shape{lanetype#37451, dim#37451, i#130090}(`I64`_lanetype, `%`_dim{i#130097}(2))), `%`_ishape{shape#6691, Jnn#720}(`%X%`_shape{lanetype#37463, dim#37463, i#130102}(`I32`_lanetype, `%`_dim{i#130109}(4))), `EXTMUL`_vextbinop__{half#2190, sx#31226}(`HIGH`_half, `S`_sx))] +[visit_exp `%`_ishape{shape#6679, Jnn#716}(`%X%`_shape{lanetype#37451, dim#37451, i#130090}(`I64`_lanetype, `%`_dim{i#130097}(2)))] +[visit_exp shape#6679] +[visit_id shape#6679] +[visit_exp Jnn#716] +[visit_id Jnn#716] +[visit_exp (`%X%`_shape{lanetype#37451, dim#37451, i#130090}(`I64`_lanetype, `%`_dim{i#130097}(2)))] +[visit_exp `%X%`_shape{lanetype#37451, dim#37451, i#130090}(`I64`_lanetype, `%`_dim{i#130097}(2))] +[visit_exp lanetype#37451] +[visit_id lanetype#37451] +[visit_exp dim#37451] +[visit_id dim#37451] +[visit_exp i#130090] +[visit_id i#130090] +[visit_exp (`I64`_lanetype, `%`_dim{i#130097}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#130097}(2)] +[visit_exp i#130097] +[visit_id i#130097] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `%`_ishape{shape#6691, Jnn#720}(`%X%`_shape{lanetype#37463, dim#37463, i#130102}(`I32`_lanetype, `%`_dim{i#130109}(4)))] +[visit_exp shape#6691] +[visit_id shape#6691] +[visit_exp Jnn#720] +[visit_id Jnn#720] +[visit_exp (`%X%`_shape{lanetype#37463, dim#37463, i#130102}(`I32`_lanetype, `%`_dim{i#130109}(4)))] +[visit_exp `%X%`_shape{lanetype#37463, dim#37463, i#130102}(`I32`_lanetype, `%`_dim{i#130109}(4))] +[visit_exp lanetype#37463] +[visit_id lanetype#37463] +[visit_exp dim#37463] +[visit_id dim#37463] +[visit_exp i#130102] +[visit_id i#130102] +[visit_exp (`I32`_lanetype, `%`_dim{i#130109}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#130109}(4)] +[visit_exp i#130109] +[visit_id i#130109] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `EXTMUL`_vextbinop__{half#2190, sx#31226}(`HIGH`_half, `S`_sx)] +[visit_exp half#2190] +[visit_id half#2190] +[visit_exp sx#31226] +[visit_id sx#31226] +[visit_exp (`HIGH`_half, `S`_sx)] +[visit_exp `HIGH`_half] +[visit_exp ()] +[visit_exp `S`_sx] +[visit_exp ()] +[check_dims] I Jnn#724 Jnn#728 dim#37686 dim#37698 half#2224 i#130445 i#130452 i#130457 i#130464 ishape_1#111 ishape_2#111 lanetype#37686 lanetype#37698 shape#6794 shape#6806 sx#31260 +dims \ I = Jnn#724, Jnn#728, dim#37686, dim#37698, half#2224, i#130445, i#130452, i#130457, i#130464, ishape_1#111, ishape_2#111, lanetype#37686, lanetype#37698, shape#6794, shape#6806, sx#31260 +[visit_exp `VEXTBINOP`_instr{ishape_1#111, ishape_2#111}(`%`_ishape{shape#6794, Jnn#724}(`%X%`_shape{lanetype#37686, dim#37686, i#130445}(`I64`_lanetype, `%`_dim{i#130452}(2))), `%`_ishape{shape#6806, Jnn#728}(`%X%`_shape{lanetype#37698, dim#37698, i#130457}(`I32`_lanetype, `%`_dim{i#130464}(4))), `EXTMUL`_vextbinop__{half#2224, sx#31260}(`HIGH`_half, `U`_sx))] +[visit_exp ishape_1#111] +[visit_id ishape_1#111] +[visit_exp ishape_2#111] +[visit_id ishape_2#111] +[visit_exp (`%`_ishape{shape#6794, Jnn#724}(`%X%`_shape{lanetype#37686, dim#37686, i#130445}(`I64`_lanetype, `%`_dim{i#130452}(2))), `%`_ishape{shape#6806, Jnn#728}(`%X%`_shape{lanetype#37698, dim#37698, i#130457}(`I32`_lanetype, `%`_dim{i#130464}(4))), `EXTMUL`_vextbinop__{half#2224, sx#31260}(`HIGH`_half, `U`_sx))] +[visit_exp `%`_ishape{shape#6794, Jnn#724}(`%X%`_shape{lanetype#37686, dim#37686, i#130445}(`I64`_lanetype, `%`_dim{i#130452}(2)))] +[visit_exp shape#6794] +[visit_id shape#6794] +[visit_exp Jnn#724] +[visit_id Jnn#724] +[visit_exp (`%X%`_shape{lanetype#37686, dim#37686, i#130445}(`I64`_lanetype, `%`_dim{i#130452}(2)))] +[visit_exp `%X%`_shape{lanetype#37686, dim#37686, i#130445}(`I64`_lanetype, `%`_dim{i#130452}(2))] +[visit_exp lanetype#37686] +[visit_id lanetype#37686] +[visit_exp dim#37686] +[visit_id dim#37686] +[visit_exp i#130445] +[visit_id i#130445] +[visit_exp (`I64`_lanetype, `%`_dim{i#130452}(2))] +[visit_exp `I64`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#130452}(2)] +[visit_exp i#130452] +[visit_id i#130452] +[visit_exp (2)] +[visit_exp 2] +[visit_exp `%`_ishape{shape#6806, Jnn#728}(`%X%`_shape{lanetype#37698, dim#37698, i#130457}(`I32`_lanetype, `%`_dim{i#130464}(4)))] +[visit_exp shape#6806] +[visit_id shape#6806] +[visit_exp Jnn#728] +[visit_id Jnn#728] +[visit_exp (`%X%`_shape{lanetype#37698, dim#37698, i#130457}(`I32`_lanetype, `%`_dim{i#130464}(4)))] +[visit_exp `%X%`_shape{lanetype#37698, dim#37698, i#130457}(`I32`_lanetype, `%`_dim{i#130464}(4))] +[visit_exp lanetype#37698] +[visit_id lanetype#37698] +[visit_exp dim#37698] +[visit_id dim#37698] +[visit_exp i#130457] +[visit_id i#130457] +[visit_exp (`I32`_lanetype, `%`_dim{i#130464}(4))] +[visit_exp `I32`_lanetype] +[visit_exp ()] +[visit_exp `%`_dim{i#130464}(4)] +[visit_exp i#130464] +[visit_id i#130464] +[visit_exp (4)] +[visit_exp 4] +[visit_exp `EXTMUL`_vextbinop__{half#2224, sx#31260}(`HIGH`_half, `U`_sx)] +[visit_exp half#2224] +[visit_id half#2224] +[visit_exp sx#31260] +[visit_id sx#31260] +[visit_exp (`HIGH`_half, `U`_sx)] +[visit_exp `HIGH`_half] +[visit_exp ()] +[visit_exp `U`_sx] +[visit_exp ()] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I in +dims \ I = in +[visit_exp in*{in <- `in*`}] +[scope_enter in] +[visit_exp in] +[visit_id in] not free +[visit_id in] not free +[scope_exit in] +[visit_exp `in*`] +[visit_id in*] no dims +[visit_id in*] +[visit_exp in*{in <- `in*`}] +[scope_enter in] +[visit_exp in] +[visit_id in] not free +[visit_id in] not free +[scope_exit in] +[visit_exp `in*`] +[visit_id in*] not free +[visit_id in*] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +ps' = (I : I) +[check_dims] I _ +[check_dims] I I' I'' X*#13622 deftype?*#23 i n n#1569 name?*#609 name?*#610 name?*#611 name?*#612 name?*#613 name?*#614 name?*#615 name?*#616 name?*#617 name?*#618 name?**#32 qt rectype#1855 rectype#1885 st +dims \ I = I', I'', X*#13622, deftype?*#23, i, n, n#1569, name?*#609, name?*#610, name?*#611, name?*#612, name?*#613, name?*#614, name?*#615, name?*#616, name?*#617, name?*#618, name?**#32, qt, rectype#1855, rectype#1885, st +[visit_exp (`TYPE`_type{rectype#1855}(qt), I' +++ I'')] +[visit_exp `TYPE`_type{rectype#1855}(qt)] +[visit_exp rectype#1855] +[visit_id rectype#1855] +[visit_exp (qt)] +[visit_exp qt] +[visit_id qt] +[visit_exp I' +++ I''] +[visit_exp I'] +[visit_id I'] +[visit_exp I''] +[visit_id I''] +[visit_exp (qt, I')] +[visit_exp qt] +[visit_id qt] not free +[visit_exp I'] +[visit_id I'] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp (qt = `REC`_rectype(`%`_list{`X*#13622`}(st^n{st <- `st*`})))] +[visit_exp qt] +[visit_id qt] not free +[visit_exp `REC`_rectype(`%`_list{`X*#13622`}(st^n{st <- `st*`}))] +[visit_exp (`%`_list{`X*#13622`}(st^n{st <- `st*`}))] +[visit_exp `%`_list{`X*#13622`}(st^n{st <- `st*`})] +[visit_exp `X*#13622`] +[visit_id X*#13622] +[visit_exp (st^n{st <- `st*`})] +[visit_exp st^n{st <- `st*`}] +[scope_enter st] +[visit_exp st] +[visit_id st] not free +[visit_id st] not free +[scope_exit st] +[visit_exp n] +[visit_id n] +[visit_exp `st*`] +[visit_id st*] no dims +[visit_id st*] +[visit_exp (I'' = {`TYPES`{`name?*#609`} [], `TAGS`{`name?*#610`} [], `GLOBALS`{`name?*#611`} [], `MEMS`{`name?*#612`} [], `TABLES`{`name?*#613`} [], `FUNCS`{`name?*#614`} [], `DATAS`{`name?*#615`} [], `ELEMS`{`name?*#616`} [], `LOCALS`{`name?*#617`} [], `LABELS`{`name?*#618`} [], `FIELDS`{`name?**#32`} [], `TYPEDEFS`{`deftype?*#23`} ?(`_DEF`_deftype{rectype#1885, n#1569}(qt, i))^(i +dims \ = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +[check_dims] +DecD dots : () +ps' = (I : I) +[check_dims] I +[check_dims] I +dims \ I = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I +dims \ I = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I +dims \ I = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I +dims \ I = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I +dims \ I = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I +dims \ I = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +[check_dims] I +dims \ I = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I +dims \ I = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I +dims \ I = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I +dims \ I = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I +dims \ I = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I +dims \ I = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I char*#1519 char*#1531 id id' name?*#754 +[visit_exp ?(`%`_name{`char*#1519`}(lift(id?{id <- `id?`})))] +[visit_exp `%`_name{`char*#1519`}(lift(id?{id <- `id?`}))] +[visit_exp `char*#1519`] +[visit_id char*#1519] +[visit_exp (lift(id?{id <- `id?`}))] +[visit_exp lift(id?{id <- `id?`})] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] no dims +[visit_id id?] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp id'] +[visit_id id'] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ((`%`_name{`char*#1531`}(lift(id?{id <- `id?`})) = id') \/ ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`TAGS`_I{`name?*#754`})))] +[visit_exp (`%`_name{`char*#1531`}(lift(id?{id <- `id?`})) = id')] +[visit_exp `%`_name{`char*#1531`}(lift(id?{id <- `id?`}))] +[visit_exp `char*#1531`] +[visit_id char*#1531] +[visit_exp (lift(id?{id <- `id?`}))] +[visit_exp lift(id?{id <- `id?`})] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] not free +[visit_id id?] no dims +[visit_exp id'] +[visit_id id'] not free +[visit_exp ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`TAGS`_I{`name?*#754`}))] +[visit_exp (id?{id <- `id?`} = ?())] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] not free +[visit_id id?] no dims +[visit_exp ?()] +[visit_exp ~ (?(id') <- I.`TAGS`_I{`name?*#754`})] +[visit_exp (?(id') <- I.`TAGS`_I{`name?*#754`})] +[visit_exp ?(id')] +[visit_exp id'] +[visit_id id'] not free +[visit_exp I.`TAGS`_I{`name?*#754`}] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp `name?*#754`] +[visit_id name?*#754] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I char*#1553 char*#1565 id id' name?*#760 +[visit_exp ?(`%`_name{`char*#1553`}(lift(id?{id <- `id?`})))] +[visit_exp `%`_name{`char*#1553`}(lift(id?{id <- `id?`}))] +[visit_exp `char*#1553`] +[visit_id char*#1553] +[visit_exp (lift(id?{id <- `id?`}))] +[visit_exp lift(id?{id <- `id?`})] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] no dims +[visit_id id?] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp id'] +[visit_id id'] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ((`%`_name{`char*#1565`}(lift(id?{id <- `id?`})) = id') \/ ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`GLOBALS`_I{`name?*#760`})))] +[visit_exp (`%`_name{`char*#1565`}(lift(id?{id <- `id?`})) = id')] +[visit_exp `%`_name{`char*#1565`}(lift(id?{id <- `id?`}))] +[visit_exp `char*#1565`] +[visit_id char*#1565] +[visit_exp (lift(id?{id <- `id?`}))] +[visit_exp lift(id?{id <- `id?`})] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] not free +[visit_id id?] no dims +[visit_exp id'] +[visit_id id'] not free +[visit_exp ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`GLOBALS`_I{`name?*#760`}))] +[visit_exp (id?{id <- `id?`} = ?())] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] not free +[visit_id id?] no dims +[visit_exp ?()] +[visit_exp ~ (?(id') <- I.`GLOBALS`_I{`name?*#760`})] +[visit_exp (?(id') <- I.`GLOBALS`_I{`name?*#760`})] +[visit_exp ?(id')] +[visit_exp id'] +[visit_id id'] not free +[visit_exp I.`GLOBALS`_I{`name?*#760`}] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp `name?*#760`] +[visit_id name?*#760] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I char*#1587 char*#1599 id id' name?*#766 +[visit_exp ?(`%`_name{`char*#1587`}(lift(id?{id <- `id?`})))] +[visit_exp `%`_name{`char*#1587`}(lift(id?{id <- `id?`}))] +[visit_exp `char*#1587`] +[visit_id char*#1587] +[visit_exp (lift(id?{id <- `id?`}))] +[visit_exp lift(id?{id <- `id?`})] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] no dims +[visit_id id?] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp id'] +[visit_id id'] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ((`%`_name{`char*#1599`}(lift(id?{id <- `id?`})) = id') \/ ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`MEMS`_I{`name?*#766`})))] +[visit_exp (`%`_name{`char*#1599`}(lift(id?{id <- `id?`})) = id')] +[visit_exp `%`_name{`char*#1599`}(lift(id?{id <- `id?`}))] +[visit_exp `char*#1599`] +[visit_id char*#1599] +[visit_exp (lift(id?{id <- `id?`}))] +[visit_exp lift(id?{id <- `id?`})] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] not free +[visit_id id?] no dims +[visit_exp id'] +[visit_id id'] not free +[visit_exp ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`MEMS`_I{`name?*#766`}))] +[visit_exp (id?{id <- `id?`} = ?())] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] not free +[visit_id id?] no dims +[visit_exp ?()] +[visit_exp ~ (?(id') <- I.`MEMS`_I{`name?*#766`})] +[visit_exp (?(id') <- I.`MEMS`_I{`name?*#766`})] +[visit_exp ?(id')] +[visit_exp id'] +[visit_id id'] not free +[visit_exp I.`MEMS`_I{`name?*#766`}] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp `name?*#766`] +[visit_id name?*#766] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I char*#1621 char*#1633 id id' name?*#772 +[visit_exp ?(`%`_name{`char*#1621`}(lift(id?{id <- `id?`})))] +[visit_exp `%`_name{`char*#1621`}(lift(id?{id <- `id?`}))] +[visit_exp `char*#1621`] +[visit_id char*#1621] +[visit_exp (lift(id?{id <- `id?`}))] +[visit_exp lift(id?{id <- `id?`})] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] no dims +[visit_id id?] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp id'] +[visit_id id'] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ((`%`_name{`char*#1633`}(lift(id?{id <- `id?`})) = id') \/ ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`TABLES`_I{`name?*#772`})))] +[visit_exp (`%`_name{`char*#1633`}(lift(id?{id <- `id?`})) = id')] +[visit_exp `%`_name{`char*#1633`}(lift(id?{id <- `id?`}))] +[visit_exp `char*#1633`] +[visit_id char*#1633] +[visit_exp (lift(id?{id <- `id?`}))] +[visit_exp lift(id?{id <- `id?`})] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] not free +[visit_id id?] no dims +[visit_exp id'] +[visit_id id'] not free +[visit_exp ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`TABLES`_I{`name?*#772`}))] +[visit_exp (id?{id <- `id?`} = ?())] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] not free +[visit_id id?] no dims +[visit_exp ?()] +[visit_exp ~ (?(id') <- I.`TABLES`_I{`name?*#772`})] +[visit_exp (?(id') <- I.`TABLES`_I{`name?*#772`})] +[visit_exp ?(id')] +[visit_exp id'] +[visit_id id'] not free +[visit_exp I.`TABLES`_I{`name?*#772`}] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp `name?*#772`] +[visit_id name?*#772] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I char*#1655 char*#1667 id id' name?*#778 +[visit_exp ?(`%`_name{`char*#1655`}(lift(id?{id <- `id?`})))] +[visit_exp `%`_name{`char*#1655`}(lift(id?{id <- `id?`}))] +[visit_exp `char*#1655`] +[visit_id char*#1655] +[visit_exp (lift(id?{id <- `id?`}))] +[visit_exp lift(id?{id <- `id?`})] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] no dims +[visit_id id?] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp id'] +[visit_id id'] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ((`%`_name{`char*#1667`}(lift(id?{id <- `id?`})) = id') \/ ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`FUNCS`_I{`name?*#778`})))] +[visit_exp (`%`_name{`char*#1667`}(lift(id?{id <- `id?`})) = id')] +[visit_exp `%`_name{`char*#1667`}(lift(id?{id <- `id?`}))] +[visit_exp `char*#1667`] +[visit_id char*#1667] +[visit_exp (lift(id?{id <- `id?`}))] +[visit_exp lift(id?{id <- `id?`})] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] not free +[visit_id id?] no dims +[visit_exp id'] +[visit_id id'] not free +[visit_exp ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`FUNCS`_I{`name?*#778`}))] +[visit_exp (id?{id <- `id?`} = ?())] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] not free +[visit_id id?] no dims +[visit_exp ?()] +[visit_exp ~ (?(id') <- I.`FUNCS`_I{`name?*#778`})] +[visit_exp (?(id') <- I.`FUNCS`_I{`name?*#778`})] +[visit_exp ?(id')] +[visit_exp id'] +[visit_id id'] not free +[visit_exp I.`FUNCS`_I{`name?*#778`}] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp `name?*#778`] +[visit_id name?*#778] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I at at' b char*#1689 char*#1707 i#131658 i#131685 id id' n name?*#784 +[visit_exp ?(`%`_name{`char*#1689`}(lift(id?{id <- `id?`})))] +[visit_exp `%`_name{`char*#1689`}(lift(id?{id <- `id?`}))] +[visit_exp `char*#1689`] +[visit_id char*#1689] +[visit_exp (lift(id?{id <- `id?`}))] +[visit_exp lift(id?{id <- `id?`})] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] no dims +[visit_id id?] +[visit_exp at?{at <- `at?`}] +[scope_enter at] +[visit_exp at] +[visit_id at] not free +[visit_id at] not free +[scope_exit at] +[visit_exp `at?`] +[visit_id at?] no dims +[visit_id at?] +[visit_exp b*{b <- `b*`}] +[scope_enter b] +[visit_exp b] +[visit_id b] not free +[visit_id b] not free +[scope_exit b] +[visit_exp `b*`] +[visit_id b*] no dims +[visit_id b*] +[visit_exp id'] +[visit_id id'] +[visit_exp at?{at <- `at?`}] +[scope_enter at] +[visit_exp at] +[visit_id at] not free +[visit_id at] not free +[scope_exit at] +[visit_exp `at?`] +[visit_id at?] not free +[visit_id at?] no dims +[visit_exp `%`_u64{i#131658}(n)] +[visit_exp i#131658] +[visit_id i#131658] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `%`_u64{i#131685}(n)] +[visit_exp i#131685] +[visit_id i#131685] +[visit_exp (n)] +[visit_exp n] +[visit_id n] not free +[visit_exp id'] +[visit_id id'] not free +[visit_exp at'] +[visit_id at'] +[visit_exp ((`%`_name{`char*#1707`}(lift(id?{id <- `id?`})) = id') \/ ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`MEMS`_I{`name?*#784`})))] +[visit_exp (`%`_name{`char*#1707`}(lift(id?{id <- `id?`})) = id')] +[visit_exp `%`_name{`char*#1707`}(lift(id?{id <- `id?`}))] +[visit_exp `char*#1707`] +[visit_id char*#1707] +[visit_exp (lift(id?{id <- `id?`}))] +[visit_exp lift(id?{id <- `id?`})] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] not free +[visit_id id?] no dims +[visit_exp id'] +[visit_id id'] not free +[visit_exp ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`MEMS`_I{`name?*#784`}))] +[visit_exp (id?{id <- `id?`} = ?())] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] not free +[visit_id id?] no dims +[visit_exp ?()] +[visit_exp ~ (?(id') <- I.`MEMS`_I{`name?*#784`})] +[visit_exp (?(id') <- I.`MEMS`_I{`name?*#784`})] +[visit_exp ?(id')] +[visit_exp id'] +[visit_id id'] not free +[visit_exp I.`MEMS`_I{`name?*#784`}] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp `name?*#784`] +[visit_id name?*#784] +[visit_exp ((at?{at <- `at?`} = ?(at')) \/ ((at?{at <- `at?`} = ?()) /\ (at' = `I32`_addrtype)))] +[visit_exp (at?{at <- `at?`} = ?(at'))] +[visit_exp at?{at <- `at?`}] +[scope_enter at] +[visit_exp at] +[visit_id at] not free +[visit_id at] not free +[scope_exit at] +[visit_exp `at?`] +[visit_id at?] not free +[visit_id at?] no dims +[visit_exp ?(at')] +[visit_exp at'] +[visit_id at'] not free +[visit_exp ((at?{at <- `at?`} = ?()) /\ (at' = `I32`_addrtype))] +[visit_exp (at?{at <- `at?`} = ?())] +[visit_exp at?{at <- `at?`}] +[scope_enter at] +[visit_exp at] +[visit_id at] not free +[visit_id at] not free +[scope_exit at] +[visit_exp `at?`] +[visit_id at?] not free +[visit_id at?] no dims +[visit_exp ?()] +[visit_exp (at' = `I32`_addrtype)] +[visit_exp at'] +[visit_id at'] not free +[visit_exp `I32`_addrtype] +[visit_exp ()] +[visit_exp ((n : nat <:> int) = $ceilz((((|b*{b <- `b*`}| : nat <:> rat) / (64 : nat <:> rat)) * ($Ki : nat <:> rat))))] +[visit_exp (n : nat <:> int)] +[visit_exp n] +[visit_id n] not free +[visit_exp $ceilz((((|b*{b <- `b*`}| : nat <:> rat) / (64 : nat <:> rat)) * ($Ki : nat <:> rat)))] +[visit_exp (((|b*{b <- `b*`}| : nat <:> rat) / (64 : nat <:> rat)) * ($Ki : nat <:> rat))] +[visit_exp ((|b*{b <- `b*`}| : nat <:> rat) / (64 : nat <:> rat))] +[visit_exp (|b*{b <- `b*`}| : nat <:> rat)] +[visit_exp |b*{b <- `b*`}|] +[visit_exp b*{b <- `b*`}] +[scope_enter b] +[visit_exp b] +[visit_id b] not free +[visit_id b] not free +[scope_exit b] +[visit_exp `b*`] +[visit_id b*] not free +[visit_id b*] no dims +[visit_exp (64 : nat <:> rat)] +[visit_exp 64] +[visit_exp ($Ki : nat <:> rat)] +[visit_exp $Ki] +[visit_id I] not free +ps' = (I : I) +[check_dims] I +[check_dims] I at at' char*#1729 char*#1747 e i#131750 i#131777 id id' n name?*#790 rt +[visit_exp ?(`%`_name{`char*#1729`}(lift(id?{id <- `id?`})))] +[visit_exp `%`_name{`char*#1729`}(lift(id?{id <- `id?`}))] +[visit_exp `char*#1729`] +[visit_id char*#1729] +[visit_exp (lift(id?{id <- `id?`}))] +[visit_exp lift(id?{id <- `id?`})] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] no dims +[visit_id id?] +[visit_exp at?{at <- `at?`}] +[scope_enter at] +[visit_exp at] +[visit_id at] not free +[visit_id at] not free +[scope_exit at] +[visit_exp `at?`] +[visit_id at?] no dims +[visit_id at?] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp (rt, e*{e <- `e*`})] +[visit_exp rt] +[visit_id rt] +[visit_exp e*{e <- `e*`}] +[scope_enter e] +[visit_exp e] +[visit_id e] not free +[visit_id e] not free +[scope_exit e] +[visit_exp `e*`] +[visit_id e*] no dims +[visit_id e*] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp id'] +[visit_id id'] +[visit_exp at?{at <- `at?`}] +[scope_enter at] +[visit_exp at] +[visit_id at] not free +[visit_id at] not free +[scope_exit at] +[visit_exp `at?`] +[visit_id at?] not free +[visit_id at?] no dims +[visit_exp `%`_u64{i#131750}(n)] +[visit_exp i#131750] +[visit_id i#131750] +[visit_exp (n)] +[visit_exp n] +[visit_id n] +[visit_exp `%`_u64{i#131777}(n)] +[visit_exp i#131777] +[visit_id i#131777] +[visit_exp (n)] +[visit_exp n] +[visit_id n] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp id'] +[visit_id id'] not free +[visit_exp at'] +[visit_id at'] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp ((`%`_name{`char*#1747`}(lift(id?{id <- `id?`})) = id') \/ ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`TABLES`_I{`name?*#790`})))] +[visit_exp (`%`_name{`char*#1747`}(lift(id?{id <- `id?`})) = id')] +[visit_exp `%`_name{`char*#1747`}(lift(id?{id <- `id?`}))] +[visit_exp `char*#1747`] +[visit_id char*#1747] +[visit_exp (lift(id?{id <- `id?`}))] +[visit_exp lift(id?{id <- `id?`})] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] not free +[visit_id id?] no dims +[visit_exp id'] +[visit_id id'] not free +[visit_exp ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`TABLES`_I{`name?*#790`}))] +[visit_exp (id?{id <- `id?`} = ?())] +[visit_exp id?{id <- `id?`}] +[scope_enter id] +[visit_exp id] +[visit_id id] not free +[visit_id id] not free +[scope_exit id] +[visit_exp `id?`] +[visit_id id?] not free +[visit_id id?] no dims +[visit_exp ?()] +[visit_exp ~ (?(id') <- I.`TABLES`_I{`name?*#790`})] +[visit_exp (?(id') <- I.`TABLES`_I{`name?*#790`})] +[visit_exp ?(id')] +[visit_exp id'] +[visit_id id'] not free +[visit_exp I.`TABLES`_I{`name?*#790`}] +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_exp `name?*#790`] +[visit_id name?*#790] +[visit_exp ((at?{at <- `at?`} = ?(at')) \/ ((at?{at <- `at?`} = ?()) /\ (at' = `I32`_addrtype)))] +[visit_exp (at?{at <- `at?`} = ?(at'))] +[visit_exp at?{at <- `at?`}] +[scope_enter at] +[visit_exp at] +[visit_id at] not free +[visit_id at] not free +[scope_exit at] +[visit_exp `at?`] +[visit_id at?] not free +[visit_id at?] no dims +[visit_exp ?(at')] +[visit_exp at'] +[visit_id at'] not free +[visit_exp ((at?{at <- `at?`} = ?()) /\ (at' = `I32`_addrtype))] +[visit_exp (at?{at <- `at?`} = ?())] +[visit_exp at?{at <- `at?`}] +[scope_enter at] +[visit_exp at] +[visit_id at] not free +[visit_id at] not free +[scope_exit at] +[visit_exp `at?`] +[visit_id at?] not free +[visit_id at?] no dims +[visit_exp ?()] +[visit_exp (at' = `I32`_addrtype)] +[visit_exp at'] +[visit_id at'] not free +[visit_exp `I32`_addrtype] +[visit_exp ()] +[visit_exp (n = |e*{e <- `e*`}|)] +[visit_exp n] +[visit_id n] not free +[visit_exp |e*{e <- `e*`}|] +[visit_exp e*{e <- `e*`}] +[scope_enter e] +[visit_exp e] +[visit_id e] not free +[visit_id e] not free +[scope_exit e] +[visit_exp `e*`] +[visit_id e*] not free +[visit_id e*] no dims +[visit_id I] not free +[check_dims] +[check_dims] _ +DecD typesd(decl*) : type* +[visit_id _] not free +[check_dims] _ +DecD importsd(decl*) : import* +[visit_id _] not free +[check_dims] _ +DecD tagsd(decl*) : tag* +[visit_id _] not free +[check_dims] _ +DecD globalsd(decl*) : global* +[visit_id _] not free +[check_dims] _ +DecD memsd(decl*) : mem* +[visit_id _] not free +[check_dims] _ +DecD tablesd(decl*) : table* +[visit_id _] not free +[check_dims] _ +DecD funcsd(decl*) : func* +[visit_id _] not free +[check_dims] _ +DecD datasd(decl*) : data* +[visit_id _] not free +[check_dims] _ +DecD elemsd(decl*) : elem* +[visit_id _] not free +[check_dims] _ +DecD startsd(decl*) : start* +[visit_id _] not free +[check_dims] _ +DecD exportsd(decl*) : export* +[visit_id _] not free +[check_dims] +[visit_exp []] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + def $typesd([]) = [] +[check_dims] decl' type +[visit_exp [(type : type <: decl)] ++ decl'*{decl' <- `decl'*`}] +[visit_exp [(type : type <: decl)]] +[visit_exp (type : type <: decl)] +[visit_exp type] +[visit_id type] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] no dims +[visit_id decl'*] +[visit_exp [type] ++ $typesd(decl'*{decl' <- `decl'*`})] +[visit_exp [type]] +[visit_exp type] +[visit_id type] not free +[visit_exp $typesd(decl'*{decl' <- `decl'*`})] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] not free +[visit_id decl'*] no dims +=> + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + def $typesd{type : type, `decl'*` : decl*}([(type : type <: decl)] ++ decl'*{decl' <- `decl'*`}) = [type] ++ $typesd(decl'*{decl' <- `decl'*`}) +[check_dims] decl decl' +[visit_exp [decl] ++ decl'*{decl' <- `decl'*`}] +[visit_exp [decl]] +[visit_exp decl] +[visit_id decl] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] no dims +[visit_id decl'*] +[visit_exp $typesd(decl'*{decl' <- `decl'*`})] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] not free +[visit_id decl'*] no dims +=> + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) + -- otherwise +[check_dims] +[visit_exp []] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + def $importsd([]) = [] +[check_dims] decl' import +[visit_exp [(import : import <: decl)] ++ decl'*{decl' <- `decl'*`}] +[visit_exp [(import : import <: decl)]] +[visit_exp (import : import <: decl)] +[visit_exp import] +[visit_id import] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] no dims +[visit_id decl'*] +[visit_exp [import] ++ $importsd(decl'*{decl' <- `decl'*`})] +[visit_exp [import]] +[visit_exp import] +[visit_id import] not free +[visit_exp $importsd(decl'*{decl' <- `decl'*`})] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] not free +[visit_id decl'*] no dims +=> + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + def $importsd{import : import, `decl'*` : decl*}([(import : import <: decl)] ++ decl'*{decl' <- `decl'*`}) = [import] ++ $importsd(decl'*{decl' <- `decl'*`}) +[check_dims] decl decl' +[visit_exp [decl] ++ decl'*{decl' <- `decl'*`}] +[visit_exp [decl]] +[visit_exp decl] +[visit_id decl] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] no dims +[visit_id decl'*] +[visit_exp $importsd(decl'*{decl' <- `decl'*`})] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] not free +[visit_id decl'*] no dims +=> + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) + -- otherwise +[check_dims] +[visit_exp []] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + def $tagsd([]) = [] +[check_dims] decl' tag +[visit_exp [(tag : tag <: decl)] ++ decl'*{decl' <- `decl'*`}] +[visit_exp [(tag : tag <: decl)]] +[visit_exp (tag : tag <: decl)] +[visit_exp tag] +[visit_id tag] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] no dims +[visit_id decl'*] +[visit_exp [tag] ++ $tagsd(decl'*{decl' <- `decl'*`})] +[visit_exp [tag]] +[visit_exp tag] +[visit_id tag] not free +[visit_exp $tagsd(decl'*{decl' <- `decl'*`})] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] not free +[visit_id decl'*] no dims +=> + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + def $tagsd{tag : tag, `decl'*` : decl*}([(tag : tag <: decl)] ++ decl'*{decl' <- `decl'*`}) = [tag] ++ $tagsd(decl'*{decl' <- `decl'*`}) +[check_dims] decl decl' +[visit_exp [decl] ++ decl'*{decl' <- `decl'*`}] +[visit_exp [decl]] +[visit_exp decl] +[visit_id decl] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] no dims +[visit_id decl'*] +[visit_exp $tagsd(decl'*{decl' <- `decl'*`})] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] not free +[visit_id decl'*] no dims +=> + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) + -- otherwise +[check_dims] +[visit_exp []] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + def $globalsd([]) = [] +[check_dims] decl' global +[visit_exp [(global : global <: decl)] ++ decl'*{decl' <- `decl'*`}] +[visit_exp [(global : global <: decl)]] +[visit_exp (global : global <: decl)] +[visit_exp global] +[visit_id global] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] no dims +[visit_id decl'*] +[visit_exp [global] ++ $globalsd(decl'*{decl' <- `decl'*`})] +[visit_exp [global]] +[visit_exp global] +[visit_id global] not free +[visit_exp $globalsd(decl'*{decl' <- `decl'*`})] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] not free +[visit_id decl'*] no dims +=> + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + def $globalsd{global : global, `decl'*` : decl*}([(global : global <: decl)] ++ decl'*{decl' <- `decl'*`}) = [global] ++ $globalsd(decl'*{decl' <- `decl'*`}) +[check_dims] decl decl' +[visit_exp [decl] ++ decl'*{decl' <- `decl'*`}] +[visit_exp [decl]] +[visit_exp decl] +[visit_id decl] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] no dims +[visit_id decl'*] +[visit_exp $globalsd(decl'*{decl' <- `decl'*`})] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] not free +[visit_id decl'*] no dims +=> + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) + -- otherwise +[check_dims] +[visit_exp []] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + def $memsd([]) = [] +[check_dims] decl' mem +[visit_exp [(mem : mem <: decl)] ++ decl'*{decl' <- `decl'*`}] +[visit_exp [(mem : mem <: decl)]] +[visit_exp (mem : mem <: decl)] +[visit_exp mem] +[visit_id mem] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] no dims +[visit_id decl'*] +[visit_exp [mem] ++ $memsd(decl'*{decl' <- `decl'*`})] +[visit_exp [mem]] +[visit_exp mem] +[visit_id mem] not free +[visit_exp $memsd(decl'*{decl' <- `decl'*`})] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] not free +[visit_id decl'*] no dims +=> + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + def $memsd{mem : mem, `decl'*` : decl*}([(mem : mem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [mem] ++ $memsd(decl'*{decl' <- `decl'*`}) +[check_dims] decl decl' +[visit_exp [decl] ++ decl'*{decl' <- `decl'*`}] +[visit_exp [decl]] +[visit_exp decl] +[visit_id decl] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] no dims +[visit_id decl'*] +[visit_exp $memsd(decl'*{decl' <- `decl'*`})] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] not free +[visit_id decl'*] no dims +=> + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) + -- otherwise +[check_dims] +[visit_exp []] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + def $tablesd([]) = [] +[check_dims] decl' table +[visit_exp [(table : table <: decl)] ++ decl'*{decl' <- `decl'*`}] +[visit_exp [(table : table <: decl)]] +[visit_exp (table : table <: decl)] +[visit_exp table] +[visit_id table] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] no dims +[visit_id decl'*] +[visit_exp [table] ++ $tablesd(decl'*{decl' <- `decl'*`})] +[visit_exp [table]] +[visit_exp table] +[visit_id table] not free +[visit_exp $tablesd(decl'*{decl' <- `decl'*`})] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] not free +[visit_id decl'*] no dims +=> + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + def $tablesd{table : table, `decl'*` : decl*}([(table : table <: decl)] ++ decl'*{decl' <- `decl'*`}) = [table] ++ $tablesd(decl'*{decl' <- `decl'*`}) +[check_dims] decl decl' +[visit_exp [decl] ++ decl'*{decl' <- `decl'*`}] +[visit_exp [decl]] +[visit_exp decl] +[visit_id decl] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] no dims +[visit_id decl'*] +[visit_exp $tablesd(decl'*{decl' <- `decl'*`})] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] not free +[visit_id decl'*] no dims +=> + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) + -- otherwise +[check_dims] +[visit_exp []] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + def $funcsd([]) = [] +[check_dims] decl' func +[visit_exp [(func : func <: decl)] ++ decl'*{decl' <- `decl'*`}] +[visit_exp [(func : func <: decl)]] +[visit_exp (func : func <: decl)] +[visit_exp func] +[visit_id func] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] no dims +[visit_id decl'*] +[visit_exp [func] ++ $funcsd(decl'*{decl' <- `decl'*`})] +[visit_exp [func]] +[visit_exp func] +[visit_id func] not free +[visit_exp $funcsd(decl'*{decl' <- `decl'*`})] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] not free +[visit_id decl'*] no dims +=> + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + def $funcsd{func : func, `decl'*` : decl*}([(func : func <: decl)] ++ decl'*{decl' <- `decl'*`}) = [func] ++ $funcsd(decl'*{decl' <- `decl'*`}) +[check_dims] decl decl' +[visit_exp [decl] ++ decl'*{decl' <- `decl'*`}] +[visit_exp [decl]] +[visit_exp decl] +[visit_id decl] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] no dims +[visit_id decl'*] +[visit_exp $funcsd(decl'*{decl' <- `decl'*`})] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] not free +[visit_id decl'*] no dims +=> + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) + -- otherwise +[check_dims] +[visit_exp []] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + def $datasd([]) = [] +[check_dims] data decl' +[visit_exp [(data : data <: decl)] ++ decl'*{decl' <- `decl'*`}] +[visit_exp [(data : data <: decl)]] +[visit_exp (data : data <: decl)] +[visit_exp data] +[visit_id data] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] no dims +[visit_id decl'*] +[visit_exp [data] ++ $datasd(decl'*{decl' <- `decl'*`})] +[visit_exp [data]] +[visit_exp data] +[visit_id data] not free +[visit_exp $datasd(decl'*{decl' <- `decl'*`})] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] not free +[visit_id decl'*] no dims +=> + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + def $datasd{data : data, `decl'*` : decl*}([(data : data <: decl)] ++ decl'*{decl' <- `decl'*`}) = [data] ++ $datasd(decl'*{decl' <- `decl'*`}) +[check_dims] decl decl' +[visit_exp [decl] ++ decl'*{decl' <- `decl'*`}] +[visit_exp [decl]] +[visit_exp decl] +[visit_id decl] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] no dims +[visit_id decl'*] +[visit_exp $datasd(decl'*{decl' <- `decl'*`})] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] not free +[visit_id decl'*] no dims +=> + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) + -- otherwise +[check_dims] +[visit_exp []] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + def $elemsd([]) = [] +[check_dims] decl' elem +[visit_exp [(elem : elem <: decl)] ++ decl'*{decl' <- `decl'*`}] +[visit_exp [(elem : elem <: decl)]] +[visit_exp (elem : elem <: decl)] +[visit_exp elem] +[visit_id elem] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] no dims +[visit_id decl'*] +[visit_exp [elem] ++ $elemsd(decl'*{decl' <- `decl'*`})] +[visit_exp [elem]] +[visit_exp elem] +[visit_id elem] not free +[visit_exp $elemsd(decl'*{decl' <- `decl'*`})] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] not free +[visit_id decl'*] no dims +=> + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + def $elemsd{elem : elem, `decl'*` : decl*}([(elem : elem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [elem] ++ $elemsd(decl'*{decl' <- `decl'*`}) +[check_dims] decl decl' +[visit_exp [decl] ++ decl'*{decl' <- `decl'*`}] +[visit_exp [decl]] +[visit_exp decl] +[visit_id decl] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] no dims +[visit_id decl'*] +[visit_exp $elemsd(decl'*{decl' <- `decl'*`})] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] not free +[visit_id decl'*] no dims +=> + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) + -- otherwise +[check_dims] +[visit_exp []] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + def $startsd([]) = [] +[check_dims] decl' start +[visit_exp [(start : start <: decl)] ++ decl'*{decl' <- `decl'*`}] +[visit_exp [(start : start <: decl)]] +[visit_exp (start : start <: decl)] +[visit_exp start] +[visit_id start] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] no dims +[visit_id decl'*] +[visit_exp [start] ++ $startsd(decl'*{decl' <- `decl'*`})] +[visit_exp [start]] +[visit_exp start] +[visit_id start] not free +[visit_exp $startsd(decl'*{decl' <- `decl'*`})] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] not free +[visit_id decl'*] no dims +=> + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + def $startsd{start : start, `decl'*` : decl*}([(start : start <: decl)] ++ decl'*{decl' <- `decl'*`}) = [start] ++ $startsd(decl'*{decl' <- `decl'*`}) +[check_dims] decl decl' +[visit_exp [decl] ++ decl'*{decl' <- `decl'*`}] +[visit_exp [decl]] +[visit_exp decl] +[visit_id decl] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] no dims +[visit_id decl'*] +[visit_exp $startsd(decl'*{decl' <- `decl'*`})] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] not free +[visit_id decl'*] no dims +=> + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) + -- otherwise +[check_dims] +[visit_exp []] +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + def $exportsd([]) = [] +[check_dims] decl' export +[visit_exp [(export : export <: decl)] ++ decl'*{decl' <- `decl'*`}] +[visit_exp [(export : export <: decl)]] +[visit_exp (export : export <: decl)] +[visit_exp export] +[visit_id export] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] no dims +[visit_id decl'*] +[visit_exp [export] ++ $exportsd(decl'*{decl' <- `decl'*`})] +[visit_exp [export]] +[visit_exp export] +[visit_id export] not free +[visit_exp $exportsd(decl'*{decl' <- `decl'*`})] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] not free +[visit_id decl'*] no dims +=> + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + def $exportsd{export : export, `decl'*` : decl*}([(export : export <: decl)] ++ decl'*{decl' <- `decl'*`}) = [export] ++ $exportsd(decl'*{decl' <- `decl'*`}) +[check_dims] decl decl' +[visit_exp [decl] ++ decl'*{decl' <- `decl'*`}] +[visit_exp [decl]] +[visit_exp decl] +[visit_id decl] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] no dims +[visit_id decl'*] +[visit_exp $exportsd(decl'*{decl' <- `decl'*`})] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] not free +[visit_id decl'*] no dims +=> + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) + -- otherwise +[check_dims] _ +DecD ordered(decl*) : bool +[visit_id _] not free +[check_dims] decl' +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] no dims +[visit_id decl'*] +[visit_exp true] +[visit_exp ($importsd(decl'*{decl' <- `decl'*`}) = [])] +[visit_exp $importsd(decl'*{decl' <- `decl'*`})] +[visit_exp decl'*{decl' <- `decl'*`}] +[scope_enter decl'] +[visit_exp decl'] +[visit_id decl'] not free +[visit_id decl'] not free +[scope_exit decl'] +[visit_exp `decl'*`] +[visit_id decl'*] not free +[visit_id decl'*] no dims +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + def $ordered{`decl'*` : decl*}(decl'*{decl' <- `decl'*`}) = true + -- if ($importsd(decl'*{decl' <- `decl'*`}) = []) +[check_dims] decl_1 decl_2 import +[visit_exp decl_1*{decl_1 <- `decl_1*`} ++ [(import : import <: decl)] ++ decl_2*{decl_2 <- `decl_2*`}] +[visit_exp decl_1*{decl_1 <- `decl_1*`}] +[scope_enter decl_1] +[visit_exp decl_1] +[visit_id decl_1] not free +[visit_id decl_1] not free +[scope_exit decl_1] +[visit_exp `decl_1*`] +[visit_id decl_1*] no dims +[visit_id decl_1*] +[visit_exp [(import : import <: decl)] ++ decl_2*{decl_2 <- `decl_2*`}] +[visit_exp [(import : import <: decl)]] +[visit_exp (import : import <: decl)] +[visit_exp import] +[visit_id import] +[visit_exp decl_2*{decl_2 <- `decl_2*`}] +[scope_enter decl_2] +[visit_exp decl_2] +[visit_id decl_2] not free +[visit_id decl_2] not free +[scope_exit decl_2] +[visit_exp `decl_2*`] +[visit_id decl_2*] no dims +[visit_id decl_2*] +[visit_exp (((((($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*`}) = []))] +[visit_exp ((((($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*`}) = []))] +[visit_exp (((($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*`}) = []))] +[visit_exp ((($importsd(decl_1*{decl_1 <- `decl_1*`}) = []) /\ ($tagsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1*{decl_1 <- `decl_1*`}) = []))] +[visit_exp (($importsd(decl_1*{decl_1 <- `decl_1*`}) = []) /\ ($tagsd(decl_1*{decl_1 <- `decl_1*`}) = []))] +[visit_exp ($importsd(decl_1*{decl_1 <- `decl_1*`}) = [])] +[visit_exp $importsd(decl_1*{decl_1 <- `decl_1*`})] +[visit_exp decl_1*{decl_1 <- `decl_1*`}] +[scope_enter decl_1] +[visit_exp decl_1] +[visit_id decl_1] not free +[visit_id decl_1] not free +[scope_exit decl_1] +[visit_exp `decl_1*`] +[visit_id decl_1*] not free +[visit_id decl_1*] no dims +[visit_exp []] +[visit_exp ($tagsd(decl_1*{decl_1 <- `decl_1*`}) = [])] +[visit_exp $tagsd(decl_1*{decl_1 <- `decl_1*`})] +[visit_exp decl_1*{decl_1 <- `decl_1*`}] +[scope_enter decl_1] +[visit_exp decl_1] +[visit_id decl_1] not free +[visit_id decl_1] not free +[scope_exit decl_1] +[visit_exp `decl_1*`] +[visit_id decl_1*] not free +[visit_id decl_1*] no dims +[visit_exp []] +[visit_exp ($globalsd(decl_1*{decl_1 <- `decl_1*`}) = [])] +[visit_exp $globalsd(decl_1*{decl_1 <- `decl_1*`})] +[visit_exp decl_1*{decl_1 <- `decl_1*`}] +[scope_enter decl_1] +[visit_exp decl_1] +[visit_id decl_1] not free +[visit_id decl_1] not free +[scope_exit decl_1] +[visit_exp `decl_1*`] +[visit_id decl_1*] not free +[visit_id decl_1*] no dims +[visit_exp []] +[visit_exp ($memsd(decl_1*{decl_1 <- `decl_1*`}) = [])] +[visit_exp $memsd(decl_1*{decl_1 <- `decl_1*`})] +[visit_exp decl_1*{decl_1 <- `decl_1*`}] +[scope_enter decl_1] +[visit_exp decl_1] +[visit_id decl_1] not free +[visit_id decl_1] not free +[scope_exit decl_1] +[visit_exp `decl_1*`] +[visit_id decl_1*] not free +[visit_id decl_1*] no dims +[visit_exp []] +[visit_exp ($tablesd(decl_1*{decl_1 <- `decl_1*`}) = [])] +[visit_exp $tablesd(decl_1*{decl_1 <- `decl_1*`})] +[visit_exp decl_1*{decl_1 <- `decl_1*`}] +[scope_enter decl_1] +[visit_exp decl_1] +[visit_id decl_1] not free +[visit_id decl_1] not free +[scope_exit decl_1] +[visit_exp `decl_1*`] +[visit_id decl_1*] not free +[visit_id decl_1*] no dims +[visit_exp []] +[visit_exp ($funcsd(decl_1*{decl_1 <- `decl_1*`}) = [])] +[visit_exp $funcsd(decl_1*{decl_1 <- `decl_1*`})] +[visit_exp decl_1*{decl_1 <- `decl_1*`}] +[scope_enter decl_1] +[visit_exp decl_1] +[visit_id decl_1] not free +[visit_id decl_1] not free +[scope_exit decl_1] +[visit_exp `decl_1*`] +[visit_id decl_1*] not free +[visit_id decl_1*] no dims +[visit_exp []] +=> + ;; ../../../../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*`}) = [])) +ps' = (I : I) +[check_dims] I _ +[check_dims] I _ +dims \ I = , _ +[visit_exp (`` : (type, idctxt) <: (decl, idctxt))] +[visit_exp ``] +[visit_id ] +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[visit_exp ``] +[visit_id ] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I _ +dims \ I = , _ +[visit_exp (`` : (import, idctxt) <: (decl, idctxt))] +[visit_exp ``] +[visit_id ] +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[visit_exp ``] +[visit_id ] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I _ +dims \ I = , _ +[visit_exp (`` : (tag, idctxt) <: (decl, idctxt))] +[visit_exp ``] +[visit_id ] +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[visit_exp ``] +[visit_id ] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I _ +dims \ I = , _ +[visit_exp (`` : (global, idctxt) <: (decl, idctxt))] +[visit_exp ``] +[visit_id ] +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[visit_exp ``] +[visit_id ] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I _ +dims \ I = , _ +[visit_exp (`` : (mem, idctxt) <: (decl, idctxt))] +[visit_exp ``] +[visit_id ] +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[visit_exp ``] +[visit_id ] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I _ +dims \ I = , _ +[visit_exp (`` : (table, idctxt) <: (decl, idctxt))] +[visit_exp ``] +[visit_id ] +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[visit_exp ``] +[visit_id ] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I _ +dims \ I = , _ +[visit_exp (`` : (func, idctxt) <: (decl, idctxt))] +[visit_exp ``] +[visit_id ] +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[visit_exp ``] +[visit_id ] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I _ +dims \ I = , _ +[visit_exp (`` : (data, idctxt) <: (decl, idctxt))] +[visit_exp ``] +[visit_id ] +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[visit_exp ``] +[visit_id ] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I _ +dims \ I = , _ +[visit_exp (`` : (elem, idctxt) <: (decl, idctxt))] +[visit_exp ``] +[visit_id ] +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[visit_exp ``] +[visit_id ] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I _ +dims \ I = , _ +[visit_exp (`` : (start, idctxt) <: (decl, idctxt))] +[visit_exp ``] +[visit_id ] +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[visit_exp ``] +[visit_id ] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[check_dims] I _ +dims \ I = , _ +[visit_exp (`` : (export, idctxt) <: (decl, idctxt))] +[visit_exp ``] +[visit_id ] +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[visit_exp ``] +[visit_id ] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +[visit_id _] not free +[visit_id _] no dims +[visit_id _] not free +[visit_id _] no dims +ps' = +[check_dims] +[check_dims] I I' data data*#155 decl elem elem*#179 export export*#155 func func*#155 global global*#179 import import*#155 mem mem*#179 start start?#155 table table*#179 tag tag*#155 type type*#155 +dims \ = I, I', data, data*#155, decl, elem, elem*#179, export, export*#155, func, func*#155, global, global*#179, import, import*#155, mem, mem*#179, start, start?#155, table, table*#179, tag, tag*#155, type, type*#155 +[visit_exp `MODULE`_module{`type*#155`, `import*#155`, `tag*#155`, `global*#179`, `mem*#179`, `table*#179`, `func*#155`, `data*#155`, `elem*#179`, `start?#155`, `export*#155`}(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*`})] +[visit_exp `type*#155`] +[visit_id type*#155] +[visit_exp `import*#155`] +[visit_id import*#155] +[visit_exp `tag*#155`] +[visit_id tag*#155] +[visit_exp `global*#179`] +[visit_id global*#179] +[visit_exp `mem*#179`] +[visit_id mem*#179] +[visit_exp `table*#179`] +[visit_id table*#179] +[visit_exp `func*#155`] +[visit_id func*#155] +[visit_exp `data*#155`] +[visit_id data*#155] +[visit_exp `elem*#179`] +[visit_id elem*#179] +[visit_exp `start?#155`] +[visit_id start?#155] +[visit_exp `export*#155`] +[visit_id export*#155] +[visit_exp (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*`})] +[visit_exp type*{type <- `type*`}] +[scope_enter type] +[visit_exp type] +[visit_id type] not free +[visit_id type] not free +[scope_exit type] +[visit_exp `type*`] +[visit_id type*] no dims +[visit_id type*] +[visit_exp import*{import <- `import*`}] +[scope_enter import] +[visit_exp import] +[visit_id import] not free +[visit_id import] not free +[scope_exit import] +[visit_exp `import*`] +[visit_id import*] no dims +[visit_id import*] +[visit_exp tag*{tag <- `tag*`}] +[scope_enter tag] +[visit_exp tag] +[visit_id tag] not free +[visit_id tag] not free +[scope_exit tag] +[visit_exp `tag*`] +[visit_id tag*] no dims +[visit_id tag*] +[visit_exp global*{global <- `global*`}] +[scope_enter global] +[visit_exp global] +[visit_id global] not free +[visit_id global] not free +[scope_exit global] +[visit_exp `global*`] +[visit_id global*] no dims +[visit_id global*] +[visit_exp mem*{mem <- `mem*`}] +[scope_enter mem] +[visit_exp mem] +[visit_id mem] not free +[visit_id mem] not free +[scope_exit mem] +[visit_exp `mem*`] +[visit_id mem*] no dims +[visit_id mem*] +[visit_exp table*{table <- `table*`}] +[scope_enter table] +[visit_exp table] +[visit_id table] not free +[visit_id table] not free +[scope_exit table] +[visit_exp `table*`] +[visit_id table*] no dims +[visit_id table*] +[visit_exp func*{func <- `func*`}] +[scope_enter func] +[visit_exp func] +[visit_id func] not free +[visit_id func] not free +[scope_exit func] +[visit_exp `func*`] +[visit_id func*] no dims +[visit_id func*] +[visit_exp data*{data <- `data*`}] +[scope_enter data] +[visit_exp data] +[visit_id data] not free +[visit_id data] not free +[scope_exit data] +[visit_exp `data*`] +[visit_id data*] no dims +[visit_id data*] +[visit_exp elem*{elem <- `elem*`}] +[scope_enter elem] +[visit_exp elem] +[visit_id elem] not free +[visit_id elem] not free +[scope_exit elem] +[visit_exp `elem*`] +[visit_id elem*] no dims +[visit_id elem*] +[visit_exp start?{start <- `start?`}] +[scope_enter start] +[visit_exp start] +[visit_id start] not free +[visit_id start] not free +[scope_exit start] +[visit_exp `start?`] +[visit_id start?] no dims +[visit_id start?] +[visit_exp export*{export <- `export*`}] +[scope_enter export] +[visit_exp export] +[visit_id export] not free +[visit_id export] not free +[scope_exit export] +[visit_exp `export*`] +[visit_id export*] no dims +[visit_id export*] +[visit_exp (decl, I)*{I <- `I*`, decl <- `decl*`}] +[scope_enter I] +[scope_enter decl] +[visit_exp (decl, I)] +[visit_exp decl] +[visit_id decl] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] not free +[visit_id decl] not free +[scope_exit decl] +[scope_exit I] +[visit_exp `I*`] +[visit_id I*] no dims +[visit_id I*] +[visit_exp `decl*`] +[visit_id decl*] no dims +[visit_id decl*] +[visit_exp I'] +[visit_id I'] +[visit_exp (I' = $concat_idctxt(I*{I <- `I*`}))] +[visit_exp I'] +[visit_id I'] not free +[visit_exp $concat_idctxt(I*{I <- `I*`})] +[visit_exp I*{I <- `I*`}] +[scope_enter I] +[visit_exp I] +[visit_id I] not free +[visit_id I] not free +[scope_exit I] +[visit_exp `I*`] +[visit_id I*] not free +[visit_id I*] no dims +[visit_exp I'] +[visit_id I'] not free +[visit_exp (type*{type <- `type*`} = $typesd(decl*{decl <- `decl*`}))] +[visit_exp type*{type <- `type*`}] +[scope_enter type] +[visit_exp type] +[visit_id type] not free +[visit_id type] not free +[scope_exit type] +[visit_exp `type*`] +[visit_id type*] not free +[visit_id type*] no dims +[visit_exp $typesd(decl*{decl <- `decl*`})] +[visit_exp decl*{decl <- `decl*`}] +[scope_enter decl] +[visit_exp decl] +[visit_id decl] not free +[visit_id decl] not free +[scope_exit decl] +[visit_exp `decl*`] +[visit_id decl*] not free +[visit_id decl*] no dims +[visit_exp (import*{import <- `import*`} = $importsd(decl*{decl <- `decl*`}))] +[visit_exp import*{import <- `import*`}] +[scope_enter import] +[visit_exp import] +[visit_id import] not free +[visit_id import] not free +[scope_exit import] +[visit_exp `import*`] +[visit_id import*] not free +[visit_id import*] no dims +[visit_exp $importsd(decl*{decl <- `decl*`})] +[visit_exp decl*{decl <- `decl*`}] +[scope_enter decl] +[visit_exp decl] +[visit_id decl] not free +[visit_id decl] not free +[scope_exit decl] +[visit_exp `decl*`] +[visit_id decl*] not free +[visit_id decl*] no dims +[visit_exp (tag*{tag <- `tag*`} = $tagsd(decl*{decl <- `decl*`}))] +[visit_exp tag*{tag <- `tag*`}] +[scope_enter tag] +[visit_exp tag] +[visit_id tag] not free +[visit_id tag] not free +[scope_exit tag] +[visit_exp `tag*`] +[visit_id tag*] not free +[visit_id tag*] no dims +[visit_exp $tagsd(decl*{decl <- `decl*`})] +[visit_exp decl*{decl <- `decl*`}] +[scope_enter decl] +[visit_exp decl] +[visit_id decl] not free +[visit_id decl] not free +[scope_exit decl] +[visit_exp `decl*`] +[visit_id decl*] not free +[visit_id decl*] no dims +[visit_exp (global*{global <- `global*`} = $globalsd(decl*{decl <- `decl*`}))] +[visit_exp global*{global <- `global*`}] +[scope_enter global] +[visit_exp global] +[visit_id global] not free +[visit_id global] not free +[scope_exit global] +[visit_exp `global*`] +[visit_id global*] not free +[visit_id global*] no dims +[visit_exp $globalsd(decl*{decl <- `decl*`})] +[visit_exp decl*{decl <- `decl*`}] +[scope_enter decl] +[visit_exp decl] +[visit_id decl] not free +[visit_id decl] not free +[scope_exit decl] +[visit_exp `decl*`] +[visit_id decl*] not free +[visit_id decl*] no dims +[visit_exp (mem*{mem <- `mem*`} = $memsd(decl*{decl <- `decl*`}))] +[visit_exp mem*{mem <- `mem*`}] +[scope_enter mem] +[visit_exp mem] +[visit_id mem] not free +[visit_id mem] not free +[scope_exit mem] +[visit_exp `mem*`] +[visit_id mem*] not free +[visit_id mem*] no dims +[visit_exp $memsd(decl*{decl <- `decl*`})] +[visit_exp decl*{decl <- `decl*`}] +[scope_enter decl] +[visit_exp decl] +[visit_id decl] not free +[visit_id decl] not free +[scope_exit decl] +[visit_exp `decl*`] +[visit_id decl*] not free +[visit_id decl*] no dims +[visit_exp (table*{table <- `table*`} = $tablesd(decl*{decl <- `decl*`}))] +[visit_exp table*{table <- `table*`}] +[scope_enter table] +[visit_exp table] +[visit_id table] not free +[visit_id table] not free +[scope_exit table] +[visit_exp `table*`] +[visit_id table*] not free +[visit_id table*] no dims +[visit_exp $tablesd(decl*{decl <- `decl*`})] +[visit_exp decl*{decl <- `decl*`}] +[scope_enter decl] +[visit_exp decl] +[visit_id decl] not free +[visit_id decl] not free +[scope_exit decl] +[visit_exp `decl*`] +[visit_id decl*] not free +[visit_id decl*] no dims +[visit_exp (func*{func <- `func*`} = $funcsd(decl*{decl <- `decl*`}))] +[visit_exp func*{func <- `func*`}] +[scope_enter func] +[visit_exp func] +[visit_id func] not free +[visit_id func] not free +[scope_exit func] +[visit_exp `func*`] +[visit_id func*] not free +[visit_id func*] no dims +[visit_exp $funcsd(decl*{decl <- `decl*`})] +[visit_exp decl*{decl <- `decl*`}] +[scope_enter decl] +[visit_exp decl] +[visit_id decl] not free +[visit_id decl] not free +[scope_exit decl] +[visit_exp `decl*`] +[visit_id decl*] not free +[visit_id decl*] no dims +[visit_exp (data*{data <- `data*`} = $datasd(decl*{decl <- `decl*`}))] +[visit_exp data*{data <- `data*`}] +[scope_enter data] +[visit_exp data] +[visit_id data] not free +[visit_id data] not free +[scope_exit data] +[visit_exp `data*`] +[visit_id data*] not free +[visit_id data*] no dims +[visit_exp $datasd(decl*{decl <- `decl*`})] +[visit_exp decl*{decl <- `decl*`}] +[scope_enter decl] +[visit_exp decl] +[visit_id decl] not free +[visit_id decl] not free +[scope_exit decl] +[visit_exp `decl*`] +[visit_id decl*] not free +[visit_id decl*] no dims +[visit_exp (elem*{elem <- `elem*`} = $elemsd(decl*{decl <- `decl*`}))] +[visit_exp elem*{elem <- `elem*`}] +[scope_enter elem] +[visit_exp elem] +[visit_id elem] not free +[visit_id elem] not free +[scope_exit elem] +[visit_exp `elem*`] +[visit_id elem*] not free +[visit_id elem*] no dims +[visit_exp $elemsd(decl*{decl <- `decl*`})] +[visit_exp decl*{decl <- `decl*`}] +[scope_enter decl] +[visit_exp decl] +[visit_id decl] not free +[visit_id decl] not free +[scope_exit decl] +[visit_exp `decl*`] +[visit_id decl*] not free +[visit_id decl*] no dims +[visit_exp (lift(start?{start <- `start?`}) = $startsd(decl*{decl <- `decl*`}))] +[visit_exp lift(start?{start <- `start?`})] +[visit_exp start?{start <- `start?`}] +[scope_enter start] +[visit_exp start] +[visit_id start] not free +[visit_id start] not free +[scope_exit start] +[visit_exp `start?`] +[visit_id start?] not free +[visit_id start?] no dims +[visit_exp $startsd(decl*{decl <- `decl*`})] +[visit_exp decl*{decl <- `decl*`}] +[scope_enter decl] +[visit_exp decl] +[visit_id decl] not free +[visit_id decl] not free +[scope_exit decl] +[visit_exp `decl*`] +[visit_id decl*] not free +[visit_id decl*] no dims +[visit_exp (export*{export <- `export*`} = $exportsd(decl*{decl <- `decl*`}))] +[visit_exp export*{export <- `export*`}] +[scope_enter export] +[visit_exp export] +[visit_id export] not free +[visit_id export] not free +[scope_exit export] +[visit_exp `export*`] +[visit_id export*] not free +[visit_id export*] no dims +[visit_exp $exportsd(decl*{decl <- `decl*`})] +[visit_exp decl*{decl <- `decl*`}] +[scope_enter decl] +[visit_exp decl] +[visit_id decl] not free +[visit_id decl] not free +[scope_exit decl] +[visit_exp `decl*`] +[visit_id decl*] not free +[visit_id decl*] no dims +[visit_exp $ordered(decl*{decl <- `decl*`})] +[visit_exp decl*{decl <- `decl*`}] +[scope_enter decl] +[visit_exp decl] +[visit_id decl] not free +[visit_id decl] not free +[scope_exit decl] +[visit_exp `decl*`] +[visit_id decl*] not free +[visit_id decl*] no dims +ps' = +[check_dims] +[check_dims] I +[scope_enter I] +[visit_exp I] +[visit_id I] not free +[visit_id I] not free +[scope_exit I] +[visit_exp `I*`] +[visit_id I*] no dims +[visit_id I*] +[scope_enter I] +[visit_exp I] +[visit_id I] not free +[visit_id I] not free +[scope_exit I] +[visit_exp `I*`] +[visit_id I*] not free +[visit_id I*] no dims +ps' = (I : I) +[check_dims] I _ +[check_dims] I +dims \ I = +[visit_exp [``]] +[visit_exp ``] +[visit_id ] +[visit_exp [``]] +[visit_exp ``] +[visit_id ] not free +[visit_exp I] +[visit_id I] not free +[visit_id I] no dims +[visit_id I] not free +[visit_id _] not free +[visit_id _] no dims +[visit_id _] not free +[visit_id _] no dims +[check_dims] +[check_dims] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id A_1] no dims +[visit_id A_1] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id A_n] no dims +[visit_id A_n] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id A_1] no dims +[visit_id A_1] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id A_2] no dims +[visit_id A_2] +[check_dims] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id A_1] no dims +[visit_id A_1] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id A_2] no dims +[visit_id A_2] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id recorddots] no dims +[visit_id recorddots] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[check_dims] conclusion premise_1 premise_2 premise_n +[visit_exp conclusion] +[visit_id conclusion] +[visit_exp premise_1] +[visit_id premise_1] +[visit_exp premise_2] +[visit_id premise_2] +[visit_exp ()] +[visit_exp premise_n] +[visit_id premise_n] +[check_dims] +[check_dims] C X*#13813 X*#13862 localidx*#1817 numtype#1105 resulttype#3064 +[visit_exp C] +[visit_id C] +[visit_exp [`BINOP`_instr{numtype#1105}(`I32`_numtype, `ADD`_binop_)]] +[visit_exp `BINOP`_instr{numtype#1105}(`I32`_numtype, `ADD`_binop_)] +[visit_exp numtype#1105] +[visit_id numtype#1105] +[visit_exp (`I32`_numtype, `ADD`_binop_)] +[visit_exp `I32`_numtype] +[visit_exp ()] +[visit_exp `ADD`_binop_] +[visit_exp ()] +[visit_exp `%->_%%`_instrtype{resulttype#3064, `localidx*#1817`}(`%`_resulttype{`X*#13813`}([`I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#13862`}([`I32`_valtype]))] +[visit_exp resulttype#3064] +[visit_id resulttype#3064] +[visit_exp `localidx*#1817`] +[visit_id localidx*#1817] +[visit_exp (`%`_resulttype{`X*#13813`}([`I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#13862`}([`I32`_valtype]))] +[visit_exp `%`_resulttype{`X*#13813`}([`I32`_valtype `I32`_valtype])] +[visit_exp `X*#13813`] +[visit_id X*#13813] +[visit_exp ([`I32`_valtype `I32`_valtype])] +[visit_exp [`I32`_valtype `I32`_valtype]] +[visit_exp `I32`_valtype] +[visit_exp ()] +[visit_exp `I32`_valtype] +[visit_exp ()] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#13862`}([`I32`_valtype])] +[visit_exp `X*#13862`] +[visit_id X*#13862] +[visit_exp ([`I32`_valtype])] +[visit_exp [`I32`_valtype]] +[visit_exp `I32`_valtype] +[visit_exp ()] +[check_dims] C X*#13883 X*#13932 globalidx#35 globaltype*#27 i#131877 localidx*#1829 mut mut?#1609 resulttype#3084 t valtype#1343 x +[visit_exp C] +[visit_id C] +[visit_exp [`GLOBAL.GET`_instr{globalidx#35}(x)]] +[visit_exp `GLOBAL.GET`_instr{globalidx#35}(x)] +[visit_exp globalidx#35] +[visit_id globalidx#35] +[visit_exp (x)] +[visit_exp x] +[visit_id x] +[visit_exp `%->_%%`_instrtype{resulttype#3084, `localidx*#1829`}(`%`_resulttype{`X*#13883`}([]), [], `%`_resulttype{`X*#13932`}([t]))] +[visit_exp resulttype#3084] +[visit_id resulttype#3084] +[visit_exp `localidx*#1829`] +[visit_id localidx*#1829] +[visit_exp (`%`_resulttype{`X*#13883`}([]), [], `%`_resulttype{`X*#13932`}([t]))] +[visit_exp `%`_resulttype{`X*#13883`}([])] +[visit_exp `X*#13883`] +[visit_id X*#13883] +[visit_exp ([])] +[visit_exp []] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#13932`}([t])] +[visit_exp `X*#13932`] +[visit_id X*#13932] +[visit_exp ([t])] +[visit_exp [t]] +[visit_exp t] +[visit_id t] +[visit_exp (C.`GLOBALS`_context{`globaltype*#27`}[x!`%`_idx{i#131877}.0] = `%%`_globaltype{`mut?#1609`, valtype#1343}(?(mut), t))] +[visit_exp C.`GLOBALS`_context{`globaltype*#27`}[x!`%`_idx{i#131877}.0]] +[visit_exp C.`GLOBALS`_context{`globaltype*#27`}] +[visit_exp C] +[visit_id C] not free +[visit_exp `globaltype*#27`] +[visit_id globaltype*#27] +[visit_exp x!`%`_idx{i#131877}.0] +[visit_exp x!`%`_idx{i#131877}] +[visit_exp x] +[visit_id x] not free +[visit_exp i#131877] +[visit_id i#131877] +[visit_exp `%%`_globaltype{`mut?#1609`, valtype#1343}(?(mut), t)] +[visit_exp `mut?#1609`] +[visit_id mut?#1609] +[visit_exp valtype#1343] +[visit_id valtype#1343] +[visit_exp (?(mut), t)] +[visit_exp ?(mut)] +[visit_exp mut] +[visit_id mut] +[visit_exp t] +[visit_id t] not free +[check_dims] C X*#13943 X*#13994 X*#14005 X*#14056 X*#14067 X*#14080 X*#14131 blocktype blocktype#49 datatype*#26 deftype*#98 deftype*#99 elemtype*#26 funcidx*#63 globaltype*#28 instr instr*#2369 localidx*#1841 localidx*#1853 localidx*#1865 localtype*#29 memtype*#41 resulttype#3104 resulttype#3124 resulttype#3144 resulttype*#37 resulttype?#34 subtype*#25 t_1 t_2 tabletype*#34 tagtype*#26 +[visit_exp C] +[visit_id C] +[visit_exp [`BLOCK`_instr{blocktype#49, `instr*#2369`}(blocktype, instr*{instr <- `instr*`})]] +[visit_exp `BLOCK`_instr{blocktype#49, `instr*#2369`}(blocktype, instr*{instr <- `instr*`})] +[visit_exp blocktype#49] +[visit_id blocktype#49] +[visit_exp `instr*#2369`] +[visit_id instr*#2369] +[visit_exp (blocktype, instr*{instr <- `instr*`})] +[visit_exp blocktype] +[visit_id blocktype] +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] no dims +[visit_id instr*] +[visit_exp `%->_%%`_instrtype{resulttype#3104, `localidx*#1841`}(`%`_resulttype{`X*#13943`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#13994`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#3104] +[visit_id resulttype#3104] +[visit_exp `localidx*#1841`] +[visit_id localidx*#1841] +[visit_exp (`%`_resulttype{`X*#13943`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#13994`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#13943`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#13943`] +[visit_id X*#13943] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] no dims +[visit_id t_1*] +[visit_exp []] +[visit_exp `%`_resulttype{`X*#13994`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#13994`] +[visit_id X*#13994] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] no dims +[visit_id t_2*] +[visit_exp (C, blocktype, `%->_%%`_instrtype{resulttype#3124, `localidx*#1853`}(`%`_resulttype{`X*#14005`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#14056`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp C] +[visit_id C] not free +[visit_exp blocktype] +[visit_id blocktype] not free +[visit_exp `%->_%%`_instrtype{resulttype#3124, `localidx*#1853`}(`%`_resulttype{`X*#14005`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#14056`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#3124] +[visit_id resulttype#3124] +[visit_exp `localidx*#1853`] +[visit_id localidx*#1853] +[visit_exp (`%`_resulttype{`X*#14005`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#14056`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#14005`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#14005`] +[visit_id X*#14005] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] not free +[visit_id t_1*] no dims +[visit_exp []] +[visit_exp `%`_resulttype{`X*#14056`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#14056`] +[visit_id X*#14056] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] not free +[visit_id t_2*] no dims +[visit_exp ({`TYPES`{`deftype*#98`} [], `RECS`{`subtype*#25`} [], `TAGS`{`tagtype*#26`} [], `GLOBALS`{`globaltype*#28`} [], `MEMS`{`memtype*#41`} [], `TABLES`{`tabletype*#34`} [], `FUNCS`{`deftype*#99`} [], `DATAS`{`datatype*#26`} [], `ELEMS`{`elemtype*#26`} [], `LOCALS`{`localtype*#29`} [], `LABELS`{`resulttype*#37`} [`%`_resulttype{`X*#14067`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#34`} ?(), `REFS`{`funcidx*#63`} []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype{resulttype#3144, `localidx*#1865`}(`%`_resulttype{`X*#14080`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#14131`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp {`TYPES`{`deftype*#98`} [], `RECS`{`subtype*#25`} [], `TAGS`{`tagtype*#26`} [], `GLOBALS`{`globaltype*#28`} [], `MEMS`{`memtype*#41`} [], `TABLES`{`tabletype*#34`} [], `FUNCS`{`deftype*#99`} [], `DATAS`{`datatype*#26`} [], `ELEMS`{`elemtype*#26`} [], `LOCALS`{`localtype*#29`} [], `LABELS`{`resulttype*#37`} [`%`_resulttype{`X*#14067`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#34`} ?(), `REFS`{`funcidx*#63`} []} +++ C] +[visit_exp {`TYPES`{`deftype*#98`} [], `RECS`{`subtype*#25`} [], `TAGS`{`tagtype*#26`} [], `GLOBALS`{`globaltype*#28`} [], `MEMS`{`memtype*#41`} [], `TABLES`{`tabletype*#34`} [], `FUNCS`{`deftype*#99`} [], `DATAS`{`datatype*#26`} [], `ELEMS`{`elemtype*#26`} [], `LOCALS`{`localtype*#29`} [], `LABELS`{`resulttype*#37`} [`%`_resulttype{`X*#14067`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#34`} ?(), `REFS`{`funcidx*#63`} []}] +[visit_exp `deftype*#98`] +[visit_id deftype*#98] +[visit_exp []] +[visit_exp `subtype*#25`] +[visit_id subtype*#25] +[visit_exp []] +[visit_exp `tagtype*#26`] +[visit_id tagtype*#26] +[visit_exp []] +[visit_exp `globaltype*#28`] +[visit_id globaltype*#28] +[visit_exp []] +[visit_exp `memtype*#41`] +[visit_id memtype*#41] +[visit_exp []] +[visit_exp `tabletype*#34`] +[visit_id tabletype*#34] +[visit_exp []] +[visit_exp `deftype*#99`] +[visit_id deftype*#99] +[visit_exp []] +[visit_exp `datatype*#26`] +[visit_id datatype*#26] +[visit_exp []] +[visit_exp `elemtype*#26`] +[visit_id elemtype*#26] +[visit_exp []] +[visit_exp `localtype*#29`] +[visit_id localtype*#29] +[visit_exp []] +[visit_exp `resulttype*#37`] +[visit_id resulttype*#37] +[visit_exp [`%`_resulttype{`X*#14067`}(t_2*{t_2 <- `t_2*`})]] +[visit_exp `%`_resulttype{`X*#14067`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#14067`] +[visit_id X*#14067] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] not free +[visit_id t_2*] no dims +[visit_exp `resulttype?#34`] +[visit_id resulttype?#34] +[visit_exp ?()] +[visit_exp `funcidx*#63`] +[visit_id funcidx*#63] +[visit_exp []] +[visit_exp C] +[visit_id C] not free +[visit_exp instr*{instr <- `instr*`}] +[scope_enter instr] +[visit_exp instr] +[visit_id instr] not free +[visit_id instr] not free +[scope_exit instr] +[visit_exp `instr*`] +[visit_id instr*] not free +[visit_id instr*] no dims +[visit_exp `%->_%%`_instrtype{resulttype#3144, `localidx*#1865`}(`%`_resulttype{`X*#14080`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#14131`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp resulttype#3144] +[visit_id resulttype#3144] +[visit_exp `localidx*#1865`] +[visit_id localidx*#1865] +[visit_exp (`%`_resulttype{`X*#14080`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#14131`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype{`X*#14080`}(t_1*{t_1 <- `t_1*`})] +[visit_exp `X*#14080`] +[visit_id X*#14080] +[visit_exp (t_1*{t_1 <- `t_1*`})] +[visit_exp t_1*{t_1 <- `t_1*`}] +[scope_enter t_1] +[visit_exp t_1] +[visit_id t_1] not free +[visit_id t_1] not free +[scope_exit t_1] +[visit_exp `t_1*`] +[visit_id t_1*] not free +[visit_id t_1*] no dims +[visit_exp []] +[visit_exp `%`_resulttype{`X*#14131`}(t_2*{t_2 <- `t_2*`})] +[visit_exp `X*#14131`] +[visit_id X*#14131] +[visit_exp (t_2*{t_2 <- `t_2*`})] +[visit_exp t_2*{t_2 <- `t_2*`}] +[scope_enter t_2] +[visit_exp t_2] +[visit_id t_2] not free +[visit_id t_2] not free +[scope_exit t_2] +[visit_exp `t_2*`] +[visit_id t_2*] not free +[visit_id t_2*] no dims +[check_dims] +[check_dims] numtype#1107 numtype#1109 numtype#1111 numtype#1113 numtype#1115 q_1 q_3 q_4 +[visit_exp [`CONST`_instr{numtype#1107}(`F64`_numtype, q_1) `CONST`_instr{numtype#1109}(`F64`_numtype, q_4) `CONST`_instr{numtype#1111}(`F64`_numtype, q_3) `BINOP`_instr{numtype#1113}(`F64`_numtype, `ADD`_binop_) `BINOP`_instr{numtype#1115}(`F64`_numtype, `MUL`_binop_)]] +[visit_exp `CONST`_instr{numtype#1107}(`F64`_numtype, q_1)] +[visit_exp numtype#1107] +[visit_id numtype#1107] +[visit_exp (`F64`_numtype, q_1)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp q_1] +[visit_id q_1] +[visit_exp `CONST`_instr{numtype#1109}(`F64`_numtype, q_4)] +[visit_exp numtype#1109] +[visit_id numtype#1109] +[visit_exp (`F64`_numtype, q_4)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp q_4] +[visit_id q_4] +[visit_exp `CONST`_instr{numtype#1111}(`F64`_numtype, q_3)] +[visit_exp numtype#1111] +[visit_id numtype#1111] +[visit_exp (`F64`_numtype, q_3)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp q_3] +[visit_id q_3] +[visit_exp `BINOP`_instr{numtype#1113}(`F64`_numtype, `ADD`_binop_)] +[visit_exp numtype#1113] +[visit_id numtype#1113] +[visit_exp (`F64`_numtype, `ADD`_binop_)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `ADD`_binop_] +[visit_exp ()] +[visit_exp `BINOP`_instr{numtype#1115}(`F64`_numtype, `MUL`_binop_)] +[visit_exp numtype#1115] +[visit_id numtype#1115] +[visit_exp (`F64`_numtype, `MUL`_binop_)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `MUL`_binop_] +[visit_exp ()] +[check_dims] numtype#1117 numtype#1119 numtype#1121 q_1 q_5 +[visit_exp [`CONST`_instr{numtype#1117}(`F64`_numtype, q_1) `CONST`_instr{numtype#1119}(`F64`_numtype, q_5) `BINOP`_instr{numtype#1121}(`F64`_numtype, `MUL`_binop_)]] +[visit_exp `CONST`_instr{numtype#1117}(`F64`_numtype, q_1)] +[visit_exp numtype#1117] +[visit_id numtype#1117] +[visit_exp (`F64`_numtype, q_1)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp q_1] +[visit_id q_1] +[visit_exp `CONST`_instr{numtype#1119}(`F64`_numtype, q_5)] +[visit_exp numtype#1119] +[visit_id numtype#1119] +[visit_exp (`F64`_numtype, q_5)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp q_5] +[visit_id q_5] +[visit_exp `BINOP`_instr{numtype#1121}(`F64`_numtype, `MUL`_binop_)] +[visit_exp numtype#1121] +[visit_id numtype#1121] +[visit_exp (`F64`_numtype, `MUL`_binop_)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp `MUL`_binop_] +[visit_exp ()] +[check_dims] numtype#1123 q_6 +[visit_exp [`CONST`_instr{numtype#1123}(`F64`_numtype, q_6)]] +[visit_exp `CONST`_instr{numtype#1123}(`F64`_numtype, q_6)] +[visit_exp numtype#1123] +[visit_id numtype#1123] +[visit_exp (`F64`_numtype, q_6)] +[visit_exp `F64`_numtype] +[visit_exp ()] +[visit_exp q_6] +[visit_id q_6] +[check_dims] +DecD instrdots : instr* +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id n] no dims +[visit_id n] +[visit_id instr*] no dims +[visit_id instr*] +[check_dims] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[visit_id n] no dims +[visit_id n] +[visit_id frame] no dims +[visit_id frame] +[check_dims] +[check_dims] X Y _ store +DecD allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) +[visit_id store] not free +[visit_id X] not free +[visit_id Y] not free +[visit_id _] not free +[visit_id _] not free +[check_dims] X Y _ store +DecD allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) +[visit_id store] not free +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[visit_id _] not free +[check_dims] s +[visit_exp s] +[visit_id s] +[visit_exp []] +[visit_exp []] +[visit_exp (s, [])] +[visit_exp s] +[visit_id s] not free +[visit_exp []] +=> + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) +[check_dims] X X' Y Y' a a' s s_1 s_2 +[visit_exp s] +[visit_id s] +[visit_exp [X] ++ X'*{X' <- `X'*`}] +[visit_exp [X]] +[visit_exp X] +[visit_id X] +[visit_exp X'*{X' <- `X'*`}] +[scope_enter X'] +[visit_exp X'] +[visit_id X'] not free +[visit_id X'] not free +[scope_exit X'] +[visit_exp `X'*`] +[visit_id X'*] no dims +[visit_id X'*] +[visit_exp [Y] ++ Y'*{Y' <- `Y'*`}] +[visit_exp [Y]] +[visit_exp Y] +[visit_id Y] +[visit_exp Y'*{Y' <- `Y'*`}] +[scope_enter Y'] +[visit_exp Y'] +[visit_id Y'] not free +[visit_id Y'] not free +[scope_exit Y'] +[visit_exp `Y'*`] +[visit_id Y'*] no dims +[visit_id Y'*] +[visit_exp (s_2, [a] ++ a'*{a' <- `a'*`})] +[visit_exp s_2] +[visit_id s_2] +[visit_exp [a] ++ a'*{a' <- `a'*`}] +[visit_exp [a]] +[visit_exp a] +[visit_id a] +[visit_exp a'*{a' <- `a'*`}] +[scope_enter a'] +[visit_exp a'] +[visit_id a'] not free +[visit_id a'] not free +[scope_exit a'] +[visit_exp `a'*`] +[visit_id a'*] no dims +[visit_id a'*] +[visit_exp ((s_1, a) = $allocX(syntax X, syntax Y, s, X, Y))] +[visit_exp (s_1, a)] +[visit_exp s_1] +[visit_id s_1] +[visit_exp a] +[visit_id a] not free +[visit_exp $allocX(syntax X, syntax Y, s, X, Y)] +[visit_exp s] +[visit_id s] not free +[visit_exp X] +[visit_id X] not free +[visit_exp Y] +[visit_id Y] not free +[visit_exp ((s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`}))] +[visit_exp (s_2, a'*{a' <- `a'*`})] +[visit_exp s_2] +[visit_id s_2] not free +[visit_exp a'*{a' <- `a'*`}] +[scope_enter a'] +[visit_exp a'] +[visit_id a'] not free +[visit_id a'] not free +[scope_exit a'] +[visit_exp `a'*`] +[visit_id a'*] not free +[visit_id a'*] no dims +[visit_exp $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`})] +[visit_exp s_1] +[visit_id s_1] not free +[visit_exp X'*{X' <- `X'*`}] +[scope_enter X'] +[visit_exp X'] +[visit_id X'] not free +[visit_id X'] not free +[scope_exit X'] +[visit_exp `X'*`] +[visit_id X'*] not free +[visit_id X'*] no dims +[visit_exp Y'*{Y' <- `Y'*`}] +[scope_enter Y'] +[visit_exp Y'] +[visit_id Y'] not free +[visit_id Y'] not free +[scope_exit Y'] +[visit_exp `Y'*`] +[visit_id Y'*] not free +[visit_id Y'*] no dims +=> + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + 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'*`})) +[check_dims] +[check_dims] +[visit_exp 0] +[check_dims] X +DecD var(syntax X) : nat +[check_dims] +[visit_exp 0] +=> + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + def $var{syntax X}(syntax X) = 0 +ps' = (syntax X) +[check_dims] X +[check_dims] +dims \ = +[visit_exp ((), ()).1] +[visit_exp ((), ())] +[visit_exp ()] +[visit_exp ()] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp $var(syntax A)] +[check_dims] +dims \ = +[visit_exp $var(syntax A)] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +ps' = (syntax X) +[check_dims] X +[check_dims] +dims \ = +[visit_exp ((), ()).1] +[visit_exp ((), ())] +[visit_exp ()] +[visit_exp ()] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp $var(syntax A)] +[check_dims] +dims \ = +[visit_exp $var(syntax A)] +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +ps' = +[check_dims] +[check_dims] +dims \ = +[visit_exp (``, ()).1] +[visit_exp (``, ())] +[visit_exp ``] +[visit_id ] +[visit_exp ()] +[visit_exp ``] +[visit_id ] not free +[check_dims] +[check_dims] +[check_dims] +ps' = +[check_dims] +[check_dims] ;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec syntax N = nat @@ -87,7 +111646,7 @@ 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) + def $concatn_{syntax X, n : n, `w*` : X*, `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 @@ -187,17 +111746,17 @@ syntax byte = -- if ((i >= 0) /\ (i <= 255)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax uN{N : N}(N) = +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) = +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) +syntax iN(N : N)(N) = uN(N) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax u8 = uN(8) @@ -248,19 +111807,19 @@ def $E(N : N) : nat 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) +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) + | `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) + | `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)) +syntax fN(N : N)(N) = + | `POS`(fNmag(N)) + | `NEG`(fNmag(N)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax f32 = fN(32) @@ -271,17 +111830,17 @@ 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)) + def $fzero{N : N, m#1 : m, exp#1 : exp}(N) = `POS`_fN(`SUBNORM`_fNmag{m#1, exp#1}(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))) + def $fnat{N : N, n : n, m#3 : m, exp#2 : exp}(N, n) = `POS`_fN(`NORM`_fNmag{m#3, exp#2}(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))) + def $fone{N : N, m#5 : m, exp#4 : exp}(N) = `POS`_fN(`NORM`_fNmag{m#5, exp#4}(1, (0 : nat <:> int))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $canon_(N : N) : nat @@ -289,14 +111848,14 @@ def $canon_(N : N) : nat 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) +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*) +syntax list(syntax X)(syntax X) = + | `%`{`X*` : X*}(`X*` : X*) -- if (|X*{X <- `X*`}| < (2 ^ 32)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -307,8 +111866,8 @@ syntax char = ;; ../../../../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)) + def $cont{b : byte, i#48148 : nat, i#48144 : nat, i#48146 : nat}(b) = (((b!`%`_byte{i#48148}.0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat) + -- if ((128 < b!`%`_byte{i#48144}.0) /\ (b!`%`_byte{i#48146}.0 < 192)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { @@ -318,26 +111877,26 @@ def $utf8(char*) : byte* ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:48.1-48.44 def $utf8{`ch*` : char*}(ch*{ch <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:49.1-51.15 - def $utf8{ch : char, b : byte}([ch]) = [b] - -- if (ch!`%`_char.0 < 128) - -- if (`%`_byte(ch!`%`_char.0) = b) + def $utf8{ch : char, b : byte, i#48332 : nat, i#48341 : nat, i#48340 : nat}([ch]) = [b] + -- if (ch!`%`_char{i#48332}.0 < 128) + -- if (`%`_byte{i#48341}(ch!`%`_char{i#48340}.0) = b) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-54.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))) + def $utf8{ch : char, b_1 : byte, b_2 : byte, i#48356 : nat, i#48358 : nat, i#48368 : nat, i#48360 : nat}([ch]) = [b_1 b_2] + -- if ((128 <= ch!`%`_char{i#48356}.0) /\ (ch!`%`_char{i#48358}.0 < 2048)) + -- if (ch!`%`_char{i#48368}.0 = (((2 ^ 6) * (((b_1!`%`_byte{i#48360}.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:55.1-57.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))) + def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, i#48400 : nat, i#48402 : nat, i#48404 : nat, i#48406 : nat, i#48422 : nat, i#48408 : nat}([ch]) = [b_1 b_2 b_3] + -- if (((2048 <= ch!`%`_char{i#48400}.0) /\ (ch!`%`_char{i#48402}.0 < 55296)) \/ ((57344 <= ch!`%`_char{i#48404}.0) /\ (ch!`%`_char{i#48406}.0 < 65536))) + -- if (ch!`%`_char{i#48422}.0 = ((((2 ^ 12) * (((b_1!`%`_byte{i#48408}.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:58.1-60.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))) + def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte, i#48460 : nat, i#48462 : nat, i#48484 : nat, i#48464 : nat}([ch]) = [b_1 b_2 b_3 b_4] + -- if ((65536 <= ch!`%`_char{i#48460}.0) /\ (ch!`%`_char{i#48462}.0 < 69632)) + -- if (ch!`%`_char{i#48484}.0 = (((((2 ^ 18) * (((b_1!`%`_byte{i#48464}.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*) + | `%`{`char*` : char*}(`char*` : char*) -- if (|$utf8(char*{char <- `char*`})| < (2 ^ 32)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -381,11 +111940,11 @@ 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) + | `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 { @@ -395,7 +111954,7 @@ def $funcsxx(externidx*) : typeidx* ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.1-133.24 def $funcsxx([]) = [] ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:134.1-134.45 - def $funcsxx{x : idx, `xx*` : externidx*}([FUNC_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $funcsxx(xx*{xx <- `xx*`}) + def $funcsxx{funcidx#1 : funcidx, x : idx, `xx*` : externidx*}([`FUNC`_externidx{funcidx#1}(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $funcsxx(xx*{xx <- `xx*`}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:135.1-135.58 def $funcsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $funcsxx(xx*{xx <- `xx*`}) -- otherwise @@ -409,7 +111968,7 @@ def $globalsxx(externidx*) : globalidx* ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:137.1-137.26 def $globalsxx([]) = [] ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:138.1-138.51 - def $globalsxx{x : idx, `xx*` : externidx*}([GLOBAL_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $globalsxx(xx*{xx <- `xx*`}) + def $globalsxx{globalidx#1 : globalidx, x : idx, `xx*` : externidx*}([`GLOBAL`_externidx{globalidx#1}(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $globalsxx(xx*{xx <- `xx*`}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:139.1-139.62 def $globalsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $globalsxx(xx*{xx <- `xx*`}) -- otherwise @@ -423,7 +111982,7 @@ def $tablesxx(externidx*) : tableidx* ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:141.1-141.25 def $tablesxx([]) = [] ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:142.1-142.48 - def $tablesxx{x : idx, `xx*` : externidx*}([TABLE_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $tablesxx(xx*{xx <- `xx*`}) + def $tablesxx{tableidx#1 : tableidx, x : idx, `xx*` : externidx*}([`TABLE`_externidx{tableidx#1}(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $tablesxx(xx*{xx <- `xx*`}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:143.1-143.60 def $tablesxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $tablesxx(xx*{xx <- `xx*`}) -- otherwise @@ -437,7 +111996,7 @@ def $memsxx(externidx*) : memidx* ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:145.1-145.23 def $memsxx([]) = [] ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:146.1-146.42 - def $memsxx{x : idx, `xx*` : externidx*}([MEM_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $memsxx(xx*{xx <- `xx*`}) + def $memsxx{memidx#1 : memidx, x : idx, `xx*` : externidx*}([`MEM`_externidx{memidx#1}(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $memsxx(xx*{xx <- `xx*`}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:147.1-147.56 def $memsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $memsxx(xx*{xx <- `xx*`}) -- otherwise @@ -451,7 +112010,7 @@ def $tagsxx(externidx*) : tagidx* ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:149.1-149.23 def $tagsxx([]) = [] ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:150.1-150.42 - def $tagsxx{x : idx, `xx*` : externidx*}([TAG_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $tagsxx(xx*{xx <- `xx*`}) + def $tagsxx{tagidx#1 : tagidx, x : idx, `xx*` : externidx*}([`TAG`_externidx{tagidx#1}(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $tagsxx(xx*{xx <- `xx*`}) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:151.1-151.56 def $tagsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $tagsxx(xx*{xx <- `xx*`}) -- otherwise @@ -460,21 +112019,21 @@ def $tagsxx(externidx*) : tagidx* ;; ../../../../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* + `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 []} + def $free_opt{`typeidx*#1` : typeidx*, `funcidx*#1` : funcidx*, `globalidx*#1` : globalidx*, `tableidx*#1` : tableidx*, `memidx*#1` : memidx*, `elemidx*#1` : elemidx*, `dataidx*#1` : dataidx*, `localidx*#1` : localidx*, `labelidx*#1` : labelidx*}(?()) = {`TYPES`{`typeidx*#1`} [], `FUNCS`{`funcidx*#1`} [], `GLOBALS`{`globalidx*#1`} [], `TABLES`{`tableidx*#1`} [], `MEMS`{`memidx*#1`} [], `ELEMS`{`elemidx*#1`} [], `DATAS`{`dataidx*#1`} [], `LOCALS`{`localidx*#1`} [], `LABELS`{`labelidx*#1`} []} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt{free : free}(?(free)) = free @@ -484,7 +112043,7 @@ rec { ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:170.1-170.29 def $free_list(free*) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:175.1-175.25 - def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_list{`typeidx*#2` : typeidx*, `funcidx*#2` : funcidx*, `globalidx*#2` : globalidx*, `tableidx*#2` : tableidx*, `memidx*#2` : memidx*, `elemidx*#2` : elemidx*, `dataidx*#2` : dataidx*, `localidx*#2` : localidx*, `labelidx*#2` : labelidx*}([]) = {`TYPES`{`typeidx*#2`} [], `FUNCS`{`funcidx*#2`} [], `GLOBALS`{`globalidx*#2`} [], `TABLES`{`tableidx*#2`} [], `MEMS`{`memidx*#2`} [], `ELEMS`{`elemidx*#2`} [], `DATAS`{`dataidx*#2`} [], `LOCALS`{`localidx*#2`} [], `LABELS`{`labelidx*#2`} []} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:176.1-176.57 def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) } @@ -492,321 +112051,321 @@ def $free_list(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 []} + def $free_typeidx{typeidx : typeidx, `typeidx*#3` : typeidx*, `funcidx*#3` : funcidx*, `globalidx*#3` : globalidx*, `tableidx*#3` : tableidx*, `memidx*#3` : memidx*, `elemidx*#3` : elemidx*, `dataidx*#3` : dataidx*, `localidx*#3` : localidx*, `labelidx*#3` : labelidx*}(typeidx) = {`TYPES`{`typeidx*#3`} [typeidx], `FUNCS`{`funcidx*#3`} [], `GLOBALS`{`globalidx*#3`} [], `TABLES`{`tableidx*#3`} [], `MEMS`{`memidx*#3`} [], `ELEMS`{`elemidx*#3`} [], `DATAS`{`dataidx*#3`} [], `LOCALS`{`localidx*#3`} [], `LABELS`{`labelidx*#3`} []} ;; ../../../../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 []} + def $free_funcidx{funcidx : funcidx, `typeidx*#4` : typeidx*, `funcidx*#4` : funcidx*, `globalidx*#4` : globalidx*, `tableidx*#4` : tableidx*, `memidx*#4` : memidx*, `elemidx*#4` : elemidx*, `dataidx*#4` : dataidx*, `localidx*#4` : localidx*, `labelidx*#4` : labelidx*}(funcidx) = {`TYPES`{`typeidx*#4`} [], `FUNCS`{`funcidx*#4`} [funcidx], `GLOBALS`{`globalidx*#4`} [], `TABLES`{`tableidx*#4`} [], `MEMS`{`memidx*#4`} [], `ELEMS`{`elemidx*#4`} [], `DATAS`{`dataidx*#4`} [], `LOCALS`{`localidx*#4`} [], `LABELS`{`labelidx*#4`} []} ;; ../../../../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 []} + def $free_globalidx{globalidx : globalidx, `typeidx*#5` : typeidx*, `funcidx*#5` : funcidx*, `globalidx*#5` : globalidx*, `tableidx*#5` : tableidx*, `memidx*#5` : memidx*, `elemidx*#5` : elemidx*, `dataidx*#5` : dataidx*, `localidx*#5` : localidx*, `labelidx*#5` : labelidx*}(globalidx) = {`TYPES`{`typeidx*#5`} [], `FUNCS`{`funcidx*#5`} [], `GLOBALS`{`globalidx*#5`} [globalidx], `TABLES`{`tableidx*#5`} [], `MEMS`{`memidx*#5`} [], `ELEMS`{`elemidx*#5`} [], `DATAS`{`dataidx*#5`} [], `LOCALS`{`localidx*#5`} [], `LABELS`{`labelidx*#5`} []} ;; ../../../../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 []} + def $free_tableidx{tableidx : tableidx, `typeidx*#6` : typeidx*, `funcidx*#6` : funcidx*, `globalidx*#6` : globalidx*, `tableidx*#6` : tableidx*, `memidx*#6` : memidx*, `elemidx*#6` : elemidx*, `dataidx*#6` : dataidx*, `localidx*#6` : localidx*, `labelidx*#6` : labelidx*}(tableidx) = {`TYPES`{`typeidx*#6`} [], `FUNCS`{`funcidx*#6`} [], `GLOBALS`{`globalidx*#6`} [], `TABLES`{`tableidx*#6`} [tableidx], `MEMS`{`memidx*#6`} [], `ELEMS`{`elemidx*#6`} [], `DATAS`{`dataidx*#6`} [], `LOCALS`{`localidx*#6`} [], `LABELS`{`labelidx*#6`} []} ;; ../../../../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 []} + def $free_memidx{memidx : memidx, `typeidx*#7` : typeidx*, `funcidx*#7` : funcidx*, `globalidx*#7` : globalidx*, `tableidx*#7` : tableidx*, `memidx*#7` : memidx*, `elemidx*#7` : elemidx*, `dataidx*#7` : dataidx*, `localidx*#7` : localidx*, `labelidx*#7` : labelidx*}(memidx) = {`TYPES`{`typeidx*#7`} [], `FUNCS`{`funcidx*#7`} [], `GLOBALS`{`globalidx*#7`} [], `TABLES`{`tableidx*#7`} [], `MEMS`{`memidx*#7`} [memidx], `ELEMS`{`elemidx*#7`} [], `DATAS`{`dataidx*#7`} [], `LOCALS`{`localidx*#7`} [], `LABELS`{`labelidx*#7`} []} ;; ../../../../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 []} + def $free_elemidx{elemidx : elemidx, `typeidx*#8` : typeidx*, `funcidx*#8` : funcidx*, `globalidx*#8` : globalidx*, `tableidx*#8` : tableidx*, `memidx*#8` : memidx*, `elemidx*#8` : elemidx*, `dataidx*#8` : dataidx*, `localidx*#8` : localidx*, `labelidx*#8` : labelidx*}(elemidx) = {`TYPES`{`typeidx*#8`} [], `FUNCS`{`funcidx*#8`} [], `GLOBALS`{`globalidx*#8`} [], `TABLES`{`tableidx*#8`} [], `MEMS`{`memidx*#8`} [], `ELEMS`{`elemidx*#8`} [elemidx], `DATAS`{`dataidx*#8`} [], `LOCALS`{`localidx*#8`} [], `LABELS`{`labelidx*#8`} []} ;; ../../../../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 []} + def $free_dataidx{dataidx : dataidx, `typeidx*#9` : typeidx*, `funcidx*#9` : funcidx*, `globalidx*#9` : globalidx*, `tableidx*#9` : tableidx*, `memidx*#9` : memidx*, `elemidx*#9` : elemidx*, `dataidx*#9` : dataidx*, `localidx*#9` : localidx*, `labelidx*#9` : labelidx*}(dataidx) = {`TYPES`{`typeidx*#9`} [], `FUNCS`{`funcidx*#9`} [], `GLOBALS`{`globalidx*#9`} [], `TABLES`{`tableidx*#9`} [], `MEMS`{`memidx*#9`} [], `ELEMS`{`elemidx*#9`} [], `DATAS`{`dataidx*#9`} [dataidx], `LOCALS`{`localidx*#9`} [], `LABELS`{`labelidx*#9`} []} ;; ../../../../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 []} + def $free_localidx{localidx : localidx, `typeidx*#10` : typeidx*, `funcidx*#10` : funcidx*, `globalidx*#10` : globalidx*, `tableidx*#10` : tableidx*, `memidx*#10` : memidx*, `elemidx*#10` : elemidx*, `dataidx*#10` : dataidx*, `localidx*#10` : localidx*, `labelidx*#10` : labelidx*}(localidx) = {`TYPES`{`typeidx*#10`} [], `FUNCS`{`funcidx*#10`} [], `GLOBALS`{`globalidx*#10`} [], `TABLES`{`tableidx*#10`} [], `MEMS`{`memidx*#10`} [], `ELEMS`{`elemidx*#10`} [], `DATAS`{`dataidx*#10`} [], `LOCALS`{`localidx*#10`} [localidx], `LABELS`{`labelidx*#10`} []} ;; ../../../../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]} + def $free_labelidx{labelidx : labelidx, `typeidx*#11` : typeidx*, `funcidx*#11` : funcidx*, `globalidx*#11` : globalidx*, `tableidx*#11` : tableidx*, `memidx*#11` : memidx*, `elemidx*#11` : elemidx*, `dataidx*#11` : dataidx*, `localidx*#11` : localidx*, `labelidx*#11` : labelidx*}(labelidx) = {`TYPES`{`typeidx*#11`} [], `FUNCS`{`funcidx*#11`} [], `GLOBALS`{`globalidx*#11`} [], `TABLES`{`tableidx*#11`} [], `MEMS`{`memidx*#11`} [], `ELEMS`{`elemidx*#11`} [], `DATAS`{`dataidx*#11`} [], `LOCALS`{`localidx*#11`} [], `LABELS`{`labelidx*#11`} [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) + def $free_externidx{funcidx#3 : funcidx, funcidx : funcidx}(`FUNC`_externidx{funcidx#3}(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{globalidx : globalidx}(GLOBAL_externidx(globalidx)) = $free_globalidx(globalidx) + def $free_externidx{globalidx#3 : globalidx, globalidx : globalidx}(`GLOBAL`_externidx{globalidx#3}(globalidx)) = $free_globalidx(globalidx) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{tableidx : tableidx}(TABLE_externidx(tableidx)) = $free_tableidx(tableidx) + def $free_externidx{tableidx#3 : tableidx, tableidx : tableidx}(`TABLE`_externidx{tableidx#3}(tableidx)) = $free_tableidx(tableidx) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{memidx : memidx}(MEM_externidx(memidx)) = $free_memidx(memidx) + def $free_externidx{memidx#3 : memidx, memidx : memidx}(`MEM`_externidx{memidx#3}(memidx)) = $free_memidx(memidx) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax null = - | NULL + | `NULL` ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax addrtype = - | I32 - | I64 + | `I32` + | `I64` ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax numtype = - | I32 - | I64 - | F32 - | F64 + | `I32` + | `I64` + | `F32` + | `F64` ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax vectype = - | V128 + | `V128` ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax consttype = - | I32 - | I64 - | F32 - | F64 - | V128 + | `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 + | `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 + | `MUT` ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax final = - | 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) + | `_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) + | `ANY` + | `EQ` + | `I31` + | `STRUCT` + | `ARRAY` + | `NONE` + | `FUNC` + | `NOFUNC` + | `EXN` + | `NOEXN` + | `EXTERN` + | `NOEXTERN` + | `BOT` + | `_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:51.1-52.14 syntax valtype = - | I32 - | I64 - | F32 - | F64 - | V128 - | REF{`null?` : null?, heaptype : heaptype}(null?{null <- `null?`} : null?, heaptype : heaptype) - | BOT + | `I32` + | `I64` + | `F32` + | `F64` + | `V128` + | `REF`{`null?` : null?, heaptype : heaptype}(`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 + | `I32` + | `I64` + | `F32` + | `F64` + | `V128` + | `REF`{`null?` : null?, heaptype : heaptype}(`null?` : null?, heaptype : heaptype) + | `BOT` + | `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) + | `%%`{`mut?` : mut?, storagetype : storagetype}(`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) + | `STRUCT`(list(syntax fieldtype)) + | `ARRAY`{fieldtype : fieldtype}(fieldtype : fieldtype) + | `FUNC%->%`{resulttype : 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) + | `SUB`{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}(`final?` : final?, `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)) + | `REC`(list(syntax subtype)) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax deftype = - | _DEF{rectype : rectype, n : n}(rectype : rectype, n : n) + | `_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) + | `_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) + | `REF`{`null?` : null?, heaptype : heaptype}(`null?` : null?, heaptype : heaptype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax Inn = - | I32 - | I64 + | `I32` + | `I64` ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax Fnn = - | F32 - | F64 + | `F32` + | `F64` ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax Vnn = - | V128 + | `V128` ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax Cnn = - | I32 - | I64 - | F32 - | F64 - | V128 + | `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) + def $ANYREF{`null?#11` : null?, heaptype#11 : heaptype} = `REF`_reftype{`null?#11`, heaptype#11}(?(`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) + def $EQREF{`null?#23` : null?, heaptype#23 : heaptype} = `REF`_reftype{`null?#23`, heaptype#23}(?(`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) + def $I31REF{`null?#35` : null?, heaptype#35 : heaptype} = `REF`_reftype{`null?#35`, heaptype#35}(?(`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) + def $STRUCTREF{`null?#47` : null?, heaptype#47 : heaptype} = `REF`_reftype{`null?#47`, heaptype#47}(?(`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) + def $ARRAYREF{`null?#59` : null?, heaptype#59 : heaptype} = `REF`_reftype{`null?#59`, heaptype#59}(?(`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) + def $FUNCREF{`null?#71` : null?, heaptype#71 : heaptype} = `REF`_reftype{`null?#71`, heaptype#71}(?(`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) + def $EXNREF{`null?#83` : null?, heaptype#83 : heaptype} = `REF`_reftype{`null?#83`, heaptype#83}(?(`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) + def $EXTERNREF{`null?#95` : null?, heaptype#95 : heaptype} = `REF`_reftype{`null?#95`, heaptype#95}(?(`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) + def $NULLREF{`null?#107` : null?, heaptype#107 : heaptype} = `REF`_reftype{`null?#107`, heaptype#107}(?(`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) + def $NULLFUNCREF{`null?#119` : null?, heaptype#119 : heaptype} = `REF`_reftype{`null?#119`, heaptype#119}(?(`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) + def $NULLEXNREF{`null?#131` : null?, heaptype#131 : heaptype} = `REF`_reftype{`null?#131`, heaptype#131}(?(`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) + def $NULLEXTERNREF{`null?#143` : null?, heaptype#143 : heaptype} = `REF`_reftype{`null?#143`, heaptype#143}(?(`NULL`_null), `NOEXTERN`_heaptype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax packtype = - | I8 - | I16 + | `I8` + | `I16` ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax lanetype = - | I32 - | I64 - | F32 - | F64 - | I8 - | I16 + | `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 + | `I32` + | `I64` + | `I8` + | `I16` ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax Lnn = - | I32 - | I64 - | F32 - | F64 - | I8 - | I16 + | `I32` + | `I64` + | `F32` + | `F64` + | `I8` + | `I16` ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax limits = - | `[%..%]`{u64 : u64}(u64 : u64, u64?) + | `[%..%]`{u64 : u64, `u64?` : 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) + | `%%`{`mut?` : mut?, valtype : valtype}(`mut?` : mut?, valtype : valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax memtype = @@ -818,70 +112377,70 @@ syntax tabletype = ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax datatype = - | OK + | `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) + | `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*) + | `%->%`{`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 + def $IN(32) = `I32`_Inn ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $IN(64) = I64_Inn + 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 + def $FN(32) = `F32`_Fnn ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $FN(64) = F64_Fnn + 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 + 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 ;; ../../../../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 + def $size(`I32`_numtype) = 32 ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $size(I64_numtype) = 64 + def $size(`I64`_numtype) = 64 ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $size(F32_numtype) = 32 + def $size(`F32`_numtype) = 32 ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $size(F64_numtype) = 64 + 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 + 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 + def $psize(`I8`_packtype) = 8 ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $psize(I16_packtype) = 16 + def $psize(`I16`_packtype) = 16 ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $lsize(lanetype : lanetype) : nat @@ -917,25 +112476,25 @@ def $fsize(Fnn : Fnn) : nat ;; ../../../../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 + def $inv_isize(32) = `I32`_Inn ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_isize(64) = I64_Inn + 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 + def $inv_jsize(8) = `I8`_Jnn ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsize(16) = I16_Jnn + def $inv_jsize(16) = `I16`_Jnn ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $inv_jsize{n : n}(n) = ($inv_isize(n) : Inn <: 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 + def $inv_fsize(32) = `F32`_Fnn ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_fsize(64) = F64_Fnn + def $inv_fsize(64) = `F64`_Fnn ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $sizenn(numtype : numtype) : nat @@ -992,21 +112551,21 @@ 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 + 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 + 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 + def $nunpack{packtype : packtype}((packtype : packtype <: storagetype)) = `I32`_numtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $vunpack(storagetype : storagetype) : vectype @@ -1018,7 +112577,7 @@ 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 + 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) @@ -1034,9 +112593,9 @@ def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype ;; ../../../../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) + def $diffrt{`null?#155` : null?, heaptype#155 : heaptype, `null_1?` : null?, ht_1 : heaptype, `null?#167` : null?, heaptype#167 : heaptype, ht_2 : heaptype, `null?#179` : null?, heaptype#179 : heaptype}(`REF`_reftype{`null?#155`, heaptype#155}(null_1?{null_1 <- `null_1?`}, ht_1), `REF`_reftype{`null?#167`, heaptype#167}(?(`NULL`_null), ht_2)) = `REF`_reftype{`null?#179`, heaptype#179}(?(), 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) + def $diffrt{`null?#191` : null?, heaptype#191 : heaptype, `null_1?` : null?, ht_1 : heaptype, `null?#203` : null?, heaptype#203 : heaptype, ht_2 : heaptype, `null?#215` : null?, heaptype#215 : heaptype}(`REF`_reftype{`null?#191`, heaptype#191}(null_1?{null_1 <- `null_1?`}, ht_1), `REF`_reftype{`null?#203`, heaptype#203}(?(), ht_2)) = `REF`_reftype{`null?#215`, heaptype#215}(null_1?{null_1 <- `null_1?`}, ht_1) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $as_deftype(typeuse : typeuse) : deftype @@ -1051,7 +112610,7 @@ 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 : tagtype, `xt*` : externtype*}([TAG_externtype(jt)] ++ xt*{xt <- `xt*`}) = [jt] ++ $tagsxt(xt*{xt <- `xt*`}) + def $tagsxt{tagtype#1 : tagtype, jt : tagtype, `xt*` : externtype*}([`TAG`_externtype{tagtype#1}(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*`}) -- otherwise @@ -1065,7 +112624,7 @@ 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*`}) + def $globalsxt{globaltype#1 : globaltype, gt : globaltype, `xt*` : externtype*}([`GLOBAL`_externtype{globaltype#1}(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*`}) -- otherwise @@ -1079,7 +112638,7 @@ 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*`}) + def $memsxt{memtype#1 : memtype, mt : memtype, `xt*` : externtype*}([`MEM`_externtype{memtype#1}(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*`}) -- otherwise @@ -1093,7 +112652,7 @@ 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*`}) + def $tablesxt{tabletype#1 : tabletype, tt : tabletype, `xt*` : externtype*}([`TABLE`_externtype{tabletype#1}(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*`}) -- otherwise @@ -1107,7 +112666,7 @@ 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*`}) + def $funcsxt{typeuse#1 : typeuse, dt : deftype, `xt*` : externtype*}([`FUNC`_externtype{typeuse#1}((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*`}) -- otherwise @@ -1136,9 +112695,9 @@ 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 : 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*`}) + def $minus_recs{n#53 : n, n : n, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([`REC`_typevar{n#53}(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 : 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'*`}) + def $minus_recs{typeidx#1 : typeidx, x : idx, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, typeidx#3 : typeidx, `tv'*` : typevar*, `tu'*` : typeuse*}([`_IDX`_typevar{typeidx#1}(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ([`_IDX`_typevar{typeidx#3}(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) } @@ -1180,7 +112739,7 @@ def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype ;; ../../../../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*`})) + def $subst_reftype{`null?#227` : null?, heaptype#227 : heaptype, `null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*, `null?#239` : null?, heaptype#239 : heaptype}(`REF`_reftype{`null?#227`, heaptype#227}(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `REF`_reftype{`null?#239`, heaptype#239}(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 @@ -1191,7 +112750,7 @@ def $subst_valtype(valtype : valtype, typevar*, typeuse*) : 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 + 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 def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype @@ -1203,32 +112762,32 @@ def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storaget ;; ../../../../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*`})) + def $subst_fieldtype{`mut?#67` : mut?, storagetype#11 : storagetype, `mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*, `mut?#79` : mut?, storagetype#23 : storagetype}(`%%`_fieldtype{`mut?#67`, storagetype#11}(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype{`mut?#79`, storagetype#23}(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*`})) + def $subst_comptype{`X*#11` : fieldtype*, `ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*, `X*#26` : fieldtype*}(`STRUCT`_comptype(`%`_list{`X*#11`}(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `STRUCT`_comptype(`%`_list{`X*#26`}($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*`})) + def $subst_comptype{fieldtype#1 : fieldtype, ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*, fieldtype#3 : fieldtype}(`ARRAY`_comptype{fieldtype#1}(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `ARRAY`_comptype{fieldtype#3}($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*`})) + def $subst_comptype{resulttype#1 : resulttype, `X*#41` : valtype*, `t_1*` : valtype*, `X*#54` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*, resulttype#4 : resulttype, `X*#69` : valtype*, `X*#82` : valtype*}(`FUNC%->%`_comptype{resulttype#1}(`%`_resulttype{`X*#41`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#54`}(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype{resulttype#4}(`%`_resulttype{`X*#69`}($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype{`X*#82`}($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*`})) + def $subst_subtype{`final?#11` : final?, `typeuse*#11` : typeuse*, comptype#11 : comptype, `final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*, `final?#23` : final?, `typeuse*#23` : typeuse*, comptype#23 : comptype}(`SUB`_subtype{`final?#11`, `typeuse*#11`, comptype#11}(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `SUB`_subtype{`final?#23`, `typeuse*#23`, comptype#23}(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*`})) + def $subst_rectype{`X*#97` : subtype*, `st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `X*#112` : subtype*, `tv'*` : typevar*, `tu'*` : typeuse*}(`REC`_rectype(`%`_list{`X*#97`}(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `REC`_rectype(`%`_list{`X*#112`}($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 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 : 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) + def $subst_deftype{rectype#63 : rectype, n#65 : n, qt : rectype, i : n, `tv*` : typevar*, `tu*` : typeuse*, rectype#75 : rectype, n#77 : n}(`_DEF`_deftype{rectype#63, n#65}(qt, i), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `_DEF`_deftype{rectype#75, n#77}($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1244,80 +112803,80 @@ def $subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype ;; ../../../../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*`})) + def $subst_globaltype{`mut?#149` : mut?, valtype#67 : valtype, `mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*, `mut?#161` : mut?, valtype#79 : valtype}(`%%`_globaltype{`mut?#149`, valtype#67}(mut?{mut <- `mut?`}, t), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_globaltype{`mut?#161`, valtype#79}(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) + def $subst_memtype{addrtype#91 : addrtype, limits#91 : limits, at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*, addrtype#103 : addrtype, limits#103 : limits}(`%%PAGE`_memtype{addrtype#91, limits#91}(at, lim), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%PAGE`_memtype{addrtype#103, limits#103}(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*`})) + def $subst_tabletype{addrtype#115 : addrtype, limits#115 : limits, reftype#51 : reftype, at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*, addrtype#127 : addrtype, limits#127 : limits, reftype#63 : reftype}(`%%%`_tabletype{addrtype#115, limits#115, reftype#51}(at, lim, rt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%%`_tabletype{addrtype#127, limits#127, reftype#63}(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*`})) + def $subst_externtype{tagtype#3 : tagtype, jt : tagtype, `tv*` : typevar*, `tu*` : typeuse*, tagtype#5 : tagtype}(`TAG`_externtype{tagtype#3}(jt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `TAG`_externtype{tagtype#5}($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*`})) + def $subst_externtype{globaltype#3 : globaltype, gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*, globaltype#5 : globaltype}(`GLOBAL`_externtype{globaltype#3}(gt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `GLOBAL`_externtype{globaltype#5}($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*`})) + def $subst_externtype{tabletype#3 : tabletype, tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*, tabletype#5 : tabletype}(`TABLE`_externtype{tabletype#3}(tt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `TABLE`_externtype{tabletype#5}($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*`})) + def $subst_externtype{memtype#3 : memtype, mt : memtype, `tv*` : typevar*, `tu*` : typeuse*, memtype#5 : memtype}(`MEM`_externtype{memtype#3}(mt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `MEM`_externtype{memtype#5}($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)) + def $subst_externtype{typeuse#3 : typeuse, dt : deftype, `tv*` : typevar*, `tu*` : typeuse*, typeuse#5 : typeuse}(`FUNC`_externtype{typeuse#3}((dt : deftype <: typeuse)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC`_externtype{typeuse#5}(($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*`}) + def $subst_moduletype{`externtype*#18` : externtype*, `xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*, `externtype*#38` : externtype*}(`%->%`_moduletype{`externtype*#18`}(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`}), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%->%`_moduletype{`externtype*#38`}($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) + def $free_comptype{resulttype#7 : resulttype, resulttype_1 : resulttype, resulttype_2 : resulttype}(`FUNC%->%`_comptype{resulttype#7}(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) + def $free_subtype{`final?#179` : final?, `typeuse*#179` : typeuse*, comptype#179 : comptype, `final?` : final?, `typeuse*` : typeuse*, comptype : comptype}(`SUB`_subtype{`final?#179`, `typeuse*#179`, comptype#179}(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*`}) + def $free_rectype{`X*#302` : subtype*, `subtype*` : subtype*}(`REC`_rectype(`%`_list{`X*#302`}(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 : n}(_DEF_deftype(rectype, n)) = $free_rectype(rectype) + def $free_deftype{rectype#241 : rectype, n#247 : n, rectype : rectype, n : n}(`_DEF`_deftype{rectype#241, n#247}(rectype, n)) = $free_rectype(rectype) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -1489,22 +113048,22 @@ def $free_tagtype(tagtype : tagtype) : free ;; ../../../../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) + def $free_globaltype{`mut?#253` : mut?, valtype#127 : valtype, `mut?` : mut?, valtype : valtype}(`%%`_globaltype{`mut?#253`, valtype#127}(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)) + def $free_memtype{addrtype#211 : addrtype, limits#211 : limits, addrtype : addrtype, limits : limits}(`%%PAGE`_memtype{addrtype#211, limits#211}(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) + def $free_tabletype{addrtype#223 : addrtype, limits#223 : limits, reftype#111 : reftype, addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype{addrtype#223, limits#223, reftype#111}(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 []} + def $free_datatype{`typeidx*#19` : typeidx*, `funcidx*#19` : funcidx*, `globalidx*#19` : globalidx*, `tableidx*#19` : tableidx*, `memidx*#19` : memidx*, `elemidx*#19` : elemidx*, `dataidx*#19` : dataidx*, `localidx*#19` : localidx*, `labelidx*#19` : labelidx*}(`OK`_datatype) = {`TYPES`{`typeidx*#19`} [], `FUNCS`{`funcidx*#19`} [], `GLOBALS`{`globalidx*#19`} [], `TABLES`{`tableidx*#19`} [], `MEMS`{`memidx*#19`} [], `ELEMS`{`elemidx*#19`} [], `DATAS`{`dataidx*#19`} [], `LOCALS`{`localidx*#19`} [], `LABELS`{`labelidx*#19`} []} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_elemtype(elemtype : elemtype) : free @@ -1514,20 +113073,20 @@ def $free_elemtype(elemtype : elemtype) : free ;; ../../../../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) + def $free_externtype{tagtype#7 : tagtype, tagtype : tagtype}(`TAG`_externtype{tagtype#7}(tagtype)) = $free_tagtype(tagtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{globaltype : globaltype}(GLOBAL_externtype(globaltype)) = $free_globaltype(globaltype) + def $free_externtype{globaltype#7 : globaltype, globaltype : globaltype}(`GLOBAL`_externtype{globaltype#7}(globaltype)) = $free_globaltype(globaltype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{memtype : memtype}(MEM_externtype(memtype)) = $free_memtype(memtype) + def $free_externtype{memtype#7 : memtype, memtype : memtype}(`MEM`_externtype{memtype#7}(memtype)) = $free_memtype(memtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{tabletype : tabletype}(TABLE_externtype(tabletype)) = $free_tabletype(tabletype) + def $free_externtype{tabletype#7 : tabletype, tabletype : tabletype}(`TABLE`_externtype{tabletype#7}(tabletype)) = $free_tabletype(tabletype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{typeuse : typeuse}(FUNC_externtype(typeuse)) = $free_typeuse(typeuse) + def $free_externtype{typeuse#7 : typeuse, typeuse : typeuse}(`FUNC`_externtype{typeuse#7}(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*`}) + def $free_moduletype{`externtype*#88` : externtype*, `externtype_1*` : externtype*, `externtype_2*` : externtype*}(`%->%`_moduletype{`externtype*#88`}(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) @@ -1540,7 +113099,7 @@ syntax num_(numtype : numtype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax pack_{Pnn : Pnn}(Pnn) = iN($psizenn(Pnn)) +syntax pack_(Pnn : Pnn)(Pnn) = iN($psizenn(Pnn)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax lane_(lanetype : lanetype) @@ -1557,7 +113116,7 @@ syntax lane_(lanetype : lanetype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vec_{Vnn : Vnn}(Vnn) = vN($vsize(Vnn)) +syntax vec_(Vnn : Vnn)(Vnn) = vN($vsize(Vnn)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax lit_(storagetype : storagetype) @@ -1580,116 +113139,116 @@ syntax sz = ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax sx = - | U - | S + | `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 : Inn <: numtype)) = - | CLZ - | CTZ - | POPCNT - | EXTEND{sz : sz}(sz : sz) - -- if (sz!`%`_sz.0 < $sizenn((Inn : Inn <: numtype))) + | `CLZ` + | `CTZ` + | `POPCNT` + | `EXTEND`{sz : sz, i#1051 : nat}(sz : sz) + -- if (sz!`%`_sz{i#1051}.0 < $sizenn((Inn : Inn <: numtype))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax unop_{Fnn : Fnn}((Fnn : Fnn <: numtype)) = - | ABS - | NEG - | SQRT - | CEIL - | FLOOR - | TRUNC - | NEAREST + | `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 : Inn <: 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 + | `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 + | `ADD` + | `SUB` + | `MUL` + | `DIV` + | `MIN` + | `MAX` + | `COPYSIGN` ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax testop_{Inn : Inn}((Inn : Inn <: numtype)) = - | EQZ +syntax testop_(Inn : Inn)((Inn : Inn <: 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 : Inn <: numtype)) = - | EQ - | NE - | LT{sx : sx}(sx : sx) - | GT{sx : sx}(sx : sx) - | LE{sx : sx}(sx : sx) - | GE{sx : sx}(sx : sx) + | `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 + | `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 : Inn <: numtype), (Inn_2 : Inn <: numtype)) = - | EXTEND{sx : sx}(sx : sx) + | `EXTEND`{sx : sx}(sx : sx) -- if ($sizenn1((Inn_1 : Inn <: numtype)) < $sizenn2((Inn_2 : Inn <: numtype))) - | WRAP + | `WRAP` -- if ($sizenn1((Inn_1 : Inn <: numtype)) > $sizenn2((Inn_2 : Inn <: numtype))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax cvtop__{Inn_1 : Inn, Fnn_2 : Fnn}((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype)) = - | CONVERT{sx : sx}(sx : sx) - | REINTERPRET + | `CONVERT`{sx : sx}(sx : sx) + | `REINTERPRET` -- if ($sizenn1((Inn_1 : Inn <: 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 : Inn <: numtype)) = - | TRUNC{sx : sx}(sx : sx) - | TRUNC_SAT{sx : sx}(sx : sx) - | REINTERPRET + | `TRUNC`{sx : sx}(sx : sx) + | `TRUNC_SAT`{sx : sx}(sx : sx) + | `REINTERPRET` -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) = $sizenn2((Inn_2 : Inn <: 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 + | `PROMOTE` -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) < $sizenn2((Fnn_2 : Fnn <: numtype))) - | DEMOTE + | `DEMOTE` -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) > $sizenn2((Fnn_2 : Fnn <: numtype))) @@ -1700,23 +113259,23 @@ syntax dim = ;; ../../../../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) + | `%X%`{lanetype : lanetype, dim : dim, i#1053 : nat}(lanetype : lanetype, dim : dim) + -- if (($lsize(lanetype) * dim!`%`_dim{i#1053}.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) + def $dim{lanetype#11 : lanetype, dim#11 : dim, i#1058 : nat, Lnn : Lnn, i#1065 : nat, N : N, i#1073 : nat}(`%X%`_shape{lanetype#11, dim#11, i#1058}(Lnn, `%`_dim{i#1065}(N))) = `%`_dim{i#1073}(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 + def $lanetype{lanetype#23 : lanetype, dim#23 : dim, i#1078 : nat, Lnn : Lnn, i#1085 : nat, N : N}(`%X%`_shape{lanetype#23, dim#23, i#1078}(Lnn, `%`_dim{i#1085}(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) + def $unpackshape{lanetype#35 : lanetype, dim#35 : dim, i#1090 : nat, Lnn : Lnn, i#1097 : nat, N : N}(`%X%`_shape{lanetype#35, dim#35, i#1090}(Lnn, `%`_dim{i#1097}(N))) = $lunpack(Lnn) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax ishape = @@ -1726,68 +113285,68 @@ syntax ishape = ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax bshape = | `%`{shape : shape}(shape : shape) - -- if ($lanetype(shape) = I8_lanetype) + -- if ($lanetype(shape) = `I8`_lanetype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax zero = - | ZERO + | `ZERO` ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax half = - | LOW - | HIGH + | `LOW` + | `HIGH` ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vvunop = - | NOT + | `NOT` ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vvbinop = - | AND - | ANDNOT - | OR - | XOR + | `AND` + | `ANDNOT` + | `OR` + | `XOR` ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vvternop = - | BITSELECT + | `BITSELECT` ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vvtestop = - | ANY_TRUE + | `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 + syntax vunop_{lanetype#65 : lanetype, dim#65 : dim, i#1108 : nat, Jnn : Jnn, i#1115 : nat, M : M}(`%X%`_shape{lanetype#65, dim#65, i#1108}((Jnn : Jnn <: lanetype), `%`_dim{i#1115}(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 + syntax vunop_{lanetype#77 : lanetype, dim#77 : dim, i#1120 : nat, Fnn : Fnn, i#1127 : nat, M : M}(`%X%`_shape{lanetype#77, dim#77, i#1120}((Fnn : Fnn <: lanetype), `%`_dim{i#1127}(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) + syntax vbinop_{lanetype#89 : lanetype, dim#89 : dim, i#1132 : nat, Jnn : Jnn, i#1139 : nat, M : M}(`%X%`_shape{lanetype#89, dim#89, i#1132}((Jnn : Jnn <: lanetype), `%`_dim{i#1139}(M))) = + | `ADD` + | `SUB` + | `ADD_SAT`{sx : sx}(sx : sx) -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) - | SUB_SAT{sx : sx}(sx : sx) + | `SUB_SAT`{sx : sx}(sx : sx) -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) - | MUL + | `MUL` -- if ($lsizenn((Jnn : Jnn <: lanetype)) >= 16) | `AVGRU` -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) @@ -1795,87 +113354,87 @@ syntax vbinop_(shape : shape) -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 16) | `RELAXED_Q15MULRS` -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 16) - | MIN{sx : sx}(sx : sx) + | `MIN`{sx : sx}(sx : sx) -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 32) - | MAX{sx : sx}(sx : sx) + | `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 + syntax vbinop_{lanetype#101 : lanetype, dim#101 : dim, i#1144 : nat, Fnn : Fnn, i#1151 : nat, M : M}(`%X%`_shape{lanetype#101, dim#101, i#1144}((Fnn : Fnn <: lanetype), `%`_dim{i#1151}(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 + syntax vternop_{lanetype#113 : lanetype, dim#113 : dim, i#1156 : nat, Jnn : Jnn, i#1163 : nat, M : M}(`%X%`_shape{lanetype#113, dim#113, i#1156}((Jnn : Jnn <: lanetype), `%`_dim{i#1163}(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 + syntax vternop_{lanetype#125 : lanetype, dim#125 : dim, i#1168 : nat, Fnn : Fnn, i#1175 : nat, M : M}(`%X%`_shape{lanetype#125, dim#125, i#1168}((Fnn : Fnn <: lanetype), `%`_dim{i#1175}(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 +syntax vtestop_(lanetype#137 : lanetype, dim#137 : dim, i#1180 : nat, Jnn : Jnn, i#1187 : nat, M : M)(`%X%`_shape{lanetype#137, dim#137, i#1180}((Jnn : Jnn <: lanetype), `%`_dim{i#1187}(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)) + syntax vrelop_{lanetype#149 : lanetype, dim#149 : dim, i#1192 : nat, Jnn : Jnn, i#1199 : nat, M : M}(`%X%`_shape{lanetype#149, dim#149, i#1192}((Jnn : Jnn <: lanetype), `%`_dim{i#1199}(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 + syntax vrelop_{lanetype#161 : lanetype, dim#161 : dim, i#1204 : nat, Fnn : Fnn, i#1211 : nat, M : M}(`%X%`_shape{lanetype#161, dim#161, i#1204}((Fnn : Fnn <: lanetype), `%`_dim{i#1211}(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) +syntax vshiftop_(shape#11 : shape, Jnn#4 : Jnn, lanetype#173 : lanetype, dim#173 : dim, i#1216 : nat, Jnn : Jnn, i#1223 : nat, M : M)(`%`_ishape{shape#11, Jnn#4}(`%X%`_shape{lanetype#173, dim#173, i#1216}((Jnn : Jnn <: lanetype), `%`_dim{i#1223}(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 +syntax vswizzlop_(shape#23 : shape, lanetype#185 : lanetype, dim#185 : dim, i#1228 : nat, i#1235 : nat, M : M)(`%`_bshape{shape#23}(`%X%`_shape{lanetype#185, dim#185, i#1228}(`I8`_lanetype, `%`_dim{i#1235}(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) +syntax vextunop__(shape#35 : shape, Jnn#8 : Jnn, lanetype#197 : lanetype, dim#197 : dim, i#1240 : nat, Jnn_1 : Jnn, i#1247 : nat, M_1 : M, shape#47 : shape, Jnn#12 : Jnn, lanetype#209 : lanetype, dim#209 : dim, i#1252 : nat, Jnn_2 : Jnn, i#1259 : nat, M_2 : M)(`%`_ishape{shape#35, Jnn#8}(`%X%`_shape{lanetype#197, dim#197, i#1240}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#1247}(M_1))), `%`_ishape{shape#47, Jnn#12}(`%X%`_shape{lanetype#209, dim#209, i#1252}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#1259}(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) +syntax vextbinop__(shape#59 : shape, Jnn#16 : Jnn, lanetype#221 : lanetype, dim#221 : dim, i#1264 : nat, Jnn_1 : Jnn, i#1271 : nat, M_1 : M, shape#71 : shape, Jnn#20 : Jnn, lanetype#233 : lanetype, dim#233 : dim, i#1276 : nat, Jnn_2 : Jnn, i#1283 : nat, M_2 : M)(`%`_ishape{shape#59, Jnn#16}(`%X%`_shape{lanetype#221, dim#221, i#1264}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#1271}(M_1))), `%`_ishape{shape#71, Jnn#20}(`%X%`_shape{lanetype#233, dim#233, i#1276}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#1283}(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)) @@ -1883,35 +113442,35 @@ syntax vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%`_ishape(`%X%`_ -- 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)))) = +syntax vextternop__(shape#83 : shape, Jnn#24 : Jnn, lanetype#245 : lanetype, dim#245 : dim, i#1288 : nat, Jnn_1 : Jnn, i#1295 : nat, M_1 : M, shape#95 : shape, Jnn#28 : Jnn, lanetype#257 : lanetype, dim#257 : dim, i#1300 : nat, Jnn_2 : Jnn, i#1307 : nat, M_2 : M)(`%`_ishape{shape#83, Jnn#24}(`%X%`_shape{lanetype#245, dim#245, i#1288}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#1295}(M_1))), `%`_ishape{shape#95, Jnn#28}(`%X%`_shape{lanetype#257, dim#257, i#1300}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#1307}(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) + syntax vcvtop__{lanetype#269 : lanetype, dim#269 : dim, i#1312 : nat, Jnn_1 : Jnn, i#1319 : nat, M_1 : M, lanetype#281 : lanetype, dim#281 : dim, i#1324 : nat, Jnn_2 : Jnn, i#1331 : nat, M_2 : M}(`%X%`_shape{lanetype#269, dim#269, i#1312}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#1319}(M_1)), `%X%`_shape{lanetype#281, dim#281, i#1324}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#1331}(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)))) + syntax vcvtop__{lanetype#293 : lanetype, dim#293 : dim, i#1336 : nat, Jnn_1 : Jnn, i#1343 : nat, M_1 : M, lanetype#305 : lanetype, dim#305 : dim, i#1348 : nat, Fnn_2 : Fnn, i#1355 : nat, M_2 : M}(`%X%`_shape{lanetype#293, dim#293, i#1336}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#1343}(M_1)), `%X%`_shape{lanetype#305, dim#305, i#1348}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#1355}(M_2))) = + | `CONVERT`{`half?` : half?, sx : sx}(`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)))) + syntax vcvtop__{lanetype#317 : lanetype, dim#317 : dim, i#1360 : nat, Fnn_1 : Fnn, i#1367 : nat, M_1 : M, lanetype#329 : lanetype, dim#329 : dim, i#1372 : nat, Jnn_2 : Jnn, i#1379 : nat, M_2 : M}(`%X%`_shape{lanetype#317, dim#317, i#1360}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#1367}(M_1)), `%X%`_shape{lanetype#329, dim#329, i#1372}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#1379}(M_2))) = + | `TRUNC_SAT`{sx : sx, `zero?` : zero?}(sx : sx, `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?) + -- 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) + syntax vcvtop__{lanetype#341 : lanetype, dim#341 : dim, i#1384 : nat, Fnn_1 : Fnn, i#1391 : nat, M_1 : M, lanetype#353 : lanetype, dim#353 : dim, i#1396 : nat, Fnn_2 : Fnn, i#1403 : nat, M_2 : M}(`%X%`_shape{lanetype#341, dim#341, i#1384}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#1391}(M_1)), `%X%`_shape{lanetype#353, dim#353, i#1396}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#1403}(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))) @@ -1920,32 +113479,32 @@ syntax vcvtop__(shape_1 : shape, shape_2 : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax memarg = { - ALIGN{u32 : u32} u32, - OFFSET{u64 : u64} u64 + `ALIGN`{u32 : u32} u32, + `OFFSET`{u64 : u64} u64 } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax loadop_{Inn : Inn}((Inn : Inn <: numtype)) = - | `%_%`{sz : sz, sx : sx}(sz : sz, sx : sx) - -- if (sz!`%`_sz.0 < $sizenn((Inn : Inn <: numtype))) +syntax loadop_(Inn : Inn)((Inn : Inn <: numtype)) = + | `%_%`{sz : sz, sx : sx, i#1405 : nat}(sz : sz, sx : sx) + -- if (sz!`%`_sz{i#1405}.0 < $sizenn((Inn : Inn <: numtype))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax storeop_{Inn : Inn}((Inn : Inn <: numtype)) = - | `%`{sz : sz}(sz : sz) - -- if (sz!`%`_sz.0 < $sizenn((Inn : Inn <: numtype))) +syntax storeop_(Inn : Inn)((Inn : Inn <: numtype)) = + | `%`{sz : sz, i#1407 : nat}(sz : sz) + -- if (sz!`%`_sz{i#1407}.0 < $sizenn((Inn : Inn <: 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) +syntax vloadop_(vectype : vectype)(vectype) = + | `SHAPE%X%_%`{sz : sz, M : M, sx : sx, i#1409 : nat}(sz : sz, M : M, sx : sx) + -- if (((sz!`%`_sz{i#1409}.0 * M) : nat <:> rat) = (($vsize(vectype) : nat <:> rat) / (2 : nat <:> rat))) + | `SPLAT`{sz : sz}(sz : sz) + | `ZERO`{sz : sz, i#1411 : nat}(sz : sz) + -- if (sz!`%`_sz{i#1411}.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) + | `_RESULT`{`valtype?` : valtype?}(`valtype?` : valtype?) + | `_IDX`{typeidx : typeidx}(typeidx : typeidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax addr = nat @@ -1970,21 +113529,21 @@ 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) + | `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) + | `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 @@ -2006,51 +113565,51 @@ 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) + | `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 + `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* + `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) + | `CONST`{numtype : numtype}(numtype : numtype, num_(numtype)) + | `VCONST`{vectype : vectype}(vectype : vectype, vec_(vectype)) + | `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 frame = { - LOCALS{`val?*` : val?*} val?*, - MODULE{moduleinst : moduleinst} moduleinst + `LOCALS`{`val?*` : val?*} val?*, + `MODULE`{moduleinst : moduleinst} moduleinst } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -2058,124 +113617,124 @@ 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 + | `NOP` + | `UNREACHABLE` + | `DROP` + | `SELECT`{`valtype*?` : valtype*?}(`valtype*?` : valtype*?) + | `BLOCK`{blocktype : blocktype, `instr*` : instr*}(blocktype : blocktype, `instr*` : instr*) + | `LOOP`{blocktype : blocktype, `instr*` : instr*}(blocktype : blocktype, `instr*` : instr*) + | `IF%%ELSE%`{blocktype : blocktype, `instr*` : instr*}(blocktype : blocktype, `instr*` : instr*, `instr*` : instr*) + | `BR`{labelidx : labelidx}(labelidx : labelidx) + | `BR_IF`{labelidx : labelidx}(labelidx : labelidx) + | `BR_TABLE`{`labelidx*` : 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 : reftype) + | `BR_ON_CAST_FAIL`{labelidx : labelidx, reftype : reftype}(labelidx : labelidx, reftype : 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, `instr*` : instr*}(blocktype : blocktype, list(syntax catch), `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 : tableidx) + | `TABLE.INIT`{tableidx : tableidx, elemidx : elemidx}(tableidx : tableidx, elemidx : elemidx) + | `ELEM.DROP`{elemidx : elemidx}(elemidx : elemidx) + | `LOAD`{`numtype?` : numtype?, memidx : memidx, memarg : memarg}(numtype : numtype, loadop_(numtype)?, memidx : memidx, memarg : memarg) + | `STORE`{`numtype?` : numtype?, memidx : memidx, memarg : memarg}(numtype : numtype, storeop_(numtype)?, memidx : memidx, memarg : memarg) + | `VLOAD`{`vectype?` : vectype?, memidx : memidx, memarg : memarg}(vectype : vectype, 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 : 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?, 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?, typeidx : typeidx) + | `ARRAY.SET`{typeidx : typeidx}(typeidx : typeidx) + | `ARRAY.LEN` + | `ARRAY.FILL`{typeidx : typeidx}(typeidx : typeidx) + | `ARRAY.COPY`{typeidx : 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}(numtype : numtype, num_(numtype)) + | `UNOP`{numtype : numtype}(numtype : numtype, unop_(numtype)) + | `BINOP`{numtype : numtype}(numtype : numtype, binop_(numtype)) + | `TESTOP`{numtype : numtype}(numtype : numtype, testop_(numtype)) + | `RELOP`{numtype : numtype}(numtype : numtype, relop_(numtype)) + | `CVTOP`{numtype_1 : numtype, numtype_2 : numtype}(numtype_1 : numtype, numtype_2 : numtype, cvtop__(numtype_2, numtype_1)) + | `VCONST`{vectype : vectype}(vectype : vectype, 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}(shape : shape, vunop_(shape)) + | `VBINOP`{shape : shape}(shape : shape, vbinop_(shape)) + | `VTERNOP`{shape : shape}(shape : shape, vternop_(shape)) + | `VTESTOP`{shape : shape}(shape : shape, vtestop_(shape)) + | `VRELOP`{shape : shape}(shape : shape, vrelop_(shape)) + | `VSHIFTOP`{ishape : ishape}(ishape : ishape, vshiftop_(ishape)) + | `VBITMASK`{ishape : ishape}(ishape : ishape) + | `VSWIZZLOP`{bshape : bshape}(bshape : bshape, vswizzlop_(bshape)) + | `VSHUFFLE`{bshape : bshape, `laneidx*` : laneidx*, i#1432 : nat, shape#109 : shape}(bshape : bshape, `laneidx*` : laneidx*) + -- if (`%`_dim{i#1432}(|laneidx*{laneidx <- `laneidx*`}|) = $dim(bshape!`%`_bshape{shape#109}.0)) + | `VEXTUNOP`{ishape_1 : ishape, ishape_2 : ishape}(ishape_1 : ishape, ishape_2 : ishape, vextunop__(ishape_2, ishape_1)) + | `VEXTBINOP`{ishape_1 : ishape, ishape_2 : ishape}(ishape_1 : ishape, ishape_2 : ishape, vextbinop__(ishape_2, ishape_1)) + | `VEXTTERNOP`{ishape_1 : ishape, ishape_2 : ishape}(ishape_1 : ishape, ishape_2 : ishape, vextternop__(ishape_2, ishape_1)) + | `VNARROW`{ishape_1 : ishape, ishape_2 : ishape, sx : sx, shape#149 : shape, Jnn#44 : Jnn, shape#147 : shape, Jnn#43 : Jnn, shape#151 : shape, Jnn#45 : Jnn}(ishape_1 : ishape, ishape_2 : ishape, sx : sx) + -- if (($lsize($lanetype(ishape_2!`%`_ishape{shape#149, Jnn#44}.0)) = (2 * $lsize($lanetype(ishape_1!`%`_ishape{shape#147, Jnn#43}.0)))) /\ ((2 * $lsize($lanetype(ishape_1!`%`_ishape{shape#151, Jnn#45}.0))) <= 32)) + | `VCVTOP`{shape_1 : shape, shape_2 : shape}(shape_1 : shape, shape_2 : shape, vcvtop__(shape_2, shape_1)) + | `VSPLAT`{shape : shape}(shape : shape) + | `VEXTRACT_LANE`{shape : shape, `sx?` : sx?, laneidx : laneidx}(shape : shape, `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*) + | `FRAME_%{%}%`{n : n, frame : frame, `instr*` : instr*}(n : n, frame : frame, `instr*` : instr*) + | `HANDLER_%{%}%`{n : n, `catch*` : catch*, `instr*` : instr*}(n : n, `catch*` : catch*, `instr*` : instr*) + | `TRAP` } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -2184,26 +113743,26 @@ 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)} + def $memarg0{u32#1 : u32, i#1467 : nat, u64#37 : u64, i#1487 : nat} = {`ALIGN`{u32#1} `%`_u32{i#1467}(0), `OFFSET`{u64#37} `%`_u64{i#1487}(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) + def $const{numtype : numtype, c : lit_(((numtype : numtype <: consttype) : consttype <: storagetype)), numtype#1 : numtype}((numtype : numtype <: consttype), c) = `CONST`_instr{numtype#1}(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) + def $const{vectype : vectype, c : lit_(((vectype : vectype <: consttype) : consttype <: storagetype)), vectype#1 : vectype}((vectype : vectype <: consttype), c) = `VCONST`_instr{vectype#1}(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) + def $free_shape{lanetype#445 : lanetype, dim#445 : dim, i#1518 : nat, lanetype : lanetype, dim : dim}(`%X%`_shape{lanetype#445, dim#445, i#1518}(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?`}) + def $free_blocktype{`valtype?#1` : valtype?, `valtype?` : valtype?}(`_RESULT`_blocktype{`valtype?#1`}(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) + def $free_blocktype{typeidx#27 : typeidx, typeidx : typeidx}(`_IDX`_blocktype{typeidx#27}(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { @@ -2213,9 +113772,9 @@ 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'*`}) + def $shift_labelidxs{i#3333 : nat, `labelidx'*` : labelidx*}([`%`_labelidx{i#3333}(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'*`}) + def $shift_labelidxs{labelidx : labelidx, `labelidx'*` : labelidx*, i#3557 : nat, i#3547 : nat}([labelidx] ++ labelidx'*{labelidx' <- `labelidx'*`}) = [`%`_labelidx{i#3557}((((labelidx!`%`_labelidx{i#3547}.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -2224,212 +113783,212 @@ 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 []} + def $free_instr{`typeidx*#20` : typeidx*, `funcidx*#20` : funcidx*, `globalidx*#20` : globalidx*, `tableidx*#20` : tableidx*, `memidx*#20` : memidx*, `elemidx*#20` : elemidx*, `dataidx*#20` : dataidx*, `localidx*#20` : localidx*, `labelidx*#20` : labelidx*}(`NOP`_instr) = {`TYPES`{`typeidx*#20`} [], `FUNCS`{`funcidx*#20`} [], `GLOBALS`{`globalidx*#20`} [], `TABLES`{`tableidx*#20`} [], `MEMS`{`memidx*#20`} [], `ELEMS`{`elemidx*#20`} [], `DATAS`{`dataidx*#20`} [], `LOCALS`{`localidx*#20`} [], `LABELS`{`labelidx*#20`} []} ;; ../../../../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 []} + def $free_instr{`typeidx*#21` : typeidx*, `funcidx*#21` : funcidx*, `globalidx*#21` : globalidx*, `tableidx*#21` : tableidx*, `memidx*#21` : memidx*, `elemidx*#21` : elemidx*, `dataidx*#21` : dataidx*, `localidx*#21` : localidx*, `labelidx*#21` : labelidx*}(`UNREACHABLE`_instr) = {`TYPES`{`typeidx*#21`} [], `FUNCS`{`funcidx*#21`} [], `GLOBALS`{`globalidx*#21`} [], `TABLES`{`tableidx*#21`} [], `MEMS`{`memidx*#21`} [], `ELEMS`{`elemidx*#21`} [], `DATAS`{`dataidx*#21`} [], `LOCALS`{`localidx*#21`} [], `LABELS`{`labelidx*#21`} []} ;; ../../../../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 []} + def $free_instr{`typeidx*#22` : typeidx*, `funcidx*#22` : funcidx*, `globalidx*#22` : globalidx*, `tableidx*#22` : tableidx*, `memidx*#22` : memidx*, `elemidx*#22` : elemidx*, `dataidx*#22` : dataidx*, `localidx*#22` : localidx*, `labelidx*#22` : labelidx*}(`DROP`_instr) = {`TYPES`{`typeidx*#22`} [], `FUNCS`{`funcidx*#22`} [], `GLOBALS`{`globalidx*#22`} [], `TABLES`{`tableidx*#22`} [], `MEMS`{`memidx*#22`} [], `ELEMS`{`elemidx*#22`} [], `DATAS`{`dataidx*#22`} [], `LOCALS`{`localidx*#22`} [], `LABELS`{`labelidx*#22`} []} ;; ../../../../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*?`}) + def $free_instr{`valtype*?#1` : valtype*?, `valtype*?` : valtype*?}(`SELECT`_instr{`valtype*?#1`}(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*`}) + def $free_instr{blocktype#1 : blocktype, `instr*#1` : instr*, blocktype : blocktype, `instr*` : instr*}(`BLOCK`_instr{blocktype#1, `instr*#1`}(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*`}) + def $free_instr{blocktype#3 : blocktype, `instr*#3` : instr*, blocktype : blocktype, `instr*` : instr*}(`LOOP`_instr{blocktype#3, `instr*#3`}(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*`}) + def $free_instr{blocktype#5 : blocktype, `instr*#5` : instr*, blocktype : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}(`IF%%ELSE%`_instr{blocktype#5, `instr*#5`}(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) + def $free_instr{labelidx#1 : labelidx, labelidx : labelidx}(`BR`_instr{labelidx#1}(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) + def $free_instr{labelidx#3 : labelidx, labelidx : labelidx}(`BR_IF`_instr{labelidx#3}(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') + def $free_instr{`labelidx*#23` : labelidx*, labelidx#5 : labelidx, `labelidx*` : labelidx*, labelidx' : labelidx}(`BR_TABLE`_instr{`labelidx*#23`, labelidx#5}(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) + def $free_instr{labelidx#7 : labelidx, labelidx : labelidx}(`BR_ON_NULL`_instr{labelidx#7}(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) + def $free_instr{labelidx#9 : labelidx, labelidx : labelidx}(`BR_ON_NON_NULL`_instr{labelidx#9}(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) + def $free_instr{labelidx#11 : labelidx, reftype#125 : reftype, labelidx : labelidx, reftype_1 : reftype, reftype_2 : reftype}(`BR_ON_CAST`_instr{labelidx#11, reftype#125}(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) + def $free_instr{labelidx#13 : labelidx, reftype#128 : reftype, labelidx : labelidx, reftype_1 : reftype, reftype_2 : reftype}(`BR_ON_CAST_FAIL`_instr{labelidx#13, reftype#128}(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) + def $free_instr{funcidx#5 : funcidx, funcidx : funcidx}(`CALL`_instr{funcidx#5}(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) + def $free_instr{typeuse#9 : typeuse, typeuse : typeuse}(`CALL_REF`_instr{typeuse#9}(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) + def $free_instr{tableidx#5 : tableidx, typeuse#11 : typeuse, tableidx : tableidx, typeuse : typeuse}(`CALL_INDIRECT`_instr{tableidx#5, typeuse#11}(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 []} + def $free_instr{`typeidx*#23` : typeidx*, `funcidx*#23` : funcidx*, `globalidx*#23` : globalidx*, `tableidx*#23` : tableidx*, `memidx*#23` : memidx*, `elemidx*#23` : elemidx*, `dataidx*#23` : dataidx*, `localidx*#23` : localidx*, `labelidx*#25` : labelidx*}(`RETURN`_instr) = {`TYPES`{`typeidx*#23`} [], `FUNCS`{`funcidx*#23`} [], `GLOBALS`{`globalidx*#23`} [], `TABLES`{`tableidx*#23`} [], `MEMS`{`memidx*#23`} [], `ELEMS`{`elemidx*#23`} [], `DATAS`{`dataidx*#23`} [], `LOCALS`{`localidx*#23`} [], `LABELS`{`labelidx*#25`} []} ;; ../../../../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) + def $free_instr{funcidx#7 : funcidx, funcidx : funcidx}(`RETURN_CALL`_instr{funcidx#7}(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) + def $free_instr{typeuse#13 : typeuse, typeuse : typeuse}(`RETURN_CALL_REF`_instr{typeuse#13}(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) + def $free_instr{tableidx#7 : tableidx, typeuse#15 : typeuse, tableidx : tableidx, typeuse : typeuse}(`RETURN_CALL_INDIRECT`_instr{tableidx#7, typeuse#15}(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) + def $free_instr{numtype#3 : numtype, numtype : numtype, numlit : num_(numtype)}(`CONST`_instr{numtype#3}(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) + def $free_instr{numtype#5 : numtype, numtype : numtype, unop : unop_(numtype)}(`UNOP`_instr{numtype#5}(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) + def $free_instr{numtype#7 : numtype, numtype : numtype, binop : binop_(numtype)}(`BINOP`_instr{numtype#7}(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) + def $free_instr{numtype#9 : numtype, numtype : numtype, testop : testop_(numtype)}(`TESTOP`_instr{numtype#9}(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) + def $free_instr{numtype#11 : numtype, numtype : numtype, relop : relop_(numtype)}(`RELOP`_instr{numtype#11}(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) + def $free_instr{numtype_1#1 : numtype, numtype_2#1 : numtype, numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop__(numtype_2, numtype_1)}(`CVTOP`_instr{numtype_1#1, numtype_2#1}(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) + def $free_instr{vectype#3 : vectype, vectype : vectype, veclit : vec_(vectype)}(`VCONST`_instr{vectype#3}(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) + def $free_instr{vectype#5 : vectype, vvunop#1 : vvunop, vectype : vectype, vvunop : vvunop}(`VVUNOP`_instr{vectype#5, vvunop#1}(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) + def $free_instr{vectype#7 : vectype, vvbinop#1 : vvbinop, vectype : vectype, vvbinop : vvbinop}(`VVBINOP`_instr{vectype#7, vvbinop#1}(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) + def $free_instr{vectype#9 : vectype, vvternop#1 : vvternop, vectype : vectype, vvternop : vvternop}(`VVTERNOP`_instr{vectype#9, vvternop#1}(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) + def $free_instr{vectype#11 : vectype, vvtestop#1 : vvtestop, vectype : vectype, vvtestop : vvtestop}(`VVTESTOP`_instr{vectype#11, vvtestop#1}(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) + def $free_instr{shape#153 : shape, shape : shape, vunop : vunop_(shape)}(`VUNOP`_instr{shape#153}(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) + def $free_instr{shape#155 : shape, shape : shape, vbinop : vbinop_(shape)}(`VBINOP`_instr{shape#155}(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) + def $free_instr{shape#157 : shape, shape : shape, vternop : vternop_(shape)}(`VTERNOP`_instr{shape#157}(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) + def $free_instr{shape#159 : shape, shape : shape, vtestop : vtestop_(shape)}(`VTESTOP`_instr{shape#159}(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) + def $free_instr{shape#161 : shape, shape : shape, vrelop : vrelop_(shape)}(`VRELOP`_instr{shape#161}(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) + def $free_instr{ishape#1 : ishape, ishape : ishape, vshiftop : vshiftop_(ishape), shape#169 : shape, Jnn#48 : Jnn}(`VSHIFTOP`_instr{ishape#1}(ishape, vshiftop)) = $free_shape(ishape!`%`_ishape{shape#169, Jnn#48}.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) + def $free_instr{ishape#3 : ishape, ishape : ishape, shape#177 : shape, Jnn#51 : Jnn}(`VBITMASK`_instr{ishape#3}(ishape)) = $free_shape(ishape!`%`_ishape{shape#177, Jnn#51}.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) + def $free_instr{bshape#1 : bshape, bshape : bshape, vswizzlop : vswizzlop_(bshape), shape#185 : shape}(`VSWIZZLOP`_instr{bshape#1}(bshape, vswizzlop)) = $free_shape(bshape!`%`_bshape{shape#185}.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) + def $free_instr{bshape#3 : bshape, `laneidx*#1` : laneidx*, i#1902 : nat, shape#187 : shape, bshape : bshape, `laneidx*` : laneidx*, shape#194 : shape}(`VSHUFFLE`_instr{bshape#3, `laneidx*#1`, i#1902, shape#187}(bshape, laneidx*{laneidx <- `laneidx*`})) = $free_shape(bshape!`%`_bshape{shape#194}.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) + def $free_instr{ishape_1#1 : ishape, ishape_2#1 : ishape, ishape_1 : ishape, ishape_2 : ishape, vextunop : vextunop__(ishape_2, ishape_1), shape#208 : shape, Jnn#56 : Jnn, shape#210 : shape, Jnn#57 : Jnn}(`VEXTUNOP`_instr{ishape_1#1, ishape_2#1}(ishape_1, ishape_2, vextunop)) = $free_shape(ishape_1!`%`_ishape{shape#208, Jnn#56}.0) +++ $free_shape(ishape_2!`%`_ishape{shape#210, Jnn#57}.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) + def $free_instr{ishape_1#3 : ishape, ishape_2#3 : ishape, ishape_1 : ishape, ishape_2 : ishape, vextbinop : vextbinop__(ishape_2, ishape_1), shape#224 : shape, Jnn#62 : Jnn, shape#226 : shape, Jnn#63 : Jnn}(`VEXTBINOP`_instr{ishape_1#3, ishape_2#3}(ishape_1, ishape_2, vextbinop)) = $free_shape(ishape_1!`%`_ishape{shape#224, Jnn#62}.0) +++ $free_shape(ishape_2!`%`_ishape{shape#226, Jnn#63}.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) + def $free_instr{ishape_1#5 : ishape, ishape_2#5 : ishape, ishape_1 : ishape, ishape_2 : ishape, vextternop : vextternop__(ishape_2, ishape_1), shape#240 : shape, Jnn#68 : Jnn, shape#242 : shape, Jnn#69 : Jnn}(`VEXTTERNOP`_instr{ishape_1#5, ishape_2#5}(ishape_1, ishape_2, vextternop)) = $free_shape(ishape_1!`%`_ishape{shape#240, Jnn#68}.0) +++ $free_shape(ishape_2!`%`_ishape{shape#242, Jnn#69}.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) + def $free_instr{ishape_1#7 : ishape, ishape_2#7 : ishape, sx#1 : sx, shape#244 : shape, Jnn#70 : Jnn, shape#245 : shape, Jnn#71 : Jnn, shape#246 : shape, Jnn#72 : Jnn, ishape_1 : ishape, ishape_2 : ishape, sx : sx, shape#259 : shape, Jnn#77 : Jnn, shape#261 : shape, Jnn#78 : Jnn}(`VNARROW`_instr{ishape_1#7, ishape_2#7, sx#1, shape#244, Jnn#70, shape#245, Jnn#71, shape#246, Jnn#72}(ishape_1, ishape_2, sx)) = $free_shape(ishape_1!`%`_ishape{shape#259, Jnn#77}.0) +++ $free_shape(ishape_2!`%`_ishape{shape#261, Jnn#78}.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) + def $free_instr{shape_1#1 : shape, shape_2#1 : shape, shape_1 : shape, shape_2 : shape, vcvtop : vcvtop__(shape_2, shape_1)}(`VCVTOP`_instr{shape_1#1, shape_2#1}(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) + def $free_instr{shape#263 : shape, shape : shape}(`VSPLAT`_instr{shape#263}(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) + def $free_instr{shape#265 : shape, `sx?#1` : sx?, laneidx#1 : laneidx, shape : shape, `sx?` : sx?, laneidx : laneidx}(`VEXTRACT_LANE`_instr{shape#265, `sx?#1`, laneidx#1}(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) + def $free_instr{shape#267 : shape, laneidx#3 : laneidx, shape : shape, laneidx : laneidx}(`VREPLACE_LANE`_instr{shape#267, laneidx#3}(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) + def $free_instr{heaptype#373 : heaptype, heaptype : heaptype}(`REF.NULL`_instr{heaptype#373}(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 []} + def $free_instr{`typeidx*#24` : typeidx*, `funcidx*#24` : funcidx*, `globalidx*#24` : globalidx*, `tableidx*#24` : tableidx*, `memidx*#24` : memidx*, `elemidx*#24` : elemidx*, `dataidx*#24` : dataidx*, `localidx*#24` : localidx*, `labelidx*#26` : labelidx*}(`REF.IS_NULL`_instr) = {`TYPES`{`typeidx*#24`} [], `FUNCS`{`funcidx*#24`} [], `GLOBALS`{`globalidx*#24`} [], `TABLES`{`tableidx*#24`} [], `MEMS`{`memidx*#24`} [], `ELEMS`{`elemidx*#24`} [], `DATAS`{`dataidx*#24`} [], `LOCALS`{`localidx*#24`} [], `LABELS`{`labelidx*#26`} []} ;; ../../../../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 []} + def $free_instr{`typeidx*#25` : typeidx*, `funcidx*#25` : funcidx*, `globalidx*#25` : globalidx*, `tableidx*#25` : tableidx*, `memidx*#25` : memidx*, `elemidx*#25` : elemidx*, `dataidx*#25` : dataidx*, `localidx*#25` : localidx*, `labelidx*#27` : labelidx*}(`REF.AS_NON_NULL`_instr) = {`TYPES`{`typeidx*#25`} [], `FUNCS`{`funcidx*#25`} [], `GLOBALS`{`globalidx*#25`} [], `TABLES`{`tableidx*#25`} [], `MEMS`{`memidx*#25`} [], `ELEMS`{`elemidx*#25`} [], `DATAS`{`dataidx*#25`} [], `LOCALS`{`localidx*#25`} [], `LABELS`{`labelidx*#27`} []} ;; ../../../../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 []} + def $free_instr{`typeidx*#26` : typeidx*, `funcidx*#26` : funcidx*, `globalidx*#26` : globalidx*, `tableidx*#26` : tableidx*, `memidx*#26` : memidx*, `elemidx*#26` : elemidx*, `dataidx*#26` : dataidx*, `localidx*#26` : localidx*, `labelidx*#28` : labelidx*}(`REF.EQ`_instr) = {`TYPES`{`typeidx*#26`} [], `FUNCS`{`funcidx*#26`} [], `GLOBALS`{`globalidx*#26`} [], `TABLES`{`tableidx*#26`} [], `MEMS`{`memidx*#26`} [], `ELEMS`{`elemidx*#26`} [], `DATAS`{`dataidx*#26`} [], `LOCALS`{`localidx*#26`} [], `LABELS`{`labelidx*#28`} []} ;; ../../../../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) + def $free_instr{reftype#131 : reftype, reftype : reftype}(`REF.TEST`_instr{reftype#131}(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) + def $free_instr{reftype#133 : reftype, reftype : reftype}(`REF.CAST`_instr{reftype#133}(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) + def $free_instr{funcidx#9 : funcidx, funcidx : funcidx}(`REF.FUNC`_instr{funcidx#9}(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 []} + def $free_instr{`typeidx*#27` : typeidx*, `funcidx*#27` : funcidx*, `globalidx*#27` : globalidx*, `tableidx*#27` : tableidx*, `memidx*#27` : memidx*, `elemidx*#27` : elemidx*, `dataidx*#27` : dataidx*, `localidx*#27` : localidx*, `labelidx*#29` : labelidx*}(`REF.I31`_instr) = {`TYPES`{`typeidx*#27`} [], `FUNCS`{`funcidx*#27`} [], `GLOBALS`{`globalidx*#27`} [], `TABLES`{`tableidx*#27`} [], `MEMS`{`memidx*#27`} [], `ELEMS`{`elemidx*#27`} [], `DATAS`{`dataidx*#27`} [], `LOCALS`{`localidx*#27`} [], `LABELS`{`labelidx*#29`} []} ;; ../../../../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 []} + def $free_instr{sx#3 : sx, sx : sx, `typeidx*#28` : typeidx*, `funcidx*#28` : funcidx*, `globalidx*#28` : globalidx*, `tableidx*#28` : tableidx*, `memidx*#28` : memidx*, `elemidx*#28` : elemidx*, `dataidx*#28` : dataidx*, `localidx*#28` : localidx*, `labelidx*#30` : labelidx*}(`I31.GET`_instr{sx#3}(sx)) = {`TYPES`{`typeidx*#28`} [], `FUNCS`{`funcidx*#28`} [], `GLOBALS`{`globalidx*#28`} [], `TABLES`{`tableidx*#28`} [], `MEMS`{`memidx*#28`} [], `ELEMS`{`elemidx*#28`} [], `DATAS`{`dataidx*#28`} [], `LOCALS`{`localidx*#28`} [], `LABELS`{`labelidx*#30`} []} ;; ../../../../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 []} + def $free_instr{typeidx#29 : typeidx, typeidx : typeidx, `typeidx*#29` : typeidx*, `funcidx*#29` : funcidx*, `globalidx*#29` : globalidx*, `tableidx*#29` : tableidx*, `memidx*#29` : memidx*, `elemidx*#29` : elemidx*, `dataidx*#29` : dataidx*, `localidx*#29` : localidx*, `labelidx*#31` : labelidx*}(`STRUCT.NEW`_instr{typeidx#29}(typeidx)) = {`TYPES`{`typeidx*#29`} [], `FUNCS`{`funcidx*#29`} [], `GLOBALS`{`globalidx*#29`} [], `TABLES`{`tableidx*#29`} [], `MEMS`{`memidx*#29`} [], `ELEMS`{`elemidx*#29`} [], `DATAS`{`dataidx*#29`} [], `LOCALS`{`localidx*#29`} [], `LABELS`{`labelidx*#31`} []} ;; ../../../../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) + def $free_instr{typeidx#31 : typeidx, typeidx : typeidx}(`STRUCT.NEW_DEFAULT`_instr{typeidx#31}(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) + def $free_instr{`sx?#3` : sx?, typeidx#33 : typeidx, u32#2 : u32, `sx?` : sx?, typeidx : typeidx, u32 : u32}(`STRUCT.GET`_instr{`sx?#3`, typeidx#33, u32#2}(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) + def $free_instr{typeidx#35 : typeidx, u32#4 : u32, typeidx : typeidx, u32 : u32}(`STRUCT.SET`_instr{typeidx#35, u32#4}(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) + def $free_instr{typeidx#37 : typeidx, typeidx : typeidx}(`ARRAY.NEW`_instr{typeidx#37}(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) + def $free_instr{typeidx#39 : typeidx, typeidx : typeidx}(`ARRAY.NEW_DEFAULT`_instr{typeidx#39}(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) + def $free_instr{typeidx#41 : typeidx, u32#6 : u32, typeidx : typeidx, u32 : u32}(`ARRAY.NEW_FIXED`_instr{typeidx#41, u32#6}(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) + def $free_instr{typeidx#43 : typeidx, dataidx#1 : dataidx, typeidx : typeidx, dataidx : dataidx}(`ARRAY.NEW_DATA`_instr{typeidx#43, dataidx#1}(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) + def $free_instr{typeidx#45 : typeidx, elemidx#1 : elemidx, typeidx : typeidx, elemidx : elemidx}(`ARRAY.NEW_ELEM`_instr{typeidx#45, elemidx#1}(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) + def $free_instr{`sx?#5` : sx?, typeidx#47 : typeidx, `sx?` : sx?, typeidx : typeidx}(`ARRAY.GET`_instr{`sx?#5`, typeidx#47}(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) + def $free_instr{typeidx#49 : typeidx, typeidx : typeidx}(`ARRAY.SET`_instr{typeidx#49}(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 []} + def $free_instr{`typeidx*#30` : typeidx*, `funcidx*#30` : funcidx*, `globalidx*#30` : globalidx*, `tableidx*#30` : tableidx*, `memidx*#30` : memidx*, `elemidx*#30` : elemidx*, `dataidx*#30` : dataidx*, `localidx*#30` : localidx*, `labelidx*#32` : labelidx*}(`ARRAY.LEN`_instr) = {`TYPES`{`typeidx*#30`} [], `FUNCS`{`funcidx*#30`} [], `GLOBALS`{`globalidx*#30`} [], `TABLES`{`tableidx*#30`} [], `MEMS`{`memidx*#30`} [], `ELEMS`{`elemidx*#30`} [], `DATAS`{`dataidx*#30`} [], `LOCALS`{`localidx*#30`} [], `LABELS`{`labelidx*#32`} []} ;; ../../../../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) + def $free_instr{typeidx#51 : typeidx, typeidx : typeidx}(`ARRAY.FILL`_instr{typeidx#51}(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) + def $free_instr{typeidx#53 : typeidx, typeidx_1 : typeidx, typeidx_2 : typeidx}(`ARRAY.COPY`_instr{typeidx#53}(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) + def $free_instr{typeidx#56 : typeidx, dataidx#3 : dataidx, typeidx : typeidx, dataidx : dataidx}(`ARRAY.INIT_DATA`_instr{typeidx#56, dataidx#3}(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) + def $free_instr{typeidx#58 : typeidx, elemidx#3 : elemidx, typeidx : typeidx, elemidx : elemidx}(`ARRAY.INIT_ELEM`_instr{typeidx#58, elemidx#3}(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 []} + def $free_instr{`typeidx*#31` : typeidx*, `funcidx*#31` : funcidx*, `globalidx*#31` : globalidx*, `tableidx*#31` : tableidx*, `memidx*#31` : memidx*, `elemidx*#31` : elemidx*, `dataidx*#31` : dataidx*, `localidx*#31` : localidx*, `labelidx*#33` : labelidx*}(`EXTERN.CONVERT_ANY`_instr) = {`TYPES`{`typeidx*#31`} [], `FUNCS`{`funcidx*#31`} [], `GLOBALS`{`globalidx*#31`} [], `TABLES`{`tableidx*#31`} [], `MEMS`{`memidx*#31`} [], `ELEMS`{`elemidx*#31`} [], `DATAS`{`dataidx*#31`} [], `LOCALS`{`localidx*#31`} [], `LABELS`{`labelidx*#33`} []} ;; ../../../../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 []} + def $free_instr{`typeidx*#32` : typeidx*, `funcidx*#32` : funcidx*, `globalidx*#32` : globalidx*, `tableidx*#32` : tableidx*, `memidx*#32` : memidx*, `elemidx*#32` : elemidx*, `dataidx*#32` : dataidx*, `localidx*#32` : localidx*, `labelidx*#34` : labelidx*}(`ANY.CONVERT_EXTERN`_instr) = {`TYPES`{`typeidx*#32`} [], `FUNCS`{`funcidx*#32`} [], `GLOBALS`{`globalidx*#32`} [], `TABLES`{`tableidx*#32`} [], `MEMS`{`memidx*#32`} [], `ELEMS`{`elemidx*#32`} [], `DATAS`{`dataidx*#32`} [], `LOCALS`{`localidx*#32`} [], `LABELS`{`labelidx*#34`} []} ;; ../../../../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) + def $free_instr{localidx#1 : localidx, localidx : localidx}(`LOCAL.GET`_instr{localidx#1}(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) + def $free_instr{localidx#3 : localidx, localidx : localidx}(`LOCAL.SET`_instr{localidx#3}(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) + def $free_instr{localidx#5 : localidx, localidx : localidx}(`LOCAL.TEE`_instr{localidx#5}(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) + def $free_instr{globalidx#5 : globalidx, globalidx : globalidx}(`GLOBAL.GET`_instr{globalidx#5}(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) + def $free_instr{globalidx#7 : globalidx, globalidx : globalidx}(`GLOBAL.SET`_instr{globalidx#7}(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) + def $free_instr{tableidx#9 : tableidx, tableidx : tableidx}(`TABLE.GET`_instr{tableidx#9}(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) + def $free_instr{tableidx#11 : tableidx, tableidx : tableidx}(`TABLE.SET`_instr{tableidx#11}(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) + def $free_instr{tableidx#13 : tableidx, tableidx : tableidx}(`TABLE.SIZE`_instr{tableidx#13}(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) + def $free_instr{tableidx#15 : tableidx, tableidx : tableidx}(`TABLE.GROW`_instr{tableidx#15}(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) + def $free_instr{tableidx#17 : tableidx, tableidx : tableidx}(`TABLE.FILL`_instr{tableidx#17}(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) + def $free_instr{tableidx#19 : tableidx, tableidx_1 : tableidx, tableidx_2 : tableidx}(`TABLE.COPY`_instr{tableidx#19}(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) + def $free_instr{tableidx#22 : tableidx, elemidx#5 : elemidx, tableidx : tableidx, elemidx : elemidx}(`TABLE.INIT`_instr{tableidx#22, elemidx#5}(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) + def $free_instr{elemidx#7 : elemidx, elemidx : elemidx}(`ELEM.DROP`_instr{elemidx#7}(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) + def $free_instr{`numtype?#1` : numtype?, memidx#5 : memidx, memarg#1 : memarg, numtype : numtype, `loadop?` : loadop_(numtype)?, memidx : memidx, memarg : memarg}(`LOAD`_instr{`numtype?#1`, memidx#5, memarg#1}(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) + def $free_instr{`numtype?#2` : numtype?, memidx#7 : memidx, memarg#3 : memarg, numtype : numtype, `storeop?` : storeop_(numtype)?, memidx : memidx, memarg : memarg}(`STORE`_instr{`numtype?#2`, memidx#7, memarg#3}(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) + def $free_instr{`vectype?#1` : vectype?, memidx#9 : memidx, memarg#5 : memarg, vectype : vectype, `vloadop?` : vloadop_(vectype)?, memidx : memidx, memarg : memarg}(`VLOAD`_instr{`vectype?#1`, memidx#9, memarg#5}(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) + def $free_instr{vectype#14 : vectype, sz#1 : sz, memidx#11 : memidx, memarg#7 : memarg, laneidx#5 : laneidx, vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(`VLOAD_LANE`_instr{vectype#14, sz#1, memidx#11, memarg#7, laneidx#5}(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) + def $free_instr{vectype#16 : vectype, memidx#13 : memidx, memarg#9 : memarg, vectype : vectype, memidx : memidx, memarg : memarg}(`VSTORE`_instr{vectype#16, memidx#13, memarg#9}(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) + def $free_instr{vectype#18 : vectype, sz#3 : sz, memidx#15 : memidx, memarg#11 : memarg, laneidx#7 : laneidx, vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(`VSTORE_LANE`_instr{vectype#18, sz#3, memidx#15, memarg#11, laneidx#7}(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) + def $free_instr{memidx#17 : memidx, memidx : memidx}(`MEMORY.SIZE`_instr{memidx#17}(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) + def $free_instr{memidx#19 : memidx, memidx : memidx}(`MEMORY.GROW`_instr{memidx#19}(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) + def $free_instr{memidx#21 : memidx, memidx : memidx}(`MEMORY.FILL`_instr{memidx#21}(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) + def $free_instr{memidx#23 : memidx, memidx_1 : memidx, memidx_2 : memidx}(`MEMORY.COPY`_instr{memidx#23}(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) + def $free_instr{memidx#26 : memidx, dataidx#5 : dataidx, memidx : memidx, dataidx : dataidx}(`MEMORY.INIT`_instr{memidx#26, dataidx#5}(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) + def $free_instr{dataidx#7 : dataidx, dataidx : dataidx}(`DATA.DROP`_instr{dataidx#7}(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)] + def $free_block{`instr*` : instr*, free : free, `labelidx*#35` : labelidx*, `labelidx*#44` : labelidx*}(instr*{instr <- `instr*`}) = free[`LABELS`_free{`labelidx*#35`} = $shift_labelidxs(free.`LABELS`_free{`labelidx*#44`})] -- if (free = $free_list($free_instr(instr)*{instr <- `instr*`})) } @@ -2440,162 +113999,162 @@ def $free_expr(expr : expr) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax elemmode = - | ACTIVE{tableidx : tableidx, expr : expr}(tableidx : tableidx, expr : expr) - | PASSIVE - | DECLARE + | `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 + | `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) + | `TYPE`{rectype : rectype}(rectype : rectype) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax tag = - | TAG{tagtype : tagtype}(tagtype : tagtype) + | `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) + | `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) + | `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) + | `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) + | `DATA`{`byte*` : byte*, datamode : datamode}(`byte*` : byte*, datamode : datamode) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax local = - | LOCAL{valtype : valtype}(valtype : valtype) + | `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) + | `FUNC`{typeidx : typeidx, `local*` : local*, expr : expr}(typeidx : typeidx, `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) + | `ELEM`{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(reftype : reftype, `expr*` : expr*, elemmode : elemmode) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax start = - | START{funcidx : funcidx}(funcidx : funcidx) + | `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) + | `IMPORT`{name : name, externtype : externtype}(name : 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) + | `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*) + | `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*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `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) + def $free_type{rectype#265 : rectype, rectype : rectype}(`TYPE`_type{rectype#265}(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) + def $free_tag{tagtype#19 : tagtype, tagtype : tagtype}(`TAG`_tag{tagtype#19}(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) + def $free_global{globaltype#19 : globaltype, expr#11 : expr, globaltype : globaltype, expr : expr}(`GLOBAL`_global{globaltype#19, expr#11}(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) + def $free_mem{memtype#19 : memtype, memtype : memtype}(`MEMORY`_mem{memtype#19}(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) + def $free_table{tabletype#19 : tabletype, expr#23 : expr, tabletype : tabletype, expr : expr}(`TABLE`_table{tabletype#19, expr#23}(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) + def $free_local{valtype#163 : valtype, t : valtype}(`LOCAL`_local{valtype#163}(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 = []] + def $free_func{typeidx#70 : typeidx, `local*#11` : local*, expr#35 : expr, typeidx : typeidx, `local*` : local*, expr : expr, `localidx*#33` : localidx*}(`FUNC`_func{typeidx#70, `local*#11`, expr#35}(typeidx, local*{local <- `local*`}, expr)) = $free_typeidx(typeidx) +++ $free_list($free_local(local)*{local <- `local*`}) +++ $free_block(expr)[`LOCALS`_free{`localidx*#33`} = []] ;; ../../../../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) + def $free_datamode{memidx#28 : memidx, expr#39 : expr, memidx : memidx, expr : expr}(`ACTIVE`_datamode{memidx#28, expr#39}(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 []} + def $free_datamode{`typeidx*#35` : typeidx*, `funcidx*#35` : funcidx*, `globalidx*#35` : globalidx*, `tableidx*#35` : tableidx*, `memidx*#35` : memidx*, `elemidx*#35` : elemidx*, `dataidx*#35` : dataidx*, `localidx*#36` : localidx*, `labelidx*#47` : labelidx*}(`PASSIVE`_datamode) = {`TYPES`{`typeidx*#35`} [], `FUNCS`{`funcidx*#35`} [], `GLOBALS`{`globalidx*#35`} [], `TABLES`{`tableidx*#35`} [], `MEMS`{`memidx*#35`} [], `ELEMS`{`elemidx*#35`} [], `DATAS`{`dataidx*#35`} [], `LOCALS`{`localidx*#36`} [], `LABELS`{`labelidx*#47`} []} ;; ../../../../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) + def $free_data{`byte*#11` : byte*, datamode#11 : datamode, `byte*` : byte*, datamode : datamode}(`DATA`_data{`byte*#11`, datamode#11}(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) + def $free_elemmode{tableidx#24 : tableidx, expr#37 : expr, tableidx : tableidx, expr : expr}(`ACTIVE`_elemmode{tableidx#24, expr#37}(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 []} + def $free_elemmode{`typeidx*#33` : typeidx*, `funcidx*#33` : funcidx*, `globalidx*#33` : globalidx*, `tableidx*#33` : tableidx*, `memidx*#33` : memidx*, `elemidx*#33` : elemidx*, `dataidx*#33` : dataidx*, `localidx*#34` : localidx*, `labelidx*#45` : labelidx*}(`PASSIVE`_elemmode) = {`TYPES`{`typeidx*#33`} [], `FUNCS`{`funcidx*#33`} [], `GLOBALS`{`globalidx*#33`} [], `TABLES`{`tableidx*#33`} [], `MEMS`{`memidx*#33`} [], `ELEMS`{`elemidx*#33`} [], `DATAS`{`dataidx*#33`} [], `LOCALS`{`localidx*#34`} [], `LABELS`{`labelidx*#45`} []} ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_elemmode{`typeidx*#34` : typeidx*, `funcidx*#34` : funcidx*, `globalidx*#34` : globalidx*, `tableidx*#34` : tableidx*, `memidx*#34` : memidx*, `elemidx*#34` : elemidx*, `dataidx*#34` : dataidx*, `localidx*#35` : localidx*, `labelidx*#46` : labelidx*}(`DECLARE`_elemmode) = {`TYPES`{`typeidx*#34`} [], `FUNCS`{`funcidx*#34`} [], `GLOBALS`{`globalidx*#34`} [], `TABLES`{`tableidx*#34`} [], `MEMS`{`memidx*#34`} [], `ELEMS`{`elemidx*#34`} [], `DATAS`{`dataidx*#34`} [], `LOCALS`{`localidx*#35`} [], `LABELS`{`labelidx*#46`} []} ;; ../../../../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) + def $free_elem{reftype#157 : reftype, `expr*#11` : expr*, elemmode#11 : elemmode, reftype : reftype, `expr*` : expr*, elemmode : elemmode}(`ELEM`_elem{reftype#157, `expr*#11`, elemmode#11}(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) + def $free_start{funcidx#21 : funcidx, funcidx : funcidx}(`START`_start{funcidx#21}(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) + def $free_import{name#18 : name, externtype#11 : externtype, name_1 : name, name_2 : name, externtype : externtype}(`IMPORT`_import{name#18, externtype#11}(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) + def $free_export{name#31 : name, externidx#11 : externidx, name : name, externidx : externidx}(`EXPORT`_export{name#31, externidx#11}(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*`}) + def $free_module{`type*#11` : type*, `import*#11` : import*, `tag*#11` : tag*, `global*#11` : global*, `mem*#11` : mem*, `table*#11` : table*, `func*#11` : func*, `data*#11` : data*, `elem*#11` : elem*, `start?#11` : start?, `export*#11` : export*, `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*#11`, `import*#11`, `tag*#11`, `global*#11`, `mem*#11`, `table*#11`, `func*#11`, `data*#11`, `elem*#11`, `start?#11`, `export*#11`}(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 + def $funcidx_module{module : module, `funcidx*#38` : funcidx*}(module) = $free_module(module).`FUNCS`_free{`funcidx*#38`} ;; ../../../../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 + def $dataidx_funcs{`func*` : func*, `dataidx*#38` : dataidx*}(func*{func <- `func*`}) = $free_list($free_func(func)*{func <- `func*`}).`DATAS`_free{`dataidx*#38`} ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec syntax init = - | SET - | UNSET + | `SET` + | `UNSET` ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec syntax localtype = @@ -2603,24 +114162,24 @@ syntax localtype = ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec syntax instrtype = - | `%->_%%`{resulttype : resulttype, `localidx*` : localidx*}(resulttype : resulttype, localidx*{localidx <- `localidx*`} : localidx*, resulttype) + | `%->_%%`{resulttype : resulttype, `localidx*` : localidx*}(resulttype : resulttype, `localidx*` : localidx*, resulttype : 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* + `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 @@ -2631,7 +114190,7 @@ 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 : 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*`}) + def $with_locals{C : context, x_1 : idx, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*, `localtype*#1` : localtype*, i#3970 : nat}(C, [x_1] ++ x*{x <- `x*`}, [lct_1] ++ lct*{lct <- `lct*`}) = $with_locals(C[`LOCALS`_context{`localtype*#1`}[x_1!`%`_idx{i#3970}.0] = lct_1], x*{x <- `x*`}, lct*{lct <- `lct*`}) } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec @@ -2649,32 +114208,32 @@ def $clos_deftypes(deftype*) : deftype* ;; ../../../../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)) + def $clos_valtype{C : context, t : valtype, `dt*` : deftype*, `deftype*#2` : deftype*}(C, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.`TYPES`_context{`deftype*#2`})) ;; ../../../../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)) + def $clos_deftype{C : context, dt : deftype, `dt'*` : deftype*, `deftype*#4` : deftype*}(C, dt) = $subst_all_deftype(dt, (dt' : deftype <: typeuse)*{dt' <- `dt'*`}) + -- if (dt'*{dt' <- `dt'*`} = $clos_deftypes(C.`TYPES`_context{`deftype*#4`})) ;; ../../../../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*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) + def $clos_tagtype{C : context, jt : tagtype, `dt*` : deftype*, `deftype*#6` : deftype*}(C, jt) = $subst_all_tagtype(jt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.`TYPES`_context{`deftype*#6`})) ;; ../../../../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)) + def $clos_externtype{C : context, xt : externtype, `dt*` : deftype*, `deftype*#8` : deftype*}(C, xt) = $subst_all_externtype(xt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.`TYPES`_context{`deftype*#8`})) ;; ../../../../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)) + def $clos_moduletype{C : context, mmt : moduletype, `dt*` : deftype*, `deftype*#10` : deftype*}(C, mmt) = $subst_all_moduletype(mmt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.`TYPES`_context{`deftype*#10`})) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Numtype_ok: `%|-%:OK`(context, numtype) @@ -2690,11 +114249,11 @@ relation Vectype_ok: `%|-%:OK`(context, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypeidx = - | OK{typeidx : typeidx}(typeidx : typeidx) + | `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) + | `OK`{typeidx : typeidx}(typeidx : typeidx, nat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Packtype_ok: `%|-%:OK`(context, packtype) @@ -2732,18 +114291,18 @@ 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) + def $before{typeidx#240 : typeidx, typeidx : typeidx, x : idx, i : nat, i#4259 : nat, i#4269 : nat}(`_IDX`_typeuse{typeidx#240}(typeidx), x, i) = (typeidx!`%`_typeidx{i#4259}.0 < x!`%`_idx{i#4269}.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) + def $before{n#515 : n, j : n, x : idx, i : nat}(`REC`_typeuse{n#515}(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]) + def $unrollht{C : context, typeidx#242 : typeidx, typeidx : typeidx, `deftype*#14` : deftype*, i#4303 : nat}(C, `_IDX`_heaptype{typeidx#242}(typeidx)) = $unrolldt(C.`TYPES`_context{`deftype*#14`}[typeidx!`%`_typeidx{i#4303}.0]) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $unrollht{C : context, i : n}(C, REC_heaptype(i)) = C.RECS_context[i] + def $unrollht{C : context, n#529 : n, i : n, `subtype*#2` : subtype*}(C, `REC`_heaptype{n#529}(i)) = C.`RECS`_context{`subtype*#2`}[i] ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rec { @@ -2762,8 +114321,8 @@ relation Heaptype_ok: `%|-%:OK`(context, heaptype) ;; ../../../../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)) + rule _{C : context, `null?#419` : null?, heaptype#421 : heaptype, heaptype : heaptype}: + `%|-%:OK`(C, `REF`_reftype{`null?#419`, heaptype#421}(`NULL`_null?{}, heaptype)) -- Heaptype_ok: `%|-%:OK`(C, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 @@ -2785,19 +114344,19 @@ relation Valtype_ok: `%|-%:OK`(context, valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:43.1-44.16 rule bot{C : context}: - `%|-%:OK`(C, BOT_valtype) + `%|-%: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) + rule typeidx{C : context, typeidx#222 : typeidx, typeidx : typeidx, `deftype*#12` : deftype*, i#4125 : nat, dt : deftype}: + `%|-%:OK`(C, `_IDX`_typeuse{typeidx#222}(typeidx)) + -- if (C.`TYPES`_context{`deftype*#12`}[typeidx!`%`_typeidx{i#4125}.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) + rule rec{C : context, n#501 : n, i : n, `subtype*#1` : subtype*, st : subtype}: + `%|-%:OK`(C, `REC`_typeuse{n#501}(i)) + -- if (C.`RECS`_context{`subtype*#1`}[i] = st) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:107.1-109.35 rule deftype{C : context, deftype : deftype}: @@ -2807,15 +114366,15 @@ relation Typeuse_ok: `%|-%:OK`(context, typeuse) ;; ../../../../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*`})) + rule _{C : context, `X*#465` : valtype*, `t*` : valtype*}: + `%|-%:OK`(C, `%`_resulttype{`X*#465`}(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)) + rule _{C : context, `mut?#289` : mut?, storagetype#137 : storagetype, storagetype : storagetype}: + `%|-%:OK`(C, `%%`_fieldtype{`mut?#289`, storagetype#137}(`MUT`_mut?{}, storagetype)) -- Storagetype_ok: `%|-%:OK`(C, storagetype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:86.1-86.106 @@ -2833,98 +114392,98 @@ relation Storagetype_ok: `%|-%:OK`(context, storagetype) ;; ../../../../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*`}))) + rule struct{C : context, `X*#571` : fieldtype*, `fieldtype*` : fieldtype*}: + `%|-%:OK`(C, `STRUCT`_comptype(`%`_list{`X*#571`}(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)) + rule array{C : context, fieldtype#7 : fieldtype, fieldtype : fieldtype}: + `%|-%:OK`(C, `ARRAY`_comptype{fieldtype#7}(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*`})) + rule func{C : context, resulttype#30 : resulttype, `X*#586` : valtype*, `t_1*` : valtype*, `X*#599` : valtype*, `t_2*` : valtype*, `X*#612` : valtype*, `X*#625` : valtype*}: + `%|-%:OK`(C, `FUNC%->%`_comptype{resulttype#30}(`%`_resulttype{`X*#586`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#599`}(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype{`X*#612`}(t_1*{t_1 <- `t_1*`})) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype{`X*#625`}(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)) + rule _{C : context, `final?#215` : final?, `typeuse*#215` : typeuse*, comptype#215 : comptype, `typeidx#224*` : typeidx*, `x*` : idx*, comptype : comptype, typeidx#236 : typeidx, x_0 : idx, `i#4171*` : nat*, `i#4181*` : nat*, `comptype#227*` : comptype*, `comptype'*` : comptype*, `deftype*#13*` : deftype**, `final?#227*` : final?*, `i#4191*` : nat*, `typeidx#238**` : typeidx**, `typeuse*#227*` : typeuse**, `x'**` : idx**}: + `%|-%:%`(C, `SUB`_subtype{`final?#215`, `typeuse*#215`, comptype#215}(`FINAL`_final?{}, `_IDX`_typeuse{typeidx#224}(x)*{typeidx#224 <- `typeidx#224*`, x <- `x*`}, comptype), `OK`_oktypeidx{typeidx#236}(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'**`} + -- (if (x!`%`_idx{i#4171}.0 < x_0!`%`_idx{i#4181}.0))*{i#4171 <- `i#4171*`, i#4181 <- `i#4181*`, x <- `x*`} + -- (if ($unrolldt(C.`TYPES`_context{`deftype*#13`}[x!`%`_idx{i#4191}.0]) = `SUB`_subtype{`final?#227`, `typeuse*#227`, comptype#227}(?(), `_IDX`_typeuse{typeidx#238}(x')*{typeidx#238 <- `typeidx#238*`, x' <- `x'*`}, comptype')))*{comptype#227 <- `comptype#227*`, comptype' <- `comptype'*`, `deftype*#13` <- `deftype*#13*`, `final?#227` <- `final?#227*`, i#4191 <- `i#4191*`, `typeidx#238*` <- `typeidx#238**`, `typeuse*#227` <- `typeuse*#227*`, 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)) + rule empty{C : context, `X*#650` : subtype*, typeidx#266 : typeidx, x : idx}: + `%|-%:%`(C, `REC`_rectype(`%`_list{`X*#650`}([])), `OK`_oktypeidx{typeidx#266}(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)))) + rule cons{C : context, `X*#673` : subtype*, subtype_1 : subtype, `subtype*` : subtype*, typeidx#278 : typeidx, x : idx, typeidx#290 : typeidx, `X*#686` : subtype*, typeidx#302 : typeidx, i#4407 : nat, i#4397 : nat}: + `%|-%:%`(C, `REC`_rectype(`%`_list{`X*#673`}([subtype_1] ++ subtype*{subtype <- `subtype*`})), `OK`_oktypeidx{typeidx#278}(x)) + -- Subtype_ok: `%|-%:%`(C, subtype_1, `OK`_oktypeidx{typeidx#290}(x)) + -- Rectype_ok: `%|-%:%`(C, `REC`_rectype(`%`_list{`X*#686`}(subtype*{subtype <- `subtype*`})), `OK`_oktypeidx{typeidx#302}(`%`_typeidx{i#4407}((x!`%`_idx{i#4397}.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)) + rule _rec2{C : context, `X*#701` : subtype*, `subtype*` : subtype*, typeidx#314 : typeidx, x : idx, `deftype*#15` : deftype*, `subtype*#3` : subtype*, `tagtype*#1` : tagtype*, `globaltype*#1` : globaltype*, `memtype*#1` : memtype*, `tabletype*#1` : tabletype*, `deftype*#16` : deftype*, `datatype*#1` : datatype*, `elemtype*#1` : elemtype*, `localtype*#3` : localtype*, `resulttype*#1` : resulttype*, `resulttype?#1` : resulttype?, `funcidx*#39` : funcidx*, `X*#716` : subtype*, typeidx#326 : typeidx}: + `%|-%:%`(C, `REC`_rectype(`%`_list{`X*#701`}(subtype*{subtype <- `subtype*`})), `OK`_oktypeidx{typeidx#314}(x)) + -- Rectype_ok2: `%|-%:%`({`TYPES`{`deftype*#15`} [], `RECS`{`subtype*#3`} subtype*{subtype <- `subtype*`}, `TAGS`{`tagtype*#1`} [], `GLOBALS`{`globaltype*#1`} [], `MEMS`{`memtype*#1`} [], `TABLES`{`tabletype*#1`} [], `FUNCS`{`deftype*#16`} [], `DATAS`{`datatype*#1`} [], `ELEMS`{`elemtype*#1`} [], `LOCALS`{`localtype*#3`} [], `LABELS`{`resulttype*#1`} [], `RETURN`{`resulttype?#1`} ?(), `REFS`{`funcidx*#39`} []} +++ C, `REC`_rectype(`%`_list{`X*#716`}(subtype*{subtype <- `subtype*`})), `OK`_oktypeidxnat{typeidx#326}(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)) + rule _{C : context, `final?#257` : final?, `typeuse*#257` : typeuse*, comptype#257 : comptype, `typeuse*` : typeuse*, compttype : comptype, typeidx#254 : typeidx, x : idx, i : nat, `comptype#269*` : comptype*, `comptype'*` : comptype*, `final?#269*` : final?*, `typeuse'**` : typeuse**, `typeuse*#269*` : typeuse**, comptype : comptype}: + `%|-%:%`(C, `SUB`_subtype{`final?#257`, `typeuse*#257`, comptype#257}(`FINAL`_final?{}, typeuse*{typeuse <- `typeuse*`}, compttype), `OK`_oktypeidxnat{typeidx#254}(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'**`} + -- (if ($unrollht(C, (typeuse : typeuse <: heaptype)) = `SUB`_subtype{`final?#269`, `typeuse*#269`, comptype#269}(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype#269 <- `comptype#269*`, comptype' <- `comptype'*`, `final?#269` <- `final?#269*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`, `typeuse*#269` <- `typeuse*#269*`} -- 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)) + rule empty{C : context, `X*#741` : subtype*, typeidx#338 : typeidx, x : idx, i : nat}: + `%|-%:%`(C, `REC`_rectype(`%`_list{`X*#741`}([])), `OK`_oktypeidxnat{typeidx#338}(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))) + rule cons{C : context, `X*#764` : subtype*, subtype_1 : subtype, `subtype*` : subtype*, typeidx#350 : typeidx, x : idx, i : nat, typeidx#362 : typeidx, `X*#777` : subtype*, typeidx#374 : typeidx, i#4513 : nat, i#4503 : nat}: + `%|-%:%`(C, `REC`_rectype(`%`_list{`X*#764`}([subtype_1] ++ subtype*{subtype <- `subtype*`})), `OK`_oktypeidxnat{typeidx#350}(x, i)) + -- Subtype_ok2: `%|-%:%`(C, subtype_1, `OK`_oktypeidxnat{typeidx#362}(x, i)) + -- Rectype_ok2: `%|-%:%`(C, `REC`_rectype(`%`_list{`X*#777`}(subtype*{subtype <- `subtype*`})), `OK`_oktypeidxnat{typeidx#374}(`%`_typeidx{i#4513}((x!`%`_idx{i#4503}.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*`}))) + rule _{C : context, rectype#577 : rectype, n#541 : n, rectype : rectype, i : n, typeidx#386 : typeidx, x : idx, `X*#792` : subtype*, n : n, `subtype*` : subtype*}: + `%|-%:OK`(C, `_DEF`_deftype{rectype#577, n#541}(rectype, i)) + -- Rectype_ok: `%|-%:%`(C, rectype, `OK`_oktypeidx{typeidx#386}(x)) + -- if (rectype = `REC`_rectype(`%`_list{`X*#792`}(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*`}))) + rule struct{C : context, `X*#1124` : fieldtype*, `ft_1*` : fieldtype*, `ft'_1*` : fieldtype*, `X*#1137` : fieldtype*, `ft_2*` : fieldtype*}: + `%|-%<:%`(C, `STRUCT`_comptype(`%`_list{`X*#1124`}(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), `STRUCT`_comptype(`%`_list{`X*#1137`}(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)) + rule array{C : context, fieldtype#11 : fieldtype, ft_1 : fieldtype, fieldtype#13 : fieldtype, ft_2 : fieldtype}: + `%|-%<:%`(C, `ARRAY`_comptype{fieldtype#11}(ft_1), `ARRAY`_comptype{fieldtype#13}(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*`})) + rule func{C : context, resulttype#82 : resulttype, `X*#1152` : valtype*, `t_11*` : valtype*, `X*#1165` : valtype*, `t_12*` : valtype*, resulttype#85 : resulttype, `X*#1180` : valtype*, `t_21*` : valtype*, `X*#1193` : valtype*, `t_22*` : valtype*, `X*#1206` : valtype*, `X*#1219` : valtype*, `X*#1232` : valtype*, `X*#1245` : valtype*}: + `%|-%<:%`(C, `FUNC%->%`_comptype{resulttype#82}(`%`_resulttype{`X*#1152`}(t_11*{t_11 <- `t_11*`}), `%`_resulttype{`X*#1165`}(t_12*{t_12 <- `t_12*`})), `FUNC%->%`_comptype{resulttype#85}(`%`_resulttype{`X*#1180`}(t_21*{t_21 <- `t_21*`}), `%`_resulttype{`X*#1193`}(t_22*{t_22 <- `t_22*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype{`X*#1206`}(t_21*{t_21 <- `t_21*`}), `%`_resulttype{`X*#1219`}(t_11*{t_11 <- `t_11*`})) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype{`X*#1232`}(t_12*{t_12 <- `t_12*`}), `%`_resulttype{`X*#1245`}(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) @@ -2934,9 +114493,9 @@ relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) -- 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}: + rule super{C : context, deftype_1 : deftype, deftype_2 : deftype, `final?#437` : final?, `typeuse*#437` : typeuse*, comptype#437 : comptype, `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)) + -- if ($unrolldt(deftype_1) = `SUB`_subtype{`final?#437`, `typeuse*#437`, comptype#437}(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 @@ -2954,34 +114513,34 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 rule `eq-any`{C : context}: - `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) + `%|-%<:%`(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) + `%|-%<:%`(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) + `%|-%<:%`(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) + `%|-%<:%`(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*`}))) + rule struct{C : context, deftype : deftype, `X*#863` : fieldtype*, `fieldtype*` : fieldtype*}: + `%|-%<:%`(C, (deftype : deftype <: heaptype), `STRUCT`_heaptype) + -- Expand: `%~~%`(deftype, `STRUCT`_comptype(`%`_list{`X*#863`}(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)) + rule array{C : context, deftype : deftype, fieldtype#9 : fieldtype, fieldtype : fieldtype}: + `%|-%<:%`(C, (deftype : deftype <: heaptype), `ARRAY`_heaptype) + -- Expand: `%~~%`(deftype, `ARRAY`_comptype{fieldtype#9}(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*`}))) + rule func{C : context, deftype : deftype, resulttype#39 : resulttype, `X*#878` : valtype*, `t_1*` : valtype*, `X*#891` : valtype*, `t_2*` : valtype*}: + `%|-%<:%`(C, (deftype : deftype <: heaptype), `FUNC`_heaptype) + -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype{resulttype#39}(`%`_resulttype{`X*#878`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#891`}(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}: @@ -2989,54 +114548,54 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, 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) + rule `typeidx-l`{C : context, typeidx#388 : typeidx, typeidx : typeidx, heaptype : heaptype, `deftype*#17` : deftype*, i#4606 : nat}: + `%|-%<:%`(C, `_IDX`_heaptype{typeidx#388}(typeidx), heaptype) + -- Heaptype_sub: `%|-%<:%`(C, (C.`TYPES`_context{`deftype*#17`}[typeidx!`%`_typeidx{i#4606}.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)) + rule `typeidx-r`{C : context, heaptype : heaptype, typeidx#390 : typeidx, typeidx : typeidx, `deftype*#18` : deftype*, i#4628 : nat}: + `%|-%<:%`(C, heaptype, `_IDX`_heaptype{typeidx#390}(typeidx)) + -- Heaptype_sub: `%|-%<:%`(C, heaptype, (C.`TYPES`_context{`deftype*#18`}[typeidx!`%`_typeidx{i#4628}.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)) + rule rec{C : context, n#573 : n, i : n, `typeuse*` : typeuse*, j : nat, `subtype*#4` : subtype*, `final?#425` : final?, `typeuse*#425` : typeuse*, comptype#425 : comptype, `final?` : final?, ct : comptype}: + `%|-%<:%`(C, `REC`_heaptype{n#573}(i), (typeuse*{typeuse <- `typeuse*`}[j] : typeuse <: heaptype)) + -- if (C.`RECS`_context{`subtype*#4`}[i] = `SUB`_subtype{`final?#425`, `typeuse*#425`, comptype#425}(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) + `%|-%<:%`(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) + `%|-%<:%`(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) + `%|-%<:%`(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) + `%|-%<:%`(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) + `%|-%<:%`(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)) + rule nonnull{C : context, `null?#449` : null?, heaptype#451 : heaptype, ht_1 : heaptype, `null?#461` : null?, heaptype#463 : heaptype, ht_2 : heaptype}: + `%|-%<:%`(C, `REF`_reftype{`null?#449`, heaptype#451}(?(), ht_1), `REF`_reftype{`null?#461`, heaptype#463}(?(), 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)) + rule null{C : context, `null?#473` : null?, heaptype#475 : heaptype, ht_1 : heaptype, `null?#485` : null?, heaptype#487 : heaptype, ht_2 : heaptype}: + `%|-%<:%`(C, `REF`_reftype{`null?#473`, heaptype#475}(`NULL`_null?{}, ht_1), `REF`_reftype{`null?#485`, heaptype#487}(?(`NULL`_null), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 @@ -3058,13 +114617,13 @@ relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:110.1-111.22 rule bot{C : context, valtype : valtype}: - `%|-%<:%`(C, BOT_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*`})) + rule _{C : context, `X*#904` : valtype*, `t_1*` : valtype*, `X*#917` : valtype*, `t_2*` : valtype*}: + `%|-%<:%`(C, `%`_resulttype{`X*#904`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#917`}(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 @@ -3082,13 +114641,13 @@ relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) ;; ../../../../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)) + rule const{C : context, `mut?#371` : mut?, storagetype#195 : storagetype, zt_1 : storagetype, `mut?#377` : mut?, storagetype#201 : storagetype, zt_2 : storagetype}: + `%|-%<:%`(C, `%%`_fieldtype{`mut?#371`, storagetype#195}(?(), zt_1), `%%`_fieldtype{`mut?#377`, storagetype#201}(?(), 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)) + rule var{C : context, `mut?#389` : mut?, storagetype#213 : storagetype, zt_1 : storagetype, `mut?#401` : mut?, storagetype#225 : storagetype, zt_2 : storagetype}: + `%|-%<:%`(C, `%%`_fieldtype{`mut?#389`, storagetype#213}(?(`MUT`_mut), zt_1), `%%`_fieldtype{`mut?#401`, storagetype#225}(?(`MUT`_mut), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) } @@ -3096,11 +114655,11 @@ relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) ;; ../../../../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*`} + rule _{C : context, resulttype#27 : resulttype, `localidx*#47` : localidx*, `X*#478` : valtype*, `t_1*` : valtype*, `x*` : idx*, `X*#530` : valtype*, `t_2*` : valtype*, `X*#543` : valtype*, `X*#556` : valtype*, `i#4081*` : nat*, `lct*` : localtype*, `localtype*#2*` : localtype**}: + `%|-%:OK`(C, `%->_%%`_instrtype{resulttype#27, `localidx*#47`}(`%`_resulttype{`X*#478`}(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype{`X*#530`}(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype{`X*#543`}(t_1*{t_1 <- `t_1*`})) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype{`X*#556`}(t_2*{t_2 <- `t_2*`})) + -- (if (C.`LOCALS`_context{`localtype*#2`}[x!`%`_idx{i#4081}.0] = lct))*{i#4081 <- `i#4081*`, lct <- `lct*`, `localtype*#2` <- `localtype*#2*`, x <- `x*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand_use: `%~~_%%`(typeuse, context, comptype) @@ -3110,97 +114669,97 @@ relation Expand_use: `%~~_%%`(typeuse, context, 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) + rule typeidx{typeidx#220 : typeidx, typeidx : typeidx, C : context, comptype : comptype, `deftype*#11` : deftype*, i#4103 : nat}: + `%~~_%%`(`_IDX`_typeuse{typeidx#220}(typeidx), C, comptype) + -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#11`}[typeidx!`%`_typeidx{i#4103}.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) + rule _{C : context, u64#48 : u64, `u64?#47` : u64?, i#4549 : nat, n : n, `i#4584?` : nat?, `m?` : m?, k : nat}: + `%|-%:%`(C, `[%..%]`_limits{u64#48, `u64?#47`}(`%`_u64{i#4549}(n), `%`_u64{i#4584}(m)?{i#4584 <- `i#4584?`, 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*}: + rule _{C : context, typeuse : typeuse, resulttype#33 : resulttype, `X*#807` : valtype*, `t_1*` : valtype*, `X*#820` : 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*`}))) + -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype{resulttype#33}(`%`_resulttype{`X*#807`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#820`}(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)) + rule _{C : context, `mut?#333` : mut?, valtype#247 : valtype, t : valtype}: + `%|-%:OK`(C, `%%`_globaltype{`mut?#333`, valtype#247}(`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)) + rule _{C : context, addrtype#297 : addrtype, limits#297 : limits, addrtype : addrtype, limits : limits}: + `%|-%:OK`(C, `%%PAGE`_memtype{addrtype#297, limits#297}(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)) + rule _{C : context, addrtype#309 : addrtype, limits#309 : limits, reftype#311 : reftype, addrtype : addrtype, limits : limits, reftype : reftype}: + `%|-%:OK`(C, `%%%`_tabletype{addrtype#309, limits#309, reftype#311}(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)) + rule tag{C : context, tagtype#89 : tagtype, tagtype : tagtype}: + `%|-%:OK`(C, `TAG`_externtype{tagtype#89}(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)) + rule global{C : context, globaltype#101 : globaltype, globaltype : globaltype}: + `%|-%:OK`(C, `GLOBAL`_externtype{globaltype#101}(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)) + rule mem{C : context, memtype#113 : memtype, memtype : memtype}: + `%|-%:OK`(C, `MEM`_externtype{memtype#113}(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)) + rule table{C : context, tabletype#127 : tabletype, tabletype : tabletype}: + `%|-%:OK`(C, `TABLE`_externtype{tabletype#127}(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)) + rule func{C : context, typeuse#17 : typeuse, typeuse : typeuse, resulttype#36 : resulttype, `X*#835` : valtype*, `t_1*` : valtype*, `X*#848` : valtype*, `t_2*` : valtype*}: + `%|-%:OK`(C, `FUNC`_externtype{typeuse#17}(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*`}))) + -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype{resulttype#36}(`%`_resulttype{`X*#835`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#848`}(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*`})) + rule _{C : context, resulttype#59 : resulttype, `localidx*#59` : localidx*, `X*#930` : valtype*, `t_11*` : valtype*, `x_1*` : idx*, `X*#982` : valtype*, `t_12*` : valtype*, resulttype#79 : resulttype, `localidx*#71` : localidx*, `X*#995` : valtype*, `t_21*` : valtype*, `x_2*` : idx*, `X*#1047` : valtype*, `t_22*` : valtype*, `X*#1060` : valtype*, `X*#1073` : valtype*, `X*#1086` : valtype*, `X*#1099` : valtype*, `x*` : idx*, `i#4865*` : nat*, `init#65*` : init*, `localtype*#4*` : localtype**, `t*` : valtype*, `valtype#271*` : valtype*}: + `%|-%<:%`(C, `%->_%%`_instrtype{resulttype#59, `localidx*#59`}(`%`_resulttype{`X*#930`}(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype{`X*#982`}(t_12*{t_12 <- `t_12*`})), `%->_%%`_instrtype{resulttype#79, `localidx*#71`}(`%`_resulttype{`X*#995`}(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype{`X*#1047`}(t_22*{t_22 <- `t_22*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype{`X*#1060`}(t_21*{t_21 <- `t_21*`}), `%`_resulttype{`X*#1073`}(t_11*{t_11 <- `t_11*`})) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype{`X*#1086`}(t_12*{t_12 <- `t_12*`}), `%`_resulttype{`X*#1099`}(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*`} + -- (if (C.`LOCALS`_context{`localtype*#4`}[x!`%`_idx{i#4865}.0] = `%%`_localtype{init#65, valtype#271}(`SET`_init, t)))*{i#4865 <- `i#4865*`, init#65 <- `init#65*`, `localtype*#4` <- `localtype*#4*`, t <- `t*`, valtype#271 <- `valtype#271*`, 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?`})) + rule max{C : context, u64#84 : u64, `u64?#83` : u64?, i#4887 : nat, n_1 : n, i#4909 : nat, m_1 : m, u64#96 : u64, `u64?#95` : u64?, i#4931 : nat, n_2 : n, `i#4966?` : nat?, `m_2?` : m?}: + `%|-%<:%`(C, `[%..%]`_limits{u64#84, `u64?#83`}(`%`_u64{i#4887}(n_1), ?(`%`_u64{i#4909}(m_1))), `[%..%]`_limits{u64#96, `u64?#95`}(`%`_u64{i#4931}(n_2), `%`_u64{i#4966}(m_2)?{i#4966 <- `i#4966?`, 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), ?())) + rule eps{C : context, u64#108 : u64, `u64?#107` : u64?, i#4988 : nat, n_1 : n, u64#120 : u64, `u64?#119` : u64?, i#5010 : nat, n_2 : n}: + `%|-%<:%`(C, `[%..%]`_limits{u64#108, `u64?#107`}(`%`_u64{i#4988}(n_1), ?()), `[%..%]`_limits{u64#120, `u64?#119`}(`%`_u64{i#5010}(n_2), ?())) -- if (n_1 >= n_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -3214,28 +114773,28 @@ relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) ;; ../../../../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)) + rule const{C : context, `mut?#501` : mut?, valtype#277 : valtype, valtype_1 : valtype, `mut?#507` : mut?, valtype#283 : valtype, valtype_2 : valtype}: + `%|-%<:%`(C, `%%`_globaltype{`mut?#501`, valtype#277}(?(), valtype_1), `%%`_globaltype{`mut?#507`, valtype#283}(?(), 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)) + rule var{C : context, `mut?#519` : mut?, valtype#295 : valtype, valtype_1 : valtype, `mut?#531` : mut?, valtype#307 : valtype, valtype_2 : valtype}: + `%|-%<:%`(C, `%%`_globaltype{`mut?#519`, valtype#295}(?(`MUT`_mut), valtype_1), `%%`_globaltype{`mut?#531`, valtype#307}(?(`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)) + rule _{C : context, addrtype#345 : addrtype, limits#345 : limits, addrtype : addrtype, limits_1 : limits, addrtype#357 : addrtype, limits#357 : limits, limits_2 : limits}: + `%|-%<:%`(C, `%%PAGE`_memtype{addrtype#345, limits#345}(addrtype, limits_1), `%%PAGE`_memtype{addrtype#357, limits#357}(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)) + rule _{C : context, addrtype#369 : addrtype, limits#369 : limits, reftype#335 : reftype, addrtype : addrtype, limits_1 : limits, reftype_1 : reftype, addrtype#381 : addrtype, limits#381 : limits, reftype#347 : reftype, limits_2 : limits, reftype_2 : reftype}: + `%|-%<:%`(C, `%%%`_tabletype{addrtype#369, limits#369, reftype#335}(addrtype, limits_1, reftype_1), `%%%`_tabletype{addrtype#381, limits#381, reftype#347}(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) @@ -3243,78 +114802,78 @@ relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) ;; ../../../../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)) + rule tag{C : context, tagtype#91 : tagtype, tagtype_1 : tagtype, tagtype#93 : tagtype, tagtype_2 : tagtype}: + `%|-%<:%`(C, `TAG`_externtype{tagtype#91}(tagtype_1), `TAG`_externtype{tagtype#93}(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)) + rule global{C : context, globaltype#103 : globaltype, globaltype_1 : globaltype, globaltype#105 : globaltype, globaltype_2 : globaltype}: + `%|-%<:%`(C, `GLOBAL`_externtype{globaltype#103}(globaltype_1), `GLOBAL`_externtype{globaltype#105}(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)) + rule mem{C : context, memtype#115 : memtype, memtype_1 : memtype, memtype#117 : memtype, memtype_2 : memtype}: + `%|-%<:%`(C, `MEM`_externtype{memtype#115}(memtype_1), `MEM`_externtype{memtype#117}(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)) + rule table{C : context, tabletype#129 : tabletype, tabletype_1 : tabletype, tabletype#131 : tabletype, tabletype_2 : tabletype}: + `%|-%<:%`(C, `TABLE`_externtype{tabletype#129}(tabletype_1), `TABLE`_externtype{tabletype#131}(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))) + rule func{C : context, typeuse#19 : typeuse, deftype_1 : deftype, typeuse#21 : typeuse, deftype_2 : deftype}: + `%|-%<:%`(C, `FUNC`_externtype{typeuse#19}((deftype_1 : deftype <: typeuse)), `FUNC`_externtype{typeuse#21}((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?`})))) + rule valtype{C : context, `valtype?#3` : valtype?, `valtype?` : valtype?, resulttype#225 : resulttype, `localidx*#155` : localidx*, `X*#1681` : valtype*, `X*#1730` : valtype*}: + `%|-%:%`(C, `_RESULT`_blocktype{`valtype?#3`}(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype{resulttype#225, `localidx*#155`}(`%`_resulttype{`X*#1681`}([]), [], `%`_resulttype{`X*#1730`}(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*`}))) + rule typeidx{C : context, typeidx#392 : typeidx, typeidx : typeidx, resulttype#245 : resulttype, `localidx*#167` : localidx*, `X*#1741` : valtype*, `t_1*` : valtype*, `X*#1792` : valtype*, `t_2*` : valtype*, `deftype*#19` : deftype*, i#5032 : nat, resulttype#248 : resulttype, `X*#1805` : valtype*, `X*#1818` : valtype*}: + `%|-%:%`(C, `_IDX`_blocktype{typeidx#392}(typeidx), `%->_%%`_instrtype{resulttype#245, `localidx*#167`}(`%`_resulttype{`X*#1741`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#1792`}(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#19`}[typeidx!`%`_typeidx{i#5032}.0], `FUNC%->%`_comptype{resulttype#248}(`%`_resulttype{`X*#1805`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#1818`}(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]) + rule catch{C : context, tagidx#5 : tagidx, labelidx#29 : labelidx, x : idx, l : labelidx, `tagtype*#8` : tagtype*, i#5946 : nat, resulttype#1012 : resulttype, `X*#5029` : valtype*, `t*` : valtype*, `X*#5052` : valtype*, `X*#5063` : valtype*, `resulttype*#18` : resulttype*, i#5956 : nat}: + `%|-%:OK`(C, `CATCH`_catch{tagidx#5, labelidx#29}(x, l)) + -- Expand: `%~~%`($as_deftype(C.`TAGS`_context{`tagtype*#8`}[x!`%`_idx{i#5946}.0]), `FUNC%->%`_comptype{resulttype#1012}(`%`_resulttype{`X*#5029`}(t*{t <- `t*`}), `%`_resulttype{`X*#5052`}([]))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype{`X*#5063`}(t*{t <- `t*`}), C.`LABELS`_context{`resulttype*#18`}[l!`%`_labelidx{i#5956}.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]) + rule catch_ref{C : context, tagidx#7 : tagidx, labelidx#31 : labelidx, x : idx, l : labelidx, `tagtype*#9` : tagtype*, i#5992 : nat, resulttype#1015 : resulttype, `X*#5088` : valtype*, `t*` : valtype*, `X*#5111` : valtype*, `X*#5132` : valtype*, `null?#717` : null?, heaptype#719 : heaptype, `resulttype*#19` : resulttype*, i#6002 : nat}: + `%|-%:OK`(C, `CATCH_REF`_catch{tagidx#7, labelidx#31}(x, l)) + -- Expand: `%~~%`($as_deftype(C.`TAGS`_context{`tagtype*#9`}[x!`%`_idx{i#5992}.0]), `FUNC%->%`_comptype{resulttype#1015}(`%`_resulttype{`X*#5088`}(t*{t <- `t*`}), `%`_resulttype{`X*#5111`}([]))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype{`X*#5132`}(t*{t <- `t*`} ++ [`REF`_valtype{`null?#717`, heaptype#719}(?(), `EXN`_heaptype)]), C.`LABELS`_context{`resulttype*#19`}[l!`%`_labelidx{i#6002}.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]) + rule catch_all{C : context, labelidx#33 : labelidx, l : labelidx, `X*#5163` : valtype*, `resulttype*#20` : resulttype*, i#6024 : nat}: + `%|-%:OK`(C, `CATCH_ALL`_catch{labelidx#33}(l)) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype{`X*#5163`}([]), C.`LABELS`_context{`resulttype*#20`}[l!`%`_labelidx{i#6024}.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]) + rule catch_all_ref{C : context, labelidx#35 : labelidx, l : labelidx, `X*#5194` : valtype*, `null?#719` : null?, heaptype#721 : heaptype, `resulttype*#21` : resulttype*, i#6046 : nat}: + `%|-%:OK`(C, `CATCH_ALL_REF`_catch{labelidx#35}(l)) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype{`X*#5194`}([`REF`_valtype{`null?#719`, heaptype#721}(?(), `EXN`_heaptype)]), C.`LABELS`_context{`resulttype*#21`}[l!`%`_labelidx{i#6046}.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 : Inn <: valtype)) = ?(CONST_val((Inn : Inn <: numtype), `%`_num_(0))) + def $default_{Inn : Inn, numtype#37 : numtype, i#31659 : nat}((Inn : Inn <: valtype)) = ?(`CONST`_val{numtype#37}((Inn : Inn <: numtype), `%`_num_{i#31659}(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))))) + def $default_{Fnn : Fnn, numtype#39 : numtype}((Fnn : Fnn <: valtype)) = ?(`CONST`_val{numtype#39}((Fnn : Fnn <: numtype), $fzero($size((Fnn : Fnn <: numtype))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{Vnn : Vnn}((Vnn : Vnn <: valtype)) = ?(VCONST_val(Vnn, `%`_vec_(0))) + def $default_{Vnn : Vnn, vectype#42 : vectype, i#31681 : nat}((Vnn : Vnn <: valtype)) = ?(`VCONST`_val{vectype#42}(Vnn, `%`_vec_{i#31681}(0))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(REF.NULL_val(ht)) + def $default_{`null?#1037` : null?, heaptype#1043 : heaptype, ht : heaptype, heaptype#1045 : heaptype}(`REF`_valtype{`null?#1037`, heaptype#1043}(?(`NULL`_null), ht)) = ?(`REF.NULL`_val{heaptype#1045}(ht)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() + def $default_{`null?#1039` : null?, heaptype#1047 : heaptype, ht : heaptype}(`REF`_valtype{`null?#1039`, heaptype#1047}(?(), ht)) = ?() ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Defaultable: `|-%DEFAULTABLE`(valtype) @@ -3326,8 +114885,8 @@ relation Defaultable: `|-%DEFAULTABLE`(valtype) ;; ../../../../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) + rule _{u32#14 : u32, i#7729 : nat, n : n, u64#230 : u64, i#7751 : nat, m : m, at : addrtype, N : N}: + `|-%:%->%`({`ALIGN`{u32#14} `%`_u32{i#7729}(n), `OFFSET`{u64#230} `%`_u64{i#7751}(m)}, at, N) -- if (((2 ^ n) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) -- if (m < (2 ^ $size((at : addrtype <: numtype)))) @@ -3342,610 +114901,610 @@ 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([]))) + rule nop{C : context, resulttype#105 : resulttype, `localidx*#83` : localidx*, `X*#1268` : valtype*, `X*#1317` : valtype*}: + `%|-%:%`(C, `NOP`_instr, `%->_%%`_instrtype{resulttype#105, `localidx*#83`}(`%`_resulttype{`X*#1268`}([]), [], `%`_resulttype{`X*#1317`}([]))) ;; ../../../../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*`}))) + rule unreachable{C : context, resulttype#125 : resulttype, `localidx*#95` : localidx*, `X*#1328` : valtype*, `t_1*` : valtype*, `X*#1379` : valtype*, `t_2*` : valtype*, resulttype#145 : resulttype, `localidx*#107` : localidx*, `X*#1390` : valtype*, `X*#1441` : valtype*}: + `%|-%:%`(C, `UNREACHABLE`_instr, `%->_%%`_instrtype{resulttype#125, `localidx*#95`}(`%`_resulttype{`X*#1328`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#1379`}(t_2*{t_2 <- `t_2*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype{resulttype#145, `localidx*#107`}(`%`_resulttype{`X*#1390`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#1441`}(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([]))) + rule drop{C : context, resulttype#165 : resulttype, `localidx*#119` : localidx*, `X*#1452` : valtype*, t : valtype, `X*#1520` : valtype*}: + `%|-%:%`(C, `DROP`_instr, `%->_%%`_instrtype{resulttype#165, `localidx*#119`}(`%`_resulttype{`X*#1452`}([t]), [], `%`_resulttype{`X*#1520`}([]))) -- 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]))) + rule `select-expl`{C : context, `valtype*?#3` : valtype*?, t : valtype, resulttype#185 : resulttype, `localidx*#131` : localidx*, `X*#1541` : valtype*, `X*#1590` : valtype*}: + `%|-%:%`(C, `SELECT`_instr{`valtype*?#3`}(?([t])), `%->_%%`_instrtype{resulttype#185, `localidx*#131`}(`%`_resulttype{`X*#1541`}([t t `I32`_valtype]), [], `%`_resulttype{`X*#1590`}([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]))) + rule `select-impl`{C : context, `valtype*?#5` : valtype*?, resulttype#205 : resulttype, `localidx*#143` : localidx*, `X*#1611` : valtype*, t : valtype, `X*#1660` : valtype*, t' : valtype, numtype : numtype, vectype : vectype}: + `%|-%:%`(C, `SELECT`_instr{`valtype*?#5`}(?()), `%->_%%`_instrtype{resulttype#205, `localidx*#143`}(`%`_resulttype{`X*#1611`}([t t `I32`_valtype]), [], `%`_resulttype{`X*#1660`}([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*`}))) + rule block{C : context, blocktype#7 : blocktype, `instr*#8` : instr*, bt : blocktype, `instr*` : instr*, resulttype#268 : resulttype, `localidx*#179` : localidx*, `X*#1831` : valtype*, `t_1*` : valtype*, `X*#1882` : valtype*, `t_2*` : valtype*, resulttype#288 : resulttype, `localidx*#191` : localidx*, `X*#1893` : valtype*, `X*#1944` : valtype*, `deftype*#20` : deftype*, `subtype*#5` : subtype*, `tagtype*#2` : tagtype*, `globaltype*#2` : globaltype*, `memtype*#2` : memtype*, `tabletype*#2` : tabletype*, `deftype*#21` : deftype*, `datatype*#2` : datatype*, `elemtype*#2` : elemtype*, `localtype*#5` : localtype*, `resulttype*#2` : resulttype*, `X*#1955` : valtype*, `resulttype?#2` : resulttype?, `funcidx*#40` : funcidx*, resulttype#308 : resulttype, `localidx*#203` : localidx*, `X*#1968` : valtype*, `x*` : idx*, `X*#2020` : valtype*}: + `%|-%:%`(C, `BLOCK`_instr{blocktype#7, `instr*#8`}(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype{resulttype#268, `localidx*#179`}(`%`_resulttype{`X*#1831`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#1882`}(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype{resulttype#288, `localidx*#191`}(`%`_resulttype{`X*#1893`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#1944`}(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({`TYPES`{`deftype*#20`} [], `RECS`{`subtype*#5`} [], `TAGS`{`tagtype*#2`} [], `GLOBALS`{`globaltype*#2`} [], `MEMS`{`memtype*#2`} [], `TABLES`{`tabletype*#2`} [], `FUNCS`{`deftype*#21`} [], `DATAS`{`datatype*#2`} [], `ELEMS`{`elemtype*#2`} [], `LOCALS`{`localtype*#5`} [], `LABELS`{`resulttype*#2`} [`%`_resulttype{`X*#1955`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#2`} ?(), `REFS`{`funcidx*#40`} []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype{resulttype#308, `localidx*#203`}(`%`_resulttype{`X*#1968`}(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype{`X*#2020`}(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*`}))) + rule loop{C : context, blocktype#9 : blocktype, `instr*#10` : instr*, bt : blocktype, `instr*` : instr*, resulttype#328 : resulttype, `localidx*#215` : localidx*, `X*#2033` : valtype*, `t_1*` : valtype*, `X*#2084` : valtype*, `t_2*` : valtype*, resulttype#348 : resulttype, `localidx*#227` : localidx*, `X*#2095` : valtype*, `X*#2146` : valtype*, `deftype*#22` : deftype*, `subtype*#6` : subtype*, `tagtype*#3` : tagtype*, `globaltype*#3` : globaltype*, `memtype*#3` : memtype*, `tabletype*#3` : tabletype*, `deftype*#23` : deftype*, `datatype*#3` : datatype*, `elemtype*#3` : elemtype*, `localtype*#6` : localtype*, `resulttype*#3` : resulttype*, `X*#2157` : valtype*, `resulttype?#3` : resulttype?, `funcidx*#41` : funcidx*, resulttype#368 : resulttype, `localidx*#239` : localidx*, `X*#2170` : valtype*, `x*` : idx*, `X*#2222` : valtype*}: + `%|-%:%`(C, `LOOP`_instr{blocktype#9, `instr*#10`}(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype{resulttype#328, `localidx*#215`}(`%`_resulttype{`X*#2033`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#2084`}(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype{resulttype#348, `localidx*#227`}(`%`_resulttype{`X*#2095`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#2146`}(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({`TYPES`{`deftype*#22`} [], `RECS`{`subtype*#6`} [], `TAGS`{`tagtype*#3`} [], `GLOBALS`{`globaltype*#3`} [], `MEMS`{`memtype*#3`} [], `TABLES`{`tabletype*#3`} [], `FUNCS`{`deftype*#23`} [], `DATAS`{`datatype*#3`} [], `ELEMS`{`elemtype*#3`} [], `LOCALS`{`localtype*#6`} [], `LABELS`{`resulttype*#3`} [`%`_resulttype{`X*#2157`}(t_1*{t_1 <- `t_1*`})], `RETURN`{`resulttype?#3`} ?(), `REFS`{`funcidx*#41`} []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype{resulttype#368, `localidx*#239`}(`%`_resulttype{`X*#2170`}(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype{`X*#2222`}(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*`}))) + rule if{C : context, blocktype#11 : blocktype, `instr*#12` : instr*, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, resulttype#388 : resulttype, `localidx*#251` : localidx*, `X*#2245` : valtype*, `t_1*` : valtype*, `X*#2294` : valtype*, `t_2*` : valtype*, resulttype#408 : resulttype, `localidx*#263` : localidx*, `X*#2305` : valtype*, `X*#2356` : valtype*, `deftype*#24` : deftype*, `subtype*#7` : subtype*, `tagtype*#4` : tagtype*, `globaltype*#4` : globaltype*, `memtype*#4` : memtype*, `tabletype*#4` : tabletype*, `deftype*#25` : deftype*, `datatype*#4` : datatype*, `elemtype*#4` : elemtype*, `localtype*#7` : localtype*, `resulttype*#4` : resulttype*, `X*#2367` : valtype*, `resulttype?#4` : resulttype?, `funcidx*#42` : funcidx*, resulttype#428 : resulttype, `localidx*#275` : localidx*, `X*#2380` : valtype*, `x_1*` : idx*, `X*#2432` : valtype*, `deftype*#26` : deftype*, `subtype*#8` : subtype*, `tagtype*#5` : tagtype*, `globaltype*#5` : globaltype*, `memtype*#5` : memtype*, `tabletype*#5` : tabletype*, `deftype*#27` : deftype*, `datatype*#5` : datatype*, `elemtype*#5` : elemtype*, `localtype*#8` : localtype*, `resulttype*#5` : resulttype*, `X*#2445` : valtype*, `resulttype?#5` : resulttype?, `funcidx*#43` : funcidx*, resulttype#448 : resulttype, `localidx*#287` : localidx*, `X*#2458` : valtype*, `x_2*` : idx*, `X*#2510` : valtype*}: + `%|-%:%`(C, `IF%%ELSE%`_instr{blocktype#11, `instr*#12`}(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), `%->_%%`_instrtype{resulttype#388, `localidx*#251`}(`%`_resulttype{`X*#2245`}(t_1*{t_1 <- `t_1*`} ++ [`I32`_valtype]), [], `%`_resulttype{`X*#2294`}(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype{resulttype#408, `localidx*#263`}(`%`_resulttype{`X*#2305`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#2356`}(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({`TYPES`{`deftype*#24`} [], `RECS`{`subtype*#7`} [], `TAGS`{`tagtype*#4`} [], `GLOBALS`{`globaltype*#4`} [], `MEMS`{`memtype*#4`} [], `TABLES`{`tabletype*#4`} [], `FUNCS`{`deftype*#25`} [], `DATAS`{`datatype*#4`} [], `ELEMS`{`elemtype*#4`} [], `LOCALS`{`localtype*#7`} [], `LABELS`{`resulttype*#4`} [`%`_resulttype{`X*#2367`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#4`} ?(), `REFS`{`funcidx*#42`} []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype{resulttype#428, `localidx*#275`}(`%`_resulttype{`X*#2380`}(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype{`X*#2432`}(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({`TYPES`{`deftype*#26`} [], `RECS`{`subtype*#8`} [], `TAGS`{`tagtype*#5`} [], `GLOBALS`{`globaltype*#5`} [], `MEMS`{`memtype*#5`} [], `TABLES`{`tabletype*#5`} [], `FUNCS`{`deftype*#27`} [], `DATAS`{`datatype*#5`} [], `ELEMS`{`elemtype*#5`} [], `LOCALS`{`localtype*#8`} [], `LABELS`{`resulttype*#5`} [`%`_resulttype{`X*#2445`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#5`} ?(), `REFS`{`funcidx*#43`} []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype{resulttype#448, `localidx*#287`}(`%`_resulttype{`X*#2458`}(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype{`X*#2510`}(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*`}))) + rule br{C : context, labelidx#15 : labelidx, l : labelidx, resulttype#468 : resulttype, `localidx*#299` : localidx*, `X*#2533` : valtype*, `t_1*` : valtype*, `t*` : valtype*, `X*#2582` : valtype*, `t_2*` : valtype*, `resulttype*#7` : resulttype*, i#5368 : nat, `X*#2627` : valtype*, resulttype#488 : resulttype, `localidx*#311` : localidx*, `X*#2637` : valtype*, `X*#2688` : valtype*}: + `%|-%:%`(C, `BR`_instr{labelidx#15}(l), `%->_%%`_instrtype{resulttype#468, `localidx*#299`}(`%`_resulttype{`X*#2533`}(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype{`X*#2582`}(t_2*{t_2 <- `t_2*`}))) + -- if (C.`LABELS`_context{`resulttype*#7`}[l!`%`_labelidx{i#5368}.0]!`%`_resulttype{`X*#2627`}.0 = t*{t <- `t*`}) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype{resulttype#488, `localidx*#311`}(`%`_resulttype{`X*#2637`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#2688`}(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*`}) + rule br_if{C : context, labelidx#17 : labelidx, l : labelidx, resulttype#508 : resulttype, `localidx*#323` : localidx*, `X*#2709` : valtype*, `t*` : valtype*, `X*#2758` : valtype*, `resulttype*#9` : resulttype*, i#5400 : nat, `X*#2803` : valtype*}: + `%|-%:%`(C, `BR_IF`_instr{labelidx#17}(l), `%->_%%`_instrtype{resulttype#508, `localidx*#323`}(`%`_resulttype{`X*#2709`}(t*{t <- `t*`} ++ [`I32`_valtype]), [], `%`_resulttype{`X*#2758`}(t*{t <- `t*`}))) + -- if (C.`LABELS`_context{`resulttype*#9`}[l!`%`_labelidx{i#5400}.0]!`%`_resulttype{`X*#2803`}.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*`}))) + rule br_table{C : context, `labelidx*#48` : labelidx*, labelidx#19 : labelidx, `l*` : labelidx*, l' : labelidx, resulttype#528 : resulttype, `localidx*#335` : localidx*, `X*#2823` : valtype*, `t_1*` : valtype*, `t*` : valtype*, `X*#2872` : valtype*, `t_2*` : valtype*, `X*#2883*` : valtype**, `i#5482*` : nat*, `resulttype*#10*` : resulttype**, `X*#2906` : valtype*, `resulttype*#11` : resulttype*, i#5492 : nat, resulttype#548 : resulttype, `localidx*#347` : localidx*, `X*#2939` : valtype*, `X*#2988` : valtype*}: + `%|-%:%`(C, `BR_TABLE`_instr{`labelidx*#48`, labelidx#19}(l*{l <- `l*`}, l'), `%->_%%`_instrtype{resulttype#528, `localidx*#335`}(`%`_resulttype{`X*#2823`}(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [`I32`_valtype]), [], `%`_resulttype{`X*#2872`}(t_2*{t_2 <- `t_2*`}))) + -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype{`X*#2883`}(t*{t <- `t*`}), C.`LABELS`_context{`resulttype*#10`}[l!`%`_labelidx{i#5482}.0]))*{`X*#2883` <- `X*#2883*`, i#5482 <- `i#5482*`, l <- `l*`, `resulttype*#10` <- `resulttype*#10*`} + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype{`X*#2906`}(t*{t <- `t*`}), C.`LABELS`_context{`resulttype*#11`}[l'!`%`_labelidx{i#5492}.0]) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype{resulttype#548, `localidx*#347`}(`%`_resulttype{`X*#2939`}(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [`I32`_valtype]), [], `%`_resulttype{`X*#2988`}(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*`}) + rule br_on_null{C : context, labelidx#21 : labelidx, l : labelidx, resulttype#568 : resulttype, `localidx*#359` : localidx*, `X*#3009` : valtype*, `t*` : valtype*, `null?#535` : null?, heaptype#537 : heaptype, ht : heaptype, `X*#3058` : valtype*, `null?#537` : null?, heaptype#539 : heaptype, `resulttype*#13` : resulttype*, i#5524 : nat, `X*#3103` : valtype*}: + `%|-%:%`(C, `BR_ON_NULL`_instr{labelidx#21}(l), `%->_%%`_instrtype{resulttype#568, `localidx*#359`}(`%`_resulttype{`X*#3009`}(t*{t <- `t*`} ++ [`REF`_valtype{`null?#535`, heaptype#537}(?(`NULL`_null), ht)]), [], `%`_resulttype{`X*#3058`}(t*{t <- `t*`} ++ [`REF`_valtype{`null?#537`, heaptype#539}(?(), ht)]))) + -- if (C.`LABELS`_context{`resulttype*#13`}[l!`%`_labelidx{i#5524}.0]!`%`_resulttype{`X*#3103`}.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)])) + rule br_on_non_null{C : context, labelidx#23 : labelidx, l : labelidx, resulttype#588 : resulttype, `localidx*#371` : localidx*, `X*#3123` : valtype*, `t*` : valtype*, `null?#539` : null?, heaptype#541 : heaptype, ht : heaptype, `X*#3172` : valtype*, `resulttype*#14` : resulttype*, i#5546 : nat, `X*#3193` : valtype*, `null?#541` : null?, heaptype#543 : heaptype}: + `%|-%:%`(C, `BR_ON_NON_NULL`_instr{labelidx#23}(l), `%->_%%`_instrtype{resulttype#588, `localidx*#371`}(`%`_resulttype{`X*#3123`}(t*{t <- `t*`} ++ [`REF`_valtype{`null?#539`, heaptype#541}(?(`NULL`_null), ht)]), [], `%`_resulttype{`X*#3172`}(t*{t <- `t*`}))) + -- if (C.`LABELS`_context{`resulttype*#14`}[l!`%`_labelidx{i#5546}.0] = `%`_resulttype{`X*#3193`}(t*{t <- `t*`} ++ [`REF`_valtype{`null?#541`, heaptype#543}(`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)])) + rule br_on_cast{C : context, labelidx#25 : labelidx, reftype#373 : reftype, l : labelidx, rt_1 : reftype, rt_2 : reftype, resulttype#608 : resulttype, `localidx*#383` : localidx*, `X*#3214` : valtype*, `t*` : valtype*, `X*#3263` : valtype*, `resulttype*#15` : resulttype*, i#5568 : nat, `X*#3284` : valtype*, rt : reftype}: + `%|-%:%`(C, `BR_ON_CAST`_instr{labelidx#25, reftype#373}(l, rt_1, rt_2), `%->_%%`_instrtype{resulttype#608, `localidx*#383`}(`%`_resulttype{`X*#3214`}(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype{`X*#3263`}(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) + -- if (C.`LABELS`_context{`resulttype*#15`}[l!`%`_labelidx{i#5568}.0] = `%`_resulttype{`X*#3284`}(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)])) + rule br_on_cast_fail{C : context, labelidx#27 : labelidx, reftype#376 : reftype, l : labelidx, rt_1 : reftype, rt_2 : reftype, resulttype#628 : resulttype, `localidx*#395` : localidx*, `X*#3305` : valtype*, `t*` : valtype*, `X*#3354` : valtype*, `resulttype*#16` : resulttype*, i#5590 : nat, `X*#3375` : valtype*, rt : reftype}: + `%|-%:%`(C, `BR_ON_CAST_FAIL`_instr{labelidx#27, reftype#376}(l, rt_1, rt_2), `%->_%%`_instrtype{resulttype#628, `localidx*#395`}(`%`_resulttype{`X*#3305`}(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype{`X*#3354`}(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) + -- if (C.`LABELS`_context{`resulttype*#16`}[l!`%`_labelidx{i#5590}.0] = `%`_resulttype{`X*#3375`}(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*`}))) + rule call{C : context, funcidx#177 : funcidx, x : idx, resulttype#648 : resulttype, `localidx*#407` : localidx*, `X*#3386` : valtype*, `t_1*` : valtype*, `X*#3437` : valtype*, `t_2*` : valtype*, `deftype*#28` : deftype*, i#5614 : nat, resulttype#651 : resulttype, `X*#3450` : valtype*, `X*#3463` : valtype*}: + `%|-%:%`(C, `CALL`_instr{funcidx#177}(x), `%->_%%`_instrtype{resulttype#648, `localidx*#407`}(`%`_resulttype{`X*#3386`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#3437`}(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(C.`FUNCS`_context{`deftype*#28`}[x!`%`_idx{i#5614}.0], `FUNC%->%`_comptype{resulttype#651}(`%`_resulttype{`X*#3450`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#3463`}(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*`}))) + rule call_ref{C : context, typeuse#23 : typeuse, typeidx#394 : typeidx, x : idx, resulttype#671 : resulttype, `localidx*#419` : localidx*, `X*#3486` : valtype*, `t_1*` : valtype*, `null?#663` : null?, heaptype#665 : heaptype, typeidx#396 : typeidx, `X*#3535` : valtype*, `t_2*` : valtype*, `deftype*#29` : deftype*, i#5652 : nat, resulttype#674 : resulttype, `X*#3548` : valtype*, `X*#3561` : valtype*}: + `%|-%:%`(C, `CALL_REF`_instr{typeuse#23}(`_IDX`_typeuse{typeidx#394}(x)), `%->_%%`_instrtype{resulttype#671, `localidx*#419`}(`%`_resulttype{`X*#3486`}(t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype{`null?#663`, heaptype#665}(?(`NULL`_null), `_IDX`_heaptype{typeidx#396}(x))]), [], `%`_resulttype{`X*#3535`}(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#29`}[x!`%`_idx{i#5652}.0], `FUNC%->%`_comptype{resulttype#674}(`%`_resulttype{`X*#3548`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#3561`}(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*`}))) + rule call_indirect{C : context, tableidx#26 : tableidx, typeuse#25 : typeuse, x : idx, typeidx#398 : typeidx, y : idx, resulttype#694 : resulttype, `localidx*#431` : localidx*, `X*#3584` : valtype*, `t_1*` : valtype*, at : addrtype, `X*#3633` : valtype*, `t_2*` : valtype*, `tabletype*#6` : tabletype*, i#5690 : nat, addrtype#441 : addrtype, limits#441 : limits, reftype#389 : reftype, lim : limits, rt : reftype, `null?#687` : null?, heaptype#689 : heaptype, `deftype*#30` : deftype*, i#5700 : nat, resulttype#697 : resulttype, `X*#3646` : valtype*, `X*#3659` : valtype*}: + `%|-%:%`(C, `CALL_INDIRECT`_instr{tableidx#26, typeuse#25}(x, `_IDX`_typeuse{typeidx#398}(y)), `%->_%%`_instrtype{resulttype#694, `localidx*#431`}(`%`_resulttype{`X*#3584`}(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#3633`}(t_2*{t_2 <- `t_2*`}))) + -- if (C.`TABLES`_context{`tabletype*#6`}[x!`%`_idx{i#5690}.0] = `%%%`_tabletype{addrtype#441, limits#441, reftype#389}(at, lim, rt)) + -- Reftype_sub: `%|-%<:%`(C, rt, `REF`_reftype{`null?#687`, heaptype#689}(?(`NULL`_null), `FUNC`_heaptype)) + -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#30`}[y!`%`_idx{i#5700}.0], `FUNC%->%`_comptype{resulttype#697}(`%`_resulttype{`X*#3646`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#3659`}(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*`}))) + rule return{C : context, resulttype#717 : resulttype, `localidx*#443` : localidx*, `X*#3682` : valtype*, `t_1*` : valtype*, `t*` : valtype*, `X*#3731` : valtype*, `t_2*` : valtype*, `resulttype?#8` : resulttype?, `X*#3766` : valtype*, resulttype#737 : resulttype, `localidx*#455` : localidx*, `X*#3779` : valtype*, `X*#3830` : valtype*}: + `%|-%:%`(C, `RETURN`_instr, `%->_%%`_instrtype{resulttype#717, `localidx*#443`}(`%`_resulttype{`X*#3682`}(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype{`X*#3731`}(t_2*{t_2 <- `t_2*`}))) + -- if (C.`RETURN`_context{`resulttype?#8`} = ?(`%`_resulttype{`X*#3766`}(t*{t <- `t*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype{resulttype#737, `localidx*#455`}(`%`_resulttype{`X*#3779`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#3830`}(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*`}))) + rule return_call{C : context, funcidx#179 : funcidx, x : idx, resulttype#757 : resulttype, `localidx*#467` : localidx*, `X*#3851` : valtype*, `t_3*` : valtype*, `t_1*` : valtype*, `X*#3900` : valtype*, `t_4*` : valtype*, `deftype*#31` : deftype*, i#5724 : nat, resulttype#760 : resulttype, `X*#3913` : valtype*, `X*#3926` : valtype*, `t_2*` : valtype*, `resulttype?#11` : resulttype?, `X*#3963` : valtype*, `t'_2*` : valtype*, `X*#3976` : valtype*, `X*#3989` : valtype*, resulttype#780 : resulttype, `localidx*#479` : localidx*, `X*#4002` : valtype*, `X*#4053` : valtype*}: + `%|-%:%`(C, `RETURN_CALL`_instr{funcidx#179}(x), `%->_%%`_instrtype{resulttype#757, `localidx*#467`}(`%`_resulttype{`X*#3851`}(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#3900`}(t_4*{t_4 <- `t_4*`}))) + -- Expand: `%~~%`(C.`FUNCS`_context{`deftype*#31`}[x!`%`_idx{i#5724}.0], `FUNC%->%`_comptype{resulttype#760}(`%`_resulttype{`X*#3913`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#3926`}(t_2*{t_2 <- `t_2*`}))) + -- if (C.`RETURN`_context{`resulttype?#11`} = ?(`%`_resulttype{`X*#3963`}(t'_2*{t'_2 <- `t'_2*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype{`X*#3976`}(t_2*{t_2 <- `t_2*`}), `%`_resulttype{`X*#3989`}(t'_2*{t'_2 <- `t'_2*`})) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype{resulttype#780, `localidx*#479`}(`%`_resulttype{`X*#4002`}(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype{`X*#4053`}(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*`}))) + rule return_call_ref{C : context, typeuse#27 : typeuse, typeidx#400 : typeidx, x : idx, resulttype#800 : resulttype, `localidx*#491` : localidx*, `X*#4074` : valtype*, `t_3*` : valtype*, `t_1*` : valtype*, `null?#689` : null?, heaptype#691 : heaptype, typeidx#402 : typeidx, `X*#4123` : valtype*, `t_4*` : valtype*, `deftype*#32` : deftype*, i#5762 : nat, resulttype#803 : resulttype, `X*#4136` : valtype*, `X*#4149` : valtype*, `t_2*` : valtype*, `resulttype?#14` : resulttype?, `X*#4186` : valtype*, `t'_2*` : valtype*, `X*#4199` : valtype*, `X*#4212` : valtype*, resulttype#823 : resulttype, `localidx*#503` : localidx*, `X*#4225` : valtype*, `X*#4276` : valtype*}: + `%|-%:%`(C, `RETURN_CALL_REF`_instr{typeuse#27}(`_IDX`_typeuse{typeidx#400}(x)), `%->_%%`_instrtype{resulttype#800, `localidx*#491`}(`%`_resulttype{`X*#4074`}(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype{`null?#689`, heaptype#691}(?(`NULL`_null), `_IDX`_heaptype{typeidx#402}(x))]), [], `%`_resulttype{`X*#4123`}(t_4*{t_4 <- `t_4*`}))) + -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#32`}[x!`%`_idx{i#5762}.0], `FUNC%->%`_comptype{resulttype#803}(`%`_resulttype{`X*#4136`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#4149`}(t_2*{t_2 <- `t_2*`}))) + -- if (C.`RETURN`_context{`resulttype?#14`} = ?(`%`_resulttype{`X*#4186`}(t'_2*{t'_2 <- `t'_2*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype{`X*#4199`}(t_2*{t_2 <- `t_2*`}), `%`_resulttype{`X*#4212`}(t'_2*{t'_2 <- `t'_2*`})) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype{resulttype#823, `localidx*#503`}(`%`_resulttype{`X*#4225`}(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype{`X*#4276`}(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*`}))) + rule return_call_indirect{C : context, tableidx#28 : tableidx, typeuse#29 : typeuse, x : idx, typeidx#404 : typeidx, y : idx, resulttype#843 : resulttype, `localidx*#515` : localidx*, `X*#4297` : valtype*, `t_3*` : valtype*, `t_1*` : valtype*, at : addrtype, `X*#4346` : valtype*, `t_4*` : valtype*, `tabletype*#7` : tabletype*, i#5800 : nat, addrtype#453 : addrtype, limits#453 : limits, reftype#401 : reftype, lim : limits, rt : reftype, `null?#713` : null?, heaptype#715 : heaptype, `deftype*#33` : deftype*, i#5810 : nat, resulttype#846 : resulttype, `X*#4359` : valtype*, `X*#4372` : valtype*, `t_2*` : valtype*, `resulttype?#17` : resulttype?, `X*#4409` : valtype*, `t'_2*` : valtype*, `X*#4422` : valtype*, `X*#4435` : valtype*, resulttype#866 : resulttype, `localidx*#527` : localidx*, `X*#4448` : valtype*, `X*#4499` : valtype*}: + `%|-%:%`(C, `RETURN_CALL_INDIRECT`_instr{tableidx#28, typeuse#29}(x, `_IDX`_typeuse{typeidx#404}(y)), `%->_%%`_instrtype{resulttype#843, `localidx*#515`}(`%`_resulttype{`X*#4297`}(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#4346`}(t_4*{t_4 <- `t_4*`}))) + -- if (C.`TABLES`_context{`tabletype*#7`}[x!`%`_idx{i#5800}.0] = `%%%`_tabletype{addrtype#453, limits#453, reftype#401}(at, lim, rt)) + -- Reftype_sub: `%|-%<:%`(C, rt, `REF`_reftype{`null?#713`, heaptype#715}(?(`NULL`_null), `FUNC`_heaptype)) + -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#33`}[y!`%`_idx{i#5810}.0], `FUNC%->%`_comptype{resulttype#846}(`%`_resulttype{`X*#4359`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#4372`}(t_2*{t_2 <- `t_2*`}))) + -- if (C.`RETURN`_context{`resulttype?#17`} = ?(`%`_resulttype{`X*#4409`}(t'_2*{t'_2 <- `t'_2*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype{`X*#4422`}(t_2*{t_2 <- `t_2*`}), `%`_resulttype{`X*#4435`}(t'_2*{t'_2 <- `t'_2*`})) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype{resulttype#866, `localidx*#527`}(`%`_resulttype{`X*#4448`}(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype{`X*#4499`}(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*`}))) + rule throw{C : context, tagidx#3 : tagidx, x : idx, resulttype#886 : resulttype, `localidx*#539` : localidx*, `X*#4520` : valtype*, `t_1*` : valtype*, `t*` : valtype*, `X*#4569` : valtype*, `t_2*` : valtype*, `tagtype*#6` : tagtype*, i#5834 : nat, resulttype#889 : resulttype, `X*#4582` : valtype*, `X*#4605` : valtype*, resulttype#909 : resulttype, `localidx*#551` : localidx*, `X*#4616` : valtype*, `X*#4667` : valtype*}: + `%|-%:%`(C, `THROW`_instr{tagidx#3}(x), `%->_%%`_instrtype{resulttype#886, `localidx*#539`}(`%`_resulttype{`X*#4520`}(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype{`X*#4569`}(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`($as_deftype(C.`TAGS`_context{`tagtype*#6`}[x!`%`_idx{i#5834}.0]), `FUNC%->%`_comptype{resulttype#889}(`%`_resulttype{`X*#4582`}(t*{t <- `t*`}), `%`_resulttype{`X*#4605`}([]))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype{resulttype#909, `localidx*#551`}(`%`_resulttype{`X*#4616`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#4667`}(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*`}))) + rule throw_ref{C : context, resulttype#929 : resulttype, `localidx*#563` : localidx*, `X*#4688` : valtype*, `t_1*` : valtype*, `null?#715` : null?, heaptype#717 : heaptype, `X*#4737` : valtype*, `t_2*` : valtype*, resulttype#949 : resulttype, `localidx*#575` : localidx*, `X*#4748` : valtype*, `X*#4799` : valtype*}: + `%|-%:%`(C, `THROW_REF`_instr, `%->_%%`_instrtype{resulttype#929, `localidx*#563`}(`%`_resulttype{`X*#4688`}(t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype{`null?#715`, heaptype#717}(?(`NULL`_null), `EXN`_heaptype)]), [], `%`_resulttype{`X*#4737`}(t_2*{t_2 <- `t_2*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype{resulttype#949, `localidx*#575`}(`%`_resulttype{`X*#4748`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#4799`}(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*`}))) + rule try_table{C : context, blocktype#13 : blocktype, `instr*#15` : instr*, bt : blocktype, `X*#4812` : catch*, `catch*` : catch*, `instr*` : instr*, resulttype#969 : resulttype, `localidx*#587` : localidx*, `X*#4825` : valtype*, `t_1*` : valtype*, `X*#4876` : valtype*, `t_2*` : valtype*, resulttype#989 : resulttype, `localidx*#599` : localidx*, `X*#4887` : valtype*, `X*#4938` : valtype*, `deftype*#34` : deftype*, `subtype*#9` : subtype*, `tagtype*#7` : tagtype*, `globaltype*#6` : globaltype*, `memtype*#6` : memtype*, `tabletype*#8` : tabletype*, `deftype*#35` : deftype*, `datatype*#6` : datatype*, `elemtype*#6` : elemtype*, `localtype*#9` : localtype*, `resulttype*#17` : resulttype*, `X*#4949` : valtype*, `resulttype?#18` : resulttype?, `funcidx*#44` : funcidx*, resulttype#1009 : resulttype, `localidx*#611` : localidx*, `X*#4962` : valtype*, `x*` : idx*, `X*#5014` : valtype*}: + `%|-%:%`(C, `TRY_TABLE`_instr{blocktype#13, `instr*#15`}(bt, `%`_list{`X*#4812`}(catch*{catch <- `catch*`}), instr*{instr <- `instr*`}), `%->_%%`_instrtype{resulttype#969, `localidx*#587`}(`%`_resulttype{`X*#4825`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#4876`}(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype{resulttype#989, `localidx*#599`}(`%`_resulttype{`X*#4887`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#4938`}(t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`({`TYPES`{`deftype*#34`} [], `RECS`{`subtype*#9`} [], `TAGS`{`tagtype*#7`} [], `GLOBALS`{`globaltype*#6`} [], `MEMS`{`memtype*#6`} [], `TABLES`{`tabletype*#8`} [], `FUNCS`{`deftype*#35`} [], `DATAS`{`datatype*#6`} [], `ELEMS`{`elemtype*#6`} [], `LOCALS`{`localtype*#9`} [], `LABELS`{`resulttype*#17`} [`%`_resulttype{`X*#4949`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#18`} ?(), `REFS`{`funcidx*#44`} []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype{resulttype#1009, `localidx*#611`}(`%`_resulttype{`X*#4962`}(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype{`X*#5014`}(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)]))) + rule ref.null{C : context, heaptype#723 : heaptype, ht : heaptype, resulttype#1035 : resulttype, `localidx*#623` : localidx*, `X*#5225` : valtype*, `X*#5274` : valtype*, `null?#721` : null?, heaptype#725 : heaptype}: + `%|-%:%`(C, `REF.NULL`_instr{heaptype#723}(ht), `%->_%%`_instrtype{resulttype#1035, `localidx*#623`}(`%`_resulttype{`X*#5225`}([]), [], `%`_resulttype{`X*#5274`}([`REF`_valtype{`null?#721`, heaptype#725}(?(`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) + rule ref.func{C : context, funcidx#181 : funcidx, x : idx, resulttype#1055 : resulttype, `localidx*#635` : localidx*, `X*#5295` : valtype*, `X*#5344` : valtype*, `null?#723` : null?, heaptype#727 : heaptype, dt : deftype, `deftype*#36` : deftype*, i#6070 : nat, `funcidx*#47` : funcidx*}: + `%|-%:%`(C, `REF.FUNC`_instr{funcidx#181}(x), `%->_%%`_instrtype{resulttype#1055, `localidx*#635`}(`%`_resulttype{`X*#5295`}([]), [], `%`_resulttype{`X*#5344`}([`REF`_valtype{`null?#723`, heaptype#727}(?(), (dt : deftype <: heaptype))]))) + -- if (C.`FUNCS`_context{`deftype*#36`}[x!`%`_idx{i#6070}.0] = dt) + -- if (x <- C.`REFS`_context{`funcidx*#47`}) ;; ../../../../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)]))) + rule ref.i31{C : context, resulttype#1075 : resulttype, `localidx*#647` : localidx*, `X*#5363` : valtype*, `X*#5412` : valtype*, `null?#725` : null?, heaptype#729 : heaptype}: + `%|-%:%`(C, `REF.I31`_instr, `%->_%%`_instrtype{resulttype#1075, `localidx*#647`}(`%`_resulttype{`X*#5363`}([`I32`_valtype]), [], `%`_resulttype{`X*#5412`}([`REF`_valtype{`null?#725`, heaptype#729}(?(), `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]))) + rule ref.is_null{C : context, resulttype#1095 : resulttype, `localidx*#659` : localidx*, `X*#5433` : valtype*, `null?#727` : null?, heaptype#731 : heaptype, ht : heaptype, `X*#5482` : valtype*}: + `%|-%:%`(C, `REF.IS_NULL`_instr, `%->_%%`_instrtype{resulttype#1095, `localidx*#659`}(`%`_resulttype{`X*#5433`}([`REF`_valtype{`null?#727`, heaptype#731}(?(`NULL`_null), ht)]), [], `%`_resulttype{`X*#5482`}([`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)]))) + rule ref.as_non_null{C : context, resulttype#1115 : resulttype, `localidx*#671` : localidx*, `X*#5503` : valtype*, `null?#729` : null?, heaptype#733 : heaptype, ht : heaptype, `X*#5552` : valtype*, `null?#731` : null?, heaptype#735 : heaptype}: + `%|-%:%`(C, `REF.AS_NON_NULL`_instr, `%->_%%`_instrtype{resulttype#1115, `localidx*#671`}(`%`_resulttype{`X*#5503`}([`REF`_valtype{`null?#729`, heaptype#733}(?(`NULL`_null), ht)]), [], `%`_resulttype{`X*#5552`}([`REF`_valtype{`null?#731`, heaptype#735}(?(), 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]))) + rule ref.eq{C : context, resulttype#1135 : resulttype, `localidx*#683` : localidx*, `X*#5573` : valtype*, `null?#733` : null?, heaptype#737 : heaptype, `null?#735` : null?, heaptype#739 : heaptype, `X*#5622` : valtype*}: + `%|-%:%`(C, `REF.EQ`_instr, `%->_%%`_instrtype{resulttype#1135, `localidx*#683`}(`%`_resulttype{`X*#5573`}([`REF`_valtype{`null?#733`, heaptype#737}(?(`NULL`_null), `EQ`_heaptype) `REF`_valtype{`null?#735`, heaptype#739}(?(`NULL`_null), `EQ`_heaptype)]), [], `%`_resulttype{`X*#5622`}([`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]))) + rule ref.test{C : context, reftype#403 : reftype, rt : reftype, resulttype#1155 : resulttype, `localidx*#695` : localidx*, `X*#5633` : valtype*, rt' : reftype, `X*#5703` : valtype*}: + `%|-%:%`(C, `REF.TEST`_instr{reftype#403}(rt), `%->_%%`_instrtype{resulttype#1155, `localidx*#695`}(`%`_resulttype{`X*#5633`}([(rt' : reftype <: valtype)]), [], `%`_resulttype{`X*#5703`}([`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)]))) + rule ref.cast{C : context, reftype#405 : reftype, rt : reftype, resulttype#1175 : resulttype, `localidx*#707` : localidx*, `X*#5714` : valtype*, rt' : reftype, `X*#5784` : valtype*}: + `%|-%:%`(C, `REF.CAST`_instr{reftype#405}(rt), `%->_%%`_instrtype{resulttype#1175, `localidx*#707`}(`%`_resulttype{`X*#5714`}([(rt' : reftype <: valtype)]), [], `%`_resulttype{`X*#5784`}([(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]))) + rule i31.get{C : context, sx#5 : sx, sx : sx, resulttype#1195 : resulttype, `localidx*#719` : localidx*, `X*#5805` : valtype*, `null?#801` : null?, heaptype#805 : heaptype, `X*#5854` : valtype*}: + `%|-%:%`(C, `I31.GET`_instr{sx#5}(sx), `%->_%%`_instrtype{resulttype#1195, `localidx*#719`}(`%`_resulttype{`X*#5805`}([`REF`_valtype{`null?#801`, heaptype#805}(?(`NULL`_null), `I31`_heaptype)]), [], `%`_resulttype{`X*#5854`}([`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*`}))) + rule struct.new{C : context, typeidx#406 : typeidx, x : idx, resulttype#1215 : resulttype, `localidx*#731` : localidx*, `X*#5865` : valtype*, `zt*` : storagetype*, `X*#5916` : valtype*, `null?#803` : null?, heaptype#807 : heaptype, typeidx#408 : typeidx, `deftype*#37` : deftype*, i#6131 : nat, `X*#5929` : fieldtype*, `mut?*` : mut?*, `mut?#573*` : mut?*, `storagetype#337*` : storagetype*}: + `%|-%:%`(C, `STRUCT.NEW`_instr{typeidx#406}(x), `%->_%%`_instrtype{resulttype#1215, `localidx*#731`}(`%`_resulttype{`X*#5865`}($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype{`X*#5916`}([`REF`_valtype{`null?#803`, heaptype#807}(?(), `_IDX`_heaptype{typeidx#408}(x))]))) + -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#37`}[x!`%`_idx{i#6131}.0], `STRUCT`_comptype(`%`_list{`X*#5929`}(`%%`_fieldtype{`mut?#573`, storagetype#337}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#573` <- `mut?#573*`, storagetype#337 <- `storagetype#337*`, 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*`}))) + rule struct.new_default{C : context, typeidx#410 : typeidx, x : idx, resulttype#1235 : resulttype, `localidx*#743` : localidx*, `X*#5952` : valtype*, `X*#6001` : valtype*, `null?#805` : null?, heaptype#809 : heaptype, typeidx#412 : typeidx, `deftype*#38` : deftype*, i#6169 : nat, `X*#6014` : fieldtype*, `mut?*` : mut?*, `mut?#591*` : mut?*, `storagetype#355*` : storagetype*, `zt*` : storagetype*}: + `%|-%:%`(C, `STRUCT.NEW_DEFAULT`_instr{typeidx#410}(x), `%->_%%`_instrtype{resulttype#1235, `localidx*#743`}(`%`_resulttype{`X*#5952`}([]), [], `%`_resulttype{`X*#6001`}([`REF`_valtype{`null?#805`, heaptype#809}(?(), `_IDX`_heaptype{typeidx#412}(x))]))) + -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#38`}[x!`%`_idx{i#6169}.0], `STRUCT`_comptype(`%`_list{`X*#6014`}(`%%`_fieldtype{`mut?#591`, storagetype#355}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#591` <- `mut?#591*`, storagetype#355 <- `storagetype#355*`, 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)) + rule struct.get{C : context, `sx?#7` : sx?, typeidx#414 : typeidx, u32#8 : u32, `sx?` : sx?, x : idx, i : u32, resulttype#1255 : resulttype, `localidx*#755` : localidx*, `X*#6037` : valtype*, `null?#807` : null?, heaptype#811 : heaptype, typeidx#416 : typeidx, `X*#6086` : valtype*, zt : storagetype, `deftype*#39` : deftype*, i#6236 : nat, `X*#6099` : fieldtype*, `ft*` : fieldtype*, i#6246 : nat, `mut?#617` : mut?, storagetype#381 : storagetype, `mut?` : mut?}: + `%|-%:%`(C, `STRUCT.GET`_instr{`sx?#7`, typeidx#414, u32#8}(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype{resulttype#1255, `localidx*#755`}(`%`_resulttype{`X*#6037`}([`REF`_valtype{`null?#807`, heaptype#811}(?(`NULL`_null), `_IDX`_heaptype{typeidx#416}(x))]), [], `%`_resulttype{`X*#6086`}([$unpack(zt)]))) + -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#39`}[x!`%`_idx{i#6236}.0], `STRUCT`_comptype(`%`_list{`X*#6099`}(ft*{ft <- `ft*`}))) + -- if (ft*{ft <- `ft*`}[i!`%`_u32{i#6246}.0] = `%%`_fieldtype{`mut?#617`, storagetype#381}(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)) + rule struct.set{C : context, typeidx#418 : typeidx, u32#10 : u32, x : idx, i : u32, resulttype#1275 : resulttype, `localidx*#767` : localidx*, `X*#6122` : valtype*, `null?#809` : null?, heaptype#813 : heaptype, typeidx#420 : typeidx, zt : storagetype, `X*#6171` : valtype*, `deftype*#40` : deftype*, i#6298 : nat, `X*#6184` : fieldtype*, `ft*` : fieldtype*, i#6308 : nat, `mut?#643` : mut?, storagetype#407 : storagetype}: + `%|-%:%`(C, `STRUCT.SET`_instr{typeidx#418, u32#10}(x, i), `%->_%%`_instrtype{resulttype#1275, `localidx*#767`}(`%`_resulttype{`X*#6122`}([`REF`_valtype{`null?#809`, heaptype#813}(?(`NULL`_null), `_IDX`_heaptype{typeidx#420}(x)) $unpack(zt)]), [], `%`_resulttype{`X*#6171`}([]))) + -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#40`}[x!`%`_idx{i#6298}.0], `STRUCT`_comptype(`%`_list{`X*#6184`}(ft*{ft <- `ft*`}))) + -- if (ft*{ft <- `ft*`}[i!`%`_u32{i#6308}.0] = `%%`_fieldtype{`mut?#643`, storagetype#407}(?(`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))) + rule array.new{C : context, typeidx#422 : typeidx, x : idx, resulttype#1295 : resulttype, `localidx*#779` : localidx*, `X*#6207` : valtype*, zt : storagetype, `X*#6256` : valtype*, `null?#811` : null?, heaptype#815 : heaptype, typeidx#424 : typeidx, `deftype*#41` : deftype*, i#6346 : nat, fieldtype#15 : fieldtype, `mut?#655` : mut?, storagetype#419 : storagetype, `mut?` : mut?}: + `%|-%:%`(C, `ARRAY.NEW`_instr{typeidx#422}(x), `%->_%%`_instrtype{resulttype#1295, `localidx*#779`}(`%`_resulttype{`X*#6207`}([$unpack(zt) `I32`_valtype]), [], `%`_resulttype{`X*#6256`}([`REF`_valtype{`null?#811`, heaptype#815}(?(), `_IDX`_heaptype{typeidx#424}(x))]))) + -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#41`}[x!`%`_idx{i#6346}.0], `ARRAY`_comptype{fieldtype#15}(`%%`_fieldtype{`mut?#655`, storagetype#419}(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))) + rule array.new_default{C : context, typeidx#426 : typeidx, x : idx, resulttype#1315 : resulttype, `localidx*#791` : localidx*, `X*#6275` : valtype*, `X*#6324` : valtype*, `null?#813` : null?, heaptype#817 : heaptype, typeidx#428 : typeidx, `deftype*#42` : deftype*, i#6384 : nat, fieldtype#17 : fieldtype, `mut?#667` : mut?, storagetype#431 : storagetype, `mut?` : mut?, zt : storagetype}: + `%|-%:%`(C, `ARRAY.NEW_DEFAULT`_instr{typeidx#426}(x), `%->_%%`_instrtype{resulttype#1315, `localidx*#791`}(`%`_resulttype{`X*#6275`}([`I32`_valtype]), [], `%`_resulttype{`X*#6324`}([`REF`_valtype{`null?#813`, heaptype#817}(?(), `_IDX`_heaptype{typeidx#428}(x))]))) + -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#42`}[x!`%`_idx{i#6384}.0], `ARRAY`_comptype{fieldtype#17}(`%%`_fieldtype{`mut?#667`, storagetype#431}(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))) + rule array.new_fixed{C : context, typeidx#430 : typeidx, u32#12 : u32, x : idx, i#6422 : nat, n : n, resulttype#1335 : resulttype, `localidx*#803` : localidx*, `X*#6335` : valtype*, zt : storagetype, `X*#6386` : valtype*, `null?#815` : null?, heaptype#819 : heaptype, typeidx#432 : typeidx, `deftype*#43` : deftype*, i#6446 : nat, fieldtype#19 : fieldtype, `mut?#679` : mut?, storagetype#443 : storagetype, `mut?` : mut?}: + `%|-%:%`(C, `ARRAY.NEW_FIXED`_instr{typeidx#430, u32#12}(x, `%`_u32{i#6422}(n)), `%->_%%`_instrtype{resulttype#1335, `localidx*#803`}(`%`_resulttype{`X*#6335`}($unpack(zt)^n{}), [], `%`_resulttype{`X*#6386`}([`REF`_valtype{`null?#815`, heaptype#819}(?(), `_IDX`_heaptype{typeidx#432}(x))]))) + -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#43`}[x!`%`_idx{i#6446}.0], `ARRAY`_comptype{fieldtype#19}(`%%`_fieldtype{`mut?#679`, storagetype#443}(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) + rule array.new_elem{C : context, typeidx#434 : typeidx, elemidx#9 : elemidx, x : idx, y : idx, resulttype#1355 : resulttype, `localidx*#815` : localidx*, `X*#6407` : valtype*, `X*#6456` : valtype*, `null?#817` : null?, heaptype#821 : heaptype, typeidx#436 : typeidx, `deftype*#44` : deftype*, i#6498 : nat, fieldtype#21 : fieldtype, `mut?#691` : mut?, storagetype#455 : storagetype, `mut?` : mut?, rt : reftype, `elemtype*#7` : elemtype*, i#6508 : nat}: + `%|-%:%`(C, `ARRAY.NEW_ELEM`_instr{typeidx#434, elemidx#9}(x, y), `%->_%%`_instrtype{resulttype#1355, `localidx*#815`}(`%`_resulttype{`X*#6407`}([`I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#6456`}([`REF`_valtype{`null?#817`, heaptype#821}(?(), `_IDX`_heaptype{typeidx#436}(x))]))) + -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#44`}[x!`%`_idx{i#6498}.0], `ARRAY`_comptype{fieldtype#21}(`%%`_fieldtype{`mut?#691`, storagetype#455}(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) + -- Reftype_sub: `%|-%<:%`(C, C.`ELEMS`_context{`elemtype*#7`}[y!`%`_idx{i#6508}.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))) + rule array.new_data{C : context, typeidx#438 : typeidx, dataidx#9 : dataidx, x : idx, y : idx, resulttype#1375 : resulttype, `localidx*#827` : localidx*, `X*#6477` : valtype*, `X*#6526` : valtype*, `null?#831` : null?, heaptype#835 : heaptype, typeidx#440 : typeidx, `deftype*#45` : deftype*, i#6560 : nat, fieldtype#23 : fieldtype, `mut?#703` : mut?, storagetype#467 : storagetype, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype, `datatype*#7` : datatype*, i#6570 : nat}: + `%|-%:%`(C, `ARRAY.NEW_DATA`_instr{typeidx#438, dataidx#9}(x, y), `%->_%%`_instrtype{resulttype#1375, `localidx*#827`}(`%`_resulttype{`X*#6477`}([`I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#6526`}([`REF`_valtype{`null?#831`, heaptype#835}(?(), `_IDX`_heaptype{typeidx#440}(x))]))) + -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#45`}[x!`%`_idx{i#6560}.0], `ARRAY`_comptype{fieldtype#23}(`%%`_fieldtype{`mut?#703`, storagetype#467}(mut?{mut <- `mut?`}, zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) - -- if (C.DATAS_context[y!`%`_idx.0] = OK_datatype) + -- if (C.`DATAS`_context{`datatype*#7`}[y!`%`_idx{i#6570}.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))) + rule array.get{C : context, `sx?#9` : sx?, typeidx#442 : typeidx, `sx?` : sx?, x : idx, resulttype#1395 : resulttype, `localidx*#839` : localidx*, `X*#6547` : valtype*, `null?#833` : null?, heaptype#837 : heaptype, typeidx#444 : typeidx, `X*#6596` : valtype*, zt : storagetype, `deftype*#46` : deftype*, i#6645 : nat, fieldtype#25 : fieldtype, `mut?#715` : mut?, storagetype#479 : storagetype, `mut?` : mut?}: + `%|-%:%`(C, `ARRAY.GET`_instr{`sx?#9`, typeidx#442}(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype{resulttype#1395, `localidx*#839`}(`%`_resulttype{`X*#6547`}([`REF`_valtype{`null?#833`, heaptype#837}(?(`NULL`_null), `_IDX`_heaptype{typeidx#444}(x)) `I32`_valtype]), [], `%`_resulttype{`X*#6596`}([$unpack(zt)]))) + -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#46`}[x!`%`_idx{i#6645}.0], `ARRAY`_comptype{fieldtype#25}(`%%`_fieldtype{`mut?#715`, storagetype#479}(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))) + rule array.set{C : context, typeidx#446 : typeidx, x : idx, resulttype#1415 : resulttype, `localidx*#851` : localidx*, `X*#6617` : valtype*, `null?#835` : null?, heaptype#839 : heaptype, typeidx#448 : typeidx, zt : storagetype, `X*#6666` : valtype*, `deftype*#47` : deftype*, i#6683 : nat, fieldtype#27 : fieldtype, `mut?#727` : mut?, storagetype#491 : storagetype}: + `%|-%:%`(C, `ARRAY.SET`_instr{typeidx#446}(x), `%->_%%`_instrtype{resulttype#1415, `localidx*#851`}(`%`_resulttype{`X*#6617`}([`REF`_valtype{`null?#835`, heaptype#839}(?(`NULL`_null), `_IDX`_heaptype{typeidx#448}(x)) `I32`_valtype $unpack(zt)]), [], `%`_resulttype{`X*#6666`}([]))) + -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#47`}[x!`%`_idx{i#6683}.0], `ARRAY`_comptype{fieldtype#27}(`%%`_fieldtype{`mut?#727`, storagetype#491}(?(`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]))) + rule array.len{C : context, resulttype#1435 : resulttype, `localidx*#863` : localidx*, `X*#6687` : valtype*, `null?#837` : null?, heaptype#841 : heaptype, `X*#6736` : valtype*}: + `%|-%:%`(C, `ARRAY.LEN`_instr, `%->_%%`_instrtype{resulttype#1435, `localidx*#863`}(`%`_resulttype{`X*#6687`}([`REF`_valtype{`null?#837`, heaptype#841}(?(`NULL`_null), `ARRAY`_heaptype)]), [], `%`_resulttype{`X*#6736`}([`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))) + rule array.fill{C : context, typeidx#450 : typeidx, x : idx, resulttype#1455 : resulttype, `localidx*#875` : localidx*, `X*#6757` : valtype*, `null?#839` : null?, heaptype#843 : heaptype, typeidx#452 : typeidx, zt : storagetype, `X*#6806` : valtype*, `deftype*#48` : deftype*, i#6721 : nat, fieldtype#29 : fieldtype, `mut?#739` : mut?, storagetype#503 : storagetype}: + `%|-%:%`(C, `ARRAY.FILL`_instr{typeidx#450}(x), `%->_%%`_instrtype{resulttype#1455, `localidx*#875`}(`%`_resulttype{`X*#6757`}([`REF`_valtype{`null?#839`, heaptype#843}(?(`NULL`_null), `_IDX`_heaptype{typeidx#452}(x)) `I32`_valtype $unpack(zt) `I32`_valtype]), [], `%`_resulttype{`X*#6806`}([]))) + -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#48`}[x!`%`_idx{i#6721}.0], `ARRAY`_comptype{fieldtype#29}(`%%`_fieldtype{`mut?#739`, storagetype#503}(?(`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))) + rule array.copy{C : context, typeidx#454 : typeidx, x_1 : idx, x_2 : idx, resulttype#1475 : resulttype, `localidx*#887` : localidx*, `X*#6827` : valtype*, `null?#841` : null?, heaptype#845 : heaptype, typeidx#457 : typeidx, `null?#843` : null?, heaptype#847 : heaptype, typeidx#459 : typeidx, `X*#6876` : valtype*, `deftype*#49` : deftype*, i#6787 : nat, fieldtype#31 : fieldtype, `mut?#751` : mut?, storagetype#515 : storagetype, zt_1 : storagetype, `deftype*#50` : deftype*, i#6797 : nat, fieldtype#33 : fieldtype, `mut?#763` : mut?, storagetype#527 : storagetype, `mut?` : mut?, zt_2 : storagetype}: + `%|-%:%`(C, `ARRAY.COPY`_instr{typeidx#454}(x_1, x_2), `%->_%%`_instrtype{resulttype#1475, `localidx*#887`}(`%`_resulttype{`X*#6827`}([`REF`_valtype{`null?#841`, heaptype#845}(?(`NULL`_null), `_IDX`_heaptype{typeidx#457}(x_1)) `I32`_valtype `REF`_valtype{`null?#843`, heaptype#847}(?(`NULL`_null), `_IDX`_heaptype{typeidx#459}(x_2)) `I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#6876`}([]))) + -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#49`}[x_1!`%`_idx{i#6787}.0], `ARRAY`_comptype{fieldtype#31}(`%%`_fieldtype{`mut?#751`, storagetype#515}(?(`MUT`_mut), zt_1))) + -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#50`}[x_2!`%`_idx{i#6797}.0], `ARRAY`_comptype{fieldtype#33}(`%%`_fieldtype{`mut?#763`, storagetype#527}(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) + rule array.init_elem{C : context, typeidx#461 : typeidx, elemidx#11 : elemidx, x : idx, y : idx, resulttype#1495 : resulttype, `localidx*#899` : localidx*, `X*#6897` : valtype*, `null?#845` : null?, heaptype#849 : heaptype, typeidx#463 : typeidx, `X*#6946` : valtype*, `deftype*#51` : deftype*, i#6849 : nat, fieldtype#35 : fieldtype, `mut?#775` : mut?, storagetype#539 : storagetype, zt : storagetype, `elemtype*#8` : elemtype*, i#6859 : nat}: + `%|-%:%`(C, `ARRAY.INIT_ELEM`_instr{typeidx#461, elemidx#11}(x, y), `%->_%%`_instrtype{resulttype#1495, `localidx*#899`}(`%`_resulttype{`X*#6897`}([`REF`_valtype{`null?#845`, heaptype#849}(?(`NULL`_null), `_IDX`_heaptype{typeidx#463}(x)) `I32`_valtype `I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#6946`}([]))) + -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#51`}[x!`%`_idx{i#6849}.0], `ARRAY`_comptype{fieldtype#35}(`%%`_fieldtype{`mut?#775`, storagetype#539}(?(`MUT`_mut), zt))) + -- Storagetype_sub: `%|-%<:%`(C, (C.`ELEMS`_context{`elemtype*#8`}[y!`%`_idx{i#6859}.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))) + rule array.init_data{C : context, typeidx#465 : typeidx, dataidx#11 : dataidx, x : idx, y : idx, resulttype#1515 : resulttype, `localidx*#911` : localidx*, `X*#6967` : valtype*, `null?#847` : null?, heaptype#851 : heaptype, typeidx#467 : typeidx, `X*#7016` : valtype*, `deftype*#52` : deftype*, i#6911 : nat, fieldtype#37 : fieldtype, `mut?#787` : mut?, storagetype#551 : storagetype, zt : storagetype, numtype : numtype, vectype : vectype, `datatype*#8` : datatype*, i#6921 : nat}: + `%|-%:%`(C, `ARRAY.INIT_DATA`_instr{typeidx#465, dataidx#11}(x, y), `%->_%%`_instrtype{resulttype#1515, `localidx*#911`}(`%`_resulttype{`X*#6967`}([`REF`_valtype{`null?#847`, heaptype#851}(?(`NULL`_null), `_IDX`_heaptype{typeidx#467}(x)) `I32`_valtype `I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#7016`}([]))) + -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#52`}[x!`%`_idx{i#6911}.0], `ARRAY`_comptype{fieldtype#37}(`%%`_fieldtype{`mut?#787`, storagetype#551}(?(`MUT`_mut), zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) - -- if (C.DATAS_context[y!`%`_idx.0] = OK_datatype) + -- if (C.`DATAS`_context{`datatype*#8`}[y!`%`_idx{i#6921}.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)]))) + rule extern.convert_any{C : context, resulttype#1535 : resulttype, `localidx*#923` : localidx*, `X*#7037` : valtype*, `null?#849` : null?, heaptype#853 : heaptype, `null_1?` : null?, `X*#7086` : valtype*, `null?#851` : null?, heaptype#855 : heaptype, `null_2?` : null?}: + `%|-%:%`(C, `EXTERN.CONVERT_ANY`_instr, `%->_%%`_instrtype{resulttype#1535, `localidx*#923`}(`%`_resulttype{`X*#7037`}([`REF`_valtype{`null?#849`, heaptype#853}(null_1?{null_1 <- `null_1?`}, `ANY`_heaptype)]), [], `%`_resulttype{`X*#7086`}([`REF`_valtype{`null?#851`, heaptype#855}(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)]))) + rule any.convert_extern{C : context, resulttype#1555 : resulttype, `localidx*#935` : localidx*, `X*#7107` : valtype*, `null?#853` : null?, heaptype#857 : heaptype, `null_1?` : null?, `X*#7156` : valtype*, `null?#855` : null?, heaptype#859 : heaptype, `null_2?` : null?}: + `%|-%:%`(C, `ANY.CONVERT_EXTERN`_instr, `%->_%%`_instrtype{resulttype#1555, `localidx*#935`}(`%`_resulttype{`X*#7107`}([`REF`_valtype{`null?#853`, heaptype#857}(null_1?{null_1 <- `null_1?`}, `EXTERN`_heaptype)]), [], `%`_resulttype{`X*#7156`}([`REF`_valtype{`null?#855`, heaptype#859}(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)) + rule local.get{C : context, localidx#7 : localidx, x : idx, resulttype#1575 : resulttype, `localidx*#947` : localidx*, `X*#7177` : valtype*, `X*#7226` : valtype*, t : valtype, `localtype*#10` : localtype*, i#6945 : nat, init#77 : init, valtype#343 : valtype}: + `%|-%:%`(C, `LOCAL.GET`_instr{localidx#7}(x), `%->_%%`_instrtype{resulttype#1575, `localidx*#947`}(`%`_resulttype{`X*#7177`}([]), [], `%`_resulttype{`X*#7226`}([t]))) + -- if (C.`LOCALS`_context{`localtype*#10`}[x!`%`_idx{i#6945}.0] = `%%`_localtype{init#77, valtype#343}(`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)) + rule local.set{C : context, localidx#9 : localidx, x : idx, resulttype#1595 : resulttype, `localidx*#959` : localidx*, `X*#7237` : valtype*, t : valtype, `X*#7334` : valtype*, `localtype*#11` : localtype*, i#7182 : nat, init#89 : init, valtype#355 : valtype, init : init}: + `%|-%:%`(C, `LOCAL.SET`_instr{localidx#9}(x), `%->_%%`_instrtype{resulttype#1595, `localidx*#959`}(`%`_resulttype{`X*#7237`}([t]), [x], `%`_resulttype{`X*#7334`}([]))) + -- if (C.`LOCALS`_context{`localtype*#11`}[x!`%`_idx{i#7182}.0] = `%%`_localtype{init#89, valtype#355}(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)) + rule local.tee{C : context, localidx#11 : localidx, x : idx, resulttype#1615 : resulttype, `localidx*#971` : localidx*, `X*#7345` : valtype*, t : valtype, `X*#7432` : valtype*, `localtype*#12` : localtype*, i#7419 : nat, init#101 : init, valtype#367 : valtype, init : init}: + `%|-%:%`(C, `LOCAL.TEE`_instr{localidx#11}(x), `%->_%%`_instrtype{resulttype#1615, `localidx*#971`}(`%`_resulttype{`X*#7345`}([t]), [x], `%`_resulttype{`X*#7432`}([t]))) + -- if (C.`LOCALS`_context{`localtype*#12`}[x!`%`_idx{i#7419}.0] = `%%`_localtype{init#101, valtype#367}(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)) + rule global.get{C : context, globalidx#9 : globalidx, x : idx, resulttype#1635 : resulttype, `localidx*#983` : localidx*, `X*#7472` : valtype*, `X*#7521` : valtype*, t : valtype, `globaltype*#7` : globaltype*, i#7443 : nat, `mut?#799` : mut?, valtype#379 : valtype, `mut?` : mut?}: + `%|-%:%`(C, `GLOBAL.GET`_instr{globalidx#9}(x), `%->_%%`_instrtype{resulttype#1635, `localidx*#983`}(`%`_resulttype{`X*#7472`}([]), [], `%`_resulttype{`X*#7521`}([t]))) + -- if (C.`GLOBALS`_context{`globaltype*#7`}[x!`%`_idx{i#7443}.0] = `%%`_globaltype{`mut?#799`, valtype#379}(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)) + rule global.set{C : context, globalidx#11 : globalidx, x : idx, resulttype#1655 : resulttype, `localidx*#995` : localidx*, `X*#7532` : valtype*, t : valtype, `X*#7600` : valtype*, `globaltype*#8` : globaltype*, i#7467 : nat, `mut?#811` : mut?, valtype#391 : valtype}: + `%|-%:%`(C, `GLOBAL.SET`_instr{globalidx#11}(x), `%->_%%`_instrtype{resulttype#1655, `localidx*#995`}(`%`_resulttype{`X*#7532`}([t]), [], `%`_resulttype{`X*#7600`}([]))) + -- if (C.`GLOBALS`_context{`globaltype*#8`}[x!`%`_idx{i#7467}.0] = `%%`_globaltype{`mut?#811`, valtype#391}(?(`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)) + rule table.get{C : context, tableidx#30 : tableidx, x : idx, resulttype#1675 : resulttype, `localidx*#1007` : localidx*, `X*#7611` : valtype*, at : addrtype, `X*#7679` : valtype*, rt : reftype, `tabletype*#9` : tabletype*, i#7491 : nat, addrtype#465 : addrtype, limits#465 : limits, reftype#417 : reftype, lim : limits}: + `%|-%:%`(C, `TABLE.GET`_instr{tableidx#30}(x), `%->_%%`_instrtype{resulttype#1675, `localidx*#1007`}(`%`_resulttype{`X*#7611`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#7679`}([(rt : reftype <: valtype)]))) + -- if (C.`TABLES`_context{`tabletype*#9`}[x!`%`_idx{i#7491}.0] = `%%%`_tabletype{addrtype#465, limits#465, reftype#417}(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)) + rule table.set{C : context, tableidx#32 : tableidx, x : idx, resulttype#1695 : resulttype, `localidx*#1019` : localidx*, `X*#7700` : valtype*, at : addrtype, rt : reftype, `X*#7749` : valtype*, `tabletype*#10` : tabletype*, i#7515 : nat, addrtype#477 : addrtype, limits#477 : limits, reftype#429 : reftype, lim : limits}: + `%|-%:%`(C, `TABLE.SET`_instr{tableidx#32}(x), `%->_%%`_instrtype{resulttype#1695, `localidx*#1019`}(`%`_resulttype{`X*#7700`}([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype{`X*#7749`}([]))) + -- if (C.`TABLES`_context{`tabletype*#10`}[x!`%`_idx{i#7515}.0] = `%%%`_tabletype{addrtype#477, limits#477, reftype#429}(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)) + rule table.size{C : context, tableidx#34 : tableidx, x : idx, resulttype#1715 : resulttype, `localidx*#1031` : localidx*, `X*#7770` : valtype*, `X*#7819` : valtype*, at : addrtype, `tabletype*#11` : tabletype*, i#7539 : nat, addrtype#489 : addrtype, limits#489 : limits, reftype#441 : reftype, lim : limits, rt : reftype}: + `%|-%:%`(C, `TABLE.SIZE`_instr{tableidx#34}(x), `%->_%%`_instrtype{resulttype#1715, `localidx*#1031`}(`%`_resulttype{`X*#7770`}([]), [], `%`_resulttype{`X*#7819`}([(at : addrtype <: valtype)]))) + -- if (C.`TABLES`_context{`tabletype*#11`}[x!`%`_idx{i#7539}.0] = `%%%`_tabletype{addrtype#489, limits#489, reftype#441}(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)) + rule table.grow{C : context, tableidx#36 : tableidx, x : idx, resulttype#1735 : resulttype, `localidx*#1043` : localidx*, `X*#7840` : valtype*, rt : reftype, at : addrtype, `X*#7889` : valtype*, `tabletype*#12` : tabletype*, i#7563 : nat, addrtype#501 : addrtype, limits#501 : limits, reftype#453 : reftype, lim : limits}: + `%|-%:%`(C, `TABLE.GROW`_instr{tableidx#36}(x), `%->_%%`_instrtype{resulttype#1735, `localidx*#1043`}(`%`_resulttype{`X*#7840`}([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype{`X*#7889`}([`I32`_valtype]))) + -- if (C.`TABLES`_context{`tabletype*#12`}[x!`%`_idx{i#7563}.0] = `%%%`_tabletype{addrtype#501, limits#501, reftype#453}(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)) + rule table.fill{C : context, tableidx#38 : tableidx, x : idx, resulttype#1755 : resulttype, `localidx*#1055` : localidx*, `X*#7910` : valtype*, at : addrtype, rt : reftype, `X*#7959` : valtype*, `tabletype*#13` : tabletype*, i#7587 : nat, addrtype#513 : addrtype, limits#513 : limits, reftype#465 : reftype, lim : limits}: + `%|-%:%`(C, `TABLE.FILL`_instr{tableidx#38}(x), `%->_%%`_instrtype{resulttype#1755, `localidx*#1055`}(`%`_resulttype{`X*#7910`}([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype{`X*#7959`}([]))) + -- if (C.`TABLES`_context{`tabletype*#13`}[x!`%`_idx{i#7587}.0] = `%%%`_tabletype{addrtype#513, limits#513, reftype#465}(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)) + rule table.copy{C : context, tableidx#40 : tableidx, x_1 : idx, x_2 : idx, resulttype#1775 : resulttype, `localidx*#1067` : localidx*, `X*#7980` : valtype*, at_1 : addrtype, at_2 : addrtype, `X*#8029` : valtype*, `tabletype*#14` : tabletype*, i#7625 : nat, addrtype#525 : addrtype, limits#525 : limits, reftype#477 : reftype, lim_1 : limits, rt_1 : reftype, `tabletype*#15` : tabletype*, i#7635 : nat, addrtype#537 : addrtype, limits#537 : limits, reftype#489 : reftype, lim_2 : limits, rt_2 : reftype}: + `%|-%:%`(C, `TABLE.COPY`_instr{tableidx#40}(x_1, x_2), `%->_%%`_instrtype{resulttype#1775, `localidx*#1067`}(`%`_resulttype{`X*#7980`}([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype{`X*#8029`}([]))) + -- if (C.`TABLES`_context{`tabletype*#14`}[x_1!`%`_idx{i#7625}.0] = `%%%`_tabletype{addrtype#525, limits#525, reftype#477}(at_1, lim_1, rt_1)) + -- if (C.`TABLES`_context{`tabletype*#15`}[x_2!`%`_idx{i#7635}.0] = `%%%`_tabletype{addrtype#537, limits#537, reftype#489}(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) + rule table.init{C : context, tableidx#43 : tableidx, elemidx#13 : elemidx, x : idx, y : idx, resulttype#1795 : resulttype, `localidx*#1079` : localidx*, `X*#8050` : valtype*, at : addrtype, `X*#8099` : valtype*, `tabletype*#16` : tabletype*, i#7673 : nat, addrtype#549 : addrtype, limits#549 : limits, reftype#501 : reftype, lim : limits, rt_1 : reftype, `elemtype*#9` : elemtype*, i#7683 : nat, rt_2 : reftype}: + `%|-%:%`(C, `TABLE.INIT`_instr{tableidx#43, elemidx#13}(x, y), `%->_%%`_instrtype{resulttype#1795, `localidx*#1079`}(`%`_resulttype{`X*#8050`}([(at : addrtype <: valtype) `I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#8099`}([]))) + -- if (C.`TABLES`_context{`tabletype*#16`}[x!`%`_idx{i#7673}.0] = `%%%`_tabletype{addrtype#549, limits#549, reftype#501}(at, lim, rt_1)) + -- if (C.`ELEMS`_context{`elemtype*#9`}[y!`%`_idx{i#7683}.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) + rule elem.drop{C : context, elemidx#15 : elemidx, x : idx, resulttype#1815 : resulttype, `localidx*#1091` : localidx*, `X*#8120` : valtype*, `X*#8169` : valtype*, `elemtype*#10` : elemtype*, i#7707 : nat, rt : reftype}: + `%|-%:%`(C, `ELEM.DROP`_instr{elemidx#15}(x), `%->_%%`_instrtype{resulttype#1815, `localidx*#1091`}(`%`_resulttype{`X*#8120`}([]), [], `%`_resulttype{`X*#8169`}([]))) + -- if (C.`ELEMS`_context{`elemtype*#10`}[x!`%`_idx{i#7707}.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)) + rule memory.size{C : context, memidx#30 : memidx, x : idx, resulttype#1835 : resulttype, `localidx*#1103` : localidx*, `X*#8190` : valtype*, `X*#8239` : valtype*, at : addrtype, `memtype*#7` : memtype*, i#7775 : nat, addrtype#561 : addrtype, limits#561 : limits, lim : limits}: + `%|-%:%`(C, `MEMORY.SIZE`_instr{memidx#30}(x), `%->_%%`_instrtype{resulttype#1835, `localidx*#1103`}(`%`_resulttype{`X*#8190`}([]), [], `%`_resulttype{`X*#8239`}([(at : addrtype <: valtype)]))) + -- if (C.`MEMS`_context{`memtype*#7`}[x!`%`_idx{i#7775}.0] = `%%PAGE`_memtype{addrtype#561, limits#561}(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)) + rule memory.grow{C : context, memidx#32 : memidx, x : idx, resulttype#1855 : resulttype, `localidx*#1115` : localidx*, `X*#8250` : valtype*, at : addrtype, `X*#8318` : valtype*, `memtype*#8` : memtype*, i#7799 : nat, addrtype#573 : addrtype, limits#573 : limits, lim : limits}: + `%|-%:%`(C, `MEMORY.GROW`_instr{memidx#32}(x), `%->_%%`_instrtype{resulttype#1855, `localidx*#1115`}(`%`_resulttype{`X*#8250`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#8318`}([(at : addrtype <: valtype)]))) + -- if (C.`MEMS`_context{`memtype*#8`}[x!`%`_idx{i#7799}.0] = `%%PAGE`_memtype{addrtype#573, limits#573}(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)) + rule memory.fill{C : context, memidx#34 : memidx, x : idx, resulttype#1875 : resulttype, `localidx*#1127` : localidx*, `X*#8339` : valtype*, at : addrtype, `X*#8388` : valtype*, `memtype*#9` : memtype*, i#7823 : nat, addrtype#585 : addrtype, limits#585 : limits, lim : limits}: + `%|-%:%`(C, `MEMORY.FILL`_instr{memidx#34}(x), `%->_%%`_instrtype{resulttype#1875, `localidx*#1127`}(`%`_resulttype{`X*#8339`}([(at : addrtype <: valtype) `I32`_valtype (at : addrtype <: valtype)]), [], `%`_resulttype{`X*#8388`}([]))) + -- if (C.`MEMS`_context{`memtype*#9`}[x!`%`_idx{i#7823}.0] = `%%PAGE`_memtype{addrtype#585, limits#585}(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)) + rule memory.copy{C : context, memidx#36 : memidx, x_1 : idx, x_2 : idx, resulttype#1895 : resulttype, `localidx*#1139` : localidx*, `X*#8409` : valtype*, at_1 : addrtype, at_2 : addrtype, `X*#8458` : valtype*, `memtype*#10` : memtype*, i#7861 : nat, addrtype#597 : addrtype, limits#597 : limits, lim_1 : limits, `memtype*#11` : memtype*, i#7871 : nat, addrtype#609 : addrtype, limits#609 : limits, lim_2 : limits}: + `%|-%:%`(C, `MEMORY.COPY`_instr{memidx#36}(x_1, x_2), `%->_%%`_instrtype{resulttype#1895, `localidx*#1139`}(`%`_resulttype{`X*#8409`}([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype{`X*#8458`}([]))) + -- if (C.`MEMS`_context{`memtype*#10`}[x_1!`%`_idx{i#7861}.0] = `%%PAGE`_memtype{addrtype#597, limits#597}(at_1, lim_1)) + -- if (C.`MEMS`_context{`memtype*#11`}[x_2!`%`_idx{i#7871}.0] = `%%PAGE`_memtype{addrtype#609, limits#609}(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) + rule memory.init{C : context, memidx#39 : memidx, dataidx#13 : dataidx, x : idx, y : idx, resulttype#1915 : resulttype, `localidx*#1151` : localidx*, `X*#8479` : valtype*, at : addrtype, `X*#8528` : valtype*, `memtype*#12` : memtype*, i#7909 : nat, addrtype#621 : addrtype, limits#621 : limits, lim : limits, `datatype*#9` : datatype*, i#7919 : nat}: + `%|-%:%`(C, `MEMORY.INIT`_instr{memidx#39, dataidx#13}(x, y), `%->_%%`_instrtype{resulttype#1915, `localidx*#1151`}(`%`_resulttype{`X*#8479`}([(at : addrtype <: valtype) `I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#8528`}([]))) + -- if (C.`MEMS`_context{`memtype*#12`}[x!`%`_idx{i#7909}.0] = `%%PAGE`_memtype{addrtype#621, limits#621}(at, lim)) + -- if (C.`DATAS`_context{`datatype*#9`}[y!`%`_idx{i#7919}.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) + rule data.drop{C : context, dataidx#15 : dataidx, x : idx, resulttype#1935 : resulttype, `localidx*#1163` : localidx*, `X*#8549` : valtype*, `X*#8598` : valtype*, `datatype*#10` : datatype*, i#7943 : nat}: + `%|-%:%`(C, `DATA.DROP`_instr{dataidx#15}(x), `%->_%%`_instrtype{resulttype#1935, `localidx*#1163`}(`%`_resulttype{`X*#8549`}([]), [], `%`_resulttype{`X*#8598`}([]))) + -- if (C.`DATAS`_context{`datatype*#10`}[x!`%`_idx{i#7943}.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)) + rule `load-val`{C : context, `numtype?#3` : numtype?, memidx#41 : memidx, memarg#13 : memarg, nt : numtype, x : idx, memarg : memarg, resulttype#1955 : resulttype, `localidx*#1175` : localidx*, `X*#8609` : valtype*, at : addrtype, `X*#8677` : valtype*, `memtype*#13` : memtype*, i#7967 : nat, addrtype#633 : addrtype, limits#633 : limits, lim : limits}: + `%|-%:%`(C, `LOAD`_instr{`numtype?#3`, memidx#41, memarg#13}(nt, ?(), x, memarg), `%->_%%`_instrtype{resulttype#1955, `localidx*#1175`}(`%`_resulttype{`X*#8609`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#8677`}([(nt : numtype <: valtype)]))) + -- if (C.`MEMS`_context{`memtype*#13`}[x!`%`_idx{i#7967}.0] = `%%PAGE`_memtype{addrtype#633, limits#633}(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 : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(M), sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : Inn <: valtype)]))) - -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) + rule `load-pack`{C : context, `numtype?#4` : numtype?, memidx#43 : memidx, memarg#15 : memarg, Inn : Inn, sz#5 : sz, sx#7 : sx, i#7993 : nat, i#8000 : nat, M : M, sx : sx, x : idx, memarg : memarg, resulttype#1975 : resulttype, `localidx*#1187` : localidx*, `X*#8688` : valtype*, at : addrtype, `X*#8756` : valtype*, `memtype*#14` : memtype*, i#8024 : nat, addrtype#645 : addrtype, limits#645 : limits, lim : limits}: + `%|-%:%`(C, `LOAD`_instr{`numtype?#4`, memidx#43, memarg#15}((Inn : Inn <: numtype), ?(`%_%`_loadop_{sz#5, sx#7, i#7993}(`%`_sz{i#8000}(M), sx)), x, memarg), `%->_%%`_instrtype{resulttype#1975, `localidx*#1187`}(`%`_resulttype{`X*#8688`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#8756`}([(Inn : Inn <: valtype)]))) + -- if (C.`MEMS`_context{`memtype*#14`}[x!`%`_idx{i#8024}.0] = `%%PAGE`_memtype{addrtype#645, limits#645}(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)) + rule `store-val`{C : context, `numtype?#5` : numtype?, memidx#45 : memidx, memarg#17 : memarg, nt : numtype, x : idx, memarg : memarg, resulttype#1995 : resulttype, `localidx*#1199` : localidx*, `X*#8777` : valtype*, at : addrtype, `X*#8826` : valtype*, `memtype*#15` : memtype*, i#8048 : nat, addrtype#657 : addrtype, limits#657 : limits, lim : limits}: + `%|-%:%`(C, `STORE`_instr{`numtype?#5`, memidx#45, memarg#17}(nt, ?(), x, memarg), `%->_%%`_instrtype{resulttype#1995, `localidx*#1199`}(`%`_resulttype{`X*#8777`}([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype{`X*#8826`}([]))) + -- if (C.`MEMS`_context{`memtype*#15`}[x!`%`_idx{i#8048}.0] = `%%PAGE`_memtype{addrtype#657, limits#657}(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 : Inn <: numtype), ?(`%`_storeop_(`%`_sz(M))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : Inn <: valtype)]), [], `%`_resulttype([]))) - -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) + rule `store-pack`{C : context, `numtype?#6` : numtype?, memidx#47 : memidx, memarg#19 : memarg, Inn : Inn, sz#7 : sz, i#8091 : nat, i#8092 : nat, M : M, x : idx, memarg : memarg, resulttype#2015 : resulttype, `localidx*#1211` : localidx*, `X*#8847` : valtype*, at : addrtype, `X*#8896` : valtype*, `memtype*#16` : memtype*, i#8116 : nat, addrtype#669 : addrtype, limits#669 : limits, lim : limits}: + `%|-%:%`(C, `STORE`_instr{`numtype?#6`, memidx#47, memarg#19}((Inn : Inn <: numtype), ?(`%`_storeop_{sz#7, i#8091}(`%`_sz{i#8092}(M))), x, memarg), `%->_%%`_instrtype{resulttype#2015, `localidx*#1211`}(`%`_resulttype{`X*#8847`}([(at : addrtype <: valtype) (Inn : Inn <: valtype)]), [], `%`_resulttype{`X*#8896`}([]))) + -- if (C.`MEMS`_context{`memtype*#16`}[x!`%`_idx{i#8116}.0] = `%%PAGE`_memtype{addrtype#669, limits#669}(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)) + rule `vload-val`{C : context, `vectype?#2` : vectype?, memidx#49 : memidx, memarg#21 : memarg, x : idx, memarg : memarg, resulttype#2035 : resulttype, `localidx*#1223` : localidx*, `X*#8907` : valtype*, at : addrtype, `X*#8975` : valtype*, `memtype*#17` : memtype*, i#8140 : nat, addrtype#681 : addrtype, limits#681 : limits, lim : limits}: + `%|-%:%`(C, `VLOAD`_instr{`vectype?#2`, memidx#49, memarg#21}(`V128`_vectype, ?(), x, memarg), `%->_%%`_instrtype{resulttype#2035, `localidx*#1223`}(`%`_resulttype{`X*#8907`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#8975`}([`V128`_valtype]))) + -- if (C.`MEMS`_context{`memtype*#17`}[x!`%`_idx{i#8140}.0] = `%%PAGE`_memtype{addrtype#681, limits#681}(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)) + rule `vload-pack`{C : context, `vectype?#3` : vectype?, memidx#51 : memidx, memarg#23 : memarg, sz#54 : sz, M#16 : M, sx#24 : sx, i#8166 : nat, i#8173 : nat, M : M, N : N, sx : sx, x : idx, memarg : memarg, resulttype#2055 : resulttype, `localidx*#1235` : localidx*, `X*#8986` : valtype*, at : addrtype, `X*#9054` : valtype*, `memtype*#18` : memtype*, i#8197 : nat, addrtype#693 : addrtype, limits#693 : limits, lim : limits}: + `%|-%:%`(C, `VLOAD`_instr{`vectype?#3`, memidx#51, memarg#23}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#54, M#16, sx#24, i#8166}(`%`_sz{i#8173}(M), N, sx)), x, memarg), `%->_%%`_instrtype{resulttype#2055, `localidx*#1235`}(`%`_resulttype{`X*#8986`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#9054`}([`V128`_valtype]))) + -- if (C.`MEMS`_context{`memtype*#18`}[x!`%`_idx{i#8197}.0] = `%%PAGE`_memtype{addrtype#693, limits#693}(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)) + rule `vload-splat`{C : context, `vectype?#4` : vectype?, memidx#53 : memidx, memarg#25 : memarg, sz#101 : sz, i#8229 : nat, N : N, x : idx, memarg : memarg, resulttype#2075 : resulttype, `localidx*#1247` : localidx*, `X*#9065` : valtype*, at : addrtype, `X*#9133` : valtype*, `memtype*#19` : memtype*, i#8253 : nat, addrtype#705 : addrtype, limits#705 : limits, lim : limits}: + `%|-%:%`(C, `VLOAD`_instr{`vectype?#4`, memidx#53, memarg#25}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#101}(`%`_sz{i#8229}(N))), x, memarg), `%->_%%`_instrtype{resulttype#2075, `localidx*#1247`}(`%`_resulttype{`X*#9065`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#9133`}([`V128`_valtype]))) + -- if (C.`MEMS`_context{`memtype*#19`}[x!`%`_idx{i#8253}.0] = `%%PAGE`_memtype{addrtype#705, limits#705}(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)) + rule `vload-zero`{C : context, `vectype?#5` : vectype?, memidx#55 : memidx, memarg#27 : memarg, sz#148 : sz, i#8279 : nat, i#8286 : nat, N : N, x : idx, memarg : memarg, resulttype#2095 : resulttype, `localidx*#1259` : localidx*, `X*#9144` : valtype*, at : addrtype, `X*#9212` : valtype*, `memtype*#20` : memtype*, i#8310 : nat, addrtype#717 : addrtype, limits#717 : limits, lim : limits}: + `%|-%:%`(C, `VLOAD`_instr{`vectype?#5`, memidx#55, memarg#27}(`V128`_vectype, ?(`ZERO`_vloadop_{sz#148, i#8279}(`%`_sz{i#8286}(N))), x, memarg), `%->_%%`_instrtype{resulttype#2095, `localidx*#1259`}(`%`_resulttype{`X*#9144`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#9212`}([`V128`_valtype]))) + -- if (C.`MEMS`_context{`memtype*#20`}[x!`%`_idx{i#8310}.0] = `%%PAGE`_memtype{addrtype#717, limits#717}(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)) + rule vload_lane{C : context, vectype#24 : vectype, sz#150 : sz, memidx#57 : memidx, memarg#29 : memarg, laneidx#9 : laneidx, i#8318 : nat, N : N, x : idx, memarg : memarg, i : laneidx, resulttype#2115 : resulttype, `localidx*#1271` : localidx*, `X*#9233` : valtype*, at : addrtype, `X*#9282` : valtype*, `memtype*#21` : memtype*, i#8356 : nat, addrtype#729 : addrtype, limits#729 : limits, lim : limits, i#8370 : nat}: + `%|-%:%`(C, `VLOAD_LANE`_instr{vectype#24, sz#150, memidx#57, memarg#29, laneidx#9}(`V128`_vectype, `%`_sz{i#8318}(N), x, memarg, i), `%->_%%`_instrtype{resulttype#2115, `localidx*#1271`}(`%`_resulttype{`X*#9233`}([(at : addrtype <: valtype) `V128`_valtype]), [], `%`_resulttype{`X*#9282`}([`V128`_valtype]))) + -- if (C.`MEMS`_context{`memtype*#21`}[x!`%`_idx{i#8356}.0] = `%%PAGE`_memtype{addrtype#729, limits#729}(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) - -- if ((i!`%`_laneidx.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) + -- if ((i!`%`_laneidx{i#8370}.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)) + rule vstore{C : context, vectype#26 : vectype, memidx#59 : memidx, memarg#31 : memarg, x : idx, memarg : memarg, resulttype#2135 : resulttype, `localidx*#1283` : localidx*, `X*#9303` : valtype*, at : addrtype, `X*#9352` : valtype*, `memtype*#22` : memtype*, i#8394 : nat, addrtype#741 : addrtype, limits#741 : limits, lim : limits}: + `%|-%:%`(C, `VSTORE`_instr{vectype#26, memidx#59, memarg#31}(`V128`_vectype, x, memarg), `%->_%%`_instrtype{resulttype#2135, `localidx*#1283`}(`%`_resulttype{`X*#9303`}([(at : addrtype <: valtype) `V128`_valtype]), [], `%`_resulttype{`X*#9352`}([]))) + -- if (C.`MEMS`_context{`memtype*#22`}[x!`%`_idx{i#8394}.0] = `%%PAGE`_memtype{addrtype#741, limits#741}(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)) + rule vstore_lane{C : context, vectype#28 : vectype, sz#152 : sz, memidx#61 : memidx, memarg#33 : memarg, laneidx#11 : laneidx, i#8402 : nat, N : N, x : idx, memarg : memarg, i : laneidx, resulttype#2155 : resulttype, `localidx*#1295` : localidx*, `X*#9373` : valtype*, at : addrtype, `X*#9422` : valtype*, `memtype*#23` : memtype*, i#8440 : nat, addrtype#753 : addrtype, limits#753 : limits, lim : limits, i#8454 : nat}: + `%|-%:%`(C, `VSTORE_LANE`_instr{vectype#28, sz#152, memidx#61, memarg#33, laneidx#11}(`V128`_vectype, `%`_sz{i#8402}(N), x, memarg, i), `%->_%%`_instrtype{resulttype#2155, `localidx*#1295`}(`%`_resulttype{`X*#9373`}([(at : addrtype <: valtype) `V128`_valtype]), [], `%`_resulttype{`X*#9422`}([]))) + -- if (C.`MEMS`_context{`memtype*#23`}[x!`%`_idx{i#8440}.0] = `%%PAGE`_memtype{addrtype#753, limits#753}(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) - -- if ((i!`%`_laneidx.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) + -- if ((i!`%`_laneidx{i#8454}.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)]))) + rule const{C : context, numtype#19 : numtype, nt : numtype, c_nt : num_(nt), resulttype#2175 : resulttype, `localidx*#1307` : localidx*, `X*#9443` : valtype*, `X*#9492` : valtype*}: + `%|-%:%`(C, `CONST`_instr{numtype#19}(nt, c_nt), `%->_%%`_instrtype{resulttype#2175, `localidx*#1307`}(`%`_resulttype{`X*#9443`}([]), [], `%`_resulttype{`X*#9492`}([(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)]))) + rule unop{C : context, numtype#21 : numtype, nt : numtype, unop_nt : unop_(nt), resulttype#2195 : resulttype, `localidx*#1319` : localidx*, `X*#9503` : valtype*, `X*#9571` : valtype*}: + `%|-%:%`(C, `UNOP`_instr{numtype#21}(nt, unop_nt), `%->_%%`_instrtype{resulttype#2195, `localidx*#1319`}(`%`_resulttype{`X*#9503`}([(nt : numtype <: valtype)]), [], `%`_resulttype{`X*#9571`}([(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)]))) + rule binop{C : context, numtype#23 : numtype, nt : numtype, binop_nt : binop_(nt), resulttype#2215 : resulttype, `localidx*#1331` : localidx*, `X*#9592` : valtype*, `X*#9641` : valtype*}: + `%|-%:%`(C, `BINOP`_instr{numtype#23}(nt, binop_nt), `%->_%%`_instrtype{resulttype#2215, `localidx*#1331`}(`%`_resulttype{`X*#9592`}([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype{`X*#9641`}([(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]))) + rule testop{C : context, numtype#25 : numtype, nt : numtype, testop_nt : testop_(nt), resulttype#2235 : resulttype, `localidx*#1343` : localidx*, `X*#9652` : valtype*, `X*#9720` : valtype*}: + `%|-%:%`(C, `TESTOP`_instr{numtype#25}(nt, testop_nt), `%->_%%`_instrtype{resulttype#2235, `localidx*#1343`}(`%`_resulttype{`X*#9652`}([(nt : numtype <: valtype)]), [], `%`_resulttype{`X*#9720`}([`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]))) + rule relop{C : context, numtype#27 : numtype, nt : numtype, relop_nt : relop_(nt), resulttype#2255 : resulttype, `localidx*#1355` : localidx*, `X*#9741` : valtype*, `X*#9790` : valtype*}: + `%|-%:%`(C, `RELOP`_instr{numtype#27}(nt, relop_nt), `%->_%%`_instrtype{resulttype#2255, `localidx*#1355`}(`%`_resulttype{`X*#9741`}([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype{`X*#9790`}([`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)]))) + rule cvtop{C : context, numtype_1#3 : numtype, numtype_2#3 : numtype, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__(nt_2, nt_1), resulttype#2275 : resulttype, `localidx*#1367` : localidx*, `X*#9801` : valtype*, `X*#9869` : valtype*}: + `%|-%:%`(C, `CVTOP`_instr{numtype_1#3, numtype_2#3}(nt_1, nt_2, cvtop), `%->_%%`_instrtype{resulttype#2275, `localidx*#1367`}(`%`_resulttype{`X*#9801`}([(nt_2 : numtype <: valtype)]), [], `%`_resulttype{`X*#9869`}([(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]))) + rule vconst{C : context, vectype#30 : vectype, c : vec_(`V128`_Vnn), resulttype#2295 : resulttype, `localidx*#1379` : localidx*, `X*#9890` : valtype*, `X*#9939` : valtype*}: + `%|-%:%`(C, `VCONST`_instr{vectype#30}(`V128`_vectype, c), `%->_%%`_instrtype{resulttype#2295, `localidx*#1379`}(`%`_resulttype{`X*#9890`}([]), [], `%`_resulttype{`X*#9939`}([`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]))) + rule vvunop{C : context, vectype#32 : vectype, vvunop#3 : vvunop, vvunop : vvunop, resulttype#2315 : resulttype, `localidx*#1391` : localidx*, `X*#9958` : valtype*, `X*#10007` : valtype*}: + `%|-%:%`(C, `VVUNOP`_instr{vectype#32, vvunop#3}(`V128`_vectype, vvunop), `%->_%%`_instrtype{resulttype#2315, `localidx*#1391`}(`%`_resulttype{`X*#9958`}([`V128`_valtype]), [], `%`_resulttype{`X*#10007`}([`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]))) + rule vvbinop{C : context, vectype#34 : vectype, vvbinop#3 : vvbinop, vvbinop : vvbinop, resulttype#2335 : resulttype, `localidx*#1403` : localidx*, `X*#10028` : valtype*, `X*#10077` : valtype*}: + `%|-%:%`(C, `VVBINOP`_instr{vectype#34, vvbinop#3}(`V128`_vectype, vvbinop), `%->_%%`_instrtype{resulttype#2335, `localidx*#1403`}(`%`_resulttype{`X*#10028`}([`V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#10077`}([`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]))) + rule vvternop{C : context, vectype#36 : vectype, vvternop#3 : vvternop, vvternop : vvternop, resulttype#2355 : resulttype, `localidx*#1415` : localidx*, `X*#10098` : valtype*, `X*#10147` : valtype*}: + `%|-%:%`(C, `VVTERNOP`_instr{vectype#36, vvternop#3}(`V128`_vectype, vvternop), `%->_%%`_instrtype{resulttype#2355, `localidx*#1415`}(`%`_resulttype{`X*#10098`}([`V128`_valtype `V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#10147`}([`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]))) + rule vvtestop{C : context, vectype#38 : vectype, vvtestop#3 : vvtestop, vvtestop : vvtestop, resulttype#2375 : resulttype, `localidx*#1427` : localidx*, `X*#10166` : valtype*, `X*#10215` : valtype*}: + `%|-%:%`(C, `VVTESTOP`_instr{vectype#38, vvtestop#3}(`V128`_vectype, vvtestop), `%->_%%`_instrtype{resulttype#2375, `localidx*#1427`}(`%`_resulttype{`X*#10166`}([`V128`_valtype]), [], `%`_resulttype{`X*#10215`}([`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]))) + rule vunop{C : context, shape#269 : shape, sh : shape, vunop : vunop_(sh), resulttype#2395 : resulttype, `localidx*#1439` : localidx*, `X*#10234` : valtype*, `X*#10283` : valtype*}: + `%|-%:%`(C, `VUNOP`_instr{shape#269}(sh, vunop), `%->_%%`_instrtype{resulttype#2395, `localidx*#1439`}(`%`_resulttype{`X*#10234`}([`V128`_valtype]), [], `%`_resulttype{`X*#10283`}([`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]))) + rule vbinop{C : context, shape#271 : shape, sh : shape, vbinop : vbinop_(sh), resulttype#2415 : resulttype, `localidx*#1451` : localidx*, `X*#10304` : valtype*, `X*#10353` : valtype*}: + `%|-%:%`(C, `VBINOP`_instr{shape#271}(sh, vbinop), `%->_%%`_instrtype{resulttype#2415, `localidx*#1451`}(`%`_resulttype{`X*#10304`}([`V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#10353`}([`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]))) + rule vternop{C : context, shape#273 : shape, sh : shape, vternop : vternop_(sh), resulttype#2435 : resulttype, `localidx*#1463` : localidx*, `X*#10374` : valtype*, `X*#10423` : valtype*}: + `%|-%:%`(C, `VTERNOP`_instr{shape#273}(sh, vternop), `%->_%%`_instrtype{resulttype#2435, `localidx*#1463`}(`%`_resulttype{`X*#10374`}([`V128`_valtype `V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#10423`}([`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]))) + rule vtestop{C : context, shape#275 : shape, sh : shape, vtestop : vtestop_(sh), resulttype#2455 : resulttype, `localidx*#1475` : localidx*, `X*#10442` : valtype*, `X*#10491` : valtype*}: + `%|-%:%`(C, `VTESTOP`_instr{shape#275}(sh, vtestop), `%->_%%`_instrtype{resulttype#2455, `localidx*#1475`}(`%`_resulttype{`X*#10442`}([`V128`_valtype]), [], `%`_resulttype{`X*#10491`}([`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]))) + rule vrelop{C : context, shape#277 : shape, sh : shape, vrelop : vrelop_(sh), resulttype#2475 : resulttype, `localidx*#1487` : localidx*, `X*#10512` : valtype*, `X*#10561` : valtype*}: + `%|-%:%`(C, `VRELOP`_instr{shape#277}(sh, vrelop), `%->_%%`_instrtype{resulttype#2475, `localidx*#1487`}(`%`_resulttype{`X*#10512`}([`V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#10561`}([`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]))) + rule vshiftop{C : context, ishape#5 : ishape, sh : ishape, vshiftop : vshiftop_(sh), resulttype#2495 : resulttype, `localidx*#1499` : localidx*, `X*#10582` : valtype*, `X*#10631` : valtype*}: + `%|-%:%`(C, `VSHIFTOP`_instr{ishape#5}(sh, vshiftop), `%->_%%`_instrtype{resulttype#2495, `localidx*#1499`}(`%`_resulttype{`X*#10582`}([`V128`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#10631`}([`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]))) + rule vbitmask{C : context, ishape#7 : ishape, sh : ishape, resulttype#2515 : resulttype, `localidx*#1511` : localidx*, `X*#10650` : valtype*, `X*#10699` : valtype*}: + `%|-%:%`(C, `VBITMASK`_instr{ishape#7}(sh), `%->_%%`_instrtype{resulttype#2515, `localidx*#1511`}(`%`_resulttype{`X*#10650`}([`V128`_valtype]), [], `%`_resulttype{`X*#10699`}([`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]))) + rule vswizzlop{C : context, bshape#5 : bshape, sh : bshape, vswizzlop : vswizzlop_(sh), resulttype#2535 : resulttype, `localidx*#1523` : localidx*, `X*#10720` : valtype*, `X*#10769` : valtype*}: + `%|-%:%`(C, `VSWIZZLOP`_instr{bshape#5}(sh, vswizzlop), `%->_%%`_instrtype{resulttype#2535, `localidx*#1523`}(`%`_resulttype{`X*#10720`}([`V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#10769`}([`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*`} + rule vshuffle{C : context, bshape#7 : bshape, `laneidx*#3` : laneidx*, i#8480 : nat, shape#297 : shape, sh : bshape, `i*` : laneidx*, resulttype#2555 : resulttype, `localidx*#1535` : localidx*, `X*#10790` : valtype*, `X*#10839` : valtype*, `i#8509*` : nat*, `i#8523*` : nat*, `shape#304*` : shape*}: + `%|-%:%`(C, `VSHUFFLE`_instr{bshape#7, `laneidx*#3`, i#8480, shape#297}(sh, i*{i <- `i*`}), `%->_%%`_instrtype{resulttype#2555, `localidx*#1535`}(`%`_resulttype{`X*#10790`}([`V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#10839`}([`V128`_valtype]))) + -- (if (i!`%`_laneidx{i#8523}.0 < (2 * $dim(sh!`%`_bshape{shape#304}.0)!`%`_dim{i#8509}.0)))*{i <- `i*`, i#8509 <- `i#8509*`, i#8523 <- `i#8523*`, shape#304 <- `shape#304*`} ;; ../../../../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]))) + rule vsplat{C : context, shape#306 : shape, sh : shape, resulttype#2575 : resulttype, `localidx*#1547` : localidx*, `X*#10850` : valtype*, `X*#10916` : valtype*}: + `%|-%:%`(C, `VSPLAT`_instr{shape#306}(sh), `%->_%%`_instrtype{resulttype#2575, `localidx*#1547`}(`%`_resulttype{`X*#10850`}([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype{`X*#10916`}([`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) + rule vextract_lane{C : context, shape#308 : shape, `sx?#11` : sx?, laneidx#13 : laneidx, sh : shape, `sx?` : sx?, i : laneidx, resulttype#2595 : resulttype, `localidx*#1559` : localidx*, `X*#10935` : valtype*, `X*#10984` : valtype*, i#8600 : nat, i#8602 : nat}: + `%|-%:%`(C, `VEXTRACT_LANE`_instr{shape#308, `sx?#11`, laneidx#13}(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype{resulttype#2595, `localidx*#1559`}(`%`_resulttype{`X*#10935`}([`V128`_valtype]), [], `%`_resulttype{`X*#10984`}([($unpackshape(sh) : numtype <: valtype)]))) + -- if (i!`%`_laneidx{i#8600}.0 < $dim(sh)!`%`_dim{i#8602}.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) + rule vreplace_lane{C : context, shape#310 : shape, laneidx#15 : laneidx, sh : shape, i : laneidx, resulttype#2615 : resulttype, `localidx*#1571` : localidx*, `X*#11005` : valtype*, `X*#11054` : valtype*, i#8636 : nat, i#8638 : nat}: + `%|-%:%`(C, `VREPLACE_LANE`_instr{shape#310, laneidx#15}(sh, i), `%->_%%`_instrtype{resulttype#2615, `localidx*#1571`}(`%`_resulttype{`X*#11005`}([`V128`_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype{`X*#11054`}([`V128`_valtype]))) + -- if (i!`%`_laneidx{i#8636}.0 < $dim(sh)!`%`_dim{i#8638}.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]))) + rule vextunop{C : context, ishape_1#9 : ishape, ishape_2#9 : ishape, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__(sh_2, sh_1), resulttype#2635 : resulttype, `localidx*#1583` : localidx*, `X*#11073` : valtype*, `X*#11122` : valtype*}: + `%|-%:%`(C, `VEXTUNOP`_instr{ishape_1#9, ishape_2#9}(sh_1, sh_2, vextunop), `%->_%%`_instrtype{resulttype#2635, `localidx*#1583`}(`%`_resulttype{`X*#11073`}([`V128`_valtype]), [], `%`_resulttype{`X*#11122`}([`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]))) + rule vextbinop{C : context, ishape_1#11 : ishape, ishape_2#11 : ishape, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__(sh_2, sh_1), resulttype#2655 : resulttype, `localidx*#1595` : localidx*, `X*#11143` : valtype*, `X*#11192` : valtype*}: + `%|-%:%`(C, `VEXTBINOP`_instr{ishape_1#11, ishape_2#11}(sh_1, sh_2, vextbinop), `%->_%%`_instrtype{resulttype#2655, `localidx*#1595`}(`%`_resulttype{`X*#11143`}([`V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#11192`}([`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]))) + rule vextternop{C : context, ishape_1#13 : ishape, ishape_2#13 : ishape, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__(sh_2, sh_1), resulttype#2675 : resulttype, `localidx*#1607` : localidx*, `X*#11213` : valtype*, `X*#11262` : valtype*}: + `%|-%:%`(C, `VEXTTERNOP`_instr{ishape_1#13, ishape_2#13}(sh_1, sh_2, vextternop), `%->_%%`_instrtype{resulttype#2675, `localidx*#1607`}(`%`_resulttype{`X*#11213`}([`V128`_valtype `V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#11262`}([`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]))) + rule vnarrow{C : context, ishape_1#15 : ishape, ishape_2#15 : ishape, sx#56 : sx, shape#348 : shape, Jnn#95 : Jnn, shape#349 : shape, Jnn#96 : Jnn, shape#350 : shape, Jnn#97 : Jnn, sh_1 : ishape, sh_2 : ishape, sx : sx, resulttype#2695 : resulttype, `localidx*#1619` : localidx*, `X*#11283` : valtype*, `X*#11332` : valtype*}: + `%|-%:%`(C, `VNARROW`_instr{ishape_1#15, ishape_2#15, sx#56, shape#348, Jnn#95, shape#349, Jnn#96, shape#350, Jnn#97}(sh_1, sh_2, sx), `%->_%%`_instrtype{resulttype#2695, `localidx*#1619`}(`%`_resulttype{`X*#11283`}([`V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#11332`}([`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]))) + rule vcvtop{C : context, shape_1#3 : shape, shape_2#3 : shape, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__(sh_2, sh_1), resulttype#2715 : resulttype, `localidx*#1631` : localidx*, `X*#11351` : valtype*, `X*#11400` : valtype*}: + `%|-%:%`(C, `VCVTOP`_instr{shape_1#3, shape_2#3}(sh_1, sh_2, vcvtop), `%->_%%`_instrtype{resulttype#2715, `localidx*#1631`}(`%`_resulttype{`X*#11351`}([`V128`_valtype]), [], `%`_resulttype{`X*#11400`}([`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([]))) + rule empty{C : context, resulttype#2735 : resulttype, `localidx*#1643` : localidx*, `X*#11421` : valtype*, `X*#11470` : valtype*}: + `%|-%:%`(C, [], `%->_%%`_instrtype{resulttype#2735, `localidx*#1643`}(`%`_resulttype{`X*#11421`}([]), [], `%`_resulttype{`X*#11470`}([]))) ;; ../../../../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*`}))) + rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, resulttype#2755 : resulttype, `localidx*#1655` : localidx*, `X*#11481` : valtype*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `X*#11542` : valtype*, `t_3*` : valtype*, resulttype#2775 : resulttype, `localidx*#1667` : localidx*, `X*#11555` : valtype*, `X*#11607` : valtype*, `t_2*` : valtype*, `i#8868*` : nat*, `init*` : init*, `init#113*` : init*, `localtype*#13*` : localtype**, `t*` : valtype*, `valtype#403*` : valtype*, `init#131*` : init*, `valtype#421*` : valtype*, resulttype#2795 : resulttype, `localidx*#1679` : localidx*, `X*#11620` : valtype*, `X*#11672` : valtype*}: + `%|-%:%`(C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype{resulttype#2755, `localidx*#1655`}(`%`_resulttype{`X*#11481`}(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype{`X*#11542`}(t_3*{t_3 <- `t_3*`}))) + -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype{resulttype#2775, `localidx*#1667`}(`%`_resulttype{`X*#11555`}(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype{`X*#11607`}(t_2*{t_2 <- `t_2*`}))) + -- (if (C.`LOCALS`_context{`localtype*#13`}[x_1!`%`_idx{i#8868}.0] = `%%`_localtype{init#113, valtype#403}(init, t)))*{i#8868 <- `i#8868*`, init <- `init*`, init#113 <- `init#113*`, `localtype*#13` <- `localtype*#13*`, t <- `t*`, valtype#403 <- `valtype#403*`, x_1 <- `x_1*`} + -- Instrs_ok: `%|-%:%`($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype{init#131, valtype#421}(`SET`_init, t)*{init#131 <- `init#131*`, t <- `t*`, valtype#421 <- `valtype#421*`}), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype{resulttype#2795, `localidx*#1679`}(`%`_resulttype{`X*#11620`}(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype{`X*#11672`}(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}: @@ -3955,18 +115514,18 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) -- 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*`})) + rule frame{C : context, `instr*` : instr*, resulttype#2865 : resulttype, `localidx*#1721` : localidx*, `X*#11695` : valtype*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `X*#11755` : valtype*, `t_2*` : valtype*, resulttype#2885 : resulttype, `localidx*#1733` : localidx*, `X*#11766` : valtype*, `X*#11818` : valtype*, `X*#11831` : valtype*}: + `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype{resulttype#2865, `localidx*#1721`}(`%`_resulttype{`X*#11695`}(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype{`X*#11755`}(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype{resulttype#2885, `localidx*#1733`}(`%`_resulttype{`X*#11766`}(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype{`X*#11818`}(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype{`X*#11831`}(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*`}))) + rule _{C : context, `instr*` : instr*, `X*#11844` : valtype*, `t*` : valtype*, resulttype#2905 : resulttype, `localidx*#1745` : localidx*, `X*#11867` : valtype*, `X*#11911` : valtype*}: + `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype{`X*#11844`}(t*{t <- `t*`})) + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype{resulttype#2905, `localidx*#1745`}(`%`_resulttype{`X*#11867`}([]), [], `%`_resulttype{`X*#11911`}(t*{t <- `t*`}))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) @@ -3978,63 +115537,63 @@ relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) ;; ../../../../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)) + rule const{C : context, numtype#29 : numtype, nt : numtype, c_nt : num_(nt)}: + `%|-%CONST`(C, `CONST`_instr{numtype#29}(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)) + rule vconst{C : context, vectype#40 : vectype, vt : vectype, c_vt : vec_(vt)}: + `%|-%CONST`(C, `VCONST`_instr{vectype#40}(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)) + rule ref.null{C : context, heaptype#945 : heaptype, ht : heaptype}: + `%|-%CONST`(C, `REF.NULL`_instr{heaptype#945}(ht)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule ref.i31{C : context}: - `%|-%CONST`(C, REF.I31_instr) + `%|-%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)) + rule ref.func{C : context, funcidx#183 : funcidx, x : idx}: + `%|-%CONST`(C, `REF.FUNC`_instr{funcidx#183}(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule struct.new{C : context, x : idx}: - `%|-%CONST`(C, STRUCT.NEW_instr(x)) + rule struct.new{C : context, typeidx#469 : typeidx, x : idx}: + `%|-%CONST`(C, `STRUCT.NEW`_instr{typeidx#469}(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)) + rule struct.new_default{C : context, typeidx#471 : typeidx, x : idx}: + `%|-%CONST`(C, `STRUCT.NEW_DEFAULT`_instr{typeidx#471}(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule array.new{C : context, x : idx}: - `%|-%CONST`(C, ARRAY.NEW_instr(x)) + rule array.new{C : context, typeidx#473 : typeidx, x : idx}: + `%|-%CONST`(C, `ARRAY.NEW`_instr{typeidx#473}(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)) + rule array.new_default{C : context, typeidx#475 : typeidx, x : idx}: + `%|-%CONST`(C, `ARRAY.NEW_DEFAULT`_instr{typeidx#475}(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))) + rule array.new_fixed{C : context, typeidx#477 : typeidx, u32#15 : u32, x : idx, i#9243 : nat, n : n}: + `%|-%CONST`(C, `ARRAY.NEW_FIXED`_instr{typeidx#477, u32#15}(x, `%`_u32{i#9243}(n))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule any.convert_extern{C : context}: - `%|-%CONST`(C, ANY.CONVERT_EXTERN_instr) + `%|-%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) + `%|-%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)) + rule global.get{C : context, globalidx#13 : globalidx, x : idx, `globaltype*#10` : globaltype*, i#9277 : nat, `mut?#817` : mut?, valtype#427 : valtype, t : valtype}: + `%|-%CONST`(C, `GLOBAL.GET`_instr{globalidx#13}(x)) + -- if (C.`GLOBALS`_context{`globaltype*#10`}[x!`%`_idx{i#9277}.0] = `%%`_globaltype{`mut?#817`, valtype#427}(?(), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule binop{C : context, Inn : Inn, binop : binop_((Inn : Inn <: numtype))}: - `%|-%CONST`(C, BINOP_instr((Inn : Inn <: numtype), binop)) - -- if (Inn <- [I32_Inn I64_Inn]) - -- if (binop <- [ADD_binop_ SUB_binop_ MUL_binop_]) + rule binop{C : context, numtype#31 : numtype, Inn : Inn, binop : binop_((Inn : Inn <: numtype))}: + `%|-%CONST`(C, `BINOP`_instr{numtype#31}((Inn : Inn <: 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) @@ -4046,114 +115605,114 @@ relation Expr_const: `%|-%CONST`(context, expr) ;; ../../../../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}: + rule _{C : context, expr : expr, t : valtype, `X*#11922` : valtype*}: `%|-%:%CONST`(C, expr, t) - -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t])) + -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype{`X*#11922`}([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|) + rule _{C : context, rectype#865 : rectype, rectype : rectype, `dt*` : deftype*, x : idx, i#9287 : nat, `deftype*#53` : deftype*, `deftype*#54` : deftype*, `subtype*#10` : subtype*, `tagtype*#10` : tagtype*, `globaltype*#11` : globaltype*, `memtype*#24` : memtype*, `tabletype*#17` : tabletype*, `deftype*#55` : deftype*, `datatype*#11` : datatype*, `elemtype*#11` : elemtype*, `localtype*#14` : localtype*, `resulttype*#22` : resulttype*, `resulttype?#19` : resulttype?, `funcidx*#48` : funcidx*, typeidx#489 : typeidx}: + `%|-%:%`(C, `TYPE`_type{rectype#865}(rectype), dt*{dt <- `dt*`}) + -- if (x!`%`_idx{i#9287}.0 = |C.`TYPES`_context{`deftype*#53`}|) -- 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)) + -- Rectype_ok: `%|-%:%`(C +++ {`TYPES`{`deftype*#54`} dt*{dt <- `dt*`}, `RECS`{`subtype*#10`} [], `TAGS`{`tagtype*#10`} [], `GLOBALS`{`globaltype*#11`} [], `MEMS`{`memtype*#24`} [], `TABLES`{`tabletype*#17`} [], `FUNCS`{`deftype*#55`} [], `DATAS`{`datatype*#11`} [], `ELEMS`{`elemtype*#11`} [], `LOCALS`{`localtype*#14`} [], `LABELS`{`resulttype*#22`} [], `RETURN`{`resulttype?#19`} ?(), `REFS`{`funcidx*#48`} []}, rectype, `OK`_oktypeidx{typeidx#489}(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#105 : tagtype, tagtype : tagtype}: + `%|-%:%`(C, `TAG`_tag{tagtype#105}(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) + rule _{C : context, globaltype#117 : globaltype, expr#385 : expr, globaltype : globaltype, expr : expr, `mut?#847` : mut?, valtype#457 : valtype, t : valtype}: + `%|-%:%`(C, `GLOBAL`_global{globaltype#117, expr#385}(globaltype, expr), globaltype) -- Globaltype_ok: `%|-%:OK`(C, globaltype) - -- if (globaltype = `%%`_globaltype(MUT_mut?{}, t)) + -- if (globaltype = `%%`_globaltype{`mut?#847`, valtype#457}(`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) + rule _{C : context, memtype#129 : memtype, memtype : memtype}: + `%|-%:%`(C, `MEMORY`_mem{memtype#129}(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) + rule _{C : context, tabletype#143 : tabletype, expr#397 : expr, tabletype : tabletype, expr : expr, addrtype#801 : addrtype, limits#801 : limits, reftype#531 : reftype, at : addrtype, lim : limits, rt : reftype}: + `%|-%:%`(C, `TABLE`_table{tabletype#143, expr#397}(tabletype, expr), tabletype) -- Tabletype_ok: `%|-%:OK`(C, tabletype) - -- if (tabletype = `%%%`_tabletype(at, lim, rt)) + -- if (tabletype = `%%%`_tabletype{addrtype#801, limits#801, reftype#531}(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)) + rule set{C : context, valtype#469 : valtype, t : valtype, init#143 : init, valtype#481 : valtype}: + `%|-%:%`(C, `LOCAL`_local{valtype#469}(t), `%%`_localtype{init#143, valtype#481}(`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)) + rule unset{C : context, valtype#493 : valtype, t : valtype, init#155 : init, valtype#505 : valtype}: + `%|-%:%`(C, `LOCAL`_local{valtype#493}(t), `%%`_localtype{init#155, valtype#505}(`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*`}))) + rule _{C : context, typeidx#501 : typeidx, `local*#171` : local*, expr#409 : expr, x : idx, `local*` : local*, expr : expr, `deftype*#56` : deftype*, i#9337 : nat, `deftype*#57` : deftype*, i#9347 : nat, resulttype#2908 : resulttype, `X*#11954` : valtype*, `t_1*` : valtype*, `X*#11967` : valtype*, `t_2*` : valtype*, `lct*` : localtype*, `deftype*#58` : deftype*, `subtype*#11` : subtype*, `tagtype*#11` : tagtype*, `globaltype*#12` : globaltype*, `memtype*#25` : memtype*, `tabletype*#18` : tabletype*, `deftype*#59` : deftype*, `datatype*#12` : datatype*, `elemtype*#12` : elemtype*, `localtype*#15` : localtype*, `init#191*` : init*, `valtype#559*` : valtype*, `resulttype*#23` : resulttype*, `X*#11980` : valtype*, `resulttype?#20` : resulttype?, `X*#11993` : valtype*, `funcidx*#49` : funcidx*, `X*#12006` : valtype*}: + `%|-%:%`(C, `FUNC`_func{typeidx#501, `local*#171`, expr#409}(x, local*{local <- `local*`}, expr), C.`TYPES`_context{`deftype*#56`}[x!`%`_idx{i#9337}.0]) + -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#57`}[x!`%`_idx{i#9347}.0], `FUNC%->%`_comptype{resulttype#2908}(`%`_resulttype{`X*#11954`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#11967`}(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*`})) + -- Expr_ok: `%|-%:%`(C +++ {`TYPES`{`deftype*#58`} [], `RECS`{`subtype*#11`} [], `TAGS`{`tagtype*#11`} [], `GLOBALS`{`globaltype*#12`} [], `MEMS`{`memtype*#25`} [], `TABLES`{`tabletype*#18`} [], `FUNCS`{`deftype*#59`} [], `DATAS`{`datatype*#12`} [], `ELEMS`{`elemtype*#12`} [], `LOCALS`{`localtype*#15`} `%%`_localtype{init#191, valtype#559}(`SET`_init, t_1)*{init#191 <- `init#191*`, t_1 <- `t_1*`, valtype#559 <- `valtype#559*`} ++ lct*{lct <- `lct*`}, `LABELS`{`resulttype*#23`} [`%`_resulttype{`X*#11980`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#20`} ?(`%`_resulttype{`X*#11993`}(t_2*{t_2 <- `t_2*`})), `REFS`{`funcidx*#49`} []}, expr, `%`_resulttype{`X*#12006`}(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) + `%|-%:%`(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)) + rule active{C : context, memidx#63 : memidx, expr#411 : expr, x : idx, expr : expr, `memtype*#26` : memtype*, i#9383 : nat, addrtype#813 : addrtype, limits#813 : limits, at : addrtype, lim : limits}: + `%|-%:%`(C, `ACTIVE`_datamode{memidx#63, expr#411}(x, expr), `OK`_datatype) + -- if (C.`MEMS`_context{`memtype*#26`}[x!`%`_idx{i#9383}.0] = `%%PAGE`_memtype{addrtype#813, limits#813}(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) + rule _{C : context, `byte*#153` : byte*, datamode#153 : datamode, `b*` : byte*, datamode : datamode}: + `%|-%:%`(C, `DATA`_data{`byte*#153`, datamode#153}(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) + `%|-%:%`(C, `PASSIVE`_elemmode, rt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule declare{C : context, rt : reftype}: - `%|-%:%`(C, DECLARE_elemmode, rt) + `%|-%:%`(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')) + rule active{C : context, tableidx#45 : tableidx, expr#413 : expr, x : idx, expr : expr, rt : reftype, `tabletype*#19` : tabletype*, i#9407 : nat, addrtype#825 : addrtype, limits#825 : limits, reftype#555 : reftype, at : addrtype, lim : limits, rt' : reftype}: + `%|-%:%`(C, `ACTIVE`_elemmode{tableidx#45, expr#413}(x, expr), rt) + -- if (C.`TABLES`_context{`tabletype*#19`}[x!`%`_idx{i#9407}.0] = `%%%`_tabletype{addrtype#825, limits#825, reftype#555}(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) + rule _{C : context, reftype#543 : reftype, `expr*#165` : expr*, elemmode#165 : elemmode, elemtype : elemtype, `expr*` : expr*, elemmode : elemmode}: + `%|-%:%`(C, `ELEM`_elem{reftype#543, `expr*#165`, elemmode#165}(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) @@ -4161,49 +115720,49 @@ relation Elem_ok: `%|-%:%`(context, elem, 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([]))) + rule _{C : context, funcidx#195 : funcidx, x : idx, `deftype*#60` : deftype*, i#9431 : nat, resulttype#2911 : resulttype, `X*#12031` : valtype*, `X*#12052` : valtype*}: + `%|-%:OK`(C, `START`_start{funcidx#195}(x)) + -- Expand: `%~~%`(C.`FUNCS`_context{`deftype*#60`}[x!`%`_idx{i#9431}.0], `FUNC%->%`_comptype{resulttype#2911}(`%`_resulttype{`X*#12031`}([]), `%`_resulttype{`X*#12052`}([]))) ;; ../../../../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#309 : name, externtype#79 : externtype, name_1 : name, name_2 : name, xt : externtype}: + `%|-%:%`(C, `IMPORT`_import{name#309, externtype#79}(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) + rule tag{C : context, tagidx#9 : tagidx, x : idx, tagtype#107 : tagtype, jt : tagtype, `tagtype*#12` : tagtype*, i#9455 : nat}: + `%|-%:%`(C, `TAG`_externidx{tagidx#9}(x), `TAG`_externtype{tagtype#107}(jt)) + -- if (C.`TAGS`_context{`tagtype*#12`}[x!`%`_idx{i#9455}.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) + rule global{C : context, globalidx#15 : globalidx, x : idx, globaltype#119 : globaltype, gt : globaltype, `globaltype*#13` : globaltype*, i#9479 : nat}: + `%|-%:%`(C, `GLOBAL`_externidx{globalidx#15}(x), `GLOBAL`_externtype{globaltype#119}(gt)) + -- if (C.`GLOBALS`_context{`globaltype*#13`}[x!`%`_idx{i#9479}.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) + rule mem{C : context, memidx#65 : memidx, x : idx, memtype#131 : memtype, mt : memtype, `memtype*#27` : memtype*, i#9503 : nat}: + `%|-%:%`(C, `MEM`_externidx{memidx#65}(x), `MEM`_externtype{memtype#131}(mt)) + -- if (C.`MEMS`_context{`memtype*#27`}[x!`%`_idx{i#9503}.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) + rule table{C : context, tableidx#47 : tableidx, x : idx, tabletype#145 : tabletype, tt : tabletype, `tabletype*#20` : tabletype*, i#9527 : nat}: + `%|-%:%`(C, `TABLE`_externidx{tableidx#47}(x), `TABLE`_externtype{tabletype#145}(tt)) + -- if (C.`TABLES`_context{`tabletype*#20`}[x!`%`_idx{i#9527}.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) + rule func{C : context, funcidx#197 : funcidx, x : idx, typeuse#31 : typeuse, dt : deftype, `deftype*#61` : deftype*, i#9551 : nat}: + `%|-%:%`(C, `FUNC`_externidx{funcidx#197}(x), `FUNC`_externtype{typeuse#31}((dt : deftype <: typeuse))) + -- if (C.`FUNCS`_context{`deftype*#61`}[x!`%`_idx{i#9551}.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) + rule _{C : context, name#322 : name, externidx#193 : externidx, name : name, externidx : externidx, xt : externtype}: + `%|-%:%%`(C, `EXPORT`_export{name#322, externidx#193}(name, externidx), name, xt) -- Externidx_ok: `%|-%:%`(C, externidx, xt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -4216,10 +115775,10 @@ relation Globals_ok: `%|-%:%`(context, global*, globaltype*) `%|-%:%`(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*}: + rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*, `deftype*#72` : deftype*, `subtype*#17` : subtype*, `tagtype*#18` : tagtype*, `globaltype*#19` : globaltype*, `memtype*#33` : memtype*, `tabletype*#26` : tabletype*, `deftype*#73` : deftype*, `datatype*#18` : datatype*, `elemtype*#18` : elemtype*, `localtype*#21` : localtype*, `resulttype*#29` : resulttype*, `resulttype?#26` : resulttype?, `funcidx*#55` : funcidx*}: `%|-%:%`(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*`}) + -- Globals_ok: `%|-%:%`(C +++ {`TYPES`{`deftype*#72`} [], `RECS`{`subtype*#17`} [], `TAGS`{`tagtype*#18`} [], `GLOBALS`{`globaltype*#19`} [gt_1], `MEMS`{`memtype*#33`} [], `TABLES`{`tabletype*#26`} [], `FUNCS`{`deftype*#73`} [], `DATAS`{`datatype*#18`} [], `ELEMS`{`elemtype*#18`} [], `LOCALS`{`localtype*#21`} [], `LABELS`{`resulttype*#29`} [], `RETURN`{`resulttype?#26`} ?(), `REFS`{`funcidx*#55`} []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) } ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -4232,28 +115791,28 @@ relation Types_ok: `%|-%:%`(context, type*, deftype*) `%|-%:%`(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*}: + rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*, `deftype*#70` : deftype*, `subtype*#16` : subtype*, `tagtype*#17` : tagtype*, `globaltype*#18` : globaltype*, `memtype*#32` : memtype*, `tabletype*#25` : tabletype*, `deftype*#71` : deftype*, `datatype*#17` : datatype*, `elemtype*#17` : elemtype*, `localtype*#20` : localtype*, `resulttype*#28` : resulttype*, `resulttype?#25` : resulttype?, `funcidx*#54` : funcidx*}: `%|-%:%`(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*`}) + -- Types_ok: `%|-%:%`(C +++ {`TYPES`{`deftype*#70`} dt_1*{dt_1 <- `dt_1*`}, `RECS`{`subtype*#16`} [], `TAGS`{`tagtype*#17`} [], `GLOBALS`{`globaltype*#18`} [], `MEMS`{`memtype*#32`} [], `TABLES`{`tabletype*#25`} [], `FUNCS`{`deftype*#71`} [], `DATAS`{`datatype*#17`} [], `ELEMS`{`elemtype*#17`} [], `LOCALS`{`localtype*#20`} [], `LABELS`{`resulttype*#28`} [], `RETURN`{`resulttype?#25`} ?(), `REFS`{`funcidx*#54`} []}, 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*) + | `%%%%`{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*}(`global*` : global*, `mem*` : mem*, `table*` : table*, `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*`}, ?(), [])) + def $funcidx_nonfuncs{`global*#47` : global*, `mem*#47` : mem*, `table*#47` : table*, `elem*#47` : elem*, `global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `type*#71` : type*, `import*#71` : import*, `tag*#71` : tag*, `global*#83` : global*, `mem*#83` : mem*, `table*#83` : table*, `func*#71` : func*, `data*#71` : data*, `elem*#83` : elem*, `start?#71` : start?, `export*#71` : export*}(`%%%%`_nonfuncs{`global*#47`, `mem*#47`, `table*#47`, `elem*#47`}(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) = $funcidx_module(`MODULE`_module{`type*#71`, `import*#71`, `tag*#71`, `global*#83`, `mem*#83`, `table*#83`, `func*#71`, `data*#71`, `elem*#83`, `start?#71`, `export*#71`}([], [], [], 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*`} + rule _{`type*#83` : type*, `import*#83` : import*, `tag*#83` : tag*, `global*#95` : global*, `mem*#95` : mem*, `table*#95` : table*, `func*#83` : func*, `data*#83` : data*, `elem*#95` : elem*, `start?#83` : start?, `export*#83` : export*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `externtype*#148` : externtype*, `xt_I*` : externtype*, `xt_E*` : externtype*, `deftype*#62` : deftype*, `subtype*#12` : subtype*, `tagtype*#13` : tagtype*, `globaltype*#14` : globaltype*, `memtype*#28` : memtype*, `tabletype*#21` : tabletype*, `deftype*#63` : deftype*, `datatype*#13` : datatype*, `elemtype*#13` : elemtype*, `localtype*#16` : localtype*, `resulttype*#24` : resulttype*, `resulttype?#21` : resulttype?, `funcidx*#50` : funcidx*, `dt'*` : deftype*, `datatype*#14*` : datatype**, `deftype*#64*` : deftype**, `deftype*#65*` : deftype**, `elemtype*#14*` : elemtype**, `funcidx*#51*` : funcidx**, `globaltype*#15*` : globaltype**, `localtype*#17*` : localtype**, `memtype*#29*` : memtype**, `resulttype*#25*` : resulttype**, `resulttype?#22*` : resulttype?*, `subtype*#13*` : subtype**, `tabletype*#22*` : tabletype**, `tagtype*#14*` : tagtype**, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `deftype*#66` : deftype*, `subtype*#14` : subtype*, `tagtype*#15` : tagtype*, `jt_I*` : tagtype*, `globaltype*#16` : globaltype*, `memtype*#30` : memtype*, `mt_I*` : memtype*, `tabletype*#23` : tabletype*, `tt_I*` : tabletype*, `deftype*#67` : deftype*, `datatype*#15` : datatype*, `elemtype*#15` : elemtype*, `localtype*#18` : localtype*, `resulttype*#26` : resulttype*, `resulttype?#23` : resulttype?, `funcidx*#52` : funcidx*, `deftype*#68` : deftype*, `subtype*#15` : subtype*, `tagtype*#16` : tagtype*, `globaltype*#17` : globaltype*, `gt_I*` : globaltype*, `memtype*#31` : memtype*, `tabletype*#24` : tabletype*, `deftype*#69` : deftype*, `dt_I*` : deftype*, `datatype*#16` : datatype*, `elemtype*#16` : elemtype*, `localtype*#19` : localtype*, `resulttype*#27` : resulttype*, `resulttype?#24` : resulttype?, `funcidx*#53` : funcidx*, `x*` : idx*, `global*#107` : global*, `mem*#107` : mem*, `table*#107` : table*, `elem*#107` : elem*}: + `|-%:%`(`MODULE`_module{`type*#83`, `import*#83`, `tag*#83`, `global*#95`, `mem*#95`, `table*#95`, `func*#83`, `data*#83`, `elem*#95`, `start?#83`, `export*#83`}(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{`externtype*#148`}(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))) + -- Types_ok: `%|-%:%`({`TYPES`{`deftype*#62`} [], `RECS`{`subtype*#12`} [], `TAGS`{`tagtype*#13`} [], `GLOBALS`{`globaltype*#14`} [], `MEMS`{`memtype*#28`} [], `TABLES`{`tabletype*#21`} [], `FUNCS`{`deftype*#63`} [], `DATAS`{`datatype*#13`} [], `ELEMS`{`elemtype*#13`} [], `LOCALS`{`localtype*#16`} [], `LABELS`{`resulttype*#24`} [], `RETURN`{`resulttype?#21`} ?(), `REFS`{`funcidx*#50`} []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) + -- (Import_ok: `%|-%:%`({`TYPES`{`deftype*#64`} dt'*{dt' <- `dt'*`}, `RECS`{`subtype*#13`} [], `TAGS`{`tagtype*#14`} [], `GLOBALS`{`globaltype*#15`} [], `MEMS`{`memtype*#29`} [], `TABLES`{`tabletype*#22`} [], `FUNCS`{`deftype*#65`} [], `DATAS`{`datatype*#14`} [], `ELEMS`{`elemtype*#14`} [], `LOCALS`{`localtype*#17`} [], `LABELS`{`resulttype*#25`} [], `RETURN`{`resulttype?#22`} ?(), `REFS`{`funcidx*#51`} []}, import, xt_I))*{`datatype*#14` <- `datatype*#14*`, `deftype*#64` <- `deftype*#64*`, `deftype*#65` <- `deftype*#65*`, `elemtype*#14` <- `elemtype*#14*`, `funcidx*#51` <- `funcidx*#51*`, `globaltype*#15` <- `globaltype*#15*`, import <- `import*`, `localtype*#17` <- `localtype*#17*`, `memtype*#29` <- `memtype*#29*`, `resulttype*#25` <- `resulttype*#25*`, `resulttype?#22` <- `resulttype?#22*`, `subtype*#13` <- `subtype*#13*`, `tabletype*#22` <- `tabletype*#22*`, `tagtype*#14` <- `tagtype*#14*`, 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*`} @@ -4264,9 +115823,9 @@ relation Module_ok: `|-%:%`(module, moduletype) -- (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 (C = C' +++ {`TYPES`{`deftype*#66`} [], `RECS`{`subtype*#14`} [], `TAGS`{`tagtype*#15`} jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, `GLOBALS`{`globaltype*#16`} gt*{gt <- `gt*`}, `MEMS`{`memtype*#30`} mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, `TABLES`{`tabletype*#23`} tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, `FUNCS`{`deftype*#67`} [], `DATAS`{`datatype*#15`} ok*{ok <- `ok*`}, `ELEMS`{`elemtype*#15`} rt*{rt <- `rt*`}, `LOCALS`{`localtype*#18`} [], `LABELS`{`resulttype*#26`} [], `RETURN`{`resulttype?#23`} ?(), `REFS`{`funcidx*#52`} []}) + -- if (C' = {`TYPES`{`deftype*#68`} dt'*{dt' <- `dt'*`}, `RECS`{`subtype*#15`} [], `TAGS`{`tagtype*#16`} [], `GLOBALS`{`globaltype*#17`} gt_I*{gt_I <- `gt_I*`}, `MEMS`{`memtype*#31`} [], `TABLES`{`tabletype*#24`} [], `FUNCS`{`deftype*#69`} dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, `DATAS`{`datatype*#16`} [], `ELEMS`{`elemtype*#16`} [], `LOCALS`{`localtype*#19`} [], `LABELS`{`resulttype*#27`} [], `RETURN`{`resulttype?#24`} ?(), `REFS`{`funcidx*#53`} x*{x <- `x*`}}) + -- if (x*{x <- `x*`} = $funcidx_nonfuncs(`%%%%`_nonfuncs{`global*#107`, `mem*#107`, `table*#107`, `elem*#107`}(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*`})) @@ -4286,7 +115845,7 @@ syntax relaxed4 = ;; ../../../../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) = [X_1 X_2][i!`%`_relaxed2.0] + def $relaxed2{i : relaxed2, syntax X, X_1 : X, X_2 : X, i#9672 : nat}(i, syntax X, X_1, X_2) = [X_1 X_2][i!`%`_relaxed2{i#9672}.0] -- if $ND ;; ../../../../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) = [X_1 X_2][0] @@ -4295,7 +115854,7 @@ def $relaxed2(relaxed2 : relaxed2, syntax X, X : X, X : X) : X ;; ../../../../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) = [X_1 X_2 X_3 X_4][i!`%`_relaxed4.0] + def $relaxed4{i : relaxed4, syntax X, X_1 : X, X_2 : X, X_3 : X, X_4 : X, i#9686 : nat}(i, syntax X, X_1, X_2, X_3, X_4) = [X_1 X_2 X_3 X_4][i!`%`_relaxed4{i#9686}.0] -- if $ND ;; ../../../../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) = [X_1 X_2 X_3 X_4][0] @@ -4402,12 +115961,12 @@ 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{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) + def $zero{Jnn : Jnn, i#9712 : nat}((Jnn : Jnn <: lanetype)) = `%`_lane_{i#9712}(0) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero{Fnn : Fnn}((Fnn : Fnn <: lanetype)) = $fzero($size((Fnn : Fnn <: numtype))) @@ -4451,13 +116010,13 @@ def $sat_s_(N : N, int : int) : int ;; ../../../../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)) + def $ineg_{N : N, i_1 : iN(N), i#9728 : nat, i#9726 : nat}(N, i_1) = `%`_iN{i#9728}((((((2 ^ N) : nat <:> int) - (i_1!`%`_iN{i#9726}.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) = i_1 - -- if ($signed_(N, i_1!`%`_iN.0) >= (0 : nat <:> int)) + def $iabs_{N : N, i_1 : iN(N), i#9736 : nat}(N, i_1) = i_1 + -- if ($signed_(N, i_1!`%`_iN{i#9736}.0) >= (0 : nat <:> int)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iabs_{N : N, i_1 : iN(N)}(N, i_1) = $ineg_(N, i_1) -- otherwise @@ -4474,94 +116033,94 @@ 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))) + def $iextend_{N : N, M : M, i : iN(N), i#9776 : nat, i#9774 : nat}(N, M, `U`_sx, i) = `%`_iN{i#9776}((i!`%`_iN{i#9774}.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))))) + def $iextend_{N : N, M : M, i : iN(N), i#9792 : nat, i#9790 : nat}(N, M, `S`_sx, i) = `%`_iN{i#9792}($inv_signed_(N, $signed_(M, (i!`%`_iN{i#9790}.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))) + def $iadd_{N : N, i_1 : iN(N), i_2 : iN(N), i#9816 : nat, i#9812 : nat, i#9814 : nat}(N, i_1, i_2) = `%`_iN{i#9816}(((i_1!`%`_iN{i#9812}.0 + i_2!`%`_iN{i#9814}.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)) + def $isub_{N : N, i_1 : iN(N), i_2 : iN(N), i#9840 : nat, i#9836 : nat, i#9838 : nat}(N, i_1, i_2) = `%`_iN{i#9840}(((((((2 ^ N) + i_1!`%`_iN{i#9836}.0) : nat <:> int) - (i_2!`%`_iN{i#9838}.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))) + def $imul_{N : N, i_1 : iN(N), i_2 : iN(N), i#9864 : nat, i#9860 : nat, i#9862 : nat}(N, i_1, i_2) = `%`_iN{i#9864}(((i_1!`%`_iN{i#9860}.0 * i_2!`%`_iN{i#9862}.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)) = ?() + def $idiv_{N : N, i_1 : iN(N), i#9878 : nat}(N, `U`_sx, i_1, `%`_iN{i#9878}(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))) + def $idiv_{N : N, i_1 : iN(N), i_2 : iN(N), i#9902 : nat, i#9898 : nat, i#9900 : nat}(N, `U`_sx, i_1, i_2) = ?(`%`_iN{i#9902}(($truncz(((i_1!`%`_iN{i#9898}.0 : nat <:> rat) / (i_2!`%`_iN{i#9900}.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)) = ?() + def $idiv_{N : N, i_1 : iN(N), i#9916 : nat}(N, `S`_sx, i_1, `%`_iN{i#9916}(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)) + def $idiv_{N : N, i_1 : iN(N), i_2 : iN(N), i#9930 : nat, i#9932 : nat}(N, `S`_sx, i_1, i_2) = ?() + -- if ((($signed_(N, i_1!`%`_iN{i#9930}.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN{i#9932}.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)))))) + def $idiv_{N : N, i_1 : iN(N), i_2 : iN(N), i#9956 : nat, i#9952 : nat, i#9954 : nat}(N, `S`_sx, i_1, i_2) = ?(`%`_iN{i#9956}($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_iN{i#9952}.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN{i#9954}.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)) = ?() + def $irem_{N : N, i_1 : iN(N), i#9970 : nat}(N, `U`_sx, i_1, `%`_iN{i#9970}(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))) + def $irem_{N : N, i_1 : iN(N), i_2 : iN(N), i#9998 : nat, i#9996 : nat, i#9994 : nat, i#9990 : nat, i#9992 : nat}(N, `U`_sx, i_1, i_2) = ?(`%`_iN{i#9998}((((i_1!`%`_iN{i#9996}.0 : nat <:> int) - ((i_2!`%`_iN{i#9994}.0 * ($truncz(((i_1!`%`_iN{i#9990}.0 : nat <:> rat) / (i_2!`%`_iN{i#9992}.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)) = ?() + def $irem_{N : N, i_1 : iN(N), i#10012 : nat}(N, `S`_sx, i_1, `%`_iN{i#10012}(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))) + def $irem_{N : N, i_1 : iN(N), i_2 : iN(N), i#10036 : nat, j_1 : int, j_2 : int, i#10026 : nat, i#10028 : nat}(N, `S`_sx, i_1, i_2) = ?(`%`_iN{i#10036}($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) + -- if ((j_1 = $signed_(N, i_1!`%`_iN{i#10026}.0)) /\ (j_2 = $signed_(N, i_2!`%`_iN{i#10028}.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) + def $imin_{N : N, i_1 : iN(N), i_2 : iN(N), i#10050 : nat, i#10052 : nat}(N, `U`_sx, i_1, i_2) = i_1 + -- if (i_1!`%`_iN{i#10050}.0 <= i_2!`%`_iN{i#10052}.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) + def $imin_{N : N, i_1 : iN(N), i_2 : iN(N), i#10072 : nat, i#10074 : nat}(N, `U`_sx, i_1, i_2) = i_2 + -- if (i_1!`%`_iN{i#10072}.0 > i_2!`%`_iN{i#10074}.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) = i_1 - -- if ($signed_(N, i_1!`%`_iN.0) <= $signed_(N, i_2!`%`_iN.0)) + def $imin_{N : N, i_1 : iN(N), i_2 : iN(N), i#10094 : nat, i#10096 : nat}(N, `S`_sx, i_1, i_2) = i_1 + -- if ($signed_(N, i_1!`%`_iN{i#10094}.0) <= $signed_(N, i_2!`%`_iN{i#10096}.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) = i_2 + def $imin_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, `S`_sx, i_1, i_2) = i_2 -- otherwise ;; ../../../../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) + def $imax_{N : N, i_1 : iN(N), i_2 : iN(N), i#10134 : nat, i#10136 : nat}(N, `U`_sx, i_1, i_2) = i_1 + -- if (i_1!`%`_iN{i#10134}.0 >= i_2!`%`_iN{i#10136}.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) + def $imax_{N : N, i_1 : iN(N), i_2 : iN(N), i#10156 : nat, i#10158 : nat}(N, `U`_sx, i_1, i_2) = i_2 + -- if (i_1!`%`_iN{i#10156}.0 < i_2!`%`_iN{i#10158}.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) = i_1 - -- if ($signed_(N, i_1!`%`_iN.0) >= $signed_(N, i_2!`%`_iN.0)) + def $imax_{N : N, i_1 : iN(N), i_2 : iN(N), i#10178 : nat, i#10180 : nat}(N, `S`_sx, i_1, i_2) = i_1 + -- if ($signed_(N, i_1!`%`_iN{i#10178}.0) >= $signed_(N, i_2!`%`_iN{i#10180}.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) = i_2 + def $imax_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, `S`_sx, i_1, i_2) = i_2 -- otherwise ;; ../../../../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))) + def $iadd_sat_{N : N, i_1 : iN(N), i_2 : iN(N), i#10228 : nat, i#10224 : nat, i#10226 : nat}(N, `U`_sx, i_1, i_2) = `%`_iN{i#10228}($sat_u_(N, ((i_1!`%`_iN{i#10224}.0 + i_2!`%`_iN{i#10226}.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))))) + def $iadd_sat_{N : N, i_1 : iN(N), i_2 : iN(N), i#10252 : nat, i#10248 : nat, i#10250 : nat}(N, `S`_sx, i_1, i_2) = `%`_iN{i#10252}($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN{i#10248}.0) + $signed_(N, i_2!`%`_iN{i#10250}.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)))) + def $isub_sat_{N : N, i_1 : iN(N), i_2 : iN(N), i#10276 : nat, i#10272 : nat, i#10274 : nat}(N, `U`_sx, i_1, i_2) = `%`_iN{i#10276}($sat_u_(N, ((i_1!`%`_iN{i#10272}.0 : nat <:> int) - (i_2!`%`_iN{i#10274}.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))))) + def $isub_sat_{N : N, i_1 : iN(N), i_2 : iN(N), i#10300 : nat, i#10296 : nat, i#10298 : nat}(N, `S`_sx, i_1, i_2) = `%`_iN{i#10300}($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN{i#10296}.0) - $signed_(N, i_2!`%`_iN{i#10298}.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) @@ -4611,50 +116170,50 @@ 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))) + def $ieqz_{N : N, i_1 : iN(N), i#10328 : nat, i#10318 : nat}(N, i_1) = `%`_u32{i#10328}($bool((i_1!`%`_iN{i#10318}.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))) + def $inez_{N : N, i_1 : iN(N), i#10356 : nat, i#10346 : nat}(N, i_1) = `%`_u32{i#10356}($bool((i_1!`%`_iN{i#10346}.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))) + def $ieq_{N : N, i_1 : iN(N), i_2 : iN(N), i#10394 : nat}(N, i_1, i_2) = `%`_u32{i#10394}($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))) + def $ine_{N : N, i_1 : iN(N), i_2 : iN(N), i#10432 : nat}(N, i_1, i_2) = `%`_u32{i#10432}($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))) + def $ilt_{N : N, i_1 : iN(N), i_2 : iN(N), i#10468 : nat, i#10456 : nat, i#10458 : nat}(N, `U`_sx, i_1, i_2) = `%`_u32{i#10468}($bool((i_1!`%`_iN{i#10456}.0 < i_2!`%`_iN{i#10458}.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)))) + def $ilt_{N : N, i_1 : iN(N), i_2 : iN(N), i#10504 : nat, i#10492 : nat, i#10494 : nat}(N, `S`_sx, i_1, i_2) = `%`_u32{i#10504}($bool(($signed_(N, i_1!`%`_iN{i#10492}.0) < $signed_(N, i_2!`%`_iN{i#10494}.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))) + def $igt_{N : N, i_1 : iN(N), i_2 : iN(N), i#10540 : nat, i#10528 : nat, i#10530 : nat}(N, `U`_sx, i_1, i_2) = `%`_u32{i#10540}($bool((i_1!`%`_iN{i#10528}.0 > i_2!`%`_iN{i#10530}.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)))) + def $igt_{N : N, i_1 : iN(N), i_2 : iN(N), i#10576 : nat, i#10564 : nat, i#10566 : nat}(N, `S`_sx, i_1, i_2) = `%`_u32{i#10576}($bool(($signed_(N, i_1!`%`_iN{i#10564}.0) > $signed_(N, i_2!`%`_iN{i#10566}.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))) + def $ile_{N : N, i_1 : iN(N), i_2 : iN(N), i#10612 : nat, i#10600 : nat, i#10602 : nat}(N, `U`_sx, i_1, i_2) = `%`_u32{i#10612}($bool((i_1!`%`_iN{i#10600}.0 <= i_2!`%`_iN{i#10602}.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)))) + def $ile_{N : N, i_1 : iN(N), i_2 : iN(N), i#10648 : nat, i#10636 : nat, i#10638 : nat}(N, `S`_sx, i_1, i_2) = `%`_u32{i#10648}($bool(($signed_(N, i_1!`%`_iN{i#10636}.0) <= $signed_(N, i_2!`%`_iN{i#10638}.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))) + def $ige_{N : N, i_1 : iN(N), i_2 : iN(N), i#10684 : nat, i#10672 : nat, i#10674 : nat}(N, `U`_sx, i_1, i_2) = `%`_u32{i#10684}($bool((i_1!`%`_iN{i#10672}.0 >= i_2!`%`_iN{i#10674}.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)))) + def $ige_{N : N, i_1 : iN(N), i_2 : iN(N), i#10720 : nat, i#10708 : nat, i#10710 : nat}(N, `S`_sx, i_1, i_2) = `%`_u32{i#10720}($bool(($signed_(N, i_1!`%`_iN{i#10708}.0) >= $signed_(N, i_2!`%`_iN{i#10710}.0)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fabs_(N : N, fN : fN(N)) : fN(N)* @@ -4783,543 +116342,543 @@ def $lunpacknum_(lanetype : lanetype, lane_ : lane_(lanetype)) : num_($lunpack(l ;; ../../../../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) + 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) + 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 : Inn <: numtype))}((Inn : Inn <: numtype), CLZ_unop_, i) = [$iclz_($sizenn((Inn : Inn <: numtype)), i)] + def $unop_{Inn : Inn, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `CLZ`_unop_, i) = [$iclz_($sizenn((Inn : Inn <: numtype)), i)] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Inn : Inn, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), CTZ_unop_, i) = [$ictz_($sizenn((Inn : Inn <: numtype)), i)] + def $unop_{Inn : Inn, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `CTZ`_unop_, i) = [$ictz_($sizenn((Inn : Inn <: numtype)), i)] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Inn : Inn, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), POPCNT_unop_, i) = [$ipopcnt_($sizenn((Inn : Inn <: numtype)), i)] + def $unop_{Inn : Inn, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `POPCNT`_unop_, i) = [$ipopcnt_($sizenn((Inn : Inn <: numtype)), i)] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Inn : Inn, M : M, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), EXTEND_unop_(`%`_sz(M)), i) = [$iextend_($sizenn((Inn : Inn <: numtype)), M, S_sx, i)] + def $unop_{Inn : Inn, sz#154 : sz, i#10974 : nat, i#10981 : nat, M : M, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `EXTEND`_unop_{sz#154, i#10974}(`%`_sz{i#10981}(M)), i) = [$iextend_($sizenn((Inn : Inn <: 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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 : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), ADD_binop_, i_1, i_2) = [$iadd_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] + def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `ADD`_binop_, i_1, i_2) = [$iadd_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), SUB_binop_, i_1, i_2) = [$isub_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] + def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `SUB`_binop_, i_1, i_2) = [$isub_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), MUL_binop_, i_1, i_2) = [$imul_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] + def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `MUL`_binop_, i_1, i_2) = [$imul_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), DIV_binop_(sx), i_1, i_2) = lift($idiv_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2)) + def $binop_{Inn : Inn, sx#58 : sx, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `DIV`_binop_{sx#58}(sx), i_1, i_2) = lift($idiv_($sizenn((Inn : Inn <: 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 : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), REM_binop_(sx), i_1, i_2) = lift($irem_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2)) + def $binop_{Inn : Inn, sx#60 : sx, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `REM`_binop_{sx#60}(sx), i_1, i_2) = lift($irem_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), AND_binop_, i_1, i_2) = [$iand_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] + def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `AND`_binop_, i_1, i_2) = [$iand_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), OR_binop_, i_1, i_2) = [$ior_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] + def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `OR`_binop_, i_1, i_2) = [$ior_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), XOR_binop_, i_1, i_2) = [$ixor_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] + def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `XOR`_binop_, i_1, i_2) = [$ixor_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), SHL_binop_, i_1, i_2) = [$ishl_($sizenn((Inn : Inn <: numtype)), i_1, `%`_u32(i_2!`%`_num_.0))] + def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype)), i#11714 : nat, i#11713 : nat}((Inn : Inn <: numtype), `SHL`_binop_, i_1, i_2) = [$ishl_($sizenn((Inn : Inn <: numtype)), i_1, `%`_u32{i#11714}(i_2!`%`_num_{i#11713}.0))] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), SHR_binop_(sx), i_1, i_2) = [$ishr_($sizenn((Inn : Inn <: numtype)), sx, i_1, `%`_u32(i_2!`%`_num_.0))] + def $binop_{Inn : Inn, sx#62 : sx, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype)), i#11808 : nat, i#11807 : nat}((Inn : Inn <: numtype), `SHR`_binop_{sx#62}(sx), i_1, i_2) = [$ishr_($sizenn((Inn : Inn <: numtype)), sx, i_1, `%`_u32{i#11808}(i_2!`%`_num_{i#11807}.0))] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), ROTL_binop_, i_1, i_2) = [$irotl_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] + def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `ROTL`_binop_, i_1, i_2) = [$irotl_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), ROTR_binop_, i_1, i_2) = [$irotr_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] + def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `ROTR`_binop_, i_1, i_2) = [$irotr_($sizenn((Inn : Inn <: 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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 : Inn <: numtype))}((Inn : Inn <: numtype), EQZ_testop_, i) = $ieqz_($sizenn((Inn : Inn <: numtype)), i) + def $testop_{Inn : Inn, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `EQZ`_testop_, i) = $ieqz_($sizenn((Inn : Inn <: 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 : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), EQ_relop_, i_1, i_2) = $ieq_($sizenn((Inn : Inn <: numtype)), i_1, i_2) + def $relop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `EQ`_relop_, i_1, i_2) = $ieq_($sizenn((Inn : Inn <: numtype)), i_1, i_2) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), NE_relop_, i_1, i_2) = $ine_($sizenn((Inn : Inn <: numtype)), i_1, i_2) + def $relop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `NE`_relop_, i_1, i_2) = $ine_($sizenn((Inn : Inn <: numtype)), i_1, i_2) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), LT_relop_(sx), i_1, i_2) = $ilt_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) + def $relop_{Inn : Inn, sx#64 : sx, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `LT`_relop_{sx#64}(sx), i_1, i_2) = $ilt_($sizenn((Inn : Inn <: 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 : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), GT_relop_(sx), i_1, i_2) = $igt_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) + def $relop_{Inn : Inn, sx#66 : sx, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `GT`_relop_{sx#66}(sx), i_1, i_2) = $igt_($sizenn((Inn : Inn <: 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 : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), LE_relop_(sx), i_1, i_2) = $ile_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) + def $relop_{Inn : Inn, sx#68 : sx, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `LE`_relop_{sx#68}(sx), i_1, i_2) = $ile_($sizenn((Inn : Inn <: 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 : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), GE_relop_(sx), i_1, i_2) = $ige_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) + def $relop_{Inn : Inn, sx#70 : sx, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `GE`_relop_{sx#70}(sx), i_1, i_2) = $ige_($sizenn((Inn : Inn <: 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) + 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) + 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) + 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) + 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) + 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) + 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 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Inn_2 : Inn <: numtype), EXTEND_cvtop__(sx), i_1) = [$extend__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, i_1)] + def $cvtop__{Inn_1 : Inn, Inn_2 : Inn, sx#72 : sx, sx : sx, i_1 : num_((Inn_1 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Inn_2 : Inn <: numtype), `EXTEND`_cvtop__{sx#72}(sx), i_1) = [$extend__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Inn_2 : Inn <: 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 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Inn_2 : Inn <: numtype), WRAP_cvtop__, i_1) = [$wrap__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), i_1)] + def $cvtop__{Inn_1 : Inn, Inn_2 : Inn, i_1 : num_((Inn_1 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Inn_2 : Inn <: numtype), `WRAP`_cvtop__, i_1) = [$wrap__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Inn_2 : Inn <: 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 : Inn <: numtype), TRUNC_cvtop__(sx), f_1) = lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, f_1)) + def $cvtop__{Fnn_1 : Fnn, Inn_2 : Inn, sx#74 : sx, sx : sx, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), `TRUNC`_cvtop__{sx#74}(sx), f_1) = lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : Inn <: 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 : Inn <: numtype), TRUNC_SAT_cvtop__(sx), f_1) = lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, f_1)) + def $cvtop__{Fnn_1 : Fnn, Inn_2 : Inn, sx#76 : sx, sx : sx, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), `TRUNC_SAT`_cvtop__{sx#76}(sx), f_1) = lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : Inn <: 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 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype), CONVERT_cvtop__(sx), i_1) = [$convert__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1)] + def $cvtop__{Inn_1 : Inn, Fnn_2 : Fnn, sx#78 : sx, sx : sx, i_1 : num_((Inn_1 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype), `CONVERT`_cvtop__{sx#78}(sx), i_1) = [$convert__($sizenn1((Inn_1 : Inn <: 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) + 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) + 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 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype), REINTERPRET_cvtop__, i_1) = [$reinterpret__((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype), i_1)] + def $cvtop__{Inn_1 : Inn, Fnn_2 : Fnn, i_1 : num_((Inn_1 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype), `REINTERPRET`_cvtop__, i_1) = [$reinterpret__((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype), i_1)] -- if ($size((Inn_1 : Inn <: 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 : Inn <: numtype), REINTERPRET_cvtop__, f_1) = [$reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), f_1)] + def $cvtop__{Fnn_1 : Fnn, Inn_2 : Inn, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), `REINTERPRET`_cvtop__, f_1) = [$reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), f_1)] -- if ($size((Fnn_1 : Fnn <: numtype)) = $size((Inn_2 : Inn <: numtype))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $lanes_(shape : shape, vec_ : vec_(V128_Vnn)) : lane_($lanetype(shape))* +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) +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)) = ?() + def $zeroop{lanetype#801 : lanetype, dim#801 : dim, i#12568 : nat, Jnn_1 : Jnn, i#12575 : nat, M_1 : M, lanetype#813 : lanetype, dim#813 : dim, i#12580 : nat, Jnn_2 : Jnn, i#12587 : nat, M_2 : M, half#1 : half, sx#80 : sx, half : half, sx : sx}(`%X%`_shape{lanetype#801, dim#801, i#12568}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#12575}(M_1)), `%X%`_shape{lanetype#813, dim#813, i#12580}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#12587}(M_2)), `EXTEND`_vcvtop__{half#1, sx#80}(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)) = ?() + def $zeroop{lanetype#825 : lanetype, dim#825 : dim, i#12592 : nat, Jnn_1 : Jnn, i#12599 : nat, M_1 : M, lanetype#837 : lanetype, dim#837 : dim, i#12604 : nat, Fnn_2 : Fnn, i#12611 : nat, M_2 : M, `half?#1` : half?, sx#82 : sx, `half?` : half?, sx : sx}(`%X%`_shape{lanetype#825, dim#825, i#12592}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#12599}(M_1)), `%X%`_shape{lanetype#837, dim#837, i#12604}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#12611}(M_2)), `CONVERT`_vcvtop__{`half?#1`, sx#82}(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?`} + def $zeroop{lanetype#864 : lanetype, dim#864 : dim, i#12631 : nat, Fnn_1 : Fnn, i#12638 : nat, M_1 : M, lanetype#876 : lanetype, dim#876 : dim, i#12643 : nat, Jnn_2 : Jnn, i#12650 : nat, M_2 : M, sx#84 : sx, `zero?#1` : zero?, sx : sx, `zero?` : zero?}(`%X%`_shape{lanetype#864, dim#864, i#12631}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#12638}(M_1)), `%X%`_shape{lanetype#876, dim#876, i#12643}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#12650}(M_2)), `TRUNC_SAT`_vcvtop__{sx#84, `zero?#1`}(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?`} + def $zeroop{lanetype#918 : lanetype, dim#918 : dim, i#12685 : nat, Fnn_1 : Fnn, i#12692 : nat, M_1 : M, lanetype#930 : lanetype, dim#930 : dim, i#12697 : nat, Jnn_2 : Jnn, i#12704 : nat, M_2 : M, sx#86 : sx, `zero?#3` : zero?, sx : sx, `zero?` : zero?}(`%X%`_shape{lanetype#918, dim#918, i#12685}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#12692}(M_1)), `%X%`_shape{lanetype#930, dim#930, i#12697}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#12704}(M_2)), `RELAXED_TRUNC`_vcvtop__{sx#86, `zero?#3`}(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) + def $zeroop{lanetype#972 : lanetype, dim#972 : dim, i#12739 : nat, Fnn_1 : Fnn, i#12746 : nat, M_1 : M, lanetype#984 : lanetype, dim#984 : dim, i#12751 : nat, Fnn_2 : Fnn, i#12758 : nat, M_2 : M, zero#1 : zero, zero : zero}(`%X%`_shape{lanetype#972, dim#972, i#12739}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#12746}(M_1)), `%X%`_shape{lanetype#984, dim#984, i#12751}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#12758}(M_2)), `DEMOTE`_vcvtop__{zero#1}(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__) = ?() + def $zeroop{lanetype#1041 : lanetype, dim#1041 : dim, i#12808 : nat, Fnn_1 : Fnn, i#12815 : nat, M_1 : M, lanetype#1053 : lanetype, dim#1053 : dim, i#12820 : nat, Fnn_2 : Fnn, i#12827 : nat, M_2 : M}(`%X%`_shape{lanetype#1041, dim#1041, i#12808}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#12815}(M_1)), `%X%`_shape{lanetype#1053, dim#1053, i#12820}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#12827}(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) + def $halfop{lanetype#1122 : lanetype, dim#1122 : dim, i#12881 : nat, Jnn_1 : Jnn, i#12888 : nat, M_1 : M, lanetype#1134 : lanetype, dim#1134 : dim, i#12893 : nat, Jnn_2 : Jnn, i#12900 : nat, M_2 : M, half#3 : half, sx#88 : sx, half : half, sx : sx}(`%X%`_shape{lanetype#1122, dim#1122, i#12881}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#12888}(M_1)), `%X%`_shape{lanetype#1134, dim#1134, i#12893}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#12900}(M_2)), `EXTEND`_vcvtop__{half#3, sx#88}(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?`} + def $halfop{lanetype#1146 : lanetype, dim#1146 : dim, i#12905 : nat, Jnn_1 : Jnn, i#12912 : nat, M_1 : M, lanetype#1158 : lanetype, dim#1158 : dim, i#12917 : nat, Fnn_2 : Fnn, i#12924 : nat, M_2 : M, `half?#3` : half?, sx#90 : sx, `half?` : half?, sx : sx}(`%X%`_shape{lanetype#1146, dim#1146, i#12905}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#12912}(M_1)), `%X%`_shape{lanetype#1158, dim#1158, i#12917}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#12924}(M_2)), `CONVERT`_vcvtop__{`half?#3`, sx#90}(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?`})) = ?() + def $halfop{lanetype#1185 : lanetype, dim#1185 : dim, i#12944 : nat, Fnn_1 : Fnn, i#12951 : nat, M_1 : M, lanetype#1197 : lanetype, dim#1197 : dim, i#12956 : nat, Jnn_2 : Jnn, i#12963 : nat, M_2 : M, sx#92 : sx, `zero?#5` : zero?, sx : sx, `zero?` : zero?}(`%X%`_shape{lanetype#1185, dim#1185, i#12944}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#12951}(M_1)), `%X%`_shape{lanetype#1197, dim#1197, i#12956}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#12963}(M_2)), `TRUNC_SAT`_vcvtop__{sx#92, `zero?#5`}(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?`})) = ?() + def $halfop{lanetype#1239 : lanetype, dim#1239 : dim, i#12998 : nat, Fnn_1 : Fnn, i#13005 : nat, M_1 : M, lanetype#1251 : lanetype, dim#1251 : dim, i#13010 : nat, Jnn_2 : Jnn, i#13017 : nat, M_2 : M, sx#94 : sx, `zero?#7` : zero?, sx : sx, `zero?` : zero?}(`%X%`_shape{lanetype#1239, dim#1239, i#12998}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#13005}(M_1)), `%X%`_shape{lanetype#1251, dim#1251, i#13010}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#13017}(M_2)), `RELAXED_TRUNC`_vcvtop__{sx#94, `zero?#7`}(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)) = ?() + def $halfop{lanetype#1293 : lanetype, dim#1293 : dim, i#13052 : nat, Fnn_1 : Fnn, i#13059 : nat, M_1 : M, lanetype#1305 : lanetype, dim#1305 : dim, i#13064 : nat, Fnn_2 : Fnn, i#13071 : nat, M_2 : M, zero#3 : zero, zero : zero}(`%X%`_shape{lanetype#1293, dim#1293, i#13052}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#13059}(M_1)), `%X%`_shape{lanetype#1305, dim#1305, i#13064}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#13071}(M_2)), `DEMOTE`_vcvtop__{zero#3}(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) + def $halfop{lanetype#1362 : lanetype, dim#1362 : dim, i#13121 : nat, Fnn_1 : Fnn, i#13128 : nat, M_1 : M, lanetype#1374 : lanetype, dim#1374 : dim, i#13133 : nat, Fnn_2 : Fnn, i#13140 : nat, M_2 : M}(`%X%`_shape{lanetype#1362, dim#1362, i#13121}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#13128}(M_1)), `%X%`_shape{lanetype#1374, dim#1374, i#13133}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#13140}(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 + 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 + 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) = c*{c <- `c*`}[i!`%`_iN.0] - -- if (i!`%`_iN.0 < |c*{c <- `c*`}|) + def $iswizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N), i#13213 : nat, i#13205 : nat}(N, c*{c <- `c*`}, i) = c*{c <- `c*`}[i!`%`_iN{i#13213}.0] + -- if (i!`%`_iN{i#13205}.0 < |c*{c <- `c*`}|) ;; ../../../../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) = `%`_iN(0) + def $iswizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N), i#13239 : nat}(N, c*{c <- `c*`}, i) = `%`_iN{i#13239}(0) -- otherwise ;; ../../../../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) = c*{c <- `c*`}[i!`%`_iN.0] - -- if (i!`%`_iN.0 < |c*{c <- `c*`}|) + def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N), i#13267 : nat, i#13259 : nat}(N, c*{c <- `c*`}, i) = c*{c <- `c*`}[i!`%`_iN{i#13267}.0] + -- if (i!`%`_iN{i#13259}.0 < |c*{c <- `c*`}|) ;; ../../../../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) = `%`_iN(0) - -- if ($signed_(N, i!`%`_iN.0) < (0 : nat <:> int)) + def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N), i#13295 : nat, i#13287 : nat}(N, c*{c <- `c*`}, i) = `%`_iN{i#13295}(0) + -- if ($signed_(N, i!`%`_iN{i#13287}.0) < (0 : nat <:> int)) ;; ../../../../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) = $relaxed2($R_swizzle, syntax iN(N), `%`_iN(0), c*{c <- `c*`}[(i!`%`_iN.0 \ |c*{c <- `c*`}|)]) + def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N), i#13333 : nat, i#13341 : nat}(N, c*{c <- `c*`}, i) = $relaxed2($R_swizzle, syntax iN(N), `%`_iN{i#13333}(0), c*{c <- `c*`}[(i!`%`_iN{i#13341}.0 \ |c*{c <- `c*`}|)]) -- otherwise ;; ../../../../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)* +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*`})] - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) + def $ivunop_{lanetype#1431 : lanetype, dim#1431 : dim, i#13346 : nat, Jnn : Jnn, i#13353 : nat, M : M, def $f_(N : N, iN : iN(N)) : iN(N), v_1 : vec_(`V128`_Vnn), lanetype#1469 : lanetype, dim#1469 : dim, i#13506 : nat, i#13513 : nat, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, lanetype#1443 : lanetype, dim#1443 : dim, i#13370 : nat, i#13377 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#1443, dim#1443, i#13370}((Jnn : Jnn <: lanetype), `%`_dim{i#13377}(M))))*}(`%X%`_shape{lanetype#1431, dim#1431, i#13346}((Jnn : Jnn <: lanetype), `%`_dim{i#13353}(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape{lanetype#1469, dim#1469, i#13506}((Jnn : Jnn <: lanetype), `%`_dim{i#13513}(M)), c*{c <- `c*`})] + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#1443, dim#1443, i#13370}((Jnn : Jnn <: lanetype), `%`_dim{i#13377}(M)), v_1)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), 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(N)) : fN(N)*, vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* +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**`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) + def $fvunop_{lanetype#1493 : lanetype, dim#1493 : dim, i#13579 : nat, Fnn : Fnn, i#13586 : nat, M : M, def $f_(N : N, fN : fN(N)) : fN(N)*, v_1 : vec_(`V128`_Vnn), `c**` : lane_((Fnn : Fnn <: lanetype))**, `dim#1532*` : dim*, `i#13693*` : nat*, `i#13700*` : nat*, `lanetype#1532*` : lanetype*, lanetype#1505 : lanetype, dim#1505 : dim, i#13603 : nat, i#13610 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#1505, dim#1505, i#13603}((Fnn : Fnn <: lanetype), `%`_dim{i#13610}(M))))*}(`%X%`_shape{lanetype#1493, dim#1493, i#13579}((Fnn : Fnn <: lanetype), `%`_dim{i#13586}(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape{lanetype#1532, dim#1532, i#13693}((Fnn : Fnn <: lanetype), `%`_dim{i#13700}(M)), c*{c <- `c*`})*{`c*` <- `c**`, dim#1532 <- `dim#1532*`, i#13693 <- `i#13693*`, i#13700 <- `i#13700*`, lanetype#1532 <- `lanetype#1532*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#1505, dim#1505, i#13603}((Fnn : Fnn <: lanetype), `%`_dim{i#13610}(M)), v_1)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Fnn : Fnn <: lanetype)), $f_($sizenn((Fnn : Fnn <: numtype)), 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(N), iN : iN(N)) : iN(N), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* +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*`})] - -- 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)) + def $ivbinop_{lanetype#1555 : lanetype, dim#1555 : dim, i#13738 : nat, Jnn : Jnn, i#13745 : nat, M : M, def $f_(N : N, iN : iN(N), iN : iN(N)) : iN(N), v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#1619 : lanetype, dim#1619 : dim, i#14011 : nat, i#14018 : nat, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, lanetype#1567 : lanetype, dim#1567 : dim, i#13774 : nat, i#13781 : nat, lanetype#1592 : lanetype, dim#1592 : dim, i#13860 : nat, i#13867 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#1567, dim#1567, i#13774}((Jnn : Jnn <: lanetype), `%`_dim{i#13781}(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#1592, dim#1592, i#13860}((Jnn : Jnn <: lanetype), `%`_dim{i#13867}(M))))*}(`%X%`_shape{lanetype#1555, dim#1555, i#13738}((Jnn : Jnn <: lanetype), `%`_dim{i#13745}(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape{lanetype#1619, dim#1619, i#14011}((Jnn : Jnn <: lanetype), `%`_dim{i#14018}(M)), c*{c <- `c*`})] + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#1567, dim#1567, i#13774}((Jnn : Jnn <: lanetype), `%`_dim{i#13781}(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#1592, dim#1592, i#13860}((Jnn : Jnn <: lanetype), `%`_dim{i#13867}(M)), v_2)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, 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(N), iN : iN(N)) : iN(N), sx : sx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* +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*`})] - -- 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)) + def $ivbinopsx_{lanetype#1643 : lanetype, dim#1643 : dim, i#14084 : nat, Jnn : Jnn, i#14091 : nat, 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), lanetype#1707 : lanetype, dim#1707 : dim, i#14357 : nat, i#14364 : nat, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, lanetype#1655 : lanetype, dim#1655 : dim, i#14120 : nat, i#14127 : nat, lanetype#1680 : lanetype, dim#1680 : dim, i#14206 : nat, i#14213 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#1655, dim#1655, i#14120}((Jnn : Jnn <: lanetype), `%`_dim{i#14127}(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#1680, dim#1680, i#14206}((Jnn : Jnn <: lanetype), `%`_dim{i#14213}(M))))*}(`%X%`_shape{lanetype#1643, dim#1643, i#14084}((Jnn : Jnn <: lanetype), `%`_dim{i#14091}(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape{lanetype#1707, dim#1707, i#14357}((Jnn : Jnn <: lanetype), `%`_dim{i#14364}(M)), c*{c <- `c*`})] + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#1655, dim#1655, i#14120}((Jnn : Jnn <: lanetype), `%`_dim{i#14127}(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#1680, dim#1680, i#14206}((Jnn : Jnn <: lanetype), `%`_dim{i#14213}(M)), v_2)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, 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(N), iN : iN(N)) : iN(N)*, sx : sx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* +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**`} - -- 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)) + def $ivbinopsxnd_{lanetype#1731 : lanetype, dim#1731 : dim, i#14430 : nat, Jnn : Jnn, i#14437 : nat, 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))**, `dim#1803*` : dim*, `i#14919*` : nat*, `i#14926*` : nat*, `lanetype#1803*` : lanetype*, lanetype#1743 : lanetype, dim#1743 : dim, i#14466 : nat, i#14473 : nat, lanetype#1768 : lanetype, dim#1768 : dim, i#14552 : nat, i#14559 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#1743, dim#1743, i#14466}((Jnn : Jnn <: lanetype), `%`_dim{i#14473}(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#1768, dim#1768, i#14552}((Jnn : Jnn <: lanetype), `%`_dim{i#14559}(M))))*}(`%X%`_shape{lanetype#1731, dim#1731, i#14430}((Jnn : Jnn <: lanetype), `%`_dim{i#14437}(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape{lanetype#1803, dim#1803, i#14919}((Jnn : Jnn <: lanetype), `%`_dim{i#14926}(M)), c*{c <- `c*`})*{`c*` <- `c**`, dim#1803 <- `dim#1803*`, i#14919 <- `i#14919*`, i#14926 <- `i#14926*`, lanetype#1803 <- `lanetype#1803*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#1743, dim#1743, i#14466}((Jnn : Jnn <: lanetype), `%`_dim{i#14473}(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#1768, dim#1768, i#14552}((Jnn : Jnn <: lanetype), `%`_dim{i#14559}(M)), v_2)) -- if (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*`})) ;; ../../../../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)* +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**`} - -- 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)) + def $fvbinop_{lanetype#1827 : lanetype, dim#1827 : dim, i#14990 : nat, Fnn : Fnn, i#14997 : nat, 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))**, `dim#1893*` : dim*, `i#15183*` : nat*, `i#15190*` : nat*, `lanetype#1893*` : lanetype*, lanetype#1839 : lanetype, dim#1839 : dim, i#15026 : nat, i#15033 : nat, lanetype#1863 : lanetype, dim#1863 : dim, i#15084 : nat, i#15091 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#1839, dim#1839, i#15026}((Fnn : Fnn <: lanetype), `%`_dim{i#15033}(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#1863, dim#1863, i#15084}((Fnn : Fnn <: lanetype), `%`_dim{i#15091}(M))))*}(`%X%`_shape{lanetype#1827, dim#1827, i#14990}((Fnn : Fnn <: lanetype), `%`_dim{i#14997}(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape{lanetype#1893, dim#1893, i#15183}((Fnn : Fnn <: lanetype), `%`_dim{i#15190}(M)), c*{c <- `c*`})*{`c*` <- `c**`, dim#1893 <- `dim#1893*`, i#15183 <- `i#15183*`, i#15190 <- `i#15190*`, lanetype#1893 <- `lanetype#1893*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#1839, dim#1839, i#15026}((Fnn : Fnn <: lanetype), `%`_dim{i#15033}(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#1863, dim#1863, i#15084}((Fnn : Fnn <: lanetype), `%`_dim{i#15091}(M)), v_2)) -- if (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*`})) ;; ../../../../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)* +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**`} - -- 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)) + def $ivternopnd_{lanetype#1916 : lanetype, dim#1916 : dim, i#15228 : nat, Jnn : Jnn, i#15235 : nat, 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))**, `dim#2018*` : dim*, `i#15890*` : nat*, `i#15897*` : nat*, `lanetype#2018*` : lanetype*, lanetype#1928 : lanetype, dim#1928 : dim, i#15276 : nat, i#15283 : nat, lanetype#1953 : lanetype, dim#1953 : dim, i#15362 : nat, i#15369 : nat, lanetype#1978 : lanetype, dim#1978 : dim, i#15448 : nat, i#15455 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#1928, dim#1928, i#15276}((Jnn : Jnn <: lanetype), `%`_dim{i#15283}(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#1953, dim#1953, i#15362}((Jnn : Jnn <: lanetype), `%`_dim{i#15369}(M))))*, `c_3*` : lane_($lanetype(`%X%`_shape{lanetype#1978, dim#1978, i#15448}((Jnn : Jnn <: lanetype), `%`_dim{i#15455}(M))))*}(`%X%`_shape{lanetype#1916, dim#1916, i#15228}((Jnn : Jnn <: lanetype), `%`_dim{i#15235}(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape{lanetype#2018, dim#2018, i#15890}((Jnn : Jnn <: lanetype), `%`_dim{i#15897}(M)), c*{c <- `c*`})*{`c*` <- `c**`, dim#2018 <- `dim#2018*`, i#15890 <- `i#15890*`, i#15897 <- `i#15897*`, lanetype#2018 <- `lanetype#2018*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#1928, dim#1928, i#15276}((Jnn : Jnn <: lanetype), `%`_dim{i#15283}(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#1953, dim#1953, i#15362}((Jnn : Jnn <: lanetype), `%`_dim{i#15369}(M)), v_2)) + -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape{lanetype#1978, dim#1978, i#15448}((Jnn : Jnn <: lanetype), `%`_dim{i#15455}(M)), v_3)) -- if (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*`})) ;; ../../../../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)* +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**`} - -- 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)) + def $fvternop_{lanetype#2042 : lanetype, dim#2042 : dim, i#15961 : nat, Fnn : Fnn, i#15968 : nat, 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))**, `dim#2135*` : dim*, `i#16233*` : nat*, `i#16240*` : nat*, `lanetype#2135*` : lanetype*, lanetype#2054 : lanetype, dim#2054 : dim, i#16009 : nat, i#16016 : nat, lanetype#2078 : lanetype, dim#2078 : dim, i#16067 : nat, i#16074 : nat, lanetype#2102 : lanetype, dim#2102 : dim, i#16125 : nat, i#16132 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#2054, dim#2054, i#16009}((Fnn : Fnn <: lanetype), `%`_dim{i#16016}(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#2078, dim#2078, i#16067}((Fnn : Fnn <: lanetype), `%`_dim{i#16074}(M))))*, `c_3*` : lane_($lanetype(`%X%`_shape{lanetype#2102, dim#2102, i#16125}((Fnn : Fnn <: lanetype), `%`_dim{i#16132}(M))))*}(`%X%`_shape{lanetype#2042, dim#2042, i#15961}((Fnn : Fnn <: lanetype), `%`_dim{i#15968}(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape{lanetype#2135, dim#2135, i#16233}((Fnn : Fnn <: lanetype), `%`_dim{i#16240}(M)), c*{c <- `c*`})*{`c*` <- `c**`, dim#2135 <- `dim#2135*`, i#16233 <- `i#16233*`, i#16240 <- `i#16240*`, lanetype#2135 <- `lanetype#2135*`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2054, dim#2054, i#16009}((Fnn : Fnn <: lanetype), `%`_dim{i#16016}(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#2078, dim#2078, i#16067}((Fnn : Fnn <: lanetype), `%`_dim{i#16074}(M)), v_2)) + -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape{lanetype#2102, dim#2102, i#16125}((Fnn : Fnn <: lanetype), `%`_dim{i#16132}(M)), v_3)) -- if (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*`})) ;; ../../../../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) +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*`}) - -- 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)), c_1, c_2)!`%`_u32.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + def $ivrelop_{lanetype#2158 : lanetype, dim#2158 : dim, i#16278 : nat, Jnn : Jnn, i#16285 : nat, M : M, def $f_(N : N, iN : iN(N), iN : iN(N)) : u32, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#2222 : lanetype, dim#2222 : dim, i#16597 : nat, i#16604 : nat, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, lanetype#2170 : lanetype, dim#2170 : dim, i#16314 : nat, i#16321 : nat, lanetype#2195 : lanetype, dim#2195 : dim, i#16400 : nat, i#16407 : nat, `i#16555*` : nat*, `i#16556*` : nat*, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#2170, dim#2170, i#16314}((Jnn : Jnn <: lanetype), `%`_dim{i#16321}(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#2195, dim#2195, i#16400}((Jnn : Jnn <: lanetype), `%`_dim{i#16407}(M))))*}(`%X%`_shape{lanetype#2158, dim#2158, i#16278}((Jnn : Jnn <: lanetype), `%`_dim{i#16285}(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape{lanetype#2222, dim#2222, i#16597}((Jnn : Jnn <: lanetype), `%`_dim{i#16604}(M)), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2170, dim#2170, i#16314}((Jnn : Jnn <: lanetype), `%`_dim{i#16321}(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#2195, dim#2195, i#16400}((Jnn : Jnn <: lanetype), `%`_dim{i#16407}(M)), v_2)) + -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, `%`_iN{i#16556}($f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)!`%`_u32{i#16555}.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`, i#16555 <- `i#16555*`, i#16556 <- `i#16556*`}) ;; ../../../../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) +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*`}) - -- 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, c_1, c_2)!`%`_u32.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + def $ivrelopsx_{lanetype#2246 : lanetype, dim#2246 : dim, i#16670 : nat, Jnn : Jnn, i#16677 : nat, 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), lanetype#2310 : lanetype, dim#2310 : dim, i#16989 : nat, i#16996 : nat, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, lanetype#2258 : lanetype, dim#2258 : dim, i#16706 : nat, i#16713 : nat, lanetype#2283 : lanetype, dim#2283 : dim, i#16792 : nat, i#16799 : nat, `i#16947*` : nat*, `i#16948*` : nat*, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#2258, dim#2258, i#16706}((Jnn : Jnn <: lanetype), `%`_dim{i#16713}(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#2283, dim#2283, i#16792}((Jnn : Jnn <: lanetype), `%`_dim{i#16799}(M))))*}(`%X%`_shape{lanetype#2246, dim#2246, i#16670}((Jnn : Jnn <: lanetype), `%`_dim{i#16677}(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape{lanetype#2310, dim#2310, i#16989}((Jnn : Jnn <: lanetype), `%`_dim{i#16996}(M)), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2258, dim#2258, i#16706}((Jnn : Jnn <: lanetype), `%`_dim{i#16713}(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#2283, dim#2283, i#16792}((Jnn : Jnn <: lanetype), `%`_dim{i#16799}(M)), v_2)) + -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, `%`_iN{i#16948}($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)!`%`_u32{i#16947}.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`, i#16947 <- `i#16947*`, i#16948 <- `i#16948*`}) ;; ../../../../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) +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 : Inn <: lanetype), `%`_dim(M)), `%`_lane_(c!`%`_iN.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)), c_1, c_2)!`%`_u32.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + def $fvrelop_{lanetype#2334 : lanetype, dim#2334 : dim, i#17062 : nat, Fnn : Fnn, i#17069 : nat, M : M, def $f_(N : N, fN : fN(N), fN : fN(N)) : u32, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#2396 : lanetype, dim#2396 : dim, i#17301 : nat, Inn : Inn, i#17308 : nat, `c*` : iN($sizenn((Fnn : Fnn <: numtype)))*, `i#17404*` : nat*, `i#17405*` : nat*, lanetype#2346 : lanetype, dim#2346 : dim, i#17098 : nat, i#17105 : nat, lanetype#2370 : lanetype, dim#2370 : dim, i#17156 : nat, i#17163 : nat, `i#17259*` : nat*, `i#17260*` : nat*, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#2346, dim#2346, i#17098}((Fnn : Fnn <: lanetype), `%`_dim{i#17105}(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#2370, dim#2370, i#17156}((Fnn : Fnn <: lanetype), `%`_dim{i#17163}(M))))*}(`%X%`_shape{lanetype#2334, dim#2334, i#17062}((Fnn : Fnn <: lanetype), `%`_dim{i#17069}(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape{lanetype#2396, dim#2396, i#17301}((Inn : Inn <: lanetype), `%`_dim{i#17308}(M)), `%`_lane_{i#17405}(c!`%`_iN{i#17404}.0)*{c <- `c*`, i#17404 <- `i#17404*`, i#17405 <- `i#17405*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2346, dim#2346, i#17098}((Fnn : Fnn <: lanetype), `%`_dim{i#17105}(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#2370, dim#2370, i#17156}((Fnn : Fnn <: lanetype), `%`_dim{i#17163}(M)), v_2)) + -- if (c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), `S`_sx, `%`_iN{i#17260}($f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)!`%`_u32{i#17259}.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`, i#17259 <- `i#17259*`, i#17260 <- `i#17260*`}) -- 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) +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*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) + def $ivshiftop_{lanetype#2421 : lanetype, dim#2421 : dim, i#17411 : nat, Jnn : Jnn, i#17418 : nat, M : M, def $f_(N : N, iN : iN(N), u32 : u32) : iN(N), v_1 : vec_(`V128`_Vnn), i : u32, lanetype#2459 : lanetype, dim#2459 : dim, i#17593 : nat, i#17600 : nat, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, lanetype#2433 : lanetype, dim#2433 : dim, i#17447 : nat, i#17454 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#2433, dim#2433, i#17447}((Jnn : Jnn <: lanetype), `%`_dim{i#17454}(M))))*}(`%X%`_shape{lanetype#2421, dim#2421, i#17411}((Jnn : Jnn <: lanetype), `%`_dim{i#17418}(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape{lanetype#2459, dim#2459, i#17593}((Jnn : Jnn <: lanetype), `%`_dim{i#17600}(M)), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2433, dim#2433, i#17447}((Jnn : Jnn <: lanetype), `%`_dim{i#17454}(M)), v_1)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), 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(N), u32 : u32) : iN(N), sx : sx, vec_ : vec_(V128_Vnn), u32 : u32) : vec_(V128_Vnn) +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*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) + def $ivshiftopsx_{lanetype#2483 : lanetype, dim#2483 : dim, i#17666 : nat, Jnn : Jnn, i#17673 : nat, M : M, def $f_(N : N, sx : sx, iN : iN(N), u32 : u32) : iN(N), sx : sx, v_1 : vec_(`V128`_Vnn), i : u32, lanetype#2521 : lanetype, dim#2521 : dim, i#17848 : nat, i#17855 : nat, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, lanetype#2495 : lanetype, dim#2495 : dim, i#17702 : nat, i#17709 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#2495, dim#2495, i#17702}((Jnn : Jnn <: lanetype), `%`_dim{i#17709}(M))))*}(`%X%`_shape{lanetype#2483, dim#2483, i#17666}((Jnn : Jnn <: lanetype), `%`_dim{i#17673}(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape{lanetype#2521, dim#2521, i#17848}((Jnn : Jnn <: lanetype), `%`_dim{i#17855}(M)), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2495, dim#2495, i#17702}((Jnn : Jnn <: lanetype), `%`_dim{i#17709}(M)), v_1)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, i)*{c_1 <- `c_1*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivbitmaskop_(shape : shape, vec_ : vec_(V128_Vnn)) : u32 +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) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_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){}) + def $ivbitmaskop_{lanetype#2545 : lanetype, dim#2545 : dim, i#17921 : nat, Jnn : Jnn, i#17928 : nat, M : M, v_1 : vec_(`V128`_Vnn), c : iN(32), lanetype#2557 : lanetype, dim#2557 : dim, i#17945 : nat, i#17952 : nat, `i#18238*` : nat*, `i#18256*` : nat*, `i#18257*` : nat*, `i#18272*` : nat*, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#2557, dim#2557, i#17945}((Jnn : Jnn <: lanetype), `%`_dim{i#17952}(M))))*}(`%X%`_shape{lanetype#2545, dim#2545, i#17921}((Jnn : Jnn <: lanetype), `%`_dim{i#17928}(M)), v_1) = $irev_(32, c) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2557, dim#2557, i#17945}((Jnn : Jnn <: lanetype), `%`_dim{i#17952}(M)), v_1)) + -- if ($ibits_(32, c) = `%`_bit{i#18257}($ilt_($lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, c_1, `%`_iN{i#18238}(0))!`%`_u32{i#18256}.0)*{c_1 <- `c_1*`, i#18238 <- `i#18238*`, i#18256 <- `i#18256*`, i#18257 <- `i#18257*`} ++ `%`_bit{i#18272}(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){i#18272 <- `i#18272*`}) ;; ../../../../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) +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*`}) - -- 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)) + def $ivswizzlop_{lanetype#2584 : lanetype, dim#2584 : dim, i#18299 : nat, Jnn : Jnn, i#18306 : nat, M : M, def $f_(N : N, iN(N)*, iN : iN(N)) : iN(N), v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#2648 : lanetype, dim#2648 : dim, i#18585 : nat, i#18592 : nat, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, lanetype#2596 : lanetype, dim#2596 : dim, i#18335 : nat, i#18342 : nat, lanetype#2621 : lanetype, dim#2621 : dim, i#18421 : nat, i#18428 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#2596, dim#2596, i#18335}((Jnn : Jnn <: lanetype), `%`_dim{i#18342}(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#2621, dim#2621, i#18421}((Jnn : Jnn <: lanetype), `%`_dim{i#18428}(M))))*}(`%X%`_shape{lanetype#2584, dim#2584, i#18299}((Jnn : Jnn <: lanetype), `%`_dim{i#18306}(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape{lanetype#2648, dim#2648, i#18585}((Jnn : Jnn <: lanetype), `%`_dim{i#18592}(M)), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2596, dim#2596, i#18335}((Jnn : Jnn <: lanetype), `%`_dim{i#18342}(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#2621, dim#2621, i#18421}((Jnn : Jnn <: lanetype), `%`_dim{i#18428}(M)), v_2)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1*{c_1 <- `c_1*`}, c_2)*{c_2 <- `c_2*`}) ;; ../../../../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) +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*`}) - -- 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!`%`_laneidx.0]*{i <- `i*`}) + def $ivshufflop_{lanetype#2672 : lanetype, dim#2672 : dim, i#18658 : nat, Jnn : Jnn, i#18665 : nat, M : M, `i*` : laneidx*, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#2760 : lanetype, dim#2760 : dim, i#19037 : nat, i#19044 : nat, lanetype#2684 : lanetype, dim#2684 : dim, i#18719 : nat, i#18726 : nat, lanetype#2709 : lanetype, dim#2709 : dim, i#18805 : nat, i#18812 : nat, `i#18958*` : nat*, `c*` : lane_($lanetype(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M))))*, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#2709, dim#2709, i#18805}((Jnn : Jnn <: lanetype), `%`_dim{i#18812}(M))))*}(`%X%`_shape{lanetype#2672, dim#2672, i#18658}((Jnn : Jnn <: lanetype), `%`_dim{i#18665}(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape{lanetype#2760, dim#2760, i#19037}((Jnn : Jnn <: lanetype), `%`_dim{i#19044}(M)), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#2709, dim#2709, i#18805}((Jnn : Jnn <: lanetype), `%`_dim{i#18812}(M)), v_2)) + -- if (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_laneidx{i#18958}.0]*{i <- `i*`, i#18958 <- `i#18958*`}) ;; ../../../../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)] + 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)] + 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)] + 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)] + 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)] + 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)] + 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)* +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) + def $vunop_{lanetype#2845 : lanetype, dim#2845 : dim, i#19491 : nat, Fnn : Fnn, i#19498 : nat, M : M, v : vec_(`V128`_Vnn), lanetype#2894 : lanetype, dim#2894 : dim, i#19593 : nat, i#19600 : nat}(`%X%`_shape{lanetype#2845, dim#2845, i#19491}((Fnn : Fnn <: lanetype), `%`_dim{i#19498}(M)), `ABS`_vunop_, v) = $fvunop_(`%X%`_shape{lanetype#2894, dim#2894, i#19593}((Fnn : Fnn <: lanetype), `%`_dim{i#19600}(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) + def $vunop_{lanetype#2906 : lanetype, dim#2906 : dim, i#19615 : nat, Fnn : Fnn, i#19622 : nat, M : M, v : vec_(`V128`_Vnn), lanetype#2955 : lanetype, dim#2955 : dim, i#19717 : nat, i#19724 : nat}(`%X%`_shape{lanetype#2906, dim#2906, i#19615}((Fnn : Fnn <: lanetype), `%`_dim{i#19622}(M)), `NEG`_vunop_, v) = $fvunop_(`%X%`_shape{lanetype#2955, dim#2955, i#19717}((Fnn : Fnn <: lanetype), `%`_dim{i#19724}(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) + def $vunop_{lanetype#2967 : lanetype, dim#2967 : dim, i#19739 : nat, Fnn : Fnn, i#19746 : nat, M : M, v : vec_(`V128`_Vnn), lanetype#3016 : lanetype, dim#3016 : dim, i#19841 : nat, i#19848 : nat}(`%X%`_shape{lanetype#2967, dim#2967, i#19739}((Fnn : Fnn <: lanetype), `%`_dim{i#19746}(M)), `SQRT`_vunop_, v) = $fvunop_(`%X%`_shape{lanetype#3016, dim#3016, i#19841}((Fnn : Fnn <: lanetype), `%`_dim{i#19848}(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) + def $vunop_{lanetype#3028 : lanetype, dim#3028 : dim, i#19863 : nat, Fnn : Fnn, i#19870 : nat, M : M, v : vec_(`V128`_Vnn), lanetype#3077 : lanetype, dim#3077 : dim, i#19965 : nat, i#19972 : nat}(`%X%`_shape{lanetype#3028, dim#3028, i#19863}((Fnn : Fnn <: lanetype), `%`_dim{i#19870}(M)), `CEIL`_vunop_, v) = $fvunop_(`%X%`_shape{lanetype#3077, dim#3077, i#19965}((Fnn : Fnn <: lanetype), `%`_dim{i#19972}(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) + def $vunop_{lanetype#3089 : lanetype, dim#3089 : dim, i#19987 : nat, Fnn : Fnn, i#19994 : nat, M : M, v : vec_(`V128`_Vnn), lanetype#3138 : lanetype, dim#3138 : dim, i#20089 : nat, i#20096 : nat}(`%X%`_shape{lanetype#3089, dim#3089, i#19987}((Fnn : Fnn <: lanetype), `%`_dim{i#19994}(M)), `FLOOR`_vunop_, v) = $fvunop_(`%X%`_shape{lanetype#3138, dim#3138, i#20089}((Fnn : Fnn <: lanetype), `%`_dim{i#20096}(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) + def $vunop_{lanetype#3150 : lanetype, dim#3150 : dim, i#20111 : nat, Fnn : Fnn, i#20118 : nat, M : M, v : vec_(`V128`_Vnn), lanetype#3199 : lanetype, dim#3199 : dim, i#20213 : nat, i#20220 : nat}(`%X%`_shape{lanetype#3150, dim#3150, i#20111}((Fnn : Fnn <: lanetype), `%`_dim{i#20118}(M)), `TRUNC`_vunop_, v) = $fvunop_(`%X%`_shape{lanetype#3199, dim#3199, i#20213}((Fnn : Fnn <: lanetype), `%`_dim{i#20220}(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) + def $vunop_{lanetype#3211 : lanetype, dim#3211 : dim, i#20235 : nat, Fnn : Fnn, i#20242 : nat, M : M, v : vec_(`V128`_Vnn), lanetype#3260 : lanetype, dim#3260 : dim, i#20337 : nat, i#20344 : nat}(`%X%`_shape{lanetype#3211, dim#3211, i#20235}((Fnn : Fnn <: lanetype), `%`_dim{i#20242}(M)), `NEAREST`_vunop_, v) = $fvunop_(`%X%`_shape{lanetype#3260, dim#3260, i#20337}((Fnn : Fnn <: lanetype), `%`_dim{i#20344}(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) + def $vunop_{lanetype#3272 : lanetype, dim#3272 : dim, i#20359 : nat, Jnn : Jnn, i#20366 : nat, M : M, v : vec_(`V128`_Vnn), lanetype#3308 : lanetype, dim#3308 : dim, i#20448 : nat, i#20455 : nat}(`%X%`_shape{lanetype#3272, dim#3272, i#20359}((Jnn : Jnn <: lanetype), `%`_dim{i#20366}(M)), `ABS`_vunop_, v) = $ivunop_(`%X%`_shape{lanetype#3308, dim#3308, i#20448}((Jnn : Jnn <: lanetype), `%`_dim{i#20455}(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) + def $vunop_{lanetype#3320 : lanetype, dim#3320 : dim, i#20470 : nat, Jnn : Jnn, i#20477 : nat, M : M, v : vec_(`V128`_Vnn), lanetype#3356 : lanetype, dim#3356 : dim, i#20559 : nat, i#20566 : nat}(`%X%`_shape{lanetype#3320, dim#3320, i#20470}((Jnn : Jnn <: lanetype), `%`_dim{i#20477}(M)), `NEG`_vunop_, v) = $ivunop_(`%X%`_shape{lanetype#3356, dim#3356, i#20559}((Jnn : Jnn <: lanetype), `%`_dim{i#20566}(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) + def $vunop_{lanetype#3368 : lanetype, dim#3368 : dim, i#20581 : nat, Jnn : Jnn, i#20588 : nat, M : M, v : vec_(`V128`_Vnn), lanetype#3404 : lanetype, dim#3404 : dim, i#20670 : nat, i#20677 : nat}(`%X%`_shape{lanetype#3368, dim#3368, i#20581}((Jnn : Jnn <: lanetype), `%`_dim{i#20588}(M)), `POPCNT`_vunop_, v) = $ivunop_(`%X%`_shape{lanetype#3404, dim#3404, i#20670}((Jnn : Jnn <: lanetype), `%`_dim{i#20677}(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)* +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) + def $vbinop_{lanetype#3416 : lanetype, dim#3416 : dim, i#20692 : nat, Jnn : Jnn, i#20699 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#3452 : lanetype, dim#3452 : dim, i#20813 : nat, i#20820 : nat}(`%X%`_shape{lanetype#3416, dim#3416, i#20692}((Jnn : Jnn <: lanetype), `%`_dim{i#20699}(M)), `ADD`_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape{lanetype#3452, dim#3452, i#20813}((Jnn : Jnn <: lanetype), `%`_dim{i#20820}(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) + def $vbinop_{lanetype#3464 : lanetype, dim#3464 : dim, i#20845 : nat, Jnn : Jnn, i#20852 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#3500 : lanetype, dim#3500 : dim, i#20966 : nat, i#20973 : nat}(`%X%`_shape{lanetype#3464, dim#3464, i#20845}((Jnn : Jnn <: lanetype), `%`_dim{i#20852}(M)), `SUB`_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape{lanetype#3500, dim#3500, i#20966}((Jnn : Jnn <: lanetype), `%`_dim{i#20973}(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) + def $vbinop_{lanetype#3512 : lanetype, dim#3512 : dim, i#20998 : nat, Jnn : Jnn, i#21005 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#3548 : lanetype, dim#3548 : dim, i#21119 : nat, i#21126 : nat}(`%X%`_shape{lanetype#3512, dim#3512, i#20998}((Jnn : Jnn <: lanetype), `%`_dim{i#21005}(M)), `MUL`_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape{lanetype#3548, dim#3548, i#21119}((Jnn : Jnn <: lanetype), `%`_dim{i#21126}(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) + def $vbinop_{lanetype#3560 : lanetype, dim#3560 : dim, i#21151 : nat, Jnn : Jnn, i#21158 : nat, M : M, sx#96 : sx, sx : sx, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#3596 : lanetype, dim#3596 : dim, i#21272 : nat, i#21279 : nat}(`%X%`_shape{lanetype#3560, dim#3560, i#21151}((Jnn : Jnn <: lanetype), `%`_dim{i#21158}(M)), `ADD_SAT`_vbinop_{sx#96}(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape{lanetype#3596, dim#3596, i#21272}((Jnn : Jnn <: lanetype), `%`_dim{i#21279}(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) + def $vbinop_{lanetype#3608 : lanetype, dim#3608 : dim, i#21304 : nat, Jnn : Jnn, i#21311 : nat, M : M, sx#98 : sx, sx : sx, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#3644 : lanetype, dim#3644 : dim, i#21425 : nat, i#21432 : nat}(`%X%`_shape{lanetype#3608, dim#3608, i#21304}((Jnn : Jnn <: lanetype), `%`_dim{i#21311}(M)), `SUB_SAT`_vbinop_{sx#98}(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape{lanetype#3644, dim#3644, i#21425}((Jnn : Jnn <: lanetype), `%`_dim{i#21432}(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) + def $vbinop_{lanetype#3656 : lanetype, dim#3656 : dim, i#21457 : nat, Jnn : Jnn, i#21464 : nat, M : M, sx#100 : sx, sx : sx, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#3692 : lanetype, dim#3692 : dim, i#21578 : nat, i#21585 : nat}(`%X%`_shape{lanetype#3656, dim#3656, i#21457}((Jnn : Jnn <: lanetype), `%`_dim{i#21464}(M)), `MIN`_vbinop_{sx#100}(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape{lanetype#3692, dim#3692, i#21578}((Jnn : Jnn <: lanetype), `%`_dim{i#21585}(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) + def $vbinop_{lanetype#3704 : lanetype, dim#3704 : dim, i#21610 : nat, Jnn : Jnn, i#21617 : nat, M : M, sx#102 : sx, sx : sx, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#3740 : lanetype, dim#3740 : dim, i#21731 : nat, i#21738 : nat}(`%X%`_shape{lanetype#3704, dim#3704, i#21610}((Jnn : Jnn <: lanetype), `%`_dim{i#21617}(M)), `MAX`_vbinop_{sx#102}(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape{lanetype#3740, dim#3740, i#21731}((Jnn : Jnn <: lanetype), `%`_dim{i#21738}(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) + def $vbinop_{lanetype#3752 : lanetype, dim#3752 : dim, i#21763 : nat, Jnn : Jnn, i#21770 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#3788 : lanetype, dim#3788 : dim, i#21884 : nat, i#21891 : nat}(`%X%`_shape{lanetype#3752, dim#3752, i#21763}((Jnn : Jnn <: lanetype), `%`_dim{i#21770}(M)), `AVGRU`_vbinop_, v_1, v_2) = $ivbinopsx_(`%X%`_shape{lanetype#3788, dim#3788, i#21884}((Jnn : Jnn <: lanetype), `%`_dim{i#21891}(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) + def $vbinop_{lanetype#3800 : lanetype, dim#3800 : dim, i#21916 : nat, Jnn : Jnn, i#21923 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#3836 : lanetype, dim#3836 : dim, i#22037 : nat, i#22044 : nat}(`%X%`_shape{lanetype#3800, dim#3800, i#21916}((Jnn : Jnn <: lanetype), `%`_dim{i#21923}(M)), `Q15MULR_SATS`_vbinop_, v_1, v_2) = $ivbinopsx_(`%X%`_shape{lanetype#3836, dim#3836, i#22037}((Jnn : Jnn <: lanetype), `%`_dim{i#22044}(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) + def $vbinop_{lanetype#3848 : lanetype, dim#3848 : dim, i#22069 : nat, Jnn : Jnn, i#22076 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#3884 : lanetype, dim#3884 : dim, i#22190 : nat, i#22197 : nat}(`%X%`_shape{lanetype#3848, dim#3848, i#22069}((Jnn : Jnn <: lanetype), `%`_dim{i#22076}(M)), `RELAXED_Q15MULRS`_vbinop_, v_1, v_2) = $ivbinopsxnd_(`%X%`_shape{lanetype#3884, dim#3884, i#22190}((Jnn : Jnn <: lanetype), `%`_dim{i#22197}(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) + def $vbinop_{lanetype#3896 : lanetype, dim#3896 : dim, i#22222 : nat, Fnn : Fnn, i#22229 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#3945 : lanetype, dim#3945 : dim, i#22356 : nat, i#22363 : nat}(`%X%`_shape{lanetype#3896, dim#3896, i#22222}((Fnn : Fnn <: lanetype), `%`_dim{i#22229}(M)), `ADD`_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape{lanetype#3945, dim#3945, i#22356}((Fnn : Fnn <: lanetype), `%`_dim{i#22363}(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) + def $vbinop_{lanetype#3957 : lanetype, dim#3957 : dim, i#22388 : nat, Fnn : Fnn, i#22395 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4006 : lanetype, dim#4006 : dim, i#22522 : nat, i#22529 : nat}(`%X%`_shape{lanetype#3957, dim#3957, i#22388}((Fnn : Fnn <: lanetype), `%`_dim{i#22395}(M)), `SUB`_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape{lanetype#4006, dim#4006, i#22522}((Fnn : Fnn <: lanetype), `%`_dim{i#22529}(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) + def $vbinop_{lanetype#4018 : lanetype, dim#4018 : dim, i#22554 : nat, Fnn : Fnn, i#22561 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4067 : lanetype, dim#4067 : dim, i#22688 : nat, i#22695 : nat}(`%X%`_shape{lanetype#4018, dim#4018, i#22554}((Fnn : Fnn <: lanetype), `%`_dim{i#22561}(M)), `MUL`_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape{lanetype#4067, dim#4067, i#22688}((Fnn : Fnn <: lanetype), `%`_dim{i#22695}(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) + def $vbinop_{lanetype#4079 : lanetype, dim#4079 : dim, i#22720 : nat, Fnn : Fnn, i#22727 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4128 : lanetype, dim#4128 : dim, i#22854 : nat, i#22861 : nat}(`%X%`_shape{lanetype#4079, dim#4079, i#22720}((Fnn : Fnn <: lanetype), `%`_dim{i#22727}(M)), `DIV`_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape{lanetype#4128, dim#4128, i#22854}((Fnn : Fnn <: lanetype), `%`_dim{i#22861}(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) + def $vbinop_{lanetype#4140 : lanetype, dim#4140 : dim, i#22886 : nat, Fnn : Fnn, i#22893 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4189 : lanetype, dim#4189 : dim, i#23020 : nat, i#23027 : nat}(`%X%`_shape{lanetype#4140, dim#4140, i#22886}((Fnn : Fnn <: lanetype), `%`_dim{i#22893}(M)), `MIN`_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape{lanetype#4189, dim#4189, i#23020}((Fnn : Fnn <: lanetype), `%`_dim{i#23027}(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) + def $vbinop_{lanetype#4201 : lanetype, dim#4201 : dim, i#23052 : nat, Fnn : Fnn, i#23059 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4250 : lanetype, dim#4250 : dim, i#23186 : nat, i#23193 : nat}(`%X%`_shape{lanetype#4201, dim#4201, i#23052}((Fnn : Fnn <: lanetype), `%`_dim{i#23059}(M)), `MAX`_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape{lanetype#4250, dim#4250, i#23186}((Fnn : Fnn <: lanetype), `%`_dim{i#23193}(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) + def $vbinop_{lanetype#4262 : lanetype, dim#4262 : dim, i#23218 : nat, Fnn : Fnn, i#23225 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4311 : lanetype, dim#4311 : dim, i#23352 : nat, i#23359 : nat}(`%X%`_shape{lanetype#4262, dim#4262, i#23218}((Fnn : Fnn <: lanetype), `%`_dim{i#23225}(M)), `PMIN`_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape{lanetype#4311, dim#4311, i#23352}((Fnn : Fnn <: lanetype), `%`_dim{i#23359}(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) + def $vbinop_{lanetype#4323 : lanetype, dim#4323 : dim, i#23384 : nat, Fnn : Fnn, i#23391 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4372 : lanetype, dim#4372 : dim, i#23518 : nat, i#23525 : nat}(`%X%`_shape{lanetype#4323, dim#4323, i#23384}((Fnn : Fnn <: lanetype), `%`_dim{i#23391}(M)), `PMAX`_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape{lanetype#4372, dim#4372, i#23518}((Fnn : Fnn <: lanetype), `%`_dim{i#23525}(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) + def $vbinop_{lanetype#4384 : lanetype, dim#4384 : dim, i#23550 : nat, Fnn : Fnn, i#23557 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4433 : lanetype, dim#4433 : dim, i#23684 : nat, i#23691 : nat}(`%X%`_shape{lanetype#4384, dim#4384, i#23550}((Fnn : Fnn <: lanetype), `%`_dim{i#23557}(M)), `RELAXED_MIN`_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape{lanetype#4433, dim#4433, i#23684}((Fnn : Fnn <: lanetype), `%`_dim{i#23691}(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) + def $vbinop_{lanetype#4445 : lanetype, dim#4445 : dim, i#23716 : nat, Fnn : Fnn, i#23723 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4494 : lanetype, dim#4494 : dim, i#23850 : nat, i#23857 : nat}(`%X%`_shape{lanetype#4445, dim#4445, i#23716}((Fnn : Fnn <: lanetype), `%`_dim{i#23723}(M)), `RELAXED_MAX`_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape{lanetype#4494, dim#4494, i#23850}((Fnn : Fnn <: lanetype), `%`_dim{i#23857}(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)* +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) + def $vternop_{lanetype#4506 : lanetype, dim#4506 : dim, i#23882 : nat, Jnn : Jnn, i#23889 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), v_3 : vec_(`V128`_Vnn), lanetype#4542 : lanetype, dim#4542 : dim, i#24035 : nat, i#24042 : nat}(`%X%`_shape{lanetype#4506, dim#4506, i#23882}((Jnn : Jnn <: lanetype), `%`_dim{i#23889}(M)), `RELAXED_LANESELECT`_vternop_, v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape{lanetype#4542, dim#4542, i#24035}((Jnn : Jnn <: lanetype), `%`_dim{i#24042}(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) + def $vternop_{lanetype#4554 : lanetype, dim#4554 : dim, i#24077 : nat, Fnn : Fnn, i#24084 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), v_3 : vec_(`V128`_Vnn), lanetype#4603 : lanetype, dim#4603 : dim, i#24243 : nat, i#24250 : nat}(`%X%`_shape{lanetype#4554, dim#4554, i#24077}((Fnn : Fnn <: lanetype), `%`_dim{i#24084}(M)), `RELAXED_MADD`_vternop_, v_1, v_2, v_3) = $fvternop_(`%X%`_shape{lanetype#4603, dim#4603, i#24243}((Fnn : Fnn <: lanetype), `%`_dim{i#24250}(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) + def $vternop_{lanetype#4615 : lanetype, dim#4615 : dim, i#24285 : nat, Fnn : Fnn, i#24292 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), v_3 : vec_(`V128`_Vnn), lanetype#4664 : lanetype, dim#4664 : dim, i#24451 : nat, i#24458 : nat}(`%X%`_shape{lanetype#4615, dim#4615, i#24285}((Fnn : Fnn <: lanetype), `%`_dim{i#24292}(M)), `RELAXED_NMADD`_vternop_, v_1, v_2, v_3) = $fvternop_(`%X%`_shape{lanetype#4664, dim#4664, i#24451}((Fnn : Fnn <: lanetype), `%`_dim{i#24458}(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) +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) + def $vrelop_{lanetype#4676 : lanetype, dim#4676 : dim, i#24493 : nat, Jnn : Jnn, i#24500 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4688 : lanetype, dim#4688 : dim, i#24539 : nat, i#24546 : nat}(`%X%`_shape{lanetype#4676, dim#4676, i#24493}((Jnn : Jnn <: lanetype), `%`_dim{i#24500}(M)), `EQ`_vrelop_, v_1, v_2) = $ivrelop_(`%X%`_shape{lanetype#4688, dim#4688, i#24539}((Jnn : Jnn <: lanetype), `%`_dim{i#24546}(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) + def $vrelop_{lanetype#4700 : lanetype, dim#4700 : dim, i#24571 : nat, Jnn : Jnn, i#24578 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4712 : lanetype, dim#4712 : dim, i#24617 : nat, i#24624 : nat}(`%X%`_shape{lanetype#4700, dim#4700, i#24571}((Jnn : Jnn <: lanetype), `%`_dim{i#24578}(M)), `NE`_vrelop_, v_1, v_2) = $ivrelop_(`%X%`_shape{lanetype#4712, dim#4712, i#24617}((Jnn : Jnn <: lanetype), `%`_dim{i#24624}(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) + def $vrelop_{lanetype#4724 : lanetype, dim#4724 : dim, i#24649 : nat, Jnn : Jnn, i#24656 : nat, M : M, sx#104 : sx, sx : sx, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4736 : lanetype, dim#4736 : dim, i#24695 : nat, i#24702 : nat}(`%X%`_shape{lanetype#4724, dim#4724, i#24649}((Jnn : Jnn <: lanetype), `%`_dim{i#24656}(M)), `LT`_vrelop_{sx#104}(sx), v_1, v_2) = $ivrelopsx_(`%X%`_shape{lanetype#4736, dim#4736, i#24695}((Jnn : Jnn <: lanetype), `%`_dim{i#24702}(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) + def $vrelop_{lanetype#4748 : lanetype, dim#4748 : dim, i#24727 : nat, Jnn : Jnn, i#24734 : nat, M : M, sx#106 : sx, sx : sx, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4760 : lanetype, dim#4760 : dim, i#24773 : nat, i#24780 : nat}(`%X%`_shape{lanetype#4748, dim#4748, i#24727}((Jnn : Jnn <: lanetype), `%`_dim{i#24734}(M)), `GT`_vrelop_{sx#106}(sx), v_1, v_2) = $ivrelopsx_(`%X%`_shape{lanetype#4760, dim#4760, i#24773}((Jnn : Jnn <: lanetype), `%`_dim{i#24780}(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) + def $vrelop_{lanetype#4772 : lanetype, dim#4772 : dim, i#24805 : nat, Jnn : Jnn, i#24812 : nat, M : M, sx#108 : sx, sx : sx, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4784 : lanetype, dim#4784 : dim, i#24851 : nat, i#24858 : nat}(`%X%`_shape{lanetype#4772, dim#4772, i#24805}((Jnn : Jnn <: lanetype), `%`_dim{i#24812}(M)), `LE`_vrelop_{sx#108}(sx), v_1, v_2) = $ivrelopsx_(`%X%`_shape{lanetype#4784, dim#4784, i#24851}((Jnn : Jnn <: lanetype), `%`_dim{i#24858}(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) + def $vrelop_{lanetype#4796 : lanetype, dim#4796 : dim, i#24883 : nat, Jnn : Jnn, i#24890 : nat, M : M, sx#110 : sx, sx : sx, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4808 : lanetype, dim#4808 : dim, i#24929 : nat, i#24936 : nat}(`%X%`_shape{lanetype#4796, dim#4796, i#24883}((Jnn : Jnn <: lanetype), `%`_dim{i#24890}(M)), `GE`_vrelop_{sx#110}(sx), v_1, v_2) = $ivrelopsx_(`%X%`_shape{lanetype#4808, dim#4808, i#24929}((Jnn : Jnn <: lanetype), `%`_dim{i#24936}(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) + def $vrelop_{lanetype#4820 : lanetype, dim#4820 : dim, i#24961 : nat, Fnn : Fnn, i#24968 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4845 : lanetype, dim#4845 : dim, i#25020 : nat, i#25027 : nat}(`%X%`_shape{lanetype#4820, dim#4820, i#24961}((Fnn : Fnn <: lanetype), `%`_dim{i#24968}(M)), `EQ`_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape{lanetype#4845, dim#4845, i#25020}((Fnn : Fnn <: lanetype), `%`_dim{i#25027}(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) + def $vrelop_{lanetype#4857 : lanetype, dim#4857 : dim, i#25052 : nat, Fnn : Fnn, i#25059 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4882 : lanetype, dim#4882 : dim, i#25111 : nat, i#25118 : nat}(`%X%`_shape{lanetype#4857, dim#4857, i#25052}((Fnn : Fnn <: lanetype), `%`_dim{i#25059}(M)), `NE`_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape{lanetype#4882, dim#4882, i#25111}((Fnn : Fnn <: lanetype), `%`_dim{i#25118}(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) + def $vrelop_{lanetype#4894 : lanetype, dim#4894 : dim, i#25143 : nat, Fnn : Fnn, i#25150 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4919 : lanetype, dim#4919 : dim, i#25202 : nat, i#25209 : nat}(`%X%`_shape{lanetype#4894, dim#4894, i#25143}((Fnn : Fnn <: lanetype), `%`_dim{i#25150}(M)), `LT`_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape{lanetype#4919, dim#4919, i#25202}((Fnn : Fnn <: lanetype), `%`_dim{i#25209}(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) + def $vrelop_{lanetype#4931 : lanetype, dim#4931 : dim, i#25234 : nat, Fnn : Fnn, i#25241 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4956 : lanetype, dim#4956 : dim, i#25293 : nat, i#25300 : nat}(`%X%`_shape{lanetype#4931, dim#4931, i#25234}((Fnn : Fnn <: lanetype), `%`_dim{i#25241}(M)), `GT`_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape{lanetype#4956, dim#4956, i#25293}((Fnn : Fnn <: lanetype), `%`_dim{i#25300}(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) + def $vrelop_{lanetype#4968 : lanetype, dim#4968 : dim, i#25325 : nat, Fnn : Fnn, i#25332 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4993 : lanetype, dim#4993 : dim, i#25384 : nat, i#25391 : nat}(`%X%`_shape{lanetype#4968, dim#4968, i#25325}((Fnn : Fnn <: lanetype), `%`_dim{i#25332}(M)), `LE`_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape{lanetype#4993, dim#4993, i#25384}((Fnn : Fnn <: lanetype), `%`_dim{i#25391}(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) + def $vrelop_{lanetype#5005 : lanetype, dim#5005 : dim, i#25416 : nat, Fnn : Fnn, i#25423 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#5030 : lanetype, dim#5030 : dim, i#25475 : nat, i#25482 : nat}(`%X%`_shape{lanetype#5005, dim#5005, i#25416}((Fnn : Fnn <: lanetype), `%`_dim{i#25423}(M)), `GE`_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape{lanetype#5030, dim#5030, i#25475}((Fnn : Fnn <: lanetype), `%`_dim{i#25482}(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] + def $lcvtop__{lanetype#5186 : lanetype, dim#5186 : dim, i#26001 : nat, Jnn_1 : Jnn, i#26008 : nat, M_1 : M, lanetype#5198 : lanetype, dim#5198 : dim, i#26013 : nat, Jnn_2 : Jnn, i#26020 : nat, M_2 : M, half#5 : half, sx#114 : sx, half : half, sx : sx, c_1 : lane_($lanetype(`%X%`_shape{lanetype#5186, dim#5186, i#26001}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#26008}(M_1)))), c : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))}(`%X%`_shape{lanetype#5186, dim#5186, i#26001}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#26008}(M_1)), `%X%`_shape{lanetype#5198, dim#5198, i#26013}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#26020}(M_2)), `EXTEND`_vcvtop__{half#5, sx#114}(half, sx), c_1) = [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 : 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] + def $lcvtop__{lanetype#5222 : lanetype, dim#5222 : dim, i#26109 : nat, Jnn_1 : Jnn, i#26116 : nat, M_1 : M, lanetype#5234 : lanetype, dim#5234 : dim, i#26121 : nat, Fnn_2 : Fnn, i#26128 : nat, M_2 : M, `half?#5` : half?, sx#116 : sx, `half?` : half?, sx : sx, c_1 : lane_($lanetype(`%X%`_shape{lanetype#5222, dim#5222, i#26109}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#26116}(M_1)))), c : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))}(`%X%`_shape{lanetype#5222, dim#5222, i#26109}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#26116}(M_1)), `%X%`_shape{lanetype#5234, dim#5234, i#26121}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#26128}(M_2)), `CONVERT`_vcvtop__{`half?#5`, sx#116}(half?{half <- `half?`}, sx), c_1) = [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 : 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 : Inn <: lanetype)))?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : Inn <: lanetype), `%`_dim(M_2)), TRUNC_SAT_vcvtop__(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) + def $lcvtop__{lanetype#5273 : lanetype, dim#5273 : dim, i#26208 : nat, Fnn_1 : Fnn, i#26215 : nat, M_1 : M, lanetype#5285 : lanetype, dim#5285 : dim, i#26220 : nat, Inn_2 : Inn, i#26227 : nat, M_2 : M, sx#148 : sx, `zero?#39` : zero?, sx : sx, `zero?` : zero?, c_1 : lane_($lanetype(`%X%`_shape{lanetype#5273, dim#5273, i#26208}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26215}(M_1)))), `c?` : iN($lsizenn2((Inn_2 : Inn <: lanetype)))?}(`%X%`_shape{lanetype#5273, dim#5273, i#26208}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26215}(M_1)), `%X%`_shape{lanetype#5285, dim#5285, i#26220}((Inn_2 : Inn <: lanetype), `%`_dim{i#26227}(M_2)), `TRUNC_SAT`_vcvtop__{sx#148, `zero?#39`}(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : Inn <: lanetype)), sx, c_1)) ;; ../../../../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 : Inn <: lanetype)))?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : Inn <: lanetype), `%`_dim(M_2)), RELAXED_TRUNC_vcvtop__(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) + def $lcvtop__{lanetype#5361 : lanetype, dim#5361 : dim, i#26384 : nat, Fnn_1 : Fnn, i#26391 : nat, M_1 : M, lanetype#5373 : lanetype, dim#5373 : dim, i#26396 : nat, Inn_2 : Inn, i#26403 : nat, M_2 : M, sx#180 : sx, `zero?#71` : zero?, sx : sx, `zero?` : zero?, c_1 : lane_($lanetype(`%X%`_shape{lanetype#5361, dim#5361, i#26384}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26391}(M_1)))), `c?` : iN($lsizenn2((Inn_2 : Inn <: lanetype)))?}(`%X%`_shape{lanetype#5361, dim#5361, i#26384}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26391}(M_1)), `%X%`_shape{lanetype#5373, dim#5373, i#26396}((Inn_2 : Inn <: lanetype), `%`_dim{i#26403}(M_2)), `RELAXED_TRUNC`_vcvtop__{sx#180, `zero?#71`}(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : Inn <: lanetype)), sx, c_1)) ;; ../../../../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*`} + def $lcvtop__{lanetype#5449 : lanetype, dim#5449 : dim, i#26560 : nat, Fnn_1 : Fnn, i#26567 : nat, M_1 : M, lanetype#5461 : lanetype, dim#5461 : dim, i#26572 : nat, Fnn_2 : Fnn, i#26579 : nat, M_2 : M, zero#125 : zero, c_1 : lane_($lanetype(`%X%`_shape{lanetype#5449, dim#5449, i#26560}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26567}(M_1)))), `c*` : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))*}(`%X%`_shape{lanetype#5449, dim#5449, i#26560}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26567}(M_1)), `%X%`_shape{lanetype#5461, dim#5461, i#26572}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#26579}(M_2)), `DEMOTE`_vcvtop__{zero#125}(`ZERO`_zero), c_1) = 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 : 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*`} + def $lcvtop__{lanetype#5536 : lanetype, dim#5536 : dim, i#26683 : nat, Fnn_1 : Fnn, i#26690 : nat, M_1 : M, lanetype#5548 : lanetype, dim#5548 : dim, i#26695 : nat, Fnn_2 : Fnn, i#26702 : nat, M_2 : M, c_1 : lane_($lanetype(`%X%`_shape{lanetype#5536, dim#5536, i#26683}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26690}(M_1)))), `c*` : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))*}(`%X%`_shape{lanetype#5536, dim#5536, i#26683}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26690}(M_1)), `%X%`_shape{lanetype#5548, dim#5548, i#26695}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#26702}(M_2)), `PROMOTELOW`_vcvtop__, c_1) = 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__(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) = ?())) - -- 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*`})) - -- 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)) - -- 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*`})) - -- 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)) - -- 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{})) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) +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__{lanetype#5623 : lanetype, dim#5623 : dim, i#26806 : nat, Lnn_1 : Lnn, i#26813 : nat, M : M, lanetype#5635 : lanetype, dim#5635 : dim, i#26818 : nat, Lnn_2 : Lnn, i#26825 : nat, vcvtop : vcvtop__(`%X%`_shape{lanetype#5623, dim#5623, i#26806}(Lnn_1, `%`_dim{i#26813}(M)), `%X%`_shape{lanetype#5635, dim#5635, i#26818}(Lnn_2, `%`_dim{i#26825}(M))), v_1 : vec_(`V128`_Vnn), v : vec_(`V128`_Vnn), lanetype#5671 : lanetype, dim#5671 : dim, i#26866 : nat, i#26873 : nat, lanetype#5683 : lanetype, dim#5683 : dim, i#26878 : nat, i#26885 : nat, lanetype#5711 : lanetype, dim#5711 : dim, i#26906 : nat, i#26913 : nat, lanetype#5723 : lanetype, dim#5723 : dim, i#26918 : nat, i#26925 : nat, lanetype#5751 : lanetype, dim#5751 : dim, i#26946 : nat, i#26953 : nat, `c**` : lane_(Lnn_2)**, `dim#5867*` : dim*, `dim#5879*` : dim*, `i#27120*` : nat*, `i#27127*` : nat*, `i#27132*` : nat*, `i#27139*` : nat*, `lanetype#5867*` : lanetype*, `lanetype#5879*` : lanetype*, `dim#5914*` : dim*, `i#27181*` : nat*, `i#27188*` : nat*, `lanetype#5914*` : lanetype*, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#5751, dim#5751, i#26946}(Lnn_1, `%`_dim{i#26953}(M))))*}(`%X%`_shape{lanetype#5623, dim#5623, i#26806}(Lnn_1, `%`_dim{i#26813}(M)), `%X%`_shape{lanetype#5635, dim#5635, i#26818}(Lnn_2, `%`_dim{i#26825}(M)), vcvtop, v_1) = v + -- if (($halfop(`%X%`_shape{lanetype#5671, dim#5671, i#26866}(Lnn_1, `%`_dim{i#26873}(M)), `%X%`_shape{lanetype#5683, dim#5683, i#26878}(Lnn_2, `%`_dim{i#26885}(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape{lanetype#5711, dim#5711, i#26906}(Lnn_1, `%`_dim{i#26913}(M)), `%X%`_shape{lanetype#5723, dim#5723, i#26918}(Lnn_2, `%`_dim{i#26925}(M)), vcvtop) = ?())) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#5751, dim#5751, i#26946}(Lnn_1, `%`_dim{i#26953}(M)), v_1)) + -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape{lanetype#5867, dim#5867, i#27120}(Lnn_1, `%`_dim{i#27127}(M)), `%X%`_shape{lanetype#5879, dim#5879, i#27132}(Lnn_2, `%`_dim{i#27139}(M)), vcvtop, c_1)*{c_1 <- `c_1*`, dim#5867 <- `dim#5867*`, dim#5879 <- `dim#5879*`, i#27120 <- `i#27120*`, i#27127 <- `i#27127*`, i#27132 <- `i#27132*`, i#27139 <- `i#27139*`, lanetype#5867 <- `lanetype#5867*`, lanetype#5879 <- `lanetype#5879*`})) + -- if (v <- $inv_lanes_(`%X%`_shape{lanetype#5914, dim#5914, i#27181}(Lnn_2, `%`_dim{i#27188}(M)), c*{c <- `c*`})*{`c*` <- `c**`, dim#5914 <- `dim#5914*`, i#27181 <- `i#27181*`, i#27188 <- `i#27188*`, lanetype#5914 <- `lanetype#5914*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vcvtop__{lanetype#5937 : lanetype, dim#5937 : dim, i#27248 : nat, Lnn_1 : Lnn, i#27255 : nat, M_1 : M, lanetype#5949 : lanetype, dim#5949 : dim, i#27260 : nat, Lnn_2 : Lnn, i#27267 : nat, M_2 : M, vcvtop : vcvtop__(`%X%`_shape{lanetype#5937, dim#5937, i#27248}(Lnn_1, `%`_dim{i#27255}(M_1)), `%X%`_shape{lanetype#5949, dim#5949, i#27260}(Lnn_2, `%`_dim{i#27267}(M_2))), v_1 : vec_(`V128`_Vnn), v : vec_(`V128`_Vnn), lanetype#6025 : lanetype, dim#6025 : dim, i#27348 : nat, i#27355 : nat, lanetype#6037 : lanetype, dim#6037 : dim, i#27360 : nat, i#27367 : nat, half : half, lanetype#6065 : lanetype, dim#6065 : dim, i#27388 : nat, i#27395 : nat, `c**` : lane_(Lnn_2)**, `dim#6181*` : dim*, `dim#6193*` : dim*, `i#27562*` : nat*, `i#27569*` : nat*, `i#27574*` : nat*, `i#27581*` : nat*, `lanetype#6181*` : lanetype*, `lanetype#6193*` : lanetype*, `dim#6228*` : dim*, `i#27623*` : nat*, `i#27630*` : nat*, `lanetype#6228*` : lanetype*, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#6065, dim#6065, i#27388}(Lnn_1, `%`_dim{i#27395}(M_1))))*}(`%X%`_shape{lanetype#5937, dim#5937, i#27248}(Lnn_1, `%`_dim{i#27255}(M_1)), `%X%`_shape{lanetype#5949, dim#5949, i#27260}(Lnn_2, `%`_dim{i#27267}(M_2)), vcvtop, v_1) = v + -- if ($halfop(`%X%`_shape{lanetype#6025, dim#6025, i#27348}(Lnn_1, `%`_dim{i#27355}(M_1)), `%X%`_shape{lanetype#6037, dim#6037, i#27360}(Lnn_2, `%`_dim{i#27367}(M_2)), vcvtop) = ?(half)) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#6065, dim#6065, i#27388}(Lnn_1, `%`_dim{i#27395}(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{lanetype#6181, dim#6181, i#27562}(Lnn_1, `%`_dim{i#27569}(M_1)), `%X%`_shape{lanetype#6193, dim#6193, i#27574}(Lnn_2, `%`_dim{i#27581}(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`, dim#6181 <- `dim#6181*`, dim#6193 <- `dim#6193*`, i#27562 <- `i#27562*`, i#27569 <- `i#27569*`, i#27574 <- `i#27574*`, i#27581 <- `i#27581*`, lanetype#6181 <- `lanetype#6181*`, lanetype#6193 <- `lanetype#6193*`})) + -- if (v <- $inv_lanes_(`%X%`_shape{lanetype#6228, dim#6228, i#27623}(Lnn_2, `%`_dim{i#27630}(M_2)), c*{c <- `c*`})*{`c*` <- `c**`, dim#6228 <- `dim#6228*`, i#27623 <- `i#27623*`, i#27630 <- `i#27630*`, lanetype#6228 <- `lanetype#6228*`}) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + def $vcvtop__{lanetype#6251 : lanetype, dim#6251 : dim, i#27690 : nat, Lnn_1 : Lnn, i#27697 : nat, M_1 : M, lanetype#6263 : lanetype, dim#6263 : dim, i#27702 : nat, Lnn_2 : Lnn, i#27709 : nat, M_2 : M, vcvtop : vcvtop__(`%X%`_shape{lanetype#6251, dim#6251, i#27690}(Lnn_1, `%`_dim{i#27697}(M_1)), `%X%`_shape{lanetype#6263, dim#6263, i#27702}(Lnn_2, `%`_dim{i#27709}(M_2))), v_1 : vec_(`V128`_Vnn), v : vec_(`V128`_Vnn), lanetype#6299 : lanetype, dim#6299 : dim, i#27750 : nat, i#27757 : nat, lanetype#6311 : lanetype, dim#6311 : dim, i#27762 : nat, i#27769 : nat, lanetype#6339 : lanetype, dim#6339 : dim, i#27790 : nat, i#27797 : nat, `c**` : lane_(Lnn_2)**, `dim#6501*` : dim*, `dim#6513*` : dim*, `i#28022*` : nat*, `i#28029*` : nat*, `i#28034*` : nat*, `i#28041*` : nat*, `lanetype#6501*` : lanetype*, `lanetype#6513*` : lanetype*, `dim#6548*` : dim*, `i#28083*` : nat*, `i#28090*` : nat*, `lanetype#6548*` : lanetype*, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#6339, dim#6339, i#27790}(Lnn_1, `%`_dim{i#27797}(M_1))))*}(`%X%`_shape{lanetype#6251, dim#6251, i#27690}(Lnn_1, `%`_dim{i#27697}(M_1)), `%X%`_shape{lanetype#6263, dim#6263, i#27702}(Lnn_2, `%`_dim{i#27709}(M_2)), vcvtop, v_1) = v + -- if ($zeroop(`%X%`_shape{lanetype#6299, dim#6299, i#27750}(Lnn_1, `%`_dim{i#27757}(M_1)), `%X%`_shape{lanetype#6311, dim#6311, i#27762}(Lnn_2, `%`_dim{i#27769}(M_2)), vcvtop) = ?(`ZERO`_zero)) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#6339, dim#6339, i#27790}(Lnn_1, `%`_dim{i#27797}(M_1)), v_1)) + -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape{lanetype#6501, dim#6501, i#28022}(Lnn_1, `%`_dim{i#28029}(M_1)), `%X%`_shape{lanetype#6513, dim#6513, i#28034}(Lnn_2, `%`_dim{i#28041}(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`, dim#6501 <- `dim#6501*`, dim#6513 <- `dim#6513*`, i#28022 <- `i#28022*`, i#28029 <- `i#28029*`, i#28034 <- `i#28034*`, i#28041 <- `i#28041*`, lanetype#6501 <- `lanetype#6501*`, lanetype#6513 <- `lanetype#6513*`} ++ [$zero(Lnn_2)]^M_1{})) + -- if (v <- $inv_lanes_(`%X%`_shape{lanetype#6548, dim#6548, i#28083}(Lnn_2, `%`_dim{i#28090}(M_2)), c*{c <- `c*`})*{`c*` <- `c**`, dim#6548 <- `dim#6548*`, i#28083 <- `i#28083*`, i#28090 <- `i#28090*`, lanetype#6548 <- `lanetype#6548*`}) ;; ../../../../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) +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) + def $vshiftop_{shape#421 : shape, Jnn#119 : Jnn, lanetype#5042 : lanetype, dim#5042 : dim, i#25507 : nat, Jnn : Jnn, i#25514 : nat, M : M, v : vec_(`V128`_Vnn), i : u32, lanetype#5054 : lanetype, dim#5054 : dim, i#25553 : nat, i#25560 : nat}(`%`_ishape{shape#421, Jnn#119}(`%X%`_shape{lanetype#5042, dim#5042, i#25507}((Jnn : Jnn <: lanetype), `%`_dim{i#25514}(M))), `SHL`_vshiftop_, v, i) = $ivshiftop_(`%X%`_shape{lanetype#5054, dim#5054, i#25553}((Jnn : Jnn <: lanetype), `%`_dim{i#25560}(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) + def $vshiftop_{shape#433 : shape, Jnn#123 : Jnn, lanetype#5066 : lanetype, dim#5066 : dim, i#25585 : nat, Jnn : Jnn, i#25592 : nat, M : M, sx#112 : sx, sx : sx, v : vec_(`V128`_Vnn), i : u32, lanetype#5078 : lanetype, dim#5078 : dim, i#25631 : nat, i#25638 : nat}(`%`_ishape{shape#433, Jnn#123}(`%X%`_shape{lanetype#5066, dim#5066, i#25585}((Jnn : Jnn <: lanetype), `%`_dim{i#25592}(M))), `SHR`_vshiftop_{sx#112}(sx), v, i) = $ivshiftopsx_(`%X%`_shape{lanetype#5078, dim#5078, i#25631}((Jnn : Jnn <: lanetype), `%`_dim{i#25638}(M)), def $ishr_, sx, v, i) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vbitmaskop_(ishape : ishape, vec_ : vec_(V128_Vnn)) : u32 +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) + def $vbitmaskop_{shape#445 : shape, Jnn#127 : Jnn, lanetype#5090 : lanetype, dim#5090 : dim, i#25663 : nat, Jnn : Jnn, i#25670 : nat, M : M, v : vec_(`V128`_Vnn), lanetype#5102 : lanetype, dim#5102 : dim, i#25697 : nat, i#25704 : nat}(`%`_ishape{shape#445, Jnn#127}(`%X%`_shape{lanetype#5090, dim#5090, i#25663}((Jnn : Jnn <: lanetype), `%`_dim{i#25670}(M))), v) = $ivbitmaskop_(`%X%`_shape{lanetype#5102, dim#5102, i#25697}((Jnn : Jnn <: lanetype), `%`_dim{i#25704}(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) +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) + def $vswizzlop_{shape#457 : shape, lanetype#5114 : lanetype, dim#5114 : dim, i#25719 : nat, i#25726 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#5126 : lanetype, dim#5126 : dim, i#25765 : nat, i#25772 : nat}(`%`_bshape{shape#457}(`%X%`_shape{lanetype#5114, dim#5114, i#25719}(`I8`_lanetype, `%`_dim{i#25726}(M))), `SWIZZLE`_vswizzlop_, v_1, v_2) = $ivswizzlop_(`%X%`_shape{lanetype#5126, dim#5126, i#25765}(`I8`_lanetype, `%`_dim{i#25772}(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) + def $vswizzlop_{shape#469 : shape, lanetype#5138 : lanetype, dim#5138 : dim, i#25797 : nat, i#25804 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#5150 : lanetype, dim#5150 : dim, i#25843 : nat, i#25850 : nat}(`%`_bshape{shape#469}(`%X%`_shape{lanetype#5138, dim#5138, i#25797}(`I8`_lanetype, `%`_dim{i#25804}(M))), `RELAXED_SWIZZLE`_vswizzlop_, v_1, v_2) = $ivswizzlop_(`%X%`_shape{lanetype#5150, dim#5150, i#25843}(`I8`_lanetype, `%`_dim{i#25850}(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) +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) + def $vshufflop_{shape#481 : shape, lanetype#5162 : lanetype, dim#5162 : dim, i#25875 : nat, i#25882 : nat, M : M, `i*` : laneidx*, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#5174 : lanetype, dim#5174 : dim, i#25946 : nat, i#25953 : nat}(`%`_bshape{shape#481}(`%X%`_shape{lanetype#5162, dim#5162, i#25875}(`I8`_lanetype, `%`_dim{i#25882}(M))), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape{lanetype#5174, dim#5174, i#25946}(`I8`_lanetype, `%`_dim{i#25953}(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) +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 - -- 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)) + def $vnarrowop__{lanetype#6571 : lanetype, dim#6571 : dim, i#28150 : nat, Jnn_1 : Jnn, i#28157 : nat, M_1 : M, lanetype#6583 : lanetype, dim#6583 : dim, i#28162 : nat, Jnn_2 : Jnn, i#28169 : nat, M_2 : M, sx : sx, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), v : vec_(`V128`_Vnn), lanetype#6595 : lanetype, dim#6595 : dim, i#28198 : nat, i#28205 : nat, lanetype#6620 : lanetype, dim#6620 : dim, i#28284 : nat, i#28291 : nat, `c'_1*` : iN($lsize((Jnn_2 : Jnn <: lanetype)))*, `c'_2*` : iN($lsize((Jnn_2 : Jnn <: lanetype)))*, lanetype#6647 : lanetype, dim#6647 : dim, i#28450 : nat, i#28457 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#6595, dim#6595, i#28198}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28205}(M_1))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#6620, dim#6620, i#28284}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28291}(M_1))))*}(`%X%`_shape{lanetype#6571, dim#6571, i#28150}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28157}(M_1)), `%X%`_shape{lanetype#6583, dim#6583, i#28162}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28169}(M_2)), sx, v_1, v_2) = v + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#6595, dim#6595, i#28198}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28205}(M_1)), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#6620, dim#6620, i#28284}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28291}(M_1)), v_2)) -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, 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, c_2)*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), c'_1*{c'_1 <- `c'_1*`} ++ c'_2*{c'_2 <- `c'_2*`})) + -- if (v = $inv_lanes_(`%X%`_shape{lanetype#6647, dim#6647, i#28450}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28457}(M_2)), c'_1*{c'_1 <- `c'_1*`} ++ c'_2*{c'_2 <- `c'_2*`})) ;; ../../../../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*`}) + def $ivadd_pairwise_{N : N, `i*` : iN(N)*, `i#29492*` : nat*, `i#29500*` : nat*, `j_1*` : N*, `j_2*` : N*, `i#29472*` : nat*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN{i#29492}(j_1), `%`_iN{i#29500}(j_2))*{i#29492 <- `i#29492*`, i#29500 <- `i#29500*`, 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{i#29472}.0*{i <- `i*`, i#29472 <- `i#29472*`}) ;; ../../../../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) +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*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)) + def $ivextunop__{lanetype#6690 : lanetype, dim#6690 : dim, i#28642 : nat, Jnn_1 : Jnn, i#28649 : nat, M_1 : M, lanetype#6702 : lanetype, dim#6702 : dim, i#28654 : nat, Jnn_2 : Jnn, i#28661 : nat, M_2 : M, def $f_(N : N, iN(N)*) : iN(N)*, sx : sx, v_1 : vec_(`V128`_Vnn), lanetype#6740 : lanetype, dim#6740 : dim, i#28862 : nat, i#28869 : nat, `c*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, lanetype#6714 : lanetype, dim#6714 : dim, i#28678 : nat, i#28685 : nat, `c'_1*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#6714, dim#6714, i#28678}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28685}(M_1))))*}(`%X%`_shape{lanetype#6690, dim#6690, i#28642}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28649}(M_1)), `%X%`_shape{lanetype#6702, dim#6702, i#28654}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28661}(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape{lanetype#6740, dim#6740, i#28862}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28869}(M_2)), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#6714, dim#6714, i#28678}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28685}(M_1)), v_1)) -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, 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__(ishape_1, ishape_2), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) +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) + def $vextunop__{shape#493 : shape, Jnn#131 : Jnn, lanetype#6864 : lanetype, dim#6864 : dim, i#29941 : nat, Jnn_1 : Jnn, i#29948 : nat, M_1 : M, shape#505 : shape, Jnn#135 : Jnn, lanetype#6876 : lanetype, dim#6876 : dim, i#29953 : nat, Jnn_2 : Jnn, i#29960 : nat, M_2 : M, sx#182 : sx, sx : sx, v_1 : vec_(`V128`_Vnn), lanetype#6888 : lanetype, dim#6888 : dim, i#29987 : nat, i#29994 : nat, lanetype#6900 : lanetype, dim#6900 : dim, i#29999 : nat, i#30006 : nat}(`%`_ishape{shape#493, Jnn#131}(`%X%`_shape{lanetype#6864, dim#6864, i#29941}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29948}(M_1))), `%`_ishape{shape#505, Jnn#135}(`%X%`_shape{lanetype#6876, dim#6876, i#29953}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#29960}(M_2))), `EXTADD_PAIRWISE`_vextunop__{sx#182}(sx), v_1) = $ivextunop__(`%X%`_shape{lanetype#6888, dim#6888, i#29987}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29994}(M_1)), `%X%`_shape{lanetype#6900, dim#6900, i#29999}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30006}(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)* @@ -5330,15 +116889,15 @@ def $ivdot_(N : N, iN(N)*, iN(N)*) : iN(N)* ;; ../../../../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*`} + 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) +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*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)[i!`%`_laneidx.0 : k!`%`_laneidx.0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)[i!`%`_laneidx.0 : k!`%`_laneidx.0]) + def $ivextbinop__{lanetype#6764 : lanetype, dim#6764 : dim, i#28935 : nat, Jnn_1 : Jnn, i#28942 : nat, M_1 : M, lanetype#6776 : lanetype, dim#6776 : dim, i#28947 : nat, Jnn_2 : Jnn, i#28954 : nat, 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), lanetype#6840 : lanetype, dim#6840 : dim, i#29380 : nat, i#29387 : nat, `c*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, lanetype#6788 : lanetype, dim#6788 : dim, i#29007 : nat, i#29014 : nat, i#29034 : nat, i#29044 : nat, lanetype#6813 : lanetype, dim#6813 : dim, i#29113 : nat, i#29120 : nat, i#29140 : nat, i#29150 : nat, `c'_1*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c'_2*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#6788, dim#6788, i#29007}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29014}(M_1))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#6813, dim#6813, i#29113}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29120}(M_1))))*}(`%X%`_shape{lanetype#6764, dim#6764, i#28935}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28942}(M_1)), `%X%`_shape{lanetype#6776, dim#6776, i#28947}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28954}(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape{lanetype#6840, dim#6840, i#29380}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#29387}(M_2)), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#6788, dim#6788, i#29007}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29014}(M_1)), v_1)[i!`%`_laneidx{i#29034}.0 : k!`%`_laneidx{i#29044}.0]) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#6813, dim#6813, i#29113}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29120}(M_1)), v_2)[i!`%`_laneidx{i#29140}.0 : k!`%`_laneidx{i#29150}.0]) -- if (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*`}) -- if (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*`}) -- if (c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) @@ -5349,48 +116908,48 @@ def $ivmul_(N : N, iN(N)*, iN(N)*) : iN(N)* 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) +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) + def $vextbinop__{shape#517 : shape, Jnn#139 : Jnn, lanetype#6912 : lanetype, dim#6912 : dim, i#30021 : nat, Jnn_1 : Jnn, i#30028 : nat, M_1 : M, shape#529 : shape, Jnn#143 : Jnn, lanetype#6924 : lanetype, dim#6924 : dim, i#30033 : nat, Jnn_2 : Jnn, i#30040 : nat, M_2 : M, half#7 : half, sx#184 : sx, half : half, sx : sx, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#6936 : lanetype, dim#6936 : dim, i#30079 : nat, i#30086 : nat, lanetype#6948 : lanetype, dim#6948 : dim, i#30091 : nat, i#30098 : nat, i#30118 : nat, i#30140 : nat}(`%`_ishape{shape#517, Jnn#139}(`%X%`_shape{lanetype#6912, dim#6912, i#30021}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30028}(M_1))), `%`_ishape{shape#529, Jnn#143}(`%X%`_shape{lanetype#6924, dim#6924, i#30033}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30040}(M_2))), `EXTMUL`_vextbinop__{half#7, sx#184}(half, sx), v_1, v_2) = $ivextbinop__(`%X%`_shape{lanetype#6936, dim#6936, i#30079}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30086}(M_1)), `%X%`_shape{lanetype#6948, dim#6948, i#30091}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30098}(M_2)), def $ivmul_, sx, sx, `%`_laneidx{i#30118}($half(half, 0, M_2)), `%`_laneidx{i#30140}(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) + def $vextbinop__{shape#541 : shape, Jnn#147 : Jnn, lanetype#6960 : lanetype, dim#6960 : dim, i#30165 : nat, Jnn_1 : Jnn, i#30172 : nat, M_1 : M, shape#553 : shape, Jnn#151 : Jnn, lanetype#6972 : lanetype, dim#6972 : dim, i#30177 : nat, Jnn_2 : Jnn, i#30184 : nat, M_2 : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#6984 : lanetype, dim#6984 : dim, i#30223 : nat, i#30230 : nat, lanetype#6996 : lanetype, dim#6996 : dim, i#30235 : nat, i#30242 : nat, i#30262 : nat, i#30284 : nat}(`%`_ishape{shape#541, Jnn#147}(`%X%`_shape{lanetype#6960, dim#6960, i#30165}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30172}(M_1))), `%`_ishape{shape#553, Jnn#151}(`%X%`_shape{lanetype#6972, dim#6972, i#30177}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30184}(M_2))), `DOTS`_vextbinop__, v_1, v_2) = $ivextbinop__(`%X%`_shape{lanetype#6984, dim#6984, i#30223}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30230}(M_1)), `%X%`_shape{lanetype#6996, dim#6996, i#30235}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30242}(M_2)), def $ivdot_, `S`_sx, `S`_sx, `%`_laneidx{i#30262}(0), `%`_laneidx{i#30284}(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) + def $vextbinop__{shape#565 : shape, Jnn#155 : Jnn, lanetype#7008 : lanetype, dim#7008 : dim, i#30309 : nat, Jnn_1 : Jnn, i#30316 : nat, M_1 : M, shape#577 : shape, Jnn#159 : Jnn, lanetype#7020 : lanetype, dim#7020 : dim, i#30321 : nat, Jnn_2 : Jnn, i#30328 : nat, M_2 : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#7032 : lanetype, dim#7032 : dim, i#30367 : nat, i#30374 : nat, lanetype#7044 : lanetype, dim#7044 : dim, i#30379 : nat, i#30386 : nat, i#30412 : nat, i#30434 : nat}(`%`_ishape{shape#565, Jnn#155}(`%X%`_shape{lanetype#7008, dim#7008, i#30309}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30316}(M_1))), `%`_ishape{shape#577, Jnn#159}(`%X%`_shape{lanetype#7020, dim#7020, i#30321}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30328}(M_2))), `RELAXED_DOTS`_vextbinop__, v_1, v_2) = $ivextbinop__(`%X%`_shape{lanetype#7032, dim#7032, i#30367}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30374}(M_1)), `%X%`_shape{lanetype#7044, dim#7044, i#30379}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30386}(M_2)), def $ivdot_sat_, `S`_sx, $relaxed2($R_idot, syntax sx, `S`_sx, `U`_sx), `%`_laneidx{i#30412}(0), `%`_laneidx{i#30434}(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) +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 + def $vextternop__{shape#589 : shape, Jnn#163 : Jnn, lanetype#7056 : lanetype, dim#7056 : dim, i#30459 : nat, Jnn_1 : Jnn, i#30466 : nat, M_1 : M, shape#601 : shape, Jnn#167 : Jnn, lanetype#7068 : lanetype, dim#7068 : dim, i#30471 : nat, Jnn_2 : Jnn, i#30478 : nat, 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), shape#613 : shape, Jnn#171 : Jnn, lanetype#7080 : lanetype, dim#7080 : dim, i#30519 : nat, i#30526 : nat, shape#625 : shape, Jnn#175 : Jnn, lanetype#7092 : lanetype, dim#7092 : dim, i#30531 : nat, i#30538 : nat, c'' : vec_(`V128`_Vnn), shape#652 : shape, Jnn#179 : Jnn, lanetype#7149 : lanetype, dim#7149 : dim, i#30650 : nat, i#30657 : nat, shape#664 : shape, Jnn#183 : Jnn, lanetype#7161 : lanetype, dim#7161 : dim, i#30662 : nat, i#30669 : nat, sx#216 : sx, lanetype#7218 : lanetype, dim#7218 : dim, i#30771 : nat, i#30778 : nat}(`%`_ishape{shape#589, Jnn#163}(`%X%`_shape{lanetype#7056, dim#7056, i#30459}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30466}(M_1))), `%`_ishape{shape#601, Jnn#167}(`%X%`_shape{lanetype#7068, dim#7068, i#30471}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30478}(M_2))), `RELAXED_DOT_ADDS`_vextternop__, 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))), `RELAXED_DOTS`_vextbinop__, 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))), EXTADD_PAIRWISE_vextunop__(S_sx), c')) - -- if (c <- $vbinop_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), ADD_vbinop_, c'', c_3)) + -- if (c' = $vextbinop__(`%`_ishape{shape#613, Jnn#171}(`%X%`_shape{lanetype#7080, dim#7080, i#30519}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30526}(M_1))), `%`_ishape{shape#625, Jnn#175}(`%X%`_shape{lanetype#7092, dim#7092, i#30531}((Jnn : Jnn <: lanetype), `%`_dim{i#30538}(M))), `RELAXED_DOTS`_vextbinop__, c_1, c_2)) + -- if (c'' = $vextunop__(`%`_ishape{shape#652, Jnn#179}(`%X%`_shape{lanetype#7149, dim#7149, i#30650}((Jnn : Jnn <: lanetype), `%`_dim{i#30657}(M))), `%`_ishape{shape#664, Jnn#183}(`%X%`_shape{lanetype#7161, dim#7161, i#30662}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30669}(M_2))), `EXTADD_PAIRWISE`_vextunop__{sx#216}(`S`_sx), c')) + -- if (c <- $vbinop_(`%X%`_shape{lanetype#7218, dim#7218, i#30771}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30778}(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)) + | `CONST`{numtype : numtype}(numtype : numtype, num_(numtype)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax vec = - | VCONST{vectype : vectype, vec_ : vec_(vectype)}(vectype : vectype, vec_ : vec_(vectype)) + | `VCONST`{vectype : vectype}(vectype : vectype, 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) + | `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*) + | `_VALS`{`val*` : val*}(`val*` : val*) | `(REF.EXN_ADDR%)THROW_REF`{exnaddr : exnaddr}(exnaddr : exnaddr) - | TRAP + | `TRAP` ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax hostfunc = @@ -5398,109 +116957,109 @@ 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) + | `FUNC`{typeidx : typeidx, `local*` : local*, expr : expr}(typeidx : typeidx, `local*` : local*, expr : expr) | `...` ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax taginst = { - TYPE{tagtype : tagtype} tagtype + `TYPE`{tagtype : tagtype} tagtype } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax globalinst = { - TYPE{globaltype : globaltype} globaltype, - VALUE{val : val} val + `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* + `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* + `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 + `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* + `BYTES`{`byte*` : byte*} byte* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax eleminst = { - TYPE{elemtype : elemtype} elemtype, - REFS{`ref*` : ref*} ref* + `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))) + | `PACK`{packtype : packtype}(packtype : packtype, 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))) + | `CONST`{numtype : numtype}(numtype : numtype, num_(numtype)) + | `VCONST`{vectype : vectype}(vectype : vectype, vec_(vectype)) + | `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) + | `PACK`{packtype : packtype}(packtype : packtype, iN($psizenn(packtype))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax structinst = { - TYPE{deftype : deftype} deftype, - FIELDS{`fieldval*` : fieldval*} fieldval* + `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* + `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* + `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* + `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 @@ -5509,7 +117068,7 @@ syntax state = ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax config = - | `%;%`{state : state, `instr*` : instr*}(state : state, instr*{instr <- `instr*`} : instr*) + | `%;%`{state : state, `instr*` : instr*}(state : state, `instr*` : instr*) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $Ki : nat @@ -5521,14 +117080,14 @@ 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)) + def $packfield_{packtype : packtype, numtype#33 : numtype, i : num_(`I32`_numtype), packtype#1 : packtype}((packtype : packtype <: storagetype), `CONST`_val{numtype#33}(`I32`_numtype, i)) = `PACK`_fieldval{packtype#1}(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)) + def $unpackfield_{packtype : packtype, sx : sx, packtype#3 : packtype, i : iN($psizenn(packtype)), numtype#35 : numtype}((packtype : packtype <: storagetype), ?(sx), `PACK`_fieldval{packtype#3}(packtype, i)) = `CONST`_val{numtype#35}(`I32`_numtype, $extend__($psize(packtype), 32, sx, i)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { @@ -5538,7 +117097,7 @@ 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*`}) + def $tagsxa{tagaddr#1 : tagaddr, a : addr, `xa*` : externaddr*}([`TAG`_externaddr{tagaddr#1}(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*`}) -- otherwise @@ -5552,7 +117111,7 @@ 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*`}) + def $globalsxa{globaladdr#1 : globaladdr, a : addr, `xa*` : externaddr*}([`GLOBAL`_externaddr{globaladdr#1}(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*`}) -- otherwise @@ -5566,7 +117125,7 @@ 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*`}) + def $memsxa{memaddr#1 : memaddr, a : addr, `xa*` : externaddr*}([`MEM`_externaddr{memaddr#1}(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*`}) -- otherwise @@ -5580,7 +117139,7 @@ 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*`}) + def $tablesxa{tableaddr#1 : tableaddr, a : addr, `xa*` : externaddr*}([`TABLE`_externaddr{tableaddr#1}(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*`}) -- otherwise @@ -5594,7 +117153,7 @@ 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*`}) + def $funcsxa{funcaddr#1 : funcaddr, a : addr, `xa*` : externaddr*}([`FUNC`_externaddr{funcaddr#1}(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*`}) -- otherwise @@ -5603,212 +117162,212 @@ def $funcsxa(externaddr*) : funcaddr* ;; ../../../../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 + def $store{store#11 : store, frame#11 : frame, s : store, f : frame}(`%;%`_state{store#11, frame#11}(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 + def $frame{store#23 : store, frame#23 : frame, s : store, f : frame}(`%;%`_state{store#23, frame#23}(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 + def $tagaddr{store#35 : store, frame#35 : frame, s : store, f : frame, moduleinst#2 : moduleinst, `tagaddr*#2` : tagaddr*}(`%;%`_state{store#35, frame#35}(s, f)) = f.`MODULE`_frame{moduleinst#2}.`TAGS`_moduleinst{`tagaddr*#2`} ;; ../../../../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 + def $moduleinst{store#47 : store, frame#47 : frame, s : store, f : frame, moduleinst#3 : moduleinst}(`%;%`_state{store#47, frame#47}(s, f)) = f.`MODULE`_frame{moduleinst#3} ;; ../../../../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 + def $taginst{store#59 : store, frame#59 : frame, s : store, f : frame, `taginst*#2` : taginst*}(`%;%`_state{store#59, frame#59}(s, f)) = s.`TAGS`_store{`taginst*#2`} ;; ../../../../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 + def $globalinst{store#71 : store, frame#71 : frame, s : store, f : frame, `globalinst*#2` : globalinst*}(`%;%`_state{store#71, frame#71}(s, f)) = s.`GLOBALS`_store{`globalinst*#2`} ;; ../../../../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 + def $meminst{store#83 : store, frame#83 : frame, s : store, f : frame, `meminst*#2` : meminst*}(`%;%`_state{store#83, frame#83}(s, f)) = s.`MEMS`_store{`meminst*#2`} ;; ../../../../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 + def $tableinst{store#95 : store, frame#95 : frame, s : store, f : frame, `tableinst*#2` : tableinst*}(`%;%`_state{store#95, frame#95}(s, f)) = s.`TABLES`_store{`tableinst*#2`} ;; ../../../../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 + def $funcinst{store#107 : store, frame#107 : frame, s : store, f : frame, `funcinst*#2` : funcinst*}(`%;%`_state{store#107, frame#107}(s, f)) = s.`FUNCS`_store{`funcinst*#2`} ;; ../../../../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 + def $datainst{store#119 : store, frame#119 : frame, s : store, f : frame, `datainst*#2` : datainst*}(`%;%`_state{store#119, frame#119}(s, f)) = s.`DATAS`_store{`datainst*#2`} ;; ../../../../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 + def $eleminst{store#131 : store, frame#131 : frame, s : store, f : frame, `eleminst*#2` : eleminst*}(`%;%`_state{store#131, frame#131}(s, f)) = s.`ELEMS`_store{`eleminst*#2`} ;; ../../../../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 + def $structinst{store#143 : store, frame#143 : frame, s : store, f : frame, `structinst*#2` : structinst*}(`%;%`_state{store#143, frame#143}(s, f)) = s.`STRUCTS`_store{`structinst*#2`} ;; ../../../../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 + def $arrayinst{store#155 : store, frame#155 : frame, s : store, f : frame, `arrayinst*#2` : arrayinst*}(`%;%`_state{store#155, frame#155}(s, f)) = s.`ARRAYS`_store{`arrayinst*#2`} ;; ../../../../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 + def $exninst{store#167 : store, frame#167 : frame, s : store, f : frame, `exninst*#2` : exninst*}(`%;%`_state{store#167, frame#167}(s, f)) = s.`EXNS`_store{`exninst*#2`} ;; ../../../../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] + def $type{store#179 : store, frame#179 : frame, s : store, f : frame, x : idx, moduleinst#4 : moduleinst, `deftype*#74` : deftype*, i#30957 : nat}(`%;%`_state{store#179, frame#179}(s, f), x) = f.`MODULE`_frame{moduleinst#4}.`TYPES`_moduleinst{`deftype*#74`}[x!`%`_idx{i#30957}.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]] + def $tag{store#191 : store, frame#191 : frame, s : store, f : frame, x : idx, `taginst*#3` : taginst*, moduleinst#5 : moduleinst, `tagaddr*#3` : tagaddr*, i#30979 : nat}(`%;%`_state{store#191, frame#191}(s, f), x) = s.`TAGS`_store{`taginst*#3`}[f.`MODULE`_frame{moduleinst#5}.`TAGS`_moduleinst{`tagaddr*#3`}[x!`%`_idx{i#30979}.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]] + def $global{store#203 : store, frame#203 : frame, s : store, f : frame, x : idx, `globalinst*#3` : globalinst*, moduleinst#6 : moduleinst, `globaladdr*#1` : globaladdr*, i#31001 : nat}(`%;%`_state{store#203, frame#203}(s, f), x) = s.`GLOBALS`_store{`globalinst*#3`}[f.`MODULE`_frame{moduleinst#6}.`GLOBALS`_moduleinst{`globaladdr*#1`}[x!`%`_idx{i#31001}.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]] + def $mem{store#215 : store, frame#215 : frame, s : store, f : frame, x : idx, `meminst*#3` : meminst*, moduleinst#7 : moduleinst, `memaddr*#1` : memaddr*, i#31023 : nat}(`%;%`_state{store#215, frame#215}(s, f), x) = s.`MEMS`_store{`meminst*#3`}[f.`MODULE`_frame{moduleinst#7}.`MEMS`_moduleinst{`memaddr*#1`}[x!`%`_idx{i#31023}.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]] + def $table{store#227 : store, frame#227 : frame, s : store, f : frame, x : idx, `tableinst*#3` : tableinst*, moduleinst#8 : moduleinst, `tableaddr*#1` : tableaddr*, i#31045 : nat}(`%;%`_state{store#227, frame#227}(s, f), x) = s.`TABLES`_store{`tableinst*#3`}[f.`MODULE`_frame{moduleinst#8}.`TABLES`_moduleinst{`tableaddr*#1`}[x!`%`_idx{i#31045}.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]] + def $func{store#239 : store, frame#239 : frame, s : store, f : frame, x : idx, `funcinst*#3` : funcinst*, moduleinst#9 : moduleinst, `funcaddr*#1` : funcaddr*, i#31067 : nat}(`%;%`_state{store#239, frame#239}(s, f), x) = s.`FUNCS`_store{`funcinst*#3`}[f.`MODULE`_frame{moduleinst#9}.`FUNCS`_moduleinst{`funcaddr*#1`}[x!`%`_idx{i#31067}.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]] + def $data{store#251 : store, frame#251 : frame, s : store, f : frame, x : idx, `datainst*#3` : datainst*, moduleinst#10 : moduleinst, `dataaddr*#1` : dataaddr*, i#31089 : nat}(`%;%`_state{store#251, frame#251}(s, f), x) = s.`DATAS`_store{`datainst*#3`}[f.`MODULE`_frame{moduleinst#10}.`DATAS`_moduleinst{`dataaddr*#1`}[x!`%`_idx{i#31089}.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]] + def $elem{store#263 : store, frame#263 : frame, s : store, f : frame, x : idx, `eleminst*#3` : eleminst*, moduleinst#11 : moduleinst, `elemaddr*#1` : elemaddr*, i#31111 : nat}(`%;%`_state{store#263, frame#263}(s, f), x) = s.`ELEMS`_store{`eleminst*#3`}[f.`MODULE`_frame{moduleinst#11}.`ELEMS`_moduleinst{`elemaddr*#1`}[x!`%`_idx{i#31111}.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] + def $local{store#275 : store, frame#275 : frame, s : store, f : frame, x : idx, `val?*#2` : val?*, i#31143 : nat}(`%;%`_state{store#275, frame#275}(s, f), x) = f.`LOCALS`_frame{`val?*#2`}[x!`%`_idx{i#31143}.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)]) + def $with_local{store#287 : store, frame#287 : frame, s : store, f : frame, x : idx, v : val, store#299 : store, frame#299 : frame, `val?*#3` : val?*, i#31165 : nat}(`%;%`_state{store#287, frame#287}(s, f), x, v) = `%;%`_state{store#299, frame#299}(s, f[`LOCALS`_frame{`val?*#3`}[x!`%`_idx{i#31165}.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) + def $with_global{store#311 : store, frame#311 : frame, s : store, f : frame, x : idx, v : val, store#323 : store, frame#323 : frame, `globalinst*#4` : globalinst*, moduleinst#12 : moduleinst, `globaladdr*#2` : globaladdr*, i#31187 : nat, val#1 : val}(`%;%`_state{store#311, frame#311}(s, f), x, v) = `%;%`_state{store#323, frame#323}(s[`GLOBALS`_store{`globalinst*#4`}[f.`MODULE`_frame{moduleinst#12}.`GLOBALS`_moduleinst{`globaladdr*#2`}[x!`%`_idx{i#31187}.0]].`VALUE`_globalinst{val#1} = 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) + def $with_table{store#335 : store, frame#335 : frame, s : store, f : frame, x : idx, i : nat, r : ref, store#347 : store, frame#347 : frame, `tableinst*#4` : tableinst*, moduleinst#13 : moduleinst, `tableaddr*#2` : tableaddr*, i#31209 : nat, `ref*#1` : ref*}(`%;%`_state{store#335, frame#335}(s, f), x, i, r) = `%;%`_state{store#347, frame#347}(s[`TABLES`_store{`tableinst*#4`}[f.`MODULE`_frame{moduleinst#13}.`TABLES`_moduleinst{`tableaddr*#2`}[x!`%`_idx{i#31209}.0]].`REFS`_tableinst{`ref*#1`}[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) + def $with_tableinst{store#359 : store, frame#359 : frame, s : store, f : frame, x : idx, ti : tableinst, store#371 : store, frame#371 : frame, `tableinst*#5` : tableinst*, moduleinst#14 : moduleinst, `tableaddr*#3` : tableaddr*, i#31231 : nat}(`%;%`_state{store#359, frame#359}(s, f), x, ti) = `%;%`_state{store#371, frame#371}(s[`TABLES`_store{`tableinst*#5`}[f.`MODULE`_frame{moduleinst#14}.`TABLES`_moduleinst{`tableaddr*#3`}[x!`%`_idx{i#31231}.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) + def $with_mem{store#383 : store, frame#383 : frame, s : store, f : frame, x : idx, i : nat, j : nat, `b*` : byte*, store#395 : store, frame#395 : frame, `meminst*#4` : meminst*, moduleinst#15 : moduleinst, `memaddr*#2` : memaddr*, i#31265 : nat, `byte*#1845` : byte*}(`%;%`_state{store#383, frame#383}(s, f), x, i, j, b*{b <- `b*`}) = `%;%`_state{store#395, frame#395}(s[`MEMS`_store{`meminst*#4`}[f.`MODULE`_frame{moduleinst#15}.`MEMS`_moduleinst{`memaddr*#2`}[x!`%`_idx{i#31265}.0]].`BYTES`_meminst{`byte*#1845`}[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) + def $with_meminst{store#407 : store, frame#407 : frame, s : store, f : frame, x : idx, mi : meminst, store#419 : store, frame#419 : frame, `meminst*#5` : meminst*, moduleinst#16 : moduleinst, `memaddr*#3` : memaddr*, i#31299 : nat}(`%;%`_state{store#407, frame#407}(s, f), x, mi) = `%;%`_state{store#419, frame#419}(s[`MEMS`_store{`meminst*#5`}[f.`MODULE`_frame{moduleinst#16}.`MEMS`_moduleinst{`memaddr*#3`}[x!`%`_idx{i#31299}.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) + def $with_elem{store#431 : store, frame#431 : frame, s : store, f : frame, x : idx, `r*` : ref*, store#443 : store, frame#443 : frame, `eleminst*#4` : eleminst*, moduleinst#17 : moduleinst, `elemaddr*#2` : elemaddr*, i#31321 : nat, `ref*#2` : ref*}(`%;%`_state{store#431, frame#431}(s, f), x, r*{r <- `r*`}) = `%;%`_state{store#443, frame#443}(s[`ELEMS`_store{`eleminst*#4`}[f.`MODULE`_frame{moduleinst#17}.`ELEMS`_moduleinst{`elemaddr*#2`}[x!`%`_idx{i#31321}.0]].`REFS`_eleminst{`ref*#2`} = 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) + def $with_data{store#455 : store, frame#455 : frame, s : store, f : frame, x : idx, `b*` : byte*, store#467 : store, frame#467 : frame, `datainst*#4` : datainst*, moduleinst#18 : moduleinst, `dataaddr*#2` : dataaddr*, i#31355 : nat, `byte*#1846` : byte*}(`%;%`_state{store#455, frame#455}(s, f), x, b*{b <- `b*`}) = `%;%`_state{store#467, frame#467}(s[`DATAS`_store{`datainst*#4`}[f.`MODULE`_frame{moduleinst#18}.`DATAS`_moduleinst{`dataaddr*#2`}[x!`%`_idx{i#31355}.0]].`BYTES`_datainst{`byte*#1846`} = 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) + def $with_struct{store#479 : store, frame#479 : frame, s : store, f : frame, a : addr, i : nat, fv : fieldval, store#491 : store, frame#491 : frame, `structinst*#3` : structinst*, `fieldval*#1` : fieldval*}(`%;%`_state{store#479, frame#479}(s, f), a, i, fv) = `%;%`_state{store#491, frame#491}(s[`STRUCTS`_store{`structinst*#3`}[a].`FIELDS`_structinst{`fieldval*#1`}[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) + def $with_array{store#503 : store, frame#503 : frame, s : store, f : frame, a : addr, i : nat, fv : fieldval, store#515 : store, frame#515 : frame, `arrayinst*#3` : arrayinst*, `fieldval*#2` : fieldval*}(`%;%`_state{store#503, frame#503}(s, f), a, i, fv) = `%;%`_state{store#515, frame#515}(s[`ARRAYS`_store{`arrayinst*#3`}[a].`FIELDS`_arrayinst{`fieldval*#2`}[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) + def $add_structinst{store#527 : store, frame#527 : frame, s : store, f : frame, `si*` : structinst*, store#539 : store, frame#539 : frame, `structinst*#4` : structinst*}(`%;%`_state{store#527, frame#527}(s, f), si*{si <- `si*`}) = `%;%`_state{store#539, frame#539}(s[`STRUCTS`_store{`structinst*#4`} =++ 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) + def $add_arrayinst{store#551 : store, frame#551 : frame, s : store, f : frame, `ai*` : arrayinst*, store#563 : store, frame#563 : frame, `arrayinst*#4` : arrayinst*}(`%;%`_state{store#551, frame#551}(s, f), ai*{ai <- `ai*`}) = `%;%`_state{store#563, frame#563}(s[`ARRAYS`_store{`arrayinst*#4`} =++ 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) + def $add_exninst{store#575 : store, frame#575 : frame, s : store, f : frame, `exn*` : exninst*, store#587 : store, frame#587 : frame, `exninst*#3` : exninst*}(`%;%`_state{store#575, frame#575}(s, f), exn*{exn <- `exn*`}) = `%;%`_state{store#587, frame#587}(s[`EXNS`_store{`exninst*#3`} =++ 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' - -- 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 (i'!`%`_u64.0 = (|r'*{r' <- `r'*`}| + n)) - -- (if (i'!`%`_u64.0 <= j!`%`_u64.0))?{j <- `j?`} + def $growtable{tableinst : tableinst, n : n, r : ref, tableinst' : tableinst, tabletype#875 : tabletype, addrtype#1027 : addrtype, limits#1027 : limits, reftype#3401 : reftype, at : addrtype, u64#361 : u64, `u64?#359` : u64?, i : u64, `j?` : u64?, rt : reftype, `ref*#3` : ref*, `r'*` : ref*, tabletype#876 : tabletype, addrtype#1039 : addrtype, limits#1039 : limits, reftype#3413 : reftype, u64#373 : u64, `u64?#371` : u64?, i' : u64, `ref*#4` : ref*, i#31449 : nat, `i#31467?` : nat?, `i#31477?` : nat?}(tableinst, n, r) = tableinst' + -- if (tableinst = {`TYPE`{tabletype#875} `%%%`_tabletype{addrtype#1027, limits#1027, reftype#3401}(at, `[%..%]`_limits{u64#361, `u64?#359`}(i, j?{j <- `j?`}), rt), `REFS`{`ref*#3`} r'*{r' <- `r'*`}}) + -- if (tableinst' = {`TYPE`{tabletype#876} `%%%`_tabletype{addrtype#1039, limits#1039, reftype#3413}(at, `[%..%]`_limits{u64#373, `u64?#371`}(i', j?{j <- `j?`}), rt), `REFS`{`ref*#4`} r'*{r' <- `r'*`} ++ r^n{}}) + -- if (i'!`%`_u64{i#31449}.0 = (|r'*{r' <- `r'*`}| + n)) + -- (if (i'!`%`_u64{i#31467}.0 <= j!`%`_u64{i#31477}.0))?{i#31467 <- `i#31467?`, i#31477 <- `i#31477?`, 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' - -- 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 ((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?`} + def $growmem{meminst : meminst, n : n, meminst' : meminst, memtype#525 : memtype, addrtype#1051 : addrtype, limits#1051 : limits, at : addrtype, u64#385 : u64, `u64?#383` : u64?, i : u64, `j?` : u64?, `byte*#1847` : byte*, `b*` : byte*, memtype#526 : memtype, addrtype#1063 : addrtype, limits#1063 : limits, u64#397 : u64, `u64?#395` : u64?, i' : u64, `byte*#1848` : byte*, `i#31599*` : nat*, i#31609 : nat, `i#31627?` : nat?, `i#31637?` : nat?}(meminst, n) = meminst' + -- if (meminst = {`TYPE`{memtype#525} `%%PAGE`_memtype{addrtype#1051, limits#1051}(at, `[%..%]`_limits{u64#385, `u64?#383`}(i, j?{j <- `j?`})), `BYTES`{`byte*#1847`} b*{b <- `b*`}}) + -- if (meminst' = {`TYPE`{memtype#526} `%%PAGE`_memtype{addrtype#1063, limits#1063}(at, `[%..%]`_limits{u64#397, `u64?#395`}(i', j?{j <- `j?`})), `BYTES`{`byte*#1848`} b*{b <- `b*`} ++ `%`_byte{i#31599}(0)^(n * (64 * $Ki)){i#31599 <- `i#31599*`}}) + -- if ((i'!`%`_u64{i#31609}.0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) + -- (if (i'!`%`_u64{i#31627}.0 <= j!`%`_u64{i#31637}.0))?{i#31627 <- `i#31627?`, i#31637 <- `i#31637?`, 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) + rule _{s : store, numtype#51 : numtype, nt : numtype, c : num_(nt)}: + `%|-%:%`(s, `CONST`_num{numtype#51}(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) + rule _{s : store, vectype#54 : vectype, vt : vectype, c : vec_(vt)}: + `%|-%:%`(s, `VCONST`_vec{vectype#54}(vt, c), vt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { @@ -5816,48 +117375,48 @@ 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')) - -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) + rule null{s : store, heaptype#1049 : heaptype, ht : heaptype, `null?#1051` : null?, heaptype#1061 : heaptype, ht' : heaptype, `deftype*#75` : deftype*, `subtype*#18` : subtype*, `tagtype*#19` : tagtype*, `globaltype*#20` : globaltype*, `memtype*#34` : memtype*, `tabletype*#27` : tabletype*, `deftype*#76` : deftype*, `datatype*#19` : datatype*, `elemtype*#19` : elemtype*, `localtype*#22` : localtype*, `resulttype*#30` : resulttype*, `resulttype?#27` : resulttype?, `funcidx*#56` : funcidx*}: + `%|-%:%`(s, `REF.NULL`_ref{heaptype#1049}(ht), `REF`_reftype{`null?#1051`, heaptype#1061}(?(`NULL`_null), ht')) + -- Heaptype_sub: `%|-%<:%`({`TYPES`{`deftype*#75`} [], `RECS`{`subtype*#18`} [], `TAGS`{`tagtype*#19`} [], `GLOBALS`{`globaltype*#20`} [], `MEMS`{`memtype*#34`} [], `TABLES`{`tabletype*#27`} [], `FUNCS`{`deftype*#76`} [], `DATAS`{`datatype*#19`} [], `ELEMS`{`elemtype*#19`} [], `LOCALS`{`localtype*#22`} [], `LABELS`{`resulttype*#30`} [], `RETURN`{`resulttype?#27`} ?(), `REFS`{`funcidx*#56`} []}, 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)) + rule i31{s : store, u31#1 : u31, i : u31, `null?#1063` : null?, heaptype#1073 : heaptype}: + `%|-%:%`(s, `REF.I31_NUM`_ref{u31#1}(i), `REF`_reftype{`null?#1063`, heaptype#1073}(?(), `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))) - -- if (s.STRUCTS_store[a].TYPE_structinst = dt) + rule struct{s : store, structaddr#1 : structaddr, a : addr, `null?#1075` : null?, heaptype#1085 : heaptype, dt : deftype, `structinst*#5` : structinst*, deftype#1 : deftype}: + `%|-%:%`(s, `REF.STRUCT_ADDR`_ref{structaddr#1}(a), `REF`_reftype{`null?#1075`, heaptype#1085}(?(), (dt : deftype <: heaptype))) + -- if (s.`STRUCTS`_store{`structinst*#5`}[a].`TYPE`_structinst{deftype#1} = 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))) - -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) + rule array{s : store, arrayaddr#1 : arrayaddr, a : addr, `null?#1087` : null?, heaptype#1097 : heaptype, dt : deftype, `arrayinst*#5` : arrayinst*, deftype#2 : deftype}: + `%|-%:%`(s, `REF.ARRAY_ADDR`_ref{arrayaddr#1}(a), `REF`_reftype{`null?#1087`, heaptype#1097}(?(), (dt : deftype <: heaptype))) + -- if (s.`ARRAYS`_store{`arrayinst*#5`}[a].`TYPE`_arrayinst{deftype#2} = 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))) - -- if (s.FUNCS_store[a].TYPE_funcinst = dt) + rule func{s : store, funcaddr#3 : funcaddr, a : addr, `null?#1099` : null?, heaptype#1109 : heaptype, dt : deftype, `funcinst*#4` : funcinst*, deftype#3 : deftype}: + `%|-%:%`(s, `REF.FUNC_ADDR`_ref{funcaddr#3}(a), `REF`_reftype{`null?#1099`, heaptype#1109}(?(), (dt : deftype <: heaptype))) + -- if (s.`FUNCS`_store{`funcinst*#4`}[a].`TYPE`_funcinst{deftype#3} = 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)) - -- if (s.EXNS_store[a] = exn) + rule exn{s : store, exnaddr#1 : exnaddr, a : addr, `null?#1111` : null?, heaptype#1121 : heaptype, `exninst*#4` : exninst*, exn : exninst}: + `%|-%:%`(s, `REF.EXN_ADDR`_ref{exnaddr#1}(a), `REF`_reftype{`null?#1111`, heaptype#1121}(?(), `EXN`_heaptype)) + -- if (s.`EXNS`_store{`exninst*#4`}[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)) + rule host{s : store, hostaddr#1 : hostaddr, a : addr, `null?#1123` : null?, heaptype#1133 : heaptype}: + `%|-%:%`(s, `REF.HOST_ADDR`_ref{hostaddr#1}(a), `REF`_reftype{`null?#1123`, heaptype#1133}(?(), `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)) - -- Ref_ok: `%|-%:%`(s, (addrref : addrref <: ref), REF_reftype(?(), ANY_heaptype)) + rule extern{s : store, addrref#1 : addrref, addrref : addrref, `null?#1135` : null?, heaptype#1145 : heaptype, `null?#1147` : null?, heaptype#1157 : heaptype}: + `%|-%:%`(s, `REF.EXTERN`_ref{addrref#1}(addrref), `REF`_reftype{`null?#1135`, heaptype#1145}(?(), `EXTERN`_heaptype)) + -- Ref_ok: `%|-%:%`(s, (addrref : addrref <: ref), `REF`_reftype{`null?#1147`, heaptype#1157}(?(), `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}: + rule sub{s : store, ref : ref, rt : reftype, rt' : reftype, `deftype*#77` : deftype*, `subtype*#19` : subtype*, `tagtype*#20` : tagtype*, `globaltype*#21` : globaltype*, `memtype*#35` : memtype*, `tabletype*#28` : tabletype*, `deftype*#78` : deftype*, `datatype*#20` : datatype*, `elemtype*#20` : elemtype*, `localtype*#23` : localtype*, `resulttype*#31` : resulttype*, `resulttype?#28` : resulttype?, `funcidx*#57` : funcidx*}: `%|-%:%`(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) + -- Reftype_sub: `%|-%<:%`({`TYPES`{`deftype*#77`} [], `RECS`{`subtype*#19`} [], `TAGS`{`tagtype*#20`} [], `GLOBALS`{`globaltype*#21`} [], `MEMS`{`memtype*#35`} [], `TABLES`{`tabletype*#28`} [], `FUNCS`{`deftype*#78`} [], `DATAS`{`datatype*#20`} [], `ELEMS`{`elemtype*#20`} [], `LOCALS`{`localtype*#23`} [], `LABELS`{`resulttype*#31`} [], `RETURN`{`resulttype?#28`} ?(), `REFS`{`funcidx*#57`} []}, rt', rt) } ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec @@ -5883,994 +117442,994 @@ 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)) - -- if (s.TAGS_store[a] = taginst) + rule tag{s : store, tagaddr#3 : tagaddr, a : addr, tagtype#177 : tagtype, taginst : taginst, tagtype#179 : tagtype, `taginst*#4` : taginst*}: + `%|-%:%`(s, `TAG`_externaddr{tagaddr#3}(a), `TAG`_externtype{tagtype#177}(taginst.`TYPE`_taginst{tagtype#179})) + -- if (s.`TAGS`_store{`taginst*#4`}[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)) - -- if (s.GLOBALS_store[a] = globalinst) + rule global{s : store, globaladdr#3 : globaladdr, a : addr, globaltype#2085 : globaltype, globalinst : globalinst, globaltype#2087 : globaltype, `globalinst*#5` : globalinst*}: + `%|-%:%`(s, `GLOBAL`_externaddr{globaladdr#3}(a), `GLOBAL`_externtype{globaltype#2085}(globalinst.`TYPE`_globalinst{globaltype#2087})) + -- if (s.`GLOBALS`_store{`globalinst*#5`}[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)) - -- if (s.MEMS_store[a] = meminst) + rule mem{s : store, memaddr#3 : memaddr, a : addr, memtype#527 : memtype, meminst : meminst, memtype#529 : memtype, `meminst*#6` : meminst*}: + `%|-%:%`(s, `MEM`_externaddr{memaddr#3}(a), `MEM`_externtype{memtype#527}(meminst.`TYPE`_meminst{memtype#529})) + -- if (s.`MEMS`_store{`meminst*#6`}[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)) - -- if (s.TABLES_store[a] = tableinst) + rule table{s : store, tableaddr#3 : tableaddr, a : addr, tabletype#877 : tabletype, tableinst : tableinst, tabletype#879 : tabletype, `tableinst*#6` : tableinst*}: + `%|-%:%`(s, `TABLE`_externaddr{tableaddr#3}(a), `TABLE`_externtype{tabletype#877}(tableinst.`TYPE`_tableinst{tabletype#879})) + -- if (s.`TABLES`_store{`tableinst*#6`}[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))) - -- if (s.FUNCS_store[a] = funcinst) + rule func{s : store, funcaddr#5 : funcaddr, a : addr, typeuse#33 : typeuse, funcinst : funcinst, deftype#4 : deftype, `funcinst*#5` : funcinst*}: + `%|-%:%`(s, `FUNC`_externaddr{funcaddr#5}(a), `FUNC`_externtype{typeuse#33}((funcinst.`TYPE`_funcinst{deftype#4} : deftype <: typeuse))) + -- if (s.`FUNCS`_store{`funcinst*#5`}[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}: + rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype, `deftype*#79` : deftype*, `subtype*#20` : subtype*, `tagtype*#21` : tagtype*, `globaltype*#22` : globaltype*, `memtype*#36` : memtype*, `tabletype*#29` : tabletype*, `deftype*#80` : deftype*, `datatype*#21` : datatype*, `elemtype*#21` : elemtype*, `localtype*#24` : localtype*, `resulttype*#32` : resulttype*, `resulttype?#29` : resulttype?, `funcidx*#58` : funcidx*}: `%|-%:%`(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) + -- Externtype_sub: `%|-%<:%`({`TYPES`{`deftype*#79`} [], `RECS`{`subtype*#20`} [], `TAGS`{`tagtype*#21`} [], `GLOBALS`{`globaltype*#22`} [], `MEMS`{`memtype*#36`} [], `TABLES`{`tabletype*#29`} [], `FUNCS`{`deftype*#80`} [], `DATAS`{`datatype*#21`} [], `ELEMS`{`elemtype*#21`} [], `LOCALS`{`localtype*#24`} [], `LABELS`{`resulttype*#32`} [], `RETURN`{`resulttype?#29`} ?(), `REFS`{`funcidx*#58`} []}, 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) + def $inst_valtype{moduleinst : moduleinst, t : valtype, `dt*` : deftype*, `deftype*#81` : deftype*}(moduleinst, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- if (dt*{dt <- `dt*`} = moduleinst.`TYPES`_moduleinst{`deftype*#81`}) ;; ../../../../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) + def $inst_reftype{moduleinst : moduleinst, rt : reftype, `dt*` : deftype*, `deftype*#82` : deftype*}(moduleinst, rt) = $subst_all_reftype(rt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- if (dt*{dt <- `dt*`} = moduleinst.`TYPES`_moduleinst{`deftype*#82`}) ;; ../../../../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) + def $inst_globaltype{moduleinst : moduleinst, gt : globaltype, `dt*` : deftype*, `deftype*#83` : deftype*}(moduleinst, gt) = $subst_all_globaltype(gt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- if (dt*{dt <- `dt*`} = moduleinst.`TYPES`_moduleinst{`deftype*#83`}) ;; ../../../../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) + def $inst_memtype{moduleinst : moduleinst, mt : memtype, `dt*` : deftype*, `deftype*#84` : deftype*}(moduleinst, mt) = $subst_all_memtype(mt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- if (dt*{dt <- `dt*`} = moduleinst.`TYPES`_moduleinst{`deftype*#84`}) ;; ../../../../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) + def $inst_tabletype{moduleinst : moduleinst, tt : tabletype, `dt*` : deftype*, `deftype*#85` : deftype*}(moduleinst, tt) = $subst_all_tabletype(tt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- if (dt*{dt <- `dt*`} = moduleinst.`TYPES`_moduleinst{`deftype*#85`}) ;; ../../../../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]) + `%~>%`([`UNREACHABLE`_instr], [`TRAP`_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule nop: - `%~>%`([NOP_instr], []) + `%~>%`([`NOP`_instr], []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule drop{val : val}: - `%~>%`([(val : val <: instr) DROP_instr], []) + `%~>%`([(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) + rule `select-true`{val_1 : val, val_2 : val, numtype#59 : numtype, c : num_(`I32`_numtype), `valtype*?#7` : valtype*?, `t*?` : valtype*?, i#31733 : nat}: + `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) `CONST`_instr{numtype#59}(`I32`_numtype, c) `SELECT`_instr{`valtype*?#7`}(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_1 : val <: instr)]) + -- if (c!`%`_num_{i#31733}.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) + rule `select-false`{val_1 : val, val_2 : val, numtype#61 : numtype, c : num_(`I32`_numtype), `valtype*?#9` : valtype*?, `t*?` : valtype*?, i#31757 : nat}: + `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) `CONST`_instr{numtype#61}(`I32`_numtype, c) `SELECT`_instr{`valtype*?#9`}(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_2 : val <: instr)]) + -- if (c!`%`_num_{i#31757}.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) + rule `if-true`{numtype#63 : numtype, c : num_(`I32`_numtype), blocktype#21 : blocktype, `instr*#363` : instr*, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, blocktype#23 : blocktype, `instr*#366` : instr*, i#31807 : nat}: + `%~>%`([`CONST`_instr{numtype#63}(`I32`_numtype, c) `IF%%ELSE%`_instr{blocktype#21, `instr*#363`}(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [`BLOCK`_instr{blocktype#23, `instr*#366`}(bt, instr_1*{instr_1 <- `instr_1*`})]) + -- if (c!`%`_num_{i#31807}.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) + rule `if-false`{numtype#65 : numtype, c : num_(`I32`_numtype), blocktype#25 : blocktype, `instr*#368` : instr*, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, blocktype#27 : blocktype, `instr*#371` : instr*, i#31831 : nat}: + `%~>%`([`CONST`_instr{numtype#65}(`I32`_numtype, c) `IF%%ELSE%`_instr{blocktype#25, `instr*#368`}(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [`BLOCK`_instr{blocktype#27, `instr*#371`}(bt, instr_2*{instr_2 <- `instr_2*`})]) + -- if (c!`%`_num_{i#31831}.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*`}) + rule `label-vals`{n#1145 : n, `instr*#373` : instr*, n : n, `instr*` : instr*, `val*` : val*}: + `%~>%`([`LABEL_%{%}%`_instr{n#1145, `instr*#373`}(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) + rule `br-label-zero`{n#1147 : n, `instr*#376` : instr*, n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, labelidx#37 : labelidx, l : labelidx, `instr*` : instr*, i#31853 : nat}: + `%~>%`([`LABEL_%{%}%`_instr{n#1147, `instr*#376`}(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`BR`_instr{labelidx#37}(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) + -- if (l!`%`_labelidx{i#31853}.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) + rule `br-label-succ`{n#1149 : n, `instr*#379` : instr*, n : n, `instr'*` : instr*, `val*` : val*, labelidx#39 : labelidx, l : labelidx, `instr*` : instr*, labelidx#41 : labelidx, i#31901 : nat, i#31891 : nat, i#31915 : nat}: + `%~>%`([`LABEL_%{%}%`_instr{n#1149, `instr*#379`}(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr{labelidx#39}(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr{labelidx#41}(`%`_labelidx{i#31901}((((l!`%`_labelidx{i#31891}.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) + -- if (l!`%`_labelidx{i#31915}.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)]) + rule `br-handler`{n#1151 : n, `catch*#1` : catch*, `instr*#382` : instr*, n : n, `catch*` : catch*, `val*` : val*, labelidx#43 : labelidx, l : labelidx, `instr*` : instr*, labelidx#45 : labelidx}: + `%~>%`([`HANDLER_%{%}%`_instr{n#1151, `catch*#1`, `instr*#382`}(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr{labelidx#43}(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr{labelidx#45}(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) + rule `br_if-true`{numtype#67 : numtype, c : num_(`I32`_numtype), labelidx#47 : labelidx, l : labelidx, labelidx#49 : labelidx, i#31987 : nat}: + `%~>%`([`CONST`_instr{numtype#67}(`I32`_numtype, c) `BR_IF`_instr{labelidx#47}(l)], [`BR`_instr{labelidx#49}(l)]) + -- if (c!`%`_num_{i#31987}.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) + rule `br_if-false`{numtype#69 : numtype, c : num_(`I32`_numtype), labelidx#51 : labelidx, l : labelidx, i#32023 : nat}: + `%~>%`([`CONST`_instr{numtype#69}(`I32`_numtype, c) `BR_IF`_instr{labelidx#51}(l)], []) + -- if (c!`%`_num_{i#32023}.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*`}|) + rule `br_table-lt`{numtype#71 : numtype, i : num_(`I32`_numtype), `labelidx*#50` : labelidx*, labelidx#53 : labelidx, `l*` : labelidx*, l' : labelidx, labelidx#55 : labelidx, i#32131 : nat, i#32145 : nat}: + `%~>%`([`CONST`_instr{numtype#71}(`I32`_numtype, i) `BR_TABLE`_instr{`labelidx*#50`, labelidx#53}(l*{l <- `l*`}, l')], [`BR`_instr{labelidx#55}(l*{l <- `l*`}[i!`%`_num_{i#32131}.0])]) + -- if (i!`%`_num_{i#32145}.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*`}|) + rule `br_table-ge`{numtype#73 : numtype, i : num_(`I32`_numtype), `labelidx*#52` : labelidx*, labelidx#57 : labelidx, `l*` : labelidx*, l' : labelidx, labelidx#59 : labelidx, i#32257 : nat}: + `%~>%`([`CONST`_instr{numtype#73}(`I32`_numtype, i) `BR_TABLE`_instr{`labelidx*#52`, labelidx#57}(l*{l <- `l*`}, l')], [`BR`_instr{labelidx#59}(l')]) + -- if (i!`%`_num_{i#32257}.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)) + rule `br_on_null-null`{val : val, labelidx#61 : labelidx, l : labelidx, labelidx#63 : labelidx, heaptype#1207 : heaptype, ht : heaptype}: + `%~>%`([(val : val <: instr) `BR_ON_NULL`_instr{labelidx#61}(l)], [`BR`_instr{labelidx#63}(l)]) + -- if (val = `REF.NULL`_val{heaptype#1207}(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)]) + rule `br_on_null-addr`{val : val, labelidx#65 : labelidx, l : labelidx}: + `%~>%`([(val : val <: instr) `BR_ON_NULL`_instr{labelidx#65}(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)) + rule `br_on_non_null-null`{val : val, labelidx#67 : labelidx, l : labelidx, heaptype#1209 : heaptype, ht : heaptype}: + `%~>%`([(val : val <: instr) `BR_ON_NON_NULL`_instr{labelidx#67}(l)], []) + -- if (val = `REF.NULL`_val{heaptype#1209}(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)]) + rule `br_on_non_null-addr`{val : val, labelidx#69 : labelidx, l : labelidx, labelidx#71 : labelidx}: + `%~>%`([(val : val <: instr) `BR_ON_NON_NULL`_instr{labelidx#69}(l)], [(val : val <: instr) `BR`_instr{labelidx#71}(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)]) + rule call_indirect{tableidx#49 : tableidx, typeuse#57 : typeuse, x : idx, yy : typeuse, tableidx#51 : tableidx, reftype#3451 : reftype, `null?#1303` : null?, heaptype#1321 : heaptype, typeuse#59 : typeuse}: + `%~>%`([`CALL_INDIRECT`_instr{tableidx#49, typeuse#57}(x, yy)], [`TABLE.GET`_instr{tableidx#51}(x) `REF.CAST`_instr{reftype#3451}(`REF`_reftype{`null?#1303`, heaptype#1321}(?(`NULL`_null), (yy : typeuse <: heaptype))) `CALL_REF`_instr{typeuse#59}(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)]) + rule return_call_indirect{tableidx#53 : tableidx, typeuse#61 : typeuse, x : idx, yy : typeuse, tableidx#55 : tableidx, reftype#3453 : reftype, `null?#1315` : null?, heaptype#1333 : heaptype, typeuse#63 : typeuse}: + `%~>%`([`RETURN_CALL_INDIRECT`_instr{tableidx#53, typeuse#61}(x, yy)], [`TABLE.GET`_instr{tableidx#55}(x) `REF.CAST`_instr{reftype#3453}(`REF`_reftype{`null?#1315`, heaptype#1333}(?(`NULL`_null), (yy : typeuse <: heaptype))) `RETURN_CALL_REF`_instr{typeuse#63}(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*`}) + rule `frame-vals`{n#1177 : n, frame#947 : frame, `instr*#542` : instr*, n : n, f : frame, `val*` : val*}: + `%~>%`([`FRAME_%{%}%`_instr{n#1177, frame#947, `instr*#542`}(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*`}) + rule `return-frame`{n#1179 : n, frame#949 : frame, `instr*#544` : instr*, n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: + `%~>%`([`FRAME_%{%}%`_instr{n#1179, frame#949, `instr*#544`}(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]) + rule `return-label`{n#1181 : n, `instr*#546` : instr*, n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr{n#1181, `instr*#546`}(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]) + rule `return-handler`{n#1183 : n, `catch*#5` : catch*, `instr*#549` : instr*, n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: + `%~>%`([`HANDLER_%{%}%`_instr{n#1183, `catch*#5`, `instr*#549`}(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*`}) + rule `handler-vals`{n#1213 : n, `catch*#23` : catch*, `instr*#733` : instr*, n : n, `catch*` : catch*, `val*` : val*}: + `%~>%`([`HANDLER_%{%}%`_instr{n#1213, `catch*#23`, `instr*#733`}(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]) + `%~>%`((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]) + rule `trap-label`{n#1215 : n, `instr*#735` : instr*, n : n, `instr'*` : instr*}: + `%~>%`([`LABEL_%{%}%`_instr{n#1215, `instr*#735`}(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]) + rule `trap-frame`{n#1217 : n, frame#1097 : frame, `instr*#738` : instr*, n : n, f : frame}: + `%~>%`([`FRAME_%{%}%`_instr{n#1217, frame#1097, `instr*#738`}(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)]) + rule local.tee{val : val, localidx#17 : localidx, x : idx, localidx#19 : localidx}: + `%~>%`([(val : val <: instr) `LOCAL.TEE`_instr{localidx#17}(x)], [(val : val <: instr) (val : val <: instr) `LOCAL.SET`_instr{localidx#19}(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))]) + rule ref.i31{numtype#351 : numtype, i : num_(`I32`_numtype), u31#3 : u31}: + `%~>%`([`CONST`_instr{numtype#351}(`I32`_numtype, i) `REF.I31`_instr], [`REF.I31_NUM`_instr{u31#3}($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)) + rule `ref.is_null-true`{ref : ref, numtype#353 : numtype, i#40032 : nat, heaptype#1347 : heaptype, ht : heaptype}: + `%~>%`([(ref : ref <: instr) `REF.IS_NULL`_instr], [`CONST`_instr{numtype#353}(`I32`_numtype, `%`_num_{i#40032}(1))]) + -- if (ref = `REF.NULL`_ref{heaptype#1347}(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))]) + rule `ref.is_null-false`{ref : ref, numtype#355 : numtype, i#40054 : nat}: + `%~>%`([(ref : ref <: instr) `REF.IS_NULL`_instr], [`CONST`_instr{numtype#355}(`I32`_numtype, `%`_num_{i#40054}(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)) + rule `ref.as_non_null-null`{ref : ref, heaptype#1349 : heaptype, ht : heaptype}: + `%~>%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr], [`TRAP`_instr]) + -- if (ref = `REF.NULL`_ref{heaptype#1349}(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)]) + `%~>%`([(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))) + rule `ref.eq-null`{ref_1 : ref, ref_2 : ref, numtype#357 : numtype, i#40076 : nat, heaptype#1351 : heaptype, ht_1 : heaptype, heaptype#1353 : heaptype, ht_2 : heaptype}: + `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [`CONST`_instr{numtype#357}(`I32`_numtype, `%`_num_{i#40076}(1))]) + -- if ((ref_1 = `REF.NULL`_ref{heaptype#1351}(ht_1)) /\ (ref_2 = `REF.NULL`_ref{heaptype#1353}(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))]) + rule `ref.eq-true`{ref_1 : ref, ref_2 : ref, numtype#359 : numtype, i#40098 : nat}: + `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [`CONST`_instr{numtype#359}(`I32`_numtype, `%`_num_{i#40098}(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))]) + rule `ref.eq-false`{ref_1 : ref, ref_2 : ref, numtype#361 : numtype, i#40120 : nat}: + `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [`CONST`_instr{numtype#361}(`I32`_numtype, `%`_num_{i#40120}(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]) + rule `i31.get-null`{heaptype#1427 : heaptype, ht : heaptype, sx#404 : sx, sx : sx}: + `%~>%`([`REF.NULL`_instr{heaptype#1427}(ht) `I31.GET`_instr{sx#404}(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))]) + rule `i31.get-num`{u31#5 : u31, i : u31, sx#406 : sx, sx : sx, numtype#367 : numtype}: + `%~>%`([`REF.I31_NUM`_instr{u31#5}(i) `I31.GET`_instr{sx#406}(sx)], [`CONST`_instr{numtype#367}(`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))]) + rule array.new{val : val, numtype#369 : numtype, i#40512 : nat, n : n, typeidx#1571 : typeidx, x : idx, typeidx#1573 : typeidx, u32#25 : u32, i#40564 : nat}: + `%~>%`([(val : val <: instr) `CONST`_instr{numtype#369}(`I32`_numtype, `%`_num_{i#40512}(n)) `ARRAY.NEW`_instr{typeidx#1571}(x)], (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr{typeidx#1573, u32#25}(x, `%`_u32{i#40564}(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)]) + rule `extern.convert_any-null`{heaptype#1449 : heaptype, ht : heaptype, heaptype#1451 : heaptype}: + `%~>%`([`REF.NULL`_instr{heaptype#1449}(ht) `EXTERN.CONVERT_ANY`_instr], [`REF.NULL`_instr{heaptype#1451}(`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)]) + rule `extern.convert_any-addr`{addrref : addrref, addrref#3 : addrref}: + `%~>%`([(addrref : addrref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.EXTERN`_instr{addrref#3}(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)]) + rule `any.convert_extern-null`{heaptype#1453 : heaptype, ht : heaptype, heaptype#1455 : heaptype}: + `%~>%`([`REF.NULL`_instr{heaptype#1453}(ht) `ANY.CONVERT_EXTERN`_instr], [`REF.NULL`_instr{heaptype#1455}(`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)]) + rule `any.convert_extern-addr`{addrref#5 : addrref, addrref : addrref}: + `%~>%`([`REF.EXTERN`_instr{addrref#5}(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)]) + rule `unop-val`{numtype#563 : numtype, nt : numtype, c_1 : num_(nt), numtype#565 : numtype, unop : unop_(nt), numtype#567 : numtype, c : num_(nt)}: + `%~>%`([`CONST`_instr{numtype#563}(nt, c_1) `UNOP`_instr{numtype#565}(nt, unop)], [`CONST`_instr{numtype#567}(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]) + rule `unop-trap`{numtype#569 : numtype, nt : numtype, c_1 : num_(nt), numtype#571 : numtype, unop : unop_(nt)}: + `%~>%`([`CONST`_instr{numtype#569}(nt, c_1) `UNOP`_instr{numtype#571}(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)]) + rule `binop-val`{numtype#573 : numtype, nt : numtype, c_1 : num_(nt), numtype#575 : numtype, c_2 : num_(nt), numtype#577 : numtype, binop : binop_(nt), numtype#579 : numtype, c : num_(nt)}: + `%~>%`([`CONST`_instr{numtype#573}(nt, c_1) `CONST`_instr{numtype#575}(nt, c_2) `BINOP`_instr{numtype#577}(nt, binop)], [`CONST`_instr{numtype#579}(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]) + rule `binop-trap`{numtype#581 : numtype, nt : numtype, c_1 : num_(nt), numtype#583 : numtype, c_2 : num_(nt), numtype#585 : numtype, binop : binop_(nt)}: + `%~>%`([`CONST`_instr{numtype#581}(nt, c_1) `CONST`_instr{numtype#583}(nt, c_2) `BINOP`_instr{numtype#585}(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)]) + rule testop{numtype#587 : numtype, nt : numtype, c_1 : num_(nt), numtype#589 : numtype, testop : testop_(nt), numtype#591 : numtype, c : num_(`I32`_numtype)}: + `%~>%`([`CONST`_instr{numtype#587}(nt, c_1) `TESTOP`_instr{numtype#589}(nt, testop)], [`CONST`_instr{numtype#591}(`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)]) + rule relop{numtype#593 : numtype, nt : numtype, c_1 : num_(nt), numtype#595 : numtype, c_2 : num_(nt), numtype#597 : numtype, relop : relop_(nt), numtype#599 : numtype, c : num_(`I32`_numtype)}: + `%~>%`([`CONST`_instr{numtype#593}(nt, c_1) `CONST`_instr{numtype#595}(nt, c_2) `RELOP`_instr{numtype#597}(nt, relop)], [`CONST`_instr{numtype#599}(`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)]) + rule `cvtop-val`{numtype#601 : numtype, nt_1 : numtype, c_1 : num_(nt_1), numtype_1#5 : numtype, numtype_2#5 : numtype, nt_2 : numtype, cvtop : cvtop__(nt_1, nt_2), numtype#603 : numtype, c : num_(nt_2)}: + `%~>%`([`CONST`_instr{numtype#601}(nt_1, c_1) `CVTOP`_instr{numtype_1#5, numtype_2#5}(nt_2, nt_1, cvtop)], [`CONST`_instr{numtype#603}(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]) + rule `cvtop-trap`{numtype#605 : numtype, nt_1 : numtype, c_1 : num_(nt_1), numtype_1#7 : numtype, numtype_2#7 : numtype, nt_2 : numtype, cvtop : cvtop__(nt_1, nt_2)}: + `%~>%`([`CONST`_instr{numtype#605}(nt_1, c_1) `CVTOP`_instr{numtype_1#7, numtype_2#7}(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)) + rule vvunop{vectype#104 : vectype, c_1 : vec_(`V128`_Vnn), vectype#106 : vectype, vvunop#5 : vvunop, vvunop : vvunop, vectype#108 : vectype, c : vec_(`V128`_Vnn)}: + `%~>%`([`VCONST`_instr{vectype#104}(`V128`_vectype, c_1) `VVUNOP`_instr{vectype#106, vvunop#5}(`V128`_vectype, vvunop)], [`VCONST`_instr{vectype#108}(`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)) + rule vvbinop{vectype#110 : vectype, c_1 : vec_(`V128`_Vnn), vectype#112 : vectype, c_2 : vec_(`V128`_Vnn), vectype#114 : vectype, vvbinop#5 : vvbinop, vvbinop : vvbinop, vectype#116 : vectype, c : vec_(`V128`_Vnn)}: + `%~>%`([`VCONST`_instr{vectype#110}(`V128`_vectype, c_1) `VCONST`_instr{vectype#112}(`V128`_vectype, c_2) `VVBINOP`_instr{vectype#114, vvbinop#5}(`V128`_vectype, vvbinop)], [`VCONST`_instr{vectype#116}(`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)) + rule vvternop{vectype#118 : vectype, c_1 : vec_(`V128`_Vnn), vectype#120 : vectype, c_2 : vec_(`V128`_Vnn), vectype#122 : vectype, c_3 : vec_(`V128`_Vnn), vectype#124 : vectype, vvternop#5 : vvternop, vvternop : vvternop, vectype#126 : vectype, c : vec_(`V128`_Vnn)}: + `%~>%`([`VCONST`_instr{vectype#118}(`V128`_vectype, c_1) `VCONST`_instr{vectype#120}(`V128`_vectype, c_2) `VCONST`_instr{vectype#122}(`V128`_vectype, c_3) `VVTERNOP`_instr{vectype#124, vvternop#5}(`V128`_vectype, vvternop)], [`VCONST`_instr{vectype#126}(`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)) + rule vvtestop{vectype#128 : vectype, c_1 : vec_(`V128`_Vnn), vectype#130 : vectype, vvtestop#5 : vvtestop, numtype#607 : numtype, c : num_(`I32`_numtype)}: + `%~>%`([`VCONST`_instr{vectype#128}(`V128`_vectype, c_1) `VVTESTOP`_instr{vectype#130, vvtestop#5}(`V128`_vectype, `ANY_TRUE`_vvtestop)], [`CONST`_instr{numtype#607}(`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)]) + rule `vunop-val`{vectype#132 : vectype, c_1 : vec_(`V128`_Vnn), shape#681 : shape, sh : shape, vunop : vunop_(sh), vectype#134 : vectype, c : vec_(`V128`_Vnn)}: + `%~>%`([`VCONST`_instr{vectype#132}(`V128`_vectype, c_1) `VUNOP`_instr{shape#681}(sh, vunop)], [`VCONST`_instr{vectype#134}(`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]) + rule `vunop-trap`{vectype#136 : vectype, c_1 : vec_(`V128`_Vnn), shape#683 : shape, sh : shape, vunop : vunop_(sh)}: + `%~>%`([`VCONST`_instr{vectype#136}(`V128`_vectype, c_1) `VUNOP`_instr{shape#683}(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)]) + rule `vbinop-val`{vectype#138 : vectype, c_1 : vec_(`V128`_Vnn), vectype#140 : vectype, c_2 : vec_(`V128`_Vnn), shape#685 : shape, sh : shape, vbinop : vbinop_(sh), vectype#142 : vectype, c : vec_(`V128`_Vnn)}: + `%~>%`([`VCONST`_instr{vectype#138}(`V128`_vectype, c_1) `VCONST`_instr{vectype#140}(`V128`_vectype, c_2) `VBINOP`_instr{shape#685}(sh, vbinop)], [`VCONST`_instr{vectype#142}(`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]) + rule `vbinop-trap`{vectype#144 : vectype, c_1 : vec_(`V128`_Vnn), vectype#146 : vectype, c_2 : vec_(`V128`_Vnn), shape#687 : shape, sh : shape, vbinop : vbinop_(sh)}: + `%~>%`([`VCONST`_instr{vectype#144}(`V128`_vectype, c_1) `VCONST`_instr{vectype#146}(`V128`_vectype, c_2) `VBINOP`_instr{shape#687}(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)]) + rule `vternop-val`{vectype#148 : vectype, c_1 : vec_(`V128`_Vnn), vectype#150 : vectype, c_2 : vec_(`V128`_Vnn), vectype#152 : vectype, c_3 : vec_(`V128`_Vnn), shape#689 : shape, sh : shape, vternop : vternop_(sh), vectype#154 : vectype, c : vec_(`V128`_Vnn)}: + `%~>%`([`VCONST`_instr{vectype#148}(`V128`_vectype, c_1) `VCONST`_instr{vectype#150}(`V128`_vectype, c_2) `VCONST`_instr{vectype#152}(`V128`_vectype, c_3) `VTERNOP`_instr{shape#689}(sh, vternop)], [`VCONST`_instr{vectype#154}(`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]) + rule `vternop-trap`{vectype#156 : vectype, c_1 : vec_(`V128`_Vnn), vectype#158 : vectype, c_2 : vec_(`V128`_Vnn), vectype#160 : vectype, c_3 : vec_(`V128`_Vnn), shape#691 : shape, sh : shape, vternop : vternop_(sh)}: + `%~>%`([`VCONST`_instr{vectype#156}(`V128`_vectype, c_1) `VCONST`_instr{vectype#158}(`V128`_vectype, c_2) `VCONST`_instr{vectype#160}(`V128`_vectype, c_3) `VTERNOP`_instr{shape#691}(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*`})) + rule vtestop{vectype#162 : vectype, c_1 : vec_(`V128`_Vnn), shape#693 : shape, lanetype#7525 : lanetype, dim#7525 : dim, i#45296 : nat, Jnn : Jnn, i#45303 : nat, M : M, numtype#609 : numtype, c : num_(`I32`_numtype), lanetype#7537 : lanetype, dim#7537 : dim, i#45322 : nat, i#45329 : nat, i#45438 : nat, `i#45428*` : nat*, `i*` : lane_($lanetype(`%X%`_shape{lanetype#7537, dim#7537, i#45322}((Jnn : Jnn <: lanetype), `%`_dim{i#45329}(M))))*}: + `%~>%`([`VCONST`_instr{vectype#162}(`V128`_vectype, c_1) `VTESTOP`_instr{shape#693}(`%X%`_shape{lanetype#7525, dim#7525, i#45296}((Jnn : Jnn <: lanetype), `%`_dim{i#45303}(M)), `ALL_TRUE`_vtestop_)], [`CONST`_instr{numtype#609}(`I32`_numtype, c)]) + -- if (i*{i <- `i*`} = $lanes_(`%X%`_shape{lanetype#7537, dim#7537, i#45322}((Jnn : Jnn <: lanetype), `%`_dim{i#45329}(M)), c_1)) + -- if (c!`%`_num_{i#45438}.0 = $prod($inez_($jsizenn(Jnn), i)!`%`_u32{i#45428}.0*{i <- `i*`, i#45428 <- `i#45428*`})) ;; ../../../../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)]) + rule vrelop{vectype#164 : vectype, c_1 : vec_(`V128`_Vnn), vectype#166 : vectype, c_2 : vec_(`V128`_Vnn), shape#695 : shape, sh : shape, vrelop : vrelop_(sh), vectype#168 : vectype, c : vec_(`V128`_Vnn)}: + `%~>%`([`VCONST`_instr{vectype#164}(`V128`_vectype, c_1) `VCONST`_instr{vectype#166}(`V128`_vectype, c_2) `VRELOP`_instr{shape#695}(sh, vrelop)], [`VCONST`_instr{vectype#168}(`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)]) + rule vshiftop{vectype#170 : vectype, c_1 : vec_(`V128`_Vnn), numtype#611 : numtype, i : num_(`I32`_numtype), ishape#9 : ishape, sh : ishape, vshiftop : vshiftop_(sh), vectype#172 : vectype, c : vec_(`V128`_Vnn)}: + `%~>%`([`VCONST`_instr{vectype#170}(`V128`_vectype, c_1) `CONST`_instr{numtype#611}(`I32`_numtype, i) `VSHIFTOP`_instr{ishape#9}(sh, vshiftop)], [`VCONST`_instr{vectype#172}(`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)]) + rule vbitmask{vectype#174 : vectype, c_1 : vec_(`V128`_Vnn), ishape#11 : ishape, sh : ishape, numtype#613 : numtype, c : num_(`I32`_numtype)}: + `%~>%`([`VCONST`_instr{vectype#174}(`V128`_vectype, c_1) `VBITMASK`_instr{ishape#11}(sh)], [`CONST`_instr{numtype#613}(`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)]) + rule vswizzlop{vectype#176 : vectype, c_1 : vec_(`V128`_Vnn), vectype#178 : vectype, c_2 : vec_(`V128`_Vnn), bshape#9 : bshape, sh : bshape, swizzlop : vswizzlop_(sh), vectype#180 : vectype, c : vec_(`V128`_Vnn)}: + `%~>%`([`VCONST`_instr{vectype#176}(`V128`_vectype, c_1) `VCONST`_instr{vectype#178}(`V128`_vectype, c_2) `VSWIZZLOP`_instr{bshape#9}(sh, swizzlop)], [`VCONST`_instr{vectype#180}(`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)]) + rule vshuffle{vectype#182 : vectype, c_1 : vec_(`V128`_Vnn), vectype#184 : vectype, c_2 : vec_(`V128`_Vnn), bshape#11 : bshape, `laneidx*#5` : laneidx*, i#45740 : nat, shape#733 : shape, sh : bshape, `i*` : laneidx*, vectype#186 : vectype, c : vec_(`V128`_Vnn)}: + `%~>%`([`VCONST`_instr{vectype#182}(`V128`_vectype, c_1) `VCONST`_instr{vectype#184}(`V128`_vectype, c_2) `VSHUFFLE`_instr{bshape#11, `laneidx*#5`, i#45740, shape#733}(sh, i*{i <- `i*`})], [`VCONST`_instr{vectype#186}(`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{})) + rule vsplat{numtype#615 : numtype, Lnn : Lnn, c_1 : num_($lunpack(Lnn)), shape#746 : shape, lanetype#7575 : lanetype, dim#7575 : dim, i#45836 : nat, i#45843 : nat, M : M, vectype#188 : vectype, c : vec_(`V128`_Vnn), lanetype#7587 : lanetype, dim#7587 : dim, i#45862 : nat, i#45869 : nat}: + `%~>%`([`CONST`_instr{numtype#615}($lunpack(Lnn), c_1) `VSPLAT`_instr{shape#746}(`%X%`_shape{lanetype#7575, dim#7575, i#45836}(Lnn, `%`_dim{i#45843}(M)))], [`VCONST`_instr{vectype#188}(`V128`_vectype, c)]) + -- if (c = $inv_lanes_(`%X%`_shape{lanetype#7587, dim#7587, i#45862}(Lnn, `%`_dim{i#45869}(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]) + rule `vextract_lane-num`{vectype#190 : vectype, c_1 : vec_(`V128`_Vnn), shape#748 : shape, `sx?#27` : sx?, laneidx#25 : laneidx, lanetype#7610 : lanetype, dim#7610 : dim, i#45931 : nat, nt : numtype, i#45938 : nat, M : M, i : laneidx, numtype#617 : numtype, c_2 : num_(nt), lanetype#7622 : lanetype, dim#7622 : dim, i#45957 : nat, i#45964 : nat, i#45984 : nat}: + `%~>%`([`VCONST`_instr{vectype#190}(`V128`_vectype, c_1) `VEXTRACT_LANE`_instr{shape#748, `sx?#27`, laneidx#25}(`%X%`_shape{lanetype#7610, dim#7610, i#45931}((nt : numtype <: lanetype), `%`_dim{i#45938}(M)), ?(), i)], [`CONST`_instr{numtype#617}(nt, c_2)]) + -- if (c_2 = $lanes_(`%X%`_shape{lanetype#7622, dim#7622, i#45957}((nt : numtype <: lanetype), `%`_dim{i#45964}(M)), c_1)[i!`%`_laneidx{i#45984}.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])) + rule `vextract_lane-pack`{vectype#192 : vectype, c_1 : vec_(`V128`_Vnn), shape#750 : shape, `sx?#29` : sx?, laneidx#27 : laneidx, lanetype#7639 : lanetype, dim#7639 : dim, i#46018 : nat, pt : packtype, i#46025 : nat, M : M, sx : sx, i : laneidx, numtype#619 : numtype, c_2 : num_(`I32`_numtype), lanetype#7651 : lanetype, dim#7651 : dim, i#46122 : nat, i#46129 : nat, i#46149 : nat}: + `%~>%`([`VCONST`_instr{vectype#192}(`V128`_vectype, c_1) `VEXTRACT_LANE`_instr{shape#750, `sx?#29`, laneidx#27}(`%X%`_shape{lanetype#7639, dim#7639, i#46018}((pt : packtype <: lanetype), `%`_dim{i#46025}(M)), ?(sx), i)], [`CONST`_instr{numtype#619}(`I32`_numtype, c_2)]) + -- if (c_2 = $extend__($psize(pt), 32, sx, $lanes_(`%X%`_shape{lanetype#7651, dim#7651, i#46122}((pt : packtype <: lanetype), `%`_dim{i#46129}(M)), c_1)[i!`%`_laneidx{i#46149}.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)])) + rule vreplace_lane{vectype#194 : vectype, c_1 : vec_(`V128`_Vnn), numtype#621 : numtype, Lnn : Lnn, c_2 : num_($lunpack(Lnn)), shape#752 : shape, laneidx#29 : laneidx, lanetype#7664 : lanetype, dim#7664 : dim, i#46185 : nat, i#46192 : nat, M : M, i : laneidx, vectype#196 : vectype, c : vec_(`V128`_Vnn), lanetype#7676 : lanetype, dim#7676 : dim, i#46225 : nat, i#46232 : nat, lanetype#7730 : lanetype, dim#7730 : dim, i#46335 : nat, i#46342 : nat, i#46368 : nat}: + `%~>%`([`VCONST`_instr{vectype#194}(`V128`_vectype, c_1) `CONST`_instr{numtype#621}($lunpack(Lnn), c_2) `VREPLACE_LANE`_instr{shape#752, laneidx#29}(`%X%`_shape{lanetype#7664, dim#7664, i#46185}(Lnn, `%`_dim{i#46192}(M)), i)], [`VCONST`_instr{vectype#196}(`V128`_vectype, c)]) + -- if (c = $inv_lanes_(`%X%`_shape{lanetype#7676, dim#7676, i#46225}(Lnn, `%`_dim{i#46232}(M)), $lanes_(`%X%`_shape{lanetype#7730, dim#7730, i#46335}(Lnn, `%`_dim{i#46342}(M)), c_1)[[i!`%`_laneidx{i#46368}.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)]) + rule vextunop{vectype#198 : vectype, c_1 : vec_(`V128`_Vnn), ishape_1#17 : ishape, ishape_2#17 : ishape, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__(sh_1, sh_2), vectype#200 : vectype, c : vec_(`V128`_Vnn)}: + `%~>%`([`VCONST`_instr{vectype#198}(`V128`_vectype, c_1) `VEXTUNOP`_instr{ishape_1#17, ishape_2#17}(sh_2, sh_1, vextunop)], [`VCONST`_instr{vectype#200}(`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)]) + rule vextbinop{vectype#202 : vectype, c_1 : vec_(`V128`_Vnn), vectype#204 : vectype, c_2 : vec_(`V128`_Vnn), ishape_1#19 : ishape, ishape_2#19 : ishape, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__(sh_1, sh_2), vectype#206 : vectype, c : vec_(`V128`_Vnn)}: + `%~>%`([`VCONST`_instr{vectype#202}(`V128`_vectype, c_1) `VCONST`_instr{vectype#204}(`V128`_vectype, c_2) `VEXTBINOP`_instr{ishape_1#19, ishape_2#19}(sh_2, sh_1, vextbinop)], [`VCONST`_instr{vectype#206}(`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)]) + rule vextternop{vectype#208 : vectype, c_1 : vec_(`V128`_Vnn), vectype#210 : vectype, c_2 : vec_(`V128`_Vnn), vectype#212 : vectype, c_3 : vec_(`V128`_Vnn), ishape_1#21 : ishape, ishape_2#21 : ishape, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__(sh_1, sh_2), vectype#214 : vectype, c : vec_(`V128`_Vnn)}: + `%~>%`([`VCONST`_instr{vectype#208}(`V128`_vectype, c_1) `VCONST`_instr{vectype#210}(`V128`_vectype, c_2) `VCONST`_instr{vectype#212}(`V128`_vectype, c_3) `VEXTTERNOP`_instr{ishape_1#21, ishape_2#21}(sh_2, sh_1, vextternop)], [`VCONST`_instr{vectype#214}(`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)) + rule vnarrow{vectype#216 : vectype, c_1 : vec_(`V128`_Vnn), vectype#218 : vectype, c_2 : vec_(`V128`_Vnn), ishape_1#23 : ishape, ishape_2#23 : ishape, sx#408 : sx, shape#826 : shape, Jnn#216 : Jnn, shape#827 : shape, Jnn#217 : Jnn, shape#828 : shape, Jnn#218 : Jnn, sh_2 : ishape, sh_1 : ishape, sx : sx, vectype#220 : vectype, c : vec_(`V128`_Vnn), shape#841 : shape, Jnn#223 : Jnn, shape#843 : shape, Jnn#224 : Jnn}: + `%~>%`([`VCONST`_instr{vectype#216}(`V128`_vectype, c_1) `VCONST`_instr{vectype#218}(`V128`_vectype, c_2) `VNARROW`_instr{ishape_1#23, ishape_2#23, sx#408, shape#826, Jnn#216, shape#827, Jnn#217, shape#828, Jnn#218}(sh_2, sh_1, sx)], [`VCONST`_instr{vectype#220}(`V128`_vectype, c)]) + -- if (c = $vnarrowop__(sh_1!`%`_ishape{shape#841, Jnn#223}.0, sh_2!`%`_ishape{shape#843, Jnn#224}.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)]) + rule vcvtop{vectype#222 : vectype, c_1 : vec_(`V128`_Vnn), shape_1#5 : shape, shape_2#5 : shape, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__(sh_1, sh_2), vectype#224 : vectype, c : vec_(`V128`_Vnn)}: + `%~>%`([`VCONST`_instr{vectype#222}(`V128`_vectype, c_1) `VCVTOP`_instr{shape_1#5, shape_2#5}(sh_2, sh_1, vcvtop)], [`VCONST`_instr{vectype#224}(`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*`}))) + def $blocktype_{z : state, typeidx#1551 : typeidx, x : idx, resulttype#2934 : resulttype, `localidx*#1757` : localidx*, `X*#12241` : valtype*, `t_1*` : valtype*, `X*#12292` : valtype*, `t_2*` : valtype*, resulttype#2914 : resulttype, `X*#12215` : valtype*, `X*#12228` : valtype*}(z, `_IDX`_blocktype{typeidx#1551}(x)) = `%->_%%`_instrtype{resulttype#2934, `localidx*#1757`}(`%`_resulttype{`X*#12241`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#12292`}(t_2*{t_2 <- `t_2*`})) + -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype{resulttype#2914}(`%`_resulttype{`X*#12215`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#12228`}(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?`}))) + def $blocktype_{z : state, `valtype?#5` : valtype?, `t?` : valtype?, resulttype#2954 : resulttype, `localidx*#1769` : localidx*, `X*#12313` : valtype*, `X*#12362` : valtype*}(z, `_RESULT`_blocktype{`valtype?#5`}(t?{t <- `t?`})) = `%->_%%`_instrtype{resulttype#2954, `localidx*#1769`}(`%`_resulttype{`X*#12313`}([]), [], `%`_resulttype{`X*#12362`}(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*`}))) + rule block{state#311 : state, `instr*#337` : instr*, z : state, m : m, `val*` : val*, blocktype#15 : blocktype, `instr*#339` : instr*, bt : blocktype, `instr*` : instr*, n#1141 : n, `instr*#341` : instr*, n : n, resulttype#2974 : resulttype, `localidx*#1781` : localidx*, `X*#12373` : valtype*, `t_1*` : valtype*, `X*#12424` : valtype*, `t_2*` : valtype*}: + `%~>%`(`%;%`_config{state#311, `instr*#337`}(z, (val : val <: instr)^m{val <- `val*`} ++ [`BLOCK`_instr{blocktype#15, `instr*#339`}(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr{n#1141, `instr*#341`}(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- if ($blocktype_(z, bt) = `%->_%%`_instrtype{resulttype#2974, `localidx*#1781`}(`%`_resulttype{`X*#12373`}(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#12424`}(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*`}))) + rule loop{state#323 : state, `instr*#354` : instr*, z : state, m : m, `val*` : val*, blocktype#17 : blocktype, `instr*#356` : instr*, bt : blocktype, `instr*` : instr*, n#1143 : n, `instr*#358` : instr*, blocktype#19 : blocktype, `instr*#361` : instr*, resulttype#2994 : resulttype, `localidx*#1793` : localidx*, `X*#12435` : valtype*, `t_1*` : valtype*, `X*#12486` : valtype*, n : n, `t_2*` : valtype*}: + `%~>%`(`%;%`_config{state#323, `instr*#354`}(z, (val : val <: instr)^m{val <- `val*`} ++ [`LOOP`_instr{blocktype#17, `instr*#356`}(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr{n#1143, `instr*#358`}(m, [`LOOP`_instr{blocktype#19, `instr*#361`}(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) + -- if ($blocktype_(z, bt) = `%->_%%`_instrtype{resulttype#2994, `localidx*#1793`}(`%`_resulttype{`X*#12435`}(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#12486`}(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)]) + rule `br_on_cast-succeed`{state#335 : state, `instr*#394` : instr*, store#815 : store, frame#819 : frame, s : store, f : frame, ref : ref, labelidx#73 : labelidx, reftype#3439 : reftype, l : labelidx, rt_1 : reftype, rt_2 : reftype, labelidx#75 : labelidx, rt : reftype, `deftype*#86` : deftype*, `subtype*#21` : subtype*, `tagtype*#22` : tagtype*, `globaltype*#23` : globaltype*, `memtype*#37` : memtype*, `tabletype*#30` : tabletype*, `deftype*#87` : deftype*, `datatype*#22` : datatype*, `elemtype*#22` : elemtype*, `localtype*#25` : localtype*, `resulttype*#33` : resulttype*, `resulttype?#30` : resulttype?, `funcidx*#59` : funcidx*, moduleinst#19 : moduleinst}: + `%~>%`(`%;%`_config{state#335, `instr*#394`}(`%;%`_state{store#815, frame#819}(s, f), [(ref : ref <: instr) `BR_ON_CAST`_instr{labelidx#73, reftype#3439}(l, rt_1, rt_2)]), [(ref : ref <: instr) `BR`_instr{labelidx#75}(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)) + -- Reftype_sub: `%|-%<:%`({`TYPES`{`deftype*#86`} [], `RECS`{`subtype*#21`} [], `TAGS`{`tagtype*#22`} [], `GLOBALS`{`globaltype*#23`} [], `MEMS`{`memtype*#37`} [], `TABLES`{`tabletype*#30`} [], `FUNCS`{`deftype*#87`} [], `DATAS`{`datatype*#22`} [], `ELEMS`{`elemtype*#22`} [], `LOCALS`{`localtype*#25`} [], `LABELS`{`resulttype*#33`} [], `RETURN`{`resulttype?#30`} ?(), `REFS`{`funcidx*#59`} []}, rt, $inst_reftype(f.`MODULE`_frame{moduleinst#19}, 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)]) + rule `br_on_cast-fail`{state#347 : state, `instr*#406` : instr*, store#827 : store, frame#831 : frame, s : store, f : frame, ref : ref, labelidx#77 : labelidx, reftype#3442 : reftype, l : labelidx, rt_1 : reftype, rt_2 : reftype}: + `%~>%`(`%;%`_config{state#347, `instr*#406`}(`%;%`_state{store#827, frame#831}(s, f), [(ref : ref <: instr) `BR_ON_CAST`_instr{labelidx#77, reftype#3442}(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)]) + rule `br_on_cast_fail-succeed`{state#359 : state, `instr*#418` : instr*, store#839 : store, frame#843 : frame, s : store, f : frame, ref : ref, labelidx#79 : labelidx, reftype#3445 : reftype, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype, `deftype*#88` : deftype*, `subtype*#22` : subtype*, `tagtype*#23` : tagtype*, `globaltype*#24` : globaltype*, `memtype*#38` : memtype*, `tabletype*#31` : tabletype*, `deftype*#89` : deftype*, `datatype*#23` : datatype*, `elemtype*#23` : elemtype*, `localtype*#26` : localtype*, `resulttype*#34` : resulttype*, `resulttype?#31` : resulttype?, `funcidx*#60` : funcidx*, moduleinst#20 : moduleinst}: + `%~>%`(`%;%`_config{state#359, `instr*#418`}(`%;%`_state{store#839, frame#843}(s, f), [(ref : ref <: instr) `BR_ON_CAST_FAIL`_instr{labelidx#79, reftype#3445}(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)) + -- Reftype_sub: `%|-%<:%`({`TYPES`{`deftype*#88`} [], `RECS`{`subtype*#22`} [], `TAGS`{`tagtype*#23`} [], `GLOBALS`{`globaltype*#24`} [], `MEMS`{`memtype*#38`} [], `TABLES`{`tabletype*#31`} [], `FUNCS`{`deftype*#89`} [], `DATAS`{`datatype*#23`} [], `ELEMS`{`elemtype*#23`} [], `LOCALS`{`localtype*#26`} [], `LABELS`{`resulttype*#34`} [], `RETURN`{`resulttype?#31`} ?(), `REFS`{`funcidx*#60`} []}, rt, $inst_reftype(f.`MODULE`_frame{moduleinst#20}, 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)]) + rule `br_on_cast_fail-fail`{state#371 : state, `instr*#430` : instr*, store#851 : store, frame#855 : frame, s : store, f : frame, ref : ref, labelidx#81 : labelidx, reftype#3448 : reftype, l : labelidx, rt_1 : reftype, rt_2 : reftype, labelidx#83 : labelidx}: + `%~>%`(`%;%`_config{state#371, `instr*#430`}(`%;%`_state{store#851, frame#855}(s, f), [(ref : ref <: instr) `BR_ON_CAST_FAIL`_instr{labelidx#81, reftype#3448}(l, rt_1, rt_2)]), [(ref : ref <: instr) `BR`_instr{labelidx#83}(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) + rule call{state#383 : state, `instr*#442` : instr*, z : state, funcidx#2837 : funcidx, x : idx, funcaddr#7 : funcaddr, a : addr, typeuse#35 : typeuse, deftype#5 : deftype, `funcaddr*#2` : funcaddr*, i#32425 : nat}: + `%~>%`(`%;%`_config{state#383, `instr*#442`}(z, [`CALL`_instr{funcidx#2837}(x)]), [`REF.FUNC_ADDR`_instr{funcaddr#7}(a) `CALL_REF`_instr{typeuse#35}(($funcinst(z)[a].`TYPE`_funcinst{deftype#5} : deftype <: typeuse))]) + -- if ($moduleinst(z).`FUNCS`_moduleinst{`funcaddr*#2`}[x!`%`_idx{i#32425}.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]) + rule `call_ref-null`{state#395 : state, `instr*#454` : instr*, z : state, heaptype#1307 : heaptype, ht : heaptype, typeuse#37 : typeuse, yy : typeuse}: + `%~>%`(`%;%`_config{state#395, `instr*#454`}(z, [`REF.NULL`_instr{heaptype#1307}(ht) `CALL_REF`_instr{typeuse#37}(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*`})])]) + rule `call_ref-func`{state#407 : state, `instr*#466` : instr*, z : state, n : n, `val*` : val*, funcaddr#9 : funcaddr, a : addr, typeuse#39 : typeuse, yy : typeuse, n#1153 : n, frame#887 : frame, `instr*#468` : instr*, m : m, f : frame, n#1155 : n, `instr*#470` : instr*, `instr*` : instr*, fi : funcinst, deftype#6 : deftype, resulttype#2997 : resulttype, `X*#12499` : valtype*, `t_1*` : valtype*, `X*#12512` : valtype*, `t_2*` : valtype*, funccode#1 : funccode, typeidx#1553 : typeidx, `local*#1221` : local*, expr#4155 : expr, x : idx, `t*` : valtype*, `valtype#755*` : valtype*, `val?*#4` : val?*, moduleinst#22 : moduleinst, moduleinst#21 : moduleinst}: + `%~>%`(`%;%`_config{state#407, `instr*#466`}(z, (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr{funcaddr#9}(a) `CALL_REF`_instr{typeuse#39}(yy)]), [`FRAME_%{%}%`_instr{n#1153, frame#887, `instr*#468`}(m, f, [`LABEL_%{%}%`_instr{n#1155, `instr*#470`}(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}) + -- Expand: `%~~%`(fi.`TYPE`_funcinst{deftype#6}, `FUNC%->%`_comptype{resulttype#2997}(`%`_resulttype{`X*#12499`}(t_1^n{t_1 <- `t_1*`}), `%`_resulttype{`X*#12512`}(t_2^m{t_2 <- `t_2*`}))) + -- if (fi.`CODE`_funcinst{funccode#1} = `FUNC`_funccode{typeidx#1553, `local*#1221`, expr#4155}(x, `LOCAL`_local{valtype#755}(t)*{t <- `t*`, valtype#755 <- `valtype#755*`}, instr*{instr <- `instr*`})) + -- if (f = {`LOCALS`{`val?*#4`} ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, `MODULE`{moduleinst#22} fi.`MODULE`_funcinst{moduleinst#21}}) ;; ../../../../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) + rule return_call{state#419 : state, `instr*#483` : instr*, z : state, funcidx#2839 : funcidx, x : idx, funcaddr#11 : funcaddr, a : addr, typeuse#41 : typeuse, deftype#7 : deftype, `funcaddr*#3` : funcaddr*, i#32463 : nat}: + `%~>%`(`%;%`_config{state#419, `instr*#483`}(z, [`RETURN_CALL`_instr{funcidx#2839}(x)]), [`REF.FUNC_ADDR`_instr{funcaddr#11}(a) `RETURN_CALL_REF`_instr{typeuse#41}(($funcinst(z)[a].`TYPE`_funcinst{deftype#7} : deftype <: typeuse))]) + -- if ($moduleinst(z).`FUNCS`_moduleinst{`funcaddr*#3`}[x!`%`_idx{i#32463}.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)]) + rule `return_call_ref-label`{state#431 : state, `instr*#495` : instr*, z : state, n#1163 : n, `instr*#497` : instr*, k : n, `instr'*` : instr*, `val*` : val*, typeuse#43 : typeuse, yy : typeuse, `instr*` : instr*, typeuse#45 : typeuse}: + `%~>%`(`%;%`_config{state#431, `instr*#495`}(z, [`LABEL_%{%}%`_instr{n#1163, `instr*#497`}(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr{typeuse#43}(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr{typeuse#45}(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)]) + rule `return_call_ref-handler`{state#443 : state, `instr*#510` : instr*, z : state, n#1165 : n, `catch*#3` : catch*, `instr*#512` : instr*, k : n, `catch*` : catch*, `val*` : val*, typeuse#47 : typeuse, yy : typeuse, `instr*` : instr*, typeuse#49 : typeuse}: + `%~>%`(`%;%`_config{state#443, `instr*#510`}(z, [`HANDLER_%{%}%`_instr{n#1165, `catch*#3`, `instr*#512`}(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr{typeuse#47}(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr{typeuse#49}(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]) + rule `return_call_ref-frame-null`{state#455 : state, `instr*#524` : instr*, z : state, n#1167 : n, frame#931 : frame, `instr*#526` : instr*, k : n, f : frame, `val*` : val*, heaptype#1309 : heaptype, ht : heaptype, typeuse#51 : typeuse, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config{state#455, `instr*#524`}(z, [`FRAME_%{%}%`_instr{n#1167, frame#931, `instr*#526`}(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL`_instr{heaptype#1309}(ht)] ++ [`RETURN_CALL_REF`_instr{typeuse#51}(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*`}))) + rule `return_call_ref-frame-addr`{state#467 : state, `instr*#538` : instr*, z : state, n#1169 : n, frame#939 : frame, `instr*#540` : instr*, k : n, f : frame, `val'*` : val*, n : n, `val*` : val*, funcaddr#13 : funcaddr, a : addr, typeuse#53 : typeuse, yy : typeuse, `instr*` : instr*, funcaddr#15 : funcaddr, typeuse#55 : typeuse, deftype#8 : deftype, resulttype#3000 : resulttype, `X*#12527` : valtype*, `t_1*` : valtype*, `X*#12540` : valtype*, m : m, `t_2*` : valtype*}: + `%~>%`(`%;%`_config{state#467, `instr*#538`}(z, [`FRAME_%{%}%`_instr{n#1169, frame#939, `instr*#540`}(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr{funcaddr#13}(a)] ++ [`RETURN_CALL_REF`_instr{typeuse#53}(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr{funcaddr#15}(a) `CALL_REF`_instr{typeuse#55}(yy)]) + -- Expand: `%~~%`($funcinst(z)[a].`TYPE`_funcinst{deftype#8}, `FUNC%->%`_comptype{resulttype#3000}(`%`_resulttype{`X*#12527`}(t_1^n{t_1 <- `t_1*`}), `%`_resulttype{`X*#12540`}(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]) + rule `throw_ref-null`{state#503 : state, `instr*#585` : instr*, z : state, heaptype#1335 : heaptype, ht : heaptype}: + `%~>%`(`%;%`_config{state#503, `instr*#585`}(z, [`REF.NULL`_instr{heaptype#1335}(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]) + rule `throw_ref-instrs`{state#515 : state, `instr*#597` : instr*, z : state, `val*` : val*, exnaddr#5 : exnaddr, a : addr, `instr*` : instr*, exnaddr#7 : exnaddr}: + `%~>%`(`%;%`_config{state#515, `instr*#597`}(z, (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr{exnaddr#5}(a)] ++ [`THROW_REF`_instr] ++ instr*{instr <- `instr*`}), [`REF.EXN_ADDR`_instr{exnaddr#7}(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]) + rule `throw_ref-label`{state#527 : state, `instr*#609` : instr*, z : state, n#1191 : n, `instr*#611` : instr*, n : n, `instr'*` : instr*, exnaddr#9 : exnaddr, a : addr, exnaddr#11 : exnaddr}: + `%~>%`(`%;%`_config{state#527, `instr*#609`}(z, [`LABEL_%{%}%`_instr{n#1191, `instr*#611`}(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr{exnaddr#9}(a) `THROW_REF`_instr])]), [`REF.EXN_ADDR`_instr{exnaddr#11}(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]) + rule `throw_ref-frame`{state#539 : state, `instr*#624` : instr*, z : state, n#1193 : n, frame#1011 : frame, `instr*#626` : instr*, n : n, f : frame, exnaddr#13 : exnaddr, a : addr, exnaddr#15 : exnaddr}: + `%~>%`(`%;%`_config{state#539, `instr*#624`}(z, [`FRAME_%{%}%`_instr{n#1193, frame#1011, `instr*#626`}(n, f, [`REF.EXN_ADDR`_instr{exnaddr#13}(a) `THROW_REF`_instr])]), [`REF.EXN_ADDR`_instr{exnaddr#15}(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]) + rule `throw_ref-handler-empty`{state#551 : state, `instr*#638` : instr*, z : state, n#1195 : n, `catch*#7` : catch*, `instr*#640` : instr*, n : n, exnaddr#17 : exnaddr, a : addr, exnaddr#19 : exnaddr}: + `%~>%`(`%;%`_config{state#551, `instr*#638`}(z, [`HANDLER_%{%}%`_instr{n#1195, `catch*#7`, `instr*#640`}(n, [], [`REF.EXN_ADDR`_instr{exnaddr#17}(a) `THROW_REF`_instr])]), [`REF.EXN_ADDR`_instr{exnaddr#19}(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) + rule `throw_ref-handler-catch`{state#563 : state, `instr*#652` : instr*, z : state, n#1197 : n, `catch*#9` : catch*, `instr*#654` : instr*, n : n, tagidx#13 : tagidx, labelidx#85 : labelidx, x : idx, l : labelidx, `catch'*` : catch*, exnaddr#21 : exnaddr, a : addr, `val*` : val*, labelidx#87 : labelidx, tagaddr#6 : tagaddr, i#32603 : nat, `val*#2` : val*}: + `%~>%`(`%;%`_config{state#563, `instr*#652`}(z, [`HANDLER_%{%}%`_instr{n#1197, `catch*#9`, `instr*#654`}(n, [`CATCH`_catch{tagidx#13, labelidx#85}(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#21}(a) `THROW_REF`_instr])]), (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr{labelidx#87}(l)]) + -- if ($exninst(z)[a].`TAG`_exninst{tagaddr#6} = $tagaddr(z)[x!`%`_idx{i#32603}.0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].`FIELDS`_exninst{`val*#2`}) ;; ../../../../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) + rule `throw_ref-handler-catch_ref`{state#575 : state, `instr*#666` : instr*, z : state, n#1199 : n, `catch*#11` : catch*, `instr*#668` : instr*, n : n, tagidx#15 : tagidx, labelidx#89 : labelidx, x : idx, l : labelidx, `catch'*` : catch*, exnaddr#23 : exnaddr, a : addr, `val*` : val*, exnaddr#25 : exnaddr, labelidx#91 : labelidx, tagaddr#7 : tagaddr, i#32651 : nat, `val*#3` : val*}: + `%~>%`(`%;%`_config{state#575, `instr*#666`}(z, [`HANDLER_%{%}%`_instr{n#1199, `catch*#11`, `instr*#668`}(n, [`CATCH_REF`_catch{tagidx#15, labelidx#89}(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#23}(a) `THROW_REF`_instr])]), (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr{exnaddr#25}(a) `BR`_instr{labelidx#91}(l)]) + -- if ($exninst(z)[a].`TAG`_exninst{tagaddr#7} = $tagaddr(z)[x!`%`_idx{i#32651}.0]) + -- if (val*{val <- `val*`} = $exninst(z)[a].`FIELDS`_exninst{`val*#3`}) ;; ../../../../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)]) + rule `throw_ref-handler-catch_all`{state#587 : state, `instr*#680` : instr*, z : state, n#1201 : n, `catch*#13` : catch*, `instr*#682` : instr*, n : n, labelidx#93 : labelidx, l : labelidx, `catch'*` : catch*, exnaddr#27 : exnaddr, a : addr, labelidx#95 : labelidx}: + `%~>%`(`%;%`_config{state#587, `instr*#680`}(z, [`HANDLER_%{%}%`_instr{n#1201, `catch*#13`, `instr*#682`}(n, [`CATCH_ALL`_catch{labelidx#93}(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#27}(a) `THROW_REF`_instr])]), [`BR`_instr{labelidx#95}(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)]) + rule `throw_ref-handler-catch_all_ref`{state#599 : state, `instr*#694` : instr*, z : state, n#1203 : n, `catch*#15` : catch*, `instr*#696` : instr*, n : n, labelidx#97 : labelidx, l : labelidx, `catch'*` : catch*, exnaddr#29 : exnaddr, a : addr, exnaddr#31 : exnaddr, labelidx#99 : labelidx}: + `%~>%`(`%;%`_config{state#599, `instr*#694`}(z, [`HANDLER_%{%}%`_instr{n#1203, `catch*#15`, `instr*#696`}(n, [`CATCH_ALL_REF`_catch{labelidx#97}(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#29}(a) `THROW_REF`_instr])]), [`REF.EXN_ADDR`_instr{exnaddr#31}(a) `BR`_instr{labelidx#99}(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])]) + rule `throw_ref-handler-next`{state#611 : state, `instr*#708` : instr*, z : state, n#1205 : n, `catch*#17` : catch*, `instr*#710` : instr*, n : n, catch : catch, `catch'*` : catch*, exnaddr#33 : exnaddr, a : addr, n#1207 : n, `catch*#19` : catch*, `instr*#712` : instr*, exnaddr#35 : exnaddr}: + `%~>%`(`%;%`_config{state#611, `instr*#708`}(z, [`HANDLER_%{%}%`_instr{n#1205, `catch*#17`, `instr*#710`}(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#33}(a) `THROW_REF`_instr])]), [`HANDLER_%{%}%`_instr{n#1207, `catch*#19`, `instr*#712`}(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#35}(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*`}))) + rule try_table{state#623 : state, `instr*#724` : instr*, z : state, m : m, `val*` : val*, blocktype#29 : blocktype, `instr*#726` : instr*, bt : blocktype, `X*#12591` : catch*, `catch*` : catch*, `instr*` : instr*, n#1209 : n, `catch*#21` : catch*, `instr*#728` : instr*, n : n, n#1211 : n, `instr*#730` : instr*, resulttype#3023 : resulttype, `localidx*#1805` : localidx*, `X*#12604` : valtype*, `t_1*` : valtype*, `X*#12655` : valtype*, `t_2*` : valtype*}: + `%~>%`(`%;%`_config{state#623, `instr*#724`}(z, (val : val <: instr)^m{val <- `val*`} ++ [`TRY_TABLE`_instr{blocktype#29, `instr*#726`}(bt, `%`_list{`X*#12591`}(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr{n#1209, `catch*#21`, `instr*#728`}(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr{n#1211, `instr*#730`}(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) + -- if ($blocktype_(z, bt) = `%->_%%`_instrtype{resulttype#3023, `localidx*#1805`}(`%`_resulttype{`X*#12604`}(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#12655`}(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)]) + rule local.get{state#635 : state, `instr*#750` : instr*, z : state, localidx#13 : localidx, x : idx, val : val}: + `%~>%`(`%;%`_config{state#635, `instr*#750`}(z, [`LOCAL.GET`_instr{localidx#13}(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) + rule global.get{state#671 : state, `instr*#786` : instr*, z : state, globalidx#17 : globalidx, x : idx, val : val, val#2 : val}: + `%~>%`(`%;%`_config{state#671, `instr*#786`}(z, [`GLOBAL.GET`_instr{globalidx#17}(x)]), [(val : val <: instr)]) + -- if ($global(z, x).`VALUE`_globalinst{val#2} = 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|) + rule `table.get-oob`{state#707 : state, `instr*#822` : instr*, z : state, numtype#75 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), tableidx#57 : tableidx, x : idx, i#32897 : nat, `ref*#5` : ref*}: + `%~>%`(`%;%`_config{state#707, `instr*#822`}(z, [`CONST`_instr{numtype#75}((at : addrtype <: numtype), i) `TABLE.GET`_instr{tableidx#57}(x)]), [`TRAP`_instr]) + -- if (i!`%`_num_{i#32897}.0 >= |$table(z, x).`REFS`_tableinst{`ref*#5`}|) ;; ../../../../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|) + rule `table.get-val`{state#719 : state, `instr*#834` : instr*, z : state, numtype#77 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), tableidx#59 : tableidx, x : idx, `ref*#6` : ref*, i#32947 : nat, i#32973 : nat, `ref*#7` : ref*}: + `%~>%`(`%;%`_config{state#719, `instr*#834`}(z, [`CONST`_instr{numtype#77}((at : addrtype <: numtype), i) `TABLE.GET`_instr{tableidx#59}(x)]), [($table(z, x).`REFS`_tableinst{`ref*#6`}[i!`%`_num_{i#32947}.0] : ref <: instr)]) + -- if (i!`%`_num_{i#32973}.0 < |$table(z, x).`REFS`_tableinst{`ref*#7`}|) ;; ../../../../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)) + rule table.size{state#779 : state, `instr*#894` : instr*, z : state, tableidx#65 : tableidx, x : idx, numtype#83 : numtype, at : addrtype, i#33141 : nat, n : n, `ref*#10` : ref*, tabletype#880 : tabletype, addrtype#1123 : addrtype, limits#1123 : limits, reftype#3465 : reftype, lim : limits, rt : reftype}: + `%~>%`(`%;%`_config{state#779, `instr*#894`}(z, [`TABLE.SIZE`_instr{tableidx#65}(x)]), [`CONST`_instr{numtype#83}((at : addrtype <: numtype), `%`_num_{i#33141}(n))]) + -- if (|$table(z, x).`REFS`_tableinst{`ref*#10`}| = n) + -- if ($table(z, x).`TYPE`_tableinst{tabletype#880} = `%%%`_tabletype{addrtype#1123, limits#1123, reftype#3465}(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|) + rule `table.fill-oob`{state#839 : state, `instr*#954` : instr*, z : state, numtype#93 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, numtype#95 : numtype, i#33359 : nat, n : n, tableidx#71 : tableidx, x : idx, i#33387 : nat, `ref*#12` : ref*}: + `%~>%`(`%;%`_config{state#839, `instr*#954`}(z, [`CONST`_instr{numtype#93}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#95}((at : addrtype <: numtype), `%`_num_{i#33359}(n)) `TABLE.FILL`_instr{tableidx#71}(x)]), [`TRAP`_instr]) + -- if ((i!`%`_num_{i#33387}.0 + n) > |$table(z, x).`REFS`_tableinst{`ref*#12`}|) ;; ../../../../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)]), []) + rule `table.fill-zero`{state#851 : state, `instr*#966` : instr*, z : state, numtype#97 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, numtype#99 : numtype, i#33437 : nat, n : n, tableidx#73 : tableidx, x : idx}: + `%~>%`(`%;%`_config{state#851, `instr*#966`}(z, [`CONST`_instr{numtype#97}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#99}((at : addrtype <: numtype), `%`_num_{i#33437}(n)) `TABLE.FILL`_instr{tableidx#73}(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)]) + rule `table.fill-succ`{state#863 : state, `instr*#978` : instr*, z : state, numtype#101 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, numtype#103 : numtype, i#33489 : nat, n : n, tableidx#75 : tableidx, x : idx, numtype#105 : numtype, tableidx#77 : tableidx, numtype#107 : numtype, i#33565 : nat, i#33555 : nat, numtype#109 : numtype, i#33587 : nat, tableidx#79 : tableidx}: + `%~>%`(`%;%`_config{state#863, `instr*#978`}(z, [`CONST`_instr{numtype#101}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#103}((at : addrtype <: numtype), `%`_num_{i#33489}(n)) `TABLE.FILL`_instr{tableidx#75}(x)]), [`CONST`_instr{numtype#105}((at : addrtype <: numtype), i) (val : val <: instr) `TABLE.SET`_instr{tableidx#77}(x) `CONST`_instr{numtype#107}((at : addrtype <: numtype), `%`_num_{i#33565}((i!`%`_num_{i#33555}.0 + 1))) (val : val <: instr) `CONST`_instr{numtype#109}((at : addrtype <: numtype), `%`_num_{i#33587}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `TABLE.FILL`_instr{tableidx#79}(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|)) + rule `table.copy-oob`{state#875 : state, `instr*#990` : instr*, z : state, numtype#111 : numtype, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), numtype#113 : numtype, at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), numtype#115 : numtype, at' : addrtype, i#33653 : nat, n : n, tableidx#81 : tableidx, x_1 : idx, x_2 : idx, i#33695 : nat, `ref*#13` : ref*, i#33721 : nat, `ref*#14` : ref*}: + `%~>%`(`%;%`_config{state#875, `instr*#990`}(z, [`CONST`_instr{numtype#111}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#113}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#115}((at' : addrtype <: numtype), `%`_num_{i#33653}(n)) `TABLE.COPY`_instr{tableidx#81}(x_1, x_2)]), [`TRAP`_instr]) + -- if (((i_1!`%`_num_{i#33695}.0 + n) > |$table(z, x_1).`REFS`_tableinst{`ref*#13`}|) \/ ((i_2!`%`_num_{i#33721}.0 + n) > |$table(z, x_2).`REFS`_tableinst{`ref*#14`}|)) ;; ../../../../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)]), []) + rule `table.copy-zero`{state#887 : state, `instr*#1002` : instr*, z : state, numtype#117 : numtype, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), numtype#119 : numtype, at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), numtype#121 : numtype, at' : addrtype, i#33785 : nat, n : n, tableidx#84 : tableidx, x : idx, y : idx}: + `%~>%`(`%;%`_config{state#887, `instr*#1002`}(z, [`CONST`_instr{numtype#117}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#119}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#121}((at' : addrtype <: numtype), `%`_num_{i#33785}(n)) `TABLE.COPY`_instr{tableidx#84}(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)]) + rule `table.copy-le`{state#899 : state, `instr*#1014` : instr*, z : state, numtype#123 : numtype, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), numtype#125 : numtype, at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), numtype#127 : numtype, at' : addrtype, i#33865 : nat, n : n, tableidx#87 : tableidx, x : idx, y : idx, numtype#129 : numtype, numtype#131 : numtype, tableidx#90 : tableidx, tableidx#92 : tableidx, numtype#133 : numtype, i#33981 : nat, i#33971 : nat, numtype#135 : numtype, i#34017 : nat, i#34007 : nat, numtype#137 : numtype, i#34039 : nat, tableidx#94 : tableidx, i#34085 : nat, i#34095 : nat}: + `%~>%`(`%;%`_config{state#899, `instr*#1014`}(z, [`CONST`_instr{numtype#123}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#125}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#127}((at' : addrtype <: numtype), `%`_num_{i#33865}(n)) `TABLE.COPY`_instr{tableidx#87}(x, y)]), [`CONST`_instr{numtype#129}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#131}((at_2 : addrtype <: numtype), i_2) `TABLE.GET`_instr{tableidx#90}(y) `TABLE.SET`_instr{tableidx#92}(x) `CONST`_instr{numtype#133}((at_1 : addrtype <: numtype), `%`_num_{i#33981}((i_1!`%`_num_{i#33971}.0 + 1))) `CONST`_instr{numtype#135}((at_2 : addrtype <: numtype), `%`_num_{i#34017}((i_2!`%`_num_{i#34007}.0 + 1))) `CONST`_instr{numtype#137}((at' : addrtype <: numtype), `%`_num_{i#34039}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `TABLE.COPY`_instr{tableidx#94}(x, y)]) -- otherwise - -- if (i_1!`%`_num_.0 <= i_2!`%`_num_.0) + -- if (i_1!`%`_num_{i#34085}.0 <= i_2!`%`_num_{i#34095}.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)]) + rule `table.copy-gt`{state#911 : state, `instr*#1026` : instr*, z : state, numtype#139 : numtype, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), numtype#141 : numtype, at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), numtype#143 : numtype, at' : addrtype, i#34147 : nat, n : n, tableidx#97 : tableidx, x : idx, y : idx, numtype#145 : numtype, i#34211 : nat, i#34201 : nat, numtype#147 : numtype, i#34247 : nat, i#34237 : nat, tableidx#100 : tableidx, tableidx#102 : tableidx, numtype#149 : numtype, numtype#151 : numtype, numtype#153 : numtype, i#34321 : nat, tableidx#104 : tableidx}: + `%~>%`(`%;%`_config{state#911, `instr*#1026`}(z, [`CONST`_instr{numtype#139}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#141}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#143}((at' : addrtype <: numtype), `%`_num_{i#34147}(n)) `TABLE.COPY`_instr{tableidx#97}(x, y)]), [`CONST`_instr{numtype#145}((at_1 : addrtype <: numtype), `%`_num_{i#34211}(((((i_1!`%`_num_{i#34201}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `CONST`_instr{numtype#147}((at_2 : addrtype <: numtype), `%`_num_{i#34247}(((((i_2!`%`_num_{i#34237}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `TABLE.GET`_instr{tableidx#100}(y) `TABLE.SET`_instr{tableidx#102}(x) `CONST`_instr{numtype#149}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#151}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#153}((at' : addrtype <: numtype), `%`_num_{i#34321}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `TABLE.COPY`_instr{tableidx#104}(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|)) + rule `table.init-oob`{state#923 : state, `instr*#1038` : instr*, z : state, numtype#155 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), numtype#157 : numtype, j : num_(`I32`_numtype), numtype#159 : numtype, i#34401 : nat, n : n, tableidx#107 : tableidx, elemidx#17 : elemidx, x : idx, y : idx, i#34443 : nat, `ref*#15` : ref*, i#34469 : nat, `ref*#16` : ref*}: + `%~>%`(`%;%`_config{state#923, `instr*#1038`}(z, [`CONST`_instr{numtype#155}((at : addrtype <: numtype), i) `CONST`_instr{numtype#157}(`I32`_numtype, j) `CONST`_instr{numtype#159}(`I32`_numtype, `%`_num_{i#34401}(n)) `TABLE.INIT`_instr{tableidx#107, elemidx#17}(x, y)]), [`TRAP`_instr]) + -- if (((i!`%`_num_{i#34443}.0 + n) > |$table(z, x).`REFS`_tableinst{`ref*#15`}|) \/ ((j!`%`_num_{i#34469}.0 + n) > |$elem(z, y).`REFS`_eleminst{`ref*#16`}|)) ;; ../../../../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)]), []) + rule `table.init-zero`{state#935 : state, `instr*#1050` : instr*, z : state, numtype#161 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), numtype#163 : numtype, j : num_(`I32`_numtype), numtype#165 : numtype, i#34533 : nat, n : n, tableidx#109 : tableidx, elemidx#19 : elemidx, x : idx, y : idx}: + `%~>%`(`%;%`_config{state#935, `instr*#1050`}(z, [`CONST`_instr{numtype#161}((at : addrtype <: numtype), i) `CONST`_instr{numtype#163}(`I32`_numtype, j) `CONST`_instr{numtype#165}(`I32`_numtype, `%`_num_{i#34533}(n)) `TABLE.INIT`_instr{tableidx#109, elemidx#19}(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)]) + rule `table.init-succ`{state#947 : state, `instr*#1062` : instr*, z : state, numtype#167 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), numtype#169 : numtype, j : num_(`I32`_numtype), numtype#171 : numtype, i#34613 : nat, n : n, tableidx#111 : tableidx, elemidx#21 : elemidx, x : idx, y : idx, numtype#173 : numtype, `ref*#17` : ref*, i#34675 : nat, tableidx#113 : tableidx, numtype#175 : numtype, i#34725 : nat, i#34715 : nat, numtype#177 : numtype, i#34761 : nat, i#34751 : nat, numtype#179 : numtype, i#34783 : nat, tableidx#115 : tableidx, elemidx#23 : elemidx}: + `%~>%`(`%;%`_config{state#947, `instr*#1062`}(z, [`CONST`_instr{numtype#167}((at : addrtype <: numtype), i) `CONST`_instr{numtype#169}(`I32`_numtype, j) `CONST`_instr{numtype#171}(`I32`_numtype, `%`_num_{i#34613}(n)) `TABLE.INIT`_instr{tableidx#111, elemidx#21}(x, y)]), [`CONST`_instr{numtype#173}((at : addrtype <: numtype), i) ($elem(z, y).`REFS`_eleminst{`ref*#17`}[j!`%`_num_{i#34675}.0] : ref <: instr) `TABLE.SET`_instr{tableidx#113}(x) `CONST`_instr{numtype#175}((at : addrtype <: numtype), `%`_num_{i#34725}((i!`%`_num_{i#34715}.0 + 1))) `CONST`_instr{numtype#177}(`I32`_numtype, `%`_num_{i#34761}((j!`%`_num_{i#34751}.0 + 1))) `CONST`_instr{numtype#179}(`I32`_numtype, `%`_num_{i#34783}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `TABLE.INIT`_instr{tableidx#115, elemidx#23}(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|) + rule `load-num-oob`{state#983 : state, `instr*#1098` : instr*, z : state, numtype#181 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), `numtype?#7` : numtype?, memidx#67 : memidx, memarg#35 : memarg, nt : numtype, x : idx, ao : memarg, i#34883 : nat, u64#405 : u64, i#34893 : nat, `byte*#1849` : byte*}: + `%~>%`(`%;%`_config{state#983, `instr*#1098`}(z, [`CONST`_instr{numtype#181}((at : addrtype <: numtype), i) `LOAD`_instr{`numtype?#7`, memidx#67, memarg#35}(nt, ?(), x, ao)]), [`TRAP`_instr]) + -- if (((i!`%`_num_{i#34883}.0 + ao.`OFFSET`_memarg{u64#405}!`%`_u64{i#34893}.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst{`byte*#1849`}|) ;; ../../../../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)]) + rule `load-num-val`{state#995 : state, `instr*#1110` : instr*, z : state, numtype#184 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), `numtype?#8` : numtype?, memidx#69 : memidx, memarg#37 : memarg, nt : numtype, x : idx, ao : memarg, numtype#187 : numtype, c : num_(nt), `byte*#1850` : byte*, i#34963 : nat, u64#406 : u64, i#34973 : nat}: + `%~>%`(`%;%`_config{state#995, `instr*#1110`}(z, [`CONST`_instr{numtype#184}((at : addrtype <: numtype), i) `LOAD`_instr{`numtype?#8`, memidx#69, memarg#37}(nt, ?(), x, ao)]), [`CONST`_instr{numtype#187}(nt, c)]) + -- if ($nbytes_(nt, c) = $mem(z, x).`BYTES`_meminst{`byte*#1850`}[(i!`%`_num_{i#34963}.0 + ao.`OFFSET`_memarg{u64#406}!`%`_u64{i#34973}.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 : Inn <: 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|) + rule `load-pack-oob`{state#1007 : state, `instr*#1122` : instr*, z : state, numtype#189 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), `numtype?#9` : numtype?, memidx#71 : memidx, memarg#39 : memarg, Inn : Inn, sz#156 : sz, sx#270 : sx, i#35021 : nat, i#35028 : nat, n : n, sx : sx, x : idx, ao : memarg, i#35060 : nat, u64#407 : u64, i#35070 : nat, `byte*#1851` : byte*}: + `%~>%`(`%;%`_config{state#1007, `instr*#1122`}(z, [`CONST`_instr{numtype#189}((at : addrtype <: numtype), i) `LOAD`_instr{`numtype?#9`, memidx#71, memarg#39}((Inn : Inn <: numtype), ?(`%_%`_loadop_{sz#156, sx#270, i#35021}(`%`_sz{i#35028}(n), sx)), x, ao)]), [`TRAP`_instr]) + -- if (((i!`%`_num_{i#35060}.0 + ao.`OFFSET`_memarg{u64#407}!`%`_u64{i#35070}.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst{`byte*#1851`}|) ;; ../../../../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 : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n), sx)), x, ao)]), [CONST_instr((Inn : Inn <: numtype), $extend__(n, $size((Inn : Inn <: 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)]) + rule `load-pack-val`{state#1019 : state, `instr*#1134` : instr*, z : state, numtype#192 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), `numtype?#10` : numtype?, memidx#73 : memidx, memarg#41 : memarg, Inn : Inn, sz#158 : sz, sx#272 : sx, i#35122 : nat, i#35129 : nat, n : n, sx : sx, x : idx, ao : memarg, numtype#195 : numtype, c : iN(n), `byte*#1852` : byte*, i#35199 : nat, u64#408 : u64, i#35209 : nat}: + `%~>%`(`%;%`_config{state#1019, `instr*#1134`}(z, [`CONST`_instr{numtype#192}((at : addrtype <: numtype), i) `LOAD`_instr{`numtype?#10`, memidx#73, memarg#41}((Inn : Inn <: numtype), ?(`%_%`_loadop_{sz#158, sx#272, i#35122}(`%`_sz{i#35129}(n), sx)), x, ao)]), [`CONST`_instr{numtype#195}((Inn : Inn <: numtype), $extend__(n, $size((Inn : Inn <: numtype)), sx, c))]) + -- if ($ibytes_(n, c) = $mem(z, x).`BYTES`_meminst{`byte*#1852`}[(i!`%`_num_{i#35199}.0 + ao.`OFFSET`_memarg{u64#408}!`%`_u64{i#35209}.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|) + rule `vload-oob`{state#1031 : state, `instr*#1146` : instr*, z : state, numtype#197 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), `vectype?#6` : vectype?, memidx#75 : memidx, memarg#43 : memarg, x : idx, ao : memarg, i#35293 : nat, u64#409 : u64, i#35303 : nat, `byte*#1853` : byte*}: + `%~>%`(`%;%`_config{state#1031, `instr*#1146`}(z, [`CONST`_instr{numtype#197}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#6`, memidx#75, memarg#43}(`V128`_vectype, ?(), x, ao)]), [`TRAP`_instr]) + -- if (((i!`%`_num_{i#35293}.0 + ao.`OFFSET`_memarg{u64#409}!`%`_u64{i#35303}.0) + ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst{`byte*#1853`}|) ;; ../../../../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)]) + rule `vload-val`{state#1043 : state, `instr*#1158` : instr*, z : state, numtype#199 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), `vectype?#7` : vectype?, memidx#77 : memidx, memarg#45 : memarg, x : idx, ao : memarg, vectype#64 : vectype, c : vec_(`V128`_Vnn), `byte*#1854` : byte*, i#35387 : nat, u64#410 : u64, i#35397 : nat}: + `%~>%`(`%;%`_config{state#1043, `instr*#1158`}(z, [`CONST`_instr{numtype#199}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#7`, memidx#77, memarg#45}(`V128`_vectype, ?(), x, ao)]), [`VCONST`_instr{vectype#64}(`V128`_vectype, c)]) + -- if ($vbytes_(`V128`_vectype, c) = $mem(z, x).`BYTES`_meminst{`byte*#1854`}[(i!`%`_num_{i#35387}.0 + ao.`OFFSET`_memarg{u64#410}!`%`_u64{i#35397}.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|) + rule `vload-pack-oob`{state#1055 : state, `instr*#1170` : instr*, z : state, numtype#201 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), `vectype?#8` : vectype?, memidx#79 : memidx, memarg#47 : memarg, sz#205 : sz, M#63 : M, sx#289 : sx, i#35475 : nat, i#35482 : nat, M : M, K : K, sx : sx, x : idx, ao : memarg, i#35514 : nat, u64#411 : u64, i#35524 : nat, `byte*#1855` : byte*}: + `%~>%`(`%;%`_config{state#1055, `instr*#1170`}(z, [`CONST`_instr{numtype#201}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#8`, memidx#79, memarg#47}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#205, M#63, sx#289, i#35475}(`%`_sz{i#35482}(M), K, sx)), x, ao)]), [`TRAP`_instr]) + -- if (((i!`%`_num_{i#35514}.0 + ao.`OFFSET`_memarg{u64#411}!`%`_u64{i#35524}.0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst{`byte*#1855`}|) ;; ../../../../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{state#1067, `instr*#1182`}(z, [`CONST`_instr{numtype#203}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#9`, memidx#81, memarg#49}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#252, M#80, sx#306, i#35576}(`%`_sz{i#35583}(M), K, sx)), x, ao)]), [`VCONST`_instr{vectype#68}(`V128`_vectype, c)]) + -- (if ($ibytes_(M, j) = $mem(z, x).`BYTES`_meminst{`byte*#1856`}[((i!`%`_num_{i#35641}.0 + ao.`OFFSET`_memarg{u64#412}!`%`_u64{i#35651}.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|) + rule `vload-splat-oob`{state#1079 : state, `instr*#1194` : instr*, z : state, numtype#205 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), `vectype?#10` : vectype?, memidx#83 : memidx, memarg#51 : memarg, sz#299 : sz, i#35834 : nat, N : N, x : idx, ao : memarg, i#35866 : nat, u64#413 : u64, i#35876 : nat, `byte*#1857` : byte*}: + `%~>%`(`%;%`_config{state#1079, `instr*#1194`}(z, [`CONST`_instr{numtype#205}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#10`, memidx#83, memarg#51}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#299}(`%`_sz{i#35834}(N))), x, ao)]), [`TRAP`_instr]) + -- if (((i!`%`_num_{i#35866}.0 + ao.`OFFSET`_memarg{u64#413}!`%`_u64{i#35876}.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst{`byte*#1857`}|) ;; ../../../../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)]) + rule `vload-splat-val`{state#1091 : state, `instr*#1206` : instr*, z : state, numtype#207 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), `vectype?#11` : vectype?, memidx#85 : memidx, memarg#53 : memarg, sz#346 : sz, i#35934 : nat, N : N, x : idx, ao : memarg, vectype#72 : vectype, c : vec_(`V128`_Vnn), j : iN(N), `byte*#1858` : byte*, i#35992 : nat, u64#414 : u64, i#36002 : nat, Jnn : Jnn, M : M, lanetype#7267 : lanetype, dim#7267 : dim, i#36033 : nat, i#36040 : nat, `i#36120*` : nat*, `i#36121*` : nat*}: + `%~>%`(`%;%`_config{state#1091, `instr*#1206`}(z, [`CONST`_instr{numtype#207}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#11`, memidx#85, memarg#53}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#346}(`%`_sz{i#35934}(N))), x, ao)]), [`VCONST`_instr{vectype#72}(`V128`_vectype, c)]) + -- if ($ibytes_(N, j) = $mem(z, x).`BYTES`_meminst{`byte*#1858`}[(i!`%`_num_{i#35992}.0 + ao.`OFFSET`_memarg{u64#414}!`%`_u64{i#36002}.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{})) + -- if (c = $inv_lanes_(`%X%`_shape{lanetype#7267, dim#7267, i#36033}((Jnn : Jnn <: lanetype), `%`_dim{i#36040}(M)), `%`_lane_{i#36121}(j!`%`_iN{i#36120}.0)^M{i#36120 <- `i#36120*`, i#36121 <- `i#36121*`})) ;; ../../../../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|) + rule `vload-zero-oob`{state#1103 : state, `instr*#1218` : instr*, z : state, numtype#209 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), `vectype?#12` : vectype?, memidx#87 : memidx, memarg#55 : memarg, sz#393 : sz, i#36172 : nat, i#36179 : nat, N : N, x : idx, ao : memarg, i#36211 : nat, u64#415 : u64, i#36221 : nat, `byte*#1859` : byte*}: + `%~>%`(`%;%`_config{state#1103, `instr*#1218`}(z, [`CONST`_instr{numtype#209}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#12`, memidx#87, memarg#55}(`V128`_vectype, ?(`ZERO`_vloadop_{sz#393, i#36172}(`%`_sz{i#36179}(N))), x, ao)]), [`TRAP`_instr]) + -- if (((i!`%`_num_{i#36211}.0 + ao.`OFFSET`_memarg{u64#415}!`%`_u64{i#36221}.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst{`byte*#1859`}|) ;; ../../../../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)) + rule `vload-zero-val`{state#1115 : state, `instr*#1230` : instr*, z : state, numtype#211 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), `vectype?#13` : vectype?, memidx#89 : memidx, memarg#57 : memarg, sz#440 : sz, i#36273 : nat, i#36280 : nat, N : N, x : idx, ao : memarg, vectype#76 : vectype, c : vec_(`V128`_Vnn), j : iN(N), `byte*#1860` : byte*, i#36338 : nat, u64#416 : u64, i#36348 : nat}: + `%~>%`(`%;%`_config{state#1115, `instr*#1230`}(z, [`CONST`_instr{numtype#211}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#13`, memidx#89, memarg#57}(`V128`_vectype, ?(`ZERO`_vloadop_{sz#440, i#36273}(`%`_sz{i#36280}(N))), x, ao)]), [`VCONST`_instr{vectype#76}(`V128`_vectype, c)]) + -- if ($ibytes_(N, j) = $mem(z, x).`BYTES`_meminst{`byte*#1860`}[(i!`%`_num_{i#36338}.0 + ao.`OFFSET`_memarg{u64#416}!`%`_u64{i#36348}.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|) + rule `vload_lane-oob`{state#1127 : state, `instr*#1242` : instr*, z : state, numtype#213 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), vectype#78 : vectype, c_1 : vec_(`V128`_Vnn), vectype#80 : vectype, sz#442 : sz, memidx#91 : memidx, memarg#59 : memarg, laneidx#17 : laneidx, i#36428 : nat, N : N, x : idx, ao : memarg, j : laneidx, i#36474 : nat, u64#417 : u64, i#36484 : nat, `byte*#1861` : byte*}: + `%~>%`(`%;%`_config{state#1127, `instr*#1242`}(z, [`CONST`_instr{numtype#213}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#78}(`V128`_vectype, c_1) `VLOAD_LANE`_instr{vectype#80, sz#442, memidx#91, memarg#59, laneidx#17}(`V128`_vectype, `%`_sz{i#36428}(N), x, ao, j)]), [`TRAP`_instr]) + -- if (((i!`%`_num_{i#36474}.0 + ao.`OFFSET`_memarg{u64#417}!`%`_u64{i#36484}.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst{`byte*#1861`}|) ;; ../../../../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)]) + rule `vload_lane-val`{state#1139 : state, `instr*#1254` : instr*, z : state, numtype#215 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), vectype#82 : vectype, c_1 : vec_(`V128`_Vnn), vectype#84 : vectype, sz#444 : sz, memidx#93 : memidx, memarg#61 : memarg, laneidx#19 : laneidx, i#36532 : nat, N : N, x : idx, ao : memarg, j : laneidx, vectype#86 : vectype, c : vec_(`V128`_Vnn), k : iN(N), `byte*#1862` : byte*, i#36604 : nat, u64#418 : u64, i#36614 : nat, Jnn : Jnn, M : M, lanetype#7292 : lanetype, dim#7292 : dim, i#36645 : nat, i#36652 : nat, lanetype#7383 : lanetype, dim#7383 : dim, i#36877 : nat, i#36884 : nat, i#36910 : nat, i#36957 : nat, i#36956 : nat}: + `%~>%`(`%;%`_config{state#1139, `instr*#1254`}(z, [`CONST`_instr{numtype#215}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#82}(`V128`_vectype, c_1) `VLOAD_LANE`_instr{vectype#84, sz#444, memidx#93, memarg#61, laneidx#19}(`V128`_vectype, `%`_sz{i#36532}(N), x, ao, j)]), [`VCONST`_instr{vectype#86}(`V128`_vectype, c)]) + -- if ($ibytes_(N, k) = $mem(z, x).`BYTES`_meminst{`byte*#1862`}[(i!`%`_num_{i#36604}.0 + ao.`OFFSET`_memarg{u64#418}!`%`_u64{i#36614}.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)])) + -- if ((M : nat <:> rat) = (($vsize(`V128`_vectype) : nat <:> rat) / (N : nat <:> rat))) + -- if (c = $inv_lanes_(`%X%`_shape{lanetype#7292, dim#7292, i#36645}((Jnn : Jnn <: lanetype), `%`_dim{i#36652}(M)), $lanes_(`%X%`_shape{lanetype#7383, dim#7383, i#36877}((Jnn : Jnn <: lanetype), `%`_dim{i#36884}(M)), c_1)[[j!`%`_laneidx{i#36910}.0] = `%`_lane_{i#36957}(k!`%`_iN{i#36956}.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)) + rule memory.size{state#1343 : state, `instr*#1458` : instr*, z : state, memidx#111 : memidx, x : idx, numtype#245 : numtype, at : addrtype, i#37958 : nat, n : n, `byte*#1867` : byte*, memtype#530 : memtype, addrtype#1135 : addrtype, limits#1135 : limits, lim : limits}: + `%~>%`(`%;%`_config{state#1343, `instr*#1458`}(z, [`MEMORY.SIZE`_instr{memidx#111}(x)]), [`CONST`_instr{numtype#245}((at : addrtype <: numtype), `%`_num_{i#37958}(n))]) + -- if ((n * (64 * $Ki)) = |$mem(z, x).`BYTES`_meminst{`byte*#1867`}|) + -- if ($mem(z, x).`TYPE`_meminst{memtype#530} = `%%PAGE`_memtype{addrtype#1135, limits#1135}(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|) + rule `memory.fill-oob`{state#1403 : state, `instr*#1518` : instr*, z : state, numtype#255 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, numtype#257 : numtype, i#38176 : nat, n : n, memidx#117 : memidx, x : idx, i#38204 : nat, `byte*#1869` : byte*}: + `%~>%`(`%;%`_config{state#1403, `instr*#1518`}(z, [`CONST`_instr{numtype#255}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#257}((at : addrtype <: numtype), `%`_num_{i#38176}(n)) `MEMORY.FILL`_instr{memidx#117}(x)]), [`TRAP`_instr]) + -- if ((i!`%`_num_{i#38204}.0 + n) > |$mem(z, x).`BYTES`_meminst{`byte*#1869`}|) ;; ../../../../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)]), []) + rule `memory.fill-zero`{state#1415 : state, `instr*#1530` : instr*, z : state, numtype#259 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, numtype#261 : numtype, i#38254 : nat, n : n, memidx#119 : memidx, x : idx}: + `%~>%`(`%;%`_config{state#1415, `instr*#1530`}(z, [`CONST`_instr{numtype#259}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#261}((at : addrtype <: numtype), `%`_num_{i#38254}(n)) `MEMORY.FILL`_instr{memidx#119}(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)]) + rule `memory.fill-succ`{state#1427 : state, `instr*#1542` : instr*, z : state, numtype#263 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, numtype#265 : numtype, i#38306 : nat, n : n, memidx#121 : memidx, x : idx, numtype#267 : numtype, `numtype?#15` : numtype?, memidx#123 : memidx, memarg#79 : memarg, sz#465 : sz, i#38373 : nat, i#38374 : nat, numtype#270 : numtype, i#38424 : nat, i#38414 : nat, numtype#272 : numtype, i#38446 : nat, memidx#125 : memidx}: + `%~>%`(`%;%`_config{state#1427, `instr*#1542`}(z, [`CONST`_instr{numtype#263}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#265}((at : addrtype <: numtype), `%`_num_{i#38306}(n)) `MEMORY.FILL`_instr{memidx#121}(x)]), [`CONST`_instr{numtype#267}((at : addrtype <: numtype), i) (val : val <: instr) `STORE`_instr{`numtype?#15`, memidx#123, memarg#79}(`I32`_numtype, ?(`%`_storeop_{sz#465, i#38373}(`%`_sz{i#38374}(8))), x, $memarg0) `CONST`_instr{numtype#270}((at : addrtype <: numtype), `%`_num_{i#38424}((i!`%`_num_{i#38414}.0 + 1))) (val : val <: instr) `CONST`_instr{numtype#272}((at : addrtype <: numtype), `%`_num_{i#38446}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `MEMORY.FILL`_instr{memidx#125}(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|)) + rule `memory.copy-oob`{state#1439 : state, `instr*#1554` : instr*, z : state, numtype#274 : numtype, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), numtype#276 : numtype, at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), numtype#278 : numtype, at' : addrtype, i#38512 : nat, n : n, memidx#127 : memidx, x_1 : idx, x_2 : idx, i#38554 : nat, `byte*#1870` : byte*, i#38580 : nat, `byte*#1871` : byte*}: + `%~>%`(`%;%`_config{state#1439, `instr*#1554`}(z, [`CONST`_instr{numtype#274}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#276}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#278}((at' : addrtype <: numtype), `%`_num_{i#38512}(n)) `MEMORY.COPY`_instr{memidx#127}(x_1, x_2)]), [`TRAP`_instr]) + -- if (((i_1!`%`_num_{i#38554}.0 + n) > |$mem(z, x_1).`BYTES`_meminst{`byte*#1870`}|) \/ ((i_2!`%`_num_{i#38580}.0 + n) > |$mem(z, x_2).`BYTES`_meminst{`byte*#1871`}|)) ;; ../../../../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)]), []) + rule `memory.copy-zero`{state#1451 : state, `instr*#1566` : instr*, z : state, numtype#280 : numtype, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), numtype#282 : numtype, at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), numtype#284 : numtype, at' : addrtype, i#38644 : nat, n : n, memidx#130 : memidx, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config{state#1451, `instr*#1566`}(z, [`CONST`_instr{numtype#280}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#282}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#284}((at' : addrtype <: numtype), `%`_num_{i#38644}(n)) `MEMORY.COPY`_instr{memidx#130}(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)]) + rule `memory.copy-le`{state#1463 : state, `instr*#1578` : instr*, z : state, numtype#286 : numtype, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), numtype#288 : numtype, at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), numtype#290 : numtype, at' : addrtype, i#38724 : nat, n : n, memidx#133 : memidx, x_1 : idx, x_2 : idx, numtype#292 : numtype, numtype#294 : numtype, `numtype?#16` : numtype?, memidx#136 : memidx, memarg#81 : memarg, sz#483 : sz, sx#384 : sx, i#38802 : nat, i#38809 : nat, `numtype?#17` : numtype?, memidx#138 : memidx, memarg#83 : memarg, sz#496 : sz, i#38864 : nat, i#38865 : nat, numtype#298 : numtype, i#38915 : nat, i#38905 : nat, numtype#300 : numtype, i#38951 : nat, i#38941 : nat, numtype#302 : numtype, i#38973 : nat, memidx#140 : memidx, i#39019 : nat, i#39029 : nat}: + `%~>%`(`%;%`_config{state#1463, `instr*#1578`}(z, [`CONST`_instr{numtype#286}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#288}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#290}((at' : addrtype <: numtype), `%`_num_{i#38724}(n)) `MEMORY.COPY`_instr{memidx#133}(x_1, x_2)]), [`CONST`_instr{numtype#292}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#294}((at_2 : addrtype <: numtype), i_2) `LOAD`_instr{`numtype?#16`, memidx#136, memarg#81}(`I32`_numtype, ?(`%_%`_loadop_{sz#483, sx#384, i#38802}(`%`_sz{i#38809}(8), `U`_sx)), x_2, $memarg0) `STORE`_instr{`numtype?#17`, memidx#138, memarg#83}(`I32`_numtype, ?(`%`_storeop_{sz#496, i#38864}(`%`_sz{i#38865}(8))), x_1, $memarg0) `CONST`_instr{numtype#298}((at_1 : addrtype <: numtype), `%`_num_{i#38915}((i_1!`%`_num_{i#38905}.0 + 1))) `CONST`_instr{numtype#300}((at_2 : addrtype <: numtype), `%`_num_{i#38951}((i_2!`%`_num_{i#38941}.0 + 1))) `CONST`_instr{numtype#302}((at' : addrtype <: numtype), `%`_num_{i#38973}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `MEMORY.COPY`_instr{memidx#140}(x_1, x_2)]) -- otherwise - -- if (i_1!`%`_num_.0 <= i_2!`%`_num_.0) + -- if (i_1!`%`_num_{i#39019}.0 <= i_2!`%`_num_{i#39029}.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)]) + rule `memory.copy-gt`{state#1475 : state, `instr*#1590` : instr*, z : state, numtype#304 : numtype, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), numtype#306 : numtype, at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), numtype#308 : numtype, at' : addrtype, i#39081 : nat, n : n, memidx#143 : memidx, x_1 : idx, x_2 : idx, numtype#310 : numtype, i#39145 : nat, i#39135 : nat, numtype#312 : numtype, i#39181 : nat, i#39171 : nat, `numtype?#18` : numtype?, memidx#146 : memidx, memarg#85 : memarg, sz#514 : sz, sx#402 : sx, i#39207 : nat, i#39214 : nat, `numtype?#19` : numtype?, memidx#148 : memidx, memarg#87 : memarg, sz#527 : sz, i#39269 : nat, i#39270 : nat, numtype#316 : numtype, numtype#318 : numtype, numtype#320 : numtype, i#39330 : nat, memidx#150 : memidx}: + `%~>%`(`%;%`_config{state#1475, `instr*#1590`}(z, [`CONST`_instr{numtype#304}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#306}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#308}((at' : addrtype <: numtype), `%`_num_{i#39081}(n)) `MEMORY.COPY`_instr{memidx#143}(x_1, x_2)]), [`CONST`_instr{numtype#310}((at_1 : addrtype <: numtype), `%`_num_{i#39145}(((((i_1!`%`_num_{i#39135}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `CONST`_instr{numtype#312}((at_2 : addrtype <: numtype), `%`_num_{i#39181}(((((i_2!`%`_num_{i#39171}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `LOAD`_instr{`numtype?#18`, memidx#146, memarg#85}(`I32`_numtype, ?(`%_%`_loadop_{sz#514, sx#402, i#39207}(`%`_sz{i#39214}(8), `U`_sx)), x_2, $memarg0) `STORE`_instr{`numtype?#19`, memidx#148, memarg#87}(`I32`_numtype, ?(`%`_storeop_{sz#527, i#39269}(`%`_sz{i#39270}(8))), x_1, $memarg0) `CONST`_instr{numtype#316}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#318}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#320}((at' : addrtype <: numtype), `%`_num_{i#39330}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `MEMORY.COPY`_instr{memidx#150}(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|)) + rule `memory.init-oob`{state#1487 : state, `instr*#1602` : instr*, z : state, numtype#322 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), numtype#324 : numtype, j : num_(`I32`_numtype), numtype#326 : numtype, i#39410 : nat, n : n, memidx#153 : memidx, dataidx#17 : dataidx, x : idx, y : idx, i#39452 : nat, `byte*#1872` : byte*, i#39478 : nat, `byte*#1873` : byte*}: + `%~>%`(`%;%`_config{state#1487, `instr*#1602`}(z, [`CONST`_instr{numtype#322}((at : addrtype <: numtype), i) `CONST`_instr{numtype#324}(`I32`_numtype, j) `CONST`_instr{numtype#326}(`I32`_numtype, `%`_num_{i#39410}(n)) `MEMORY.INIT`_instr{memidx#153, dataidx#17}(x, y)]), [`TRAP`_instr]) + -- if (((i!`%`_num_{i#39452}.0 + n) > |$mem(z, x).`BYTES`_meminst{`byte*#1872`}|) \/ ((j!`%`_num_{i#39478}.0 + n) > |$data(z, y).`BYTES`_datainst{`byte*#1873`}|)) ;; ../../../../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)]), []) + rule `memory.init-zero`{state#1499 : state, `instr*#1614` : instr*, z : state, numtype#328 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), numtype#330 : numtype, j : num_(`I32`_numtype), numtype#332 : numtype, i#39542 : nat, n : n, memidx#155 : memidx, dataidx#19 : dataidx, x : idx, y : idx}: + `%~>%`(`%;%`_config{state#1499, `instr*#1614`}(z, [`CONST`_instr{numtype#328}((at : addrtype <: numtype), i) `CONST`_instr{numtype#330}(`I32`_numtype, j) `CONST`_instr{numtype#332}(`I32`_numtype, `%`_num_{i#39542}(n)) `MEMORY.INIT`_instr{memidx#155, dataidx#19}(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)]) + rule `memory.init-succ`{state#1511 : state, `instr*#1626` : instr*, z : state, numtype#334 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), numtype#336 : numtype, j : num_(`I32`_numtype), numtype#338 : numtype, i#39622 : nat, n : n, memidx#157 : memidx, dataidx#21 : dataidx, x : idx, y : idx, numtype#340 : numtype, numtype#342 : numtype, i#39715 : nat, `byte*#1874` : byte*, i#39696 : nat, i#39714 : nat, `numtype?#20` : numtype?, memidx#159 : memidx, memarg#89 : memarg, sz#540 : sz, i#39757 : nat, i#39758 : nat, numtype#345 : numtype, i#39808 : nat, i#39798 : nat, numtype#347 : numtype, i#39844 : nat, i#39834 : nat, numtype#349 : numtype, i#39866 : nat, memidx#161 : memidx, dataidx#23 : dataidx}: + `%~>%`(`%;%`_config{state#1511, `instr*#1626`}(z, [`CONST`_instr{numtype#334}((at : addrtype <: numtype), i) `CONST`_instr{numtype#336}(`I32`_numtype, j) `CONST`_instr{numtype#338}(`I32`_numtype, `%`_num_{i#39622}(n)) `MEMORY.INIT`_instr{memidx#157, dataidx#21}(x, y)]), [`CONST`_instr{numtype#340}((at : addrtype <: numtype), i) `CONST`_instr{numtype#342}(`I32`_numtype, `%`_num_{i#39715}($data(z, y).`BYTES`_datainst{`byte*#1874`}[j!`%`_num_{i#39696}.0]!`%`_byte{i#39714}.0)) `STORE`_instr{`numtype?#20`, memidx#159, memarg#89}(`I32`_numtype, ?(`%`_storeop_{sz#540, i#39757}(`%`_sz{i#39758}(8))), x, $memarg0) `CONST`_instr{numtype#345}((at : addrtype <: numtype), `%`_num_{i#39808}((i!`%`_num_{i#39798}.0 + 1))) `CONST`_instr{numtype#347}(`I32`_numtype, `%`_num_{i#39844}((j!`%`_num_{i#39834}.0 + 1))) `CONST`_instr{numtype#349}(`I32`_numtype, `%`_num_{i#39866}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `MEMORY.INIT`_instr{memidx#161, dataidx#23}(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))]) + rule `ref.null-idx`{state#1547 : state, `instr*#1662` : instr*, z : state, heaptype#1343 : heaptype, typeidx#1555 : typeidx, x : idx, heaptype#1345 : heaptype}: + `%~>%`(`%;%`_config{state#1547, `instr*#1662`}(z, [`REF.NULL`_instr{heaptype#1343}(`_IDX`_heaptype{typeidx#1555}(x))]), [`REF.NULL`_instr{heaptype#1345}(($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])]) + rule ref.func{state#1559 : state, `instr*#1674` : instr*, z : state, funcidx#2841 : funcidx, x : idx, funcaddr#17 : funcaddr, `funcaddr*#4` : funcaddr*, i#39970 : nat}: + `%~>%`(`%;%`_config{state#1559, `instr*#1674`}(z, [`REF.FUNC`_instr{funcidx#2841}(x)]), [`REF.FUNC_ADDR`_instr{funcaddr#17}($moduleinst(z).`FUNCS`_moduleinst{`funcaddr*#4`}[x!`%`_idx{i#39970}.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))]) + rule `ref.test-true`{state#1571 : state, `instr*#1686` : instr*, store#1913 : store, frame#1931 : frame, s : store, f : frame, ref : ref, reftype#3467 : reftype, rt : reftype, numtype#363 : numtype, i#40142 : nat, rt' : reftype, `deftype*#90` : deftype*, `subtype*#23` : subtype*, `tagtype*#24` : tagtype*, `globaltype*#25` : globaltype*, `memtype*#39` : memtype*, `tabletype*#32` : tabletype*, `deftype*#91` : deftype*, `datatype*#24` : datatype*, `elemtype*#24` : elemtype*, `localtype*#27` : localtype*, `resulttype*#35` : resulttype*, `resulttype?#32` : resulttype?, `funcidx*#61` : funcidx*, moduleinst#23 : moduleinst}: + `%~>%`(`%;%`_config{state#1571, `instr*#1686`}(`%;%`_state{store#1913, frame#1931}(s, f), [(ref : ref <: instr) `REF.TEST`_instr{reftype#3467}(rt)]), [`CONST`_instr{numtype#363}(`I32`_numtype, `%`_num_{i#40142}(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)) + -- Reftype_sub: `%|-%<:%`({`TYPES`{`deftype*#90`} [], `RECS`{`subtype*#23`} [], `TAGS`{`tagtype*#24`} [], `GLOBALS`{`globaltype*#25`} [], `MEMS`{`memtype*#39`} [], `TABLES`{`tabletype*#32`} [], `FUNCS`{`deftype*#91`} [], `DATAS`{`datatype*#24`} [], `ELEMS`{`elemtype*#24`} [], `LOCALS`{`localtype*#27`} [], `LABELS`{`resulttype*#35`} [], `RETURN`{`resulttype?#32`} ?(), `REFS`{`funcidx*#61`} []}, rt', $inst_reftype(f.`MODULE`_frame{moduleinst#23}, 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))]) + rule `ref.test-false`{state#1583 : state, `instr*#1698` : instr*, store#1925 : store, frame#1943 : frame, s : store, f : frame, ref : ref, reftype#3469 : reftype, rt : reftype, numtype#365 : numtype, i#40164 : nat}: + `%~>%`(`%;%`_config{state#1583, `instr*#1698`}(`%;%`_state{store#1925, frame#1943}(s, f), [(ref : ref <: instr) `REF.TEST`_instr{reftype#3469}(rt)]), [`CONST`_instr{numtype#365}(`I32`_numtype, `%`_num_{i#40164}(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)]) + rule `ref.cast-succeed`{state#1595 : state, `instr*#1710` : instr*, store#1937 : store, frame#1955 : frame, s : store, f : frame, ref : ref, reftype#3471 : reftype, rt : reftype, rt' : reftype, `deftype*#92` : deftype*, `subtype*#24` : subtype*, `tagtype*#25` : tagtype*, `globaltype*#26` : globaltype*, `memtype*#40` : memtype*, `tabletype*#33` : tabletype*, `deftype*#93` : deftype*, `datatype*#25` : datatype*, `elemtype*#25` : elemtype*, `localtype*#28` : localtype*, `resulttype*#36` : resulttype*, `resulttype?#33` : resulttype?, `funcidx*#62` : funcidx*, moduleinst#24 : moduleinst}: + `%~>%`(`%;%`_config{state#1595, `instr*#1710`}(`%;%`_state{store#1937, frame#1955}(s, f), [(ref : ref <: instr) `REF.CAST`_instr{reftype#3471}(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)) + -- Reftype_sub: `%|-%<:%`({`TYPES`{`deftype*#92`} [], `RECS`{`subtype*#24`} [], `TAGS`{`tagtype*#25`} [], `GLOBALS`{`globaltype*#26`} [], `MEMS`{`memtype*#40`} [], `TABLES`{`tabletype*#33`} [], `FUNCS`{`deftype*#93`} [], `DATAS`{`datatype*#25`} [], `ELEMS`{`elemtype*#25`} [], `LOCALS`{`localtype*#28`} [], `LABELS`{`resulttype*#36`} [], `RETURN`{`resulttype?#33`} ?(), `REFS`{`funcidx*#62`} []}, rt', $inst_reftype(f.`MODULE`_frame{moduleinst#24}, 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]) + rule `ref.cast-fail`{state#1607 : state, `instr*#1722` : instr*, store#1949 : store, frame#1967 : frame, s : store, f : frame, ref : ref, reftype#3473 : reftype, rt : reftype}: + `%~>%`(`%;%`_config{state#1607, `instr*#1722`}(`%;%`_state{store#1949, frame#1967}(s, f), [(ref : ref <: instr) `REF.CAST`_instr{reftype#3473}(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*`}))) + rule struct.new_default{state#1643 : state, `instr*#1758` : instr*, z : state, typeidx#1559 : typeidx, x : idx, `val*` : val*, typeidx#1561 : typeidx, `X*#12683` : fieldtype*, `mut?*` : mut?*, `mut?#1049*` : mut?*, `storagetype#587*` : storagetype*, `zt*` : storagetype*}: + `%~>%`(`%;%`_config{state#1643, `instr*#1758`}(z, [`STRUCT.NEW_DEFAULT`_instr{typeidx#1559}(x)]), (val : val <: instr)*{val <- `val*`} ++ [`STRUCT.NEW`_instr{typeidx#1561}(x)]) + -- Expand: `%~~%`($type(z, x), `STRUCT`_comptype(`%`_list{`X*#12683`}(`%%`_fieldtype{`mut?#1049`, storagetype#587}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#1049` <- `mut?#1049*`, storagetype#587 <- `storagetype#587*`, 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]) + rule `struct.get-null`{state#1655 : state, `instr*#1770` : instr*, z : state, heaptype#1429 : heaptype, ht : heaptype, `sx?#13` : sx?, typeidx#1563 : typeidx, u32#17 : u32, `sx?` : sx?, x : idx, i : u32}: + `%~>%`(`%;%`_config{state#1655, `instr*#1770`}(z, [`REF.NULL`_instr{heaptype#1429}(ht) `STRUCT.GET`_instr{`sx?#13`, typeidx#1563, u32#17}(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*`}))) + rule `struct.get-struct`{state#1667 : state, `instr*#1782` : instr*, z : state, structaddr#5 : structaddr, a : addr, `sx?#15` : sx?, typeidx#1565 : typeidx, u32#19 : u32, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, i#40378 : nat, `fieldval*#4` : fieldval*, i#40388 : nat, `X*#12698` : fieldtype*, `mut?*` : mut?*, `mut?#1067*` : mut?*, `storagetype#605*` : storagetype*}: + `%~>%`(`%;%`_config{state#1667, `instr*#1782`}(z, [`REF.STRUCT_ADDR`_instr{structaddr#5}(a) `STRUCT.GET`_instr{`sx?#15`, typeidx#1565, u32#19}(sx?{sx <- `sx?`}, x, i)]), [($unpackfield_(zt*{zt <- `zt*`}[i!`%`_u32{i#40378}.0], sx?{sx <- `sx?`}, $structinst(z)[a].`FIELDS`_structinst{`fieldval*#4`}[i!`%`_u32{i#40388}.0]) : val <: instr)]) + -- Expand: `%~~%`($type(z, x), `STRUCT`_comptype(`%`_list{`X*#12698`}(`%%`_fieldtype{`mut?#1067`, storagetype#605}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#1067` <- `mut?#1067*`, storagetype#605 <- `storagetype#605*`, 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))) + rule array.new_default{state#1727 : state, `instr*#1842` : instr*, z : state, numtype#371 : numtype, i#40588 : nat, n : n, typeidx#1575 : typeidx, x : idx, val : val, typeidx#1577 : typeidx, u32#27 : u32, i#40640 : nat, fieldtype#39 : fieldtype, `mut?#1097` : mut?, storagetype#635 : storagetype, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config{state#1727, `instr*#1842`}(z, [`CONST`_instr{numtype#371}(`I32`_numtype, `%`_num_{i#40588}(n)) `ARRAY.NEW_DEFAULT`_instr{typeidx#1575}(x)]), (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr{typeidx#1577, u32#27}(x, `%`_u32{i#40640}(n))]) + -- Expand: `%~~%`($type(z, x), `ARRAY`_comptype{fieldtype#39}(`%%`_fieldtype{`mut?#1097`, storagetype#635}(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|) + rule `array.new_elem-oob`{state#1763 : state, `instr*#1878` : instr*, z : state, numtype#373 : numtype, i : num_(`I32`_numtype), numtype#375 : numtype, i#40752 : nat, n : n, typeidx#1581 : typeidx, elemidx#27 : elemidx, x : idx, y : idx, i#40794 : nat, `ref*#18` : ref*}: + `%~>%`(`%;%`_config{state#1763, `instr*#1878`}(z, [`CONST`_instr{numtype#373}(`I32`_numtype, i) `CONST`_instr{numtype#375}(`I32`_numtype, `%`_num_{i#40752}(n)) `ARRAY.NEW_ELEM`_instr{typeidx#1581, elemidx#27}(x, y)]), [`TRAP`_instr]) + -- if ((i!`%`_num_{i#40794}.0 + n) > |$elem(z, y).`REFS`_eleminst{`ref*#18`}|) ;; ../../../../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]) + rule `array.new_elem-alloc`{state#1775 : state, `instr*#1890` : instr*, z : state, numtype#377 : numtype, i : num_(`I32`_numtype), numtype#379 : numtype, i#40844 : nat, n : n, typeidx#1583 : typeidx, elemidx#29 : elemidx, x : idx, y : idx, `ref*` : ref*, typeidx#1585 : typeidx, u32#31 : u32, i#40910 : nat, `ref*#19` : ref*, i#40932 : nat}: + `%~>%`(`%;%`_config{state#1775, `instr*#1890`}(z, [`CONST`_instr{numtype#377}(`I32`_numtype, i) `CONST`_instr{numtype#379}(`I32`_numtype, `%`_num_{i#40844}(n)) `ARRAY.NEW_ELEM`_instr{typeidx#1583, elemidx#29}(x, y)]), (ref : ref <: instr)^n{ref <- `ref*`} ++ [`ARRAY.NEW_FIXED`_instr{typeidx#1585, u32#31}(x, `%`_u32{i#40910}(n))]) + -- if (ref^n{ref <- `ref*`} = $elem(z, y).`REFS`_eleminst{`ref*#19`}[i!`%`_num_{i#40932}.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|) + rule `array.new_data-oob`{state#1787 : state, `instr*#1902` : instr*, z : state, numtype#381 : numtype, i : num_(`I32`_numtype), numtype#383 : numtype, i#40970 : nat, n : n, typeidx#1587 : typeidx, dataidx#27 : dataidx, x : idx, y : idx, fieldtype#43 : fieldtype, `mut?#1121` : mut?, storagetype#659 : storagetype, `mut?` : mut?, zt : storagetype, i#41024 : nat, `byte*#1875` : byte*}: + `%~>%`(`%;%`_config{state#1787, `instr*#1902`}(z, [`CONST`_instr{numtype#381}(`I32`_numtype, i) `CONST`_instr{numtype#383}(`I32`_numtype, `%`_num_{i#40970}(n)) `ARRAY.NEW_DATA`_instr{typeidx#1587, dataidx#27}(x, y)]), [`TRAP`_instr]) + -- Expand: `%~~%`($type(z, x), `ARRAY`_comptype{fieldtype#43}(`%%`_fieldtype{`mut?#1121`, storagetype#659}(mut?{mut <- `mut?`}, zt))) + -- if ((i!`%`_num_{i#41024}.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).`BYTES`_datainst{`byte*#1875`}|) ;; ../../../../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)]) + rule `array.new_data-num`{state#1799 : state, `instr*#1914` : instr*, z : state, numtype#385 : numtype, i : num_(`I32`_numtype), numtype#387 : numtype, i#41074 : nat, n : n, typeidx#1589 : typeidx, dataidx#29 : dataidx, x : idx, y : idx, zt : storagetype, `c*` : lit_(zt)*, typeidx#1591 : typeidx, u32#33 : u32, i#41140 : nat, fieldtype#45 : fieldtype, `mut?#1133` : mut?, storagetype#671 : storagetype, `mut?` : mut?, `byte*#1876` : byte*, i#41174 : nat}: + `%~>%`(`%;%`_config{state#1799, `instr*#1914`}(z, [`CONST`_instr{numtype#385}(`I32`_numtype, i) `CONST`_instr{numtype#387}(`I32`_numtype, `%`_num_{i#41074}(n)) `ARRAY.NEW_DATA`_instr{typeidx#1589, dataidx#29}(x, y)]), $const($cunpack(zt), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [`ARRAY.NEW_FIXED`_instr{typeidx#1591, u32#33}(x, `%`_u32{i#41140}(n))]) + -- Expand: `%~~%`($type(z, x), `ARRAY`_comptype{fieldtype#45}(`%%`_fieldtype{`mut?#1133`, storagetype#671}(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{`byte*#1876`}[i!`%`_num_{i#41174}.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]) + rule `array.get-null`{state#1811 : state, `instr*#1926` : instr*, z : state, heaptype#1433 : heaptype, ht : heaptype, numtype#389 : numtype, i : num_(`I32`_numtype), `sx?#17` : sx?, typeidx#1593 : typeidx, `sx?` : sx?, x : idx}: + `%~>%`(`%;%`_config{state#1811, `instr*#1926`}(z, [`REF.NULL`_instr{heaptype#1433}(ht) `CONST`_instr{numtype#389}(`I32`_numtype, i) `ARRAY.GET`_instr{`sx?#17`, typeidx#1593}(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|) + rule `array.get-oob`{state#1823 : state, `instr*#1938` : instr*, z : state, arrayaddr#5 : arrayaddr, a : addr, numtype#391 : numtype, i : num_(`I32`_numtype), `sx?#19` : sx?, typeidx#1595 : typeidx, `sx?` : sx?, x : idx, i#41392 : nat, `fieldval*#6` : fieldval*}: + `%~>%`(`%;%`_config{state#1823, `instr*#1938`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#5}(a) `CONST`_instr{numtype#391}(`I32`_numtype, i) `ARRAY.GET`_instr{`sx?#19`, typeidx#1595}(sx?{sx <- `sx?`}, x)]), [`TRAP`_instr]) + -- if (i!`%`_num_{i#41392}.0 >= |$arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#6`}|) ;; ../../../../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))) + rule `array.get-array`{state#1835 : state, `instr*#1950` : instr*, z : state, arrayaddr#7 : arrayaddr, a : addr, numtype#393 : numtype, i : num_(`I32`_numtype), `sx?#21` : sx?, typeidx#1597 : typeidx, `sx?` : sx?, x : idx, zt : storagetype, `fieldval*#7` : fieldval*, i#41467 : nat, fieldtype#47 : fieldtype, `mut?#1145` : mut?, storagetype#683 : storagetype, `mut?` : mut?}: + `%~>%`(`%;%`_config{state#1835, `instr*#1950`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#7}(a) `CONST`_instr{numtype#393}(`I32`_numtype, i) `ARRAY.GET`_instr{`sx?#21`, typeidx#1597}(sx?{sx <- `sx?`}, x)]), [($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#7`}[i!`%`_num_{i#41467}.0]) : val <: instr)]) + -- Expand: `%~~%`($type(z, x), `ARRAY`_comptype{fieldtype#47}(`%%`_fieldtype{`mut?#1145`, storagetype#683}(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]) + rule `array.len-null`{state#1919 : state, `instr*#2034` : instr*, z : state, heaptype#1437 : heaptype, ht : heaptype}: + `%~>%`(`%;%`_config{state#1919, `instr*#2034`}(z, [`REF.NULL`_instr{heaptype#1437}(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|))]) + rule `array.len-array`{state#1931 : state, `instr*#2046` : instr*, z : state, arrayaddr#13 : arrayaddr, a : addr, numtype#401 : numtype, i#41621 : nat, `fieldval*#9` : fieldval*}: + `%~>%`(`%;%`_config{state#1931, `instr*#2046`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#13}(a) `ARRAY.LEN`_instr]), [`CONST`_instr{numtype#401}(`I32`_numtype, `%`_num_{i#41621}(|$arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#9`}|))]) ;; ../../../../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]) + rule `array.fill-null`{state#1943 : state, `instr*#2058` : instr*, z : state, heaptype#1439 : heaptype, ht : heaptype, numtype#403 : numtype, i : num_(`I32`_numtype), val : val, numtype#405 : numtype, i#41659 : nat, n : n, typeidx#1605 : typeidx, x : idx}: + `%~>%`(`%;%`_config{state#1943, `instr*#2058`}(z, [`REF.NULL`_instr{heaptype#1439}(ht) `CONST`_instr{numtype#403}(`I32`_numtype, i) (val : val <: instr) `CONST`_instr{numtype#405}(`I32`_numtype, `%`_num_{i#41659}(n)) `ARRAY.FILL`_instr{typeidx#1605}(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|) + rule `array.fill-oob`{state#1955 : state, `instr*#2070` : instr*, z : state, arrayaddr#15 : arrayaddr, a : addr, numtype#407 : numtype, i : num_(`I32`_numtype), val : val, numtype#409 : numtype, i#41711 : nat, n : n, typeidx#1607 : typeidx, x : idx, i#41739 : nat, `fieldval*#10` : fieldval*}: + `%~>%`(`%;%`_config{state#1955, `instr*#2070`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#15}(a) `CONST`_instr{numtype#407}(`I32`_numtype, i) (val : val <: instr) `CONST`_instr{numtype#409}(`I32`_numtype, `%`_num_{i#41711}(n)) `ARRAY.FILL`_instr{typeidx#1607}(x)]), [`TRAP`_instr]) + -- if ((i!`%`_num_{i#41739}.0 + n) > |$arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#10`}|) ;; ../../../../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)]), []) + rule `array.fill-zero`{state#1967 : state, `instr*#2082` : instr*, z : state, arrayaddr#17 : arrayaddr, a : addr, numtype#411 : numtype, i : num_(`I32`_numtype), val : val, numtype#413 : numtype, i#41777 : nat, n : n, typeidx#1609 : typeidx, x : idx}: + `%~>%`(`%;%`_config{state#1967, `instr*#2082`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#17}(a) `CONST`_instr{numtype#411}(`I32`_numtype, i) (val : val <: instr) `CONST`_instr{numtype#413}(`I32`_numtype, `%`_num_{i#41777}(n)) `ARRAY.FILL`_instr{typeidx#1609}(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)]) + rule `array.fill-succ`{state#1979 : state, `instr*#2094` : instr*, z : state, arrayaddr#19 : arrayaddr, a : addr, numtype#415 : numtype, i : num_(`I32`_numtype), val : val, numtype#417 : numtype, i#41829 : nat, n : n, typeidx#1611 : typeidx, x : idx, arrayaddr#21 : arrayaddr, numtype#419 : numtype, typeidx#1613 : typeidx, arrayaddr#23 : arrayaddr, numtype#421 : numtype, i#41905 : nat, i#41895 : nat, numtype#423 : numtype, i#41927 : nat, typeidx#1615 : typeidx}: + `%~>%`(`%;%`_config{state#1979, `instr*#2094`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#19}(a) `CONST`_instr{numtype#415}(`I32`_numtype, i) (val : val <: instr) `CONST`_instr{numtype#417}(`I32`_numtype, `%`_num_{i#41829}(n)) `ARRAY.FILL`_instr{typeidx#1611}(x)]), [`REF.ARRAY_ADDR`_instr{arrayaddr#21}(a) `CONST`_instr{numtype#419}(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr{typeidx#1613}(x) `REF.ARRAY_ADDR`_instr{arrayaddr#23}(a) `CONST`_instr{numtype#421}(`I32`_numtype, `%`_num_{i#41905}((i!`%`_num_{i#41895}.0 + 1))) (val : val <: instr) `CONST`_instr{numtype#423}(`I32`_numtype, `%`_num_{i#41927}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `ARRAY.FILL`_instr{typeidx#1615}(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]) + rule `array.copy-null1`{state#1991 : state, `instr*#2106` : instr*, z : state, heaptype#1441 : heaptype, ht_1 : heaptype, numtype#425 : numtype, i_1 : num_(`I32`_numtype), ref : ref, numtype#427 : numtype, i_2 : num_(`I32`_numtype), numtype#429 : numtype, i#41993 : nat, n : n, typeidx#1617 : typeidx, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config{state#1991, `instr*#2106`}(z, [`REF.NULL`_instr{heaptype#1441}(ht_1) `CONST`_instr{numtype#425}(`I32`_numtype, i_1) (ref : ref <: instr) `CONST`_instr{numtype#427}(`I32`_numtype, i_2) `CONST`_instr{numtype#429}(`I32`_numtype, `%`_num_{i#41993}(n)) `ARRAY.COPY`_instr{typeidx#1617}(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]) + rule `array.copy-null2`{state#2003 : state, `instr*#2118` : instr*, z : state, ref : ref, numtype#431 : numtype, i_1 : num_(`I32`_numtype), heaptype#1443 : heaptype, ht_2 : heaptype, numtype#433 : numtype, i_2 : num_(`I32`_numtype), numtype#435 : numtype, i#42073 : nat, n : n, typeidx#1620 : typeidx, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config{state#2003, `instr*#2118`}(z, [(ref : ref <: instr) `CONST`_instr{numtype#431}(`I32`_numtype, i_1) `REF.NULL`_instr{heaptype#1443}(ht_2) `CONST`_instr{numtype#433}(`I32`_numtype, i_2) `CONST`_instr{numtype#435}(`I32`_numtype, `%`_num_{i#42073}(n)) `ARRAY.COPY`_instr{typeidx#1620}(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|) + rule `array.copy-oob1`{state#2015 : state, `instr*#2130` : instr*, z : state, arrayaddr#25 : arrayaddr, a_1 : addr, numtype#437 : numtype, i_1 : num_(`I32`_numtype), arrayaddr#27 : arrayaddr, a_2 : addr, numtype#439 : numtype, i_2 : num_(`I32`_numtype), numtype#441 : numtype, i#42153 : nat, n : n, typeidx#1623 : typeidx, x_1 : idx, x_2 : idx, i#42195 : nat, `fieldval*#11` : fieldval*}: + `%~>%`(`%;%`_config{state#2015, `instr*#2130`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#25}(a_1) `CONST`_instr{numtype#437}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#27}(a_2) `CONST`_instr{numtype#439}(`I32`_numtype, i_2) `CONST`_instr{numtype#441}(`I32`_numtype, `%`_num_{i#42153}(n)) `ARRAY.COPY`_instr{typeidx#1623}(x_1, x_2)]), [`TRAP`_instr]) + -- if ((i_1!`%`_num_{i#42195}.0 + n) > |$arrayinst(z)[a_1].`FIELDS`_arrayinst{`fieldval*#11`}|) ;; ../../../../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|) + rule `array.copy-oob2`{state#2027 : state, `instr*#2142` : instr*, z : state, arrayaddr#29 : arrayaddr, a_1 : addr, numtype#443 : numtype, i_1 : num_(`I32`_numtype), arrayaddr#31 : arrayaddr, a_2 : addr, numtype#445 : numtype, i_2 : num_(`I32`_numtype), numtype#447 : numtype, i#42247 : nat, n : n, typeidx#1626 : typeidx, x_1 : idx, x_2 : idx, i#42289 : nat, `fieldval*#12` : fieldval*}: + `%~>%`(`%;%`_config{state#2027, `instr*#2142`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#29}(a_1) `CONST`_instr{numtype#443}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#31}(a_2) `CONST`_instr{numtype#445}(`I32`_numtype, i_2) `CONST`_instr{numtype#447}(`I32`_numtype, `%`_num_{i#42247}(n)) `ARRAY.COPY`_instr{typeidx#1626}(x_1, x_2)]), [`TRAP`_instr]) + -- if ((i_2!`%`_num_{i#42289}.0 + n) > |$arrayinst(z)[a_2].`FIELDS`_arrayinst{`fieldval*#12`}|) ;; ../../../../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)]), []) + rule `array.copy-zero`{state#2039 : state, `instr*#2154` : instr*, z : state, arrayaddr#33 : arrayaddr, a_1 : addr, numtype#449 : numtype, i_1 : num_(`I32`_numtype), arrayaddr#35 : arrayaddr, a_2 : addr, numtype#451 : numtype, i_2 : num_(`I32`_numtype), numtype#453 : numtype, i#42341 : nat, n : n, typeidx#1629 : typeidx, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config{state#2039, `instr*#2154`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#33}(a_1) `CONST`_instr{numtype#449}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#35}(a_2) `CONST`_instr{numtype#451}(`I32`_numtype, i_2) `CONST`_instr{numtype#453}(`I32`_numtype, `%`_num_{i#42341}(n)) `ARRAY.COPY`_instr{typeidx#1629}(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)]) + rule `array.copy-le`{state#2051 : state, `instr*#2166` : instr*, z : state, arrayaddr#37 : arrayaddr, a_1 : addr, numtype#455 : numtype, i_1 : num_(`I32`_numtype), arrayaddr#39 : arrayaddr, a_2 : addr, numtype#457 : numtype, i_2 : num_(`I32`_numtype), numtype#459 : numtype, i#42421 : nat, n : n, typeidx#1632 : typeidx, x_1 : idx, x_2 : idx, arrayaddr#41 : arrayaddr, numtype#461 : numtype, arrayaddr#43 : arrayaddr, numtype#463 : numtype, `sx?#23` : sx?, typeidx#1635 : typeidx, `sx?` : sx?, typeidx#1637 : typeidx, arrayaddr#45 : arrayaddr, numtype#465 : numtype, i#42574 : nat, i#42564 : nat, arrayaddr#47 : arrayaddr, numtype#467 : numtype, i#42610 : nat, i#42600 : nat, numtype#469 : numtype, i#42632 : nat, typeidx#1639 : typeidx, fieldtype#51 : fieldtype, `mut?#1169` : mut?, storagetype#707 : storagetype, `mut?` : mut?, zt_2 : storagetype, i#42690 : nat, i#42700 : nat}: + `%~>%`(`%;%`_config{state#2051, `instr*#2166`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#37}(a_1) `CONST`_instr{numtype#455}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#39}(a_2) `CONST`_instr{numtype#457}(`I32`_numtype, i_2) `CONST`_instr{numtype#459}(`I32`_numtype, `%`_num_{i#42421}(n)) `ARRAY.COPY`_instr{typeidx#1632}(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr{arrayaddr#41}(a_1) `CONST`_instr{numtype#461}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#43}(a_2) `CONST`_instr{numtype#463}(`I32`_numtype, i_2) `ARRAY.GET`_instr{`sx?#23`, typeidx#1635}(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr{typeidx#1637}(x_1) `REF.ARRAY_ADDR`_instr{arrayaddr#45}(a_1) `CONST`_instr{numtype#465}(`I32`_numtype, `%`_num_{i#42574}((i_1!`%`_num_{i#42564}.0 + 1))) `REF.ARRAY_ADDR`_instr{arrayaddr#47}(a_2) `CONST`_instr{numtype#467}(`I32`_numtype, `%`_num_{i#42610}((i_2!`%`_num_{i#42600}.0 + 1))) `CONST`_instr{numtype#469}(`I32`_numtype, `%`_num_{i#42632}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `ARRAY.COPY`_instr{typeidx#1639}(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))) + -- Expand: `%~~%`($type(z, x_2), `ARRAY`_comptype{fieldtype#51}(`%%`_fieldtype{`mut?#1169`, storagetype#707}(mut?{mut <- `mut?`}, zt_2))) + -- if ((i_1!`%`_num_{i#42690}.0 <= i_2!`%`_num_{i#42700}.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)]) + rule `array.copy-gt`{state#2063 : state, `instr*#2178` : instr*, z : state, arrayaddr#49 : arrayaddr, a_1 : addr, numtype#471 : numtype, i_1 : num_(`I32`_numtype), arrayaddr#51 : arrayaddr, a_2 : addr, numtype#473 : numtype, i_2 : num_(`I32`_numtype), numtype#475 : numtype, i#42752 : nat, n : n, typeidx#1642 : typeidx, x_1 : idx, x_2 : idx, arrayaddr#53 : arrayaddr, numtype#477 : numtype, i#42816 : nat, i#42806 : nat, arrayaddr#55 : arrayaddr, numtype#479 : numtype, i#42852 : nat, i#42842 : nat, `sx?#25` : sx?, typeidx#1645 : typeidx, `sx?` : sx?, typeidx#1647 : typeidx, arrayaddr#57 : arrayaddr, numtype#481 : numtype, arrayaddr#59 : arrayaddr, numtype#483 : numtype, numtype#485 : numtype, i#42963 : nat, typeidx#1649 : typeidx, fieldtype#53 : fieldtype, `mut?#1181` : mut?, storagetype#719 : storagetype, `mut?` : mut?, zt_2 : storagetype}: + `%~>%`(`%;%`_config{state#2063, `instr*#2178`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#49}(a_1) `CONST`_instr{numtype#471}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#51}(a_2) `CONST`_instr{numtype#473}(`I32`_numtype, i_2) `CONST`_instr{numtype#475}(`I32`_numtype, `%`_num_{i#42752}(n)) `ARRAY.COPY`_instr{typeidx#1642}(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr{arrayaddr#53}(a_1) `CONST`_instr{numtype#477}(`I32`_numtype, `%`_num_{i#42816}(((((i_1!`%`_num_{i#42806}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `REF.ARRAY_ADDR`_instr{arrayaddr#55}(a_2) `CONST`_instr{numtype#479}(`I32`_numtype, `%`_num_{i#42852}(((((i_2!`%`_num_{i#42842}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `ARRAY.GET`_instr{`sx?#25`, typeidx#1645}(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr{typeidx#1647}(x_1) `REF.ARRAY_ADDR`_instr{arrayaddr#57}(a_1) `CONST`_instr{numtype#481}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#59}(a_2) `CONST`_instr{numtype#483}(`I32`_numtype, i_2) `CONST`_instr{numtype#485}(`I32`_numtype, `%`_num_{i#42963}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `ARRAY.COPY`_instr{typeidx#1649}(x_1, x_2)]) -- otherwise - -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- Expand: `%~~%`($type(z, x_2), `ARRAY`_comptype{fieldtype#53}(`%%`_fieldtype{`mut?#1181`, storagetype#719}(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]) + rule `array.init_elem-null`{state#2075 : state, `instr*#2190` : instr*, z : state, heaptype#1445 : heaptype, ht : heaptype, numtype#487 : numtype, i : num_(`I32`_numtype), numtype#489 : numtype, j : num_(`I32`_numtype), numtype#491 : numtype, i#43055 : nat, n : n, typeidx#1652 : typeidx, elemidx#31 : elemidx, x : idx, y : idx}: + `%~>%`(`%;%`_config{state#2075, `instr*#2190`}(z, [`REF.NULL`_instr{heaptype#1445}(ht) `CONST`_instr{numtype#487}(`I32`_numtype, i) `CONST`_instr{numtype#489}(`I32`_numtype, j) `CONST`_instr{numtype#491}(`I32`_numtype, `%`_num_{i#43055}(n)) `ARRAY.INIT_ELEM`_instr{typeidx#1652, elemidx#31}(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|) + rule `array.init_elem-oob1`{state#2087 : state, `instr*#2202` : instr*, z : state, arrayaddr#61 : arrayaddr, a : addr, numtype#493 : numtype, i : num_(`I32`_numtype), numtype#495 : numtype, j : num_(`I32`_numtype), numtype#497 : numtype, i#43135 : nat, n : n, typeidx#1654 : typeidx, elemidx#33 : elemidx, x : idx, y : idx, i#43177 : nat, `fieldval*#13` : fieldval*}: + `%~>%`(`%;%`_config{state#2087, `instr*#2202`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#61}(a) `CONST`_instr{numtype#493}(`I32`_numtype, i) `CONST`_instr{numtype#495}(`I32`_numtype, j) `CONST`_instr{numtype#497}(`I32`_numtype, `%`_num_{i#43135}(n)) `ARRAY.INIT_ELEM`_instr{typeidx#1654, elemidx#33}(x, y)]), [`TRAP`_instr]) + -- if ((i!`%`_num_{i#43177}.0 + n) > |$arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#13`}|) ;; ../../../../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|) + rule `array.init_elem-oob2`{state#2099 : state, `instr*#2214` : instr*, z : state, arrayaddr#63 : arrayaddr, a : addr, numtype#499 : numtype, i : num_(`I32`_numtype), numtype#501 : numtype, j : num_(`I32`_numtype), numtype#503 : numtype, i#43229 : nat, n : n, typeidx#1656 : typeidx, elemidx#35 : elemidx, x : idx, y : idx, i#43271 : nat, `ref*#20` : ref*}: + `%~>%`(`%;%`_config{state#2099, `instr*#2214`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#63}(a) `CONST`_instr{numtype#499}(`I32`_numtype, i) `CONST`_instr{numtype#501}(`I32`_numtype, j) `CONST`_instr{numtype#503}(`I32`_numtype, `%`_num_{i#43229}(n)) `ARRAY.INIT_ELEM`_instr{typeidx#1656, elemidx#35}(x, y)]), [`TRAP`_instr]) + -- if ((j!`%`_num_{i#43271}.0 + n) > |$elem(z, y).`REFS`_eleminst{`ref*#20`}|) ;; ../../../../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)]), []) + rule `array.init_elem-zero`{state#2111 : state, `instr*#2226` : instr*, z : state, arrayaddr#65 : arrayaddr, a : addr, numtype#505 : numtype, i : num_(`I32`_numtype), numtype#507 : numtype, j : num_(`I32`_numtype), numtype#509 : numtype, i#43335 : nat, n : n, typeidx#1658 : typeidx, elemidx#37 : elemidx, x : idx, y : idx}: + `%~>%`(`%;%`_config{state#2111, `instr*#2226`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#65}(a) `CONST`_instr{numtype#505}(`I32`_numtype, i) `CONST`_instr{numtype#507}(`I32`_numtype, j) `CONST`_instr{numtype#509}(`I32`_numtype, `%`_num_{i#43335}(n)) `ARRAY.INIT_ELEM`_instr{typeidx#1658, elemidx#37}(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)]) + rule `array.init_elem-succ`{state#2123 : state, `instr*#2238` : instr*, z : state, arrayaddr#67 : arrayaddr, a : addr, numtype#511 : numtype, i : num_(`I32`_numtype), numtype#513 : numtype, j : num_(`I32`_numtype), numtype#515 : numtype, i#43415 : nat, n : n, typeidx#1660 : typeidx, elemidx#39 : elemidx, x : idx, y : idx, arrayaddr#69 : arrayaddr, numtype#517 : numtype, ref : ref, typeidx#1662 : typeidx, arrayaddr#71 : arrayaddr, numtype#519 : numtype, i#43505 : nat, i#43495 : nat, numtype#521 : numtype, i#43541 : nat, i#43531 : nat, numtype#523 : numtype, i#43563 : nat, typeidx#1664 : typeidx, elemidx#41 : elemidx, `ref*#21` : ref*, i#43613 : nat}: + `%~>%`(`%;%`_config{state#2123, `instr*#2238`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#67}(a) `CONST`_instr{numtype#511}(`I32`_numtype, i) `CONST`_instr{numtype#513}(`I32`_numtype, j) `CONST`_instr{numtype#515}(`I32`_numtype, `%`_num_{i#43415}(n)) `ARRAY.INIT_ELEM`_instr{typeidx#1660, elemidx#39}(x, y)]), [`REF.ARRAY_ADDR`_instr{arrayaddr#69}(a) `CONST`_instr{numtype#517}(`I32`_numtype, i) (ref : ref <: instr) `ARRAY.SET`_instr{typeidx#1662}(x) `REF.ARRAY_ADDR`_instr{arrayaddr#71}(a) `CONST`_instr{numtype#519}(`I32`_numtype, `%`_num_{i#43505}((i!`%`_num_{i#43495}.0 + 1))) `CONST`_instr{numtype#521}(`I32`_numtype, `%`_num_{i#43541}((j!`%`_num_{i#43531}.0 + 1))) `CONST`_instr{numtype#523}(`I32`_numtype, `%`_num_{i#43563}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `ARRAY.INIT_ELEM`_instr{typeidx#1664, elemidx#41}(x, y)]) -- otherwise - -- if (ref = $elem(z, y).REFS_eleminst[j!`%`_num_.0]) + -- if (ref = $elem(z, y).`REFS`_eleminst{`ref*#21`}[j!`%`_num_{i#43613}.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]) + rule `array.init_data-null`{state#2135 : state, `instr*#2250` : instr*, z : state, heaptype#1447 : heaptype, ht : heaptype, numtype#525 : numtype, i : num_(`I32`_numtype), numtype#527 : numtype, j : num_(`I32`_numtype), numtype#529 : numtype, i#43665 : nat, n : n, typeidx#1666 : typeidx, dataidx#31 : dataidx, x : idx, y : idx}: + `%~>%`(`%;%`_config{state#2135, `instr*#2250`}(z, [`REF.NULL`_instr{heaptype#1447}(ht) `CONST`_instr{numtype#525}(`I32`_numtype, i) `CONST`_instr{numtype#527}(`I32`_numtype, j) `CONST`_instr{numtype#529}(`I32`_numtype, `%`_num_{i#43665}(n)) `ARRAY.INIT_DATA`_instr{typeidx#1666, dataidx#31}(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|) + rule `array.init_data-oob1`{state#2147 : state, `instr*#2262` : instr*, z : state, arrayaddr#73 : arrayaddr, a : addr, numtype#531 : numtype, i : num_(`I32`_numtype), numtype#533 : numtype, j : num_(`I32`_numtype), numtype#535 : numtype, i#43745 : nat, n : n, typeidx#1668 : typeidx, dataidx#33 : dataidx, x : idx, y : idx, i#43787 : nat, `fieldval*#14` : fieldval*}: + `%~>%`(`%;%`_config{state#2147, `instr*#2262`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#73}(a) `CONST`_instr{numtype#531}(`I32`_numtype, i) `CONST`_instr{numtype#533}(`I32`_numtype, j) `CONST`_instr{numtype#535}(`I32`_numtype, `%`_num_{i#43745}(n)) `ARRAY.INIT_DATA`_instr{typeidx#1668, dataidx#33}(x, y)]), [`TRAP`_instr]) + -- if ((i!`%`_num_{i#43787}.0 + n) > |$arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#14`}|) ;; ../../../../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|) + rule `array.init_data-oob2`{state#2159 : state, `instr*#2274` : instr*, z : state, arrayaddr#75 : arrayaddr, a : addr, numtype#537 : numtype, i : num_(`I32`_numtype), numtype#539 : numtype, j : num_(`I32`_numtype), numtype#541 : numtype, i#43839 : nat, n : n, typeidx#1670 : typeidx, dataidx#35 : dataidx, x : idx, y : idx, fieldtype#55 : fieldtype, `mut?#1193` : mut?, storagetype#731 : storagetype, `mut?` : mut?, zt : storagetype, i#43893 : nat, `byte*#1877` : byte*}: + `%~>%`(`%;%`_config{state#2159, `instr*#2274`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#75}(a) `CONST`_instr{numtype#537}(`I32`_numtype, i) `CONST`_instr{numtype#539}(`I32`_numtype, j) `CONST`_instr{numtype#541}(`I32`_numtype, `%`_num_{i#43839}(n)) `ARRAY.INIT_DATA`_instr{typeidx#1670, dataidx#35}(x, y)]), [`TRAP`_instr]) + -- Expand: `%~~%`($type(z, x), `ARRAY`_comptype{fieldtype#55}(`%%`_fieldtype{`mut?#1193`, storagetype#731}(mut?{mut <- `mut?`}, zt))) + -- if ((j!`%`_num_{i#43893}.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).`BYTES`_datainst{`byte*#1877`}|) ;; ../../../../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)]), []) + rule `array.init_data-zero`{state#2171 : state, `instr*#2286` : instr*, z : state, arrayaddr#77 : arrayaddr, a : addr, numtype#543 : numtype, i : num_(`I32`_numtype), numtype#545 : numtype, j : num_(`I32`_numtype), numtype#547 : numtype, i#43957 : nat, n : n, typeidx#1672 : typeidx, dataidx#37 : dataidx, x : idx, y : idx}: + `%~>%`(`%;%`_config{state#2171, `instr*#2286`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#77}(a) `CONST`_instr{numtype#543}(`I32`_numtype, i) `CONST`_instr{numtype#545}(`I32`_numtype, j) `CONST`_instr{numtype#547}(`I32`_numtype, `%`_num_{i#43957}(n)) `ARRAY.INIT_DATA`_instr{typeidx#1672, dataidx#37}(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)]) + rule `array.init_data-num`{state#2183 : state, `instr*#2298` : instr*, z : state, arrayaddr#79 : arrayaddr, a : addr, numtype#549 : numtype, i : num_(`I32`_numtype), numtype#551 : numtype, j : num_(`I32`_numtype), numtype#553 : numtype, i#44037 : nat, n : n, typeidx#1674 : typeidx, dataidx#39 : dataidx, x : idx, y : idx, arrayaddr#81 : arrayaddr, numtype#555 : numtype, zt : storagetype, c : lit_(zt), typeidx#1676 : typeidx, arrayaddr#83 : arrayaddr, numtype#557 : numtype, i#44127 : nat, i#44117 : nat, numtype#559 : numtype, i#44163 : nat, i#44153 : nat, numtype#561 : numtype, i#44185 : nat, typeidx#1678 : typeidx, dataidx#41 : dataidx, fieldtype#57 : fieldtype, `mut?#1205` : mut?, storagetype#743 : storagetype, `mut?` : mut?, `byte*#1878` : byte*, i#44247 : nat}: + `%~>%`(`%;%`_config{state#2183, `instr*#2298`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#79}(a) `CONST`_instr{numtype#549}(`I32`_numtype, i) `CONST`_instr{numtype#551}(`I32`_numtype, j) `CONST`_instr{numtype#553}(`I32`_numtype, `%`_num_{i#44037}(n)) `ARRAY.INIT_DATA`_instr{typeidx#1674, dataidx#39}(x, y)]), [`REF.ARRAY_ADDR`_instr{arrayaddr#81}(a) `CONST`_instr{numtype#555}(`I32`_numtype, i) $const($cunpack(zt), $cunpacknum_(zt, c)) `ARRAY.SET`_instr{typeidx#1676}(x) `REF.ARRAY_ADDR`_instr{arrayaddr#83}(a) `CONST`_instr{numtype#557}(`I32`_numtype, `%`_num_{i#44127}((i!`%`_num_{i#44117}.0 + 1))) `CONST`_instr{numtype#559}(`I32`_numtype, `%`_num_{i#44163}((j!`%`_num_{i#44153}.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))) `CONST`_instr{numtype#561}(`I32`_numtype, `%`_num_{i#44185}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `ARRAY.INIT_DATA`_instr{typeidx#1678, dataidx#41}(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)]) + -- Expand: `%~~%`($type(z, x), `ARRAY`_comptype{fieldtype#57}(`%%`_fieldtype{`mut?#1205`, storagetype#743}(mut?{mut <- `mut?`}, zt))) + -- if ($zbytes_(zt, c) = $data(z, y).`BYTES`_datainst{`byte*#1878`}[j!`%`_num_{i#44247}.0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rec { @@ -6878,159 +118437,159 @@ 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'*`})) + rule pure{state#11 : state, `instr*#27` : instr*, z : state, `instr*` : instr*, state#23 : state, `instr*#39` : instr*, `instr'*` : instr*}: + `%~>%`(`%;%`_config{state#11, `instr*#27`}(z, instr*{instr <- `instr*`}), `%;%`_config{state#23, `instr*#39`}(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'*`}) + rule read{state#35 : state, `instr*#51` : instr*, z : state, `instr*` : instr*, state#47 : state, `instr*#63` : instr*, `instr'*` : instr*, state#59 : state, `instr*#75` : instr*}: + `%~>%`(`%;%`_config{state#35, `instr*#51`}(z, instr*{instr <- `instr*`}), `%;%`_config{state#47, `instr*#63`}(z, instr'*{instr' <- `instr'*`})) + -- Step_read: `%~>%`(`%;%`_config{state#59, `instr*#75`}(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'*`})) + rule `ctxt-instrs`{state#167 : state, `instr*#183` : instr*, z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, state#179 : state, `instr*#195` : instr*, z' : state, `instr'*` : instr*, state#191 : state, `instr*#207` : instr*, state#203 : state, `instr*#219` : instr*}: + `%~>%`(`%;%`_config{state#167, `instr*#183`}(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config{state#179, `instr*#195`}(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- Step: `%~>%`(`%;%`_config{state#191, `instr*#207`}(z, instr*{instr <- `instr*`}), `%;%`_config{state#203, `instr*#219`}(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'*`})) + rule `ctxt-label`{state#215 : state, `instr*#231` : instr*, z : state, n#1127 : n, `instr*#233` : instr*, n : n, `instr_0*` : instr*, `instr*` : instr*, state#227 : state, `instr*#246` : instr*, z' : state, n#1129 : n, `instr*#248` : instr*, `instr'*` : instr*, state#239 : state, `instr*#261` : instr*, state#251 : state, `instr*#273` : instr*}: + `%~>%`(`%;%`_config{state#215, `instr*#231`}(z, [`LABEL_%{%}%`_instr{n#1127, `instr*#233`}(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config{state#227, `instr*#246`}(z', [`LABEL_%{%}%`_instr{n#1129, `instr*#248`}(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) + -- Step: `%~>%`(`%;%`_config{state#239, `instr*#261`}(z, instr*{instr <- `instr*`}), `%;%`_config{state#251, `instr*#273`}(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'*`})) + rule `ctxt-frame`{state#263 : state, `instr*#285` : instr*, store#725 : store, frame#725 : frame, s : store, f : frame, n#1131 : n, frame#727 : frame, `instr*#287` : instr*, n : n, f' : frame, `instr*` : instr*, state#275 : state, `instr*#299` : instr*, store#737 : store, frame#739 : frame, s' : store, n#1133 : n, frame#741 : frame, `instr*#301` : instr*, f'' : frame, `instr'*` : instr*, state#287 : state, `instr*#313` : instr*, store#749 : store, frame#753 : frame, state#299 : state, `instr*#325` : instr*, store#761 : store, frame#765 : frame}: + `%~>%`(`%;%`_config{state#263, `instr*#285`}(`%;%`_state{store#725, frame#725}(s, f), [`FRAME_%{%}%`_instr{n#1131, frame#727, `instr*#287`}(n, f', instr*{instr <- `instr*`})]), `%;%`_config{state#275, `instr*#299`}(`%;%`_state{store#737, frame#739}(s', f), [`FRAME_%{%}%`_instr{n#1133, frame#741, `instr*#301`}(n, f'', instr'*{instr' <- `instr'*`})])) + -- Step: `%~>%`(`%;%`_config{state#287, `instr*#313`}(`%;%`_state{store#749, frame#753}(s, f'), instr*{instr <- `instr*`}), `%;%`_config{state#299, `instr*#325`}(`%;%`_state{store#761, frame#765}(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([]))) + rule throw{state#479 : state, `instr*#561` : instr*, z : state, n : n, `val*` : val*, tagidx#11 : tagidx, x : idx, state#491 : state, `instr*#573` : instr*, exn : exninst, exnaddr#3 : exnaddr, a : addr, tagtype#180 : tagtype, resulttype#3003 : resulttype, `X*#12555` : valtype*, `t*` : valtype*, `X*#12578` : valtype*, tagaddr#5 : tagaddr, i#32555 : nat, `val*#1` : val*}: + `%~>%`(`%;%`_config{state#479, `instr*#561`}(z, (val : val <: instr)^n{val <- `val*`} ++ [`THROW`_instr{tagidx#11}(x)]), `%;%`_config{state#491, `instr*#573`}($add_exninst(z, [exn]), [`REF.EXN_ADDR`_instr{exnaddr#3}(a) `THROW_REF`_instr])) + -- Expand: `%~~%`($as_deftype($tag(z, x).`TYPE`_taginst{tagtype#180}), `FUNC%->%`_comptype{resulttype#3003}(`%`_resulttype{`X*#12555`}(t^n{t <- `t*`}), `%`_resulttype{`X*#12578`}([]))) -- if (a = |$exninst(z)|) - -- if (exn = {TAG $tagaddr(z)[x!`%`_idx.0], FIELDS val^n{val <- `val*`}}) + -- if (exn = {`TAG`{tagaddr#5} $tagaddr(z)[x!`%`_idx{i#32555}.0], `FIELDS`{`val*#1`} 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), [])) + rule local.set{state#647 : state, `instr*#762` : instr*, z : state, val : val, localidx#15 : localidx, x : idx, state#659 : state, `instr*#774` : instr*}: + `%~>%`(`%;%`_config{state#647, `instr*#762`}(z, [(val : val <: instr) `LOCAL.SET`_instr{localidx#15}(x)]), `%;%`_config{state#659, `instr*#774`}($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), [])) + rule global.set{state#683 : state, `instr*#798` : instr*, z : state, val : val, globalidx#19 : globalidx, x : idx, state#695 : state, `instr*#810` : instr*}: + `%~>%`(`%;%`_config{state#683, `instr*#798`}(z, [(val : val <: instr) `GLOBAL.SET`_instr{globalidx#19}(x)]), `%;%`_config{state#695, `instr*#810`}($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|) + rule `table.set-oob`{state#731 : state, `instr*#846` : instr*, z : state, numtype#79 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), ref : ref, tableidx#61 : tableidx, x : idx, state#743 : state, `instr*#858` : instr*, i#33027 : nat, `ref*#8` : ref*}: + `%~>%`(`%;%`_config{state#731, `instr*#846`}(z, [`CONST`_instr{numtype#79}((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr{tableidx#61}(x)]), `%;%`_config{state#743, `instr*#858`}(z, [`TRAP`_instr])) + -- if (i!`%`_num_{i#33027}.0 >= |$table(z, x).`REFS`_tableinst{`ref*#8`}|) ;; ../../../../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|) + rule `table.set-val`{state#755 : state, `instr*#870` : instr*, z : state, numtype#81 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), ref : ref, tableidx#63 : tableidx, x : idx, state#767 : state, `instr*#882` : instr*, i#33077 : nat, i#33103 : nat, `ref*#9` : ref*}: + `%~>%`(`%;%`_config{state#755, `instr*#870`}(z, [`CONST`_instr{numtype#81}((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr{tableidx#63}(x)]), `%;%`_config{state#767, `instr*#882`}($with_table(z, x, i!`%`_num_{i#33077}.0, ref), [])) + -- if (i!`%`_num_{i#33103}.0 < |$table(z, x).`REFS`_tableinst{`ref*#9`}|) ;; ../../../../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|))])) + rule `table.grow-succeed`{state#791 : state, `instr*#906` : instr*, z : state, ref : ref, numtype#85 : numtype, at : addrtype, i#33189 : nat, n : n, tableidx#67 : tableidx, x : idx, state#803 : state, `instr*#918` : instr*, ti : tableinst, numtype#87 : numtype, i#33249 : nat, `ref*#11` : ref*}: + `%~>%`(`%;%`_config{state#791, `instr*#906`}(z, [(ref : ref <: instr) `CONST`_instr{numtype#85}((at : addrtype <: numtype), `%`_num_{i#33189}(n)) `TABLE.GROW`_instr{tableidx#67}(x)]), `%;%`_config{state#803, `instr*#918`}($with_tableinst(z, x, ti), [`CONST`_instr{numtype#87}((at : addrtype <: numtype), `%`_num_{i#33249}(|$table(z, x).`REFS`_tableinst{`ref*#11`}|))])) -- 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))))])) + rule `table.grow-fail`{state#815 : state, `instr*#930` : instr*, z : state, ref : ref, numtype#89 : numtype, at : addrtype, i#33285 : nat, n : n, tableidx#69 : tableidx, x : idx, state#827 : state, `instr*#942` : instr*, numtype#91 : numtype, i#33321 : nat}: + `%~>%`(`%;%`_config{state#815, `instr*#930`}(z, [(ref : ref <: instr) `CONST`_instr{numtype#89}((at : addrtype <: numtype), `%`_num_{i#33285}(n)) `TABLE.GROW`_instr{tableidx#69}(x)]), `%;%`_config{state#827, `instr*#942`}(z, [`CONST`_instr{numtype#91}((at : addrtype <: numtype), `%`_num_{i#33321}($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, []), [])) + rule elem.drop{state#959 : state, `instr*#1074` : instr*, z : state, elemidx#25 : elemidx, x : idx, state#971 : state, `instr*#1086` : instr*}: + `%~>%`(`%;%`_config{state#959, `instr*#1074`}(z, [`ELEM.DROP`_instr{elemidx#25}(x)]), `%;%`_config{state#971, `instr*#1086`}($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|) + rule `store-num-oob`{state#1151 : state, `instr*#1266` : instr*, z : state, numtype#217 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), numtype#219 : numtype, nt : numtype, c : num_(nt), `numtype?#11` : numtype?, memidx#95 : memidx, memarg#63 : memarg, x : idx, ao : memarg, state#1163 : state, `instr*#1278` : instr*, i#37014 : nat, u64#419 : u64, i#37024 : nat, `byte*#1863` : byte*}: + `%~>%`(`%;%`_config{state#1151, `instr*#1266`}(z, [`CONST`_instr{numtype#217}((at : addrtype <: numtype), i) `CONST`_instr{numtype#219}(nt, c) `STORE`_instr{`numtype?#11`, memidx#95, memarg#63}(nt, ?(), x, ao)]), `%;%`_config{state#1163, `instr*#1278`}(z, [`TRAP`_instr])) + -- if (((i!`%`_num_{i#37014}.0 + ao.`OFFSET`_memarg{u64#419}!`%`_u64{i#37024}.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst{`byte*#1863`}|) ;; ../../../../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*`}), [])) + rule `store-num-val`{state#1175 : state, `instr*#1290` : instr*, z : state, numtype#222 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), numtype#224 : numtype, nt : numtype, c : num_(nt), `numtype?#12` : numtype?, memidx#97 : memidx, memarg#65 : memarg, x : idx, ao : memarg, state#1187 : state, `instr*#1302` : instr*, i#37094 : nat, u64#420 : u64, i#37104 : nat, `b*` : byte*}: + `%~>%`(`%;%`_config{state#1175, `instr*#1290`}(z, [`CONST`_instr{numtype#222}((at : addrtype <: numtype), i) `CONST`_instr{numtype#224}(nt, c) `STORE`_instr{`numtype?#12`, memidx#97, memarg#65}(nt, ?(), x, ao)]), `%;%`_config{state#1187, `instr*#1302`}($with_mem(z, x, (i!`%`_num_{i#37094}.0 + ao.`OFFSET`_memarg{u64#420}!`%`_u64{i#37104}.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 : Inn <: numtype)), n : n, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : Inn <: numtype), c) STORE_instr((Inn : Inn <: 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|) + rule `store-pack-oob`{state#1199 : state, `instr*#1314` : instr*, z : state, numtype#227 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), numtype#229 : numtype, Inn : Inn, c : num_((Inn : Inn <: numtype)), `numtype?#13` : numtype?, memidx#99 : memidx, memarg#67 : memarg, sz#446 : sz, i#37199 : nat, i#37200 : nat, n : n, x : idx, ao : memarg, state#1211 : state, `instr*#1326` : instr*, i#37232 : nat, u64#421 : u64, i#37242 : nat, `byte*#1864` : byte*}: + `%~>%`(`%;%`_config{state#1199, `instr*#1314`}(z, [`CONST`_instr{numtype#227}((at : addrtype <: numtype), i) `CONST`_instr{numtype#229}((Inn : Inn <: numtype), c) `STORE`_instr{`numtype?#13`, memidx#99, memarg#67}((Inn : Inn <: numtype), ?(`%`_storeop_{sz#446, i#37199}(`%`_sz{i#37200}(n))), x, ao)]), `%;%`_config{state#1211, `instr*#1326`}(z, [`TRAP`_instr])) + -- if (((i!`%`_num_{i#37232}.0 + ao.`OFFSET`_memarg{u64#421}!`%`_u64{i#37242}.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst{`byte*#1864`}|) ;; ../../../../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 : Inn <: numtype)), n : n, x : idx, ao : memarg, `b*` : byte*}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : Inn <: numtype), c) STORE_instr((Inn : Inn <: 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*`}), [])) + rule `store-pack-val`{state#1223 : state, `instr*#1338` : instr*, z : state, numtype#232 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), numtype#234 : numtype, Inn : Inn, c : num_((Inn : Inn <: numtype)), `numtype?#14` : numtype?, memidx#101 : memidx, memarg#69 : memarg, sz#448 : sz, i#37325 : nat, i#37326 : nat, n : n, x : idx, ao : memarg, state#1235 : state, `instr*#1350` : instr*, i#37370 : nat, u64#422 : u64, i#37380 : nat, `b*` : byte*}: + `%~>%`(`%;%`_config{state#1223, `instr*#1338`}(z, [`CONST`_instr{numtype#232}((at : addrtype <: numtype), i) `CONST`_instr{numtype#234}((Inn : Inn <: numtype), c) `STORE`_instr{`numtype?#14`, memidx#101, memarg#69}((Inn : Inn <: numtype), ?(`%`_storeop_{sz#448, i#37325}(`%`_sz{i#37326}(n))), x, ao)]), `%;%`_config{state#1235, `instr*#1350`}($with_mem(z, x, (i!`%`_num_{i#37370}.0 + ao.`OFFSET`_memarg{u64#422}!`%`_u64{i#37380}.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size((Inn : Inn <: 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|) + rule `vstore-oob`{state#1247 : state, `instr*#1362` : instr*, z : state, numtype#237 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), vectype#88 : vectype, c : vec_(`V128`_Vnn), vectype#90 : vectype, memidx#103 : memidx, memarg#71 : memarg, x : idx, ao : memarg, state#1259 : state, `instr*#1374` : instr*, i#37486 : nat, u64#423 : u64, i#37496 : nat, `byte*#1865` : byte*}: + `%~>%`(`%;%`_config{state#1247, `instr*#1362`}(z, [`CONST`_instr{numtype#237}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#88}(`V128`_vectype, c) `VSTORE`_instr{vectype#90, memidx#103, memarg#71}(`V128`_vectype, x, ao)]), `%;%`_config{state#1259, `instr*#1374`}(z, [`TRAP`_instr])) + -- if (((i!`%`_num_{i#37486}.0 + ao.`OFFSET`_memarg{u64#423}!`%`_u64{i#37496}.0) + ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst{`byte*#1865`}|) ;; ../../../../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)) + rule `vstore-val`{state#1271 : state, `instr*#1386` : instr*, z : state, numtype#239 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), vectype#92 : vectype, c : vec_(`V128`_Vnn), vectype#94 : vectype, memidx#105 : memidx, memarg#73 : memarg, x : idx, ao : memarg, state#1283 : state, `instr*#1398` : instr*, i#37580 : nat, u64#424 : u64, i#37590 : nat, `b*` : byte*}: + `%~>%`(`%;%`_config{state#1271, `instr*#1386`}(z, [`CONST`_instr{numtype#239}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#92}(`V128`_vectype, c) `VSTORE`_instr{vectype#94, memidx#105, memarg#73}(`V128`_vectype, x, ao)]), `%;%`_config{state#1283, `instr*#1398`}($with_mem(z, x, (i!`%`_num_{i#37580}.0 + ao.`OFFSET`_memarg{u64#424}!`%`_u64{i#37590}.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|) + rule `vstore_lane-oob`{state#1295 : state, `instr*#1410` : instr*, z : state, numtype#241 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), vectype#96 : vectype, c : vec_(`V128`_Vnn), vectype#98 : vectype, sz#450 : sz, memidx#107 : memidx, memarg#75 : memarg, laneidx#21 : laneidx, i#37660 : nat, N : N, x : idx, ao : memarg, j : laneidx, state#1307 : state, `instr*#1422` : instr*, i#37706 : nat, u64#425 : u64, i#37716 : nat, `byte*#1866` : byte*}: + `%~>%`(`%;%`_config{state#1295, `instr*#1410`}(z, [`CONST`_instr{numtype#241}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#96}(`V128`_vectype, c) `VSTORE_LANE`_instr{vectype#98, sz#450, memidx#107, memarg#75, laneidx#21}(`V128`_vectype, `%`_sz{i#37660}(N), x, ao, j)]), `%;%`_config{state#1307, `instr*#1422`}(z, [`TRAP`_instr])) + -- if (((i!`%`_num_{i#37706}.0 + ao.`OFFSET`_memarg{u64#425}!`%`_u64{i#37716}.0) + N) > |$mem(z, x).`BYTES`_meminst{`byte*#1866`}|) ;; ../../../../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*`}), [])) + rule `vstore_lane-val`{state#1319 : state, `instr*#1434` : instr*, z : state, numtype#243 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), vectype#100 : vectype, c : vec_(`V128`_Vnn), vectype#102 : vectype, sz#452 : sz, memidx#109 : memidx, memarg#77 : memarg, laneidx#23 : laneidx, i#37764 : nat, N : N, x : idx, ao : memarg, j : laneidx, state#1331 : state, `instr*#1446` : instr*, i#37822 : nat, u64#426 : u64, i#37832 : nat, `b*` : byte*, Jnn : Jnn, M : M, i#37907 : nat, lanetype#7403 : lanetype, dim#7403 : dim, i#37855 : nat, i#37862 : nat, i#37882 : nat, i#37906 : nat}: + `%~>%`(`%;%`_config{state#1319, `instr*#1434`}(z, [`CONST`_instr{numtype#243}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#100}(`V128`_vectype, c) `VSTORE_LANE`_instr{vectype#102, sz#452, memidx#109, memarg#77, laneidx#23}(`V128`_vectype, `%`_sz{i#37764}(N), x, ao, j)]), `%;%`_config{state#1331, `instr*#1446`}($with_mem(z, x, (i!`%`_num_{i#37822}.0 + ao.`OFFSET`_memarg{u64#426}!`%`_u64{i#37832}.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))) + -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN{i#37907}($lanes_(`%X%`_shape{lanetype#7403, dim#7403, i#37855}((Jnn : Jnn <: lanetype), `%`_dim{i#37862}(M)), c)[j!`%`_laneidx{i#37882}.0]!`%`_lane_{i#37906}.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)))])) + rule `memory.grow-succeed`{state#1355 : state, `instr*#1470` : instr*, z : state, numtype#247 : numtype, at : addrtype, i#38006 : nat, n : n, memidx#113 : memidx, x : idx, state#1367 : state, `instr*#1482` : instr*, mi : meminst, numtype#249 : numtype, i#38066 : nat, `byte*#1868` : byte*}: + `%~>%`(`%;%`_config{state#1355, `instr*#1470`}(z, [`CONST`_instr{numtype#247}((at : addrtype <: numtype), `%`_num_{i#38006}(n)) `MEMORY.GROW`_instr{memidx#113}(x)]), `%;%`_config{state#1367, `instr*#1482`}($with_meminst(z, x, mi), [`CONST`_instr{numtype#249}((at : addrtype <: numtype), `%`_num_{i#38066}((((|$mem(z, x).`BYTES`_meminst{`byte*#1868`}| : 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))))])) + rule `memory.grow-fail`{state#1379 : state, `instr*#1494` : instr*, z : state, numtype#251 : numtype, at : addrtype, i#38102 : nat, n : n, memidx#115 : memidx, x : idx, state#1391 : state, `instr*#1506` : instr*, numtype#253 : numtype, i#38138 : nat}: + `%~>%`(`%;%`_config{state#1379, `instr*#1494`}(z, [`CONST`_instr{numtype#251}((at : addrtype <: numtype), `%`_num_{i#38102}(n)) `MEMORY.GROW`_instr{memidx#115}(x)]), `%;%`_config{state#1391, `instr*#1506`}(z, [`CONST`_instr{numtype#253}((at : addrtype <: numtype), `%`_num_{i#38138}($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, []), [])) + rule data.drop{state#1523 : state, `instr*#1638` : instr*, z : state, dataidx#25 : dataidx, x : idx, state#1535 : state, `instr*#1650` : instr*}: + `%~>%`(`%;%`_config{state#1523, `instr*#1638`}(z, [`DATA.DROP`_instr{dataidx#25}(x)]), `%;%`_config{state#1535, `instr*#1650`}($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*`}))) + rule struct.new{state#1619 : state, `instr*#1734` : instr*, z : state, n : n, `val*` : val*, typeidx#1557 : typeidx, x : idx, state#1631 : state, `instr*#1746` : instr*, si : structinst, structaddr#3 : structaddr, a : addr, `X*#12668` : fieldtype*, `mut?*` : mut?*, `mut?#1031*` : mut?*, `storagetype#569*` : storagetype*, `zt*` : storagetype*, deftype#9 : deftype, `fieldval*#3` : fieldval*}: + `%~>%`(`%;%`_config{state#1619, `instr*#1734`}(z, (val : val <: instr)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr{typeidx#1557}(x)]), `%;%`_config{state#1631, `instr*#1746`}($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr{structaddr#3}(a)])) + -- Expand: `%~~%`($type(z, x), `STRUCT`_comptype(`%`_list{`X*#12668`}(`%%`_fieldtype{`mut?#1031`, storagetype#569}(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, `mut?#1031` <- `mut?#1031*`, storagetype#569 <- `storagetype#569*`, zt <- `zt*`}))) -- if (a = |$structinst(z)|) - -- if (si = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) + -- if (si = {`TYPE`{deftype#9} $type(z, x), `FIELDS`{`fieldval*#3`} $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])) + rule `struct.set-null`{state#1679 : state, `instr*#1794` : instr*, z : state, heaptype#1431 : heaptype, ht : heaptype, val : val, typeidx#1567 : typeidx, u32#21 : u32, x : idx, i : u32, state#1691 : state, `instr*#1806` : instr*}: + `%~>%`(`%;%`_config{state#1679, `instr*#1794`}(z, [`REF.NULL`_instr{heaptype#1431}(ht) (val : val <: instr) `STRUCT.SET`_instr{typeidx#1567, u32#21}(x, i)]), `%;%`_config{state#1691, `instr*#1806`}(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*`}))) + rule `struct.set-struct`{state#1703 : state, `instr*#1818` : instr*, z : state, structaddr#7 : structaddr, a : addr, val : val, typeidx#1569 : typeidx, u32#23 : u32, x : idx, i : u32, state#1715 : state, `instr*#1830` : instr*, i#40466 : nat, `zt*` : storagetype*, i#40476 : nat, `X*#12713` : fieldtype*, `mut?*` : mut?*, `mut?#1085*` : mut?*, `storagetype#623*` : storagetype*}: + `%~>%`(`%;%`_config{state#1703, `instr*#1818`}(z, [`REF.STRUCT_ADDR`_instr{structaddr#7}(a) (val : val <: instr) `STRUCT.SET`_instr{typeidx#1569, u32#23}(x, i)]), `%;%`_config{state#1715, `instr*#1830`}($with_struct(z, a, i!`%`_u32{i#40466}.0, $packfield_(zt*{zt <- `zt*`}[i!`%`_u32{i#40476}.0], val)), [])) + -- Expand: `%~~%`($type(z, x), `STRUCT`_comptype(`%`_list{`X*#12713`}(`%%`_fieldtype{`mut?#1085`, storagetype#623}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#1085` <- `mut?#1085*`, storagetype#623 <- `storagetype#623*`, 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*`}})) + rule array.new_fixed{state#1739 : state, `instr*#1854` : instr*, z : state, n : n, `val*` : val*, typeidx#1579 : typeidx, u32#29 : u32, x : idx, i#40690 : nat, state#1751 : state, `instr*#1866` : instr*, ai : arrayinst, arrayaddr#3 : arrayaddr, a : addr, fieldtype#41 : fieldtype, `mut?#1109` : mut?, storagetype#647 : storagetype, `mut?` : mut?, zt : storagetype, deftype#10 : deftype, `fieldval*#5` : fieldval*}: + `%~>%`(`%;%`_config{state#1739, `instr*#1854`}(z, (val : val <: instr)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr{typeidx#1579, u32#29}(x, `%`_u32{i#40690}(n))]), `%;%`_config{state#1751, `instr*#1866`}($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr{arrayaddr#3}(a)])) + -- Expand: `%~~%`($type(z, x), `ARRAY`_comptype{fieldtype#41}(`%%`_fieldtype{`mut?#1109`, storagetype#647}(mut?{mut <- `mut?`}, zt))) + -- if ((a = |$arrayinst(z)|) /\ (ai = {`TYPE`{deftype#10} $type(z, x), `FIELDS`{`fieldval*#5`} $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])) + rule `array.set-null`{state#1847 : state, `instr*#1962` : instr*, z : state, heaptype#1435 : heaptype, ht : heaptype, numtype#395 : numtype, i : num_(`I32`_numtype), val : val, typeidx#1599 : typeidx, x : idx, state#1859 : state, `instr*#1974` : instr*}: + `%~>%`(`%;%`_config{state#1847, `instr*#1962`}(z, [`REF.NULL`_instr{heaptype#1435}(ht) `CONST`_instr{numtype#395}(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr{typeidx#1599}(x)]), `%;%`_config{state#1859, `instr*#1974`}(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|) + rule `array.set-oob`{state#1871 : state, `instr*#1986` : instr*, z : state, arrayaddr#9 : arrayaddr, a : addr, numtype#397 : numtype, i : num_(`I32`_numtype), val : val, typeidx#1601 : typeidx, x : idx, state#1883 : state, `instr*#1998` : instr*, i#41549 : nat, `fieldval*#8` : fieldval*}: + `%~>%`(`%;%`_config{state#1871, `instr*#1986`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#9}(a) `CONST`_instr{numtype#397}(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr{typeidx#1601}(x)]), `%;%`_config{state#1883, `instr*#1998`}(z, [`TRAP`_instr])) + -- if (i!`%`_num_{i#41549}.0 >= |$arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#8`}|) ;; ../../../../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))) + rule `array.set-array`{state#1895 : state, `instr*#2010` : instr*, z : state, arrayaddr#11 : arrayaddr, a : addr, numtype#399 : numtype, i : num_(`I32`_numtype), val : val, typeidx#1603 : typeidx, x : idx, state#1907 : state, `instr*#2022` : instr*, i#41587 : nat, zt : storagetype, fieldtype#49 : fieldtype, `mut?#1157` : mut?, storagetype#695 : storagetype, `mut?` : mut?}: + `%~>%`(`%;%`_config{state#1895, `instr*#2010`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#11}(a) `CONST`_instr{numtype#399}(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr{typeidx#1603}(x)]), `%;%`_config{state#1907, `instr*#2022`}($with_array(z, a, i!`%`_num_{i#41587}.0, $packfield_(zt, val)), [])) + -- Expand: `%~~%`($type(z, x), `ARRAY`_comptype{fieldtype#49}(`%%`_fieldtype{`mut?#1157`, storagetype#695}(mut?{mut <- `mut?`}, zt))) } ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -7039,22 +118598,22 @@ 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*`})) + rule refl{state#71 : state, `instr*#87` : instr*, z : state, `instr*` : instr*, state#83 : state, `instr*#99` : instr*}: + `%~>*%`(`%;%`_config{state#71, `instr*#87`}(z, instr*{instr <- `instr*`}), `%;%`_config{state#83, `instr*#99`}(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''*`})) + rule trans{state#95 : state, `instr*#111` : instr*, z : state, `instr*` : instr*, state#107 : state, `instr*#123` : instr*, z'' : state, `instr''*` : instr*, state#119 : state, `instr*#135` : instr*, state#131 : state, `instr*#147` : instr*, z' : state, `instr'*` : instr*, state#143 : state, `instr*#159` : instr*, state#155 : state, `instr*#171` : instr*}: + `%~>*%`(`%;%`_config{state#95, `instr*#111`}(z, instr*{instr <- `instr*`}), `%;%`_config{state#107, `instr*#123`}(z'', instr''*{instr'' <- `instr''*`})) + -- Step: `%~>%`(`%;%`_config{state#119, `instr*#135`}(z, instr*{instr <- `instr*`}), `%;%`_config{state#131, `instr*#147`}(z', instr'*{instr' <- `instr'*`})) + -- Steps: `%~>*%`(`%;%`_config{state#143, `instr*#159`}(z', instr'*{instr' <- `instr'*`}), `%;%`_config{state#155, `instr*#171`}(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*}: + rule _{z : state, `instr*` : instr*, z' : state, `val*` : val*, state#2195 : state, `instr*#2310` : instr*, state#2207 : state, `instr*#2322` : instr*}: `%;%~>*%;%`(z, instr*{instr <- `instr*`}, z', val*{val <- `val*`}) - -- Steps: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`})) + -- Steps: `%~>*%`(`%;%`_config{state#2195, `instr*#2310`}(z, instr*{instr <- `instr*`}), `%;%`_config{state#2207, `instr*#2322`}(z', (val : val <: instr)*{val <- `val*`})) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -7064,18 +118623,18 @@ 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*`} + def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype#1449 : rectype, rectype : rectype, x : idx, i#46777 : nat}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} -- if (deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`})) - -- if (type = TYPE_type(rectype)) + -- if (type = `TYPE`_type{rectype#1449}(rectype)) -- if (deftype*{deftype <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), (deftype' : deftype <: typeuse)*{deftype' <- `deftype'*`})) - -- if (x!`%`_idx.0 = |deftype'*{deftype' <- `deftype'*`}|) + -- if (x!`%`_idx{i#46777}.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}) + def $alloctag{s : store, tagtype : tagtype, `taginst*#5` : taginst*, taginst : taginst, `globalinst*#6` : globalinst*, `meminst*#7` : meminst*, `tableinst*#7` : tableinst*, `funcinst*#6` : funcinst*, `datainst*#5` : datainst*, `eleminst*#5` : eleminst*, `structinst*#6` : structinst*, `arrayinst*#6` : arrayinst*, `exninst*#5` : exninst*, `taginst*#6` : taginst*, tagtype#181 : tagtype}(s, tagtype) = (s +++ {`TAGS`{`taginst*#5`} [taginst], `GLOBALS`{`globalinst*#6`} [], `MEMS`{`meminst*#7`} [], `TABLES`{`tableinst*#7`} [], `FUNCS`{`funcinst*#6`} [], `DATAS`{`datainst*#5`} [], `ELEMS`{`eleminst*#5`} [], `STRUCTS`{`structinst*#6`} [], `ARRAYS`{`arrayinst*#6`} [], `EXNS`{`exninst*#5`} []}, |s.`TAGS`_store{`taginst*#6`}|) + -- if (taginst = {`TYPE`{tagtype#181} tagtype}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -7093,8 +118652,8 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) ;; ../../../../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}) + def $allocglobal{s : store, globaltype : globaltype, val : val, `taginst*#7` : taginst*, `globalinst*#7` : globalinst*, globalinst : globalinst, `meminst*#8` : meminst*, `tableinst*#8` : tableinst*, `funcinst*#7` : funcinst*, `datainst*#6` : datainst*, `eleminst*#6` : eleminst*, `structinst*#7` : structinst*, `arrayinst*#7` : arrayinst*, `exninst*#6` : exninst*, `globalinst*#8` : globalinst*, globaltype#2088 : globaltype, val#3 : val}(s, globaltype, val) = (s +++ {`TAGS`{`taginst*#7`} [], `GLOBALS`{`globalinst*#7`} [globalinst], `MEMS`{`meminst*#8`} [], `TABLES`{`tableinst*#8`} [], `FUNCS`{`funcinst*#7`} [], `DATAS`{`datainst*#6`} [], `ELEMS`{`eleminst*#6`} [], `STRUCTS`{`structinst*#7`} [], `ARRAYS`{`arrayinst*#7`} [], `EXNS`{`exninst*#6`} []}, |s.`GLOBALS`_store{`globalinst*#8`}|) + -- if (globalinst = {`TYPE`{globaltype#2088} globaltype, `VALUE`{val#3} val}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -7112,8 +118671,8 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) ;; ../../../../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)){}}) + def $allocmem{s : store, addrtype#1147 : addrtype, limits#1147 : limits, at : addrtype, u64#443 : u64, `u64?#419` : u64?, i : u64, `j?` : u64?, `taginst*#8` : taginst*, `globalinst*#9` : globalinst*, `meminst*#9` : meminst*, meminst : meminst, `tableinst*#9` : tableinst*, `funcinst*#8` : funcinst*, `datainst*#7` : datainst*, `eleminst*#7` : eleminst*, `structinst*#8` : structinst*, `arrayinst*#8` : arrayinst*, `exninst*#7` : exninst*, `meminst*#10` : meminst*, memtype#531 : memtype, addrtype#1159 : addrtype, limits#1159 : limits, u64#455 : u64, `u64?#431` : u64?, `byte*#1879` : byte*, i#46867 : nat, `i#46875*` : nat*}(s, `%%PAGE`_memtype{addrtype#1147, limits#1147}(at, `[%..%]`_limits{u64#443, `u64?#419`}(i, j?{j <- `j?`}))) = (s +++ {`TAGS`{`taginst*#8`} [], `GLOBALS`{`globalinst*#9`} [], `MEMS`{`meminst*#9`} [meminst], `TABLES`{`tableinst*#9`} [], `FUNCS`{`funcinst*#8`} [], `DATAS`{`datainst*#7`} [], `ELEMS`{`eleminst*#7`} [], `STRUCTS`{`structinst*#8`} [], `ARRAYS`{`arrayinst*#8`} [], `EXNS`{`exninst*#7`} []}, |s.`MEMS`_store{`meminst*#10`}|) + -- if (meminst = {`TYPE`{memtype#531} `%%PAGE`_memtype{addrtype#1159, limits#1159}(at, `[%..%]`_limits{u64#455, `u64?#431`}(i, j?{j <- `j?`})), `BYTES`{`byte*#1879`} `%`_byte{i#46875}(0)^(i!`%`_u64{i#46867}.0 * (64 * $Ki)){i#46875 <- `i#46875*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -7131,8 +118690,8 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) ;; ../../../../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{}}) + def $alloctable{s : store, addrtype#1219 : addrtype, limits#1219 : limits, reftype#3485 : reftype, at : addrtype, u64#467 : u64, `u64?#443` : u64?, i : u64, `j?` : u64?, rt : reftype, ref : ref, `taginst*#9` : taginst*, `globalinst*#10` : globalinst*, `meminst*#11` : meminst*, `tableinst*#10` : tableinst*, tableinst : tableinst, `funcinst*#9` : funcinst*, `datainst*#8` : datainst*, `eleminst*#8` : eleminst*, `structinst*#9` : structinst*, `arrayinst*#9` : arrayinst*, `exninst*#8` : exninst*, `tableinst*#11` : tableinst*, tabletype#881 : tabletype, addrtype#1231 : addrtype, limits#1231 : limits, reftype#3497 : reftype, u64#479 : u64, `u64?#455` : u64?, `ref*#22` : ref*, i#46955 : nat}(s, `%%%`_tabletype{addrtype#1219, limits#1219, reftype#3485}(at, `[%..%]`_limits{u64#467, `u64?#443`}(i, j?{j <- `j?`}), rt), ref) = (s +++ {`TAGS`{`taginst*#9`} [], `GLOBALS`{`globalinst*#10`} [], `MEMS`{`meminst*#11`} [], `TABLES`{`tableinst*#10`} [tableinst], `FUNCS`{`funcinst*#9`} [], `DATAS`{`datainst*#8`} [], `ELEMS`{`eleminst*#8`} [], `STRUCTS`{`structinst*#9`} [], `ARRAYS`{`arrayinst*#9`} [], `EXNS`{`exninst*#8`} []}, |s.`TABLES`_store{`tableinst*#11`}|) + -- if (tableinst = {`TYPE`{tabletype#881} `%%%`_tabletype{addrtype#1231, limits#1231, reftype#3497}(at, `[%..%]`_limits{u64#479, `u64?#455`}(i, j?{j <- `j?`}), rt), `REFS`{`ref*#22`} ref^i!`%`_u64{i#46955}.0{}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -7150,8 +118709,8 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) ;; ../../../../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}) + def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, `taginst*#10` : taginst*, `globalinst*#11` : globalinst*, `meminst*#12` : meminst*, `tableinst*#12` : tableinst*, `funcinst*#10` : funcinst*, funcinst : funcinst, `datainst*#9` : datainst*, `eleminst*#9` : eleminst*, `structinst*#10` : structinst*, `arrayinst*#10` : arrayinst*, `exninst*#9` : exninst*, `funcinst*#11` : funcinst*, deftype#11 : deftype, moduleinst#25 : moduleinst, funccode#2 : funccode}(s, deftype, funccode, moduleinst) = (s +++ {`TAGS`{`taginst*#10`} [], `GLOBALS`{`globalinst*#11`} [], `MEMS`{`meminst*#12`} [], `TABLES`{`tableinst*#12`} [], `FUNCS`{`funcinst*#10`} [funcinst], `DATAS`{`datainst*#9`} [], `ELEMS`{`eleminst*#9`} [], `STRUCTS`{`structinst*#10`} [], `ARRAYS`{`arrayinst*#10`} [], `EXNS`{`exninst*#9`} []}, |s.`FUNCS`_store{`funcinst*#11`}|) + -- if (funcinst = {`TYPE`{deftype#11} deftype, `MODULE`{moduleinst#25} moduleinst, `CODE`{funccode#2} funccode}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -7169,8 +118728,8 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca ;; ../../../../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*`}}) + def $allocdata{s : store, `byte*` : byte*, `taginst*#11` : taginst*, `globalinst*#12` : globalinst*, `meminst*#13` : meminst*, `tableinst*#13` : tableinst*, `funcinst*#12` : funcinst*, `datainst*#10` : datainst*, datainst : datainst, `eleminst*#10` : eleminst*, `structinst*#11` : structinst*, `arrayinst*#11` : arrayinst*, `exninst*#10` : exninst*, `datainst*#11` : datainst*, `byte*#1880` : byte*}(s, `OK`_datatype, byte*{byte <- `byte*`}) = (s +++ {`TAGS`{`taginst*#11`} [], `GLOBALS`{`globalinst*#12`} [], `MEMS`{`meminst*#13`} [], `TABLES`{`tableinst*#13`} [], `FUNCS`{`funcinst*#12`} [], `DATAS`{`datainst*#10`} [datainst], `ELEMS`{`eleminst*#10`} [], `STRUCTS`{`structinst*#11`} [], `ARRAYS`{`arrayinst*#11`} [], `EXNS`{`exninst*#10`} []}, |s.`DATAS`_store{`datainst*#11`}|) + -- if (datainst = {`BYTES`{`byte*#1880`} byte*{byte <- `byte*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -7188,8 +118747,8 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) ;; ../../../../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*`}}) + def $allocelem{s : store, elemtype : elemtype, `ref*` : ref*, `taginst*#12` : taginst*, `globalinst*#13` : globalinst*, `meminst*#14` : meminst*, `tableinst*#14` : tableinst*, `funcinst*#13` : funcinst*, `datainst*#12` : datainst*, `eleminst*#11` : eleminst*, eleminst : eleminst, `structinst*#12` : structinst*, `arrayinst*#12` : arrayinst*, `exninst*#11` : exninst*, `eleminst*#12` : eleminst*, elemtype#1 : elemtype, `ref*#23` : ref*}(s, elemtype, ref*{ref <- `ref*`}) = (s +++ {`TAGS`{`taginst*#12`} [], `GLOBALS`{`globalinst*#13`} [], `MEMS`{`meminst*#14`} [], `TABLES`{`tableinst*#14`} [], `FUNCS`{`funcinst*#13`} [], `DATAS`{`datainst*#12`} [], `ELEMS`{`eleminst*#11`} [eleminst], `STRUCTS`{`structinst*#12`} [], `ARRAYS`{`arrayinst*#12`} [], `EXNS`{`exninst*#11`} []}, |s.`ELEMS`_store{`eleminst*#12`}|) + -- if (eleminst = {`TYPE`{elemtype#1} elemtype, `REFS`{`ref*#23`} ref*{ref <- `ref*`}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -7207,15 +118766,15 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) ;; ../../../../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])} + def $allocexport{moduleinst : moduleinst, name#5597 : name, externidx#5379 : externidx, name : name, tagidx#17 : tagidx, x : idx, name#5599 : name, externaddr#1 : externaddr, tagaddr#8 : tagaddr, `tagaddr*#4` : tagaddr*, i#47111 : nat}(moduleinst, `EXPORT`_export{name#5597, externidx#5379}(name, `TAG`_externidx{tagidx#17}(x))) = {`NAME`{name#5599} name, `ADDR`{externaddr#1} `TAG`_externaddr{tagaddr#8}(moduleinst.`TAGS`_moduleinst{`tagaddr*#4`}[x!`%`_idx{i#47111}.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])} + def $allocexport{moduleinst : moduleinst, name#5610 : name, externidx#5391 : externidx, name : name, globalidx#21 : globalidx, x : idx, name#5612 : name, externaddr#2 : externaddr, globaladdr#5 : globaladdr, `globaladdr*#3` : globaladdr*, i#47135 : nat}(moduleinst, `EXPORT`_export{name#5610, externidx#5391}(name, `GLOBAL`_externidx{globalidx#21}(x))) = {`NAME`{name#5612} name, `ADDR`{externaddr#2} `GLOBAL`_externaddr{globaladdr#5}(moduleinst.`GLOBALS`_moduleinst{`globaladdr*#3`}[x!`%`_idx{i#47135}.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])} + def $allocexport{moduleinst : moduleinst, name#5623 : name, externidx#5403 : externidx, name : name, memidx#163 : memidx, x : idx, name#5625 : name, externaddr#3 : externaddr, memaddr#5 : memaddr, `memaddr*#4` : memaddr*, i#47159 : nat}(moduleinst, `EXPORT`_export{name#5623, externidx#5403}(name, `MEM`_externidx{memidx#163}(x))) = {`NAME`{name#5625} name, `ADDR`{externaddr#3} `MEM`_externaddr{memaddr#5}(moduleinst.`MEMS`_moduleinst{`memaddr*#4`}[x!`%`_idx{i#47159}.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])} + def $allocexport{moduleinst : moduleinst, name#5636 : name, externidx#5415 : externidx, name : name, tableidx#117 : tableidx, x : idx, name#5638 : name, externaddr#4 : externaddr, tableaddr#5 : tableaddr, `tableaddr*#4` : tableaddr*, i#47183 : nat}(moduleinst, `EXPORT`_export{name#5636, externidx#5415}(name, `TABLE`_externidx{tableidx#117}(x))) = {`NAME`{name#5638} name, `ADDR`{externaddr#4} `TABLE`_externaddr{tableaddr#5}(moduleinst.`TABLES`_moduleinst{`tableaddr*#4`}[x!`%`_idx{i#47183}.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])} + def $allocexport{moduleinst : moduleinst, name#5649 : name, externidx#5427 : externidx, name : name, funcidx#2843 : funcidx, x : idx, name#5651 : name, externaddr#5 : externaddr, funcaddr#19 : funcaddr, `funcaddr*#5` : funcaddr*, i#47207 : nat}(moduleinst, `EXPORT`_export{name#5649, externidx#5427}(name, `FUNC`_externidx{funcidx#2843}(x))) = {`NAME`{name#5651} name, `ADDR`{externaddr#5} `FUNC`_externaddr{funcaddr#19}(moduleinst.`FUNCS`_moduleinst{`funcaddr*#5`}[x!`%`_idx{i#47207}.0])} ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocexports(moduleinst : moduleinst, export*) : exportinst* @@ -7225,47 +118784,47 @@ def $allocexports(moduleinst : moduleinst, export*) : exportinst* ;; ../../../../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) - -- 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**`}) + def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*#101` : type*, `import*#101` : import*, `tag*#101` : tag*, `global*#125` : global*, `mem*#125` : mem*, `table*#125` : table*, `func*#101` : func*, `data*#101` : data*, `elem*#125` : elem*, `start?#101` : start?, `export*#101` : export*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `tagtype#260*` : tagtype*, `expr#4459*` : expr*, `expr_G*` : expr*, `globaltype*` : globaltype*, `globaltype#2179*` : globaltype*, `memtype*` : memtype*, `memtype#634*` : memtype*, `expr#4477*` : expr*, `expr_T*` : expr*, `tabletype*` : tabletype*, `tabletype#998*` : tabletype*, `expr#4495*` : expr*, `expr_F*` : expr*, `local**` : local**, `local*#1351*` : local**, `typeidx#1808*` : typeidx*, `x*` : idx*, `byte**` : byte**, `byte*#2021*` : byte**, `datamode*` : datamode*, `datamode#1985*` : datamode*, `elemmode*` : elemmode*, `elemmode#3087*` : elemmode*, `elemtype*` : elemtype*, `expr*#3087*` : expr**, `expr_E**` : expr**, `reftype#3705*` : reftype*, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, i_F : nat, `funcinst*#14*` : funcinst**, 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*, `i#47295*` : nat*, `expr#4497*` : expr*, `local*#1353*` : local**, `typeidx#1810*` : typeidx*, `xi*` : exportinst*, `deftype*#94` : deftype*, `tagaddr*#5` : tagaddr*, `globaladdr*#4` : globaladdr*, `memaddr*#5` : memaddr*, `tableaddr*#5` : tableaddr*, `funcaddr*#6` : funcaddr*, `dataaddr*#3` : dataaddr*, `elemaddr*#3` : elemaddr*, `exportinst*#1` : exportinst*, `deftype*#95` : deftype*, `tagaddr*#6` : tagaddr*, `globaladdr*#5` : globaladdr*, `memaddr*#6` : memaddr*, `tableaddr*#6` : tableaddr*, `funcaddr*#7` : funcaddr*, `dataaddr*#4` : dataaddr*, `elemaddr*#4` : elemaddr*, `exportinst*#2` : 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*#101`, `import*#101`, `tag*#101`, `global*#125`, `mem*#125`, `table*#125`, `func*#101`, `data*#101`, `elem*#125`, `start?#101`, `export*#101`}(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#260}(tagtype)*{tagtype <- `tagtype*`, tagtype#260 <- `tagtype#260*`}) + -- if (global*{global <- `global*`} = `GLOBAL`_global{globaltype#2179, expr#4459}(globaltype, expr_G)*{expr#4459 <- `expr#4459*`, expr_G <- `expr_G*`, globaltype <- `globaltype*`, globaltype#2179 <- `globaltype#2179*`}) + -- if (mem*{mem <- `mem*`} = `MEMORY`_mem{memtype#634}(memtype)*{memtype <- `memtype*`, memtype#634 <- `memtype#634*`}) + -- if (table*{table <- `table*`} = `TABLE`_table{tabletype#998, expr#4477}(tabletype, expr_T)*{expr#4477 <- `expr#4477*`, expr_T <- `expr_T*`, tabletype <- `tabletype*`, tabletype#998 <- `tabletype#998*`}) + -- if (func*{func <- `func*`} = `FUNC`_func{typeidx#1808, `local*#1351`, expr#4495}(x, local*{local <- `local*`}, expr_F)*{expr#4495 <- `expr#4495*`, expr_F <- `expr_F*`, `local*` <- `local**`, `local*#1351` <- `local*#1351*`, typeidx#1808 <- `typeidx#1808*`, x <- `x*`}) + -- if (data*{data <- `data*`} = `DATA`_data{`byte*#2021`, datamode#1985}(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, `byte*#2021` <- `byte*#2021*`, datamode <- `datamode*`, datamode#1985 <- `datamode#1985*`}) + -- if (elem*{elem <- `elem*`} = `ELEM`_elem{reftype#3705, `expr*#3087`, elemmode#3087}(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemmode#3087 <- `elemmode#3087*`, elemtype <- `elemtype*`, `expr*#3087` <- `expr*#3087*`, `expr_E*` <- `expr_E**`, reftype#3705 <- `reftype#3705*`}) -- 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 (fa*{fa <- `fa*`} = (|s.`FUNCS`_store{`funcinst*#14`}| + i_F)^(i_F<|func*{func <- `func*`}|){`funcinst*#14` <- `funcinst*#14*`}) -- 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_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*`}[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*`}}) + -- if ((s_7, fa*{fa <- `fa*`}) = $allocfuncs(s_6, dt*{dt <- `dt*`}[x!`%`_idx{i#47295}.0]*{i#47295 <- `i#47295*`, x <- `x*`}, `FUNC`_funccode{typeidx#1810, `local*#1353`, expr#4497}(x, local*{local <- `local*`}, expr_F)*{expr#4497 <- `expr#4497*`, expr_F <- `expr_F*`, `local*` <- `local**`, `local*#1353` <- `local*#1353*`, typeidx#1810 <- `typeidx#1810*`, x <- `x*`}, moduleinst^|func*{func <- `func*`}|{})) + -- if (xi*{xi <- `xi*`} = $allocexports({`TYPES`{`deftype*#94`} [], `TAGS`{`tagaddr*#5`} aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, `GLOBALS`{`globaladdr*#4`} ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, `MEMS`{`memaddr*#5`} ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, `TABLES`{`tableaddr*#5`} ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, `FUNCS`{`funcaddr*#6`} fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, `DATAS`{`dataaddr*#3`} [], `ELEMS`{`elemaddr*#3`} [], `EXPORTS`{`exportinst*#1`} []}, export*{export <- `export*`})) + -- if (moduleinst = {`TYPES`{`deftype*#95`} dt*{dt <- `dt*`}, `TAGS`{`tagaddr*#6`} aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, `GLOBALS`{`globaladdr*#5`} ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, `MEMS`{`memaddr*#6`} ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, `TABLES`{`tableaddr*#6`} ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, `FUNCS`{`funcaddr*#7`} fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, `DATAS`{`dataaddr*#4`} da*{da <- `da*`}, `ELEMS`{`elemaddr*#4`} ea*{ea <- `ea*`}, `EXPORTS`{`exportinst*#2`} 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)) = [] + def $rundata_{x : idx, `byte*#2033` : byte*, datamode#1997 : datamode, n : n, `b*` : byte*}(x, `DATA`_data{`byte*#2033`, datamode#1997}(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)] + def $rundata_{x : idx, `byte*#2045` : byte*, datamode#2009 : datamode, n : n, `b*` : byte*, memidx#165 : memidx, expr#4499 : expr, y : idx, `instr*` : instr*, numtype#623 : numtype, i#47393 : nat, numtype#625 : numtype, i#47417 : nat, memidx#167 : memidx, dataidx#43 : dataidx, dataidx#45 : dataidx}(x, `DATA`_data{`byte*#2045`, datamode#2009}(b^n{b <- `b*`}, `ACTIVE`_datamode{memidx#165, expr#4499}(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [`CONST`_instr{numtype#623}(`I32`_numtype, `%`_num_{i#47393}(0)) `CONST`_instr{numtype#625}(`I32`_numtype, `%`_num_{i#47417}(n)) `MEMORY.INIT`_instr{memidx#167, dataidx#43}(y, x) `DATA.DROP`_instr{dataidx#45}(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)) = [] + def $runelem_{x : idx, reftype#3735 : reftype, `expr*#3099` : expr*, elemmode#3099 : elemmode, rt : reftype, n : n, `e*` : expr*}(x, `ELEM`_elem{reftype#3735, `expr*#3099`, elemmode#3099}(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)] + def $runelem_{x : idx, reftype#3747 : reftype, `expr*#3111` : expr*, elemmode#3111 : elemmode, rt : reftype, n : n, `e*` : expr*, elemidx#43 : elemidx}(x, `ELEM`_elem{reftype#3747, `expr*#3111`, elemmode#3111}(rt, e^n{e <- `e*`}, `DECLARE`_elemmode)) = [`ELEM.DROP`_instr{elemidx#43}(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)] + def $runelem_{x : idx, reftype#3759 : reftype, `expr*#3123` : expr*, elemmode#3123 : elemmode, rt : reftype, n : n, `e*` : expr*, tableidx#119 : tableidx, expr#4501 : expr, y : idx, `instr*` : instr*, numtype#627 : numtype, i#47545 : nat, numtype#629 : numtype, i#47569 : nat, tableidx#121 : tableidx, elemidx#45 : elemidx, elemidx#47 : elemidx}(x, `ELEM`_elem{reftype#3759, `expr*#3123`, elemmode#3123}(rt, e^n{e <- `e*`}, `ACTIVE`_elemmode{tableidx#119, expr#4501}(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [`CONST`_instr{numtype#627}(`I32`_numtype, `%`_num_{i#47545}(0)) `CONST`_instr{numtype#629}(`I32`_numtype, `%`_num_{i#47569}(n)) `TABLE.INIT`_instr{tableidx#121, elemidx#45}(y, x) `ELEM.DROP`_instr{elemidx#47}(x)] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -7275,46 +118834,46 @@ 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'*`}) + def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : expr, `expr'*` : expr*, z' : state, val : val, `val'*` : val*, store#2543 : store, frame#2561 : frame, s : store, f : frame, s' : store, a : addr, store#2555 : store, frame#2573 : frame, moduleinst#26 : moduleinst, `globaladdr*#6` : globaladdr*}(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 (z = `%;%`_state{store#2543, frame#2561}(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'*`})) + -- if ((z', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state{store#2555, frame#2573}(s', f[`MODULE`_frame{moduleinst#26}.`GLOBALS`_moduleinst{`globaladdr*#6`} =++ [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?`})) - -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + def $instantiate{s : store, module : module, `externaddr*` : externaddr*, state#2219 : state, `instr*#2334` : instr*, store#2627 : store, frame#2645 : frame, s' : store, `val?*#6` : val?*, moduleinst#28 : moduleinst, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `externtype*#168` : externtype*, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*#125` : type*, `import*#125` : import*, `tag*#125` : tag*, `global*#149` : global*, `mem*#149` : mem*, `table*#149` : table*, `func*#125` : func*, `data*#125` : data*, `elem*#149` : elem*, `start?#125` : start?, `export*#125` : export*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `expr#4805*` : expr*, `expr_G*` : expr*, `globaltype*` : globaltype*, `globaltype#2271*` : globaltype*, `expr#4823*` : expr*, `expr_T*` : expr*, `tabletype*` : tabletype*, `tabletype#1116*` : tabletype*, `byte**` : byte**, `byte*#2187*` : byte**, `datamode*` : datamode*, `datamode#2151*` : datamode*, `elemmode*` : elemmode*, `elemmode#3277*` : elemmode*, `expr*#3277*` : expr**, `expr_E**` : expr**, `reftype*` : reftype*, `reftype#3919*` : reftype*, `funcidx#3157?` : funcidx?, `x?` : idx?, moduleinst_0 : moduleinst, `deftype*#96` : deftype*, `tagaddr*#7` : tagaddr*, `globaladdr*#7` : globaladdr*, `memaddr*#7` : memaddr*, `tableaddr*#7` : tableaddr*, `funcaddr*#8` : funcaddr*, i_F : nat, `funcinst*#15*` : funcinst**, `dataaddr*#5` : dataaddr*, `elemaddr*#5` : elemaddr*, `exportinst*#3` : exportinst*, z : state, store#2579 : store, frame#2597 : frame, `val?*#5` : val?*, moduleinst#27 : moduleinst, z' : state, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, i_D : nat, `i#47725*` : nat*, i_E : nat, `i#47785*` : nat*, `funcidx#3159?` : funcidx?}(s, module, externaddr*{externaddr <- `externaddr*`}) = `%;%`_config{state#2219, `instr*#2334`}(`%;%`_state{store#2627, frame#2645}(s', {`LOCALS`{`val?*#6`} [], `MODULE`{moduleinst#28} moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) + -- Module_ok: `|-%:%`(module, `%->%`_moduletype{`externtype*#168`}(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 (module = `MODULE`_module{`type*#125`, `import*#125`, `tag*#125`, `global*#149`, `mem*#149`, `table*#149`, `func*#125`, `data*#125`, `elem*#149`, `start?#125`, `export*#125`}(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#2271, expr#4805}(globaltype, expr_G)*{expr#4805 <- `expr#4805*`, expr_G <- `expr_G*`, globaltype <- `globaltype*`, globaltype#2271 <- `globaltype#2271*`}) + -- if (table*{table <- `table*`} = `TABLE`_table{tabletype#1116, expr#4823}(tabletype, expr_T)*{expr#4823 <- `expr#4823*`, expr_T <- `expr_T*`, tabletype <- `tabletype*`, tabletype#1116 <- `tabletype#1116*`}) + -- if (data*{data <- `data*`} = `DATA`_data{`byte*#2187`, datamode#2151}(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, `byte*#2187` <- `byte*#2187*`, datamode <- `datamode*`, datamode#2151 <- `datamode#2151*`}) + -- if (elem*{elem <- `elem*`} = `ELEM`_elem{reftype#3919, `expr*#3277`, elemmode#3277}(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemmode#3277 <- `elemmode#3277*`, `expr*#3277` <- `expr*#3277*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`, reftype#3919 <- `reftype#3919*`}) + -- if (start?{start <- `start?`} = `START`_start{funcidx#3157}(x)?{funcidx#3157 <- `funcidx#3157?`, x <- `x?`}) + -- if (moduleinst_0 = {`TYPES`{`deftype*#96`} $alloctypes(type*{type <- `type*`}), `TAGS`{`tagaddr*#7`} [], `GLOBALS`{`globaladdr*#7`} $globalsxa(externaddr*{externaddr <- `externaddr*`}), `MEMS`{`memaddr*#7`} [], `TABLES`{`tableaddr*#7`} [], `FUNCS`{`funcaddr*#8`} $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.`FUNCS`_store{`funcinst*#15`}| + i_F)^(i_F<|func*{func <- `func*`}|){`funcinst*#15` <- `funcinst*#15*`}, `DATAS`{`dataaddr*#5`} [], `ELEMS`{`elemaddr*#5`} [], `EXPORTS`{`exportinst*#3`} []}) + -- if (z = `%;%`_state{store#2579, frame#2597}(s, {`LOCALS`{`val?*#5`} [], `MODULE`{moduleinst#27} 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?`}) + -- if (instr_D*{instr_D <- `instr_D*`} = $concat_(syntax instr, $rundata_(`%`_dataidx{i#47725}(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){i#47725 <- `i#47725*`})) + -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx{i#47785}(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){i#47785 <- `i#47785*`})) + -- if (instr_S?{instr_S <- `instr_S?`} = `CALL`_instr{funcidx#3159}(x)?{funcidx#3159 <- `funcidx#3159?`, 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 : 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*`}))) + def $invoke{s : store, funcaddr : funcaddr, `val*` : val*, state#2231 : state, `instr*#2346` : instr*, store#2639 : store, frame#2657 : frame, `val?*#7` : val?*, moduleinst#29 : moduleinst, `deftype*#97` : deftype*, `tagaddr*#8` : tagaddr*, `globaladdr*#8` : globaladdr*, `memaddr*#8` : memaddr*, `tableaddr*#8` : tableaddr*, `funcaddr*#9` : funcaddr*, `dataaddr*#6` : dataaddr*, `elemaddr*#6` : elemaddr*, `exportinst*#4` : exportinst*, funcaddr#21 : funcaddr, typeuse#65 : typeuse, `funcinst*#17` : funcinst*, deftype#13 : deftype, `funcinst*#16` : funcinst*, deftype#12 : deftype, resulttype#3026 : resulttype, `X*#13028` : valtype*, `t_1*` : valtype*, `X*#13041` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config{state#2231, `instr*#2346`}(`%;%`_state{store#2639, frame#2657}(s, {`LOCALS`{`val?*#7`} [], `MODULE`{moduleinst#29} {`TYPES`{`deftype*#97`} [], `TAGS`{`tagaddr*#8`} [], `GLOBALS`{`globaladdr*#8`} [], `MEMS`{`memaddr*#8`} [], `TABLES`{`tableaddr*#8`} [], `FUNCS`{`funcaddr*#9`} [], `DATAS`{`dataaddr*#6`} [], `ELEMS`{`elemaddr*#6`} [], `EXPORTS`{`exportinst*#4`} []}}), (val : val <: instr)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr{funcaddr#21}(funcaddr) `CALL_REF`_instr{typeuse#65}((s.`FUNCS`_store{`funcinst*#17`}[funcaddr].`TYPE`_funcinst{deftype#13} : deftype <: typeuse))]) + -- Expand: `%~~%`(s.`FUNCS`_store{`funcinst*#16`}[funcaddr].`TYPE`_funcinst{deftype#12}, `FUNC%->%`_comptype{resulttype#3026}(`%`_resulttype{`X*#13028`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13041`}(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(``) + prod{i#47807 : nat, `` : nat} ``:(0x00 | ... | 0xFF) => `%`_byte{i#47807}(``) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec rec { @@ -7322,29 +118881,29 @@ 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) + prod{i#47823 : nat, n : n, i#47815 : nat} `%`_byte{i#47815}(n):Bbyte => `%`_uN{i#47823}(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))) + prod{i#47866 : nat, m : m, n : n, i#47831 : nat, i#47856 : nat} {{`%`_byte{i#47831}(n):Bbyte} {`%`_uN{i#47856}(m):BuN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_uN{i#47866}((((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 grammar BsN(N : N) : sN(N) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{n : n} `%`_byte(n):Bbyte => `%`_sN((n : nat <:> int)) + prod{i#47882 : int, n : n, i#47874 : nat} `%`_byte{i#47874}(n):Bbyte => `%`_sN{i#47882}((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 - prod{n : n} `%`_byte(n):Bbyte => `%`_sN(((n : nat <:> int) - ((2 ^ 7) : nat <:> int))) + prod{i#47898 : int, n : n, i#47890 : nat} `%`_byte{i#47890}(n):Bbyte => `%`_sN{i#47898}(((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 - prod{n : n, i : uN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))} {{`%`_byte(n):Bbyte} {i:BuN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_sN(((((2 ^ 7) * i!`%`_uN.0) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int)) + prod{i#47945 : int, i : uN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat)), i#47943 : nat, n : n, i#47906 : nat} {{`%`_byte{i#47906}(n):Bbyte} {i:BuN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_sN{i#47945}(((((2 ^ 7) * i!`%`_uN{i#47943}.0) + (((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)) + prod{i#47961 : nat, i : sN(N), i#47959 : int} i:BsN(N) => `%`_iN{i#47961}($inv_signed_(N, i!`%`_sN{i#47959}.0)) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar BfN(N : N) : fN(N) @@ -7354,12 +118913,12 @@ grammar BfN(N : N) : fN(N) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Bu32 : u32 ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{n : n} `%`_uN(n):BuN(32) => `%`_u32(n) + prod{i#48033 : nat, n : n, i#48009 : nat} `%`_uN{i#48009}(n):BuN(32) => `%`_u32{i#48033}(n) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Bu64 : u64 ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{n : n} `%`_uN(n):BuN(64) => `%`_u64(n) + prod{i#48081 : nat, n : n, i#48057 : nat} `%`_uN{i#48057}(n):BuN(64) => `%`_u64{i#48081}(n) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Bs33 : s33 @@ -7379,13 +118938,13 @@ grammar Bf64 : f64 ;; ../../../../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*`} + prod{n : n, `el*` : el*, i#48134 : nat} {{`%`_u32{i#48134}(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*`}) + prod{name : name, `b*` : byte*, `char*#153` : char*} b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte) => name + -- if ($utf8(name!`%`_name{`char*#153`}.0) = b*{b <- `b*`}) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Btypeidx : typeidx @@ -7440,75 +118999,75 @@ grammar Blabelidx : labelidx ;; ../../../../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) + prod{funcidx#3161 : funcidx, x : idx} {{0x00} {x:Bfuncidx}} => `FUNC`_externidx{funcidx#3161}(x) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x01} {x:Btableidx}} => TABLE_externidx(x) + prod{tableidx#123 : tableidx, x : idx} {{0x01} {x:Btableidx}} => `TABLE`_externidx{tableidx#123}(x) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x02} {x:Bmemidx}} => MEM_externidx(x) + prod{memidx#169 : memidx, x : idx} {{0x02} {x:Bmemidx}} => `MEM`_externidx{memidx#169}(x) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x03} {x:Bglobalidx}} => GLOBAL_externidx(x) + prod{globalidx#23 : globalidx, x : idx} {{0x03} {x:Bglobalidx}} => `GLOBAL`_externidx{globalidx#23}(x) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{x : idx} {{0x04} {x:Btagidx}} => TAG_externidx(x) + prod{tagidx#19 : tagidx, x : idx} {{0x04} {x:Btagidx}} => `TAG`_externidx{tagidx#19}(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 + prod 0x7C => `F64`_numtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7D => F32_numtype + prod 0x7D => `F32`_numtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7E => I64_numtype + prod 0x7E => `I64`_numtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7F => I32_numtype + 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 + 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 + prod 0x69 => `EXN`_heaptype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6A => ARRAY_heaptype + prod 0x6A => `ARRAY`_heaptype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6B => STRUCT_heaptype + prod 0x6B => `STRUCT`_heaptype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6C => I31_heaptype + prod 0x6C => `I31`_heaptype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6D => EQ_heaptype + prod 0x6D => `EQ`_heaptype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6E => ANY_heaptype + prod 0x6E => `ANY`_heaptype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6F => EXTERN_heaptype + prod 0x6F => `EXTERN`_heaptype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x70 => FUNC_heaptype + prod 0x70 => `FUNC`_heaptype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x71 => NONE_heaptype + prod 0x71 => `NONE`_heaptype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x72 => NOEXTERN_heaptype + prod 0x72 => `NOEXTERN`_heaptype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x73 => NOFUNC_heaptype + prod 0x73 => `NOFUNC`_heaptype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x74 => NOEXN_heaptype + 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)) + prod{typeidx#1924 : typeidx, x33 : s33, i#49064 : int} x33:Bs33 => `_IDX`_heaptype{typeidx#1924}($s33_to_u32(x33)) + -- if (x33!`%`_s33{i#49064}.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) + prod{`null?#1525` : null?, heaptype#1587 : heaptype, ht : heaptype} {{0x63} {ht:Bheaptype}} => `REF`_reftype{`null?#1525`, heaptype#1587}(?(`NULL`_null), ht) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} {{0x64} {ht:Bheaptype}} => REF_reftype(?(), ht) + prod{`null?#1537` : null?, heaptype#1599 : heaptype, ht : heaptype} {{0x64} {ht:Bheaptype}} => `REF`_reftype{`null?#1537`, heaptype#1599}(?(), ht) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ht : heaptype} ht:Babsheaptype => REF_reftype(?(NULL_null), ht) + prod{`null?#1549` : null?, heaptype#1611 : heaptype, ht : heaptype} ht:Babsheaptype => `REF`_reftype{`null?#1549`, heaptype#1611}(?(`NULL`_null), ht) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bvaltype : valtype @@ -7522,21 +119081,21 @@ grammar Bvaltype : 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*`}) + prod{`X*#13056` : valtype*, `t*` : valtype*} t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype) => `%`_resulttype{`X*#13056`}(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) + 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 + prod 0x77 => `I16`_packtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x78 => I8_packtype + prod 0x78 => `I8`_packtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bstoragetype : storagetype @@ -7548,76 +119107,76 @@ grammar Bstoragetype : 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) + prod{`mut?#1417` : mut?, storagetype#755 : storagetype, `mut?` : mut?, zt : storagetype} {{zt:Bstoragetype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_fieldtype{`mut?#1417`, storagetype#755}(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) + prod{fieldtype#59 : fieldtype, ft : fieldtype} {{0x5E} {ft:Bfieldtype}} => `ARRAY`_comptype{fieldtype#59}(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*`})) + prod{`X*#13071` : fieldtype*, `ft*` : fieldtype*} {{0x5F} {ft*{ft <- `ft*`}:Blist(syntax fieldtype, grammar Bfieldtype)}} => `STRUCT`_comptype(`%`_list{`X*#13071`}(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*`})) + prod{resulttype#3029 : resulttype, `X*#13122` : valtype*, `t_1*` : valtype*, `X*#13135` : valtype*, `t_2*` : valtype*, `X*#13087` : valtype*, `X*#13105` : valtype*} {{0x60} {`%`_resulttype{`X*#13087`}(t_1*{t_1 <- `t_1*`}):Bresulttype} {`%`_resulttype{`X*#13105`}(t_2*{t_2 <- `t_2*`}):Bresulttype}} => `FUNC%->%`_comptype{resulttype#3029}(`%`_resulttype{`X*#13122`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13135`}(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) + prod{`final?#449` : final?, `typeuse*#449` : typeuse*, comptype#449 : comptype, `typeidx#1926*` : typeidx*, `x*` : idx*, ct : comptype} {{0x4F} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => `SUB`_subtype{`final?#449`, `typeuse*#449`, comptype#449}(?(`FINAL`_final), `_IDX`_typeuse{typeidx#1926}(x)*{typeidx#1926 <- `typeidx#1926*`, 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) + prod{`final?#461` : final?, `typeuse*#461` : typeuse*, comptype#461 : comptype, `typeidx#1928*` : typeidx*, `x*` : idx*, ct : comptype} {{0x50} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => `SUB`_subtype{`final?#461`, `typeuse*#461`, comptype#461}(?(), `_IDX`_typeuse{typeidx#1928}(x)*{typeidx#1928 <- `typeidx#1928*`, x <- `x*`}, ct) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{ct : comptype} ct:Bcomptype => SUB_subtype(?(FINAL_final), [], ct) + prod{`final?#473` : final?, `typeuse*#473` : typeuse*, comptype#473 : comptype, ct : comptype} ct:Bcomptype => `SUB`_subtype{`final?#473`, `typeuse*#473`, comptype#473}(?(`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*`})) + prod{`X*#13150` : subtype*, `st*` : subtype*} {{0x4E} {st*{st <- `st*`}:Blist(syntax subtype, grammar Bsubtype)}} => `REC`_rectype(`%`_list{`X*#13150`}(st*{st <- `st*`})) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{st : subtype} st:Bsubtype => REC_rectype(`%`_list([st])) + prod{`X*#13165` : subtype*, st : subtype} st:Bsubtype => `REC`_rectype(`%`_list{`X*#13165`}([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), ?())) + prod{u64#491 : u64, `u64?#467` : u64?, i#49191 : nat, n : n, i#49167 : nat} {{0x00} {`%`_u64{i#49167}(n):Bu64}} => (`I32`_addrtype, `[%..%]`_limits{u64#491, `u64?#467`}(`%`_u64{i#49191}(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)))) + prod{u64#503 : u64, `u64?#479` : u64?, i#49267 : nat, n : n, i#49289 : nat, m : m, i#49216 : nat, i#49243 : nat} {{0x01} {`%`_u64{i#49216}(n):Bu64} {`%`_u64{i#49243}(m):Bu64}} => (`I32`_addrtype, `[%..%]`_limits{u64#503, `u64?#479`}(`%`_u64{i#49267}(n), ?(`%`_u64{i#49289}(m)))) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n} {{0x04} {`%`_u64(n):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) + prod{u64#515 : u64, `u64?#491` : u64?, i#49338 : nat, n : n, i#49314 : nat} {{0x04} {`%`_u64{i#49314}(n):Bu64}} => (`I64`_addrtype, `[%..%]`_limits{u64#515, `u64?#491`}(`%`_u64{i#49338}(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)))) + prod{u64#527 : u64, `u64?#503` : u64?, i#49414 : nat, n : n, i#49436 : nat, m : m, i#49363 : nat, i#49390 : nat} {{0x05} {`%`_u64{i#49363}(n):Bu64} {`%`_u64{i#49390}(m):Bu64}} => (`I64`_addrtype, `[%..%]`_limits{u64#527, `u64?#503`}(`%`_u64{i#49414}(n), ?(`%`_u64{i#49436}(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) + prod{typeidx#1930 : typeidx, x : idx} {{0x00} {x:Btypeidx}} => `_IDX`_tagtype{typeidx#1930}(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) + prod{`mut?#1469` : mut?, valtype#991 : valtype, `mut?` : mut?, t : valtype} {{t:Bvaltype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_globaltype{`mut?#1469`, valtype#991}(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) + prod{addrtype#1373 : addrtype, limits#1373 : limits, at : addrtype, lim : limits} (at, lim):Blimits => `%%PAGE`_memtype{addrtype#1373, limits#1373}(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) + prod{addrtype#1385 : addrtype, limits#1385 : limits, reftype#3949 : reftype, at : addrtype, lim : limits, rt : reftype} {{rt:Breftype} {(at, lim):Blimits}} => `%%%`_tabletype{addrtype#1385, limits#1385, reftype#3949}(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)) + prod{typeuse#67 : typeuse, typeidx#1932 : typeidx, x : idx} {{0x00} {x:Btypeidx}} => `FUNC`_externtype{typeuse#67}(`_IDX`_typeuse{typeidx#1932}(x)) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{tt : tabletype} {{0x01} {tt:Btabletype}} => TABLE_externtype(tt) + prod{tabletype#1118 : tabletype, tt : tabletype} {{0x01} {tt:Btabletype}} => `TABLE`_externtype{tabletype#1118}(tt) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{mt : memtype} {{0x02} {mt:Bmemtype}} => MEM_externtype(mt) + prod{memtype#722 : memtype, mt : memtype} {{0x02} {mt:Bmemtype}} => `MEM`_externtype{memtype#722}(mt) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{gt : globaltype} {{0x03} {gt:Bglobaltype}} => GLOBAL_externtype(gt) + prod{globaltype#2273 : globaltype, gt : globaltype} {{0x03} {gt:Bglobaltype}} => `GLOBAL`_externtype{globaltype#2273}(gt) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{jt : tagtype} {{0x04} {jt:Btagtype}} => TAG_externtype(jt) + prod{tagtype#324 : tagtype, jt : tagtype} {{0x04} {jt:Btagtype}} => `TAG`_externtype{tagtype#324}(jt) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec syntax castop = (null?, null?) @@ -7627,32 +119186,32 @@ 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), ?()) + prod 0x01 => (?(`NULL`_null), ?()) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x02 => (?(), ?(NULL_null)) + prod 0x02 => (?(), ?(`NULL`_null)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x03 => (?(NULL_null), ?(NULL_null)) + 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(?()) + prod{`valtype?#7` : valtype?} 0x40 => `_RESULT`_blocktype{`valtype?#7`}(?()) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{t : valtype} t:Bvaltype => _RESULT_blocktype(?(t)) + prod{`valtype?#9` : valtype?, t : valtype} t:Bvaltype => `_RESULT`_blocktype{`valtype?#9`}(?(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)) + prod{typeidx#1934 : typeidx, i#49560 : nat, i : s33, i#49559 : int, i#49575 : int} i:Bs33 => `_IDX`_blocktype{typeidx#1934}(`%`_typeidx{i#49560}((i!`%`_s33{i#49559}.0 : int <:> nat))) + -- if (i!`%`_s33{i#49575}.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) + prod{tagidx#23 : tagidx, labelidx#115 : labelidx, x : idx, l : labelidx} {{0x00} {x:Btagidx} {l:Blabelidx}} => `CATCH`_catch{tagidx#23, labelidx#115}(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) + prod{tagidx#25 : tagidx, labelidx#117 : labelidx, x : idx, l : labelidx} {{0x01} {x:Btagidx} {l:Blabelidx}} => `CATCH_REF`_catch{tagidx#25, labelidx#117}(x, l) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{l : labelidx} {{0x02} {l:Blabelidx}} => CATCH_ALL_catch(l) + prod{labelidx#119 : labelidx, l : labelidx} {{0x02} {l:Blabelidx}} => `CATCH_ALL`_catch{labelidx#119}(l) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{l : labelidx} {{0x03} {l:Blabelidx}} => CATCH_ALL_REF_catch(l) + prod{labelidx#121 : labelidx, l : labelidx} {{0x03} {l:Blabelidx}} => `CATCH_ALL_REF`_catch{labelidx#121}(l) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec syntax memidxop = (memidx, memarg) @@ -7660,16 +119219,16 @@ 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)}) + prod{i#51035 : nat, u32#35 : u32, i#51057 : nat, n : n, u64#553 : u64, i#51079 : nat, m : m, i#50986 : nat, i#51013 : nat} {{`%`_u32{i#50986}(n):Bu32} {`%`_u64{i#51013}(m):Bu64}} => (`%`_memidx{i#51035}(0), {`ALIGN`{u32#35} `%`_u32{i#51057}(n), `OFFSET`{u64#553} `%`_u64{i#51079}(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)}) + prod{x : idx, u32#36 : u32, i#51182 : nat, n : n, u64#554 : u64, i#51204 : nat, m : m, i#51104 : nat, i#51148 : nat} {{`%`_u32{i#51104}(n):Bu32} {x:Bmemidx} {`%`_u64{i#51148}(m):Bu64}} => (x, {`ALIGN`{u32#36} `%`_u32{i#51182}((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat)), `OFFSET`{u64#554} `%`_u64{i#51204}(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) + prod{i#54944 : nat, l : labelidx, i#54943 : nat, i#54896 : nat, i#54895 : nat} `%`_byte{i#54896}(l!`%`_labelidx{i#54895}.0):Bbyte => `%`_laneidx{i#54944}(l!`%`_labelidx{i#54943}.0) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec rec { @@ -7677,1001 +119236,1001 @@ 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 + prod 0x00 => `UNREACHABLE`_instr ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:9.5-9.16 - prod 0x01 => NOP_instr + prod 0x01 => `NOP`_instr ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:10.5-10.17 - prod 0x1A => DROP_instr + prod 0x1A => `DROP`_instr ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:11.5-11.19 - prod 0x1B => SELECT_instr(?()) + prod{`valtype*?#11` : valtype*?} 0x1B => `SELECT`_instr{`valtype*?#11`}(?()) ;; ../../../../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*`})) + prod{`valtype*?#13` : valtype*?, `t*` : valtype*} {{0x1C} {t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype)}} => `SELECT`_instr{`valtype*?#13`}(?(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*`}) + prod{blocktype#31 : blocktype, `instr*#2348` : instr*, bt : blocktype, `in*` : instr*} {{0x02} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => `BLOCK`_instr{blocktype#31, `instr*#2348`}(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*`}) + prod{blocktype#33 : blocktype, `instr*#2350` : instr*, bt : blocktype, `in*` : instr*} {{0x03} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => `LOOP`_instr{blocktype#33, `instr*#2350`}(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*`}, []) + prod{blocktype#35 : blocktype, `instr*#2352` : instr*, bt : blocktype, `in*` : instr*} {{0x04} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => `IF%%ELSE%`_instr{blocktype#35, `instr*#2352`}(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*`}) + prod{blocktype#37 : blocktype, `instr*#2355` : instr*, 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{blocktype#37, `instr*#2355`}(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) + prod{tagidx#21 : tagidx, x : idx} {{0x08} {x:Btagidx}} => `THROW`_instr{tagidx#21}(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:41.5-41.22 - prod 0x0A => THROW_REF_instr + 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) + prod{labelidx#101 : labelidx, l : labelidx} {{0x0C} {l:Blabelidx}} => `BR`_instr{labelidx#101}(l) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:43.5-43.32 - prod{l : labelidx} {{0x0D} {l:Blabelidx}} => BR_IF_instr(l) + prod{labelidx#103 : labelidx, l : labelidx} {{0x0D} {l:Blabelidx}} => `BR_IF`_instr{labelidx#103}(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) + prod{`labelidx*#54` : labelidx*, labelidx#105 : labelidx, `l*` : labelidx*, l_n : labelidx} {{0x0E} {l*{l <- `l*`}:Blist(syntax labelidx, grammar Blabelidx)} {l_n:Blabelidx}} => `BR_TABLE`_instr{`labelidx*#54`, labelidx#105}(l*{l <- `l*`}, l_n) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:45.5-45.19 - prod 0x0F => RETURN_instr + 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) + prod{funcidx#3163 : funcidx, x : idx} {{0x10} {x:Bfuncidx}} => `CALL`_instr{funcidx#3163}(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)) + prod{tableidx#125 : tableidx, typeuse#69 : typeuse, x : idx, typeidx#1936 : typeidx, y : idx} {{0x11} {y:Btypeidx} {x:Btableidx}} => `CALL_INDIRECT`_instr{tableidx#125, typeuse#69}(x, `_IDX`_typeuse{typeidx#1936}(y)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:48.5-48.37 - prod{x : idx} {{0x12} {x:Bfuncidx}} => RETURN_CALL_instr(x) + prod{funcidx#3165 : funcidx, x : idx} {{0x12} {x:Bfuncidx}} => `RETURN_CALL`_instr{funcidx#3165}(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)) + prod{tableidx#127 : tableidx, typeuse#71 : typeuse, x : idx, typeidx#1938 : typeidx, y : idx} {{0x13} {y:Btypeidx} {x:Btableidx}} => `RETURN_CALL_INDIRECT`_instr{tableidx#127, typeuse#71}(x, `_IDX`_typeuse{typeidx#1938}(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)) + prod{typeuse#73 : typeuse, typeidx#1940 : typeidx, x : idx} {{0x14} {x:Btypeidx}} => `CALL_REF`_instr{typeuse#73}(`_IDX`_typeuse{typeidx#1940}(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)) + prod{typeuse#75 : typeuse, typeidx#1942 : typeidx, x : idx} {{0x15} {x:Btypeidx}} => `RETURN_CALL_REF`_instr{typeuse#75}(`_IDX`_typeuse{typeidx#1942}(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*`}) + prod{blocktype#39 : blocktype, `instr*#2358` : instr*, bt : blocktype, `X*#13196` : catch*, `c*` : catch*, `in*` : instr*} {{0x1F} {bt:Bblocktype} {c*{c <- `c*`}:Blist(syntax catch, grammar Bcatch)} {in:Binstr*{in <- `in*`}} {0x0B}} => `TRY_TABLE`_instr{blocktype#39, `instr*#2358`}(bt, `%`_list{`X*#13196`}(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) + prod{labelidx#107 : labelidx, l : labelidx} {{0xD5} {l:Blabelidx}} => `BR_ON_NULL`_instr{labelidx#107}(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) + prod{labelidx#109 : labelidx, l : labelidx} {{0xD6} {l:Blabelidx}} => `BR_ON_NON_NULL`_instr{labelidx#109}(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)) + prod{labelidx#111 : labelidx, reftype#3963 : reftype, l : labelidx, `null?#1579` : null?, heaptype#1641 : heaptype, `null_1?` : null?, ht_1 : heaptype, `null?#1591` : null?, heaptype#1653 : heaptype, `null_2?` : null?, ht_2 : heaptype, i#50095 : nat} {{0xFB} {`%`_u32{i#50095}(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{labelidx#111, reftype#3963}(l, `REF`_reftype{`null?#1579`, heaptype#1641}(null_1?{null_1 <- `null_1?`}, ht_1), `REF`_reftype{`null?#1591`, heaptype#1653}(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)) + prod{labelidx#113 : labelidx, reftype#3966 : reftype, l : labelidx, `null?#1603` : null?, heaptype#1665 : heaptype, `null_1?` : null?, ht_1 : heaptype, `null?#1615` : null?, heaptype#1677 : heaptype, `null_2?` : null?, ht_2 : heaptype, i#50147 : nat} {{0xFB} {`%`_u32{i#50147}(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{labelidx#113, reftype#3966}(l, `REF`_reftype{`null?#1603`, heaptype#1665}(null_1?{null_1 <- `null_1?`}, ht_1), `REF`_reftype{`null?#1615`, heaptype#1677}(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) + prod{localidx#21 : localidx, x : idx} {{0x20} {x:Blocalidx}} => `LOCAL.GET`_instr{localidx#21}(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:72.5-72.36 - prod{x : idx} {{0x21} {x:Blocalidx}} => LOCAL.SET_instr(x) + prod{localidx#23 : localidx, x : idx} {{0x21} {x:Blocalidx}} => `LOCAL.SET`_instr{localidx#23}(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:73.5-73.36 - prod{x : idx} {{0x22} {x:Blocalidx}} => LOCAL.TEE_instr(x) + prod{localidx#25 : localidx, x : idx} {{0x22} {x:Blocalidx}} => `LOCAL.TEE`_instr{localidx#25}(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:77.5-77.38 - prod{x : idx} {{0x23} {x:Bglobalidx}} => GLOBAL.GET_instr(x) + prod{globalidx#25 : globalidx, x : idx} {{0x23} {x:Bglobalidx}} => `GLOBAL.GET`_instr{globalidx#25}(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:78.5-78.38 - prod{x : idx} {{0x24} {x:Bglobalidx}} => GLOBAL.SET_instr(x) + prod{globalidx#27 : globalidx, x : idx} {{0x24} {x:Bglobalidx}} => `GLOBAL.SET`_instr{globalidx#27}(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:85.5-85.36 - prod{x : idx} {{0x25} {x:Btableidx}} => TABLE.GET_instr(x) + prod{tableidx#129 : tableidx, x : idx} {{0x25} {x:Btableidx}} => `TABLE.GET`_instr{tableidx#129}(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:86.5-86.36 - prod{x : idx} {{0x26} {x:Btableidx}} => TABLE.SET_instr(x) + prod{tableidx#131 : tableidx, x : idx} {{0x26} {x:Btableidx}} => `TABLE.SET`_instr{tableidx#131}(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) + prod{tableidx#133 : tableidx, elemidx#49 : elemidx, x : idx, y : idx, i#50586 : nat} {{0xFC} {`%`_u32{i#50586}(12):Bu32} {y:Belemidx} {x:Btableidx}} => `TABLE.INIT`_instr{tableidx#133, elemidx#49}(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) + prod{elemidx#51 : elemidx, x : idx, i#50673 : nat} {{0xFC} {`%`_u32{i#50673}(13):Bu32} {x:Belemidx}} => `ELEM.DROP`_instr{elemidx#51}(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) + prod{tableidx#135 : tableidx, x_1 : idx, x_2 : idx, i#50729 : nat} {{0xFC} {`%`_u32{i#50729}(14):Bu32} {x_1:Btableidx} {x_2:Btableidx}} => `TABLE.COPY`_instr{tableidx#135}(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) + prod{tableidx#138 : tableidx, x : idx, i#50816 : nat} {{0xFC} {`%`_u32{i#50816}(15):Bu32} {x:Btableidx}} => `TABLE.GROW`_instr{tableidx#138}(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) + prod{tableidx#140 : tableidx, x : idx, i#50872 : nat} {{0xFC} {`%`_u32{i#50872}(16):Bu32} {x:Btableidx}} => `TABLE.SIZE`_instr{tableidx#140}(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) + prod{tableidx#142 : tableidx, x : idx, i#50928 : nat} {{0xFC} {`%`_u32{i#50928}(17):Bu32} {x:Btableidx}} => `TABLE.FILL`_instr{tableidx#142}(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) + prod{`numtype?#21` : numtype?, memidx#171 : memidx, memarg#91 : memarg, x : idx, ao : memarg} {{0x28} {(x, ao):Bmemarg}} => `LOAD`_instr{`numtype?#21`, memidx#171, memarg#91}(`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) + prod{`numtype?#22` : numtype?, memidx#173 : memidx, memarg#93 : memarg, x : idx, ao : memarg} {{0x29} {(x, ao):Bmemarg}} => `LOAD`_instr{`numtype?#22`, memidx#173, memarg#93}(`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) + prod{`numtype?#23` : numtype?, memidx#175 : memidx, memarg#95 : memarg, x : idx, ao : memarg} {{0x2A} {(x, ao):Bmemarg}} => `LOAD`_instr{`numtype?#23`, memidx#175, memarg#95}(`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) + prod{`numtype?#24` : numtype?, memidx#177 : memidx, memarg#97 : memarg, x : idx, ao : memarg} {{0x2B} {(x, ao):Bmemarg}} => `LOAD`_instr{`numtype?#24`, memidx#177, memarg#97}(`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) + prod{`numtype?#25` : numtype?, memidx#179 : memidx, memarg#99 : memarg, sz#558 : sz, sx#426 : sx, i#51346 : nat, i#51353 : nat, x : idx, ao : memarg} {{0x2C} {(x, ao):Bmemarg}} => `LOAD`_instr{`numtype?#25`, memidx#179, memarg#99}(`I32`_numtype, ?(`%_%`_loadop_{sz#558, sx#426, i#51346}(`%`_sz{i#51353}(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) + prod{`numtype?#26` : numtype?, memidx#181 : memidx, memarg#101 : memarg, sz#576 : sz, sx#444 : sx, i#51405 : nat, i#51412 : nat, x : idx, ao : memarg} {{0x2D} {(x, ao):Bmemarg}} => `LOAD`_instr{`numtype?#26`, memidx#181, memarg#101}(`I32`_numtype, ?(`%_%`_loadop_{sz#576, sx#444, i#51405}(`%`_sz{i#51412}(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) + prod{`numtype?#27` : numtype?, memidx#183 : memidx, memarg#103 : memarg, sz#594 : sz, sx#462 : sx, i#51464 : nat, i#51471 : nat, x : idx, ao : memarg} {{0x2E} {(x, ao):Bmemarg}} => `LOAD`_instr{`numtype?#27`, memidx#183, memarg#103}(`I32`_numtype, ?(`%_%`_loadop_{sz#594, sx#462, i#51464}(`%`_sz{i#51471}(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) + prod{`numtype?#28` : numtype?, memidx#185 : memidx, memarg#105 : memarg, sz#612 : sz, sx#480 : sx, i#51523 : nat, i#51530 : nat, x : idx, ao : memarg} {{0x2F} {(x, ao):Bmemarg}} => `LOAD`_instr{`numtype?#28`, memidx#185, memarg#105}(`I32`_numtype, ?(`%_%`_loadop_{sz#612, sx#480, i#51523}(`%`_sz{i#51530}(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) + prod{`numtype?#29` : numtype?, memidx#187 : memidx, memarg#107 : memarg, sz#630 : sz, sx#498 : sx, i#51582 : nat, i#51589 : nat, x : idx, ao : memarg} {{0x30} {(x, ao):Bmemarg}} => `LOAD`_instr{`numtype?#29`, memidx#187, memarg#107}(`I64`_numtype, ?(`%_%`_loadop_{sz#630, sx#498, i#51582}(`%`_sz{i#51589}(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) + prod{`numtype?#30` : numtype?, memidx#189 : memidx, memarg#109 : memarg, sz#648 : sz, sx#516 : sx, i#51641 : nat, i#51648 : nat, x : idx, ao : memarg} {{0x31} {(x, ao):Bmemarg}} => `LOAD`_instr{`numtype?#30`, memidx#189, memarg#109}(`I64`_numtype, ?(`%_%`_loadop_{sz#648, sx#516, i#51641}(`%`_sz{i#51648}(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) + prod{`numtype?#31` : numtype?, memidx#191 : memidx, memarg#111 : memarg, sz#666 : sz, sx#534 : sx, i#51700 : nat, i#51707 : nat, x : idx, ao : memarg} {{0x32} {(x, ao):Bmemarg}} => `LOAD`_instr{`numtype?#31`, memidx#191, memarg#111}(`I64`_numtype, ?(`%_%`_loadop_{sz#666, sx#534, i#51700}(`%`_sz{i#51707}(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) + prod{`numtype?#32` : numtype?, memidx#193 : memidx, memarg#113 : memarg, sz#684 : sz, sx#552 : sx, i#51759 : nat, i#51766 : nat, x : idx, ao : memarg} {{0x33} {(x, ao):Bmemarg}} => `LOAD`_instr{`numtype?#32`, memidx#193, memarg#113}(`I64`_numtype, ?(`%_%`_loadop_{sz#684, sx#552, i#51759}(`%`_sz{i#51766}(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) + prod{`numtype?#33` : numtype?, memidx#195 : memidx, memarg#115 : memarg, sz#702 : sz, sx#570 : sx, i#51818 : nat, i#51825 : nat, x : idx, ao : memarg} {{0x34} {(x, ao):Bmemarg}} => `LOAD`_instr{`numtype?#33`, memidx#195, memarg#115}(`I64`_numtype, ?(`%_%`_loadop_{sz#702, sx#570, i#51818}(`%`_sz{i#51825}(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) + prod{`numtype?#34` : numtype?, memidx#197 : memidx, memarg#117 : memarg, sz#720 : sz, sx#588 : sx, i#51877 : nat, i#51884 : nat, x : idx, ao : memarg} {{0x35} {(x, ao):Bmemarg}} => `LOAD`_instr{`numtype?#34`, memidx#197, memarg#117}(`I64`_numtype, ?(`%_%`_loadop_{sz#720, sx#588, i#51877}(`%`_sz{i#51884}(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) + prod{`numtype?#35` : numtype?, memidx#199 : memidx, memarg#119 : memarg, x : idx, ao : memarg} {{0x36} {(x, ao):Bmemarg}} => `STORE`_instr{`numtype?#35`, memidx#199, memarg#119}(`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) + prod{`numtype?#36` : numtype?, memidx#201 : memidx, memarg#121 : memarg, x : idx, ao : memarg} {{0x37} {(x, ao):Bmemarg}} => `STORE`_instr{`numtype?#36`, memidx#201, memarg#121}(`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) + prod{`numtype?#37` : numtype?, memidx#203 : memidx, memarg#123 : memarg, x : idx, ao : memarg} {{0x38} {(x, ao):Bmemarg}} => `STORE`_instr{`numtype?#37`, memidx#203, memarg#123}(`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) + prod{`numtype?#38` : numtype?, memidx#205 : memidx, memarg#125 : memarg, x : idx, ao : memarg} {{0x39} {(x, ao):Bmemarg}} => `STORE`_instr{`numtype?#38`, memidx#205, memarg#125}(`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) + prod{`numtype?#39` : numtype?, memidx#207 : memidx, memarg#127 : memarg, sz#733 : sz, i#52055 : nat, i#52056 : nat, x : idx, ao : memarg} {{0x3A} {(x, ao):Bmemarg}} => `STORE`_instr{`numtype?#39`, memidx#207, memarg#127}(`I32`_numtype, ?(`%`_storeop_{sz#733, i#52055}(`%`_sz{i#52056}(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) + prod{`numtype?#40` : numtype?, memidx#209 : memidx, memarg#129 : memarg, sz#746 : sz, i#52123 : nat, i#52124 : nat, x : idx, ao : memarg} {{0x3B} {(x, ao):Bmemarg}} => `STORE`_instr{`numtype?#40`, memidx#209, memarg#129}(`I32`_numtype, ?(`%`_storeop_{sz#746, i#52123}(`%`_sz{i#52124}(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) + prod{`numtype?#41` : numtype?, memidx#211 : memidx, memarg#131 : memarg, sz#759 : sz, i#52191 : nat, i#52192 : nat, x : idx, ao : memarg} {{0x3C} {(x, ao):Bmemarg}} => `STORE`_instr{`numtype?#41`, memidx#211, memarg#131}(`I64`_numtype, ?(`%`_storeop_{sz#759, i#52191}(`%`_sz{i#52192}(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) + prod{`numtype?#42` : numtype?, memidx#213 : memidx, memarg#133 : memarg, sz#772 : sz, i#52259 : nat, i#52260 : nat, x : idx, ao : memarg} {{0x3D} {(x, ao):Bmemarg}} => `STORE`_instr{`numtype?#42`, memidx#213, memarg#133}(`I64`_numtype, ?(`%`_storeop_{sz#772, i#52259}(`%`_sz{i#52260}(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) + prod{`numtype?#43` : numtype?, memidx#215 : memidx, memarg#135 : memarg, sz#785 : sz, i#52327 : nat, i#52328 : nat, x : idx, ao : memarg} {{0x3E} {(x, ao):Bmemarg}} => `STORE`_instr{`numtype?#43`, memidx#215, memarg#135}(`I64`_numtype, ?(`%`_storeop_{sz#785, i#52327}(`%`_sz{i#52328}(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) + prod{memidx#217 : memidx, x : idx} {{0x3F} {x:Bmemidx}} => `MEMORY.SIZE`_instr{memidx#217}(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:129.5-129.36 - prod{x : idx} {{0x40} {x:Bmemidx}} => MEMORY.GROW_instr(x) + prod{memidx#219 : memidx, x : idx} {{0x40} {x:Bmemidx}} => `MEMORY.GROW`_instr{memidx#219}(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) + prod{memidx#221 : memidx, dataidx#47 : dataidx, x : idx, y : idx, i#52427 : nat} {{0xFC} {`%`_u32{i#52427}(8):Bu32} {y:Bdataidx} {x:Bmemidx}} => `MEMORY.INIT`_instr{memidx#221, dataidx#47}(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) + prod{dataidx#49 : dataidx, x : idx, i#52514 : nat} {{0xFC} {`%`_u32{i#52514}(9):Bu32} {x:Bdataidx}} => `DATA.DROP`_instr{dataidx#49}(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) + prod{memidx#223 : memidx, x_1 : idx, x_2 : idx, i#52570 : nat} {{0xFC} {`%`_u32{i#52570}(10):Bu32} {x_1:Bmemidx} {x_2:Bmemidx}} => `MEMORY.COPY`_instr{memidx#223}(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) + prod{memidx#226 : memidx, x : idx, i#52657 : nat} {{0xFC} {`%`_u32{i#52657}(11):Bu32} {x:Bmemidx}} => `MEMORY.FILL`_instr{memidx#226}(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:140.5-140.37 - prod{ht : heaptype} {{0xD0} {ht:Bheaptype}} => REF.NULL_instr(ht) + prod{heaptype#1679 : heaptype, ht : heaptype} {{0xD0} {ht:Bheaptype}} => `REF.NULL`_instr{heaptype#1679}(ht) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:141.5-141.24 - prod 0xD1 => REF.IS_NULL_instr + 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) + prod{funcidx#3167 : funcidx, x : idx} {{0xD2} {x:Bfuncidx}} => `REF.FUNC`_instr{funcidx#3167}(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:143.5-143.19 - prod 0xD3 => REF.EQ_instr + 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 + 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)) + prod{reftype#3969 : reftype, `null?#1627` : null?, heaptype#1691 : heaptype, ht : heaptype, i#52744 : nat} {{0xFB} {`%`_u32{i#52744}(20):Bu32} {ht:Bheaptype}} => `REF.TEST`_instr{reftype#3969}(`REF`_reftype{`null?#1627`, heaptype#1691}(?(), 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)) + prod{reftype#3971 : reftype, `null?#1639` : null?, heaptype#1703 : heaptype, ht : heaptype, i#52769 : nat} {{0xFB} {`%`_u32{i#52769}(21):Bu32} {ht:Bheaptype}} => `REF.TEST`_instr{reftype#3971}(`REF`_reftype{`null?#1639`, heaptype#1703}(?(`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)) + prod{reftype#3973 : reftype, `null?#1651` : null?, heaptype#1715 : heaptype, ht : heaptype, i#52794 : nat} {{0xFB} {`%`_u32{i#52794}(22):Bu32} {ht:Bheaptype}} => `REF.CAST`_instr{reftype#3973}(`REF`_reftype{`null?#1651`, heaptype#1715}(?(), 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)) + prod{reftype#3975 : reftype, `null?#1663` : null?, heaptype#1727 : heaptype, ht : heaptype, i#52819 : nat} {{0xFB} {`%`_u32{i#52819}(23):Bu32} {ht:Bheaptype}} => `REF.CAST`_instr{reftype#3975}(`REF`_reftype{`null?#1663`, heaptype#1727}(?(`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) + prod{typeidx#1944 : typeidx, x : idx, i#52844 : nat} {{0xFB} {`%`_u32{i#52844}(0):Bu32} {x:Btypeidx}} => `STRUCT.NEW`_instr{typeidx#1944}(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) + prod{typeidx#1946 : typeidx, x : idx, i#52900 : nat} {{0xFB} {`%`_u32{i#52900}(1):Bu32} {x:Btypeidx}} => `STRUCT.NEW_DEFAULT`_instr{typeidx#1946}(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) + prod{`sx?#31` : sx?, typeidx#1948 : typeidx, u32#37 : u32, x : idx, i : u32, i#52956 : nat} {{0xFB} {`%`_u32{i#52956}(2):Bu32} {x:Btypeidx} {i:Bu32}} => `STRUCT.GET`_instr{`sx?#31`, typeidx#1948, u32#37}(?(), 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) + prod{`sx?#33` : sx?, typeidx#1950 : typeidx, u32#39 : u32, x : idx, i : u32, i#53041 : nat} {{0xFB} {`%`_u32{i#53041}(3):Bu32} {x:Btypeidx} {i:Bu32}} => `STRUCT.GET`_instr{`sx?#33`, typeidx#1950, u32#39}(?(`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) + prod{`sx?#35` : sx?, typeidx#1952 : typeidx, u32#41 : u32, x : idx, i : u32, i#53148 : nat} {{0xFB} {`%`_u32{i#53148}(4):Bu32} {x:Btypeidx} {i:Bu32}} => `STRUCT.GET`_instr{`sx?#35`, typeidx#1952, u32#41}(?(`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) + prod{typeidx#1954 : typeidx, u32#43 : u32, x : idx, i : u32, i#53255 : nat} {{0xFB} {`%`_u32{i#53255}(5):Bu32} {x:Btypeidx} {i:Bu32}} => `STRUCT.SET`_instr{typeidx#1954, u32#43}(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) + prod{typeidx#1956 : typeidx, x : idx, i#53340 : nat} {{0xFB} {`%`_u32{i#53340}(6):Bu32} {x:Btypeidx}} => `ARRAY.NEW`_instr{typeidx#1956}(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) + prod{typeidx#1958 : typeidx, x : idx, i#53396 : nat} {{0xFB} {`%`_u32{i#53396}(7):Bu32} {x:Btypeidx}} => `ARRAY.NEW_DEFAULT`_instr{typeidx#1958}(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)) + prod{typeidx#1960 : typeidx, u32#45 : u32, x : idx, i#53536 : nat, n : n, i#53452 : nat, i#53496 : nat} {{0xFB} {`%`_u32{i#53452}(8):Bu32} {x:Btypeidx} {`%`_u32{i#53496}(n):Bu32}} => `ARRAY.NEW_FIXED`_instr{typeidx#1960, u32#45}(x, `%`_u32{i#53536}(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) + prod{typeidx#1962 : typeidx, dataidx#51 : dataidx, x : idx, y : idx, i#53559 : nat} {{0xFB} {`%`_u32{i#53559}(9):Bu32} {x:Btypeidx} {y:Bdataidx}} => `ARRAY.NEW_DATA`_instr{typeidx#1962, dataidx#51}(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) + prod{typeidx#1964 : typeidx, elemidx#53 : elemidx, x : idx, y : idx, i#53646 : nat} {{0xFB} {`%`_u32{i#53646}(10):Bu32} {x:Btypeidx} {y:Belemidx}} => `ARRAY.NEW_ELEM`_instr{typeidx#1964, elemidx#53}(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) + prod{`sx?#37` : sx?, typeidx#1966 : typeidx, x : idx, i#53733 : nat} {{0xFB} {`%`_u32{i#53733}(11):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr{`sx?#37`, typeidx#1966}(?(), 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) + prod{`sx?#39` : sx?, typeidx#1968 : typeidx, x : idx, i#53789 : nat} {{0xFB} {`%`_u32{i#53789}(12):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr{`sx?#39`, typeidx#1968}(?(`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) + prod{`sx?#41` : sx?, typeidx#1970 : typeidx, x : idx, i#53889 : nat} {{0xFB} {`%`_u32{i#53889}(13):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr{`sx?#41`, typeidx#1970}(?(`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) + prod{typeidx#1972 : typeidx, x : idx, i#53989 : nat} {{0xFB} {`%`_u32{i#53989}(14):Bu32} {x:Btypeidx}} => `ARRAY.SET`_instr{typeidx#1972}(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:170.5-170.30 - prod {{0xFB} {`%`_u32(15):Bu32}} => ARRAY.LEN_instr + prod{i#54045 : nat} {{0xFB} {`%`_u32{i#54045}(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) + prod{typeidx#1974 : typeidx, x : idx, i#54070 : nat} {{0xFB} {`%`_u32{i#54070}(16):Bu32} {x:Btypeidx}} => `ARRAY.FILL`_instr{typeidx#1974}(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) + prod{typeidx#1976 : typeidx, x_1 : idx, x_2 : idx, i#54126 : nat} {{0xFB} {`%`_u32{i#54126}(17):Bu32} {x_1:Btypeidx} {x_2:Btypeidx}} => `ARRAY.COPY`_instr{typeidx#1976}(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) + prod{typeidx#1979 : typeidx, dataidx#53 : dataidx, x : idx, y : idx, i#54213 : nat} {{0xFB} {`%`_u32{i#54213}(18):Bu32} {x:Btypeidx} {y:Bdataidx}} => `ARRAY.INIT_DATA`_instr{typeidx#1979, dataidx#53}(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) + prod{typeidx#1981 : typeidx, elemidx#55 : elemidx, x : idx, y : idx, i#54300 : nat} {{0xFB} {`%`_u32{i#54300}(19):Bu32} {x:Btypeidx} {y:Belemidx}} => `ARRAY.INIT_ELEM`_instr{typeidx#1981, elemidx#55}(x, y) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:178.5-178.39 - prod {{0xFB} {`%`_u32(26):Bu32}} => ANY.CONVERT_EXTERN_instr + prod{i#54387 : nat} {{0xFB} {`%`_u32{i#54387}(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 + prod{i#54412 : nat} {{0xFB} {`%`_u32{i#54412}(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 + prod{i#54437 : nat} {{0xFB} {`%`_u32{i#54437}(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) + prod{sx#590 : sx, i#54462 : nat} {{0xFB} {`%`_u32{i#54462}(29):Bu32}} => `I31.GET`_instr{sx#590}(`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) + prod{sx#592 : sx, i#54487 : nat} {{0xFB} {`%`_u32{i#54487}(30):Bu32}} => `I31.GET`_instr{sx#592}(`U`_sx) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:192.5-192.31 - prod{n : n} {{0x41} {`%`_u32(n):Bu32}} => CONST_instr(I32_numtype, `%`_num_(n)) + prod{numtype#654 : numtype, i#54540 : nat, n : n, i#54514 : nat} {{0x41} {`%`_u32{i#54514}(n):Bu32}} => `CONST`_instr{numtype#654}(`I32`_numtype, `%`_num_{i#54540}(n)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:193.5-193.31 - prod{n : n} {{0x42} {`%`_u64(n):Bu64}} => CONST_instr(I64_numtype, `%`_num_(n)) + prod{numtype#656 : numtype, i#54591 : nat, n : n, i#54565 : nat} {{0x42} {`%`_u64{i#54565}(n):Bu64}} => `CONST`_instr{numtype#656}(`I64`_numtype, `%`_num_{i#54591}(n)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:194.5-194.31 - prod{p : f32} {{0x43} {p:Bf32}} => CONST_instr(F32_numtype, p) + prod{numtype#658 : numtype, p : f32} {{0x43} {p:Bf32}} => `CONST`_instr{numtype#658}(`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) + prod{numtype#660 : numtype, p : f64} {{0x44} {p:Bf64}} => `CONST`_instr{numtype#660}(`F64`_numtype, p) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:199.5-199.27 - prod 0x45 => TESTOP_instr(I32_numtype, EQZ_testop_) + prod{numtype#662 : numtype} 0x45 => `TESTOP`_instr{numtype#662}(`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_) + prod{numtype#664 : numtype} 0x46 => `RELOP`_instr{numtype#664}(`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_) + prod{numtype#666 : numtype} 0x47 => `RELOP`_instr{numtype#666}(`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)) + prod{numtype#668 : numtype, sx#836 : sx} 0x48 => `RELOP`_instr{numtype#668}(`I32`_numtype, `LT`_relop_{sx#836}(`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)) + prod{numtype#670 : numtype, sx#960 : sx} 0x49 => `RELOP`_instr{numtype#670}(`I32`_numtype, `LT`_relop_{sx#960}(`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)) + prod{numtype#672 : numtype, sx#1084 : sx} 0x4A => `RELOP`_instr{numtype#672}(`I32`_numtype, `GT`_relop_{sx#1084}(`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)) + prod{numtype#674 : numtype, sx#1208 : sx} 0x4B => `RELOP`_instr{numtype#674}(`I32`_numtype, `GT`_relop_{sx#1208}(`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)) + prod{numtype#676 : numtype, sx#1332 : sx} 0x4C => `RELOP`_instr{numtype#676}(`I32`_numtype, `LE`_relop_{sx#1332}(`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)) + prod{numtype#678 : numtype, sx#1456 : sx} 0x4D => `RELOP`_instr{numtype#678}(`I32`_numtype, `LE`_relop_{sx#1456}(`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)) + prod{numtype#680 : numtype, sx#1580 : sx} 0x4E => `RELOP`_instr{numtype#680}(`I32`_numtype, `GE`_relop_{sx#1580}(`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)) + prod{numtype#682 : numtype, sx#1704 : sx} 0x4F => `RELOP`_instr{numtype#682}(`I32`_numtype, `GE`_relop_{sx#1704}(`U`_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:216.5-216.27 - prod 0x50 => TESTOP_instr(I64_numtype, EQZ_testop_) + prod{numtype#684 : numtype} 0x50 => `TESTOP`_instr{numtype#684}(`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_) + prod{numtype#686 : numtype} 0x51 => `RELOP`_instr{numtype#686}(`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_) + prod{numtype#688 : numtype} 0x52 => `RELOP`_instr{numtype#688}(`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)) + prod{numtype#690 : numtype, sx#1948 : sx} 0x53 => `RELOP`_instr{numtype#690}(`I64`_numtype, `LT`_relop_{sx#1948}(`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)) + prod{numtype#692 : numtype, sx#2072 : sx} 0x54 => `RELOP`_instr{numtype#692}(`I64`_numtype, `LT`_relop_{sx#2072}(`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)) + prod{numtype#694 : numtype, sx#2196 : sx} 0x55 => `RELOP`_instr{numtype#694}(`I64`_numtype, `GT`_relop_{sx#2196}(`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)) + prod{numtype#696 : numtype, sx#2320 : sx} 0x56 => `RELOP`_instr{numtype#696}(`I64`_numtype, `GT`_relop_{sx#2320}(`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)) + prod{numtype#698 : numtype, sx#2444 : sx} 0x57 => `RELOP`_instr{numtype#698}(`I64`_numtype, `LE`_relop_{sx#2444}(`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)) + prod{numtype#700 : numtype, sx#2568 : sx} 0x58 => `RELOP`_instr{numtype#700}(`I64`_numtype, `LE`_relop_{sx#2568}(`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)) + prod{numtype#702 : numtype, sx#2692 : sx} 0x59 => `RELOP`_instr{numtype#702}(`I64`_numtype, `GE`_relop_{sx#2692}(`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)) + prod{numtype#704 : numtype, sx#2816 : sx} 0x5A => `RELOP`_instr{numtype#704}(`I64`_numtype, `GE`_relop_{sx#2816}(`U`_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:233.5-233.25 - prod 0x5B => RELOP_instr(F32_numtype, EQ_relop_) + prod{numtype#706 : numtype} 0x5B => `RELOP`_instr{numtype#706}(`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_) + prod{numtype#708 : numtype} 0x5C => `RELOP`_instr{numtype#708}(`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_) + prod{numtype#710 : numtype} 0x5D => `RELOP`_instr{numtype#710}(`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_) + prod{numtype#712 : numtype} 0x5E => `RELOP`_instr{numtype#712}(`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_) + prod{numtype#714 : numtype} 0x5F => `RELOP`_instr{numtype#714}(`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_) + prod{numtype#716 : numtype} 0x60 => `RELOP`_instr{numtype#716}(`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_) + prod{numtype#718 : numtype} 0x61 => `RELOP`_instr{numtype#718}(`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_) + prod{numtype#720 : numtype} 0x62 => `RELOP`_instr{numtype#720}(`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_) + prod{numtype#722 : numtype} 0x63 => `RELOP`_instr{numtype#722}(`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_) + prod{numtype#724 : numtype} 0x64 => `RELOP`_instr{numtype#724}(`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_) + prod{numtype#726 : numtype} 0x65 => `RELOP`_instr{numtype#726}(`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_) + prod{numtype#728 : numtype} 0x66 => `RELOP`_instr{numtype#728}(`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_) + prod{numtype#730 : numtype} 0x67 => `UNOP`_instr{numtype#730}(`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_) + prod{numtype#732 : numtype} 0x68 => `UNOP`_instr{numtype#732}(`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_) + prod{numtype#734 : numtype} 0x69 => `UNOP`_instr{numtype#734}(`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_) + prod{numtype#736 : numtype} 0x6A => `BINOP`_instr{numtype#736}(`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_) + prod{numtype#738 : numtype} 0x6B => `BINOP`_instr{numtype#738}(`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_) + prod{numtype#740 : numtype} 0x6C => `BINOP`_instr{numtype#740}(`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)) + prod{numtype#742 : numtype, sx#3045 : sx} 0x6D => `BINOP`_instr{numtype#742}(`I32`_numtype, `DIV`_binop_{sx#3045}(`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)) + prod{numtype#744 : numtype, sx#3139 : sx} 0x6E => `BINOP`_instr{numtype#744}(`I32`_numtype, `DIV`_binop_{sx#3139}(`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)) + prod{numtype#746 : numtype, sx#3233 : sx} 0x6F => `BINOP`_instr{numtype#746}(`I32`_numtype, `REM`_binop_{sx#3233}(`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)) + prod{numtype#748 : numtype, sx#3327 : sx} 0x70 => `BINOP`_instr{numtype#748}(`I32`_numtype, `REM`_binop_{sx#3327}(`U`_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:264.5-264.26 - prod 0x71 => BINOP_instr(I32_numtype, AND_binop_) + prod{numtype#750 : numtype} 0x71 => `BINOP`_instr{numtype#750}(`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_) + prod{numtype#752 : numtype} 0x72 => `BINOP`_instr{numtype#752}(`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_) + prod{numtype#754 : numtype} 0x73 => `BINOP`_instr{numtype#754}(`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_) + prod{numtype#756 : numtype} 0x74 => `BINOP`_instr{numtype#756}(`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)) + prod{numtype#758 : numtype, sx#3601 : sx} 0x75 => `BINOP`_instr{numtype#758}(`I32`_numtype, `SHR`_binop_{sx#3601}(`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)) + prod{numtype#760 : numtype, sx#3695 : sx} 0x76 => `BINOP`_instr{numtype#760}(`I32`_numtype, `SHR`_binop_{sx#3695}(`U`_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:270.5-270.27 - prod 0x77 => BINOP_instr(I32_numtype, ROTL_binop_) + prod{numtype#762 : numtype} 0x77 => `BINOP`_instr{numtype#762}(`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_) + prod{numtype#764 : numtype} 0x78 => `BINOP`_instr{numtype#764}(`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_) + prod{numtype#766 : numtype} 0x79 => `UNOP`_instr{numtype#766}(`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_) + prod{numtype#768 : numtype} 0x7A => `UNOP`_instr{numtype#768}(`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_) + prod{numtype#770 : numtype} 0x7B => `UNOP`_instr{numtype#770}(`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))) + prod{numtype#772 : numtype, sz#909 : sz, i#54600 : nat, i#54607 : nat} 0xC0 => `UNOP`_instr{numtype#772}(`I32`_numtype, `EXTEND`_unop_{sz#909, i#54600}(`%`_sz{i#54607}(8))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:282.5-282.32 - prod 0xC1 => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(16))) + prod{numtype#774 : numtype, sz#943 : sz, i#54616 : nat, i#54623 : nat} 0xC1 => `UNOP`_instr{numtype#774}(`I32`_numtype, `EXTEND`_unop_{sz#943, i#54616}(`%`_sz{i#54623}(16))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:286.5-286.31 - prod 0xC2 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(8))) + prod{numtype#776 : numtype, sz#977 : sz, i#54632 : nat, i#54639 : nat} 0xC2 => `UNOP`_instr{numtype#776}(`I64`_numtype, `EXTEND`_unop_{sz#977, i#54632}(`%`_sz{i#54639}(8))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:287.5-287.32 - prod 0xC3 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(16))) + prod{numtype#778 : numtype, sz#1011 : sz, i#54648 : nat, i#54655 : nat} 0xC3 => `UNOP`_instr{numtype#778}(`I64`_numtype, `EXTEND`_unop_{sz#1011, i#54648}(`%`_sz{i#54655}(16))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:288.5-288.32 - prod 0xC4 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(32))) + prod{numtype#780 : numtype, sz#1045 : sz, i#54664 : nat, i#54671 : nat} 0xC4 => `UNOP`_instr{numtype#780}(`I64`_numtype, `EXTEND`_unop_{sz#1045, i#54664}(`%`_sz{i#54671}(32))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:292.5-292.26 - prod 0x7C => BINOP_instr(I64_numtype, ADD_binop_) + prod{numtype#782 : numtype} 0x7C => `BINOP`_instr{numtype#782}(`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_) + prod{numtype#784 : numtype} 0x7D => `BINOP`_instr{numtype#784}(`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_) + prod{numtype#786 : numtype} 0x7E => `BINOP`_instr{numtype#786}(`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)) + prod{numtype#788 : numtype, sx#4014 : sx} 0x7F => `BINOP`_instr{numtype#788}(`I64`_numtype, `DIV`_binop_{sx#4014}(`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)) + prod{numtype#790 : numtype, sx#4108 : sx} 0x80 => `BINOP`_instr{numtype#790}(`I64`_numtype, `DIV`_binop_{sx#4108}(`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)) + prod{numtype#792 : numtype, sx#4202 : sx} 0x81 => `BINOP`_instr{numtype#792}(`I64`_numtype, `REM`_binop_{sx#4202}(`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)) + prod{numtype#794 : numtype, sx#4296 : sx} 0x82 => `BINOP`_instr{numtype#794}(`I64`_numtype, `REM`_binop_{sx#4296}(`U`_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:299.5-299.26 - prod 0x83 => BINOP_instr(I64_numtype, AND_binop_) + prod{numtype#796 : numtype} 0x83 => `BINOP`_instr{numtype#796}(`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_) + prod{numtype#798 : numtype} 0x84 => `BINOP`_instr{numtype#798}(`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_) + prod{numtype#800 : numtype} 0x85 => `BINOP`_instr{numtype#800}(`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_) + prod{numtype#802 : numtype} 0x86 => `BINOP`_instr{numtype#802}(`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)) + prod{numtype#804 : numtype, sx#4570 : sx} 0x87 => `BINOP`_instr{numtype#804}(`I64`_numtype, `SHR`_binop_{sx#4570}(`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)) + prod{numtype#806 : numtype, sx#4664 : sx} 0x88 => `BINOP`_instr{numtype#806}(`I64`_numtype, `SHR`_binop_{sx#4664}(`U`_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:305.5-305.27 - prod 0x89 => BINOP_instr(I64_numtype, ROTL_binop_) + prod{numtype#808 : numtype} 0x89 => `BINOP`_instr{numtype#808}(`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_) + prod{numtype#810 : numtype} 0x8A => `BINOP`_instr{numtype#810}(`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_) + prod{numtype#812 : numtype} 0x8B => `UNOP`_instr{numtype#812}(`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_) + prod{numtype#814 : numtype} 0x8C => `UNOP`_instr{numtype#814}(`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_) + prod{numtype#816 : numtype} 0x8D => `UNOP`_instr{numtype#816}(`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_) + prod{numtype#818 : numtype} 0x8E => `UNOP`_instr{numtype#818}(`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_) + prod{numtype#820 : numtype} 0x8F => `UNOP`_instr{numtype#820}(`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_) + prod{numtype#822 : numtype} 0x90 => `UNOP`_instr{numtype#822}(`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_) + prod{numtype#824 : numtype} 0x91 => `UNOP`_instr{numtype#824}(`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_) + prod{numtype#826 : numtype} 0x92 => `BINOP`_instr{numtype#826}(`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_) + prod{numtype#828 : numtype} 0x93 => `BINOP`_instr{numtype#828}(`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_) + prod{numtype#830 : numtype} 0x94 => `BINOP`_instr{numtype#830}(`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_) + prod{numtype#832 : numtype} 0x95 => `BINOP`_instr{numtype#832}(`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_) + prod{numtype#834 : numtype} 0x96 => `BINOP`_instr{numtype#834}(`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_) + prod{numtype#836 : numtype} 0x97 => `BINOP`_instr{numtype#836}(`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_) + prod{numtype#838 : numtype} 0x98 => `BINOP`_instr{numtype#838}(`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_) + prod{numtype#840 : numtype} 0x99 => `UNOP`_instr{numtype#840}(`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_) + prod{numtype#842 : numtype} 0x9A => `UNOP`_instr{numtype#842}(`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_) + prod{numtype#844 : numtype} 0x9B => `UNOP`_instr{numtype#844}(`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_) + prod{numtype#846 : numtype} 0x9C => `UNOP`_instr{numtype#846}(`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_) + prod{numtype#848 : numtype} 0x9D => `UNOP`_instr{numtype#848}(`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_) + prod{numtype#850 : numtype} 0x9E => `UNOP`_instr{numtype#850}(`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_) + prod{numtype#852 : numtype} 0x9F => `UNOP`_instr{numtype#852}(`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_) + prod{numtype#854 : numtype} 0xA0 => `BINOP`_instr{numtype#854}(`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_) + prod{numtype#856 : numtype} 0xA1 => `BINOP`_instr{numtype#856}(`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_) + prod{numtype#858 : numtype} 0xA2 => `BINOP`_instr{numtype#858}(`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_) + prod{numtype#860 : numtype} 0xA3 => `BINOP`_instr{numtype#860}(`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_) + prod{numtype#862 : numtype} 0xA4 => `BINOP`_instr{numtype#862}(`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_) + prod{numtype#864 : numtype} 0xA5 => `BINOP`_instr{numtype#864}(`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_) + prod{numtype#866 : numtype} 0xA6 => `BINOP`_instr{numtype#866}(`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__) + prod{numtype_1#9 : numtype, numtype_2#9 : numtype} 0xA7 => `CVTOP`_instr{numtype_1#9, numtype_2#9}(`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)) + prod{numtype_1#11 : numtype, numtype_2#11 : numtype, sx#4833 : sx} 0xA8 => `CVTOP`_instr{numtype_1#11, numtype_2#11}(`I32`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#4833}(`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)) + prod{numtype_1#13 : numtype, numtype_2#13 : numtype, sx#4897 : sx} 0xA9 => `CVTOP`_instr{numtype_1#13, numtype_2#13}(`I32`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#4897}(`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)) + prod{numtype_1#15 : numtype, numtype_2#15 : numtype, sx#4961 : sx} 0xAA => `CVTOP`_instr{numtype_1#15, numtype_2#15}(`I32`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#4961}(`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)) + prod{numtype_1#17 : numtype, numtype_2#17 : numtype, sx#5025 : sx} 0xAB => `CVTOP`_instr{numtype_1#17, numtype_2#17}(`I32`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#5025}(`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)) + prod{numtype_1#19 : numtype, numtype_2#19 : numtype, sx#5059 : sx} 0xAC => `CVTOP`_instr{numtype_1#19, numtype_2#19}(`I64`_numtype, `I32`_numtype, `EXTEND`_cvtop__{sx#5059}(`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)) + prod{numtype_1#21 : numtype, numtype_2#21 : numtype, sx#5093 : sx} 0xAD => `CVTOP`_instr{numtype_1#21, numtype_2#21}(`I64`_numtype, `I32`_numtype, `EXTEND`_cvtop__{sx#5093}(`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)) + prod{numtype_1#23 : numtype, numtype_2#23 : numtype, sx#5157 : sx} 0xAE => `CVTOP`_instr{numtype_1#23, numtype_2#23}(`I64`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#5157}(`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)) + prod{numtype_1#25 : numtype, numtype_2#25 : numtype, sx#5221 : sx} 0xAF => `CVTOP`_instr{numtype_1#25, numtype_2#25}(`I64`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#5221}(`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)) + prod{numtype_1#27 : numtype, numtype_2#27 : numtype, sx#5285 : sx} 0xB0 => `CVTOP`_instr{numtype_1#27, numtype_2#27}(`I64`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#5285}(`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)) + prod{numtype_1#29 : numtype, numtype_2#29 : numtype, sx#5349 : sx} 0xB1 => `CVTOP`_instr{numtype_1#29, numtype_2#29}(`I64`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#5349}(`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)) + prod{numtype_1#31 : numtype, numtype_2#31 : numtype, sx#5383 : sx} 0xB2 => `CVTOP`_instr{numtype_1#31, numtype_2#31}(`F32`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#5383}(`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)) + prod{numtype_1#33 : numtype, numtype_2#33 : numtype, sx#5417 : sx} 0xB3 => `CVTOP`_instr{numtype_1#33, numtype_2#33}(`F32`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#5417}(`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)) + prod{numtype_1#35 : numtype, numtype_2#35 : numtype, sx#5451 : sx} 0xB4 => `CVTOP`_instr{numtype_1#35, numtype_2#35}(`F32`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#5451}(`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)) + prod{numtype_1#37 : numtype, numtype_2#37 : numtype, sx#5485 : sx} 0xB5 => `CVTOP`_instr{numtype_1#37, numtype_2#37}(`F32`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#5485}(`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__) + prod{numtype_1#39 : numtype, numtype_2#39 : numtype} 0xB6 => `CVTOP`_instr{numtype_1#39, numtype_2#39}(`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)) + prod{numtype_1#41 : numtype, numtype_2#41 : numtype, sx#5519 : sx} 0xB7 => `CVTOP`_instr{numtype_1#41, numtype_2#41}(`F64`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#5519}(`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)) + prod{numtype_1#43 : numtype, numtype_2#43 : numtype, sx#5553 : sx} 0xB8 => `CVTOP`_instr{numtype_1#43, numtype_2#43}(`F64`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#5553}(`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)) + prod{numtype_1#45 : numtype, numtype_2#45 : numtype, sx#5587 : sx} 0xB9 => `CVTOP`_instr{numtype_1#45, numtype_2#45}(`F64`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#5587}(`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)) + prod{numtype_1#47 : numtype, numtype_2#47 : numtype, sx#5621 : sx} 0xBA => `CVTOP`_instr{numtype_1#47, numtype_2#47}(`F64`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#5621}(`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__) + prod{numtype_1#49 : numtype, numtype_2#49 : numtype} 0xBB => `CVTOP`_instr{numtype_1#49, numtype_2#49}(`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__) + prod{numtype_1#51 : numtype, numtype_2#51 : numtype} 0xBC => `CVTOP`_instr{numtype_1#51, numtype_2#51}(`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__) + prod{numtype_1#53 : numtype, numtype_2#53 : numtype} 0xBD => `CVTOP`_instr{numtype_1#53, numtype_2#53}(`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__) + prod{numtype_1#55 : numtype, numtype_2#55 : numtype} 0xBE => `CVTOP`_instr{numtype_1#55, numtype_2#55}(`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__) + prod{numtype_1#57 : numtype, numtype_2#57 : numtype} 0xBF => `CVTOP`_instr{numtype_1#57, numtype_2#57}(`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)) + prod{numtype_1#59 : numtype, numtype_2#59 : numtype, sx#5775 : sx, i#54694 : nat} {{0xFC} {`%`_u32{i#54694}(0):Bu32}} => `CVTOP`_instr{numtype_1#59, numtype_2#59}(`I32`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#5775}(`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)) + prod{numtype_1#61 : numtype, numtype_2#61 : numtype, sx#5839 : sx, i#54719 : nat} {{0xFC} {`%`_u32{i#54719}(1):Bu32}} => `CVTOP`_instr{numtype_1#61, numtype_2#61}(`I32`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#5839}(`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)) + prod{numtype_1#63 : numtype, numtype_2#63 : numtype, sx#5903 : sx, i#54744 : nat} {{0xFC} {`%`_u32{i#54744}(2):Bu32}} => `CVTOP`_instr{numtype_1#63, numtype_2#63}(`I32`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#5903}(`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)) + prod{numtype_1#65 : numtype, numtype_2#65 : numtype, sx#5967 : sx, i#54769 : nat} {{0xFC} {`%`_u32{i#54769}(3):Bu32}} => `CVTOP`_instr{numtype_1#65, numtype_2#65}(`I32`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#5967}(`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)) + prod{numtype_1#67 : numtype, numtype_2#67 : numtype, sx#6031 : sx, i#54794 : nat} {{0xFC} {`%`_u32{i#54794}(4):Bu32}} => `CVTOP`_instr{numtype_1#67, numtype_2#67}(`I64`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#6031}(`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)) + prod{numtype_1#69 : numtype, numtype_2#69 : numtype, sx#6095 : sx, i#54819 : nat} {{0xFC} {`%`_u32{i#54819}(5):Bu32}} => `CVTOP`_instr{numtype_1#69, numtype_2#69}(`I64`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#6095}(`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)) + prod{numtype_1#71 : numtype, numtype_2#71 : numtype, sx#6159 : sx, i#54844 : nat} {{0xFC} {`%`_u32{i#54844}(6):Bu32}} => `CVTOP`_instr{numtype_1#71, numtype_2#71}(`I64`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#6159}(`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)) + prod{numtype_1#73 : numtype, numtype_2#73 : numtype, sx#6223 : sx, i#54869 : nat} {{0xFC} {`%`_u32{i#54869}(7):Bu32}} => `CVTOP`_instr{numtype_1#73, numtype_2#73}(`I64`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#6223}(`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) + prod{`vectype?#14` : vectype?, memidx#228 : memidx, memarg#137 : memarg, x : idx, ao : memarg, i#54968 : nat} {{0xFD} {`%`_u32{i#54968}(0):Bu32} {(x, ao):Bmemarg}} => `VLOAD`_instr{`vectype?#14`, memidx#228, memarg#137}(`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) + prod{`vectype?#15` : vectype?, memidx#230 : memidx, memarg#139 : memarg, sz#1092 : sz, M#157 : M, sx#6240 : sx, i#55059 : nat, i#55066 : nat, x : idx, ao : memarg, i#55019 : nat} {{0xFD} {`%`_u32{i#55019}(1):Bu32} {(x, ao):Bmemarg}} => `VLOAD`_instr{`vectype?#15`, memidx#230, memarg#139}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1092, M#157, sx#6240, i#55059}(`%`_sz{i#55066}(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) + prod{`vectype?#16` : vectype?, memidx#232 : memidx, memarg#141 : memarg, sz#1139 : sz, M#174 : M, sx#6257 : sx, i#55143 : nat, i#55150 : nat, x : idx, ao : memarg, i#55103 : nat} {{0xFD} {`%`_u32{i#55103}(2):Bu32} {(x, ao):Bmemarg}} => `VLOAD`_instr{`vectype?#16`, memidx#232, memarg#141}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1139, M#174, sx#6257, i#55143}(`%`_sz{i#55150}(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) + prod{`vectype?#17` : vectype?, memidx#234 : memidx, memarg#143 : memarg, sz#1186 : sz, M#191 : M, sx#6274 : sx, i#55227 : nat, i#55234 : nat, x : idx, ao : memarg, i#55187 : nat} {{0xFD} {`%`_u32{i#55187}(3):Bu32} {(x, ao):Bmemarg}} => `VLOAD`_instr{`vectype?#17`, memidx#234, memarg#143}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1186, M#191, sx#6274, i#55227}(`%`_sz{i#55234}(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) + prod{`vectype?#18` : vectype?, memidx#236 : memidx, memarg#145 : memarg, sz#1233 : sz, M#208 : M, sx#6291 : sx, i#55311 : nat, i#55318 : nat, x : idx, ao : memarg, i#55271 : nat} {{0xFD} {`%`_u32{i#55271}(4):Bu32} {(x, ao):Bmemarg}} => `VLOAD`_instr{`vectype?#18`, memidx#236, memarg#145}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1233, M#208, sx#6291, i#55311}(`%`_sz{i#55318}(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) + prod{`vectype?#19` : vectype?, memidx#238 : memidx, memarg#147 : memarg, sz#1280 : sz, M#225 : M, sx#6308 : sx, i#55395 : nat, i#55402 : nat, x : idx, ao : memarg, i#55355 : nat} {{0xFD} {`%`_u32{i#55355}(5):Bu32} {(x, ao):Bmemarg}} => `VLOAD`_instr{`vectype?#19`, memidx#238, memarg#147}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1280, M#225, sx#6308, i#55395}(`%`_sz{i#55402}(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) + prod{`vectype?#20` : vectype?, memidx#240 : memidx, memarg#149 : memarg, sz#1327 : sz, M#242 : M, sx#6325 : sx, i#55479 : nat, i#55486 : nat, x : idx, ao : memarg, i#55439 : nat} {{0xFD} {`%`_u32{i#55439}(6):Bu32} {(x, ao):Bmemarg}} => `VLOAD`_instr{`vectype?#20`, memidx#240, memarg#149}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1327, M#242, sx#6325, i#55479}(`%`_sz{i#55486}(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) + prod{`vectype?#21` : vectype?, memidx#242 : memidx, memarg#151 : memarg, sz#1374 : sz, i#55569 : nat, x : idx, ao : memarg, i#55523 : nat} {{0xFD} {`%`_u32{i#55523}(7):Bu32} {(x, ao):Bmemarg}} => `VLOAD`_instr{`vectype?#21`, memidx#242, memarg#151}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#1374}(`%`_sz{i#55569}(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) + prod{`vectype?#22` : vectype?, memidx#244 : memidx, memarg#153 : memarg, sz#1421 : sz, i#55652 : nat, x : idx, ao : memarg, i#55606 : nat} {{0xFD} {`%`_u32{i#55606}(8):Bu32} {(x, ao):Bmemarg}} => `VLOAD`_instr{`vectype?#22`, memidx#244, memarg#153}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#1421}(`%`_sz{i#55652}(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) + prod{`vectype?#23` : vectype?, memidx#246 : memidx, memarg#155 : memarg, sz#1468 : sz, i#55735 : nat, x : idx, ao : memarg, i#55689 : nat} {{0xFD} {`%`_u32{i#55689}(9):Bu32} {(x, ao):Bmemarg}} => `VLOAD`_instr{`vectype?#23`, memidx#246, memarg#155}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#1468}(`%`_sz{i#55735}(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) + prod{`vectype?#24` : vectype?, memidx#248 : memidx, memarg#157 : memarg, sz#1515 : sz, i#55818 : nat, x : idx, ao : memarg, i#55772 : nat} {{0xFD} {`%`_u32{i#55772}(10):Bu32} {(x, ao):Bmemarg}} => `VLOAD`_instr{`vectype?#24`, memidx#248, memarg#157}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#1515}(`%`_sz{i#55818}(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) + prod{vectype#237 : vectype, memidx#250 : memidx, memarg#159 : memarg, x : idx, ao : memarg, i#55855 : nat} {{0xFD} {`%`_u32{i#55855}(11):Bu32} {(x, ao):Bmemarg}} => `VSTORE`_instr{vectype#237, memidx#250, memarg#159}(`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) + prod{vectype#239 : vectype, sz#1517 : sz, memidx#252 : memidx, memarg#161 : memarg, laneidx#31 : laneidx, i#55945 : nat, x : idx, ao : memarg, i : laneidx, i#55906 : nat} {{0xFD} {`%`_u32{i#55906}(84):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => `VLOAD_LANE`_instr{vectype#239, sz#1517, memidx#252, memarg#161, laneidx#31}(`V128`_vectype, `%`_sz{i#55945}(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) + prod{vectype#241 : vectype, sz#1519 : sz, memidx#254 : memidx, memarg#163 : memarg, laneidx#33 : laneidx, i#56033 : nat, x : idx, ao : memarg, i : laneidx, i#55994 : nat} {{0xFD} {`%`_u32{i#55994}(85):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => `VLOAD_LANE`_instr{vectype#241, sz#1519, memidx#254, memarg#163, laneidx#33}(`V128`_vectype, `%`_sz{i#56033}(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) + prod{vectype#243 : vectype, sz#1521 : sz, memidx#256 : memidx, memarg#165 : memarg, laneidx#35 : laneidx, i#56121 : nat, x : idx, ao : memarg, i : laneidx, i#56082 : nat} {{0xFD} {`%`_u32{i#56082}(86):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => `VLOAD_LANE`_instr{vectype#243, sz#1521, memidx#256, memarg#165, laneidx#35}(`V128`_vectype, `%`_sz{i#56121}(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) + prod{vectype#245 : vectype, sz#1523 : sz, memidx#258 : memidx, memarg#167 : memarg, laneidx#37 : laneidx, i#56209 : nat, x : idx, ao : memarg, i : laneidx, i#56170 : nat} {{0xFD} {`%`_u32{i#56170}(87):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => `VLOAD_LANE`_instr{vectype#245, sz#1523, memidx#258, memarg#167, laneidx#37}(`V128`_vectype, `%`_sz{i#56209}(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) + prod{vectype#247 : vectype, sz#1525 : sz, memidx#260 : memidx, memarg#169 : memarg, laneidx#39 : laneidx, i#56297 : nat, x : idx, ao : memarg, i : laneidx, i#56258 : nat} {{0xFD} {`%`_u32{i#56258}(88):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => `VSTORE_LANE`_instr{vectype#247, sz#1525, memidx#260, memarg#169, laneidx#39}(`V128`_vectype, `%`_sz{i#56297}(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) + prod{vectype#249 : vectype, sz#1527 : sz, memidx#262 : memidx, memarg#171 : memarg, laneidx#41 : laneidx, i#56385 : nat, x : idx, ao : memarg, i : laneidx, i#56346 : nat} {{0xFD} {`%`_u32{i#56346}(89):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => `VSTORE_LANE`_instr{vectype#249, sz#1527, memidx#262, memarg#171, laneidx#41}(`V128`_vectype, `%`_sz{i#56385}(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) + prod{vectype#251 : vectype, sz#1529 : sz, memidx#264 : memidx, memarg#173 : memarg, laneidx#43 : laneidx, i#56473 : nat, x : idx, ao : memarg, i : laneidx, i#56434 : nat} {{0xFD} {`%`_u32{i#56434}(90):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => `VSTORE_LANE`_instr{vectype#251, sz#1529, memidx#264, memarg#173, laneidx#43}(`V128`_vectype, `%`_sz{i#56473}(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) + prod{vectype#253 : vectype, sz#1531 : sz, memidx#266 : memidx, memarg#175 : memarg, laneidx#45 : laneidx, i#56561 : nat, x : idx, ao : memarg, i : laneidx, i#56522 : nat} {{0xFD} {`%`_u32{i#56522}(91):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => `VSTORE_LANE`_instr{vectype#253, sz#1531, memidx#266, memarg#175, laneidx#45}(`V128`_vectype, `%`_sz{i#56561}(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) + prod{`vectype?#25` : vectype?, memidx#268 : memidx, memarg#177 : memarg, sz#1578 : sz, i#56650 : nat, i#56657 : nat, x : idx, ao : memarg, i#56610 : nat} {{0xFD} {`%`_u32{i#56610}(92):Bu32} {(x, ao):Bmemarg}} => `VLOAD`_instr{`vectype?#25`, memidx#268, memarg#177}(`V128`_vectype, ?(`ZERO`_vloadop_{sz#1578, i#56650}(`%`_sz{i#56657}(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) + prod{`vectype?#26` : vectype?, memidx#270 : memidx, memarg#179 : memarg, sz#1625 : sz, i#56734 : nat, i#56741 : nat, x : idx, ao : memarg, i#56694 : nat} {{0xFD} {`%`_u32{i#56694}(93):Bu32} {(x, ao):Bmemarg}} => `VLOAD`_instr{`vectype?#26`, memidx#270, memarg#179}(`V128`_vectype, ?(`ZERO`_vloadop_{sz#1625, i#56734}(`%`_sz{i#56741}(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*`})) + prod{vectype#257 : vectype, `b*` : byte*, i#56778 : nat} {{0xFD} {`%`_u32{i#56778}(12):Bu32} {b:Bbyte^16{b <- `b*`}}} => `VCONST`_instr{vectype#257}(`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*`}) + prod{bshape#13 : bshape, `laneidx*#7` : laneidx*, i#56888 : nat, shape#845 : shape, shape#856 : shape, lanetype#7789 : lanetype, dim#7789 : dim, i#56892 : nat, i#56899 : nat, `i#56956*` : nat*, `i#56957*` : nat*, `l*` : labelidx*, i#56835 : nat, `i#56884*` : nat*, `i#56885*` : nat*} {{0xFD} {`%`_u32{i#56835}(13):Bu32} {`%`_laneidx{i#56885}(l!`%`_labelidx{i#56884}.0):Blaneidx^16{i#56884 <- `i#56884*`, i#56885 <- `i#56885*`, l <- `l*`}}} => `VSHUFFLE`_instr{bshape#13, `laneidx*#7`, i#56888, shape#845}(`%`_bshape{shape#856}(`%X%`_shape{lanetype#7789, dim#7789, i#56892}(`I8`_lanetype, `%`_dim{i#56899}(16))), `%`_laneidx{i#56957}(l!`%`_labelidx{i#56956}.0)^16{i#56956 <- `i#56956*`, i#56957 <- `i#56957*`, 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_) + prod{bshape#15 : bshape, shape#868 : shape, lanetype#7801 : lanetype, dim#7801 : dim, i#56988 : nat, i#56995 : nat, i#56981 : nat} {{0xFD} {`%`_u32{i#56981}(14):Bu32}} => `VSWIZZLOP`_instr{bshape#15}(`%`_bshape{shape#868}(`%X%`_shape{lanetype#7801, dim#7801, i#56988}(`I8`_lanetype, `%`_dim{i#56995}(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_) + prod{bshape#17 : bshape, shape#895 : shape, lanetype#7858 : lanetype, dim#7858 : dim, i#57100 : nat, i#57107 : nat, i#57093 : nat} {{0xFD} {`%`_u32{i#57093}(256):Bu32}} => `VSWIZZLOP`_instr{bshape#17}(`%`_bshape{shape#895}(`%X%`_shape{lanetype#7858, dim#7858, i#57100}(`I8`_lanetype, `%`_dim{i#57107}(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))) + prod{shape#912 : shape, lanetype#7915 : lanetype, dim#7915 : dim, i#57212 : nat, i#57219 : nat, i#57205 : nat} {{0xFD} {`%`_u32{i#57205}(15):Bu32}} => `VSPLAT`_instr{shape#912}(`%X%`_shape{lanetype#7915, dim#7915, i#57212}(`I8`_lanetype, `%`_dim{i#57219}(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))) + prod{shape#914 : shape, lanetype#7927 : lanetype, dim#7927 : dim, i#57249 : nat, i#57256 : nat, i#57242 : nat} {{0xFD} {`%`_u32{i#57242}(16):Bu32}} => `VSPLAT`_instr{shape#914}(`%X%`_shape{lanetype#7927, dim#7927, i#57249}(`I16`_lanetype, `%`_dim{i#57256}(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))) + prod{shape#916 : shape, lanetype#7939 : lanetype, dim#7939 : dim, i#57286 : nat, i#57293 : nat, i#57279 : nat} {{0xFD} {`%`_u32{i#57279}(17):Bu32}} => `VSPLAT`_instr{shape#916}(`%X%`_shape{lanetype#7939, dim#7939, i#57286}(`I32`_lanetype, `%`_dim{i#57293}(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))) + prod{shape#918 : shape, lanetype#7951 : lanetype, dim#7951 : dim, i#57323 : nat, i#57330 : nat, i#57316 : nat} {{0xFD} {`%`_u32{i#57316}(18):Bu32}} => `VSPLAT`_instr{shape#918}(`%X%`_shape{lanetype#7951, dim#7951, i#57323}(`I64`_lanetype, `%`_dim{i#57330}(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))) + prod{shape#920 : shape, lanetype#7963 : lanetype, dim#7963 : dim, i#57360 : nat, i#57367 : nat, i#57353 : nat} {{0xFD} {`%`_u32{i#57353}(19):Bu32}} => `VSPLAT`_instr{shape#920}(`%X%`_shape{lanetype#7963, dim#7963, i#57360}(`F32`_lanetype, `%`_dim{i#57367}(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))) + prod{shape#922 : shape, lanetype#7975 : lanetype, dim#7975 : dim, i#57397 : nat, i#57404 : nat, i#57390 : nat} {{0xFD} {`%`_u32{i#57390}(20):Bu32}} => `VSPLAT`_instr{shape#922}(`%X%`_shape{lanetype#7975, dim#7975, i#57397}(`F64`_lanetype, `%`_dim{i#57404}(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)) + prod{shape#924 : shape, `sx?#43` : sx?, laneidx#47 : laneidx, lanetype#7987 : lanetype, dim#7987 : dim, i#57485 : nat, i#57492 : nat, i#57583 : nat, l : labelidx, i#57582 : nat, i#57427 : nat, i#57477 : nat, i#57476 : nat} {{0xFD} {`%`_u32{i#57427}(21):Bu32} {`%`_laneidx{i#57477}(l!`%`_labelidx{i#57476}.0):Blaneidx}} => `VEXTRACT_LANE`_instr{shape#924, `sx?#43`, laneidx#47}(`%X%`_shape{lanetype#7987, dim#7987, i#57485}(`I8`_lanetype, `%`_dim{i#57492}(16)), ?(`S`_sx), `%`_laneidx{i#57583}(l!`%`_labelidx{i#57582}.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)) + prod{shape#926 : shape, `sx?#45` : sx?, laneidx#49 : laneidx, lanetype#7999 : lanetype, dim#7999 : dim, i#57665 : nat, i#57672 : nat, i#57763 : nat, l : labelidx, i#57762 : nat, i#57607 : nat, i#57657 : nat, i#57656 : nat} {{0xFD} {`%`_u32{i#57607}(22):Bu32} {`%`_laneidx{i#57657}(l!`%`_labelidx{i#57656}.0):Blaneidx}} => `VEXTRACT_LANE`_instr{shape#926, `sx?#45`, laneidx#49}(`%X%`_shape{lanetype#7999, dim#7999, i#57665}(`I8`_lanetype, `%`_dim{i#57672}(16)), ?(`U`_sx), `%`_laneidx{i#57763}(l!`%`_labelidx{i#57762}.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)) + prod{shape#928 : shape, laneidx#51 : laneidx, lanetype#8011 : lanetype, dim#8011 : dim, i#57845 : nat, i#57852 : nat, i#57899 : nat, l : labelidx, i#57898 : nat, i#57787 : nat, i#57837 : nat, i#57836 : nat} {{0xFD} {`%`_u32{i#57787}(23):Bu32} {`%`_laneidx{i#57837}(l!`%`_labelidx{i#57836}.0):Blaneidx}} => `VREPLACE_LANE`_instr{shape#928, laneidx#51}(`%X%`_shape{lanetype#8011, dim#8011, i#57845}(`I8`_lanetype, `%`_dim{i#57852}(16)), `%`_laneidx{i#57899}(l!`%`_labelidx{i#57898}.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)) + prod{shape#930 : shape, `sx?#47` : sx?, laneidx#53 : laneidx, lanetype#8023 : lanetype, dim#8023 : dim, i#57981 : nat, i#57988 : nat, i#58079 : nat, l : labelidx, i#58078 : nat, i#57923 : nat, i#57973 : nat, i#57972 : nat} {{0xFD} {`%`_u32{i#57923}(24):Bu32} {`%`_laneidx{i#57973}(l!`%`_labelidx{i#57972}.0):Blaneidx}} => `VEXTRACT_LANE`_instr{shape#930, `sx?#47`, laneidx#53}(`%X%`_shape{lanetype#8023, dim#8023, i#57981}(`I16`_lanetype, `%`_dim{i#57988}(8)), ?(`S`_sx), `%`_laneidx{i#58079}(l!`%`_labelidx{i#58078}.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)) + prod{shape#932 : shape, `sx?#49` : sx?, laneidx#55 : laneidx, lanetype#8035 : lanetype, dim#8035 : dim, i#58161 : nat, i#58168 : nat, i#58259 : nat, l : labelidx, i#58258 : nat, i#58103 : nat, i#58153 : nat, i#58152 : nat} {{0xFD} {`%`_u32{i#58103}(25):Bu32} {`%`_laneidx{i#58153}(l!`%`_labelidx{i#58152}.0):Blaneidx}} => `VEXTRACT_LANE`_instr{shape#932, `sx?#49`, laneidx#55}(`%X%`_shape{lanetype#8035, dim#8035, i#58161}(`I16`_lanetype, `%`_dim{i#58168}(8)), ?(`U`_sx), `%`_laneidx{i#58259}(l!`%`_labelidx{i#58258}.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)) + prod{shape#934 : shape, laneidx#57 : laneidx, lanetype#8047 : lanetype, dim#8047 : dim, i#58341 : nat, i#58348 : nat, i#58395 : nat, l : labelidx, i#58394 : nat, i#58283 : nat, i#58333 : nat, i#58332 : nat} {{0xFD} {`%`_u32{i#58283}(26):Bu32} {`%`_laneidx{i#58333}(l!`%`_labelidx{i#58332}.0):Blaneidx}} => `VREPLACE_LANE`_instr{shape#934, laneidx#57}(`%X%`_shape{lanetype#8047, dim#8047, i#58341}(`I16`_lanetype, `%`_dim{i#58348}(8)), `%`_laneidx{i#58395}(l!`%`_labelidx{i#58394}.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)) + prod{shape#936 : shape, `sx?#51` : sx?, laneidx#59 : laneidx, lanetype#8059 : lanetype, dim#8059 : dim, i#58477 : nat, i#58484 : nat, i#58531 : nat, l : labelidx, i#58530 : nat, i#58419 : nat, i#58469 : nat, i#58468 : nat} {{0xFD} {`%`_u32{i#58419}(27):Bu32} {`%`_laneidx{i#58469}(l!`%`_labelidx{i#58468}.0):Blaneidx}} => `VEXTRACT_LANE`_instr{shape#936, `sx?#51`, laneidx#59}(`%X%`_shape{lanetype#8059, dim#8059, i#58477}(`I32`_lanetype, `%`_dim{i#58484}(4)), ?(), `%`_laneidx{i#58531}(l!`%`_labelidx{i#58530}.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)) + prod{shape#938 : shape, laneidx#61 : laneidx, lanetype#8071 : lanetype, dim#8071 : dim, i#58613 : nat, i#58620 : nat, i#58667 : nat, l : labelidx, i#58666 : nat, i#58555 : nat, i#58605 : nat, i#58604 : nat} {{0xFD} {`%`_u32{i#58555}(28):Bu32} {`%`_laneidx{i#58605}(l!`%`_labelidx{i#58604}.0):Blaneidx}} => `VREPLACE_LANE`_instr{shape#938, laneidx#61}(`%X%`_shape{lanetype#8071, dim#8071, i#58613}(`I32`_lanetype, `%`_dim{i#58620}(4)), `%`_laneidx{i#58667}(l!`%`_labelidx{i#58666}.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)) + prod{shape#940 : shape, `sx?#53` : sx?, laneidx#63 : laneidx, lanetype#8083 : lanetype, dim#8083 : dim, i#58749 : nat, i#58756 : nat, i#58803 : nat, l : labelidx, i#58802 : nat, i#58691 : nat, i#58741 : nat, i#58740 : nat} {{0xFD} {`%`_u32{i#58691}(29):Bu32} {`%`_laneidx{i#58741}(l!`%`_labelidx{i#58740}.0):Blaneidx}} => `VEXTRACT_LANE`_instr{shape#940, `sx?#53`, laneidx#63}(`%X%`_shape{lanetype#8083, dim#8083, i#58749}(`I64`_lanetype, `%`_dim{i#58756}(2)), ?(), `%`_laneidx{i#58803}(l!`%`_labelidx{i#58802}.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)) + prod{shape#942 : shape, laneidx#65 : laneidx, lanetype#8095 : lanetype, dim#8095 : dim, i#58885 : nat, i#58892 : nat, i#58939 : nat, l : labelidx, i#58938 : nat, i#58827 : nat, i#58877 : nat, i#58876 : nat} {{0xFD} {`%`_u32{i#58827}(30):Bu32} {`%`_laneidx{i#58877}(l!`%`_labelidx{i#58876}.0):Blaneidx}} => `VREPLACE_LANE`_instr{shape#942, laneidx#65}(`%X%`_shape{lanetype#8095, dim#8095, i#58885}(`I64`_lanetype, `%`_dim{i#58892}(2)), `%`_laneidx{i#58939}(l!`%`_labelidx{i#58938}.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)) + prod{shape#944 : shape, `sx?#55` : sx?, laneidx#67 : laneidx, lanetype#8107 : lanetype, dim#8107 : dim, i#59021 : nat, i#59028 : nat, i#59075 : nat, l : labelidx, i#59074 : nat, i#58963 : nat, i#59013 : nat, i#59012 : nat} {{0xFD} {`%`_u32{i#58963}(31):Bu32} {`%`_laneidx{i#59013}(l!`%`_labelidx{i#59012}.0):Blaneidx}} => `VEXTRACT_LANE`_instr{shape#944, `sx?#55`, laneidx#67}(`%X%`_shape{lanetype#8107, dim#8107, i#59021}(`F32`_lanetype, `%`_dim{i#59028}(4)), ?(), `%`_laneidx{i#59075}(l!`%`_labelidx{i#59074}.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)) + prod{shape#946 : shape, laneidx#69 : laneidx, lanetype#8119 : lanetype, dim#8119 : dim, i#59157 : nat, i#59164 : nat, i#59211 : nat, l : labelidx, i#59210 : nat, i#59099 : nat, i#59149 : nat, i#59148 : nat} {{0xFD} {`%`_u32{i#59099}(32):Bu32} {`%`_laneidx{i#59149}(l!`%`_labelidx{i#59148}.0):Blaneidx}} => `VREPLACE_LANE`_instr{shape#946, laneidx#69}(`%X%`_shape{lanetype#8119, dim#8119, i#59157}(`F32`_lanetype, `%`_dim{i#59164}(4)), `%`_laneidx{i#59211}(l!`%`_labelidx{i#59210}.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)) + prod{shape#948 : shape, `sx?#57` : sx?, laneidx#71 : laneidx, lanetype#8131 : lanetype, dim#8131 : dim, i#59293 : nat, i#59300 : nat, i#59347 : nat, l : labelidx, i#59346 : nat, i#59235 : nat, i#59285 : nat, i#59284 : nat} {{0xFD} {`%`_u32{i#59235}(33):Bu32} {`%`_laneidx{i#59285}(l!`%`_labelidx{i#59284}.0):Blaneidx}} => `VEXTRACT_LANE`_instr{shape#948, `sx?#57`, laneidx#71}(`%X%`_shape{lanetype#8131, dim#8131, i#59293}(`F64`_lanetype, `%`_dim{i#59300}(2)), ?(), `%`_laneidx{i#59347}(l!`%`_labelidx{i#59346}.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)) + prod{shape#950 : shape, laneidx#73 : laneidx, lanetype#8143 : lanetype, dim#8143 : dim, i#59429 : nat, i#59436 : nat, i#59483 : nat, l : labelidx, i#59482 : nat, i#59371 : nat, i#59421 : nat, i#59420 : nat} {{0xFD} {`%`_u32{i#59371}(34):Bu32} {`%`_laneidx{i#59421}(l!`%`_labelidx{i#59420}.0):Blaneidx}} => `VREPLACE_LANE`_instr{shape#950, laneidx#73}(`%X%`_shape{lanetype#8143, dim#8143, i#59429}(`F64`_lanetype, `%`_dim{i#59436}(2)), `%`_laneidx{i#59483}(l!`%`_labelidx{i#59482}.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_) + prod{shape#952 : shape, lanetype#8155 : lanetype, dim#8155 : dim, i#59514 : nat, i#59521 : nat, i#59507 : nat} {{0xFD} {`%`_u32{i#59507}(35):Bu32}} => `VRELOP`_instr{shape#952}(`%X%`_shape{lanetype#8155, dim#8155, i#59514}(`I8`_lanetype, `%`_dim{i#59521}(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_) + prod{shape#954 : shape, lanetype#8182 : lanetype, dim#8182 : dim, i#59596 : nat, i#59603 : nat, i#59589 : nat} {{0xFD} {`%`_u32{i#59589}(36):Bu32}} => `VRELOP`_instr{shape#954}(`%X%`_shape{lanetype#8182, dim#8182, i#59596}(`I8`_lanetype, `%`_dim{i#59603}(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)) + prod{shape#956 : shape, lanetype#8209 : lanetype, dim#8209 : dim, i#59678 : nat, i#59685 : nat, sx#6659 : sx, i#59671 : nat} {{0xFD} {`%`_u32{i#59671}(37):Bu32}} => `VRELOP`_instr{shape#956}(`%X%`_shape{lanetype#8209, dim#8209, i#59678}(`I8`_lanetype, `%`_dim{i#59685}(16)), `LT`_vrelop_{sx#6659}(`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)) + prod{shape#958 : shape, lanetype#8251 : lanetype, dim#8251 : dim, i#59805 : nat, i#59812 : nat, sx#6783 : sx, i#59798 : nat} {{0xFD} {`%`_u32{i#59798}(38):Bu32}} => `VRELOP`_instr{shape#958}(`%X%`_shape{lanetype#8251, dim#8251, i#59805}(`I8`_lanetype, `%`_dim{i#59812}(16)), `LT`_vrelop_{sx#6783}(`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)) + prod{shape#960 : shape, lanetype#8293 : lanetype, dim#8293 : dim, i#59932 : nat, i#59939 : nat, sx#6907 : sx, i#59925 : nat} {{0xFD} {`%`_u32{i#59925}(39):Bu32}} => `VRELOP`_instr{shape#960}(`%X%`_shape{lanetype#8293, dim#8293, i#59932}(`I8`_lanetype, `%`_dim{i#59939}(16)), `GT`_vrelop_{sx#6907}(`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)) + prod{shape#962 : shape, lanetype#8335 : lanetype, dim#8335 : dim, i#60059 : nat, i#60066 : nat, sx#7031 : sx, i#60052 : nat} {{0xFD} {`%`_u32{i#60052}(40):Bu32}} => `VRELOP`_instr{shape#962}(`%X%`_shape{lanetype#8335, dim#8335, i#60059}(`I8`_lanetype, `%`_dim{i#60066}(16)), `GT`_vrelop_{sx#7031}(`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)) + prod{shape#964 : shape, lanetype#8377 : lanetype, dim#8377 : dim, i#60186 : nat, i#60193 : nat, sx#7155 : sx, i#60179 : nat} {{0xFD} {`%`_u32{i#60179}(41):Bu32}} => `VRELOP`_instr{shape#964}(`%X%`_shape{lanetype#8377, dim#8377, i#60186}(`I8`_lanetype, `%`_dim{i#60193}(16)), `LE`_vrelop_{sx#7155}(`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)) + prod{shape#966 : shape, lanetype#8419 : lanetype, dim#8419 : dim, i#60313 : nat, i#60320 : nat, sx#7279 : sx, i#60306 : nat} {{0xFD} {`%`_u32{i#60306}(42):Bu32}} => `VRELOP`_instr{shape#966}(`%X%`_shape{lanetype#8419, dim#8419, i#60313}(`I8`_lanetype, `%`_dim{i#60320}(16)), `LE`_vrelop_{sx#7279}(`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)) + prod{shape#968 : shape, lanetype#8461 : lanetype, dim#8461 : dim, i#60440 : nat, i#60447 : nat, sx#7403 : sx, i#60433 : nat} {{0xFD} {`%`_u32{i#60433}(43):Bu32}} => `VRELOP`_instr{shape#968}(`%X%`_shape{lanetype#8461, dim#8461, i#60440}(`I8`_lanetype, `%`_dim{i#60447}(16)), `GE`_vrelop_{sx#7403}(`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)) + prod{shape#970 : shape, lanetype#8503 : lanetype, dim#8503 : dim, i#60567 : nat, i#60574 : nat, sx#7527 : sx, i#60560 : nat} {{0xFD} {`%`_u32{i#60560}(44):Bu32}} => `VRELOP`_instr{shape#970}(`%X%`_shape{lanetype#8503, dim#8503, i#60567}(`I8`_lanetype, `%`_dim{i#60574}(16)), `GE`_vrelop_{sx#7527}(`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_) + prod{shape#972 : shape, lanetype#8545 : lanetype, dim#8545 : dim, i#60694 : nat, i#60701 : nat, i#60687 : nat} {{0xFD} {`%`_u32{i#60687}(45):Bu32}} => `VRELOP`_instr{shape#972}(`%X%`_shape{lanetype#8545, dim#8545, i#60694}(`I16`_lanetype, `%`_dim{i#60701}(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_) + prod{shape#974 : shape, lanetype#8572 : lanetype, dim#8572 : dim, i#60776 : nat, i#60783 : nat, i#60769 : nat} {{0xFD} {`%`_u32{i#60769}(46):Bu32}} => `VRELOP`_instr{shape#974}(`%X%`_shape{lanetype#8572, dim#8572, i#60776}(`I16`_lanetype, `%`_dim{i#60783}(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)) + prod{shape#976 : shape, lanetype#8599 : lanetype, dim#8599 : dim, i#60858 : nat, i#60865 : nat, sx#7771 : sx, i#60851 : nat} {{0xFD} {`%`_u32{i#60851}(47):Bu32}} => `VRELOP`_instr{shape#976}(`%X%`_shape{lanetype#8599, dim#8599, i#60858}(`I16`_lanetype, `%`_dim{i#60865}(8)), `LT`_vrelop_{sx#7771}(`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)) + prod{shape#978 : shape, lanetype#8641 : lanetype, dim#8641 : dim, i#60985 : nat, i#60992 : nat, sx#7895 : sx, i#60978 : nat} {{0xFD} {`%`_u32{i#60978}(48):Bu32}} => `VRELOP`_instr{shape#978}(`%X%`_shape{lanetype#8641, dim#8641, i#60985}(`I16`_lanetype, `%`_dim{i#60992}(8)), `LT`_vrelop_{sx#7895}(`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)) + prod{shape#980 : shape, lanetype#8683 : lanetype, dim#8683 : dim, i#61112 : nat, i#61119 : nat, sx#8019 : sx, i#61105 : nat} {{0xFD} {`%`_u32{i#61105}(49):Bu32}} => `VRELOP`_instr{shape#980}(`%X%`_shape{lanetype#8683, dim#8683, i#61112}(`I16`_lanetype, `%`_dim{i#61119}(8)), `GT`_vrelop_{sx#8019}(`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)) + prod{shape#982 : shape, lanetype#8725 : lanetype, dim#8725 : dim, i#61239 : nat, i#61246 : nat, sx#8143 : sx, i#61232 : nat} {{0xFD} {`%`_u32{i#61232}(50):Bu32}} => `VRELOP`_instr{shape#982}(`%X%`_shape{lanetype#8725, dim#8725, i#61239}(`I16`_lanetype, `%`_dim{i#61246}(8)), `GT`_vrelop_{sx#8143}(`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)) + prod{shape#984 : shape, lanetype#8767 : lanetype, dim#8767 : dim, i#61366 : nat, i#61373 : nat, sx#8267 : sx, i#61359 : nat} {{0xFD} {`%`_u32{i#61359}(51):Bu32}} => `VRELOP`_instr{shape#984}(`%X%`_shape{lanetype#8767, dim#8767, i#61366}(`I16`_lanetype, `%`_dim{i#61373}(8)), `LE`_vrelop_{sx#8267}(`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)) + prod{shape#986 : shape, lanetype#8809 : lanetype, dim#8809 : dim, i#61493 : nat, i#61500 : nat, sx#8391 : sx, i#61486 : nat} {{0xFD} {`%`_u32{i#61486}(52):Bu32}} => `VRELOP`_instr{shape#986}(`%X%`_shape{lanetype#8809, dim#8809, i#61493}(`I16`_lanetype, `%`_dim{i#61500}(8)), `LE`_vrelop_{sx#8391}(`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)) + prod{shape#988 : shape, lanetype#8851 : lanetype, dim#8851 : dim, i#61620 : nat, i#61627 : nat, sx#8515 : sx, i#61613 : nat} {{0xFD} {`%`_u32{i#61613}(53):Bu32}} => `VRELOP`_instr{shape#988}(`%X%`_shape{lanetype#8851, dim#8851, i#61620}(`I16`_lanetype, `%`_dim{i#61627}(8)), `GE`_vrelop_{sx#8515}(`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)) + prod{shape#990 : shape, lanetype#8893 : lanetype, dim#8893 : dim, i#61747 : nat, i#61754 : nat, sx#8639 : sx, i#61740 : nat} {{0xFD} {`%`_u32{i#61740}(54):Bu32}} => `VRELOP`_instr{shape#990}(`%X%`_shape{lanetype#8893, dim#8893, i#61747}(`I16`_lanetype, `%`_dim{i#61754}(8)), `GE`_vrelop_{sx#8639}(`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_) + prod{shape#992 : shape, lanetype#8935 : lanetype, dim#8935 : dim, i#61874 : nat, i#61881 : nat, i#61867 : nat} {{0xFD} {`%`_u32{i#61867}(55):Bu32}} => `VRELOP`_instr{shape#992}(`%X%`_shape{lanetype#8935, dim#8935, i#61874}(`I32`_lanetype, `%`_dim{i#61881}(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_) + prod{shape#994 : shape, lanetype#8962 : lanetype, dim#8962 : dim, i#61956 : nat, i#61963 : nat, i#61949 : nat} {{0xFD} {`%`_u32{i#61949}(56):Bu32}} => `VRELOP`_instr{shape#994}(`%X%`_shape{lanetype#8962, dim#8962, i#61956}(`I32`_lanetype, `%`_dim{i#61963}(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)) + prod{shape#996 : shape, lanetype#8989 : lanetype, dim#8989 : dim, i#62038 : nat, i#62045 : nat, sx#8883 : sx, i#62031 : nat} {{0xFD} {`%`_u32{i#62031}(57):Bu32}} => `VRELOP`_instr{shape#996}(`%X%`_shape{lanetype#8989, dim#8989, i#62038}(`I32`_lanetype, `%`_dim{i#62045}(4)), `LT`_vrelop_{sx#8883}(`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)) + prod{shape#998 : shape, lanetype#9031 : lanetype, dim#9031 : dim, i#62165 : nat, i#62172 : nat, sx#9007 : sx, i#62158 : nat} {{0xFD} {`%`_u32{i#62158}(58):Bu32}} => `VRELOP`_instr{shape#998}(`%X%`_shape{lanetype#9031, dim#9031, i#62165}(`I32`_lanetype, `%`_dim{i#62172}(4)), `LT`_vrelop_{sx#9007}(`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)) + prod{shape#1000 : shape, lanetype#9073 : lanetype, dim#9073 : dim, i#62292 : nat, i#62299 : nat, sx#9131 : sx, i#62285 : nat} {{0xFD} {`%`_u32{i#62285}(59):Bu32}} => `VRELOP`_instr{shape#1000}(`%X%`_shape{lanetype#9073, dim#9073, i#62292}(`I32`_lanetype, `%`_dim{i#62299}(4)), `GT`_vrelop_{sx#9131}(`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)) + prod{shape#1002 : shape, lanetype#9115 : lanetype, dim#9115 : dim, i#62419 : nat, i#62426 : nat, sx#9255 : sx, i#62412 : nat} {{0xFD} {`%`_u32{i#62412}(60):Bu32}} => `VRELOP`_instr{shape#1002}(`%X%`_shape{lanetype#9115, dim#9115, i#62419}(`I32`_lanetype, `%`_dim{i#62426}(4)), `GT`_vrelop_{sx#9255}(`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)) + prod{shape#1004 : shape, lanetype#9157 : lanetype, dim#9157 : dim, i#62546 : nat, i#62553 : nat, sx#9379 : sx, i#62539 : nat} {{0xFD} {`%`_u32{i#62539}(61):Bu32}} => `VRELOP`_instr{shape#1004}(`%X%`_shape{lanetype#9157, dim#9157, i#62546}(`I32`_lanetype, `%`_dim{i#62553}(4)), `LE`_vrelop_{sx#9379}(`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)) + prod{shape#1006 : shape, lanetype#9199 : lanetype, dim#9199 : dim, i#62673 : nat, i#62680 : nat, sx#9503 : sx, i#62666 : nat} {{0xFD} {`%`_u32{i#62666}(62):Bu32}} => `VRELOP`_instr{shape#1006}(`%X%`_shape{lanetype#9199, dim#9199, i#62673}(`I32`_lanetype, `%`_dim{i#62680}(4)), `LE`_vrelop_{sx#9503}(`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)) + prod{shape#1008 : shape, lanetype#9241 : lanetype, dim#9241 : dim, i#62800 : nat, i#62807 : nat, sx#9627 : sx, i#62793 : nat} {{0xFD} {`%`_u32{i#62793}(63):Bu32}} => `VRELOP`_instr{shape#1008}(`%X%`_shape{lanetype#9241, dim#9241, i#62800}(`I32`_lanetype, `%`_dim{i#62807}(4)), `GE`_vrelop_{sx#9627}(`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)) + prod{shape#1010 : shape, lanetype#9283 : lanetype, dim#9283 : dim, i#62927 : nat, i#62934 : nat, sx#9751 : sx, i#62920 : nat} {{0xFD} {`%`_u32{i#62920}(64):Bu32}} => `VRELOP`_instr{shape#1010}(`%X%`_shape{lanetype#9283, dim#9283, i#62927}(`I32`_lanetype, `%`_dim{i#62934}(4)), `GE`_vrelop_{sx#9751}(`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_) + prod{shape#1012 : shape, lanetype#9325 : lanetype, dim#9325 : dim, i#63054 : nat, i#63061 : nat, i#63047 : nat} {{0xFD} {`%`_u32{i#63047}(65):Bu32}} => `VRELOP`_instr{shape#1012}(`%X%`_shape{lanetype#9325, dim#9325, i#63054}(`F32`_lanetype, `%`_dim{i#63061}(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_) + prod{shape#1014 : shape, lanetype#9367 : lanetype, dim#9367 : dim, i#63151 : nat, i#63158 : nat, i#63144 : nat} {{0xFD} {`%`_u32{i#63144}(66):Bu32}} => `VRELOP`_instr{shape#1014}(`%X%`_shape{lanetype#9367, dim#9367, i#63151}(`F32`_lanetype, `%`_dim{i#63158}(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_) + prod{shape#1016 : shape, lanetype#9409 : lanetype, dim#9409 : dim, i#63248 : nat, i#63255 : nat, i#63241 : nat} {{0xFD} {`%`_u32{i#63241}(67):Bu32}} => `VRELOP`_instr{shape#1016}(`%X%`_shape{lanetype#9409, dim#9409, i#63248}(`F32`_lanetype, `%`_dim{i#63255}(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_) + prod{shape#1018 : shape, lanetype#9451 : lanetype, dim#9451 : dim, i#63345 : nat, i#63352 : nat, i#63338 : nat} {{0xFD} {`%`_u32{i#63338}(68):Bu32}} => `VRELOP`_instr{shape#1018}(`%X%`_shape{lanetype#9451, dim#9451, i#63345}(`F32`_lanetype, `%`_dim{i#63352}(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_) + prod{shape#1020 : shape, lanetype#9493 : lanetype, dim#9493 : dim, i#63442 : nat, i#63449 : nat, i#63435 : nat} {{0xFD} {`%`_u32{i#63435}(69):Bu32}} => `VRELOP`_instr{shape#1020}(`%X%`_shape{lanetype#9493, dim#9493, i#63442}(`F32`_lanetype, `%`_dim{i#63449}(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_) + prod{shape#1022 : shape, lanetype#9535 : lanetype, dim#9535 : dim, i#63539 : nat, i#63546 : nat, i#63532 : nat} {{0xFD} {`%`_u32{i#63532}(70):Bu32}} => `VRELOP`_instr{shape#1022}(`%X%`_shape{lanetype#9535, dim#9535, i#63539}(`F32`_lanetype, `%`_dim{i#63546}(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_) + prod{shape#1024 : shape, lanetype#9577 : lanetype, dim#9577 : dim, i#63636 : nat, i#63643 : nat, i#63629 : nat} {{0xFD} {`%`_u32{i#63629}(71):Bu32}} => `VRELOP`_instr{shape#1024}(`%X%`_shape{lanetype#9577, dim#9577, i#63636}(`F64`_lanetype, `%`_dim{i#63643}(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_) + prod{shape#1026 : shape, lanetype#9619 : lanetype, dim#9619 : dim, i#63733 : nat, i#63740 : nat, i#63726 : nat} {{0xFD} {`%`_u32{i#63726}(72):Bu32}} => `VRELOP`_instr{shape#1026}(`%X%`_shape{lanetype#9619, dim#9619, i#63733}(`F64`_lanetype, `%`_dim{i#63740}(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_) + prod{shape#1028 : shape, lanetype#9661 : lanetype, dim#9661 : dim, i#63830 : nat, i#63837 : nat, i#63823 : nat} {{0xFD} {`%`_u32{i#63823}(73):Bu32}} => `VRELOP`_instr{shape#1028}(`%X%`_shape{lanetype#9661, dim#9661, i#63830}(`F64`_lanetype, `%`_dim{i#63837}(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_) + prod{shape#1030 : shape, lanetype#9703 : lanetype, dim#9703 : dim, i#63927 : nat, i#63934 : nat, i#63920 : nat} {{0xFD} {`%`_u32{i#63920}(74):Bu32}} => `VRELOP`_instr{shape#1030}(`%X%`_shape{lanetype#9703, dim#9703, i#63927}(`F64`_lanetype, `%`_dim{i#63934}(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_) + prod{shape#1032 : shape, lanetype#9745 : lanetype, dim#9745 : dim, i#64024 : nat, i#64031 : nat, i#64017 : nat} {{0xFD} {`%`_u32{i#64017}(75):Bu32}} => `VRELOP`_instr{shape#1032}(`%X%`_shape{lanetype#9745, dim#9745, i#64024}(`F64`_lanetype, `%`_dim{i#64031}(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_) + prod{shape#1034 : shape, lanetype#9787 : lanetype, dim#9787 : dim, i#64121 : nat, i#64128 : nat, i#64114 : nat} {{0xFD} {`%`_u32{i#64114}(76):Bu32}} => `VRELOP`_instr{shape#1034}(`%X%`_shape{lanetype#9787, dim#9787, i#64121}(`F64`_lanetype, `%`_dim{i#64128}(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) + prod{vectype#259 : vectype, vvunop#7 : vvunop, i#64211 : nat} {{0xFD} {`%`_u32{i#64211}(77):Bu32}} => `VVUNOP`_instr{vectype#259, vvunop#7}(`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) + prod{vectype#261 : vectype, vvbinop#7 : vvbinop, i#64236 : nat} {{0xFD} {`%`_u32{i#64236}(78):Bu32}} => `VVBINOP`_instr{vectype#261, vvbinop#7}(`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) + prod{vectype#263 : vectype, vvbinop#9 : vvbinop, i#64261 : nat} {{0xFD} {`%`_u32{i#64261}(79):Bu32}} => `VVBINOP`_instr{vectype#263, vvbinop#9}(`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) + prod{vectype#265 : vectype, vvbinop#11 : vvbinop, i#64286 : nat} {{0xFD} {`%`_u32{i#64286}(80):Bu32}} => `VVBINOP`_instr{vectype#265, vvbinop#11}(`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) + prod{vectype#267 : vectype, vvbinop#13 : vvbinop, i#64311 : nat} {{0xFD} {`%`_u32{i#64311}(81):Bu32}} => `VVBINOP`_instr{vectype#267, vvbinop#13}(`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) + prod{vectype#269 : vectype, vvternop#7 : vvternop, i#64336 : nat} {{0xFD} {`%`_u32{i#64336}(82):Bu32}} => `VVTERNOP`_instr{vectype#269, vvternop#7}(`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) + prod{vectype#271 : vectype, vvtestop#7 : vvtestop, i#64361 : nat} {{0xFD} {`%`_u32{i#64361}(83):Bu32}} => `VVTESTOP`_instr{vectype#271, vvtestop#7}(`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_) + prod{shape#1036 : shape, lanetype#9829 : lanetype, dim#9829 : dim, i#64393 : nat, i#64400 : nat, i#64386 : nat} {{0xFD} {`%`_u32{i#64386}(96):Bu32}} => `VUNOP`_instr{shape#1036}(`%X%`_shape{lanetype#9829, dim#9829, i#64393}(`I8`_lanetype, `%`_dim{i#64400}(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_) + prod{shape#1038 : shape, lanetype#9856 : lanetype, dim#9856 : dim, i#64475 : nat, i#64482 : nat, i#64468 : nat} {{0xFD} {`%`_u32{i#64468}(97):Bu32}} => `VUNOP`_instr{shape#1038}(`%X%`_shape{lanetype#9856, dim#9856, i#64475}(`I8`_lanetype, `%`_dim{i#64482}(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_) + prod{shape#1040 : shape, lanetype#9883 : lanetype, dim#9883 : dim, i#64557 : nat, i#64564 : nat, i#64550 : nat} {{0xFD} {`%`_u32{i#64550}(98):Bu32}} => `VUNOP`_instr{shape#1040}(`%X%`_shape{lanetype#9883, dim#9883, i#64557}(`I8`_lanetype, `%`_dim{i#64564}(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_) + prod{shape#1042 : shape, lanetype#9910 : lanetype, dim#9910 : dim, i#64639 : nat, i#64646 : nat, i#64632 : nat} {{0xFD} {`%`_u32{i#64632}(99):Bu32}} => `VTESTOP`_instr{shape#1042}(`%X%`_shape{lanetype#9910, dim#9910, i#64639}(`I8`_lanetype, `%`_dim{i#64646}(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)))) + prod{ishape#13 : ishape, shape#1054 : shape, Jnn#228 : Jnn, lanetype#9937 : lanetype, dim#9937 : dim, i#64721 : nat, i#64728 : nat, i#64714 : nat} {{0xFD} {`%`_u32{i#64714}(100):Bu32}} => `VBITMASK`_instr{ishape#13}(`%`_ishape{shape#1054, Jnn#228}(`%X%`_shape{lanetype#9937, dim#9937, i#64721}(`I8`_lanetype, `%`_dim{i#64728}(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) + prod{ishape_1#25 : ishape, ishape_2#25 : ishape, sx#9753 : sx, shape#1056 : shape, Jnn#229 : Jnn, shape#1057 : shape, Jnn#230 : Jnn, shape#1058 : shape, Jnn#231 : Jnn, shape#1069 : shape, Jnn#235 : Jnn, lanetype#9949 : lanetype, dim#9949 : dim, i#64758 : nat, i#64765 : nat, shape#1081 : shape, Jnn#239 : Jnn, lanetype#9961 : lanetype, dim#9961 : dim, i#64770 : nat, i#64777 : nat, i#64751 : nat} {{0xFD} {`%`_u32{i#64751}(101):Bu32}} => `VNARROW`_instr{ishape_1#25, ishape_2#25, sx#9753, shape#1056, Jnn#229, shape#1057, Jnn#230, shape#1058, Jnn#231}(`%`_ishape{shape#1069, Jnn#235}(`%X%`_shape{lanetype#9949, dim#9949, i#64758}(`I8`_lanetype, `%`_dim{i#64765}(16))), `%`_ishape{shape#1081, Jnn#239}(`%X%`_shape{lanetype#9961, dim#9961, i#64770}(`I16`_lanetype, `%`_dim{i#64777}(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) + prod{ishape_1#27 : ishape, ishape_2#27 : ishape, sx#9755 : sx, shape#1083 : shape, Jnn#240 : Jnn, shape#1084 : shape, Jnn#241 : Jnn, shape#1085 : shape, Jnn#242 : Jnn, shape#1096 : shape, Jnn#246 : Jnn, lanetype#9973 : lanetype, dim#9973 : dim, i#64807 : nat, i#64814 : nat, shape#1108 : shape, Jnn#250 : Jnn, lanetype#9985 : lanetype, dim#9985 : dim, i#64819 : nat, i#64826 : nat, i#64800 : nat} {{0xFD} {`%`_u32{i#64800}(102):Bu32}} => `VNARROW`_instr{ishape_1#27, ishape_2#27, sx#9755, shape#1083, Jnn#240, shape#1084, Jnn#241, shape#1085, Jnn#242}(`%`_ishape{shape#1096, Jnn#246}(`%X%`_shape{lanetype#9973, dim#9973, i#64807}(`I8`_lanetype, `%`_dim{i#64814}(16))), `%`_ishape{shape#1108, Jnn#250}(`%X%`_shape{lanetype#9985, dim#9985, i#64819}(`I16`_lanetype, `%`_dim{i#64826}(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_) + prod{ishape#15 : ishape, shape#1120 : shape, Jnn#254 : Jnn, lanetype#9997 : lanetype, dim#9997 : dim, i#64856 : nat, i#64863 : nat, i#64849 : nat} {{0xFD} {`%`_u32{i#64849}(107):Bu32}} => `VSHIFTOP`_instr{ishape#15}(`%`_ishape{shape#1120, Jnn#254}(`%X%`_shape{lanetype#9997, dim#9997, i#64856}(`I8`_lanetype, `%`_dim{i#64863}(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)) + prod{ishape#17 : ishape, shape#1147 : shape, Jnn#258 : Jnn, lanetype#10054 : lanetype, dim#10054 : dim, i#64968 : nat, i#64975 : nat, sx#9804 : sx, i#64961 : nat} {{0xFD} {`%`_u32{i#64961}(108):Bu32}} => `VSHIFTOP`_instr{ishape#17}(`%`_ishape{shape#1147, Jnn#258}(`%X%`_shape{lanetype#10054, dim#10054, i#64968}(`I8`_lanetype, `%`_dim{i#64975}(16))), `SHR`_vshiftop_{sx#9804}(`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)) + prod{ishape#19 : ishape, shape#1189 : shape, Jnn#262 : Jnn, lanetype#10156 : lanetype, dim#10156 : dim, i#65155 : nat, i#65162 : nat, sx#9838 : sx, i#65148 : nat} {{0xFD} {`%`_u32{i#65148}(109):Bu32}} => `VSHIFTOP`_instr{ishape#19}(`%`_ishape{shape#1189, Jnn#262}(`%X%`_shape{lanetype#10156, dim#10156, i#65155}(`I8`_lanetype, `%`_dim{i#65162}(16))), `SHR`_vshiftop_{sx#9838}(`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_) + prod{shape#1221 : shape, lanetype#10258 : lanetype, dim#10258 : dim, i#65342 : nat, i#65349 : nat, i#65335 : nat} {{0xFD} {`%`_u32{i#65335}(110):Bu32}} => `VBINOP`_instr{shape#1221}(`%X%`_shape{lanetype#10258, dim#10258, i#65342}(`I8`_lanetype, `%`_dim{i#65349}(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)) + prod{shape#1223 : shape, lanetype#10285 : lanetype, dim#10285 : dim, i#65424 : nat, i#65431 : nat, sx#10022 : sx, i#65417 : nat} {{0xFD} {`%`_u32{i#65417}(111):Bu32}} => `VBINOP`_instr{shape#1223}(`%X%`_shape{lanetype#10285, dim#10285, i#65424}(`I8`_lanetype, `%`_dim{i#65431}(16)), `ADD_SAT`_vbinop_{sx#10022}(`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)) + prod{shape#1225 : shape, lanetype#10327 : lanetype, dim#10327 : dim, i#65551 : nat, i#65558 : nat, sx#10146 : sx, i#65544 : nat} {{0xFD} {`%`_u32{i#65544}(112):Bu32}} => `VBINOP`_instr{shape#1225}(`%X%`_shape{lanetype#10327, dim#10327, i#65551}(`I8`_lanetype, `%`_dim{i#65558}(16)), `ADD_SAT`_vbinop_{sx#10146}(`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_) + prod{shape#1227 : shape, lanetype#10369 : lanetype, dim#10369 : dim, i#65678 : nat, i#65685 : nat, i#65671 : nat} {{0xFD} {`%`_u32{i#65671}(113):Bu32}} => `VBINOP`_instr{shape#1227}(`%X%`_shape{lanetype#10369, dim#10369, i#65678}(`I8`_lanetype, `%`_dim{i#65685}(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)) + prod{shape#1229 : shape, lanetype#10396 : lanetype, dim#10396 : dim, i#65760 : nat, i#65767 : nat, sx#10330 : sx, i#65753 : nat} {{0xFD} {`%`_u32{i#65753}(114):Bu32}} => `VBINOP`_instr{shape#1229}(`%X%`_shape{lanetype#10396, dim#10396, i#65760}(`I8`_lanetype, `%`_dim{i#65767}(16)), `SUB_SAT`_vbinop_{sx#10330}(`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)) + prod{shape#1231 : shape, lanetype#10438 : lanetype, dim#10438 : dim, i#65887 : nat, i#65894 : nat, sx#10454 : sx, i#65880 : nat} {{0xFD} {`%`_u32{i#65880}(115):Bu32}} => `VBINOP`_instr{shape#1231}(`%X%`_shape{lanetype#10438, dim#10438, i#65887}(`I8`_lanetype, `%`_dim{i#65894}(16)), `SUB_SAT`_vbinop_{sx#10454}(`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)) + prod{shape#1233 : shape, lanetype#10480 : lanetype, dim#10480 : dim, i#66014 : nat, i#66021 : nat, sx#10578 : sx, i#66007 : nat} {{0xFD} {`%`_u32{i#66007}(118):Bu32}} => `VBINOP`_instr{shape#1233}(`%X%`_shape{lanetype#10480, dim#10480, i#66014}(`I8`_lanetype, `%`_dim{i#66021}(16)), `MIN`_vbinop_{sx#10578}(`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)) + prod{shape#1235 : shape, lanetype#10522 : lanetype, dim#10522 : dim, i#66141 : nat, i#66148 : nat, sx#10702 : sx, i#66134 : nat} {{0xFD} {`%`_u32{i#66134}(119):Bu32}} => `VBINOP`_instr{shape#1235}(`%X%`_shape{lanetype#10522, dim#10522, i#66141}(`I8`_lanetype, `%`_dim{i#66148}(16)), `MIN`_vbinop_{sx#10702}(`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)) + prod{shape#1237 : shape, lanetype#10564 : lanetype, dim#10564 : dim, i#66268 : nat, i#66275 : nat, sx#10826 : sx, i#66261 : nat} {{0xFD} {`%`_u32{i#66261}(120):Bu32}} => `VBINOP`_instr{shape#1237}(`%X%`_shape{lanetype#10564, dim#10564, i#66268}(`I8`_lanetype, `%`_dim{i#66275}(16)), `MAX`_vbinop_{sx#10826}(`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)) + prod{shape#1239 : shape, lanetype#10606 : lanetype, dim#10606 : dim, i#66395 : nat, i#66402 : nat, sx#10950 : sx, i#66388 : nat} {{0xFD} {`%`_u32{i#66388}(121):Bu32}} => `VBINOP`_instr{shape#1239}(`%X%`_shape{lanetype#10606, dim#10606, i#66395}(`I8`_lanetype, `%`_dim{i#66402}(16)), `MAX`_vbinop_{sx#10950}(`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_) + prod{shape#1241 : shape, lanetype#10648 : lanetype, dim#10648 : dim, i#66522 : nat, i#66529 : nat, i#66515 : nat} {{0xFD} {`%`_u32{i#66515}(123):Bu32}} => `VBINOP`_instr{shape#1241}(`%X%`_shape{lanetype#10648, dim#10648, i#66522}(`I8`_lanetype, `%`_dim{i#66529}(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)) + prod{ishape_1#29 : ishape, ishape_2#29 : ishape, shape#1253 : shape, Jnn#266 : Jnn, lanetype#10690 : lanetype, dim#10690 : dim, i#66649 : nat, i#66656 : nat, shape#1265 : shape, Jnn#270 : Jnn, lanetype#10702 : lanetype, dim#10702 : dim, i#66661 : nat, i#66668 : nat, sx#11104 : sx, i#66642 : nat} {{0xFD} {`%`_u32{i#66642}(124):Bu32}} => `VEXTUNOP`_instr{ishape_1#29, ishape_2#29}(`%`_ishape{shape#1253, Jnn#266}(`%X%`_shape{lanetype#10690, dim#10690, i#66649}(`I16`_lanetype, `%`_dim{i#66656}(8))), `%`_ishape{shape#1265, Jnn#270}(`%X%`_shape{lanetype#10702, dim#10702, i#66661}(`I8`_lanetype, `%`_dim{i#66668}(16))), `EXTADD_PAIRWISE`_vextunop__{sx#11104}(`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)) + prod{ishape_1#31 : ishape, ishape_2#31 : ishape, shape#1368 : shape, Jnn#274 : Jnn, lanetype#10925 : lanetype, dim#10925 : dim, i#67029 : nat, i#67036 : nat, shape#1380 : shape, Jnn#278 : Jnn, lanetype#10937 : lanetype, dim#10937 : dim, i#67041 : nat, i#67048 : nat, sx#11138 : sx, i#67022 : nat} {{0xFD} {`%`_u32{i#67022}(125):Bu32}} => `VEXTUNOP`_instr{ishape_1#31, ishape_2#31}(`%`_ishape{shape#1368, Jnn#274}(`%X%`_shape{lanetype#10925, dim#10925, i#67029}(`I16`_lanetype, `%`_dim{i#67036}(8))), `%`_ishape{shape#1380, Jnn#278}(`%X%`_shape{lanetype#10937, dim#10937, i#67041}(`I8`_lanetype, `%`_dim{i#67048}(16))), `EXTADD_PAIRWISE`_vextunop__{sx#11138}(`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_) + prod{shape#1473 : shape, lanetype#11160 : lanetype, dim#11160 : dim, i#67409 : nat, i#67416 : nat, i#67402 : nat} {{0xFD} {`%`_u32{i#67402}(128):Bu32}} => `VUNOP`_instr{shape#1473}(`%X%`_shape{lanetype#11160, dim#11160, i#67409}(`I16`_lanetype, `%`_dim{i#67416}(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_) + prod{shape#1475 : shape, lanetype#11187 : lanetype, dim#11187 : dim, i#67491 : nat, i#67498 : nat, i#67484 : nat} {{0xFD} {`%`_u32{i#67484}(129):Bu32}} => `VUNOP`_instr{shape#1475}(`%X%`_shape{lanetype#11187, dim#11187, i#67491}(`I16`_lanetype, `%`_dim{i#67498}(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_) + prod{shape#1477 : shape, lanetype#11214 : lanetype, dim#11214 : dim, i#67573 : nat, i#67580 : nat, i#67566 : nat} {{0xFD} {`%`_u32{i#67566}(130):Bu32}} => `VBINOP`_instr{shape#1477}(`%X%`_shape{lanetype#11214, dim#11214, i#67573}(`I16`_lanetype, `%`_dim{i#67580}(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_) + prod{shape#1479 : shape, lanetype#11256 : lanetype, dim#11256 : dim, i#67700 : nat, i#67707 : nat, i#67693 : nat} {{0xFD} {`%`_u32{i#67693}(142):Bu32}} => `VBINOP`_instr{shape#1479}(`%X%`_shape{lanetype#11256, dim#11256, i#67700}(`I16`_lanetype, `%`_dim{i#67707}(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)) + prod{shape#1481 : shape, lanetype#11283 : lanetype, dim#11283 : dim, i#67782 : nat, i#67789 : nat, sx#11442 : sx, i#67775 : nat} {{0xFD} {`%`_u32{i#67775}(143):Bu32}} => `VBINOP`_instr{shape#1481}(`%X%`_shape{lanetype#11283, dim#11283, i#67782}(`I16`_lanetype, `%`_dim{i#67789}(8)), `ADD_SAT`_vbinop_{sx#11442}(`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)) + prod{shape#1483 : shape, lanetype#11325 : lanetype, dim#11325 : dim, i#67909 : nat, i#67916 : nat, sx#11566 : sx, i#67902 : nat} {{0xFD} {`%`_u32{i#67902}(144):Bu32}} => `VBINOP`_instr{shape#1483}(`%X%`_shape{lanetype#11325, dim#11325, i#67909}(`I16`_lanetype, `%`_dim{i#67916}(8)), `ADD_SAT`_vbinop_{sx#11566}(`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_) + prod{shape#1485 : shape, lanetype#11367 : lanetype, dim#11367 : dim, i#68036 : nat, i#68043 : nat, i#68029 : nat} {{0xFD} {`%`_u32{i#68029}(145):Bu32}} => `VBINOP`_instr{shape#1485}(`%X%`_shape{lanetype#11367, dim#11367, i#68036}(`I16`_lanetype, `%`_dim{i#68043}(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)) + prod{shape#1487 : shape, lanetype#11394 : lanetype, dim#11394 : dim, i#68118 : nat, i#68125 : nat, sx#11750 : sx, i#68111 : nat} {{0xFD} {`%`_u32{i#68111}(146):Bu32}} => `VBINOP`_instr{shape#1487}(`%X%`_shape{lanetype#11394, dim#11394, i#68118}(`I16`_lanetype, `%`_dim{i#68125}(8)), `SUB_SAT`_vbinop_{sx#11750}(`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)) + prod{shape#1489 : shape, lanetype#11436 : lanetype, dim#11436 : dim, i#68245 : nat, i#68252 : nat, sx#11874 : sx, i#68238 : nat} {{0xFD} {`%`_u32{i#68238}(147):Bu32}} => `VBINOP`_instr{shape#1489}(`%X%`_shape{lanetype#11436, dim#11436, i#68245}(`I16`_lanetype, `%`_dim{i#68252}(8)), `SUB_SAT`_vbinop_{sx#11874}(`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_) + prod{shape#1491 : shape, lanetype#11478 : lanetype, dim#11478 : dim, i#68372 : nat, i#68379 : nat, i#68365 : nat} {{0xFD} {`%`_u32{i#68365}(149):Bu32}} => `VBINOP`_instr{shape#1491}(`%X%`_shape{lanetype#11478, dim#11478, i#68372}(`I16`_lanetype, `%`_dim{i#68379}(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)) + prod{shape#1493 : shape, lanetype#11505 : lanetype, dim#11505 : dim, i#68454 : nat, i#68461 : nat, sx#12058 : sx, i#68447 : nat} {{0xFD} {`%`_u32{i#68447}(150):Bu32}} => `VBINOP`_instr{shape#1493}(`%X%`_shape{lanetype#11505, dim#11505, i#68454}(`I16`_lanetype, `%`_dim{i#68461}(8)), `MIN`_vbinop_{sx#12058}(`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)) + prod{shape#1495 : shape, lanetype#11547 : lanetype, dim#11547 : dim, i#68581 : nat, i#68588 : nat, sx#12182 : sx, i#68574 : nat} {{0xFD} {`%`_u32{i#68574}(151):Bu32}} => `VBINOP`_instr{shape#1495}(`%X%`_shape{lanetype#11547, dim#11547, i#68581}(`I16`_lanetype, `%`_dim{i#68588}(8)), `MIN`_vbinop_{sx#12182}(`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)) + prod{shape#1497 : shape, lanetype#11589 : lanetype, dim#11589 : dim, i#68708 : nat, i#68715 : nat, sx#12306 : sx, i#68701 : nat} {{0xFD} {`%`_u32{i#68701}(152):Bu32}} => `VBINOP`_instr{shape#1497}(`%X%`_shape{lanetype#11589, dim#11589, i#68708}(`I16`_lanetype, `%`_dim{i#68715}(8)), `MAX`_vbinop_{sx#12306}(`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)) + prod{shape#1499 : shape, lanetype#11631 : lanetype, dim#11631 : dim, i#68835 : nat, i#68842 : nat, sx#12430 : sx, i#68828 : nat} {{0xFD} {`%`_u32{i#68828}(153):Bu32}} => `VBINOP`_instr{shape#1499}(`%X%`_shape{lanetype#11631, dim#11631, i#68835}(`I16`_lanetype, `%`_dim{i#68842}(8)), `MAX`_vbinop_{sx#12430}(`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_) + prod{shape#1501 : shape, lanetype#11673 : lanetype, dim#11673 : dim, i#68962 : nat, i#68969 : nat, i#68955 : nat} {{0xFD} {`%`_u32{i#68955}(155):Bu32}} => `VBINOP`_instr{shape#1501}(`%X%`_shape{lanetype#11673, dim#11673, i#68962}(`I16`_lanetype, `%`_dim{i#68969}(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_) + prod{shape#1503 : shape, lanetype#11715 : lanetype, dim#11715 : dim, i#69089 : nat, i#69096 : nat, i#69082 : nat} {{0xFD} {`%`_u32{i#69082}(273):Bu32}} => `VBINOP`_instr{shape#1503}(`%X%`_shape{lanetype#11715, dim#11715, i#69089}(`I16`_lanetype, `%`_dim{i#69096}(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_) + prod{shape#1505 : shape, lanetype#11757 : lanetype, dim#11757 : dim, i#69216 : nat, i#69223 : nat, i#69209 : nat} {{0xFD} {`%`_u32{i#69209}(131):Bu32}} => `VTESTOP`_instr{shape#1505}(`%X%`_shape{lanetype#11757, dim#11757, i#69216}(`I16`_lanetype, `%`_dim{i#69223}(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)))) + prod{ishape#21 : ishape, shape#1517 : shape, Jnn#282 : Jnn, lanetype#11784 : lanetype, dim#11784 : dim, i#69298 : nat, i#69305 : nat, i#69291 : nat} {{0xFD} {`%`_u32{i#69291}(132):Bu32}} => `VBITMASK`_instr{ishape#21}(`%`_ishape{shape#1517, Jnn#282}(`%X%`_shape{lanetype#11784, dim#11784, i#69298}(`I16`_lanetype, `%`_dim{i#69305}(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) + prod{ishape_1#33 : ishape, ishape_2#33 : ishape, sx#12672 : sx, shape#1519 : shape, Jnn#283 : Jnn, shape#1520 : shape, Jnn#284 : Jnn, shape#1521 : shape, Jnn#285 : Jnn, shape#1532 : shape, Jnn#289 : Jnn, lanetype#11796 : lanetype, dim#11796 : dim, i#69335 : nat, i#69342 : nat, shape#1544 : shape, Jnn#293 : Jnn, lanetype#11808 : lanetype, dim#11808 : dim, i#69347 : nat, i#69354 : nat, i#69328 : nat} {{0xFD} {`%`_u32{i#69328}(133):Bu32}} => `VNARROW`_instr{ishape_1#33, ishape_2#33, sx#12672, shape#1519, Jnn#283, shape#1520, Jnn#284, shape#1521, Jnn#285}(`%`_ishape{shape#1532, Jnn#289}(`%X%`_shape{lanetype#11796, dim#11796, i#69335}(`I16`_lanetype, `%`_dim{i#69342}(8))), `%`_ishape{shape#1544, Jnn#293}(`%X%`_shape{lanetype#11808, dim#11808, i#69347}(`I32`_lanetype, `%`_dim{i#69354}(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) + prod{ishape_1#35 : ishape, ishape_2#35 : ishape, sx#12674 : sx, shape#1546 : shape, Jnn#294 : Jnn, shape#1547 : shape, Jnn#295 : Jnn, shape#1548 : shape, Jnn#296 : Jnn, shape#1559 : shape, Jnn#300 : Jnn, lanetype#11820 : lanetype, dim#11820 : dim, i#69384 : nat, i#69391 : nat, shape#1571 : shape, Jnn#304 : Jnn, lanetype#11832 : lanetype, dim#11832 : dim, i#69396 : nat, i#69403 : nat, i#69377 : nat} {{0xFD} {`%`_u32{i#69377}(134):Bu32}} => `VNARROW`_instr{ishape_1#35, ishape_2#35, sx#12674, shape#1546, Jnn#294, shape#1547, Jnn#295, shape#1548, Jnn#296}(`%`_ishape{shape#1559, Jnn#300}(`%X%`_shape{lanetype#11820, dim#11820, i#69384}(`I16`_lanetype, `%`_dim{i#69391}(8))), `%`_ishape{shape#1571, Jnn#304}(`%X%`_shape{lanetype#11832, dim#11832, i#69396}(`I32`_lanetype, `%`_dim{i#69403}(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)) + prod{shape_1#7 : shape, shape_2#7 : shape, lanetype#11844 : lanetype, dim#11844 : dim, i#69433 : nat, i#69440 : nat, lanetype#11856 : lanetype, dim#11856 : dim, i#69445 : nat, i#69452 : nat, half#56 : half, sx#12708 : sx, i#69426 : nat} {{0xFD} {`%`_u32{i#69426}(135):Bu32}} => `VCVTOP`_instr{shape_1#7, shape_2#7}(`%X%`_shape{lanetype#11844, dim#11844, i#69433}(`I16`_lanetype, `%`_dim{i#69440}(8)), `%X%`_shape{lanetype#11856, dim#11856, i#69445}(`I8`_lanetype, `%`_dim{i#69452}(16)), `EXTEND`_vcvtop__{half#56, sx#12708}(`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)) + prod{shape_1#9 : shape, shape_2#9 : shape, lanetype#11959 : lanetype, dim#11959 : dim, i#69693 : nat, i#69700 : nat, lanetype#11971 : lanetype, dim#11971 : dim, i#69705 : nat, i#69712 : nat, half#90 : half, sx#12742 : sx, i#69686 : nat} {{0xFD} {`%`_u32{i#69686}(136):Bu32}} => `VCVTOP`_instr{shape_1#9, shape_2#9}(`%X%`_shape{lanetype#11959, dim#11959, i#69693}(`I16`_lanetype, `%`_dim{i#69700}(8)), `%X%`_shape{lanetype#11971, dim#11971, i#69705}(`I8`_lanetype, `%`_dim{i#69712}(16)), `EXTEND`_vcvtop__{half#90, sx#12742}(`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)) + prod{shape_1#11 : shape, shape_2#11 : shape, lanetype#12074 : lanetype, dim#12074 : dim, i#69953 : nat, i#69960 : nat, lanetype#12086 : lanetype, dim#12086 : dim, i#69965 : nat, i#69972 : nat, half#124 : half, sx#12776 : sx, i#69946 : nat} {{0xFD} {`%`_u32{i#69946}(137):Bu32}} => `VCVTOP`_instr{shape_1#11, shape_2#11}(`%X%`_shape{lanetype#12074, dim#12074, i#69953}(`I16`_lanetype, `%`_dim{i#69960}(8)), `%X%`_shape{lanetype#12086, dim#12086, i#69965}(`I8`_lanetype, `%`_dim{i#69972}(16)), `EXTEND`_vcvtop__{half#124, sx#12776}(`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)) + prod{shape_1#13 : shape, shape_2#13 : shape, lanetype#12189 : lanetype, dim#12189 : dim, i#70213 : nat, i#70220 : nat, lanetype#12201 : lanetype, dim#12201 : dim, i#70225 : nat, i#70232 : nat, half#158 : half, sx#12810 : sx, i#70206 : nat} {{0xFD} {`%`_u32{i#70206}(138):Bu32}} => `VCVTOP`_instr{shape_1#13, shape_2#13}(`%X%`_shape{lanetype#12189, dim#12189, i#70213}(`I16`_lanetype, `%`_dim{i#70220}(8)), `%X%`_shape{lanetype#12201, dim#12201, i#70225}(`I8`_lanetype, `%`_dim{i#70232}(16)), `EXTEND`_vcvtop__{half#158, sx#12810}(`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_) + prod{ishape#23 : ishape, shape#1583 : shape, Jnn#308 : Jnn, lanetype#12304 : lanetype, dim#12304 : dim, i#70473 : nat, i#70480 : nat, i#70466 : nat} {{0xFD} {`%`_u32{i#70466}(139):Bu32}} => `VSHIFTOP`_instr{ishape#23}(`%`_ishape{shape#1583, Jnn#308}(`%X%`_shape{lanetype#12304, dim#12304, i#70473}(`I16`_lanetype, `%`_dim{i#70480}(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)) + prod{ishape#25 : ishape, shape#1610 : shape, Jnn#312 : Jnn, lanetype#12361 : lanetype, dim#12361 : dim, i#70585 : nat, i#70592 : nat, sx#12859 : sx, i#70578 : nat} {{0xFD} {`%`_u32{i#70578}(140):Bu32}} => `VSHIFTOP`_instr{ishape#25}(`%`_ishape{shape#1610, Jnn#312}(`%X%`_shape{lanetype#12361, dim#12361, i#70585}(`I16`_lanetype, `%`_dim{i#70592}(8))), `SHR`_vshiftop_{sx#12859}(`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)) + prod{ishape#27 : ishape, shape#1652 : shape, Jnn#316 : Jnn, lanetype#12463 : lanetype, dim#12463 : dim, i#70772 : nat, i#70779 : nat, sx#12893 : sx, i#70765 : nat} {{0xFD} {`%`_u32{i#70765}(141):Bu32}} => `VSHIFTOP`_instr{ishape#27}(`%`_ishape{shape#1652, Jnn#316}(`%X%`_shape{lanetype#12463, dim#12463, i#70772}(`I16`_lanetype, `%`_dim{i#70779}(8))), `SHR`_vshiftop_{sx#12893}(`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)) + prod{ishape_1#37 : ishape, ishape_2#37 : ishape, shape#1694 : shape, Jnn#320 : Jnn, lanetype#12565 : lanetype, dim#12565 : dim, i#70959 : nat, i#70966 : nat, shape#1706 : shape, Jnn#324 : Jnn, lanetype#12577 : lanetype, dim#12577 : dim, i#70971 : nat, i#70978 : nat, half#192 : half, sx#12927 : sx, i#70952 : nat} {{0xFD} {`%`_u32{i#70952}(156):Bu32}} => `VEXTBINOP`_instr{ishape_1#37, ishape_2#37}(`%`_ishape{shape#1694, Jnn#320}(`%X%`_shape{lanetype#12565, dim#12565, i#70959}(`I16`_lanetype, `%`_dim{i#70966}(8))), `%`_ishape{shape#1706, Jnn#324}(`%X%`_shape{lanetype#12577, dim#12577, i#70971}(`I8`_lanetype, `%`_dim{i#70978}(16))), `EXTMUL`_vextbinop__{half#192, sx#12927}(`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)) + prod{ishape_1#39 : ishape, ishape_2#39 : ishape, shape#1809 : shape, Jnn#328 : Jnn, lanetype#12800 : lanetype, dim#12800 : dim, i#71339 : nat, i#71346 : nat, shape#1821 : shape, Jnn#332 : Jnn, lanetype#12812 : lanetype, dim#12812 : dim, i#71351 : nat, i#71358 : nat, half#226 : half, sx#12961 : sx, i#71332 : nat} {{0xFD} {`%`_u32{i#71332}(157):Bu32}} => `VEXTBINOP`_instr{ishape_1#39, ishape_2#39}(`%`_ishape{shape#1809, Jnn#328}(`%X%`_shape{lanetype#12800, dim#12800, i#71339}(`I16`_lanetype, `%`_dim{i#71346}(8))), `%`_ishape{shape#1821, Jnn#332}(`%X%`_shape{lanetype#12812, dim#12812, i#71351}(`I8`_lanetype, `%`_dim{i#71358}(16))), `EXTMUL`_vextbinop__{half#226, sx#12961}(`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)) + prod{ishape_1#41 : ishape, ishape_2#41 : ishape, shape#1924 : shape, Jnn#336 : Jnn, lanetype#13035 : lanetype, dim#13035 : dim, i#71719 : nat, i#71726 : nat, shape#1936 : shape, Jnn#340 : Jnn, lanetype#13047 : lanetype, dim#13047 : dim, i#71731 : nat, i#71738 : nat, half#260 : half, sx#12995 : sx, i#71712 : nat} {{0xFD} {`%`_u32{i#71712}(158):Bu32}} => `VEXTBINOP`_instr{ishape_1#41, ishape_2#41}(`%`_ishape{shape#1924, Jnn#336}(`%X%`_shape{lanetype#13035, dim#13035, i#71719}(`I16`_lanetype, `%`_dim{i#71726}(8))), `%`_ishape{shape#1936, Jnn#340}(`%X%`_shape{lanetype#13047, dim#13047, i#71731}(`I8`_lanetype, `%`_dim{i#71738}(16))), `EXTMUL`_vextbinop__{half#260, sx#12995}(`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)) + prod{ishape_1#43 : ishape, ishape_2#43 : ishape, shape#2039 : shape, Jnn#344 : Jnn, lanetype#13270 : lanetype, dim#13270 : dim, i#72099 : nat, i#72106 : nat, shape#2051 : shape, Jnn#348 : Jnn, lanetype#13282 : lanetype, dim#13282 : dim, i#72111 : nat, i#72118 : nat, half#294 : half, sx#13029 : sx, i#72092 : nat} {{0xFD} {`%`_u32{i#72092}(159):Bu32}} => `VEXTBINOP`_instr{ishape_1#43, ishape_2#43}(`%`_ishape{shape#2039, Jnn#344}(`%X%`_shape{lanetype#13270, dim#13270, i#72099}(`I16`_lanetype, `%`_dim{i#72106}(8))), `%`_ishape{shape#2051, Jnn#348}(`%X%`_shape{lanetype#13282, dim#13282, i#72111}(`I8`_lanetype, `%`_dim{i#72118}(16))), `EXTMUL`_vextbinop__{half#294, sx#13029}(`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__) + prod{ishape_1#45 : ishape, ishape_2#45 : ishape, shape#2154 : shape, Jnn#352 : Jnn, lanetype#13505 : lanetype, dim#13505 : dim, i#72479 : nat, i#72486 : nat, shape#2166 : shape, Jnn#356 : Jnn, lanetype#13517 : lanetype, dim#13517 : dim, i#72491 : nat, i#72498 : nat, i#72472 : nat} {{0xFD} {`%`_u32{i#72472}(274):Bu32}} => `VEXTBINOP`_instr{ishape_1#45, ishape_2#45}(`%`_ishape{shape#2154, Jnn#352}(`%X%`_shape{lanetype#13505, dim#13505, i#72479}(`I16`_lanetype, `%`_dim{i#72486}(8))), `%`_ishape{shape#2166, Jnn#356}(`%X%`_shape{lanetype#13517, dim#13517, i#72491}(`I8`_lanetype, `%`_dim{i#72498}(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)) + prod{ishape_1#47 : ishape, ishape_2#47 : ishape, shape#2269 : shape, Jnn#360 : Jnn, lanetype#13740 : lanetype, dim#13740 : dim, i#72859 : nat, i#72866 : nat, shape#2281 : shape, Jnn#364 : Jnn, lanetype#13752 : lanetype, dim#13752 : dim, i#72871 : nat, i#72878 : nat, sx#13093 : sx, i#72852 : nat} {{0xFD} {`%`_u32{i#72852}(126):Bu32}} => `VEXTUNOP`_instr{ishape_1#47, ishape_2#47}(`%`_ishape{shape#2269, Jnn#360}(`%X%`_shape{lanetype#13740, dim#13740, i#72859}(`I32`_lanetype, `%`_dim{i#72866}(4))), `%`_ishape{shape#2281, Jnn#364}(`%X%`_shape{lanetype#13752, dim#13752, i#72871}(`I16`_lanetype, `%`_dim{i#72878}(8))), `EXTADD_PAIRWISE`_vextunop__{sx#13093}(`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)) + prod{ishape_1#49 : ishape, ishape_2#49 : ishape, shape#2384 : shape, Jnn#368 : Jnn, lanetype#13975 : lanetype, dim#13975 : dim, i#73239 : nat, i#73246 : nat, shape#2396 : shape, Jnn#372 : Jnn, lanetype#13987 : lanetype, dim#13987 : dim, i#73251 : nat, i#73258 : nat, sx#13127 : sx, i#73232 : nat} {{0xFD} {`%`_u32{i#73232}(127):Bu32}} => `VEXTUNOP`_instr{ishape_1#49, ishape_2#49}(`%`_ishape{shape#2384, Jnn#368}(`%X%`_shape{lanetype#13975, dim#13975, i#73239}(`I32`_lanetype, `%`_dim{i#73246}(4))), `%`_ishape{shape#2396, Jnn#372}(`%X%`_shape{lanetype#13987, dim#13987, i#73251}(`I16`_lanetype, `%`_dim{i#73258}(8))), `EXTADD_PAIRWISE`_vextunop__{sx#13127}(`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_) + prod{shape#2489 : shape, lanetype#14210 : lanetype, dim#14210 : dim, i#73619 : nat, i#73626 : nat, i#73612 : nat} {{0xFD} {`%`_u32{i#73612}(160):Bu32}} => `VUNOP`_instr{shape#2489}(`%X%`_shape{lanetype#14210, dim#14210, i#73619}(`I32`_lanetype, `%`_dim{i#73626}(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_) + prod{shape#2491 : shape, lanetype#14237 : lanetype, dim#14237 : dim, i#73701 : nat, i#73708 : nat, i#73694 : nat} {{0xFD} {`%`_u32{i#73694}(161):Bu32}} => `VUNOP`_instr{shape#2491}(`%X%`_shape{lanetype#14237, dim#14237, i#73701}(`I32`_lanetype, `%`_dim{i#73708}(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_) + prod{shape#2493 : shape, lanetype#14264 : lanetype, dim#14264 : dim, i#73783 : nat, i#73790 : nat, i#73776 : nat} {{0xFD} {`%`_u32{i#73776}(163):Bu32}} => `VTESTOP`_instr{shape#2493}(`%X%`_shape{lanetype#14264, dim#14264, i#73783}(`I32`_lanetype, `%`_dim{i#73790}(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)))) + prod{ishape#29 : ishape, shape#2505 : shape, Jnn#376 : Jnn, lanetype#14291 : lanetype, dim#14291 : dim, i#73865 : nat, i#73872 : nat, i#73858 : nat} {{0xFD} {`%`_u32{i#73858}(164):Bu32}} => `VBITMASK`_instr{ishape#29}(`%`_ishape{shape#2505, Jnn#376}(`%X%`_shape{lanetype#14291, dim#14291, i#73865}(`I32`_lanetype, `%`_dim{i#73872}(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)) + prod{shape_1#15 : shape, shape_2#15 : shape, lanetype#14303 : lanetype, dim#14303 : dim, i#73902 : nat, i#73909 : nat, lanetype#14315 : lanetype, dim#14315 : dim, i#73914 : nat, i#73921 : nat, half#358 : half, sx#13161 : sx, i#73895 : nat} {{0xFD} {`%`_u32{i#73895}(167):Bu32}} => `VCVTOP`_instr{shape_1#15, shape_2#15}(`%X%`_shape{lanetype#14303, dim#14303, i#73902}(`I32`_lanetype, `%`_dim{i#73909}(4)), `%X%`_shape{lanetype#14315, dim#14315, i#73914}(`I16`_lanetype, `%`_dim{i#73921}(8)), `EXTEND`_vcvtop__{half#358, sx#13161}(`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)) + prod{shape_1#17 : shape, shape_2#17 : shape, lanetype#14418 : lanetype, dim#14418 : dim, i#74162 : nat, i#74169 : nat, lanetype#14430 : lanetype, dim#14430 : dim, i#74174 : nat, i#74181 : nat, half#392 : half, sx#13195 : sx, i#74155 : nat} {{0xFD} {`%`_u32{i#74155}(168):Bu32}} => `VCVTOP`_instr{shape_1#17, shape_2#17}(`%X%`_shape{lanetype#14418, dim#14418, i#74162}(`I32`_lanetype, `%`_dim{i#74169}(4)), `%X%`_shape{lanetype#14430, dim#14430, i#74174}(`I16`_lanetype, `%`_dim{i#74181}(8)), `EXTEND`_vcvtop__{half#392, sx#13195}(`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)) + prod{shape_1#19 : shape, shape_2#19 : shape, lanetype#14533 : lanetype, dim#14533 : dim, i#74422 : nat, i#74429 : nat, lanetype#14545 : lanetype, dim#14545 : dim, i#74434 : nat, i#74441 : nat, half#426 : half, sx#13229 : sx, i#74415 : nat} {{0xFD} {`%`_u32{i#74415}(169):Bu32}} => `VCVTOP`_instr{shape_1#19, shape_2#19}(`%X%`_shape{lanetype#14533, dim#14533, i#74422}(`I32`_lanetype, `%`_dim{i#74429}(4)), `%X%`_shape{lanetype#14545, dim#14545, i#74434}(`I16`_lanetype, `%`_dim{i#74441}(8)), `EXTEND`_vcvtop__{half#426, sx#13229}(`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)) + prod{shape_1#21 : shape, shape_2#21 : shape, lanetype#14648 : lanetype, dim#14648 : dim, i#74682 : nat, i#74689 : nat, lanetype#14660 : lanetype, dim#14660 : dim, i#74694 : nat, i#74701 : nat, half#460 : half, sx#13263 : sx, i#74675 : nat} {{0xFD} {`%`_u32{i#74675}(170):Bu32}} => `VCVTOP`_instr{shape_1#21, shape_2#21}(`%X%`_shape{lanetype#14648, dim#14648, i#74682}(`I32`_lanetype, `%`_dim{i#74689}(4)), `%X%`_shape{lanetype#14660, dim#14660, i#74694}(`I16`_lanetype, `%`_dim{i#74701}(8)), `EXTEND`_vcvtop__{half#460, sx#13263}(`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_) + prod{ishape#31 : ishape, shape#2517 : shape, Jnn#380 : Jnn, lanetype#14763 : lanetype, dim#14763 : dim, i#74942 : nat, i#74949 : nat, i#74935 : nat} {{0xFD} {`%`_u32{i#74935}(171):Bu32}} => `VSHIFTOP`_instr{ishape#31}(`%`_ishape{shape#2517, Jnn#380}(`%X%`_shape{lanetype#14763, dim#14763, i#74942}(`I32`_lanetype, `%`_dim{i#74949}(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)) + prod{ishape#33 : ishape, shape#2544 : shape, Jnn#384 : Jnn, lanetype#14820 : lanetype, dim#14820 : dim, i#75054 : nat, i#75061 : nat, sx#13297 : sx, i#75047 : nat} {{0xFD} {`%`_u32{i#75047}(172):Bu32}} => `VSHIFTOP`_instr{ishape#33}(`%`_ishape{shape#2544, Jnn#384}(`%X%`_shape{lanetype#14820, dim#14820, i#75054}(`I32`_lanetype, `%`_dim{i#75061}(4))), `SHR`_vshiftop_{sx#13297}(`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)) + prod{ishape#35 : ishape, shape#2573 : shape, Jnn#388 : Jnn, lanetype#14883 : lanetype, dim#14883 : dim, i#75176 : nat, i#75183 : nat, sx#13316 : sx, i#75169 : nat} {{0xFD} {`%`_u32{i#75169}(173):Bu32}} => `VSHIFTOP`_instr{ishape#35}(`%`_ishape{shape#2573, Jnn#388}(`%X%`_shape{lanetype#14883, dim#14883, i#75176}(`I32`_lanetype, `%`_dim{i#75183}(4))), `SHR`_vshiftop_{sx#13316}(`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_) + prod{shape#2592 : shape, lanetype#14946 : lanetype, dim#14946 : dim, i#75298 : nat, i#75305 : nat, i#75291 : nat} {{0xFD} {`%`_u32{i#75291}(174):Bu32}} => `VBINOP`_instr{shape#2592}(`%X%`_shape{lanetype#14946, dim#14946, i#75298}(`I32`_lanetype, `%`_dim{i#75305}(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_) + prod{shape#2594 : shape, lanetype#14973 : lanetype, dim#14973 : dim, i#75380 : nat, i#75387 : nat, i#75373 : nat} {{0xFD} {`%`_u32{i#75373}(177):Bu32}} => `VBINOP`_instr{shape#2594}(`%X%`_shape{lanetype#14973, dim#14973, i#75380}(`I32`_lanetype, `%`_dim{i#75387}(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_) + prod{shape#2596 : shape, lanetype#15000 : lanetype, dim#15000 : dim, i#75462 : nat, i#75469 : nat, i#75455 : nat} {{0xFD} {`%`_u32{i#75455}(181):Bu32}} => `VBINOP`_instr{shape#2596}(`%X%`_shape{lanetype#15000, dim#15000, i#75462}(`I32`_lanetype, `%`_dim{i#75469}(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)) + prod{shape#2598 : shape, lanetype#15027 : lanetype, dim#15027 : dim, i#75544 : nat, i#75551 : nat, sx#13620 : sx, i#75537 : nat} {{0xFD} {`%`_u32{i#75537}(182):Bu32}} => `VBINOP`_instr{shape#2598}(`%X%`_shape{lanetype#15027, dim#15027, i#75544}(`I32`_lanetype, `%`_dim{i#75551}(4)), `MIN`_vbinop_{sx#13620}(`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)) + prod{shape#2600 : shape, lanetype#15069 : lanetype, dim#15069 : dim, i#75671 : nat, i#75678 : nat, sx#13744 : sx, i#75664 : nat} {{0xFD} {`%`_u32{i#75664}(183):Bu32}} => `VBINOP`_instr{shape#2600}(`%X%`_shape{lanetype#15069, dim#15069, i#75671}(`I32`_lanetype, `%`_dim{i#75678}(4)), `MIN`_vbinop_{sx#13744}(`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)) + prod{shape#2602 : shape, lanetype#15111 : lanetype, dim#15111 : dim, i#75798 : nat, i#75805 : nat, sx#13868 : sx, i#75791 : nat} {{0xFD} {`%`_u32{i#75791}(184):Bu32}} => `VBINOP`_instr{shape#2602}(`%X%`_shape{lanetype#15111, dim#15111, i#75798}(`I32`_lanetype, `%`_dim{i#75805}(4)), `MAX`_vbinop_{sx#13868}(`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)) + prod{shape#2604 : shape, lanetype#15153 : lanetype, dim#15153 : dim, i#75925 : nat, i#75932 : nat, sx#13992 : sx, i#75918 : nat} {{0xFD} {`%`_u32{i#75918}(185):Bu32}} => `VBINOP`_instr{shape#2604}(`%X%`_shape{lanetype#15153, dim#15153, i#75925}(`I32`_lanetype, `%`_dim{i#75932}(4)), `MAX`_vbinop_{sx#13992}(`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__) + prod{ishape_1#51 : ishape, ishape_2#51 : ishape, shape#2616 : shape, Jnn#392 : Jnn, lanetype#15195 : lanetype, dim#15195 : dim, i#76052 : nat, i#76059 : nat, shape#2628 : shape, Jnn#396 : Jnn, lanetype#15207 : lanetype, dim#15207 : dim, i#76064 : nat, i#76071 : nat, i#76045 : nat} {{0xFD} {`%`_u32{i#76045}(186):Bu32}} => `VEXTBINOP`_instr{ishape_1#51, ishape_2#51}(`%`_ishape{shape#2616, Jnn#392}(`%X%`_shape{lanetype#15195, dim#15195, i#76052}(`I32`_lanetype, `%`_dim{i#76059}(4))), `%`_ishape{shape#2628, Jnn#396}(`%X%`_shape{lanetype#15207, dim#15207, i#76064}(`I16`_lanetype, `%`_dim{i#76071}(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)) + prod{ishape_1#53 : ishape, ishape_2#53 : ishape, shape#2731 : shape, Jnn#400 : Jnn, lanetype#15430 : lanetype, dim#15430 : dim, i#76432 : nat, i#76439 : nat, shape#2743 : shape, Jnn#404 : Jnn, lanetype#15442 : lanetype, dim#15442 : dim, i#76444 : nat, i#76451 : nat, half#524 : half, sx#14056 : sx, i#76425 : nat} {{0xFD} {`%`_u32{i#76425}(188):Bu32}} => `VEXTBINOP`_instr{ishape_1#53, ishape_2#53}(`%`_ishape{shape#2731, Jnn#400}(`%X%`_shape{lanetype#15430, dim#15430, i#76432}(`I32`_lanetype, `%`_dim{i#76439}(4))), `%`_ishape{shape#2743, Jnn#404}(`%X%`_shape{lanetype#15442, dim#15442, i#76444}(`I16`_lanetype, `%`_dim{i#76451}(8))), `EXTMUL`_vextbinop__{half#524, sx#14056}(`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)) + prod{ishape_1#55 : ishape, ishape_2#55 : ishape, shape#2846 : shape, Jnn#408 : Jnn, lanetype#15665 : lanetype, dim#15665 : dim, i#76812 : nat, i#76819 : nat, shape#2858 : shape, Jnn#412 : Jnn, lanetype#15677 : lanetype, dim#15677 : dim, i#76824 : nat, i#76831 : nat, half#558 : half, sx#14090 : sx, i#76805 : nat} {{0xFD} {`%`_u32{i#76805}(189):Bu32}} => `VEXTBINOP`_instr{ishape_1#55, ishape_2#55}(`%`_ishape{shape#2846, Jnn#408}(`%X%`_shape{lanetype#15665, dim#15665, i#76812}(`I32`_lanetype, `%`_dim{i#76819}(4))), `%`_ishape{shape#2858, Jnn#412}(`%X%`_shape{lanetype#15677, dim#15677, i#76824}(`I16`_lanetype, `%`_dim{i#76831}(8))), `EXTMUL`_vextbinop__{half#558, sx#14090}(`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)) + prod{ishape_1#57 : ishape, ishape_2#57 : ishape, shape#2961 : shape, Jnn#416 : Jnn, lanetype#15900 : lanetype, dim#15900 : dim, i#77192 : nat, i#77199 : nat, shape#2973 : shape, Jnn#420 : Jnn, lanetype#15912 : lanetype, dim#15912 : dim, i#77204 : nat, i#77211 : nat, half#592 : half, sx#14124 : sx, i#77185 : nat} {{0xFD} {`%`_u32{i#77185}(190):Bu32}} => `VEXTBINOP`_instr{ishape_1#57, ishape_2#57}(`%`_ishape{shape#2961, Jnn#416}(`%X%`_shape{lanetype#15900, dim#15900, i#77192}(`I32`_lanetype, `%`_dim{i#77199}(4))), `%`_ishape{shape#2973, Jnn#420}(`%X%`_shape{lanetype#15912, dim#15912, i#77204}(`I16`_lanetype, `%`_dim{i#77211}(8))), `EXTMUL`_vextbinop__{half#592, sx#14124}(`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)) + prod{ishape_1#59 : ishape, ishape_2#59 : ishape, shape#3076 : shape, Jnn#424 : Jnn, lanetype#16135 : lanetype, dim#16135 : dim, i#77572 : nat, i#77579 : nat, shape#3088 : shape, Jnn#428 : Jnn, lanetype#16147 : lanetype, dim#16147 : dim, i#77584 : nat, i#77591 : nat, half#626 : half, sx#14158 : sx, i#77565 : nat} {{0xFD} {`%`_u32{i#77565}(191):Bu32}} => `VEXTBINOP`_instr{ishape_1#59, ishape_2#59}(`%`_ishape{shape#3076, Jnn#424}(`%X%`_shape{lanetype#16135, dim#16135, i#77572}(`I32`_lanetype, `%`_dim{i#77579}(4))), `%`_ishape{shape#3088, Jnn#428}(`%X%`_shape{lanetype#16147, dim#16147, i#77584}(`I16`_lanetype, `%`_dim{i#77591}(8))), `EXTMUL`_vextbinop__{half#626, sx#14158}(`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__) + prod{ishape_1#61 : ishape, ishape_2#61 : ishape, shape#3191 : shape, Jnn#432 : Jnn, lanetype#16370 : lanetype, dim#16370 : dim, i#77952 : nat, i#77959 : nat, shape#3203 : shape, Jnn#436 : Jnn, lanetype#16382 : lanetype, dim#16382 : dim, i#77964 : nat, i#77971 : nat, i#77945 : nat} {{0xFD} {`%`_u32{i#77945}(275):Bu32}} => `VEXTTERNOP`_instr{ishape_1#61, ishape_2#61}(`%`_ishape{shape#3191, Jnn#432}(`%X%`_shape{lanetype#16370, dim#16370, i#77952}(`I32`_lanetype, `%`_dim{i#77959}(4))), `%`_ishape{shape#3203, Jnn#436}(`%X%`_shape{lanetype#16382, dim#16382, i#77964}(`I16`_lanetype, `%`_dim{i#77971}(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_) + prod{shape#3296 : shape, lanetype#16605 : lanetype, dim#16605 : dim, i#78332 : nat, i#78339 : nat, i#78325 : nat} {{0xFD} {`%`_u32{i#78325}(192):Bu32}} => `VUNOP`_instr{shape#3296}(`%X%`_shape{lanetype#16605, dim#16605, i#78332}(`I64`_lanetype, `%`_dim{i#78339}(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_) + prod{shape#3298 : shape, lanetype#16632 : lanetype, dim#16632 : dim, i#78414 : nat, i#78421 : nat, i#78407 : nat} {{0xFD} {`%`_u32{i#78407}(193):Bu32}} => `VUNOP`_instr{shape#3298}(`%X%`_shape{lanetype#16632, dim#16632, i#78414}(`I64`_lanetype, `%`_dim{i#78421}(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_) + prod{shape#3300 : shape, lanetype#16659 : lanetype, dim#16659 : dim, i#78496 : nat, i#78503 : nat, i#78489 : nat} {{0xFD} {`%`_u32{i#78489}(195):Bu32}} => `VTESTOP`_instr{shape#3300}(`%X%`_shape{lanetype#16659, dim#16659, i#78496}(`I64`_lanetype, `%`_dim{i#78503}(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)))) + prod{ishape#37 : ishape, shape#3312 : shape, Jnn#440 : Jnn, lanetype#16686 : lanetype, dim#16686 : dim, i#78578 : nat, i#78585 : nat, i#78571 : nat} {{0xFD} {`%`_u32{i#78571}(196):Bu32}} => `VBITMASK`_instr{ishape#37}(`%`_ishape{shape#3312, Jnn#440}(`%X%`_shape{lanetype#16686, dim#16686, i#78578}(`I64`_lanetype, `%`_dim{i#78585}(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)) + prod{shape_1#23 : shape, shape_2#23 : shape, lanetype#16698 : lanetype, dim#16698 : dim, i#78615 : nat, i#78622 : nat, lanetype#16710 : lanetype, dim#16710 : dim, i#78627 : nat, i#78634 : nat, half#660 : half, sx#14192 : sx, i#78608 : nat} {{0xFD} {`%`_u32{i#78608}(199):Bu32}} => `VCVTOP`_instr{shape_1#23, shape_2#23}(`%X%`_shape{lanetype#16698, dim#16698, i#78615}(`I64`_lanetype, `%`_dim{i#78622}(2)), `%X%`_shape{lanetype#16710, dim#16710, i#78627}(`I32`_lanetype, `%`_dim{i#78634}(4)), `EXTEND`_vcvtop__{half#660, sx#14192}(`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)) + prod{shape_1#25 : shape, shape_2#25 : shape, lanetype#16813 : lanetype, dim#16813 : dim, i#78875 : nat, i#78882 : nat, lanetype#16825 : lanetype, dim#16825 : dim, i#78887 : nat, i#78894 : nat, half#694 : half, sx#14226 : sx, i#78868 : nat} {{0xFD} {`%`_u32{i#78868}(200):Bu32}} => `VCVTOP`_instr{shape_1#25, shape_2#25}(`%X%`_shape{lanetype#16813, dim#16813, i#78875}(`I64`_lanetype, `%`_dim{i#78882}(2)), `%X%`_shape{lanetype#16825, dim#16825, i#78887}(`I32`_lanetype, `%`_dim{i#78894}(4)), `EXTEND`_vcvtop__{half#694, sx#14226}(`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)) + prod{shape_1#27 : shape, shape_2#27 : shape, lanetype#16928 : lanetype, dim#16928 : dim, i#79135 : nat, i#79142 : nat, lanetype#16940 : lanetype, dim#16940 : dim, i#79147 : nat, i#79154 : nat, half#728 : half, sx#14260 : sx, i#79128 : nat} {{0xFD} {`%`_u32{i#79128}(201):Bu32}} => `VCVTOP`_instr{shape_1#27, shape_2#27}(`%X%`_shape{lanetype#16928, dim#16928, i#79135}(`I64`_lanetype, `%`_dim{i#79142}(2)), `%X%`_shape{lanetype#16940, dim#16940, i#79147}(`I32`_lanetype, `%`_dim{i#79154}(4)), `EXTEND`_vcvtop__{half#728, sx#14260}(`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)) + prod{shape_1#29 : shape, shape_2#29 : shape, lanetype#17043 : lanetype, dim#17043 : dim, i#79395 : nat, i#79402 : nat, lanetype#17055 : lanetype, dim#17055 : dim, i#79407 : nat, i#79414 : nat, half#762 : half, sx#14294 : sx, i#79388 : nat} {{0xFD} {`%`_u32{i#79388}(202):Bu32}} => `VCVTOP`_instr{shape_1#29, shape_2#29}(`%X%`_shape{lanetype#17043, dim#17043, i#79395}(`I64`_lanetype, `%`_dim{i#79402}(2)), `%X%`_shape{lanetype#17055, dim#17055, i#79407}(`I32`_lanetype, `%`_dim{i#79414}(4)), `EXTEND`_vcvtop__{half#762, sx#14294}(`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_) + prod{ishape#39 : ishape, shape#3324 : shape, Jnn#444 : Jnn, lanetype#17158 : lanetype, dim#17158 : dim, i#79655 : nat, i#79662 : nat, i#79648 : nat} {{0xFD} {`%`_u32{i#79648}(203):Bu32}} => `VSHIFTOP`_instr{ishape#39}(`%`_ishape{shape#3324, Jnn#444}(`%X%`_shape{lanetype#17158, dim#17158, i#79655}(`I64`_lanetype, `%`_dim{i#79662}(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)) + prod{ishape#41 : ishape, shape#3351 : shape, Jnn#448 : Jnn, lanetype#17215 : lanetype, dim#17215 : dim, i#79767 : nat, i#79774 : nat, sx#14328 : sx, i#79760 : nat} {{0xFD} {`%`_u32{i#79760}(204):Bu32}} => `VSHIFTOP`_instr{ishape#41}(`%`_ishape{shape#3351, Jnn#448}(`%X%`_shape{lanetype#17215, dim#17215, i#79767}(`I64`_lanetype, `%`_dim{i#79774}(2))), `SHR`_vshiftop_{sx#14328}(`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)) + prod{ishape#43 : ishape, shape#3380 : shape, Jnn#452 : Jnn, lanetype#17278 : lanetype, dim#17278 : dim, i#79889 : nat, i#79896 : nat, sx#14347 : sx, i#79882 : nat} {{0xFD} {`%`_u32{i#79882}(205):Bu32}} => `VSHIFTOP`_instr{ishape#43}(`%`_ishape{shape#3380, Jnn#452}(`%X%`_shape{lanetype#17278, dim#17278, i#79889}(`I64`_lanetype, `%`_dim{i#79896}(2))), `SHR`_vshiftop_{sx#14347}(`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_) + prod{shape#3399 : shape, lanetype#17341 : lanetype, dim#17341 : dim, i#80011 : nat, i#80018 : nat, i#80004 : nat} {{0xFD} {`%`_u32{i#80004}(206):Bu32}} => `VBINOP`_instr{shape#3399}(`%X%`_shape{lanetype#17341, dim#17341, i#80011}(`I64`_lanetype, `%`_dim{i#80018}(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_) + prod{shape#3401 : shape, lanetype#17368 : lanetype, dim#17368 : dim, i#80093 : nat, i#80100 : nat, i#80086 : nat} {{0xFD} {`%`_u32{i#80086}(209):Bu32}} => `VBINOP`_instr{shape#3401}(`%X%`_shape{lanetype#17368, dim#17368, i#80093}(`I64`_lanetype, `%`_dim{i#80100}(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_) + prod{shape#3403 : shape, lanetype#17395 : lanetype, dim#17395 : dim, i#80175 : nat, i#80182 : nat, i#80168 : nat} {{0xFD} {`%`_u32{i#80168}(213):Bu32}} => `VBINOP`_instr{shape#3403}(`%X%`_shape{lanetype#17395, dim#17395, i#80175}(`I64`_lanetype, `%`_dim{i#80182}(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_) + prod{shape#3405 : shape, lanetype#17422 : lanetype, dim#17422 : dim, i#80257 : nat, i#80264 : nat, i#80250 : nat} {{0xFD} {`%`_u32{i#80250}(214):Bu32}} => `VRELOP`_instr{shape#3405}(`%X%`_shape{lanetype#17422, dim#17422, i#80257}(`I64`_lanetype, `%`_dim{i#80264}(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_) + prod{shape#3407 : shape, lanetype#17449 : lanetype, dim#17449 : dim, i#80339 : nat, i#80346 : nat, i#80332 : nat} {{0xFD} {`%`_u32{i#80332}(215):Bu32}} => `VRELOP`_instr{shape#3407}(`%X%`_shape{lanetype#17449, dim#17449, i#80339}(`I64`_lanetype, `%`_dim{i#80346}(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)) + prod{shape#3409 : shape, lanetype#17476 : lanetype, dim#17476 : dim, i#80421 : nat, i#80428 : nat, sx#14717 : sx, i#80414 : nat} {{0xFD} {`%`_u32{i#80414}(216):Bu32}} => `VRELOP`_instr{shape#3409}(`%X%`_shape{lanetype#17476, dim#17476, i#80421}(`I64`_lanetype, `%`_dim{i#80428}(2)), `LT`_vrelop_{sx#14717}(`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)) + prod{shape#3411 : shape, lanetype#17505 : lanetype, dim#17505 : dim, i#80509 : nat, i#80516 : nat, sx#14787 : sx, i#80502 : nat} {{0xFD} {`%`_u32{i#80502}(217):Bu32}} => `VRELOP`_instr{shape#3411}(`%X%`_shape{lanetype#17505, dim#17505, i#80509}(`I64`_lanetype, `%`_dim{i#80516}(2)), `GT`_vrelop_{sx#14787}(`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)) + prod{shape#3413 : shape, lanetype#17534 : lanetype, dim#17534 : dim, i#80597 : nat, i#80604 : nat, sx#14857 : sx, i#80590 : nat} {{0xFD} {`%`_u32{i#80590}(218):Bu32}} => `VRELOP`_instr{shape#3413}(`%X%`_shape{lanetype#17534, dim#17534, i#80597}(`I64`_lanetype, `%`_dim{i#80604}(2)), `LE`_vrelop_{sx#14857}(`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)) + prod{shape#3415 : shape, lanetype#17563 : lanetype, dim#17563 : dim, i#80685 : nat, i#80692 : nat, sx#14927 : sx, i#80678 : nat} {{0xFD} {`%`_u32{i#80678}(219):Bu32}} => `VRELOP`_instr{shape#3415}(`%X%`_shape{lanetype#17563, dim#17563, i#80685}(`I64`_lanetype, `%`_dim{i#80692}(2)), `GE`_vrelop_{sx#14927}(`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)) + prod{ishape_1#63 : ishape, ishape_2#63 : ishape, shape#3427 : shape, Jnn#456 : Jnn, lanetype#17592 : lanetype, dim#17592 : dim, i#80773 : nat, i#80780 : nat, shape#3439 : shape, Jnn#460 : Jnn, lanetype#17604 : lanetype, dim#17604 : dim, i#80785 : nat, i#80792 : nat, half#796 : half, sx#14961 : sx, i#80766 : nat} {{0xFD} {`%`_u32{i#80766}(220):Bu32}} => `VEXTBINOP`_instr{ishape_1#63, ishape_2#63}(`%`_ishape{shape#3427, Jnn#456}(`%X%`_shape{lanetype#17592, dim#17592, i#80773}(`I64`_lanetype, `%`_dim{i#80780}(2))), `%`_ishape{shape#3439, Jnn#460}(`%X%`_shape{lanetype#17604, dim#17604, i#80785}(`I32`_lanetype, `%`_dim{i#80792}(4))), `EXTMUL`_vextbinop__{half#796, sx#14961}(`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)) + prod{ishape_1#65 : ishape, ishape_2#65 : ishape, shape#3542 : shape, Jnn#464 : Jnn, lanetype#17827 : lanetype, dim#17827 : dim, i#81153 : nat, i#81160 : nat, shape#3554 : shape, Jnn#468 : Jnn, lanetype#17839 : lanetype, dim#17839 : dim, i#81165 : nat, i#81172 : nat, half#830 : half, sx#14995 : sx, i#81146 : nat} {{0xFD} {`%`_u32{i#81146}(221):Bu32}} => `VEXTBINOP`_instr{ishape_1#65, ishape_2#65}(`%`_ishape{shape#3542, Jnn#464}(`%X%`_shape{lanetype#17827, dim#17827, i#81153}(`I64`_lanetype, `%`_dim{i#81160}(2))), `%`_ishape{shape#3554, Jnn#468}(`%X%`_shape{lanetype#17839, dim#17839, i#81165}(`I32`_lanetype, `%`_dim{i#81172}(4))), `EXTMUL`_vextbinop__{half#830, sx#14995}(`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)) + prod{ishape_1#67 : ishape, ishape_2#67 : ishape, shape#3657 : shape, Jnn#472 : Jnn, lanetype#18062 : lanetype, dim#18062 : dim, i#81533 : nat, i#81540 : nat, shape#3669 : shape, Jnn#476 : Jnn, lanetype#18074 : lanetype, dim#18074 : dim, i#81545 : nat, i#81552 : nat, half#864 : half, sx#15029 : sx, i#81526 : nat} {{0xFD} {`%`_u32{i#81526}(222):Bu32}} => `VEXTBINOP`_instr{ishape_1#67, ishape_2#67}(`%`_ishape{shape#3657, Jnn#472}(`%X%`_shape{lanetype#18062, dim#18062, i#81533}(`I64`_lanetype, `%`_dim{i#81540}(2))), `%`_ishape{shape#3669, Jnn#476}(`%X%`_shape{lanetype#18074, dim#18074, i#81545}(`I32`_lanetype, `%`_dim{i#81552}(4))), `EXTMUL`_vextbinop__{half#864, sx#15029}(`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)) + prod{ishape_1#69 : ishape, ishape_2#69 : ishape, shape#3772 : shape, Jnn#480 : Jnn, lanetype#18297 : lanetype, dim#18297 : dim, i#81913 : nat, i#81920 : nat, shape#3784 : shape, Jnn#484 : Jnn, lanetype#18309 : lanetype, dim#18309 : dim, i#81925 : nat, i#81932 : nat, half#898 : half, sx#15063 : sx, i#81906 : nat} {{0xFD} {`%`_u32{i#81906}(223):Bu32}} => `VEXTBINOP`_instr{ishape_1#69, ishape_2#69}(`%`_ishape{shape#3772, Jnn#480}(`%X%`_shape{lanetype#18297, dim#18297, i#81913}(`I64`_lanetype, `%`_dim{i#81920}(2))), `%`_ishape{shape#3784, Jnn#484}(`%X%`_shape{lanetype#18309, dim#18309, i#81925}(`I32`_lanetype, `%`_dim{i#81932}(4))), `EXTMUL`_vextbinop__{half#898, sx#15063}(`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_) + prod{shape#3877 : shape, lanetype#18532 : lanetype, dim#18532 : dim, i#82293 : nat, i#82300 : nat, i#82286 : nat} {{0xFD} {`%`_u32{i#82286}(103):Bu32}} => `VUNOP`_instr{shape#3877}(`%X%`_shape{lanetype#18532, dim#18532, i#82293}(`F32`_lanetype, `%`_dim{i#82300}(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_) + prod{shape#3879 : shape, lanetype#18574 : lanetype, dim#18574 : dim, i#82390 : nat, i#82397 : nat, i#82383 : nat} {{0xFD} {`%`_u32{i#82383}(104):Bu32}} => `VUNOP`_instr{shape#3879}(`%X%`_shape{lanetype#18574, dim#18574, i#82390}(`F32`_lanetype, `%`_dim{i#82397}(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_) + prod{shape#3881 : shape, lanetype#18616 : lanetype, dim#18616 : dim, i#82487 : nat, i#82494 : nat, i#82480 : nat} {{0xFD} {`%`_u32{i#82480}(105):Bu32}} => `VUNOP`_instr{shape#3881}(`%X%`_shape{lanetype#18616, dim#18616, i#82487}(`F32`_lanetype, `%`_dim{i#82494}(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_) + prod{shape#3883 : shape, lanetype#18658 : lanetype, dim#18658 : dim, i#82584 : nat, i#82591 : nat, i#82577 : nat} {{0xFD} {`%`_u32{i#82577}(106):Bu32}} => `VUNOP`_instr{shape#3883}(`%X%`_shape{lanetype#18658, dim#18658, i#82584}(`F32`_lanetype, `%`_dim{i#82591}(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_) + prod{shape#3885 : shape, lanetype#18700 : lanetype, dim#18700 : dim, i#82681 : nat, i#82688 : nat, i#82674 : nat} {{0xFD} {`%`_u32{i#82674}(224):Bu32}} => `VUNOP`_instr{shape#3885}(`%X%`_shape{lanetype#18700, dim#18700, i#82681}(`F32`_lanetype, `%`_dim{i#82688}(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_) + prod{shape#3887 : shape, lanetype#18742 : lanetype, dim#18742 : dim, i#82778 : nat, i#82785 : nat, i#82771 : nat} {{0xFD} {`%`_u32{i#82771}(225):Bu32}} => `VUNOP`_instr{shape#3887}(`%X%`_shape{lanetype#18742, dim#18742, i#82778}(`F32`_lanetype, `%`_dim{i#82785}(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_) + prod{shape#3889 : shape, lanetype#18784 : lanetype, dim#18784 : dim, i#82875 : nat, i#82882 : nat, i#82868 : nat} {{0xFD} {`%`_u32{i#82868}(227):Bu32}} => `VUNOP`_instr{shape#3889}(`%X%`_shape{lanetype#18784, dim#18784, i#82875}(`F32`_lanetype, `%`_dim{i#82882}(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_) + prod{shape#3891 : shape, lanetype#18826 : lanetype, dim#18826 : dim, i#82972 : nat, i#82979 : nat, i#82965 : nat} {{0xFD} {`%`_u32{i#82965}(228):Bu32}} => `VBINOP`_instr{shape#3891}(`%X%`_shape{lanetype#18826, dim#18826, i#82972}(`F32`_lanetype, `%`_dim{i#82979}(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_) + prod{shape#3893 : shape, lanetype#18868 : lanetype, dim#18868 : dim, i#83069 : nat, i#83076 : nat, i#83062 : nat} {{0xFD} {`%`_u32{i#83062}(229):Bu32}} => `VBINOP`_instr{shape#3893}(`%X%`_shape{lanetype#18868, dim#18868, i#83069}(`F32`_lanetype, `%`_dim{i#83076}(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_) + prod{shape#3895 : shape, lanetype#18910 : lanetype, dim#18910 : dim, i#83166 : nat, i#83173 : nat, i#83159 : nat} {{0xFD} {`%`_u32{i#83159}(230):Bu32}} => `VBINOP`_instr{shape#3895}(`%X%`_shape{lanetype#18910, dim#18910, i#83166}(`F32`_lanetype, `%`_dim{i#83173}(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_) + prod{shape#3897 : shape, lanetype#18952 : lanetype, dim#18952 : dim, i#83263 : nat, i#83270 : nat, i#83256 : nat} {{0xFD} {`%`_u32{i#83256}(231):Bu32}} => `VBINOP`_instr{shape#3897}(`%X%`_shape{lanetype#18952, dim#18952, i#83263}(`F32`_lanetype, `%`_dim{i#83270}(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_) + prod{shape#3899 : shape, lanetype#18994 : lanetype, dim#18994 : dim, i#83360 : nat, i#83367 : nat, i#83353 : nat} {{0xFD} {`%`_u32{i#83353}(232):Bu32}} => `VBINOP`_instr{shape#3899}(`%X%`_shape{lanetype#18994, dim#18994, i#83360}(`F32`_lanetype, `%`_dim{i#83367}(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_) + prod{shape#3901 : shape, lanetype#19036 : lanetype, dim#19036 : dim, i#83457 : nat, i#83464 : nat, i#83450 : nat} {{0xFD} {`%`_u32{i#83450}(233):Bu32}} => `VBINOP`_instr{shape#3901}(`%X%`_shape{lanetype#19036, dim#19036, i#83457}(`F32`_lanetype, `%`_dim{i#83464}(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_) + prod{shape#3903 : shape, lanetype#19078 : lanetype, dim#19078 : dim, i#83554 : nat, i#83561 : nat, i#83547 : nat} {{0xFD} {`%`_u32{i#83547}(234):Bu32}} => `VBINOP`_instr{shape#3903}(`%X%`_shape{lanetype#19078, dim#19078, i#83554}(`F32`_lanetype, `%`_dim{i#83561}(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_) + prod{shape#3905 : shape, lanetype#19120 : lanetype, dim#19120 : dim, i#83651 : nat, i#83658 : nat, i#83644 : nat} {{0xFD} {`%`_u32{i#83644}(235):Bu32}} => `VBINOP`_instr{shape#3905}(`%X%`_shape{lanetype#19120, dim#19120, i#83651}(`F32`_lanetype, `%`_dim{i#83658}(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_) + prod{shape#3907 : shape, lanetype#19162 : lanetype, dim#19162 : dim, i#83748 : nat, i#83755 : nat, i#83741 : nat} {{0xFD} {`%`_u32{i#83741}(269):Bu32}} => `VBINOP`_instr{shape#3907}(`%X%`_shape{lanetype#19162, dim#19162, i#83748}(`F32`_lanetype, `%`_dim{i#83755}(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_) + prod{shape#3909 : shape, lanetype#19204 : lanetype, dim#19204 : dim, i#83845 : nat, i#83852 : nat, i#83838 : nat} {{0xFD} {`%`_u32{i#83838}(270):Bu32}} => `VBINOP`_instr{shape#3909}(`%X%`_shape{lanetype#19204, dim#19204, i#83845}(`F32`_lanetype, `%`_dim{i#83852}(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_) + prod{shape#3911 : shape, lanetype#19246 : lanetype, dim#19246 : dim, i#83942 : nat, i#83949 : nat, i#83935 : nat} {{0xFD} {`%`_u32{i#83935}(261):Bu32}} => `VTERNOP`_instr{shape#3911}(`%X%`_shape{lanetype#19246, dim#19246, i#83942}(`F32`_lanetype, `%`_dim{i#83949}(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_) + prod{shape#3913 : shape, lanetype#19288 : lanetype, dim#19288 : dim, i#84039 : nat, i#84046 : nat, i#84032 : nat} {{0xFD} {`%`_u32{i#84032}(262):Bu32}} => `VTERNOP`_instr{shape#3913}(`%X%`_shape{lanetype#19288, dim#19288, i#84039}(`F32`_lanetype, `%`_dim{i#84046}(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_) + prod{shape#3915 : shape, lanetype#19330 : lanetype, dim#19330 : dim, i#84136 : nat, i#84143 : nat, i#84129 : nat} {{0xFD} {`%`_u32{i#84129}(116):Bu32}} => `VUNOP`_instr{shape#3915}(`%X%`_shape{lanetype#19330, dim#19330, i#84136}(`F64`_lanetype, `%`_dim{i#84143}(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_) + prod{shape#3917 : shape, lanetype#19372 : lanetype, dim#19372 : dim, i#84233 : nat, i#84240 : nat, i#84226 : nat} {{0xFD} {`%`_u32{i#84226}(117):Bu32}} => `VUNOP`_instr{shape#3917}(`%X%`_shape{lanetype#19372, dim#19372, i#84233}(`F64`_lanetype, `%`_dim{i#84240}(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_) + prod{shape#3919 : shape, lanetype#19414 : lanetype, dim#19414 : dim, i#84330 : nat, i#84337 : nat, i#84323 : nat} {{0xFD} {`%`_u32{i#84323}(122):Bu32}} => `VUNOP`_instr{shape#3919}(`%X%`_shape{lanetype#19414, dim#19414, i#84330}(`F64`_lanetype, `%`_dim{i#84337}(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_) + prod{shape#3921 : shape, lanetype#19456 : lanetype, dim#19456 : dim, i#84427 : nat, i#84434 : nat, i#84420 : nat} {{0xFD} {`%`_u32{i#84420}(148):Bu32}} => `VUNOP`_instr{shape#3921}(`%X%`_shape{lanetype#19456, dim#19456, i#84427}(`F64`_lanetype, `%`_dim{i#84434}(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_) + prod{shape#3923 : shape, lanetype#19498 : lanetype, dim#19498 : dim, i#84524 : nat, i#84531 : nat, i#84517 : nat} {{0xFD} {`%`_u32{i#84517}(236):Bu32}} => `VUNOP`_instr{shape#3923}(`%X%`_shape{lanetype#19498, dim#19498, i#84524}(`F64`_lanetype, `%`_dim{i#84531}(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_) + prod{shape#3925 : shape, lanetype#19540 : lanetype, dim#19540 : dim, i#84621 : nat, i#84628 : nat, i#84614 : nat} {{0xFD} {`%`_u32{i#84614}(237):Bu32}} => `VUNOP`_instr{shape#3925}(`%X%`_shape{lanetype#19540, dim#19540, i#84621}(`F64`_lanetype, `%`_dim{i#84628}(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_) + prod{shape#3927 : shape, lanetype#19582 : lanetype, dim#19582 : dim, i#84718 : nat, i#84725 : nat, i#84711 : nat} {{0xFD} {`%`_u32{i#84711}(239):Bu32}} => `VUNOP`_instr{shape#3927}(`%X%`_shape{lanetype#19582, dim#19582, i#84718}(`F64`_lanetype, `%`_dim{i#84725}(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_) + prod{shape#3929 : shape, lanetype#19624 : lanetype, dim#19624 : dim, i#84815 : nat, i#84822 : nat, i#84808 : nat} {{0xFD} {`%`_u32{i#84808}(240):Bu32}} => `VBINOP`_instr{shape#3929}(`%X%`_shape{lanetype#19624, dim#19624, i#84815}(`F64`_lanetype, `%`_dim{i#84822}(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_) + prod{shape#3931 : shape, lanetype#19666 : lanetype, dim#19666 : dim, i#84912 : nat, i#84919 : nat, i#84905 : nat} {{0xFD} {`%`_u32{i#84905}(241):Bu32}} => `VBINOP`_instr{shape#3931}(`%X%`_shape{lanetype#19666, dim#19666, i#84912}(`F64`_lanetype, `%`_dim{i#84919}(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_) + prod{shape#3933 : shape, lanetype#19708 : lanetype, dim#19708 : dim, i#85009 : nat, i#85016 : nat, i#85002 : nat} {{0xFD} {`%`_u32{i#85002}(242):Bu32}} => `VBINOP`_instr{shape#3933}(`%X%`_shape{lanetype#19708, dim#19708, i#85009}(`F64`_lanetype, `%`_dim{i#85016}(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_) + prod{shape#3935 : shape, lanetype#19750 : lanetype, dim#19750 : dim, i#85106 : nat, i#85113 : nat, i#85099 : nat} {{0xFD} {`%`_u32{i#85099}(243):Bu32}} => `VBINOP`_instr{shape#3935}(`%X%`_shape{lanetype#19750, dim#19750, i#85106}(`F64`_lanetype, `%`_dim{i#85113}(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_) + prod{shape#3937 : shape, lanetype#19792 : lanetype, dim#19792 : dim, i#85203 : nat, i#85210 : nat, i#85196 : nat} {{0xFD} {`%`_u32{i#85196}(244):Bu32}} => `VBINOP`_instr{shape#3937}(`%X%`_shape{lanetype#19792, dim#19792, i#85203}(`F64`_lanetype, `%`_dim{i#85210}(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_) + prod{shape#3939 : shape, lanetype#19834 : lanetype, dim#19834 : dim, i#85300 : nat, i#85307 : nat, i#85293 : nat} {{0xFD} {`%`_u32{i#85293}(245):Bu32}} => `VBINOP`_instr{shape#3939}(`%X%`_shape{lanetype#19834, dim#19834, i#85300}(`F64`_lanetype, `%`_dim{i#85307}(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_) + prod{shape#3941 : shape, lanetype#19876 : lanetype, dim#19876 : dim, i#85397 : nat, i#85404 : nat, i#85390 : nat} {{0xFD} {`%`_u32{i#85390}(246):Bu32}} => `VBINOP`_instr{shape#3941}(`%X%`_shape{lanetype#19876, dim#19876, i#85397}(`F64`_lanetype, `%`_dim{i#85404}(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_) + prod{shape#3943 : shape, lanetype#19918 : lanetype, dim#19918 : dim, i#85494 : nat, i#85501 : nat, i#85487 : nat} {{0xFD} {`%`_u32{i#85487}(247):Bu32}} => `VBINOP`_instr{shape#3943}(`%X%`_shape{lanetype#19918, dim#19918, i#85494}(`F64`_lanetype, `%`_dim{i#85501}(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_) + prod{shape#3945 : shape, lanetype#19960 : lanetype, dim#19960 : dim, i#85591 : nat, i#85598 : nat, i#85584 : nat} {{0xFD} {`%`_u32{i#85584}(271):Bu32}} => `VBINOP`_instr{shape#3945}(`%X%`_shape{lanetype#19960, dim#19960, i#85591}(`F64`_lanetype, `%`_dim{i#85598}(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_) + prod{shape#3947 : shape, lanetype#20002 : lanetype, dim#20002 : dim, i#85688 : nat, i#85695 : nat, i#85681 : nat} {{0xFD} {`%`_u32{i#85681}(272):Bu32}} => `VBINOP`_instr{shape#3947}(`%X%`_shape{lanetype#20002, dim#20002, i#85688}(`F64`_lanetype, `%`_dim{i#85695}(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_) + prod{shape#3949 : shape, lanetype#20044 : lanetype, dim#20044 : dim, i#85785 : nat, i#85792 : nat, i#85778 : nat} {{0xFD} {`%`_u32{i#85778}(263):Bu32}} => `VTERNOP`_instr{shape#3949}(`%X%`_shape{lanetype#20044, dim#20044, i#85785}(`F64`_lanetype, `%`_dim{i#85792}(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_) + prod{shape#3951 : shape, lanetype#20086 : lanetype, dim#20086 : dim, i#85882 : nat, i#85889 : nat, i#85875 : nat} {{0xFD} {`%`_u32{i#85875}(264):Bu32}} => `VTERNOP`_instr{shape#3951}(`%X%`_shape{lanetype#20086, dim#20086, i#85882}(`F64`_lanetype, `%`_dim{i#85889}(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_) + prod{shape#3953 : shape, lanetype#20128 : lanetype, dim#20128 : dim, i#85979 : nat, i#85986 : nat, i#85972 : nat} {{0xFD} {`%`_u32{i#85972}(265):Bu32}} => `VTERNOP`_instr{shape#3953}(`%X%`_shape{lanetype#20128, dim#20128, i#85979}(`I8`_lanetype, `%`_dim{i#85986}(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_) + prod{shape#3955 : shape, lanetype#20155 : lanetype, dim#20155 : dim, i#86061 : nat, i#86068 : nat, i#86054 : nat} {{0xFD} {`%`_u32{i#86054}(266):Bu32}} => `VTERNOP`_instr{shape#3955}(`%X%`_shape{lanetype#20155, dim#20155, i#86061}(`I16`_lanetype, `%`_dim{i#86068}(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_) + prod{shape#3957 : shape, lanetype#20182 : lanetype, dim#20182 : dim, i#86143 : nat, i#86150 : nat, i#86136 : nat} {{0xFD} {`%`_u32{i#86136}(267):Bu32}} => `VTERNOP`_instr{shape#3957}(`%X%`_shape{lanetype#20182, dim#20182, i#86143}(`I32`_lanetype, `%`_dim{i#86150}(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_) + prod{shape#3959 : shape, lanetype#20209 : lanetype, dim#20209 : dim, i#86225 : nat, i#86232 : nat, i#86218 : nat} {{0xFD} {`%`_u32{i#86218}(268):Bu32}} => `VTERNOP`_instr{shape#3959}(`%X%`_shape{lanetype#20209, dim#20209, i#86225}(`I64`_lanetype, `%`_dim{i#86232}(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)) + prod{shape_1#31 : shape, shape_2#31 : shape, lanetype#20236 : lanetype, dim#20236 : dim, i#86307 : nat, i#86314 : nat, lanetype#20248 : lanetype, dim#20248 : dim, i#86319 : nat, i#86326 : nat, zero#159 : zero, i#86300 : nat} {{0xFD} {`%`_u32{i#86300}(94):Bu32}} => `VCVTOP`_instr{shape_1#31, shape_2#31}(`%X%`_shape{lanetype#20236, dim#20236, i#86307}(`F32`_lanetype, `%`_dim{i#86314}(4)), `%X%`_shape{lanetype#20248, dim#20248, i#86319}(`F64`_lanetype, `%`_dim{i#86326}(2)), `DEMOTE`_vcvtop__{zero#159}(`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__) + prod{shape_1#33 : shape, shape_2#33 : shape, lanetype#20501 : lanetype, dim#20501 : dim, i#86777 : nat, i#86784 : nat, lanetype#20513 : lanetype, dim#20513 : dim, i#86789 : nat, i#86796 : nat, i#86770 : nat} {{0xFD} {`%`_u32{i#86770}(95):Bu32}} => `VCVTOP`_instr{shape_1#33, shape_2#33}(`%X%`_shape{lanetype#20501, dim#20501, i#86777}(`F64`_lanetype, `%`_dim{i#86784}(2)), `%X%`_shape{lanetype#20513, dim#20513, i#86789}(`F32`_lanetype, `%`_dim{i#86796}(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, ?())) + prod{shape_1#35 : shape, shape_2#35 : shape, lanetype#20766 : lanetype, dim#20766 : dim, i#87247 : nat, i#87254 : nat, lanetype#20778 : lanetype, dim#20778 : dim, i#87259 : nat, i#87266 : nat, sx#15127 : sx, `zero?#135` : zero?, i#87240 : nat} {{0xFD} {`%`_u32{i#87240}(248):Bu32}} => `VCVTOP`_instr{shape_1#35, shape_2#35}(`%X%`_shape{lanetype#20766, dim#20766, i#87247}(`I32`_lanetype, `%`_dim{i#87254}(4)), `%X%`_shape{lanetype#20778, dim#20778, i#87259}(`F32`_lanetype, `%`_dim{i#87266}(4)), `TRUNC_SAT`_vcvtop__{sx#15127, `zero?#135`}(`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, ?())) + prod{shape_1#37 : shape, shape_2#37 : shape, lanetype#20941 : lanetype, dim#20941 : dim, i#87567 : nat, i#87574 : nat, lanetype#20953 : lanetype, dim#20953 : dim, i#87579 : nat, i#87586 : nat, sx#15191 : sx, `zero?#199` : zero?, i#87560 : nat} {{0xFD} {`%`_u32{i#87560}(249):Bu32}} => `VCVTOP`_instr{shape_1#37, shape_2#37}(`%X%`_shape{lanetype#20941, dim#20941, i#87567}(`I32`_lanetype, `%`_dim{i#87574}(4)), `%X%`_shape{lanetype#20953, dim#20953, i#87579}(`F32`_lanetype, `%`_dim{i#87586}(4)), `TRUNC_SAT`_vcvtop__{sx#15191, `zero?#199`}(`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)) + prod{shape_1#39 : shape, shape_2#39 : shape, lanetype#21116 : lanetype, dim#21116 : dim, i#87887 : nat, i#87894 : nat, lanetype#21128 : lanetype, dim#21128 : dim, i#87899 : nat, i#87906 : nat, `half?#39` : half?, sx#15225 : sx, i#87880 : nat} {{0xFD} {`%`_u32{i#87880}(250):Bu32}} => `VCVTOP`_instr{shape_1#39, shape_2#39}(`%X%`_shape{lanetype#21116, dim#21116, i#87887}(`F32`_lanetype, `%`_dim{i#87894}(4)), `%X%`_shape{lanetype#21128, dim#21128, i#87899}(`I32`_lanetype, `%`_dim{i#87906}(4)), `CONVERT`_vcvtop__{`half?#39`, sx#15225}(?(), `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)) + prod{shape_1#41 : shape, shape_2#41 : shape, lanetype#21321 : lanetype, dim#21321 : dim, i#88297 : nat, i#88304 : nat, lanetype#21333 : lanetype, dim#21333 : dim, i#88309 : nat, i#88316 : nat, `half?#73` : half?, sx#15259 : sx, i#88290 : nat} {{0xFD} {`%`_u32{i#88290}(251):Bu32}} => `VCVTOP`_instr{shape_1#41, shape_2#41}(`%X%`_shape{lanetype#21321, dim#21321, i#88297}(`F32`_lanetype, `%`_dim{i#88304}(4)), `%X%`_shape{lanetype#21333, dim#21333, i#88309}(`I32`_lanetype, `%`_dim{i#88316}(4)), `CONVERT`_vcvtop__{`half?#73`, sx#15259}(?(), `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))) + prod{shape_1#43 : shape, shape_2#43 : shape, lanetype#21526 : lanetype, dim#21526 : dim, i#88707 : nat, i#88714 : nat, lanetype#21538 : lanetype, dim#21538 : dim, i#88719 : nat, i#88726 : nat, sx#15323 : sx, `zero?#263` : zero?, i#88700 : nat} {{0xFD} {`%`_u32{i#88700}(252):Bu32}} => `VCVTOP`_instr{shape_1#43, shape_2#43}(`%X%`_shape{lanetype#21526, dim#21526, i#88707}(`I32`_lanetype, `%`_dim{i#88714}(4)), `%X%`_shape{lanetype#21538, dim#21538, i#88719}(`F64`_lanetype, `%`_dim{i#88726}(2)), `TRUNC_SAT`_vcvtop__{sx#15323, `zero?#263`}(`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))) + prod{shape_1#45 : shape, shape_2#45 : shape, lanetype#21701 : lanetype, dim#21701 : dim, i#89027 : nat, i#89034 : nat, lanetype#21713 : lanetype, dim#21713 : dim, i#89039 : nat, i#89046 : nat, sx#15387 : sx, `zero?#327` : zero?, i#89020 : nat} {{0xFD} {`%`_u32{i#89020}(253):Bu32}} => `VCVTOP`_instr{shape_1#45, shape_2#45}(`%X%`_shape{lanetype#21701, dim#21701, i#89027}(`I32`_lanetype, `%`_dim{i#89034}(4)), `%X%`_shape{lanetype#21713, dim#21713, i#89039}(`F64`_lanetype, `%`_dim{i#89046}(2)), `TRUNC_SAT`_vcvtop__{sx#15387, `zero?#327`}(`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)) + prod{shape_1#47 : shape, shape_2#47 : shape, lanetype#21876 : lanetype, dim#21876 : dim, i#89347 : nat, i#89354 : nat, lanetype#21888 : lanetype, dim#21888 : dim, i#89359 : nat, i#89366 : nat, `half?#107` : half?, sx#15421 : sx, i#89340 : nat} {{0xFD} {`%`_u32{i#89340}(254):Bu32}} => `VCVTOP`_instr{shape_1#47, shape_2#47}(`%X%`_shape{lanetype#21876, dim#21876, i#89347}(`F64`_lanetype, `%`_dim{i#89354}(2)), `%X%`_shape{lanetype#21888, dim#21888, i#89359}(`I32`_lanetype, `%`_dim{i#89366}(4)), `CONVERT`_vcvtop__{`half?#107`, sx#15421}(?(`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)) + prod{shape_1#49 : shape, shape_2#49 : shape, lanetype#22081 : lanetype, dim#22081 : dim, i#89757 : nat, i#89764 : nat, lanetype#22093 : lanetype, dim#22093 : dim, i#89769 : nat, i#89776 : nat, `half?#141` : half?, sx#15455 : sx, i#89750 : nat} {{0xFD} {`%`_u32{i#89750}(255):Bu32}} => `VCVTOP`_instr{shape_1#49, shape_2#49}(`%X%`_shape{lanetype#22081, dim#22081, i#89757}(`F64`_lanetype, `%`_dim{i#89764}(2)), `%X%`_shape{lanetype#22093, dim#22093, i#89769}(`I32`_lanetype, `%`_dim{i#89776}(4)), `CONVERT`_vcvtop__{`half?#141`, sx#15455}(?(`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, ?())) + prod{shape_1#51 : shape, shape_2#51 : shape, lanetype#22286 : lanetype, dim#22286 : dim, i#90167 : nat, i#90174 : nat, lanetype#22298 : lanetype, dim#22298 : dim, i#90179 : nat, i#90186 : nat, sx#15519 : sx, `zero?#391` : zero?, i#90160 : nat} {{0xFD} {`%`_u32{i#90160}(257):Bu32}} => `VCVTOP`_instr{shape_1#51, shape_2#51}(`%X%`_shape{lanetype#22286, dim#22286, i#90167}(`I32`_lanetype, `%`_dim{i#90174}(4)), `%X%`_shape{lanetype#22298, dim#22298, i#90179}(`F32`_lanetype, `%`_dim{i#90186}(4)), `RELAXED_TRUNC`_vcvtop__{sx#15519, `zero?#391`}(`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, ?())) + prod{shape_1#53 : shape, shape_2#53 : shape, lanetype#22461 : lanetype, dim#22461 : dim, i#90487 : nat, i#90494 : nat, lanetype#22473 : lanetype, dim#22473 : dim, i#90499 : nat, i#90506 : nat, sx#15583 : sx, `zero?#455` : zero?, i#90480 : nat} {{0xFD} {`%`_u32{i#90480}(258):Bu32}} => `VCVTOP`_instr{shape_1#53, shape_2#53}(`%X%`_shape{lanetype#22461, dim#22461, i#90487}(`I32`_lanetype, `%`_dim{i#90494}(4)), `%X%`_shape{lanetype#22473, dim#22473, i#90499}(`F32`_lanetype, `%`_dim{i#90506}(4)), `RELAXED_TRUNC`_vcvtop__{sx#15583, `zero?#455`}(`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))) + prod{shape_1#55 : shape, shape_2#55 : shape, lanetype#22636 : lanetype, dim#22636 : dim, i#90807 : nat, i#90814 : nat, lanetype#22648 : lanetype, dim#22648 : dim, i#90819 : nat, i#90826 : nat, sx#15647 : sx, `zero?#519` : zero?, i#90800 : nat} {{0xFD} {`%`_u32{i#90800}(259):Bu32}} => `VCVTOP`_instr{shape_1#55, shape_2#55}(`%X%`_shape{lanetype#22636, dim#22636, i#90807}(`I32`_lanetype, `%`_dim{i#90814}(4)), `%X%`_shape{lanetype#22648, dim#22648, i#90819}(`F64`_lanetype, `%`_dim{i#90826}(2)), `RELAXED_TRUNC`_vcvtop__{sx#15647, `zero?#519`}(`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))) + prod{shape_1#57 : shape, shape_2#57 : shape, lanetype#22811 : lanetype, dim#22811 : dim, i#91127 : nat, i#91134 : nat, lanetype#22823 : lanetype, dim#22823 : dim, i#91139 : nat, i#91146 : nat, sx#15711 : sx, `zero?#583` : zero?, i#91120 : nat} {{0xFD} {`%`_u32{i#91120}(260):Bu32}} => `VCVTOP`_instr{shape_1#57, shape_2#57}(`%X%`_shape{lanetype#22811, dim#22811, i#91127}(`I32`_lanetype, `%`_dim{i#91134}(4)), `%X%`_shape{lanetype#22823, dim#22823, i#91139}(`F64`_lanetype, `%`_dim{i#91146}(2)), `RELAXED_TRUNC`_vcvtop__{sx#15711, `zero?#583`}(`U`_sx, ?(`ZERO`_zero))) } ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec @@ -8682,7 +120241,7 @@ grammar Bexpr : expr ;; ../../../../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*`} + prod{`en*` : en*, i#91425 : nat, i#91448 : nat, len : nat} {{`%`_byte{i#91425}(N):Bbyte} {`%`_u32{i#91448}(len):Bu32} {en*{en <- `en*`}:BX}} => en*{en <- `en*`} -- if (len = 0) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec prod eps => [] @@ -8690,17 +120249,17 @@ grammar Bsection_(N : N, syntax en, grammar BX : en*) : en* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bcustom : ()* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{Bname} {Bbyte*{}}} => [()] + 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) => () + prod Bsection_(0, syntax (), grammar Bcustom) => ((), ()).1 ;; ../../../../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) + prod{rectype#1727 : rectype, qt : rectype} qt:Brectype => `TYPE`_type{rectype#1727}(qt) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Btypesec : type* @@ -8710,7 +120269,7 @@ grammar Btypesec : type* ;; ../../../../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) + prod{name#6185 : name, externtype#247 : externtype, nm_1 : name, nm_2 : name, xt : externtype} {{nm_1:Bname} {nm_2:Bname} {xt:Bexterntype}} => `IMPORT`_import{name#6185, externtype#247}(nm_1, nm_2, xt) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bimportsec : import* @@ -8725,10 +120284,10 @@ grammar Bfuncsec : typeidx* ;; ../../../../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))) + prod{tabletype#1130 : tabletype, expr#4835 : expr, tt : tabletype, heaptype#1729 : heaptype, ht : heaptype, addrtype#1433 : addrtype, limits#1433 : limits, reftype#3999 : reftype, at : addrtype, lim : limits, `null?#1675` : null?, heaptype#1741 : heaptype} tt:Btabletype => `TABLE`_table{tabletype#1130, expr#4835}(tt, [`REF.NULL`_instr{heaptype#1729}(ht)]) + -- if (tt = `%%%`_tabletype{addrtype#1433, limits#1433, reftype#3999}(at, lim, `REF`_reftype{`null?#1675`, heaptype#1741}(`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) + prod{tabletype#1142 : tabletype, expr#4847 : expr, tt : tabletype, e : expr} {{0x40} {0x00} {tt:Btabletype} {e:Bexpr}} => `TABLE`_table{tabletype#1142, expr#4847}(tt, e) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Btablesec : table* @@ -8738,7 +120297,7 @@ grammar Btablesec : table* ;; ../../../../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) + prod{memtype#734 : memtype, mt : memtype} mt:Bmemtype => `MEMORY`_mem{memtype#734}(mt) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bmemsec : mem* @@ -8748,7 +120307,7 @@ grammar Bmemsec : 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) + prod{globaltype#2285 : globaltype, expr#4883 : expr, gt : globaltype, e : expr} {{gt:Bglobaltype} {e:Bexpr}} => `GLOBAL`_global{globaltype#2285, expr#4883}(gt, e) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bglobalsec : global* @@ -8758,7 +120317,7 @@ grammar Bglobalsec : global* ;; ../../../../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) + prod{name#6238 : name, externidx#5797 : externidx, nm : name, xx : externidx} {{nm:Bname} {xx:Bexternidx}} => `EXPORT`_export{name#6238, externidx#5797}(nm, xx) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bexportsec : export* @@ -8768,7 +120327,7 @@ grammar Bexportsec : export* ;; ../../../../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)] + prod{funcidx#3179 : funcidx, x : idx} x:Bfuncidx => [`START`_start{funcidx#3179}(x)] ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec syntax startopt = start* @@ -8781,26 +120340,26 @@ grammar Bstartsec : start? ;; ../../../../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) + prod{`null?#1687` : null?, heaptype#1753 : heaptype} 0x00 => `REF`_reftype{`null?#1687`, heaptype#1753}(?(`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)) + prod{reftype#4023 : reftype, `expr*#3307` : expr*, elemmode#3307 : elemmode, `null?#1699` : null?, heaptype#1765 : heaptype, `funcidx#3213*` : funcidx*, `y*` : idx*, tableidx#144 : tableidx, expr#4909 : expr, i#91655 : nat, e_o : expr, i#91592 : nat} {{`%`_u32{i#91592}(0):Bu32} {e_o:Bexpr} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => `ELEM`_elem{reftype#4023, `expr*#3307`, elemmode#3307}(`REF`_reftype{`null?#1699`, heaptype#1765}(?(), `FUNC`_heaptype), [`REF.FUNC`_instr{funcidx#3213}(y)*{funcidx#3213 <- `funcidx#3213*`, y <- `y*`}], `ACTIVE`_elemmode{tableidx#144, expr#4909}(`%`_tableidx{i#91655}(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) + prod{reftype#4035 : reftype, `expr*#3319` : expr*, elemmode#3319 : elemmode, rt : reftype, `funcidx#3215*` : funcidx*, `y*` : idx*, i#91678 : nat} {{`%`_u32{i#91678}(1):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => `ELEM`_elem{reftype#4035, `expr*#3319`, elemmode#3319}(rt, [`REF.FUNC`_instr{funcidx#3215}(y)*{funcidx#3215 <- `funcidx#3215*`, 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)) + prod{reftype#4047 : reftype, `expr*#3331` : expr*, elemmode#3331 : elemmode, rt : reftype, `funcidx#3217*` : funcidx*, `y*` : idx*, tableidx#146 : tableidx, expr#4911 : expr, x : idx, e : expr, i#91742 : nat} {{`%`_u32{i#91742}(2):Bu32} {x:Btableidx} {e:Bexpr} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => `ELEM`_elem{reftype#4047, `expr*#3331`, elemmode#3331}(rt, [`REF.FUNC`_instr{funcidx#3217}(y)*{funcidx#3217 <- `funcidx#3217*`, y <- `y*`}], `ACTIVE`_elemmode{tableidx#146, expr#4911}(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) + prod{reftype#4059 : reftype, `expr*#3343` : expr*, elemmode#3343 : elemmode, rt : reftype, `funcidx#3219*` : funcidx*, `y*` : idx*, i#91837 : nat} {{`%`_u32{i#91837}(3):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => `ELEM`_elem{reftype#4059, `expr*#3343`, elemmode#3343}(rt, [`REF.FUNC`_instr{funcidx#3219}(y)*{funcidx#3219 <- `funcidx#3219*`, 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)) + prod{reftype#4071 : reftype, `expr*#3355` : expr*, elemmode#3355 : elemmode, `null?#1747` : null?, heaptype#1813 : heaptype, `e*` : expr*, tableidx#148 : tableidx, expr#4913 : expr, i#91925 : nat, e_O : expr, i#91901 : nat} {{`%`_u32{i#91901}(4):Bu32} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => `ELEM`_elem{reftype#4071, `expr*#3355`, elemmode#3355}(`REF`_reftype{`null?#1747`, heaptype#1813}(?(`NULL`_null), `FUNC`_heaptype), e*{e <- `e*`}, `ACTIVE`_elemmode{tableidx#148, expr#4913}(`%`_tableidx{i#91925}(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) + prod{reftype#4083 : reftype, `expr*#3367` : expr*, elemmode#3367 : elemmode, rt : reftype, `e*` : expr*, i#91948 : nat} {{`%`_u32{i#91948}(5):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => `ELEM`_elem{reftype#4083, `expr*#3367`, elemmode#3367}(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)) + prod{reftype#4095 : reftype, `expr*#3379` : expr*, elemmode#3379 : elemmode, `null?#1771` : null?, heaptype#1837 : heaptype, `e*` : expr*, tableidx#150 : tableidx, expr#4915 : expr, x : idx, e_O : expr, i#91973 : nat} {{`%`_u32{i#91973}(6):Bu32} {x:Btableidx} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => `ELEM`_elem{reftype#4095, `expr*#3379`, elemmode#3379}(`REF`_reftype{`null?#1771`, heaptype#1837}(?(`NULL`_null), `FUNC`_heaptype), e*{e <- `e*`}, `ACTIVE`_elemmode{tableidx#150, expr#4915}(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) + prod{reftype#4107 : reftype, `expr*#3391` : expr*, elemmode#3391 : elemmode, rt : reftype, `e*` : expr*, i#92029 : nat} {{`%`_u32{i#92029}(7):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => `ELEM`_elem{reftype#4107, `expr*#3391`, elemmode#3391}(rt, e*{e <- `e*`}, `DECLARE`_elemmode) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Belemsec : elem* @@ -8813,7 +120372,7 @@ 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{} + prod{t : valtype, n : n, `valtype#1033*` : valtype*, i#92056 : nat} {{`%`_u32{i#92056}(n):Bu32} {t:Bvaltype}} => `LOCAL`_local{valtype#1033}(t)^n{valtype#1033 <- `valtype#1033*`} ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bfunc : code @@ -8824,7 +120383,7 @@ grammar Bfunc : code ;; ../../../../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 + prod{code : code, i#92081 : nat, len : nat} {{`%`_u32{i#92081}(len):Bu32} {code:Bfunc}} => code -- if (len = 0) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec @@ -8835,11 +120394,11 @@ grammar Bcodesec : 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)) + prod{`byte*#2217` : byte*, datamode#2181 : datamode, `b*` : byte*, memidx#272 : memidx, expr#4917 : expr, i#92154 : nat, e : expr, i#92106 : nat} {{`%`_u32{i#92106}(0):Bu32} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => `DATA`_data{`byte*#2217`, datamode#2181}(b*{b <- `b*`}, `ACTIVE`_datamode{memidx#272, expr#4917}(`%`_memidx{i#92154}(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) + prod{`byte*#2229` : byte*, datamode#2193 : datamode, `b*` : byte*, i#92177 : nat} {{`%`_u32{i#92177}(1):Bu32} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => `DATA`_data{`byte*#2229`, datamode#2193}(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)) + prod{`byte*#2241` : byte*, datamode#2205 : datamode, `b*` : byte*, memidx#274 : memidx, expr#4919 : expr, x : idx, e : expr, i#92226 : nat} {{`%`_u32{i#92226}(2):Bu32} {x:Bmemidx} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => `DATA`_data{`byte*#2241`, datamode#2205}(b*{b <- `b*`}, `ACTIVE`_datamode{memidx#274, expr#4919}(x, e)) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bdatasec : data* @@ -8849,7 +120408,7 @@ grammar Bdatasec : 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)] + prod{i#92330 : nat, n : n, i#92308 : nat} `%`_u32{i#92308}(n):Bu32 => [`%`_u32{i#92330}(n)] ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec syntax nopt = u32* @@ -8862,7 +120421,7 @@ grammar Bdatacntsec : u32? ;; ../../../../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) + prod{tagtype#336 : tagtype, jt : tagtype} jt:Btagtype => `TAG`_tag{tagtype#336}(jt) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Btagsec : tag* @@ -8872,27 +120431,27 @@ grammar Btagsec : 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}} => () + prod {{0x00} {0x61} {0x73} {0x6D}} => ((), ()).1 ;; ../../../../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}} => () + prod {{0x01} {0x00} {0x00} {0x00}} => ((), ()).1 ;; ../../../../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*`}) + prod{`type*#143` : type*, `import*#143` : import*, `tag*#143` : tag*, `global*#167` : global*, `mem*#167` : mem*, `table*#167` : table*, `func*#143` : func*, `data*#143` : data*, `elem*#167` : elem*, `start?#143` : start?, `export*#143` : export*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `typeidx*` : typeidx*, `i#92509?` : nat?, `n?` : n?, `expr*` : expr*, `local**` : local**, `expr#5253*` : expr*, `local*#1601*` : local**, `typeidx#2117*` : typeidx*} {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{i#92509}(n)?{i#92509 <- `i#92509?`, n <- `n?`}:Bdatacntsec} {Bcustomsec*{}} {(local*{local <- `local*`}, expr)*{expr <- `expr*`, `local*` <- `local**`}:Bcodesec} {Bcustomsec*{}} {data*{data <- `data*`}:Bdatasec} {Bcustomsec*{}}} => `MODULE`_module{`type*#143`, `import*#143`, `tag*#143`, `global*#167`, `mem*#167`, `table*#167`, `func*#143`, `data*#143`, `elem*#167`, `start?#143`, `export*#143`}(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*`} + -- (if (func = `FUNC`_func{typeidx#2117, `local*#1601`, expr#5253}(typeidx, local*{local <- `local*`}, expr)))*{expr <- `expr*`, expr#5253 <- `expr#5253*`, func <- `func*`, `local*` <- `local**`, `local*#1601` <- `local*#1601*`, typeidx <- `typeidx*`, typeidx#2117 <- `typeidx#2117*`} ;; ../../../../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(``) + prod{i#92557 : nat, `` : nat} ``:(0x00 | ... | 0xD7FF) => `%`_char{i#92557}(``) ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:(0xE000 | ... | 0x10FFFF) => `%`_char(``) + prod{i#92565 : nat, `` : nat} ``:(0xE000 | ... | 0x10FFFF) => `%`_char{i#92565}(``) ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec grammar Tsource : () @@ -8917,57 +120476,57 @@ grammar TfNplain : () ;; ../../../../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(``) + prod{i#93304 : nat, `` : nat} ``:(0x30 | ... | 0x39) => `%`_char{i#93304}(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x41 | ... | 0x5A) => `%`_char(``) + prod{i#93312 : nat, `` : nat} ``:(0x41 | ... | 0x5A) => `%`_char{i#93312}(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x61 | ... | 0x7A) => `%`_char(``) + prod{i#93320 : nat, `` : nat} ``:(0x61 | ... | 0x7A) => `%`_char{i#93320}(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x21 => `%`_char(``) + prod{i#93328 : nat, `` : nat} ``:0x21 => `%`_char{i#93328}(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x23 => `%`_char(``) + prod{i#93336 : nat, `` : nat} ``:0x23 => `%`_char{i#93336}(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x24 => `%`_char(``) + prod{i#93344 : nat, `` : nat} ``:0x24 => `%`_char{i#93344}(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x25 => `%`_char(``) + prod{i#93352 : nat, `` : nat} ``:0x25 => `%`_char{i#93352}(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x26 => `%`_char(``) + prod{i#93360 : nat, `` : nat} ``:0x26 => `%`_char{i#93360}(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x27 => `%`_char(``) + prod{i#93368 : nat, `` : nat} ``:0x27 => `%`_char{i#93368}(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2A => `%`_char(``) + prod{i#93376 : nat, `` : nat} ``:0x2A => `%`_char{i#93376}(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2B => `%`_char(``) + prod{i#93384 : nat, `` : nat} ``:0x2B => `%`_char{i#93384}(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2D => `%`_char(``) + prod{i#93392 : nat, `` : nat} ``:0x2D => `%`_char{i#93392}(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2E => `%`_char(``) + prod{i#93400 : nat, `` : nat} ``:0x2E => `%`_char{i#93400}(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2F => `%`_char(``) + prod{i#93408 : nat, `` : nat} ``:0x2F => `%`_char{i#93408}(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3A => `%`_char(``) + prod{i#93416 : nat, `` : nat} ``:0x3A => `%`_char{i#93416}(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3C => `%`_char(``) + prod{i#93424 : nat, `` : nat} ``:0x3C => `%`_char{i#93424}(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3D => `%`_char(``) + prod{i#93432 : nat, `` : nat} ``:0x3D => `%`_char{i#93432}(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3E => `%`_char(``) + prod{i#93440 : nat, `` : nat} ``:0x3E => `%`_char{i#93440}(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3F => `%`_char(``) + prod{i#93448 : nat, `` : nat} ``:0x3F => `%`_char{i#93448}(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x40 => `%`_char(``) + prod{i#93456 : nat, `` : nat} ``:0x40 => `%`_char{i#93456}(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5C => `%`_char(``) + prod{i#93464 : nat, `` : nat} ``:0x5C => `%`_char{i#93464}(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5E => `%`_char(``) + prod{i#93472 : nat, `` : nat} ``:0x5E => `%`_char{i#93472}(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5F => `%`_char(``) + prod{i#93480 : nat, `` : nat} ``:0x5F => `%`_char{i#93480}(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x60 => `%`_char(``) + prod{i#93488 : nat, `` : nat} ``:0x60 => `%`_char{i#93488}(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x7C => `%`_char(``) + prod{i#93496 : nat, `` : nat} ``:0x7C => `%`_char{i#93496}(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x7E => `%`_char(``) + prod{i#93504 : nat, `` : nat} ``:0x7E => `%`_char{i#93504}(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tdigit : nat @@ -9035,22 +120594,22 @@ grammar Thexnum : nat ;; ../../../../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))) + prod{c : char, i#93014 : nat, i#93016 : nat, i#93024 : nat, i#93034 : nat} c:Tchar => c + -- if ((((c!`%`_char{i#93014}.0 >= 32) /\ (c!`%`_char{i#93016}.0 =/= 127)) /\ (c =/= `%`_char{i#93024}(34))) /\ (c =/= `%`_char{i#93034}(92))) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\t" => `%`_char(9) + prod{i#93044 : nat} "\\t" => `%`_char{i#93044}(9) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\n" => `%`_char(10) + prod{i#93052 : nat} "\\n" => `%`_char{i#93052}(10) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\r" => `%`_char(13) + prod{i#93060 : nat} "\\r" => `%`_char{i#93060}(13) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\\"" => `%`_char(34) + prod{i#93068 : nat} "\\\"" => `%`_char{i#93068}(34) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\'" => `%`_char(39) + prod{i#93076 : nat} "\\'" => `%`_char{i#93076}(39) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\\\" => `%`_char(92) + prod{i#93084 : nat} "\\\\" => `%`_char{i#93084}(92) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"\\u{"} {n:Thexnum} {"}"}} => `%`_char(n) + prod{i#93092 : nat, n : n} {{"\\u{"} {n:Thexnum} {"}"}} => `%`_char{i#93092}(n) -- if ((n < 55296) \/ ((59392 <= n) /\ (n < 1114112))) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -9058,7 +120617,7 @@ 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))] + prod{i#93132 : nat, h_1 : nat, h_2 : nat} {{"\\"} {h_1:Thexdigit} {h_2:Thexdigit}} => [`%`_byte{i#93132}(((16 * h_1) + h_2))] ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tstring : byte* @@ -9069,15 +120628,15 @@ grammar Tstring : byte* ;; ../../../../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*`}) + prod{`char*#207` : char*, `c*` : char*, `b*` : byte*} b*{b <- `b*`}:Tstring => `%`_name{`char*#207`}(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*`}) + prod{`char*#213` : char*, `c*` : char*} {{"$"} {c*{c <- `c*`}:Tidchar+{}}} => `%`_name{`char*#213`}(c*{c <- `c*`}) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`c*` : char*} {{"$"} {`%`_name(c*{c <- `c*`}):Tname}} => `%`_name(c*{c <- `c*`}) + prod{`char*#225` : char*, `c*` : char*, `char*#219` : char*} {{"$"} {`%`_name{`char*#219`}(c*{c <- `c*`}):Tname}} => `%`_name{`char*#225`}(c*{c <- `c*`}) -- if (|c*{c <- `c*`}| > 0) ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec @@ -9129,14 +120688,14 @@ grammar Tblockcomment : () ;; ../../../../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))) + prod{`` : char, c : char, i#92625 : nat, i#92635 : nat} ``:c:Tchar => (``, ()).1 + -- if ((c =/= `%`_char{i#92625}(59)) /\ (c =/= `%`_char{i#92635}(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))) + prod{`` : (), c : char, i#92657 : nat, i#92667 : nat} ``:{{";"+{}} {c:Tchar}} => (``, ()).1 + -- if ((c =/= `%`_char{i#92657}(59)) /\ (c =/= `%`_char{i#92667}(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))) + prod{`` : (), c : char, i#92689 : nat, i#92699 : nat} ``:{{"("+{}} {c:Tchar}} => (``, ()).1 + -- if ((c =/= `%`_char{i#92689}(59)) /\ (c =/= `%`_char{i#92699}(40))) ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:64.5-64.18 prod{`` : ()} ``:Tblockcomment => (``, ()).1 } @@ -9149,8 +120708,8 @@ grammar Teof : () ;; ../../../../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)) + prod{`` : char, c : char, i#92597 : nat, i#92599 : nat} ``:c:Tchar => (``, ()).1 + -- if ((c!`%`_char{i#92597}.0 =/= 10) /\ (c!`%`_char{i#92599}.0 =/= 13)) ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec grammar Tnewline : () @@ -9217,24 +120776,24 @@ grammar Tnum : nat ;; ../../../../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) + prod{i#92715 : nat, n : n} n:Tnum => `%`_uN{i#92715}(n) -- if (n < (2 ^ N)) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"0x"} {n:Thexnum}} => `%`_uN(n) + prod{i#92723 : nat, n : n} {{"0x"} {n:Thexnum}} => `%`_uN{i#92723}(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))) + prod{i#92739 : int, s : int, n : n, i#92731 : nat} {{s:Tsign} {`%`_uN{i#92731}(n):TuN(N)}} => `%`_sN{i#92739}((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) + prod{i#92755 : nat, n : n, i#92747 : nat} `%`_uN{i#92747}(n):TuN(N) => `%`_iN{i#92755}(n) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i : sN(N)} i:TsN(N) => `%`_iN($inv_signed_(N, i!`%`_sN.0)) + prod{i#92771 : nat, i : sN(N), i#92769 : int} i:TsN(N) => `%`_iN{i#92771}($inv_signed_(N, i!`%`_sN{i#92769}.0)) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec rec { @@ -9289,24 +120848,24 @@ grammar Thexfloat : rat 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) + -- 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) + -- if ($ieee_(N, q) =/= `INF`_fNmag) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "inf" => INF_fNmag + prod "inf" => `INF`_fNmag ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "nan" => NAN_fNmag($canon_(N)) + prod{m#7 : m} "nan" => `NAN`_fNmag{m#7}($canon_(N)) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"nan:0x"} {n:Thexnum}} => NAN_fNmag(n) + prod{m#9 : m, n : n} {{"nan:0x"} {n:Thexnum}} => `NAN`_fNmag{m#9}(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) + 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) + 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 @@ -9367,18 +120926,18 @@ grammar Tlist(syntax el, grammar TX : el) : el* ;; ../../../../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?* + `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 @@ -9390,164 +120949,164 @@ rec { ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.1-155.56 def $concat_idctxt(idctxt*) : idctxt ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.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:157.1-157.52 - def $concat_idctxt{I : I, I' : I}([I I']) = I +++ $concat_idctxt(I'*{}) + def $concat_idctxt{`name?*#1` : name?*, `name?*#2` : name?*, `name?*#3` : name?*, `name?*#4` : name?*, `name?*#5` : name?*, `name?*#6` : name?*, `name?*#7` : name?*, `name?*#8` : name?*, `name?*#9` : name?*, `name?*#10` : name?*, `name?**#1` : name?**, `deftype?*#1` : deftype?*}([]) = {`TYPES`{`name?*#1`} [], `TAGS`{`name?*#2`} [], `GLOBALS`{`name?*#3`} [], `MEMS`{`name?*#4`} [], `TABLES`{`name?*#5`} [], `FUNCS`{`name?*#6`} [], `DATAS`{`name?*#7`} [], `ELEMS`{`name?*#8`} [], `LOCALS`{`name?*#9`} [], `LABELS`{`name?*#10`} [], `FIELDS`{`name?**#1`} [], `TYPEDEFS`{`deftype?*#1`} []} + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:157.1-157.53 + def $concat_idctxt{I : I, `I'*` : I*}([I] ++ I'*{I' <- `I'*`}) = I +++ $concat_idctxt(I'*{I' <- `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**}: + rule _{I : I, `name?*#40` : name?*, `name?*#70` : name?*, `name?*#100` : name?*, `name?*#130` : name?*, `name?*#160` : name?*, `name?*#190` : name?*, `name?*#220` : name?*, `name?*#250` : name?*, `name?*#280` : name?*, `name?*#310` : name?*, `char*#743*` : char**, `field**` : char**, `char*#761*` : char**, `name?**#2` : name?**}: `|-%: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) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.`TYPES`_I{`name?*#40`})) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.`TAGS`_I{`name?*#70`})) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.`GLOBALS`_I{`name?*#100`})) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.`MEMS`_I{`name?*#130`})) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.`TABLES`_I{`name?*#160`})) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.`FUNCS`_I{`name?*#190`})) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.`DATAS`_I{`name?*#220`})) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.`ELEMS`_I{`name?*#250`})) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.`LOCALS`_I{`name?*#280`})) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.`LABELS`_I{`name?*#310`})) + -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name{`char*#743`}(field*{field <- `field*`}))])))*{`char*#743` <- `char*#743*`, `field*` <- `field**`} + -- if ([?(`%`_name{`char*#761`}(field*{field <- `field*`}))*{`char*#761` <- `char*#761*`, `field*` <- `field**`}] = I.`FIELDS`_I{`name?**#2`}) ;; ../../../../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)) + prod{x : idx, id : name, i#94485 : nat} id:Tid => x + -- if (ids[x!`%`_idx{i#94485}.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) => `` + prod{`` : idx, `name?*#322` : name?*} ``:Tidx_(I.`TYPES`_I{`name?*#322`}) => `` ;; ../../../../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) => `` + prod{`` : idx, `name?*#334` : name?*} ``:Tidx_(I.`TAGS`_I{`name?*#334`}) => `` ;; ../../../../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) => `` + prod{`` : idx, `name?*#346` : name?*} ``:Tidx_(I.`GLOBALS`_I{`name?*#346`}) => `` ;; ../../../../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) => `` + prod{`` : idx, `name?*#358` : name?*} ``:Tidx_(I.`MEMS`_I{`name?*#358`}) => `` ;; ../../../../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) => `` + prod{`` : idx, `name?*#370` : name?*} ``:Tidx_(I.`TABLES`_I{`name?*#370`}) => `` ;; ../../../../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) => `` + prod{`` : idx, `name?*#382` : name?*} ``:Tidx_(I.`FUNCS`_I{`name?*#382`}) => `` ;; ../../../../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) => `` + prod{`` : idx, `name?*#394` : name?*} ``:Tidx_(I.`DATAS`_I{`name?*#394`}) => `` ;; ../../../../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) => `` + prod{`` : idx, `name?*#406` : name?*} ``:Tidx_(I.`ELEMS`_I{`name?*#406`}) => `` ;; ../../../../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) => `` + prod{`` : idx, `name?*#418` : name?*} ``:Tidx_(I.`LOCALS`_I{`name?*#418`}) => `` ;; ../../../../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) => `` + prod{`` : idx, `name?*#430` : name?*} ``:Tidx_(I.`LABELS`_I{`name?*#430`}) => `` ;; ../../../../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]) => `` + prod{`` : idx, `name?**#14` : name?**, i#95162 : nat} ``:Tidx_(I.`FIELDS`_I{`name?**#14`}[x!`%`_idx{i#95162}.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) + prod{tagidx#27 : tagidx, x : idx} {{"("} {"tag"} {x:Ttagidx_(I)} {")"}} => `TAG`_externidx{tagidx#27}(x) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"global"} {x:Tglobalidx_(I)} {")"}} => GLOBAL_externidx(x) + prod{globalidx#29 : globalidx, x : idx} {{"("} {"global"} {x:Tglobalidx_(I)} {")"}} => `GLOBAL`_externidx{globalidx#29}(x) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => MEM_externidx(x) + prod{memidx#276 : memidx, x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => `MEM`_externidx{memidx#276}(x) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => TABLE_externidx(x) + prod{tableidx#152 : tableidx, x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => `TABLE`_externidx{tableidx#152}(x) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{x : idx} {{"("} {"func"} {x:Tfuncidx_(I)} {")"}} => FUNC_externidx(x) + prod{funcidx#3381 : funcidx, x : idx} {{"("} {"func"} {x:Tfuncidx_(I)} {")"}} => `FUNC`_externidx{funcidx#3381}(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 + prod "i32" => `I32`_numtype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i64" => I64_numtype + prod "i64" => `I64`_numtype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "f32" => F32_numtype + prod "f32" => `F32`_numtype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "f64" => F64_numtype + 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 + 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 + prod "any" => `ANY`_heaptype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "eq" => EQ_heaptype + prod "eq" => `EQ`_heaptype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i31" => I31_heaptype + prod "i31" => `I31`_heaptype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "struct" => STRUCT_heaptype + prod "struct" => `STRUCT`_heaptype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "array" => ARRAY_heaptype + prod "array" => `ARRAY`_heaptype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "none" => NONE_heaptype + prod "none" => `NONE`_heaptype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "func" => FUNC_heaptype + prod "func" => `FUNC`_heaptype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "nofunc" => NOFUNC_heaptype + prod "nofunc" => `NOFUNC`_heaptype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "exn" => EXN_heaptype + prod "exn" => `EXN`_heaptype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "noexn" => NOEXN_heaptype + prod "noexn" => `NOEXN`_heaptype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "extern" => EXTERN_heaptype + prod "extern" => `EXTERN`_heaptype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "noextern" => NOEXTERN_heaptype + 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) + prod{typeidx#2119 : typeidx, x : idx} x:Ttypeidx_(I) => `_IDX`_heaptype{typeidx#2119}(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 + 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) + prod{`null?#1795` : null?, heaptype#1861 : heaptype, `null?` : null?, ht : heaptype} {{"("} {"ref"} {null?{null <- `null?`}:Tnull?{}} {ht:Theaptype_(I)} {")"}} => `REF`_reftype{`null?#1795`, heaptype#1861}(null?{null <- `null?`}, ht) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tvaltype_(I : I) : valtype @@ -9561,9 +121120,9 @@ grammar Tvaltype_(I : I) : 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 + prod "i8" => `I8`_packtype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i16" => I16_packtype + prod "i16" => `I16`_packtype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tstoragetype_(I : I) : storagetype @@ -9575,19 +121134,19 @@ grammar Tstoragetype_(I : I) : 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) + prod{`mut?#1499` : mut?, storagetype#801 : storagetype, zt : storagetype} zt:Tstoragetype_(I) => `%%`_fieldtype{`mut?#1499`, storagetype#801}(?(), zt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{zt : storagetype} {{"("} {"mut"} {zt:Tstoragetype_(I)} {")"}} => `%%`_fieldtype(?(MUT_mut), zt) + prod{`mut?#1511` : mut?, storagetype#813 : storagetype, zt : storagetype} {{"("} {"mut"} {zt:Tstoragetype_(I)} {")"}} => `%%`_fieldtype{`mut?#1511`, storagetype#813}(?(`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?`})))) + prod{ft : fieldtype, `char*#969` : char*, `id?` : char?, `char*#963` : char*} {{"("} {"field"} {?(`%`_name{`char*#963`}(lift(id?{id <- `id?`}))):Tid?{}} {ft:Tfieldtype_(I)} {")"}} => (ft, ?(`%`_name{`char*#969`}(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?`})))) + prod{t : valtype, `char*#981` : char*, `id?` : char?, `char*#975` : char*} {{"("} {"param"} {?(`%`_name{`char*#975`}(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => (t, ?(`%`_name{`char*#981`}(lift(id?{id <- `id?`})))) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tresult_(I : I) : valtype @@ -9597,124 +121156,124 @@ grammar Tresult_(I : I) : valtype ;; ../../../../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 []}) + prod{`X*#13361` : fieldtype*, `ft*` : fieldtype*, `name?*#431` : name?*, `name?*#432` : name?*, `name?*#433` : name?*, `name?*#434` : name?*, `name?*#435` : name?*, `name?*#436` : name?*, `name?*#437` : name?*, `name?*#438` : name?*, `name?*#439` : name?*, `name?*#440` : name?*, `name?**#15` : name?**, `char*#1005*` : char**, `id?*` : char?*, `deftype?*#2` : deftype?*, `char*#987*` : char**} {{"("} {"struct"} {(ft, ?(`%`_name{`char*#987`}(lift(id?{id <- `id?`}))))*{`char*#987` <- `char*#987*`, ft <- `ft*`, `id?` <- `id?*`}:Tlist(syntax (fieldtype, name?), grammar Tfield_(I))} {")"}} => (`STRUCT`_comptype(`%`_list{`X*#13361`}(ft*{ft <- `ft*`})), {`TYPES`{`name?*#431`} [], `TAGS`{`name?*#432`} [], `GLOBALS`{`name?*#433`} [], `MEMS`{`name?*#434`} [], `TABLES`{`name?*#435`} [], `FUNCS`{`name?*#436`} [], `DATAS`{`name?*#437`} [], `ELEMS`{`name?*#438`} [], `LOCALS`{`name?*#439`} [], `LABELS`{`name?*#440`} [], `FIELDS`{`name?**#15`} [?(`%`_name{`char*#1005`}(lift(id?{id <- `id?`})))*{`char*#1005` <- `char*#1005*`, `id?` <- `id?*`}], `TYPEDEFS`{`deftype?*#2`} []}) ;; ../../../../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 []}) + prod{fieldtype#61 : fieldtype, ft : fieldtype, `name?*#441` : name?*, `name?*#442` : name?*, `name?*#443` : name?*, `name?*#444` : name?*, `name?*#445` : name?*, `name?*#446` : name?*, `name?*#447` : name?*, `name?*#448` : name?*, `name?*#449` : name?*, `name?*#450` : name?*, `name?**#16` : name?**, `deftype?*#3` : deftype?*} {{"("} {"array"} {ft:Tfieldtype_(I)} {")"}} => (`ARRAY`_comptype{fieldtype#61}(ft), {`TYPES`{`name?*#441`} [], `TAGS`{`name?*#442`} [], `GLOBALS`{`name?*#443`} [], `MEMS`{`name?*#444`} [], `TABLES`{`name?*#445`} [], `FUNCS`{`name?*#446`} [], `DATAS`{`name?*#447`} [], `ELEMS`{`name?*#448`} [], `LOCALS`{`name?*#449`} [], `LABELS`{`name?*#450`} [], `FIELDS`{`name?**#16`} [], `TYPEDEFS`{`deftype?*#3`} []}) ;; ../../../../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 []}) + prod{resulttype#3032 : resulttype, `X*#13376` : valtype*, `t_1*` : valtype*, `X*#13389` : valtype*, `t_2*` : valtype*, `name?*#451` : name?*, `name?*#452` : name?*, `name?*#453` : name?*, `name?*#454` : name?*, `name?*#455` : name?*, `name?*#456` : name?*, `name?*#457` : name?*, `name?*#458` : name?*, `name?*#459` : name?*, `name?*#460` : name?*, `name?**#17` : name?**, `deftype?*#4` : deftype?*, `char*#1011*` : char**, `id?*` : char?*} {{"("} {"func"} {(t_1, ?(`%`_name{`char*#1011`}(lift(id?{id <- `id?`}))))*{`char*#1011` <- `char*#1011*`, `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#3032}(`%`_resulttype{`X*#13376`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13389`}(t_2*{t_2 <- `t_2*`})), {`TYPES`{`name?*#451`} [], `TAGS`{`name?*#452`} [], `GLOBALS`{`name?*#453`} [], `MEMS`{`name?*#454`} [], `TABLES`{`name?*#455`} [], `FUNCS`{`name?*#456`} [], `DATAS`{`name?*#457`} [], `ELEMS`{`name?*#458`} [], `LOCALS`{`name?*#459`} [], `LABELS`{`name?*#460`} [], `FIELDS`{`name?**#17`} [], `TYPEDEFS`{`deftype?*#4`} []}) ;; ../../../../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 + 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') + prod{`final?#523` : final?, `typeuse*#523` : typeuse*, comptype#523 : comptype, `fin?` : final?, `typeidx#2121*` : typeidx*, `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{`final?#523`, `typeuse*#523`, comptype#523}(fin?{fin <- `fin?`}, `_IDX`_typeuse{typeidx#2121}(x)*{typeidx#2121 <- `typeidx#2121*`, 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 []}) + prod{st : subtype, I' : I, `name?*#461` : name?*, `char*#1023` : char*, `id?` : char?, `name?*#462` : name?*, `name?*#463` : name?*, `name?*#464` : name?*, `name?*#465` : name?*, `name?*#466` : name?*, `name?*#467` : name?*, `name?*#468` : name?*, `name?*#469` : name?*, `name?*#470` : name?*, `name?**#18` : name?**, `deftype?*#5` : deftype?*, `char*#1017` : char*} {{"("} {"type"} {?(`%`_name{`char*#1017`}(lift(id?{id <- `id?`}))):Tid?{}} {(st, I'):Tsubtype_(I)} {")"}} => (st, I' +++ {`TYPES`{`name?*#461`} [?(`%`_name{`char*#1023`}(lift(id?{id <- `id?`})))], `TAGS`{`name?*#462`} [], `GLOBALS`{`name?*#463`} [], `MEMS`{`name?*#464`} [], `TABLES`{`name?*#465`} [], `FUNCS`{`name?*#466`} [], `DATAS`{`name?*#467`} [], `ELEMS`{`name?*#468`} [], `LOCALS`{`name?*#469`} [], `LABELS`{`name?*#470`} [], `FIELDS`{`name?**#18`} [], `TYPEDEFS`{`deftype?*#5`} []}) ;; ../../../../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'*`})) + prod{`X*#13404` : subtype*, `st*` : subtype*, `I'*` : I*} {{"("} {"rec"} {(st, I')*{I' <- `I'*`, st <- `st*`}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(I))} {")"}} => (`REC`_rectype(`%`_list{`X*#13404`}(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 + prod "i32" => `I32`_addrtype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i64" => I64_addrtype + 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), ?()) + prod{u64#571 : u64, `u64?#545` : u64?, i#95590 : nat, n : n, i#95568 : nat} `%`_u64{i#95568}(n):Tu64 => `[%..%]`_limits{u64#571, `u64?#545`}(`%`_u64{i#95590}(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))) + prod{u64#583 : u64, `u64?#557` : u64?, i#95666 : nat, n : n, i#95688 : nat, m : m, i#95615 : nat, i#95642 : nat} {{`%`_u64{i#95615}(n):Tu64} {`%`_u64{i#95642}(m):Tu64}} => `[%..%]`_limits{u64#583, `u64?#557`}(`%`_u64{i#95666}(n), ?(`%`_u64{i#95688}(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 []}) + prod{x : idx, I' : I, `deftype?*#11` : deftype?*, i#95899 : nat, rectype#1807 : rectype, n#1503 : n, `X*#13419` : subtype*, `st*` : subtype*, i : n, `final?#577` : final?, `typeuse*#577` : typeuse*, comptype#577 : comptype, resulttype#3035 : resulttype, `X*#13434` : valtype*, `t_1*` : valtype*, `X*#13447` : valtype*, `t_2*` : valtype*, `name?*#521` : name?*, `name?*#522` : name?*, `name?*#523` : name?*, `name?*#524` : name?*, `name?*#525` : name?*, `name?*#526` : name?*, `name?*#527` : name?*, `name?*#528` : name?*, `name?*#529` : name?*, `char*#1113*` : char**, `name?*#530` : name?*, `name?**#24` : name?**, `deftype?*#12` : deftype?*} {{"("} {"type"} {x:Ttypeidx_(I)} {")"}} => (x, I') + -- if (I.`TYPEDEFS`_I{`deftype?*#11`}[x!`%`_idx{i#95899}.0] = ?(`_DEF`_deftype{rectype#1807, n#1503}(`REC`_rectype(`%`_list{`X*#13419`}(st*{st <- `st*`})), i))) + -- if (st*{st <- `st*`}[i] = `SUB`_subtype{`final?#577`, `typeuse*#577`, comptype#577}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3035}(`%`_resulttype{`X*#13434`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13447`}(t_2*{t_2 <- `t_2*`})))) + -- if (I' = {`TYPES`{`name?*#521`} [], `TAGS`{`name?*#522`} [], `GLOBALS`{`name?*#523`} [], `MEMS`{`name?*#524`} [], `TABLES`{`name?*#525`} [], `FUNCS`{`name?*#526`} [], `DATAS`{`name?*#527`} [], `ELEMS`{`name?*#528`} [], `LOCALS`{`name?*#529`} ?(`%`_name{`char*#1113`}([]))^|t_1*{t_1 <- `t_1*`}|{`char*#1113` <- `char*#1113*`}, `LABELS`{`name?*#530`} [], `FIELDS`{`name?**#24`} [], `TYPEDEFS`{`deftype?*#12`} []}) ;; ../../../../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 []}) + prod{x : idx, I' : I, `char*#1119*` : char**, `id?*` : char?*, `t_1*` : valtype*, `t_2*` : valtype*, `deftype?*#13` : deftype?*, i#95968 : nat, rectype#1819 : rectype, n#1515 : n, `X*#13462` : subtype*, `st*` : subtype*, i : n, `final?#601` : final?, `typeuse*#601` : typeuse*, comptype#601 : comptype, resulttype#3038 : resulttype, `X*#13477` : valtype*, `X*#13490` : valtype*, `name?*#531` : name?*, `name?*#532` : name?*, `name?*#533` : name?*, `name?*#534` : name?*, `name?*#535` : name?*, `name?*#536` : name?*, `name?*#537` : name?*, `name?*#538` : name?*, `name?*#539` : name?*, `char*#1137*` : char**, `name?*#540` : name?*, `name?**#25` : name?**, `deftype?*#14` : deftype?*} {{"("} {"type"} {x:Ttypeidx_(I)} {")"} {(t_1, ?(`%`_name{`char*#1119`}(lift(id?{id <- `id?`}))))*{`char*#1119` <- `char*#1119*`, `id?` <- `id?*`, t_1 <- `t_1*`}:Tparam_(I)*{}} {t_2*{t_2 <- `t_2*`}:Tresult_(I)*{}}} => (x, I') + -- if (I.`TYPEDEFS`_I{`deftype?*#13`}[x!`%`_idx{i#95968}.0] = ?(`_DEF`_deftype{rectype#1819, n#1515}(`REC`_rectype(`%`_list{`X*#13462`}(st*{st <- `st*`})), i))) + -- if (st*{st <- `st*`}[i] = `SUB`_subtype{`final?#601`, `typeuse*#601`, comptype#601}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3038}(`%`_resulttype{`X*#13477`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13490`}(t_2*{t_2 <- `t_2*`})))) + -- if (I' = {`TYPES`{`name?*#531`} [], `TAGS`{`name?*#532`} [], `GLOBALS`{`name?*#533`} [], `MEMS`{`name?*#534`} [], `TABLES`{`name?*#535`} [], `FUNCS`{`name?*#536`} [], `DATAS`{`name?*#537`} [], `ELEMS`{`name?*#538`} [], `LOCALS`{`name?*#539`} ?(`%`_name{`char*#1137`}(lift(id?{id <- `id?`})))*{`char*#1137` <- `char*#1137*`, `id?` <- `id?*`}, `LABELS`{`name?*#540`} [], `FIELDS`{`name?**#25`} [], `TYPEDEFS`{`deftype?*#14`} []}) -- 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) + prod{typeidx#2123 : typeidx, x : idx, I' : I} (x, I'):Ttypeuse_(I) => `_IDX`_tagtype{typeidx#2123}(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) + prod{`mut?#1561` : mut?, valtype#1167 : valtype, t : valtype} t:Tvaltype_(I) => `%%`_globaltype{`mut?#1561`, valtype#1167}(?(), t) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{t : valtype} {{"("} {"mut"} {t:Tvaltype_(I)} {")"}} => `%%`_globaltype(?(MUT_mut), t) + prod{`mut?#1573` : mut?, valtype#1179 : valtype, t : valtype} {{"("} {"mut"} {t:Tvaltype_(I)} {")"}} => `%%`_globaltype{`mut?#1573`, valtype#1179}(?(`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) + prod{addrtype#1483 : addrtype, limits#1483 : limits, at : addrtype, lim : limits} {{at:Taddrtype} {lim:Tlimits}} => `%%PAGE`_memtype{addrtype#1483, limits#1483}(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) + prod{addrtype#1495 : addrtype, limits#1495 : limits, reftype#4291 : reftype, at : addrtype, lim : limits, rt : reftype} {{at:Taddrtype} {lim:Tlimits} {rt:Treftype_(I)}} => `%%%`_tabletype{addrtype#1495, limits#1495, reftype#4291}(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 []}) + prod{tagtype#436 : tagtype, jt : tagtype, `name?*#471` : name?*, `name?*#472` : name?*, `char*#1035` : char*, `id?` : char?, `name?*#473` : name?*, `name?*#474` : name?*, `name?*#475` : name?*, `name?*#476` : name?*, `name?*#477` : name?*, `name?*#478` : name?*, `name?*#479` : name?*, `name?*#480` : name?*, `name?**#19` : name?**, `deftype?*#6` : deftype?*, `char*#1029` : char*} {{"("} {"tag"} {?(`%`_name{`char*#1029`}(lift(id?{id <- `id?`}))):Tid?{}} {jt:Ttagtype_(I)} {")"}} => (`TAG`_externtype{tagtype#436}(jt), {`TYPES`{`name?*#471`} [], `TAGS`{`name?*#472`} [?(`%`_name{`char*#1035`}(lift(id?{id <- `id?`})))], `GLOBALS`{`name?*#473`} [], `MEMS`{`name?*#474`} [], `TABLES`{`name?*#475`} [], `FUNCS`{`name?*#476`} [], `DATAS`{`name?*#477`} [], `ELEMS`{`name?*#478`} [], `LOCALS`{`name?*#479`} [], `LABELS`{`name?*#480`} [], `FIELDS`{`name?**#19`} [], `TYPEDEFS`{`deftype?*#6`} []}) ;; ../../../../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 []}) + prod{globaltype#2397 : globaltype, gt : globaltype, `name?*#481` : name?*, `name?*#482` : name?*, `name?*#483` : name?*, `char*#1047` : char*, `id?` : char?, `name?*#484` : name?*, `name?*#485` : name?*, `name?*#486` : name?*, `name?*#487` : name?*, `name?*#488` : name?*, `name?*#489` : name?*, `name?*#490` : name?*, `name?**#20` : name?**, `deftype?*#7` : deftype?*, `char*#1041` : char*} {{"("} {"global"} {?(`%`_name{`char*#1041`}(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {")"}} => (`GLOBAL`_externtype{globaltype#2397}(gt), {`TYPES`{`name?*#481`} [], `TAGS`{`name?*#482`} [], `GLOBALS`{`name?*#483`} [?(`%`_name{`char*#1047`}(lift(id?{id <- `id?`})))], `MEMS`{`name?*#484`} [], `TABLES`{`name?*#485`} [], `FUNCS`{`name?*#486`} [], `DATAS`{`name?*#487`} [], `ELEMS`{`name?*#488`} [], `LOCALS`{`name?*#489`} [], `LABELS`{`name?*#490`} [], `FIELDS`{`name?**#20`} [], `TYPEDEFS`{`deftype?*#7`} []}) ;; ../../../../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 []}) + prod{memtype#858 : memtype, mt : memtype, `name?*#491` : name?*, `name?*#492` : name?*, `name?*#493` : name?*, `name?*#494` : name?*, `char*#1059` : char*, `id?` : char?, `name?*#495` : name?*, `name?*#496` : name?*, `name?*#497` : name?*, `name?*#498` : name?*, `name?*#499` : name?*, `name?*#500` : name?*, `name?**#21` : name?**, `deftype?*#8` : deftype?*, `char*#1053` : char*} {{"("} {"memory"} {?(`%`_name{`char*#1053`}(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (`MEM`_externtype{memtype#858}(mt), {`TYPES`{`name?*#491`} [], `TAGS`{`name?*#492`} [], `GLOBALS`{`name?*#493`} [], `MEMS`{`name?*#494`} [?(`%`_name{`char*#1059`}(lift(id?{id <- `id?`})))], `TABLES`{`name?*#495`} [], `FUNCS`{`name?*#496`} [], `DATAS`{`name?*#497`} [], `ELEMS`{`name?*#498`} [], `LOCALS`{`name?*#499`} [], `LABELS`{`name?*#500`} [], `FIELDS`{`name?**#21`} [], `TYPEDEFS`{`deftype?*#8`} []}) ;; ../../../../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 []}) + prod{tabletype#1280 : tabletype, tt : tabletype, `name?*#501` : name?*, `name?*#502` : name?*, `name?*#503` : name?*, `name?*#504` : name?*, `name?*#505` : name?*, `char*#1071` : char*, `id?` : char?, `name?*#506` : name?*, `name?*#507` : name?*, `name?*#508` : name?*, `name?*#509` : name?*, `name?*#510` : name?*, `name?**#22` : name?**, `deftype?*#9` : deftype?*, `char*#1065` : char*} {{"("} {"table"} {?(`%`_name{`char*#1065`}(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {")"}} => (`TABLE`_externtype{tabletype#1280}(tt), {`TYPES`{`name?*#501`} [], `TAGS`{`name?*#502`} [], `GLOBALS`{`name?*#503`} [], `MEMS`{`name?*#504`} [], `TABLES`{`name?*#505`} [?(`%`_name{`char*#1071`}(lift(id?{id <- `id?`})))], `FUNCS`{`name?*#506`} [], `DATAS`{`name?*#507`} [], `ELEMS`{`name?*#508`} [], `LOCALS`{`name?*#509`} [], `LABELS`{`name?*#510`} [], `FIELDS`{`name?**#22`} [], `TYPEDEFS`{`deftype?*#9`} []}) ;; ../../../../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 []}) + prod{typeuse#77 : typeuse, typeidx#2125 : typeidx, x : idx, `name?*#511` : name?*, `name?*#512` : name?*, `name?*#513` : name?*, `name?*#514` : name?*, `name?*#515` : name?*, `name?*#516` : name?*, `char*#1083` : char*, `id?` : char?, `name?*#517` : name?*, `name?*#518` : name?*, `name?*#519` : name?*, `name?*#520` : name?*, `name?**#23` : name?**, `deftype?*#10` : deftype?*, `char*#1077` : char*, I' : I} {{"("} {"func"} {?(`%`_name{`char*#1077`}(lift(id?{id <- `id?`}))):Tid?{}} {(x, I'):Ttypeuse_(I)} {")"}} => (`FUNC`_externtype{typeuse#77}(`_IDX`_typeuse{typeidx#2125}(x)), {`TYPES`{`name?*#511`} [], `TAGS`{`name?*#512`} [], `GLOBALS`{`name?*#513`} [], `MEMS`{`name?*#514`} [], `TABLES`{`name?*#515`} [], `FUNCS`{`name?*#516`} [?(`%`_name{`char*#1083`}(lift(id?{id <- `id?`})))], `DATAS`{`name?*#517`} [], `ELEMS`{`name?*#518`} [], `LOCALS`{`name?*#519`} [], `LABELS`{`name?*#520`} [], `FIELDS`{`name?**#23`} [], `TYPEDEFS`{`deftype?*#10`} []}) ;; ../../../../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) + prod{`name?*#541` : name?*, `name?*#542` : name?*, `name?*#543` : name?*, `name?*#544` : name?*, `name?*#545` : name?*, `name?*#546` : name?*, `name?*#547` : name?*, `name?*#548` : name?*, `name?*#549` : name?*, `name?*#550` : name?*, `name?**#26` : name?**, `deftype?*#17` : deftype?*} eps => (?(), {`TYPES`{`name?*#541`} [], `TAGS`{`name?*#542`} [], `GLOBALS`{`name?*#543`} [], `MEMS`{`name?*#544`} [], `TABLES`{`name?*#545`} [], `FUNCS`{`name?*#546`} [], `DATAS`{`name?*#547`} [], `ELEMS`{`name?*#548`} [], `LOCALS`{`name?*#549`} [], `LABELS`{`name?*#550`} [], `FIELDS`{`name?**#26`} [], `TYPEDEFS`{`deftype?*#17`} []} +++ 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) + prod{id : name, `name?*#551` : name?*, `name?*#552` : name?*, `name?*#553` : name?*, `name?*#554` : name?*, `name?*#555` : name?*, `name?*#556` : name?*, `name?*#557` : name?*, `name?*#558` : name?*, `name?*#559` : name?*, `name?*#560` : name?*, `name?**#27` : name?**, `deftype?*#18` : deftype?*, `name?*#566` : name?*} id:Tid => (?(id), {`TYPES`{`name?*#551`} [], `TAGS`{`name?*#552`} [], `GLOBALS`{`name?*#553`} [], `MEMS`{`name?*#554`} [], `TABLES`{`name?*#555`} [], `FUNCS`{`name?*#556`} [], `DATAS`{`name?*#557`} [], `ELEMS`{`name?*#558`} [], `LOCALS`{`name?*#559`} [], `LABELS`{`name?*#560`} [?(id)], `FIELDS`{`name?**#27`} [], `TYPEDEFS`{`deftype?*#18`} []} +++ I) + -- if ~ (?(id) <- I.`LABELS`_I{`name?*#566`}) ;; ../../../../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]) + prod{id : name, `name?*#567` : name?*, `name?*#568` : name?*, `name?*#569` : name?*, `name?*#570` : name?*, `name?*#571` : name?*, `name?*#572` : name?*, `name?*#573` : name?*, `name?*#574` : name?*, `name?*#575` : name?*, `name?*#576` : name?*, `name?**#28` : name?**, `deftype?*#19` : deftype?*, `name?*#577` : name?*, x : idx, i#96077 : nat, `name?*#578` : name?*, i#96087 : nat} id:Tid => (?(id), {`TYPES`{`name?*#567`} [], `TAGS`{`name?*#568`} [], `GLOBALS`{`name?*#569`} [], `MEMS`{`name?*#570`} [], `TABLES`{`name?*#571`} [], `FUNCS`{`name?*#572`} [], `DATAS`{`name?*#573`} [], `ELEMS`{`name?*#574`} [], `LOCALS`{`name?*#575`} [], `LABELS`{`name?*#576`} [?(id)], `FIELDS`{`name?**#28`} [], `TYPEDEFS`{`deftype?*#19`} []} +++ I[`LABELS`_I{`name?*#577`}[x!`%`_idx{i#96077}.0] = ?()]) + -- if (?(id) = I.`LABELS`_I{`name?*#578`}[x!`%`_idx{i#96087}.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?`}) + prod{`valtype?#11` : valtype?, `t?` : valtype?} t?{t <- `t?`}:Tresult_(I)?{} => `_RESULT`_blocktype{`valtype?#11`}(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 []}) + prod{typeidx#2127 : typeidx, x : idx, I' : I, `name?*#579` : name?*, `name?*#580` : name?*, `name?*#581` : name?*, `name?*#582` : name?*, `name?*#583` : name?*, `name?*#584` : name?*, `name?*#585` : name?*, `name?*#586` : name?*, `name?*#587` : name?*, `char*#1231*` : char**, `name?*#588` : name?*, `name?**#29` : name?**, `deftype?*#20` : deftype?*} (x, I'):Ttypeuse_(I) => `_IDX`_blocktype{typeidx#2127}(x) + -- if (I' = {`TYPES`{`name?*#579`} [], `TAGS`{`name?*#580`} [], `GLOBALS`{`name?*#581`} [], `MEMS`{`name?*#582`} [], `TABLES`{`name?*#583`} [], `FUNCS`{`name?*#584`} [], `DATAS`{`name?*#585`} [], `ELEMS`{`name?*#586`} [], `LOCALS`{`name?*#587`} ?(`%`_name{`char*#1231`}([]))*{`char*#1231` <- `char*#1231*`}, `LABELS`{`name?*#588`} [], `FIELDS`{`name?**#29`} [], `TYPEDEFS`{`deftype?*#20`} []}) ;; ../../../../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) + prod{tagidx#29 : tagidx, labelidx#123 : labelidx, x : idx, l : labelidx} {{"("} {"catch"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => `CATCH`_catch{tagidx#29, labelidx#123}(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) + prod{tagidx#31 : tagidx, labelidx#125 : labelidx, x : idx, l : labelidx} {{"("} {"catch_ref"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => `CATCH_REF`_catch{tagidx#31, labelidx#125}(x, l) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"("} {"catch_all"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_catch(l) + prod{labelidx#127 : labelidx, l : labelidx} {{"("} {"catch_all"} {l:Tlabelidx_(I)} {")"}} => `CATCH_ALL`_catch{labelidx#127}(l) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"("} {"catch_all_ref"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_REF_catch(l) + prod{labelidx#129 : labelidx, l : labelidx} {{"("} {"catch_all_ref"} {l:Tlabelidx_(I)} {")"}} => `CATCH_ALL_REF`_catch{labelidx#129}(l) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec grammar Tfoldedinstr_(I : I) : instr* @@ -9727,1013 +121286,1013 @@ grammar Tlaneidx : laneidx ;; ../../../../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) + prod{i#97737 : nat, m : m, i#97711 : nat, n : n} {{"align="} {`%`_u64{i#97711}(m):Tu64}} => `%`_u64{i#97737}(m) -- if (m = (2 ^ n)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod eps => `%`_u64(N) + prod{i#97761 : nat} eps => `%`_u64{i#97761}(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) + prod{i#97664 : nat, n : n, i#97638 : nat} {{"offset="} {`%`_u64{i#97638}(n):Tu64}} => `%`_u64{i#97664}(n) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod eps => `%`_u64(0) + prod{i#97686 : nat} eps => `%`_u64{i#97686}(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)} + prod{u32#47 : u32, i#97591 : nat, n : n, u64#609 : u64, i#97613 : nat, m : m, i#97540 : nat, i#97567 : nat} {{`%`_u64{i#97540}(n):Toffset} {`%`_u64{i#97567}(m):Talign_(N)}} => {`ALIGN`{u32#47} `%`_u32{i#97591}(n), `OFFSET`{u64#609} `%`_u64{i#97613}(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 + prod "unreachable" => `UNREACHABLE`_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "nop" => NOP_instr + prod "nop" => `NOP`_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "drop" => DROP_instr + 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*?`}) + prod{`valtype*?#15` : valtype*?, `t*?` : valtype*?} {{"select"} {t*{t <- `t*`}:Tresult_(I)*{}?{`t*` <- `t*?`}}} => `SELECT`_instr{`valtype*?#15`}(t*{t <- `t*`}?{`t*` <- `t*?`}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br"} {l:Tlabelidx_(I)}} => BR_instr(l) + prod{labelidx#131 : labelidx, l : labelidx} {{"br"} {l:Tlabelidx_(I)}} => `BR`_instr{labelidx#131}(l) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"br_if"} {l:Tlabelidx_(I)}} => BR_IF_instr(l) + prod{labelidx#133 : labelidx, l : labelidx} {{"br_if"} {l:Tlabelidx_(I)}} => `BR_IF`_instr{labelidx#133}(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') + prod{`labelidx*#56` : labelidx*, labelidx#135 : labelidx, `l*` : labelidx*, l' : labelidx} {{"br_table"} {l*{l <- `l*`}:Tlabelidx_(I)*{}} {l':Tlabelidx_(I)}} => `BR_TABLE`_instr{`labelidx*#56`, labelidx#135}(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) + prod{labelidx#137 : labelidx, l : labelidx} {{"br_on_null"} {l:Tlabelidx_(I)}} => `BR_ON_NULL`_instr{labelidx#137}(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) + prod{labelidx#139 : labelidx, l : labelidx} {{"br_on_non_null"} {l:Tlabelidx_(I)}} => `BR_ON_NON_NULL`_instr{labelidx#139}(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) + prod{labelidx#141 : labelidx, reftype#4305 : reftype, 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{labelidx#141, reftype#4305}(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) + prod{labelidx#143 : labelidx, reftype#4308 : reftype, 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{labelidx#143, reftype#4308}(l, rt_1, rt_2) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"call"} {x:Tfuncidx_(I)}} => CALL_instr(x) + prod{funcidx#3383 : funcidx, x : idx} {{"call"} {x:Tfuncidx_(I)}} => `CALL`_instr{funcidx#3383}(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"call_ref"} {x:Ttypeidx_(I)}} => CALL_REF_instr(_IDX_typeuse(x)) + prod{typeuse#79 : typeuse, typeidx#2129 : typeidx, x : idx} {{"call_ref"} {x:Ttypeidx_(I)}} => `CALL_REF`_instr{typeuse#79}(`_IDX`_typeuse{typeidx#2129}(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 []}) + prod{tableidx#154 : tableidx, typeuse#81 : typeuse, x : idx, typeidx#2131 : typeidx, y : idx, I' : I, `name?*#589` : name?*, `name?*#590` : name?*, `name?*#591` : name?*, `name?*#592` : name?*, `name?*#593` : name?*, `name?*#594` : name?*, `name?*#595` : name?*, `name?*#596` : name?*, `name?*#597` : name?*, `char*#1315*` : char**, `name?*#598` : name?*, `name?**#30` : name?**, `deftype?*#21` : deftype?*} {{"call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => `CALL_INDIRECT`_instr{tableidx#154, typeuse#81}(x, `_IDX`_typeuse{typeidx#2131}(y)) + -- if (I' = {`TYPES`{`name?*#589`} [], `TAGS`{`name?*#590`} [], `GLOBALS`{`name?*#591`} [], `MEMS`{`name?*#592`} [], `TABLES`{`name?*#593`} [], `FUNCS`{`name?*#594`} [], `DATAS`{`name?*#595`} [], `ELEMS`{`name?*#596`} [], `LOCALS`{`name?*#597`} ?(`%`_name{`char*#1315`}([]))*{`char*#1315` <- `char*#1315*`}, `LABELS`{`name?*#598`} [], `FIELDS`{`name?**#30`} [], `TYPEDEFS`{`deftype?*#21`} []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "return" => RETURN_instr + 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) + prod{funcidx#3385 : funcidx, x : idx} {{"return_call"} {x:Tfuncidx_(I)}} => `RETURN_CALL`_instr{funcidx#3385}(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)) + prod{typeuse#83 : typeuse, typeidx#2133 : typeidx, x : idx} {{"return_call_ref"} {x:Ttypeidx_(I)}} => `RETURN_CALL_REF`_instr{typeuse#83}(`_IDX`_typeuse{typeidx#2133}(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 []}) + prod{tableidx#156 : tableidx, typeuse#85 : typeuse, x : idx, typeidx#2135 : typeidx, y : idx, I' : I, `name?*#599` : name?*, `name?*#600` : name?*, `name?*#601` : name?*, `name?*#602` : name?*, `name?*#603` : name?*, `name?*#604` : name?*, `name?*#605` : name?*, `name?*#606` : name?*, `name?*#607` : name?*, `char*#1345*` : char**, `name?*#608` : name?*, `name?**#31` : name?**, `deftype?*#22` : deftype?*} {{"return_call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => `RETURN_CALL_INDIRECT`_instr{tableidx#156, typeuse#85}(x, `_IDX`_typeuse{typeidx#2135}(y)) + -- if (I' = {`TYPES`{`name?*#599`} [], `TAGS`{`name?*#600`} [], `GLOBALS`{`name?*#601`} [], `MEMS`{`name?*#602`} [], `TABLES`{`name?*#603`} [], `FUNCS`{`name?*#604`} [], `DATAS`{`name?*#605`} [], `ELEMS`{`name?*#606`} [], `LOCALS`{`name?*#607`} ?(`%`_name{`char*#1345`}([]))*{`char*#1345` <- `char*#1345*`}, `LABELS`{`name?*#608`} [], `FIELDS`{`name?**#31`} [], `TYPEDEFS`{`deftype?*#22`} []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"throw"} {x:Ttagidx_(I)}} => THROW_instr(x) + prod{tagidx#33 : tagidx, x : idx} {{"throw"} {x:Ttagidx_(I)}} => `THROW`_instr{tagidx#33}(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "throw_ref" => THROW_REF_instr + 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) + prod{localidx#27 : localidx, x : idx} {{"local.get"} {x:Tlocalidx_(I)}} => `LOCAL.GET`_instr{localidx#27}(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.set"} {x:Tlocalidx_(I)}} => LOCAL.SET_instr(x) + prod{localidx#29 : localidx, x : idx} {{"local.set"} {x:Tlocalidx_(I)}} => `LOCAL.SET`_instr{localidx#29}(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.tee"} {x:Tlocalidx_(I)}} => LOCAL.TEE_instr(x) + prod{localidx#31 : localidx, x : idx} {{"local.tee"} {x:Tlocalidx_(I)}} => `LOCAL.TEE`_instr{localidx#31}(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"global.get"} {x:Tglobalidx_(I)}} => GLOBAL.GET_instr(x) + prod{globalidx#31 : globalidx, x : idx} {{"global.get"} {x:Tglobalidx_(I)}} => `GLOBAL.GET`_instr{globalidx#31}(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"global.set"} {x:Tglobalidx_(I)}} => GLOBAL.SET_instr(x) + prod{globalidx#33 : globalidx, x : idx} {{"global.set"} {x:Tglobalidx_(I)}} => `GLOBAL.SET`_instr{globalidx#33}(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.get"} {x:Ttableidx_(I)}} => TABLE.GET_instr(x) + prod{tableidx#158 : tableidx, x : idx} {{"table.get"} {x:Ttableidx_(I)}} => `TABLE.GET`_instr{tableidx#158}(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.set"} {x:Ttableidx_(I)}} => TABLE.SET_instr(x) + prod{tableidx#160 : tableidx, x : idx} {{"table.set"} {x:Ttableidx_(I)}} => `TABLE.SET`_instr{tableidx#160}(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.size"} {x:Ttableidx_(I)}} => TABLE.SIZE_instr(x) + prod{tableidx#162 : tableidx, x : idx} {{"table.size"} {x:Ttableidx_(I)}} => `TABLE.SIZE`_instr{tableidx#162}(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.grow"} {x:Ttableidx_(I)}} => TABLE.GROW_instr(x) + prod{tableidx#164 : tableidx, x : idx} {{"table.grow"} {x:Ttableidx_(I)}} => `TABLE.GROW`_instr{tableidx#164}(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.fill"} {x:Ttableidx_(I)}} => TABLE.FILL_instr(x) + prod{tableidx#166 : tableidx, x : idx} {{"table.fill"} {x:Ttableidx_(I)}} => `TABLE.FILL`_instr{tableidx#166}(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) + prod{tableidx#168 : tableidx, x_1 : idx, x_2 : idx} {{"table.copy"} {x_1:Ttableidx_(I)} {x_2:Ttableidx_(I)}} => `TABLE.COPY`_instr{tableidx#168}(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) + prod{tableidx#171 : tableidx, elemidx#57 : elemidx, x : idx, y : idx} {{"table.init"} {x:Ttableidx_(I)} {y:Telemidx_(I)}} => `TABLE.INIT`_instr{tableidx#171, elemidx#57}(x, y) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"elem.drop"} {x:Telemidx_(I)}} => ELEM.DROP_instr(x) + prod{elemidx#59 : elemidx, x : idx} {{"elem.drop"} {x:Telemidx_(I)}} => `ELEM.DROP`_instr{elemidx#59}(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) + prod{`numtype?#44` : numtype?, memidx#278 : memidx, memarg#181 : memarg, x : idx, ao : memarg} {{"i32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => `LOAD`_instr{`numtype?#44`, memidx#278, memarg#181}(`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) + prod{`numtype?#45` : numtype?, memidx#280 : memidx, memarg#183 : memarg, x : idx, ao : memarg} {{"i64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => `LOAD`_instr{`numtype?#45`, memidx#280, memarg#183}(`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) + prod{`numtype?#46` : numtype?, memidx#282 : memidx, memarg#185 : memarg, x : idx, ao : memarg} {{"f32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => `LOAD`_instr{`numtype?#46`, memidx#282, memarg#185}(`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) + prod{`numtype?#47` : numtype?, memidx#284 : memidx, memarg#187 : memarg, x : idx, ao : memarg} {{"f64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => `LOAD`_instr{`numtype?#47`, memidx#284, memarg#187}(`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) + prod{`numtype?#48` : numtype?, memidx#286 : memidx, memarg#189 : memarg, sz#1643 : sz, sx#15729 : sx, i#97957 : nat, i#97964 : nat, x : idx, ao : memarg} {{"i32.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => `LOAD`_instr{`numtype?#48`, memidx#286, memarg#189}(`I32`_numtype, ?(`%_%`_loadop_{sz#1643, sx#15729, i#97957}(`%`_sz{i#97964}(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) + prod{`numtype?#49` : numtype?, memidx#288 : memidx, memarg#191 : memarg, sz#1661 : sz, sx#15747 : sx, i#98021 : nat, i#98028 : nat, x : idx, ao : memarg} {{"i32.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => `LOAD`_instr{`numtype?#49`, memidx#288, memarg#191}(`I32`_numtype, ?(`%_%`_loadop_{sz#1661, sx#15747, i#98021}(`%`_sz{i#98028}(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) + prod{`numtype?#50` : numtype?, memidx#290 : memidx, memarg#193 : memarg, sz#1679 : sz, sx#15765 : sx, i#98085 : nat, i#98092 : nat, x : idx, ao : memarg} {{"i32.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => `LOAD`_instr{`numtype?#50`, memidx#290, memarg#193}(`I32`_numtype, ?(`%_%`_loadop_{sz#1679, sx#15765, i#98085}(`%`_sz{i#98092}(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) + prod{`numtype?#51` : numtype?, memidx#292 : memidx, memarg#195 : memarg, sz#1697 : sz, sx#15783 : sx, i#98149 : nat, i#98156 : nat, x : idx, ao : memarg} {{"i32.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => `LOAD`_instr{`numtype?#51`, memidx#292, memarg#195}(`I32`_numtype, ?(`%_%`_loadop_{sz#1697, sx#15783, i#98149}(`%`_sz{i#98156}(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) + prod{`numtype?#52` : numtype?, memidx#294 : memidx, memarg#197 : memarg, sz#1715 : sz, sx#15801 : sx, i#98213 : nat, i#98220 : nat, x : idx, ao : memarg} {{"i64.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => `LOAD`_instr{`numtype?#52`, memidx#294, memarg#197}(`I64`_numtype, ?(`%_%`_loadop_{sz#1715, sx#15801, i#98213}(`%`_sz{i#98220}(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) + prod{`numtype?#53` : numtype?, memidx#296 : memidx, memarg#199 : memarg, sz#1733 : sz, sx#15819 : sx, i#98277 : nat, i#98284 : nat, x : idx, ao : memarg} {{"i64.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => `LOAD`_instr{`numtype?#53`, memidx#296, memarg#199}(`I64`_numtype, ?(`%_%`_loadop_{sz#1733, sx#15819, i#98277}(`%`_sz{i#98284}(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) + prod{`numtype?#54` : numtype?, memidx#298 : memidx, memarg#201 : memarg, sz#1751 : sz, sx#15837 : sx, i#98341 : nat, i#98348 : nat, x : idx, ao : memarg} {{"i64.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => `LOAD`_instr{`numtype?#54`, memidx#298, memarg#201}(`I64`_numtype, ?(`%_%`_loadop_{sz#1751, sx#15837, i#98341}(`%`_sz{i#98348}(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) + prod{`numtype?#55` : numtype?, memidx#300 : memidx, memarg#203 : memarg, sz#1769 : sz, sx#15855 : sx, i#98405 : nat, i#98412 : nat, x : idx, ao : memarg} {{"i64.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => `LOAD`_instr{`numtype?#55`, memidx#300, memarg#203}(`I64`_numtype, ?(`%_%`_loadop_{sz#1769, sx#15855, i#98405}(`%`_sz{i#98412}(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) + prod{`numtype?#56` : numtype?, memidx#302 : memidx, memarg#205 : memarg, sz#1787 : sz, sx#15873 : sx, i#98469 : nat, i#98476 : nat, x : idx, ao : memarg} {{"i64.load32_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => `LOAD`_instr{`numtype?#56`, memidx#302, memarg#205}(`I64`_numtype, ?(`%_%`_loadop_{sz#1787, sx#15873, i#98469}(`%`_sz{i#98476}(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) + prod{`numtype?#57` : numtype?, memidx#304 : memidx, memarg#207 : memarg, sz#1805 : sz, sx#15891 : sx, i#98533 : nat, i#98540 : nat, x : idx, ao : memarg} {{"i64.load32_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => `LOAD`_instr{`numtype?#57`, memidx#304, memarg#207}(`I64`_numtype, ?(`%_%`_loadop_{sz#1805, sx#15891, i#98533}(`%`_sz{i#98540}(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) + prod{`vectype?#27` : vectype?, memidx#306 : memidx, memarg#209 : memarg, x : idx, ao : memarg} {{"v128.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => `VLOAD`_instr{`vectype?#27`, memidx#306, memarg#209}(`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) + prod{`vectype?#28` : vectype?, memidx#308 : memidx, memarg#211 : memarg, sz#1852 : sz, M#349 : M, sx#15908 : sx, i#98628 : nat, i#98635 : nat, x : idx, ao : memarg} {{"v128.load8x8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => `VLOAD`_instr{`vectype?#28`, memidx#308, memarg#211}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1852, M#349, sx#15908, i#98628}(`%`_sz{i#98635}(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) + prod{`vectype?#29` : vectype?, memidx#310 : memidx, memarg#213 : memarg, sz#1899 : sz, M#366 : M, sx#15925 : sx, i#98692 : nat, i#98699 : nat, x : idx, ao : memarg} {{"v128.load8x8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => `VLOAD`_instr{`vectype?#29`, memidx#310, memarg#213}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1899, M#366, sx#15925, i#98692}(`%`_sz{i#98699}(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) + prod{`vectype?#30` : vectype?, memidx#312 : memidx, memarg#215 : memarg, sz#1946 : sz, M#383 : M, sx#15942 : sx, i#98756 : nat, i#98763 : nat, x : idx, ao : memarg} {{"v128.load16x4_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => `VLOAD`_instr{`vectype?#30`, memidx#312, memarg#215}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1946, M#383, sx#15942, i#98756}(`%`_sz{i#98763}(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) + prod{`vectype?#31` : vectype?, memidx#314 : memidx, memarg#217 : memarg, sz#1993 : sz, M#400 : M, sx#15959 : sx, i#98820 : nat, i#98827 : nat, x : idx, ao : memarg} {{"v128.load16x4_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => `VLOAD`_instr{`vectype?#31`, memidx#314, memarg#217}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1993, M#400, sx#15959, i#98820}(`%`_sz{i#98827}(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) + prod{`vectype?#32` : vectype?, memidx#316 : memidx, memarg#219 : memarg, sz#2040 : sz, M#417 : M, sx#15976 : sx, i#98884 : nat, i#98891 : nat, x : idx, ao : memarg} {{"v128.load32x2_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => `VLOAD`_instr{`vectype?#32`, memidx#316, memarg#219}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#2040, M#417, sx#15976, i#98884}(`%`_sz{i#98891}(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) + prod{`vectype?#33` : vectype?, memidx#318 : memidx, memarg#221 : memarg, sz#2087 : sz, M#434 : M, sx#15993 : sx, i#98948 : nat, i#98955 : nat, x : idx, ao : memarg} {{"v128.load32x2_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => `VLOAD`_instr{`vectype?#33`, memidx#318, memarg#221}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#2087, M#434, sx#15993, i#98948}(`%`_sz{i#98955}(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) + prod{`vectype?#34` : vectype?, memidx#320 : memidx, memarg#223 : memarg, sz#2134 : sz, i#99018 : nat, x : idx, ao : memarg} {{"v128.load8_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => `VLOAD`_instr{`vectype?#34`, memidx#320, memarg#223}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#2134}(`%`_sz{i#99018}(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) + prod{`vectype?#35` : vectype?, memidx#322 : memidx, memarg#225 : memarg, sz#2181 : sz, i#99081 : nat, x : idx, ao : memarg} {{"v128.load16_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => `VLOAD`_instr{`vectype?#35`, memidx#322, memarg#225}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#2181}(`%`_sz{i#99081}(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) + prod{`vectype?#36` : vectype?, memidx#324 : memidx, memarg#227 : memarg, sz#2228 : sz, i#99144 : nat, x : idx, ao : memarg} {{"v128.load32_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => `VLOAD`_instr{`vectype?#36`, memidx#324, memarg#227}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#2228}(`%`_sz{i#99144}(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) + prod{`vectype?#37` : vectype?, memidx#326 : memidx, memarg#229 : memarg, sz#2275 : sz, i#99207 : nat, x : idx, ao : memarg} {{"v128.load64_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => `VLOAD`_instr{`vectype?#37`, memidx#326, memarg#229}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#2275}(`%`_sz{i#99207}(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) + prod{`vectype?#38` : vectype?, memidx#328 : memidx, memarg#231 : memarg, sz#2322 : sz, i#99264 : nat, i#99271 : nat, x : idx, ao : memarg} {{"v128.load32_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => `VLOAD`_instr{`vectype?#38`, memidx#328, memarg#231}(`V128`_vectype, ?(`ZERO`_vloadop_{sz#2322, i#99264}(`%`_sz{i#99271}(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) + prod{`vectype?#39` : vectype?, memidx#330 : memidx, memarg#233 : memarg, sz#2369 : sz, i#99328 : nat, i#99335 : nat, x : idx, ao : memarg} {{"v128.load64_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => `VLOAD`_instr{`vectype?#39`, memidx#330, memarg#233}(`V128`_vectype, ?(`ZERO`_vloadop_{sz#2369, i#99328}(`%`_sz{i#99335}(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) + prod{vectype#286 : vectype, sz#2371 : sz, memidx#332 : memidx, memarg#235 : memarg, laneidx#75 : laneidx, i#99391 : nat, x : idx, ao : memarg, i : laneidx} {{"v128.load8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => `VLOAD_LANE`_instr{vectype#286, sz#2371, memidx#332, memarg#235, laneidx#75}(`V128`_vectype, `%`_sz{i#99391}(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) + prod{vectype#288 : vectype, sz#2373 : sz, memidx#334 : memidx, memarg#237 : memarg, laneidx#77 : laneidx, i#99459 : nat, x : idx, ao : memarg, i : laneidx} {{"v128.load16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => `VLOAD_LANE`_instr{vectype#288, sz#2373, memidx#334, memarg#237, laneidx#77}(`V128`_vectype, `%`_sz{i#99459}(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) + prod{vectype#290 : vectype, sz#2375 : sz, memidx#336 : memidx, memarg#239 : memarg, laneidx#79 : laneidx, i#99527 : nat, x : idx, ao : memarg, i : laneidx} {{"v128.load32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => `VLOAD_LANE`_instr{vectype#290, sz#2375, memidx#336, memarg#239, laneidx#79}(`V128`_vectype, `%`_sz{i#99527}(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) + prod{vectype#292 : vectype, sz#2377 : sz, memidx#338 : memidx, memarg#241 : memarg, laneidx#81 : laneidx, i#99595 : nat, x : idx, ao : memarg, i : laneidx} {{"v128.load64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => `VLOAD_LANE`_instr{vectype#292, sz#2377, memidx#338, memarg#241, laneidx#81}(`V128`_vectype, `%`_sz{i#99595}(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) + prod{`numtype?#58` : numtype?, memidx#340 : memidx, memarg#243 : memarg, x : idx, ao : memarg} {{"i32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => `STORE`_instr{`numtype?#58`, memidx#340, memarg#243}(`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) + prod{`numtype?#59` : numtype?, memidx#342 : memidx, memarg#245 : memarg, x : idx, ao : memarg} {{"i64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => `STORE`_instr{`numtype?#59`, memidx#342, memarg#245}(`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) + prod{`numtype?#60` : numtype?, memidx#344 : memidx, memarg#247 : memarg, x : idx, ao : memarg} {{"f32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => `STORE`_instr{`numtype?#60`, memidx#344, memarg#247}(`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) + prod{`numtype?#61` : numtype?, memidx#346 : memidx, memarg#249 : memarg, x : idx, ao : memarg} {{"f64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => `STORE`_instr{`numtype?#61`, memidx#346, memarg#249}(`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) + prod{`numtype?#62` : numtype?, memidx#348 : memidx, memarg#251 : memarg, sz#2390 : sz, i#99803 : nat, i#99804 : nat, x : idx, ao : memarg} {{"i32.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => `STORE`_instr{`numtype?#62`, memidx#348, memarg#251}(`I32`_numtype, ?(`%`_storeop_{sz#2390, i#99803}(`%`_sz{i#99804}(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) + prod{`numtype?#63` : numtype?, memidx#350 : memidx, memarg#253 : memarg, sz#2403 : sz, i#99876 : nat, i#99877 : nat, x : idx, ao : memarg} {{"i32.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => `STORE`_instr{`numtype?#63`, memidx#350, memarg#253}(`I32`_numtype, ?(`%`_storeop_{sz#2403, i#99876}(`%`_sz{i#99877}(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) + prod{`numtype?#64` : numtype?, memidx#352 : memidx, memarg#255 : memarg, sz#2416 : sz, i#99949 : nat, i#99950 : nat, x : idx, ao : memarg} {{"i64.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => `STORE`_instr{`numtype?#64`, memidx#352, memarg#255}(`I64`_numtype, ?(`%`_storeop_{sz#2416, i#99949}(`%`_sz{i#99950}(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) + prod{`numtype?#65` : numtype?, memidx#354 : memidx, memarg#257 : memarg, sz#2429 : sz, i#100022 : nat, i#100023 : nat, x : idx, ao : memarg} {{"i64.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => `STORE`_instr{`numtype?#65`, memidx#354, memarg#257}(`I64`_numtype, ?(`%`_storeop_{sz#2429, i#100022}(`%`_sz{i#100023}(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) + prod{`numtype?#66` : numtype?, memidx#356 : memidx, memarg#259 : memarg, sz#2442 : sz, i#100095 : nat, i#100096 : nat, x : idx, ao : memarg} {{"i64.store32"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => `STORE`_instr{`numtype?#66`, memidx#356, memarg#259}(`I64`_numtype, ?(`%`_storeop_{sz#2442, i#100095}(`%`_sz{i#100096}(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) + prod{vectype#294 : vectype, memidx#358 : memidx, memarg#261 : memarg, x : idx, ao : memarg} {{"v128.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => `VSTORE`_instr{vectype#294, memidx#358, memarg#261}(`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) + prod{vectype#296 : vectype, sz#2444 : sz, memidx#360 : memidx, memarg#263 : memarg, laneidx#83 : laneidx, i#100183 : nat, x : idx, ao : memarg, i : laneidx} {{"v128.store8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => `VSTORE_LANE`_instr{vectype#296, sz#2444, memidx#360, memarg#263, laneidx#83}(`V128`_vectype, `%`_sz{i#100183}(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) + prod{vectype#298 : vectype, sz#2446 : sz, memidx#362 : memidx, memarg#265 : memarg, laneidx#85 : laneidx, i#100251 : nat, x : idx, ao : memarg, i : laneidx} {{"v128.store16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => `VSTORE_LANE`_instr{vectype#298, sz#2446, memidx#362, memarg#265, laneidx#85}(`V128`_vectype, `%`_sz{i#100251}(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) + prod{vectype#300 : vectype, sz#2448 : sz, memidx#364 : memidx, memarg#267 : memarg, laneidx#87 : laneidx, i#100319 : nat, x : idx, ao : memarg, i : laneidx} {{"v128.store32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => `VSTORE_LANE`_instr{vectype#300, sz#2448, memidx#364, memarg#267, laneidx#87}(`V128`_vectype, `%`_sz{i#100319}(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) + prod{vectype#302 : vectype, sz#2450 : sz, memidx#366 : memidx, memarg#269 : memarg, laneidx#89 : laneidx, i#100387 : nat, x : idx, ao : memarg, i : laneidx} {{"v128.store64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => `VSTORE_LANE`_instr{vectype#302, sz#2450, memidx#366, memarg#269, laneidx#89}(`V128`_vectype, `%`_sz{i#100387}(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) + prod{memidx#368 : memidx, x : idx} {{"memory.size"} {x:Tmemidx_(I)}} => `MEMORY.SIZE`_instr{memidx#368}(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.grow"} {x:Tmemidx_(I)}} => MEMORY.GROW_instr(x) + prod{memidx#370 : memidx, x : idx} {{"memory.grow"} {x:Tmemidx_(I)}} => `MEMORY.GROW`_instr{memidx#370}(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.fill"} {x:Tmemidx_(I)}} => MEMORY.FILL_instr(x) + prod{memidx#372 : memidx, x : idx} {{"memory.fill"} {x:Tmemidx_(I)}} => `MEMORY.FILL`_instr{memidx#372}(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) + prod{memidx#374 : memidx, x_1 : idx, x_2 : idx} {{"memory.copy"} {x_1:Tmemidx_(I)} {x_2:Tmemidx_(I)}} => `MEMORY.COPY`_instr{memidx#374}(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) + prod{memidx#377 : memidx, dataidx#55 : dataidx, x : idx, y : idx} {{"memory.init"} {x:Tmemidx_(I)} {y:Tdataidx_(I)}} => `MEMORY.INIT`_instr{memidx#377, dataidx#55}(x, y) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"data.drop"} {x:Tdataidx_(I)}} => DATA.DROP_instr(x) + prod{dataidx#57 : dataidx, x : idx} {{"data.drop"} {x:Tdataidx_(I)}} => `DATA.DROP`_instr{dataidx#57}(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{ht : heaptype} {{"ref.null"} {ht:Theaptype_(I)}} => REF.NULL_instr(ht) + prod{heaptype#1929 : heaptype, ht : heaptype} {{"ref.null"} {ht:Theaptype_(I)}} => `REF.NULL`_instr{heaptype#1929}(ht) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"ref.func"} {x:Tfuncidx_(I)}} => REF.FUNC_instr(x) + prod{funcidx#3387 : funcidx, x : idx} {{"ref.func"} {x:Tfuncidx_(I)}} => `REF.FUNC`_instr{funcidx#3387}(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.is_null" => REF.IS_NULL_instr + 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 + 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 + 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) + prod{reftype#4311 : reftype, rt : reftype} {{"ref.test"} {rt:Treftype_(I)}} => `REF.TEST`_instr{reftype#4311}(rt) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{rt : reftype} {{"ref.cast"} {rt:Treftype_(I)}} => REF.CAST_instr(rt) + prod{reftype#4313 : reftype, rt : reftype} {{"ref.cast"} {rt:Treftype_(I)}} => `REF.CAST`_instr{reftype#4313}(rt) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.i31" => REF.I31_instr + prod "ref.i31" => `REF.I31`_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i31.get_s" => I31.GET_instr(S_sx) + prod{sx#16085 : sx} "i31.get_s" => `I31.GET`_instr{sx#16085}(`S`_sx) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i31.get_u" => I31.GET_instr(U_sx) + prod{sx#16087 : sx} "i31.get_u" => `I31.GET`_instr{sx#16087}(`U`_sx) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"struct.new"} {x:Ttypeidx_(I)}} => STRUCT.NEW_instr(x) + prod{typeidx#2137 : typeidx, x : idx} {{"struct.new"} {x:Ttypeidx_(I)}} => `STRUCT.NEW`_instr{typeidx#2137}(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"struct.new_default"} {x:Ttypeidx_(I)}} => STRUCT.NEW_DEFAULT_instr(x) + prod{typeidx#2139 : typeidx, x : idx} {{"struct.new_default"} {x:Ttypeidx_(I)}} => `STRUCT.NEW_DEFAULT`_instr{typeidx#2139}(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) + prod{`sx?#59` : sx?, typeidx#2141 : typeidx, u32#48 : u32, x : idx, i : fieldidx} {{"struct.get"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.GET`_instr{`sx?#59`, typeidx#2141, u32#48}(?(), 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) + prod{`sx?#61` : sx?, typeidx#2143 : typeidx, u32#50 : u32, x : idx, i : fieldidx} {{"struct.get_s"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.GET`_instr{`sx?#61`, typeidx#2143, u32#50}(?(`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) + prod{`sx?#63` : sx?, typeidx#2145 : typeidx, u32#52 : u32, x : idx, i : fieldidx} {{"struct.get_u"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.GET`_instr{`sx?#63`, typeidx#2145, u32#52}(?(`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) + prod{typeidx#2147 : typeidx, u32#54 : u32, x : idx, i : fieldidx} {{"struct.set"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.SET`_instr{typeidx#2147, u32#54}(x, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.new"} {x:Ttypeidx_(I)}} => ARRAY.NEW_instr(x) + prod{typeidx#2149 : typeidx, x : idx} {{"array.new"} {x:Ttypeidx_(I)}} => `ARRAY.NEW`_instr{typeidx#2149}(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.new_default"} {x:Ttypeidx_(I)}} => ARRAY.NEW_DEFAULT_instr(x) + prod{typeidx#2151 : typeidx, x : idx} {{"array.new_default"} {x:Ttypeidx_(I)}} => `ARRAY.NEW_DEFAULT`_instr{typeidx#2151}(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)) + prod{typeidx#2153 : typeidx, u32#56 : u32, x : idx, i#101306 : nat, n : n, i#101266 : nat} {{"array.new_fixed"} {x:Ttypeidx_(I)} {`%`_u32{i#101266}(n):Tu32}} => `ARRAY.NEW_FIXED`_instr{typeidx#2153, u32#56}(x, `%`_u32{i#101306}(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) + prod{typeidx#2155 : typeidx, dataidx#59 : dataidx, x : idx, y : idx} {{"array.new_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => `ARRAY.NEW_DATA`_instr{typeidx#2155, dataidx#59}(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) + prod{typeidx#2157 : typeidx, elemidx#61 : elemidx, x : idx, y : idx} {{"array.new_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => `ARRAY.NEW_ELEM`_instr{typeidx#2157, elemidx#61}(x, y) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(), x) + prod{`sx?#65` : sx?, typeidx#2159 : typeidx, x : idx} {{"array.get"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr{`sx?#65`, typeidx#2159}(?(), 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) + prod{`sx?#67` : sx?, typeidx#2161 : typeidx, x : idx} {{"array.get_s"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr{`sx?#67`, typeidx#2161}(?(`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) + prod{`sx?#69` : sx?, typeidx#2163 : typeidx, x : idx} {{"array.get_u"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr{`sx?#69`, typeidx#2163}(?(`U`_sx), x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.set"} {x:Ttypeidx_(I)}} => ARRAY.SET_instr(x) + prod{typeidx#2165 : typeidx, x : idx} {{"array.set"} {x:Ttypeidx_(I)}} => `ARRAY.SET`_instr{typeidx#2165}(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "array.len" => ARRAY.LEN_instr + 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) + prod{typeidx#2167 : typeidx, x : idx} {{"array.fill"} {x:Ttypeidx_(I)}} => `ARRAY.FILL`_instr{typeidx#2167}(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) + prod{typeidx#2169 : typeidx, x_1 : idx, x_2 : idx} {{"array.copy"} {x_1:Ttypeidx_(I)} {x_2:Ttypeidx_(I)}} => `ARRAY.COPY`_instr{typeidx#2169}(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) + prod{typeidx#2172 : typeidx, dataidx#61 : dataidx, x : idx, y : idx} {{"array.init_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => `ARRAY.INIT_DATA`_instr{typeidx#2172, dataidx#61}(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) + prod{typeidx#2174 : typeidx, elemidx#63 : elemidx, x : idx, y : idx} {{"array.init_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => `ARRAY.INIT_ELEM`_instr{typeidx#2174, elemidx#63}(x, y) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "any.convert_extern" => ANY.CONVERT_EXTERN_instr + 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 + 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) + prod{numtype#891 : numtype, c : u32} {{"i32.const"} {c:Ti32}} => `CONST`_instr{numtype#891}(`I32`_numtype, c) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : u64} {{"i64.const"} {c:Ti64}} => CONST_instr(I64_numtype, c) + prod{numtype#893 : numtype, c : u64} {{"i64.const"} {c:Ti64}} => `CONST`_instr{numtype#893}(`I64`_numtype, c) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : f32} {{"f32.const"} {c:Tf32}} => CONST_instr(F32_numtype, c) + prod{numtype#895 : numtype, c : f32} {{"f32.const"} {c:Tf32}} => `CONST`_instr{numtype#895}(`F32`_numtype, c) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{c : f64} {{"f64.const"} {c:Tf64}} => CONST_instr(F64_numtype, c) + prod{numtype#897 : numtype, c : f64} {{"f64.const"} {c:Tf64}} => `CONST`_instr{numtype#897}(`F64`_numtype, c) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.eqz" => TESTOP_instr(I32_numtype, EQZ_testop_) + prod{numtype#899 : numtype} "i32.eqz" => `TESTOP`_instr{numtype#899}(`I32`_numtype, `EQZ`_testop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.eqz" => TESTOP_instr(I64_numtype, EQZ_testop_) + prod{numtype#901 : numtype} "i64.eqz" => `TESTOP`_instr{numtype#901}(`I64`_numtype, `EQZ`_testop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.eq" => RELOP_instr(I32_numtype, EQ_relop_) + prod{numtype#903 : numtype} "i32.eq" => `RELOP`_instr{numtype#903}(`I32`_numtype, `EQ`_relop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ne" => RELOP_instr(I32_numtype, NE_relop_) + prod{numtype#905 : numtype} "i32.ne" => `RELOP`_instr{numtype#905}(`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)) + prod{numtype#907 : numtype, sx#16331 : sx} "i32.lt_s" => `RELOP`_instr{numtype#907}(`I32`_numtype, `LT`_relop_{sx#16331}(`S`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.lt_u" => RELOP_instr(I32_numtype, LT_relop_(U_sx)) + prod{numtype#909 : numtype, sx#16455 : sx} "i32.lt_u" => `RELOP`_instr{numtype#909}(`I32`_numtype, `LT`_relop_{sx#16455}(`U`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.gt_s" => RELOP_instr(I32_numtype, GT_relop_(S_sx)) + prod{numtype#911 : numtype, sx#16579 : sx} "i32.gt_s" => `RELOP`_instr{numtype#911}(`I32`_numtype, `GT`_relop_{sx#16579}(`S`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.gt_u" => RELOP_instr(I32_numtype, GT_relop_(U_sx)) + prod{numtype#913 : numtype, sx#16703 : sx} "i32.gt_u" => `RELOP`_instr{numtype#913}(`I32`_numtype, `GT`_relop_{sx#16703}(`U`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.le_s" => RELOP_instr(I32_numtype, LE_relop_(S_sx)) + prod{numtype#915 : numtype, sx#16827 : sx} "i32.le_s" => `RELOP`_instr{numtype#915}(`I32`_numtype, `LE`_relop_{sx#16827}(`S`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.le_u" => RELOP_instr(I32_numtype, LE_relop_(U_sx)) + prod{numtype#917 : numtype, sx#16951 : sx} "i32.le_u" => `RELOP`_instr{numtype#917}(`I32`_numtype, `LE`_relop_{sx#16951}(`U`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ge_s" => RELOP_instr(I32_numtype, GE_relop_(S_sx)) + prod{numtype#919 : numtype, sx#17075 : sx} "i32.ge_s" => `RELOP`_instr{numtype#919}(`I32`_numtype, `GE`_relop_{sx#17075}(`S`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ge_u" => RELOP_instr(I32_numtype, GE_relop_(U_sx)) + prod{numtype#921 : numtype, sx#17199 : sx} "i32.ge_u" => `RELOP`_instr{numtype#921}(`I32`_numtype, `GE`_relop_{sx#17199}(`U`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.eq" => RELOP_instr(I64_numtype, EQ_relop_) + prod{numtype#923 : numtype} "i64.eq" => `RELOP`_instr{numtype#923}(`I64`_numtype, `EQ`_relop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ne" => RELOP_instr(I64_numtype, NE_relop_) + prod{numtype#925 : numtype} "i64.ne" => `RELOP`_instr{numtype#925}(`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)) + prod{numtype#927 : numtype, sx#17443 : sx} "i64.lt_s" => `RELOP`_instr{numtype#927}(`I64`_numtype, `LT`_relop_{sx#17443}(`S`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.lt_u" => RELOP_instr(I64_numtype, LT_relop_(U_sx)) + prod{numtype#929 : numtype, sx#17567 : sx} "i64.lt_u" => `RELOP`_instr{numtype#929}(`I64`_numtype, `LT`_relop_{sx#17567}(`U`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.gt_s" => RELOP_instr(I64_numtype, GT_relop_(S_sx)) + prod{numtype#931 : numtype, sx#17691 : sx} "i64.gt_s" => `RELOP`_instr{numtype#931}(`I64`_numtype, `GT`_relop_{sx#17691}(`S`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.gt_u" => RELOP_instr(I64_numtype, GT_relop_(U_sx)) + prod{numtype#933 : numtype, sx#17815 : sx} "i64.gt_u" => `RELOP`_instr{numtype#933}(`I64`_numtype, `GT`_relop_{sx#17815}(`U`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.le_s" => RELOP_instr(I64_numtype, LE_relop_(S_sx)) + prod{numtype#935 : numtype, sx#17939 : sx} "i64.le_s" => `RELOP`_instr{numtype#935}(`I64`_numtype, `LE`_relop_{sx#17939}(`S`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.le_u" => RELOP_instr(I64_numtype, LE_relop_(U_sx)) + prod{numtype#937 : numtype, sx#18063 : sx} "i64.le_u" => `RELOP`_instr{numtype#937}(`I64`_numtype, `LE`_relop_{sx#18063}(`U`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ge_s" => RELOP_instr(I64_numtype, GE_relop_(S_sx)) + prod{numtype#939 : numtype, sx#18187 : sx} "i64.ge_s" => `RELOP`_instr{numtype#939}(`I64`_numtype, `GE`_relop_{sx#18187}(`S`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ge_u" => RELOP_instr(I64_numtype, GE_relop_(U_sx)) + prod{numtype#941 : numtype, sx#18311 : sx} "i64.ge_u" => `RELOP`_instr{numtype#941}(`I64`_numtype, `GE`_relop_{sx#18311}(`U`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.eq" => RELOP_instr(F32_numtype, EQ_relop_) + prod{numtype#943 : numtype} "f32.eq" => `RELOP`_instr{numtype#943}(`F32`_numtype, `EQ`_relop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.ne" => RELOP_instr(F32_numtype, NE_relop_) + prod{numtype#945 : numtype} "f32.ne" => `RELOP`_instr{numtype#945}(`F32`_numtype, `NE`_relop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.lt" => RELOP_instr(F32_numtype, LT_relop_) + prod{numtype#947 : numtype} "f32.lt" => `RELOP`_instr{numtype#947}(`F32`_numtype, `LT`_relop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.gt" => RELOP_instr(F32_numtype, GT_relop_) + prod{numtype#949 : numtype} "f32.gt" => `RELOP`_instr{numtype#949}(`F32`_numtype, `GT`_relop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.le" => RELOP_instr(F32_numtype, LE_relop_) + prod{numtype#951 : numtype} "f32.le" => `RELOP`_instr{numtype#951}(`F32`_numtype, `LE`_relop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.ge" => RELOP_instr(F32_numtype, GE_relop_) + prod{numtype#953 : numtype} "f32.ge" => `RELOP`_instr{numtype#953}(`F32`_numtype, `GE`_relop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.eq" => RELOP_instr(F64_numtype, EQ_relop_) + prod{numtype#955 : numtype} "f64.eq" => `RELOP`_instr{numtype#955}(`F64`_numtype, `EQ`_relop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.ne" => RELOP_instr(F64_numtype, NE_relop_) + prod{numtype#957 : numtype} "f64.ne" => `RELOP`_instr{numtype#957}(`F64`_numtype, `NE`_relop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.lt" => RELOP_instr(F64_numtype, LT_relop_) + prod{numtype#959 : numtype} "f64.lt" => `RELOP`_instr{numtype#959}(`F64`_numtype, `LT`_relop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.gt" => RELOP_instr(F64_numtype, GT_relop_) + prod{numtype#961 : numtype} "f64.gt" => `RELOP`_instr{numtype#961}(`F64`_numtype, `GT`_relop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.le" => RELOP_instr(F64_numtype, LE_relop_) + prod{numtype#963 : numtype} "f64.le" => `RELOP`_instr{numtype#963}(`F64`_numtype, `LE`_relop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.ge" => RELOP_instr(F64_numtype, GE_relop_) + prod{numtype#965 : numtype} "f64.ge" => `RELOP`_instr{numtype#965}(`F64`_numtype, `GE`_relop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.clz" => UNOP_instr(I32_numtype, CLZ_unop_) + prod{numtype#967 : numtype} "i32.clz" => `UNOP`_instr{numtype#967}(`I32`_numtype, `CLZ`_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.ctz" => UNOP_instr(I32_numtype, CTZ_unop_) + prod{numtype#969 : numtype} "i32.ctz" => `UNOP`_instr{numtype#969}(`I32`_numtype, `CTZ`_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.popcnt" => UNOP_instr(I32_numtype, POPCNT_unop_) + prod{numtype#971 : numtype} "i32.popcnt" => `UNOP`_instr{numtype#971}(`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))) + prod{numtype#973 : numtype, sz#2529 : sz, i#101930 : nat, i#101937 : nat} "i32.extend8_s" => `UNOP`_instr{numtype#973}(`I32`_numtype, `EXTEND`_unop_{sz#2529, i#101930}(`%`_sz{i#101937}(8))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.extend16_s" => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(16))) + prod{numtype#975 : numtype, sz#2563 : sz, i#101946 : nat, i#101953 : nat} "i32.extend16_s" => `UNOP`_instr{numtype#975}(`I32`_numtype, `EXTEND`_unop_{sz#2563, i#101946}(`%`_sz{i#101953}(16))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.clz" => UNOP_instr(I64_numtype, CLZ_unop_) + prod{numtype#977 : numtype} "i64.clz" => `UNOP`_instr{numtype#977}(`I64`_numtype, `CLZ`_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.ctz" => UNOP_instr(I64_numtype, CTZ_unop_) + prod{numtype#979 : numtype} "i64.ctz" => `UNOP`_instr{numtype#979}(`I64`_numtype, `CTZ`_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.popcnt" => UNOP_instr(I64_numtype, POPCNT_unop_) + prod{numtype#981 : numtype} "i64.popcnt" => `UNOP`_instr{numtype#981}(`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))) + prod{numtype#983 : numtype, sz#2642 : sz, i#101962 : nat, i#101969 : nat} "i64.extend8_s" => `UNOP`_instr{numtype#983}(`I64`_numtype, `EXTEND`_unop_{sz#2642, i#101962}(`%`_sz{i#101969}(8))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend16_s" => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(16))) + prod{numtype#985 : numtype, sz#2676 : sz, i#101978 : nat, i#101985 : nat} "i64.extend16_s" => `UNOP`_instr{numtype#985}(`I64`_numtype, `EXTEND`_unop_{sz#2676, i#101978}(`%`_sz{i#101985}(16))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend32_s" => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(32))) + prod{numtype#987 : numtype, sz#2710 : sz, i#101994 : nat, i#102001 : nat} "i64.extend32_s" => `UNOP`_instr{numtype#987}(`I64`_numtype, `EXTEND`_unop_{sz#2710, i#101994}(`%`_sz{i#102001}(32))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.abs" => UNOP_instr(F32_numtype, ABS_unop_) + prod{numtype#989 : numtype} "f32.abs" => `UNOP`_instr{numtype#989}(`F32`_numtype, `ABS`_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.neg" => UNOP_instr(F32_numtype, NEG_unop_) + prod{numtype#991 : numtype} "f32.neg" => `UNOP`_instr{numtype#991}(`F32`_numtype, `NEG`_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.sqrt" => UNOP_instr(F32_numtype, SQRT_unop_) + prod{numtype#993 : numtype} "f32.sqrt" => `UNOP`_instr{numtype#993}(`F32`_numtype, `SQRT`_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.ceil" => UNOP_instr(F32_numtype, CEIL_unop_) + prod{numtype#995 : numtype} "f32.ceil" => `UNOP`_instr{numtype#995}(`F32`_numtype, `CEIL`_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.floor" => UNOP_instr(F32_numtype, FLOOR_unop_) + prod{numtype#997 : numtype} "f32.floor" => `UNOP`_instr{numtype#997}(`F32`_numtype, `FLOOR`_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.trunc" => UNOP_instr(F32_numtype, TRUNC_unop_) + prod{numtype#999 : numtype} "f32.trunc" => `UNOP`_instr{numtype#999}(`F32`_numtype, `TRUNC`_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.nearest" => UNOP_instr(F32_numtype, NEAREST_unop_) + prod{numtype#1001 : numtype} "f32.nearest" => `UNOP`_instr{numtype#1001}(`F32`_numtype, `NEAREST`_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.abs" => UNOP_instr(F64_numtype, ABS_unop_) + prod{numtype#1003 : numtype} "f64.abs" => `UNOP`_instr{numtype#1003}(`F64`_numtype, `ABS`_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.neg" => UNOP_instr(F64_numtype, NEG_unop_) + prod{numtype#1005 : numtype} "f64.neg" => `UNOP`_instr{numtype#1005}(`F64`_numtype, `NEG`_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.sqrt" => UNOP_instr(F64_numtype, SQRT_unop_) + prod{numtype#1007 : numtype} "f64.sqrt" => `UNOP`_instr{numtype#1007}(`F64`_numtype, `SQRT`_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.ceil" => UNOP_instr(F64_numtype, CEIL_unop_) + prod{numtype#1009 : numtype} "f64.ceil" => `UNOP`_instr{numtype#1009}(`F64`_numtype, `CEIL`_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.floor" => UNOP_instr(F64_numtype, FLOOR_unop_) + prod{numtype#1011 : numtype} "f64.floor" => `UNOP`_instr{numtype#1011}(`F64`_numtype, `FLOOR`_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.trunc" => UNOP_instr(F64_numtype, TRUNC_unop_) + prod{numtype#1013 : numtype} "f64.trunc" => `UNOP`_instr{numtype#1013}(`F64`_numtype, `TRUNC`_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.nearest" => UNOP_instr(F64_numtype, NEAREST_unop_) + prod{numtype#1015 : numtype} "f64.nearest" => `UNOP`_instr{numtype#1015}(`F64`_numtype, `NEAREST`_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.add" => BINOP_instr(I32_numtype, ADD_binop_) + prod{numtype#1017 : numtype} "i32.add" => `BINOP`_instr{numtype#1017}(`I32`_numtype, `ADD`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.sub" => BINOP_instr(I32_numtype, SUB_binop_) + prod{numtype#1019 : numtype} "i32.sub" => `BINOP`_instr{numtype#1019}(`I32`_numtype, `SUB`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.mul" => BINOP_instr(I32_numtype, MUL_binop_) + prod{numtype#1021 : numtype} "i32.mul" => `BINOP`_instr{numtype#1021}(`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)) + prod{numtype#1023 : numtype, sx#18540 : sx} "i32.div_s" => `BINOP`_instr{numtype#1023}(`I32`_numtype, `DIV`_binop_{sx#18540}(`S`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.div_u" => BINOP_instr(I32_numtype, DIV_binop_(U_sx)) + prod{numtype#1025 : numtype, sx#18634 : sx} "i32.div_u" => `BINOP`_instr{numtype#1025}(`I32`_numtype, `DIV`_binop_{sx#18634}(`U`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rem_s" => BINOP_instr(I32_numtype, REM_binop_(S_sx)) + prod{numtype#1027 : numtype, sx#18728 : sx} "i32.rem_s" => `BINOP`_instr{numtype#1027}(`I32`_numtype, `REM`_binop_{sx#18728}(`S`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rem_u" => BINOP_instr(I32_numtype, REM_binop_(U_sx)) + prod{numtype#1029 : numtype, sx#18822 : sx} "i32.rem_u" => `BINOP`_instr{numtype#1029}(`I32`_numtype, `REM`_binop_{sx#18822}(`U`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.and" => BINOP_instr(I32_numtype, AND_binop_) + prod{numtype#1031 : numtype} "i32.and" => `BINOP`_instr{numtype#1031}(`I32`_numtype, `AND`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.or" => BINOP_instr(I32_numtype, OR_binop_) + prod{numtype#1033 : numtype} "i32.or" => `BINOP`_instr{numtype#1033}(`I32`_numtype, `OR`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.xor" => BINOP_instr(I32_numtype, XOR_binop_) + prod{numtype#1035 : numtype} "i32.xor" => `BINOP`_instr{numtype#1035}(`I32`_numtype, `XOR`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.shl" => BINOP_instr(I32_numtype, SHL_binop_) + prod{numtype#1037 : numtype} "i32.shl" => `BINOP`_instr{numtype#1037}(`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)) + prod{numtype#1039 : numtype, sx#19096 : sx} "i32.shr_s" => `BINOP`_instr{numtype#1039}(`I32`_numtype, `SHR`_binop_{sx#19096}(`S`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.shr_u" => BINOP_instr(I32_numtype, SHR_binop_(U_sx)) + prod{numtype#1041 : numtype, sx#19190 : sx} "i32.shr_u" => `BINOP`_instr{numtype#1041}(`I32`_numtype, `SHR`_binop_{sx#19190}(`U`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rotl" => BINOP_instr(I32_numtype, ROTL_binop_) + prod{numtype#1043 : numtype} "i32.rotl" => `BINOP`_instr{numtype#1043}(`I32`_numtype, `ROTL`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.rotr" => BINOP_instr(I32_numtype, ROTR_binop_) + prod{numtype#1045 : numtype} "i32.rotr" => `BINOP`_instr{numtype#1045}(`I32`_numtype, `ROTR`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.add" => BINOP_instr(I64_numtype, ADD_binop_) + prod{numtype#1047 : numtype} "i64.add" => `BINOP`_instr{numtype#1047}(`I64`_numtype, `ADD`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.sub" => BINOP_instr(I64_numtype, SUB_binop_) + prod{numtype#1049 : numtype} "i64.sub" => `BINOP`_instr{numtype#1049}(`I64`_numtype, `SUB`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.mul" => BINOP_instr(I64_numtype, MUL_binop_) + prod{numtype#1051 : numtype} "i64.mul" => `BINOP`_instr{numtype#1051}(`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)) + prod{numtype#1053 : numtype, sx#19509 : sx} "i64.div_s" => `BINOP`_instr{numtype#1053}(`I64`_numtype, `DIV`_binop_{sx#19509}(`S`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.div_u" => BINOP_instr(I64_numtype, DIV_binop_(U_sx)) + prod{numtype#1055 : numtype, sx#19603 : sx} "i64.div_u" => `BINOP`_instr{numtype#1055}(`I64`_numtype, `DIV`_binop_{sx#19603}(`U`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rem_s" => BINOP_instr(I64_numtype, REM_binop_(S_sx)) + prod{numtype#1057 : numtype, sx#19697 : sx} "i64.rem_s" => `BINOP`_instr{numtype#1057}(`I64`_numtype, `REM`_binop_{sx#19697}(`S`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rem_u" => BINOP_instr(I64_numtype, REM_binop_(U_sx)) + prod{numtype#1059 : numtype, sx#19791 : sx} "i64.rem_u" => `BINOP`_instr{numtype#1059}(`I64`_numtype, `REM`_binop_{sx#19791}(`U`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.and" => BINOP_instr(I64_numtype, AND_binop_) + prod{numtype#1061 : numtype} "i64.and" => `BINOP`_instr{numtype#1061}(`I64`_numtype, `AND`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.or" => BINOP_instr(I64_numtype, OR_binop_) + prod{numtype#1063 : numtype} "i64.or" => `BINOP`_instr{numtype#1063}(`I64`_numtype, `OR`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.xor" => BINOP_instr(I64_numtype, XOR_binop_) + prod{numtype#1065 : numtype} "i64.xor" => `BINOP`_instr{numtype#1065}(`I64`_numtype, `XOR`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.shl" => BINOP_instr(I64_numtype, SHL_binop_) + prod{numtype#1067 : numtype} "i64.shl" => `BINOP`_instr{numtype#1067}(`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)) + prod{numtype#1069 : numtype, sx#20065 : sx} "i64.shr_s" => `BINOP`_instr{numtype#1069}(`I64`_numtype, `SHR`_binop_{sx#20065}(`S`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.shr_u" => BINOP_instr(I64_numtype, SHR_binop_(U_sx)) + prod{numtype#1071 : numtype, sx#20159 : sx} "i64.shr_u" => `BINOP`_instr{numtype#1071}(`I64`_numtype, `SHR`_binop_{sx#20159}(`U`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rotl" => BINOP_instr(I64_numtype, ROTL_binop_) + prod{numtype#1073 : numtype} "i64.rotl" => `BINOP`_instr{numtype#1073}(`I64`_numtype, `ROTL`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.rotr" => BINOP_instr(I64_numtype, ROTR_binop_) + prod{numtype#1075 : numtype} "i64.rotr" => `BINOP`_instr{numtype#1075}(`I64`_numtype, `ROTR`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.add" => BINOP_instr(F32_numtype, ADD_binop_) + prod{numtype#1077 : numtype} "f32.add" => `BINOP`_instr{numtype#1077}(`F32`_numtype, `ADD`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.sub" => BINOP_instr(F32_numtype, SUB_binop_) + prod{numtype#1079 : numtype} "f32.sub" => `BINOP`_instr{numtype#1079}(`F32`_numtype, `SUB`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.mul" => BINOP_instr(F32_numtype, MUL_binop_) + prod{numtype#1081 : numtype} "f32.mul" => `BINOP`_instr{numtype#1081}(`F32`_numtype, `MUL`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.div" => BINOP_instr(F32_numtype, DIV_binop_) + prod{numtype#1083 : numtype} "f32.div" => `BINOP`_instr{numtype#1083}(`F32`_numtype, `DIV`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.min" => BINOP_instr(F32_numtype, MIN_binop_) + prod{numtype#1085 : numtype} "f32.min" => `BINOP`_instr{numtype#1085}(`F32`_numtype, `MIN`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.max" => BINOP_instr(F32_numtype, MAX_binop_) + prod{numtype#1087 : numtype} "f32.max" => `BINOP`_instr{numtype#1087}(`F32`_numtype, `MAX`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.copysign" => BINOP_instr(F32_numtype, COPYSIGN_binop_) + prod{numtype#1089 : numtype} "f32.copysign" => `BINOP`_instr{numtype#1089}(`F32`_numtype, `COPYSIGN`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.add" => BINOP_instr(F64_numtype, ADD_binop_) + prod{numtype#1091 : numtype} "f64.add" => `BINOP`_instr{numtype#1091}(`F64`_numtype, `ADD`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.sub" => BINOP_instr(F64_numtype, SUB_binop_) + prod{numtype#1093 : numtype} "f64.sub" => `BINOP`_instr{numtype#1093}(`F64`_numtype, `SUB`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.mul" => BINOP_instr(F64_numtype, MUL_binop_) + prod{numtype#1095 : numtype} "f64.mul" => `BINOP`_instr{numtype#1095}(`F64`_numtype, `MUL`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.div" => BINOP_instr(F64_numtype, DIV_binop_) + prod{numtype#1097 : numtype} "f64.div" => `BINOP`_instr{numtype#1097}(`F64`_numtype, `DIV`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.min" => BINOP_instr(F64_numtype, MIN_binop_) + prod{numtype#1099 : numtype} "f64.min" => `BINOP`_instr{numtype#1099}(`F64`_numtype, `MIN`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.max" => BINOP_instr(F64_numtype, MAX_binop_) + prod{numtype#1101 : numtype} "f64.max" => `BINOP`_instr{numtype#1101}(`F64`_numtype, `MAX`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.copysign" => BINOP_instr(F64_numtype, COPYSIGN_binop_) + prod{numtype#1103 : numtype} "f64.copysign" => `BINOP`_instr{numtype#1103}(`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__) + prod{numtype_1#75 : numtype, numtype_2#75 : numtype} "i32.wrap_i64" => `CVTOP`_instr{numtype_1#75, numtype_2#75}(`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)) + prod{numtype_1#77 : numtype, numtype_2#77 : numtype, sx#20328 : sx} "i32.trunc_f32_s" => `CVTOP`_instr{numtype_1#77, numtype_2#77}(`I32`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#20328}(`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)) + prod{numtype_1#79 : numtype, numtype_2#79 : numtype, sx#20392 : sx} "i32.trunc_f32_u" => `CVTOP`_instr{numtype_1#79, numtype_2#79}(`I32`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#20392}(`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)) + prod{numtype_1#81 : numtype, numtype_2#81 : numtype, sx#20456 : sx} "i32.trunc_f64_s" => `CVTOP`_instr{numtype_1#81, numtype_2#81}(`I32`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#20456}(`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)) + prod{numtype_1#83 : numtype, numtype_2#83 : numtype, sx#20520 : sx} "i32.trunc_f64_u" => `CVTOP`_instr{numtype_1#83, numtype_2#83}(`I32`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#20520}(`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)) + prod{numtype_1#85 : numtype, numtype_2#85 : numtype, sx#20584 : sx} "i32.trunc_sat_f32_s" => `CVTOP`_instr{numtype_1#85, numtype_2#85}(`I32`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#20584}(`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)) + prod{numtype_1#87 : numtype, numtype_2#87 : numtype, sx#20648 : sx} "i32.trunc_sat_f32_u" => `CVTOP`_instr{numtype_1#87, numtype_2#87}(`I32`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#20648}(`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)) + prod{numtype_1#89 : numtype, numtype_2#89 : numtype, sx#20712 : sx} "i32.trunc_sat_f64_s" => `CVTOP`_instr{numtype_1#89, numtype_2#89}(`I32`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#20712}(`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)) + prod{numtype_1#91 : numtype, numtype_2#91 : numtype, sx#20776 : sx} "i32.trunc_sat_f64_u" => `CVTOP`_instr{numtype_1#91, numtype_2#91}(`I32`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#20776}(`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)) + prod{numtype_1#93 : numtype, numtype_2#93 : numtype, sx#20810 : sx} "i64.extend_i64_s" => `CVTOP`_instr{numtype_1#93, numtype_2#93}(`I64`_numtype, `I64`_numtype, `EXTEND`_cvtop__{sx#20810}(`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)) + prod{numtype_1#95 : numtype, numtype_2#95 : numtype, sx#20844 : sx} "i64.extend_i64_u" => `CVTOP`_instr{numtype_1#95, numtype_2#95}(`I64`_numtype, `I64`_numtype, `EXTEND`_cvtop__{sx#20844}(`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)) + prod{numtype_1#97 : numtype, numtype_2#97 : numtype, sx#20908 : sx} "i64.trunc_f32_s" => `CVTOP`_instr{numtype_1#97, numtype_2#97}(`I64`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#20908}(`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)) + prod{numtype_1#99 : numtype, numtype_2#99 : numtype, sx#20972 : sx} "i64.trunc_f32_u" => `CVTOP`_instr{numtype_1#99, numtype_2#99}(`I64`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#20972}(`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)) + prod{numtype_1#101 : numtype, numtype_2#101 : numtype, sx#21036 : sx} "i64.trunc_f64_s" => `CVTOP`_instr{numtype_1#101, numtype_2#101}(`I64`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#21036}(`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)) + prod{numtype_1#103 : numtype, numtype_2#103 : numtype, sx#21100 : sx} "i64.trunc_f64_u" => `CVTOP`_instr{numtype_1#103, numtype_2#103}(`I64`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#21100}(`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)) + prod{numtype_1#105 : numtype, numtype_2#105 : numtype, sx#21164 : sx} "i64.trunc_sat_f32_s" => `CVTOP`_instr{numtype_1#105, numtype_2#105}(`I64`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#21164}(`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)) + prod{numtype_1#107 : numtype, numtype_2#107 : numtype, sx#21228 : sx} "i64.trunc_sat_f32_u" => `CVTOP`_instr{numtype_1#107, numtype_2#107}(`I64`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#21228}(`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)) + prod{numtype_1#109 : numtype, numtype_2#109 : numtype, sx#21292 : sx} "i64.trunc_sat_f64_s" => `CVTOP`_instr{numtype_1#109, numtype_2#109}(`I64`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#21292}(`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)) + prod{numtype_1#111 : numtype, numtype_2#111 : numtype, sx#21356 : sx} "i64.trunc_sat_f64_u" => `CVTOP`_instr{numtype_1#111, numtype_2#111}(`I64`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#21356}(`U`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32.demote_f64" => CVTOP_instr(F32_numtype, F64_numtype, DEMOTE_cvtop__) + prod{numtype_1#113 : numtype, numtype_2#113 : numtype} "f32.demote_f64" => `CVTOP`_instr{numtype_1#113, numtype_2#113}(`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)) + prod{numtype_1#115 : numtype, numtype_2#115 : numtype, sx#21390 : sx} "f32.convert_i32_s" => `CVTOP`_instr{numtype_1#115, numtype_2#115}(`F32`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#21390}(`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)) + prod{numtype_1#117 : numtype, numtype_2#117 : numtype, sx#21424 : sx} "f32.convert_i32_u" => `CVTOP`_instr{numtype_1#117, numtype_2#117}(`F32`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#21424}(`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)) + prod{numtype_1#119 : numtype, numtype_2#119 : numtype, sx#21458 : sx} "f32.convert_i64_s" => `CVTOP`_instr{numtype_1#119, numtype_2#119}(`F32`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#21458}(`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)) + prod{numtype_1#121 : numtype, numtype_2#121 : numtype, sx#21492 : sx} "f32.convert_i64_u" => `CVTOP`_instr{numtype_1#121, numtype_2#121}(`F32`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#21492}(`U`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64.promote_f32" => CVTOP_instr(F64_numtype, F32_numtype, PROMOTE_cvtop__) + prod{numtype_1#123 : numtype, numtype_2#123 : numtype} "f64.promote_f32" => `CVTOP`_instr{numtype_1#123, numtype_2#123}(`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)) + prod{numtype_1#125 : numtype, numtype_2#125 : numtype, sx#21526 : sx} "f64.convert_i32_s" => `CVTOP`_instr{numtype_1#125, numtype_2#125}(`F64`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#21526}(`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)) + prod{numtype_1#127 : numtype, numtype_2#127 : numtype, sx#21560 : sx} "f64.convert_i32_u" => `CVTOP`_instr{numtype_1#127, numtype_2#127}(`F64`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#21560}(`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)) + prod{numtype_1#129 : numtype, numtype_2#129 : numtype, sx#21594 : sx} "f64.convert_i64_s" => `CVTOP`_instr{numtype_1#129, numtype_2#129}(`F64`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#21594}(`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)) + prod{numtype_1#131 : numtype, numtype_2#131 : numtype, sx#21628 : sx} "f64.convert_i64_u" => `CVTOP`_instr{numtype_1#131, numtype_2#131}(`F64`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#21628}(`U`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.reinterpret_f32" => CVTOP_instr(I32_numtype, F32_numtype, REINTERPRET_cvtop__) + prod{numtype_1#133 : numtype, numtype_2#133 : numtype} "i32.reinterpret_f32" => `CVTOP`_instr{numtype_1#133, numtype_2#133}(`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__) + prod{numtype_1#135 : numtype, numtype_2#135 : numtype} "i64.reinterpret_f64" => `CVTOP`_instr{numtype_1#135, numtype_2#135}(`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__) + prod{numtype_1#137 : numtype, numtype_2#137 : numtype} "f32.reinterpret_i32" => `CVTOP`_instr{numtype_1#137, numtype_2#137}(`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__) + prod{numtype_1#139 : numtype, numtype_2#139 : numtype} "f64.reinterpret_i64" => `CVTOP`_instr{numtype_1#139, numtype_2#139}(`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*`}))) + prod{vectype#304 : vectype, `c*` : u8*} {{"v128.const"} {"i8x16"} {c*{c <- `c*`}:Ti8^16{}}} => `VCONST`_instr{vectype#304}(`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*`}))) + prod{vectype#306 : vectype, `c*` : u16*} {{"v128.const"} {"i16x8"} {c*{c <- `c*`}:Ti16^8{}}} => `VCONST`_instr{vectype#306}(`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*`}))) + prod{vectype#308 : vectype, `c*` : u32*} {{"v128.const"} {"i32x4"} {c*{c <- `c*`}:Ti32^4{}}} => `VCONST`_instr{vectype#308}(`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*`}))) + prod{vectype#310 : vectype, `c*` : u64*} {{"v128.const"} {"i64x2"} {c*{c <- `c*`}:Ti64^2{}}} => `VCONST`_instr{vectype#310}(`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*`}))) + prod{vectype#312 : vectype, `c*` : f32*} {{"v128.const"} {"f32x4"} {c*{c <- `c*`}:Tf32^4{}}} => `VCONST`_instr{vectype#312}(`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*`}))) + prod{vectype#314 : vectype, `c*` : f64*} {{"v128.const"} {"f64x2"} {c*{c <- `c*`}:Tf64^2{}}} => `VCONST`_instr{vectype#314}(`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*`}) + prod{bshape#19 : bshape, `laneidx*#9` : laneidx*, i#103376 : nat, shape#3961 : shape, shape#3972 : shape, lanetype#22986 : lanetype, dim#22986 : dim, i#103380 : nat, i#103387 : nat, `i*` : laneidx*} {{"i8x16.shuffle"} {i*{i <- `i*`}:Tlaneidx^16{}}} => `VSHUFFLE`_instr{bshape#19, `laneidx*#9`, i#103376, shape#3961}(`%`_bshape{shape#3972}(`%X%`_shape{lanetype#22986, dim#22986, i#103380}(`I8`_lanetype, `%`_dim{i#103387}(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_) + prod{bshape#21 : bshape, shape#3984 : shape, lanetype#22998 : lanetype, dim#22998 : dim, i#103415 : nat, i#103422 : nat} "i8x16.swizzle" => `VSWIZZLOP`_instr{bshape#21}(`%`_bshape{shape#3984}(`%X%`_shape{lanetype#22998, dim#22998, i#103415}(`I8`_lanetype, `%`_dim{i#103422}(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_) + prod{bshape#23 : bshape, shape#4011 : shape, lanetype#23055 : lanetype, dim#23055 : dim, i#103502 : nat, i#103509 : nat} "i8x16.relaxed_swizzle" => `VSWIZZLOP`_instr{bshape#23}(`%`_bshape{shape#4011}(`%X%`_shape{lanetype#23055, dim#23055, i#103502}(`I8`_lanetype, `%`_dim{i#103509}(16))), `RELAXED_SWIZZLE`_vswizzlop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.splat" => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) + prod{shape#4028 : shape, lanetype#23112 : lanetype, dim#23112 : dim, i#103589 : nat, i#103596 : nat} "i8x16.splat" => `VSPLAT`_instr{shape#4028}(`%X%`_shape{lanetype#23112, dim#23112, i#103589}(`I8`_lanetype, `%`_dim{i#103596}(16))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.splat" => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) + prod{shape#4030 : shape, lanetype#23124 : lanetype, dim#23124 : dim, i#103601 : nat, i#103608 : nat} "i16x8.splat" => `VSPLAT`_instr{shape#4030}(`%X%`_shape{lanetype#23124, dim#23124, i#103601}(`I16`_lanetype, `%`_dim{i#103608}(8))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.splat" => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) + prod{shape#4032 : shape, lanetype#23136 : lanetype, dim#23136 : dim, i#103613 : nat, i#103620 : nat} "i32x4.splat" => `VSPLAT`_instr{shape#4032}(`%X%`_shape{lanetype#23136, dim#23136, i#103613}(`I32`_lanetype, `%`_dim{i#103620}(4))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.splat" => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) + prod{shape#4034 : shape, lanetype#23148 : lanetype, dim#23148 : dim, i#103625 : nat, i#103632 : nat} "i64x2.splat" => `VSPLAT`_instr{shape#4034}(`%X%`_shape{lanetype#23148, dim#23148, i#103625}(`I64`_lanetype, `%`_dim{i#103632}(2))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.splat" => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) + prod{shape#4036 : shape, lanetype#23160 : lanetype, dim#23160 : dim, i#103637 : nat, i#103644 : nat} "f32x4.splat" => `VSPLAT`_instr{shape#4036}(`%X%`_shape{lanetype#23160, dim#23160, i#103637}(`F32`_lanetype, `%`_dim{i#103644}(4))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.splat" => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) + prod{shape#4038 : shape, lanetype#23172 : lanetype, dim#23172 : dim, i#103649 : nat, i#103656 : nat} "f64x2.splat" => `VSPLAT`_instr{shape#4038}(`%X%`_shape{lanetype#23172, dim#23172, i#103649}(`F64`_lanetype, `%`_dim{i#103656}(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) + prod{shape#4040 : shape, `sx?#71` : sx?, laneidx#91 : laneidx, lanetype#23184 : lanetype, dim#23184 : dim, i#103678 : nat, i#103685 : nat, i : laneidx} {{"i8x16.extract_lane_s"} {i:Tlaneidx}} => `VEXTRACT_LANE`_instr{shape#4040, `sx?#71`, laneidx#91}(`%X%`_shape{lanetype#23184, dim#23184, i#103678}(`I8`_lanetype, `%`_dim{i#103685}(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) + prod{shape#4042 : shape, `sx?#73` : sx?, laneidx#93 : laneidx, lanetype#23196 : lanetype, dim#23196 : dim, i#103763 : nat, i#103770 : nat, i : laneidx} {{"i8x16.extract_lane_u"} {i:Tlaneidx}} => `VEXTRACT_LANE`_instr{shape#4042, `sx?#73`, laneidx#93}(`%X%`_shape{lanetype#23196, dim#23196, i#103763}(`I8`_lanetype, `%`_dim{i#103770}(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) + prod{shape#4044 : shape, `sx?#75` : sx?, laneidx#95 : laneidx, lanetype#23208 : lanetype, dim#23208 : dim, i#103848 : nat, i#103855 : nat, i : laneidx} {{"i16x8.extract_lane_s"} {i:Tlaneidx}} => `VEXTRACT_LANE`_instr{shape#4044, `sx?#75`, laneidx#95}(`%X%`_shape{lanetype#23208, dim#23208, i#103848}(`I16`_lanetype, `%`_dim{i#103855}(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) + prod{shape#4046 : shape, `sx?#77` : sx?, laneidx#97 : laneidx, lanetype#23220 : lanetype, dim#23220 : dim, i#103933 : nat, i#103940 : nat, i : laneidx} {{"i16x8.extract_lane_u"} {i:Tlaneidx}} => `VEXTRACT_LANE`_instr{shape#4046, `sx?#77`, laneidx#97}(`%X%`_shape{lanetype#23220, dim#23220, i#103933}(`I16`_lanetype, `%`_dim{i#103940}(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) + prod{shape#4048 : shape, `sx?#79` : sx?, laneidx#99 : laneidx, lanetype#23232 : lanetype, dim#23232 : dim, i#104018 : nat, i#104025 : nat, i : laneidx} {{"i32x4.extract_lane"} {i:Tlaneidx}} => `VEXTRACT_LANE`_instr{shape#4048, `sx?#79`, laneidx#99}(`%X%`_shape{lanetype#23232, dim#23232, i#104018}(`I32`_lanetype, `%`_dim{i#104025}(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) + prod{shape#4050 : shape, `sx?#81` : sx?, laneidx#101 : laneidx, lanetype#23244 : lanetype, dim#23244 : dim, i#104059 : nat, i#104066 : nat, i : laneidx} {{"i64x2.extract_lane"} {i:Tlaneidx}} => `VEXTRACT_LANE`_instr{shape#4050, `sx?#81`, laneidx#101}(`%X%`_shape{lanetype#23244, dim#23244, i#104059}(`I64`_lanetype, `%`_dim{i#104066}(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) + prod{shape#4052 : shape, `sx?#83` : sx?, laneidx#103 : laneidx, lanetype#23256 : lanetype, dim#23256 : dim, i#104100 : nat, i#104107 : nat, i : laneidx} {{"f32x4.extract_lane"} {i:Tlaneidx}} => `VEXTRACT_LANE`_instr{shape#4052, `sx?#83`, laneidx#103}(`%X%`_shape{lanetype#23256, dim#23256, i#104100}(`F32`_lanetype, `%`_dim{i#104107}(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) + prod{shape#4054 : shape, `sx?#85` : sx?, laneidx#105 : laneidx, lanetype#23268 : lanetype, dim#23268 : dim, i#104141 : nat, i#104148 : nat, i : laneidx} {{"f64x2.extract_lane"} {i:Tlaneidx}} => `VEXTRACT_LANE`_instr{shape#4054, `sx?#85`, laneidx#105}(`%X%`_shape{lanetype#23268, dim#23268, i#104141}(`F64`_lanetype, `%`_dim{i#104148}(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) + prod{shape#4056 : shape, laneidx#107 : laneidx, lanetype#23280 : lanetype, dim#23280 : dim, i#104182 : nat, i#104189 : nat, i : laneidx} {{"i8x16.replace_lane"} {i:Tlaneidx}} => `VREPLACE_LANE`_instr{shape#4056, laneidx#107}(`%X%`_shape{lanetype#23280, dim#23280, i#104182}(`I8`_lanetype, `%`_dim{i#104189}(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) + prod{shape#4058 : shape, laneidx#109 : laneidx, lanetype#23292 : lanetype, dim#23292 : dim, i#104223 : nat, i#104230 : nat, i : laneidx} {{"i16x8.replace_lane"} {i:Tlaneidx}} => `VREPLACE_LANE`_instr{shape#4058, laneidx#109}(`%X%`_shape{lanetype#23292, dim#23292, i#104223}(`I16`_lanetype, `%`_dim{i#104230}(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) + prod{shape#4060 : shape, laneidx#111 : laneidx, lanetype#23304 : lanetype, dim#23304 : dim, i#104264 : nat, i#104271 : nat, i : laneidx} {{"i32x4.replace_lane"} {i:Tlaneidx}} => `VREPLACE_LANE`_instr{shape#4060, laneidx#111}(`%X%`_shape{lanetype#23304, dim#23304, i#104264}(`I32`_lanetype, `%`_dim{i#104271}(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) + prod{shape#4062 : shape, laneidx#113 : laneidx, lanetype#23316 : lanetype, dim#23316 : dim, i#104305 : nat, i#104312 : nat, i : laneidx} {{"i64x2.replace_lane"} {i:Tlaneidx}} => `VREPLACE_LANE`_instr{shape#4062, laneidx#113}(`%X%`_shape{lanetype#23316, dim#23316, i#104305}(`I64`_lanetype, `%`_dim{i#104312}(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) + prod{shape#4064 : shape, laneidx#115 : laneidx, lanetype#23328 : lanetype, dim#23328 : dim, i#104346 : nat, i#104353 : nat, i : laneidx} {{"f32x4.replace_lane"} {i:Tlaneidx}} => `VREPLACE_LANE`_instr{shape#4064, laneidx#115}(`%X%`_shape{lanetype#23328, dim#23328, i#104346}(`F32`_lanetype, `%`_dim{i#104353}(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) + prod{shape#4066 : shape, laneidx#117 : laneidx, lanetype#23340 : lanetype, dim#23340 : dim, i#104387 : nat, i#104394 : nat, i : laneidx} {{"f64x2.replace_lane"} {i:Tlaneidx}} => `VREPLACE_LANE`_instr{shape#4066, laneidx#117}(`%X%`_shape{lanetype#23340, dim#23340, i#104387}(`F64`_lanetype, `%`_dim{i#104394}(2)), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.any_true" => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) + prod{vectype#316 : vectype, vvtestop#9 : vvtestop} "v128.any_true" => `VVTESTOP`_instr{vectype#316, vvtestop#9}(`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_) + prod{shape#4068 : shape, lanetype#23352 : lanetype, dim#23352 : dim, i#104411 : nat, i#104418 : nat} "i8x16.all_true" => `VTESTOP`_instr{shape#4068}(`%X%`_shape{lanetype#23352, dim#23352, i#104411}(`I8`_lanetype, `%`_dim{i#104418}(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_) + prod{shape#4070 : shape, lanetype#23379 : lanetype, dim#23379 : dim, i#104468 : nat, i#104475 : nat} "i16x8.all_true" => `VTESTOP`_instr{shape#4070}(`%X%`_shape{lanetype#23379, dim#23379, i#104468}(`I16`_lanetype, `%`_dim{i#104475}(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_) + prod{shape#4072 : shape, lanetype#23406 : lanetype, dim#23406 : dim, i#104525 : nat, i#104532 : nat} "i32x4.all_true" => `VTESTOP`_instr{shape#4072}(`%X%`_shape{lanetype#23406, dim#23406, i#104525}(`I32`_lanetype, `%`_dim{i#104532}(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_) + prod{shape#4074 : shape, lanetype#23433 : lanetype, dim#23433 : dim, i#104582 : nat, i#104589 : nat} "i64x2.all_true" => `VTESTOP`_instr{shape#4074}(`%X%`_shape{lanetype#23433, dim#23433, i#104582}(`I64`_lanetype, `%`_dim{i#104589}(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_) + prod{shape#4076 : shape, lanetype#23460 : lanetype, dim#23460 : dim, i#104639 : nat, i#104646 : nat} "i8x16.eq" => `VRELOP`_instr{shape#4076}(`%X%`_shape{lanetype#23460, dim#23460, i#104639}(`I8`_lanetype, `%`_dim{i#104646}(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_) + prod{shape#4078 : shape, lanetype#23487 : lanetype, dim#23487 : dim, i#104696 : nat, i#104703 : nat} "i8x16.ne" => `VRELOP`_instr{shape#4078}(`%X%`_shape{lanetype#23487, dim#23487, i#104696}(`I8`_lanetype, `%`_dim{i#104703}(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)) + prod{shape#4080 : shape, lanetype#23514 : lanetype, dim#23514 : dim, i#104753 : nat, i#104760 : nat, sx#21962 : sx} "i8x16.lt_s" => `VRELOP`_instr{shape#4080}(`%X%`_shape{lanetype#23514, dim#23514, i#104753}(`I8`_lanetype, `%`_dim{i#104760}(16)), `LT`_vrelop_{sx#21962}(`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)) + prod{shape#4082 : shape, lanetype#23556 : lanetype, dim#23556 : dim, i#104855 : nat, i#104862 : nat, sx#22086 : sx} "i8x16.lt_u" => `VRELOP`_instr{shape#4082}(`%X%`_shape{lanetype#23556, dim#23556, i#104855}(`I8`_lanetype, `%`_dim{i#104862}(16)), `LT`_vrelop_{sx#22086}(`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)) + prod{shape#4084 : shape, lanetype#23598 : lanetype, dim#23598 : dim, i#104957 : nat, i#104964 : nat, sx#22210 : sx} "i8x16.gt_s" => `VRELOP`_instr{shape#4084}(`%X%`_shape{lanetype#23598, dim#23598, i#104957}(`I8`_lanetype, `%`_dim{i#104964}(16)), `GT`_vrelop_{sx#22210}(`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)) + prod{shape#4086 : shape, lanetype#23640 : lanetype, dim#23640 : dim, i#105059 : nat, i#105066 : nat, sx#22334 : sx} "i8x16.gt_u" => `VRELOP`_instr{shape#4086}(`%X%`_shape{lanetype#23640, dim#23640, i#105059}(`I8`_lanetype, `%`_dim{i#105066}(16)), `GT`_vrelop_{sx#22334}(`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)) + prod{shape#4088 : shape, lanetype#23682 : lanetype, dim#23682 : dim, i#105161 : nat, i#105168 : nat, sx#22458 : sx} "i8x16.le_s" => `VRELOP`_instr{shape#4088}(`%X%`_shape{lanetype#23682, dim#23682, i#105161}(`I8`_lanetype, `%`_dim{i#105168}(16)), `LE`_vrelop_{sx#22458}(`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)) + prod{shape#4090 : shape, lanetype#23724 : lanetype, dim#23724 : dim, i#105263 : nat, i#105270 : nat, sx#22582 : sx} "i8x16.le_u" => `VRELOP`_instr{shape#4090}(`%X%`_shape{lanetype#23724, dim#23724, i#105263}(`I8`_lanetype, `%`_dim{i#105270}(16)), `LE`_vrelop_{sx#22582}(`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)) + prod{shape#4092 : shape, lanetype#23766 : lanetype, dim#23766 : dim, i#105365 : nat, i#105372 : nat, sx#22706 : sx} "i8x16.ge_s" => `VRELOP`_instr{shape#4092}(`%X%`_shape{lanetype#23766, dim#23766, i#105365}(`I8`_lanetype, `%`_dim{i#105372}(16)), `GE`_vrelop_{sx#22706}(`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)) + prod{shape#4094 : shape, lanetype#23808 : lanetype, dim#23808 : dim, i#105467 : nat, i#105474 : nat, sx#22830 : sx} "i8x16.ge_u" => `VRELOP`_instr{shape#4094}(`%X%`_shape{lanetype#23808, dim#23808, i#105467}(`I8`_lanetype, `%`_dim{i#105474}(16)), `GE`_vrelop_{sx#22830}(`U`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.eq" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), EQ_vrelop_) + prod{shape#4096 : shape, lanetype#23850 : lanetype, dim#23850 : dim, i#105569 : nat, i#105576 : nat} "i16x8.eq" => `VRELOP`_instr{shape#4096}(`%X%`_shape{lanetype#23850, dim#23850, i#105569}(`I16`_lanetype, `%`_dim{i#105576}(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_) + prod{shape#4098 : shape, lanetype#23877 : lanetype, dim#23877 : dim, i#105626 : nat, i#105633 : nat} "i16x8.ne" => `VRELOP`_instr{shape#4098}(`%X%`_shape{lanetype#23877, dim#23877, i#105626}(`I16`_lanetype, `%`_dim{i#105633}(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)) + prod{shape#4100 : shape, lanetype#23904 : lanetype, dim#23904 : dim, i#105683 : nat, i#105690 : nat, sx#23074 : sx} "i16x8.lt_s" => `VRELOP`_instr{shape#4100}(`%X%`_shape{lanetype#23904, dim#23904, i#105683}(`I16`_lanetype, `%`_dim{i#105690}(8)), `LT`_vrelop_{sx#23074}(`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)) + prod{shape#4102 : shape, lanetype#23946 : lanetype, dim#23946 : dim, i#105785 : nat, i#105792 : nat, sx#23198 : sx} "i16x8.lt_u" => `VRELOP`_instr{shape#4102}(`%X%`_shape{lanetype#23946, dim#23946, i#105785}(`I16`_lanetype, `%`_dim{i#105792}(8)), `LT`_vrelop_{sx#23198}(`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)) + prod{shape#4104 : shape, lanetype#23988 : lanetype, dim#23988 : dim, i#105887 : nat, i#105894 : nat, sx#23322 : sx} "i16x8.gt_s" => `VRELOP`_instr{shape#4104}(`%X%`_shape{lanetype#23988, dim#23988, i#105887}(`I16`_lanetype, `%`_dim{i#105894}(8)), `GT`_vrelop_{sx#23322}(`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)) + prod{shape#4106 : shape, lanetype#24030 : lanetype, dim#24030 : dim, i#105989 : nat, i#105996 : nat, sx#23446 : sx} "i16x8.gt_u" => `VRELOP`_instr{shape#4106}(`%X%`_shape{lanetype#24030, dim#24030, i#105989}(`I16`_lanetype, `%`_dim{i#105996}(8)), `GT`_vrelop_{sx#23446}(`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)) + prod{shape#4108 : shape, lanetype#24072 : lanetype, dim#24072 : dim, i#106091 : nat, i#106098 : nat, sx#23570 : sx} "i16x8.le_s" => `VRELOP`_instr{shape#4108}(`%X%`_shape{lanetype#24072, dim#24072, i#106091}(`I16`_lanetype, `%`_dim{i#106098}(8)), `LE`_vrelop_{sx#23570}(`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)) + prod{shape#4110 : shape, lanetype#24114 : lanetype, dim#24114 : dim, i#106193 : nat, i#106200 : nat, sx#23694 : sx} "i16x8.le_u" => `VRELOP`_instr{shape#4110}(`%X%`_shape{lanetype#24114, dim#24114, i#106193}(`I16`_lanetype, `%`_dim{i#106200}(8)), `LE`_vrelop_{sx#23694}(`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)) + prod{shape#4112 : shape, lanetype#24156 : lanetype, dim#24156 : dim, i#106295 : nat, i#106302 : nat, sx#23818 : sx} "i16x8.ge_s" => `VRELOP`_instr{shape#4112}(`%X%`_shape{lanetype#24156, dim#24156, i#106295}(`I16`_lanetype, `%`_dim{i#106302}(8)), `GE`_vrelop_{sx#23818}(`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)) + prod{shape#4114 : shape, lanetype#24198 : lanetype, dim#24198 : dim, i#106397 : nat, i#106404 : nat, sx#23942 : sx} "i16x8.ge_u" => `VRELOP`_instr{shape#4114}(`%X%`_shape{lanetype#24198, dim#24198, i#106397}(`I16`_lanetype, `%`_dim{i#106404}(8)), `GE`_vrelop_{sx#23942}(`U`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.eq" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), EQ_vrelop_) + prod{shape#4116 : shape, lanetype#24240 : lanetype, dim#24240 : dim, i#106499 : nat, i#106506 : nat} "i32x4.eq" => `VRELOP`_instr{shape#4116}(`%X%`_shape{lanetype#24240, dim#24240, i#106499}(`I32`_lanetype, `%`_dim{i#106506}(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_) + prod{shape#4118 : shape, lanetype#24267 : lanetype, dim#24267 : dim, i#106556 : nat, i#106563 : nat} "i32x4.ne" => `VRELOP`_instr{shape#4118}(`%X%`_shape{lanetype#24267, dim#24267, i#106556}(`I32`_lanetype, `%`_dim{i#106563}(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)) + prod{shape#4120 : shape, lanetype#24294 : lanetype, dim#24294 : dim, i#106613 : nat, i#106620 : nat, sx#24186 : sx} "i32x4.lt_s" => `VRELOP`_instr{shape#4120}(`%X%`_shape{lanetype#24294, dim#24294, i#106613}(`I32`_lanetype, `%`_dim{i#106620}(4)), `LT`_vrelop_{sx#24186}(`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)) + prod{shape#4122 : shape, lanetype#24336 : lanetype, dim#24336 : dim, i#106715 : nat, i#106722 : nat, sx#24310 : sx} "i32x4.lt_u" => `VRELOP`_instr{shape#4122}(`%X%`_shape{lanetype#24336, dim#24336, i#106715}(`I32`_lanetype, `%`_dim{i#106722}(4)), `LT`_vrelop_{sx#24310}(`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)) + prod{shape#4124 : shape, lanetype#24378 : lanetype, dim#24378 : dim, i#106817 : nat, i#106824 : nat, sx#24434 : sx} "i32x4.gt_s" => `VRELOP`_instr{shape#4124}(`%X%`_shape{lanetype#24378, dim#24378, i#106817}(`I32`_lanetype, `%`_dim{i#106824}(4)), `GT`_vrelop_{sx#24434}(`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)) + prod{shape#4126 : shape, lanetype#24420 : lanetype, dim#24420 : dim, i#106919 : nat, i#106926 : nat, sx#24558 : sx} "i32x4.gt_u" => `VRELOP`_instr{shape#4126}(`%X%`_shape{lanetype#24420, dim#24420, i#106919}(`I32`_lanetype, `%`_dim{i#106926}(4)), `GT`_vrelop_{sx#24558}(`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)) + prod{shape#4128 : shape, lanetype#24462 : lanetype, dim#24462 : dim, i#107021 : nat, i#107028 : nat, sx#24682 : sx} "i32x4.le_s" => `VRELOP`_instr{shape#4128}(`%X%`_shape{lanetype#24462, dim#24462, i#107021}(`I32`_lanetype, `%`_dim{i#107028}(4)), `LE`_vrelop_{sx#24682}(`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)) + prod{shape#4130 : shape, lanetype#24504 : lanetype, dim#24504 : dim, i#107123 : nat, i#107130 : nat, sx#24806 : sx} "i32x4.le_u" => `VRELOP`_instr{shape#4130}(`%X%`_shape{lanetype#24504, dim#24504, i#107123}(`I32`_lanetype, `%`_dim{i#107130}(4)), `LE`_vrelop_{sx#24806}(`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)) + prod{shape#4132 : shape, lanetype#24546 : lanetype, dim#24546 : dim, i#107225 : nat, i#107232 : nat, sx#24930 : sx} "i32x4.ge_s" => `VRELOP`_instr{shape#4132}(`%X%`_shape{lanetype#24546, dim#24546, i#107225}(`I32`_lanetype, `%`_dim{i#107232}(4)), `GE`_vrelop_{sx#24930}(`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)) + prod{shape#4134 : shape, lanetype#24588 : lanetype, dim#24588 : dim, i#107327 : nat, i#107334 : nat, sx#25054 : sx} "i32x4.ge_u" => `VRELOP`_instr{shape#4134}(`%X%`_shape{lanetype#24588, dim#24588, i#107327}(`I32`_lanetype, `%`_dim{i#107334}(4)), `GE`_vrelop_{sx#25054}(`U`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.eq" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), EQ_vrelop_) + prod{shape#4136 : shape, lanetype#24630 : lanetype, dim#24630 : dim, i#107429 : nat, i#107436 : nat} "i64x2.eq" => `VRELOP`_instr{shape#4136}(`%X%`_shape{lanetype#24630, dim#24630, i#107429}(`I64`_lanetype, `%`_dim{i#107436}(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_) + prod{shape#4138 : shape, lanetype#24657 : lanetype, dim#24657 : dim, i#107486 : nat, i#107493 : nat} "i64x2.ne" => `VRELOP`_instr{shape#4138}(`%X%`_shape{lanetype#24657, dim#24657, i#107486}(`I64`_lanetype, `%`_dim{i#107493}(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)) + prod{shape#4140 : shape, lanetype#24684 : lanetype, dim#24684 : dim, i#107543 : nat, i#107550 : nat, sx#25298 : sx} "i64x2.lt_s" => `VRELOP`_instr{shape#4140}(`%X%`_shape{lanetype#24684, dim#24684, i#107543}(`I64`_lanetype, `%`_dim{i#107550}(2)), `LT`_vrelop_{sx#25298}(`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)) + prod{shape#4142 : shape, lanetype#24726 : lanetype, dim#24726 : dim, i#107645 : nat, i#107652 : nat, sx#25422 : sx} "i64x2.gt_s" => `VRELOP`_instr{shape#4142}(`%X%`_shape{lanetype#24726, dim#24726, i#107645}(`I64`_lanetype, `%`_dim{i#107652}(2)), `GT`_vrelop_{sx#25422}(`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)) + prod{shape#4144 : shape, lanetype#24768 : lanetype, dim#24768 : dim, i#107747 : nat, i#107754 : nat, sx#25546 : sx} "i64x2.le_s" => `VRELOP`_instr{shape#4144}(`%X%`_shape{lanetype#24768, dim#24768, i#107747}(`I64`_lanetype, `%`_dim{i#107754}(2)), `LE`_vrelop_{sx#25546}(`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)) + prod{shape#4146 : shape, lanetype#24810 : lanetype, dim#24810 : dim, i#107849 : nat, i#107856 : nat, sx#25670 : sx} "i64x2.ge_s" => `VRELOP`_instr{shape#4146}(`%X%`_shape{lanetype#24810, dim#24810, i#107849}(`I64`_lanetype, `%`_dim{i#107856}(2)), `GE`_vrelop_{sx#25670}(`S`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.eq" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), EQ_vrelop_) + prod{shape#4148 : shape, lanetype#24852 : lanetype, dim#24852 : dim, i#107951 : nat, i#107958 : nat} "f32x4.eq" => `VRELOP`_instr{shape#4148}(`%X%`_shape{lanetype#24852, dim#24852, i#107951}(`F32`_lanetype, `%`_dim{i#107958}(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_) + prod{shape#4150 : shape, lanetype#24894 : lanetype, dim#24894 : dim, i#108023 : nat, i#108030 : nat} "f32x4.ne" => `VRELOP`_instr{shape#4150}(`%X%`_shape{lanetype#24894, dim#24894, i#108023}(`F32`_lanetype, `%`_dim{i#108030}(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_) + prod{shape#4152 : shape, lanetype#24936 : lanetype, dim#24936 : dim, i#108095 : nat, i#108102 : nat} "f32x4.lt" => `VRELOP`_instr{shape#4152}(`%X%`_shape{lanetype#24936, dim#24936, i#108095}(`F32`_lanetype, `%`_dim{i#108102}(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_) + prod{shape#4154 : shape, lanetype#24978 : lanetype, dim#24978 : dim, i#108167 : nat, i#108174 : nat} "f32x4.gt" => `VRELOP`_instr{shape#4154}(`%X%`_shape{lanetype#24978, dim#24978, i#108167}(`F32`_lanetype, `%`_dim{i#108174}(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_) + prod{shape#4156 : shape, lanetype#25020 : lanetype, dim#25020 : dim, i#108239 : nat, i#108246 : nat} "f32x4.le" => `VRELOP`_instr{shape#4156}(`%X%`_shape{lanetype#25020, dim#25020, i#108239}(`F32`_lanetype, `%`_dim{i#108246}(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_) + prod{shape#4158 : shape, lanetype#25062 : lanetype, dim#25062 : dim, i#108311 : nat, i#108318 : nat} "f32x4.ge" => `VRELOP`_instr{shape#4158}(`%X%`_shape{lanetype#25062, dim#25062, i#108311}(`F32`_lanetype, `%`_dim{i#108318}(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_) + prod{shape#4160 : shape, lanetype#25104 : lanetype, dim#25104 : dim, i#108383 : nat, i#108390 : nat} "f64x2.eq" => `VRELOP`_instr{shape#4160}(`%X%`_shape{lanetype#25104, dim#25104, i#108383}(`F64`_lanetype, `%`_dim{i#108390}(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_) + prod{shape#4162 : shape, lanetype#25146 : lanetype, dim#25146 : dim, i#108455 : nat, i#108462 : nat} "f64x2.ne" => `VRELOP`_instr{shape#4162}(`%X%`_shape{lanetype#25146, dim#25146, i#108455}(`F64`_lanetype, `%`_dim{i#108462}(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_) + prod{shape#4164 : shape, lanetype#25188 : lanetype, dim#25188 : dim, i#108527 : nat, i#108534 : nat} "f64x2.lt" => `VRELOP`_instr{shape#4164}(`%X%`_shape{lanetype#25188, dim#25188, i#108527}(`F64`_lanetype, `%`_dim{i#108534}(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_) + prod{shape#4166 : shape, lanetype#25230 : lanetype, dim#25230 : dim, i#108599 : nat, i#108606 : nat} "f64x2.gt" => `VRELOP`_instr{shape#4166}(`%X%`_shape{lanetype#25230, dim#25230, i#108599}(`F64`_lanetype, `%`_dim{i#108606}(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_) + prod{shape#4168 : shape, lanetype#25272 : lanetype, dim#25272 : dim, i#108671 : nat, i#108678 : nat} "f64x2.le" => `VRELOP`_instr{shape#4168}(`%X%`_shape{lanetype#25272, dim#25272, i#108671}(`F64`_lanetype, `%`_dim{i#108678}(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_) + prod{shape#4170 : shape, lanetype#25314 : lanetype, dim#25314 : dim, i#108743 : nat, i#108750 : nat} "f64x2.ge" => `VRELOP`_instr{shape#4170}(`%X%`_shape{lanetype#25314, dim#25314, i#108743}(`F64`_lanetype, `%`_dim{i#108750}(2)), `GE`_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.not" => VVUNOP_instr(V128_vectype, NOT_vvunop) + prod{vectype#318 : vectype, vvunop#9 : vvunop} "v128.not" => `VVUNOP`_instr{vectype#318, vvunop#9}(`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_) + prod{shape#4172 : shape, lanetype#25356 : lanetype, dim#25356 : dim, i#108815 : nat, i#108822 : nat} "i8x16.abs" => `VUNOP`_instr{shape#4172}(`%X%`_shape{lanetype#25356, dim#25356, i#108815}(`I8`_lanetype, `%`_dim{i#108822}(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_) + prod{shape#4174 : shape, lanetype#25383 : lanetype, dim#25383 : dim, i#108872 : nat, i#108879 : nat} "i8x16.neg" => `VUNOP`_instr{shape#4174}(`%X%`_shape{lanetype#25383, dim#25383, i#108872}(`I8`_lanetype, `%`_dim{i#108879}(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_) + prod{shape#4176 : shape, lanetype#25410 : lanetype, dim#25410 : dim, i#108929 : nat, i#108936 : nat} "i8x16.popcnt" => `VUNOP`_instr{shape#4176}(`%X%`_shape{lanetype#25410, dim#25410, i#108929}(`I8`_lanetype, `%`_dim{i#108936}(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_) + prod{shape#4178 : shape, lanetype#25437 : lanetype, dim#25437 : dim, i#108986 : nat, i#108993 : nat} "i16x8.abs" => `VUNOP`_instr{shape#4178}(`%X%`_shape{lanetype#25437, dim#25437, i#108986}(`I16`_lanetype, `%`_dim{i#108993}(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_) + prod{shape#4180 : shape, lanetype#25464 : lanetype, dim#25464 : dim, i#109043 : nat, i#109050 : nat} "i16x8.neg" => `VUNOP`_instr{shape#4180}(`%X%`_shape{lanetype#25464, dim#25464, i#109043}(`I16`_lanetype, `%`_dim{i#109050}(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_) + prod{shape#4182 : shape, lanetype#25491 : lanetype, dim#25491 : dim, i#109100 : nat, i#109107 : nat} "i32x4.abs" => `VUNOP`_instr{shape#4182}(`%X%`_shape{lanetype#25491, dim#25491, i#109100}(`I32`_lanetype, `%`_dim{i#109107}(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_) + prod{shape#4184 : shape, lanetype#25518 : lanetype, dim#25518 : dim, i#109157 : nat, i#109164 : nat} "i32x4.neg" => `VUNOP`_instr{shape#4184}(`%X%`_shape{lanetype#25518, dim#25518, i#109157}(`I32`_lanetype, `%`_dim{i#109164}(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_) + prod{shape#4186 : shape, lanetype#25545 : lanetype, dim#25545 : dim, i#109214 : nat, i#109221 : nat} "i64x2.abs" => `VUNOP`_instr{shape#4186}(`%X%`_shape{lanetype#25545, dim#25545, i#109214}(`I64`_lanetype, `%`_dim{i#109221}(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_) + prod{shape#4188 : shape, lanetype#25572 : lanetype, dim#25572 : dim, i#109271 : nat, i#109278 : nat} "i64x2.neg" => `VUNOP`_instr{shape#4188}(`%X%`_shape{lanetype#25572, dim#25572, i#109271}(`I64`_lanetype, `%`_dim{i#109278}(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_) + prod{shape#4190 : shape, lanetype#25599 : lanetype, dim#25599 : dim, i#109328 : nat, i#109335 : nat} "f32x4.abs" => `VUNOP`_instr{shape#4190}(`%X%`_shape{lanetype#25599, dim#25599, i#109328}(`F32`_lanetype, `%`_dim{i#109335}(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_) + prod{shape#4192 : shape, lanetype#25641 : lanetype, dim#25641 : dim, i#109400 : nat, i#109407 : nat} "f32x4.neg" => `VUNOP`_instr{shape#4192}(`%X%`_shape{lanetype#25641, dim#25641, i#109400}(`F32`_lanetype, `%`_dim{i#109407}(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_) + prod{shape#4194 : shape, lanetype#25683 : lanetype, dim#25683 : dim, i#109472 : nat, i#109479 : nat} "f32x4.sqrt" => `VUNOP`_instr{shape#4194}(`%X%`_shape{lanetype#25683, dim#25683, i#109472}(`F32`_lanetype, `%`_dim{i#109479}(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_) + prod{shape#4196 : shape, lanetype#25725 : lanetype, dim#25725 : dim, i#109544 : nat, i#109551 : nat} "f32x4.ceil" => `VUNOP`_instr{shape#4196}(`%X%`_shape{lanetype#25725, dim#25725, i#109544}(`F32`_lanetype, `%`_dim{i#109551}(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_) + prod{shape#4198 : shape, lanetype#25767 : lanetype, dim#25767 : dim, i#109616 : nat, i#109623 : nat} "f32x4.floor" => `VUNOP`_instr{shape#4198}(`%X%`_shape{lanetype#25767, dim#25767, i#109616}(`F32`_lanetype, `%`_dim{i#109623}(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_) + prod{shape#4200 : shape, lanetype#25809 : lanetype, dim#25809 : dim, i#109688 : nat, i#109695 : nat} "f32x4.trunc" => `VUNOP`_instr{shape#4200}(`%X%`_shape{lanetype#25809, dim#25809, i#109688}(`F32`_lanetype, `%`_dim{i#109695}(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_) + prod{shape#4202 : shape, lanetype#25851 : lanetype, dim#25851 : dim, i#109760 : nat, i#109767 : nat} "f32x4.nearest" => `VUNOP`_instr{shape#4202}(`%X%`_shape{lanetype#25851, dim#25851, i#109760}(`F32`_lanetype, `%`_dim{i#109767}(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_) + prod{shape#4204 : shape, lanetype#25893 : lanetype, dim#25893 : dim, i#109832 : nat, i#109839 : nat} "f64x2.abs" => `VUNOP`_instr{shape#4204}(`%X%`_shape{lanetype#25893, dim#25893, i#109832}(`F64`_lanetype, `%`_dim{i#109839}(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_) + prod{shape#4206 : shape, lanetype#25935 : lanetype, dim#25935 : dim, i#109904 : nat, i#109911 : nat} "f64x2.neg" => `VUNOP`_instr{shape#4206}(`%X%`_shape{lanetype#25935, dim#25935, i#109904}(`F64`_lanetype, `%`_dim{i#109911}(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_) + prod{shape#4208 : shape, lanetype#25977 : lanetype, dim#25977 : dim, i#109976 : nat, i#109983 : nat} "f64x2.sqrt" => `VUNOP`_instr{shape#4208}(`%X%`_shape{lanetype#25977, dim#25977, i#109976}(`F64`_lanetype, `%`_dim{i#109983}(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_) + prod{shape#4210 : shape, lanetype#26019 : lanetype, dim#26019 : dim, i#110048 : nat, i#110055 : nat} "f64x2.ceil" => `VUNOP`_instr{shape#4210}(`%X%`_shape{lanetype#26019, dim#26019, i#110048}(`F64`_lanetype, `%`_dim{i#110055}(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_) + prod{shape#4212 : shape, lanetype#26061 : lanetype, dim#26061 : dim, i#110120 : nat, i#110127 : nat} "f64x2.floor" => `VUNOP`_instr{shape#4212}(`%X%`_shape{lanetype#26061, dim#26061, i#110120}(`F64`_lanetype, `%`_dim{i#110127}(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_) + prod{shape#4214 : shape, lanetype#26103 : lanetype, dim#26103 : dim, i#110192 : nat, i#110199 : nat} "f64x2.trunc" => `VUNOP`_instr{shape#4214}(`%X%`_shape{lanetype#26103, dim#26103, i#110192}(`F64`_lanetype, `%`_dim{i#110199}(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_) + prod{shape#4216 : shape, lanetype#26145 : lanetype, dim#26145 : dim, i#110264 : nat, i#110271 : nat} "f64x2.nearest" => `VUNOP`_instr{shape#4216}(`%X%`_shape{lanetype#26145, dim#26145, i#110264}(`F64`_lanetype, `%`_dim{i#110271}(2)), `NEAREST`_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.and" => VVBINOP_instr(V128_vectype, AND_vvbinop) + prod{vectype#320 : vectype, vvbinop#15 : vvbinop} "v128.and" => `VVBINOP`_instr{vectype#320, vvbinop#15}(`V128`_vectype, `AND`_vvbinop) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.andnot" => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) + prod{vectype#322 : vectype, vvbinop#17 : vvbinop} "v128.andnot" => `VVBINOP`_instr{vectype#322, vvbinop#17}(`V128`_vectype, `ANDNOT`_vvbinop) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.or" => VVBINOP_instr(V128_vectype, OR_vvbinop) + prod{vectype#324 : vectype, vvbinop#19 : vvbinop} "v128.or" => `VVBINOP`_instr{vectype#324, vvbinop#19}(`V128`_vectype, `OR`_vvbinop) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.xor" => VVBINOP_instr(V128_vectype, XOR_vvbinop) + prod{vectype#326 : vectype, vvbinop#21 : vvbinop} "v128.xor" => `VVBINOP`_instr{vectype#326, vvbinop#21}(`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_) + prod{shape#4218 : shape, lanetype#26187 : lanetype, dim#26187 : dim, i#110336 : nat, i#110343 : nat} "i8x16.add" => `VBINOP`_instr{shape#4218}(`%X%`_shape{lanetype#26187, dim#26187, i#110336}(`I8`_lanetype, `%`_dim{i#110343}(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)) + prod{shape#4220 : shape, lanetype#26214 : lanetype, dim#26214 : dim, i#110393 : nat, i#110400 : nat, sx#25854 : sx} "i8x16.add_sat_s" => `VBINOP`_instr{shape#4220}(`%X%`_shape{lanetype#26214, dim#26214, i#110393}(`I8`_lanetype, `%`_dim{i#110400}(16)), `ADD_SAT`_vbinop_{sx#25854}(`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)) + prod{shape#4222 : shape, lanetype#26256 : lanetype, dim#26256 : dim, i#110495 : nat, i#110502 : nat, sx#25978 : sx} "i8x16.add_sat_u" => `VBINOP`_instr{shape#4222}(`%X%`_shape{lanetype#26256, dim#26256, i#110495}(`I8`_lanetype, `%`_dim{i#110502}(16)), `ADD_SAT`_vbinop_{sx#25978}(`U`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_vbinop_) + prod{shape#4224 : shape, lanetype#26298 : lanetype, dim#26298 : dim, i#110597 : nat, i#110604 : nat} "i8x16.sub" => `VBINOP`_instr{shape#4224}(`%X%`_shape{lanetype#26298, dim#26298, i#110597}(`I8`_lanetype, `%`_dim{i#110604}(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)) + prod{shape#4226 : shape, lanetype#26325 : lanetype, dim#26325 : dim, i#110654 : nat, i#110661 : nat, sx#26162 : sx} "i8x16.sub_sat_s" => `VBINOP`_instr{shape#4226}(`%X%`_shape{lanetype#26325, dim#26325, i#110654}(`I8`_lanetype, `%`_dim{i#110661}(16)), `SUB_SAT`_vbinop_{sx#26162}(`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)) + prod{shape#4228 : shape, lanetype#26367 : lanetype, dim#26367 : dim, i#110756 : nat, i#110763 : nat, sx#26286 : sx} "i8x16.sub_sat_u" => `VBINOP`_instr{shape#4228}(`%X%`_shape{lanetype#26367, dim#26367, i#110756}(`I8`_lanetype, `%`_dim{i#110763}(16)), `SUB_SAT`_vbinop_{sx#26286}(`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)) + prod{shape#4230 : shape, lanetype#26409 : lanetype, dim#26409 : dim, i#110858 : nat, i#110865 : nat, sx#26410 : sx} "i8x16.min_s" => `VBINOP`_instr{shape#4230}(`%X%`_shape{lanetype#26409, dim#26409, i#110858}(`I8`_lanetype, `%`_dim{i#110865}(16)), `MIN`_vbinop_{sx#26410}(`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)) + prod{shape#4232 : shape, lanetype#26451 : lanetype, dim#26451 : dim, i#110960 : nat, i#110967 : nat, sx#26534 : sx} "i8x16.min_u" => `VBINOP`_instr{shape#4232}(`%X%`_shape{lanetype#26451, dim#26451, i#110960}(`I8`_lanetype, `%`_dim{i#110967}(16)), `MIN`_vbinop_{sx#26534}(`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)) + prod{shape#4234 : shape, lanetype#26493 : lanetype, dim#26493 : dim, i#111062 : nat, i#111069 : nat, sx#26658 : sx} "i8x16.max_s" => `VBINOP`_instr{shape#4234}(`%X%`_shape{lanetype#26493, dim#26493, i#111062}(`I8`_lanetype, `%`_dim{i#111069}(16)), `MAX`_vbinop_{sx#26658}(`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)) + prod{shape#4236 : shape, lanetype#26535 : lanetype, dim#26535 : dim, i#111164 : nat, i#111171 : nat, sx#26782 : sx} "i8x16.max_u" => `VBINOP`_instr{shape#4236}(`%X%`_shape{lanetype#26535, dim#26535, i#111164}(`I8`_lanetype, `%`_dim{i#111171}(16)), `MAX`_vbinop_{sx#26782}(`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_) + prod{shape#4238 : shape, lanetype#26577 : lanetype, dim#26577 : dim, i#111266 : nat, i#111273 : nat} "i8x16.avgr_u" => `VBINOP`_instr{shape#4238}(`%X%`_shape{lanetype#26577, dim#26577, i#111266}(`I8`_lanetype, `%`_dim{i#111273}(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_) + prod{shape#4240 : shape, lanetype#26619 : lanetype, dim#26619 : dim, i#111368 : nat, i#111375 : nat} "i16x8.add" => `VBINOP`_instr{shape#4240}(`%X%`_shape{lanetype#26619, dim#26619, i#111368}(`I16`_lanetype, `%`_dim{i#111375}(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)) + prod{shape#4242 : shape, lanetype#26646 : lanetype, dim#26646 : dim, i#111425 : nat, i#111432 : nat, sx#27086 : sx} "i16x8.add_sat_s" => `VBINOP`_instr{shape#4242}(`%X%`_shape{lanetype#26646, dim#26646, i#111425}(`I16`_lanetype, `%`_dim{i#111432}(8)), `ADD_SAT`_vbinop_{sx#27086}(`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)) + prod{shape#4244 : shape, lanetype#26688 : lanetype, dim#26688 : dim, i#111527 : nat, i#111534 : nat, sx#27210 : sx} "i16x8.add_sat_u" => `VBINOP`_instr{shape#4244}(`%X%`_shape{lanetype#26688, dim#26688, i#111527}(`I16`_lanetype, `%`_dim{i#111534}(8)), `ADD_SAT`_vbinop_{sx#27210}(`U`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_vbinop_) + prod{shape#4246 : shape, lanetype#26730 : lanetype, dim#26730 : dim, i#111629 : nat, i#111636 : nat} "i16x8.sub" => `VBINOP`_instr{shape#4246}(`%X%`_shape{lanetype#26730, dim#26730, i#111629}(`I16`_lanetype, `%`_dim{i#111636}(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)) + prod{shape#4248 : shape, lanetype#26757 : lanetype, dim#26757 : dim, i#111686 : nat, i#111693 : nat, sx#27394 : sx} "i16x8.sub_sat_s" => `VBINOP`_instr{shape#4248}(`%X%`_shape{lanetype#26757, dim#26757, i#111686}(`I16`_lanetype, `%`_dim{i#111693}(8)), `SUB_SAT`_vbinop_{sx#27394}(`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)) + prod{shape#4250 : shape, lanetype#26799 : lanetype, dim#26799 : dim, i#111788 : nat, i#111795 : nat, sx#27518 : sx} "i16x8.sub_sat_u" => `VBINOP`_instr{shape#4250}(`%X%`_shape{lanetype#26799, dim#26799, i#111788}(`I16`_lanetype, `%`_dim{i#111795}(8)), `SUB_SAT`_vbinop_{sx#27518}(`U`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.mul" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MUL_vbinop_) + prod{shape#4252 : shape, lanetype#26841 : lanetype, dim#26841 : dim, i#111890 : nat, i#111897 : nat} "i16x8.mul" => `VBINOP`_instr{shape#4252}(`%X%`_shape{lanetype#26841, dim#26841, i#111890}(`I16`_lanetype, `%`_dim{i#111897}(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)) + prod{shape#4254 : shape, lanetype#26868 : lanetype, dim#26868 : dim, i#111947 : nat, i#111954 : nat, sx#27702 : sx} "i16x8.min_s" => `VBINOP`_instr{shape#4254}(`%X%`_shape{lanetype#26868, dim#26868, i#111947}(`I16`_lanetype, `%`_dim{i#111954}(8)), `MIN`_vbinop_{sx#27702}(`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)) + prod{shape#4256 : shape, lanetype#26910 : lanetype, dim#26910 : dim, i#112049 : nat, i#112056 : nat, sx#27826 : sx} "i16x8.min_u" => `VBINOP`_instr{shape#4256}(`%X%`_shape{lanetype#26910, dim#26910, i#112049}(`I16`_lanetype, `%`_dim{i#112056}(8)), `MIN`_vbinop_{sx#27826}(`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)) + prod{shape#4258 : shape, lanetype#26952 : lanetype, dim#26952 : dim, i#112151 : nat, i#112158 : nat, sx#27950 : sx} "i16x8.max_s" => `VBINOP`_instr{shape#4258}(`%X%`_shape{lanetype#26952, dim#26952, i#112151}(`I16`_lanetype, `%`_dim{i#112158}(8)), `MAX`_vbinop_{sx#27950}(`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)) + prod{shape#4260 : shape, lanetype#26994 : lanetype, dim#26994 : dim, i#112253 : nat, i#112260 : nat, sx#28074 : sx} "i16x8.max_u" => `VBINOP`_instr{shape#4260}(`%X%`_shape{lanetype#26994, dim#26994, i#112253}(`I16`_lanetype, `%`_dim{i#112260}(8)), `MAX`_vbinop_{sx#28074}(`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_) + prod{shape#4262 : shape, lanetype#27036 : lanetype, dim#27036 : dim, i#112355 : nat, i#112362 : nat} "i16x8.avgr_u" => `VBINOP`_instr{shape#4262}(`%X%`_shape{lanetype#27036, dim#27036, i#112355}(`I16`_lanetype, `%`_dim{i#112362}(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_) + prod{shape#4264 : shape, lanetype#27078 : lanetype, dim#27078 : dim, i#112457 : nat, i#112464 : nat} "i16x8.q15mulr_sat_s" => `VBINOP`_instr{shape#4264}(`%X%`_shape{lanetype#27078, dim#27078, i#112457}(`I16`_lanetype, `%`_dim{i#112464}(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_) + prod{shape#4266 : shape, lanetype#27120 : lanetype, dim#27120 : dim, i#112559 : nat, i#112566 : nat} "i16x8.relaxed_q15mulr_s" => `VBINOP`_instr{shape#4266}(`%X%`_shape{lanetype#27120, dim#27120, i#112559}(`I16`_lanetype, `%`_dim{i#112566}(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_) + prod{shape#4268 : shape, lanetype#27162 : lanetype, dim#27162 : dim, i#112661 : nat, i#112668 : nat} "i32x4.add" => `VBINOP`_instr{shape#4268}(`%X%`_shape{lanetype#27162, dim#27162, i#112661}(`I32`_lanetype, `%`_dim{i#112668}(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_) + prod{shape#4270 : shape, lanetype#27189 : lanetype, dim#27189 : dim, i#112718 : nat, i#112725 : nat} "i32x4.sub" => `VBINOP`_instr{shape#4270}(`%X%`_shape{lanetype#27189, dim#27189, i#112718}(`I32`_lanetype, `%`_dim{i#112725}(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_) + prod{shape#4272 : shape, lanetype#27216 : lanetype, dim#27216 : dim, i#112775 : nat, i#112782 : nat} "i32x4.mul" => `VBINOP`_instr{shape#4272}(`%X%`_shape{lanetype#27216, dim#27216, i#112775}(`I32`_lanetype, `%`_dim{i#112782}(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)) + prod{shape#4274 : shape, lanetype#27243 : lanetype, dim#27243 : dim, i#112832 : nat, i#112839 : nat, sx#28738 : sx} "i32x4.min_s" => `VBINOP`_instr{shape#4274}(`%X%`_shape{lanetype#27243, dim#27243, i#112832}(`I32`_lanetype, `%`_dim{i#112839}(4)), `MIN`_vbinop_{sx#28738}(`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)) + prod{shape#4276 : shape, lanetype#27285 : lanetype, dim#27285 : dim, i#112934 : nat, i#112941 : nat, sx#28862 : sx} "i32x4.min_u" => `VBINOP`_instr{shape#4276}(`%X%`_shape{lanetype#27285, dim#27285, i#112934}(`I32`_lanetype, `%`_dim{i#112941}(4)), `MIN`_vbinop_{sx#28862}(`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)) + prod{shape#4278 : shape, lanetype#27327 : lanetype, dim#27327 : dim, i#113036 : nat, i#113043 : nat, sx#28986 : sx} "i32x4.max_s" => `VBINOP`_instr{shape#4278}(`%X%`_shape{lanetype#27327, dim#27327, i#113036}(`I32`_lanetype, `%`_dim{i#113043}(4)), `MAX`_vbinop_{sx#28986}(`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)) + prod{shape#4280 : shape, lanetype#27369 : lanetype, dim#27369 : dim, i#113138 : nat, i#113145 : nat, sx#29110 : sx} "i32x4.max_u" => `VBINOP`_instr{shape#4280}(`%X%`_shape{lanetype#27369, dim#27369, i#113138}(`I32`_lanetype, `%`_dim{i#113145}(4)), `MAX`_vbinop_{sx#29110}(`U`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.add" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ADD_vbinop_) + prod{shape#4282 : shape, lanetype#27411 : lanetype, dim#27411 : dim, i#113240 : nat, i#113247 : nat} "i64x2.add" => `VBINOP`_instr{shape#4282}(`%X%`_shape{lanetype#27411, dim#27411, i#113240}(`I64`_lanetype, `%`_dim{i#113247}(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_) + prod{shape#4284 : shape, lanetype#27438 : lanetype, dim#27438 : dim, i#113297 : nat, i#113304 : nat} "i64x2.sub" => `VBINOP`_instr{shape#4284}(`%X%`_shape{lanetype#27438, dim#27438, i#113297}(`I64`_lanetype, `%`_dim{i#113304}(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_) + prod{shape#4286 : shape, lanetype#27465 : lanetype, dim#27465 : dim, i#113354 : nat, i#113361 : nat} "i64x2.mul" => `VBINOP`_instr{shape#4286}(`%X%`_shape{lanetype#27465, dim#27465, i#113354}(`I64`_lanetype, `%`_dim{i#113361}(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_) + prod{shape#4288 : shape, lanetype#27492 : lanetype, dim#27492 : dim, i#113411 : nat, i#113418 : nat} "f32x4.add" => `VBINOP`_instr{shape#4288}(`%X%`_shape{lanetype#27492, dim#27492, i#113411}(`F32`_lanetype, `%`_dim{i#113418}(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_) + prod{shape#4290 : shape, lanetype#27534 : lanetype, dim#27534 : dim, i#113483 : nat, i#113490 : nat} "f32x4.sub" => `VBINOP`_instr{shape#4290}(`%X%`_shape{lanetype#27534, dim#27534, i#113483}(`F32`_lanetype, `%`_dim{i#113490}(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_) + prod{shape#4292 : shape, lanetype#27576 : lanetype, dim#27576 : dim, i#113555 : nat, i#113562 : nat} "f32x4.mul" => `VBINOP`_instr{shape#4292}(`%X%`_shape{lanetype#27576, dim#27576, i#113555}(`F32`_lanetype, `%`_dim{i#113562}(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_) + prod{shape#4294 : shape, lanetype#27618 : lanetype, dim#27618 : dim, i#113627 : nat, i#113634 : nat} "f32x4.div" => `VBINOP`_instr{shape#4294}(`%X%`_shape{lanetype#27618, dim#27618, i#113627}(`F32`_lanetype, `%`_dim{i#113634}(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_) + prod{shape#4296 : shape, lanetype#27660 : lanetype, dim#27660 : dim, i#113699 : nat, i#113706 : nat} "f32x4.min" => `VBINOP`_instr{shape#4296}(`%X%`_shape{lanetype#27660, dim#27660, i#113699}(`F32`_lanetype, `%`_dim{i#113706}(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_) + prod{shape#4298 : shape, lanetype#27702 : lanetype, dim#27702 : dim, i#113771 : nat, i#113778 : nat} "f32x4.max" => `VBINOP`_instr{shape#4298}(`%X%`_shape{lanetype#27702, dim#27702, i#113771}(`F32`_lanetype, `%`_dim{i#113778}(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_) + prod{shape#4300 : shape, lanetype#27744 : lanetype, dim#27744 : dim, i#113843 : nat, i#113850 : nat} "f32x4.pmin" => `VBINOP`_instr{shape#4300}(`%X%`_shape{lanetype#27744, dim#27744, i#113843}(`F32`_lanetype, `%`_dim{i#113850}(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_) + prod{shape#4302 : shape, lanetype#27786 : lanetype, dim#27786 : dim, i#113915 : nat, i#113922 : nat} "f32x4.pmax" => `VBINOP`_instr{shape#4302}(`%X%`_shape{lanetype#27786, dim#27786, i#113915}(`F32`_lanetype, `%`_dim{i#113922}(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_) + prod{shape#4304 : shape, lanetype#27828 : lanetype, dim#27828 : dim, i#113987 : nat, i#113994 : nat} "f32x4.relaxed_min" => `VBINOP`_instr{shape#4304}(`%X%`_shape{lanetype#27828, dim#27828, i#113987}(`F32`_lanetype, `%`_dim{i#113994}(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_) + prod{shape#4306 : shape, lanetype#27870 : lanetype, dim#27870 : dim, i#114059 : nat, i#114066 : nat} "f32x4.relaxed_max" => `VBINOP`_instr{shape#4306}(`%X%`_shape{lanetype#27870, dim#27870, i#114059}(`F32`_lanetype, `%`_dim{i#114066}(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_) + prod{shape#4308 : shape, lanetype#27912 : lanetype, dim#27912 : dim, i#114131 : nat, i#114138 : nat} "f64x2.add" => `VBINOP`_instr{shape#4308}(`%X%`_shape{lanetype#27912, dim#27912, i#114131}(`F64`_lanetype, `%`_dim{i#114138}(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_) + prod{shape#4310 : shape, lanetype#27954 : lanetype, dim#27954 : dim, i#114203 : nat, i#114210 : nat} "f64x2.sub" => `VBINOP`_instr{shape#4310}(`%X%`_shape{lanetype#27954, dim#27954, i#114203}(`F64`_lanetype, `%`_dim{i#114210}(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_) + prod{shape#4312 : shape, lanetype#27996 : lanetype, dim#27996 : dim, i#114275 : nat, i#114282 : nat} "f64x2.mul" => `VBINOP`_instr{shape#4312}(`%X%`_shape{lanetype#27996, dim#27996, i#114275}(`F64`_lanetype, `%`_dim{i#114282}(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_) + prod{shape#4314 : shape, lanetype#28038 : lanetype, dim#28038 : dim, i#114347 : nat, i#114354 : nat} "f64x2.div" => `VBINOP`_instr{shape#4314}(`%X%`_shape{lanetype#28038, dim#28038, i#114347}(`F64`_lanetype, `%`_dim{i#114354}(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_) + prod{shape#4316 : shape, lanetype#28080 : lanetype, dim#28080 : dim, i#114419 : nat, i#114426 : nat} "f64x2.min" => `VBINOP`_instr{shape#4316}(`%X%`_shape{lanetype#28080, dim#28080, i#114419}(`F64`_lanetype, `%`_dim{i#114426}(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_) + prod{shape#4318 : shape, lanetype#28122 : lanetype, dim#28122 : dim, i#114491 : nat, i#114498 : nat} "f64x2.max" => `VBINOP`_instr{shape#4318}(`%X%`_shape{lanetype#28122, dim#28122, i#114491}(`F64`_lanetype, `%`_dim{i#114498}(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_) + prod{shape#4320 : shape, lanetype#28164 : lanetype, dim#28164 : dim, i#114563 : nat, i#114570 : nat} "f64x2.pmin" => `VBINOP`_instr{shape#4320}(`%X%`_shape{lanetype#28164, dim#28164, i#114563}(`F64`_lanetype, `%`_dim{i#114570}(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_) + prod{shape#4322 : shape, lanetype#28206 : lanetype, dim#28206 : dim, i#114635 : nat, i#114642 : nat} "f64x2.pmax" => `VBINOP`_instr{shape#4322}(`%X%`_shape{lanetype#28206, dim#28206, i#114635}(`F64`_lanetype, `%`_dim{i#114642}(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_) + prod{shape#4324 : shape, lanetype#28248 : lanetype, dim#28248 : dim, i#114707 : nat, i#114714 : nat} "f64x2.relaxed_min" => `VBINOP`_instr{shape#4324}(`%X%`_shape{lanetype#28248, dim#28248, i#114707}(`F64`_lanetype, `%`_dim{i#114714}(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_) + prod{shape#4326 : shape, lanetype#28290 : lanetype, dim#28290 : dim, i#114779 : nat, i#114786 : nat} "f64x2.relaxed_max" => `VBINOP`_instr{shape#4326}(`%X%`_shape{lanetype#28290, dim#28290, i#114779}(`F64`_lanetype, `%`_dim{i#114786}(2)), `RELAXED_MAX`_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "v128.bitselect" => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) + prod{vectype#328 : vectype, vvternop#9 : vvternop} "v128.bitselect" => `VVTERNOP`_instr{vectype#328, vvternop#9}(`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_) + prod{shape#4328 : shape, lanetype#28332 : lanetype, dim#28332 : dim, i#114851 : nat, i#114858 : nat} "i8x16.relaxed_laneselect" => `VTERNOP`_instr{shape#4328}(`%X%`_shape{lanetype#28332, dim#28332, i#114851}(`I8`_lanetype, `%`_dim{i#114858}(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_) + prod{shape#4330 : shape, lanetype#28359 : lanetype, dim#28359 : dim, i#114908 : nat, i#114915 : nat} "i16x8.relaxed_laneselect" => `VTERNOP`_instr{shape#4330}(`%X%`_shape{lanetype#28359, dim#28359, i#114908}(`I16`_lanetype, `%`_dim{i#114915}(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_) + prod{shape#4332 : shape, lanetype#28386 : lanetype, dim#28386 : dim, i#114965 : nat, i#114972 : nat} "i32x4.relaxed_laneselect" => `VTERNOP`_instr{shape#4332}(`%X%`_shape{lanetype#28386, dim#28386, i#114965}(`I32`_lanetype, `%`_dim{i#114972}(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_) + prod{shape#4334 : shape, lanetype#28413 : lanetype, dim#28413 : dim, i#115022 : nat, i#115029 : nat} "i64x2.relaxed_laneselect" => `VTERNOP`_instr{shape#4334}(`%X%`_shape{lanetype#28413, dim#28413, i#115022}(`I64`_lanetype, `%`_dim{i#115029}(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_) + prod{shape#4336 : shape, lanetype#28440 : lanetype, dim#28440 : dim, i#115079 : nat, i#115086 : nat} "f32x4.relaxed_madd" => `VTERNOP`_instr{shape#4336}(`%X%`_shape{lanetype#28440, dim#28440, i#115079}(`F32`_lanetype, `%`_dim{i#115086}(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_) + prod{shape#4338 : shape, lanetype#28482 : lanetype, dim#28482 : dim, i#115151 : nat, i#115158 : nat} "f32x4.relaxed_nmadd" => `VTERNOP`_instr{shape#4338}(`%X%`_shape{lanetype#28482, dim#28482, i#115151}(`F32`_lanetype, `%`_dim{i#115158}(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_) + prod{shape#4340 : shape, lanetype#28524 : lanetype, dim#28524 : dim, i#115223 : nat, i#115230 : nat} "f64x2.relaxed_madd" => `VTERNOP`_instr{shape#4340}(`%X%`_shape{lanetype#28524, dim#28524, i#115223}(`F64`_lanetype, `%`_dim{i#115230}(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_) + prod{shape#4342 : shape, lanetype#28566 : lanetype, dim#28566 : dim, i#115295 : nat, i#115302 : nat} "f64x2.relaxed_nmadd" => `VTERNOP`_instr{shape#4342}(`%X%`_shape{lanetype#28566, dim#28566, i#115295}(`F64`_lanetype, `%`_dim{i#115302}(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_) + prod{ishape#45 : ishape, shape#4354 : shape, Jnn#488 : Jnn, lanetype#28608 : lanetype, dim#28608 : dim, i#115367 : nat, i#115374 : nat} "i8x16.shl" => `VSHIFTOP`_instr{ishape#45}(`%`_ishape{shape#4354, Jnn#488}(`%X%`_shape{lanetype#28608, dim#28608, i#115367}(`I8`_lanetype, `%`_dim{i#115374}(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)) + prod{ishape#47 : ishape, shape#4381 : shape, Jnn#492 : Jnn, lanetype#28665 : lanetype, dim#28665 : dim, i#115454 : nat, i#115461 : nat, sx#29339 : sx} "i8x16.shr_s" => `VSHIFTOP`_instr{ishape#47}(`%`_ishape{shape#4381, Jnn#492}(`%X%`_shape{lanetype#28665, dim#28665, i#115454}(`I8`_lanetype, `%`_dim{i#115461}(16))), `SHR`_vshiftop_{sx#29339}(`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)) + prod{ishape#49 : ishape, shape#4423 : shape, Jnn#496 : Jnn, lanetype#28767 : lanetype, dim#28767 : dim, i#115616 : nat, i#115623 : nat, sx#29373 : sx} "i8x16.shr_u" => `VSHIFTOP`_instr{ishape#49}(`%`_ishape{shape#4423, Jnn#496}(`%X%`_shape{lanetype#28767, dim#28767, i#115616}(`I8`_lanetype, `%`_dim{i#115623}(16))), `SHR`_vshiftop_{sx#29373}(`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_) + prod{ishape#51 : ishape, shape#4465 : shape, Jnn#500 : Jnn, lanetype#28869 : lanetype, dim#28869 : dim, i#115778 : nat, i#115785 : nat} "i16x8.shl" => `VSHIFTOP`_instr{ishape#51}(`%`_ishape{shape#4465, Jnn#500}(`%X%`_shape{lanetype#28869, dim#28869, i#115778}(`I16`_lanetype, `%`_dim{i#115785}(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)) + prod{ishape#53 : ishape, shape#4492 : shape, Jnn#504 : Jnn, lanetype#28926 : lanetype, dim#28926 : dim, i#115865 : nat, i#115872 : nat, sx#29422 : sx} "i16x8.shr_s" => `VSHIFTOP`_instr{ishape#53}(`%`_ishape{shape#4492, Jnn#504}(`%X%`_shape{lanetype#28926, dim#28926, i#115865}(`I16`_lanetype, `%`_dim{i#115872}(8))), `SHR`_vshiftop_{sx#29422}(`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)) + prod{ishape#55 : ishape, shape#4534 : shape, Jnn#508 : Jnn, lanetype#29028 : lanetype, dim#29028 : dim, i#116027 : nat, i#116034 : nat, sx#29456 : sx} "i16x8.shr_u" => `VSHIFTOP`_instr{ishape#55}(`%`_ishape{shape#4534, Jnn#508}(`%X%`_shape{lanetype#29028, dim#29028, i#116027}(`I16`_lanetype, `%`_dim{i#116034}(8))), `SHR`_vshiftop_{sx#29456}(`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_) + prod{ishape#57 : ishape, shape#4576 : shape, Jnn#512 : Jnn, lanetype#29130 : lanetype, dim#29130 : dim, i#116189 : nat, i#116196 : nat} "i32x4.shl" => `VSHIFTOP`_instr{ishape#57}(`%`_ishape{shape#4576, Jnn#512}(`%X%`_shape{lanetype#29130, dim#29130, i#116189}(`I32`_lanetype, `%`_dim{i#116196}(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)) + prod{ishape#59 : ishape, shape#4603 : shape, Jnn#516 : Jnn, lanetype#29187 : lanetype, dim#29187 : dim, i#116276 : nat, i#116283 : nat, sx#29505 : sx} "i32x4.shr_s" => `VSHIFTOP`_instr{ishape#59}(`%`_ishape{shape#4603, Jnn#516}(`%X%`_shape{lanetype#29187, dim#29187, i#116276}(`I32`_lanetype, `%`_dim{i#116283}(4))), `SHR`_vshiftop_{sx#29505}(`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)) + prod{ishape#61 : ishape, shape#4645 : shape, Jnn#520 : Jnn, lanetype#29289 : lanetype, dim#29289 : dim, i#116438 : nat, i#116445 : nat, sx#29539 : sx} "i32x4.shr_u" => `VSHIFTOP`_instr{ishape#61}(`%`_ishape{shape#4645, Jnn#520}(`%X%`_shape{lanetype#29289, dim#29289, i#116438}(`I32`_lanetype, `%`_dim{i#116445}(4))), `SHR`_vshiftop_{sx#29539}(`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_) + prod{ishape#63 : ishape, shape#4687 : shape, Jnn#524 : Jnn, lanetype#29391 : lanetype, dim#29391 : dim, i#116600 : nat, i#116607 : nat} "i64x2.shl" => `VSHIFTOP`_instr{ishape#63}(`%`_ishape{shape#4687, Jnn#524}(`%X%`_shape{lanetype#29391, dim#29391, i#116600}(`I64`_lanetype, `%`_dim{i#116607}(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)) + prod{ishape#65 : ishape, shape#4714 : shape, Jnn#528 : Jnn, lanetype#29448 : lanetype, dim#29448 : dim, i#116687 : nat, i#116694 : nat, sx#29588 : sx} "i64x2.shr_s" => `VSHIFTOP`_instr{ishape#65}(`%`_ishape{shape#4714, Jnn#528}(`%X%`_shape{lanetype#29448, dim#29448, i#116687}(`I64`_lanetype, `%`_dim{i#116694}(2))), `SHR`_vshiftop_{sx#29588}(`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)) + prod{ishape#67 : ishape, shape#4756 : shape, Jnn#532 : Jnn, lanetype#29550 : lanetype, dim#29550 : dim, i#116849 : nat, i#116856 : nat, sx#29622 : sx} "i64x2.shr_u" => `VSHIFTOP`_instr{ishape#67}(`%`_ishape{shape#4756, Jnn#532}(`%X%`_shape{lanetype#29550, dim#29550, i#116849}(`I64`_lanetype, `%`_dim{i#116856}(2))), `SHR`_vshiftop_{sx#29622}(`U`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) + prod{ishape#69 : ishape, shape#4798 : shape, Jnn#536 : Jnn, lanetype#29652 : lanetype, dim#29652 : dim, i#117011 : nat, i#117018 : nat} "i8x16.bitmask" => `VBITMASK`_instr{ishape#69}(`%`_ishape{shape#4798, Jnn#536}(`%X%`_shape{lanetype#29652, dim#29652, i#117011}(`I8`_lanetype, `%`_dim{i#117018}(16)))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) + prod{ishape#71 : ishape, shape#4810 : shape, Jnn#540 : Jnn, lanetype#29664 : lanetype, dim#29664 : dim, i#117023 : nat, i#117030 : nat} "i16x8.bitmask" => `VBITMASK`_instr{ishape#71}(`%`_ishape{shape#4810, Jnn#540}(`%X%`_shape{lanetype#29664, dim#29664, i#117023}(`I16`_lanetype, `%`_dim{i#117030}(8)))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) + prod{ishape#73 : ishape, shape#4822 : shape, Jnn#544 : Jnn, lanetype#29676 : lanetype, dim#29676 : dim, i#117035 : nat, i#117042 : nat} "i32x4.bitmask" => `VBITMASK`_instr{ishape#73}(`%`_ishape{shape#4822, Jnn#544}(`%X%`_shape{lanetype#29676, dim#29676, i#117035}(`I32`_lanetype, `%`_dim{i#117042}(4)))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) + prod{ishape#75 : ishape, shape#4834 : shape, Jnn#548 : Jnn, lanetype#29688 : lanetype, dim#29688 : dim, i#117047 : nat, i#117054 : nat} "i64x2.bitmask" => `VBITMASK`_instr{ishape#75}(`%`_ishape{shape#4834, Jnn#548}(`%X%`_shape{lanetype#29688, dim#29688, i#117047}(`I64`_lanetype, `%`_dim{i#117054}(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) + prod{ishape_1#71 : ishape, ishape_2#71 : ishape, sx#29624 : sx, shape#4836 : shape, Jnn#549 : Jnn, shape#4837 : shape, Jnn#550 : Jnn, shape#4838 : shape, Jnn#551 : Jnn, shape#4849 : shape, Jnn#555 : Jnn, lanetype#29700 : lanetype, dim#29700 : dim, i#117059 : nat, i#117066 : nat, shape#4861 : shape, Jnn#559 : Jnn, lanetype#29712 : lanetype, dim#29712 : dim, i#117071 : nat, i#117078 : nat} "i8x16.narrow_i16x8_s" => `VNARROW`_instr{ishape_1#71, ishape_2#71, sx#29624, shape#4836, Jnn#549, shape#4837, Jnn#550, shape#4838, Jnn#551}(`%`_ishape{shape#4849, Jnn#555}(`%X%`_shape{lanetype#29700, dim#29700, i#117059}(`I8`_lanetype, `%`_dim{i#117066}(16))), `%`_ishape{shape#4861, Jnn#559}(`%X%`_shape{lanetype#29712, dim#29712, i#117071}(`I16`_lanetype, `%`_dim{i#117078}(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) + prod{ishape_1#73 : ishape, ishape_2#73 : ishape, sx#29626 : sx, shape#4863 : shape, Jnn#560 : Jnn, shape#4864 : shape, Jnn#561 : Jnn, shape#4865 : shape, Jnn#562 : Jnn, shape#4876 : shape, Jnn#566 : Jnn, lanetype#29724 : lanetype, dim#29724 : dim, i#117083 : nat, i#117090 : nat, shape#4888 : shape, Jnn#570 : Jnn, lanetype#29736 : lanetype, dim#29736 : dim, i#117095 : nat, i#117102 : nat} "i8x16.narrow_i16x8_u" => `VNARROW`_instr{ishape_1#73, ishape_2#73, sx#29626, shape#4863, Jnn#560, shape#4864, Jnn#561, shape#4865, Jnn#562}(`%`_ishape{shape#4876, Jnn#566}(`%X%`_shape{lanetype#29724, dim#29724, i#117083}(`I8`_lanetype, `%`_dim{i#117090}(16))), `%`_ishape{shape#4888, Jnn#570}(`%X%`_shape{lanetype#29736, dim#29736, i#117095}(`I16`_lanetype, `%`_dim{i#117102}(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) + prod{ishape_1#75 : ishape, ishape_2#75 : ishape, sx#29628 : sx, shape#4890 : shape, Jnn#571 : Jnn, shape#4891 : shape, Jnn#572 : Jnn, shape#4892 : shape, Jnn#573 : Jnn, shape#4903 : shape, Jnn#577 : Jnn, lanetype#29748 : lanetype, dim#29748 : dim, i#117107 : nat, i#117114 : nat, shape#4915 : shape, Jnn#581 : Jnn, lanetype#29760 : lanetype, dim#29760 : dim, i#117119 : nat, i#117126 : nat} "i16x8.narrow_i32x4_s" => `VNARROW`_instr{ishape_1#75, ishape_2#75, sx#29628, shape#4890, Jnn#571, shape#4891, Jnn#572, shape#4892, Jnn#573}(`%`_ishape{shape#4903, Jnn#577}(`%X%`_shape{lanetype#29748, dim#29748, i#117107}(`I16`_lanetype, `%`_dim{i#117114}(8))), `%`_ishape{shape#4915, Jnn#581}(`%X%`_shape{lanetype#29760, dim#29760, i#117119}(`I32`_lanetype, `%`_dim{i#117126}(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) + prod{ishape_1#77 : ishape, ishape_2#77 : ishape, sx#29630 : sx, shape#4917 : shape, Jnn#582 : Jnn, shape#4918 : shape, Jnn#583 : Jnn, shape#4919 : shape, Jnn#584 : Jnn, shape#4930 : shape, Jnn#588 : Jnn, lanetype#29772 : lanetype, dim#29772 : dim, i#117131 : nat, i#117138 : nat, shape#4942 : shape, Jnn#592 : Jnn, lanetype#29784 : lanetype, dim#29784 : dim, i#117143 : nat, i#117150 : nat} "i16x8.narrow_i32x4_u" => `VNARROW`_instr{ishape_1#77, ishape_2#77, sx#29630, shape#4917, Jnn#582, shape#4918, Jnn#583, shape#4919, Jnn#584}(`%`_ishape{shape#4930, Jnn#588}(`%X%`_shape{lanetype#29772, dim#29772, i#117131}(`I16`_lanetype, `%`_dim{i#117138}(8))), `%`_ishape{shape#4942, Jnn#592}(`%X%`_shape{lanetype#29784, dim#29784, i#117143}(`I32`_lanetype, `%`_dim{i#117150}(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)) + prod{shape_1#59 : shape, shape_2#59 : shape, lanetype#29796 : lanetype, dim#29796 : dim, i#117155 : nat, i#117162 : nat, lanetype#29808 : lanetype, dim#29808 : dim, i#117167 : nat, i#117174 : nat, half#1172 : half, sx#29664 : sx} "i16x8.extend_low_i8x16_s" => `VCVTOP`_instr{shape_1#59, shape_2#59}(`%X%`_shape{lanetype#29796, dim#29796, i#117155}(`I16`_lanetype, `%`_dim{i#117162}(8)), `%X%`_shape{lanetype#29808, dim#29808, i#117167}(`I8`_lanetype, `%`_dim{i#117174}(16)), `EXTEND`_vcvtop__{half#1172, sx#29664}(`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)) + prod{shape_1#61 : shape, shape_2#61 : shape, lanetype#29911 : lanetype, dim#29911 : dim, i#117390 : nat, i#117397 : nat, lanetype#29923 : lanetype, dim#29923 : dim, i#117402 : nat, i#117409 : nat, half#1206 : half, sx#29698 : sx} "i16x8.extend_low_i8x16_u" => `VCVTOP`_instr{shape_1#61, shape_2#61}(`%X%`_shape{lanetype#29911, dim#29911, i#117390}(`I16`_lanetype, `%`_dim{i#117397}(8)), `%X%`_shape{lanetype#29923, dim#29923, i#117402}(`I8`_lanetype, `%`_dim{i#117409}(16)), `EXTEND`_vcvtop__{half#1206, sx#29698}(`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)) + prod{shape_1#63 : shape, shape_2#63 : shape, lanetype#30026 : lanetype, dim#30026 : dim, i#117625 : nat, i#117632 : nat, lanetype#30038 : lanetype, dim#30038 : dim, i#117637 : nat, i#117644 : nat, half#1240 : half, sx#29732 : sx} "i16x8.extend_high_i8x16_s" => `VCVTOP`_instr{shape_1#63, shape_2#63}(`%X%`_shape{lanetype#30026, dim#30026, i#117625}(`I16`_lanetype, `%`_dim{i#117632}(8)), `%X%`_shape{lanetype#30038, dim#30038, i#117637}(`I8`_lanetype, `%`_dim{i#117644}(16)), `EXTEND`_vcvtop__{half#1240, sx#29732}(`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)) + prod{shape_1#65 : shape, shape_2#65 : shape, lanetype#30141 : lanetype, dim#30141 : dim, i#117860 : nat, i#117867 : nat, lanetype#30153 : lanetype, dim#30153 : dim, i#117872 : nat, i#117879 : nat, half#1274 : half, sx#29766 : sx} "i16x8.extend_high_i8x16_u" => `VCVTOP`_instr{shape_1#65, shape_2#65}(`%X%`_shape{lanetype#30141, dim#30141, i#117860}(`I16`_lanetype, `%`_dim{i#117867}(8)), `%X%`_shape{lanetype#30153, dim#30153, i#117872}(`I8`_lanetype, `%`_dim{i#117879}(16)), `EXTEND`_vcvtop__{half#1274, sx#29766}(`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)) + prod{shape_1#67 : shape, shape_2#67 : shape, lanetype#30256 : lanetype, dim#30256 : dim, i#118095 : nat, i#118102 : nat, lanetype#30268 : lanetype, dim#30268 : dim, i#118107 : nat, i#118114 : nat, half#1308 : half, sx#29800 : sx} "i32x4.extend_low_i16x8_s" => `VCVTOP`_instr{shape_1#67, shape_2#67}(`%X%`_shape{lanetype#30256, dim#30256, i#118095}(`I32`_lanetype, `%`_dim{i#118102}(4)), `%X%`_shape{lanetype#30268, dim#30268, i#118107}(`I16`_lanetype, `%`_dim{i#118114}(8)), `EXTEND`_vcvtop__{half#1308, sx#29800}(`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)) + prod{shape_1#69 : shape, shape_2#69 : shape, lanetype#30371 : lanetype, dim#30371 : dim, i#118330 : nat, i#118337 : nat, lanetype#30383 : lanetype, dim#30383 : dim, i#118342 : nat, i#118349 : nat, half#1342 : half, sx#29834 : sx} "i32x4.extend_low_i16x8_u" => `VCVTOP`_instr{shape_1#69, shape_2#69}(`%X%`_shape{lanetype#30371, dim#30371, i#118330}(`I32`_lanetype, `%`_dim{i#118337}(4)), `%X%`_shape{lanetype#30383, dim#30383, i#118342}(`I16`_lanetype, `%`_dim{i#118349}(8)), `EXTEND`_vcvtop__{half#1342, sx#29834}(`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)) + prod{shape_1#71 : shape, shape_2#71 : shape, lanetype#30486 : lanetype, dim#30486 : dim, i#118565 : nat, i#118572 : nat, lanetype#30498 : lanetype, dim#30498 : dim, i#118577 : nat, i#118584 : nat, half#1376 : half, sx#29868 : sx} "i32x4.extend_high_i16x8_s" => `VCVTOP`_instr{shape_1#71, shape_2#71}(`%X%`_shape{lanetype#30486, dim#30486, i#118565}(`I32`_lanetype, `%`_dim{i#118572}(4)), `%X%`_shape{lanetype#30498, dim#30498, i#118577}(`I16`_lanetype, `%`_dim{i#118584}(8)), `EXTEND`_vcvtop__{half#1376, sx#29868}(`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)) + prod{shape_1#73 : shape, shape_2#73 : shape, lanetype#30601 : lanetype, dim#30601 : dim, i#118800 : nat, i#118807 : nat, lanetype#30613 : lanetype, dim#30613 : dim, i#118812 : nat, i#118819 : nat, half#1410 : half, sx#29902 : sx} "i32x4.extend_high_i16x8_u" => `VCVTOP`_instr{shape_1#73, shape_2#73}(`%X%`_shape{lanetype#30601, dim#30601, i#118800}(`I32`_lanetype, `%`_dim{i#118807}(4)), `%X%`_shape{lanetype#30613, dim#30613, i#118812}(`I16`_lanetype, `%`_dim{i#118819}(8)), `EXTEND`_vcvtop__{half#1410, sx#29902}(`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, ?())) + prod{shape_1#75 : shape, shape_2#75 : shape, lanetype#30716 : lanetype, dim#30716 : dim, i#119035 : nat, i#119042 : nat, lanetype#30728 : lanetype, dim#30728 : dim, i#119047 : nat, i#119054 : nat, sx#29966 : sx, `zero?#647` : zero?} "i32x4.trunc_sat_f32x4_s" => `VCVTOP`_instr{shape_1#75, shape_2#75}(`%X%`_shape{lanetype#30716, dim#30716, i#119035}(`I32`_lanetype, `%`_dim{i#119042}(4)), `%X%`_shape{lanetype#30728, dim#30728, i#119047}(`F32`_lanetype, `%`_dim{i#119054}(4)), `TRUNC_SAT`_vcvtop__{sx#29966, `zero?#647`}(`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, ?())) + prod{shape_1#77 : shape, shape_2#77 : shape, lanetype#30891 : lanetype, dim#30891 : dim, i#119330 : nat, i#119337 : nat, lanetype#30903 : lanetype, dim#30903 : dim, i#119342 : nat, i#119349 : nat, sx#30030 : sx, `zero?#711` : zero?} "i32x4.trunc_sat_f32x4_u" => `VCVTOP`_instr{shape_1#77, shape_2#77}(`%X%`_shape{lanetype#30891, dim#30891, i#119330}(`I32`_lanetype, `%`_dim{i#119337}(4)), `%X%`_shape{lanetype#30903, dim#30903, i#119342}(`F32`_lanetype, `%`_dim{i#119349}(4)), `TRUNC_SAT`_vcvtop__{sx#30030, `zero?#711`}(`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))) + prod{shape_1#79 : shape, shape_2#79 : shape, lanetype#31066 : lanetype, dim#31066 : dim, i#119625 : nat, i#119632 : nat, lanetype#31078 : lanetype, dim#31078 : dim, i#119637 : nat, i#119644 : nat, sx#30094 : sx, `zero?#775` : zero?} "i32x4.trunc_sat_f64x2_s_zero" => `VCVTOP`_instr{shape_1#79, shape_2#79}(`%X%`_shape{lanetype#31066, dim#31066, i#119625}(`I32`_lanetype, `%`_dim{i#119632}(4)), `%X%`_shape{lanetype#31078, dim#31078, i#119637}(`F64`_lanetype, `%`_dim{i#119644}(2)), `TRUNC_SAT`_vcvtop__{sx#30094, `zero?#775`}(`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))) + prod{shape_1#81 : shape, shape_2#81 : shape, lanetype#31241 : lanetype, dim#31241 : dim, i#119920 : nat, i#119927 : nat, lanetype#31253 : lanetype, dim#31253 : dim, i#119932 : nat, i#119939 : nat, sx#30158 : sx, `zero?#839` : zero?} "i32x4.trunc_sat_f64x2_u_zero" => `VCVTOP`_instr{shape_1#81, shape_2#81}(`%X%`_shape{lanetype#31241, dim#31241, i#119920}(`I32`_lanetype, `%`_dim{i#119927}(4)), `%X%`_shape{lanetype#31253, dim#31253, i#119932}(`F64`_lanetype, `%`_dim{i#119939}(2)), `TRUNC_SAT`_vcvtop__{sx#30158, `zero?#839`}(`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, ?())) + prod{shape_1#83 : shape, shape_2#83 : shape, lanetype#31416 : lanetype, dim#31416 : dim, i#120215 : nat, i#120222 : nat, lanetype#31428 : lanetype, dim#31428 : dim, i#120227 : nat, i#120234 : nat, sx#30222 : sx, `zero?#903` : zero?} "i32x4.relaxed_trunc_f32x4_s" => `VCVTOP`_instr{shape_1#83, shape_2#83}(`%X%`_shape{lanetype#31416, dim#31416, i#120215}(`I32`_lanetype, `%`_dim{i#120222}(4)), `%X%`_shape{lanetype#31428, dim#31428, i#120227}(`F32`_lanetype, `%`_dim{i#120234}(4)), `RELAXED_TRUNC`_vcvtop__{sx#30222, `zero?#903`}(`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, ?())) + prod{shape_1#85 : shape, shape_2#85 : shape, lanetype#31591 : lanetype, dim#31591 : dim, i#120510 : nat, i#120517 : nat, lanetype#31603 : lanetype, dim#31603 : dim, i#120522 : nat, i#120529 : nat, sx#30286 : sx, `zero?#967` : zero?} "i32x4.relaxed_trunc_f32x4_u" => `VCVTOP`_instr{shape_1#85, shape_2#85}(`%X%`_shape{lanetype#31591, dim#31591, i#120510}(`I32`_lanetype, `%`_dim{i#120517}(4)), `%X%`_shape{lanetype#31603, dim#31603, i#120522}(`F32`_lanetype, `%`_dim{i#120529}(4)), `RELAXED_TRUNC`_vcvtop__{sx#30286, `zero?#967`}(`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))) + prod{shape_1#87 : shape, shape_2#87 : shape, lanetype#31766 : lanetype, dim#31766 : dim, i#120805 : nat, i#120812 : nat, lanetype#31778 : lanetype, dim#31778 : dim, i#120817 : nat, i#120824 : nat, sx#30350 : sx, `zero?#1031` : zero?} "i32x4.relaxed_trunc_f64x2_s_zero" => `VCVTOP`_instr{shape_1#87, shape_2#87}(`%X%`_shape{lanetype#31766, dim#31766, i#120805}(`I32`_lanetype, `%`_dim{i#120812}(4)), `%X%`_shape{lanetype#31778, dim#31778, i#120817}(`F64`_lanetype, `%`_dim{i#120824}(2)), `RELAXED_TRUNC`_vcvtop__{sx#30350, `zero?#1031`}(`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))) + prod{shape_1#89 : shape, shape_2#89 : shape, lanetype#31941 : lanetype, dim#31941 : dim, i#121100 : nat, i#121107 : nat, lanetype#31953 : lanetype, dim#31953 : dim, i#121112 : nat, i#121119 : nat, sx#30414 : sx, `zero?#1095` : zero?} "i32x4.relaxed_trunc_f64x2_u_zero" => `VCVTOP`_instr{shape_1#89, shape_2#89}(`%X%`_shape{lanetype#31941, dim#31941, i#121100}(`I32`_lanetype, `%`_dim{i#121107}(4)), `%X%`_shape{lanetype#31953, dim#31953, i#121112}(`F64`_lanetype, `%`_dim{i#121119}(2)), `RELAXED_TRUNC`_vcvtop__{sx#30414, `zero?#1095`}(`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)) + prod{shape_1#91 : shape, shape_2#91 : shape, lanetype#32116 : lanetype, dim#32116 : dim, i#121395 : nat, i#121402 : nat, lanetype#32128 : lanetype, dim#32128 : dim, i#121407 : nat, i#121414 : nat, half#1444 : half, sx#30448 : sx} "i64x2.extend_low_i32x4_s" => `VCVTOP`_instr{shape_1#91, shape_2#91}(`%X%`_shape{lanetype#32116, dim#32116, i#121395}(`I64`_lanetype, `%`_dim{i#121402}(2)), `%X%`_shape{lanetype#32128, dim#32128, i#121407}(`I32`_lanetype, `%`_dim{i#121414}(4)), `EXTEND`_vcvtop__{half#1444, sx#30448}(`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)) + prod{shape_1#93 : shape, shape_2#93 : shape, lanetype#32231 : lanetype, dim#32231 : dim, i#121630 : nat, i#121637 : nat, lanetype#32243 : lanetype, dim#32243 : dim, i#121642 : nat, i#121649 : nat, half#1478 : half, sx#30482 : sx} "i64x2.extend_low_i32x4_u" => `VCVTOP`_instr{shape_1#93, shape_2#93}(`%X%`_shape{lanetype#32231, dim#32231, i#121630}(`I64`_lanetype, `%`_dim{i#121637}(2)), `%X%`_shape{lanetype#32243, dim#32243, i#121642}(`I32`_lanetype, `%`_dim{i#121649}(4)), `EXTEND`_vcvtop__{half#1478, sx#30482}(`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)) + prod{shape_1#95 : shape, shape_2#95 : shape, lanetype#32346 : lanetype, dim#32346 : dim, i#121865 : nat, i#121872 : nat, lanetype#32358 : lanetype, dim#32358 : dim, i#121877 : nat, i#121884 : nat, half#1512 : half, sx#30516 : sx} "i64x2.extend_high_i32x4_s" => `VCVTOP`_instr{shape_1#95, shape_2#95}(`%X%`_shape{lanetype#32346, dim#32346, i#121865}(`I64`_lanetype, `%`_dim{i#121872}(2)), `%X%`_shape{lanetype#32358, dim#32358, i#121877}(`I32`_lanetype, `%`_dim{i#121884}(4)), `EXTEND`_vcvtop__{half#1512, sx#30516}(`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)) + prod{shape_1#97 : shape, shape_2#97 : shape, lanetype#32461 : lanetype, dim#32461 : dim, i#122100 : nat, i#122107 : nat, lanetype#32473 : lanetype, dim#32473 : dim, i#122112 : nat, i#122119 : nat, half#1546 : half, sx#30550 : sx} "i64x2.extend_high_i32x4_u" => `VCVTOP`_instr{shape_1#97, shape_2#97}(`%X%`_shape{lanetype#32461, dim#32461, i#122100}(`I64`_lanetype, `%`_dim{i#122107}(2)), `%X%`_shape{lanetype#32473, dim#32473, i#122112}(`I32`_lanetype, `%`_dim{i#122119}(4)), `EXTEND`_vcvtop__{half#1546, sx#30550}(`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)) + prod{shape_1#99 : shape, shape_2#99 : shape, lanetype#32576 : lanetype, dim#32576 : dim, i#122335 : nat, i#122342 : nat, lanetype#32588 : lanetype, dim#32588 : dim, i#122347 : nat, i#122354 : nat, zero#2143 : zero} "f32x4.demote_f64x2_zero" => `VCVTOP`_instr{shape_1#99, shape_2#99}(`%X%`_shape{lanetype#32576, dim#32576, i#122335}(`F32`_lanetype, `%`_dim{i#122342}(4)), `%X%`_shape{lanetype#32588, dim#32588, i#122347}(`F64`_lanetype, `%`_dim{i#122354}(2)), `DEMOTE`_vcvtop__{zero#2143}(`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)) + prod{shape_1#101 : shape, shape_2#101 : shape, lanetype#32841 : lanetype, dim#32841 : dim, i#122780 : nat, i#122787 : nat, lanetype#32853 : lanetype, dim#32853 : dim, i#122792 : nat, i#122799 : nat, `half?#175` : half?, sx#30584 : sx} "f32x4.convert_i32x4_s" => `VCVTOP`_instr{shape_1#101, shape_2#101}(`%X%`_shape{lanetype#32841, dim#32841, i#122780}(`F32`_lanetype, `%`_dim{i#122787}(4)), `%X%`_shape{lanetype#32853, dim#32853, i#122792}(`I32`_lanetype, `%`_dim{i#122799}(4)), `CONVERT`_vcvtop__{`half?#175`, sx#30584}(?(), `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)) + prod{shape_1#103 : shape, shape_2#103 : shape, lanetype#33046 : lanetype, dim#33046 : dim, i#123165 : nat, i#123172 : nat, lanetype#33058 : lanetype, dim#33058 : dim, i#123177 : nat, i#123184 : nat, `half?#209` : half?, sx#30618 : sx} "f32x4.convert_i32x4_u" => `VCVTOP`_instr{shape_1#103, shape_2#103}(`%X%`_shape{lanetype#33046, dim#33046, i#123165}(`F32`_lanetype, `%`_dim{i#123172}(4)), `%X%`_shape{lanetype#33058, dim#33058, i#123177}(`I32`_lanetype, `%`_dim{i#123184}(4)), `CONVERT`_vcvtop__{`half?#209`, sx#30618}(?(), `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__) + prod{shape_1#105 : shape, shape_2#105 : shape, lanetype#33251 : lanetype, dim#33251 : dim, i#123550 : nat, i#123557 : nat, lanetype#33263 : lanetype, dim#33263 : dim, i#123562 : nat, i#123569 : nat} "f64x2.promote_low_f32x4" => `VCVTOP`_instr{shape_1#105, shape_2#105}(`%X%`_shape{lanetype#33251, dim#33251, i#123550}(`F64`_lanetype, `%`_dim{i#123557}(2)), `%X%`_shape{lanetype#33263, dim#33263, i#123562}(`F32`_lanetype, `%`_dim{i#123569}(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)) + prod{shape_1#107 : shape, shape_2#107 : shape, lanetype#33516 : lanetype, dim#33516 : dim, i#123995 : nat, i#124002 : nat, lanetype#33528 : lanetype, dim#33528 : dim, i#124007 : nat, i#124014 : nat, `half?#243` : half?, sx#30652 : sx} "f64x2.convert_low_i32x4_s" => `VCVTOP`_instr{shape_1#107, shape_2#107}(`%X%`_shape{lanetype#33516, dim#33516, i#123995}(`F64`_lanetype, `%`_dim{i#124002}(2)), `%X%`_shape{lanetype#33528, dim#33528, i#124007}(`I32`_lanetype, `%`_dim{i#124014}(4)), `CONVERT`_vcvtop__{`half?#243`, sx#30652}(?(`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)) + prod{shape_1#109 : shape, shape_2#109 : shape, lanetype#33721 : lanetype, dim#33721 : dim, i#124380 : nat, i#124387 : nat, lanetype#33733 : lanetype, dim#33733 : dim, i#124392 : nat, i#124399 : nat, `half?#277` : half?, sx#30686 : sx} "f64x2.convert_low_i32x4_u" => `VCVTOP`_instr{shape_1#109, shape_2#109}(`%X%`_shape{lanetype#33721, dim#33721, i#124380}(`F64`_lanetype, `%`_dim{i#124387}(2)), `%X%`_shape{lanetype#33733, dim#33733, i#124392}(`I32`_lanetype, `%`_dim{i#124399}(4)), `CONVERT`_vcvtop__{`half?#277`, sx#30686}(?(`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)) + prod{ishape_1#79 : ishape, ishape_2#79 : ishape, shape#4954 : shape, Jnn#596 : Jnn, lanetype#33926 : lanetype, dim#33926 : dim, i#124765 : nat, i#124772 : nat, shape#4966 : shape, Jnn#600 : Jnn, lanetype#33938 : lanetype, dim#33938 : dim, i#124777 : nat, i#124784 : nat, sx#30720 : sx} "i16x8.extadd_pairwise_i8x16_s" => `VEXTUNOP`_instr{ishape_1#79, ishape_2#79}(`%`_ishape{shape#4954, Jnn#596}(`%X%`_shape{lanetype#33926, dim#33926, i#124765}(`I16`_lanetype, `%`_dim{i#124772}(8))), `%`_ishape{shape#4966, Jnn#600}(`%X%`_shape{lanetype#33938, dim#33938, i#124777}(`I8`_lanetype, `%`_dim{i#124784}(16))), `EXTADD_PAIRWISE`_vextunop__{sx#30720}(`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)) + prod{ishape_1#81 : ishape, ishape_2#81 : ishape, shape#5069 : shape, Jnn#604 : Jnn, lanetype#34161 : lanetype, dim#34161 : dim, i#125120 : nat, i#125127 : nat, shape#5081 : shape, Jnn#608 : Jnn, lanetype#34173 : lanetype, dim#34173 : dim, i#125132 : nat, i#125139 : nat, sx#30754 : sx} "i16x8.extadd_pairwise_i8x16_u" => `VEXTUNOP`_instr{ishape_1#81, ishape_2#81}(`%`_ishape{shape#5069, Jnn#604}(`%X%`_shape{lanetype#34161, dim#34161, i#125120}(`I16`_lanetype, `%`_dim{i#125127}(8))), `%`_ishape{shape#5081, Jnn#608}(`%X%`_shape{lanetype#34173, dim#34173, i#125132}(`I8`_lanetype, `%`_dim{i#125139}(16))), `EXTADD_PAIRWISE`_vextunop__{sx#30754}(`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)) + prod{ishape_1#83 : ishape, ishape_2#83 : ishape, shape#5184 : shape, Jnn#612 : Jnn, lanetype#34396 : lanetype, dim#34396 : dim, i#125475 : nat, i#125482 : nat, shape#5196 : shape, Jnn#616 : Jnn, lanetype#34408 : lanetype, dim#34408 : dim, i#125487 : nat, i#125494 : nat, sx#30788 : sx} "i32x4.extadd_pairwise_i16x8_s" => `VEXTUNOP`_instr{ishape_1#83, ishape_2#83}(`%`_ishape{shape#5184, Jnn#612}(`%X%`_shape{lanetype#34396, dim#34396, i#125475}(`I32`_lanetype, `%`_dim{i#125482}(4))), `%`_ishape{shape#5196, Jnn#616}(`%X%`_shape{lanetype#34408, dim#34408, i#125487}(`I16`_lanetype, `%`_dim{i#125494}(8))), `EXTADD_PAIRWISE`_vextunop__{sx#30788}(`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)) + prod{ishape_1#85 : ishape, ishape_2#85 : ishape, shape#5299 : shape, Jnn#620 : Jnn, lanetype#34631 : lanetype, dim#34631 : dim, i#125830 : nat, i#125837 : nat, shape#5311 : shape, Jnn#624 : Jnn, lanetype#34643 : lanetype, dim#34643 : dim, i#125842 : nat, i#125849 : nat, sx#30822 : sx} "i32x4.extadd_pairwise_i16x8_u" => `VEXTUNOP`_instr{ishape_1#85, ishape_2#85}(`%`_ishape{shape#5299, Jnn#620}(`%X%`_shape{lanetype#34631, dim#34631, i#125830}(`I32`_lanetype, `%`_dim{i#125837}(4))), `%`_ishape{shape#5311, Jnn#624}(`%X%`_shape{lanetype#34643, dim#34643, i#125842}(`I16`_lanetype, `%`_dim{i#125849}(8))), `EXTADD_PAIRWISE`_vextunop__{sx#30822}(`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)) + prod{ishape_1#87 : ishape, ishape_2#87 : ishape, shape#5414 : shape, Jnn#628 : Jnn, lanetype#34866 : lanetype, dim#34866 : dim, i#126185 : nat, i#126192 : nat, shape#5426 : shape, Jnn#632 : Jnn, lanetype#34878 : lanetype, dim#34878 : dim, i#126197 : nat, i#126204 : nat, half#1820 : half, sx#30856 : sx} "i16x8.extmul_low_i8x16_s" => `VEXTBINOP`_instr{ishape_1#87, ishape_2#87}(`%`_ishape{shape#5414, Jnn#628}(`%X%`_shape{lanetype#34866, dim#34866, i#126185}(`I16`_lanetype, `%`_dim{i#126192}(8))), `%`_ishape{shape#5426, Jnn#632}(`%X%`_shape{lanetype#34878, dim#34878, i#126197}(`I8`_lanetype, `%`_dim{i#126204}(16))), `EXTMUL`_vextbinop__{half#1820, sx#30856}(`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)) + prod{ishape_1#89 : ishape, ishape_2#89 : ishape, shape#5529 : shape, Jnn#636 : Jnn, lanetype#35101 : lanetype, dim#35101 : dim, i#126540 : nat, i#126547 : nat, shape#5541 : shape, Jnn#640 : Jnn, lanetype#35113 : lanetype, dim#35113 : dim, i#126552 : nat, i#126559 : nat, half#1854 : half, sx#30890 : sx} "i16x8.extmul_low_i8x16_u" => `VEXTBINOP`_instr{ishape_1#89, ishape_2#89}(`%`_ishape{shape#5529, Jnn#636}(`%X%`_shape{lanetype#35101, dim#35101, i#126540}(`I16`_lanetype, `%`_dim{i#126547}(8))), `%`_ishape{shape#5541, Jnn#640}(`%X%`_shape{lanetype#35113, dim#35113, i#126552}(`I8`_lanetype, `%`_dim{i#126559}(16))), `EXTMUL`_vextbinop__{half#1854, sx#30890}(`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)) + prod{ishape_1#91 : ishape, ishape_2#91 : ishape, shape#5644 : shape, Jnn#644 : Jnn, lanetype#35336 : lanetype, dim#35336 : dim, i#126895 : nat, i#126902 : nat, shape#5656 : shape, Jnn#648 : Jnn, lanetype#35348 : lanetype, dim#35348 : dim, i#126907 : nat, i#126914 : nat, half#1888 : half, sx#30924 : sx} "i16x8.extmul_high_i8x16_s" => `VEXTBINOP`_instr{ishape_1#91, ishape_2#91}(`%`_ishape{shape#5644, Jnn#644}(`%X%`_shape{lanetype#35336, dim#35336, i#126895}(`I16`_lanetype, `%`_dim{i#126902}(8))), `%`_ishape{shape#5656, Jnn#648}(`%X%`_shape{lanetype#35348, dim#35348, i#126907}(`I8`_lanetype, `%`_dim{i#126914}(16))), `EXTMUL`_vextbinop__{half#1888, sx#30924}(`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)) + prod{ishape_1#93 : ishape, ishape_2#93 : ishape, shape#5759 : shape, Jnn#652 : Jnn, lanetype#35571 : lanetype, dim#35571 : dim, i#127250 : nat, i#127257 : nat, shape#5771 : shape, Jnn#656 : Jnn, lanetype#35583 : lanetype, dim#35583 : dim, i#127262 : nat, i#127269 : nat, half#1922 : half, sx#30958 : sx} "i16x8.extmul_high_i8x16_u" => `VEXTBINOP`_instr{ishape_1#93, ishape_2#93}(`%`_ishape{shape#5759, Jnn#652}(`%X%`_shape{lanetype#35571, dim#35571, i#127250}(`I16`_lanetype, `%`_dim{i#127257}(8))), `%`_ishape{shape#5771, Jnn#656}(`%X%`_shape{lanetype#35583, dim#35583, i#127262}(`I8`_lanetype, `%`_dim{i#127269}(16))), `EXTMUL`_vextbinop__{half#1922, sx#30958}(`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)) + prod{ishape_1#95 : ishape, ishape_2#95 : ishape, shape#5874 : shape, Jnn#660 : Jnn, lanetype#35806 : lanetype, dim#35806 : dim, i#127605 : nat, i#127612 : nat, shape#5886 : shape, Jnn#664 : Jnn, lanetype#35818 : lanetype, dim#35818 : dim, i#127617 : nat, i#127624 : nat, half#1956 : half, sx#30992 : sx} "i32x4.extmul_low_i16x8_s" => `VEXTBINOP`_instr{ishape_1#95, ishape_2#95}(`%`_ishape{shape#5874, Jnn#660}(`%X%`_shape{lanetype#35806, dim#35806, i#127605}(`I32`_lanetype, `%`_dim{i#127612}(4))), `%`_ishape{shape#5886, Jnn#664}(`%X%`_shape{lanetype#35818, dim#35818, i#127617}(`I16`_lanetype, `%`_dim{i#127624}(8))), `EXTMUL`_vextbinop__{half#1956, sx#30992}(`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)) + prod{ishape_1#97 : ishape, ishape_2#97 : ishape, shape#5989 : shape, Jnn#668 : Jnn, lanetype#36041 : lanetype, dim#36041 : dim, i#127960 : nat, i#127967 : nat, shape#6001 : shape, Jnn#672 : Jnn, lanetype#36053 : lanetype, dim#36053 : dim, i#127972 : nat, i#127979 : nat, half#1990 : half, sx#31026 : sx} "i32x4.extmul_low_i16x8_u" => `VEXTBINOP`_instr{ishape_1#97, ishape_2#97}(`%`_ishape{shape#5989, Jnn#668}(`%X%`_shape{lanetype#36041, dim#36041, i#127960}(`I32`_lanetype, `%`_dim{i#127967}(4))), `%`_ishape{shape#6001, Jnn#672}(`%X%`_shape{lanetype#36053, dim#36053, i#127972}(`I16`_lanetype, `%`_dim{i#127979}(8))), `EXTMUL`_vextbinop__{half#1990, sx#31026}(`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)) + prod{ishape_1#99 : ishape, ishape_2#99 : ishape, shape#6104 : shape, Jnn#676 : Jnn, lanetype#36276 : lanetype, dim#36276 : dim, i#128315 : nat, i#128322 : nat, shape#6116 : shape, Jnn#680 : Jnn, lanetype#36288 : lanetype, dim#36288 : dim, i#128327 : nat, i#128334 : nat, half#2024 : half, sx#31060 : sx} "i32x4.extmul_high_i16x8_s" => `VEXTBINOP`_instr{ishape_1#99, ishape_2#99}(`%`_ishape{shape#6104, Jnn#676}(`%X%`_shape{lanetype#36276, dim#36276, i#128315}(`I32`_lanetype, `%`_dim{i#128322}(4))), `%`_ishape{shape#6116, Jnn#680}(`%X%`_shape{lanetype#36288, dim#36288, i#128327}(`I16`_lanetype, `%`_dim{i#128334}(8))), `EXTMUL`_vextbinop__{half#2024, sx#31060}(`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)) + prod{ishape_1#101 : ishape, ishape_2#101 : ishape, shape#6219 : shape, Jnn#684 : Jnn, lanetype#36511 : lanetype, dim#36511 : dim, i#128670 : nat, i#128677 : nat, shape#6231 : shape, Jnn#688 : Jnn, lanetype#36523 : lanetype, dim#36523 : dim, i#128682 : nat, i#128689 : nat, half#2058 : half, sx#31094 : sx} "i32x4.extmul_high_i16x8_u" => `VEXTBINOP`_instr{ishape_1#101, ishape_2#101}(`%`_ishape{shape#6219, Jnn#684}(`%X%`_shape{lanetype#36511, dim#36511, i#128670}(`I32`_lanetype, `%`_dim{i#128677}(4))), `%`_ishape{shape#6231, Jnn#688}(`%X%`_shape{lanetype#36523, dim#36523, i#128682}(`I16`_lanetype, `%`_dim{i#128689}(8))), `EXTMUL`_vextbinop__{half#2058, sx#31094}(`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__) + prod{ishape_1#103 : ishape, ishape_2#103 : ishape, shape#6334 : shape, Jnn#692 : Jnn, lanetype#36746 : lanetype, dim#36746 : dim, i#129025 : nat, i#129032 : nat, shape#6346 : shape, Jnn#696 : Jnn, lanetype#36758 : lanetype, dim#36758 : dim, i#129037 : nat, i#129044 : nat} "i32x4.dot_i16x8_s" => `VEXTBINOP`_instr{ishape_1#103, ishape_2#103}(`%`_ishape{shape#6334, Jnn#692}(`%X%`_shape{lanetype#36746, dim#36746, i#129025}(`I32`_lanetype, `%`_dim{i#129032}(4))), `%`_ishape{shape#6346, Jnn#696}(`%X%`_shape{lanetype#36758, dim#36758, i#129037}(`I16`_lanetype, `%`_dim{i#129044}(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)) + prod{ishape_1#105 : ishape, ishape_2#105 : ishape, shape#6449 : shape, Jnn#700 : Jnn, lanetype#36981 : lanetype, dim#36981 : dim, i#129380 : nat, i#129387 : nat, shape#6461 : shape, Jnn#704 : Jnn, lanetype#36993 : lanetype, dim#36993 : dim, i#129392 : nat, i#129399 : nat, half#2122 : half, sx#31158 : sx} "i64x2.extmul_low_i32x4_s" => `VEXTBINOP`_instr{ishape_1#105, ishape_2#105}(`%`_ishape{shape#6449, Jnn#700}(`%X%`_shape{lanetype#36981, dim#36981, i#129380}(`I64`_lanetype, `%`_dim{i#129387}(2))), `%`_ishape{shape#6461, Jnn#704}(`%X%`_shape{lanetype#36993, dim#36993, i#129392}(`I32`_lanetype, `%`_dim{i#129399}(4))), `EXTMUL`_vextbinop__{half#2122, sx#31158}(`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)) + prod{ishape_1#107 : ishape, ishape_2#107 : ishape, shape#6564 : shape, Jnn#708 : Jnn, lanetype#37216 : lanetype, dim#37216 : dim, i#129735 : nat, i#129742 : nat, shape#6576 : shape, Jnn#712 : Jnn, lanetype#37228 : lanetype, dim#37228 : dim, i#129747 : nat, i#129754 : nat, half#2156 : half, sx#31192 : sx} "i64x2.extmul_low_i32x4_u" => `VEXTBINOP`_instr{ishape_1#107, ishape_2#107}(`%`_ishape{shape#6564, Jnn#708}(`%X%`_shape{lanetype#37216, dim#37216, i#129735}(`I64`_lanetype, `%`_dim{i#129742}(2))), `%`_ishape{shape#6576, Jnn#712}(`%X%`_shape{lanetype#37228, dim#37228, i#129747}(`I32`_lanetype, `%`_dim{i#129754}(4))), `EXTMUL`_vextbinop__{half#2156, sx#31192}(`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)) + prod{ishape_1#109 : ishape, ishape_2#109 : ishape, shape#6679 : shape, Jnn#716 : Jnn, lanetype#37451 : lanetype, dim#37451 : dim, i#130090 : nat, i#130097 : nat, shape#6691 : shape, Jnn#720 : Jnn, lanetype#37463 : lanetype, dim#37463 : dim, i#130102 : nat, i#130109 : nat, half#2190 : half, sx#31226 : sx} "i64x2.extmul_high_i32x4_s" => `VEXTBINOP`_instr{ishape_1#109, ishape_2#109}(`%`_ishape{shape#6679, Jnn#716}(`%X%`_shape{lanetype#37451, dim#37451, i#130090}(`I64`_lanetype, `%`_dim{i#130097}(2))), `%`_ishape{shape#6691, Jnn#720}(`%X%`_shape{lanetype#37463, dim#37463, i#130102}(`I32`_lanetype, `%`_dim{i#130109}(4))), `EXTMUL`_vextbinop__{half#2190, sx#31226}(`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)) + prod{ishape_1#111 : ishape, ishape_2#111 : ishape, shape#6794 : shape, Jnn#724 : Jnn, lanetype#37686 : lanetype, dim#37686 : dim, i#130445 : nat, i#130452 : nat, shape#6806 : shape, Jnn#728 : Jnn, lanetype#37698 : lanetype, dim#37698 : dim, i#130457 : nat, i#130464 : nat, half#2224 : half, sx#31260 : sx} "i64x2.extmul_high_i32x4_u" => `VEXTBINOP`_instr{ishape_1#111, ishape_2#111}(`%`_ishape{shape#6794, Jnn#724}(`%X%`_shape{lanetype#37686, dim#37686, i#130445}(`I64`_lanetype, `%`_dim{i#130452}(2))), `%`_ishape{shape#6806, Jnn#728}(`%X%`_shape{lanetype#37698, dim#37698, i#130457}(`I32`_lanetype, `%`_dim{i#130464}(4))), `EXTMUL`_vextbinop__{half#2224, sx#31260}(`HIGH`_half, `U`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec rec { @@ -10755,16 +122314,16 @@ grammar Tinstrs_(I : I) : instr* ;; ../../../../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*`}) + prod{blocktype#41 : blocktype, `instr*#2360` : instr*, bt : blocktype, `in*` : instr*, `char*#1237` : char*, `id?` : char?, I' : I, `char*#1243` : char*, `id'?` : char?} {{"block"} {(?(`%`_name{`char*#1237`}(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name{`char*#1243`}(lift(id'?{id' <- `id'?`}))):Tid?{}}} => `BLOCK`_instr{blocktype#41, `instr*#2360`}(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*`}) + prod{blocktype#43 : blocktype, `instr*#2362` : instr*, bt : blocktype, `in*` : instr*, `char*#1249` : char*, `id?` : char?, I' : I, `char*#1255` : char*, `id'?` : char?} {{"loop"} {(?(`%`_name{`char*#1249`}(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name{`char*#1255`}(lift(id'?{id' <- `id'?`}))):Tid?{}}} => `LOOP`_instr{blocktype#43, `instr*#2362`}(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*`}) + prod{blocktype#45 : blocktype, `instr*#2364` : instr*, bt : blocktype, `in_1*` : instr*, `in_2*` : instr*, `char*#1261` : char*, `id?` : char?, I' : I, `char*#1267` : char*, `id_1?` : char?, `char*#1273` : char*, `id_2?` : char?} {{"if"} {(?(`%`_name{`char*#1261`}(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in_1*{in_1 <- `in_1*`}:Tinstrs_(I')} {"else"} {?(`%`_name{`char*#1267`}(lift(id_1?{id_1 <- `id_1?`}))):Tid?{}} {in_2*{in_2 <- `in_2*`}:Tinstrs_(I')} {"end"} {?(`%`_name{`char*#1273`}(lift(id_2?{id_2 <- `id_2?`}))):Tid?{}}} => `IF%%ELSE%`_instr{blocktype#45, `instr*#2364`}(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*`}) + prod{blocktype#47 : blocktype, `instr*#2367` : instr*, bt : blocktype, `X*#13607` : catch*, `c*` : catch*, `in*` : instr*, `char*#1279` : char*, `id?` : char?, I' : I, `char*#1285` : char*, `id'?` : char?} {{"try_table"} {(?(`%`_name{`char*#1279`}(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {c*{c <- `c*`}:Tcatch_(I)*{}} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name{`char*#1285`}(lift(id'?{id' <- `id'?`}))):Tid?{}}} => `TRY_TABLE`_instr{blocktype#47, `instr*#2367`}(bt, `%`_list{`X*#13607`}(c*{c <- `c*`}), in*{in <- `in*`}) -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) } @@ -10776,39 +122335,39 @@ grammar Texpr_(I : I) : expr ;; ../../../../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 (`TYPE`_type{rectype#1855}(qt), I' +++ I'') + -- if (qt = `REC`_rectype(`%`_list{`X*#13622`}(st^n{st <- `st*`}))) + -- if (I'' = {`TYPES`{`name?*#609`} [], `TAGS`{`name?*#610`} [], `GLOBALS`{`name?*#611`} [], `MEMS`{`name?*#612`} [], `TABLES`{`name?*#613`} [], `FUNCS`{`name?*#614`} [], `DATAS`{`name?*#615`} [], `ELEMS`{`name?*#616`} [], `LOCALS`{`name?*#617`} [], `LABELS`{`name?*#618`} [], `FIELDS`{`name?**#32`} [], `TYPEDEFS`{`deftype?*#23`} ?(`_DEF`_deftype{rectype#1885, n#1569}(qt, i))^(i (TAG_tag(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{tagtype#448 : tagtype, jt : tagtype, `name?*#619` : name?*, `name?*#620` : name?*, `char*#1357` : char*, `id?` : char?, `name?*#621` : name?*, `name?*#622` : name?*, `name?*#623` : name?*, `name?*#624` : name?*, `name?*#625` : name?*, `name?*#626` : name?*, `name?*#627` : name?*, `name?*#628` : name?*, `name?**#33` : name?**, `deftype?*#24` : deftype?*, `char*#1351` : char*} {{"("} {"tag"} {?(`%`_name{`char*#1351`}(lift(id?{id <- `id?`}))):Tid?{}} {jt:Ttagtype_(I)} {")"}} => (`TAG`_tag{tagtype#448}(jt), {`TYPES`{`name?*#619`} [], `TAGS`{`name?*#620`} [?(`%`_name{`char*#1357`}(lift(id?{id <- `id?`})))], `GLOBALS`{`name?*#621`} [], `MEMS`{`name?*#622`} [], `TABLES`{`name?*#623`} [], `FUNCS`{`name?*#624`} [], `DATAS`{`name?*#625`} [], `ELEMS`{`name?*#626`} [], `LOCALS`{`name?*#627`} [], `LABELS`{`name?*#628`} [], `FIELDS`{`name?**#33`} [], `TYPEDEFS`{`deftype?*#24`} []}) ;; ../../../../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 []}) + prod{globaltype#2409 : globaltype, expr#5265 : expr, gt : globaltype, e : expr, `name?*#629` : name?*, `name?*#630` : name?*, `name?*#631` : name?*, `char*#1369` : char*, `id?` : char?, `name?*#632` : name?*, `name?*#633` : name?*, `name?*#634` : name?*, `name?*#635` : name?*, `name?*#636` : name?*, `name?*#637` : name?*, `name?*#638` : name?*, `name?**#34` : name?**, `deftype?*#25` : deftype?*, `char*#1363` : char*} {{"("} {"global"} {?(`%`_name{`char*#1363`}(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {e:Texpr_(I)} {")"}} => (`GLOBAL`_global{globaltype#2409, expr#5265}(gt, e), {`TYPES`{`name?*#629`} [], `TAGS`{`name?*#630`} [], `GLOBALS`{`name?*#631`} [?(`%`_name{`char*#1369`}(lift(id?{id <- `id?`})))], `MEMS`{`name?*#632`} [], `TABLES`{`name?*#633`} [], `FUNCS`{`name?*#634`} [], `DATAS`{`name?*#635`} [], `ELEMS`{`name?*#636`} [], `LOCALS`{`name?*#637`} [], `LABELS`{`name?*#638`} [], `FIELDS`{`name?**#34`} [], `TYPEDEFS`{`deftype?*#25`} []}) ;; ../../../../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 []}) + prod{memtype#870 : memtype, mt : memtype, `name?*#639` : name?*, `name?*#640` : name?*, `name?*#641` : name?*, `name?*#642` : name?*, `char*#1381` : char*, `id?` : char?, `name?*#643` : name?*, `name?*#644` : name?*, `name?*#645` : name?*, `name?*#646` : name?*, `name?*#647` : name?*, `name?*#648` : name?*, `name?**#35` : name?**, `deftype?*#26` : deftype?*, `char*#1375` : char*} {{"("} {"memory"} {?(`%`_name{`char*#1375`}(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (`MEMORY`_mem{memtype#870}(mt), {`TYPES`{`name?*#639`} [], `TAGS`{`name?*#640`} [], `GLOBALS`{`name?*#641`} [], `MEMS`{`name?*#642`} [?(`%`_name{`char*#1381`}(lift(id?{id <- `id?`})))], `TABLES`{`name?*#643`} [], `FUNCS`{`name?*#644`} [], `DATAS`{`name?*#645`} [], `ELEMS`{`name?*#646`} [], `LOCALS`{`name?*#647`} [], `LABELS`{`name?*#648`} [], `FIELDS`{`name?**#35`} [], `TYPEDEFS`{`deftype?*#26`} []}) ;; ../../../../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 []}) + prod{tabletype#1292 : tabletype, expr#5277 : expr, tt : tabletype, e : expr, `name?*#649` : name?*, `name?*#650` : name?*, `name?*#651` : name?*, `name?*#652` : name?*, `name?*#653` : name?*, `char*#1393` : char*, `id?` : char?, `name?*#654` : name?*, `name?*#655` : name?*, `name?*#656` : name?*, `name?*#657` : name?*, `name?*#658` : name?*, `name?**#36` : name?**, `deftype?*#27` : deftype?*, `char*#1387` : char*} {{"("} {"table"} {?(`%`_name{`char*#1387`}(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {e:Texpr_(I)} {")"}} => (`TABLE`_table{tabletype#1292, expr#5277}(tt, e), {`TYPES`{`name?*#649`} [], `TAGS`{`name?*#650`} [], `GLOBALS`{`name?*#651`} [], `MEMS`{`name?*#652`} [], `TABLES`{`name?*#653`} [?(`%`_name{`char*#1393`}(lift(id?{id <- `id?`})))], `FUNCS`{`name?*#654`} [], `DATAS`{`name?*#655`} [], `ELEMS`{`name?*#656`} [], `LOCALS`{`name?*#657`} [], `LABELS`{`name?*#658`} [], `FIELDS`{`name?**#36`} [], `TYPEDEFS`{`deftype?*#27`} []}) ;; ../../../../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 []}) + prod{valtype#1331 : valtype, t : valtype, `name?*#669` : name?*, `name?*#670` : name?*, `name?*#671` : name?*, `name?*#672` : name?*, `name?*#673` : name?*, `name?*#674` : name?*, `name?*#675` : name?*, `name?*#676` : name?*, `name?*#677` : name?*, `char*#1417` : char*, `id?` : char?, `name?*#678` : name?*, `name?**#38` : name?**, `deftype?*#29` : deftype?*, `char*#1411` : char*} {{"("} {"local"} {?(`%`_name{`char*#1411`}(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => ([`LOCAL`_local{valtype#1331}(t)], {`TYPES`{`name?*#669`} [], `TAGS`{`name?*#670`} [], `GLOBALS`{`name?*#671`} [], `MEMS`{`name?*#672`} [], `TABLES`{`name?*#673`} [], `FUNCS`{`name?*#674`} [], `DATAS`{`name?*#675`} [], `ELEMS`{`name?*#676`} [], `LOCALS`{`name?*#677`} [?(`%`_name{`char*#1417`}(lift(id?{id <- `id?`})))], `LABELS`{`name?*#678`} [], `FIELDS`{`name?**#38`} [], `TYPEDEFS`{`deftype?*#29`} []}) ;; ../../../../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 []}) + prod{typeidx#2186 : typeidx, `local*#1613` : local*, expr#5289 : expr, x : idx, `loc**` : local**, e : expr, `name?*#659` : name?*, `name?*#660` : name?*, `name?*#661` : name?*, `name?*#662` : name?*, `name?*#663` : name?*, `name?*#664` : name?*, `char*#1405` : char*, `id?` : char?, `name?*#665` : name?*, `name?*#666` : name?*, `name?*#667` : name?*, `name?*#668` : name?*, `name?**#37` : name?**, `deftype?*#28` : deftype?*, `char*#1399` : char*, I_1 : I, `I_2*` : I*, I' : I} {{"("} {"func"} {?(`%`_name{`char*#1399`}(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{typeidx#2186, `local*#1613`, expr#5289}(x, $concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e), {`TYPES`{`name?*#659`} [], `TAGS`{`name?*#660`} [], `GLOBALS`{`name?*#661`} [], `MEMS`{`name?*#662`} [], `TABLES`{`name?*#663`} [], `FUNCS`{`name?*#664`} [?(`%`_name{`char*#1405`}(lift(id?{id <- `id?`})))], `DATAS`{`name?*#665`} [], `ELEMS`{`name?*#666`} [], `LOCALS`{`name?*#667`} [], `LABELS`{`name?*#668`} [], `FIELDS`{`name?**#37`} [], `TYPEDEFS`{`deftype?*#28`} []}) -- if (I' = I +++ I_1 +++ $concat_idctxt(I_2*{I_2 <- `I_2*`})) -- Idctxt_ok: `|-%:OK`(I') @@ -10830,9 +122389,9 @@ grammar Toffset_(I : I) : expr ;; ../../../../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 []}) + prod{`byte*#2413` : byte*, datamode#2377 : datamode, `b*` : byte*, `name?*#679` : name?*, `name?*#680` : name?*, `name?*#681` : name?*, `name?*#682` : name?*, `name?*#683` : name?*, `name?*#684` : name?*, `name?*#685` : name?*, `char*#1429` : char*, `id?` : char?, `name?*#686` : name?*, `name?*#687` : name?*, `name?*#688` : name?*, `name?**#39` : name?**, `deftype?*#30` : deftype?*, `char*#1423` : char*} {{"("} {"data"} {?(`%`_name{`char*#1423`}(lift(id?{id <- `id?`}))):Tid?{}} {b*{b <- `b*`}:Tdatastring} {")"}} => (`DATA`_data{`byte*#2413`, datamode#2377}(b*{b <- `b*`}, `PASSIVE`_datamode), {`TYPES`{`name?*#679`} [], `TAGS`{`name?*#680`} [], `GLOBALS`{`name?*#681`} [], `MEMS`{`name?*#682`} [], `TABLES`{`name?*#683`} [], `FUNCS`{`name?*#684`} [], `DATAS`{`name?*#685`} [?(`%`_name{`char*#1429`}(lift(id?{id <- `id?`})))], `ELEMS`{`name?*#686`} [], `LOCALS`{`name?*#687`} [], `LABELS`{`name?*#688`} [], `FIELDS`{`name?**#39`} [], `TYPEDEFS`{`deftype?*#30`} []}) ;; ../../../../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 []}) + prod{`byte*#2425` : byte*, datamode#2389 : datamode, `b*` : byte*, memidx#379 : memidx, expr#5291 : expr, x : idx, e : expr, `name?*#689` : name?*, `name?*#690` : name?*, `name?*#691` : name?*, `name?*#692` : name?*, `name?*#693` : name?*, `name?*#694` : name?*, `name?*#695` : name?*, `char*#1441` : char*, `id?` : char?, `name?*#696` : name?*, `name?*#697` : name?*, `name?*#698` : name?*, `name?**#40` : name?**, `deftype?*#31` : deftype?*, `char*#1435` : char*} {{"("} {"data"} {?(`%`_name{`char*#1435`}(lift(id?{id <- `id?`}))):Tid?{}} {x:Tmemuse_(I)} {e:Toffset_(I)} {b*{b <- `b*`}:Tdatastring} {")"}} => (`DATA`_data{`byte*#2425`, datamode#2389}(b*{b <- `b*`}, `ACTIVE`_datamode{memidx#379, expr#5291}(x, e)), {`TYPES`{`name?*#689`} [], `TAGS`{`name?*#690`} [], `GLOBALS`{`name?*#691`} [], `MEMS`{`name?*#692`} [], `TABLES`{`name?*#693`} [], `FUNCS`{`name?*#694`} [], `DATAS`{`name?*#695`} [?(`%`_name{`char*#1441`}(lift(id?{id <- `id?`})))], `ELEMS`{`name?*#696`} [], `LOCALS`{`name?*#697`} [], `LABELS`{`name?*#698`} [], `FIELDS`{`name?**#40`} [], `TYPEDEFS`{`deftype?*#31`} []}) ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec grammar Telemlist_(I : I) : (reftype, expr*) @@ -10847,11 +122406,11 @@ grammar Ttableuse_(I : I) : tableidx ;; ../../../../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 []}) + prod{reftype#4361 : reftype, `expr*#3575` : expr*, elemmode#3575 : elemmode, rt : reftype, `e*` : expr*, `name?*#699` : name?*, `name?*#700` : name?*, `name?*#701` : name?*, `name?*#702` : name?*, `name?*#703` : name?*, `name?*#704` : name?*, `name?*#705` : name?*, `name?*#706` : name?*, `char*#1453` : char*, `id?` : char?, `name?*#707` : name?*, `name?*#708` : name?*, `name?**#41` : name?**, `deftype?*#32` : deftype?*, `char*#1447` : char*} {{"("} {"elem"} {?(`%`_name{`char*#1447`}(lift(id?{id <- `id?`}))):Tid?{}} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (`ELEM`_elem{reftype#4361, `expr*#3575`, elemmode#3575}(rt, e*{e <- `e*`}, `PASSIVE`_elemmode), {`TYPES`{`name?*#699`} [], `TAGS`{`name?*#700`} [], `GLOBALS`{`name?*#701`} [], `MEMS`{`name?*#702`} [], `TABLES`{`name?*#703`} [], `FUNCS`{`name?*#704`} [], `DATAS`{`name?*#705`} [], `ELEMS`{`name?*#706`} [?(`%`_name{`char*#1453`}(lift(id?{id <- `id?`})))], `LOCALS`{`name?*#707`} [], `LABELS`{`name?*#708`} [], `FIELDS`{`name?**#41`} [], `TYPEDEFS`{`deftype?*#32`} []}) ;; ../../../../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 []}) + prod{reftype#4373 : reftype, `expr*#3587` : expr*, elemmode#3587 : elemmode, rt : reftype, `e*` : expr*, tableidx#173 : tableidx, expr#5293 : expr, x : idx, e' : expr, `name?*#709` : name?*, `name?*#710` : name?*, `name?*#711` : name?*, `name?*#712` : name?*, `name?*#713` : name?*, `name?*#714` : name?*, `name?*#715` : name?*, `name?*#716` : name?*, `char*#1465` : char*, `id?` : char?, `name?*#717` : name?*, `name?*#718` : name?*, `name?**#42` : name?**, `deftype?*#33` : deftype?*, `char*#1459` : char*} {{"("} {"elem"} {?(`%`_name{`char*#1459`}(lift(id?{id <- `id?`}))):Tid?{}} {x:Ttableuse_(I)} {e':Toffset_(I)} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (`ELEM`_elem{reftype#4373, `expr*#3587`, elemmode#3587}(rt, e*{e <- `e*`}, `ACTIVE`_elemmode{tableidx#173, expr#5293}(x, e')), {`TYPES`{`name?*#709`} [], `TAGS`{`name?*#710`} [], `GLOBALS`{`name?*#711`} [], `MEMS`{`name?*#712`} [], `TABLES`{`name?*#713`} [], `FUNCS`{`name?*#714`} [], `DATAS`{`name?*#715`} [], `ELEMS`{`name?*#716`} [?(`%`_name{`char*#1465`}(lift(id?{id <- `id?`})))], `LOCALS`{`name?*#717`} [], `LABELS`{`name?*#718`} [], `FIELDS`{`name?**#42`} [], `TYPEDEFS`{`deftype?*#33`} []}) ;; ../../../../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 []}) + prod{reftype#4385 : reftype, `expr*#3599` : expr*, elemmode#3599 : elemmode, rt : reftype, `e*` : expr*, `name?*#719` : name?*, `name?*#720` : name?*, `name?*#721` : name?*, `name?*#722` : name?*, `name?*#723` : name?*, `name?*#724` : name?*, `name?*#725` : name?*, `name?*#726` : name?*, `char*#1477` : char*, `id?` : char?, `name?*#727` : name?*, `name?*#728` : name?*, `name?**#43` : name?**, `deftype?*#34` : deftype?*, `char*#1471` : char*} {{"("} {"elem"} {?(`%`_name{`char*#1471`}(lift(id?{id <- `id?`}))):Tid?{}} {"declare"} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (`ELEM`_elem{reftype#4385, `expr*#3599`, elemmode#3599}(rt, e*{e <- `e*`}, `DECLARE`_elemmode), {`TYPES`{`name?*#719`} [], `TAGS`{`name?*#720`} [], `GLOBALS`{`name?*#721`} [], `MEMS`{`name?*#722`} [], `TABLES`{`name?*#723`} [], `FUNCS`{`name?*#724`} [], `DATAS`{`name?*#725`} [], `ELEMS`{`name?*#726`} [?(`%`_name{`char*#1477`}(lift(id?{id <- `id?`})))], `LOCALS`{`name?*#727`} [], `LABELS`{`name?*#728`} [], `FIELDS`{`name?**#43`} [], `TYPEDEFS`{`deftype?*#34`} []}) ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec grammar Telemexpr_(I : I) : expr @@ -10861,17 +122420,17 @@ grammar Telemexpr_(I : I) : expr ;; ../../../../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 []}) + prod{funcidx#3399 : funcidx, x : idx, `name?*#729` : name?*, `name?*#730` : name?*, `name?*#731` : name?*, `name?*#732` : name?*, `name?*#733` : name?*, `name?*#734` : name?*, `name?*#735` : name?*, `name?*#736` : name?*, `name?*#737` : name?*, `name?*#738` : name?*, `name?**#44` : name?**, `deftype?*#35` : deftype?*} {{"("} {"start"} {x:Tfuncidx_(I)} {")"}} => (`START`_start{funcidx#3399}(x), {`TYPES`{`name?*#729`} [], `TAGS`{`name?*#730`} [], `GLOBALS`{`name?*#731`} [], `MEMS`{`name?*#732`} [], `TABLES`{`name?*#733`} [], `FUNCS`{`name?*#734`} [], `DATAS`{`name?*#735`} [], `ELEMS`{`name?*#736`} [], `LOCALS`{`name?*#737`} [], `LABELS`{`name?*#738`} [], `FIELDS`{`name?**#44`} [], `TYPEDEFS`{`deftype?*#35`} []}) ;; ../../../../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') + prod{name#6556 : name, externtype#345 : externtype, nm_1 : name, nm_2 : name, xt : externtype, I' : I} {{"("} {"import"} {nm_1:Tname} {nm_2:Tname} {(xt, I'):Texterntype_(I)} {")"}} => (`IMPORT`_import{name#6556, externtype#345}(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 []}) + prod{name#6569 : name, externidx#6009 : externidx, nm : name, xx : externidx, `name?*#739` : name?*, `name?*#740` : name?*, `name?*#741` : name?*, `name?*#742` : name?*, `name?*#743` : name?*, `name?*#744` : name?*, `name?*#745` : name?*, `name?*#746` : name?*, `name?*#747` : name?*, `name?*#748` : name?*, `name?**#45` : name?**, `deftype?*#36` : deftype?*} {{"("} {"export"} {nm:Tname} {xx:Texternidx_(I)} {")"}} => (`EXPORT`_export{name#6569, externidx#6009}(nm, xx), {`TYPES`{`name?*#739`} [], `TAGS`{`name?*#740`} [], `GLOBALS`{`name?*#741`} [], `MEMS`{`name?*#742`} [], `TABLES`{`name?*#743`} [], `FUNCS`{`name?*#744`} [], `DATAS`{`name?*#745`} [], `ELEMS`{`name?*#746`} [], `LOCALS`{`name?*#747`} [], `LABELS`{`name?*#748`} [], `FIELDS`{`name?**#45`} [], `TYPEDEFS`{`deftype?*#36`} []}) ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec grammar Texportdots : () @@ -10948,17 +122507,17 @@ 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) + | `TYPE`{rectype : rectype}(rectype : rectype) + | `IMPORT`{name : name, externtype : externtype}(name : 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*, expr : expr) + | `DATA`{`byte*` : byte*, datamode : datamode}(`byte*` : byte*, datamode : datamode) + | `ELEM`{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(reftype : reftype, `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 { @@ -11150,7 +122709,7 @@ grammar Tdecl_(I : I) : (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*`}) + prod{`type*#155` : type*, `import*#155` : import*, `tag*#155` : tag*, `global*#179` : global*, `mem*#179` : mem*, `table*#179` : table*, `func*#155` : func*, `data*#155` : data*, `elem*#179` : elem*, `start?#155` : start?, `export*#155` : export*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `I*` : I*, `decl*` : decl*, I' : I} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => `MODULE`_module{`type*#155`, `import*#155`, `tag*#155`, `global*#179`, `mem*#179`, `table*#179`, `func*#155`, `data*#155`, `elem*#179`, `start?#155`, `export*#155`}(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*`})) @@ -11179,14 +122738,14 @@ 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) + | `_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) + | `_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 = () @@ -11194,14 +122753,14 @@ 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, + `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 + | `PTHSYNTAX` ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec syntax T = nat @@ -11228,41 +122787,41 @@ 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]))) + rule i32.add{C : context, numtype#1105 : numtype, resulttype#3064 : resulttype, `localidx*#1817` : localidx*, `X*#13813` : valtype*, `X*#13862` : valtype*}: + `%|-%:%`(C, [`BINOP`_instr{numtype#1105}(`I32`_numtype, `ADD`_binop_)], `%->_%%`_instrtype{resulttype#3064, `localidx*#1817`}(`%`_resulttype{`X*#13813`}([`I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#13862`}([`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)) + rule global.get{C : context, globalidx#35 : globalidx, x : idx, resulttype#3084 : resulttype, `localidx*#1829` : localidx*, `X*#13883` : valtype*, `X*#13932` : valtype*, t : valtype, `globaltype*#27` : globaltype*, i#131877 : nat, `mut?#1609` : mut?, valtype#1343 : valtype, mut : mut}: + `%|-%:%`(C, [`GLOBAL.GET`_instr{globalidx#35}(x)], `%->_%%`_instrtype{resulttype#3084, `localidx*#1829`}(`%`_resulttype{`X*#13883`}([]), [], `%`_resulttype{`X*#13932`}([t]))) + -- if (C.`GLOBALS`_context{`globaltype*#27`}[x!`%`_idx{i#131877}.0] = `%%`_globaltype{`mut?#1609`, valtype#1343}(?(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*`}))) + rule block{C : context, blocktype#49 : blocktype, `instr*#2369` : instr*, blocktype : blocktype, `instr*` : instr*, resulttype#3104 : resulttype, `localidx*#1841` : localidx*, `X*#13943` : valtype*, `t_1*` : valtype*, `X*#13994` : valtype*, `t_2*` : valtype*, resulttype#3124 : resulttype, `localidx*#1853` : localidx*, `X*#14005` : valtype*, `X*#14056` : valtype*, `deftype*#98` : deftype*, `subtype*#25` : subtype*, `tagtype*#26` : tagtype*, `globaltype*#28` : globaltype*, `memtype*#41` : memtype*, `tabletype*#34` : tabletype*, `deftype*#99` : deftype*, `datatype*#26` : datatype*, `elemtype*#26` : elemtype*, `localtype*#29` : localtype*, `resulttype*#37` : resulttype*, `X*#14067` : valtype*, `resulttype?#34` : resulttype?, `funcidx*#63` : funcidx*, resulttype#3144 : resulttype, `localidx*#1865` : localidx*, `X*#14080` : valtype*, `X*#14131` : valtype*}: + `%|-%:%`(C, [`BLOCK`_instr{blocktype#49, `instr*#2369`}(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype{resulttype#3104, `localidx*#1841`}(`%`_resulttype{`X*#13943`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#13994`}(t_2*{t_2 <- `t_2*`}))) + -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype{resulttype#3124, `localidx*#1853`}(`%`_resulttype{`X*#14005`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#14056`}(t_2*{t_2 <- `t_2*`}))) + -- NotationTypingInstrScheme: `%|-%:%`({`TYPES`{`deftype*#98`} [], `RECS`{`subtype*#25`} [], `TAGS`{`tagtype*#26`} [], `GLOBALS`{`globaltype*#28`} [], `MEMS`{`memtype*#41`} [], `TABLES`{`tabletype*#34`} [], `FUNCS`{`deftype*#99`} [], `DATAS`{`datatype*#26`} [], `ELEMS`{`elemtype*#26`} [], `LOCALS`{`localtype*#29`} [], `LABELS`{`resulttype*#37`} [`%`_resulttype{`X*#14067`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#34`} ?(), `REFS`{`funcidx*#63`} []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype{resulttype#3144, `localidx*#1865`}(`%`_resulttype{`X*#14080`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#14131`}(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_)]) + rule 2{numtype#1107 : numtype, q_1 : num_(`F64`_numtype), numtype#1109 : numtype, q_4 : num_(`F64`_numtype), numtype#1111 : numtype, q_3 : num_(`F64`_numtype), numtype#1113 : numtype, numtype#1115 : numtype}: + `~>%`([`CONST`_instr{numtype#1107}(`F64`_numtype, q_1) `CONST`_instr{numtype#1109}(`F64`_numtype, q_4) `CONST`_instr{numtype#1111}(`F64`_numtype, q_3) `BINOP`_instr{numtype#1113}(`F64`_numtype, `ADD`_binop_) `BINOP`_instr{numtype#1115}(`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_)]) + rule 3{numtype#1117 : numtype, q_1 : num_(`F64`_numtype), numtype#1119 : numtype, q_5 : num_(`F64`_numtype), numtype#1121 : numtype}: + `~>%`([`CONST`_instr{numtype#1117}(`F64`_numtype, q_1) `CONST`_instr{numtype#1119}(`F64`_numtype, q_5) `BINOP`_instr{numtype#1121}(`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)]) + rule 4{numtype#1123 : numtype, q_6 : num_(`F64`_numtype)}: + `~>%`([`CONST`_instr{numtype#1123}(`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*) + | `LABEL_%{%}`{n : n, `instr*` : instr*}(n : n, `instr*` : instr*) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec syntax callframe = @@ -11297,7 +122856,7 @@ def $var(syntax X) : nat ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec grammar Bvar(syntax X) : () ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod 0x00 => () + prod 0x00 => ((), ()).1 ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec grammar Bsym : A @@ -11309,14 +122868,14 @@ grammar Bsym : 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) => `` + prod{`` : ()} ``:Bvar(syntax B) => (``, ()).1 ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod{`` : ()} ``:Bvar(syntax B) => `` + prod{`` : ()} ``:Bvar(syntax B) => (``, ()).1 ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec grammar Tvar(syntax X) : () ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod 0x00 => () + prod 0x00 => ((), ()).1 ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec grammar Tsym : A @@ -11328,9 +122887,9 @@ grammar Tsym : 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) => `` + prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod{`` : ()} ``:Tvar(syntax B) => `` + prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec syntax abbreviated = () @@ -11345,5 +122904,2522 @@ syntax syntax = () grammar Tabbrev : () == IL Validation... +[] n* nat* +[] n* nat* +[] n* nat* +[] n* nat* +[] X* X* +[] X** X** +[] X* X* +[] X* X* +[] X** X** +[] X* X* +[] X* X^n +[] X** X^n* +[] X* X^n +[] X* X^n +[] X** X^n* +[] X* X^n +[] X? X? +[] X?* X?* +[] X? X? +[] X? X? +[] X?* X?* +[] X? X? +[] X* X* +[] X* X* +[] X* X* +[] X* X* +[] X* X* +[] X* X* +[] X* X* +[] X* X* +[] X* X* +[] X* X* +[] X* X* +[] X* X* +[] X* X* +[] X* X* +[] X** X** +[] X* X* +[] X* X* +[] X** X** +[] X* X* +[] X** X** +[] X* X* +[] X* X* +[] X** X** +[] X* X* +[] X** X** +[] X* X* +[] X* X* +[] X** X** +[] X* X* +[] X* X* +[] X** X** +[] X* X* +[] X* X* +[] X** X** +[] X* X* +[] X* X* +[] X* X* +[] char* char* +[] char* char* +[] char* char* +[] char* char* +[] externidx* externidx* +[] externidx* externidx* +[] externidx* externidx* +[] externidx* externidx* +[] externidx* externidx* +[] externidx* externidx* +[] externidx* externidx* +[] externidx* externidx* +[] externidx* externidx* +[] externidx* externidx* +[] externidx* externidx* +[] externidx* externidx* +[] externidx* externidx* +[] externidx* externidx* +[] externidx* externidx* +[] externidx* externidx* +[] externidx* externidx* +[] externidx* externidx* +[] externidx* externidx* +[] externidx* externidx* +[] free* free* +[] free* free* +[] null? null? +[] null? null? +[] null? null? +[] externtype* externtype* +[] externtype* externtype* +[] externtype* externtype* +[] externtype* externtype* +[] externtype* externtype* +[] externtype* externtype* +[] externtype* externtype* +[] externtype* externtype* +[] externtype* externtype* +[] externtype* externtype* +[] externtype* externtype* +[] externtype* externtype* +[] externtype* externtype* +[] externtype* externtype* +[] externtype* externtype* +[] externtype* externtype* +[] externtype* externtype* +[] externtype* externtype* +[] externtype* externtype* +[] externtype* externtype* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] null? null? +[] typevar* typevar* +[] typeuse* typeuse* +[] null? null? +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] mut? mut? +[] typevar* typevar* +[] typeuse* typeuse* +[] mut? mut? +[] typevar* typevar* +[] typeuse* typeuse* +[] fieldtype* fieldtype* +[] typevar* typevar* +[] typeuse* typeuse* +[] fieldtype* fieldtype* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] valtype* valtype* +[] valtype* valtype* +[] typevar* typevar* +[] typeuse* typeuse* +[] valtype* valtype* +[] typevar* typevar* +[] typeuse* typeuse* +[] valtype* valtype* +[] typevar* typevar* +[] typeuse* typeuse* +[] final? final? +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] final? final? +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] subtype* subtype* +[] typevar* typevar* +[] typeuse* typeuse* +[] subtype* subtype* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] mut? mut? +[] typevar* typevar* +[] typeuse* typeuse* +[] mut? mut? +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] typevar* typevar* +[] typeuse* typeuse* +[] externtype* externtype* +[] externtype* externtype* +[] typevar* typevar* +[] typeuse* typeuse* +[] externtype* externtype* +[] typevar* typevar* +[] typeuse* typeuse* +[] externtype* externtype* +[] typevar* typevar* +[] typeuse* typeuse* +[] typeuse* typeuse^n +[] nat* nat^n +[] typeidx* typeidx^n +[] typeuse* typeuse^n +[] typeuse* typeuse^n +[] nat* nat^n +[] typeidx* typeidx^n +[] typeuse* typeuse^n +[] typeuse* typeuse^n +[] nat* nat^n +[] typeidx* typeidx^n +[] typeuse* typeuse^n +[] typeuse* typeuse^n +[] nat* nat^n +[] typeidx* typeidx^n +[] typeuse* typeuse^n +[] typeuse* typeuse^n +[] nat* nat^n +[] typeidx* typeidx^n +[] typeuse* typeuse^n +[] typeuse* typeuse^n +[] nat* nat^n +[] typeidx* typeidx^n +[] typeuse* typeuse^n +[] typeuse* typeuse^n +[] nat* nat^n +[] typeidx* typeidx^n +[] typeuse* typeuse^n +[] typeuse* typeuse^n +[] nat* nat^n +[] typeidx* typeidx^n +[] typeuse* typeuse^n +[] typeuse* typeuse^n +[] nat* nat^n +[] typeidx* typeidx^n +[] typeuse* typeuse^n +[] typeuse* typeuse* +[] deftype* deftype* +[] typeuse* typeuse* +[] typeuse* typeuse* +[] deftype* deftype* +[] typeuse* typeuse* +[] nat** nat^n^n +[] nat** nat^n^n +[] n** n^n^n +[] subtype* subtype^n +[] typeidx** typeidx^n^n +[] nat* nat^n +[] nat* nat^n +[] typeidx* typeidx^n +[] n* n^n +[] subtype* subtype^n +[] n** n^n^n +[] n** n^n^n +[] rectype** rectype^n^n +[] subtype* subtype^n +[] n* n^n +[] n* n^n +[] rectype* rectype^n +[] subtype* subtype^n +[] subtype** subtype*^n +[] n* n^n +[] rectype* rectype^n +[] subtype* subtype^n +[] subtype* subtype^n +[] subtype* subtype* +[] subtype* subtype* +[] subtype* subtype* +[] final? final? +[] typeuse* typeuse* +[] null? null? +[] valtype* valtype* +[] valtype* valtype* +[] mut? mut? +[] fieldtype* fieldtype* +[] fieldtype* fieldtype* +[] final? final? +[] typeuse* typeuse* +[] typeuse* typeuse* +[] subtype* subtype* +[] subtype* subtype* +[] mut? mut? +[] externtype* externtype* +[] externtype* externtype* +[] externtype* externtype* +[] externtype* externtype* +[] half? half? +[] half? half? +[] half? half? +[] half? half? +[] zero? zero? +[] zero? zero? +[] zero? zero? +[] zero? zero? +[] zero? zero? +[] zero? zero? +[] zero? zero? +[] zero? zero? +[] laneidx* laneidx* +[] laneidx* laneidx* +[] sx? sx? +[] sx? sx? +[] valtype? valtype? +[] valtype? valtype? +[] labelidx* labelidx* +[] labelidx* labelidx* +[] labelidx* labelidx* +[] labelidx* labelidx* +[] valtype*? valtype*? +[] valtype* valtype* +[] valtype*? valtype*? +[] valtype* valtype* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] labelidx* labelidx* +[] labelidx* labelidx* +[] laneidx* laneidx* +[] sx? sx? +[] sx? sx? +[] sx? sx? +[] loadop_(numtype)? loadop_(numtype)? +[] storeop_(numtype)? storeop_(numtype)? +[] vloadop_(vectype)? vloadop_(vectype)? +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] local* local* +[] local* local* +[] byte* byte* +[] expr* expr* +[] expr* expr* +[] type* type* +[] import* import* +[] tag* tag* +[] global* global* +[] mem* mem* +[] table* table* +[] func* func* +[] data* data* +[] elem* elem* +[] start? start? +[] export* export* +[] type* type* +[] tag* tag* +[] global* global* +[] mem* mem* +[] table* table* +[] func* func* +[] data* data* +[] elem* elem* +[] start? start? +[] import* import* +[] export* export* +[] func* func* +[] func* func* +[] func* func* +[] idx* localidx* +[] localtype* localtype* +[] idx* localidx* +[] localtype* localtype* +[] deftype* deftype* +[] deftype* deftype* +[] deftype* deftype* +[] deftype* deftype* +[] deftype* deftype* +[] deftype* deftype* +[] deftype* deftype* +[] deftype* deftype* +[] deftype* deftype* +[] deftype* deftype* +[] deftype* deftype* +[] deftype* deftype* +[] deftype* deftype* +[] deftype* deftype* +[] deftype* deftype* +[] deftype* deftype* +[] deftype* deftype* +[] deftype* deftype* +[] deftype* deftype* +[] deftype* deftype* +[] deftype* deftype* +[] valtype* valtype* +[] valtype* valtype* +[] fieldtype* fieldtype* +[] fieldtype* fieldtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] typeidx* typeidx* +[] idx* typeidx* +[] idx* idx* +[] idx* idx* +[] nat* nat* +[] nat* nat* +[] idx* idx* +[] comptype* comptype* +[] comptype* comptype* +[] deftype** deftype** +[] final?* final?* +[] nat* nat* +[] typeidx** typeidx** +[] typeuse** typeuse** +[] idx* idx* +[] idx** typeidx** +[] typeidx* typeidx* +[] idx* typeidx* +[] comptype* comptype* +[] subtype* subtype* +[] subtype* subtype* +[] subtype* subtype* +[] subtype* subtype* +[] subtype* subtype* +[] typeuse* typeuse* +[] typeuse* typeuse* +[] typeuse* typeuse* +[] typeuse* typeuse* +[] comptype* comptype* +[] comptype* comptype* +[] final?* final?* +[] typeuse* typeuse* +[] typeuse** typeuse** +[] typeuse** typeuse** +[] typeuse* typeuse* +[] comptype* comptype* +[] subtype* subtype* +[] subtype* subtype* +[] subtype* subtype^n +[] fieldtype* fieldtype* +[] fieldtype* fieldtype* +[] fieldtype* fieldtype* +[] fieldtype* fieldtype* +[] fieldtype* fieldtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] final? final? +[] typeuse* typeuse* +[] typeuse* typeuse* +[] typeuse* typeuse* +[] fieldtype* fieldtype* +[] valtype* valtype* +[] valtype* valtype* +[] typeuse* typeuse* +[] typeuse* typeuse* +[] final? final? +[] typeuse* typeuse* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] idx* localidx* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] nat* nat* +[] localtype* localtype* +[] localtype** localtype** +[] idx* idx* +[] nat? nat? +[] m? nat? +[] m? nat? +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] idx* localidx* +[] valtype* valtype* +[] valtype* valtype* +[] idx* localidx* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] idx* localidx* +[] idx* localidx* +[] idx* localidx* +[] idx* localidx* +[] nat* nat* +[] init* init* +[] localtype** localtype** +[] valtype* valtype* +[] valtype* valtype* +[] idx* idx* +[] nat? nat? +[] m? nat? +[] m? nat? +[] valtype? valtype? +[] valtype? valtype? +[] valtype? valtype? +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] instr* instr* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] instr* instr* +[] valtype* valtype* +[] idx* localidx* +[] valtype* valtype* +[] instr* instr* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] instr* instr* +[] valtype* valtype* +[] idx* localidx* +[] valtype* valtype* +[] instr* instr* +[] instr* instr* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] instr* instr* +[] valtype* valtype* +[] idx* localidx* +[] valtype* valtype* +[] valtype* valtype* +[] instr* instr* +[] valtype* valtype* +[] idx* localidx* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] labelidx* labelidx* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype** valtype** +[] nat* nat* +[] labelidx* labelidx* +[] resulttype** resulttype** +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] catch* catch* +[] instr* instr* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] instr* instr* +[] valtype* valtype* +[] idx* localidx* +[] valtype* valtype* +[] catch* catch* +[] storagetype* storagetype* +[] mut?* mut?* +[] mut?* mut?* +[] storagetype* storagetype* +[] storagetype* storagetype* +[] mut? mut? +[] mut?* mut?* +[] mut?* mut?* +[] storagetype* storagetype* +[] storagetype* storagetype* +[] mut? mut? +[] storagetype* storagetype* +[] sx? sx? +[] fieldtype* fieldtype* +[] fieldtype* fieldtype* +[] fieldtype* fieldtype* +[] fieldtype* fieldtype* +[] mut? mut? +[] sx? sx? +[] sx? sx? +[] fieldtype* fieldtype* +[] fieldtype* fieldtype* +[] fieldtype* fieldtype* +[] fieldtype* fieldtype* +[] mut? mut? +[] mut? mut? +[] mut? mut? +[] mut? mut? +[] mut? mut? +[] sx? sx? +[] mut? mut? +[] sx? sx? +[] sx? sx? +[] mut? mut? +[] null? null? +[] null? null? +[] null? null? +[] null? null? +[] null? null? +[] null? null? +[] null? null? +[] null? null? +[] null? null? +[] null? null? +[] mut? mut? +[] laneidx* laneidx* +[] laneidx* laneidx* +[] nat* nat* +[] nat* nat* +[] shape* shape* +[] sx? sx? +[] instr* instr* +[] valtype* valtype* +[] idx* localidx* +[] idx* localidx* +[] valtype* valtype* +[] valtype* valtype* +[] idx* localidx* +[] valtype* valtype* +[] nat* nat* +[] init* init* +[] init* init* +[] localtype** localtype** +[] valtype* valtype* +[] valtype* valtype* +[] idx* idx* +[] idx* localidx* +[] init* init* +[] valtype* valtype* +[] valtype* valtype* +[] instr* instr* +[] valtype* valtype* +[] idx* localidx* +[] valtype* valtype* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] valtype* valtype* +[] valtype* valtype* +[] idx* localidx* +[] valtype* valtype* +[] valtype* valtype* +[] instr* instr* +[] valtype* valtype* +[] idx* localidx* +[] valtype* valtype* +[] valtype* valtype* +[] instr* instr* +[] valtype* valtype* +[] instr* instr* +[] valtype* valtype* +[] instr* instr* +[] instr* instr* +[] deftype* deftype* +[] deftype* deftype* +[] deftype* deftype* +[] deftype* deftype* +[] local* local* +[] valtype* valtype* +[] valtype* valtype* +[] localtype* localtype* +[] local* local* +[] init* init* +[] valtype* valtype* +[] valtype* valtype* +[] localtype* localtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] byte* byte* +[] expr* expr* +[] expr* expr* +[] global* global* +[] globaltype* globaltype* +[] global* global* +[] globaltype* globaltype* +[] type* type* +[] deftype* deftype* +[] deftype* deftype* +[] deftype* deftype* +[] deftype* deftype* +[] type* type* +[] deftype* deftype* +[] global* global* +[] mem* mem* +[] table* table* +[] elem* elem* +[] global* global* +[] mem* mem* +[] table* table* +[] elem* elem* +[] type* type* +[] import* import* +[] tag* tag* +[] global* global* +[] mem* mem* +[] table* table* +[] func* func* +[] data* data* +[] elem* elem* +[] start? start? +[] export* export* +[] externtype* externtype* +[] externtype* externtype* +[] type* type* +[] deftype* deftype* +[] datatype** datatype** +[] deftype** deftype** +[] deftype** deftype** +[] elemtype** elemtype** +[] funcidx** funcidx** +[] globaltype** globaltype** +[] import* import* +[] localtype** localtype** +[] memtype** memtype** +[] resulttype** resulttype** +[] resulttype?* resulttype?* +[] subtype** subtype** +[] tabletype** tabletype** +[] tagtype** tagtype** +[] externtype* externtype* +[] deftype* deftype* +[] tagtype* tagtype* +[] tag* tag* +[] global* global* +[] globaltype* globaltype* +[] mem* mem* +[] memtype* memtype* +[] table* table* +[] tabletype* tabletype* +[] deftype* deftype* +[] func* func* +[] data* data* +[] datatype* datatype* +[] elem* elem* +[] reftype* elemtype* +[] start? start? +[] export* export* +[] name* name* +[] externtype* externtype* +[] name* name* +[] tagtype* tagtype* +[] tagtype* tagtype* +[] globaltype* globaltype* +[] memtype* memtype* +[] memtype* memtype* +[] tabletype* tabletype* +[] tabletype* tabletype* +[] datatype* datatype* +[] reftype* elemtype* +[] deftype* deftype* +[] globaltype* globaltype* +[] deftype* deftype* +[] deftype* deftype* +[] idx* funcidx* +[] idx* funcidx* +[] idx* funcidx* +[] global* global* +[] mem* mem* +[] table* table* +[] elem* elem* +[] tagtype* tagtype* +[] tagtype* tagtype* +[] externtype* externtype* +[] globaltype* globaltype* +[] globaltype* globaltype* +[] externtype* externtype* +[] memtype* memtype* +[] memtype* memtype* +[] externtype* externtype* +[] tabletype* tabletype* +[] tabletype* tabletype* +[] externtype* externtype* +[] deftype* deftype* +[] deftype* deftype* +[] externtype* externtype* +[] half? half? +[] zero? zero? +[] zero? zero? +[] zero? zero? +[] zero? zero? +[] half? half? +[] half? half? +[] zero? zero? +[] zero? zero? +[] iN(N)* iN(N)* +[] iN(N)* iN(N)* +[] iN(N)* iN(N)* +[] iN(N)* iN(N)* +[] iN(N)* iN(N)* +[] iN(N)* iN(N)* +[] iN(N)* iN(N)* +[] iN(N)* iN(N)* +[] iN(N)* iN(N)* +[] iN(N)* iN(N)* +[] iN(N)* iN(N)* +[] iN(N)* iN(N)* +[] iN(N)* iN(N)* +[] iN(N)* iN(N)* +[] iN(N)* iN(N)* +[] iN(N)* iN(N)* +[] iN(N)* iN(N)* +[] iN($lsizenn((Jnn : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape{lanetype#1469, dim#1469, i#13506}((Jnn : Jnn <: lanetype), `%`_dim{i#13513}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#1443, dim#1443, i#13370}((Jnn : Jnn <: lanetype), `%`_dim{i#13377}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1443, dim#1443, i#13370}((Jnn : Jnn <: lanetype), `%`_dim{i#13377}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#1443, dim#1443, i#13370}((Jnn : Jnn <: lanetype), `%`_dim{i#13377}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1443, dim#1443, i#13370}((Jnn : Jnn <: lanetype), `%`_dim{i#13377}(M))))* +[] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] lane_($lanetype(`%X%`_shape{lanetype#1443, dim#1443, i#13370}((Jnn : Jnn <: lanetype), `%`_dim{i#13377}(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] lane_((Fnn : Fnn <: lanetype))** lane_($lanetype(`%X%`_shape{lanetype#1532, dim#1532, i#13693}((Fnn : Fnn <: lanetype), `%`_dim{i#13700}(M))))** +[] dim* dim* +[] nat* nat* +[] nat* nat* +[] lanetype* lanetype* +[] lane_((Fnn : Fnn <: lanetype))* lane_($lanetype(`%X%`_shape{lanetype#1532, dim#1532, i#13693}((Fnn : Fnn <: lanetype), `%`_dim{i#13700}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#1505, dim#1505, i#13603}((Fnn : Fnn <: lanetype), `%`_dim{i#13610}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1505, dim#1505, i#13603}((Fnn : Fnn <: lanetype), `%`_dim{i#13610}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#1505, dim#1505, i#13603}((Fnn : Fnn <: lanetype), `%`_dim{i#13610}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1505, dim#1505, i#13603}((Fnn : Fnn <: lanetype), `%`_dim{i#13610}(M))))* +[] lane_((Fnn : Fnn <: lanetype))** lane_((Fnn : Fnn <: lanetype))** +[] lane_((Fnn : Fnn <: lanetype))* lane_((Fnn : Fnn <: lanetype))* +[] lane_((Fnn : Fnn <: lanetype))** lane_((Fnn : Fnn <: lanetype))** +[] lane_((Fnn : Fnn <: lanetype))* lane_((Fnn : Fnn <: lanetype))* +[] lane_($lanetype(`%X%`_shape{lanetype#1505, dim#1505, i#13603}((Fnn : Fnn <: lanetype), `%`_dim{i#13610}(M))))* fN($sizenn((Fnn : Fnn <: numtype)))* +[] iN($lsizenn((Jnn : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape{lanetype#1619, dim#1619, i#14011}((Jnn : Jnn <: lanetype), `%`_dim{i#14018}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#1567, dim#1567, i#13774}((Jnn : Jnn <: lanetype), `%`_dim{i#13781}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1567, dim#1567, i#13774}((Jnn : Jnn <: lanetype), `%`_dim{i#13781}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#1567, dim#1567, i#13774}((Jnn : Jnn <: lanetype), `%`_dim{i#13781}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1567, dim#1567, i#13774}((Jnn : Jnn <: lanetype), `%`_dim{i#13781}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#1592, dim#1592, i#13860}((Jnn : Jnn <: lanetype), `%`_dim{i#13867}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1592, dim#1592, i#13860}((Jnn : Jnn <: lanetype), `%`_dim{i#13867}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#1592, dim#1592, i#13860}((Jnn : Jnn <: lanetype), `%`_dim{i#13867}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1592, dim#1592, i#13860}((Jnn : Jnn <: lanetype), `%`_dim{i#13867}(M))))* +[] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] lane_($lanetype(`%X%`_shape{lanetype#1567, dim#1567, i#13774}((Jnn : Jnn <: lanetype), `%`_dim{i#13781}(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] lane_($lanetype(`%X%`_shape{lanetype#1592, dim#1592, i#13860}((Jnn : Jnn <: lanetype), `%`_dim{i#13867}(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] iN($lsizenn((Jnn : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape{lanetype#1707, dim#1707, i#14357}((Jnn : Jnn <: lanetype), `%`_dim{i#14364}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#1655, dim#1655, i#14120}((Jnn : Jnn <: lanetype), `%`_dim{i#14127}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1655, dim#1655, i#14120}((Jnn : Jnn <: lanetype), `%`_dim{i#14127}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#1655, dim#1655, i#14120}((Jnn : Jnn <: lanetype), `%`_dim{i#14127}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1655, dim#1655, i#14120}((Jnn : Jnn <: lanetype), `%`_dim{i#14127}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#1680, dim#1680, i#14206}((Jnn : Jnn <: lanetype), `%`_dim{i#14213}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1680, dim#1680, i#14206}((Jnn : Jnn <: lanetype), `%`_dim{i#14213}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#1680, dim#1680, i#14206}((Jnn : Jnn <: lanetype), `%`_dim{i#14213}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1680, dim#1680, i#14206}((Jnn : Jnn <: lanetype), `%`_dim{i#14213}(M))))* +[] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] lane_($lanetype(`%X%`_shape{lanetype#1655, dim#1655, i#14120}((Jnn : Jnn <: lanetype), `%`_dim{i#14127}(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] lane_($lanetype(`%X%`_shape{lanetype#1680, dim#1680, i#14206}((Jnn : Jnn <: lanetype), `%`_dim{i#14213}(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] lane_((Jnn : Jnn <: lanetype))** lane_($lanetype(`%X%`_shape{lanetype#1803, dim#1803, i#14919}((Jnn : Jnn <: lanetype), `%`_dim{i#14926}(M))))** +[] dim* dim* +[] nat* nat* +[] nat* nat* +[] lanetype* lanetype* +[] lane_((Jnn : Jnn <: lanetype))* lane_($lanetype(`%X%`_shape{lanetype#1803, dim#1803, i#14919}((Jnn : Jnn <: lanetype), `%`_dim{i#14926}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#1743, dim#1743, i#14466}((Jnn : Jnn <: lanetype), `%`_dim{i#14473}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1743, dim#1743, i#14466}((Jnn : Jnn <: lanetype), `%`_dim{i#14473}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#1743, dim#1743, i#14466}((Jnn : Jnn <: lanetype), `%`_dim{i#14473}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1743, dim#1743, i#14466}((Jnn : Jnn <: lanetype), `%`_dim{i#14473}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#1768, dim#1768, i#14552}((Jnn : Jnn <: lanetype), `%`_dim{i#14559}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1768, dim#1768, i#14552}((Jnn : Jnn <: lanetype), `%`_dim{i#14559}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#1768, dim#1768, i#14552}((Jnn : Jnn <: lanetype), `%`_dim{i#14559}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1768, dim#1768, i#14552}((Jnn : Jnn <: lanetype), `%`_dim{i#14559}(M))))* +[] lane_((Jnn : Jnn <: lanetype))** lane_((Jnn : Jnn <: lanetype))** +[] lane_((Jnn : Jnn <: lanetype))* lane_((Jnn : Jnn <: lanetype))* +[] lane_((Jnn : Jnn <: lanetype))** lane_((Jnn : Jnn <: lanetype))** +[] lane_((Jnn : Jnn <: lanetype))* lane_((Jnn : Jnn <: lanetype))* +[] lane_($lanetype(`%X%`_shape{lanetype#1743, dim#1743, i#14466}((Jnn : Jnn <: lanetype), `%`_dim{i#14473}(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] lane_($lanetype(`%X%`_shape{lanetype#1768, dim#1768, i#14552}((Jnn : Jnn <: lanetype), `%`_dim{i#14559}(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] lane_((Fnn : Fnn <: lanetype))** lane_($lanetype(`%X%`_shape{lanetype#1893, dim#1893, i#15183}((Fnn : Fnn <: lanetype), `%`_dim{i#15190}(M))))** +[] dim* dim* +[] nat* nat* +[] nat* nat* +[] lanetype* lanetype* +[] lane_((Fnn : Fnn <: lanetype))* lane_($lanetype(`%X%`_shape{lanetype#1893, dim#1893, i#15183}((Fnn : Fnn <: lanetype), `%`_dim{i#15190}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#1839, dim#1839, i#15026}((Fnn : Fnn <: lanetype), `%`_dim{i#15033}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1839, dim#1839, i#15026}((Fnn : Fnn <: lanetype), `%`_dim{i#15033}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#1839, dim#1839, i#15026}((Fnn : Fnn <: lanetype), `%`_dim{i#15033}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1839, dim#1839, i#15026}((Fnn : Fnn <: lanetype), `%`_dim{i#15033}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#1863, dim#1863, i#15084}((Fnn : Fnn <: lanetype), `%`_dim{i#15091}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1863, dim#1863, i#15084}((Fnn : Fnn <: lanetype), `%`_dim{i#15091}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#1863, dim#1863, i#15084}((Fnn : Fnn <: lanetype), `%`_dim{i#15091}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1863, dim#1863, i#15084}((Fnn : Fnn <: lanetype), `%`_dim{i#15091}(M))))* +[] lane_((Fnn : Fnn <: lanetype))** lane_((Fnn : Fnn <: lanetype))** +[] lane_((Fnn : Fnn <: lanetype))* lane_((Fnn : Fnn <: lanetype))* +[] lane_((Fnn : Fnn <: lanetype))** lane_((Fnn : Fnn <: lanetype))** +[] lane_((Fnn : Fnn <: lanetype))* lane_((Fnn : Fnn <: lanetype))* +[] lane_($lanetype(`%X%`_shape{lanetype#1839, dim#1839, i#15026}((Fnn : Fnn <: lanetype), `%`_dim{i#15033}(M))))* fN($sizenn((Fnn : Fnn <: numtype)))* +[] lane_($lanetype(`%X%`_shape{lanetype#1863, dim#1863, i#15084}((Fnn : Fnn <: lanetype), `%`_dim{i#15091}(M))))* fN($sizenn((Fnn : Fnn <: numtype)))* +[] lane_((Jnn : Jnn <: lanetype))** lane_($lanetype(`%X%`_shape{lanetype#2018, dim#2018, i#15890}((Jnn : Jnn <: lanetype), `%`_dim{i#15897}(M))))** +[] dim* dim* +[] nat* nat* +[] nat* nat* +[] lanetype* lanetype* +[] lane_((Jnn : Jnn <: lanetype))* lane_($lanetype(`%X%`_shape{lanetype#2018, dim#2018, i#15890}((Jnn : Jnn <: lanetype), `%`_dim{i#15897}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#1928, dim#1928, i#15276}((Jnn : Jnn <: lanetype), `%`_dim{i#15283}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1928, dim#1928, i#15276}((Jnn : Jnn <: lanetype), `%`_dim{i#15283}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#1928, dim#1928, i#15276}((Jnn : Jnn <: lanetype), `%`_dim{i#15283}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1928, dim#1928, i#15276}((Jnn : Jnn <: lanetype), `%`_dim{i#15283}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#1953, dim#1953, i#15362}((Jnn : Jnn <: lanetype), `%`_dim{i#15369}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1953, dim#1953, i#15362}((Jnn : Jnn <: lanetype), `%`_dim{i#15369}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#1953, dim#1953, i#15362}((Jnn : Jnn <: lanetype), `%`_dim{i#15369}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1953, dim#1953, i#15362}((Jnn : Jnn <: lanetype), `%`_dim{i#15369}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#1978, dim#1978, i#15448}((Jnn : Jnn <: lanetype), `%`_dim{i#15455}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1978, dim#1978, i#15448}((Jnn : Jnn <: lanetype), `%`_dim{i#15455}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#1978, dim#1978, i#15448}((Jnn : Jnn <: lanetype), `%`_dim{i#15455}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1978, dim#1978, i#15448}((Jnn : Jnn <: lanetype), `%`_dim{i#15455}(M))))* +[] lane_((Jnn : Jnn <: lanetype))** lane_((Jnn : Jnn <: lanetype))** +[] lane_((Jnn : Jnn <: lanetype))* lane_((Jnn : Jnn <: lanetype))* +[] lane_((Jnn : Jnn <: lanetype))** lane_((Jnn : Jnn <: lanetype))** +[] lane_((Jnn : Jnn <: lanetype))* lane_((Jnn : Jnn <: lanetype))* +[] lane_($lanetype(`%X%`_shape{lanetype#1928, dim#1928, i#15276}((Jnn : Jnn <: lanetype), `%`_dim{i#15283}(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] lane_($lanetype(`%X%`_shape{lanetype#1953, dim#1953, i#15362}((Jnn : Jnn <: lanetype), `%`_dim{i#15369}(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] lane_($lanetype(`%X%`_shape{lanetype#1978, dim#1978, i#15448}((Jnn : Jnn <: lanetype), `%`_dim{i#15455}(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] lane_((Fnn : Fnn <: lanetype))** lane_($lanetype(`%X%`_shape{lanetype#2135, dim#2135, i#16233}((Fnn : Fnn <: lanetype), `%`_dim{i#16240}(M))))** +[] dim* dim* +[] nat* nat* +[] nat* nat* +[] lanetype* lanetype* +[] lane_((Fnn : Fnn <: lanetype))* lane_($lanetype(`%X%`_shape{lanetype#2135, dim#2135, i#16233}((Fnn : Fnn <: lanetype), `%`_dim{i#16240}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#2054, dim#2054, i#16009}((Fnn : Fnn <: lanetype), `%`_dim{i#16016}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2054, dim#2054, i#16009}((Fnn : Fnn <: lanetype), `%`_dim{i#16016}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#2054, dim#2054, i#16009}((Fnn : Fnn <: lanetype), `%`_dim{i#16016}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2054, dim#2054, i#16009}((Fnn : Fnn <: lanetype), `%`_dim{i#16016}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#2078, dim#2078, i#16067}((Fnn : Fnn <: lanetype), `%`_dim{i#16074}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2078, dim#2078, i#16067}((Fnn : Fnn <: lanetype), `%`_dim{i#16074}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#2078, dim#2078, i#16067}((Fnn : Fnn <: lanetype), `%`_dim{i#16074}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2078, dim#2078, i#16067}((Fnn : Fnn <: lanetype), `%`_dim{i#16074}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#2102, dim#2102, i#16125}((Fnn : Fnn <: lanetype), `%`_dim{i#16132}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2102, dim#2102, i#16125}((Fnn : Fnn <: lanetype), `%`_dim{i#16132}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#2102, dim#2102, i#16125}((Fnn : Fnn <: lanetype), `%`_dim{i#16132}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2102, dim#2102, i#16125}((Fnn : Fnn <: lanetype), `%`_dim{i#16132}(M))))* +[] lane_((Fnn : Fnn <: lanetype))** lane_((Fnn : Fnn <: lanetype))** +[] lane_((Fnn : Fnn <: lanetype))* lane_((Fnn : Fnn <: lanetype))* +[] lane_((Fnn : Fnn <: lanetype))** lane_((Fnn : Fnn <: lanetype))** +[] lane_((Fnn : Fnn <: lanetype))* lane_((Fnn : Fnn <: lanetype))* +[] lane_($lanetype(`%X%`_shape{lanetype#2054, dim#2054, i#16009}((Fnn : Fnn <: lanetype), `%`_dim{i#16016}(M))))* fN($sizenn((Fnn : Fnn <: numtype)))* +[] lane_($lanetype(`%X%`_shape{lanetype#2078, dim#2078, i#16067}((Fnn : Fnn <: lanetype), `%`_dim{i#16074}(M))))* fN($sizenn((Fnn : Fnn <: numtype)))* +[] lane_($lanetype(`%X%`_shape{lanetype#2102, dim#2102, i#16125}((Fnn : Fnn <: lanetype), `%`_dim{i#16132}(M))))* fN($sizenn((Fnn : Fnn <: numtype)))* +[] iN($lsizenn((Jnn : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape{lanetype#2222, dim#2222, i#16597}((Jnn : Jnn <: lanetype), `%`_dim{i#16604}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#2170, dim#2170, i#16314}((Jnn : Jnn <: lanetype), `%`_dim{i#16321}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2170, dim#2170, i#16314}((Jnn : Jnn <: lanetype), `%`_dim{i#16321}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#2170, dim#2170, i#16314}((Jnn : Jnn <: lanetype), `%`_dim{i#16321}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2170, dim#2170, i#16314}((Jnn : Jnn <: lanetype), `%`_dim{i#16321}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#2195, dim#2195, i#16400}((Jnn : Jnn <: lanetype), `%`_dim{i#16407}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2195, dim#2195, i#16400}((Jnn : Jnn <: lanetype), `%`_dim{i#16407}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#2195, dim#2195, i#16400}((Jnn : Jnn <: lanetype), `%`_dim{i#16407}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2195, dim#2195, i#16400}((Jnn : Jnn <: lanetype), `%`_dim{i#16407}(M))))* +[] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] lane_($lanetype(`%X%`_shape{lanetype#2170, dim#2170, i#16314}((Jnn : Jnn <: lanetype), `%`_dim{i#16321}(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] lane_($lanetype(`%X%`_shape{lanetype#2195, dim#2195, i#16400}((Jnn : Jnn <: lanetype), `%`_dim{i#16407}(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] nat* nat* +[] nat* nat* +[] iN($lsizenn((Jnn : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape{lanetype#2310, dim#2310, i#16989}((Jnn : Jnn <: lanetype), `%`_dim{i#16996}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#2258, dim#2258, i#16706}((Jnn : Jnn <: lanetype), `%`_dim{i#16713}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2258, dim#2258, i#16706}((Jnn : Jnn <: lanetype), `%`_dim{i#16713}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#2258, dim#2258, i#16706}((Jnn : Jnn <: lanetype), `%`_dim{i#16713}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2258, dim#2258, i#16706}((Jnn : Jnn <: lanetype), `%`_dim{i#16713}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#2283, dim#2283, i#16792}((Jnn : Jnn <: lanetype), `%`_dim{i#16799}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2283, dim#2283, i#16792}((Jnn : Jnn <: lanetype), `%`_dim{i#16799}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#2283, dim#2283, i#16792}((Jnn : Jnn <: lanetype), `%`_dim{i#16799}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2283, dim#2283, i#16792}((Jnn : Jnn <: lanetype), `%`_dim{i#16799}(M))))* +[] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] lane_($lanetype(`%X%`_shape{lanetype#2258, dim#2258, i#16706}((Jnn : Jnn <: lanetype), `%`_dim{i#16713}(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] lane_($lanetype(`%X%`_shape{lanetype#2283, dim#2283, i#16792}((Jnn : Jnn <: lanetype), `%`_dim{i#16799}(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] nat* nat* +[] nat* nat* +[] iN($sizenn((Fnn : Fnn <: numtype)))* iN($sizenn((Fnn : Fnn <: numtype)))* +[] nat* nat* +[] nat* nat* +[] lane_($lanetype(`%X%`_shape{lanetype#2346, dim#2346, i#17098}((Fnn : Fnn <: lanetype), `%`_dim{i#17105}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2346, dim#2346, i#17098}((Fnn : Fnn <: lanetype), `%`_dim{i#17105}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#2346, dim#2346, i#17098}((Fnn : Fnn <: lanetype), `%`_dim{i#17105}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2346, dim#2346, i#17098}((Fnn : Fnn <: lanetype), `%`_dim{i#17105}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#2370, dim#2370, i#17156}((Fnn : Fnn <: lanetype), `%`_dim{i#17163}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2370, dim#2370, i#17156}((Fnn : Fnn <: lanetype), `%`_dim{i#17163}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#2370, dim#2370, i#17156}((Fnn : Fnn <: lanetype), `%`_dim{i#17163}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2370, dim#2370, i#17156}((Fnn : Fnn <: lanetype), `%`_dim{i#17163}(M))))* +[] iN($sizenn((Fnn : Fnn <: numtype)))* iN($sizenn((Fnn : Fnn <: numtype)))* +[] iN($sizenn((Fnn : Fnn <: numtype)))* iN($sizenn((Fnn : Fnn <: numtype)))* +[] lane_($lanetype(`%X%`_shape{lanetype#2346, dim#2346, i#17098}((Fnn : Fnn <: lanetype), `%`_dim{i#17105}(M))))* fN($sizenn((Fnn : Fnn <: numtype)))* +[] lane_($lanetype(`%X%`_shape{lanetype#2370, dim#2370, i#17156}((Fnn : Fnn <: lanetype), `%`_dim{i#17163}(M))))* fN($sizenn((Fnn : Fnn <: numtype)))* +[] nat* nat* +[] nat* nat* +[] iN($lsizenn((Jnn : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape{lanetype#2459, dim#2459, i#17593}((Jnn : Jnn <: lanetype), `%`_dim{i#17600}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#2433, dim#2433, i#17447}((Jnn : Jnn <: lanetype), `%`_dim{i#17454}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2433, dim#2433, i#17447}((Jnn : Jnn <: lanetype), `%`_dim{i#17454}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#2433, dim#2433, i#17447}((Jnn : Jnn <: lanetype), `%`_dim{i#17454}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2433, dim#2433, i#17447}((Jnn : Jnn <: lanetype), `%`_dim{i#17454}(M))))* +[] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] lane_($lanetype(`%X%`_shape{lanetype#2433, dim#2433, i#17447}((Jnn : Jnn <: lanetype), `%`_dim{i#17454}(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] iN($lsizenn((Jnn : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape{lanetype#2521, dim#2521, i#17848}((Jnn : Jnn <: lanetype), `%`_dim{i#17855}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#2495, dim#2495, i#17702}((Jnn : Jnn <: lanetype), `%`_dim{i#17709}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2495, dim#2495, i#17702}((Jnn : Jnn <: lanetype), `%`_dim{i#17709}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#2495, dim#2495, i#17702}((Jnn : Jnn <: lanetype), `%`_dim{i#17709}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2495, dim#2495, i#17702}((Jnn : Jnn <: lanetype), `%`_dim{i#17709}(M))))* +[] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] lane_($lanetype(`%X%`_shape{lanetype#2495, dim#2495, i#17702}((Jnn : Jnn <: lanetype), `%`_dim{i#17709}(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] lane_($lanetype(`%X%`_shape{lanetype#2557, dim#2557, i#17945}((Jnn : Jnn <: lanetype), `%`_dim{i#17952}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2557, dim#2557, i#17945}((Jnn : Jnn <: lanetype), `%`_dim{i#17952}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#2557, dim#2557, i#17945}((Jnn : Jnn <: lanetype), `%`_dim{i#17952}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2557, dim#2557, i#17945}((Jnn : Jnn <: lanetype), `%`_dim{i#17952}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#2557, dim#2557, i#17945}((Jnn : Jnn <: lanetype), `%`_dim{i#17952}(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] nat* nat* +[] nat* nat* +[] nat* nat* +[] nat* nat^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat) +[] iN($lsizenn((Jnn : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape{lanetype#2648, dim#2648, i#18585}((Jnn : Jnn <: lanetype), `%`_dim{i#18592}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#2596, dim#2596, i#18335}((Jnn : Jnn <: lanetype), `%`_dim{i#18342}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2596, dim#2596, i#18335}((Jnn : Jnn <: lanetype), `%`_dim{i#18342}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#2596, dim#2596, i#18335}((Jnn : Jnn <: lanetype), `%`_dim{i#18342}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2596, dim#2596, i#18335}((Jnn : Jnn <: lanetype), `%`_dim{i#18342}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#2621, dim#2621, i#18421}((Jnn : Jnn <: lanetype), `%`_dim{i#18428}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2621, dim#2621, i#18421}((Jnn : Jnn <: lanetype), `%`_dim{i#18428}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#2621, dim#2621, i#18421}((Jnn : Jnn <: lanetype), `%`_dim{i#18428}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2621, dim#2621, i#18421}((Jnn : Jnn <: lanetype), `%`_dim{i#18428}(M))))* +[] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] lane_($lanetype(`%X%`_shape{lanetype#2621, dim#2621, i#18421}((Jnn : Jnn <: lanetype), `%`_dim{i#18428}(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] lane_($lanetype(`%X%`_shape{lanetype#2596, dim#2596, i#18335}((Jnn : Jnn <: lanetype), `%`_dim{i#18342}(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] laneidx* laneidx* +[] lane_($lanetype(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2760, dim#2760, i#19037}((Jnn : Jnn <: lanetype), `%`_dim{i#19044}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#2709, dim#2709, i#18805}((Jnn : Jnn <: lanetype), `%`_dim{i#18812}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2709, dim#2709, i#18805}((Jnn : Jnn <: lanetype), `%`_dim{i#18812}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#2709, dim#2709, i#18805}((Jnn : Jnn <: lanetype), `%`_dim{i#18812}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2709, dim#2709, i#18805}((Jnn : Jnn <: lanetype), `%`_dim{i#18812}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M))))* +[] laneidx* laneidx* +[] nat* nat* +[] lane_($lanetype(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#2709, dim#2709, i#18805}((Jnn : Jnn <: lanetype), `%`_dim{i#18812}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#2709, dim#2709, i#18805}((Jnn : Jnn <: lanetype), `%`_dim{i#18812}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M))))* +[] half? half? +[] zero? zero? +[] iN($lsizenn2((Inn_2 : Inn <: lanetype)))? lane_($lanetype(`%X%`_shape{lanetype#5285, dim#5285, i#26220}((Inn_2 : Inn <: lanetype), `%`_dim{i#26227}(M_2))))? +[] iN($lsizenn2((Inn_2 : Inn <: lanetype)))? iN($lsizenn2((Inn_2 : Inn <: lanetype)))? +[] iN($lsizenn2((Inn_2 : Inn <: lanetype)))? iN($lsizenn2((Inn_2 : Inn <: lanetype)))? +[] zero? zero? +[] iN($lsizenn2((Inn_2 : Inn <: lanetype)))? lane_($lanetype(`%X%`_shape{lanetype#5373, dim#5373, i#26396}((Inn_2 : Inn <: lanetype), `%`_dim{i#26403}(M_2))))? +[] iN($lsizenn2((Inn_2 : Inn <: lanetype)))? iN($lsizenn2((Inn_2 : Inn <: lanetype)))? +[] iN($lsizenn2((Inn_2 : Inn <: lanetype)))? iN($lsizenn2((Inn_2 : Inn <: lanetype)))? +[] fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))* lane_($lanetype(`%X%`_shape{lanetype#5461, dim#5461, i#26572}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#26579}(M_2))))* +[] fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))* fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))* +[] fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))* fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))* +[] fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))* lane_($lanetype(`%X%`_shape{lanetype#5548, dim#5548, i#26695}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#26702}(M_2))))* +[] fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))* fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))* +[] fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))* fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))* +[] lane_($lanetype(`%X%`_shape{lanetype#5751, dim#5751, i#26946}(Lnn_1, `%`_dim{i#26953}(M))))* lane_($lanetype(`%X%`_shape{lanetype#5751, dim#5751, i#26946}(Lnn_1, `%`_dim{i#26953}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#5751, dim#5751, i#26946}(Lnn_1, `%`_dim{i#26953}(M))))* lane_($lanetype(`%X%`_shape{lanetype#5751, dim#5751, i#26946}(Lnn_1, `%`_dim{i#26953}(M))))* +[] lane_(Lnn_2)** lane_(Lnn_2)** +[] lane_(Lnn_2)* lane_(Lnn_2)* +[] lane_(Lnn_2)** lane_(Lnn_2)** +[] lane_(Lnn_2)* lane_(Lnn_2)* +[] lane_($lanetype(`%X%`_shape{lanetype#5751, dim#5751, i#26946}(Lnn_1, `%`_dim{i#26953}(M))))* lane_($lanetype(`%X%`_shape{lanetype#5867, dim#5867, i#27120}(Lnn_1, `%`_dim{i#27127}(M))))* +[] dim* dim* +[] dim* dim* +[] nat* nat* +[] nat* nat* +[] nat* nat* +[] nat* nat* +[] lanetype* lanetype* +[] lanetype* lanetype* +[] lane_(Lnn_2)** lane_($lanetype(`%X%`_shape{lanetype#5914, dim#5914, i#27181}(Lnn_2, `%`_dim{i#27188}(M))))** +[] dim* dim* +[] nat* nat* +[] nat* nat* +[] lanetype* lanetype* +[] lane_(Lnn_2)* lane_($lanetype(`%X%`_shape{lanetype#5914, dim#5914, i#27181}(Lnn_2, `%`_dim{i#27188}(M))))* +[] lane_(Lnn_2)** lane_($lanetype(`%X%`_shape{lanetype#5914, dim#5914, i#27181}(Lnn_2, `%`_dim{i#27188}(M))))** +[] dim* dim* +[] nat* nat* +[] nat* nat* +[] lanetype* lanetype* +[] lane_(Lnn_2)* lane_($lanetype(`%X%`_shape{lanetype#5914, dim#5914, i#27181}(Lnn_2, `%`_dim{i#27188}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#6065, dim#6065, i#27388}(Lnn_1, `%`_dim{i#27395}(M_1))))* lane_($lanetype(`%X%`_shape{lanetype#6065, dim#6065, i#27388}(Lnn_1, `%`_dim{i#27395}(M_1))))* +[] lane_($lanetype(`%X%`_shape{lanetype#6065, dim#6065, i#27388}(Lnn_1, `%`_dim{i#27395}(M_1))))* lane_($lanetype(`%X%`_shape{lanetype#6065, dim#6065, i#27388}(Lnn_1, `%`_dim{i#27395}(M_1))))* +[] lane_(Lnn_2)** lane_(Lnn_2)** +[] lane_(Lnn_2)* lane_(Lnn_2)* +[] lane_(Lnn_2)** lane_(Lnn_2)** +[] lane_(Lnn_2)* lane_(Lnn_2)* +[] lane_($lanetype(`%X%`_shape{lanetype#6065, dim#6065, i#27388}(Lnn_1, `%`_dim{i#27395}(M_1))))* lane_($lanetype(`%X%`_shape{lanetype#6181, dim#6181, i#27562}(Lnn_1, `%`_dim{i#27569}(M_1))))* +[] dim* dim* +[] dim* dim* +[] nat* nat* +[] nat* nat* +[] nat* nat* +[] nat* nat* +[] lanetype* lanetype* +[] lanetype* lanetype* +[] lane_(Lnn_2)** lane_($lanetype(`%X%`_shape{lanetype#6228, dim#6228, i#27623}(Lnn_2, `%`_dim{i#27630}(M_2))))** +[] dim* dim* +[] nat* nat* +[] nat* nat* +[] lanetype* lanetype* +[] lane_(Lnn_2)* lane_($lanetype(`%X%`_shape{lanetype#6228, dim#6228, i#27623}(Lnn_2, `%`_dim{i#27630}(M_2))))* +[] lane_(Lnn_2)** lane_($lanetype(`%X%`_shape{lanetype#6228, dim#6228, i#27623}(Lnn_2, `%`_dim{i#27630}(M_2))))** +[] dim* dim* +[] nat* nat* +[] nat* nat* +[] lanetype* lanetype* +[] lane_(Lnn_2)* lane_($lanetype(`%X%`_shape{lanetype#6228, dim#6228, i#27623}(Lnn_2, `%`_dim{i#27630}(M_2))))* +[] lane_($lanetype(`%X%`_shape{lanetype#6339, dim#6339, i#27790}(Lnn_1, `%`_dim{i#27797}(M_1))))* lane_($lanetype(`%X%`_shape{lanetype#6339, dim#6339, i#27790}(Lnn_1, `%`_dim{i#27797}(M_1))))* +[] lane_($lanetype(`%X%`_shape{lanetype#6339, dim#6339, i#27790}(Lnn_1, `%`_dim{i#27797}(M_1))))* lane_($lanetype(`%X%`_shape{lanetype#6339, dim#6339, i#27790}(Lnn_1, `%`_dim{i#27797}(M_1))))* +[] lane_(Lnn_2)** lane_(Lnn_2)** +[] lane_(Lnn_2)* lane_(Lnn_2)* +[] lane_(Lnn_2)** lane_(Lnn_2)** +[] lane_(Lnn_2)* lane_(Lnn_2)* +[] lane_($lanetype(`%X%`_shape{lanetype#6339, dim#6339, i#27790}(Lnn_1, `%`_dim{i#27797}(M_1))))* lane_($lanetype(`%X%`_shape{lanetype#6501, dim#6501, i#28022}(Lnn_1, `%`_dim{i#28029}(M_1))))* +[] dim* dim* +[] dim* dim* +[] nat* nat* +[] nat* nat* +[] nat* nat* +[] nat* nat* +[] lanetype* lanetype* +[] lanetype* lanetype* +[] lane_(Lnn_2)** lane_($lanetype(`%X%`_shape{lanetype#6548, dim#6548, i#28083}(Lnn_2, `%`_dim{i#28090}(M_2))))** +[] dim* dim* +[] nat* nat* +[] nat* nat* +[] lanetype* lanetype* +[] lane_(Lnn_2)* lane_($lanetype(`%X%`_shape{lanetype#6548, dim#6548, i#28083}(Lnn_2, `%`_dim{i#28090}(M_2))))* +[] lane_(Lnn_2)** lane_($lanetype(`%X%`_shape{lanetype#6548, dim#6548, i#28083}(Lnn_2, `%`_dim{i#28090}(M_2))))** +[] dim* dim* +[] nat* nat* +[] nat* nat* +[] lanetype* lanetype* +[] lane_(Lnn_2)* lane_($lanetype(`%X%`_shape{lanetype#6548, dim#6548, i#28083}(Lnn_2, `%`_dim{i#28090}(M_2))))* +[] laneidx* laneidx* +[] laneidx* laneidx* +[] lane_($lanetype(`%X%`_shape{lanetype#6595, dim#6595, i#28198}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28205}(M_1))))* lane_($lanetype(`%X%`_shape{lanetype#6595, dim#6595, i#28198}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28205}(M_1))))* +[] lane_($lanetype(`%X%`_shape{lanetype#6595, dim#6595, i#28198}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28205}(M_1))))* lane_($lanetype(`%X%`_shape{lanetype#6595, dim#6595, i#28198}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28205}(M_1))))* +[] lane_($lanetype(`%X%`_shape{lanetype#6620, dim#6620, i#28284}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28291}(M_1))))* lane_($lanetype(`%X%`_shape{lanetype#6620, dim#6620, i#28284}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28291}(M_1))))* +[] lane_($lanetype(`%X%`_shape{lanetype#6620, dim#6620, i#28284}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28291}(M_1))))* lane_($lanetype(`%X%`_shape{lanetype#6620, dim#6620, i#28284}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28291}(M_1))))* +[] iN($lsize((Jnn_2 : Jnn <: lanetype)))* iN($lsize((Jnn_2 : Jnn <: lanetype)))* +[] iN($lsize((Jnn_2 : Jnn <: lanetype)))* iN($lsize((Jnn_2 : Jnn <: lanetype)))* +[] lane_($lanetype(`%X%`_shape{lanetype#6595, dim#6595, i#28198}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28205}(M_1))))* iN($lsize((Jnn_1 : Jnn <: lanetype)))* +[] iN($lsize((Jnn_2 : Jnn <: lanetype)))* iN($lsize((Jnn_2 : Jnn <: lanetype)))* +[] iN($lsize((Jnn_2 : Jnn <: lanetype)))* iN($lsize((Jnn_2 : Jnn <: lanetype)))* +[] lane_($lanetype(`%X%`_shape{lanetype#6620, dim#6620, i#28284}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28291}(M_1))))* iN($lsize((Jnn_1 : Jnn <: lanetype)))* +[] iN($lsize((Jnn_2 : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape{lanetype#6647, dim#6647, i#28450}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28457}(M_2))))* +[] iN($lsize((Jnn_2 : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape{lanetype#6647, dim#6647, i#28450}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28457}(M_2))))* +[] iN(N)* iN(N)* +[] nat* nat* +[] nat* nat* +[] N* nat* +[] N* nat* +[] N* N* +[] N* N* +[] N* N* +[] N* N* +[] iN(N)* iN(N)* +[] nat* nat* +[] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape{lanetype#6740, dim#6740, i#28862}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28869}(M_2))))* +[] lane_($lanetype(`%X%`_shape{lanetype#6714, dim#6714, i#28678}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28685}(M_1))))* lane_($lanetype(`%X%`_shape{lanetype#6714, dim#6714, i#28678}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28685}(M_1))))* +[] lane_($lanetype(`%X%`_shape{lanetype#6714, dim#6714, i#28678}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28685}(M_1))))* lane_($lanetype(`%X%`_shape{lanetype#6714, dim#6714, i#28678}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28685}(M_1))))* +[] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* +[] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* +[] lane_($lanetype(`%X%`_shape{lanetype#6714, dim#6714, i#28678}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28685}(M_1))))* iN($lsizenn1((Jnn_1 : Jnn <: lanetype)))* +[] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* +[] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* +[] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* +[] iN(N)* iN(N)* +[] iN(N)* iN(N)* +[] iN(N)* iN(N)* +[] iN(N)* iN(N)* +[] iN(N)* iN(N)* +[] iN(N)* iN(N)* +[] iN(N)* iN(N)* +[] iN(N)* iN(N)* +[] iN(N)* iN(N)* +[] iN(N)* iN(N)* +[] iN(N)* iN(N)* +[] iN(N)* iN(N)* +[] iN(N)* iN(N)* +[] iN(N)* iN(N)* +[] iN(N)* iN(N)* +[] iN(N)* iN(N)* +[] iN(N)* iN(N)* +[] iN(N)* iN(N)* +[] iN(N)* iN(N)* +[] iN(N)* iN(N)* +[] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape{lanetype#6840, dim#6840, i#29380}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#29387}(M_2))))* +[] lane_($lanetype(`%X%`_shape{lanetype#6788, dim#6788, i#29007}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29014}(M_1))))* lane_($lanetype(`%X%`_shape{lanetype#6788, dim#6788, i#29007}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29014}(M_1))))* +[] lane_($lanetype(`%X%`_shape{lanetype#6788, dim#6788, i#29007}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29014}(M_1))))* lane_($lanetype(`%X%`_shape{lanetype#6788, dim#6788, i#29007}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29014}(M_1))))* +[] lane_($lanetype(`%X%`_shape{lanetype#6813, dim#6813, i#29113}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29120}(M_1))))* lane_($lanetype(`%X%`_shape{lanetype#6813, dim#6813, i#29113}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29120}(M_1))))* +[] lane_($lanetype(`%X%`_shape{lanetype#6813, dim#6813, i#29113}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29120}(M_1))))* lane_($lanetype(`%X%`_shape{lanetype#6813, dim#6813, i#29113}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29120}(M_1))))* +[] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* +[] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* +[] lane_($lanetype(`%X%`_shape{lanetype#6788, dim#6788, i#29007}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29014}(M_1))))* iN($lsizenn1((Jnn_1 : Jnn <: lanetype)))* +[] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* +[] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* +[] lane_($lanetype(`%X%`_shape{lanetype#6813, dim#6813, i#29113}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29120}(M_1))))* iN($lsizenn1((Jnn_1 : Jnn <: lanetype)))* +[] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* +[] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* +[] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* +[] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* +[] iN(N)* iN(N)* +[] iN(N)* iN(N)* +[] iN(N)* iN(N)* +[] iN(N)* iN(N)* +[] externaddr* externaddr* +[] externaddr* externaddr* +[] externaddr* externaddr* +[] externaddr* externaddr* +[] externaddr* externaddr* +[] externaddr* externaddr* +[] externaddr* externaddr* +[] externaddr* externaddr* +[] externaddr* externaddr* +[] externaddr* externaddr* +[] externaddr* externaddr* +[] externaddr* externaddr* +[] externaddr* externaddr* +[] externaddr* externaddr* +[] externaddr* externaddr* +[] externaddr* externaddr* +[] externaddr* externaddr* +[] externaddr* externaddr* +[] externaddr* externaddr* +[] externaddr* externaddr* +[] byte* byte* +[] byte* byte* +[] ref* ref* +[] ref* ref* +[] byte* byte* +[] byte* byte* +[] structinst* structinst* +[] structinst* structinst* +[] arrayinst* arrayinst* +[] arrayinst* arrayinst* +[] exninst* exninst* +[] exninst* exninst* +[] u64? u64? +[] ref* ref* +[] u64? u64? +[] ref* ref* +[] ref* ref* +[] ref* ref* +[] nat? nat? +[] nat? nat? +[] u64? u64? +[] u64? u64? +[] byte* byte* +[] u64? u64? +[] byte* byte* +[] nat* nat^(n * (64 * $Ki)) +[] byte* byte* +[] byte* byte* +[] nat? nat? +[] nat? nat? +[] u64? u64? +[] deftype* deftype* +[] deftype* deftype* +[] deftype* deftype* +[] deftype* deftype* +[] deftype* deftype* +[] deftype* deftype* +[] deftype* deftype* +[] deftype* deftype* +[] deftype* deftype* +[] deftype* deftype* +[] deftype* deftype* +[] deftype* deftype* +[] deftype* deftype* +[] deftype* deftype* +[] deftype* deftype* +[] valtype*? valtype*? +[] valtype* valtype* +[] valtype*? valtype*? +[] valtype* valtype* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] val* val* +[] val* val* +[] instr* instr* +[] val* val* +[] val* val^n +[] instr* instr* +[] val* val^n +[] instr* instr* +[] instr* instr* +[] val* val* +[] instr* instr* +[] val* val* +[] catch* catch* +[] val* val* +[] instr* instr* +[] val* val* +[] labelidx* labelidx* +[] labelidx* labelidx* +[] labelidx* labelidx* +[] labelidx* labelidx* +[] labelidx* labelidx* +[] labelidx* labelidx* +[] labelidx* labelidx* +[] labelidx* labelidx* +[] val* val^n +[] val* val^n +[] val* val* +[] val* val^n +[] instr* instr* +[] val* val^n +[] instr* instr* +[] val* val* +[] instr* instr* +[] val* val* +[] catch* catch* +[] val* val* +[] instr* instr* +[] val* val* +[] catch* catch* +[] val* val* +[] val* val* +[] val* val* +[] instr* instr* +[] val* val* +[] val* val* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] lane_($lanetype(`%X%`_shape{lanetype#7537, dim#7537, i#45322}((Jnn : Jnn <: lanetype), `%`_dim{i#45329}(M))))* lane_($lanetype(`%X%`_shape{lanetype#7537, dim#7537, i#45322}((Jnn : Jnn <: lanetype), `%`_dim{i#45329}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#7537, dim#7537, i#45322}((Jnn : Jnn <: lanetype), `%`_dim{i#45329}(M))))* lane_($lanetype(`%X%`_shape{lanetype#7537, dim#7537, i#45322}((Jnn : Jnn <: lanetype), `%`_dim{i#45329}(M))))* +[] lane_($lanetype(`%X%`_shape{lanetype#7537, dim#7537, i#45322}((Jnn : Jnn <: lanetype), `%`_dim{i#45329}(M))))* iN($jsizenn(Jnn))* +[] nat* nat* +[] laneidx* laneidx* +[] laneidx* laneidx* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype? valtype? +[] valtype? valtype? +[] val* val^m +[] instr* instr* +[] val* val^m +[] instr* instr* +[] valtype* valtype^m +[] valtype* valtype^n +[] val* val^m +[] instr* instr* +[] instr* instr* +[] val* val^m +[] instr* instr* +[] valtype* valtype^m +[] valtype* valtype^n +[] val* val^n +[] instr* instr* +[] valtype* valtype^n +[] valtype* valtype^m +[] valtype* valtype* +[] valtype* valtype* +[] instr* instr* +[] val* val^n +[] valtype* valtype* +[] instr* instr* +[] val* val* +[] instr* instr* +[] val* val* +[] catch* catch* +[] val* val* +[] instr* instr* +[] val* val* +[] val* val* +[] instr* instr* +[] val* val* +[] val* val^n +[] instr* instr* +[] val* val^n +[] valtype* valtype^n +[] valtype* valtype^m +[] val* val* +[] instr* instr* +[] val* val* +[] val* val* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] catch* catch* +[] val* val* +[] val* val* +[] val* val* +[] catch* catch* +[] val* val* +[] val* val* +[] val* val* +[] catch* catch* +[] catch* catch* +[] catch* catch* +[] catch* catch* +[] val* val^m +[] catch* catch* +[] instr* instr* +[] catch* catch* +[] val* val^m +[] instr* instr* +[] valtype* valtype^m +[] valtype* valtype^n +[] byte** byte*^K +[] nat* nat^K +[] nat* nat^K +[] iN(M)* iN(M)^K +[] u64* u64^K +[] iN(M)* iN(M)^K +[] nat* nat^M +[] nat* nat^M +[] val* val* +[] mut?* mut?* +[] mut?* mut?* +[] storagetype* storagetype* +[] storagetype* storagetype* +[] mut? mut? +[] val* val* +[] storagetype* storagetype* +[] sx? sx? +[] sx? sx? +[] storagetype* storagetype* +[] storagetype* storagetype* +[] sx? sx? +[] mut?* mut?* +[] mut?* mut?* +[] storagetype* storagetype* +[] storagetype* storagetype* +[] mut? mut? +[] mut? mut? +[] ref* ref^n +[] ref* ref^n +[] ref* ref^n +[] mut? mut? +[] lit_(zt)* lit_(zt)^n +[] mut? mut? +[] lit_(zt)* lit_(zt)^n +[] lit_(zt)* lit_(zt)^n +[] sx? sx? +[] sx? sx? +[] sx? sx? +[] sx? sx? +[] mut? mut? +[] sx? sx? +[] mut? mut? +[] sx? sx? +[] sx? sx? +[] sx? sx? +[] mut? mut? +[] sx? sx? +[] sx? sx? +[] mut? mut? +[] mut? mut? +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] val* val* +[] instr* instr* +[] instr* instr* +[] val* val* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] val* val* +[] val* val* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] val* val^n +[] valtype* valtype^n +[] val* val^n +[] byte* byte* +[] byte* byte* +[] byte* byte* +[] byte* byte* +[] byte* byte* +[] byte* byte* +[] byte* byte* +[] byte* byte* +[] byte* byte* +[] byte* byte* +[] byte* byte* +[] byte* byte* +[] val* val^n +[] mut?* mut?^n +[] mut?* mut?^n +[] storagetype* storagetype^n +[] storagetype* storagetype^n +[] mut? mut? +[] val* val^n +[] storagetype* storagetype^n +[] storagetype* storagetype* +[] storagetype* storagetype* +[] mut?* mut?* +[] mut?* mut?* +[] storagetype* storagetype* +[] storagetype* storagetype* +[] mut? mut? +[] val* val^n +[] mut? mut? +[] val* val^n +[] mut? mut? +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] val* val* +[] instr* instr* +[] val* val* +[] type* type* +[] deftype* deftype* +[] deftype* deftype* +[] deftype* deftype* +[] deftype* deftype* +[] type* type* +[] deftype* deftype* +[] deftype* deftype* +[] deftype* deftype* +[] deftype* deftype* +[] deftype* deftype* +[] tagtype* tagtype* +[] tagaddr* tagaddr* +[] tagaddr* tagaddr* +[] tagaddr* tagaddr* +[] tagtype* tagtype* +[] globaltype* globaltype* +[] val* val* +[] globaladdr* globaladdr* +[] globaladdr* globaladdr* +[] globaladdr* globaladdr* +[] globaltype* globaltype* +[] val* val* +[] u64? u64? +[] u64? u64? +[] nat* nat^(i!`%`_u64{i#46867}.0 * (64 * $Ki)) +[] memtype* memtype* +[] memaddr* memaddr* +[] memaddr* memaddr* +[] memaddr* memaddr* +[] memtype* memtype* +[] u64? u64? +[] u64? u64? +[] tabletype* tabletype* +[] ref* ref* +[] tableaddr* tableaddr* +[] tableaddr* tableaddr* +[] tableaddr* tableaddr* +[] tabletype* tabletype* +[] ref* ref* +[] deftype* deftype* +[] funccode* funccode* +[] moduleinst* moduleinst* +[] funcaddr* funcaddr* +[] funcaddr* funcaddr* +[] funcaddr* funcaddr* +[] deftype* deftype* +[] funccode* funccode* +[] moduleinst* moduleinst* +[] byte* byte* +[] byte* byte* +[] datatype* datatype* +[] byte* byte* +[] byte** byte** +[] byte* byte* +[] dataaddr* dataaddr* +[] byte* byte* +[] dataaddr* dataaddr* +[] dataaddr* dataaddr* +[] datatype* datatype* +[] byte** byte** +[] byte* byte* +[] ref* ref* +[] ref* ref* +[] reftype* elemtype* +[] ref* ref* +[] ref** ref** +[] ref* ref* +[] elemaddr* elemaddr* +[] ref* ref* +[] elemaddr* elemaddr* +[] elemaddr* elemaddr* +[] reftype* elemtype* +[] ref** ref** +[] ref* ref* +[] export* export* +[] export* export* +[] externaddr* externaddr* +[] val* val* +[] ref* ref* +[] ref** ref** +[] ref* ref* +[] type* type* +[] import* import* +[] tag* tag* +[] global* global* +[] mem* mem* +[] table* table* +[] func* func* +[] data* data* +[] elem* elem* +[] start? start? +[] export* export* +[] tag* tag* +[] tag* tag* +[] tagtype* tagtype* +[] tagtype* tagtype* +[] global* global* +[] global* global* +[] expr* expr* +[] expr* expr* +[] globaltype* globaltype* +[] globaltype* globaltype* +[] mem* mem* +[] mem* mem* +[] memtype* memtype* +[] memtype* memtype* +[] table* table* +[] table* table* +[] expr* expr* +[] expr* expr* +[] tabletype* tabletype* +[] tabletype* tabletype* +[] func* func* +[] func* func* +[] expr* expr* +[] expr* expr* +[] local** local** +[] local** local** +[] typeidx* typeidx* +[] idx* typeidx* +[] local* local* +[] data* data* +[] data* data* +[] byte** byte** +[] byte** byte** +[] datamode* datamode* +[] datamode* datamode* +[] byte* byte* +[] elem* elem* +[] elem* elem* +[] elemmode* elemmode* +[] elemmode* elemmode* +[] elemtype* reftype* +[] expr** expr** +[] expr** expr** +[] reftype* reftype* +[] expr* expr* +[] tagaddr* tagaddr* +[] tagaddr* tagaddr* +[] externaddr* externaddr* +[] globaladdr* globaladdr* +[] globaladdr* globaladdr* +[] externaddr* externaddr* +[] memaddr* memaddr* +[] memaddr* memaddr* +[] externaddr* externaddr* +[] tableaddr* tableaddr* +[] tableaddr* tableaddr* +[] externaddr* externaddr* +[] funcaddr* funcaddr* +[] funcaddr* funcaddr* +[] externaddr* externaddr* +[] deftype* deftype* +[] deftype* deftype* +[] type* type* +[] nat* nat* +[] nat* nat* +[] func* func* +[] func* func* +[] funcinst** funcinst*^|func*{}| +[] tagaddr* tagaddr* +[] tagaddr* tagaddr* +[] tagtype* tagtype* +[] deftype* deftype* +[] globaladdr* globaladdr* +[] globaladdr* globaladdr* +[] globaltype* globaltype* +[] deftype* deftype* +[] val* val* +[] memaddr* memaddr* +[] memaddr* memaddr* +[] memtype* memtype* +[] deftype* deftype* +[] tableaddr* tableaddr* +[] tableaddr* tableaddr* +[] tabletype* tabletype* +[] deftype* deftype* +[] ref* ref* +[] dataaddr* dataaddr* +[] dataaddr* dataaddr* +[] data* data* +[] data* data* +[] byte** byte** +[] byte* byte* +[] elemaddr* elemaddr* +[] elemaddr* elemaddr* +[] elemtype* reftype* +[] deftype* deftype* +[] ref** ref** +[] ref* ref* +[] nat* funcaddr* +[] nat* funcaddr* +[] nat* nat* +[] idx* idx* +[] deftype* deftype* +[] deftype* deftype* +[] expr* expr* +[] expr* expr* +[] local** local** +[] local** local** +[] typeidx* typeidx* +[] idx* typeidx* +[] local* local* +[] func* func* +[] func* func* +[] exportinst* exportinst* +[] exportinst* exportinst* +[] tagaddr* tagaddr* +[] tagaddr* tagaddr* +[] globaladdr* globaladdr* +[] globaladdr* globaladdr* +[] memaddr* memaddr* +[] memaddr* memaddr* +[] tableaddr* tableaddr* +[] tableaddr* tableaddr* +[] funcaddr* funcaddr* +[] nat* funcaddr* +[] export* export* +[] deftype* deftype* +[] tagaddr* tagaddr* +[] tagaddr* tagaddr* +[] globaladdr* globaladdr* +[] globaladdr* globaladdr* +[] memaddr* memaddr* +[] memaddr* memaddr* +[] tableaddr* tableaddr* +[] tableaddr* tableaddr* +[] funcaddr* funcaddr* +[] nat* funcaddr* +[] dataaddr* dataaddr* +[] elemaddr* elemaddr* +[] exportinst* exportinst* +[] byte* byte^n +[] byte* byte^n +[] instr* instr* +[] instr* instr* +[] expr* expr^n +[] expr* expr^n +[] expr* expr^n +[] instr* instr* +[] instr* instr* +[] globaltype* globaltype* +[] expr* expr* +[] val* val* +[] val* val* +[] val* val* +[] globaltype* globaltype* +[] expr* expr* +[] externaddr* externaddr* +[] instr* instr* +[] instr* instr* +[] instr? instr? +[] externtype* externtype* +[] externtype* externtype* +[] externaddr* externaddr* +[] externtype* externtype* +[] type* type* +[] import* import* +[] tag* tag* +[] global* global* +[] mem* mem* +[] table* table* +[] func* func* +[] data* data* +[] elem* elem* +[] start? start? +[] export* export* +[] global* global* +[] global* global* +[] expr* expr* +[] expr* expr* +[] globaltype* globaltype* +[] globaltype* globaltype* +[] table* table* +[] table* table* +[] expr* expr* +[] expr* expr* +[] tabletype* tabletype* +[] tabletype* tabletype* +[] data* data* +[] data* data* +[] byte** byte** +[] byte** byte** +[] datamode* datamode* +[] datamode* datamode* +[] byte* byte* +[] elem* elem* +[] elem* elem* +[] elemmode* elemmode* +[] elemmode* elemmode* +[] expr** expr** +[] expr** expr** +[] reftype* reftype* +[] reftype* reftype* +[] expr* expr* +[] start? start? +[] start? start? +[] funcidx? funcidx? +[] idx? funcidx? +[] type* type* +[] externaddr* externaddr* +[] externaddr* externaddr* +[] func* func* +[] func* func* +[] funcinst** funcinst*^|func*{}| +[] val* val* +[] val* val* +[] globaltype* globaltype* +[] expr* expr* +[] expr* expr* +[] ref* ref* +[] expr** expr** +[] ref** ref** +[] expr* expr* +[] ref* ref* +[] externaddr* externaddr* +[] val* val* +[] ref* ref* +[] ref** ref** +[] ref* ref* +[] instr* instr* +[] instr* instr* +[] data* data* +[] data* data* +[] nat* nat^|data*{}| +[] data* data* +[] data* data* +[] instr* instr* +[] instr* instr* +[] elem* elem* +[] elem* elem* +[] nat* nat^|elem*{}| +[] elem* elem* +[] elem* elem* +[] instr? instr? +[] instr? instr? +[] funcidx? funcidx? +[] idx? funcidx? +[] val* val* +[] val* val* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] val* val* +[] byte* byte* +[] byte* byte* +[] el* el^n +[] el* el^n +[] byte* byte* +[] byte* byte* +[] valtype* valtype* +[] valtype* valtype* +[] mut? mut? +[] mut? mut? +[] fieldtype* fieldtype* +[] fieldtype* fieldtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] idx* typeidx* +[] typeidx* typeidx* +[] idx* typeidx* +[] idx* typeidx* +[] typeidx* typeidx* +[] idx* typeidx* +[] subtype* subtype* +[] subtype* subtype* +[] mut? mut? +[] mut? mut? +[] valtype* valtype* +[] valtype* valtype* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] instr* instr* +[] labelidx* labelidx* +[] labelidx* labelidx* +[] catch* catch* +[] instr* instr* +[] catch* catch* +[] instr* instr* +[] null? null? +[] null? null? +[] null? null? +[] null? null? +[] null? null? +[] null? null? +[] null? null? +[] null? null? +[] byte* byte^16 +[] byte* byte^16 +[] nat* nat^16 +[] nat* nat^16 +[] labelidx* labelidx^16 +[] nat* nat^16 +[] nat* nat^16 +[] labelidx* labelidx^16 +[] instr* instr* +[] instr* instr* +[] en* en* +[] en* en* +[] type* type* +[] type* type* +[] import* import* +[] import* import* +[] idx* typeidx* +[] idx* typeidx* +[] table* table* +[] table* table* +[] mem* mem* +[] mem* mem* +[] global* global* +[] global* global* +[] export* export* +[] export* export* +[] idx* funcidx* +[] funcidx* funcidx* +[] idx* funcidx* +[] idx* funcidx* +[] funcidx* funcidx* +[] idx* funcidx* +[] idx* funcidx* +[] funcidx* funcidx* +[] idx* funcidx* +[] idx* funcidx* +[] funcidx* funcidx* +[] idx* funcidx* +[] expr* expr* +[] expr* expr* +[] expr* expr* +[] expr* expr* +[] expr* expr* +[] expr* expr* +[] expr* expr* +[] expr* expr* +[] elem* elem* +[] elem* elem* +[] valtype* valtype^n +[] local** local** +[] local* local* +[] local** local** +[] local* local* +[] local** local** +[] local* local* +[] local** local** +[] local* local* +[] code* code* +[] code* code* +[] byte* byte* +[] byte* byte* +[] byte* byte* +[] byte* byte* +[] byte* byte* +[] byte* byte* +[] data* data* +[] data* data* +[] tag* tag* +[] tag* tag* +[] type* type* +[] import* import* +[] typeidx* typeidx* +[] table* table* +[] mem* mem* +[] tag* tag* +[] global* global* +[] export* export* +[] start? start? +[] elem* elem* +[] nat? nat? +[] n? nat? +[] expr* expr* +[] local** local** +[] local* local* +[] data* data* +[] type* type* +[] import* import* +[] tag* tag* +[] global* global* +[] mem* mem* +[] table* table* +[] func* func* +[] data* data* +[] elem* elem* +[] start? start? +[] export* export* +[] n? nat? +[] data* data* +[] data* data* +[] n? n? +[] n? n? +[] func* func* +[] func* func* +[] expr* expr* +[] expr* expr* +[] func* func* +[] local** local** +[] local** local** +[] typeidx* typeidx* +[] typeidx* typeidx* +[] local* local* +[] byte** byte** +[] byte* byte* +[] byte** byte** +[] byte* byte* +[] byte** byte** +[] byte* byte* +[] byte** byte** +[] byte* byte* +[] byte* byte* +[] char* char* +[] byte* byte* +[] byte* byte* +[] char* char* +[] char* char* +[] char* char* +[] char* char* +[] char* char* +[] char* char* +[] char* char* +[] el* el* +[] el* el* +[] el* el* +[] el* el* +[] I* idctxt* +[] I* idctxt* +[] char** char** +[] char** char** +[] char* char* +[] char** char** +[] char** char** +[] char** char** +[] char** char** +[] char* char* +[] null? null? +[] null? null? +[] char? char? +[] char? char? +[] char? char? +[] char? char? +[] char** char** +[] fieldtype* fieldtype* +[] char?* char?* +[] char? char? +[] fieldtype* fieldtype* +[] char** char** +[] char?* char?* +[] char? char? +[] char** char** +[] char?* char?* +[] valtype* valtype* +[] char? char? +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] final? final? +[] idx* typeidx* +[] final? final? +[] typeidx* typeidx* +[] idx* typeidx* +[] char? char? +[] char? char? +[] I* idctxt* +[] subtype* subtype* +[] subtype* subtype* +[] I* idctxt* +[] subtype* subtype* +[] subtype* subtype* +[] subtype* subtype* +[] subtype* subtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] char** char*^|t_1*{}| +[] char** char** +[] char?* char?* +[] valtype* valtype* +[] char? char? +[] valtype* valtype* +[] subtype* subtype* +[] subtype* subtype* +[] subtype* subtype* +[] subtype* subtype* +[] valtype* valtype* +[] valtype* valtype* +[] char** char** +[] char?* char?* +[] char? char? +[] char? char? +[] char? char? +[] char? char? +[] char? char? +[] char? char? +[] char? char? +[] char? char? +[] char? char? +[] char? char? +[] char? char? +[] valtype? valtype? +[] valtype? valtype? +[] char** char** +[] valtype*? valtype*? +[] valtype* valtype* +[] valtype*? valtype*? +[] valtype* valtype* +[] labelidx* labelidx* +[] labelidx* labelidx* +[] char** char** +[] char** char** +[] u8* u8* +[] u8* iN(8)* +[] u16* u16* +[] u16* iN(16)* +[] u32* u32* +[] u32* iN(32)* +[] u64* u64* +[] u64* iN(64)* +[] f32* f32* +[] f32* fN(32)* +[] f64* f64* +[] f64* fN(64)* +[] laneidx* laneidx* +[] laneidx* laneidx* +[] instr* instr* +[] instr* instr* +[] instr** instr** +[] instr* instr* +[] instr** instr** +[] instr* instr* +[] char? char? +[] instr* instr* +[] char? char? +[] instr* instr* +[] char? char? +[] char? char? +[] char? char? +[] char? char? +[] char? char? +[] char? char? +[] instr* instr* +[] char? char? +[] instr* instr* +[] char? char? +[] char? char? +[] char? char? +[] char? char? +[] char? char? +[] char? char? +[] instr* instr* +[] char? char? +[] instr* instr* +[] char? char? +[] instr* instr* +[] instr* instr* +[] char? char? +[] char? char? +[] char? char? +[] char? char? +[] char? char? +[] char? char? +[] char? char? +[] char? char? +[] char? char? +[] char? char? +[] char? char? +[] catch* catch* +[] instr* instr* +[] char? char? +[] catch* catch* +[] instr* instr* +[] char? char? +[] char? char? +[] char? char? +[] char? char? +[] char? char? +[] instr* instr* +[] instr* instr* +[] subtype* subtype^n +[] n* n^n +[] rectype* rectype^n +[] char? char? +[] char? char? +[] char? char? +[] char? char? +[] char? char? +[] char? char? +[] char? char? +[] char? char? +[] char? char? +[] char? char? +[] char? char? +[] I* idctxt* +[] local** local** +[] local* local* +[] local** local** +[] local* local* +[] char? char? +[] I* idctxt* +[] byte** byte** +[] byte* byte* +[] byte** byte** +[] byte* byte* +[] char? char? +[] byte* byte* +[] byte* byte* +[] char? char? +[] char? char? +[] byte* byte* +[] byte* byte* +[] char? char? +[] expr* expr* +[] expr* expr* +[] char? char? +[] expr* expr* +[] expr* expr* +[] char? char? +[] char? char? +[] expr* expr* +[] expr* expr* +[] char? char? +[] char? char? +[] expr* expr* +[] expr* expr* +[] char? char? +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] decl* decl* +[] I* idctxt* +[] decl* decl* +[] type* type* +[] import* import* +[] tag* tag* +[] global* global* +[] mem* mem* +[] table* table* +[] func* func* +[] data* data* +[] elem* elem* +[] start? start? +[] export* export* +[] I* idctxt* +[] type* type* +[] type* type* +[] decl* decl* +[] import* import* +[] import* import* +[] decl* decl* +[] tag* tag* +[] tag* tag* +[] decl* decl* +[] global* global* +[] global* global* +[] decl* decl* +[] mem* mem* +[] mem* mem* +[] decl* decl* +[] table* table* +[] table* table* +[] decl* decl* +[] func* func* +[] func* func* +[] decl* decl* +[] data* data* +[] data* data* +[] decl* decl* +[] elem* elem* +[] elem* elem* +[] decl* decl* +[] start? start? +[] start? start? +[] decl* decl* +[] export* export* +[] export* export* +[] decl* decl* +[] decl* decl* +[] instr* instr* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] valtype* valtype* +[] instr* instr* +[] valtype* valtype* +[] valtype* valtype* +[] X* X* +[] Y* Y* +[] addr* addr* +[] addr* addr* +[] addr* addr* +[] X* X* +[] Y* Y* == Complete. ``` diff --git a/spectec/test-frontend/test.spectec b/spectec/test-frontend/test.spectec index 14b46a4ec..d170e5254 100644 --- a/spectec/test-frontend/test.spectec +++ b/spectec/test-frontend/test.spectec @@ -116,6 +116,9 @@ def $testemptyn6(eps 0) = 0 def $testemptyn6(0) = 0 def $testemptyn6("" 0) = 0 def $testemptyn6("" "" "" 0) = 0 +def $testemptyn6([] 0) = 0 +def $testemptyn6([""] 0) = 0 +def $testemptyn6(["" "" ""] 0) = 0 def $testemptyn6(([]) 0) = 0 def $testemptyn6(([""]) 0) = 0 def $testemptyn6((["" "" ""]) 0) = 0 From 0a5dd163906ab6cec76f8b72ff38380311f950aa Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Mon, 19 Jan 2026 14:53:50 +0100 Subject: [PATCH 014/235] Deactivate quantifier args --- ...dules.spectec => 6.4-text.modules.spectec} | 0 spectec/src/frontend/det.ml | 6 +- spectec/src/frontend/dim.ml | 10 +- spectec/src/frontend/dim.mli | 1 + spectec/src/frontend/elab.ml | 105 ++++---- spectec/src/il/iter.ml | 16 +- spectec/src/il/valid.ml | 245 +++++++++--------- 7 files changed, 200 insertions(+), 183 deletions(-) rename specification/wasm-3.0/{6.3-text.modules.spectec => 6.4-text.modules.spectec} (100%) diff --git a/specification/wasm-3.0/6.3-text.modules.spectec b/specification/wasm-3.0/6.4-text.modules.spectec similarity index 100% rename from specification/wasm-3.0/6.3-text.modules.spectec rename to specification/wasm-3.0/6.4-text.modules.spectec diff --git a/spectec/src/frontend/det.ml b/spectec/src/frontend/det.ml index 00cb5ca03..a9968c9cd 100644 --- a/spectec/src/frontend/det.ml +++ b/spectec/src/frontend/det.ml @@ -5,6 +5,7 @@ open Il.Free include Xl.Gen_free let det_list = free_list +let det_list_dep = free_list_dep (* Iterations *) @@ -25,10 +26,11 @@ and det_typ t = match t.it with | VarT (_x, as_) -> det_list det_arg as_ | BoolT | NumT _ | TextT -> empty - | TupT xts -> det_list det_typbind xts + | TupT xts -> det_list_dep det_typbind bound_typbind xts | IterT (t1, iter) -> det_typ t1 ++ det_iter iter -and det_typbind (x, t) = bound_varid x ++ det_typ t +and det_typbind (_x, t) = det_typ t +and bound_typbind (x, _t) = bound_varid x (* Expressions *) diff --git a/spectec/src/frontend/dim.ml b/spectec/src/frontend/dim.ml index c95059888..9296739c9 100644 --- a/spectec/src/frontend/dim.ml +++ b/spectec/src/frontend/dim.ml @@ -492,8 +492,9 @@ and annot_exp side dims e : exp * occur = let e2', occur2 = annot_exp side dims e2 in BinE (op, nt, e1', e2'), union occur1 occur2 | CmpE (op, nt, e1, e2) -> - let e1', occur1 = annot_exp side dims e1 in - let e2', occur2 = annot_exp side dims e2 in + let side' = if op = `EqOp then `Lhs else side in + let e1', occur1 = annot_exp side' dims e1 in + let e2', occur2 = annot_exp side' dims e2 in CmpE (op, nt, e1', e2'), union occur1 occur2 | IdxE (e1, e2) -> let e1', occur1 = annot_exp side dims e1 in @@ -721,7 +722,10 @@ let annot_arg = annot_top annot_arg let annot_param = annot_top annot_param -(* Restriction *) +(* Environment manipulation *) + +let union dims1 dims2 = + Map.union (fun _ _ y -> Some y) dims1 dims2 let restrict dims bound = Map.filter Il.Free.(fun x _ -> Set.mem x bound.varid) dims diff --git a/spectec/src/frontend/dim.mli b/spectec/src/frontend/dim.mli index f358818ff..939231e6d 100644 --- a/spectec/src/frontend/dim.mli +++ b/spectec/src/frontend/dim.mli @@ -20,4 +20,5 @@ val annot_prem : dims -> prem -> prem val annot_arg : dims -> arg -> arg val annot_param : dims -> param -> param +val union : dims -> dims -> dims val restrict : dims -> Il.Free.sets -> dims diff --git a/spectec/src/frontend/elab.ml b/spectec/src/frontend/elab.ml index 4e5ce4610..ae0f1c120 100644 --- a/spectec/src/frontend/elab.ml +++ b/spectec/src/frontend/elab.ml @@ -409,7 +409,7 @@ let make_quants_iter_arg env (free : Il.Free.sets) dims : Il.quant list ref * (m let scope_enter x t = Printf.printf "[scope_enter %s]\n%!" x.it; let varenv = env.vars in - env.vars <- bind "variable" env.vars x t; + if x.it <> "_" then env.vars <- Map.add x.it (x.at, t) env.vars; varenv let scope_exit x varenv = @@ -498,7 +498,9 @@ let infer_quants env env' dims det ps' as' ts' es' gs' prs' at : Il.quant list = let env' = annot_env env' dims in Debug.(log_at "il.infer_quants" at (fun _ -> +Printf.sprintf "\n ps'=[%s]" Il.Debug.(list il_param ps') ^ Printf.sprintf "\n as'=[%s]" Il.Debug.(list il_arg as') ^ +Printf.sprintf "\n ts'=[%s]" Il.Debug.(list il_typ ts') ^ Printf.sprintf "\n es'=[%s]" Il.Debug.(list il_exp es') ^ Printf.sprintf "\n gs'=[%s]" Il.Debug.(list il_sym gs') ^ Printf.sprintf "\n prs'=[%s]" Il.Debug.(list il_prem prs') ^ @@ -774,8 +776,8 @@ let expand_notation env t = Il.Eval.(match_list match_arg (to_il_env env) Il.Subst.empty as' as_) |> Option.map (fun s -> let mixop, (qs, t, _prems), _ = Il.Subst.subst_typcase s tc in - let qs', s' = refresh_quants env qs in - let t' = Il.Subst.subst_typ s' t in + let qs', _s' = refresh_quants env qs in + let t' = (*Il.Subst.subst_typ s'*) t in qs', t', mixop, Mixop.apply mixop (untup_typ' t') ) | _, _ -> None @@ -1305,20 +1307,25 @@ and elab_typenum env outer_dims tid (te : typenum) : Il.typ * (Il.exp -> numtyp and elab_typ_notation env outer_dims tid at (t : typ) (prems : prem nl_list) : Il.mixop * Il.quant list * Il.typ * Il.prem list = assert (valid_tid tid); - let env' = local_env env in - let mixop, xts' = elab_typ_notation' env' tid t in + let env1 = local_env env in + let mixop, xts' = elab_typ_notation' env1 tid t in let xs', ts' = List.split xts' in - let prems' = List.concat (map_filter_nl_list (elab_prem env') prems) in + let dims1 = Dim.check outer_dims [] [] ts' [] [] [] in + let ts' = List.map (Dim.annot_typ dims1) ts' in + let t' = Il.TupT (List.combine xs' ts') $ t.at in + let det1 = Det.det_typ t' in + infer_no_quants env dims1 det1 [] [] [t'] [] [] [] at; + + let env2 = local_env env1 in + let prems' = List.concat (map_filter_nl_list (elab_prem env2) prems) in Printf.printf "--- 1 ---\n%!"; - let dims = Dim.check outer_dims [] [] ts' [] [] prems' in + let dims2 = Dim.check (Dim.union outer_dims dims1) [] [] [] [] [] prems' in Printf.printf "--- 2 ---\n%!"; - let ts' = List.map (Dim.annot_typ dims) ts' in - let prems' = List.map (Dim.annot_prem dims) prems' in + let prems' = List.map (Dim.annot_prem dims2) prems' in Printf.printf "--- 3 ---\n%!"; - let t' = Il.TupT (List.combine xs' ts') $ t.at in - let det = Det.(det_typ t' ++ det_list det_prem prems') in + let det2 = Det.(det_list det_prem prems') in Printf.printf "--- 4 ---\n%!"; - let qs = infer_quants env env' dims det [] [] [t'] [] [] prems' at in + let qs = infer_quants env1 env2 dims2 det2 [] [] [] [] [] prems' at in mixop, qs, t', prems' (* Debug.(log_in_at "il.infer_quants" at @@ -1534,10 +1541,10 @@ and infer_exp' env e : (Il.exp' * Il.typ') attempt = if dots = Dots then error e1.at "used record type is only partially defined at this point"; let* _, (qs, tF, prems), _ = attempt (find_field tfs atom e1.at) t1 in - let qs', s = refresh_quants env qs in - let qas' = il_args_of_params qs' in - let tF' = Il.Subst.subst_typ s tF in - let e' = Il.DotE (e1', elab_atom atom (expand_id env t1), qas') in + let qs', _s = refresh_quants env qs in + let _qas' = il_args_of_params qs' in + let tF' = (*Il.Subst.subst_typ s*) tF in + let e' = Il.DotE (e1', elab_atom atom (expand_id env t1), [](*qas'*)) in let e'' = if prems = [] then e' else Il.ProjE (e' $$ e.at % tF', 0) in Ok (e'', tF'.it) | CommaE (e1, e2) -> @@ -1825,18 +1832,18 @@ and elab_expfields env tid (efs : expfield list) (tfs : Il.typfield list) (t0 : | [], [] -> Ok [] | (atom1, e)::efs2, (atom2, (qs, tF, prems), _)::tfs2 when atom1.it = atom2.it -> let* e' = elab_exp env e tF in - let qs', s = refresh_quants env qs in - let* efs2' = elab_expfields env tid efs2 (List.map (Il.Subst.subst_typfield s) tfs2) t0 at in + let _qs', _s = refresh_quants env qs in + let* efs2' = elab_expfields env tid efs2 ((*List.map (Il.Subst.subst_typfield s)*) tfs2) t0 at in let e' = if prems = [] then e' else tup_exp' [e'] e.at in - Ok ((elab_atom atom1 tid, il_args_of_params qs', e') :: efs2') + Ok ((elab_atom atom1 tid, [](*il_args_of_params qs'*), e') :: efs2') | _, (atom, (qs, t, prems), _)::tfs2 -> let atom' = string_of_atom atom in - let qs', s = refresh_quants env qs in - let t' = Il.Subst.subst_typ s t in + let _qs', _s = refresh_quants env qs in + let t' = (*Il.Subst.subst_typ s*) t in let* e1' = cast_empty ("omitted record field `" ^ atom' ^ "`") env t' at in let e' = if prems = [] then e1' else tup_exp' [e1'] at in let* efs2' = elab_expfields env tid efs tfs2 t0 at in - Ok ((elab_atom atom tid, il_args_of_params qs', e') :: efs2') + Ok ((elab_atom atom tid, [](*il_args_of_params qs'*), e') :: efs2') | (atom, e)::_, [] -> fail_atom e.at atom t0 "undefined or misplaced record field" @@ -1873,8 +1880,8 @@ and elab_exp_notation env tid (e : exp) (qs, t1, mixop, not) t : Il.exp attempt (* Convert notation into applications of mixin operators *) assert (valid_tid tid); let* es', s = elab_exp_notation' env tid e not in - let qas' = Il.Subst.subst_args s (il_args_of_params qs) in - Ok (Il.CaseE (mixop, qas', Il.TupE es' $$ e.at % t1) $$ e.at % t) + let _qas' = Il.Subst.subst_args s (il_args_of_params qs) in + Ok (Il.CaseE (mixop, [](*qas'*), Il.TupE es' $$ e.at % t1) $$ e.at % t) and elab_exp_notation' env tid (e : exp) not : (Il.exp list * Il.Subst.t) attempt = Debug.(log_at "el.elab_exp_notation" e.at @@ -2069,12 +2076,12 @@ and elab_exp_variant env tid (e : exp) (tcs : Il.typcase list) t at : Il.exp att in let* atom = head e in let* mixop, (qs, tC, _prems), _ = attempt (find_case_atom tcs atom atom.at) t in - let qs', s = refresh_quants env qs in - let* xts = as_tup_typ "tuple" env Check (Il.Subst.subst_typ s tC) e.at in + let qs', _s = refresh_quants env qs in + let* xts = as_tup_typ "tuple" env Check ((*Il.Subst.subst_typ s*) tC) e.at in let not = Mixop.apply mixop xts in let* es', s = elab_exp_notation' env tid e not in - let qas' = Il.Subst.subst_args s (il_args_of_params qs') in - Ok (Il.CaseE (mixop, qas', tup_exp' es' e.at) $$ at % t) + let _qas' = Il.Subst.subst_args s (il_args_of_params qs') in + Ok (Il.CaseE (mixop, [](*qas'*), tup_exp' es' e.at) $$ at % t) (* @@ -2108,10 +2115,10 @@ and elab_path' env (p : path) (t : Il.typ) : (Il.path' * Il.typ) attempt = if dots = Dots then error p1.at "used record type is only partially defined at this point"; let* _, (qs, tF, _prems), _ = attempt (find_field tfs atom p1.at) t1 in - let qs', s = refresh_quants env qs in - let qas' = il_args_of_params qs' in - let tF' = Il.Subst.subst_typ s tF in - Ok (Il.DotP (p1', elab_atom atom (expand_id env t1), qas'), tF') + let qs', _s = refresh_quants env qs in + let _qas' = il_args_of_params qs' in + let tF' = (*Il.Subst.subst_typ s*) tF in + Ok (Il.DotP (p1', elab_atom atom (expand_id env t1), [](*qas'*)), tF') and cast_empty phrase env (t : Il.typ) at : Il.exp attempt = @@ -2171,22 +2178,22 @@ and cast_exp' phrase env (e' : Il.exp) t1 t2 : Il.exp' attempt = (match expand_def env t1', expand_def env t2' with | (Il.VariantT [mixop1, (qs1, tC1, _), _], NoDots), (Il.VariantT [mixop2, (qs2, tC2, _), _], NoDots) -> - let qs1', s1 = refresh_quants env qs1 in - let qs2', s2 = refresh_quants env qs2 in - let tC1' = Il.Subst.subst_typ s1 tC1 in - let tC2' = Il.Subst.subst_typ s2 tC2 in - let qas1' = il_args_of_params qs1' in - let qas2' = il_args_of_params qs2' in + let qs1', _s1 = refresh_quants env qs1 in + let qs2', _s2 = refresh_quants env qs2 in + let tC1' = (*Il.Subst.subst_typ s1*) tC1 in + let tC2' = (*Il.Subst.subst_typ s2*) tC2 in + let _qas1' = il_args_of_params qs1' in + let _qas2' = il_args_of_params qs2' in if mixop1 = mixop2 then ( (* Two ConT's with the same operator can be cast pointwise *) let ts1 = match tC1'.it with Il.TupT xts -> List.map snd xts | _ -> [tC1'] in let ts2 = match tC2'.it with Il.TupT xts -> List.map snd xts | _ -> [tC2'] in - let e'' = Il.UncaseE (e', mixop1, qas1') $$ e'.at % tC1' in + let e'' = Il.UncaseE (e', mixop1, [](*qas1'*)) $$ e'.at % tC1' in let es' = List.mapi (fun i t1I -> Il.ProjE (e'', i) $$ e''.at % t1I) ts1 in let* es'' = map2_attempt (fun eI' (t1I, t2I) -> cast_exp phrase env eI' t1I t2I) es' (List.combine ts1 ts2) in - Ok (Il.CaseE (mixop2, qas2', tup_exp' es'' e'.at)) + Ok (Il.CaseE (mixop2, [](*qas2'*), tup_exp' es'' e'.at)) ) else ( @@ -2202,7 +2209,7 @@ and cast_exp' phrase env (e' : Il.exp) t1 t2 : Il.exp' attempt = ) in match expand env tC1' with | Il.TupT [_, t11'] -> - let e'' = Il.UncaseE (e', mixop1, qas1') $$ e'.at % t11' in + let e'' = Il.UncaseE (e', mixop1, [](*qas1'*)) $$ e'.at % t11' in cast_exp' phrase env (Il.ProjE (e'', 0) $$ e'.at % t11') t11' t2' | _ -> fail_typ2 env e'.at phrase t1 t2 "" ) @@ -2263,12 +2270,12 @@ and cast_exp' phrase env (e' : Il.exp) t1 t2 : Il.exp' attempt = (il_typ (reduce env t2)) ) ); - let qs1', s1 = refresh_quants env qs1 in - let tC1' = Il.Subst.subst_typ s1 tC1 in - let qas1' = il_args_of_params qs1' in + let qs1', _s1 = refresh_quants env qs1 in + let tC1' = (*Il.Subst.subst_typ s1*) tC1 in + let _qas1' = il_args_of_params qs1' in match expand env tC1' with | Il.TupT [_, t11'] -> - let e'' = Il.UncaseE (e', mixop1, qas1') $$ e'.at % t11' in + let e'' = Il.UncaseE (e', mixop1, [](*qas1'*)) $$ e'.at % t11' in cast_exp' phrase env (Il.ProjE (e'', 0) $$ e'.at % t11') t11' t2' | _ -> fail_typ2 env e'.at phrase t1 t2 "" ); @@ -2282,13 +2289,13 @@ and cast_exp' phrase env (e' : Il.exp) t1 t2 : Il.exp' attempt = (match expand_def env t2' with | Il.VariantT [mixop2, (qs2, tC2, _), _], NoDots -> (* A ConT payload can be cast to the ConT *) - let qs2', s2 = refresh_quants env qs2 in - let tC2' = Il.Subst.subst_typ s2 tC2 in - let qas2' = il_args_of_params qs2' in + let qs2', _s2 = refresh_quants env qs2 in + let tC2' = (*Il.Subst.subst_typ s2*) tC2 in + let _qas2' = il_args_of_params qs2' in (match expand env tC2' with | Il.TupT [_, t21'] -> let* e1' = cast_exp phrase env e' t1' t21' in - Ok (Il.CaseE (mixop2, qas2', Il.TupE [e1'] $$ e'.at % tC2')) + Ok (Il.CaseE (mixop2, [](*qas2'*), Il.TupE [e1'] $$ e'.at % tC2')) | _ -> fail_typ2 env e'.at phrase t1 t2 "" ) diff --git a/spectec/src/il/iter.ml b/spectec/src/il/iter.ml index f87220293..3526649d1 100644 --- a/spectec/src/il/iter.ml +++ b/spectec/src/il/iter.ml @@ -120,13 +120,19 @@ and dots _ = () and numtyp _nt = () and optyp = function #Bool.typ -> () | #Num.typ as nt -> numtyp nt -and typ t = +and typ ?(prems = []) t = visit_typ t; match t.it with | VarT (x, as_) -> typid x; args as_ | BoolT | TextT -> () | NumT nt -> numtyp nt - | TupT ets -> list (pair varid typ) ets + | TupT [] -> list prem prems + | TupT ((x, t)::xts) -> + typ t; + let scope = scope_enter x t in + varid x; + typ (TupT xts $ t.at) ~prems; + scope_exit x scope | IterT (t1, it) -> typ t1; iter it and deftyp t = @@ -136,8 +142,10 @@ and deftyp t = | StructT tfs -> list typfield tfs | VariantT tcs -> list typcase tcs -and typfield (at, (ps, t, prs), hs) = atom at; params ps; typ t; prems prs; hints hs -and typcase (op, (ps, t, prs), hs) = mixop op; params ps; typ t; prems prs; hints hs +and typfield (at, (ps, t, prems), hs) = + atom at; params ps; typ t ~prems; hints hs +and typcase (op, (ps, t, prems), hs) = + mixop op; params ps; typ t ~prems; hints hs (* Expressions *) diff --git a/spectec/src/il/valid.ml b/spectec/src/il/valid.ml index 9fbd23ff0..64ed47150 100644 --- a/spectec/src/il/valid.ml +++ b/spectec/src/il/valid.ml @@ -12,8 +12,6 @@ let error at msg = Error.error at "validation" msg (* Environment *) -let local_env envr = ref !envr - let find_field fs atom at = match List.find_opt (fun (atom', _, _) -> Eq.eq_atom atom' atom) fs with | Some (_, x, _) -> x @@ -178,6 +176,10 @@ let valid_list valid_x_y env xs ys at = string_of_int (List.length ys) ^ ", got " ^ string_of_int (List.length xs)); List.iter2 (valid_x_y env) xs ys +let rec valid_binders valid_x env xs : Env.t = + match xs with + | [] -> env + | x::xs -> valid_binders valid_x (valid_x env x) xs let rec valid_iter ?(side = `Rhs) env iter : Env.t = match iter with @@ -208,48 +210,51 @@ Printf.printf "[] %s %s\n%!" (Debug.il_typ t) (Debug.il_typ e.note); (* Types *) -and valid_typ env t = +and valid_typ env t = ignore (valid_typ_bind env t) + +and valid_typ_bind env t : Env.t = Debug.(log_at "il.valid_typ" t.at (fun _ -> fmt "%s" (il_typ t)) (Fun.const "ok") ) @@ fun _ -> match t.it with | VarT (id, as_) -> let ps, _insts = Env.find_typ env id in - ignore (valid_args env as_ ps Subst.empty t.at) + ignore (valid_args env as_ ps Subst.empty t.at); + env | BoolT | NumT _ | TextT -> - () + env | TupT [] -> - () - | TupT ((x, t)::xts) -> - valid_typ env t; - valid_typ (Env.bind_var env x t) (TupT xts $ t.at) + env + | TupT ((x1, t1)::xts) -> + valid_typ env t1; + valid_typ_bind (Env.bind_var env x1 t1) (TupT xts $ t.at) | IterT (t1, iter) -> match iter with | ListN (e, _) -> error e.at "definite iterator not allowed in type" | _ -> let env' = valid_iter env iter in - valid_typ env' t1 + valid_typ env' t1; + env -and valid_deftyp envr dt = +and valid_deftyp env dt = match dt.it with | AliasT t -> - valid_typ !envr t + valid_typ env t | StructT tfs -> check_mixops "record" "field" (List.map (fun (atom, _, _) -> Mixop.Atom atom) tfs) dt.at; - List.iter (valid_typfield envr) tfs + List.iter (valid_typfield env) tfs | VariantT tcs -> check_mixops "variant" "case" (List.map (fun (op, _, _) -> op) tcs) dt.at; - List.iter (valid_typcase envr) tcs + List.iter (valid_typcase env) tcs -and valid_typfield envr (_atom, (qs, t, prems), _hints) = - let envr' = local_env envr in - List.iter (valid_quant envr') qs; - valid_typ !envr' t; - List.iter (valid_prem !envr') prems +and valid_typfield env (_atom, (qs, t, prems), _hints) = + let env' = valid_typ_bind env t in + let env'' = valid_quants env' qs in + List.iter (valid_prem env'') prems -and valid_typcase envr (mixop, (qs, t, prems), _hints) = +and valid_typcase env (mixop, (qs, t, prems), _hints) = Debug.(log_at "il.valid_typcase" t.at (fun _ -> fmt "%s %s" (il_quants qs) (il_typ t)) (fun _ -> "ok") @@ -261,11 +266,10 @@ and valid_typcase envr (mixop, (qs, t, prems), _hints) = in if Mixop.arity mixop <> arity then error t.at ("inconsistent arity in mixin notation, `" ^ string_of_mixop mixop ^ - "` applied to " ^ typ_string !envr t); - let envr' = local_env envr in - List.iter (valid_quant envr') qs; - valid_typ !envr' t; - List.iter (valid_prem !envr') prems + "` applied to " ^ typ_string env t); + let env' = valid_typ_bind env t in + let env'' = valid_quants env' qs in + List.iter (valid_prem env'') prems (* Expressions *) @@ -289,11 +293,11 @@ and infer_exp (env : Env.t) e : typ = | ExtE (e1, _, _) | CompE (e1, _) -> infer_exp env e1 | StrE _ -> error e.at "cannot infer type of record" - | DotE (e1, atom, as_) -> + | DotE (e1, atom, _as_) -> let tfs = as_struct_typ "expression" env Infer (infer_exp env e1) e1.at in - let qs, t, _prems = find_field tfs atom e1.at in - let s = valid_args env as_ qs Subst.empty e.at in - Subst.subst_typ s t + let _qs, t, _prems = find_field tfs atom e1.at in + (*let s = valid_args env as_ qs Subst.empty e.at in + Subst.subst_typ s*) t | TupE es -> TupT (List.map (fun eI -> "_" $ eI.at, infer_exp env eI) es) $ e.at | CallE (x, as_) -> @@ -307,12 +311,12 @@ and infer_exp (env : Env.t) e : typ = let t1 = infer_exp env e1 in let xts = as_tup_typ "expression" env Infer t1 e1.at in proj_tup_typ i xts e1 e.at - | UncaseE (e1, op, as_) -> + | UncaseE (e1, op, _as_) -> let t1 = infer_exp env e1 in (match as_variant_typ "expression" env Infer t1 e1.at with - | [(op', (qs, t, _), _)] when Eq.eq_mixop op op' -> - let s = valid_args env as_ qs Subst.empty e.at in - Subst.subst_typ s t + | [(op', (_qs, t, _), _)] when Eq.eq_mixop op op' -> + (*let s = valid_args env as_ qs Subst.empty e.at in + Subst.subst_typ s*) t | _ -> error e.at "invalid case projection"; ) | OptE _ -> error e.at "cannot infer type of option" @@ -411,13 +415,13 @@ try | StrE efs -> let tfs = as_struct_typ "record" env Check t e.at in valid_list (valid_expfield ~side) env efs tfs e.at - | DotE (e1, atom, as_) -> + | DotE (e1, atom, _as_) -> let t1 = infer_exp env e1 in valid_exp env e1 t1; let tfs = as_struct_typ "expression" env Check t1 e1.at in - let qs, t', _prems = find_field tfs atom e1.at in - let s = valid_args env as_ qs Subst.empty e.at in - equiv_typ env (Subst.subst_typ s t') t e.at + let _qs, t', _prems = find_field tfs atom e1.at in + (*let s = valid_args env as_ qs Subst.empty e.at in*) + equiv_typ env ((*Subst.subst_typ s*) t') t e.at | CompE (e1, e2) -> let _ = as_comp_typ "expression" env Check t e.at in valid_exp env e1 t; @@ -461,13 +465,13 @@ try let side' = if List.length xts > 1 then `Rhs else side in valid_exp ~side:side' env e1 (TupT xts $ t1.at); equiv_typ env (proj_tup_typ i xts e1 e.at) t e.at - | UncaseE (e1, op, as_) -> + | UncaseE (e1, op, _as_) -> let t1 = infer_exp env e1 in valid_exp ~side env e1 t1; (match as_variant_typ "expression" env Infer t1 e1.at with - | [(op', (qs, t', _), _)] when Eq.eq_mixop op op' -> - let s = valid_args env as_ qs Subst.empty e.at in - equiv_typ env (Subst.subst_typ s t') t e.at + | [(op', (_qs, t', _), _)] when Eq.eq_mixop op op' -> + (*let s = valid_args env as_ qs Subst.empty e.at in*) + equiv_typ env ((*Subst.subst_typ s*) t') t e.at | _ -> error e.at "invalid case projection"; ) | OptE eo -> @@ -490,11 +494,11 @@ try let _typ1 = as_iter_typ List "list" env Check t e.at in valid_exp env e1 t; valid_exp env e2 t - | CaseE (op, as_, e1) -> + | CaseE (op, _as_, e1) -> let cases = as_variant_typ "case" env Check t e.at in - let qs, t1, _prems = find_case cases op e1.at in - let s = valid_args env as_ qs Subst.empty e.at in - valid_exp ~side env e1 (Subst.subst_typ s t1) + let _qs, t1, _prems = find_case cases op e1.at in + (*let s = valid_args env as_ qs Subst.empty e.at in*) + valid_exp ~side env e1 ((*Subst.subst_typ s*) t1) | CvtE (e1, nt1, nt2) -> valid_exp ~side env e1 (NumT nt1 $ e1.at); equiv_typ env (NumT nt2 $e.at) t e.at; @@ -526,8 +530,8 @@ and valid_expfield ~side env (atom1, as_, e) (atom2, (qs, t, _prems), _) = ) ); if not (Eq.eq_atom atom1 atom2) then error e.at "unexpected record field"; - let s = valid_args env as_ qs Subst.empty e.at in - valid_exp ~side env e (Subst.subst_typ s t) + (*let s = valid_args env as_ qs Subst.empty e.at in*) + valid_exp ~side env e ((*Subst.subst_typ s*) t) and valid_path env p t : typ = valid_typ env t; @@ -544,12 +548,12 @@ and valid_path env p t : typ = valid_exp env e2 (NumT `NatT $ e2.at); let _ = as_list_typ "path" env Check t1 p1.at in t1 - | DotP (p1, atom, as_) -> + | DotP (p1, atom, _as_) -> let t1 = valid_path env p1 t in let tfs = as_struct_typ "path" env Check t1 p1.at in - let qs, t, _prems = find_field tfs atom p1.at in - let s = valid_args env as_ qs Subst.empty p.at in - Subst.subst_typ s t + let _qs, t, _prems = find_field tfs atom p1.at in + (*let s = valid_args env as_ qs Subst.empty p.at in + Subst.subst_typ s*) t in equiv_typ env p.note t' p.at; t' @@ -664,51 +668,50 @@ and valid_args env as_ ps s at : Subst.t = let s' = valid_arg env a p s in valid_args env as' ps' s' at -and valid_param envr p = +and valid_param env p : Env.t = match p.it with | ExpP (x, t) -> - valid_typ !envr t; - envr := Env.bind_var !envr x t + valid_typ env t; + Env.bind_var env x t | TypP x -> - envr := Env.bind_typ !envr x ([], []) + Env.bind_typ env x ([], []) | DefP (x, ps, t) -> - let envr' = local_env envr in - List.iter (valid_param envr') ps; - valid_typ !envr' t; - envr := Env.bind_def !envr x (ps, t, []) + let env' = valid_params env ps in + valid_typ env' t; + Env.bind_def env x (ps, t, []) | GramP (x, ps, t) -> - let envr' = local_env envr in - List.iter (valid_param envr') ps; - valid_typ !envr' t; - envr := Env.bind_gram !envr x (ps, t, []) + let env' = valid_params env ps in + valid_typ env' t; + Env.bind_gram env x (ps, t, []) -and valid_quant envr q = valid_param envr q +and valid_quant env q = valid_param env q -let valid_inst envr ps inst = +and valid_params env ps = valid_binders valid_param env ps +and valid_quants env qs = valid_binders valid_quant env qs + +let valid_inst env ps inst = Debug.(log_in "il.valid_inst" line); Debug.(log_in_at "il.valid_inst" inst.at (fun _ -> fmt "(%s) = ..." (il_params ps)) ); match inst.it with | InstD (qs, as_, dt) -> - let envr' = local_env envr in - List.iter (valid_quant envr') qs; - let _s = valid_args !envr' as_ ps Subst.empty inst.at in - valid_deftyp envr' dt + let env' = valid_quants env qs in + let _s = valid_args env' as_ ps Subst.empty inst.at in + valid_deftyp env' dt -let valid_rule envr mixop t rule = +let valid_rule env mixop t rule = Debug.(log_in "il.valid_rule" line); Debug.(log_in_at "il.valid_rule" rule.at (fun _ -> fmt "%s : %s = ..." (il_mixop mixop) (il_typ t)) ); match rule.it with | RuleD (_x, qs, mixop', e, prems) -> - let envr' = local_env envr in - List.iter (valid_quant envr') qs; - valid_expmix ~side:`Lhs !envr' mixop' e (mixop, t) e.at; - List.iter (valid_prem !envr') prems + let env' = valid_quants env qs in + valid_expmix ~side:`Lhs env' mixop' e (mixop, t) e.at; + List.iter (valid_prem env') prems -let valid_clause envr x ps t clause = +let valid_clause env x ps t clause = Debug.(log_in "il.valid_clause" line); Debug.(log_in_at "il.valid_clause" clause.at (fun _ -> fmt ": (%s) -> %s" (il_params ps) (il_typ t)) @@ -716,79 +719,71 @@ let valid_clause envr x ps t clause = try match clause.it with | DefD (qs, as_, e, prems) -> - let envr' = local_env envr in - List.iter (valid_quant envr') qs; - let s = valid_args !envr' as_ ps Subst.empty clause.at in - valid_exp !envr' e (Subst.subst_typ s t); - List.iter (valid_prem !envr') prems + let env' = valid_quants env qs in + let s = valid_args env' as_ ps Subst.empty clause.at in + valid_exp env' e (Subst.subst_typ s t); + List.iter (valid_prem env') prems with exn -> let bt = Printexc.get_raw_backtrace () in Printf.eprintf "[valid_clause] %s\n%!" (Debug.il_clause x clause); Printexc.raise_with_backtrace exn bt -let valid_prod envr ps t prod = +let valid_prod env ps t prod = Debug.(log_in "il.valid_prod" line); Debug.(log_in_at "il.valid_prod" prod.at (fun _ -> fmt ": (%s) -> %s" (il_params ps) (il_typ t)) ); match prod.it with | ProdD (qs, g, e, prems) -> - let envr' = local_env envr in - List.iter (valid_quant envr') qs; - let _t' = valid_sym !envr' g in - valid_exp !envr' e t; - List.iter (valid_prem !envr') prems + let env' = valid_quants env qs in + let _t' = valid_sym env' g in + valid_exp env' e t; + List.iter (valid_prem env') prems -let infer_def envr d = +let infer_def env d : Env.t = match d.it with | TypD (x, ps, _insts) -> - let envr' = local_env envr in - List.iter (valid_param envr') ps; - envr := Env.bind_typ !envr x (ps, []) + let _env' = valid_params env ps in + Env.bind_typ env x (ps, []) | RelD (x, mixop, t, rules) -> - valid_typcase envr (mixop, ([], t, []), []); - envr := Env.bind_rel !envr x (mixop, t, rules) + valid_typ env t; + Env.bind_rel env x (mixop, t, rules) | DecD (x, ps, t, clauses) -> - let envr' = local_env envr in - List.iter (valid_param envr') ps; - valid_typ !envr' t; - envr := Env.bind_def !envr x (ps, t, clauses) + let env' = valid_params env ps in + valid_typ env' t; + Env.bind_def env x (ps, t, clauses) | GramD (x, ps, t, prods) -> - let envr' = local_env envr in - List.iter (valid_param envr') ps; - valid_typ !envr' t; - envr := Env.bind_gram !envr x (ps, t, prods) - | _ -> () + let env' = valid_params env ps in + valid_typ env' t; + Env.bind_gram env x (ps, t, prods) + | _ -> env -let rec valid_def envr d = +let rec valid_def env d : Env.t = Debug.(log_in "il.valid_def" line); Debug.(log_in_at "il.valid_def" d.at (fun _ -> il_def d)); match d.it with | TypD (x, ps, insts) -> - let envr' = local_env envr in - List.iter (valid_param envr') ps; - List.iter (valid_inst envr ps) insts; - envr := Env.bind_typ !envr x (ps, insts); + let env' = valid_params env ps in + List.iter (valid_inst env' ps) insts; + Env.bind_typ env x (ps, insts); | RelD (x, mixop, t, rules) -> - valid_typcase envr (mixop, ([], t, []), []); - List.iter (valid_rule envr mixop t) rules; - envr := Env.bind_rel !envr x (mixop, t, rules) + valid_typcase env (mixop, ([], t, []), []); + List.iter (valid_rule env mixop t) rules; + Env.bind_rel env x (mixop, t, rules) | DecD (x, ps, t, clauses) -> - let envr' = local_env envr in - List.iter (valid_param envr') ps; - valid_typ !envr' t; - List.iter (valid_clause envr x ps t) clauses; - envr := Env.bind_def !envr x (ps, t, clauses) + let env' = valid_params env ps in + valid_typ env' t; + List.iter (valid_clause env' x ps t) clauses; + Env.bind_def env x (ps, t, clauses) | GramD (x, ps, t, prods) -> - let envr' = local_env envr in - List.iter (valid_param envr') ps; - valid_typ !envr' t; - List.iter (valid_prod envr' ps t) prods; - envr := Env.bind_gram !envr x (ps, t, prods) + let env' = valid_params env ps in + valid_typ env' t; + List.iter (valid_prod env' ps t) prods; + Env.bind_gram env x (ps, t, prods) | RecD ds -> - List.iter (infer_def envr) ds; - List.iter (valid_def envr) ds; + let env' = valid_binders infer_def env ds in + let env' = valid_binders valid_def env' ds in List.iter (fun d -> match (List.hd ds).it, d.it with | HintD _, _ | _, HintD _ @@ -799,13 +794,13 @@ let rec valid_def envr d = | _, _ -> error (List.hd ds).at (" " ^ string_of_region d.at ^ ": invalid recursion between definitions of different sort") - ) ds + ) ds; + env' | HintD _ -> - () + env (* Scripts *) let valid ds = - let envr = ref Env.empty in - List.iter (valid_def envr) ds + ignore (valid_binders valid_def Env.empty ds) From c41eb8bbe31ab0a2ca68a001b8ca337d130584bf Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Mon, 19 Jan 2026 15:44:37 +0100 Subject: [PATCH 015/235] Remove quantifier args --- spectec/src/backend-ast/print.ml | 12 ++-- spectec/src/frontend/det.ml | 20 +++--- spectec/src/frontend/dim.ml | 44 +++++------- spectec/src/frontend/elab.ml | 96 ++++++++++---------------- spectec/src/il/ast.ml | 10 +-- spectec/src/il/eq.ml | 20 +++--- spectec/src/il/eval.ml | 56 +++++++-------- spectec/src/il/free.ml | 7 +- spectec/src/il/iter.ml | 10 +-- spectec/src/il/print.ml | 36 ++++------ spectec/src/il/subst.ml | 14 ++-- spectec/src/il/valid.ml | 40 +++++------ spectec/src/il2al/animate.ml | 4 +- spectec/src/il2al/encode.ml | 10 +-- spectec/src/il2al/free.ml | 11 ++- spectec/src/il2al/il2al_util.ml | 4 +- spectec/src/il2al/il_walk.ml | 8 +-- spectec/src/il2al/translate.ml | 38 +++++----- spectec/src/il2al/unify.ml | 24 +++---- spectec/src/middlend/sideconditions.ml | 13 ++-- spectec/src/middlend/sub.ml | 18 ++--- spectec/src/middlend/totalize.ml | 10 +-- spectec/src/middlend/unthe.ml | 13 ++-- 23 files changed, 226 insertions(+), 292 deletions(-) diff --git a/spectec/src/backend-ast/print.ml b/spectec/src/backend-ast/print.ml index 64fc50288..2881cfe17 100644 --- a/spectec/src/backend-ast/print.ml +++ b/spectec/src/backend-ast/print.ml @@ -109,7 +109,7 @@ and exp e = | UpdE (e1, p, e2) -> Node ("upd", [exp e1; path p; exp e2]) | ExtE (e1, p, e2) -> Node ("ext", [exp e1; path p; exp e2]) | StrE efs -> Node ("struct", List.map expfield efs) - | DotE (e1, at, as_) -> Node ("dot", [exp e1; mixop (Mixop.Atom at)] @ List.map arg as_) + | DotE (e1, at) -> Node ("dot", [exp e1; mixop (Mixop.Atom at)]) | CompE (e1, e2) -> Node ("comp", [exp e1; exp e2]) | MemE (e1, e2) -> Node ("mem", [exp e1; exp e2]) | LenE e1 -> Node ("len", [exp e1]) @@ -117,8 +117,8 @@ and exp e = | CallE (x, as1) -> Node ("call", id x :: List.map arg as1) | IterE (e1, it) -> Node ("iter", [exp e1] @ iterexp it) | ProjE (e1, i) -> Node ("proj", [exp e1; Atom (string_of_int i)]) - | CaseE (op, as_, e1) -> Node ("case", [mixop op] @ List.map arg as_ @ [exp e1]) - | UncaseE (e1, op, as_) -> Node ("uncase", [exp e1; mixop op] @ List.map arg as_) + | CaseE (op, e1) -> Node ("case", [mixop op; exp e1]) + | UncaseE (e1, op) -> Node ("uncase", [exp e1; mixop op]) | OptE eo -> Node ("opt", List.map exp (Option.to_list eo)) | TheE e1 -> Node ("unopt", [exp e1]) | ListE es -> Node ("list", List.map exp es) @@ -127,15 +127,15 @@ and exp e = | CvtE (e1, nt1, nt2) -> Node ("cvt", [numtyp nt1; numtyp nt2; exp e1]) | SubE (e1, t1, t2) -> Node ("sub", [typ t1; typ t2; exp e1]) -and expfield (at, as_, e) = - Node ("field", [mixop (Mixop.Atom at)] @ List.map arg as_ @ [exp e]) +and expfield (at, e) = + Node ("field", [mixop (Mixop.Atom at); exp e]) and path p = match p.it with | RootP -> Atom "root" | IdxP (p1, e) -> Node ("idx", [path p1; exp e]) | SliceP (p1, e1, e2) -> Node ("slice", [path p1; exp e1; exp e2]) - | DotP (p1, at, as_) -> Node ("dot", [path p1; mixop (Mixop.Atom at)] @ List.map arg as_) + | DotP (p1, at) -> Node ("dot", [path p1; mixop (Mixop.Atom at)]) and iterexp (it, xes) = iter it :: List.map (fun (x, e) -> Node ("dom", [id x; exp e])) xes diff --git a/spectec/src/frontend/det.ml b/spectec/src/frontend/det.ml index a9968c9cd..509cee111 100644 --- a/spectec/src/frontend/det.ml +++ b/spectec/src/frontend/det.ml @@ -50,7 +50,7 @@ and det_exp e = | BinE (#Xl.Num.binop, _, e1, e2) | CatE (e1, e2) -> det_exp e1 ++ det_exp e2 | OptE eo -> free_opt det_exp eo | ListE es | TupE es -> det_list det_exp es - | CaseE (_, as_, e1) | UncaseE (e1, _, as_) -> det_exp e1 ++ det_list det_arg as_ + | CaseE (_, e1) | UncaseE (e1, _) -> det_exp e1 | StrE efs -> det_list det_expfield efs | IterE (e1, ite) -> det_iterexp (det_exp e1) ite (* As a special hack to work with bijective functions, @@ -61,7 +61,7 @@ and det_exp e = | IdxE _ | SliceE _ | UpdE _ | ExtE _ | CompE _ | MemE _ | ProjE _ | DotE _ | LenE _ -> det_idx_exp e -and det_expfield (_, as_, e) = det_list det_quant_arg as_ ++ det_exp e +and det_expfield (_, e) = det_exp e and det_iterexp s1 (it, xes) = s1 -- free_list bound_varid (List.map fst xes) ++ @@ -90,8 +90,7 @@ and det_idx_exp e = ) @@ fun _ -> match e.it with | VarE _ -> empty - | LiftE e1 | SubE (e1, _, _) -> det_idx_exp e1 - | CaseE (_, as_, e1) -> det_list det_quant_arg as_ ++ det_idx_exp e1 + | LiftE e1 | SubE (e1, _, _) | CaseE (_, e1) -> det_idx_exp e1 | OptE eo -> free_opt det_idx_exp eo | ListE es | TupE es -> det_list det_idx_exp es | StrE efs -> det_list det_idx_expfield efs @@ -100,8 +99,8 @@ and det_idx_exp e = | IdxE (e1, e2) -> det_quant_exp e1 ++ det_exp e2 | _ -> det_quant_exp e -and det_idx_expfield (_, as_, e) = - det_list det_quant_arg as_ ++ det_idx_exp e +and det_idx_expfield (_, e) = + det_idx_exp e and det_idx_iter iter = match iter with @@ -133,16 +132,15 @@ and det_quant_exp e = det_quant_exp e1 ++ det_quant_exp e2 ++ det_quant_exp e3 | UpdE (e1, p, e2) | ExtE (e1, p, e2) -> det_quant_exp e1 ++ det_quant_path p ++ det_quant_exp e2 - | DotE (e1, _, as_) | CaseE (_, as_, e1) | UncaseE(e1, _, as_) -> - det_list det_arg as_ ++ det_quant_exp e1 + | DotE (e1, _) | CaseE (_, e1) | UncaseE (e1, _) -> det_quant_exp e1 | OptE eo -> free_opt det_quant_exp eo | ListE es | TupE es -> det_list det_quant_exp es | StrE efs -> det_list det_quant_expfield efs | IterE (e1, ite) -> det_quant_iterexp (det_quant_exp e1) ite | CallE (_, as_) -> det_list det_quant_arg as_ -and det_quant_expfield (_, as_, e) = - det_list det_quant_arg as_ ++ det_quant_exp e +and det_quant_expfield (_, e) = + det_quant_exp e and det_quant_iterexp s1 (it, xes) = s1 -- free_list bound_varid (List.map fst xes) ++ @@ -156,7 +154,7 @@ and det_quant_path p = | IdxP (p1, e) -> det_quant_path p1 ++ det_quant_exp e | SliceP (p1, e1, e2) -> det_quant_path p1 ++ det_quant_exp e1 ++ det_quant_exp e2 - | DotP (p1, _, as_) -> det_quant_path p1 ++ det_list det_quant_arg as_ + | DotP (p1, _) -> det_quant_path p1 and det_quant_iter iter = match iter with diff --git a/spectec/src/frontend/dim.ml b/spectec/src/frontend/dim.ml index 9296739c9..ff031e534 100644 --- a/spectec/src/frontend/dim.ml +++ b/spectec/src/frontend/dim.ml @@ -205,11 +205,10 @@ and check_exp dims ctx e = List.iter (check_exp dims ctx) es | StrE efs -> List.iter (check_expfield dims ctx) efs - | DotE (e1, _, as_) - | CaseE (_, as_, e1) - | UncaseE (e1, _, as_) -> - check_exp dims ctx e1; - List.iter (check_arg dims ctx) as_ + | DotE (e1, _) + | CaseE (_, e1) + | UncaseE (e1, _) -> + check_exp dims ctx e1 | CallE (_, as_) -> List.iter (check_arg dims ctx) as_ | IterE (e1, ite) -> @@ -219,9 +218,8 @@ and check_exp dims ctx e = check_typ dims ctx t1; check_typ dims ctx t2 -and check_expfield dims ctx (_, as_, e) = - List.iter (check_arg dims ctx) as_; - check_exp dims ctx e +and check_expfield dims ctx (_, e) = + check_exp dims ctx e and check_path dims ctx p = match p.it with @@ -233,9 +231,8 @@ and check_path dims ctx p = check_path dims ctx p1; check_exp dims ctx e1; check_exp dims ctx e2 - | DotP (p1, _, as_) -> - check_path dims ctx p1; - List.iter (check_arg dims ctx) as_ + | DotP (p1, _) -> + check_path dims ctx p1 and check_sym dims ctx g = match g.it with @@ -518,10 +515,9 @@ and annot_exp side dims e : exp * occur = | StrE efs -> let efs', occurs = List.split (List.map (annot_expfield side dims) efs) in StrE efs', List.fold_left union Map.empty occurs - | DotE (e1, atom, as_) -> + | DotE (e1, atom) -> let e1', occur1 = annot_exp side dims e1 in - let as', occurs = List.split (List.map (annot_arg dims) as_) in - DotE (e1', atom, as'), List.fold_left union occur1 occurs + DotE (e1', atom), occur1 | CompE (e1, e2) -> let e1', occur1 = annot_exp side dims e1 in let e2', occur2 = annot_exp side dims e2 in @@ -542,10 +538,9 @@ and annot_exp side dims e : exp * occur = | ProjE (e1, i) -> let e1', occur1 = annot_exp side dims e1 in ProjE (e1', i), occur1 - | UncaseE (e1, op, as_) -> + | UncaseE (e1, op) -> let e1', occur1 = annot_exp side dims e1 in - let as', occurs = List.split (List.map (annot_arg dims) as_) in - UncaseE (e1', op, as'), List.fold_left union occur1 occurs + UncaseE (e1', op), occur1 | OptE None -> OptE None, Map.empty | OptE (Some e1) -> @@ -568,10 +563,9 @@ and annot_exp side dims e : exp * occur = let e1', occur1 = annot_exp side dims e1 in let e2', occur2 = annot_exp side dims e2 in CatE (e1', e2'), union occur1 occur2 - | CaseE (atom, as_, e1) -> - let as', occurs = List.split (List.map (annot_arg dims) as_) in + | CaseE (atom, e1) -> let e1', occur1 = annot_exp side dims e1 in - CaseE (atom, as', e1'), List.fold_left union occur1 occurs + CaseE (atom, e1'), occur1 | CvtE (e1, nt1, nt2) -> let e1', occur1 = annot_exp side dims e1 in CvtE (e1', nt1, nt2), occur1 @@ -582,10 +576,9 @@ and annot_exp side dims e : exp * occur = SubE (e1', t1', t2'), union occur1 (union occur2 occur3) in {e with it}, occur -and annot_expfield side dims (atom, as_, e) : expfield * occur = - let as', occurs = List.split (List.map (annot_arg dims) as_) in +and annot_expfield side dims (atom, e) : expfield * occur = let e', occur = annot_exp side dims e in - (atom, as', e'), List.fold_left union occur occurs + (atom, e'), occur and annot_path dims p : path * occur = let it, occur = @@ -600,10 +593,9 @@ and annot_path dims p : path * occur = let e1', occur2 = annot_exp `Rhs dims e1 in let e2', occur3 = annot_exp `Rhs dims e2 in SliceP (p1', e1', e2'), union occur1 (union occur2 occur3) - | DotP (p1, atom, as_) -> + | DotP (p1, atom) -> let p1', occur1 = annot_path dims p1 in - let as', occurs = List.split (List.map (annot_arg dims) as_) in - DotP (p1', atom, as'), List.fold_left union occur1 occurs + DotP (p1', atom), occur1 in {p with it}, occur and annot_sym dims g : sym * occur = diff --git a/spectec/src/frontend/elab.ml b/spectec/src/frontend/elab.ml index ae0f1c120..83836a881 100644 --- a/spectec/src/frontend/elab.ml +++ b/spectec/src/frontend/elab.ml @@ -346,8 +346,6 @@ let il_arg_of_param p = | Il.GramP (id, _, _) -> Il.GramA (Il.VarG (id, []) $ id.at) ) $ p.at -let il_args_of_params = List.map il_arg_of_param - let to_il_var (_at, t) = t let to_il_def (_at, (ps, t, clauses)) = (ps, t, List.map snd clauses) let to_il_gram (_at, (ps, t, prods, _)) = (ps, t, List.map snd prods) @@ -1540,13 +1538,10 @@ and infer_exp' env e : (Il.exp' * Il.typ') attempt = let* tfs, dots = as_struct_typ "expression" env Infer t1 e1.at in if dots = Dots then error e1.at "used record type is only partially defined at this point"; - let* _, (qs, tF, prems), _ = attempt (find_field tfs atom e1.at) t1 in - let qs', _s = refresh_quants env qs in - let _qas' = il_args_of_params qs' in - let tF' = (*Il.Subst.subst_typ s*) tF in - let e' = Il.DotE (e1', elab_atom atom (expand_id env t1), [](*qas'*)) in - let e'' = if prems = [] then e' else Il.ProjE (e' $$ e.at % tF', 0) in - Ok (e'', tF'.it) + let* _, (_qs, tF, prems), _ = attempt (find_field tfs atom e1.at) t1 in + let e' = Il.DotE (e1', elab_atom atom (expand_id env t1)) in + let e'' = if prems = [] then e' else Il.ProjE (e' $$ e.at % tF, 0) in + Ok (e'', tF.it) | CommaE (e1, e2) -> let* e1', t1 = infer_exp env e1 in let* tfs, dots = as_struct_typ "expression" env Infer t1 e1.at in @@ -1556,7 +1551,7 @@ and infer_exp' env e : (Il.exp' * Il.typ') attempt = (* TODO(4, rossberg): this is a bit of a hack, can we avoid it? *) (match e2.it with | SeqE ({it = AtomE atom; at; _} :: es2) -> - let* _t2 = attempt (find_field tfs atom at) t1 in + let* _ = attempt (find_field tfs atom at) t1 in let e2 = match es2 with [e2] -> e2 | _ -> SeqE es2 $ e2.at in let* e2' = elab_exp env (StrE [Elem (atom, e2)] $ e2.at) t1 in Ok (Il.CompE (e2', e1'), t1.it) @@ -1743,7 +1738,7 @@ and elab_exp_plain' env (e : exp) (t : Il.typ) : Il.exp' attempt = (* TODO(4, rossberg): this is a bit of a hack, can we avoid it? *) (match e2.it with | SeqE ({it = AtomE atom; at; _} :: es2) -> - let* _t2 = attempt (find_field tfs atom at) t in + let* _ = attempt (find_field tfs atom at) t in let e2 = match es2 with [e2] -> e2 | _ -> SeqE es2 $ e2.at in let* e2' = elab_exp env (StrE [Elem (atom, e2)] $ e2.at) t in Ok (Il.CompE (e2', e1')) @@ -1830,20 +1825,17 @@ and elab_expfields env tid (efs : expfield list) (tfs : Il.typfield list) (t0 : assert (valid_tid tid); match efs, tfs with | [], [] -> Ok [] - | (atom1, e)::efs2, (atom2, (qs, tF, prems), _)::tfs2 when atom1.it = atom2.it -> + | (atom1, e)::efs2, (atom2, (_qs, tF, prems), _)::tfs2 when atom1.it = atom2.it -> let* e' = elab_exp env e tF in - let _qs', _s = refresh_quants env qs in - let* efs2' = elab_expfields env tid efs2 ((*List.map (Il.Subst.subst_typfield s)*) tfs2) t0 at in + let* efs2' = elab_expfields env tid efs2 tfs2 t0 at in let e' = if prems = [] then e' else tup_exp' [e'] e.at in - Ok ((elab_atom atom1 tid, [](*il_args_of_params qs'*), e') :: efs2') - | _, (atom, (qs, t, prems), _)::tfs2 -> + Ok ((elab_atom atom1 tid, e') :: efs2') + | _, (atom, (_qs, tF, prems), _)::tfs2 -> let atom' = string_of_atom atom in - let _qs', _s = refresh_quants env qs in - let t' = (*Il.Subst.subst_typ s*) t in - let* e1' = cast_empty ("omitted record field `" ^ atom' ^ "`") env t' at in + let* e1' = cast_empty ("omitted record field `" ^ atom' ^ "`") env tF at in let e' = if prems = [] then e1' else tup_exp' [e1'] at in let* efs2' = elab_expfields env tid efs tfs2 t0 at in - Ok ((elab_atom atom tid, [](*il_args_of_params qs'*), e') :: efs2') + Ok ((elab_atom atom tid, e') :: efs2') | (atom, e)::_, [] -> fail_atom e.at atom t0 "undefined or misplaced record field" @@ -1876,12 +1868,11 @@ and elab_exp_iter' env (es : exp list) (t1, iter) t at : Il.exp' attempt = | _, (List1 | ListN _) -> assert false -and elab_exp_notation env tid (e : exp) (qs, t1, mixop, not) t : Il.exp attempt = +and elab_exp_notation env tid (e : exp) (_qs, t1, mixop, not) t : Il.exp attempt = (* Convert notation into applications of mixin operators *) assert (valid_tid tid); - let* es', s = elab_exp_notation' env tid e not in - let _qas' = Il.Subst.subst_args s (il_args_of_params qs) in - Ok (Il.CaseE (mixop, [](*qas'*), Il.TupE es' $$ e.at % t1) $$ e.at % t) + let* es', _s = elab_exp_notation' env tid e not in + Ok (Il.CaseE (mixop, Il.TupE es' $$ e.at % t1) $$ e.at % t) and elab_exp_notation' env tid (e : exp) not : (Il.exp list * Il.Subst.t) attempt = Debug.(log_at "el.elab_exp_notation" e.at @@ -2075,13 +2066,11 @@ and elab_exp_variant env tid (e : exp) (tcs : Il.typcase list) t at : Il.exp att | _ -> fail_typ env at "expression" t in let* atom = head e in - let* mixop, (qs, tC, _prems), _ = attempt (find_case_atom tcs atom atom.at) t in - let qs', _s = refresh_quants env qs in - let* xts = as_tup_typ "tuple" env Check ((*Il.Subst.subst_typ s*) tC) e.at in + let* mixop, (_qs, tC, _prems), _ = attempt (find_case_atom tcs atom atom.at) t in + let* xts = as_tup_typ "tuple" env Check tC e.at in let not = Mixop.apply mixop xts in - let* es', s = elab_exp_notation' env tid e not in - let _qas' = Il.Subst.subst_args s (il_args_of_params qs') in - Ok (Il.CaseE (mixop, [](*qas'*), tup_exp' es' e.at) $$ at % t) + let* es', _s = elab_exp_notation' env tid e not in + Ok (Il.CaseE (mixop, tup_exp' es' e.at) $$ at % t) (* @@ -2114,11 +2103,8 @@ and elab_path' env (p : path) (t : Il.typ) : (Il.path' * Il.typ) attempt = let* tfs, dots = as_struct_typ "path" env Check t1 p1.at in if dots = Dots then error p1.at "used record type is only partially defined at this point"; - let* _, (qs, tF, _prems), _ = attempt (find_field tfs atom p1.at) t1 in - let qs', _s = refresh_quants env qs in - let _qas' = il_args_of_params qs' in - let tF' = (*Il.Subst.subst_typ s*) tF in - Ok (Il.DotP (p1', elab_atom atom (expand_id env t1), [](*qas'*)), tF') + let* _, (_qs, tF, _prems), _ = attempt (find_field tfs atom p1.at) t1 in + Ok (Il.DotP (p1', elab_atom atom (expand_id env t1)), tF) and cast_empty phrase env (t : Il.typ) at : Il.exp attempt = @@ -2176,24 +2162,18 @@ and cast_exp' phrase env (e' : Il.exp) t1 t2 : Il.exp' attempt = | Il.VarT (x1, _), Il.VarT (x2, _) -> (match expand_def env t1', expand_def env t2' with - | (Il.VariantT [mixop1, (qs1, tC1, _), _], NoDots), - (Il.VariantT [mixop2, (qs2, tC2, _), _], NoDots) -> - let qs1', _s1 = refresh_quants env qs1 in - let qs2', _s2 = refresh_quants env qs2 in - let tC1' = (*Il.Subst.subst_typ s1*) tC1 in - let tC2' = (*Il.Subst.subst_typ s2*) tC2 in - let _qas1' = il_args_of_params qs1' in - let _qas2' = il_args_of_params qs2' in + | (Il.VariantT [mixop1, (_qs1, tC1, _), _], NoDots), + (Il.VariantT [mixop2, (_qs2, tC2, _), _], NoDots) -> if mixop1 = mixop2 then ( (* Two ConT's with the same operator can be cast pointwise *) - let ts1 = match tC1'.it with Il.TupT xts -> List.map snd xts | _ -> [tC1'] in - let ts2 = match tC2'.it with Il.TupT xts -> List.map snd xts | _ -> [tC2'] in - let e'' = Il.UncaseE (e', mixop1, [](*qas1'*)) $$ e'.at % tC1' in + let ts1 = match tC1.it with Il.TupT xts -> List.map snd xts | _ -> [tC1] in + let ts2 = match tC2.it with Il.TupT xts -> List.map snd xts | _ -> [tC2] in + let e'' = Il.UncaseE (e', mixop1) $$ e'.at % tC1 in let es' = List.mapi (fun i t1I -> Il.ProjE (e'', i) $$ e''.at % t1I) ts1 in let* es'' = map2_attempt (fun eI' (t1I, t2I) -> cast_exp phrase env eI' t1I t2I) es' (List.combine ts1 ts2) in - Ok (Il.CaseE (mixop2, [](*qas2'*), tup_exp' es'' e'.at)) + Ok (Il.CaseE (mixop2, tup_exp' es'' e'.at)) ) else ( @@ -2207,9 +2187,9 @@ and cast_exp' phrase env (e' : Il.exp) t1 t2 : Il.exp' attempt = (il_typ (reduce env t2)) ) ) in - match expand env tC1' with + match expand env tC1 with | Il.TupT [_, t11'] -> - let e'' = Il.UncaseE (e', mixop1, [](*qas1'*)) $$ e'.at % t11' in + let e'' = Il.UncaseE (e', mixop1) $$ e'.at % t11' in cast_exp' phrase env (Il.ProjE (e'', 0) $$ e'.at % t11') t11' t2' | _ -> fail_typ2 env e'.at phrase t1 t2 "" ) @@ -2246,7 +2226,7 @@ and cast_exp' phrase env (e' : Il.exp) t1 t2 : Il.exp' attempt = | Il.VarT _, _ -> (match expand_def env t1' with - | Il.VariantT [mixop1, (qs1, tC1, _), _], NoDots -> + | Il.VariantT [mixop1, (_qs1, tC1, _), _], NoDots -> choice env [ (fun env -> (* A ConT can always be cast to a (singleton) iteration *) @@ -2270,12 +2250,9 @@ and cast_exp' phrase env (e' : Il.exp) t1 t2 : Il.exp' attempt = (il_typ (reduce env t2)) ) ); - let qs1', _s1 = refresh_quants env qs1 in - let tC1' = (*Il.Subst.subst_typ s1*) tC1 in - let _qas1' = il_args_of_params qs1' in - match expand env tC1' with + match expand env tC1 with | Il.TupT [_, t11'] -> - let e'' = Il.UncaseE (e', mixop1, [](*qas1'*)) $$ e'.at % t11' in + let e'' = Il.UncaseE (e', mixop1) $$ e'.at % t11' in cast_exp' phrase env (Il.ProjE (e'', 0) $$ e'.at % t11') t11' t2' | _ -> fail_typ2 env e'.at phrase t1 t2 "" ); @@ -2287,15 +2264,12 @@ and cast_exp' phrase env (e' : Il.exp) t1 t2 : Il.exp' attempt = | _, Il.VarT _ -> (match expand_def env t2' with - | Il.VariantT [mixop2, (qs2, tC2, _), _], NoDots -> + | Il.VariantT [mixop2, (_qs2, tC2, _), _], NoDots -> (* A ConT payload can be cast to the ConT *) - let qs2', _s2 = refresh_quants env qs2 in - let tC2' = (*Il.Subst.subst_typ s2*) tC2 in - let _qas2' = il_args_of_params qs2' in - (match expand env tC2' with + (match expand env tC2 with | Il.TupT [_, t21'] -> let* e1' = cast_exp phrase env e' t1' t21' in - Ok (Il.CaseE (mixop2, [](*qas2'*), Il.TupE [e1'] $$ e'.at % tC2')) + Ok (Il.CaseE (mixop2, Il.TupE [e1'] $$ e'.at % tC2)) | _ -> fail_typ2 env e'.at phrase t1 t2 "" ) diff --git a/spectec/src/il/ast.ml b/spectec/src/il/ast.ml index 20fc47e75..4fda78c45 100644 --- a/spectec/src/il/ast.ml +++ b/spectec/src/il/ast.ml @@ -61,12 +61,12 @@ and exp' = | CmpE of cmpop * optyp * exp * exp (* exp cmpop exp *) | TupE of exp list (* ( exp* ) *) | ProjE of exp * int (* exp.i *) - | CaseE of mixop * arg list * exp (* atom exp? *) - | UncaseE of exp * mixop * arg list (* exp!mixop *) + | CaseE of mixop * exp (* atom exp? *) + | UncaseE of exp * mixop (* exp!mixop *) | OptE of exp option (* exp? *) | TheE of exp (* exp! *) | StrE of expfield list (* { expfield* } *) - | DotE of exp * atom * arg list (* exp.atom *) + | DotE of exp * atom (* exp.atom *) | CompE of exp * exp (* exp @ exp *) | ListE of exp list (* [exp ... exp] *) | LiftE of exp (* exp : _? <: _* *) @@ -82,14 +82,14 @@ and exp' = | CvtE of exp * numtyp * numtyp (* exp : typ1 <:> typ2 *) | SubE of exp * typ * typ (* exp : typ1 <: typ2 *) -and expfield = atom * arg list * exp (* atom exp *) +and expfield = atom * exp (* atom exp *) and path = (path', typ) note_phrase and path' = | RootP (* *) | IdxP of path * exp (* path[exp] *) | SliceP of path * exp * exp (* path[exp : exp] *) - | DotP of path * atom * arg list (* path.atom *) + | DotP of path * atom (* path.atom *) and iterexp = iter * (id * exp) list diff --git a/spectec/src/il/eq.ml b/spectec/src/il/eq.ml index 91787ad3b..05d0a0e52 100644 --- a/spectec/src/il/eq.ml +++ b/spectec/src/il/eq.ml @@ -86,26 +86,26 @@ and eq_exp e1 e2 = | TupE es1, TupE es2 | ListE es1, ListE es2 -> eq_list eq_exp es1 es2 | StrE efs1, StrE efs2 -> eq_list eq_expfield efs1 efs2 - | DotE (e11, atom1, _as1), DotE (e21, atom2, _as2) -> - eq_exp e11 e21 && eq_atom atom1 atom2 (*&& eq_list eq_arg as1 as2*) - | UncaseE (e1, op1, _as1), UncaseE (e2, op2, _as2) -> - eq_mixop op1 op2 && eq_exp e1 e2 (*&& eq_list eq_arg as1 as2*) + | DotE (e11, atom1), DotE (e21, atom2) -> + eq_exp e11 e21 && eq_atom atom1 atom2 + | UncaseE (e1, op1), UncaseE (e2, op2) -> + eq_mixop op1 op2 && eq_exp e1 e2 | CallE (x1, as1), CallE (x2, as2) -> eq_id x1 x2 && eq_list eq_arg as1 as2 | IterE (e11, iter1), IterE (e21, iter2) -> eq_exp e11 e21 && eq_iterexp iter1 iter2 | OptE eo1, OptE eo2 -> eq_opt eq_exp eo1 eo2 | ProjE (e1, i1), ProjE (e2, i2) -> eq_exp e1 e2 && i1 = i2 | TheE e1, TheE e2 -> eq_exp e1 e2 - | CaseE (op1, _as1, e1), CaseE (op2, _as2, e2) -> - eq_mixop op1 op2 (*&& eq_list eq_arg as1 as2*) && eq_exp e1 e2 + | CaseE (op1, e1), CaseE (op2, e2) -> + eq_mixop op1 op2 && eq_exp e1 e2 | CvtE (e1, nt11, nt12), CvtE (e2, nt21, nt22) -> eq_exp e1 e2 && nt11 = nt21 && nt12 = nt22 | SubE (e1, t11, t12), SubE (e2, t21, t22) -> eq_exp e1 e2 && eq_typ t11 t21 && eq_typ t12 t22 | _, _ -> e1.it = e2.it -and eq_expfield (atom1, _as1, e1) (atom2, _as2, e2) = - eq_atom atom1 atom2 (*&& eq_list eq_arg as1 as2*) && eq_exp e1 e2 +and eq_expfield (atom1, e1) (atom2, e2) = + eq_atom atom1 atom2 && eq_exp e1 e2 and eq_path p1 p2 = match p1.it, p2.it with @@ -113,8 +113,8 @@ and eq_path p1 p2 = | IdxP (p11, e1), IdxP (p21, e2) -> eq_path p11 p21 && eq_exp e1 e2 | SliceP (p11, e11, e12), SliceP (p21, e21, e22) -> eq_path p11 p21 && eq_exp e11 e21 && eq_exp e12 e22 - | DotP (p11, atom1, _as1), DotP (p21, atom2, _as2) -> - eq_path p11 p21 && eq_atom atom1 atom2 (*&& eq_list eq_arg as1 as2*) + | DotP (p11, atom1), DotP (p21, atom2) -> + eq_path p11 p21 && eq_atom atom1 atom2 | _, _ -> p1.it = p2.it and eq_iterexp (iter1, xes1) (iter2, xes2) = diff --git a/spectec/src/il/eval.ml b/spectec/src/il/eval.ml index 2d1f2d883..ac6da6e9a 100644 --- a/spectec/src/il/eval.ml +++ b/spectec/src/il/eval.ml @@ -136,8 +136,8 @@ and is_normal_exp e = | BoolE _ | NumE _ | TextE _ -> true | ListE es | TupE es -> List.for_all is_normal_exp es | OptE None -> true - | OptE (Some e) | CaseE (_, _, e) | SubE (e, _, _) -> is_normal_exp e - | StrE efs -> List.for_all (fun (_, _, e) -> is_normal_exp e) efs + | OptE (Some e) | CaseE (_, e) | SubE (e, _, _) -> is_normal_exp e + | StrE efs -> List.for_all (fun (_, e) -> is_normal_exp e) efs | _ -> false and reduce_exp env e : exp = @@ -221,13 +221,11 @@ and reduce_exp env e : exp = else ExtE (e', p', e2') $> e' ) | StrE efs -> StrE (List.map (reduce_expfield env) efs) $> e - | DotE (e1, atom, as_) -> + | DotE (e1, atom) -> let e1' = reduce_exp env e1 in (match e1'.it with - | StrE efs -> - let _, _, e = List.find (fun (atomN, _, _) -> Atom.eq atomN atom) efs in - e - | _ -> DotE (e1', atom, List.map (reduce_arg env) as_) $> e + | StrE efs -> snd (List.find (fun (atomN, _) -> Atom.eq atomN atom) efs) + | _ -> DotE (e1', atom) $> e ) | CompE (e1, e2) -> (* TODO(4, rossberg): avoid overlap with CatE? *) @@ -238,10 +236,9 @@ and reduce_exp env e : exp = | OptE None, OptE _ -> e2'.it | OptE _, OptE None -> e1'.it | StrE efs1, StrE efs2 -> - let merge (atom1, as1, e1) (atom2, as2, e2) = + let merge (atom1, e1) (atom2, e2) = assert (Atom.eq atom1 atom2); - let s = Option.get (match_list match_arg env Subst.empty as1 as2) in - (atom1, as1, reduce_exp env (CompE (e1, Subst.subst_exp s e2) $> e1)) + (atom1, reduce_exp env (CompE (e1, e2) $> e1)) in (try StrE (List.map2 merge efs1 efs2) @@ -329,11 +326,11 @@ and reduce_exp env e : exp = | TupE es -> List.nth es i | _ -> ProjE (e1', i) $> e ) - | UncaseE (e1, mixop, as_) -> + | UncaseE (e1, mixop) -> let e1' = reduce_exp env e1 in (match e1'.it with - | CaseE (_, _, e11') -> e11' - | _ -> UncaseE (e1', mixop, List.map (reduce_arg env) as_) $> e + | CaseE (_, e11') -> e11' + | _ -> UncaseE (e1', mixop) $> e ) | OptE eo -> OptE (Option.map (reduce_exp env) eo) $> e | TheE e1 -> @@ -359,8 +356,7 @@ and reduce_exp env e : exp = | OptE _, OptE None -> e1'.it | _ -> CatE (e1', e2') ) $> e - | CaseE (op, as_, e1) -> - CaseE (op, List.map (reduce_arg env) as_, reduce_exp env e1) $> e + | CaseE (op, e1) -> CaseE (op, reduce_exp env e1) $> e | CvtE (e1, _nt1, nt2) -> let e1' = reduce_exp env e1 in (match e1'.it with @@ -410,8 +406,8 @@ and reduce_iter env = function and reduce_iterexp env (iter, xes) = (reduce_iter env iter, List.map (fun (id, e) -> id, reduce_exp env e) xes) -and reduce_expfield env (atom, as_, e) : expfield = - (atom, List.map (reduce_arg env) as_, reduce_exp env e) +and reduce_expfield env (atom, e) : expfield = + (atom, reduce_exp env e) and reduce_path env e p f = match p.it with @@ -440,17 +436,17 @@ and reduce_path env e p f = f e' (SliceP (p1', e1', e2') $> p) in reduce_path env e p1 f' - | DotP (p1, atom, as_) -> + | DotP (p1, atom) -> let f' e' p1' = match e'.it with | StrE efs -> - StrE (List.map (fun (atomI, asI, eI) -> + StrE (List.map (fun (atomI, eI) -> if Eq.eq_atom atomI atom - then (atomI, asI, f eI p1') - else (atomI, asI, eI) + then (atomI, f eI p1') + else (atomI, eI) ) efs) $> e' | _ -> - f e' (DotP (p1', atom, as_) $> p) + f e' (DotP (p1', atom) $> p) in reduce_path env e p1 f' @@ -643,15 +639,14 @@ and match_exp' env s e1 e2 : subst option = match_exp' env s e11 e21 | LenE e11, LenE e21 -> match_exp' env s e11 e21 *) - | CaseE (op1, as1, e11), CaseE (op2, as2, e21) when Eq.eq_mixop op1 op2 -> - let* s' = match_list match_arg env s as1 as2 in - match_exp' env s' e11 e21 + | CaseE (op1, e11), CaseE (op2, e21) when Eq.eq_mixop op1 op2 -> + match_exp' env s e11 e21 (* | CallE (id1, args1), CallE (id2, args2) when id1.it = id2.it -> match_list match_arg env s args1 args2 *) - | _, UncaseE (e21, mixop, as_) -> - match_exp' env s (CaseE (mixop, as_, e1) $$ e1.at % e21.note) e21 + | _, UncaseE (e21, mixop) -> + match_exp' env s (CaseE (mixop, e1) $$ e1.at % e21.note) e21 | _, ProjE (e21, 0) -> (* only valid on unary tuples! *) match_exp' env s (TupE [e1] $$ e1.at % e21.note) e21 (* @@ -727,7 +722,7 @@ and match_exp' env s e1 e2 : subst option = | BoolE _, BoolT | NumE _, NumT _ | TextE _, TextT -> true - | CaseE (op, _, _), VarT _ -> + | CaseE (op, _), VarT _ -> (match (reduce_typdef env t21).it with | VariantT tcs -> (* Assumes that we only have shallow subtyping. *) @@ -745,10 +740,9 @@ and match_exp' env s e1 e2 : subst option = | _, _ -> raise Irred -and match_expfield env s (atom1, as1, e1) (atom2, as2, e2) = +and match_expfield env s (atom1, e1) (atom2, e2) = if not (Eq.eq_atom atom1 atom2) then None else - let* s' = match_list match_arg env s as1 as2 in - match_exp' env s' e1 (Subst.subst_exp s e2) + match_exp' env s e1 (Subst.subst_exp s e2) and match_iterexp env s (iter1, _ids1) (iter2, _ids2) = match_iter env s iter1 iter2 diff --git a/spectec/src/il/free.ml b/spectec/src/il/free.ml index f30659388..cb4a10704 100644 --- a/spectec/src/il/free.ml +++ b/spectec/src/il/free.ml @@ -70,21 +70,20 @@ and free_exp e = | TupE es | ListE es -> free_list free_exp es | UpdE (e1, p, e2) | ExtE (e1, p, e2) -> free_exp e1 ++ free_path p ++ free_exp e2 | StrE efs -> free_list free_expfield efs - | DotE (e1, _, as_) -> free_exp e1 ++ free_args as_ - | CaseE (_, as_, e1) | UncaseE (e1, _, as_) -> free_args as_ ++ free_exp e1 + | DotE (e1, _) | CaseE (_, e1) | UncaseE (e1, _) -> free_exp e1 | CallE (x, as1) -> free_defid x ++ free_args as1 | IterE (e1, ite) -> (free_exp e1 -- bound_iterexp ite) ++ free_iterexp ite | CvtE (e1, _nt1, _nt2) -> free_exp e1 | SubE (e1, t1, t2) -> free_exp e1 ++ free_typ t1 ++ free_typ t2 -and free_expfield (_, as_, e) = free_args as_ ++ free_exp e +and free_expfield (_, e) = free_exp e and free_path p = match p.it with | RootP -> empty | IdxP (p1, e) -> free_path p1 ++ free_exp e | SliceP (p1, e1, e2) -> free_path p1 ++ free_exp e1 ++ free_exp e2 - | DotP (p1, _atom, as_) -> free_path p1 ++ free_args as_ + | DotP (p1, _atom) -> free_path p1 and free_iterexp (iter, xes) = free_iter iter ++ free_list free_exp (List.map snd xes) diff --git a/spectec/src/il/iter.ml b/spectec/src/il/iter.ml index 3526649d1..02826645d 100644 --- a/spectec/src/il/iter.ml +++ b/spectec/src/il/iter.ml @@ -162,11 +162,11 @@ and exp e = | CmpE (op, ot, e1, e2) -> cmpop op; optyp ot; exp e1; exp e2 | TupE es | ListE es -> list exp es | ProjE (e1, _) | TheE e1 | LiftE e1 | LenE e1 -> exp e1 - | CaseE (op, as_, e1) -> mixop op; args as_; exp e1 - | UncaseE (e1, op, as_) -> exp e1; mixop op; args as_ + | CaseE (op, e1) -> mixop op; exp e1 + | UncaseE (e1, op) -> exp e1; mixop op | OptE eo -> opt exp eo | StrE efs -> list expfield efs - | DotE (e1, at, as_) -> exp e1; atom at; args as_ + | DotE (e1, at) -> exp e1; atom at | CompE (e1, e2) | MemE (e1, e2) | CatE (e1, e2) | IdxE (e1, e2) -> exp e1; exp e2 | SliceE (e1, e2, e3) -> exp e1; exp e2; exp e3 | UpdE (e1, p, e2) | ExtE (e1, p, e2) -> exp e1; path p; exp e2 @@ -175,7 +175,7 @@ and exp e = | CvtE (e1, nt1, nt2) -> exp e1; numtyp nt1; numtyp nt2 | SubE (e1, t1, t2) -> exp e1; typ t1; typ t2 -and expfield (at, as_, e) = atom at; args as_; exp e +and expfield (at, e) = atom at; exp e and path p = visit_path p; @@ -183,7 +183,7 @@ and path p = | RootP -> () | IdxP (p1, e) -> path p1; exp e | SliceP (p1, e1, e2) -> path p1; exp e1; exp e2 - | DotP (p1, at, as_) -> path p1; atom at; args as_ + | DotP (p1, at) -> path p1; atom at (* Grammars *) diff --git a/spectec/src/il/print.ml b/spectec/src/il/print.ml index 38c539a6e..7a051335d 100644 --- a/spectec/src/il/print.ml +++ b/spectec/src/il/print.ml @@ -132,10 +132,9 @@ and string_of_exp e = string_of_exp e1 ^ "[" ^ string_of_path p ^ " =++ " ^ string_of_exp e2 ^ "]" | StrE efs -> "{" ^ concat ", " (List.map string_of_expfield efs) ^ "}" - | DotE (e1, atom, as_) -> + | DotE (e1, atom) -> string_of_exp e1 ^ "." ^ - string_of_mixop (Mixop.Atom atom) ^ "_" ^ string_of_typ_name e1.note ^ - string_of_quantargs as_ + string_of_mixop (Mixop.Atom atom) ^ "_" ^ string_of_typ_name e1.note | CompE (e1, e2) -> string_of_exp e1 ^ " +++ " ^ string_of_exp e2 | MemE (e1, e2) -> "(" ^ string_of_exp e1 ^ " <- " ^ string_of_exp e2 ^ ")" | LenE e1 -> "|" ^ string_of_exp e1 ^ "|" @@ -143,19 +142,16 @@ and string_of_exp e = | CallE (x, as1) -> "$" ^ string_of_id x ^ string_of_args as1 | IterE (e1, iter) -> string_of_exp e1 ^ string_of_iterexp iter | ProjE (e1, i) -> string_of_exp e1 ^ "." ^ string_of_int i - | UncaseE (e1, op, as_) -> + | UncaseE (e1, op) -> string_of_exp e1 ^ "!" ^ - string_of_mixop op ^ "_" ^ string_of_typ_name e1.note ^ - string_of_quantargs as_ + string_of_mixop op ^ "_" ^ string_of_typ_name e1.note | OptE eo -> "?(" ^ string_of_exps "" (Option.to_list eo) ^ ")" | TheE e1 -> "!(" ^ string_of_exp e1 ^ ")" | ListE es -> "[" ^ string_of_exps " " es ^ "]" | LiftE e1 -> "lift(" ^ string_of_exp e1 ^ ")" | CatE (e1, e2) -> string_of_exp e1 ^ " ++ " ^ string_of_exp e2 - | CaseE (op, as_, e1) -> - string_of_mixop op ^ "_" ^ string_of_typ_name e.note ^ - string_of_quantargs as_ ^ - string_of_exp_args e1 + | CaseE (op, e1) -> + string_of_mixop op ^ "_" ^ string_of_typ_name e.note ^ string_of_exp_args e1 | CvtE (e1, nt1, nt2) -> "(" ^ string_of_exp e1 ^ " : " ^ string_of_numtyp nt1 ^ " <:> " ^ string_of_numtyp nt2 ^ ")" | SubE (e1, t1, t2) -> @@ -172,10 +168,8 @@ and string_of_exp_args e = and string_of_exps sep es = concat sep (List.map string_of_exp es) -and string_of_expfield (atom, as_, e) = - string_of_mixop (Mixop.Atom atom) ^ - string_of_quantargs as_ ^ - " " ^ string_of_exp e +and string_of_expfield (atom, e) = + string_of_mixop (Mixop.Atom atom) ^ " " ^ string_of_exp e and string_of_path p = (if !print_notes then "(" else "") ^ @@ -185,13 +179,11 @@ and string_of_path p = string_of_path p1 ^ "[" ^ string_of_exp e ^ "]" | SliceP (p1, e1, e2) -> string_of_path p1 ^ "[" ^ string_of_exp e1 ^ " : " ^ string_of_exp e2 ^ "]" - | DotP ({it = RootP; note; _}, atom, as_) -> - string_of_mixop (Mixop.Atom atom) ^ "_" ^ string_of_typ_name note ^ - string_of_quantargs as_ - | DotP (p1, atom, as_) -> + | DotP ({it = RootP; note; _}, atom) -> + string_of_mixop (Mixop.Atom atom) ^ "_" ^ string_of_typ_name note + | DotP (p1, atom) -> string_of_path p1 ^ "." ^ - string_of_mixop (Mixop.Atom atom) ^ "_" ^ string_of_typ_name p1.note ^ - string_of_quantargs as_ + string_of_mixop (Mixop.Atom atom) ^ "_" ^ string_of_typ_name p1.note ) ^ (if !print_notes then ")@[" ^ string_of_typ p.note ^ "]" else "") @@ -246,10 +238,6 @@ and string_of_args = function | [] -> "" | as_ -> "(" ^ concat ", " (List.map string_of_arg as_) ^ ")" -and string_of_quantargs = function - | [] -> "" - | as_ -> "{" ^ concat ", " (List.map string_of_arg as_) ^ "}" - and string_of_param p = match p.it with | ExpP (x, t) -> diff --git a/spectec/src/il/subst.ml b/spectec/src/il/subst.ml index a009bd5a0..abe73a00c 100644 --- a/spectec/src/il/subst.ml +++ b/spectec/src/il/subst.ml @@ -180,7 +180,7 @@ and subst_exp s e = | UpdE (e1, p, e2) -> UpdE (subst_exp s e1, subst_path s p, subst_exp s e2) | ExtE (e1, p, e2) -> ExtE (subst_exp s e1, subst_path s p, subst_exp s e2) | StrE efs -> StrE (subst_list subst_expfield s efs) - | DotE (e1, atom, as_) -> DotE (subst_exp s e1, atom, subst_args s as_) + | DotE (e1, atom) -> DotE (subst_exp s e1, atom) | CompE (e1, e2) -> CompE (subst_exp s e1, subst_exp s e2) | MemE (e1, e2) -> MemE (subst_exp s e1, subst_exp s e2) | LenE e1 -> LenE (subst_exp s e1) @@ -190,23 +190,23 @@ and subst_exp s e = let e1', it' = subst_iterexp s subst_exp e1 iterexp in IterE (e1', it') | ProjE (e1, i) -> ProjE (subst_exp s e1, i) - | UncaseE (e1, op, as_) -> + | UncaseE (e1, op) -> let e1' = subst_exp s e1 in assert (match e1'.note.it with VarT _ -> true | _ -> false); - UncaseE (subst_exp s e1, op, subst_args s as_) + UncaseE (subst_exp s e1, op) | OptE eo -> OptE (subst_opt subst_exp s eo) | TheE e -> TheE (subst_exp s e) | ListE es -> ListE (subst_list subst_exp s es) | LiftE e -> LiftE (subst_exp s e) | CatE (e1, e2) -> CatE (subst_exp s e1, subst_exp s e2) - | CaseE (op, as_, e1) -> + | CaseE (op, e1) -> assert (match e.note.it with VarT _ -> true | _ -> false); - CaseE (op, subst_args s as_, subst_exp s e1) + CaseE (op, subst_exp s e1) | CvtE (e1, nt1, nt2) -> CvtE (subst_exp s e1, nt1, nt2) | SubE (e1, t1, t2) -> SubE (subst_exp s e1, subst_typ s t1, subst_typ s t2) ) $$ e.at % subst_typ s e.note -and subst_expfield s (atom, as_, e) = (atom, subst_args s as_, subst_exp s e) +and subst_expfield s (atom, e) = (atom, subst_exp s e) and subst_path s p = (match p.it with @@ -214,7 +214,7 @@ and subst_path s p = | IdxP (p1, e) -> IdxP (subst_path s p1, subst_exp s e) | SliceP (p1, e1, e2) -> SliceP (subst_path s p1, subst_exp s e1, subst_exp s e2) - | DotP (p1, atom, as_) -> DotP (subst_path s p1, atom, subst_args s as_) + | DotP (p1, atom) -> DotP (subst_path s p1, atom) ) $$ p.at % subst_typ s p.note diff --git a/spectec/src/il/valid.ml b/spectec/src/il/valid.ml index 64ed47150..312a15bf0 100644 --- a/spectec/src/il/valid.ml +++ b/spectec/src/il/valid.ml @@ -293,11 +293,10 @@ and infer_exp (env : Env.t) e : typ = | ExtE (e1, _, _) | CompE (e1, _) -> infer_exp env e1 | StrE _ -> error e.at "cannot infer type of record" - | DotE (e1, atom, _as_) -> + | DotE (e1, atom) -> let tfs = as_struct_typ "expression" env Infer (infer_exp env e1) e1.at in let _qs, t, _prems = find_field tfs atom e1.at in - (*let s = valid_args env as_ qs Subst.empty e.at in - Subst.subst_typ s*) t + t | TupE es -> TupT (List.map (fun eI -> "_" $ eI.at, infer_exp env eI) es) $ e.at | CallE (x, as_) -> @@ -311,12 +310,10 @@ and infer_exp (env : Env.t) e : typ = let t1 = infer_exp env e1 in let xts = as_tup_typ "expression" env Infer t1 e1.at in proj_tup_typ i xts e1 e.at - | UncaseE (e1, op, _as_) -> + | UncaseE (e1, op) -> let t1 = infer_exp env e1 in (match as_variant_typ "expression" env Infer t1 e1.at with - | [(op', (_qs, t, _), _)] when Eq.eq_mixop op op' -> - (*let s = valid_args env as_ qs Subst.empty e.at in - Subst.subst_typ s*) t + | [(op', (_, t, _), _)] when Eq.eq_mixop op op' -> t | _ -> error e.at "invalid case projection"; ) | OptE _ -> error e.at "cannot infer type of option" @@ -415,13 +412,12 @@ try | StrE efs -> let tfs = as_struct_typ "record" env Check t e.at in valid_list (valid_expfield ~side) env efs tfs e.at - | DotE (e1, atom, _as_) -> + | DotE (e1, atom) -> let t1 = infer_exp env e1 in valid_exp env e1 t1; let tfs = as_struct_typ "expression" env Check t1 e1.at in let _qs, t', _prems = find_field tfs atom e1.at in - (*let s = valid_args env as_ qs Subst.empty e.at in*) - equiv_typ env ((*Subst.subst_typ s*) t') t e.at + equiv_typ env t' t e.at | CompE (e1, e2) -> let _ = as_comp_typ "expression" env Check t e.at in valid_exp env e1 t; @@ -465,13 +461,12 @@ try let side' = if List.length xts > 1 then `Rhs else side in valid_exp ~side:side' env e1 (TupT xts $ t1.at); equiv_typ env (proj_tup_typ i xts e1 e.at) t e.at - | UncaseE (e1, op, _as_) -> + | UncaseE (e1, op) -> let t1 = infer_exp env e1 in valid_exp ~side env e1 t1; (match as_variant_typ "expression" env Infer t1 e1.at with | [(op', (_qs, t', _), _)] when Eq.eq_mixop op op' -> - (*let s = valid_args env as_ qs Subst.empty e.at in*) - equiv_typ env ((*Subst.subst_typ s*) t') t e.at + equiv_typ env t' t e.at | _ -> error e.at "invalid case projection"; ) | OptE eo -> @@ -494,11 +489,10 @@ try let _typ1 = as_iter_typ List "list" env Check t e.at in valid_exp env e1 t; valid_exp env e2 t - | CaseE (op, _as_, e1) -> + | CaseE (op, e1) -> let cases = as_variant_typ "case" env Check t e.at in let _qs, t1, _prems = find_case cases op e1.at in - (*let s = valid_args env as_ qs Subst.empty e.at in*) - valid_exp ~side env e1 ((*Subst.subst_typ s*) t1) + valid_exp ~side env e1 t1 | CvtE (e1, nt1, nt2) -> valid_exp ~side env e1 (NumT nt1 $ e1.at); equiv_typ env (NumT nt2 $e.at) t e.at; @@ -522,16 +516,15 @@ and valid_expmix ?(side = `Rhs) env mixop e (mixop', t) at = ); valid_exp ~side env e t -and valid_expfield ~side env (atom1, as_, e) (atom2, (qs, t, _prems), _) = +and valid_expfield ~side env (atom1, e) (atom2, (qs, t, _prems), _) = Debug.(log_in_at "il.valid_expfield" e.at - (fun _ -> fmt "%s%s %s :%s %s%s %s" - (il_atom atom1) (il_args as_) (il_exp e) (il_side side) + (fun _ -> fmt "%s %s :%s %s%s %s" + (il_atom atom1) (il_exp e) (il_side side) (il_atom atom2) (il_quants qs) (il_typ t) ) ); if not (Eq.eq_atom atom1 atom2) then error e.at "unexpected record field"; - (*let s = valid_args env as_ qs Subst.empty e.at in*) - valid_exp ~side env e ((*Subst.subst_typ s*) t) + valid_exp ~side env e t and valid_path env p t : typ = valid_typ env t; @@ -548,12 +541,11 @@ and valid_path env p t : typ = valid_exp env e2 (NumT `NatT $ e2.at); let _ = as_list_typ "path" env Check t1 p1.at in t1 - | DotP (p1, atom, _as_) -> + | DotP (p1, atom) -> let t1 = valid_path env p1 t in let tfs = as_struct_typ "path" env Check t1 p1.at in let _qs, t, _prems = find_field tfs atom p1.at in - (*let s = valid_args env as_ qs Subst.empty p.at in - Subst.subst_typ s*) t + t in equiv_typ env p.note t' p.at; t' diff --git a/spectec/src/il2al/animate.ml b/spectec/src/il2al/animate.ml index 2ab200995..5a19fe461 100644 --- a/spectec/src/il2al/animate.ml +++ b/spectec/src/il2al/animate.ml @@ -114,7 +114,7 @@ and recover_iterexp iterexp pr = Source.map (recover_iterexp' iterexp) pr (* is this assign premise a if-let? *) let is_cond_assign prem = match prem.it with - | LetPr ({it = CaseE (_, _, _); _}, _, _) -> true + | LetPr ({it = CaseE (_, _); _}, _, _) -> true | _ -> false (* is this assign premise encoded premise for popping one value? *) @@ -251,7 +251,7 @@ let is_not_lhs e = match e.it with (* Hack to handle RETURN_CALL_ADDR, eventually should be removed *) let is_atomic_lhs e = match e.it with -| CaseE (op, _, { it = CaseE (Xl.Mixop.(Infix (Arg (), {it = Arrow; _}, Arg ())), _, { it = TupE [ { it = IterE (_, (ListN _, _)); _} ; { it = IterE (_, (ListN _, _)); _} ] ; _} ); _ }) -> +| CaseE (op, { it = CaseE (Xl.Mixop.(Infix (Arg (), {it = Arrow; _}, Arg ())), { it = TupE [ { it = IterE (_, (ListN _, _)); _} ; { it = IterE (_, (ListN _, _)); _} ] ; _} ); _ }) -> Il2al_util.case_head op = "FUNC" | _ -> false diff --git a/spectec/src/il2al/encode.ml b/spectec/src/il2al/encode.ml index 79728a0df..238ef53b7 100644 --- a/spectec/src/il2al/encode.ml +++ b/spectec/src/il2al/encode.ml @@ -33,12 +33,12 @@ let is_case e = | _ -> false let case_of_case e = match e.it with - | CaseE (mixop, _, _) -> mixop + | CaseE (mixop, _) -> mixop | _ -> error e.at "cannot get case of case expression" let args_of_case e = match e.it with - | CaseE (_, _, { it = TupE exps; _ }) -> exps - | CaseE (_, _, exp) -> [ exp ] + | CaseE (_, { it = TupE exps; _ }) -> exps + | CaseE (_, exp) -> [ exp ] | _ -> error e.at "cannot get arguments of case expression" let is_context e = @@ -135,7 +135,7 @@ let encode_stack stack = let args', inner_stack = Lib.List.split_last args in let mixop' = Il2al_util.split_last_case mixop in - let e1 = { e with it = CaseE (mixop', [], TupE args' $$ no_region % (mk_varT "")) } in + let e1 = { e with it = CaseE (mixop', TupE args' $$ no_region % (mk_varT "")) } in let e2 = (mk_varE "ctxt" "contextT") in let pr = LetPr (e1, e2, free_ids e1) $ e2.at in @@ -152,7 +152,7 @@ let encode_stack stack = (* Encode lhs *) let encode_lhs lhs = match lhs.it with - | CaseE (Xl.Mixop.(Infix (Arg (), {it = Semicolon; _}, Arg ())), [], {it = TupE [z; stack]; _}) -> + | CaseE (Xl.Mixop.(Infix (Arg (), {it = Semicolon; _}, Arg ())), {it = TupE [z; stack]; _}) -> let prem = LetPr (z, mk_varE "state" "stateT", free_ids z) $ z.at in prem :: encode_stack stack | _ -> diff --git a/spectec/src/il2al/free.ml b/spectec/src/il2al/free.ml index 8b3edc17b..273b3e6fa 100644 --- a/spectec/src/il2al/free.ml +++ b/spectec/src/il2al/free.ml @@ -24,8 +24,8 @@ let rec free_exp ignore_listN e = | CvtE (e1, _, _) | UnE (_, _, e1) | LiftE e1 | LenE e1 | TheE e1 | SubE (e1, _, _) | ProjE (e1, _) -> f e1 - | DotE (e1, _, al) | CaseE (_, al, e1) | UncaseE (e1, _, al) -> - f e1 ++ free_list fa al + | DotE (e1, _) | CaseE (_, e1) | UncaseE (e1, _) -> + f e1 | BinE (_, _, e1, e2) | CmpE (_, _, e1, e2) | IdxE (e1, e2) | CompE (e1, e2) | MemE (e1, e2) | CatE (e1, e2) -> free_list f [e1; e2] | SliceE (e1, e2, e3) -> free_list f [e1; e2; e3] @@ -40,8 +40,8 @@ let rec free_exp ignore_listN e = let bound, free2 = fi iter in free1 -- bound ++ free2 -and free_expfield ignore_listN (_, al, e) = - free_list (free_arg ignore_listN) al ++ free_exp ignore_listN e +and free_expfield ignore_listN (_, e) = + free_exp ignore_listN e and free_arg ignore_listN arg = let f = free_exp ignore_listN in @@ -54,13 +54,12 @@ and free_arg ignore_listN arg = and free_path ignore_listN p = let f = free_exp ignore_listN in let fp = free_path ignore_listN in - let fa = free_arg ignore_listN in match p.it with | RootP -> empty | IdxP (p1, e) -> fp p1 ++ f e | SliceP (p1, e1, e2) -> fp p1 ++ f e1 ++ f e2 - | DotP (p1, _, al) -> fp p1 ++ free_list fa al + | DotP (p1, _) -> fp p1 and free_iterexp ignore_listN (iter, xes) = let f = free_exp ignore_listN in diff --git a/spectec/src/il2al/il2al_util.ml b/spectec/src/il2al/il2al_util.ml index 30ae84708..72e1826c4 100644 --- a/spectec/src/il2al/il2al_util.ml +++ b/spectec/src/il2al/il2al_util.ml @@ -52,7 +52,7 @@ let replace_lhs lhs pr = let case_of_case e = match e.it with - | CaseE (mixop, _, _) -> mixop + | CaseE (mixop, _) -> mixop | _ -> error e.at (Printf.sprintf "expected a CaseE, but got `%s`" (Il.Print.string_of_exp e)) @@ -308,7 +308,7 @@ let is_val exp = | _ -> () ); match exp.it with - | CaseE (mixop, _, _) -> ( + | CaseE (mixop, _) -> ( match List.find_opt (Il.Eq.eq_mixop mixop) !val_mixops with | Some _ -> true | None -> false diff --git a/spectec/src/il2al/il_walk.ml b/spectec/src/il2al/il_walk.ml index 02757fdaa..8c8ddf246 100644 --- a/spectec/src/il2al/il_walk.ml +++ b/spectec/src/il2al/il_walk.ml @@ -35,22 +35,22 @@ let rec transform_exp t e = | SliceE (e1, e2, e3) -> SliceE (t_exp e1, t_exp e2, t_exp e3) | UpdE (e1, p, e2) -> UpdE (t_exp e1, p, t_exp e2) | ExtE (e1, p, e2) -> ExtE (t_exp e1, p, t_exp e2) - | StrE efs -> StrE (List.map (fun (a, as_, e) -> (a, List.map (transform_arg t) as_, t_exp e)) efs) - | DotE (e1, atom, as1) -> DotE (t_exp e1, atom, List.map (transform_arg t) as1) + | StrE efs -> StrE (List.map (fun (a, e) -> (a, t_exp e)) efs) + | DotE (e1, atom) -> DotE (t_exp e1, atom) | CompE (e1, e2) -> CompE (t_exp e1, t_exp e2) | LenE e1 -> LenE (t_exp e1) | TupE es -> TupE ((List.map t_exp) es) | CallE (id, as1) -> CallE (id, List.map (transform_arg t) as1) | IterE (e1, iter) -> IterE (t_exp e1, transform_iterexp t iter) (* TODO iter *) | ProjE (e1, i) -> ProjE (t_exp e1, i) - | UncaseE (e1, op, as1) -> UncaseE (t_exp e1, op, List.map (transform_arg t) as1) + | UncaseE (e1, op) -> UncaseE (t_exp e1, op) | OptE eo -> OptE ((Option.map t_exp) eo) | TheE e1 -> TheE (t_exp e1) | ListE es -> ListE ((List.map t_exp) es) | LiftE e1 -> LiftE (t_exp e1) | CatE (e1, e2) -> CatE (t_exp e1, t_exp e2) | MemE (e1, e2) -> MemE (t_exp e1, t_exp e2) - | CaseE (mixop, as1, e1) -> CaseE (mixop, List.map (transform_arg t) as1, t_exp e1) + | CaseE (mixop, e1) -> CaseE (mixop, t_exp e1) | SubE (e1, _t1, t2) -> SubE (t_exp e1, _t1, t2) in f { e with it } diff --git a/spectec/src/il2al/translate.ml b/spectec/src/il2al/translate.ml index 1b94ae1a5..e04c6763e 100644 --- a/spectec/src/il2al/translate.ml +++ b/spectec/src/il2al/translate.ml @@ -44,17 +44,17 @@ let typ_state_arg = Il.TupT [field typ_store; field typ_frame] $ Source.no_regio let split_config (exp: Il.exp): Il.exp * Il.exp = assert(is_config exp); match exp.it with - | Il.CaseE (Mixop.(Infix (Arg (), {it = Atom.Semicolon; _}, Arg ())), _, {it = TupE [ e1; e2 ]; _}) + | Il.CaseE (Mixop.(Infix (Arg (), {it = Atom.Semicolon; _}, Arg ())), {it = TupE [ e1; e2 ]; _}) when is_state e1 -> e1, e2 - | Il.CaseE (Mixop.(Infix (Arg (), {it = Atom.Semicolon; _}, Arg ())), _, {it = TupE [ e1; e2 ]; _}) + | Il.CaseE (Mixop.(Infix (Arg (), {it = Atom.Semicolon; _}, Arg ())), {it = TupE [ e1; e2 ]; _}) when is_frame e1 -> let store = Il.StrE [] $$ e1.at % typ_store in - let state = Il.CaseE (Mixop.(Infix (Arg (), Atom.Semicolon $$ e1.at % Atom.info "", Arg ())), [], Il.TupE [ store; e1 ] $$ e1.at % typ_state_arg) $$ e1.at % typ_state in + let state = Il.CaseE (Mixop.(Infix (Arg (), Atom.Semicolon $$ e1.at % Atom.info "", Arg ())), Il.TupE [ store; e1 ] $$ e1.at % typ_state_arg) $$ e1.at % typ_state in state, e2 - | Il.CaseE (Mixop.(Infix (Arg (), {it = Atom.Semicolon; _}, Arg ())), _, {it = TupE [ e1; e2 ]; _}) + | Il.CaseE (Mixop.(Infix (Arg (), {it = Atom.Semicolon; _}, Arg ())), {it = TupE [ e1; e2 ]; _}) when is_store e1 -> let frame = Il.StrE [] $$ e1.at % typ_frame in - let state = Il.CaseE (Mixop.(Infix (Arg (), Atom.Semicolon $$ e1.at % Atom.info "", Arg ())), [], Il.TupE [ e1; frame ] $$ e1.at % typ_state_arg) $$ e1.at % typ_state in + let state = Il.CaseE (Mixop.(Infix (Arg (), Atom.Semicolon $$ e1.at % Atom.info "", Arg ())), Il.TupE [ e1; frame ] $$ e1.at % typ_state_arg) $$ e1.at % typ_state in state, e2 | _ -> error exp.at (sprintf "can not recognize `%s` as a `config` expression" (Il.Print.string_of_exp exp)) @@ -62,7 +62,7 @@ let split_config (exp: Il.exp): Il.exp * Il.exp = let split_state (exp: Il.exp): Il.exp * Il.exp = assert(is_state exp); match exp.it with - | Il.CaseE (Mixop.(Infix (Arg (), {it = Atom.Semicolon; _}, Arg ())), _, {it = TupE [ e1; e2 ]; _}) + | Il.CaseE (Mixop.(Infix (Arg (), {it = Atom.Semicolon; _}, Arg ())), {it = TupE [ e1; e2 ]; _}) when is_store e1 && is_frame e2 -> e1, e2 | _ -> error exp.at (sprintf "can not recognize `%s` as a `state` expression" (Il.Print.string_of_exp exp)) @@ -87,8 +87,8 @@ let is_case e = | _ -> false let args_of_case e = match e.it with - | Il.CaseE (_, _, { it = Il.TupE exps; _ }) -> exps - | Il.CaseE (_, _, exp) -> [ exp ] + | Il.CaseE (_, { it = Il.TupE exps; _ }) -> exps + | Il.CaseE (_, exp) -> [ exp ] | _ -> error e.at (sprintf "cannot get arguments of case expression `%s`" (Il.Print.string_of_exp e)) let is_simple_separator = function @@ -146,7 +146,7 @@ let rec is_wasm_value e = (* TODO: use hint? *) match e.it with | Il.SubE (e, _, _) -> is_wasm_value e - | Il.CaseE (op, _, _) when + | Il.CaseE (op, _) when List.mem (case_head op) [ "CONST"; "VCONST"; @@ -198,7 +198,7 @@ and translate_exp exp = | Il.IterE (inner_exp, iterexp) -> iterE (translate_exp inner_exp, translate_iterexp iterexp) ~at ~note (* property access *) - | Il.DotE (inner_exp, ({it = Atom _; _} as atom), _) -> + | Il.DotE (inner_exp, ({it = Atom _; _} as atom)) -> accE (translate_exp inner_exp, dotP atom) ~at ~note (* concatenation of records *) | Il.CompE (exp1, exp2) -> compE (translate_exp exp1, translate_exp exp2) ~at ~note @@ -237,7 +237,7 @@ and translate_exp exp = (* Record expression *) | Il.StrE expfields -> let f acc = function - | {it = Atom.Atom _; _} as atom, _, fieldexp -> + | {it = Atom.Atom _; _} as atom, fieldexp -> let expr = translate_exp fieldexp in Record.add atom expr acc | _ -> error_exp exp "AL record expression" @@ -245,7 +245,7 @@ and translate_exp exp = let record = List.fold_left f Record.empty expfields in strE record ~at ~note (* CaseE *) - | Il.CaseE (op, _, e) -> ( + | Il.CaseE (op, e) -> ( let exps = match e.it with | TupE exps -> exps @@ -267,7 +267,7 @@ and translate_exp exp = else error_exp exp "arity mismatch for CaseE mixop and args" ) - | Il.UncaseE (e, op, _) -> + | Il.UncaseE (e, op) -> (match op with | Mixop.Arg () -> translate_exp e | _ -> yetE (Il.Print.string_of_exp exp) ~at ~note @@ -304,7 +304,7 @@ and translate_path path = | Il.RootP -> [] | Il.IdxP (p, e) -> (translate_path' p) @ [ idxP (translate_exp e) ~at ] | Il.SliceP (p, e1, e2) -> (translate_path' p) @ [ sliceP (translate_exp e1, translate_exp e2) ~at ] - | Il.DotP (p, ({it = Atom _; _} as atom), _) -> + | Il.DotP (p, ({it = Atom _; _} as atom)) -> (translate_path' p) @ [ dotP atom ~at ] | _ -> assert false in @@ -319,12 +319,12 @@ and translate_iterexp (iter, xes) = let insert_assert exp = let at = exp.at in match exp.it with - | Il.CaseE (op, _, _) when List.mem (case_head op) context_names -> + | Il.CaseE (op, _) when List.mem (case_head op) context_names -> assertI (contextKindE (atom_of_name (case_head op) "evalctx") ~note:boolT) ~at:at | Il.IterE (_, (Il.ListN (e, None), _)) -> assertI (topValuesE (translate_exp e) ~at ~note:boolT) ~at:at | Il.IterE (_, (Il.List, _)) -> nopI () ~at:at - | Il.CaseE (op, _, { it = Il.TupE (ty' :: _); _ }) + | Il.CaseE (op, { it = Il.TupE (ty' :: _); _ }) when case_head op = "CONST" -> assertI (topValueE (Some (translate_exp ty')) ~note:boolT) ~at:at | _ -> @@ -426,7 +426,7 @@ let rec translate_rhs exp = let at = exp.at in match exp.it with (* Trap *) - | Il.CaseE (op, _, _) when case_head op = "TRAP" -> [ trapI () ~at ] + | Il.CaseE (op, _) when case_head op = "TRAP" -> [ trapI () ~at ] (* Context *) | _ when is_context exp -> translate_context_rhs exp (* Config *) @@ -1042,7 +1042,7 @@ let to_frame_instr r = let rec e_to_frame_instr e = match e with - | {it = Il.Ast.CaseE (Mixop.(Infix (Arg (), {it = Semicolon; _}, Arg ())), _, {it = TupE [lhs; rhs]; _}); _} -> + | {it = Il.Ast.CaseE (Mixop.(Infix (Arg (), {it = Semicolon; _}, Arg ())), {it = TupE [lhs; rhs]; _}); _} -> let i = e_to_frame_instr lhs in if i = [] then e_to_frame_instr rhs else i | {it = Il.Ast.VarE _; note = {it = Il.Ast.VarT ({it = "frame"; _}, _); _}; _} -> @@ -1102,7 +1102,7 @@ let translate_context ctx = let at = ctx.at in match ctx.it with - | Il.CaseE (case, _, { it = Il.TupE args; _ }) when List.mem (case_head case) context_names -> + | Il.CaseE (case, { it = Il.TupE args; _ }) when List.mem (case_head case) context_names -> let atom = Option.get (Mixop.head case) in let destruct = caseE (case, List.map translate_exp args) ~note:evalctxT ~at in [ diff --git a/spectec/src/il2al/unify.ml b/spectec/src/il2al/unify.ml index 190005c3f..fba8cba1c 100644 --- a/spectec/src/il2al/unify.ml +++ b/spectec/src/il2al/unify.ml @@ -122,10 +122,10 @@ let rec overlap env e1 e2 = if eq_exp e1 e2 then e1 else UpdE (overlap env e1 e2, path1, overlap env e1' e2') |> replace_it | ExtE (e1, path1, e1'), ExtE (e2, path2, e2') when eq_path path1 path2 -> ExtE (overlap env e1 e2, path1, overlap env e1' e2') |> replace_it - | StrE efs1, StrE efs2 when List.map (fun (a, _, _) -> a) efs1 = List.map (fun (a, _, _) -> a) efs2 -> - StrE (List.map2 (fun (a1, as1, e1) (_, as2, e2) -> (a1, List.map2 (overlap_arg env) as1 as2, overlap env e1 e2)) efs1 efs2) |> replace_it - | DotE (e1, atom1, as1), DotE (e2, atom2, as2) when eq_atom atom1 atom2 -> - DotE (overlap env e1 e2, atom1, List.map2 (overlap_arg env) as1 as2) |> replace_it + | StrE efs1, StrE efs2 when List.map (fun (a, _) -> a) efs1 = List.map (fun (a, _) -> a) efs2 -> + StrE (List.map2 (fun (a1, e1) (_, e2) -> (a1, overlap env e1 e2)) efs1 efs2) |> replace_it + | DotE (e1, atom1), DotE (e2, atom2) when eq_atom atom1 atom2 -> + DotE (overlap env e1 e2, atom1) |> replace_it | CompE (e1, e1'), CompE (e2, e2') -> CompE (overlap env e1 e2, overlap env e1' e2') |> replace_it | LenE e1, LenE e2 -> @@ -138,8 +138,8 @@ let rec overlap env e1 e2 = if eq_exp e1 e2 then e1 else IterE (overlap env e1 e2, itere1) |> replace_it | ProjE (e1, i1), ProjE (e2, i2) when i1 = i2 -> ProjE (overlap env e1 e2, i1) |> replace_it - | UncaseE (e1, op1, as1), UncaseE (e2, op2, as2) when eq_mixop op1 op2 -> - UncaseE (overlap env e1 e2, op1, List.map2 (overlap_arg env) as1 as2) |> replace_it + | UncaseE (e1, op1), UncaseE (e2, op2) when eq_mixop op1 op2 -> + UncaseE (overlap env e1 e2, op1) |> replace_it | OptE (Some e1), OptE (Some e2) -> OptE (Some (overlap env e1 e2)) |> replace_it | TheE e1, TheE e2 -> @@ -152,8 +152,8 @@ let rec overlap env e1 e2 = if eq_exp e1 e2 then e1 else CatE (overlap env e1 e2, overlap env e1' e2') |> replace_it | MemE (e1, e1'), MemE (e2, e2') -> MemE (overlap env e1 e2, overlap env e1' e2') |> replace_it - | CaseE (mixop1, as1, e1), CaseE (mixop2, as2, e2) when eq_mixop mixop1 mixop2 -> - CaseE (mixop1, List.map2 (overlap_arg env) as1 as2, overlap env e1 e2) |> replace_it + | CaseE (mixop1, e1), CaseE (mixop2, e2) when eq_mixop mixop1 mixop2 -> + CaseE (mixop1, overlap env e1 e2) |> replace_it | SubE (e1, typ1, typ1'), SubE (e2, typ2, typ2') when eq_typ typ1 typ2 && eq_typ typ1' typ2' -> SubE (overlap env e1 e2, typ1, typ1') |> replace_it (* HARDCODE: Prevent vals overlapped into instr *) @@ -235,13 +235,13 @@ let rec collect_unified template e = if eq_exp template e then [], [] else | CompE (e1, e1'), CompE (e2, e2') | CatE (e1, e1'), CatE (e2, e2') | MemE (e1, e1'), MemE (e2, e2') -> pairwise_concat (collect_unified e1 e2) (collect_unified e1' e2') - | DotE (e1, _, as1), DotE (e2, _, as2) - | UncaseE (e1, _, as1), UncaseE (e2, _, as2) - | CaseE (_, as1, e1), CaseE (_, as2, e2) -> pairwise_concat (collect_unified e1 e2) (collect_unified_args as1 as2) + | DotE (e1, _), DotE (e2, _) + | UncaseE (e1, _), UncaseE (e2, _) + | CaseE (_, e1), CaseE (_, e2) -> collect_unified e1 e2 | SliceE (e1, e1', e1''), SliceE (e2, e2', e2'') -> pairwise_concat (pairwise_concat (collect_unified e1 e2) (collect_unified e1' e2')) (collect_unified e1'' e2'') | StrE efs1, StrE efs2 -> - List.fold_left2 (fun acc (_, as1, e1) (_, as2, e2) -> pairwise_concat acc (pairwise_concat (collect_unified e1 e2) (collect_unified_args as1 as2))) ([], []) efs1 efs2 + List.fold_left2 (fun acc (_, e1) (_, e2) -> pairwise_concat acc (collect_unified e1 e2)) ([], []) efs1 efs2 | TupE es1, TupE es2 | ListE es1, ListE es2 -> List.fold_left2 (fun acc e1 e2 -> pairwise_concat acc (collect_unified e1 e2)) ([], []) es1 es2 diff --git a/spectec/src/middlend/sideconditions.ml b/spectec/src/middlend/sideconditions.ml index 43a616b77..51252340e 100644 --- a/spectec/src/middlend/sideconditions.ml +++ b/spectec/src/middlend/sideconditions.ml @@ -96,13 +96,12 @@ let rec t_exp env e : prem list = -> t_exp env exp1 @ t_path env path @ t_exp env exp2 | CallE (_, args) -> List.concat_map (t_arg env) args - | CaseE (_, args, exp) - | UncaseE (exp, _, args) - | DotE (exp, _, args) - -> List.concat_map (t_arg env) args @ t_exp env exp + | CaseE (_, exp) + | UncaseE (exp, _) + | DotE (exp, _) + -> t_exp env exp | StrE fields - -> List.concat_map (fun (_, args, exp) -> - List.concat_map (t_arg env) args @ t_exp env exp) fields + -> List.concat_map (fun (_, exp) -> t_exp env exp) fields | TupE es | ListE es -> List.concat_map (t_exp env) es | IterE (e1, iterexp) @@ -121,7 +120,7 @@ and t_path env path = match path.it with | RootP -> [] | IdxP (path, e) -> t_path env path @ t_exp env e | SliceP (path, e1, e2) -> t_path env path @ t_exp env e1 @ t_exp env e2 - | DotP (path, _, args) -> t_path env path @ List.concat_map (t_arg env) args + | DotP (path, _) -> t_path env path and t_arg env arg = match arg.it with | ExpA exp -> t_exp env exp diff --git a/spectec/src/middlend/sub.ml b/spectec/src/middlend/sub.ml index 2c0180853..fc3efee89 100644 --- a/spectec/src/middlend/sub.ml +++ b/spectec/src/middlend/sub.ml @@ -148,8 +148,8 @@ and t_exp' env = function | SliceE (exp1, exp2, exp3) -> SliceE (t_exp env exp1, t_exp env exp2, t_exp env exp3) | UpdE (exp1, path, exp2) -> UpdE (t_exp env exp1, t_path env path, t_exp env exp2) | ExtE (exp1, path, exp2) -> ExtE (t_exp env exp1, t_path env path, t_exp env exp2) - | StrE fields -> StrE (List.map (fun (a, args, e) -> a, t_args env args, t_exp env e) fields) - | DotE (e, a, args) -> DotE (t_exp env e, a, t_args env args) + | StrE fields -> StrE (List.map (fun (a, e) -> a, t_exp env e) fields) + | DotE (e, a) -> DotE (t_exp env e, a) | CompE (exp1, exp2) -> CompE (t_exp env exp1, t_exp env exp2) | LiftE exp -> LiftE (t_exp env exp) | LenE exp -> LenE (t_exp env exp) @@ -157,14 +157,14 @@ and t_exp' env = function | CallE (a, args) -> CallE (a, t_args env args) | IterE (e, iterexp) -> IterE (t_exp env e, t_iterexp env iterexp) | ProjE (e, i) -> ProjE (t_exp env e, i) - | UncaseE (e, mixop, args) -> UncaseE (t_exp env e, mixop, t_args env args) + | UncaseE (e, mixop) -> UncaseE (t_exp env e, mixop) | OptE None -> OptE None | OptE (Some exp) -> OptE (Some exp) | TheE exp -> TheE exp | ListE es -> ListE (List.map (t_exp env) es) | CatE (exp1, exp2) -> CatE (t_exp env exp1, t_exp env exp2) | MemE (exp1, exp2) -> MemE (t_exp env exp1, t_exp env exp2) - | CaseE (mixop, args, e) -> CaseE (mixop, t_args env args, t_exp env e) + | CaseE (mixop, e) -> CaseE (mixop, t_exp env e) | CvtE (exp, t1, t2) -> CvtE (t_exp env exp, t1, t2) | SubE (e, t1, t2) -> SubE (e, t1, t2) @@ -179,7 +179,7 @@ and t_path' env = function | RootP -> RootP | IdxP (path, e) -> IdxP (t_path env path, t_exp env e) | SliceP (path, e1, e2) -> SliceP (t_path env path, t_exp env e1, t_exp env e2) - | DotP (path, a, args) -> DotP (t_path env path, a, t_args env args) + | DotP (path, a) -> DotP (t_path env path, a) and t_path env x = { x with it = t_path' env x.it; note = t_typ env x.note } @@ -334,14 +334,14 @@ let insert_injections env (def : def) : def list = in let xe = TupE xes $$ no_region % arg_typ in DefD (params, - [ExpA (CaseE (a, [], xe) $$ no_region % real_ty) $ no_region], - CaseE (a, [], xe) $$ no_region % sup_ty, []) $ no_region + [ExpA (CaseE (a, xe) $$ no_region % real_ty) $ no_region], + CaseE (a, xe) $$ no_region % sup_ty, []) $ no_region | _ -> let x = "x" $ no_region in let xe = VarE x $$ no_region % arg_typ in DefD ([ExpP (x, arg_typ) $ x.at], - [ExpA (CaseE (a, [], xe) $$ no_region % real_ty) $ no_region], - CaseE (a, [], xe) $$ no_region % sup_ty, []) $ no_region + [ExpA (CaseE (a, xe) $$ no_region % real_ty) $ no_region], + CaseE (a, xe) $$ no_region % sup_ty, []) $ no_region ) cases_sub in DecD (name, params_sub @ params_sup' @ [ExpP ("_" $ no_region, sub_ty) $ no_region], sup_ty, clauses) $ no_region ) pairs diff --git a/spectec/src/middlend/totalize.ml b/spectec/src/middlend/totalize.ml index b4495e351..2ca9ef637 100644 --- a/spectec/src/middlend/totalize.ml +++ b/spectec/src/middlend/totalize.ml @@ -86,15 +86,15 @@ and t_exp' env = function | SliceE (exp1, exp2, exp3) -> SliceE (t_exp env exp1, t_exp env exp2, t_exp env exp3) | UpdE (exp1, path, exp2) -> UpdE (t_exp env exp1, t_path env path, t_exp env exp2) | ExtE (exp1, path, exp2) -> ExtE (t_exp env exp1, t_path env path, t_exp env exp2) - | StrE fields -> StrE (List.map (fun (a, args, e) -> a, List.map (t_arg env) args, t_exp env e) fields) - | DotE (e, a, args) -> DotE (t_exp env e, a, List.map (t_arg env) args) + | StrE fields -> StrE (List.map (fun (a, e) -> a, t_exp env e) fields) + | DotE (e, a) -> DotE (t_exp env e, a) | CompE (exp1, exp2) -> CompE (t_exp env exp1, t_exp env exp2) | LenE exp -> LenE (t_exp env exp) | TupE es -> TupE (List.map (t_exp env) es) | CallE (a, args) -> CallE (a, List.map (t_arg env) args) | IterE (e, iterexp) -> IterE (t_exp env e, t_iterexp env iterexp) | ProjE (e, i) -> ProjE (t_exp env e, i) - | UncaseE (e, mixop, args) -> UncaseE (t_exp env e, mixop, List.map (t_arg env) args) + | UncaseE (e, mixop) -> UncaseE (t_exp env e, mixop) | OptE None -> OptE None | OptE (Some exp) -> OptE (Some (t_exp env exp)) | TheE exp -> TheE (t_exp env exp) @@ -102,7 +102,7 @@ and t_exp' env = function | LiftE exp -> LiftE (t_exp env exp) | CatE (exp1, exp2) -> CatE (t_exp env exp1, t_exp env exp2) | MemE (exp1, exp2) -> MemE (t_exp env exp1, t_exp env exp2) - | CaseE (mixop, args, e) -> CaseE (mixop, List.map (t_arg env) args, t_exp env e) + | CaseE (mixop, e) -> CaseE (mixop, t_exp env e) | CvtE (exp, t1, t2) -> CvtE (t_exp env exp, t1, t2) | SubE (exp, t1, t2) -> SubE (t_exp env exp, t_typ env t1, t_typ env t2) @@ -117,7 +117,7 @@ and t_path' env = function | RootP -> RootP | IdxP (path, e) -> IdxP (t_path env path, t_exp env e) | SliceP (path, e1, e2) -> SliceP (t_path env path, t_exp env e1, t_exp env e2) - | DotP (path, a, args) -> DotP (t_path env path, a, List.map (t_arg env) args) + | DotP (path, a) -> DotP (t_path env path, a) and t_path env x = { x with it = t_path' env x.it; note = t_typ env x.note } diff --git a/spectec/src/middlend/unthe.ml b/spectec/src/middlend/unthe.ml index 2d3d5c9a1..7f4e02463 100644 --- a/spectec/src/middlend/unthe.ml +++ b/spectec/src/middlend/unthe.ml @@ -117,7 +117,6 @@ and t_exp2 n = phrase t_exp' n and t_e n x k = unary t_exp n x k and t_ee n x k = binary t_exp t_exp n x k -and t_eas n x k = binary t_exp (fun n xs -> t_list t_arg n xs Fun.id) n x k and t_eee n x k = ternary t_exp t_exp t_exp n x k and t_epe n x k = ternary t_exp t_path t_exp n x k @@ -126,15 +125,15 @@ and t_exp' n e : eqns * exp' = | VarE _ | BoolE _ | NumE _ | TextE _ | OptE None -> [], e | UnE (uo, nto, exp) -> t_e n exp (fun exp' -> UnE (uo, nto, exp')) - | DotE (exp, a, args) -> t_eas n (exp, args) (fun (exp', args') -> DotE (exp', a, args')) + | DotE (exp, a) -> t_e n exp (fun exp' -> DotE (exp', a)) | LenE exp -> t_e n exp (fun exp' -> LenE exp') | CallE (f, args) -> t_list t_arg n args (fun args' -> CallE (f, args')) | ProjE (exp, i) -> t_e n exp (fun exp' -> ProjE (exp', i)) - | UncaseE (exp, mo, args) -> t_eas n (exp, args) (fun (exp', args') -> UncaseE (exp', mo, args')) + | UncaseE (exp, mo) -> t_e n exp (fun exp' -> UncaseE (exp', mo)) | OptE (Some exp) -> t_e n exp (fun exp' -> OptE (Some exp')) | TheE exp -> t_e n exp (fun exp' -> TheE exp') | LiftE exp -> t_e n exp (fun exp' -> LiftE exp') - | CaseE (mixop, args, exp) -> t_eas n (exp, args) (fun (exp', args') -> CaseE (mixop, args', exp')) + | CaseE (mixop, exp) -> t_e n exp (fun exp' -> CaseE (mixop, exp')) | CvtE (exp, a, b) -> t_e n exp (fun exp' -> CvtE (exp', a, b)) | SubE (exp, a, b) -> t_e n exp (fun exp' -> SubE (exp', a, b)) @@ -161,8 +160,8 @@ and t_exp' n e : eqns * exp' = let iterexp''' = update_iterexp_vars (Il.Free.free_exp e') iterexp'' in eqns1' @ eqns2, IterE (e', iterexp''') -and t_field n ((a, args, e) : expfield) = - binary (fun n xs -> t_list t_arg n xs Fun.id) t_exp n (args, e) (fun (args', e') -> (a, args', e')) +and t_field n ((a, e) : expfield) = + unary t_exp n e (fun e' -> (a, e')) and t_iterexp n iterexp = binary t_iter t_iterparams n iterexp Fun.id @@ -183,7 +182,7 @@ and t_path' n path = match path with | RootP -> [], path | IdxP (path, e) -> binary t_path t_exp n (path, e) (fun (path', e') -> IdxP (path', e')) | SliceP (path, e1, e2) -> ternary t_path t_exp t_exp n (path, e1, e2) (fun (path', e1', e2') -> SliceP (path', e1', e2')) - | DotP (path, a, args) -> binary t_path (fun n xs -> t_list t_arg n xs Fun.id) n (path, args) (fun (path', args') -> DotP (path', a, args')) + | DotP (path, a) -> unary t_path n path (fun path' -> DotP (path', a)) and t_arg n = phrase t_arg' n From 4c29c3b0e4211395f8d492138c24458de9b2bcfc Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Mon, 19 Jan 2026 16:26:27 +0100 Subject: [PATCH 016/235] Reorder field/case quantifiers --- spectec/src/al/valid.ml | 10 +- spectec/src/backend-ast/print.ml | 8 +- spectec/src/frontend/elab.ml | 82 +- spectec/src/il/ast.ml | 4 +- spectec/src/il/eq.ml | 10 +- spectec/src/il/eval.ml | 16 +- spectec/src/il/free.ml | 8 +- spectec/src/il/fresh.ml | 6 +- spectec/src/il/fresh.mli | 2 + spectec/src/il/iter.ml | 14 +- spectec/src/il/print.ml | 11 +- spectec/src/il/subst.ml | 27 +- spectec/src/il/subst.mli | 2 - spectec/src/il/valid.ml | 28 +- spectec/src/middlend/sub.ml | 10 +- spectec/src/middlend/totalize.ml | 8 +- spectec/test-frontend/TEST.md | 71675 ++++++++++------------------- 17 files changed, 23445 insertions(+), 48476 deletions(-) diff --git a/spectec/src/al/valid.ml b/spectec/src/al/valid.ml index a202345b8..fe90248c0 100644 --- a/spectec/src/al/valid.ml +++ b/spectec/src/al/valid.ml @@ -131,7 +131,7 @@ let rec unify_deftyp_opt (deftyp: deftyp) : typ option = | StructT _ -> None | VariantT typcases when List.for_all (fun (mixop', _, _) -> is_trivial_mixop mixop') typcases -> - typcases |> List.map (fun (_mixop, (_bs, typ, _ps), _hs) -> typ) |> unify_typs_opt + typcases |> List.map (fun (_mixop, (typ, _qs, _ps), _hs) -> typ) |> unify_typs_opt | _ -> None and unify_deftyps_opt : deftyp list -> typ option = function @@ -229,7 +229,7 @@ let rec get_typfields_of_inst (inst: inst) : typfield list = match dt.it with | StructT typfields -> typfields | AliasT typ -> get_typfields typ - | VariantT [mixop, (_, typ, _), _] when is_trivial_mixop mixop -> + | VariantT [mixop, (typ, _, _), _] when is_trivial_mixop mixop -> get_typfields typ (* TODO: some variants of struct type *) | VariantT _ -> [] @@ -282,7 +282,7 @@ let check_evalctx source typ = | _ -> error_mismatch source typ (varT "evalctx") let check_field source source_typ expr_record typfield = - let atom, (_, typ, _), _ = typfield in + let atom, (typ, _, _), _ = typfield in (* TODO: Use record api *) let f e = e |> fst |> Atom.eq atom in match List.find_opt f expr_record with @@ -446,7 +446,7 @@ let access (source: source) (typ: typ) (path: path) : typ = | DotP atom -> let typfields = get_typfields typ in match List.find_opt (fun (field, _, _) -> Atom.eq field atom) typfields with - | Some (_, (_, typ', _), _) -> typ' + | Some (_, (typ', _, _), _) -> typ' | None -> error_field source typ atom @@ -571,7 +571,7 @@ and valid_expr env (expr: expr) : unit = | _ -> List.iter (valid_expr env) exprs; let tcs = get_typcases source expr.note in - let _binds, typ, _prems = find_case source tcs op in + let typ, _qs, _prems = find_case source tcs op in check_case source exprs typ; ) | CallE (id, args) -> diff --git a/spectec/src/backend-ast/print.ml b/spectec/src/backend-ast/print.ml index 2881cfe17..924e6901b 100644 --- a/spectec/src/backend-ast/print.ml +++ b/spectec/src/backend-ast/print.ml @@ -86,11 +86,11 @@ and deftyp dt = and typbind (x, t) = Node ("bind", [id x; typ t]) -and typfield (at, (ps, t, prs), _hints) = - Node ("field", mixop (Mixop.Atom at) :: List.map param ps @ typ t :: List.map prem prs) +and typfield (at, (t, qs, prs), _hints) = + Node ("field", mixop (Mixop.Atom at) :: typ t :: List.map param qs @ List.map prem prs) -and typcase (op, (ps, t, prs), _hints) = - Node ("case", mixop op :: List.map param ps @ typ t :: List.map prem prs) +and typcase (op, (t, qs, prs), _hints) = + Node ("case", mixop op :: typ t :: List.map param qs @ List.map prem prs) (* Expressions *) diff --git a/spectec/src/frontend/elab.ml b/spectec/src/frontend/elab.ml index 83836a881..dea6feaaf 100644 --- a/spectec/src/frontend/elab.ml +++ b/spectec/src/frontend/elab.ml @@ -319,19 +319,6 @@ let bound_env env = } -let bind_quant env q = - match q.it with - | Il.ExpP (x, t) -> env.vars <- bind "variable" env.vars x t - | Il.TypP x -> env.typs <- bind "syntax type" env.typs x ([], Opaque) - | Il.DefP (x, ps, t) -> env.defs <- bind "definition" env.defs x (ps, t, []) - | Il.GramP (x, ps, t) -> env.grams <- bind "grammar" env.grams x (ps, t, [], None) - -let refresh_quants env qs = - let qs', s = Il.Fresh.refresh_quants qs in - List.iter (bind_quant env) qs'; - qs', s - - (* let vars env outer_dims = Map.union (fun _ _ y -> Some y) @@ -773,10 +760,8 @@ let expand_notation env t = let as_ = List.map il_arg_of_param ps in Il.Eval.(match_list match_arg (to_il_env env) Il.Subst.empty as' as_) |> Option.map (fun s -> - let mixop, (qs, t, _prems), _ = Il.Subst.subst_typcase s tc in - let qs', _s' = refresh_quants env qs in - let t' = (*Il.Subst.subst_typ s'*) t in - qs', t', mixop, Mixop.apply mixop (untup_typ' t') + let mixop, (t, _qs, _prems), _ = Il.Subst.subst_typcase s tc in + t, mixop, Mixop.apply mixop (untup_typ' t) ) | _, _ -> None ) @@ -873,7 +858,7 @@ let as_iter_notation_typ_opt env t : (typ * iter) option = let as_empty_notation_typ_opt env t : unit option = match expand_notation env t with - | Some (_, _, _, Seq []) -> Some () + | Some (_, _, Seq []) -> Some () | _ -> None @@ -916,17 +901,13 @@ let rec as_cat_typ phrase env dir t at : unit attempt = | Il.StructT tfs, dots -> if dots = Dots then error at "used record type is only partially defined at this point"; - iter_attempt (fun (_, (qs, t, _), _) -> - let env' = if qs = [] then env else local_env env in - List.iter (bind_quant env') qs; - as_cat_typ phrase env' dir t at - ) tfs + iter_attempt (fun (_, (t, _, _), _) -> as_cat_typ phrase env dir t at) tfs | _ -> fail at (phrase ^ "'s type " ^ typ_string env t ^ " is not concatenable") -let as_notation_typ phrase env dir t at : (Il.quant list * Il.typ * _ Mixop.mixop * notation) attempt = +let as_notation_typ phrase env dir t at : (Il.typ * _ Mixop.mixop * notation) attempt = match expand_notation env t with - | Some x -> Ok x + | Some not -> Ok not | _ -> fail_dir_typ env at phrase dir t "_ ... _" let is_x_typ as_x_typ env t = @@ -1225,9 +1206,8 @@ and elab_typ_definition env outer_dims tid (t : typ) : dots * Il.deftyp * dots = let nt = match t'.it with Il.NumT nt -> nt | _ -> assert false in let x = "i" $ t.at in let eid' = Il.VarE x $$ t.at % t' in - let qs = [Il.ExpP (x, t') $ t.at] in let prems' = [Il.IfPr (fe' eid' nt) $ t.at] in - let tc' = (Mixop.Arg (), (qs, Il.TupT [(x, t')] $ t.at, prems'), []) in + let tc' = (Mixop.Arg (), (Il.TupT [(x, t')] $ t.at, [], prems'), []) in NoDots, Il.VariantT [tc'] $ t.at, NoDots | _ -> let t' = elab_typ env t in @@ -1241,7 +1221,7 @@ and typ_rep env t : Il.typ = match expand env t with | Il.VarT _ as t' -> (match expand_def env (t' $ t.at) with - | Il.VariantT [_, (_, t1, _), _], NoDots -> typ_rep env t1 + | Il.VariantT [_, (t1, _, _), _], NoDots -> typ_rep env t1 | _ -> t' $ t.at ) | Il.TupT [_, t1] -> typ_rep env t1 @@ -1249,26 +1229,26 @@ and typ_rep env t : Il.typ = and elab_typfield env outer_dims tid at (tf : typfield) : Il.typfield = let atom, (t, prems), hints = tf in - let _mixop, qs, t', prems' = elab_typ_notation env outer_dims tid at t prems in + let _mixop, t', qs, prems' = elab_typ_notation env outer_dims tid at t prems in let hints' = elab_hints tid "" hints in let t'' = match t'.it with | Il.TupT [(_, t1')] when prems' = [] -> t1' | _ -> t' in - (elab_atom atom tid, (qs, t'', prems'), hints') + (elab_atom atom tid, (t'', qs, prems'), hints') and elab_typcase env outer_dims tid at (tc : typcase) : Il.typcase = let _atom, (t, prems), hints = tc in - let mixop, qs, t', prems' = elab_typ_notation env outer_dims tid at t prems in + let mixop, t', qs, prems' = elab_typ_notation env outer_dims tid at t prems in let hints' = elab_hints tid "" hints in - (mixop, (qs, t', prems'), hints') + (mixop, (t', qs, prems'), hints') and elab_typcon env outer_dims tid at (tc : typcon) : Il.typcase = let (t, prems), hints = tc in - let mixop, qs, t', prems' = elab_typ_notation env outer_dims tid at t prems in + let mixop, t', qs, prems' = elab_typ_notation env outer_dims tid at t prems in let hints' = elab_hints tid tid.it hints in - (mixop, (qs, t', prems'), hints') + (mixop, (t', qs, prems'), hints') and elab_typenum env outer_dims tid (te : typenum) : Il.typ * (Il.exp -> numtyp -> Il.exp) = assert (valid_tid tid); @@ -1303,7 +1283,7 @@ and elab_typenum env outer_dims tid (te : typenum) : Il.typ * (Il.exp -> numtyp and elab_typ_notation env outer_dims tid at (t : typ) (prems : prem nl_list) : - Il.mixop * Il.quant list * Il.typ * Il.prem list = + Il.mixop * Il.typ * Il.quant list * Il.prem list = assert (valid_tid tid); let env1 = local_env env in let mixop, xts' = elab_typ_notation' env1 tid t in @@ -1324,7 +1304,7 @@ Printf.printf "--- 3 ---\n%!"; let det2 = Det.(det_list det_prem prems') in Printf.printf "--- 4 ---\n%!"; let qs = infer_quants env1 env2 dims2 det2 [] [] [] [] [] prems' at in - mixop, qs, t', prems' + mixop, t', qs, prems' (* Debug.(log_in_at "il.infer_quants" at (fun _ -> @@ -1538,7 +1518,7 @@ and infer_exp' env e : (Il.exp' * Il.typ') attempt = let* tfs, dots = as_struct_typ "expression" env Infer t1 e1.at in if dots = Dots then error e1.at "used record type is only partially defined at this point"; - let* _, (_qs, tF, prems), _ = attempt (find_field tfs atom e1.at) t1 in + let* _, (tF, _qs, prems), _ = attempt (find_field tfs atom e1.at) t1 in let e' = Il.DotE (e1', elab_atom atom (expand_id env t1)) in let e'' = if prems = [] then e' else Il.ProjE (e' $$ e.at % tF, 0) in Ok (e'', tF.it) @@ -1825,12 +1805,12 @@ and elab_expfields env tid (efs : expfield list) (tfs : Il.typfield list) (t0 : assert (valid_tid tid); match efs, tfs with | [], [] -> Ok [] - | (atom1, e)::efs2, (atom2, (_qs, tF, prems), _)::tfs2 when atom1.it = atom2.it -> + | (atom1, e)::efs2, (atom2, (tF, _qs, prems), _)::tfs2 when atom1.it = atom2.it -> let* e' = elab_exp env e tF in let* efs2' = elab_expfields env tid efs2 tfs2 t0 at in let e' = if prems = [] then e' else tup_exp' [e'] e.at in Ok ((elab_atom atom1 tid, e') :: efs2') - | _, (atom, (_qs, tF, prems), _)::tfs2 -> + | _, (atom, (tF, _qs, prems), _)::tfs2 -> let atom' = string_of_atom atom in let* e1' = cast_empty ("omitted record field `" ^ atom' ^ "`") env tF at in let e' = if prems = [] then e1' else tup_exp' [e1'] at in @@ -1868,7 +1848,7 @@ and elab_exp_iter' env (es : exp list) (t1, iter) t at : Il.exp' attempt = | _, (List1 | ListN _) -> assert false -and elab_exp_notation env tid (e : exp) (_qs, t1, mixop, not) t : Il.exp attempt = +and elab_exp_notation env tid (e : exp) (t1, mixop, not) t : Il.exp attempt = (* Convert notation into applications of mixin operators *) assert (valid_tid tid); let* es', _s = elab_exp_notation' env tid e not in @@ -2066,7 +2046,7 @@ and elab_exp_variant env tid (e : exp) (tcs : Il.typcase list) t at : Il.exp att | _ -> fail_typ env at "expression" t in let* atom = head e in - let* mixop, (_qs, tC, _prems), _ = attempt (find_case_atom tcs atom atom.at) t in + let* mixop, (tC, _, _), _ = attempt (find_case_atom tcs atom atom.at) t in let* xts = as_tup_typ "tuple" env Check tC e.at in let not = Mixop.apply mixop xts in let* es', _s = elab_exp_notation' env tid e not in @@ -2103,7 +2083,7 @@ and elab_path' env (p : path) (t : Il.typ) : (Il.path' * Il.typ) attempt = let* tfs, dots = as_struct_typ "path" env Check t1 p1.at in if dots = Dots then error p1.at "used record type is only partially defined at this point"; - let* _, (_qs, tF, _prems), _ = attempt (find_field tfs atom p1.at) t1 in + let* _, (tF, _, _), _ = attempt (find_field tfs atom p1.at) t1 in Ok (Il.DotP (p1', elab_atom atom (expand_id env t1)), tF) @@ -2118,7 +2098,7 @@ and cast_empty phrase env (t : Il.typ) at : Il.exp attempt = | Il.IterT (_, List) -> Ok (Il.ListE [] $$ at % t) | VarT _ when is_notation_typ env t -> (match expand_notation env t with - | Some (_, _, _, Mixop.Seq []) -> Ok (Il.ListE [] $$ at % t) + | Some (_, _, Mixop.Seq []) -> Ok (Il.ListE [] $$ at % t) | _ -> fail_typ env at phrase t ) (* @@ -2162,8 +2142,8 @@ and cast_exp' phrase env (e' : Il.exp) t1 t2 : Il.exp' attempt = | Il.VarT (x1, _), Il.VarT (x2, _) -> (match expand_def env t1', expand_def env t2' with - | (Il.VariantT [mixop1, (_qs1, tC1, _), _], NoDots), - (Il.VariantT [mixop2, (_qs2, tC2, _), _], NoDots) -> + | (Il.VariantT [mixop1, (tC1, _, _), _], NoDots), + (Il.VariantT [mixop2, (tC2, _, _), _], NoDots) -> if mixop1 = mixop2 then ( (* Two ConT's with the same operator can be cast pointwise *) @@ -2198,11 +2178,9 @@ and cast_exp' phrase env (e' : Il.exp) t1 t2 : Il.exp' attempt = let* () = (* Shallow breadth subtyping on variants *) match - iter_attempt (fun (mixop, (qs1, tC1, _prems1), _) -> - let* _, (qs2, tC2, _prems2), _ = - attempt (find_case tcs2 mixop t1.at) t2 in - (* TODO(2, rossberg): this should take alpha-equivalence into account *) - if Il.Eq.(eq_list eq_param qs1 qs2) && equiv_typ env tC1 tC2 then + iter_attempt (fun (mixop, (tC1, _, _), _) -> + let* _, (tC2, _, _), _ = attempt (find_case tcs2 mixop t1.at) t2 in + if equiv_typ env tC1 tC2 then Ok () else fail_mixop e'.at mixop t1 "type mismatch for case" @@ -2226,7 +2204,7 @@ and cast_exp' phrase env (e' : Il.exp) t1 t2 : Il.exp' attempt = | Il.VarT _, _ -> (match expand_def env t1' with - | Il.VariantT [mixop1, (_qs1, tC1, _), _], NoDots -> + | Il.VariantT [mixop1, (tC1, _, _), _], NoDots -> choice env [ (fun env -> (* A ConT can always be cast to a (singleton) iteration *) @@ -2264,7 +2242,7 @@ and cast_exp' phrase env (e' : Il.exp) t1 t2 : Il.exp' attempt = | _, Il.VarT _ -> (match expand_def env t2' with - | Il.VariantT [mixop2, (_qs2, tC2, _), _], NoDots -> + | Il.VariantT [mixop2, (tC2, _, _), _], NoDots -> (* A ConT payload can be cast to the ConT *) (match expand env tC2 with | Il.TupT [_, t21'] -> diff --git a/spectec/src/il/ast.ml b/spectec/src/il/ast.ml index 4fda78c45..2360d83af 100644 --- a/spectec/src/il/ast.ml +++ b/spectec/src/il/ast.ml @@ -40,8 +40,8 @@ and deftyp' = | StructT of typfield list (* record type *) | VariantT of typcase list (* variant type *) -and typfield = atom * (quant list * typ * prem list) * hint list (* record field *) -and typcase = mixop * (quant list * typ * prem list) * hint list (* variant case *) +and typfield = atom * (typ * quant list * prem list) * hint list (* record field *) +and typcase = mixop * (typ * quant list * prem list) * hint list (* variant case *) (* Expressions *) diff --git a/spectec/src/il/eq.ml b/spectec/src/il/eq.ml index 05d0a0e52..fe6d6f54e 100644 --- a/spectec/src/il/eq.ml +++ b/spectec/src/il/eq.ml @@ -54,11 +54,13 @@ and eq_deftyp dt1 dt2 = | VariantT tcs1, VariantT tcs2 -> eq_list eq_typcase tcs1 tcs2 | _, _ -> false -and eq_typfield (atom1, (_binds1, t1, prems1), _) (atom2, (_binds2, t2, prems2), _) = - eq_atom atom1 atom2 && eq_typ t1 t2 && eq_list eq_prem prems1 prems2 +and eq_typfield (atom1, (t1, qs1, prems1), _) (atom2, (t2, qs2, prems2), _) = + eq_atom atom1 atom2 && eq_typ t1 t2 && + eq_list eq_param qs1 qs2 && eq_list eq_prem prems1 prems2 -and eq_typcase (op1, (_binds1, t1, prems1), _) (op2, (_binds2, t2, prems2), _) = - eq_mixop op1 op2 && eq_typ t1 t2 && eq_list eq_prem prems1 prems2 +and eq_typcase (op1, (t1, qs1, prems1), _) (op2, (t2, qs2, prems2), _) = + eq_mixop op1 op2 && eq_typ t1 t2 && + eq_list eq_param qs1 qs2 && eq_list eq_prem prems1 prems2 (* Expressions *) diff --git a/spectec/src/il/eval.ml b/spectec/src/il/eval.ml index ac6da6e9a..74a2de6f6 100644 --- a/spectec/src/il/eval.ml +++ b/spectec/src/il/eval.ml @@ -921,16 +921,16 @@ and sub_typ env t1 t2 = | VarT _, VarT _ -> (match (reduce_typdef env t1').it, (reduce_typdef env t2').it with | StructT tfs1, StructT tfs2 -> - List.for_all (fun (atom, (_ps2, t2, prems2), _) -> + List.for_all (fun (atom, (t2, _qs2, prems2), _) -> match find_field tfs1 atom with - | Some (_ps1, t1, prems1) -> + | Some (t1, _qs1, prems1) -> sub_typ env t1 t2 && sub_prems env prems1 prems2 | None -> false ) tfs2 | VariantT tcs1, VariantT tcs2 -> - List.for_all (fun (mixop, (_ps1, t1, prems1), _) -> + List.for_all (fun (mixop, (t1, _qs1, prems1), _) -> match find_case tcs2 mixop with - | Some (_ps2, t2, prems2) -> + | Some (t2, _qs2, prems2) -> sub_typ env t1 t2 && sub_prems env prems1 prems2 | None -> false ) tcs1 @@ -965,16 +965,16 @@ and disj_typ env t1 t2 = (match (reduce_typdef env t1).it, (reduce_typdef env t2).it with | StructT tfs1, StructT tfs2 -> unordered (atoms tfs1) (atoms tfs2) || - List.exists (fun (atom, (_ps2, t2, _prems2), _) -> + List.exists (fun (atom, (t2, _qs2, _prems2), _) -> match find_field tfs1 atom with - | Some (_ps1, t1, _prems1) -> disj_typ env t1 t2 + | Some (t1, _qs1, _prems1) -> disj_typ env t1 t2 | None -> true ) tfs2 | VariantT tcs1, VariantT tcs2 -> Set.disjoint (mixops tcs1) (mixops tcs2) || - List.exists (fun (atom, (_ps1, t1, _prems1), _) -> + List.exists (fun (atom, (t1, _qs1, _prems1), _) -> match find_case tcs2 atom with - | Some (_ps2, t2, _prems2) -> disj_typ env t1 t2 + | Some (t2, _qs2, _prems2) -> disj_typ env t1 t2 | None -> false ) tcs1 | _, _ -> true diff --git a/spectec/src/il/free.ml b/spectec/src/il/free.ml index cb4a10704..9820ccf7c 100644 --- a/spectec/src/il/free.ml +++ b/spectec/src/il/free.ml @@ -46,10 +46,10 @@ and free_deftyp dt = | StructT tfs -> free_list free_typfield tfs | VariantT tcs -> free_list free_typcase tcs -and free_typfield (_, (qs, t, prems), _) = - free_quants qs ++ (free_typ t ++ free_prems prems -- bound_quants qs -- bound_typ t) -and free_typcase (_, (qs, t, prems), _) = - free_quants qs ++ (free_typ t ++ free_prems prems -- bound_quants qs -- bound_typ t) +and free_typfield (_, (t, qs, prems), _) = + free_typ t ++ (free_quants qs ++ (free_prems prems -- bound_quants qs) -- bound_typ t) +and free_typcase (_, (t, qs, prems), _) = + free_typ t ++ (free_quants qs ++ (free_prems prems -- bound_quants qs) -- bound_typ t) (* Expressions *) diff --git a/spectec/src/il/fresh.ml b/spectec/src/il/fresh.ml index 222eb026a..a13b3f7bf 100644 --- a/spectec/src/il/fresh.ml +++ b/spectec/src/il/fresh.ml @@ -1,4 +1,3 @@ -open Ast open Util.Source module Map = Map.Make(String) @@ -36,9 +35,7 @@ let refresh_varid = refresh_id varids let refresh_defid = refresh_id defids let refresh_gramid = refresh_id gramids -let _ = Subst.Fresh.refresh_varid := refresh_varid - - +(* let refresh_quant s q = match q.it with | ExpP (x, t) -> @@ -65,3 +62,4 @@ let refresh_quant s q = let refresh_quants qs = let s, qs' = List.fold_left_map refresh_quant Subst.empty qs in qs', s +*) diff --git a/spectec/src/il/fresh.mli b/spectec/src/il/fresh.mli index 2ce6fea07..bae8cc561 100644 --- a/spectec/src/il/fresh.mli +++ b/spectec/src/il/fresh.mli @@ -10,4 +10,6 @@ val refresh_varid : id -> id val refresh_defid : id -> id val refresh_gramid : id -> id +(* val refresh_quants : quant list -> quant list * Subst.t +*) diff --git a/spectec/src/il/iter.ml b/spectec/src/il/iter.ml index 02826645d..44b7fb80b 100644 --- a/spectec/src/il/iter.ml +++ b/spectec/src/il/iter.ml @@ -120,18 +120,18 @@ and dots _ = () and numtyp _nt = () and optyp = function #Bool.typ -> () | #Num.typ as nt -> numtyp nt -and typ ?(prems = []) t = +and typ ?(quants = []) ?(prems = []) t = visit_typ t; match t.it with | VarT (x, as_) -> typid x; args as_ | BoolT | TextT -> () | NumT nt -> numtyp nt - | TupT [] -> list prem prems + | TupT [] -> params quants; list prem prems | TupT ((x, t)::xts) -> typ t; let scope = scope_enter x t in varid x; - typ (TupT xts $ t.at) ~prems; + typ (TupT xts $ t.at) ~quants ~prems; scope_exit x scope | IterT (t1, it) -> typ t1; iter it @@ -142,10 +142,10 @@ and deftyp t = | StructT tfs -> list typfield tfs | VariantT tcs -> list typcase tcs -and typfield (at, (ps, t, prems), hs) = - atom at; params ps; typ t ~prems; hints hs -and typcase (op, (ps, t, prems), hs) = - mixop op; params ps; typ t ~prems; hints hs +and typfield (at, (t, quants, prems), hs) = + atom at; typ t ~quants ~prems; hints hs +and typcase (op, (t, quants, prems), hs) = + mixop op; typ t ~quants ~prems; hints hs (* Expressions *) diff --git a/spectec/src/il/print.ml b/spectec/src/il/print.ml index 7a051335d..a85fde43a 100644 --- a/spectec/src/il/print.ml +++ b/spectec/src/il/print.ml @@ -95,15 +95,16 @@ and string_of_deftyp ?(layout = `H) dt = | VariantT tcs -> "\n | " ^ concat "\n | " (List.map (string_of_typcase ~layout) tcs) -and string_of_typfield ?(layout = `H) (atom, (qs, t, prems), _hints) = - string_of_mixop (Mixop.Atom atom) ^ - string_of_quants qs ^ " " ^ string_of_typ t ^ +and string_of_typfield ?(layout = `H) (atom, (t, qs, prems), _hints) = + string_of_mixop (Mixop.Atom atom) ^ " " ^ string_of_typ t ^ if layout = `H && prems <> [] then " -- .." else + string_of_quants qs ^ " " ^ concat "" (List.map (prefix "\n -- " string_of_prem) prems) -and string_of_typcase ?(layout = `H) (op, (qs, t, prems), _hints) = - string_of_mixop op ^ string_of_quants qs ^ string_of_typ_args t ^ +and string_of_typcase ?(layout = `H) (op, (t, qs, prems), _hints) = + string_of_mixop op ^ string_of_typ_args t ^ if layout = `H && prems <> [] then " -- .." else + string_of_quants qs ^ " " ^ concat "" (List.map (prefix "\n -- " string_of_prem) prems) diff --git a/spectec/src/il/subst.ml b/spectec/src/il/subst.ml index abe73a00c..475c377f6 100644 --- a/spectec/src/il/subst.ml +++ b/spectec/src/il/subst.ml @@ -1,11 +1,6 @@ open Util.Source open Ast -module Fresh = -struct - let refresh_varid = ref (fun _ -> assert false) -end - (* Data Structure *) @@ -100,12 +95,12 @@ and subst_iterexp : 'a. subst -> (subst -> 'a -> 'a) -> 'a -> _ -> 'a * _ = let it', xxts1 = match it with | ListN (e, Some x) -> - let x' = !Fresh.refresh_varid x in + let x' = Fresh.refresh_varid x in ListN (e, Some x'), [(x, x', NumT `NatT $ x.at)] | _ -> it, [] in let it'' = subst_iter s it' in - let xes' = List.map (fun (x, e) -> !Fresh.refresh_varid x, subst_exp s e) xes in + let xes' = List.map (fun (x, e) -> Fresh.refresh_varid x, subst_exp s e) xes in let xxts = List.map2 (fun (x, _) (x', e') -> x, x', e'.note) xes xes' in let s' = List.fold_left (fun s (x, x', t) -> @@ -138,7 +133,7 @@ and subst_typ' s t = and subst_tup_typ s = function | [] -> [], s | (x, t)::xts -> - let x' = !Fresh.refresh_varid x in + let x' = Fresh.refresh_varid x in let t' = subst_typ s t in let s' = add_varid s x (VarE x' $$ x'.at % t') in let xts', s'' = subst_tup_typ s' xts in @@ -151,15 +146,15 @@ and subst_deftyp s dt = | VariantT tcs -> VariantT (subst_list subst_typcase s tcs) ) $ dt.at -and subst_typfield s (atom, (qs, t, prems), hints) = - let qs', s' = subst_quants s qs in - let t', s'' = subst_typ' s' t in - (atom, (qs', t', subst_list subst_prem s'' prems), hints) +and subst_typfield s (atom, (t, qs, prems), hints) = + let t', s' = subst_typ' s t in + let qs', s'' = subst_quants s' qs in + (atom, (t', qs', subst_list subst_prem s'' prems), hints) -and subst_typcase s (op, (qs, t, prems), hints) = - let qs', s' = subst_quants s qs in - let t', s'' = subst_typ' s' t in - (op, (qs', t', subst_list subst_prem s'' prems), hints) +and subst_typcase s (op, (t, qs, prems), hints) = + let t', s' = subst_typ' s t in + let qs', s'' = subst_quants s' qs in + (op, (t', qs', subst_list subst_prem s'' prems), hints) (* Expressions *) diff --git a/spectec/src/il/subst.mli b/spectec/src/il/subst.mli index a0f51bc7d..c8fd8fc5d 100644 --- a/spectec/src/il/subst.mli +++ b/spectec/src/il/subst.mli @@ -43,5 +43,3 @@ val subst_args : subst -> arg list -> arg list val subst_params : subst -> param list -> param list * subst val subst_list : (subst -> 'a -> 'a) -> subst -> 'a list -> 'a list - -module Fresh : sig val refresh_varid : (id -> id) ref end diff --git a/spectec/src/il/valid.ml b/spectec/src/il/valid.ml index 312a15bf0..a564f088f 100644 --- a/spectec/src/il/valid.ml +++ b/spectec/src/il/valid.ml @@ -81,7 +81,7 @@ let rec as_comp_typ phrase env dir t at = match expand_typdef env t with | AliasT {it = IterT _; _} -> () | StructT tfs -> - List.iter (fun (_, (_, t, _), _) -> as_comp_typ phrase env dir t at) tfs + List.iter (fun (_, (t, _, _), _) -> as_comp_typ phrase env dir t at) tfs | _ -> error at (phrase ^ "'s type `" ^ string_of_typ t ^ "` is not composable") @@ -249,14 +249,14 @@ and valid_deftyp env dt = check_mixops "variant" "case" (List.map (fun (op, _, _) -> op) tcs) dt.at; List.iter (valid_typcase env) tcs -and valid_typfield env (_atom, (qs, t, prems), _hints) = +and valid_typfield env (_atom, (t, qs, prems), _hints) = let env' = valid_typ_bind env t in let env'' = valid_quants env' qs in List.iter (valid_prem env'') prems -and valid_typcase env (mixop, (qs, t, prems), _hints) = +and valid_typcase env (mixop, (t, qs, prems), _hints) = Debug.(log_at "il.valid_typcase" t.at - (fun _ -> fmt "%s %s" (il_quants qs) (il_typ t)) + (fun _ -> fmt "%s" (il_typ t)) (fun _ -> "ok") ) @@ fun _ -> let arity = @@ -295,7 +295,7 @@ and infer_exp (env : Env.t) e : typ = | StrE _ -> error e.at "cannot infer type of record" | DotE (e1, atom) -> let tfs = as_struct_typ "expression" env Infer (infer_exp env e1) e1.at in - let _qs, t, _prems = find_field tfs atom e1.at in + let t, _qs, _prems = find_field tfs atom e1.at in t | TupE es -> TupT (List.map (fun eI -> "_" $ eI.at, infer_exp env eI) es) $ e.at @@ -313,7 +313,7 @@ and infer_exp (env : Env.t) e : typ = | UncaseE (e1, op) -> let t1 = infer_exp env e1 in (match as_variant_typ "expression" env Infer t1 e1.at with - | [(op', (_, t, _), _)] when Eq.eq_mixop op op' -> t + | [(op', (t, _, _), _)] when Eq.eq_mixop op op' -> t | _ -> error e.at "invalid case projection"; ) | OptE _ -> error e.at "cannot infer type of option" @@ -416,7 +416,7 @@ try let t1 = infer_exp env e1 in valid_exp env e1 t1; let tfs = as_struct_typ "expression" env Check t1 e1.at in - let _qs, t', _prems = find_field tfs atom e1.at in + let t', _qs, _prems = find_field tfs atom e1.at in equiv_typ env t' t e.at | CompE (e1, e2) -> let _ = as_comp_typ "expression" env Check t e.at in @@ -465,7 +465,7 @@ try let t1 = infer_exp env e1 in valid_exp ~side env e1 t1; (match as_variant_typ "expression" env Infer t1 e1.at with - | [(op', (_qs, t', _), _)] when Eq.eq_mixop op op' -> + | [(op', (t', _, _), _)] when Eq.eq_mixop op op' -> equiv_typ env t' t e.at | _ -> error e.at "invalid case projection"; ) @@ -491,7 +491,7 @@ try valid_exp env e2 t | CaseE (op, e1) -> let cases = as_variant_typ "case" env Check t e.at in - let _qs, t1, _prems = find_case cases op e1.at in + let t1, _qs, _prems = find_case cases op e1.at in valid_exp ~side env e1 t1 | CvtE (e1, nt1, nt2) -> valid_exp ~side env e1 (NumT nt1 $ e1.at); @@ -516,11 +516,11 @@ and valid_expmix ?(side = `Rhs) env mixop e (mixop', t) at = ); valid_exp ~side env e t -and valid_expfield ~side env (atom1, e) (atom2, (qs, t, _prems), _) = +and valid_expfield ~side env (atom1, e) (atom2, (t, _qs, _prems), _) = Debug.(log_in_at "il.valid_expfield" e.at - (fun _ -> fmt "%s %s :%s %s%s %s" + (fun _ -> fmt "%s %s :%s %s %s" (il_atom atom1) (il_exp e) (il_side side) - (il_atom atom2) (il_quants qs) (il_typ t) + (il_atom atom2) (il_typ t) ) ); if not (Eq.eq_atom atom1 atom2) then error e.at "unexpected record field"; @@ -544,7 +544,7 @@ and valid_path env p t : typ = | DotP (p1, atom) -> let t1 = valid_path env p1 t in let tfs = as_struct_typ "path" env Check t1 p1.at in - let _qs, t, _prems = find_field tfs atom p1.at in + let t, _qs, _prems = find_field tfs atom p1.at in t in equiv_typ env p.note t' p.at; @@ -760,7 +760,7 @@ let rec valid_def env d : Env.t = List.iter (valid_inst env' ps) insts; Env.bind_typ env x (ps, insts); | RelD (x, mixop, t, rules) -> - valid_typcase env (mixop, ([], t, []), []); + valid_typcase env (mixop, (t, [], []), []); List.iter (valid_rule env mixop t) rules; Env.bind_rel env x (mixop, t, rules) | DecD (x, ps, t, clauses) -> diff --git a/spectec/src/middlend/sub.ml b/spectec/src/middlend/sub.ml index fc3efee89..1db340d05 100644 --- a/spectec/src/middlend/sub.ml +++ b/spectec/src/middlend/sub.ml @@ -132,10 +132,10 @@ and t_deftyp' env = function | StructT typfields -> StructT (List.map (t_typfield env) typfields) | VariantT typcases -> VariantT (List.map (t_typcase env) typcases) -and t_typfield env (atom, (params, t, prems), hints) = - (atom, (t_params env params, t_typ env t, t_prems env prems), hints) -and t_typcase env (atom, (params, t, prems), hints) = - (atom, (t_params env params, t_typ env t, t_prems env prems), hints) +and t_typfield env (atom, (t, quants, prems), hints) = + (atom, (t_typ env t, t_params env quants, t_prems env prems), hints) +and t_typcase env (atom, (t, quants, prems), hints) = + (atom, (t_typ env t, t_params env quants, t_prems env prems), hints) and t_exp2 env x = { x with it = t_exp' env x.it; note = t_typ env x.note } @@ -323,7 +323,7 @@ let insert_injections env (def : def) : def list = let sub_ty = VarT (sub, List.map arg_of_param params_sub) $ no_region in let sup_ty = VarT (sup, List.map arg_of_param params_sup') $ no_region in let real_ty = VarT (real_id_sub, args_sub) $ no_region in - let clauses = List.map (fun (a, (_params, arg_typ, _prems), _hints) -> + let clauses = List.map (fun (a, (arg_typ, _quants, _prems), _hints) -> match arg_typ.it with | TupT ts -> let params = List.mapi (fun i (_, arg_typ_i) -> ExpP ("x" ^ string_of_int i $ no_region, arg_typ_i) $ no_region) ts in diff --git a/spectec/src/middlend/totalize.ml b/spectec/src/middlend/totalize.ml index 2ca9ef637..c9813e737 100644 --- a/spectec/src/middlend/totalize.ml +++ b/spectec/src/middlend/totalize.ml @@ -67,10 +67,10 @@ and t_deftyp' env = function | StructT typfields -> StructT (List.map (t_typfield env) typfields) | VariantT typcases -> VariantT (List.map (t_typcase env) typcases) -and t_typfield env (atom, (params, t, prems), hints) = - (atom, (t_params env params, t_typ env t, t_prems env prems), hints) -and t_typcase env (atom, (params, t, prems), hints) = - (atom, (t_params env params, t_typ env t, t_prems env prems), hints) +and t_typfield env (atom, (t, quants, prems), hints) = + (atom, (t_typ env t, t_params env quants, t_prems env prems), hints) +and t_typcase env (atom, (t, quants, prems), hints) = + (atom, (t_typ env t, t_params env quants, t_prems env prems), hints) (* Expr traversal *) diff --git a/spectec/test-frontend/TEST.md b/spectec/test-frontend/TEST.md index b0f48b723..ac85b7e22 100644 --- a/spectec/test-frontend/TEST.md +++ b/spectec/test-frontend/TEST.md @@ -3,41 +3,54 @@ ```sh $ (../src/exe-spectec/main.exe test.spectec -o test.tex && cat test.tex) [check_dims] +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- [check_dims] +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- [check_dims] ---- 1 --- [check_dims] ---- 2 --- ---- 3 --- ---- 4 --- +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_exit _] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_exit _] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_exit _] +[scope_exit _] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- [check_dims] testmixfix DecD testmixfix(testmixfix : testmixfix) : nat* [visit_id testmixfix] not free @@ -107,127 +120,185 @@ DecD testmixfix(testmixfix : testmixfix) : nat* [check_dims] [check_dims] [check_dims] ---- 1 --- [check_dims] ---- 2 --- ---- 3 --- ---- 4 --- +[scope_enter opt] +[visit_id opt] not free [visit_id opt] no dims -[visit_id opt] +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_exit _] +[scope_exit opt] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter O?] +[visit_id O?] not free [visit_id O?] no dims -[visit_id O?] +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_exit _] +[scope_exit O?] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_exit _] +[scope_exit _] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter list] +[visit_id list] not free [visit_id list] no dims -[visit_id list] +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_exit _] +[scope_exit list] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter L*] +[visit_id L*] not free [visit_id L*] no dims -[visit_id L*] +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_exit _] +[scope_exit L*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_enter _] [visit_id _] not free [visit_id _] no dims -[check_dims] +[scope_exit _] +[scope_exit _] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter opt] +[visit_id opt] not free [visit_id opt] no dims -[visit_id opt] +[scope_enter _] [visit_id _] not free [visit_id _] no dims -[check_dims] +[scope_exit _] +[scope_exit opt] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter O?] +[visit_id O?] not free [visit_id O?] no dims -[visit_id O?] +[scope_enter _] [visit_id _] not free [visit_id _] no dims -[check_dims] +[scope_exit _] +[scope_exit O?] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_enter _] [visit_id _] not free [visit_id _] no dims -[check_dims] +[scope_exit _] +[scope_exit _] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter list] +[visit_id list] not free [visit_id list] no dims -[visit_id list] +[scope_enter _] [visit_id _] not free [visit_id _] no dims -[check_dims] +[scope_exit _] +[scope_exit list] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter L*] +[visit_id L*] not free [visit_id L*] no dims -[visit_id L*] +[scope_enter _] [visit_id _] not free [visit_id _] no dims -[check_dims] +[scope_exit _] +[scope_exit L*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_exit _] +[scope_exit _] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- [check_dims] variant DecD testemptyv1(variant : variant) : nat [visit_id variant] not free -[check_dims] opt opt#1 -[visit_exp `V1`_variant{opt#1}(opt, 0)] -[visit_exp opt#1] -[visit_id opt#1] +[check_dims] opt +[visit_exp `V1`_variant(opt, 0)] [visit_exp (opt, 0)] [visit_exp opt] [visit_id opt] @@ -235,33 +306,27 @@ DecD testemptyv1(variant : variant) : nat [visit_exp 0] => ;; test.spectec - def $testemptyv1{opt#1 : opt, opt : opt}(`V1`_variant{opt#1}(opt, 0)) = 0 -[check_dims] opt#3 -[visit_exp `V1`_variant{opt#3}(?(), 0)] -[visit_exp opt#3] -[visit_id opt#3] + def $testemptyv1{opt : opt}(`V1`_variant(opt, 0)) = 0 +[check_dims] +[visit_exp `V1`_variant(?(), 0)] [visit_exp (?(), 0)] [visit_exp ?()] [visit_exp 0] [visit_exp 0] => ;; test.spectec - def $testemptyv1{opt#3 : opt}(`V1`_variant{opt#3}(?(), 0)) = 0 -[check_dims] opt#5 -[visit_exp `V1`_variant{opt#5}(?(), 0)] -[visit_exp opt#5] -[visit_id opt#5] + def $testemptyv1(`V1`_variant(?(), 0)) = 0 +[check_dims] +[visit_exp `V1`_variant(?(), 0)] [visit_exp (?(), 0)] [visit_exp ?()] [visit_exp 0] [visit_exp 0] => ;; test.spectec - def $testemptyv1{opt#5 : opt}(`V1`_variant{opt#5}(?(), 0)) = 0 -[check_dims] opt#7 -[visit_exp `V1`_variant{opt#7}(?(`O`_O), 0)] -[visit_exp opt#7] -[visit_id opt#7] + def $testemptyv1(`V1`_variant(?(), 0)) = 0 +[check_dims] +[visit_exp `V1`_variant(?(`O`_O), 0)] [visit_exp (?(`O`_O), 0)] [visit_exp ?(`O`_O)] [visit_exp `O`_O] @@ -270,36 +335,30 @@ DecD testemptyv1(variant : variant) : nat [visit_exp 0] => ;; test.spectec - def $testemptyv1{opt#7 : opt}(`V1`_variant{opt#7}(?(`O`_O), 0)) = 0 + def $testemptyv1(`V1`_variant(?(`O`_O), 0)) = 0 [check_dims] variant DecD testemptyv2(variant : variant) : nat [visit_id variant] not free -[check_dims] O?#1 -[visit_exp `V2`_variant{`O?#1`}(?(), 0)] -[visit_exp `O?#1`] -[visit_id O?#1] +[check_dims] +[visit_exp `V2`_variant(?(), 0)] [visit_exp (?(), 0)] [visit_exp ?()] [visit_exp 0] [visit_exp 0] => ;; test.spectec - def $testemptyv2{`O?#1` : O?}(`V2`_variant{`O?#1`}(?(), 0)) = 0 -[check_dims] O?#3 -[visit_exp `V2`_variant{`O?#3`}(?(), 0)] -[visit_exp `O?#3`] -[visit_id O?#3] + def $testemptyv2(`V2`_variant(?(), 0)) = 0 +[check_dims] +[visit_exp `V2`_variant(?(), 0)] [visit_exp (?(), 0)] [visit_exp ?()] [visit_exp 0] [visit_exp 0] => ;; test.spectec - def $testemptyv2{`O?#3` : O?}(`V2`_variant{`O?#3`}(?(), 0)) = 0 -[check_dims] O?#5 -[visit_exp `V2`_variant{`O?#5`}(?(`O`_O), 0)] -[visit_exp `O?#5`] -[visit_id O?#5] + def $testemptyv2(`V2`_variant(?(), 0)) = 0 +[check_dims] +[visit_exp `V2`_variant(?(`O`_O), 0)] [visit_exp (?(`O`_O), 0)] [visit_exp ?(`O`_O)] [visit_exp `O`_O] @@ -308,7 +367,7 @@ DecD testemptyv2(variant : variant) : nat [visit_exp 0] => ;; test.spectec - def $testemptyv2{`O?#5` : O?}(`V2`_variant{`O?#5`}(?(`O`_O), 0)) = 0 + def $testemptyv2(`V2`_variant(?(`O`_O), 0)) = 0 [check_dims] variant DecD testemptyv3(variant : variant) : nat [visit_id variant] not free @@ -343,10 +402,8 @@ DecD testemptyv3(variant : variant) : nat [check_dims] variant DecD testemptyv4(variant : variant) : nat [visit_id variant] not free -[check_dims] list list#1 -[visit_exp `V4`_variant{list#1}(list, 0)] -[visit_exp list#1] -[visit_id list#1] +[check_dims] list +[visit_exp `V4`_variant(list, 0)] [visit_exp (list, 0)] [visit_exp list] [visit_id list] @@ -354,33 +411,27 @@ DecD testemptyv4(variant : variant) : nat [visit_exp 0] => ;; test.spectec - def $testemptyv4{list#1 : list, list : list}(`V4`_variant{list#1}(list, 0)) = 0 -[check_dims] list#3 -[visit_exp `V4`_variant{list#3}([], 0)] -[visit_exp list#3] -[visit_id list#3] + def $testemptyv4{list : list}(`V4`_variant(list, 0)) = 0 +[check_dims] +[visit_exp `V4`_variant([], 0)] [visit_exp ([], 0)] [visit_exp []] [visit_exp 0] [visit_exp 0] => ;; test.spectec - def $testemptyv4{list#3 : list}(`V4`_variant{list#3}([], 0)) = 0 -[check_dims] list#5 -[visit_exp `V4`_variant{list#5}([], 0)] -[visit_exp list#5] -[visit_id list#5] + def $testemptyv4(`V4`_variant([], 0)) = 0 +[check_dims] +[visit_exp `V4`_variant([], 0)] [visit_exp ([], 0)] [visit_exp []] [visit_exp 0] [visit_exp 0] => ;; test.spectec - def $testemptyv4{list#5 : list}(`V4`_variant{list#5}([], 0)) = 0 -[check_dims] list#7 -[visit_exp `V4`_variant{list#7}([`L`_L], 0)] -[visit_exp list#7] -[visit_id list#7] + def $testemptyv4(`V4`_variant([], 0)) = 0 +[check_dims] +[visit_exp `V4`_variant([`L`_L], 0)] [visit_exp ([`L`_L], 0)] [visit_exp [`L`_L]] [visit_exp `L`_L] @@ -389,11 +440,9 @@ DecD testemptyv4(variant : variant) : nat [visit_exp 0] => ;; test.spectec - def $testemptyv4{list#7 : list}(`V4`_variant{list#7}([`L`_L], 0)) = 0 -[check_dims] list#9 -[visit_exp `V4`_variant{list#9}([`L`_L `L`_L `L`_L], 0)] -[visit_exp list#9] -[visit_id list#9] + def $testemptyv4(`V4`_variant([`L`_L], 0)) = 0 +[check_dims] +[visit_exp `V4`_variant([`L`_L `L`_L `L`_L], 0)] [visit_exp ([`L`_L `L`_L `L`_L], 0)] [visit_exp [`L`_L `L`_L `L`_L]] [visit_exp `L`_L] @@ -406,22 +455,18 @@ DecD testemptyv4(variant : variant) : nat [visit_exp 0] => ;; test.spectec - def $testemptyv4{list#9 : list}(`V4`_variant{list#9}([`L`_L `L`_L `L`_L], 0)) = 0 -[check_dims] list#11 -[visit_exp `V4`_variant{list#11}([], 0)] -[visit_exp list#11] -[visit_id list#11] + def $testemptyv4(`V4`_variant([`L`_L `L`_L `L`_L], 0)) = 0 +[check_dims] +[visit_exp `V4`_variant([], 0)] [visit_exp ([], 0)] [visit_exp []] [visit_exp 0] [visit_exp 0] => ;; test.spectec - def $testemptyv4{list#11 : list}(`V4`_variant{list#11}([], 0)) = 0 -[check_dims] list#13 -[visit_exp `V4`_variant{list#13}([`L`_L], 0)] -[visit_exp list#13] -[visit_id list#13] + def $testemptyv4(`V4`_variant([], 0)) = 0 +[check_dims] +[visit_exp `V4`_variant([`L`_L], 0)] [visit_exp ([`L`_L], 0)] [visit_exp [`L`_L]] [visit_exp `L`_L] @@ -430,11 +475,9 @@ DecD testemptyv4(variant : variant) : nat [visit_exp 0] => ;; test.spectec - def $testemptyv4{list#13 : list}(`V4`_variant{list#13}([`L`_L], 0)) = 0 -[check_dims] list#15 -[visit_exp `V4`_variant{list#15}([`L`_L `L`_L `L`_L], 0)] -[visit_exp list#15] -[visit_id list#15] + def $testemptyv4(`V4`_variant([`L`_L], 0)) = 0 +[check_dims] +[visit_exp `V4`_variant([`L`_L `L`_L `L`_L], 0)] [visit_exp ([`L`_L `L`_L `L`_L], 0)] [visit_exp [`L`_L `L`_L `L`_L]] [visit_exp `L`_L] @@ -447,36 +490,30 @@ DecD testemptyv4(variant : variant) : nat [visit_exp 0] => ;; test.spectec - def $testemptyv4{list#15 : list}(`V4`_variant{list#15}([`L`_L `L`_L `L`_L], 0)) = 0 + def $testemptyv4(`V4`_variant([`L`_L `L`_L `L`_L], 0)) = 0 [check_dims] variant DecD testemptyv5(variant : variant) : nat [visit_id variant] not free -[check_dims] L*#1 -[visit_exp `V5`_variant{`L*#1`}([], 0)] -[visit_exp `L*#1`] -[visit_id L*#1] +[check_dims] +[visit_exp `V5`_variant([], 0)] [visit_exp ([], 0)] [visit_exp []] [visit_exp 0] [visit_exp 0] => ;; test.spectec - def $testemptyv5{`L*#1` : L*}(`V5`_variant{`L*#1`}([], 0)) = 0 -[check_dims] L*#3 -[visit_exp `V5`_variant{`L*#3`}([], 0)] -[visit_exp `L*#3`] -[visit_id L*#3] + def $testemptyv5(`V5`_variant([], 0)) = 0 +[check_dims] +[visit_exp `V5`_variant([], 0)] [visit_exp ([], 0)] [visit_exp []] [visit_exp 0] [visit_exp 0] => ;; test.spectec - def $testemptyv5{`L*#3` : L*}(`V5`_variant{`L*#3`}([], 0)) = 0 -[check_dims] L*#5 -[visit_exp `V5`_variant{`L*#5`}([`L`_L], 0)] -[visit_exp `L*#5`] -[visit_id L*#5] + def $testemptyv5(`V5`_variant([], 0)) = 0 +[check_dims] +[visit_exp `V5`_variant([`L`_L], 0)] [visit_exp ([`L`_L], 0)] [visit_exp [`L`_L]] [visit_exp `L`_L] @@ -485,11 +522,9 @@ DecD testemptyv5(variant : variant) : nat [visit_exp 0] => ;; test.spectec - def $testemptyv5{`L*#5` : L*}(`V5`_variant{`L*#5`}([`L`_L], 0)) = 0 -[check_dims] L*#7 -[visit_exp `V5`_variant{`L*#7`}([`L`_L `L`_L `L`_L], 0)] -[visit_exp `L*#7`] -[visit_id L*#7] + def $testemptyv5(`V5`_variant([`L`_L], 0)) = 0 +[check_dims] +[visit_exp `V5`_variant([`L`_L `L`_L `L`_L], 0)] [visit_exp ([`L`_L `L`_L `L`_L], 0)] [visit_exp [`L`_L `L`_L `L`_L]] [visit_exp `L`_L] @@ -502,22 +537,18 @@ DecD testemptyv5(variant : variant) : nat [visit_exp 0] => ;; test.spectec - def $testemptyv5{`L*#7` : L*}(`V5`_variant{`L*#7`}([`L`_L `L`_L `L`_L], 0)) = 0 -[check_dims] L*#9 -[visit_exp `V5`_variant{`L*#9`}([], 0)] -[visit_exp `L*#9`] -[visit_id L*#9] + def $testemptyv5(`V5`_variant([`L`_L `L`_L `L`_L], 0)) = 0 +[check_dims] +[visit_exp `V5`_variant([], 0)] [visit_exp ([], 0)] [visit_exp []] [visit_exp 0] [visit_exp 0] => ;; test.spectec - def $testemptyv5{`L*#9` : L*}(`V5`_variant{`L*#9`}([], 0)) = 0 -[check_dims] L*#11 -[visit_exp `V5`_variant{`L*#11`}([`L`_L], 0)] -[visit_exp `L*#11`] -[visit_id L*#11] + def $testemptyv5(`V5`_variant([], 0)) = 0 +[check_dims] +[visit_exp `V5`_variant([`L`_L], 0)] [visit_exp ([`L`_L], 0)] [visit_exp [`L`_L]] [visit_exp `L`_L] @@ -526,11 +557,9 @@ DecD testemptyv5(variant : variant) : nat [visit_exp 0] => ;; test.spectec - def $testemptyv5{`L*#11` : L*}(`V5`_variant{`L*#11`}([`L`_L], 0)) = 0 -[check_dims] L*#13 -[visit_exp `V5`_variant{`L*#13`}([`L`_L `L`_L `L`_L], 0)] -[visit_exp `L*#13`] -[visit_id L*#13] + def $testemptyv5(`V5`_variant([`L`_L], 0)) = 0 +[check_dims] +[visit_exp `V5`_variant([`L`_L `L`_L `L`_L], 0)] [visit_exp ([`L`_L `L`_L `L`_L], 0)] [visit_exp [`L`_L `L`_L `L`_L]] [visit_exp `L`_L] @@ -543,7 +572,7 @@ DecD testemptyv5(variant : variant) : nat [visit_exp 0] => ;; test.spectec - def $testemptyv5{`L*#13` : L*}(`V5`_variant{`L*#13`}([`L`_L `L`_L `L`_L], 0)) = 0 + def $testemptyv5(`V5`_variant([`L`_L `L`_L `L`_L], 0)) = 0 [check_dims] variant DecD testemptyv6(variant : variant) : nat [visit_id variant] not free @@ -619,10 +648,8 @@ DecD testemptyv6(variant : variant) : nat [check_dims] notation1 DecD testemptyn1(notation1 : notation1) : nat [visit_id notation1] not free -[check_dims] opt opt#19 -[visit_exp `%%`_notation1{opt#19}(opt, 0)] -[visit_exp opt#19] -[visit_id opt#19] +[check_dims] opt +[visit_exp `%%`_notation1(opt, 0)] [visit_exp (opt, 0)] [visit_exp opt] [visit_id opt] @@ -630,33 +657,27 @@ DecD testemptyn1(notation1 : notation1) : nat [visit_exp 0] => ;; test.spectec - def $testemptyn1{opt#19 : opt, opt : opt}(`%%`_notation1{opt#19}(opt, 0)) = 0 -[check_dims] opt#31 -[visit_exp `%%`_notation1{opt#31}(?(), 0)] -[visit_exp opt#31] -[visit_id opt#31] + def $testemptyn1{opt : opt}(`%%`_notation1(opt, 0)) = 0 +[check_dims] +[visit_exp `%%`_notation1(?(), 0)] [visit_exp (?(), 0)] [visit_exp ?()] [visit_exp 0] [visit_exp 0] => ;; test.spectec - def $testemptyn1{opt#31 : opt}(`%%`_notation1{opt#31}(?(), 0)) = 0 -[check_dims] opt#37 -[visit_exp `%%`_notation1{opt#37}(?(), 0)] -[visit_exp opt#37] -[visit_id opt#37] + def $testemptyn1(`%%`_notation1(?(), 0)) = 0 +[check_dims] +[visit_exp `%%`_notation1(?(), 0)] [visit_exp (?(), 0)] [visit_exp ?()] [visit_exp 0] [visit_exp 0] => ;; test.spectec - def $testemptyn1{opt#37 : opt}(`%%`_notation1{opt#37}(?(), 0)) = 0 -[check_dims] opt#51 -[visit_exp `%%`_notation1{opt#51}(?(`O`_O), 0)] -[visit_exp opt#51] -[visit_id opt#51] + def $testemptyn1(`%%`_notation1(?(), 0)) = 0 +[check_dims] +[visit_exp `%%`_notation1(?(`O`_O), 0)] [visit_exp (?(`O`_O), 0)] [visit_exp ?(`O`_O)] [visit_exp `O`_O] @@ -665,36 +686,30 @@ DecD testemptyn1(notation1 : notation1) : nat [visit_exp 0] => ;; test.spectec - def $testemptyn1{opt#51 : opt}(`%%`_notation1{opt#51}(?(`O`_O), 0)) = 0 + def $testemptyn1(`%%`_notation1(?(`O`_O), 0)) = 0 [check_dims] notation2 DecD testemptyn2(notation2 : notation2) : nat [visit_id notation2] not free -[check_dims] O?#17 -[visit_exp `%%`_notation2{`O?#17`}(?(), 0)] -[visit_exp `O?#17`] -[visit_id O?#17] +[check_dims] +[visit_exp `%%`_notation2(?(), 0)] [visit_exp (?(), 0)] [visit_exp ?()] [visit_exp 0] [visit_exp 0] => ;; test.spectec - def $testemptyn2{`O?#17` : O?}(`%%`_notation2{`O?#17`}(?(), 0)) = 0 -[check_dims] O?#23 -[visit_exp `%%`_notation2{`O?#23`}(?(), 0)] -[visit_exp `O?#23`] -[visit_id O?#23] + def $testemptyn2(`%%`_notation2(?(), 0)) = 0 +[check_dims] +[visit_exp `%%`_notation2(?(), 0)] [visit_exp (?(), 0)] [visit_exp ?()] [visit_exp 0] [visit_exp 0] => ;; test.spectec - def $testemptyn2{`O?#23` : O?}(`%%`_notation2{`O?#23`}(?(), 0)) = 0 -[check_dims] O?#37 -[visit_exp `%%`_notation2{`O?#37`}(?(`O`_O), 0)] -[visit_exp `O?#37`] -[visit_id O?#37] + def $testemptyn2(`%%`_notation2(?(), 0)) = 0 +[check_dims] +[visit_exp `%%`_notation2(?(`O`_O), 0)] [visit_exp (?(`O`_O), 0)] [visit_exp ?(`O`_O)] [visit_exp `O`_O] @@ -703,7 +718,7 @@ DecD testemptyn2(notation2 : notation2) : nat [visit_exp 0] => ;; test.spectec - def $testemptyn2{`O?#37` : O?}(`%%`_notation2{`O?#37`}(?(`O`_O), 0)) = 0 + def $testemptyn2(`%%`_notation2(?(`O`_O), 0)) = 0 [check_dims] notation3 DecD testemptyn3(notation3 : notation3) : nat [visit_id notation3] not free @@ -738,10 +753,8 @@ DecD testemptyn3(notation3 : notation3) : nat [check_dims] notation4 DecD testemptyn4(notation4 : notation4) : nat [visit_id notation4] not free -[check_dims] list list#27 -[visit_exp `%%`_notation4{list#27}(list, 0)] -[visit_exp list#27] -[visit_id list#27] +[check_dims] list +[visit_exp `%%`_notation4(list, 0)] [visit_exp (list, 0)] [visit_exp list] [visit_id list] @@ -749,33 +762,27 @@ DecD testemptyn4(notation4 : notation4) : nat [visit_exp 0] => ;; test.spectec - def $testemptyn4{list#27 : list, list : list}(`%%`_notation4{list#27}(list, 0)) = 0 -[check_dims] list#39 -[visit_exp `%%`_notation4{list#39}([], 0)] -[visit_exp list#39] -[visit_id list#39] + def $testemptyn4{list : list}(`%%`_notation4(list, 0)) = 0 +[check_dims] +[visit_exp `%%`_notation4([], 0)] [visit_exp ([], 0)] [visit_exp []] [visit_exp 0] [visit_exp 0] => ;; test.spectec - def $testemptyn4{list#39 : list}(`%%`_notation4{list#39}([], 0)) = 0 -[check_dims] list#45 -[visit_exp `%%`_notation4{list#45}([], 0)] -[visit_exp list#45] -[visit_id list#45] + def $testemptyn4(`%%`_notation4([], 0)) = 0 +[check_dims] +[visit_exp `%%`_notation4([], 0)] [visit_exp ([], 0)] [visit_exp []] [visit_exp 0] [visit_exp 0] => ;; test.spectec - def $testemptyn4{list#45 : list}(`%%`_notation4{list#45}([], 0)) = 0 -[check_dims] list#59 -[visit_exp `%%`_notation4{list#59}([`L`_L], 0)] -[visit_exp list#59] -[visit_id list#59] + def $testemptyn4(`%%`_notation4([], 0)) = 0 +[check_dims] +[visit_exp `%%`_notation4([`L`_L], 0)] [visit_exp ([`L`_L], 0)] [visit_exp [`L`_L]] [visit_exp `L`_L] @@ -784,11 +791,9 @@ DecD testemptyn4(notation4 : notation4) : nat [visit_exp 0] => ;; test.spectec - def $testemptyn4{list#59 : list}(`%%`_notation4{list#59}([`L`_L], 0)) = 0 -[check_dims] list#71 -[visit_exp `%%`_notation4{list#71}([`L`_L `L`_L `L`_L], 0)] -[visit_exp list#71] -[visit_id list#71] + def $testemptyn4(`%%`_notation4([`L`_L], 0)) = 0 +[check_dims] +[visit_exp `%%`_notation4([`L`_L `L`_L `L`_L], 0)] [visit_exp ([`L`_L `L`_L `L`_L], 0)] [visit_exp [`L`_L `L`_L `L`_L]] [visit_exp `L`_L] @@ -801,22 +806,18 @@ DecD testemptyn4(notation4 : notation4) : nat [visit_exp 0] => ;; test.spectec - def $testemptyn4{list#71 : list}(`%%`_notation4{list#71}([`L`_L `L`_L `L`_L], 0)) = 0 -[check_dims] list#83 -[visit_exp `%%`_notation4{list#83}([], 0)] -[visit_exp list#83] -[visit_id list#83] + def $testemptyn4(`%%`_notation4([`L`_L `L`_L `L`_L], 0)) = 0 +[check_dims] +[visit_exp `%%`_notation4([], 0)] [visit_exp ([], 0)] [visit_exp []] [visit_exp 0] [visit_exp 0] => ;; test.spectec - def $testemptyn4{list#83 : list}(`%%`_notation4{list#83}([], 0)) = 0 -[check_dims] list#95 -[visit_exp `%%`_notation4{list#95}([`L`_L], 0)] -[visit_exp list#95] -[visit_id list#95] + def $testemptyn4(`%%`_notation4([], 0)) = 0 +[check_dims] +[visit_exp `%%`_notation4([`L`_L], 0)] [visit_exp ([`L`_L], 0)] [visit_exp [`L`_L]] [visit_exp `L`_L] @@ -825,11 +826,9 @@ DecD testemptyn4(notation4 : notation4) : nat [visit_exp 0] => ;; test.spectec - def $testemptyn4{list#95 : list}(`%%`_notation4{list#95}([`L`_L], 0)) = 0 -[check_dims] list#107 -[visit_exp `%%`_notation4{list#107}([`L`_L `L`_L `L`_L], 0)] -[visit_exp list#107] -[visit_id list#107] + def $testemptyn4(`%%`_notation4([`L`_L], 0)) = 0 +[check_dims] +[visit_exp `%%`_notation4([`L`_L `L`_L `L`_L], 0)] [visit_exp ([`L`_L `L`_L `L`_L], 0)] [visit_exp [`L`_L `L`_L `L`_L]] [visit_exp `L`_L] @@ -842,36 +841,30 @@ DecD testemptyn4(notation4 : notation4) : nat [visit_exp 0] => ;; test.spectec - def $testemptyn4{list#107 : list}(`%%`_notation4{list#107}([`L`_L `L`_L `L`_L], 0)) = 0 + def $testemptyn4(`%%`_notation4([`L`_L `L`_L `L`_L], 0)) = 0 [check_dims] notation5 DecD testemptyn5(notation5 : notation5) : nat [visit_id notation5] not free -[check_dims] L*#25 -[visit_exp `%%`_notation5{`L*#25`}([], 0)] -[visit_exp `L*#25`] -[visit_id L*#25] +[check_dims] +[visit_exp `%%`_notation5([], 0)] [visit_exp ([], 0)] [visit_exp []] [visit_exp 0] [visit_exp 0] => ;; test.spectec - def $testemptyn5{`L*#25` : L*}(`%%`_notation5{`L*#25`}([], 0)) = 0 -[check_dims] L*#31 -[visit_exp `%%`_notation5{`L*#31`}([], 0)] -[visit_exp `L*#31`] -[visit_id L*#31] + def $testemptyn5(`%%`_notation5([], 0)) = 0 +[check_dims] +[visit_exp `%%`_notation5([], 0)] [visit_exp ([], 0)] [visit_exp []] [visit_exp 0] [visit_exp 0] => ;; test.spectec - def $testemptyn5{`L*#31` : L*}(`%%`_notation5{`L*#31`}([], 0)) = 0 -[check_dims] L*#45 -[visit_exp `%%`_notation5{`L*#45`}([`L`_L], 0)] -[visit_exp `L*#45`] -[visit_id L*#45] + def $testemptyn5(`%%`_notation5([], 0)) = 0 +[check_dims] +[visit_exp `%%`_notation5([`L`_L], 0)] [visit_exp ([`L`_L], 0)] [visit_exp [`L`_L]] [visit_exp `L`_L] @@ -880,11 +873,9 @@ DecD testemptyn5(notation5 : notation5) : nat [visit_exp 0] => ;; test.spectec - def $testemptyn5{`L*#45` : L*}(`%%`_notation5{`L*#45`}([`L`_L], 0)) = 0 -[check_dims] L*#57 -[visit_exp `%%`_notation5{`L*#57`}([`L`_L `L`_L `L`_L], 0)] -[visit_exp `L*#57`] -[visit_id L*#57] + def $testemptyn5(`%%`_notation5([`L`_L], 0)) = 0 +[check_dims] +[visit_exp `%%`_notation5([`L`_L `L`_L `L`_L], 0)] [visit_exp ([`L`_L `L`_L `L`_L], 0)] [visit_exp [`L`_L `L`_L `L`_L]] [visit_exp `L`_L] @@ -897,22 +888,18 @@ DecD testemptyn5(notation5 : notation5) : nat [visit_exp 0] => ;; test.spectec - def $testemptyn5{`L*#57` : L*}(`%%`_notation5{`L*#57`}([`L`_L `L`_L `L`_L], 0)) = 0 -[check_dims] L*#69 -[visit_exp `%%`_notation5{`L*#69`}([], 0)] -[visit_exp `L*#69`] -[visit_id L*#69] + def $testemptyn5(`%%`_notation5([`L`_L `L`_L `L`_L], 0)) = 0 +[check_dims] +[visit_exp `%%`_notation5([], 0)] [visit_exp ([], 0)] [visit_exp []] [visit_exp 0] [visit_exp 0] => ;; test.spectec - def $testemptyn5{`L*#69` : L*}(`%%`_notation5{`L*#69`}([], 0)) = 0 -[check_dims] L*#81 -[visit_exp `%%`_notation5{`L*#81`}([`L`_L], 0)] -[visit_exp `L*#81`] -[visit_id L*#81] + def $testemptyn5(`%%`_notation5([], 0)) = 0 +[check_dims] +[visit_exp `%%`_notation5([`L`_L], 0)] [visit_exp ([`L`_L], 0)] [visit_exp [`L`_L]] [visit_exp `L`_L] @@ -921,11 +908,9 @@ DecD testemptyn5(notation5 : notation5) : nat [visit_exp 0] => ;; test.spectec - def $testemptyn5{`L*#81` : L*}(`%%`_notation5{`L*#81`}([`L`_L], 0)) = 0 -[check_dims] L*#93 -[visit_exp `%%`_notation5{`L*#93`}([`L`_L `L`_L `L`_L], 0)] -[visit_exp `L*#93`] -[visit_id L*#93] + def $testemptyn5(`%%`_notation5([`L`_L], 0)) = 0 +[check_dims] +[visit_exp `%%`_notation5([`L`_L `L`_L `L`_L], 0)] [visit_exp ([`L`_L `L`_L `L`_L], 0)] [visit_exp [`L`_L `L`_L `L`_L]] [visit_exp `L`_L] @@ -938,7 +923,7 @@ DecD testemptyn5(notation5 : notation5) : nat [visit_exp 0] => ;; test.spectec - def $testemptyn5{`L*#93` : L*}(`%%`_notation5{`L*#93`}([`L`_L `L`_L `L`_L], 0)) = 0 + def $testemptyn5(`%%`_notation5([`L`_L `L`_L `L`_L], 0)) = 0 [check_dims] notation6 DecD testemptyn6(notation6 : notation6) : nat [visit_id notation6] not free @@ -1906,6 +1891,7 @@ DecD mmmm(int : int, int : int) : int [check_dims] int [visit_id int] not free [check_dims] +[check_dims] --- 1 --- [check_dims] --- 2 --- @@ -1915,6 +1901,7 @@ DecD mmmm(int : int, int : int) : int [visit_exp (1 : nat <:> int)] [visit_exp 1] [check_dims] +[check_dims] --- 1 --- [check_dims] --- 2 --- @@ -1924,6 +1911,7 @@ DecD mmmm(int : int, int : int) : int [visit_exp (7 : nat <:> int)] [visit_exp 7] [check_dims] +[check_dims] --- 1 --- [check_dims] --- 2 --- @@ -1933,6 +1921,7 @@ DecD mmmm(int : int, int : int) : int [visit_exp (1 : nat <:> int)] [visit_exp 1] [check_dims] +[check_dims] --- 1 --- [check_dims] --- 2 --- @@ -4514,37 +4503,50 @@ DecD E(N : N) : nat ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $E{N : N}(N) = $expon(N) [check_dims] N +[check_dims] N +[visit_exp N] +[visit_id N] not free +[visit_id N] no dims +[scope_enter _] +[visit_id _] not free +[visit_id _] no dims +[scope_exit _] --- 1 --- [check_dims] N --- 2 --- --- 3 --- --- 4 --- -[visit_id _] not free -[visit_id _] no dims +[check_dims] N [visit_exp N] [visit_id N] not free [visit_id N] no dims +[scope_enter _] +[visit_id _] not free +[visit_id _] no dims +[scope_exit _] --- 1 --- [check_dims] N --- 2 --- --- 3 --- --- 4 --- -[visit_id _] not free -[visit_id _] no dims -[visit_exp N] -[visit_id N] not free -[visit_id N] no dims [visit_exp N] [visit_id N] [check_dims] [check_dims] N +[check_dims] N +[scope_enter m] +[visit_id m] not free +[visit_id m] no dims +[scope_enter exp] +[visit_id exp] not free +[visit_id exp] no dims +[scope_exit exp] +[scope_exit m] --- 1 --- [check_dims] N exp m --- 2 --- --- 3 --- --- 4 --- -[visit_id m] -[visit_id exp] [visit_exp ((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)))))] [visit_exp (m < (2 ^ $M(N)))] [visit_exp m] @@ -4592,12 +4594,16 @@ DecD E(N : N) : nat [visit_exp 1] [visit_exp (1 : nat <:> int)] [visit_exp 1] +[check_dims] N +[scope_enter m] +[visit_id m] not free +[visit_id m] no dims +[scope_exit m] --- 1 --- [check_dims] N exp m --- 2 --- --- 3 --- --- 4 --- -[visit_id m] [visit_exp ((m < (2 ^ $M(N))) /\ (((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) = exp))] [visit_exp (m < (2 ^ $M(N)))] [visit_exp m] @@ -4626,17 +4632,22 @@ DecD E(N : N) : nat [visit_exp 1] [visit_exp exp] [visit_id exp] +[check_dims] N --- 1 --- [check_dims] N --- 2 --- --- 3 --- --- 4 --- +[check_dims] N +[scope_enter m] +[visit_id m] not free +[visit_id m] no dims +[scope_exit m] --- 1 --- [check_dims] N m --- 2 --- --- 3 --- --- 4 --- -[visit_id m] [visit_exp ((1 <= m) /\ (m < (2 ^ $M(N))))] [visit_exp (1 <= m)] [visit_exp 1] @@ -4660,39 +4671,31 @@ DecD fzero(N : N) : fN(N) [visit_id N] not free [visit_exp N] [visit_id N] not free -[check_dims] N exp#1 m#1 +[check_dims] N [visit_exp N] [visit_id N] -[visit_exp `POS`_fN(`SUBNORM`_fNmag{m#1, exp#1}(0))] -[visit_exp (`SUBNORM`_fNmag{m#1, exp#1}(0))] -[visit_exp `SUBNORM`_fNmag{m#1, exp#1}(0)] -[visit_exp m#1] -[visit_id m#1] -[visit_exp exp#1] -[visit_id exp#1] +[visit_exp `POS`_fN(`SUBNORM`_fNmag(0))] +[visit_exp (`SUBNORM`_fNmag(0))] +[visit_exp `SUBNORM`_fNmag(0)] [visit_exp (0)] [visit_exp 0] => ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $fzero{N : N, m#1 : m, exp#1 : exp}(N) = `POS`_fN(`SUBNORM`_fNmag{m#1, exp#1}(0)) + def $fzero{N : N}(N) = `POS`_fN(`SUBNORM`_fNmag(0)) [check_dims] N nat DecD fnat(N : N, nat : nat) : fN(N) [visit_id N] not free [visit_id nat] not free [visit_exp N] [visit_id N] not free -[check_dims] N exp#2 m#3 n +[check_dims] N n [visit_exp N] [visit_id N] [visit_exp n] [visit_id n] -[visit_exp `POS`_fN(`NORM`_fNmag{m#3, exp#2}(n, (0 : nat <:> int)))] -[visit_exp (`NORM`_fNmag{m#3, exp#2}(n, (0 : nat <:> int)))] -[visit_exp `NORM`_fNmag{m#3, exp#2}(n, (0 : nat <:> int))] -[visit_exp m#3] -[visit_id m#3] -[visit_exp exp#2] -[visit_id exp#2] +[visit_exp `POS`_fN(`NORM`_fNmag(n, (0 : nat <:> int)))] +[visit_exp (`NORM`_fNmag(n, (0 : nat <:> int)))] +[visit_exp `NORM`_fNmag(n, (0 : nat <:> int))] [visit_exp (n, (0 : nat <:> int))] [visit_exp n] [visit_id n] not free @@ -4700,29 +4703,25 @@ DecD fnat(N : N, nat : nat) : fN(N) [visit_exp 0] => ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $fnat{N : N, n : n, m#3 : m, exp#2 : exp}(N, n) = `POS`_fN(`NORM`_fNmag{m#3, exp#2}(n, (0 : nat <:> int))) + def $fnat{N : N, n : n}(N, n) = `POS`_fN(`NORM`_fNmag(n, (0 : nat <:> int))) [check_dims] N DecD fone(N : N) : fN(N) [visit_id N] not free [visit_exp N] [visit_id N] not free -[check_dims] N exp#4 m#5 +[check_dims] N [visit_exp N] [visit_id N] -[visit_exp `POS`_fN(`NORM`_fNmag{m#5, exp#4}(1, (0 : nat <:> int)))] -[visit_exp (`NORM`_fNmag{m#5, exp#4}(1, (0 : nat <:> int)))] -[visit_exp `NORM`_fNmag{m#5, exp#4}(1, (0 : nat <:> int))] -[visit_exp m#5] -[visit_id m#5] -[visit_exp exp#4] -[visit_id exp#4] +[visit_exp `POS`_fN(`NORM`_fNmag(1, (0 : nat <:> int)))] +[visit_exp (`NORM`_fNmag(1, (0 : nat <:> int)))] +[visit_exp `NORM`_fNmag(1, (0 : nat <:> int))] [visit_exp (1, (0 : nat <:> int))] [visit_exp 1] [visit_exp (0 : nat <:> int)] [visit_exp 0] => ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $fone{N : N, m#5 : m, exp#4 : exp}(N) = `POS`_fN(`NORM`_fNmag{m#5, exp#4}(1, (0 : nat <:> int))) + def $fone{N : N}(N) = `POS`_fN(`NORM`_fNmag(1, (0 : nat <:> int))) [check_dims] N DecD canon_(N : N) : nat [visit_id N] not free @@ -4747,13 +4746,16 @@ DecD canon_(N : N) : nat [visit_id N] [check_dims] [check_dims] +[check_dims] +[scope_enter X*] +[visit_id X*] not free +[visit_id X*] no dims +[scope_exit X*] --- 1 --- [check_dims] X --- 2 --- --- 3 --- --- 4 --- -[visit_id X*] no dims -[visit_id X*] [visit_exp (|X*{X <- `X*`}| < (2 ^ 32))] [visit_exp |X*{X <- `X*`}|] [visit_exp X*{X <- `X*`}] @@ -4779,13 +4781,16 @@ DecD canon_(N : N) : nat DecD utf8(char*) : byte* [visit_id _] not free [check_dims] +[check_dims] +[scope_enter char*] +[visit_id char*] not free +[visit_id char*] no dims +[scope_exit char*] --- 1 --- [check_dims] char --- 2 --- --- 3 --- --- 4 --- -[visit_id char*] no dims -[visit_id char*] [visit_exp (|$utf8(char*{char <- `char*`})| < (2 ^ 32))] [visit_exp |$utf8(char*{char <- `char*`})|] [visit_exp $utf8(char*{char <- `char*`})] @@ -4816,41 +4821,56 @@ DecD utf8(char*) : byte* [check_dims] [check_dims] [check_dims] ---- 1 --- [check_dims] ---- 2 --- ---- 3 --- ---- 4 --- +[scope_enter funcidx] +[visit_id funcidx] not free [visit_id funcidx] no dims -[visit_id funcidx] +[scope_exit funcidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter globalidx] +[visit_id globalidx] not free [visit_id globalidx] no dims -[visit_id globalidx] +[scope_exit globalidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter tableidx] +[visit_id tableidx] not free [visit_id tableidx] no dims -[visit_id tableidx] +[scope_exit tableidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter memidx] +[visit_id memidx] not free [visit_id memidx] no dims -[visit_id memidx] +[scope_exit memidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter tagidx] +[visit_id tagidx] not free [visit_id tagidx] no dims -[visit_id tagidx] +[scope_exit tagidx] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- [check_dims] [check_dims] [check_dims] @@ -4877,12 +4897,10 @@ DecD tagsxx(externidx*) : tagidx* => ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $funcsxx([]) = [] -[check_dims] funcidx#1 x xx -[visit_exp [`FUNC`_externidx{funcidx#1}(x)] ++ xx*{xx <- `xx*`}] -[visit_exp [`FUNC`_externidx{funcidx#1}(x)]] -[visit_exp `FUNC`_externidx{funcidx#1}(x)] -[visit_exp funcidx#1] -[visit_id funcidx#1] +[check_dims] x xx +[visit_exp [`FUNC`_externidx(x)] ++ xx*{xx <- `xx*`}] +[visit_exp [`FUNC`_externidx(x)]] +[visit_exp `FUNC`_externidx(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -4911,7 +4929,7 @@ DecD tagsxx(externidx*) : tagidx* [visit_id xx*] no dims => ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $funcsxx{funcidx#1 : funcidx, x : idx, `xx*` : externidx*}([`FUNC`_externidx{funcidx#1}(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $funcsxx(xx*{xx <- `xx*`}) + def $funcsxx{x : idx, `xx*` : externidx*}([`FUNC`_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $funcsxx(xx*{xx <- `xx*`}) [check_dims] externidx xx [visit_exp [externidx] ++ xx*{xx <- `xx*`}] [visit_exp [externidx]] @@ -4946,12 +4964,10 @@ DecD tagsxx(externidx*) : tagidx* => ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $globalsxx([]) = [] -[check_dims] globalidx#1 x xx -[visit_exp [`GLOBAL`_externidx{globalidx#1}(x)] ++ xx*{xx <- `xx*`}] -[visit_exp [`GLOBAL`_externidx{globalidx#1}(x)]] -[visit_exp `GLOBAL`_externidx{globalidx#1}(x)] -[visit_exp globalidx#1] -[visit_id globalidx#1] +[check_dims] x xx +[visit_exp [`GLOBAL`_externidx(x)] ++ xx*{xx <- `xx*`}] +[visit_exp [`GLOBAL`_externidx(x)]] +[visit_exp `GLOBAL`_externidx(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -4980,7 +4996,7 @@ DecD tagsxx(externidx*) : tagidx* [visit_id xx*] no dims => ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $globalsxx{globalidx#1 : globalidx, x : idx, `xx*` : externidx*}([`GLOBAL`_externidx{globalidx#1}(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $globalsxx(xx*{xx <- `xx*`}) + def $globalsxx{x : idx, `xx*` : externidx*}([`GLOBAL`_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $globalsxx(xx*{xx <- `xx*`}) [check_dims] externidx xx [visit_exp [externidx] ++ xx*{xx <- `xx*`}] [visit_exp [externidx]] @@ -5015,12 +5031,10 @@ DecD tagsxx(externidx*) : tagidx* => ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $tablesxx([]) = [] -[check_dims] tableidx#1 x xx -[visit_exp [`TABLE`_externidx{tableidx#1}(x)] ++ xx*{xx <- `xx*`}] -[visit_exp [`TABLE`_externidx{tableidx#1}(x)]] -[visit_exp `TABLE`_externidx{tableidx#1}(x)] -[visit_exp tableidx#1] -[visit_id tableidx#1] +[check_dims] x xx +[visit_exp [`TABLE`_externidx(x)] ++ xx*{xx <- `xx*`}] +[visit_exp [`TABLE`_externidx(x)]] +[visit_exp `TABLE`_externidx(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -5049,7 +5063,7 @@ DecD tagsxx(externidx*) : tagidx* [visit_id xx*] no dims => ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $tablesxx{tableidx#1 : tableidx, x : idx, `xx*` : externidx*}([`TABLE`_externidx{tableidx#1}(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $tablesxx(xx*{xx <- `xx*`}) + def $tablesxx{x : idx, `xx*` : externidx*}([`TABLE`_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $tablesxx(xx*{xx <- `xx*`}) [check_dims] externidx xx [visit_exp [externidx] ++ xx*{xx <- `xx*`}] [visit_exp [externidx]] @@ -5084,12 +5098,10 @@ DecD tagsxx(externidx*) : tagidx* => ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $memsxx([]) = [] -[check_dims] memidx#1 x xx -[visit_exp [`MEM`_externidx{memidx#1}(x)] ++ xx*{xx <- `xx*`}] -[visit_exp [`MEM`_externidx{memidx#1}(x)]] -[visit_exp `MEM`_externidx{memidx#1}(x)] -[visit_exp memidx#1] -[visit_id memidx#1] +[check_dims] x xx +[visit_exp [`MEM`_externidx(x)] ++ xx*{xx <- `xx*`}] +[visit_exp [`MEM`_externidx(x)]] +[visit_exp `MEM`_externidx(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -5118,7 +5130,7 @@ DecD tagsxx(externidx*) : tagidx* [visit_id xx*] no dims => ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $memsxx{memidx#1 : memidx, x : idx, `xx*` : externidx*}([`MEM`_externidx{memidx#1}(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $memsxx(xx*{xx <- `xx*`}) + def $memsxx{x : idx, `xx*` : externidx*}([`MEM`_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $memsxx(xx*{xx <- `xx*`}) [check_dims] externidx xx [visit_exp [externidx] ++ xx*{xx <- `xx*`}] [visit_exp [externidx]] @@ -5153,12 +5165,10 @@ DecD tagsxx(externidx*) : tagidx* => ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $tagsxx([]) = [] -[check_dims] tagidx#1 x xx -[visit_exp [`TAG`_externidx{tagidx#1}(x)] ++ xx*{xx <- `xx*`}] -[visit_exp [`TAG`_externidx{tagidx#1}(x)]] -[visit_exp `TAG`_externidx{tagidx#1}(x)] -[visit_exp tagidx#1] -[visit_id tagidx#1] +[check_dims] x xx +[visit_exp [`TAG`_externidx(x)] ++ xx*{xx <- `xx*`}] +[visit_exp [`TAG`_externidx(x)]] +[visit_exp `TAG`_externidx(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -5187,7 +5197,7 @@ DecD tagsxx(externidx*) : tagidx* [visit_id xx*] no dims => ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $tagsxx{tagidx#1 : tagidx, x : idx, `xx*` : externidx*}([`TAG`_externidx{tagidx#1}(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $tagsxx(xx*{xx <- `xx*`}) + def $tagsxx{x : idx, `xx*` : externidx*}([`TAG`_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $tagsxx(xx*{xx <- `xx*`}) [check_dims] externidx xx [visit_exp [externidx] ++ xx*{xx <- `xx*`}] [visit_exp [externidx]] @@ -5217,108 +5227,117 @@ DecD tagsxx(externidx*) : tagidx* def $tagsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $tagsxx(xx*{xx <- `xx*`}) -- otherwise [check_dims] ---- 1 --- [check_dims] ---- 2 --- ---- 3 --- ---- 4 --- +[scope_enter typeidx*] +[visit_id typeidx*] not free [visit_id typeidx*] no dims -[visit_id typeidx*] +[scope_exit typeidx*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter funcidx*] +[visit_id funcidx*] not free [visit_id funcidx*] no dims -[visit_id funcidx*] +[scope_exit funcidx*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter globalidx*] +[visit_id globalidx*] not free [visit_id globalidx*] no dims -[visit_id globalidx*] +[scope_exit globalidx*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter tableidx*] +[visit_id tableidx*] not free [visit_id tableidx*] no dims -[visit_id tableidx*] +[scope_exit tableidx*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter memidx*] +[visit_id memidx*] not free [visit_id memidx*] no dims -[visit_id memidx*] +[scope_exit memidx*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter elemidx*] +[visit_id elemidx*] not free [visit_id elemidx*] no dims -[visit_id elemidx*] +[scope_exit elemidx*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter dataidx*] +[visit_id dataidx*] not free [visit_id dataidx*] no dims -[visit_id dataidx*] +[scope_exit dataidx*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter localidx*] +[visit_id localidx*] not free [visit_id localidx*] no dims -[visit_id localidx*] +[scope_exit localidx*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter labelidx*] +[visit_id labelidx*] not free [visit_id labelidx*] no dims -[visit_id labelidx*] +[scope_exit labelidx*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- [check_dims] _ DecD free_opt(free?) : free [visit_id _] not free [check_dims] _ DecD free_list(free*) : free [visit_id _] not free -[check_dims] dataidx*#1 elemidx*#1 funcidx*#1 globalidx*#1 labelidx*#1 localidx*#1 memidx*#1 tableidx*#1 typeidx*#1 +[check_dims] [visit_exp ?()] -[visit_exp {`TYPES`{`typeidx*#1`} [], `FUNCS`{`funcidx*#1`} [], `GLOBALS`{`globalidx*#1`} [], `TABLES`{`tableidx*#1`} [], `MEMS`{`memidx*#1`} [], `ELEMS`{`elemidx*#1`} [], `DATAS`{`dataidx*#1`} [], `LOCALS`{`localidx*#1`} [], `LABELS`{`labelidx*#1`} []}] -[visit_exp `typeidx*#1`] -[visit_id typeidx*#1] +[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] [visit_exp []] -[visit_exp `funcidx*#1`] -[visit_id funcidx*#1] [visit_exp []] -[visit_exp `globalidx*#1`] -[visit_id globalidx*#1] [visit_exp []] -[visit_exp `tableidx*#1`] -[visit_id tableidx*#1] [visit_exp []] -[visit_exp `memidx*#1`] -[visit_id memidx*#1] [visit_exp []] -[visit_exp `elemidx*#1`] -[visit_id elemidx*#1] [visit_exp []] -[visit_exp `dataidx*#1`] -[visit_id dataidx*#1] [visit_exp []] -[visit_exp `localidx*#1`] -[visit_id localidx*#1] [visit_exp []] -[visit_exp `labelidx*#1`] -[visit_id labelidx*#1] [visit_exp []] => ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_opt{`typeidx*#1` : typeidx*, `funcidx*#1` : funcidx*, `globalidx*#1` : globalidx*, `tableidx*#1` : tableidx*, `memidx*#1` : memidx*, `elemidx*#1` : elemidx*, `dataidx*#1` : dataidx*, `localidx*#1` : localidx*, `labelidx*#1` : labelidx*}(?()) = {`TYPES`{`typeidx*#1`} [], `FUNCS`{`funcidx*#1`} [], `GLOBALS`{`globalidx*#1`} [], `TABLES`{`tableidx*#1`} [], `MEMS`{`memidx*#1`} [], `ELEMS`{`elemidx*#1`} [], `DATAS`{`dataidx*#1`} [], `LOCALS`{`localidx*#1`} [], `LABELS`{`labelidx*#1`} []} + def $free_opt(?()) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} [check_dims] free [visit_exp ?(free)] [visit_exp free] @@ -5328,39 +5347,21 @@ DecD free_list(free*) : free => ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt{free : free}(?(free)) = free -[check_dims] dataidx*#2 elemidx*#2 funcidx*#2 globalidx*#2 labelidx*#2 localidx*#2 memidx*#2 tableidx*#2 typeidx*#2 +[check_dims] [visit_exp []] -[visit_exp {`TYPES`{`typeidx*#2`} [], `FUNCS`{`funcidx*#2`} [], `GLOBALS`{`globalidx*#2`} [], `TABLES`{`tableidx*#2`} [], `MEMS`{`memidx*#2`} [], `ELEMS`{`elemidx*#2`} [], `DATAS`{`dataidx*#2`} [], `LOCALS`{`localidx*#2`} [], `LABELS`{`labelidx*#2`} []}] -[visit_exp `typeidx*#2`] -[visit_id typeidx*#2] +[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] [visit_exp []] -[visit_exp `funcidx*#2`] -[visit_id funcidx*#2] [visit_exp []] -[visit_exp `globalidx*#2`] -[visit_id globalidx*#2] [visit_exp []] -[visit_exp `tableidx*#2`] -[visit_id tableidx*#2] [visit_exp []] -[visit_exp `memidx*#2`] -[visit_id memidx*#2] [visit_exp []] -[visit_exp `elemidx*#2`] -[visit_id elemidx*#2] [visit_exp []] -[visit_exp `dataidx*#2`] -[visit_id dataidx*#2] [visit_exp []] -[visit_exp `localidx*#2`] -[visit_id localidx*#2] [visit_exp []] -[visit_exp `labelidx*#2`] -[visit_id labelidx*#2] [visit_exp []] => ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_list{`typeidx*#2` : typeidx*, `funcidx*#2` : funcidx*, `globalidx*#2` : globalidx*, `tableidx*#2` : tableidx*, `memidx*#2` : memidx*, `elemidx*#2` : elemidx*, `dataidx*#2` : dataidx*, `localidx*#2` : localidx*, `labelidx*#2` : labelidx*}([]) = {`TYPES`{`typeidx*#2`} [], `FUNCS`{`funcidx*#2`} [], `GLOBALS`{`globalidx*#2`} [], `TABLES`{`tableidx*#2`} [], `MEMS`{`memidx*#2`} [], `ELEMS`{`elemidx*#2`} [], `DATAS`{`dataidx*#2`} [], `LOCALS`{`localidx*#2`} [], `LABELS`{`labelidx*#2`} []} + def $free_list([]) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} [check_dims] free free' [visit_exp [free] ++ free'*{free' <- `free'*`}] [visit_exp [free]] @@ -5421,334 +5422,170 @@ DecD free_labelidx(labelidx : labelidx) : free [check_dims] externidx DecD free_externidx(externidx : externidx) : free [visit_id externidx] not free -[check_dims] dataidx*#3 elemidx*#3 funcidx*#3 globalidx*#3 labelidx*#3 localidx*#3 memidx*#3 tableidx*#3 typeidx typeidx*#3 +[check_dims] typeidx [visit_exp typeidx] [visit_id typeidx] -[visit_exp {`TYPES`{`typeidx*#3`} [typeidx], `FUNCS`{`funcidx*#3`} [], `GLOBALS`{`globalidx*#3`} [], `TABLES`{`tableidx*#3`} [], `MEMS`{`memidx*#3`} [], `ELEMS`{`elemidx*#3`} [], `DATAS`{`dataidx*#3`} [], `LOCALS`{`localidx*#3`} [], `LABELS`{`labelidx*#3`} []}] -[visit_exp `typeidx*#3`] -[visit_id typeidx*#3] +[visit_exp {`TYPES` [typeidx], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] [visit_exp [typeidx]] [visit_exp typeidx] [visit_id typeidx] not free -[visit_exp `funcidx*#3`] -[visit_id funcidx*#3] [visit_exp []] -[visit_exp `globalidx*#3`] -[visit_id globalidx*#3] [visit_exp []] -[visit_exp `tableidx*#3`] -[visit_id tableidx*#3] [visit_exp []] -[visit_exp `memidx*#3`] -[visit_id memidx*#3] [visit_exp []] -[visit_exp `elemidx*#3`] -[visit_id elemidx*#3] [visit_exp []] -[visit_exp `dataidx*#3`] -[visit_id dataidx*#3] [visit_exp []] -[visit_exp `localidx*#3`] -[visit_id localidx*#3] [visit_exp []] -[visit_exp `labelidx*#3`] -[visit_id labelidx*#3] [visit_exp []] => ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_typeidx{typeidx : typeidx, `typeidx*#3` : typeidx*, `funcidx*#3` : funcidx*, `globalidx*#3` : globalidx*, `tableidx*#3` : tableidx*, `memidx*#3` : memidx*, `elemidx*#3` : elemidx*, `dataidx*#3` : dataidx*, `localidx*#3` : localidx*, `labelidx*#3` : labelidx*}(typeidx) = {`TYPES`{`typeidx*#3`} [typeidx], `FUNCS`{`funcidx*#3`} [], `GLOBALS`{`globalidx*#3`} [], `TABLES`{`tableidx*#3`} [], `MEMS`{`memidx*#3`} [], `ELEMS`{`elemidx*#3`} [], `DATAS`{`dataidx*#3`} [], `LOCALS`{`localidx*#3`} [], `LABELS`{`labelidx*#3`} []} -[check_dims] dataidx*#4 elemidx*#4 funcidx funcidx*#4 globalidx*#4 labelidx*#4 localidx*#4 memidx*#4 tableidx*#4 typeidx*#4 + def $free_typeidx{typeidx : typeidx}(typeidx) = {`TYPES` [typeidx], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} +[check_dims] funcidx [visit_exp funcidx] [visit_id funcidx] -[visit_exp {`TYPES`{`typeidx*#4`} [], `FUNCS`{`funcidx*#4`} [funcidx], `GLOBALS`{`globalidx*#4`} [], `TABLES`{`tableidx*#4`} [], `MEMS`{`memidx*#4`} [], `ELEMS`{`elemidx*#4`} [], `DATAS`{`dataidx*#4`} [], `LOCALS`{`localidx*#4`} [], `LABELS`{`labelidx*#4`} []}] -[visit_exp `typeidx*#4`] -[visit_id typeidx*#4] +[visit_exp {`TYPES` [], `FUNCS` [funcidx], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] [visit_exp []] -[visit_exp `funcidx*#4`] -[visit_id funcidx*#4] [visit_exp [funcidx]] [visit_exp funcidx] [visit_id funcidx] not free -[visit_exp `globalidx*#4`] -[visit_id globalidx*#4] [visit_exp []] -[visit_exp `tableidx*#4`] -[visit_id tableidx*#4] [visit_exp []] -[visit_exp `memidx*#4`] -[visit_id memidx*#4] [visit_exp []] -[visit_exp `elemidx*#4`] -[visit_id elemidx*#4] [visit_exp []] -[visit_exp `dataidx*#4`] -[visit_id dataidx*#4] [visit_exp []] -[visit_exp `localidx*#4`] -[visit_id localidx*#4] [visit_exp []] -[visit_exp `labelidx*#4`] -[visit_id labelidx*#4] [visit_exp []] => ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_funcidx{funcidx : funcidx, `typeidx*#4` : typeidx*, `funcidx*#4` : funcidx*, `globalidx*#4` : globalidx*, `tableidx*#4` : tableidx*, `memidx*#4` : memidx*, `elemidx*#4` : elemidx*, `dataidx*#4` : dataidx*, `localidx*#4` : localidx*, `labelidx*#4` : labelidx*}(funcidx) = {`TYPES`{`typeidx*#4`} [], `FUNCS`{`funcidx*#4`} [funcidx], `GLOBALS`{`globalidx*#4`} [], `TABLES`{`tableidx*#4`} [], `MEMS`{`memidx*#4`} [], `ELEMS`{`elemidx*#4`} [], `DATAS`{`dataidx*#4`} [], `LOCALS`{`localidx*#4`} [], `LABELS`{`labelidx*#4`} []} -[check_dims] dataidx*#5 elemidx*#5 funcidx*#5 globalidx globalidx*#5 labelidx*#5 localidx*#5 memidx*#5 tableidx*#5 typeidx*#5 + def $free_funcidx{funcidx : funcidx}(funcidx) = {`TYPES` [], `FUNCS` [funcidx], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} +[check_dims] globalidx [visit_exp globalidx] [visit_id globalidx] -[visit_exp {`TYPES`{`typeidx*#5`} [], `FUNCS`{`funcidx*#5`} [], `GLOBALS`{`globalidx*#5`} [globalidx], `TABLES`{`tableidx*#5`} [], `MEMS`{`memidx*#5`} [], `ELEMS`{`elemidx*#5`} [], `DATAS`{`dataidx*#5`} [], `LOCALS`{`localidx*#5`} [], `LABELS`{`labelidx*#5`} []}] -[visit_exp `typeidx*#5`] -[visit_id typeidx*#5] +[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [globalidx], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] [visit_exp []] -[visit_exp `funcidx*#5`] -[visit_id funcidx*#5] [visit_exp []] -[visit_exp `globalidx*#5`] -[visit_id globalidx*#5] [visit_exp [globalidx]] [visit_exp globalidx] [visit_id globalidx] not free -[visit_exp `tableidx*#5`] -[visit_id tableidx*#5] [visit_exp []] -[visit_exp `memidx*#5`] -[visit_id memidx*#5] [visit_exp []] -[visit_exp `elemidx*#5`] -[visit_id elemidx*#5] [visit_exp []] -[visit_exp `dataidx*#5`] -[visit_id dataidx*#5] [visit_exp []] -[visit_exp `localidx*#5`] -[visit_id localidx*#5] [visit_exp []] -[visit_exp `labelidx*#5`] -[visit_id labelidx*#5] [visit_exp []] => ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_globalidx{globalidx : globalidx, `typeidx*#5` : typeidx*, `funcidx*#5` : funcidx*, `globalidx*#5` : globalidx*, `tableidx*#5` : tableidx*, `memidx*#5` : memidx*, `elemidx*#5` : elemidx*, `dataidx*#5` : dataidx*, `localidx*#5` : localidx*, `labelidx*#5` : labelidx*}(globalidx) = {`TYPES`{`typeidx*#5`} [], `FUNCS`{`funcidx*#5`} [], `GLOBALS`{`globalidx*#5`} [globalidx], `TABLES`{`tableidx*#5`} [], `MEMS`{`memidx*#5`} [], `ELEMS`{`elemidx*#5`} [], `DATAS`{`dataidx*#5`} [], `LOCALS`{`localidx*#5`} [], `LABELS`{`labelidx*#5`} []} -[check_dims] dataidx*#6 elemidx*#6 funcidx*#6 globalidx*#6 labelidx*#6 localidx*#6 memidx*#6 tableidx tableidx*#6 typeidx*#6 + def $free_globalidx{globalidx : globalidx}(globalidx) = {`TYPES` [], `FUNCS` [], `GLOBALS` [globalidx], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} +[check_dims] tableidx [visit_exp tableidx] [visit_id tableidx] -[visit_exp {`TYPES`{`typeidx*#6`} [], `FUNCS`{`funcidx*#6`} [], `GLOBALS`{`globalidx*#6`} [], `TABLES`{`tableidx*#6`} [tableidx], `MEMS`{`memidx*#6`} [], `ELEMS`{`elemidx*#6`} [], `DATAS`{`dataidx*#6`} [], `LOCALS`{`localidx*#6`} [], `LABELS`{`labelidx*#6`} []}] -[visit_exp `typeidx*#6`] -[visit_id typeidx*#6] +[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [tableidx], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] [visit_exp []] -[visit_exp `funcidx*#6`] -[visit_id funcidx*#6] [visit_exp []] -[visit_exp `globalidx*#6`] -[visit_id globalidx*#6] [visit_exp []] -[visit_exp `tableidx*#6`] -[visit_id tableidx*#6] [visit_exp [tableidx]] [visit_exp tableidx] [visit_id tableidx] not free -[visit_exp `memidx*#6`] -[visit_id memidx*#6] [visit_exp []] -[visit_exp `elemidx*#6`] -[visit_id elemidx*#6] [visit_exp []] -[visit_exp `dataidx*#6`] -[visit_id dataidx*#6] [visit_exp []] -[visit_exp `localidx*#6`] -[visit_id localidx*#6] [visit_exp []] -[visit_exp `labelidx*#6`] -[visit_id labelidx*#6] [visit_exp []] => ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_tableidx{tableidx : tableidx, `typeidx*#6` : typeidx*, `funcidx*#6` : funcidx*, `globalidx*#6` : globalidx*, `tableidx*#6` : tableidx*, `memidx*#6` : memidx*, `elemidx*#6` : elemidx*, `dataidx*#6` : dataidx*, `localidx*#6` : localidx*, `labelidx*#6` : labelidx*}(tableidx) = {`TYPES`{`typeidx*#6`} [], `FUNCS`{`funcidx*#6`} [], `GLOBALS`{`globalidx*#6`} [], `TABLES`{`tableidx*#6`} [tableidx], `MEMS`{`memidx*#6`} [], `ELEMS`{`elemidx*#6`} [], `DATAS`{`dataidx*#6`} [], `LOCALS`{`localidx*#6`} [], `LABELS`{`labelidx*#6`} []} -[check_dims] dataidx*#7 elemidx*#7 funcidx*#7 globalidx*#7 labelidx*#7 localidx*#7 memidx memidx*#7 tableidx*#7 typeidx*#7 + def $free_tableidx{tableidx : tableidx}(tableidx) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [tableidx], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} +[check_dims] memidx [visit_exp memidx] [visit_id memidx] -[visit_exp {`TYPES`{`typeidx*#7`} [], `FUNCS`{`funcidx*#7`} [], `GLOBALS`{`globalidx*#7`} [], `TABLES`{`tableidx*#7`} [], `MEMS`{`memidx*#7`} [memidx], `ELEMS`{`elemidx*#7`} [], `DATAS`{`dataidx*#7`} [], `LOCALS`{`localidx*#7`} [], `LABELS`{`labelidx*#7`} []}] -[visit_exp `typeidx*#7`] -[visit_id typeidx*#7] +[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [memidx], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] [visit_exp []] -[visit_exp `funcidx*#7`] -[visit_id funcidx*#7] [visit_exp []] -[visit_exp `globalidx*#7`] -[visit_id globalidx*#7] [visit_exp []] -[visit_exp `tableidx*#7`] -[visit_id tableidx*#7] [visit_exp []] -[visit_exp `memidx*#7`] -[visit_id memidx*#7] [visit_exp [memidx]] [visit_exp memidx] [visit_id memidx] not free -[visit_exp `elemidx*#7`] -[visit_id elemidx*#7] [visit_exp []] -[visit_exp `dataidx*#7`] -[visit_id dataidx*#7] [visit_exp []] -[visit_exp `localidx*#7`] -[visit_id localidx*#7] [visit_exp []] -[visit_exp `labelidx*#7`] -[visit_id labelidx*#7] [visit_exp []] => ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_memidx{memidx : memidx, `typeidx*#7` : typeidx*, `funcidx*#7` : funcidx*, `globalidx*#7` : globalidx*, `tableidx*#7` : tableidx*, `memidx*#7` : memidx*, `elemidx*#7` : elemidx*, `dataidx*#7` : dataidx*, `localidx*#7` : localidx*, `labelidx*#7` : labelidx*}(memidx) = {`TYPES`{`typeidx*#7`} [], `FUNCS`{`funcidx*#7`} [], `GLOBALS`{`globalidx*#7`} [], `TABLES`{`tableidx*#7`} [], `MEMS`{`memidx*#7`} [memidx], `ELEMS`{`elemidx*#7`} [], `DATAS`{`dataidx*#7`} [], `LOCALS`{`localidx*#7`} [], `LABELS`{`labelidx*#7`} []} -[check_dims] dataidx*#8 elemidx elemidx*#8 funcidx*#8 globalidx*#8 labelidx*#8 localidx*#8 memidx*#8 tableidx*#8 typeidx*#8 + def $free_memidx{memidx : memidx}(memidx) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [memidx], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} +[check_dims] elemidx [visit_exp elemidx] [visit_id elemidx] -[visit_exp {`TYPES`{`typeidx*#8`} [], `FUNCS`{`funcidx*#8`} [], `GLOBALS`{`globalidx*#8`} [], `TABLES`{`tableidx*#8`} [], `MEMS`{`memidx*#8`} [], `ELEMS`{`elemidx*#8`} [elemidx], `DATAS`{`dataidx*#8`} [], `LOCALS`{`localidx*#8`} [], `LABELS`{`labelidx*#8`} []}] -[visit_exp `typeidx*#8`] -[visit_id typeidx*#8] +[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [elemidx], `DATAS` [], `LOCALS` [], `LABELS` []}] [visit_exp []] -[visit_exp `funcidx*#8`] -[visit_id funcidx*#8] [visit_exp []] -[visit_exp `globalidx*#8`] -[visit_id globalidx*#8] [visit_exp []] -[visit_exp `tableidx*#8`] -[visit_id tableidx*#8] [visit_exp []] -[visit_exp `memidx*#8`] -[visit_id memidx*#8] [visit_exp []] -[visit_exp `elemidx*#8`] -[visit_id elemidx*#8] [visit_exp [elemidx]] [visit_exp elemidx] [visit_id elemidx] not free -[visit_exp `dataidx*#8`] -[visit_id dataidx*#8] [visit_exp []] -[visit_exp `localidx*#8`] -[visit_id localidx*#8] [visit_exp []] -[visit_exp `labelidx*#8`] -[visit_id labelidx*#8] [visit_exp []] => ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_elemidx{elemidx : elemidx, `typeidx*#8` : typeidx*, `funcidx*#8` : funcidx*, `globalidx*#8` : globalidx*, `tableidx*#8` : tableidx*, `memidx*#8` : memidx*, `elemidx*#8` : elemidx*, `dataidx*#8` : dataidx*, `localidx*#8` : localidx*, `labelidx*#8` : labelidx*}(elemidx) = {`TYPES`{`typeidx*#8`} [], `FUNCS`{`funcidx*#8`} [], `GLOBALS`{`globalidx*#8`} [], `TABLES`{`tableidx*#8`} [], `MEMS`{`memidx*#8`} [], `ELEMS`{`elemidx*#8`} [elemidx], `DATAS`{`dataidx*#8`} [], `LOCALS`{`localidx*#8`} [], `LABELS`{`labelidx*#8`} []} -[check_dims] dataidx dataidx*#9 elemidx*#9 funcidx*#9 globalidx*#9 labelidx*#9 localidx*#9 memidx*#9 tableidx*#9 typeidx*#9 + def $free_elemidx{elemidx : elemidx}(elemidx) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [elemidx], `DATAS` [], `LOCALS` [], `LABELS` []} +[check_dims] dataidx [visit_exp dataidx] [visit_id dataidx] -[visit_exp {`TYPES`{`typeidx*#9`} [], `FUNCS`{`funcidx*#9`} [], `GLOBALS`{`globalidx*#9`} [], `TABLES`{`tableidx*#9`} [], `MEMS`{`memidx*#9`} [], `ELEMS`{`elemidx*#9`} [], `DATAS`{`dataidx*#9`} [dataidx], `LOCALS`{`localidx*#9`} [], `LABELS`{`labelidx*#9`} []}] -[visit_exp `typeidx*#9`] -[visit_id typeidx*#9] +[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [dataidx], `LOCALS` [], `LABELS` []}] [visit_exp []] -[visit_exp `funcidx*#9`] -[visit_id funcidx*#9] [visit_exp []] -[visit_exp `globalidx*#9`] -[visit_id globalidx*#9] [visit_exp []] -[visit_exp `tableidx*#9`] -[visit_id tableidx*#9] [visit_exp []] -[visit_exp `memidx*#9`] -[visit_id memidx*#9] [visit_exp []] -[visit_exp `elemidx*#9`] -[visit_id elemidx*#9] [visit_exp []] -[visit_exp `dataidx*#9`] -[visit_id dataidx*#9] [visit_exp [dataidx]] [visit_exp dataidx] [visit_id dataidx] not free -[visit_exp `localidx*#9`] -[visit_id localidx*#9] [visit_exp []] -[visit_exp `labelidx*#9`] -[visit_id labelidx*#9] [visit_exp []] => ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_dataidx{dataidx : dataidx, `typeidx*#9` : typeidx*, `funcidx*#9` : funcidx*, `globalidx*#9` : globalidx*, `tableidx*#9` : tableidx*, `memidx*#9` : memidx*, `elemidx*#9` : elemidx*, `dataidx*#9` : dataidx*, `localidx*#9` : localidx*, `labelidx*#9` : labelidx*}(dataidx) = {`TYPES`{`typeidx*#9`} [], `FUNCS`{`funcidx*#9`} [], `GLOBALS`{`globalidx*#9`} [], `TABLES`{`tableidx*#9`} [], `MEMS`{`memidx*#9`} [], `ELEMS`{`elemidx*#9`} [], `DATAS`{`dataidx*#9`} [dataidx], `LOCALS`{`localidx*#9`} [], `LABELS`{`labelidx*#9`} []} -[check_dims] dataidx*#10 elemidx*#10 funcidx*#10 globalidx*#10 labelidx*#10 localidx localidx*#10 memidx*#10 tableidx*#10 typeidx*#10 + def $free_dataidx{dataidx : dataidx}(dataidx) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [dataidx], `LOCALS` [], `LABELS` []} +[check_dims] localidx [visit_exp localidx] [visit_id localidx] -[visit_exp {`TYPES`{`typeidx*#10`} [], `FUNCS`{`funcidx*#10`} [], `GLOBALS`{`globalidx*#10`} [], `TABLES`{`tableidx*#10`} [], `MEMS`{`memidx*#10`} [], `ELEMS`{`elemidx*#10`} [], `DATAS`{`dataidx*#10`} [], `LOCALS`{`localidx*#10`} [localidx], `LABELS`{`labelidx*#10`} []}] -[visit_exp `typeidx*#10`] -[visit_id typeidx*#10] +[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [localidx], `LABELS` []}] [visit_exp []] -[visit_exp `funcidx*#10`] -[visit_id funcidx*#10] [visit_exp []] -[visit_exp `globalidx*#10`] -[visit_id globalidx*#10] [visit_exp []] -[visit_exp `tableidx*#10`] -[visit_id tableidx*#10] [visit_exp []] -[visit_exp `memidx*#10`] -[visit_id memidx*#10] [visit_exp []] -[visit_exp `elemidx*#10`] -[visit_id elemidx*#10] [visit_exp []] -[visit_exp `dataidx*#10`] -[visit_id dataidx*#10] [visit_exp []] -[visit_exp `localidx*#10`] -[visit_id localidx*#10] [visit_exp [localidx]] [visit_exp localidx] [visit_id localidx] not free -[visit_exp `labelidx*#10`] -[visit_id labelidx*#10] [visit_exp []] => ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_localidx{localidx : localidx, `typeidx*#10` : typeidx*, `funcidx*#10` : funcidx*, `globalidx*#10` : globalidx*, `tableidx*#10` : tableidx*, `memidx*#10` : memidx*, `elemidx*#10` : elemidx*, `dataidx*#10` : dataidx*, `localidx*#10` : localidx*, `labelidx*#10` : labelidx*}(localidx) = {`TYPES`{`typeidx*#10`} [], `FUNCS`{`funcidx*#10`} [], `GLOBALS`{`globalidx*#10`} [], `TABLES`{`tableidx*#10`} [], `MEMS`{`memidx*#10`} [], `ELEMS`{`elemidx*#10`} [], `DATAS`{`dataidx*#10`} [], `LOCALS`{`localidx*#10`} [localidx], `LABELS`{`labelidx*#10`} []} -[check_dims] dataidx*#11 elemidx*#11 funcidx*#11 globalidx*#11 labelidx labelidx*#11 localidx*#11 memidx*#11 tableidx*#11 typeidx*#11 + def $free_localidx{localidx : localidx}(localidx) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [localidx], `LABELS` []} +[check_dims] labelidx [visit_exp labelidx] [visit_id labelidx] -[visit_exp {`TYPES`{`typeidx*#11`} [], `FUNCS`{`funcidx*#11`} [], `GLOBALS`{`globalidx*#11`} [], `TABLES`{`tableidx*#11`} [], `MEMS`{`memidx*#11`} [], `ELEMS`{`elemidx*#11`} [], `DATAS`{`dataidx*#11`} [], `LOCALS`{`localidx*#11`} [], `LABELS`{`labelidx*#11`} [labelidx]}] -[visit_exp `typeidx*#11`] -[visit_id typeidx*#11] +[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` [labelidx]}] [visit_exp []] -[visit_exp `funcidx*#11`] -[visit_id funcidx*#11] [visit_exp []] -[visit_exp `globalidx*#11`] -[visit_id globalidx*#11] [visit_exp []] -[visit_exp `tableidx*#11`] -[visit_id tableidx*#11] [visit_exp []] -[visit_exp `memidx*#11`] -[visit_id memidx*#11] [visit_exp []] -[visit_exp `elemidx*#11`] -[visit_id elemidx*#11] [visit_exp []] -[visit_exp `dataidx*#11`] -[visit_id dataidx*#11] [visit_exp []] -[visit_exp `localidx*#11`] -[visit_id localidx*#11] [visit_exp []] -[visit_exp `labelidx*#11`] -[visit_id labelidx*#11] [visit_exp [labelidx]] [visit_exp labelidx] [visit_id labelidx] not free => ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_labelidx{labelidx : labelidx, `typeidx*#11` : typeidx*, `funcidx*#11` : funcidx*, `globalidx*#11` : globalidx*, `tableidx*#11` : tableidx*, `memidx*#11` : memidx*, `elemidx*#11` : elemidx*, `dataidx*#11` : dataidx*, `localidx*#11` : localidx*, `labelidx*#11` : labelidx*}(labelidx) = {`TYPES`{`typeidx*#11`} [], `FUNCS`{`funcidx*#11`} [], `GLOBALS`{`globalidx*#11`} [], `TABLES`{`tableidx*#11`} [], `MEMS`{`memidx*#11`} [], `ELEMS`{`elemidx*#11`} [], `DATAS`{`dataidx*#11`} [], `LOCALS`{`localidx*#11`} [], `LABELS`{`labelidx*#11`} [labelidx]} -[check_dims] funcidx funcidx#3 -[visit_exp `FUNC`_externidx{funcidx#3}(funcidx)] -[visit_exp funcidx#3] -[visit_id funcidx#3] + def $free_labelidx{labelidx : labelidx}(labelidx) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` [labelidx]} +[check_dims] funcidx +[visit_exp `FUNC`_externidx(funcidx)] [visit_exp (funcidx)] [visit_exp funcidx] [visit_id funcidx] @@ -5757,11 +5594,9 @@ DecD free_externidx(externidx : externidx) : free [visit_id funcidx] not free => ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{funcidx#3 : funcidx, funcidx : funcidx}(`FUNC`_externidx{funcidx#3}(funcidx)) = $free_funcidx(funcidx) -[check_dims] globalidx globalidx#3 -[visit_exp `GLOBAL`_externidx{globalidx#3}(globalidx)] -[visit_exp globalidx#3] -[visit_id globalidx#3] + def $free_externidx{funcidx : funcidx}(`FUNC`_externidx(funcidx)) = $free_funcidx(funcidx) +[check_dims] globalidx +[visit_exp `GLOBAL`_externidx(globalidx)] [visit_exp (globalidx)] [visit_exp globalidx] [visit_id globalidx] @@ -5770,11 +5605,9 @@ DecD free_externidx(externidx : externidx) : free [visit_id globalidx] not free => ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{globalidx#3 : globalidx, globalidx : globalidx}(`GLOBAL`_externidx{globalidx#3}(globalidx)) = $free_globalidx(globalidx) -[check_dims] tableidx tableidx#3 -[visit_exp `TABLE`_externidx{tableidx#3}(tableidx)] -[visit_exp tableidx#3] -[visit_id tableidx#3] + def $free_externidx{globalidx : globalidx}(`GLOBAL`_externidx(globalidx)) = $free_globalidx(globalidx) +[check_dims] tableidx +[visit_exp `TABLE`_externidx(tableidx)] [visit_exp (tableidx)] [visit_exp tableidx] [visit_id tableidx] @@ -5783,11 +5616,9 @@ DecD free_externidx(externidx : externidx) : free [visit_id tableidx] not free => ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{tableidx#3 : tableidx, tableidx : tableidx}(`TABLE`_externidx{tableidx#3}(tableidx)) = $free_tableidx(tableidx) -[check_dims] memidx memidx#3 -[visit_exp `MEM`_externidx{memidx#3}(memidx)] -[visit_exp memidx#3] -[visit_id memidx#3] + def $free_externidx{tableidx : tableidx}(`TABLE`_externidx(tableidx)) = $free_tableidx(tableidx) +[check_dims] memidx +[visit_exp `MEM`_externidx(memidx)] [visit_exp (memidx)] [visit_exp memidx] [visit_id memidx] @@ -5796,7 +5627,8 @@ DecD free_externidx(externidx : externidx) : free [visit_id memidx] not free => ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{memidx#3 : memidx, memidx : memidx}(`MEM`_externidx{memidx#3}(memidx)) = $free_memidx(memidx) + def $free_externidx{memidx : memidx}(`MEM`_externidx(memidx)) = $free_memidx(memidx) +[check_dims] [check_dims] --- 1 --- [check_dims] @@ -5804,38 +5636,45 @@ DecD free_externidx(externidx : externidx) : free --- 3 --- --- 4 --- [check_dims] +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- [check_dims] +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- [check_dims] +[check_dims] --- 1 --- [check_dims] --- 2 --- @@ -5843,124 +5682,160 @@ DecD free_externidx(externidx : externidx) : free --- 4 --- [check_dims] [check_dims] +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- [check_dims] +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- [check_dims] +[check_dims] +[scope_enter rectype] +[visit_id rectype] not free +[visit_id rectype] no dims +[scope_enter n] +[visit_id n] not free +[visit_id n] no dims +[scope_exit n] +[scope_exit rectype] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id rectype] no dims -[visit_id rectype] -[visit_id n] no dims -[visit_id n] [check_dims] +[check_dims] +[scope_enter typeidx] +[visit_id typeidx] not free +[visit_id typeidx] no dims +[scope_exit typeidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id typeidx] no dims -[visit_id typeidx] [check_dims] +[check_dims] +[scope_enter n] +[visit_id n] not free +[visit_id n] no dims +[scope_exit n] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id n] no dims -[visit_id n] [check_dims] +[check_dims] +[scope_enter typeidx] +[visit_id typeidx] not free +[visit_id typeidx] no dims +[scope_exit typeidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id typeidx] no dims -[visit_id typeidx] +[check_dims] +[scope_enter n] +[visit_id n] not free +[visit_id n] no dims +[scope_exit n] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id n] no dims -[visit_id n] [check_dims] [check_dims] +[check_dims] +[scope_enter null?] +[visit_id null?] not free +[visit_id null?] no dims +[scope_enter heaptype] +[visit_id heaptype] not free +[visit_id heaptype] no dims +[scope_exit heaptype] +[scope_exit null?] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id null?] no dims -[visit_id null?] -[visit_id heaptype] no dims -[visit_id heaptype] +[check_dims] [check_dims] [check_dims] --- 1 --- @@ -5969,28 +5844,33 @@ DecD free_externidx(externidx : externidx) : free --- 3 --- --- 4 --- [check_dims] +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- [check_dims] +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- [check_dims] +[check_dims] --- 1 --- [check_dims] --- 2 --- @@ -6021,12 +5901,8 @@ DecD NULLFUNCREF : reftype DecD NULLEXNREF : reftype [check_dims] DecD NULLEXTERNREF : reftype -[check_dims] heaptype#11 null?#11 -[visit_exp `REF`_reftype{`null?#11`, heaptype#11}(?(`NULL`_null), `ANY`_heaptype)] -[visit_exp `null?#11`] -[visit_id null?#11] -[visit_exp heaptype#11] -[visit_id heaptype#11] +[check_dims] +[visit_exp `REF`_reftype(?(`NULL`_null), `ANY`_heaptype)] [visit_exp (?(`NULL`_null), `ANY`_heaptype)] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] @@ -6035,13 +5911,9 @@ DecD NULLEXTERNREF : reftype [visit_exp ()] => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $ANYREF{`null?#11` : null?, heaptype#11 : heaptype} = `REF`_reftype{`null?#11`, heaptype#11}(?(`NULL`_null), `ANY`_heaptype) -[check_dims] heaptype#23 null?#23 -[visit_exp `REF`_reftype{`null?#23`, heaptype#23}(?(`NULL`_null), `EQ`_heaptype)] -[visit_exp `null?#23`] -[visit_id null?#23] -[visit_exp heaptype#23] -[visit_id heaptype#23] + def $ANYREF = `REF`_reftype(?(`NULL`_null), `ANY`_heaptype) +[check_dims] +[visit_exp `REF`_reftype(?(`NULL`_null), `EQ`_heaptype)] [visit_exp (?(`NULL`_null), `EQ`_heaptype)] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] @@ -6050,13 +5922,9 @@ DecD NULLEXTERNREF : reftype [visit_exp ()] => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $EQREF{`null?#23` : null?, heaptype#23 : heaptype} = `REF`_reftype{`null?#23`, heaptype#23}(?(`NULL`_null), `EQ`_heaptype) -[check_dims] heaptype#35 null?#35 -[visit_exp `REF`_reftype{`null?#35`, heaptype#35}(?(`NULL`_null), `I31`_heaptype)] -[visit_exp `null?#35`] -[visit_id null?#35] -[visit_exp heaptype#35] -[visit_id heaptype#35] + def $EQREF = `REF`_reftype(?(`NULL`_null), `EQ`_heaptype) +[check_dims] +[visit_exp `REF`_reftype(?(`NULL`_null), `I31`_heaptype)] [visit_exp (?(`NULL`_null), `I31`_heaptype)] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] @@ -6065,13 +5933,9 @@ DecD NULLEXTERNREF : reftype [visit_exp ()] => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $I31REF{`null?#35` : null?, heaptype#35 : heaptype} = `REF`_reftype{`null?#35`, heaptype#35}(?(`NULL`_null), `I31`_heaptype) -[check_dims] heaptype#47 null?#47 -[visit_exp `REF`_reftype{`null?#47`, heaptype#47}(?(`NULL`_null), `STRUCT`_heaptype)] -[visit_exp `null?#47`] -[visit_id null?#47] -[visit_exp heaptype#47] -[visit_id heaptype#47] + def $I31REF = `REF`_reftype(?(`NULL`_null), `I31`_heaptype) +[check_dims] +[visit_exp `REF`_reftype(?(`NULL`_null), `STRUCT`_heaptype)] [visit_exp (?(`NULL`_null), `STRUCT`_heaptype)] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] @@ -6080,13 +5944,9 @@ DecD NULLEXTERNREF : reftype [visit_exp ()] => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $STRUCTREF{`null?#47` : null?, heaptype#47 : heaptype} = `REF`_reftype{`null?#47`, heaptype#47}(?(`NULL`_null), `STRUCT`_heaptype) -[check_dims] heaptype#59 null?#59 -[visit_exp `REF`_reftype{`null?#59`, heaptype#59}(?(`NULL`_null), `ARRAY`_heaptype)] -[visit_exp `null?#59`] -[visit_id null?#59] -[visit_exp heaptype#59] -[visit_id heaptype#59] + def $STRUCTREF = `REF`_reftype(?(`NULL`_null), `STRUCT`_heaptype) +[check_dims] +[visit_exp `REF`_reftype(?(`NULL`_null), `ARRAY`_heaptype)] [visit_exp (?(`NULL`_null), `ARRAY`_heaptype)] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] @@ -6095,13 +5955,9 @@ DecD NULLEXTERNREF : reftype [visit_exp ()] => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $ARRAYREF{`null?#59` : null?, heaptype#59 : heaptype} = `REF`_reftype{`null?#59`, heaptype#59}(?(`NULL`_null), `ARRAY`_heaptype) -[check_dims] heaptype#71 null?#71 -[visit_exp `REF`_reftype{`null?#71`, heaptype#71}(?(`NULL`_null), `FUNC`_heaptype)] -[visit_exp `null?#71`] -[visit_id null?#71] -[visit_exp heaptype#71] -[visit_id heaptype#71] + def $ARRAYREF = `REF`_reftype(?(`NULL`_null), `ARRAY`_heaptype) +[check_dims] +[visit_exp `REF`_reftype(?(`NULL`_null), `FUNC`_heaptype)] [visit_exp (?(`NULL`_null), `FUNC`_heaptype)] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] @@ -6110,13 +5966,9 @@ DecD NULLEXTERNREF : reftype [visit_exp ()] => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $FUNCREF{`null?#71` : null?, heaptype#71 : heaptype} = `REF`_reftype{`null?#71`, heaptype#71}(?(`NULL`_null), `FUNC`_heaptype) -[check_dims] heaptype#83 null?#83 -[visit_exp `REF`_reftype{`null?#83`, heaptype#83}(?(`NULL`_null), `EXN`_heaptype)] -[visit_exp `null?#83`] -[visit_id null?#83] -[visit_exp heaptype#83] -[visit_id heaptype#83] + def $FUNCREF = `REF`_reftype(?(`NULL`_null), `FUNC`_heaptype) +[check_dims] +[visit_exp `REF`_reftype(?(`NULL`_null), `EXN`_heaptype)] [visit_exp (?(`NULL`_null), `EXN`_heaptype)] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] @@ -6125,13 +5977,9 @@ DecD NULLEXTERNREF : reftype [visit_exp ()] => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $EXNREF{`null?#83` : null?, heaptype#83 : heaptype} = `REF`_reftype{`null?#83`, heaptype#83}(?(`NULL`_null), `EXN`_heaptype) -[check_dims] heaptype#95 null?#95 -[visit_exp `REF`_reftype{`null?#95`, heaptype#95}(?(`NULL`_null), `EXTERN`_heaptype)] -[visit_exp `null?#95`] -[visit_id null?#95] -[visit_exp heaptype#95] -[visit_id heaptype#95] + def $EXNREF = `REF`_reftype(?(`NULL`_null), `EXN`_heaptype) +[check_dims] +[visit_exp `REF`_reftype(?(`NULL`_null), `EXTERN`_heaptype)] [visit_exp (?(`NULL`_null), `EXTERN`_heaptype)] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] @@ -6140,13 +5988,9 @@ DecD NULLEXTERNREF : reftype [visit_exp ()] => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $EXTERNREF{`null?#95` : null?, heaptype#95 : heaptype} = `REF`_reftype{`null?#95`, heaptype#95}(?(`NULL`_null), `EXTERN`_heaptype) -[check_dims] heaptype#107 null?#107 -[visit_exp `REF`_reftype{`null?#107`, heaptype#107}(?(`NULL`_null), `NONE`_heaptype)] -[visit_exp `null?#107`] -[visit_id null?#107] -[visit_exp heaptype#107] -[visit_id heaptype#107] + def $EXTERNREF = `REF`_reftype(?(`NULL`_null), `EXTERN`_heaptype) +[check_dims] +[visit_exp `REF`_reftype(?(`NULL`_null), `NONE`_heaptype)] [visit_exp (?(`NULL`_null), `NONE`_heaptype)] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] @@ -6155,13 +5999,9 @@ DecD NULLEXTERNREF : reftype [visit_exp ()] => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $NULLREF{`null?#107` : null?, heaptype#107 : heaptype} = `REF`_reftype{`null?#107`, heaptype#107}(?(`NULL`_null), `NONE`_heaptype) -[check_dims] heaptype#119 null?#119 -[visit_exp `REF`_reftype{`null?#119`, heaptype#119}(?(`NULL`_null), `NOFUNC`_heaptype)] -[visit_exp `null?#119`] -[visit_id null?#119] -[visit_exp heaptype#119] -[visit_id heaptype#119] + def $NULLREF = `REF`_reftype(?(`NULL`_null), `NONE`_heaptype) +[check_dims] +[visit_exp `REF`_reftype(?(`NULL`_null), `NOFUNC`_heaptype)] [visit_exp (?(`NULL`_null), `NOFUNC`_heaptype)] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] @@ -6170,13 +6010,9 @@ DecD NULLEXTERNREF : reftype [visit_exp ()] => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $NULLFUNCREF{`null?#119` : null?, heaptype#119 : heaptype} = `REF`_reftype{`null?#119`, heaptype#119}(?(`NULL`_null), `NOFUNC`_heaptype) -[check_dims] heaptype#131 null?#131 -[visit_exp `REF`_reftype{`null?#131`, heaptype#131}(?(`NULL`_null), `NOEXN`_heaptype)] -[visit_exp `null?#131`] -[visit_id null?#131] -[visit_exp heaptype#131] -[visit_id heaptype#131] + def $NULLFUNCREF = `REF`_reftype(?(`NULL`_null), `NOFUNC`_heaptype) +[check_dims] +[visit_exp `REF`_reftype(?(`NULL`_null), `NOEXN`_heaptype)] [visit_exp (?(`NULL`_null), `NOEXN`_heaptype)] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] @@ -6185,13 +6021,9 @@ DecD NULLEXTERNREF : reftype [visit_exp ()] => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $NULLEXNREF{`null?#131` : null?, heaptype#131 : heaptype} = `REF`_reftype{`null?#131`, heaptype#131}(?(`NULL`_null), `NOEXN`_heaptype) -[check_dims] heaptype#143 null?#143 -[visit_exp `REF`_reftype{`null?#143`, heaptype#143}(?(`NULL`_null), `NOEXTERN`_heaptype)] -[visit_exp `null?#143`] -[visit_id null?#143] -[visit_exp heaptype#143] -[visit_id heaptype#143] + def $NULLEXNREF = `REF`_reftype(?(`NULL`_null), `NOEXN`_heaptype) +[check_dims] +[visit_exp `REF`_reftype(?(`NULL`_null), `NOEXTERN`_heaptype)] [visit_exp (?(`NULL`_null), `NOEXTERN`_heaptype)] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] @@ -6200,13 +6032,15 @@ DecD NULLEXTERNREF : reftype [visit_exp ()] => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $NULLEXTERNREF{`null?#143` : null?, heaptype#143 : heaptype} = `REF`_reftype{`null?#143`, heaptype#143}(?(`NULL`_null), `NOEXTERN`_heaptype) + def $NULLEXTERNREF = `REF`_reftype(?(`NULL`_null), `NOEXTERN`_heaptype) +[check_dims] [check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] --- 1 --- [check_dims] --- 2 --- @@ -6219,115 +6053,159 @@ DecD NULLEXTERNREF : reftype [check_dims] [check_dims] [check_dims] +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- [check_dims] +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- [check_dims] ---- 1 --- [check_dims] ---- 2 --- ---- 3 --- ---- 4 --- +[scope_enter mut?] +[visit_id mut?] not free [visit_id mut?] no dims -[visit_id mut?] +[scope_enter storagetype] +[visit_id storagetype] not free [visit_id storagetype] no dims -[visit_id storagetype] -[check_dims] +[scope_exit storagetype] +[scope_exit mut?] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_exit _] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter fieldtype] +[visit_id fieldtype] not free [visit_id fieldtype] no dims -[visit_id fieldtype] +[scope_exit fieldtype] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter resulttype] +[visit_id resulttype] not free [visit_id resulttype] no dims -[visit_id resulttype] +[scope_enter resulttype] [visit_id resulttype] not free [visit_id resulttype] no dims -[check_dims] +[scope_exit resulttype] +[scope_exit resulttype] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter final?] +[visit_id final?] not free [visit_id final?] no dims -[visit_id final?] +[scope_enter typeuse*] +[visit_id typeuse*] not free [visit_id typeuse*] no dims -[visit_id typeuse*] +[scope_enter comptype] +[visit_id comptype] not free [visit_id comptype] no dims -[visit_id comptype] -[check_dims] +[scope_exit comptype] +[scope_exit typeuse*] +[scope_exit final?] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter _] [visit_id _] not free [visit_id _] no dims -[check_dims] +[scope_exit _] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id u64] no dims -[visit_id u64] -[visit_id u64?] no dims -[visit_id u64?] [check_dims] [check_dims] +[scope_enter u64] +[visit_id u64] not free +[visit_id u64] no dims +[scope_enter u64?] +[visit_id u64?] not free +[visit_id u64?] no dims +[scope_exit u64?] +[scope_exit u64] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[check_dims] +[scope_enter mut?] +[visit_id mut?] not free [visit_id mut?] no dims -[visit_id mut?] +[scope_enter valtype] +[visit_id valtype] not free [visit_id valtype] no dims -[visit_id valtype] -[check_dims] +[scope_exit valtype] +[scope_exit mut?] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter addrtype] +[visit_id addrtype] not free [visit_id addrtype] no dims -[visit_id addrtype] +[scope_enter limits] +[visit_id limits] not free [visit_id limits] no dims -[visit_id limits] -[check_dims] +[scope_exit limits] +[scope_exit addrtype] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter addrtype] +[visit_id addrtype] not free [visit_id addrtype] no dims -[visit_id addrtype] +[scope_enter limits] +[visit_id limits] not free [visit_id limits] no dims -[visit_id limits] +[scope_enter reftype] +[visit_id reftype] not free [visit_id reftype] no dims -[visit_id reftype] -[check_dims] +[scope_exit reftype] +[scope_exit limits] +[scope_exit addrtype] --- 1 --- [check_dims] --- 2 --- @@ -6340,46 +6218,73 @@ DecD NULLEXTERNREF : reftype --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[check_dims] +[scope_enter tagtype] +[visit_id tagtype] not free [visit_id tagtype] no dims -[visit_id tagtype] +[scope_exit tagtype] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter globaltype] +[visit_id globaltype] not free [visit_id globaltype] no dims -[visit_id globaltype] +[scope_exit globaltype] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter memtype] +[visit_id memtype] not free [visit_id memtype] no dims -[visit_id memtype] +[scope_exit memtype] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter tabletype] +[visit_id tabletype] not free [visit_id tabletype] no dims -[visit_id tabletype] +[scope_exit tabletype] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id typeuse] no dims -[visit_id typeuse] [check_dims] +[scope_enter typeuse] +[visit_id typeuse] not free +[visit_id typeuse] no dims +[scope_exit typeuse] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter externtype*] +[visit_id externtype*] not free [visit_id externtype*] no dims -[visit_id externtype*] +[scope_enter externtype*] [visit_id externtype*] not free [visit_id externtype*] no dims +[scope_exit externtype*] +[scope_exit externtype*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- [check_dims] [check_dims] [check_dims] @@ -6950,12 +6855,8 @@ DecD minat(addrtype : addrtype, addrtype : addrtype) : addrtype DecD diffrt(reftype : reftype, reftype : reftype) : reftype [visit_id reftype] not free [visit_id reftype] not free -[check_dims] heaptype#155 heaptype#167 heaptype#179 ht_1 ht_2 null?#155 null?#167 null?#179 null_1 -[visit_exp `REF`_reftype{`null?#155`, heaptype#155}(null_1?{null_1 <- `null_1?`}, ht_1)] -[visit_exp `null?#155`] -[visit_id null?#155] -[visit_exp heaptype#155] -[visit_id heaptype#155] +[check_dims] ht_1 ht_2 null_1 +[visit_exp `REF`_reftype(null_1?{null_1 <- `null_1?`}, ht_1)] [visit_exp (null_1?{null_1 <- `null_1?`}, ht_1)] [visit_exp null_1?{null_1 <- `null_1?`}] [scope_enter null_1] @@ -6968,35 +6869,23 @@ DecD diffrt(reftype : reftype, reftype : reftype) : reftype [visit_id null_1?] [visit_exp ht_1] [visit_id ht_1] -[visit_exp `REF`_reftype{`null?#167`, heaptype#167}(?(`NULL`_null), ht_2)] -[visit_exp `null?#167`] -[visit_id null?#167] -[visit_exp heaptype#167] -[visit_id heaptype#167] +[visit_exp `REF`_reftype(?(`NULL`_null), ht_2)] [visit_exp (?(`NULL`_null), ht_2)] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] [visit_exp ()] [visit_exp ht_2] [visit_id ht_2] -[visit_exp `REF`_reftype{`null?#179`, heaptype#179}(?(), ht_1)] -[visit_exp `null?#179`] -[visit_id null?#179] -[visit_exp heaptype#179] -[visit_id heaptype#179] +[visit_exp `REF`_reftype(?(), ht_1)] [visit_exp (?(), ht_1)] [visit_exp ?()] [visit_exp ht_1] [visit_id ht_1] not free => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $diffrt{`null?#155` : null?, heaptype#155 : heaptype, `null_1?` : null?, ht_1 : heaptype, `null?#167` : null?, heaptype#167 : heaptype, ht_2 : heaptype, `null?#179` : null?, heaptype#179 : heaptype}(`REF`_reftype{`null?#155`, heaptype#155}(null_1?{null_1 <- `null_1?`}, ht_1), `REF`_reftype{`null?#167`, heaptype#167}(?(`NULL`_null), ht_2)) = `REF`_reftype{`null?#179`, heaptype#179}(?(), ht_1) -[check_dims] heaptype#191 heaptype#203 heaptype#215 ht_1 ht_2 null?#191 null?#203 null?#215 null_1 -[visit_exp `REF`_reftype{`null?#191`, heaptype#191}(null_1?{null_1 <- `null_1?`}, ht_1)] -[visit_exp `null?#191`] -[visit_id null?#191] -[visit_exp heaptype#191] -[visit_id heaptype#191] + 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) +[check_dims] ht_1 ht_2 null_1 +[visit_exp `REF`_reftype(null_1?{null_1 <- `null_1?`}, ht_1)] [visit_exp (null_1?{null_1 <- `null_1?`}, ht_1)] [visit_exp null_1?{null_1 <- `null_1?`}] [scope_enter null_1] @@ -7009,20 +6898,12 @@ DecD diffrt(reftype : reftype, reftype : reftype) : reftype [visit_id null_1?] [visit_exp ht_1] [visit_id ht_1] -[visit_exp `REF`_reftype{`null?#203`, heaptype#203}(?(), ht_2)] -[visit_exp `null?#203`] -[visit_id null?#203] -[visit_exp heaptype#203] -[visit_id heaptype#203] +[visit_exp `REF`_reftype(?(), ht_2)] [visit_exp (?(), ht_2)] [visit_exp ?()] [visit_exp ht_2] [visit_id ht_2] -[visit_exp `REF`_reftype{`null?#215`, heaptype#215}(null_1?{null_1 <- `null_1?`}, ht_1)] -[visit_exp `null?#215`] -[visit_id null?#215] -[visit_exp heaptype#215] -[visit_id heaptype#215] +[visit_exp `REF`_reftype(null_1?{null_1 <- `null_1?`}, ht_1)] [visit_exp (null_1?{null_1 <- `null_1?`}, ht_1)] [visit_exp null_1?{null_1 <- `null_1?`}] [scope_enter null_1] @@ -7037,7 +6918,7 @@ DecD diffrt(reftype : reftype, reftype : reftype) : reftype [visit_id ht_1] not free => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $diffrt{`null?#191` : null?, heaptype#191 : heaptype, `null_1?` : null?, ht_1 : heaptype, `null?#203` : null?, heaptype#203 : heaptype, ht_2 : heaptype, `null?#215` : null?, heaptype#215 : heaptype}(`REF`_reftype{`null?#191`, heaptype#191}(null_1?{null_1 <- `null_1?`}, ht_1), `REF`_reftype{`null?#203`, heaptype#203}(?(), ht_2)) = `REF`_reftype{`null?#215`, heaptype#215}(null_1?{null_1 <- `null_1?`}, ht_1) + 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) [check_dims] typeuse DecD as_deftype(typeuse : typeuse) : deftype [visit_id typeuse] not free @@ -7071,12 +6952,10 @@ DecD funcsxt(externtype*) : deftype* => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $tagsxt([]) = [] -[check_dims] jt tagtype#1 xt -[visit_exp [`TAG`_externtype{tagtype#1}(jt)] ++ xt*{xt <- `xt*`}] -[visit_exp [`TAG`_externtype{tagtype#1}(jt)]] -[visit_exp `TAG`_externtype{tagtype#1}(jt)] -[visit_exp tagtype#1] -[visit_id tagtype#1] +[check_dims] jt xt +[visit_exp [`TAG`_externtype(jt)] ++ xt*{xt <- `xt*`}] +[visit_exp [`TAG`_externtype(jt)]] +[visit_exp `TAG`_externtype(jt)] [visit_exp (jt)] [visit_exp jt] [visit_id jt] @@ -7105,7 +6984,7 @@ DecD funcsxt(externtype*) : deftype* [visit_id xt*] no dims => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $tagsxt{tagtype#1 : tagtype, jt : tagtype, `xt*` : externtype*}([`TAG`_externtype{tagtype#1}(jt)] ++ xt*{xt <- `xt*`}) = [jt] ++ $tagsxt(xt*{xt <- `xt*`}) + def $tagsxt{jt : tagtype, `xt*` : externtype*}([`TAG`_externtype(jt)] ++ xt*{xt <- `xt*`}) = [jt] ++ $tagsxt(xt*{xt <- `xt*`}) [check_dims] externtype xt [visit_exp [externtype] ++ xt*{xt <- `xt*`}] [visit_exp [externtype]] @@ -7140,12 +7019,10 @@ DecD funcsxt(externtype*) : deftype* => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $globalsxt([]) = [] -[check_dims] globaltype#1 gt xt -[visit_exp [`GLOBAL`_externtype{globaltype#1}(gt)] ++ xt*{xt <- `xt*`}] -[visit_exp [`GLOBAL`_externtype{globaltype#1}(gt)]] -[visit_exp `GLOBAL`_externtype{globaltype#1}(gt)] -[visit_exp globaltype#1] -[visit_id globaltype#1] +[check_dims] gt xt +[visit_exp [`GLOBAL`_externtype(gt)] ++ xt*{xt <- `xt*`}] +[visit_exp [`GLOBAL`_externtype(gt)]] +[visit_exp `GLOBAL`_externtype(gt)] [visit_exp (gt)] [visit_exp gt] [visit_id gt] @@ -7174,7 +7051,7 @@ DecD funcsxt(externtype*) : deftype* [visit_id xt*] no dims => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $globalsxt{globaltype#1 : globaltype, gt : globaltype, `xt*` : externtype*}([`GLOBAL`_externtype{globaltype#1}(gt)] ++ xt*{xt <- `xt*`}) = [gt] ++ $globalsxt(xt*{xt <- `xt*`}) + def $globalsxt{gt : globaltype, `xt*` : externtype*}([`GLOBAL`_externtype(gt)] ++ xt*{xt <- `xt*`}) = [gt] ++ $globalsxt(xt*{xt <- `xt*`}) [check_dims] externtype xt [visit_exp [externtype] ++ xt*{xt <- `xt*`}] [visit_exp [externtype]] @@ -7209,12 +7086,10 @@ DecD funcsxt(externtype*) : deftype* => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $memsxt([]) = [] -[check_dims] memtype#1 mt xt -[visit_exp [`MEM`_externtype{memtype#1}(mt)] ++ xt*{xt <- `xt*`}] -[visit_exp [`MEM`_externtype{memtype#1}(mt)]] -[visit_exp `MEM`_externtype{memtype#1}(mt)] -[visit_exp memtype#1] -[visit_id memtype#1] +[check_dims] mt xt +[visit_exp [`MEM`_externtype(mt)] ++ xt*{xt <- `xt*`}] +[visit_exp [`MEM`_externtype(mt)]] +[visit_exp `MEM`_externtype(mt)] [visit_exp (mt)] [visit_exp mt] [visit_id mt] @@ -7243,7 +7118,7 @@ DecD funcsxt(externtype*) : deftype* [visit_id xt*] no dims => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $memsxt{memtype#1 : memtype, mt : memtype, `xt*` : externtype*}([`MEM`_externtype{memtype#1}(mt)] ++ xt*{xt <- `xt*`}) = [mt] ++ $memsxt(xt*{xt <- `xt*`}) + def $memsxt{mt : memtype, `xt*` : externtype*}([`MEM`_externtype(mt)] ++ xt*{xt <- `xt*`}) = [mt] ++ $memsxt(xt*{xt <- `xt*`}) [check_dims] externtype xt [visit_exp [externtype] ++ xt*{xt <- `xt*`}] [visit_exp [externtype]] @@ -7278,12 +7153,10 @@ DecD funcsxt(externtype*) : deftype* => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $tablesxt([]) = [] -[check_dims] tabletype#1 tt xt -[visit_exp [`TABLE`_externtype{tabletype#1}(tt)] ++ xt*{xt <- `xt*`}] -[visit_exp [`TABLE`_externtype{tabletype#1}(tt)]] -[visit_exp `TABLE`_externtype{tabletype#1}(tt)] -[visit_exp tabletype#1] -[visit_id tabletype#1] +[check_dims] tt xt +[visit_exp [`TABLE`_externtype(tt)] ++ xt*{xt <- `xt*`}] +[visit_exp [`TABLE`_externtype(tt)]] +[visit_exp `TABLE`_externtype(tt)] [visit_exp (tt)] [visit_exp tt] [visit_id tt] @@ -7312,7 +7185,7 @@ DecD funcsxt(externtype*) : deftype* [visit_id xt*] no dims => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $tablesxt{tabletype#1 : tabletype, tt : tabletype, `xt*` : externtype*}([`TABLE`_externtype{tabletype#1}(tt)] ++ xt*{xt <- `xt*`}) = [tt] ++ $tablesxt(xt*{xt <- `xt*`}) + def $tablesxt{tt : tabletype, `xt*` : externtype*}([`TABLE`_externtype(tt)] ++ xt*{xt <- `xt*`}) = [tt] ++ $tablesxt(xt*{xt <- `xt*`}) [check_dims] externtype xt [visit_exp [externtype] ++ xt*{xt <- `xt*`}] [visit_exp [externtype]] @@ -7347,12 +7220,10 @@ DecD funcsxt(externtype*) : deftype* => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $funcsxt([]) = [] -[check_dims] dt typeuse#1 xt -[visit_exp [`FUNC`_externtype{typeuse#1}((dt : deftype <: typeuse))] ++ xt*{xt <- `xt*`}] -[visit_exp [`FUNC`_externtype{typeuse#1}((dt : deftype <: typeuse))]] -[visit_exp `FUNC`_externtype{typeuse#1}((dt : deftype <: typeuse))] -[visit_exp typeuse#1] -[visit_id typeuse#1] +[check_dims] dt xt +[visit_exp [`FUNC`_externtype((dt : deftype <: typeuse))] ++ xt*{xt <- `xt*`}] +[visit_exp [`FUNC`_externtype((dt : deftype <: typeuse))]] +[visit_exp `FUNC`_externtype((dt : deftype <: typeuse))] [visit_exp ((dt : deftype <: typeuse))] [visit_exp (dt : deftype <: typeuse)] [visit_exp dt] @@ -7382,7 +7253,7 @@ DecD funcsxt(externtype*) : deftype* [visit_id xt*] no dims => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $funcsxt{typeuse#1 : typeuse, dt : deftype, `xt*` : externtype*}([`FUNC`_externtype{typeuse#1}((dt : deftype <: typeuse))] ++ xt*{xt <- `xt*`}) = [dt] ++ $funcsxt(xt*{xt <- `xt*`}) + def $funcsxt{dt : deftype, `xt*` : externtype*}([`FUNC`_externtype((dt : deftype <: typeuse))] ++ xt*{xt <- `xt*`}) = [dt] ++ $funcsxt(xt*{xt <- `xt*`}) [check_dims] externtype xt [visit_exp [externtype] ++ xt*{xt <- `xt*`}] [visit_exp [externtype]] @@ -7913,12 +7784,8 @@ DecD subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_heaptype{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ht -- otherwise -[check_dims] heaptype#227 heaptype#239 ht null null?#227 null?#239 tu tv -[visit_exp `REF`_reftype{`null?#227`, heaptype#227}(null?{null <- `null?`}, ht)] -[visit_exp `null?#227`] -[visit_id null?#227] -[visit_exp heaptype#227] -[visit_id heaptype#227] +[check_dims] ht null tu tv +[visit_exp `REF`_reftype(null?{null <- `null?`}, ht)] [visit_exp (null?{null <- `null?`}, ht)] [visit_exp null?{null <- `null?`}] [scope_enter null] @@ -7949,11 +7816,7 @@ DecD subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype [visit_exp `tu*`] [visit_id tu*] no dims [visit_id tu*] -[visit_exp `REF`_reftype{`null?#239`, heaptype#239}(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] -[visit_exp `null?#239`] -[visit_id null?#239] -[visit_exp heaptype#239] -[visit_id heaptype#239] +[visit_exp `REF`_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] [visit_exp (null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] [visit_exp null?{null <- `null?`}] [scope_enter null] @@ -7987,7 +7850,7 @@ DecD subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype [visit_id tu*] no dims => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_reftype{`null?#227` : null?, heaptype#227 : heaptype, `null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*, `null?#239` : null?, heaptype#239 : heaptype}(`REF`_reftype{`null?#227`, heaptype#227}(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `REF`_reftype{`null?#239`, heaptype#239}(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + 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*`})) [check_dims] nt tu tv [visit_exp (nt : numtype <: valtype)] [visit_exp nt] @@ -8275,12 +8138,8 @@ DecD subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec 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) -[check_dims] mut mut?#67 mut?#79 storagetype#11 storagetype#23 tu tv zt -[visit_exp `%%`_fieldtype{`mut?#67`, storagetype#11}(mut?{mut <- `mut?`}, zt)] -[visit_exp `mut?#67`] -[visit_id mut?#67] -[visit_exp storagetype#11] -[visit_id storagetype#11] +[check_dims] mut tu tv zt +[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)] [visit_exp (mut?{mut <- `mut?`}, zt)] [visit_exp mut?{mut <- `mut?`}] [scope_enter mut] @@ -8311,11 +8170,7 @@ DecD subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype [visit_exp `tu*`] [visit_id tu*] no dims [visit_id tu*] -[visit_exp `%%`_fieldtype{`mut?#79`, storagetype#23}(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] -[visit_exp `mut?#79`] -[visit_id mut?#79] -[visit_exp storagetype#23] -[visit_id storagetype#23] +[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] [visit_exp (mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] [visit_exp mut?{mut <- `mut?`}] [scope_enter mut] @@ -8349,13 +8204,11 @@ DecD subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype [visit_id tu*] no dims => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_fieldtype{`mut?#67` : mut?, storagetype#11 : storagetype, `mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*, `mut?#79` : mut?, storagetype#23 : storagetype}(`%%`_fieldtype{`mut?#67`, storagetype#11}(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype{`mut?#79`, storagetype#23}(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -[check_dims] X*#11 X*#26 ft tu tv -[visit_exp `STRUCT`_comptype(`%`_list{`X*#11`}(ft*{ft <- `ft*`}))] -[visit_exp (`%`_list{`X*#11`}(ft*{ft <- `ft*`}))] -[visit_exp `%`_list{`X*#11`}(ft*{ft <- `ft*`})] -[visit_exp `X*#11`] -[visit_id X*#11] + 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*`})) +[check_dims] ft tu tv +[visit_exp `STRUCT`_comptype(`%`_list(ft*{ft <- `ft*`}))] +[visit_exp (`%`_list(ft*{ft <- `ft*`}))] +[visit_exp `%`_list(ft*{ft <- `ft*`})] [visit_exp (ft*{ft <- `ft*`})] [visit_exp ft*{ft <- `ft*`}] [scope_enter ft] @@ -8384,11 +8237,9 @@ DecD subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype [visit_exp `tu*`] [visit_id tu*] no dims [visit_id tu*] -[visit_exp `STRUCT`_comptype(`%`_list{`X*#26`}($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}))] -[visit_exp (`%`_list{`X*#26`}($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}))] -[visit_exp `%`_list{`X*#26`}($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})] -[visit_exp `X*#26`] -[visit_id X*#26] +[visit_exp `STRUCT`_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}))] +[visit_exp (`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}))] +[visit_exp `%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})] [visit_exp ($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})] [visit_exp $subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}] [scope_enter ft] @@ -8420,11 +8271,9 @@ DecD subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype [visit_id ft*] no dims => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_comptype{`X*#11` : fieldtype*, `ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*, `X*#26` : fieldtype*}(`STRUCT`_comptype(`%`_list{`X*#11`}(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `STRUCT`_comptype(`%`_list{`X*#26`}($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) -[check_dims] fieldtype#1 fieldtype#3 ft tu tv -[visit_exp `ARRAY`_comptype{fieldtype#1}(ft)] -[visit_exp fieldtype#1] -[visit_id fieldtype#1] + 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*`})) +[check_dims] ft tu tv +[visit_exp `ARRAY`_comptype(ft)] [visit_exp (ft)] [visit_exp ft] [visit_id ft] @@ -8446,9 +8295,7 @@ DecD subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype [visit_exp `tu*`] [visit_id tu*] no dims [visit_id tu*] -[visit_exp `ARRAY`_comptype{fieldtype#3}($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] -[visit_exp fieldtype#3] -[visit_id fieldtype#3] +[visit_exp `ARRAY`_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] [visit_exp ($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] [visit_exp $subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] [visit_exp ft] @@ -8473,15 +8320,11 @@ DecD subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype [visit_id tu*] no dims => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_comptype{fieldtype#1 : fieldtype, ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*, fieldtype#3 : fieldtype}(`ARRAY`_comptype{fieldtype#1}(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `ARRAY`_comptype{fieldtype#3}($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -[check_dims] X*#41 X*#54 X*#69 X*#82 resulttype#1 resulttype#4 t_1 t_2 tu tv -[visit_exp `FUNC%->%`_comptype{resulttype#1}(`%`_resulttype{`X*#41`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#54`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#1] -[visit_id resulttype#1] -[visit_exp (`%`_resulttype{`X*#41`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#54`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#41`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#41`] -[visit_id X*#41] + 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*`})) +[check_dims] t_1 t_2 tu tv +[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -8492,9 +8335,7 @@ DecD subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype [visit_exp `t_1*`] [visit_id t_1*] no dims [visit_id t_1*] -[visit_exp `%`_resulttype{`X*#54`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#54`] -[visit_id X*#54] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -8523,13 +8364,9 @@ DecD subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype [visit_exp `tu*`] [visit_id tu*] no dims [visit_id tu*] -[visit_exp `FUNC%->%`_comptype{resulttype#4}(`%`_resulttype{`X*#69`}($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype{`X*#82`}($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`}))] -[visit_exp resulttype#4] -[visit_id resulttype#4] -[visit_exp (`%`_resulttype{`X*#69`}($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype{`X*#82`}($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#69`}($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`})] -[visit_exp `X*#69`] -[visit_id X*#69] +[visit_exp `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*`}))] +[visit_exp (`%`_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*`}))] +[visit_exp `%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`})] [visit_exp ($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`})] [visit_exp $subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -8559,9 +8396,7 @@ DecD subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype [visit_exp `t_1*`] [visit_id t_1*] not free [visit_id t_1*] no dims -[visit_exp `%`_resulttype{`X*#82`}($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})] -[visit_exp `X*#82`] -[visit_id X*#82] +[visit_exp `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})] [visit_exp ($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})] [visit_exp $subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -8593,15 +8428,9 @@ DecD subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype [visit_id t_2*] no dims => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_comptype{resulttype#1 : resulttype, `X*#41` : valtype*, `t_1*` : valtype*, `X*#54` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*, resulttype#4 : resulttype, `X*#69` : valtype*, `X*#82` : valtype*}(`FUNC%->%`_comptype{resulttype#1}(`%`_resulttype{`X*#41`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#54`}(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype{resulttype#4}(`%`_resulttype{`X*#69`}($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype{`X*#82`}($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) -[check_dims] comptype#11 comptype#23 ct final final?#11 final?#23 tu tu' tv typeuse*#11 typeuse*#23 -[visit_exp `SUB`_subtype{`final?#11`, `typeuse*#11`, comptype#11}(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct)] -[visit_exp `final?#11`] -[visit_id final?#11] -[visit_exp `typeuse*#11`] -[visit_id typeuse*#11] -[visit_exp comptype#11] -[visit_id comptype#11] + 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*`})) +[check_dims] ct final tu tu' tv +[visit_exp `SUB`_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct)] [visit_exp (final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct)] [visit_exp final?{final <- `final?`}] [scope_enter final] @@ -8641,13 +8470,7 @@ DecD subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype [visit_exp `tu*`] [visit_id tu*] no dims [visit_id tu*] -[visit_exp `SUB`_subtype{`final?#23`, `typeuse*#23`, comptype#23}(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] -[visit_exp `final?#23`] -[visit_id final?#23] -[visit_exp `typeuse*#23`] -[visit_id typeuse*#23] -[visit_exp comptype#23] -[visit_id comptype#23] +[visit_exp `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*`}))] [visit_exp (final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] [visit_exp final?{final <- `final?`}] [scope_enter final] @@ -8709,13 +8532,17 @@ DecD subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype [visit_id tu*] no dims => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_subtype{`final?#11` : final?, `typeuse*#11` : typeuse*, comptype#11 : comptype, `final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*, `final?#23` : final?, `typeuse*#23` : typeuse*, comptype#23 : comptype}(`SUB`_subtype{`final?#11`, `typeuse*#11`, comptype#11}(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `SUB`_subtype{`final?#23`, `typeuse*#23`, comptype#23}(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + 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*`})) [check_dims] _ DecD minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) [visit_id _] not free [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_exit _] +[scope_exit _] [check_dims] [visit_exp []] [visit_exp []] @@ -8725,12 +8552,10 @@ DecD minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $minus_recs([], []) = ([], []) -[check_dims] n n#53 tu tu_1 tv -[visit_exp [`REC`_typevar{n#53}(n)] ++ tv*{tv <- `tv*`}] -[visit_exp [`REC`_typevar{n#53}(n)]] -[visit_exp `REC`_typevar{n#53}(n)] -[visit_exp n#53] -[visit_id n#53] +[check_dims] n tu tu_1 tv +[visit_exp [`REC`_typevar(n)] ++ tv*{tv <- `tv*`}] +[visit_exp [`REC`_typevar(n)]] +[visit_exp `REC`_typevar(n)] [visit_exp (n)] [visit_exp n] [visit_id n] @@ -8777,13 +8602,11 @@ DecD minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) [visit_id tu*] no dims => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $minus_recs{n#53 : n, n : n, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([`REC`_typevar{n#53}(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) -[check_dims] tu tu' tu_1 tv tv' typeidx#1 typeidx#3 x -[visit_exp [`_IDX`_typevar{typeidx#1}(x)] ++ tv*{tv <- `tv*`}] -[visit_exp [`_IDX`_typevar{typeidx#1}(x)]] -[visit_exp `_IDX`_typevar{typeidx#1}(x)] -[visit_exp typeidx#1] -[visit_id typeidx#1] + 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*`}) +[check_dims] tu tu' tu_1 tv tv' x +[visit_exp [`_IDX`_typevar(x)] ++ tv*{tv <- `tv*`}] +[visit_exp [`_IDX`_typevar(x)]] +[visit_exp `_IDX`_typevar(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -8809,12 +8632,10 @@ DecD minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) [visit_exp `tu*`] [visit_id tu*] no dims [visit_id tu*] -[visit_exp ([`_IDX`_typevar{typeidx#3}(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`})] -[visit_exp [`_IDX`_typevar{typeidx#3}(x)] ++ tv'*{tv' <- `tv'*`}] -[visit_exp [`_IDX`_typevar{typeidx#3}(x)]] -[visit_exp `_IDX`_typevar{typeidx#3}(x)] -[visit_exp typeidx#3] -[visit_id typeidx#3] +[visit_exp ([`_IDX`_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`})] +[visit_exp [`_IDX`_typevar(x)] ++ tv'*{tv' <- `tv'*`}] +[visit_exp [`_IDX`_typevar(x)]] +[visit_exp `_IDX`_typevar(x)] [visit_exp (x)] [visit_exp x] [visit_id x] not free @@ -8881,14 +8702,12 @@ DecD minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) [visit_id tu*] no dims => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $minus_recs{typeidx#1 : typeidx, x : idx, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, typeidx#3 : typeidx, `tv'*` : typevar*, `tu'*` : typeuse*}([`_IDX`_typevar{typeidx#1}(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ([`_IDX`_typevar{typeidx#3}(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) + 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*`})) -[check_dims] X*#112 X*#97 st tu tu' tv tv' -[visit_exp `REC`_rectype(`%`_list{`X*#97`}(st*{st <- `st*`}))] -[visit_exp (`%`_list{`X*#97`}(st*{st <- `st*`}))] -[visit_exp `%`_list{`X*#97`}(st*{st <- `st*`})] -[visit_exp `X*#97`] -[visit_id X*#97] +[check_dims] st tu tu' tv tv' +[visit_exp `REC`_rectype(`%`_list(st*{st <- `st*`}))] +[visit_exp (`%`_list(st*{st <- `st*`}))] +[visit_exp `%`_list(st*{st <- `st*`})] [visit_exp (st*{st <- `st*`})] [visit_exp st*{st <- `st*`}] [scope_enter st] @@ -8917,11 +8736,9 @@ DecD minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) [visit_exp `tu*`] [visit_id tu*] no dims [visit_id tu*] -[visit_exp `REC`_rectype(`%`_list{`X*#112`}($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`}))] -[visit_exp (`%`_list{`X*#112`}($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`}))] -[visit_exp `%`_list{`X*#112`}($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})] -[visit_exp `X*#112`] -[visit_id X*#112] +[visit_exp `REC`_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`}))] +[visit_exp (`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`}))] +[visit_exp `%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})] [visit_exp ($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})] [visit_exp $subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`}] [scope_enter st] @@ -8992,14 +8809,10 @@ DecD minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) [visit_id tu*] no dims => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_rectype{`X*#97` : subtype*, `st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `X*#112` : subtype*, `tv'*` : typevar*, `tu'*` : typeuse*}(`REC`_rectype(`%`_list{`X*#97`}(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `REC`_rectype(`%`_list{`X*#112`}($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) + 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*`})) -[check_dims] i n#65 n#77 qt rectype#63 rectype#75 tu tv -[visit_exp `_DEF`_deftype{rectype#63, n#65}(qt, i)] -[visit_exp rectype#63] -[visit_id rectype#63] -[visit_exp n#65] -[visit_id n#65] +[check_dims] i qt tu tv +[visit_exp `_DEF`_deftype(qt, i)] [visit_exp (qt, i)] [visit_exp qt] [visit_id qt] @@ -9023,11 +8836,7 @@ DecD minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) [visit_exp `tu*`] [visit_id tu*] no dims [visit_id tu*] -[visit_exp `_DEF`_deftype{rectype#75, n#77}($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i)] -[visit_exp rectype#75] -[visit_id rectype#75] -[visit_exp n#77] -[visit_id n#77] +[visit_exp `_DEF`_deftype($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i)] [visit_exp ($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i)] [visit_exp $subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] [visit_exp qt] @@ -9054,7 +8863,7 @@ DecD minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) [visit_id i] not free => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_deftype{rectype#63 : rectype, n#65 : n, qt : rectype, i : n, `tv*` : typevar*, `tu*` : typeuse*, rectype#75 : rectype, n#77 : n}(`_DEF`_deftype{rectype#63, n#65}(qt, i), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `_DEF`_deftype{rectype#75, n#77}($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i) + 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) [check_dims] tu tu' tv [visit_exp tu'] [visit_id tu'] @@ -9100,12 +8909,8 @@ DecD minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) => ;; ../../../../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*`}) -[check_dims] mut mut?#149 mut?#161 t tu tv valtype#67 valtype#79 -[visit_exp `%%`_globaltype{`mut?#149`, valtype#67}(mut?{mut <- `mut?`}, t)] -[visit_exp `mut?#149`] -[visit_id mut?#149] -[visit_exp valtype#67] -[visit_id valtype#67] +[check_dims] mut t tu tv +[visit_exp `%%`_globaltype(mut?{mut <- `mut?`}, t)] [visit_exp (mut?{mut <- `mut?`}, t)] [visit_exp mut?{mut <- `mut?`}] [scope_enter mut] @@ -9136,11 +8941,7 @@ DecD minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) [visit_exp `tu*`] [visit_id tu*] no dims [visit_id tu*] -[visit_exp `%%`_globaltype{`mut?#161`, valtype#79}(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] -[visit_exp `mut?#161`] -[visit_id mut?#161] -[visit_exp valtype#79] -[visit_id valtype#79] +[visit_exp `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] [visit_exp (mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] [visit_exp mut?{mut <- `mut?`}] [scope_enter mut] @@ -9174,13 +8975,9 @@ DecD minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) [visit_id tu*] no dims => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_globaltype{`mut?#149` : mut?, valtype#67 : valtype, `mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*, `mut?#161` : mut?, valtype#79 : valtype}(`%%`_globaltype{`mut?#149`, valtype#67}(mut?{mut <- `mut?`}, t), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_globaltype{`mut?#161`, valtype#79}(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -[check_dims] addrtype#103 addrtype#91 at lim limits#103 limits#91 tu tv -[visit_exp `%%PAGE`_memtype{addrtype#91, limits#91}(at, lim)] -[visit_exp addrtype#91] -[visit_id addrtype#91] -[visit_exp limits#91] -[visit_id limits#91] + 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*`})) +[check_dims] at lim tu tv +[visit_exp `%%PAGE`_memtype(at, lim)] [visit_exp (at, lim)] [visit_exp at] [visit_id at] @@ -9204,11 +9001,7 @@ DecD minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) [visit_exp `tu*`] [visit_id tu*] no dims [visit_id tu*] -[visit_exp `%%PAGE`_memtype{addrtype#103, limits#103}(at, lim)] -[visit_exp addrtype#103] -[visit_id addrtype#103] -[visit_exp limits#103] -[visit_id limits#103] +[visit_exp `%%PAGE`_memtype(at, lim)] [visit_exp (at, lim)] [visit_exp at] [visit_id at] not free @@ -9216,15 +9009,9 @@ DecD minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) [visit_id lim] not free => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_memtype{addrtype#91 : addrtype, limits#91 : limits, at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*, addrtype#103 : addrtype, limits#103 : limits}(`%%PAGE`_memtype{addrtype#91, limits#91}(at, lim), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%PAGE`_memtype{addrtype#103, limits#103}(at, lim) -[check_dims] addrtype#115 addrtype#127 at lim limits#115 limits#127 reftype#51 reftype#63 rt tu tv -[visit_exp `%%%`_tabletype{addrtype#115, limits#115, reftype#51}(at, lim, rt)] -[visit_exp addrtype#115] -[visit_id addrtype#115] -[visit_exp limits#115] -[visit_id limits#115] -[visit_exp reftype#51] -[visit_id reftype#51] + 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) +[check_dims] at lim rt tu tv +[visit_exp `%%%`_tabletype(at, lim, rt)] [visit_exp (at, lim, rt)] [visit_exp at] [visit_id at] @@ -9250,13 +9037,7 @@ DecD minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) [visit_exp `tu*`] [visit_id tu*] no dims [visit_id tu*] -[visit_exp `%%%`_tabletype{addrtype#127, limits#127, reftype#63}(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] -[visit_exp addrtype#127] -[visit_id addrtype#127] -[visit_exp limits#127] -[visit_id limits#127] -[visit_exp reftype#63] -[visit_id reftype#63] +[visit_exp `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] [visit_exp (at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] [visit_exp at] [visit_id at] not free @@ -9285,11 +9066,9 @@ DecD minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) [visit_id tu*] no dims => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_tabletype{addrtype#115 : addrtype, limits#115 : limits, reftype#51 : reftype, at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*, addrtype#127 : addrtype, limits#127 : limits, reftype#63 : reftype}(`%%%`_tabletype{addrtype#115, limits#115, reftype#51}(at, lim, rt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%%`_tabletype{addrtype#127, limits#127, reftype#63}(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -[check_dims] jt tagtype#3 tagtype#5 tu tv -[visit_exp `TAG`_externtype{tagtype#3}(jt)] -[visit_exp tagtype#3] -[visit_id tagtype#3] + 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*`})) +[check_dims] jt tu tv +[visit_exp `TAG`_externtype(jt)] [visit_exp (jt)] [visit_exp jt] [visit_id jt] @@ -9311,9 +9090,7 @@ DecD minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) [visit_exp `tu*`] [visit_id tu*] no dims [visit_id tu*] -[visit_exp `TAG`_externtype{tagtype#5}($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] -[visit_exp tagtype#5] -[visit_id tagtype#5] +[visit_exp `TAG`_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] [visit_exp ($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] [visit_exp $subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] [visit_exp jt] @@ -9338,11 +9115,9 @@ DecD minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) [visit_id tu*] no dims => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{tagtype#3 : tagtype, jt : tagtype, `tv*` : typevar*, `tu*` : typeuse*, tagtype#5 : tagtype}(`TAG`_externtype{tagtype#3}(jt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `TAG`_externtype{tagtype#5}($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -[check_dims] globaltype#3 globaltype#5 gt tu tv -[visit_exp `GLOBAL`_externtype{globaltype#3}(gt)] -[visit_exp globaltype#3] -[visit_id globaltype#3] + 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*`})) +[check_dims] gt tu tv +[visit_exp `GLOBAL`_externtype(gt)] [visit_exp (gt)] [visit_exp gt] [visit_id gt] @@ -9364,9 +9139,7 @@ DecD minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) [visit_exp `tu*`] [visit_id tu*] no dims [visit_id tu*] -[visit_exp `GLOBAL`_externtype{globaltype#5}($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] -[visit_exp globaltype#5] -[visit_id globaltype#5] +[visit_exp `GLOBAL`_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] [visit_exp ($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] [visit_exp $subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] [visit_exp gt] @@ -9391,11 +9164,9 @@ DecD minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) [visit_id tu*] no dims => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{globaltype#3 : globaltype, gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*, globaltype#5 : globaltype}(`GLOBAL`_externtype{globaltype#3}(gt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `GLOBAL`_externtype{globaltype#5}($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -[check_dims] tabletype#3 tabletype#5 tt tu tv -[visit_exp `TABLE`_externtype{tabletype#3}(tt)] -[visit_exp tabletype#3] -[visit_id tabletype#3] + 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*`})) +[check_dims] tt tu tv +[visit_exp `TABLE`_externtype(tt)] [visit_exp (tt)] [visit_exp tt] [visit_id tt] @@ -9417,9 +9188,7 @@ DecD minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) [visit_exp `tu*`] [visit_id tu*] no dims [visit_id tu*] -[visit_exp `TABLE`_externtype{tabletype#5}($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] -[visit_exp tabletype#5] -[visit_id tabletype#5] +[visit_exp `TABLE`_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] [visit_exp ($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] [visit_exp $subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] [visit_exp tt] @@ -9444,11 +9213,9 @@ DecD minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) [visit_id tu*] no dims => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{tabletype#3 : tabletype, tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*, tabletype#5 : tabletype}(`TABLE`_externtype{tabletype#3}(tt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `TABLE`_externtype{tabletype#5}($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -[check_dims] memtype#3 memtype#5 mt tu tv -[visit_exp `MEM`_externtype{memtype#3}(mt)] -[visit_exp memtype#3] -[visit_id memtype#3] + 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*`})) +[check_dims] mt tu tv +[visit_exp `MEM`_externtype(mt)] [visit_exp (mt)] [visit_exp mt] [visit_id mt] @@ -9470,9 +9237,7 @@ DecD minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) [visit_exp `tu*`] [visit_id tu*] no dims [visit_id tu*] -[visit_exp `MEM`_externtype{memtype#5}($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] -[visit_exp memtype#5] -[visit_id memtype#5] +[visit_exp `MEM`_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] [visit_exp ($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] [visit_exp $subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] [visit_exp mt] @@ -9497,11 +9262,9 @@ DecD minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) [visit_id tu*] no dims => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{memtype#3 : memtype, mt : memtype, `tv*` : typevar*, `tu*` : typeuse*, memtype#5 : memtype}(`MEM`_externtype{memtype#3}(mt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `MEM`_externtype{memtype#5}($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -[check_dims] dt tu tv typeuse#3 typeuse#5 -[visit_exp `FUNC`_externtype{typeuse#3}((dt : deftype <: typeuse))] -[visit_exp typeuse#3] -[visit_id typeuse#3] + 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*`})) +[check_dims] dt tu tv +[visit_exp `FUNC`_externtype((dt : deftype <: typeuse))] [visit_exp ((dt : deftype <: typeuse))] [visit_exp (dt : deftype <: typeuse)] [visit_exp dt] @@ -9524,9 +9287,7 @@ DecD minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) [visit_exp `tu*`] [visit_id tu*] no dims [visit_id tu*] -[visit_exp `FUNC`_externtype{typeuse#5}(($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse))] -[visit_exp typeuse#5] -[visit_id typeuse#5] +[visit_exp `FUNC`_externtype(($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse))] [visit_exp (($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse))] [visit_exp ($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse)] [visit_exp $subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] @@ -9552,11 +9313,9 @@ DecD minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) [visit_id tu*] no dims => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{typeuse#3 : typeuse, dt : deftype, `tv*` : typevar*, `tu*` : typeuse*, typeuse#5 : typeuse}(`FUNC`_externtype{typeuse#3}((dt : deftype <: typeuse)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC`_externtype{typeuse#5}(($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse)) -[check_dims] externtype*#18 externtype*#38 tu tv xt_1 xt_2 -[visit_exp `%->%`_moduletype{`externtype*#18`}(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`})] -[visit_exp `externtype*#18`] -[visit_id externtype*#18] + 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)) +[check_dims] tu tv xt_1 xt_2 +[visit_exp `%->%`_moduletype(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`})] [visit_exp (xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`})] [visit_exp xt_1*{xt_1 <- `xt_1*`}] [scope_enter xt_1] @@ -9594,9 +9353,7 @@ DecD minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) [visit_exp `tu*`] [visit_id tu*] no dims [visit_id tu*] -[visit_exp `%->%`_moduletype{`externtype*#38`}($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*`})] -[visit_exp `externtype*#38`] -[visit_id externtype*#38] +[visit_exp `%->%`_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*`})] [visit_exp ($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*`})] [visit_exp $subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}] [scope_enter xt_1] @@ -9656,7 +9413,7 @@ DecD minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) [visit_id xt_2*] no dims => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_moduletype{`externtype*#18` : externtype*, `xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*, `externtype*#38` : externtype*}(`%->%`_moduletype{`externtype*#18`}(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`}), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%->%`_moduletype{`externtype*#38`}($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*`}) + 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*`}) [check_dims] _ valtype DecD subst_all_valtype(valtype : valtype, typeuse*) : valtype [visit_id valtype] not free @@ -9693,7 +9450,7 @@ DecD subst_all_externtype(externtype : externtype, typeuse*) : externtype DecD subst_all_moduletype(moduletype : moduletype, typeuse*) : moduletype [visit_id moduletype] not free [visit_id _] not free -[check_dims] i i#779 n t tu typeidx#5 +[check_dims] i n t tu [visit_exp t] [visit_id t] [visit_exp tu^n{tu <- `tu*`}] @@ -9707,37 +9464,21 @@ DecD subst_all_moduletype(moduletype : moduletype, typeuse*) : moduletype [visit_exp `tu*`] [visit_id tu*] no dims [visit_id tu*] -[visit_exp $subst_valtype(t, `_IDX`_typevar{typeidx#5}(`%`_typeidx{i#779}(i))^(i ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_all_valtype{t : valtype, n : n, `tu*` : typeuse*, i : nat, `i#779*` : nat*, `typeidx#5*` : typeidx*}(t, tu^n{tu <- `tu*`}) = $subst_valtype(t, `_IDX`_typevar{typeidx#5}(`%`_typeidx{i#779}(i))^(i ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_all_reftype{rt : reftype, n : n, `tu*` : typeuse*, i : nat, `i#801*` : nat*, `typeidx#7*` : typeidx*}(rt, tu^n{tu <- `tu*`}) = $subst_reftype(rt, `_IDX`_typevar{typeidx#7}(`%`_typeidx{i#801}(i))^(i ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_all_deftype{dt : deftype, n : n, `tu*` : typeuse*, i : nat, `i#823*` : nat*, `typeidx#9*` : typeidx*}(dt, tu^n{tu <- `tu*`}) = $subst_deftype(dt, `_IDX`_typevar{typeidx#9}(`%`_typeidx{i#823}(i))^(i ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_all_tagtype{jt : tagtype, n : n, `tu*` : typeuse*, i : nat, `i#845*` : nat*, `typeidx#11*` : typeidx*}(jt, tu^n{tu <- `tu*`}) = $subst_tagtype(jt, `_IDX`_typevar{typeidx#11}(`%`_typeidx{i#845}(i))^(i ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_all_globaltype{gt : globaltype, n : n, `tu*` : typeuse*, i : nat, `i#867*` : nat*, `typeidx#13*` : typeidx*}(gt, tu^n{tu <- `tu*`}) = $subst_globaltype(gt, `_IDX`_typevar{typeidx#13}(`%`_typeidx{i#867}(i))^(i ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_all_memtype{mt : memtype, n : n, `tu*` : typeuse*, i : nat, `i#889*` : nat*, `typeidx#15*` : typeidx*}(mt, tu^n{tu <- `tu*`}) = $subst_memtype(mt, `_IDX`_typevar{typeidx#15}(`%`_typeidx{i#889}(i))^(i ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_all_tabletype{tt : tabletype, n : n, `tu*` : typeuse*, i : nat, `i#911*` : nat*, `typeidx#17*` : typeidx*}(tt, tu^n{tu <- `tu*`}) = $subst_tabletype(tt, `_IDX`_typevar{typeidx#17}(`%`_typeidx{i#911}(i))^(i ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_all_externtype{xt : externtype, n : n, `tu*` : typeuse*, i : nat, `i#933*` : nat*, `typeidx#19*` : typeidx*}(xt, tu^n{tu <- `tu*`}) = $subst_externtype(xt, `_IDX`_typevar{typeidx#19}(`%`_typeidx{i#933}(i))^(i ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_all_moduletype{mmt : moduletype, n : n, `tu*` : typeuse*, i : nat, `i#955*` : nat*, `typeidx#21*` : typeidx*}(mmt, tu^n{tu <- `tu*`}) = $subst_moduletype(mmt, `_IDX`_typevar{typeidx#21}(`%`_typeidx{i#955}(i))^(i ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $rollrt{x : idx, rectype : rectype, `X*#142` : subtype*, i : nat, n : n, `i#1003**` : nat**, `i#993**` : nat**, `n#189**` : n**, `subtype*` : subtype*, `typeidx#23**` : typeidx**, `X*#127` : subtype*}(x, rectype) = `REC`_rectype(`%`_list{`X*#142`}($subst_subtype(subtype, `_IDX`_typevar{typeidx#23}(`%`_typeidx{i#1003}((x!`%`_idx{i#993}.0 + i)))^(i ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unrollrt{rectype : rectype, `X*#172` : subtype*, i : nat, n : n, `n#191**` : n**, `n#193**` : n**, `rectype#187**` : rectype**, `subtype*` : subtype*, `X*#157` : subtype*}(rectype) = `REC`_rectype(`%`_list{`X*#172`}($subst_subtype(subtype, `REC`_typevar{n#191}(i)^(i ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $rolldt{x : idx, rectype : rectype, n : n, `subtype*` : subtype*, i : nat, `X*#202*` : subtype**, `n#211*` : n*, `rectype#205*` : rectype*, `X*#187` : subtype*}(x, rectype) = `_DEF`_deftype{rectype#205, n#211}(`REC`_rectype(`%`_list{`X*#202`}(subtype^n{subtype <- `subtype*`})), i)^(i ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unrolldt{rectype#217 : rectype, n#223 : n, rectype : rectype, i : n, `subtype*` : subtype*, `X*#217` : subtype*}(`_DEF`_deftype{rectype#217, n#223}(rectype, i)) = subtype*{subtype <- `subtype*`}[i] - -- if ($unrollrt(rectype) = `REC`_rectype(`%`_list{`X*#217`}(subtype*{subtype <- `subtype*`}))) -[check_dims] comptype comptype#167 deftype final final?#167 typeuse typeuse*#167 + def $unrolldt{rectype : rectype, i : n, `subtype*` : subtype*}(`_DEF`_deftype(rectype, i)) = subtype*{subtype <- `subtype*`}[i] + -- if ($unrollrt(rectype) = `REC`_rectype(`%`_list(subtype*{subtype <- `subtype*`}))) +[check_dims] comptype deftype final typeuse [visit_exp deftype] [visit_id deftype] [visit_exp comptype] [visit_id comptype] -[visit_exp ($unrolldt(deftype) = `SUB`_subtype{`final?#167`, `typeuse*#167`, comptype#167}(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype))] +[visit_exp ($unrolldt(deftype) = `SUB`_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype))] [visit_exp $unrolldt(deftype)] [visit_exp deftype] [visit_id deftype] not free -[visit_exp `SUB`_subtype{`final?#167`, `typeuse*#167`, comptype#167}(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)] -[visit_exp `final?#167`] -[visit_id final?#167] -[visit_exp `typeuse*#167`] -[visit_id typeuse*#167] -[visit_exp comptype#167] -[visit_id comptype#167] +[visit_exp `SUB`_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)] [visit_exp (final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)] [visit_exp final?{final <- `final?`}] [scope_enter final] @@ -10731,8 +10193,8 @@ DecD expanddt(deftype : deftype) : comptype [visit_id comptype] not free => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $expanddt{deftype : deftype, comptype : comptype, `final?#167` : final?, `typeuse*#167` : typeuse*, comptype#167 : comptype, `final?` : final?, `typeuse*` : typeuse*}(deftype) = comptype - -- if ($unrolldt(deftype) = `SUB`_subtype{`final?#167`, `typeuse*#167`, comptype#167}(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) + def $expanddt{deftype : deftype, comptype : comptype, `final?` : final?, `typeuse*` : typeuse*}(deftype) = comptype + -- if ($unrolldt(deftype) = `SUB`_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) [check_dims] numtype DecD free_addrtype(numtype : numtype) : free [visit_id numtype] not free @@ -10811,109 +10273,55 @@ DecD free_externtype(externtype : externtype) : free [check_dims] moduletype DecD free_moduletype(moduletype : moduletype) : free [visit_id moduletype] not free -[check_dims] addrtype dataidx*#12 elemidx*#12 funcidx*#12 globalidx*#12 labelidx*#12 localidx*#12 memidx*#12 tableidx*#12 typeidx*#12 +[check_dims] addrtype [visit_exp (addrtype : addrtype <: numtype)] [visit_exp addrtype] [visit_id addrtype] -[visit_exp {`TYPES`{`typeidx*#12`} [], `FUNCS`{`funcidx*#12`} [], `GLOBALS`{`globalidx*#12`} [], `TABLES`{`tableidx*#12`} [], `MEMS`{`memidx*#12`} [], `ELEMS`{`elemidx*#12`} [], `DATAS`{`dataidx*#12`} [], `LOCALS`{`localidx*#12`} [], `LABELS`{`labelidx*#12`} []}] -[visit_exp `typeidx*#12`] -[visit_id typeidx*#12] +[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] [visit_exp []] -[visit_exp `funcidx*#12`] -[visit_id funcidx*#12] [visit_exp []] -[visit_exp `globalidx*#12`] -[visit_id globalidx*#12] [visit_exp []] -[visit_exp `tableidx*#12`] -[visit_id tableidx*#12] [visit_exp []] -[visit_exp `memidx*#12`] -[visit_id memidx*#12] [visit_exp []] -[visit_exp `elemidx*#12`] -[visit_id elemidx*#12] [visit_exp []] -[visit_exp `dataidx*#12`] -[visit_id dataidx*#12] [visit_exp []] -[visit_exp `localidx*#12`] -[visit_id localidx*#12] [visit_exp []] -[visit_exp `labelidx*#12`] -[visit_id labelidx*#12] [visit_exp []] => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_addrtype{addrtype : addrtype, `typeidx*#12` : typeidx*, `funcidx*#12` : funcidx*, `globalidx*#12` : globalidx*, `tableidx*#12` : tableidx*, `memidx*#12` : memidx*, `elemidx*#12` : elemidx*, `dataidx*#12` : dataidx*, `localidx*#12` : localidx*, `labelidx*#12` : labelidx*}((addrtype : addrtype <: numtype)) = {`TYPES`{`typeidx*#12`} [], `FUNCS`{`funcidx*#12`} [], `GLOBALS`{`globalidx*#12`} [], `TABLES`{`tableidx*#12`} [], `MEMS`{`memidx*#12`} [], `ELEMS`{`elemidx*#12`} [], `DATAS`{`dataidx*#12`} [], `LOCALS`{`localidx*#12`} [], `LABELS`{`labelidx*#12`} []} -[check_dims] dataidx*#13 elemidx*#13 funcidx*#13 globalidx*#13 labelidx*#13 localidx*#13 memidx*#13 numtype tableidx*#13 typeidx*#13 + def $free_addrtype{addrtype : addrtype}((addrtype : addrtype <: numtype)) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} +[check_dims] numtype [visit_exp numtype] [visit_id numtype] -[visit_exp {`TYPES`{`typeidx*#13`} [], `FUNCS`{`funcidx*#13`} [], `GLOBALS`{`globalidx*#13`} [], `TABLES`{`tableidx*#13`} [], `MEMS`{`memidx*#13`} [], `ELEMS`{`elemidx*#13`} [], `DATAS`{`dataidx*#13`} [], `LOCALS`{`localidx*#13`} [], `LABELS`{`labelidx*#13`} []}] -[visit_exp `typeidx*#13`] -[visit_id typeidx*#13] +[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] [visit_exp []] -[visit_exp `funcidx*#13`] -[visit_id funcidx*#13] [visit_exp []] -[visit_exp `globalidx*#13`] -[visit_id globalidx*#13] [visit_exp []] -[visit_exp `tableidx*#13`] -[visit_id tableidx*#13] [visit_exp []] -[visit_exp `memidx*#13`] -[visit_id memidx*#13] [visit_exp []] -[visit_exp `elemidx*#13`] -[visit_id elemidx*#13] [visit_exp []] -[visit_exp `dataidx*#13`] -[visit_id dataidx*#13] [visit_exp []] -[visit_exp `localidx*#13`] -[visit_id localidx*#13] [visit_exp []] -[visit_exp `labelidx*#13`] -[visit_id labelidx*#13] [visit_exp []] => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_numtype{numtype : numtype, `typeidx*#13` : typeidx*, `funcidx*#13` : funcidx*, `globalidx*#13` : globalidx*, `tableidx*#13` : tableidx*, `memidx*#13` : memidx*, `elemidx*#13` : elemidx*, `dataidx*#13` : dataidx*, `localidx*#13` : localidx*, `labelidx*#13` : labelidx*}(numtype) = {`TYPES`{`typeidx*#13`} [], `FUNCS`{`funcidx*#13`} [], `GLOBALS`{`globalidx*#13`} [], `TABLES`{`tableidx*#13`} [], `MEMS`{`memidx*#13`} [], `ELEMS`{`elemidx*#13`} [], `DATAS`{`dataidx*#13`} [], `LOCALS`{`localidx*#13`} [], `LABELS`{`labelidx*#13`} []} -[check_dims] dataidx*#14 elemidx*#14 funcidx*#14 globalidx*#14 labelidx*#14 localidx*#14 memidx*#14 packtype tableidx*#14 typeidx*#14 + def $free_numtype{numtype : numtype}(numtype) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} +[check_dims] packtype [visit_exp packtype] [visit_id packtype] -[visit_exp {`TYPES`{`typeidx*#14`} [], `FUNCS`{`funcidx*#14`} [], `GLOBALS`{`globalidx*#14`} [], `TABLES`{`tableidx*#14`} [], `MEMS`{`memidx*#14`} [], `ELEMS`{`elemidx*#14`} [], `DATAS`{`dataidx*#14`} [], `LOCALS`{`localidx*#14`} [], `LABELS`{`labelidx*#14`} []}] -[visit_exp `typeidx*#14`] -[visit_id typeidx*#14] +[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] [visit_exp []] -[visit_exp `funcidx*#14`] -[visit_id funcidx*#14] [visit_exp []] -[visit_exp `globalidx*#14`] -[visit_id globalidx*#14] [visit_exp []] -[visit_exp `tableidx*#14`] -[visit_id tableidx*#14] [visit_exp []] -[visit_exp `memidx*#14`] -[visit_id memidx*#14] [visit_exp []] -[visit_exp `elemidx*#14`] -[visit_id elemidx*#14] [visit_exp []] -[visit_exp `dataidx*#14`] -[visit_id dataidx*#14] [visit_exp []] -[visit_exp `localidx*#14`] -[visit_id localidx*#14] [visit_exp []] -[visit_exp `labelidx*#14`] -[visit_id labelidx*#14] [visit_exp []] => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_packtype{packtype : packtype, `typeidx*#14` : typeidx*, `funcidx*#14` : funcidx*, `globalidx*#14` : globalidx*, `tableidx*#14` : tableidx*, `memidx*#14` : memidx*, `elemidx*#14` : elemidx*, `dataidx*#14` : dataidx*, `localidx*#14` : localidx*, `labelidx*#14` : labelidx*}(packtype) = {`TYPES`{`typeidx*#14`} [], `FUNCS`{`funcidx*#14`} [], `GLOBALS`{`globalidx*#14`} [], `TABLES`{`tableidx*#14`} [], `MEMS`{`memidx*#14`} [], `ELEMS`{`elemidx*#14`} [], `DATAS`{`dataidx*#14`} [], `LOCALS`{`localidx*#14`} [], `LABELS`{`labelidx*#14`} []} + def $free_packtype{packtype : packtype}(packtype) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} [check_dims] numtype [visit_exp (numtype : numtype <: lanetype)] [visit_exp numtype] @@ -10934,40 +10342,22 @@ DecD free_moduletype(moduletype : moduletype) : free => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_lanetype{packtype : packtype}((packtype : packtype <: lanetype)) = $free_packtype(packtype) -[check_dims] dataidx*#15 elemidx*#15 funcidx*#15 globalidx*#15 labelidx*#15 localidx*#15 memidx*#15 tableidx*#15 typeidx*#15 vectype +[check_dims] vectype [visit_exp vectype] [visit_id vectype] -[visit_exp {`TYPES`{`typeidx*#15`} [], `FUNCS`{`funcidx*#15`} [], `GLOBALS`{`globalidx*#15`} [], `TABLES`{`tableidx*#15`} [], `MEMS`{`memidx*#15`} [], `ELEMS`{`elemidx*#15`} [], `DATAS`{`dataidx*#15`} [], `LOCALS`{`localidx*#15`} [], `LABELS`{`labelidx*#15`} []}] -[visit_exp `typeidx*#15`] -[visit_id typeidx*#15] +[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] [visit_exp []] -[visit_exp `funcidx*#15`] -[visit_id funcidx*#15] [visit_exp []] -[visit_exp `globalidx*#15`] -[visit_id globalidx*#15] [visit_exp []] -[visit_exp `tableidx*#15`] -[visit_id tableidx*#15] [visit_exp []] -[visit_exp `memidx*#15`] -[visit_id memidx*#15] [visit_exp []] -[visit_exp `elemidx*#15`] -[visit_id elemidx*#15] [visit_exp []] -[visit_exp `dataidx*#15`] -[visit_id dataidx*#15] [visit_exp []] -[visit_exp `localidx*#15`] -[visit_id localidx*#15] [visit_exp []] -[visit_exp `labelidx*#15`] -[visit_id labelidx*#15] [visit_exp []] => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_vectype{vectype : vectype, `typeidx*#15` : typeidx*, `funcidx*#15` : funcidx*, `globalidx*#15` : globalidx*, `tableidx*#15` : tableidx*, `memidx*#15` : memidx*, `elemidx*#15` : elemidx*, `dataidx*#15` : dataidx*, `localidx*#15` : localidx*, `labelidx*#15` : labelidx*}(vectype) = {`TYPES`{`typeidx*#15`} [], `FUNCS`{`funcidx*#15`} [], `GLOBALS`{`globalidx*#15`} [], `TABLES`{`tableidx*#15`} [], `MEMS`{`memidx*#15`} [], `ELEMS`{`elemidx*#15`} [], `DATAS`{`dataidx*#15`} [], `LOCALS`{`localidx*#15`} [], `LABELS`{`labelidx*#15`} []} + def $free_vectype{vectype : vectype}(vectype) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} [check_dims] numtype [visit_exp (numtype : numtype <: consttype)] [visit_exp numtype] @@ -10988,49 +10378,27 @@ DecD free_moduletype(moduletype : moduletype) : free => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_consttype{vectype : vectype}((vectype : vectype <: consttype)) = $free_vectype(vectype) -[check_dims] absheaptype dataidx*#16 elemidx*#16 funcidx*#16 globalidx*#16 labelidx*#16 localidx*#16 memidx*#16 tableidx*#16 typeidx*#16 +[check_dims] absheaptype [visit_exp absheaptype] [visit_id absheaptype] -[visit_exp {`TYPES`{`typeidx*#16`} [], `FUNCS`{`funcidx*#16`} [], `GLOBALS`{`globalidx*#16`} [], `TABLES`{`tableidx*#16`} [], `MEMS`{`memidx*#16`} [], `ELEMS`{`elemidx*#16`} [], `DATAS`{`dataidx*#16`} [], `LOCALS`{`localidx*#16`} [], `LABELS`{`labelidx*#16`} []}] -[visit_exp `typeidx*#16`] -[visit_id typeidx*#16] +[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] [visit_exp []] -[visit_exp `funcidx*#16`] -[visit_id funcidx*#16] [visit_exp []] -[visit_exp `globalidx*#16`] -[visit_id globalidx*#16] [visit_exp []] -[visit_exp `tableidx*#16`] -[visit_id tableidx*#16] [visit_exp []] -[visit_exp `memidx*#16`] -[visit_id memidx*#16] [visit_exp []] -[visit_exp `elemidx*#16`] -[visit_id elemidx*#16] [visit_exp []] -[visit_exp `dataidx*#16`] -[visit_id dataidx*#16] [visit_exp []] -[visit_exp `localidx*#16`] -[visit_id localidx*#16] [visit_exp []] -[visit_exp `labelidx*#16`] -[visit_id labelidx*#16] [visit_exp []] => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_absheaptype{absheaptype : absheaptype, `typeidx*#16` : typeidx*, `funcidx*#16` : funcidx*, `globalidx*#16` : globalidx*, `tableidx*#16` : tableidx*, `memidx*#16` : memidx*, `elemidx*#16` : elemidx*, `dataidx*#16` : dataidx*, `localidx*#16` : localidx*, `labelidx*#16` : labelidx*}(absheaptype) = {`TYPES`{`typeidx*#16`} [], `FUNCS`{`funcidx*#16`} [], `GLOBALS`{`globalidx*#16`} [], `TABLES`{`tableidx*#16`} [], `MEMS`{`memidx*#16`} [], `ELEMS`{`elemidx*#16`} [], `DATAS`{`dataidx*#16`} [], `LOCALS`{`localidx*#16`} [], `LABELS`{`labelidx*#16`} []} + def $free_absheaptype{absheaptype : absheaptype}(absheaptype) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} [check_dims] deftype DecD free_deftype(deftype : deftype) : free [visit_id deftype] not free -[check_dims] n n#247 rectype rectype#241 -[visit_exp `_DEF`_deftype{rectype#241, n#247}(rectype, n)] -[visit_exp rectype#241] -[visit_id rectype#241] -[visit_exp n#247] -[visit_id n#247] +[check_dims] n rectype +[visit_exp `_DEF`_deftype(rectype, n)] [visit_exp (rectype, n)] [visit_exp rectype] [visit_id rectype] @@ -11041,11 +10409,9 @@ DecD free_deftype(deftype : deftype) : free [visit_id rectype] not free => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_deftype{rectype#241 : rectype, n#247 : n, rectype : rectype, n : n}(`_DEF`_deftype{rectype#241, n#247}(rectype, n)) = $free_rectype(rectype) -[check_dims] typeidx typeidx#25 -[visit_exp `_IDX`_typevar{typeidx#25}(typeidx)] -[visit_exp typeidx#25] -[visit_id typeidx#25] + def $free_deftype{rectype : rectype, n : n}(`_DEF`_deftype(rectype, n)) = $free_rectype(rectype) +[check_dims] typeidx +[visit_exp `_IDX`_typevar(typeidx)] [visit_exp (typeidx)] [visit_exp typeidx] [visit_id typeidx] @@ -11054,45 +10420,25 @@ DecD free_deftype(deftype : deftype) : free [visit_id typeidx] not free => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_typevar{typeidx#25 : typeidx, typeidx : typeidx}(`_IDX`_typevar{typeidx#25}(typeidx)) = $free_typeidx(typeidx) -[check_dims] dataidx*#17 elemidx*#17 funcidx*#17 globalidx*#17 labelidx*#17 localidx*#17 memidx*#17 n n#249 tableidx*#17 typeidx*#17 -[visit_exp `REC`_typevar{n#249}(n)] -[visit_exp n#249] -[visit_id n#249] + def $free_typevar{typeidx : typeidx}(`_IDX`_typevar(typeidx)) = $free_typeidx(typeidx) +[check_dims] n +[visit_exp `REC`_typevar(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp {`TYPES`{`typeidx*#17`} [], `FUNCS`{`funcidx*#17`} [], `GLOBALS`{`globalidx*#17`} [], `TABLES`{`tableidx*#17`} [], `MEMS`{`memidx*#17`} [], `ELEMS`{`elemidx*#17`} [], `DATAS`{`dataidx*#17`} [], `LOCALS`{`localidx*#17`} [], `LABELS`{`labelidx*#17`} []}] -[visit_exp `typeidx*#17`] -[visit_id typeidx*#17] +[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] [visit_exp []] -[visit_exp `funcidx*#17`] -[visit_id funcidx*#17] [visit_exp []] -[visit_exp `globalidx*#17`] -[visit_id globalidx*#17] [visit_exp []] -[visit_exp `tableidx*#17`] -[visit_id tableidx*#17] [visit_exp []] -[visit_exp `memidx*#17`] -[visit_id memidx*#17] [visit_exp []] -[visit_exp `elemidx*#17`] -[visit_id elemidx*#17] [visit_exp []] -[visit_exp `dataidx*#17`] -[visit_id dataidx*#17] [visit_exp []] -[visit_exp `localidx*#17`] -[visit_id localidx*#17] [visit_exp []] -[visit_exp `labelidx*#17`] -[visit_id labelidx*#17] [visit_exp []] => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_typevar{n#249 : n, n : n, `typeidx*#17` : typeidx*, `funcidx*#17` : funcidx*, `globalidx*#17` : globalidx*, `tableidx*#17` : tableidx*, `memidx*#17` : memidx*, `elemidx*#17` : elemidx*, `dataidx*#17` : dataidx*, `localidx*#17` : localidx*, `labelidx*#17` : labelidx*}(`REC`_typevar{n#249}(n)) = {`TYPES`{`typeidx*#17`} [], `FUNCS`{`funcidx*#17`} [], `GLOBALS`{`globalidx*#17`} [], `TABLES`{`tableidx*#17`} [], `MEMS`{`memidx*#17`} [], `ELEMS`{`elemidx*#17`} [], `DATAS`{`dataidx*#17`} [], `LOCALS`{`localidx*#17`} [], `LABELS`{`labelidx*#17`} []} + def $free_typevar{n : n}(`REC`_typevar(n)) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} [check_dims] typevar [visit_exp (typevar : typevar <: typeuse)] [visit_exp typevar] @@ -11133,12 +10479,8 @@ DecD free_deftype(deftype : deftype) : free => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_heaptype{typeuse : typeuse}((typeuse : typeuse <: heaptype)) = $free_typeuse(typeuse) -[check_dims] heaptype heaptype#293 null null?#293 -[visit_exp `REF`_reftype{`null?#293`, heaptype#293}(null?{null <- `null?`}, heaptype)] -[visit_exp `null?#293`] -[visit_id null?#293] -[visit_exp heaptype#293] -[visit_id heaptype#293] +[check_dims] heaptype null +[visit_exp `REF`_reftype(null?{null <- `null?`}, heaptype)] [visit_exp (null?{null <- `null?`}, heaptype)] [visit_exp null?{null <- `null?`}] [scope_enter null] @@ -11156,7 +10498,7 @@ DecD free_deftype(deftype : deftype) : free [visit_id heaptype] not free => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_reftype{`null?#293` : null?, heaptype#293 : heaptype, `null?` : null?, heaptype : heaptype}(`REF`_reftype{`null?#293`, heaptype#293}(null?{null <- `null?`}, heaptype)) = $free_heaptype(heaptype) + def $free_reftype{`null?` : null?, heaptype : heaptype}(`REF`_reftype(null?{null <- `null?`}, heaptype)) = $free_heaptype(heaptype) [check_dims] numtype [visit_exp (numtype : numtype <: valtype)] [visit_exp numtype] @@ -11187,44 +10529,24 @@ DecD free_deftype(deftype : deftype) : free => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_valtype{reftype : reftype}((reftype : reftype <: valtype)) = $free_reftype(reftype) -[check_dims] dataidx*#18 elemidx*#18 funcidx*#18 globalidx*#18 labelidx*#18 localidx*#18 memidx*#18 tableidx*#18 typeidx*#18 +[check_dims] [visit_exp `BOT`_valtype] [visit_exp ()] -[visit_exp {`TYPES`{`typeidx*#18`} [], `FUNCS`{`funcidx*#18`} [], `GLOBALS`{`globalidx*#18`} [], `TABLES`{`tableidx*#18`} [], `MEMS`{`memidx*#18`} [], `ELEMS`{`elemidx*#18`} [], `DATAS`{`dataidx*#18`} [], `LOCALS`{`localidx*#18`} [], `LABELS`{`labelidx*#18`} []}] -[visit_exp `typeidx*#18`] -[visit_id typeidx*#18] +[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] [visit_exp []] -[visit_exp `funcidx*#18`] -[visit_id funcidx*#18] [visit_exp []] -[visit_exp `globalidx*#18`] -[visit_id globalidx*#18] [visit_exp []] -[visit_exp `tableidx*#18`] -[visit_id tableidx*#18] [visit_exp []] -[visit_exp `memidx*#18`] -[visit_id memidx*#18] [visit_exp []] -[visit_exp `elemidx*#18`] -[visit_id elemidx*#18] [visit_exp []] -[visit_exp `dataidx*#18`] -[visit_id dataidx*#18] [visit_exp []] -[visit_exp `localidx*#18`] -[visit_id localidx*#18] [visit_exp []] -[visit_exp `labelidx*#18`] -[visit_id labelidx*#18] [visit_exp []] => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_valtype{`typeidx*#18` : typeidx*, `funcidx*#18` : funcidx*, `globalidx*#18` : globalidx*, `tableidx*#18` : tableidx*, `memidx*#18` : memidx*, `elemidx*#18` : elemidx*, `dataidx*#18` : dataidx*, `localidx*#18` : localidx*, `labelidx*#18` : labelidx*}(`BOT`_valtype) = {`TYPES`{`typeidx*#18`} [], `FUNCS`{`funcidx*#18`} [], `GLOBALS`{`globalidx*#18`} [], `TABLES`{`tableidx*#18`} [], `MEMS`{`memidx*#18`} [], `ELEMS`{`elemidx*#18`} [], `DATAS`{`dataidx*#18`} [], `LOCALS`{`localidx*#18`} [], `LABELS`{`labelidx*#18`} []} -[check_dims] X*#230 valtype -[visit_exp `%`_resulttype{`X*#230`}(valtype*{valtype <- `valtype*`})] -[visit_exp `X*#230`] -[visit_id X*#230] + def $free_valtype(`BOT`_valtype) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} +[check_dims] valtype +[visit_exp `%`_resulttype(valtype*{valtype <- `valtype*`})] [visit_exp (valtype*{valtype <- `valtype*`})] [visit_exp valtype*{valtype <- `valtype*`}] [scope_enter valtype] @@ -11248,7 +10570,7 @@ DecD free_deftype(deftype : deftype) : free [visit_id valtype*] no dims => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_resulttype{`X*#230` : valtype*, `valtype*` : valtype*}(`%`_resulttype{`X*#230`}(valtype*{valtype <- `valtype*`})) = $free_list($free_valtype(valtype)*{valtype <- `valtype*`}) + def $free_resulttype{`valtype*` : valtype*}(`%`_resulttype(valtype*{valtype <- `valtype*`})) = $free_list($free_valtype(valtype)*{valtype <- `valtype*`}) [check_dims] valtype [visit_exp (valtype : valtype <: storagetype)] [visit_exp valtype] @@ -11269,12 +10591,8 @@ DecD free_deftype(deftype : deftype) : free => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_storagetype{packtype : packtype}((packtype : packtype <: storagetype)) = $free_packtype(packtype) -[check_dims] mut mut?#209 storagetype storagetype#93 -[visit_exp `%%`_fieldtype{`mut?#209`, storagetype#93}(mut?{mut <- `mut?`}, storagetype)] -[visit_exp `mut?#209`] -[visit_id mut?#209] -[visit_exp storagetype#93] -[visit_id storagetype#93] +[check_dims] mut storagetype +[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, storagetype)] [visit_exp (mut?{mut <- `mut?`}, storagetype)] [visit_exp mut?{mut <- `mut?`}] [scope_enter mut] @@ -11292,13 +10610,11 @@ DecD free_deftype(deftype : deftype) : free [visit_id storagetype] not free => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_fieldtype{`mut?#209` : mut?, storagetype#93 : storagetype, `mut?` : mut?, storagetype : storagetype}(`%%`_fieldtype{`mut?#209`, storagetype#93}(mut?{mut <- `mut?`}, storagetype)) = $free_storagetype(storagetype) -[check_dims] X*#245 fieldtype -[visit_exp `STRUCT`_comptype(`%`_list{`X*#245`}(fieldtype*{fieldtype <- `fieldtype*`}))] -[visit_exp (`%`_list{`X*#245`}(fieldtype*{fieldtype <- `fieldtype*`}))] -[visit_exp `%`_list{`X*#245`}(fieldtype*{fieldtype <- `fieldtype*`})] -[visit_exp `X*#245`] -[visit_id X*#245] + def $free_fieldtype{`mut?` : mut?, storagetype : storagetype}(`%%`_fieldtype(mut?{mut <- `mut?`}, storagetype)) = $free_storagetype(storagetype) +[check_dims] fieldtype +[visit_exp `STRUCT`_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))] +[visit_exp (`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))] +[visit_exp `%`_list(fieldtype*{fieldtype <- `fieldtype*`})] [visit_exp (fieldtype*{fieldtype <- `fieldtype*`})] [visit_exp fieldtype*{fieldtype <- `fieldtype*`}] [scope_enter fieldtype] @@ -11322,11 +10638,9 @@ DecD free_deftype(deftype : deftype) : free [visit_id fieldtype*] no dims => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_comptype{`X*#245` : fieldtype*, `fieldtype*` : fieldtype*}(`STRUCT`_comptype(`%`_list{`X*#245`}(fieldtype*{fieldtype <- `fieldtype*`}))) = $free_list($free_fieldtype(fieldtype)*{fieldtype <- `fieldtype*`}) -[check_dims] fieldtype fieldtype#5 -[visit_exp `ARRAY`_comptype{fieldtype#5}(fieldtype)] -[visit_exp fieldtype#5] -[visit_id fieldtype#5] + def $free_comptype{`fieldtype*` : fieldtype*}(`STRUCT`_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) = $free_list($free_fieldtype(fieldtype)*{fieldtype <- `fieldtype*`}) +[check_dims] fieldtype +[visit_exp `ARRAY`_comptype(fieldtype)] [visit_exp (fieldtype)] [visit_exp fieldtype] [visit_id fieldtype] @@ -11335,11 +10649,9 @@ DecD free_deftype(deftype : deftype) : free [visit_id fieldtype] not free => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_comptype{fieldtype#5 : fieldtype, fieldtype : fieldtype}(`ARRAY`_comptype{fieldtype#5}(fieldtype)) = $free_fieldtype(fieldtype) -[check_dims] resulttype#7 resulttype_1 resulttype_2 -[visit_exp `FUNC%->%`_comptype{resulttype#7}(resulttype_1, resulttype_2)] -[visit_exp resulttype#7] -[visit_id resulttype#7] + def $free_comptype{fieldtype : fieldtype}(`ARRAY`_comptype(fieldtype)) = $free_fieldtype(fieldtype) +[check_dims] resulttype_1 resulttype_2 +[visit_exp `FUNC%->%`_comptype(resulttype_1, resulttype_2)] [visit_exp (resulttype_1, resulttype_2)] [visit_exp resulttype_1] [visit_id resulttype_1] @@ -11354,15 +10666,9 @@ DecD free_deftype(deftype : deftype) : free [visit_id resulttype_2] not free => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_comptype{resulttype#7 : resulttype, resulttype_1 : resulttype, resulttype_2 : resulttype}(`FUNC%->%`_comptype{resulttype#7}(resulttype_1, resulttype_2)) = $free_resulttype(resulttype_1) +++ $free_resulttype(resulttype_2) -[check_dims] comptype comptype#179 final final?#179 typeuse typeuse*#179 -[visit_exp `SUB`_subtype{`final?#179`, `typeuse*#179`, comptype#179}(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)] -[visit_exp `final?#179`] -[visit_id final?#179] -[visit_exp `typeuse*#179`] -[visit_id typeuse*#179] -[visit_exp comptype#179] -[visit_id comptype#179] + def $free_comptype{resulttype_1 : resulttype, resulttype_2 : resulttype}(`FUNC%->%`_comptype(resulttype_1, resulttype_2)) = $free_resulttype(resulttype_1) +++ $free_resulttype(resulttype_2) +[check_dims] comptype final typeuse +[visit_exp `SUB`_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)] [visit_exp (final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)] [visit_exp final?{final <- `final?`}] [scope_enter final] @@ -11401,13 +10707,11 @@ DecD free_deftype(deftype : deftype) : free [visit_id comptype] not free => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_subtype{`final?#179` : final?, `typeuse*#179` : typeuse*, comptype#179 : comptype, `final?` : final?, `typeuse*` : typeuse*, comptype : comptype}(`SUB`_subtype{`final?#179`, `typeuse*#179`, comptype#179}(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) = $free_list($free_typeuse(typeuse)*{typeuse <- `typeuse*`}) +++ $free_comptype(comptype) -[check_dims] X*#302 subtype -[visit_exp `REC`_rectype(`%`_list{`X*#302`}(subtype*{subtype <- `subtype*`}))] -[visit_exp (`%`_list{`X*#302`}(subtype*{subtype <- `subtype*`}))] -[visit_exp `%`_list{`X*#302`}(subtype*{subtype <- `subtype*`})] -[visit_exp `X*#302`] -[visit_id X*#302] + 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) +[check_dims] subtype +[visit_exp `REC`_rectype(`%`_list(subtype*{subtype <- `subtype*`}))] +[visit_exp (`%`_list(subtype*{subtype <- `subtype*`}))] +[visit_exp `%`_list(subtype*{subtype <- `subtype*`})] [visit_exp (subtype*{subtype <- `subtype*`})] [visit_exp subtype*{subtype <- `subtype*`}] [scope_enter subtype] @@ -11431,7 +10735,7 @@ DecD free_deftype(deftype : deftype) : free [visit_id subtype*] no dims => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_rectype{`X*#302` : subtype*, `subtype*` : subtype*}(`REC`_rectype(`%`_list{`X*#302`}(subtype*{subtype <- `subtype*`}))) = $free_list($free_subtype(subtype)*{subtype <- `subtype*`}) + def $free_rectype{`subtype*` : subtype*}(`REC`_rectype(`%`_list(subtype*{subtype <- `subtype*`}))) = $free_list($free_subtype(subtype)*{subtype <- `subtype*`}) [check_dims] deftype [visit_exp (deftype : deftype <: typeuse)] [visit_exp deftype] @@ -11442,12 +10746,8 @@ DecD free_deftype(deftype : deftype) : free => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_tagtype{deftype : deftype}((deftype : deftype <: typeuse)) = $free_deftype(deftype) -[check_dims] mut mut?#253 valtype valtype#127 -[visit_exp `%%`_globaltype{`mut?#253`, valtype#127}(mut?{mut <- `mut?`}, valtype)] -[visit_exp `mut?#253`] -[visit_id mut?#253] -[visit_exp valtype#127] -[visit_id valtype#127] +[check_dims] mut valtype +[visit_exp `%%`_globaltype(mut?{mut <- `mut?`}, valtype)] [visit_exp (mut?{mut <- `mut?`}, valtype)] [visit_exp mut?{mut <- `mut?`}] [scope_enter mut] @@ -11465,13 +10765,9 @@ DecD free_deftype(deftype : deftype) : free [visit_id valtype] not free => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_globaltype{`mut?#253` : mut?, valtype#127 : valtype, `mut?` : mut?, valtype : valtype}(`%%`_globaltype{`mut?#253`, valtype#127}(mut?{mut <- `mut?`}, valtype)) = $free_valtype(valtype) -[check_dims] addrtype addrtype#211 limits limits#211 -[visit_exp `%%PAGE`_memtype{addrtype#211, limits#211}(addrtype, limits)] -[visit_exp addrtype#211] -[visit_id addrtype#211] -[visit_exp limits#211] -[visit_id limits#211] + def $free_globaltype{`mut?` : mut?, valtype : valtype}(`%%`_globaltype(mut?{mut <- `mut?`}, valtype)) = $free_valtype(valtype) +[check_dims] addrtype limits +[visit_exp `%%PAGE`_memtype(addrtype, limits)] [visit_exp (addrtype, limits)] [visit_exp addrtype] [visit_id addrtype] @@ -11483,15 +10779,9 @@ DecD free_deftype(deftype : deftype) : free [visit_id addrtype] not free => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_memtype{addrtype#211 : addrtype, limits#211 : limits, addrtype : addrtype, limits : limits}(`%%PAGE`_memtype{addrtype#211, limits#211}(addrtype, limits)) = $free_addrtype((addrtype : addrtype <: numtype)) -[check_dims] addrtype addrtype#223 limits limits#223 reftype reftype#111 -[visit_exp `%%%`_tabletype{addrtype#223, limits#223, reftype#111}(addrtype, limits, reftype)] -[visit_exp addrtype#223] -[visit_id addrtype#223] -[visit_exp limits#223] -[visit_id limits#223] -[visit_exp reftype#111] -[visit_id reftype#111] + def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype((addrtype : addrtype <: numtype)) +[check_dims] addrtype limits reftype +[visit_exp `%%%`_tabletype(addrtype, limits, reftype)] [visit_exp (addrtype, limits, reftype)] [visit_exp addrtype] [visit_id addrtype] @@ -11509,41 +10799,23 @@ DecD free_deftype(deftype : deftype) : free [visit_id reftype] not free => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_tabletype{addrtype#223 : addrtype, limits#223 : limits, reftype#111 : reftype, addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype{addrtype#223, limits#223, reftype#111}(addrtype, limits, reftype)) = $free_addrtype((addrtype : addrtype <: numtype)) +++ $free_reftype(reftype) -[check_dims] dataidx*#19 elemidx*#19 funcidx*#19 globalidx*#19 labelidx*#19 localidx*#19 memidx*#19 tableidx*#19 typeidx*#19 + def $free_tabletype{addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype(addrtype, limits, reftype)) = $free_addrtype((addrtype : addrtype <: numtype)) +++ $free_reftype(reftype) +[check_dims] [visit_exp `OK`_datatype] [visit_exp ()] -[visit_exp {`TYPES`{`typeidx*#19`} [], `FUNCS`{`funcidx*#19`} [], `GLOBALS`{`globalidx*#19`} [], `TABLES`{`tableidx*#19`} [], `MEMS`{`memidx*#19`} [], `ELEMS`{`elemidx*#19`} [], `DATAS`{`dataidx*#19`} [], `LOCALS`{`localidx*#19`} [], `LABELS`{`labelidx*#19`} []}] -[visit_exp `typeidx*#19`] -[visit_id typeidx*#19] +[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] [visit_exp []] -[visit_exp `funcidx*#19`] -[visit_id funcidx*#19] [visit_exp []] -[visit_exp `globalidx*#19`] -[visit_id globalidx*#19] [visit_exp []] -[visit_exp `tableidx*#19`] -[visit_id tableidx*#19] [visit_exp []] -[visit_exp `memidx*#19`] -[visit_id memidx*#19] [visit_exp []] -[visit_exp `elemidx*#19`] -[visit_id elemidx*#19] [visit_exp []] -[visit_exp `dataidx*#19`] -[visit_id dataidx*#19] [visit_exp []] -[visit_exp `localidx*#19`] -[visit_id localidx*#19] [visit_exp []] -[visit_exp `labelidx*#19`] -[visit_id labelidx*#19] [visit_exp []] => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_datatype{`typeidx*#19` : typeidx*, `funcidx*#19` : funcidx*, `globalidx*#19` : globalidx*, `tableidx*#19` : tableidx*, `memidx*#19` : memidx*, `elemidx*#19` : elemidx*, `dataidx*#19` : dataidx*, `localidx*#19` : localidx*, `labelidx*#19` : labelidx*}(`OK`_datatype) = {`TYPES`{`typeidx*#19`} [], `FUNCS`{`funcidx*#19`} [], `GLOBALS`{`globalidx*#19`} [], `TABLES`{`tableidx*#19`} [], `MEMS`{`memidx*#19`} [], `ELEMS`{`elemidx*#19`} [], `DATAS`{`dataidx*#19`} [], `LOCALS`{`localidx*#19`} [], `LABELS`{`labelidx*#19`} []} + def $free_datatype(`OK`_datatype) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} [check_dims] reftype [visit_exp reftype] [visit_id reftype] @@ -11553,10 +10825,8 @@ DecD free_deftype(deftype : deftype) : free => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_elemtype{reftype : reftype}(reftype) = $free_reftype(reftype) -[check_dims] tagtype tagtype#7 -[visit_exp `TAG`_externtype{tagtype#7}(tagtype)] -[visit_exp tagtype#7] -[visit_id tagtype#7] +[check_dims] tagtype +[visit_exp `TAG`_externtype(tagtype)] [visit_exp (tagtype)] [visit_exp tagtype] [visit_id tagtype] @@ -11565,11 +10835,9 @@ DecD free_deftype(deftype : deftype) : free [visit_id tagtype] not free => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{tagtype#7 : tagtype, tagtype : tagtype}(`TAG`_externtype{tagtype#7}(tagtype)) = $free_tagtype(tagtype) -[check_dims] globaltype globaltype#7 -[visit_exp `GLOBAL`_externtype{globaltype#7}(globaltype)] -[visit_exp globaltype#7] -[visit_id globaltype#7] + def $free_externtype{tagtype : tagtype}(`TAG`_externtype(tagtype)) = $free_tagtype(tagtype) +[check_dims] globaltype +[visit_exp `GLOBAL`_externtype(globaltype)] [visit_exp (globaltype)] [visit_exp globaltype] [visit_id globaltype] @@ -11578,11 +10846,9 @@ DecD free_deftype(deftype : deftype) : free [visit_id globaltype] not free => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{globaltype#7 : globaltype, globaltype : globaltype}(`GLOBAL`_externtype{globaltype#7}(globaltype)) = $free_globaltype(globaltype) -[check_dims] memtype memtype#7 -[visit_exp `MEM`_externtype{memtype#7}(memtype)] -[visit_exp memtype#7] -[visit_id memtype#7] + def $free_externtype{globaltype : globaltype}(`GLOBAL`_externtype(globaltype)) = $free_globaltype(globaltype) +[check_dims] memtype +[visit_exp `MEM`_externtype(memtype)] [visit_exp (memtype)] [visit_exp memtype] [visit_id memtype] @@ -11591,11 +10857,9 @@ DecD free_deftype(deftype : deftype) : free [visit_id memtype] not free => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{memtype#7 : memtype, memtype : memtype}(`MEM`_externtype{memtype#7}(memtype)) = $free_memtype(memtype) -[check_dims] tabletype tabletype#7 -[visit_exp `TABLE`_externtype{tabletype#7}(tabletype)] -[visit_exp tabletype#7] -[visit_id tabletype#7] + def $free_externtype{memtype : memtype}(`MEM`_externtype(memtype)) = $free_memtype(memtype) +[check_dims] tabletype +[visit_exp `TABLE`_externtype(tabletype)] [visit_exp (tabletype)] [visit_exp tabletype] [visit_id tabletype] @@ -11604,11 +10868,9 @@ DecD free_deftype(deftype : deftype) : free [visit_id tabletype] not free => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{tabletype#7 : tabletype, tabletype : tabletype}(`TABLE`_externtype{tabletype#7}(tabletype)) = $free_tabletype(tabletype) -[check_dims] typeuse typeuse#7 -[visit_exp `FUNC`_externtype{typeuse#7}(typeuse)] -[visit_exp typeuse#7] -[visit_id typeuse#7] + def $free_externtype{tabletype : tabletype}(`TABLE`_externtype(tabletype)) = $free_tabletype(tabletype) +[check_dims] typeuse +[visit_exp `FUNC`_externtype(typeuse)] [visit_exp (typeuse)] [visit_exp typeuse] [visit_id typeuse] @@ -11617,11 +10879,9 @@ DecD free_deftype(deftype : deftype) : free [visit_id typeuse] not free => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{typeuse#7 : typeuse, typeuse : typeuse}(`FUNC`_externtype{typeuse#7}(typeuse)) = $free_typeuse(typeuse) -[check_dims] externtype*#88 externtype_1 externtype_2 -[visit_exp `%->%`_moduletype{`externtype*#88`}(externtype_1*{externtype_1 <- `externtype_1*`}, externtype_2*{externtype_2 <- `externtype_2*`})] -[visit_exp `externtype*#88`] -[visit_id externtype*#88] + def $free_externtype{typeuse : typeuse}(`FUNC`_externtype(typeuse)) = $free_typeuse(typeuse) +[check_dims] externtype_1 externtype_2 +[visit_exp `%->%`_moduletype(externtype_1*{externtype_1 <- `externtype_1*`}, externtype_2*{externtype_2 <- `externtype_2*`})] [visit_exp (externtype_1*{externtype_1 <- `externtype_1*`}, externtype_2*{externtype_2 <- `externtype_2*`})] [visit_exp externtype_1*{externtype_1 <- `externtype_1*`}] [scope_enter externtype_1] @@ -11666,7 +10926,7 @@ DecD free_deftype(deftype : deftype) : free [visit_id externtype_2*] no dims => ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_moduletype{`externtype*#88` : externtype*, `externtype_1*` : externtype*, `externtype_2*` : externtype*}(`%->%`_moduletype{`externtype*#88`}(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*`}) + 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*`}) [check_dims] numtype [visit_id numtype] not free [check_dims] Inn @@ -11721,11 +10981,13 @@ DecD free_deftype(deftype : deftype) : free [check_dims] [visit_exp 64] [check_dims] +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] --- 1 --- [check_dims] --- 2 --- @@ -11734,34 +10996,39 @@ DecD free_deftype(deftype : deftype) : free [check_dims] numtype [visit_id numtype] not free [check_dims] Inn +[check_dims] Inn --- 1 --- [check_dims] Inn --- 2 --- --- 3 --- --- 4 --- +[check_dims] Inn --- 1 --- [check_dims] Inn --- 2 --- --- 3 --- --- 4 --- +[check_dims] Inn --- 1 --- [check_dims] Inn --- 2 --- --- 3 --- --- 4 --- +[check_dims] Inn +[scope_enter sz] +[visit_id sz] not free +[visit_id sz] no dims +[scope_exit sz] --- 1 --- -[check_dims] Inn i#1051 sz +[check_dims] Inn sz --- 2 --- --- 3 --- --- 4 --- -[visit_id sz] -[visit_exp (sz!`%`_sz{i#1051}.0 < $sizenn((Inn : Inn <: numtype)))] -[visit_exp sz!`%`_sz{i#1051}.0] -[visit_exp sz!`%`_sz{i#1051}] +[visit_exp (sz!`%`_sz.0 < $sizenn((Inn : Inn <: numtype)))] +[visit_exp sz!`%`_sz.0] +[visit_exp sz!`%`_sz] [visit_exp sz] [visit_id sz] not free -[visit_exp i#1051] -[visit_id i#1051] [visit_exp $sizenn((Inn : Inn <: numtype))] [visit_exp (Inn : Inn <: numtype)] [visit_exp Inn] @@ -11771,36 +11038,43 @@ DecD free_deftype(deftype : deftype) : free [visit_exp Inn] [visit_id Inn] [check_dims] Fnn +[check_dims] Fnn --- 1 --- [check_dims] Fnn --- 2 --- --- 3 --- --- 4 --- +[check_dims] Fnn --- 1 --- [check_dims] Fnn --- 2 --- --- 3 --- --- 4 --- +[check_dims] Fnn --- 1 --- [check_dims] Fnn --- 2 --- --- 3 --- --- 4 --- +[check_dims] Fnn --- 1 --- [check_dims] Fnn --- 2 --- --- 3 --- --- 4 --- +[check_dims] Fnn --- 1 --- [check_dims] Fnn --- 2 --- --- 3 --- --- 4 --- +[check_dims] Fnn --- 1 --- [check_dims] Fnn --- 2 --- --- 3 --- --- 4 --- +[check_dims] Fnn --- 1 --- [check_dims] Fnn --- 2 --- @@ -11812,67 +11086,85 @@ DecD free_deftype(deftype : deftype) : free [check_dims] numtype [visit_id numtype] not free [check_dims] Inn +[check_dims] Inn --- 1 --- [check_dims] Inn --- 2 --- --- 3 --- --- 4 --- +[check_dims] Inn --- 1 --- [check_dims] Inn --- 2 --- --- 3 --- --- 4 --- +[check_dims] Inn --- 1 --- [check_dims] Inn --- 2 --- --- 3 --- --- 4 --- +[check_dims] Inn +[scope_enter sx] +[visit_id sx] not free +[visit_id sx] no dims +[scope_exit sx] --- 1 --- [check_dims] Inn --- 2 --- --- 3 --- --- 4 --- +[check_dims] Inn +[scope_enter sx] +[visit_id sx] not free [visit_id sx] no dims -[visit_id sx] +[scope_exit sx] --- 1 --- [check_dims] Inn --- 2 --- --- 3 --- --- 4 --- -[visit_id sx] no dims -[visit_id sx] +[check_dims] Inn --- 1 --- [check_dims] Inn --- 2 --- --- 3 --- --- 4 --- +[check_dims] Inn --- 1 --- [check_dims] Inn --- 2 --- --- 3 --- --- 4 --- +[check_dims] Inn --- 1 --- [check_dims] Inn --- 2 --- --- 3 --- --- 4 --- +[check_dims] Inn --- 1 --- [check_dims] Inn --- 2 --- --- 3 --- --- 4 --- +[check_dims] Inn +[scope_enter sx] +[visit_id sx] not free +[visit_id sx] no dims +[scope_exit sx] --- 1 --- [check_dims] Inn --- 2 --- --- 3 --- --- 4 --- -[visit_id sx] no dims -[visit_id sx] +[check_dims] Inn --- 1 --- [check_dims] Inn --- 2 --- --- 3 --- --- 4 --- +[check_dims] Inn --- 1 --- [check_dims] Inn --- 2 --- @@ -11882,36 +11174,43 @@ DecD free_deftype(deftype : deftype) : free [visit_exp Inn] [visit_id Inn] [check_dims] Fnn +[check_dims] Fnn --- 1 --- [check_dims] Fnn --- 2 --- --- 3 --- --- 4 --- +[check_dims] Fnn --- 1 --- [check_dims] Fnn --- 2 --- --- 3 --- --- 4 --- +[check_dims] Fnn --- 1 --- [check_dims] Fnn --- 2 --- --- 3 --- --- 4 --- +[check_dims] Fnn --- 1 --- [check_dims] Fnn --- 2 --- --- 3 --- --- 4 --- +[check_dims] Fnn --- 1 --- [check_dims] Fnn --- 2 --- --- 3 --- --- 4 --- +[check_dims] Fnn --- 1 --- [check_dims] Fnn --- 2 --- --- 3 --- --- 4 --- +[check_dims] Fnn --- 1 --- [check_dims] Fnn --- 2 --- @@ -11923,6 +11222,7 @@ DecD free_deftype(deftype : deftype) : free [check_dims] numtype [visit_id numtype] not free [check_dims] Inn +[check_dims] Inn --- 1 --- [check_dims] Inn --- 2 --- @@ -11934,73 +11234,93 @@ DecD free_deftype(deftype : deftype) : free [check_dims] numtype [visit_id numtype] not free [check_dims] Inn +[check_dims] Inn --- 1 --- [check_dims] Inn --- 2 --- --- 3 --- --- 4 --- +[check_dims] Inn --- 1 --- [check_dims] Inn --- 2 --- --- 3 --- --- 4 --- +[check_dims] Inn +[scope_enter sx] +[visit_id sx] not free +[visit_id sx] no dims +[scope_exit sx] --- 1 --- [check_dims] Inn --- 2 --- --- 3 --- --- 4 --- +[check_dims] Inn +[scope_enter sx] +[visit_id sx] not free [visit_id sx] no dims -[visit_id sx] +[scope_exit sx] --- 1 --- [check_dims] Inn --- 2 --- --- 3 --- --- 4 --- +[check_dims] Inn +[scope_enter sx] +[visit_id sx] not free [visit_id sx] no dims -[visit_id sx] +[scope_exit sx] --- 1 --- [check_dims] Inn --- 2 --- --- 3 --- --- 4 --- +[check_dims] Inn +[scope_enter sx] +[visit_id sx] not free [visit_id sx] no dims -[visit_id sx] +[scope_exit sx] --- 1 --- [check_dims] Inn --- 2 --- --- 3 --- --- 4 --- -[visit_id sx] no dims -[visit_id sx] [visit_exp (Inn : Inn <: numtype)] [visit_exp Inn] [visit_id Inn] [check_dims] Fnn +[check_dims] Fnn --- 1 --- [check_dims] Fnn --- 2 --- --- 3 --- --- 4 --- +[check_dims] Fnn --- 1 --- [check_dims] Fnn --- 2 --- --- 3 --- --- 4 --- +[check_dims] Fnn --- 1 --- [check_dims] Fnn --- 2 --- --- 3 --- --- 4 --- +[check_dims] Fnn --- 1 --- [check_dims] Fnn --- 2 --- --- 3 --- --- 4 --- +[check_dims] Fnn --- 1 --- [check_dims] Fnn --- 2 --- --- 3 --- --- 4 --- +[check_dims] Fnn --- 1 --- [check_dims] Fnn --- 2 --- @@ -12013,13 +11333,16 @@ DecD free_deftype(deftype : deftype) : free [visit_id numtype_1] not free [visit_id numtype_2] not free [check_dims] Inn_1 Inn_2 +[check_dims] Inn_1 Inn_2 +[scope_enter sx] +[visit_id sx] not free +[visit_id sx] no dims +[scope_exit sx] --- 1 --- [check_dims] Inn_1 Inn_2 --- 2 --- --- 3 --- --- 4 --- -[visit_id sx] no dims -[visit_id sx] [visit_exp ($sizenn1((Inn_1 : Inn <: numtype)) < $sizenn2((Inn_2 : Inn <: numtype)))] [visit_exp $sizenn1((Inn_1 : Inn <: numtype))] [visit_exp (Inn_1 : Inn <: numtype)] @@ -12031,6 +11354,7 @@ DecD free_deftype(deftype : deftype) : free [visit_exp Inn_2] [visit_id Inn_2] not free [visit_id Inn_2] no dims +[check_dims] Inn_1 Inn_2 --- 1 --- [check_dims] Inn_1 Inn_2 --- 2 --- @@ -12054,13 +11378,17 @@ DecD free_deftype(deftype : deftype) : free [visit_exp Inn_2] [visit_id Inn_2] [check_dims] Fnn_2 Inn_1 +[check_dims] Fnn_2 Inn_1 +[scope_enter sx] +[visit_id sx] not free +[visit_id sx] no dims +[scope_exit sx] --- 1 --- [check_dims] Fnn_2 Inn_1 --- 2 --- --- 3 --- --- 4 --- -[visit_id sx] no dims -[visit_id sx] +[check_dims] Fnn_2 Inn_1 --- 1 --- [check_dims] Fnn_2 Inn_1 --- 2 --- @@ -12084,20 +11412,27 @@ DecD free_deftype(deftype : deftype) : free [visit_exp Fnn_2] [visit_id Fnn_2] [check_dims] Fnn_1 Inn_2 +[check_dims] Fnn_1 Inn_2 +[scope_enter sx] +[visit_id sx] not free +[visit_id sx] no dims +[scope_exit sx] --- 1 --- [check_dims] Fnn_1 Inn_2 --- 2 --- --- 3 --- --- 4 --- +[check_dims] Fnn_1 Inn_2 +[scope_enter sx] +[visit_id sx] not free [visit_id sx] no dims -[visit_id sx] +[scope_exit sx] --- 1 --- [check_dims] Fnn_1 Inn_2 --- 2 --- --- 3 --- --- 4 --- -[visit_id sx] no dims -[visit_id sx] +[check_dims] Fnn_1 Inn_2 --- 1 --- [check_dims] Fnn_1 Inn_2 --- 2 --- @@ -12121,6 +11456,7 @@ DecD free_deftype(deftype : deftype) : free [visit_exp Inn_2] [visit_id Inn_2] [check_dims] Fnn_1 Fnn_2 +[check_dims] Fnn_1 Fnn_2 --- 1 --- [check_dims] Fnn_1 Fnn_2 --- 2 --- @@ -12137,6 +11473,7 @@ DecD free_deftype(deftype : deftype) : free [visit_exp Fnn_2] [visit_id Fnn_2] not free [visit_id Fnn_2] no dims +[check_dims] Fnn_1 Fnn_2 --- 1 --- [check_dims] Fnn_1 Fnn_2 --- 2 --- @@ -12171,71 +11508,58 @@ DecD free_deftype(deftype : deftype) : free [check_dims] [visit_exp 16] [check_dims] +[check_dims] +[scope_enter lanetype] +[visit_id lanetype] not free +[visit_id lanetype] no dims +[scope_enter dim] +[visit_id dim] not free +[visit_id dim] no dims +[scope_exit dim] +[scope_exit lanetype] --- 1 --- -[check_dims] dim i#1053 lanetype +[check_dims] dim lanetype --- 2 --- --- 3 --- --- 4 --- -[visit_id lanetype] -[visit_id dim] -[visit_exp (($lsize(lanetype) * dim!`%`_dim{i#1053}.0) = 128)] -[visit_exp ($lsize(lanetype) * dim!`%`_dim{i#1053}.0)] +[visit_exp (($lsize(lanetype) * dim!`%`_dim.0) = 128)] +[visit_exp ($lsize(lanetype) * dim!`%`_dim.0)] [visit_exp $lsize(lanetype)] [visit_exp lanetype] [visit_id lanetype] not free -[visit_exp dim!`%`_dim{i#1053}.0] -[visit_exp dim!`%`_dim{i#1053}] +[visit_exp dim!`%`_dim.0] +[visit_exp dim!`%`_dim] [visit_exp dim] [visit_id dim] not free -[visit_exp i#1053] -[visit_id i#1053] [visit_exp 128] [check_dims] shape DecD dim(shape : shape) : dim [visit_id shape] not free -[check_dims] Lnn N dim#11 i#1058 i#1065 i#1073 lanetype#11 -[visit_exp `%X%`_shape{lanetype#11, dim#11, i#1058}(Lnn, `%`_dim{i#1065}(N))] -[visit_exp lanetype#11] -[visit_id lanetype#11] -[visit_exp dim#11] -[visit_id dim#11] -[visit_exp i#1058] -[visit_id i#1058] -[visit_exp (Lnn, `%`_dim{i#1065}(N))] +[check_dims] Lnn N +[visit_exp `%X%`_shape(Lnn, `%`_dim(N))] +[visit_exp (Lnn, `%`_dim(N))] [visit_exp Lnn] [visit_id Lnn] -[visit_exp `%`_dim{i#1065}(N)] -[visit_exp i#1065] -[visit_id i#1065] +[visit_exp `%`_dim(N)] [visit_exp (N)] [visit_exp N] [visit_id N] -[visit_exp `%`_dim{i#1073}(N)] -[visit_exp i#1073] -[visit_id i#1073] +[visit_exp `%`_dim(N)] [visit_exp (N)] [visit_exp N] [visit_id N] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $dim{lanetype#11 : lanetype, dim#11 : dim, i#1058 : nat, Lnn : Lnn, i#1065 : nat, N : N, i#1073 : nat}(`%X%`_shape{lanetype#11, dim#11, i#1058}(Lnn, `%`_dim{i#1065}(N))) = `%`_dim{i#1073}(N) + def $dim{Lnn : Lnn, N : N}(`%X%`_shape(Lnn, `%`_dim(N))) = `%`_dim(N) [check_dims] shape DecD lanetype(shape : shape) : lanetype [visit_id shape] not free -[check_dims] Lnn N dim#23 i#1078 i#1085 lanetype#23 -[visit_exp `%X%`_shape{lanetype#23, dim#23, i#1078}(Lnn, `%`_dim{i#1085}(N))] -[visit_exp lanetype#23] -[visit_id lanetype#23] -[visit_exp dim#23] -[visit_id dim#23] -[visit_exp i#1078] -[visit_id i#1078] -[visit_exp (Lnn, `%`_dim{i#1085}(N))] +[check_dims] Lnn N +[visit_exp `%X%`_shape(Lnn, `%`_dim(N))] +[visit_exp (Lnn, `%`_dim(N))] [visit_exp Lnn] [visit_id Lnn] -[visit_exp `%`_dim{i#1085}(N)] -[visit_exp i#1085] -[visit_id i#1085] +[visit_exp `%`_dim(N)] [visit_exp (N)] [visit_exp N] [visit_id N] @@ -12243,24 +11567,16 @@ DecD lanetype(shape : shape) : lanetype [visit_id Lnn] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $lanetype{lanetype#23 : lanetype, dim#23 : dim, i#1078 : nat, Lnn : Lnn, i#1085 : nat, N : N}(`%X%`_shape{lanetype#23, dim#23, i#1078}(Lnn, `%`_dim{i#1085}(N))) = Lnn + def $lanetype{Lnn : Lnn, N : N}(`%X%`_shape(Lnn, `%`_dim(N))) = Lnn [check_dims] shape DecD unpackshape(shape : shape) : numtype [visit_id shape] not free -[check_dims] Lnn N dim#35 i#1090 i#1097 lanetype#35 -[visit_exp `%X%`_shape{lanetype#35, dim#35, i#1090}(Lnn, `%`_dim{i#1097}(N))] -[visit_exp lanetype#35] -[visit_id lanetype#35] -[visit_exp dim#35] -[visit_id dim#35] -[visit_exp i#1090] -[visit_id i#1090] -[visit_exp (Lnn, `%`_dim{i#1097}(N))] +[check_dims] Lnn N +[visit_exp `%X%`_shape(Lnn, `%`_dim(N))] +[visit_exp (Lnn, `%`_dim(N))] [visit_exp Lnn] [visit_id Lnn] -[visit_exp `%`_dim{i#1097}(N)] -[visit_exp i#1097] -[visit_id i#1097] +[visit_exp `%`_dim(N)] [visit_exp (N)] [visit_exp N] [visit_id N] @@ -12269,14 +11585,18 @@ DecD unpackshape(shape : shape) : numtype [visit_id Lnn] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $unpackshape{lanetype#35 : lanetype, dim#35 : dim, i#1090 : nat, Lnn : Lnn, i#1097 : nat, N : N}(`%X%`_shape{lanetype#35, dim#35, i#1090}(Lnn, `%`_dim{i#1097}(N))) = $lunpack(Lnn) + def $unpackshape{Lnn : Lnn, N : N}(`%X%`_shape(Lnn, `%`_dim(N))) = $lunpack(Lnn) [check_dims] +[check_dims] +[scope_enter shape] +[visit_id shape] not free +[visit_id shape] no dims +[scope_exit shape] --- 1 --- [check_dims] Jnn shape --- 2 --- --- 3 --- --- 4 --- -[visit_id shape] [visit_exp ($lanetype(shape) = (Jnn : Jnn <: lanetype))] [visit_exp $lanetype(shape)] [visit_exp shape] @@ -12285,12 +11605,16 @@ DecD unpackshape(shape : shape) : numtype [visit_exp Jnn] [visit_id Jnn] [check_dims] +[check_dims] +[scope_enter shape] +[visit_id shape] not free +[visit_id shape] no dims +[scope_exit shape] --- 1 --- [check_dims] shape --- 2 --- --- 3 --- --- 4 --- -[visit_id shape] [visit_exp ($lanetype(shape) = `I8`_lanetype)] [visit_exp $lanetype(shape)] [visit_exp shape] @@ -12298,56 +11622,66 @@ DecD unpackshape(shape : shape) : numtype [visit_exp `I8`_lanetype] [visit_exp ()] [check_dims] +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- [check_dims] +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- [check_dims] +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- [check_dims] +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- [check_dims] +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- [check_dims] +[check_dims] --- 1 --- [check_dims] --- 2 --- @@ -12355,19 +11689,22 @@ DecD unpackshape(shape : shape) : numtype --- 4 --- [check_dims] shape [visit_id shape] not free -[check_dims] Jnn M dim#65 i#1108 i#1115 lanetype#65 +[check_dims] Jnn M +[check_dims] Jnn M --- 1 --- -[check_dims] Jnn M dim#65 i#1108 i#1115 lanetype#65 +[check_dims] Jnn M --- 2 --- --- 3 --- --- 4 --- +[check_dims] Jnn M --- 1 --- -[check_dims] Jnn M dim#65 i#1108 i#1115 lanetype#65 +[check_dims] Jnn M --- 2 --- --- 3 --- --- 4 --- +[check_dims] Jnn M --- 1 --- -[check_dims] Jnn M dim#65 i#1108 i#1115 lanetype#65 +[check_dims] Jnn M --- 2 --- --- 3 --- --- 4 --- @@ -12378,96 +11715,92 @@ DecD unpackshape(shape : shape) : numtype [visit_id Jnn] not free [visit_id Jnn] no dims [visit_exp 8] -[visit_exp `%X%`_shape{lanetype#65, dim#65, i#1108}((Jnn : Jnn <: lanetype), `%`_dim{i#1115}(M))] -[visit_exp lanetype#65] -[visit_id lanetype#65] -[visit_exp dim#65] -[visit_id dim#65] -[visit_exp i#1108] -[visit_id i#1108] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#1115}(M))] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] -[visit_exp `%`_dim{i#1115}(M)] -[visit_exp i#1115] -[visit_id i#1115] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] -[check_dims] Fnn M dim#77 i#1120 i#1127 lanetype#77 +[check_dims] Fnn M +[check_dims] Fnn M --- 1 --- -[check_dims] Fnn M dim#77 i#1120 i#1127 lanetype#77 +[check_dims] Fnn M --- 2 --- --- 3 --- --- 4 --- +[check_dims] Fnn M --- 1 --- -[check_dims] Fnn M dim#77 i#1120 i#1127 lanetype#77 +[check_dims] Fnn M --- 2 --- --- 3 --- --- 4 --- +[check_dims] Fnn M --- 1 --- -[check_dims] Fnn M dim#77 i#1120 i#1127 lanetype#77 +[check_dims] Fnn M --- 2 --- --- 3 --- --- 4 --- +[check_dims] Fnn M --- 1 --- -[check_dims] Fnn M dim#77 i#1120 i#1127 lanetype#77 +[check_dims] Fnn M --- 2 --- --- 3 --- --- 4 --- +[check_dims] Fnn M --- 1 --- -[check_dims] Fnn M dim#77 i#1120 i#1127 lanetype#77 +[check_dims] Fnn M --- 2 --- --- 3 --- --- 4 --- +[check_dims] Fnn M --- 1 --- -[check_dims] Fnn M dim#77 i#1120 i#1127 lanetype#77 +[check_dims] Fnn M --- 2 --- --- 3 --- --- 4 --- +[check_dims] Fnn M --- 1 --- -[check_dims] Fnn M dim#77 i#1120 i#1127 lanetype#77 +[check_dims] Fnn M --- 2 --- --- 3 --- --- 4 --- -[visit_exp `%X%`_shape{lanetype#77, dim#77, i#1120}((Fnn : Fnn <: lanetype), `%`_dim{i#1127}(M))] -[visit_exp lanetype#77] -[visit_id lanetype#77] -[visit_exp dim#77] -[visit_id dim#77] -[visit_exp i#1120] -[visit_id i#1120] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#1127}(M))] +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] -[visit_exp `%`_dim{i#1127}(M)] -[visit_exp i#1127] -[visit_id i#1127] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] [check_dims] shape [visit_id shape] not free -[check_dims] Jnn M dim#89 i#1132 i#1139 lanetype#89 +[check_dims] Jnn M +[check_dims] Jnn M --- 1 --- -[check_dims] Jnn M dim#89 i#1132 i#1139 lanetype#89 +[check_dims] Jnn M --- 2 --- --- 3 --- --- 4 --- +[check_dims] Jnn M --- 1 --- -[check_dims] Jnn M dim#89 i#1132 i#1139 lanetype#89 +[check_dims] Jnn M --- 2 --- --- 3 --- --- 4 --- +[check_dims] Jnn M +[scope_enter sx] +[visit_id sx] not free +[visit_id sx] no dims +[scope_exit sx] --- 1 --- -[check_dims] Jnn M dim#89 i#1132 i#1139 lanetype#89 +[check_dims] Jnn M --- 2 --- --- 3 --- --- 4 --- -[visit_id sx] no dims -[visit_id sx] [visit_exp ($lsizenn((Jnn : Jnn <: lanetype)) <= 16)] [visit_exp $lsizenn((Jnn : Jnn <: lanetype))] [visit_exp (Jnn : Jnn <: lanetype)] @@ -12475,13 +11808,16 @@ DecD unpackshape(shape : shape) : numtype [visit_id Jnn] not free [visit_id Jnn] no dims [visit_exp 16] +[check_dims] Jnn M +[scope_enter sx] +[visit_id sx] not free +[visit_id sx] no dims +[scope_exit sx] --- 1 --- -[check_dims] Jnn M dim#89 i#1132 i#1139 lanetype#89 +[check_dims] Jnn M --- 2 --- --- 3 --- --- 4 --- -[visit_id sx] no dims -[visit_id sx] [visit_exp ($lsizenn((Jnn : Jnn <: lanetype)) <= 16)] [visit_exp $lsizenn((Jnn : Jnn <: lanetype))] [visit_exp (Jnn : Jnn <: lanetype)] @@ -12489,8 +11825,9 @@ DecD unpackshape(shape : shape) : numtype [visit_id Jnn] not free [visit_id Jnn] no dims [visit_exp 16] +[check_dims] Jnn M --- 1 --- -[check_dims] Jnn M dim#89 i#1132 i#1139 lanetype#89 +[check_dims] Jnn M --- 2 --- --- 3 --- --- 4 --- @@ -12501,8 +11838,9 @@ DecD unpackshape(shape : shape) : numtype [visit_id Jnn] not free [visit_id Jnn] no dims [visit_exp 16] +[check_dims] Jnn M --- 1 --- -[check_dims] Jnn M dim#89 i#1132 i#1139 lanetype#89 +[check_dims] Jnn M --- 2 --- --- 3 --- --- 4 --- @@ -12513,8 +11851,9 @@ DecD unpackshape(shape : shape) : numtype [visit_id Jnn] not free [visit_id Jnn] no dims [visit_exp 16] +[check_dims] Jnn M --- 1 --- -[check_dims] Jnn M dim#89 i#1132 i#1139 lanetype#89 +[check_dims] Jnn M --- 2 --- --- 3 --- --- 4 --- @@ -12525,8 +11864,9 @@ DecD unpackshape(shape : shape) : numtype [visit_id Jnn] not free [visit_id Jnn] no dims [visit_exp 16] +[check_dims] Jnn M --- 1 --- -[check_dims] Jnn M dim#89 i#1132 i#1139 lanetype#89 +[check_dims] Jnn M --- 2 --- --- 3 --- --- 4 --- @@ -12537,13 +11877,16 @@ DecD unpackshape(shape : shape) : numtype [visit_id Jnn] not free [visit_id Jnn] no dims [visit_exp 16] +[check_dims] Jnn M +[scope_enter sx] +[visit_id sx] not free +[visit_id sx] no dims +[scope_exit sx] --- 1 --- -[check_dims] Jnn M dim#89 i#1132 i#1139 lanetype#89 +[check_dims] Jnn M --- 2 --- --- 3 --- --- 4 --- -[visit_id sx] no dims -[visit_id sx] [visit_exp ($lsizenn((Jnn : Jnn <: lanetype)) <= 32)] [visit_exp $lsizenn((Jnn : Jnn <: lanetype))] [visit_exp (Jnn : Jnn <: lanetype)] @@ -12551,13 +11894,16 @@ DecD unpackshape(shape : shape) : numtype [visit_id Jnn] not free [visit_id Jnn] no dims [visit_exp 32] +[check_dims] Jnn M +[scope_enter sx] +[visit_id sx] not free +[visit_id sx] no dims +[scope_exit sx] --- 1 --- -[check_dims] Jnn M dim#89 i#1132 i#1139 lanetype#89 +[check_dims] Jnn M --- 2 --- --- 3 --- --- 4 --- -[visit_id sx] no dims -[visit_id sx] [visit_exp ($lsizenn((Jnn : Jnn <: lanetype)) <= 32)] [visit_exp $lsizenn((Jnn : Jnn <: lanetype))] [visit_exp (Jnn : Jnn <: lanetype)] @@ -12565,188 +11911,168 @@ DecD unpackshape(shape : shape) : numtype [visit_id Jnn] not free [visit_id Jnn] no dims [visit_exp 32] -[visit_exp `%X%`_shape{lanetype#89, dim#89, i#1132}((Jnn : Jnn <: lanetype), `%`_dim{i#1139}(M))] -[visit_exp lanetype#89] -[visit_id lanetype#89] -[visit_exp dim#89] -[visit_id dim#89] -[visit_exp i#1132] -[visit_id i#1132] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#1139}(M))] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] -[visit_exp `%`_dim{i#1139}(M)] -[visit_exp i#1139] -[visit_id i#1139] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] -[check_dims] Fnn M dim#101 i#1144 i#1151 lanetype#101 +[check_dims] Fnn M +[check_dims] Fnn M --- 1 --- -[check_dims] Fnn M dim#101 i#1144 i#1151 lanetype#101 +[check_dims] Fnn M --- 2 --- --- 3 --- --- 4 --- +[check_dims] Fnn M --- 1 --- -[check_dims] Fnn M dim#101 i#1144 i#1151 lanetype#101 +[check_dims] Fnn M --- 2 --- --- 3 --- --- 4 --- +[check_dims] Fnn M --- 1 --- -[check_dims] Fnn M dim#101 i#1144 i#1151 lanetype#101 +[check_dims] Fnn M --- 2 --- --- 3 --- --- 4 --- +[check_dims] Fnn M --- 1 --- -[check_dims] Fnn M dim#101 i#1144 i#1151 lanetype#101 +[check_dims] Fnn M --- 2 --- --- 3 --- --- 4 --- +[check_dims] Fnn M --- 1 --- -[check_dims] Fnn M dim#101 i#1144 i#1151 lanetype#101 +[check_dims] Fnn M --- 2 --- --- 3 --- --- 4 --- +[check_dims] Fnn M --- 1 --- -[check_dims] Fnn M dim#101 i#1144 i#1151 lanetype#101 +[check_dims] Fnn M --- 2 --- --- 3 --- --- 4 --- +[check_dims] Fnn M --- 1 --- -[check_dims] Fnn M dim#101 i#1144 i#1151 lanetype#101 +[check_dims] Fnn M --- 2 --- --- 3 --- --- 4 --- +[check_dims] Fnn M --- 1 --- -[check_dims] Fnn M dim#101 i#1144 i#1151 lanetype#101 +[check_dims] Fnn M --- 2 --- --- 3 --- --- 4 --- +[check_dims] Fnn M --- 1 --- -[check_dims] Fnn M dim#101 i#1144 i#1151 lanetype#101 +[check_dims] Fnn M --- 2 --- --- 3 --- --- 4 --- +[check_dims] Fnn M --- 1 --- -[check_dims] Fnn M dim#101 i#1144 i#1151 lanetype#101 +[check_dims] Fnn M --- 2 --- --- 3 --- --- 4 --- -[visit_exp `%X%`_shape{lanetype#101, dim#101, i#1144}((Fnn : Fnn <: lanetype), `%`_dim{i#1151}(M))] -[visit_exp lanetype#101] -[visit_id lanetype#101] -[visit_exp dim#101] -[visit_id dim#101] -[visit_exp i#1144] -[visit_id i#1144] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#1151}(M))] +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] -[visit_exp `%`_dim{i#1151}(M)] -[visit_exp i#1151] -[visit_id i#1151] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] [check_dims] shape [visit_id shape] not free -[check_dims] Jnn M dim#113 i#1156 i#1163 lanetype#113 +[check_dims] Jnn M +[check_dims] Jnn M --- 1 --- -[check_dims] Jnn M dim#113 i#1156 i#1163 lanetype#113 +[check_dims] Jnn M --- 2 --- --- 3 --- --- 4 --- -[visit_exp `%X%`_shape{lanetype#113, dim#113, i#1156}((Jnn : Jnn <: lanetype), `%`_dim{i#1163}(M))] -[visit_exp lanetype#113] -[visit_id lanetype#113] -[visit_exp dim#113] -[visit_id dim#113] -[visit_exp i#1156] -[visit_id i#1156] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#1163}(M))] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] -[visit_exp `%`_dim{i#1163}(M)] -[visit_exp i#1163] -[visit_id i#1163] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] -[check_dims] Fnn M dim#125 i#1168 i#1175 lanetype#125 +[check_dims] Fnn M +[check_dims] Fnn M --- 1 --- -[check_dims] Fnn M dim#125 i#1168 i#1175 lanetype#125 +[check_dims] Fnn M --- 2 --- --- 3 --- --- 4 --- +[check_dims] Fnn M --- 1 --- -[check_dims] Fnn M dim#125 i#1168 i#1175 lanetype#125 +[check_dims] Fnn M --- 2 --- --- 3 --- --- 4 --- -[visit_exp `%X%`_shape{lanetype#125, dim#125, i#1168}((Fnn : Fnn <: lanetype), `%`_dim{i#1175}(M))] -[visit_exp lanetype#125] -[visit_id lanetype#125] -[visit_exp dim#125] -[visit_id dim#125] -[visit_exp i#1168] -[visit_id i#1168] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#1175}(M))] +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] -[visit_exp `%`_dim{i#1175}(M)] -[visit_exp i#1175] -[visit_id i#1175] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] [check_dims] shape [visit_id shape] not free -[check_dims] Jnn M dim#137 i#1180 i#1187 lanetype#137 +[check_dims] Jnn M +[check_dims] Jnn M --- 1 --- -[check_dims] Jnn M dim#137 i#1180 i#1187 lanetype#137 +[check_dims] Jnn M --- 2 --- --- 3 --- --- 4 --- -[visit_exp `%X%`_shape{lanetype#137, dim#137, i#1180}((Jnn : Jnn <: lanetype), `%`_dim{i#1187}(M))] -[visit_exp lanetype#137] -[visit_id lanetype#137] -[visit_exp dim#137] -[visit_id dim#137] -[visit_exp i#1180] -[visit_id i#1180] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#1187}(M))] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] -[visit_exp `%`_dim{i#1187}(M)] -[visit_exp i#1187] -[visit_id i#1187] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] [check_dims] shape [visit_id shape] not free -[check_dims] Jnn M dim#149 i#1192 i#1199 lanetype#149 +[check_dims] Jnn M +[check_dims] Jnn M --- 1 --- -[check_dims] Jnn M dim#149 i#1192 i#1199 lanetype#149 +[check_dims] Jnn M --- 2 --- --- 3 --- --- 4 --- +[check_dims] Jnn M --- 1 --- -[check_dims] Jnn M dim#149 i#1192 i#1199 lanetype#149 +[check_dims] Jnn M --- 2 --- --- 3 --- --- 4 --- +[check_dims] Jnn M +[scope_enter sx] +[visit_id sx] not free +[visit_id sx] no dims +[scope_exit sx] --- 1 --- -[check_dims] Jnn M dim#149 i#1192 i#1199 lanetype#149 sx +[check_dims] Jnn M sx --- 2 --- --- 3 --- --- 4 --- -[visit_id sx] [visit_exp (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = `S`_sx))] [visit_exp ($lsizenn((Jnn : Jnn <: lanetype)) =/= 64)] [visit_exp $lsizenn((Jnn : Jnn <: lanetype))] @@ -12760,12 +12086,16 @@ DecD unpackshape(shape : shape) : numtype [visit_id sx] not free [visit_exp `S`_sx] [visit_exp ()] +[check_dims] Jnn M +[scope_enter sx] +[visit_id sx] not free +[visit_id sx] no dims +[scope_exit sx] --- 1 --- -[check_dims] Jnn M dim#149 i#1192 i#1199 lanetype#149 sx +[check_dims] Jnn M sx --- 2 --- --- 3 --- --- 4 --- -[visit_id sx] [visit_exp (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = `S`_sx))] [visit_exp ($lsizenn((Jnn : Jnn <: lanetype)) =/= 64)] [visit_exp $lsizenn((Jnn : Jnn <: lanetype))] @@ -12779,12 +12109,16 @@ DecD unpackshape(shape : shape) : numtype [visit_id sx] not free [visit_exp `S`_sx] [visit_exp ()] +[check_dims] Jnn M +[scope_enter sx] +[visit_id sx] not free +[visit_id sx] no dims +[scope_exit sx] --- 1 --- -[check_dims] Jnn M dim#149 i#1192 i#1199 lanetype#149 sx +[check_dims] Jnn M sx --- 2 --- --- 3 --- --- 4 --- -[visit_id sx] [visit_exp (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = `S`_sx))] [visit_exp ($lsizenn((Jnn : Jnn <: lanetype)) =/= 64)] [visit_exp $lsizenn((Jnn : Jnn <: lanetype))] @@ -12798,12 +12132,16 @@ DecD unpackshape(shape : shape) : numtype [visit_id sx] not free [visit_exp `S`_sx] [visit_exp ()] +[check_dims] Jnn M +[scope_enter sx] +[visit_id sx] not free +[visit_id sx] no dims +[scope_exit sx] --- 1 --- -[check_dims] Jnn M dim#149 i#1192 i#1199 lanetype#149 sx +[check_dims] Jnn M sx --- 2 --- --- 3 --- --- 4 --- -[visit_id sx] [visit_exp (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = `S`_sx))] [visit_exp ($lsizenn((Jnn : Jnn <: lanetype)) =/= 64)] [visit_exp $lsizenn((Jnn : Jnn <: lanetype))] @@ -12817,153 +12155,130 @@ DecD unpackshape(shape : shape) : numtype [visit_id sx] not free [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%X%`_shape{lanetype#149, dim#149, i#1192}((Jnn : Jnn <: lanetype), `%`_dim{i#1199}(M))] -[visit_exp lanetype#149] -[visit_id lanetype#149] -[visit_exp dim#149] -[visit_id dim#149] -[visit_exp i#1192] -[visit_id i#1192] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#1199}(M))] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] -[visit_exp `%`_dim{i#1199}(M)] -[visit_exp i#1199] -[visit_id i#1199] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] -[check_dims] Fnn M dim#161 i#1204 i#1211 lanetype#161 +[check_dims] Fnn M +[check_dims] Fnn M --- 1 --- -[check_dims] Fnn M dim#161 i#1204 i#1211 lanetype#161 +[check_dims] Fnn M --- 2 --- --- 3 --- --- 4 --- +[check_dims] Fnn M --- 1 --- -[check_dims] Fnn M dim#161 i#1204 i#1211 lanetype#161 +[check_dims] Fnn M --- 2 --- --- 3 --- --- 4 --- +[check_dims] Fnn M --- 1 --- -[check_dims] Fnn M dim#161 i#1204 i#1211 lanetype#161 +[check_dims] Fnn M --- 2 --- --- 3 --- --- 4 --- +[check_dims] Fnn M --- 1 --- -[check_dims] Fnn M dim#161 i#1204 i#1211 lanetype#161 +[check_dims] Fnn M --- 2 --- --- 3 --- --- 4 --- +[check_dims] Fnn M --- 1 --- -[check_dims] Fnn M dim#161 i#1204 i#1211 lanetype#161 +[check_dims] Fnn M --- 2 --- --- 3 --- --- 4 --- +[check_dims] Fnn M --- 1 --- -[check_dims] Fnn M dim#161 i#1204 i#1211 lanetype#161 +[check_dims] Fnn M --- 2 --- --- 3 --- --- 4 --- -[visit_exp `%X%`_shape{lanetype#161, dim#161, i#1204}((Fnn : Fnn <: lanetype), `%`_dim{i#1211}(M))] -[visit_exp lanetype#161] -[visit_id lanetype#161] -[visit_exp dim#161] -[visit_id dim#161] -[visit_exp i#1204] -[visit_id i#1204] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#1211}(M))] +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] -[visit_exp `%`_dim{i#1211}(M)] -[visit_exp i#1211] -[visit_id i#1211] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] [check_dims] ishape [visit_id ishape] not free -[check_dims] Jnn Jnn#4 M dim#173 i#1216 i#1223 lanetype#173 shape#11 +[check_dims] Jnn M +[check_dims] Jnn M --- 1 --- -[check_dims] Jnn Jnn#4 M dim#173 i#1216 i#1223 lanetype#173 shape#11 +[check_dims] Jnn M --- 2 --- --- 3 --- --- 4 --- +[check_dims] Jnn M +[scope_enter sx] +[visit_id sx] not free +[visit_id sx] no dims +[scope_exit sx] --- 1 --- -[check_dims] Jnn Jnn#4 M dim#173 i#1216 i#1223 lanetype#173 shape#11 +[check_dims] Jnn M --- 2 --- --- 3 --- --- 4 --- -[visit_id sx] no dims -[visit_id sx] -[visit_exp `%`_ishape{shape#11, Jnn#4}(`%X%`_shape{lanetype#173, dim#173, i#1216}((Jnn : Jnn <: lanetype), `%`_dim{i#1223}(M)))] -[visit_exp shape#11] -[visit_id shape#11] -[visit_exp Jnn#4] -[visit_id Jnn#4] -[visit_exp (`%X%`_shape{lanetype#173, dim#173, i#1216}((Jnn : Jnn <: lanetype), `%`_dim{i#1223}(M)))] -[visit_exp `%X%`_shape{lanetype#173, dim#173, i#1216}((Jnn : Jnn <: lanetype), `%`_dim{i#1223}(M))] -[visit_exp lanetype#173] -[visit_id lanetype#173] -[visit_exp dim#173] -[visit_id dim#173] -[visit_exp i#1216] -[visit_id i#1216] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#1223}(M))] +[visit_exp `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))] +[visit_exp (`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] -[visit_exp `%`_dim{i#1223}(M)] -[visit_exp i#1223] -[visit_id i#1223] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] [check_dims] bshape [visit_id bshape] not free -[check_dims] M dim#185 i#1228 i#1235 lanetype#185 shape#23 +[check_dims] M +[check_dims] M --- 1 --- -[check_dims] M dim#185 i#1228 i#1235 lanetype#185 shape#23 +[check_dims] M --- 2 --- --- 3 --- --- 4 --- +[check_dims] M --- 1 --- -[check_dims] M dim#185 i#1228 i#1235 lanetype#185 shape#23 +[check_dims] M --- 2 --- --- 3 --- --- 4 --- -[visit_exp `%`_bshape{shape#23}(`%X%`_shape{lanetype#185, dim#185, i#1228}(`I8`_lanetype, `%`_dim{i#1235}(M)))] -[visit_exp shape#23] -[visit_id shape#23] -[visit_exp (`%X%`_shape{lanetype#185, dim#185, i#1228}(`I8`_lanetype, `%`_dim{i#1235}(M)))] -[visit_exp `%X%`_shape{lanetype#185, dim#185, i#1228}(`I8`_lanetype, `%`_dim{i#1235}(M))] -[visit_exp lanetype#185] -[visit_id lanetype#185] -[visit_exp dim#185] -[visit_id dim#185] -[visit_exp i#1228] -[visit_id i#1228] -[visit_exp (`I8`_lanetype, `%`_dim{i#1235}(M))] +[visit_exp `%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(M)))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(M)))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(M))] +[visit_exp (`I8`_lanetype, `%`_dim(M))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#1235}(M)] -[visit_exp i#1235] -[visit_id i#1235] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] [check_dims] ishape_1 ishape_2 [visit_id ishape_1] not free [visit_id ishape_2] not free -[check_dims] Jnn#12 Jnn#8 Jnn_1 Jnn_2 M_1 M_2 dim#197 dim#209 i#1240 i#1247 i#1252 i#1259 lanetype#197 lanetype#209 shape#35 shape#47 +[check_dims] Jnn_1 Jnn_2 M_1 M_2 +[check_dims] Jnn_1 Jnn_2 M_1 M_2 +[scope_enter sx] +[visit_id sx] not free +[visit_id sx] no dims +[scope_exit sx] --- 1 --- -[check_dims] Jnn#12 Jnn#8 Jnn_1 Jnn_2 M_1 M_2 dim#197 dim#209 i#1240 i#1247 i#1252 i#1259 lanetype#197 lanetype#209 shape#35 shape#47 +[check_dims] Jnn_1 Jnn_2 M_1 M_2 --- 2 --- --- 3 --- --- 4 --- -[visit_id sx] no dims -[visit_id sx] [visit_exp ((16 <= (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) /\ (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) <= 32)))] [visit_exp (16 <= (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))))] [visit_exp 16] @@ -12995,65 +12310,46 @@ DecD unpackshape(shape : shape) : numtype [visit_id Jnn_2] not free [visit_id Jnn_2] no dims [visit_exp 32] -[visit_exp `%`_ishape{shape#35, Jnn#8}(`%X%`_shape{lanetype#197, dim#197, i#1240}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#1247}(M_1)))] -[visit_exp shape#35] -[visit_id shape#35] -[visit_exp Jnn#8] -[visit_id Jnn#8] -[visit_exp (`%X%`_shape{lanetype#197, dim#197, i#1240}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#1247}(M_1)))] -[visit_exp `%X%`_shape{lanetype#197, dim#197, i#1240}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#1247}(M_1))] -[visit_exp lanetype#197] -[visit_id lanetype#197] -[visit_exp dim#197] -[visit_id dim#197] -[visit_exp i#1240] -[visit_id i#1240] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#1247}(M_1))] +[visit_exp `%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))] +[visit_exp (`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))] +[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] [visit_exp (Jnn_1 : Jnn <: lanetype)] [visit_exp Jnn_1] [visit_id Jnn_1] -[visit_exp `%`_dim{i#1247}(M_1)] -[visit_exp i#1247] -[visit_id i#1247] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] -[visit_exp `%`_ishape{shape#47, Jnn#12}(`%X%`_shape{lanetype#209, dim#209, i#1252}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#1259}(M_2)))] -[visit_exp shape#47] -[visit_id shape#47] -[visit_exp Jnn#12] -[visit_id Jnn#12] -[visit_exp (`%X%`_shape{lanetype#209, dim#209, i#1252}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#1259}(M_2)))] -[visit_exp `%X%`_shape{lanetype#209, dim#209, i#1252}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#1259}(M_2))] -[visit_exp lanetype#209] -[visit_id lanetype#209] -[visit_exp dim#209] -[visit_id dim#209] -[visit_exp i#1252] -[visit_id i#1252] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#1259}(M_2))] +[visit_exp `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))] +[visit_exp (`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))] +[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] [visit_exp (Jnn_2 : Jnn <: lanetype)] [visit_exp Jnn_2] [visit_id Jnn_2] -[visit_exp `%`_dim{i#1259}(M_2)] -[visit_exp i#1259] -[visit_id i#1259] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] [check_dims] ishape_1 ishape_2 [visit_id ishape_1] not free [visit_id ishape_2] not free -[check_dims] Jnn#16 Jnn#20 Jnn_1 Jnn_2 M_1 M_2 dim#221 dim#233 i#1264 i#1271 i#1276 i#1283 lanetype#221 lanetype#233 shape#59 shape#71 +[check_dims] Jnn_1 Jnn_2 M_1 M_2 +[check_dims] Jnn_1 Jnn_2 M_1 M_2 +[scope_enter half] +[visit_id half] not free +[visit_id half] no dims +[scope_enter sx] +[visit_id sx] not free +[visit_id sx] no dims +[scope_exit sx] +[scope_exit half] --- 1 --- -[check_dims] Jnn#16 Jnn#20 Jnn_1 Jnn_2 M_1 M_2 dim#221 dim#233 i#1264 i#1271 i#1276 i#1283 lanetype#221 lanetype#233 shape#59 shape#71 +[check_dims] Jnn_1 Jnn_2 M_1 M_2 --- 2 --- --- 3 --- --- 4 --- -[visit_id half] no dims -[visit_id half] -[visit_id sx] no dims -[visit_id sx] [visit_exp (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) >= 16))] [visit_exp ((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype)))] [visit_exp (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))] @@ -13075,8 +12371,9 @@ DecD unpackshape(shape : shape) : numtype [visit_id Jnn_2] not free [visit_id Jnn_2] no dims [visit_exp 16] +[check_dims] Jnn_1 Jnn_2 M_1 M_2 --- 1 --- -[check_dims] Jnn#16 Jnn#20 Jnn_1 Jnn_2 M_1 M_2 dim#221 dim#233 i#1264 i#1271 i#1276 i#1283 lanetype#221 lanetype#233 shape#59 shape#71 +[check_dims] Jnn_1 Jnn_2 M_1 M_2 --- 2 --- --- 3 --- --- 4 --- @@ -13101,8 +12398,9 @@ DecD unpackshape(shape : shape) : numtype [visit_id Jnn_2] not free [visit_id Jnn_2] no dims [visit_exp 32] +[check_dims] Jnn_1 Jnn_2 M_1 M_2 --- 1 --- -[check_dims] Jnn#16 Jnn#20 Jnn_1 Jnn_2 M_1 M_2 dim#221 dim#233 i#1264 i#1271 i#1276 i#1283 lanetype#221 lanetype#233 shape#59 shape#71 +[check_dims] Jnn_1 Jnn_2 M_1 M_2 --- 2 --- --- 3 --- --- 4 --- @@ -13127,58 +12425,35 @@ DecD unpackshape(shape : shape) : numtype [visit_id Jnn_2] not free [visit_id Jnn_2] no dims [visit_exp 16] -[visit_exp `%`_ishape{shape#59, Jnn#16}(`%X%`_shape{lanetype#221, dim#221, i#1264}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#1271}(M_1)))] -[visit_exp shape#59] -[visit_id shape#59] -[visit_exp Jnn#16] -[visit_id Jnn#16] -[visit_exp (`%X%`_shape{lanetype#221, dim#221, i#1264}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#1271}(M_1)))] -[visit_exp `%X%`_shape{lanetype#221, dim#221, i#1264}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#1271}(M_1))] -[visit_exp lanetype#221] -[visit_id lanetype#221] -[visit_exp dim#221] -[visit_id dim#221] -[visit_exp i#1264] -[visit_id i#1264] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#1271}(M_1))] +[visit_exp `%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))] +[visit_exp (`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))] +[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] [visit_exp (Jnn_1 : Jnn <: lanetype)] [visit_exp Jnn_1] [visit_id Jnn_1] -[visit_exp `%`_dim{i#1271}(M_1)] -[visit_exp i#1271] -[visit_id i#1271] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] -[visit_exp `%`_ishape{shape#71, Jnn#20}(`%X%`_shape{lanetype#233, dim#233, i#1276}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#1283}(M_2)))] -[visit_exp shape#71] -[visit_id shape#71] -[visit_exp Jnn#20] -[visit_id Jnn#20] -[visit_exp (`%X%`_shape{lanetype#233, dim#233, i#1276}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#1283}(M_2)))] -[visit_exp `%X%`_shape{lanetype#233, dim#233, i#1276}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#1283}(M_2))] -[visit_exp lanetype#233] -[visit_id lanetype#233] -[visit_exp dim#233] -[visit_id dim#233] -[visit_exp i#1276] -[visit_id i#1276] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#1283}(M_2))] +[visit_exp `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))] +[visit_exp (`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))] +[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] [visit_exp (Jnn_2 : Jnn <: lanetype)] [visit_exp Jnn_2] [visit_id Jnn_2] -[visit_exp `%`_dim{i#1283}(M_2)] -[visit_exp i#1283] -[visit_id i#1283] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] [check_dims] ishape_1 ishape_2 [visit_id ishape_1] not free [visit_id ishape_2] not free -[check_dims] Jnn#24 Jnn#28 Jnn_1 Jnn_2 M_1 M_2 dim#245 dim#257 i#1288 i#1295 i#1300 i#1307 lanetype#245 lanetype#257 shape#83 shape#95 +[check_dims] Jnn_1 Jnn_2 M_1 M_2 +[check_dims] Jnn_1 Jnn_2 M_1 M_2 --- 1 --- -[check_dims] Jnn#24 Jnn#28 Jnn_1 Jnn_2 M_1 M_2 dim#245 dim#257 i#1288 i#1295 i#1300 i#1307 lanetype#245 lanetype#257 shape#83 shape#95 +[check_dims] Jnn_1 Jnn_2 M_1 M_2 --- 2 --- --- 3 --- --- 4 --- @@ -13203,65 +12478,46 @@ DecD unpackshape(shape : shape) : numtype [visit_id Jnn_2] not free [visit_id Jnn_2] no dims [visit_exp 32] -[visit_exp `%`_ishape{shape#83, Jnn#24}(`%X%`_shape{lanetype#245, dim#245, i#1288}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#1295}(M_1)))] -[visit_exp shape#83] -[visit_id shape#83] -[visit_exp Jnn#24] -[visit_id Jnn#24] -[visit_exp (`%X%`_shape{lanetype#245, dim#245, i#1288}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#1295}(M_1)))] -[visit_exp `%X%`_shape{lanetype#245, dim#245, i#1288}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#1295}(M_1))] -[visit_exp lanetype#245] -[visit_id lanetype#245] -[visit_exp dim#245] -[visit_id dim#245] -[visit_exp i#1288] -[visit_id i#1288] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#1295}(M_1))] +[visit_exp `%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))] +[visit_exp (`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))] +[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] [visit_exp (Jnn_1 : Jnn <: lanetype)] [visit_exp Jnn_1] [visit_id Jnn_1] -[visit_exp `%`_dim{i#1295}(M_1)] -[visit_exp i#1295] -[visit_id i#1295] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] -[visit_exp `%`_ishape{shape#95, Jnn#28}(`%X%`_shape{lanetype#257, dim#257, i#1300}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#1307}(M_2)))] -[visit_exp shape#95] -[visit_id shape#95] -[visit_exp Jnn#28] -[visit_id Jnn#28] -[visit_exp (`%X%`_shape{lanetype#257, dim#257, i#1300}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#1307}(M_2)))] -[visit_exp `%X%`_shape{lanetype#257, dim#257, i#1300}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#1307}(M_2))] -[visit_exp lanetype#257] -[visit_id lanetype#257] -[visit_exp dim#257] -[visit_id dim#257] -[visit_exp i#1300] -[visit_id i#1300] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#1307}(M_2))] +[visit_exp `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))] +[visit_exp (`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))] +[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] [visit_exp (Jnn_2 : Jnn <: lanetype)] [visit_exp Jnn_2] [visit_id Jnn_2] -[visit_exp `%`_dim{i#1307}(M_2)] -[visit_exp i#1307] -[visit_id i#1307] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] [check_dims] shape_1 shape_2 [visit_id shape_1] not free [visit_id shape_2] not free -[check_dims] Jnn_1 Jnn_2 M_1 M_2 dim#269 dim#281 i#1312 i#1319 i#1324 i#1331 lanetype#269 lanetype#281 +[check_dims] Jnn_1 Jnn_2 M_1 M_2 +[check_dims] Jnn_1 Jnn_2 M_1 M_2 +[scope_enter half] +[visit_id half] not free +[visit_id half] no dims +[scope_enter sx] +[visit_id sx] not free +[visit_id sx] no dims +[scope_exit sx] +[scope_exit half] --- 1 --- -[check_dims] Jnn_1 Jnn_2 M_1 M_2 dim#269 dim#281 i#1312 i#1319 i#1324 i#1331 lanetype#269 lanetype#281 +[check_dims] Jnn_1 Jnn_2 M_1 M_2 --- 2 --- --- 3 --- --- 4 --- -[visit_id half] no dims -[visit_id half] -[visit_id sx] no dims -[visit_id sx] [visit_exp ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))))] [visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] [visit_exp (Jnn_2 : Jnn <: lanetype)] @@ -13275,50 +12531,39 @@ DecD unpackshape(shape : shape) : numtype [visit_exp Jnn_1] [visit_id Jnn_1] not free [visit_id Jnn_1] no dims -[visit_exp `%X%`_shape{lanetype#269, dim#269, i#1312}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#1319}(M_1))] -[visit_exp lanetype#269] -[visit_id lanetype#269] -[visit_exp dim#269] -[visit_id dim#269] -[visit_exp i#1312] -[visit_id i#1312] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#1319}(M_1))] +[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] [visit_exp (Jnn_1 : Jnn <: lanetype)] [visit_exp Jnn_1] [visit_id Jnn_1] -[visit_exp `%`_dim{i#1319}(M_1)] -[visit_exp i#1319] -[visit_id i#1319] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] -[visit_exp `%X%`_shape{lanetype#281, dim#281, i#1324}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#1331}(M_2))] -[visit_exp lanetype#281] -[visit_id lanetype#281] -[visit_exp dim#281] -[visit_id dim#281] -[visit_exp i#1324] -[visit_id i#1324] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#1331}(M_2))] +[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] [visit_exp (Jnn_2 : Jnn <: lanetype)] [visit_exp Jnn_2] [visit_id Jnn_2] -[visit_exp `%`_dim{i#1331}(M_2)] -[visit_exp i#1331] -[visit_id i#1331] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] -[check_dims] Fnn_2 Jnn_1 M_1 M_2 dim#293 dim#305 i#1336 i#1343 i#1348 i#1355 lanetype#293 lanetype#305 +[check_dims] Fnn_2 Jnn_1 M_1 M_2 +[check_dims] Fnn_2 Jnn_1 M_1 M_2 +[scope_enter half?] +[visit_id half?] not free +[visit_id half?] no dims +[scope_enter sx] +[visit_id sx] not free +[visit_id sx] no dims +[scope_exit sx] +[scope_exit half?] --- 1 --- -[check_dims] Fnn_2 Jnn_1 M_1 M_2 dim#293 dim#305 half i#1336 i#1343 i#1348 i#1355 lanetype#293 lanetype#305 +[check_dims] Fnn_2 Jnn_1 M_1 M_2 half --- 2 --- --- 3 --- --- 4 --- -[visit_id half?] no dims -[visit_id half?] -[visit_id sx] no dims -[visit_id sx] [visit_exp (((($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))))] [visit_exp ((($sizenn2((Fnn_2 : Fnn <: numtype)) = $lsizenn1((Jnn_1 : Jnn <: lanetype))) /\ ($lsizenn1((Jnn_1 : Jnn <: lanetype)) = 32)) /\ (half?{half <- `half?`} = ?()))] [visit_exp (($sizenn2((Fnn_2 : Fnn <: numtype)) = $lsizenn1((Jnn_1 : Jnn <: lanetype))) /\ ($lsizenn1((Jnn_1 : Jnn <: lanetype)) = 32))] @@ -13378,50 +12623,39 @@ DecD unpackshape(shape : shape) : numtype [visit_exp ?(`LOW`_half)] [visit_exp `LOW`_half] [visit_exp ()] -[visit_exp `%X%`_shape{lanetype#293, dim#293, i#1336}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#1343}(M_1))] -[visit_exp lanetype#293] -[visit_id lanetype#293] -[visit_exp dim#293] -[visit_id dim#293] -[visit_exp i#1336] -[visit_id i#1336] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#1343}(M_1))] +[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] [visit_exp (Jnn_1 : Jnn <: lanetype)] [visit_exp Jnn_1] [visit_id Jnn_1] -[visit_exp `%`_dim{i#1343}(M_1)] -[visit_exp i#1343] -[visit_id i#1343] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] -[visit_exp `%X%`_shape{lanetype#305, dim#305, i#1348}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#1355}(M_2))] -[visit_exp lanetype#305] -[visit_id lanetype#305] -[visit_exp dim#305] -[visit_id dim#305] -[visit_exp i#1348] -[visit_id i#1348] -[visit_exp ((Fnn_2 : Fnn <: lanetype), `%`_dim{i#1355}(M_2))] +[visit_exp `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))] +[visit_exp ((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))] [visit_exp (Fnn_2 : Fnn <: lanetype)] [visit_exp Fnn_2] [visit_id Fnn_2] -[visit_exp `%`_dim{i#1355}(M_2)] -[visit_exp i#1355] -[visit_id i#1355] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] -[check_dims] Fnn_1 Jnn_2 M_1 M_2 dim#317 dim#329 i#1360 i#1367 i#1372 i#1379 lanetype#317 lanetype#329 +[check_dims] Fnn_1 Jnn_2 M_1 M_2 +[check_dims] Fnn_1 Jnn_2 M_1 M_2 +[scope_enter sx] +[visit_id sx] not free +[visit_id sx] no dims +[scope_enter zero?] +[visit_id zero?] not free +[visit_id zero?] no dims +[scope_exit zero?] +[scope_exit sx] --- 1 --- -[check_dims] Fnn_1 Jnn_2 M_1 M_2 dim#317 dim#329 i#1360 i#1367 i#1372 i#1379 lanetype#317 lanetype#329 zero +[check_dims] Fnn_1 Jnn_2 M_1 M_2 zero --- 2 --- --- 3 --- --- 4 --- -[visit_id sx] no dims -[visit_id sx] -[visit_id zero?] no dims -[visit_id zero?] [visit_exp (((($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))))] [visit_exp ((($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) /\ (zero?{zero <- `zero?`} = ?()))] [visit_exp (($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32))] @@ -13481,15 +12715,20 @@ DecD unpackshape(shape : shape) : numtype [visit_exp ?(`ZERO`_zero)] [visit_exp `ZERO`_zero] [visit_exp ()] +[check_dims] Fnn_1 Jnn_2 M_1 M_2 +[scope_enter sx] +[visit_id sx] not free +[visit_id sx] no dims +[scope_enter zero?] +[visit_id zero?] not free +[visit_id zero?] no dims +[scope_exit zero?] +[scope_exit sx] --- 1 --- -[check_dims] Fnn_1 Jnn_2 M_1 M_2 dim#317 dim#329 i#1360 i#1367 i#1372 i#1379 lanetype#317 lanetype#329 zero +[check_dims] Fnn_1 Jnn_2 M_1 M_2 zero --- 2 --- --- 3 --- --- 4 --- -[visit_id sx] no dims -[visit_id sx] -[visit_id zero?] no dims -[visit_id zero?] [visit_exp (((($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))))] [visit_exp ((($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) /\ (zero?{zero <- `zero?`} = ?()))] [visit_exp (($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32))] @@ -13549,48 +12788,35 @@ DecD unpackshape(shape : shape) : numtype [visit_exp ?(`ZERO`_zero)] [visit_exp `ZERO`_zero] [visit_exp ()] -[visit_exp `%X%`_shape{lanetype#317, dim#317, i#1360}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#1367}(M_1))] -[visit_exp lanetype#317] -[visit_id lanetype#317] -[visit_exp dim#317] -[visit_id dim#317] -[visit_exp i#1360] -[visit_id i#1360] -[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim{i#1367}(M_1))] +[visit_exp `%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] +[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] [visit_exp (Fnn_1 : Fnn <: lanetype)] [visit_exp Fnn_1] [visit_id Fnn_1] -[visit_exp `%`_dim{i#1367}(M_1)] -[visit_exp i#1367] -[visit_id i#1367] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] -[visit_exp `%X%`_shape{lanetype#329, dim#329, i#1372}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#1379}(M_2))] -[visit_exp lanetype#329] -[visit_id lanetype#329] -[visit_exp dim#329] -[visit_id dim#329] -[visit_exp i#1372] -[visit_id i#1372] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#1379}(M_2))] +[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] [visit_exp (Jnn_2 : Jnn <: lanetype)] [visit_exp Jnn_2] [visit_id Jnn_2] -[visit_exp `%`_dim{i#1379}(M_2)] -[visit_exp i#1379] -[visit_id i#1379] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] -[check_dims] Fnn_1 Fnn_2 M_1 M_2 dim#341 dim#353 i#1384 i#1391 i#1396 i#1403 lanetype#341 lanetype#353 +[check_dims] Fnn_1 Fnn_2 M_1 M_2 +[check_dims] Fnn_1 Fnn_2 M_1 M_2 +[scope_enter zero] +[visit_id zero] not free +[visit_id zero] no dims +[scope_exit zero] --- 1 --- -[check_dims] Fnn_1 Fnn_2 M_1 M_2 dim#341 dim#353 i#1384 i#1391 i#1396 i#1403 lanetype#341 lanetype#353 +[check_dims] Fnn_1 Fnn_2 M_1 M_2 --- 2 --- --- 3 --- --- 4 --- -[visit_id zero] no dims -[visit_id zero] [visit_exp ($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $sizenn2((Fnn_2 : Fnn <: numtype))))] [visit_exp $sizenn1((Fnn_1 : Fnn <: numtype))] [visit_exp (Fnn_1 : Fnn <: numtype)] @@ -13604,8 +12830,9 @@ DecD unpackshape(shape : shape) : numtype [visit_exp Fnn_2] [visit_id Fnn_2] not free [visit_id Fnn_2] no dims +[check_dims] Fnn_1 Fnn_2 M_1 M_2 --- 1 --- -[check_dims] Fnn_1 Fnn_2 M_1 M_2 dim#341 dim#353 i#1384 i#1391 i#1396 i#1403 lanetype#341 lanetype#353 +[check_dims] Fnn_1 Fnn_2 M_1 M_2 --- 2 --- --- 3 --- --- 4 --- @@ -13622,74 +12849,68 @@ DecD unpackshape(shape : shape) : numtype [visit_exp Fnn_2] [visit_id Fnn_2] not free [visit_id Fnn_2] no dims -[visit_exp `%X%`_shape{lanetype#341, dim#341, i#1384}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#1391}(M_1))] -[visit_exp lanetype#341] -[visit_id lanetype#341] -[visit_exp dim#341] -[visit_id dim#341] -[visit_exp i#1384] -[visit_id i#1384] -[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim{i#1391}(M_1))] +[visit_exp `%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] +[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] [visit_exp (Fnn_1 : Fnn <: lanetype)] [visit_exp Fnn_1] [visit_id Fnn_1] -[visit_exp `%`_dim{i#1391}(M_1)] -[visit_exp i#1391] -[visit_id i#1391] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] -[visit_exp `%X%`_shape{lanetype#353, dim#353, i#1396}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#1403}(M_2))] -[visit_exp lanetype#353] -[visit_id lanetype#353] -[visit_exp dim#353] -[visit_id dim#353] -[visit_exp i#1396] -[visit_id i#1396] -[visit_exp ((Fnn_2 : Fnn <: lanetype), `%`_dim{i#1403}(M_2))] +[visit_exp `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))] +[visit_exp ((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))] [visit_exp (Fnn_2 : Fnn <: lanetype)] [visit_exp Fnn_2] [visit_id Fnn_2] -[visit_exp `%`_dim{i#1403}(M_2)] -[visit_exp i#1403] -[visit_id i#1403] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] [check_dims] +[check_dims] +[scope_enter u32] +[visit_id u32] not free +[visit_id u32] no dims +[scope_exit u32] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id u32] no dims -[visit_id u32] +[check_dims] +[scope_enter u64] +[visit_id u64] not free +[visit_id u64] no dims +[scope_exit u64] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id u64] no dims -[visit_id u64] [check_dims] [check_dims] numtype [visit_id numtype] not free [check_dims] Inn +[check_dims] Inn +[scope_enter sz] +[visit_id sz] not free +[visit_id sz] no dims +[scope_enter sx] +[visit_id sx] not free +[visit_id sx] no dims +[scope_exit sx] +[scope_exit sz] --- 1 --- -[check_dims] Inn i#1405 sz +[check_dims] Inn sz --- 2 --- --- 3 --- --- 4 --- -[visit_id sz] -[visit_id sx] no dims -[visit_id sx] -[visit_exp (sz!`%`_sz{i#1405}.0 < $sizenn((Inn : Inn <: numtype)))] -[visit_exp sz!`%`_sz{i#1405}.0] -[visit_exp sz!`%`_sz{i#1405}] +[visit_exp (sz!`%`_sz.0 < $sizenn((Inn : Inn <: numtype)))] +[visit_exp sz!`%`_sz.0] +[visit_exp sz!`%`_sz] [visit_exp sz] [visit_id sz] not free -[visit_exp i#1405] -[visit_id i#1405] [visit_exp $sizenn((Inn : Inn <: numtype))] [visit_exp (Inn : Inn <: numtype)] [visit_exp Inn] @@ -13701,19 +12922,21 @@ DecD unpackshape(shape : shape) : numtype [check_dims] numtype [visit_id numtype] not free [check_dims] Inn +[check_dims] Inn +[scope_enter sz] +[visit_id sz] not free +[visit_id sz] no dims +[scope_exit sz] --- 1 --- -[check_dims] Inn i#1407 sz +[check_dims] Inn sz --- 2 --- --- 3 --- --- 4 --- -[visit_id sz] -[visit_exp (sz!`%`_sz{i#1407}.0 < $sizenn((Inn : Inn <: numtype)))] -[visit_exp sz!`%`_sz{i#1407}.0] -[visit_exp sz!`%`_sz{i#1407}] +[visit_exp (sz!`%`_sz.0 < $sizenn((Inn : Inn <: numtype)))] +[visit_exp sz!`%`_sz.0] +[visit_exp sz!`%`_sz] [visit_exp sz] [visit_id sz] not free -[visit_exp i#1407] -[visit_id i#1407] [visit_exp $sizenn((Inn : Inn <: numtype))] [visit_exp (Inn : Inn <: numtype)] [visit_exp Inn] @@ -13723,24 +12946,31 @@ DecD unpackshape(shape : shape) : numtype [visit_exp Inn] [visit_id Inn] [check_dims] vectype +[check_dims] vectype +[scope_enter sz] +[visit_id sz] not free +[visit_id sz] no dims +[scope_enter M] +[visit_id M] not free +[visit_id M] no dims +[scope_enter sx] +[visit_id sx] not free +[visit_id sx] no dims +[scope_exit sx] +[scope_exit M] +[scope_exit sz] --- 1 --- -[check_dims] M i#1409 sz vectype +[check_dims] M sz vectype --- 2 --- --- 3 --- --- 4 --- -[visit_id sz] -[visit_id M] -[visit_id sx] no dims -[visit_id sx] -[visit_exp (((sz!`%`_sz{i#1409}.0 * M) : nat <:> rat) = (($vsize(vectype) : nat <:> rat) / (2 : nat <:> rat)))] -[visit_exp ((sz!`%`_sz{i#1409}.0 * M) : nat <:> rat)] -[visit_exp (sz!`%`_sz{i#1409}.0 * M)] -[visit_exp sz!`%`_sz{i#1409}.0] -[visit_exp sz!`%`_sz{i#1409}] +[visit_exp (((sz!`%`_sz.0 * M) : nat <:> rat) = (($vsize(vectype) : nat <:> rat) / (2 : nat <:> rat)))] +[visit_exp ((sz!`%`_sz.0 * M) : nat <:> rat)] +[visit_exp (sz!`%`_sz.0 * M)] +[visit_exp sz!`%`_sz.0] +[visit_exp sz!`%`_sz] [visit_exp sz] [visit_id sz] not free -[visit_exp i#1409] -[visit_id i#1409] [visit_exp M] [visit_id M] not free [visit_exp (($vsize(vectype) : nat <:> rat) / (2 : nat <:> rat))] @@ -13751,693 +12981,1010 @@ DecD unpackshape(shape : shape) : numtype [visit_id vectype] no dims [visit_exp (2 : nat <:> rat)] [visit_exp 2] +[check_dims] vectype +[scope_enter sz] +[visit_id sz] not free +[visit_id sz] no dims +[scope_exit sz] --- 1 --- [check_dims] vectype --- 2 --- --- 3 --- --- 4 --- +[check_dims] vectype +[scope_enter sz] +[visit_id sz] not free [visit_id sz] no dims -[visit_id sz] +[scope_exit sz] --- 1 --- -[check_dims] i#1411 sz vectype +[check_dims] sz vectype --- 2 --- --- 3 --- --- 4 --- -[visit_id sz] -[visit_exp (sz!`%`_sz{i#1411}.0 >= 32)] -[visit_exp sz!`%`_sz{i#1411}.0] -[visit_exp sz!`%`_sz{i#1411}] +[visit_exp (sz!`%`_sz.0 >= 32)] +[visit_exp sz!`%`_sz.0] +[visit_exp sz!`%`_sz] [visit_exp sz] [visit_id sz] not free -[visit_exp i#1411] -[visit_id i#1411] [visit_exp 32] [visit_exp vectype] [visit_id vectype] [check_dims] ---- 1 --- [check_dims] ---- 2 --- ---- 3 --- ---- 4 --- +[scope_enter valtype?] +[visit_id valtype?] not free [visit_id valtype?] no dims -[visit_id valtype?] +[scope_exit valtype?] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id typeidx] no dims -[visit_id typeidx] -[check_dims] [check_dims] +[scope_enter typeidx] +[visit_id typeidx] not free +[visit_id typeidx] no dims +[scope_exit typeidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id valtype*?] no dims -[visit_id valtype*?] [check_dims] +[scope_enter valtype*?] +[visit_id valtype*?] not free +[visit_id valtype*?] no dims +[scope_exit valtype*?] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter blocktype] +[visit_id blocktype] not free [visit_id blocktype] no dims -[visit_id blocktype] +[scope_enter instr*] +[visit_id instr*] not free [visit_id instr*] no dims -[visit_id instr*] +[scope_exit instr*] +[scope_exit blocktype] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter blocktype] +[visit_id blocktype] not free [visit_id blocktype] no dims -[visit_id blocktype] +[scope_enter instr*] +[visit_id instr*] not free [visit_id instr*] no dims -[visit_id instr*] +[scope_exit instr*] +[scope_exit blocktype] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter blocktype] +[visit_id blocktype] not free [visit_id blocktype] no dims -[visit_id blocktype] +[scope_enter instr*] +[visit_id instr*] not free [visit_id instr*] no dims -[visit_id instr*] +[scope_enter instr*] [visit_id instr*] not free [visit_id instr*] no dims -[check_dims] +[scope_exit instr*] +[scope_exit instr*] +[scope_exit blocktype] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter labelidx] +[visit_id labelidx] not free [visit_id labelidx] no dims -[visit_id labelidx] +[scope_exit labelidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter labelidx] +[visit_id labelidx] not free [visit_id labelidx] no dims -[visit_id labelidx] +[scope_exit labelidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter labelidx*] +[visit_id labelidx*] not free [visit_id labelidx*] no dims -[visit_id labelidx*] +[scope_enter labelidx] +[visit_id labelidx] not free [visit_id labelidx] no dims -[visit_id labelidx] +[scope_exit labelidx] +[scope_exit labelidx*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter labelidx] +[visit_id labelidx] not free [visit_id labelidx] no dims -[visit_id labelidx] +[scope_exit labelidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter labelidx] +[visit_id labelidx] not free [visit_id labelidx] no dims -[visit_id labelidx] +[scope_exit labelidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter labelidx] +[visit_id labelidx] not free [visit_id labelidx] no dims -[visit_id labelidx] +[scope_enter reftype] +[visit_id reftype] not free [visit_id reftype] no dims -[visit_id reftype] +[scope_enter reftype] [visit_id reftype] not free [visit_id reftype] no dims +[scope_exit reftype] +[scope_exit reftype] +[scope_exit labelidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter labelidx] +[visit_id labelidx] not free [visit_id labelidx] no dims -[visit_id labelidx] +[scope_enter reftype] +[visit_id reftype] not free [visit_id reftype] no dims -[visit_id reftype] +[scope_enter reftype] [visit_id reftype] not free [visit_id reftype] no dims -[check_dims] +[scope_exit reftype] +[scope_exit reftype] +[scope_exit labelidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter funcidx] +[visit_id funcidx] not free [visit_id funcidx] no dims -[visit_id funcidx] +[scope_exit funcidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter typeuse] +[visit_id typeuse] not free [visit_id typeuse] no dims -[visit_id typeuse] +[scope_exit typeuse] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter tableidx] +[visit_id tableidx] not free [visit_id tableidx] no dims -[visit_id tableidx] +[scope_enter typeuse] +[visit_id typeuse] not free [visit_id typeuse] no dims -[visit_id typeuse] +[scope_exit typeuse] +[scope_exit tableidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter funcidx] +[visit_id funcidx] not free [visit_id funcidx] no dims -[visit_id funcidx] +[scope_exit funcidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter typeuse] +[visit_id typeuse] not free [visit_id typeuse] no dims -[visit_id typeuse] +[scope_exit typeuse] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter tableidx] +[visit_id tableidx] not free [visit_id tableidx] no dims -[visit_id tableidx] +[scope_enter typeuse] +[visit_id typeuse] not free [visit_id typeuse] no dims -[visit_id typeuse] -[check_dims] +[scope_exit typeuse] +[scope_exit tableidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter tagidx] +[visit_id tagidx] not free [visit_id tagidx] no dims -[visit_id tagidx] +[scope_exit tagidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter blocktype] +[visit_id blocktype] not free [visit_id blocktype] no dims -[visit_id blocktype] +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_enter instr*] +[visit_id instr*] not free [visit_id instr*] no dims -[visit_id instr*] -[check_dims] +[scope_exit instr*] +[scope_exit _] +[scope_exit blocktype] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter tagidx] +[visit_id tagidx] not free [visit_id tagidx] no dims -[visit_id tagidx] +[scope_enter labelidx] +[visit_id labelidx] not free [visit_id labelidx] no dims -[visit_id labelidx] +[scope_exit labelidx] +[scope_exit tagidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter tagidx] +[visit_id tagidx] not free [visit_id tagidx] no dims -[visit_id tagidx] +[scope_enter labelidx] +[visit_id labelidx] not free [visit_id labelidx] no dims -[visit_id labelidx] +[scope_exit labelidx] +[scope_exit tagidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter labelidx] +[visit_id labelidx] not free [visit_id labelidx] no dims -[visit_id labelidx] +[scope_exit labelidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id labelidx] no dims -[visit_id labelidx] [check_dims] +[scope_enter labelidx] +[visit_id labelidx] not free +[visit_id labelidx] no dims +[scope_exit labelidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter localidx] +[visit_id localidx] not free [visit_id localidx] no dims -[visit_id localidx] +[scope_exit localidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter localidx] +[visit_id localidx] not free [visit_id localidx] no dims -[visit_id localidx] +[scope_exit localidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id localidx] no dims -[visit_id localidx] [check_dims] +[scope_enter localidx] +[visit_id localidx] not free +[visit_id localidx] no dims +[scope_exit localidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter globalidx] +[visit_id globalidx] not free [visit_id globalidx] no dims -[visit_id globalidx] +[scope_exit globalidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id globalidx] no dims -[visit_id globalidx] [check_dims] +[scope_enter globalidx] +[visit_id globalidx] not free +[visit_id globalidx] no dims +[scope_exit globalidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter tableidx] +[visit_id tableidx] not free [visit_id tableidx] no dims -[visit_id tableidx] +[scope_exit tableidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter tableidx] +[visit_id tableidx] not free [visit_id tableidx] no dims -[visit_id tableidx] +[scope_exit tableidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter tableidx] +[visit_id tableidx] not free [visit_id tableidx] no dims -[visit_id tableidx] +[scope_exit tableidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter tableidx] +[visit_id tableidx] not free [visit_id tableidx] no dims -[visit_id tableidx] +[scope_exit tableidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter tableidx] +[visit_id tableidx] not free [visit_id tableidx] no dims -[visit_id tableidx] +[scope_exit tableidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter tableidx] +[visit_id tableidx] not free [visit_id tableidx] no dims -[visit_id tableidx] +[scope_enter tableidx] [visit_id tableidx] not free [visit_id tableidx] no dims +[scope_exit tableidx] +[scope_exit tableidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter tableidx] +[visit_id tableidx] not free [visit_id tableidx] no dims -[visit_id tableidx] +[scope_enter elemidx] +[visit_id elemidx] not free [visit_id elemidx] no dims -[visit_id elemidx] -[check_dims] +[scope_exit elemidx] +[scope_exit tableidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id elemidx] no dims -[visit_id elemidx] [check_dims] +[check_dims] +[scope_enter elemidx] +[visit_id elemidx] not free +[visit_id elemidx] no dims +[scope_exit elemidx] --- 1 --- -[check_dims] numtype +[check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id numtype] -[visit_id _] not free -[visit_id _] no dims +[check_dims] +[check_dims] numtype +[scope_enter numtype] +[visit_id numtype] not free [visit_exp numtype] [visit_id numtype] not free +[scope_enter _] +[visit_id _] not free +[visit_id _] no dims +[scope_enter memidx] +[visit_id memidx] not free [visit_id memidx] no dims -[visit_id memidx] +[scope_enter memarg] +[visit_id memarg] not free [visit_id memarg] no dims -[visit_id memarg] +[scope_exit memarg] +[scope_exit memidx] +[scope_exit _] +[scope_exit numtype] --- 1 --- [check_dims] numtype --- 2 --- --- 3 --- --- 4 --- -[visit_id numtype] -[visit_id _] not free -[visit_id _] no dims +[check_dims] numtype +[scope_enter numtype] +[visit_id numtype] not free [visit_exp numtype] [visit_id numtype] not free +[scope_enter _] +[visit_id _] not free +[visit_id _] no dims +[scope_enter memidx] +[visit_id memidx] not free [visit_id memidx] no dims -[visit_id memidx] +[scope_enter memarg] +[visit_id memarg] not free [visit_id memarg] no dims -[visit_id memarg] +[scope_exit memarg] +[scope_exit memidx] +[scope_exit _] +[scope_exit numtype] --- 1 --- -[check_dims] vectype +[check_dims] numtype --- 2 --- --- 3 --- --- 4 --- -[visit_id vectype] -[visit_id _] not free -[visit_id _] no dims +[check_dims] vectype +[scope_enter vectype] +[visit_id vectype] not free [visit_exp vectype] [visit_id vectype] not free +[scope_enter _] +[visit_id _] not free +[visit_id _] no dims +[scope_enter memidx] +[visit_id memidx] not free [visit_id memidx] no dims -[visit_id memidx] +[scope_enter memarg] +[visit_id memarg] not free [visit_id memarg] no dims -[visit_id memarg] +[scope_exit memarg] +[scope_exit memidx] +[scope_exit _] +[scope_exit vectype] --- 1 --- -[check_dims] +[check_dims] vectype --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter vectype] +[visit_id vectype] not free [visit_id vectype] no dims -[visit_id vectype] +[scope_enter sz] +[visit_id sz] not free [visit_id sz] no dims -[visit_id sz] +[scope_enter memidx] +[visit_id memidx] not free [visit_id memidx] no dims -[visit_id memidx] +[scope_enter memarg] +[visit_id memarg] not free [visit_id memarg] no dims -[visit_id memarg] +[scope_enter laneidx] +[visit_id laneidx] not free [visit_id laneidx] no dims -[visit_id laneidx] +[scope_exit laneidx] +[scope_exit memarg] +[scope_exit memidx] +[scope_exit sz] +[scope_exit vectype] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter vectype] +[visit_id vectype] not free [visit_id vectype] no dims -[visit_id vectype] +[scope_enter memidx] +[visit_id memidx] not free [visit_id memidx] no dims -[visit_id memidx] +[scope_enter memarg] +[visit_id memarg] not free [visit_id memarg] no dims -[visit_id memarg] +[scope_exit memarg] +[scope_exit memidx] +[scope_exit vectype] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter vectype] +[visit_id vectype] not free [visit_id vectype] no dims -[visit_id vectype] +[scope_enter sz] +[visit_id sz] not free [visit_id sz] no dims -[visit_id sz] +[scope_enter memidx] +[visit_id memidx] not free [visit_id memidx] no dims -[visit_id memidx] +[scope_enter memarg] +[visit_id memarg] not free [visit_id memarg] no dims -[visit_id memarg] +[scope_enter laneidx] +[visit_id laneidx] not free [visit_id laneidx] no dims -[visit_id laneidx] +[scope_exit laneidx] +[scope_exit memarg] +[scope_exit memidx] +[scope_exit sz] +[scope_exit vectype] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter memidx] +[visit_id memidx] not free [visit_id memidx] no dims -[visit_id memidx] +[scope_exit memidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter memidx] +[visit_id memidx] not free [visit_id memidx] no dims -[visit_id memidx] +[scope_exit memidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter memidx] +[visit_id memidx] not free [visit_id memidx] no dims -[visit_id memidx] +[scope_exit memidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter memidx] +[visit_id memidx] not free [visit_id memidx] no dims -[visit_id memidx] +[scope_enter memidx] [visit_id memidx] not free [visit_id memidx] no dims +[scope_exit memidx] +[scope_exit memidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter memidx] +[visit_id memidx] not free [visit_id memidx] no dims -[visit_id memidx] +[scope_enter dataidx] +[visit_id dataidx] not free [visit_id dataidx] no dims -[visit_id dataidx] -[check_dims] +[scope_exit dataidx] +[scope_exit memidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id dataidx] no dims -[visit_id dataidx] [check_dims] +[check_dims] +[scope_enter dataidx] +[visit_id dataidx] not free +[visit_id dataidx] no dims +[scope_exit dataidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter heaptype] +[visit_id heaptype] not free [visit_id heaptype] no dims -[visit_id heaptype] +[scope_exit heaptype] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter reftype] +[visit_id reftype] not free [visit_id reftype] no dims -[visit_id reftype] +[scope_exit reftype] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id reftype] no dims -[visit_id reftype] [check_dims] +[scope_enter reftype] +[visit_id reftype] not free +[visit_id reftype] no dims +[scope_exit reftype] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id funcidx] no dims -[visit_id funcidx] [check_dims] +[check_dims] +[scope_enter funcidx] +[visit_id funcidx] not free +[visit_id funcidx] no dims +[scope_exit funcidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id sx] no dims -[visit_id sx] [check_dims] +[scope_enter sx] +[visit_id sx] not free +[visit_id sx] no dims +[scope_exit sx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter typeidx] +[visit_id typeidx] not free [visit_id typeidx] no dims -[visit_id typeidx] +[scope_exit typeidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter typeidx] +[visit_id typeidx] not free [visit_id typeidx] no dims -[visit_id typeidx] +[scope_exit typeidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter sx?] +[visit_id sx?] not free [visit_id sx?] no dims -[visit_id sx?] +[scope_enter typeidx] +[visit_id typeidx] not free [visit_id typeidx] no dims -[visit_id typeidx] +[scope_enter u32] +[visit_id u32] not free [visit_id u32] no dims -[visit_id u32] +[scope_exit u32] +[scope_exit typeidx] +[scope_exit sx?] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter typeidx] +[visit_id typeidx] not free [visit_id typeidx] no dims -[visit_id typeidx] +[scope_enter u32] +[visit_id u32] not free [visit_id u32] no dims -[visit_id u32] -[check_dims] +[scope_exit u32] +[scope_exit typeidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter typeidx] +[visit_id typeidx] not free [visit_id typeidx] no dims -[visit_id typeidx] +[scope_exit typeidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter typeidx] +[visit_id typeidx] not free [visit_id typeidx] no dims -[visit_id typeidx] +[scope_exit typeidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter typeidx] +[visit_id typeidx] not free [visit_id typeidx] no dims -[visit_id typeidx] +[scope_enter u32] +[visit_id u32] not free [visit_id u32] no dims -[visit_id u32] +[scope_exit u32] +[scope_exit typeidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter typeidx] +[visit_id typeidx] not free [visit_id typeidx] no dims -[visit_id typeidx] +[scope_enter dataidx] +[visit_id dataidx] not free [visit_id dataidx] no dims -[visit_id dataidx] +[scope_exit dataidx] +[scope_exit typeidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter typeidx] +[visit_id typeidx] not free [visit_id typeidx] no dims -[visit_id typeidx] +[scope_enter elemidx] +[visit_id elemidx] not free [visit_id elemidx] no dims -[visit_id elemidx] +[scope_exit elemidx] +[scope_exit typeidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter sx?] +[visit_id sx?] not free [visit_id sx?] no dims -[visit_id sx?] +[scope_enter typeidx] +[visit_id typeidx] not free [visit_id typeidx] no dims -[visit_id typeidx] +[scope_exit typeidx] +[scope_exit sx?] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter typeidx] +[visit_id typeidx] not free [visit_id typeidx] no dims -[visit_id typeidx] +[scope_exit typeidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter typeidx] +[visit_id typeidx] not free [visit_id typeidx] no dims -[visit_id typeidx] +[scope_exit typeidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter typeidx] +[visit_id typeidx] not free [visit_id typeidx] no dims -[visit_id typeidx] +[scope_enter typeidx] [visit_id typeidx] not free [visit_id typeidx] no dims +[scope_exit typeidx] +[scope_exit typeidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter typeidx] +[visit_id typeidx] not free [visit_id typeidx] no dims -[visit_id typeidx] +[scope_enter dataidx] +[visit_id dataidx] not free [visit_id dataidx] no dims -[visit_id dataidx] +[scope_exit dataidx] +[scope_exit typeidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter typeidx] +[visit_id typeidx] not free [visit_id typeidx] no dims -[visit_id typeidx] +[scope_enter elemidx] +[visit_id elemidx] not free [visit_id elemidx] no dims -[visit_id elemidx] -[check_dims] +[scope_exit elemidx] +[scope_exit typeidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] --- 1 --- [check_dims] --- 2 --- @@ -14445,204 +13992,309 @@ DecD unpackshape(shape : shape) : numtype --- 4 --- [check_dims] --- 1 --- -[check_dims] numtype +[check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id numtype] -[visit_id _] not free -[visit_id _] no dims +[check_dims] +[check_dims] numtype +[scope_enter numtype] +[visit_id numtype] not free [visit_exp numtype] [visit_id numtype] not free +[scope_enter _] +[visit_id _] not free +[visit_id _] no dims +[scope_exit _] +[scope_exit numtype] --- 1 --- [check_dims] numtype --- 2 --- --- 3 --- --- 4 --- -[visit_id numtype] -[visit_id _] not free -[visit_id _] no dims +[check_dims] numtype +[scope_enter numtype] +[visit_id numtype] not free [visit_exp numtype] [visit_id numtype] not free +[scope_enter _] +[visit_id _] not free +[visit_id _] no dims +[scope_exit _] +[scope_exit numtype] --- 1 --- [check_dims] numtype --- 2 --- --- 3 --- --- 4 --- -[visit_id numtype] -[visit_id _] not free -[visit_id _] no dims +[check_dims] numtype +[scope_enter numtype] +[visit_id numtype] not free [visit_exp numtype] [visit_id numtype] not free +[scope_enter _] +[visit_id _] not free +[visit_id _] no dims +[scope_exit _] +[scope_exit numtype] --- 1 --- [check_dims] numtype --- 2 --- --- 3 --- --- 4 --- -[visit_id numtype] -[visit_id _] not free -[visit_id _] no dims +[check_dims] numtype +[scope_enter numtype] +[visit_id numtype] not free [visit_exp numtype] [visit_id numtype] not free +[scope_enter _] +[visit_id _] not free +[visit_id _] no dims +[scope_exit _] +[scope_exit numtype] --- 1 --- [check_dims] numtype --- 2 --- --- 3 --- --- 4 --- -[visit_id numtype] -[visit_id _] not free -[visit_id _] no dims +[check_dims] numtype +[scope_enter numtype] +[visit_id numtype] not free [visit_exp numtype] [visit_id numtype] not free +[scope_enter _] +[visit_id _] not free +[visit_id _] no dims +[scope_exit _] +[scope_exit numtype] --- 1 --- -[check_dims] numtype_1 numtype_2 +[check_dims] numtype --- 2 --- --- 3 --- --- 4 --- -[visit_id numtype_1] -[visit_id numtype_2] -[visit_id _] not free -[visit_id _] no dims +[check_dims] numtype_1 numtype_2 +[scope_enter numtype_1] +[visit_id numtype_1] not free +[scope_enter numtype_2] +[visit_id numtype_2] not free [visit_exp numtype_2] [visit_id numtype_2] not free [visit_exp numtype_1] [visit_id numtype_1] not free -[check_dims] +[scope_enter _] +[visit_id _] not free +[visit_id _] no dims +[scope_exit _] +[scope_exit numtype_2] +[scope_exit numtype_1] --- 1 --- -[check_dims] vectype +[check_dims] numtype_1 numtype_2 --- 2 --- --- 3 --- --- 4 --- -[visit_id vectype] -[visit_id _] not free -[visit_id _] no dims +[check_dims] +[check_dims] vectype +[scope_enter vectype] +[visit_id vectype] not free [visit_exp vectype] [visit_id vectype] not free +[scope_enter _] +[visit_id _] not free +[visit_id _] no dims +[scope_exit _] +[scope_exit vectype] --- 1 --- -[check_dims] +[check_dims] vectype --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter vectype] +[visit_id vectype] not free [visit_id vectype] no dims -[visit_id vectype] +[scope_enter vvunop] +[visit_id vvunop] not free [visit_id vvunop] no dims -[visit_id vvunop] +[scope_exit vvunop] +[scope_exit vectype] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter vectype] +[visit_id vectype] not free [visit_id vectype] no dims -[visit_id vectype] +[scope_enter vvbinop] +[visit_id vvbinop] not free [visit_id vvbinop] no dims -[visit_id vvbinop] +[scope_exit vvbinop] +[scope_exit vectype] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter vectype] +[visit_id vectype] not free [visit_id vectype] no dims -[visit_id vectype] +[scope_enter vvternop] +[visit_id vvternop] not free [visit_id vvternop] no dims -[visit_id vvternop] +[scope_exit vvternop] +[scope_exit vectype] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter vectype] +[visit_id vectype] not free [visit_id vectype] no dims -[visit_id vectype] +[scope_enter vvtestop] +[visit_id vvtestop] not free [visit_id vvtestop] no dims -[visit_id vvtestop] +[scope_exit vvtestop] +[scope_exit vectype] --- 1 --- -[check_dims] shape +[check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id shape] -[visit_id _] not free -[visit_id _] no dims +[check_dims] shape +[scope_enter shape] +[visit_id shape] not free [visit_exp shape] [visit_id shape] not free +[scope_enter _] +[visit_id _] not free +[visit_id _] no dims +[scope_exit _] +[scope_exit shape] --- 1 --- [check_dims] shape --- 2 --- --- 3 --- --- 4 --- -[visit_id shape] -[visit_id _] not free -[visit_id _] no dims +[check_dims] shape +[scope_enter shape] +[visit_id shape] not free [visit_exp shape] [visit_id shape] not free +[scope_enter _] +[visit_id _] not free +[visit_id _] no dims +[scope_exit _] +[scope_exit shape] --- 1 --- [check_dims] shape --- 2 --- --- 3 --- --- 4 --- -[visit_id shape] -[visit_id _] not free -[visit_id _] no dims +[check_dims] shape +[scope_enter shape] +[visit_id shape] not free [visit_exp shape] [visit_id shape] not free +[scope_enter _] +[visit_id _] not free +[visit_id _] no dims +[scope_exit _] +[scope_exit shape] --- 1 --- [check_dims] shape --- 2 --- --- 3 --- --- 4 --- -[visit_id shape] +[check_dims] shape +[scope_enter shape] +[visit_id shape] not free +[visit_exp shape] +[visit_id shape] not free +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_exit _] +[scope_exit shape] +--- 1 --- +[check_dims] shape +--- 2 --- +--- 3 --- +--- 4 --- +[check_dims] shape +[scope_enter shape] +[visit_id shape] not free [visit_exp shape] [visit_id shape] not free +[scope_enter _] +[visit_id _] not free +[visit_id _] no dims +[scope_exit _] +[scope_exit shape] --- 1 --- [check_dims] shape --- 2 --- --- 3 --- --- 4 --- -[visit_id shape] +[check_dims] ishape +[scope_enter ishape] +[visit_id ishape] not free +[visit_exp ishape] +[visit_id ishape] not free +[scope_enter _] [visit_id _] not free [visit_id _] no dims -[visit_exp shape] -[visit_id shape] not free +[scope_exit _] +[scope_exit ishape] --- 1 --- [check_dims] ishape --- 2 --- --- 3 --- --- 4 --- -[visit_id ishape] -[visit_id _] not free -[visit_id _] no dims -[visit_exp ishape] +[check_dims] +[scope_enter ishape] [visit_id ishape] not free +[visit_id ishape] no dims +[scope_exit ishape] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id ishape] no dims -[visit_id ishape] +[check_dims] bshape +[scope_enter bshape] +[visit_id bshape] not free +[visit_exp bshape] +[visit_id bshape] not free +[scope_enter _] +[visit_id _] not free +[visit_id _] no dims +[scope_exit _] +[scope_exit bshape] --- 1 --- [check_dims] bshape --- 2 --- --- 3 --- --- 4 --- -[visit_id bshape] -[visit_id _] not free -[visit_id _] no dims -[visit_exp bshape] +[check_dims] +[scope_enter bshape] [visit_id bshape] not free +[visit_id bshape] no dims +[scope_enter laneidx*] +[visit_id laneidx*] not free +[visit_id laneidx*] no dims +[scope_exit laneidx*] +[scope_exit bshape] --- 1 --- -[check_dims] bshape i#1432 laneidx shape#109 +[check_dims] bshape laneidx --- 2 --- --- 3 --- --- 4 --- -[visit_id bshape] -[visit_id laneidx*] no dims -[visit_id laneidx*] -[visit_exp (`%`_dim{i#1432}(|laneidx*{laneidx <- `laneidx*`}|) = $dim(bshape!`%`_bshape{shape#109}.0))] -[visit_exp `%`_dim{i#1432}(|laneidx*{laneidx <- `laneidx*`}|)] -[visit_exp i#1432] -[visit_id i#1432] +[visit_exp (`%`_dim(|laneidx*{laneidx <- `laneidx*`}|) = $dim(bshape!`%`_bshape.0))] +[visit_exp `%`_dim(|laneidx*{laneidx <- `laneidx*`}|)] [visit_exp (|laneidx*{laneidx <- `laneidx*`}|)] [visit_exp |laneidx*{laneidx <- `laneidx*`}|] [visit_exp laneidx*{laneidx <- `laneidx*`}] @@ -14654,129 +14306,163 @@ DecD unpackshape(shape : shape) : numtype [visit_exp `laneidx*`] [visit_id laneidx*] not free [visit_id laneidx*] no dims -[visit_exp $dim(bshape!`%`_bshape{shape#109}.0)] -[visit_exp bshape!`%`_bshape{shape#109}.0] -[visit_exp bshape!`%`_bshape{shape#109}] +[visit_exp $dim(bshape!`%`_bshape.0)] +[visit_exp bshape!`%`_bshape.0] +[visit_exp bshape!`%`_bshape] [visit_exp bshape] [visit_id bshape] not free -[visit_exp shape#109] -[visit_id shape#109] ---- 1 --- [check_dims] ishape_1 ishape_2 ---- 2 --- ---- 3 --- ---- 4 --- -[visit_id ishape_1] -[visit_id ishape_2] -[visit_id _] not free -[visit_id _] no dims +[scope_enter ishape_1] +[visit_id ishape_1] not free +[scope_enter ishape_2] +[visit_id ishape_2] not free [visit_exp ishape_2] [visit_id ishape_2] not free [visit_exp ishape_1] [visit_id ishape_1] not free +[scope_enter _] +[visit_id _] not free +[visit_id _] no dims +[scope_exit _] +[scope_exit ishape_2] +[scope_exit ishape_1] --- 1 --- [check_dims] ishape_1 ishape_2 --- 2 --- --- 3 --- --- 4 --- -[visit_id ishape_1] -[visit_id ishape_2] -[visit_id _] not free -[visit_id _] no dims +[check_dims] ishape_1 ishape_2 +[scope_enter ishape_1] +[visit_id ishape_1] not free +[scope_enter ishape_2] +[visit_id ishape_2] not free [visit_exp ishape_2] [visit_id ishape_2] not free [visit_exp ishape_1] [visit_id ishape_1] not free +[scope_enter _] +[visit_id _] not free +[visit_id _] no dims +[scope_exit _] +[scope_exit ishape_2] +[scope_exit ishape_1] --- 1 --- [check_dims] ishape_1 ishape_2 --- 2 --- --- 3 --- --- 4 --- -[visit_id ishape_1] -[visit_id ishape_2] -[visit_id _] not free -[visit_id _] no dims +[check_dims] ishape_1 ishape_2 +[scope_enter ishape_1] +[visit_id ishape_1] not free +[scope_enter ishape_2] +[visit_id ishape_2] not free [visit_exp ishape_2] [visit_id ishape_2] not free [visit_exp ishape_1] [visit_id ishape_1] not free +[scope_enter _] +[visit_id _] not free +[visit_id _] no dims +[scope_exit _] +[scope_exit ishape_2] +[scope_exit ishape_1] --- 1 --- -[check_dims] Jnn#43 Jnn#44 Jnn#45 ishape_1 ishape_2 shape#147 shape#149 shape#151 +[check_dims] ishape_1 ishape_2 --- 2 --- --- 3 --- --- 4 --- -[visit_id ishape_1] -[visit_id ishape_2] +[check_dims] +[scope_enter ishape_1] +[visit_id ishape_1] not free +[visit_id ishape_1] no dims +[scope_enter ishape_2] +[visit_id ishape_2] not free +[visit_id ishape_2] no dims +[scope_enter sx] +[visit_id sx] not free [visit_id sx] no dims -[visit_id sx] -[visit_exp (($lsize($lanetype(ishape_2!`%`_ishape{shape#149, Jnn#44}.0)) = (2 * $lsize($lanetype(ishape_1!`%`_ishape{shape#147, Jnn#43}.0)))) /\ ((2 * $lsize($lanetype(ishape_1!`%`_ishape{shape#151, Jnn#45}.0))) <= 32))] -[visit_exp ($lsize($lanetype(ishape_2!`%`_ishape{shape#149, Jnn#44}.0)) = (2 * $lsize($lanetype(ishape_1!`%`_ishape{shape#147, Jnn#43}.0))))] -[visit_exp $lsize($lanetype(ishape_2!`%`_ishape{shape#149, Jnn#44}.0))] -[visit_exp $lanetype(ishape_2!`%`_ishape{shape#149, Jnn#44}.0)] -[visit_exp ishape_2!`%`_ishape{shape#149, Jnn#44}.0] -[visit_exp ishape_2!`%`_ishape{shape#149, Jnn#44}] +[scope_exit sx] +[scope_exit ishape_2] +[scope_exit ishape_1] +--- 1 --- +[check_dims] ishape_1 ishape_2 +--- 2 --- +--- 3 --- +--- 4 --- +[visit_exp (($lsize($lanetype(ishape_2!`%`_ishape.0)) = (2 * $lsize($lanetype(ishape_1!`%`_ishape.0)))) /\ ((2 * $lsize($lanetype(ishape_1!`%`_ishape.0))) <= 32))] +[visit_exp ($lsize($lanetype(ishape_2!`%`_ishape.0)) = (2 * $lsize($lanetype(ishape_1!`%`_ishape.0))))] +[visit_exp $lsize($lanetype(ishape_2!`%`_ishape.0))] +[visit_exp $lanetype(ishape_2!`%`_ishape.0)] +[visit_exp ishape_2!`%`_ishape.0] +[visit_exp ishape_2!`%`_ishape] [visit_exp ishape_2] [visit_id ishape_2] not free -[visit_exp shape#149] -[visit_id shape#149] -[visit_exp Jnn#44] -[visit_id Jnn#44] -[visit_exp (2 * $lsize($lanetype(ishape_1!`%`_ishape{shape#147, Jnn#43}.0)))] +[visit_exp (2 * $lsize($lanetype(ishape_1!`%`_ishape.0)))] [visit_exp 2] -[visit_exp $lsize($lanetype(ishape_1!`%`_ishape{shape#147, Jnn#43}.0))] -[visit_exp $lanetype(ishape_1!`%`_ishape{shape#147, Jnn#43}.0)] -[visit_exp ishape_1!`%`_ishape{shape#147, Jnn#43}.0] -[visit_exp ishape_1!`%`_ishape{shape#147, Jnn#43}] +[visit_exp $lsize($lanetype(ishape_1!`%`_ishape.0))] +[visit_exp $lanetype(ishape_1!`%`_ishape.0)] +[visit_exp ishape_1!`%`_ishape.0] +[visit_exp ishape_1!`%`_ishape] [visit_exp ishape_1] [visit_id ishape_1] not free -[visit_exp shape#147] -[visit_id shape#147] -[visit_exp Jnn#43] -[visit_id Jnn#43] -[visit_exp ((2 * $lsize($lanetype(ishape_1!`%`_ishape{shape#151, Jnn#45}.0))) <= 32)] -[visit_exp (2 * $lsize($lanetype(ishape_1!`%`_ishape{shape#151, Jnn#45}.0)))] +[visit_exp ((2 * $lsize($lanetype(ishape_1!`%`_ishape.0))) <= 32)] +[visit_exp (2 * $lsize($lanetype(ishape_1!`%`_ishape.0)))] [visit_exp 2] -[visit_exp $lsize($lanetype(ishape_1!`%`_ishape{shape#151, Jnn#45}.0))] -[visit_exp $lanetype(ishape_1!`%`_ishape{shape#151, Jnn#45}.0)] -[visit_exp ishape_1!`%`_ishape{shape#151, Jnn#45}.0] -[visit_exp ishape_1!`%`_ishape{shape#151, Jnn#45}] +[visit_exp $lsize($lanetype(ishape_1!`%`_ishape.0))] +[visit_exp $lanetype(ishape_1!`%`_ishape.0)] +[visit_exp ishape_1!`%`_ishape.0] +[visit_exp ishape_1!`%`_ishape] [visit_exp ishape_1] [visit_id ishape_1] not free -[visit_exp shape#151] -[visit_id shape#151] -[visit_exp Jnn#45] -[visit_id Jnn#45] [visit_exp 32] ---- 1 --- [check_dims] shape_1 shape_2 ---- 2 --- ---- 3 --- ---- 4 --- -[visit_id shape_1] -[visit_id shape_2] -[visit_id _] not free -[visit_id _] no dims +[scope_enter shape_1] +[visit_id shape_1] not free +[scope_enter shape_2] +[visit_id shape_2] not free [visit_exp shape_2] [visit_id shape_2] not free [visit_exp shape_1] [visit_id shape_1] not free +[scope_enter _] +[visit_id _] not free +[visit_id _] no dims +[scope_exit _] +[scope_exit shape_2] +[scope_exit shape_1] --- 1 --- -[check_dims] +[check_dims] shape_1 shape_2 --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter shape] +[visit_id shape] not free [visit_id shape] no dims -[visit_id shape] +[scope_exit shape] --- 1 --- -[check_dims] shape sx +[check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id shape] +[check_dims] +[scope_enter shape] +[visit_id shape] not free +[visit_id shape] no dims +[scope_enter sx?] +[visit_id sx?] not free [visit_id sx?] no dims -[visit_id sx?] +[scope_enter laneidx] +[visit_id laneidx] not free [visit_id laneidx] no dims -[visit_id laneidx] +[scope_exit laneidx] +[scope_exit sx?] +[scope_exit shape] +--- 1 --- +[check_dims] shape sx +--- 2 --- +--- 3 --- +--- 4 --- [visit_exp ((sx?{sx <- `sx?`} = ?()) <=> ($lanetype(shape) <- [`I32`_lanetype `I64`_lanetype `F32`_lanetype `F64`_lanetype]))] [visit_exp (sx?{sx <- `sx?`} = ?())] [visit_exp sx?{sx <- `sx?`}] @@ -14802,39 +14488,36 @@ DecD unpackshape(shape : shape) : numtype [visit_exp ()] [visit_exp `F64`_lanetype] [visit_exp ()] +[check_dims] +[scope_enter shape] +[visit_id shape] not free +[visit_id shape] no dims +[scope_enter laneidx] +[visit_id laneidx] not free +[visit_id laneidx] no dims +[scope_exit laneidx] +[scope_exit shape] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id shape] no dims -[visit_id shape] -[visit_id laneidx] no dims -[visit_id laneidx] [check_dims] [check_dims] [check_dims] [check_dims] DecD memarg0 : memarg -[check_dims] i#1467 i#1487 u32#1 u64#37 -[visit_exp {`ALIGN`{u32#1} `%`_u32{i#1467}(0), `OFFSET`{u64#37} `%`_u64{i#1487}(0)}] -[visit_exp u32#1] -[visit_id u32#1] -[visit_exp `%`_u32{i#1467}(0)] -[visit_exp i#1467] -[visit_id i#1467] +[check_dims] +[visit_exp {`ALIGN` `%`_u32(0), `OFFSET` `%`_u64(0)}] +[visit_exp `%`_u32(0)] [visit_exp (0)] [visit_exp 0] -[visit_exp u64#37] -[visit_id u64#37] -[visit_exp `%`_u64{i#1487}(0)] -[visit_exp i#1487] -[visit_id i#1487] +[visit_exp `%`_u64(0)] [visit_exp (0)] [visit_exp 0] => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $memarg0{u32#1 : u32, i#1467 : nat, u64#37 : u64, i#1487 : nat} = {`ALIGN`{u32#1} `%`_u32{i#1467}(0), `OFFSET`{u64#37} `%`_u64{i#1487}(0)} + def $memarg0 = {`ALIGN` `%`_u32(0), `OFFSET` `%`_u64(0)} [check_dims] consttype lit_ DecD const(consttype : consttype, lit_ : lit_((consttype : consttype <: storagetype))) : instr [visit_id consttype] not free @@ -14842,15 +14525,13 @@ DecD const(consttype : consttype, lit_ : lit_((consttype : consttype <: storaget [visit_exp (consttype : consttype <: storagetype)] [visit_exp consttype] [visit_id consttype] not free -[check_dims] c numtype numtype#1 +[check_dims] c numtype [visit_exp (numtype : numtype <: consttype)] [visit_exp numtype] [visit_id numtype] [visit_exp c] [visit_id c] -[visit_exp `CONST`_instr{numtype#1}(numtype, c)] -[visit_exp numtype#1] -[visit_id numtype#1] +[visit_exp `CONST`_instr(numtype, c)] [visit_exp (numtype, c)] [visit_exp numtype] [visit_id numtype] not free @@ -14858,16 +14539,14 @@ DecD const(consttype : consttype, lit_ : lit_((consttype : consttype <: storaget [visit_id c] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $const{numtype : numtype, c : lit_(((numtype : numtype <: consttype) : consttype <: storagetype)), numtype#1 : numtype}((numtype : numtype <: consttype), c) = `CONST`_instr{numtype#1}(numtype, c) -[check_dims] c vectype vectype#1 + def $const{numtype : numtype, c : lit_(((numtype : numtype <: consttype) : consttype <: storagetype))}((numtype : numtype <: consttype), c) = `CONST`_instr(numtype, c) +[check_dims] c vectype [visit_exp (vectype : vectype <: consttype)] [visit_exp vectype] [visit_id vectype] [visit_exp c] [visit_id c] -[visit_exp `VCONST`_instr{vectype#1}(vectype, c)] -[visit_exp vectype#1] -[visit_id vectype#1] +[visit_exp `VCONST`_instr(vectype, c)] [visit_exp (vectype, c)] [visit_exp vectype] [visit_id vectype] not free @@ -14875,7 +14554,7 @@ DecD const(consttype : consttype, lit_ : lit_((consttype : consttype <: storaget [visit_id c] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $const{vectype : vectype, c : lit_(((vectype : vectype <: consttype) : consttype <: storagetype)), vectype#1 : vectype}((vectype : vectype <: consttype), c) = `VCONST`_instr{vectype#1}(vectype, c) + def $const{vectype : vectype, c : lit_(((vectype : vectype <: consttype) : consttype <: storagetype))}((vectype : vectype <: consttype), c) = `VCONST`_instr(vectype, c) [check_dims] shape DecD free_shape(shape : shape) : free [visit_id shape] not free @@ -14891,14 +14570,8 @@ DecD free_block(instr*) : free [check_dims] expr DecD free_expr(expr : expr) : free [visit_id expr] not free -[check_dims] dim dim#445 i#1518 lanetype lanetype#445 -[visit_exp `%X%`_shape{lanetype#445, dim#445, i#1518}(lanetype, dim)] -[visit_exp lanetype#445] -[visit_id lanetype#445] -[visit_exp dim#445] -[visit_id dim#445] -[visit_exp i#1518] -[visit_id i#1518] +[check_dims] dim lanetype +[visit_exp `%X%`_shape(lanetype, dim)] [visit_exp (lanetype, dim)] [visit_exp lanetype] [visit_id lanetype] @@ -14909,11 +14582,9 @@ DecD free_expr(expr : expr) : free [visit_id lanetype] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_shape{lanetype#445 : lanetype, dim#445 : dim, i#1518 : nat, lanetype : lanetype, dim : dim}(`%X%`_shape{lanetype#445, dim#445, i#1518}(lanetype, dim)) = $free_lanetype(lanetype) -[check_dims] valtype valtype?#1 -[visit_exp `_RESULT`_blocktype{`valtype?#1`}(valtype?{valtype <- `valtype?`})] -[visit_exp `valtype?#1`] -[visit_id valtype?#1] + def $free_shape{lanetype : lanetype, dim : dim}(`%X%`_shape(lanetype, dim)) = $free_lanetype(lanetype) +[check_dims] valtype +[visit_exp `_RESULT`_blocktype(valtype?{valtype <- `valtype?`})] [visit_exp (valtype?{valtype <- `valtype?`})] [visit_exp valtype?{valtype <- `valtype?`}] [scope_enter valtype] @@ -14937,11 +14608,9 @@ DecD free_expr(expr : expr) : free [visit_id valtype?] no dims => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_blocktype{`valtype?#1` : valtype?, `valtype?` : valtype?}(`_RESULT`_blocktype{`valtype?#1`}(valtype?{valtype <- `valtype?`})) = $free_opt($free_valtype(valtype)?{valtype <- `valtype?`}) -[check_dims] typeidx typeidx#27 -[visit_exp `_IDX`_blocktype{typeidx#27}(typeidx)] -[visit_exp typeidx#27] -[visit_id typeidx#27] + def $free_blocktype{`valtype?` : valtype?}(`_RESULT`_blocktype(valtype?{valtype <- `valtype?`})) = $free_opt($free_valtype(valtype)?{valtype <- `valtype?`}) +[check_dims] typeidx +[visit_exp `_IDX`_blocktype(typeidx)] [visit_exp (typeidx)] [visit_exp typeidx] [visit_id typeidx] @@ -14950,113 +14619,57 @@ DecD free_expr(expr : expr) : free [visit_id typeidx] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_blocktype{typeidx#27 : typeidx, typeidx : typeidx}(`_IDX`_blocktype{typeidx#27}(typeidx)) = $free_typeidx(typeidx) -[check_dims] dataidx*#20 elemidx*#20 funcidx*#20 globalidx*#20 labelidx*#20 localidx*#20 memidx*#20 tableidx*#20 typeidx*#20 + def $free_blocktype{typeidx : typeidx}(`_IDX`_blocktype(typeidx)) = $free_typeidx(typeidx) +[check_dims] [visit_exp `NOP`_instr] [visit_exp ()] -[visit_exp {`TYPES`{`typeidx*#20`} [], `FUNCS`{`funcidx*#20`} [], `GLOBALS`{`globalidx*#20`} [], `TABLES`{`tableidx*#20`} [], `MEMS`{`memidx*#20`} [], `ELEMS`{`elemidx*#20`} [], `DATAS`{`dataidx*#20`} [], `LOCALS`{`localidx*#20`} [], `LABELS`{`labelidx*#20`} []}] -[visit_exp `typeidx*#20`] -[visit_id typeidx*#20] +[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] [visit_exp []] -[visit_exp `funcidx*#20`] -[visit_id funcidx*#20] [visit_exp []] -[visit_exp `globalidx*#20`] -[visit_id globalidx*#20] [visit_exp []] -[visit_exp `tableidx*#20`] -[visit_id tableidx*#20] [visit_exp []] -[visit_exp `memidx*#20`] -[visit_id memidx*#20] [visit_exp []] -[visit_exp `elemidx*#20`] -[visit_id elemidx*#20] [visit_exp []] -[visit_exp `dataidx*#20`] -[visit_id dataidx*#20] [visit_exp []] -[visit_exp `localidx*#20`] -[visit_id localidx*#20] [visit_exp []] -[visit_exp `labelidx*#20`] -[visit_id labelidx*#20] [visit_exp []] => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{`typeidx*#20` : typeidx*, `funcidx*#20` : funcidx*, `globalidx*#20` : globalidx*, `tableidx*#20` : tableidx*, `memidx*#20` : memidx*, `elemidx*#20` : elemidx*, `dataidx*#20` : dataidx*, `localidx*#20` : localidx*, `labelidx*#20` : labelidx*}(`NOP`_instr) = {`TYPES`{`typeidx*#20`} [], `FUNCS`{`funcidx*#20`} [], `GLOBALS`{`globalidx*#20`} [], `TABLES`{`tableidx*#20`} [], `MEMS`{`memidx*#20`} [], `ELEMS`{`elemidx*#20`} [], `DATAS`{`dataidx*#20`} [], `LOCALS`{`localidx*#20`} [], `LABELS`{`labelidx*#20`} []} -[check_dims] dataidx*#21 elemidx*#21 funcidx*#21 globalidx*#21 labelidx*#21 localidx*#21 memidx*#21 tableidx*#21 typeidx*#21 + def $free_instr(`NOP`_instr) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} +[check_dims] [visit_exp `UNREACHABLE`_instr] [visit_exp ()] -[visit_exp {`TYPES`{`typeidx*#21`} [], `FUNCS`{`funcidx*#21`} [], `GLOBALS`{`globalidx*#21`} [], `TABLES`{`tableidx*#21`} [], `MEMS`{`memidx*#21`} [], `ELEMS`{`elemidx*#21`} [], `DATAS`{`dataidx*#21`} [], `LOCALS`{`localidx*#21`} [], `LABELS`{`labelidx*#21`} []}] -[visit_exp `typeidx*#21`] -[visit_id typeidx*#21] +[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] [visit_exp []] -[visit_exp `funcidx*#21`] -[visit_id funcidx*#21] [visit_exp []] -[visit_exp `globalidx*#21`] -[visit_id globalidx*#21] [visit_exp []] -[visit_exp `tableidx*#21`] -[visit_id tableidx*#21] [visit_exp []] -[visit_exp `memidx*#21`] -[visit_id memidx*#21] [visit_exp []] -[visit_exp `elemidx*#21`] -[visit_id elemidx*#21] [visit_exp []] -[visit_exp `dataidx*#21`] -[visit_id dataidx*#21] [visit_exp []] -[visit_exp `localidx*#21`] -[visit_id localidx*#21] [visit_exp []] -[visit_exp `labelidx*#21`] -[visit_id labelidx*#21] [visit_exp []] => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{`typeidx*#21` : typeidx*, `funcidx*#21` : funcidx*, `globalidx*#21` : globalidx*, `tableidx*#21` : tableidx*, `memidx*#21` : memidx*, `elemidx*#21` : elemidx*, `dataidx*#21` : dataidx*, `localidx*#21` : localidx*, `labelidx*#21` : labelidx*}(`UNREACHABLE`_instr) = {`TYPES`{`typeidx*#21`} [], `FUNCS`{`funcidx*#21`} [], `GLOBALS`{`globalidx*#21`} [], `TABLES`{`tableidx*#21`} [], `MEMS`{`memidx*#21`} [], `ELEMS`{`elemidx*#21`} [], `DATAS`{`dataidx*#21`} [], `LOCALS`{`localidx*#21`} [], `LABELS`{`labelidx*#21`} []} -[check_dims] dataidx*#22 elemidx*#22 funcidx*#22 globalidx*#22 labelidx*#22 localidx*#22 memidx*#22 tableidx*#22 typeidx*#22 + def $free_instr(`UNREACHABLE`_instr) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} +[check_dims] [visit_exp `DROP`_instr] [visit_exp ()] -[visit_exp {`TYPES`{`typeidx*#22`} [], `FUNCS`{`funcidx*#22`} [], `GLOBALS`{`globalidx*#22`} [], `TABLES`{`tableidx*#22`} [], `MEMS`{`memidx*#22`} [], `ELEMS`{`elemidx*#22`} [], `DATAS`{`dataidx*#22`} [], `LOCALS`{`localidx*#22`} [], `LABELS`{`labelidx*#22`} []}] -[visit_exp `typeidx*#22`] -[visit_id typeidx*#22] +[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] [visit_exp []] -[visit_exp `funcidx*#22`] -[visit_id funcidx*#22] [visit_exp []] -[visit_exp `globalidx*#22`] -[visit_id globalidx*#22] [visit_exp []] -[visit_exp `tableidx*#22`] -[visit_id tableidx*#22] [visit_exp []] -[visit_exp `memidx*#22`] -[visit_id memidx*#22] [visit_exp []] -[visit_exp `elemidx*#22`] -[visit_id elemidx*#22] [visit_exp []] -[visit_exp `dataidx*#22`] -[visit_id dataidx*#22] [visit_exp []] -[visit_exp `localidx*#22`] -[visit_id localidx*#22] [visit_exp []] -[visit_exp `labelidx*#22`] -[visit_id labelidx*#22] [visit_exp []] => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{`typeidx*#22` : typeidx*, `funcidx*#22` : funcidx*, `globalidx*#22` : globalidx*, `tableidx*#22` : tableidx*, `memidx*#22` : memidx*, `elemidx*#22` : elemidx*, `dataidx*#22` : dataidx*, `localidx*#22` : localidx*, `labelidx*#22` : labelidx*}(`DROP`_instr) = {`TYPES`{`typeidx*#22`} [], `FUNCS`{`funcidx*#22`} [], `GLOBALS`{`globalidx*#22`} [], `TABLES`{`tableidx*#22`} [], `MEMS`{`memidx*#22`} [], `ELEMS`{`elemidx*#22`} [], `DATAS`{`dataidx*#22`} [], `LOCALS`{`localidx*#22`} [], `LABELS`{`labelidx*#22`} []} -[check_dims] valtype valtype*?#1 -[visit_exp `SELECT`_instr{`valtype*?#1`}(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})] -[visit_exp `valtype*?#1`] -[visit_id valtype*?#1] + def $free_instr(`DROP`_instr) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} +[check_dims] valtype +[visit_exp `SELECT`_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})] [visit_exp (valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})] [visit_exp valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`}] [scope_enter valtype*] @@ -15097,13 +14710,9 @@ DecD free_expr(expr : expr) : free [visit_id valtype*?] no dims => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{`valtype*?#1` : valtype*?, `valtype*?` : valtype*?}(`SELECT`_instr{`valtype*?#1`}(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) -[check_dims] blocktype blocktype#1 instr instr*#1 -[visit_exp `BLOCK`_instr{blocktype#1, `instr*#1`}(blocktype, instr*{instr <- `instr*`})] -[visit_exp blocktype#1] -[visit_id blocktype#1] -[visit_exp `instr*#1`] -[visit_id instr*#1] + def $free_instr{`valtype*?` : valtype*?}(`SELECT`_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) +[check_dims] blocktype instr +[visit_exp `BLOCK`_instr(blocktype, instr*{instr <- `instr*`})] [visit_exp (blocktype, instr*{instr <- `instr*`})] [visit_exp blocktype] [visit_id blocktype] @@ -15132,13 +14741,9 @@ DecD free_expr(expr : expr) : free [visit_id instr*] no dims => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{blocktype#1 : blocktype, `instr*#1` : instr*, blocktype : blocktype, `instr*` : instr*}(`BLOCK`_instr{blocktype#1, `instr*#1`}(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) -[check_dims] blocktype blocktype#3 instr instr*#3 -[visit_exp `LOOP`_instr{blocktype#3, `instr*#3`}(blocktype, instr*{instr <- `instr*`})] -[visit_exp blocktype#3] -[visit_id blocktype#3] -[visit_exp `instr*#3`] -[visit_id instr*#3] + def $free_instr{blocktype : blocktype, `instr*` : instr*}(`BLOCK`_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) +[check_dims] blocktype instr +[visit_exp `LOOP`_instr(blocktype, instr*{instr <- `instr*`})] [visit_exp (blocktype, instr*{instr <- `instr*`})] [visit_exp blocktype] [visit_id blocktype] @@ -15167,13 +14772,9 @@ DecD free_expr(expr : expr) : free [visit_id instr*] no dims => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{blocktype#3 : blocktype, `instr*#3` : instr*, blocktype : blocktype, `instr*` : instr*}(`LOOP`_instr{blocktype#3, `instr*#3`}(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) -[check_dims] blocktype blocktype#5 instr*#5 instr_1 instr_2 -[visit_exp `IF%%ELSE%`_instr{blocktype#5, `instr*#5`}(blocktype, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})] -[visit_exp blocktype#5] -[visit_id blocktype#5] -[visit_exp `instr*#5`] -[visit_id instr*#5] + def $free_instr{blocktype : blocktype, `instr*` : instr*}(`LOOP`_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) +[check_dims] blocktype instr_1 instr_2 +[visit_exp `IF%%ELSE%`_instr(blocktype, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})] [visit_exp (blocktype, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})] [visit_exp blocktype] [visit_id blocktype] @@ -15222,11 +14823,9 @@ DecD free_expr(expr : expr) : free [visit_id instr_2*] no dims => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{blocktype#5 : blocktype, `instr*#5` : instr*, blocktype : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}(`IF%%ELSE%`_instr{blocktype#5, `instr*#5`}(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*`}) -[check_dims] labelidx labelidx#1 -[visit_exp `BR`_instr{labelidx#1}(labelidx)] -[visit_exp labelidx#1] -[visit_id labelidx#1] + 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*`}) +[check_dims] labelidx +[visit_exp `BR`_instr(labelidx)] [visit_exp (labelidx)] [visit_exp labelidx] [visit_id labelidx] @@ -15235,11 +14834,9 @@ DecD free_expr(expr : expr) : free [visit_id labelidx] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{labelidx#1 : labelidx, labelidx : labelidx}(`BR`_instr{labelidx#1}(labelidx)) = $free_labelidx(labelidx) -[check_dims] labelidx labelidx#3 -[visit_exp `BR_IF`_instr{labelidx#3}(labelidx)] -[visit_exp labelidx#3] -[visit_id labelidx#3] + def $free_instr{labelidx : labelidx}(`BR`_instr(labelidx)) = $free_labelidx(labelidx) +[check_dims] labelidx +[visit_exp `BR_IF`_instr(labelidx)] [visit_exp (labelidx)] [visit_exp labelidx] [visit_id labelidx] @@ -15248,13 +14845,9 @@ DecD free_expr(expr : expr) : free [visit_id labelidx] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{labelidx#3 : labelidx, labelidx : labelidx}(`BR_IF`_instr{labelidx#3}(labelidx)) = $free_labelidx(labelidx) -[check_dims] labelidx labelidx#5 labelidx' labelidx*#23 -[visit_exp `BR_TABLE`_instr{`labelidx*#23`, labelidx#5}(labelidx*{labelidx <- `labelidx*`}, labelidx')] -[visit_exp `labelidx*#23`] -[visit_id labelidx*#23] -[visit_exp labelidx#5] -[visit_id labelidx#5] + def $free_instr{labelidx : labelidx}(`BR_IF`_instr(labelidx)) = $free_labelidx(labelidx) +[check_dims] labelidx labelidx' +[visit_exp `BR_TABLE`_instr(labelidx*{labelidx <- `labelidx*`}, labelidx')] [visit_exp (labelidx*{labelidx <- `labelidx*`}, labelidx')] [visit_exp labelidx*{labelidx <- `labelidx*`}] [scope_enter labelidx] @@ -15284,11 +14877,9 @@ DecD free_expr(expr : expr) : free [visit_id labelidx'] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{`labelidx*#23` : labelidx*, labelidx#5 : labelidx, `labelidx*` : labelidx*, labelidx' : labelidx}(`BR_TABLE`_instr{`labelidx*#23`, labelidx#5}(labelidx*{labelidx <- `labelidx*`}, labelidx')) = $free_list($free_labelidx(labelidx)*{labelidx <- `labelidx*`}) +++ $free_labelidx(labelidx') -[check_dims] labelidx labelidx#7 -[visit_exp `BR_ON_NULL`_instr{labelidx#7}(labelidx)] -[visit_exp labelidx#7] -[visit_id labelidx#7] + def $free_instr{`labelidx*` : labelidx*, labelidx' : labelidx}(`BR_TABLE`_instr(labelidx*{labelidx <- `labelidx*`}, labelidx')) = $free_list($free_labelidx(labelidx)*{labelidx <- `labelidx*`}) +++ $free_labelidx(labelidx') +[check_dims] labelidx +[visit_exp `BR_ON_NULL`_instr(labelidx)] [visit_exp (labelidx)] [visit_exp labelidx] [visit_id labelidx] @@ -15297,11 +14888,9 @@ DecD free_expr(expr : expr) : free [visit_id labelidx] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{labelidx#7 : labelidx, labelidx : labelidx}(`BR_ON_NULL`_instr{labelidx#7}(labelidx)) = $free_labelidx(labelidx) -[check_dims] labelidx labelidx#9 -[visit_exp `BR_ON_NON_NULL`_instr{labelidx#9}(labelidx)] -[visit_exp labelidx#9] -[visit_id labelidx#9] + def $free_instr{labelidx : labelidx}(`BR_ON_NULL`_instr(labelidx)) = $free_labelidx(labelidx) +[check_dims] labelidx +[visit_exp `BR_ON_NON_NULL`_instr(labelidx)] [visit_exp (labelidx)] [visit_exp labelidx] [visit_id labelidx] @@ -15310,13 +14899,9 @@ DecD free_expr(expr : expr) : free [visit_id labelidx] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{labelidx#9 : labelidx, labelidx : labelidx}(`BR_ON_NON_NULL`_instr{labelidx#9}(labelidx)) = $free_labelidx(labelidx) -[check_dims] labelidx labelidx#11 reftype#125 reftype_1 reftype_2 -[visit_exp `BR_ON_CAST`_instr{labelidx#11, reftype#125}(labelidx, reftype_1, reftype_2)] -[visit_exp labelidx#11] -[visit_id labelidx#11] -[visit_exp reftype#125] -[visit_id reftype#125] + def $free_instr{labelidx : labelidx}(`BR_ON_NON_NULL`_instr(labelidx)) = $free_labelidx(labelidx) +[check_dims] labelidx reftype_1 reftype_2 +[visit_exp `BR_ON_CAST`_instr(labelidx, reftype_1, reftype_2)] [visit_exp (labelidx, reftype_1, reftype_2)] [visit_exp labelidx] [visit_id labelidx] @@ -15337,13 +14922,9 @@ DecD free_expr(expr : expr) : free [visit_id reftype_2] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{labelidx#11 : labelidx, reftype#125 : reftype, labelidx : labelidx, reftype_1 : reftype, reftype_2 : reftype}(`BR_ON_CAST`_instr{labelidx#11, reftype#125}(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) -[check_dims] labelidx labelidx#13 reftype#128 reftype_1 reftype_2 -[visit_exp `BR_ON_CAST_FAIL`_instr{labelidx#13, reftype#128}(labelidx, reftype_1, reftype_2)] -[visit_exp labelidx#13] -[visit_id labelidx#13] -[visit_exp reftype#128] -[visit_id reftype#128] + 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) +[check_dims] labelidx reftype_1 reftype_2 +[visit_exp `BR_ON_CAST_FAIL`_instr(labelidx, reftype_1, reftype_2)] [visit_exp (labelidx, reftype_1, reftype_2)] [visit_exp labelidx] [visit_id labelidx] @@ -15364,11 +14945,9 @@ DecD free_expr(expr : expr) : free [visit_id reftype_2] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{labelidx#13 : labelidx, reftype#128 : reftype, labelidx : labelidx, reftype_1 : reftype, reftype_2 : reftype}(`BR_ON_CAST_FAIL`_instr{labelidx#13, reftype#128}(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) -[check_dims] funcidx funcidx#5 -[visit_exp `CALL`_instr{funcidx#5}(funcidx)] -[visit_exp funcidx#5] -[visit_id funcidx#5] + 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) +[check_dims] funcidx +[visit_exp `CALL`_instr(funcidx)] [visit_exp (funcidx)] [visit_exp funcidx] [visit_id funcidx] @@ -15377,11 +14956,9 @@ DecD free_expr(expr : expr) : free [visit_id funcidx] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{funcidx#5 : funcidx, funcidx : funcidx}(`CALL`_instr{funcidx#5}(funcidx)) = $free_funcidx(funcidx) -[check_dims] typeuse typeuse#9 -[visit_exp `CALL_REF`_instr{typeuse#9}(typeuse)] -[visit_exp typeuse#9] -[visit_id typeuse#9] + def $free_instr{funcidx : funcidx}(`CALL`_instr(funcidx)) = $free_funcidx(funcidx) +[check_dims] typeuse +[visit_exp `CALL_REF`_instr(typeuse)] [visit_exp (typeuse)] [visit_exp typeuse] [visit_id typeuse] @@ -15390,13 +14967,9 @@ DecD free_expr(expr : expr) : free [visit_id typeuse] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{typeuse#9 : typeuse, typeuse : typeuse}(`CALL_REF`_instr{typeuse#9}(typeuse)) = $free_typeuse(typeuse) -[check_dims] tableidx tableidx#5 typeuse typeuse#11 -[visit_exp `CALL_INDIRECT`_instr{tableidx#5, typeuse#11}(tableidx, typeuse)] -[visit_exp tableidx#5] -[visit_id tableidx#5] -[visit_exp typeuse#11] -[visit_id typeuse#11] + def $free_instr{typeuse : typeuse}(`CALL_REF`_instr(typeuse)) = $free_typeuse(typeuse) +[check_dims] tableidx typeuse +[visit_exp `CALL_INDIRECT`_instr(tableidx, typeuse)] [visit_exp (tableidx, typeuse)] [visit_exp tableidx] [visit_id tableidx] @@ -15411,45 +14984,25 @@ DecD free_expr(expr : expr) : free [visit_id typeuse] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{tableidx#5 : tableidx, typeuse#11 : typeuse, tableidx : tableidx, typeuse : typeuse}(`CALL_INDIRECT`_instr{tableidx#5, typeuse#11}(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) -[check_dims] dataidx*#23 elemidx*#23 funcidx*#23 globalidx*#23 labelidx*#25 localidx*#23 memidx*#23 tableidx*#23 typeidx*#23 + def $free_instr{tableidx : tableidx, typeuse : typeuse}(`CALL_INDIRECT`_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) +[check_dims] [visit_exp `RETURN`_instr] [visit_exp ()] -[visit_exp {`TYPES`{`typeidx*#23`} [], `FUNCS`{`funcidx*#23`} [], `GLOBALS`{`globalidx*#23`} [], `TABLES`{`tableidx*#23`} [], `MEMS`{`memidx*#23`} [], `ELEMS`{`elemidx*#23`} [], `DATAS`{`dataidx*#23`} [], `LOCALS`{`localidx*#23`} [], `LABELS`{`labelidx*#25`} []}] -[visit_exp `typeidx*#23`] -[visit_id typeidx*#23] +[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] [visit_exp []] -[visit_exp `funcidx*#23`] -[visit_id funcidx*#23] [visit_exp []] -[visit_exp `globalidx*#23`] -[visit_id globalidx*#23] [visit_exp []] -[visit_exp `tableidx*#23`] -[visit_id tableidx*#23] [visit_exp []] -[visit_exp `memidx*#23`] -[visit_id memidx*#23] [visit_exp []] -[visit_exp `elemidx*#23`] -[visit_id elemidx*#23] [visit_exp []] -[visit_exp `dataidx*#23`] -[visit_id dataidx*#23] [visit_exp []] -[visit_exp `localidx*#23`] -[visit_id localidx*#23] [visit_exp []] -[visit_exp `labelidx*#25`] -[visit_id labelidx*#25] [visit_exp []] => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{`typeidx*#23` : typeidx*, `funcidx*#23` : funcidx*, `globalidx*#23` : globalidx*, `tableidx*#23` : tableidx*, `memidx*#23` : memidx*, `elemidx*#23` : elemidx*, `dataidx*#23` : dataidx*, `localidx*#23` : localidx*, `labelidx*#25` : labelidx*}(`RETURN`_instr) = {`TYPES`{`typeidx*#23`} [], `FUNCS`{`funcidx*#23`} [], `GLOBALS`{`globalidx*#23`} [], `TABLES`{`tableidx*#23`} [], `MEMS`{`memidx*#23`} [], `ELEMS`{`elemidx*#23`} [], `DATAS`{`dataidx*#23`} [], `LOCALS`{`localidx*#23`} [], `LABELS`{`labelidx*#25`} []} -[check_dims] funcidx funcidx#7 -[visit_exp `RETURN_CALL`_instr{funcidx#7}(funcidx)] -[visit_exp funcidx#7] -[visit_id funcidx#7] + def $free_instr(`RETURN`_instr) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} +[check_dims] funcidx +[visit_exp `RETURN_CALL`_instr(funcidx)] [visit_exp (funcidx)] [visit_exp funcidx] [visit_id funcidx] @@ -15458,11 +15011,9 @@ DecD free_expr(expr : expr) : free [visit_id funcidx] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{funcidx#7 : funcidx, funcidx : funcidx}(`RETURN_CALL`_instr{funcidx#7}(funcidx)) = $free_funcidx(funcidx) -[check_dims] typeuse typeuse#13 -[visit_exp `RETURN_CALL_REF`_instr{typeuse#13}(typeuse)] -[visit_exp typeuse#13] -[visit_id typeuse#13] + def $free_instr{funcidx : funcidx}(`RETURN_CALL`_instr(funcidx)) = $free_funcidx(funcidx) +[check_dims] typeuse +[visit_exp `RETURN_CALL_REF`_instr(typeuse)] [visit_exp (typeuse)] [visit_exp typeuse] [visit_id typeuse] @@ -15471,13 +15022,9 @@ DecD free_expr(expr : expr) : free [visit_id typeuse] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{typeuse#13 : typeuse, typeuse : typeuse}(`RETURN_CALL_REF`_instr{typeuse#13}(typeuse)) = $free_typeuse(typeuse) -[check_dims] tableidx tableidx#7 typeuse typeuse#15 -[visit_exp `RETURN_CALL_INDIRECT`_instr{tableidx#7, typeuse#15}(tableidx, typeuse)] -[visit_exp tableidx#7] -[visit_id tableidx#7] -[visit_exp typeuse#15] -[visit_id typeuse#15] + def $free_instr{typeuse : typeuse}(`RETURN_CALL_REF`_instr(typeuse)) = $free_typeuse(typeuse) +[check_dims] tableidx typeuse +[visit_exp `RETURN_CALL_INDIRECT`_instr(tableidx, typeuse)] [visit_exp (tableidx, typeuse)] [visit_exp tableidx] [visit_id tableidx] @@ -15492,11 +15039,9 @@ DecD free_expr(expr : expr) : free [visit_id typeuse] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{tableidx#7 : tableidx, typeuse#15 : typeuse, tableidx : tableidx, typeuse : typeuse}(`RETURN_CALL_INDIRECT`_instr{tableidx#7, typeuse#15}(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) -[check_dims] numlit numtype numtype#3 -[visit_exp `CONST`_instr{numtype#3}(numtype, numlit)] -[visit_exp numtype#3] -[visit_id numtype#3] + def $free_instr{tableidx : tableidx, typeuse : typeuse}(`RETURN_CALL_INDIRECT`_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) +[check_dims] numlit numtype +[visit_exp `CONST`_instr(numtype, numlit)] [visit_exp (numtype, numlit)] [visit_exp numtype] [visit_id numtype] @@ -15507,11 +15052,9 @@ DecD free_expr(expr : expr) : free [visit_id numtype] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{numtype#3 : numtype, numtype : numtype, numlit : num_(numtype)}(`CONST`_instr{numtype#3}(numtype, numlit)) = $free_numtype(numtype) -[check_dims] numtype numtype#5 unop -[visit_exp `UNOP`_instr{numtype#5}(numtype, unop)] -[visit_exp numtype#5] -[visit_id numtype#5] + def $free_instr{numtype : numtype, numlit : num_(numtype)}(`CONST`_instr(numtype, numlit)) = $free_numtype(numtype) +[check_dims] numtype unop +[visit_exp `UNOP`_instr(numtype, unop)] [visit_exp (numtype, unop)] [visit_exp numtype] [visit_id numtype] @@ -15522,11 +15065,9 @@ DecD free_expr(expr : expr) : free [visit_id numtype] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{numtype#5 : numtype, numtype : numtype, unop : unop_(numtype)}(`UNOP`_instr{numtype#5}(numtype, unop)) = $free_numtype(numtype) -[check_dims] binop numtype numtype#7 -[visit_exp `BINOP`_instr{numtype#7}(numtype, binop)] -[visit_exp numtype#7] -[visit_id numtype#7] + def $free_instr{numtype : numtype, unop : unop_(numtype)}(`UNOP`_instr(numtype, unop)) = $free_numtype(numtype) +[check_dims] binop numtype +[visit_exp `BINOP`_instr(numtype, binop)] [visit_exp (numtype, binop)] [visit_exp numtype] [visit_id numtype] @@ -15537,11 +15078,9 @@ DecD free_expr(expr : expr) : free [visit_id numtype] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{numtype#7 : numtype, numtype : numtype, binop : binop_(numtype)}(`BINOP`_instr{numtype#7}(numtype, binop)) = $free_numtype(numtype) -[check_dims] numtype numtype#9 testop -[visit_exp `TESTOP`_instr{numtype#9}(numtype, testop)] -[visit_exp numtype#9] -[visit_id numtype#9] + def $free_instr{numtype : numtype, binop : binop_(numtype)}(`BINOP`_instr(numtype, binop)) = $free_numtype(numtype) +[check_dims] numtype testop +[visit_exp `TESTOP`_instr(numtype, testop)] [visit_exp (numtype, testop)] [visit_exp numtype] [visit_id numtype] @@ -15552,11 +15091,9 @@ DecD free_expr(expr : expr) : free [visit_id numtype] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{numtype#9 : numtype, numtype : numtype, testop : testop_(numtype)}(`TESTOP`_instr{numtype#9}(numtype, testop)) = $free_numtype(numtype) -[check_dims] numtype numtype#11 relop -[visit_exp `RELOP`_instr{numtype#11}(numtype, relop)] -[visit_exp numtype#11] -[visit_id numtype#11] + def $free_instr{numtype : numtype, testop : testop_(numtype)}(`TESTOP`_instr(numtype, testop)) = $free_numtype(numtype) +[check_dims] numtype relop +[visit_exp `RELOP`_instr(numtype, relop)] [visit_exp (numtype, relop)] [visit_exp numtype] [visit_id numtype] @@ -15567,13 +15104,9 @@ DecD free_expr(expr : expr) : free [visit_id numtype] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{numtype#11 : numtype, numtype : numtype, relop : relop_(numtype)}(`RELOP`_instr{numtype#11}(numtype, relop)) = $free_numtype(numtype) -[check_dims] cvtop numtype_1 numtype_1#1 numtype_2 numtype_2#1 -[visit_exp `CVTOP`_instr{numtype_1#1, numtype_2#1}(numtype_1, numtype_2, cvtop)] -[visit_exp numtype_1#1] -[visit_id numtype_1#1] -[visit_exp numtype_2#1] -[visit_id numtype_2#1] + def $free_instr{numtype : numtype, relop : relop_(numtype)}(`RELOP`_instr(numtype, relop)) = $free_numtype(numtype) +[check_dims] cvtop numtype_1 numtype_2 +[visit_exp `CVTOP`_instr(numtype_1, numtype_2, cvtop)] [visit_exp (numtype_1, numtype_2, cvtop)] [visit_exp numtype_1] [visit_id numtype_1] @@ -15590,11 +15123,9 @@ DecD free_expr(expr : expr) : free [visit_id numtype_2] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{numtype_1#1 : numtype, numtype_2#1 : numtype, numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop__(numtype_2, numtype_1)}(`CVTOP`_instr{numtype_1#1, numtype_2#1}(numtype_1, numtype_2, cvtop)) = $free_numtype(numtype_1) +++ $free_numtype(numtype_2) -[check_dims] veclit vectype vectype#3 -[visit_exp `VCONST`_instr{vectype#3}(vectype, veclit)] -[visit_exp vectype#3] -[visit_id vectype#3] + 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) +[check_dims] veclit vectype +[visit_exp `VCONST`_instr(vectype, veclit)] [visit_exp (vectype, veclit)] [visit_exp vectype] [visit_id vectype] @@ -15605,13 +15136,9 @@ DecD free_expr(expr : expr) : free [visit_id vectype] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{vectype#3 : vectype, vectype : vectype, veclit : vec_(vectype)}(`VCONST`_instr{vectype#3}(vectype, veclit)) = $free_vectype(vectype) -[check_dims] vectype vectype#5 vvunop vvunop#1 -[visit_exp `VVUNOP`_instr{vectype#5, vvunop#1}(vectype, vvunop)] -[visit_exp vectype#5] -[visit_id vectype#5] -[visit_exp vvunop#1] -[visit_id vvunop#1] + def $free_instr{vectype : vectype, veclit : vec_(vectype)}(`VCONST`_instr(vectype, veclit)) = $free_vectype(vectype) +[check_dims] vectype vvunop +[visit_exp `VVUNOP`_instr(vectype, vvunop)] [visit_exp (vectype, vvunop)] [visit_exp vectype] [visit_id vectype] @@ -15622,13 +15149,9 @@ DecD free_expr(expr : expr) : free [visit_id vectype] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{vectype#5 : vectype, vvunop#1 : vvunop, vectype : vectype, vvunop : vvunop}(`VVUNOP`_instr{vectype#5, vvunop#1}(vectype, vvunop)) = $free_vectype(vectype) -[check_dims] vectype vectype#7 vvbinop vvbinop#1 -[visit_exp `VVBINOP`_instr{vectype#7, vvbinop#1}(vectype, vvbinop)] -[visit_exp vectype#7] -[visit_id vectype#7] -[visit_exp vvbinop#1] -[visit_id vvbinop#1] + def $free_instr{vectype : vectype, vvunop : vvunop}(`VVUNOP`_instr(vectype, vvunop)) = $free_vectype(vectype) +[check_dims] vectype vvbinop +[visit_exp `VVBINOP`_instr(vectype, vvbinop)] [visit_exp (vectype, vvbinop)] [visit_exp vectype] [visit_id vectype] @@ -15639,13 +15162,9 @@ DecD free_expr(expr : expr) : free [visit_id vectype] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{vectype#7 : vectype, vvbinop#1 : vvbinop, vectype : vectype, vvbinop : vvbinop}(`VVBINOP`_instr{vectype#7, vvbinop#1}(vectype, vvbinop)) = $free_vectype(vectype) -[check_dims] vectype vectype#9 vvternop vvternop#1 -[visit_exp `VVTERNOP`_instr{vectype#9, vvternop#1}(vectype, vvternop)] -[visit_exp vectype#9] -[visit_id vectype#9] -[visit_exp vvternop#1] -[visit_id vvternop#1] + def $free_instr{vectype : vectype, vvbinop : vvbinop}(`VVBINOP`_instr(vectype, vvbinop)) = $free_vectype(vectype) +[check_dims] vectype vvternop +[visit_exp `VVTERNOP`_instr(vectype, vvternop)] [visit_exp (vectype, vvternop)] [visit_exp vectype] [visit_id vectype] @@ -15656,13 +15175,9 @@ DecD free_expr(expr : expr) : free [visit_id vectype] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{vectype#9 : vectype, vvternop#1 : vvternop, vectype : vectype, vvternop : vvternop}(`VVTERNOP`_instr{vectype#9, vvternop#1}(vectype, vvternop)) = $free_vectype(vectype) -[check_dims] vectype vectype#11 vvtestop vvtestop#1 -[visit_exp `VVTESTOP`_instr{vectype#11, vvtestop#1}(vectype, vvtestop)] -[visit_exp vectype#11] -[visit_id vectype#11] -[visit_exp vvtestop#1] -[visit_id vvtestop#1] + def $free_instr{vectype : vectype, vvternop : vvternop}(`VVTERNOP`_instr(vectype, vvternop)) = $free_vectype(vectype) +[check_dims] vectype vvtestop +[visit_exp `VVTESTOP`_instr(vectype, vvtestop)] [visit_exp (vectype, vvtestop)] [visit_exp vectype] [visit_id vectype] @@ -15673,11 +15188,9 @@ DecD free_expr(expr : expr) : free [visit_id vectype] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{vectype#11 : vectype, vvtestop#1 : vvtestop, vectype : vectype, vvtestop : vvtestop}(`VVTESTOP`_instr{vectype#11, vvtestop#1}(vectype, vvtestop)) = $free_vectype(vectype) -[check_dims] shape shape#153 vunop -[visit_exp `VUNOP`_instr{shape#153}(shape, vunop)] -[visit_exp shape#153] -[visit_id shape#153] + def $free_instr{vectype : vectype, vvtestop : vvtestop}(`VVTESTOP`_instr(vectype, vvtestop)) = $free_vectype(vectype) +[check_dims] shape vunop +[visit_exp `VUNOP`_instr(shape, vunop)] [visit_exp (shape, vunop)] [visit_exp shape] [visit_id shape] @@ -15688,11 +15201,9 @@ DecD free_expr(expr : expr) : free [visit_id shape] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{shape#153 : shape, shape : shape, vunop : vunop_(shape)}(`VUNOP`_instr{shape#153}(shape, vunop)) = $free_shape(shape) -[check_dims] shape shape#155 vbinop -[visit_exp `VBINOP`_instr{shape#155}(shape, vbinop)] -[visit_exp shape#155] -[visit_id shape#155] + def $free_instr{shape : shape, vunop : vunop_(shape)}(`VUNOP`_instr(shape, vunop)) = $free_shape(shape) +[check_dims] shape vbinop +[visit_exp `VBINOP`_instr(shape, vbinop)] [visit_exp (shape, vbinop)] [visit_exp shape] [visit_id shape] @@ -15703,11 +15214,9 @@ DecD free_expr(expr : expr) : free [visit_id shape] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{shape#155 : shape, shape : shape, vbinop : vbinop_(shape)}(`VBINOP`_instr{shape#155}(shape, vbinop)) = $free_shape(shape) -[check_dims] shape shape#157 vternop -[visit_exp `VTERNOP`_instr{shape#157}(shape, vternop)] -[visit_exp shape#157] -[visit_id shape#157] + def $free_instr{shape : shape, vbinop : vbinop_(shape)}(`VBINOP`_instr(shape, vbinop)) = $free_shape(shape) +[check_dims] shape vternop +[visit_exp `VTERNOP`_instr(shape, vternop)] [visit_exp (shape, vternop)] [visit_exp shape] [visit_id shape] @@ -15718,11 +15227,9 @@ DecD free_expr(expr : expr) : free [visit_id shape] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{shape#157 : shape, shape : shape, vternop : vternop_(shape)}(`VTERNOP`_instr{shape#157}(shape, vternop)) = $free_shape(shape) -[check_dims] shape shape#159 vtestop -[visit_exp `VTESTOP`_instr{shape#159}(shape, vtestop)] -[visit_exp shape#159] -[visit_id shape#159] + def $free_instr{shape : shape, vternop : vternop_(shape)}(`VTERNOP`_instr(shape, vternop)) = $free_shape(shape) +[check_dims] shape vtestop +[visit_exp `VTESTOP`_instr(shape, vtestop)] [visit_exp (shape, vtestop)] [visit_exp shape] [visit_id shape] @@ -15733,11 +15240,9 @@ DecD free_expr(expr : expr) : free [visit_id shape] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{shape#159 : shape, shape : shape, vtestop : vtestop_(shape)}(`VTESTOP`_instr{shape#159}(shape, vtestop)) = $free_shape(shape) -[check_dims] shape shape#161 vrelop -[visit_exp `VRELOP`_instr{shape#161}(shape, vrelop)] -[visit_exp shape#161] -[visit_id shape#161] + def $free_instr{shape : shape, vtestop : vtestop_(shape)}(`VTESTOP`_instr(shape, vtestop)) = $free_shape(shape) +[check_dims] shape vrelop +[visit_exp `VRELOP`_instr(shape, vrelop)] [visit_exp (shape, vrelop)] [visit_exp shape] [visit_id shape] @@ -15748,76 +15253,52 @@ DecD free_expr(expr : expr) : free [visit_id shape] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{shape#161 : shape, shape : shape, vrelop : vrelop_(shape)}(`VRELOP`_instr{shape#161}(shape, vrelop)) = $free_shape(shape) -[check_dims] Jnn#48 ishape ishape#1 shape#169 vshiftop -[visit_exp `VSHIFTOP`_instr{ishape#1}(ishape, vshiftop)] -[visit_exp ishape#1] -[visit_id ishape#1] + def $free_instr{shape : shape, vrelop : vrelop_(shape)}(`VRELOP`_instr(shape, vrelop)) = $free_shape(shape) +[check_dims] ishape vshiftop +[visit_exp `VSHIFTOP`_instr(ishape, vshiftop)] [visit_exp (ishape, vshiftop)] [visit_exp ishape] [visit_id ishape] [visit_exp vshiftop] [visit_id vshiftop] -[visit_exp $free_shape(ishape!`%`_ishape{shape#169, Jnn#48}.0)] -[visit_exp ishape!`%`_ishape{shape#169, Jnn#48}.0] -[visit_exp ishape!`%`_ishape{shape#169, Jnn#48}] +[visit_exp $free_shape(ishape!`%`_ishape.0)] +[visit_exp ishape!`%`_ishape.0] +[visit_exp ishape!`%`_ishape] [visit_exp ishape] [visit_id ishape] not free -[visit_exp shape#169] -[visit_id shape#169] -[visit_exp Jnn#48] -[visit_id Jnn#48] => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{ishape#1 : ishape, ishape : ishape, vshiftop : vshiftop_(ishape), shape#169 : shape, Jnn#48 : Jnn}(`VSHIFTOP`_instr{ishape#1}(ishape, vshiftop)) = $free_shape(ishape!`%`_ishape{shape#169, Jnn#48}.0) -[check_dims] Jnn#51 ishape ishape#3 shape#177 -[visit_exp `VBITMASK`_instr{ishape#3}(ishape)] -[visit_exp ishape#3] -[visit_id ishape#3] + def $free_instr{ishape : ishape, vshiftop : vshiftop_(ishape)}(`VSHIFTOP`_instr(ishape, vshiftop)) = $free_shape(ishape!`%`_ishape.0) +[check_dims] ishape +[visit_exp `VBITMASK`_instr(ishape)] [visit_exp (ishape)] [visit_exp ishape] [visit_id ishape] -[visit_exp $free_shape(ishape!`%`_ishape{shape#177, Jnn#51}.0)] -[visit_exp ishape!`%`_ishape{shape#177, Jnn#51}.0] -[visit_exp ishape!`%`_ishape{shape#177, Jnn#51}] +[visit_exp $free_shape(ishape!`%`_ishape.0)] +[visit_exp ishape!`%`_ishape.0] +[visit_exp ishape!`%`_ishape] [visit_exp ishape] [visit_id ishape] not free -[visit_exp shape#177] -[visit_id shape#177] -[visit_exp Jnn#51] -[visit_id Jnn#51] => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{ishape#3 : ishape, ishape : ishape, shape#177 : shape, Jnn#51 : Jnn}(`VBITMASK`_instr{ishape#3}(ishape)) = $free_shape(ishape!`%`_ishape{shape#177, Jnn#51}.0) -[check_dims] bshape bshape#1 shape#185 vswizzlop -[visit_exp `VSWIZZLOP`_instr{bshape#1}(bshape, vswizzlop)] -[visit_exp bshape#1] -[visit_id bshape#1] + def $free_instr{ishape : ishape}(`VBITMASK`_instr(ishape)) = $free_shape(ishape!`%`_ishape.0) +[check_dims] bshape vswizzlop +[visit_exp `VSWIZZLOP`_instr(bshape, vswizzlop)] [visit_exp (bshape, vswizzlop)] [visit_exp bshape] [visit_id bshape] [visit_exp vswizzlop] [visit_id vswizzlop] -[visit_exp $free_shape(bshape!`%`_bshape{shape#185}.0)] -[visit_exp bshape!`%`_bshape{shape#185}.0] -[visit_exp bshape!`%`_bshape{shape#185}] +[visit_exp $free_shape(bshape!`%`_bshape.0)] +[visit_exp bshape!`%`_bshape.0] +[visit_exp bshape!`%`_bshape] [visit_exp bshape] [visit_id bshape] not free -[visit_exp shape#185] -[visit_id shape#185] => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{bshape#1 : bshape, bshape : bshape, vswizzlop : vswizzlop_(bshape), shape#185 : shape}(`VSWIZZLOP`_instr{bshape#1}(bshape, vswizzlop)) = $free_shape(bshape!`%`_bshape{shape#185}.0) -[check_dims] bshape bshape#3 i#1902 laneidx laneidx*#1 shape#187 shape#194 -[visit_exp `VSHUFFLE`_instr{bshape#3, `laneidx*#1`, i#1902, shape#187}(bshape, laneidx*{laneidx <- `laneidx*`})] -[visit_exp bshape#3] -[visit_id bshape#3] -[visit_exp `laneidx*#1`] -[visit_id laneidx*#1] -[visit_exp i#1902] -[visit_id i#1902] -[visit_exp shape#187] -[visit_id shape#187] + def $free_instr{bshape : bshape, vswizzlop : vswizzlop_(bshape)}(`VSWIZZLOP`_instr(bshape, vswizzlop)) = $free_shape(bshape!`%`_bshape.0) +[check_dims] bshape laneidx +[visit_exp `VSHUFFLE`_instr(bshape, laneidx*{laneidx <- `laneidx*`})] [visit_exp (bshape, laneidx*{laneidx <- `laneidx*`})] [visit_exp bshape] [visit_id bshape] @@ -15830,22 +15311,16 @@ DecD free_expr(expr : expr) : free [visit_exp `laneidx*`] [visit_id laneidx*] no dims [visit_id laneidx*] -[visit_exp $free_shape(bshape!`%`_bshape{shape#194}.0)] -[visit_exp bshape!`%`_bshape{shape#194}.0] -[visit_exp bshape!`%`_bshape{shape#194}] +[visit_exp $free_shape(bshape!`%`_bshape.0)] +[visit_exp bshape!`%`_bshape.0] +[visit_exp bshape!`%`_bshape] [visit_exp bshape] [visit_id bshape] not free -[visit_exp shape#194] -[visit_id shape#194] => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{bshape#3 : bshape, `laneidx*#1` : laneidx*, i#1902 : nat, shape#187 : shape, bshape : bshape, `laneidx*` : laneidx*, shape#194 : shape}(`VSHUFFLE`_instr{bshape#3, `laneidx*#1`, i#1902, shape#187}(bshape, laneidx*{laneidx <- `laneidx*`})) = $free_shape(bshape!`%`_bshape{shape#194}.0) -[check_dims] Jnn#56 Jnn#57 ishape_1 ishape_1#1 ishape_2 ishape_2#1 shape#208 shape#210 vextunop -[visit_exp `VEXTUNOP`_instr{ishape_1#1, ishape_2#1}(ishape_1, ishape_2, vextunop)] -[visit_exp ishape_1#1] -[visit_id ishape_1#1] -[visit_exp ishape_2#1] -[visit_id ishape_2#1] + def $free_instr{bshape : bshape, `laneidx*` : laneidx*}(`VSHUFFLE`_instr(bshape, laneidx*{laneidx <- `laneidx*`})) = $free_shape(bshape!`%`_bshape.0) +[check_dims] ishape_1 ishape_2 vextunop +[visit_exp `VEXTUNOP`_instr(ishape_1, ishape_2, vextunop)] [visit_exp (ishape_1, ishape_2, vextunop)] [visit_exp ishape_1] [visit_id ishape_1] @@ -15853,34 +15328,22 @@ DecD free_expr(expr : expr) : free [visit_id ishape_2] [visit_exp vextunop] [visit_id vextunop] -[visit_exp $free_shape(ishape_1!`%`_ishape{shape#208, Jnn#56}.0) +++ $free_shape(ishape_2!`%`_ishape{shape#210, Jnn#57}.0)] -[visit_exp $free_shape(ishape_1!`%`_ishape{shape#208, Jnn#56}.0)] -[visit_exp ishape_1!`%`_ishape{shape#208, Jnn#56}.0] -[visit_exp ishape_1!`%`_ishape{shape#208, Jnn#56}] +[visit_exp $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0)] +[visit_exp $free_shape(ishape_1!`%`_ishape.0)] +[visit_exp ishape_1!`%`_ishape.0] +[visit_exp ishape_1!`%`_ishape] [visit_exp ishape_1] [visit_id ishape_1] not free -[visit_exp shape#208] -[visit_id shape#208] -[visit_exp Jnn#56] -[visit_id Jnn#56] -[visit_exp $free_shape(ishape_2!`%`_ishape{shape#210, Jnn#57}.0)] -[visit_exp ishape_2!`%`_ishape{shape#210, Jnn#57}.0] -[visit_exp ishape_2!`%`_ishape{shape#210, Jnn#57}] +[visit_exp $free_shape(ishape_2!`%`_ishape.0)] +[visit_exp ishape_2!`%`_ishape.0] +[visit_exp ishape_2!`%`_ishape] [visit_exp ishape_2] [visit_id ishape_2] not free -[visit_exp shape#210] -[visit_id shape#210] -[visit_exp Jnn#57] -[visit_id Jnn#57] => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{ishape_1#1 : ishape, ishape_2#1 : ishape, ishape_1 : ishape, ishape_2 : ishape, vextunop : vextunop__(ishape_2, ishape_1), shape#208 : shape, Jnn#56 : Jnn, shape#210 : shape, Jnn#57 : Jnn}(`VEXTUNOP`_instr{ishape_1#1, ishape_2#1}(ishape_1, ishape_2, vextunop)) = $free_shape(ishape_1!`%`_ishape{shape#208, Jnn#56}.0) +++ $free_shape(ishape_2!`%`_ishape{shape#210, Jnn#57}.0) -[check_dims] Jnn#62 Jnn#63 ishape_1 ishape_1#3 ishape_2 ishape_2#3 shape#224 shape#226 vextbinop -[visit_exp `VEXTBINOP`_instr{ishape_1#3, ishape_2#3}(ishape_1, ishape_2, vextbinop)] -[visit_exp ishape_1#3] -[visit_id ishape_1#3] -[visit_exp ishape_2#3] -[visit_id ishape_2#3] + 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) +[check_dims] ishape_1 ishape_2 vextbinop +[visit_exp `VEXTBINOP`_instr(ishape_1, ishape_2, vextbinop)] [visit_exp (ishape_1, ishape_2, vextbinop)] [visit_exp ishape_1] [visit_id ishape_1] @@ -15888,34 +15351,22 @@ DecD free_expr(expr : expr) : free [visit_id ishape_2] [visit_exp vextbinop] [visit_id vextbinop] -[visit_exp $free_shape(ishape_1!`%`_ishape{shape#224, Jnn#62}.0) +++ $free_shape(ishape_2!`%`_ishape{shape#226, Jnn#63}.0)] -[visit_exp $free_shape(ishape_1!`%`_ishape{shape#224, Jnn#62}.0)] -[visit_exp ishape_1!`%`_ishape{shape#224, Jnn#62}.0] -[visit_exp ishape_1!`%`_ishape{shape#224, Jnn#62}] +[visit_exp $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0)] +[visit_exp $free_shape(ishape_1!`%`_ishape.0)] +[visit_exp ishape_1!`%`_ishape.0] +[visit_exp ishape_1!`%`_ishape] [visit_exp ishape_1] [visit_id ishape_1] not free -[visit_exp shape#224] -[visit_id shape#224] -[visit_exp Jnn#62] -[visit_id Jnn#62] -[visit_exp $free_shape(ishape_2!`%`_ishape{shape#226, Jnn#63}.0)] -[visit_exp ishape_2!`%`_ishape{shape#226, Jnn#63}.0] -[visit_exp ishape_2!`%`_ishape{shape#226, Jnn#63}] +[visit_exp $free_shape(ishape_2!`%`_ishape.0)] +[visit_exp ishape_2!`%`_ishape.0] +[visit_exp ishape_2!`%`_ishape] [visit_exp ishape_2] [visit_id ishape_2] not free -[visit_exp shape#226] -[visit_id shape#226] -[visit_exp Jnn#63] -[visit_id Jnn#63] => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{ishape_1#3 : ishape, ishape_2#3 : ishape, ishape_1 : ishape, ishape_2 : ishape, vextbinop : vextbinop__(ishape_2, ishape_1), shape#224 : shape, Jnn#62 : Jnn, shape#226 : shape, Jnn#63 : Jnn}(`VEXTBINOP`_instr{ishape_1#3, ishape_2#3}(ishape_1, ishape_2, vextbinop)) = $free_shape(ishape_1!`%`_ishape{shape#224, Jnn#62}.0) +++ $free_shape(ishape_2!`%`_ishape{shape#226, Jnn#63}.0) -[check_dims] Jnn#68 Jnn#69 ishape_1 ishape_1#5 ishape_2 ishape_2#5 shape#240 shape#242 vextternop -[visit_exp `VEXTTERNOP`_instr{ishape_1#5, ishape_2#5}(ishape_1, ishape_2, vextternop)] -[visit_exp ishape_1#5] -[visit_id ishape_1#5] -[visit_exp ishape_2#5] -[visit_id ishape_2#5] + 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) +[check_dims] ishape_1 ishape_2 vextternop +[visit_exp `VEXTTERNOP`_instr(ishape_1, ishape_2, vextternop)] [visit_exp (ishape_1, ishape_2, vextternop)] [visit_exp ishape_1] [visit_id ishape_1] @@ -15923,48 +15374,22 @@ DecD free_expr(expr : expr) : free [visit_id ishape_2] [visit_exp vextternop] [visit_id vextternop] -[visit_exp $free_shape(ishape_1!`%`_ishape{shape#240, Jnn#68}.0) +++ $free_shape(ishape_2!`%`_ishape{shape#242, Jnn#69}.0)] -[visit_exp $free_shape(ishape_1!`%`_ishape{shape#240, Jnn#68}.0)] -[visit_exp ishape_1!`%`_ishape{shape#240, Jnn#68}.0] -[visit_exp ishape_1!`%`_ishape{shape#240, Jnn#68}] +[visit_exp $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0)] +[visit_exp $free_shape(ishape_1!`%`_ishape.0)] +[visit_exp ishape_1!`%`_ishape.0] +[visit_exp ishape_1!`%`_ishape] [visit_exp ishape_1] [visit_id ishape_1] not free -[visit_exp shape#240] -[visit_id shape#240] -[visit_exp Jnn#68] -[visit_id Jnn#68] -[visit_exp $free_shape(ishape_2!`%`_ishape{shape#242, Jnn#69}.0)] -[visit_exp ishape_2!`%`_ishape{shape#242, Jnn#69}.0] -[visit_exp ishape_2!`%`_ishape{shape#242, Jnn#69}] +[visit_exp $free_shape(ishape_2!`%`_ishape.0)] +[visit_exp ishape_2!`%`_ishape.0] +[visit_exp ishape_2!`%`_ishape] [visit_exp ishape_2] [visit_id ishape_2] not free -[visit_exp shape#242] -[visit_id shape#242] -[visit_exp Jnn#69] -[visit_id Jnn#69] => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{ishape_1#5 : ishape, ishape_2#5 : ishape, ishape_1 : ishape, ishape_2 : ishape, vextternop : vextternop__(ishape_2, ishape_1), shape#240 : shape, Jnn#68 : Jnn, shape#242 : shape, Jnn#69 : Jnn}(`VEXTTERNOP`_instr{ishape_1#5, ishape_2#5}(ishape_1, ishape_2, vextternop)) = $free_shape(ishape_1!`%`_ishape{shape#240, Jnn#68}.0) +++ $free_shape(ishape_2!`%`_ishape{shape#242, Jnn#69}.0) -[check_dims] Jnn#70 Jnn#71 Jnn#72 Jnn#77 Jnn#78 ishape_1 ishape_1#7 ishape_2 ishape_2#7 shape#244 shape#245 shape#246 shape#259 shape#261 sx sx#1 -[visit_exp `VNARROW`_instr{ishape_1#7, ishape_2#7, sx#1, shape#244, Jnn#70, shape#245, Jnn#71, shape#246, Jnn#72}(ishape_1, ishape_2, sx)] -[visit_exp ishape_1#7] -[visit_id ishape_1#7] -[visit_exp ishape_2#7] -[visit_id ishape_2#7] -[visit_exp sx#1] -[visit_id sx#1] -[visit_exp shape#244] -[visit_id shape#244] -[visit_exp Jnn#70] -[visit_id Jnn#70] -[visit_exp shape#245] -[visit_id shape#245] -[visit_exp Jnn#71] -[visit_id Jnn#71] -[visit_exp shape#246] -[visit_id shape#246] -[visit_exp Jnn#72] -[visit_id Jnn#72] + 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) +[check_dims] ishape_1 ishape_2 sx +[visit_exp `VNARROW`_instr(ishape_1, ishape_2, sx)] [visit_exp (ishape_1, ishape_2, sx)] [visit_exp ishape_1] [visit_id ishape_1] @@ -15972,34 +15397,22 @@ DecD free_expr(expr : expr) : free [visit_id ishape_2] [visit_exp sx] [visit_id sx] -[visit_exp $free_shape(ishape_1!`%`_ishape{shape#259, Jnn#77}.0) +++ $free_shape(ishape_2!`%`_ishape{shape#261, Jnn#78}.0)] -[visit_exp $free_shape(ishape_1!`%`_ishape{shape#259, Jnn#77}.0)] -[visit_exp ishape_1!`%`_ishape{shape#259, Jnn#77}.0] -[visit_exp ishape_1!`%`_ishape{shape#259, Jnn#77}] +[visit_exp $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0)] +[visit_exp $free_shape(ishape_1!`%`_ishape.0)] +[visit_exp ishape_1!`%`_ishape.0] +[visit_exp ishape_1!`%`_ishape] [visit_exp ishape_1] [visit_id ishape_1] not free -[visit_exp shape#259] -[visit_id shape#259] -[visit_exp Jnn#77] -[visit_id Jnn#77] -[visit_exp $free_shape(ishape_2!`%`_ishape{shape#261, Jnn#78}.0)] -[visit_exp ishape_2!`%`_ishape{shape#261, Jnn#78}.0] -[visit_exp ishape_2!`%`_ishape{shape#261, Jnn#78}] +[visit_exp $free_shape(ishape_2!`%`_ishape.0)] +[visit_exp ishape_2!`%`_ishape.0] +[visit_exp ishape_2!`%`_ishape] [visit_exp ishape_2] [visit_id ishape_2] not free -[visit_exp shape#261] -[visit_id shape#261] -[visit_exp Jnn#78] -[visit_id Jnn#78] => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{ishape_1#7 : ishape, ishape_2#7 : ishape, sx#1 : sx, shape#244 : shape, Jnn#70 : Jnn, shape#245 : shape, Jnn#71 : Jnn, shape#246 : shape, Jnn#72 : Jnn, ishape_1 : ishape, ishape_2 : ishape, sx : sx, shape#259 : shape, Jnn#77 : Jnn, shape#261 : shape, Jnn#78 : Jnn}(`VNARROW`_instr{ishape_1#7, ishape_2#7, sx#1, shape#244, Jnn#70, shape#245, Jnn#71, shape#246, Jnn#72}(ishape_1, ishape_2, sx)) = $free_shape(ishape_1!`%`_ishape{shape#259, Jnn#77}.0) +++ $free_shape(ishape_2!`%`_ishape{shape#261, Jnn#78}.0) -[check_dims] shape_1 shape_1#1 shape_2 shape_2#1 vcvtop -[visit_exp `VCVTOP`_instr{shape_1#1, shape_2#1}(shape_1, shape_2, vcvtop)] -[visit_exp shape_1#1] -[visit_id shape_1#1] -[visit_exp shape_2#1] -[visit_id shape_2#1] + 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) +[check_dims] shape_1 shape_2 vcvtop +[visit_exp `VCVTOP`_instr(shape_1, shape_2, vcvtop)] [visit_exp (shape_1, shape_2, vcvtop)] [visit_exp shape_1] [visit_id shape_1] @@ -16016,11 +15429,9 @@ DecD free_expr(expr : expr) : free [visit_id shape_2] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{shape_1#1 : shape, shape_2#1 : shape, shape_1 : shape, shape_2 : shape, vcvtop : vcvtop__(shape_2, shape_1)}(`VCVTOP`_instr{shape_1#1, shape_2#1}(shape_1, shape_2, vcvtop)) = $free_shape(shape_1) +++ $free_shape(shape_2) -[check_dims] shape shape#263 -[visit_exp `VSPLAT`_instr{shape#263}(shape)] -[visit_exp shape#263] -[visit_id shape#263] + 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) +[check_dims] shape +[visit_exp `VSPLAT`_instr(shape)] [visit_exp (shape)] [visit_exp shape] [visit_id shape] @@ -16029,15 +15440,9 @@ DecD free_expr(expr : expr) : free [visit_id shape] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{shape#263 : shape, shape : shape}(`VSPLAT`_instr{shape#263}(shape)) = $free_shape(shape) -[check_dims] laneidx laneidx#1 shape shape#265 sx sx?#1 -[visit_exp `VEXTRACT_LANE`_instr{shape#265, `sx?#1`, laneidx#1}(shape, sx?{sx <- `sx?`}, laneidx)] -[visit_exp shape#265] -[visit_id shape#265] -[visit_exp `sx?#1`] -[visit_id sx?#1] -[visit_exp laneidx#1] -[visit_id laneidx#1] + def $free_instr{shape : shape}(`VSPLAT`_instr(shape)) = $free_shape(shape) +[check_dims] laneidx shape sx +[visit_exp `VEXTRACT_LANE`_instr(shape, sx?{sx <- `sx?`}, laneidx)] [visit_exp (shape, sx?{sx <- `sx?`}, laneidx)] [visit_exp shape] [visit_id shape] @@ -16057,13 +15462,9 @@ DecD free_expr(expr : expr) : free [visit_id shape] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{shape#265 : shape, `sx?#1` : sx?, laneidx#1 : laneidx, shape : shape, `sx?` : sx?, laneidx : laneidx}(`VEXTRACT_LANE`_instr{shape#265, `sx?#1`, laneidx#1}(shape, sx?{sx <- `sx?`}, laneidx)) = $free_shape(shape) -[check_dims] laneidx laneidx#3 shape shape#267 -[visit_exp `VREPLACE_LANE`_instr{shape#267, laneidx#3}(shape, laneidx)] -[visit_exp shape#267] -[visit_id shape#267] -[visit_exp laneidx#3] -[visit_id laneidx#3] + def $free_instr{shape : shape, `sx?` : sx?, laneidx : laneidx}(`VEXTRACT_LANE`_instr(shape, sx?{sx <- `sx?`}, laneidx)) = $free_shape(shape) +[check_dims] laneidx shape +[visit_exp `VREPLACE_LANE`_instr(shape, laneidx)] [visit_exp (shape, laneidx)] [visit_exp shape] [visit_id shape] @@ -16074,11 +15475,9 @@ DecD free_expr(expr : expr) : free [visit_id shape] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{shape#267 : shape, laneidx#3 : laneidx, shape : shape, laneidx : laneidx}(`VREPLACE_LANE`_instr{shape#267, laneidx#3}(shape, laneidx)) = $free_shape(shape) -[check_dims] heaptype heaptype#373 -[visit_exp `REF.NULL`_instr{heaptype#373}(heaptype)] -[visit_exp heaptype#373] -[visit_id heaptype#373] + def $free_instr{shape : shape, laneidx : laneidx}(`VREPLACE_LANE`_instr(shape, laneidx)) = $free_shape(shape) +[check_dims] heaptype +[visit_exp `REF.NULL`_instr(heaptype)] [visit_exp (heaptype)] [visit_exp heaptype] [visit_id heaptype] @@ -16087,113 +15486,57 @@ DecD free_expr(expr : expr) : free [visit_id heaptype] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{heaptype#373 : heaptype, heaptype : heaptype}(`REF.NULL`_instr{heaptype#373}(heaptype)) = $free_heaptype(heaptype) -[check_dims] dataidx*#24 elemidx*#24 funcidx*#24 globalidx*#24 labelidx*#26 localidx*#24 memidx*#24 tableidx*#24 typeidx*#24 + def $free_instr{heaptype : heaptype}(`REF.NULL`_instr(heaptype)) = $free_heaptype(heaptype) +[check_dims] [visit_exp `REF.IS_NULL`_instr] [visit_exp ()] -[visit_exp {`TYPES`{`typeidx*#24`} [], `FUNCS`{`funcidx*#24`} [], `GLOBALS`{`globalidx*#24`} [], `TABLES`{`tableidx*#24`} [], `MEMS`{`memidx*#24`} [], `ELEMS`{`elemidx*#24`} [], `DATAS`{`dataidx*#24`} [], `LOCALS`{`localidx*#24`} [], `LABELS`{`labelidx*#26`} []}] -[visit_exp `typeidx*#24`] -[visit_id typeidx*#24] +[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] [visit_exp []] -[visit_exp `funcidx*#24`] -[visit_id funcidx*#24] [visit_exp []] -[visit_exp `globalidx*#24`] -[visit_id globalidx*#24] [visit_exp []] -[visit_exp `tableidx*#24`] -[visit_id tableidx*#24] [visit_exp []] -[visit_exp `memidx*#24`] -[visit_id memidx*#24] [visit_exp []] -[visit_exp `elemidx*#24`] -[visit_id elemidx*#24] [visit_exp []] -[visit_exp `dataidx*#24`] -[visit_id dataidx*#24] [visit_exp []] -[visit_exp `localidx*#24`] -[visit_id localidx*#24] [visit_exp []] -[visit_exp `labelidx*#26`] -[visit_id labelidx*#26] [visit_exp []] => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{`typeidx*#24` : typeidx*, `funcidx*#24` : funcidx*, `globalidx*#24` : globalidx*, `tableidx*#24` : tableidx*, `memidx*#24` : memidx*, `elemidx*#24` : elemidx*, `dataidx*#24` : dataidx*, `localidx*#24` : localidx*, `labelidx*#26` : labelidx*}(`REF.IS_NULL`_instr) = {`TYPES`{`typeidx*#24`} [], `FUNCS`{`funcidx*#24`} [], `GLOBALS`{`globalidx*#24`} [], `TABLES`{`tableidx*#24`} [], `MEMS`{`memidx*#24`} [], `ELEMS`{`elemidx*#24`} [], `DATAS`{`dataidx*#24`} [], `LOCALS`{`localidx*#24`} [], `LABELS`{`labelidx*#26`} []} -[check_dims] dataidx*#25 elemidx*#25 funcidx*#25 globalidx*#25 labelidx*#27 localidx*#25 memidx*#25 tableidx*#25 typeidx*#25 + def $free_instr(`REF.IS_NULL`_instr) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} +[check_dims] [visit_exp `REF.AS_NON_NULL`_instr] [visit_exp ()] -[visit_exp {`TYPES`{`typeidx*#25`} [], `FUNCS`{`funcidx*#25`} [], `GLOBALS`{`globalidx*#25`} [], `TABLES`{`tableidx*#25`} [], `MEMS`{`memidx*#25`} [], `ELEMS`{`elemidx*#25`} [], `DATAS`{`dataidx*#25`} [], `LOCALS`{`localidx*#25`} [], `LABELS`{`labelidx*#27`} []}] -[visit_exp `typeidx*#25`] -[visit_id typeidx*#25] +[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] [visit_exp []] -[visit_exp `funcidx*#25`] -[visit_id funcidx*#25] [visit_exp []] -[visit_exp `globalidx*#25`] -[visit_id globalidx*#25] [visit_exp []] -[visit_exp `tableidx*#25`] -[visit_id tableidx*#25] [visit_exp []] -[visit_exp `memidx*#25`] -[visit_id memidx*#25] [visit_exp []] -[visit_exp `elemidx*#25`] -[visit_id elemidx*#25] [visit_exp []] -[visit_exp `dataidx*#25`] -[visit_id dataidx*#25] [visit_exp []] -[visit_exp `localidx*#25`] -[visit_id localidx*#25] [visit_exp []] -[visit_exp `labelidx*#27`] -[visit_id labelidx*#27] [visit_exp []] => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{`typeidx*#25` : typeidx*, `funcidx*#25` : funcidx*, `globalidx*#25` : globalidx*, `tableidx*#25` : tableidx*, `memidx*#25` : memidx*, `elemidx*#25` : elemidx*, `dataidx*#25` : dataidx*, `localidx*#25` : localidx*, `labelidx*#27` : labelidx*}(`REF.AS_NON_NULL`_instr) = {`TYPES`{`typeidx*#25`} [], `FUNCS`{`funcidx*#25`} [], `GLOBALS`{`globalidx*#25`} [], `TABLES`{`tableidx*#25`} [], `MEMS`{`memidx*#25`} [], `ELEMS`{`elemidx*#25`} [], `DATAS`{`dataidx*#25`} [], `LOCALS`{`localidx*#25`} [], `LABELS`{`labelidx*#27`} []} -[check_dims] dataidx*#26 elemidx*#26 funcidx*#26 globalidx*#26 labelidx*#28 localidx*#26 memidx*#26 tableidx*#26 typeidx*#26 + def $free_instr(`REF.AS_NON_NULL`_instr) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} +[check_dims] [visit_exp `REF.EQ`_instr] [visit_exp ()] -[visit_exp {`TYPES`{`typeidx*#26`} [], `FUNCS`{`funcidx*#26`} [], `GLOBALS`{`globalidx*#26`} [], `TABLES`{`tableidx*#26`} [], `MEMS`{`memidx*#26`} [], `ELEMS`{`elemidx*#26`} [], `DATAS`{`dataidx*#26`} [], `LOCALS`{`localidx*#26`} [], `LABELS`{`labelidx*#28`} []}] -[visit_exp `typeidx*#26`] -[visit_id typeidx*#26] +[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] [visit_exp []] -[visit_exp `funcidx*#26`] -[visit_id funcidx*#26] [visit_exp []] -[visit_exp `globalidx*#26`] -[visit_id globalidx*#26] [visit_exp []] -[visit_exp `tableidx*#26`] -[visit_id tableidx*#26] [visit_exp []] -[visit_exp `memidx*#26`] -[visit_id memidx*#26] [visit_exp []] -[visit_exp `elemidx*#26`] -[visit_id elemidx*#26] [visit_exp []] -[visit_exp `dataidx*#26`] -[visit_id dataidx*#26] [visit_exp []] -[visit_exp `localidx*#26`] -[visit_id localidx*#26] [visit_exp []] -[visit_exp `labelidx*#28`] -[visit_id labelidx*#28] [visit_exp []] => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{`typeidx*#26` : typeidx*, `funcidx*#26` : funcidx*, `globalidx*#26` : globalidx*, `tableidx*#26` : tableidx*, `memidx*#26` : memidx*, `elemidx*#26` : elemidx*, `dataidx*#26` : dataidx*, `localidx*#26` : localidx*, `labelidx*#28` : labelidx*}(`REF.EQ`_instr) = {`TYPES`{`typeidx*#26`} [], `FUNCS`{`funcidx*#26`} [], `GLOBALS`{`globalidx*#26`} [], `TABLES`{`tableidx*#26`} [], `MEMS`{`memidx*#26`} [], `ELEMS`{`elemidx*#26`} [], `DATAS`{`dataidx*#26`} [], `LOCALS`{`localidx*#26`} [], `LABELS`{`labelidx*#28`} []} -[check_dims] reftype reftype#131 -[visit_exp `REF.TEST`_instr{reftype#131}(reftype)] -[visit_exp reftype#131] -[visit_id reftype#131] + def $free_instr(`REF.EQ`_instr) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} +[check_dims] reftype +[visit_exp `REF.TEST`_instr(reftype)] [visit_exp (reftype)] [visit_exp reftype] [visit_id reftype] @@ -16202,11 +15545,9 @@ DecD free_expr(expr : expr) : free [visit_id reftype] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{reftype#131 : reftype, reftype : reftype}(`REF.TEST`_instr{reftype#131}(reftype)) = $free_reftype(reftype) -[check_dims] reftype reftype#133 -[visit_exp `REF.CAST`_instr{reftype#133}(reftype)] -[visit_exp reftype#133] -[visit_id reftype#133] + def $free_instr{reftype : reftype}(`REF.TEST`_instr(reftype)) = $free_reftype(reftype) +[check_dims] reftype +[visit_exp `REF.CAST`_instr(reftype)] [visit_exp (reftype)] [visit_exp reftype] [visit_id reftype] @@ -16215,11 +15556,9 @@ DecD free_expr(expr : expr) : free [visit_id reftype] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{reftype#133 : reftype, reftype : reftype}(`REF.CAST`_instr{reftype#133}(reftype)) = $free_reftype(reftype) -[check_dims] funcidx funcidx#9 -[visit_exp `REF.FUNC`_instr{funcidx#9}(funcidx)] -[visit_exp funcidx#9] -[visit_id funcidx#9] + def $free_instr{reftype : reftype}(`REF.CAST`_instr(reftype)) = $free_reftype(reftype) +[check_dims] funcidx +[visit_exp `REF.FUNC`_instr(funcidx)] [visit_exp (funcidx)] [visit_exp funcidx] [visit_id funcidx] @@ -16228,121 +15567,61 @@ DecD free_expr(expr : expr) : free [visit_id funcidx] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{funcidx#9 : funcidx, funcidx : funcidx}(`REF.FUNC`_instr{funcidx#9}(funcidx)) = $free_funcidx(funcidx) -[check_dims] dataidx*#27 elemidx*#27 funcidx*#27 globalidx*#27 labelidx*#29 localidx*#27 memidx*#27 tableidx*#27 typeidx*#27 + def $free_instr{funcidx : funcidx}(`REF.FUNC`_instr(funcidx)) = $free_funcidx(funcidx) +[check_dims] [visit_exp `REF.I31`_instr] [visit_exp ()] -[visit_exp {`TYPES`{`typeidx*#27`} [], `FUNCS`{`funcidx*#27`} [], `GLOBALS`{`globalidx*#27`} [], `TABLES`{`tableidx*#27`} [], `MEMS`{`memidx*#27`} [], `ELEMS`{`elemidx*#27`} [], `DATAS`{`dataidx*#27`} [], `LOCALS`{`localidx*#27`} [], `LABELS`{`labelidx*#29`} []}] -[visit_exp `typeidx*#27`] -[visit_id typeidx*#27] +[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] [visit_exp []] -[visit_exp `funcidx*#27`] -[visit_id funcidx*#27] [visit_exp []] -[visit_exp `globalidx*#27`] -[visit_id globalidx*#27] [visit_exp []] -[visit_exp `tableidx*#27`] -[visit_id tableidx*#27] [visit_exp []] -[visit_exp `memidx*#27`] -[visit_id memidx*#27] [visit_exp []] -[visit_exp `elemidx*#27`] -[visit_id elemidx*#27] [visit_exp []] -[visit_exp `dataidx*#27`] -[visit_id dataidx*#27] [visit_exp []] -[visit_exp `localidx*#27`] -[visit_id localidx*#27] [visit_exp []] -[visit_exp `labelidx*#29`] -[visit_id labelidx*#29] [visit_exp []] => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{`typeidx*#27` : typeidx*, `funcidx*#27` : funcidx*, `globalidx*#27` : globalidx*, `tableidx*#27` : tableidx*, `memidx*#27` : memidx*, `elemidx*#27` : elemidx*, `dataidx*#27` : dataidx*, `localidx*#27` : localidx*, `labelidx*#29` : labelidx*}(`REF.I31`_instr) = {`TYPES`{`typeidx*#27`} [], `FUNCS`{`funcidx*#27`} [], `GLOBALS`{`globalidx*#27`} [], `TABLES`{`tableidx*#27`} [], `MEMS`{`memidx*#27`} [], `ELEMS`{`elemidx*#27`} [], `DATAS`{`dataidx*#27`} [], `LOCALS`{`localidx*#27`} [], `LABELS`{`labelidx*#29`} []} -[check_dims] dataidx*#28 elemidx*#28 funcidx*#28 globalidx*#28 labelidx*#30 localidx*#28 memidx*#28 sx sx#3 tableidx*#28 typeidx*#28 -[visit_exp `I31.GET`_instr{sx#3}(sx)] -[visit_exp sx#3] -[visit_id sx#3] + def $free_instr(`REF.I31`_instr) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} +[check_dims] sx +[visit_exp `I31.GET`_instr(sx)] [visit_exp (sx)] [visit_exp sx] [visit_id sx] -[visit_exp {`TYPES`{`typeidx*#28`} [], `FUNCS`{`funcidx*#28`} [], `GLOBALS`{`globalidx*#28`} [], `TABLES`{`tableidx*#28`} [], `MEMS`{`memidx*#28`} [], `ELEMS`{`elemidx*#28`} [], `DATAS`{`dataidx*#28`} [], `LOCALS`{`localidx*#28`} [], `LABELS`{`labelidx*#30`} []}] -[visit_exp `typeidx*#28`] -[visit_id typeidx*#28] +[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] [visit_exp []] -[visit_exp `funcidx*#28`] -[visit_id funcidx*#28] [visit_exp []] -[visit_exp `globalidx*#28`] -[visit_id globalidx*#28] [visit_exp []] -[visit_exp `tableidx*#28`] -[visit_id tableidx*#28] [visit_exp []] -[visit_exp `memidx*#28`] -[visit_id memidx*#28] [visit_exp []] -[visit_exp `elemidx*#28`] -[visit_id elemidx*#28] [visit_exp []] -[visit_exp `dataidx*#28`] -[visit_id dataidx*#28] [visit_exp []] -[visit_exp `localidx*#28`] -[visit_id localidx*#28] [visit_exp []] -[visit_exp `labelidx*#30`] -[visit_id labelidx*#30] [visit_exp []] => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{sx#3 : sx, sx : sx, `typeidx*#28` : typeidx*, `funcidx*#28` : funcidx*, `globalidx*#28` : globalidx*, `tableidx*#28` : tableidx*, `memidx*#28` : memidx*, `elemidx*#28` : elemidx*, `dataidx*#28` : dataidx*, `localidx*#28` : localidx*, `labelidx*#30` : labelidx*}(`I31.GET`_instr{sx#3}(sx)) = {`TYPES`{`typeidx*#28`} [], `FUNCS`{`funcidx*#28`} [], `GLOBALS`{`globalidx*#28`} [], `TABLES`{`tableidx*#28`} [], `MEMS`{`memidx*#28`} [], `ELEMS`{`elemidx*#28`} [], `DATAS`{`dataidx*#28`} [], `LOCALS`{`localidx*#28`} [], `LABELS`{`labelidx*#30`} []} -[check_dims] dataidx*#29 elemidx*#29 funcidx*#29 globalidx*#29 labelidx*#31 localidx*#29 memidx*#29 tableidx*#29 typeidx typeidx#29 typeidx*#29 -[visit_exp `STRUCT.NEW`_instr{typeidx#29}(typeidx)] -[visit_exp typeidx#29] -[visit_id typeidx#29] + def $free_instr{sx : sx}(`I31.GET`_instr(sx)) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} +[check_dims] typeidx +[visit_exp `STRUCT.NEW`_instr(typeidx)] [visit_exp (typeidx)] [visit_exp typeidx] [visit_id typeidx] -[visit_exp {`TYPES`{`typeidx*#29`} [], `FUNCS`{`funcidx*#29`} [], `GLOBALS`{`globalidx*#29`} [], `TABLES`{`tableidx*#29`} [], `MEMS`{`memidx*#29`} [], `ELEMS`{`elemidx*#29`} [], `DATAS`{`dataidx*#29`} [], `LOCALS`{`localidx*#29`} [], `LABELS`{`labelidx*#31`} []}] -[visit_exp `typeidx*#29`] -[visit_id typeidx*#29] +[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] [visit_exp []] -[visit_exp `funcidx*#29`] -[visit_id funcidx*#29] [visit_exp []] -[visit_exp `globalidx*#29`] -[visit_id globalidx*#29] [visit_exp []] -[visit_exp `tableidx*#29`] -[visit_id tableidx*#29] [visit_exp []] -[visit_exp `memidx*#29`] -[visit_id memidx*#29] [visit_exp []] -[visit_exp `elemidx*#29`] -[visit_id elemidx*#29] [visit_exp []] -[visit_exp `dataidx*#29`] -[visit_id dataidx*#29] [visit_exp []] -[visit_exp `localidx*#29`] -[visit_id localidx*#29] [visit_exp []] -[visit_exp `labelidx*#31`] -[visit_id labelidx*#31] [visit_exp []] => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{typeidx#29 : typeidx, typeidx : typeidx, `typeidx*#29` : typeidx*, `funcidx*#29` : funcidx*, `globalidx*#29` : globalidx*, `tableidx*#29` : tableidx*, `memidx*#29` : memidx*, `elemidx*#29` : elemidx*, `dataidx*#29` : dataidx*, `localidx*#29` : localidx*, `labelidx*#31` : labelidx*}(`STRUCT.NEW`_instr{typeidx#29}(typeidx)) = {`TYPES`{`typeidx*#29`} [], `FUNCS`{`funcidx*#29`} [], `GLOBALS`{`globalidx*#29`} [], `TABLES`{`tableidx*#29`} [], `MEMS`{`memidx*#29`} [], `ELEMS`{`elemidx*#29`} [], `DATAS`{`dataidx*#29`} [], `LOCALS`{`localidx*#29`} [], `LABELS`{`labelidx*#31`} []} -[check_dims] typeidx typeidx#31 -[visit_exp `STRUCT.NEW_DEFAULT`_instr{typeidx#31}(typeidx)] -[visit_exp typeidx#31] -[visit_id typeidx#31] + def $free_instr{typeidx : typeidx}(`STRUCT.NEW`_instr(typeidx)) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} +[check_dims] typeidx +[visit_exp `STRUCT.NEW_DEFAULT`_instr(typeidx)] [visit_exp (typeidx)] [visit_exp typeidx] [visit_id typeidx] @@ -16351,15 +15630,9 @@ DecD free_expr(expr : expr) : free [visit_id typeidx] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{typeidx#31 : typeidx, typeidx : typeidx}(`STRUCT.NEW_DEFAULT`_instr{typeidx#31}(typeidx)) = $free_typeidx(typeidx) -[check_dims] sx sx?#3 typeidx typeidx#33 u32 u32#2 -[visit_exp `STRUCT.GET`_instr{`sx?#3`, typeidx#33, u32#2}(sx?{sx <- `sx?`}, typeidx, u32)] -[visit_exp `sx?#3`] -[visit_id sx?#3] -[visit_exp typeidx#33] -[visit_id typeidx#33] -[visit_exp u32#2] -[visit_id u32#2] + def $free_instr{typeidx : typeidx}(`STRUCT.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) +[check_dims] sx typeidx u32 +[visit_exp `STRUCT.GET`_instr(sx?{sx <- `sx?`}, typeidx, u32)] [visit_exp (sx?{sx <- `sx?`}, typeidx, u32)] [visit_exp sx?{sx <- `sx?`}] [scope_enter sx] @@ -16379,13 +15652,9 @@ DecD free_expr(expr : expr) : free [visit_id typeidx] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{`sx?#3` : sx?, typeidx#33 : typeidx, u32#2 : u32, `sx?` : sx?, typeidx : typeidx, u32 : u32}(`STRUCT.GET`_instr{`sx?#3`, typeidx#33, u32#2}(sx?{sx <- `sx?`}, typeidx, u32)) = $free_typeidx(typeidx) -[check_dims] typeidx typeidx#35 u32 u32#4 -[visit_exp `STRUCT.SET`_instr{typeidx#35, u32#4}(typeidx, u32)] -[visit_exp typeidx#35] -[visit_id typeidx#35] -[visit_exp u32#4] -[visit_id u32#4] + def $free_instr{`sx?` : sx?, typeidx : typeidx, u32 : u32}(`STRUCT.GET`_instr(sx?{sx <- `sx?`}, typeidx, u32)) = $free_typeidx(typeidx) +[check_dims] typeidx u32 +[visit_exp `STRUCT.SET`_instr(typeidx, u32)] [visit_exp (typeidx, u32)] [visit_exp typeidx] [visit_id typeidx] @@ -16396,11 +15665,9 @@ DecD free_expr(expr : expr) : free [visit_id typeidx] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{typeidx#35 : typeidx, u32#4 : u32, typeidx : typeidx, u32 : u32}(`STRUCT.SET`_instr{typeidx#35, u32#4}(typeidx, u32)) = $free_typeidx(typeidx) -[check_dims] typeidx typeidx#37 -[visit_exp `ARRAY.NEW`_instr{typeidx#37}(typeidx)] -[visit_exp typeidx#37] -[visit_id typeidx#37] + def $free_instr{typeidx : typeidx, u32 : u32}(`STRUCT.SET`_instr(typeidx, u32)) = $free_typeidx(typeidx) +[check_dims] typeidx +[visit_exp `ARRAY.NEW`_instr(typeidx)] [visit_exp (typeidx)] [visit_exp typeidx] [visit_id typeidx] @@ -16409,11 +15676,9 @@ DecD free_expr(expr : expr) : free [visit_id typeidx] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{typeidx#37 : typeidx, typeidx : typeidx}(`ARRAY.NEW`_instr{typeidx#37}(typeidx)) = $free_typeidx(typeidx) -[check_dims] typeidx typeidx#39 -[visit_exp `ARRAY.NEW_DEFAULT`_instr{typeidx#39}(typeidx)] -[visit_exp typeidx#39] -[visit_id typeidx#39] + def $free_instr{typeidx : typeidx}(`ARRAY.NEW`_instr(typeidx)) = $free_typeidx(typeidx) +[check_dims] typeidx +[visit_exp `ARRAY.NEW_DEFAULT`_instr(typeidx)] [visit_exp (typeidx)] [visit_exp typeidx] [visit_id typeidx] @@ -16422,13 +15687,9 @@ DecD free_expr(expr : expr) : free [visit_id typeidx] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{typeidx#39 : typeidx, typeidx : typeidx}(`ARRAY.NEW_DEFAULT`_instr{typeidx#39}(typeidx)) = $free_typeidx(typeidx) -[check_dims] typeidx typeidx#41 u32 u32#6 -[visit_exp `ARRAY.NEW_FIXED`_instr{typeidx#41, u32#6}(typeidx, u32)] -[visit_exp typeidx#41] -[visit_id typeidx#41] -[visit_exp u32#6] -[visit_id u32#6] + def $free_instr{typeidx : typeidx}(`ARRAY.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) +[check_dims] typeidx u32 +[visit_exp `ARRAY.NEW_FIXED`_instr(typeidx, u32)] [visit_exp (typeidx, u32)] [visit_exp typeidx] [visit_id typeidx] @@ -16439,13 +15700,9 @@ DecD free_expr(expr : expr) : free [visit_id typeidx] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{typeidx#41 : typeidx, u32#6 : u32, typeidx : typeidx, u32 : u32}(`ARRAY.NEW_FIXED`_instr{typeidx#41, u32#6}(typeidx, u32)) = $free_typeidx(typeidx) -[check_dims] dataidx dataidx#1 typeidx typeidx#43 -[visit_exp `ARRAY.NEW_DATA`_instr{typeidx#43, dataidx#1}(typeidx, dataidx)] -[visit_exp typeidx#43] -[visit_id typeidx#43] -[visit_exp dataidx#1] -[visit_id dataidx#1] + def $free_instr{typeidx : typeidx, u32 : u32}(`ARRAY.NEW_FIXED`_instr(typeidx, u32)) = $free_typeidx(typeidx) +[check_dims] dataidx typeidx +[visit_exp `ARRAY.NEW_DATA`_instr(typeidx, dataidx)] [visit_exp (typeidx, dataidx)] [visit_exp typeidx] [visit_id typeidx] @@ -16460,13 +15717,9 @@ DecD free_expr(expr : expr) : free [visit_id dataidx] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{typeidx#43 : typeidx, dataidx#1 : dataidx, typeidx : typeidx, dataidx : dataidx}(`ARRAY.NEW_DATA`_instr{typeidx#43, dataidx#1}(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) -[check_dims] elemidx elemidx#1 typeidx typeidx#45 -[visit_exp `ARRAY.NEW_ELEM`_instr{typeidx#45, elemidx#1}(typeidx, elemidx)] -[visit_exp typeidx#45] -[visit_id typeidx#45] -[visit_exp elemidx#1] -[visit_id elemidx#1] + def $free_instr{typeidx : typeidx, dataidx : dataidx}(`ARRAY.NEW_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) +[check_dims] elemidx typeidx +[visit_exp `ARRAY.NEW_ELEM`_instr(typeidx, elemidx)] [visit_exp (typeidx, elemidx)] [visit_exp typeidx] [visit_id typeidx] @@ -16481,13 +15734,9 @@ DecD free_expr(expr : expr) : free [visit_id elemidx] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{typeidx#45 : typeidx, elemidx#1 : elemidx, typeidx : typeidx, elemidx : elemidx}(`ARRAY.NEW_ELEM`_instr{typeidx#45, elemidx#1}(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) -[check_dims] sx sx?#5 typeidx typeidx#47 -[visit_exp `ARRAY.GET`_instr{`sx?#5`, typeidx#47}(sx?{sx <- `sx?`}, typeidx)] -[visit_exp `sx?#5`] -[visit_id sx?#5] -[visit_exp typeidx#47] -[visit_id typeidx#47] + def $free_instr{typeidx : typeidx, elemidx : elemidx}(`ARRAY.NEW_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) +[check_dims] sx typeidx +[visit_exp `ARRAY.GET`_instr(sx?{sx <- `sx?`}, typeidx)] [visit_exp (sx?{sx <- `sx?`}, typeidx)] [visit_exp sx?{sx <- `sx?`}] [scope_enter sx] @@ -16505,11 +15754,9 @@ DecD free_expr(expr : expr) : free [visit_id typeidx] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{`sx?#5` : sx?, typeidx#47 : typeidx, `sx?` : sx?, typeidx : typeidx}(`ARRAY.GET`_instr{`sx?#5`, typeidx#47}(sx?{sx <- `sx?`}, typeidx)) = $free_typeidx(typeidx) -[check_dims] typeidx typeidx#49 -[visit_exp `ARRAY.SET`_instr{typeidx#49}(typeidx)] -[visit_exp typeidx#49] -[visit_id typeidx#49] + def $free_instr{`sx?` : sx?, typeidx : typeidx}(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, typeidx)) = $free_typeidx(typeidx) +[check_dims] typeidx +[visit_exp `ARRAY.SET`_instr(typeidx)] [visit_exp (typeidx)] [visit_exp typeidx] [visit_id typeidx] @@ -16518,45 +15765,25 @@ DecD free_expr(expr : expr) : free [visit_id typeidx] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{typeidx#49 : typeidx, typeidx : typeidx}(`ARRAY.SET`_instr{typeidx#49}(typeidx)) = $free_typeidx(typeidx) -[check_dims] dataidx*#30 elemidx*#30 funcidx*#30 globalidx*#30 labelidx*#32 localidx*#30 memidx*#30 tableidx*#30 typeidx*#30 + def $free_instr{typeidx : typeidx}(`ARRAY.SET`_instr(typeidx)) = $free_typeidx(typeidx) +[check_dims] [visit_exp `ARRAY.LEN`_instr] [visit_exp ()] -[visit_exp {`TYPES`{`typeidx*#30`} [], `FUNCS`{`funcidx*#30`} [], `GLOBALS`{`globalidx*#30`} [], `TABLES`{`tableidx*#30`} [], `MEMS`{`memidx*#30`} [], `ELEMS`{`elemidx*#30`} [], `DATAS`{`dataidx*#30`} [], `LOCALS`{`localidx*#30`} [], `LABELS`{`labelidx*#32`} []}] -[visit_exp `typeidx*#30`] -[visit_id typeidx*#30] +[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] [visit_exp []] -[visit_exp `funcidx*#30`] -[visit_id funcidx*#30] [visit_exp []] -[visit_exp `globalidx*#30`] -[visit_id globalidx*#30] [visit_exp []] -[visit_exp `tableidx*#30`] -[visit_id tableidx*#30] [visit_exp []] -[visit_exp `memidx*#30`] -[visit_id memidx*#30] [visit_exp []] -[visit_exp `elemidx*#30`] -[visit_id elemidx*#30] [visit_exp []] -[visit_exp `dataidx*#30`] -[visit_id dataidx*#30] [visit_exp []] -[visit_exp `localidx*#30`] -[visit_id localidx*#30] [visit_exp []] -[visit_exp `labelidx*#32`] -[visit_id labelidx*#32] [visit_exp []] => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{`typeidx*#30` : typeidx*, `funcidx*#30` : funcidx*, `globalidx*#30` : globalidx*, `tableidx*#30` : tableidx*, `memidx*#30` : memidx*, `elemidx*#30` : elemidx*, `dataidx*#30` : dataidx*, `localidx*#30` : localidx*, `labelidx*#32` : labelidx*}(`ARRAY.LEN`_instr) = {`TYPES`{`typeidx*#30`} [], `FUNCS`{`funcidx*#30`} [], `GLOBALS`{`globalidx*#30`} [], `TABLES`{`tableidx*#30`} [], `MEMS`{`memidx*#30`} [], `ELEMS`{`elemidx*#30`} [], `DATAS`{`dataidx*#30`} [], `LOCALS`{`localidx*#30`} [], `LABELS`{`labelidx*#32`} []} -[check_dims] typeidx typeidx#51 -[visit_exp `ARRAY.FILL`_instr{typeidx#51}(typeidx)] -[visit_exp typeidx#51] -[visit_id typeidx#51] + def $free_instr(`ARRAY.LEN`_instr) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} +[check_dims] typeidx +[visit_exp `ARRAY.FILL`_instr(typeidx)] [visit_exp (typeidx)] [visit_exp typeidx] [visit_id typeidx] @@ -16565,11 +15792,9 @@ DecD free_expr(expr : expr) : free [visit_id typeidx] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{typeidx#51 : typeidx, typeidx : typeidx}(`ARRAY.FILL`_instr{typeidx#51}(typeidx)) = $free_typeidx(typeidx) -[check_dims] typeidx#53 typeidx_1 typeidx_2 -[visit_exp `ARRAY.COPY`_instr{typeidx#53}(typeidx_1, typeidx_2)] -[visit_exp typeidx#53] -[visit_id typeidx#53] + def $free_instr{typeidx : typeidx}(`ARRAY.FILL`_instr(typeidx)) = $free_typeidx(typeidx) +[check_dims] typeidx_1 typeidx_2 +[visit_exp `ARRAY.COPY`_instr(typeidx_1, typeidx_2)] [visit_exp (typeidx_1, typeidx_2)] [visit_exp typeidx_1] [visit_id typeidx_1] @@ -16584,13 +15809,9 @@ DecD free_expr(expr : expr) : free [visit_id typeidx_2] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{typeidx#53 : typeidx, typeidx_1 : typeidx, typeidx_2 : typeidx}(`ARRAY.COPY`_instr{typeidx#53}(typeidx_1, typeidx_2)) = $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2) -[check_dims] dataidx dataidx#3 typeidx typeidx#56 -[visit_exp `ARRAY.INIT_DATA`_instr{typeidx#56, dataidx#3}(typeidx, dataidx)] -[visit_exp typeidx#56] -[visit_id typeidx#56] -[visit_exp dataidx#3] -[visit_id dataidx#3] + def $free_instr{typeidx_1 : typeidx, typeidx_2 : typeidx}(`ARRAY.COPY`_instr(typeidx_1, typeidx_2)) = $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2) +[check_dims] dataidx typeidx +[visit_exp `ARRAY.INIT_DATA`_instr(typeidx, dataidx)] [visit_exp (typeidx, dataidx)] [visit_exp typeidx] [visit_id typeidx] @@ -16605,13 +15826,9 @@ DecD free_expr(expr : expr) : free [visit_id dataidx] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{typeidx#56 : typeidx, dataidx#3 : dataidx, typeidx : typeidx, dataidx : dataidx}(`ARRAY.INIT_DATA`_instr{typeidx#56, dataidx#3}(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) -[check_dims] elemidx elemidx#3 typeidx typeidx#58 -[visit_exp `ARRAY.INIT_ELEM`_instr{typeidx#58, elemidx#3}(typeidx, elemidx)] -[visit_exp typeidx#58] -[visit_id typeidx#58] -[visit_exp elemidx#3] -[visit_id elemidx#3] + def $free_instr{typeidx : typeidx, dataidx : dataidx}(`ARRAY.INIT_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) +[check_dims] elemidx typeidx +[visit_exp `ARRAY.INIT_ELEM`_instr(typeidx, elemidx)] [visit_exp (typeidx, elemidx)] [visit_exp typeidx] [visit_id typeidx] @@ -16626,79 +15843,41 @@ DecD free_expr(expr : expr) : free [visit_id elemidx] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{typeidx#58 : typeidx, elemidx#3 : elemidx, typeidx : typeidx, elemidx : elemidx}(`ARRAY.INIT_ELEM`_instr{typeidx#58, elemidx#3}(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) -[check_dims] dataidx*#31 elemidx*#31 funcidx*#31 globalidx*#31 labelidx*#33 localidx*#31 memidx*#31 tableidx*#31 typeidx*#31 + def $free_instr{typeidx : typeidx, elemidx : elemidx}(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) +[check_dims] [visit_exp `EXTERN.CONVERT_ANY`_instr] [visit_exp ()] -[visit_exp {`TYPES`{`typeidx*#31`} [], `FUNCS`{`funcidx*#31`} [], `GLOBALS`{`globalidx*#31`} [], `TABLES`{`tableidx*#31`} [], `MEMS`{`memidx*#31`} [], `ELEMS`{`elemidx*#31`} [], `DATAS`{`dataidx*#31`} [], `LOCALS`{`localidx*#31`} [], `LABELS`{`labelidx*#33`} []}] -[visit_exp `typeidx*#31`] -[visit_id typeidx*#31] +[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] [visit_exp []] -[visit_exp `funcidx*#31`] -[visit_id funcidx*#31] [visit_exp []] -[visit_exp `globalidx*#31`] -[visit_id globalidx*#31] [visit_exp []] -[visit_exp `tableidx*#31`] -[visit_id tableidx*#31] [visit_exp []] -[visit_exp `memidx*#31`] -[visit_id memidx*#31] [visit_exp []] -[visit_exp `elemidx*#31`] -[visit_id elemidx*#31] [visit_exp []] -[visit_exp `dataidx*#31`] -[visit_id dataidx*#31] [visit_exp []] -[visit_exp `localidx*#31`] -[visit_id localidx*#31] [visit_exp []] -[visit_exp `labelidx*#33`] -[visit_id labelidx*#33] [visit_exp []] => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{`typeidx*#31` : typeidx*, `funcidx*#31` : funcidx*, `globalidx*#31` : globalidx*, `tableidx*#31` : tableidx*, `memidx*#31` : memidx*, `elemidx*#31` : elemidx*, `dataidx*#31` : dataidx*, `localidx*#31` : localidx*, `labelidx*#33` : labelidx*}(`EXTERN.CONVERT_ANY`_instr) = {`TYPES`{`typeidx*#31`} [], `FUNCS`{`funcidx*#31`} [], `GLOBALS`{`globalidx*#31`} [], `TABLES`{`tableidx*#31`} [], `MEMS`{`memidx*#31`} [], `ELEMS`{`elemidx*#31`} [], `DATAS`{`dataidx*#31`} [], `LOCALS`{`localidx*#31`} [], `LABELS`{`labelidx*#33`} []} -[check_dims] dataidx*#32 elemidx*#32 funcidx*#32 globalidx*#32 labelidx*#34 localidx*#32 memidx*#32 tableidx*#32 typeidx*#32 + def $free_instr(`EXTERN.CONVERT_ANY`_instr) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} +[check_dims] [visit_exp `ANY.CONVERT_EXTERN`_instr] [visit_exp ()] -[visit_exp {`TYPES`{`typeidx*#32`} [], `FUNCS`{`funcidx*#32`} [], `GLOBALS`{`globalidx*#32`} [], `TABLES`{`tableidx*#32`} [], `MEMS`{`memidx*#32`} [], `ELEMS`{`elemidx*#32`} [], `DATAS`{`dataidx*#32`} [], `LOCALS`{`localidx*#32`} [], `LABELS`{`labelidx*#34`} []}] -[visit_exp `typeidx*#32`] -[visit_id typeidx*#32] +[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] [visit_exp []] -[visit_exp `funcidx*#32`] -[visit_id funcidx*#32] [visit_exp []] -[visit_exp `globalidx*#32`] -[visit_id globalidx*#32] [visit_exp []] -[visit_exp `tableidx*#32`] -[visit_id tableidx*#32] [visit_exp []] -[visit_exp `memidx*#32`] -[visit_id memidx*#32] [visit_exp []] -[visit_exp `elemidx*#32`] -[visit_id elemidx*#32] [visit_exp []] -[visit_exp `dataidx*#32`] -[visit_id dataidx*#32] [visit_exp []] -[visit_exp `localidx*#32`] -[visit_id localidx*#32] [visit_exp []] -[visit_exp `labelidx*#34`] -[visit_id labelidx*#34] [visit_exp []] => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{`typeidx*#32` : typeidx*, `funcidx*#32` : funcidx*, `globalidx*#32` : globalidx*, `tableidx*#32` : tableidx*, `memidx*#32` : memidx*, `elemidx*#32` : elemidx*, `dataidx*#32` : dataidx*, `localidx*#32` : localidx*, `labelidx*#34` : labelidx*}(`ANY.CONVERT_EXTERN`_instr) = {`TYPES`{`typeidx*#32`} [], `FUNCS`{`funcidx*#32`} [], `GLOBALS`{`globalidx*#32`} [], `TABLES`{`tableidx*#32`} [], `MEMS`{`memidx*#32`} [], `ELEMS`{`elemidx*#32`} [], `DATAS`{`dataidx*#32`} [], `LOCALS`{`localidx*#32`} [], `LABELS`{`labelidx*#34`} []} -[check_dims] localidx localidx#1 -[visit_exp `LOCAL.GET`_instr{localidx#1}(localidx)] -[visit_exp localidx#1] -[visit_id localidx#1] + def $free_instr(`ANY.CONVERT_EXTERN`_instr) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} +[check_dims] localidx +[visit_exp `LOCAL.GET`_instr(localidx)] [visit_exp (localidx)] [visit_exp localidx] [visit_id localidx] @@ -16707,11 +15886,9 @@ DecD free_expr(expr : expr) : free [visit_id localidx] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{localidx#1 : localidx, localidx : localidx}(`LOCAL.GET`_instr{localidx#1}(localidx)) = $free_localidx(localidx) -[check_dims] localidx localidx#3 -[visit_exp `LOCAL.SET`_instr{localidx#3}(localidx)] -[visit_exp localidx#3] -[visit_id localidx#3] + def $free_instr{localidx : localidx}(`LOCAL.GET`_instr(localidx)) = $free_localidx(localidx) +[check_dims] localidx +[visit_exp `LOCAL.SET`_instr(localidx)] [visit_exp (localidx)] [visit_exp localidx] [visit_id localidx] @@ -16720,11 +15897,9 @@ DecD free_expr(expr : expr) : free [visit_id localidx] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{localidx#3 : localidx, localidx : localidx}(`LOCAL.SET`_instr{localidx#3}(localidx)) = $free_localidx(localidx) -[check_dims] localidx localidx#5 -[visit_exp `LOCAL.TEE`_instr{localidx#5}(localidx)] -[visit_exp localidx#5] -[visit_id localidx#5] + def $free_instr{localidx : localidx}(`LOCAL.SET`_instr(localidx)) = $free_localidx(localidx) +[check_dims] localidx +[visit_exp `LOCAL.TEE`_instr(localidx)] [visit_exp (localidx)] [visit_exp localidx] [visit_id localidx] @@ -16733,11 +15908,9 @@ DecD free_expr(expr : expr) : free [visit_id localidx] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{localidx#5 : localidx, localidx : localidx}(`LOCAL.TEE`_instr{localidx#5}(localidx)) = $free_localidx(localidx) -[check_dims] globalidx globalidx#5 -[visit_exp `GLOBAL.GET`_instr{globalidx#5}(globalidx)] -[visit_exp globalidx#5] -[visit_id globalidx#5] + def $free_instr{localidx : localidx}(`LOCAL.TEE`_instr(localidx)) = $free_localidx(localidx) +[check_dims] globalidx +[visit_exp `GLOBAL.GET`_instr(globalidx)] [visit_exp (globalidx)] [visit_exp globalidx] [visit_id globalidx] @@ -16746,11 +15919,9 @@ DecD free_expr(expr : expr) : free [visit_id globalidx] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{globalidx#5 : globalidx, globalidx : globalidx}(`GLOBAL.GET`_instr{globalidx#5}(globalidx)) = $free_globalidx(globalidx) -[check_dims] globalidx globalidx#7 -[visit_exp `GLOBAL.SET`_instr{globalidx#7}(globalidx)] -[visit_exp globalidx#7] -[visit_id globalidx#7] + def $free_instr{globalidx : globalidx}(`GLOBAL.GET`_instr(globalidx)) = $free_globalidx(globalidx) +[check_dims] globalidx +[visit_exp `GLOBAL.SET`_instr(globalidx)] [visit_exp (globalidx)] [visit_exp globalidx] [visit_id globalidx] @@ -16759,11 +15930,9 @@ DecD free_expr(expr : expr) : free [visit_id globalidx] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{globalidx#7 : globalidx, globalidx : globalidx}(`GLOBAL.SET`_instr{globalidx#7}(globalidx)) = $free_globalidx(globalidx) -[check_dims] tableidx tableidx#9 -[visit_exp `TABLE.GET`_instr{tableidx#9}(tableidx)] -[visit_exp tableidx#9] -[visit_id tableidx#9] + def $free_instr{globalidx : globalidx}(`GLOBAL.SET`_instr(globalidx)) = $free_globalidx(globalidx) +[check_dims] tableidx +[visit_exp `TABLE.GET`_instr(tableidx)] [visit_exp (tableidx)] [visit_exp tableidx] [visit_id tableidx] @@ -16772,11 +15941,9 @@ DecD free_expr(expr : expr) : free [visit_id tableidx] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{tableidx#9 : tableidx, tableidx : tableidx}(`TABLE.GET`_instr{tableidx#9}(tableidx)) = $free_tableidx(tableidx) -[check_dims] tableidx tableidx#11 -[visit_exp `TABLE.SET`_instr{tableidx#11}(tableidx)] -[visit_exp tableidx#11] -[visit_id tableidx#11] + def $free_instr{tableidx : tableidx}(`TABLE.GET`_instr(tableidx)) = $free_tableidx(tableidx) +[check_dims] tableidx +[visit_exp `TABLE.SET`_instr(tableidx)] [visit_exp (tableidx)] [visit_exp tableidx] [visit_id tableidx] @@ -16785,11 +15952,9 @@ DecD free_expr(expr : expr) : free [visit_id tableidx] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{tableidx#11 : tableidx, tableidx : tableidx}(`TABLE.SET`_instr{tableidx#11}(tableidx)) = $free_tableidx(tableidx) -[check_dims] tableidx tableidx#13 -[visit_exp `TABLE.SIZE`_instr{tableidx#13}(tableidx)] -[visit_exp tableidx#13] -[visit_id tableidx#13] + def $free_instr{tableidx : tableidx}(`TABLE.SET`_instr(tableidx)) = $free_tableidx(tableidx) +[check_dims] tableidx +[visit_exp `TABLE.SIZE`_instr(tableidx)] [visit_exp (tableidx)] [visit_exp tableidx] [visit_id tableidx] @@ -16798,11 +15963,9 @@ DecD free_expr(expr : expr) : free [visit_id tableidx] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{tableidx#13 : tableidx, tableidx : tableidx}(`TABLE.SIZE`_instr{tableidx#13}(tableidx)) = $free_tableidx(tableidx) -[check_dims] tableidx tableidx#15 -[visit_exp `TABLE.GROW`_instr{tableidx#15}(tableidx)] -[visit_exp tableidx#15] -[visit_id tableidx#15] + def $free_instr{tableidx : tableidx}(`TABLE.SIZE`_instr(tableidx)) = $free_tableidx(tableidx) +[check_dims] tableidx +[visit_exp `TABLE.GROW`_instr(tableidx)] [visit_exp (tableidx)] [visit_exp tableidx] [visit_id tableidx] @@ -16811,11 +15974,9 @@ DecD free_expr(expr : expr) : free [visit_id tableidx] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{tableidx#15 : tableidx, tableidx : tableidx}(`TABLE.GROW`_instr{tableidx#15}(tableidx)) = $free_tableidx(tableidx) -[check_dims] tableidx tableidx#17 -[visit_exp `TABLE.FILL`_instr{tableidx#17}(tableidx)] -[visit_exp tableidx#17] -[visit_id tableidx#17] + def $free_instr{tableidx : tableidx}(`TABLE.GROW`_instr(tableidx)) = $free_tableidx(tableidx) +[check_dims] tableidx +[visit_exp `TABLE.FILL`_instr(tableidx)] [visit_exp (tableidx)] [visit_exp tableidx] [visit_id tableidx] @@ -16824,11 +15985,9 @@ DecD free_expr(expr : expr) : free [visit_id tableidx] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{tableidx#17 : tableidx, tableidx : tableidx}(`TABLE.FILL`_instr{tableidx#17}(tableidx)) = $free_tableidx(tableidx) -[check_dims] tableidx#19 tableidx_1 tableidx_2 -[visit_exp `TABLE.COPY`_instr{tableidx#19}(tableidx_1, tableidx_2)] -[visit_exp tableidx#19] -[visit_id tableidx#19] + def $free_instr{tableidx : tableidx}(`TABLE.FILL`_instr(tableidx)) = $free_tableidx(tableidx) +[check_dims] tableidx_1 tableidx_2 +[visit_exp `TABLE.COPY`_instr(tableidx_1, tableidx_2)] [visit_exp (tableidx_1, tableidx_2)] [visit_exp tableidx_1] [visit_id tableidx_1] @@ -16843,13 +16002,9 @@ DecD free_expr(expr : expr) : free [visit_id tableidx_2] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{tableidx#19 : tableidx, tableidx_1 : tableidx, tableidx_2 : tableidx}(`TABLE.COPY`_instr{tableidx#19}(tableidx_1, tableidx_2)) = $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2) -[check_dims] elemidx elemidx#5 tableidx tableidx#22 -[visit_exp `TABLE.INIT`_instr{tableidx#22, elemidx#5}(tableidx, elemidx)] -[visit_exp tableidx#22] -[visit_id tableidx#22] -[visit_exp elemidx#5] -[visit_id elemidx#5] + def $free_instr{tableidx_1 : tableidx, tableidx_2 : tableidx}(`TABLE.COPY`_instr(tableidx_1, tableidx_2)) = $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2) +[check_dims] elemidx tableidx +[visit_exp `TABLE.INIT`_instr(tableidx, elemidx)] [visit_exp (tableidx, elemidx)] [visit_exp tableidx] [visit_id tableidx] @@ -16864,11 +16019,9 @@ DecD free_expr(expr : expr) : free [visit_id elemidx] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{tableidx#22 : tableidx, elemidx#5 : elemidx, tableidx : tableidx, elemidx : elemidx}(`TABLE.INIT`_instr{tableidx#22, elemidx#5}(tableidx, elemidx)) = $free_tableidx(tableidx) +++ $free_elemidx(elemidx) -[check_dims] elemidx elemidx#7 -[visit_exp `ELEM.DROP`_instr{elemidx#7}(elemidx)] -[visit_exp elemidx#7] -[visit_id elemidx#7] + def $free_instr{tableidx : tableidx, elemidx : elemidx}(`TABLE.INIT`_instr(tableidx, elemidx)) = $free_tableidx(tableidx) +++ $free_elemidx(elemidx) +[check_dims] elemidx +[visit_exp `ELEM.DROP`_instr(elemidx)] [visit_exp (elemidx)] [visit_exp elemidx] [visit_id elemidx] @@ -16877,15 +16030,9 @@ DecD free_expr(expr : expr) : free [visit_id elemidx] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{elemidx#7 : elemidx, elemidx : elemidx}(`ELEM.DROP`_instr{elemidx#7}(elemidx)) = $free_elemidx(elemidx) -[check_dims] loadop memarg memarg#1 memidx memidx#5 numtype numtype?#1 -[visit_exp `LOAD`_instr{`numtype?#1`, memidx#5, memarg#1}(numtype, loadop?{loadop <- `loadop?`}, memidx, memarg)] -[visit_exp `numtype?#1`] -[visit_id numtype?#1] -[visit_exp memidx#5] -[visit_id memidx#5] -[visit_exp memarg#1] -[visit_id memarg#1] + def $free_instr{elemidx : elemidx}(`ELEM.DROP`_instr(elemidx)) = $free_elemidx(elemidx) +[check_dims] loadop memarg memidx numtype +[visit_exp `LOAD`_instr(numtype, loadop?{loadop <- `loadop?`}, memidx, memarg)] [visit_exp (numtype, loadop?{loadop <- `loadop?`}, memidx, memarg)] [visit_exp numtype] [visit_id numtype] @@ -16911,15 +16058,9 @@ DecD free_expr(expr : expr) : free [visit_id memidx] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{`numtype?#1` : numtype?, memidx#5 : memidx, memarg#1 : memarg, numtype : numtype, `loadop?` : loadop_(numtype)?, memidx : memidx, memarg : memarg}(`LOAD`_instr{`numtype?#1`, memidx#5, memarg#1}(numtype, loadop?{loadop <- `loadop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) -[check_dims] memarg memarg#3 memidx memidx#7 numtype numtype?#2 storeop -[visit_exp `STORE`_instr{`numtype?#2`, memidx#7, memarg#3}(numtype, storeop?{storeop <- `storeop?`}, memidx, memarg)] -[visit_exp `numtype?#2`] -[visit_id numtype?#2] -[visit_exp memidx#7] -[visit_id memidx#7] -[visit_exp memarg#3] -[visit_id memarg#3] + 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) +[check_dims] memarg memidx numtype storeop +[visit_exp `STORE`_instr(numtype, storeop?{storeop <- `storeop?`}, memidx, memarg)] [visit_exp (numtype, storeop?{storeop <- `storeop?`}, memidx, memarg)] [visit_exp numtype] [visit_id numtype] @@ -16945,15 +16086,9 @@ DecD free_expr(expr : expr) : free [visit_id memidx] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{`numtype?#2` : numtype?, memidx#7 : memidx, memarg#3 : memarg, numtype : numtype, `storeop?` : storeop_(numtype)?, memidx : memidx, memarg : memarg}(`STORE`_instr{`numtype?#2`, memidx#7, memarg#3}(numtype, storeop?{storeop <- `storeop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) -[check_dims] memarg memarg#5 memidx memidx#9 vectype vectype?#1 vloadop -[visit_exp `VLOAD`_instr{`vectype?#1`, memidx#9, memarg#5}(vectype, vloadop?{vloadop <- `vloadop?`}, memidx, memarg)] -[visit_exp `vectype?#1`] -[visit_id vectype?#1] -[visit_exp memidx#9] -[visit_id memidx#9] -[visit_exp memarg#5] -[visit_id memarg#5] + 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) +[check_dims] memarg memidx vectype vloadop +[visit_exp `VLOAD`_instr(vectype, vloadop?{vloadop <- `vloadop?`}, memidx, memarg)] [visit_exp (vectype, vloadop?{vloadop <- `vloadop?`}, memidx, memarg)] [visit_exp vectype] [visit_id vectype] @@ -16979,19 +16114,9 @@ DecD free_expr(expr : expr) : free [visit_id memidx] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{`vectype?#1` : vectype?, memidx#9 : memidx, memarg#5 : memarg, vectype : vectype, `vloadop?` : vloadop_(vectype)?, memidx : memidx, memarg : memarg}(`VLOAD`_instr{`vectype?#1`, memidx#9, memarg#5}(vectype, vloadop?{vloadop <- `vloadop?`}, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) -[check_dims] laneidx laneidx#5 memarg memarg#7 memidx memidx#11 sz sz#1 vectype vectype#14 -[visit_exp `VLOAD_LANE`_instr{vectype#14, sz#1, memidx#11, memarg#7, laneidx#5}(vectype, sz, memidx, memarg, laneidx)] -[visit_exp vectype#14] -[visit_id vectype#14] -[visit_exp sz#1] -[visit_id sz#1] -[visit_exp memidx#11] -[visit_id memidx#11] -[visit_exp memarg#7] -[visit_id memarg#7] -[visit_exp laneidx#5] -[visit_id laneidx#5] + 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) +[check_dims] laneidx memarg memidx sz vectype +[visit_exp `VLOAD_LANE`_instr(vectype, sz, memidx, memarg, laneidx)] [visit_exp (vectype, sz, memidx, memarg, laneidx)] [visit_exp vectype] [visit_id vectype] @@ -17012,15 +16137,9 @@ DecD free_expr(expr : expr) : free [visit_id memidx] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{vectype#14 : vectype, sz#1 : sz, memidx#11 : memidx, memarg#7 : memarg, laneidx#5 : laneidx, vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(`VLOAD_LANE`_instr{vectype#14, sz#1, memidx#11, memarg#7, laneidx#5}(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) -[check_dims] memarg memarg#9 memidx memidx#13 vectype vectype#16 -[visit_exp `VSTORE`_instr{vectype#16, memidx#13, memarg#9}(vectype, memidx, memarg)] -[visit_exp vectype#16] -[visit_id vectype#16] -[visit_exp memidx#13] -[visit_id memidx#13] -[visit_exp memarg#9] -[visit_id memarg#9] + 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) +[check_dims] memarg memidx vectype +[visit_exp `VSTORE`_instr(vectype, memidx, memarg)] [visit_exp (vectype, memidx, memarg)] [visit_exp vectype] [visit_id vectype] @@ -17037,19 +16156,9 @@ DecD free_expr(expr : expr) : free [visit_id memidx] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{vectype#16 : vectype, memidx#13 : memidx, memarg#9 : memarg, vectype : vectype, memidx : memidx, memarg : memarg}(`VSTORE`_instr{vectype#16, memidx#13, memarg#9}(vectype, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) -[check_dims] laneidx laneidx#7 memarg memarg#11 memidx memidx#15 sz sz#3 vectype vectype#18 -[visit_exp `VSTORE_LANE`_instr{vectype#18, sz#3, memidx#15, memarg#11, laneidx#7}(vectype, sz, memidx, memarg, laneidx)] -[visit_exp vectype#18] -[visit_id vectype#18] -[visit_exp sz#3] -[visit_id sz#3] -[visit_exp memidx#15] -[visit_id memidx#15] -[visit_exp memarg#11] -[visit_id memarg#11] -[visit_exp laneidx#7] -[visit_id laneidx#7] + def $free_instr{vectype : vectype, memidx : memidx, memarg : memarg}(`VSTORE`_instr(vectype, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) +[check_dims] laneidx memarg memidx sz vectype +[visit_exp `VSTORE_LANE`_instr(vectype, sz, memidx, memarg, laneidx)] [visit_exp (vectype, sz, memidx, memarg, laneidx)] [visit_exp vectype] [visit_id vectype] @@ -17070,11 +16179,9 @@ DecD free_expr(expr : expr) : free [visit_id memidx] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{vectype#18 : vectype, sz#3 : sz, memidx#15 : memidx, memarg#11 : memarg, laneidx#7 : laneidx, vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(`VSTORE_LANE`_instr{vectype#18, sz#3, memidx#15, memarg#11, laneidx#7}(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) -[check_dims] memidx memidx#17 -[visit_exp `MEMORY.SIZE`_instr{memidx#17}(memidx)] -[visit_exp memidx#17] -[visit_id memidx#17] + 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) +[check_dims] memidx +[visit_exp `MEMORY.SIZE`_instr(memidx)] [visit_exp (memidx)] [visit_exp memidx] [visit_id memidx] @@ -17083,11 +16190,9 @@ DecD free_expr(expr : expr) : free [visit_id memidx] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{memidx#17 : memidx, memidx : memidx}(`MEMORY.SIZE`_instr{memidx#17}(memidx)) = $free_memidx(memidx) -[check_dims] memidx memidx#19 -[visit_exp `MEMORY.GROW`_instr{memidx#19}(memidx)] -[visit_exp memidx#19] -[visit_id memidx#19] + def $free_instr{memidx : memidx}(`MEMORY.SIZE`_instr(memidx)) = $free_memidx(memidx) +[check_dims] memidx +[visit_exp `MEMORY.GROW`_instr(memidx)] [visit_exp (memidx)] [visit_exp memidx] [visit_id memidx] @@ -17096,11 +16201,9 @@ DecD free_expr(expr : expr) : free [visit_id memidx] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{memidx#19 : memidx, memidx : memidx}(`MEMORY.GROW`_instr{memidx#19}(memidx)) = $free_memidx(memidx) -[check_dims] memidx memidx#21 -[visit_exp `MEMORY.FILL`_instr{memidx#21}(memidx)] -[visit_exp memidx#21] -[visit_id memidx#21] + def $free_instr{memidx : memidx}(`MEMORY.GROW`_instr(memidx)) = $free_memidx(memidx) +[check_dims] memidx +[visit_exp `MEMORY.FILL`_instr(memidx)] [visit_exp (memidx)] [visit_exp memidx] [visit_id memidx] @@ -17109,11 +16212,9 @@ DecD free_expr(expr : expr) : free [visit_id memidx] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{memidx#21 : memidx, memidx : memidx}(`MEMORY.FILL`_instr{memidx#21}(memidx)) = $free_memidx(memidx) -[check_dims] memidx#23 memidx_1 memidx_2 -[visit_exp `MEMORY.COPY`_instr{memidx#23}(memidx_1, memidx_2)] -[visit_exp memidx#23] -[visit_id memidx#23] + def $free_instr{memidx : memidx}(`MEMORY.FILL`_instr(memidx)) = $free_memidx(memidx) +[check_dims] memidx_1 memidx_2 +[visit_exp `MEMORY.COPY`_instr(memidx_1, memidx_2)] [visit_exp (memidx_1, memidx_2)] [visit_exp memidx_1] [visit_id memidx_1] @@ -17128,13 +16229,9 @@ DecD free_expr(expr : expr) : free [visit_id memidx_2] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{memidx#23 : memidx, memidx_1 : memidx, memidx_2 : memidx}(`MEMORY.COPY`_instr{memidx#23}(memidx_1, memidx_2)) = $free_memidx(memidx_1) +++ $free_memidx(memidx_2) -[check_dims] dataidx dataidx#5 memidx memidx#26 -[visit_exp `MEMORY.INIT`_instr{memidx#26, dataidx#5}(memidx, dataidx)] -[visit_exp memidx#26] -[visit_id memidx#26] -[visit_exp dataidx#5] -[visit_id dataidx#5] + def $free_instr{memidx_1 : memidx, memidx_2 : memidx}(`MEMORY.COPY`_instr(memidx_1, memidx_2)) = $free_memidx(memidx_1) +++ $free_memidx(memidx_2) +[check_dims] dataidx memidx +[visit_exp `MEMORY.INIT`_instr(memidx, dataidx)] [visit_exp (memidx, dataidx)] [visit_exp memidx] [visit_id memidx] @@ -17149,11 +16246,9 @@ DecD free_expr(expr : expr) : free [visit_id dataidx] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{memidx#26 : memidx, dataidx#5 : dataidx, memidx : memidx, dataidx : dataidx}(`MEMORY.INIT`_instr{memidx#26, dataidx#5}(memidx, dataidx)) = $free_memidx(memidx) +++ $free_dataidx(dataidx) -[check_dims] dataidx dataidx#7 -[visit_exp `DATA.DROP`_instr{dataidx#7}(dataidx)] -[visit_exp dataidx#7] -[visit_id dataidx#7] + def $free_instr{memidx : memidx, dataidx : dataidx}(`MEMORY.INIT`_instr(memidx, dataidx)) = $free_memidx(memidx) +++ $free_dataidx(dataidx) +[check_dims] dataidx +[visit_exp `DATA.DROP`_instr(dataidx)] [visit_exp (dataidx)] [visit_exp dataidx] [visit_id dataidx] @@ -17162,7 +16257,7 @@ DecD free_expr(expr : expr) : free [visit_id dataidx] not free => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{dataidx#7 : dataidx, dataidx : dataidx}(`DATA.DROP`_instr{dataidx#7}(dataidx)) = $free_dataidx(dataidx) + def $free_instr{dataidx : dataidx}(`DATA.DROP`_instr(dataidx)) = $free_dataidx(dataidx) [check_dims] _ DecD shift_labelidxs(labelidx*) : labelidx* [visit_id _] not free @@ -17172,12 +16267,10 @@ DecD shift_labelidxs(labelidx*) : labelidx* => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $shift_labelidxs([]) = [] -[check_dims] i#3333 labelidx' -[visit_exp [`%`_labelidx{i#3333}(0)] ++ labelidx'*{labelidx' <- `labelidx'*`}] -[visit_exp [`%`_labelidx{i#3333}(0)]] -[visit_exp `%`_labelidx{i#3333}(0)] -[visit_exp i#3333] -[visit_id i#3333] +[check_dims] labelidx' +[visit_exp [`%`_labelidx(0)] ++ labelidx'*{labelidx' <- `labelidx'*`}] +[visit_exp [`%`_labelidx(0)]] +[visit_exp `%`_labelidx(0)] [visit_exp (0)] [visit_exp 0] [visit_exp labelidx'*{labelidx' <- `labelidx'*`}] @@ -17201,8 +16294,8 @@ DecD shift_labelidxs(labelidx*) : labelidx* [visit_id labelidx'*] no dims => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $shift_labelidxs{i#3333 : nat, `labelidx'*` : labelidx*}([`%`_labelidx{i#3333}(0)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) -[check_dims] i#3547 i#3557 labelidx labelidx' + def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) +[check_dims] labelidx labelidx' [visit_exp [labelidx] ++ labelidx'*{labelidx' <- `labelidx'*`}] [visit_exp [labelidx]] [visit_exp labelidx] @@ -17216,21 +16309,17 @@ DecD shift_labelidxs(labelidx*) : labelidx* [visit_exp `labelidx'*`] [visit_id labelidx'*] no dims [visit_id labelidx'*] -[visit_exp [`%`_labelidx{i#3557}((((labelidx!`%`_labelidx{i#3547}.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`})] -[visit_exp [`%`_labelidx{i#3557}((((labelidx!`%`_labelidx{i#3547}.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))]] -[visit_exp `%`_labelidx{i#3557}((((labelidx!`%`_labelidx{i#3547}.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp i#3557] -[visit_id i#3557] -[visit_exp ((((labelidx!`%`_labelidx{i#3547}.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp (((labelidx!`%`_labelidx{i#3547}.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp ((labelidx!`%`_labelidx{i#3547}.0 : nat <:> int) - (1 : nat <:> int))] -[visit_exp (labelidx!`%`_labelidx{i#3547}.0 : nat <:> int)] -[visit_exp labelidx!`%`_labelidx{i#3547}.0] -[visit_exp labelidx!`%`_labelidx{i#3547}] +[visit_exp [`%`_labelidx((((labelidx!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`})] +[visit_exp [`%`_labelidx((((labelidx!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))]] +[visit_exp `%`_labelidx((((labelidx!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp ((((labelidx!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp (((labelidx!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp ((labelidx!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int))] +[visit_exp (labelidx!`%`_labelidx.0 : nat <:> int)] +[visit_exp labelidx!`%`_labelidx.0] +[visit_exp labelidx!`%`_labelidx] [visit_exp labelidx] [visit_id labelidx] not free -[visit_exp i#3547] -[visit_id i#3547] [visit_exp (1 : nat <:> int)] [visit_exp 1] [visit_exp $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`})] @@ -17245,8 +16334,8 @@ DecD shift_labelidxs(labelidx*) : labelidx* [visit_id labelidx'*] no dims => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $shift_labelidxs{labelidx : labelidx, `labelidx'*` : labelidx*, i#3557 : nat, i#3547 : nat}([labelidx] ++ labelidx'*{labelidx' <- `labelidx'*`}) = [`%`_labelidx{i#3557}((((labelidx!`%`_labelidx{i#3547}.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) -[check_dims] free instr labelidx*#35 labelidx*#44 + 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'*`}) +[check_dims] free instr [visit_exp instr*{instr <- `instr*`}] [scope_enter instr] [visit_exp instr] @@ -17256,17 +16345,13 @@ DecD shift_labelidxs(labelidx*) : labelidx* [visit_exp `instr*`] [visit_id instr*] no dims [visit_id instr*] -[visit_exp free[`LABELS`_free{`labelidx*#35`} = $shift_labelidxs(free.`LABELS`_free{`labelidx*#44`})]] +[visit_exp free[`LABELS`_free = $shift_labelidxs(free.`LABELS`_free)]] [visit_exp free] [visit_id free] -[visit_exp `labelidx*#35`] -[visit_id labelidx*#35] -[visit_exp $shift_labelidxs(free.`LABELS`_free{`labelidx*#44`})] -[visit_exp free.`LABELS`_free{`labelidx*#44`}] +[visit_exp $shift_labelidxs(free.`LABELS`_free)] +[visit_exp free.`LABELS`_free] [visit_exp free] [visit_id free] not free -[visit_exp `labelidx*#44`] -[visit_id labelidx*#44] [visit_exp (free = $free_list($free_instr(instr)*{instr <- `instr*`}))] [visit_exp free] [visit_id free] not free @@ -17283,7 +16368,7 @@ DecD shift_labelidxs(labelidx*) : labelidx* [visit_id instr*] no dims => ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_block{`instr*` : instr*, free : free, `labelidx*#35` : labelidx*, `labelidx*#44` : labelidx*}(instr*{instr <- `instr*`}) = free[`LABELS`_free{`labelidx*#35`} = $shift_labelidxs(free.`LABELS`_free{`labelidx*#44`})] + 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*`})) [check_dims] instr [visit_exp instr*{instr <- `instr*`}] @@ -17310,20 +16395,21 @@ DecD shift_labelidxs(labelidx*) : labelidx* ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_expr{`instr*` : instr*}(instr*{instr <- `instr*`}) = $free_list($free_instr(instr)*{instr <- `instr*`}) [check_dims] ---- 1 --- [check_dims] ---- 2 --- ---- 3 --- ---- 4 --- +[scope_enter tableidx] +[visit_id tableidx] not free [visit_id tableidx] no dims -[visit_id tableidx] +[scope_enter expr] +[visit_id expr] not free [visit_id expr] no dims -[visit_id expr] +[scope_exit expr] +[scope_exit tableidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] --- 1 --- [check_dims] --- 2 --- @@ -17335,10 +16421,16 @@ DecD shift_labelidxs(labelidx*) : labelidx* --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter memidx] +[visit_id memidx] not free [visit_id memidx] no dims -[visit_id memidx] +[scope_enter expr] +[visit_id expr] not free [visit_id expr] no dims -[visit_id expr] +[scope_exit expr] +[scope_exit memidx] --- 1 --- [check_dims] --- 2 --- @@ -17350,144 +16442,229 @@ DecD shift_labelidxs(labelidx*) : labelidx* --- 2 --- --- 3 --- --- 4 --- -[visit_id rectype] no dims -[visit_id rectype] [check_dims] +[check_dims] +[scope_enter rectype] +[visit_id rectype] not free +[visit_id rectype] no dims +[scope_exit rectype] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id tagtype] no dims -[visit_id tagtype] [check_dims] +[check_dims] +[scope_enter tagtype] +[visit_id tagtype] not free +[visit_id tagtype] no dims +[scope_exit tagtype] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter globaltype] +[visit_id globaltype] not free [visit_id globaltype] no dims -[visit_id globaltype] +[scope_enter expr] +[visit_id expr] not free [visit_id expr] no dims -[visit_id expr] -[check_dims] +[scope_exit expr] +[scope_exit globaltype] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id memtype] no dims -[visit_id memtype] [check_dims] +[check_dims] +[scope_enter memtype] +[visit_id memtype] not free +[visit_id memtype] no dims +[scope_exit memtype] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter tabletype] +[visit_id tabletype] not free [visit_id tabletype] no dims -[visit_id tabletype] +[scope_enter expr] +[visit_id expr] not free [visit_id expr] no dims -[visit_id expr] -[check_dims] +[scope_exit expr] +[scope_exit tabletype] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter byte*] +[visit_id byte*] not free [visit_id byte*] no dims -[visit_id byte*] +[scope_enter datamode] +[visit_id datamode] not free [visit_id datamode] no dims -[visit_id datamode] -[check_dims] +[scope_exit datamode] +[scope_exit byte*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id valtype] no dims -[visit_id valtype] [check_dims] +[check_dims] +[scope_enter valtype] +[visit_id valtype] not free +[visit_id valtype] no dims +[scope_exit valtype] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter typeidx] +[visit_id typeidx] not free [visit_id typeidx] no dims -[visit_id typeidx] +[scope_enter local*] +[visit_id local*] not free [visit_id local*] no dims -[visit_id local*] +[scope_enter expr] +[visit_id expr] not free [visit_id expr] no dims -[visit_id expr] -[check_dims] +[scope_exit expr] +[scope_exit local*] +[scope_exit typeidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter reftype] +[visit_id reftype] not free [visit_id reftype] no dims -[visit_id reftype] +[scope_enter expr*] +[visit_id expr*] not free [visit_id expr*] no dims -[visit_id expr*] +[scope_enter elemmode] +[visit_id elemmode] not free [visit_id elemmode] no dims -[visit_id elemmode] -[check_dims] +[scope_exit elemmode] +[scope_exit expr*] +[scope_exit reftype] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id funcidx] no dims -[visit_id funcidx] [check_dims] +[check_dims] +[scope_enter funcidx] +[visit_id funcidx] not free +[visit_id funcidx] no dims +[scope_exit funcidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter name] +[visit_id name] not free [visit_id name] no dims -[visit_id name] +[scope_enter name] [visit_id name] not free [visit_id name] no dims +[scope_enter externtype] +[visit_id externtype] not free [visit_id externtype] no dims -[visit_id externtype] -[check_dims] +[scope_exit externtype] +[scope_exit name] +[scope_exit name] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter name] +[visit_id name] not free [visit_id name] no dims -[visit_id name] +[scope_enter externidx] +[visit_id externidx] not free [visit_id externidx] no dims -[visit_id externidx] -[check_dims] +[scope_exit externidx] +[scope_exit name] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter type*] +[visit_id type*] not free [visit_id type*] no dims -[visit_id type*] +[scope_enter import*] +[visit_id import*] not free [visit_id import*] no dims -[visit_id import*] +[scope_enter tag*] +[visit_id tag*] not free [visit_id tag*] no dims -[visit_id tag*] +[scope_enter global*] +[visit_id global*] not free [visit_id global*] no dims -[visit_id global*] +[scope_enter mem*] +[visit_id mem*] not free [visit_id mem*] no dims -[visit_id mem*] +[scope_enter table*] +[visit_id table*] not free [visit_id table*] no dims -[visit_id table*] +[scope_enter func*] +[visit_id func*] not free [visit_id func*] no dims -[visit_id func*] +[scope_enter data*] +[visit_id data*] not free [visit_id data*] no dims -[visit_id data*] +[scope_enter elem*] +[visit_id elem*] not free [visit_id elem*] no dims -[visit_id elem*] +[scope_enter start?] +[visit_id start?] not free [visit_id start?] no dims -[visit_id start?] +[scope_enter export*] +[visit_id export*] not free [visit_id export*] no dims -[visit_id export*] +[scope_exit export*] +[scope_exit start?] +[scope_exit elem*] +[scope_exit data*] +[scope_exit func*] +[scope_exit table*] +[scope_exit mem*] +[scope_exit global*] +[scope_exit tag*] +[scope_exit import*] +[scope_exit type*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- [check_dims] [check_dims] [check_dims] @@ -17539,10 +16716,8 @@ DecD free_export(export : export) : free [check_dims] module DecD free_module(module : module) : free [visit_id module] not free -[check_dims] rectype rectype#265 -[visit_exp `TYPE`_type{rectype#265}(rectype)] -[visit_exp rectype#265] -[visit_id rectype#265] +[check_dims] rectype +[visit_exp `TYPE`_type(rectype)] [visit_exp (rectype)] [visit_exp rectype] [visit_id rectype] @@ -17551,11 +16726,9 @@ DecD free_module(module : module) : free [visit_id rectype] not free => ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_type{rectype#265 : rectype, rectype : rectype}(`TYPE`_type{rectype#265}(rectype)) = $free_rectype(rectype) -[check_dims] tagtype tagtype#19 -[visit_exp `TAG`_tag{tagtype#19}(tagtype)] -[visit_exp tagtype#19] -[visit_id tagtype#19] + def $free_type{rectype : rectype}(`TYPE`_type(rectype)) = $free_rectype(rectype) +[check_dims] tagtype +[visit_exp `TAG`_tag(tagtype)] [visit_exp (tagtype)] [visit_exp tagtype] [visit_id tagtype] @@ -17564,13 +16737,9 @@ DecD free_module(module : module) : free [visit_id tagtype] not free => ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_tag{tagtype#19 : tagtype, tagtype : tagtype}(`TAG`_tag{tagtype#19}(tagtype)) = $free_tagtype(tagtype) -[check_dims] expr expr#11 globaltype globaltype#19 -[visit_exp `GLOBAL`_global{globaltype#19, expr#11}(globaltype, expr)] -[visit_exp globaltype#19] -[visit_id globaltype#19] -[visit_exp expr#11] -[visit_id expr#11] + def $free_tag{tagtype : tagtype}(`TAG`_tag(tagtype)) = $free_tagtype(tagtype) +[check_dims] expr globaltype +[visit_exp `GLOBAL`_global(globaltype, expr)] [visit_exp (globaltype, expr)] [visit_exp globaltype] [visit_id globaltype] @@ -17585,11 +16754,9 @@ DecD free_module(module : module) : free [visit_id expr] not free => ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_global{globaltype#19 : globaltype, expr#11 : expr, globaltype : globaltype, expr : expr}(`GLOBAL`_global{globaltype#19, expr#11}(globaltype, expr)) = $free_globaltype(globaltype) +++ $free_expr(expr) -[check_dims] memtype memtype#19 -[visit_exp `MEMORY`_mem{memtype#19}(memtype)] -[visit_exp memtype#19] -[visit_id memtype#19] + def $free_global{globaltype : globaltype, expr : expr}(`GLOBAL`_global(globaltype, expr)) = $free_globaltype(globaltype) +++ $free_expr(expr) +[check_dims] memtype +[visit_exp `MEMORY`_mem(memtype)] [visit_exp (memtype)] [visit_exp memtype] [visit_id memtype] @@ -17598,13 +16765,9 @@ DecD free_module(module : module) : free [visit_id memtype] not free => ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_mem{memtype#19 : memtype, memtype : memtype}(`MEMORY`_mem{memtype#19}(memtype)) = $free_memtype(memtype) -[check_dims] expr expr#23 tabletype tabletype#19 -[visit_exp `TABLE`_table{tabletype#19, expr#23}(tabletype, expr)] -[visit_exp tabletype#19] -[visit_id tabletype#19] -[visit_exp expr#23] -[visit_id expr#23] + def $free_mem{memtype : memtype}(`MEMORY`_mem(memtype)) = $free_memtype(memtype) +[check_dims] expr tabletype +[visit_exp `TABLE`_table(tabletype, expr)] [visit_exp (tabletype, expr)] [visit_exp tabletype] [visit_id tabletype] @@ -17619,11 +16782,9 @@ DecD free_module(module : module) : free [visit_id expr] not free => ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_table{tabletype#19 : tabletype, expr#23 : expr, tabletype : tabletype, expr : expr}(`TABLE`_table{tabletype#19, expr#23}(tabletype, expr)) = $free_tabletype(tabletype) +++ $free_expr(expr) -[check_dims] t valtype#163 -[visit_exp `LOCAL`_local{valtype#163}(t)] -[visit_exp valtype#163] -[visit_id valtype#163] + def $free_table{tabletype : tabletype, expr : expr}(`TABLE`_table(tabletype, expr)) = $free_tabletype(tabletype) +++ $free_expr(expr) +[check_dims] t +[visit_exp `LOCAL`_local(t)] [visit_exp (t)] [visit_exp t] [visit_id t] @@ -17632,15 +16793,9 @@ DecD free_module(module : module) : free [visit_id t] not free => ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_local{valtype#163 : valtype, t : valtype}(`LOCAL`_local{valtype#163}(t)) = $free_valtype(t) -[check_dims] expr expr#35 local local*#11 localidx*#33 typeidx typeidx#70 -[visit_exp `FUNC`_func{typeidx#70, `local*#11`, expr#35}(typeidx, local*{local <- `local*`}, expr)] -[visit_exp typeidx#70] -[visit_id typeidx#70] -[visit_exp `local*#11`] -[visit_id local*#11] -[visit_exp expr#35] -[visit_id expr#35] + def $free_local{t : valtype}(`LOCAL`_local(t)) = $free_valtype(t) +[check_dims] expr local typeidx +[visit_exp `FUNC`_func(typeidx, local*{local <- `local*`}, expr)] [visit_exp (typeidx, local*{local <- `local*`}, expr)] [visit_exp typeidx] [visit_id typeidx] @@ -17655,7 +16810,7 @@ DecD free_module(module : module) : free [visit_id local*] [visit_exp expr] [visit_id expr] -[visit_exp $free_typeidx(typeidx) +++ $free_list($free_local(local)*{local <- `local*`}) +++ $free_block(expr)[`LOCALS`_free{`localidx*#33`} = []]] +[visit_exp $free_typeidx(typeidx) +++ $free_list($free_local(local)*{local <- `local*`}) +++ $free_block(expr)[`LOCALS`_free = []]] [visit_exp $free_typeidx(typeidx) +++ $free_list($free_local(local)*{local <- `local*`})] [visit_exp $free_typeidx(typeidx)] [visit_exp typeidx] @@ -17671,22 +16826,16 @@ DecD free_module(module : module) : free [visit_exp `local*`] [visit_id local*] not free [visit_id local*] no dims -[visit_exp $free_block(expr)[`LOCALS`_free{`localidx*#33`} = []]] +[visit_exp $free_block(expr)[`LOCALS`_free = []]] [visit_exp $free_block(expr)] [visit_exp expr] [visit_id expr] not free -[visit_exp `localidx*#33`] -[visit_id localidx*#33] [visit_exp []] => ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_func{typeidx#70 : typeidx, `local*#11` : local*, expr#35 : expr, typeidx : typeidx, `local*` : local*, expr : expr, `localidx*#33` : localidx*}(`FUNC`_func{typeidx#70, `local*#11`, expr#35}(typeidx, local*{local <- `local*`}, expr)) = $free_typeidx(typeidx) +++ $free_list($free_local(local)*{local <- `local*`}) +++ $free_block(expr)[`LOCALS`_free{`localidx*#33`} = []] -[check_dims] byte byte*#11 datamode datamode#11 -[visit_exp `DATA`_data{`byte*#11`, datamode#11}(byte*{byte <- `byte*`}, datamode)] -[visit_exp `byte*#11`] -[visit_id byte*#11] -[visit_exp datamode#11] -[visit_id datamode#11] + 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 = []] +[check_dims] byte datamode +[visit_exp `DATA`_data(byte*{byte <- `byte*`}, datamode)] [visit_exp (byte*{byte <- `byte*`}, datamode)] [visit_exp byte*{byte <- `byte*`}] [scope_enter byte] @@ -17704,15 +16853,9 @@ DecD free_module(module : module) : free [visit_id datamode] not free => ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_data{`byte*#11` : byte*, datamode#11 : datamode, `byte*` : byte*, datamode : datamode}(`DATA`_data{`byte*#11`, datamode#11}(byte*{byte <- `byte*`}, datamode)) = $free_datamode(datamode) -[check_dims] elemmode elemmode#11 expr expr*#11 reftype reftype#157 -[visit_exp `ELEM`_elem{reftype#157, `expr*#11`, elemmode#11}(reftype, expr*{expr <- `expr*`}, elemmode)] -[visit_exp reftype#157] -[visit_id reftype#157] -[visit_exp `expr*#11`] -[visit_id expr*#11] -[visit_exp elemmode#11] -[visit_id elemmode#11] + def $free_data{`byte*` : byte*, datamode : datamode}(`DATA`_data(byte*{byte <- `byte*`}, datamode)) = $free_datamode(datamode) +[check_dims] elemmode expr reftype +[visit_exp `ELEM`_elem(reftype, expr*{expr <- `expr*`}, elemmode)] [visit_exp (reftype, expr*{expr <- `expr*`}, elemmode)] [visit_exp reftype] [visit_id reftype] @@ -17748,13 +16891,9 @@ DecD free_module(module : module) : free [visit_id elemmode] not free => ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_elem{reftype#157 : reftype, `expr*#11` : expr*, elemmode#11 : elemmode, reftype : reftype, `expr*` : expr*, elemmode : elemmode}(`ELEM`_elem{reftype#157, `expr*#11`, elemmode#11}(reftype, expr*{expr <- `expr*`}, elemmode)) = $free_reftype(reftype) +++ $free_list($free_expr(expr)*{expr <- `expr*`}) +++ $free_elemmode(elemmode) -[check_dims] expr expr#37 tableidx tableidx#24 -[visit_exp `ACTIVE`_elemmode{tableidx#24, expr#37}(tableidx, expr)] -[visit_exp tableidx#24] -[visit_id tableidx#24] -[visit_exp expr#37] -[visit_id expr#37] + 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) +[check_dims] expr tableidx +[visit_exp `ACTIVE`_elemmode(tableidx, expr)] [visit_exp (tableidx, expr)] [visit_exp tableidx] [visit_id tableidx] @@ -17769,81 +16908,41 @@ DecD free_module(module : module) : free [visit_id expr] not free => ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_elemmode{tableidx#24 : tableidx, expr#37 : expr, tableidx : tableidx, expr : expr}(`ACTIVE`_elemmode{tableidx#24, expr#37}(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) -[check_dims] dataidx*#33 elemidx*#33 funcidx*#33 globalidx*#33 labelidx*#45 localidx*#34 memidx*#33 tableidx*#33 typeidx*#33 + def $free_elemmode{tableidx : tableidx, expr : expr}(`ACTIVE`_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) +[check_dims] [visit_exp `PASSIVE`_elemmode] [visit_exp ()] -[visit_exp {`TYPES`{`typeidx*#33`} [], `FUNCS`{`funcidx*#33`} [], `GLOBALS`{`globalidx*#33`} [], `TABLES`{`tableidx*#33`} [], `MEMS`{`memidx*#33`} [], `ELEMS`{`elemidx*#33`} [], `DATAS`{`dataidx*#33`} [], `LOCALS`{`localidx*#34`} [], `LABELS`{`labelidx*#45`} []}] -[visit_exp `typeidx*#33`] -[visit_id typeidx*#33] +[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] [visit_exp []] -[visit_exp `funcidx*#33`] -[visit_id funcidx*#33] [visit_exp []] -[visit_exp `globalidx*#33`] -[visit_id globalidx*#33] [visit_exp []] -[visit_exp `tableidx*#33`] -[visit_id tableidx*#33] [visit_exp []] -[visit_exp `memidx*#33`] -[visit_id memidx*#33] [visit_exp []] -[visit_exp `elemidx*#33`] -[visit_id elemidx*#33] [visit_exp []] -[visit_exp `dataidx*#33`] -[visit_id dataidx*#33] [visit_exp []] -[visit_exp `localidx*#34`] -[visit_id localidx*#34] [visit_exp []] -[visit_exp `labelidx*#45`] -[visit_id labelidx*#45] [visit_exp []] => ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_elemmode{`typeidx*#33` : typeidx*, `funcidx*#33` : funcidx*, `globalidx*#33` : globalidx*, `tableidx*#33` : tableidx*, `memidx*#33` : memidx*, `elemidx*#33` : elemidx*, `dataidx*#33` : dataidx*, `localidx*#34` : localidx*, `labelidx*#45` : labelidx*}(`PASSIVE`_elemmode) = {`TYPES`{`typeidx*#33`} [], `FUNCS`{`funcidx*#33`} [], `GLOBALS`{`globalidx*#33`} [], `TABLES`{`tableidx*#33`} [], `MEMS`{`memidx*#33`} [], `ELEMS`{`elemidx*#33`} [], `DATAS`{`dataidx*#33`} [], `LOCALS`{`localidx*#34`} [], `LABELS`{`labelidx*#45`} []} -[check_dims] dataidx*#34 elemidx*#34 funcidx*#34 globalidx*#34 labelidx*#46 localidx*#35 memidx*#34 tableidx*#34 typeidx*#34 + def $free_elemmode(`PASSIVE`_elemmode) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} +[check_dims] [visit_exp `DECLARE`_elemmode] [visit_exp ()] -[visit_exp {`TYPES`{`typeidx*#34`} [], `FUNCS`{`funcidx*#34`} [], `GLOBALS`{`globalidx*#34`} [], `TABLES`{`tableidx*#34`} [], `MEMS`{`memidx*#34`} [], `ELEMS`{`elemidx*#34`} [], `DATAS`{`dataidx*#34`} [], `LOCALS`{`localidx*#35`} [], `LABELS`{`labelidx*#46`} []}] -[visit_exp `typeidx*#34`] -[visit_id typeidx*#34] +[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] [visit_exp []] -[visit_exp `funcidx*#34`] -[visit_id funcidx*#34] [visit_exp []] -[visit_exp `globalidx*#34`] -[visit_id globalidx*#34] [visit_exp []] -[visit_exp `tableidx*#34`] -[visit_id tableidx*#34] [visit_exp []] -[visit_exp `memidx*#34`] -[visit_id memidx*#34] [visit_exp []] -[visit_exp `elemidx*#34`] -[visit_id elemidx*#34] [visit_exp []] -[visit_exp `dataidx*#34`] -[visit_id dataidx*#34] [visit_exp []] -[visit_exp `localidx*#35`] -[visit_id localidx*#35] [visit_exp []] -[visit_exp `labelidx*#46`] -[visit_id labelidx*#46] [visit_exp []] => ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_elemmode{`typeidx*#34` : typeidx*, `funcidx*#34` : funcidx*, `globalidx*#34` : globalidx*, `tableidx*#34` : tableidx*, `memidx*#34` : memidx*, `elemidx*#34` : elemidx*, `dataidx*#34` : dataidx*, `localidx*#35` : localidx*, `labelidx*#46` : labelidx*}(`DECLARE`_elemmode) = {`TYPES`{`typeidx*#34`} [], `FUNCS`{`funcidx*#34`} [], `GLOBALS`{`globalidx*#34`} [], `TABLES`{`tableidx*#34`} [], `MEMS`{`memidx*#34`} [], `ELEMS`{`elemidx*#34`} [], `DATAS`{`dataidx*#34`} [], `LOCALS`{`localidx*#35`} [], `LABELS`{`labelidx*#46`} []} -[check_dims] expr expr#39 memidx memidx#28 -[visit_exp `ACTIVE`_datamode{memidx#28, expr#39}(memidx, expr)] -[visit_exp memidx#28] -[visit_id memidx#28] -[visit_exp expr#39] -[visit_id expr#39] + def $free_elemmode(`DECLARE`_elemmode) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} +[check_dims] expr memidx +[visit_exp `ACTIVE`_datamode(memidx, expr)] [visit_exp (memidx, expr)] [visit_exp memidx] [visit_id memidx] @@ -17858,45 +16957,25 @@ DecD free_module(module : module) : free [visit_id expr] not free => ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_datamode{memidx#28 : memidx, expr#39 : expr, memidx : memidx, expr : expr}(`ACTIVE`_datamode{memidx#28, expr#39}(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) -[check_dims] dataidx*#35 elemidx*#35 funcidx*#35 globalidx*#35 labelidx*#47 localidx*#36 memidx*#35 tableidx*#35 typeidx*#35 + def $free_datamode{memidx : memidx, expr : expr}(`ACTIVE`_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) +[check_dims] [visit_exp `PASSIVE`_datamode] [visit_exp ()] -[visit_exp {`TYPES`{`typeidx*#35`} [], `FUNCS`{`funcidx*#35`} [], `GLOBALS`{`globalidx*#35`} [], `TABLES`{`tableidx*#35`} [], `MEMS`{`memidx*#35`} [], `ELEMS`{`elemidx*#35`} [], `DATAS`{`dataidx*#35`} [], `LOCALS`{`localidx*#36`} [], `LABELS`{`labelidx*#47`} []}] -[visit_exp `typeidx*#35`] -[visit_id typeidx*#35] +[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] [visit_exp []] -[visit_exp `funcidx*#35`] -[visit_id funcidx*#35] [visit_exp []] -[visit_exp `globalidx*#35`] -[visit_id globalidx*#35] [visit_exp []] -[visit_exp `tableidx*#35`] -[visit_id tableidx*#35] [visit_exp []] -[visit_exp `memidx*#35`] -[visit_id memidx*#35] [visit_exp []] -[visit_exp `elemidx*#35`] -[visit_id elemidx*#35] [visit_exp []] -[visit_exp `dataidx*#35`] -[visit_id dataidx*#35] [visit_exp []] -[visit_exp `localidx*#36`] -[visit_id localidx*#36] [visit_exp []] -[visit_exp `labelidx*#47`] -[visit_id labelidx*#47] [visit_exp []] => ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_datamode{`typeidx*#35` : typeidx*, `funcidx*#35` : funcidx*, `globalidx*#35` : globalidx*, `tableidx*#35` : tableidx*, `memidx*#35` : memidx*, `elemidx*#35` : elemidx*, `dataidx*#35` : dataidx*, `localidx*#36` : localidx*, `labelidx*#47` : labelidx*}(`PASSIVE`_datamode) = {`TYPES`{`typeidx*#35`} [], `FUNCS`{`funcidx*#35`} [], `GLOBALS`{`globalidx*#35`} [], `TABLES`{`tableidx*#35`} [], `MEMS`{`memidx*#35`} [], `ELEMS`{`elemidx*#35`} [], `DATAS`{`dataidx*#35`} [], `LOCALS`{`localidx*#36`} [], `LABELS`{`labelidx*#47`} []} -[check_dims] funcidx funcidx#21 -[visit_exp `START`_start{funcidx#21}(funcidx)] -[visit_exp funcidx#21] -[visit_id funcidx#21] + def $free_datamode(`PASSIVE`_datamode) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} +[check_dims] funcidx +[visit_exp `START`_start(funcidx)] [visit_exp (funcidx)] [visit_exp funcidx] [visit_id funcidx] @@ -17905,13 +16984,9 @@ DecD free_module(module : module) : free [visit_id funcidx] not free => ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_start{funcidx#21 : funcidx, funcidx : funcidx}(`START`_start{funcidx#21}(funcidx)) = $free_funcidx(funcidx) -[check_dims] externtype externtype#11 name#18 name_1 name_2 -[visit_exp `IMPORT`_import{name#18, externtype#11}(name_1, name_2, externtype)] -[visit_exp name#18] -[visit_id name#18] -[visit_exp externtype#11] -[visit_id externtype#11] + def $free_start{funcidx : funcidx}(`START`_start(funcidx)) = $free_funcidx(funcidx) +[check_dims] externtype name_1 name_2 +[visit_exp `IMPORT`_import(name_1, name_2, externtype)] [visit_exp (name_1, name_2, externtype)] [visit_exp name_1] [visit_id name_1] @@ -17924,13 +16999,9 @@ DecD free_module(module : module) : free [visit_id externtype] not free => ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_import{name#18 : name, externtype#11 : externtype, name_1 : name, name_2 : name, externtype : externtype}(`IMPORT`_import{name#18, externtype#11}(name_1, name_2, externtype)) = $free_externtype(externtype) -[check_dims] externidx externidx#11 name name#31 -[visit_exp `EXPORT`_export{name#31, externidx#11}(name, externidx)] -[visit_exp name#31] -[visit_id name#31] -[visit_exp externidx#11] -[visit_id externidx#11] + def $free_import{name_1 : name, name_2 : name, externtype : externtype}(`IMPORT`_import(name_1, name_2, externtype)) = $free_externtype(externtype) +[check_dims] externidx name +[visit_exp `EXPORT`_export(name, externidx)] [visit_exp (name, externidx)] [visit_exp name] [visit_id name] @@ -17941,31 +17012,9 @@ DecD free_module(module : module) : free [visit_id externidx] not free => ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_export{name#31 : name, externidx#11 : externidx, name : name, externidx : externidx}(`EXPORT`_export{name#31, externidx#11}(name, externidx)) = $free_externidx(externidx) -[check_dims] data data*#11 elem elem*#11 export export*#11 func func*#11 global global*#11 import import*#11 mem mem*#11 start start?#11 table table*#11 tag tag*#11 type type*#11 -[visit_exp `MODULE`_module{`type*#11`, `import*#11`, `tag*#11`, `global*#11`, `mem*#11`, `table*#11`, `func*#11`, `data*#11`, `elem*#11`, `start?#11`, `export*#11`}(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*`})] -[visit_exp `type*#11`] -[visit_id type*#11] -[visit_exp `import*#11`] -[visit_id import*#11] -[visit_exp `tag*#11`] -[visit_id tag*#11] -[visit_exp `global*#11`] -[visit_id global*#11] -[visit_exp `mem*#11`] -[visit_id mem*#11] -[visit_exp `table*#11`] -[visit_id table*#11] -[visit_exp `func*#11`] -[visit_id func*#11] -[visit_exp `data*#11`] -[visit_id data*#11] -[visit_exp `elem*#11`] -[visit_id elem*#11] -[visit_exp `start?#11`] -[visit_id start?#11] -[visit_exp `export*#11`] -[visit_id export*#11] + def $free_export{name : name, externidx : externidx}(`EXPORT`_export(name, externidx)) = $free_externidx(externidx) +[check_dims] data elem export func global import mem start table tag type +[visit_exp `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*`})] [visit_exp (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*`})] [visit_exp type*{type <- `type*`}] [scope_enter type] @@ -18199,26 +17248,24 @@ DecD free_module(module : module) : free [visit_id export*] no dims => ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_module{`type*#11` : type*, `import*#11` : import*, `tag*#11` : tag*, `global*#11` : global*, `mem*#11` : mem*, `table*#11` : table*, `func*#11` : func*, `data*#11` : data*, `elem*#11` : elem*, `start?#11` : start?, `export*#11` : export*, `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*#11`, `import*#11`, `tag*#11`, `global*#11`, `mem*#11`, `table*#11`, `func*#11`, `data*#11`, `elem*#11`, `start?#11`, `export*#11`}(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*`}) + 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*`}) [check_dims] module DecD funcidx_module(module : module) : funcidx* [visit_id module] not free -[check_dims] funcidx*#38 module +[check_dims] module [visit_exp module] [visit_id module] -[visit_exp $free_module(module).`FUNCS`_free{`funcidx*#38`}] +[visit_exp $free_module(module).`FUNCS`_free] [visit_exp $free_module(module)] [visit_exp module] [visit_id module] not free -[visit_exp `funcidx*#38`] -[visit_id funcidx*#38] => ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $funcidx_module{module : module, `funcidx*#38` : funcidx*}(module) = $free_module(module).`FUNCS`_free{`funcidx*#38`} + def $funcidx_module{module : module}(module) = $free_module(module).`FUNCS`_free [check_dims] _ DecD dataidx_funcs(func*) : dataidx* [visit_id _] not free -[check_dims] dataidx*#38 func +[check_dims] func [visit_exp func*{func <- `func*`}] [scope_enter func] [visit_exp func] @@ -18228,7 +17275,7 @@ DecD dataidx_funcs(func*) : dataidx* [visit_exp `func*`] [visit_id func*] no dims [visit_id func*] -[visit_exp $free_list($free_func(func)*{func <- `func*`}).`DATAS`_free{`dataidx*#38`}] +[visit_exp $free_list($free_func(func)*{func <- `func*`}).`DATAS`_free] [visit_exp $free_list($free_func(func)*{func <- `func*`})] [visit_exp $free_func(func)*{func <- `func*`}] [scope_enter func] @@ -18240,17 +17287,11 @@ DecD dataidx_funcs(func*) : dataidx* [visit_exp `func*`] [visit_id func*] not free [visit_id func*] no dims -[visit_exp `dataidx*#38`] -[visit_id dataidx*#38] => ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $dataidx_funcs{`func*` : func*, `dataidx*#38` : dataidx*}(func*{func <- `func*`}) = $free_list($free_func(func)*{func <- `func*`}).`DATAS`_free{`dataidx*#38`} + def $dataidx_funcs{`func*` : func*}(func*{func <- `func*`}) = $free_list($free_func(func)*{func <- `func*`}).`DATAS`_free [check_dims] ---- 1 --- [check_dims] ---- 2 --- ---- 3 --- ---- 4 --- --- 1 --- [check_dims] --- 2 --- @@ -18262,116 +17303,173 @@ DecD dataidx_funcs(func*) : dataidx* --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter init] +[visit_id init] not free [visit_id init] no dims -[visit_id init] +[scope_enter valtype] +[visit_id valtype] not free [visit_id valtype] no dims -[visit_id valtype] -[check_dims] +[scope_exit valtype] +[scope_exit init] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter resulttype] +[visit_id resulttype] not free [visit_id resulttype] no dims -[visit_id resulttype] +[scope_enter localidx*] +[visit_id localidx*] not free [visit_id localidx*] no dims -[visit_id localidx*] +[scope_enter resulttype] [visit_id resulttype] not free [visit_id resulttype] no dims -[check_dims] -[check_dims] -[check_dims] +[scope_exit resulttype] +[scope_exit localidx*] +[scope_exit resulttype] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[check_dims] +[check_dims] +[scope_enter deftype*] +[visit_id deftype*] not free [visit_id deftype*] no dims -[visit_id deftype*] +[scope_exit deftype*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter subtype*] +[visit_id subtype*] not free [visit_id subtype*] no dims -[visit_id subtype*] +[scope_exit subtype*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter tagtype*] +[visit_id tagtype*] not free [visit_id tagtype*] no dims -[visit_id tagtype*] +[scope_exit tagtype*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter globaltype*] +[visit_id globaltype*] not free [visit_id globaltype*] no dims -[visit_id globaltype*] +[scope_exit globaltype*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter memtype*] +[visit_id memtype*] not free [visit_id memtype*] no dims -[visit_id memtype*] +[scope_exit memtype*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter tabletype*] +[visit_id tabletype*] not free [visit_id tabletype*] no dims -[visit_id tabletype*] +[scope_exit tabletype*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter deftype*] +[visit_id deftype*] not free [visit_id deftype*] no dims -[visit_id deftype*] +[scope_exit deftype*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter datatype*] +[visit_id datatype*] not free [visit_id datatype*] no dims -[visit_id datatype*] +[scope_exit datatype*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter elemtype*] +[visit_id elemtype*] not free [visit_id elemtype*] no dims -[visit_id elemtype*] +[scope_exit elemtype*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter localtype*] +[visit_id localtype*] not free [visit_id localtype*] no dims -[visit_id localtype*] +[scope_exit localtype*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter resulttype*] +[visit_id resulttype*] not free [visit_id resulttype*] no dims -[visit_id resulttype*] +[scope_exit resulttype*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter resulttype?] +[visit_id resulttype?] not free [visit_id resulttype?] no dims -[visit_id resulttype?] +[scope_exit resulttype?] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter funcidx*] +[visit_id funcidx*] not free [visit_id funcidx*] no dims -[visit_id funcidx*] +[scope_exit funcidx*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- [check_dims] [check_dims] _ context DecD with_locals(context : context, localidx*, localtype*) : context @@ -18388,7 +17486,7 @@ DecD with_locals(context : context, localidx*, localtype*) : context => ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec def $with_locals{C : context}(C, [], []) = C -[check_dims] C i#3970 lct lct_1 localtype*#1 x x_1 +[check_dims] C lct lct_1 x x_1 [visit_exp C] [visit_id C] [visit_exp [x_1] ++ x*{x <- `x*`}] @@ -18417,18 +17515,14 @@ DecD with_locals(context : context, localidx*, localtype*) : context [visit_exp `lct*`] [visit_id lct*] no dims [visit_id lct*] -[visit_exp $with_locals(C[`LOCALS`_context{`localtype*#1`}[x_1!`%`_idx{i#3970}.0] = lct_1], x*{x <- `x*`}, lct*{lct <- `lct*`})] -[visit_exp C[`LOCALS`_context{`localtype*#1`}[x_1!`%`_idx{i#3970}.0] = lct_1]] +[visit_exp $with_locals(C[`LOCALS`_context[x_1!`%`_idx.0] = lct_1], x*{x <- `x*`}, lct*{lct <- `lct*`})] +[visit_exp C[`LOCALS`_context[x_1!`%`_idx.0] = lct_1]] [visit_exp C] [visit_id C] not free -[visit_exp `localtype*#1`] -[visit_id localtype*#1] -[visit_exp x_1!`%`_idx{i#3970}.0] -[visit_exp x_1!`%`_idx{i#3970}] +[visit_exp x_1!`%`_idx.0] +[visit_exp x_1!`%`_idx] [visit_exp x_1] [visit_id x_1] not free -[visit_exp i#3970] -[visit_id i#3970] [visit_exp lct_1] [visit_id lct_1] not free [visit_exp x*{x <- `x*`}] @@ -18451,7 +17545,7 @@ DecD with_locals(context : context, localidx*, localtype*) : context [visit_id lct*] no dims => ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - def $with_locals{C : context, x_1 : idx, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*, `localtype*#1` : localtype*, i#3970 : nat}(C, [x_1] ++ x*{x <- `x*`}, [lct_1] ++ lct*{lct <- `lct*`}) = $with_locals(C[`LOCALS`_context{`localtype*#1`}[x_1!`%`_idx{i#3970}.0] = lct_1], x*{x <- `x*`}, lct*{lct <- `lct*`}) + 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*`}) [check_dims] context valtype DecD clos_valtype(context : context, valtype : valtype) : valtype [visit_id context] not free @@ -18475,7 +17569,7 @@ DecD clos_moduletype(context : context, moduletype : moduletype) : moduletype [check_dims] _ DecD clos_deftypes(deftype*) : deftype* [visit_id _] not free -[check_dims] C deftype*#2 dt t +[check_dims] C dt t [visit_exp C] [visit_id C] [visit_exp t] @@ -18493,7 +17587,7 @@ DecD clos_deftypes(deftype*) : deftype* [visit_exp `dt*`] [visit_id dt*] no dims [visit_id dt*] -[visit_exp (dt*{dt <- `dt*`} = $clos_deftypes(C.`TYPES`_context{`deftype*#2`}))] +[visit_exp (dt*{dt <- `dt*`} = $clos_deftypes(C.`TYPES`_context))] [visit_exp dt*{dt <- `dt*`}] [scope_enter dt] [visit_exp dt] @@ -18503,17 +17597,15 @@ DecD clos_deftypes(deftype*) : deftype* [visit_exp `dt*`] [visit_id dt*] not free [visit_id dt*] no dims -[visit_exp $clos_deftypes(C.`TYPES`_context{`deftype*#2`})] -[visit_exp C.`TYPES`_context{`deftype*#2`}] +[visit_exp $clos_deftypes(C.`TYPES`_context)] +[visit_exp C.`TYPES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `deftype*#2`] -[visit_id deftype*#2] => ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - def $clos_valtype{C : context, t : valtype, `dt*` : deftype*, `deftype*#2` : deftype*}(C, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.`TYPES`_context{`deftype*#2`})) -[check_dims] C deftype*#4 dt dt' + 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)) +[check_dims] C dt dt' [visit_exp C] [visit_id C] [visit_exp dt] @@ -18531,7 +17623,7 @@ DecD clos_deftypes(deftype*) : deftype* [visit_exp `dt'*`] [visit_id dt'*] no dims [visit_id dt'*] -[visit_exp (dt'*{dt' <- `dt'*`} = $clos_deftypes(C.`TYPES`_context{`deftype*#4`}))] +[visit_exp (dt'*{dt' <- `dt'*`} = $clos_deftypes(C.`TYPES`_context))] [visit_exp dt'*{dt' <- `dt'*`}] [scope_enter dt'] [visit_exp dt'] @@ -18541,17 +17633,15 @@ DecD clos_deftypes(deftype*) : deftype* [visit_exp `dt'*`] [visit_id dt'*] not free [visit_id dt'*] no dims -[visit_exp $clos_deftypes(C.`TYPES`_context{`deftype*#4`})] -[visit_exp C.`TYPES`_context{`deftype*#4`}] +[visit_exp $clos_deftypes(C.`TYPES`_context)] +[visit_exp C.`TYPES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `deftype*#4`] -[visit_id deftype*#4] => ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - def $clos_deftype{C : context, dt : deftype, `dt'*` : deftype*, `deftype*#4` : deftype*}(C, dt) = $subst_all_deftype(dt, (dt' : deftype <: typeuse)*{dt' <- `dt'*`}) - -- if (dt'*{dt' <- `dt'*`} = $clos_deftypes(C.`TYPES`_context{`deftype*#4`})) -[check_dims] C deftype*#6 dt jt + 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)) +[check_dims] C dt jt [visit_exp C] [visit_id C] [visit_exp jt] @@ -18569,7 +17659,7 @@ DecD clos_deftypes(deftype*) : deftype* [visit_exp `dt*`] [visit_id dt*] no dims [visit_id dt*] -[visit_exp (dt*{dt <- `dt*`} = $clos_deftypes(C.`TYPES`_context{`deftype*#6`}))] +[visit_exp (dt*{dt <- `dt*`} = $clos_deftypes(C.`TYPES`_context))] [visit_exp dt*{dt <- `dt*`}] [scope_enter dt] [visit_exp dt] @@ -18579,17 +17669,15 @@ DecD clos_deftypes(deftype*) : deftype* [visit_exp `dt*`] [visit_id dt*] not free [visit_id dt*] no dims -[visit_exp $clos_deftypes(C.`TYPES`_context{`deftype*#6`})] -[visit_exp C.`TYPES`_context{`deftype*#6`}] +[visit_exp $clos_deftypes(C.`TYPES`_context)] +[visit_exp C.`TYPES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `deftype*#6`] -[visit_id deftype*#6] => ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - def $clos_tagtype{C : context, jt : tagtype, `dt*` : deftype*, `deftype*#6` : deftype*}(C, jt) = $subst_all_tagtype(jt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.`TYPES`_context{`deftype*#6`})) -[check_dims] C deftype*#8 dt xt + def $clos_tagtype{C : context, jt : tagtype, `dt*` : deftype*}(C, jt) = $subst_all_tagtype(jt, (dt : deftype <: typeuse)*{dt <- `dt*`}) + -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.`TYPES`_context)) +[check_dims] C dt xt [visit_exp C] [visit_id C] [visit_exp xt] @@ -18607,7 +17695,7 @@ DecD clos_deftypes(deftype*) : deftype* [visit_exp `dt*`] [visit_id dt*] no dims [visit_id dt*] -[visit_exp (dt*{dt <- `dt*`} = $clos_deftypes(C.`TYPES`_context{`deftype*#8`}))] +[visit_exp (dt*{dt <- `dt*`} = $clos_deftypes(C.`TYPES`_context))] [visit_exp dt*{dt <- `dt*`}] [scope_enter dt] [visit_exp dt] @@ -18617,17 +17705,15 @@ DecD clos_deftypes(deftype*) : deftype* [visit_exp `dt*`] [visit_id dt*] not free [visit_id dt*] no dims -[visit_exp $clos_deftypes(C.`TYPES`_context{`deftype*#8`})] -[visit_exp C.`TYPES`_context{`deftype*#8`}] +[visit_exp $clos_deftypes(C.`TYPES`_context)] +[visit_exp C.`TYPES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `deftype*#8`] -[visit_id deftype*#8] => ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - def $clos_externtype{C : context, xt : externtype, `dt*` : deftype*, `deftype*#8` : deftype*}(C, xt) = $subst_all_externtype(xt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.`TYPES`_context{`deftype*#8`})) -[check_dims] C deftype*#10 dt mmt + 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)) +[check_dims] C dt mmt [visit_exp C] [visit_id C] [visit_exp mmt] @@ -18645,7 +17731,7 @@ DecD clos_deftypes(deftype*) : deftype* [visit_exp `dt*`] [visit_id dt*] no dims [visit_id dt*] -[visit_exp (dt*{dt <- `dt*`} = $clos_deftypes(C.`TYPES`_context{`deftype*#10`}))] +[visit_exp (dt*{dt <- `dt*`} = $clos_deftypes(C.`TYPES`_context))] [visit_exp dt*{dt <- `dt*`}] [scope_enter dt] [visit_exp dt] @@ -18655,16 +17741,14 @@ DecD clos_deftypes(deftype*) : deftype* [visit_exp `dt*`] [visit_id dt*] not free [visit_id dt*] no dims -[visit_exp $clos_deftypes(C.`TYPES`_context{`deftype*#10`})] -[visit_exp C.`TYPES`_context{`deftype*#10`}] +[visit_exp $clos_deftypes(C.`TYPES`_context)] +[visit_exp C.`TYPES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `deftype*#10`] -[visit_id deftype*#10] => ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - def $clos_moduletype{C : context, mmt : moduletype, `dt*` : deftype*, `deftype*#10` : deftype*}(C, mmt) = $subst_all_moduletype(mmt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.`TYPES`_context{`deftype*#10`})) + 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)) [check_dims] [visit_exp []] [visit_exp []] @@ -18766,14 +17850,10 @@ DecD clos_deftypes(deftype*) : deftype* [visit_id C] not free [visit_exp typeuse] [visit_id typeuse] not free -[check_dims] C heaptype heaptype#421 null?#419 +[check_dims] C heaptype [visit_exp C] [visit_id C] -[visit_exp `REF`_reftype{`null?#419`, heaptype#421}(`NULL`_null?{}, heaptype)] -[visit_exp `null?#419`] -[visit_id null?#419] -[visit_exp heaptype#421] -[visit_id heaptype#421] +[visit_exp `REF`_reftype(`NULL`_null?{}, heaptype)] [visit_exp (`NULL`_null?{}, heaptype)] [visit_exp `NULL`_null?{}] [visit_exp `NULL`_null] @@ -18825,12 +17905,10 @@ DecD clos_deftypes(deftype*) : deftype* [visit_exp ()] [check_dims] [check_dims] -[check_dims] C X*#465 t +[check_dims] C t [visit_exp C] [visit_id C] -[visit_exp `%`_resulttype{`X*#465`}(t*{t <- `t*`})] -[visit_exp `X*#465`] -[visit_id X*#465] +[visit_exp `%`_resulttype(t*{t <- `t*`})] [visit_exp (t*{t <- `t*`})] [visit_exp t*{t <- `t*`}] [scope_enter t] @@ -18852,18 +17930,12 @@ DecD clos_deftypes(deftype*) : deftype* [visit_exp `t*`] [visit_id t*] not free [visit_id t*] no dims -[check_dims] C X*#478 X*#530 X*#543 X*#556 i#4081 lct localidx*#47 localtype*#2 resulttype#27 t_1 t_2 x +[check_dims] C lct t_1 t_2 x [visit_exp C] [visit_id C] -[visit_exp `%->_%%`_instrtype{resulttype#27, `localidx*#47`}(`%`_resulttype{`X*#478`}(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype{`X*#530`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#27] -[visit_id resulttype#27] -[visit_exp `localidx*#47`] -[visit_id localidx*#47] -[visit_exp (`%`_resulttype{`X*#478`}(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype{`X*#530`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#478`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#478`] -[visit_id X*#478] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -18883,9 +17955,7 @@ DecD clos_deftypes(deftype*) : deftype* [visit_exp `x*`] [visit_id x*] no dims [visit_id x*] -[visit_exp `%`_resulttype{`X*#530`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#530`] -[visit_id X*#530] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -18896,12 +17966,10 @@ DecD clos_deftypes(deftype*) : deftype* [visit_exp `t_2*`] [visit_id t_2*] no dims [visit_id t_2*] -[visit_exp (C, `%`_resulttype{`X*#543`}(t_1*{t_1 <- `t_1*`}))] +[visit_exp (C, `%`_resulttype(t_1*{t_1 <- `t_1*`}))] [visit_exp C] [visit_id C] not free -[visit_exp `%`_resulttype{`X*#543`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#543`] -[visit_id X*#543] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -18912,12 +17980,10 @@ DecD clos_deftypes(deftype*) : deftype* [visit_exp `t_1*`] [visit_id t_1*] not free [visit_id t_1*] no dims -[visit_exp (C, `%`_resulttype{`X*#556`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp (C, `%`_resulttype(t_2*{t_2 <- `t_2*`}))] [visit_exp C] [visit_id C] not free -[visit_exp `%`_resulttype{`X*#556`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#556`] -[visit_id X*#556] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -18928,42 +17994,26 @@ DecD clos_deftypes(deftype*) : deftype* [visit_exp `t_2*`] [visit_id t_2*] not free [visit_id t_2*] no dims -[scope_enter i#4081] [scope_enter lct] -[scope_enter localtype*#2] [scope_enter x] -[visit_exp (C.`LOCALS`_context{`localtype*#2`}[x!`%`_idx{i#4081}.0] = lct)] -[visit_exp C.`LOCALS`_context{`localtype*#2`}[x!`%`_idx{i#4081}.0]] -[visit_exp C.`LOCALS`_context{`localtype*#2`}] +[visit_exp (C.`LOCALS`_context[x!`%`_idx.0] = lct)] +[visit_exp C.`LOCALS`_context[x!`%`_idx.0]] +[visit_exp C.`LOCALS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `localtype*#2`] -[visit_id localtype*#2] not free -[visit_exp x!`%`_idx{i#4081}.0] -[visit_exp x!`%`_idx{i#4081}] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] [visit_exp x] [visit_id x] not free -[visit_exp i#4081] -[visit_id i#4081] not free [visit_exp lct] [visit_id lct] not free -[visit_id i#4081] not free [visit_id lct] not free -[visit_id localtype*#2] not free [visit_id x] not free [scope_exit x] -[scope_exit localtype*#2] [scope_exit lct] -[scope_exit i#4081] -[visit_exp `i#4081*`] -[visit_id i#4081*] no dims -[visit_id i#4081*] [visit_exp `lct*`] [visit_id lct*] no dims [visit_id lct*] -[visit_exp `localtype*#2*`] -[visit_id localtype*#2*] no dims -[visit_id localtype*#2*] [visit_exp `x*`] [visit_id x*] not free [visit_id x*] no dims @@ -18993,10 +18043,8 @@ DecD clos_deftypes(deftype*) : deftype* [visit_id deftype] not free [visit_exp comptype] [visit_id comptype] not free -[check_dims] C comptype deftype*#11 i#4103 typeidx typeidx#220 -[visit_exp `_IDX`_typeuse{typeidx#220}(typeidx)] -[visit_exp typeidx#220] -[visit_id typeidx#220] +[check_dims] C comptype typeidx +[visit_exp `_IDX`_typeuse(typeidx)] [visit_exp (typeidx)] [visit_exp typeidx] [visit_id typeidx] @@ -19004,39 +18052,43 @@ DecD clos_deftypes(deftype*) : deftype* [visit_id C] [visit_exp comptype] [visit_id comptype] -[visit_exp (C.`TYPES`_context{`deftype*#11`}[typeidx!`%`_typeidx{i#4103}.0], comptype)] -[visit_exp C.`TYPES`_context{`deftype*#11`}[typeidx!`%`_typeidx{i#4103}.0]] -[visit_exp C.`TYPES`_context{`deftype*#11`}] +[visit_exp (C.`TYPES`_context[typeidx!`%`_typeidx.0], comptype)] +[visit_exp C.`TYPES`_context[typeidx!`%`_typeidx.0]] +[visit_exp C.`TYPES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `deftype*#11`] -[visit_id deftype*#11] -[visit_exp typeidx!`%`_typeidx{i#4103}.0] -[visit_exp typeidx!`%`_typeidx{i#4103}] +[visit_exp typeidx!`%`_typeidx.0] +[visit_exp typeidx!`%`_typeidx] [visit_exp typeidx] [visit_id typeidx] not free -[visit_exp i#4103] -[visit_id i#4103] [visit_exp comptype] [visit_id comptype] not free [check_dims] +[check_dims] +[scope_enter typeidx] +[visit_id typeidx] not free +[visit_id typeidx] no dims +[scope_exit typeidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id typeidx] no dims -[visit_id typeidx] [check_dims] +[check_dims] +[scope_enter typeidx] +[visit_id typeidx] not free +[visit_id typeidx] no dims +[scope_enter _] +[visit_id _] not free +[visit_id _] no dims +[scope_exit _] +[scope_exit typeidx] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id typeidx] no dims -[visit_id typeidx] -[visit_id _] not free -[visit_id _] no dims [check_dims] [check_dims] [check_dims] @@ -19048,46 +18100,36 @@ DecD clos_deftypes(deftype*) : deftype* [check_dims] [check_dims] [check_dims] -[check_dims] C deftype*#12 dt i#4125 typeidx typeidx#222 +[check_dims] C dt typeidx [visit_exp C] [visit_id C] -[visit_exp `_IDX`_typeuse{typeidx#222}(typeidx)] -[visit_exp typeidx#222] -[visit_id typeidx#222] +[visit_exp `_IDX`_typeuse(typeidx)] [visit_exp (typeidx)] [visit_exp typeidx] [visit_id typeidx] -[visit_exp (C.`TYPES`_context{`deftype*#12`}[typeidx!`%`_typeidx{i#4125}.0] = dt)] -[visit_exp C.`TYPES`_context{`deftype*#12`}[typeidx!`%`_typeidx{i#4125}.0]] -[visit_exp C.`TYPES`_context{`deftype*#12`}] +[visit_exp (C.`TYPES`_context[typeidx!`%`_typeidx.0] = dt)] +[visit_exp C.`TYPES`_context[typeidx!`%`_typeidx.0]] +[visit_exp C.`TYPES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `deftype*#12`] -[visit_id deftype*#12] -[visit_exp typeidx!`%`_typeidx{i#4125}.0] -[visit_exp typeidx!`%`_typeidx{i#4125}] +[visit_exp typeidx!`%`_typeidx.0] +[visit_exp typeidx!`%`_typeidx] [visit_exp typeidx] [visit_id typeidx] not free -[visit_exp i#4125] -[visit_id i#4125] [visit_exp dt] [visit_id dt] -[check_dims] C i n#501 st subtype*#1 +[check_dims] C i st [visit_exp C] [visit_id C] -[visit_exp `REC`_typeuse{n#501}(i)] -[visit_exp n#501] -[visit_id n#501] +[visit_exp `REC`_typeuse(i)] [visit_exp (i)] [visit_exp i] [visit_id i] -[visit_exp (C.`RECS`_context{`subtype*#1`}[i] = st)] -[visit_exp C.`RECS`_context{`subtype*#1`}[i]] -[visit_exp C.`RECS`_context{`subtype*#1`}] +[visit_exp (C.`RECS`_context[i] = st)] +[visit_exp C.`RECS`_context[i]] +[visit_exp C.`RECS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `subtype*#1`] -[visit_id subtype*#1] [visit_exp i] [visit_id i] not free [visit_exp st] @@ -19130,14 +18172,10 @@ DecD clos_deftypes(deftype*) : deftype* [visit_id C] not free [visit_exp packtype] [visit_id packtype] not free -[check_dims] C mut?#289 storagetype storagetype#137 +[check_dims] C storagetype [visit_exp C] [visit_id C] -[visit_exp `%%`_fieldtype{`mut?#289`, storagetype#137}(`MUT`_mut?{}, storagetype)] -[visit_exp `mut?#289`] -[visit_id mut?#289] -[visit_exp storagetype#137] -[visit_id storagetype#137] +[visit_exp `%%`_fieldtype(`MUT`_mut?{}, storagetype)] [visit_exp (`MUT`_mut?{}, storagetype)] [visit_exp `MUT`_mut?{}] [visit_exp `MUT`_mut] @@ -19149,14 +18187,12 @@ DecD clos_deftypes(deftype*) : deftype* [visit_id C] not free [visit_exp storagetype] [visit_id storagetype] not free -[check_dims] C X*#571 fieldtype +[check_dims] C fieldtype [visit_exp C] [visit_id C] -[visit_exp `STRUCT`_comptype(`%`_list{`X*#571`}(fieldtype*{fieldtype <- `fieldtype*`}))] -[visit_exp (`%`_list{`X*#571`}(fieldtype*{fieldtype <- `fieldtype*`}))] -[visit_exp `%`_list{`X*#571`}(fieldtype*{fieldtype <- `fieldtype*`})] -[visit_exp `X*#571`] -[visit_id X*#571] +[visit_exp `STRUCT`_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))] +[visit_exp (`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))] +[visit_exp `%`_list(fieldtype*{fieldtype <- `fieldtype*`})] [visit_exp (fieldtype*{fieldtype <- `fieldtype*`})] [visit_exp fieldtype*{fieldtype <- `fieldtype*`}] [scope_enter fieldtype] @@ -19178,12 +18214,10 @@ DecD clos_deftypes(deftype*) : deftype* [visit_exp `fieldtype*`] [visit_id fieldtype*] not free [visit_id fieldtype*] no dims -[check_dims] C fieldtype fieldtype#7 +[check_dims] C fieldtype [visit_exp C] [visit_id C] -[visit_exp `ARRAY`_comptype{fieldtype#7}(fieldtype)] -[visit_exp fieldtype#7] -[visit_id fieldtype#7] +[visit_exp `ARRAY`_comptype(fieldtype)] [visit_exp (fieldtype)] [visit_exp fieldtype] [visit_id fieldtype] @@ -19192,16 +18226,12 @@ DecD clos_deftypes(deftype*) : deftype* [visit_id C] not free [visit_exp fieldtype] [visit_id fieldtype] not free -[check_dims] C X*#586 X*#599 X*#612 X*#625 resulttype#30 t_1 t_2 +[check_dims] C t_1 t_2 [visit_exp C] [visit_id C] -[visit_exp `FUNC%->%`_comptype{resulttype#30}(`%`_resulttype{`X*#586`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#599`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#30] -[visit_id resulttype#30] -[visit_exp (`%`_resulttype{`X*#586`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#599`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#586`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#586`] -[visit_id X*#586] +[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -19212,9 +18242,7 @@ DecD clos_deftypes(deftype*) : deftype* [visit_exp `t_1*`] [visit_id t_1*] no dims [visit_id t_1*] -[visit_exp `%`_resulttype{`X*#599`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#599`] -[visit_id X*#599] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -19225,12 +18253,10 @@ DecD clos_deftypes(deftype*) : deftype* [visit_exp `t_2*`] [visit_id t_2*] no dims [visit_id t_2*] -[visit_exp (C, `%`_resulttype{`X*#612`}(t_1*{t_1 <- `t_1*`}))] +[visit_exp (C, `%`_resulttype(t_1*{t_1 <- `t_1*`}))] [visit_exp C] [visit_id C] not free -[visit_exp `%`_resulttype{`X*#612`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#612`] -[visit_id X*#612] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -19241,12 +18267,10 @@ DecD clos_deftypes(deftype*) : deftype* [visit_exp `t_1*`] [visit_id t_1*] not free [visit_id t_1*] no dims -[visit_exp (C, `%`_resulttype{`X*#625`}(t_2*{t_2 <- `t_2*`}))] +[visit_exp (C, `%`_resulttype(t_2*{t_2 <- `t_2*`}))] [visit_exp C] [visit_id C] not free -[visit_exp `%`_resulttype{`X*#625`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#625`] -[visit_id X*#625] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -19257,44 +18281,28 @@ DecD clos_deftypes(deftype*) : deftype* [visit_exp `t_2*`] [visit_id t_2*] not free [visit_id t_2*] no dims -[check_dims] C comptype comptype#215 comptype#227 comptype' deftype*#13 final?#215 final?#227 i#4171 i#4181 i#4191 typeidx#224 typeidx#236 typeidx#238 typeuse*#215 typeuse*#227 x x' x_0 +[check_dims] C comptype comptype' x x' x_0 [visit_exp C] [visit_id C] -[visit_exp `SUB`_subtype{`final?#215`, `typeuse*#215`, comptype#215}(`FINAL`_final?{}, `_IDX`_typeuse{typeidx#224}(x)*{typeidx#224 <- `typeidx#224*`, x <- `x*`}, comptype)] -[visit_exp `final?#215`] -[visit_id final?#215] -[visit_exp `typeuse*#215`] -[visit_id typeuse*#215] -[visit_exp comptype#215] -[visit_id comptype#215] -[visit_exp (`FINAL`_final?{}, `_IDX`_typeuse{typeidx#224}(x)*{typeidx#224 <- `typeidx#224*`, x <- `x*`}, comptype)] +[visit_exp `SUB`_subtype(`FINAL`_final?{}, `_IDX`_typeuse(x)*{x <- `x*`}, comptype)] +[visit_exp (`FINAL`_final?{}, `_IDX`_typeuse(x)*{x <- `x*`}, comptype)] [visit_exp `FINAL`_final?{}] [visit_exp `FINAL`_final] [visit_exp ()] -[visit_exp `_IDX`_typeuse{typeidx#224}(x)*{typeidx#224 <- `typeidx#224*`, x <- `x*`}] -[scope_enter typeidx#224] +[visit_exp `_IDX`_typeuse(x)*{x <- `x*`}] [scope_enter x] -[visit_exp `_IDX`_typeuse{typeidx#224}(x)] -[visit_exp typeidx#224] -[visit_id typeidx#224] not free +[visit_exp `_IDX`_typeuse(x)] [visit_exp (x)] [visit_exp x] [visit_id x] not free -[visit_id typeidx#224] not free [visit_id x] not free [scope_exit x] -[scope_exit typeidx#224] -[visit_exp `typeidx#224*`] -[visit_id typeidx#224*] no dims -[visit_id typeidx#224*] [visit_exp `x*`] [visit_id x*] no dims [visit_id x*] [visit_exp comptype] [visit_id comptype] -[visit_exp `OK`_oktypeidx{typeidx#236}(x_0)] -[visit_exp typeidx#236] -[visit_id typeidx#236] +[visit_exp `OK`_oktypeidx(x_0)] [visit_exp (x_0)] [visit_exp x_0] [visit_id x_0] @@ -19310,131 +18318,60 @@ DecD clos_deftypes(deftype*) : deftype* [visit_id x*] not free [visit_id x*] no dims [visit_exp 1] -[scope_enter i#4171] -[scope_enter i#4181] [scope_enter x] -[visit_exp (x!`%`_idx{i#4171}.0 < x_0!`%`_idx{i#4181}.0)] -[visit_exp x!`%`_idx{i#4171}.0] -[visit_exp x!`%`_idx{i#4171}] +[visit_exp (x!`%`_idx.0 < x_0!`%`_idx.0)] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] [visit_exp x] [visit_id x] not free -[visit_exp i#4171] -[visit_id i#4171] not free -[visit_exp x_0!`%`_idx{i#4181}.0] -[visit_exp x_0!`%`_idx{i#4181}] +[visit_exp x_0!`%`_idx.0] +[visit_exp x_0!`%`_idx] [visit_exp x_0] [visit_id x_0] not free -[visit_exp i#4181] -[visit_id i#4181] not free -[visit_id i#4171] not free -[visit_id i#4181] not free [visit_id x] not free [scope_exit x] -[scope_exit i#4181] -[scope_exit i#4171] -[visit_exp `i#4171*`] -[visit_id i#4171*] no dims -[visit_id i#4171*] -[visit_exp `i#4181*`] -[visit_id i#4181*] no dims -[visit_id i#4181*] [visit_exp `x*`] [visit_id x*] not free [visit_id x*] no dims -[scope_enter comptype#227] [scope_enter comptype'] -[scope_enter deftype*#13] -[scope_enter final?#227] -[scope_enter i#4191] -[scope_enter typeidx#238*] -[scope_enter typeuse*#227] [scope_enter x] [scope_enter x'*] -[visit_exp ($unrolldt(C.`TYPES`_context{`deftype*#13`}[x!`%`_idx{i#4191}.0]) = `SUB`_subtype{`final?#227`, `typeuse*#227`, comptype#227}(?(), `_IDX`_typeuse{typeidx#238}(x')*{typeidx#238 <- `typeidx#238*`, x' <- `x'*`}, comptype'))] -[visit_exp $unrolldt(C.`TYPES`_context{`deftype*#13`}[x!`%`_idx{i#4191}.0])] -[visit_exp C.`TYPES`_context{`deftype*#13`}[x!`%`_idx{i#4191}.0]] -[visit_exp C.`TYPES`_context{`deftype*#13`}] +[visit_exp ($unrolldt(C.`TYPES`_context[x!`%`_idx.0]) = `SUB`_subtype(?(), `_IDX`_typeuse(x')*{x' <- `x'*`}, comptype'))] +[visit_exp $unrolldt(C.`TYPES`_context[x!`%`_idx.0])] +[visit_exp C.`TYPES`_context[x!`%`_idx.0]] +[visit_exp C.`TYPES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `deftype*#13`] -[visit_id deftype*#13] not free -[visit_exp x!`%`_idx{i#4191}.0] -[visit_exp x!`%`_idx{i#4191}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#4191] -[visit_id i#4191] not free -[visit_exp `SUB`_subtype{`final?#227`, `typeuse*#227`, comptype#227}(?(), `_IDX`_typeuse{typeidx#238}(x')*{typeidx#238 <- `typeidx#238*`, x' <- `x'*`}, comptype')] -[visit_exp `final?#227`] -[visit_id final?#227] not free -[visit_exp `typeuse*#227`] -[visit_id typeuse*#227] not free -[visit_exp comptype#227] -[visit_id comptype#227] not free -[visit_exp (?(), `_IDX`_typeuse{typeidx#238}(x')*{typeidx#238 <- `typeidx#238*`, x' <- `x'*`}, comptype')] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `SUB`_subtype(?(), `_IDX`_typeuse(x')*{x' <- `x'*`}, comptype')] +[visit_exp (?(), `_IDX`_typeuse(x')*{x' <- `x'*`}, comptype')] [visit_exp ?()] -[visit_exp `_IDX`_typeuse{typeidx#238}(x')*{typeidx#238 <- `typeidx#238*`, x' <- `x'*`}] -[scope_enter typeidx#238] +[visit_exp `_IDX`_typeuse(x')*{x' <- `x'*`}] [scope_enter x'] -[visit_exp `_IDX`_typeuse{typeidx#238}(x')] -[visit_exp typeidx#238] -[visit_id typeidx#238] not free +[visit_exp `_IDX`_typeuse(x')] [visit_exp (x')] [visit_exp x'] [visit_id x'] not free -[visit_id typeidx#238] not free [visit_id x'] not free [scope_exit x'] -[scope_exit typeidx#238] -[visit_exp `typeidx#238*`] -[visit_id typeidx#238*] not free -[visit_id typeidx#238*] no dims [visit_exp `x'*`] [visit_id x'*] not free [visit_id x'*] no dims [visit_exp comptype'] [visit_id comptype'] not free -[visit_id comptype#227] not free [visit_id comptype'] not free -[visit_id deftype*#13] not free -[visit_id final?#227] not free -[visit_id i#4191] not free -[visit_id typeidx#238*] not free -[visit_id typeidx#238*] no dims -[visit_id typeuse*#227] not free [visit_id x] not free [visit_id x'*] not free [visit_id x'*] no dims [scope_exit x'*] [scope_exit x] -[scope_exit typeuse*#227] -[scope_exit typeidx#238*] -[scope_exit i#4191] -[scope_exit final?#227] -[scope_exit deftype*#13] [scope_exit comptype'] -[scope_exit comptype#227] -[visit_exp `comptype#227*`] -[visit_id comptype#227*] no dims -[visit_id comptype#227*] [visit_exp `comptype'*`] [visit_id comptype'*] no dims [visit_id comptype'*] -[visit_exp `deftype*#13*`] -[visit_id deftype*#13*] no dims -[visit_id deftype*#13*] -[visit_exp `final?#227*`] -[visit_id final?#227*] no dims -[visit_id final?#227*] -[visit_exp `i#4191*`] -[visit_id i#4191*] no dims -[visit_id i#4191*] -[visit_exp `typeidx#238**`] -[visit_id typeidx#238**] no dims -[visit_id typeidx#238**] -[visit_exp `typeuse*#227*`] -[visit_id typeuse*#227*] no dims -[visit_id typeuse*#227*] [visit_exp `x*`] [visit_id x*] not free [visit_id x*] no dims @@ -19476,10 +18413,8 @@ DecD 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 -[check_dims] i i#4259 i#4269 typeidx typeidx#240 x -[visit_exp `_IDX`_typeuse{typeidx#240}(typeidx)] -[visit_exp typeidx#240] -[visit_id typeidx#240] +[check_dims] i typeidx x +[visit_exp `_IDX`_typeuse(typeidx)] [visit_exp (typeidx)] [visit_exp typeidx] [visit_id typeidx] @@ -19487,26 +18422,20 @@ DecD before(typeuse : typeuse, typeidx : typeidx, nat : nat) : bool [visit_id x] [visit_exp i] [visit_id i] -[visit_exp (typeidx!`%`_typeidx{i#4259}.0 < x!`%`_idx{i#4269}.0)] -[visit_exp typeidx!`%`_typeidx{i#4259}.0] -[visit_exp typeidx!`%`_typeidx{i#4259}] +[visit_exp (typeidx!`%`_typeidx.0 < x!`%`_idx.0)] +[visit_exp typeidx!`%`_typeidx.0] +[visit_exp typeidx!`%`_typeidx] [visit_exp typeidx] [visit_id typeidx] not free -[visit_exp i#4259] -[visit_id i#4259] -[visit_exp x!`%`_idx{i#4269}.0] -[visit_exp x!`%`_idx{i#4269}] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] [visit_exp x] [visit_id x] not free -[visit_exp i#4269] -[visit_id i#4269] => ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $before{typeidx#240 : typeidx, typeidx : typeidx, x : idx, i : nat, i#4259 : nat, i#4269 : nat}(`_IDX`_typeuse{typeidx#240}(typeidx), x, i) = (typeidx!`%`_typeidx{i#4259}.0 < x!`%`_idx{i#4269}.0) -[check_dims] i j n#515 x -[visit_exp `REC`_typeuse{n#515}(j)] -[visit_exp n#515] -[visit_id n#515] + def $before{typeidx : typeidx, x : idx, i : nat}(`_IDX`_typeuse(typeidx), x, i) = (typeidx!`%`_typeidx.0 < x!`%`_idx.0) +[check_dims] i j x +[visit_exp `REC`_typeuse(j)] [visit_exp (j)] [visit_exp j] [visit_id j] @@ -19521,7 +18450,7 @@ DecD before(typeuse : typeuse, typeidx : typeidx, nat : nat) : bool [visit_id i] not free => ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $before{n#515 : n, j : n, x : idx, i : nat}(`REC`_typeuse{n#515}(j), x, i) = (j < i) + def $before{j : n, x : idx, i : nat}(`REC`_typeuse(j), x, i) = (j < i) [check_dims] context heaptype DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id context] not free @@ -19538,61 +18467,45 @@ DecD 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) -[check_dims] C deftype*#14 i#4303 typeidx typeidx#242 +[check_dims] C typeidx [visit_exp C] [visit_id C] -[visit_exp `_IDX`_heaptype{typeidx#242}(typeidx)] -[visit_exp typeidx#242] -[visit_id typeidx#242] +[visit_exp `_IDX`_heaptype(typeidx)] [visit_exp (typeidx)] [visit_exp typeidx] [visit_id typeidx] -[visit_exp $unrolldt(C.`TYPES`_context{`deftype*#14`}[typeidx!`%`_typeidx{i#4303}.0])] -[visit_exp C.`TYPES`_context{`deftype*#14`}[typeidx!`%`_typeidx{i#4303}.0]] -[visit_exp C.`TYPES`_context{`deftype*#14`}] +[visit_exp $unrolldt(C.`TYPES`_context[typeidx!`%`_typeidx.0])] +[visit_exp C.`TYPES`_context[typeidx!`%`_typeidx.0]] +[visit_exp C.`TYPES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `deftype*#14`] -[visit_id deftype*#14] -[visit_exp typeidx!`%`_typeidx{i#4303}.0] -[visit_exp typeidx!`%`_typeidx{i#4303}] +[visit_exp typeidx!`%`_typeidx.0] +[visit_exp typeidx!`%`_typeidx] [visit_exp typeidx] [visit_id typeidx] not free -[visit_exp i#4303] -[visit_id i#4303] => ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $unrollht{C : context, typeidx#242 : typeidx, typeidx : typeidx, `deftype*#14` : deftype*, i#4303 : nat}(C, `_IDX`_heaptype{typeidx#242}(typeidx)) = $unrolldt(C.`TYPES`_context{`deftype*#14`}[typeidx!`%`_typeidx{i#4303}.0]) -[check_dims] C i n#529 subtype*#2 + def $unrollht{C : context, typeidx : typeidx}(C, `_IDX`_heaptype(typeidx)) = $unrolldt(C.`TYPES`_context[typeidx!`%`_typeidx.0]) +[check_dims] C i [visit_exp C] [visit_id C] -[visit_exp `REC`_heaptype{n#529}(i)] -[visit_exp n#529] -[visit_id n#529] +[visit_exp `REC`_heaptype(i)] [visit_exp (i)] [visit_exp i] [visit_id i] -[visit_exp C.`RECS`_context{`subtype*#2`}[i]] -[visit_exp C.`RECS`_context{`subtype*#2`}] +[visit_exp C.`RECS`_context[i]] +[visit_exp C.`RECS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `subtype*#2`] -[visit_id subtype*#2] [visit_exp i] [visit_id i] not free => ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $unrollht{C : context, n#529 : n, i : n, `subtype*#2` : subtype*}(C, `REC`_heaptype{n#529}(i)) = C.`RECS`_context{`subtype*#2`}[i] -[check_dims] C compttype comptype comptype#257 comptype#269 comptype' final?#257 final?#269 i typeidx#254 typeuse typeuse' typeuse*#257 typeuse*#269 x + def $unrollht{C : context, i : n}(C, `REC`_heaptype(i)) = C.`RECS`_context[i] +[check_dims] C compttype comptype comptype' i typeuse typeuse' x [visit_exp C] [visit_id C] -[visit_exp `SUB`_subtype{`final?#257`, `typeuse*#257`, comptype#257}(`FINAL`_final?{}, typeuse*{typeuse <- `typeuse*`}, compttype)] -[visit_exp `final?#257`] -[visit_id final?#257] -[visit_exp `typeuse*#257`] -[visit_id typeuse*#257] -[visit_exp comptype#257] -[visit_id comptype#257] +[visit_exp `SUB`_subtype(`FINAL`_final?{}, typeuse*{typeuse <- `typeuse*`}, compttype)] [visit_exp (`FINAL`_final?{}, typeuse*{typeuse <- `typeuse*`}, compttype)] [visit_exp `FINAL`_final?{}] [visit_exp `FINAL`_final] @@ -19608,9 +18521,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id typeuse*] [visit_exp compttype] [visit_id compttype] -[visit_exp `OK`_oktypeidxnat{typeidx#254}(x, i)] -[visit_exp typeidx#254] -[visit_id typeidx#254] +[visit_exp `OK`_oktypeidxnat(x, i)] [visit_exp (x, i)] [visit_exp x] [visit_id x] @@ -19641,26 +18552,17 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `typeuse*`] [visit_id typeuse*] not free [visit_id typeuse*] no dims -[scope_enter comptype#269] [scope_enter comptype'] -[scope_enter final?#269] [scope_enter typeuse] [scope_enter typeuse'*] -[scope_enter typeuse*#269] -[visit_exp ($unrollht(C, (typeuse : typeuse <: heaptype)) = `SUB`_subtype{`final?#269`, `typeuse*#269`, comptype#269}(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype'))] +[visit_exp ($unrollht(C, (typeuse : typeuse <: heaptype)) = `SUB`_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype'))] [visit_exp $unrollht(C, (typeuse : typeuse <: heaptype))] [visit_exp C] [visit_id C] not free [visit_exp (typeuse : typeuse <: heaptype)] [visit_exp typeuse] [visit_id typeuse] not free -[visit_exp `SUB`_subtype{`final?#269`, `typeuse*#269`, comptype#269}(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')] -[visit_exp `final?#269`] -[visit_id final?#269] not free -[visit_exp `typeuse*#269`] -[visit_id typeuse*#269] not free -[visit_exp comptype#269] -[visit_id comptype#269] not free +[visit_exp `SUB`_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')] [visit_exp (?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')] [visit_exp ?()] [visit_exp typeuse'*{typeuse' <- `typeuse'*`}] @@ -19674,37 +18576,22 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id typeuse'*] no dims [visit_exp comptype'] [visit_id comptype'] not free -[visit_id comptype#269] not free [visit_id comptype'] not free -[visit_id final?#269] not free [visit_id typeuse] not free [visit_id typeuse'*] not free [visit_id typeuse'*] no dims -[visit_id typeuse*#269] not free -[scope_exit typeuse*#269] [scope_exit typeuse'*] [scope_exit typeuse] -[scope_exit final?#269] [scope_exit comptype'] -[scope_exit comptype#269] -[visit_exp `comptype#269*`] -[visit_id comptype#269*] no dims -[visit_id comptype#269*] [visit_exp `comptype'*`] [visit_id comptype'*] no dims [visit_id comptype'*] -[visit_exp `final?#269*`] -[visit_id final?#269*] no dims -[visit_id final?#269*] [visit_exp `typeuse*`] [visit_id typeuse*] not free [visit_id typeuse*] no dims [visit_exp `typeuse'**`] [visit_id typeuse'**] no dims [visit_id typeuse'**] -[visit_exp `typeuse*#269*`] -[visit_id typeuse*#269*] no dims -[visit_id typeuse*#269*] [visit_exp (C, comptype)] [visit_exp C] [visit_id C] not free @@ -19723,30 +18610,24 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `comptype'*`] [visit_id comptype'*] not free [visit_id comptype'*] no dims -[check_dims] C X*#650 typeidx#266 x +[check_dims] C x [visit_exp C] [visit_id C] -[visit_exp `REC`_rectype(`%`_list{`X*#650`}([]))] -[visit_exp (`%`_list{`X*#650`}([]))] -[visit_exp `%`_list{`X*#650`}([])] -[visit_exp `X*#650`] -[visit_id X*#650] +[visit_exp `REC`_rectype(`%`_list([]))] +[visit_exp (`%`_list([]))] +[visit_exp `%`_list([])] [visit_exp ([])] [visit_exp []] -[visit_exp `OK`_oktypeidx{typeidx#266}(x)] -[visit_exp typeidx#266] -[visit_id typeidx#266] +[visit_exp `OK`_oktypeidx(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[check_dims] C X*#673 X*#686 i#4397 i#4407 subtype subtype_1 typeidx#278 typeidx#290 typeidx#302 x +[check_dims] C subtype subtype_1 x [visit_exp C] [visit_id C] -[visit_exp `REC`_rectype(`%`_list{`X*#673`}([subtype_1] ++ subtype*{subtype <- `subtype*`}))] -[visit_exp (`%`_list{`X*#673`}([subtype_1] ++ subtype*{subtype <- `subtype*`}))] -[visit_exp `%`_list{`X*#673`}([subtype_1] ++ subtype*{subtype <- `subtype*`})] -[visit_exp `X*#673`] -[visit_id X*#673] +[visit_exp `REC`_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`}))] +[visit_exp (`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`}))] +[visit_exp `%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})] [visit_exp ([subtype_1] ++ subtype*{subtype <- `subtype*`})] [visit_exp [subtype_1] ++ subtype*{subtype <- `subtype*`}] [visit_exp [subtype_1]] @@ -19761,31 +18642,25 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `subtype*`] [visit_id subtype*] no dims [visit_id subtype*] -[visit_exp `OK`_oktypeidx{typeidx#278}(x)] -[visit_exp typeidx#278] -[visit_id typeidx#278] +[visit_exp `OK`_oktypeidx(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp (C, subtype_1, `OK`_oktypeidx{typeidx#290}(x))] +[visit_exp (C, subtype_1, `OK`_oktypeidx(x))] [visit_exp C] [visit_id C] not free [visit_exp subtype_1] [visit_id subtype_1] not free -[visit_exp `OK`_oktypeidx{typeidx#290}(x)] -[visit_exp typeidx#290] -[visit_id typeidx#290] +[visit_exp `OK`_oktypeidx(x)] [visit_exp (x)] [visit_exp x] [visit_id x] not free -[visit_exp (C, `REC`_rectype(`%`_list{`X*#686`}(subtype*{subtype <- `subtype*`})), `OK`_oktypeidx{typeidx#302}(`%`_typeidx{i#4407}((x!`%`_idx{i#4397}.0 + 1))))] +[visit_exp (C, `REC`_rectype(`%`_list(subtype*{subtype <- `subtype*`})), `OK`_oktypeidx(`%`_typeidx((x!`%`_idx.0 + 1))))] [visit_exp C] [visit_id C] not free -[visit_exp `REC`_rectype(`%`_list{`X*#686`}(subtype*{subtype <- `subtype*`}))] -[visit_exp (`%`_list{`X*#686`}(subtype*{subtype <- `subtype*`}))] -[visit_exp `%`_list{`X*#686`}(subtype*{subtype <- `subtype*`})] -[visit_exp `X*#686`] -[visit_id X*#686] +[visit_exp `REC`_rectype(`%`_list(subtype*{subtype <- `subtype*`}))] +[visit_exp (`%`_list(subtype*{subtype <- `subtype*`}))] +[visit_exp `%`_list(subtype*{subtype <- `subtype*`})] [visit_exp (subtype*{subtype <- `subtype*`})] [visit_exp subtype*{subtype <- `subtype*`}] [scope_enter subtype] @@ -19796,30 +18671,22 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `subtype*`] [visit_id subtype*] not free [visit_id subtype*] no dims -[visit_exp `OK`_oktypeidx{typeidx#302}(`%`_typeidx{i#4407}((x!`%`_idx{i#4397}.0 + 1)))] -[visit_exp typeidx#302] -[visit_id typeidx#302] -[visit_exp (`%`_typeidx{i#4407}((x!`%`_idx{i#4397}.0 + 1)))] -[visit_exp `%`_typeidx{i#4407}((x!`%`_idx{i#4397}.0 + 1))] -[visit_exp i#4407] -[visit_id i#4407] -[visit_exp ((x!`%`_idx{i#4397}.0 + 1))] -[visit_exp (x!`%`_idx{i#4397}.0 + 1)] -[visit_exp x!`%`_idx{i#4397}.0] -[visit_exp x!`%`_idx{i#4397}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#4397] -[visit_id i#4397] +[visit_exp `OK`_oktypeidx(`%`_typeidx((x!`%`_idx.0 + 1)))] +[visit_exp (`%`_typeidx((x!`%`_idx.0 + 1)))] +[visit_exp `%`_typeidx((x!`%`_idx.0 + 1))] +[visit_exp ((x!`%`_idx.0 + 1))] +[visit_exp (x!`%`_idx.0 + 1)] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free [visit_exp 1] -[check_dims] C X*#701 X*#716 datatype*#1 deftype*#15 deftype*#16 elemtype*#1 funcidx*#39 globaltype*#1 localtype*#3 memtype*#1 resulttype*#1 resulttype?#1 subtype subtype*#3 tabletype*#1 tagtype*#1 typeidx#314 typeidx#326 x +[check_dims] C subtype x [visit_exp C] [visit_id C] -[visit_exp `REC`_rectype(`%`_list{`X*#701`}(subtype*{subtype <- `subtype*`}))] -[visit_exp (`%`_list{`X*#701`}(subtype*{subtype <- `subtype*`}))] -[visit_exp `%`_list{`X*#701`}(subtype*{subtype <- `subtype*`})] -[visit_exp `X*#701`] -[visit_id X*#701] +[visit_exp `REC`_rectype(`%`_list(subtype*{subtype <- `subtype*`}))] +[visit_exp (`%`_list(subtype*{subtype <- `subtype*`}))] +[visit_exp `%`_list(subtype*{subtype <- `subtype*`})] [visit_exp (subtype*{subtype <- `subtype*`})] [visit_exp subtype*{subtype <- `subtype*`}] [scope_enter subtype] @@ -19830,20 +18697,14 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `subtype*`] [visit_id subtype*] no dims [visit_id subtype*] -[visit_exp `OK`_oktypeidx{typeidx#314}(x)] -[visit_exp typeidx#314] -[visit_id typeidx#314] +[visit_exp `OK`_oktypeidx(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp ({`TYPES`{`deftype*#15`} [], `RECS`{`subtype*#3`} subtype*{subtype <- `subtype*`}, `TAGS`{`tagtype*#1`} [], `GLOBALS`{`globaltype*#1`} [], `MEMS`{`memtype*#1`} [], `TABLES`{`tabletype*#1`} [], `FUNCS`{`deftype*#16`} [], `DATAS`{`datatype*#1`} [], `ELEMS`{`elemtype*#1`} [], `LOCALS`{`localtype*#3`} [], `LABELS`{`resulttype*#1`} [], `RETURN`{`resulttype?#1`} ?(), `REFS`{`funcidx*#39`} []} +++ C, `REC`_rectype(`%`_list{`X*#716`}(subtype*{subtype <- `subtype*`})), `OK`_oktypeidxnat{typeidx#326}(x, 0))] -[visit_exp {`TYPES`{`deftype*#15`} [], `RECS`{`subtype*#3`} subtype*{subtype <- `subtype*`}, `TAGS`{`tagtype*#1`} [], `GLOBALS`{`globaltype*#1`} [], `MEMS`{`memtype*#1`} [], `TABLES`{`tabletype*#1`} [], `FUNCS`{`deftype*#16`} [], `DATAS`{`datatype*#1`} [], `ELEMS`{`elemtype*#1`} [], `LOCALS`{`localtype*#3`} [], `LABELS`{`resulttype*#1`} [], `RETURN`{`resulttype?#1`} ?(), `REFS`{`funcidx*#39`} []} +++ C] -[visit_exp {`TYPES`{`deftype*#15`} [], `RECS`{`subtype*#3`} subtype*{subtype <- `subtype*`}, `TAGS`{`tagtype*#1`} [], `GLOBALS`{`globaltype*#1`} [], `MEMS`{`memtype*#1`} [], `TABLES`{`tabletype*#1`} [], `FUNCS`{`deftype*#16`} [], `DATAS`{`datatype*#1`} [], `ELEMS`{`elemtype*#1`} [], `LOCALS`{`localtype*#3`} [], `LABELS`{`resulttype*#1`} [], `RETURN`{`resulttype?#1`} ?(), `REFS`{`funcidx*#39`} []}] -[visit_exp `deftype*#15`] -[visit_id deftype*#15] -[visit_exp []] -[visit_exp `subtype*#3`] -[visit_id subtype*#3] +[visit_exp ({`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))] +[visit_exp {`TYPES` [], `RECS` subtype*{subtype <- `subtype*`}, `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []} +++ C] +[visit_exp {`TYPES` [], `RECS` subtype*{subtype <- `subtype*`}, `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}] +[visit_exp []] [visit_exp subtype*{subtype <- `subtype*`}] [scope_enter subtype] [visit_exp subtype] @@ -19853,46 +18714,22 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `subtype*`] [visit_id subtype*] not free [visit_id subtype*] no dims -[visit_exp `tagtype*#1`] -[visit_id tagtype*#1] [visit_exp []] -[visit_exp `globaltype*#1`] -[visit_id globaltype*#1] [visit_exp []] -[visit_exp `memtype*#1`] -[visit_id memtype*#1] [visit_exp []] -[visit_exp `tabletype*#1`] -[visit_id tabletype*#1] [visit_exp []] -[visit_exp `deftype*#16`] -[visit_id deftype*#16] [visit_exp []] -[visit_exp `datatype*#1`] -[visit_id datatype*#1] [visit_exp []] -[visit_exp `elemtype*#1`] -[visit_id elemtype*#1] [visit_exp []] -[visit_exp `localtype*#3`] -[visit_id localtype*#3] [visit_exp []] -[visit_exp `resulttype*#1`] -[visit_id resulttype*#1] [visit_exp []] -[visit_exp `resulttype?#1`] -[visit_id resulttype?#1] [visit_exp ?()] -[visit_exp `funcidx*#39`] -[visit_id funcidx*#39] [visit_exp []] [visit_exp C] [visit_id C] not free -[visit_exp `REC`_rectype(`%`_list{`X*#716`}(subtype*{subtype <- `subtype*`}))] -[visit_exp (`%`_list{`X*#716`}(subtype*{subtype <- `subtype*`}))] -[visit_exp `%`_list{`X*#716`}(subtype*{subtype <- `subtype*`})] -[visit_exp `X*#716`] -[visit_id X*#716] +[visit_exp `REC`_rectype(`%`_list(subtype*{subtype <- `subtype*`}))] +[visit_exp (`%`_list(subtype*{subtype <- `subtype*`}))] +[visit_exp `%`_list(subtype*{subtype <- `subtype*`})] [visit_exp (subtype*{subtype <- `subtype*`})] [visit_exp subtype*{subtype <- `subtype*`}] [scope_enter subtype] @@ -19903,39 +18740,31 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `subtype*`] [visit_id subtype*] not free [visit_id subtype*] no dims -[visit_exp `OK`_oktypeidxnat{typeidx#326}(x, 0)] -[visit_exp typeidx#326] -[visit_id typeidx#326] +[visit_exp `OK`_oktypeidxnat(x, 0)] [visit_exp (x, 0)] [visit_exp x] [visit_id x] not free [visit_exp 0] -[check_dims] C X*#741 i typeidx#338 x +[check_dims] C i x [visit_exp C] [visit_id C] -[visit_exp `REC`_rectype(`%`_list{`X*#741`}([]))] -[visit_exp (`%`_list{`X*#741`}([]))] -[visit_exp `%`_list{`X*#741`}([])] -[visit_exp `X*#741`] -[visit_id X*#741] +[visit_exp `REC`_rectype(`%`_list([]))] +[visit_exp (`%`_list([]))] +[visit_exp `%`_list([])] [visit_exp ([])] [visit_exp []] -[visit_exp `OK`_oktypeidxnat{typeidx#338}(x, i)] -[visit_exp typeidx#338] -[visit_id typeidx#338] +[visit_exp `OK`_oktypeidxnat(x, i)] [visit_exp (x, i)] [visit_exp x] [visit_id x] [visit_exp i] [visit_id i] -[check_dims] C X*#764 X*#777 i i#4503 i#4513 subtype subtype_1 typeidx#350 typeidx#362 typeidx#374 x +[check_dims] C i subtype subtype_1 x [visit_exp C] [visit_id C] -[visit_exp `REC`_rectype(`%`_list{`X*#764`}([subtype_1] ++ subtype*{subtype <- `subtype*`}))] -[visit_exp (`%`_list{`X*#764`}([subtype_1] ++ subtype*{subtype <- `subtype*`}))] -[visit_exp `%`_list{`X*#764`}([subtype_1] ++ subtype*{subtype <- `subtype*`})] -[visit_exp `X*#764`] -[visit_id X*#764] +[visit_exp `REC`_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`}))] +[visit_exp (`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`}))] +[visit_exp `%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})] [visit_exp ([subtype_1] ++ subtype*{subtype <- `subtype*`})] [visit_exp [subtype_1] ++ subtype*{subtype <- `subtype*`}] [visit_exp [subtype_1]] @@ -19950,35 +18779,29 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `subtype*`] [visit_id subtype*] no dims [visit_id subtype*] -[visit_exp `OK`_oktypeidxnat{typeidx#350}(x, i)] -[visit_exp typeidx#350] -[visit_id typeidx#350] +[visit_exp `OK`_oktypeidxnat(x, i)] [visit_exp (x, i)] [visit_exp x] [visit_id x] [visit_exp i] [visit_id i] -[visit_exp (C, subtype_1, `OK`_oktypeidxnat{typeidx#362}(x, i))] +[visit_exp (C, subtype_1, `OK`_oktypeidxnat(x, i))] [visit_exp C] [visit_id C] not free [visit_exp subtype_1] [visit_id subtype_1] not free -[visit_exp `OK`_oktypeidxnat{typeidx#362}(x, i)] -[visit_exp typeidx#362] -[visit_id typeidx#362] +[visit_exp `OK`_oktypeidxnat(x, i)] [visit_exp (x, i)] [visit_exp x] [visit_id x] not free [visit_exp i] [visit_id i] not free -[visit_exp (C, `REC`_rectype(`%`_list{`X*#777`}(subtype*{subtype <- `subtype*`})), `OK`_oktypeidxnat{typeidx#374}(`%`_typeidx{i#4513}((x!`%`_idx{i#4503}.0 + 1)), (i + 1)))] +[visit_exp (C, `REC`_rectype(`%`_list(subtype*{subtype <- `subtype*`})), `OK`_oktypeidxnat(`%`_typeidx((x!`%`_idx.0 + 1)), (i + 1)))] [visit_exp C] [visit_id C] not free -[visit_exp `REC`_rectype(`%`_list{`X*#777`}(subtype*{subtype <- `subtype*`}))] -[visit_exp (`%`_list{`X*#777`}(subtype*{subtype <- `subtype*`}))] -[visit_exp `%`_list{`X*#777`}(subtype*{subtype <- `subtype*`})] -[visit_exp `X*#777`] -[visit_id X*#777] +[visit_exp `REC`_rectype(`%`_list(subtype*{subtype <- `subtype*`}))] +[visit_exp (`%`_list(subtype*{subtype <- `subtype*`}))] +[visit_exp `%`_list(subtype*{subtype <- `subtype*`})] [visit_exp (subtype*{subtype <- `subtype*`})] [visit_exp subtype*{subtype <- `subtype*`}] [scope_enter subtype] @@ -19989,58 +18812,44 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `subtype*`] [visit_id subtype*] not free [visit_id subtype*] no dims -[visit_exp `OK`_oktypeidxnat{typeidx#374}(`%`_typeidx{i#4513}((x!`%`_idx{i#4503}.0 + 1)), (i + 1))] -[visit_exp typeidx#374] -[visit_id typeidx#374] -[visit_exp (`%`_typeidx{i#4513}((x!`%`_idx{i#4503}.0 + 1)), (i + 1))] -[visit_exp `%`_typeidx{i#4513}((x!`%`_idx{i#4503}.0 + 1))] -[visit_exp i#4513] -[visit_id i#4513] -[visit_exp ((x!`%`_idx{i#4503}.0 + 1))] -[visit_exp (x!`%`_idx{i#4503}.0 + 1)] -[visit_exp x!`%`_idx{i#4503}.0] -[visit_exp x!`%`_idx{i#4503}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#4503] -[visit_id i#4503] +[visit_exp `OK`_oktypeidxnat(`%`_typeidx((x!`%`_idx.0 + 1)), (i + 1))] +[visit_exp (`%`_typeidx((x!`%`_idx.0 + 1)), (i + 1))] +[visit_exp `%`_typeidx((x!`%`_idx.0 + 1))] +[visit_exp ((x!`%`_idx.0 + 1))] +[visit_exp (x!`%`_idx.0 + 1)] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free [visit_exp 1] [visit_exp (i + 1)] [visit_exp i] [visit_id i] not free [visit_exp 1] -[check_dims] C X*#792 i n n#541 rectype rectype#577 subtype typeidx#386 x +[check_dims] C i n rectype subtype x [visit_exp C] [visit_id C] -[visit_exp `_DEF`_deftype{rectype#577, n#541}(rectype, i)] -[visit_exp rectype#577] -[visit_id rectype#577] -[visit_exp n#541] -[visit_id n#541] +[visit_exp `_DEF`_deftype(rectype, i)] [visit_exp (rectype, i)] [visit_exp rectype] [visit_id rectype] [visit_exp i] [visit_id i] -[visit_exp (C, rectype, `OK`_oktypeidx{typeidx#386}(x))] +[visit_exp (C, rectype, `OK`_oktypeidx(x))] [visit_exp C] [visit_id C] not free [visit_exp rectype] [visit_id rectype] not free -[visit_exp `OK`_oktypeidx{typeidx#386}(x)] -[visit_exp typeidx#386] -[visit_id typeidx#386] +[visit_exp `OK`_oktypeidx(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp (rectype = `REC`_rectype(`%`_list{`X*#792`}(subtype^n{subtype <- `subtype*`})))] +[visit_exp (rectype = `REC`_rectype(`%`_list(subtype^n{subtype <- `subtype*`})))] [visit_exp rectype] [visit_id rectype] not free -[visit_exp `REC`_rectype(`%`_list{`X*#792`}(subtype^n{subtype <- `subtype*`}))] -[visit_exp (`%`_list{`X*#792`}(subtype^n{subtype <- `subtype*`}))] -[visit_exp `%`_list{`X*#792`}(subtype^n{subtype <- `subtype*`})] -[visit_exp `X*#792`] -[visit_id X*#792] +[visit_exp `REC`_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))] +[visit_exp (`%`_list(subtype^n{subtype <- `subtype*`}))] +[visit_exp `%`_list(subtype^n{subtype <- `subtype*`})] [visit_exp (subtype^n{subtype <- `subtype*`})] [visit_exp subtype^n{subtype <- `subtype*`}] [scope_enter subtype] @@ -20064,37 +18873,23 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [check_dims] [check_dims] [check_dims] -[check_dims] C i#4549 i#4584 k m n u64#48 u64?#47 +[check_dims] C k m n [visit_exp C] [visit_id C] -[visit_exp `[%..%]`_limits{u64#48, `u64?#47`}(`%`_u64{i#4549}(n), `%`_u64{i#4584}(m)?{i#4584 <- `i#4584?`, m <- `m?`})] -[visit_exp u64#48] -[visit_id u64#48] -[visit_exp `u64?#47`] -[visit_id u64?#47] -[visit_exp (`%`_u64{i#4549}(n), `%`_u64{i#4584}(m)?{i#4584 <- `i#4584?`, m <- `m?`})] -[visit_exp `%`_u64{i#4549}(n)] -[visit_exp i#4549] -[visit_id i#4549] +[visit_exp `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`})] +[visit_exp (`%`_u64(n), `%`_u64(m)?{m <- `m?`})] +[visit_exp `%`_u64(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `%`_u64{i#4584}(m)?{i#4584 <- `i#4584?`, m <- `m?`}] -[scope_enter i#4584] +[visit_exp `%`_u64(m)?{m <- `m?`}] [scope_enter m] -[visit_exp `%`_u64{i#4584}(m)] -[visit_exp i#4584] -[visit_id i#4584] not free +[visit_exp `%`_u64(m)] [visit_exp (m)] [visit_exp m] [visit_id m] not free -[visit_id i#4584] not free [visit_id m] not free [scope_exit m] -[scope_exit i#4584] -[visit_exp `i#4584?`] -[visit_id i#4584?] no dims -[visit_id i#4584?] [visit_exp `m?`] [visit_id m?] no dims [visit_id m?] @@ -20122,7 +18917,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `m?`] [visit_id m?] not free [visit_id m?] no dims -[check_dims] C X*#807 X*#820 resulttype#33 t_1 t_2 typeuse +[check_dims] C t_1 t_2 typeuse [visit_exp C] [visit_id C] [visit_exp typeuse] @@ -20132,18 +18927,14 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id C] not free [visit_exp typeuse] [visit_id typeuse] not free -[visit_exp (typeuse, C, `FUNC%->%`_comptype{resulttype#33}(`%`_resulttype{`X*#807`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#820`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp (typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))] [visit_exp typeuse] [visit_id typeuse] not free [visit_exp C] [visit_id C] not free -[visit_exp `FUNC%->%`_comptype{resulttype#33}(`%`_resulttype{`X*#807`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#820`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#33] -[visit_id resulttype#33] -[visit_exp (`%`_resulttype{`X*#807`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#820`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#807`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#807`] -[visit_id X*#807] +[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -20154,9 +18945,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_1*`] [visit_id t_1*] no dims [visit_id t_1*] -[visit_exp `%`_resulttype{`X*#820`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#820`] -[visit_id X*#820] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -20167,14 +18956,10 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_2*`] [visit_id t_2*] no dims [visit_id t_2*] -[check_dims] C mut?#333 t valtype#247 +[check_dims] C t [visit_exp C] [visit_id C] -[visit_exp `%%`_globaltype{`mut?#333`, valtype#247}(`MUT`_mut?{}, t)] -[visit_exp `mut?#333`] -[visit_id mut?#333] -[visit_exp valtype#247] -[visit_id valtype#247] +[visit_exp `%%`_globaltype(`MUT`_mut?{}, t)] [visit_exp (`MUT`_mut?{}, t)] [visit_exp `MUT`_mut?{}] [visit_exp `MUT`_mut] @@ -20186,14 +18971,10 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id C] not free [visit_exp t] [visit_id t] not free -[check_dims] C addrtype addrtype#297 limits limits#297 +[check_dims] C addrtype limits [visit_exp C] [visit_id C] -[visit_exp `%%PAGE`_memtype{addrtype#297, limits#297}(addrtype, limits)] -[visit_exp addrtype#297] -[visit_id addrtype#297] -[visit_exp limits#297] -[visit_id limits#297] +[visit_exp `%%PAGE`_memtype(addrtype, limits)] [visit_exp (addrtype, limits)] [visit_exp addrtype] [visit_id addrtype] @@ -20207,16 +18988,10 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp (2 ^ 16)] [visit_exp 2] [visit_exp 16] -[check_dims] C addrtype addrtype#309 limits limits#309 reftype reftype#311 +[check_dims] C addrtype limits reftype [visit_exp C] [visit_id C] -[visit_exp `%%%`_tabletype{addrtype#309, limits#309, reftype#311}(addrtype, limits, reftype)] -[visit_exp addrtype#309] -[visit_id addrtype#309] -[visit_exp limits#309] -[visit_id limits#309] -[visit_exp reftype#311] -[visit_id reftype#311] +[visit_exp `%%%`_tabletype(addrtype, limits, reftype)] [visit_exp (addrtype, limits, reftype)] [visit_exp addrtype] [visit_id addrtype] @@ -20242,12 +19017,10 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id C] not free [visit_exp reftype] [visit_id reftype] not free -[check_dims] C tagtype tagtype#89 +[check_dims] C tagtype [visit_exp C] [visit_id C] -[visit_exp `TAG`_externtype{tagtype#89}(tagtype)] -[visit_exp tagtype#89] -[visit_id tagtype#89] +[visit_exp `TAG`_externtype(tagtype)] [visit_exp (tagtype)] [visit_exp tagtype] [visit_id tagtype] @@ -20256,12 +19029,10 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id C] not free [visit_exp tagtype] [visit_id tagtype] not free -[check_dims] C globaltype globaltype#101 +[check_dims] C globaltype [visit_exp C] [visit_id C] -[visit_exp `GLOBAL`_externtype{globaltype#101}(globaltype)] -[visit_exp globaltype#101] -[visit_id globaltype#101] +[visit_exp `GLOBAL`_externtype(globaltype)] [visit_exp (globaltype)] [visit_exp globaltype] [visit_id globaltype] @@ -20270,12 +19041,10 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id C] not free [visit_exp globaltype] [visit_id globaltype] not free -[check_dims] C memtype memtype#113 +[check_dims] C memtype [visit_exp C] [visit_id C] -[visit_exp `MEM`_externtype{memtype#113}(memtype)] -[visit_exp memtype#113] -[visit_id memtype#113] +[visit_exp `MEM`_externtype(memtype)] [visit_exp (memtype)] [visit_exp memtype] [visit_id memtype] @@ -20284,12 +19053,10 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id C] not free [visit_exp memtype] [visit_id memtype] not free -[check_dims] C tabletype tabletype#127 +[check_dims] C tabletype [visit_exp C] [visit_id C] -[visit_exp `TABLE`_externtype{tabletype#127}(tabletype)] -[visit_exp tabletype#127] -[visit_id tabletype#127] +[visit_exp `TABLE`_externtype(tabletype)] [visit_exp (tabletype)] [visit_exp tabletype] [visit_id tabletype] @@ -20298,12 +19065,10 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id C] not free [visit_exp tabletype] [visit_id tabletype] not free -[check_dims] C X*#835 X*#848 resulttype#36 t_1 t_2 typeuse typeuse#17 +[check_dims] C t_1 t_2 typeuse [visit_exp C] [visit_id C] -[visit_exp `FUNC`_externtype{typeuse#17}(typeuse)] -[visit_exp typeuse#17] -[visit_id typeuse#17] +[visit_exp `FUNC`_externtype(typeuse)] [visit_exp (typeuse)] [visit_exp typeuse] [visit_id typeuse] @@ -20312,18 +19077,14 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id C] not free [visit_exp typeuse] [visit_id typeuse] not free -[visit_exp (typeuse, C, `FUNC%->%`_comptype{resulttype#36}(`%`_resulttype{`X*#835`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#848`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp (typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))] [visit_exp typeuse] [visit_id typeuse] not free [visit_exp C] [visit_id C] not free -[visit_exp `FUNC%->%`_comptype{resulttype#36}(`%`_resulttype{`X*#835`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#848`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#36] -[visit_id resulttype#36] -[visit_exp (`%`_resulttype{`X*#835`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#848`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#835`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#835`] -[visit_id X*#835] +[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -20334,9 +19095,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_1*`] [visit_id t_1*] no dims [visit_id t_1*] -[visit_exp `%`_resulttype{`X*#848`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#848`] -[visit_id X*#848] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -20427,7 +19186,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp ()] [visit_exp `EQ`_heaptype] [visit_exp ()] -[check_dims] C X*#863 deftype fieldtype +[check_dims] C deftype fieldtype [visit_exp C] [visit_id C] [visit_exp (deftype : deftype <: heaptype)] @@ -20435,14 +19194,12 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id deftype] [visit_exp `STRUCT`_heaptype] [visit_exp ()] -[visit_exp (deftype, `STRUCT`_comptype(`%`_list{`X*#863`}(fieldtype*{fieldtype <- `fieldtype*`})))] +[visit_exp (deftype, `STRUCT`_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`})))] [visit_exp deftype] [visit_id deftype] not free -[visit_exp `STRUCT`_comptype(`%`_list{`X*#863`}(fieldtype*{fieldtype <- `fieldtype*`}))] -[visit_exp (`%`_list{`X*#863`}(fieldtype*{fieldtype <- `fieldtype*`}))] -[visit_exp `%`_list{`X*#863`}(fieldtype*{fieldtype <- `fieldtype*`})] -[visit_exp `X*#863`] -[visit_id X*#863] +[visit_exp `STRUCT`_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))] +[visit_exp (`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))] +[visit_exp `%`_list(fieldtype*{fieldtype <- `fieldtype*`})] [visit_exp (fieldtype*{fieldtype <- `fieldtype*`})] [visit_exp fieldtype*{fieldtype <- `fieldtype*`}] [scope_enter fieldtype] @@ -20453,7 +19210,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `fieldtype*`] [visit_id fieldtype*] no dims [visit_id fieldtype*] -[check_dims] C deftype fieldtype fieldtype#9 +[check_dims] C deftype fieldtype [visit_exp C] [visit_id C] [visit_exp (deftype : deftype <: heaptype)] @@ -20461,16 +19218,14 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id deftype] [visit_exp `ARRAY`_heaptype] [visit_exp ()] -[visit_exp (deftype, `ARRAY`_comptype{fieldtype#9}(fieldtype))] +[visit_exp (deftype, `ARRAY`_comptype(fieldtype))] [visit_exp deftype] [visit_id deftype] not free -[visit_exp `ARRAY`_comptype{fieldtype#9}(fieldtype)] -[visit_exp fieldtype#9] -[visit_id fieldtype#9] +[visit_exp `ARRAY`_comptype(fieldtype)] [visit_exp (fieldtype)] [visit_exp fieldtype] [visit_id fieldtype] -[check_dims] C X*#878 X*#891 deftype resulttype#39 t_1 t_2 +[check_dims] C deftype t_1 t_2 [visit_exp C] [visit_id C] [visit_exp (deftype : deftype <: heaptype)] @@ -20478,16 +19233,12 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id deftype] [visit_exp `FUNC`_heaptype] [visit_exp ()] -[visit_exp (deftype, `FUNC%->%`_comptype{resulttype#39}(`%`_resulttype{`X*#878`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#891`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp (deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))] [visit_exp deftype] [visit_id deftype] not free -[visit_exp `FUNC%->%`_comptype{resulttype#39}(`%`_resulttype{`X*#878`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#891`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#39] -[visit_id resulttype#39] -[visit_exp (`%`_resulttype{`X*#878`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#891`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#878`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#878`] -[visit_id X*#878] +[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -20498,9 +19249,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_1*`] [visit_id t_1*] no dims [visit_id t_1*] -[visit_exp `%`_resulttype{`X*#891`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#891`] -[visit_id X*#891] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -20527,70 +19276,56 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id deftype_1] not free [visit_exp deftype_2] [visit_id deftype_2] not free -[check_dims] C deftype*#17 heaptype i#4606 typeidx typeidx#388 +[check_dims] C heaptype typeidx [visit_exp C] [visit_id C] -[visit_exp `_IDX`_heaptype{typeidx#388}(typeidx)] -[visit_exp typeidx#388] -[visit_id typeidx#388] +[visit_exp `_IDX`_heaptype(typeidx)] [visit_exp (typeidx)] [visit_exp typeidx] [visit_id typeidx] [visit_exp heaptype] [visit_id heaptype] -[visit_exp (C, (C.`TYPES`_context{`deftype*#17`}[typeidx!`%`_typeidx{i#4606}.0] : deftype <: heaptype), heaptype)] +[visit_exp (C, (C.`TYPES`_context[typeidx!`%`_typeidx.0] : deftype <: heaptype), heaptype)] [visit_exp C] [visit_id C] not free -[visit_exp (C.`TYPES`_context{`deftype*#17`}[typeidx!`%`_typeidx{i#4606}.0] : deftype <: heaptype)] -[visit_exp C.`TYPES`_context{`deftype*#17`}[typeidx!`%`_typeidx{i#4606}.0]] -[visit_exp C.`TYPES`_context{`deftype*#17`}] +[visit_exp (C.`TYPES`_context[typeidx!`%`_typeidx.0] : deftype <: heaptype)] +[visit_exp C.`TYPES`_context[typeidx!`%`_typeidx.0]] +[visit_exp C.`TYPES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `deftype*#17`] -[visit_id deftype*#17] -[visit_exp typeidx!`%`_typeidx{i#4606}.0] -[visit_exp typeidx!`%`_typeidx{i#4606}] +[visit_exp typeidx!`%`_typeidx.0] +[visit_exp typeidx!`%`_typeidx] [visit_exp typeidx] [visit_id typeidx] not free -[visit_exp i#4606] -[visit_id i#4606] [visit_exp heaptype] [visit_id heaptype] not free -[check_dims] C deftype*#18 heaptype i#4628 typeidx typeidx#390 +[check_dims] C heaptype typeidx [visit_exp C] [visit_id C] [visit_exp heaptype] [visit_id heaptype] -[visit_exp `_IDX`_heaptype{typeidx#390}(typeidx)] -[visit_exp typeidx#390] -[visit_id typeidx#390] +[visit_exp `_IDX`_heaptype(typeidx)] [visit_exp (typeidx)] [visit_exp typeidx] [visit_id typeidx] -[visit_exp (C, heaptype, (C.`TYPES`_context{`deftype*#18`}[typeidx!`%`_typeidx{i#4628}.0] : deftype <: heaptype))] +[visit_exp (C, heaptype, (C.`TYPES`_context[typeidx!`%`_typeidx.0] : deftype <: heaptype))] [visit_exp C] [visit_id C] not free [visit_exp heaptype] [visit_id heaptype] not free -[visit_exp (C.`TYPES`_context{`deftype*#18`}[typeidx!`%`_typeidx{i#4628}.0] : deftype <: heaptype)] -[visit_exp C.`TYPES`_context{`deftype*#18`}[typeidx!`%`_typeidx{i#4628}.0]] -[visit_exp C.`TYPES`_context{`deftype*#18`}] +[visit_exp (C.`TYPES`_context[typeidx!`%`_typeidx.0] : deftype <: heaptype)] +[visit_exp C.`TYPES`_context[typeidx!`%`_typeidx.0]] +[visit_exp C.`TYPES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `deftype*#18`] -[visit_id deftype*#18] -[visit_exp typeidx!`%`_typeidx{i#4628}.0] -[visit_exp typeidx!`%`_typeidx{i#4628}] +[visit_exp typeidx!`%`_typeidx.0] +[visit_exp typeidx!`%`_typeidx] [visit_exp typeidx] [visit_id typeidx] not free -[visit_exp i#4628] -[visit_id i#4628] -[check_dims] C comptype#425 ct final final?#425 i j n#573 subtype*#4 typeuse typeuse*#425 +[check_dims] C ct final i j typeuse [visit_exp C] [visit_id C] -[visit_exp `REC`_heaptype{n#573}(i)] -[visit_exp n#573] -[visit_id n#573] +[visit_exp `REC`_heaptype(i)] [visit_exp (i)] [visit_exp i] [visit_id i] @@ -20607,22 +19342,14 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id typeuse*] [visit_exp j] [visit_id j] -[visit_exp (C.`RECS`_context{`subtype*#4`}[i] = `SUB`_subtype{`final?#425`, `typeuse*#425`, comptype#425}(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct))] -[visit_exp C.`RECS`_context{`subtype*#4`}[i]] -[visit_exp C.`RECS`_context{`subtype*#4`}] +[visit_exp (C.`RECS`_context[i] = `SUB`_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct))] +[visit_exp C.`RECS`_context[i]] +[visit_exp C.`RECS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `subtype*#4`] -[visit_id subtype*#4] [visit_exp i] [visit_id i] not free -[visit_exp `SUB`_subtype{`final?#425`, `typeuse*#425`, comptype#425}(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)] -[visit_exp `final?#425`] -[visit_id final?#425] -[visit_exp `typeuse*#425`] -[visit_id typeuse*#425] -[visit_exp comptype#425] -[visit_id comptype#425] +[visit_exp `SUB`_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)] [visit_exp (final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)] [visit_exp final?{final <- `final?`}] [scope_enter final] @@ -20707,23 +19434,15 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp ()] [visit_exp heaptype] [visit_id heaptype] -[check_dims] C heaptype#451 heaptype#463 ht_1 ht_2 null?#449 null?#461 +[check_dims] C ht_1 ht_2 [visit_exp C] [visit_id C] -[visit_exp `REF`_reftype{`null?#449`, heaptype#451}(?(), ht_1)] -[visit_exp `null?#449`] -[visit_id null?#449] -[visit_exp heaptype#451] -[visit_id heaptype#451] +[visit_exp `REF`_reftype(?(), ht_1)] [visit_exp (?(), ht_1)] [visit_exp ?()] [visit_exp ht_1] [visit_id ht_1] -[visit_exp `REF`_reftype{`null?#461`, heaptype#463}(?(), ht_2)] -[visit_exp `null?#461`] -[visit_id null?#461] -[visit_exp heaptype#463] -[visit_id heaptype#463] +[visit_exp `REF`_reftype(?(), ht_2)] [visit_exp (?(), ht_2)] [visit_exp ?()] [visit_exp ht_2] @@ -20735,25 +19454,17 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id ht_1] not free [visit_exp ht_2] [visit_id ht_2] not free -[check_dims] C heaptype#475 heaptype#487 ht_1 ht_2 null?#473 null?#485 +[check_dims] C ht_1 ht_2 [visit_exp C] [visit_id C] -[visit_exp `REF`_reftype{`null?#473`, heaptype#475}(`NULL`_null?{}, ht_1)] -[visit_exp `null?#473`] -[visit_id null?#473] -[visit_exp heaptype#475] -[visit_id heaptype#475] +[visit_exp `REF`_reftype(`NULL`_null?{}, ht_1)] [visit_exp (`NULL`_null?{}, ht_1)] [visit_exp `NULL`_null?{}] [visit_exp `NULL`_null] [visit_exp ()] [visit_exp ht_1] [visit_id ht_1] -[visit_exp `REF`_reftype{`null?#485`, heaptype#487}(?(`NULL`_null), ht_2)] -[visit_exp `null?#485`] -[visit_id null?#485] -[visit_exp heaptype#487] -[visit_id heaptype#487] +[visit_exp `REF`_reftype(?(`NULL`_null), ht_2)] [visit_exp (?(`NULL`_null), ht_2)] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] @@ -20824,12 +19535,10 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id valtype] [check_dims] [check_dims] -[check_dims] C X*#904 X*#917 t_1 t_2 +[check_dims] C t_1 t_2 [visit_exp C] [visit_id C] -[visit_exp `%`_resulttype{`X*#904`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#904`] -[visit_id X*#904] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -20840,9 +19549,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_1*`] [visit_id t_1*] no dims [visit_id t_1*] -[visit_exp `%`_resulttype{`X*#917`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#917`] -[visit_id X*#917] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -20872,18 +19579,12 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_2*`] [visit_id t_2*] not free [visit_id t_2*] no dims -[check_dims] C X*#1047 X*#1060 X*#1073 X*#1086 X*#1099 X*#930 X*#982 X*#995 i#4865 init#65 localidx*#59 localidx*#71 localtype*#4 resulttype#59 resulttype#79 t t_11 t_12 t_21 t_22 valtype#271 x x_1 x_2 +[check_dims] C t t_11 t_12 t_21 t_22 x x_1 x_2 [visit_exp C] [visit_id C] -[visit_exp `%->_%%`_instrtype{resulttype#59, `localidx*#59`}(`%`_resulttype{`X*#930`}(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype{`X*#982`}(t_12*{t_12 <- `t_12*`}))] -[visit_exp resulttype#59] -[visit_id resulttype#59] -[visit_exp `localidx*#59`] -[visit_id localidx*#59] -[visit_exp (`%`_resulttype{`X*#930`}(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype{`X*#982`}(t_12*{t_12 <- `t_12*`}))] -[visit_exp `%`_resulttype{`X*#930`}(t_11*{t_11 <- `t_11*`})] -[visit_exp `X*#930`] -[visit_id X*#930] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`}))] +[visit_exp (`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`}))] +[visit_exp `%`_resulttype(t_11*{t_11 <- `t_11*`})] [visit_exp (t_11*{t_11 <- `t_11*`})] [visit_exp t_11*{t_11 <- `t_11*`}] [scope_enter t_11] @@ -20903,9 +19604,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `x_1*`] [visit_id x_1*] no dims [visit_id x_1*] -[visit_exp `%`_resulttype{`X*#982`}(t_12*{t_12 <- `t_12*`})] -[visit_exp `X*#982`] -[visit_id X*#982] +[visit_exp `%`_resulttype(t_12*{t_12 <- `t_12*`})] [visit_exp (t_12*{t_12 <- `t_12*`})] [visit_exp t_12*{t_12 <- `t_12*`}] [scope_enter t_12] @@ -20916,15 +19615,9 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_12*`] [visit_id t_12*] no dims [visit_id t_12*] -[visit_exp `%->_%%`_instrtype{resulttype#79, `localidx*#71`}(`%`_resulttype{`X*#995`}(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype{`X*#1047`}(t_22*{t_22 <- `t_22*`}))] -[visit_exp resulttype#79] -[visit_id resulttype#79] -[visit_exp `localidx*#71`] -[visit_id localidx*#71] -[visit_exp (`%`_resulttype{`X*#995`}(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype{`X*#1047`}(t_22*{t_22 <- `t_22*`}))] -[visit_exp `%`_resulttype{`X*#995`}(t_21*{t_21 <- `t_21*`})] -[visit_exp `X*#995`] -[visit_id X*#995] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))] +[visit_exp (`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))] +[visit_exp `%`_resulttype(t_21*{t_21 <- `t_21*`})] [visit_exp (t_21*{t_21 <- `t_21*`})] [visit_exp t_21*{t_21 <- `t_21*`}] [scope_enter t_21] @@ -20944,9 +19637,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `x_2*`] [visit_id x_2*] no dims [visit_id x_2*] -[visit_exp `%`_resulttype{`X*#1047`}(t_22*{t_22 <- `t_22*`})] -[visit_exp `X*#1047`] -[visit_id X*#1047] +[visit_exp `%`_resulttype(t_22*{t_22 <- `t_22*`})] [visit_exp (t_22*{t_22 <- `t_22*`})] [visit_exp t_22*{t_22 <- `t_22*`}] [scope_enter t_22] @@ -20957,12 +19648,10 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_22*`] [visit_id t_22*] no dims [visit_id t_22*] -[visit_exp (C, `%`_resulttype{`X*#1060`}(t_21*{t_21 <- `t_21*`}), `%`_resulttype{`X*#1073`}(t_11*{t_11 <- `t_11*`}))] +[visit_exp (C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`}))] [visit_exp C] [visit_id C] not free -[visit_exp `%`_resulttype{`X*#1060`}(t_21*{t_21 <- `t_21*`})] -[visit_exp `X*#1060`] -[visit_id X*#1060] +[visit_exp `%`_resulttype(t_21*{t_21 <- `t_21*`})] [visit_exp (t_21*{t_21 <- `t_21*`})] [visit_exp t_21*{t_21 <- `t_21*`}] [scope_enter t_21] @@ -20973,9 +19662,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_21*`] [visit_id t_21*] not free [visit_id t_21*] no dims -[visit_exp `%`_resulttype{`X*#1073`}(t_11*{t_11 <- `t_11*`})] -[visit_exp `X*#1073`] -[visit_id X*#1073] +[visit_exp `%`_resulttype(t_11*{t_11 <- `t_11*`})] [visit_exp (t_11*{t_11 <- `t_11*`})] [visit_exp t_11*{t_11 <- `t_11*`}] [scope_enter t_11] @@ -20986,12 +19673,10 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_11*`] [visit_id t_11*] not free [visit_id t_11*] no dims -[visit_exp (C, `%`_resulttype{`X*#1086`}(t_12*{t_12 <- `t_12*`}), `%`_resulttype{`X*#1099`}(t_22*{t_22 <- `t_22*`}))] +[visit_exp (C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))] [visit_exp C] [visit_id C] not free -[visit_exp `%`_resulttype{`X*#1086`}(t_12*{t_12 <- `t_12*`})] -[visit_exp `X*#1086`] -[visit_id X*#1086] +[visit_exp `%`_resulttype(t_12*{t_12 <- `t_12*`})] [visit_exp (t_12*{t_12 <- `t_12*`})] [visit_exp t_12*{t_12 <- `t_12*`}] [scope_enter t_12] @@ -21002,9 +19687,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_12*`] [visit_id t_12*] not free [visit_id t_12*] no dims -[visit_exp `%`_resulttype{`X*#1099`}(t_22*{t_22 <- `t_22*`})] -[visit_exp `X*#1099`] -[visit_id X*#1099] +[visit_exp `%`_resulttype(t_22*{t_22 <- `t_22*`})] [visit_exp (t_22*{t_22 <- `t_22*`})] [visit_exp t_22*{t_22 <- `t_22*`}] [scope_enter t_22] @@ -21044,62 +19727,30 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `x_1*`] [visit_id x_1*] not free [visit_id x_1*] no dims -[scope_enter i#4865] -[scope_enter init#65] -[scope_enter localtype*#4] [scope_enter t] -[scope_enter valtype#271] [scope_enter x] -[visit_exp (C.`LOCALS`_context{`localtype*#4`}[x!`%`_idx{i#4865}.0] = `%%`_localtype{init#65, valtype#271}(`SET`_init, t))] -[visit_exp C.`LOCALS`_context{`localtype*#4`}[x!`%`_idx{i#4865}.0]] -[visit_exp C.`LOCALS`_context{`localtype*#4`}] +[visit_exp (C.`LOCALS`_context[x!`%`_idx.0] = `%%`_localtype(`SET`_init, t))] +[visit_exp C.`LOCALS`_context[x!`%`_idx.0]] +[visit_exp C.`LOCALS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `localtype*#4`] -[visit_id localtype*#4] not free -[visit_exp x!`%`_idx{i#4865}.0] -[visit_exp x!`%`_idx{i#4865}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#4865] -[visit_id i#4865] not free -[visit_exp `%%`_localtype{init#65, valtype#271}(`SET`_init, t)] -[visit_exp init#65] -[visit_id init#65] not free -[visit_exp valtype#271] -[visit_id valtype#271] not free +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `%%`_localtype(`SET`_init, t)] [visit_exp (`SET`_init, t)] [visit_exp `SET`_init] [visit_exp ()] [visit_exp t] [visit_id t] not free -[visit_id i#4865] not free -[visit_id init#65] not free -[visit_id localtype*#4] not free [visit_id t] not free -[visit_id valtype#271] not free [visit_id x] not free [scope_exit x] -[scope_exit valtype#271] [scope_exit t] -[scope_exit localtype*#4] -[scope_exit init#65] -[scope_exit i#4865] -[visit_exp `i#4865*`] -[visit_id i#4865*] no dims -[visit_id i#4865*] -[visit_exp `init#65*`] -[visit_id init#65*] no dims -[visit_id init#65*] -[visit_exp `localtype*#4*`] -[visit_id localtype*#4*] no dims -[visit_id localtype*#4*] [visit_exp `t*`] [visit_id t*] no dims [visit_id t*] -[visit_exp `valtype#271*`] -[visit_id valtype#271*] no dims -[visit_id valtype#271*] [visit_exp `x*`] [visit_id x*] not free [visit_id x*] no dims @@ -21145,23 +19796,15 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id packtype_1] not free [visit_exp packtype_2] [visit_id packtype_2] not free -[check_dims] C mut?#371 mut?#377 storagetype#195 storagetype#201 zt_1 zt_2 +[check_dims] C zt_1 zt_2 [visit_exp C] [visit_id C] -[visit_exp `%%`_fieldtype{`mut?#371`, storagetype#195}(?(), zt_1)] -[visit_exp `mut?#371`] -[visit_id mut?#371] -[visit_exp storagetype#195] -[visit_id storagetype#195] +[visit_exp `%%`_fieldtype(?(), zt_1)] [visit_exp (?(), zt_1)] [visit_exp ?()] [visit_exp zt_1] [visit_id zt_1] -[visit_exp `%%`_fieldtype{`mut?#377`, storagetype#201}(?(), zt_2)] -[visit_exp `mut?#377`] -[visit_id mut?#377] -[visit_exp storagetype#201] -[visit_id storagetype#201] +[visit_exp `%%`_fieldtype(?(), zt_2)] [visit_exp (?(), zt_2)] [visit_exp ?()] [visit_exp zt_2] @@ -21173,25 +19816,17 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id zt_1] not free [visit_exp zt_2] [visit_id zt_2] not free -[check_dims] C mut?#389 mut?#401 storagetype#213 storagetype#225 zt_1 zt_2 +[check_dims] C zt_1 zt_2 [visit_exp C] [visit_id C] -[visit_exp `%%`_fieldtype{`mut?#389`, storagetype#213}(?(`MUT`_mut), zt_1)] -[visit_exp `mut?#389`] -[visit_id mut?#389] -[visit_exp storagetype#213] -[visit_id storagetype#213] +[visit_exp `%%`_fieldtype(?(`MUT`_mut), zt_1)] [visit_exp (?(`MUT`_mut), zt_1)] [visit_exp ?(`MUT`_mut)] [visit_exp `MUT`_mut] [visit_exp ()] [visit_exp zt_1] [visit_id zt_1] -[visit_exp `%%`_fieldtype{`mut?#401`, storagetype#225}(?(`MUT`_mut), zt_2)] -[visit_exp `mut?#401`] -[visit_id mut?#401] -[visit_exp storagetype#225] -[visit_id storagetype#225] +[visit_exp `%%`_fieldtype(?(`MUT`_mut), zt_2)] [visit_exp (?(`MUT`_mut), zt_2)] [visit_exp ?(`MUT`_mut)] [visit_exp `MUT`_mut] @@ -21212,14 +19847,12 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id zt_2] not free [visit_exp zt_1] [visit_id zt_1] not free -[check_dims] C X*#1124 X*#1137 ft'_1 ft_1 ft_2 +[check_dims] C ft'_1 ft_1 ft_2 [visit_exp C] [visit_id C] -[visit_exp `STRUCT`_comptype(`%`_list{`X*#1124`}(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))] -[visit_exp (`%`_list{`X*#1124`}(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))] -[visit_exp `%`_list{`X*#1124`}(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})] -[visit_exp `X*#1124`] -[visit_id X*#1124] +[visit_exp `STRUCT`_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))] +[visit_exp (`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))] +[visit_exp `%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})] [visit_exp (ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})] [visit_exp ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}] [visit_exp ft_1*{ft_1 <- `ft_1*`}] @@ -21240,11 +19873,9 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `ft'_1*`] [visit_id ft'_1*] no dims [visit_id ft'_1*] -[visit_exp `STRUCT`_comptype(`%`_list{`X*#1137`}(ft_2*{ft_2 <- `ft_2*`}))] -[visit_exp (`%`_list{`X*#1137`}(ft_2*{ft_2 <- `ft_2*`}))] -[visit_exp `%`_list{`X*#1137`}(ft_2*{ft_2 <- `ft_2*`})] -[visit_exp `X*#1137`] -[visit_id X*#1137] +[visit_exp `STRUCT`_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))] +[visit_exp (`%`_list(ft_2*{ft_2 <- `ft_2*`}))] +[visit_exp `%`_list(ft_2*{ft_2 <- `ft_2*`})] [visit_exp (ft_2*{ft_2 <- `ft_2*`})] [visit_exp ft_2*{ft_2 <- `ft_2*`}] [scope_enter ft_2] @@ -21274,18 +19905,14 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `ft_2*`] [visit_id ft_2*] not free [visit_id ft_2*] no dims -[check_dims] C fieldtype#11 fieldtype#13 ft_1 ft_2 +[check_dims] C ft_1 ft_2 [visit_exp C] [visit_id C] -[visit_exp `ARRAY`_comptype{fieldtype#11}(ft_1)] -[visit_exp fieldtype#11] -[visit_id fieldtype#11] +[visit_exp `ARRAY`_comptype(ft_1)] [visit_exp (ft_1)] [visit_exp ft_1] [visit_id ft_1] -[visit_exp `ARRAY`_comptype{fieldtype#13}(ft_2)] -[visit_exp fieldtype#13] -[visit_id fieldtype#13] +[visit_exp `ARRAY`_comptype(ft_2)] [visit_exp (ft_2)] [visit_exp ft_2] [visit_id ft_2] @@ -21296,16 +19923,12 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id ft_1] not free [visit_exp ft_2] [visit_id ft_2] not free -[check_dims] C X*#1152 X*#1165 X*#1180 X*#1193 X*#1206 X*#1219 X*#1232 X*#1245 resulttype#82 resulttype#85 t_11 t_12 t_21 t_22 +[check_dims] C t_11 t_12 t_21 t_22 [visit_exp C] [visit_id C] -[visit_exp `FUNC%->%`_comptype{resulttype#82}(`%`_resulttype{`X*#1152`}(t_11*{t_11 <- `t_11*`}), `%`_resulttype{`X*#1165`}(t_12*{t_12 <- `t_12*`}))] -[visit_exp resulttype#82] -[visit_id resulttype#82] -[visit_exp (`%`_resulttype{`X*#1152`}(t_11*{t_11 <- `t_11*`}), `%`_resulttype{`X*#1165`}(t_12*{t_12 <- `t_12*`}))] -[visit_exp `%`_resulttype{`X*#1152`}(t_11*{t_11 <- `t_11*`})] -[visit_exp `X*#1152`] -[visit_id X*#1152] +[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`}))] +[visit_exp (`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`}))] +[visit_exp `%`_resulttype(t_11*{t_11 <- `t_11*`})] [visit_exp (t_11*{t_11 <- `t_11*`})] [visit_exp t_11*{t_11 <- `t_11*`}] [scope_enter t_11] @@ -21316,9 +19939,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_11*`] [visit_id t_11*] no dims [visit_id t_11*] -[visit_exp `%`_resulttype{`X*#1165`}(t_12*{t_12 <- `t_12*`})] -[visit_exp `X*#1165`] -[visit_id X*#1165] +[visit_exp `%`_resulttype(t_12*{t_12 <- `t_12*`})] [visit_exp (t_12*{t_12 <- `t_12*`})] [visit_exp t_12*{t_12 <- `t_12*`}] [scope_enter t_12] @@ -21329,13 +19950,9 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_12*`] [visit_id t_12*] no dims [visit_id t_12*] -[visit_exp `FUNC%->%`_comptype{resulttype#85}(`%`_resulttype{`X*#1180`}(t_21*{t_21 <- `t_21*`}), `%`_resulttype{`X*#1193`}(t_22*{t_22 <- `t_22*`}))] -[visit_exp resulttype#85] -[visit_id resulttype#85] -[visit_exp (`%`_resulttype{`X*#1180`}(t_21*{t_21 <- `t_21*`}), `%`_resulttype{`X*#1193`}(t_22*{t_22 <- `t_22*`}))] -[visit_exp `%`_resulttype{`X*#1180`}(t_21*{t_21 <- `t_21*`})] -[visit_exp `X*#1180`] -[visit_id X*#1180] +[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))] +[visit_exp (`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))] +[visit_exp `%`_resulttype(t_21*{t_21 <- `t_21*`})] [visit_exp (t_21*{t_21 <- `t_21*`})] [visit_exp t_21*{t_21 <- `t_21*`}] [scope_enter t_21] @@ -21346,9 +19963,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_21*`] [visit_id t_21*] no dims [visit_id t_21*] -[visit_exp `%`_resulttype{`X*#1193`}(t_22*{t_22 <- `t_22*`})] -[visit_exp `X*#1193`] -[visit_id X*#1193] +[visit_exp `%`_resulttype(t_22*{t_22 <- `t_22*`})] [visit_exp (t_22*{t_22 <- `t_22*`})] [visit_exp t_22*{t_22 <- `t_22*`}] [scope_enter t_22] @@ -21359,12 +19974,10 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_22*`] [visit_id t_22*] no dims [visit_id t_22*] -[visit_exp (C, `%`_resulttype{`X*#1206`}(t_21*{t_21 <- `t_21*`}), `%`_resulttype{`X*#1219`}(t_11*{t_11 <- `t_11*`}))] +[visit_exp (C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`}))] [visit_exp C] [visit_id C] not free -[visit_exp `%`_resulttype{`X*#1206`}(t_21*{t_21 <- `t_21*`})] -[visit_exp `X*#1206`] -[visit_id X*#1206] +[visit_exp `%`_resulttype(t_21*{t_21 <- `t_21*`})] [visit_exp (t_21*{t_21 <- `t_21*`})] [visit_exp t_21*{t_21 <- `t_21*`}] [scope_enter t_21] @@ -21375,9 +19988,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_21*`] [visit_id t_21*] not free [visit_id t_21*] no dims -[visit_exp `%`_resulttype{`X*#1219`}(t_11*{t_11 <- `t_11*`})] -[visit_exp `X*#1219`] -[visit_id X*#1219] +[visit_exp `%`_resulttype(t_11*{t_11 <- `t_11*`})] [visit_exp (t_11*{t_11 <- `t_11*`})] [visit_exp t_11*{t_11 <- `t_11*`}] [scope_enter t_11] @@ -21388,12 +19999,10 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_11*`] [visit_id t_11*] not free [visit_id t_11*] no dims -[visit_exp (C, `%`_resulttype{`X*#1232`}(t_12*{t_12 <- `t_12*`}), `%`_resulttype{`X*#1245`}(t_22*{t_22 <- `t_22*`}))] +[visit_exp (C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))] [visit_exp C] [visit_id C] not free -[visit_exp `%`_resulttype{`X*#1232`}(t_12*{t_12 <- `t_12*`})] -[visit_exp `X*#1232`] -[visit_id X*#1232] +[visit_exp `%`_resulttype(t_12*{t_12 <- `t_12*`})] [visit_exp (t_12*{t_12 <- `t_12*`})] [visit_exp t_12*{t_12 <- `t_12*`}] [scope_enter t_12] @@ -21404,9 +20013,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_12*`] [visit_id t_12*] not free [visit_id t_12*] no dims -[visit_exp `%`_resulttype{`X*#1245`}(t_22*{t_22 <- `t_22*`})] -[visit_exp `X*#1245`] -[visit_id X*#1245] +[visit_exp `%`_resulttype(t_22*{t_22 <- `t_22*`})] [visit_exp (t_22*{t_22 <- `t_22*`})] [visit_exp t_22*{t_22 <- `t_22*`}] [scope_enter t_22] @@ -21435,24 +20042,18 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id C] not free [visit_exp deftype_2] [visit_id deftype_2] not free -[check_dims] C comptype#437 ct deftype_1 deftype_2 final final?#437 i typeuse typeuse*#437 +[check_dims] C ct deftype_1 deftype_2 final i typeuse [visit_exp C] [visit_id C] [visit_exp deftype_1] [visit_id deftype_1] [visit_exp deftype_2] [visit_id deftype_2] -[visit_exp ($unrolldt(deftype_1) = `SUB`_subtype{`final?#437`, `typeuse*#437`, comptype#437}(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct))] +[visit_exp ($unrolldt(deftype_1) = `SUB`_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct))] [visit_exp $unrolldt(deftype_1)] [visit_exp deftype_1] [visit_id deftype_1] not free -[visit_exp `SUB`_subtype{`final?#437`, `typeuse*#437`, comptype#437}(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)] -[visit_exp `final?#437`] -[visit_id final?#437] -[visit_exp `typeuse*#437`] -[visit_id typeuse*#437] -[visit_exp comptype#437] -[visit_id comptype#437] +[visit_exp `SUB`_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)] [visit_exp (final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)] [visit_exp final?{final <- `final?`}] [scope_enter final] @@ -21499,56 +20100,34 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [check_dims] [check_dims] [check_dims] -[check_dims] C i#4887 i#4909 i#4931 i#4966 m_1 m_2 n_1 n_2 u64#84 u64#96 u64?#83 u64?#95 +[check_dims] C m_1 m_2 n_1 n_2 [visit_exp C] [visit_id C] -[visit_exp `[%..%]`_limits{u64#84, `u64?#83`}(`%`_u64{i#4887}(n_1), ?(`%`_u64{i#4909}(m_1)))] -[visit_exp u64#84] -[visit_id u64#84] -[visit_exp `u64?#83`] -[visit_id u64?#83] -[visit_exp (`%`_u64{i#4887}(n_1), ?(`%`_u64{i#4909}(m_1)))] -[visit_exp `%`_u64{i#4887}(n_1)] -[visit_exp i#4887] -[visit_id i#4887] +[visit_exp `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1)))] +[visit_exp (`%`_u64(n_1), ?(`%`_u64(m_1)))] +[visit_exp `%`_u64(n_1)] [visit_exp (n_1)] [visit_exp n_1] [visit_id n_1] -[visit_exp ?(`%`_u64{i#4909}(m_1))] -[visit_exp `%`_u64{i#4909}(m_1)] -[visit_exp i#4909] -[visit_id i#4909] +[visit_exp ?(`%`_u64(m_1))] +[visit_exp `%`_u64(m_1)] [visit_exp (m_1)] [visit_exp m_1] [visit_id m_1] -[visit_exp `[%..%]`_limits{u64#96, `u64?#95`}(`%`_u64{i#4931}(n_2), `%`_u64{i#4966}(m_2)?{i#4966 <- `i#4966?`, m_2 <- `m_2?`})] -[visit_exp u64#96] -[visit_id u64#96] -[visit_exp `u64?#95`] -[visit_id u64?#95] -[visit_exp (`%`_u64{i#4931}(n_2), `%`_u64{i#4966}(m_2)?{i#4966 <- `i#4966?`, m_2 <- `m_2?`})] -[visit_exp `%`_u64{i#4931}(n_2)] -[visit_exp i#4931] -[visit_id i#4931] +[visit_exp `[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})] +[visit_exp (`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})] +[visit_exp `%`_u64(n_2)] [visit_exp (n_2)] [visit_exp n_2] [visit_id n_2] -[visit_exp `%`_u64{i#4966}(m_2)?{i#4966 <- `i#4966?`, m_2 <- `m_2?`}] -[scope_enter i#4966] +[visit_exp `%`_u64(m_2)?{m_2 <- `m_2?`}] [scope_enter m_2] -[visit_exp `%`_u64{i#4966}(m_2)] -[visit_exp i#4966] -[visit_id i#4966] not free +[visit_exp `%`_u64(m_2)] [visit_exp (m_2)] [visit_exp m_2] [visit_id m_2] not free -[visit_id i#4966] not free [visit_id m_2] not free [scope_exit m_2] -[scope_exit i#4966] -[visit_exp `i#4966?`] -[visit_id i#4966?] no dims -[visit_id i#4966?] [visit_exp `m_2?`] [visit_id m_2?] no dims [visit_id m_2?] @@ -21568,31 +20147,19 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `m_2?`] [visit_id m_2?] not free [visit_id m_2?] no dims -[check_dims] C i#4988 i#5010 n_1 n_2 u64#108 u64#120 u64?#107 u64?#119 +[check_dims] C n_1 n_2 [visit_exp C] [visit_id C] -[visit_exp `[%..%]`_limits{u64#108, `u64?#107`}(`%`_u64{i#4988}(n_1), ?())] -[visit_exp u64#108] -[visit_id u64#108] -[visit_exp `u64?#107`] -[visit_id u64?#107] -[visit_exp (`%`_u64{i#4988}(n_1), ?())] -[visit_exp `%`_u64{i#4988}(n_1)] -[visit_exp i#4988] -[visit_id i#4988] +[visit_exp `[%..%]`_limits(`%`_u64(n_1), ?())] +[visit_exp (`%`_u64(n_1), ?())] +[visit_exp `%`_u64(n_1)] [visit_exp (n_1)] [visit_exp n_1] [visit_id n_1] [visit_exp ?()] -[visit_exp `[%..%]`_limits{u64#120, `u64?#119`}(`%`_u64{i#5010}(n_2), ?())] -[visit_exp u64#120] -[visit_id u64#120] -[visit_exp `u64?#119`] -[visit_id u64?#119] -[visit_exp (`%`_u64{i#5010}(n_2), ?())] -[visit_exp `%`_u64{i#5010}(n_2)] -[visit_exp i#5010] -[visit_id i#5010] +[visit_exp `[%..%]`_limits(`%`_u64(n_2), ?())] +[visit_exp (`%`_u64(n_2), ?())] +[visit_exp `%`_u64(n_2)] [visit_exp (n_2)] [visit_exp n_2] [visit_id n_2] @@ -21625,23 +20192,15 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id deftype_2] not free [visit_exp deftype_1] [visit_id deftype_1] not free -[check_dims] C mut?#501 mut?#507 valtype#277 valtype#283 valtype_1 valtype_2 +[check_dims] C valtype_1 valtype_2 [visit_exp C] [visit_id C] -[visit_exp `%%`_globaltype{`mut?#501`, valtype#277}(?(), valtype_1)] -[visit_exp `mut?#501`] -[visit_id mut?#501] -[visit_exp valtype#277] -[visit_id valtype#277] +[visit_exp `%%`_globaltype(?(), valtype_1)] [visit_exp (?(), valtype_1)] [visit_exp ?()] [visit_exp valtype_1] [visit_id valtype_1] -[visit_exp `%%`_globaltype{`mut?#507`, valtype#283}(?(), valtype_2)] -[visit_exp `mut?#507`] -[visit_id mut?#507] -[visit_exp valtype#283] -[visit_id valtype#283] +[visit_exp `%%`_globaltype(?(), valtype_2)] [visit_exp (?(), valtype_2)] [visit_exp ?()] [visit_exp valtype_2] @@ -21653,25 +20212,17 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id valtype_1] not free [visit_exp valtype_2] [visit_id valtype_2] not free -[check_dims] C mut?#519 mut?#531 valtype#295 valtype#307 valtype_1 valtype_2 +[check_dims] C valtype_1 valtype_2 [visit_exp C] [visit_id C] -[visit_exp `%%`_globaltype{`mut?#519`, valtype#295}(?(`MUT`_mut), valtype_1)] -[visit_exp `mut?#519`] -[visit_id mut?#519] -[visit_exp valtype#295] -[visit_id valtype#295] +[visit_exp `%%`_globaltype(?(`MUT`_mut), valtype_1)] [visit_exp (?(`MUT`_mut), valtype_1)] [visit_exp ?(`MUT`_mut)] [visit_exp `MUT`_mut] [visit_exp ()] [visit_exp valtype_1] [visit_id valtype_1] -[visit_exp `%%`_globaltype{`mut?#531`, valtype#307}(?(`MUT`_mut), valtype_2)] -[visit_exp `mut?#531`] -[visit_id mut?#531] -[visit_exp valtype#307] -[visit_id valtype#307] +[visit_exp `%%`_globaltype(?(`MUT`_mut), valtype_2)] [visit_exp (?(`MUT`_mut), valtype_2)] [visit_exp ?(`MUT`_mut)] [visit_exp `MUT`_mut] @@ -21692,24 +20243,16 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id valtype_2] not free [visit_exp valtype_1] [visit_id valtype_1] not free -[check_dims] C addrtype addrtype#345 addrtype#357 limits#345 limits#357 limits_1 limits_2 +[check_dims] C addrtype limits_1 limits_2 [visit_exp C] [visit_id C] -[visit_exp `%%PAGE`_memtype{addrtype#345, limits#345}(addrtype, limits_1)] -[visit_exp addrtype#345] -[visit_id addrtype#345] -[visit_exp limits#345] -[visit_id limits#345] +[visit_exp `%%PAGE`_memtype(addrtype, limits_1)] [visit_exp (addrtype, limits_1)] [visit_exp addrtype] [visit_id addrtype] [visit_exp limits_1] [visit_id limits_1] -[visit_exp `%%PAGE`_memtype{addrtype#357, limits#357}(addrtype, limits_2)] -[visit_exp addrtype#357] -[visit_id addrtype#357] -[visit_exp limits#357] -[visit_id limits#357] +[visit_exp `%%PAGE`_memtype(addrtype, limits_2)] [visit_exp (addrtype, limits_2)] [visit_exp addrtype] [visit_id addrtype] not free @@ -21722,16 +20265,10 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id limits_1] not free [visit_exp limits_2] [visit_id limits_2] not free -[check_dims] C addrtype addrtype#369 addrtype#381 limits#369 limits#381 limits_1 limits_2 reftype#335 reftype#347 reftype_1 reftype_2 +[check_dims] C addrtype limits_1 limits_2 reftype_1 reftype_2 [visit_exp C] [visit_id C] -[visit_exp `%%%`_tabletype{addrtype#369, limits#369, reftype#335}(addrtype, limits_1, reftype_1)] -[visit_exp addrtype#369] -[visit_id addrtype#369] -[visit_exp limits#369] -[visit_id limits#369] -[visit_exp reftype#335] -[visit_id reftype#335] +[visit_exp `%%%`_tabletype(addrtype, limits_1, reftype_1)] [visit_exp (addrtype, limits_1, reftype_1)] [visit_exp addrtype] [visit_id addrtype] @@ -21739,13 +20276,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id limits_1] [visit_exp reftype_1] [visit_id reftype_1] -[visit_exp `%%%`_tabletype{addrtype#381, limits#381, reftype#347}(addrtype, limits_2, reftype_2)] -[visit_exp addrtype#381] -[visit_id addrtype#381] -[visit_exp limits#381] -[visit_id limits#381] -[visit_exp reftype#347] -[visit_id reftype#347] +[visit_exp `%%%`_tabletype(addrtype, limits_2, reftype_2)] [visit_exp (addrtype, limits_2, reftype_2)] [visit_exp addrtype] [visit_id addrtype] not free @@ -21774,18 +20305,14 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id reftype_2] not free [visit_exp reftype_1] [visit_id reftype_1] not free -[check_dims] C tagtype#91 tagtype#93 tagtype_1 tagtype_2 +[check_dims] C tagtype_1 tagtype_2 [visit_exp C] [visit_id C] -[visit_exp `TAG`_externtype{tagtype#91}(tagtype_1)] -[visit_exp tagtype#91] -[visit_id tagtype#91] +[visit_exp `TAG`_externtype(tagtype_1)] [visit_exp (tagtype_1)] [visit_exp tagtype_1] [visit_id tagtype_1] -[visit_exp `TAG`_externtype{tagtype#93}(tagtype_2)] -[visit_exp tagtype#93] -[visit_id tagtype#93] +[visit_exp `TAG`_externtype(tagtype_2)] [visit_exp (tagtype_2)] [visit_exp tagtype_2] [visit_id tagtype_2] @@ -21796,18 +20323,14 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id tagtype_1] not free [visit_exp tagtype_2] [visit_id tagtype_2] not free -[check_dims] C globaltype#103 globaltype#105 globaltype_1 globaltype_2 +[check_dims] C globaltype_1 globaltype_2 [visit_exp C] [visit_id C] -[visit_exp `GLOBAL`_externtype{globaltype#103}(globaltype_1)] -[visit_exp globaltype#103] -[visit_id globaltype#103] +[visit_exp `GLOBAL`_externtype(globaltype_1)] [visit_exp (globaltype_1)] [visit_exp globaltype_1] [visit_id globaltype_1] -[visit_exp `GLOBAL`_externtype{globaltype#105}(globaltype_2)] -[visit_exp globaltype#105] -[visit_id globaltype#105] +[visit_exp `GLOBAL`_externtype(globaltype_2)] [visit_exp (globaltype_2)] [visit_exp globaltype_2] [visit_id globaltype_2] @@ -21818,18 +20341,14 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id globaltype_1] not free [visit_exp globaltype_2] [visit_id globaltype_2] not free -[check_dims] C memtype#115 memtype#117 memtype_1 memtype_2 +[check_dims] C memtype_1 memtype_2 [visit_exp C] [visit_id C] -[visit_exp `MEM`_externtype{memtype#115}(memtype_1)] -[visit_exp memtype#115] -[visit_id memtype#115] +[visit_exp `MEM`_externtype(memtype_1)] [visit_exp (memtype_1)] [visit_exp memtype_1] [visit_id memtype_1] -[visit_exp `MEM`_externtype{memtype#117}(memtype_2)] -[visit_exp memtype#117] -[visit_id memtype#117] +[visit_exp `MEM`_externtype(memtype_2)] [visit_exp (memtype_2)] [visit_exp memtype_2] [visit_id memtype_2] @@ -21840,18 +20359,14 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id memtype_1] not free [visit_exp memtype_2] [visit_id memtype_2] not free -[check_dims] C tabletype#129 tabletype#131 tabletype_1 tabletype_2 +[check_dims] C tabletype_1 tabletype_2 [visit_exp C] [visit_id C] -[visit_exp `TABLE`_externtype{tabletype#129}(tabletype_1)] -[visit_exp tabletype#129] -[visit_id tabletype#129] +[visit_exp `TABLE`_externtype(tabletype_1)] [visit_exp (tabletype_1)] [visit_exp tabletype_1] [visit_id tabletype_1] -[visit_exp `TABLE`_externtype{tabletype#131}(tabletype_2)] -[visit_exp tabletype#131] -[visit_id tabletype#131] +[visit_exp `TABLE`_externtype(tabletype_2)] [visit_exp (tabletype_2)] [visit_exp tabletype_2] [visit_id tabletype_2] @@ -21862,19 +20377,15 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id tabletype_1] not free [visit_exp tabletype_2] [visit_id tabletype_2] not free -[check_dims] C deftype_1 deftype_2 typeuse#19 typeuse#21 +[check_dims] C deftype_1 deftype_2 [visit_exp C] [visit_id C] -[visit_exp `FUNC`_externtype{typeuse#19}((deftype_1 : deftype <: typeuse))] -[visit_exp typeuse#19] -[visit_id typeuse#19] +[visit_exp `FUNC`_externtype((deftype_1 : deftype <: typeuse))] [visit_exp ((deftype_1 : deftype <: typeuse))] [visit_exp (deftype_1 : deftype <: typeuse)] [visit_exp deftype_1] [visit_id deftype_1] -[visit_exp `FUNC`_externtype{typeuse#21}((deftype_2 : deftype <: typeuse))] -[visit_exp typeuse#21] -[visit_id typeuse#21] +[visit_exp `FUNC`_externtype((deftype_2 : deftype <: typeuse))] [visit_exp ((deftype_2 : deftype <: typeuse))] [visit_exp (deftype_2 : deftype <: typeuse)] [visit_exp deftype_2] @@ -21891,42 +20402,28 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [check_dims] [check_dims] [check_dims] -[check_dims] C X*#1268 X*#1317 localidx*#83 resulttype#105 +[check_dims] C [visit_exp C] [visit_id C] [visit_exp `NOP`_instr] [visit_exp ()] -[visit_exp `%->_%%`_instrtype{resulttype#105, `localidx*#83`}(`%`_resulttype{`X*#1268`}([]), [], `%`_resulttype{`X*#1317`}([]))] -[visit_exp resulttype#105] -[visit_id resulttype#105] -[visit_exp `localidx*#83`] -[visit_id localidx*#83] -[visit_exp (`%`_resulttype{`X*#1268`}([]), [], `%`_resulttype{`X*#1317`}([]))] -[visit_exp `%`_resulttype{`X*#1268`}([])] -[visit_exp `X*#1268`] -[visit_id X*#1268] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))] +[visit_exp (`%`_resulttype([]), [], `%`_resulttype([]))] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] [visit_exp []] -[visit_exp `%`_resulttype{`X*#1317`}([])] -[visit_exp `X*#1317`] -[visit_id X*#1317] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] -[check_dims] C X*#1328 X*#1379 X*#1390 X*#1441 localidx*#107 localidx*#95 resulttype#125 resulttype#145 t_1 t_2 +[check_dims] C t_1 t_2 [visit_exp C] [visit_id C] [visit_exp `UNREACHABLE`_instr] [visit_exp ()] -[visit_exp `%->_%%`_instrtype{resulttype#125, `localidx*#95`}(`%`_resulttype{`X*#1328`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#1379`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#125] -[visit_id resulttype#125] -[visit_exp `localidx*#95`] -[visit_id localidx*#95] -[visit_exp (`%`_resulttype{`X*#1328`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#1379`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#1328`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#1328`] -[visit_id X*#1328] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -21938,9 +20435,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id t_1*] no dims [visit_id t_1*] [visit_exp []] -[visit_exp `%`_resulttype{`X*#1379`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#1379`] -[visit_id X*#1379] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -21951,18 +20446,12 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_2*`] [visit_id t_2*] no dims [visit_id t_2*] -[visit_exp (C, `%->_%%`_instrtype{resulttype#145, `localidx*#107`}(`%`_resulttype{`X*#1390`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#1441`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp (C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})))] [visit_exp C] [visit_id C] not free -[visit_exp `%->_%%`_instrtype{resulttype#145, `localidx*#107`}(`%`_resulttype{`X*#1390`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#1441`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#145] -[visit_id resulttype#145] -[visit_exp `localidx*#107`] -[visit_id localidx*#107] -[visit_exp (`%`_resulttype{`X*#1390`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#1441`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#1390`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#1390`] -[visit_id X*#1390] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -21974,9 +20463,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id t_1*] not free [visit_id t_1*] no dims [visit_exp []] -[visit_exp `%`_resulttype{`X*#1441`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#1441`] -[visit_id X*#1441] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -21987,28 +20474,20 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_2*`] [visit_id t_2*] not free [visit_id t_2*] no dims -[check_dims] C X*#1452 X*#1520 localidx*#119 resulttype#165 t +[check_dims] C t [visit_exp C] [visit_id C] [visit_exp `DROP`_instr] [visit_exp ()] -[visit_exp `%->_%%`_instrtype{resulttype#165, `localidx*#119`}(`%`_resulttype{`X*#1452`}([t]), [], `%`_resulttype{`X*#1520`}([]))] -[visit_exp resulttype#165] -[visit_id resulttype#165] -[visit_exp `localidx*#119`] -[visit_id localidx*#119] -[visit_exp (`%`_resulttype{`X*#1452`}([t]), [], `%`_resulttype{`X*#1520`}([]))] -[visit_exp `%`_resulttype{`X*#1452`}([t])] -[visit_exp `X*#1452`] -[visit_id X*#1452] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))] +[visit_exp (`%`_resulttype([t]), [], `%`_resulttype([]))] +[visit_exp `%`_resulttype([t])] [visit_exp ([t])] [visit_exp [t]] [visit_exp t] [visit_id t] [visit_exp []] -[visit_exp `%`_resulttype{`X*#1520`}([])] -[visit_exp `X*#1520`] -[visit_id X*#1520] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] [visit_exp (C, t)] @@ -22016,26 +20495,18 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id C] not free [visit_exp t] [visit_id t] not free -[check_dims] C X*#1541 X*#1590 localidx*#131 resulttype#185 t valtype*?#3 +[check_dims] C t [visit_exp C] [visit_id C] -[visit_exp `SELECT`_instr{`valtype*?#3`}(?([t]))] -[visit_exp `valtype*?#3`] -[visit_id valtype*?#3] +[visit_exp `SELECT`_instr(?([t]))] [visit_exp (?([t]))] [visit_exp ?([t])] [visit_exp [t]] [visit_exp t] [visit_id t] -[visit_exp `%->_%%`_instrtype{resulttype#185, `localidx*#131`}(`%`_resulttype{`X*#1541`}([t t `I32`_valtype]), [], `%`_resulttype{`X*#1590`}([t]))] -[visit_exp resulttype#185] -[visit_id resulttype#185] -[visit_exp `localidx*#131`] -[visit_id localidx*#131] -[visit_exp (`%`_resulttype{`X*#1541`}([t t `I32`_valtype]), [], `%`_resulttype{`X*#1590`}([t]))] -[visit_exp `%`_resulttype{`X*#1541`}([t t `I32`_valtype])] -[visit_exp `X*#1541`] -[visit_id X*#1541] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([t t `I32`_valtype]), [], `%`_resulttype([t]))] +[visit_exp (`%`_resulttype([t t `I32`_valtype]), [], `%`_resulttype([t]))] +[visit_exp `%`_resulttype([t t `I32`_valtype])] [visit_exp ([t t `I32`_valtype])] [visit_exp [t t `I32`_valtype]] [visit_exp t] @@ -22045,9 +20516,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `I32`_valtype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#1590`}([t])] -[visit_exp `X*#1590`] -[visit_id X*#1590] +[visit_exp `%`_resulttype([t])] [visit_exp ([t])] [visit_exp [t]] [visit_exp t] @@ -22057,23 +20526,15 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id C] not free [visit_exp t] [visit_id t] not free -[check_dims] C X*#1611 X*#1660 localidx*#143 numtype resulttype#205 t t' valtype*?#5 vectype +[check_dims] C numtype t t' vectype [visit_exp C] [visit_id C] -[visit_exp `SELECT`_instr{`valtype*?#5`}(?())] -[visit_exp `valtype*?#5`] -[visit_id valtype*?#5] +[visit_exp `SELECT`_instr(?())] [visit_exp (?())] [visit_exp ?()] -[visit_exp `%->_%%`_instrtype{resulttype#205, `localidx*#143`}(`%`_resulttype{`X*#1611`}([t t `I32`_valtype]), [], `%`_resulttype{`X*#1660`}([t]))] -[visit_exp resulttype#205] -[visit_id resulttype#205] -[visit_exp `localidx*#143`] -[visit_id localidx*#143] -[visit_exp (`%`_resulttype{`X*#1611`}([t t `I32`_valtype]), [], `%`_resulttype{`X*#1660`}([t]))] -[visit_exp `%`_resulttype{`X*#1611`}([t t `I32`_valtype])] -[visit_exp `X*#1611`] -[visit_id X*#1611] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([t t `I32`_valtype]), [], `%`_resulttype([t]))] +[visit_exp (`%`_resulttype([t t `I32`_valtype]), [], `%`_resulttype([t]))] +[visit_exp `%`_resulttype([t t `I32`_valtype])] [visit_exp ([t t `I32`_valtype])] [visit_exp [t t `I32`_valtype]] [visit_exp t] @@ -22083,9 +20544,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `I32`_valtype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#1660`}([t])] -[visit_exp `X*#1660`] -[visit_id X*#1660] +[visit_exp `%`_resulttype([t])] [visit_exp ([t])] [visit_exp [t]] [visit_exp t] @@ -22116,12 +20575,10 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp vectype] [visit_id vectype] [check_dims] -[check_dims] C X*#1681 X*#1730 localidx*#155 resulttype#225 valtype valtype?#3 +[check_dims] C valtype [visit_exp C] [visit_id C] -[visit_exp `_RESULT`_blocktype{`valtype?#3`}(valtype?{valtype <- `valtype?`})] -[visit_exp `valtype?#3`] -[visit_id valtype?#3] +[visit_exp `_RESULT`_blocktype(valtype?{valtype <- `valtype?`})] [visit_exp (valtype?{valtype <- `valtype?`})] [visit_exp valtype?{valtype <- `valtype?`}] [scope_enter valtype] @@ -22132,21 +20589,13 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `valtype?`] [visit_id valtype?] no dims [visit_id valtype?] -[visit_exp `%->_%%`_instrtype{resulttype#225, `localidx*#155`}(`%`_resulttype{`X*#1681`}([]), [], `%`_resulttype{`X*#1730`}(lift(valtype?{valtype <- `valtype?`})))] -[visit_exp resulttype#225] -[visit_id resulttype#225] -[visit_exp `localidx*#155`] -[visit_id localidx*#155] -[visit_exp (`%`_resulttype{`X*#1681`}([]), [], `%`_resulttype{`X*#1730`}(lift(valtype?{valtype <- `valtype?`})))] -[visit_exp `%`_resulttype{`X*#1681`}([])] -[visit_exp `X*#1681`] -[visit_id X*#1681] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))] +[visit_exp (`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] [visit_exp []] -[visit_exp `%`_resulttype{`X*#1730`}(lift(valtype?{valtype <- `valtype?`}))] -[visit_exp `X*#1730`] -[visit_id X*#1730] +[visit_exp `%`_resulttype(lift(valtype?{valtype <- `valtype?`}))] [visit_exp (lift(valtype?{valtype <- `valtype?`}))] [visit_exp lift(valtype?{valtype <- `valtype?`})] [visit_exp valtype?{valtype <- `valtype?`}] @@ -22169,24 +20618,16 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `valtype?`] [visit_id valtype?] not free [visit_id valtype?] no dims -[check_dims] C X*#1741 X*#1792 X*#1805 X*#1818 deftype*#19 i#5032 localidx*#167 resulttype#245 resulttype#248 t_1 t_2 typeidx typeidx#392 +[check_dims] C t_1 t_2 typeidx [visit_exp C] [visit_id C] -[visit_exp `_IDX`_blocktype{typeidx#392}(typeidx)] -[visit_exp typeidx#392] -[visit_id typeidx#392] +[visit_exp `_IDX`_blocktype(typeidx)] [visit_exp (typeidx)] [visit_exp typeidx] [visit_id typeidx] -[visit_exp `%->_%%`_instrtype{resulttype#245, `localidx*#167`}(`%`_resulttype{`X*#1741`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#1792`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#245] -[visit_id resulttype#245] -[visit_exp `localidx*#167`] -[visit_id localidx*#167] -[visit_exp (`%`_resulttype{`X*#1741`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#1792`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#1741`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#1741`] -[visit_id X*#1741] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -22198,9 +20639,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id t_1*] no dims [visit_id t_1*] [visit_exp []] -[visit_exp `%`_resulttype{`X*#1792`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#1792`] -[visit_id X*#1792] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -22211,26 +20650,18 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_2*`] [visit_id t_2*] no dims [visit_id t_2*] -[visit_exp (C.`TYPES`_context{`deftype*#19`}[typeidx!`%`_typeidx{i#5032}.0], `FUNC%->%`_comptype{resulttype#248}(`%`_resulttype{`X*#1805`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#1818`}(t_2*{t_2 <- `t_2*`})))] -[visit_exp C.`TYPES`_context{`deftype*#19`}[typeidx!`%`_typeidx{i#5032}.0]] -[visit_exp C.`TYPES`_context{`deftype*#19`}] +[visit_exp (C.`TYPES`_context[typeidx!`%`_typeidx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))] +[visit_exp C.`TYPES`_context[typeidx!`%`_typeidx.0]] +[visit_exp C.`TYPES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `deftype*#19`] -[visit_id deftype*#19] -[visit_exp typeidx!`%`_typeidx{i#5032}.0] -[visit_exp typeidx!`%`_typeidx{i#5032}] +[visit_exp typeidx!`%`_typeidx.0] +[visit_exp typeidx!`%`_typeidx] [visit_exp typeidx] [visit_id typeidx] not free -[visit_exp i#5032] -[visit_id i#5032] -[visit_exp `FUNC%->%`_comptype{resulttype#248}(`%`_resulttype{`X*#1805`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#1818`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#248] -[visit_id resulttype#248] -[visit_exp (`%`_resulttype{`X*#1805`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#1818`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#1805`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#1805`] -[visit_id X*#1805] +[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -22241,9 +20672,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_1*`] [visit_id t_1*] not free [visit_id t_1*] no dims -[visit_exp `%`_resulttype{`X*#1818`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#1818`] -[visit_id X*#1818] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -22254,14 +20683,10 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_2*`] [visit_id t_2*] not free [visit_id t_2*] no dims -[check_dims] C X*#1831 X*#1882 X*#1893 X*#1944 X*#1955 X*#1968 X*#2020 blocktype#7 bt datatype*#2 deftype*#20 deftype*#21 elemtype*#2 funcidx*#40 globaltype*#2 instr instr*#8 localidx*#179 localidx*#191 localidx*#203 localtype*#5 memtype*#2 resulttype#268 resulttype#288 resulttype#308 resulttype*#2 resulttype?#2 subtype*#5 t_1 t_2 tabletype*#2 tagtype*#2 x +[check_dims] C bt instr t_1 t_2 x [visit_exp C] [visit_id C] -[visit_exp `BLOCK`_instr{blocktype#7, `instr*#8`}(bt, instr*{instr <- `instr*`})] -[visit_exp blocktype#7] -[visit_id blocktype#7] -[visit_exp `instr*#8`] -[visit_id instr*#8] +[visit_exp `BLOCK`_instr(bt, instr*{instr <- `instr*`})] [visit_exp (bt, instr*{instr <- `instr*`})] [visit_exp bt] [visit_id bt] @@ -22274,15 +20699,9 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `instr*`] [visit_id instr*] no dims [visit_id instr*] -[visit_exp `%->_%%`_instrtype{resulttype#268, `localidx*#179`}(`%`_resulttype{`X*#1831`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#1882`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#268] -[visit_id resulttype#268] -[visit_exp `localidx*#179`] -[visit_id localidx*#179] -[visit_exp (`%`_resulttype{`X*#1831`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#1882`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#1831`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#1831`] -[visit_id X*#1831] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -22294,9 +20713,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id t_1*] no dims [visit_id t_1*] [visit_exp []] -[visit_exp `%`_resulttype{`X*#1882`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#1882`] -[visit_id X*#1882] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -22307,20 +20724,14 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_2*`] [visit_id t_2*] no dims [visit_id t_2*] -[visit_exp (C, bt, `%->_%%`_instrtype{resulttype#288, `localidx*#191`}(`%`_resulttype{`X*#1893`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#1944`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp (C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})))] [visit_exp C] [visit_id C] not free [visit_exp bt] [visit_id bt] not free -[visit_exp `%->_%%`_instrtype{resulttype#288, `localidx*#191`}(`%`_resulttype{`X*#1893`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#1944`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#288] -[visit_id resulttype#288] -[visit_exp `localidx*#191`] -[visit_id localidx*#191] -[visit_exp (`%`_resulttype{`X*#1893`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#1944`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#1893`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#1893`] -[visit_id X*#1893] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -22332,9 +20743,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id t_1*] not free [visit_id t_1*] no dims [visit_exp []] -[visit_exp `%`_resulttype{`X*#1944`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#1944`] -[visit_id X*#1944] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -22345,45 +20754,21 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_2*`] [visit_id t_2*] not free [visit_id t_2*] no dims -[visit_exp ({`TYPES`{`deftype*#20`} [], `RECS`{`subtype*#5`} [], `TAGS`{`tagtype*#2`} [], `GLOBALS`{`globaltype*#2`} [], `MEMS`{`memtype*#2`} [], `TABLES`{`tabletype*#2`} [], `FUNCS`{`deftype*#21`} [], `DATAS`{`datatype*#2`} [], `ELEMS`{`elemtype*#2`} [], `LOCALS`{`localtype*#5`} [], `LABELS`{`resulttype*#2`} [`%`_resulttype{`X*#1955`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#2`} ?(), `REFS`{`funcidx*#40`} []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype{resulttype#308, `localidx*#203`}(`%`_resulttype{`X*#1968`}(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype{`X*#2020`}(t_2*{t_2 <- `t_2*`})))] -[visit_exp {`TYPES`{`deftype*#20`} [], `RECS`{`subtype*#5`} [], `TAGS`{`tagtype*#2`} [], `GLOBALS`{`globaltype*#2`} [], `MEMS`{`memtype*#2`} [], `TABLES`{`tabletype*#2`} [], `FUNCS`{`deftype*#21`} [], `DATAS`{`datatype*#2`} [], `ELEMS`{`elemtype*#2`} [], `LOCALS`{`localtype*#5`} [], `LABELS`{`resulttype*#2`} [`%`_resulttype{`X*#1955`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#2`} ?(), `REFS`{`funcidx*#40`} []} +++ C] -[visit_exp {`TYPES`{`deftype*#20`} [], `RECS`{`subtype*#5`} [], `TAGS`{`tagtype*#2`} [], `GLOBALS`{`globaltype*#2`} [], `MEMS`{`memtype*#2`} [], `TABLES`{`tabletype*#2`} [], `FUNCS`{`deftype*#21`} [], `DATAS`{`datatype*#2`} [], `ELEMS`{`elemtype*#2`} [], `LOCALS`{`localtype*#5`} [], `LABELS`{`resulttype*#2`} [`%`_resulttype{`X*#1955`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#2`} ?(), `REFS`{`funcidx*#40`} []}] -[visit_exp `deftype*#20`] -[visit_id deftype*#20] +[visit_exp ({`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*`})))] +[visit_exp {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [`%`_resulttype(t_2*{t_2 <- `t_2*`})], `RETURN` ?(), `REFS` []} +++ C] +[visit_exp {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [`%`_resulttype(t_2*{t_2 <- `t_2*`})], `RETURN` ?(), `REFS` []}] [visit_exp []] -[visit_exp `subtype*#5`] -[visit_id subtype*#5] [visit_exp []] -[visit_exp `tagtype*#2`] -[visit_id tagtype*#2] [visit_exp []] -[visit_exp `globaltype*#2`] -[visit_id globaltype*#2] [visit_exp []] -[visit_exp `memtype*#2`] -[visit_id memtype*#2] [visit_exp []] -[visit_exp `tabletype*#2`] -[visit_id tabletype*#2] [visit_exp []] -[visit_exp `deftype*#21`] -[visit_id deftype*#21] [visit_exp []] -[visit_exp `datatype*#2`] -[visit_id datatype*#2] [visit_exp []] -[visit_exp `elemtype*#2`] -[visit_id elemtype*#2] [visit_exp []] -[visit_exp `localtype*#5`] -[visit_id localtype*#5] [visit_exp []] -[visit_exp `resulttype*#2`] -[visit_id resulttype*#2] -[visit_exp [`%`_resulttype{`X*#1955`}(t_2*{t_2 <- `t_2*`})]] -[visit_exp `%`_resulttype{`X*#1955`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#1955`] -[visit_id X*#1955] +[visit_exp [`%`_resulttype(t_2*{t_2 <- `t_2*`})]] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -22394,11 +20779,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_2*`] [visit_id t_2*] not free [visit_id t_2*] no dims -[visit_exp `resulttype?#2`] -[visit_id resulttype?#2] [visit_exp ?()] -[visit_exp `funcidx*#40`] -[visit_id funcidx*#40] [visit_exp []] [visit_exp C] [visit_id C] not free @@ -22411,15 +20792,9 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `instr*`] [visit_id instr*] not free [visit_id instr*] no dims -[visit_exp `%->_%%`_instrtype{resulttype#308, `localidx*#203`}(`%`_resulttype{`X*#1968`}(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype{`X*#2020`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#308] -[visit_id resulttype#308] -[visit_exp `localidx*#203`] -[visit_id localidx*#203] -[visit_exp (`%`_resulttype{`X*#1968`}(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype{`X*#2020`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#1968`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#1968`] -[visit_id X*#1968] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -22439,9 +20814,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `x*`] [visit_id x*] no dims [visit_id x*] -[visit_exp `%`_resulttype{`X*#2020`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#2020`] -[visit_id X*#2020] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -22452,14 +20825,10 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_2*`] [visit_id t_2*] not free [visit_id t_2*] no dims -[check_dims] C X*#2033 X*#2084 X*#2095 X*#2146 X*#2157 X*#2170 X*#2222 blocktype#9 bt datatype*#3 deftype*#22 deftype*#23 elemtype*#3 funcidx*#41 globaltype*#3 instr instr*#10 localidx*#215 localidx*#227 localidx*#239 localtype*#6 memtype*#3 resulttype#328 resulttype#348 resulttype#368 resulttype*#3 resulttype?#3 subtype*#6 t_1 t_2 tabletype*#3 tagtype*#3 x +[check_dims] C bt instr t_1 t_2 x [visit_exp C] [visit_id C] -[visit_exp `LOOP`_instr{blocktype#9, `instr*#10`}(bt, instr*{instr <- `instr*`})] -[visit_exp blocktype#9] -[visit_id blocktype#9] -[visit_exp `instr*#10`] -[visit_id instr*#10] +[visit_exp `LOOP`_instr(bt, instr*{instr <- `instr*`})] [visit_exp (bt, instr*{instr <- `instr*`})] [visit_exp bt] [visit_id bt] @@ -22472,15 +20841,9 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `instr*`] [visit_id instr*] no dims [visit_id instr*] -[visit_exp `%->_%%`_instrtype{resulttype#328, `localidx*#215`}(`%`_resulttype{`X*#2033`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#2084`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#328] -[visit_id resulttype#328] -[visit_exp `localidx*#215`] -[visit_id localidx*#215] -[visit_exp (`%`_resulttype{`X*#2033`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#2084`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#2033`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#2033`] -[visit_id X*#2033] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -22492,9 +20855,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id t_1*] no dims [visit_id t_1*] [visit_exp []] -[visit_exp `%`_resulttype{`X*#2084`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#2084`] -[visit_id X*#2084] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -22505,20 +20866,14 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_2*`] [visit_id t_2*] no dims [visit_id t_2*] -[visit_exp (C, bt, `%->_%%`_instrtype{resulttype#348, `localidx*#227`}(`%`_resulttype{`X*#2095`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#2146`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp (C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})))] [visit_exp C] [visit_id C] not free [visit_exp bt] [visit_id bt] not free -[visit_exp `%->_%%`_instrtype{resulttype#348, `localidx*#227`}(`%`_resulttype{`X*#2095`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#2146`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#348] -[visit_id resulttype#348] -[visit_exp `localidx*#227`] -[visit_id localidx*#227] -[visit_exp (`%`_resulttype{`X*#2095`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#2146`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#2095`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#2095`] -[visit_id X*#2095] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -22530,9 +20885,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id t_1*] not free [visit_id t_1*] no dims [visit_exp []] -[visit_exp `%`_resulttype{`X*#2146`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#2146`] -[visit_id X*#2146] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -22543,45 +20896,21 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_2*`] [visit_id t_2*] not free [visit_id t_2*] no dims -[visit_exp ({`TYPES`{`deftype*#22`} [], `RECS`{`subtype*#6`} [], `TAGS`{`tagtype*#3`} [], `GLOBALS`{`globaltype*#3`} [], `MEMS`{`memtype*#3`} [], `TABLES`{`tabletype*#3`} [], `FUNCS`{`deftype*#23`} [], `DATAS`{`datatype*#3`} [], `ELEMS`{`elemtype*#3`} [], `LOCALS`{`localtype*#6`} [], `LABELS`{`resulttype*#3`} [`%`_resulttype{`X*#2157`}(t_1*{t_1 <- `t_1*`})], `RETURN`{`resulttype?#3`} ?(), `REFS`{`funcidx*#41`} []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype{resulttype#368, `localidx*#239`}(`%`_resulttype{`X*#2170`}(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype{`X*#2222`}(t_2*{t_2 <- `t_2*`})))] -[visit_exp {`TYPES`{`deftype*#22`} [], `RECS`{`subtype*#6`} [], `TAGS`{`tagtype*#3`} [], `GLOBALS`{`globaltype*#3`} [], `MEMS`{`memtype*#3`} [], `TABLES`{`tabletype*#3`} [], `FUNCS`{`deftype*#23`} [], `DATAS`{`datatype*#3`} [], `ELEMS`{`elemtype*#3`} [], `LOCALS`{`localtype*#6`} [], `LABELS`{`resulttype*#3`} [`%`_resulttype{`X*#2157`}(t_1*{t_1 <- `t_1*`})], `RETURN`{`resulttype?#3`} ?(), `REFS`{`funcidx*#41`} []} +++ C] -[visit_exp {`TYPES`{`deftype*#22`} [], `RECS`{`subtype*#6`} [], `TAGS`{`tagtype*#3`} [], `GLOBALS`{`globaltype*#3`} [], `MEMS`{`memtype*#3`} [], `TABLES`{`tabletype*#3`} [], `FUNCS`{`deftype*#23`} [], `DATAS`{`datatype*#3`} [], `ELEMS`{`elemtype*#3`} [], `LOCALS`{`localtype*#6`} [], `LABELS`{`resulttype*#3`} [`%`_resulttype{`X*#2157`}(t_1*{t_1 <- `t_1*`})], `RETURN`{`resulttype?#3`} ?(), `REFS`{`funcidx*#41`} []}] -[visit_exp `deftype*#22`] -[visit_id deftype*#22] +[visit_exp ({`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*`})))] +[visit_exp {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [`%`_resulttype(t_1*{t_1 <- `t_1*`})], `RETURN` ?(), `REFS` []} +++ C] +[visit_exp {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [`%`_resulttype(t_1*{t_1 <- `t_1*`})], `RETURN` ?(), `REFS` []}] [visit_exp []] -[visit_exp `subtype*#6`] -[visit_id subtype*#6] [visit_exp []] -[visit_exp `tagtype*#3`] -[visit_id tagtype*#3] [visit_exp []] -[visit_exp `globaltype*#3`] -[visit_id globaltype*#3] [visit_exp []] -[visit_exp `memtype*#3`] -[visit_id memtype*#3] [visit_exp []] -[visit_exp `tabletype*#3`] -[visit_id tabletype*#3] [visit_exp []] -[visit_exp `deftype*#23`] -[visit_id deftype*#23] [visit_exp []] -[visit_exp `datatype*#3`] -[visit_id datatype*#3] [visit_exp []] -[visit_exp `elemtype*#3`] -[visit_id elemtype*#3] [visit_exp []] -[visit_exp `localtype*#6`] -[visit_id localtype*#6] [visit_exp []] -[visit_exp `resulttype*#3`] -[visit_id resulttype*#3] -[visit_exp [`%`_resulttype{`X*#2157`}(t_1*{t_1 <- `t_1*`})]] -[visit_exp `%`_resulttype{`X*#2157`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#2157`] -[visit_id X*#2157] +[visit_exp [`%`_resulttype(t_1*{t_1 <- `t_1*`})]] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -22592,11 +20921,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_1*`] [visit_id t_1*] not free [visit_id t_1*] no dims -[visit_exp `resulttype?#3`] -[visit_id resulttype?#3] [visit_exp ?()] -[visit_exp `funcidx*#41`] -[visit_id funcidx*#41] [visit_exp []] [visit_exp C] [visit_id C] not free @@ -22609,15 +20934,9 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `instr*`] [visit_id instr*] not free [visit_id instr*] no dims -[visit_exp `%->_%%`_instrtype{resulttype#368, `localidx*#239`}(`%`_resulttype{`X*#2170`}(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype{`X*#2222`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#368] -[visit_id resulttype#368] -[visit_exp `localidx*#239`] -[visit_id localidx*#239] -[visit_exp (`%`_resulttype{`X*#2170`}(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype{`X*#2222`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#2170`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#2170`] -[visit_id X*#2170] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -22637,9 +20956,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `x*`] [visit_id x*] no dims [visit_id x*] -[visit_exp `%`_resulttype{`X*#2222`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#2222`] -[visit_id X*#2222] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -22650,14 +20967,10 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_2*`] [visit_id t_2*] not free [visit_id t_2*] no dims -[check_dims] C X*#2245 X*#2294 X*#2305 X*#2356 X*#2367 X*#2380 X*#2432 X*#2445 X*#2458 X*#2510 blocktype#11 bt datatype*#4 datatype*#5 deftype*#24 deftype*#25 deftype*#26 deftype*#27 elemtype*#4 elemtype*#5 funcidx*#42 funcidx*#43 globaltype*#4 globaltype*#5 instr*#12 instr_1 instr_2 localidx*#251 localidx*#263 localidx*#275 localidx*#287 localtype*#7 localtype*#8 memtype*#4 memtype*#5 resulttype#388 resulttype#408 resulttype#428 resulttype#448 resulttype*#4 resulttype*#5 resulttype?#4 resulttype?#5 subtype*#7 subtype*#8 t_1 t_2 tabletype*#4 tabletype*#5 tagtype*#4 tagtype*#5 x_1 x_2 +[check_dims] C bt instr_1 instr_2 t_1 t_2 x_1 x_2 [visit_exp C] [visit_id C] -[visit_exp `IF%%ELSE%`_instr{blocktype#11, `instr*#12`}(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})] -[visit_exp blocktype#11] -[visit_id blocktype#11] -[visit_exp `instr*#12`] -[visit_id instr*#12] +[visit_exp `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})] [visit_exp (bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})] [visit_exp bt] [visit_id bt] @@ -22679,15 +20992,9 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `instr_2*`] [visit_id instr_2*] no dims [visit_id instr_2*] -[visit_exp `%->_%%`_instrtype{resulttype#388, `localidx*#251`}(`%`_resulttype{`X*#2245`}(t_1*{t_1 <- `t_1*`} ++ [`I32`_valtype]), [], `%`_resulttype{`X*#2294`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#388] -[visit_id resulttype#388] -[visit_exp `localidx*#251`] -[visit_id localidx*#251] -[visit_exp (`%`_resulttype{`X*#2245`}(t_1*{t_1 <- `t_1*`} ++ [`I32`_valtype]), [], `%`_resulttype{`X*#2294`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#2245`}(t_1*{t_1 <- `t_1*`} ++ [`I32`_valtype])] -[visit_exp `X*#2245`] -[visit_id X*#2245] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [`I32`_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [`I32`_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [`I32`_valtype])] [visit_exp (t_1*{t_1 <- `t_1*`} ++ [`I32`_valtype])] [visit_exp t_1*{t_1 <- `t_1*`} ++ [`I32`_valtype]] [visit_exp t_1*{t_1 <- `t_1*`}] @@ -22703,9 +21010,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `I32`_valtype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#2294`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#2294`] -[visit_id X*#2294] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -22716,20 +21021,14 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_2*`] [visit_id t_2*] no dims [visit_id t_2*] -[visit_exp (C, bt, `%->_%%`_instrtype{resulttype#408, `localidx*#263`}(`%`_resulttype{`X*#2305`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#2356`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp (C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})))] [visit_exp C] [visit_id C] not free [visit_exp bt] [visit_id bt] not free -[visit_exp `%->_%%`_instrtype{resulttype#408, `localidx*#263`}(`%`_resulttype{`X*#2305`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#2356`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#408] -[visit_id resulttype#408] -[visit_exp `localidx*#263`] -[visit_id localidx*#263] -[visit_exp (`%`_resulttype{`X*#2305`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#2356`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#2305`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#2305`] -[visit_id X*#2305] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -22741,9 +21040,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id t_1*] not free [visit_id t_1*] no dims [visit_exp []] -[visit_exp `%`_resulttype{`X*#2356`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#2356`] -[visit_id X*#2356] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -22754,45 +21051,21 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_2*`] [visit_id t_2*] not free [visit_id t_2*] no dims -[visit_exp ({`TYPES`{`deftype*#24`} [], `RECS`{`subtype*#7`} [], `TAGS`{`tagtype*#4`} [], `GLOBALS`{`globaltype*#4`} [], `MEMS`{`memtype*#4`} [], `TABLES`{`tabletype*#4`} [], `FUNCS`{`deftype*#25`} [], `DATAS`{`datatype*#4`} [], `ELEMS`{`elemtype*#4`} [], `LOCALS`{`localtype*#7`} [], `LABELS`{`resulttype*#4`} [`%`_resulttype{`X*#2367`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#4`} ?(), `REFS`{`funcidx*#42`} []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype{resulttype#428, `localidx*#275`}(`%`_resulttype{`X*#2380`}(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype{`X*#2432`}(t_2*{t_2 <- `t_2*`})))] -[visit_exp {`TYPES`{`deftype*#24`} [], `RECS`{`subtype*#7`} [], `TAGS`{`tagtype*#4`} [], `GLOBALS`{`globaltype*#4`} [], `MEMS`{`memtype*#4`} [], `TABLES`{`tabletype*#4`} [], `FUNCS`{`deftype*#25`} [], `DATAS`{`datatype*#4`} [], `ELEMS`{`elemtype*#4`} [], `LOCALS`{`localtype*#7`} [], `LABELS`{`resulttype*#4`} [`%`_resulttype{`X*#2367`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#4`} ?(), `REFS`{`funcidx*#42`} []} +++ C] -[visit_exp {`TYPES`{`deftype*#24`} [], `RECS`{`subtype*#7`} [], `TAGS`{`tagtype*#4`} [], `GLOBALS`{`globaltype*#4`} [], `MEMS`{`memtype*#4`} [], `TABLES`{`tabletype*#4`} [], `FUNCS`{`deftype*#25`} [], `DATAS`{`datatype*#4`} [], `ELEMS`{`elemtype*#4`} [], `LOCALS`{`localtype*#7`} [], `LABELS`{`resulttype*#4`} [`%`_resulttype{`X*#2367`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#4`} ?(), `REFS`{`funcidx*#42`} []}] -[visit_exp `deftype*#24`] -[visit_id deftype*#24] +[visit_exp ({`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*`})))] +[visit_exp {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [`%`_resulttype(t_2*{t_2 <- `t_2*`})], `RETURN` ?(), `REFS` []} +++ C] +[visit_exp {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [`%`_resulttype(t_2*{t_2 <- `t_2*`})], `RETURN` ?(), `REFS` []}] [visit_exp []] -[visit_exp `subtype*#7`] -[visit_id subtype*#7] [visit_exp []] -[visit_exp `tagtype*#4`] -[visit_id tagtype*#4] [visit_exp []] -[visit_exp `globaltype*#4`] -[visit_id globaltype*#4] [visit_exp []] -[visit_exp `memtype*#4`] -[visit_id memtype*#4] [visit_exp []] -[visit_exp `tabletype*#4`] -[visit_id tabletype*#4] [visit_exp []] -[visit_exp `deftype*#25`] -[visit_id deftype*#25] [visit_exp []] -[visit_exp `datatype*#4`] -[visit_id datatype*#4] [visit_exp []] -[visit_exp `elemtype*#4`] -[visit_id elemtype*#4] [visit_exp []] -[visit_exp `localtype*#7`] -[visit_id localtype*#7] [visit_exp []] -[visit_exp `resulttype*#4`] -[visit_id resulttype*#4] -[visit_exp [`%`_resulttype{`X*#2367`}(t_2*{t_2 <- `t_2*`})]] -[visit_exp `%`_resulttype{`X*#2367`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#2367`] -[visit_id X*#2367] +[visit_exp [`%`_resulttype(t_2*{t_2 <- `t_2*`})]] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -22803,11 +21076,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_2*`] [visit_id t_2*] not free [visit_id t_2*] no dims -[visit_exp `resulttype?#4`] -[visit_id resulttype?#4] [visit_exp ?()] -[visit_exp `funcidx*#42`] -[visit_id funcidx*#42] [visit_exp []] [visit_exp C] [visit_id C] not free @@ -22820,15 +21089,9 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `instr_1*`] [visit_id instr_1*] not free [visit_id instr_1*] no dims -[visit_exp `%->_%%`_instrtype{resulttype#428, `localidx*#275`}(`%`_resulttype{`X*#2380`}(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype{`X*#2432`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#428] -[visit_id resulttype#428] -[visit_exp `localidx*#275`] -[visit_id localidx*#275] -[visit_exp (`%`_resulttype{`X*#2380`}(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype{`X*#2432`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#2380`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#2380`] -[visit_id X*#2380] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -22848,9 +21111,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `x_1*`] [visit_id x_1*] no dims [visit_id x_1*] -[visit_exp `%`_resulttype{`X*#2432`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#2432`] -[visit_id X*#2432] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -22861,45 +21122,21 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_2*`] [visit_id t_2*] not free [visit_id t_2*] no dims -[visit_exp ({`TYPES`{`deftype*#26`} [], `RECS`{`subtype*#8`} [], `TAGS`{`tagtype*#5`} [], `GLOBALS`{`globaltype*#5`} [], `MEMS`{`memtype*#5`} [], `TABLES`{`tabletype*#5`} [], `FUNCS`{`deftype*#27`} [], `DATAS`{`datatype*#5`} [], `ELEMS`{`elemtype*#5`} [], `LOCALS`{`localtype*#8`} [], `LABELS`{`resulttype*#5`} [`%`_resulttype{`X*#2445`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#5`} ?(), `REFS`{`funcidx*#43`} []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype{resulttype#448, `localidx*#287`}(`%`_resulttype{`X*#2458`}(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype{`X*#2510`}(t_2*{t_2 <- `t_2*`})))] -[visit_exp {`TYPES`{`deftype*#26`} [], `RECS`{`subtype*#8`} [], `TAGS`{`tagtype*#5`} [], `GLOBALS`{`globaltype*#5`} [], `MEMS`{`memtype*#5`} [], `TABLES`{`tabletype*#5`} [], `FUNCS`{`deftype*#27`} [], `DATAS`{`datatype*#5`} [], `ELEMS`{`elemtype*#5`} [], `LOCALS`{`localtype*#8`} [], `LABELS`{`resulttype*#5`} [`%`_resulttype{`X*#2445`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#5`} ?(), `REFS`{`funcidx*#43`} []} +++ C] -[visit_exp {`TYPES`{`deftype*#26`} [], `RECS`{`subtype*#8`} [], `TAGS`{`tagtype*#5`} [], `GLOBALS`{`globaltype*#5`} [], `MEMS`{`memtype*#5`} [], `TABLES`{`tabletype*#5`} [], `FUNCS`{`deftype*#27`} [], `DATAS`{`datatype*#5`} [], `ELEMS`{`elemtype*#5`} [], `LOCALS`{`localtype*#8`} [], `LABELS`{`resulttype*#5`} [`%`_resulttype{`X*#2445`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#5`} ?(), `REFS`{`funcidx*#43`} []}] -[visit_exp `deftype*#26`] -[visit_id deftype*#26] +[visit_exp ({`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*`})))] +[visit_exp {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [`%`_resulttype(t_2*{t_2 <- `t_2*`})], `RETURN` ?(), `REFS` []} +++ C] +[visit_exp {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [`%`_resulttype(t_2*{t_2 <- `t_2*`})], `RETURN` ?(), `REFS` []}] [visit_exp []] -[visit_exp `subtype*#8`] -[visit_id subtype*#8] [visit_exp []] -[visit_exp `tagtype*#5`] -[visit_id tagtype*#5] [visit_exp []] -[visit_exp `globaltype*#5`] -[visit_id globaltype*#5] [visit_exp []] -[visit_exp `memtype*#5`] -[visit_id memtype*#5] [visit_exp []] -[visit_exp `tabletype*#5`] -[visit_id tabletype*#5] [visit_exp []] -[visit_exp `deftype*#27`] -[visit_id deftype*#27] [visit_exp []] -[visit_exp `datatype*#5`] -[visit_id datatype*#5] [visit_exp []] -[visit_exp `elemtype*#5`] -[visit_id elemtype*#5] [visit_exp []] -[visit_exp `localtype*#8`] -[visit_id localtype*#8] [visit_exp []] -[visit_exp `resulttype*#5`] -[visit_id resulttype*#5] -[visit_exp [`%`_resulttype{`X*#2445`}(t_2*{t_2 <- `t_2*`})]] -[visit_exp `%`_resulttype{`X*#2445`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#2445`] -[visit_id X*#2445] +[visit_exp [`%`_resulttype(t_2*{t_2 <- `t_2*`})]] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -22910,11 +21147,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_2*`] [visit_id t_2*] not free [visit_id t_2*] no dims -[visit_exp `resulttype?#5`] -[visit_id resulttype?#5] [visit_exp ?()] -[visit_exp `funcidx*#43`] -[visit_id funcidx*#43] [visit_exp []] [visit_exp C] [visit_id C] not free @@ -22927,15 +21160,9 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `instr_2*`] [visit_id instr_2*] not free [visit_id instr_2*] no dims -[visit_exp `%->_%%`_instrtype{resulttype#448, `localidx*#287`}(`%`_resulttype{`X*#2458`}(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype{`X*#2510`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#448] -[visit_id resulttype#448] -[visit_exp `localidx*#287`] -[visit_id localidx*#287] -[visit_exp (`%`_resulttype{`X*#2458`}(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype{`X*#2510`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#2458`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#2458`] -[visit_id X*#2458] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -22955,9 +21182,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `x_2*`] [visit_id x_2*] no dims [visit_id x_2*] -[visit_exp `%`_resulttype{`X*#2510`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#2510`] -[visit_id X*#2510] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -22968,24 +21193,16 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_2*`] [visit_id t_2*] not free [visit_id t_2*] no dims -[check_dims] C X*#2533 X*#2582 X*#2627 X*#2637 X*#2688 i#5368 l labelidx#15 localidx*#299 localidx*#311 resulttype#468 resulttype#488 resulttype*#7 t t_1 t_2 +[check_dims] C l t t_1 t_2 [visit_exp C] [visit_id C] -[visit_exp `BR`_instr{labelidx#15}(l)] -[visit_exp labelidx#15] -[visit_id labelidx#15] +[visit_exp `BR`_instr(l)] [visit_exp (l)] [visit_exp l] [visit_id l] -[visit_exp `%->_%%`_instrtype{resulttype#468, `localidx*#299`}(`%`_resulttype{`X*#2533`}(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype{`X*#2582`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#468] -[visit_id resulttype#468] -[visit_exp `localidx*#299`] -[visit_id localidx*#299] -[visit_exp (`%`_resulttype{`X*#2533`}(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype{`X*#2582`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#2533`}(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`})] -[visit_exp `X*#2533`] -[visit_id X*#2533] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`})] [visit_exp (t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`})] [visit_exp t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}] [visit_exp t_1*{t_1 <- `t_1*`}] @@ -23007,9 +21224,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id t*] no dims [visit_id t*] [visit_exp []] -[visit_exp `%`_resulttype{`X*#2582`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#2582`] -[visit_id X*#2582] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -23020,23 +21235,17 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_2*`] [visit_id t_2*] no dims [visit_id t_2*] -[visit_exp (C.`LABELS`_context{`resulttype*#7`}[l!`%`_labelidx{i#5368}.0]!`%`_resulttype{`X*#2627`}.0 = t*{t <- `t*`})] -[visit_exp C.`LABELS`_context{`resulttype*#7`}[l!`%`_labelidx{i#5368}.0]!`%`_resulttype{`X*#2627`}.0] -[visit_exp C.`LABELS`_context{`resulttype*#7`}[l!`%`_labelidx{i#5368}.0]!`%`_resulttype{`X*#2627`}] -[visit_exp C.`LABELS`_context{`resulttype*#7`}[l!`%`_labelidx{i#5368}.0]] -[visit_exp C.`LABELS`_context{`resulttype*#7`}] +[visit_exp (C.`LABELS`_context[l!`%`_labelidx.0]!`%`_resulttype.0 = t*{t <- `t*`})] +[visit_exp C.`LABELS`_context[l!`%`_labelidx.0]!`%`_resulttype.0] +[visit_exp C.`LABELS`_context[l!`%`_labelidx.0]!`%`_resulttype] +[visit_exp C.`LABELS`_context[l!`%`_labelidx.0]] +[visit_exp C.`LABELS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `resulttype*#7`] -[visit_id resulttype*#7] -[visit_exp l!`%`_labelidx{i#5368}.0] -[visit_exp l!`%`_labelidx{i#5368}] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] not free -[visit_exp i#5368] -[visit_id i#5368] -[visit_exp `X*#2627`] -[visit_id X*#2627] [visit_exp t*{t <- `t*`}] [scope_enter t] [visit_exp t] @@ -23046,18 +21255,12 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t*`] [visit_id t*] not free [visit_id t*] no dims -[visit_exp (C, `%->_%%`_instrtype{resulttype#488, `localidx*#311`}(`%`_resulttype{`X*#2637`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#2688`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp (C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})))] [visit_exp C] [visit_id C] not free -[visit_exp `%->_%%`_instrtype{resulttype#488, `localidx*#311`}(`%`_resulttype{`X*#2637`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#2688`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#488] -[visit_id resulttype#488] -[visit_exp `localidx*#311`] -[visit_id localidx*#311] -[visit_exp (`%`_resulttype{`X*#2637`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#2688`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#2637`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#2637`] -[visit_id X*#2637] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -23069,9 +21272,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id t_1*] not free [visit_id t_1*] no dims [visit_exp []] -[visit_exp `%`_resulttype{`X*#2688`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#2688`] -[visit_id X*#2688] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -23082,24 +21283,16 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_2*`] [visit_id t_2*] not free [visit_id t_2*] no dims -[check_dims] C X*#2709 X*#2758 X*#2803 i#5400 l labelidx#17 localidx*#323 resulttype#508 resulttype*#9 t +[check_dims] C l t [visit_exp C] [visit_id C] -[visit_exp `BR_IF`_instr{labelidx#17}(l)] -[visit_exp labelidx#17] -[visit_id labelidx#17] +[visit_exp `BR_IF`_instr(l)] [visit_exp (l)] [visit_exp l] [visit_id l] -[visit_exp `%->_%%`_instrtype{resulttype#508, `localidx*#323`}(`%`_resulttype{`X*#2709`}(t*{t <- `t*`} ++ [`I32`_valtype]), [], `%`_resulttype{`X*#2758`}(t*{t <- `t*`}))] -[visit_exp resulttype#508] -[visit_id resulttype#508] -[visit_exp `localidx*#323`] -[visit_id localidx*#323] -[visit_exp (`%`_resulttype{`X*#2709`}(t*{t <- `t*`} ++ [`I32`_valtype]), [], `%`_resulttype{`X*#2758`}(t*{t <- `t*`}))] -[visit_exp `%`_resulttype{`X*#2709`}(t*{t <- `t*`} ++ [`I32`_valtype])] -[visit_exp `X*#2709`] -[visit_id X*#2709] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [`I32`_valtype]), [], `%`_resulttype(t*{t <- `t*`}))] +[visit_exp (`%`_resulttype(t*{t <- `t*`} ++ [`I32`_valtype]), [], `%`_resulttype(t*{t <- `t*`}))] +[visit_exp `%`_resulttype(t*{t <- `t*`} ++ [`I32`_valtype])] [visit_exp (t*{t <- `t*`} ++ [`I32`_valtype])] [visit_exp t*{t <- `t*`} ++ [`I32`_valtype]] [visit_exp t*{t <- `t*`}] @@ -23115,9 +21308,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `I32`_valtype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#2758`}(t*{t <- `t*`})] -[visit_exp `X*#2758`] -[visit_id X*#2758] +[visit_exp `%`_resulttype(t*{t <- `t*`})] [visit_exp (t*{t <- `t*`})] [visit_exp t*{t <- `t*`}] [scope_enter t] @@ -23128,23 +21319,17 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t*`] [visit_id t*] not free [visit_id t*] no dims -[visit_exp (C.`LABELS`_context{`resulttype*#9`}[l!`%`_labelidx{i#5400}.0]!`%`_resulttype{`X*#2803`}.0 = t*{t <- `t*`})] -[visit_exp C.`LABELS`_context{`resulttype*#9`}[l!`%`_labelidx{i#5400}.0]!`%`_resulttype{`X*#2803`}.0] -[visit_exp C.`LABELS`_context{`resulttype*#9`}[l!`%`_labelidx{i#5400}.0]!`%`_resulttype{`X*#2803`}] -[visit_exp C.`LABELS`_context{`resulttype*#9`}[l!`%`_labelidx{i#5400}.0]] -[visit_exp C.`LABELS`_context{`resulttype*#9`}] +[visit_exp (C.`LABELS`_context[l!`%`_labelidx.0]!`%`_resulttype.0 = t*{t <- `t*`})] +[visit_exp C.`LABELS`_context[l!`%`_labelidx.0]!`%`_resulttype.0] +[visit_exp C.`LABELS`_context[l!`%`_labelidx.0]!`%`_resulttype] +[visit_exp C.`LABELS`_context[l!`%`_labelidx.0]] +[visit_exp C.`LABELS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `resulttype*#9`] -[visit_id resulttype*#9] -[visit_exp l!`%`_labelidx{i#5400}.0] -[visit_exp l!`%`_labelidx{i#5400}] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] not free -[visit_exp i#5400] -[visit_id i#5400] -[visit_exp `X*#2803`] -[visit_id X*#2803] [visit_exp t*{t <- `t*`}] [scope_enter t] [visit_exp t] @@ -23154,14 +21339,10 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t*`] [visit_id t*] not free [visit_id t*] no dims -[check_dims] C X*#2823 X*#2872 X*#2883 X*#2906 X*#2939 X*#2988 i#5482 i#5492 l l' labelidx#19 labelidx*#48 localidx*#335 localidx*#347 resulttype#528 resulttype#548 resulttype*#10 resulttype*#11 t t_1 t_2 +[check_dims] C l l' t t_1 t_2 [visit_exp C] [visit_id C] -[visit_exp `BR_TABLE`_instr{`labelidx*#48`, labelidx#19}(l*{l <- `l*`}, l')] -[visit_exp `labelidx*#48`] -[visit_id labelidx*#48] -[visit_exp labelidx#19] -[visit_id labelidx#19] +[visit_exp `BR_TABLE`_instr(l*{l <- `l*`}, l')] [visit_exp (l*{l <- `l*`}, l')] [visit_exp l*{l <- `l*`}] [scope_enter l] @@ -23174,15 +21355,9 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id l*] [visit_exp l'] [visit_id l'] -[visit_exp `%->_%%`_instrtype{resulttype#528, `localidx*#335`}(`%`_resulttype{`X*#2823`}(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [`I32`_valtype]), [], `%`_resulttype{`X*#2872`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#528] -[visit_id resulttype#528] -[visit_exp `localidx*#335`] -[visit_id localidx*#335] -[visit_exp (`%`_resulttype{`X*#2823`}(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [`I32`_valtype]), [], `%`_resulttype{`X*#2872`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#2823`}(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [`I32`_valtype])] -[visit_exp `X*#2823`] -[visit_id X*#2823] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [`I32`_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [`I32`_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [`I32`_valtype])] [visit_exp (t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [`I32`_valtype])] [visit_exp t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [`I32`_valtype]] [visit_exp t_1*{t_1 <- `t_1*`}] @@ -23208,9 +21383,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `I32`_valtype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#2872`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#2872`] -[visit_id X*#2872] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -23221,16 +21394,11 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_2*`] [visit_id t_2*] no dims [visit_id t_2*] -[scope_enter X*#2883] -[scope_enter i#5482] [scope_enter l] -[scope_enter resulttype*#10] -[visit_exp (C, `%`_resulttype{`X*#2883`}(t*{t <- `t*`}), C.`LABELS`_context{`resulttype*#10`}[l!`%`_labelidx{i#5482}.0])] +[visit_exp (C, `%`_resulttype(t*{t <- `t*`}), C.`LABELS`_context[l!`%`_labelidx.0])] [visit_exp C] [visit_id C] not free -[visit_exp `%`_resulttype{`X*#2883`}(t*{t <- `t*`})] -[visit_exp `X*#2883`] -[visit_id X*#2883] not free +[visit_exp `%`_resulttype(t*{t <- `t*`})] [visit_exp (t*{t <- `t*`})] [visit_exp t*{t <- `t*`}] [scope_enter t] @@ -23241,44 +21409,23 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t*`] [visit_id t*] not free [visit_id t*] no dims -[visit_exp C.`LABELS`_context{`resulttype*#10`}[l!`%`_labelidx{i#5482}.0]] -[visit_exp C.`LABELS`_context{`resulttype*#10`}] +[visit_exp C.`LABELS`_context[l!`%`_labelidx.0]] +[visit_exp C.`LABELS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `resulttype*#10`] -[visit_id resulttype*#10] not free -[visit_exp l!`%`_labelidx{i#5482}.0] -[visit_exp l!`%`_labelidx{i#5482}] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] not free -[visit_exp i#5482] -[visit_id i#5482] not free -[visit_id X*#2883] not free -[visit_id i#5482] not free [visit_id l] not free -[visit_id resulttype*#10] not free -[scope_exit resulttype*#10] [scope_exit l] -[scope_exit i#5482] -[scope_exit X*#2883] -[visit_exp `X*#2883*`] -[visit_id X*#2883*] no dims -[visit_id X*#2883*] -[visit_exp `i#5482*`] -[visit_id i#5482*] no dims -[visit_id i#5482*] [visit_exp `l*`] [visit_id l*] not free [visit_id l*] no dims -[visit_exp `resulttype*#10*`] -[visit_id resulttype*#10*] no dims -[visit_id resulttype*#10*] -[visit_exp (C, `%`_resulttype{`X*#2906`}(t*{t <- `t*`}), C.`LABELS`_context{`resulttype*#11`}[l'!`%`_labelidx{i#5492}.0])] +[visit_exp (C, `%`_resulttype(t*{t <- `t*`}), C.`LABELS`_context[l'!`%`_labelidx.0])] [visit_exp C] [visit_id C] not free -[visit_exp `%`_resulttype{`X*#2906`}(t*{t <- `t*`})] -[visit_exp `X*#2906`] -[visit_id X*#2906] +[visit_exp `%`_resulttype(t*{t <- `t*`})] [visit_exp (t*{t <- `t*`})] [visit_exp t*{t <- `t*`}] [scope_enter t] @@ -23289,30 +21436,20 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t*`] [visit_id t*] not free [visit_id t*] no dims -[visit_exp C.`LABELS`_context{`resulttype*#11`}[l'!`%`_labelidx{i#5492}.0]] -[visit_exp C.`LABELS`_context{`resulttype*#11`}] +[visit_exp C.`LABELS`_context[l'!`%`_labelidx.0]] +[visit_exp C.`LABELS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `resulttype*#11`] -[visit_id resulttype*#11] -[visit_exp l'!`%`_labelidx{i#5492}.0] -[visit_exp l'!`%`_labelidx{i#5492}] +[visit_exp l'!`%`_labelidx.0] +[visit_exp l'!`%`_labelidx] [visit_exp l'] [visit_id l'] not free -[visit_exp i#5492] -[visit_id i#5492] -[visit_exp (C, `%->_%%`_instrtype{resulttype#548, `localidx*#347`}(`%`_resulttype{`X*#2939`}(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [`I32`_valtype]), [], `%`_resulttype{`X*#2988`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp (C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [`I32`_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})))] [visit_exp C] [visit_id C] not free -[visit_exp `%->_%%`_instrtype{resulttype#548, `localidx*#347`}(`%`_resulttype{`X*#2939`}(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [`I32`_valtype]), [], `%`_resulttype{`X*#2988`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#548] -[visit_id resulttype#548] -[visit_exp `localidx*#347`] -[visit_id localidx*#347] -[visit_exp (`%`_resulttype{`X*#2939`}(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [`I32`_valtype]), [], `%`_resulttype{`X*#2988`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#2939`}(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [`I32`_valtype])] -[visit_exp `X*#2939`] -[visit_id X*#2939] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [`I32`_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [`I32`_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [`I32`_valtype])] [visit_exp (t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [`I32`_valtype])] [visit_exp t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [`I32`_valtype]] [visit_exp t_1*{t_1 <- `t_1*`}] @@ -23338,9 +21475,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `I32`_valtype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#2988`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#2988`] -[visit_id X*#2988] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -23351,26 +21486,18 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_2*`] [visit_id t_2*] not free [visit_id t_2*] no dims -[check_dims] C X*#3009 X*#3058 X*#3103 heaptype#537 heaptype#539 ht i#5524 l labelidx#21 localidx*#359 null?#535 null?#537 resulttype#568 resulttype*#13 t +[check_dims] C ht l t [visit_exp C] [visit_id C] -[visit_exp `BR_ON_NULL`_instr{labelidx#21}(l)] -[visit_exp labelidx#21] -[visit_id labelidx#21] +[visit_exp `BR_ON_NULL`_instr(l)] [visit_exp (l)] [visit_exp l] [visit_id l] -[visit_exp `%->_%%`_instrtype{resulttype#568, `localidx*#359`}(`%`_resulttype{`X*#3009`}(t*{t <- `t*`} ++ [`REF`_valtype{`null?#535`, heaptype#537}(?(`NULL`_null), ht)]), [], `%`_resulttype{`X*#3058`}(t*{t <- `t*`} ++ [`REF`_valtype{`null?#537`, heaptype#539}(?(), ht)]))] -[visit_exp resulttype#568] -[visit_id resulttype#568] -[visit_exp `localidx*#359`] -[visit_id localidx*#359] -[visit_exp (`%`_resulttype{`X*#3009`}(t*{t <- `t*`} ++ [`REF`_valtype{`null?#535`, heaptype#537}(?(`NULL`_null), ht)]), [], `%`_resulttype{`X*#3058`}(t*{t <- `t*`} ++ [`REF`_valtype{`null?#537`, heaptype#539}(?(), ht)]))] -[visit_exp `%`_resulttype{`X*#3009`}(t*{t <- `t*`} ++ [`REF`_valtype{`null?#535`, heaptype#537}(?(`NULL`_null), ht)])] -[visit_exp `X*#3009`] -[visit_id X*#3009] -[visit_exp (t*{t <- `t*`} ++ [`REF`_valtype{`null?#535`, heaptype#537}(?(`NULL`_null), ht)])] -[visit_exp t*{t <- `t*`} ++ [`REF`_valtype{`null?#535`, heaptype#537}(?(`NULL`_null), ht)]] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [`REF`_valtype(?(`NULL`_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [`REF`_valtype(?(), ht)]))] +[visit_exp (`%`_resulttype(t*{t <- `t*`} ++ [`REF`_valtype(?(`NULL`_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [`REF`_valtype(?(), ht)]))] +[visit_exp `%`_resulttype(t*{t <- `t*`} ++ [`REF`_valtype(?(`NULL`_null), ht)])] +[visit_exp (t*{t <- `t*`} ++ [`REF`_valtype(?(`NULL`_null), ht)])] +[visit_exp t*{t <- `t*`} ++ [`REF`_valtype(?(`NULL`_null), ht)]] [visit_exp t*{t <- `t*`}] [scope_enter t] [visit_exp t] @@ -23380,12 +21507,8 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t*`] [visit_id t*] no dims [visit_id t*] -[visit_exp [`REF`_valtype{`null?#535`, heaptype#537}(?(`NULL`_null), ht)]] -[visit_exp `REF`_valtype{`null?#535`, heaptype#537}(?(`NULL`_null), ht)] -[visit_exp `null?#535`] -[visit_id null?#535] -[visit_exp heaptype#537] -[visit_id heaptype#537] +[visit_exp [`REF`_valtype(?(`NULL`_null), ht)]] +[visit_exp `REF`_valtype(?(`NULL`_null), ht)] [visit_exp (?(`NULL`_null), ht)] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] @@ -23393,11 +21516,9 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp ht] [visit_id ht] [visit_exp []] -[visit_exp `%`_resulttype{`X*#3058`}(t*{t <- `t*`} ++ [`REF`_valtype{`null?#537`, heaptype#539}(?(), ht)])] -[visit_exp `X*#3058`] -[visit_id X*#3058] -[visit_exp (t*{t <- `t*`} ++ [`REF`_valtype{`null?#537`, heaptype#539}(?(), ht)])] -[visit_exp t*{t <- `t*`} ++ [`REF`_valtype{`null?#537`, heaptype#539}(?(), ht)]] +[visit_exp `%`_resulttype(t*{t <- `t*`} ++ [`REF`_valtype(?(), ht)])] +[visit_exp (t*{t <- `t*`} ++ [`REF`_valtype(?(), ht)])] +[visit_exp t*{t <- `t*`} ++ [`REF`_valtype(?(), ht)]] [visit_exp t*{t <- `t*`}] [scope_enter t] [visit_exp t] @@ -23407,33 +21528,23 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t*`] [visit_id t*] not free [visit_id t*] no dims -[visit_exp [`REF`_valtype{`null?#537`, heaptype#539}(?(), ht)]] -[visit_exp `REF`_valtype{`null?#537`, heaptype#539}(?(), ht)] -[visit_exp `null?#537`] -[visit_id null?#537] -[visit_exp heaptype#539] -[visit_id heaptype#539] +[visit_exp [`REF`_valtype(?(), ht)]] +[visit_exp `REF`_valtype(?(), ht)] [visit_exp (?(), ht)] [visit_exp ?()] [visit_exp ht] [visit_id ht] not free -[visit_exp (C.`LABELS`_context{`resulttype*#13`}[l!`%`_labelidx{i#5524}.0]!`%`_resulttype{`X*#3103`}.0 = t*{t <- `t*`})] -[visit_exp C.`LABELS`_context{`resulttype*#13`}[l!`%`_labelidx{i#5524}.0]!`%`_resulttype{`X*#3103`}.0] -[visit_exp C.`LABELS`_context{`resulttype*#13`}[l!`%`_labelidx{i#5524}.0]!`%`_resulttype{`X*#3103`}] -[visit_exp C.`LABELS`_context{`resulttype*#13`}[l!`%`_labelidx{i#5524}.0]] -[visit_exp C.`LABELS`_context{`resulttype*#13`}] +[visit_exp (C.`LABELS`_context[l!`%`_labelidx.0]!`%`_resulttype.0 = t*{t <- `t*`})] +[visit_exp C.`LABELS`_context[l!`%`_labelidx.0]!`%`_resulttype.0] +[visit_exp C.`LABELS`_context[l!`%`_labelidx.0]!`%`_resulttype] +[visit_exp C.`LABELS`_context[l!`%`_labelidx.0]] +[visit_exp C.`LABELS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `resulttype*#13`] -[visit_id resulttype*#13] -[visit_exp l!`%`_labelidx{i#5524}.0] -[visit_exp l!`%`_labelidx{i#5524}] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] not free -[visit_exp i#5524] -[visit_id i#5524] -[visit_exp `X*#3103`] -[visit_id X*#3103] [visit_exp t*{t <- `t*`}] [scope_enter t] [visit_exp t] @@ -23448,26 +21559,18 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id C] not free [visit_exp ht] [visit_id ht] not free -[check_dims] C X*#3123 X*#3172 X*#3193 heaptype#541 heaptype#543 ht i#5546 l labelidx#23 localidx*#371 null?#539 null?#541 resulttype#588 resulttype*#14 t +[check_dims] C ht l t [visit_exp C] [visit_id C] -[visit_exp `BR_ON_NON_NULL`_instr{labelidx#23}(l)] -[visit_exp labelidx#23] -[visit_id labelidx#23] +[visit_exp `BR_ON_NON_NULL`_instr(l)] [visit_exp (l)] [visit_exp l] [visit_id l] -[visit_exp `%->_%%`_instrtype{resulttype#588, `localidx*#371`}(`%`_resulttype{`X*#3123`}(t*{t <- `t*`} ++ [`REF`_valtype{`null?#539`, heaptype#541}(?(`NULL`_null), ht)]), [], `%`_resulttype{`X*#3172`}(t*{t <- `t*`}))] -[visit_exp resulttype#588] -[visit_id resulttype#588] -[visit_exp `localidx*#371`] -[visit_id localidx*#371] -[visit_exp (`%`_resulttype{`X*#3123`}(t*{t <- `t*`} ++ [`REF`_valtype{`null?#539`, heaptype#541}(?(`NULL`_null), ht)]), [], `%`_resulttype{`X*#3172`}(t*{t <- `t*`}))] -[visit_exp `%`_resulttype{`X*#3123`}(t*{t <- `t*`} ++ [`REF`_valtype{`null?#539`, heaptype#541}(?(`NULL`_null), ht)])] -[visit_exp `X*#3123`] -[visit_id X*#3123] -[visit_exp (t*{t <- `t*`} ++ [`REF`_valtype{`null?#539`, heaptype#541}(?(`NULL`_null), ht)])] -[visit_exp t*{t <- `t*`} ++ [`REF`_valtype{`null?#539`, heaptype#541}(?(`NULL`_null), ht)]] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [`REF`_valtype(?(`NULL`_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))] +[visit_exp (`%`_resulttype(t*{t <- `t*`} ++ [`REF`_valtype(?(`NULL`_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))] +[visit_exp `%`_resulttype(t*{t <- `t*`} ++ [`REF`_valtype(?(`NULL`_null), ht)])] +[visit_exp (t*{t <- `t*`} ++ [`REF`_valtype(?(`NULL`_null), ht)])] +[visit_exp t*{t <- `t*`} ++ [`REF`_valtype(?(`NULL`_null), ht)]] [visit_exp t*{t <- `t*`}] [scope_enter t] [visit_exp t] @@ -23477,12 +21580,8 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t*`] [visit_id t*] no dims [visit_id t*] -[visit_exp [`REF`_valtype{`null?#539`, heaptype#541}(?(`NULL`_null), ht)]] -[visit_exp `REF`_valtype{`null?#539`, heaptype#541}(?(`NULL`_null), ht)] -[visit_exp `null?#539`] -[visit_id null?#539] -[visit_exp heaptype#541] -[visit_id heaptype#541] +[visit_exp [`REF`_valtype(?(`NULL`_null), ht)]] +[visit_exp `REF`_valtype(?(`NULL`_null), ht)] [visit_exp (?(`NULL`_null), ht)] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] @@ -23490,9 +21589,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp ht] [visit_id ht] [visit_exp []] -[visit_exp `%`_resulttype{`X*#3172`}(t*{t <- `t*`})] -[visit_exp `X*#3172`] -[visit_id X*#3172] +[visit_exp `%`_resulttype(t*{t <- `t*`})] [visit_exp (t*{t <- `t*`})] [visit_exp t*{t <- `t*`}] [scope_enter t] @@ -23503,24 +21600,18 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t*`] [visit_id t*] not free [visit_id t*] no dims -[visit_exp (C.`LABELS`_context{`resulttype*#14`}[l!`%`_labelidx{i#5546}.0] = `%`_resulttype{`X*#3193`}(t*{t <- `t*`} ++ [`REF`_valtype{`null?#541`, heaptype#543}(`NULL`_null?{}, ht)]))] -[visit_exp C.`LABELS`_context{`resulttype*#14`}[l!`%`_labelidx{i#5546}.0]] -[visit_exp C.`LABELS`_context{`resulttype*#14`}] +[visit_exp (C.`LABELS`_context[l!`%`_labelidx.0] = `%`_resulttype(t*{t <- `t*`} ++ [`REF`_valtype(`NULL`_null?{}, ht)]))] +[visit_exp C.`LABELS`_context[l!`%`_labelidx.0]] +[visit_exp C.`LABELS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `resulttype*#14`] -[visit_id resulttype*#14] -[visit_exp l!`%`_labelidx{i#5546}.0] -[visit_exp l!`%`_labelidx{i#5546}] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] not free -[visit_exp i#5546] -[visit_id i#5546] -[visit_exp `%`_resulttype{`X*#3193`}(t*{t <- `t*`} ++ [`REF`_valtype{`null?#541`, heaptype#543}(`NULL`_null?{}, ht)])] -[visit_exp `X*#3193`] -[visit_id X*#3193] -[visit_exp (t*{t <- `t*`} ++ [`REF`_valtype{`null?#541`, heaptype#543}(`NULL`_null?{}, ht)])] -[visit_exp t*{t <- `t*`} ++ [`REF`_valtype{`null?#541`, heaptype#543}(`NULL`_null?{}, ht)]] +[visit_exp `%`_resulttype(t*{t <- `t*`} ++ [`REF`_valtype(`NULL`_null?{}, ht)])] +[visit_exp (t*{t <- `t*`} ++ [`REF`_valtype(`NULL`_null?{}, ht)])] +[visit_exp t*{t <- `t*`} ++ [`REF`_valtype(`NULL`_null?{}, ht)]] [visit_exp t*{t <- `t*`}] [scope_enter t] [visit_exp t] @@ -23530,26 +21621,18 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t*`] [visit_id t*] not free [visit_id t*] no dims -[visit_exp [`REF`_valtype{`null?#541`, heaptype#543}(`NULL`_null?{}, ht)]] -[visit_exp `REF`_valtype{`null?#541`, heaptype#543}(`NULL`_null?{}, ht)] -[visit_exp `null?#541`] -[visit_id null?#541] -[visit_exp heaptype#543] -[visit_id heaptype#543] +[visit_exp [`REF`_valtype(`NULL`_null?{}, ht)]] +[visit_exp `REF`_valtype(`NULL`_null?{}, ht)] [visit_exp (`NULL`_null?{}, ht)] [visit_exp `NULL`_null?{}] [visit_exp `NULL`_null] [visit_exp ()] [visit_exp ht] [visit_id ht] not free -[check_dims] C X*#3214 X*#3263 X*#3284 i#5568 l labelidx#25 localidx*#383 reftype#373 resulttype#608 resulttype*#15 rt rt_1 rt_2 t +[check_dims] C l rt rt_1 rt_2 t [visit_exp C] [visit_id C] -[visit_exp `BR_ON_CAST`_instr{labelidx#25, reftype#373}(l, rt_1, rt_2)] -[visit_exp labelidx#25] -[visit_id labelidx#25] -[visit_exp reftype#373] -[visit_id reftype#373] +[visit_exp `BR_ON_CAST`_instr(l, rt_1, rt_2)] [visit_exp (l, rt_1, rt_2)] [visit_exp l] [visit_id l] @@ -23557,15 +21640,9 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id rt_1] [visit_exp rt_2] [visit_id rt_2] -[visit_exp `%->_%%`_instrtype{resulttype#608, `localidx*#383`}(`%`_resulttype{`X*#3214`}(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype{`X*#3263`}(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))] -[visit_exp resulttype#608] -[visit_id resulttype#608] -[visit_exp `localidx*#383`] -[visit_id localidx*#383] -[visit_exp (`%`_resulttype{`X*#3214`}(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype{`X*#3263`}(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))] -[visit_exp `%`_resulttype{`X*#3214`}(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)])] -[visit_exp `X*#3214`] -[visit_id X*#3214] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))] +[visit_exp (`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))] +[visit_exp `%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)])] [visit_exp (t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)])] [visit_exp t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]] [visit_exp t*{t <- `t*`}] @@ -23582,9 +21659,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp rt_1] [visit_id rt_1] not free [visit_exp []] -[visit_exp `%`_resulttype{`X*#3263`}(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)])] -[visit_exp `X*#3263`] -[visit_id X*#3263] +[visit_exp `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)])] [visit_exp (t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)])] [visit_exp t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]] [visit_exp t*{t <- `t*`}] @@ -23603,22 +21678,16 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id rt_1] not free [visit_exp rt_2] [visit_id rt_2] not free -[visit_exp (C.`LABELS`_context{`resulttype*#15`}[l!`%`_labelidx{i#5568}.0] = `%`_resulttype{`X*#3284`}(t*{t <- `t*`} ++ [(rt : reftype <: valtype)]))] -[visit_exp C.`LABELS`_context{`resulttype*#15`}[l!`%`_labelidx{i#5568}.0]] -[visit_exp C.`LABELS`_context{`resulttype*#15`}] +[visit_exp (C.`LABELS`_context[l!`%`_labelidx.0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)]))] +[visit_exp C.`LABELS`_context[l!`%`_labelidx.0]] +[visit_exp C.`LABELS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `resulttype*#15`] -[visit_id resulttype*#15] -[visit_exp l!`%`_labelidx{i#5568}.0] -[visit_exp l!`%`_labelidx{i#5568}] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] not free -[visit_exp i#5568] -[visit_id i#5568] -[visit_exp `%`_resulttype{`X*#3284`}(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])] -[visit_exp `X*#3284`] -[visit_id X*#3284] +[visit_exp `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])] [visit_exp (t*{t <- `t*`} ++ [(rt : reftype <: valtype)])] [visit_exp t*{t <- `t*`} ++ [(rt : reftype <: valtype)]] [visit_exp t*{t <- `t*`}] @@ -23658,14 +21727,10 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id rt_2] not free [visit_exp rt] [visit_id rt] not free -[check_dims] C X*#3305 X*#3354 X*#3375 i#5590 l labelidx#27 localidx*#395 reftype#376 resulttype#628 resulttype*#16 rt rt_1 rt_2 t +[check_dims] C l rt rt_1 rt_2 t [visit_exp C] [visit_id C] -[visit_exp `BR_ON_CAST_FAIL`_instr{labelidx#27, reftype#376}(l, rt_1, rt_2)] -[visit_exp labelidx#27] -[visit_id labelidx#27] -[visit_exp reftype#376] -[visit_id reftype#376] +[visit_exp `BR_ON_CAST_FAIL`_instr(l, rt_1, rt_2)] [visit_exp (l, rt_1, rt_2)] [visit_exp l] [visit_id l] @@ -23673,15 +21738,9 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id rt_1] [visit_exp rt_2] [visit_id rt_2] -[visit_exp `%->_%%`_instrtype{resulttype#628, `localidx*#395`}(`%`_resulttype{`X*#3305`}(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype{`X*#3354`}(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))] -[visit_exp resulttype#628] -[visit_id resulttype#628] -[visit_exp `localidx*#395`] -[visit_id localidx*#395] -[visit_exp (`%`_resulttype{`X*#3305`}(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype{`X*#3354`}(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))] -[visit_exp `%`_resulttype{`X*#3305`}(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)])] -[visit_exp `X*#3305`] -[visit_id X*#3305] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))] +[visit_exp (`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))] +[visit_exp `%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)])] [visit_exp (t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)])] [visit_exp t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]] [visit_exp t*{t <- `t*`}] @@ -23698,9 +21757,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp rt_1] [visit_id rt_1] not free [visit_exp []] -[visit_exp `%`_resulttype{`X*#3354`}(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)])] -[visit_exp `X*#3354`] -[visit_id X*#3354] +[visit_exp `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)])] [visit_exp (t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)])] [visit_exp t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]] [visit_exp t*{t <- `t*`}] @@ -23716,22 +21773,16 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp (rt_2 : reftype <: valtype)] [visit_exp rt_2] [visit_id rt_2] not free -[visit_exp (C.`LABELS`_context{`resulttype*#16`}[l!`%`_labelidx{i#5590}.0] = `%`_resulttype{`X*#3375`}(t*{t <- `t*`} ++ [(rt : reftype <: valtype)]))] -[visit_exp C.`LABELS`_context{`resulttype*#16`}[l!`%`_labelidx{i#5590}.0]] -[visit_exp C.`LABELS`_context{`resulttype*#16`}] +[visit_exp (C.`LABELS`_context[l!`%`_labelidx.0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)]))] +[visit_exp C.`LABELS`_context[l!`%`_labelidx.0]] +[visit_exp C.`LABELS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `resulttype*#16`] -[visit_id resulttype*#16] -[visit_exp l!`%`_labelidx{i#5590}.0] -[visit_exp l!`%`_labelidx{i#5590}] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] not free -[visit_exp i#5590] -[visit_id i#5590] -[visit_exp `%`_resulttype{`X*#3375`}(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])] -[visit_exp `X*#3375`] -[visit_id X*#3375] +[visit_exp `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])] [visit_exp (t*{t <- `t*`} ++ [(rt : reftype <: valtype)])] [visit_exp t*{t <- `t*`} ++ [(rt : reftype <: valtype)]] [visit_exp t*{t <- `t*`}] @@ -23774,24 +21825,16 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id rt_2] not free [visit_exp rt] [visit_id rt] not free -[check_dims] C X*#3386 X*#3437 X*#3450 X*#3463 deftype*#28 funcidx#177 i#5614 localidx*#407 resulttype#648 resulttype#651 t_1 t_2 x +[check_dims] C t_1 t_2 x [visit_exp C] [visit_id C] -[visit_exp `CALL`_instr{funcidx#177}(x)] -[visit_exp funcidx#177] -[visit_id funcidx#177] +[visit_exp `CALL`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%->_%%`_instrtype{resulttype#648, `localidx*#407`}(`%`_resulttype{`X*#3386`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#3437`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#648] -[visit_id resulttype#648] -[visit_exp `localidx*#407`] -[visit_id localidx*#407] -[visit_exp (`%`_resulttype{`X*#3386`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#3437`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#3386`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#3386`] -[visit_id X*#3386] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -23803,9 +21846,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id t_1*] no dims [visit_id t_1*] [visit_exp []] -[visit_exp `%`_resulttype{`X*#3437`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#3437`] -[visit_id X*#3437] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -23816,26 +21857,18 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_2*`] [visit_id t_2*] no dims [visit_id t_2*] -[visit_exp (C.`FUNCS`_context{`deftype*#28`}[x!`%`_idx{i#5614}.0], `FUNC%->%`_comptype{resulttype#651}(`%`_resulttype{`X*#3450`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#3463`}(t_2*{t_2 <- `t_2*`})))] -[visit_exp C.`FUNCS`_context{`deftype*#28`}[x!`%`_idx{i#5614}.0]] -[visit_exp C.`FUNCS`_context{`deftype*#28`}] +[visit_exp (C.`FUNCS`_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))] +[visit_exp C.`FUNCS`_context[x!`%`_idx.0]] +[visit_exp C.`FUNCS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `deftype*#28`] -[visit_id deftype*#28] -[visit_exp x!`%`_idx{i#5614}.0] -[visit_exp x!`%`_idx{i#5614}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#5614] -[visit_id i#5614] -[visit_exp `FUNC%->%`_comptype{resulttype#651}(`%`_resulttype{`X*#3450`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#3463`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#651] -[visit_id resulttype#651] -[visit_exp (`%`_resulttype{`X*#3450`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#3463`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#3450`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#3450`] -[visit_id X*#3450] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -23846,9 +21879,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_1*`] [visit_id t_1*] not free [visit_id t_1*] no dims -[visit_exp `%`_resulttype{`X*#3463`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#3463`] -[visit_id X*#3463] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -23859,30 +21890,20 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_2*`] [visit_id t_2*] not free [visit_id t_2*] no dims -[check_dims] C X*#3486 X*#3535 X*#3548 X*#3561 deftype*#29 heaptype#665 i#5652 localidx*#419 null?#663 resulttype#671 resulttype#674 t_1 t_2 typeidx#394 typeidx#396 typeuse#23 x +[check_dims] C t_1 t_2 x [visit_exp C] [visit_id C] -[visit_exp `CALL_REF`_instr{typeuse#23}(`_IDX`_typeuse{typeidx#394}(x))] -[visit_exp typeuse#23] -[visit_id typeuse#23] -[visit_exp (`_IDX`_typeuse{typeidx#394}(x))] -[visit_exp `_IDX`_typeuse{typeidx#394}(x)] -[visit_exp typeidx#394] -[visit_id typeidx#394] +[visit_exp `CALL_REF`_instr(`_IDX`_typeuse(x))] +[visit_exp (`_IDX`_typeuse(x))] +[visit_exp `_IDX`_typeuse(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%->_%%`_instrtype{resulttype#671, `localidx*#419`}(`%`_resulttype{`X*#3486`}(t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype{`null?#663`, heaptype#665}(?(`NULL`_null), `_IDX`_heaptype{typeidx#396}(x))]), [], `%`_resulttype{`X*#3535`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#671] -[visit_id resulttype#671] -[visit_exp `localidx*#419`] -[visit_id localidx*#419] -[visit_exp (`%`_resulttype{`X*#3486`}(t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype{`null?#663`, heaptype#665}(?(`NULL`_null), `_IDX`_heaptype{typeidx#396}(x))]), [], `%`_resulttype{`X*#3535`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#3486`}(t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype{`null?#663`, heaptype#665}(?(`NULL`_null), `_IDX`_heaptype{typeidx#396}(x))])] -[visit_exp `X*#3486`] -[visit_id X*#3486] -[visit_exp (t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype{`null?#663`, heaptype#665}(?(`NULL`_null), `_IDX`_heaptype{typeidx#396}(x))])] -[visit_exp t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype{`null?#663`, heaptype#665}(?(`NULL`_null), `_IDX`_heaptype{typeidx#396}(x))]] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))])] +[visit_exp (t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))])] +[visit_exp t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))]] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] [visit_exp t_1] @@ -23892,26 +21913,18 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_1*`] [visit_id t_1*] no dims [visit_id t_1*] -[visit_exp [`REF`_valtype{`null?#663`, heaptype#665}(?(`NULL`_null), `_IDX`_heaptype{typeidx#396}(x))]] -[visit_exp `REF`_valtype{`null?#663`, heaptype#665}(?(`NULL`_null), `_IDX`_heaptype{typeidx#396}(x))] -[visit_exp `null?#663`] -[visit_id null?#663] -[visit_exp heaptype#665] -[visit_id heaptype#665] -[visit_exp (?(`NULL`_null), `_IDX`_heaptype{typeidx#396}(x))] +[visit_exp [`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))]] +[visit_exp `REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))] +[visit_exp (?(`NULL`_null), `_IDX`_heaptype(x))] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] [visit_exp ()] -[visit_exp `_IDX`_heaptype{typeidx#396}(x)] -[visit_exp typeidx#396] -[visit_id typeidx#396] +[visit_exp `_IDX`_heaptype(x)] [visit_exp (x)] [visit_exp x] [visit_id x] not free [visit_exp []] -[visit_exp `%`_resulttype{`X*#3535`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#3535`] -[visit_id X*#3535] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -23922,26 +21935,18 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_2*`] [visit_id t_2*] no dims [visit_id t_2*] -[visit_exp (C.`TYPES`_context{`deftype*#29`}[x!`%`_idx{i#5652}.0], `FUNC%->%`_comptype{resulttype#674}(`%`_resulttype{`X*#3548`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#3561`}(t_2*{t_2 <- `t_2*`})))] -[visit_exp C.`TYPES`_context{`deftype*#29`}[x!`%`_idx{i#5652}.0]] -[visit_exp C.`TYPES`_context{`deftype*#29`}] +[visit_exp (C.`TYPES`_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))] +[visit_exp C.`TYPES`_context[x!`%`_idx.0]] +[visit_exp C.`TYPES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `deftype*#29`] -[visit_id deftype*#29] -[visit_exp x!`%`_idx{i#5652}.0] -[visit_exp x!`%`_idx{i#5652}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#5652] -[visit_id i#5652] -[visit_exp `FUNC%->%`_comptype{resulttype#674}(`%`_resulttype{`X*#3548`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#3561`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#674] -[visit_id resulttype#674] -[visit_exp (`%`_resulttype{`X*#3548`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#3561`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#3548`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#3548`] -[visit_id X*#3548] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -23952,9 +21957,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_1*`] [visit_id t_1*] not free [visit_id t_1*] no dims -[visit_exp `%`_resulttype{`X*#3561`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#3561`] -[visit_id X*#3561] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -23965,32 +21968,20 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_2*`] [visit_id t_2*] not free [visit_id t_2*] no dims -[check_dims] C X*#3584 X*#3633 X*#3646 X*#3659 addrtype#441 at deftype*#30 heaptype#689 i#5690 i#5700 lim limits#441 localidx*#431 null?#687 reftype#389 resulttype#694 resulttype#697 rt t_1 t_2 tableidx#26 tabletype*#6 typeidx#398 typeuse#25 x y +[check_dims] C at lim rt t_1 t_2 x y [visit_exp C] [visit_id C] -[visit_exp `CALL_INDIRECT`_instr{tableidx#26, typeuse#25}(x, `_IDX`_typeuse{typeidx#398}(y))] -[visit_exp tableidx#26] -[visit_id tableidx#26] -[visit_exp typeuse#25] -[visit_id typeuse#25] -[visit_exp (x, `_IDX`_typeuse{typeidx#398}(y))] +[visit_exp `CALL_INDIRECT`_instr(x, `_IDX`_typeuse(y))] +[visit_exp (x, `_IDX`_typeuse(y))] [visit_exp x] [visit_id x] -[visit_exp `_IDX`_typeuse{typeidx#398}(y)] -[visit_exp typeidx#398] -[visit_id typeidx#398] +[visit_exp `_IDX`_typeuse(y)] [visit_exp (y)] [visit_exp y] [visit_id y] -[visit_exp `%->_%%`_instrtype{resulttype#694, `localidx*#431`}(`%`_resulttype{`X*#3584`}(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#3633`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#694] -[visit_id resulttype#694] -[visit_exp `localidx*#431`] -[visit_id localidx*#431] -[visit_exp (`%`_resulttype{`X*#3584`}(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#3633`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#3584`}(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)])] -[visit_exp `X*#3584`] -[visit_id X*#3584] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)])] [visit_exp (t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)])] [visit_exp t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]] [visit_exp t_1*{t_1 <- `t_1*`}] @@ -24007,9 +21998,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp at] [visit_id at] [visit_exp []] -[visit_exp `%`_resulttype{`X*#3633`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#3633`] -[visit_id X*#3633] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -24020,26 +22009,16 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_2*`] [visit_id t_2*] no dims [visit_id t_2*] -[visit_exp (C.`TABLES`_context{`tabletype*#6`}[x!`%`_idx{i#5690}.0] = `%%%`_tabletype{addrtype#441, limits#441, reftype#389}(at, lim, rt))] -[visit_exp C.`TABLES`_context{`tabletype*#6`}[x!`%`_idx{i#5690}.0]] -[visit_exp C.`TABLES`_context{`tabletype*#6`}] +[visit_exp (C.`TABLES`_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt))] +[visit_exp C.`TABLES`_context[x!`%`_idx.0]] +[visit_exp C.`TABLES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `tabletype*#6`] -[visit_id tabletype*#6] -[visit_exp x!`%`_idx{i#5690}.0] -[visit_exp x!`%`_idx{i#5690}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#5690] -[visit_id i#5690] -[visit_exp `%%%`_tabletype{addrtype#441, limits#441, reftype#389}(at, lim, rt)] -[visit_exp addrtype#441] -[visit_id addrtype#441] -[visit_exp limits#441] -[visit_id limits#441] -[visit_exp reftype#389] -[visit_id reftype#389] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `%%%`_tabletype(at, lim, rt)] [visit_exp (at, lim, rt)] [visit_exp at] [visit_id at] not free @@ -24047,42 +22026,30 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id lim] [visit_exp rt] [visit_id rt] -[visit_exp (C, rt, `REF`_reftype{`null?#687`, heaptype#689}(?(`NULL`_null), `FUNC`_heaptype))] +[visit_exp (C, rt, `REF`_reftype(?(`NULL`_null), `FUNC`_heaptype))] [visit_exp C] [visit_id C] not free [visit_exp rt] [visit_id rt] not free -[visit_exp `REF`_reftype{`null?#687`, heaptype#689}(?(`NULL`_null), `FUNC`_heaptype)] -[visit_exp `null?#687`] -[visit_id null?#687] -[visit_exp heaptype#689] -[visit_id heaptype#689] +[visit_exp `REF`_reftype(?(`NULL`_null), `FUNC`_heaptype)] [visit_exp (?(`NULL`_null), `FUNC`_heaptype)] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] [visit_exp ()] [visit_exp `FUNC`_heaptype] [visit_exp ()] -[visit_exp (C.`TYPES`_context{`deftype*#30`}[y!`%`_idx{i#5700}.0], `FUNC%->%`_comptype{resulttype#697}(`%`_resulttype{`X*#3646`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#3659`}(t_2*{t_2 <- `t_2*`})))] -[visit_exp C.`TYPES`_context{`deftype*#30`}[y!`%`_idx{i#5700}.0]] -[visit_exp C.`TYPES`_context{`deftype*#30`}] +[visit_exp (C.`TYPES`_context[y!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))] +[visit_exp C.`TYPES`_context[y!`%`_idx.0]] +[visit_exp C.`TYPES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `deftype*#30`] -[visit_id deftype*#30] -[visit_exp y!`%`_idx{i#5700}.0] -[visit_exp y!`%`_idx{i#5700}] +[visit_exp y!`%`_idx.0] +[visit_exp y!`%`_idx] [visit_exp y] [visit_id y] not free -[visit_exp i#5700] -[visit_id i#5700] -[visit_exp `FUNC%->%`_comptype{resulttype#697}(`%`_resulttype{`X*#3646`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#3659`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#697] -[visit_id resulttype#697] -[visit_exp (`%`_resulttype{`X*#3646`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#3659`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#3646`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#3646`] -[visit_id X*#3646] +[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -24093,9 +22060,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_1*`] [visit_id t_1*] not free [visit_id t_1*] no dims -[visit_exp `%`_resulttype{`X*#3659`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#3659`] -[visit_id X*#3659] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -24106,20 +22071,14 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_2*`] [visit_id t_2*] not free [visit_id t_2*] no dims -[check_dims] C X*#3682 X*#3731 X*#3766 X*#3779 X*#3830 localidx*#443 localidx*#455 resulttype#717 resulttype#737 resulttype?#8 t t_1 t_2 +[check_dims] C t t_1 t_2 [visit_exp C] [visit_id C] [visit_exp `RETURN`_instr] [visit_exp ()] -[visit_exp `%->_%%`_instrtype{resulttype#717, `localidx*#443`}(`%`_resulttype{`X*#3682`}(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype{`X*#3731`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#717] -[visit_id resulttype#717] -[visit_exp `localidx*#443`] -[visit_id localidx*#443] -[visit_exp (`%`_resulttype{`X*#3682`}(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype{`X*#3731`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#3682`}(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`})] -[visit_exp `X*#3682`] -[visit_id X*#3682] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`})] [visit_exp (t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`})] [visit_exp t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}] [visit_exp t_1*{t_1 <- `t_1*`}] @@ -24141,9 +22100,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id t*] no dims [visit_id t*] [visit_exp []] -[visit_exp `%`_resulttype{`X*#3731`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#3731`] -[visit_id X*#3731] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -24154,16 +22111,12 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_2*`] [visit_id t_2*] no dims [visit_id t_2*] -[visit_exp (C.`RETURN`_context{`resulttype?#8`} = ?(`%`_resulttype{`X*#3766`}(t*{t <- `t*`})))] -[visit_exp C.`RETURN`_context{`resulttype?#8`}] +[visit_exp (C.`RETURN`_context = ?(`%`_resulttype(t*{t <- `t*`})))] +[visit_exp C.`RETURN`_context] [visit_exp C] [visit_id C] not free -[visit_exp `resulttype?#8`] -[visit_id resulttype?#8] -[visit_exp ?(`%`_resulttype{`X*#3766`}(t*{t <- `t*`}))] -[visit_exp `%`_resulttype{`X*#3766`}(t*{t <- `t*`})] -[visit_exp `X*#3766`] -[visit_id X*#3766] +[visit_exp ?(`%`_resulttype(t*{t <- `t*`}))] +[visit_exp `%`_resulttype(t*{t <- `t*`})] [visit_exp (t*{t <- `t*`})] [visit_exp t*{t <- `t*`}] [scope_enter t] @@ -24174,18 +22127,12 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t*`] [visit_id t*] not free [visit_id t*] no dims -[visit_exp (C, `%->_%%`_instrtype{resulttype#737, `localidx*#455`}(`%`_resulttype{`X*#3779`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#3830`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp (C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})))] [visit_exp C] [visit_id C] not free -[visit_exp `%->_%%`_instrtype{resulttype#737, `localidx*#455`}(`%`_resulttype{`X*#3779`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#3830`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#737] -[visit_id resulttype#737] -[visit_exp `localidx*#455`] -[visit_id localidx*#455] -[visit_exp (`%`_resulttype{`X*#3779`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#3830`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#3779`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#3779`] -[visit_id X*#3779] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -24197,9 +22144,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id t_1*] not free [visit_id t_1*] no dims [visit_exp []] -[visit_exp `%`_resulttype{`X*#3830`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#3830`] -[visit_id X*#3830] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -24210,24 +22155,16 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_2*`] [visit_id t_2*] not free [visit_id t_2*] no dims -[check_dims] C X*#3851 X*#3900 X*#3913 X*#3926 X*#3963 X*#3976 X*#3989 X*#4002 X*#4053 deftype*#31 funcidx#179 i#5724 localidx*#467 localidx*#479 resulttype#757 resulttype#760 resulttype#780 resulttype?#11 t'_2 t_1 t_2 t_3 t_4 x +[check_dims] C t'_2 t_1 t_2 t_3 t_4 x [visit_exp C] [visit_id C] -[visit_exp `RETURN_CALL`_instr{funcidx#179}(x)] -[visit_exp funcidx#179] -[visit_id funcidx#179] +[visit_exp `RETURN_CALL`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%->_%%`_instrtype{resulttype#757, `localidx*#467`}(`%`_resulttype{`X*#3851`}(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#3900`}(t_4*{t_4 <- `t_4*`}))] -[visit_exp resulttype#757] -[visit_id resulttype#757] -[visit_exp `localidx*#467`] -[visit_id localidx*#467] -[visit_exp (`%`_resulttype{`X*#3851`}(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#3900`}(t_4*{t_4 <- `t_4*`}))] -[visit_exp `%`_resulttype{`X*#3851`}(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#3851`] -[visit_id X*#3851] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))] +[visit_exp (`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))] +[visit_exp `%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`})] [visit_exp (t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`})] [visit_exp t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}] [visit_exp t_3*{t_3 <- `t_3*`}] @@ -24249,9 +22186,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id t_1*] no dims [visit_id t_1*] [visit_exp []] -[visit_exp `%`_resulttype{`X*#3900`}(t_4*{t_4 <- `t_4*`})] -[visit_exp `X*#3900`] -[visit_id X*#3900] +[visit_exp `%`_resulttype(t_4*{t_4 <- `t_4*`})] [visit_exp (t_4*{t_4 <- `t_4*`})] [visit_exp t_4*{t_4 <- `t_4*`}] [scope_enter t_4] @@ -24262,26 +22197,18 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_4*`] [visit_id t_4*] no dims [visit_id t_4*] -[visit_exp (C.`FUNCS`_context{`deftype*#31`}[x!`%`_idx{i#5724}.0], `FUNC%->%`_comptype{resulttype#760}(`%`_resulttype{`X*#3913`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#3926`}(t_2*{t_2 <- `t_2*`})))] -[visit_exp C.`FUNCS`_context{`deftype*#31`}[x!`%`_idx{i#5724}.0]] -[visit_exp C.`FUNCS`_context{`deftype*#31`}] +[visit_exp (C.`FUNCS`_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))] +[visit_exp C.`FUNCS`_context[x!`%`_idx.0]] +[visit_exp C.`FUNCS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `deftype*#31`] -[visit_id deftype*#31] -[visit_exp x!`%`_idx{i#5724}.0] -[visit_exp x!`%`_idx{i#5724}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#5724] -[visit_id i#5724] -[visit_exp `FUNC%->%`_comptype{resulttype#760}(`%`_resulttype{`X*#3913`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#3926`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#760] -[visit_id resulttype#760] -[visit_exp (`%`_resulttype{`X*#3913`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#3926`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#3913`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#3913`] -[visit_id X*#3913] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -24292,9 +22219,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_1*`] [visit_id t_1*] not free [visit_id t_1*] no dims -[visit_exp `%`_resulttype{`X*#3926`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#3926`] -[visit_id X*#3926] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -24305,16 +22230,12 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_2*`] [visit_id t_2*] no dims [visit_id t_2*] -[visit_exp (C.`RETURN`_context{`resulttype?#11`} = ?(`%`_resulttype{`X*#3963`}(t'_2*{t'_2 <- `t'_2*`})))] -[visit_exp C.`RETURN`_context{`resulttype?#11`}] +[visit_exp (C.`RETURN`_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`})))] +[visit_exp C.`RETURN`_context] [visit_exp C] [visit_id C] not free -[visit_exp `resulttype?#11`] -[visit_id resulttype?#11] -[visit_exp ?(`%`_resulttype{`X*#3963`}(t'_2*{t'_2 <- `t'_2*`}))] -[visit_exp `%`_resulttype{`X*#3963`}(t'_2*{t'_2 <- `t'_2*`})] -[visit_exp `X*#3963`] -[visit_id X*#3963] +[visit_exp ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))] +[visit_exp `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})] [visit_exp (t'_2*{t'_2 <- `t'_2*`})] [visit_exp t'_2*{t'_2 <- `t'_2*`}] [scope_enter t'_2] @@ -24325,12 +22246,10 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t'_2*`] [visit_id t'_2*] no dims [visit_id t'_2*] -[visit_exp (C, `%`_resulttype{`X*#3976`}(t_2*{t_2 <- `t_2*`}), `%`_resulttype{`X*#3989`}(t'_2*{t'_2 <- `t'_2*`}))] +[visit_exp (C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))] [visit_exp C] [visit_id C] not free -[visit_exp `%`_resulttype{`X*#3976`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#3976`] -[visit_id X*#3976] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -24341,9 +22260,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_2*`] [visit_id t_2*] not free [visit_id t_2*] no dims -[visit_exp `%`_resulttype{`X*#3989`}(t'_2*{t'_2 <- `t'_2*`})] -[visit_exp `X*#3989`] -[visit_id X*#3989] +[visit_exp `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})] [visit_exp (t'_2*{t'_2 <- `t'_2*`})] [visit_exp t'_2*{t'_2 <- `t'_2*`}] [scope_enter t'_2] @@ -24354,18 +22271,12 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t'_2*`] [visit_id t'_2*] not free [visit_id t'_2*] no dims -[visit_exp (C, `%->_%%`_instrtype{resulttype#780, `localidx*#479`}(`%`_resulttype{`X*#4002`}(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype{`X*#4053`}(t_4*{t_4 <- `t_4*`})))] +[visit_exp (C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`})))] [visit_exp C] [visit_id C] not free -[visit_exp `%->_%%`_instrtype{resulttype#780, `localidx*#479`}(`%`_resulttype{`X*#4002`}(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype{`X*#4053`}(t_4*{t_4 <- `t_4*`}))] -[visit_exp resulttype#780] -[visit_id resulttype#780] -[visit_exp `localidx*#479`] -[visit_id localidx*#479] -[visit_exp (`%`_resulttype{`X*#4002`}(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype{`X*#4053`}(t_4*{t_4 <- `t_4*`}))] -[visit_exp `%`_resulttype{`X*#4002`}(t_3*{t_3 <- `t_3*`})] -[visit_exp `X*#4002`] -[visit_id X*#4002] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))] +[visit_exp (`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))] +[visit_exp `%`_resulttype(t_3*{t_3 <- `t_3*`})] [visit_exp (t_3*{t_3 <- `t_3*`})] [visit_exp t_3*{t_3 <- `t_3*`}] [scope_enter t_3] @@ -24377,9 +22288,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id t_3*] not free [visit_id t_3*] no dims [visit_exp []] -[visit_exp `%`_resulttype{`X*#4053`}(t_4*{t_4 <- `t_4*`})] -[visit_exp `X*#4053`] -[visit_id X*#4053] +[visit_exp `%`_resulttype(t_4*{t_4 <- `t_4*`})] [visit_exp (t_4*{t_4 <- `t_4*`})] [visit_exp t_4*{t_4 <- `t_4*`}] [scope_enter t_4] @@ -24390,30 +22299,20 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_4*`] [visit_id t_4*] not free [visit_id t_4*] no dims -[check_dims] C X*#4074 X*#4123 X*#4136 X*#4149 X*#4186 X*#4199 X*#4212 X*#4225 X*#4276 deftype*#32 heaptype#691 i#5762 localidx*#491 localidx*#503 null?#689 resulttype#800 resulttype#803 resulttype#823 resulttype?#14 t'_2 t_1 t_2 t_3 t_4 typeidx#400 typeidx#402 typeuse#27 x +[check_dims] C t'_2 t_1 t_2 t_3 t_4 x [visit_exp C] [visit_id C] -[visit_exp `RETURN_CALL_REF`_instr{typeuse#27}(`_IDX`_typeuse{typeidx#400}(x))] -[visit_exp typeuse#27] -[visit_id typeuse#27] -[visit_exp (`_IDX`_typeuse{typeidx#400}(x))] -[visit_exp `_IDX`_typeuse{typeidx#400}(x)] -[visit_exp typeidx#400] -[visit_id typeidx#400] +[visit_exp `RETURN_CALL_REF`_instr(`_IDX`_typeuse(x))] +[visit_exp (`_IDX`_typeuse(x))] +[visit_exp `_IDX`_typeuse(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%->_%%`_instrtype{resulttype#800, `localidx*#491`}(`%`_resulttype{`X*#4074`}(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype{`null?#689`, heaptype#691}(?(`NULL`_null), `_IDX`_heaptype{typeidx#402}(x))]), [], `%`_resulttype{`X*#4123`}(t_4*{t_4 <- `t_4*`}))] -[visit_exp resulttype#800] -[visit_id resulttype#800] -[visit_exp `localidx*#491`] -[visit_id localidx*#491] -[visit_exp (`%`_resulttype{`X*#4074`}(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype{`null?#689`, heaptype#691}(?(`NULL`_null), `_IDX`_heaptype{typeidx#402}(x))]), [], `%`_resulttype{`X*#4123`}(t_4*{t_4 <- `t_4*`}))] -[visit_exp `%`_resulttype{`X*#4074`}(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype{`null?#689`, heaptype#691}(?(`NULL`_null), `_IDX`_heaptype{typeidx#402}(x))])] -[visit_exp `X*#4074`] -[visit_id X*#4074] -[visit_exp (t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype{`null?#689`, heaptype#691}(?(`NULL`_null), `_IDX`_heaptype{typeidx#402}(x))])] -[visit_exp t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype{`null?#689`, heaptype#691}(?(`NULL`_null), `_IDX`_heaptype{typeidx#402}(x))]] +[visit_exp `%->_%%`_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*`}))] +[visit_exp (`%`_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*`}))] +[visit_exp `%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))])] +[visit_exp (t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))])] +[visit_exp t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))]] [visit_exp t_3*{t_3 <- `t_3*`}] [scope_enter t_3] [visit_exp t_3] @@ -24423,7 +22322,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_3*`] [visit_id t_3*] no dims [visit_id t_3*] -[visit_exp t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype{`null?#689`, heaptype#691}(?(`NULL`_null), `_IDX`_heaptype{typeidx#402}(x))]] +[visit_exp t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))]] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] [visit_exp t_1] @@ -24433,26 +22332,18 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_1*`] [visit_id t_1*] no dims [visit_id t_1*] -[visit_exp [`REF`_valtype{`null?#689`, heaptype#691}(?(`NULL`_null), `_IDX`_heaptype{typeidx#402}(x))]] -[visit_exp `REF`_valtype{`null?#689`, heaptype#691}(?(`NULL`_null), `_IDX`_heaptype{typeidx#402}(x))] -[visit_exp `null?#689`] -[visit_id null?#689] -[visit_exp heaptype#691] -[visit_id heaptype#691] -[visit_exp (?(`NULL`_null), `_IDX`_heaptype{typeidx#402}(x))] +[visit_exp [`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))]] +[visit_exp `REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))] +[visit_exp (?(`NULL`_null), `_IDX`_heaptype(x))] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] [visit_exp ()] -[visit_exp `_IDX`_heaptype{typeidx#402}(x)] -[visit_exp typeidx#402] -[visit_id typeidx#402] +[visit_exp `_IDX`_heaptype(x)] [visit_exp (x)] [visit_exp x] [visit_id x] not free [visit_exp []] -[visit_exp `%`_resulttype{`X*#4123`}(t_4*{t_4 <- `t_4*`})] -[visit_exp `X*#4123`] -[visit_id X*#4123] +[visit_exp `%`_resulttype(t_4*{t_4 <- `t_4*`})] [visit_exp (t_4*{t_4 <- `t_4*`})] [visit_exp t_4*{t_4 <- `t_4*`}] [scope_enter t_4] @@ -24463,26 +22354,18 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_4*`] [visit_id t_4*] no dims [visit_id t_4*] -[visit_exp (C.`TYPES`_context{`deftype*#32`}[x!`%`_idx{i#5762}.0], `FUNC%->%`_comptype{resulttype#803}(`%`_resulttype{`X*#4136`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#4149`}(t_2*{t_2 <- `t_2*`})))] -[visit_exp C.`TYPES`_context{`deftype*#32`}[x!`%`_idx{i#5762}.0]] -[visit_exp C.`TYPES`_context{`deftype*#32`}] +[visit_exp (C.`TYPES`_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))] +[visit_exp C.`TYPES`_context[x!`%`_idx.0]] +[visit_exp C.`TYPES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `deftype*#32`] -[visit_id deftype*#32] -[visit_exp x!`%`_idx{i#5762}.0] -[visit_exp x!`%`_idx{i#5762}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#5762] -[visit_id i#5762] -[visit_exp `FUNC%->%`_comptype{resulttype#803}(`%`_resulttype{`X*#4136`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#4149`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#803] -[visit_id resulttype#803] -[visit_exp (`%`_resulttype{`X*#4136`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#4149`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#4136`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#4136`] -[visit_id X*#4136] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -24493,9 +22376,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_1*`] [visit_id t_1*] not free [visit_id t_1*] no dims -[visit_exp `%`_resulttype{`X*#4149`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#4149`] -[visit_id X*#4149] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -24506,16 +22387,12 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_2*`] [visit_id t_2*] no dims [visit_id t_2*] -[visit_exp (C.`RETURN`_context{`resulttype?#14`} = ?(`%`_resulttype{`X*#4186`}(t'_2*{t'_2 <- `t'_2*`})))] -[visit_exp C.`RETURN`_context{`resulttype?#14`}] +[visit_exp (C.`RETURN`_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`})))] +[visit_exp C.`RETURN`_context] [visit_exp C] [visit_id C] not free -[visit_exp `resulttype?#14`] -[visit_id resulttype?#14] -[visit_exp ?(`%`_resulttype{`X*#4186`}(t'_2*{t'_2 <- `t'_2*`}))] -[visit_exp `%`_resulttype{`X*#4186`}(t'_2*{t'_2 <- `t'_2*`})] -[visit_exp `X*#4186`] -[visit_id X*#4186] +[visit_exp ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))] +[visit_exp `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})] [visit_exp (t'_2*{t'_2 <- `t'_2*`})] [visit_exp t'_2*{t'_2 <- `t'_2*`}] [scope_enter t'_2] @@ -24526,12 +22403,10 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t'_2*`] [visit_id t'_2*] no dims [visit_id t'_2*] -[visit_exp (C, `%`_resulttype{`X*#4199`}(t_2*{t_2 <- `t_2*`}), `%`_resulttype{`X*#4212`}(t'_2*{t'_2 <- `t'_2*`}))] +[visit_exp (C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))] [visit_exp C] [visit_id C] not free -[visit_exp `%`_resulttype{`X*#4199`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#4199`] -[visit_id X*#4199] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -24542,9 +22417,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_2*`] [visit_id t_2*] not free [visit_id t_2*] no dims -[visit_exp `%`_resulttype{`X*#4212`}(t'_2*{t'_2 <- `t'_2*`})] -[visit_exp `X*#4212`] -[visit_id X*#4212] +[visit_exp `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})] [visit_exp (t'_2*{t'_2 <- `t'_2*`})] [visit_exp t'_2*{t'_2 <- `t'_2*`}] [scope_enter t'_2] @@ -24555,18 +22428,12 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t'_2*`] [visit_id t'_2*] not free [visit_id t'_2*] no dims -[visit_exp (C, `%->_%%`_instrtype{resulttype#823, `localidx*#503`}(`%`_resulttype{`X*#4225`}(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype{`X*#4276`}(t_4*{t_4 <- `t_4*`})))] +[visit_exp (C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`})))] [visit_exp C] [visit_id C] not free -[visit_exp `%->_%%`_instrtype{resulttype#823, `localidx*#503`}(`%`_resulttype{`X*#4225`}(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype{`X*#4276`}(t_4*{t_4 <- `t_4*`}))] -[visit_exp resulttype#823] -[visit_id resulttype#823] -[visit_exp `localidx*#503`] -[visit_id localidx*#503] -[visit_exp (`%`_resulttype{`X*#4225`}(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype{`X*#4276`}(t_4*{t_4 <- `t_4*`}))] -[visit_exp `%`_resulttype{`X*#4225`}(t_3*{t_3 <- `t_3*`})] -[visit_exp `X*#4225`] -[visit_id X*#4225] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))] +[visit_exp (`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))] +[visit_exp `%`_resulttype(t_3*{t_3 <- `t_3*`})] [visit_exp (t_3*{t_3 <- `t_3*`})] [visit_exp t_3*{t_3 <- `t_3*`}] [scope_enter t_3] @@ -24578,9 +22445,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id t_3*] not free [visit_id t_3*] no dims [visit_exp []] -[visit_exp `%`_resulttype{`X*#4276`}(t_4*{t_4 <- `t_4*`})] -[visit_exp `X*#4276`] -[visit_id X*#4276] +[visit_exp `%`_resulttype(t_4*{t_4 <- `t_4*`})] [visit_exp (t_4*{t_4 <- `t_4*`})] [visit_exp t_4*{t_4 <- `t_4*`}] [scope_enter t_4] @@ -24591,32 +22456,20 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_4*`] [visit_id t_4*] not free [visit_id t_4*] no dims -[check_dims] C X*#4297 X*#4346 X*#4359 X*#4372 X*#4409 X*#4422 X*#4435 X*#4448 X*#4499 addrtype#453 at deftype*#33 heaptype#715 i#5800 i#5810 lim limits#453 localidx*#515 localidx*#527 null?#713 reftype#401 resulttype#843 resulttype#846 resulttype#866 resulttype?#17 rt t'_2 t_1 t_2 t_3 t_4 tableidx#28 tabletype*#7 typeidx#404 typeuse#29 x y +[check_dims] C at lim rt t'_2 t_1 t_2 t_3 t_4 x y [visit_exp C] [visit_id C] -[visit_exp `RETURN_CALL_INDIRECT`_instr{tableidx#28, typeuse#29}(x, `_IDX`_typeuse{typeidx#404}(y))] -[visit_exp tableidx#28] -[visit_id tableidx#28] -[visit_exp typeuse#29] -[visit_id typeuse#29] -[visit_exp (x, `_IDX`_typeuse{typeidx#404}(y))] +[visit_exp `RETURN_CALL_INDIRECT`_instr(x, `_IDX`_typeuse(y))] +[visit_exp (x, `_IDX`_typeuse(y))] [visit_exp x] [visit_id x] -[visit_exp `_IDX`_typeuse{typeidx#404}(y)] -[visit_exp typeidx#404] -[visit_id typeidx#404] +[visit_exp `_IDX`_typeuse(y)] [visit_exp (y)] [visit_exp y] [visit_id y] -[visit_exp `%->_%%`_instrtype{resulttype#843, `localidx*#515`}(`%`_resulttype{`X*#4297`}(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#4346`}(t_4*{t_4 <- `t_4*`}))] -[visit_exp resulttype#843] -[visit_id resulttype#843] -[visit_exp `localidx*#515`] -[visit_id localidx*#515] -[visit_exp (`%`_resulttype{`X*#4297`}(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#4346`}(t_4*{t_4 <- `t_4*`}))] -[visit_exp `%`_resulttype{`X*#4297`}(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)])] -[visit_exp `X*#4297`] -[visit_id X*#4297] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))] +[visit_exp (`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))] +[visit_exp `%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)])] [visit_exp (t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)])] [visit_exp t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]] [visit_exp t_3*{t_3 <- `t_3*`}] @@ -24643,9 +22496,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp at] [visit_id at] [visit_exp []] -[visit_exp `%`_resulttype{`X*#4346`}(t_4*{t_4 <- `t_4*`})] -[visit_exp `X*#4346`] -[visit_id X*#4346] +[visit_exp `%`_resulttype(t_4*{t_4 <- `t_4*`})] [visit_exp (t_4*{t_4 <- `t_4*`})] [visit_exp t_4*{t_4 <- `t_4*`}] [scope_enter t_4] @@ -24656,26 +22507,16 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_4*`] [visit_id t_4*] no dims [visit_id t_4*] -[visit_exp (C.`TABLES`_context{`tabletype*#7`}[x!`%`_idx{i#5800}.0] = `%%%`_tabletype{addrtype#453, limits#453, reftype#401}(at, lim, rt))] -[visit_exp C.`TABLES`_context{`tabletype*#7`}[x!`%`_idx{i#5800}.0]] -[visit_exp C.`TABLES`_context{`tabletype*#7`}] +[visit_exp (C.`TABLES`_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt))] +[visit_exp C.`TABLES`_context[x!`%`_idx.0]] +[visit_exp C.`TABLES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `tabletype*#7`] -[visit_id tabletype*#7] -[visit_exp x!`%`_idx{i#5800}.0] -[visit_exp x!`%`_idx{i#5800}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#5800] -[visit_id i#5800] -[visit_exp `%%%`_tabletype{addrtype#453, limits#453, reftype#401}(at, lim, rt)] -[visit_exp addrtype#453] -[visit_id addrtype#453] -[visit_exp limits#453] -[visit_id limits#453] -[visit_exp reftype#401] -[visit_id reftype#401] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `%%%`_tabletype(at, lim, rt)] [visit_exp (at, lim, rt)] [visit_exp at] [visit_id at] not free @@ -24683,42 +22524,30 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id lim] [visit_exp rt] [visit_id rt] -[visit_exp (C, rt, `REF`_reftype{`null?#713`, heaptype#715}(?(`NULL`_null), `FUNC`_heaptype))] +[visit_exp (C, rt, `REF`_reftype(?(`NULL`_null), `FUNC`_heaptype))] [visit_exp C] [visit_id C] not free [visit_exp rt] [visit_id rt] not free -[visit_exp `REF`_reftype{`null?#713`, heaptype#715}(?(`NULL`_null), `FUNC`_heaptype)] -[visit_exp `null?#713`] -[visit_id null?#713] -[visit_exp heaptype#715] -[visit_id heaptype#715] +[visit_exp `REF`_reftype(?(`NULL`_null), `FUNC`_heaptype)] [visit_exp (?(`NULL`_null), `FUNC`_heaptype)] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] [visit_exp ()] [visit_exp `FUNC`_heaptype] [visit_exp ()] -[visit_exp (C.`TYPES`_context{`deftype*#33`}[y!`%`_idx{i#5810}.0], `FUNC%->%`_comptype{resulttype#846}(`%`_resulttype{`X*#4359`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#4372`}(t_2*{t_2 <- `t_2*`})))] -[visit_exp C.`TYPES`_context{`deftype*#33`}[y!`%`_idx{i#5810}.0]] -[visit_exp C.`TYPES`_context{`deftype*#33`}] +[visit_exp (C.`TYPES`_context[y!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))] +[visit_exp C.`TYPES`_context[y!`%`_idx.0]] +[visit_exp C.`TYPES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `deftype*#33`] -[visit_id deftype*#33] -[visit_exp y!`%`_idx{i#5810}.0] -[visit_exp y!`%`_idx{i#5810}] +[visit_exp y!`%`_idx.0] +[visit_exp y!`%`_idx] [visit_exp y] [visit_id y] not free -[visit_exp i#5810] -[visit_id i#5810] -[visit_exp `FUNC%->%`_comptype{resulttype#846}(`%`_resulttype{`X*#4359`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#4372`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#846] -[visit_id resulttype#846] -[visit_exp (`%`_resulttype{`X*#4359`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#4372`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#4359`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#4359`] -[visit_id X*#4359] +[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -24729,9 +22558,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_1*`] [visit_id t_1*] not free [visit_id t_1*] no dims -[visit_exp `%`_resulttype{`X*#4372`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#4372`] -[visit_id X*#4372] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -24742,16 +22569,12 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_2*`] [visit_id t_2*] no dims [visit_id t_2*] -[visit_exp (C.`RETURN`_context{`resulttype?#17`} = ?(`%`_resulttype{`X*#4409`}(t'_2*{t'_2 <- `t'_2*`})))] -[visit_exp C.`RETURN`_context{`resulttype?#17`}] +[visit_exp (C.`RETURN`_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`})))] +[visit_exp C.`RETURN`_context] [visit_exp C] [visit_id C] not free -[visit_exp `resulttype?#17`] -[visit_id resulttype?#17] -[visit_exp ?(`%`_resulttype{`X*#4409`}(t'_2*{t'_2 <- `t'_2*`}))] -[visit_exp `%`_resulttype{`X*#4409`}(t'_2*{t'_2 <- `t'_2*`})] -[visit_exp `X*#4409`] -[visit_id X*#4409] +[visit_exp ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))] +[visit_exp `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})] [visit_exp (t'_2*{t'_2 <- `t'_2*`})] [visit_exp t'_2*{t'_2 <- `t'_2*`}] [scope_enter t'_2] @@ -24762,12 +22585,10 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t'_2*`] [visit_id t'_2*] no dims [visit_id t'_2*] -[visit_exp (C, `%`_resulttype{`X*#4422`}(t_2*{t_2 <- `t_2*`}), `%`_resulttype{`X*#4435`}(t'_2*{t'_2 <- `t'_2*`}))] +[visit_exp (C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))] [visit_exp C] [visit_id C] not free -[visit_exp `%`_resulttype{`X*#4422`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#4422`] -[visit_id X*#4422] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -24778,9 +22599,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_2*`] [visit_id t_2*] not free [visit_id t_2*] no dims -[visit_exp `%`_resulttype{`X*#4435`}(t'_2*{t'_2 <- `t'_2*`})] -[visit_exp `X*#4435`] -[visit_id X*#4435] +[visit_exp `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})] [visit_exp (t'_2*{t'_2 <- `t'_2*`})] [visit_exp t'_2*{t'_2 <- `t'_2*`}] [scope_enter t'_2] @@ -24791,18 +22610,12 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t'_2*`] [visit_id t'_2*] not free [visit_id t'_2*] no dims -[visit_exp (C, `%->_%%`_instrtype{resulttype#866, `localidx*#527`}(`%`_resulttype{`X*#4448`}(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype{`X*#4499`}(t_4*{t_4 <- `t_4*`})))] +[visit_exp (C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`})))] [visit_exp C] [visit_id C] not free -[visit_exp `%->_%%`_instrtype{resulttype#866, `localidx*#527`}(`%`_resulttype{`X*#4448`}(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype{`X*#4499`}(t_4*{t_4 <- `t_4*`}))] -[visit_exp resulttype#866] -[visit_id resulttype#866] -[visit_exp `localidx*#527`] -[visit_id localidx*#527] -[visit_exp (`%`_resulttype{`X*#4448`}(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype{`X*#4499`}(t_4*{t_4 <- `t_4*`}))] -[visit_exp `%`_resulttype{`X*#4448`}(t_3*{t_3 <- `t_3*`})] -[visit_exp `X*#4448`] -[visit_id X*#4448] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))] +[visit_exp (`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))] +[visit_exp `%`_resulttype(t_3*{t_3 <- `t_3*`})] [visit_exp (t_3*{t_3 <- `t_3*`})] [visit_exp t_3*{t_3 <- `t_3*`}] [scope_enter t_3] @@ -24814,9 +22627,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id t_3*] not free [visit_id t_3*] no dims [visit_exp []] -[visit_exp `%`_resulttype{`X*#4499`}(t_4*{t_4 <- `t_4*`})] -[visit_exp `X*#4499`] -[visit_id X*#4499] +[visit_exp `%`_resulttype(t_4*{t_4 <- `t_4*`})] [visit_exp (t_4*{t_4 <- `t_4*`})] [visit_exp t_4*{t_4 <- `t_4*`}] [scope_enter t_4] @@ -24828,24 +22639,16 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id t_4*] not free [visit_id t_4*] no dims [check_dims] -[check_dims] C X*#4520 X*#4569 X*#4582 X*#4605 X*#4616 X*#4667 i#5834 localidx*#539 localidx*#551 resulttype#886 resulttype#889 resulttype#909 t t_1 t_2 tagidx#3 tagtype*#6 x +[check_dims] C t t_1 t_2 x [visit_exp C] [visit_id C] -[visit_exp `THROW`_instr{tagidx#3}(x)] -[visit_exp tagidx#3] -[visit_id tagidx#3] +[visit_exp `THROW`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%->_%%`_instrtype{resulttype#886, `localidx*#539`}(`%`_resulttype{`X*#4520`}(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype{`X*#4569`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#886] -[visit_id resulttype#886] -[visit_exp `localidx*#539`] -[visit_id localidx*#539] -[visit_exp (`%`_resulttype{`X*#4520`}(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype{`X*#4569`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#4520`}(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`})] -[visit_exp `X*#4520`] -[visit_id X*#4520] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`})] [visit_exp (t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`})] [visit_exp t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}] [visit_exp t_1*{t_1 <- `t_1*`}] @@ -24867,9 +22670,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id t*] no dims [visit_id t*] [visit_exp []] -[visit_exp `%`_resulttype{`X*#4569`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#4569`] -[visit_id X*#4569] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -24880,27 +22681,19 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_2*`] [visit_id t_2*] no dims [visit_id t_2*] -[visit_exp ($as_deftype(C.`TAGS`_context{`tagtype*#6`}[x!`%`_idx{i#5834}.0]), `FUNC%->%`_comptype{resulttype#889}(`%`_resulttype{`X*#4582`}(t*{t <- `t*`}), `%`_resulttype{`X*#4605`}([])))] -[visit_exp $as_deftype(C.`TAGS`_context{`tagtype*#6`}[x!`%`_idx{i#5834}.0])] -[visit_exp C.`TAGS`_context{`tagtype*#6`}[x!`%`_idx{i#5834}.0]] -[visit_exp C.`TAGS`_context{`tagtype*#6`}] +[visit_exp ($as_deftype(C.`TAGS`_context[x!`%`_idx.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([])))] +[visit_exp $as_deftype(C.`TAGS`_context[x!`%`_idx.0])] +[visit_exp C.`TAGS`_context[x!`%`_idx.0]] +[visit_exp C.`TAGS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `tagtype*#6`] -[visit_id tagtype*#6] -[visit_exp x!`%`_idx{i#5834}.0] -[visit_exp x!`%`_idx{i#5834}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#5834] -[visit_id i#5834] -[visit_exp `FUNC%->%`_comptype{resulttype#889}(`%`_resulttype{`X*#4582`}(t*{t <- `t*`}), `%`_resulttype{`X*#4605`}([]))] -[visit_exp resulttype#889] -[visit_id resulttype#889] -[visit_exp (`%`_resulttype{`X*#4582`}(t*{t <- `t*`}), `%`_resulttype{`X*#4605`}([]))] -[visit_exp `%`_resulttype{`X*#4582`}(t*{t <- `t*`})] -[visit_exp `X*#4582`] -[visit_id X*#4582] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))] +[visit_exp (`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))] +[visit_exp `%`_resulttype(t*{t <- `t*`})] [visit_exp (t*{t <- `t*`})] [visit_exp t*{t <- `t*`}] [scope_enter t] @@ -24911,23 +22704,15 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t*`] [visit_id t*] not free [visit_id t*] no dims -[visit_exp `%`_resulttype{`X*#4605`}([])] -[visit_exp `X*#4605`] -[visit_id X*#4605] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] -[visit_exp (C, `%->_%%`_instrtype{resulttype#909, `localidx*#551`}(`%`_resulttype{`X*#4616`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#4667`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp (C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})))] [visit_exp C] [visit_id C] not free -[visit_exp `%->_%%`_instrtype{resulttype#909, `localidx*#551`}(`%`_resulttype{`X*#4616`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#4667`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#909] -[visit_id resulttype#909] -[visit_exp `localidx*#551`] -[visit_id localidx*#551] -[visit_exp (`%`_resulttype{`X*#4616`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#4667`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#4616`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#4616`] -[visit_id X*#4616] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -24939,9 +22724,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id t_1*] not free [visit_id t_1*] no dims [visit_exp []] -[visit_exp `%`_resulttype{`X*#4667`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#4667`] -[visit_id X*#4667] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -24952,22 +22735,16 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_2*`] [visit_id t_2*] not free [visit_id t_2*] no dims -[check_dims] C X*#4688 X*#4737 X*#4748 X*#4799 heaptype#717 localidx*#563 localidx*#575 null?#715 resulttype#929 resulttype#949 t_1 t_2 +[check_dims] C t_1 t_2 [visit_exp C] [visit_id C] [visit_exp `THROW_REF`_instr] [visit_exp ()] -[visit_exp `%->_%%`_instrtype{resulttype#929, `localidx*#563`}(`%`_resulttype{`X*#4688`}(t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype{`null?#715`, heaptype#717}(?(`NULL`_null), `EXN`_heaptype)]), [], `%`_resulttype{`X*#4737`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#929] -[visit_id resulttype#929] -[visit_exp `localidx*#563`] -[visit_id localidx*#563] -[visit_exp (`%`_resulttype{`X*#4688`}(t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype{`null?#715`, heaptype#717}(?(`NULL`_null), `EXN`_heaptype)]), [], `%`_resulttype{`X*#4737`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#4688`}(t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype{`null?#715`, heaptype#717}(?(`NULL`_null), `EXN`_heaptype)])] -[visit_exp `X*#4688`] -[visit_id X*#4688] -[visit_exp (t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype{`null?#715`, heaptype#717}(?(`NULL`_null), `EXN`_heaptype)])] -[visit_exp t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype{`null?#715`, heaptype#717}(?(`NULL`_null), `EXN`_heaptype)]] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype(?(`NULL`_null), `EXN`_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype(?(`NULL`_null), `EXN`_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype(?(`NULL`_null), `EXN`_heaptype)])] +[visit_exp (t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype(?(`NULL`_null), `EXN`_heaptype)])] +[visit_exp t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype(?(`NULL`_null), `EXN`_heaptype)]] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] [visit_exp t_1] @@ -24977,12 +22754,8 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_1*`] [visit_id t_1*] no dims [visit_id t_1*] -[visit_exp [`REF`_valtype{`null?#715`, heaptype#717}(?(`NULL`_null), `EXN`_heaptype)]] -[visit_exp `REF`_valtype{`null?#715`, heaptype#717}(?(`NULL`_null), `EXN`_heaptype)] -[visit_exp `null?#715`] -[visit_id null?#715] -[visit_exp heaptype#717] -[visit_id heaptype#717] +[visit_exp [`REF`_valtype(?(`NULL`_null), `EXN`_heaptype)]] +[visit_exp `REF`_valtype(?(`NULL`_null), `EXN`_heaptype)] [visit_exp (?(`NULL`_null), `EXN`_heaptype)] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] @@ -24990,9 +22763,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `EXN`_heaptype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#4737`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#4737`] -[visit_id X*#4737] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -25003,18 +22774,12 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_2*`] [visit_id t_2*] no dims [visit_id t_2*] -[visit_exp (C, `%->_%%`_instrtype{resulttype#949, `localidx*#575`}(`%`_resulttype{`X*#4748`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#4799`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp (C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})))] [visit_exp C] [visit_id C] not free -[visit_exp `%->_%%`_instrtype{resulttype#949, `localidx*#575`}(`%`_resulttype{`X*#4748`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#4799`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#949] -[visit_id resulttype#949] -[visit_exp `localidx*#575`] -[visit_id localidx*#575] -[visit_exp (`%`_resulttype{`X*#4748`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#4799`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#4748`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#4748`] -[visit_id X*#4748] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -25026,9 +22791,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id t_1*] not free [visit_id t_1*] no dims [visit_exp []] -[visit_exp `%`_resulttype{`X*#4799`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#4799`] -[visit_id X*#4799] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -25039,20 +22802,14 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_2*`] [visit_id t_2*] not free [visit_id t_2*] no dims -[check_dims] C X*#4812 X*#4825 X*#4876 X*#4887 X*#4938 X*#4949 X*#4962 X*#5014 blocktype#13 bt catch datatype*#6 deftype*#34 deftype*#35 elemtype*#6 funcidx*#44 globaltype*#6 instr instr*#15 localidx*#587 localidx*#599 localidx*#611 localtype*#9 memtype*#6 resulttype#1009 resulttype#969 resulttype#989 resulttype*#17 resulttype?#18 subtype*#9 t_1 t_2 tabletype*#8 tagtype*#7 x +[check_dims] C bt catch instr t_1 t_2 x [visit_exp C] [visit_id C] -[visit_exp `TRY_TABLE`_instr{blocktype#13, `instr*#15`}(bt, `%`_list{`X*#4812`}(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})] -[visit_exp blocktype#13] -[visit_id blocktype#13] -[visit_exp `instr*#15`] -[visit_id instr*#15] -[visit_exp (bt, `%`_list{`X*#4812`}(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})] +[visit_exp `TRY_TABLE`_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})] +[visit_exp (bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})] [visit_exp bt] [visit_id bt] -[visit_exp `%`_list{`X*#4812`}(catch*{catch <- `catch*`})] -[visit_exp `X*#4812`] -[visit_id X*#4812] +[visit_exp `%`_list(catch*{catch <- `catch*`})] [visit_exp (catch*{catch <- `catch*`})] [visit_exp catch*{catch <- `catch*`}] [scope_enter catch] @@ -25072,15 +22829,9 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `instr*`] [visit_id instr*] no dims [visit_id instr*] -[visit_exp `%->_%%`_instrtype{resulttype#969, `localidx*#587`}(`%`_resulttype{`X*#4825`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#4876`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#969] -[visit_id resulttype#969] -[visit_exp `localidx*#587`] -[visit_id localidx*#587] -[visit_exp (`%`_resulttype{`X*#4825`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#4876`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#4825`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#4825`] -[visit_id X*#4825] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -25092,9 +22843,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id t_1*] no dims [visit_id t_1*] [visit_exp []] -[visit_exp `%`_resulttype{`X*#4876`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#4876`] -[visit_id X*#4876] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -25105,20 +22854,14 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_2*`] [visit_id t_2*] no dims [visit_id t_2*] -[visit_exp (C, bt, `%->_%%`_instrtype{resulttype#989, `localidx*#599`}(`%`_resulttype{`X*#4887`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#4938`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp (C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})))] [visit_exp C] [visit_id C] not free [visit_exp bt] [visit_id bt] not free -[visit_exp `%->_%%`_instrtype{resulttype#989, `localidx*#599`}(`%`_resulttype{`X*#4887`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#4938`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#989] -[visit_id resulttype#989] -[visit_exp `localidx*#599`] -[visit_id localidx*#599] -[visit_exp (`%`_resulttype{`X*#4887`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#4938`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#4887`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#4887`] -[visit_id X*#4887] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -25130,9 +22873,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id t_1*] not free [visit_id t_1*] no dims [visit_exp []] -[visit_exp `%`_resulttype{`X*#4938`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#4938`] -[visit_id X*#4938] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -25143,45 +22884,21 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_2*`] [visit_id t_2*] not free [visit_id t_2*] no dims -[visit_exp ({`TYPES`{`deftype*#34`} [], `RECS`{`subtype*#9`} [], `TAGS`{`tagtype*#7`} [], `GLOBALS`{`globaltype*#6`} [], `MEMS`{`memtype*#6`} [], `TABLES`{`tabletype*#8`} [], `FUNCS`{`deftype*#35`} [], `DATAS`{`datatype*#6`} [], `ELEMS`{`elemtype*#6`} [], `LOCALS`{`localtype*#9`} [], `LABELS`{`resulttype*#17`} [`%`_resulttype{`X*#4949`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#18`} ?(), `REFS`{`funcidx*#44`} []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype{resulttype#1009, `localidx*#611`}(`%`_resulttype{`X*#4962`}(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype{`X*#5014`}(t_2*{t_2 <- `t_2*`})))] -[visit_exp {`TYPES`{`deftype*#34`} [], `RECS`{`subtype*#9`} [], `TAGS`{`tagtype*#7`} [], `GLOBALS`{`globaltype*#6`} [], `MEMS`{`memtype*#6`} [], `TABLES`{`tabletype*#8`} [], `FUNCS`{`deftype*#35`} [], `DATAS`{`datatype*#6`} [], `ELEMS`{`elemtype*#6`} [], `LOCALS`{`localtype*#9`} [], `LABELS`{`resulttype*#17`} [`%`_resulttype{`X*#4949`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#18`} ?(), `REFS`{`funcidx*#44`} []} +++ C] -[visit_exp {`TYPES`{`deftype*#34`} [], `RECS`{`subtype*#9`} [], `TAGS`{`tagtype*#7`} [], `GLOBALS`{`globaltype*#6`} [], `MEMS`{`memtype*#6`} [], `TABLES`{`tabletype*#8`} [], `FUNCS`{`deftype*#35`} [], `DATAS`{`datatype*#6`} [], `ELEMS`{`elemtype*#6`} [], `LOCALS`{`localtype*#9`} [], `LABELS`{`resulttype*#17`} [`%`_resulttype{`X*#4949`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#18`} ?(), `REFS`{`funcidx*#44`} []}] -[visit_exp `deftype*#34`] -[visit_id deftype*#34] +[visit_exp ({`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*`})))] +[visit_exp {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [`%`_resulttype(t_2*{t_2 <- `t_2*`})], `RETURN` ?(), `REFS` []} +++ C] +[visit_exp {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [`%`_resulttype(t_2*{t_2 <- `t_2*`})], `RETURN` ?(), `REFS` []}] [visit_exp []] -[visit_exp `subtype*#9`] -[visit_id subtype*#9] [visit_exp []] -[visit_exp `tagtype*#7`] -[visit_id tagtype*#7] [visit_exp []] -[visit_exp `globaltype*#6`] -[visit_id globaltype*#6] [visit_exp []] -[visit_exp `memtype*#6`] -[visit_id memtype*#6] [visit_exp []] -[visit_exp `tabletype*#8`] -[visit_id tabletype*#8] [visit_exp []] -[visit_exp `deftype*#35`] -[visit_id deftype*#35] [visit_exp []] -[visit_exp `datatype*#6`] -[visit_id datatype*#6] [visit_exp []] -[visit_exp `elemtype*#6`] -[visit_id elemtype*#6] [visit_exp []] -[visit_exp `localtype*#9`] -[visit_id localtype*#9] [visit_exp []] -[visit_exp `resulttype*#17`] -[visit_id resulttype*#17] -[visit_exp [`%`_resulttype{`X*#4949`}(t_2*{t_2 <- `t_2*`})]] -[visit_exp `%`_resulttype{`X*#4949`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#4949`] -[visit_id X*#4949] +[visit_exp [`%`_resulttype(t_2*{t_2 <- `t_2*`})]] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -25192,11 +22909,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t_2*`] [visit_id t_2*] not free [visit_id t_2*] no dims -[visit_exp `resulttype?#18`] -[visit_id resulttype?#18] [visit_exp ?()] -[visit_exp `funcidx*#44`] -[visit_id funcidx*#44] [visit_exp []] [visit_exp C] [visit_id C] not free @@ -25209,15 +22922,9 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `instr*`] [visit_id instr*] not free [visit_id instr*] no dims -[visit_exp `%->_%%`_instrtype{resulttype#1009, `localidx*#611`}(`%`_resulttype{`X*#4962`}(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype{`X*#5014`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#1009] -[visit_id resulttype#1009] -[visit_exp `localidx*#611`] -[visit_id localidx*#611] -[visit_exp (`%`_resulttype{`X*#4962`}(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype{`X*#5014`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#4962`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#4962`] -[visit_id X*#4962] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -25237,9 +22944,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `x*`] [visit_id x*] no dims [visit_id x*] -[visit_exp `%`_resulttype{`X*#5014`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#5014`] -[visit_id X*#5014] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -25261,40 +22966,28 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `catch*`] [visit_id catch*] not free [visit_id catch*] no dims -[check_dims] C X*#5029 X*#5052 X*#5063 i#5946 i#5956 l labelidx#29 resulttype#1012 resulttype*#18 t tagidx#5 tagtype*#8 x +[check_dims] C l t x [visit_exp C] [visit_id C] -[visit_exp `CATCH`_catch{tagidx#5, labelidx#29}(x, l)] -[visit_exp tagidx#5] -[visit_id tagidx#5] -[visit_exp labelidx#29] -[visit_id labelidx#29] +[visit_exp `CATCH`_catch(x, l)] [visit_exp (x, l)] [visit_exp x] [visit_id x] [visit_exp l] [visit_id l] -[visit_exp ($as_deftype(C.`TAGS`_context{`tagtype*#8`}[x!`%`_idx{i#5946}.0]), `FUNC%->%`_comptype{resulttype#1012}(`%`_resulttype{`X*#5029`}(t*{t <- `t*`}), `%`_resulttype{`X*#5052`}([])))] -[visit_exp $as_deftype(C.`TAGS`_context{`tagtype*#8`}[x!`%`_idx{i#5946}.0])] -[visit_exp C.`TAGS`_context{`tagtype*#8`}[x!`%`_idx{i#5946}.0]] -[visit_exp C.`TAGS`_context{`tagtype*#8`}] +[visit_exp ($as_deftype(C.`TAGS`_context[x!`%`_idx.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([])))] +[visit_exp $as_deftype(C.`TAGS`_context[x!`%`_idx.0])] +[visit_exp C.`TAGS`_context[x!`%`_idx.0]] +[visit_exp C.`TAGS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `tagtype*#8`] -[visit_id tagtype*#8] -[visit_exp x!`%`_idx{i#5946}.0] -[visit_exp x!`%`_idx{i#5946}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#5946] -[visit_id i#5946] -[visit_exp `FUNC%->%`_comptype{resulttype#1012}(`%`_resulttype{`X*#5029`}(t*{t <- `t*`}), `%`_resulttype{`X*#5052`}([]))] -[visit_exp resulttype#1012] -[visit_id resulttype#1012] -[visit_exp (`%`_resulttype{`X*#5029`}(t*{t <- `t*`}), `%`_resulttype{`X*#5052`}([]))] -[visit_exp `%`_resulttype{`X*#5029`}(t*{t <- `t*`})] -[visit_exp `X*#5029`] -[visit_id X*#5029] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))] +[visit_exp (`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))] +[visit_exp `%`_resulttype(t*{t <- `t*`})] [visit_exp (t*{t <- `t*`})] [visit_exp t*{t <- `t*`}] [scope_enter t] @@ -25305,17 +22998,13 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t*`] [visit_id t*] no dims [visit_id t*] -[visit_exp `%`_resulttype{`X*#5052`}([])] -[visit_exp `X*#5052`] -[visit_id X*#5052] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] -[visit_exp (C, `%`_resulttype{`X*#5063`}(t*{t <- `t*`}), C.`LABELS`_context{`resulttype*#18`}[l!`%`_labelidx{i#5956}.0])] +[visit_exp (C, `%`_resulttype(t*{t <- `t*`}), C.`LABELS`_context[l!`%`_labelidx.0])] [visit_exp C] [visit_id C] not free -[visit_exp `%`_resulttype{`X*#5063`}(t*{t <- `t*`})] -[visit_exp `X*#5063`] -[visit_id X*#5063] +[visit_exp `%`_resulttype(t*{t <- `t*`})] [visit_exp (t*{t <- `t*`})] [visit_exp t*{t <- `t*`}] [scope_enter t] @@ -25326,52 +23015,36 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t*`] [visit_id t*] not free [visit_id t*] no dims -[visit_exp C.`LABELS`_context{`resulttype*#18`}[l!`%`_labelidx{i#5956}.0]] -[visit_exp C.`LABELS`_context{`resulttype*#18`}] +[visit_exp C.`LABELS`_context[l!`%`_labelidx.0]] +[visit_exp C.`LABELS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `resulttype*#18`] -[visit_id resulttype*#18] -[visit_exp l!`%`_labelidx{i#5956}.0] -[visit_exp l!`%`_labelidx{i#5956}] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] not free -[visit_exp i#5956] -[visit_id i#5956] -[check_dims] C X*#5088 X*#5111 X*#5132 heaptype#719 i#5992 i#6002 l labelidx#31 null?#717 resulttype#1015 resulttype*#19 t tagidx#7 tagtype*#9 x +[check_dims] C l t x [visit_exp C] [visit_id C] -[visit_exp `CATCH_REF`_catch{tagidx#7, labelidx#31}(x, l)] -[visit_exp tagidx#7] -[visit_id tagidx#7] -[visit_exp labelidx#31] -[visit_id labelidx#31] +[visit_exp `CATCH_REF`_catch(x, l)] [visit_exp (x, l)] [visit_exp x] [visit_id x] [visit_exp l] [visit_id l] -[visit_exp ($as_deftype(C.`TAGS`_context{`tagtype*#9`}[x!`%`_idx{i#5992}.0]), `FUNC%->%`_comptype{resulttype#1015}(`%`_resulttype{`X*#5088`}(t*{t <- `t*`}), `%`_resulttype{`X*#5111`}([])))] -[visit_exp $as_deftype(C.`TAGS`_context{`tagtype*#9`}[x!`%`_idx{i#5992}.0])] -[visit_exp C.`TAGS`_context{`tagtype*#9`}[x!`%`_idx{i#5992}.0]] -[visit_exp C.`TAGS`_context{`tagtype*#9`}] +[visit_exp ($as_deftype(C.`TAGS`_context[x!`%`_idx.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([])))] +[visit_exp $as_deftype(C.`TAGS`_context[x!`%`_idx.0])] +[visit_exp C.`TAGS`_context[x!`%`_idx.0]] +[visit_exp C.`TAGS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `tagtype*#9`] -[visit_id tagtype*#9] -[visit_exp x!`%`_idx{i#5992}.0] -[visit_exp x!`%`_idx{i#5992}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#5992] -[visit_id i#5992] -[visit_exp `FUNC%->%`_comptype{resulttype#1015}(`%`_resulttype{`X*#5088`}(t*{t <- `t*`}), `%`_resulttype{`X*#5111`}([]))] -[visit_exp resulttype#1015] -[visit_id resulttype#1015] -[visit_exp (`%`_resulttype{`X*#5088`}(t*{t <- `t*`}), `%`_resulttype{`X*#5111`}([]))] -[visit_exp `%`_resulttype{`X*#5088`}(t*{t <- `t*`})] -[visit_exp `X*#5088`] -[visit_id X*#5088] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))] +[visit_exp (`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))] +[visit_exp `%`_resulttype(t*{t <- `t*`})] [visit_exp (t*{t <- `t*`})] [visit_exp t*{t <- `t*`}] [scope_enter t] @@ -25382,19 +23055,15 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t*`] [visit_id t*] no dims [visit_id t*] -[visit_exp `%`_resulttype{`X*#5111`}([])] -[visit_exp `X*#5111`] -[visit_id X*#5111] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] -[visit_exp (C, `%`_resulttype{`X*#5132`}(t*{t <- `t*`} ++ [`REF`_valtype{`null?#717`, heaptype#719}(?(), `EXN`_heaptype)]), C.`LABELS`_context{`resulttype*#19`}[l!`%`_labelidx{i#6002}.0])] +[visit_exp (C, `%`_resulttype(t*{t <- `t*`} ++ [`REF`_valtype(?(), `EXN`_heaptype)]), C.`LABELS`_context[l!`%`_labelidx.0])] [visit_exp C] [visit_id C] not free -[visit_exp `%`_resulttype{`X*#5132`}(t*{t <- `t*`} ++ [`REF`_valtype{`null?#717`, heaptype#719}(?(), `EXN`_heaptype)])] -[visit_exp `X*#5132`] -[visit_id X*#5132] -[visit_exp (t*{t <- `t*`} ++ [`REF`_valtype{`null?#717`, heaptype#719}(?(), `EXN`_heaptype)])] -[visit_exp t*{t <- `t*`} ++ [`REF`_valtype{`null?#717`, heaptype#719}(?(), `EXN`_heaptype)]] +[visit_exp `%`_resulttype(t*{t <- `t*`} ++ [`REF`_valtype(?(), `EXN`_heaptype)])] +[visit_exp (t*{t <- `t*`} ++ [`REF`_valtype(?(), `EXN`_heaptype)])] +[visit_exp t*{t <- `t*`} ++ [`REF`_valtype(?(), `EXN`_heaptype)]] [visit_exp t*{t <- `t*`}] [scope_enter t] [visit_exp t] @@ -25404,126 +23073,84 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `t*`] [visit_id t*] not free [visit_id t*] no dims -[visit_exp [`REF`_valtype{`null?#717`, heaptype#719}(?(), `EXN`_heaptype)]] -[visit_exp `REF`_valtype{`null?#717`, heaptype#719}(?(), `EXN`_heaptype)] -[visit_exp `null?#717`] -[visit_id null?#717] -[visit_exp heaptype#719] -[visit_id heaptype#719] +[visit_exp [`REF`_valtype(?(), `EXN`_heaptype)]] +[visit_exp `REF`_valtype(?(), `EXN`_heaptype)] [visit_exp (?(), `EXN`_heaptype)] [visit_exp ?()] [visit_exp `EXN`_heaptype] [visit_exp ()] -[visit_exp C.`LABELS`_context{`resulttype*#19`}[l!`%`_labelidx{i#6002}.0]] -[visit_exp C.`LABELS`_context{`resulttype*#19`}] +[visit_exp C.`LABELS`_context[l!`%`_labelidx.0]] +[visit_exp C.`LABELS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `resulttype*#19`] -[visit_id resulttype*#19] -[visit_exp l!`%`_labelidx{i#6002}.0] -[visit_exp l!`%`_labelidx{i#6002}] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] not free -[visit_exp i#6002] -[visit_id i#6002] -[check_dims] C X*#5163 i#6024 l labelidx#33 resulttype*#20 +[check_dims] C l [visit_exp C] [visit_id C] -[visit_exp `CATCH_ALL`_catch{labelidx#33}(l)] -[visit_exp labelidx#33] -[visit_id labelidx#33] +[visit_exp `CATCH_ALL`_catch(l)] [visit_exp (l)] [visit_exp l] [visit_id l] -[visit_exp (C, `%`_resulttype{`X*#5163`}([]), C.`LABELS`_context{`resulttype*#20`}[l!`%`_labelidx{i#6024}.0])] +[visit_exp (C, `%`_resulttype([]), C.`LABELS`_context[l!`%`_labelidx.0])] [visit_exp C] [visit_id C] not free -[visit_exp `%`_resulttype{`X*#5163`}([])] -[visit_exp `X*#5163`] -[visit_id X*#5163] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] -[visit_exp C.`LABELS`_context{`resulttype*#20`}[l!`%`_labelidx{i#6024}.0]] -[visit_exp C.`LABELS`_context{`resulttype*#20`}] +[visit_exp C.`LABELS`_context[l!`%`_labelidx.0]] +[visit_exp C.`LABELS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `resulttype*#20`] -[visit_id resulttype*#20] -[visit_exp l!`%`_labelidx{i#6024}.0] -[visit_exp l!`%`_labelidx{i#6024}] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] not free -[visit_exp i#6024] -[visit_id i#6024] -[check_dims] C X*#5194 heaptype#721 i#6046 l labelidx#35 null?#719 resulttype*#21 +[check_dims] C l [visit_exp C] [visit_id C] -[visit_exp `CATCH_ALL_REF`_catch{labelidx#35}(l)] -[visit_exp labelidx#35] -[visit_id labelidx#35] +[visit_exp `CATCH_ALL_REF`_catch(l)] [visit_exp (l)] [visit_exp l] [visit_id l] -[visit_exp (C, `%`_resulttype{`X*#5194`}([`REF`_valtype{`null?#719`, heaptype#721}(?(), `EXN`_heaptype)]), C.`LABELS`_context{`resulttype*#21`}[l!`%`_labelidx{i#6046}.0])] +[visit_exp (C, `%`_resulttype([`REF`_valtype(?(), `EXN`_heaptype)]), C.`LABELS`_context[l!`%`_labelidx.0])] [visit_exp C] [visit_id C] not free -[visit_exp `%`_resulttype{`X*#5194`}([`REF`_valtype{`null?#719`, heaptype#721}(?(), `EXN`_heaptype)])] -[visit_exp `X*#5194`] -[visit_id X*#5194] -[visit_exp ([`REF`_valtype{`null?#719`, heaptype#721}(?(), `EXN`_heaptype)])] -[visit_exp [`REF`_valtype{`null?#719`, heaptype#721}(?(), `EXN`_heaptype)]] -[visit_exp `REF`_valtype{`null?#719`, heaptype#721}(?(), `EXN`_heaptype)] -[visit_exp `null?#719`] -[visit_id null?#719] -[visit_exp heaptype#721] -[visit_id heaptype#721] +[visit_exp `%`_resulttype([`REF`_valtype(?(), `EXN`_heaptype)])] +[visit_exp ([`REF`_valtype(?(), `EXN`_heaptype)])] +[visit_exp [`REF`_valtype(?(), `EXN`_heaptype)]] +[visit_exp `REF`_valtype(?(), `EXN`_heaptype)] [visit_exp (?(), `EXN`_heaptype)] [visit_exp ?()] [visit_exp `EXN`_heaptype] [visit_exp ()] -[visit_exp C.`LABELS`_context{`resulttype*#21`}[l!`%`_labelidx{i#6046}.0]] -[visit_exp C.`LABELS`_context{`resulttype*#21`}] +[visit_exp C.`LABELS`_context[l!`%`_labelidx.0]] +[visit_exp C.`LABELS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `resulttype*#21`] -[visit_id resulttype*#21] -[visit_exp l!`%`_labelidx{i#6046}.0] -[visit_exp l!`%`_labelidx{i#6046}] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] not free -[visit_exp i#6046] -[visit_id i#6046] -[check_dims] C X*#5225 X*#5274 heaptype#723 heaptype#725 ht localidx*#623 null?#721 resulttype#1035 +[check_dims] C ht [visit_exp C] [visit_id C] -[visit_exp `REF.NULL`_instr{heaptype#723}(ht)] -[visit_exp heaptype#723] -[visit_id heaptype#723] +[visit_exp `REF.NULL`_instr(ht)] [visit_exp (ht)] [visit_exp ht] [visit_id ht] -[visit_exp `%->_%%`_instrtype{resulttype#1035, `localidx*#623`}(`%`_resulttype{`X*#5225`}([]), [], `%`_resulttype{`X*#5274`}([`REF`_valtype{`null?#721`, heaptype#725}(?(`NULL`_null), ht)]))] -[visit_exp resulttype#1035] -[visit_id resulttype#1035] -[visit_exp `localidx*#623`] -[visit_id localidx*#623] -[visit_exp (`%`_resulttype{`X*#5225`}([]), [], `%`_resulttype{`X*#5274`}([`REF`_valtype{`null?#721`, heaptype#725}(?(`NULL`_null), ht)]))] -[visit_exp `%`_resulttype{`X*#5225`}([])] -[visit_exp `X*#5225`] -[visit_id X*#5225] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([`REF`_valtype(?(`NULL`_null), ht)]))] +[visit_exp (`%`_resulttype([]), [], `%`_resulttype([`REF`_valtype(?(`NULL`_null), ht)]))] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] [visit_exp []] -[visit_exp `%`_resulttype{`X*#5274`}([`REF`_valtype{`null?#721`, heaptype#725}(?(`NULL`_null), ht)])] -[visit_exp `X*#5274`] -[visit_id X*#5274] -[visit_exp ([`REF`_valtype{`null?#721`, heaptype#725}(?(`NULL`_null), ht)])] -[visit_exp [`REF`_valtype{`null?#721`, heaptype#725}(?(`NULL`_null), ht)]] -[visit_exp `REF`_valtype{`null?#721`, heaptype#725}(?(`NULL`_null), ht)] -[visit_exp `null?#721`] -[visit_id null?#721] -[visit_exp heaptype#725] -[visit_id heaptype#725] +[visit_exp `%`_resulttype([`REF`_valtype(?(`NULL`_null), ht)])] +[visit_exp ([`REF`_valtype(?(`NULL`_null), ht)])] +[visit_exp [`REF`_valtype(?(`NULL`_null), ht)]] +[visit_exp `REF`_valtype(?(`NULL`_null), ht)] [visit_exp (?(`NULL`_null), ht)] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] @@ -25535,119 +23162,77 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id C] not free [visit_exp ht] [visit_id ht] not free -[check_dims] C X*#5295 X*#5344 deftype*#36 dt funcidx#181 funcidx*#47 heaptype#727 i#6070 localidx*#635 null?#723 resulttype#1055 x +[check_dims] C dt x [visit_exp C] [visit_id C] -[visit_exp `REF.FUNC`_instr{funcidx#181}(x)] -[visit_exp funcidx#181] -[visit_id funcidx#181] +[visit_exp `REF.FUNC`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%->_%%`_instrtype{resulttype#1055, `localidx*#635`}(`%`_resulttype{`X*#5295`}([]), [], `%`_resulttype{`X*#5344`}([`REF`_valtype{`null?#723`, heaptype#727}(?(), (dt : deftype <: heaptype))]))] -[visit_exp resulttype#1055] -[visit_id resulttype#1055] -[visit_exp `localidx*#635`] -[visit_id localidx*#635] -[visit_exp (`%`_resulttype{`X*#5295`}([]), [], `%`_resulttype{`X*#5344`}([`REF`_valtype{`null?#723`, heaptype#727}(?(), (dt : deftype <: heaptype))]))] -[visit_exp `%`_resulttype{`X*#5295`}([])] -[visit_exp `X*#5295`] -[visit_id X*#5295] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([`REF`_valtype(?(), (dt : deftype <: heaptype))]))] +[visit_exp (`%`_resulttype([]), [], `%`_resulttype([`REF`_valtype(?(), (dt : deftype <: heaptype))]))] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] [visit_exp []] -[visit_exp `%`_resulttype{`X*#5344`}([`REF`_valtype{`null?#723`, heaptype#727}(?(), (dt : deftype <: heaptype))])] -[visit_exp `X*#5344`] -[visit_id X*#5344] -[visit_exp ([`REF`_valtype{`null?#723`, heaptype#727}(?(), (dt : deftype <: heaptype))])] -[visit_exp [`REF`_valtype{`null?#723`, heaptype#727}(?(), (dt : deftype <: heaptype))]] -[visit_exp `REF`_valtype{`null?#723`, heaptype#727}(?(), (dt : deftype <: heaptype))] -[visit_exp `null?#723`] -[visit_id null?#723] -[visit_exp heaptype#727] -[visit_id heaptype#727] +[visit_exp `%`_resulttype([`REF`_valtype(?(), (dt : deftype <: heaptype))])] +[visit_exp ([`REF`_valtype(?(), (dt : deftype <: heaptype))])] +[visit_exp [`REF`_valtype(?(), (dt : deftype <: heaptype))]] +[visit_exp `REF`_valtype(?(), (dt : deftype <: heaptype))] [visit_exp (?(), (dt : deftype <: heaptype))] [visit_exp ?()] [visit_exp (dt : deftype <: heaptype)] [visit_exp dt] [visit_id dt] -[visit_exp (C.`FUNCS`_context{`deftype*#36`}[x!`%`_idx{i#6070}.0] = dt)] -[visit_exp C.`FUNCS`_context{`deftype*#36`}[x!`%`_idx{i#6070}.0]] -[visit_exp C.`FUNCS`_context{`deftype*#36`}] +[visit_exp (C.`FUNCS`_context[x!`%`_idx.0] = dt)] +[visit_exp C.`FUNCS`_context[x!`%`_idx.0]] +[visit_exp C.`FUNCS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `deftype*#36`] -[visit_id deftype*#36] -[visit_exp x!`%`_idx{i#6070}.0] -[visit_exp x!`%`_idx{i#6070}] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] [visit_exp x] [visit_id x] not free -[visit_exp i#6070] -[visit_id i#6070] [visit_exp dt] [visit_id dt] not free -[visit_exp (x <- C.`REFS`_context{`funcidx*#47`})] +[visit_exp (x <- C.`REFS`_context)] [visit_exp x] [visit_id x] not free -[visit_exp C.`REFS`_context{`funcidx*#47`}] +[visit_exp C.`REFS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `funcidx*#47`] -[visit_id funcidx*#47] -[check_dims] C X*#5363 X*#5412 heaptype#729 localidx*#647 null?#725 resulttype#1075 +[check_dims] C [visit_exp C] [visit_id C] [visit_exp `REF.I31`_instr] [visit_exp ()] -[visit_exp `%->_%%`_instrtype{resulttype#1075, `localidx*#647`}(`%`_resulttype{`X*#5363`}([`I32`_valtype]), [], `%`_resulttype{`X*#5412`}([`REF`_valtype{`null?#725`, heaptype#729}(?(), `I31`_heaptype)]))] -[visit_exp resulttype#1075] -[visit_id resulttype#1075] -[visit_exp `localidx*#647`] -[visit_id localidx*#647] -[visit_exp (`%`_resulttype{`X*#5363`}([`I32`_valtype]), [], `%`_resulttype{`X*#5412`}([`REF`_valtype{`null?#725`, heaptype#729}(?(), `I31`_heaptype)]))] -[visit_exp `%`_resulttype{`X*#5363`}([`I32`_valtype])] -[visit_exp `X*#5363`] -[visit_id X*#5363] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([`I32`_valtype]), [], `%`_resulttype([`REF`_valtype(?(), `I31`_heaptype)]))] +[visit_exp (`%`_resulttype([`I32`_valtype]), [], `%`_resulttype([`REF`_valtype(?(), `I31`_heaptype)]))] +[visit_exp `%`_resulttype([`I32`_valtype])] [visit_exp ([`I32`_valtype])] [visit_exp [`I32`_valtype]] [visit_exp `I32`_valtype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#5412`}([`REF`_valtype{`null?#725`, heaptype#729}(?(), `I31`_heaptype)])] -[visit_exp `X*#5412`] -[visit_id X*#5412] -[visit_exp ([`REF`_valtype{`null?#725`, heaptype#729}(?(), `I31`_heaptype)])] -[visit_exp [`REF`_valtype{`null?#725`, heaptype#729}(?(), `I31`_heaptype)]] -[visit_exp `REF`_valtype{`null?#725`, heaptype#729}(?(), `I31`_heaptype)] -[visit_exp `null?#725`] -[visit_id null?#725] -[visit_exp heaptype#729] -[visit_id heaptype#729] +[visit_exp `%`_resulttype([`REF`_valtype(?(), `I31`_heaptype)])] +[visit_exp ([`REF`_valtype(?(), `I31`_heaptype)])] +[visit_exp [`REF`_valtype(?(), `I31`_heaptype)]] +[visit_exp `REF`_valtype(?(), `I31`_heaptype)] [visit_exp (?(), `I31`_heaptype)] [visit_exp ?()] [visit_exp `I31`_heaptype] [visit_exp ()] -[check_dims] C X*#5433 X*#5482 heaptype#731 ht localidx*#659 null?#727 resulttype#1095 +[check_dims] C ht [visit_exp C] [visit_id C] [visit_exp `REF.IS_NULL`_instr] [visit_exp ()] -[visit_exp `%->_%%`_instrtype{resulttype#1095, `localidx*#659`}(`%`_resulttype{`X*#5433`}([`REF`_valtype{`null?#727`, heaptype#731}(?(`NULL`_null), ht)]), [], `%`_resulttype{`X*#5482`}([`I32`_valtype]))] -[visit_exp resulttype#1095] -[visit_id resulttype#1095] -[visit_exp `localidx*#659`] -[visit_id localidx*#659] -[visit_exp (`%`_resulttype{`X*#5433`}([`REF`_valtype{`null?#727`, heaptype#731}(?(`NULL`_null), ht)]), [], `%`_resulttype{`X*#5482`}([`I32`_valtype]))] -[visit_exp `%`_resulttype{`X*#5433`}([`REF`_valtype{`null?#727`, heaptype#731}(?(`NULL`_null), ht)])] -[visit_exp `X*#5433`] -[visit_id X*#5433] -[visit_exp ([`REF`_valtype{`null?#727`, heaptype#731}(?(`NULL`_null), ht)])] -[visit_exp [`REF`_valtype{`null?#727`, heaptype#731}(?(`NULL`_null), ht)]] -[visit_exp `REF`_valtype{`null?#727`, heaptype#731}(?(`NULL`_null), ht)] -[visit_exp `null?#727`] -[visit_id null?#727] -[visit_exp heaptype#731] -[visit_id heaptype#731] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([`REF`_valtype(?(`NULL`_null), ht)]), [], `%`_resulttype([`I32`_valtype]))] +[visit_exp (`%`_resulttype([`REF`_valtype(?(`NULL`_null), ht)]), [], `%`_resulttype([`I32`_valtype]))] +[visit_exp `%`_resulttype([`REF`_valtype(?(`NULL`_null), ht)])] +[visit_exp ([`REF`_valtype(?(`NULL`_null), ht)])] +[visit_exp [`REF`_valtype(?(`NULL`_null), ht)]] +[visit_exp `REF`_valtype(?(`NULL`_null), ht)] [visit_exp (?(`NULL`_null), ht)] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] @@ -25655,9 +23240,7 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp ht] [visit_id ht] [visit_exp []] -[visit_exp `%`_resulttype{`X*#5482`}([`I32`_valtype])] -[visit_exp `X*#5482`] -[visit_id X*#5482] +[visit_exp `%`_resulttype([`I32`_valtype])] [visit_exp ([`I32`_valtype])] [visit_exp [`I32`_valtype]] [visit_exp `I32`_valtype] @@ -25667,27 +23250,17 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id C] not free [visit_exp ht] [visit_id ht] not free -[check_dims] C X*#5503 X*#5552 heaptype#733 heaptype#735 ht localidx*#671 null?#729 null?#731 resulttype#1115 +[check_dims] C ht [visit_exp C] [visit_id C] [visit_exp `REF.AS_NON_NULL`_instr] [visit_exp ()] -[visit_exp `%->_%%`_instrtype{resulttype#1115, `localidx*#671`}(`%`_resulttype{`X*#5503`}([`REF`_valtype{`null?#729`, heaptype#733}(?(`NULL`_null), ht)]), [], `%`_resulttype{`X*#5552`}([`REF`_valtype{`null?#731`, heaptype#735}(?(), ht)]))] -[visit_exp resulttype#1115] -[visit_id resulttype#1115] -[visit_exp `localidx*#671`] -[visit_id localidx*#671] -[visit_exp (`%`_resulttype{`X*#5503`}([`REF`_valtype{`null?#729`, heaptype#733}(?(`NULL`_null), ht)]), [], `%`_resulttype{`X*#5552`}([`REF`_valtype{`null?#731`, heaptype#735}(?(), ht)]))] -[visit_exp `%`_resulttype{`X*#5503`}([`REF`_valtype{`null?#729`, heaptype#733}(?(`NULL`_null), ht)])] -[visit_exp `X*#5503`] -[visit_id X*#5503] -[visit_exp ([`REF`_valtype{`null?#729`, heaptype#733}(?(`NULL`_null), ht)])] -[visit_exp [`REF`_valtype{`null?#729`, heaptype#733}(?(`NULL`_null), ht)]] -[visit_exp `REF`_valtype{`null?#729`, heaptype#733}(?(`NULL`_null), ht)] -[visit_exp `null?#729`] -[visit_id null?#729] -[visit_exp heaptype#733] -[visit_id heaptype#733] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([`REF`_valtype(?(`NULL`_null), ht)]), [], `%`_resulttype([`REF`_valtype(?(), ht)]))] +[visit_exp (`%`_resulttype([`REF`_valtype(?(`NULL`_null), ht)]), [], `%`_resulttype([`REF`_valtype(?(), ht)]))] +[visit_exp `%`_resulttype([`REF`_valtype(?(`NULL`_null), ht)])] +[visit_exp ([`REF`_valtype(?(`NULL`_null), ht)])] +[visit_exp [`REF`_valtype(?(`NULL`_null), ht)]] +[visit_exp `REF`_valtype(?(`NULL`_null), ht)] [visit_exp (?(`NULL`_null), ht)] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] @@ -25695,16 +23268,10 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp ht] [visit_id ht] [visit_exp []] -[visit_exp `%`_resulttype{`X*#5552`}([`REF`_valtype{`null?#731`, heaptype#735}(?(), ht)])] -[visit_exp `X*#5552`] -[visit_id X*#5552] -[visit_exp ([`REF`_valtype{`null?#731`, heaptype#735}(?(), ht)])] -[visit_exp [`REF`_valtype{`null?#731`, heaptype#735}(?(), ht)]] -[visit_exp `REF`_valtype{`null?#731`, heaptype#735}(?(), ht)] -[visit_exp `null?#731`] -[visit_id null?#731] -[visit_exp heaptype#735] -[visit_id heaptype#735] +[visit_exp `%`_resulttype([`REF`_valtype(?(), ht)])] +[visit_exp ([`REF`_valtype(?(), ht)])] +[visit_exp [`REF`_valtype(?(), ht)]] +[visit_exp `REF`_valtype(?(), ht)] [visit_exp (?(), ht)] [visit_exp ?()] [visit_exp ht] @@ -25714,38 +23281,24 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id C] not free [visit_exp ht] [visit_id ht] not free -[check_dims] C X*#5573 X*#5622 heaptype#737 heaptype#739 localidx*#683 null?#733 null?#735 resulttype#1135 +[check_dims] C [visit_exp C] [visit_id C] [visit_exp `REF.EQ`_instr] [visit_exp ()] -[visit_exp `%->_%%`_instrtype{resulttype#1135, `localidx*#683`}(`%`_resulttype{`X*#5573`}([`REF`_valtype{`null?#733`, heaptype#737}(?(`NULL`_null), `EQ`_heaptype) `REF`_valtype{`null?#735`, heaptype#739}(?(`NULL`_null), `EQ`_heaptype)]), [], `%`_resulttype{`X*#5622`}([`I32`_valtype]))] -[visit_exp resulttype#1135] -[visit_id resulttype#1135] -[visit_exp `localidx*#683`] -[visit_id localidx*#683] -[visit_exp (`%`_resulttype{`X*#5573`}([`REF`_valtype{`null?#733`, heaptype#737}(?(`NULL`_null), `EQ`_heaptype) `REF`_valtype{`null?#735`, heaptype#739}(?(`NULL`_null), `EQ`_heaptype)]), [], `%`_resulttype{`X*#5622`}([`I32`_valtype]))] -[visit_exp `%`_resulttype{`X*#5573`}([`REF`_valtype{`null?#733`, heaptype#737}(?(`NULL`_null), `EQ`_heaptype) `REF`_valtype{`null?#735`, heaptype#739}(?(`NULL`_null), `EQ`_heaptype)])] -[visit_exp `X*#5573`] -[visit_id X*#5573] -[visit_exp ([`REF`_valtype{`null?#733`, heaptype#737}(?(`NULL`_null), `EQ`_heaptype) `REF`_valtype{`null?#735`, heaptype#739}(?(`NULL`_null), `EQ`_heaptype)])] -[visit_exp [`REF`_valtype{`null?#733`, heaptype#737}(?(`NULL`_null), `EQ`_heaptype) `REF`_valtype{`null?#735`, heaptype#739}(?(`NULL`_null), `EQ`_heaptype)]] -[visit_exp `REF`_valtype{`null?#733`, heaptype#737}(?(`NULL`_null), `EQ`_heaptype)] -[visit_exp `null?#733`] -[visit_id null?#733] -[visit_exp heaptype#737] -[visit_id heaptype#737] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([`REF`_valtype(?(`NULL`_null), `EQ`_heaptype) `REF`_valtype(?(`NULL`_null), `EQ`_heaptype)]), [], `%`_resulttype([`I32`_valtype]))] +[visit_exp (`%`_resulttype([`REF`_valtype(?(`NULL`_null), `EQ`_heaptype) `REF`_valtype(?(`NULL`_null), `EQ`_heaptype)]), [], `%`_resulttype([`I32`_valtype]))] +[visit_exp `%`_resulttype([`REF`_valtype(?(`NULL`_null), `EQ`_heaptype) `REF`_valtype(?(`NULL`_null), `EQ`_heaptype)])] +[visit_exp ([`REF`_valtype(?(`NULL`_null), `EQ`_heaptype) `REF`_valtype(?(`NULL`_null), `EQ`_heaptype)])] +[visit_exp [`REF`_valtype(?(`NULL`_null), `EQ`_heaptype) `REF`_valtype(?(`NULL`_null), `EQ`_heaptype)]] +[visit_exp `REF`_valtype(?(`NULL`_null), `EQ`_heaptype)] [visit_exp (?(`NULL`_null), `EQ`_heaptype)] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] [visit_exp ()] [visit_exp `EQ`_heaptype] [visit_exp ()] -[visit_exp `REF`_valtype{`null?#735`, heaptype#739}(?(`NULL`_null), `EQ`_heaptype)] -[visit_exp `null?#735`] -[visit_id null?#735] -[visit_exp heaptype#739] -[visit_id heaptype#739] +[visit_exp `REF`_valtype(?(`NULL`_null), `EQ`_heaptype)] [visit_exp (?(`NULL`_null), `EQ`_heaptype)] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] @@ -25753,40 +23306,28 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `EQ`_heaptype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#5622`}([`I32`_valtype])] -[visit_exp `X*#5622`] -[visit_id X*#5622] +[visit_exp `%`_resulttype([`I32`_valtype])] [visit_exp ([`I32`_valtype])] [visit_exp [`I32`_valtype]] [visit_exp `I32`_valtype] [visit_exp ()] -[check_dims] C X*#5633 X*#5703 localidx*#695 reftype#403 resulttype#1155 rt rt' +[check_dims] C rt rt' [visit_exp C] [visit_id C] -[visit_exp `REF.TEST`_instr{reftype#403}(rt)] -[visit_exp reftype#403] -[visit_id reftype#403] +[visit_exp `REF.TEST`_instr(rt)] [visit_exp (rt)] [visit_exp rt] [visit_id rt] -[visit_exp `%->_%%`_instrtype{resulttype#1155, `localidx*#695`}(`%`_resulttype{`X*#5633`}([(rt' : reftype <: valtype)]), [], `%`_resulttype{`X*#5703`}([`I32`_valtype]))] -[visit_exp resulttype#1155] -[visit_id resulttype#1155] -[visit_exp `localidx*#695`] -[visit_id localidx*#695] -[visit_exp (`%`_resulttype{`X*#5633`}([(rt' : reftype <: valtype)]), [], `%`_resulttype{`X*#5703`}([`I32`_valtype]))] -[visit_exp `%`_resulttype{`X*#5633`}([(rt' : reftype <: valtype)])] -[visit_exp `X*#5633`] -[visit_id X*#5633] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([`I32`_valtype]))] +[visit_exp (`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([`I32`_valtype]))] +[visit_exp `%`_resulttype([(rt' : reftype <: valtype)])] [visit_exp ([(rt' : reftype <: valtype)])] [visit_exp [(rt' : reftype <: valtype)]] [visit_exp (rt' : reftype <: valtype)] [visit_exp rt'] [visit_id rt'] [visit_exp []] -[visit_exp `%`_resulttype{`X*#5703`}([`I32`_valtype])] -[visit_exp `X*#5703`] -[visit_id X*#5703] +[visit_exp `%`_resulttype([`I32`_valtype])] [visit_exp ([`I32`_valtype])] [visit_exp [`I32`_valtype]] [visit_exp `I32`_valtype] @@ -25808,33 +23349,23 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id rt] not free [visit_exp rt'] [visit_id rt'] not free -[check_dims] C X*#5714 X*#5784 localidx*#707 reftype#405 resulttype#1175 rt rt' +[check_dims] C rt rt' [visit_exp C] [visit_id C] -[visit_exp `REF.CAST`_instr{reftype#405}(rt)] -[visit_exp reftype#405] -[visit_id reftype#405] +[visit_exp `REF.CAST`_instr(rt)] [visit_exp (rt)] [visit_exp rt] [visit_id rt] -[visit_exp `%->_%%`_instrtype{resulttype#1175, `localidx*#707`}(`%`_resulttype{`X*#5714`}([(rt' : reftype <: valtype)]), [], `%`_resulttype{`X*#5784`}([(rt : reftype <: valtype)]))] -[visit_exp resulttype#1175] -[visit_id resulttype#1175] -[visit_exp `localidx*#707`] -[visit_id localidx*#707] -[visit_exp (`%`_resulttype{`X*#5714`}([(rt' : reftype <: valtype)]), [], `%`_resulttype{`X*#5784`}([(rt : reftype <: valtype)]))] -[visit_exp `%`_resulttype{`X*#5714`}([(rt' : reftype <: valtype)])] -[visit_exp `X*#5714`] -[visit_id X*#5714] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))] +[visit_exp (`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))] +[visit_exp `%`_resulttype([(rt' : reftype <: valtype)])] [visit_exp ([(rt' : reftype <: valtype)])] [visit_exp [(rt' : reftype <: valtype)]] [visit_exp (rt' : reftype <: valtype)] [visit_exp rt'] [visit_id rt'] [visit_exp []] -[visit_exp `%`_resulttype{`X*#5784`}([(rt : reftype <: valtype)])] -[visit_exp `X*#5784`] -[visit_id X*#5784] +[visit_exp `%`_resulttype([(rt : reftype <: valtype)])] [visit_exp ([(rt : reftype <: valtype)])] [visit_exp [(rt : reftype <: valtype)]] [visit_exp (rt : reftype <: valtype)] @@ -25857,31 +23388,19 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id rt] not free [visit_exp rt'] [visit_id rt'] not free -[check_dims] C X*#5805 X*#5854 heaptype#805 localidx*#719 null?#801 resulttype#1195 sx sx#5 +[check_dims] C sx [visit_exp C] [visit_id C] -[visit_exp `I31.GET`_instr{sx#5}(sx)] -[visit_exp sx#5] -[visit_id sx#5] +[visit_exp `I31.GET`_instr(sx)] [visit_exp (sx)] [visit_exp sx] [visit_id sx] -[visit_exp `%->_%%`_instrtype{resulttype#1195, `localidx*#719`}(`%`_resulttype{`X*#5805`}([`REF`_valtype{`null?#801`, heaptype#805}(?(`NULL`_null), `I31`_heaptype)]), [], `%`_resulttype{`X*#5854`}([`I32`_valtype]))] -[visit_exp resulttype#1195] -[visit_id resulttype#1195] -[visit_exp `localidx*#719`] -[visit_id localidx*#719] -[visit_exp (`%`_resulttype{`X*#5805`}([`REF`_valtype{`null?#801`, heaptype#805}(?(`NULL`_null), `I31`_heaptype)]), [], `%`_resulttype{`X*#5854`}([`I32`_valtype]))] -[visit_exp `%`_resulttype{`X*#5805`}([`REF`_valtype{`null?#801`, heaptype#805}(?(`NULL`_null), `I31`_heaptype)])] -[visit_exp `X*#5805`] -[visit_id X*#5805] -[visit_exp ([`REF`_valtype{`null?#801`, heaptype#805}(?(`NULL`_null), `I31`_heaptype)])] -[visit_exp [`REF`_valtype{`null?#801`, heaptype#805}(?(`NULL`_null), `I31`_heaptype)]] -[visit_exp `REF`_valtype{`null?#801`, heaptype#805}(?(`NULL`_null), `I31`_heaptype)] -[visit_exp `null?#801`] -[visit_id null?#801] -[visit_exp heaptype#805] -[visit_id heaptype#805] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([`REF`_valtype(?(`NULL`_null), `I31`_heaptype)]), [], `%`_resulttype([`I32`_valtype]))] +[visit_exp (`%`_resulttype([`REF`_valtype(?(`NULL`_null), `I31`_heaptype)]), [], `%`_resulttype([`I32`_valtype]))] +[visit_exp `%`_resulttype([`REF`_valtype(?(`NULL`_null), `I31`_heaptype)])] +[visit_exp ([`REF`_valtype(?(`NULL`_null), `I31`_heaptype)])] +[visit_exp [`REF`_valtype(?(`NULL`_null), `I31`_heaptype)]] +[visit_exp `REF`_valtype(?(`NULL`_null), `I31`_heaptype)] [visit_exp (?(`NULL`_null), `I31`_heaptype)] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] @@ -25889,31 +23408,21 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_exp `I31`_heaptype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#5854`}([`I32`_valtype])] -[visit_exp `X*#5854`] -[visit_id X*#5854] +[visit_exp `%`_resulttype([`I32`_valtype])] [visit_exp ([`I32`_valtype])] [visit_exp [`I32`_valtype]] [visit_exp `I32`_valtype] [visit_exp ()] -[check_dims] C X*#5865 X*#5916 X*#5929 deftype*#37 heaptype#807 i#6131 localidx*#731 mut mut?#573 null?#803 resulttype#1215 storagetype#337 typeidx#406 typeidx#408 x zt +[check_dims] C mut x zt [visit_exp C] [visit_id C] -[visit_exp `STRUCT.NEW`_instr{typeidx#406}(x)] -[visit_exp typeidx#406] -[visit_id typeidx#406] +[visit_exp `STRUCT.NEW`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%->_%%`_instrtype{resulttype#1215, `localidx*#731`}(`%`_resulttype{`X*#5865`}($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype{`X*#5916`}([`REF`_valtype{`null?#803`, heaptype#807}(?(), `_IDX`_heaptype{typeidx#408}(x))]))] -[visit_exp resulttype#1215] -[visit_id resulttype#1215] -[visit_exp `localidx*#731`] -[visit_id localidx*#731] -[visit_exp (`%`_resulttype{`X*#5865`}($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype{`X*#5916`}([`REF`_valtype{`null?#803`, heaptype#807}(?(), `_IDX`_heaptype{typeidx#408}(x))]))] -[visit_exp `%`_resulttype{`X*#5865`}($unpack(zt)*{zt <- `zt*`})] -[visit_exp `X*#5865`] -[visit_id X*#5865] +[visit_exp `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([`REF`_valtype(?(), `_IDX`_heaptype(x))]))] +[visit_exp (`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([`REF`_valtype(?(), `_IDX`_heaptype(x))]))] +[visit_exp `%`_resulttype($unpack(zt)*{zt <- `zt*`})] [visit_exp ($unpack(zt)*{zt <- `zt*`})] [visit_exp $unpack(zt)*{zt <- `zt*`}] [scope_enter zt] @@ -25926,53 +23435,33 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id zt*] no dims [visit_id zt*] [visit_exp []] -[visit_exp `%`_resulttype{`X*#5916`}([`REF`_valtype{`null?#803`, heaptype#807}(?(), `_IDX`_heaptype{typeidx#408}(x))])] -[visit_exp `X*#5916`] -[visit_id X*#5916] -[visit_exp ([`REF`_valtype{`null?#803`, heaptype#807}(?(), `_IDX`_heaptype{typeidx#408}(x))])] -[visit_exp [`REF`_valtype{`null?#803`, heaptype#807}(?(), `_IDX`_heaptype{typeidx#408}(x))]] -[visit_exp `REF`_valtype{`null?#803`, heaptype#807}(?(), `_IDX`_heaptype{typeidx#408}(x))] -[visit_exp `null?#803`] -[visit_id null?#803] -[visit_exp heaptype#807] -[visit_id heaptype#807] -[visit_exp (?(), `_IDX`_heaptype{typeidx#408}(x))] +[visit_exp `%`_resulttype([`REF`_valtype(?(), `_IDX`_heaptype(x))])] +[visit_exp ([`REF`_valtype(?(), `_IDX`_heaptype(x))])] +[visit_exp [`REF`_valtype(?(), `_IDX`_heaptype(x))]] +[visit_exp `REF`_valtype(?(), `_IDX`_heaptype(x))] +[visit_exp (?(), `_IDX`_heaptype(x))] [visit_exp ?()] -[visit_exp `_IDX`_heaptype{typeidx#408}(x)] -[visit_exp typeidx#408] -[visit_id typeidx#408] +[visit_exp `_IDX`_heaptype(x)] [visit_exp (x)] [visit_exp x] [visit_id x] not free -[visit_exp (C.`TYPES`_context{`deftype*#37`}[x!`%`_idx{i#6131}.0], `STRUCT`_comptype(`%`_list{`X*#5929`}(`%%`_fieldtype{`mut?#573`, storagetype#337}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#573` <- `mut?#573*`, storagetype#337 <- `storagetype#337*`, zt <- `zt*`})))] -[visit_exp C.`TYPES`_context{`deftype*#37`}[x!`%`_idx{i#6131}.0]] -[visit_exp C.`TYPES`_context{`deftype*#37`}] +[visit_exp (C.`TYPES`_context[x!`%`_idx.0], `STRUCT`_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`})))] +[visit_exp C.`TYPES`_context[x!`%`_idx.0]] +[visit_exp C.`TYPES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `deftype*#37`] -[visit_id deftype*#37] -[visit_exp x!`%`_idx{i#6131}.0] -[visit_exp x!`%`_idx{i#6131}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#6131] -[visit_id i#6131] -[visit_exp `STRUCT`_comptype(`%`_list{`X*#5929`}(`%%`_fieldtype{`mut?#573`, storagetype#337}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#573` <- `mut?#573*`, storagetype#337 <- `storagetype#337*`, zt <- `zt*`}))] -[visit_exp (`%`_list{`X*#5929`}(`%%`_fieldtype{`mut?#573`, storagetype#337}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#573` <- `mut?#573*`, storagetype#337 <- `storagetype#337*`, zt <- `zt*`}))] -[visit_exp `%`_list{`X*#5929`}(`%%`_fieldtype{`mut?#573`, storagetype#337}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#573` <- `mut?#573*`, storagetype#337 <- `storagetype#337*`, zt <- `zt*`})] -[visit_exp `X*#5929`] -[visit_id X*#5929] -[visit_exp (`%%`_fieldtype{`mut?#573`, storagetype#337}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#573` <- `mut?#573*`, storagetype#337 <- `storagetype#337*`, zt <- `zt*`})] -[visit_exp `%%`_fieldtype{`mut?#573`, storagetype#337}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#573` <- `mut?#573*`, storagetype#337 <- `storagetype#337*`, zt <- `zt*`}] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `STRUCT`_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))] +[visit_exp (`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))] +[visit_exp `%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`})] +[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`})] +[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}] [scope_enter mut?] -[scope_enter mut?#573] -[scope_enter storagetype#337] [scope_enter zt] -[visit_exp `%%`_fieldtype{`mut?#573`, storagetype#337}(mut?{mut <- `mut?`}, zt)] -[visit_exp `mut?#573`] -[visit_id mut?#573] not free -[visit_exp storagetype#337] -[visit_id storagetype#337] not free +[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)] [visit_exp (mut?{mut <- `mut?`}, zt)] [visit_exp mut?{mut <- `mut?`}] [scope_enter mut] @@ -25987,93 +23476,55 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id zt] not free [visit_id mut?] not free [visit_id mut?] no dims -[visit_id mut?#573] not free -[visit_id storagetype#337] not free [visit_id zt] not free [scope_exit zt] -[scope_exit storagetype#337] -[scope_exit mut?#573] [scope_exit mut?] [visit_exp `mut?*`] [visit_id mut?*] no dims [visit_id mut?*] -[visit_exp `mut?#573*`] -[visit_id mut?#573*] no dims -[visit_id mut?#573*] -[visit_exp `storagetype#337*`] -[visit_id storagetype#337*] no dims -[visit_id storagetype#337*] [visit_exp `zt*`] [visit_id zt*] not free [visit_id zt*] no dims -[check_dims] C X*#5952 X*#6001 X*#6014 deftype*#38 heaptype#809 i#6169 localidx*#743 mut mut?#591 null?#805 resulttype#1235 storagetype#355 typeidx#410 typeidx#412 x zt +[check_dims] C mut x zt [visit_exp C] [visit_id C] -[visit_exp `STRUCT.NEW_DEFAULT`_instr{typeidx#410}(x)] -[visit_exp typeidx#410] -[visit_id typeidx#410] +[visit_exp `STRUCT.NEW_DEFAULT`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%->_%%`_instrtype{resulttype#1235, `localidx*#743`}(`%`_resulttype{`X*#5952`}([]), [], `%`_resulttype{`X*#6001`}([`REF`_valtype{`null?#805`, heaptype#809}(?(), `_IDX`_heaptype{typeidx#412}(x))]))] -[visit_exp resulttype#1235] -[visit_id resulttype#1235] -[visit_exp `localidx*#743`] -[visit_id localidx*#743] -[visit_exp (`%`_resulttype{`X*#5952`}([]), [], `%`_resulttype{`X*#6001`}([`REF`_valtype{`null?#805`, heaptype#809}(?(), `_IDX`_heaptype{typeidx#412}(x))]))] -[visit_exp `%`_resulttype{`X*#5952`}([])] -[visit_exp `X*#5952`] -[visit_id X*#5952] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([`REF`_valtype(?(), `_IDX`_heaptype(x))]))] +[visit_exp (`%`_resulttype([]), [], `%`_resulttype([`REF`_valtype(?(), `_IDX`_heaptype(x))]))] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] [visit_exp []] -[visit_exp `%`_resulttype{`X*#6001`}([`REF`_valtype{`null?#805`, heaptype#809}(?(), `_IDX`_heaptype{typeidx#412}(x))])] -[visit_exp `X*#6001`] -[visit_id X*#6001] -[visit_exp ([`REF`_valtype{`null?#805`, heaptype#809}(?(), `_IDX`_heaptype{typeidx#412}(x))])] -[visit_exp [`REF`_valtype{`null?#805`, heaptype#809}(?(), `_IDX`_heaptype{typeidx#412}(x))]] -[visit_exp `REF`_valtype{`null?#805`, heaptype#809}(?(), `_IDX`_heaptype{typeidx#412}(x))] -[visit_exp `null?#805`] -[visit_id null?#805] -[visit_exp heaptype#809] -[visit_id heaptype#809] -[visit_exp (?(), `_IDX`_heaptype{typeidx#412}(x))] +[visit_exp `%`_resulttype([`REF`_valtype(?(), `_IDX`_heaptype(x))])] +[visit_exp ([`REF`_valtype(?(), `_IDX`_heaptype(x))])] +[visit_exp [`REF`_valtype(?(), `_IDX`_heaptype(x))]] +[visit_exp `REF`_valtype(?(), `_IDX`_heaptype(x))] +[visit_exp (?(), `_IDX`_heaptype(x))] [visit_exp ?()] -[visit_exp `_IDX`_heaptype{typeidx#412}(x)] -[visit_exp typeidx#412] -[visit_id typeidx#412] +[visit_exp `_IDX`_heaptype(x)] [visit_exp (x)] [visit_exp x] [visit_id x] not free -[visit_exp (C.`TYPES`_context{`deftype*#38`}[x!`%`_idx{i#6169}.0], `STRUCT`_comptype(`%`_list{`X*#6014`}(`%%`_fieldtype{`mut?#591`, storagetype#355}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#591` <- `mut?#591*`, storagetype#355 <- `storagetype#355*`, zt <- `zt*`})))] -[visit_exp C.`TYPES`_context{`deftype*#38`}[x!`%`_idx{i#6169}.0]] -[visit_exp C.`TYPES`_context{`deftype*#38`}] +[visit_exp (C.`TYPES`_context[x!`%`_idx.0], `STRUCT`_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`})))] +[visit_exp C.`TYPES`_context[x!`%`_idx.0]] +[visit_exp C.`TYPES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `deftype*#38`] -[visit_id deftype*#38] -[visit_exp x!`%`_idx{i#6169}.0] -[visit_exp x!`%`_idx{i#6169}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#6169] -[visit_id i#6169] -[visit_exp `STRUCT`_comptype(`%`_list{`X*#6014`}(`%%`_fieldtype{`mut?#591`, storagetype#355}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#591` <- `mut?#591*`, storagetype#355 <- `storagetype#355*`, zt <- `zt*`}))] -[visit_exp (`%`_list{`X*#6014`}(`%%`_fieldtype{`mut?#591`, storagetype#355}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#591` <- `mut?#591*`, storagetype#355 <- `storagetype#355*`, zt <- `zt*`}))] -[visit_exp `%`_list{`X*#6014`}(`%%`_fieldtype{`mut?#591`, storagetype#355}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#591` <- `mut?#591*`, storagetype#355 <- `storagetype#355*`, zt <- `zt*`})] -[visit_exp `X*#6014`] -[visit_id X*#6014] -[visit_exp (`%%`_fieldtype{`mut?#591`, storagetype#355}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#591` <- `mut?#591*`, storagetype#355 <- `storagetype#355*`, zt <- `zt*`})] -[visit_exp `%%`_fieldtype{`mut?#591`, storagetype#355}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#591` <- `mut?#591*`, storagetype#355 <- `storagetype#355*`, zt <- `zt*`}] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `STRUCT`_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))] +[visit_exp (`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))] +[visit_exp `%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`})] +[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`})] +[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}] [scope_enter mut?] -[scope_enter mut?#591] -[scope_enter storagetype#355] [scope_enter zt] -[visit_exp `%%`_fieldtype{`mut?#591`, storagetype#355}(mut?{mut <- `mut?`}, zt)] -[visit_exp `mut?#591`] -[visit_id mut?#591] not free -[visit_exp storagetype#355] -[visit_id storagetype#355] not free +[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)] [visit_exp (mut?{mut <- `mut?`}, zt)] [visit_exp mut?{mut <- `mut?`}] [scope_enter mut] @@ -26088,22 +23539,12 @@ DecD unrollht(context : context, heaptype : heaptype) : subtype [visit_id zt] not free [visit_id mut?] not free [visit_id mut?] no dims -[visit_id mut?#591] not free -[visit_id storagetype#355] not free [visit_id zt] not free [scope_exit zt] -[scope_exit storagetype#355] -[scope_exit mut?#591] [scope_exit mut?] [visit_exp `mut?*`] [visit_id mut?*] no dims [visit_id mut?*] -[visit_exp `mut?#591*`] -[visit_id mut?#591*] no dims -[visit_id mut?#591*] -[visit_exp `storagetype#355*`] -[visit_id storagetype#355*] no dims -[visit_id storagetype#355*] [visit_exp `zt*`] [visit_id zt*] no dims [visit_id zt*] @@ -26132,16 +23573,10 @@ DecD 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)) -[check_dims] C X*#6037 X*#6086 X*#6099 deftype*#39 ft heaptype#811 i i#6236 i#6246 localidx*#755 mut mut?#617 null?#807 resulttype#1255 storagetype#381 sx sx?#7 typeidx#414 typeidx#416 u32#8 x zt +[check_dims] C ft i mut sx x zt [visit_exp C] [visit_id C] -[visit_exp `STRUCT.GET`_instr{`sx?#7`, typeidx#414, u32#8}(sx?{sx <- `sx?`}, x, i)] -[visit_exp `sx?#7`] -[visit_id sx?#7] -[visit_exp typeidx#414] -[visit_id typeidx#414] -[visit_exp u32#8] -[visit_id u32#8] +[visit_exp `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)] [visit_exp (sx?{sx <- `sx?`}, x, i)] [visit_exp sx?{sx <- `sx?`}] [scope_enter sx] @@ -26156,59 +23591,39 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id x] [visit_exp i] [visit_id i] -[visit_exp `%->_%%`_instrtype{resulttype#1255, `localidx*#755`}(`%`_resulttype{`X*#6037`}([`REF`_valtype{`null?#807`, heaptype#811}(?(`NULL`_null), `_IDX`_heaptype{typeidx#416}(x))]), [], `%`_resulttype{`X*#6086`}([$unpack(zt)]))] -[visit_exp resulttype#1255] -[visit_id resulttype#1255] -[visit_exp `localidx*#755`] -[visit_id localidx*#755] -[visit_exp (`%`_resulttype{`X*#6037`}([`REF`_valtype{`null?#807`, heaptype#811}(?(`NULL`_null), `_IDX`_heaptype{typeidx#416}(x))]), [], `%`_resulttype{`X*#6086`}([$unpack(zt)]))] -[visit_exp `%`_resulttype{`X*#6037`}([`REF`_valtype{`null?#807`, heaptype#811}(?(`NULL`_null), `_IDX`_heaptype{typeidx#416}(x))])] -[visit_exp `X*#6037`] -[visit_id X*#6037] -[visit_exp ([`REF`_valtype{`null?#807`, heaptype#811}(?(`NULL`_null), `_IDX`_heaptype{typeidx#416}(x))])] -[visit_exp [`REF`_valtype{`null?#807`, heaptype#811}(?(`NULL`_null), `_IDX`_heaptype{typeidx#416}(x))]] -[visit_exp `REF`_valtype{`null?#807`, heaptype#811}(?(`NULL`_null), `_IDX`_heaptype{typeidx#416}(x))] -[visit_exp `null?#807`] -[visit_id null?#807] -[visit_exp heaptype#811] -[visit_id heaptype#811] -[visit_exp (?(`NULL`_null), `_IDX`_heaptype{typeidx#416}(x))] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))] +[visit_exp (`%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))] +[visit_exp `%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))])] +[visit_exp ([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))])] +[visit_exp [`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))]] +[visit_exp `REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))] +[visit_exp (?(`NULL`_null), `_IDX`_heaptype(x))] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] [visit_exp ()] -[visit_exp `_IDX`_heaptype{typeidx#416}(x)] -[visit_exp typeidx#416] -[visit_id typeidx#416] +[visit_exp `_IDX`_heaptype(x)] [visit_exp (x)] [visit_exp x] [visit_id x] not free [visit_exp []] -[visit_exp `%`_resulttype{`X*#6086`}([$unpack(zt)])] -[visit_exp `X*#6086`] -[visit_id X*#6086] +[visit_exp `%`_resulttype([$unpack(zt)])] [visit_exp ([$unpack(zt)])] [visit_exp [$unpack(zt)]] [visit_exp $unpack(zt)] [visit_exp zt] [visit_id zt] -[visit_exp (C.`TYPES`_context{`deftype*#39`}[x!`%`_idx{i#6236}.0], `STRUCT`_comptype(`%`_list{`X*#6099`}(ft*{ft <- `ft*`})))] -[visit_exp C.`TYPES`_context{`deftype*#39`}[x!`%`_idx{i#6236}.0]] -[visit_exp C.`TYPES`_context{`deftype*#39`}] +[visit_exp (C.`TYPES`_context[x!`%`_idx.0], `STRUCT`_comptype(`%`_list(ft*{ft <- `ft*`})))] +[visit_exp C.`TYPES`_context[x!`%`_idx.0]] +[visit_exp C.`TYPES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `deftype*#39`] -[visit_id deftype*#39] -[visit_exp x!`%`_idx{i#6236}.0] -[visit_exp x!`%`_idx{i#6236}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#6236] -[visit_id i#6236] -[visit_exp `STRUCT`_comptype(`%`_list{`X*#6099`}(ft*{ft <- `ft*`}))] -[visit_exp (`%`_list{`X*#6099`}(ft*{ft <- `ft*`}))] -[visit_exp `%`_list{`X*#6099`}(ft*{ft <- `ft*`})] -[visit_exp `X*#6099`] -[visit_id X*#6099] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `STRUCT`_comptype(`%`_list(ft*{ft <- `ft*`}))] +[visit_exp (`%`_list(ft*{ft <- `ft*`}))] +[visit_exp `%`_list(ft*{ft <- `ft*`})] [visit_exp (ft*{ft <- `ft*`})] [visit_exp ft*{ft <- `ft*`}] [scope_enter ft] @@ -26219,8 +23634,8 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `ft*`] [visit_id ft*] no dims [visit_id ft*] -[visit_exp (ft*{ft <- `ft*`}[i!`%`_u32{i#6246}.0] = `%%`_fieldtype{`mut?#617`, storagetype#381}(mut?{mut <- `mut?`}, zt))] -[visit_exp ft*{ft <- `ft*`}[i!`%`_u32{i#6246}.0]] +[visit_exp (ft*{ft <- `ft*`}[i!`%`_u32.0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt))] +[visit_exp ft*{ft <- `ft*`}[i!`%`_u32.0]] [visit_exp ft*{ft <- `ft*`}] [scope_enter ft] [visit_exp ft] @@ -26230,17 +23645,11 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `ft*`] [visit_id ft*] not free [visit_id ft*] no dims -[visit_exp i!`%`_u32{i#6246}.0] -[visit_exp i!`%`_u32{i#6246}] +[visit_exp i!`%`_u32.0] +[visit_exp i!`%`_u32] [visit_exp i] [visit_id i] not free -[visit_exp i#6246] -[visit_id i#6246] -[visit_exp `%%`_fieldtype{`mut?#617`, storagetype#381}(mut?{mut <- `mut?`}, zt)] -[visit_exp `mut?#617`] -[visit_id mut?#617] -[visit_exp storagetype#381] -[visit_id storagetype#381] +[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)] [visit_exp (mut?{mut <- `mut?`}, zt)] [visit_exp mut?{mut <- `mut?`}] [scope_enter mut] @@ -26268,42 +23677,26 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp $is_packtype(zt)] [visit_exp zt] [visit_id zt] not free -[check_dims] C X*#6122 X*#6171 X*#6184 deftype*#40 ft heaptype#813 i i#6298 i#6308 localidx*#767 mut?#643 null?#809 resulttype#1275 storagetype#407 typeidx#418 typeidx#420 u32#10 x zt +[check_dims] C ft i x zt [visit_exp C] [visit_id C] -[visit_exp `STRUCT.SET`_instr{typeidx#418, u32#10}(x, i)] -[visit_exp typeidx#418] -[visit_id typeidx#418] -[visit_exp u32#10] -[visit_id u32#10] +[visit_exp `STRUCT.SET`_instr(x, i)] [visit_exp (x, i)] [visit_exp x] [visit_id x] [visit_exp i] [visit_id i] -[visit_exp `%->_%%`_instrtype{resulttype#1275, `localidx*#767`}(`%`_resulttype{`X*#6122`}([`REF`_valtype{`null?#809`, heaptype#813}(?(`NULL`_null), `_IDX`_heaptype{typeidx#420}(x)) $unpack(zt)]), [], `%`_resulttype{`X*#6171`}([]))] -[visit_exp resulttype#1275] -[visit_id resulttype#1275] -[visit_exp `localidx*#767`] -[visit_id localidx*#767] -[visit_exp (`%`_resulttype{`X*#6122`}([`REF`_valtype{`null?#809`, heaptype#813}(?(`NULL`_null), `_IDX`_heaptype{typeidx#420}(x)) $unpack(zt)]), [], `%`_resulttype{`X*#6171`}([]))] -[visit_exp `%`_resulttype{`X*#6122`}([`REF`_valtype{`null?#809`, heaptype#813}(?(`NULL`_null), `_IDX`_heaptype{typeidx#420}(x)) $unpack(zt)])] -[visit_exp `X*#6122`] -[visit_id X*#6122] -[visit_exp ([`REF`_valtype{`null?#809`, heaptype#813}(?(`NULL`_null), `_IDX`_heaptype{typeidx#420}(x)) $unpack(zt)])] -[visit_exp [`REF`_valtype{`null?#809`, heaptype#813}(?(`NULL`_null), `_IDX`_heaptype{typeidx#420}(x)) $unpack(zt)]] -[visit_exp `REF`_valtype{`null?#809`, heaptype#813}(?(`NULL`_null), `_IDX`_heaptype{typeidx#420}(x))] -[visit_exp `null?#809`] -[visit_id null?#809] -[visit_exp heaptype#813] -[visit_id heaptype#813] -[visit_exp (?(`NULL`_null), `_IDX`_heaptype{typeidx#420}(x))] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))] +[visit_exp (`%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))] +[visit_exp `%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) $unpack(zt)])] +[visit_exp ([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) $unpack(zt)])] +[visit_exp [`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) $unpack(zt)]] +[visit_exp `REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))] +[visit_exp (?(`NULL`_null), `_IDX`_heaptype(x))] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] [visit_exp ()] -[visit_exp `_IDX`_heaptype{typeidx#420}(x)] -[visit_exp typeidx#420] -[visit_id typeidx#420] +[visit_exp `_IDX`_heaptype(x)] [visit_exp (x)] [visit_exp x] [visit_id x] not free @@ -26311,29 +23704,21 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp zt] [visit_id zt] [visit_exp []] -[visit_exp `%`_resulttype{`X*#6171`}([])] -[visit_exp `X*#6171`] -[visit_id X*#6171] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] -[visit_exp (C.`TYPES`_context{`deftype*#40`}[x!`%`_idx{i#6298}.0], `STRUCT`_comptype(`%`_list{`X*#6184`}(ft*{ft <- `ft*`})))] -[visit_exp C.`TYPES`_context{`deftype*#40`}[x!`%`_idx{i#6298}.0]] -[visit_exp C.`TYPES`_context{`deftype*#40`}] +[visit_exp (C.`TYPES`_context[x!`%`_idx.0], `STRUCT`_comptype(`%`_list(ft*{ft <- `ft*`})))] +[visit_exp C.`TYPES`_context[x!`%`_idx.0]] +[visit_exp C.`TYPES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `deftype*#40`] -[visit_id deftype*#40] -[visit_exp x!`%`_idx{i#6298}.0] -[visit_exp x!`%`_idx{i#6298}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#6298] -[visit_id i#6298] -[visit_exp `STRUCT`_comptype(`%`_list{`X*#6184`}(ft*{ft <- `ft*`}))] -[visit_exp (`%`_list{`X*#6184`}(ft*{ft <- `ft*`}))] -[visit_exp `%`_list{`X*#6184`}(ft*{ft <- `ft*`})] -[visit_exp `X*#6184`] -[visit_id X*#6184] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `STRUCT`_comptype(`%`_list(ft*{ft <- `ft*`}))] +[visit_exp (`%`_list(ft*{ft <- `ft*`}))] +[visit_exp `%`_list(ft*{ft <- `ft*`})] [visit_exp (ft*{ft <- `ft*`})] [visit_exp ft*{ft <- `ft*`}] [scope_enter ft] @@ -26344,8 +23729,8 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `ft*`] [visit_id ft*] no dims [visit_id ft*] -[visit_exp (ft*{ft <- `ft*`}[i!`%`_u32{i#6308}.0] = `%%`_fieldtype{`mut?#643`, storagetype#407}(?(`MUT`_mut), zt))] -[visit_exp ft*{ft <- `ft*`}[i!`%`_u32{i#6308}.0]] +[visit_exp (ft*{ft <- `ft*`}[i!`%`_u32.0] = `%%`_fieldtype(?(`MUT`_mut), zt))] +[visit_exp ft*{ft <- `ft*`}[i!`%`_u32.0]] [visit_exp ft*{ft <- `ft*`}] [scope_enter ft] [visit_exp ft] @@ -26355,41 +23740,27 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `ft*`] [visit_id ft*] not free [visit_id ft*] no dims -[visit_exp i!`%`_u32{i#6308}.0] -[visit_exp i!`%`_u32{i#6308}] +[visit_exp i!`%`_u32.0] +[visit_exp i!`%`_u32] [visit_exp i] [visit_id i] not free -[visit_exp i#6308] -[visit_id i#6308] -[visit_exp `%%`_fieldtype{`mut?#643`, storagetype#407}(?(`MUT`_mut), zt)] -[visit_exp `mut?#643`] -[visit_id mut?#643] -[visit_exp storagetype#407] -[visit_id storagetype#407] +[visit_exp `%%`_fieldtype(?(`MUT`_mut), zt)] [visit_exp (?(`MUT`_mut), zt)] [visit_exp ?(`MUT`_mut)] [visit_exp `MUT`_mut] [visit_exp ()] [visit_exp zt] [visit_id zt] not free -[check_dims] C X*#6207 X*#6256 deftype*#41 fieldtype#15 heaptype#815 i#6346 localidx*#779 mut mut?#655 null?#811 resulttype#1295 storagetype#419 typeidx#422 typeidx#424 x zt +[check_dims] C mut x zt [visit_exp C] [visit_id C] -[visit_exp `ARRAY.NEW`_instr{typeidx#422}(x)] -[visit_exp typeidx#422] -[visit_id typeidx#422] +[visit_exp `ARRAY.NEW`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%->_%%`_instrtype{resulttype#1295, `localidx*#779`}(`%`_resulttype{`X*#6207`}([$unpack(zt) `I32`_valtype]), [], `%`_resulttype{`X*#6256`}([`REF`_valtype{`null?#811`, heaptype#815}(?(), `_IDX`_heaptype{typeidx#424}(x))]))] -[visit_exp resulttype#1295] -[visit_id resulttype#1295] -[visit_exp `localidx*#779`] -[visit_id localidx*#779] -[visit_exp (`%`_resulttype{`X*#6207`}([$unpack(zt) `I32`_valtype]), [], `%`_resulttype{`X*#6256`}([`REF`_valtype{`null?#811`, heaptype#815}(?(), `_IDX`_heaptype{typeidx#424}(x))]))] -[visit_exp `%`_resulttype{`X*#6207`}([$unpack(zt) `I32`_valtype])] -[visit_exp `X*#6207`] -[visit_id X*#6207] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) `I32`_valtype]), [], `%`_resulttype([`REF`_valtype(?(), `_IDX`_heaptype(x))]))] +[visit_exp (`%`_resulttype([$unpack(zt) `I32`_valtype]), [], `%`_resulttype([`REF`_valtype(?(), `_IDX`_heaptype(x))]))] +[visit_exp `%`_resulttype([$unpack(zt) `I32`_valtype])] [visit_exp ([$unpack(zt) `I32`_valtype])] [visit_exp [$unpack(zt) `I32`_valtype]] [visit_exp $unpack(zt)] @@ -26398,46 +23769,28 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `I32`_valtype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#6256`}([`REF`_valtype{`null?#811`, heaptype#815}(?(), `_IDX`_heaptype{typeidx#424}(x))])] -[visit_exp `X*#6256`] -[visit_id X*#6256] -[visit_exp ([`REF`_valtype{`null?#811`, heaptype#815}(?(), `_IDX`_heaptype{typeidx#424}(x))])] -[visit_exp [`REF`_valtype{`null?#811`, heaptype#815}(?(), `_IDX`_heaptype{typeidx#424}(x))]] -[visit_exp `REF`_valtype{`null?#811`, heaptype#815}(?(), `_IDX`_heaptype{typeidx#424}(x))] -[visit_exp `null?#811`] -[visit_id null?#811] -[visit_exp heaptype#815] -[visit_id heaptype#815] -[visit_exp (?(), `_IDX`_heaptype{typeidx#424}(x))] +[visit_exp `%`_resulttype([`REF`_valtype(?(), `_IDX`_heaptype(x))])] +[visit_exp ([`REF`_valtype(?(), `_IDX`_heaptype(x))])] +[visit_exp [`REF`_valtype(?(), `_IDX`_heaptype(x))]] +[visit_exp `REF`_valtype(?(), `_IDX`_heaptype(x))] +[visit_exp (?(), `_IDX`_heaptype(x))] [visit_exp ?()] -[visit_exp `_IDX`_heaptype{typeidx#424}(x)] -[visit_exp typeidx#424] -[visit_id typeidx#424] +[visit_exp `_IDX`_heaptype(x)] [visit_exp (x)] [visit_exp x] [visit_id x] not free -[visit_exp (C.`TYPES`_context{`deftype*#41`}[x!`%`_idx{i#6346}.0], `ARRAY`_comptype{fieldtype#15}(`%%`_fieldtype{`mut?#655`, storagetype#419}(mut?{mut <- `mut?`}, zt)))] -[visit_exp C.`TYPES`_context{`deftype*#41`}[x!`%`_idx{i#6346}.0]] -[visit_exp C.`TYPES`_context{`deftype*#41`}] +[visit_exp (C.`TYPES`_context[x!`%`_idx.0], `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)))] +[visit_exp C.`TYPES`_context[x!`%`_idx.0]] +[visit_exp C.`TYPES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `deftype*#41`] -[visit_id deftype*#41] -[visit_exp x!`%`_idx{i#6346}.0] -[visit_exp x!`%`_idx{i#6346}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#6346] -[visit_id i#6346] -[visit_exp `ARRAY`_comptype{fieldtype#15}(`%%`_fieldtype{`mut?#655`, storagetype#419}(mut?{mut <- `mut?`}, zt))] -[visit_exp fieldtype#15] -[visit_id fieldtype#15] -[visit_exp (`%%`_fieldtype{`mut?#655`, storagetype#419}(mut?{mut <- `mut?`}, zt))] -[visit_exp `%%`_fieldtype{`mut?#655`, storagetype#419}(mut?{mut <- `mut?`}, zt)] -[visit_exp `mut?#655`] -[visit_id mut?#655] -[visit_exp storagetype#419] -[visit_id storagetype#419] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] +[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] +[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)] [visit_exp (mut?{mut <- `mut?`}, zt)] [visit_exp mut?{mut <- `mut?`}] [scope_enter mut] @@ -26450,69 +23803,43 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id mut?] [visit_exp zt] [visit_id zt] not free -[check_dims] C X*#6275 X*#6324 deftype*#42 fieldtype#17 heaptype#817 i#6384 localidx*#791 mut mut?#667 null?#813 resulttype#1315 storagetype#431 typeidx#426 typeidx#428 x zt +[check_dims] C mut x zt [visit_exp C] [visit_id C] -[visit_exp `ARRAY.NEW_DEFAULT`_instr{typeidx#426}(x)] -[visit_exp typeidx#426] -[visit_id typeidx#426] +[visit_exp `ARRAY.NEW_DEFAULT`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%->_%%`_instrtype{resulttype#1315, `localidx*#791`}(`%`_resulttype{`X*#6275`}([`I32`_valtype]), [], `%`_resulttype{`X*#6324`}([`REF`_valtype{`null?#813`, heaptype#817}(?(), `_IDX`_heaptype{typeidx#428}(x))]))] -[visit_exp resulttype#1315] -[visit_id resulttype#1315] -[visit_exp `localidx*#791`] -[visit_id localidx*#791] -[visit_exp (`%`_resulttype{`X*#6275`}([`I32`_valtype]), [], `%`_resulttype{`X*#6324`}([`REF`_valtype{`null?#813`, heaptype#817}(?(), `_IDX`_heaptype{typeidx#428}(x))]))] -[visit_exp `%`_resulttype{`X*#6275`}([`I32`_valtype])] -[visit_exp `X*#6275`] -[visit_id X*#6275] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([`I32`_valtype]), [], `%`_resulttype([`REF`_valtype(?(), `_IDX`_heaptype(x))]))] +[visit_exp (`%`_resulttype([`I32`_valtype]), [], `%`_resulttype([`REF`_valtype(?(), `_IDX`_heaptype(x))]))] +[visit_exp `%`_resulttype([`I32`_valtype])] [visit_exp ([`I32`_valtype])] [visit_exp [`I32`_valtype]] [visit_exp `I32`_valtype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#6324`}([`REF`_valtype{`null?#813`, heaptype#817}(?(), `_IDX`_heaptype{typeidx#428}(x))])] -[visit_exp `X*#6324`] -[visit_id X*#6324] -[visit_exp ([`REF`_valtype{`null?#813`, heaptype#817}(?(), `_IDX`_heaptype{typeidx#428}(x))])] -[visit_exp [`REF`_valtype{`null?#813`, heaptype#817}(?(), `_IDX`_heaptype{typeidx#428}(x))]] -[visit_exp `REF`_valtype{`null?#813`, heaptype#817}(?(), `_IDX`_heaptype{typeidx#428}(x))] -[visit_exp `null?#813`] -[visit_id null?#813] -[visit_exp heaptype#817] -[visit_id heaptype#817] -[visit_exp (?(), `_IDX`_heaptype{typeidx#428}(x))] +[visit_exp `%`_resulttype([`REF`_valtype(?(), `_IDX`_heaptype(x))])] +[visit_exp ([`REF`_valtype(?(), `_IDX`_heaptype(x))])] +[visit_exp [`REF`_valtype(?(), `_IDX`_heaptype(x))]] +[visit_exp `REF`_valtype(?(), `_IDX`_heaptype(x))] +[visit_exp (?(), `_IDX`_heaptype(x))] [visit_exp ?()] -[visit_exp `_IDX`_heaptype{typeidx#428}(x)] -[visit_exp typeidx#428] -[visit_id typeidx#428] +[visit_exp `_IDX`_heaptype(x)] [visit_exp (x)] [visit_exp x] [visit_id x] not free -[visit_exp (C.`TYPES`_context{`deftype*#42`}[x!`%`_idx{i#6384}.0], `ARRAY`_comptype{fieldtype#17}(`%%`_fieldtype{`mut?#667`, storagetype#431}(mut?{mut <- `mut?`}, zt)))] -[visit_exp C.`TYPES`_context{`deftype*#42`}[x!`%`_idx{i#6384}.0]] -[visit_exp C.`TYPES`_context{`deftype*#42`}] +[visit_exp (C.`TYPES`_context[x!`%`_idx.0], `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)))] +[visit_exp C.`TYPES`_context[x!`%`_idx.0]] +[visit_exp C.`TYPES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `deftype*#42`] -[visit_id deftype*#42] -[visit_exp x!`%`_idx{i#6384}.0] -[visit_exp x!`%`_idx{i#6384}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#6384] -[visit_id i#6384] -[visit_exp `ARRAY`_comptype{fieldtype#17}(`%%`_fieldtype{`mut?#667`, storagetype#431}(mut?{mut <- `mut?`}, zt))] -[visit_exp fieldtype#17] -[visit_id fieldtype#17] -[visit_exp (`%%`_fieldtype{`mut?#667`, storagetype#431}(mut?{mut <- `mut?`}, zt))] -[visit_exp `%%`_fieldtype{`mut?#667`, storagetype#431}(mut?{mut <- `mut?`}, zt)] -[visit_exp `mut?#667`] -[visit_id mut?#667] -[visit_exp storagetype#431] -[visit_id storagetype#431] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] +[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] +[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)] [visit_exp (mut?{mut <- `mut?`}, zt)] [visit_exp mut?{mut <- `mut?`}] [scope_enter mut] @@ -26528,32 +23855,20 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp $unpack(zt)] [visit_exp zt] [visit_id zt] not free -[check_dims] C X*#6335 X*#6386 deftype*#43 fieldtype#19 heaptype#819 i#6422 i#6446 localidx*#803 mut mut?#679 n null?#815 resulttype#1335 storagetype#443 typeidx#430 typeidx#432 u32#12 x zt +[check_dims] C mut n x zt [visit_exp C] [visit_id C] -[visit_exp `ARRAY.NEW_FIXED`_instr{typeidx#430, u32#12}(x, `%`_u32{i#6422}(n))] -[visit_exp typeidx#430] -[visit_id typeidx#430] -[visit_exp u32#12] -[visit_id u32#12] -[visit_exp (x, `%`_u32{i#6422}(n))] +[visit_exp `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))] +[visit_exp (x, `%`_u32(n))] [visit_exp x] [visit_id x] -[visit_exp `%`_u32{i#6422}(n)] -[visit_exp i#6422] -[visit_id i#6422] +[visit_exp `%`_u32(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `%->_%%`_instrtype{resulttype#1335, `localidx*#803`}(`%`_resulttype{`X*#6335`}($unpack(zt)^n{}), [], `%`_resulttype{`X*#6386`}([`REF`_valtype{`null?#815`, heaptype#819}(?(), `_IDX`_heaptype{typeidx#432}(x))]))] -[visit_exp resulttype#1335] -[visit_id resulttype#1335] -[visit_exp `localidx*#803`] -[visit_id localidx*#803] -[visit_exp (`%`_resulttype{`X*#6335`}($unpack(zt)^n{}), [], `%`_resulttype{`X*#6386`}([`REF`_valtype{`null?#815`, heaptype#819}(?(), `_IDX`_heaptype{typeidx#432}(x))]))] -[visit_exp `%`_resulttype{`X*#6335`}($unpack(zt)^n{})] -[visit_exp `X*#6335`] -[visit_id X*#6335] +[visit_exp `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([`REF`_valtype(?(), `_IDX`_heaptype(x))]))] +[visit_exp (`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([`REF`_valtype(?(), `_IDX`_heaptype(x))]))] +[visit_exp `%`_resulttype($unpack(zt)^n{})] [visit_exp ($unpack(zt)^n{})] [visit_exp $unpack(zt)^n{}] [visit_exp $unpack(zt)] @@ -26562,46 +23877,28 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp n] [visit_id n] not free [visit_exp []] -[visit_exp `%`_resulttype{`X*#6386`}([`REF`_valtype{`null?#815`, heaptype#819}(?(), `_IDX`_heaptype{typeidx#432}(x))])] -[visit_exp `X*#6386`] -[visit_id X*#6386] -[visit_exp ([`REF`_valtype{`null?#815`, heaptype#819}(?(), `_IDX`_heaptype{typeidx#432}(x))])] -[visit_exp [`REF`_valtype{`null?#815`, heaptype#819}(?(), `_IDX`_heaptype{typeidx#432}(x))]] -[visit_exp `REF`_valtype{`null?#815`, heaptype#819}(?(), `_IDX`_heaptype{typeidx#432}(x))] -[visit_exp `null?#815`] -[visit_id null?#815] -[visit_exp heaptype#819] -[visit_id heaptype#819] -[visit_exp (?(), `_IDX`_heaptype{typeidx#432}(x))] +[visit_exp `%`_resulttype([`REF`_valtype(?(), `_IDX`_heaptype(x))])] +[visit_exp ([`REF`_valtype(?(), `_IDX`_heaptype(x))])] +[visit_exp [`REF`_valtype(?(), `_IDX`_heaptype(x))]] +[visit_exp `REF`_valtype(?(), `_IDX`_heaptype(x))] +[visit_exp (?(), `_IDX`_heaptype(x))] [visit_exp ?()] -[visit_exp `_IDX`_heaptype{typeidx#432}(x)] -[visit_exp typeidx#432] -[visit_id typeidx#432] +[visit_exp `_IDX`_heaptype(x)] [visit_exp (x)] [visit_exp x] [visit_id x] not free -[visit_exp (C.`TYPES`_context{`deftype*#43`}[x!`%`_idx{i#6446}.0], `ARRAY`_comptype{fieldtype#19}(`%%`_fieldtype{`mut?#679`, storagetype#443}(mut?{mut <- `mut?`}, zt)))] -[visit_exp C.`TYPES`_context{`deftype*#43`}[x!`%`_idx{i#6446}.0]] -[visit_exp C.`TYPES`_context{`deftype*#43`}] +[visit_exp (C.`TYPES`_context[x!`%`_idx.0], `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)))] +[visit_exp C.`TYPES`_context[x!`%`_idx.0]] +[visit_exp C.`TYPES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `deftype*#43`] -[visit_id deftype*#43] -[visit_exp x!`%`_idx{i#6446}.0] -[visit_exp x!`%`_idx{i#6446}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#6446] -[visit_id i#6446] -[visit_exp `ARRAY`_comptype{fieldtype#19}(`%%`_fieldtype{`mut?#679`, storagetype#443}(mut?{mut <- `mut?`}, zt))] -[visit_exp fieldtype#19] -[visit_id fieldtype#19] -[visit_exp (`%%`_fieldtype{`mut?#679`, storagetype#443}(mut?{mut <- `mut?`}, zt))] -[visit_exp `%%`_fieldtype{`mut?#679`, storagetype#443}(mut?{mut <- `mut?`}, zt)] -[visit_exp `mut?#679`] -[visit_id mut?#679] -[visit_exp storagetype#443] -[visit_id storagetype#443] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] +[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] +[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)] [visit_exp (mut?{mut <- `mut?`}, zt)] [visit_exp mut?{mut <- `mut?`}] [scope_enter mut] @@ -26614,28 +23911,18 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id mut?] [visit_exp zt] [visit_id zt] not free -[check_dims] C X*#6407 X*#6456 deftype*#44 elemidx#9 elemtype*#7 fieldtype#21 heaptype#821 i#6498 i#6508 localidx*#815 mut mut?#691 null?#817 resulttype#1355 rt storagetype#455 typeidx#434 typeidx#436 x y +[check_dims] C mut rt x y [visit_exp C] [visit_id C] -[visit_exp `ARRAY.NEW_ELEM`_instr{typeidx#434, elemidx#9}(x, y)] -[visit_exp typeidx#434] -[visit_id typeidx#434] -[visit_exp elemidx#9] -[visit_id elemidx#9] +[visit_exp `ARRAY.NEW_ELEM`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] [visit_exp y] [visit_id y] -[visit_exp `%->_%%`_instrtype{resulttype#1355, `localidx*#815`}(`%`_resulttype{`X*#6407`}([`I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#6456`}([`REF`_valtype{`null?#817`, heaptype#821}(?(), `_IDX`_heaptype{typeidx#436}(x))]))] -[visit_exp resulttype#1355] -[visit_id resulttype#1355] -[visit_exp `localidx*#815`] -[visit_id localidx*#815] -[visit_exp (`%`_resulttype{`X*#6407`}([`I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#6456`}([`REF`_valtype{`null?#817`, heaptype#821}(?(), `_IDX`_heaptype{typeidx#436}(x))]))] -[visit_exp `%`_resulttype{`X*#6407`}([`I32`_valtype `I32`_valtype])] -[visit_exp `X*#6407`] -[visit_id X*#6407] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([`I32`_valtype `I32`_valtype]), [], `%`_resulttype([`REF`_valtype(?(), `_IDX`_heaptype(x))]))] +[visit_exp (`%`_resulttype([`I32`_valtype `I32`_valtype]), [], `%`_resulttype([`REF`_valtype(?(), `_IDX`_heaptype(x))]))] +[visit_exp `%`_resulttype([`I32`_valtype `I32`_valtype])] [visit_exp ([`I32`_valtype `I32`_valtype])] [visit_exp [`I32`_valtype `I32`_valtype]] [visit_exp `I32`_valtype] @@ -26643,46 +23930,28 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `I32`_valtype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#6456`}([`REF`_valtype{`null?#817`, heaptype#821}(?(), `_IDX`_heaptype{typeidx#436}(x))])] -[visit_exp `X*#6456`] -[visit_id X*#6456] -[visit_exp ([`REF`_valtype{`null?#817`, heaptype#821}(?(), `_IDX`_heaptype{typeidx#436}(x))])] -[visit_exp [`REF`_valtype{`null?#817`, heaptype#821}(?(), `_IDX`_heaptype{typeidx#436}(x))]] -[visit_exp `REF`_valtype{`null?#817`, heaptype#821}(?(), `_IDX`_heaptype{typeidx#436}(x))] -[visit_exp `null?#817`] -[visit_id null?#817] -[visit_exp heaptype#821] -[visit_id heaptype#821] -[visit_exp (?(), `_IDX`_heaptype{typeidx#436}(x))] +[visit_exp `%`_resulttype([`REF`_valtype(?(), `_IDX`_heaptype(x))])] +[visit_exp ([`REF`_valtype(?(), `_IDX`_heaptype(x))])] +[visit_exp [`REF`_valtype(?(), `_IDX`_heaptype(x))]] +[visit_exp `REF`_valtype(?(), `_IDX`_heaptype(x))] +[visit_exp (?(), `_IDX`_heaptype(x))] [visit_exp ?()] -[visit_exp `_IDX`_heaptype{typeidx#436}(x)] -[visit_exp typeidx#436] -[visit_id typeidx#436] +[visit_exp `_IDX`_heaptype(x)] [visit_exp (x)] [visit_exp x] [visit_id x] not free -[visit_exp (C.`TYPES`_context{`deftype*#44`}[x!`%`_idx{i#6498}.0], `ARRAY`_comptype{fieldtype#21}(`%%`_fieldtype{`mut?#691`, storagetype#455}(mut?{mut <- `mut?`}, (rt : reftype <: storagetype))))] -[visit_exp C.`TYPES`_context{`deftype*#44`}[x!`%`_idx{i#6498}.0]] -[visit_exp C.`TYPES`_context{`deftype*#44`}] +[visit_exp (C.`TYPES`_context[x!`%`_idx.0], `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype))))] +[visit_exp C.`TYPES`_context[x!`%`_idx.0]] +[visit_exp C.`TYPES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `deftype*#44`] -[visit_id deftype*#44] -[visit_exp x!`%`_idx{i#6498}.0] -[visit_exp x!`%`_idx{i#6498}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#6498] -[visit_id i#6498] -[visit_exp `ARRAY`_comptype{fieldtype#21}(`%%`_fieldtype{`mut?#691`, storagetype#455}(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))] -[visit_exp fieldtype#21] -[visit_id fieldtype#21] -[visit_exp (`%%`_fieldtype{`mut?#691`, storagetype#455}(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))] -[visit_exp `%%`_fieldtype{`mut?#691`, storagetype#455}(mut?{mut <- `mut?`}, (rt : reftype <: storagetype))] -[visit_exp `mut?#691`] -[visit_id mut?#691] -[visit_exp storagetype#455] -[visit_id storagetype#455] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))] +[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))] +[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype))] [visit_exp (mut?{mut <- `mut?`}, (rt : reftype <: storagetype))] [visit_exp mut?{mut <- `mut?`}] [scope_enter mut] @@ -26696,45 +23965,31 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp (rt : reftype <: storagetype)] [visit_exp rt] [visit_id rt] -[visit_exp (C, C.`ELEMS`_context{`elemtype*#7`}[y!`%`_idx{i#6508}.0], rt)] +[visit_exp (C, C.`ELEMS`_context[y!`%`_idx.0], rt)] [visit_exp C] [visit_id C] not free -[visit_exp C.`ELEMS`_context{`elemtype*#7`}[y!`%`_idx{i#6508}.0]] -[visit_exp C.`ELEMS`_context{`elemtype*#7`}] +[visit_exp C.`ELEMS`_context[y!`%`_idx.0]] +[visit_exp C.`ELEMS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `elemtype*#7`] -[visit_id elemtype*#7] -[visit_exp y!`%`_idx{i#6508}.0] -[visit_exp y!`%`_idx{i#6508}] +[visit_exp y!`%`_idx.0] +[visit_exp y!`%`_idx] [visit_exp y] [visit_id y] not free -[visit_exp i#6508] -[visit_id i#6508] [visit_exp rt] [visit_id rt] not free -[check_dims] C X*#6477 X*#6526 dataidx#9 datatype*#7 deftype*#45 fieldtype#23 heaptype#835 i#6560 i#6570 localidx*#827 mut mut?#703 null?#831 numtype resulttype#1375 storagetype#467 typeidx#438 typeidx#440 vectype x y zt +[check_dims] C mut numtype vectype x y zt [visit_exp C] [visit_id C] -[visit_exp `ARRAY.NEW_DATA`_instr{typeidx#438, dataidx#9}(x, y)] -[visit_exp typeidx#438] -[visit_id typeidx#438] -[visit_exp dataidx#9] -[visit_id dataidx#9] +[visit_exp `ARRAY.NEW_DATA`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] [visit_exp y] [visit_id y] -[visit_exp `%->_%%`_instrtype{resulttype#1375, `localidx*#827`}(`%`_resulttype{`X*#6477`}([`I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#6526`}([`REF`_valtype{`null?#831`, heaptype#835}(?(), `_IDX`_heaptype{typeidx#440}(x))]))] -[visit_exp resulttype#1375] -[visit_id resulttype#1375] -[visit_exp `localidx*#827`] -[visit_id localidx*#827] -[visit_exp (`%`_resulttype{`X*#6477`}([`I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#6526`}([`REF`_valtype{`null?#831`, heaptype#835}(?(), `_IDX`_heaptype{typeidx#440}(x))]))] -[visit_exp `%`_resulttype{`X*#6477`}([`I32`_valtype `I32`_valtype])] -[visit_exp `X*#6477`] -[visit_id X*#6477] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([`I32`_valtype `I32`_valtype]), [], `%`_resulttype([`REF`_valtype(?(), `_IDX`_heaptype(x))]))] +[visit_exp (`%`_resulttype([`I32`_valtype `I32`_valtype]), [], `%`_resulttype([`REF`_valtype(?(), `_IDX`_heaptype(x))]))] +[visit_exp `%`_resulttype([`I32`_valtype `I32`_valtype])] [visit_exp ([`I32`_valtype `I32`_valtype])] [visit_exp [`I32`_valtype `I32`_valtype]] [visit_exp `I32`_valtype] @@ -26742,46 +23997,28 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `I32`_valtype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#6526`}([`REF`_valtype{`null?#831`, heaptype#835}(?(), `_IDX`_heaptype{typeidx#440}(x))])] -[visit_exp `X*#6526`] -[visit_id X*#6526] -[visit_exp ([`REF`_valtype{`null?#831`, heaptype#835}(?(), `_IDX`_heaptype{typeidx#440}(x))])] -[visit_exp [`REF`_valtype{`null?#831`, heaptype#835}(?(), `_IDX`_heaptype{typeidx#440}(x))]] -[visit_exp `REF`_valtype{`null?#831`, heaptype#835}(?(), `_IDX`_heaptype{typeidx#440}(x))] -[visit_exp `null?#831`] -[visit_id null?#831] -[visit_exp heaptype#835] -[visit_id heaptype#835] -[visit_exp (?(), `_IDX`_heaptype{typeidx#440}(x))] +[visit_exp `%`_resulttype([`REF`_valtype(?(), `_IDX`_heaptype(x))])] +[visit_exp ([`REF`_valtype(?(), `_IDX`_heaptype(x))])] +[visit_exp [`REF`_valtype(?(), `_IDX`_heaptype(x))]] +[visit_exp `REF`_valtype(?(), `_IDX`_heaptype(x))] +[visit_exp (?(), `_IDX`_heaptype(x))] [visit_exp ?()] -[visit_exp `_IDX`_heaptype{typeidx#440}(x)] -[visit_exp typeidx#440] -[visit_id typeidx#440] +[visit_exp `_IDX`_heaptype(x)] [visit_exp (x)] [visit_exp x] [visit_id x] not free -[visit_exp (C.`TYPES`_context{`deftype*#45`}[x!`%`_idx{i#6560}.0], `ARRAY`_comptype{fieldtype#23}(`%%`_fieldtype{`mut?#703`, storagetype#467}(mut?{mut <- `mut?`}, zt)))] -[visit_exp C.`TYPES`_context{`deftype*#45`}[x!`%`_idx{i#6560}.0]] -[visit_exp C.`TYPES`_context{`deftype*#45`}] +[visit_exp (C.`TYPES`_context[x!`%`_idx.0], `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)))] +[visit_exp C.`TYPES`_context[x!`%`_idx.0]] +[visit_exp C.`TYPES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `deftype*#45`] -[visit_id deftype*#45] -[visit_exp x!`%`_idx{i#6560}.0] -[visit_exp x!`%`_idx{i#6560}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#6560] -[visit_id i#6560] -[visit_exp `ARRAY`_comptype{fieldtype#23}(`%%`_fieldtype{`mut?#703`, storagetype#467}(mut?{mut <- `mut?`}, zt))] -[visit_exp fieldtype#23] -[visit_id fieldtype#23] -[visit_exp (`%%`_fieldtype{`mut?#703`, storagetype#467}(mut?{mut <- `mut?`}, zt))] -[visit_exp `%%`_fieldtype{`mut?#703`, storagetype#467}(mut?{mut <- `mut?`}, zt)] -[visit_exp `mut?#703`] -[visit_id mut?#703] -[visit_exp storagetype#467] -[visit_id storagetype#467] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] +[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] +[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)] [visit_exp (mut?{mut <- `mut?`}, zt)] [visit_exp mut?{mut <- `mut?`}] [scope_enter mut] @@ -26809,29 +24046,21 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp (vectype : vectype <: valtype)] [visit_exp vectype] [visit_id vectype] -[visit_exp (C.`DATAS`_context{`datatype*#7`}[y!`%`_idx{i#6570}.0] = `OK`_datatype)] -[visit_exp C.`DATAS`_context{`datatype*#7`}[y!`%`_idx{i#6570}.0]] -[visit_exp C.`DATAS`_context{`datatype*#7`}] +[visit_exp (C.`DATAS`_context[y!`%`_idx.0] = `OK`_datatype)] +[visit_exp C.`DATAS`_context[y!`%`_idx.0]] +[visit_exp C.`DATAS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `datatype*#7`] -[visit_id datatype*#7] -[visit_exp y!`%`_idx{i#6570}.0] -[visit_exp y!`%`_idx{i#6570}] +[visit_exp y!`%`_idx.0] +[visit_exp y!`%`_idx] [visit_exp y] [visit_id y] not free -[visit_exp i#6570] -[visit_id i#6570] [visit_exp `OK`_datatype] [visit_exp ()] -[check_dims] C X*#6547 X*#6596 deftype*#46 fieldtype#25 heaptype#837 i#6645 localidx*#839 mut mut?#715 null?#833 resulttype#1395 storagetype#479 sx sx?#9 typeidx#442 typeidx#444 x zt +[check_dims] C mut sx x zt [visit_exp C] [visit_id C] -[visit_exp `ARRAY.GET`_instr{`sx?#9`, typeidx#442}(sx?{sx <- `sx?`}, x)] -[visit_exp `sx?#9`] -[visit_id sx?#9] -[visit_exp typeidx#442] -[visit_id typeidx#442] +[visit_exp `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)] [visit_exp (sx?{sx <- `sx?`}, x)] [visit_exp sx?{sx <- `sx?`}] [scope_enter sx] @@ -26844,65 +24073,41 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id sx?] [visit_exp x] [visit_id x] -[visit_exp `%->_%%`_instrtype{resulttype#1395, `localidx*#839`}(`%`_resulttype{`X*#6547`}([`REF`_valtype{`null?#833`, heaptype#837}(?(`NULL`_null), `_IDX`_heaptype{typeidx#444}(x)) `I32`_valtype]), [], `%`_resulttype{`X*#6596`}([$unpack(zt)]))] -[visit_exp resulttype#1395] -[visit_id resulttype#1395] -[visit_exp `localidx*#839`] -[visit_id localidx*#839] -[visit_exp (`%`_resulttype{`X*#6547`}([`REF`_valtype{`null?#833`, heaptype#837}(?(`NULL`_null), `_IDX`_heaptype{typeidx#444}(x)) `I32`_valtype]), [], `%`_resulttype{`X*#6596`}([$unpack(zt)]))] -[visit_exp `%`_resulttype{`X*#6547`}([`REF`_valtype{`null?#833`, heaptype#837}(?(`NULL`_null), `_IDX`_heaptype{typeidx#444}(x)) `I32`_valtype])] -[visit_exp `X*#6547`] -[visit_id X*#6547] -[visit_exp ([`REF`_valtype{`null?#833`, heaptype#837}(?(`NULL`_null), `_IDX`_heaptype{typeidx#444}(x)) `I32`_valtype])] -[visit_exp [`REF`_valtype{`null?#833`, heaptype#837}(?(`NULL`_null), `_IDX`_heaptype{typeidx#444}(x)) `I32`_valtype]] -[visit_exp `REF`_valtype{`null?#833`, heaptype#837}(?(`NULL`_null), `_IDX`_heaptype{typeidx#444}(x))] -[visit_exp `null?#833`] -[visit_id null?#833] -[visit_exp heaptype#837] -[visit_id heaptype#837] -[visit_exp (?(`NULL`_null), `_IDX`_heaptype{typeidx#444}(x))] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype]), [], `%`_resulttype([$unpack(zt)]))] +[visit_exp (`%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype]), [], `%`_resulttype([$unpack(zt)]))] +[visit_exp `%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype])] +[visit_exp ([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype])] +[visit_exp [`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype]] +[visit_exp `REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))] +[visit_exp (?(`NULL`_null), `_IDX`_heaptype(x))] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] [visit_exp ()] -[visit_exp `_IDX`_heaptype{typeidx#444}(x)] -[visit_exp typeidx#444] -[visit_id typeidx#444] +[visit_exp `_IDX`_heaptype(x)] [visit_exp (x)] [visit_exp x] [visit_id x] not free [visit_exp `I32`_valtype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#6596`}([$unpack(zt)])] -[visit_exp `X*#6596`] -[visit_id X*#6596] +[visit_exp `%`_resulttype([$unpack(zt)])] [visit_exp ([$unpack(zt)])] [visit_exp [$unpack(zt)]] [visit_exp $unpack(zt)] [visit_exp zt] [visit_id zt] -[visit_exp (C.`TYPES`_context{`deftype*#46`}[x!`%`_idx{i#6645}.0], `ARRAY`_comptype{fieldtype#25}(`%%`_fieldtype{`mut?#715`, storagetype#479}(mut?{mut <- `mut?`}, zt)))] -[visit_exp C.`TYPES`_context{`deftype*#46`}[x!`%`_idx{i#6645}.0]] -[visit_exp C.`TYPES`_context{`deftype*#46`}] +[visit_exp (C.`TYPES`_context[x!`%`_idx.0], `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)))] +[visit_exp C.`TYPES`_context[x!`%`_idx.0]] +[visit_exp C.`TYPES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `deftype*#46`] -[visit_id deftype*#46] -[visit_exp x!`%`_idx{i#6645}.0] -[visit_exp x!`%`_idx{i#6645}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#6645] -[visit_id i#6645] -[visit_exp `ARRAY`_comptype{fieldtype#25}(`%%`_fieldtype{`mut?#715`, storagetype#479}(mut?{mut <- `mut?`}, zt))] -[visit_exp fieldtype#25] -[visit_id fieldtype#25] -[visit_exp (`%%`_fieldtype{`mut?#715`, storagetype#479}(mut?{mut <- `mut?`}, zt))] -[visit_exp `%%`_fieldtype{`mut?#715`, storagetype#479}(mut?{mut <- `mut?`}, zt)] -[visit_exp `mut?#715`] -[visit_id mut?#715] -[visit_exp storagetype#479] -[visit_id storagetype#479] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] +[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] +[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)] [visit_exp (mut?{mut <- `mut?`}, zt)] [visit_exp mut?{mut <- `mut?`}] [scope_enter mut] @@ -26930,38 +24135,24 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp $is_packtype(zt)] [visit_exp zt] [visit_id zt] not free -[check_dims] C X*#6617 X*#6666 deftype*#47 fieldtype#27 heaptype#839 i#6683 localidx*#851 mut?#727 null?#835 resulttype#1415 storagetype#491 typeidx#446 typeidx#448 x zt +[check_dims] C x zt [visit_exp C] [visit_id C] -[visit_exp `ARRAY.SET`_instr{typeidx#446}(x)] -[visit_exp typeidx#446] -[visit_id typeidx#446] +[visit_exp `ARRAY.SET`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%->_%%`_instrtype{resulttype#1415, `localidx*#851`}(`%`_resulttype{`X*#6617`}([`REF`_valtype{`null?#835`, heaptype#839}(?(`NULL`_null), `_IDX`_heaptype{typeidx#448}(x)) `I32`_valtype $unpack(zt)]), [], `%`_resulttype{`X*#6666`}([]))] -[visit_exp resulttype#1415] -[visit_id resulttype#1415] -[visit_exp `localidx*#851`] -[visit_id localidx*#851] -[visit_exp (`%`_resulttype{`X*#6617`}([`REF`_valtype{`null?#835`, heaptype#839}(?(`NULL`_null), `_IDX`_heaptype{typeidx#448}(x)) `I32`_valtype $unpack(zt)]), [], `%`_resulttype{`X*#6666`}([]))] -[visit_exp `%`_resulttype{`X*#6617`}([`REF`_valtype{`null?#835`, heaptype#839}(?(`NULL`_null), `_IDX`_heaptype{typeidx#448}(x)) `I32`_valtype $unpack(zt)])] -[visit_exp `X*#6617`] -[visit_id X*#6617] -[visit_exp ([`REF`_valtype{`null?#835`, heaptype#839}(?(`NULL`_null), `_IDX`_heaptype{typeidx#448}(x)) `I32`_valtype $unpack(zt)])] -[visit_exp [`REF`_valtype{`null?#835`, heaptype#839}(?(`NULL`_null), `_IDX`_heaptype{typeidx#448}(x)) `I32`_valtype $unpack(zt)]] -[visit_exp `REF`_valtype{`null?#835`, heaptype#839}(?(`NULL`_null), `_IDX`_heaptype{typeidx#448}(x))] -[visit_exp `null?#835`] -[visit_id null?#835] -[visit_exp heaptype#839] -[visit_id heaptype#839] -[visit_exp (?(`NULL`_null), `_IDX`_heaptype{typeidx#448}(x))] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype $unpack(zt)]), [], `%`_resulttype([]))] +[visit_exp (`%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype $unpack(zt)]), [], `%`_resulttype([]))] +[visit_exp `%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype $unpack(zt)])] +[visit_exp ([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype $unpack(zt)])] +[visit_exp [`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype $unpack(zt)]] +[visit_exp `REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))] +[visit_exp (?(`NULL`_null), `_IDX`_heaptype(x))] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] [visit_exp ()] -[visit_exp `_IDX`_heaptype{typeidx#448}(x)] -[visit_exp typeidx#448] -[visit_id typeidx#448] +[visit_exp `_IDX`_heaptype(x)] [visit_exp (x)] [visit_exp x] [visit_id x] not free @@ -26971,60 +24162,38 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp zt] [visit_id zt] [visit_exp []] -[visit_exp `%`_resulttype{`X*#6666`}([])] -[visit_exp `X*#6666`] -[visit_id X*#6666] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] -[visit_exp (C.`TYPES`_context{`deftype*#47`}[x!`%`_idx{i#6683}.0], `ARRAY`_comptype{fieldtype#27}(`%%`_fieldtype{`mut?#727`, storagetype#491}(?(`MUT`_mut), zt)))] -[visit_exp C.`TYPES`_context{`deftype*#47`}[x!`%`_idx{i#6683}.0]] -[visit_exp C.`TYPES`_context{`deftype*#47`}] +[visit_exp (C.`TYPES`_context[x!`%`_idx.0], `ARRAY`_comptype(`%%`_fieldtype(?(`MUT`_mut), zt)))] +[visit_exp C.`TYPES`_context[x!`%`_idx.0]] +[visit_exp C.`TYPES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `deftype*#47`] -[visit_id deftype*#47] -[visit_exp x!`%`_idx{i#6683}.0] -[visit_exp x!`%`_idx{i#6683}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#6683] -[visit_id i#6683] -[visit_exp `ARRAY`_comptype{fieldtype#27}(`%%`_fieldtype{`mut?#727`, storagetype#491}(?(`MUT`_mut), zt))] -[visit_exp fieldtype#27] -[visit_id fieldtype#27] -[visit_exp (`%%`_fieldtype{`mut?#727`, storagetype#491}(?(`MUT`_mut), zt))] -[visit_exp `%%`_fieldtype{`mut?#727`, storagetype#491}(?(`MUT`_mut), zt)] -[visit_exp `mut?#727`] -[visit_id mut?#727] -[visit_exp storagetype#491] -[visit_id storagetype#491] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `ARRAY`_comptype(`%%`_fieldtype(?(`MUT`_mut), zt))] +[visit_exp (`%%`_fieldtype(?(`MUT`_mut), zt))] +[visit_exp `%%`_fieldtype(?(`MUT`_mut), zt)] [visit_exp (?(`MUT`_mut), zt)] [visit_exp ?(`MUT`_mut)] [visit_exp `MUT`_mut] [visit_exp ()] [visit_exp zt] [visit_id zt] not free -[check_dims] C X*#6687 X*#6736 heaptype#841 localidx*#863 null?#837 resulttype#1435 +[check_dims] C [visit_exp C] [visit_id C] [visit_exp `ARRAY.LEN`_instr] [visit_exp ()] -[visit_exp `%->_%%`_instrtype{resulttype#1435, `localidx*#863`}(`%`_resulttype{`X*#6687`}([`REF`_valtype{`null?#837`, heaptype#841}(?(`NULL`_null), `ARRAY`_heaptype)]), [], `%`_resulttype{`X*#6736`}([`I32`_valtype]))] -[visit_exp resulttype#1435] -[visit_id resulttype#1435] -[visit_exp `localidx*#863`] -[visit_id localidx*#863] -[visit_exp (`%`_resulttype{`X*#6687`}([`REF`_valtype{`null?#837`, heaptype#841}(?(`NULL`_null), `ARRAY`_heaptype)]), [], `%`_resulttype{`X*#6736`}([`I32`_valtype]))] -[visit_exp `%`_resulttype{`X*#6687`}([`REF`_valtype{`null?#837`, heaptype#841}(?(`NULL`_null), `ARRAY`_heaptype)])] -[visit_exp `X*#6687`] -[visit_id X*#6687] -[visit_exp ([`REF`_valtype{`null?#837`, heaptype#841}(?(`NULL`_null), `ARRAY`_heaptype)])] -[visit_exp [`REF`_valtype{`null?#837`, heaptype#841}(?(`NULL`_null), `ARRAY`_heaptype)]] -[visit_exp `REF`_valtype{`null?#837`, heaptype#841}(?(`NULL`_null), `ARRAY`_heaptype)] -[visit_exp `null?#837`] -[visit_id null?#837] -[visit_exp heaptype#841] -[visit_id heaptype#841] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([`REF`_valtype(?(`NULL`_null), `ARRAY`_heaptype)]), [], `%`_resulttype([`I32`_valtype]))] +[visit_exp (`%`_resulttype([`REF`_valtype(?(`NULL`_null), `ARRAY`_heaptype)]), [], `%`_resulttype([`I32`_valtype]))] +[visit_exp `%`_resulttype([`REF`_valtype(?(`NULL`_null), `ARRAY`_heaptype)])] +[visit_exp ([`REF`_valtype(?(`NULL`_null), `ARRAY`_heaptype)])] +[visit_exp [`REF`_valtype(?(`NULL`_null), `ARRAY`_heaptype)]] +[visit_exp `REF`_valtype(?(`NULL`_null), `ARRAY`_heaptype)] [visit_exp (?(`NULL`_null), `ARRAY`_heaptype)] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] @@ -27032,45 +24201,29 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `ARRAY`_heaptype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#6736`}([`I32`_valtype])] -[visit_exp `X*#6736`] -[visit_id X*#6736] +[visit_exp `%`_resulttype([`I32`_valtype])] [visit_exp ([`I32`_valtype])] [visit_exp [`I32`_valtype]] [visit_exp `I32`_valtype] [visit_exp ()] -[check_dims] C X*#6757 X*#6806 deftype*#48 fieldtype#29 heaptype#843 i#6721 localidx*#875 mut?#739 null?#839 resulttype#1455 storagetype#503 typeidx#450 typeidx#452 x zt +[check_dims] C x zt [visit_exp C] [visit_id C] -[visit_exp `ARRAY.FILL`_instr{typeidx#450}(x)] -[visit_exp typeidx#450] -[visit_id typeidx#450] +[visit_exp `ARRAY.FILL`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%->_%%`_instrtype{resulttype#1455, `localidx*#875`}(`%`_resulttype{`X*#6757`}([`REF`_valtype{`null?#839`, heaptype#843}(?(`NULL`_null), `_IDX`_heaptype{typeidx#452}(x)) `I32`_valtype $unpack(zt) `I32`_valtype]), [], `%`_resulttype{`X*#6806`}([]))] -[visit_exp resulttype#1455] -[visit_id resulttype#1455] -[visit_exp `localidx*#875`] -[visit_id localidx*#875] -[visit_exp (`%`_resulttype{`X*#6757`}([`REF`_valtype{`null?#839`, heaptype#843}(?(`NULL`_null), `_IDX`_heaptype{typeidx#452}(x)) `I32`_valtype $unpack(zt) `I32`_valtype]), [], `%`_resulttype{`X*#6806`}([]))] -[visit_exp `%`_resulttype{`X*#6757`}([`REF`_valtype{`null?#839`, heaptype#843}(?(`NULL`_null), `_IDX`_heaptype{typeidx#452}(x)) `I32`_valtype $unpack(zt) `I32`_valtype])] -[visit_exp `X*#6757`] -[visit_id X*#6757] -[visit_exp ([`REF`_valtype{`null?#839`, heaptype#843}(?(`NULL`_null), `_IDX`_heaptype{typeidx#452}(x)) `I32`_valtype $unpack(zt) `I32`_valtype])] -[visit_exp [`REF`_valtype{`null?#839`, heaptype#843}(?(`NULL`_null), `_IDX`_heaptype{typeidx#452}(x)) `I32`_valtype $unpack(zt) `I32`_valtype]] -[visit_exp `REF`_valtype{`null?#839`, heaptype#843}(?(`NULL`_null), `_IDX`_heaptype{typeidx#452}(x))] -[visit_exp `null?#839`] -[visit_id null?#839] -[visit_exp heaptype#843] -[visit_id heaptype#843] -[visit_exp (?(`NULL`_null), `_IDX`_heaptype{typeidx#452}(x))] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype $unpack(zt) `I32`_valtype]), [], `%`_resulttype([]))] +[visit_exp (`%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype $unpack(zt) `I32`_valtype]), [], `%`_resulttype([]))] +[visit_exp `%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype $unpack(zt) `I32`_valtype])] +[visit_exp ([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype $unpack(zt) `I32`_valtype])] +[visit_exp [`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype $unpack(zt) `I32`_valtype]] +[visit_exp `REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))] +[visit_exp (?(`NULL`_null), `_IDX`_heaptype(x))] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] [visit_exp ()] -[visit_exp `_IDX`_heaptype{typeidx#452}(x)] -[visit_exp typeidx#452] -[visit_id typeidx#452] +[visit_exp `_IDX`_heaptype(x)] [visit_exp (x)] [visit_exp x] [visit_id x] not free @@ -27082,90 +24235,58 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `I32`_valtype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#6806`}([])] -[visit_exp `X*#6806`] -[visit_id X*#6806] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] -[visit_exp (C.`TYPES`_context{`deftype*#48`}[x!`%`_idx{i#6721}.0], `ARRAY`_comptype{fieldtype#29}(`%%`_fieldtype{`mut?#739`, storagetype#503}(?(`MUT`_mut), zt)))] -[visit_exp C.`TYPES`_context{`deftype*#48`}[x!`%`_idx{i#6721}.0]] -[visit_exp C.`TYPES`_context{`deftype*#48`}] +[visit_exp (C.`TYPES`_context[x!`%`_idx.0], `ARRAY`_comptype(`%%`_fieldtype(?(`MUT`_mut), zt)))] +[visit_exp C.`TYPES`_context[x!`%`_idx.0]] +[visit_exp C.`TYPES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `deftype*#48`] -[visit_id deftype*#48] -[visit_exp x!`%`_idx{i#6721}.0] -[visit_exp x!`%`_idx{i#6721}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#6721] -[visit_id i#6721] -[visit_exp `ARRAY`_comptype{fieldtype#29}(`%%`_fieldtype{`mut?#739`, storagetype#503}(?(`MUT`_mut), zt))] -[visit_exp fieldtype#29] -[visit_id fieldtype#29] -[visit_exp (`%%`_fieldtype{`mut?#739`, storagetype#503}(?(`MUT`_mut), zt))] -[visit_exp `%%`_fieldtype{`mut?#739`, storagetype#503}(?(`MUT`_mut), zt)] -[visit_exp `mut?#739`] -[visit_id mut?#739] -[visit_exp storagetype#503] -[visit_id storagetype#503] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `ARRAY`_comptype(`%%`_fieldtype(?(`MUT`_mut), zt))] +[visit_exp (`%%`_fieldtype(?(`MUT`_mut), zt))] +[visit_exp `%%`_fieldtype(?(`MUT`_mut), zt)] [visit_exp (?(`MUT`_mut), zt)] [visit_exp ?(`MUT`_mut)] [visit_exp `MUT`_mut] [visit_exp ()] [visit_exp zt] [visit_id zt] not free -[check_dims] C X*#6827 X*#6876 deftype*#49 deftype*#50 fieldtype#31 fieldtype#33 heaptype#845 heaptype#847 i#6787 i#6797 localidx*#887 mut mut?#751 mut?#763 null?#841 null?#843 resulttype#1475 storagetype#515 storagetype#527 typeidx#454 typeidx#457 typeidx#459 x_1 x_2 zt_1 zt_2 +[check_dims] C mut x_1 x_2 zt_1 zt_2 [visit_exp C] [visit_id C] -[visit_exp `ARRAY.COPY`_instr{typeidx#454}(x_1, x_2)] -[visit_exp typeidx#454] -[visit_id typeidx#454] +[visit_exp `ARRAY.COPY`_instr(x_1, x_2)] [visit_exp (x_1, x_2)] [visit_exp x_1] [visit_id x_1] [visit_exp x_2] [visit_id x_2] -[visit_exp `%->_%%`_instrtype{resulttype#1475, `localidx*#887`}(`%`_resulttype{`X*#6827`}([`REF`_valtype{`null?#841`, heaptype#845}(?(`NULL`_null), `_IDX`_heaptype{typeidx#457}(x_1)) `I32`_valtype `REF`_valtype{`null?#843`, heaptype#847}(?(`NULL`_null), `_IDX`_heaptype{typeidx#459}(x_2)) `I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#6876`}([]))] -[visit_exp resulttype#1475] -[visit_id resulttype#1475] -[visit_exp `localidx*#887`] -[visit_id localidx*#887] -[visit_exp (`%`_resulttype{`X*#6827`}([`REF`_valtype{`null?#841`, heaptype#845}(?(`NULL`_null), `_IDX`_heaptype{typeidx#457}(x_1)) `I32`_valtype `REF`_valtype{`null?#843`, heaptype#847}(?(`NULL`_null), `_IDX`_heaptype{typeidx#459}(x_2)) `I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#6876`}([]))] -[visit_exp `%`_resulttype{`X*#6827`}([`REF`_valtype{`null?#841`, heaptype#845}(?(`NULL`_null), `_IDX`_heaptype{typeidx#457}(x_1)) `I32`_valtype `REF`_valtype{`null?#843`, heaptype#847}(?(`NULL`_null), `_IDX`_heaptype{typeidx#459}(x_2)) `I32`_valtype `I32`_valtype])] -[visit_exp `X*#6827`] -[visit_id X*#6827] -[visit_exp ([`REF`_valtype{`null?#841`, heaptype#845}(?(`NULL`_null), `_IDX`_heaptype{typeidx#457}(x_1)) `I32`_valtype `REF`_valtype{`null?#843`, heaptype#847}(?(`NULL`_null), `_IDX`_heaptype{typeidx#459}(x_2)) `I32`_valtype `I32`_valtype])] -[visit_exp [`REF`_valtype{`null?#841`, heaptype#845}(?(`NULL`_null), `_IDX`_heaptype{typeidx#457}(x_1)) `I32`_valtype `REF`_valtype{`null?#843`, heaptype#847}(?(`NULL`_null), `_IDX`_heaptype{typeidx#459}(x_2)) `I32`_valtype `I32`_valtype]] -[visit_exp `REF`_valtype{`null?#841`, heaptype#845}(?(`NULL`_null), `_IDX`_heaptype{typeidx#457}(x_1))] -[visit_exp `null?#841`] -[visit_id null?#841] -[visit_exp heaptype#845] -[visit_id heaptype#845] -[visit_exp (?(`NULL`_null), `_IDX`_heaptype{typeidx#457}(x_1))] +[visit_exp `%->_%%`_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([]))] +[visit_exp (`%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x_1)) `I32`_valtype `REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x_2)) `I32`_valtype `I32`_valtype]), [], `%`_resulttype([]))] +[visit_exp `%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x_1)) `I32`_valtype `REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x_2)) `I32`_valtype `I32`_valtype])] +[visit_exp ([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x_1)) `I32`_valtype `REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x_2)) `I32`_valtype `I32`_valtype])] +[visit_exp [`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x_1)) `I32`_valtype `REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x_2)) `I32`_valtype `I32`_valtype]] +[visit_exp `REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x_1))] +[visit_exp (?(`NULL`_null), `_IDX`_heaptype(x_1))] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] [visit_exp ()] -[visit_exp `_IDX`_heaptype{typeidx#457}(x_1)] -[visit_exp typeidx#457] -[visit_id typeidx#457] +[visit_exp `_IDX`_heaptype(x_1)] [visit_exp (x_1)] [visit_exp x_1] [visit_id x_1] not free [visit_exp `I32`_valtype] [visit_exp ()] -[visit_exp `REF`_valtype{`null?#843`, heaptype#847}(?(`NULL`_null), `_IDX`_heaptype{typeidx#459}(x_2))] -[visit_exp `null?#843`] -[visit_id null?#843] -[visit_exp heaptype#847] -[visit_id heaptype#847] -[visit_exp (?(`NULL`_null), `_IDX`_heaptype{typeidx#459}(x_2))] +[visit_exp `REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x_2))] +[visit_exp (?(`NULL`_null), `_IDX`_heaptype(x_2))] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] [visit_exp ()] -[visit_exp `_IDX`_heaptype{typeidx#459}(x_2)] -[visit_exp typeidx#459] -[visit_id typeidx#459] +[visit_exp `_IDX`_heaptype(x_2)] [visit_exp (x_2)] [visit_exp x_2] [visit_id x_2] not free @@ -27174,61 +24295,39 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `I32`_valtype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#6876`}([])] -[visit_exp `X*#6876`] -[visit_id X*#6876] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] -[visit_exp (C.`TYPES`_context{`deftype*#49`}[x_1!`%`_idx{i#6787}.0], `ARRAY`_comptype{fieldtype#31}(`%%`_fieldtype{`mut?#751`, storagetype#515}(?(`MUT`_mut), zt_1)))] -[visit_exp C.`TYPES`_context{`deftype*#49`}[x_1!`%`_idx{i#6787}.0]] -[visit_exp C.`TYPES`_context{`deftype*#49`}] +[visit_exp (C.`TYPES`_context[x_1!`%`_idx.0], `ARRAY`_comptype(`%%`_fieldtype(?(`MUT`_mut), zt_1)))] +[visit_exp C.`TYPES`_context[x_1!`%`_idx.0]] +[visit_exp C.`TYPES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `deftype*#49`] -[visit_id deftype*#49] -[visit_exp x_1!`%`_idx{i#6787}.0] -[visit_exp x_1!`%`_idx{i#6787}] +[visit_exp x_1!`%`_idx.0] +[visit_exp x_1!`%`_idx] [visit_exp x_1] [visit_id x_1] not free -[visit_exp i#6787] -[visit_id i#6787] -[visit_exp `ARRAY`_comptype{fieldtype#31}(`%%`_fieldtype{`mut?#751`, storagetype#515}(?(`MUT`_mut), zt_1))] -[visit_exp fieldtype#31] -[visit_id fieldtype#31] -[visit_exp (`%%`_fieldtype{`mut?#751`, storagetype#515}(?(`MUT`_mut), zt_1))] -[visit_exp `%%`_fieldtype{`mut?#751`, storagetype#515}(?(`MUT`_mut), zt_1)] -[visit_exp `mut?#751`] -[visit_id mut?#751] -[visit_exp storagetype#515] -[visit_id storagetype#515] +[visit_exp `ARRAY`_comptype(`%%`_fieldtype(?(`MUT`_mut), zt_1))] +[visit_exp (`%%`_fieldtype(?(`MUT`_mut), zt_1))] +[visit_exp `%%`_fieldtype(?(`MUT`_mut), zt_1)] [visit_exp (?(`MUT`_mut), zt_1)] [visit_exp ?(`MUT`_mut)] [visit_exp `MUT`_mut] [visit_exp ()] [visit_exp zt_1] [visit_id zt_1] -[visit_exp (C.`TYPES`_context{`deftype*#50`}[x_2!`%`_idx{i#6797}.0], `ARRAY`_comptype{fieldtype#33}(`%%`_fieldtype{`mut?#763`, storagetype#527}(mut?{mut <- `mut?`}, zt_2)))] -[visit_exp C.`TYPES`_context{`deftype*#50`}[x_2!`%`_idx{i#6797}.0]] -[visit_exp C.`TYPES`_context{`deftype*#50`}] +[visit_exp (C.`TYPES`_context[x_2!`%`_idx.0], `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2)))] +[visit_exp C.`TYPES`_context[x_2!`%`_idx.0]] +[visit_exp C.`TYPES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `deftype*#50`] -[visit_id deftype*#50] -[visit_exp x_2!`%`_idx{i#6797}.0] -[visit_exp x_2!`%`_idx{i#6797}] +[visit_exp x_2!`%`_idx.0] +[visit_exp x_2!`%`_idx] [visit_exp x_2] [visit_id x_2] not free -[visit_exp i#6797] -[visit_id i#6797] -[visit_exp `ARRAY`_comptype{fieldtype#33}(`%%`_fieldtype{`mut?#763`, storagetype#527}(mut?{mut <- `mut?`}, zt_2))] -[visit_exp fieldtype#33] -[visit_id fieldtype#33] -[visit_exp (`%%`_fieldtype{`mut?#763`, storagetype#527}(mut?{mut <- `mut?`}, zt_2))] -[visit_exp `%%`_fieldtype{`mut?#763`, storagetype#527}(mut?{mut <- `mut?`}, zt_2)] -[visit_exp `mut?#763`] -[visit_id mut?#763] -[visit_exp storagetype#527] -[visit_id storagetype#527] +[visit_exp `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))] +[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))] +[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt_2)] [visit_exp (mut?{mut <- `mut?`}, zt_2)] [visit_exp mut?{mut <- `mut?`}] [scope_enter mut] @@ -27248,42 +24347,26 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id zt_2] not free [visit_exp zt_1] [visit_id zt_1] not free -[check_dims] C X*#6897 X*#6946 deftype*#51 elemidx#11 elemtype*#8 fieldtype#35 heaptype#849 i#6849 i#6859 localidx*#899 mut?#775 null?#845 resulttype#1495 storagetype#539 typeidx#461 typeidx#463 x y zt +[check_dims] C x y zt [visit_exp C] [visit_id C] -[visit_exp `ARRAY.INIT_ELEM`_instr{typeidx#461, elemidx#11}(x, y)] -[visit_exp typeidx#461] -[visit_id typeidx#461] -[visit_exp elemidx#11] -[visit_id elemidx#11] +[visit_exp `ARRAY.INIT_ELEM`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] [visit_exp y] [visit_id y] -[visit_exp `%->_%%`_instrtype{resulttype#1495, `localidx*#899`}(`%`_resulttype{`X*#6897`}([`REF`_valtype{`null?#845`, heaptype#849}(?(`NULL`_null), `_IDX`_heaptype{typeidx#463}(x)) `I32`_valtype `I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#6946`}([]))] -[visit_exp resulttype#1495] -[visit_id resulttype#1495] -[visit_exp `localidx*#899`] -[visit_id localidx*#899] -[visit_exp (`%`_resulttype{`X*#6897`}([`REF`_valtype{`null?#845`, heaptype#849}(?(`NULL`_null), `_IDX`_heaptype{typeidx#463}(x)) `I32`_valtype `I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#6946`}([]))] -[visit_exp `%`_resulttype{`X*#6897`}([`REF`_valtype{`null?#845`, heaptype#849}(?(`NULL`_null), `_IDX`_heaptype{typeidx#463}(x)) `I32`_valtype `I32`_valtype `I32`_valtype])] -[visit_exp `X*#6897`] -[visit_id X*#6897] -[visit_exp ([`REF`_valtype{`null?#845`, heaptype#849}(?(`NULL`_null), `_IDX`_heaptype{typeidx#463}(x)) `I32`_valtype `I32`_valtype `I32`_valtype])] -[visit_exp [`REF`_valtype{`null?#845`, heaptype#849}(?(`NULL`_null), `_IDX`_heaptype{typeidx#463}(x)) `I32`_valtype `I32`_valtype `I32`_valtype]] -[visit_exp `REF`_valtype{`null?#845`, heaptype#849}(?(`NULL`_null), `_IDX`_heaptype{typeidx#463}(x))] -[visit_exp `null?#845`] -[visit_id null?#845] -[visit_exp heaptype#849] -[visit_id heaptype#849] -[visit_exp (?(`NULL`_null), `_IDX`_heaptype{typeidx#463}(x))] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype `I32`_valtype `I32`_valtype]), [], `%`_resulttype([]))] +[visit_exp (`%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype `I32`_valtype `I32`_valtype]), [], `%`_resulttype([]))] +[visit_exp `%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype `I32`_valtype `I32`_valtype])] +[visit_exp ([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype `I32`_valtype `I32`_valtype])] +[visit_exp [`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype `I32`_valtype `I32`_valtype]] +[visit_exp `REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))] +[visit_exp (?(`NULL`_null), `_IDX`_heaptype(x))] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] [visit_exp ()] -[visit_exp `_IDX`_heaptype{typeidx#463}(x)] -[visit_exp typeidx#463] -[visit_id typeidx#463] +[visit_exp `_IDX`_heaptype(x)] [visit_exp (x)] [visit_exp x] [visit_id x] not free @@ -27294,93 +24377,61 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `I32`_valtype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#6946`}([])] -[visit_exp `X*#6946`] -[visit_id X*#6946] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] -[visit_exp (C.`TYPES`_context{`deftype*#51`}[x!`%`_idx{i#6849}.0], `ARRAY`_comptype{fieldtype#35}(`%%`_fieldtype{`mut?#775`, storagetype#539}(?(`MUT`_mut), zt)))] -[visit_exp C.`TYPES`_context{`deftype*#51`}[x!`%`_idx{i#6849}.0]] -[visit_exp C.`TYPES`_context{`deftype*#51`}] +[visit_exp (C.`TYPES`_context[x!`%`_idx.0], `ARRAY`_comptype(`%%`_fieldtype(?(`MUT`_mut), zt)))] +[visit_exp C.`TYPES`_context[x!`%`_idx.0]] +[visit_exp C.`TYPES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `deftype*#51`] -[visit_id deftype*#51] -[visit_exp x!`%`_idx{i#6849}.0] -[visit_exp x!`%`_idx{i#6849}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#6849] -[visit_id i#6849] -[visit_exp `ARRAY`_comptype{fieldtype#35}(`%%`_fieldtype{`mut?#775`, storagetype#539}(?(`MUT`_mut), zt))] -[visit_exp fieldtype#35] -[visit_id fieldtype#35] -[visit_exp (`%%`_fieldtype{`mut?#775`, storagetype#539}(?(`MUT`_mut), zt))] -[visit_exp `%%`_fieldtype{`mut?#775`, storagetype#539}(?(`MUT`_mut), zt)] -[visit_exp `mut?#775`] -[visit_id mut?#775] -[visit_exp storagetype#539] -[visit_id storagetype#539] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `ARRAY`_comptype(`%%`_fieldtype(?(`MUT`_mut), zt))] +[visit_exp (`%%`_fieldtype(?(`MUT`_mut), zt))] +[visit_exp `%%`_fieldtype(?(`MUT`_mut), zt)] [visit_exp (?(`MUT`_mut), zt)] [visit_exp ?(`MUT`_mut)] [visit_exp `MUT`_mut] [visit_exp ()] [visit_exp zt] [visit_id zt] -[visit_exp (C, (C.`ELEMS`_context{`elemtype*#8`}[y!`%`_idx{i#6859}.0] : reftype <: storagetype), zt)] +[visit_exp (C, (C.`ELEMS`_context[y!`%`_idx.0] : reftype <: storagetype), zt)] [visit_exp C] [visit_id C] not free -[visit_exp (C.`ELEMS`_context{`elemtype*#8`}[y!`%`_idx{i#6859}.0] : reftype <: storagetype)] -[visit_exp C.`ELEMS`_context{`elemtype*#8`}[y!`%`_idx{i#6859}.0]] -[visit_exp C.`ELEMS`_context{`elemtype*#8`}] +[visit_exp (C.`ELEMS`_context[y!`%`_idx.0] : reftype <: storagetype)] +[visit_exp C.`ELEMS`_context[y!`%`_idx.0]] +[visit_exp C.`ELEMS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `elemtype*#8`] -[visit_id elemtype*#8] -[visit_exp y!`%`_idx{i#6859}.0] -[visit_exp y!`%`_idx{i#6859}] +[visit_exp y!`%`_idx.0] +[visit_exp y!`%`_idx] [visit_exp y] [visit_id y] not free -[visit_exp i#6859] -[visit_id i#6859] [visit_exp zt] [visit_id zt] not free -[check_dims] C X*#6967 X*#7016 dataidx#11 datatype*#8 deftype*#52 fieldtype#37 heaptype#851 i#6911 i#6921 localidx*#911 mut?#787 null?#847 numtype resulttype#1515 storagetype#551 typeidx#465 typeidx#467 vectype x y zt +[check_dims] C numtype vectype x y zt [visit_exp C] [visit_id C] -[visit_exp `ARRAY.INIT_DATA`_instr{typeidx#465, dataidx#11}(x, y)] -[visit_exp typeidx#465] -[visit_id typeidx#465] -[visit_exp dataidx#11] -[visit_id dataidx#11] +[visit_exp `ARRAY.INIT_DATA`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] [visit_exp y] [visit_id y] -[visit_exp `%->_%%`_instrtype{resulttype#1515, `localidx*#911`}(`%`_resulttype{`X*#6967`}([`REF`_valtype{`null?#847`, heaptype#851}(?(`NULL`_null), `_IDX`_heaptype{typeidx#467}(x)) `I32`_valtype `I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#7016`}([]))] -[visit_exp resulttype#1515] -[visit_id resulttype#1515] -[visit_exp `localidx*#911`] -[visit_id localidx*#911] -[visit_exp (`%`_resulttype{`X*#6967`}([`REF`_valtype{`null?#847`, heaptype#851}(?(`NULL`_null), `_IDX`_heaptype{typeidx#467}(x)) `I32`_valtype `I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#7016`}([]))] -[visit_exp `%`_resulttype{`X*#6967`}([`REF`_valtype{`null?#847`, heaptype#851}(?(`NULL`_null), `_IDX`_heaptype{typeidx#467}(x)) `I32`_valtype `I32`_valtype `I32`_valtype])] -[visit_exp `X*#6967`] -[visit_id X*#6967] -[visit_exp ([`REF`_valtype{`null?#847`, heaptype#851}(?(`NULL`_null), `_IDX`_heaptype{typeidx#467}(x)) `I32`_valtype `I32`_valtype `I32`_valtype])] -[visit_exp [`REF`_valtype{`null?#847`, heaptype#851}(?(`NULL`_null), `_IDX`_heaptype{typeidx#467}(x)) `I32`_valtype `I32`_valtype `I32`_valtype]] -[visit_exp `REF`_valtype{`null?#847`, heaptype#851}(?(`NULL`_null), `_IDX`_heaptype{typeidx#467}(x))] -[visit_exp `null?#847`] -[visit_id null?#847] -[visit_exp heaptype#851] -[visit_id heaptype#851] -[visit_exp (?(`NULL`_null), `_IDX`_heaptype{typeidx#467}(x))] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype `I32`_valtype `I32`_valtype]), [], `%`_resulttype([]))] +[visit_exp (`%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype `I32`_valtype `I32`_valtype]), [], `%`_resulttype([]))] +[visit_exp `%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype `I32`_valtype `I32`_valtype])] +[visit_exp ([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype `I32`_valtype `I32`_valtype])] +[visit_exp [`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype `I32`_valtype `I32`_valtype]] +[visit_exp `REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))] +[visit_exp (?(`NULL`_null), `_IDX`_heaptype(x))] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] [visit_exp ()] -[visit_exp `_IDX`_heaptype{typeidx#467}(x)] -[visit_exp typeidx#467] -[visit_id typeidx#467] +[visit_exp `_IDX`_heaptype(x)] [visit_exp (x)] [visit_exp x] [visit_id x] not free @@ -27391,33 +24442,21 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `I32`_valtype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#7016`}([])] -[visit_exp `X*#7016`] -[visit_id X*#7016] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] -[visit_exp (C.`TYPES`_context{`deftype*#52`}[x!`%`_idx{i#6911}.0], `ARRAY`_comptype{fieldtype#37}(`%%`_fieldtype{`mut?#787`, storagetype#551}(?(`MUT`_mut), zt)))] -[visit_exp C.`TYPES`_context{`deftype*#52`}[x!`%`_idx{i#6911}.0]] -[visit_exp C.`TYPES`_context{`deftype*#52`}] +[visit_exp (C.`TYPES`_context[x!`%`_idx.0], `ARRAY`_comptype(`%%`_fieldtype(?(`MUT`_mut), zt)))] +[visit_exp C.`TYPES`_context[x!`%`_idx.0]] +[visit_exp C.`TYPES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `deftype*#52`] -[visit_id deftype*#52] -[visit_exp x!`%`_idx{i#6911}.0] -[visit_exp x!`%`_idx{i#6911}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#6911] -[visit_id i#6911] -[visit_exp `ARRAY`_comptype{fieldtype#37}(`%%`_fieldtype{`mut?#787`, storagetype#551}(?(`MUT`_mut), zt))] -[visit_exp fieldtype#37] -[visit_id fieldtype#37] -[visit_exp (`%%`_fieldtype{`mut?#787`, storagetype#551}(?(`MUT`_mut), zt))] -[visit_exp `%%`_fieldtype{`mut?#787`, storagetype#551}(?(`MUT`_mut), zt)] -[visit_exp `mut?#787`] -[visit_id mut?#787] -[visit_exp storagetype#551] -[visit_id storagetype#551] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `ARRAY`_comptype(`%%`_fieldtype(?(`MUT`_mut), zt))] +[visit_exp (`%%`_fieldtype(?(`MUT`_mut), zt))] +[visit_exp `%%`_fieldtype(?(`MUT`_mut), zt)] [visit_exp (?(`MUT`_mut), zt)] [visit_exp ?(`MUT`_mut)] [visit_exp `MUT`_mut] @@ -27439,42 +24478,28 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp (vectype : vectype <: valtype)] [visit_exp vectype] [visit_id vectype] -[visit_exp (C.`DATAS`_context{`datatype*#8`}[y!`%`_idx{i#6921}.0] = `OK`_datatype)] -[visit_exp C.`DATAS`_context{`datatype*#8`}[y!`%`_idx{i#6921}.0]] -[visit_exp C.`DATAS`_context{`datatype*#8`}] +[visit_exp (C.`DATAS`_context[y!`%`_idx.0] = `OK`_datatype)] +[visit_exp C.`DATAS`_context[y!`%`_idx.0]] +[visit_exp C.`DATAS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `datatype*#8`] -[visit_id datatype*#8] -[visit_exp y!`%`_idx{i#6921}.0] -[visit_exp y!`%`_idx{i#6921}] +[visit_exp y!`%`_idx.0] +[visit_exp y!`%`_idx] [visit_exp y] [visit_id y] not free -[visit_exp i#6921] -[visit_id i#6921] [visit_exp `OK`_datatype] [visit_exp ()] -[check_dims] C X*#7037 X*#7086 heaptype#853 heaptype#855 localidx*#923 null?#849 null?#851 null_1 null_2 resulttype#1535 +[check_dims] C null_1 null_2 [visit_exp C] [visit_id C] [visit_exp `EXTERN.CONVERT_ANY`_instr] [visit_exp ()] -[visit_exp `%->_%%`_instrtype{resulttype#1535, `localidx*#923`}(`%`_resulttype{`X*#7037`}([`REF`_valtype{`null?#849`, heaptype#853}(null_1?{null_1 <- `null_1?`}, `ANY`_heaptype)]), [], `%`_resulttype{`X*#7086`}([`REF`_valtype{`null?#851`, heaptype#855}(null_2?{null_2 <- `null_2?`}, `EXTERN`_heaptype)]))] -[visit_exp resulttype#1535] -[visit_id resulttype#1535] -[visit_exp `localidx*#923`] -[visit_id localidx*#923] -[visit_exp (`%`_resulttype{`X*#7037`}([`REF`_valtype{`null?#849`, heaptype#853}(null_1?{null_1 <- `null_1?`}, `ANY`_heaptype)]), [], `%`_resulttype{`X*#7086`}([`REF`_valtype{`null?#851`, heaptype#855}(null_2?{null_2 <- `null_2?`}, `EXTERN`_heaptype)]))] -[visit_exp `%`_resulttype{`X*#7037`}([`REF`_valtype{`null?#849`, heaptype#853}(null_1?{null_1 <- `null_1?`}, `ANY`_heaptype)])] -[visit_exp `X*#7037`] -[visit_id X*#7037] -[visit_exp ([`REF`_valtype{`null?#849`, heaptype#853}(null_1?{null_1 <- `null_1?`}, `ANY`_heaptype)])] -[visit_exp [`REF`_valtype{`null?#849`, heaptype#853}(null_1?{null_1 <- `null_1?`}, `ANY`_heaptype)]] -[visit_exp `REF`_valtype{`null?#849`, heaptype#853}(null_1?{null_1 <- `null_1?`}, `ANY`_heaptype)] -[visit_exp `null?#849`] -[visit_id null?#849] -[visit_exp heaptype#853] -[visit_id heaptype#853] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([`REF`_valtype(null_1?{null_1 <- `null_1?`}, `ANY`_heaptype)]), [], `%`_resulttype([`REF`_valtype(null_2?{null_2 <- `null_2?`}, `EXTERN`_heaptype)]))] +[visit_exp (`%`_resulttype([`REF`_valtype(null_1?{null_1 <- `null_1?`}, `ANY`_heaptype)]), [], `%`_resulttype([`REF`_valtype(null_2?{null_2 <- `null_2?`}, `EXTERN`_heaptype)]))] +[visit_exp `%`_resulttype([`REF`_valtype(null_1?{null_1 <- `null_1?`}, `ANY`_heaptype)])] +[visit_exp ([`REF`_valtype(null_1?{null_1 <- `null_1?`}, `ANY`_heaptype)])] +[visit_exp [`REF`_valtype(null_1?{null_1 <- `null_1?`}, `ANY`_heaptype)]] +[visit_exp `REF`_valtype(null_1?{null_1 <- `null_1?`}, `ANY`_heaptype)] [visit_exp (null_1?{null_1 <- `null_1?`}, `ANY`_heaptype)] [visit_exp null_1?{null_1 <- `null_1?`}] [scope_enter null_1] @@ -27488,16 +24513,10 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `ANY`_heaptype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#7086`}([`REF`_valtype{`null?#851`, heaptype#855}(null_2?{null_2 <- `null_2?`}, `EXTERN`_heaptype)])] -[visit_exp `X*#7086`] -[visit_id X*#7086] -[visit_exp ([`REF`_valtype{`null?#851`, heaptype#855}(null_2?{null_2 <- `null_2?`}, `EXTERN`_heaptype)])] -[visit_exp [`REF`_valtype{`null?#851`, heaptype#855}(null_2?{null_2 <- `null_2?`}, `EXTERN`_heaptype)]] -[visit_exp `REF`_valtype{`null?#851`, heaptype#855}(null_2?{null_2 <- `null_2?`}, `EXTERN`_heaptype)] -[visit_exp `null?#851`] -[visit_id null?#851] -[visit_exp heaptype#855] -[visit_id heaptype#855] +[visit_exp `%`_resulttype([`REF`_valtype(null_2?{null_2 <- `null_2?`}, `EXTERN`_heaptype)])] +[visit_exp ([`REF`_valtype(null_2?{null_2 <- `null_2?`}, `EXTERN`_heaptype)])] +[visit_exp [`REF`_valtype(null_2?{null_2 <- `null_2?`}, `EXTERN`_heaptype)]] +[visit_exp `REF`_valtype(null_2?{null_2 <- `null_2?`}, `EXTERN`_heaptype)] [visit_exp (null_2?{null_2 <- `null_2?`}, `EXTERN`_heaptype)] [visit_exp null_2?{null_2 <- `null_2?`}] [scope_enter null_2] @@ -27529,27 +24548,17 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `null_2?`] [visit_id null_2?] not free [visit_id null_2?] no dims -[check_dims] C X*#7107 X*#7156 heaptype#857 heaptype#859 localidx*#935 null?#853 null?#855 null_1 null_2 resulttype#1555 +[check_dims] C null_1 null_2 [visit_exp C] [visit_id C] [visit_exp `ANY.CONVERT_EXTERN`_instr] [visit_exp ()] -[visit_exp `%->_%%`_instrtype{resulttype#1555, `localidx*#935`}(`%`_resulttype{`X*#7107`}([`REF`_valtype{`null?#853`, heaptype#857}(null_1?{null_1 <- `null_1?`}, `EXTERN`_heaptype)]), [], `%`_resulttype{`X*#7156`}([`REF`_valtype{`null?#855`, heaptype#859}(null_2?{null_2 <- `null_2?`}, `ANY`_heaptype)]))] -[visit_exp resulttype#1555] -[visit_id resulttype#1555] -[visit_exp `localidx*#935`] -[visit_id localidx*#935] -[visit_exp (`%`_resulttype{`X*#7107`}([`REF`_valtype{`null?#853`, heaptype#857}(null_1?{null_1 <- `null_1?`}, `EXTERN`_heaptype)]), [], `%`_resulttype{`X*#7156`}([`REF`_valtype{`null?#855`, heaptype#859}(null_2?{null_2 <- `null_2?`}, `ANY`_heaptype)]))] -[visit_exp `%`_resulttype{`X*#7107`}([`REF`_valtype{`null?#853`, heaptype#857}(null_1?{null_1 <- `null_1?`}, `EXTERN`_heaptype)])] -[visit_exp `X*#7107`] -[visit_id X*#7107] -[visit_exp ([`REF`_valtype{`null?#853`, heaptype#857}(null_1?{null_1 <- `null_1?`}, `EXTERN`_heaptype)])] -[visit_exp [`REF`_valtype{`null?#853`, heaptype#857}(null_1?{null_1 <- `null_1?`}, `EXTERN`_heaptype)]] -[visit_exp `REF`_valtype{`null?#853`, heaptype#857}(null_1?{null_1 <- `null_1?`}, `EXTERN`_heaptype)] -[visit_exp `null?#853`] -[visit_id null?#853] -[visit_exp heaptype#857] -[visit_id heaptype#857] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([`REF`_valtype(null_1?{null_1 <- `null_1?`}, `EXTERN`_heaptype)]), [], `%`_resulttype([`REF`_valtype(null_2?{null_2 <- `null_2?`}, `ANY`_heaptype)]))] +[visit_exp (`%`_resulttype([`REF`_valtype(null_1?{null_1 <- `null_1?`}, `EXTERN`_heaptype)]), [], `%`_resulttype([`REF`_valtype(null_2?{null_2 <- `null_2?`}, `ANY`_heaptype)]))] +[visit_exp `%`_resulttype([`REF`_valtype(null_1?{null_1 <- `null_1?`}, `EXTERN`_heaptype)])] +[visit_exp ([`REF`_valtype(null_1?{null_1 <- `null_1?`}, `EXTERN`_heaptype)])] +[visit_exp [`REF`_valtype(null_1?{null_1 <- `null_1?`}, `EXTERN`_heaptype)]] +[visit_exp `REF`_valtype(null_1?{null_1 <- `null_1?`}, `EXTERN`_heaptype)] [visit_exp (null_1?{null_1 <- `null_1?`}, `EXTERN`_heaptype)] [visit_exp null_1?{null_1 <- `null_1?`}] [scope_enter null_1] @@ -27563,16 +24572,10 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `EXTERN`_heaptype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#7156`}([`REF`_valtype{`null?#855`, heaptype#859}(null_2?{null_2 <- `null_2?`}, `ANY`_heaptype)])] -[visit_exp `X*#7156`] -[visit_id X*#7156] -[visit_exp ([`REF`_valtype{`null?#855`, heaptype#859}(null_2?{null_2 <- `null_2?`}, `ANY`_heaptype)])] -[visit_exp [`REF`_valtype{`null?#855`, heaptype#859}(null_2?{null_2 <- `null_2?`}, `ANY`_heaptype)]] -[visit_exp `REF`_valtype{`null?#855`, heaptype#859}(null_2?{null_2 <- `null_2?`}, `ANY`_heaptype)] -[visit_exp `null?#855`] -[visit_id null?#855] -[visit_exp heaptype#859] -[visit_id heaptype#859] +[visit_exp `%`_resulttype([`REF`_valtype(null_2?{null_2 <- `null_2?`}, `ANY`_heaptype)])] +[visit_exp ([`REF`_valtype(null_2?{null_2 <- `null_2?`}, `ANY`_heaptype)])] +[visit_exp [`REF`_valtype(null_2?{null_2 <- `null_2?`}, `ANY`_heaptype)]] +[visit_exp `REF`_valtype(null_2?{null_2 <- `null_2?`}, `ANY`_heaptype)] [visit_exp (null_2?{null_2 <- `null_2?`}, `ANY`_heaptype)] [visit_exp null_2?{null_2 <- `null_2?`}] [scope_enter null_2] @@ -27604,75 +24607,49 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `null_2?`] [visit_id null_2?] not free [visit_id null_2?] no dims -[check_dims] C X*#7177 X*#7226 i#6945 init#77 localidx#7 localidx*#947 localtype*#10 resulttype#1575 t valtype#343 x +[check_dims] C t x [visit_exp C] [visit_id C] -[visit_exp `LOCAL.GET`_instr{localidx#7}(x)] -[visit_exp localidx#7] -[visit_id localidx#7] +[visit_exp `LOCAL.GET`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%->_%%`_instrtype{resulttype#1575, `localidx*#947`}(`%`_resulttype{`X*#7177`}([]), [], `%`_resulttype{`X*#7226`}([t]))] -[visit_exp resulttype#1575] -[visit_id resulttype#1575] -[visit_exp `localidx*#947`] -[visit_id localidx*#947] -[visit_exp (`%`_resulttype{`X*#7177`}([]), [], `%`_resulttype{`X*#7226`}([t]))] -[visit_exp `%`_resulttype{`X*#7177`}([])] -[visit_exp `X*#7177`] -[visit_id X*#7177] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))] +[visit_exp (`%`_resulttype([]), [], `%`_resulttype([t]))] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] [visit_exp []] -[visit_exp `%`_resulttype{`X*#7226`}([t])] -[visit_exp `X*#7226`] -[visit_id X*#7226] +[visit_exp `%`_resulttype([t])] [visit_exp ([t])] [visit_exp [t]] [visit_exp t] [visit_id t] -[visit_exp (C.`LOCALS`_context{`localtype*#10`}[x!`%`_idx{i#6945}.0] = `%%`_localtype{init#77, valtype#343}(`SET`_init, t))] -[visit_exp C.`LOCALS`_context{`localtype*#10`}[x!`%`_idx{i#6945}.0]] -[visit_exp C.`LOCALS`_context{`localtype*#10`}] +[visit_exp (C.`LOCALS`_context[x!`%`_idx.0] = `%%`_localtype(`SET`_init, t))] +[visit_exp C.`LOCALS`_context[x!`%`_idx.0]] +[visit_exp C.`LOCALS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `localtype*#10`] -[visit_id localtype*#10] -[visit_exp x!`%`_idx{i#6945}.0] -[visit_exp x!`%`_idx{i#6945}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#6945] -[visit_id i#6945] -[visit_exp `%%`_localtype{init#77, valtype#343}(`SET`_init, t)] -[visit_exp init#77] -[visit_id init#77] -[visit_exp valtype#343] -[visit_id valtype#343] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `%%`_localtype(`SET`_init, t)] [visit_exp (`SET`_init, t)] [visit_exp `SET`_init] [visit_exp ()] [visit_exp t] [visit_id t] not free -[check_dims] C X*#7237 X*#7334 i#7182 init init#89 localidx#9 localidx*#959 localtype*#11 resulttype#1595 t valtype#355 x +[check_dims] C init t x [visit_exp C] [visit_id C] -[visit_exp `LOCAL.SET`_instr{localidx#9}(x)] -[visit_exp localidx#9] -[visit_id localidx#9] +[visit_exp `LOCAL.SET`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%->_%%`_instrtype{resulttype#1595, `localidx*#959`}(`%`_resulttype{`X*#7237`}([t]), [x], `%`_resulttype{`X*#7334`}([]))] -[visit_exp resulttype#1595] -[visit_id resulttype#1595] -[visit_exp `localidx*#959`] -[visit_id localidx*#959] -[visit_exp (`%`_resulttype{`X*#7237`}([t]), [x], `%`_resulttype{`X*#7334`}([]))] -[visit_exp `%`_resulttype{`X*#7237`}([t])] -[visit_exp `X*#7237`] -[visit_id X*#7237] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))] +[visit_exp (`%`_resulttype([t]), [x], `%`_resulttype([]))] +[visit_exp `%`_resulttype([t])] [visit_exp ([t])] [visit_exp [t]] [visit_exp t] @@ -27680,52 +24657,34 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp [x]] [visit_exp x] [visit_id x] not free -[visit_exp `%`_resulttype{`X*#7334`}([])] -[visit_exp `X*#7334`] -[visit_id X*#7334] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] -[visit_exp (C.`LOCALS`_context{`localtype*#11`}[x!`%`_idx{i#7182}.0] = `%%`_localtype{init#89, valtype#355}(init, t))] -[visit_exp C.`LOCALS`_context{`localtype*#11`}[x!`%`_idx{i#7182}.0]] -[visit_exp C.`LOCALS`_context{`localtype*#11`}] +[visit_exp (C.`LOCALS`_context[x!`%`_idx.0] = `%%`_localtype(init, t))] +[visit_exp C.`LOCALS`_context[x!`%`_idx.0]] +[visit_exp C.`LOCALS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `localtype*#11`] -[visit_id localtype*#11] -[visit_exp x!`%`_idx{i#7182}.0] -[visit_exp x!`%`_idx{i#7182}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#7182] -[visit_id i#7182] -[visit_exp `%%`_localtype{init#89, valtype#355}(init, t)] -[visit_exp init#89] -[visit_id init#89] -[visit_exp valtype#355] -[visit_id valtype#355] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `%%`_localtype(init, t)] [visit_exp (init, t)] [visit_exp init] [visit_id init] [visit_exp t] [visit_id t] not free -[check_dims] C X*#7345 X*#7432 i#7419 init init#101 localidx#11 localidx*#971 localtype*#12 resulttype#1615 t valtype#367 x +[check_dims] C init t x [visit_exp C] [visit_id C] -[visit_exp `LOCAL.TEE`_instr{localidx#11}(x)] -[visit_exp localidx#11] -[visit_id localidx#11] +[visit_exp `LOCAL.TEE`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%->_%%`_instrtype{resulttype#1615, `localidx*#971`}(`%`_resulttype{`X*#7345`}([t]), [x], `%`_resulttype{`X*#7432`}([t]))] -[visit_exp resulttype#1615] -[visit_id resulttype#1615] -[visit_exp `localidx*#971`] -[visit_id localidx*#971] -[visit_exp (`%`_resulttype{`X*#7345`}([t]), [x], `%`_resulttype{`X*#7432`}([t]))] -[visit_exp `%`_resulttype{`X*#7345`}([t])] -[visit_exp `X*#7345`] -[visit_id X*#7345] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))] +[visit_exp (`%`_resulttype([t]), [x], `%`_resulttype([t]))] +[visit_exp `%`_resulttype([t])] [visit_exp ([t])] [visit_exp [t]] [visit_exp t] @@ -27733,82 +24692,54 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp [x]] [visit_exp x] [visit_id x] not free -[visit_exp `%`_resulttype{`X*#7432`}([t])] -[visit_exp `X*#7432`] -[visit_id X*#7432] +[visit_exp `%`_resulttype([t])] [visit_exp ([t])] [visit_exp [t]] [visit_exp t] [visit_id t] not free -[visit_exp (C.`LOCALS`_context{`localtype*#12`}[x!`%`_idx{i#7419}.0] = `%%`_localtype{init#101, valtype#367}(init, t))] -[visit_exp C.`LOCALS`_context{`localtype*#12`}[x!`%`_idx{i#7419}.0]] -[visit_exp C.`LOCALS`_context{`localtype*#12`}] +[visit_exp (C.`LOCALS`_context[x!`%`_idx.0] = `%%`_localtype(init, t))] +[visit_exp C.`LOCALS`_context[x!`%`_idx.0]] +[visit_exp C.`LOCALS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `localtype*#12`] -[visit_id localtype*#12] -[visit_exp x!`%`_idx{i#7419}.0] -[visit_exp x!`%`_idx{i#7419}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#7419] -[visit_id i#7419] -[visit_exp `%%`_localtype{init#101, valtype#367}(init, t)] -[visit_exp init#101] -[visit_id init#101] -[visit_exp valtype#367] -[visit_id valtype#367] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `%%`_localtype(init, t)] [visit_exp (init, t)] [visit_exp init] [visit_id init] [visit_exp t] [visit_id t] not free -[check_dims] C X*#7472 X*#7521 globalidx#9 globaltype*#7 i#7443 localidx*#983 mut mut?#799 resulttype#1635 t valtype#379 x +[check_dims] C mut t x [visit_exp C] [visit_id C] -[visit_exp `GLOBAL.GET`_instr{globalidx#9}(x)] -[visit_exp globalidx#9] -[visit_id globalidx#9] +[visit_exp `GLOBAL.GET`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%->_%%`_instrtype{resulttype#1635, `localidx*#983`}(`%`_resulttype{`X*#7472`}([]), [], `%`_resulttype{`X*#7521`}([t]))] -[visit_exp resulttype#1635] -[visit_id resulttype#1635] -[visit_exp `localidx*#983`] -[visit_id localidx*#983] -[visit_exp (`%`_resulttype{`X*#7472`}([]), [], `%`_resulttype{`X*#7521`}([t]))] -[visit_exp `%`_resulttype{`X*#7472`}([])] -[visit_exp `X*#7472`] -[visit_id X*#7472] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))] +[visit_exp (`%`_resulttype([]), [], `%`_resulttype([t]))] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] [visit_exp []] -[visit_exp `%`_resulttype{`X*#7521`}([t])] -[visit_exp `X*#7521`] -[visit_id X*#7521] +[visit_exp `%`_resulttype([t])] [visit_exp ([t])] [visit_exp [t]] [visit_exp t] [visit_id t] -[visit_exp (C.`GLOBALS`_context{`globaltype*#7`}[x!`%`_idx{i#7443}.0] = `%%`_globaltype{`mut?#799`, valtype#379}(mut?{mut <- `mut?`}, t))] -[visit_exp C.`GLOBALS`_context{`globaltype*#7`}[x!`%`_idx{i#7443}.0]] -[visit_exp C.`GLOBALS`_context{`globaltype*#7`}] +[visit_exp (C.`GLOBALS`_context[x!`%`_idx.0] = `%%`_globaltype(mut?{mut <- `mut?`}, t))] +[visit_exp C.`GLOBALS`_context[x!`%`_idx.0]] +[visit_exp C.`GLOBALS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `globaltype*#7`] -[visit_id globaltype*#7] -[visit_exp x!`%`_idx{i#7443}.0] -[visit_exp x!`%`_idx{i#7443}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#7443] -[visit_id i#7443] -[visit_exp `%%`_globaltype{`mut?#799`, valtype#379}(mut?{mut <- `mut?`}, t)] -[visit_exp `mut?#799`] -[visit_id mut?#799] -[visit_exp valtype#379] -[visit_id valtype#379] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `%%`_globaltype(mut?{mut <- `mut?`}, t)] [visit_exp (mut?{mut <- `mut?`}, t)] [visit_exp mut?{mut <- `mut?`}] [scope_enter mut] @@ -27821,110 +24752,72 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id mut?] [visit_exp t] [visit_id t] not free -[check_dims] C X*#7532 X*#7600 globalidx#11 globaltype*#8 i#7467 localidx*#995 mut?#811 resulttype#1655 t valtype#391 x +[check_dims] C t x [visit_exp C] [visit_id C] -[visit_exp `GLOBAL.SET`_instr{globalidx#11}(x)] -[visit_exp globalidx#11] -[visit_id globalidx#11] +[visit_exp `GLOBAL.SET`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%->_%%`_instrtype{resulttype#1655, `localidx*#995`}(`%`_resulttype{`X*#7532`}([t]), [], `%`_resulttype{`X*#7600`}([]))] -[visit_exp resulttype#1655] -[visit_id resulttype#1655] -[visit_exp `localidx*#995`] -[visit_id localidx*#995] -[visit_exp (`%`_resulttype{`X*#7532`}([t]), [], `%`_resulttype{`X*#7600`}([]))] -[visit_exp `%`_resulttype{`X*#7532`}([t])] -[visit_exp `X*#7532`] -[visit_id X*#7532] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))] +[visit_exp (`%`_resulttype([t]), [], `%`_resulttype([]))] +[visit_exp `%`_resulttype([t])] [visit_exp ([t])] [visit_exp [t]] [visit_exp t] [visit_id t] [visit_exp []] -[visit_exp `%`_resulttype{`X*#7600`}([])] -[visit_exp `X*#7600`] -[visit_id X*#7600] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] -[visit_exp (C.`GLOBALS`_context{`globaltype*#8`}[x!`%`_idx{i#7467}.0] = `%%`_globaltype{`mut?#811`, valtype#391}(?(`MUT`_mut), t))] -[visit_exp C.`GLOBALS`_context{`globaltype*#8`}[x!`%`_idx{i#7467}.0]] -[visit_exp C.`GLOBALS`_context{`globaltype*#8`}] +[visit_exp (C.`GLOBALS`_context[x!`%`_idx.0] = `%%`_globaltype(?(`MUT`_mut), t))] +[visit_exp C.`GLOBALS`_context[x!`%`_idx.0]] +[visit_exp C.`GLOBALS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `globaltype*#8`] -[visit_id globaltype*#8] -[visit_exp x!`%`_idx{i#7467}.0] -[visit_exp x!`%`_idx{i#7467}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#7467] -[visit_id i#7467] -[visit_exp `%%`_globaltype{`mut?#811`, valtype#391}(?(`MUT`_mut), t)] -[visit_exp `mut?#811`] -[visit_id mut?#811] -[visit_exp valtype#391] -[visit_id valtype#391] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `%%`_globaltype(?(`MUT`_mut), t)] [visit_exp (?(`MUT`_mut), t)] [visit_exp ?(`MUT`_mut)] [visit_exp `MUT`_mut] [visit_exp ()] [visit_exp t] [visit_id t] not free -[check_dims] C X*#7611 X*#7679 addrtype#465 at i#7491 lim limits#465 localidx*#1007 reftype#417 resulttype#1675 rt tableidx#30 tabletype*#9 x +[check_dims] C at lim rt x [visit_exp C] [visit_id C] -[visit_exp `TABLE.GET`_instr{tableidx#30}(x)] -[visit_exp tableidx#30] -[visit_id tableidx#30] +[visit_exp `TABLE.GET`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%->_%%`_instrtype{resulttype#1675, `localidx*#1007`}(`%`_resulttype{`X*#7611`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#7679`}([(rt : reftype <: valtype)]))] -[visit_exp resulttype#1675] -[visit_id resulttype#1675] -[visit_exp `localidx*#1007`] -[visit_id localidx*#1007] -[visit_exp (`%`_resulttype{`X*#7611`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#7679`}([(rt : reftype <: valtype)]))] -[visit_exp `%`_resulttype{`X*#7611`}([(at : addrtype <: valtype)])] -[visit_exp `X*#7611`] -[visit_id X*#7611] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))] +[visit_exp (`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))] +[visit_exp `%`_resulttype([(at : addrtype <: valtype)])] [visit_exp ([(at : addrtype <: valtype)])] [visit_exp [(at : addrtype <: valtype)]] [visit_exp (at : addrtype <: valtype)] [visit_exp at] [visit_id at] [visit_exp []] -[visit_exp `%`_resulttype{`X*#7679`}([(rt : reftype <: valtype)])] -[visit_exp `X*#7679`] -[visit_id X*#7679] +[visit_exp `%`_resulttype([(rt : reftype <: valtype)])] [visit_exp ([(rt : reftype <: valtype)])] [visit_exp [(rt : reftype <: valtype)]] [visit_exp (rt : reftype <: valtype)] [visit_exp rt] [visit_id rt] -[visit_exp (C.`TABLES`_context{`tabletype*#9`}[x!`%`_idx{i#7491}.0] = `%%%`_tabletype{addrtype#465, limits#465, reftype#417}(at, lim, rt))] -[visit_exp C.`TABLES`_context{`tabletype*#9`}[x!`%`_idx{i#7491}.0]] -[visit_exp C.`TABLES`_context{`tabletype*#9`}] +[visit_exp (C.`TABLES`_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt))] +[visit_exp C.`TABLES`_context[x!`%`_idx.0]] +[visit_exp C.`TABLES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `tabletype*#9`] -[visit_id tabletype*#9] -[visit_exp x!`%`_idx{i#7491}.0] -[visit_exp x!`%`_idx{i#7491}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#7491] -[visit_id i#7491] -[visit_exp `%%%`_tabletype{addrtype#465, limits#465, reftype#417}(at, lim, rt)] -[visit_exp addrtype#465] -[visit_id addrtype#465] -[visit_exp limits#465] -[visit_id limits#465] -[visit_exp reftype#417] -[visit_id reftype#417] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `%%%`_tabletype(at, lim, rt)] [visit_exp (at, lim, rt)] [visit_exp at] [visit_id at] not free @@ -27932,24 +24825,16 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id lim] [visit_exp rt] [visit_id rt] not free -[check_dims] C X*#7700 X*#7749 addrtype#477 at i#7515 lim limits#477 localidx*#1019 reftype#429 resulttype#1695 rt tableidx#32 tabletype*#10 x +[check_dims] C at lim rt x [visit_exp C] [visit_id C] -[visit_exp `TABLE.SET`_instr{tableidx#32}(x)] -[visit_exp tableidx#32] -[visit_id tableidx#32] +[visit_exp `TABLE.SET`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%->_%%`_instrtype{resulttype#1695, `localidx*#1019`}(`%`_resulttype{`X*#7700`}([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype{`X*#7749`}([]))] -[visit_exp resulttype#1695] -[visit_id resulttype#1695] -[visit_exp `localidx*#1019`] -[visit_id localidx*#1019] -[visit_exp (`%`_resulttype{`X*#7700`}([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype{`X*#7749`}([]))] -[visit_exp `%`_resulttype{`X*#7700`}([(at : addrtype <: valtype) (rt : reftype <: valtype)])] -[visit_exp `X*#7700`] -[visit_id X*#7700] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))] +[visit_exp (`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))] +[visit_exp `%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)])] [visit_exp ([(at : addrtype <: valtype) (rt : reftype <: valtype)])] [visit_exp [(at : addrtype <: valtype) (rt : reftype <: valtype)]] [visit_exp (at : addrtype <: valtype)] @@ -27959,31 +24844,19 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp rt] [visit_id rt] [visit_exp []] -[visit_exp `%`_resulttype{`X*#7749`}([])] -[visit_exp `X*#7749`] -[visit_id X*#7749] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] -[visit_exp (C.`TABLES`_context{`tabletype*#10`}[x!`%`_idx{i#7515}.0] = `%%%`_tabletype{addrtype#477, limits#477, reftype#429}(at, lim, rt))] -[visit_exp C.`TABLES`_context{`tabletype*#10`}[x!`%`_idx{i#7515}.0]] -[visit_exp C.`TABLES`_context{`tabletype*#10`}] +[visit_exp (C.`TABLES`_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt))] +[visit_exp C.`TABLES`_context[x!`%`_idx.0]] +[visit_exp C.`TABLES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `tabletype*#10`] -[visit_id tabletype*#10] -[visit_exp x!`%`_idx{i#7515}.0] -[visit_exp x!`%`_idx{i#7515}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#7515] -[visit_id i#7515] -[visit_exp `%%%`_tabletype{addrtype#477, limits#477, reftype#429}(at, lim, rt)] -[visit_exp addrtype#477] -[visit_id addrtype#477] -[visit_exp limits#477] -[visit_id limits#477] -[visit_exp reftype#429] -[visit_id reftype#429] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `%%%`_tabletype(at, lim, rt)] [visit_exp (at, lim, rt)] [visit_exp at] [visit_id at] not free @@ -27991,55 +24864,35 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id lim] [visit_exp rt] [visit_id rt] not free -[check_dims] C X*#7770 X*#7819 addrtype#489 at i#7539 lim limits#489 localidx*#1031 reftype#441 resulttype#1715 rt tableidx#34 tabletype*#11 x +[check_dims] C at lim rt x [visit_exp C] [visit_id C] -[visit_exp `TABLE.SIZE`_instr{tableidx#34}(x)] -[visit_exp tableidx#34] -[visit_id tableidx#34] +[visit_exp `TABLE.SIZE`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%->_%%`_instrtype{resulttype#1715, `localidx*#1031`}(`%`_resulttype{`X*#7770`}([]), [], `%`_resulttype{`X*#7819`}([(at : addrtype <: valtype)]))] -[visit_exp resulttype#1715] -[visit_id resulttype#1715] -[visit_exp `localidx*#1031`] -[visit_id localidx*#1031] -[visit_exp (`%`_resulttype{`X*#7770`}([]), [], `%`_resulttype{`X*#7819`}([(at : addrtype <: valtype)]))] -[visit_exp `%`_resulttype{`X*#7770`}([])] -[visit_exp `X*#7770`] -[visit_id X*#7770] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))] +[visit_exp (`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] [visit_exp []] -[visit_exp `%`_resulttype{`X*#7819`}([(at : addrtype <: valtype)])] -[visit_exp `X*#7819`] -[visit_id X*#7819] +[visit_exp `%`_resulttype([(at : addrtype <: valtype)])] [visit_exp ([(at : addrtype <: valtype)])] [visit_exp [(at : addrtype <: valtype)]] [visit_exp (at : addrtype <: valtype)] [visit_exp at] [visit_id at] -[visit_exp (C.`TABLES`_context{`tabletype*#11`}[x!`%`_idx{i#7539}.0] = `%%%`_tabletype{addrtype#489, limits#489, reftype#441}(at, lim, rt))] -[visit_exp C.`TABLES`_context{`tabletype*#11`}[x!`%`_idx{i#7539}.0]] -[visit_exp C.`TABLES`_context{`tabletype*#11`}] +[visit_exp (C.`TABLES`_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt))] +[visit_exp C.`TABLES`_context[x!`%`_idx.0]] +[visit_exp C.`TABLES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `tabletype*#11`] -[visit_id tabletype*#11] -[visit_exp x!`%`_idx{i#7539}.0] -[visit_exp x!`%`_idx{i#7539}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#7539] -[visit_id i#7539] -[visit_exp `%%%`_tabletype{addrtype#489, limits#489, reftype#441}(at, lim, rt)] -[visit_exp addrtype#489] -[visit_id addrtype#489] -[visit_exp limits#489] -[visit_id limits#489] -[visit_exp reftype#441] -[visit_id reftype#441] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `%%%`_tabletype(at, lim, rt)] [visit_exp (at, lim, rt)] [visit_exp at] [visit_id at] not free @@ -28047,24 +24900,16 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id lim] [visit_exp rt] [visit_id rt] -[check_dims] C X*#7840 X*#7889 addrtype#501 at i#7563 lim limits#501 localidx*#1043 reftype#453 resulttype#1735 rt tableidx#36 tabletype*#12 x +[check_dims] C at lim rt x [visit_exp C] [visit_id C] -[visit_exp `TABLE.GROW`_instr{tableidx#36}(x)] -[visit_exp tableidx#36] -[visit_id tableidx#36] +[visit_exp `TABLE.GROW`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%->_%%`_instrtype{resulttype#1735, `localidx*#1043`}(`%`_resulttype{`X*#7840`}([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype{`X*#7889`}([`I32`_valtype]))] -[visit_exp resulttype#1735] -[visit_id resulttype#1735] -[visit_exp `localidx*#1043`] -[visit_id localidx*#1043] -[visit_exp (`%`_resulttype{`X*#7840`}([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype{`X*#7889`}([`I32`_valtype]))] -[visit_exp `%`_resulttype{`X*#7840`}([(rt : reftype <: valtype) (at : addrtype <: valtype)])] -[visit_exp `X*#7840`] -[visit_id X*#7840] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([`I32`_valtype]))] +[visit_exp (`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([`I32`_valtype]))] +[visit_exp `%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)])] [visit_exp ([(rt : reftype <: valtype) (at : addrtype <: valtype)])] [visit_exp [(rt : reftype <: valtype) (at : addrtype <: valtype)]] [visit_exp (rt : reftype <: valtype)] @@ -28074,33 +24919,21 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp at] [visit_id at] [visit_exp []] -[visit_exp `%`_resulttype{`X*#7889`}([`I32`_valtype])] -[visit_exp `X*#7889`] -[visit_id X*#7889] +[visit_exp `%`_resulttype([`I32`_valtype])] [visit_exp ([`I32`_valtype])] [visit_exp [`I32`_valtype]] [visit_exp `I32`_valtype] [visit_exp ()] -[visit_exp (C.`TABLES`_context{`tabletype*#12`}[x!`%`_idx{i#7563}.0] = `%%%`_tabletype{addrtype#501, limits#501, reftype#453}(at, lim, rt))] -[visit_exp C.`TABLES`_context{`tabletype*#12`}[x!`%`_idx{i#7563}.0]] -[visit_exp C.`TABLES`_context{`tabletype*#12`}] +[visit_exp (C.`TABLES`_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt))] +[visit_exp C.`TABLES`_context[x!`%`_idx.0]] +[visit_exp C.`TABLES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `tabletype*#12`] -[visit_id tabletype*#12] -[visit_exp x!`%`_idx{i#7563}.0] -[visit_exp x!`%`_idx{i#7563}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#7563] -[visit_id i#7563] -[visit_exp `%%%`_tabletype{addrtype#501, limits#501, reftype#453}(at, lim, rt)] -[visit_exp addrtype#501] -[visit_id addrtype#501] -[visit_exp limits#501] -[visit_id limits#501] -[visit_exp reftype#453] -[visit_id reftype#453] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `%%%`_tabletype(at, lim, rt)] [visit_exp (at, lim, rt)] [visit_exp at] [visit_id at] not free @@ -28108,24 +24941,16 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id lim] [visit_exp rt] [visit_id rt] not free -[check_dims] C X*#7910 X*#7959 addrtype#513 at i#7587 lim limits#513 localidx*#1055 reftype#465 resulttype#1755 rt tableidx#38 tabletype*#13 x +[check_dims] C at lim rt x [visit_exp C] [visit_id C] -[visit_exp `TABLE.FILL`_instr{tableidx#38}(x)] -[visit_exp tableidx#38] -[visit_id tableidx#38] +[visit_exp `TABLE.FILL`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%->_%%`_instrtype{resulttype#1755, `localidx*#1055`}(`%`_resulttype{`X*#7910`}([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype{`X*#7959`}([]))] -[visit_exp resulttype#1755] -[visit_id resulttype#1755] -[visit_exp `localidx*#1055`] -[visit_id localidx*#1055] -[visit_exp (`%`_resulttype{`X*#7910`}([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype{`X*#7959`}([]))] -[visit_exp `%`_resulttype{`X*#7910`}([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)])] -[visit_exp `X*#7910`] -[visit_id X*#7910] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))] +[visit_exp (`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))] +[visit_exp `%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)])] [visit_exp ([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)])] [visit_exp [(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]] [visit_exp (at : addrtype <: valtype)] @@ -28138,31 +24963,19 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp at] [visit_id at] not free [visit_exp []] -[visit_exp `%`_resulttype{`X*#7959`}([])] -[visit_exp `X*#7959`] -[visit_id X*#7959] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] -[visit_exp (C.`TABLES`_context{`tabletype*#13`}[x!`%`_idx{i#7587}.0] = `%%%`_tabletype{addrtype#513, limits#513, reftype#465}(at, lim, rt))] -[visit_exp C.`TABLES`_context{`tabletype*#13`}[x!`%`_idx{i#7587}.0]] -[visit_exp C.`TABLES`_context{`tabletype*#13`}] +[visit_exp (C.`TABLES`_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt))] +[visit_exp C.`TABLES`_context[x!`%`_idx.0]] +[visit_exp C.`TABLES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `tabletype*#13`] -[visit_id tabletype*#13] -[visit_exp x!`%`_idx{i#7587}.0] -[visit_exp x!`%`_idx{i#7587}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#7587] -[visit_id i#7587] -[visit_exp `%%%`_tabletype{addrtype#513, limits#513, reftype#465}(at, lim, rt)] -[visit_exp addrtype#513] -[visit_id addrtype#513] -[visit_exp limits#513] -[visit_id limits#513] -[visit_exp reftype#465] -[visit_id reftype#465] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `%%%`_tabletype(at, lim, rt)] [visit_exp (at, lim, rt)] [visit_exp at] [visit_id at] not free @@ -28170,26 +24983,18 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id lim] [visit_exp rt] [visit_id rt] not free -[check_dims] C X*#7980 X*#8029 addrtype#525 addrtype#537 at_1 at_2 i#7625 i#7635 lim_1 lim_2 limits#525 limits#537 localidx*#1067 reftype#477 reftype#489 resulttype#1775 rt_1 rt_2 tableidx#40 tabletype*#14 tabletype*#15 x_1 x_2 +[check_dims] C at_1 at_2 lim_1 lim_2 rt_1 rt_2 x_1 x_2 [visit_exp C] [visit_id C] -[visit_exp `TABLE.COPY`_instr{tableidx#40}(x_1, x_2)] -[visit_exp tableidx#40] -[visit_id tableidx#40] +[visit_exp `TABLE.COPY`_instr(x_1, x_2)] [visit_exp (x_1, x_2)] [visit_exp x_1] [visit_id x_1] [visit_exp x_2] [visit_id x_2] -[visit_exp `%->_%%`_instrtype{resulttype#1775, `localidx*#1067`}(`%`_resulttype{`X*#7980`}([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype{`X*#8029`}([]))] -[visit_exp resulttype#1775] -[visit_id resulttype#1775] -[visit_exp `localidx*#1067`] -[visit_id localidx*#1067] -[visit_exp (`%`_resulttype{`X*#7980`}([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype{`X*#8029`}([]))] -[visit_exp `%`_resulttype{`X*#7980`}([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)])] -[visit_exp `X*#7980`] -[visit_id X*#7980] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))] +[visit_exp (`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))] +[visit_exp `%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)])] [visit_exp ([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)])] [visit_exp [(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]] [visit_exp (at_1 : addrtype <: valtype)] @@ -28205,31 +25010,19 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp at_2] [visit_id at_2] not free [visit_exp []] -[visit_exp `%`_resulttype{`X*#8029`}([])] -[visit_exp `X*#8029`] -[visit_id X*#8029] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] -[visit_exp (C.`TABLES`_context{`tabletype*#14`}[x_1!`%`_idx{i#7625}.0] = `%%%`_tabletype{addrtype#525, limits#525, reftype#477}(at_1, lim_1, rt_1))] -[visit_exp C.`TABLES`_context{`tabletype*#14`}[x_1!`%`_idx{i#7625}.0]] -[visit_exp C.`TABLES`_context{`tabletype*#14`}] +[visit_exp (C.`TABLES`_context[x_1!`%`_idx.0] = `%%%`_tabletype(at_1, lim_1, rt_1))] +[visit_exp C.`TABLES`_context[x_1!`%`_idx.0]] +[visit_exp C.`TABLES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `tabletype*#14`] -[visit_id tabletype*#14] -[visit_exp x_1!`%`_idx{i#7625}.0] -[visit_exp x_1!`%`_idx{i#7625}] +[visit_exp x_1!`%`_idx.0] +[visit_exp x_1!`%`_idx] [visit_exp x_1] [visit_id x_1] not free -[visit_exp i#7625] -[visit_id i#7625] -[visit_exp `%%%`_tabletype{addrtype#525, limits#525, reftype#477}(at_1, lim_1, rt_1)] -[visit_exp addrtype#525] -[visit_id addrtype#525] -[visit_exp limits#525] -[visit_id limits#525] -[visit_exp reftype#477] -[visit_id reftype#477] +[visit_exp `%%%`_tabletype(at_1, lim_1, rt_1)] [visit_exp (at_1, lim_1, rt_1)] [visit_exp at_1] [visit_id at_1] not free @@ -28237,26 +25030,16 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id lim_1] [visit_exp rt_1] [visit_id rt_1] -[visit_exp (C.`TABLES`_context{`tabletype*#15`}[x_2!`%`_idx{i#7635}.0] = `%%%`_tabletype{addrtype#537, limits#537, reftype#489}(at_2, lim_2, rt_2))] -[visit_exp C.`TABLES`_context{`tabletype*#15`}[x_2!`%`_idx{i#7635}.0]] -[visit_exp C.`TABLES`_context{`tabletype*#15`}] +[visit_exp (C.`TABLES`_context[x_2!`%`_idx.0] = `%%%`_tabletype(at_2, lim_2, rt_2))] +[visit_exp C.`TABLES`_context[x_2!`%`_idx.0]] +[visit_exp C.`TABLES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `tabletype*#15`] -[visit_id tabletype*#15] -[visit_exp x_2!`%`_idx{i#7635}.0] -[visit_exp x_2!`%`_idx{i#7635}] +[visit_exp x_2!`%`_idx.0] +[visit_exp x_2!`%`_idx] [visit_exp x_2] [visit_id x_2] not free -[visit_exp i#7635] -[visit_id i#7635] -[visit_exp `%%%`_tabletype{addrtype#537, limits#537, reftype#489}(at_2, lim_2, rt_2)] -[visit_exp addrtype#537] -[visit_id addrtype#537] -[visit_exp limits#537] -[visit_id limits#537] -[visit_exp reftype#489] -[visit_id reftype#489] +[visit_exp `%%%`_tabletype(at_2, lim_2, rt_2)] [visit_exp (at_2, lim_2, rt_2)] [visit_exp at_2] [visit_id at_2] not free @@ -28271,28 +25054,18 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id rt_2] not free [visit_exp rt_1] [visit_id rt_1] not free -[check_dims] C X*#8050 X*#8099 addrtype#549 at elemidx#13 elemtype*#9 i#7673 i#7683 lim limits#549 localidx*#1079 reftype#501 resulttype#1795 rt_1 rt_2 tableidx#43 tabletype*#16 x y +[check_dims] C at lim rt_1 rt_2 x y [visit_exp C] [visit_id C] -[visit_exp `TABLE.INIT`_instr{tableidx#43, elemidx#13}(x, y)] -[visit_exp tableidx#43] -[visit_id tableidx#43] -[visit_exp elemidx#13] -[visit_id elemidx#13] +[visit_exp `TABLE.INIT`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] [visit_exp y] [visit_id y] -[visit_exp `%->_%%`_instrtype{resulttype#1795, `localidx*#1079`}(`%`_resulttype{`X*#8050`}([(at : addrtype <: valtype) `I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#8099`}([]))] -[visit_exp resulttype#1795] -[visit_id resulttype#1795] -[visit_exp `localidx*#1079`] -[visit_id localidx*#1079] -[visit_exp (`%`_resulttype{`X*#8050`}([(at : addrtype <: valtype) `I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#8099`}([]))] -[visit_exp `%`_resulttype{`X*#8050`}([(at : addrtype <: valtype) `I32`_valtype `I32`_valtype])] -[visit_exp `X*#8050`] -[visit_id X*#8050] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) `I32`_valtype `I32`_valtype]), [], `%`_resulttype([]))] +[visit_exp (`%`_resulttype([(at : addrtype <: valtype) `I32`_valtype `I32`_valtype]), [], `%`_resulttype([]))] +[visit_exp `%`_resulttype([(at : addrtype <: valtype) `I32`_valtype `I32`_valtype])] [visit_exp ([(at : addrtype <: valtype) `I32`_valtype `I32`_valtype])] [visit_exp [(at : addrtype <: valtype) `I32`_valtype `I32`_valtype]] [visit_exp (at : addrtype <: valtype)] @@ -28303,31 +25076,19 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `I32`_valtype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#8099`}([])] -[visit_exp `X*#8099`] -[visit_id X*#8099] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] -[visit_exp (C.`TABLES`_context{`tabletype*#16`}[x!`%`_idx{i#7673}.0] = `%%%`_tabletype{addrtype#549, limits#549, reftype#501}(at, lim, rt_1))] -[visit_exp C.`TABLES`_context{`tabletype*#16`}[x!`%`_idx{i#7673}.0]] -[visit_exp C.`TABLES`_context{`tabletype*#16`}] +[visit_exp (C.`TABLES`_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt_1))] +[visit_exp C.`TABLES`_context[x!`%`_idx.0]] +[visit_exp C.`TABLES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `tabletype*#16`] -[visit_id tabletype*#16] -[visit_exp x!`%`_idx{i#7673}.0] -[visit_exp x!`%`_idx{i#7673}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#7673] -[visit_id i#7673] -[visit_exp `%%%`_tabletype{addrtype#549, limits#549, reftype#501}(at, lim, rt_1)] -[visit_exp addrtype#549] -[visit_id addrtype#549] -[visit_exp limits#549] -[visit_id limits#549] -[visit_exp reftype#501] -[visit_id reftype#501] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `%%%`_tabletype(at, lim, rt_1)] [visit_exp (at, lim, rt_1)] [visit_exp at] [visit_id at] not free @@ -28335,19 +25096,15 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id lim] [visit_exp rt_1] [visit_id rt_1] -[visit_exp (C.`ELEMS`_context{`elemtype*#9`}[y!`%`_idx{i#7683}.0] = rt_2)] -[visit_exp C.`ELEMS`_context{`elemtype*#9`}[y!`%`_idx{i#7683}.0]] -[visit_exp C.`ELEMS`_context{`elemtype*#9`}] +[visit_exp (C.`ELEMS`_context[y!`%`_idx.0] = rt_2)] +[visit_exp C.`ELEMS`_context[y!`%`_idx.0]] +[visit_exp C.`ELEMS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `elemtype*#9`] -[visit_id elemtype*#9] -[visit_exp y!`%`_idx{i#7683}.0] -[visit_exp y!`%`_idx{i#7683}] +[visit_exp y!`%`_idx.0] +[visit_exp y!`%`_idx] [visit_exp y] [visit_id y] not free -[visit_exp i#7683] -[visit_id i#7683] [visit_exp rt_2] [visit_id rt_2] [visit_exp (C, rt_2, rt_1)] @@ -28357,63 +25114,41 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id rt_2] not free [visit_exp rt_1] [visit_id rt_1] not free -[check_dims] C X*#8120 X*#8169 elemidx#15 elemtype*#10 i#7707 localidx*#1091 resulttype#1815 rt x +[check_dims] C rt x [visit_exp C] [visit_id C] -[visit_exp `ELEM.DROP`_instr{elemidx#15}(x)] -[visit_exp elemidx#15] -[visit_id elemidx#15] +[visit_exp `ELEM.DROP`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%->_%%`_instrtype{resulttype#1815, `localidx*#1091`}(`%`_resulttype{`X*#8120`}([]), [], `%`_resulttype{`X*#8169`}([]))] -[visit_exp resulttype#1815] -[visit_id resulttype#1815] -[visit_exp `localidx*#1091`] -[visit_id localidx*#1091] -[visit_exp (`%`_resulttype{`X*#8120`}([]), [], `%`_resulttype{`X*#8169`}([]))] -[visit_exp `%`_resulttype{`X*#8120`}([])] -[visit_exp `X*#8120`] -[visit_id X*#8120] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))] +[visit_exp (`%`_resulttype([]), [], `%`_resulttype([]))] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] [visit_exp []] -[visit_exp `%`_resulttype{`X*#8169`}([])] -[visit_exp `X*#8169`] -[visit_id X*#8169] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] -[visit_exp (C.`ELEMS`_context{`elemtype*#10`}[x!`%`_idx{i#7707}.0] = rt)] -[visit_exp C.`ELEMS`_context{`elemtype*#10`}[x!`%`_idx{i#7707}.0]] -[visit_exp C.`ELEMS`_context{`elemtype*#10`}] +[visit_exp (C.`ELEMS`_context[x!`%`_idx.0] = rt)] +[visit_exp C.`ELEMS`_context[x!`%`_idx.0]] +[visit_exp C.`ELEMS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `elemtype*#10`] -[visit_id elemtype*#10] -[visit_exp x!`%`_idx{i#7707}.0] -[visit_exp x!`%`_idx{i#7707}] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] [visit_exp x] [visit_id x] not free -[visit_exp i#7707] -[visit_id i#7707] [visit_exp rt] [visit_id rt] [check_dims] -[check_dims] N at i#7729 i#7751 m n u32#14 u64#230 -[visit_exp {`ALIGN`{u32#14} `%`_u32{i#7729}(n), `OFFSET`{u64#230} `%`_u64{i#7751}(m)}] -[visit_exp u32#14] -[visit_id u32#14] -[visit_exp `%`_u32{i#7729}(n)] -[visit_exp i#7729] -[visit_id i#7729] +[check_dims] N at m n +[visit_exp {`ALIGN` `%`_u32(n), `OFFSET` `%`_u64(m)}] +[visit_exp `%`_u32(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp u64#230] -[visit_id u64#230] -[visit_exp `%`_u64{i#7751}(m)] -[visit_exp i#7751] -[visit_id i#7751] +[visit_exp `%`_u64(m)] [visit_exp (m)] [visit_exp m] [visit_id m] @@ -28442,131 +25177,87 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] not free -[check_dims] C X*#8190 X*#8239 addrtype#561 at i#7775 lim limits#561 localidx*#1103 memidx#30 memtype*#7 resulttype#1835 x +[check_dims] C at lim x [visit_exp C] [visit_id C] -[visit_exp `MEMORY.SIZE`_instr{memidx#30}(x)] -[visit_exp memidx#30] -[visit_id memidx#30] +[visit_exp `MEMORY.SIZE`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%->_%%`_instrtype{resulttype#1835, `localidx*#1103`}(`%`_resulttype{`X*#8190`}([]), [], `%`_resulttype{`X*#8239`}([(at : addrtype <: valtype)]))] -[visit_exp resulttype#1835] -[visit_id resulttype#1835] -[visit_exp `localidx*#1103`] -[visit_id localidx*#1103] -[visit_exp (`%`_resulttype{`X*#8190`}([]), [], `%`_resulttype{`X*#8239`}([(at : addrtype <: valtype)]))] -[visit_exp `%`_resulttype{`X*#8190`}([])] -[visit_exp `X*#8190`] -[visit_id X*#8190] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))] +[visit_exp (`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] [visit_exp []] -[visit_exp `%`_resulttype{`X*#8239`}([(at : addrtype <: valtype)])] -[visit_exp `X*#8239`] -[visit_id X*#8239] +[visit_exp `%`_resulttype([(at : addrtype <: valtype)])] [visit_exp ([(at : addrtype <: valtype)])] [visit_exp [(at : addrtype <: valtype)]] [visit_exp (at : addrtype <: valtype)] [visit_exp at] [visit_id at] -[visit_exp (C.`MEMS`_context{`memtype*#7`}[x!`%`_idx{i#7775}.0] = `%%PAGE`_memtype{addrtype#561, limits#561}(at, lim))] -[visit_exp C.`MEMS`_context{`memtype*#7`}[x!`%`_idx{i#7775}.0]] -[visit_exp C.`MEMS`_context{`memtype*#7`}] +[visit_exp (C.`MEMS`_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim))] +[visit_exp C.`MEMS`_context[x!`%`_idx.0]] +[visit_exp C.`MEMS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `memtype*#7`] -[visit_id memtype*#7] -[visit_exp x!`%`_idx{i#7775}.0] -[visit_exp x!`%`_idx{i#7775}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#7775] -[visit_id i#7775] -[visit_exp `%%PAGE`_memtype{addrtype#561, limits#561}(at, lim)] -[visit_exp addrtype#561] -[visit_id addrtype#561] -[visit_exp limits#561] -[visit_id limits#561] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `%%PAGE`_memtype(at, lim)] [visit_exp (at, lim)] [visit_exp at] [visit_id at] not free [visit_exp lim] [visit_id lim] -[check_dims] C X*#8250 X*#8318 addrtype#573 at i#7799 lim limits#573 localidx*#1115 memidx#32 memtype*#8 resulttype#1855 x +[check_dims] C at lim x [visit_exp C] [visit_id C] -[visit_exp `MEMORY.GROW`_instr{memidx#32}(x)] -[visit_exp memidx#32] -[visit_id memidx#32] +[visit_exp `MEMORY.GROW`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%->_%%`_instrtype{resulttype#1855, `localidx*#1115`}(`%`_resulttype{`X*#8250`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#8318`}([(at : addrtype <: valtype)]))] -[visit_exp resulttype#1855] -[visit_id resulttype#1855] -[visit_exp `localidx*#1115`] -[visit_id localidx*#1115] -[visit_exp (`%`_resulttype{`X*#8250`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#8318`}([(at : addrtype <: valtype)]))] -[visit_exp `%`_resulttype{`X*#8250`}([(at : addrtype <: valtype)])] -[visit_exp `X*#8250`] -[visit_id X*#8250] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))] +[visit_exp (`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))] +[visit_exp `%`_resulttype([(at : addrtype <: valtype)])] [visit_exp ([(at : addrtype <: valtype)])] [visit_exp [(at : addrtype <: valtype)]] [visit_exp (at : addrtype <: valtype)] [visit_exp at] [visit_id at] [visit_exp []] -[visit_exp `%`_resulttype{`X*#8318`}([(at : addrtype <: valtype)])] -[visit_exp `X*#8318`] -[visit_id X*#8318] +[visit_exp `%`_resulttype([(at : addrtype <: valtype)])] [visit_exp ([(at : addrtype <: valtype)])] [visit_exp [(at : addrtype <: valtype)]] [visit_exp (at : addrtype <: valtype)] [visit_exp at] [visit_id at] not free -[visit_exp (C.`MEMS`_context{`memtype*#8`}[x!`%`_idx{i#7799}.0] = `%%PAGE`_memtype{addrtype#573, limits#573}(at, lim))] -[visit_exp C.`MEMS`_context{`memtype*#8`}[x!`%`_idx{i#7799}.0]] -[visit_exp C.`MEMS`_context{`memtype*#8`}] +[visit_exp (C.`MEMS`_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim))] +[visit_exp C.`MEMS`_context[x!`%`_idx.0]] +[visit_exp C.`MEMS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `memtype*#8`] -[visit_id memtype*#8] -[visit_exp x!`%`_idx{i#7799}.0] -[visit_exp x!`%`_idx{i#7799}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#7799] -[visit_id i#7799] -[visit_exp `%%PAGE`_memtype{addrtype#573, limits#573}(at, lim)] -[visit_exp addrtype#573] -[visit_id addrtype#573] -[visit_exp limits#573] -[visit_id limits#573] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `%%PAGE`_memtype(at, lim)] [visit_exp (at, lim)] [visit_exp at] [visit_id at] not free [visit_exp lim] [visit_id lim] -[check_dims] C X*#8339 X*#8388 addrtype#585 at i#7823 lim limits#585 localidx*#1127 memidx#34 memtype*#9 resulttype#1875 x +[check_dims] C at lim x [visit_exp C] [visit_id C] -[visit_exp `MEMORY.FILL`_instr{memidx#34}(x)] -[visit_exp memidx#34] -[visit_id memidx#34] +[visit_exp `MEMORY.FILL`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%->_%%`_instrtype{resulttype#1875, `localidx*#1127`}(`%`_resulttype{`X*#8339`}([(at : addrtype <: valtype) `I32`_valtype (at : addrtype <: valtype)]), [], `%`_resulttype{`X*#8388`}([]))] -[visit_exp resulttype#1875] -[visit_id resulttype#1875] -[visit_exp `localidx*#1127`] -[visit_id localidx*#1127] -[visit_exp (`%`_resulttype{`X*#8339`}([(at : addrtype <: valtype) `I32`_valtype (at : addrtype <: valtype)]), [], `%`_resulttype{`X*#8388`}([]))] -[visit_exp `%`_resulttype{`X*#8339`}([(at : addrtype <: valtype) `I32`_valtype (at : addrtype <: valtype)])] -[visit_exp `X*#8339`] -[visit_id X*#8339] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) `I32`_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))] +[visit_exp (`%`_resulttype([(at : addrtype <: valtype) `I32`_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))] +[visit_exp `%`_resulttype([(at : addrtype <: valtype) `I32`_valtype (at : addrtype <: valtype)])] [visit_exp ([(at : addrtype <: valtype) `I32`_valtype (at : addrtype <: valtype)])] [visit_exp [(at : addrtype <: valtype) `I32`_valtype (at : addrtype <: valtype)]] [visit_exp (at : addrtype <: valtype)] @@ -28578,54 +25269,36 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp at] [visit_id at] not free [visit_exp []] -[visit_exp `%`_resulttype{`X*#8388`}([])] -[visit_exp `X*#8388`] -[visit_id X*#8388] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] -[visit_exp (C.`MEMS`_context{`memtype*#9`}[x!`%`_idx{i#7823}.0] = `%%PAGE`_memtype{addrtype#585, limits#585}(at, lim))] -[visit_exp C.`MEMS`_context{`memtype*#9`}[x!`%`_idx{i#7823}.0]] -[visit_exp C.`MEMS`_context{`memtype*#9`}] +[visit_exp (C.`MEMS`_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim))] +[visit_exp C.`MEMS`_context[x!`%`_idx.0]] +[visit_exp C.`MEMS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `memtype*#9`] -[visit_id memtype*#9] -[visit_exp x!`%`_idx{i#7823}.0] -[visit_exp x!`%`_idx{i#7823}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#7823] -[visit_id i#7823] -[visit_exp `%%PAGE`_memtype{addrtype#585, limits#585}(at, lim)] -[visit_exp addrtype#585] -[visit_id addrtype#585] -[visit_exp limits#585] -[visit_id limits#585] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `%%PAGE`_memtype(at, lim)] [visit_exp (at, lim)] [visit_exp at] [visit_id at] not free [visit_exp lim] [visit_id lim] -[check_dims] C X*#8409 X*#8458 addrtype#597 addrtype#609 at_1 at_2 i#7861 i#7871 lim_1 lim_2 limits#597 limits#609 localidx*#1139 memidx#36 memtype*#10 memtype*#11 resulttype#1895 x_1 x_2 +[check_dims] C at_1 at_2 lim_1 lim_2 x_1 x_2 [visit_exp C] [visit_id C] -[visit_exp `MEMORY.COPY`_instr{memidx#36}(x_1, x_2)] -[visit_exp memidx#36] -[visit_id memidx#36] +[visit_exp `MEMORY.COPY`_instr(x_1, x_2)] [visit_exp (x_1, x_2)] [visit_exp x_1] [visit_id x_1] [visit_exp x_2] [visit_id x_2] -[visit_exp `%->_%%`_instrtype{resulttype#1895, `localidx*#1139`}(`%`_resulttype{`X*#8409`}([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype{`X*#8458`}([]))] -[visit_exp resulttype#1895] -[visit_id resulttype#1895] -[visit_exp `localidx*#1139`] -[visit_id localidx*#1139] -[visit_exp (`%`_resulttype{`X*#8409`}([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype{`X*#8458`}([]))] -[visit_exp `%`_resulttype{`X*#8409`}([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)])] -[visit_exp `X*#8409`] -[visit_id X*#8409] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))] +[visit_exp (`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))] +[visit_exp `%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)])] [visit_exp ([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)])] [visit_exp [(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]] [visit_exp (at_1 : addrtype <: valtype)] @@ -28641,79 +25314,51 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp at_2] [visit_id at_2] not free [visit_exp []] -[visit_exp `%`_resulttype{`X*#8458`}([])] -[visit_exp `X*#8458`] -[visit_id X*#8458] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] -[visit_exp (C.`MEMS`_context{`memtype*#10`}[x_1!`%`_idx{i#7861}.0] = `%%PAGE`_memtype{addrtype#597, limits#597}(at_1, lim_1))] -[visit_exp C.`MEMS`_context{`memtype*#10`}[x_1!`%`_idx{i#7861}.0]] -[visit_exp C.`MEMS`_context{`memtype*#10`}] +[visit_exp (C.`MEMS`_context[x_1!`%`_idx.0] = `%%PAGE`_memtype(at_1, lim_1))] +[visit_exp C.`MEMS`_context[x_1!`%`_idx.0]] +[visit_exp C.`MEMS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `memtype*#10`] -[visit_id memtype*#10] -[visit_exp x_1!`%`_idx{i#7861}.0] -[visit_exp x_1!`%`_idx{i#7861}] +[visit_exp x_1!`%`_idx.0] +[visit_exp x_1!`%`_idx] [visit_exp x_1] [visit_id x_1] not free -[visit_exp i#7861] -[visit_id i#7861] -[visit_exp `%%PAGE`_memtype{addrtype#597, limits#597}(at_1, lim_1)] -[visit_exp addrtype#597] -[visit_id addrtype#597] -[visit_exp limits#597] -[visit_id limits#597] +[visit_exp `%%PAGE`_memtype(at_1, lim_1)] [visit_exp (at_1, lim_1)] [visit_exp at_1] [visit_id at_1] not free [visit_exp lim_1] [visit_id lim_1] -[visit_exp (C.`MEMS`_context{`memtype*#11`}[x_2!`%`_idx{i#7871}.0] = `%%PAGE`_memtype{addrtype#609, limits#609}(at_2, lim_2))] -[visit_exp C.`MEMS`_context{`memtype*#11`}[x_2!`%`_idx{i#7871}.0]] -[visit_exp C.`MEMS`_context{`memtype*#11`}] +[visit_exp (C.`MEMS`_context[x_2!`%`_idx.0] = `%%PAGE`_memtype(at_2, lim_2))] +[visit_exp C.`MEMS`_context[x_2!`%`_idx.0]] +[visit_exp C.`MEMS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `memtype*#11`] -[visit_id memtype*#11] -[visit_exp x_2!`%`_idx{i#7871}.0] -[visit_exp x_2!`%`_idx{i#7871}] +[visit_exp x_2!`%`_idx.0] +[visit_exp x_2!`%`_idx] [visit_exp x_2] [visit_id x_2] not free -[visit_exp i#7871] -[visit_id i#7871] -[visit_exp `%%PAGE`_memtype{addrtype#609, limits#609}(at_2, lim_2)] -[visit_exp addrtype#609] -[visit_id addrtype#609] -[visit_exp limits#609] -[visit_id limits#609] +[visit_exp `%%PAGE`_memtype(at_2, lim_2)] [visit_exp (at_2, lim_2)] [visit_exp at_2] [visit_id at_2] not free [visit_exp lim_2] [visit_id lim_2] -[check_dims] C X*#8479 X*#8528 addrtype#621 at dataidx#13 datatype*#9 i#7909 i#7919 lim limits#621 localidx*#1151 memidx#39 memtype*#12 resulttype#1915 x y +[check_dims] C at lim x y [visit_exp C] [visit_id C] -[visit_exp `MEMORY.INIT`_instr{memidx#39, dataidx#13}(x, y)] -[visit_exp memidx#39] -[visit_id memidx#39] -[visit_exp dataidx#13] -[visit_id dataidx#13] +[visit_exp `MEMORY.INIT`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] [visit_exp y] [visit_id y] -[visit_exp `%->_%%`_instrtype{resulttype#1915, `localidx*#1151`}(`%`_resulttype{`X*#8479`}([(at : addrtype <: valtype) `I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#8528`}([]))] -[visit_exp resulttype#1915] -[visit_id resulttype#1915] -[visit_exp `localidx*#1151`] -[visit_id localidx*#1151] -[visit_exp (`%`_resulttype{`X*#8479`}([(at : addrtype <: valtype) `I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#8528`}([]))] -[visit_exp `%`_resulttype{`X*#8479`}([(at : addrtype <: valtype) `I32`_valtype `I32`_valtype])] -[visit_exp `X*#8479`] -[visit_id X*#8479] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) `I32`_valtype `I32`_valtype]), [], `%`_resulttype([]))] +[visit_exp (`%`_resulttype([(at : addrtype <: valtype) `I32`_valtype `I32`_valtype]), [], `%`_resulttype([]))] +[visit_exp `%`_resulttype([(at : addrtype <: valtype) `I32`_valtype `I32`_valtype])] [visit_exp ([(at : addrtype <: valtype) `I32`_valtype `I32`_valtype])] [visit_exp [(at : addrtype <: valtype) `I32`_valtype `I32`_valtype]] [visit_exp (at : addrtype <: valtype)] @@ -28724,100 +25369,66 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `I32`_valtype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#8528`}([])] -[visit_exp `X*#8528`] -[visit_id X*#8528] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] -[visit_exp (C.`MEMS`_context{`memtype*#12`}[x!`%`_idx{i#7909}.0] = `%%PAGE`_memtype{addrtype#621, limits#621}(at, lim))] -[visit_exp C.`MEMS`_context{`memtype*#12`}[x!`%`_idx{i#7909}.0]] -[visit_exp C.`MEMS`_context{`memtype*#12`}] +[visit_exp (C.`MEMS`_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim))] +[visit_exp C.`MEMS`_context[x!`%`_idx.0]] +[visit_exp C.`MEMS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `memtype*#12`] -[visit_id memtype*#12] -[visit_exp x!`%`_idx{i#7909}.0] -[visit_exp x!`%`_idx{i#7909}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#7909] -[visit_id i#7909] -[visit_exp `%%PAGE`_memtype{addrtype#621, limits#621}(at, lim)] -[visit_exp addrtype#621] -[visit_id addrtype#621] -[visit_exp limits#621] -[visit_id limits#621] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `%%PAGE`_memtype(at, lim)] [visit_exp (at, lim)] [visit_exp at] [visit_id at] not free [visit_exp lim] [visit_id lim] -[visit_exp (C.`DATAS`_context{`datatype*#9`}[y!`%`_idx{i#7919}.0] = `OK`_datatype)] -[visit_exp C.`DATAS`_context{`datatype*#9`}[y!`%`_idx{i#7919}.0]] -[visit_exp C.`DATAS`_context{`datatype*#9`}] +[visit_exp (C.`DATAS`_context[y!`%`_idx.0] = `OK`_datatype)] +[visit_exp C.`DATAS`_context[y!`%`_idx.0]] +[visit_exp C.`DATAS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `datatype*#9`] -[visit_id datatype*#9] -[visit_exp y!`%`_idx{i#7919}.0] -[visit_exp y!`%`_idx{i#7919}] +[visit_exp y!`%`_idx.0] +[visit_exp y!`%`_idx] [visit_exp y] [visit_id y] not free -[visit_exp i#7919] -[visit_id i#7919] [visit_exp `OK`_datatype] [visit_exp ()] -[check_dims] C X*#8549 X*#8598 dataidx#15 datatype*#10 i#7943 localidx*#1163 resulttype#1935 x +[check_dims] C x [visit_exp C] [visit_id C] -[visit_exp `DATA.DROP`_instr{dataidx#15}(x)] -[visit_exp dataidx#15] -[visit_id dataidx#15] +[visit_exp `DATA.DROP`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%->_%%`_instrtype{resulttype#1935, `localidx*#1163`}(`%`_resulttype{`X*#8549`}([]), [], `%`_resulttype{`X*#8598`}([]))] -[visit_exp resulttype#1935] -[visit_id resulttype#1935] -[visit_exp `localidx*#1163`] -[visit_id localidx*#1163] -[visit_exp (`%`_resulttype{`X*#8549`}([]), [], `%`_resulttype{`X*#8598`}([]))] -[visit_exp `%`_resulttype{`X*#8549`}([])] -[visit_exp `X*#8549`] -[visit_id X*#8549] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))] +[visit_exp (`%`_resulttype([]), [], `%`_resulttype([]))] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] [visit_exp []] -[visit_exp `%`_resulttype{`X*#8598`}([])] -[visit_exp `X*#8598`] -[visit_id X*#8598] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] -[visit_exp (C.`DATAS`_context{`datatype*#10`}[x!`%`_idx{i#7943}.0] = `OK`_datatype)] -[visit_exp C.`DATAS`_context{`datatype*#10`}[x!`%`_idx{i#7943}.0]] -[visit_exp C.`DATAS`_context{`datatype*#10`}] +[visit_exp (C.`DATAS`_context[x!`%`_idx.0] = `OK`_datatype)] +[visit_exp C.`DATAS`_context[x!`%`_idx.0]] +[visit_exp C.`DATAS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `datatype*#10`] -[visit_id datatype*#10] -[visit_exp x!`%`_idx{i#7943}.0] -[visit_exp x!`%`_idx{i#7943}] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] [visit_exp x] [visit_id x] not free -[visit_exp i#7943] -[visit_id i#7943] [visit_exp `OK`_datatype] [visit_exp ()] -[check_dims] C X*#8609 X*#8677 addrtype#633 at i#7967 lim limits#633 localidx*#1175 memarg memarg#13 memidx#41 memtype*#13 nt numtype?#3 resulttype#1955 x +[check_dims] C at lim memarg nt x [visit_exp C] [visit_id C] -[visit_exp `LOAD`_instr{`numtype?#3`, memidx#41, memarg#13}(nt, ?(), x, memarg)] -[visit_exp `numtype?#3`] -[visit_id numtype?#3] -[visit_exp memidx#41] -[visit_id memidx#41] -[visit_exp memarg#13] -[visit_id memarg#13] +[visit_exp `LOAD`_instr(nt, ?(), x, memarg)] [visit_exp (nt, ?(), x, memarg)] [visit_exp nt] [visit_id nt] @@ -28826,47 +25437,31 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id x] [visit_exp memarg] [visit_id memarg] -[visit_exp `%->_%%`_instrtype{resulttype#1955, `localidx*#1175`}(`%`_resulttype{`X*#8609`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#8677`}([(nt : numtype <: valtype)]))] -[visit_exp resulttype#1955] -[visit_id resulttype#1955] -[visit_exp `localidx*#1175`] -[visit_id localidx*#1175] -[visit_exp (`%`_resulttype{`X*#8609`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#8677`}([(nt : numtype <: valtype)]))] -[visit_exp `%`_resulttype{`X*#8609`}([(at : addrtype <: valtype)])] -[visit_exp `X*#8609`] -[visit_id X*#8609] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))] +[visit_exp (`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))] +[visit_exp `%`_resulttype([(at : addrtype <: valtype)])] [visit_exp ([(at : addrtype <: valtype)])] [visit_exp [(at : addrtype <: valtype)]] [visit_exp (at : addrtype <: valtype)] [visit_exp at] [visit_id at] [visit_exp []] -[visit_exp `%`_resulttype{`X*#8677`}([(nt : numtype <: valtype)])] -[visit_exp `X*#8677`] -[visit_id X*#8677] +[visit_exp `%`_resulttype([(nt : numtype <: valtype)])] [visit_exp ([(nt : numtype <: valtype)])] [visit_exp [(nt : numtype <: valtype)]] [visit_exp (nt : numtype <: valtype)] [visit_exp nt] [visit_id nt] not free -[visit_exp (C.`MEMS`_context{`memtype*#13`}[x!`%`_idx{i#7967}.0] = `%%PAGE`_memtype{addrtype#633, limits#633}(at, lim))] -[visit_exp C.`MEMS`_context{`memtype*#13`}[x!`%`_idx{i#7967}.0]] -[visit_exp C.`MEMS`_context{`memtype*#13`}] +[visit_exp (C.`MEMS`_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim))] +[visit_exp C.`MEMS`_context[x!`%`_idx.0]] +[visit_exp C.`MEMS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `memtype*#13`] -[visit_id memtype*#13] -[visit_exp x!`%`_idx{i#7967}.0] -[visit_exp x!`%`_idx{i#7967}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#7967] -[visit_id i#7967] -[visit_exp `%%PAGE`_memtype{addrtype#633, limits#633}(at, lim)] -[visit_exp addrtype#633] -[visit_id addrtype#633] -[visit_exp limits#633] -[visit_id limits#633] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `%%PAGE`_memtype(at, lim)] [visit_exp (at, lim)] [visit_exp at] [visit_id at] not free @@ -28880,32 +25475,18 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp $size(nt)] [visit_exp nt] [visit_id nt] not free -[check_dims] C Inn M X*#8688 X*#8756 addrtype#645 at i#7993 i#8000 i#8024 lim limits#645 localidx*#1187 memarg memarg#15 memidx#43 memtype*#14 numtype?#4 resulttype#1975 sx sx#7 sz#5 x +[check_dims] C Inn M at lim memarg sx x [visit_exp C] [visit_id C] -[visit_exp `LOAD`_instr{`numtype?#4`, memidx#43, memarg#15}((Inn : Inn <: numtype), ?(`%_%`_loadop_{sz#5, sx#7, i#7993}(`%`_sz{i#8000}(M), sx)), x, memarg)] -[visit_exp `numtype?#4`] -[visit_id numtype?#4] -[visit_exp memidx#43] -[visit_id memidx#43] -[visit_exp memarg#15] -[visit_id memarg#15] -[visit_exp ((Inn : Inn <: numtype), ?(`%_%`_loadop_{sz#5, sx#7, i#7993}(`%`_sz{i#8000}(M), sx)), x, memarg)] +[visit_exp `LOAD`_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(M), sx)), x, memarg)] +[visit_exp ((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(M), sx)), x, memarg)] [visit_exp (Inn : Inn <: numtype)] [visit_exp Inn] [visit_id Inn] -[visit_exp ?(`%_%`_loadop_{sz#5, sx#7, i#7993}(`%`_sz{i#8000}(M), sx))] -[visit_exp `%_%`_loadop_{sz#5, sx#7, i#7993}(`%`_sz{i#8000}(M), sx)] -[visit_exp sz#5] -[visit_id sz#5] -[visit_exp sx#7] -[visit_id sx#7] -[visit_exp i#7993] -[visit_id i#7993] -[visit_exp (`%`_sz{i#8000}(M), sx)] -[visit_exp `%`_sz{i#8000}(M)] -[visit_exp i#8000] -[visit_id i#8000] +[visit_exp ?(`%_%`_loadop_(`%`_sz(M), sx))] +[visit_exp `%_%`_loadop_(`%`_sz(M), sx)] +[visit_exp (`%`_sz(M), sx)] +[visit_exp `%`_sz(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -28915,47 +25496,31 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id x] [visit_exp memarg] [visit_id memarg] -[visit_exp `%->_%%`_instrtype{resulttype#1975, `localidx*#1187`}(`%`_resulttype{`X*#8688`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#8756`}([(Inn : Inn <: valtype)]))] -[visit_exp resulttype#1975] -[visit_id resulttype#1975] -[visit_exp `localidx*#1187`] -[visit_id localidx*#1187] -[visit_exp (`%`_resulttype{`X*#8688`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#8756`}([(Inn : Inn <: valtype)]))] -[visit_exp `%`_resulttype{`X*#8688`}([(at : addrtype <: valtype)])] -[visit_exp `X*#8688`] -[visit_id X*#8688] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : Inn <: valtype)]))] +[visit_exp (`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : Inn <: valtype)]))] +[visit_exp `%`_resulttype([(at : addrtype <: valtype)])] [visit_exp ([(at : addrtype <: valtype)])] [visit_exp [(at : addrtype <: valtype)]] [visit_exp (at : addrtype <: valtype)] [visit_exp at] [visit_id at] [visit_exp []] -[visit_exp `%`_resulttype{`X*#8756`}([(Inn : Inn <: valtype)])] -[visit_exp `X*#8756`] -[visit_id X*#8756] +[visit_exp `%`_resulttype([(Inn : Inn <: valtype)])] [visit_exp ([(Inn : Inn <: valtype)])] [visit_exp [(Inn : Inn <: valtype)]] [visit_exp (Inn : Inn <: valtype)] [visit_exp Inn] [visit_id Inn] not free -[visit_exp (C.`MEMS`_context{`memtype*#14`}[x!`%`_idx{i#8024}.0] = `%%PAGE`_memtype{addrtype#645, limits#645}(at, lim))] -[visit_exp C.`MEMS`_context{`memtype*#14`}[x!`%`_idx{i#8024}.0]] -[visit_exp C.`MEMS`_context{`memtype*#14`}] +[visit_exp (C.`MEMS`_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim))] +[visit_exp C.`MEMS`_context[x!`%`_idx.0]] +[visit_exp C.`MEMS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `memtype*#14`] -[visit_id memtype*#14] -[visit_exp x!`%`_idx{i#8024}.0] -[visit_exp x!`%`_idx{i#8024}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#8024] -[visit_id i#8024] -[visit_exp `%%PAGE`_memtype{addrtype#645, limits#645}(at, lim)] -[visit_exp addrtype#645] -[visit_id addrtype#645] -[visit_exp limits#645] -[visit_id limits#645] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `%%PAGE`_memtype(at, lim)] [visit_exp (at, lim)] [visit_exp at] [visit_id at] not free @@ -28968,16 +25533,10 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id at] not free [visit_exp M] [visit_id M] not free -[check_dims] C X*#8777 X*#8826 addrtype#657 at i#8048 lim limits#657 localidx*#1199 memarg memarg#17 memidx#45 memtype*#15 nt numtype?#5 resulttype#1995 x +[check_dims] C at lim memarg nt x [visit_exp C] [visit_id C] -[visit_exp `STORE`_instr{`numtype?#5`, memidx#45, memarg#17}(nt, ?(), x, memarg)] -[visit_exp `numtype?#5`] -[visit_id numtype?#5] -[visit_exp memidx#45] -[visit_id memidx#45] -[visit_exp memarg#17] -[visit_id memarg#17] +[visit_exp `STORE`_instr(nt, ?(), x, memarg)] [visit_exp (nt, ?(), x, memarg)] [visit_exp nt] [visit_id nt] @@ -28986,15 +25545,9 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id x] [visit_exp memarg] [visit_id memarg] -[visit_exp `%->_%%`_instrtype{resulttype#1995, `localidx*#1199`}(`%`_resulttype{`X*#8777`}([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype{`X*#8826`}([]))] -[visit_exp resulttype#1995] -[visit_id resulttype#1995] -[visit_exp `localidx*#1199`] -[visit_id localidx*#1199] -[visit_exp (`%`_resulttype{`X*#8777`}([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype{`X*#8826`}([]))] -[visit_exp `%`_resulttype{`X*#8777`}([(at : addrtype <: valtype) (nt : numtype <: valtype)])] -[visit_exp `X*#8777`] -[visit_id X*#8777] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))] +[visit_exp (`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))] +[visit_exp `%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)])] [visit_exp ([(at : addrtype <: valtype) (nt : numtype <: valtype)])] [visit_exp [(at : addrtype <: valtype) (nt : numtype <: valtype)]] [visit_exp (at : addrtype <: valtype)] @@ -29004,29 +25557,19 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp nt] [visit_id nt] not free [visit_exp []] -[visit_exp `%`_resulttype{`X*#8826`}([])] -[visit_exp `X*#8826`] -[visit_id X*#8826] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] -[visit_exp (C.`MEMS`_context{`memtype*#15`}[x!`%`_idx{i#8048}.0] = `%%PAGE`_memtype{addrtype#657, limits#657}(at, lim))] -[visit_exp C.`MEMS`_context{`memtype*#15`}[x!`%`_idx{i#8048}.0]] -[visit_exp C.`MEMS`_context{`memtype*#15`}] +[visit_exp (C.`MEMS`_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim))] +[visit_exp C.`MEMS`_context[x!`%`_idx.0]] +[visit_exp C.`MEMS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `memtype*#15`] -[visit_id memtype*#15] -[visit_exp x!`%`_idx{i#8048}.0] -[visit_exp x!`%`_idx{i#8048}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#8048] -[visit_id i#8048] -[visit_exp `%%PAGE`_memtype{addrtype#657, limits#657}(at, lim)] -[visit_exp addrtype#657] -[visit_id addrtype#657] -[visit_exp limits#657] -[visit_id limits#657] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `%%PAGE`_memtype(at, lim)] [visit_exp (at, lim)] [visit_exp at] [visit_id at] not free @@ -29040,30 +25583,18 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp $size(nt)] [visit_exp nt] [visit_id nt] not free -[check_dims] C Inn M X*#8847 X*#8896 addrtype#669 at i#8091 i#8092 i#8116 lim limits#669 localidx*#1211 memarg memarg#19 memidx#47 memtype*#16 numtype?#6 resulttype#2015 sz#7 x +[check_dims] C Inn M at lim memarg x [visit_exp C] [visit_id C] -[visit_exp `STORE`_instr{`numtype?#6`, memidx#47, memarg#19}((Inn : Inn <: numtype), ?(`%`_storeop_{sz#7, i#8091}(`%`_sz{i#8092}(M))), x, memarg)] -[visit_exp `numtype?#6`] -[visit_id numtype?#6] -[visit_exp memidx#47] -[visit_id memidx#47] -[visit_exp memarg#19] -[visit_id memarg#19] -[visit_exp ((Inn : Inn <: numtype), ?(`%`_storeop_{sz#7, i#8091}(`%`_sz{i#8092}(M))), x, memarg)] +[visit_exp `STORE`_instr((Inn : Inn <: numtype), ?(`%`_storeop_(`%`_sz(M))), x, memarg)] +[visit_exp ((Inn : Inn <: numtype), ?(`%`_storeop_(`%`_sz(M))), x, memarg)] [visit_exp (Inn : Inn <: numtype)] [visit_exp Inn] [visit_id Inn] -[visit_exp ?(`%`_storeop_{sz#7, i#8091}(`%`_sz{i#8092}(M)))] -[visit_exp `%`_storeop_{sz#7, i#8091}(`%`_sz{i#8092}(M))] -[visit_exp sz#7] -[visit_id sz#7] -[visit_exp i#8091] -[visit_id i#8091] -[visit_exp (`%`_sz{i#8092}(M))] -[visit_exp `%`_sz{i#8092}(M)] -[visit_exp i#8092] -[visit_id i#8092] +[visit_exp ?(`%`_storeop_(`%`_sz(M)))] +[visit_exp `%`_storeop_(`%`_sz(M))] +[visit_exp (`%`_sz(M))] +[visit_exp `%`_sz(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -29071,15 +25602,9 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id x] [visit_exp memarg] [visit_id memarg] -[visit_exp `%->_%%`_instrtype{resulttype#2015, `localidx*#1211`}(`%`_resulttype{`X*#8847`}([(at : addrtype <: valtype) (Inn : Inn <: valtype)]), [], `%`_resulttype{`X*#8896`}([]))] -[visit_exp resulttype#2015] -[visit_id resulttype#2015] -[visit_exp `localidx*#1211`] -[visit_id localidx*#1211] -[visit_exp (`%`_resulttype{`X*#8847`}([(at : addrtype <: valtype) (Inn : Inn <: valtype)]), [], `%`_resulttype{`X*#8896`}([]))] -[visit_exp `%`_resulttype{`X*#8847`}([(at : addrtype <: valtype) (Inn : Inn <: valtype)])] -[visit_exp `X*#8847`] -[visit_id X*#8847] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : Inn <: valtype)]), [], `%`_resulttype([]))] +[visit_exp (`%`_resulttype([(at : addrtype <: valtype) (Inn : Inn <: valtype)]), [], `%`_resulttype([]))] +[visit_exp `%`_resulttype([(at : addrtype <: valtype) (Inn : Inn <: valtype)])] [visit_exp ([(at : addrtype <: valtype) (Inn : Inn <: valtype)])] [visit_exp [(at : addrtype <: valtype) (Inn : Inn <: valtype)]] [visit_exp (at : addrtype <: valtype)] @@ -29089,29 +25614,19 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp Inn] [visit_id Inn] not free [visit_exp []] -[visit_exp `%`_resulttype{`X*#8896`}([])] -[visit_exp `X*#8896`] -[visit_id X*#8896] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] -[visit_exp (C.`MEMS`_context{`memtype*#16`}[x!`%`_idx{i#8116}.0] = `%%PAGE`_memtype{addrtype#669, limits#669}(at, lim))] -[visit_exp C.`MEMS`_context{`memtype*#16`}[x!`%`_idx{i#8116}.0]] -[visit_exp C.`MEMS`_context{`memtype*#16`}] +[visit_exp (C.`MEMS`_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim))] +[visit_exp C.`MEMS`_context[x!`%`_idx.0]] +[visit_exp C.`MEMS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `memtype*#16`] -[visit_id memtype*#16] -[visit_exp x!`%`_idx{i#8116}.0] -[visit_exp x!`%`_idx{i#8116}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#8116] -[visit_id i#8116] -[visit_exp `%%PAGE`_memtype{addrtype#669, limits#669}(at, lim)] -[visit_exp addrtype#669] -[visit_id addrtype#669] -[visit_exp limits#669] -[visit_id limits#669] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `%%PAGE`_memtype(at, lim)] [visit_exp (at, lim)] [visit_exp at] [visit_id at] not free @@ -29124,16 +25639,10 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id at] not free [visit_exp M] [visit_id M] not free -[check_dims] C X*#8907 X*#8975 addrtype#681 at i#8140 lim limits#681 localidx*#1223 memarg memarg#21 memidx#49 memtype*#17 resulttype#2035 vectype?#2 x +[check_dims] C at lim memarg x [visit_exp C] [visit_id C] -[visit_exp `VLOAD`_instr{`vectype?#2`, memidx#49, memarg#21}(`V128`_vectype, ?(), x, memarg)] -[visit_exp `vectype?#2`] -[visit_id vectype?#2] -[visit_exp memidx#49] -[visit_id memidx#49] -[visit_exp memarg#21] -[visit_id memarg#21] +[visit_exp `VLOAD`_instr(`V128`_vectype, ?(), x, memarg)] [visit_exp (`V128`_vectype, ?(), x, memarg)] [visit_exp `V128`_vectype] [visit_exp ()] @@ -29142,46 +25651,30 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id x] [visit_exp memarg] [visit_id memarg] -[visit_exp `%->_%%`_instrtype{resulttype#2035, `localidx*#1223`}(`%`_resulttype{`X*#8907`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#8975`}([`V128`_valtype]))] -[visit_exp resulttype#2035] -[visit_id resulttype#2035] -[visit_exp `localidx*#1223`] -[visit_id localidx*#1223] -[visit_exp (`%`_resulttype{`X*#8907`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#8975`}([`V128`_valtype]))] -[visit_exp `%`_resulttype{`X*#8907`}([(at : addrtype <: valtype)])] -[visit_exp `X*#8907`] -[visit_id X*#8907] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp (`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp `%`_resulttype([(at : addrtype <: valtype)])] [visit_exp ([(at : addrtype <: valtype)])] [visit_exp [(at : addrtype <: valtype)]] [visit_exp (at : addrtype <: valtype)] [visit_exp at] [visit_id at] [visit_exp []] -[visit_exp `%`_resulttype{`X*#8975`}([`V128`_valtype])] -[visit_exp `X*#8975`] -[visit_id X*#8975] +[visit_exp `%`_resulttype([`V128`_valtype])] [visit_exp ([`V128`_valtype])] [visit_exp [`V128`_valtype]] [visit_exp `V128`_valtype] [visit_exp ()] -[visit_exp (C.`MEMS`_context{`memtype*#17`}[x!`%`_idx{i#8140}.0] = `%%PAGE`_memtype{addrtype#681, limits#681}(at, lim))] -[visit_exp C.`MEMS`_context{`memtype*#17`}[x!`%`_idx{i#8140}.0]] -[visit_exp C.`MEMS`_context{`memtype*#17`}] +[visit_exp (C.`MEMS`_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim))] +[visit_exp C.`MEMS`_context[x!`%`_idx.0]] +[visit_exp C.`MEMS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `memtype*#17`] -[visit_id memtype*#17] -[visit_exp x!`%`_idx{i#8140}.0] -[visit_exp x!`%`_idx{i#8140}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#8140] -[visit_id i#8140] -[visit_exp `%%PAGE`_memtype{addrtype#681, limits#681}(at, lim)] -[visit_exp addrtype#681] -[visit_id addrtype#681] -[visit_exp limits#681] -[visit_id limits#681] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `%%PAGE`_memtype(at, lim)] [visit_exp (at, lim)] [visit_exp at] [visit_id at] not free @@ -29195,33 +25688,17 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp $vsize(`V128`_vectype)] [visit_exp `V128`_vectype] [visit_exp ()] -[check_dims] C M M#16 N X*#8986 X*#9054 addrtype#693 at i#8166 i#8173 i#8197 lim limits#693 localidx*#1235 memarg memarg#23 memidx#51 memtype*#18 resulttype#2055 sx sx#24 sz#54 vectype?#3 x +[check_dims] C M N at lim memarg sx x [visit_exp C] [visit_id C] -[visit_exp `VLOAD`_instr{`vectype?#3`, memidx#51, memarg#23}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#54, M#16, sx#24, i#8166}(`%`_sz{i#8173}(M), N, sx)), x, memarg)] -[visit_exp `vectype?#3`] -[visit_id vectype?#3] -[visit_exp memidx#51] -[visit_id memidx#51] -[visit_exp memarg#23] -[visit_id memarg#23] -[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#54, M#16, sx#24, i#8166}(`%`_sz{i#8173}(M), N, sx)), x, memarg)] +[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)] +[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp ?(`SHAPE%X%_%`_vloadop_{sz#54, M#16, sx#24, i#8166}(`%`_sz{i#8173}(M), N, sx))] -[visit_exp `SHAPE%X%_%`_vloadop_{sz#54, M#16, sx#24, i#8166}(`%`_sz{i#8173}(M), N, sx)] -[visit_exp sz#54] -[visit_id sz#54] -[visit_exp M#16] -[visit_id M#16] -[visit_exp sx#24] -[visit_id sx#24] -[visit_exp i#8166] -[visit_id i#8166] -[visit_exp (`%`_sz{i#8173}(M), N, sx)] -[visit_exp `%`_sz{i#8173}(M)] -[visit_exp i#8173] -[visit_id i#8173] +[visit_exp ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx))] +[visit_exp `SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)] +[visit_exp (`%`_sz(M), N, sx)] +[visit_exp `%`_sz(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -29233,46 +25710,30 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id x] [visit_exp memarg] [visit_id memarg] -[visit_exp `%->_%%`_instrtype{resulttype#2055, `localidx*#1235`}(`%`_resulttype{`X*#8986`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#9054`}([`V128`_valtype]))] -[visit_exp resulttype#2055] -[visit_id resulttype#2055] -[visit_exp `localidx*#1235`] -[visit_id localidx*#1235] -[visit_exp (`%`_resulttype{`X*#8986`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#9054`}([`V128`_valtype]))] -[visit_exp `%`_resulttype{`X*#8986`}([(at : addrtype <: valtype)])] -[visit_exp `X*#8986`] -[visit_id X*#8986] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp (`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp `%`_resulttype([(at : addrtype <: valtype)])] [visit_exp ([(at : addrtype <: valtype)])] [visit_exp [(at : addrtype <: valtype)]] [visit_exp (at : addrtype <: valtype)] [visit_exp at] [visit_id at] [visit_exp []] -[visit_exp `%`_resulttype{`X*#9054`}([`V128`_valtype])] -[visit_exp `X*#9054`] -[visit_id X*#9054] +[visit_exp `%`_resulttype([`V128`_valtype])] [visit_exp ([`V128`_valtype])] [visit_exp [`V128`_valtype]] [visit_exp `V128`_valtype] [visit_exp ()] -[visit_exp (C.`MEMS`_context{`memtype*#18`}[x!`%`_idx{i#8197}.0] = `%%PAGE`_memtype{addrtype#693, limits#693}(at, lim))] -[visit_exp C.`MEMS`_context{`memtype*#18`}[x!`%`_idx{i#8197}.0]] -[visit_exp C.`MEMS`_context{`memtype*#18`}] +[visit_exp (C.`MEMS`_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim))] +[visit_exp C.`MEMS`_context[x!`%`_idx.0]] +[visit_exp C.`MEMS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `memtype*#18`] -[visit_id memtype*#18] -[visit_exp x!`%`_idx{i#8197}.0] -[visit_exp x!`%`_idx{i#8197}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#8197] -[visit_id i#8197] -[visit_exp `%%PAGE`_memtype{addrtype#693, limits#693}(at, lim)] -[visit_exp addrtype#693] -[visit_id addrtype#693] -[visit_exp limits#693] -[visit_id limits#693] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `%%PAGE`_memtype(at, lim)] [visit_exp (at, lim)] [visit_exp at] [visit_id at] not free @@ -29288,27 +25749,17 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id M] not free [visit_exp N] [visit_id N] not free -[check_dims] C N X*#9065 X*#9133 addrtype#705 at i#8229 i#8253 lim limits#705 localidx*#1247 memarg memarg#25 memidx#53 memtype*#19 resulttype#2075 sz#101 vectype?#4 x +[check_dims] C N at lim memarg x [visit_exp C] [visit_id C] -[visit_exp `VLOAD`_instr{`vectype?#4`, memidx#53, memarg#25}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#101}(`%`_sz{i#8229}(N))), x, memarg)] -[visit_exp `vectype?#4`] -[visit_id vectype?#4] -[visit_exp memidx#53] -[visit_id memidx#53] -[visit_exp memarg#25] -[visit_id memarg#25] -[visit_exp (`V128`_vectype, ?(`SPLAT`_vloadop_{sz#101}(`%`_sz{i#8229}(N))), x, memarg)] +[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(N))), x, memarg)] +[visit_exp (`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(N))), x, memarg)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp ?(`SPLAT`_vloadop_{sz#101}(`%`_sz{i#8229}(N)))] -[visit_exp `SPLAT`_vloadop_{sz#101}(`%`_sz{i#8229}(N))] -[visit_exp sz#101] -[visit_id sz#101] -[visit_exp (`%`_sz{i#8229}(N))] -[visit_exp `%`_sz{i#8229}(N)] -[visit_exp i#8229] -[visit_id i#8229] +[visit_exp ?(`SPLAT`_vloadop_(`%`_sz(N)))] +[visit_exp `SPLAT`_vloadop_(`%`_sz(N))] +[visit_exp (`%`_sz(N))] +[visit_exp `%`_sz(N)] [visit_exp (N)] [visit_exp N] [visit_id N] @@ -29316,46 +25767,30 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id x] [visit_exp memarg] [visit_id memarg] -[visit_exp `%->_%%`_instrtype{resulttype#2075, `localidx*#1247`}(`%`_resulttype{`X*#9065`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#9133`}([`V128`_valtype]))] -[visit_exp resulttype#2075] -[visit_id resulttype#2075] -[visit_exp `localidx*#1247`] -[visit_id localidx*#1247] -[visit_exp (`%`_resulttype{`X*#9065`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#9133`}([`V128`_valtype]))] -[visit_exp `%`_resulttype{`X*#9065`}([(at : addrtype <: valtype)])] -[visit_exp `X*#9065`] -[visit_id X*#9065] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp (`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp `%`_resulttype([(at : addrtype <: valtype)])] [visit_exp ([(at : addrtype <: valtype)])] [visit_exp [(at : addrtype <: valtype)]] [visit_exp (at : addrtype <: valtype)] [visit_exp at] [visit_id at] [visit_exp []] -[visit_exp `%`_resulttype{`X*#9133`}([`V128`_valtype])] -[visit_exp `X*#9133`] -[visit_id X*#9133] +[visit_exp `%`_resulttype([`V128`_valtype])] [visit_exp ([`V128`_valtype])] [visit_exp [`V128`_valtype]] [visit_exp `V128`_valtype] [visit_exp ()] -[visit_exp (C.`MEMS`_context{`memtype*#19`}[x!`%`_idx{i#8253}.0] = `%%PAGE`_memtype{addrtype#705, limits#705}(at, lim))] -[visit_exp C.`MEMS`_context{`memtype*#19`}[x!`%`_idx{i#8253}.0]] -[visit_exp C.`MEMS`_context{`memtype*#19`}] +[visit_exp (C.`MEMS`_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim))] +[visit_exp C.`MEMS`_context[x!`%`_idx.0]] +[visit_exp C.`MEMS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `memtype*#19`] -[visit_id memtype*#19] -[visit_exp x!`%`_idx{i#8253}.0] -[visit_exp x!`%`_idx{i#8253}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#8253] -[visit_id i#8253] -[visit_exp `%%PAGE`_memtype{addrtype#705, limits#705}(at, lim)] -[visit_exp addrtype#705] -[visit_id addrtype#705] -[visit_exp limits#705] -[visit_id limits#705] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `%%PAGE`_memtype(at, lim)] [visit_exp (at, lim)] [visit_exp at] [visit_id at] not free @@ -29368,29 +25803,17 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id at] not free [visit_exp N] [visit_id N] not free -[check_dims] C N X*#9144 X*#9212 addrtype#717 at i#8279 i#8286 i#8310 lim limits#717 localidx*#1259 memarg memarg#27 memidx#55 memtype*#20 resulttype#2095 sz#148 vectype?#5 x +[check_dims] C N at lim memarg x [visit_exp C] [visit_id C] -[visit_exp `VLOAD`_instr{`vectype?#5`, memidx#55, memarg#27}(`V128`_vectype, ?(`ZERO`_vloadop_{sz#148, i#8279}(`%`_sz{i#8286}(N))), x, memarg)] -[visit_exp `vectype?#5`] -[visit_id vectype?#5] -[visit_exp memidx#55] -[visit_id memidx#55] -[visit_exp memarg#27] -[visit_id memarg#27] -[visit_exp (`V128`_vectype, ?(`ZERO`_vloadop_{sz#148, i#8279}(`%`_sz{i#8286}(N))), x, memarg)] +[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`ZERO`_vloadop_(`%`_sz(N))), x, memarg)] +[visit_exp (`V128`_vectype, ?(`ZERO`_vloadop_(`%`_sz(N))), x, memarg)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp ?(`ZERO`_vloadop_{sz#148, i#8279}(`%`_sz{i#8286}(N)))] -[visit_exp `ZERO`_vloadop_{sz#148, i#8279}(`%`_sz{i#8286}(N))] -[visit_exp sz#148] -[visit_id sz#148] -[visit_exp i#8279] -[visit_id i#8279] -[visit_exp (`%`_sz{i#8286}(N))] -[visit_exp `%`_sz{i#8286}(N)] -[visit_exp i#8286] -[visit_id i#8286] +[visit_exp ?(`ZERO`_vloadop_(`%`_sz(N)))] +[visit_exp `ZERO`_vloadop_(`%`_sz(N))] +[visit_exp (`%`_sz(N))] +[visit_exp `%`_sz(N)] [visit_exp (N)] [visit_exp N] [visit_id N] @@ -29398,46 +25821,30 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id x] [visit_exp memarg] [visit_id memarg] -[visit_exp `%->_%%`_instrtype{resulttype#2095, `localidx*#1259`}(`%`_resulttype{`X*#9144`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#9212`}([`V128`_valtype]))] -[visit_exp resulttype#2095] -[visit_id resulttype#2095] -[visit_exp `localidx*#1259`] -[visit_id localidx*#1259] -[visit_exp (`%`_resulttype{`X*#9144`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#9212`}([`V128`_valtype]))] -[visit_exp `%`_resulttype{`X*#9144`}([(at : addrtype <: valtype)])] -[visit_exp `X*#9144`] -[visit_id X*#9144] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp (`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp `%`_resulttype([(at : addrtype <: valtype)])] [visit_exp ([(at : addrtype <: valtype)])] [visit_exp [(at : addrtype <: valtype)]] [visit_exp (at : addrtype <: valtype)] [visit_exp at] [visit_id at] [visit_exp []] -[visit_exp `%`_resulttype{`X*#9212`}([`V128`_valtype])] -[visit_exp `X*#9212`] -[visit_id X*#9212] +[visit_exp `%`_resulttype([`V128`_valtype])] [visit_exp ([`V128`_valtype])] [visit_exp [`V128`_valtype]] [visit_exp `V128`_valtype] [visit_exp ()] -[visit_exp (C.`MEMS`_context{`memtype*#20`}[x!`%`_idx{i#8310}.0] = `%%PAGE`_memtype{addrtype#717, limits#717}(at, lim))] -[visit_exp C.`MEMS`_context{`memtype*#20`}[x!`%`_idx{i#8310}.0]] -[visit_exp C.`MEMS`_context{`memtype*#20`}] +[visit_exp (C.`MEMS`_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim))] +[visit_exp C.`MEMS`_context[x!`%`_idx.0]] +[visit_exp C.`MEMS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `memtype*#20`] -[visit_id memtype*#20] -[visit_exp x!`%`_idx{i#8310}.0] -[visit_exp x!`%`_idx{i#8310}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#8310] -[visit_id i#8310] -[visit_exp `%%PAGE`_memtype{addrtype#717, limits#717}(at, lim)] -[visit_exp addrtype#717] -[visit_id addrtype#717] -[visit_exp limits#717] -[visit_id limits#717] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `%%PAGE`_memtype(at, lim)] [visit_exp (at, lim)] [visit_exp at] [visit_id at] not free @@ -29450,26 +25857,14 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id at] not free [visit_exp N] [visit_id N] not free -[check_dims] C N X*#9233 X*#9282 addrtype#729 at i i#8318 i#8356 i#8370 laneidx#9 lim limits#729 localidx*#1271 memarg memarg#29 memidx#57 memtype*#21 resulttype#2115 sz#150 vectype#24 x +[check_dims] C N at i lim memarg x [visit_exp C] [visit_id C] -[visit_exp `VLOAD_LANE`_instr{vectype#24, sz#150, memidx#57, memarg#29, laneidx#9}(`V128`_vectype, `%`_sz{i#8318}(N), x, memarg, i)] -[visit_exp vectype#24] -[visit_id vectype#24] -[visit_exp sz#150] -[visit_id sz#150] -[visit_exp memidx#57] -[visit_id memidx#57] -[visit_exp memarg#29] -[visit_id memarg#29] -[visit_exp laneidx#9] -[visit_id laneidx#9] -[visit_exp (`V128`_vectype, `%`_sz{i#8318}(N), x, memarg, i)] +[visit_exp `VLOAD_LANE`_instr(`V128`_vectype, `%`_sz(N), x, memarg, i)] +[visit_exp (`V128`_vectype, `%`_sz(N), x, memarg, i)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp `%`_sz{i#8318}(N)] -[visit_exp i#8318] -[visit_id i#8318] +[visit_exp `%`_sz(N)] [visit_exp (N)] [visit_exp N] [visit_id N] @@ -29479,15 +25874,9 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id memarg] [visit_exp i] [visit_id i] -[visit_exp `%->_%%`_instrtype{resulttype#2115, `localidx*#1271`}(`%`_resulttype{`X*#9233`}([(at : addrtype <: valtype) `V128`_valtype]), [], `%`_resulttype{`X*#9282`}([`V128`_valtype]))] -[visit_exp resulttype#2115] -[visit_id resulttype#2115] -[visit_exp `localidx*#1271`] -[visit_id localidx*#1271] -[visit_exp (`%`_resulttype{`X*#9233`}([(at : addrtype <: valtype) `V128`_valtype]), [], `%`_resulttype{`X*#9282`}([`V128`_valtype]))] -[visit_exp `%`_resulttype{`X*#9233`}([(at : addrtype <: valtype) `V128`_valtype])] -[visit_exp `X*#9233`] -[visit_id X*#9233] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) `V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp (`%`_resulttype([(at : addrtype <: valtype) `V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp `%`_resulttype([(at : addrtype <: valtype) `V128`_valtype])] [visit_exp ([(at : addrtype <: valtype) `V128`_valtype])] [visit_exp [(at : addrtype <: valtype) `V128`_valtype]] [visit_exp (at : addrtype <: valtype)] @@ -29496,31 +25885,21 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `V128`_valtype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#9282`}([`V128`_valtype])] -[visit_exp `X*#9282`] -[visit_id X*#9282] +[visit_exp `%`_resulttype([`V128`_valtype])] [visit_exp ([`V128`_valtype])] [visit_exp [`V128`_valtype]] [visit_exp `V128`_valtype] [visit_exp ()] -[visit_exp (C.`MEMS`_context{`memtype*#21`}[x!`%`_idx{i#8356}.0] = `%%PAGE`_memtype{addrtype#729, limits#729}(at, lim))] -[visit_exp C.`MEMS`_context{`memtype*#21`}[x!`%`_idx{i#8356}.0]] -[visit_exp C.`MEMS`_context{`memtype*#21`}] +[visit_exp (C.`MEMS`_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim))] +[visit_exp C.`MEMS`_context[x!`%`_idx.0]] +[visit_exp C.`MEMS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `memtype*#21`] -[visit_id memtype*#21] -[visit_exp x!`%`_idx{i#8356}.0] -[visit_exp x!`%`_idx{i#8356}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#8356] -[visit_id i#8356] -[visit_exp `%%PAGE`_memtype{addrtype#729, limits#729}(at, lim)] -[visit_exp addrtype#729] -[visit_id addrtype#729] -[visit_exp limits#729] -[visit_id limits#729] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `%%PAGE`_memtype(at, lim)] [visit_exp (at, lim)] [visit_exp at] [visit_id at] not free @@ -29533,30 +25912,22 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id at] not free [visit_exp N] [visit_id N] not free -[visit_exp ((i!`%`_laneidx{i#8370}.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat)))] -[visit_exp (i!`%`_laneidx{i#8370}.0 : nat <:> rat)] -[visit_exp i!`%`_laneidx{i#8370}.0] -[visit_exp i!`%`_laneidx{i#8370}] +[visit_exp ((i!`%`_laneidx.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat)))] +[visit_exp (i!`%`_laneidx.0 : nat <:> rat)] +[visit_exp i!`%`_laneidx.0] +[visit_exp i!`%`_laneidx] [visit_exp i] [visit_id i] not free -[visit_exp i#8370] -[visit_id i#8370] [visit_exp ((128 : nat <:> rat) / (N : nat <:> rat))] [visit_exp (128 : nat <:> rat)] [visit_exp 128] [visit_exp (N : nat <:> rat)] [visit_exp N] [visit_id N] not free -[check_dims] C X*#9303 X*#9352 addrtype#741 at i#8394 lim limits#741 localidx*#1283 memarg memarg#31 memidx#59 memtype*#22 resulttype#2135 vectype#26 x +[check_dims] C at lim memarg x [visit_exp C] [visit_id C] -[visit_exp `VSTORE`_instr{vectype#26, memidx#59, memarg#31}(`V128`_vectype, x, memarg)] -[visit_exp vectype#26] -[visit_id vectype#26] -[visit_exp memidx#59] -[visit_id memidx#59] -[visit_exp memarg#31] -[visit_id memarg#31] +[visit_exp `VSTORE`_instr(`V128`_vectype, x, memarg)] [visit_exp (`V128`_vectype, x, memarg)] [visit_exp `V128`_vectype] [visit_exp ()] @@ -29564,15 +25935,9 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id x] [visit_exp memarg] [visit_id memarg] -[visit_exp `%->_%%`_instrtype{resulttype#2135, `localidx*#1283`}(`%`_resulttype{`X*#9303`}([(at : addrtype <: valtype) `V128`_valtype]), [], `%`_resulttype{`X*#9352`}([]))] -[visit_exp resulttype#2135] -[visit_id resulttype#2135] -[visit_exp `localidx*#1283`] -[visit_id localidx*#1283] -[visit_exp (`%`_resulttype{`X*#9303`}([(at : addrtype <: valtype) `V128`_valtype]), [], `%`_resulttype{`X*#9352`}([]))] -[visit_exp `%`_resulttype{`X*#9303`}([(at : addrtype <: valtype) `V128`_valtype])] -[visit_exp `X*#9303`] -[visit_id X*#9303] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) `V128`_valtype]), [], `%`_resulttype([]))] +[visit_exp (`%`_resulttype([(at : addrtype <: valtype) `V128`_valtype]), [], `%`_resulttype([]))] +[visit_exp `%`_resulttype([(at : addrtype <: valtype) `V128`_valtype])] [visit_exp ([(at : addrtype <: valtype) `V128`_valtype])] [visit_exp [(at : addrtype <: valtype) `V128`_valtype]] [visit_exp (at : addrtype <: valtype)] @@ -29581,29 +25946,19 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `V128`_valtype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#9352`}([])] -[visit_exp `X*#9352`] -[visit_id X*#9352] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] -[visit_exp (C.`MEMS`_context{`memtype*#22`}[x!`%`_idx{i#8394}.0] = `%%PAGE`_memtype{addrtype#741, limits#741}(at, lim))] -[visit_exp C.`MEMS`_context{`memtype*#22`}[x!`%`_idx{i#8394}.0]] -[visit_exp C.`MEMS`_context{`memtype*#22`}] +[visit_exp (C.`MEMS`_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim))] +[visit_exp C.`MEMS`_context[x!`%`_idx.0]] +[visit_exp C.`MEMS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `memtype*#22`] -[visit_id memtype*#22] -[visit_exp x!`%`_idx{i#8394}.0] -[visit_exp x!`%`_idx{i#8394}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#8394] -[visit_id i#8394] -[visit_exp `%%PAGE`_memtype{addrtype#741, limits#741}(at, lim)] -[visit_exp addrtype#741] -[visit_id addrtype#741] -[visit_exp limits#741] -[visit_id limits#741] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `%%PAGE`_memtype(at, lim)] [visit_exp (at, lim)] [visit_exp at] [visit_id at] not free @@ -29617,26 +25972,14 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp $vsize(`V128`_vectype)] [visit_exp `V128`_vectype] [visit_exp ()] -[check_dims] C N X*#9373 X*#9422 addrtype#753 at i i#8402 i#8440 i#8454 laneidx#11 lim limits#753 localidx*#1295 memarg memarg#33 memidx#61 memtype*#23 resulttype#2155 sz#152 vectype#28 x +[check_dims] C N at i lim memarg x [visit_exp C] [visit_id C] -[visit_exp `VSTORE_LANE`_instr{vectype#28, sz#152, memidx#61, memarg#33, laneidx#11}(`V128`_vectype, `%`_sz{i#8402}(N), x, memarg, i)] -[visit_exp vectype#28] -[visit_id vectype#28] -[visit_exp sz#152] -[visit_id sz#152] -[visit_exp memidx#61] -[visit_id memidx#61] -[visit_exp memarg#33] -[visit_id memarg#33] -[visit_exp laneidx#11] -[visit_id laneidx#11] -[visit_exp (`V128`_vectype, `%`_sz{i#8402}(N), x, memarg, i)] +[visit_exp `VSTORE_LANE`_instr(`V128`_vectype, `%`_sz(N), x, memarg, i)] +[visit_exp (`V128`_vectype, `%`_sz(N), x, memarg, i)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp `%`_sz{i#8402}(N)] -[visit_exp i#8402] -[visit_id i#8402] +[visit_exp `%`_sz(N)] [visit_exp (N)] [visit_exp N] [visit_id N] @@ -29646,15 +25989,9 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id memarg] [visit_exp i] [visit_id i] -[visit_exp `%->_%%`_instrtype{resulttype#2155, `localidx*#1295`}(`%`_resulttype{`X*#9373`}([(at : addrtype <: valtype) `V128`_valtype]), [], `%`_resulttype{`X*#9422`}([]))] -[visit_exp resulttype#2155] -[visit_id resulttype#2155] -[visit_exp `localidx*#1295`] -[visit_id localidx*#1295] -[visit_exp (`%`_resulttype{`X*#9373`}([(at : addrtype <: valtype) `V128`_valtype]), [], `%`_resulttype{`X*#9422`}([]))] -[visit_exp `%`_resulttype{`X*#9373`}([(at : addrtype <: valtype) `V128`_valtype])] -[visit_exp `X*#9373`] -[visit_id X*#9373] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) `V128`_valtype]), [], `%`_resulttype([]))] +[visit_exp (`%`_resulttype([(at : addrtype <: valtype) `V128`_valtype]), [], `%`_resulttype([]))] +[visit_exp `%`_resulttype([(at : addrtype <: valtype) `V128`_valtype])] [visit_exp ([(at : addrtype <: valtype) `V128`_valtype])] [visit_exp [(at : addrtype <: valtype) `V128`_valtype]] [visit_exp (at : addrtype <: valtype)] @@ -29663,29 +26000,19 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `V128`_valtype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#9422`}([])] -[visit_exp `X*#9422`] -[visit_id X*#9422] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] -[visit_exp (C.`MEMS`_context{`memtype*#23`}[x!`%`_idx{i#8440}.0] = `%%PAGE`_memtype{addrtype#753, limits#753}(at, lim))] -[visit_exp C.`MEMS`_context{`memtype*#23`}[x!`%`_idx{i#8440}.0]] -[visit_exp C.`MEMS`_context{`memtype*#23`}] +[visit_exp (C.`MEMS`_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim))] +[visit_exp C.`MEMS`_context[x!`%`_idx.0]] +[visit_exp C.`MEMS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `memtype*#23`] -[visit_id memtype*#23] -[visit_exp x!`%`_idx{i#8440}.0] -[visit_exp x!`%`_idx{i#8440}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#8440] -[visit_id i#8440] -[visit_exp `%%PAGE`_memtype{addrtype#753, limits#753}(at, lim)] -[visit_exp addrtype#753] -[visit_id addrtype#753] -[visit_exp limits#753] -[visit_id limits#753] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `%%PAGE`_memtype(at, lim)] [visit_exp (at, lim)] [visit_exp at] [visit_id at] not free @@ -29698,105 +26025,75 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id at] not free [visit_exp N] [visit_id N] not free -[visit_exp ((i!`%`_laneidx{i#8454}.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat)))] -[visit_exp (i!`%`_laneidx{i#8454}.0 : nat <:> rat)] -[visit_exp i!`%`_laneidx{i#8454}.0] -[visit_exp i!`%`_laneidx{i#8454}] +[visit_exp ((i!`%`_laneidx.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat)))] +[visit_exp (i!`%`_laneidx.0 : nat <:> rat)] +[visit_exp i!`%`_laneidx.0] +[visit_exp i!`%`_laneidx] [visit_exp i] [visit_id i] not free -[visit_exp i#8454] -[visit_id i#8454] [visit_exp ((128 : nat <:> rat) / (N : nat <:> rat))] [visit_exp (128 : nat <:> rat)] [visit_exp 128] [visit_exp (N : nat <:> rat)] [visit_exp N] [visit_id N] not free -[check_dims] C X*#9443 X*#9492 c_nt localidx*#1307 nt numtype#19 resulttype#2175 +[check_dims] C c_nt nt [visit_exp C] [visit_id C] -[visit_exp `CONST`_instr{numtype#19}(nt, c_nt)] -[visit_exp numtype#19] -[visit_id numtype#19] +[visit_exp `CONST`_instr(nt, c_nt)] [visit_exp (nt, c_nt)] [visit_exp nt] [visit_id nt] [visit_exp c_nt] [visit_id c_nt] -[visit_exp `%->_%%`_instrtype{resulttype#2175, `localidx*#1307`}(`%`_resulttype{`X*#9443`}([]), [], `%`_resulttype{`X*#9492`}([(nt : numtype <: valtype)]))] -[visit_exp resulttype#2175] -[visit_id resulttype#2175] -[visit_exp `localidx*#1307`] -[visit_id localidx*#1307] -[visit_exp (`%`_resulttype{`X*#9443`}([]), [], `%`_resulttype{`X*#9492`}([(nt : numtype <: valtype)]))] -[visit_exp `%`_resulttype{`X*#9443`}([])] -[visit_exp `X*#9443`] -[visit_id X*#9443] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))] +[visit_exp (`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] [visit_exp []] -[visit_exp `%`_resulttype{`X*#9492`}([(nt : numtype <: valtype)])] -[visit_exp `X*#9492`] -[visit_id X*#9492] +[visit_exp `%`_resulttype([(nt : numtype <: valtype)])] [visit_exp ([(nt : numtype <: valtype)])] [visit_exp [(nt : numtype <: valtype)]] [visit_exp (nt : numtype <: valtype)] [visit_exp nt] [visit_id nt] not free -[check_dims] C X*#9503 X*#9571 localidx*#1319 nt numtype#21 resulttype#2195 unop_nt +[check_dims] C nt unop_nt [visit_exp C] [visit_id C] -[visit_exp `UNOP`_instr{numtype#21}(nt, unop_nt)] -[visit_exp numtype#21] -[visit_id numtype#21] +[visit_exp `UNOP`_instr(nt, unop_nt)] [visit_exp (nt, unop_nt)] [visit_exp nt] [visit_id nt] [visit_exp unop_nt] [visit_id unop_nt] -[visit_exp `%->_%%`_instrtype{resulttype#2195, `localidx*#1319`}(`%`_resulttype{`X*#9503`}([(nt : numtype <: valtype)]), [], `%`_resulttype{`X*#9571`}([(nt : numtype <: valtype)]))] -[visit_exp resulttype#2195] -[visit_id resulttype#2195] -[visit_exp `localidx*#1319`] -[visit_id localidx*#1319] -[visit_exp (`%`_resulttype{`X*#9503`}([(nt : numtype <: valtype)]), [], `%`_resulttype{`X*#9571`}([(nt : numtype <: valtype)]))] -[visit_exp `%`_resulttype{`X*#9503`}([(nt : numtype <: valtype)])] -[visit_exp `X*#9503`] -[visit_id X*#9503] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))] +[visit_exp (`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))] +[visit_exp `%`_resulttype([(nt : numtype <: valtype)])] [visit_exp ([(nt : numtype <: valtype)])] [visit_exp [(nt : numtype <: valtype)]] [visit_exp (nt : numtype <: valtype)] [visit_exp nt] [visit_id nt] not free [visit_exp []] -[visit_exp `%`_resulttype{`X*#9571`}([(nt : numtype <: valtype)])] -[visit_exp `X*#9571`] -[visit_id X*#9571] +[visit_exp `%`_resulttype([(nt : numtype <: valtype)])] [visit_exp ([(nt : numtype <: valtype)])] [visit_exp [(nt : numtype <: valtype)]] [visit_exp (nt : numtype <: valtype)] [visit_exp nt] [visit_id nt] not free -[check_dims] C X*#9592 X*#9641 binop_nt localidx*#1331 nt numtype#23 resulttype#2215 +[check_dims] C binop_nt nt [visit_exp C] [visit_id C] -[visit_exp `BINOP`_instr{numtype#23}(nt, binop_nt)] -[visit_exp numtype#23] -[visit_id numtype#23] +[visit_exp `BINOP`_instr(nt, binop_nt)] [visit_exp (nt, binop_nt)] [visit_exp nt] [visit_id nt] [visit_exp binop_nt] [visit_id binop_nt] -[visit_exp `%->_%%`_instrtype{resulttype#2215, `localidx*#1331`}(`%`_resulttype{`X*#9592`}([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype{`X*#9641`}([(nt : numtype <: valtype)]))] -[visit_exp resulttype#2215] -[visit_id resulttype#2215] -[visit_exp `localidx*#1331`] -[visit_id localidx*#1331] -[visit_exp (`%`_resulttype{`X*#9592`}([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype{`X*#9641`}([(nt : numtype <: valtype)]))] -[visit_exp `%`_resulttype{`X*#9592`}([(nt : numtype <: valtype) (nt : numtype <: valtype)])] -[visit_exp `X*#9592`] -[visit_id X*#9592] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))] +[visit_exp (`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))] +[visit_exp `%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)])] [visit_exp ([(nt : numtype <: valtype) (nt : numtype <: valtype)])] [visit_exp [(nt : numtype <: valtype) (nt : numtype <: valtype)]] [visit_exp (nt : numtype <: valtype)] @@ -29806,67 +26103,47 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp nt] [visit_id nt] not free [visit_exp []] -[visit_exp `%`_resulttype{`X*#9641`}([(nt : numtype <: valtype)])] -[visit_exp `X*#9641`] -[visit_id X*#9641] +[visit_exp `%`_resulttype([(nt : numtype <: valtype)])] [visit_exp ([(nt : numtype <: valtype)])] [visit_exp [(nt : numtype <: valtype)]] [visit_exp (nt : numtype <: valtype)] [visit_exp nt] [visit_id nt] not free -[check_dims] C X*#9652 X*#9720 localidx*#1343 nt numtype#25 resulttype#2235 testop_nt +[check_dims] C nt testop_nt [visit_exp C] [visit_id C] -[visit_exp `TESTOP`_instr{numtype#25}(nt, testop_nt)] -[visit_exp numtype#25] -[visit_id numtype#25] +[visit_exp `TESTOP`_instr(nt, testop_nt)] [visit_exp (nt, testop_nt)] [visit_exp nt] [visit_id nt] [visit_exp testop_nt] [visit_id testop_nt] -[visit_exp `%->_%%`_instrtype{resulttype#2235, `localidx*#1343`}(`%`_resulttype{`X*#9652`}([(nt : numtype <: valtype)]), [], `%`_resulttype{`X*#9720`}([`I32`_valtype]))] -[visit_exp resulttype#2235] -[visit_id resulttype#2235] -[visit_exp `localidx*#1343`] -[visit_id localidx*#1343] -[visit_exp (`%`_resulttype{`X*#9652`}([(nt : numtype <: valtype)]), [], `%`_resulttype{`X*#9720`}([`I32`_valtype]))] -[visit_exp `%`_resulttype{`X*#9652`}([(nt : numtype <: valtype)])] -[visit_exp `X*#9652`] -[visit_id X*#9652] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([`I32`_valtype]))] +[visit_exp (`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([`I32`_valtype]))] +[visit_exp `%`_resulttype([(nt : numtype <: valtype)])] [visit_exp ([(nt : numtype <: valtype)])] [visit_exp [(nt : numtype <: valtype)]] [visit_exp (nt : numtype <: valtype)] [visit_exp nt] [visit_id nt] not free [visit_exp []] -[visit_exp `%`_resulttype{`X*#9720`}([`I32`_valtype])] -[visit_exp `X*#9720`] -[visit_id X*#9720] +[visit_exp `%`_resulttype([`I32`_valtype])] [visit_exp ([`I32`_valtype])] [visit_exp [`I32`_valtype]] [visit_exp `I32`_valtype] [visit_exp ()] -[check_dims] C X*#9741 X*#9790 localidx*#1355 nt numtype#27 relop_nt resulttype#2255 +[check_dims] C nt relop_nt [visit_exp C] [visit_id C] -[visit_exp `RELOP`_instr{numtype#27}(nt, relop_nt)] -[visit_exp numtype#27] -[visit_id numtype#27] +[visit_exp `RELOP`_instr(nt, relop_nt)] [visit_exp (nt, relop_nt)] [visit_exp nt] [visit_id nt] [visit_exp relop_nt] [visit_id relop_nt] -[visit_exp `%->_%%`_instrtype{resulttype#2255, `localidx*#1355`}(`%`_resulttype{`X*#9741`}([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype{`X*#9790`}([`I32`_valtype]))] -[visit_exp resulttype#2255] -[visit_id resulttype#2255] -[visit_exp `localidx*#1355`] -[visit_id localidx*#1355] -[visit_exp (`%`_resulttype{`X*#9741`}([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype{`X*#9790`}([`I32`_valtype]))] -[visit_exp `%`_resulttype{`X*#9741`}([(nt : numtype <: valtype) (nt : numtype <: valtype)])] -[visit_exp `X*#9741`] -[visit_id X*#9741] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([`I32`_valtype]))] +[visit_exp (`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([`I32`_valtype]))] +[visit_exp `%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)])] [visit_exp ([(nt : numtype <: valtype) (nt : numtype <: valtype)])] [visit_exp [(nt : numtype <: valtype) (nt : numtype <: valtype)]] [visit_exp (nt : numtype <: valtype)] @@ -29876,21 +26153,15 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp nt] [visit_id nt] not free [visit_exp []] -[visit_exp `%`_resulttype{`X*#9790`}([`I32`_valtype])] -[visit_exp `X*#9790`] -[visit_id X*#9790] +[visit_exp `%`_resulttype([`I32`_valtype])] [visit_exp ([`I32`_valtype])] [visit_exp [`I32`_valtype]] [visit_exp `I32`_valtype] [visit_exp ()] -[check_dims] C X*#9801 X*#9869 cvtop localidx*#1367 nt_1 nt_2 numtype_1#3 numtype_2#3 resulttype#2275 +[check_dims] C cvtop nt_1 nt_2 [visit_exp C] [visit_id C] -[visit_exp `CVTOP`_instr{numtype_1#3, numtype_2#3}(nt_1, nt_2, cvtop)] -[visit_exp numtype_1#3] -[visit_id numtype_1#3] -[visit_exp numtype_2#3] -[visit_id numtype_2#3] +[visit_exp `CVTOP`_instr(nt_1, nt_2, cvtop)] [visit_exp (nt_1, nt_2, cvtop)] [visit_exp nt_1] [visit_id nt_1] @@ -29898,115 +26169,75 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id nt_2] [visit_exp cvtop] [visit_id cvtop] -[visit_exp `%->_%%`_instrtype{resulttype#2275, `localidx*#1367`}(`%`_resulttype{`X*#9801`}([(nt_2 : numtype <: valtype)]), [], `%`_resulttype{`X*#9869`}([(nt_1 : numtype <: valtype)]))] -[visit_exp resulttype#2275] -[visit_id resulttype#2275] -[visit_exp `localidx*#1367`] -[visit_id localidx*#1367] -[visit_exp (`%`_resulttype{`X*#9801`}([(nt_2 : numtype <: valtype)]), [], `%`_resulttype{`X*#9869`}([(nt_1 : numtype <: valtype)]))] -[visit_exp `%`_resulttype{`X*#9801`}([(nt_2 : numtype <: valtype)])] -[visit_exp `X*#9801`] -[visit_id X*#9801] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))] +[visit_exp (`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))] +[visit_exp `%`_resulttype([(nt_2 : numtype <: valtype)])] [visit_exp ([(nt_2 : numtype <: valtype)])] [visit_exp [(nt_2 : numtype <: valtype)]] [visit_exp (nt_2 : numtype <: valtype)] [visit_exp nt_2] [visit_id nt_2] not free [visit_exp []] -[visit_exp `%`_resulttype{`X*#9869`}([(nt_1 : numtype <: valtype)])] -[visit_exp `X*#9869`] -[visit_id X*#9869] +[visit_exp `%`_resulttype([(nt_1 : numtype <: valtype)])] [visit_exp ([(nt_1 : numtype <: valtype)])] [visit_exp [(nt_1 : numtype <: valtype)]] [visit_exp (nt_1 : numtype <: valtype)] [visit_exp nt_1] [visit_id nt_1] not free -[check_dims] C X*#9890 X*#9939 c localidx*#1379 resulttype#2295 vectype#30 +[check_dims] C c [visit_exp C] [visit_id C] -[visit_exp `VCONST`_instr{vectype#30}(`V128`_vectype, c)] -[visit_exp vectype#30] -[visit_id vectype#30] +[visit_exp `VCONST`_instr(`V128`_vectype, c)] [visit_exp (`V128`_vectype, c)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c] [visit_id c] -[visit_exp `%->_%%`_instrtype{resulttype#2295, `localidx*#1379`}(`%`_resulttype{`X*#9890`}([]), [], `%`_resulttype{`X*#9939`}([`V128`_valtype]))] -[visit_exp resulttype#2295] -[visit_id resulttype#2295] -[visit_exp `localidx*#1379`] -[visit_id localidx*#1379] -[visit_exp (`%`_resulttype{`X*#9890`}([]), [], `%`_resulttype{`X*#9939`}([`V128`_valtype]))] -[visit_exp `%`_resulttype{`X*#9890`}([])] -[visit_exp `X*#9890`] -[visit_id X*#9890] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp (`%`_resulttype([]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] [visit_exp []] -[visit_exp `%`_resulttype{`X*#9939`}([`V128`_valtype])] -[visit_exp `X*#9939`] -[visit_id X*#9939] +[visit_exp `%`_resulttype([`V128`_valtype])] [visit_exp ([`V128`_valtype])] [visit_exp [`V128`_valtype]] [visit_exp `V128`_valtype] [visit_exp ()] -[check_dims] C X*#10007 X*#9958 localidx*#1391 resulttype#2315 vectype#32 vvunop vvunop#3 +[check_dims] C vvunop [visit_exp C] [visit_id C] -[visit_exp `VVUNOP`_instr{vectype#32, vvunop#3}(`V128`_vectype, vvunop)] -[visit_exp vectype#32] -[visit_id vectype#32] -[visit_exp vvunop#3] -[visit_id vvunop#3] +[visit_exp `VVUNOP`_instr(`V128`_vectype, vvunop)] [visit_exp (`V128`_vectype, vvunop)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp vvunop] [visit_id vvunop] -[visit_exp `%->_%%`_instrtype{resulttype#2315, `localidx*#1391`}(`%`_resulttype{`X*#9958`}([`V128`_valtype]), [], `%`_resulttype{`X*#10007`}([`V128`_valtype]))] -[visit_exp resulttype#2315] -[visit_id resulttype#2315] -[visit_exp `localidx*#1391`] -[visit_id localidx*#1391] -[visit_exp (`%`_resulttype{`X*#9958`}([`V128`_valtype]), [], `%`_resulttype{`X*#10007`}([`V128`_valtype]))] -[visit_exp `%`_resulttype{`X*#9958`}([`V128`_valtype])] -[visit_exp `X*#9958`] -[visit_id X*#9958] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([`V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp (`%`_resulttype([`V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp `%`_resulttype([`V128`_valtype])] [visit_exp ([`V128`_valtype])] [visit_exp [`V128`_valtype]] [visit_exp `V128`_valtype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#10007`}([`V128`_valtype])] -[visit_exp `X*#10007`] -[visit_id X*#10007] +[visit_exp `%`_resulttype([`V128`_valtype])] [visit_exp ([`V128`_valtype])] [visit_exp [`V128`_valtype]] [visit_exp `V128`_valtype] [visit_exp ()] -[check_dims] C X*#10028 X*#10077 localidx*#1403 resulttype#2335 vectype#34 vvbinop vvbinop#3 +[check_dims] C vvbinop [visit_exp C] [visit_id C] -[visit_exp `VVBINOP`_instr{vectype#34, vvbinop#3}(`V128`_vectype, vvbinop)] -[visit_exp vectype#34] -[visit_id vectype#34] -[visit_exp vvbinop#3] -[visit_id vvbinop#3] +[visit_exp `VVBINOP`_instr(`V128`_vectype, vvbinop)] [visit_exp (`V128`_vectype, vvbinop)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp vvbinop] [visit_id vvbinop] -[visit_exp `%->_%%`_instrtype{resulttype#2335, `localidx*#1403`}(`%`_resulttype{`X*#10028`}([`V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#10077`}([`V128`_valtype]))] -[visit_exp resulttype#2335] -[visit_id resulttype#2335] -[visit_exp `localidx*#1403`] -[visit_id localidx*#1403] -[visit_exp (`%`_resulttype{`X*#10028`}([`V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#10077`}([`V128`_valtype]))] -[visit_exp `%`_resulttype{`X*#10028`}([`V128`_valtype `V128`_valtype])] -[visit_exp `X*#10028`] -[visit_id X*#10028] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([`V128`_valtype `V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp (`%`_resulttype([`V128`_valtype `V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp `%`_resulttype([`V128`_valtype `V128`_valtype])] [visit_exp ([`V128`_valtype `V128`_valtype])] [visit_exp [`V128`_valtype `V128`_valtype]] [visit_exp `V128`_valtype] @@ -30014,35 +26245,23 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `V128`_valtype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#10077`}([`V128`_valtype])] -[visit_exp `X*#10077`] -[visit_id X*#10077] +[visit_exp `%`_resulttype([`V128`_valtype])] [visit_exp ([`V128`_valtype])] [visit_exp [`V128`_valtype]] [visit_exp `V128`_valtype] [visit_exp ()] -[check_dims] C X*#10098 X*#10147 localidx*#1415 resulttype#2355 vectype#36 vvternop vvternop#3 +[check_dims] C vvternop [visit_exp C] [visit_id C] -[visit_exp `VVTERNOP`_instr{vectype#36, vvternop#3}(`V128`_vectype, vvternop)] -[visit_exp vectype#36] -[visit_id vectype#36] -[visit_exp vvternop#3] -[visit_id vvternop#3] +[visit_exp `VVTERNOP`_instr(`V128`_vectype, vvternop)] [visit_exp (`V128`_vectype, vvternop)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp vvternop] [visit_id vvternop] -[visit_exp `%->_%%`_instrtype{resulttype#2355, `localidx*#1415`}(`%`_resulttype{`X*#10098`}([`V128`_valtype `V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#10147`}([`V128`_valtype]))] -[visit_exp resulttype#2355] -[visit_id resulttype#2355] -[visit_exp `localidx*#1415`] -[visit_id localidx*#1415] -[visit_exp (`%`_resulttype{`X*#10098`}([`V128`_valtype `V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#10147`}([`V128`_valtype]))] -[visit_exp `%`_resulttype{`X*#10098`}([`V128`_valtype `V128`_valtype `V128`_valtype])] -[visit_exp `X*#10098`] -[visit_id X*#10098] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([`V128`_valtype `V128`_valtype `V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp (`%`_resulttype([`V128`_valtype `V128`_valtype `V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp `%`_resulttype([`V128`_valtype `V128`_valtype `V128`_valtype])] [visit_exp ([`V128`_valtype `V128`_valtype `V128`_valtype])] [visit_exp [`V128`_valtype `V128`_valtype `V128`_valtype]] [visit_exp `V128`_valtype] @@ -30052,99 +26271,67 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `V128`_valtype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#10147`}([`V128`_valtype])] -[visit_exp `X*#10147`] -[visit_id X*#10147] +[visit_exp `%`_resulttype([`V128`_valtype])] [visit_exp ([`V128`_valtype])] [visit_exp [`V128`_valtype]] [visit_exp `V128`_valtype] [visit_exp ()] -[check_dims] C X*#10166 X*#10215 localidx*#1427 resulttype#2375 vectype#38 vvtestop vvtestop#3 +[check_dims] C vvtestop [visit_exp C] [visit_id C] -[visit_exp `VVTESTOP`_instr{vectype#38, vvtestop#3}(`V128`_vectype, vvtestop)] -[visit_exp vectype#38] -[visit_id vectype#38] -[visit_exp vvtestop#3] -[visit_id vvtestop#3] +[visit_exp `VVTESTOP`_instr(`V128`_vectype, vvtestop)] [visit_exp (`V128`_vectype, vvtestop)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp vvtestop] [visit_id vvtestop] -[visit_exp `%->_%%`_instrtype{resulttype#2375, `localidx*#1427`}(`%`_resulttype{`X*#10166`}([`V128`_valtype]), [], `%`_resulttype{`X*#10215`}([`I32`_valtype]))] -[visit_exp resulttype#2375] -[visit_id resulttype#2375] -[visit_exp `localidx*#1427`] -[visit_id localidx*#1427] -[visit_exp (`%`_resulttype{`X*#10166`}([`V128`_valtype]), [], `%`_resulttype{`X*#10215`}([`I32`_valtype]))] -[visit_exp `%`_resulttype{`X*#10166`}([`V128`_valtype])] -[visit_exp `X*#10166`] -[visit_id X*#10166] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([`V128`_valtype]), [], `%`_resulttype([`I32`_valtype]))] +[visit_exp (`%`_resulttype([`V128`_valtype]), [], `%`_resulttype([`I32`_valtype]))] +[visit_exp `%`_resulttype([`V128`_valtype])] [visit_exp ([`V128`_valtype])] [visit_exp [`V128`_valtype]] [visit_exp `V128`_valtype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#10215`}([`I32`_valtype])] -[visit_exp `X*#10215`] -[visit_id X*#10215] +[visit_exp `%`_resulttype([`I32`_valtype])] [visit_exp ([`I32`_valtype])] [visit_exp [`I32`_valtype]] [visit_exp `I32`_valtype] [visit_exp ()] -[check_dims] C X*#10234 X*#10283 localidx*#1439 resulttype#2395 sh shape#269 vunop +[check_dims] C sh vunop [visit_exp C] [visit_id C] -[visit_exp `VUNOP`_instr{shape#269}(sh, vunop)] -[visit_exp shape#269] -[visit_id shape#269] +[visit_exp `VUNOP`_instr(sh, vunop)] [visit_exp (sh, vunop)] [visit_exp sh] [visit_id sh] [visit_exp vunop] [visit_id vunop] -[visit_exp `%->_%%`_instrtype{resulttype#2395, `localidx*#1439`}(`%`_resulttype{`X*#10234`}([`V128`_valtype]), [], `%`_resulttype{`X*#10283`}([`V128`_valtype]))] -[visit_exp resulttype#2395] -[visit_id resulttype#2395] -[visit_exp `localidx*#1439`] -[visit_id localidx*#1439] -[visit_exp (`%`_resulttype{`X*#10234`}([`V128`_valtype]), [], `%`_resulttype{`X*#10283`}([`V128`_valtype]))] -[visit_exp `%`_resulttype{`X*#10234`}([`V128`_valtype])] -[visit_exp `X*#10234`] -[visit_id X*#10234] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([`V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp (`%`_resulttype([`V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp `%`_resulttype([`V128`_valtype])] [visit_exp ([`V128`_valtype])] [visit_exp [`V128`_valtype]] [visit_exp `V128`_valtype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#10283`}([`V128`_valtype])] -[visit_exp `X*#10283`] -[visit_id X*#10283] +[visit_exp `%`_resulttype([`V128`_valtype])] [visit_exp ([`V128`_valtype])] [visit_exp [`V128`_valtype]] [visit_exp `V128`_valtype] [visit_exp ()] -[check_dims] C X*#10304 X*#10353 localidx*#1451 resulttype#2415 sh shape#271 vbinop +[check_dims] C sh vbinop [visit_exp C] [visit_id C] -[visit_exp `VBINOP`_instr{shape#271}(sh, vbinop)] -[visit_exp shape#271] -[visit_id shape#271] +[visit_exp `VBINOP`_instr(sh, vbinop)] [visit_exp (sh, vbinop)] [visit_exp sh] [visit_id sh] [visit_exp vbinop] [visit_id vbinop] -[visit_exp `%->_%%`_instrtype{resulttype#2415, `localidx*#1451`}(`%`_resulttype{`X*#10304`}([`V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#10353`}([`V128`_valtype]))] -[visit_exp resulttype#2415] -[visit_id resulttype#2415] -[visit_exp `localidx*#1451`] -[visit_id localidx*#1451] -[visit_exp (`%`_resulttype{`X*#10304`}([`V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#10353`}([`V128`_valtype]))] -[visit_exp `%`_resulttype{`X*#10304`}([`V128`_valtype `V128`_valtype])] -[visit_exp `X*#10304`] -[visit_id X*#10304] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([`V128`_valtype `V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp (`%`_resulttype([`V128`_valtype `V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp `%`_resulttype([`V128`_valtype `V128`_valtype])] [visit_exp ([`V128`_valtype `V128`_valtype])] [visit_exp [`V128`_valtype `V128`_valtype]] [visit_exp `V128`_valtype] @@ -30152,33 +26339,23 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `V128`_valtype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#10353`}([`V128`_valtype])] -[visit_exp `X*#10353`] -[visit_id X*#10353] +[visit_exp `%`_resulttype([`V128`_valtype])] [visit_exp ([`V128`_valtype])] [visit_exp [`V128`_valtype]] [visit_exp `V128`_valtype] [visit_exp ()] -[check_dims] C X*#10374 X*#10423 localidx*#1463 resulttype#2435 sh shape#273 vternop +[check_dims] C sh vternop [visit_exp C] [visit_id C] -[visit_exp `VTERNOP`_instr{shape#273}(sh, vternop)] -[visit_exp shape#273] -[visit_id shape#273] +[visit_exp `VTERNOP`_instr(sh, vternop)] [visit_exp (sh, vternop)] [visit_exp sh] [visit_id sh] [visit_exp vternop] [visit_id vternop] -[visit_exp `%->_%%`_instrtype{resulttype#2435, `localidx*#1463`}(`%`_resulttype{`X*#10374`}([`V128`_valtype `V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#10423`}([`V128`_valtype]))] -[visit_exp resulttype#2435] -[visit_id resulttype#2435] -[visit_exp `localidx*#1463`] -[visit_id localidx*#1463] -[visit_exp (`%`_resulttype{`X*#10374`}([`V128`_valtype `V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#10423`}([`V128`_valtype]))] -[visit_exp `%`_resulttype{`X*#10374`}([`V128`_valtype `V128`_valtype `V128`_valtype])] -[visit_exp `X*#10374`] -[visit_id X*#10374] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([`V128`_valtype `V128`_valtype `V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp (`%`_resulttype([`V128`_valtype `V128`_valtype `V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp `%`_resulttype([`V128`_valtype `V128`_valtype `V128`_valtype])] [visit_exp ([`V128`_valtype `V128`_valtype `V128`_valtype])] [visit_exp [`V128`_valtype `V128`_valtype `V128`_valtype]] [visit_exp `V128`_valtype] @@ -30188,65 +26365,45 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `V128`_valtype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#10423`}([`V128`_valtype])] -[visit_exp `X*#10423`] -[visit_id X*#10423] +[visit_exp `%`_resulttype([`V128`_valtype])] [visit_exp ([`V128`_valtype])] [visit_exp [`V128`_valtype]] [visit_exp `V128`_valtype] [visit_exp ()] -[check_dims] C X*#10442 X*#10491 localidx*#1475 resulttype#2455 sh shape#275 vtestop +[check_dims] C sh vtestop [visit_exp C] [visit_id C] -[visit_exp `VTESTOP`_instr{shape#275}(sh, vtestop)] -[visit_exp shape#275] -[visit_id shape#275] +[visit_exp `VTESTOP`_instr(sh, vtestop)] [visit_exp (sh, vtestop)] [visit_exp sh] [visit_id sh] [visit_exp vtestop] [visit_id vtestop] -[visit_exp `%->_%%`_instrtype{resulttype#2455, `localidx*#1475`}(`%`_resulttype{`X*#10442`}([`V128`_valtype]), [], `%`_resulttype{`X*#10491`}([`I32`_valtype]))] -[visit_exp resulttype#2455] -[visit_id resulttype#2455] -[visit_exp `localidx*#1475`] -[visit_id localidx*#1475] -[visit_exp (`%`_resulttype{`X*#10442`}([`V128`_valtype]), [], `%`_resulttype{`X*#10491`}([`I32`_valtype]))] -[visit_exp `%`_resulttype{`X*#10442`}([`V128`_valtype])] -[visit_exp `X*#10442`] -[visit_id X*#10442] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([`V128`_valtype]), [], `%`_resulttype([`I32`_valtype]))] +[visit_exp (`%`_resulttype([`V128`_valtype]), [], `%`_resulttype([`I32`_valtype]))] +[visit_exp `%`_resulttype([`V128`_valtype])] [visit_exp ([`V128`_valtype])] [visit_exp [`V128`_valtype]] [visit_exp `V128`_valtype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#10491`}([`I32`_valtype])] -[visit_exp `X*#10491`] -[visit_id X*#10491] +[visit_exp `%`_resulttype([`I32`_valtype])] [visit_exp ([`I32`_valtype])] [visit_exp [`I32`_valtype]] [visit_exp `I32`_valtype] [visit_exp ()] -[check_dims] C X*#10512 X*#10561 localidx*#1487 resulttype#2475 sh shape#277 vrelop +[check_dims] C sh vrelop [visit_exp C] [visit_id C] -[visit_exp `VRELOP`_instr{shape#277}(sh, vrelop)] -[visit_exp shape#277] -[visit_id shape#277] +[visit_exp `VRELOP`_instr(sh, vrelop)] [visit_exp (sh, vrelop)] [visit_exp sh] [visit_id sh] [visit_exp vrelop] [visit_id vrelop] -[visit_exp `%->_%%`_instrtype{resulttype#2475, `localidx*#1487`}(`%`_resulttype{`X*#10512`}([`V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#10561`}([`V128`_valtype]))] -[visit_exp resulttype#2475] -[visit_id resulttype#2475] -[visit_exp `localidx*#1487`] -[visit_id localidx*#1487] -[visit_exp (`%`_resulttype{`X*#10512`}([`V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#10561`}([`V128`_valtype]))] -[visit_exp `%`_resulttype{`X*#10512`}([`V128`_valtype `V128`_valtype])] -[visit_exp `X*#10512`] -[visit_id X*#10512] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([`V128`_valtype `V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp (`%`_resulttype([`V128`_valtype `V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp `%`_resulttype([`V128`_valtype `V128`_valtype])] [visit_exp ([`V128`_valtype `V128`_valtype])] [visit_exp [`V128`_valtype `V128`_valtype]] [visit_exp `V128`_valtype] @@ -30254,33 +26411,23 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `V128`_valtype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#10561`}([`V128`_valtype])] -[visit_exp `X*#10561`] -[visit_id X*#10561] +[visit_exp `%`_resulttype([`V128`_valtype])] [visit_exp ([`V128`_valtype])] [visit_exp [`V128`_valtype]] [visit_exp `V128`_valtype] [visit_exp ()] -[check_dims] C X*#10582 X*#10631 ishape#5 localidx*#1499 resulttype#2495 sh vshiftop +[check_dims] C sh vshiftop [visit_exp C] [visit_id C] -[visit_exp `VSHIFTOP`_instr{ishape#5}(sh, vshiftop)] -[visit_exp ishape#5] -[visit_id ishape#5] +[visit_exp `VSHIFTOP`_instr(sh, vshiftop)] [visit_exp (sh, vshiftop)] [visit_exp sh] [visit_id sh] [visit_exp vshiftop] [visit_id vshiftop] -[visit_exp `%->_%%`_instrtype{resulttype#2495, `localidx*#1499`}(`%`_resulttype{`X*#10582`}([`V128`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#10631`}([`V128`_valtype]))] -[visit_exp resulttype#2495] -[visit_id resulttype#2495] -[visit_exp `localidx*#1499`] -[visit_id localidx*#1499] -[visit_exp (`%`_resulttype{`X*#10582`}([`V128`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#10631`}([`V128`_valtype]))] -[visit_exp `%`_resulttype{`X*#10582`}([`V128`_valtype `I32`_valtype])] -[visit_exp `X*#10582`] -[visit_id X*#10582] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([`V128`_valtype `I32`_valtype]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp (`%`_resulttype([`V128`_valtype `I32`_valtype]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp `%`_resulttype([`V128`_valtype `I32`_valtype])] [visit_exp ([`V128`_valtype `I32`_valtype])] [visit_exp [`V128`_valtype `I32`_valtype]] [visit_exp `V128`_valtype] @@ -30288,63 +26435,43 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `I32`_valtype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#10631`}([`V128`_valtype])] -[visit_exp `X*#10631`] -[visit_id X*#10631] +[visit_exp `%`_resulttype([`V128`_valtype])] [visit_exp ([`V128`_valtype])] [visit_exp [`V128`_valtype]] [visit_exp `V128`_valtype] [visit_exp ()] -[check_dims] C X*#10650 X*#10699 ishape#7 localidx*#1511 resulttype#2515 sh +[check_dims] C sh [visit_exp C] [visit_id C] -[visit_exp `VBITMASK`_instr{ishape#7}(sh)] -[visit_exp ishape#7] -[visit_id ishape#7] +[visit_exp `VBITMASK`_instr(sh)] [visit_exp (sh)] [visit_exp sh] [visit_id sh] -[visit_exp `%->_%%`_instrtype{resulttype#2515, `localidx*#1511`}(`%`_resulttype{`X*#10650`}([`V128`_valtype]), [], `%`_resulttype{`X*#10699`}([`I32`_valtype]))] -[visit_exp resulttype#2515] -[visit_id resulttype#2515] -[visit_exp `localidx*#1511`] -[visit_id localidx*#1511] -[visit_exp (`%`_resulttype{`X*#10650`}([`V128`_valtype]), [], `%`_resulttype{`X*#10699`}([`I32`_valtype]))] -[visit_exp `%`_resulttype{`X*#10650`}([`V128`_valtype])] -[visit_exp `X*#10650`] -[visit_id X*#10650] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([`V128`_valtype]), [], `%`_resulttype([`I32`_valtype]))] +[visit_exp (`%`_resulttype([`V128`_valtype]), [], `%`_resulttype([`I32`_valtype]))] +[visit_exp `%`_resulttype([`V128`_valtype])] [visit_exp ([`V128`_valtype])] [visit_exp [`V128`_valtype]] [visit_exp `V128`_valtype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#10699`}([`I32`_valtype])] -[visit_exp `X*#10699`] -[visit_id X*#10699] +[visit_exp `%`_resulttype([`I32`_valtype])] [visit_exp ([`I32`_valtype])] [visit_exp [`I32`_valtype]] [visit_exp `I32`_valtype] [visit_exp ()] -[check_dims] C X*#10720 X*#10769 bshape#5 localidx*#1523 resulttype#2535 sh vswizzlop +[check_dims] C sh vswizzlop [visit_exp C] [visit_id C] -[visit_exp `VSWIZZLOP`_instr{bshape#5}(sh, vswizzlop)] -[visit_exp bshape#5] -[visit_id bshape#5] +[visit_exp `VSWIZZLOP`_instr(sh, vswizzlop)] [visit_exp (sh, vswizzlop)] [visit_exp sh] [visit_id sh] [visit_exp vswizzlop] [visit_id vswizzlop] -[visit_exp `%->_%%`_instrtype{resulttype#2535, `localidx*#1523`}(`%`_resulttype{`X*#10720`}([`V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#10769`}([`V128`_valtype]))] -[visit_exp resulttype#2535] -[visit_id resulttype#2535] -[visit_exp `localidx*#1523`] -[visit_id localidx*#1523] -[visit_exp (`%`_resulttype{`X*#10720`}([`V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#10769`}([`V128`_valtype]))] -[visit_exp `%`_resulttype{`X*#10720`}([`V128`_valtype `V128`_valtype])] -[visit_exp `X*#10720`] -[visit_id X*#10720] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([`V128`_valtype `V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp (`%`_resulttype([`V128`_valtype `V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp `%`_resulttype([`V128`_valtype `V128`_valtype])] [visit_exp ([`V128`_valtype `V128`_valtype])] [visit_exp [`V128`_valtype `V128`_valtype]] [visit_exp `V128`_valtype] @@ -30352,25 +26479,15 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `V128`_valtype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#10769`}([`V128`_valtype])] -[visit_exp `X*#10769`] -[visit_id X*#10769] +[visit_exp `%`_resulttype([`V128`_valtype])] [visit_exp ([`V128`_valtype])] [visit_exp [`V128`_valtype]] [visit_exp `V128`_valtype] [visit_exp ()] -[check_dims] C X*#10790 X*#10839 bshape#7 i i#8480 i#8509 i#8523 laneidx*#3 localidx*#1535 resulttype#2555 sh shape#297 shape#304 +[check_dims] C i sh [visit_exp C] [visit_id C] -[visit_exp `VSHUFFLE`_instr{bshape#7, `laneidx*#3`, i#8480, shape#297}(sh, i*{i <- `i*`})] -[visit_exp bshape#7] -[visit_id bshape#7] -[visit_exp `laneidx*#3`] -[visit_id laneidx*#3] -[visit_exp i#8480] -[visit_id i#8480] -[visit_exp shape#297] -[visit_id shape#297] +[visit_exp `VSHUFFLE`_instr(sh, i*{i <- `i*`})] [visit_exp (sh, i*{i <- `i*`})] [visit_exp sh] [visit_id sh] @@ -30383,15 +26500,9 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `i*`] [visit_id i*] no dims [visit_id i*] -[visit_exp `%->_%%`_instrtype{resulttype#2555, `localidx*#1535`}(`%`_resulttype{`X*#10790`}([`V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#10839`}([`V128`_valtype]))] -[visit_exp resulttype#2555] -[visit_id resulttype#2555] -[visit_exp `localidx*#1535`] -[visit_id localidx*#1535] -[visit_exp (`%`_resulttype{`X*#10790`}([`V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#10839`}([`V128`_valtype]))] -[visit_exp `%`_resulttype{`X*#10790`}([`V128`_valtype `V128`_valtype])] -[visit_exp `X*#10790`] -[visit_id X*#10790] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([`V128`_valtype `V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp (`%`_resulttype([`V128`_valtype `V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp `%`_resulttype([`V128`_valtype `V128`_valtype])] [visit_exp ([`V128`_valtype `V128`_valtype])] [visit_exp [`V128`_valtype `V128`_valtype]] [visit_exp `V128`_valtype] @@ -30399,75 +26510,41 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `V128`_valtype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#10839`}([`V128`_valtype])] -[visit_exp `X*#10839`] -[visit_id X*#10839] +[visit_exp `%`_resulttype([`V128`_valtype])] [visit_exp ([`V128`_valtype])] [visit_exp [`V128`_valtype]] [visit_exp `V128`_valtype] [visit_exp ()] [scope_enter i] -[scope_enter i#8509] -[scope_enter i#8523] -[scope_enter shape#304] -[visit_exp (i!`%`_laneidx{i#8523}.0 < (2 * $dim(sh!`%`_bshape{shape#304}.0)!`%`_dim{i#8509}.0))] -[visit_exp i!`%`_laneidx{i#8523}.0] -[visit_exp i!`%`_laneidx{i#8523}] +[visit_exp (i!`%`_laneidx.0 < (2 * $dim(sh!`%`_bshape.0)!`%`_dim.0))] +[visit_exp i!`%`_laneidx.0] +[visit_exp i!`%`_laneidx] [visit_exp i] [visit_id i] not free -[visit_exp i#8523] -[visit_id i#8523] not free -[visit_exp (2 * $dim(sh!`%`_bshape{shape#304}.0)!`%`_dim{i#8509}.0)] +[visit_exp (2 * $dim(sh!`%`_bshape.0)!`%`_dim.0)] [visit_exp 2] -[visit_exp $dim(sh!`%`_bshape{shape#304}.0)!`%`_dim{i#8509}.0] -[visit_exp $dim(sh!`%`_bshape{shape#304}.0)!`%`_dim{i#8509}] -[visit_exp $dim(sh!`%`_bshape{shape#304}.0)] -[visit_exp sh!`%`_bshape{shape#304}.0] -[visit_exp sh!`%`_bshape{shape#304}] +[visit_exp $dim(sh!`%`_bshape.0)!`%`_dim.0] +[visit_exp $dim(sh!`%`_bshape.0)!`%`_dim] +[visit_exp $dim(sh!`%`_bshape.0)] +[visit_exp sh!`%`_bshape.0] +[visit_exp sh!`%`_bshape] [visit_exp sh] [visit_id sh] not free -[visit_exp shape#304] -[visit_id shape#304] not free -[visit_exp i#8509] -[visit_id i#8509] not free [visit_id i] not free -[visit_id i#8509] not free -[visit_id i#8523] not free -[visit_id shape#304] not free -[scope_exit shape#304] -[scope_exit i#8523] -[scope_exit i#8509] [scope_exit i] [visit_exp `i*`] [visit_id i*] not free [visit_id i*] no dims -[visit_exp `i#8509*`] -[visit_id i#8509*] no dims -[visit_id i#8509*] -[visit_exp `i#8523*`] -[visit_id i#8523*] no dims -[visit_id i#8523*] -[visit_exp `shape#304*`] -[visit_id shape#304*] no dims -[visit_id shape#304*] -[check_dims] C X*#10850 X*#10916 localidx*#1547 resulttype#2575 sh shape#306 +[check_dims] C sh [visit_exp C] [visit_id C] -[visit_exp `VSPLAT`_instr{shape#306}(sh)] -[visit_exp shape#306] -[visit_id shape#306] +[visit_exp `VSPLAT`_instr(sh)] [visit_exp (sh)] [visit_exp sh] [visit_id sh] -[visit_exp `%->_%%`_instrtype{resulttype#2575, `localidx*#1547`}(`%`_resulttype{`X*#10850`}([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype{`X*#10916`}([`V128`_valtype]))] -[visit_exp resulttype#2575] -[visit_id resulttype#2575] -[visit_exp `localidx*#1547`] -[visit_id localidx*#1547] -[visit_exp (`%`_resulttype{`X*#10850`}([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype{`X*#10916`}([`V128`_valtype]))] -[visit_exp `%`_resulttype{`X*#10850`}([($unpackshape(sh) : numtype <: valtype)])] -[visit_exp `X*#10850`] -[visit_id X*#10850] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp (`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp `%`_resulttype([($unpackshape(sh) : numtype <: valtype)])] [visit_exp ([($unpackshape(sh) : numtype <: valtype)])] [visit_exp [($unpackshape(sh) : numtype <: valtype)]] [visit_exp ($unpackshape(sh) : numtype <: valtype)] @@ -30475,23 +26552,15 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp sh] [visit_id sh] not free [visit_exp []] -[visit_exp `%`_resulttype{`X*#10916`}([`V128`_valtype])] -[visit_exp `X*#10916`] -[visit_id X*#10916] +[visit_exp `%`_resulttype([`V128`_valtype])] [visit_exp ([`V128`_valtype])] [visit_exp [`V128`_valtype]] [visit_exp `V128`_valtype] [visit_exp ()] -[check_dims] C X*#10935 X*#10984 i i#8600 i#8602 laneidx#13 localidx*#1559 resulttype#2595 sh shape#308 sx sx?#11 +[check_dims] C i sh sx [visit_exp C] [visit_id C] -[visit_exp `VEXTRACT_LANE`_instr{shape#308, `sx?#11`, laneidx#13}(sh, sx?{sx <- `sx?`}, i)] -[visit_exp shape#308] -[visit_id shape#308] -[visit_exp `sx?#11`] -[visit_id sx?#11] -[visit_exp laneidx#13] -[visit_id laneidx#13] +[visit_exp `VEXTRACT_LANE`_instr(sh, sx?{sx <- `sx?`}, i)] [visit_exp (sh, sx?{sx <- `sx?`}, i)] [visit_exp sh] [visit_id sh] @@ -30506,65 +26575,43 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id sx?] [visit_exp i] [visit_id i] -[visit_exp `%->_%%`_instrtype{resulttype#2595, `localidx*#1559`}(`%`_resulttype{`X*#10935`}([`V128`_valtype]), [], `%`_resulttype{`X*#10984`}([($unpackshape(sh) : numtype <: valtype)]))] -[visit_exp resulttype#2595] -[visit_id resulttype#2595] -[visit_exp `localidx*#1559`] -[visit_id localidx*#1559] -[visit_exp (`%`_resulttype{`X*#10935`}([`V128`_valtype]), [], `%`_resulttype{`X*#10984`}([($unpackshape(sh) : numtype <: valtype)]))] -[visit_exp `%`_resulttype{`X*#10935`}([`V128`_valtype])] -[visit_exp `X*#10935`] -[visit_id X*#10935] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([`V128`_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))] +[visit_exp (`%`_resulttype([`V128`_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))] +[visit_exp `%`_resulttype([`V128`_valtype])] [visit_exp ([`V128`_valtype])] [visit_exp [`V128`_valtype]] [visit_exp `V128`_valtype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#10984`}([($unpackshape(sh) : numtype <: valtype)])] -[visit_exp `X*#10984`] -[visit_id X*#10984] +[visit_exp `%`_resulttype([($unpackshape(sh) : numtype <: valtype)])] [visit_exp ([($unpackshape(sh) : numtype <: valtype)])] [visit_exp [($unpackshape(sh) : numtype <: valtype)]] [visit_exp ($unpackshape(sh) : numtype <: valtype)] [visit_exp $unpackshape(sh)] [visit_exp sh] [visit_id sh] not free -[visit_exp (i!`%`_laneidx{i#8600}.0 < $dim(sh)!`%`_dim{i#8602}.0)] -[visit_exp i!`%`_laneidx{i#8600}.0] -[visit_exp i!`%`_laneidx{i#8600}] +[visit_exp (i!`%`_laneidx.0 < $dim(sh)!`%`_dim.0)] +[visit_exp i!`%`_laneidx.0] +[visit_exp i!`%`_laneidx] [visit_exp i] [visit_id i] not free -[visit_exp i#8600] -[visit_id i#8600] -[visit_exp $dim(sh)!`%`_dim{i#8602}.0] -[visit_exp $dim(sh)!`%`_dim{i#8602}] +[visit_exp $dim(sh)!`%`_dim.0] +[visit_exp $dim(sh)!`%`_dim] [visit_exp $dim(sh)] [visit_exp sh] [visit_id sh] not free -[visit_exp i#8602] -[visit_id i#8602] -[check_dims] C X*#11005 X*#11054 i i#8636 i#8638 laneidx#15 localidx*#1571 resulttype#2615 sh shape#310 +[check_dims] C i sh [visit_exp C] [visit_id C] -[visit_exp `VREPLACE_LANE`_instr{shape#310, laneidx#15}(sh, i)] -[visit_exp shape#310] -[visit_id shape#310] -[visit_exp laneidx#15] -[visit_id laneidx#15] +[visit_exp `VREPLACE_LANE`_instr(sh, i)] [visit_exp (sh, i)] [visit_exp sh] [visit_id sh] [visit_exp i] [visit_id i] -[visit_exp `%->_%%`_instrtype{resulttype#2615, `localidx*#1571`}(`%`_resulttype{`X*#11005`}([`V128`_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype{`X*#11054`}([`V128`_valtype]))] -[visit_exp resulttype#2615] -[visit_id resulttype#2615] -[visit_exp `localidx*#1571`] -[visit_id localidx*#1571] -[visit_exp (`%`_resulttype{`X*#11005`}([`V128`_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype{`X*#11054`}([`V128`_valtype]))] -[visit_exp `%`_resulttype{`X*#11005`}([`V128`_valtype ($unpackshape(sh) : numtype <: valtype)])] -[visit_exp `X*#11005`] -[visit_id X*#11005] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([`V128`_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp (`%`_resulttype([`V128`_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp `%`_resulttype([`V128`_valtype ($unpackshape(sh) : numtype <: valtype)])] [visit_exp ([`V128`_valtype ($unpackshape(sh) : numtype <: valtype)])] [visit_exp [`V128`_valtype ($unpackshape(sh) : numtype <: valtype)]] [visit_exp `V128`_valtype] @@ -30574,35 +26621,25 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp sh] [visit_id sh] not free [visit_exp []] -[visit_exp `%`_resulttype{`X*#11054`}([`V128`_valtype])] -[visit_exp `X*#11054`] -[visit_id X*#11054] +[visit_exp `%`_resulttype([`V128`_valtype])] [visit_exp ([`V128`_valtype])] [visit_exp [`V128`_valtype]] [visit_exp `V128`_valtype] [visit_exp ()] -[visit_exp (i!`%`_laneidx{i#8636}.0 < $dim(sh)!`%`_dim{i#8638}.0)] -[visit_exp i!`%`_laneidx{i#8636}.0] -[visit_exp i!`%`_laneidx{i#8636}] +[visit_exp (i!`%`_laneidx.0 < $dim(sh)!`%`_dim.0)] +[visit_exp i!`%`_laneidx.0] +[visit_exp i!`%`_laneidx] [visit_exp i] [visit_id i] not free -[visit_exp i#8636] -[visit_id i#8636] -[visit_exp $dim(sh)!`%`_dim{i#8638}.0] -[visit_exp $dim(sh)!`%`_dim{i#8638}] +[visit_exp $dim(sh)!`%`_dim.0] +[visit_exp $dim(sh)!`%`_dim] [visit_exp $dim(sh)] [visit_exp sh] [visit_id sh] not free -[visit_exp i#8638] -[visit_id i#8638] -[check_dims] C X*#11073 X*#11122 ishape_1#9 ishape_2#9 localidx*#1583 resulttype#2635 sh_1 sh_2 vextunop +[check_dims] C sh_1 sh_2 vextunop [visit_exp C] [visit_id C] -[visit_exp `VEXTUNOP`_instr{ishape_1#9, ishape_2#9}(sh_1, sh_2, vextunop)] -[visit_exp ishape_1#9] -[visit_id ishape_1#9] -[visit_exp ishape_2#9] -[visit_id ishape_2#9] +[visit_exp `VEXTUNOP`_instr(sh_1, sh_2, vextunop)] [visit_exp (sh_1, sh_2, vextunop)] [visit_exp sh_1] [visit_id sh_1] @@ -30610,35 +26647,23 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id sh_2] [visit_exp vextunop] [visit_id vextunop] -[visit_exp `%->_%%`_instrtype{resulttype#2635, `localidx*#1583`}(`%`_resulttype{`X*#11073`}([`V128`_valtype]), [], `%`_resulttype{`X*#11122`}([`V128`_valtype]))] -[visit_exp resulttype#2635] -[visit_id resulttype#2635] -[visit_exp `localidx*#1583`] -[visit_id localidx*#1583] -[visit_exp (`%`_resulttype{`X*#11073`}([`V128`_valtype]), [], `%`_resulttype{`X*#11122`}([`V128`_valtype]))] -[visit_exp `%`_resulttype{`X*#11073`}([`V128`_valtype])] -[visit_exp `X*#11073`] -[visit_id X*#11073] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([`V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp (`%`_resulttype([`V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp `%`_resulttype([`V128`_valtype])] [visit_exp ([`V128`_valtype])] [visit_exp [`V128`_valtype]] [visit_exp `V128`_valtype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#11122`}([`V128`_valtype])] -[visit_exp `X*#11122`] -[visit_id X*#11122] +[visit_exp `%`_resulttype([`V128`_valtype])] [visit_exp ([`V128`_valtype])] [visit_exp [`V128`_valtype]] [visit_exp `V128`_valtype] [visit_exp ()] -[check_dims] C X*#11143 X*#11192 ishape_1#11 ishape_2#11 localidx*#1595 resulttype#2655 sh_1 sh_2 vextbinop +[check_dims] C sh_1 sh_2 vextbinop [visit_exp C] [visit_id C] -[visit_exp `VEXTBINOP`_instr{ishape_1#11, ishape_2#11}(sh_1, sh_2, vextbinop)] -[visit_exp ishape_1#11] -[visit_id ishape_1#11] -[visit_exp ishape_2#11] -[visit_id ishape_2#11] +[visit_exp `VEXTBINOP`_instr(sh_1, sh_2, vextbinop)] [visit_exp (sh_1, sh_2, vextbinop)] [visit_exp sh_1] [visit_id sh_1] @@ -30646,15 +26671,9 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id sh_2] [visit_exp vextbinop] [visit_id vextbinop] -[visit_exp `%->_%%`_instrtype{resulttype#2655, `localidx*#1595`}(`%`_resulttype{`X*#11143`}([`V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#11192`}([`V128`_valtype]))] -[visit_exp resulttype#2655] -[visit_id resulttype#2655] -[visit_exp `localidx*#1595`] -[visit_id localidx*#1595] -[visit_exp (`%`_resulttype{`X*#11143`}([`V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#11192`}([`V128`_valtype]))] -[visit_exp `%`_resulttype{`X*#11143`}([`V128`_valtype `V128`_valtype])] -[visit_exp `X*#11143`] -[visit_id X*#11143] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([`V128`_valtype `V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp (`%`_resulttype([`V128`_valtype `V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp `%`_resulttype([`V128`_valtype `V128`_valtype])] [visit_exp ([`V128`_valtype `V128`_valtype])] [visit_exp [`V128`_valtype `V128`_valtype]] [visit_exp `V128`_valtype] @@ -30662,21 +26681,15 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `V128`_valtype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#11192`}([`V128`_valtype])] -[visit_exp `X*#11192`] -[visit_id X*#11192] +[visit_exp `%`_resulttype([`V128`_valtype])] [visit_exp ([`V128`_valtype])] [visit_exp [`V128`_valtype]] [visit_exp `V128`_valtype] [visit_exp ()] -[check_dims] C X*#11213 X*#11262 ishape_1#13 ishape_2#13 localidx*#1607 resulttype#2675 sh_1 sh_2 vextternop +[check_dims] C sh_1 sh_2 vextternop [visit_exp C] [visit_id C] -[visit_exp `VEXTTERNOP`_instr{ishape_1#13, ishape_2#13}(sh_1, sh_2, vextternop)] -[visit_exp ishape_1#13] -[visit_id ishape_1#13] -[visit_exp ishape_2#13] -[visit_id ishape_2#13] +[visit_exp `VEXTTERNOP`_instr(sh_1, sh_2, vextternop)] [visit_exp (sh_1, sh_2, vextternop)] [visit_exp sh_1] [visit_id sh_1] @@ -30684,15 +26697,9 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id sh_2] [visit_exp vextternop] [visit_id vextternop] -[visit_exp `%->_%%`_instrtype{resulttype#2675, `localidx*#1607`}(`%`_resulttype{`X*#11213`}([`V128`_valtype `V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#11262`}([`V128`_valtype]))] -[visit_exp resulttype#2675] -[visit_id resulttype#2675] -[visit_exp `localidx*#1607`] -[visit_id localidx*#1607] -[visit_exp (`%`_resulttype{`X*#11213`}([`V128`_valtype `V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#11262`}([`V128`_valtype]))] -[visit_exp `%`_resulttype{`X*#11213`}([`V128`_valtype `V128`_valtype `V128`_valtype])] -[visit_exp `X*#11213`] -[visit_id X*#11213] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([`V128`_valtype `V128`_valtype `V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp (`%`_resulttype([`V128`_valtype `V128`_valtype `V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp `%`_resulttype([`V128`_valtype `V128`_valtype `V128`_valtype])] [visit_exp ([`V128`_valtype `V128`_valtype `V128`_valtype])] [visit_exp [`V128`_valtype `V128`_valtype `V128`_valtype]] [visit_exp `V128`_valtype] @@ -30702,35 +26709,15 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `V128`_valtype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#11262`}([`V128`_valtype])] -[visit_exp `X*#11262`] -[visit_id X*#11262] +[visit_exp `%`_resulttype([`V128`_valtype])] [visit_exp ([`V128`_valtype])] [visit_exp [`V128`_valtype]] [visit_exp `V128`_valtype] [visit_exp ()] -[check_dims] C Jnn#95 Jnn#96 Jnn#97 X*#11283 X*#11332 ishape_1#15 ishape_2#15 localidx*#1619 resulttype#2695 sh_1 sh_2 shape#348 shape#349 shape#350 sx sx#56 +[check_dims] C sh_1 sh_2 sx [visit_exp C] [visit_id C] -[visit_exp `VNARROW`_instr{ishape_1#15, ishape_2#15, sx#56, shape#348, Jnn#95, shape#349, Jnn#96, shape#350, Jnn#97}(sh_1, sh_2, sx)] -[visit_exp ishape_1#15] -[visit_id ishape_1#15] -[visit_exp ishape_2#15] -[visit_id ishape_2#15] -[visit_exp sx#56] -[visit_id sx#56] -[visit_exp shape#348] -[visit_id shape#348] -[visit_exp Jnn#95] -[visit_id Jnn#95] -[visit_exp shape#349] -[visit_id shape#349] -[visit_exp Jnn#96] -[visit_id Jnn#96] -[visit_exp shape#350] -[visit_id shape#350] -[visit_exp Jnn#97] -[visit_id Jnn#97] +[visit_exp `VNARROW`_instr(sh_1, sh_2, sx)] [visit_exp (sh_1, sh_2, sx)] [visit_exp sh_1] [visit_id sh_1] @@ -30738,15 +26725,9 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id sh_2] [visit_exp sx] [visit_id sx] -[visit_exp `%->_%%`_instrtype{resulttype#2695, `localidx*#1619`}(`%`_resulttype{`X*#11283`}([`V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#11332`}([`V128`_valtype]))] -[visit_exp resulttype#2695] -[visit_id resulttype#2695] -[visit_exp `localidx*#1619`] -[visit_id localidx*#1619] -[visit_exp (`%`_resulttype{`X*#11283`}([`V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#11332`}([`V128`_valtype]))] -[visit_exp `%`_resulttype{`X*#11283`}([`V128`_valtype `V128`_valtype])] -[visit_exp `X*#11283`] -[visit_id X*#11283] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([`V128`_valtype `V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp (`%`_resulttype([`V128`_valtype `V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp `%`_resulttype([`V128`_valtype `V128`_valtype])] [visit_exp ([`V128`_valtype `V128`_valtype])] [visit_exp [`V128`_valtype `V128`_valtype]] [visit_exp `V128`_valtype] @@ -30754,21 +26735,15 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `V128`_valtype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#11332`}([`V128`_valtype])] -[visit_exp `X*#11332`] -[visit_id X*#11332] +[visit_exp `%`_resulttype([`V128`_valtype])] [visit_exp ([`V128`_valtype])] [visit_exp [`V128`_valtype]] [visit_exp `V128`_valtype] [visit_exp ()] -[check_dims] C X*#11351 X*#11400 localidx*#1631 resulttype#2715 sh_1 sh_2 shape_1#3 shape_2#3 vcvtop +[check_dims] C sh_1 sh_2 vcvtop [visit_exp C] [visit_id C] -[visit_exp `VCVTOP`_instr{shape_1#3, shape_2#3}(sh_1, sh_2, vcvtop)] -[visit_exp shape_1#3] -[visit_id shape_1#3] -[visit_exp shape_2#3] -[visit_id shape_2#3] +[visit_exp `VCVTOP`_instr(sh_1, sh_2, vcvtop)] [visit_exp (sh_1, sh_2, vcvtop)] [visit_exp sh_1] [visit_id sh_1] @@ -30776,49 +26751,33 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id sh_2] [visit_exp vcvtop] [visit_id vcvtop] -[visit_exp `%->_%%`_instrtype{resulttype#2715, `localidx*#1631`}(`%`_resulttype{`X*#11351`}([`V128`_valtype]), [], `%`_resulttype{`X*#11400`}([`V128`_valtype]))] -[visit_exp resulttype#2715] -[visit_id resulttype#2715] -[visit_exp `localidx*#1631`] -[visit_id localidx*#1631] -[visit_exp (`%`_resulttype{`X*#11351`}([`V128`_valtype]), [], `%`_resulttype{`X*#11400`}([`V128`_valtype]))] -[visit_exp `%`_resulttype{`X*#11351`}([`V128`_valtype])] -[visit_exp `X*#11351`] -[visit_id X*#11351] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([`V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp (`%`_resulttype([`V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] +[visit_exp `%`_resulttype([`V128`_valtype])] [visit_exp ([`V128`_valtype])] [visit_exp [`V128`_valtype]] [visit_exp `V128`_valtype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#11400`}([`V128`_valtype])] -[visit_exp `X*#11400`] -[visit_id X*#11400] +[visit_exp `%`_resulttype([`V128`_valtype])] [visit_exp ([`V128`_valtype])] [visit_exp [`V128`_valtype]] [visit_exp `V128`_valtype] [visit_exp ()] -[check_dims] C X*#11421 X*#11470 localidx*#1643 resulttype#2735 +[check_dims] C [visit_exp C] [visit_id C] [visit_exp []] -[visit_exp `%->_%%`_instrtype{resulttype#2735, `localidx*#1643`}(`%`_resulttype{`X*#11421`}([]), [], `%`_resulttype{`X*#11470`}([]))] -[visit_exp resulttype#2735] -[visit_id resulttype#2735] -[visit_exp `localidx*#1643`] -[visit_id localidx*#1643] -[visit_exp (`%`_resulttype{`X*#11421`}([]), [], `%`_resulttype{`X*#11470`}([]))] -[visit_exp `%`_resulttype{`X*#11421`}([])] -[visit_exp `X*#11421`] -[visit_id X*#11421] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))] +[visit_exp (`%`_resulttype([]), [], `%`_resulttype([]))] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] [visit_exp []] -[visit_exp `%`_resulttype{`X*#11470`}([])] -[visit_exp `X*#11470`] -[visit_id X*#11470] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] -[check_dims] C X*#11481 X*#11542 X*#11555 X*#11607 X*#11620 X*#11672 i#8868 init init#113 init#131 instr_1 instr_2 localidx*#1655 localidx*#1667 localidx*#1679 localtype*#13 resulttype#2755 resulttype#2775 resulttype#2795 t t_1 t_2 t_3 valtype#403 valtype#421 x_1 x_2 +[check_dims] C init instr_1 instr_2 t t_1 t_2 t_3 x_1 x_2 [visit_exp C] [visit_id C] [visit_exp [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}] @@ -30834,15 +26793,9 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `instr_2*`] [visit_id instr_2*] no dims [visit_id instr_2*] -[visit_exp `%->_%%`_instrtype{resulttype#2755, `localidx*#1655`}(`%`_resulttype{`X*#11481`}(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype{`X*#11542`}(t_3*{t_3 <- `t_3*`}))] -[visit_exp resulttype#2755] -[visit_id resulttype#2755] -[visit_exp `localidx*#1655`] -[visit_id localidx*#1655] -[visit_exp (`%`_resulttype{`X*#11481`}(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype{`X*#11542`}(t_3*{t_3 <- `t_3*`}))] -[visit_exp `%`_resulttype{`X*#11481`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#11481`] -[visit_id X*#11481] +[visit_exp `%->_%%`_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*`}))] +[visit_exp (`%`_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*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -30872,9 +26825,7 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `x_2*`] [visit_id x_2*] no dims [visit_id x_2*] -[visit_exp `%`_resulttype{`X*#11542`}(t_3*{t_3 <- `t_3*`})] -[visit_exp `X*#11542`] -[visit_id X*#11542] +[visit_exp `%`_resulttype(t_3*{t_3 <- `t_3*`})] [visit_exp (t_3*{t_3 <- `t_3*`})] [visit_exp t_3*{t_3 <- `t_3*`}] [scope_enter t_3] @@ -30885,20 +26836,14 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `t_3*`] [visit_id t_3*] no dims [visit_id t_3*] -[visit_exp (C, instr_1, `%->_%%`_instrtype{resulttype#2775, `localidx*#1667`}(`%`_resulttype{`X*#11555`}(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype{`X*#11607`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp (C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`})))] [visit_exp C] [visit_id C] not free [visit_exp instr_1] [visit_id instr_1] not free -[visit_exp `%->_%%`_instrtype{resulttype#2775, `localidx*#1667`}(`%`_resulttype{`X*#11555`}(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype{`X*#11607`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#2775] -[visit_id resulttype#2775] -[visit_exp `localidx*#1667`] -[visit_id localidx*#1667] -[visit_exp (`%`_resulttype{`X*#11555`}(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype{`X*#11607`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#11555`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#11555`] -[visit_id X*#11555] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -30918,9 +26863,7 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `x_1*`] [visit_id x_1*] not free [visit_id x_1*] no dims -[visit_exp `%`_resulttype{`X*#11607`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#11607`] -[visit_id X*#11607] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -30931,73 +26874,41 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `t_2*`] [visit_id t_2*] no dims [visit_id t_2*] -[scope_enter i#8868] [scope_enter init] -[scope_enter init#113] -[scope_enter localtype*#13] [scope_enter t] -[scope_enter valtype#403] [scope_enter x_1] -[visit_exp (C.`LOCALS`_context{`localtype*#13`}[x_1!`%`_idx{i#8868}.0] = `%%`_localtype{init#113, valtype#403}(init, t))] -[visit_exp C.`LOCALS`_context{`localtype*#13`}[x_1!`%`_idx{i#8868}.0]] -[visit_exp C.`LOCALS`_context{`localtype*#13`}] +[visit_exp (C.`LOCALS`_context[x_1!`%`_idx.0] = `%%`_localtype(init, t))] +[visit_exp C.`LOCALS`_context[x_1!`%`_idx.0]] +[visit_exp C.`LOCALS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `localtype*#13`] -[visit_id localtype*#13] not free -[visit_exp x_1!`%`_idx{i#8868}.0] -[visit_exp x_1!`%`_idx{i#8868}] +[visit_exp x_1!`%`_idx.0] +[visit_exp x_1!`%`_idx] [visit_exp x_1] [visit_id x_1] not free -[visit_exp i#8868] -[visit_id i#8868] not free -[visit_exp `%%`_localtype{init#113, valtype#403}(init, t)] -[visit_exp init#113] -[visit_id init#113] not free -[visit_exp valtype#403] -[visit_id valtype#403] not free +[visit_exp `%%`_localtype(init, t)] [visit_exp (init, t)] [visit_exp init] [visit_id init] not free [visit_exp t] [visit_id t] not free -[visit_id i#8868] not free [visit_id init] not free -[visit_id init#113] not free -[visit_id localtype*#13] not free [visit_id t] not free -[visit_id valtype#403] not free [visit_id x_1] not free [scope_exit x_1] -[scope_exit valtype#403] [scope_exit t] -[scope_exit localtype*#13] -[scope_exit init#113] [scope_exit init] -[scope_exit i#8868] -[visit_exp `i#8868*`] -[visit_id i#8868*] no dims -[visit_id i#8868*] [visit_exp `init*`] [visit_id init*] no dims [visit_id init*] -[visit_exp `init#113*`] -[visit_id init#113*] no dims -[visit_id init#113*] -[visit_exp `localtype*#13*`] -[visit_id localtype*#13*] no dims -[visit_id localtype*#13*] [visit_exp `t*`] [visit_id t*] no dims [visit_id t*] -[visit_exp `valtype#403*`] -[visit_id valtype#403*] no dims -[visit_id valtype#403*] [visit_exp `x_1*`] [visit_id x_1*] not free [visit_id x_1*] no dims -[visit_exp ($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype{init#131, valtype#421}(`SET`_init, t)*{init#131 <- `init#131*`, t <- `t*`, valtype#421 <- `valtype#421*`}), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype{resulttype#2795, `localidx*#1679`}(`%`_resulttype{`X*#11620`}(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype{`X*#11672`}(t_3*{t_3 <- `t_3*`})))] -[visit_exp $with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype{init#131, valtype#421}(`SET`_init, t)*{init#131 <- `init#131*`, t <- `t*`, valtype#421 <- `valtype#421*`})] +[visit_exp ($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*`})))] +[visit_exp $with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(`SET`_init, t)*{t <- `t*`})] [visit_exp C] [visit_id C] not free [visit_exp x_1*{x_1 <- `x_1*`}] @@ -31009,35 +26920,19 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `x_1*`] [visit_id x_1*] not free [visit_id x_1*] no dims -[visit_exp `%%`_localtype{init#131, valtype#421}(`SET`_init, t)*{init#131 <- `init#131*`, t <- `t*`, valtype#421 <- `valtype#421*`}] -[scope_enter init#131] +[visit_exp `%%`_localtype(`SET`_init, t)*{t <- `t*`}] [scope_enter t] -[scope_enter valtype#421] -[visit_exp `%%`_localtype{init#131, valtype#421}(`SET`_init, t)] -[visit_exp init#131] -[visit_id init#131] not free -[visit_exp valtype#421] -[visit_id valtype#421] not free +[visit_exp `%%`_localtype(`SET`_init, t)] [visit_exp (`SET`_init, t)] [visit_exp `SET`_init] [visit_exp ()] [visit_exp t] [visit_id t] not free -[visit_id init#131] not free [visit_id t] not free -[visit_id valtype#421] not free -[scope_exit valtype#421] [scope_exit t] -[scope_exit init#131] -[visit_exp `init#131*`] -[visit_id init#131*] no dims -[visit_id init#131*] [visit_exp `t*`] [visit_id t*] not free [visit_id t*] no dims -[visit_exp `valtype#421*`] -[visit_id valtype#421*] no dims -[visit_id valtype#421*] [visit_exp instr_2*{instr_2 <- `instr_2*`}] [scope_enter instr_2] [visit_exp instr_2] @@ -31047,15 +26942,9 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `instr_2*`] [visit_id instr_2*] not free [visit_id instr_2*] no dims -[visit_exp `%->_%%`_instrtype{resulttype#2795, `localidx*#1679`}(`%`_resulttype{`X*#11620`}(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype{`X*#11672`}(t_3*{t_3 <- `t_3*`}))] -[visit_exp resulttype#2795] -[visit_id resulttype#2795] -[visit_exp `localidx*#1679`] -[visit_id localidx*#1679] -[visit_exp (`%`_resulttype{`X*#11620`}(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype{`X*#11672`}(t_3*{t_3 <- `t_3*`}))] -[visit_exp `%`_resulttype{`X*#11620`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#11620`] -[visit_id X*#11620] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))] +[visit_exp (`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -31075,9 +26964,7 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `x_2*`] [visit_id x_2*] not free [visit_id x_2*] no dims -[visit_exp `%`_resulttype{`X*#11672`}(t_3*{t_3 <- `t_3*`})] -[visit_exp `X*#11672`] -[visit_id X*#11672] +[visit_exp `%`_resulttype(t_3*{t_3 <- `t_3*`})] [visit_exp (t_3*{t_3 <- `t_3*`})] [visit_exp t_3*{t_3 <- `t_3*`}] [scope_enter t_3] @@ -31128,7 +27015,7 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id C] not free [visit_exp it'] [visit_id it'] not free -[check_dims] C X*#11695 X*#11755 X*#11766 X*#11818 X*#11831 instr localidx*#1721 localidx*#1733 resulttype#2865 resulttype#2885 t t_1 t_2 x +[check_dims] C instr t t_1 t_2 x [visit_exp C] [visit_id C] [visit_exp instr*{instr <- `instr*`}] @@ -31140,15 +27027,9 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `instr*`] [visit_id instr*] no dims [visit_id instr*] -[visit_exp `%->_%%`_instrtype{resulttype#2865, `localidx*#1721`}(`%`_resulttype{`X*#11695`}(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype{`X*#11755`}(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#2865] -[visit_id resulttype#2865] -[visit_exp `localidx*#1721`] -[visit_id localidx*#1721] -[visit_exp (`%`_resulttype{`X*#11695`}(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype{`X*#11755`}(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#11695`}(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#11695`] -[visit_id X*#11695] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`})] [visit_exp (t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`})] [visit_exp t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}] [visit_exp t*{t <- `t*`}] @@ -31178,9 +27059,7 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `x*`] [visit_id x*] no dims [visit_id x*] -[visit_exp `%`_resulttype{`X*#11755`}(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#11755`] -[visit_id X*#11755] +[visit_exp `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`})] [visit_exp (t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`})] [visit_exp t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}] [visit_exp t*{t <- `t*`}] @@ -31201,7 +27080,7 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `t_2*`] [visit_id t_2*] no dims [visit_id t_2*] -[visit_exp (C, instr*{instr <- `instr*`}, `%->_%%`_instrtype{resulttype#2885, `localidx*#1733`}(`%`_resulttype{`X*#11766`}(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype{`X*#11818`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp (C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`})))] [visit_exp C] [visit_id C] not free [visit_exp instr*{instr <- `instr*`}] @@ -31213,15 +27092,9 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `instr*`] [visit_id instr*] not free [visit_id instr*] no dims -[visit_exp `%->_%%`_instrtype{resulttype#2885, `localidx*#1733`}(`%`_resulttype{`X*#11766`}(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype{`X*#11818`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#2885] -[visit_id resulttype#2885] -[visit_exp `localidx*#1733`] -[visit_id localidx*#1733] -[visit_exp (`%`_resulttype{`X*#11766`}(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype{`X*#11818`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#11766`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#11766`] -[visit_id X*#11766] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -31241,9 +27114,7 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `x*`] [visit_id x*] not free [visit_id x*] no dims -[visit_exp `%`_resulttype{`X*#11818`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#11818`] -[visit_id X*#11818] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -31254,12 +27125,10 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `t_2*`] [visit_id t_2*] not free [visit_id t_2*] no dims -[visit_exp (C, `%`_resulttype{`X*#11831`}(t*{t <- `t*`}))] +[visit_exp (C, `%`_resulttype(t*{t <- `t*`}))] [visit_exp C] [visit_id C] not free -[visit_exp `%`_resulttype{`X*#11831`}(t*{t <- `t*`})] -[visit_exp `X*#11831`] -[visit_id X*#11831] +[visit_exp `%`_resulttype(t*{t <- `t*`})] [visit_exp (t*{t <- `t*`})] [visit_exp t*{t <- `t*`}] [scope_enter t] @@ -31270,7 +27139,7 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `t*`] [visit_id t*] not free [visit_id t*] no dims -[check_dims] C X*#11844 X*#11867 X*#11911 instr localidx*#1745 resulttype#2905 t +[check_dims] C instr t [visit_exp C] [visit_id C] [visit_exp instr*{instr <- `instr*`}] @@ -31282,9 +27151,7 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `instr*`] [visit_id instr*] no dims [visit_id instr*] -[visit_exp `%`_resulttype{`X*#11844`}(t*{t <- `t*`})] -[visit_exp `X*#11844`] -[visit_id X*#11844] +[visit_exp `%`_resulttype(t*{t <- `t*`})] [visit_exp (t*{t <- `t*`})] [visit_exp t*{t <- `t*`}] [scope_enter t] @@ -31295,7 +27162,7 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `t*`] [visit_id t*] no dims [visit_id t*] -[visit_exp (C, instr*{instr <- `instr*`}, `%->_%%`_instrtype{resulttype#2905, `localidx*#1745`}(`%`_resulttype{`X*#11867`}([]), [], `%`_resulttype{`X*#11911`}(t*{t <- `t*`})))] +[visit_exp (C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`})))] [visit_exp C] [visit_id C] not free [visit_exp instr*{instr <- `instr*`}] @@ -31307,21 +27174,13 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `instr*`] [visit_id instr*] not free [visit_id instr*] no dims -[visit_exp `%->_%%`_instrtype{resulttype#2905, `localidx*#1745`}(`%`_resulttype{`X*#11867`}([]), [], `%`_resulttype{`X*#11911`}(t*{t <- `t*`}))] -[visit_exp resulttype#2905] -[visit_id resulttype#2905] -[visit_exp `localidx*#1745`] -[visit_id localidx*#1745] -[visit_exp (`%`_resulttype{`X*#11867`}([]), [], `%`_resulttype{`X*#11911`}(t*{t <- `t*`}))] -[visit_exp `%`_resulttype{`X*#11867`}([])] -[visit_exp `X*#11867`] -[visit_id X*#11867] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))] +[visit_exp (`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] [visit_exp []] -[visit_exp `%`_resulttype{`X*#11911`}(t*{t <- `t*`})] -[visit_exp `X*#11911`] -[visit_id X*#11911] +[visit_exp `%`_resulttype(t*{t <- `t*`})] [visit_exp (t*{t <- `t*`})] [visit_exp t*{t <- `t*`}] [scope_enter t] @@ -31335,34 +27194,28 @@ DecD is_packtype(storagetype : storagetype) : bool [check_dims] [check_dims] [check_dims] -[check_dims] C c_nt nt numtype#29 +[check_dims] C c_nt nt [visit_exp C] [visit_id C] -[visit_exp `CONST`_instr{numtype#29}(nt, c_nt)] -[visit_exp numtype#29] -[visit_id numtype#29] +[visit_exp `CONST`_instr(nt, c_nt)] [visit_exp (nt, c_nt)] [visit_exp nt] [visit_id nt] [visit_exp c_nt] [visit_id c_nt] -[check_dims] C c_vt vectype#40 vt +[check_dims] C c_vt vt [visit_exp C] [visit_id C] -[visit_exp `VCONST`_instr{vectype#40}(vt, c_vt)] -[visit_exp vectype#40] -[visit_id vectype#40] +[visit_exp `VCONST`_instr(vt, c_vt)] [visit_exp (vt, c_vt)] [visit_exp vt] [visit_id vt] [visit_exp c_vt] [visit_id c_vt] -[check_dims] C heaptype#945 ht +[check_dims] C ht [visit_exp C] [visit_id C] -[visit_exp `REF.NULL`_instr{heaptype#945}(ht)] -[visit_exp heaptype#945] -[visit_id heaptype#945] +[visit_exp `REF.NULL`_instr(ht)] [visit_exp (ht)] [visit_exp ht] [visit_id ht] @@ -31371,65 +27224,49 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id C] [visit_exp `REF.I31`_instr] [visit_exp ()] -[check_dims] C funcidx#183 x +[check_dims] C x [visit_exp C] [visit_id C] -[visit_exp `REF.FUNC`_instr{funcidx#183}(x)] -[visit_exp funcidx#183] -[visit_id funcidx#183] +[visit_exp `REF.FUNC`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[check_dims] C typeidx#469 x +[check_dims] C x [visit_exp C] [visit_id C] -[visit_exp `STRUCT.NEW`_instr{typeidx#469}(x)] -[visit_exp typeidx#469] -[visit_id typeidx#469] +[visit_exp `STRUCT.NEW`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[check_dims] C typeidx#471 x +[check_dims] C x [visit_exp C] [visit_id C] -[visit_exp `STRUCT.NEW_DEFAULT`_instr{typeidx#471}(x)] -[visit_exp typeidx#471] -[visit_id typeidx#471] +[visit_exp `STRUCT.NEW_DEFAULT`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[check_dims] C typeidx#473 x +[check_dims] C x [visit_exp C] [visit_id C] -[visit_exp `ARRAY.NEW`_instr{typeidx#473}(x)] -[visit_exp typeidx#473] -[visit_id typeidx#473] +[visit_exp `ARRAY.NEW`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[check_dims] C typeidx#475 x +[check_dims] C x [visit_exp C] [visit_id C] -[visit_exp `ARRAY.NEW_DEFAULT`_instr{typeidx#475}(x)] -[visit_exp typeidx#475] -[visit_id typeidx#475] +[visit_exp `ARRAY.NEW_DEFAULT`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[check_dims] C i#9243 n typeidx#477 u32#15 x +[check_dims] C n x [visit_exp C] [visit_id C] -[visit_exp `ARRAY.NEW_FIXED`_instr{typeidx#477, u32#15}(x, `%`_u32{i#9243}(n))] -[visit_exp typeidx#477] -[visit_id typeidx#477] -[visit_exp u32#15] -[visit_id u32#15] -[visit_exp (x, `%`_u32{i#9243}(n))] +[visit_exp `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))] +[visit_exp (x, `%`_u32(n))] [visit_exp x] [visit_id x] -[visit_exp `%`_u32{i#9243}(n)] -[visit_exp i#9243] -[visit_id i#9243] +[visit_exp `%`_u32(n)] [visit_exp (n)] [visit_exp n] [visit_id n] @@ -31443,43 +27280,31 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id C] [visit_exp `EXTERN.CONVERT_ANY`_instr] [visit_exp ()] -[check_dims] C globalidx#13 globaltype*#10 i#9277 mut?#817 t valtype#427 x +[check_dims] C t x [visit_exp C] [visit_id C] -[visit_exp `GLOBAL.GET`_instr{globalidx#13}(x)] -[visit_exp globalidx#13] -[visit_id globalidx#13] +[visit_exp `GLOBAL.GET`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp (C.`GLOBALS`_context{`globaltype*#10`}[x!`%`_idx{i#9277}.0] = `%%`_globaltype{`mut?#817`, valtype#427}(?(), t))] -[visit_exp C.`GLOBALS`_context{`globaltype*#10`}[x!`%`_idx{i#9277}.0]] -[visit_exp C.`GLOBALS`_context{`globaltype*#10`}] +[visit_exp (C.`GLOBALS`_context[x!`%`_idx.0] = `%%`_globaltype(?(), t))] +[visit_exp C.`GLOBALS`_context[x!`%`_idx.0]] +[visit_exp C.`GLOBALS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `globaltype*#10`] -[visit_id globaltype*#10] -[visit_exp x!`%`_idx{i#9277}.0] -[visit_exp x!`%`_idx{i#9277}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#9277] -[visit_id i#9277] -[visit_exp `%%`_globaltype{`mut?#817`, valtype#427}(?(), t)] -[visit_exp `mut?#817`] -[visit_id mut?#817] -[visit_exp valtype#427] -[visit_id valtype#427] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `%%`_globaltype(?(), t)] [visit_exp (?(), t)] [visit_exp ?()] [visit_exp t] [visit_id t] -[check_dims] C Inn binop numtype#31 +[check_dims] C Inn binop [visit_exp C] [visit_id C] -[visit_exp `BINOP`_instr{numtype#31}((Inn : Inn <: numtype), binop)] -[visit_exp numtype#31] -[visit_id numtype#31] +[visit_exp `BINOP`_instr((Inn : Inn <: numtype), binop)] [visit_exp ((Inn : Inn <: numtype), binop)] [visit_exp (Inn : Inn <: numtype)] [visit_exp Inn] @@ -31527,21 +27352,19 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `instr*`] [visit_id instr*] not free [visit_id instr*] no dims -[check_dims] C X*#11922 expr t +[check_dims] C expr t [visit_exp C] [visit_id C] [visit_exp expr] [visit_id expr] [visit_exp t] [visit_id t] -[visit_exp (C, expr, `%`_resulttype{`X*#11922`}([t]))] +[visit_exp (C, expr, `%`_resulttype([t]))] [visit_exp C] [visit_id C] not free [visit_exp expr] [visit_id expr] not free -[visit_exp `%`_resulttype{`X*#11922`}([t])] -[visit_exp `X*#11922`] -[visit_id X*#11922] +[visit_exp `%`_resulttype([t])] [visit_exp ([t])] [visit_exp [t]] [visit_exp t] @@ -31563,12 +27386,10 @@ DecD is_packtype(storagetype : storagetype) : bool [check_dims] [check_dims] [check_dims] -[check_dims] C datatype*#11 deftype*#53 deftype*#54 deftype*#55 dt elemtype*#11 funcidx*#48 globaltype*#11 i#9287 localtype*#14 memtype*#24 rectype rectype#865 resulttype*#22 resulttype?#19 subtype*#10 tabletype*#17 tagtype*#10 typeidx#489 x +[check_dims] C dt rectype x [visit_exp C] [visit_id C] -[visit_exp `TYPE`_type{rectype#865}(rectype)] -[visit_exp rectype#865] -[visit_id rectype#865] +[visit_exp `TYPE`_type(rectype)] [visit_exp (rectype)] [visit_exp rectype] [visit_id rectype] @@ -31581,19 +27402,15 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `dt*`] [visit_id dt*] no dims [visit_id dt*] -[visit_exp (x!`%`_idx{i#9287}.0 = |C.`TYPES`_context{`deftype*#53`}|)] -[visit_exp x!`%`_idx{i#9287}.0] -[visit_exp x!`%`_idx{i#9287}] +[visit_exp (x!`%`_idx.0 = |C.`TYPES`_context|)] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] [visit_exp x] [visit_id x] -[visit_exp i#9287] -[visit_id i#9287] -[visit_exp |C.`TYPES`_context{`deftype*#53`}|] -[visit_exp C.`TYPES`_context{`deftype*#53`}] +[visit_exp |C.`TYPES`_context|] +[visit_exp C.`TYPES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `deftype*#53`] -[visit_id deftype*#53] [visit_exp (dt*{dt <- `dt*`} = $rolldt(x, rectype))] [visit_exp dt*{dt <- `dt*`}] [scope_enter dt] @@ -31609,13 +27426,11 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id x] not free [visit_exp rectype] [visit_id rectype] not free -[visit_exp (C +++ {`TYPES`{`deftype*#54`} dt*{dt <- `dt*`}, `RECS`{`subtype*#10`} [], `TAGS`{`tagtype*#10`} [], `GLOBALS`{`globaltype*#11`} [], `MEMS`{`memtype*#24`} [], `TABLES`{`tabletype*#17`} [], `FUNCS`{`deftype*#55`} [], `DATAS`{`datatype*#11`} [], `ELEMS`{`elemtype*#11`} [], `LOCALS`{`localtype*#14`} [], `LABELS`{`resulttype*#22`} [], `RETURN`{`resulttype?#19`} ?(), `REFS`{`funcidx*#48`} []}, rectype, `OK`_oktypeidx{typeidx#489}(x))] -[visit_exp C +++ {`TYPES`{`deftype*#54`} dt*{dt <- `dt*`}, `RECS`{`subtype*#10`} [], `TAGS`{`tagtype*#10`} [], `GLOBALS`{`globaltype*#11`} [], `MEMS`{`memtype*#24`} [], `TABLES`{`tabletype*#17`} [], `FUNCS`{`deftype*#55`} [], `DATAS`{`datatype*#11`} [], `ELEMS`{`elemtype*#11`} [], `LOCALS`{`localtype*#14`} [], `LABELS`{`resulttype*#22`} [], `RETURN`{`resulttype?#19`} ?(), `REFS`{`funcidx*#48`} []}] +[visit_exp (C +++ {`TYPES` dt*{dt <- `dt*`}, `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}, rectype, `OK`_oktypeidx(x))] +[visit_exp C +++ {`TYPES` dt*{dt <- `dt*`}, `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}] [visit_exp C] [visit_id C] not free -[visit_exp {`TYPES`{`deftype*#54`} dt*{dt <- `dt*`}, `RECS`{`subtype*#10`} [], `TAGS`{`tagtype*#10`} [], `GLOBALS`{`globaltype*#11`} [], `MEMS`{`memtype*#24`} [], `TABLES`{`tabletype*#17`} [], `FUNCS`{`deftype*#55`} [], `DATAS`{`datatype*#11`} [], `ELEMS`{`elemtype*#11`} [], `LOCALS`{`localtype*#14`} [], `LABELS`{`resulttype*#22`} [], `RETURN`{`resulttype?#19`} ?(), `REFS`{`funcidx*#48`} []}] -[visit_exp `deftype*#54`] -[visit_id deftype*#54] +[visit_exp {`TYPES` dt*{dt <- `dt*`}, `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}] [visit_exp dt*{dt <- `dt*`}] [scope_enter dt] [visit_exp dt] @@ -31625,56 +27440,28 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `dt*`] [visit_id dt*] not free [visit_id dt*] no dims -[visit_exp `subtype*#10`] -[visit_id subtype*#10] [visit_exp []] -[visit_exp `tagtype*#10`] -[visit_id tagtype*#10] [visit_exp []] -[visit_exp `globaltype*#11`] -[visit_id globaltype*#11] [visit_exp []] -[visit_exp `memtype*#24`] -[visit_id memtype*#24] [visit_exp []] -[visit_exp `tabletype*#17`] -[visit_id tabletype*#17] [visit_exp []] -[visit_exp `deftype*#55`] -[visit_id deftype*#55] [visit_exp []] -[visit_exp `datatype*#11`] -[visit_id datatype*#11] [visit_exp []] -[visit_exp `elemtype*#11`] -[visit_id elemtype*#11] [visit_exp []] -[visit_exp `localtype*#14`] -[visit_id localtype*#14] [visit_exp []] -[visit_exp `resulttype*#22`] -[visit_id resulttype*#22] [visit_exp []] -[visit_exp `resulttype?#19`] -[visit_id resulttype?#19] [visit_exp ?()] -[visit_exp `funcidx*#48`] -[visit_id funcidx*#48] [visit_exp []] [visit_exp rectype] [visit_id rectype] not free -[visit_exp `OK`_oktypeidx{typeidx#489}(x)] -[visit_exp typeidx#489] -[visit_id typeidx#489] +[visit_exp `OK`_oktypeidx(x)] [visit_exp (x)] [visit_exp x] [visit_id x] not free -[check_dims] C tagtype tagtype#105 +[check_dims] C tagtype [visit_exp C] [visit_id C] -[visit_exp `TAG`_tag{tagtype#105}(tagtype)] -[visit_exp tagtype#105] -[visit_id tagtype#105] +[visit_exp `TAG`_tag(tagtype)] [visit_exp (tagtype)] [visit_exp tagtype] [visit_id tagtype] @@ -31688,14 +27475,10 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id C] not free [visit_exp tagtype] [visit_id tagtype] not free -[check_dims] C expr expr#385 globaltype globaltype#117 mut?#847 t valtype#457 +[check_dims] C expr globaltype t [visit_exp C] [visit_id C] -[visit_exp `GLOBAL`_global{globaltype#117, expr#385}(globaltype, expr)] -[visit_exp globaltype#117] -[visit_id globaltype#117] -[visit_exp expr#385] -[visit_id expr#385] +[visit_exp `GLOBAL`_global(globaltype, expr)] [visit_exp (globaltype, expr)] [visit_exp globaltype] [visit_id globaltype] @@ -31708,14 +27491,10 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id C] not free [visit_exp globaltype] [visit_id globaltype] not free -[visit_exp (globaltype = `%%`_globaltype{`mut?#847`, valtype#457}(`MUT`_mut?{}, t))] +[visit_exp (globaltype = `%%`_globaltype(`MUT`_mut?{}, t))] [visit_exp globaltype] [visit_id globaltype] not free -[visit_exp `%%`_globaltype{`mut?#847`, valtype#457}(`MUT`_mut?{}, t)] -[visit_exp `mut?#847`] -[visit_id mut?#847] -[visit_exp valtype#457] -[visit_id valtype#457] +[visit_exp `%%`_globaltype(`MUT`_mut?{}, t)] [visit_exp (`MUT`_mut?{}, t)] [visit_exp `MUT`_mut?{}] [visit_exp `MUT`_mut] @@ -31729,12 +27508,10 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id expr] not free [visit_exp t] [visit_id t] not free -[check_dims] C memtype memtype#129 +[check_dims] C memtype [visit_exp C] [visit_id C] -[visit_exp `MEMORY`_mem{memtype#129}(memtype)] -[visit_exp memtype#129] -[visit_id memtype#129] +[visit_exp `MEMORY`_mem(memtype)] [visit_exp (memtype)] [visit_exp memtype] [visit_id memtype] @@ -31745,14 +27522,10 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id C] not free [visit_exp memtype] [visit_id memtype] not free -[check_dims] C addrtype#801 at expr expr#397 lim limits#801 reftype#531 rt tabletype tabletype#143 +[check_dims] C at expr lim rt tabletype [visit_exp C] [visit_id C] -[visit_exp `TABLE`_table{tabletype#143, expr#397}(tabletype, expr)] -[visit_exp tabletype#143] -[visit_id tabletype#143] -[visit_exp expr#397] -[visit_id expr#397] +[visit_exp `TABLE`_table(tabletype, expr)] [visit_exp (tabletype, expr)] [visit_exp tabletype] [visit_id tabletype] @@ -31765,16 +27538,10 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id C] not free [visit_exp tabletype] [visit_id tabletype] not free -[visit_exp (tabletype = `%%%`_tabletype{addrtype#801, limits#801, reftype#531}(at, lim, rt))] +[visit_exp (tabletype = `%%%`_tabletype(at, lim, rt))] [visit_exp tabletype] [visit_id tabletype] not free -[visit_exp `%%%`_tabletype{addrtype#801, limits#801, reftype#531}(at, lim, rt)] -[visit_exp addrtype#801] -[visit_id addrtype#801] -[visit_exp limits#801] -[visit_id limits#801] -[visit_exp reftype#531] -[visit_id reftype#531] +[visit_exp `%%%`_tabletype(at, lim, rt)] [visit_exp (at, lim, rt)] [visit_exp at] [visit_id at] @@ -31790,20 +27557,14 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp (rt : reftype <: valtype)] [visit_exp rt] [visit_id rt] not free -[check_dims] C init#143 t valtype#469 valtype#481 +[check_dims] C t [visit_exp C] [visit_id C] -[visit_exp `LOCAL`_local{valtype#469}(t)] -[visit_exp valtype#469] -[visit_id valtype#469] +[visit_exp `LOCAL`_local(t)] [visit_exp (t)] [visit_exp t] [visit_id t] -[visit_exp `%%`_localtype{init#143, valtype#481}(`SET`_init, t)] -[visit_exp init#143] -[visit_id init#143] -[visit_exp valtype#481] -[visit_id valtype#481] +[visit_exp `%%`_localtype(`SET`_init, t)] [visit_exp (`SET`_init, t)] [visit_exp `SET`_init] [visit_exp ()] @@ -31811,20 +27572,14 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id t] not free [visit_exp t] [visit_id t] not free -[check_dims] C init#155 t valtype#493 valtype#505 +[check_dims] C t [visit_exp C] [visit_id C] -[visit_exp `LOCAL`_local{valtype#493}(t)] -[visit_exp valtype#493] -[visit_id valtype#493] +[visit_exp `LOCAL`_local(t)] [visit_exp (t)] [visit_exp t] [visit_id t] -[visit_exp `%%`_localtype{init#155, valtype#505}(`UNSET`_init, t)] -[visit_exp init#155] -[visit_id init#155] -[visit_exp valtype#505] -[visit_id valtype#505] +[visit_exp `%%`_localtype(`UNSET`_init, t)] [visit_exp (`UNSET`_init, t)] [visit_exp `UNSET`_init] [visit_exp ()] @@ -31832,16 +27587,10 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id t] not free [visit_exp t] [visit_id t] not free -[check_dims] C X*#11954 X*#11967 X*#11980 X*#11993 X*#12006 datatype*#12 deftype*#56 deftype*#57 deftype*#58 deftype*#59 elemtype*#12 expr expr#409 funcidx*#49 globaltype*#12 i#9337 i#9347 init#191 lct local local*#171 localtype*#15 memtype*#25 resulttype#2908 resulttype*#23 resulttype?#20 subtype*#11 t_1 t_2 tabletype*#18 tagtype*#11 typeidx#501 valtype#559 x +[check_dims] C expr lct local t_1 t_2 x [visit_exp C] [visit_id C] -[visit_exp `FUNC`_func{typeidx#501, `local*#171`, expr#409}(x, local*{local <- `local*`}, expr)] -[visit_exp typeidx#501] -[visit_id typeidx#501] -[visit_exp `local*#171`] -[visit_id local*#171] -[visit_exp expr#409] -[visit_id expr#409] +[visit_exp `FUNC`_func(x, local*{local <- `local*`}, expr)] [visit_exp (x, local*{local <- `local*`}, expr)] [visit_exp x] [visit_id x] @@ -31856,38 +27605,26 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id local*] [visit_exp expr] [visit_id expr] -[visit_exp C.`TYPES`_context{`deftype*#56`}[x!`%`_idx{i#9337}.0]] -[visit_exp C.`TYPES`_context{`deftype*#56`}] +[visit_exp C.`TYPES`_context[x!`%`_idx.0]] +[visit_exp C.`TYPES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `deftype*#56`] -[visit_id deftype*#56] -[visit_exp x!`%`_idx{i#9337}.0] -[visit_exp x!`%`_idx{i#9337}] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] [visit_exp x] [visit_id x] not free -[visit_exp i#9337] -[visit_id i#9337] -[visit_exp (C.`TYPES`_context{`deftype*#57`}[x!`%`_idx{i#9347}.0], `FUNC%->%`_comptype{resulttype#2908}(`%`_resulttype{`X*#11954`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#11967`}(t_2*{t_2 <- `t_2*`})))] -[visit_exp C.`TYPES`_context{`deftype*#57`}[x!`%`_idx{i#9347}.0]] -[visit_exp C.`TYPES`_context{`deftype*#57`}] +[visit_exp (C.`TYPES`_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))] +[visit_exp C.`TYPES`_context[x!`%`_idx.0]] +[visit_exp C.`TYPES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `deftype*#57`] -[visit_id deftype*#57] -[visit_exp x!`%`_idx{i#9347}.0] -[visit_exp x!`%`_idx{i#9347}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#9347] -[visit_id i#9347] -[visit_exp `FUNC%->%`_comptype{resulttype#2908}(`%`_resulttype{`X*#11954`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#11967`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#2908] -[visit_id resulttype#2908] -[visit_exp (`%`_resulttype{`X*#11954`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#11967`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#11954`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#11954`] -[visit_id X*#11954] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -31898,9 +27635,7 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `t_1*`] [visit_id t_1*] no dims [visit_id t_1*] -[visit_exp `%`_resulttype{`X*#11967`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#11967`] -[visit_id X*#11967] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -31930,70 +27665,34 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `local*`] [visit_id local*] not free [visit_id local*] no dims -[visit_exp (C +++ {`TYPES`{`deftype*#58`} [], `RECS`{`subtype*#11`} [], `TAGS`{`tagtype*#11`} [], `GLOBALS`{`globaltype*#12`} [], `MEMS`{`memtype*#25`} [], `TABLES`{`tabletype*#18`} [], `FUNCS`{`deftype*#59`} [], `DATAS`{`datatype*#12`} [], `ELEMS`{`elemtype*#12`} [], `LOCALS`{`localtype*#15`} `%%`_localtype{init#191, valtype#559}(`SET`_init, t_1)*{init#191 <- `init#191*`, t_1 <- `t_1*`, valtype#559 <- `valtype#559*`} ++ lct*{lct <- `lct*`}, `LABELS`{`resulttype*#23`} [`%`_resulttype{`X*#11980`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#20`} ?(`%`_resulttype{`X*#11993`}(t_2*{t_2 <- `t_2*`})), `REFS`{`funcidx*#49`} []}, expr, `%`_resulttype{`X*#12006`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp C +++ {`TYPES`{`deftype*#58`} [], `RECS`{`subtype*#11`} [], `TAGS`{`tagtype*#11`} [], `GLOBALS`{`globaltype*#12`} [], `MEMS`{`memtype*#25`} [], `TABLES`{`tabletype*#18`} [], `FUNCS`{`deftype*#59`} [], `DATAS`{`datatype*#12`} [], `ELEMS`{`elemtype*#12`} [], `LOCALS`{`localtype*#15`} `%%`_localtype{init#191, valtype#559}(`SET`_init, t_1)*{init#191 <- `init#191*`, t_1 <- `t_1*`, valtype#559 <- `valtype#559*`} ++ lct*{lct <- `lct*`}, `LABELS`{`resulttype*#23`} [`%`_resulttype{`X*#11980`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#20`} ?(`%`_resulttype{`X*#11993`}(t_2*{t_2 <- `t_2*`})), `REFS`{`funcidx*#49`} []}] +[visit_exp (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*`}))] +[visit_exp 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` []}] [visit_exp C] [visit_id C] not free -[visit_exp {`TYPES`{`deftype*#58`} [], `RECS`{`subtype*#11`} [], `TAGS`{`tagtype*#11`} [], `GLOBALS`{`globaltype*#12`} [], `MEMS`{`memtype*#25`} [], `TABLES`{`tabletype*#18`} [], `FUNCS`{`deftype*#59`} [], `DATAS`{`datatype*#12`} [], `ELEMS`{`elemtype*#12`} [], `LOCALS`{`localtype*#15`} `%%`_localtype{init#191, valtype#559}(`SET`_init, t_1)*{init#191 <- `init#191*`, t_1 <- `t_1*`, valtype#559 <- `valtype#559*`} ++ lct*{lct <- `lct*`}, `LABELS`{`resulttype*#23`} [`%`_resulttype{`X*#11980`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#20`} ?(`%`_resulttype{`X*#11993`}(t_2*{t_2 <- `t_2*`})), `REFS`{`funcidx*#49`} []}] -[visit_exp `deftype*#58`] -[visit_id deftype*#58] +[visit_exp {`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` []}] [visit_exp []] -[visit_exp `subtype*#11`] -[visit_id subtype*#11] [visit_exp []] -[visit_exp `tagtype*#11`] -[visit_id tagtype*#11] [visit_exp []] -[visit_exp `globaltype*#12`] -[visit_id globaltype*#12] [visit_exp []] -[visit_exp `memtype*#25`] -[visit_id memtype*#25] [visit_exp []] -[visit_exp `tabletype*#18`] -[visit_id tabletype*#18] [visit_exp []] -[visit_exp `deftype*#59`] -[visit_id deftype*#59] [visit_exp []] -[visit_exp `datatype*#12`] -[visit_id datatype*#12] [visit_exp []] -[visit_exp `elemtype*#12`] -[visit_id elemtype*#12] [visit_exp []] -[visit_exp `localtype*#15`] -[visit_id localtype*#15] -[visit_exp `%%`_localtype{init#191, valtype#559}(`SET`_init, t_1)*{init#191 <- `init#191*`, t_1 <- `t_1*`, valtype#559 <- `valtype#559*`} ++ lct*{lct <- `lct*`}] -[visit_exp `%%`_localtype{init#191, valtype#559}(`SET`_init, t_1)*{init#191 <- `init#191*`, t_1 <- `t_1*`, valtype#559 <- `valtype#559*`}] -[scope_enter init#191] +[visit_exp `%%`_localtype(`SET`_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}] +[visit_exp `%%`_localtype(`SET`_init, t_1)*{t_1 <- `t_1*`}] [scope_enter t_1] -[scope_enter valtype#559] -[visit_exp `%%`_localtype{init#191, valtype#559}(`SET`_init, t_1)] -[visit_exp init#191] -[visit_id init#191] not free -[visit_exp valtype#559] -[visit_id valtype#559] not free +[visit_exp `%%`_localtype(`SET`_init, t_1)] [visit_exp (`SET`_init, t_1)] [visit_exp `SET`_init] [visit_exp ()] [visit_exp t_1] [visit_id t_1] not free -[visit_id init#191] not free [visit_id t_1] not free -[visit_id valtype#559] not free -[scope_exit valtype#559] [scope_exit t_1] -[scope_exit init#191] -[visit_exp `init#191*`] -[visit_id init#191*] no dims -[visit_id init#191*] [visit_exp `t_1*`] [visit_id t_1*] not free [visit_id t_1*] no dims -[visit_exp `valtype#559*`] -[visit_id valtype#559*] no dims -[visit_id valtype#559*] [visit_exp lct*{lct <- `lct*`}] [scope_enter lct] [visit_exp lct] @@ -32003,12 +27702,8 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `lct*`] [visit_id lct*] not free [visit_id lct*] no dims -[visit_exp `resulttype*#23`] -[visit_id resulttype*#23] -[visit_exp [`%`_resulttype{`X*#11980`}(t_2*{t_2 <- `t_2*`})]] -[visit_exp `%`_resulttype{`X*#11980`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#11980`] -[visit_id X*#11980] +[visit_exp [`%`_resulttype(t_2*{t_2 <- `t_2*`})]] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -32019,12 +27714,8 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `t_2*`] [visit_id t_2*] not free [visit_id t_2*] no dims -[visit_exp `resulttype?#20`] -[visit_id resulttype?#20] -[visit_exp ?(`%`_resulttype{`X*#11993`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#11993`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#11993`] -[visit_id X*#11993] +[visit_exp ?(`%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -32035,14 +27726,10 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `t_2*`] [visit_id t_2*] not free [visit_id t_2*] no dims -[visit_exp `funcidx*#49`] -[visit_id funcidx*#49] [visit_exp []] [visit_exp expr] [visit_id expr] not free -[visit_exp `%`_resulttype{`X*#12006`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#12006`] -[visit_id X*#12006] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -32053,14 +27740,10 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp `t_2*`] [visit_id t_2*] not free [visit_id t_2*] no dims -[check_dims] C b byte*#153 datamode datamode#153 +[check_dims] C b datamode [visit_exp C] [visit_id C] -[visit_exp `DATA`_data{`byte*#153`, datamode#153}(b*{b <- `b*`}, datamode)] -[visit_exp `byte*#153`] -[visit_id byte*#153] -[visit_exp datamode#153] -[visit_id datamode#153] +[visit_exp `DATA`_data(b*{b <- `b*`}, datamode)] [visit_exp (b*{b <- `b*`}, datamode)] [visit_exp b*{b <- `b*`}] [scope_enter b] @@ -32082,16 +27765,10 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id datamode] not free [visit_exp `OK`_datatype] [visit_exp ()] -[check_dims] C elemmode elemmode#165 elemtype expr expr*#165 reftype#543 +[check_dims] C elemmode elemtype expr [visit_exp C] [visit_id C] -[visit_exp `ELEM`_elem{reftype#543, `expr*#165`, elemmode#165}(elemtype, expr*{expr <- `expr*`}, elemmode)] -[visit_exp reftype#543] -[visit_id reftype#543] -[visit_exp `expr*#165`] -[visit_id expr*#165] -[visit_exp elemmode#165] -[visit_id elemmode#165] +[visit_exp `ELEM`_elem(elemtype, expr*{expr <- `expr*`}, elemmode)] [visit_exp (elemtype, expr*{expr <- `expr*`}, elemmode)] [visit_exp elemtype] [visit_id elemtype] @@ -32141,14 +27818,10 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp ()] [visit_exp `OK`_datatype] [visit_exp ()] -[check_dims] C addrtype#813 at expr expr#411 i#9383 lim limits#813 memidx#63 memtype*#26 x +[check_dims] C at expr lim x [visit_exp C] [visit_id C] -[visit_exp `ACTIVE`_datamode{memidx#63, expr#411}(x, expr)] -[visit_exp memidx#63] -[visit_id memidx#63] -[visit_exp expr#411] -[visit_id expr#411] +[visit_exp `ACTIVE`_datamode(x, expr)] [visit_exp (x, expr)] [visit_exp x] [visit_id x] @@ -32156,24 +27829,16 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id expr] [visit_exp `OK`_datatype] [visit_exp ()] -[visit_exp (C.`MEMS`_context{`memtype*#26`}[x!`%`_idx{i#9383}.0] = `%%PAGE`_memtype{addrtype#813, limits#813}(at, lim))] -[visit_exp C.`MEMS`_context{`memtype*#26`}[x!`%`_idx{i#9383}.0]] -[visit_exp C.`MEMS`_context{`memtype*#26`}] +[visit_exp (C.`MEMS`_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim))] +[visit_exp C.`MEMS`_context[x!`%`_idx.0]] +[visit_exp C.`MEMS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `memtype*#26`] -[visit_id memtype*#26] -[visit_exp x!`%`_idx{i#9383}.0] -[visit_exp x!`%`_idx{i#9383}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#9383] -[visit_id i#9383] -[visit_exp `%%PAGE`_memtype{addrtype#813, limits#813}(at, lim)] -[visit_exp addrtype#813] -[visit_id addrtype#813] -[visit_exp limits#813] -[visit_id limits#813] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `%%PAGE`_memtype(at, lim)] [visit_exp (at, lim)] [visit_exp at] [visit_id at] @@ -32201,14 +27866,10 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp ()] [visit_exp rt] [visit_id rt] -[check_dims] C addrtype#825 at expr expr#413 i#9407 lim limits#825 reftype#555 rt rt' tableidx#45 tabletype*#19 x +[check_dims] C at expr lim rt rt' x [visit_exp C] [visit_id C] -[visit_exp `ACTIVE`_elemmode{tableidx#45, expr#413}(x, expr)] -[visit_exp tableidx#45] -[visit_id tableidx#45] -[visit_exp expr#413] -[visit_id expr#413] +[visit_exp `ACTIVE`_elemmode(x, expr)] [visit_exp (x, expr)] [visit_exp x] [visit_id x] @@ -32216,26 +27877,16 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id expr] [visit_exp rt] [visit_id rt] -[visit_exp (C.`TABLES`_context{`tabletype*#19`}[x!`%`_idx{i#9407}.0] = `%%%`_tabletype{addrtype#825, limits#825, reftype#555}(at, lim, rt'))] -[visit_exp C.`TABLES`_context{`tabletype*#19`}[x!`%`_idx{i#9407}.0]] -[visit_exp C.`TABLES`_context{`tabletype*#19`}] +[visit_exp (C.`TABLES`_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt'))] +[visit_exp C.`TABLES`_context[x!`%`_idx.0]] +[visit_exp C.`TABLES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `tabletype*#19`] -[visit_id tabletype*#19] -[visit_exp x!`%`_idx{i#9407}.0] -[visit_exp x!`%`_idx{i#9407}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#9407] -[visit_id i#9407] -[visit_exp `%%%`_tabletype{addrtype#825, limits#825, reftype#555}(at, lim, rt')] -[visit_exp addrtype#825] -[visit_id addrtype#825] -[visit_exp limits#825] -[visit_id limits#825] -[visit_exp reftype#555] -[visit_id reftype#555] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `%%%`_tabletype(at, lim, rt')] [visit_exp (at, lim, rt')] [visit_exp at] [visit_id at] @@ -32258,53 +27909,37 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_exp (at : addrtype <: valtype)] [visit_exp at] [visit_id at] not free -[check_dims] C X*#12031 X*#12052 deftype*#60 funcidx#195 i#9431 resulttype#2911 x +[check_dims] C x [visit_exp C] [visit_id C] -[visit_exp `START`_start{funcidx#195}(x)] -[visit_exp funcidx#195] -[visit_id funcidx#195] +[visit_exp `START`_start(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp (C.`FUNCS`_context{`deftype*#60`}[x!`%`_idx{i#9431}.0], `FUNC%->%`_comptype{resulttype#2911}(`%`_resulttype{`X*#12031`}([]), `%`_resulttype{`X*#12052`}([])))] -[visit_exp C.`FUNCS`_context{`deftype*#60`}[x!`%`_idx{i#9431}.0]] -[visit_exp C.`FUNCS`_context{`deftype*#60`}] +[visit_exp (C.`FUNCS`_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([])))] +[visit_exp C.`FUNCS`_context[x!`%`_idx.0]] +[visit_exp C.`FUNCS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `deftype*#60`] -[visit_id deftype*#60] -[visit_exp x!`%`_idx{i#9431}.0] -[visit_exp x!`%`_idx{i#9431}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#9431] -[visit_id i#9431] -[visit_exp `FUNC%->%`_comptype{resulttype#2911}(`%`_resulttype{`X*#12031`}([]), `%`_resulttype{`X*#12052`}([]))] -[visit_exp resulttype#2911] -[visit_id resulttype#2911] -[visit_exp (`%`_resulttype{`X*#12031`}([]), `%`_resulttype{`X*#12052`}([]))] -[visit_exp `%`_resulttype{`X*#12031`}([])] -[visit_exp `X*#12031`] -[visit_id X*#12031] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))] +[visit_exp (`%`_resulttype([]), `%`_resulttype([]))] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] -[visit_exp `%`_resulttype{`X*#12052`}([])] -[visit_exp `X*#12052`] -[visit_id X*#12052] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] [check_dims] [check_dims] [check_dims] -[check_dims] C externtype#79 name#309 name_1 name_2 xt +[check_dims] C name_1 name_2 xt [visit_exp C] [visit_id C] -[visit_exp `IMPORT`_import{name#309, externtype#79}(name_1, name_2, xt)] -[visit_exp name#309] -[visit_id name#309] -[visit_exp externtype#79] -[visit_id externtype#79] +[visit_exp `IMPORT`_import(name_1, name_2, xt)] [visit_exp (name_1, name_2, xt)] [visit_exp name_1] [visit_id name_1] @@ -32322,14 +27957,10 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id C] not free [visit_exp xt] [visit_id xt] not free -[check_dims] C externidx externidx#193 name name#322 xt +[check_dims] C externidx name xt [visit_exp C] [visit_id C] -[visit_exp `EXPORT`_export{name#322, externidx#193}(name, externidx)] -[visit_exp name#322] -[visit_id name#322] -[visit_exp externidx#193] -[visit_id externidx#193] +[visit_exp `EXPORT`_export(name, externidx)] [visit_exp (name, externidx)] [visit_exp name] [visit_id name] @@ -32346,187 +27977,148 @@ DecD is_packtype(storagetype : storagetype) : bool [visit_id externidx] not free [visit_exp xt] [visit_id xt] not free -[check_dims] C i#9455 jt tagidx#9 tagtype#107 tagtype*#12 x +[check_dims] C jt x [visit_exp C] [visit_id C] -[visit_exp `TAG`_externidx{tagidx#9}(x)] -[visit_exp tagidx#9] -[visit_id tagidx#9] +[visit_exp `TAG`_externidx(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `TAG`_externtype{tagtype#107}(jt)] -[visit_exp tagtype#107] -[visit_id tagtype#107] +[visit_exp `TAG`_externtype(jt)] [visit_exp (jt)] [visit_exp jt] [visit_id jt] -[visit_exp (C.`TAGS`_context{`tagtype*#12`}[x!`%`_idx{i#9455}.0] = jt)] -[visit_exp C.`TAGS`_context{`tagtype*#12`}[x!`%`_idx{i#9455}.0]] -[visit_exp C.`TAGS`_context{`tagtype*#12`}] +[visit_exp (C.`TAGS`_context[x!`%`_idx.0] = jt)] +[visit_exp C.`TAGS`_context[x!`%`_idx.0]] +[visit_exp C.`TAGS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `tagtype*#12`] -[visit_id tagtype*#12] -[visit_exp x!`%`_idx{i#9455}.0] -[visit_exp x!`%`_idx{i#9455}] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] [visit_exp x] [visit_id x] not free -[visit_exp i#9455] -[visit_id i#9455] [visit_exp jt] [visit_id jt] not free -[check_dims] C globalidx#15 globaltype#119 globaltype*#13 gt i#9479 x +[check_dims] C gt x [visit_exp C] [visit_id C] -[visit_exp `GLOBAL`_externidx{globalidx#15}(x)] -[visit_exp globalidx#15] -[visit_id globalidx#15] +[visit_exp `GLOBAL`_externidx(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `GLOBAL`_externtype{globaltype#119}(gt)] -[visit_exp globaltype#119] -[visit_id globaltype#119] +[visit_exp `GLOBAL`_externtype(gt)] [visit_exp (gt)] [visit_exp gt] [visit_id gt] -[visit_exp (C.`GLOBALS`_context{`globaltype*#13`}[x!`%`_idx{i#9479}.0] = gt)] -[visit_exp C.`GLOBALS`_context{`globaltype*#13`}[x!`%`_idx{i#9479}.0]] -[visit_exp C.`GLOBALS`_context{`globaltype*#13`}] +[visit_exp (C.`GLOBALS`_context[x!`%`_idx.0] = gt)] +[visit_exp C.`GLOBALS`_context[x!`%`_idx.0]] +[visit_exp C.`GLOBALS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `globaltype*#13`] -[visit_id globaltype*#13] -[visit_exp x!`%`_idx{i#9479}.0] -[visit_exp x!`%`_idx{i#9479}] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] [visit_exp x] [visit_id x] not free -[visit_exp i#9479] -[visit_id i#9479] [visit_exp gt] [visit_id gt] not free -[check_dims] C i#9503 memidx#65 memtype#131 memtype*#27 mt x +[check_dims] C mt x [visit_exp C] [visit_id C] -[visit_exp `MEM`_externidx{memidx#65}(x)] -[visit_exp memidx#65] -[visit_id memidx#65] +[visit_exp `MEM`_externidx(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `MEM`_externtype{memtype#131}(mt)] -[visit_exp memtype#131] -[visit_id memtype#131] +[visit_exp `MEM`_externtype(mt)] [visit_exp (mt)] [visit_exp mt] [visit_id mt] -[visit_exp (C.`MEMS`_context{`memtype*#27`}[x!`%`_idx{i#9503}.0] = mt)] -[visit_exp C.`MEMS`_context{`memtype*#27`}[x!`%`_idx{i#9503}.0]] -[visit_exp C.`MEMS`_context{`memtype*#27`}] +[visit_exp (C.`MEMS`_context[x!`%`_idx.0] = mt)] +[visit_exp C.`MEMS`_context[x!`%`_idx.0]] +[visit_exp C.`MEMS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `memtype*#27`] -[visit_id memtype*#27] -[visit_exp x!`%`_idx{i#9503}.0] -[visit_exp x!`%`_idx{i#9503}] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] [visit_exp x] [visit_id x] not free -[visit_exp i#9503] -[visit_id i#9503] [visit_exp mt] [visit_id mt] not free -[check_dims] C i#9527 tableidx#47 tabletype#145 tabletype*#20 tt x +[check_dims] C tt x [visit_exp C] [visit_id C] -[visit_exp `TABLE`_externidx{tableidx#47}(x)] -[visit_exp tableidx#47] -[visit_id tableidx#47] +[visit_exp `TABLE`_externidx(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `TABLE`_externtype{tabletype#145}(tt)] -[visit_exp tabletype#145] -[visit_id tabletype#145] +[visit_exp `TABLE`_externtype(tt)] [visit_exp (tt)] [visit_exp tt] [visit_id tt] -[visit_exp (C.`TABLES`_context{`tabletype*#20`}[x!`%`_idx{i#9527}.0] = tt)] -[visit_exp C.`TABLES`_context{`tabletype*#20`}[x!`%`_idx{i#9527}.0]] -[visit_exp C.`TABLES`_context{`tabletype*#20`}] +[visit_exp (C.`TABLES`_context[x!`%`_idx.0] = tt)] +[visit_exp C.`TABLES`_context[x!`%`_idx.0]] +[visit_exp C.`TABLES`_context] [visit_exp C] [visit_id C] not free -[visit_exp `tabletype*#20`] -[visit_id tabletype*#20] -[visit_exp x!`%`_idx{i#9527}.0] -[visit_exp x!`%`_idx{i#9527}] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] [visit_exp x] [visit_id x] not free -[visit_exp i#9527] -[visit_id i#9527] [visit_exp tt] [visit_id tt] not free -[check_dims] C deftype*#61 dt funcidx#197 i#9551 typeuse#31 x +[check_dims] C dt x [visit_exp C] [visit_id C] -[visit_exp `FUNC`_externidx{funcidx#197}(x)] -[visit_exp funcidx#197] -[visit_id funcidx#197] +[visit_exp `FUNC`_externidx(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `FUNC`_externtype{typeuse#31}((dt : deftype <: typeuse))] -[visit_exp typeuse#31] -[visit_id typeuse#31] +[visit_exp `FUNC`_externtype((dt : deftype <: typeuse))] [visit_exp ((dt : deftype <: typeuse))] [visit_exp (dt : deftype <: typeuse)] [visit_exp dt] [visit_id dt] -[visit_exp (C.`FUNCS`_context{`deftype*#61`}[x!`%`_idx{i#9551}.0] = dt)] -[visit_exp C.`FUNCS`_context{`deftype*#61`}[x!`%`_idx{i#9551}.0]] -[visit_exp C.`FUNCS`_context{`deftype*#61`}] +[visit_exp (C.`FUNCS`_context[x!`%`_idx.0] = dt)] +[visit_exp C.`FUNCS`_context[x!`%`_idx.0]] +[visit_exp C.`FUNCS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `deftype*#61`] -[visit_id deftype*#61] -[visit_exp x!`%`_idx{i#9551}.0] -[visit_exp x!`%`_idx{i#9551}] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] [visit_exp x] [visit_id x] not free -[visit_exp i#9551] -[visit_id i#9551] [visit_exp dt] [visit_id dt] not free [check_dims] [check_dims] [check_dims] [check_dims] ---- 1 --- [check_dims] ---- 2 --- ---- 3 --- ---- 4 --- +[scope_enter global*] +[visit_id global*] not free [visit_id global*] no dims -[visit_id global*] +[scope_enter mem*] +[visit_id mem*] not free [visit_id mem*] no dims -[visit_id mem*] +[scope_enter table*] +[visit_id table*] not free [visit_id table*] no dims -[visit_id table*] +[scope_enter elem*] +[visit_id elem*] not free [visit_id elem*] no dims -[visit_id elem*] +[scope_exit elem*] +[scope_exit table*] +[scope_exit mem*] +[scope_exit global*] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- [check_dims] nonfuncs DecD funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* [visit_id nonfuncs] not free -[check_dims] data*#71 elem elem*#47 elem*#83 export*#71 func*#71 global global*#47 global*#83 import*#71 mem mem*#47 mem*#83 start?#71 table table*#47 table*#83 tag*#71 type*#71 -[visit_exp `%%%%`_nonfuncs{`global*#47`, `mem*#47`, `table*#47`, `elem*#47`}(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})] -[visit_exp `global*#47`] -[visit_id global*#47] -[visit_exp `mem*#47`] -[visit_id mem*#47] -[visit_exp `table*#47`] -[visit_id table*#47] -[visit_exp `elem*#47`] -[visit_id elem*#47] +[check_dims] elem global mem table +[visit_exp `%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})] [visit_exp (global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})] [visit_exp global*{global <- `global*`}] [scope_enter global] @@ -32564,30 +28156,8 @@ DecD funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* [visit_exp `elem*`] [visit_id elem*] no dims [visit_id elem*] -[visit_exp $funcidx_module(`MODULE`_module{`type*#71`, `import*#71`, `tag*#71`, `global*#83`, `mem*#83`, `table*#83`, `func*#71`, `data*#71`, `elem*#83`, `start?#71`, `export*#71`}([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), []))] -[visit_exp `MODULE`_module{`type*#71`, `import*#71`, `tag*#71`, `global*#83`, `mem*#83`, `table*#83`, `func*#71`, `data*#71`, `elem*#83`, `start?#71`, `export*#71`}([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])] -[visit_exp `type*#71`] -[visit_id type*#71] -[visit_exp `import*#71`] -[visit_id import*#71] -[visit_exp `tag*#71`] -[visit_id tag*#71] -[visit_exp `global*#83`] -[visit_id global*#83] -[visit_exp `mem*#83`] -[visit_id mem*#83] -[visit_exp `table*#83`] -[visit_id table*#83] -[visit_exp `func*#71`] -[visit_id func*#71] -[visit_exp `data*#71`] -[visit_id data*#71] -[visit_exp `elem*#83`] -[visit_id elem*#83] -[visit_exp `start?#71`] -[visit_id start?#71] -[visit_exp `export*#71`] -[visit_id export*#71] +[visit_exp $funcidx_module(`MODULE`_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), []))] +[visit_exp `MODULE`_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])] [visit_exp ([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])] [visit_exp []] [visit_exp []] @@ -32634,31 +28204,9 @@ DecD funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* [visit_exp []] => ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - def $funcidx_nonfuncs{`global*#47` : global*, `mem*#47` : mem*, `table*#47` : table*, `elem*#47` : elem*, `global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `type*#71` : type*, `import*#71` : import*, `tag*#71` : tag*, `global*#83` : global*, `mem*#83` : mem*, `table*#83` : table*, `func*#71` : func*, `data*#71` : data*, `elem*#83` : elem*, `start?#71` : start?, `export*#71` : export*}(`%%%%`_nonfuncs{`global*#47`, `mem*#47`, `table*#47`, `elem*#47`}(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) = $funcidx_module(`MODULE`_module{`type*#71`, `import*#71`, `tag*#71`, `global*#83`, `mem*#83`, `table*#83`, `func*#71`, `data*#71`, `elem*#83`, `start?#71`, `export*#71`}([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) -[check_dims] C C' data data*#83 datatype*#13 datatype*#14 datatype*#15 datatype*#16 deftype*#62 deftype*#63 deftype*#64 deftype*#65 deftype*#66 deftype*#67 deftype*#68 deftype*#69 dt dt' dt_I elem elem*#107 elem*#95 elemtype*#13 elemtype*#14 elemtype*#15 elemtype*#16 export export*#83 externtype*#148 func func*#83 funcidx*#50 funcidx*#51 funcidx*#52 funcidx*#53 global global*#107 global*#95 globaltype*#14 globaltype*#15 globaltype*#16 globaltype*#17 gt gt_I import import*#83 jt jt_I localtype*#16 localtype*#17 localtype*#18 localtype*#19 mem mem*#107 mem*#95 memtype*#28 memtype*#29 memtype*#30 memtype*#31 mt mt_I nm ok resulttype*#24 resulttype*#25 resulttype*#26 resulttype*#27 resulttype?#21 resulttype?#22 resulttype?#23 resulttype?#24 rt start start?#83 subtype*#12 subtype*#13 subtype*#14 subtype*#15 table table*#107 table*#95 tabletype*#21 tabletype*#22 tabletype*#23 tabletype*#24 tag tag*#83 tagtype*#13 tagtype*#14 tagtype*#15 tagtype*#16 tt tt_I type type*#83 x xt_E xt_I -[visit_exp `MODULE`_module{`type*#83`, `import*#83`, `tag*#83`, `global*#95`, `mem*#95`, `table*#95`, `func*#83`, `data*#83`, `elem*#95`, `start?#83`, `export*#83`}(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*`})] -[visit_exp `type*#83`] -[visit_id type*#83] -[visit_exp `import*#83`] -[visit_id import*#83] -[visit_exp `tag*#83`] -[visit_id tag*#83] -[visit_exp `global*#95`] -[visit_id global*#95] -[visit_exp `mem*#95`] -[visit_id mem*#95] -[visit_exp `table*#95`] -[visit_id table*#95] -[visit_exp `func*#83`] -[visit_id func*#83] -[visit_exp `data*#83`] -[visit_id data*#83] -[visit_exp `elem*#95`] -[visit_id elem*#95] -[visit_exp `start?#83`] -[visit_id start?#83] -[visit_exp `export*#83`] -[visit_id export*#83] + 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*`}, ?(), [])) +[check_dims] C C' data dt dt' dt_I elem export func global gt gt_I import jt jt_I mem mt mt_I nm ok rt start table tag tt tt_I type x xt_E xt_I +[visit_exp `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*`})] [visit_exp (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*`})] [visit_exp type*{type <- `type*`}] [scope_enter type] @@ -32759,12 +28307,10 @@ DecD funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* [visit_exp `export*`] [visit_id export*] no dims [visit_id export*] -[visit_exp $clos_moduletype(C, `%->%`_moduletype{`externtype*#148`}(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))] +[visit_exp $clos_moduletype(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))] [visit_exp C] [visit_id C] -[visit_exp `%->%`_moduletype{`externtype*#148`}(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})] -[visit_exp `externtype*#148`] -[visit_id externtype*#148] +[visit_exp `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})] [visit_exp (xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})] [visit_exp xt_I*{xt_I <- `xt_I*`}] [scope_enter xt_I] @@ -32784,46 +28330,20 @@ DecD funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* [visit_exp `xt_E*`] [visit_id xt_E*] no dims [visit_id xt_E*] -[visit_exp ({`TYPES`{`deftype*#62`} [], `RECS`{`subtype*#12`} [], `TAGS`{`tagtype*#13`} [], `GLOBALS`{`globaltype*#14`} [], `MEMS`{`memtype*#28`} [], `TABLES`{`tabletype*#21`} [], `FUNCS`{`deftype*#63`} [], `DATAS`{`datatype*#13`} [], `ELEMS`{`elemtype*#13`} [], `LOCALS`{`localtype*#16`} [], `LABELS`{`resulttype*#24`} [], `RETURN`{`resulttype?#21`} ?(), `REFS`{`funcidx*#50`} []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`})] -[visit_exp {`TYPES`{`deftype*#62`} [], `RECS`{`subtype*#12`} [], `TAGS`{`tagtype*#13`} [], `GLOBALS`{`globaltype*#14`} [], `MEMS`{`memtype*#28`} [], `TABLES`{`tabletype*#21`} [], `FUNCS`{`deftype*#63`} [], `DATAS`{`datatype*#13`} [], `ELEMS`{`elemtype*#13`} [], `LOCALS`{`localtype*#16`} [], `LABELS`{`resulttype*#24`} [], `RETURN`{`resulttype?#21`} ?(), `REFS`{`funcidx*#50`} []}] -[visit_exp `deftype*#62`] -[visit_id deftype*#62] +[visit_exp ({`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`})] +[visit_exp {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}] [visit_exp []] -[visit_exp `subtype*#12`] -[visit_id subtype*#12] [visit_exp []] -[visit_exp `tagtype*#13`] -[visit_id tagtype*#13] [visit_exp []] -[visit_exp `globaltype*#14`] -[visit_id globaltype*#14] [visit_exp []] -[visit_exp `memtype*#28`] -[visit_id memtype*#28] [visit_exp []] -[visit_exp `tabletype*#21`] -[visit_id tabletype*#21] [visit_exp []] -[visit_exp `deftype*#63`] -[visit_id deftype*#63] [visit_exp []] -[visit_exp `datatype*#13`] -[visit_id datatype*#13] [visit_exp []] -[visit_exp `elemtype*#13`] -[visit_id elemtype*#13] [visit_exp []] -[visit_exp `localtype*#16`] -[visit_id localtype*#16] [visit_exp []] -[visit_exp `resulttype*#24`] -[visit_id resulttype*#24] [visit_exp []] -[visit_exp `resulttype?#21`] -[visit_id resulttype?#21] [visit_exp ?()] -[visit_exp `funcidx*#50`] -[visit_id funcidx*#50] [visit_exp []] [visit_exp type*{type <- `type*`}] [scope_enter type] @@ -32843,25 +28363,10 @@ DecD funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* [visit_exp `dt'*`] [visit_id dt'*] no dims [visit_id dt'*] -[scope_enter datatype*#14] -[scope_enter deftype*#64] -[scope_enter deftype*#65] -[scope_enter elemtype*#14] -[scope_enter funcidx*#51] -[scope_enter globaltype*#15] [scope_enter import] -[scope_enter localtype*#17] -[scope_enter memtype*#29] -[scope_enter resulttype*#25] -[scope_enter resulttype?#22] -[scope_enter subtype*#13] -[scope_enter tabletype*#22] -[scope_enter tagtype*#14] [scope_enter xt_I] -[visit_exp ({`TYPES`{`deftype*#64`} dt'*{dt' <- `dt'*`}, `RECS`{`subtype*#13`} [], `TAGS`{`tagtype*#14`} [], `GLOBALS`{`globaltype*#15`} [], `MEMS`{`memtype*#29`} [], `TABLES`{`tabletype*#22`} [], `FUNCS`{`deftype*#65`} [], `DATAS`{`datatype*#14`} [], `ELEMS`{`elemtype*#14`} [], `LOCALS`{`localtype*#17`} [], `LABELS`{`resulttype*#25`} [], `RETURN`{`resulttype?#22`} ?(), `REFS`{`funcidx*#51`} []}, import, xt_I)] -[visit_exp {`TYPES`{`deftype*#64`} dt'*{dt' <- `dt'*`}, `RECS`{`subtype*#13`} [], `TAGS`{`tagtype*#14`} [], `GLOBALS`{`globaltype*#15`} [], `MEMS`{`memtype*#29`} [], `TABLES`{`tabletype*#22`} [], `FUNCS`{`deftype*#65`} [], `DATAS`{`datatype*#14`} [], `ELEMS`{`elemtype*#14`} [], `LOCALS`{`localtype*#17`} [], `LABELS`{`resulttype*#25`} [], `RETURN`{`resulttype?#22`} ?(), `REFS`{`funcidx*#51`} []}] -[visit_exp `deftype*#64`] -[visit_id deftype*#64] not free +[visit_exp ({`TYPES` dt'*{dt' <- `dt'*`}, `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}, import, xt_I)] +[visit_exp {`TYPES` dt'*{dt' <- `dt'*`}, `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}] [visit_exp dt'*{dt' <- `dt'*`}] [scope_enter dt'] [visit_exp dt'] @@ -32871,118 +28376,29 @@ DecD funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* [visit_exp `dt'*`] [visit_id dt'*] not free [visit_id dt'*] no dims -[visit_exp `subtype*#13`] -[visit_id subtype*#13] not free [visit_exp []] -[visit_exp `tagtype*#14`] -[visit_id tagtype*#14] not free [visit_exp []] -[visit_exp `globaltype*#15`] -[visit_id globaltype*#15] not free [visit_exp []] -[visit_exp `memtype*#29`] -[visit_id memtype*#29] not free [visit_exp []] -[visit_exp `tabletype*#22`] -[visit_id tabletype*#22] not free [visit_exp []] -[visit_exp `deftype*#65`] -[visit_id deftype*#65] not free [visit_exp []] -[visit_exp `datatype*#14`] -[visit_id datatype*#14] not free [visit_exp []] -[visit_exp `elemtype*#14`] -[visit_id elemtype*#14] not free [visit_exp []] -[visit_exp `localtype*#17`] -[visit_id localtype*#17] not free [visit_exp []] -[visit_exp `resulttype*#25`] -[visit_id resulttype*#25] not free [visit_exp []] -[visit_exp `resulttype?#22`] -[visit_id resulttype?#22] not free [visit_exp ?()] -[visit_exp `funcidx*#51`] -[visit_id funcidx*#51] not free [visit_exp []] [visit_exp import] [visit_id import] not free [visit_exp xt_I] [visit_id xt_I] not free -[visit_id datatype*#14] not free -[visit_id deftype*#64] not free -[visit_id deftype*#65] not free -[visit_id elemtype*#14] not free -[visit_id funcidx*#51] not free -[visit_id globaltype*#15] not free [visit_id import] not free -[visit_id localtype*#17] not free -[visit_id memtype*#29] not free -[visit_id resulttype*#25] not free -[visit_id resulttype?#22] not free -[visit_id subtype*#13] not free -[visit_id tabletype*#22] not free -[visit_id tagtype*#14] not free [visit_id xt_I] not free [scope_exit xt_I] -[scope_exit tagtype*#14] -[scope_exit tabletype*#22] -[scope_exit subtype*#13] -[scope_exit resulttype?#22] -[scope_exit resulttype*#25] -[scope_exit memtype*#29] -[scope_exit localtype*#17] [scope_exit import] -[scope_exit globaltype*#15] -[scope_exit funcidx*#51] -[scope_exit elemtype*#14] -[scope_exit deftype*#65] -[scope_exit deftype*#64] -[scope_exit datatype*#14] -[visit_exp `datatype*#14*`] -[visit_id datatype*#14*] no dims -[visit_id datatype*#14*] -[visit_exp `deftype*#64*`] -[visit_id deftype*#64*] no dims -[visit_id deftype*#64*] -[visit_exp `deftype*#65*`] -[visit_id deftype*#65*] no dims -[visit_id deftype*#65*] -[visit_exp `elemtype*#14*`] -[visit_id elemtype*#14*] no dims -[visit_id elemtype*#14*] -[visit_exp `funcidx*#51*`] -[visit_id funcidx*#51*] no dims -[visit_id funcidx*#51*] -[visit_exp `globaltype*#15*`] -[visit_id globaltype*#15*] no dims -[visit_id globaltype*#15*] [visit_exp `import*`] [visit_id import*] not free [visit_id import*] no dims -[visit_exp `localtype*#17*`] -[visit_id localtype*#17*] no dims -[visit_id localtype*#17*] -[visit_exp `memtype*#29*`] -[visit_id memtype*#29*] no dims -[visit_id memtype*#29*] -[visit_exp `resulttype*#25*`] -[visit_id resulttype*#25*] no dims -[visit_id resulttype*#25*] -[visit_exp `resulttype?#22*`] -[visit_id resulttype?#22*] no dims -[visit_id resulttype?#22*] -[visit_exp `subtype*#13*`] -[visit_id subtype*#13*] no dims -[visit_id subtype*#13*] -[visit_exp `tabletype*#22*`] -[visit_id tabletype*#22*] no dims -[visit_id tabletype*#22*] -[visit_exp `tagtype*#14*`] -[visit_id tagtype*#14*] no dims -[visit_id tagtype*#14*] [visit_exp `xt_I*`] [visit_id xt_I*] not free [visit_id xt_I*] no dims @@ -33169,21 +28585,15 @@ DecD funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* [visit_exp `nm*`] [visit_id nm*] not free [visit_id nm*] no dims -[visit_exp (C = C' +++ {`TYPES`{`deftype*#66`} [], `RECS`{`subtype*#14`} [], `TAGS`{`tagtype*#15`} jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, `GLOBALS`{`globaltype*#16`} gt*{gt <- `gt*`}, `MEMS`{`memtype*#30`} mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, `TABLES`{`tabletype*#23`} tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, `FUNCS`{`deftype*#67`} [], `DATAS`{`datatype*#15`} ok*{ok <- `ok*`}, `ELEMS`{`elemtype*#15`} rt*{rt <- `rt*`}, `LOCALS`{`localtype*#18`} [], `LABELS`{`resulttype*#26`} [], `RETURN`{`resulttype?#23`} ?(), `REFS`{`funcidx*#52`} []})] +[visit_exp (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` []})] [visit_exp C] [visit_id C] not free -[visit_exp C' +++ {`TYPES`{`deftype*#66`} [], `RECS`{`subtype*#14`} [], `TAGS`{`tagtype*#15`} jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, `GLOBALS`{`globaltype*#16`} gt*{gt <- `gt*`}, `MEMS`{`memtype*#30`} mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, `TABLES`{`tabletype*#23`} tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, `FUNCS`{`deftype*#67`} [], `DATAS`{`datatype*#15`} ok*{ok <- `ok*`}, `ELEMS`{`elemtype*#15`} rt*{rt <- `rt*`}, `LOCALS`{`localtype*#18`} [], `LABELS`{`resulttype*#26`} [], `RETURN`{`resulttype?#23`} ?(), `REFS`{`funcidx*#52`} []}] +[visit_exp 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` []}] [visit_exp C'] [visit_id C'] not free -[visit_exp {`TYPES`{`deftype*#66`} [], `RECS`{`subtype*#14`} [], `TAGS`{`tagtype*#15`} jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, `GLOBALS`{`globaltype*#16`} gt*{gt <- `gt*`}, `MEMS`{`memtype*#30`} mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, `TABLES`{`tabletype*#23`} tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, `FUNCS`{`deftype*#67`} [], `DATAS`{`datatype*#15`} ok*{ok <- `ok*`}, `ELEMS`{`elemtype*#15`} rt*{rt <- `rt*`}, `LOCALS`{`localtype*#18`} [], `LABELS`{`resulttype*#26`} [], `RETURN`{`resulttype?#23`} ?(), `REFS`{`funcidx*#52`} []}] -[visit_exp `deftype*#66`] -[visit_id deftype*#66] +[visit_exp {`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` []}] [visit_exp []] -[visit_exp `subtype*#14`] -[visit_id subtype*#14] [visit_exp []] -[visit_exp `tagtype*#15`] -[visit_id tagtype*#15] [visit_exp jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}] [visit_exp jt_I*{jt_I <- `jt_I*`}] [scope_enter jt_I] @@ -33203,8 +28613,6 @@ DecD funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* [visit_exp `jt*`] [visit_id jt*] not free [visit_id jt*] no dims -[visit_exp `globaltype*#16`] -[visit_id globaltype*#16] [visit_exp gt*{gt <- `gt*`}] [scope_enter gt] [visit_exp gt] @@ -33214,8 +28622,6 @@ DecD funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* [visit_exp `gt*`] [visit_id gt*] not free [visit_id gt*] no dims -[visit_exp `memtype*#30`] -[visit_id memtype*#30] [visit_exp mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}] [visit_exp mt_I*{mt_I <- `mt_I*`}] [scope_enter mt_I] @@ -33235,8 +28641,6 @@ DecD funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* [visit_exp `mt*`] [visit_id mt*] not free [visit_id mt*] no dims -[visit_exp `tabletype*#23`] -[visit_id tabletype*#23] [visit_exp tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}] [visit_exp tt_I*{tt_I <- `tt_I*`}] [scope_enter tt_I] @@ -33256,11 +28660,7 @@ DecD funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* [visit_exp `tt*`] [visit_id tt*] not free [visit_id tt*] no dims -[visit_exp `deftype*#67`] -[visit_id deftype*#67] [visit_exp []] -[visit_exp `datatype*#15`] -[visit_id datatype*#15] [visit_exp ok*{ok <- `ok*`}] [scope_enter ok] [visit_exp ok] @@ -33270,8 +28670,6 @@ DecD funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* [visit_exp `ok*`] [visit_id ok*] not free [visit_id ok*] no dims -[visit_exp `elemtype*#15`] -[visit_id elemtype*#15] [visit_exp rt*{rt <- `rt*`}] [scope_enter rt] [visit_exp rt] @@ -33281,24 +28679,14 @@ DecD funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* [visit_exp `rt*`] [visit_id rt*] not free [visit_id rt*] no dims -[visit_exp `localtype*#18`] -[visit_id localtype*#18] [visit_exp []] -[visit_exp `resulttype*#26`] -[visit_id resulttype*#26] [visit_exp []] -[visit_exp `resulttype?#23`] -[visit_id resulttype?#23] [visit_exp ?()] -[visit_exp `funcidx*#52`] -[visit_id funcidx*#52] [visit_exp []] -[visit_exp (C' = {`TYPES`{`deftype*#68`} dt'*{dt' <- `dt'*`}, `RECS`{`subtype*#15`} [], `TAGS`{`tagtype*#16`} [], `GLOBALS`{`globaltype*#17`} gt_I*{gt_I <- `gt_I*`}, `MEMS`{`memtype*#31`} [], `TABLES`{`tabletype*#24`} [], `FUNCS`{`deftype*#69`} dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, `DATAS`{`datatype*#16`} [], `ELEMS`{`elemtype*#16`} [], `LOCALS`{`localtype*#19`} [], `LABELS`{`resulttype*#27`} [], `RETURN`{`resulttype?#24`} ?(), `REFS`{`funcidx*#53`} x*{x <- `x*`}})] +[visit_exp (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*`}})] [visit_exp C'] [visit_id C'] not free -[visit_exp {`TYPES`{`deftype*#68`} dt'*{dt' <- `dt'*`}, `RECS`{`subtype*#15`} [], `TAGS`{`tagtype*#16`} [], `GLOBALS`{`globaltype*#17`} gt_I*{gt_I <- `gt_I*`}, `MEMS`{`memtype*#31`} [], `TABLES`{`tabletype*#24`} [], `FUNCS`{`deftype*#69`} dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, `DATAS`{`datatype*#16`} [], `ELEMS`{`elemtype*#16`} [], `LOCALS`{`localtype*#19`} [], `LABELS`{`resulttype*#27`} [], `RETURN`{`resulttype?#24`} ?(), `REFS`{`funcidx*#53`} x*{x <- `x*`}}] -[visit_exp `deftype*#68`] -[visit_id deftype*#68] +[visit_exp {`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*`}}] [visit_exp dt'*{dt' <- `dt'*`}] [scope_enter dt'] [visit_exp dt'] @@ -33308,14 +28696,8 @@ DecD funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* [visit_exp `dt'*`] [visit_id dt'*] not free [visit_id dt'*] no dims -[visit_exp `subtype*#15`] -[visit_id subtype*#15] [visit_exp []] -[visit_exp `tagtype*#16`] -[visit_id tagtype*#16] [visit_exp []] -[visit_exp `globaltype*#17`] -[visit_id globaltype*#17] [visit_exp gt_I*{gt_I <- `gt_I*`}] [scope_enter gt_I] [visit_exp gt_I] @@ -33325,14 +28707,8 @@ DecD funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* [visit_exp `gt_I*`] [visit_id gt_I*] no dims [visit_id gt_I*] -[visit_exp `memtype*#31`] -[visit_id memtype*#31] [visit_exp []] -[visit_exp `tabletype*#24`] -[visit_id tabletype*#24] [visit_exp []] -[visit_exp `deftype*#69`] -[visit_id deftype*#69] [visit_exp dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}] [visit_exp dt_I*{dt_I <- `dt_I*`}] [scope_enter dt_I] @@ -33352,23 +28728,11 @@ DecD funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* [visit_exp `dt*`] [visit_id dt*] not free [visit_id dt*] no dims -[visit_exp `datatype*#16`] -[visit_id datatype*#16] [visit_exp []] -[visit_exp `elemtype*#16`] -[visit_id elemtype*#16] [visit_exp []] -[visit_exp `localtype*#19`] -[visit_id localtype*#19] [visit_exp []] -[visit_exp `resulttype*#27`] -[visit_id resulttype*#27] [visit_exp []] -[visit_exp `resulttype?#24`] -[visit_id resulttype?#24] [visit_exp ?()] -[visit_exp `funcidx*#53`] -[visit_id funcidx*#53] [visit_exp x*{x <- `x*`}] [scope_enter x] [visit_exp x] @@ -33378,7 +28742,7 @@ DecD funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* [visit_exp `x*`] [visit_id x*] no dims [visit_id x*] -[visit_exp (x*{x <- `x*`} = $funcidx_nonfuncs(`%%%%`_nonfuncs{`global*#107`, `mem*#107`, `table*#107`, `elem*#107`}(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})))] +[visit_exp (x*{x <- `x*`} = $funcidx_nonfuncs(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})))] [visit_exp x*{x <- `x*`}] [scope_enter x] [visit_exp x] @@ -33388,16 +28752,8 @@ DecD funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* [visit_exp `x*`] [visit_id x*] not free [visit_id x*] no dims -[visit_exp $funcidx_nonfuncs(`%%%%`_nonfuncs{`global*#107`, `mem*#107`, `table*#107`, `elem*#107`}(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}))] -[visit_exp `%%%%`_nonfuncs{`global*#107`, `mem*#107`, `table*#107`, `elem*#107`}(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})] -[visit_exp `global*#107`] -[visit_id global*#107] -[visit_exp `mem*#107`] -[visit_id mem*#107] -[visit_exp `table*#107`] -[visit_id table*#107] -[visit_exp `elem*#107`] -[visit_id elem*#107] +[visit_exp $funcidx_nonfuncs(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}))] +[visit_exp `%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})] [visit_exp (global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})] [visit_exp global*{global <- `global*`}] [scope_enter global] @@ -33540,7 +28896,7 @@ DecD funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* [visit_id C] [visit_exp []] [visit_exp []] -[check_dims] C datatype*#17 deftype*#70 deftype*#71 dt dt_1 elemtype*#17 funcidx*#54 globaltype*#18 localtype*#20 memtype*#32 resulttype*#28 resulttype?#25 subtype*#16 tabletype*#25 tagtype*#17 type type_1 +[check_dims] C dt dt_1 type type_1 [visit_exp C] [visit_id C] [visit_exp [type_1] ++ type*{type <- `type*`}] @@ -33589,13 +28945,11 @@ DecD funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* [visit_exp `dt_1*`] [visit_id dt_1*] not free [visit_id dt_1*] no dims -[visit_exp (C +++ {`TYPES`{`deftype*#70`} dt_1*{dt_1 <- `dt_1*`}, `RECS`{`subtype*#16`} [], `TAGS`{`tagtype*#17`} [], `GLOBALS`{`globaltype*#18`} [], `MEMS`{`memtype*#32`} [], `TABLES`{`tabletype*#25`} [], `FUNCS`{`deftype*#71`} [], `DATAS`{`datatype*#17`} [], `ELEMS`{`elemtype*#17`} [], `LOCALS`{`localtype*#20`} [], `LABELS`{`resulttype*#28`} [], `RETURN`{`resulttype?#25`} ?(), `REFS`{`funcidx*#54`} []}, type*{type <- `type*`}, dt*{dt <- `dt*`})] -[visit_exp C +++ {`TYPES`{`deftype*#70`} dt_1*{dt_1 <- `dt_1*`}, `RECS`{`subtype*#16`} [], `TAGS`{`tagtype*#17`} [], `GLOBALS`{`globaltype*#18`} [], `MEMS`{`memtype*#32`} [], `TABLES`{`tabletype*#25`} [], `FUNCS`{`deftype*#71`} [], `DATAS`{`datatype*#17`} [], `ELEMS`{`elemtype*#17`} [], `LOCALS`{`localtype*#20`} [], `LABELS`{`resulttype*#28`} [], `RETURN`{`resulttype?#25`} ?(), `REFS`{`funcidx*#54`} []}] +[visit_exp (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*`})] +[visit_exp C +++ {`TYPES` dt_1*{dt_1 <- `dt_1*`}, `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}] [visit_exp C] [visit_id C] not free -[visit_exp {`TYPES`{`deftype*#70`} dt_1*{dt_1 <- `dt_1*`}, `RECS`{`subtype*#16`} [], `TAGS`{`tagtype*#17`} [], `GLOBALS`{`globaltype*#18`} [], `MEMS`{`memtype*#32`} [], `TABLES`{`tabletype*#25`} [], `FUNCS`{`deftype*#71`} [], `DATAS`{`datatype*#17`} [], `ELEMS`{`elemtype*#17`} [], `LOCALS`{`localtype*#20`} [], `LABELS`{`resulttype*#28`} [], `RETURN`{`resulttype?#25`} ?(), `REFS`{`funcidx*#54`} []}] -[visit_exp `deftype*#70`] -[visit_id deftype*#70] +[visit_exp {`TYPES` dt_1*{dt_1 <- `dt_1*`}, `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}] [visit_exp dt_1*{dt_1 <- `dt_1*`}] [scope_enter dt_1] [visit_exp dt_1] @@ -33605,41 +28959,17 @@ DecD funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* [visit_exp `dt_1*`] [visit_id dt_1*] not free [visit_id dt_1*] no dims -[visit_exp `subtype*#16`] -[visit_id subtype*#16] [visit_exp []] -[visit_exp `tagtype*#17`] -[visit_id tagtype*#17] [visit_exp []] -[visit_exp `globaltype*#18`] -[visit_id globaltype*#18] [visit_exp []] -[visit_exp `memtype*#32`] -[visit_id memtype*#32] [visit_exp []] -[visit_exp `tabletype*#25`] -[visit_id tabletype*#25] [visit_exp []] -[visit_exp `deftype*#71`] -[visit_id deftype*#71] [visit_exp []] -[visit_exp `datatype*#17`] -[visit_id datatype*#17] [visit_exp []] -[visit_exp `elemtype*#17`] -[visit_id elemtype*#17] [visit_exp []] -[visit_exp `localtype*#20`] -[visit_id localtype*#20] [visit_exp []] -[visit_exp `resulttype*#28`] -[visit_id resulttype*#28] [visit_exp []] -[visit_exp `resulttype?#25`] -[visit_id resulttype?#25] [visit_exp ?()] -[visit_exp `funcidx*#54`] -[visit_id funcidx*#54] [visit_exp []] [visit_exp type*{type <- `type*`}] [scope_enter type] @@ -33664,7 +28994,7 @@ DecD funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* [visit_id C] [visit_exp []] [visit_exp []] -[check_dims] C datatype*#18 deftype*#72 deftype*#73 elemtype*#18 funcidx*#55 global global_1 globaltype*#19 gt gt_1 localtype*#21 memtype*#33 resulttype*#29 resulttype?#26 subtype*#17 tabletype*#26 tagtype*#18 +[check_dims] C global global_1 gt gt_1 [visit_exp C] [visit_id C] [visit_exp [global_1] ++ global*{global <- `global*`}] @@ -33700,51 +29030,25 @@ DecD funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* [visit_id global_1] not free [visit_exp gt_1] [visit_id gt_1] not free -[visit_exp (C +++ {`TYPES`{`deftype*#72`} [], `RECS`{`subtype*#17`} [], `TAGS`{`tagtype*#18`} [], `GLOBALS`{`globaltype*#19`} [gt_1], `MEMS`{`memtype*#33`} [], `TABLES`{`tabletype*#26`} [], `FUNCS`{`deftype*#73`} [], `DATAS`{`datatype*#18`} [], `ELEMS`{`elemtype*#18`} [], `LOCALS`{`localtype*#21`} [], `LABELS`{`resulttype*#29`} [], `RETURN`{`resulttype?#26`} ?(), `REFS`{`funcidx*#55`} []}, global*{global <- `global*`}, gt*{gt <- `gt*`})] -[visit_exp C +++ {`TYPES`{`deftype*#72`} [], `RECS`{`subtype*#17`} [], `TAGS`{`tagtype*#18`} [], `GLOBALS`{`globaltype*#19`} [gt_1], `MEMS`{`memtype*#33`} [], `TABLES`{`tabletype*#26`} [], `FUNCS`{`deftype*#73`} [], `DATAS`{`datatype*#18`} [], `ELEMS`{`elemtype*#18`} [], `LOCALS`{`localtype*#21`} [], `LABELS`{`resulttype*#29`} [], `RETURN`{`resulttype?#26`} ?(), `REFS`{`funcidx*#55`} []}] +[visit_exp (C +++ {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [gt_1], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}, global*{global <- `global*`}, gt*{gt <- `gt*`})] +[visit_exp C +++ {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [gt_1], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}] [visit_exp C] [visit_id C] not free -[visit_exp {`TYPES`{`deftype*#72`} [], `RECS`{`subtype*#17`} [], `TAGS`{`tagtype*#18`} [], `GLOBALS`{`globaltype*#19`} [gt_1], `MEMS`{`memtype*#33`} [], `TABLES`{`tabletype*#26`} [], `FUNCS`{`deftype*#73`} [], `DATAS`{`datatype*#18`} [], `ELEMS`{`elemtype*#18`} [], `LOCALS`{`localtype*#21`} [], `LABELS`{`resulttype*#29`} [], `RETURN`{`resulttype?#26`} ?(), `REFS`{`funcidx*#55`} []}] -[visit_exp `deftype*#72`] -[visit_id deftype*#72] +[visit_exp {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [gt_1], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}] [visit_exp []] -[visit_exp `subtype*#17`] -[visit_id subtype*#17] [visit_exp []] -[visit_exp `tagtype*#18`] -[visit_id tagtype*#18] [visit_exp []] -[visit_exp `globaltype*#19`] -[visit_id globaltype*#19] [visit_exp [gt_1]] [visit_exp gt_1] [visit_id gt_1] not free -[visit_exp `memtype*#33`] -[visit_id memtype*#33] [visit_exp []] -[visit_exp `tabletype*#26`] -[visit_id tabletype*#26] [visit_exp []] -[visit_exp `deftype*#73`] -[visit_id deftype*#73] [visit_exp []] -[visit_exp `datatype*#18`] -[visit_id datatype*#18] [visit_exp []] -[visit_exp `elemtype*#18`] -[visit_id elemtype*#18] [visit_exp []] -[visit_exp `localtype*#21`] -[visit_id localtype*#21] [visit_exp []] -[visit_exp `resulttype*#29`] -[visit_id resulttype*#29] [visit_exp []] -[visit_exp `resulttype?#26`] -[visit_id resulttype?#26] [visit_exp ?()] -[visit_exp `funcidx*#55`] -[visit_id funcidx*#55] [visit_exp []] [visit_exp global*{global <- `global*`}] [scope_enter global] @@ -33790,29 +29094,27 @@ DecD relaxed4(relaxed4 : relaxed4, syntax X, X : X, X : X, X : X, X : X) : X [visit_id X] not free [visit_id X] not free [visit_id X] not free -[check_dims] X_1 X_2 i i#9672 +[check_dims] X_1 X_2 i [visit_exp i] [visit_id i] [visit_exp X_1] [visit_id X_1] [visit_exp X_2] [visit_id X_2] -[visit_exp [X_1 X_2][i!`%`_relaxed2{i#9672}.0]] +[visit_exp [X_1 X_2][i!`%`_relaxed2.0]] [visit_exp [X_1 X_2]] [visit_exp X_1] [visit_id X_1] not free [visit_exp X_2] [visit_id X_2] not free -[visit_exp i!`%`_relaxed2{i#9672}.0] -[visit_exp i!`%`_relaxed2{i#9672}] +[visit_exp i!`%`_relaxed2.0] +[visit_exp i!`%`_relaxed2] [visit_exp i] [visit_id i] not free -[visit_exp i#9672] -[visit_id i#9672] [visit_exp $ND] => ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec - def $relaxed2{i : relaxed2, syntax X, X_1 : X, X_2 : X, i#9672 : nat}(i, syntax X, X_1, X_2) = [X_1 X_2][i!`%`_relaxed2{i#9672}.0] + def $relaxed2{i : relaxed2, syntax X, X_1 : X, X_2 : X}(i, syntax X, X_1, X_2) = [X_1 X_2][i!`%`_relaxed2.0] -- if $ND [check_dims] X_1 X_2 i [visit_exp i] @@ -33832,7 +29134,7 @@ DecD relaxed4(relaxed4 : relaxed4, syntax X, X : X, X : 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) = [X_1 X_2][0] -- otherwise -[check_dims] X_1 X_2 X_3 X_4 i i#9686 +[check_dims] X_1 X_2 X_3 X_4 i [visit_exp i] [visit_id i] [visit_exp X_1] @@ -33843,7 +29145,7 @@ DecD relaxed4(relaxed4 : relaxed4, syntax X, X : X, X : X, X : X, X : X) : X [visit_id X_3] [visit_exp X_4] [visit_id X_4] -[visit_exp [X_1 X_2 X_3 X_4][i!`%`_relaxed4{i#9686}.0]] +[visit_exp [X_1 X_2 X_3 X_4][i!`%`_relaxed4.0]] [visit_exp [X_1 X_2 X_3 X_4]] [visit_exp X_1] [visit_id X_1] not free @@ -33853,16 +29155,14 @@ DecD relaxed4(relaxed4 : relaxed4, syntax X, X : X, X : X, X : X, X : X) : X [visit_id X_3] not free [visit_exp X_4] [visit_id X_4] not free -[visit_exp i!`%`_relaxed4{i#9686}.0] -[visit_exp i!`%`_relaxed4{i#9686}] +[visit_exp i!`%`_relaxed4.0] +[visit_exp i!`%`_relaxed4] [visit_exp i] [visit_id i] not free -[visit_exp i#9686] -[visit_id i#9686] [visit_exp $ND] => ;; ../../../../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#9686 : nat}(i, syntax X, X_1, X_2, X_3, X_4) = [X_1 X_2 X_3 X_4][i!`%`_relaxed4{i#9686}.0] + 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) = [X_1 X_2 X_3 X_4][i!`%`_relaxed4.0] -- if $ND [check_dims] X_1 X_2 X_3 X_4 i [visit_exp i] @@ -34174,18 +29474,16 @@ DecD zero(lanetype : lanetype) : lane_(lanetype) [visit_id lanetype] not free [visit_exp lanetype] [visit_id lanetype] not free -[check_dims] Jnn i#9712 +[check_dims] Jnn [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] -[visit_exp `%`_lane_{i#9712}(0)] -[visit_exp i#9712] -[visit_id i#9712] +[visit_exp `%`_lane_(0)] [visit_exp (0)] [visit_exp 0] => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $zero{Jnn : Jnn, i#9712 : nat}((Jnn : Jnn <: lanetype)) = `%`_lane_{i#9712}(0) + def $zero{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = `%`_lane_(0) [check_dims] Fnn [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] @@ -34756,30 +30054,26 @@ DecD ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 [visit_id iN] not free [visit_exp N] [visit_id N] not free -[check_dims] N i#9726 i#9728 i_1 +[check_dims] N i_1 [visit_exp N] [visit_id N] [visit_exp i_1] [visit_id i_1] -[visit_exp `%`_iN{i#9728}((((((2 ^ N) : nat <:> int) - (i_1!`%`_iN{i#9726}.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))] -[visit_exp i#9728] -[visit_id i#9728] -[visit_exp ((((((2 ^ N) : nat <:> int) - (i_1!`%`_iN{i#9726}.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))] -[visit_exp (((((2 ^ N) : nat <:> int) - (i_1!`%`_iN{i#9726}.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)] -[visit_exp ((((2 ^ N) : nat <:> int) - (i_1!`%`_iN{i#9726}.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int))] -[visit_exp (((2 ^ N) : nat <:> int) - (i_1!`%`_iN{i#9726}.0 : nat <:> int))] +[visit_exp `%`_iN((((((2 ^ N) : nat <:> int) - (i_1!`%`_iN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))] +[visit_exp ((((((2 ^ N) : nat <:> int) - (i_1!`%`_iN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))] +[visit_exp (((((2 ^ N) : nat <:> int) - (i_1!`%`_iN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)] +[visit_exp ((((2 ^ N) : nat <:> int) - (i_1!`%`_iN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int))] +[visit_exp (((2 ^ N) : nat <:> int) - (i_1!`%`_iN.0 : nat <:> int))] [visit_exp ((2 ^ N) : nat <:> int)] [visit_exp (2 ^ N)] [visit_exp 2] [visit_exp N] [visit_id N] not free -[visit_exp (i_1!`%`_iN{i#9726}.0 : nat <:> int)] -[visit_exp i_1!`%`_iN{i#9726}.0] -[visit_exp i_1!`%`_iN{i#9726}] +[visit_exp (i_1!`%`_iN.0 : nat <:> int)] +[visit_exp i_1!`%`_iN.0] +[visit_exp i_1!`%`_iN] [visit_exp i_1] [visit_id i_1] not free -[visit_exp i#9726] -[visit_id i#9726] [visit_exp ((2 ^ N) : nat <:> int)] [visit_exp (2 ^ N)] [visit_exp 2] @@ -34787,30 +30081,28 @@ DecD ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 [visit_id N] not free => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ineg_{N : N, i_1 : iN(N), i#9728 : nat, i#9726 : nat}(N, i_1) = `%`_iN{i#9728}((((((2 ^ N) : nat <:> int) - (i_1!`%`_iN{i#9726}.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) -[check_dims] N i#9736 i_1 + 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)) +[check_dims] N i_1 [visit_exp N] [visit_id N] [visit_exp i_1] [visit_id i_1] [visit_exp i_1] [visit_id i_1] not free -[visit_exp ($signed_(N, i_1!`%`_iN{i#9736}.0) >= (0 : nat <:> int))] -[visit_exp $signed_(N, i_1!`%`_iN{i#9736}.0)] +[visit_exp ($signed_(N, i_1!`%`_iN.0) >= (0 : nat <:> int))] +[visit_exp $signed_(N, i_1!`%`_iN.0)] [visit_exp N] [visit_id N] not free -[visit_exp i_1!`%`_iN{i#9736}.0] -[visit_exp i_1!`%`_iN{i#9736}] +[visit_exp i_1!`%`_iN.0] +[visit_exp i_1!`%`_iN] [visit_exp i_1] [visit_id i_1] not free -[visit_exp i#9736] -[visit_id i#9736] [visit_exp (0 : nat <:> int)] [visit_exp 0] => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iabs_{N : N, i_1 : iN(N), i#9736 : nat}(N, i_1) = i_1 - -- if ($signed_(N, i_1!`%`_iN{i#9736}.0) >= (0 : nat <:> int)) + def $iabs_{N : N, i_1 : iN(N)}(N, i_1) = i_1 + -- if ($signed_(N, i_1!`%`_iN.0) >= (0 : nat <:> int)) [check_dims] N i_1 [visit_exp N] [visit_id N] @@ -34825,7 +30117,7 @@ DecD ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iabs_{N : N, i_1 : iN(N)}(N, i_1) = $ineg_(N, i_1) -- otherwise -[check_dims] M N i i#9774 i#9776 +[check_dims] M N i [visit_exp N] [visit_id N] [visit_exp M] @@ -34834,25 +30126,21 @@ DecD ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 [visit_exp ()] [visit_exp i] [visit_id i] -[visit_exp `%`_iN{i#9776}((i!`%`_iN{i#9774}.0 \ (2 ^ M)))] -[visit_exp i#9776] -[visit_id i#9776] -[visit_exp ((i!`%`_iN{i#9774}.0 \ (2 ^ M)))] -[visit_exp (i!`%`_iN{i#9774}.0 \ (2 ^ M))] -[visit_exp i!`%`_iN{i#9774}.0] -[visit_exp i!`%`_iN{i#9774}] +[visit_exp `%`_iN((i!`%`_iN.0 \ (2 ^ M)))] +[visit_exp ((i!`%`_iN.0 \ (2 ^ M)))] +[visit_exp (i!`%`_iN.0 \ (2 ^ M))] +[visit_exp i!`%`_iN.0] +[visit_exp i!`%`_iN] [visit_exp i] [visit_id i] not free -[visit_exp i#9774] -[visit_id i#9774] [visit_exp (2 ^ M)] [visit_exp 2] [visit_exp M] [visit_id M] not free => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iextend_{N : N, M : M, i : iN(N), i#9776 : nat, i#9774 : nat}(N, M, `U`_sx, i) = `%`_iN{i#9776}((i!`%`_iN{i#9774}.0 \ (2 ^ M))) -[check_dims] M N i i#9790 i#9792 + def $iextend_{N : N, M : M, i : iN(N)}(N, M, `U`_sx, i) = `%`_iN((i!`%`_iN.0 \ (2 ^ M))) +[check_dims] M N i [visit_exp N] [visit_id N] [visit_exp M] @@ -34861,95 +30149,79 @@ DecD ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 [visit_exp ()] [visit_exp i] [visit_id i] -[visit_exp `%`_iN{i#9792}($inv_signed_(N, $signed_(M, (i!`%`_iN{i#9790}.0 \ (2 ^ M)))))] -[visit_exp i#9792] -[visit_id i#9792] -[visit_exp ($inv_signed_(N, $signed_(M, (i!`%`_iN{i#9790}.0 \ (2 ^ M)))))] -[visit_exp $inv_signed_(N, $signed_(M, (i!`%`_iN{i#9790}.0 \ (2 ^ M))))] +[visit_exp `%`_iN($inv_signed_(N, $signed_(M, (i!`%`_iN.0 \ (2 ^ M)))))] +[visit_exp ($inv_signed_(N, $signed_(M, (i!`%`_iN.0 \ (2 ^ M)))))] +[visit_exp $inv_signed_(N, $signed_(M, (i!`%`_iN.0 \ (2 ^ M))))] [visit_exp N] [visit_id N] not free -[visit_exp $signed_(M, (i!`%`_iN{i#9790}.0 \ (2 ^ M)))] +[visit_exp $signed_(M, (i!`%`_iN.0 \ (2 ^ M)))] [visit_exp M] [visit_id M] not free -[visit_exp (i!`%`_iN{i#9790}.0 \ (2 ^ M))] -[visit_exp i!`%`_iN{i#9790}.0] -[visit_exp i!`%`_iN{i#9790}] +[visit_exp (i!`%`_iN.0 \ (2 ^ M))] +[visit_exp i!`%`_iN.0] +[visit_exp i!`%`_iN] [visit_exp i] [visit_id i] not free -[visit_exp i#9790] -[visit_id i#9790] [visit_exp (2 ^ M)] [visit_exp 2] [visit_exp M] [visit_id M] not free => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iextend_{N : N, M : M, i : iN(N), i#9792 : nat, i#9790 : nat}(N, M, `S`_sx, i) = `%`_iN{i#9792}($inv_signed_(N, $signed_(M, (i!`%`_iN{i#9790}.0 \ (2 ^ M))))) -[check_dims] N i#9812 i#9814 i#9816 i_1 i_2 + 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))))) +[check_dims] N i_1 i_2 [visit_exp N] [visit_id N] [visit_exp i_1] [visit_id i_1] [visit_exp i_2] [visit_id i_2] -[visit_exp `%`_iN{i#9816}(((i_1!`%`_iN{i#9812}.0 + i_2!`%`_iN{i#9814}.0) \ (2 ^ N)))] -[visit_exp i#9816] -[visit_id i#9816] -[visit_exp (((i_1!`%`_iN{i#9812}.0 + i_2!`%`_iN{i#9814}.0) \ (2 ^ N)))] -[visit_exp ((i_1!`%`_iN{i#9812}.0 + i_2!`%`_iN{i#9814}.0) \ (2 ^ N))] -[visit_exp (i_1!`%`_iN{i#9812}.0 + i_2!`%`_iN{i#9814}.0)] -[visit_exp i_1!`%`_iN{i#9812}.0] -[visit_exp i_1!`%`_iN{i#9812}] +[visit_exp `%`_iN(((i_1!`%`_iN.0 + i_2!`%`_iN.0) \ (2 ^ N)))] +[visit_exp (((i_1!`%`_iN.0 + i_2!`%`_iN.0) \ (2 ^ N)))] +[visit_exp ((i_1!`%`_iN.0 + i_2!`%`_iN.0) \ (2 ^ N))] +[visit_exp (i_1!`%`_iN.0 + i_2!`%`_iN.0)] +[visit_exp i_1!`%`_iN.0] +[visit_exp i_1!`%`_iN] [visit_exp i_1] [visit_id i_1] not free -[visit_exp i#9812] -[visit_id i#9812] -[visit_exp i_2!`%`_iN{i#9814}.0] -[visit_exp i_2!`%`_iN{i#9814}] +[visit_exp i_2!`%`_iN.0] +[visit_exp i_2!`%`_iN] [visit_exp i_2] [visit_id i_2] not free -[visit_exp i#9814] -[visit_id i#9814] [visit_exp (2 ^ N)] [visit_exp 2] [visit_exp N] [visit_id N] not free => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iadd_{N : N, i_1 : iN(N), i_2 : iN(N), i#9816 : nat, i#9812 : nat, i#9814 : nat}(N, i_1, i_2) = `%`_iN{i#9816}(((i_1!`%`_iN{i#9812}.0 + i_2!`%`_iN{i#9814}.0) \ (2 ^ N))) -[check_dims] N i#9836 i#9838 i#9840 i_1 i_2 + 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))) +[check_dims] N i_1 i_2 [visit_exp N] [visit_id N] [visit_exp i_1] [visit_id i_1] [visit_exp i_2] [visit_id i_2] -[visit_exp `%`_iN{i#9840}(((((((2 ^ N) + i_1!`%`_iN{i#9836}.0) : nat <:> int) - (i_2!`%`_iN{i#9838}.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))] -[visit_exp i#9840] -[visit_id i#9840] -[visit_exp (((((((2 ^ N) + i_1!`%`_iN{i#9836}.0) : nat <:> int) - (i_2!`%`_iN{i#9838}.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))] -[visit_exp ((((((2 ^ N) + i_1!`%`_iN{i#9836}.0) : nat <:> int) - (i_2!`%`_iN{i#9838}.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)] -[visit_exp (((((2 ^ N) + i_1!`%`_iN{i#9836}.0) : nat <:> int) - (i_2!`%`_iN{i#9838}.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int))] -[visit_exp ((((2 ^ N) + i_1!`%`_iN{i#9836}.0) : nat <:> int) - (i_2!`%`_iN{i#9838}.0 : nat <:> int))] -[visit_exp (((2 ^ N) + i_1!`%`_iN{i#9836}.0) : nat <:> int)] -[visit_exp ((2 ^ N) + i_1!`%`_iN{i#9836}.0)] +[visit_exp `%`_iN(((((((2 ^ N) + i_1!`%`_iN.0) : nat <:> int) - (i_2!`%`_iN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))] +[visit_exp (((((((2 ^ N) + i_1!`%`_iN.0) : nat <:> int) - (i_2!`%`_iN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))] +[visit_exp ((((((2 ^ N) + i_1!`%`_iN.0) : nat <:> int) - (i_2!`%`_iN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)] +[visit_exp (((((2 ^ N) + i_1!`%`_iN.0) : nat <:> int) - (i_2!`%`_iN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int))] +[visit_exp ((((2 ^ N) + i_1!`%`_iN.0) : nat <:> int) - (i_2!`%`_iN.0 : nat <:> int))] +[visit_exp (((2 ^ N) + i_1!`%`_iN.0) : nat <:> int)] +[visit_exp ((2 ^ N) + i_1!`%`_iN.0)] [visit_exp (2 ^ N)] [visit_exp 2] [visit_exp N] [visit_id N] not free -[visit_exp i_1!`%`_iN{i#9836}.0] -[visit_exp i_1!`%`_iN{i#9836}] +[visit_exp i_1!`%`_iN.0] +[visit_exp i_1!`%`_iN] [visit_exp i_1] [visit_id i_1] not free -[visit_exp i#9836] -[visit_id i#9836] -[visit_exp (i_2!`%`_iN{i#9838}.0 : nat <:> int)] -[visit_exp i_2!`%`_iN{i#9838}.0] -[visit_exp i_2!`%`_iN{i#9838}] +[visit_exp (i_2!`%`_iN.0 : nat <:> int)] +[visit_exp i_2!`%`_iN.0] +[visit_exp i_2!`%`_iN] [visit_exp i_2] [visit_id i_2] not free -[visit_exp i#9838] -[visit_id i#9838] [visit_exp ((2 ^ N) : nat <:> int)] [visit_exp (2 ^ N)] [visit_exp 2] @@ -34957,56 +30229,48 @@ DecD ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 [visit_id N] not free => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $isub_{N : N, i_1 : iN(N), i_2 : iN(N), i#9840 : nat, i#9836 : nat, i#9838 : nat}(N, i_1, i_2) = `%`_iN{i#9840}(((((((2 ^ N) + i_1!`%`_iN{i#9836}.0) : nat <:> int) - (i_2!`%`_iN{i#9838}.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) -[check_dims] N i#9860 i#9862 i#9864 i_1 i_2 + 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)) +[check_dims] N i_1 i_2 [visit_exp N] [visit_id N] [visit_exp i_1] [visit_id i_1] [visit_exp i_2] [visit_id i_2] -[visit_exp `%`_iN{i#9864}(((i_1!`%`_iN{i#9860}.0 * i_2!`%`_iN{i#9862}.0) \ (2 ^ N)))] -[visit_exp i#9864] -[visit_id i#9864] -[visit_exp (((i_1!`%`_iN{i#9860}.0 * i_2!`%`_iN{i#9862}.0) \ (2 ^ N)))] -[visit_exp ((i_1!`%`_iN{i#9860}.0 * i_2!`%`_iN{i#9862}.0) \ (2 ^ N))] -[visit_exp (i_1!`%`_iN{i#9860}.0 * i_2!`%`_iN{i#9862}.0)] -[visit_exp i_1!`%`_iN{i#9860}.0] -[visit_exp i_1!`%`_iN{i#9860}] +[visit_exp `%`_iN(((i_1!`%`_iN.0 * i_2!`%`_iN.0) \ (2 ^ N)))] +[visit_exp (((i_1!`%`_iN.0 * i_2!`%`_iN.0) \ (2 ^ N)))] +[visit_exp ((i_1!`%`_iN.0 * i_2!`%`_iN.0) \ (2 ^ N))] +[visit_exp (i_1!`%`_iN.0 * i_2!`%`_iN.0)] +[visit_exp i_1!`%`_iN.0] +[visit_exp i_1!`%`_iN] [visit_exp i_1] [visit_id i_1] not free -[visit_exp i#9860] -[visit_id i#9860] -[visit_exp i_2!`%`_iN{i#9862}.0] -[visit_exp i_2!`%`_iN{i#9862}] +[visit_exp i_2!`%`_iN.0] +[visit_exp i_2!`%`_iN] [visit_exp i_2] [visit_id i_2] not free -[visit_exp i#9862] -[visit_id i#9862] [visit_exp (2 ^ N)] [visit_exp 2] [visit_exp N] [visit_id N] not free => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $imul_{N : N, i_1 : iN(N), i_2 : iN(N), i#9864 : nat, i#9860 : nat, i#9862 : nat}(N, i_1, i_2) = `%`_iN{i#9864}(((i_1!`%`_iN{i#9860}.0 * i_2!`%`_iN{i#9862}.0) \ (2 ^ N))) -[check_dims] N i#9878 i_1 + 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))) +[check_dims] N i_1 [visit_exp N] [visit_id N] [visit_exp `U`_sx] [visit_exp ()] [visit_exp i_1] [visit_id i_1] -[visit_exp `%`_iN{i#9878}(0)] -[visit_exp i#9878] -[visit_id i#9878] +[visit_exp `%`_iN(0)] [visit_exp (0)] [visit_exp 0] [visit_exp ?()] => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : N, i_1 : iN(N), i#9878 : nat}(N, `U`_sx, i_1, `%`_iN{i#9878}(0)) = ?() -[check_dims] N i#9898 i#9900 i#9902 i_1 i_2 + def $idiv_{N : N, i_1 : iN(N)}(N, `U`_sx, i_1, `%`_iN(0)) = ?() +[check_dims] N i_1 i_2 [visit_exp N] [visit_id N] [visit_exp `U`_sx] @@ -35015,48 +30279,40 @@ DecD ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 [visit_id i_1] [visit_exp i_2] [visit_id i_2] -[visit_exp ?(`%`_iN{i#9902}(($truncz(((i_1!`%`_iN{i#9898}.0 : nat <:> rat) / (i_2!`%`_iN{i#9900}.0 : nat <:> rat))) : int <:> nat)))] -[visit_exp `%`_iN{i#9902}(($truncz(((i_1!`%`_iN{i#9898}.0 : nat <:> rat) / (i_2!`%`_iN{i#9900}.0 : nat <:> rat))) : int <:> nat))] -[visit_exp i#9902] -[visit_id i#9902] -[visit_exp (($truncz(((i_1!`%`_iN{i#9898}.0 : nat <:> rat) / (i_2!`%`_iN{i#9900}.0 : nat <:> rat))) : int <:> nat))] -[visit_exp ($truncz(((i_1!`%`_iN{i#9898}.0 : nat <:> rat) / (i_2!`%`_iN{i#9900}.0 : nat <:> rat))) : int <:> nat)] -[visit_exp $truncz(((i_1!`%`_iN{i#9898}.0 : nat <:> rat) / (i_2!`%`_iN{i#9900}.0 : nat <:> rat)))] -[visit_exp ((i_1!`%`_iN{i#9898}.0 : nat <:> rat) / (i_2!`%`_iN{i#9900}.0 : nat <:> rat))] -[visit_exp (i_1!`%`_iN{i#9898}.0 : nat <:> rat)] -[visit_exp i_1!`%`_iN{i#9898}.0] -[visit_exp i_1!`%`_iN{i#9898}] +[visit_exp ?(`%`_iN(($truncz(((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat))) : int <:> nat)))] +[visit_exp `%`_iN(($truncz(((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat))) : int <:> nat))] +[visit_exp (($truncz(((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat))) : int <:> nat))] +[visit_exp ($truncz(((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat))) : int <:> nat)] +[visit_exp $truncz(((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat)))] +[visit_exp ((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat))] +[visit_exp (i_1!`%`_iN.0 : nat <:> rat)] +[visit_exp i_1!`%`_iN.0] +[visit_exp i_1!`%`_iN] [visit_exp i_1] [visit_id i_1] not free -[visit_exp i#9898] -[visit_id i#9898] -[visit_exp (i_2!`%`_iN{i#9900}.0 : nat <:> rat)] -[visit_exp i_2!`%`_iN{i#9900}.0] -[visit_exp i_2!`%`_iN{i#9900}] +[visit_exp (i_2!`%`_iN.0 : nat <:> rat)] +[visit_exp i_2!`%`_iN.0] +[visit_exp i_2!`%`_iN] [visit_exp i_2] [visit_id i_2] not free -[visit_exp i#9900] -[visit_id i#9900] => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : N, i_1 : iN(N), i_2 : iN(N), i#9902 : nat, i#9898 : nat, i#9900 : nat}(N, `U`_sx, i_1, i_2) = ?(`%`_iN{i#9902}(($truncz(((i_1!`%`_iN{i#9898}.0 : nat <:> rat) / (i_2!`%`_iN{i#9900}.0 : nat <:> rat))) : int <:> nat))) -[check_dims] N i#9916 i_1 + 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))) +[check_dims] N i_1 [visit_exp N] [visit_id N] [visit_exp `S`_sx] [visit_exp ()] [visit_exp i_1] [visit_id i_1] -[visit_exp `%`_iN{i#9916}(0)] -[visit_exp i#9916] -[visit_id i#9916] +[visit_exp `%`_iN(0)] [visit_exp (0)] [visit_exp 0] [visit_exp ?()] => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : N, i_1 : iN(N), i#9916 : nat}(N, `S`_sx, i_1, `%`_iN{i#9916}(0)) = ?() -[check_dims] N i#9930 i#9932 i_1 i_2 + def $idiv_{N : N, i_1 : iN(N)}(N, `S`_sx, i_1, `%`_iN(0)) = ?() +[check_dims] N i_1 i_2 [visit_exp N] [visit_id N] [visit_exp `S`_sx] @@ -35066,28 +30322,24 @@ DecD ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 [visit_exp i_2] [visit_id i_2] [visit_exp ?()] -[visit_exp ((($signed_(N, i_1!`%`_iN{i#9930}.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN{i#9932}.0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat))] -[visit_exp (($signed_(N, i_1!`%`_iN{i#9930}.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN{i#9932}.0) : int <:> rat))] -[visit_exp ($signed_(N, i_1!`%`_iN{i#9930}.0) : int <:> rat)] -[visit_exp $signed_(N, i_1!`%`_iN{i#9930}.0)] +[visit_exp ((($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))] +[visit_exp (($signed_(N, i_1!`%`_iN.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN.0) : int <:> rat))] +[visit_exp ($signed_(N, i_1!`%`_iN.0) : int <:> rat)] +[visit_exp $signed_(N, i_1!`%`_iN.0)] [visit_exp N] [visit_id N] not free -[visit_exp i_1!`%`_iN{i#9930}.0] -[visit_exp i_1!`%`_iN{i#9930}] +[visit_exp i_1!`%`_iN.0] +[visit_exp i_1!`%`_iN] [visit_exp i_1] [visit_id i_1] not free -[visit_exp i#9930] -[visit_id i#9930] -[visit_exp ($signed_(N, i_2!`%`_iN{i#9932}.0) : int <:> rat)] -[visit_exp $signed_(N, i_2!`%`_iN{i#9932}.0)] +[visit_exp ($signed_(N, i_2!`%`_iN.0) : int <:> rat)] +[visit_exp $signed_(N, i_2!`%`_iN.0)] [visit_exp N] [visit_id N] not free -[visit_exp i_2!`%`_iN{i#9932}.0] -[visit_exp i_2!`%`_iN{i#9932}] +[visit_exp i_2!`%`_iN.0] +[visit_exp i_2!`%`_iN] [visit_exp i_2] [visit_id i_2] not free -[visit_exp i#9932] -[visit_id i#9932] [visit_exp ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)] [visit_exp (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] [visit_exp 2] @@ -35100,9 +30352,9 @@ DecD ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 [visit_exp 1] => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : N, i_1 : iN(N), i_2 : iN(N), i#9930 : nat, i#9932 : nat}(N, `S`_sx, i_1, i_2) = ?() - -- if ((($signed_(N, i_1!`%`_iN{i#9930}.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN{i#9932}.0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) -[check_dims] N i#9952 i#9954 i#9956 i_1 i_2 + 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)) +[check_dims] N i_1 i_2 [visit_exp N] [visit_id N] [visit_exp `S`_sx] @@ -35111,56 +30363,48 @@ DecD ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 [visit_id i_1] [visit_exp i_2] [visit_id i_2] -[visit_exp ?(`%`_iN{i#9956}($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_iN{i#9952}.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN{i#9954}.0) : int <:> rat))))))] -[visit_exp `%`_iN{i#9956}($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_iN{i#9952}.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN{i#9954}.0) : int <:> rat)))))] -[visit_exp i#9956] -[visit_id i#9956] -[visit_exp ($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_iN{i#9952}.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN{i#9954}.0) : int <:> rat)))))] -[visit_exp $inv_signed_(N, $truncz((($signed_(N, i_1!`%`_iN{i#9952}.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN{i#9954}.0) : int <:> rat))))] +[visit_exp ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_iN.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN.0) : int <:> rat))))))] +[visit_exp `%`_iN($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_iN.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN.0) : int <:> rat)))))] +[visit_exp ($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_iN.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN.0) : int <:> rat)))))] +[visit_exp $inv_signed_(N, $truncz((($signed_(N, i_1!`%`_iN.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN.0) : int <:> rat))))] [visit_exp N] [visit_id N] not free -[visit_exp $truncz((($signed_(N, i_1!`%`_iN{i#9952}.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN{i#9954}.0) : int <:> rat)))] -[visit_exp (($signed_(N, i_1!`%`_iN{i#9952}.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN{i#9954}.0) : int <:> rat))] -[visit_exp ($signed_(N, i_1!`%`_iN{i#9952}.0) : int <:> rat)] -[visit_exp $signed_(N, i_1!`%`_iN{i#9952}.0)] +[visit_exp $truncz((($signed_(N, i_1!`%`_iN.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN.0) : int <:> rat)))] +[visit_exp (($signed_(N, i_1!`%`_iN.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN.0) : int <:> rat))] +[visit_exp ($signed_(N, i_1!`%`_iN.0) : int <:> rat)] +[visit_exp $signed_(N, i_1!`%`_iN.0)] [visit_exp N] [visit_id N] not free -[visit_exp i_1!`%`_iN{i#9952}.0] -[visit_exp i_1!`%`_iN{i#9952}] +[visit_exp i_1!`%`_iN.0] +[visit_exp i_1!`%`_iN] [visit_exp i_1] [visit_id i_1] not free -[visit_exp i#9952] -[visit_id i#9952] -[visit_exp ($signed_(N, i_2!`%`_iN{i#9954}.0) : int <:> rat)] -[visit_exp $signed_(N, i_2!`%`_iN{i#9954}.0)] +[visit_exp ($signed_(N, i_2!`%`_iN.0) : int <:> rat)] +[visit_exp $signed_(N, i_2!`%`_iN.0)] [visit_exp N] [visit_id N] not free -[visit_exp i_2!`%`_iN{i#9954}.0] -[visit_exp i_2!`%`_iN{i#9954}] +[visit_exp i_2!`%`_iN.0] +[visit_exp i_2!`%`_iN] [visit_exp i_2] [visit_id i_2] not free -[visit_exp i#9954] -[visit_id i#9954] => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : N, i_1 : iN(N), i_2 : iN(N), i#9956 : nat, i#9952 : nat, i#9954 : nat}(N, `S`_sx, i_1, i_2) = ?(`%`_iN{i#9956}($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_iN{i#9952}.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN{i#9954}.0) : int <:> rat)))))) -[check_dims] N i#9970 i_1 + 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)))))) +[check_dims] N i_1 [visit_exp N] [visit_id N] [visit_exp `U`_sx] [visit_exp ()] [visit_exp i_1] [visit_id i_1] -[visit_exp `%`_iN{i#9970}(0)] -[visit_exp i#9970] -[visit_id i#9970] +[visit_exp `%`_iN(0)] [visit_exp (0)] [visit_exp 0] [visit_exp ?()] => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{N : N, i_1 : iN(N), i#9970 : nat}(N, `U`_sx, i_1, `%`_iN{i#9970}(0)) = ?() -[check_dims] N i#9990 i#9992 i#9994 i#9996 i#9998 i_1 i_2 + def $irem_{N : N, i_1 : iN(N)}(N, `U`_sx, i_1, `%`_iN(0)) = ?() +[check_dims] N i_1 i_2 [visit_exp N] [visit_id N] [visit_exp `U`_sx] @@ -35169,65 +30413,53 @@ DecD ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 [visit_id i_1] [visit_exp i_2] [visit_id i_2] -[visit_exp ?(`%`_iN{i#9998}((((i_1!`%`_iN{i#9996}.0 : nat <:> int) - ((i_2!`%`_iN{i#9994}.0 * ($truncz(((i_1!`%`_iN{i#9990}.0 : nat <:> rat) / (i_2!`%`_iN{i#9992}.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat)))] -[visit_exp `%`_iN{i#9998}((((i_1!`%`_iN{i#9996}.0 : nat <:> int) - ((i_2!`%`_iN{i#9994}.0 * ($truncz(((i_1!`%`_iN{i#9990}.0 : nat <:> rat) / (i_2!`%`_iN{i#9992}.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))] -[visit_exp i#9998] -[visit_id i#9998] -[visit_exp ((((i_1!`%`_iN{i#9996}.0 : nat <:> int) - ((i_2!`%`_iN{i#9994}.0 * ($truncz(((i_1!`%`_iN{i#9990}.0 : nat <:> rat) / (i_2!`%`_iN{i#9992}.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))] -[visit_exp (((i_1!`%`_iN{i#9996}.0 : nat <:> int) - ((i_2!`%`_iN{i#9994}.0 * ($truncz(((i_1!`%`_iN{i#9990}.0 : nat <:> rat) / (i_2!`%`_iN{i#9992}.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat)] -[visit_exp ((i_1!`%`_iN{i#9996}.0 : nat <:> int) - ((i_2!`%`_iN{i#9994}.0 * ($truncz(((i_1!`%`_iN{i#9990}.0 : nat <:> rat) / (i_2!`%`_iN{i#9992}.0 : nat <:> rat))) : int <:> nat)) : nat <:> int))] -[visit_exp (i_1!`%`_iN{i#9996}.0 : nat <:> int)] -[visit_exp i_1!`%`_iN{i#9996}.0] -[visit_exp i_1!`%`_iN{i#9996}] +[visit_exp ?(`%`_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)))] +[visit_exp `%`_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))] +[visit_exp ((((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))] +[visit_exp (((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)] +[visit_exp ((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))] +[visit_exp (i_1!`%`_iN.0 : nat <:> int)] +[visit_exp i_1!`%`_iN.0] +[visit_exp i_1!`%`_iN] [visit_exp i_1] [visit_id i_1] not free -[visit_exp i#9996] -[visit_id i#9996] -[visit_exp ((i_2!`%`_iN{i#9994}.0 * ($truncz(((i_1!`%`_iN{i#9990}.0 : nat <:> rat) / (i_2!`%`_iN{i#9992}.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)] -[visit_exp (i_2!`%`_iN{i#9994}.0 * ($truncz(((i_1!`%`_iN{i#9990}.0 : nat <:> rat) / (i_2!`%`_iN{i#9992}.0 : nat <:> rat))) : int <:> nat))] -[visit_exp i_2!`%`_iN{i#9994}.0] -[visit_exp i_2!`%`_iN{i#9994}] +[visit_exp ((i_2!`%`_iN.0 * ($truncz(((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)] +[visit_exp (i_2!`%`_iN.0 * ($truncz(((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat))) : int <:> nat))] +[visit_exp i_2!`%`_iN.0] +[visit_exp i_2!`%`_iN] [visit_exp i_2] [visit_id i_2] not free -[visit_exp i#9994] -[visit_id i#9994] -[visit_exp ($truncz(((i_1!`%`_iN{i#9990}.0 : nat <:> rat) / (i_2!`%`_iN{i#9992}.0 : nat <:> rat))) : int <:> nat)] -[visit_exp $truncz(((i_1!`%`_iN{i#9990}.0 : nat <:> rat) / (i_2!`%`_iN{i#9992}.0 : nat <:> rat)))] -[visit_exp ((i_1!`%`_iN{i#9990}.0 : nat <:> rat) / (i_2!`%`_iN{i#9992}.0 : nat <:> rat))] -[visit_exp (i_1!`%`_iN{i#9990}.0 : nat <:> rat)] -[visit_exp i_1!`%`_iN{i#9990}.0] -[visit_exp i_1!`%`_iN{i#9990}] +[visit_exp ($truncz(((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat))) : int <:> nat)] +[visit_exp $truncz(((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat)))] +[visit_exp ((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat))] +[visit_exp (i_1!`%`_iN.0 : nat <:> rat)] +[visit_exp i_1!`%`_iN.0] +[visit_exp i_1!`%`_iN] [visit_exp i_1] [visit_id i_1] not free -[visit_exp i#9990] -[visit_id i#9990] -[visit_exp (i_2!`%`_iN{i#9992}.0 : nat <:> rat)] -[visit_exp i_2!`%`_iN{i#9992}.0] -[visit_exp i_2!`%`_iN{i#9992}] +[visit_exp (i_2!`%`_iN.0 : nat <:> rat)] +[visit_exp i_2!`%`_iN.0] +[visit_exp i_2!`%`_iN] [visit_exp i_2] [visit_id i_2] not free -[visit_exp i#9992] -[visit_id i#9992] => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{N : N, i_1 : iN(N), i_2 : iN(N), i#9998 : nat, i#9996 : nat, i#9994 : nat, i#9990 : nat, i#9992 : nat}(N, `U`_sx, i_1, i_2) = ?(`%`_iN{i#9998}((((i_1!`%`_iN{i#9996}.0 : nat <:> int) - ((i_2!`%`_iN{i#9994}.0 * ($truncz(((i_1!`%`_iN{i#9990}.0 : nat <:> rat) / (i_2!`%`_iN{i#9992}.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) -[check_dims] N i#10012 i_1 + 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))) +[check_dims] N i_1 [visit_exp N] [visit_id N] [visit_exp `S`_sx] [visit_exp ()] [visit_exp i_1] [visit_id i_1] -[visit_exp `%`_iN{i#10012}(0)] -[visit_exp i#10012] -[visit_id i#10012] +[visit_exp `%`_iN(0)] [visit_exp (0)] [visit_exp 0] [visit_exp ?()] => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{N : N, i_1 : iN(N), i#10012 : nat}(N, `S`_sx, i_1, `%`_iN{i#10012}(0)) = ?() -[check_dims] N i#10026 i#10028 i#10036 i_1 i_2 j_1 j_2 + def $irem_{N : N, i_1 : iN(N)}(N, `S`_sx, i_1, `%`_iN(0)) = ?() +[check_dims] N i_1 i_2 j_1 j_2 [visit_exp N] [visit_id N] [visit_exp `S`_sx] @@ -35236,10 +30468,8 @@ DecD ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 [visit_id i_1] [visit_exp i_2] [visit_id i_2] -[visit_exp ?(`%`_iN{i#10036}($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat))))))))] -[visit_exp `%`_iN{i#10036}($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))] -[visit_exp i#10036] -[visit_id i#10036] +[visit_exp ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat))))))))] +[visit_exp `%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))] [visit_exp ($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))] [visit_exp $inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat))))))] [visit_exp N] @@ -35258,36 +30488,32 @@ DecD ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 [visit_exp (j_2 : int <:> rat)] [visit_exp j_2] [visit_id j_2] not free -[visit_exp ((j_1 = $signed_(N, i_1!`%`_iN{i#10026}.0)) /\ (j_2 = $signed_(N, i_2!`%`_iN{i#10028}.0)))] -[visit_exp (j_1 = $signed_(N, i_1!`%`_iN{i#10026}.0))] +[visit_exp ((j_1 = $signed_(N, i_1!`%`_iN.0)) /\ (j_2 = $signed_(N, i_2!`%`_iN.0)))] +[visit_exp (j_1 = $signed_(N, i_1!`%`_iN.0))] [visit_exp j_1] [visit_id j_1] not free -[visit_exp $signed_(N, i_1!`%`_iN{i#10026}.0)] +[visit_exp $signed_(N, i_1!`%`_iN.0)] [visit_exp N] [visit_id N] not free -[visit_exp i_1!`%`_iN{i#10026}.0] -[visit_exp i_1!`%`_iN{i#10026}] +[visit_exp i_1!`%`_iN.0] +[visit_exp i_1!`%`_iN] [visit_exp i_1] [visit_id i_1] not free -[visit_exp i#10026] -[visit_id i#10026] -[visit_exp (j_2 = $signed_(N, i_2!`%`_iN{i#10028}.0))] +[visit_exp (j_2 = $signed_(N, i_2!`%`_iN.0))] [visit_exp j_2] [visit_id j_2] not free -[visit_exp $signed_(N, i_2!`%`_iN{i#10028}.0)] +[visit_exp $signed_(N, i_2!`%`_iN.0)] [visit_exp N] [visit_id N] not free -[visit_exp i_2!`%`_iN{i#10028}.0] -[visit_exp i_2!`%`_iN{i#10028}] +[visit_exp i_2!`%`_iN.0] +[visit_exp i_2!`%`_iN] [visit_exp i_2] [visit_id i_2] not free -[visit_exp i#10028] -[visit_id i#10028] => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{N : N, i_1 : iN(N), i_2 : iN(N), i#10036 : nat, j_1 : int, j_2 : int, i#10026 : nat, i#10028 : nat}(N, `S`_sx, i_1, i_2) = ?(`%`_iN{i#10036}($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) - -- if ((j_1 = $signed_(N, i_1!`%`_iN{i#10026}.0)) /\ (j_2 = $signed_(N, i_2!`%`_iN{i#10028}.0))) -[check_dims] N i#10050 i#10052 i_1 i_2 + 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))) +[check_dims] N i_1 i_2 [visit_exp N] [visit_id N] [visit_exp `U`_sx] @@ -35298,24 +30524,20 @@ DecD ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 [visit_id i_2] [visit_exp i_1] [visit_id i_1] not free -[visit_exp (i_1!`%`_iN{i#10050}.0 <= i_2!`%`_iN{i#10052}.0)] -[visit_exp i_1!`%`_iN{i#10050}.0] -[visit_exp i_1!`%`_iN{i#10050}] +[visit_exp (i_1!`%`_iN.0 <= i_2!`%`_iN.0)] +[visit_exp i_1!`%`_iN.0] +[visit_exp i_1!`%`_iN] [visit_exp i_1] [visit_id i_1] not free -[visit_exp i#10050] -[visit_id i#10050] -[visit_exp i_2!`%`_iN{i#10052}.0] -[visit_exp i_2!`%`_iN{i#10052}] +[visit_exp i_2!`%`_iN.0] +[visit_exp i_2!`%`_iN] [visit_exp i_2] [visit_id i_2] not free -[visit_exp i#10052] -[visit_id i#10052] => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $imin_{N : N, i_1 : iN(N), i_2 : iN(N), i#10050 : nat, i#10052 : nat}(N, `U`_sx, i_1, i_2) = i_1 - -- if (i_1!`%`_iN{i#10050}.0 <= i_2!`%`_iN{i#10052}.0) -[check_dims] N i#10072 i#10074 i_1 i_2 + 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) +[check_dims] N i_1 i_2 [visit_exp N] [visit_id N] [visit_exp `U`_sx] @@ -35326,24 +30548,20 @@ DecD ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 [visit_id i_2] [visit_exp i_2] [visit_id i_2] not free -[visit_exp (i_1!`%`_iN{i#10072}.0 > i_2!`%`_iN{i#10074}.0)] -[visit_exp i_1!`%`_iN{i#10072}.0] -[visit_exp i_1!`%`_iN{i#10072}] +[visit_exp (i_1!`%`_iN.0 > i_2!`%`_iN.0)] +[visit_exp i_1!`%`_iN.0] +[visit_exp i_1!`%`_iN] [visit_exp i_1] [visit_id i_1] not free -[visit_exp i#10072] -[visit_id i#10072] -[visit_exp i_2!`%`_iN{i#10074}.0] -[visit_exp i_2!`%`_iN{i#10074}] +[visit_exp i_2!`%`_iN.0] +[visit_exp i_2!`%`_iN] [visit_exp i_2] [visit_id i_2] not free -[visit_exp i#10074] -[visit_id i#10074] => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $imin_{N : N, i_1 : iN(N), i_2 : iN(N), i#10072 : nat, i#10074 : nat}(N, `U`_sx, i_1, i_2) = i_2 - -- if (i_1!`%`_iN{i#10072}.0 > i_2!`%`_iN{i#10074}.0) -[check_dims] N i#10094 i#10096 i_1 i_2 + 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) +[check_dims] N i_1 i_2 [visit_exp N] [visit_id N] [visit_exp `S`_sx] @@ -35354,29 +30572,25 @@ DecD ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 [visit_id i_2] [visit_exp i_1] [visit_id i_1] not free -[visit_exp ($signed_(N, i_1!`%`_iN{i#10094}.0) <= $signed_(N, i_2!`%`_iN{i#10096}.0))] -[visit_exp $signed_(N, i_1!`%`_iN{i#10094}.0)] +[visit_exp ($signed_(N, i_1!`%`_iN.0) <= $signed_(N, i_2!`%`_iN.0))] +[visit_exp $signed_(N, i_1!`%`_iN.0)] [visit_exp N] [visit_id N] not free -[visit_exp i_1!`%`_iN{i#10094}.0] -[visit_exp i_1!`%`_iN{i#10094}] +[visit_exp i_1!`%`_iN.0] +[visit_exp i_1!`%`_iN] [visit_exp i_1] [visit_id i_1] not free -[visit_exp i#10094] -[visit_id i#10094] -[visit_exp $signed_(N, i_2!`%`_iN{i#10096}.0)] +[visit_exp $signed_(N, i_2!`%`_iN.0)] [visit_exp N] [visit_id N] not free -[visit_exp i_2!`%`_iN{i#10096}.0] -[visit_exp i_2!`%`_iN{i#10096}] +[visit_exp i_2!`%`_iN.0] +[visit_exp i_2!`%`_iN] [visit_exp i_2] [visit_id i_2] not free -[visit_exp i#10096] -[visit_id i#10096] => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $imin_{N : N, i_1 : iN(N), i_2 : iN(N), i#10094 : nat, i#10096 : nat}(N, `S`_sx, i_1, i_2) = i_1 - -- if ($signed_(N, i_1!`%`_iN{i#10094}.0) <= $signed_(N, i_2!`%`_iN{i#10096}.0)) + def $imin_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, `S`_sx, i_1, i_2) = i_1 + -- if ($signed_(N, i_1!`%`_iN.0) <= $signed_(N, i_2!`%`_iN.0)) [check_dims] N i_1 i_2 [visit_exp N] [visit_id N] @@ -35392,7 +30606,7 @@ DecD ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 ;; ../../../../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) = i_2 -- otherwise -[check_dims] N i#10134 i#10136 i_1 i_2 +[check_dims] N i_1 i_2 [visit_exp N] [visit_id N] [visit_exp `U`_sx] @@ -35403,24 +30617,20 @@ DecD ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 [visit_id i_2] [visit_exp i_1] [visit_id i_1] not free -[visit_exp (i_1!`%`_iN{i#10134}.0 >= i_2!`%`_iN{i#10136}.0)] -[visit_exp i_1!`%`_iN{i#10134}.0] -[visit_exp i_1!`%`_iN{i#10134}] +[visit_exp (i_1!`%`_iN.0 >= i_2!`%`_iN.0)] +[visit_exp i_1!`%`_iN.0] +[visit_exp i_1!`%`_iN] [visit_exp i_1] [visit_id i_1] not free -[visit_exp i#10134] -[visit_id i#10134] -[visit_exp i_2!`%`_iN{i#10136}.0] -[visit_exp i_2!`%`_iN{i#10136}] +[visit_exp i_2!`%`_iN.0] +[visit_exp i_2!`%`_iN] [visit_exp i_2] [visit_id i_2] not free -[visit_exp i#10136] -[visit_id i#10136] => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $imax_{N : N, i_1 : iN(N), i_2 : iN(N), i#10134 : nat, i#10136 : nat}(N, `U`_sx, i_1, i_2) = i_1 - -- if (i_1!`%`_iN{i#10134}.0 >= i_2!`%`_iN{i#10136}.0) -[check_dims] N i#10156 i#10158 i_1 i_2 + 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) +[check_dims] N i_1 i_2 [visit_exp N] [visit_id N] [visit_exp `U`_sx] @@ -35431,24 +30641,20 @@ DecD ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 [visit_id i_2] [visit_exp i_2] [visit_id i_2] not free -[visit_exp (i_1!`%`_iN{i#10156}.0 < i_2!`%`_iN{i#10158}.0)] -[visit_exp i_1!`%`_iN{i#10156}.0] -[visit_exp i_1!`%`_iN{i#10156}] +[visit_exp (i_1!`%`_iN.0 < i_2!`%`_iN.0)] +[visit_exp i_1!`%`_iN.0] +[visit_exp i_1!`%`_iN] [visit_exp i_1] [visit_id i_1] not free -[visit_exp i#10156] -[visit_id i#10156] -[visit_exp i_2!`%`_iN{i#10158}.0] -[visit_exp i_2!`%`_iN{i#10158}] +[visit_exp i_2!`%`_iN.0] +[visit_exp i_2!`%`_iN] [visit_exp i_2] [visit_id i_2] not free -[visit_exp i#10158] -[visit_id i#10158] => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $imax_{N : N, i_1 : iN(N), i_2 : iN(N), i#10156 : nat, i#10158 : nat}(N, `U`_sx, i_1, i_2) = i_2 - -- if (i_1!`%`_iN{i#10156}.0 < i_2!`%`_iN{i#10158}.0) -[check_dims] N i#10178 i#10180 i_1 i_2 + 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) +[check_dims] N i_1 i_2 [visit_exp N] [visit_id N] [visit_exp `S`_sx] @@ -35459,29 +30665,25 @@ DecD ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 [visit_id i_2] [visit_exp i_1] [visit_id i_1] not free -[visit_exp ($signed_(N, i_1!`%`_iN{i#10178}.0) >= $signed_(N, i_2!`%`_iN{i#10180}.0))] -[visit_exp $signed_(N, i_1!`%`_iN{i#10178}.0)] +[visit_exp ($signed_(N, i_1!`%`_iN.0) >= $signed_(N, i_2!`%`_iN.0))] +[visit_exp $signed_(N, i_1!`%`_iN.0)] [visit_exp N] [visit_id N] not free -[visit_exp i_1!`%`_iN{i#10178}.0] -[visit_exp i_1!`%`_iN{i#10178}] +[visit_exp i_1!`%`_iN.0] +[visit_exp i_1!`%`_iN] [visit_exp i_1] [visit_id i_1] not free -[visit_exp i#10178] -[visit_id i#10178] -[visit_exp $signed_(N, i_2!`%`_iN{i#10180}.0)] +[visit_exp $signed_(N, i_2!`%`_iN.0)] [visit_exp N] [visit_id N] not free -[visit_exp i_2!`%`_iN{i#10180}.0] -[visit_exp i_2!`%`_iN{i#10180}] +[visit_exp i_2!`%`_iN.0] +[visit_exp i_2!`%`_iN] [visit_exp i_2] [visit_id i_2] not free -[visit_exp i#10180] -[visit_id i#10180] => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $imax_{N : N, i_1 : iN(N), i_2 : iN(N), i#10178 : nat, i#10180 : nat}(N, `S`_sx, i_1, i_2) = i_1 - -- if ($signed_(N, i_1!`%`_iN{i#10178}.0) >= $signed_(N, i_2!`%`_iN{i#10180}.0)) + def $imax_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, `S`_sx, i_1, i_2) = i_1 + -- if ($signed_(N, i_1!`%`_iN.0) >= $signed_(N, i_2!`%`_iN.0)) [check_dims] N i_1 i_2 [visit_exp N] [visit_id N] @@ -35497,7 +30699,7 @@ DecD ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 ;; ../../../../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) = i_2 -- otherwise -[check_dims] N i#10224 i#10226 i#10228 i_1 i_2 +[check_dims] N i_1 i_2 [visit_exp N] [visit_id N] [visit_exp `U`_sx] @@ -35506,31 +30708,25 @@ DecD ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 [visit_id i_1] [visit_exp i_2] [visit_id i_2] -[visit_exp `%`_iN{i#10228}($sat_u_(N, ((i_1!`%`_iN{i#10224}.0 + i_2!`%`_iN{i#10226}.0) : nat <:> int)))] -[visit_exp i#10228] -[visit_id i#10228] -[visit_exp ($sat_u_(N, ((i_1!`%`_iN{i#10224}.0 + i_2!`%`_iN{i#10226}.0) : nat <:> int)))] -[visit_exp $sat_u_(N, ((i_1!`%`_iN{i#10224}.0 + i_2!`%`_iN{i#10226}.0) : nat <:> int))] +[visit_exp `%`_iN($sat_u_(N, ((i_1!`%`_iN.0 + i_2!`%`_iN.0) : nat <:> int)))] +[visit_exp ($sat_u_(N, ((i_1!`%`_iN.0 + i_2!`%`_iN.0) : nat <:> int)))] +[visit_exp $sat_u_(N, ((i_1!`%`_iN.0 + i_2!`%`_iN.0) : nat <:> int))] [visit_exp N] [visit_id N] not free -[visit_exp ((i_1!`%`_iN{i#10224}.0 + i_2!`%`_iN{i#10226}.0) : nat <:> int)] -[visit_exp (i_1!`%`_iN{i#10224}.0 + i_2!`%`_iN{i#10226}.0)] -[visit_exp i_1!`%`_iN{i#10224}.0] -[visit_exp i_1!`%`_iN{i#10224}] +[visit_exp ((i_1!`%`_iN.0 + i_2!`%`_iN.0) : nat <:> int)] +[visit_exp (i_1!`%`_iN.0 + i_2!`%`_iN.0)] +[visit_exp i_1!`%`_iN.0] +[visit_exp i_1!`%`_iN] [visit_exp i_1] [visit_id i_1] not free -[visit_exp i#10224] -[visit_id i#10224] -[visit_exp i_2!`%`_iN{i#10226}.0] -[visit_exp i_2!`%`_iN{i#10226}] +[visit_exp i_2!`%`_iN.0] +[visit_exp i_2!`%`_iN] [visit_exp i_2] [visit_id i_2] not free -[visit_exp i#10226] -[visit_id i#10226] => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iadd_sat_{N : N, i_1 : iN(N), i_2 : iN(N), i#10228 : nat, i#10224 : nat, i#10226 : nat}(N, `U`_sx, i_1, i_2) = `%`_iN{i#10228}($sat_u_(N, ((i_1!`%`_iN{i#10224}.0 + i_2!`%`_iN{i#10226}.0) : nat <:> int))) -[check_dims] N i#10248 i#10250 i#10252 i_1 i_2 + 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))) +[check_dims] N i_1 i_2 [visit_exp N] [visit_id N] [visit_exp `S`_sx] @@ -35539,39 +30735,33 @@ DecD ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 [visit_id i_1] [visit_exp i_2] [visit_id i_2] -[visit_exp `%`_iN{i#10252}($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN{i#10248}.0) + $signed_(N, i_2!`%`_iN{i#10250}.0)))))] -[visit_exp i#10252] -[visit_id i#10252] -[visit_exp ($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN{i#10248}.0) + $signed_(N, i_2!`%`_iN{i#10250}.0)))))] -[visit_exp $inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN{i#10248}.0) + $signed_(N, i_2!`%`_iN{i#10250}.0))))] +[visit_exp `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN.0) + $signed_(N, i_2!`%`_iN.0)))))] +[visit_exp ($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN.0) + $signed_(N, i_2!`%`_iN.0)))))] +[visit_exp $inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN.0) + $signed_(N, i_2!`%`_iN.0))))] [visit_exp N] [visit_id N] not free -[visit_exp $sat_s_(N, ($signed_(N, i_1!`%`_iN{i#10248}.0) + $signed_(N, i_2!`%`_iN{i#10250}.0)))] +[visit_exp $sat_s_(N, ($signed_(N, i_1!`%`_iN.0) + $signed_(N, i_2!`%`_iN.0)))] [visit_exp N] [visit_id N] not free -[visit_exp ($signed_(N, i_1!`%`_iN{i#10248}.0) + $signed_(N, i_2!`%`_iN{i#10250}.0))] -[visit_exp $signed_(N, i_1!`%`_iN{i#10248}.0)] +[visit_exp ($signed_(N, i_1!`%`_iN.0) + $signed_(N, i_2!`%`_iN.0))] +[visit_exp $signed_(N, i_1!`%`_iN.0)] [visit_exp N] [visit_id N] not free -[visit_exp i_1!`%`_iN{i#10248}.0] -[visit_exp i_1!`%`_iN{i#10248}] +[visit_exp i_1!`%`_iN.0] +[visit_exp i_1!`%`_iN] [visit_exp i_1] [visit_id i_1] not free -[visit_exp i#10248] -[visit_id i#10248] -[visit_exp $signed_(N, i_2!`%`_iN{i#10250}.0)] +[visit_exp $signed_(N, i_2!`%`_iN.0)] [visit_exp N] [visit_id N] not free -[visit_exp i_2!`%`_iN{i#10250}.0] -[visit_exp i_2!`%`_iN{i#10250}] +[visit_exp i_2!`%`_iN.0] +[visit_exp i_2!`%`_iN] [visit_exp i_2] [visit_id i_2] not free -[visit_exp i#10250] -[visit_id i#10250] => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iadd_sat_{N : N, i_1 : iN(N), i_2 : iN(N), i#10252 : nat, i#10248 : nat, i#10250 : nat}(N, `S`_sx, i_1, i_2) = `%`_iN{i#10252}($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN{i#10248}.0) + $signed_(N, i_2!`%`_iN{i#10250}.0))))) -[check_dims] N i#10272 i#10274 i#10276 i_1 i_2 + 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))))) +[check_dims] N i_1 i_2 [visit_exp N] [visit_id N] [visit_exp `U`_sx] @@ -35580,32 +30770,26 @@ DecD ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 [visit_id i_1] [visit_exp i_2] [visit_id i_2] -[visit_exp `%`_iN{i#10276}($sat_u_(N, ((i_1!`%`_iN{i#10272}.0 : nat <:> int) - (i_2!`%`_iN{i#10274}.0 : nat <:> int))))] -[visit_exp i#10276] -[visit_id i#10276] -[visit_exp ($sat_u_(N, ((i_1!`%`_iN{i#10272}.0 : nat <:> int) - (i_2!`%`_iN{i#10274}.0 : nat <:> int))))] -[visit_exp $sat_u_(N, ((i_1!`%`_iN{i#10272}.0 : nat <:> int) - (i_2!`%`_iN{i#10274}.0 : nat <:> int)))] +[visit_exp `%`_iN($sat_u_(N, ((i_1!`%`_iN.0 : nat <:> int) - (i_2!`%`_iN.0 : nat <:> int))))] +[visit_exp ($sat_u_(N, ((i_1!`%`_iN.0 : nat <:> int) - (i_2!`%`_iN.0 : nat <:> int))))] +[visit_exp $sat_u_(N, ((i_1!`%`_iN.0 : nat <:> int) - (i_2!`%`_iN.0 : nat <:> int)))] [visit_exp N] [visit_id N] not free -[visit_exp ((i_1!`%`_iN{i#10272}.0 : nat <:> int) - (i_2!`%`_iN{i#10274}.0 : nat <:> int))] -[visit_exp (i_1!`%`_iN{i#10272}.0 : nat <:> int)] -[visit_exp i_1!`%`_iN{i#10272}.0] -[visit_exp i_1!`%`_iN{i#10272}] +[visit_exp ((i_1!`%`_iN.0 : nat <:> int) - (i_2!`%`_iN.0 : nat <:> int))] +[visit_exp (i_1!`%`_iN.0 : nat <:> int)] +[visit_exp i_1!`%`_iN.0] +[visit_exp i_1!`%`_iN] [visit_exp i_1] [visit_id i_1] not free -[visit_exp i#10272] -[visit_id i#10272] -[visit_exp (i_2!`%`_iN{i#10274}.0 : nat <:> int)] -[visit_exp i_2!`%`_iN{i#10274}.0] -[visit_exp i_2!`%`_iN{i#10274}] +[visit_exp (i_2!`%`_iN.0 : nat <:> int)] +[visit_exp i_2!`%`_iN.0] +[visit_exp i_2!`%`_iN] [visit_exp i_2] [visit_id i_2] not free -[visit_exp i#10274] -[visit_id i#10274] => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $isub_sat_{N : N, i_1 : iN(N), i_2 : iN(N), i#10276 : nat, i#10272 : nat, i#10274 : nat}(N, `U`_sx, i_1, i_2) = `%`_iN{i#10276}($sat_u_(N, ((i_1!`%`_iN{i#10272}.0 : nat <:> int) - (i_2!`%`_iN{i#10274}.0 : nat <:> int)))) -[check_dims] N i#10296 i#10298 i#10300 i_1 i_2 + 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)))) +[check_dims] N i_1 i_2 [visit_exp N] [visit_id N] [visit_exp `S`_sx] @@ -35614,90 +30798,74 @@ DecD ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 [visit_id i_1] [visit_exp i_2] [visit_id i_2] -[visit_exp `%`_iN{i#10300}($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN{i#10296}.0) - $signed_(N, i_2!`%`_iN{i#10298}.0)))))] -[visit_exp i#10300] -[visit_id i#10300] -[visit_exp ($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN{i#10296}.0) - $signed_(N, i_2!`%`_iN{i#10298}.0)))))] -[visit_exp $inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN{i#10296}.0) - $signed_(N, i_2!`%`_iN{i#10298}.0))))] +[visit_exp `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN.0) - $signed_(N, i_2!`%`_iN.0)))))] +[visit_exp ($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN.0) - $signed_(N, i_2!`%`_iN.0)))))] +[visit_exp $inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN.0) - $signed_(N, i_2!`%`_iN.0))))] [visit_exp N] [visit_id N] not free -[visit_exp $sat_s_(N, ($signed_(N, i_1!`%`_iN{i#10296}.0) - $signed_(N, i_2!`%`_iN{i#10298}.0)))] +[visit_exp $sat_s_(N, ($signed_(N, i_1!`%`_iN.0) - $signed_(N, i_2!`%`_iN.0)))] [visit_exp N] [visit_id N] not free -[visit_exp ($signed_(N, i_1!`%`_iN{i#10296}.0) - $signed_(N, i_2!`%`_iN{i#10298}.0))] -[visit_exp $signed_(N, i_1!`%`_iN{i#10296}.0)] +[visit_exp ($signed_(N, i_1!`%`_iN.0) - $signed_(N, i_2!`%`_iN.0))] +[visit_exp $signed_(N, i_1!`%`_iN.0)] [visit_exp N] [visit_id N] not free -[visit_exp i_1!`%`_iN{i#10296}.0] -[visit_exp i_1!`%`_iN{i#10296}] +[visit_exp i_1!`%`_iN.0] +[visit_exp i_1!`%`_iN] [visit_exp i_1] [visit_id i_1] not free -[visit_exp i#10296] -[visit_id i#10296] -[visit_exp $signed_(N, i_2!`%`_iN{i#10298}.0)] +[visit_exp $signed_(N, i_2!`%`_iN.0)] [visit_exp N] [visit_id N] not free -[visit_exp i_2!`%`_iN{i#10298}.0] -[visit_exp i_2!`%`_iN{i#10298}] +[visit_exp i_2!`%`_iN.0] +[visit_exp i_2!`%`_iN] [visit_exp i_2] [visit_id i_2] not free -[visit_exp i#10298] -[visit_id i#10298] => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $isub_sat_{N : N, i_1 : iN(N), i_2 : iN(N), i#10300 : nat, i#10296 : nat, i#10298 : nat}(N, `S`_sx, i_1, i_2) = `%`_iN{i#10300}($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN{i#10296}.0) - $signed_(N, i_2!`%`_iN{i#10298}.0))))) -[check_dims] N i#10318 i#10328 i_1 + 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))))) +[check_dims] N i_1 [visit_exp N] [visit_id N] [visit_exp i_1] [visit_id i_1] -[visit_exp `%`_u32{i#10328}($bool((i_1!`%`_iN{i#10318}.0 = 0)))] -[visit_exp i#10328] -[visit_id i#10328] -[visit_exp ($bool((i_1!`%`_iN{i#10318}.0 = 0)))] -[visit_exp $bool((i_1!`%`_iN{i#10318}.0 = 0))] -[visit_exp (i_1!`%`_iN{i#10318}.0 = 0)] -[visit_exp i_1!`%`_iN{i#10318}.0] -[visit_exp i_1!`%`_iN{i#10318}] +[visit_exp `%`_u32($bool((i_1!`%`_iN.0 = 0)))] +[visit_exp ($bool((i_1!`%`_iN.0 = 0)))] +[visit_exp $bool((i_1!`%`_iN.0 = 0))] +[visit_exp (i_1!`%`_iN.0 = 0)] +[visit_exp i_1!`%`_iN.0] +[visit_exp i_1!`%`_iN] [visit_exp i_1] [visit_id i_1] not free -[visit_exp i#10318] -[visit_id i#10318] [visit_exp 0] => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ieqz_{N : N, i_1 : iN(N), i#10328 : nat, i#10318 : nat}(N, i_1) = `%`_u32{i#10328}($bool((i_1!`%`_iN{i#10318}.0 = 0))) -[check_dims] N i#10346 i#10356 i_1 + def $ieqz_{N : N, i_1 : iN(N)}(N, i_1) = `%`_u32($bool((i_1!`%`_iN.0 = 0))) +[check_dims] N i_1 [visit_exp N] [visit_id N] [visit_exp i_1] [visit_id i_1] -[visit_exp `%`_u32{i#10356}($bool((i_1!`%`_iN{i#10346}.0 =/= 0)))] -[visit_exp i#10356] -[visit_id i#10356] -[visit_exp ($bool((i_1!`%`_iN{i#10346}.0 =/= 0)))] -[visit_exp $bool((i_1!`%`_iN{i#10346}.0 =/= 0))] -[visit_exp (i_1!`%`_iN{i#10346}.0 =/= 0)] -[visit_exp i_1!`%`_iN{i#10346}.0] -[visit_exp i_1!`%`_iN{i#10346}] +[visit_exp `%`_u32($bool((i_1!`%`_iN.0 =/= 0)))] +[visit_exp ($bool((i_1!`%`_iN.0 =/= 0)))] +[visit_exp $bool((i_1!`%`_iN.0 =/= 0))] +[visit_exp (i_1!`%`_iN.0 =/= 0)] +[visit_exp i_1!`%`_iN.0] +[visit_exp i_1!`%`_iN] [visit_exp i_1] [visit_id i_1] not free -[visit_exp i#10346] -[visit_id i#10346] [visit_exp 0] => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $inez_{N : N, i_1 : iN(N), i#10356 : nat, i#10346 : nat}(N, i_1) = `%`_u32{i#10356}($bool((i_1!`%`_iN{i#10346}.0 =/= 0))) -[check_dims] N i#10394 i_1 i_2 + def $inez_{N : N, i_1 : iN(N)}(N, i_1) = `%`_u32($bool((i_1!`%`_iN.0 =/= 0))) +[check_dims] N i_1 i_2 [visit_exp N] [visit_id N] [visit_exp i_1] [visit_id i_1] [visit_exp i_2] [visit_id i_2] -[visit_exp `%`_u32{i#10394}($bool((i_1 = i_2)))] -[visit_exp i#10394] -[visit_id i#10394] +[visit_exp `%`_u32($bool((i_1 = i_2)))] [visit_exp ($bool((i_1 = i_2)))] [visit_exp $bool((i_1 = i_2))] [visit_exp (i_1 = i_2)] @@ -35707,17 +30875,15 @@ DecD ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 [visit_id i_2] not free => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ieq_{N : N, i_1 : iN(N), i_2 : iN(N), i#10394 : nat}(N, i_1, i_2) = `%`_u32{i#10394}($bool((i_1 = i_2))) -[check_dims] N i#10432 i_1 i_2 + def $ieq_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) +[check_dims] N i_1 i_2 [visit_exp N] [visit_id N] [visit_exp i_1] [visit_id i_1] [visit_exp i_2] [visit_id i_2] -[visit_exp `%`_u32{i#10432}($bool((i_1 =/= i_2)))] -[visit_exp i#10432] -[visit_id i#10432] +[visit_exp `%`_u32($bool((i_1 =/= i_2)))] [visit_exp ($bool((i_1 =/= i_2)))] [visit_exp $bool((i_1 =/= i_2))] [visit_exp (i_1 =/= i_2)] @@ -35727,8 +30893,8 @@ DecD ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 [visit_id i_2] not free => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ine_{N : N, i_1 : iN(N), i_2 : iN(N), i#10432 : nat}(N, i_1, i_2) = `%`_u32{i#10432}($bool((i_1 =/= i_2))) -[check_dims] N i#10456 i#10458 i#10468 i_1 i_2 + def $ine_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) +[check_dims] N i_1 i_2 [visit_exp N] [visit_id N] [visit_exp `U`_sx] @@ -35737,28 +30903,22 @@ DecD ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 [visit_id i_1] [visit_exp i_2] [visit_id i_2] -[visit_exp `%`_u32{i#10468}($bool((i_1!`%`_iN{i#10456}.0 < i_2!`%`_iN{i#10458}.0)))] -[visit_exp i#10468] -[visit_id i#10468] -[visit_exp ($bool((i_1!`%`_iN{i#10456}.0 < i_2!`%`_iN{i#10458}.0)))] -[visit_exp $bool((i_1!`%`_iN{i#10456}.0 < i_2!`%`_iN{i#10458}.0))] -[visit_exp (i_1!`%`_iN{i#10456}.0 < i_2!`%`_iN{i#10458}.0)] -[visit_exp i_1!`%`_iN{i#10456}.0] -[visit_exp i_1!`%`_iN{i#10456}] +[visit_exp `%`_u32($bool((i_1!`%`_iN.0 < i_2!`%`_iN.0)))] +[visit_exp ($bool((i_1!`%`_iN.0 < i_2!`%`_iN.0)))] +[visit_exp $bool((i_1!`%`_iN.0 < i_2!`%`_iN.0))] +[visit_exp (i_1!`%`_iN.0 < i_2!`%`_iN.0)] +[visit_exp i_1!`%`_iN.0] +[visit_exp i_1!`%`_iN] [visit_exp i_1] [visit_id i_1] not free -[visit_exp i#10456] -[visit_id i#10456] -[visit_exp i_2!`%`_iN{i#10458}.0] -[visit_exp i_2!`%`_iN{i#10458}] +[visit_exp i_2!`%`_iN.0] +[visit_exp i_2!`%`_iN] [visit_exp i_2] [visit_id i_2] not free -[visit_exp i#10458] -[visit_id i#10458] => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ilt_{N : N, i_1 : iN(N), i_2 : iN(N), i#10468 : nat, i#10456 : nat, i#10458 : nat}(N, `U`_sx, i_1, i_2) = `%`_u32{i#10468}($bool((i_1!`%`_iN{i#10456}.0 < i_2!`%`_iN{i#10458}.0))) -[check_dims] N i#10492 i#10494 i#10504 i_1 i_2 + 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))) +[check_dims] N i_1 i_2 [visit_exp N] [visit_id N] [visit_exp `S`_sx] @@ -35767,34 +30927,28 @@ DecD ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 [visit_id i_1] [visit_exp i_2] [visit_id i_2] -[visit_exp `%`_u32{i#10504}($bool(($signed_(N, i_1!`%`_iN{i#10492}.0) < $signed_(N, i_2!`%`_iN{i#10494}.0))))] -[visit_exp i#10504] -[visit_id i#10504] -[visit_exp ($bool(($signed_(N, i_1!`%`_iN{i#10492}.0) < $signed_(N, i_2!`%`_iN{i#10494}.0))))] -[visit_exp $bool(($signed_(N, i_1!`%`_iN{i#10492}.0) < $signed_(N, i_2!`%`_iN{i#10494}.0)))] -[visit_exp ($signed_(N, i_1!`%`_iN{i#10492}.0) < $signed_(N, i_2!`%`_iN{i#10494}.0))] -[visit_exp $signed_(N, i_1!`%`_iN{i#10492}.0)] +[visit_exp `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) < $signed_(N, i_2!`%`_iN.0))))] +[visit_exp ($bool(($signed_(N, i_1!`%`_iN.0) < $signed_(N, i_2!`%`_iN.0))))] +[visit_exp $bool(($signed_(N, i_1!`%`_iN.0) < $signed_(N, i_2!`%`_iN.0)))] +[visit_exp ($signed_(N, i_1!`%`_iN.0) < $signed_(N, i_2!`%`_iN.0))] +[visit_exp $signed_(N, i_1!`%`_iN.0)] [visit_exp N] [visit_id N] not free -[visit_exp i_1!`%`_iN{i#10492}.0] -[visit_exp i_1!`%`_iN{i#10492}] +[visit_exp i_1!`%`_iN.0] +[visit_exp i_1!`%`_iN] [visit_exp i_1] [visit_id i_1] not free -[visit_exp i#10492] -[visit_id i#10492] -[visit_exp $signed_(N, i_2!`%`_iN{i#10494}.0)] +[visit_exp $signed_(N, i_2!`%`_iN.0)] [visit_exp N] [visit_id N] not free -[visit_exp i_2!`%`_iN{i#10494}.0] -[visit_exp i_2!`%`_iN{i#10494}] +[visit_exp i_2!`%`_iN.0] +[visit_exp i_2!`%`_iN] [visit_exp i_2] [visit_id i_2] not free -[visit_exp i#10494] -[visit_id i#10494] => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ilt_{N : N, i_1 : iN(N), i_2 : iN(N), i#10504 : nat, i#10492 : nat, i#10494 : nat}(N, `S`_sx, i_1, i_2) = `%`_u32{i#10504}($bool(($signed_(N, i_1!`%`_iN{i#10492}.0) < $signed_(N, i_2!`%`_iN{i#10494}.0)))) -[check_dims] N i#10528 i#10530 i#10540 i_1 i_2 + 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)))) +[check_dims] N i_1 i_2 [visit_exp N] [visit_id N] [visit_exp `U`_sx] @@ -35803,28 +30957,22 @@ DecD ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 [visit_id i_1] [visit_exp i_2] [visit_id i_2] -[visit_exp `%`_u32{i#10540}($bool((i_1!`%`_iN{i#10528}.0 > i_2!`%`_iN{i#10530}.0)))] -[visit_exp i#10540] -[visit_id i#10540] -[visit_exp ($bool((i_1!`%`_iN{i#10528}.0 > i_2!`%`_iN{i#10530}.0)))] -[visit_exp $bool((i_1!`%`_iN{i#10528}.0 > i_2!`%`_iN{i#10530}.0))] -[visit_exp (i_1!`%`_iN{i#10528}.0 > i_2!`%`_iN{i#10530}.0)] -[visit_exp i_1!`%`_iN{i#10528}.0] -[visit_exp i_1!`%`_iN{i#10528}] +[visit_exp `%`_u32($bool((i_1!`%`_iN.0 > i_2!`%`_iN.0)))] +[visit_exp ($bool((i_1!`%`_iN.0 > i_2!`%`_iN.0)))] +[visit_exp $bool((i_1!`%`_iN.0 > i_2!`%`_iN.0))] +[visit_exp (i_1!`%`_iN.0 > i_2!`%`_iN.0)] +[visit_exp i_1!`%`_iN.0] +[visit_exp i_1!`%`_iN] [visit_exp i_1] [visit_id i_1] not free -[visit_exp i#10528] -[visit_id i#10528] -[visit_exp i_2!`%`_iN{i#10530}.0] -[visit_exp i_2!`%`_iN{i#10530}] +[visit_exp i_2!`%`_iN.0] +[visit_exp i_2!`%`_iN] [visit_exp i_2] [visit_id i_2] not free -[visit_exp i#10530] -[visit_id i#10530] => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $igt_{N : N, i_1 : iN(N), i_2 : iN(N), i#10540 : nat, i#10528 : nat, i#10530 : nat}(N, `U`_sx, i_1, i_2) = `%`_u32{i#10540}($bool((i_1!`%`_iN{i#10528}.0 > i_2!`%`_iN{i#10530}.0))) -[check_dims] N i#10564 i#10566 i#10576 i_1 i_2 + 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))) +[check_dims] N i_1 i_2 [visit_exp N] [visit_id N] [visit_exp `S`_sx] @@ -35833,34 +30981,28 @@ DecD ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 [visit_id i_1] [visit_exp i_2] [visit_id i_2] -[visit_exp `%`_u32{i#10576}($bool(($signed_(N, i_1!`%`_iN{i#10564}.0) > $signed_(N, i_2!`%`_iN{i#10566}.0))))] -[visit_exp i#10576] -[visit_id i#10576] -[visit_exp ($bool(($signed_(N, i_1!`%`_iN{i#10564}.0) > $signed_(N, i_2!`%`_iN{i#10566}.0))))] -[visit_exp $bool(($signed_(N, i_1!`%`_iN{i#10564}.0) > $signed_(N, i_2!`%`_iN{i#10566}.0)))] -[visit_exp ($signed_(N, i_1!`%`_iN{i#10564}.0) > $signed_(N, i_2!`%`_iN{i#10566}.0))] -[visit_exp $signed_(N, i_1!`%`_iN{i#10564}.0)] +[visit_exp `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) > $signed_(N, i_2!`%`_iN.0))))] +[visit_exp ($bool(($signed_(N, i_1!`%`_iN.0) > $signed_(N, i_2!`%`_iN.0))))] +[visit_exp $bool(($signed_(N, i_1!`%`_iN.0) > $signed_(N, i_2!`%`_iN.0)))] +[visit_exp ($signed_(N, i_1!`%`_iN.0) > $signed_(N, i_2!`%`_iN.0))] +[visit_exp $signed_(N, i_1!`%`_iN.0)] [visit_exp N] [visit_id N] not free -[visit_exp i_1!`%`_iN{i#10564}.0] -[visit_exp i_1!`%`_iN{i#10564}] +[visit_exp i_1!`%`_iN.0] +[visit_exp i_1!`%`_iN] [visit_exp i_1] [visit_id i_1] not free -[visit_exp i#10564] -[visit_id i#10564] -[visit_exp $signed_(N, i_2!`%`_iN{i#10566}.0)] +[visit_exp $signed_(N, i_2!`%`_iN.0)] [visit_exp N] [visit_id N] not free -[visit_exp i_2!`%`_iN{i#10566}.0] -[visit_exp i_2!`%`_iN{i#10566}] +[visit_exp i_2!`%`_iN.0] +[visit_exp i_2!`%`_iN] [visit_exp i_2] [visit_id i_2] not free -[visit_exp i#10566] -[visit_id i#10566] => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $igt_{N : N, i_1 : iN(N), i_2 : iN(N), i#10576 : nat, i#10564 : nat, i#10566 : nat}(N, `S`_sx, i_1, i_2) = `%`_u32{i#10576}($bool(($signed_(N, i_1!`%`_iN{i#10564}.0) > $signed_(N, i_2!`%`_iN{i#10566}.0)))) -[check_dims] N i#10600 i#10602 i#10612 i_1 i_2 + 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)))) +[check_dims] N i_1 i_2 [visit_exp N] [visit_id N] [visit_exp `U`_sx] @@ -35869,28 +31011,22 @@ DecD ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 [visit_id i_1] [visit_exp i_2] [visit_id i_2] -[visit_exp `%`_u32{i#10612}($bool((i_1!`%`_iN{i#10600}.0 <= i_2!`%`_iN{i#10602}.0)))] -[visit_exp i#10612] -[visit_id i#10612] -[visit_exp ($bool((i_1!`%`_iN{i#10600}.0 <= i_2!`%`_iN{i#10602}.0)))] -[visit_exp $bool((i_1!`%`_iN{i#10600}.0 <= i_2!`%`_iN{i#10602}.0))] -[visit_exp (i_1!`%`_iN{i#10600}.0 <= i_2!`%`_iN{i#10602}.0)] -[visit_exp i_1!`%`_iN{i#10600}.0] -[visit_exp i_1!`%`_iN{i#10600}] +[visit_exp `%`_u32($bool((i_1!`%`_iN.0 <= i_2!`%`_iN.0)))] +[visit_exp ($bool((i_1!`%`_iN.0 <= i_2!`%`_iN.0)))] +[visit_exp $bool((i_1!`%`_iN.0 <= i_2!`%`_iN.0))] +[visit_exp (i_1!`%`_iN.0 <= i_2!`%`_iN.0)] +[visit_exp i_1!`%`_iN.0] +[visit_exp i_1!`%`_iN] [visit_exp i_1] [visit_id i_1] not free -[visit_exp i#10600] -[visit_id i#10600] -[visit_exp i_2!`%`_iN{i#10602}.0] -[visit_exp i_2!`%`_iN{i#10602}] +[visit_exp i_2!`%`_iN.0] +[visit_exp i_2!`%`_iN] [visit_exp i_2] [visit_id i_2] not free -[visit_exp i#10602] -[visit_id i#10602] => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ile_{N : N, i_1 : iN(N), i_2 : iN(N), i#10612 : nat, i#10600 : nat, i#10602 : nat}(N, `U`_sx, i_1, i_2) = `%`_u32{i#10612}($bool((i_1!`%`_iN{i#10600}.0 <= i_2!`%`_iN{i#10602}.0))) -[check_dims] N i#10636 i#10638 i#10648 i_1 i_2 + 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))) +[check_dims] N i_1 i_2 [visit_exp N] [visit_id N] [visit_exp `S`_sx] @@ -35899,34 +31035,28 @@ DecD ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 [visit_id i_1] [visit_exp i_2] [visit_id i_2] -[visit_exp `%`_u32{i#10648}($bool(($signed_(N, i_1!`%`_iN{i#10636}.0) <= $signed_(N, i_2!`%`_iN{i#10638}.0))))] -[visit_exp i#10648] -[visit_id i#10648] -[visit_exp ($bool(($signed_(N, i_1!`%`_iN{i#10636}.0) <= $signed_(N, i_2!`%`_iN{i#10638}.0))))] -[visit_exp $bool(($signed_(N, i_1!`%`_iN{i#10636}.0) <= $signed_(N, i_2!`%`_iN{i#10638}.0)))] -[visit_exp ($signed_(N, i_1!`%`_iN{i#10636}.0) <= $signed_(N, i_2!`%`_iN{i#10638}.0))] -[visit_exp $signed_(N, i_1!`%`_iN{i#10636}.0)] +[visit_exp `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) <= $signed_(N, i_2!`%`_iN.0))))] +[visit_exp ($bool(($signed_(N, i_1!`%`_iN.0) <= $signed_(N, i_2!`%`_iN.0))))] +[visit_exp $bool(($signed_(N, i_1!`%`_iN.0) <= $signed_(N, i_2!`%`_iN.0)))] +[visit_exp ($signed_(N, i_1!`%`_iN.0) <= $signed_(N, i_2!`%`_iN.0))] +[visit_exp $signed_(N, i_1!`%`_iN.0)] [visit_exp N] [visit_id N] not free -[visit_exp i_1!`%`_iN{i#10636}.0] -[visit_exp i_1!`%`_iN{i#10636}] +[visit_exp i_1!`%`_iN.0] +[visit_exp i_1!`%`_iN] [visit_exp i_1] [visit_id i_1] not free -[visit_exp i#10636] -[visit_id i#10636] -[visit_exp $signed_(N, i_2!`%`_iN{i#10638}.0)] +[visit_exp $signed_(N, i_2!`%`_iN.0)] [visit_exp N] [visit_id N] not free -[visit_exp i_2!`%`_iN{i#10638}.0] -[visit_exp i_2!`%`_iN{i#10638}] +[visit_exp i_2!`%`_iN.0] +[visit_exp i_2!`%`_iN] [visit_exp i_2] [visit_id i_2] not free -[visit_exp i#10638] -[visit_id i#10638] => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ile_{N : N, i_1 : iN(N), i_2 : iN(N), i#10648 : nat, i#10636 : nat, i#10638 : nat}(N, `S`_sx, i_1, i_2) = `%`_u32{i#10648}($bool(($signed_(N, i_1!`%`_iN{i#10636}.0) <= $signed_(N, i_2!`%`_iN{i#10638}.0)))) -[check_dims] N i#10672 i#10674 i#10684 i_1 i_2 + 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)))) +[check_dims] N i_1 i_2 [visit_exp N] [visit_id N] [visit_exp `U`_sx] @@ -35935,28 +31065,22 @@ DecD ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 [visit_id i_1] [visit_exp i_2] [visit_id i_2] -[visit_exp `%`_u32{i#10684}($bool((i_1!`%`_iN{i#10672}.0 >= i_2!`%`_iN{i#10674}.0)))] -[visit_exp i#10684] -[visit_id i#10684] -[visit_exp ($bool((i_1!`%`_iN{i#10672}.0 >= i_2!`%`_iN{i#10674}.0)))] -[visit_exp $bool((i_1!`%`_iN{i#10672}.0 >= i_2!`%`_iN{i#10674}.0))] -[visit_exp (i_1!`%`_iN{i#10672}.0 >= i_2!`%`_iN{i#10674}.0)] -[visit_exp i_1!`%`_iN{i#10672}.0] -[visit_exp i_1!`%`_iN{i#10672}] +[visit_exp `%`_u32($bool((i_1!`%`_iN.0 >= i_2!`%`_iN.0)))] +[visit_exp ($bool((i_1!`%`_iN.0 >= i_2!`%`_iN.0)))] +[visit_exp $bool((i_1!`%`_iN.0 >= i_2!`%`_iN.0))] +[visit_exp (i_1!`%`_iN.0 >= i_2!`%`_iN.0)] +[visit_exp i_1!`%`_iN.0] +[visit_exp i_1!`%`_iN] [visit_exp i_1] [visit_id i_1] not free -[visit_exp i#10672] -[visit_id i#10672] -[visit_exp i_2!`%`_iN{i#10674}.0] -[visit_exp i_2!`%`_iN{i#10674}] +[visit_exp i_2!`%`_iN.0] +[visit_exp i_2!`%`_iN] [visit_exp i_2] [visit_id i_2] not free -[visit_exp i#10674] -[visit_id i#10674] => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ige_{N : N, i_1 : iN(N), i_2 : iN(N), i#10684 : nat, i#10672 : nat, i#10674 : nat}(N, `U`_sx, i_1, i_2) = `%`_u32{i#10684}($bool((i_1!`%`_iN{i#10672}.0 >= i_2!`%`_iN{i#10674}.0))) -[check_dims] N i#10708 i#10710 i#10720 i_1 i_2 + 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))) +[check_dims] N i_1 i_2 [visit_exp N] [visit_id N] [visit_exp `S`_sx] @@ -35965,33 +31089,27 @@ DecD ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 [visit_id i_1] [visit_exp i_2] [visit_id i_2] -[visit_exp `%`_u32{i#10720}($bool(($signed_(N, i_1!`%`_iN{i#10708}.0) >= $signed_(N, i_2!`%`_iN{i#10710}.0))))] -[visit_exp i#10720] -[visit_id i#10720] -[visit_exp ($bool(($signed_(N, i_1!`%`_iN{i#10708}.0) >= $signed_(N, i_2!`%`_iN{i#10710}.0))))] -[visit_exp $bool(($signed_(N, i_1!`%`_iN{i#10708}.0) >= $signed_(N, i_2!`%`_iN{i#10710}.0)))] -[visit_exp ($signed_(N, i_1!`%`_iN{i#10708}.0) >= $signed_(N, i_2!`%`_iN{i#10710}.0))] -[visit_exp $signed_(N, i_1!`%`_iN{i#10708}.0)] +[visit_exp `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) >= $signed_(N, i_2!`%`_iN.0))))] +[visit_exp ($bool(($signed_(N, i_1!`%`_iN.0) >= $signed_(N, i_2!`%`_iN.0))))] +[visit_exp $bool(($signed_(N, i_1!`%`_iN.0) >= $signed_(N, i_2!`%`_iN.0)))] +[visit_exp ($signed_(N, i_1!`%`_iN.0) >= $signed_(N, i_2!`%`_iN.0))] +[visit_exp $signed_(N, i_1!`%`_iN.0)] [visit_exp N] [visit_id N] not free -[visit_exp i_1!`%`_iN{i#10708}.0] -[visit_exp i_1!`%`_iN{i#10708}] +[visit_exp i_1!`%`_iN.0] +[visit_exp i_1!`%`_iN] [visit_exp i_1] [visit_id i_1] not free -[visit_exp i#10708] -[visit_id i#10708] -[visit_exp $signed_(N, i_2!`%`_iN{i#10710}.0)] +[visit_exp $signed_(N, i_2!`%`_iN.0)] [visit_exp N] [visit_id N] not free -[visit_exp i_2!`%`_iN{i#10710}.0] -[visit_exp i_2!`%`_iN{i#10710}] +[visit_exp i_2!`%`_iN.0] +[visit_exp i_2!`%`_iN] [visit_exp i_2] [visit_id i_2] not free -[visit_exp i#10710] -[visit_id i#10710] => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ige_{N : N, i_1 : iN(N), i_2 : iN(N), i#10720 : nat, i#10708 : nat, i#10710 : nat}(N, `S`_sx, i_1, i_2) = `%`_u32{i#10720}($bool(($signed_(N, i_1!`%`_iN{i#10708}.0) >= $signed_(N, i_2!`%`_iN{i#10710}.0)))) + 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)))) [check_dims] N fN DecD fabs_(N : N, fN : fN(N)) : fN(N)* [visit_id N] not free @@ -36630,19 +31748,13 @@ DecD cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : Inn, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `POPCNT`_unop_, i) = [$ipopcnt_($sizenn((Inn : Inn <: numtype)), i)] -[check_dims] Inn M i i#10974 i#10981 sz#154 +[check_dims] Inn M i [visit_exp (Inn : Inn <: numtype)] [visit_exp Inn] [visit_id Inn] -[visit_exp `EXTEND`_unop_{sz#154, i#10974}(`%`_sz{i#10981}(M))] -[visit_exp sz#154] -[visit_id sz#154] -[visit_exp i#10974] -[visit_id i#10974] -[visit_exp (`%`_sz{i#10981}(M))] -[visit_exp `%`_sz{i#10981}(M)] -[visit_exp i#10981] -[visit_id i#10981] +[visit_exp `EXTEND`_unop_(`%`_sz(M))] +[visit_exp (`%`_sz(M))] +[visit_exp `%`_sz(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -36662,7 +31774,7 @@ DecD cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype [visit_id i] not free => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Inn : Inn, sz#154 : sz, i#10974 : nat, i#10981 : nat, M : M, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `EXTEND`_unop_{sz#154, i#10974}(`%`_sz{i#10981}(M)), i) = [$iextend_($sizenn((Inn : Inn <: numtype)), M, `S`_sx, i)] + def $unop_{Inn : Inn, M : M, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `EXTEND`_unop_(`%`_sz(M)), i) = [$iextend_($sizenn((Inn : Inn <: numtype)), M, `S`_sx, i)] [check_dims] Fnn f [visit_exp (Fnn : Fnn <: numtype)] [visit_exp Fnn] @@ -36858,13 +31970,11 @@ DecD cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `MUL`_binop_, i_1, i_2) = [$imul_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] -[check_dims] Inn i_1 i_2 sx sx#58 +[check_dims] Inn i_1 i_2 sx [visit_exp (Inn : Inn <: numtype)] [visit_exp Inn] [visit_id Inn] -[visit_exp `DIV`_binop_{sx#58}(sx)] -[visit_exp sx#58] -[visit_id sx#58] +[visit_exp `DIV`_binop_(sx)] [visit_exp (sx)] [visit_exp sx] [visit_id sx] @@ -36886,14 +31996,12 @@ DecD cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype [visit_id i_2] not free => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, sx#58 : sx, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `DIV`_binop_{sx#58}(sx), i_1, i_2) = lift($idiv_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2)) -[check_dims] Inn i_1 i_2 sx sx#60 + def $binop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `DIV`_binop_(sx), i_1, i_2) = lift($idiv_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2)) +[check_dims] Inn i_1 i_2 sx [visit_exp (Inn : Inn <: numtype)] [visit_exp Inn] [visit_id Inn] -[visit_exp `REM`_binop_{sx#60}(sx)] -[visit_exp sx#60] -[visit_id sx#60] +[visit_exp `REM`_binop_(sx)] [visit_exp (sx)] [visit_exp sx] [visit_id sx] @@ -36915,7 +32023,7 @@ DecD cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype [visit_id i_2] not free => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, sx#60 : sx, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `REM`_binop_{sx#60}(sx), i_1, i_2) = lift($irem_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2)) + def $binop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `REM`_binop_(sx), i_1, i_2) = lift($irem_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2)) [check_dims] Inn i_1 i_2 [visit_exp (Inn : Inn <: numtype)] [visit_exp Inn] @@ -36985,7 +32093,7 @@ DecD cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `XOR`_binop_, i_1, i_2) = [$ixor_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] -[check_dims] Inn i#11713 i#11714 i_1 i_2 +[check_dims] Inn i_1 i_2 [visit_exp (Inn : Inn <: numtype)] [visit_exp Inn] [visit_id Inn] @@ -36995,34 +32103,28 @@ DecD cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype [visit_id i_1] [visit_exp i_2] [visit_id i_2] -[visit_exp [$ishl_($sizenn((Inn : Inn <: numtype)), i_1, `%`_u32{i#11714}(i_2!`%`_num_{i#11713}.0))]] -[visit_exp $ishl_($sizenn((Inn : Inn <: numtype)), i_1, `%`_u32{i#11714}(i_2!`%`_num_{i#11713}.0))] +[visit_exp [$ishl_($sizenn((Inn : Inn <: numtype)), i_1, `%`_u32(i_2!`%`_num_.0))]] +[visit_exp $ishl_($sizenn((Inn : Inn <: numtype)), i_1, `%`_u32(i_2!`%`_num_.0))] [visit_exp $sizenn((Inn : Inn <: numtype))] [visit_exp (Inn : Inn <: numtype)] [visit_exp Inn] [visit_id Inn] not free [visit_exp i_1] [visit_id i_1] not free -[visit_exp `%`_u32{i#11714}(i_2!`%`_num_{i#11713}.0)] -[visit_exp i#11714] -[visit_id i#11714] -[visit_exp (i_2!`%`_num_{i#11713}.0)] -[visit_exp i_2!`%`_num_{i#11713}.0] -[visit_exp i_2!`%`_num_{i#11713}] +[visit_exp `%`_u32(i_2!`%`_num_.0)] +[visit_exp (i_2!`%`_num_.0)] +[visit_exp i_2!`%`_num_.0] +[visit_exp i_2!`%`_num_] [visit_exp i_2] [visit_id i_2] not free -[visit_exp i#11713] -[visit_id i#11713] => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype)), i#11714 : nat, i#11713 : nat}((Inn : Inn <: numtype), `SHL`_binop_, i_1, i_2) = [$ishl_($sizenn((Inn : Inn <: numtype)), i_1, `%`_u32{i#11714}(i_2!`%`_num_{i#11713}.0))] -[check_dims] Inn i#11807 i#11808 i_1 i_2 sx sx#62 + def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `SHL`_binop_, i_1, i_2) = [$ishl_($sizenn((Inn : Inn <: numtype)), i_1, `%`_u32(i_2!`%`_num_.0))] +[check_dims] Inn i_1 i_2 sx [visit_exp (Inn : Inn <: numtype)] [visit_exp Inn] [visit_id Inn] -[visit_exp `SHR`_binop_{sx#62}(sx)] -[visit_exp sx#62] -[visit_id sx#62] +[visit_exp `SHR`_binop_(sx)] [visit_exp (sx)] [visit_exp sx] [visit_id sx] @@ -37030,8 +32132,8 @@ DecD cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype [visit_id i_1] [visit_exp i_2] [visit_id i_2] -[visit_exp [$ishr_($sizenn((Inn : Inn <: numtype)), sx, i_1, `%`_u32{i#11808}(i_2!`%`_num_{i#11807}.0))]] -[visit_exp $ishr_($sizenn((Inn : Inn <: numtype)), sx, i_1, `%`_u32{i#11808}(i_2!`%`_num_{i#11807}.0))] +[visit_exp [$ishr_($sizenn((Inn : Inn <: numtype)), sx, i_1, `%`_u32(i_2!`%`_num_.0))]] +[visit_exp $ishr_($sizenn((Inn : Inn <: numtype)), sx, i_1, `%`_u32(i_2!`%`_num_.0))] [visit_exp $sizenn((Inn : Inn <: numtype))] [visit_exp (Inn : Inn <: numtype)] [visit_exp Inn] @@ -37040,19 +32142,15 @@ DecD cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype [visit_id sx] not free [visit_exp i_1] [visit_id i_1] not free -[visit_exp `%`_u32{i#11808}(i_2!`%`_num_{i#11807}.0)] -[visit_exp i#11808] -[visit_id i#11808] -[visit_exp (i_2!`%`_num_{i#11807}.0)] -[visit_exp i_2!`%`_num_{i#11807}.0] -[visit_exp i_2!`%`_num_{i#11807}] +[visit_exp `%`_u32(i_2!`%`_num_.0)] +[visit_exp (i_2!`%`_num_.0)] +[visit_exp i_2!`%`_num_.0] +[visit_exp i_2!`%`_num_] [visit_exp i_2] [visit_id i_2] not free -[visit_exp i#11807] -[visit_id i#11807] => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, sx#62 : sx, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype)), i#11808 : nat, i#11807 : nat}((Inn : Inn <: numtype), `SHR`_binop_{sx#62}(sx), i_1, i_2) = [$ishr_($sizenn((Inn : Inn <: numtype)), sx, i_1, `%`_u32{i#11808}(i_2!`%`_num_{i#11807}.0))] + def $binop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `SHR`_binop_(sx), i_1, i_2) = [$ishr_($sizenn((Inn : Inn <: numtype)), sx, i_1, `%`_u32(i_2!`%`_num_.0))] [check_dims] Inn i_1 i_2 [visit_exp (Inn : Inn <: numtype)] [visit_exp Inn] @@ -37315,13 +32413,11 @@ DecD cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $relop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `NE`_relop_, i_1, i_2) = $ine_($sizenn((Inn : Inn <: numtype)), i_1, i_2) -[check_dims] Inn i_1 i_2 sx sx#64 +[check_dims] Inn i_1 i_2 sx [visit_exp (Inn : Inn <: numtype)] [visit_exp Inn] [visit_id Inn] -[visit_exp `LT`_relop_{sx#64}(sx)] -[visit_exp sx#64] -[visit_id sx#64] +[visit_exp `LT`_relop_(sx)] [visit_exp (sx)] [visit_exp sx] [visit_id sx] @@ -37342,14 +32438,12 @@ DecD cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype [visit_id i_2] not free => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Inn : Inn, sx#64 : sx, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `LT`_relop_{sx#64}(sx), i_1, i_2) = $ilt_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) -[check_dims] Inn i_1 i_2 sx sx#66 + def $relop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `LT`_relop_(sx), i_1, i_2) = $ilt_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) +[check_dims] Inn i_1 i_2 sx [visit_exp (Inn : Inn <: numtype)] [visit_exp Inn] [visit_id Inn] -[visit_exp `GT`_relop_{sx#66}(sx)] -[visit_exp sx#66] -[visit_id sx#66] +[visit_exp `GT`_relop_(sx)] [visit_exp (sx)] [visit_exp sx] [visit_id sx] @@ -37370,14 +32464,12 @@ DecD cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype [visit_id i_2] not free => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Inn : Inn, sx#66 : sx, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `GT`_relop_{sx#66}(sx), i_1, i_2) = $igt_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) -[check_dims] Inn i_1 i_2 sx sx#68 + def $relop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `GT`_relop_(sx), i_1, i_2) = $igt_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) +[check_dims] Inn i_1 i_2 sx [visit_exp (Inn : Inn <: numtype)] [visit_exp Inn] [visit_id Inn] -[visit_exp `LE`_relop_{sx#68}(sx)] -[visit_exp sx#68] -[visit_id sx#68] +[visit_exp `LE`_relop_(sx)] [visit_exp (sx)] [visit_exp sx] [visit_id sx] @@ -37398,14 +32490,12 @@ DecD cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype [visit_id i_2] not free => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Inn : Inn, sx#68 : sx, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `LE`_relop_{sx#68}(sx), i_1, i_2) = $ile_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) -[check_dims] Inn i_1 i_2 sx sx#70 + def $relop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `LE`_relop_(sx), i_1, i_2) = $ile_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) +[check_dims] Inn i_1 i_2 sx [visit_exp (Inn : Inn <: numtype)] [visit_exp Inn] [visit_id Inn] -[visit_exp `GE`_relop_{sx#70}(sx)] -[visit_exp sx#70] -[visit_id sx#70] +[visit_exp `GE`_relop_(sx)] [visit_exp (sx)] [visit_exp sx] [visit_id sx] @@ -37426,7 +32516,7 @@ DecD cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype [visit_id i_2] not free => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Inn : Inn, sx#70 : sx, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `GE`_relop_{sx#70}(sx), i_1, i_2) = $ige_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) + def $relop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `GE`_relop_(sx), i_1, i_2) = $ige_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) [check_dims] Fnn f_1 f_2 [visit_exp (Fnn : Fnn <: numtype)] [visit_exp Fnn] @@ -37559,16 +32649,14 @@ DecD cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype => ;; ../../../../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) -[check_dims] Inn_1 Inn_2 i_1 sx sx#72 +[check_dims] Inn_1 Inn_2 i_1 sx [visit_exp (Inn_1 : Inn <: numtype)] [visit_exp Inn_1] [visit_id Inn_1] [visit_exp (Inn_2 : Inn <: numtype)] [visit_exp Inn_2] [visit_id Inn_2] -[visit_exp `EXTEND`_cvtop__{sx#72}(sx)] -[visit_exp sx#72] -[visit_id sx#72] +[visit_exp `EXTEND`_cvtop__(sx)] [visit_exp (sx)] [visit_exp sx] [visit_id sx] @@ -37590,7 +32678,7 @@ DecD cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype [visit_id i_1] not free => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{Inn_1 : Inn, Inn_2 : Inn, sx#72 : sx, sx : sx, i_1 : num_((Inn_1 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Inn_2 : Inn <: numtype), `EXTEND`_cvtop__{sx#72}(sx), i_1) = [$extend__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, i_1)] + def $cvtop__{Inn_1 : Inn, Inn_2 : Inn, sx : sx, i_1 : num_((Inn_1 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Inn_2 : Inn <: numtype), `EXTEND`_cvtop__(sx), i_1) = [$extend__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, i_1)] [check_dims] Inn_1 Inn_2 i_1 [visit_exp (Inn_1 : Inn <: numtype)] [visit_exp Inn_1] @@ -37617,16 +32705,14 @@ DecD cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : Inn, Inn_2 : Inn, i_1 : num_((Inn_1 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Inn_2 : Inn <: numtype), `WRAP`_cvtop__, i_1) = [$wrap__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), i_1)] -[check_dims] Fnn_1 Inn_2 f_1 sx sx#74 +[check_dims] Fnn_1 Inn_2 f_1 sx [visit_exp (Fnn_1 : Fnn <: numtype)] [visit_exp Fnn_1] [visit_id Fnn_1] [visit_exp (Inn_2 : Inn <: numtype)] [visit_exp Inn_2] [visit_id Inn_2] -[visit_exp `TRUNC`_cvtop__{sx#74}(sx)] -[visit_exp sx#74] -[visit_id sx#74] +[visit_exp `TRUNC`_cvtop__(sx)] [visit_exp (sx)] [visit_exp sx] [visit_id sx] @@ -37648,17 +32734,15 @@ DecD cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype [visit_id f_1] not free => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{Fnn_1 : Fnn, Inn_2 : Inn, sx#74 : sx, sx : sx, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), `TRUNC`_cvtop__{sx#74}(sx), f_1) = lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, f_1)) -[check_dims] Fnn_1 Inn_2 f_1 sx sx#76 + def $cvtop__{Fnn_1 : Fnn, Inn_2 : Inn, sx : sx, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), `TRUNC`_cvtop__(sx), f_1) = lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, f_1)) +[check_dims] Fnn_1 Inn_2 f_1 sx [visit_exp (Fnn_1 : Fnn <: numtype)] [visit_exp Fnn_1] [visit_id Fnn_1] [visit_exp (Inn_2 : Inn <: numtype)] [visit_exp Inn_2] [visit_id Inn_2] -[visit_exp `TRUNC_SAT`_cvtop__{sx#76}(sx)] -[visit_exp sx#76] -[visit_id sx#76] +[visit_exp `TRUNC_SAT`_cvtop__(sx)] [visit_exp (sx)] [visit_exp sx] [visit_id sx] @@ -37680,17 +32764,15 @@ DecD cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype [visit_id f_1] not free => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{Fnn_1 : Fnn, Inn_2 : Inn, sx#76 : sx, sx : sx, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), `TRUNC_SAT`_cvtop__{sx#76}(sx), f_1) = lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, f_1)) -[check_dims] Fnn_2 Inn_1 i_1 sx sx#78 + def $cvtop__{Fnn_1 : Fnn, Inn_2 : Inn, sx : sx, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), `TRUNC_SAT`_cvtop__(sx), f_1) = lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, f_1)) +[check_dims] Fnn_2 Inn_1 i_1 sx [visit_exp (Inn_1 : Inn <: numtype)] [visit_exp Inn_1] [visit_id Inn_1] [visit_exp (Fnn_2 : Fnn <: numtype)] [visit_exp Fnn_2] [visit_id Fnn_2] -[visit_exp `CONVERT`_cvtop__{sx#78}(sx)] -[visit_exp sx#78] -[visit_id sx#78] +[visit_exp `CONVERT`_cvtop__(sx)] [visit_exp (sx)] [visit_exp sx] [visit_id sx] @@ -37712,7 +32794,7 @@ DecD cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype [visit_id i_1] not free => ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{Inn_1 : Inn, Fnn_2 : Fnn, sx#78 : sx, sx : sx, i_1 : num_((Inn_1 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype), `CONVERT`_cvtop__{sx#78}(sx), i_1) = [$convert__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1)] + def $cvtop__{Inn_1 : Inn, Fnn_2 : Fnn, sx : sx, i_1 : num_((Inn_1 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype), `CONVERT`_cvtop__(sx), i_1) = [$convert__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1)] [check_dims] Fnn_1 Fnn_2 f_1 [visit_exp (Fnn_1 : Fnn <: numtype)] [visit_exp Fnn_1] @@ -37858,46 +32940,26 @@ DecD zeroop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape [visit_id shape_1] not free [visit_exp shape_2] [visit_id shape_2] not free -[check_dims] Jnn_1 Jnn_2 M_1 M_2 dim#801 dim#813 half half#1 i#12568 i#12575 i#12580 i#12587 lanetype#801 lanetype#813 sx sx#80 -[visit_exp `%X%`_shape{lanetype#801, dim#801, i#12568}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#12575}(M_1))] -[visit_exp lanetype#801] -[visit_id lanetype#801] -[visit_exp dim#801] -[visit_id dim#801] -[visit_exp i#12568] -[visit_id i#12568] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#12575}(M_1))] +[check_dims] Jnn_1 Jnn_2 M_1 M_2 half sx +[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] [visit_exp (Jnn_1 : Jnn <: lanetype)] [visit_exp Jnn_1] [visit_id Jnn_1] -[visit_exp `%`_dim{i#12575}(M_1)] -[visit_exp i#12575] -[visit_id i#12575] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] -[visit_exp `%X%`_shape{lanetype#813, dim#813, i#12580}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#12587}(M_2))] -[visit_exp lanetype#813] -[visit_id lanetype#813] -[visit_exp dim#813] -[visit_id dim#813] -[visit_exp i#12580] -[visit_id i#12580] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#12587}(M_2))] +[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] [visit_exp (Jnn_2 : Jnn <: lanetype)] [visit_exp Jnn_2] [visit_id Jnn_2] -[visit_exp `%`_dim{i#12587}(M_2)] -[visit_exp i#12587] -[visit_id i#12587] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] -[visit_exp `EXTEND`_vcvtop__{half#1, sx#80}(half, sx)] -[visit_exp half#1] -[visit_id half#1] -[visit_exp sx#80] -[visit_id sx#80] +[visit_exp `EXTEND`_vcvtop__(half, sx)] [visit_exp (half, sx)] [visit_exp half] [visit_id half] @@ -37906,47 +32968,27 @@ DecD zeroop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape [visit_exp ?()] => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{lanetype#801 : lanetype, dim#801 : dim, i#12568 : nat, Jnn_1 : Jnn, i#12575 : nat, M_1 : M, lanetype#813 : lanetype, dim#813 : dim, i#12580 : nat, Jnn_2 : Jnn, i#12587 : nat, M_2 : M, half#1 : half, sx#80 : sx, half : half, sx : sx}(`%X%`_shape{lanetype#801, dim#801, i#12568}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#12575}(M_1)), `%X%`_shape{lanetype#813, dim#813, i#12580}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#12587}(M_2)), `EXTEND`_vcvtop__{half#1, sx#80}(half, sx)) = ?() -[check_dims] Fnn_2 Jnn_1 M_1 M_2 dim#825 dim#837 half half?#1 i#12592 i#12599 i#12604 i#12611 lanetype#825 lanetype#837 sx sx#82 -[visit_exp `%X%`_shape{lanetype#825, dim#825, i#12592}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#12599}(M_1))] -[visit_exp lanetype#825] -[visit_id lanetype#825] -[visit_exp dim#825] -[visit_id dim#825] -[visit_exp i#12592] -[visit_id i#12592] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#12599}(M_1))] + 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)) = ?() +[check_dims] Fnn_2 Jnn_1 M_1 M_2 half sx +[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] [visit_exp (Jnn_1 : Jnn <: lanetype)] [visit_exp Jnn_1] [visit_id Jnn_1] -[visit_exp `%`_dim{i#12599}(M_1)] -[visit_exp i#12599] -[visit_id i#12599] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] -[visit_exp `%X%`_shape{lanetype#837, dim#837, i#12604}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#12611}(M_2))] -[visit_exp lanetype#837] -[visit_id lanetype#837] -[visit_exp dim#837] -[visit_id dim#837] -[visit_exp i#12604] -[visit_id i#12604] -[visit_exp ((Fnn_2 : Fnn <: lanetype), `%`_dim{i#12611}(M_2))] +[visit_exp `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))] +[visit_exp ((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))] [visit_exp (Fnn_2 : Fnn <: lanetype)] [visit_exp Fnn_2] [visit_id Fnn_2] -[visit_exp `%`_dim{i#12611}(M_2)] -[visit_exp i#12611] -[visit_id i#12611] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] -[visit_exp `CONVERT`_vcvtop__{`half?#1`, sx#82}(half?{half <- `half?`}, sx)] -[visit_exp `half?#1`] -[visit_id half?#1] -[visit_exp sx#82] -[visit_id sx#82] +[visit_exp `CONVERT`_vcvtop__(half?{half <- `half?`}, sx)] [visit_exp (half?{half <- `half?`}, sx)] [visit_exp half?{half <- `half?`}] [scope_enter half] @@ -37962,47 +33004,27 @@ DecD zeroop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape [visit_exp ?()] => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{lanetype#825 : lanetype, dim#825 : dim, i#12592 : nat, Jnn_1 : Jnn, i#12599 : nat, M_1 : M, lanetype#837 : lanetype, dim#837 : dim, i#12604 : nat, Fnn_2 : Fnn, i#12611 : nat, M_2 : M, `half?#1` : half?, sx#82 : sx, `half?` : half?, sx : sx}(`%X%`_shape{lanetype#825, dim#825, i#12592}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#12599}(M_1)), `%X%`_shape{lanetype#837, dim#837, i#12604}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#12611}(M_2)), `CONVERT`_vcvtop__{`half?#1`, sx#82}(half?{half <- `half?`}, sx)) = ?() -[check_dims] Fnn_1 Jnn_2 M_1 M_2 dim#864 dim#876 i#12631 i#12638 i#12643 i#12650 lanetype#864 lanetype#876 sx sx#84 zero zero?#1 -[visit_exp `%X%`_shape{lanetype#864, dim#864, i#12631}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#12638}(M_1))] -[visit_exp lanetype#864] -[visit_id lanetype#864] -[visit_exp dim#864] -[visit_id dim#864] -[visit_exp i#12631] -[visit_id i#12631] -[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim{i#12638}(M_1))] + 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)) = ?() +[check_dims] Fnn_1 Jnn_2 M_1 M_2 sx zero +[visit_exp `%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] +[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] [visit_exp (Fnn_1 : Fnn <: lanetype)] [visit_exp Fnn_1] [visit_id Fnn_1] -[visit_exp `%`_dim{i#12638}(M_1)] -[visit_exp i#12638] -[visit_id i#12638] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] -[visit_exp `%X%`_shape{lanetype#876, dim#876, i#12643}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#12650}(M_2))] -[visit_exp lanetype#876] -[visit_id lanetype#876] -[visit_exp dim#876] -[visit_id dim#876] -[visit_exp i#12643] -[visit_id i#12643] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#12650}(M_2))] +[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] [visit_exp (Jnn_2 : Jnn <: lanetype)] [visit_exp Jnn_2] [visit_id Jnn_2] -[visit_exp `%`_dim{i#12650}(M_2)] -[visit_exp i#12650] -[visit_id i#12650] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] -[visit_exp `TRUNC_SAT`_vcvtop__{sx#84, `zero?#1`}(sx, zero?{zero <- `zero?`})] -[visit_exp sx#84] -[visit_id sx#84] -[visit_exp `zero?#1`] -[visit_id zero?#1] +[visit_exp `TRUNC_SAT`_vcvtop__(sx, zero?{zero <- `zero?`})] [visit_exp (sx, zero?{zero <- `zero?`})] [visit_exp sx] [visit_id sx] @@ -38026,47 +33048,27 @@ DecD zeroop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape [visit_id zero?] no dims => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{lanetype#864 : lanetype, dim#864 : dim, i#12631 : nat, Fnn_1 : Fnn, i#12638 : nat, M_1 : M, lanetype#876 : lanetype, dim#876 : dim, i#12643 : nat, Jnn_2 : Jnn, i#12650 : nat, M_2 : M, sx#84 : sx, `zero?#1` : zero?, sx : sx, `zero?` : zero?}(`%X%`_shape{lanetype#864, dim#864, i#12631}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#12638}(M_1)), `%X%`_shape{lanetype#876, dim#876, i#12643}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#12650}(M_2)), `TRUNC_SAT`_vcvtop__{sx#84, `zero?#1`}(sx, zero?{zero <- `zero?`})) = zero?{zero <- `zero?`} -[check_dims] Fnn_1 Jnn_2 M_1 M_2 dim#918 dim#930 i#12685 i#12692 i#12697 i#12704 lanetype#918 lanetype#930 sx sx#86 zero zero?#3 -[visit_exp `%X%`_shape{lanetype#918, dim#918, i#12685}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#12692}(M_1))] -[visit_exp lanetype#918] -[visit_id lanetype#918] -[visit_exp dim#918] -[visit_id dim#918] -[visit_exp i#12685] -[visit_id i#12685] -[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim{i#12692}(M_1))] + 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?`} +[check_dims] Fnn_1 Jnn_2 M_1 M_2 sx zero +[visit_exp `%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] +[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] [visit_exp (Fnn_1 : Fnn <: lanetype)] [visit_exp Fnn_1] [visit_id Fnn_1] -[visit_exp `%`_dim{i#12692}(M_1)] -[visit_exp i#12692] -[visit_id i#12692] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] -[visit_exp `%X%`_shape{lanetype#930, dim#930, i#12697}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#12704}(M_2))] -[visit_exp lanetype#930] -[visit_id lanetype#930] -[visit_exp dim#930] -[visit_id dim#930] -[visit_exp i#12697] -[visit_id i#12697] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#12704}(M_2))] +[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] [visit_exp (Jnn_2 : Jnn <: lanetype)] [visit_exp Jnn_2] [visit_id Jnn_2] -[visit_exp `%`_dim{i#12704}(M_2)] -[visit_exp i#12704] -[visit_id i#12704] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] -[visit_exp `RELAXED_TRUNC`_vcvtop__{sx#86, `zero?#3`}(sx, zero?{zero <- `zero?`})] -[visit_exp sx#86] -[visit_id sx#86] -[visit_exp `zero?#3`] -[visit_id zero?#3] +[visit_exp `RELAXED_TRUNC`_vcvtop__(sx, zero?{zero <- `zero?`})] [visit_exp (sx, zero?{zero <- `zero?`})] [visit_exp sx] [visit_id sx] @@ -38090,45 +33092,27 @@ DecD zeroop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape [visit_id zero?] no dims => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{lanetype#918 : lanetype, dim#918 : dim, i#12685 : nat, Fnn_1 : Fnn, i#12692 : nat, M_1 : M, lanetype#930 : lanetype, dim#930 : dim, i#12697 : nat, Jnn_2 : Jnn, i#12704 : nat, M_2 : M, sx#86 : sx, `zero?#3` : zero?, sx : sx, `zero?` : zero?}(`%X%`_shape{lanetype#918, dim#918, i#12685}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#12692}(M_1)), `%X%`_shape{lanetype#930, dim#930, i#12697}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#12704}(M_2)), `RELAXED_TRUNC`_vcvtop__{sx#86, `zero?#3`}(sx, zero?{zero <- `zero?`})) = zero?{zero <- `zero?`} -[check_dims] Fnn_1 Fnn_2 M_1 M_2 dim#972 dim#984 i#12739 i#12746 i#12751 i#12758 lanetype#972 lanetype#984 zero zero#1 -[visit_exp `%X%`_shape{lanetype#972, dim#972, i#12739}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#12746}(M_1))] -[visit_exp lanetype#972] -[visit_id lanetype#972] -[visit_exp dim#972] -[visit_id dim#972] -[visit_exp i#12739] -[visit_id i#12739] -[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim{i#12746}(M_1))] + 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?`} +[check_dims] Fnn_1 Fnn_2 M_1 M_2 zero +[visit_exp `%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] +[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] [visit_exp (Fnn_1 : Fnn <: lanetype)] [visit_exp Fnn_1] [visit_id Fnn_1] -[visit_exp `%`_dim{i#12746}(M_1)] -[visit_exp i#12746] -[visit_id i#12746] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] -[visit_exp `%X%`_shape{lanetype#984, dim#984, i#12751}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#12758}(M_2))] -[visit_exp lanetype#984] -[visit_id lanetype#984] -[visit_exp dim#984] -[visit_id dim#984] -[visit_exp i#12751] -[visit_id i#12751] -[visit_exp ((Fnn_2 : Fnn <: lanetype), `%`_dim{i#12758}(M_2))] +[visit_exp `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))] +[visit_exp ((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))] [visit_exp (Fnn_2 : Fnn <: lanetype)] [visit_exp Fnn_2] [visit_id Fnn_2] -[visit_exp `%`_dim{i#12758}(M_2)] -[visit_exp i#12758] -[visit_id i#12758] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] -[visit_exp `DEMOTE`_vcvtop__{zero#1}(zero)] -[visit_exp zero#1] -[visit_id zero#1] +[visit_exp `DEMOTE`_vcvtop__(zero)] [visit_exp (zero)] [visit_exp zero] [visit_id zero] @@ -38137,39 +33121,23 @@ DecD zeroop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape [visit_id zero] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{lanetype#972 : lanetype, dim#972 : dim, i#12739 : nat, Fnn_1 : Fnn, i#12746 : nat, M_1 : M, lanetype#984 : lanetype, dim#984 : dim, i#12751 : nat, Fnn_2 : Fnn, i#12758 : nat, M_2 : M, zero#1 : zero, zero : zero}(`%X%`_shape{lanetype#972, dim#972, i#12739}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#12746}(M_1)), `%X%`_shape{lanetype#984, dim#984, i#12751}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#12758}(M_2)), `DEMOTE`_vcvtop__{zero#1}(zero)) = ?(zero) -[check_dims] Fnn_1 Fnn_2 M_1 M_2 dim#1041 dim#1053 i#12808 i#12815 i#12820 i#12827 lanetype#1041 lanetype#1053 -[visit_exp `%X%`_shape{lanetype#1041, dim#1041, i#12808}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#12815}(M_1))] -[visit_exp lanetype#1041] -[visit_id lanetype#1041] -[visit_exp dim#1041] -[visit_id dim#1041] -[visit_exp i#12808] -[visit_id i#12808] -[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim{i#12815}(M_1))] + 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) +[check_dims] Fnn_1 Fnn_2 M_1 M_2 +[visit_exp `%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] +[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] [visit_exp (Fnn_1 : Fnn <: lanetype)] [visit_exp Fnn_1] [visit_id Fnn_1] -[visit_exp `%`_dim{i#12815}(M_1)] -[visit_exp i#12815] -[visit_id i#12815] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] -[visit_exp `%X%`_shape{lanetype#1053, dim#1053, i#12820}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#12827}(M_2))] -[visit_exp lanetype#1053] -[visit_id lanetype#1053] -[visit_exp dim#1053] -[visit_id dim#1053] -[visit_exp i#12820] -[visit_id i#12820] -[visit_exp ((Fnn_2 : Fnn <: lanetype), `%`_dim{i#12827}(M_2))] +[visit_exp `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))] +[visit_exp ((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))] [visit_exp (Fnn_2 : Fnn <: lanetype)] [visit_exp Fnn_2] [visit_id Fnn_2] -[visit_exp `%`_dim{i#12827}(M_2)] -[visit_exp i#12827] -[visit_id i#12827] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] @@ -38178,7 +33146,7 @@ DecD zeroop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape [visit_exp ?()] => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{lanetype#1041 : lanetype, dim#1041 : dim, i#12808 : nat, Fnn_1 : Fnn, i#12815 : nat, M_1 : M, lanetype#1053 : lanetype, dim#1053 : dim, i#12820 : nat, Fnn_2 : Fnn, i#12827 : nat, M_2 : M}(`%X%`_shape{lanetype#1041, dim#1041, i#12808}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#12815}(M_1)), `%X%`_shape{lanetype#1053, dim#1053, i#12820}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#12827}(M_2)), `PROMOTELOW`_vcvtop__) = ?() + 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__) = ?() [check_dims] shape_1 shape_2 vcvtop__ DecD halfop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2)) : half? [visit_id shape_1] not free @@ -38188,46 +33156,26 @@ DecD halfop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape [visit_id shape_1] not free [visit_exp shape_2] [visit_id shape_2] not free -[check_dims] Jnn_1 Jnn_2 M_1 M_2 dim#1122 dim#1134 half half#3 i#12881 i#12888 i#12893 i#12900 lanetype#1122 lanetype#1134 sx sx#88 -[visit_exp `%X%`_shape{lanetype#1122, dim#1122, i#12881}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#12888}(M_1))] -[visit_exp lanetype#1122] -[visit_id lanetype#1122] -[visit_exp dim#1122] -[visit_id dim#1122] -[visit_exp i#12881] -[visit_id i#12881] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#12888}(M_1))] +[check_dims] Jnn_1 Jnn_2 M_1 M_2 half sx +[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] [visit_exp (Jnn_1 : Jnn <: lanetype)] [visit_exp Jnn_1] [visit_id Jnn_1] -[visit_exp `%`_dim{i#12888}(M_1)] -[visit_exp i#12888] -[visit_id i#12888] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] -[visit_exp `%X%`_shape{lanetype#1134, dim#1134, i#12893}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#12900}(M_2))] -[visit_exp lanetype#1134] -[visit_id lanetype#1134] -[visit_exp dim#1134] -[visit_id dim#1134] -[visit_exp i#12893] -[visit_id i#12893] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#12900}(M_2))] +[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] [visit_exp (Jnn_2 : Jnn <: lanetype)] [visit_exp Jnn_2] [visit_id Jnn_2] -[visit_exp `%`_dim{i#12900}(M_2)] -[visit_exp i#12900] -[visit_id i#12900] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] -[visit_exp `EXTEND`_vcvtop__{half#3, sx#88}(half, sx)] -[visit_exp half#3] -[visit_id half#3] -[visit_exp sx#88] -[visit_id sx#88] +[visit_exp `EXTEND`_vcvtop__(half, sx)] [visit_exp (half, sx)] [visit_exp half] [visit_id half] @@ -38238,47 +33186,27 @@ DecD halfop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape [visit_id half] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{lanetype#1122 : lanetype, dim#1122 : dim, i#12881 : nat, Jnn_1 : Jnn, i#12888 : nat, M_1 : M, lanetype#1134 : lanetype, dim#1134 : dim, i#12893 : nat, Jnn_2 : Jnn, i#12900 : nat, M_2 : M, half#3 : half, sx#88 : sx, half : half, sx : sx}(`%X%`_shape{lanetype#1122, dim#1122, i#12881}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#12888}(M_1)), `%X%`_shape{lanetype#1134, dim#1134, i#12893}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#12900}(M_2)), `EXTEND`_vcvtop__{half#3, sx#88}(half, sx)) = ?(half) -[check_dims] Fnn_2 Jnn_1 M_1 M_2 dim#1146 dim#1158 half half?#3 i#12905 i#12912 i#12917 i#12924 lanetype#1146 lanetype#1158 sx sx#90 -[visit_exp `%X%`_shape{lanetype#1146, dim#1146, i#12905}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#12912}(M_1))] -[visit_exp lanetype#1146] -[visit_id lanetype#1146] -[visit_exp dim#1146] -[visit_id dim#1146] -[visit_exp i#12905] -[visit_id i#12905] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#12912}(M_1))] + 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) +[check_dims] Fnn_2 Jnn_1 M_1 M_2 half sx +[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] [visit_exp (Jnn_1 : Jnn <: lanetype)] [visit_exp Jnn_1] [visit_id Jnn_1] -[visit_exp `%`_dim{i#12912}(M_1)] -[visit_exp i#12912] -[visit_id i#12912] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] -[visit_exp `%X%`_shape{lanetype#1158, dim#1158, i#12917}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#12924}(M_2))] -[visit_exp lanetype#1158] -[visit_id lanetype#1158] -[visit_exp dim#1158] -[visit_id dim#1158] -[visit_exp i#12917] -[visit_id i#12917] -[visit_exp ((Fnn_2 : Fnn <: lanetype), `%`_dim{i#12924}(M_2))] +[visit_exp `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))] +[visit_exp ((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))] [visit_exp (Fnn_2 : Fnn <: lanetype)] [visit_exp Fnn_2] [visit_id Fnn_2] -[visit_exp `%`_dim{i#12924}(M_2)] -[visit_exp i#12924] -[visit_id i#12924] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] -[visit_exp `CONVERT`_vcvtop__{`half?#3`, sx#90}(half?{half <- `half?`}, sx)] -[visit_exp `half?#3`] -[visit_id half?#3] -[visit_exp sx#90] -[visit_id sx#90] +[visit_exp `CONVERT`_vcvtop__(half?{half <- `half?`}, sx)] [visit_exp (half?{half <- `half?`}, sx)] [visit_exp half?{half <- `half?`}] [scope_enter half] @@ -38302,47 +33230,27 @@ DecD halfop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape [visit_id half?] no dims => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{lanetype#1146 : lanetype, dim#1146 : dim, i#12905 : nat, Jnn_1 : Jnn, i#12912 : nat, M_1 : M, lanetype#1158 : lanetype, dim#1158 : dim, i#12917 : nat, Fnn_2 : Fnn, i#12924 : nat, M_2 : M, `half?#3` : half?, sx#90 : sx, `half?` : half?, sx : sx}(`%X%`_shape{lanetype#1146, dim#1146, i#12905}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#12912}(M_1)), `%X%`_shape{lanetype#1158, dim#1158, i#12917}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#12924}(M_2)), `CONVERT`_vcvtop__{`half?#3`, sx#90}(half?{half <- `half?`}, sx)) = half?{half <- `half?`} -[check_dims] Fnn_1 Jnn_2 M_1 M_2 dim#1185 dim#1197 i#12944 i#12951 i#12956 i#12963 lanetype#1185 lanetype#1197 sx sx#92 zero zero?#5 -[visit_exp `%X%`_shape{lanetype#1185, dim#1185, i#12944}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#12951}(M_1))] -[visit_exp lanetype#1185] -[visit_id lanetype#1185] -[visit_exp dim#1185] -[visit_id dim#1185] -[visit_exp i#12944] -[visit_id i#12944] -[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim{i#12951}(M_1))] + 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?`} +[check_dims] Fnn_1 Jnn_2 M_1 M_2 sx zero +[visit_exp `%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] +[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] [visit_exp (Fnn_1 : Fnn <: lanetype)] [visit_exp Fnn_1] [visit_id Fnn_1] -[visit_exp `%`_dim{i#12951}(M_1)] -[visit_exp i#12951] -[visit_id i#12951] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] -[visit_exp `%X%`_shape{lanetype#1197, dim#1197, i#12956}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#12963}(M_2))] -[visit_exp lanetype#1197] -[visit_id lanetype#1197] -[visit_exp dim#1197] -[visit_id dim#1197] -[visit_exp i#12956] -[visit_id i#12956] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#12963}(M_2))] +[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] [visit_exp (Jnn_2 : Jnn <: lanetype)] [visit_exp Jnn_2] [visit_id Jnn_2] -[visit_exp `%`_dim{i#12963}(M_2)] -[visit_exp i#12963] -[visit_id i#12963] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] -[visit_exp `TRUNC_SAT`_vcvtop__{sx#92, `zero?#5`}(sx, zero?{zero <- `zero?`})] -[visit_exp sx#92] -[visit_id sx#92] -[visit_exp `zero?#5`] -[visit_id zero?#5] +[visit_exp `TRUNC_SAT`_vcvtop__(sx, zero?{zero <- `zero?`})] [visit_exp (sx, zero?{zero <- `zero?`})] [visit_exp sx] [visit_id sx] @@ -38358,47 +33266,27 @@ DecD halfop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape [visit_exp ?()] => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{lanetype#1185 : lanetype, dim#1185 : dim, i#12944 : nat, Fnn_1 : Fnn, i#12951 : nat, M_1 : M, lanetype#1197 : lanetype, dim#1197 : dim, i#12956 : nat, Jnn_2 : Jnn, i#12963 : nat, M_2 : M, sx#92 : sx, `zero?#5` : zero?, sx : sx, `zero?` : zero?}(`%X%`_shape{lanetype#1185, dim#1185, i#12944}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#12951}(M_1)), `%X%`_shape{lanetype#1197, dim#1197, i#12956}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#12963}(M_2)), `TRUNC_SAT`_vcvtop__{sx#92, `zero?#5`}(sx, zero?{zero <- `zero?`})) = ?() -[check_dims] Fnn_1 Jnn_2 M_1 M_2 dim#1239 dim#1251 i#12998 i#13005 i#13010 i#13017 lanetype#1239 lanetype#1251 sx sx#94 zero zero?#7 -[visit_exp `%X%`_shape{lanetype#1239, dim#1239, i#12998}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#13005}(M_1))] -[visit_exp lanetype#1239] -[visit_id lanetype#1239] -[visit_exp dim#1239] -[visit_id dim#1239] -[visit_exp i#12998] -[visit_id i#12998] -[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim{i#13005}(M_1))] + 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?`})) = ?() +[check_dims] Fnn_1 Jnn_2 M_1 M_2 sx zero +[visit_exp `%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] +[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] [visit_exp (Fnn_1 : Fnn <: lanetype)] [visit_exp Fnn_1] [visit_id Fnn_1] -[visit_exp `%`_dim{i#13005}(M_1)] -[visit_exp i#13005] -[visit_id i#13005] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] -[visit_exp `%X%`_shape{lanetype#1251, dim#1251, i#13010}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#13017}(M_2))] -[visit_exp lanetype#1251] -[visit_id lanetype#1251] -[visit_exp dim#1251] -[visit_id dim#1251] -[visit_exp i#13010] -[visit_id i#13010] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#13017}(M_2))] +[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] [visit_exp (Jnn_2 : Jnn <: lanetype)] [visit_exp Jnn_2] [visit_id Jnn_2] -[visit_exp `%`_dim{i#13017}(M_2)] -[visit_exp i#13017] -[visit_id i#13017] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] -[visit_exp `RELAXED_TRUNC`_vcvtop__{sx#94, `zero?#7`}(sx, zero?{zero <- `zero?`})] -[visit_exp sx#94] -[visit_id sx#94] -[visit_exp `zero?#7`] -[visit_id zero?#7] +[visit_exp `RELAXED_TRUNC`_vcvtop__(sx, zero?{zero <- `zero?`})] [visit_exp (sx, zero?{zero <- `zero?`})] [visit_exp sx] [visit_id sx] @@ -38414,84 +33302,50 @@ DecD halfop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape [visit_exp ?()] => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{lanetype#1239 : lanetype, dim#1239 : dim, i#12998 : nat, Fnn_1 : Fnn, i#13005 : nat, M_1 : M, lanetype#1251 : lanetype, dim#1251 : dim, i#13010 : nat, Jnn_2 : Jnn, i#13017 : nat, M_2 : M, sx#94 : sx, `zero?#7` : zero?, sx : sx, `zero?` : zero?}(`%X%`_shape{lanetype#1239, dim#1239, i#12998}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#13005}(M_1)), `%X%`_shape{lanetype#1251, dim#1251, i#13010}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#13017}(M_2)), `RELAXED_TRUNC`_vcvtop__{sx#94, `zero?#7`}(sx, zero?{zero <- `zero?`})) = ?() -[check_dims] Fnn_1 Fnn_2 M_1 M_2 dim#1293 dim#1305 i#13052 i#13059 i#13064 i#13071 lanetype#1293 lanetype#1305 zero zero#3 -[visit_exp `%X%`_shape{lanetype#1293, dim#1293, i#13052}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#13059}(M_1))] -[visit_exp lanetype#1293] -[visit_id lanetype#1293] -[visit_exp dim#1293] -[visit_id dim#1293] -[visit_exp i#13052] -[visit_id i#13052] -[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim{i#13059}(M_1))] + 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?`})) = ?() +[check_dims] Fnn_1 Fnn_2 M_1 M_2 zero +[visit_exp `%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] +[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] [visit_exp (Fnn_1 : Fnn <: lanetype)] [visit_exp Fnn_1] [visit_id Fnn_1] -[visit_exp `%`_dim{i#13059}(M_1)] -[visit_exp i#13059] -[visit_id i#13059] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] -[visit_exp `%X%`_shape{lanetype#1305, dim#1305, i#13064}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#13071}(M_2))] -[visit_exp lanetype#1305] -[visit_id lanetype#1305] -[visit_exp dim#1305] -[visit_id dim#1305] -[visit_exp i#13064] -[visit_id i#13064] -[visit_exp ((Fnn_2 : Fnn <: lanetype), `%`_dim{i#13071}(M_2))] +[visit_exp `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))] +[visit_exp ((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))] [visit_exp (Fnn_2 : Fnn <: lanetype)] [visit_exp Fnn_2] [visit_id Fnn_2] -[visit_exp `%`_dim{i#13071}(M_2)] -[visit_exp i#13071] -[visit_id i#13071] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] -[visit_exp `DEMOTE`_vcvtop__{zero#3}(zero)] -[visit_exp zero#3] -[visit_id zero#3] +[visit_exp `DEMOTE`_vcvtop__(zero)] [visit_exp (zero)] [visit_exp zero] [visit_id zero] [visit_exp ?()] => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{lanetype#1293 : lanetype, dim#1293 : dim, i#13052 : nat, Fnn_1 : Fnn, i#13059 : nat, M_1 : M, lanetype#1305 : lanetype, dim#1305 : dim, i#13064 : nat, Fnn_2 : Fnn, i#13071 : nat, M_2 : M, zero#3 : zero, zero : zero}(`%X%`_shape{lanetype#1293, dim#1293, i#13052}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#13059}(M_1)), `%X%`_shape{lanetype#1305, dim#1305, i#13064}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#13071}(M_2)), `DEMOTE`_vcvtop__{zero#3}(zero)) = ?() -[check_dims] Fnn_1 Fnn_2 M_1 M_2 dim#1362 dim#1374 i#13121 i#13128 i#13133 i#13140 lanetype#1362 lanetype#1374 -[visit_exp `%X%`_shape{lanetype#1362, dim#1362, i#13121}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#13128}(M_1))] -[visit_exp lanetype#1362] -[visit_id lanetype#1362] -[visit_exp dim#1362] -[visit_id dim#1362] -[visit_exp i#13121] -[visit_id i#13121] -[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim{i#13128}(M_1))] + 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)) = ?() +[check_dims] Fnn_1 Fnn_2 M_1 M_2 +[visit_exp `%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] +[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] [visit_exp (Fnn_1 : Fnn <: lanetype)] [visit_exp Fnn_1] [visit_id Fnn_1] -[visit_exp `%`_dim{i#13128}(M_1)] -[visit_exp i#13128] -[visit_id i#13128] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] -[visit_exp `%X%`_shape{lanetype#1374, dim#1374, i#13133}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#13140}(M_2))] -[visit_exp lanetype#1374] -[visit_id lanetype#1374] -[visit_exp dim#1374] -[visit_id dim#1374] -[visit_exp i#13133] -[visit_id i#13133] -[visit_exp ((Fnn_2 : Fnn <: lanetype), `%`_dim{i#13140}(M_2))] +[visit_exp `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))] +[visit_exp ((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))] [visit_exp (Fnn_2 : Fnn <: lanetype)] [visit_exp Fnn_2] [visit_id Fnn_2] -[visit_exp `%`_dim{i#13140}(M_2)] -[visit_exp i#13140] -[visit_id i#13140] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] @@ -38502,7 +33356,7 @@ DecD halfop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape [visit_exp ()] => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{lanetype#1362 : lanetype, dim#1362 : dim, i#13121 : nat, Fnn_1 : Fnn, i#13128 : nat, M_1 : M, lanetype#1374 : lanetype, dim#1374 : dim, i#13133 : nat, Fnn_2 : Fnn, i#13140 : nat, M_2 : M}(`%X%`_shape{lanetype#1362, dim#1362, i#13121}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#13128}(M_1)), `%X%`_shape{lanetype#1374, dim#1374, i#13133}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#13140}(M_2)), `PROMOTELOW`_vcvtop__) = ?(`LOW`_half) + 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) [check_dims] half nat DecD half(half : half, nat : nat, nat : nat) : nat [visit_id half] not free @@ -38554,7 +33408,7 @@ DecD irelaxed_swizzle_lane_(N : N, iN(N)*, iN : iN(N)) : iN(N) [visit_id N] not free [visit_exp N] [visit_id N] not free -[check_dims] N c i i#13205 i#13213 +[check_dims] N c i [visit_exp N] [visit_id N] [visit_exp c*{c <- `c*`}] @@ -38568,7 +33422,7 @@ DecD irelaxed_swizzle_lane_(N : N, iN(N)*, iN : iN(N)) : iN(N) [visit_id c*] [visit_exp i] [visit_id i] -[visit_exp c*{c <- `c*`}[i!`%`_iN{i#13213}.0]] +[visit_exp c*{c <- `c*`}[i!`%`_iN.0]] [visit_exp c*{c <- `c*`}] [scope_enter c] [visit_exp c] @@ -38578,19 +33432,15 @@ DecD irelaxed_swizzle_lane_(N : N, iN(N)*, iN : iN(N)) : iN(N) [visit_exp `c*`] [visit_id c*] not free [visit_id c*] no dims -[visit_exp i!`%`_iN{i#13213}.0] -[visit_exp i!`%`_iN{i#13213}] +[visit_exp i!`%`_iN.0] +[visit_exp i!`%`_iN] [visit_exp i] [visit_id i] not free -[visit_exp i#13213] -[visit_id i#13213] -[visit_exp (i!`%`_iN{i#13205}.0 < |c*{c <- `c*`}|)] -[visit_exp i!`%`_iN{i#13205}.0] -[visit_exp i!`%`_iN{i#13205}] +[visit_exp (i!`%`_iN.0 < |c*{c <- `c*`}|)] +[visit_exp i!`%`_iN.0] +[visit_exp i!`%`_iN] [visit_exp i] [visit_id i] not free -[visit_exp i#13205] -[visit_id i#13205] [visit_exp |c*{c <- `c*`}|] [visit_exp c*{c <- `c*`}] [scope_enter c] @@ -38603,9 +33453,9 @@ DecD irelaxed_swizzle_lane_(N : N, iN(N)*, iN : iN(N)) : iN(N) [visit_id c*] no dims => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $iswizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N), i#13213 : nat, i#13205 : nat}(N, c*{c <- `c*`}, i) = c*{c <- `c*`}[i!`%`_iN{i#13213}.0] - -- if (i!`%`_iN{i#13205}.0 < |c*{c <- `c*`}|) -[check_dims] N c i i#13239 + def $iswizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = c*{c <- `c*`}[i!`%`_iN.0] + -- if (i!`%`_iN.0 < |c*{c <- `c*`}|) +[check_dims] N c i [visit_exp N] [visit_id N] [visit_exp c*{c <- `c*`}] @@ -38619,16 +33469,14 @@ DecD irelaxed_swizzle_lane_(N : N, iN(N)*, iN : iN(N)) : iN(N) [visit_id c*] [visit_exp i] [visit_id i] -[visit_exp `%`_iN{i#13239}(0)] -[visit_exp i#13239] -[visit_id i#13239] +[visit_exp `%`_iN(0)] [visit_exp (0)] [visit_exp 0] => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $iswizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N), i#13239 : nat}(N, c*{c <- `c*`}, i) = `%`_iN{i#13239}(0) + def $iswizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = `%`_iN(0) -- otherwise -[check_dims] N c i i#13259 i#13267 +[check_dims] N c i [visit_exp N] [visit_id N] [visit_exp c*{c <- `c*`}] @@ -38642,7 +33490,7 @@ DecD irelaxed_swizzle_lane_(N : N, iN(N)*, iN : iN(N)) : iN(N) [visit_id c*] [visit_exp i] [visit_id i] -[visit_exp c*{c <- `c*`}[i!`%`_iN{i#13267}.0]] +[visit_exp c*{c <- `c*`}[i!`%`_iN.0]] [visit_exp c*{c <- `c*`}] [scope_enter c] [visit_exp c] @@ -38652,19 +33500,15 @@ DecD irelaxed_swizzle_lane_(N : N, iN(N)*, iN : iN(N)) : iN(N) [visit_exp `c*`] [visit_id c*] not free [visit_id c*] no dims -[visit_exp i!`%`_iN{i#13267}.0] -[visit_exp i!`%`_iN{i#13267}] +[visit_exp i!`%`_iN.0] +[visit_exp i!`%`_iN] [visit_exp i] [visit_id i] not free -[visit_exp i#13267] -[visit_id i#13267] -[visit_exp (i!`%`_iN{i#13259}.0 < |c*{c <- `c*`}|)] -[visit_exp i!`%`_iN{i#13259}.0] -[visit_exp i!`%`_iN{i#13259}] +[visit_exp (i!`%`_iN.0 < |c*{c <- `c*`}|)] +[visit_exp i!`%`_iN.0] +[visit_exp i!`%`_iN] [visit_exp i] [visit_id i] not free -[visit_exp i#13259] -[visit_id i#13259] [visit_exp |c*{c <- `c*`}|] [visit_exp c*{c <- `c*`}] [scope_enter c] @@ -38677,9 +33521,9 @@ DecD irelaxed_swizzle_lane_(N : N, iN(N)*, iN : iN(N)) : iN(N) [visit_id c*] no dims => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N), i#13267 : nat, i#13259 : nat}(N, c*{c <- `c*`}, i) = c*{c <- `c*`}[i!`%`_iN{i#13267}.0] - -- if (i!`%`_iN{i#13259}.0 < |c*{c <- `c*`}|) -[check_dims] N c i i#13287 i#13295 + def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = c*{c <- `c*`}[i!`%`_iN.0] + -- if (i!`%`_iN.0 < |c*{c <- `c*`}|) +[check_dims] N c i [visit_exp N] [visit_id N] [visit_exp c*{c <- `c*`}] @@ -38693,28 +33537,24 @@ DecD irelaxed_swizzle_lane_(N : N, iN(N)*, iN : iN(N)) : iN(N) [visit_id c*] [visit_exp i] [visit_id i] -[visit_exp `%`_iN{i#13295}(0)] -[visit_exp i#13295] -[visit_id i#13295] +[visit_exp `%`_iN(0)] [visit_exp (0)] [visit_exp 0] -[visit_exp ($signed_(N, i!`%`_iN{i#13287}.0) < (0 : nat <:> int))] -[visit_exp $signed_(N, i!`%`_iN{i#13287}.0)] +[visit_exp ($signed_(N, i!`%`_iN.0) < (0 : nat <:> int))] +[visit_exp $signed_(N, i!`%`_iN.0)] [visit_exp N] [visit_id N] not free -[visit_exp i!`%`_iN{i#13287}.0] -[visit_exp i!`%`_iN{i#13287}] +[visit_exp i!`%`_iN.0] +[visit_exp i!`%`_iN] [visit_exp i] [visit_id i] not free -[visit_exp i#13287] -[visit_id i#13287] [visit_exp (0 : nat <:> int)] [visit_exp 0] => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N), i#13295 : nat, i#13287 : nat}(N, c*{c <- `c*`}, i) = `%`_iN{i#13295}(0) - -- if ($signed_(N, i!`%`_iN{i#13287}.0) < (0 : nat <:> int)) -[check_dims] N c i i#13333 i#13341 + def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = `%`_iN(0) + -- if ($signed_(N, i!`%`_iN.0) < (0 : nat <:> int)) +[check_dims] N c i [visit_exp N] [visit_id N] [visit_exp c*{c <- `c*`}] @@ -38728,16 +33568,14 @@ DecD irelaxed_swizzle_lane_(N : N, iN(N)*, iN : iN(N)) : iN(N) [visit_id c*] [visit_exp i] [visit_id i] -[visit_exp $relaxed2($R_swizzle, syntax iN(N), `%`_iN{i#13333}(0), c*{c <- `c*`}[(i!`%`_iN{i#13341}.0 \ |c*{c <- `c*`}|)])] +[visit_exp $relaxed2($R_swizzle, syntax iN(N), `%`_iN(0), c*{c <- `c*`}[(i!`%`_iN.0 \ |c*{c <- `c*`}|)])] [visit_exp $R_swizzle] [visit_exp N] [visit_id N] not free -[visit_exp `%`_iN{i#13333}(0)] -[visit_exp i#13333] -[visit_id i#13333] +[visit_exp `%`_iN(0)] [visit_exp (0)] [visit_exp 0] -[visit_exp c*{c <- `c*`}[(i!`%`_iN{i#13341}.0 \ |c*{c <- `c*`}|)]] +[visit_exp c*{c <- `c*`}[(i!`%`_iN.0 \ |c*{c <- `c*`}|)]] [visit_exp c*{c <- `c*`}] [scope_enter c] [visit_exp c] @@ -38747,13 +33585,11 @@ DecD irelaxed_swizzle_lane_(N : N, iN(N)*, iN : iN(N)) : iN(N) [visit_exp `c*`] [visit_id c*] not free [visit_id c*] no dims -[visit_exp (i!`%`_iN{i#13341}.0 \ |c*{c <- `c*`}|)] -[visit_exp i!`%`_iN{i#13341}.0] -[visit_exp i!`%`_iN{i#13341}] +[visit_exp (i!`%`_iN.0 \ |c*{c <- `c*`}|)] +[visit_exp i!`%`_iN.0] +[visit_exp i!`%`_iN] [visit_exp i] [visit_id i] not free -[visit_exp i#13341] -[visit_id i#13341] [visit_exp |c*{c <- `c*`}|] [visit_exp c*{c <- `c*`}] [scope_enter c] @@ -38766,7 +33602,7 @@ DecD irelaxed_swizzle_lane_(N : N, iN(N)*, iN : iN(N)) : iN(N) [visit_id c*] no dims => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N), i#13333 : nat, i#13341 : nat}(N, c*{c <- `c*`}, i) = $relaxed2($R_swizzle, syntax iN(N), `%`_iN{i#13333}(0), c*{c <- `c*`}[(i!`%`_iN{i#13341}.0 \ |c*{c <- `c*`}|)]) + def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = $relaxed2($R_swizzle, syntax iN(N), `%`_iN(0), c*{c <- `c*`}[(i!`%`_iN.0 \ |c*{c <- `c*`}|)]) -- otherwise [check_dims] N iN shape vec_ DecD ivunop_(shape : shape, def $f_(N : N, iN : iN(N)) : iN(N), vec_ : vec_(`V128`_Vnn)) : vec_(`V128`_Vnn)* @@ -39060,42 +33896,26 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp ()] [visit_exp `V128`_Vnn] [visit_exp ()] -[check_dims] Jnn M c c_1 dim#1431 dim#1443 dim#1469 i#13346 i#13353 i#13370 i#13377 i#13506 i#13513 lanetype#1431 lanetype#1443 lanetype#1469 v_1 -[visit_exp `%X%`_shape{lanetype#1431, dim#1431, i#13346}((Jnn : Jnn <: lanetype), `%`_dim{i#13353}(M))] -[visit_exp lanetype#1431] -[visit_id lanetype#1431] -[visit_exp dim#1431] -[visit_id dim#1431] -[visit_exp i#13346] -[visit_id i#13346] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#13353}(M))] +[check_dims] Jnn M c c_1 v_1 +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] -[visit_exp `%`_dim{i#13353}(M)] -[visit_exp i#13353] -[visit_id i#13353] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] [visit_exp v_1] [visit_id v_1] -[visit_exp [$inv_lanes_(`%X%`_shape{lanetype#1469, dim#1469, i#13506}((Jnn : Jnn <: lanetype), `%`_dim{i#13513}(M)), c*{c <- `c*`})]] -[visit_exp $inv_lanes_(`%X%`_shape{lanetype#1469, dim#1469, i#13506}((Jnn : Jnn <: lanetype), `%`_dim{i#13513}(M)), c*{c <- `c*`})] -[visit_exp `%X%`_shape{lanetype#1469, dim#1469, i#13506}((Jnn : Jnn <: lanetype), `%`_dim{i#13513}(M))] -[visit_exp lanetype#1469] -[visit_id lanetype#1469] -[visit_exp dim#1469] -[visit_id dim#1469] -[visit_exp i#13506] -[visit_id i#13506] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#13513}(M))] +[visit_exp [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})]] +[visit_exp $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#13513}(M)] -[visit_exp i#13513] -[visit_id i#13513] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -39108,7 +33928,7 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c*`] [visit_id c*] no dims [visit_id c*] -[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#1443, dim#1443, i#13370}((Jnn : Jnn <: lanetype), `%`_dim{i#13377}(M)), v_1))] +[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1))] [visit_exp c_1*{c_1 <- `c_1*`}] [scope_enter c_1] [visit_exp c_1] @@ -39118,21 +33938,13 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c_1*`] [visit_id c_1*] no dims [visit_id c_1*] -[visit_exp $lanes_(`%X%`_shape{lanetype#1443, dim#1443, i#13370}((Jnn : Jnn <: lanetype), `%`_dim{i#13377}(M)), v_1)] -[visit_exp `%X%`_shape{lanetype#1443, dim#1443, i#13370}((Jnn : Jnn <: lanetype), `%`_dim{i#13377}(M))] -[visit_exp lanetype#1443] -[visit_id lanetype#1443] -[visit_exp dim#1443] -[visit_id dim#1443] -[visit_exp i#13370] -[visit_id i#13370] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#13377}(M))] +[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#13377}(M)] -[visit_exp i#13377] -[visit_id i#13377] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -39164,50 +33976,30 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_id c_1*] no dims => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivunop_{lanetype#1431 : lanetype, dim#1431 : dim, i#13346 : nat, Jnn : Jnn, i#13353 : nat, M : M, def $f_(N : N, iN : iN(N)) : iN(N), v_1 : vec_(`V128`_Vnn), lanetype#1469 : lanetype, dim#1469 : dim, i#13506 : nat, i#13513 : nat, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, lanetype#1443 : lanetype, dim#1443 : dim, i#13370 : nat, i#13377 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#1443, dim#1443, i#13370}((Jnn : Jnn <: lanetype), `%`_dim{i#13377}(M))))*}(`%X%`_shape{lanetype#1431, dim#1431, i#13346}((Jnn : Jnn <: lanetype), `%`_dim{i#13353}(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape{lanetype#1469, dim#1469, i#13506}((Jnn : Jnn <: lanetype), `%`_dim{i#13513}(M)), c*{c <- `c*`})] - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#1443, dim#1443, i#13370}((Jnn : Jnn <: lanetype), `%`_dim{i#13377}(M)), v_1)) + 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*`})] + -- 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)), c_1)*{c_1 <- `c_1*`}) -[check_dims] Fnn M c c_1 dim#1493 dim#1505 dim#1532 i#13579 i#13586 i#13603 i#13610 i#13693 i#13700 lanetype#1493 lanetype#1505 lanetype#1532 v_1 -[visit_exp `%X%`_shape{lanetype#1493, dim#1493, i#13579}((Fnn : Fnn <: lanetype), `%`_dim{i#13586}(M))] -[visit_exp lanetype#1493] -[visit_id lanetype#1493] -[visit_exp dim#1493] -[visit_id dim#1493] -[visit_exp i#13579] -[visit_id i#13579] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#13586}(M))] +[check_dims] Fnn M c c_1 v_1 +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] -[visit_exp `%`_dim{i#13586}(M)] -[visit_exp i#13586] -[visit_id i#13586] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] [visit_exp v_1] [visit_id v_1] -[visit_exp $inv_lanes_(`%X%`_shape{lanetype#1532, dim#1532, i#13693}((Fnn : Fnn <: lanetype), `%`_dim{i#13700}(M)), c*{c <- `c*`})*{`c*` <- `c**`, dim#1532 <- `dim#1532*`, i#13693 <- `i#13693*`, i#13700 <- `i#13700*`, lanetype#1532 <- `lanetype#1532*`}] +[visit_exp $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}] [scope_enter c*] -[scope_enter dim#1532] -[scope_enter i#13693] -[scope_enter i#13700] -[scope_enter lanetype#1532] -[visit_exp $inv_lanes_(`%X%`_shape{lanetype#1532, dim#1532, i#13693}((Fnn : Fnn <: lanetype), `%`_dim{i#13700}(M)), c*{c <- `c*`})] -[visit_exp `%X%`_shape{lanetype#1532, dim#1532, i#13693}((Fnn : Fnn <: lanetype), `%`_dim{i#13700}(M))] -[visit_exp lanetype#1532] -[visit_id lanetype#1532] not free -[visit_exp dim#1532] -[visit_id dim#1532] not free -[visit_exp i#13693] -[visit_id i#13693] not free -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#13700}(M))] +[visit_exp $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})] +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] not free -[visit_exp `%`_dim{i#13700}(M)] -[visit_exp i#13700] -[visit_id i#13700] not free +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -39222,31 +34014,11 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_id c*] no dims [visit_id c*] not free [visit_id c*] no dims -[visit_id dim#1532] not free -[visit_id i#13693] not free -[visit_id i#13700] not free -[visit_id lanetype#1532] not free -[scope_exit lanetype#1532] -[scope_exit i#13700] -[scope_exit i#13693] -[scope_exit dim#1532] [scope_exit c*] [visit_exp `c**`] [visit_id c**] no dims [visit_id c**] -[visit_exp `dim#1532*`] -[visit_id dim#1532*] no dims -[visit_id dim#1532*] -[visit_exp `i#13693*`] -[visit_id i#13693*] no dims -[visit_id i#13693*] -[visit_exp `i#13700*`] -[visit_id i#13700*] no dims -[visit_id i#13700*] -[visit_exp `lanetype#1532*`] -[visit_id lanetype#1532*] no dims -[visit_id lanetype#1532*] -[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#1505, dim#1505, i#13603}((Fnn : Fnn <: lanetype), `%`_dim{i#13610}(M)), v_1))] +[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1))] [visit_exp c_1*{c_1 <- `c_1*`}] [scope_enter c_1] [visit_exp c_1] @@ -39256,21 +34028,13 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c_1*`] [visit_id c_1*] no dims [visit_id c_1*] -[visit_exp $lanes_(`%X%`_shape{lanetype#1505, dim#1505, i#13603}((Fnn : Fnn <: lanetype), `%`_dim{i#13610}(M)), v_1)] -[visit_exp `%X%`_shape{lanetype#1505, dim#1505, i#13603}((Fnn : Fnn <: lanetype), `%`_dim{i#13610}(M))] -[visit_exp lanetype#1505] -[visit_id lanetype#1505] -[visit_exp dim#1505] -[visit_id dim#1505] -[visit_exp i#13603] -[visit_id i#13603] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#13610}(M))] +[visit_exp $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)] +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] not free -[visit_exp `%`_dim{i#13610}(M)] -[visit_exp i#13610] -[visit_id i#13610] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -39314,24 +34078,16 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_id c_1*] no dims => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvunop_{lanetype#1493 : lanetype, dim#1493 : dim, i#13579 : nat, Fnn : Fnn, i#13586 : nat, M : M, def $f_(N : N, fN : fN(N)) : fN(N)*, v_1 : vec_(`V128`_Vnn), `c**` : lane_((Fnn : Fnn <: lanetype))**, `dim#1532*` : dim*, `i#13693*` : nat*, `i#13700*` : nat*, `lanetype#1532*` : lanetype*, lanetype#1505 : lanetype, dim#1505 : dim, i#13603 : nat, i#13610 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#1505, dim#1505, i#13603}((Fnn : Fnn <: lanetype), `%`_dim{i#13610}(M))))*}(`%X%`_shape{lanetype#1493, dim#1493, i#13579}((Fnn : Fnn <: lanetype), `%`_dim{i#13586}(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape{lanetype#1532, dim#1532, i#13693}((Fnn : Fnn <: lanetype), `%`_dim{i#13700}(M)), c*{c <- `c*`})*{`c*` <- `c**`, dim#1532 <- `dim#1532*`, i#13693 <- `i#13693*`, i#13700 <- `i#13700*`, lanetype#1532 <- `lanetype#1532*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#1505, dim#1505, i#13603}((Fnn : Fnn <: lanetype), `%`_dim{i#13610}(M)), v_1)) + 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**`} + -- 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)), $f_($sizenn((Fnn : Fnn <: numtype)), c_1)*{c_1 <- `c_1*`})) -[check_dims] Jnn M c c_1 c_2 dim#1555 dim#1567 dim#1592 dim#1619 i#13738 i#13745 i#13774 i#13781 i#13860 i#13867 i#14011 i#14018 lanetype#1555 lanetype#1567 lanetype#1592 lanetype#1619 v_1 v_2 -[visit_exp `%X%`_shape{lanetype#1555, dim#1555, i#13738}((Jnn : Jnn <: lanetype), `%`_dim{i#13745}(M))] -[visit_exp lanetype#1555] -[visit_id lanetype#1555] -[visit_exp dim#1555] -[visit_id dim#1555] -[visit_exp i#13738] -[visit_id i#13738] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#13745}(M))] +[check_dims] Jnn M c c_1 c_2 v_1 v_2 +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] -[visit_exp `%`_dim{i#13745}(M)] -[visit_exp i#13745] -[visit_id i#13745] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -39339,22 +34095,14 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp [$inv_lanes_(`%X%`_shape{lanetype#1619, dim#1619, i#14011}((Jnn : Jnn <: lanetype), `%`_dim{i#14018}(M)), c*{c <- `c*`})]] -[visit_exp $inv_lanes_(`%X%`_shape{lanetype#1619, dim#1619, i#14011}((Jnn : Jnn <: lanetype), `%`_dim{i#14018}(M)), c*{c <- `c*`})] -[visit_exp `%X%`_shape{lanetype#1619, dim#1619, i#14011}((Jnn : Jnn <: lanetype), `%`_dim{i#14018}(M))] -[visit_exp lanetype#1619] -[visit_id lanetype#1619] -[visit_exp dim#1619] -[visit_id dim#1619] -[visit_exp i#14011] -[visit_id i#14011] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#14018}(M))] +[visit_exp [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})]] +[visit_exp $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#14018}(M)] -[visit_exp i#14018] -[visit_id i#14018] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -39367,7 +34115,7 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c*`] [visit_id c*] no dims [visit_id c*] -[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#1567, dim#1567, i#13774}((Jnn : Jnn <: lanetype), `%`_dim{i#13781}(M)), v_1))] +[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1))] [visit_exp c_1*{c_1 <- `c_1*`}] [scope_enter c_1] [visit_exp c_1] @@ -39377,27 +34125,19 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c_1*`] [visit_id c_1*] no dims [visit_id c_1*] -[visit_exp $lanes_(`%X%`_shape{lanetype#1567, dim#1567, i#13774}((Jnn : Jnn <: lanetype), `%`_dim{i#13781}(M)), v_1)] -[visit_exp `%X%`_shape{lanetype#1567, dim#1567, i#13774}((Jnn : Jnn <: lanetype), `%`_dim{i#13781}(M))] -[visit_exp lanetype#1567] -[visit_id lanetype#1567] -[visit_exp dim#1567] -[visit_id dim#1567] -[visit_exp i#13774] -[visit_id i#13774] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#13781}(M))] +[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#13781}(M)] -[visit_exp i#13781] -[visit_id i#13781] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free [visit_exp v_1] [visit_id v_1] not free -[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#1592, dim#1592, i#13860}((Jnn : Jnn <: lanetype), `%`_dim{i#13867}(M)), v_2))] +[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2))] [visit_exp c_2*{c_2 <- `c_2*`}] [scope_enter c_2] [visit_exp c_2] @@ -39407,21 +34147,13 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c_2*`] [visit_id c_2*] no dims [visit_id c_2*] -[visit_exp $lanes_(`%X%`_shape{lanetype#1592, dim#1592, i#13860}((Jnn : Jnn <: lanetype), `%`_dim{i#13867}(M)), v_2)] -[visit_exp `%X%`_shape{lanetype#1592, dim#1592, i#13860}((Jnn : Jnn <: lanetype), `%`_dim{i#13867}(M))] -[visit_exp lanetype#1592] -[visit_id lanetype#1592] -[visit_exp dim#1592] -[visit_id dim#1592] -[visit_exp i#13860] -[visit_id i#13860] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#13867}(M))] +[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#13867}(M)] -[visit_exp i#13867] -[visit_id i#13867] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -39461,25 +34193,17 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_id c_2*] no dims => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinop_{lanetype#1555 : lanetype, dim#1555 : dim, i#13738 : nat, Jnn : Jnn, i#13745 : nat, M : M, def $f_(N : N, iN : iN(N), iN : iN(N)) : iN(N), v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#1619 : lanetype, dim#1619 : dim, i#14011 : nat, i#14018 : nat, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, lanetype#1567 : lanetype, dim#1567 : dim, i#13774 : nat, i#13781 : nat, lanetype#1592 : lanetype, dim#1592 : dim, i#13860 : nat, i#13867 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#1567, dim#1567, i#13774}((Jnn : Jnn <: lanetype), `%`_dim{i#13781}(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#1592, dim#1592, i#13860}((Jnn : Jnn <: lanetype), `%`_dim{i#13867}(M))))*}(`%X%`_shape{lanetype#1555, dim#1555, i#13738}((Jnn : Jnn <: lanetype), `%`_dim{i#13745}(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape{lanetype#1619, dim#1619, i#14011}((Jnn : Jnn <: lanetype), `%`_dim{i#14018}(M)), c*{c <- `c*`})] - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#1567, dim#1567, i#13774}((Jnn : Jnn <: lanetype), `%`_dim{i#13781}(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#1592, dim#1592, i#13860}((Jnn : Jnn <: lanetype), `%`_dim{i#13867}(M)), v_2)) + 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*`})] + -- 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)), c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`}) -[check_dims] Jnn M c c_1 c_2 dim#1643 dim#1655 dim#1680 dim#1707 i#14084 i#14091 i#14120 i#14127 i#14206 i#14213 i#14357 i#14364 lanetype#1643 lanetype#1655 lanetype#1680 lanetype#1707 sx v_1 v_2 -[visit_exp `%X%`_shape{lanetype#1643, dim#1643, i#14084}((Jnn : Jnn <: lanetype), `%`_dim{i#14091}(M))] -[visit_exp lanetype#1643] -[visit_id lanetype#1643] -[visit_exp dim#1643] -[visit_id dim#1643] -[visit_exp i#14084] -[visit_id i#14084] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#14091}(M))] +[check_dims] Jnn M c c_1 c_2 sx v_1 v_2 +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] -[visit_exp `%`_dim{i#14091}(M)] -[visit_exp i#14091] -[visit_id i#14091] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -39489,22 +34213,14 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp [$inv_lanes_(`%X%`_shape{lanetype#1707, dim#1707, i#14357}((Jnn : Jnn <: lanetype), `%`_dim{i#14364}(M)), c*{c <- `c*`})]] -[visit_exp $inv_lanes_(`%X%`_shape{lanetype#1707, dim#1707, i#14357}((Jnn : Jnn <: lanetype), `%`_dim{i#14364}(M)), c*{c <- `c*`})] -[visit_exp `%X%`_shape{lanetype#1707, dim#1707, i#14357}((Jnn : Jnn <: lanetype), `%`_dim{i#14364}(M))] -[visit_exp lanetype#1707] -[visit_id lanetype#1707] -[visit_exp dim#1707] -[visit_id dim#1707] -[visit_exp i#14357] -[visit_id i#14357] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#14364}(M))] +[visit_exp [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})]] +[visit_exp $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#14364}(M)] -[visit_exp i#14364] -[visit_id i#14364] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -39517,7 +34233,7 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c*`] [visit_id c*] no dims [visit_id c*] -[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#1655, dim#1655, i#14120}((Jnn : Jnn <: lanetype), `%`_dim{i#14127}(M)), v_1))] +[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1))] [visit_exp c_1*{c_1 <- `c_1*`}] [scope_enter c_1] [visit_exp c_1] @@ -39527,27 +34243,19 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c_1*`] [visit_id c_1*] no dims [visit_id c_1*] -[visit_exp $lanes_(`%X%`_shape{lanetype#1655, dim#1655, i#14120}((Jnn : Jnn <: lanetype), `%`_dim{i#14127}(M)), v_1)] -[visit_exp `%X%`_shape{lanetype#1655, dim#1655, i#14120}((Jnn : Jnn <: lanetype), `%`_dim{i#14127}(M))] -[visit_exp lanetype#1655] -[visit_id lanetype#1655] -[visit_exp dim#1655] -[visit_id dim#1655] -[visit_exp i#14120] -[visit_id i#14120] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#14127}(M))] +[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#14127}(M)] -[visit_exp i#14127] -[visit_id i#14127] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free [visit_exp v_1] [visit_id v_1] not free -[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#1680, dim#1680, i#14206}((Jnn : Jnn <: lanetype), `%`_dim{i#14213}(M)), v_2))] +[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2))] [visit_exp c_2*{c_2 <- `c_2*`}] [scope_enter c_2] [visit_exp c_2] @@ -39557,21 +34265,13 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c_2*`] [visit_id c_2*] no dims [visit_id c_2*] -[visit_exp $lanes_(`%X%`_shape{lanetype#1680, dim#1680, i#14206}((Jnn : Jnn <: lanetype), `%`_dim{i#14213}(M)), v_2)] -[visit_exp `%X%`_shape{lanetype#1680, dim#1680, i#14206}((Jnn : Jnn <: lanetype), `%`_dim{i#14213}(M))] -[visit_exp lanetype#1680] -[visit_id lanetype#1680] -[visit_exp dim#1680] -[visit_id dim#1680] -[visit_exp i#14206] -[visit_id i#14206] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#14213}(M))] +[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#14213}(M)] -[visit_exp i#14213] -[visit_id i#14213] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -39613,25 +34313,17 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_id c_2*] no dims => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsx_{lanetype#1643 : lanetype, dim#1643 : dim, i#14084 : nat, Jnn : Jnn, i#14091 : nat, 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), lanetype#1707 : lanetype, dim#1707 : dim, i#14357 : nat, i#14364 : nat, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, lanetype#1655 : lanetype, dim#1655 : dim, i#14120 : nat, i#14127 : nat, lanetype#1680 : lanetype, dim#1680 : dim, i#14206 : nat, i#14213 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#1655, dim#1655, i#14120}((Jnn : Jnn <: lanetype), `%`_dim{i#14127}(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#1680, dim#1680, i#14206}((Jnn : Jnn <: lanetype), `%`_dim{i#14213}(M))))*}(`%X%`_shape{lanetype#1643, dim#1643, i#14084}((Jnn : Jnn <: lanetype), `%`_dim{i#14091}(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape{lanetype#1707, dim#1707, i#14357}((Jnn : Jnn <: lanetype), `%`_dim{i#14364}(M)), c*{c <- `c*`})] - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#1655, dim#1655, i#14120}((Jnn : Jnn <: lanetype), `%`_dim{i#14127}(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#1680, dim#1680, i#14206}((Jnn : Jnn <: lanetype), `%`_dim{i#14213}(M)), v_2)) + 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*`})] + -- 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, c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`}) -[check_dims] Jnn M c c_1 c_2 dim#1731 dim#1743 dim#1768 dim#1803 i#14430 i#14437 i#14466 i#14473 i#14552 i#14559 i#14919 i#14926 lanetype#1731 lanetype#1743 lanetype#1768 lanetype#1803 sx v_1 v_2 -[visit_exp `%X%`_shape{lanetype#1731, dim#1731, i#14430}((Jnn : Jnn <: lanetype), `%`_dim{i#14437}(M))] -[visit_exp lanetype#1731] -[visit_id lanetype#1731] -[visit_exp dim#1731] -[visit_id dim#1731] -[visit_exp i#14430] -[visit_id i#14430] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#14437}(M))] +[check_dims] Jnn M c c_1 c_2 sx v_1 v_2 +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] -[visit_exp `%`_dim{i#14437}(M)] -[visit_exp i#14437] -[visit_id i#14437] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -39641,27 +34333,15 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $inv_lanes_(`%X%`_shape{lanetype#1803, dim#1803, i#14919}((Jnn : Jnn <: lanetype), `%`_dim{i#14926}(M)), c*{c <- `c*`})*{`c*` <- `c**`, dim#1803 <- `dim#1803*`, i#14919 <- `i#14919*`, i#14926 <- `i#14926*`, lanetype#1803 <- `lanetype#1803*`}] +[visit_exp $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}] [scope_enter c*] -[scope_enter dim#1803] -[scope_enter i#14919] -[scope_enter i#14926] -[scope_enter lanetype#1803] -[visit_exp $inv_lanes_(`%X%`_shape{lanetype#1803, dim#1803, i#14919}((Jnn : Jnn <: lanetype), `%`_dim{i#14926}(M)), c*{c <- `c*`})] -[visit_exp `%X%`_shape{lanetype#1803, dim#1803, i#14919}((Jnn : Jnn <: lanetype), `%`_dim{i#14926}(M))] -[visit_exp lanetype#1803] -[visit_id lanetype#1803] not free -[visit_exp dim#1803] -[visit_id dim#1803] not free -[visit_exp i#14919] -[visit_id i#14919] not free -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#14926}(M))] +[visit_exp $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#14926}(M)] -[visit_exp i#14926] -[visit_id i#14926] not free +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -39676,31 +34356,11 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_id c*] no dims [visit_id c*] not free [visit_id c*] no dims -[visit_id dim#1803] not free -[visit_id i#14919] not free -[visit_id i#14926] not free -[visit_id lanetype#1803] not free -[scope_exit lanetype#1803] -[scope_exit i#14926] -[scope_exit i#14919] -[scope_exit dim#1803] [scope_exit c*] [visit_exp `c**`] [visit_id c**] no dims [visit_id c**] -[visit_exp `dim#1803*`] -[visit_id dim#1803*] no dims -[visit_id dim#1803*] -[visit_exp `i#14919*`] -[visit_id i#14919*] no dims -[visit_id i#14919*] -[visit_exp `i#14926*`] -[visit_id i#14926*] no dims -[visit_id i#14926*] -[visit_exp `lanetype#1803*`] -[visit_id lanetype#1803*] no dims -[visit_id lanetype#1803*] -[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#1743, dim#1743, i#14466}((Jnn : Jnn <: lanetype), `%`_dim{i#14473}(M)), v_1))] +[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1))] [visit_exp c_1*{c_1 <- `c_1*`}] [scope_enter c_1] [visit_exp c_1] @@ -39710,27 +34370,19 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c_1*`] [visit_id c_1*] no dims [visit_id c_1*] -[visit_exp $lanes_(`%X%`_shape{lanetype#1743, dim#1743, i#14466}((Jnn : Jnn <: lanetype), `%`_dim{i#14473}(M)), v_1)] -[visit_exp `%X%`_shape{lanetype#1743, dim#1743, i#14466}((Jnn : Jnn <: lanetype), `%`_dim{i#14473}(M))] -[visit_exp lanetype#1743] -[visit_id lanetype#1743] -[visit_exp dim#1743] -[visit_id dim#1743] -[visit_exp i#14466] -[visit_id i#14466] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#14473}(M))] +[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#14473}(M)] -[visit_exp i#14473] -[visit_id i#14473] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free [visit_exp v_1] [visit_id v_1] not free -[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#1768, dim#1768, i#14552}((Jnn : Jnn <: lanetype), `%`_dim{i#14559}(M)), v_2))] +[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2))] [visit_exp c_2*{c_2 <- `c_2*`}] [scope_enter c_2] [visit_exp c_2] @@ -39740,21 +34392,13 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c_2*`] [visit_id c_2*] no dims [visit_id c_2*] -[visit_exp $lanes_(`%X%`_shape{lanetype#1768, dim#1768, i#14552}((Jnn : Jnn <: lanetype), `%`_dim{i#14559}(M)), v_2)] -[visit_exp `%X%`_shape{lanetype#1768, dim#1768, i#14552}((Jnn : Jnn <: lanetype), `%`_dim{i#14559}(M))] -[visit_exp lanetype#1768] -[visit_id lanetype#1768] -[visit_exp dim#1768] -[visit_id dim#1768] -[visit_exp i#14552] -[visit_id i#14552] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#14559}(M))] +[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#14559}(M)] -[visit_exp i#14559] -[visit_id i#14559] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -39808,25 +34452,17 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_id c_2*] no dims => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsxnd_{lanetype#1731 : lanetype, dim#1731 : dim, i#14430 : nat, Jnn : Jnn, i#14437 : nat, 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))**, `dim#1803*` : dim*, `i#14919*` : nat*, `i#14926*` : nat*, `lanetype#1803*` : lanetype*, lanetype#1743 : lanetype, dim#1743 : dim, i#14466 : nat, i#14473 : nat, lanetype#1768 : lanetype, dim#1768 : dim, i#14552 : nat, i#14559 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#1743, dim#1743, i#14466}((Jnn : Jnn <: lanetype), `%`_dim{i#14473}(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#1768, dim#1768, i#14552}((Jnn : Jnn <: lanetype), `%`_dim{i#14559}(M))))*}(`%X%`_shape{lanetype#1731, dim#1731, i#14430}((Jnn : Jnn <: lanetype), `%`_dim{i#14437}(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape{lanetype#1803, dim#1803, i#14919}((Jnn : Jnn <: lanetype), `%`_dim{i#14926}(M)), c*{c <- `c*`})*{`c*` <- `c**`, dim#1803 <- `dim#1803*`, i#14919 <- `i#14919*`, i#14926 <- `i#14926*`, lanetype#1803 <- `lanetype#1803*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#1743, dim#1743, i#14466}((Jnn : Jnn <: lanetype), `%`_dim{i#14473}(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#1768, dim#1768, i#14552}((Jnn : Jnn <: lanetype), `%`_dim{i#14559}(M)), v_2)) + 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**`} + -- 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)), $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`})) -[check_dims] Fnn M c c_1 c_2 dim#1827 dim#1839 dim#1863 dim#1893 i#14990 i#14997 i#15026 i#15033 i#15084 i#15091 i#15183 i#15190 lanetype#1827 lanetype#1839 lanetype#1863 lanetype#1893 v_1 v_2 -[visit_exp `%X%`_shape{lanetype#1827, dim#1827, i#14990}((Fnn : Fnn <: lanetype), `%`_dim{i#14997}(M))] -[visit_exp lanetype#1827] -[visit_id lanetype#1827] -[visit_exp dim#1827] -[visit_id dim#1827] -[visit_exp i#14990] -[visit_id i#14990] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#14997}(M))] +[check_dims] Fnn M c c_1 c_2 v_1 v_2 +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] -[visit_exp `%`_dim{i#14997}(M)] -[visit_exp i#14997] -[visit_id i#14997] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -39834,27 +34470,15 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $inv_lanes_(`%X%`_shape{lanetype#1893, dim#1893, i#15183}((Fnn : Fnn <: lanetype), `%`_dim{i#15190}(M)), c*{c <- `c*`})*{`c*` <- `c**`, dim#1893 <- `dim#1893*`, i#15183 <- `i#15183*`, i#15190 <- `i#15190*`, lanetype#1893 <- `lanetype#1893*`}] +[visit_exp $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}] [scope_enter c*] -[scope_enter dim#1893] -[scope_enter i#15183] -[scope_enter i#15190] -[scope_enter lanetype#1893] -[visit_exp $inv_lanes_(`%X%`_shape{lanetype#1893, dim#1893, i#15183}((Fnn : Fnn <: lanetype), `%`_dim{i#15190}(M)), c*{c <- `c*`})] -[visit_exp `%X%`_shape{lanetype#1893, dim#1893, i#15183}((Fnn : Fnn <: lanetype), `%`_dim{i#15190}(M))] -[visit_exp lanetype#1893] -[visit_id lanetype#1893] not free -[visit_exp dim#1893] -[visit_id dim#1893] not free -[visit_exp i#15183] -[visit_id i#15183] not free -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#15190}(M))] +[visit_exp $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})] +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] not free -[visit_exp `%`_dim{i#15190}(M)] -[visit_exp i#15190] -[visit_id i#15190] not free +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -39869,31 +34493,11 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_id c*] no dims [visit_id c*] not free [visit_id c*] no dims -[visit_id dim#1893] not free -[visit_id i#15183] not free -[visit_id i#15190] not free -[visit_id lanetype#1893] not free -[scope_exit lanetype#1893] -[scope_exit i#15190] -[scope_exit i#15183] -[scope_exit dim#1893] [scope_exit c*] [visit_exp `c**`] [visit_id c**] no dims [visit_id c**] -[visit_exp `dim#1893*`] -[visit_id dim#1893*] no dims -[visit_id dim#1893*] -[visit_exp `i#15183*`] -[visit_id i#15183*] no dims -[visit_id i#15183*] -[visit_exp `i#15190*`] -[visit_id i#15190*] no dims -[visit_id i#15190*] -[visit_exp `lanetype#1893*`] -[visit_id lanetype#1893*] no dims -[visit_id lanetype#1893*] -[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#1839, dim#1839, i#15026}((Fnn : Fnn <: lanetype), `%`_dim{i#15033}(M)), v_1))] +[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1))] [visit_exp c_1*{c_1 <- `c_1*`}] [scope_enter c_1] [visit_exp c_1] @@ -39903,27 +34507,19 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c_1*`] [visit_id c_1*] no dims [visit_id c_1*] -[visit_exp $lanes_(`%X%`_shape{lanetype#1839, dim#1839, i#15026}((Fnn : Fnn <: lanetype), `%`_dim{i#15033}(M)), v_1)] -[visit_exp `%X%`_shape{lanetype#1839, dim#1839, i#15026}((Fnn : Fnn <: lanetype), `%`_dim{i#15033}(M))] -[visit_exp lanetype#1839] -[visit_id lanetype#1839] -[visit_exp dim#1839] -[visit_id dim#1839] -[visit_exp i#15026] -[visit_id i#15026] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#15033}(M))] +[visit_exp $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)] +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] not free -[visit_exp `%`_dim{i#15033}(M)] -[visit_exp i#15033] -[visit_id i#15033] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free [visit_exp v_1] [visit_id v_1] not free -[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#1863, dim#1863, i#15084}((Fnn : Fnn <: lanetype), `%`_dim{i#15091}(M)), v_2))] +[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2))] [visit_exp c_2*{c_2 <- `c_2*`}] [scope_enter c_2] [visit_exp c_2] @@ -39933,21 +34529,13 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c_2*`] [visit_id c_2*] no dims [visit_id c_2*] -[visit_exp $lanes_(`%X%`_shape{lanetype#1863, dim#1863, i#15084}((Fnn : Fnn <: lanetype), `%`_dim{i#15091}(M)), v_2)] -[visit_exp `%X%`_shape{lanetype#1863, dim#1863, i#15084}((Fnn : Fnn <: lanetype), `%`_dim{i#15091}(M))] -[visit_exp lanetype#1863] -[visit_id lanetype#1863] -[visit_exp dim#1863] -[visit_id dim#1863] -[visit_exp i#15084] -[visit_id i#15084] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#15091}(M))] +[visit_exp $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)] +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] not free -[visit_exp `%`_dim{i#15091}(M)] -[visit_exp i#15091] -[visit_id i#15091] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -39999,25 +34587,17 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_id c_2*] no dims => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvbinop_{lanetype#1827 : lanetype, dim#1827 : dim, i#14990 : nat, Fnn : Fnn, i#14997 : nat, 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))**, `dim#1893*` : dim*, `i#15183*` : nat*, `i#15190*` : nat*, `lanetype#1893*` : lanetype*, lanetype#1839 : lanetype, dim#1839 : dim, i#15026 : nat, i#15033 : nat, lanetype#1863 : lanetype, dim#1863 : dim, i#15084 : nat, i#15091 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#1839, dim#1839, i#15026}((Fnn : Fnn <: lanetype), `%`_dim{i#15033}(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#1863, dim#1863, i#15084}((Fnn : Fnn <: lanetype), `%`_dim{i#15091}(M))))*}(`%X%`_shape{lanetype#1827, dim#1827, i#14990}((Fnn : Fnn <: lanetype), `%`_dim{i#14997}(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape{lanetype#1893, dim#1893, i#15183}((Fnn : Fnn <: lanetype), `%`_dim{i#15190}(M)), c*{c <- `c*`})*{`c*` <- `c**`, dim#1893 <- `dim#1893*`, i#15183 <- `i#15183*`, i#15190 <- `i#15190*`, lanetype#1893 <- `lanetype#1893*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#1839, dim#1839, i#15026}((Fnn : Fnn <: lanetype), `%`_dim{i#15033}(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#1863, dim#1863, i#15084}((Fnn : Fnn <: lanetype), `%`_dim{i#15091}(M)), v_2)) + 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**`} + -- 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)), $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`})) -[check_dims] Jnn M c c_1 c_2 c_3 dim#1916 dim#1928 dim#1953 dim#1978 dim#2018 i#15228 i#15235 i#15276 i#15283 i#15362 i#15369 i#15448 i#15455 i#15890 i#15897 lanetype#1916 lanetype#1928 lanetype#1953 lanetype#1978 lanetype#2018 v_1 v_2 v_3 -[visit_exp `%X%`_shape{lanetype#1916, dim#1916, i#15228}((Jnn : Jnn <: lanetype), `%`_dim{i#15235}(M))] -[visit_exp lanetype#1916] -[visit_id lanetype#1916] -[visit_exp dim#1916] -[visit_id dim#1916] -[visit_exp i#15228] -[visit_id i#15228] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#15235}(M))] +[check_dims] Jnn M c c_1 c_2 c_3 v_1 v_2 v_3 +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] -[visit_exp `%`_dim{i#15235}(M)] -[visit_exp i#15235] -[visit_id i#15235] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -40027,27 +34607,15 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_id v_2] [visit_exp v_3] [visit_id v_3] -[visit_exp $inv_lanes_(`%X%`_shape{lanetype#2018, dim#2018, i#15890}((Jnn : Jnn <: lanetype), `%`_dim{i#15897}(M)), c*{c <- `c*`})*{`c*` <- `c**`, dim#2018 <- `dim#2018*`, i#15890 <- `i#15890*`, i#15897 <- `i#15897*`, lanetype#2018 <- `lanetype#2018*`}] +[visit_exp $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}] [scope_enter c*] -[scope_enter dim#2018] -[scope_enter i#15890] -[scope_enter i#15897] -[scope_enter lanetype#2018] -[visit_exp $inv_lanes_(`%X%`_shape{lanetype#2018, dim#2018, i#15890}((Jnn : Jnn <: lanetype), `%`_dim{i#15897}(M)), c*{c <- `c*`})] -[visit_exp `%X%`_shape{lanetype#2018, dim#2018, i#15890}((Jnn : Jnn <: lanetype), `%`_dim{i#15897}(M))] -[visit_exp lanetype#2018] -[visit_id lanetype#2018] not free -[visit_exp dim#2018] -[visit_id dim#2018] not free -[visit_exp i#15890] -[visit_id i#15890] not free -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#15897}(M))] +[visit_exp $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#15897}(M)] -[visit_exp i#15897] -[visit_id i#15897] not free +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -40062,31 +34630,11 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_id c*] no dims [visit_id c*] not free [visit_id c*] no dims -[visit_id dim#2018] not free -[visit_id i#15890] not free -[visit_id i#15897] not free -[visit_id lanetype#2018] not free -[scope_exit lanetype#2018] -[scope_exit i#15897] -[scope_exit i#15890] -[scope_exit dim#2018] [scope_exit c*] [visit_exp `c**`] [visit_id c**] no dims [visit_id c**] -[visit_exp `dim#2018*`] -[visit_id dim#2018*] no dims -[visit_id dim#2018*] -[visit_exp `i#15890*`] -[visit_id i#15890*] no dims -[visit_id i#15890*] -[visit_exp `i#15897*`] -[visit_id i#15897*] no dims -[visit_id i#15897*] -[visit_exp `lanetype#2018*`] -[visit_id lanetype#2018*] no dims -[visit_id lanetype#2018*] -[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#1928, dim#1928, i#15276}((Jnn : Jnn <: lanetype), `%`_dim{i#15283}(M)), v_1))] +[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1))] [visit_exp c_1*{c_1 <- `c_1*`}] [scope_enter c_1] [visit_exp c_1] @@ -40096,27 +34644,19 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c_1*`] [visit_id c_1*] no dims [visit_id c_1*] -[visit_exp $lanes_(`%X%`_shape{lanetype#1928, dim#1928, i#15276}((Jnn : Jnn <: lanetype), `%`_dim{i#15283}(M)), v_1)] -[visit_exp `%X%`_shape{lanetype#1928, dim#1928, i#15276}((Jnn : Jnn <: lanetype), `%`_dim{i#15283}(M))] -[visit_exp lanetype#1928] -[visit_id lanetype#1928] -[visit_exp dim#1928] -[visit_id dim#1928] -[visit_exp i#15276] -[visit_id i#15276] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#15283}(M))] +[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#15283}(M)] -[visit_exp i#15283] -[visit_id i#15283] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free [visit_exp v_1] [visit_id v_1] not free -[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#1953, dim#1953, i#15362}((Jnn : Jnn <: lanetype), `%`_dim{i#15369}(M)), v_2))] +[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2))] [visit_exp c_2*{c_2 <- `c_2*`}] [scope_enter c_2] [visit_exp c_2] @@ -40126,27 +34666,19 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c_2*`] [visit_id c_2*] no dims [visit_id c_2*] -[visit_exp $lanes_(`%X%`_shape{lanetype#1953, dim#1953, i#15362}((Jnn : Jnn <: lanetype), `%`_dim{i#15369}(M)), v_2)] -[visit_exp `%X%`_shape{lanetype#1953, dim#1953, i#15362}((Jnn : Jnn <: lanetype), `%`_dim{i#15369}(M))] -[visit_exp lanetype#1953] -[visit_id lanetype#1953] -[visit_exp dim#1953] -[visit_id dim#1953] -[visit_exp i#15362] -[visit_id i#15362] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#15369}(M))] +[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#15369}(M)] -[visit_exp i#15369] -[visit_id i#15369] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free [visit_exp v_2] [visit_id v_2] not free -[visit_exp (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape{lanetype#1978, dim#1978, i#15448}((Jnn : Jnn <: lanetype), `%`_dim{i#15455}(M)), v_3))] +[visit_exp (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3))] [visit_exp c_3*{c_3 <- `c_3*`}] [scope_enter c_3] [visit_exp c_3] @@ -40156,21 +34688,13 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c_3*`] [visit_id c_3*] no dims [visit_id c_3*] -[visit_exp $lanes_(`%X%`_shape{lanetype#1978, dim#1978, i#15448}((Jnn : Jnn <: lanetype), `%`_dim{i#15455}(M)), v_3)] -[visit_exp `%X%`_shape{lanetype#1978, dim#1978, i#15448}((Jnn : Jnn <: lanetype), `%`_dim{i#15455}(M))] -[visit_exp lanetype#1978] -[visit_id lanetype#1978] -[visit_exp dim#1978] -[visit_id dim#1978] -[visit_exp i#15448] -[visit_id i#15448] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#15455}(M))] +[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#15455}(M)] -[visit_exp i#15455] -[visit_id i#15455] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -40230,26 +34754,18 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_id c_3*] no dims => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivternopnd_{lanetype#1916 : lanetype, dim#1916 : dim, i#15228 : nat, Jnn : Jnn, i#15235 : nat, 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))**, `dim#2018*` : dim*, `i#15890*` : nat*, `i#15897*` : nat*, `lanetype#2018*` : lanetype*, lanetype#1928 : lanetype, dim#1928 : dim, i#15276 : nat, i#15283 : nat, lanetype#1953 : lanetype, dim#1953 : dim, i#15362 : nat, i#15369 : nat, lanetype#1978 : lanetype, dim#1978 : dim, i#15448 : nat, i#15455 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#1928, dim#1928, i#15276}((Jnn : Jnn <: lanetype), `%`_dim{i#15283}(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#1953, dim#1953, i#15362}((Jnn : Jnn <: lanetype), `%`_dim{i#15369}(M))))*, `c_3*` : lane_($lanetype(`%X%`_shape{lanetype#1978, dim#1978, i#15448}((Jnn : Jnn <: lanetype), `%`_dim{i#15455}(M))))*}(`%X%`_shape{lanetype#1916, dim#1916, i#15228}((Jnn : Jnn <: lanetype), `%`_dim{i#15235}(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape{lanetype#2018, dim#2018, i#15890}((Jnn : Jnn <: lanetype), `%`_dim{i#15897}(M)), c*{c <- `c*`})*{`c*` <- `c**`, dim#2018 <- `dim#2018*`, i#15890 <- `i#15890*`, i#15897 <- `i#15897*`, lanetype#2018 <- `lanetype#2018*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#1928, dim#1928, i#15276}((Jnn : Jnn <: lanetype), `%`_dim{i#15283}(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#1953, dim#1953, i#15362}((Jnn : Jnn <: lanetype), `%`_dim{i#15369}(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape{lanetype#1978, dim#1978, i#15448}((Jnn : Jnn <: lanetype), `%`_dim{i#15455}(M)), v_3)) + 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**`} + -- 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)), $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2, c_3)*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) -[check_dims] Fnn M c c_1 c_2 c_3 dim#2042 dim#2054 dim#2078 dim#2102 dim#2135 i#15961 i#15968 i#16009 i#16016 i#16067 i#16074 i#16125 i#16132 i#16233 i#16240 lanetype#2042 lanetype#2054 lanetype#2078 lanetype#2102 lanetype#2135 v_1 v_2 v_3 -[visit_exp `%X%`_shape{lanetype#2042, dim#2042, i#15961}((Fnn : Fnn <: lanetype), `%`_dim{i#15968}(M))] -[visit_exp lanetype#2042] -[visit_id lanetype#2042] -[visit_exp dim#2042] -[visit_id dim#2042] -[visit_exp i#15961] -[visit_id i#15961] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#15968}(M))] +[check_dims] Fnn M c c_1 c_2 c_3 v_1 v_2 v_3 +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] -[visit_exp `%`_dim{i#15968}(M)] -[visit_exp i#15968] -[visit_id i#15968] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -40259,27 +34775,15 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_id v_2] [visit_exp v_3] [visit_id v_3] -[visit_exp $inv_lanes_(`%X%`_shape{lanetype#2135, dim#2135, i#16233}((Fnn : Fnn <: lanetype), `%`_dim{i#16240}(M)), c*{c <- `c*`})*{`c*` <- `c**`, dim#2135 <- `dim#2135*`, i#16233 <- `i#16233*`, i#16240 <- `i#16240*`, lanetype#2135 <- `lanetype#2135*`}] +[visit_exp $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}] [scope_enter c*] -[scope_enter dim#2135] -[scope_enter i#16233] -[scope_enter i#16240] -[scope_enter lanetype#2135] -[visit_exp $inv_lanes_(`%X%`_shape{lanetype#2135, dim#2135, i#16233}((Fnn : Fnn <: lanetype), `%`_dim{i#16240}(M)), c*{c <- `c*`})] -[visit_exp `%X%`_shape{lanetype#2135, dim#2135, i#16233}((Fnn : Fnn <: lanetype), `%`_dim{i#16240}(M))] -[visit_exp lanetype#2135] -[visit_id lanetype#2135] not free -[visit_exp dim#2135] -[visit_id dim#2135] not free -[visit_exp i#16233] -[visit_id i#16233] not free -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#16240}(M))] +[visit_exp $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})] +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] not free -[visit_exp `%`_dim{i#16240}(M)] -[visit_exp i#16240] -[visit_id i#16240] not free +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -40294,31 +34798,11 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_id c*] no dims [visit_id c*] not free [visit_id c*] no dims -[visit_id dim#2135] not free -[visit_id i#16233] not free -[visit_id i#16240] not free -[visit_id lanetype#2135] not free -[scope_exit lanetype#2135] -[scope_exit i#16240] -[scope_exit i#16233] -[scope_exit dim#2135] [scope_exit c*] [visit_exp `c**`] [visit_id c**] no dims [visit_id c**] -[visit_exp `dim#2135*`] -[visit_id dim#2135*] no dims -[visit_id dim#2135*] -[visit_exp `i#16233*`] -[visit_id i#16233*] no dims -[visit_id i#16233*] -[visit_exp `i#16240*`] -[visit_id i#16240*] no dims -[visit_id i#16240*] -[visit_exp `lanetype#2135*`] -[visit_id lanetype#2135*] no dims -[visit_id lanetype#2135*] -[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2054, dim#2054, i#16009}((Fnn : Fnn <: lanetype), `%`_dim{i#16016}(M)), v_1))] +[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1))] [visit_exp c_1*{c_1 <- `c_1*`}] [scope_enter c_1] [visit_exp c_1] @@ -40328,27 +34812,19 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c_1*`] [visit_id c_1*] no dims [visit_id c_1*] -[visit_exp $lanes_(`%X%`_shape{lanetype#2054, dim#2054, i#16009}((Fnn : Fnn <: lanetype), `%`_dim{i#16016}(M)), v_1)] -[visit_exp `%X%`_shape{lanetype#2054, dim#2054, i#16009}((Fnn : Fnn <: lanetype), `%`_dim{i#16016}(M))] -[visit_exp lanetype#2054] -[visit_id lanetype#2054] -[visit_exp dim#2054] -[visit_id dim#2054] -[visit_exp i#16009] -[visit_id i#16009] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#16016}(M))] +[visit_exp $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)] +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] not free -[visit_exp `%`_dim{i#16016}(M)] -[visit_exp i#16016] -[visit_id i#16016] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free [visit_exp v_1] [visit_id v_1] not free -[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#2078, dim#2078, i#16067}((Fnn : Fnn <: lanetype), `%`_dim{i#16074}(M)), v_2))] +[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2))] [visit_exp c_2*{c_2 <- `c_2*`}] [scope_enter c_2] [visit_exp c_2] @@ -40358,27 +34834,19 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c_2*`] [visit_id c_2*] no dims [visit_id c_2*] -[visit_exp $lanes_(`%X%`_shape{lanetype#2078, dim#2078, i#16067}((Fnn : Fnn <: lanetype), `%`_dim{i#16074}(M)), v_2)] -[visit_exp `%X%`_shape{lanetype#2078, dim#2078, i#16067}((Fnn : Fnn <: lanetype), `%`_dim{i#16074}(M))] -[visit_exp lanetype#2078] -[visit_id lanetype#2078] -[visit_exp dim#2078] -[visit_id dim#2078] -[visit_exp i#16067] -[visit_id i#16067] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#16074}(M))] +[visit_exp $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)] +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] not free -[visit_exp `%`_dim{i#16074}(M)] -[visit_exp i#16074] -[visit_id i#16074] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free [visit_exp v_2] [visit_id v_2] not free -[visit_exp (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape{lanetype#2102, dim#2102, i#16125}((Fnn : Fnn <: lanetype), `%`_dim{i#16132}(M)), v_3))] +[visit_exp (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3))] [visit_exp c_3*{c_3 <- `c_3*`}] [scope_enter c_3] [visit_exp c_3] @@ -40388,21 +34856,13 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c_3*`] [visit_id c_3*] no dims [visit_id c_3*] -[visit_exp $lanes_(`%X%`_shape{lanetype#2102, dim#2102, i#16125}((Fnn : Fnn <: lanetype), `%`_dim{i#16132}(M)), v_3)] -[visit_exp `%X%`_shape{lanetype#2102, dim#2102, i#16125}((Fnn : Fnn <: lanetype), `%`_dim{i#16132}(M))] -[visit_exp lanetype#2102] -[visit_id lanetype#2102] -[visit_exp dim#2102] -[visit_id dim#2102] -[visit_exp i#16125] -[visit_id i#16125] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#16132}(M))] +[visit_exp $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3)] +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] not free -[visit_exp `%`_dim{i#16132}(M)] -[visit_exp i#16132] -[visit_id i#16132] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -40462,26 +34922,18 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_id c_3*] no dims => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvternop_{lanetype#2042 : lanetype, dim#2042 : dim, i#15961 : nat, Fnn : Fnn, i#15968 : nat, 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))**, `dim#2135*` : dim*, `i#16233*` : nat*, `i#16240*` : nat*, `lanetype#2135*` : lanetype*, lanetype#2054 : lanetype, dim#2054 : dim, i#16009 : nat, i#16016 : nat, lanetype#2078 : lanetype, dim#2078 : dim, i#16067 : nat, i#16074 : nat, lanetype#2102 : lanetype, dim#2102 : dim, i#16125 : nat, i#16132 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#2054, dim#2054, i#16009}((Fnn : Fnn <: lanetype), `%`_dim{i#16016}(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#2078, dim#2078, i#16067}((Fnn : Fnn <: lanetype), `%`_dim{i#16074}(M))))*, `c_3*` : lane_($lanetype(`%X%`_shape{lanetype#2102, dim#2102, i#16125}((Fnn : Fnn <: lanetype), `%`_dim{i#16132}(M))))*}(`%X%`_shape{lanetype#2042, dim#2042, i#15961}((Fnn : Fnn <: lanetype), `%`_dim{i#15968}(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape{lanetype#2135, dim#2135, i#16233}((Fnn : Fnn <: lanetype), `%`_dim{i#16240}(M)), c*{c <- `c*`})*{`c*` <- `c**`, dim#2135 <- `dim#2135*`, i#16233 <- `i#16233*`, i#16240 <- `i#16240*`, lanetype#2135 <- `lanetype#2135*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2054, dim#2054, i#16009}((Fnn : Fnn <: lanetype), `%`_dim{i#16016}(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#2078, dim#2078, i#16067}((Fnn : Fnn <: lanetype), `%`_dim{i#16074}(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape{lanetype#2102, dim#2102, i#16125}((Fnn : Fnn <: lanetype), `%`_dim{i#16132}(M)), v_3)) + 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**`} + -- 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)), $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2, c_3)*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) -[check_dims] Jnn M c c_1 c_2 dim#2158 dim#2170 dim#2195 dim#2222 i#16278 i#16285 i#16314 i#16321 i#16400 i#16407 i#16555 i#16556 i#16597 i#16604 lanetype#2158 lanetype#2170 lanetype#2195 lanetype#2222 v_1 v_2 -[visit_exp `%X%`_shape{lanetype#2158, dim#2158, i#16278}((Jnn : Jnn <: lanetype), `%`_dim{i#16285}(M))] -[visit_exp lanetype#2158] -[visit_id lanetype#2158] -[visit_exp dim#2158] -[visit_id dim#2158] -[visit_exp i#16278] -[visit_id i#16278] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#16285}(M))] +[check_dims] Jnn M c c_1 c_2 v_1 v_2 +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] -[visit_exp `%`_dim{i#16285}(M)] -[visit_exp i#16285] -[visit_id i#16285] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -40489,21 +34941,13 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $inv_lanes_(`%X%`_shape{lanetype#2222, dim#2222, i#16597}((Jnn : Jnn <: lanetype), `%`_dim{i#16604}(M)), c*{c <- `c*`})] -[visit_exp `%X%`_shape{lanetype#2222, dim#2222, i#16597}((Jnn : Jnn <: lanetype), `%`_dim{i#16604}(M))] -[visit_exp lanetype#2222] -[visit_id lanetype#2222] -[visit_exp dim#2222] -[visit_id dim#2222] -[visit_exp i#16597] -[visit_id i#16597] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#16604}(M))] +[visit_exp $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#16604}(M)] -[visit_exp i#16604] -[visit_id i#16604] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -40516,7 +34960,7 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c*`] [visit_id c*] no dims [visit_id c*] -[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2170, dim#2170, i#16314}((Jnn : Jnn <: lanetype), `%`_dim{i#16321}(M)), v_1))] +[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1))] [visit_exp c_1*{c_1 <- `c_1*`}] [scope_enter c_1] [visit_exp c_1] @@ -40526,27 +34970,19 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c_1*`] [visit_id c_1*] no dims [visit_id c_1*] -[visit_exp $lanes_(`%X%`_shape{lanetype#2170, dim#2170, i#16314}((Jnn : Jnn <: lanetype), `%`_dim{i#16321}(M)), v_1)] -[visit_exp `%X%`_shape{lanetype#2170, dim#2170, i#16314}((Jnn : Jnn <: lanetype), `%`_dim{i#16321}(M))] -[visit_exp lanetype#2170] -[visit_id lanetype#2170] -[visit_exp dim#2170] -[visit_id dim#2170] -[visit_exp i#16314] -[visit_id i#16314] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#16321}(M))] +[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#16321}(M)] -[visit_exp i#16321] -[visit_id i#16321] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free [visit_exp v_1] [visit_id v_1] not free -[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#2195, dim#2195, i#16400}((Jnn : Jnn <: lanetype), `%`_dim{i#16407}(M)), v_2))] +[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2))] [visit_exp c_2*{c_2 <- `c_2*`}] [scope_enter c_2] [visit_exp c_2] @@ -40556,27 +34992,19 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c_2*`] [visit_id c_2*] no dims [visit_id c_2*] -[visit_exp $lanes_(`%X%`_shape{lanetype#2195, dim#2195, i#16400}((Jnn : Jnn <: lanetype), `%`_dim{i#16407}(M)), v_2)] -[visit_exp `%X%`_shape{lanetype#2195, dim#2195, i#16400}((Jnn : Jnn <: lanetype), `%`_dim{i#16407}(M))] -[visit_exp lanetype#2195] -[visit_id lanetype#2195] -[visit_exp dim#2195] -[visit_id dim#2195] -[visit_exp i#16400] -[visit_id i#16400] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#16407}(M))] +[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#16407}(M)] -[visit_exp i#16407] -[visit_id i#16407] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free [visit_exp v_2] [visit_id v_2] not free -[visit_exp (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, `%`_iN{i#16556}($f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)!`%`_u32{i#16555}.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`, i#16555 <- `i#16555*`, i#16556 <- `i#16556*`})] +[visit_exp (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*`})] [visit_exp c*{c <- `c*`}] [scope_enter c] [visit_exp c] @@ -40586,12 +35014,10 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c*`] [visit_id c*] not free [visit_id c*] no dims -[visit_exp $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, `%`_iN{i#16556}($f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)!`%`_u32{i#16555}.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`, i#16555 <- `i#16555*`, i#16556 <- `i#16556*`}] +[visit_exp $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*`}] [scope_enter c_1] [scope_enter c_2] -[scope_enter i#16555] -[scope_enter i#16556] -[visit_exp $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, `%`_iN{i#16556}($f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)!`%`_u32{i#16555}.0))] +[visit_exp $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)!`%`_u32.0))] [visit_exp 1] [visit_exp $lsizenn((Jnn : Jnn <: lanetype))] [visit_exp (Jnn : Jnn <: lanetype)] @@ -40599,12 +35025,10 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_id Jnn] not free [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_iN{i#16556}($f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)!`%`_u32{i#16555}.0)] -[visit_exp i#16556] -[visit_id i#16556] not free -[visit_exp ($f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)!`%`_u32{i#16555}.0)] -[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)!`%`_u32{i#16555}.0] -[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)!`%`_u32{i#16555}] +[visit_exp `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)!`%`_u32.0)] +[visit_exp ($f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)!`%`_u32.0)] +[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)!`%`_u32.0] +[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)!`%`_u32] [visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)] [visit_exp $lsizenn((Jnn : Jnn <: lanetype))] [visit_exp (Jnn : Jnn <: lanetype)] @@ -40614,14 +35038,8 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_id c_1] not free [visit_exp c_2] [visit_id c_2] not free -[visit_exp i#16555] -[visit_id i#16555] not free [visit_id c_1] not free [visit_id c_2] not free -[visit_id i#16555] not free -[visit_id i#16556] not free -[scope_exit i#16556] -[scope_exit i#16555] [scope_exit c_2] [scope_exit c_1] [visit_exp `c_1*`] @@ -40630,33 +35048,19 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c_2*`] [visit_id c_2*] not free [visit_id c_2*] no dims -[visit_exp `i#16555*`] -[visit_id i#16555*] no dims -[visit_id i#16555*] -[visit_exp `i#16556*`] -[visit_id i#16556*] no dims -[visit_id i#16556*] => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelop_{lanetype#2158 : lanetype, dim#2158 : dim, i#16278 : nat, Jnn : Jnn, i#16285 : nat, M : M, def $f_(N : N, iN : iN(N), iN : iN(N)) : u32, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#2222 : lanetype, dim#2222 : dim, i#16597 : nat, i#16604 : nat, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, lanetype#2170 : lanetype, dim#2170 : dim, i#16314 : nat, i#16321 : nat, lanetype#2195 : lanetype, dim#2195 : dim, i#16400 : nat, i#16407 : nat, `i#16555*` : nat*, `i#16556*` : nat*, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#2170, dim#2170, i#16314}((Jnn : Jnn <: lanetype), `%`_dim{i#16321}(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#2195, dim#2195, i#16400}((Jnn : Jnn <: lanetype), `%`_dim{i#16407}(M))))*}(`%X%`_shape{lanetype#2158, dim#2158, i#16278}((Jnn : Jnn <: lanetype), `%`_dim{i#16285}(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape{lanetype#2222, dim#2222, i#16597}((Jnn : Jnn <: lanetype), `%`_dim{i#16604}(M)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2170, dim#2170, i#16314}((Jnn : Jnn <: lanetype), `%`_dim{i#16321}(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#2195, dim#2195, i#16400}((Jnn : Jnn <: lanetype), `%`_dim{i#16407}(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, `%`_iN{i#16556}($f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)!`%`_u32{i#16555}.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`, i#16555 <- `i#16555*`, i#16556 <- `i#16556*`}) -[check_dims] Jnn M c c_1 c_2 dim#2246 dim#2258 dim#2283 dim#2310 i#16670 i#16677 i#16706 i#16713 i#16792 i#16799 i#16947 i#16948 i#16989 i#16996 lanetype#2246 lanetype#2258 lanetype#2283 lanetype#2310 sx v_1 v_2 -[visit_exp `%X%`_shape{lanetype#2246, dim#2246, i#16670}((Jnn : Jnn <: lanetype), `%`_dim{i#16677}(M))] -[visit_exp lanetype#2246] -[visit_id lanetype#2246] -[visit_exp dim#2246] -[visit_id dim#2246] -[visit_exp i#16670] -[visit_id i#16670] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#16677}(M))] + 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*`}) + -- 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)), c_1, c_2)!`%`_u32.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) +[check_dims] Jnn M c c_1 c_2 sx v_1 v_2 +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] -[visit_exp `%`_dim{i#16677}(M)] -[visit_exp i#16677] -[visit_id i#16677] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -40666,21 +35070,13 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $inv_lanes_(`%X%`_shape{lanetype#2310, dim#2310, i#16989}((Jnn : Jnn <: lanetype), `%`_dim{i#16996}(M)), c*{c <- `c*`})] -[visit_exp `%X%`_shape{lanetype#2310, dim#2310, i#16989}((Jnn : Jnn <: lanetype), `%`_dim{i#16996}(M))] -[visit_exp lanetype#2310] -[visit_id lanetype#2310] -[visit_exp dim#2310] -[visit_id dim#2310] -[visit_exp i#16989] -[visit_id i#16989] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#16996}(M))] +[visit_exp $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#16996}(M)] -[visit_exp i#16996] -[visit_id i#16996] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -40693,7 +35089,7 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c*`] [visit_id c*] no dims [visit_id c*] -[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2258, dim#2258, i#16706}((Jnn : Jnn <: lanetype), `%`_dim{i#16713}(M)), v_1))] +[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1))] [visit_exp c_1*{c_1 <- `c_1*`}] [scope_enter c_1] [visit_exp c_1] @@ -40703,27 +35099,19 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c_1*`] [visit_id c_1*] no dims [visit_id c_1*] -[visit_exp $lanes_(`%X%`_shape{lanetype#2258, dim#2258, i#16706}((Jnn : Jnn <: lanetype), `%`_dim{i#16713}(M)), v_1)] -[visit_exp `%X%`_shape{lanetype#2258, dim#2258, i#16706}((Jnn : Jnn <: lanetype), `%`_dim{i#16713}(M))] -[visit_exp lanetype#2258] -[visit_id lanetype#2258] -[visit_exp dim#2258] -[visit_id dim#2258] -[visit_exp i#16706] -[visit_id i#16706] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#16713}(M))] +[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#16713}(M)] -[visit_exp i#16713] -[visit_id i#16713] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free [visit_exp v_1] [visit_id v_1] not free -[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#2283, dim#2283, i#16792}((Jnn : Jnn <: lanetype), `%`_dim{i#16799}(M)), v_2))] +[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2))] [visit_exp c_2*{c_2 <- `c_2*`}] [scope_enter c_2] [visit_exp c_2] @@ -40733,27 +35121,19 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c_2*`] [visit_id c_2*] no dims [visit_id c_2*] -[visit_exp $lanes_(`%X%`_shape{lanetype#2283, dim#2283, i#16792}((Jnn : Jnn <: lanetype), `%`_dim{i#16799}(M)), v_2)] -[visit_exp `%X%`_shape{lanetype#2283, dim#2283, i#16792}((Jnn : Jnn <: lanetype), `%`_dim{i#16799}(M))] -[visit_exp lanetype#2283] -[visit_id lanetype#2283] -[visit_exp dim#2283] -[visit_id dim#2283] -[visit_exp i#16792] -[visit_id i#16792] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#16799}(M))] +[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#16799}(M)] -[visit_exp i#16799] -[visit_id i#16799] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free [visit_exp v_2] [visit_id v_2] not free -[visit_exp (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, `%`_iN{i#16948}($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)!`%`_u32{i#16947}.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`, i#16947 <- `i#16947*`, i#16948 <- `i#16948*`})] +[visit_exp (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*`})] [visit_exp c*{c <- `c*`}] [scope_enter c] [visit_exp c] @@ -40763,12 +35143,10 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c*`] [visit_id c*] not free [visit_id c*] no dims -[visit_exp $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, `%`_iN{i#16948}($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)!`%`_u32{i#16947}.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`, i#16947 <- `i#16947*`, i#16948 <- `i#16948*`}] +[visit_exp $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*`}] [scope_enter c_1] [scope_enter c_2] -[scope_enter i#16947] -[scope_enter i#16948] -[visit_exp $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, `%`_iN{i#16948}($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)!`%`_u32{i#16947}.0))] +[visit_exp $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)!`%`_u32.0))] [visit_exp 1] [visit_exp $lsizenn((Jnn : Jnn <: lanetype))] [visit_exp (Jnn : Jnn <: lanetype)] @@ -40776,12 +35154,10 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_id Jnn] not free [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_iN{i#16948}($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)!`%`_u32{i#16947}.0)] -[visit_exp i#16948] -[visit_id i#16948] not free -[visit_exp ($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)!`%`_u32{i#16947}.0)] -[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)!`%`_u32{i#16947}.0] -[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)!`%`_u32{i#16947}] +[visit_exp `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)!`%`_u32.0)] +[visit_exp ($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)!`%`_u32.0)] +[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)!`%`_u32.0] +[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)!`%`_u32] [visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)] [visit_exp $lsizenn((Jnn : Jnn <: lanetype))] [visit_exp (Jnn : Jnn <: lanetype)] @@ -40793,14 +35169,8 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_id c_1] not free [visit_exp c_2] [visit_id c_2] not free -[visit_exp i#16947] -[visit_id i#16947] not free [visit_id c_1] not free [visit_id c_2] not free -[visit_id i#16947] not free -[visit_id i#16948] not free -[scope_exit i#16948] -[scope_exit i#16947] [scope_exit c_2] [scope_exit c_1] [visit_exp `c_1*`] @@ -40809,33 +35179,19 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c_2*`] [visit_id c_2*] not free [visit_id c_2*] no dims -[visit_exp `i#16947*`] -[visit_id i#16947*] no dims -[visit_id i#16947*] -[visit_exp `i#16948*`] -[visit_id i#16948*] no dims -[visit_id i#16948*] => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelopsx_{lanetype#2246 : lanetype, dim#2246 : dim, i#16670 : nat, Jnn : Jnn, i#16677 : nat, 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), lanetype#2310 : lanetype, dim#2310 : dim, i#16989 : nat, i#16996 : nat, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, lanetype#2258 : lanetype, dim#2258 : dim, i#16706 : nat, i#16713 : nat, lanetype#2283 : lanetype, dim#2283 : dim, i#16792 : nat, i#16799 : nat, `i#16947*` : nat*, `i#16948*` : nat*, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#2258, dim#2258, i#16706}((Jnn : Jnn <: lanetype), `%`_dim{i#16713}(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#2283, dim#2283, i#16792}((Jnn : Jnn <: lanetype), `%`_dim{i#16799}(M))))*}(`%X%`_shape{lanetype#2246, dim#2246, i#16670}((Jnn : Jnn <: lanetype), `%`_dim{i#16677}(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape{lanetype#2310, dim#2310, i#16989}((Jnn : Jnn <: lanetype), `%`_dim{i#16996}(M)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2258, dim#2258, i#16706}((Jnn : Jnn <: lanetype), `%`_dim{i#16713}(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#2283, dim#2283, i#16792}((Jnn : Jnn <: lanetype), `%`_dim{i#16799}(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, `%`_iN{i#16948}($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)!`%`_u32{i#16947}.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`, i#16947 <- `i#16947*`, i#16948 <- `i#16948*`}) -[check_dims] Fnn Inn M c c_1 c_2 dim#2334 dim#2346 dim#2370 dim#2396 i#17062 i#17069 i#17098 i#17105 i#17156 i#17163 i#17259 i#17260 i#17301 i#17308 i#17404 i#17405 lanetype#2334 lanetype#2346 lanetype#2370 lanetype#2396 v_1 v_2 -[visit_exp `%X%`_shape{lanetype#2334, dim#2334, i#17062}((Fnn : Fnn <: lanetype), `%`_dim{i#17069}(M))] -[visit_exp lanetype#2334] -[visit_id lanetype#2334] -[visit_exp dim#2334] -[visit_id dim#2334] -[visit_exp i#17062] -[visit_id i#17062] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#17069}(M))] + 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*`}) + -- 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, c_1, c_2)!`%`_u32.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) +[check_dims] Fnn Inn M c c_1 c_2 v_1 v_2 +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] -[visit_exp `%`_dim{i#17069}(M)] -[visit_exp i#17069] -[visit_id i#17069] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -40843,54 +35199,30 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $inv_lanes_(`%X%`_shape{lanetype#2396, dim#2396, i#17301}((Inn : Inn <: lanetype), `%`_dim{i#17308}(M)), `%`_lane_{i#17405}(c!`%`_iN{i#17404}.0)*{c <- `c*`, i#17404 <- `i#17404*`, i#17405 <- `i#17405*`})] -[visit_exp `%X%`_shape{lanetype#2396, dim#2396, i#17301}((Inn : Inn <: lanetype), `%`_dim{i#17308}(M))] -[visit_exp lanetype#2396] -[visit_id lanetype#2396] -[visit_exp dim#2396] -[visit_id dim#2396] -[visit_exp i#17301] -[visit_id i#17301] -[visit_exp ((Inn : Inn <: lanetype), `%`_dim{i#17308}(M))] +[visit_exp $inv_lanes_(`%X%`_shape((Inn : Inn <: lanetype), `%`_dim(M)), `%`_lane_(c!`%`_iN.0)*{c <- `c*`})] +[visit_exp `%X%`_shape((Inn : Inn <: lanetype), `%`_dim(M))] +[visit_exp ((Inn : Inn <: lanetype), `%`_dim(M))] [visit_exp (Inn : Inn <: lanetype)] [visit_exp Inn] [visit_id Inn] -[visit_exp `%`_dim{i#17308}(M)] -[visit_exp i#17308] -[visit_id i#17308] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free -[visit_exp `%`_lane_{i#17405}(c!`%`_iN{i#17404}.0)*{c <- `c*`, i#17404 <- `i#17404*`, i#17405 <- `i#17405*`}] +[visit_exp `%`_lane_(c!`%`_iN.0)*{c <- `c*`}] [scope_enter c] -[scope_enter i#17404] -[scope_enter i#17405] -[visit_exp `%`_lane_{i#17405}(c!`%`_iN{i#17404}.0)] -[visit_exp i#17405] -[visit_id i#17405] not free -[visit_exp (c!`%`_iN{i#17404}.0)] -[visit_exp c!`%`_iN{i#17404}.0] -[visit_exp c!`%`_iN{i#17404}] +[visit_exp `%`_lane_(c!`%`_iN.0)] +[visit_exp (c!`%`_iN.0)] +[visit_exp c!`%`_iN.0] +[visit_exp c!`%`_iN] [visit_exp c] [visit_id c] not free -[visit_exp i#17404] -[visit_id i#17404] not free [visit_id c] not free -[visit_id i#17404] not free -[visit_id i#17405] not free -[scope_exit i#17405] -[scope_exit i#17404] [scope_exit c] [visit_exp `c*`] [visit_id c*] no dims [visit_id c*] -[visit_exp `i#17404*`] -[visit_id i#17404*] no dims -[visit_id i#17404*] -[visit_exp `i#17405*`] -[visit_id i#17405*] no dims -[visit_id i#17405*] -[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2346, dim#2346, i#17098}((Fnn : Fnn <: lanetype), `%`_dim{i#17105}(M)), v_1))] +[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1))] [visit_exp c_1*{c_1 <- `c_1*`}] [scope_enter c_1] [visit_exp c_1] @@ -40900,27 +35232,19 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c_1*`] [visit_id c_1*] no dims [visit_id c_1*] -[visit_exp $lanes_(`%X%`_shape{lanetype#2346, dim#2346, i#17098}((Fnn : Fnn <: lanetype), `%`_dim{i#17105}(M)), v_1)] -[visit_exp `%X%`_shape{lanetype#2346, dim#2346, i#17098}((Fnn : Fnn <: lanetype), `%`_dim{i#17105}(M))] -[visit_exp lanetype#2346] -[visit_id lanetype#2346] -[visit_exp dim#2346] -[visit_id dim#2346] -[visit_exp i#17098] -[visit_id i#17098] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#17105}(M))] +[visit_exp $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)] +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] not free -[visit_exp `%`_dim{i#17105}(M)] -[visit_exp i#17105] -[visit_id i#17105] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free [visit_exp v_1] [visit_id v_1] not free -[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#2370, dim#2370, i#17156}((Fnn : Fnn <: lanetype), `%`_dim{i#17163}(M)), v_2))] +[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2))] [visit_exp c_2*{c_2 <- `c_2*`}] [scope_enter c_2] [visit_exp c_2] @@ -40930,27 +35254,19 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c_2*`] [visit_id c_2*] no dims [visit_id c_2*] -[visit_exp $lanes_(`%X%`_shape{lanetype#2370, dim#2370, i#17156}((Fnn : Fnn <: lanetype), `%`_dim{i#17163}(M)), v_2)] -[visit_exp `%X%`_shape{lanetype#2370, dim#2370, i#17156}((Fnn : Fnn <: lanetype), `%`_dim{i#17163}(M))] -[visit_exp lanetype#2370] -[visit_id lanetype#2370] -[visit_exp dim#2370] -[visit_id dim#2370] -[visit_exp i#17156] -[visit_id i#17156] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#17163}(M))] +[visit_exp $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)] +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] not free -[visit_exp `%`_dim{i#17163}(M)] -[visit_exp i#17163] -[visit_id i#17163] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free [visit_exp v_2] [visit_id v_2] not free -[visit_exp (c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), `S`_sx, `%`_iN{i#17260}($f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)!`%`_u32{i#17259}.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`, i#17259 <- `i#17259*`, i#17260 <- `i#17260*`})] +[visit_exp (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*`})] [visit_exp c*{c <- `c*`}] [scope_enter c] [visit_exp c] @@ -40960,12 +35276,10 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c*`] [visit_id c*] not free [visit_id c*] no dims -[visit_exp $extend__(1, $sizenn((Fnn : Fnn <: numtype)), `S`_sx, `%`_iN{i#17260}($f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)!`%`_u32{i#17259}.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`, i#17259 <- `i#17259*`, i#17260 <- `i#17260*`}] +[visit_exp $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*`}] [scope_enter c_1] [scope_enter c_2] -[scope_enter i#17259] -[scope_enter i#17260] -[visit_exp $extend__(1, $sizenn((Fnn : Fnn <: numtype)), `S`_sx, `%`_iN{i#17260}($f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)!`%`_u32{i#17259}.0))] +[visit_exp $extend__(1, $sizenn((Fnn : Fnn <: numtype)), `S`_sx, `%`_iN($f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)!`%`_u32.0))] [visit_exp 1] [visit_exp $sizenn((Fnn : Fnn <: numtype))] [visit_exp (Fnn : Fnn <: numtype)] @@ -40973,12 +35287,10 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_id Fnn] not free [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_iN{i#17260}($f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)!`%`_u32{i#17259}.0)] -[visit_exp i#17260] -[visit_id i#17260] not free -[visit_exp ($f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)!`%`_u32{i#17259}.0)] -[visit_exp $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)!`%`_u32{i#17259}.0] -[visit_exp $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)!`%`_u32{i#17259}] +[visit_exp `%`_iN($f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)!`%`_u32.0)] +[visit_exp ($f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)!`%`_u32.0)] +[visit_exp $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)!`%`_u32.0] +[visit_exp $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)!`%`_u32] [visit_exp $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)] [visit_exp $sizenn((Fnn : Fnn <: numtype))] [visit_exp (Fnn : Fnn <: numtype)] @@ -40988,14 +35300,8 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_id c_1] not free [visit_exp c_2] [visit_id c_2] not free -[visit_exp i#17259] -[visit_id i#17259] not free [visit_id c_1] not free [visit_id c_2] not free -[visit_id i#17259] not free -[visit_id i#17260] not free -[scope_exit i#17260] -[scope_exit i#17259] [scope_exit c_2] [scope_exit c_1] [visit_exp `c_1*`] @@ -41004,12 +35310,6 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c_2*`] [visit_id c_2*] not free [visit_id c_2*] no dims -[visit_exp `i#17259*`] -[visit_id i#17259*] no dims -[visit_id i#17259*] -[visit_exp `i#17260*`] -[visit_id i#17260*] no dims -[visit_id i#17260*] [visit_exp ($isize(Inn) = $fsize(Fnn))] [visit_exp $isize(Inn)] [visit_exp Inn] @@ -41019,26 +35319,18 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_id Fnn] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvrelop_{lanetype#2334 : lanetype, dim#2334 : dim, i#17062 : nat, Fnn : Fnn, i#17069 : nat, M : M, def $f_(N : N, fN : fN(N), fN : fN(N)) : u32, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#2396 : lanetype, dim#2396 : dim, i#17301 : nat, Inn : Inn, i#17308 : nat, `c*` : iN($sizenn((Fnn : Fnn <: numtype)))*, `i#17404*` : nat*, `i#17405*` : nat*, lanetype#2346 : lanetype, dim#2346 : dim, i#17098 : nat, i#17105 : nat, lanetype#2370 : lanetype, dim#2370 : dim, i#17156 : nat, i#17163 : nat, `i#17259*` : nat*, `i#17260*` : nat*, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#2346, dim#2346, i#17098}((Fnn : Fnn <: lanetype), `%`_dim{i#17105}(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#2370, dim#2370, i#17156}((Fnn : Fnn <: lanetype), `%`_dim{i#17163}(M))))*}(`%X%`_shape{lanetype#2334, dim#2334, i#17062}((Fnn : Fnn <: lanetype), `%`_dim{i#17069}(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape{lanetype#2396, dim#2396, i#17301}((Inn : Inn <: lanetype), `%`_dim{i#17308}(M)), `%`_lane_{i#17405}(c!`%`_iN{i#17404}.0)*{c <- `c*`, i#17404 <- `i#17404*`, i#17405 <- `i#17405*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2346, dim#2346, i#17098}((Fnn : Fnn <: lanetype), `%`_dim{i#17105}(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#2370, dim#2370, i#17156}((Fnn : Fnn <: lanetype), `%`_dim{i#17163}(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), `S`_sx, `%`_iN{i#17260}($f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)!`%`_u32{i#17259}.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`, i#17259 <- `i#17259*`, i#17260 <- `i#17260*`}) + 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 : Inn <: lanetype), `%`_dim(M)), `%`_lane_(c!`%`_iN.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)), c_1, c_2)!`%`_u32.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) -- if ($isize(Inn) = $fsize(Fnn)) -[check_dims] Jnn M c c_1 dim#2421 dim#2433 dim#2459 i i#17411 i#17418 i#17447 i#17454 i#17593 i#17600 lanetype#2421 lanetype#2433 lanetype#2459 v_1 -[visit_exp `%X%`_shape{lanetype#2421, dim#2421, i#17411}((Jnn : Jnn <: lanetype), `%`_dim{i#17418}(M))] -[visit_exp lanetype#2421] -[visit_id lanetype#2421] -[visit_exp dim#2421] -[visit_id dim#2421] -[visit_exp i#17411] -[visit_id i#17411] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#17418}(M))] +[check_dims] Jnn M c c_1 i v_1 +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] -[visit_exp `%`_dim{i#17418}(M)] -[visit_exp i#17418] -[visit_id i#17418] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -41046,21 +35338,13 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_id v_1] [visit_exp i] [visit_id i] -[visit_exp $inv_lanes_(`%X%`_shape{lanetype#2459, dim#2459, i#17593}((Jnn : Jnn <: lanetype), `%`_dim{i#17600}(M)), c*{c <- `c*`})] -[visit_exp `%X%`_shape{lanetype#2459, dim#2459, i#17593}((Jnn : Jnn <: lanetype), `%`_dim{i#17600}(M))] -[visit_exp lanetype#2459] -[visit_id lanetype#2459] -[visit_exp dim#2459] -[visit_id dim#2459] -[visit_exp i#17593] -[visit_id i#17593] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#17600}(M))] +[visit_exp $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#17600}(M)] -[visit_exp i#17600] -[visit_id i#17600] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -41073,7 +35357,7 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c*`] [visit_id c*] no dims [visit_id c*] -[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2433, dim#2433, i#17447}((Jnn : Jnn <: lanetype), `%`_dim{i#17454}(M)), v_1))] +[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1))] [visit_exp c_1*{c_1 <- `c_1*`}] [scope_enter c_1] [visit_exp c_1] @@ -41083,21 +35367,13 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c_1*`] [visit_id c_1*] no dims [visit_id c_1*] -[visit_exp $lanes_(`%X%`_shape{lanetype#2433, dim#2433, i#17447}((Jnn : Jnn <: lanetype), `%`_dim{i#17454}(M)), v_1)] -[visit_exp `%X%`_shape{lanetype#2433, dim#2433, i#17447}((Jnn : Jnn <: lanetype), `%`_dim{i#17454}(M))] -[visit_exp lanetype#2433] -[visit_id lanetype#2433] -[visit_exp dim#2433] -[visit_id dim#2433] -[visit_exp i#17447] -[visit_id i#17447] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#17454}(M))] +[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#17454}(M)] -[visit_exp i#17454] -[visit_id i#17454] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -41131,24 +35407,16 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_id c_1*] no dims => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftop_{lanetype#2421 : lanetype, dim#2421 : dim, i#17411 : nat, Jnn : Jnn, i#17418 : nat, M : M, def $f_(N : N, iN : iN(N), u32 : u32) : iN(N), v_1 : vec_(`V128`_Vnn), i : u32, lanetype#2459 : lanetype, dim#2459 : dim, i#17593 : nat, i#17600 : nat, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, lanetype#2433 : lanetype, dim#2433 : dim, i#17447 : nat, i#17454 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#2433, dim#2433, i#17447}((Jnn : Jnn <: lanetype), `%`_dim{i#17454}(M))))*}(`%X%`_shape{lanetype#2421, dim#2421, i#17411}((Jnn : Jnn <: lanetype), `%`_dim{i#17418}(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape{lanetype#2459, dim#2459, i#17593}((Jnn : Jnn <: lanetype), `%`_dim{i#17600}(M)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2433, dim#2433, i#17447}((Jnn : Jnn <: lanetype), `%`_dim{i#17454}(M)), v_1)) + 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*`}) + -- 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)), c_1, i)*{c_1 <- `c_1*`}) -[check_dims] Jnn M c c_1 dim#2483 dim#2495 dim#2521 i i#17666 i#17673 i#17702 i#17709 i#17848 i#17855 lanetype#2483 lanetype#2495 lanetype#2521 sx v_1 -[visit_exp `%X%`_shape{lanetype#2483, dim#2483, i#17666}((Jnn : Jnn <: lanetype), `%`_dim{i#17673}(M))] -[visit_exp lanetype#2483] -[visit_id lanetype#2483] -[visit_exp dim#2483] -[visit_id dim#2483] -[visit_exp i#17666] -[visit_id i#17666] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#17673}(M))] +[check_dims] Jnn M c c_1 i sx v_1 +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] -[visit_exp `%`_dim{i#17673}(M)] -[visit_exp i#17673] -[visit_id i#17673] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -41158,21 +35426,13 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_id v_1] [visit_exp i] [visit_id i] -[visit_exp $inv_lanes_(`%X%`_shape{lanetype#2521, dim#2521, i#17848}((Jnn : Jnn <: lanetype), `%`_dim{i#17855}(M)), c*{c <- `c*`})] -[visit_exp `%X%`_shape{lanetype#2521, dim#2521, i#17848}((Jnn : Jnn <: lanetype), `%`_dim{i#17855}(M))] -[visit_exp lanetype#2521] -[visit_id lanetype#2521] -[visit_exp dim#2521] -[visit_id dim#2521] -[visit_exp i#17848] -[visit_id i#17848] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#17855}(M))] +[visit_exp $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#17855}(M)] -[visit_exp i#17855] -[visit_id i#17855] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -41185,7 +35445,7 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c*`] [visit_id c*] no dims [visit_id c*] -[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2495, dim#2495, i#17702}((Jnn : Jnn <: lanetype), `%`_dim{i#17709}(M)), v_1))] +[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1))] [visit_exp c_1*{c_1 <- `c_1*`}] [scope_enter c_1] [visit_exp c_1] @@ -41195,21 +35455,13 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c_1*`] [visit_id c_1*] no dims [visit_id c_1*] -[visit_exp $lanes_(`%X%`_shape{lanetype#2495, dim#2495, i#17702}((Jnn : Jnn <: lanetype), `%`_dim{i#17709}(M)), v_1)] -[visit_exp `%X%`_shape{lanetype#2495, dim#2495, i#17702}((Jnn : Jnn <: lanetype), `%`_dim{i#17709}(M))] -[visit_exp lanetype#2495] -[visit_id lanetype#2495] -[visit_exp dim#2495] -[visit_id dim#2495] -[visit_exp i#17702] -[visit_id i#17702] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#17709}(M))] +[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#17709}(M)] -[visit_exp i#17709] -[visit_id i#17709] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -41245,24 +35497,16 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_id c_1*] no dims => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftopsx_{lanetype#2483 : lanetype, dim#2483 : dim, i#17666 : nat, Jnn : Jnn, i#17673 : nat, M : M, def $f_(N : N, sx : sx, iN : iN(N), u32 : u32) : iN(N), sx : sx, v_1 : vec_(`V128`_Vnn), i : u32, lanetype#2521 : lanetype, dim#2521 : dim, i#17848 : nat, i#17855 : nat, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, lanetype#2495 : lanetype, dim#2495 : dim, i#17702 : nat, i#17709 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#2495, dim#2495, i#17702}((Jnn : Jnn <: lanetype), `%`_dim{i#17709}(M))))*}(`%X%`_shape{lanetype#2483, dim#2483, i#17666}((Jnn : Jnn <: lanetype), `%`_dim{i#17673}(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape{lanetype#2521, dim#2521, i#17848}((Jnn : Jnn <: lanetype), `%`_dim{i#17855}(M)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2495, dim#2495, i#17702}((Jnn : Jnn <: lanetype), `%`_dim{i#17709}(M)), v_1)) + 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*`}) + -- 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, c_1, i)*{c_1 <- `c_1*`}) -[check_dims] Jnn M c c_1 dim#2545 dim#2557 i#17921 i#17928 i#17945 i#17952 i#18238 i#18256 i#18257 i#18272 lanetype#2545 lanetype#2557 v_1 -[visit_exp `%X%`_shape{lanetype#2545, dim#2545, i#17921}((Jnn : Jnn <: lanetype), `%`_dim{i#17928}(M))] -[visit_exp lanetype#2545] -[visit_id lanetype#2545] -[visit_exp dim#2545] -[visit_id dim#2545] -[visit_exp i#17921] -[visit_id i#17921] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#17928}(M))] +[check_dims] Jnn M c c_1 v_1 +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] -[visit_exp `%`_dim{i#17928}(M)] -[visit_exp i#17928] -[visit_id i#17928] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -41272,7 +35516,7 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp 32] [visit_exp c] [visit_id c] -[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2557, dim#2557, i#17945}((Jnn : Jnn <: lanetype), `%`_dim{i#17952}(M)), v_1))] +[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1))] [visit_exp c_1*{c_1 <- `c_1*`}] [scope_enter c_1] [visit_exp c_1] @@ -41282,44 +35526,31 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c_1*`] [visit_id c_1*] no dims [visit_id c_1*] -[visit_exp $lanes_(`%X%`_shape{lanetype#2557, dim#2557, i#17945}((Jnn : Jnn <: lanetype), `%`_dim{i#17952}(M)), v_1)] -[visit_exp `%X%`_shape{lanetype#2557, dim#2557, i#17945}((Jnn : Jnn <: lanetype), `%`_dim{i#17952}(M))] -[visit_exp lanetype#2557] -[visit_id lanetype#2557] -[visit_exp dim#2557] -[visit_id dim#2557] -[visit_exp i#17945] -[visit_id i#17945] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#17952}(M))] +[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#17952}(M)] -[visit_exp i#17952] -[visit_id i#17952] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free [visit_exp v_1] [visit_id v_1] not free -[visit_exp ($ibits_(32, c) = `%`_bit{i#18257}($ilt_($lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, c_1, `%`_iN{i#18238}(0))!`%`_u32{i#18256}.0)*{c_1 <- `c_1*`, i#18238 <- `i#18238*`, i#18256 <- `i#18256*`, i#18257 <- `i#18257*`} ++ `%`_bit{i#18272}(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){i#18272 <- `i#18272*`})] +[visit_exp ($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){})] [visit_exp $ibits_(32, c)] [visit_exp 32] [visit_exp c] [visit_id c] not free -[visit_exp `%`_bit{i#18257}($ilt_($lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, c_1, `%`_iN{i#18238}(0))!`%`_u32{i#18256}.0)*{c_1 <- `c_1*`, i#18238 <- `i#18238*`, i#18256 <- `i#18256*`, i#18257 <- `i#18257*`} ++ `%`_bit{i#18272}(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){i#18272 <- `i#18272*`}] -[visit_exp `%`_bit{i#18257}($ilt_($lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, c_1, `%`_iN{i#18238}(0))!`%`_u32{i#18256}.0)*{c_1 <- `c_1*`, i#18238 <- `i#18238*`, i#18256 <- `i#18256*`, i#18257 <- `i#18257*`}] +[visit_exp `%`_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){}] +[visit_exp `%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, c_1, `%`_iN(0))!`%`_u32.0)*{c_1 <- `c_1*`}] [scope_enter c_1] -[scope_enter i#18238] -[scope_enter i#18256] -[scope_enter i#18257] -[visit_exp `%`_bit{i#18257}($ilt_($lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, c_1, `%`_iN{i#18238}(0))!`%`_u32{i#18256}.0)] -[visit_exp i#18257] -[visit_id i#18257] not free -[visit_exp ($ilt_($lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, c_1, `%`_iN{i#18238}(0))!`%`_u32{i#18256}.0)] -[visit_exp $ilt_($lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, c_1, `%`_iN{i#18238}(0))!`%`_u32{i#18256}.0] -[visit_exp $ilt_($lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, c_1, `%`_iN{i#18238}(0))!`%`_u32{i#18256}] -[visit_exp $ilt_($lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, c_1, `%`_iN{i#18238}(0))] +[visit_exp `%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, c_1, `%`_iN(0))!`%`_u32.0)] +[visit_exp ($ilt_($lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, c_1, `%`_iN(0))!`%`_u32.0)] +[visit_exp $ilt_($lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, c_1, `%`_iN(0))!`%`_u32.0] +[visit_exp $ilt_($lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, c_1, `%`_iN(0))!`%`_u32] +[visit_exp $ilt_($lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, c_1, `%`_iN(0))] [visit_exp $lsizenn((Jnn : Jnn <: lanetype))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] @@ -41328,42 +35559,18 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp ()] [visit_exp c_1] [visit_id c_1] not free -[visit_exp `%`_iN{i#18238}(0)] -[visit_exp i#18238] -[visit_id i#18238] not free +[visit_exp `%`_iN(0)] [visit_exp (0)] [visit_exp 0] -[visit_exp i#18256] -[visit_id i#18256] not free [visit_id c_1] not free -[visit_id i#18238] not free -[visit_id i#18256] not free -[visit_id i#18257] not free -[scope_exit i#18257] -[scope_exit i#18256] -[scope_exit i#18238] [scope_exit c_1] [visit_exp `c_1*`] [visit_id c_1*] not free [visit_id c_1*] no dims -[visit_exp `i#18238*`] -[visit_id i#18238*] no dims -[visit_id i#18238*] -[visit_exp `i#18256*`] -[visit_id i#18256*] no dims -[visit_id i#18256*] -[visit_exp `i#18257*`] -[visit_id i#18257*] no dims -[visit_id i#18257*] -[visit_exp `%`_bit{i#18272}(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){i#18272 <- `i#18272*`}] -[scope_enter i#18272] -[visit_exp `%`_bit{i#18272}(0)] -[visit_exp i#18272] -[visit_id i#18272] not free +[visit_exp `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}] +[visit_exp `%`_bit(0)] [visit_exp (0)] [visit_exp 0] -[visit_id i#18272] not free -[scope_exit i#18272] [visit_exp (((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat)] [visit_exp ((32 : nat <:> int) - (M : nat <:> int))] [visit_exp (32 : nat <:> int)] @@ -41371,29 +35578,18 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp (M : nat <:> int)] [visit_exp M] [visit_id M] not free -[visit_exp `i#18272*`] -[visit_id i#18272*] no dims -[visit_id i#18272*] => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbitmaskop_{lanetype#2545 : lanetype, dim#2545 : dim, i#17921 : nat, Jnn : Jnn, i#17928 : nat, M : M, v_1 : vec_(`V128`_Vnn), c : iN(32), lanetype#2557 : lanetype, dim#2557 : dim, i#17945 : nat, i#17952 : nat, `i#18238*` : nat*, `i#18256*` : nat*, `i#18257*` : nat*, `i#18272*` : nat*, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#2557, dim#2557, i#17945}((Jnn : Jnn <: lanetype), `%`_dim{i#17952}(M))))*}(`%X%`_shape{lanetype#2545, dim#2545, i#17921}((Jnn : Jnn <: lanetype), `%`_dim{i#17928}(M)), v_1) = $irev_(32, c) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2557, dim#2557, i#17945}((Jnn : Jnn <: lanetype), `%`_dim{i#17952}(M)), v_1)) - -- if ($ibits_(32, c) = `%`_bit{i#18257}($ilt_($lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, c_1, `%`_iN{i#18238}(0))!`%`_u32{i#18256}.0)*{c_1 <- `c_1*`, i#18238 <- `i#18238*`, i#18256 <- `i#18256*`, i#18257 <- `i#18257*`} ++ `%`_bit{i#18272}(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){i#18272 <- `i#18272*`}) -[check_dims] Jnn M c c_1 c_2 dim#2584 dim#2596 dim#2621 dim#2648 i#18299 i#18306 i#18335 i#18342 i#18421 i#18428 i#18585 i#18592 lanetype#2584 lanetype#2596 lanetype#2621 lanetype#2648 v_1 v_2 -[visit_exp `%X%`_shape{lanetype#2584, dim#2584, i#18299}((Jnn : Jnn <: lanetype), `%`_dim{i#18306}(M))] -[visit_exp lanetype#2584] -[visit_id lanetype#2584] -[visit_exp dim#2584] -[visit_id dim#2584] -[visit_exp i#18299] -[visit_id i#18299] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#18306}(M))] + 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) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_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){}) +[check_dims] Jnn M c c_1 c_2 v_1 v_2 +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] -[visit_exp `%`_dim{i#18306}(M)] -[visit_exp i#18306] -[visit_id i#18306] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -41401,21 +35597,13 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $inv_lanes_(`%X%`_shape{lanetype#2648, dim#2648, i#18585}((Jnn : Jnn <: lanetype), `%`_dim{i#18592}(M)), c*{c <- `c*`})] -[visit_exp `%X%`_shape{lanetype#2648, dim#2648, i#18585}((Jnn : Jnn <: lanetype), `%`_dim{i#18592}(M))] -[visit_exp lanetype#2648] -[visit_id lanetype#2648] -[visit_exp dim#2648] -[visit_id dim#2648] -[visit_exp i#18585] -[visit_id i#18585] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#18592}(M))] +[visit_exp $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#18592}(M)] -[visit_exp i#18592] -[visit_id i#18592] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -41428,7 +35616,7 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c*`] [visit_id c*] no dims [visit_id c*] -[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2596, dim#2596, i#18335}((Jnn : Jnn <: lanetype), `%`_dim{i#18342}(M)), v_1))] +[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1))] [visit_exp c_1*{c_1 <- `c_1*`}] [scope_enter c_1] [visit_exp c_1] @@ -41438,27 +35626,19 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c_1*`] [visit_id c_1*] no dims [visit_id c_1*] -[visit_exp $lanes_(`%X%`_shape{lanetype#2596, dim#2596, i#18335}((Jnn : Jnn <: lanetype), `%`_dim{i#18342}(M)), v_1)] -[visit_exp `%X%`_shape{lanetype#2596, dim#2596, i#18335}((Jnn : Jnn <: lanetype), `%`_dim{i#18342}(M))] -[visit_exp lanetype#2596] -[visit_id lanetype#2596] -[visit_exp dim#2596] -[visit_id dim#2596] -[visit_exp i#18335] -[visit_id i#18335] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#18342}(M))] +[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#18342}(M)] -[visit_exp i#18342] -[visit_id i#18342] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free [visit_exp v_1] [visit_id v_1] not free -[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#2621, dim#2621, i#18421}((Jnn : Jnn <: lanetype), `%`_dim{i#18428}(M)), v_2))] +[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2))] [visit_exp c_2*{c_2 <- `c_2*`}] [scope_enter c_2] [visit_exp c_2] @@ -41468,21 +35648,13 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c_2*`] [visit_id c_2*] no dims [visit_id c_2*] -[visit_exp $lanes_(`%X%`_shape{lanetype#2621, dim#2621, i#18421}((Jnn : Jnn <: lanetype), `%`_dim{i#18428}(M)), v_2)] -[visit_exp `%X%`_shape{lanetype#2621, dim#2621, i#18421}((Jnn : Jnn <: lanetype), `%`_dim{i#18428}(M))] -[visit_exp lanetype#2621] -[visit_id lanetype#2621] -[visit_exp dim#2621] -[visit_id dim#2621] -[visit_exp i#18421] -[visit_id i#18421] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#18428}(M))] +[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#18428}(M)] -[visit_exp i#18428] -[visit_id i#18428] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -41523,25 +35695,17 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_id c_2*] no dims => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivswizzlop_{lanetype#2584 : lanetype, dim#2584 : dim, i#18299 : nat, Jnn : Jnn, i#18306 : nat, M : M, def $f_(N : N, iN(N)*, iN : iN(N)) : iN(N), v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#2648 : lanetype, dim#2648 : dim, i#18585 : nat, i#18592 : nat, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, lanetype#2596 : lanetype, dim#2596 : dim, i#18335 : nat, i#18342 : nat, lanetype#2621 : lanetype, dim#2621 : dim, i#18421 : nat, i#18428 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#2596, dim#2596, i#18335}((Jnn : Jnn <: lanetype), `%`_dim{i#18342}(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#2621, dim#2621, i#18421}((Jnn : Jnn <: lanetype), `%`_dim{i#18428}(M))))*}(`%X%`_shape{lanetype#2584, dim#2584, i#18299}((Jnn : Jnn <: lanetype), `%`_dim{i#18306}(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape{lanetype#2648, dim#2648, i#18585}((Jnn : Jnn <: lanetype), `%`_dim{i#18592}(M)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2596, dim#2596, i#18335}((Jnn : Jnn <: lanetype), `%`_dim{i#18342}(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#2621, dim#2621, i#18421}((Jnn : Jnn <: lanetype), `%`_dim{i#18428}(M)), v_2)) + 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*`}) + -- 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)), c_1*{c_1 <- `c_1*`}, c_2)*{c_2 <- `c_2*`}) -[check_dims] Jnn M c c_1 c_2 dim#2672 dim#2684 dim#2709 dim#2760 i i#18658 i#18665 i#18719 i#18726 i#18805 i#18812 i#18958 i#19037 i#19044 lanetype#2672 lanetype#2684 lanetype#2709 lanetype#2760 v_1 v_2 -[visit_exp `%X%`_shape{lanetype#2672, dim#2672, i#18658}((Jnn : Jnn <: lanetype), `%`_dim{i#18665}(M))] -[visit_exp lanetype#2672] -[visit_id lanetype#2672] -[visit_exp dim#2672] -[visit_id dim#2672] -[visit_exp i#18658] -[visit_id i#18658] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#18665}(M))] +[check_dims] Jnn M c c_1 c_2 i v_1 v_2 +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] -[visit_exp `%`_dim{i#18665}(M)] -[visit_exp i#18665] -[visit_id i#18665] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -41558,21 +35722,13 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $inv_lanes_(`%X%`_shape{lanetype#2760, dim#2760, i#19037}((Jnn : Jnn <: lanetype), `%`_dim{i#19044}(M)), c*{c <- `c*`})] -[visit_exp `%X%`_shape{lanetype#2760, dim#2760, i#19037}((Jnn : Jnn <: lanetype), `%`_dim{i#19044}(M))] -[visit_exp lanetype#2760] -[visit_id lanetype#2760] -[visit_exp dim#2760] -[visit_id dim#2760] -[visit_exp i#19037] -[visit_id i#19037] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#19044}(M))] +[visit_exp $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#19044}(M)] -[visit_exp i#19044] -[visit_id i#19044] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -41585,7 +35741,7 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c*`] [visit_id c*] no dims [visit_id c*] -[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M)), v_1))] +[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1))] [visit_exp c_1*{c_1 <- `c_1*`}] [scope_enter c_1] [visit_exp c_1] @@ -41595,27 +35751,19 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c_1*`] [visit_id c_1*] no dims [visit_id c_1*] -[visit_exp $lanes_(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M)), v_1)] -[visit_exp `%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M))] -[visit_exp lanetype#2684] -[visit_id lanetype#2684] -[visit_exp dim#2684] -[visit_id dim#2684] -[visit_exp i#18719] -[visit_id i#18719] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M))] +[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#18726}(M)] -[visit_exp i#18726] -[visit_id i#18726] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free [visit_exp v_1] [visit_id v_1] not free -[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#2709, dim#2709, i#18805}((Jnn : Jnn <: lanetype), `%`_dim{i#18812}(M)), v_2))] +[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2))] [visit_exp c_2*{c_2 <- `c_2*`}] [scope_enter c_2] [visit_exp c_2] @@ -41625,27 +35773,19 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c_2*`] [visit_id c_2*] no dims [visit_id c_2*] -[visit_exp $lanes_(`%X%`_shape{lanetype#2709, dim#2709, i#18805}((Jnn : Jnn <: lanetype), `%`_dim{i#18812}(M)), v_2)] -[visit_exp `%X%`_shape{lanetype#2709, dim#2709, i#18805}((Jnn : Jnn <: lanetype), `%`_dim{i#18812}(M))] -[visit_exp lanetype#2709] -[visit_id lanetype#2709] -[visit_exp dim#2709] -[visit_id dim#2709] -[visit_exp i#18805] -[visit_id i#18805] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#18812}(M))] +[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#18812}(M)] -[visit_exp i#18812] -[visit_id i#18812] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free [visit_exp v_2] [visit_id v_2] not free -[visit_exp (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_laneidx{i#18958}.0]*{i <- `i*`, i#18958 <- `i#18958*`})] +[visit_exp (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_laneidx.0]*{i <- `i*`})] [visit_exp c*{c <- `c*`}] [scope_enter c] [visit_exp c] @@ -41655,10 +35795,9 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c*`] [visit_id c*] not free [visit_id c*] no dims -[visit_exp c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_laneidx{i#18958}.0]*{i <- `i*`, i#18958 <- `i#18958*`}] +[visit_exp c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_laneidx.0]*{i <- `i*`}] [scope_enter i] -[scope_enter i#18958] -[visit_exp c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_laneidx{i#18958}.0]] +[visit_exp c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_laneidx.0]] [visit_exp c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}] [visit_exp c_1*{c_1 <- `c_1*`}] [scope_enter c_1] @@ -41678,28 +35817,21 @@ DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` [visit_exp `c_2*`] [visit_id c_2*] not free [visit_id c_2*] no dims -[visit_exp i!`%`_laneidx{i#18958}.0] -[visit_exp i!`%`_laneidx{i#18958}] +[visit_exp i!`%`_laneidx.0] +[visit_exp i!`%`_laneidx] [visit_exp i] [visit_id i] not free -[visit_exp i#18958] -[visit_id i#18958] not free [visit_id i] not free -[visit_id i#18958] not free -[scope_exit i#18958] [scope_exit i] [visit_exp `i*`] [visit_id i*] not free [visit_id i*] no dims -[visit_exp `i#18958*`] -[visit_id i#18958*] no dims -[visit_id i#18958*] => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshufflop_{lanetype#2672 : lanetype, dim#2672 : dim, i#18658 : nat, Jnn : Jnn, i#18665 : nat, M : M, `i*` : laneidx*, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#2760 : lanetype, dim#2760 : dim, i#19037 : nat, i#19044 : nat, lanetype#2684 : lanetype, dim#2684 : dim, i#18719 : nat, i#18726 : nat, lanetype#2709 : lanetype, dim#2709 : dim, i#18805 : nat, i#18812 : nat, `i#18958*` : nat*, `c*` : lane_($lanetype(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M))))*, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#2709, dim#2709, i#18805}((Jnn : Jnn <: lanetype), `%`_dim{i#18812}(M))))*}(`%X%`_shape{lanetype#2672, dim#2672, i#18658}((Jnn : Jnn <: lanetype), `%`_dim{i#18665}(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape{lanetype#2760, dim#2760, i#19037}((Jnn : Jnn <: lanetype), `%`_dim{i#19044}(M)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#2709, dim#2709, i#18805}((Jnn : Jnn <: lanetype), `%`_dim{i#18812}(M)), v_2)) - -- if (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_laneidx{i#18958}.0]*{i <- `i*`, i#18958 <- `i#18958*`}) + 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*`}) + -- 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!`%`_laneidx.0]*{i <- `i*`}) [check_dims] vec_ vectype vvunop DecD vvunop_(vectype : vectype, vvunop : vvunop, vec_ : vec_(vectype)) : vec_(vectype)* [visit_id vectype] not free @@ -42056,21 +36188,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno => ;; ../../../../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)] -[check_dims] Fnn M dim#2845 dim#2894 i#19491 i#19498 i#19593 i#19600 lanetype#2845 lanetype#2894 v -[visit_exp `%X%`_shape{lanetype#2845, dim#2845, i#19491}((Fnn : Fnn <: lanetype), `%`_dim{i#19498}(M))] -[visit_exp lanetype#2845] -[visit_id lanetype#2845] -[visit_exp dim#2845] -[visit_id dim#2845] -[visit_exp i#19491] -[visit_id i#19491] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#19498}(M))] +[check_dims] Fnn M v +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] -[visit_exp `%`_dim{i#19498}(M)] -[visit_exp i#19498] -[visit_id i#19498] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -42078,21 +36202,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_exp ()] [visit_exp v] [visit_id v] -[visit_exp $fvunop_(`%X%`_shape{lanetype#2894, dim#2894, i#19593}((Fnn : Fnn <: lanetype), `%`_dim{i#19600}(M)), def $fabs_, v)] -[visit_exp `%X%`_shape{lanetype#2894, dim#2894, i#19593}((Fnn : Fnn <: lanetype), `%`_dim{i#19600}(M))] -[visit_exp lanetype#2894] -[visit_id lanetype#2894] -[visit_exp dim#2894] -[visit_id dim#2894] -[visit_exp i#19593] -[visit_id i#19593] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#19600}(M))] +[visit_exp $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fabs_, v)] +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] not free -[visit_exp `%`_dim{i#19600}(M)] -[visit_exp i#19600] -[visit_id i#19600] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -42100,22 +36216,14 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{lanetype#2845 : lanetype, dim#2845 : dim, i#19491 : nat, Fnn : Fnn, i#19498 : nat, M : M, v : vec_(`V128`_Vnn), lanetype#2894 : lanetype, dim#2894 : dim, i#19593 : nat, i#19600 : nat}(`%X%`_shape{lanetype#2845, dim#2845, i#19491}((Fnn : Fnn <: lanetype), `%`_dim{i#19498}(M)), `ABS`_vunop_, v) = $fvunop_(`%X%`_shape{lanetype#2894, dim#2894, i#19593}((Fnn : Fnn <: lanetype), `%`_dim{i#19600}(M)), def $fabs_, v) -[check_dims] Fnn M dim#2906 dim#2955 i#19615 i#19622 i#19717 i#19724 lanetype#2906 lanetype#2955 v -[visit_exp `%X%`_shape{lanetype#2906, dim#2906, i#19615}((Fnn : Fnn <: lanetype), `%`_dim{i#19622}(M))] -[visit_exp lanetype#2906] -[visit_id lanetype#2906] -[visit_exp dim#2906] -[visit_id dim#2906] -[visit_exp i#19615] -[visit_id i#19615] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#19622}(M))] + 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) +[check_dims] Fnn M v +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] -[visit_exp `%`_dim{i#19622}(M)] -[visit_exp i#19622] -[visit_id i#19622] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -42123,21 +36231,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_exp ()] [visit_exp v] [visit_id v] -[visit_exp $fvunop_(`%X%`_shape{lanetype#2955, dim#2955, i#19717}((Fnn : Fnn <: lanetype), `%`_dim{i#19724}(M)), def $fneg_, v)] -[visit_exp `%X%`_shape{lanetype#2955, dim#2955, i#19717}((Fnn : Fnn <: lanetype), `%`_dim{i#19724}(M))] -[visit_exp lanetype#2955] -[visit_id lanetype#2955] -[visit_exp dim#2955] -[visit_id dim#2955] -[visit_exp i#19717] -[visit_id i#19717] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#19724}(M))] +[visit_exp $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fneg_, v)] +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] not free -[visit_exp `%`_dim{i#19724}(M)] -[visit_exp i#19724] -[visit_id i#19724] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -42145,22 +36245,14 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{lanetype#2906 : lanetype, dim#2906 : dim, i#19615 : nat, Fnn : Fnn, i#19622 : nat, M : M, v : vec_(`V128`_Vnn), lanetype#2955 : lanetype, dim#2955 : dim, i#19717 : nat, i#19724 : nat}(`%X%`_shape{lanetype#2906, dim#2906, i#19615}((Fnn : Fnn <: lanetype), `%`_dim{i#19622}(M)), `NEG`_vunop_, v) = $fvunop_(`%X%`_shape{lanetype#2955, dim#2955, i#19717}((Fnn : Fnn <: lanetype), `%`_dim{i#19724}(M)), def $fneg_, v) -[check_dims] Fnn M dim#2967 dim#3016 i#19739 i#19746 i#19841 i#19848 lanetype#2967 lanetype#3016 v -[visit_exp `%X%`_shape{lanetype#2967, dim#2967, i#19739}((Fnn : Fnn <: lanetype), `%`_dim{i#19746}(M))] -[visit_exp lanetype#2967] -[visit_id lanetype#2967] -[visit_exp dim#2967] -[visit_id dim#2967] -[visit_exp i#19739] -[visit_id i#19739] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#19746}(M))] + 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) +[check_dims] Fnn M v +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] -[visit_exp `%`_dim{i#19746}(M)] -[visit_exp i#19746] -[visit_id i#19746] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -42168,21 +36260,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_exp ()] [visit_exp v] [visit_id v] -[visit_exp $fvunop_(`%X%`_shape{lanetype#3016, dim#3016, i#19841}((Fnn : Fnn <: lanetype), `%`_dim{i#19848}(M)), def $fsqrt_, v)] -[visit_exp `%X%`_shape{lanetype#3016, dim#3016, i#19841}((Fnn : Fnn <: lanetype), `%`_dim{i#19848}(M))] -[visit_exp lanetype#3016] -[visit_id lanetype#3016] -[visit_exp dim#3016] -[visit_id dim#3016] -[visit_exp i#19841] -[visit_id i#19841] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#19848}(M))] +[visit_exp $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsqrt_, v)] +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] not free -[visit_exp `%`_dim{i#19848}(M)] -[visit_exp i#19848] -[visit_id i#19848] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -42190,22 +36274,14 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{lanetype#2967 : lanetype, dim#2967 : dim, i#19739 : nat, Fnn : Fnn, i#19746 : nat, M : M, v : vec_(`V128`_Vnn), lanetype#3016 : lanetype, dim#3016 : dim, i#19841 : nat, i#19848 : nat}(`%X%`_shape{lanetype#2967, dim#2967, i#19739}((Fnn : Fnn <: lanetype), `%`_dim{i#19746}(M)), `SQRT`_vunop_, v) = $fvunop_(`%X%`_shape{lanetype#3016, dim#3016, i#19841}((Fnn : Fnn <: lanetype), `%`_dim{i#19848}(M)), def $fsqrt_, v) -[check_dims] Fnn M dim#3028 dim#3077 i#19863 i#19870 i#19965 i#19972 lanetype#3028 lanetype#3077 v -[visit_exp `%X%`_shape{lanetype#3028, dim#3028, i#19863}((Fnn : Fnn <: lanetype), `%`_dim{i#19870}(M))] -[visit_exp lanetype#3028] -[visit_id lanetype#3028] -[visit_exp dim#3028] -[visit_id dim#3028] -[visit_exp i#19863] -[visit_id i#19863] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#19870}(M))] + 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) +[check_dims] Fnn M v +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] -[visit_exp `%`_dim{i#19870}(M)] -[visit_exp i#19870] -[visit_id i#19870] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -42213,21 +36289,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_exp ()] [visit_exp v] [visit_id v] -[visit_exp $fvunop_(`%X%`_shape{lanetype#3077, dim#3077, i#19965}((Fnn : Fnn <: lanetype), `%`_dim{i#19972}(M)), def $fceil_, v)] -[visit_exp `%X%`_shape{lanetype#3077, dim#3077, i#19965}((Fnn : Fnn <: lanetype), `%`_dim{i#19972}(M))] -[visit_exp lanetype#3077] -[visit_id lanetype#3077] -[visit_exp dim#3077] -[visit_id dim#3077] -[visit_exp i#19965] -[visit_id i#19965] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#19972}(M))] +[visit_exp $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fceil_, v)] +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] not free -[visit_exp `%`_dim{i#19972}(M)] -[visit_exp i#19972] -[visit_id i#19972] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -42235,22 +36303,14 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{lanetype#3028 : lanetype, dim#3028 : dim, i#19863 : nat, Fnn : Fnn, i#19870 : nat, M : M, v : vec_(`V128`_Vnn), lanetype#3077 : lanetype, dim#3077 : dim, i#19965 : nat, i#19972 : nat}(`%X%`_shape{lanetype#3028, dim#3028, i#19863}((Fnn : Fnn <: lanetype), `%`_dim{i#19870}(M)), `CEIL`_vunop_, v) = $fvunop_(`%X%`_shape{lanetype#3077, dim#3077, i#19965}((Fnn : Fnn <: lanetype), `%`_dim{i#19972}(M)), def $fceil_, v) -[check_dims] Fnn M dim#3089 dim#3138 i#19987 i#19994 i#20089 i#20096 lanetype#3089 lanetype#3138 v -[visit_exp `%X%`_shape{lanetype#3089, dim#3089, i#19987}((Fnn : Fnn <: lanetype), `%`_dim{i#19994}(M))] -[visit_exp lanetype#3089] -[visit_id lanetype#3089] -[visit_exp dim#3089] -[visit_id dim#3089] -[visit_exp i#19987] -[visit_id i#19987] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#19994}(M))] + 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) +[check_dims] Fnn M v +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] -[visit_exp `%`_dim{i#19994}(M)] -[visit_exp i#19994] -[visit_id i#19994] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -42258,21 +36318,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_exp ()] [visit_exp v] [visit_id v] -[visit_exp $fvunop_(`%X%`_shape{lanetype#3138, dim#3138, i#20089}((Fnn : Fnn <: lanetype), `%`_dim{i#20096}(M)), def $ffloor_, v)] -[visit_exp `%X%`_shape{lanetype#3138, dim#3138, i#20089}((Fnn : Fnn <: lanetype), `%`_dim{i#20096}(M))] -[visit_exp lanetype#3138] -[visit_id lanetype#3138] -[visit_exp dim#3138] -[visit_id dim#3138] -[visit_exp i#20089] -[visit_id i#20089] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#20096}(M))] +[visit_exp $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ffloor_, v)] +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] not free -[visit_exp `%`_dim{i#20096}(M)] -[visit_exp i#20096] -[visit_id i#20096] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -42280,22 +36332,14 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{lanetype#3089 : lanetype, dim#3089 : dim, i#19987 : nat, Fnn : Fnn, i#19994 : nat, M : M, v : vec_(`V128`_Vnn), lanetype#3138 : lanetype, dim#3138 : dim, i#20089 : nat, i#20096 : nat}(`%X%`_shape{lanetype#3089, dim#3089, i#19987}((Fnn : Fnn <: lanetype), `%`_dim{i#19994}(M)), `FLOOR`_vunop_, v) = $fvunop_(`%X%`_shape{lanetype#3138, dim#3138, i#20089}((Fnn : Fnn <: lanetype), `%`_dim{i#20096}(M)), def $ffloor_, v) -[check_dims] Fnn M dim#3150 dim#3199 i#20111 i#20118 i#20213 i#20220 lanetype#3150 lanetype#3199 v -[visit_exp `%X%`_shape{lanetype#3150, dim#3150, i#20111}((Fnn : Fnn <: lanetype), `%`_dim{i#20118}(M))] -[visit_exp lanetype#3150] -[visit_id lanetype#3150] -[visit_exp dim#3150] -[visit_id dim#3150] -[visit_exp i#20111] -[visit_id i#20111] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#20118}(M))] + 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) +[check_dims] Fnn M v +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] -[visit_exp `%`_dim{i#20118}(M)] -[visit_exp i#20118] -[visit_id i#20118] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -42303,21 +36347,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_exp ()] [visit_exp v] [visit_id v] -[visit_exp $fvunop_(`%X%`_shape{lanetype#3199, dim#3199, i#20213}((Fnn : Fnn <: lanetype), `%`_dim{i#20220}(M)), def $ftrunc_, v)] -[visit_exp `%X%`_shape{lanetype#3199, dim#3199, i#20213}((Fnn : Fnn <: lanetype), `%`_dim{i#20220}(M))] -[visit_exp lanetype#3199] -[visit_id lanetype#3199] -[visit_exp dim#3199] -[visit_id dim#3199] -[visit_exp i#20213] -[visit_id i#20213] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#20220}(M))] +[visit_exp $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ftrunc_, v)] +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] not free -[visit_exp `%`_dim{i#20220}(M)] -[visit_exp i#20220] -[visit_id i#20220] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -42325,22 +36361,14 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{lanetype#3150 : lanetype, dim#3150 : dim, i#20111 : nat, Fnn : Fnn, i#20118 : nat, M : M, v : vec_(`V128`_Vnn), lanetype#3199 : lanetype, dim#3199 : dim, i#20213 : nat, i#20220 : nat}(`%X%`_shape{lanetype#3150, dim#3150, i#20111}((Fnn : Fnn <: lanetype), `%`_dim{i#20118}(M)), `TRUNC`_vunop_, v) = $fvunop_(`%X%`_shape{lanetype#3199, dim#3199, i#20213}((Fnn : Fnn <: lanetype), `%`_dim{i#20220}(M)), def $ftrunc_, v) -[check_dims] Fnn M dim#3211 dim#3260 i#20235 i#20242 i#20337 i#20344 lanetype#3211 lanetype#3260 v -[visit_exp `%X%`_shape{lanetype#3211, dim#3211, i#20235}((Fnn : Fnn <: lanetype), `%`_dim{i#20242}(M))] -[visit_exp lanetype#3211] -[visit_id lanetype#3211] -[visit_exp dim#3211] -[visit_id dim#3211] -[visit_exp i#20235] -[visit_id i#20235] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#20242}(M))] + 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) +[check_dims] Fnn M v +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] -[visit_exp `%`_dim{i#20242}(M)] -[visit_exp i#20242] -[visit_id i#20242] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -42348,21 +36376,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_exp ()] [visit_exp v] [visit_id v] -[visit_exp $fvunop_(`%X%`_shape{lanetype#3260, dim#3260, i#20337}((Fnn : Fnn <: lanetype), `%`_dim{i#20344}(M)), def $fnearest_, v)] -[visit_exp `%X%`_shape{lanetype#3260, dim#3260, i#20337}((Fnn : Fnn <: lanetype), `%`_dim{i#20344}(M))] -[visit_exp lanetype#3260] -[visit_id lanetype#3260] -[visit_exp dim#3260] -[visit_id dim#3260] -[visit_exp i#20337] -[visit_id i#20337] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#20344}(M))] +[visit_exp $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fnearest_, v)] +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] not free -[visit_exp `%`_dim{i#20344}(M)] -[visit_exp i#20344] -[visit_id i#20344] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -42370,22 +36390,14 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{lanetype#3211 : lanetype, dim#3211 : dim, i#20235 : nat, Fnn : Fnn, i#20242 : nat, M : M, v : vec_(`V128`_Vnn), lanetype#3260 : lanetype, dim#3260 : dim, i#20337 : nat, i#20344 : nat}(`%X%`_shape{lanetype#3211, dim#3211, i#20235}((Fnn : Fnn <: lanetype), `%`_dim{i#20242}(M)), `NEAREST`_vunop_, v) = $fvunop_(`%X%`_shape{lanetype#3260, dim#3260, i#20337}((Fnn : Fnn <: lanetype), `%`_dim{i#20344}(M)), def $fnearest_, v) -[check_dims] Jnn M dim#3272 dim#3308 i#20359 i#20366 i#20448 i#20455 lanetype#3272 lanetype#3308 v -[visit_exp `%X%`_shape{lanetype#3272, dim#3272, i#20359}((Jnn : Jnn <: lanetype), `%`_dim{i#20366}(M))] -[visit_exp lanetype#3272] -[visit_id lanetype#3272] -[visit_exp dim#3272] -[visit_id dim#3272] -[visit_exp i#20359] -[visit_id i#20359] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#20366}(M))] + 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) +[check_dims] Jnn M v +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] -[visit_exp `%`_dim{i#20366}(M)] -[visit_exp i#20366] -[visit_id i#20366] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -42393,21 +36405,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_exp ()] [visit_exp v] [visit_id v] -[visit_exp $ivunop_(`%X%`_shape{lanetype#3308, dim#3308, i#20448}((Jnn : Jnn <: lanetype), `%`_dim{i#20455}(M)), def $iabs_, v)] -[visit_exp `%X%`_shape{lanetype#3308, dim#3308, i#20448}((Jnn : Jnn <: lanetype), `%`_dim{i#20455}(M))] -[visit_exp lanetype#3308] -[visit_id lanetype#3308] -[visit_exp dim#3308] -[visit_id dim#3308] -[visit_exp i#20448] -[visit_id i#20448] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#20455}(M))] +[visit_exp $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#20455}(M)] -[visit_exp i#20455] -[visit_id i#20455] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -42415,22 +36419,14 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{lanetype#3272 : lanetype, dim#3272 : dim, i#20359 : nat, Jnn : Jnn, i#20366 : nat, M : M, v : vec_(`V128`_Vnn), lanetype#3308 : lanetype, dim#3308 : dim, i#20448 : nat, i#20455 : nat}(`%X%`_shape{lanetype#3272, dim#3272, i#20359}((Jnn : Jnn <: lanetype), `%`_dim{i#20366}(M)), `ABS`_vunop_, v) = $ivunop_(`%X%`_shape{lanetype#3308, dim#3308, i#20448}((Jnn : Jnn <: lanetype), `%`_dim{i#20455}(M)), def $iabs_, v) -[check_dims] Jnn M dim#3320 dim#3356 i#20470 i#20477 i#20559 i#20566 lanetype#3320 lanetype#3356 v -[visit_exp `%X%`_shape{lanetype#3320, dim#3320, i#20470}((Jnn : Jnn <: lanetype), `%`_dim{i#20477}(M))] -[visit_exp lanetype#3320] -[visit_id lanetype#3320] -[visit_exp dim#3320] -[visit_id dim#3320] -[visit_exp i#20470] -[visit_id i#20470] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#20477}(M))] + 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) +[check_dims] Jnn M v +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] -[visit_exp `%`_dim{i#20477}(M)] -[visit_exp i#20477] -[visit_id i#20477] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -42438,21 +36434,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_exp ()] [visit_exp v] [visit_id v] -[visit_exp $ivunop_(`%X%`_shape{lanetype#3356, dim#3356, i#20559}((Jnn : Jnn <: lanetype), `%`_dim{i#20566}(M)), def $ineg_, v)] -[visit_exp `%X%`_shape{lanetype#3356, dim#3356, i#20559}((Jnn : Jnn <: lanetype), `%`_dim{i#20566}(M))] -[visit_exp lanetype#3356] -[visit_id lanetype#3356] -[visit_exp dim#3356] -[visit_id dim#3356] -[visit_exp i#20559] -[visit_id i#20559] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#20566}(M))] +[visit_exp $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#20566}(M)] -[visit_exp i#20566] -[visit_id i#20566] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -42460,22 +36448,14 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{lanetype#3320 : lanetype, dim#3320 : dim, i#20470 : nat, Jnn : Jnn, i#20477 : nat, M : M, v : vec_(`V128`_Vnn), lanetype#3356 : lanetype, dim#3356 : dim, i#20559 : nat, i#20566 : nat}(`%X%`_shape{lanetype#3320, dim#3320, i#20470}((Jnn : Jnn <: lanetype), `%`_dim{i#20477}(M)), `NEG`_vunop_, v) = $ivunop_(`%X%`_shape{lanetype#3356, dim#3356, i#20559}((Jnn : Jnn <: lanetype), `%`_dim{i#20566}(M)), def $ineg_, v) -[check_dims] Jnn M dim#3368 dim#3404 i#20581 i#20588 i#20670 i#20677 lanetype#3368 lanetype#3404 v -[visit_exp `%X%`_shape{lanetype#3368, dim#3368, i#20581}((Jnn : Jnn <: lanetype), `%`_dim{i#20588}(M))] -[visit_exp lanetype#3368] -[visit_id lanetype#3368] -[visit_exp dim#3368] -[visit_id dim#3368] -[visit_exp i#20581] -[visit_id i#20581] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#20588}(M))] + 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) +[check_dims] Jnn M v +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] -[visit_exp `%`_dim{i#20588}(M)] -[visit_exp i#20588] -[visit_id i#20588] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -42483,21 +36463,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_exp ()] [visit_exp v] [visit_id v] -[visit_exp $ivunop_(`%X%`_shape{lanetype#3404, dim#3404, i#20670}((Jnn : Jnn <: lanetype), `%`_dim{i#20677}(M)), def $ipopcnt_, v)] -[visit_exp `%X%`_shape{lanetype#3404, dim#3404, i#20670}((Jnn : Jnn <: lanetype), `%`_dim{i#20677}(M))] -[visit_exp lanetype#3404] -[visit_id lanetype#3404] -[visit_exp dim#3404] -[visit_id dim#3404] -[visit_exp i#20670] -[visit_id i#20670] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#20677}(M))] +[visit_exp $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#20677}(M)] -[visit_exp i#20677] -[visit_id i#20677] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -42505,22 +36477,14 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{lanetype#3368 : lanetype, dim#3368 : dim, i#20581 : nat, Jnn : Jnn, i#20588 : nat, M : M, v : vec_(`V128`_Vnn), lanetype#3404 : lanetype, dim#3404 : dim, i#20670 : nat, i#20677 : nat}(`%X%`_shape{lanetype#3368, dim#3368, i#20581}((Jnn : Jnn <: lanetype), `%`_dim{i#20588}(M)), `POPCNT`_vunop_, v) = $ivunop_(`%X%`_shape{lanetype#3404, dim#3404, i#20670}((Jnn : Jnn <: lanetype), `%`_dim{i#20677}(M)), def $ipopcnt_, v) -[check_dims] Jnn M dim#3416 dim#3452 i#20692 i#20699 i#20813 i#20820 lanetype#3416 lanetype#3452 v_1 v_2 -[visit_exp `%X%`_shape{lanetype#3416, dim#3416, i#20692}((Jnn : Jnn <: lanetype), `%`_dim{i#20699}(M))] -[visit_exp lanetype#3416] -[visit_id lanetype#3416] -[visit_exp dim#3416] -[visit_id dim#3416] -[visit_exp i#20692] -[visit_id i#20692] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#20699}(M))] + 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) +[check_dims] Jnn M v_1 v_2 +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] -[visit_exp `%`_dim{i#20699}(M)] -[visit_exp i#20699] -[visit_id i#20699] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -42530,21 +36494,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $ivbinop_(`%X%`_shape{lanetype#3452, dim#3452, i#20813}((Jnn : Jnn <: lanetype), `%`_dim{i#20820}(M)), def $iadd_, v_1, v_2)] -[visit_exp `%X%`_shape{lanetype#3452, dim#3452, i#20813}((Jnn : Jnn <: lanetype), `%`_dim{i#20820}(M))] -[visit_exp lanetype#3452] -[visit_id lanetype#3452] -[visit_exp dim#3452] -[visit_id dim#3452] -[visit_exp i#20813] -[visit_id i#20813] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#20820}(M))] +[visit_exp $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#20820}(M)] -[visit_exp i#20820] -[visit_id i#20820] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -42554,22 +36510,14 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_2] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{lanetype#3416 : lanetype, dim#3416 : dim, i#20692 : nat, Jnn : Jnn, i#20699 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#3452 : lanetype, dim#3452 : dim, i#20813 : nat, i#20820 : nat}(`%X%`_shape{lanetype#3416, dim#3416, i#20692}((Jnn : Jnn <: lanetype), `%`_dim{i#20699}(M)), `ADD`_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape{lanetype#3452, dim#3452, i#20813}((Jnn : Jnn <: lanetype), `%`_dim{i#20820}(M)), def $iadd_, v_1, v_2) -[check_dims] Jnn M dim#3464 dim#3500 i#20845 i#20852 i#20966 i#20973 lanetype#3464 lanetype#3500 v_1 v_2 -[visit_exp `%X%`_shape{lanetype#3464, dim#3464, i#20845}((Jnn : Jnn <: lanetype), `%`_dim{i#20852}(M))] -[visit_exp lanetype#3464] -[visit_id lanetype#3464] -[visit_exp dim#3464] -[visit_id dim#3464] -[visit_exp i#20845] -[visit_id i#20845] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#20852}(M))] + 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) +[check_dims] Jnn M v_1 v_2 +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] -[visit_exp `%`_dim{i#20852}(M)] -[visit_exp i#20852] -[visit_id i#20852] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -42579,21 +36527,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $ivbinop_(`%X%`_shape{lanetype#3500, dim#3500, i#20966}((Jnn : Jnn <: lanetype), `%`_dim{i#20973}(M)), def $isub_, v_1, v_2)] -[visit_exp `%X%`_shape{lanetype#3500, dim#3500, i#20966}((Jnn : Jnn <: lanetype), `%`_dim{i#20973}(M))] -[visit_exp lanetype#3500] -[visit_id lanetype#3500] -[visit_exp dim#3500] -[visit_id dim#3500] -[visit_exp i#20966] -[visit_id i#20966] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#20973}(M))] +[visit_exp $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#20973}(M)] -[visit_exp i#20973] -[visit_id i#20973] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -42603,22 +36543,14 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_2] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{lanetype#3464 : lanetype, dim#3464 : dim, i#20845 : nat, Jnn : Jnn, i#20852 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#3500 : lanetype, dim#3500 : dim, i#20966 : nat, i#20973 : nat}(`%X%`_shape{lanetype#3464, dim#3464, i#20845}((Jnn : Jnn <: lanetype), `%`_dim{i#20852}(M)), `SUB`_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape{lanetype#3500, dim#3500, i#20966}((Jnn : Jnn <: lanetype), `%`_dim{i#20973}(M)), def $isub_, v_1, v_2) -[check_dims] Jnn M dim#3512 dim#3548 i#20998 i#21005 i#21119 i#21126 lanetype#3512 lanetype#3548 v_1 v_2 -[visit_exp `%X%`_shape{lanetype#3512, dim#3512, i#20998}((Jnn : Jnn <: lanetype), `%`_dim{i#21005}(M))] -[visit_exp lanetype#3512] -[visit_id lanetype#3512] -[visit_exp dim#3512] -[visit_id dim#3512] -[visit_exp i#20998] -[visit_id i#20998] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#21005}(M))] + 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) +[check_dims] Jnn M v_1 v_2 +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] -[visit_exp `%`_dim{i#21005}(M)] -[visit_exp i#21005] -[visit_id i#21005] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -42628,21 +36560,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $ivbinop_(`%X%`_shape{lanetype#3548, dim#3548, i#21119}((Jnn : Jnn <: lanetype), `%`_dim{i#21126}(M)), def $imul_, v_1, v_2)] -[visit_exp `%X%`_shape{lanetype#3548, dim#3548, i#21119}((Jnn : Jnn <: lanetype), `%`_dim{i#21126}(M))] -[visit_exp lanetype#3548] -[visit_id lanetype#3548] -[visit_exp dim#3548] -[visit_id dim#3548] -[visit_exp i#21119] -[visit_id i#21119] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#21126}(M))] +[visit_exp $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#21126}(M)] -[visit_exp i#21126] -[visit_id i#21126] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -42652,28 +36576,18 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_2] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{lanetype#3512 : lanetype, dim#3512 : dim, i#20998 : nat, Jnn : Jnn, i#21005 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#3548 : lanetype, dim#3548 : dim, i#21119 : nat, i#21126 : nat}(`%X%`_shape{lanetype#3512, dim#3512, i#20998}((Jnn : Jnn <: lanetype), `%`_dim{i#21005}(M)), `MUL`_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape{lanetype#3548, dim#3548, i#21119}((Jnn : Jnn <: lanetype), `%`_dim{i#21126}(M)), def $imul_, v_1, v_2) -[check_dims] Jnn M dim#3560 dim#3596 i#21151 i#21158 i#21272 i#21279 lanetype#3560 lanetype#3596 sx sx#96 v_1 v_2 -[visit_exp `%X%`_shape{lanetype#3560, dim#3560, i#21151}((Jnn : Jnn <: lanetype), `%`_dim{i#21158}(M))] -[visit_exp lanetype#3560] -[visit_id lanetype#3560] -[visit_exp dim#3560] -[visit_id dim#3560] -[visit_exp i#21151] -[visit_id i#21151] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#21158}(M))] + 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) +[check_dims] Jnn M sx v_1 v_2 +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] -[visit_exp `%`_dim{i#21158}(M)] -[visit_exp i#21158] -[visit_id i#21158] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] -[visit_exp `ADD_SAT`_vbinop_{sx#96}(sx)] -[visit_exp sx#96] -[visit_id sx#96] +[visit_exp `ADD_SAT`_vbinop_(sx)] [visit_exp (sx)] [visit_exp sx] [visit_id sx] @@ -42681,21 +36595,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $ivbinopsx_(`%X%`_shape{lanetype#3596, dim#3596, i#21272}((Jnn : Jnn <: lanetype), `%`_dim{i#21279}(M)), def $iadd_sat_, sx, v_1, v_2)] -[visit_exp `%X%`_shape{lanetype#3596, dim#3596, i#21272}((Jnn : Jnn <: lanetype), `%`_dim{i#21279}(M))] -[visit_exp lanetype#3596] -[visit_id lanetype#3596] -[visit_exp dim#3596] -[visit_id dim#3596] -[visit_exp i#21272] -[visit_id i#21272] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#21279}(M))] +[visit_exp $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#21279}(M)] -[visit_exp i#21279] -[visit_id i#21279] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -42707,28 +36613,18 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_2] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{lanetype#3560 : lanetype, dim#3560 : dim, i#21151 : nat, Jnn : Jnn, i#21158 : nat, M : M, sx#96 : sx, sx : sx, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#3596 : lanetype, dim#3596 : dim, i#21272 : nat, i#21279 : nat}(`%X%`_shape{lanetype#3560, dim#3560, i#21151}((Jnn : Jnn <: lanetype), `%`_dim{i#21158}(M)), `ADD_SAT`_vbinop_{sx#96}(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape{lanetype#3596, dim#3596, i#21272}((Jnn : Jnn <: lanetype), `%`_dim{i#21279}(M)), def $iadd_sat_, sx, v_1, v_2) -[check_dims] Jnn M dim#3608 dim#3644 i#21304 i#21311 i#21425 i#21432 lanetype#3608 lanetype#3644 sx sx#98 v_1 v_2 -[visit_exp `%X%`_shape{lanetype#3608, dim#3608, i#21304}((Jnn : Jnn <: lanetype), `%`_dim{i#21311}(M))] -[visit_exp lanetype#3608] -[visit_id lanetype#3608] -[visit_exp dim#3608] -[visit_id dim#3608] -[visit_exp i#21304] -[visit_id i#21304] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#21311}(M))] + 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) +[check_dims] Jnn M sx v_1 v_2 +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] -[visit_exp `%`_dim{i#21311}(M)] -[visit_exp i#21311] -[visit_id i#21311] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] -[visit_exp `SUB_SAT`_vbinop_{sx#98}(sx)] -[visit_exp sx#98] -[visit_id sx#98] +[visit_exp `SUB_SAT`_vbinop_(sx)] [visit_exp (sx)] [visit_exp sx] [visit_id sx] @@ -42736,21 +36632,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $ivbinopsx_(`%X%`_shape{lanetype#3644, dim#3644, i#21425}((Jnn : Jnn <: lanetype), `%`_dim{i#21432}(M)), def $isub_sat_, sx, v_1, v_2)] -[visit_exp `%X%`_shape{lanetype#3644, dim#3644, i#21425}((Jnn : Jnn <: lanetype), `%`_dim{i#21432}(M))] -[visit_exp lanetype#3644] -[visit_id lanetype#3644] -[visit_exp dim#3644] -[visit_id dim#3644] -[visit_exp i#21425] -[visit_id i#21425] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#21432}(M))] +[visit_exp $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#21432}(M)] -[visit_exp i#21432] -[visit_id i#21432] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -42762,28 +36650,18 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_2] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{lanetype#3608 : lanetype, dim#3608 : dim, i#21304 : nat, Jnn : Jnn, i#21311 : nat, M : M, sx#98 : sx, sx : sx, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#3644 : lanetype, dim#3644 : dim, i#21425 : nat, i#21432 : nat}(`%X%`_shape{lanetype#3608, dim#3608, i#21304}((Jnn : Jnn <: lanetype), `%`_dim{i#21311}(M)), `SUB_SAT`_vbinop_{sx#98}(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape{lanetype#3644, dim#3644, i#21425}((Jnn : Jnn <: lanetype), `%`_dim{i#21432}(M)), def $isub_sat_, sx, v_1, v_2) -[check_dims] Jnn M dim#3656 dim#3692 i#21457 i#21464 i#21578 i#21585 lanetype#3656 lanetype#3692 sx sx#100 v_1 v_2 -[visit_exp `%X%`_shape{lanetype#3656, dim#3656, i#21457}((Jnn : Jnn <: lanetype), `%`_dim{i#21464}(M))] -[visit_exp lanetype#3656] -[visit_id lanetype#3656] -[visit_exp dim#3656] -[visit_id dim#3656] -[visit_exp i#21457] -[visit_id i#21457] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#21464}(M))] + 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) +[check_dims] Jnn M sx v_1 v_2 +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] -[visit_exp `%`_dim{i#21464}(M)] -[visit_exp i#21464] -[visit_id i#21464] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] -[visit_exp `MIN`_vbinop_{sx#100}(sx)] -[visit_exp sx#100] -[visit_id sx#100] +[visit_exp `MIN`_vbinop_(sx)] [visit_exp (sx)] [visit_exp sx] [visit_id sx] @@ -42791,21 +36669,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $ivbinopsx_(`%X%`_shape{lanetype#3692, dim#3692, i#21578}((Jnn : Jnn <: lanetype), `%`_dim{i#21585}(M)), def $imin_, sx, v_1, v_2)] -[visit_exp `%X%`_shape{lanetype#3692, dim#3692, i#21578}((Jnn : Jnn <: lanetype), `%`_dim{i#21585}(M))] -[visit_exp lanetype#3692] -[visit_id lanetype#3692] -[visit_exp dim#3692] -[visit_id dim#3692] -[visit_exp i#21578] -[visit_id i#21578] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#21585}(M))] +[visit_exp $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#21585}(M)] -[visit_exp i#21585] -[visit_id i#21585] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -42817,28 +36687,18 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_2] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{lanetype#3656 : lanetype, dim#3656 : dim, i#21457 : nat, Jnn : Jnn, i#21464 : nat, M : M, sx#100 : sx, sx : sx, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#3692 : lanetype, dim#3692 : dim, i#21578 : nat, i#21585 : nat}(`%X%`_shape{lanetype#3656, dim#3656, i#21457}((Jnn : Jnn <: lanetype), `%`_dim{i#21464}(M)), `MIN`_vbinop_{sx#100}(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape{lanetype#3692, dim#3692, i#21578}((Jnn : Jnn <: lanetype), `%`_dim{i#21585}(M)), def $imin_, sx, v_1, v_2) -[check_dims] Jnn M dim#3704 dim#3740 i#21610 i#21617 i#21731 i#21738 lanetype#3704 lanetype#3740 sx sx#102 v_1 v_2 -[visit_exp `%X%`_shape{lanetype#3704, dim#3704, i#21610}((Jnn : Jnn <: lanetype), `%`_dim{i#21617}(M))] -[visit_exp lanetype#3704] -[visit_id lanetype#3704] -[visit_exp dim#3704] -[visit_id dim#3704] -[visit_exp i#21610] -[visit_id i#21610] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#21617}(M))] + 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) +[check_dims] Jnn M sx v_1 v_2 +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] -[visit_exp `%`_dim{i#21617}(M)] -[visit_exp i#21617] -[visit_id i#21617] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] -[visit_exp `MAX`_vbinop_{sx#102}(sx)] -[visit_exp sx#102] -[visit_id sx#102] +[visit_exp `MAX`_vbinop_(sx)] [visit_exp (sx)] [visit_exp sx] [visit_id sx] @@ -42846,21 +36706,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $ivbinopsx_(`%X%`_shape{lanetype#3740, dim#3740, i#21731}((Jnn : Jnn <: lanetype), `%`_dim{i#21738}(M)), def $imax_, sx, v_1, v_2)] -[visit_exp `%X%`_shape{lanetype#3740, dim#3740, i#21731}((Jnn : Jnn <: lanetype), `%`_dim{i#21738}(M))] -[visit_exp lanetype#3740] -[visit_id lanetype#3740] -[visit_exp dim#3740] -[visit_id dim#3740] -[visit_exp i#21731] -[visit_id i#21731] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#21738}(M))] +[visit_exp $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#21738}(M)] -[visit_exp i#21738] -[visit_id i#21738] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -42872,22 +36724,14 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_2] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{lanetype#3704 : lanetype, dim#3704 : dim, i#21610 : nat, Jnn : Jnn, i#21617 : nat, M : M, sx#102 : sx, sx : sx, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#3740 : lanetype, dim#3740 : dim, i#21731 : nat, i#21738 : nat}(`%X%`_shape{lanetype#3704, dim#3704, i#21610}((Jnn : Jnn <: lanetype), `%`_dim{i#21617}(M)), `MAX`_vbinop_{sx#102}(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape{lanetype#3740, dim#3740, i#21731}((Jnn : Jnn <: lanetype), `%`_dim{i#21738}(M)), def $imax_, sx, v_1, v_2) -[check_dims] Jnn M dim#3752 dim#3788 i#21763 i#21770 i#21884 i#21891 lanetype#3752 lanetype#3788 v_1 v_2 -[visit_exp `%X%`_shape{lanetype#3752, dim#3752, i#21763}((Jnn : Jnn <: lanetype), `%`_dim{i#21770}(M))] -[visit_exp lanetype#3752] -[visit_id lanetype#3752] -[visit_exp dim#3752] -[visit_id dim#3752] -[visit_exp i#21763] -[visit_id i#21763] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#21770}(M))] + 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) +[check_dims] Jnn M v_1 v_2 +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] -[visit_exp `%`_dim{i#21770}(M)] -[visit_exp i#21770] -[visit_id i#21770] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -42897,21 +36741,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $ivbinopsx_(`%X%`_shape{lanetype#3788, dim#3788, i#21884}((Jnn : Jnn <: lanetype), `%`_dim{i#21891}(M)), def $iavgr_, `U`_sx, v_1, v_2)] -[visit_exp `%X%`_shape{lanetype#3788, dim#3788, i#21884}((Jnn : Jnn <: lanetype), `%`_dim{i#21891}(M))] -[visit_exp lanetype#3788] -[visit_id lanetype#3788] -[visit_exp dim#3788] -[visit_id dim#3788] -[visit_exp i#21884] -[visit_id i#21884] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#21891}(M))] +[visit_exp $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, `U`_sx, v_1, v_2)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#21891}(M)] -[visit_exp i#21891] -[visit_id i#21891] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -42923,22 +36759,14 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_2] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{lanetype#3752 : lanetype, dim#3752 : dim, i#21763 : nat, Jnn : Jnn, i#21770 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#3788 : lanetype, dim#3788 : dim, i#21884 : nat, i#21891 : nat}(`%X%`_shape{lanetype#3752, dim#3752, i#21763}((Jnn : Jnn <: lanetype), `%`_dim{i#21770}(M)), `AVGRU`_vbinop_, v_1, v_2) = $ivbinopsx_(`%X%`_shape{lanetype#3788, dim#3788, i#21884}((Jnn : Jnn <: lanetype), `%`_dim{i#21891}(M)), def $iavgr_, `U`_sx, v_1, v_2) -[check_dims] Jnn M dim#3800 dim#3836 i#21916 i#21923 i#22037 i#22044 lanetype#3800 lanetype#3836 v_1 v_2 -[visit_exp `%X%`_shape{lanetype#3800, dim#3800, i#21916}((Jnn : Jnn <: lanetype), `%`_dim{i#21923}(M))] -[visit_exp lanetype#3800] -[visit_id lanetype#3800] -[visit_exp dim#3800] -[visit_id dim#3800] -[visit_exp i#21916] -[visit_id i#21916] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#21923}(M))] + 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) +[check_dims] Jnn M v_1 v_2 +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] -[visit_exp `%`_dim{i#21923}(M)] -[visit_exp i#21923] -[visit_id i#21923] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -42948,21 +36776,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $ivbinopsx_(`%X%`_shape{lanetype#3836, dim#3836, i#22037}((Jnn : Jnn <: lanetype), `%`_dim{i#22044}(M)), def $iq15mulr_sat_, `S`_sx, v_1, v_2)] -[visit_exp `%X%`_shape{lanetype#3836, dim#3836, i#22037}((Jnn : Jnn <: lanetype), `%`_dim{i#22044}(M))] -[visit_exp lanetype#3836] -[visit_id lanetype#3836] -[visit_exp dim#3836] -[visit_id dim#3836] -[visit_exp i#22037] -[visit_id i#22037] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#22044}(M))] +[visit_exp $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, `S`_sx, v_1, v_2)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#22044}(M)] -[visit_exp i#22044] -[visit_id i#22044] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -42974,22 +36794,14 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_2] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{lanetype#3800 : lanetype, dim#3800 : dim, i#21916 : nat, Jnn : Jnn, i#21923 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#3836 : lanetype, dim#3836 : dim, i#22037 : nat, i#22044 : nat}(`%X%`_shape{lanetype#3800, dim#3800, i#21916}((Jnn : Jnn <: lanetype), `%`_dim{i#21923}(M)), `Q15MULR_SATS`_vbinop_, v_1, v_2) = $ivbinopsx_(`%X%`_shape{lanetype#3836, dim#3836, i#22037}((Jnn : Jnn <: lanetype), `%`_dim{i#22044}(M)), def $iq15mulr_sat_, `S`_sx, v_1, v_2) -[check_dims] Jnn M dim#3848 dim#3884 i#22069 i#22076 i#22190 i#22197 lanetype#3848 lanetype#3884 v_1 v_2 -[visit_exp `%X%`_shape{lanetype#3848, dim#3848, i#22069}((Jnn : Jnn <: lanetype), `%`_dim{i#22076}(M))] -[visit_exp lanetype#3848] -[visit_id lanetype#3848] -[visit_exp dim#3848] -[visit_id dim#3848] -[visit_exp i#22069] -[visit_id i#22069] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#22076}(M))] + 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) +[check_dims] Jnn M v_1 v_2 +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] -[visit_exp `%`_dim{i#22076}(M)] -[visit_exp i#22076] -[visit_id i#22076] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -42999,21 +36811,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $ivbinopsxnd_(`%X%`_shape{lanetype#3884, dim#3884, i#22190}((Jnn : Jnn <: lanetype), `%`_dim{i#22197}(M)), def $irelaxed_q15mulr_, `S`_sx, v_1, v_2)] -[visit_exp `%X%`_shape{lanetype#3884, dim#3884, i#22190}((Jnn : Jnn <: lanetype), `%`_dim{i#22197}(M))] -[visit_exp lanetype#3884] -[visit_id lanetype#3884] -[visit_exp dim#3884] -[visit_id dim#3884] -[visit_exp i#22190] -[visit_id i#22190] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#22197}(M))] +[visit_exp $ivbinopsxnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, `S`_sx, v_1, v_2)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#22197}(M)] -[visit_exp i#22197] -[visit_id i#22197] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -43025,22 +36829,14 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_2] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{lanetype#3848 : lanetype, dim#3848 : dim, i#22069 : nat, Jnn : Jnn, i#22076 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#3884 : lanetype, dim#3884 : dim, i#22190 : nat, i#22197 : nat}(`%X%`_shape{lanetype#3848, dim#3848, i#22069}((Jnn : Jnn <: lanetype), `%`_dim{i#22076}(M)), `RELAXED_Q15MULRS`_vbinop_, v_1, v_2) = $ivbinopsxnd_(`%X%`_shape{lanetype#3884, dim#3884, i#22190}((Jnn : Jnn <: lanetype), `%`_dim{i#22197}(M)), def $irelaxed_q15mulr_, `S`_sx, v_1, v_2) -[check_dims] Fnn M dim#3896 dim#3945 i#22222 i#22229 i#22356 i#22363 lanetype#3896 lanetype#3945 v_1 v_2 -[visit_exp `%X%`_shape{lanetype#3896, dim#3896, i#22222}((Fnn : Fnn <: lanetype), `%`_dim{i#22229}(M))] -[visit_exp lanetype#3896] -[visit_id lanetype#3896] -[visit_exp dim#3896] -[visit_id dim#3896] -[visit_exp i#22222] -[visit_id i#22222] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#22229}(M))] + 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) +[check_dims] Fnn M v_1 v_2 +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] -[visit_exp `%`_dim{i#22229}(M)] -[visit_exp i#22229] -[visit_id i#22229] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -43050,21 +36846,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $fvbinop_(`%X%`_shape{lanetype#3945, dim#3945, i#22356}((Fnn : Fnn <: lanetype), `%`_dim{i#22363}(M)), def $fadd_, v_1, v_2)] -[visit_exp `%X%`_shape{lanetype#3945, dim#3945, i#22356}((Fnn : Fnn <: lanetype), `%`_dim{i#22363}(M))] -[visit_exp lanetype#3945] -[visit_id lanetype#3945] -[visit_exp dim#3945] -[visit_id dim#3945] -[visit_exp i#22356] -[visit_id i#22356] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#22363}(M))] +[visit_exp $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fadd_, v_1, v_2)] +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] not free -[visit_exp `%`_dim{i#22363}(M)] -[visit_exp i#22363] -[visit_id i#22363] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -43074,22 +36862,14 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_2] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{lanetype#3896 : lanetype, dim#3896 : dim, i#22222 : nat, Fnn : Fnn, i#22229 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#3945 : lanetype, dim#3945 : dim, i#22356 : nat, i#22363 : nat}(`%X%`_shape{lanetype#3896, dim#3896, i#22222}((Fnn : Fnn <: lanetype), `%`_dim{i#22229}(M)), `ADD`_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape{lanetype#3945, dim#3945, i#22356}((Fnn : Fnn <: lanetype), `%`_dim{i#22363}(M)), def $fadd_, v_1, v_2) -[check_dims] Fnn M dim#3957 dim#4006 i#22388 i#22395 i#22522 i#22529 lanetype#3957 lanetype#4006 v_1 v_2 -[visit_exp `%X%`_shape{lanetype#3957, dim#3957, i#22388}((Fnn : Fnn <: lanetype), `%`_dim{i#22395}(M))] -[visit_exp lanetype#3957] -[visit_id lanetype#3957] -[visit_exp dim#3957] -[visit_id dim#3957] -[visit_exp i#22388] -[visit_id i#22388] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#22395}(M))] + 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) +[check_dims] Fnn M v_1 v_2 +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] -[visit_exp `%`_dim{i#22395}(M)] -[visit_exp i#22395] -[visit_id i#22395] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -43099,21 +36879,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $fvbinop_(`%X%`_shape{lanetype#4006, dim#4006, i#22522}((Fnn : Fnn <: lanetype), `%`_dim{i#22529}(M)), def $fsub_, v_1, v_2)] -[visit_exp `%X%`_shape{lanetype#4006, dim#4006, i#22522}((Fnn : Fnn <: lanetype), `%`_dim{i#22529}(M))] -[visit_exp lanetype#4006] -[visit_id lanetype#4006] -[visit_exp dim#4006] -[visit_id dim#4006] -[visit_exp i#22522] -[visit_id i#22522] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#22529}(M))] +[visit_exp $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsub_, v_1, v_2)] +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] not free -[visit_exp `%`_dim{i#22529}(M)] -[visit_exp i#22529] -[visit_id i#22529] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -43123,22 +36895,14 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_2] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{lanetype#3957 : lanetype, dim#3957 : dim, i#22388 : nat, Fnn : Fnn, i#22395 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4006 : lanetype, dim#4006 : dim, i#22522 : nat, i#22529 : nat}(`%X%`_shape{lanetype#3957, dim#3957, i#22388}((Fnn : Fnn <: lanetype), `%`_dim{i#22395}(M)), `SUB`_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape{lanetype#4006, dim#4006, i#22522}((Fnn : Fnn <: lanetype), `%`_dim{i#22529}(M)), def $fsub_, v_1, v_2) -[check_dims] Fnn M dim#4018 dim#4067 i#22554 i#22561 i#22688 i#22695 lanetype#4018 lanetype#4067 v_1 v_2 -[visit_exp `%X%`_shape{lanetype#4018, dim#4018, i#22554}((Fnn : Fnn <: lanetype), `%`_dim{i#22561}(M))] -[visit_exp lanetype#4018] -[visit_id lanetype#4018] -[visit_exp dim#4018] -[visit_id dim#4018] -[visit_exp i#22554] -[visit_id i#22554] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#22561}(M))] + 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) +[check_dims] Fnn M v_1 v_2 +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] -[visit_exp `%`_dim{i#22561}(M)] -[visit_exp i#22561] -[visit_id i#22561] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -43148,21 +36912,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $fvbinop_(`%X%`_shape{lanetype#4067, dim#4067, i#22688}((Fnn : Fnn <: lanetype), `%`_dim{i#22695}(M)), def $fmul_, v_1, v_2)] -[visit_exp `%X%`_shape{lanetype#4067, dim#4067, i#22688}((Fnn : Fnn <: lanetype), `%`_dim{i#22695}(M))] -[visit_exp lanetype#4067] -[visit_id lanetype#4067] -[visit_exp dim#4067] -[visit_id dim#4067] -[visit_exp i#22688] -[visit_id i#22688] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#22695}(M))] +[visit_exp $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmul_, v_1, v_2)] +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] not free -[visit_exp `%`_dim{i#22695}(M)] -[visit_exp i#22695] -[visit_id i#22695] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -43172,22 +36928,14 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_2] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{lanetype#4018 : lanetype, dim#4018 : dim, i#22554 : nat, Fnn : Fnn, i#22561 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4067 : lanetype, dim#4067 : dim, i#22688 : nat, i#22695 : nat}(`%X%`_shape{lanetype#4018, dim#4018, i#22554}((Fnn : Fnn <: lanetype), `%`_dim{i#22561}(M)), `MUL`_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape{lanetype#4067, dim#4067, i#22688}((Fnn : Fnn <: lanetype), `%`_dim{i#22695}(M)), def $fmul_, v_1, v_2) -[check_dims] Fnn M dim#4079 dim#4128 i#22720 i#22727 i#22854 i#22861 lanetype#4079 lanetype#4128 v_1 v_2 -[visit_exp `%X%`_shape{lanetype#4079, dim#4079, i#22720}((Fnn : Fnn <: lanetype), `%`_dim{i#22727}(M))] -[visit_exp lanetype#4079] -[visit_id lanetype#4079] -[visit_exp dim#4079] -[visit_id dim#4079] -[visit_exp i#22720] -[visit_id i#22720] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#22727}(M))] + 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) +[check_dims] Fnn M v_1 v_2 +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] -[visit_exp `%`_dim{i#22727}(M)] -[visit_exp i#22727] -[visit_id i#22727] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -43197,21 +36945,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $fvbinop_(`%X%`_shape{lanetype#4128, dim#4128, i#22854}((Fnn : Fnn <: lanetype), `%`_dim{i#22861}(M)), def $fdiv_, v_1, v_2)] -[visit_exp `%X%`_shape{lanetype#4128, dim#4128, i#22854}((Fnn : Fnn <: lanetype), `%`_dim{i#22861}(M))] -[visit_exp lanetype#4128] -[visit_id lanetype#4128] -[visit_exp dim#4128] -[visit_id dim#4128] -[visit_exp i#22854] -[visit_id i#22854] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#22861}(M))] +[visit_exp $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fdiv_, v_1, v_2)] +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] not free -[visit_exp `%`_dim{i#22861}(M)] -[visit_exp i#22861] -[visit_id i#22861] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -43221,22 +36961,14 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_2] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{lanetype#4079 : lanetype, dim#4079 : dim, i#22720 : nat, Fnn : Fnn, i#22727 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4128 : lanetype, dim#4128 : dim, i#22854 : nat, i#22861 : nat}(`%X%`_shape{lanetype#4079, dim#4079, i#22720}((Fnn : Fnn <: lanetype), `%`_dim{i#22727}(M)), `DIV`_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape{lanetype#4128, dim#4128, i#22854}((Fnn : Fnn <: lanetype), `%`_dim{i#22861}(M)), def $fdiv_, v_1, v_2) -[check_dims] Fnn M dim#4140 dim#4189 i#22886 i#22893 i#23020 i#23027 lanetype#4140 lanetype#4189 v_1 v_2 -[visit_exp `%X%`_shape{lanetype#4140, dim#4140, i#22886}((Fnn : Fnn <: lanetype), `%`_dim{i#22893}(M))] -[visit_exp lanetype#4140] -[visit_id lanetype#4140] -[visit_exp dim#4140] -[visit_id dim#4140] -[visit_exp i#22886] -[visit_id i#22886] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#22893}(M))] + 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) +[check_dims] Fnn M v_1 v_2 +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] -[visit_exp `%`_dim{i#22893}(M)] -[visit_exp i#22893] -[visit_id i#22893] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -43246,21 +36978,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $fvbinop_(`%X%`_shape{lanetype#4189, dim#4189, i#23020}((Fnn : Fnn <: lanetype), `%`_dim{i#23027}(M)), def $fmin_, v_1, v_2)] -[visit_exp `%X%`_shape{lanetype#4189, dim#4189, i#23020}((Fnn : Fnn <: lanetype), `%`_dim{i#23027}(M))] -[visit_exp lanetype#4189] -[visit_id lanetype#4189] -[visit_exp dim#4189] -[visit_id dim#4189] -[visit_exp i#23020] -[visit_id i#23020] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#23027}(M))] +[visit_exp $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmin_, v_1, v_2)] +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] not free -[visit_exp `%`_dim{i#23027}(M)] -[visit_exp i#23027] -[visit_id i#23027] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -43270,22 +36994,14 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_2] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{lanetype#4140 : lanetype, dim#4140 : dim, i#22886 : nat, Fnn : Fnn, i#22893 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4189 : lanetype, dim#4189 : dim, i#23020 : nat, i#23027 : nat}(`%X%`_shape{lanetype#4140, dim#4140, i#22886}((Fnn : Fnn <: lanetype), `%`_dim{i#22893}(M)), `MIN`_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape{lanetype#4189, dim#4189, i#23020}((Fnn : Fnn <: lanetype), `%`_dim{i#23027}(M)), def $fmin_, v_1, v_2) -[check_dims] Fnn M dim#4201 dim#4250 i#23052 i#23059 i#23186 i#23193 lanetype#4201 lanetype#4250 v_1 v_2 -[visit_exp `%X%`_shape{lanetype#4201, dim#4201, i#23052}((Fnn : Fnn <: lanetype), `%`_dim{i#23059}(M))] -[visit_exp lanetype#4201] -[visit_id lanetype#4201] -[visit_exp dim#4201] -[visit_id dim#4201] -[visit_exp i#23052] -[visit_id i#23052] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#23059}(M))] + 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) +[check_dims] Fnn M v_1 v_2 +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] -[visit_exp `%`_dim{i#23059}(M)] -[visit_exp i#23059] -[visit_id i#23059] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -43295,21 +37011,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $fvbinop_(`%X%`_shape{lanetype#4250, dim#4250, i#23186}((Fnn : Fnn <: lanetype), `%`_dim{i#23193}(M)), def $fmax_, v_1, v_2)] -[visit_exp `%X%`_shape{lanetype#4250, dim#4250, i#23186}((Fnn : Fnn <: lanetype), `%`_dim{i#23193}(M))] -[visit_exp lanetype#4250] -[visit_id lanetype#4250] -[visit_exp dim#4250] -[visit_id dim#4250] -[visit_exp i#23186] -[visit_id i#23186] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#23193}(M))] +[visit_exp $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmax_, v_1, v_2)] +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] not free -[visit_exp `%`_dim{i#23193}(M)] -[visit_exp i#23193] -[visit_id i#23193] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -43319,22 +37027,14 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_2] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{lanetype#4201 : lanetype, dim#4201 : dim, i#23052 : nat, Fnn : Fnn, i#23059 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4250 : lanetype, dim#4250 : dim, i#23186 : nat, i#23193 : nat}(`%X%`_shape{lanetype#4201, dim#4201, i#23052}((Fnn : Fnn <: lanetype), `%`_dim{i#23059}(M)), `MAX`_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape{lanetype#4250, dim#4250, i#23186}((Fnn : Fnn <: lanetype), `%`_dim{i#23193}(M)), def $fmax_, v_1, v_2) -[check_dims] Fnn M dim#4262 dim#4311 i#23218 i#23225 i#23352 i#23359 lanetype#4262 lanetype#4311 v_1 v_2 -[visit_exp `%X%`_shape{lanetype#4262, dim#4262, i#23218}((Fnn : Fnn <: lanetype), `%`_dim{i#23225}(M))] -[visit_exp lanetype#4262] -[visit_id lanetype#4262] -[visit_exp dim#4262] -[visit_id dim#4262] -[visit_exp i#23218] -[visit_id i#23218] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#23225}(M))] + 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) +[check_dims] Fnn M v_1 v_2 +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] -[visit_exp `%`_dim{i#23225}(M)] -[visit_exp i#23225] -[visit_id i#23225] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -43344,21 +37044,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $fvbinop_(`%X%`_shape{lanetype#4311, dim#4311, i#23352}((Fnn : Fnn <: lanetype), `%`_dim{i#23359}(M)), def $fpmin_, v_1, v_2)] -[visit_exp `%X%`_shape{lanetype#4311, dim#4311, i#23352}((Fnn : Fnn <: lanetype), `%`_dim{i#23359}(M))] -[visit_exp lanetype#4311] -[visit_id lanetype#4311] -[visit_exp dim#4311] -[visit_id dim#4311] -[visit_exp i#23352] -[visit_id i#23352] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#23359}(M))] +[visit_exp $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmin_, v_1, v_2)] +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] not free -[visit_exp `%`_dim{i#23359}(M)] -[visit_exp i#23359] -[visit_id i#23359] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -43368,22 +37060,14 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_2] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{lanetype#4262 : lanetype, dim#4262 : dim, i#23218 : nat, Fnn : Fnn, i#23225 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4311 : lanetype, dim#4311 : dim, i#23352 : nat, i#23359 : nat}(`%X%`_shape{lanetype#4262, dim#4262, i#23218}((Fnn : Fnn <: lanetype), `%`_dim{i#23225}(M)), `PMIN`_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape{lanetype#4311, dim#4311, i#23352}((Fnn : Fnn <: lanetype), `%`_dim{i#23359}(M)), def $fpmin_, v_1, v_2) -[check_dims] Fnn M dim#4323 dim#4372 i#23384 i#23391 i#23518 i#23525 lanetype#4323 lanetype#4372 v_1 v_2 -[visit_exp `%X%`_shape{lanetype#4323, dim#4323, i#23384}((Fnn : Fnn <: lanetype), `%`_dim{i#23391}(M))] -[visit_exp lanetype#4323] -[visit_id lanetype#4323] -[visit_exp dim#4323] -[visit_id dim#4323] -[visit_exp i#23384] -[visit_id i#23384] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#23391}(M))] + 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) +[check_dims] Fnn M v_1 v_2 +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] -[visit_exp `%`_dim{i#23391}(M)] -[visit_exp i#23391] -[visit_id i#23391] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -43393,21 +37077,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $fvbinop_(`%X%`_shape{lanetype#4372, dim#4372, i#23518}((Fnn : Fnn <: lanetype), `%`_dim{i#23525}(M)), def $fpmax_, v_1, v_2)] -[visit_exp `%X%`_shape{lanetype#4372, dim#4372, i#23518}((Fnn : Fnn <: lanetype), `%`_dim{i#23525}(M))] -[visit_exp lanetype#4372] -[visit_id lanetype#4372] -[visit_exp dim#4372] -[visit_id dim#4372] -[visit_exp i#23518] -[visit_id i#23518] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#23525}(M))] +[visit_exp $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmax_, v_1, v_2)] +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] not free -[visit_exp `%`_dim{i#23525}(M)] -[visit_exp i#23525] -[visit_id i#23525] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -43417,22 +37093,14 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_2] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{lanetype#4323 : lanetype, dim#4323 : dim, i#23384 : nat, Fnn : Fnn, i#23391 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4372 : lanetype, dim#4372 : dim, i#23518 : nat, i#23525 : nat}(`%X%`_shape{lanetype#4323, dim#4323, i#23384}((Fnn : Fnn <: lanetype), `%`_dim{i#23391}(M)), `PMAX`_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape{lanetype#4372, dim#4372, i#23518}((Fnn : Fnn <: lanetype), `%`_dim{i#23525}(M)), def $fpmax_, v_1, v_2) -[check_dims] Fnn M dim#4384 dim#4433 i#23550 i#23557 i#23684 i#23691 lanetype#4384 lanetype#4433 v_1 v_2 -[visit_exp `%X%`_shape{lanetype#4384, dim#4384, i#23550}((Fnn : Fnn <: lanetype), `%`_dim{i#23557}(M))] -[visit_exp lanetype#4384] -[visit_id lanetype#4384] -[visit_exp dim#4384] -[visit_id dim#4384] -[visit_exp i#23550] -[visit_id i#23550] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#23557}(M))] + 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) +[check_dims] Fnn M v_1 v_2 +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] -[visit_exp `%`_dim{i#23557}(M)] -[visit_exp i#23557] -[visit_id i#23557] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -43442,21 +37110,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $fvbinop_(`%X%`_shape{lanetype#4433, dim#4433, i#23684}((Fnn : Fnn <: lanetype), `%`_dim{i#23691}(M)), def $frelaxed_min_, v_1, v_2)] -[visit_exp `%X%`_shape{lanetype#4433, dim#4433, i#23684}((Fnn : Fnn <: lanetype), `%`_dim{i#23691}(M))] -[visit_exp lanetype#4433] -[visit_id lanetype#4433] -[visit_exp dim#4433] -[visit_id dim#4433] -[visit_exp i#23684] -[visit_id i#23684] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#23691}(M))] +[visit_exp $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_min_, v_1, v_2)] +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] not free -[visit_exp `%`_dim{i#23691}(M)] -[visit_exp i#23691] -[visit_id i#23691] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -43466,22 +37126,14 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_2] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{lanetype#4384 : lanetype, dim#4384 : dim, i#23550 : nat, Fnn : Fnn, i#23557 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4433 : lanetype, dim#4433 : dim, i#23684 : nat, i#23691 : nat}(`%X%`_shape{lanetype#4384, dim#4384, i#23550}((Fnn : Fnn <: lanetype), `%`_dim{i#23557}(M)), `RELAXED_MIN`_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape{lanetype#4433, dim#4433, i#23684}((Fnn : Fnn <: lanetype), `%`_dim{i#23691}(M)), def $frelaxed_min_, v_1, v_2) -[check_dims] Fnn M dim#4445 dim#4494 i#23716 i#23723 i#23850 i#23857 lanetype#4445 lanetype#4494 v_1 v_2 -[visit_exp `%X%`_shape{lanetype#4445, dim#4445, i#23716}((Fnn : Fnn <: lanetype), `%`_dim{i#23723}(M))] -[visit_exp lanetype#4445] -[visit_id lanetype#4445] -[visit_exp dim#4445] -[visit_id dim#4445] -[visit_exp i#23716] -[visit_id i#23716] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#23723}(M))] + 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) +[check_dims] Fnn M v_1 v_2 +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] -[visit_exp `%`_dim{i#23723}(M)] -[visit_exp i#23723] -[visit_id i#23723] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -43491,21 +37143,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $fvbinop_(`%X%`_shape{lanetype#4494, dim#4494, i#23850}((Fnn : Fnn <: lanetype), `%`_dim{i#23857}(M)), def $frelaxed_max_, v_1, v_2)] -[visit_exp `%X%`_shape{lanetype#4494, dim#4494, i#23850}((Fnn : Fnn <: lanetype), `%`_dim{i#23857}(M))] -[visit_exp lanetype#4494] -[visit_id lanetype#4494] -[visit_exp dim#4494] -[visit_id dim#4494] -[visit_exp i#23850] -[visit_id i#23850] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#23857}(M))] +[visit_exp $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_max_, v_1, v_2)] +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] not free -[visit_exp `%`_dim{i#23857}(M)] -[visit_exp i#23857] -[visit_id i#23857] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -43515,22 +37159,14 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_2] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{lanetype#4445 : lanetype, dim#4445 : dim, i#23716 : nat, Fnn : Fnn, i#23723 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4494 : lanetype, dim#4494 : dim, i#23850 : nat, i#23857 : nat}(`%X%`_shape{lanetype#4445, dim#4445, i#23716}((Fnn : Fnn <: lanetype), `%`_dim{i#23723}(M)), `RELAXED_MAX`_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape{lanetype#4494, dim#4494, i#23850}((Fnn : Fnn <: lanetype), `%`_dim{i#23857}(M)), def $frelaxed_max_, v_1, v_2) -[check_dims] Jnn M dim#4506 dim#4542 i#23882 i#23889 i#24035 i#24042 lanetype#4506 lanetype#4542 v_1 v_2 v_3 -[visit_exp `%X%`_shape{lanetype#4506, dim#4506, i#23882}((Jnn : Jnn <: lanetype), `%`_dim{i#23889}(M))] -[visit_exp lanetype#4506] -[visit_id lanetype#4506] -[visit_exp dim#4506] -[visit_id dim#4506] -[visit_exp i#23882] -[visit_id i#23882] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#23889}(M))] + 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) +[check_dims] Jnn M v_1 v_2 v_3 +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] -[visit_exp `%`_dim{i#23889}(M)] -[visit_exp i#23889] -[visit_id i#23889] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -43542,21 +37178,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_2] [visit_exp v_3] [visit_id v_3] -[visit_exp $ivternopnd_(`%X%`_shape{lanetype#4542, dim#4542, i#24035}((Jnn : Jnn <: lanetype), `%`_dim{i#24042}(M)), def $irelaxed_laneselect_, v_1, v_2, v_3)] -[visit_exp `%X%`_shape{lanetype#4542, dim#4542, i#24035}((Jnn : Jnn <: lanetype), `%`_dim{i#24042}(M))] -[visit_exp lanetype#4542] -[visit_id lanetype#4542] -[visit_exp dim#4542] -[visit_id dim#4542] -[visit_exp i#24035] -[visit_id i#24035] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#24042}(M))] +[visit_exp $ivternopnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#24042}(M)] -[visit_exp i#24042] -[visit_id i#24042] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -43568,22 +37196,14 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_3] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vternop_{lanetype#4506 : lanetype, dim#4506 : dim, i#23882 : nat, Jnn : Jnn, i#23889 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), v_3 : vec_(`V128`_Vnn), lanetype#4542 : lanetype, dim#4542 : dim, i#24035 : nat, i#24042 : nat}(`%X%`_shape{lanetype#4506, dim#4506, i#23882}((Jnn : Jnn <: lanetype), `%`_dim{i#23889}(M)), `RELAXED_LANESELECT`_vternop_, v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape{lanetype#4542, dim#4542, i#24035}((Jnn : Jnn <: lanetype), `%`_dim{i#24042}(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) -[check_dims] Fnn M dim#4554 dim#4603 i#24077 i#24084 i#24243 i#24250 lanetype#4554 lanetype#4603 v_1 v_2 v_3 -[visit_exp `%X%`_shape{lanetype#4554, dim#4554, i#24077}((Fnn : Fnn <: lanetype), `%`_dim{i#24084}(M))] -[visit_exp lanetype#4554] -[visit_id lanetype#4554] -[visit_exp dim#4554] -[visit_id dim#4554] -[visit_exp i#24077] -[visit_id i#24077] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#24084}(M))] + 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) +[check_dims] Fnn M v_1 v_2 v_3 +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] -[visit_exp `%`_dim{i#24084}(M)] -[visit_exp i#24084] -[visit_id i#24084] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -43595,21 +37215,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_2] [visit_exp v_3] [visit_id v_3] -[visit_exp $fvternop_(`%X%`_shape{lanetype#4603, dim#4603, i#24243}((Fnn : Fnn <: lanetype), `%`_dim{i#24250}(M)), def $frelaxed_madd_, v_1, v_2, v_3)] -[visit_exp `%X%`_shape{lanetype#4603, dim#4603, i#24243}((Fnn : Fnn <: lanetype), `%`_dim{i#24250}(M))] -[visit_exp lanetype#4603] -[visit_id lanetype#4603] -[visit_exp dim#4603] -[visit_id dim#4603] -[visit_exp i#24243] -[visit_id i#24243] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#24250}(M))] +[visit_exp $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3)] +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] not free -[visit_exp `%`_dim{i#24250}(M)] -[visit_exp i#24250] -[visit_id i#24250] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -43621,22 +37233,14 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_3] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vternop_{lanetype#4554 : lanetype, dim#4554 : dim, i#24077 : nat, Fnn : Fnn, i#24084 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), v_3 : vec_(`V128`_Vnn), lanetype#4603 : lanetype, dim#4603 : dim, i#24243 : nat, i#24250 : nat}(`%X%`_shape{lanetype#4554, dim#4554, i#24077}((Fnn : Fnn <: lanetype), `%`_dim{i#24084}(M)), `RELAXED_MADD`_vternop_, v_1, v_2, v_3) = $fvternop_(`%X%`_shape{lanetype#4603, dim#4603, i#24243}((Fnn : Fnn <: lanetype), `%`_dim{i#24250}(M)), def $frelaxed_madd_, v_1, v_2, v_3) -[check_dims] Fnn M dim#4615 dim#4664 i#24285 i#24292 i#24451 i#24458 lanetype#4615 lanetype#4664 v_1 v_2 v_3 -[visit_exp `%X%`_shape{lanetype#4615, dim#4615, i#24285}((Fnn : Fnn <: lanetype), `%`_dim{i#24292}(M))] -[visit_exp lanetype#4615] -[visit_id lanetype#4615] -[visit_exp dim#4615] -[visit_id dim#4615] -[visit_exp i#24285] -[visit_id i#24285] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#24292}(M))] + 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) +[check_dims] Fnn M v_1 v_2 v_3 +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] -[visit_exp `%`_dim{i#24292}(M)] -[visit_exp i#24292] -[visit_id i#24292] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -43648,21 +37252,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_2] [visit_exp v_3] [visit_id v_3] -[visit_exp $fvternop_(`%X%`_shape{lanetype#4664, dim#4664, i#24451}((Fnn : Fnn <: lanetype), `%`_dim{i#24458}(M)), def $frelaxed_nmadd_, v_1, v_2, v_3)] -[visit_exp `%X%`_shape{lanetype#4664, dim#4664, i#24451}((Fnn : Fnn <: lanetype), `%`_dim{i#24458}(M))] -[visit_exp lanetype#4664] -[visit_id lanetype#4664] -[visit_exp dim#4664] -[visit_id dim#4664] -[visit_exp i#24451] -[visit_id i#24451] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#24458}(M))] +[visit_exp $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3)] +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] not free -[visit_exp `%`_dim{i#24458}(M)] -[visit_exp i#24458] -[visit_id i#24458] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -43674,22 +37270,14 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_3] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vternop_{lanetype#4615 : lanetype, dim#4615 : dim, i#24285 : nat, Fnn : Fnn, i#24292 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), v_3 : vec_(`V128`_Vnn), lanetype#4664 : lanetype, dim#4664 : dim, i#24451 : nat, i#24458 : nat}(`%X%`_shape{lanetype#4615, dim#4615, i#24285}((Fnn : Fnn <: lanetype), `%`_dim{i#24292}(M)), `RELAXED_NMADD`_vternop_, v_1, v_2, v_3) = $fvternop_(`%X%`_shape{lanetype#4664, dim#4664, i#24451}((Fnn : Fnn <: lanetype), `%`_dim{i#24458}(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) -[check_dims] Jnn M dim#4676 dim#4688 i#24493 i#24500 i#24539 i#24546 lanetype#4676 lanetype#4688 v_1 v_2 -[visit_exp `%X%`_shape{lanetype#4676, dim#4676, i#24493}((Jnn : Jnn <: lanetype), `%`_dim{i#24500}(M))] -[visit_exp lanetype#4676] -[visit_id lanetype#4676] -[visit_exp dim#4676] -[visit_id dim#4676] -[visit_exp i#24493] -[visit_id i#24493] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#24500}(M))] + 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) +[check_dims] Jnn M v_1 v_2 +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] -[visit_exp `%`_dim{i#24500}(M)] -[visit_exp i#24500] -[visit_id i#24500] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -43699,21 +37287,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $ivrelop_(`%X%`_shape{lanetype#4688, dim#4688, i#24539}((Jnn : Jnn <: lanetype), `%`_dim{i#24546}(M)), def $ieq_, v_1, v_2)] -[visit_exp `%X%`_shape{lanetype#4688, dim#4688, i#24539}((Jnn : Jnn <: lanetype), `%`_dim{i#24546}(M))] -[visit_exp lanetype#4688] -[visit_id lanetype#4688] -[visit_exp dim#4688] -[visit_id dim#4688] -[visit_exp i#24539] -[visit_id i#24539] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#24546}(M))] +[visit_exp $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#24546}(M)] -[visit_exp i#24546] -[visit_id i#24546] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -43723,22 +37303,14 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_2] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{lanetype#4676 : lanetype, dim#4676 : dim, i#24493 : nat, Jnn : Jnn, i#24500 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4688 : lanetype, dim#4688 : dim, i#24539 : nat, i#24546 : nat}(`%X%`_shape{lanetype#4676, dim#4676, i#24493}((Jnn : Jnn <: lanetype), `%`_dim{i#24500}(M)), `EQ`_vrelop_, v_1, v_2) = $ivrelop_(`%X%`_shape{lanetype#4688, dim#4688, i#24539}((Jnn : Jnn <: lanetype), `%`_dim{i#24546}(M)), def $ieq_, v_1, v_2) -[check_dims] Jnn M dim#4700 dim#4712 i#24571 i#24578 i#24617 i#24624 lanetype#4700 lanetype#4712 v_1 v_2 -[visit_exp `%X%`_shape{lanetype#4700, dim#4700, i#24571}((Jnn : Jnn <: lanetype), `%`_dim{i#24578}(M))] -[visit_exp lanetype#4700] -[visit_id lanetype#4700] -[visit_exp dim#4700] -[visit_id dim#4700] -[visit_exp i#24571] -[visit_id i#24571] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#24578}(M))] + 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) +[check_dims] Jnn M v_1 v_2 +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] -[visit_exp `%`_dim{i#24578}(M)] -[visit_exp i#24578] -[visit_id i#24578] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -43748,21 +37320,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $ivrelop_(`%X%`_shape{lanetype#4712, dim#4712, i#24617}((Jnn : Jnn <: lanetype), `%`_dim{i#24624}(M)), def $ine_, v_1, v_2)] -[visit_exp `%X%`_shape{lanetype#4712, dim#4712, i#24617}((Jnn : Jnn <: lanetype), `%`_dim{i#24624}(M))] -[visit_exp lanetype#4712] -[visit_id lanetype#4712] -[visit_exp dim#4712] -[visit_id dim#4712] -[visit_exp i#24617] -[visit_id i#24617] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#24624}(M))] +[visit_exp $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#24624}(M)] -[visit_exp i#24624] -[visit_id i#24624] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -43772,28 +37336,18 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_2] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{lanetype#4700 : lanetype, dim#4700 : dim, i#24571 : nat, Jnn : Jnn, i#24578 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4712 : lanetype, dim#4712 : dim, i#24617 : nat, i#24624 : nat}(`%X%`_shape{lanetype#4700, dim#4700, i#24571}((Jnn : Jnn <: lanetype), `%`_dim{i#24578}(M)), `NE`_vrelop_, v_1, v_2) = $ivrelop_(`%X%`_shape{lanetype#4712, dim#4712, i#24617}((Jnn : Jnn <: lanetype), `%`_dim{i#24624}(M)), def $ine_, v_1, v_2) -[check_dims] Jnn M dim#4724 dim#4736 i#24649 i#24656 i#24695 i#24702 lanetype#4724 lanetype#4736 sx sx#104 v_1 v_2 -[visit_exp `%X%`_shape{lanetype#4724, dim#4724, i#24649}((Jnn : Jnn <: lanetype), `%`_dim{i#24656}(M))] -[visit_exp lanetype#4724] -[visit_id lanetype#4724] -[visit_exp dim#4724] -[visit_id dim#4724] -[visit_exp i#24649] -[visit_id i#24649] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#24656}(M))] + 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) +[check_dims] Jnn M sx v_1 v_2 +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] -[visit_exp `%`_dim{i#24656}(M)] -[visit_exp i#24656] -[visit_id i#24656] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] -[visit_exp `LT`_vrelop_{sx#104}(sx)] -[visit_exp sx#104] -[visit_id sx#104] +[visit_exp `LT`_vrelop_(sx)] [visit_exp (sx)] [visit_exp sx] [visit_id sx] @@ -43801,21 +37355,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $ivrelopsx_(`%X%`_shape{lanetype#4736, dim#4736, i#24695}((Jnn : Jnn <: lanetype), `%`_dim{i#24702}(M)), def $ilt_, sx, v_1, v_2)] -[visit_exp `%X%`_shape{lanetype#4736, dim#4736, i#24695}((Jnn : Jnn <: lanetype), `%`_dim{i#24702}(M))] -[visit_exp lanetype#4736] -[visit_id lanetype#4736] -[visit_exp dim#4736] -[visit_id dim#4736] -[visit_exp i#24695] -[visit_id i#24695] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#24702}(M))] +[visit_exp $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#24702}(M)] -[visit_exp i#24702] -[visit_id i#24702] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -43827,28 +37373,18 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_2] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{lanetype#4724 : lanetype, dim#4724 : dim, i#24649 : nat, Jnn : Jnn, i#24656 : nat, M : M, sx#104 : sx, sx : sx, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4736 : lanetype, dim#4736 : dim, i#24695 : nat, i#24702 : nat}(`%X%`_shape{lanetype#4724, dim#4724, i#24649}((Jnn : Jnn <: lanetype), `%`_dim{i#24656}(M)), `LT`_vrelop_{sx#104}(sx), v_1, v_2) = $ivrelopsx_(`%X%`_shape{lanetype#4736, dim#4736, i#24695}((Jnn : Jnn <: lanetype), `%`_dim{i#24702}(M)), def $ilt_, sx, v_1, v_2) -[check_dims] Jnn M dim#4748 dim#4760 i#24727 i#24734 i#24773 i#24780 lanetype#4748 lanetype#4760 sx sx#106 v_1 v_2 -[visit_exp `%X%`_shape{lanetype#4748, dim#4748, i#24727}((Jnn : Jnn <: lanetype), `%`_dim{i#24734}(M))] -[visit_exp lanetype#4748] -[visit_id lanetype#4748] -[visit_exp dim#4748] -[visit_id dim#4748] -[visit_exp i#24727] -[visit_id i#24727] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#24734}(M))] + 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) +[check_dims] Jnn M sx v_1 v_2 +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] -[visit_exp `%`_dim{i#24734}(M)] -[visit_exp i#24734] -[visit_id i#24734] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] -[visit_exp `GT`_vrelop_{sx#106}(sx)] -[visit_exp sx#106] -[visit_id sx#106] +[visit_exp `GT`_vrelop_(sx)] [visit_exp (sx)] [visit_exp sx] [visit_id sx] @@ -43856,21 +37392,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $ivrelopsx_(`%X%`_shape{lanetype#4760, dim#4760, i#24773}((Jnn : Jnn <: lanetype), `%`_dim{i#24780}(M)), def $igt_, sx, v_1, v_2)] -[visit_exp `%X%`_shape{lanetype#4760, dim#4760, i#24773}((Jnn : Jnn <: lanetype), `%`_dim{i#24780}(M))] -[visit_exp lanetype#4760] -[visit_id lanetype#4760] -[visit_exp dim#4760] -[visit_id dim#4760] -[visit_exp i#24773] -[visit_id i#24773] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#24780}(M))] +[visit_exp $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#24780}(M)] -[visit_exp i#24780] -[visit_id i#24780] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -43882,28 +37410,18 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_2] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{lanetype#4748 : lanetype, dim#4748 : dim, i#24727 : nat, Jnn : Jnn, i#24734 : nat, M : M, sx#106 : sx, sx : sx, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4760 : lanetype, dim#4760 : dim, i#24773 : nat, i#24780 : nat}(`%X%`_shape{lanetype#4748, dim#4748, i#24727}((Jnn : Jnn <: lanetype), `%`_dim{i#24734}(M)), `GT`_vrelop_{sx#106}(sx), v_1, v_2) = $ivrelopsx_(`%X%`_shape{lanetype#4760, dim#4760, i#24773}((Jnn : Jnn <: lanetype), `%`_dim{i#24780}(M)), def $igt_, sx, v_1, v_2) -[check_dims] Jnn M dim#4772 dim#4784 i#24805 i#24812 i#24851 i#24858 lanetype#4772 lanetype#4784 sx sx#108 v_1 v_2 -[visit_exp `%X%`_shape{lanetype#4772, dim#4772, i#24805}((Jnn : Jnn <: lanetype), `%`_dim{i#24812}(M))] -[visit_exp lanetype#4772] -[visit_id lanetype#4772] -[visit_exp dim#4772] -[visit_id dim#4772] -[visit_exp i#24805] -[visit_id i#24805] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#24812}(M))] + 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) +[check_dims] Jnn M sx v_1 v_2 +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] -[visit_exp `%`_dim{i#24812}(M)] -[visit_exp i#24812] -[visit_id i#24812] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] -[visit_exp `LE`_vrelop_{sx#108}(sx)] -[visit_exp sx#108] -[visit_id sx#108] +[visit_exp `LE`_vrelop_(sx)] [visit_exp (sx)] [visit_exp sx] [visit_id sx] @@ -43911,21 +37429,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $ivrelopsx_(`%X%`_shape{lanetype#4784, dim#4784, i#24851}((Jnn : Jnn <: lanetype), `%`_dim{i#24858}(M)), def $ile_, sx, v_1, v_2)] -[visit_exp `%X%`_shape{lanetype#4784, dim#4784, i#24851}((Jnn : Jnn <: lanetype), `%`_dim{i#24858}(M))] -[visit_exp lanetype#4784] -[visit_id lanetype#4784] -[visit_exp dim#4784] -[visit_id dim#4784] -[visit_exp i#24851] -[visit_id i#24851] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#24858}(M))] +[visit_exp $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#24858}(M)] -[visit_exp i#24858] -[visit_id i#24858] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -43937,28 +37447,18 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_2] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{lanetype#4772 : lanetype, dim#4772 : dim, i#24805 : nat, Jnn : Jnn, i#24812 : nat, M : M, sx#108 : sx, sx : sx, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4784 : lanetype, dim#4784 : dim, i#24851 : nat, i#24858 : nat}(`%X%`_shape{lanetype#4772, dim#4772, i#24805}((Jnn : Jnn <: lanetype), `%`_dim{i#24812}(M)), `LE`_vrelop_{sx#108}(sx), v_1, v_2) = $ivrelopsx_(`%X%`_shape{lanetype#4784, dim#4784, i#24851}((Jnn : Jnn <: lanetype), `%`_dim{i#24858}(M)), def $ile_, sx, v_1, v_2) -[check_dims] Jnn M dim#4796 dim#4808 i#24883 i#24890 i#24929 i#24936 lanetype#4796 lanetype#4808 sx sx#110 v_1 v_2 -[visit_exp `%X%`_shape{lanetype#4796, dim#4796, i#24883}((Jnn : Jnn <: lanetype), `%`_dim{i#24890}(M))] -[visit_exp lanetype#4796] -[visit_id lanetype#4796] -[visit_exp dim#4796] -[visit_id dim#4796] -[visit_exp i#24883] -[visit_id i#24883] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#24890}(M))] + 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) +[check_dims] Jnn M sx v_1 v_2 +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] -[visit_exp `%`_dim{i#24890}(M)] -[visit_exp i#24890] -[visit_id i#24890] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] -[visit_exp `GE`_vrelop_{sx#110}(sx)] -[visit_exp sx#110] -[visit_id sx#110] +[visit_exp `GE`_vrelop_(sx)] [visit_exp (sx)] [visit_exp sx] [visit_id sx] @@ -43966,21 +37466,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $ivrelopsx_(`%X%`_shape{lanetype#4808, dim#4808, i#24929}((Jnn : Jnn <: lanetype), `%`_dim{i#24936}(M)), def $ige_, sx, v_1, v_2)] -[visit_exp `%X%`_shape{lanetype#4808, dim#4808, i#24929}((Jnn : Jnn <: lanetype), `%`_dim{i#24936}(M))] -[visit_exp lanetype#4808] -[visit_id lanetype#4808] -[visit_exp dim#4808] -[visit_id dim#4808] -[visit_exp i#24929] -[visit_id i#24929] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#24936}(M))] +[visit_exp $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#24936}(M)] -[visit_exp i#24936] -[visit_id i#24936] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -43992,22 +37484,14 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_2] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{lanetype#4796 : lanetype, dim#4796 : dim, i#24883 : nat, Jnn : Jnn, i#24890 : nat, M : M, sx#110 : sx, sx : sx, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4808 : lanetype, dim#4808 : dim, i#24929 : nat, i#24936 : nat}(`%X%`_shape{lanetype#4796, dim#4796, i#24883}((Jnn : Jnn <: lanetype), `%`_dim{i#24890}(M)), `GE`_vrelop_{sx#110}(sx), v_1, v_2) = $ivrelopsx_(`%X%`_shape{lanetype#4808, dim#4808, i#24929}((Jnn : Jnn <: lanetype), `%`_dim{i#24936}(M)), def $ige_, sx, v_1, v_2) -[check_dims] Fnn M dim#4820 dim#4845 i#24961 i#24968 i#25020 i#25027 lanetype#4820 lanetype#4845 v_1 v_2 -[visit_exp `%X%`_shape{lanetype#4820, dim#4820, i#24961}((Fnn : Fnn <: lanetype), `%`_dim{i#24968}(M))] -[visit_exp lanetype#4820] -[visit_id lanetype#4820] -[visit_exp dim#4820] -[visit_id dim#4820] -[visit_exp i#24961] -[visit_id i#24961] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#24968}(M))] + 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) +[check_dims] Fnn M v_1 v_2 +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] -[visit_exp `%`_dim{i#24968}(M)] -[visit_exp i#24968] -[visit_id i#24968] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -44017,21 +37501,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $fvrelop_(`%X%`_shape{lanetype#4845, dim#4845, i#25020}((Fnn : Fnn <: lanetype), `%`_dim{i#25027}(M)), def $feq_, v_1, v_2)] -[visit_exp `%X%`_shape{lanetype#4845, dim#4845, i#25020}((Fnn : Fnn <: lanetype), `%`_dim{i#25027}(M))] -[visit_exp lanetype#4845] -[visit_id lanetype#4845] -[visit_exp dim#4845] -[visit_id dim#4845] -[visit_exp i#25020] -[visit_id i#25020] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#25027}(M))] +[visit_exp $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $feq_, v_1, v_2)] +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] not free -[visit_exp `%`_dim{i#25027}(M)] -[visit_exp i#25027] -[visit_id i#25027] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -44041,22 +37517,14 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_2] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{lanetype#4820 : lanetype, dim#4820 : dim, i#24961 : nat, Fnn : Fnn, i#24968 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4845 : lanetype, dim#4845 : dim, i#25020 : nat, i#25027 : nat}(`%X%`_shape{lanetype#4820, dim#4820, i#24961}((Fnn : Fnn <: lanetype), `%`_dim{i#24968}(M)), `EQ`_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape{lanetype#4845, dim#4845, i#25020}((Fnn : Fnn <: lanetype), `%`_dim{i#25027}(M)), def $feq_, v_1, v_2) -[check_dims] Fnn M dim#4857 dim#4882 i#25052 i#25059 i#25111 i#25118 lanetype#4857 lanetype#4882 v_1 v_2 -[visit_exp `%X%`_shape{lanetype#4857, dim#4857, i#25052}((Fnn : Fnn <: lanetype), `%`_dim{i#25059}(M))] -[visit_exp lanetype#4857] -[visit_id lanetype#4857] -[visit_exp dim#4857] -[visit_id dim#4857] -[visit_exp i#25052] -[visit_id i#25052] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#25059}(M))] + 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) +[check_dims] Fnn M v_1 v_2 +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] -[visit_exp `%`_dim{i#25059}(M)] -[visit_exp i#25059] -[visit_id i#25059] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -44066,21 +37534,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $fvrelop_(`%X%`_shape{lanetype#4882, dim#4882, i#25111}((Fnn : Fnn <: lanetype), `%`_dim{i#25118}(M)), def $fne_, v_1, v_2)] -[visit_exp `%X%`_shape{lanetype#4882, dim#4882, i#25111}((Fnn : Fnn <: lanetype), `%`_dim{i#25118}(M))] -[visit_exp lanetype#4882] -[visit_id lanetype#4882] -[visit_exp dim#4882] -[visit_id dim#4882] -[visit_exp i#25111] -[visit_id i#25111] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#25118}(M))] +[visit_exp $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fne_, v_1, v_2)] +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] not free -[visit_exp `%`_dim{i#25118}(M)] -[visit_exp i#25118] -[visit_id i#25118] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -44090,22 +37550,14 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_2] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{lanetype#4857 : lanetype, dim#4857 : dim, i#25052 : nat, Fnn : Fnn, i#25059 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4882 : lanetype, dim#4882 : dim, i#25111 : nat, i#25118 : nat}(`%X%`_shape{lanetype#4857, dim#4857, i#25052}((Fnn : Fnn <: lanetype), `%`_dim{i#25059}(M)), `NE`_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape{lanetype#4882, dim#4882, i#25111}((Fnn : Fnn <: lanetype), `%`_dim{i#25118}(M)), def $fne_, v_1, v_2) -[check_dims] Fnn M dim#4894 dim#4919 i#25143 i#25150 i#25202 i#25209 lanetype#4894 lanetype#4919 v_1 v_2 -[visit_exp `%X%`_shape{lanetype#4894, dim#4894, i#25143}((Fnn : Fnn <: lanetype), `%`_dim{i#25150}(M))] -[visit_exp lanetype#4894] -[visit_id lanetype#4894] -[visit_exp dim#4894] -[visit_id dim#4894] -[visit_exp i#25143] -[visit_id i#25143] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#25150}(M))] + 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) +[check_dims] Fnn M v_1 v_2 +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] -[visit_exp `%`_dim{i#25150}(M)] -[visit_exp i#25150] -[visit_id i#25150] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -44115,21 +37567,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $fvrelop_(`%X%`_shape{lanetype#4919, dim#4919, i#25202}((Fnn : Fnn <: lanetype), `%`_dim{i#25209}(M)), def $flt_, v_1, v_2)] -[visit_exp `%X%`_shape{lanetype#4919, dim#4919, i#25202}((Fnn : Fnn <: lanetype), `%`_dim{i#25209}(M))] -[visit_exp lanetype#4919] -[visit_id lanetype#4919] -[visit_exp dim#4919] -[visit_id dim#4919] -[visit_exp i#25202] -[visit_id i#25202] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#25209}(M))] +[visit_exp $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $flt_, v_1, v_2)] +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] not free -[visit_exp `%`_dim{i#25209}(M)] -[visit_exp i#25209] -[visit_id i#25209] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -44139,22 +37583,14 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_2] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{lanetype#4894 : lanetype, dim#4894 : dim, i#25143 : nat, Fnn : Fnn, i#25150 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4919 : lanetype, dim#4919 : dim, i#25202 : nat, i#25209 : nat}(`%X%`_shape{lanetype#4894, dim#4894, i#25143}((Fnn : Fnn <: lanetype), `%`_dim{i#25150}(M)), `LT`_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape{lanetype#4919, dim#4919, i#25202}((Fnn : Fnn <: lanetype), `%`_dim{i#25209}(M)), def $flt_, v_1, v_2) -[check_dims] Fnn M dim#4931 dim#4956 i#25234 i#25241 i#25293 i#25300 lanetype#4931 lanetype#4956 v_1 v_2 -[visit_exp `%X%`_shape{lanetype#4931, dim#4931, i#25234}((Fnn : Fnn <: lanetype), `%`_dim{i#25241}(M))] -[visit_exp lanetype#4931] -[visit_id lanetype#4931] -[visit_exp dim#4931] -[visit_id dim#4931] -[visit_exp i#25234] -[visit_id i#25234] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#25241}(M))] + 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) +[check_dims] Fnn M v_1 v_2 +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] -[visit_exp `%`_dim{i#25241}(M)] -[visit_exp i#25241] -[visit_id i#25241] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -44164,21 +37600,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $fvrelop_(`%X%`_shape{lanetype#4956, dim#4956, i#25293}((Fnn : Fnn <: lanetype), `%`_dim{i#25300}(M)), def $fgt_, v_1, v_2)] -[visit_exp `%X%`_shape{lanetype#4956, dim#4956, i#25293}((Fnn : Fnn <: lanetype), `%`_dim{i#25300}(M))] -[visit_exp lanetype#4956] -[visit_id lanetype#4956] -[visit_exp dim#4956] -[visit_id dim#4956] -[visit_exp i#25293] -[visit_id i#25293] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#25300}(M))] +[visit_exp $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fgt_, v_1, v_2)] +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] not free -[visit_exp `%`_dim{i#25300}(M)] -[visit_exp i#25300] -[visit_id i#25300] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -44188,22 +37616,14 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_2] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{lanetype#4931 : lanetype, dim#4931 : dim, i#25234 : nat, Fnn : Fnn, i#25241 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4956 : lanetype, dim#4956 : dim, i#25293 : nat, i#25300 : nat}(`%X%`_shape{lanetype#4931, dim#4931, i#25234}((Fnn : Fnn <: lanetype), `%`_dim{i#25241}(M)), `GT`_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape{lanetype#4956, dim#4956, i#25293}((Fnn : Fnn <: lanetype), `%`_dim{i#25300}(M)), def $fgt_, v_1, v_2) -[check_dims] Fnn M dim#4968 dim#4993 i#25325 i#25332 i#25384 i#25391 lanetype#4968 lanetype#4993 v_1 v_2 -[visit_exp `%X%`_shape{lanetype#4968, dim#4968, i#25325}((Fnn : Fnn <: lanetype), `%`_dim{i#25332}(M))] -[visit_exp lanetype#4968] -[visit_id lanetype#4968] -[visit_exp dim#4968] -[visit_id dim#4968] -[visit_exp i#25325] -[visit_id i#25325] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#25332}(M))] + 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) +[check_dims] Fnn M v_1 v_2 +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] -[visit_exp `%`_dim{i#25332}(M)] -[visit_exp i#25332] -[visit_id i#25332] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -44213,21 +37633,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $fvrelop_(`%X%`_shape{lanetype#4993, dim#4993, i#25384}((Fnn : Fnn <: lanetype), `%`_dim{i#25391}(M)), def $fle_, v_1, v_2)] -[visit_exp `%X%`_shape{lanetype#4993, dim#4993, i#25384}((Fnn : Fnn <: lanetype), `%`_dim{i#25391}(M))] -[visit_exp lanetype#4993] -[visit_id lanetype#4993] -[visit_exp dim#4993] -[visit_id dim#4993] -[visit_exp i#25384] -[visit_id i#25384] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#25391}(M))] +[visit_exp $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fle_, v_1, v_2)] +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] not free -[visit_exp `%`_dim{i#25391}(M)] -[visit_exp i#25391] -[visit_id i#25391] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -44237,22 +37649,14 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_2] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{lanetype#4968 : lanetype, dim#4968 : dim, i#25325 : nat, Fnn : Fnn, i#25332 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4993 : lanetype, dim#4993 : dim, i#25384 : nat, i#25391 : nat}(`%X%`_shape{lanetype#4968, dim#4968, i#25325}((Fnn : Fnn <: lanetype), `%`_dim{i#25332}(M)), `LE`_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape{lanetype#4993, dim#4993, i#25384}((Fnn : Fnn <: lanetype), `%`_dim{i#25391}(M)), def $fle_, v_1, v_2) -[check_dims] Fnn M dim#5005 dim#5030 i#25416 i#25423 i#25475 i#25482 lanetype#5005 lanetype#5030 v_1 v_2 -[visit_exp `%X%`_shape{lanetype#5005, dim#5005, i#25416}((Fnn : Fnn <: lanetype), `%`_dim{i#25423}(M))] -[visit_exp lanetype#5005] -[visit_id lanetype#5005] -[visit_exp dim#5005] -[visit_id dim#5005] -[visit_exp i#25416] -[visit_id i#25416] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#25423}(M))] + 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) +[check_dims] Fnn M v_1 v_2 +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] -[visit_exp `%`_dim{i#25423}(M)] -[visit_exp i#25423] -[visit_id i#25423] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -44262,21 +37666,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $fvrelop_(`%X%`_shape{lanetype#5030, dim#5030, i#25475}((Fnn : Fnn <: lanetype), `%`_dim{i#25482}(M)), def $fge_, v_1, v_2)] -[visit_exp `%X%`_shape{lanetype#5030, dim#5030, i#25475}((Fnn : Fnn <: lanetype), `%`_dim{i#25482}(M))] -[visit_exp lanetype#5030] -[visit_id lanetype#5030] -[visit_exp dim#5030] -[visit_id dim#5030] -[visit_exp i#25475] -[visit_id i#25475] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim{i#25482}(M))] +[visit_exp $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fge_, v_1, v_2)] +[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] +[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] [visit_exp (Fnn : Fnn <: lanetype)] [visit_exp Fnn] [visit_id Fnn] not free -[visit_exp `%`_dim{i#25482}(M)] -[visit_exp i#25482] -[visit_id i#25482] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -44286,28 +37682,16 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_2] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{lanetype#5005 : lanetype, dim#5005 : dim, i#25416 : nat, Fnn : Fnn, i#25423 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#5030 : lanetype, dim#5030 : dim, i#25475 : nat, i#25482 : nat}(`%X%`_shape{lanetype#5005, dim#5005, i#25416}((Fnn : Fnn <: lanetype), `%`_dim{i#25423}(M)), `GE`_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape{lanetype#5030, dim#5030, i#25475}((Fnn : Fnn <: lanetype), `%`_dim{i#25482}(M)), def $fge_, v_1, v_2) -[check_dims] Jnn Jnn#119 M dim#5042 dim#5054 i i#25507 i#25514 i#25553 i#25560 lanetype#5042 lanetype#5054 shape#421 v -[visit_exp `%`_ishape{shape#421, Jnn#119}(`%X%`_shape{lanetype#5042, dim#5042, i#25507}((Jnn : Jnn <: lanetype), `%`_dim{i#25514}(M)))] -[visit_exp shape#421] -[visit_id shape#421] -[visit_exp Jnn#119] -[visit_id Jnn#119] -[visit_exp (`%X%`_shape{lanetype#5042, dim#5042, i#25507}((Jnn : Jnn <: lanetype), `%`_dim{i#25514}(M)))] -[visit_exp `%X%`_shape{lanetype#5042, dim#5042, i#25507}((Jnn : Jnn <: lanetype), `%`_dim{i#25514}(M))] -[visit_exp lanetype#5042] -[visit_id lanetype#5042] -[visit_exp dim#5042] -[visit_id dim#5042] -[visit_exp i#25507] -[visit_id i#25507] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#25514}(M))] + 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) +[check_dims] Jnn M i v +[visit_exp `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))] +[visit_exp (`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] -[visit_exp `%`_dim{i#25514}(M)] -[visit_exp i#25514] -[visit_id i#25514] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -44317,21 +37701,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v] [visit_exp i] [visit_id i] -[visit_exp $ivshiftop_(`%X%`_shape{lanetype#5054, dim#5054, i#25553}((Jnn : Jnn <: lanetype), `%`_dim{i#25560}(M)), def $ishl_, v, i)] -[visit_exp `%X%`_shape{lanetype#5054, dim#5054, i#25553}((Jnn : Jnn <: lanetype), `%`_dim{i#25560}(M))] -[visit_exp lanetype#5054] -[visit_id lanetype#5054] -[visit_exp dim#5054] -[visit_id dim#5054] -[visit_exp i#25553] -[visit_id i#25553] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#25560}(M))] +[visit_exp $ivshiftop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#25560}(M)] -[visit_exp i#25560] -[visit_id i#25560] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -44341,34 +37717,20 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id i] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshiftop_{shape#421 : shape, Jnn#119 : Jnn, lanetype#5042 : lanetype, dim#5042 : dim, i#25507 : nat, Jnn : Jnn, i#25514 : nat, M : M, v : vec_(`V128`_Vnn), i : u32, lanetype#5054 : lanetype, dim#5054 : dim, i#25553 : nat, i#25560 : nat}(`%`_ishape{shape#421, Jnn#119}(`%X%`_shape{lanetype#5042, dim#5042, i#25507}((Jnn : Jnn <: lanetype), `%`_dim{i#25514}(M))), `SHL`_vshiftop_, v, i) = $ivshiftop_(`%X%`_shape{lanetype#5054, dim#5054, i#25553}((Jnn : Jnn <: lanetype), `%`_dim{i#25560}(M)), def $ishl_, v, i) -[check_dims] Jnn Jnn#123 M dim#5066 dim#5078 i i#25585 i#25592 i#25631 i#25638 lanetype#5066 lanetype#5078 shape#433 sx sx#112 v -[visit_exp `%`_ishape{shape#433, Jnn#123}(`%X%`_shape{lanetype#5066, dim#5066, i#25585}((Jnn : Jnn <: lanetype), `%`_dim{i#25592}(M)))] -[visit_exp shape#433] -[visit_id shape#433] -[visit_exp Jnn#123] -[visit_id Jnn#123] -[visit_exp (`%X%`_shape{lanetype#5066, dim#5066, i#25585}((Jnn : Jnn <: lanetype), `%`_dim{i#25592}(M)))] -[visit_exp `%X%`_shape{lanetype#5066, dim#5066, i#25585}((Jnn : Jnn <: lanetype), `%`_dim{i#25592}(M))] -[visit_exp lanetype#5066] -[visit_id lanetype#5066] -[visit_exp dim#5066] -[visit_id dim#5066] -[visit_exp i#25585] -[visit_id i#25585] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#25592}(M))] + 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) +[check_dims] Jnn M i sx v +[visit_exp `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))] +[visit_exp (`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] -[visit_exp `%`_dim{i#25592}(M)] -[visit_exp i#25592] -[visit_id i#25592] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] -[visit_exp `SHR`_vshiftop_{sx#112}(sx)] -[visit_exp sx#112] -[visit_id sx#112] +[visit_exp `SHR`_vshiftop_(sx)] [visit_exp (sx)] [visit_exp sx] [visit_id sx] @@ -44376,21 +37738,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v] [visit_exp i] [visit_id i] -[visit_exp $ivshiftopsx_(`%X%`_shape{lanetype#5078, dim#5078, i#25631}((Jnn : Jnn <: lanetype), `%`_dim{i#25638}(M)), def $ishr_, sx, v, i)] -[visit_exp `%X%`_shape{lanetype#5078, dim#5078, i#25631}((Jnn : Jnn <: lanetype), `%`_dim{i#25638}(M))] -[visit_exp lanetype#5078] -[visit_id lanetype#5078] -[visit_exp dim#5078] -[visit_id dim#5078] -[visit_exp i#25631] -[visit_id i#25631] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#25638}(M))] +[visit_exp $ivshiftopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#25638}(M)] -[visit_exp i#25638] -[visit_id i#25638] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -44402,48 +37756,28 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id i] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshiftop_{shape#433 : shape, Jnn#123 : Jnn, lanetype#5066 : lanetype, dim#5066 : dim, i#25585 : nat, Jnn : Jnn, i#25592 : nat, M : M, sx#112 : sx, sx : sx, v : vec_(`V128`_Vnn), i : u32, lanetype#5078 : lanetype, dim#5078 : dim, i#25631 : nat, i#25638 : nat}(`%`_ishape{shape#433, Jnn#123}(`%X%`_shape{lanetype#5066, dim#5066, i#25585}((Jnn : Jnn <: lanetype), `%`_dim{i#25592}(M))), `SHR`_vshiftop_{sx#112}(sx), v, i) = $ivshiftopsx_(`%X%`_shape{lanetype#5078, dim#5078, i#25631}((Jnn : Jnn <: lanetype), `%`_dim{i#25638}(M)), def $ishr_, sx, v, i) -[check_dims] Jnn Jnn#127 M dim#5090 dim#5102 i#25663 i#25670 i#25697 i#25704 lanetype#5090 lanetype#5102 shape#445 v -[visit_exp `%`_ishape{shape#445, Jnn#127}(`%X%`_shape{lanetype#5090, dim#5090, i#25663}((Jnn : Jnn <: lanetype), `%`_dim{i#25670}(M)))] -[visit_exp shape#445] -[visit_id shape#445] -[visit_exp Jnn#127] -[visit_id Jnn#127] -[visit_exp (`%X%`_shape{lanetype#5090, dim#5090, i#25663}((Jnn : Jnn <: lanetype), `%`_dim{i#25670}(M)))] -[visit_exp `%X%`_shape{lanetype#5090, dim#5090, i#25663}((Jnn : Jnn <: lanetype), `%`_dim{i#25670}(M))] -[visit_exp lanetype#5090] -[visit_id lanetype#5090] -[visit_exp dim#5090] -[visit_id dim#5090] -[visit_exp i#25663] -[visit_id i#25663] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#25670}(M))] + 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) +[check_dims] Jnn M v +[visit_exp `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))] +[visit_exp (`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] -[visit_exp `%`_dim{i#25670}(M)] -[visit_exp i#25670] -[visit_id i#25670] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] [visit_exp v] [visit_id v] -[visit_exp $ivbitmaskop_(`%X%`_shape{lanetype#5102, dim#5102, i#25697}((Jnn : Jnn <: lanetype), `%`_dim{i#25704}(M)), v)] -[visit_exp `%X%`_shape{lanetype#5102, dim#5102, i#25697}((Jnn : Jnn <: lanetype), `%`_dim{i#25704}(M))] -[visit_exp lanetype#5102] -[visit_id lanetype#5102] -[visit_exp dim#5102] -[visit_id dim#5102] -[visit_exp i#25697] -[visit_id i#25697] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#25704}(M))] +[visit_exp $ivbitmaskop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#25704}(M)] -[visit_exp i#25704] -[visit_id i#25704] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -44451,25 +37785,15 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbitmaskop_{shape#445 : shape, Jnn#127 : Jnn, lanetype#5090 : lanetype, dim#5090 : dim, i#25663 : nat, Jnn : Jnn, i#25670 : nat, M : M, v : vec_(`V128`_Vnn), lanetype#5102 : lanetype, dim#5102 : dim, i#25697 : nat, i#25704 : nat}(`%`_ishape{shape#445, Jnn#127}(`%X%`_shape{lanetype#5090, dim#5090, i#25663}((Jnn : Jnn <: lanetype), `%`_dim{i#25670}(M))), v) = $ivbitmaskop_(`%X%`_shape{lanetype#5102, dim#5102, i#25697}((Jnn : Jnn <: lanetype), `%`_dim{i#25704}(M)), v) -[check_dims] M dim#5114 dim#5126 i#25719 i#25726 i#25765 i#25772 lanetype#5114 lanetype#5126 shape#457 v_1 v_2 -[visit_exp `%`_bshape{shape#457}(`%X%`_shape{lanetype#5114, dim#5114, i#25719}(`I8`_lanetype, `%`_dim{i#25726}(M)))] -[visit_exp shape#457] -[visit_id shape#457] -[visit_exp (`%X%`_shape{lanetype#5114, dim#5114, i#25719}(`I8`_lanetype, `%`_dim{i#25726}(M)))] -[visit_exp `%X%`_shape{lanetype#5114, dim#5114, i#25719}(`I8`_lanetype, `%`_dim{i#25726}(M))] -[visit_exp lanetype#5114] -[visit_id lanetype#5114] -[visit_exp dim#5114] -[visit_id dim#5114] -[visit_exp i#25719] -[visit_id i#25719] -[visit_exp (`I8`_lanetype, `%`_dim{i#25726}(M))] + 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) +[check_dims] M v_1 v_2 +[visit_exp `%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(M)))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(M)))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(M))] +[visit_exp (`I8`_lanetype, `%`_dim(M))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#25726}(M)] -[visit_exp i#25726] -[visit_id i#25726] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -44479,20 +37803,12 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $ivswizzlop_(`%X%`_shape{lanetype#5126, dim#5126, i#25765}(`I8`_lanetype, `%`_dim{i#25772}(M)), def $iswizzle_lane_, v_1, v_2)] -[visit_exp `%X%`_shape{lanetype#5126, dim#5126, i#25765}(`I8`_lanetype, `%`_dim{i#25772}(M))] -[visit_exp lanetype#5126] -[visit_id lanetype#5126] -[visit_exp dim#5126] -[visit_id dim#5126] -[visit_exp i#25765] -[visit_id i#25765] -[visit_exp (`I8`_lanetype, `%`_dim{i#25772}(M))] +[visit_exp $ivswizzlop_(`%X%`_shape(`I8`_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2)] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(M))] +[visit_exp (`I8`_lanetype, `%`_dim(M))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#25772}(M)] -[visit_exp i#25772] -[visit_id i#25772] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -44502,25 +37818,15 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_2] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vswizzlop_{shape#457 : shape, lanetype#5114 : lanetype, dim#5114 : dim, i#25719 : nat, i#25726 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#5126 : lanetype, dim#5126 : dim, i#25765 : nat, i#25772 : nat}(`%`_bshape{shape#457}(`%X%`_shape{lanetype#5114, dim#5114, i#25719}(`I8`_lanetype, `%`_dim{i#25726}(M))), `SWIZZLE`_vswizzlop_, v_1, v_2) = $ivswizzlop_(`%X%`_shape{lanetype#5126, dim#5126, i#25765}(`I8`_lanetype, `%`_dim{i#25772}(M)), def $iswizzle_lane_, v_1, v_2) -[check_dims] M dim#5138 dim#5150 i#25797 i#25804 i#25843 i#25850 lanetype#5138 lanetype#5150 shape#469 v_1 v_2 -[visit_exp `%`_bshape{shape#469}(`%X%`_shape{lanetype#5138, dim#5138, i#25797}(`I8`_lanetype, `%`_dim{i#25804}(M)))] -[visit_exp shape#469] -[visit_id shape#469] -[visit_exp (`%X%`_shape{lanetype#5138, dim#5138, i#25797}(`I8`_lanetype, `%`_dim{i#25804}(M)))] -[visit_exp `%X%`_shape{lanetype#5138, dim#5138, i#25797}(`I8`_lanetype, `%`_dim{i#25804}(M))] -[visit_exp lanetype#5138] -[visit_id lanetype#5138] -[visit_exp dim#5138] -[visit_id dim#5138] -[visit_exp i#25797] -[visit_id i#25797] -[visit_exp (`I8`_lanetype, `%`_dim{i#25804}(M))] + 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) +[check_dims] M v_1 v_2 +[visit_exp `%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(M)))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(M)))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(M))] +[visit_exp (`I8`_lanetype, `%`_dim(M))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#25804}(M)] -[visit_exp i#25804] -[visit_id i#25804] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -44530,20 +37836,12 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $ivswizzlop_(`%X%`_shape{lanetype#5150, dim#5150, i#25843}(`I8`_lanetype, `%`_dim{i#25850}(M)), def $irelaxed_swizzle_lane_, v_1, v_2)] -[visit_exp `%X%`_shape{lanetype#5150, dim#5150, i#25843}(`I8`_lanetype, `%`_dim{i#25850}(M))] -[visit_exp lanetype#5150] -[visit_id lanetype#5150] -[visit_exp dim#5150] -[visit_id dim#5150] -[visit_exp i#25843] -[visit_id i#25843] -[visit_exp (`I8`_lanetype, `%`_dim{i#25850}(M))] +[visit_exp $ivswizzlop_(`%X%`_shape(`I8`_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2)] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(M))] +[visit_exp (`I8`_lanetype, `%`_dim(M))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#25850}(M)] -[visit_exp i#25850] -[visit_id i#25850] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -44553,25 +37851,15 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_2] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vswizzlop_{shape#469 : shape, lanetype#5138 : lanetype, dim#5138 : dim, i#25797 : nat, i#25804 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#5150 : lanetype, dim#5150 : dim, i#25843 : nat, i#25850 : nat}(`%`_bshape{shape#469}(`%X%`_shape{lanetype#5138, dim#5138, i#25797}(`I8`_lanetype, `%`_dim{i#25804}(M))), `RELAXED_SWIZZLE`_vswizzlop_, v_1, v_2) = $ivswizzlop_(`%X%`_shape{lanetype#5150, dim#5150, i#25843}(`I8`_lanetype, `%`_dim{i#25850}(M)), def $irelaxed_swizzle_lane_, v_1, v_2) -[check_dims] M dim#5162 dim#5174 i i#25875 i#25882 i#25946 i#25953 lanetype#5162 lanetype#5174 shape#481 v_1 v_2 -[visit_exp `%`_bshape{shape#481}(`%X%`_shape{lanetype#5162, dim#5162, i#25875}(`I8`_lanetype, `%`_dim{i#25882}(M)))] -[visit_exp shape#481] -[visit_id shape#481] -[visit_exp (`%X%`_shape{lanetype#5162, dim#5162, i#25875}(`I8`_lanetype, `%`_dim{i#25882}(M)))] -[visit_exp `%X%`_shape{lanetype#5162, dim#5162, i#25875}(`I8`_lanetype, `%`_dim{i#25882}(M))] -[visit_exp lanetype#5162] -[visit_id lanetype#5162] -[visit_exp dim#5162] -[visit_id dim#5162] -[visit_exp i#25875] -[visit_id i#25875] -[visit_exp (`I8`_lanetype, `%`_dim{i#25882}(M))] + 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) +[check_dims] M i v_1 v_2 +[visit_exp `%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(M)))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(M)))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(M))] +[visit_exp (`I8`_lanetype, `%`_dim(M))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#25882}(M)] -[visit_exp i#25882] -[visit_id i#25882] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -44588,20 +37876,12 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $ivshufflop_(`%X%`_shape{lanetype#5174, dim#5174, i#25946}(`I8`_lanetype, `%`_dim{i#25953}(M)), i*{i <- `i*`}, v_1, v_2)] -[visit_exp `%X%`_shape{lanetype#5174, dim#5174, i#25946}(`I8`_lanetype, `%`_dim{i#25953}(M))] -[visit_exp lanetype#5174] -[visit_id lanetype#5174] -[visit_exp dim#5174] -[visit_id dim#5174] -[visit_exp i#25946] -[visit_id i#25946] -[visit_exp (`I8`_lanetype, `%`_dim{i#25953}(M))] +[visit_exp $ivshufflop_(`%X%`_shape(`I8`_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2)] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(M))] +[visit_exp (`I8`_lanetype, `%`_dim(M))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#25953}(M)] -[visit_exp i#25953] -[visit_id i#25953] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -44620,47 +37900,27 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_2] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshufflop_{shape#481 : shape, lanetype#5162 : lanetype, dim#5162 : dim, i#25875 : nat, i#25882 : nat, M : M, `i*` : laneidx*, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#5174 : lanetype, dim#5174 : dim, i#25946 : nat, i#25953 : nat}(`%`_bshape{shape#481}(`%X%`_shape{lanetype#5162, dim#5162, i#25875}(`I8`_lanetype, `%`_dim{i#25882}(M))), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape{lanetype#5174, dim#5174, i#25946}(`I8`_lanetype, `%`_dim{i#25953}(M)), i*{i <- `i*`}, v_1, v_2) -[check_dims] Jnn_1 Jnn_2 M_1 M_2 c c_1 dim#5186 dim#5198 half half#5 i#26001 i#26008 i#26013 i#26020 lanetype#5186 lanetype#5198 sx sx#114 -[visit_exp `%X%`_shape{lanetype#5186, dim#5186, i#26001}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#26008}(M_1))] -[visit_exp lanetype#5186] -[visit_id lanetype#5186] -[visit_exp dim#5186] -[visit_id dim#5186] -[visit_exp i#26001] -[visit_id i#26001] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#26008}(M_1))] + 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) +[check_dims] Jnn_1 Jnn_2 M_1 M_2 c c_1 half sx +[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] [visit_exp (Jnn_1 : Jnn <: lanetype)] [visit_exp Jnn_1] [visit_id Jnn_1] -[visit_exp `%`_dim{i#26008}(M_1)] -[visit_exp i#26008] -[visit_id i#26008] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] -[visit_exp `%X%`_shape{lanetype#5198, dim#5198, i#26013}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#26020}(M_2))] -[visit_exp lanetype#5198] -[visit_id lanetype#5198] -[visit_exp dim#5198] -[visit_id dim#5198] -[visit_exp i#26013] -[visit_id i#26013] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#26020}(M_2))] +[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] [visit_exp (Jnn_2 : Jnn <: lanetype)] [visit_exp Jnn_2] [visit_id Jnn_2] -[visit_exp `%`_dim{i#26020}(M_2)] -[visit_exp i#26020] -[visit_id i#26020] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] -[visit_exp `EXTEND`_vcvtop__{half#5, sx#114}(half, sx)] -[visit_exp half#5] -[visit_id half#5] -[visit_exp sx#114] -[visit_id sx#114] +[visit_exp `EXTEND`_vcvtop__(half, sx)] [visit_exp (half, sx)] [visit_exp half] [visit_id half] @@ -44689,48 +37949,28 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id c_1] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{lanetype#5186 : lanetype, dim#5186 : dim, i#26001 : nat, Jnn_1 : Jnn, i#26008 : nat, M_1 : M, lanetype#5198 : lanetype, dim#5198 : dim, i#26013 : nat, Jnn_2 : Jnn, i#26020 : nat, M_2 : M, half#5 : half, sx#114 : sx, half : half, sx : sx, c_1 : lane_($lanetype(`%X%`_shape{lanetype#5186, dim#5186, i#26001}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#26008}(M_1)))), c : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))}(`%X%`_shape{lanetype#5186, dim#5186, i#26001}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#26008}(M_1)), `%X%`_shape{lanetype#5198, dim#5198, i#26013}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#26020}(M_2)), `EXTEND`_vcvtop__{half#5, sx#114}(half, sx), c_1) = [c] + 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] -- if (c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1)) -[check_dims] Fnn_2 Jnn_1 M_1 M_2 c c_1 dim#5222 dim#5234 half half?#5 i#26109 i#26116 i#26121 i#26128 lanetype#5222 lanetype#5234 sx sx#116 -[visit_exp `%X%`_shape{lanetype#5222, dim#5222, i#26109}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#26116}(M_1))] -[visit_exp lanetype#5222] -[visit_id lanetype#5222] -[visit_exp dim#5222] -[visit_id dim#5222] -[visit_exp i#26109] -[visit_id i#26109] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#26116}(M_1))] +[check_dims] Fnn_2 Jnn_1 M_1 M_2 c c_1 half sx +[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] [visit_exp (Jnn_1 : Jnn <: lanetype)] [visit_exp Jnn_1] [visit_id Jnn_1] -[visit_exp `%`_dim{i#26116}(M_1)] -[visit_exp i#26116] -[visit_id i#26116] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] -[visit_exp `%X%`_shape{lanetype#5234, dim#5234, i#26121}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#26128}(M_2))] -[visit_exp lanetype#5234] -[visit_id lanetype#5234] -[visit_exp dim#5234] -[visit_id dim#5234] -[visit_exp i#26121] -[visit_id i#26121] -[visit_exp ((Fnn_2 : Fnn <: lanetype), `%`_dim{i#26128}(M_2))] +[visit_exp `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))] +[visit_exp ((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))] [visit_exp (Fnn_2 : Fnn <: lanetype)] [visit_exp Fnn_2] [visit_id Fnn_2] -[visit_exp `%`_dim{i#26128}(M_2)] -[visit_exp i#26128] -[visit_id i#26128] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] -[visit_exp `CONVERT`_vcvtop__{`half?#5`, sx#116}(half?{half <- `half?`}, sx)] -[visit_exp `half?#5`] -[visit_id half?#5] -[visit_exp sx#116] -[visit_id sx#116] +[visit_exp `CONVERT`_vcvtop__(half?{half <- `half?`}, sx)] [visit_exp (half?{half <- `half?`}, sx)] [visit_exp half?{half <- `half?`}] [scope_enter half] @@ -44766,48 +38006,28 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id c_1] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{lanetype#5222 : lanetype, dim#5222 : dim, i#26109 : nat, Jnn_1 : Jnn, i#26116 : nat, M_1 : M, lanetype#5234 : lanetype, dim#5234 : dim, i#26121 : nat, Fnn_2 : Fnn, i#26128 : nat, M_2 : M, `half?#5` : half?, sx#116 : sx, `half?` : half?, sx : sx, c_1 : lane_($lanetype(`%X%`_shape{lanetype#5222, dim#5222, i#26109}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#26116}(M_1)))), c : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))}(`%X%`_shape{lanetype#5222, dim#5222, i#26109}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#26116}(M_1)), `%X%`_shape{lanetype#5234, dim#5234, i#26121}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#26128}(M_2)), `CONVERT`_vcvtop__{`half?#5`, sx#116}(half?{half <- `half?`}, sx), c_1) = [c] + 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] -- if (c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1)) -[check_dims] Fnn_1 Inn_2 M_1 M_2 c c_1 dim#5273 dim#5285 i#26208 i#26215 i#26220 i#26227 lanetype#5273 lanetype#5285 sx sx#148 zero zero?#39 -[visit_exp `%X%`_shape{lanetype#5273, dim#5273, i#26208}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26215}(M_1))] -[visit_exp lanetype#5273] -[visit_id lanetype#5273] -[visit_exp dim#5273] -[visit_id dim#5273] -[visit_exp i#26208] -[visit_id i#26208] -[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26215}(M_1))] +[check_dims] Fnn_1 Inn_2 M_1 M_2 c c_1 sx zero +[visit_exp `%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] +[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] [visit_exp (Fnn_1 : Fnn <: lanetype)] [visit_exp Fnn_1] [visit_id Fnn_1] -[visit_exp `%`_dim{i#26215}(M_1)] -[visit_exp i#26215] -[visit_id i#26215] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] -[visit_exp `%X%`_shape{lanetype#5285, dim#5285, i#26220}((Inn_2 : Inn <: lanetype), `%`_dim{i#26227}(M_2))] -[visit_exp lanetype#5285] -[visit_id lanetype#5285] -[visit_exp dim#5285] -[visit_id dim#5285] -[visit_exp i#26220] -[visit_id i#26220] -[visit_exp ((Inn_2 : Inn <: lanetype), `%`_dim{i#26227}(M_2))] +[visit_exp `%X%`_shape((Inn_2 : Inn <: lanetype), `%`_dim(M_2))] +[visit_exp ((Inn_2 : Inn <: lanetype), `%`_dim(M_2))] [visit_exp (Inn_2 : Inn <: lanetype)] [visit_exp Inn_2] [visit_id Inn_2] -[visit_exp `%`_dim{i#26227}(M_2)] -[visit_exp i#26227] -[visit_id i#26227] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] -[visit_exp `TRUNC_SAT`_vcvtop__{sx#148, `zero?#39`}(sx, zero?{zero <- `zero?`})] -[visit_exp sx#148] -[visit_id sx#148] -[visit_exp `zero?#39`] -[visit_id zero?#39] +[visit_exp `TRUNC_SAT`_vcvtop__(sx, zero?{zero <- `zero?`})] [visit_exp (sx, zero?{zero <- `zero?`})] [visit_exp sx] [visit_id sx] @@ -44857,48 +38077,28 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id c_1] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{lanetype#5273 : lanetype, dim#5273 : dim, i#26208 : nat, Fnn_1 : Fnn, i#26215 : nat, M_1 : M, lanetype#5285 : lanetype, dim#5285 : dim, i#26220 : nat, Inn_2 : Inn, i#26227 : nat, M_2 : M, sx#148 : sx, `zero?#39` : zero?, sx : sx, `zero?` : zero?, c_1 : lane_($lanetype(`%X%`_shape{lanetype#5273, dim#5273, i#26208}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26215}(M_1)))), `c?` : iN($lsizenn2((Inn_2 : Inn <: lanetype)))?}(`%X%`_shape{lanetype#5273, dim#5273, i#26208}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26215}(M_1)), `%X%`_shape{lanetype#5285, dim#5285, i#26220}((Inn_2 : Inn <: lanetype), `%`_dim{i#26227}(M_2)), `TRUNC_SAT`_vcvtop__{sx#148, `zero?#39`}(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) + 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 : Inn <: lanetype)))?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : Inn <: lanetype), `%`_dim(M_2)), `TRUNC_SAT`_vcvtop__(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : Inn <: lanetype)), sx, c_1)) -[check_dims] Fnn_1 Inn_2 M_1 M_2 c c_1 dim#5361 dim#5373 i#26384 i#26391 i#26396 i#26403 lanetype#5361 lanetype#5373 sx sx#180 zero zero?#71 -[visit_exp `%X%`_shape{lanetype#5361, dim#5361, i#26384}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26391}(M_1))] -[visit_exp lanetype#5361] -[visit_id lanetype#5361] -[visit_exp dim#5361] -[visit_id dim#5361] -[visit_exp i#26384] -[visit_id i#26384] -[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26391}(M_1))] +[check_dims] Fnn_1 Inn_2 M_1 M_2 c c_1 sx zero +[visit_exp `%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] +[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] [visit_exp (Fnn_1 : Fnn <: lanetype)] [visit_exp Fnn_1] [visit_id Fnn_1] -[visit_exp `%`_dim{i#26391}(M_1)] -[visit_exp i#26391] -[visit_id i#26391] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] -[visit_exp `%X%`_shape{lanetype#5373, dim#5373, i#26396}((Inn_2 : Inn <: lanetype), `%`_dim{i#26403}(M_2))] -[visit_exp lanetype#5373] -[visit_id lanetype#5373] -[visit_exp dim#5373] -[visit_id dim#5373] -[visit_exp i#26396] -[visit_id i#26396] -[visit_exp ((Inn_2 : Inn <: lanetype), `%`_dim{i#26403}(M_2))] +[visit_exp `%X%`_shape((Inn_2 : Inn <: lanetype), `%`_dim(M_2))] +[visit_exp ((Inn_2 : Inn <: lanetype), `%`_dim(M_2))] [visit_exp (Inn_2 : Inn <: lanetype)] [visit_exp Inn_2] [visit_id Inn_2] -[visit_exp `%`_dim{i#26403}(M_2)] -[visit_exp i#26403] -[visit_id i#26403] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] -[visit_exp `RELAXED_TRUNC`_vcvtop__{sx#180, `zero?#71`}(sx, zero?{zero <- `zero?`})] -[visit_exp sx#180] -[visit_id sx#180] -[visit_exp `zero?#71`] -[visit_id zero?#71] +[visit_exp `RELAXED_TRUNC`_vcvtop__(sx, zero?{zero <- `zero?`})] [visit_exp (sx, zero?{zero <- `zero?`})] [visit_exp sx] [visit_id sx] @@ -44948,46 +38148,28 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id c_1] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{lanetype#5361 : lanetype, dim#5361 : dim, i#26384 : nat, Fnn_1 : Fnn, i#26391 : nat, M_1 : M, lanetype#5373 : lanetype, dim#5373 : dim, i#26396 : nat, Inn_2 : Inn, i#26403 : nat, M_2 : M, sx#180 : sx, `zero?#71` : zero?, sx : sx, `zero?` : zero?, c_1 : lane_($lanetype(`%X%`_shape{lanetype#5361, dim#5361, i#26384}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26391}(M_1)))), `c?` : iN($lsizenn2((Inn_2 : Inn <: lanetype)))?}(`%X%`_shape{lanetype#5361, dim#5361, i#26384}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26391}(M_1)), `%X%`_shape{lanetype#5373, dim#5373, i#26396}((Inn_2 : Inn <: lanetype), `%`_dim{i#26403}(M_2)), `RELAXED_TRUNC`_vcvtop__{sx#180, `zero?#71`}(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) + 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 : Inn <: lanetype)))?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : Inn <: lanetype), `%`_dim(M_2)), `RELAXED_TRUNC`_vcvtop__(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : Inn <: lanetype)), sx, c_1)) -[check_dims] Fnn_1 Fnn_2 M_1 M_2 c c_1 dim#5449 dim#5461 i#26560 i#26567 i#26572 i#26579 lanetype#5449 lanetype#5461 zero#125 -[visit_exp `%X%`_shape{lanetype#5449, dim#5449, i#26560}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26567}(M_1))] -[visit_exp lanetype#5449] -[visit_id lanetype#5449] -[visit_exp dim#5449] -[visit_id dim#5449] -[visit_exp i#26560] -[visit_id i#26560] -[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26567}(M_1))] +[check_dims] Fnn_1 Fnn_2 M_1 M_2 c c_1 +[visit_exp `%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] +[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] [visit_exp (Fnn_1 : Fnn <: lanetype)] [visit_exp Fnn_1] [visit_id Fnn_1] -[visit_exp `%`_dim{i#26567}(M_1)] -[visit_exp i#26567] -[visit_id i#26567] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] -[visit_exp `%X%`_shape{lanetype#5461, dim#5461, i#26572}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#26579}(M_2))] -[visit_exp lanetype#5461] -[visit_id lanetype#5461] -[visit_exp dim#5461] -[visit_id dim#5461] -[visit_exp i#26572] -[visit_id i#26572] -[visit_exp ((Fnn_2 : Fnn <: lanetype), `%`_dim{i#26579}(M_2))] +[visit_exp `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))] +[visit_exp ((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))] [visit_exp (Fnn_2 : Fnn <: lanetype)] [visit_exp Fnn_2] [visit_id Fnn_2] -[visit_exp `%`_dim{i#26579}(M_2)] -[visit_exp i#26579] -[visit_id i#26579] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] -[visit_exp `DEMOTE`_vcvtop__{zero#125}(`ZERO`_zero)] -[visit_exp zero#125] -[visit_id zero#125] +[visit_exp `DEMOTE`_vcvtop__(`ZERO`_zero)] [visit_exp (`ZERO`_zero)] [visit_exp `ZERO`_zero] [visit_exp ()] @@ -45025,40 +38207,24 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id c_1] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{lanetype#5449 : lanetype, dim#5449 : dim, i#26560 : nat, Fnn_1 : Fnn, i#26567 : nat, M_1 : M, lanetype#5461 : lanetype, dim#5461 : dim, i#26572 : nat, Fnn_2 : Fnn, i#26579 : nat, M_2 : M, zero#125 : zero, c_1 : lane_($lanetype(`%X%`_shape{lanetype#5449, dim#5449, i#26560}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26567}(M_1)))), `c*` : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))*}(`%X%`_shape{lanetype#5449, dim#5449, i#26560}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26567}(M_1)), `%X%`_shape{lanetype#5461, dim#5461, i#26572}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#26579}(M_2)), `DEMOTE`_vcvtop__{zero#125}(`ZERO`_zero), c_1) = c*{c <- `c*`} + 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*`} -- if (c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)) -[check_dims] Fnn_1 Fnn_2 M_1 M_2 c c_1 dim#5536 dim#5548 i#26683 i#26690 i#26695 i#26702 lanetype#5536 lanetype#5548 -[visit_exp `%X%`_shape{lanetype#5536, dim#5536, i#26683}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26690}(M_1))] -[visit_exp lanetype#5536] -[visit_id lanetype#5536] -[visit_exp dim#5536] -[visit_id dim#5536] -[visit_exp i#26683] -[visit_id i#26683] -[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26690}(M_1))] +[check_dims] Fnn_1 Fnn_2 M_1 M_2 c c_1 +[visit_exp `%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] +[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] [visit_exp (Fnn_1 : Fnn <: lanetype)] [visit_exp Fnn_1] [visit_id Fnn_1] -[visit_exp `%`_dim{i#26690}(M_1)] -[visit_exp i#26690] -[visit_id i#26690] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] -[visit_exp `%X%`_shape{lanetype#5548, dim#5548, i#26695}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#26702}(M_2))] -[visit_exp lanetype#5548] -[visit_id lanetype#5548] -[visit_exp dim#5548] -[visit_id dim#5548] -[visit_exp i#26695] -[visit_id i#26695] -[visit_exp ((Fnn_2 : Fnn <: lanetype), `%`_dim{i#26702}(M_2))] +[visit_exp `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))] +[visit_exp ((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))] [visit_exp (Fnn_2 : Fnn <: lanetype)] [visit_exp Fnn_2] [visit_id Fnn_2] -[visit_exp `%`_dim{i#26702}(M_2)] -[visit_exp i#26702] -[visit_id i#26702] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] @@ -45098,38 +38264,22 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id c_1] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{lanetype#5536 : lanetype, dim#5536 : dim, i#26683 : nat, Fnn_1 : Fnn, i#26690 : nat, M_1 : M, lanetype#5548 : lanetype, dim#5548 : dim, i#26695 : nat, Fnn_2 : Fnn, i#26702 : nat, M_2 : M, c_1 : lane_($lanetype(`%X%`_shape{lanetype#5536, dim#5536, i#26683}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26690}(M_1)))), `c*` : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))*}(`%X%`_shape{lanetype#5536, dim#5536, i#26683}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26690}(M_1)), `%X%`_shape{lanetype#5548, dim#5548, i#26695}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#26702}(M_2)), `PROMOTELOW`_vcvtop__, c_1) = c*{c <- `c*`} + 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*`} -- if (c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)) -[check_dims] Lnn_1 Lnn_2 M c c_1 dim#5623 dim#5635 dim#5671 dim#5683 dim#5711 dim#5723 dim#5751 dim#5867 dim#5879 dim#5914 i#26806 i#26813 i#26818 i#26825 i#26866 i#26873 i#26878 i#26885 i#26906 i#26913 i#26918 i#26925 i#26946 i#26953 i#27120 i#27127 i#27132 i#27139 i#27181 i#27188 lanetype#5623 lanetype#5635 lanetype#5671 lanetype#5683 lanetype#5711 lanetype#5723 lanetype#5751 lanetype#5867 lanetype#5879 lanetype#5914 v v_1 vcvtop -[visit_exp `%X%`_shape{lanetype#5623, dim#5623, i#26806}(Lnn_1, `%`_dim{i#26813}(M))] -[visit_exp lanetype#5623] -[visit_id lanetype#5623] -[visit_exp dim#5623] -[visit_id dim#5623] -[visit_exp i#26806] -[visit_id i#26806] -[visit_exp (Lnn_1, `%`_dim{i#26813}(M))] +[check_dims] Lnn_1 Lnn_2 M c c_1 v v_1 vcvtop +[visit_exp `%X%`_shape(Lnn_1, `%`_dim(M))] +[visit_exp (Lnn_1, `%`_dim(M))] [visit_exp Lnn_1] [visit_id Lnn_1] -[visit_exp `%`_dim{i#26813}(M)] -[visit_exp i#26813] -[visit_id i#26813] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] -[visit_exp `%X%`_shape{lanetype#5635, dim#5635, i#26818}(Lnn_2, `%`_dim{i#26825}(M))] -[visit_exp lanetype#5635] -[visit_id lanetype#5635] -[visit_exp dim#5635] -[visit_id dim#5635] -[visit_exp i#26818] -[visit_id i#26818] -[visit_exp (Lnn_2, `%`_dim{i#26825}(M))] +[visit_exp `%X%`_shape(Lnn_2, `%`_dim(M))] +[visit_exp (Lnn_2, `%`_dim(M))] [visit_exp Lnn_2] [visit_id Lnn_2] -[visit_exp `%`_dim{i#26825}(M)] -[visit_exp i#26825] -[visit_id i#26825] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -45139,82 +38289,50 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_1] [visit_exp v] [visit_id v] -[visit_exp (($halfop(`%X%`_shape{lanetype#5671, dim#5671, i#26866}(Lnn_1, `%`_dim{i#26873}(M)), `%X%`_shape{lanetype#5683, dim#5683, i#26878}(Lnn_2, `%`_dim{i#26885}(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape{lanetype#5711, dim#5711, i#26906}(Lnn_1, `%`_dim{i#26913}(M)), `%X%`_shape{lanetype#5723, dim#5723, i#26918}(Lnn_2, `%`_dim{i#26925}(M)), vcvtop) = ?()))] -[visit_exp ($halfop(`%X%`_shape{lanetype#5671, dim#5671, i#26866}(Lnn_1, `%`_dim{i#26873}(M)), `%X%`_shape{lanetype#5683, dim#5683, i#26878}(Lnn_2, `%`_dim{i#26885}(M)), vcvtop) = ?())] -[visit_exp $halfop(`%X%`_shape{lanetype#5671, dim#5671, i#26866}(Lnn_1, `%`_dim{i#26873}(M)), `%X%`_shape{lanetype#5683, dim#5683, i#26878}(Lnn_2, `%`_dim{i#26885}(M)), vcvtop)] -[visit_exp `%X%`_shape{lanetype#5671, dim#5671, i#26866}(Lnn_1, `%`_dim{i#26873}(M))] -[visit_exp lanetype#5671] -[visit_id lanetype#5671] -[visit_exp dim#5671] -[visit_id dim#5671] -[visit_exp i#26866] -[visit_id i#26866] -[visit_exp (Lnn_1, `%`_dim{i#26873}(M))] +[visit_exp (($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) = ?()))] +[visit_exp ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())] +[visit_exp $halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop)] +[visit_exp `%X%`_shape(Lnn_1, `%`_dim(M))] +[visit_exp (Lnn_1, `%`_dim(M))] [visit_exp Lnn_1] [visit_id Lnn_1] not free -[visit_exp `%`_dim{i#26873}(M)] -[visit_exp i#26873] -[visit_id i#26873] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free -[visit_exp `%X%`_shape{lanetype#5683, dim#5683, i#26878}(Lnn_2, `%`_dim{i#26885}(M))] -[visit_exp lanetype#5683] -[visit_id lanetype#5683] -[visit_exp dim#5683] -[visit_id dim#5683] -[visit_exp i#26878] -[visit_id i#26878] -[visit_exp (Lnn_2, `%`_dim{i#26885}(M))] +[visit_exp `%X%`_shape(Lnn_2, `%`_dim(M))] +[visit_exp (Lnn_2, `%`_dim(M))] [visit_exp Lnn_2] [visit_id Lnn_2] not free -[visit_exp `%`_dim{i#26885}(M)] -[visit_exp i#26885] -[visit_id i#26885] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free [visit_exp vcvtop] [visit_id vcvtop] not free [visit_exp ?()] -[visit_exp ($zeroop(`%X%`_shape{lanetype#5711, dim#5711, i#26906}(Lnn_1, `%`_dim{i#26913}(M)), `%X%`_shape{lanetype#5723, dim#5723, i#26918}(Lnn_2, `%`_dim{i#26925}(M)), vcvtop) = ?())] -[visit_exp $zeroop(`%X%`_shape{lanetype#5711, dim#5711, i#26906}(Lnn_1, `%`_dim{i#26913}(M)), `%X%`_shape{lanetype#5723, dim#5723, i#26918}(Lnn_2, `%`_dim{i#26925}(M)), vcvtop)] -[visit_exp `%X%`_shape{lanetype#5711, dim#5711, i#26906}(Lnn_1, `%`_dim{i#26913}(M))] -[visit_exp lanetype#5711] -[visit_id lanetype#5711] -[visit_exp dim#5711] -[visit_id dim#5711] -[visit_exp i#26906] -[visit_id i#26906] -[visit_exp (Lnn_1, `%`_dim{i#26913}(M))] +[visit_exp ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())] +[visit_exp $zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop)] +[visit_exp `%X%`_shape(Lnn_1, `%`_dim(M))] +[visit_exp (Lnn_1, `%`_dim(M))] [visit_exp Lnn_1] [visit_id Lnn_1] not free -[visit_exp `%`_dim{i#26913}(M)] -[visit_exp i#26913] -[visit_id i#26913] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free -[visit_exp `%X%`_shape{lanetype#5723, dim#5723, i#26918}(Lnn_2, `%`_dim{i#26925}(M))] -[visit_exp lanetype#5723] -[visit_id lanetype#5723] -[visit_exp dim#5723] -[visit_id dim#5723] -[visit_exp i#26918] -[visit_id i#26918] -[visit_exp (Lnn_2, `%`_dim{i#26925}(M))] +[visit_exp `%X%`_shape(Lnn_2, `%`_dim(M))] +[visit_exp (Lnn_2, `%`_dim(M))] [visit_exp Lnn_2] [visit_id Lnn_2] not free -[visit_exp `%`_dim{i#26925}(M)] -[visit_exp i#26925] -[visit_id i#26925] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free [visit_exp vcvtop] [visit_id vcvtop] not free [visit_exp ?()] -[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#5751, dim#5751, i#26946}(Lnn_1, `%`_dim{i#26953}(M)), v_1))] +[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1))] [visit_exp c_1*{c_1 <- `c_1*`}] [scope_enter c_1] [visit_exp c_1] @@ -45224,26 +38342,18 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_exp `c_1*`] [visit_id c_1*] no dims [visit_id c_1*] -[visit_exp $lanes_(`%X%`_shape{lanetype#5751, dim#5751, i#26946}(Lnn_1, `%`_dim{i#26953}(M)), v_1)] -[visit_exp `%X%`_shape{lanetype#5751, dim#5751, i#26946}(Lnn_1, `%`_dim{i#26953}(M))] -[visit_exp lanetype#5751] -[visit_id lanetype#5751] -[visit_exp dim#5751] -[visit_id dim#5751] -[visit_exp i#26946] -[visit_id i#26946] -[visit_exp (Lnn_1, `%`_dim{i#26953}(M))] +[visit_exp $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1)] +[visit_exp `%X%`_shape(Lnn_1, `%`_dim(M))] +[visit_exp (Lnn_1, `%`_dim(M))] [visit_exp Lnn_1] [visit_id Lnn_1] not free -[visit_exp `%`_dim{i#26953}(M)] -[visit_exp i#26953] -[visit_id i#26953] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free [visit_exp v_1] [visit_id v_1] not free -[visit_exp (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape{lanetype#5867, dim#5867, i#27120}(Lnn_1, `%`_dim{i#27127}(M)), `%X%`_shape{lanetype#5879, dim#5879, i#27132}(Lnn_2, `%`_dim{i#27139}(M)), vcvtop, c_1)*{c_1 <- `c_1*`, dim#5867 <- `dim#5867*`, dim#5879 <- `dim#5879*`, i#27120 <- `i#27120*`, i#27127 <- `i#27127*`, i#27132 <- `i#27132*`, i#27139 <- `i#27139*`, lanetype#5867 <- `lanetype#5867*`, lanetype#5879 <- `lanetype#5879*`}))] +[visit_exp (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*`}))] [visit_exp c*{c <- `c*`}*{`c*` <- `c**`}] [scope_enter c*] [visit_exp c*{c <- `c*`}] @@ -45261,49 +38371,25 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_exp `c**`] [visit_id c**] no dims [visit_id c**] -[visit_exp $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape{lanetype#5867, dim#5867, i#27120}(Lnn_1, `%`_dim{i#27127}(M)), `%X%`_shape{lanetype#5879, dim#5879, i#27132}(Lnn_2, `%`_dim{i#27139}(M)), vcvtop, c_1)*{c_1 <- `c_1*`, dim#5867 <- `dim#5867*`, dim#5879 <- `dim#5879*`, i#27120 <- `i#27120*`, i#27127 <- `i#27127*`, i#27132 <- `i#27132*`, i#27139 <- `i#27139*`, lanetype#5867 <- `lanetype#5867*`, lanetype#5879 <- `lanetype#5879*`})] +[visit_exp $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*`})] [visit_exp Lnn_2] [visit_id Lnn_2] not free -[visit_exp $lcvtop__(`%X%`_shape{lanetype#5867, dim#5867, i#27120}(Lnn_1, `%`_dim{i#27127}(M)), `%X%`_shape{lanetype#5879, dim#5879, i#27132}(Lnn_2, `%`_dim{i#27139}(M)), vcvtop, c_1)*{c_1 <- `c_1*`, dim#5867 <- `dim#5867*`, dim#5879 <- `dim#5879*`, i#27120 <- `i#27120*`, i#27127 <- `i#27127*`, i#27132 <- `i#27132*`, i#27139 <- `i#27139*`, lanetype#5867 <- `lanetype#5867*`, lanetype#5879 <- `lanetype#5879*`}] +[visit_exp $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`}] [scope_enter c_1] -[scope_enter dim#5867] -[scope_enter dim#5879] -[scope_enter i#27120] -[scope_enter i#27127] -[scope_enter i#27132] -[scope_enter i#27139] -[scope_enter lanetype#5867] -[scope_enter lanetype#5879] -[visit_exp $lcvtop__(`%X%`_shape{lanetype#5867, dim#5867, i#27120}(Lnn_1, `%`_dim{i#27127}(M)), `%X%`_shape{lanetype#5879, dim#5879, i#27132}(Lnn_2, `%`_dim{i#27139}(M)), vcvtop, c_1)] -[visit_exp `%X%`_shape{lanetype#5867, dim#5867, i#27120}(Lnn_1, `%`_dim{i#27127}(M))] -[visit_exp lanetype#5867] -[visit_id lanetype#5867] not free -[visit_exp dim#5867] -[visit_id dim#5867] not free -[visit_exp i#27120] -[visit_id i#27120] not free -[visit_exp (Lnn_1, `%`_dim{i#27127}(M))] +[visit_exp $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)] +[visit_exp `%X%`_shape(Lnn_1, `%`_dim(M))] +[visit_exp (Lnn_1, `%`_dim(M))] [visit_exp Lnn_1] [visit_id Lnn_1] not free -[visit_exp `%`_dim{i#27127}(M)] -[visit_exp i#27127] -[visit_id i#27127] not free +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free -[visit_exp `%X%`_shape{lanetype#5879, dim#5879, i#27132}(Lnn_2, `%`_dim{i#27139}(M))] -[visit_exp lanetype#5879] -[visit_id lanetype#5879] not free -[visit_exp dim#5879] -[visit_id dim#5879] not free -[visit_exp i#27132] -[visit_id i#27132] not free -[visit_exp (Lnn_2, `%`_dim{i#27139}(M))] +[visit_exp `%X%`_shape(Lnn_2, `%`_dim(M))] +[visit_exp (Lnn_2, `%`_dim(M))] [visit_exp Lnn_2] [visit_id Lnn_2] not free -[visit_exp `%`_dim{i#27139}(M)] -[visit_exp i#27139] -[visit_id i#27139] not free +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -45312,73 +38398,21 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_exp c_1] [visit_id c_1] not free [visit_id c_1] not free -[visit_id dim#5867] not free -[visit_id dim#5879] not free -[visit_id i#27120] not free -[visit_id i#27127] not free -[visit_id i#27132] not free -[visit_id i#27139] not free -[visit_id lanetype#5867] not free -[visit_id lanetype#5879] not free -[scope_exit lanetype#5879] -[scope_exit lanetype#5867] -[scope_exit i#27139] -[scope_exit i#27132] -[scope_exit i#27127] -[scope_exit i#27120] -[scope_exit dim#5879] -[scope_exit dim#5867] [scope_exit c_1] [visit_exp `c_1*`] [visit_id c_1*] not free [visit_id c_1*] no dims -[visit_exp `dim#5867*`] -[visit_id dim#5867*] no dims -[visit_id dim#5867*] -[visit_exp `dim#5879*`] -[visit_id dim#5879*] no dims -[visit_id dim#5879*] -[visit_exp `i#27120*`] -[visit_id i#27120*] no dims -[visit_id i#27120*] -[visit_exp `i#27127*`] -[visit_id i#27127*] no dims -[visit_id i#27127*] -[visit_exp `i#27132*`] -[visit_id i#27132*] no dims -[visit_id i#27132*] -[visit_exp `i#27139*`] -[visit_id i#27139*] no dims -[visit_id i#27139*] -[visit_exp `lanetype#5867*`] -[visit_id lanetype#5867*] no dims -[visit_id lanetype#5867*] -[visit_exp `lanetype#5879*`] -[visit_id lanetype#5879*] no dims -[visit_id lanetype#5879*] -[visit_exp (v <- $inv_lanes_(`%X%`_shape{lanetype#5914, dim#5914, i#27181}(Lnn_2, `%`_dim{i#27188}(M)), c*{c <- `c*`})*{`c*` <- `c**`, dim#5914 <- `dim#5914*`, i#27181 <- `i#27181*`, i#27188 <- `i#27188*`, lanetype#5914 <- `lanetype#5914*`})] +[visit_exp (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`})] [visit_exp v] [visit_id v] not free -[visit_exp $inv_lanes_(`%X%`_shape{lanetype#5914, dim#5914, i#27181}(Lnn_2, `%`_dim{i#27188}(M)), c*{c <- `c*`})*{`c*` <- `c**`, dim#5914 <- `dim#5914*`, i#27181 <- `i#27181*`, i#27188 <- `i#27188*`, lanetype#5914 <- `lanetype#5914*`}] +[visit_exp $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}] [scope_enter c*] -[scope_enter dim#5914] -[scope_enter i#27181] -[scope_enter i#27188] -[scope_enter lanetype#5914] -[visit_exp $inv_lanes_(`%X%`_shape{lanetype#5914, dim#5914, i#27181}(Lnn_2, `%`_dim{i#27188}(M)), c*{c <- `c*`})] -[visit_exp `%X%`_shape{lanetype#5914, dim#5914, i#27181}(Lnn_2, `%`_dim{i#27188}(M))] -[visit_exp lanetype#5914] -[visit_id lanetype#5914] not free -[visit_exp dim#5914] -[visit_id dim#5914] not free -[visit_exp i#27181] -[visit_id i#27181] not free -[visit_exp (Lnn_2, `%`_dim{i#27188}(M))] +[visit_exp $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})] +[visit_exp `%X%`_shape(Lnn_2, `%`_dim(M))] +[visit_exp (Lnn_2, `%`_dim(M))] [visit_exp Lnn_2] [visit_id Lnn_2] not free -[visit_exp `%`_dim{i#27188}(M)] -[visit_exp i#27188] -[visit_id i#27188] not free +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -45393,67 +38427,31 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id c*] no dims [visit_id c*] not free [visit_id c*] no dims -[visit_id dim#5914] not free -[visit_id i#27181] not free -[visit_id i#27188] not free -[visit_id lanetype#5914] not free -[scope_exit lanetype#5914] -[scope_exit i#27188] -[scope_exit i#27181] -[scope_exit dim#5914] [scope_exit c*] [visit_exp `c**`] [visit_id c**] not free [visit_id c**] no dims -[visit_exp `dim#5914*`] -[visit_id dim#5914*] no dims -[visit_id dim#5914*] -[visit_exp `i#27181*`] -[visit_id i#27181*] no dims -[visit_id i#27181*] -[visit_exp `i#27188*`] -[visit_id i#27188*] no dims -[visit_id i#27188*] -[visit_exp `lanetype#5914*`] -[visit_id lanetype#5914*] no dims -[visit_id lanetype#5914*] => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vcvtop__{lanetype#5623 : lanetype, dim#5623 : dim, i#26806 : nat, Lnn_1 : Lnn, i#26813 : nat, M : M, lanetype#5635 : lanetype, dim#5635 : dim, i#26818 : nat, Lnn_2 : Lnn, i#26825 : nat, vcvtop : vcvtop__(`%X%`_shape{lanetype#5623, dim#5623, i#26806}(Lnn_1, `%`_dim{i#26813}(M)), `%X%`_shape{lanetype#5635, dim#5635, i#26818}(Lnn_2, `%`_dim{i#26825}(M))), v_1 : vec_(`V128`_Vnn), v : vec_(`V128`_Vnn), lanetype#5671 : lanetype, dim#5671 : dim, i#26866 : nat, i#26873 : nat, lanetype#5683 : lanetype, dim#5683 : dim, i#26878 : nat, i#26885 : nat, lanetype#5711 : lanetype, dim#5711 : dim, i#26906 : nat, i#26913 : nat, lanetype#5723 : lanetype, dim#5723 : dim, i#26918 : nat, i#26925 : nat, lanetype#5751 : lanetype, dim#5751 : dim, i#26946 : nat, i#26953 : nat, `c**` : lane_(Lnn_2)**, `dim#5867*` : dim*, `dim#5879*` : dim*, `i#27120*` : nat*, `i#27127*` : nat*, `i#27132*` : nat*, `i#27139*` : nat*, `lanetype#5867*` : lanetype*, `lanetype#5879*` : lanetype*, `dim#5914*` : dim*, `i#27181*` : nat*, `i#27188*` : nat*, `lanetype#5914*` : lanetype*, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#5751, dim#5751, i#26946}(Lnn_1, `%`_dim{i#26953}(M))))*}(`%X%`_shape{lanetype#5623, dim#5623, i#26806}(Lnn_1, `%`_dim{i#26813}(M)), `%X%`_shape{lanetype#5635, dim#5635, i#26818}(Lnn_2, `%`_dim{i#26825}(M)), vcvtop, v_1) = v - -- if (($halfop(`%X%`_shape{lanetype#5671, dim#5671, i#26866}(Lnn_1, `%`_dim{i#26873}(M)), `%X%`_shape{lanetype#5683, dim#5683, i#26878}(Lnn_2, `%`_dim{i#26885}(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape{lanetype#5711, dim#5711, i#26906}(Lnn_1, `%`_dim{i#26913}(M)), `%X%`_shape{lanetype#5723, dim#5723, i#26918}(Lnn_2, `%`_dim{i#26925}(M)), vcvtop) = ?())) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#5751, dim#5751, i#26946}(Lnn_1, `%`_dim{i#26953}(M)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape{lanetype#5867, dim#5867, i#27120}(Lnn_1, `%`_dim{i#27127}(M)), `%X%`_shape{lanetype#5879, dim#5879, i#27132}(Lnn_2, `%`_dim{i#27139}(M)), vcvtop, c_1)*{c_1 <- `c_1*`, dim#5867 <- `dim#5867*`, dim#5879 <- `dim#5879*`, i#27120 <- `i#27120*`, i#27127 <- `i#27127*`, i#27132 <- `i#27132*`, i#27139 <- `i#27139*`, lanetype#5867 <- `lanetype#5867*`, lanetype#5879 <- `lanetype#5879*`})) - -- if (v <- $inv_lanes_(`%X%`_shape{lanetype#5914, dim#5914, i#27181}(Lnn_2, `%`_dim{i#27188}(M)), c*{c <- `c*`})*{`c*` <- `c**`, dim#5914 <- `dim#5914*`, i#27181 <- `i#27181*`, i#27188 <- `i#27188*`, lanetype#5914 <- `lanetype#5914*`}) -[check_dims] Lnn_1 Lnn_2 M_1 M_2 c c_1 dim#5937 dim#5949 dim#6025 dim#6037 dim#6065 dim#6181 dim#6193 dim#6228 half i#27248 i#27255 i#27260 i#27267 i#27348 i#27355 i#27360 i#27367 i#27388 i#27395 i#27562 i#27569 i#27574 i#27581 i#27623 i#27630 lanetype#5937 lanetype#5949 lanetype#6025 lanetype#6037 lanetype#6065 lanetype#6181 lanetype#6193 lanetype#6228 v v_1 vcvtop -[visit_exp `%X%`_shape{lanetype#5937, dim#5937, i#27248}(Lnn_1, `%`_dim{i#27255}(M_1))] -[visit_exp lanetype#5937] -[visit_id lanetype#5937] -[visit_exp dim#5937] -[visit_id dim#5937] -[visit_exp i#27248] -[visit_id i#27248] -[visit_exp (Lnn_1, `%`_dim{i#27255}(M_1))] + 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) = ?())) + -- 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*`})) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) +[check_dims] Lnn_1 Lnn_2 M_1 M_2 c c_1 half v v_1 vcvtop +[visit_exp `%X%`_shape(Lnn_1, `%`_dim(M_1))] +[visit_exp (Lnn_1, `%`_dim(M_1))] [visit_exp Lnn_1] [visit_id Lnn_1] -[visit_exp `%`_dim{i#27255}(M_1)] -[visit_exp i#27255] -[visit_id i#27255] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] -[visit_exp `%X%`_shape{lanetype#5949, dim#5949, i#27260}(Lnn_2, `%`_dim{i#27267}(M_2))] -[visit_exp lanetype#5949] -[visit_id lanetype#5949] -[visit_exp dim#5949] -[visit_id dim#5949] -[visit_exp i#27260] -[visit_id i#27260] -[visit_exp (Lnn_2, `%`_dim{i#27267}(M_2))] +[visit_exp `%X%`_shape(Lnn_2, `%`_dim(M_2))] +[visit_exp (Lnn_2, `%`_dim(M_2))] [visit_exp Lnn_2] [visit_id Lnn_2] -[visit_exp `%`_dim{i#27267}(M_2)] -[visit_exp i#27267] -[visit_id i#27267] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] @@ -45463,37 +38461,21 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_1] [visit_exp v] [visit_id v] -[visit_exp ($halfop(`%X%`_shape{lanetype#6025, dim#6025, i#27348}(Lnn_1, `%`_dim{i#27355}(M_1)), `%X%`_shape{lanetype#6037, dim#6037, i#27360}(Lnn_2, `%`_dim{i#27367}(M_2)), vcvtop) = ?(half))] -[visit_exp $halfop(`%X%`_shape{lanetype#6025, dim#6025, i#27348}(Lnn_1, `%`_dim{i#27355}(M_1)), `%X%`_shape{lanetype#6037, dim#6037, i#27360}(Lnn_2, `%`_dim{i#27367}(M_2)), vcvtop)] -[visit_exp `%X%`_shape{lanetype#6025, dim#6025, i#27348}(Lnn_1, `%`_dim{i#27355}(M_1))] -[visit_exp lanetype#6025] -[visit_id lanetype#6025] -[visit_exp dim#6025] -[visit_id dim#6025] -[visit_exp i#27348] -[visit_id i#27348] -[visit_exp (Lnn_1, `%`_dim{i#27355}(M_1))] +[visit_exp ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(half))] +[visit_exp $halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop)] +[visit_exp `%X%`_shape(Lnn_1, `%`_dim(M_1))] +[visit_exp (Lnn_1, `%`_dim(M_1))] [visit_exp Lnn_1] [visit_id Lnn_1] not free -[visit_exp `%`_dim{i#27355}(M_1)] -[visit_exp i#27355] -[visit_id i#27355] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] not free -[visit_exp `%X%`_shape{lanetype#6037, dim#6037, i#27360}(Lnn_2, `%`_dim{i#27367}(M_2))] -[visit_exp lanetype#6037] -[visit_id lanetype#6037] -[visit_exp dim#6037] -[visit_id dim#6037] -[visit_exp i#27360] -[visit_id i#27360] -[visit_exp (Lnn_2, `%`_dim{i#27367}(M_2))] +[visit_exp `%X%`_shape(Lnn_2, `%`_dim(M_2))] +[visit_exp (Lnn_2, `%`_dim(M_2))] [visit_exp Lnn_2] [visit_id Lnn_2] not free -[visit_exp `%`_dim{i#27367}(M_2)] -[visit_exp i#27367] -[visit_id i#27367] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] not free @@ -45502,7 +38484,7 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_exp ?(half)] [visit_exp half] [visit_id half] -[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#6065, dim#6065, i#27388}(Lnn_1, `%`_dim{i#27395}(M_1)), v_1)[$half(half, 0, M_2) : M_2])] +[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2])] [visit_exp c_1*{c_1 <- `c_1*`}] [scope_enter c_1] [visit_exp c_1] @@ -45512,21 +38494,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_exp `c_1*`] [visit_id c_1*] no dims [visit_id c_1*] -[visit_exp $lanes_(`%X%`_shape{lanetype#6065, dim#6065, i#27388}(Lnn_1, `%`_dim{i#27395}(M_1)), v_1)[$half(half, 0, M_2) : M_2]] -[visit_exp $lanes_(`%X%`_shape{lanetype#6065, dim#6065, i#27388}(Lnn_1, `%`_dim{i#27395}(M_1)), v_1)] -[visit_exp `%X%`_shape{lanetype#6065, dim#6065, i#27388}(Lnn_1, `%`_dim{i#27395}(M_1))] -[visit_exp lanetype#6065] -[visit_id lanetype#6065] -[visit_exp dim#6065] -[visit_id dim#6065] -[visit_exp i#27388] -[visit_id i#27388] -[visit_exp (Lnn_1, `%`_dim{i#27395}(M_1))] +[visit_exp $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2]] +[visit_exp $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)] +[visit_exp `%X%`_shape(Lnn_1, `%`_dim(M_1))] +[visit_exp (Lnn_1, `%`_dim(M_1))] [visit_exp Lnn_1] [visit_id Lnn_1] not free -[visit_exp `%`_dim{i#27395}(M_1)] -[visit_exp i#27395] -[visit_id i#27395] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] not free @@ -45540,7 +38514,7 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id M_2] not free [visit_exp M_2] [visit_id M_2] not free -[visit_exp (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape{lanetype#6181, dim#6181, i#27562}(Lnn_1, `%`_dim{i#27569}(M_1)), `%X%`_shape{lanetype#6193, dim#6193, i#27574}(Lnn_2, `%`_dim{i#27581}(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`, dim#6181 <- `dim#6181*`, dim#6193 <- `dim#6193*`, i#27562 <- `i#27562*`, i#27569 <- `i#27569*`, i#27574 <- `i#27574*`, i#27581 <- `i#27581*`, lanetype#6181 <- `lanetype#6181*`, lanetype#6193 <- `lanetype#6193*`}))] +[visit_exp (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*`}))] [visit_exp c*{c <- `c*`}*{`c*` <- `c**`}] [scope_enter c*] [visit_exp c*{c <- `c*`}] @@ -45558,49 +38532,25 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_exp `c**`] [visit_id c**] no dims [visit_id c**] -[visit_exp $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape{lanetype#6181, dim#6181, i#27562}(Lnn_1, `%`_dim{i#27569}(M_1)), `%X%`_shape{lanetype#6193, dim#6193, i#27574}(Lnn_2, `%`_dim{i#27581}(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`, dim#6181 <- `dim#6181*`, dim#6193 <- `dim#6193*`, i#27562 <- `i#27562*`, i#27569 <- `i#27569*`, i#27574 <- `i#27574*`, i#27581 <- `i#27581*`, lanetype#6181 <- `lanetype#6181*`, lanetype#6193 <- `lanetype#6193*`})] +[visit_exp $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*`})] [visit_exp Lnn_2] [visit_id Lnn_2] not free -[visit_exp $lcvtop__(`%X%`_shape{lanetype#6181, dim#6181, i#27562}(Lnn_1, `%`_dim{i#27569}(M_1)), `%X%`_shape{lanetype#6193, dim#6193, i#27574}(Lnn_2, `%`_dim{i#27581}(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`, dim#6181 <- `dim#6181*`, dim#6193 <- `dim#6193*`, i#27562 <- `i#27562*`, i#27569 <- `i#27569*`, i#27574 <- `i#27574*`, i#27581 <- `i#27581*`, lanetype#6181 <- `lanetype#6181*`, lanetype#6193 <- `lanetype#6193*`}] +[visit_exp $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`}] [scope_enter c_1] -[scope_enter dim#6181] -[scope_enter dim#6193] -[scope_enter i#27562] -[scope_enter i#27569] -[scope_enter i#27574] -[scope_enter i#27581] -[scope_enter lanetype#6181] -[scope_enter lanetype#6193] -[visit_exp $lcvtop__(`%X%`_shape{lanetype#6181, dim#6181, i#27562}(Lnn_1, `%`_dim{i#27569}(M_1)), `%X%`_shape{lanetype#6193, dim#6193, i#27574}(Lnn_2, `%`_dim{i#27581}(M_2)), vcvtop, c_1)] -[visit_exp `%X%`_shape{lanetype#6181, dim#6181, i#27562}(Lnn_1, `%`_dim{i#27569}(M_1))] -[visit_exp lanetype#6181] -[visit_id lanetype#6181] not free -[visit_exp dim#6181] -[visit_id dim#6181] not free -[visit_exp i#27562] -[visit_id i#27562] not free -[visit_exp (Lnn_1, `%`_dim{i#27569}(M_1))] +[visit_exp $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)] +[visit_exp `%X%`_shape(Lnn_1, `%`_dim(M_1))] +[visit_exp (Lnn_1, `%`_dim(M_1))] [visit_exp Lnn_1] [visit_id Lnn_1] not free -[visit_exp `%`_dim{i#27569}(M_1)] -[visit_exp i#27569] -[visit_id i#27569] not free +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] not free -[visit_exp `%X%`_shape{lanetype#6193, dim#6193, i#27574}(Lnn_2, `%`_dim{i#27581}(M_2))] -[visit_exp lanetype#6193] -[visit_id lanetype#6193] not free -[visit_exp dim#6193] -[visit_id dim#6193] not free -[visit_exp i#27574] -[visit_id i#27574] not free -[visit_exp (Lnn_2, `%`_dim{i#27581}(M_2))] +[visit_exp `%X%`_shape(Lnn_2, `%`_dim(M_2))] +[visit_exp (Lnn_2, `%`_dim(M_2))] [visit_exp Lnn_2] [visit_id Lnn_2] not free -[visit_exp `%`_dim{i#27581}(M_2)] -[visit_exp i#27581] -[visit_id i#27581] not free +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] not free @@ -45609,73 +38559,21 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_exp c_1] [visit_id c_1] not free [visit_id c_1] not free -[visit_id dim#6181] not free -[visit_id dim#6193] not free -[visit_id i#27562] not free -[visit_id i#27569] not free -[visit_id i#27574] not free -[visit_id i#27581] not free -[visit_id lanetype#6181] not free -[visit_id lanetype#6193] not free -[scope_exit lanetype#6193] -[scope_exit lanetype#6181] -[scope_exit i#27581] -[scope_exit i#27574] -[scope_exit i#27569] -[scope_exit i#27562] -[scope_exit dim#6193] -[scope_exit dim#6181] [scope_exit c_1] [visit_exp `c_1*`] [visit_id c_1*] not free [visit_id c_1*] no dims -[visit_exp `dim#6181*`] -[visit_id dim#6181*] no dims -[visit_id dim#6181*] -[visit_exp `dim#6193*`] -[visit_id dim#6193*] no dims -[visit_id dim#6193*] -[visit_exp `i#27562*`] -[visit_id i#27562*] no dims -[visit_id i#27562*] -[visit_exp `i#27569*`] -[visit_id i#27569*] no dims -[visit_id i#27569*] -[visit_exp `i#27574*`] -[visit_id i#27574*] no dims -[visit_id i#27574*] -[visit_exp `i#27581*`] -[visit_id i#27581*] no dims -[visit_id i#27581*] -[visit_exp `lanetype#6181*`] -[visit_id lanetype#6181*] no dims -[visit_id lanetype#6181*] -[visit_exp `lanetype#6193*`] -[visit_id lanetype#6193*] no dims -[visit_id lanetype#6193*] -[visit_exp (v <- $inv_lanes_(`%X%`_shape{lanetype#6228, dim#6228, i#27623}(Lnn_2, `%`_dim{i#27630}(M_2)), c*{c <- `c*`})*{`c*` <- `c**`, dim#6228 <- `dim#6228*`, i#27623 <- `i#27623*`, i#27630 <- `i#27630*`, lanetype#6228 <- `lanetype#6228*`})] +[visit_exp (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`})] [visit_exp v] [visit_id v] not free -[visit_exp $inv_lanes_(`%X%`_shape{lanetype#6228, dim#6228, i#27623}(Lnn_2, `%`_dim{i#27630}(M_2)), c*{c <- `c*`})*{`c*` <- `c**`, dim#6228 <- `dim#6228*`, i#27623 <- `i#27623*`, i#27630 <- `i#27630*`, lanetype#6228 <- `lanetype#6228*`}] +[visit_exp $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}] [scope_enter c*] -[scope_enter dim#6228] -[scope_enter i#27623] -[scope_enter i#27630] -[scope_enter lanetype#6228] -[visit_exp $inv_lanes_(`%X%`_shape{lanetype#6228, dim#6228, i#27623}(Lnn_2, `%`_dim{i#27630}(M_2)), c*{c <- `c*`})] -[visit_exp `%X%`_shape{lanetype#6228, dim#6228, i#27623}(Lnn_2, `%`_dim{i#27630}(M_2))] -[visit_exp lanetype#6228] -[visit_id lanetype#6228] not free -[visit_exp dim#6228] -[visit_id dim#6228] not free -[visit_exp i#27623] -[visit_id i#27623] not free -[visit_exp (Lnn_2, `%`_dim{i#27630}(M_2))] +[visit_exp $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})] +[visit_exp `%X%`_shape(Lnn_2, `%`_dim(M_2))] +[visit_exp (Lnn_2, `%`_dim(M_2))] [visit_exp Lnn_2] [visit_id Lnn_2] not free -[visit_exp `%`_dim{i#27630}(M_2)] -[visit_exp i#27630] -[visit_id i#27630] not free +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] not free @@ -45690,67 +38588,31 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id c*] no dims [visit_id c*] not free [visit_id c*] no dims -[visit_id dim#6228] not free -[visit_id i#27623] not free -[visit_id i#27630] not free -[visit_id lanetype#6228] not free -[scope_exit lanetype#6228] -[scope_exit i#27630] -[scope_exit i#27623] -[scope_exit dim#6228] [scope_exit c*] [visit_exp `c**`] [visit_id c**] not free [visit_id c**] no dims -[visit_exp `dim#6228*`] -[visit_id dim#6228*] no dims -[visit_id dim#6228*] -[visit_exp `i#27623*`] -[visit_id i#27623*] no dims -[visit_id i#27623*] -[visit_exp `i#27630*`] -[visit_id i#27630*] no dims -[visit_id i#27630*] -[visit_exp `lanetype#6228*`] -[visit_id lanetype#6228*] no dims -[visit_id lanetype#6228*] => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vcvtop__{lanetype#5937 : lanetype, dim#5937 : dim, i#27248 : nat, Lnn_1 : Lnn, i#27255 : nat, M_1 : M, lanetype#5949 : lanetype, dim#5949 : dim, i#27260 : nat, Lnn_2 : Lnn, i#27267 : nat, M_2 : M, vcvtop : vcvtop__(`%X%`_shape{lanetype#5937, dim#5937, i#27248}(Lnn_1, `%`_dim{i#27255}(M_1)), `%X%`_shape{lanetype#5949, dim#5949, i#27260}(Lnn_2, `%`_dim{i#27267}(M_2))), v_1 : vec_(`V128`_Vnn), v : vec_(`V128`_Vnn), lanetype#6025 : lanetype, dim#6025 : dim, i#27348 : nat, i#27355 : nat, lanetype#6037 : lanetype, dim#6037 : dim, i#27360 : nat, i#27367 : nat, half : half, lanetype#6065 : lanetype, dim#6065 : dim, i#27388 : nat, i#27395 : nat, `c**` : lane_(Lnn_2)**, `dim#6181*` : dim*, `dim#6193*` : dim*, `i#27562*` : nat*, `i#27569*` : nat*, `i#27574*` : nat*, `i#27581*` : nat*, `lanetype#6181*` : lanetype*, `lanetype#6193*` : lanetype*, `dim#6228*` : dim*, `i#27623*` : nat*, `i#27630*` : nat*, `lanetype#6228*` : lanetype*, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#6065, dim#6065, i#27388}(Lnn_1, `%`_dim{i#27395}(M_1))))*}(`%X%`_shape{lanetype#5937, dim#5937, i#27248}(Lnn_1, `%`_dim{i#27255}(M_1)), `%X%`_shape{lanetype#5949, dim#5949, i#27260}(Lnn_2, `%`_dim{i#27267}(M_2)), vcvtop, v_1) = v - -- if ($halfop(`%X%`_shape{lanetype#6025, dim#6025, i#27348}(Lnn_1, `%`_dim{i#27355}(M_1)), `%X%`_shape{lanetype#6037, dim#6037, i#27360}(Lnn_2, `%`_dim{i#27367}(M_2)), vcvtop) = ?(half)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#6065, dim#6065, i#27388}(Lnn_1, `%`_dim{i#27395}(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{lanetype#6181, dim#6181, i#27562}(Lnn_1, `%`_dim{i#27569}(M_1)), `%X%`_shape{lanetype#6193, dim#6193, i#27574}(Lnn_2, `%`_dim{i#27581}(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`, dim#6181 <- `dim#6181*`, dim#6193 <- `dim#6193*`, i#27562 <- `i#27562*`, i#27569 <- `i#27569*`, i#27574 <- `i#27574*`, i#27581 <- `i#27581*`, lanetype#6181 <- `lanetype#6181*`, lanetype#6193 <- `lanetype#6193*`})) - -- if (v <- $inv_lanes_(`%X%`_shape{lanetype#6228, dim#6228, i#27623}(Lnn_2, `%`_dim{i#27630}(M_2)), c*{c <- `c*`})*{`c*` <- `c**`, dim#6228 <- `dim#6228*`, i#27623 <- `i#27623*`, i#27630 <- `i#27630*`, lanetype#6228 <- `lanetype#6228*`}) -[check_dims] Lnn_1 Lnn_2 M_1 M_2 c c_1 dim#6251 dim#6263 dim#6299 dim#6311 dim#6339 dim#6501 dim#6513 dim#6548 i#27690 i#27697 i#27702 i#27709 i#27750 i#27757 i#27762 i#27769 i#27790 i#27797 i#28022 i#28029 i#28034 i#28041 i#28083 i#28090 lanetype#6251 lanetype#6263 lanetype#6299 lanetype#6311 lanetype#6339 lanetype#6501 lanetype#6513 lanetype#6548 v v_1 vcvtop -[visit_exp `%X%`_shape{lanetype#6251, dim#6251, i#27690}(Lnn_1, `%`_dim{i#27697}(M_1))] -[visit_exp lanetype#6251] -[visit_id lanetype#6251] -[visit_exp dim#6251] -[visit_id dim#6251] -[visit_exp i#27690] -[visit_id i#27690] -[visit_exp (Lnn_1, `%`_dim{i#27697}(M_1))] + 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)) + -- 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*`})) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) +[check_dims] Lnn_1 Lnn_2 M_1 M_2 c c_1 v v_1 vcvtop +[visit_exp `%X%`_shape(Lnn_1, `%`_dim(M_1))] +[visit_exp (Lnn_1, `%`_dim(M_1))] [visit_exp Lnn_1] [visit_id Lnn_1] -[visit_exp `%`_dim{i#27697}(M_1)] -[visit_exp i#27697] -[visit_id i#27697] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] -[visit_exp `%X%`_shape{lanetype#6263, dim#6263, i#27702}(Lnn_2, `%`_dim{i#27709}(M_2))] -[visit_exp lanetype#6263] -[visit_id lanetype#6263] -[visit_exp dim#6263] -[visit_id dim#6263] -[visit_exp i#27702] -[visit_id i#27702] -[visit_exp (Lnn_2, `%`_dim{i#27709}(M_2))] +[visit_exp `%X%`_shape(Lnn_2, `%`_dim(M_2))] +[visit_exp (Lnn_2, `%`_dim(M_2))] [visit_exp Lnn_2] [visit_id Lnn_2] -[visit_exp `%`_dim{i#27709}(M_2)] -[visit_exp i#27709] -[visit_id i#27709] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] @@ -45760,37 +38622,21 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_1] [visit_exp v] [visit_id v] -[visit_exp ($zeroop(`%X%`_shape{lanetype#6299, dim#6299, i#27750}(Lnn_1, `%`_dim{i#27757}(M_1)), `%X%`_shape{lanetype#6311, dim#6311, i#27762}(Lnn_2, `%`_dim{i#27769}(M_2)), vcvtop) = ?(`ZERO`_zero))] -[visit_exp $zeroop(`%X%`_shape{lanetype#6299, dim#6299, i#27750}(Lnn_1, `%`_dim{i#27757}(M_1)), `%X%`_shape{lanetype#6311, dim#6311, i#27762}(Lnn_2, `%`_dim{i#27769}(M_2)), vcvtop)] -[visit_exp `%X%`_shape{lanetype#6299, dim#6299, i#27750}(Lnn_1, `%`_dim{i#27757}(M_1))] -[visit_exp lanetype#6299] -[visit_id lanetype#6299] -[visit_exp dim#6299] -[visit_id dim#6299] -[visit_exp i#27750] -[visit_id i#27750] -[visit_exp (Lnn_1, `%`_dim{i#27757}(M_1))] +[visit_exp ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(`ZERO`_zero))] +[visit_exp $zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop)] +[visit_exp `%X%`_shape(Lnn_1, `%`_dim(M_1))] +[visit_exp (Lnn_1, `%`_dim(M_1))] [visit_exp Lnn_1] [visit_id Lnn_1] not free -[visit_exp `%`_dim{i#27757}(M_1)] -[visit_exp i#27757] -[visit_id i#27757] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] not free -[visit_exp `%X%`_shape{lanetype#6311, dim#6311, i#27762}(Lnn_2, `%`_dim{i#27769}(M_2))] -[visit_exp lanetype#6311] -[visit_id lanetype#6311] -[visit_exp dim#6311] -[visit_id dim#6311] -[visit_exp i#27762] -[visit_id i#27762] -[visit_exp (Lnn_2, `%`_dim{i#27769}(M_2))] +[visit_exp `%X%`_shape(Lnn_2, `%`_dim(M_2))] +[visit_exp (Lnn_2, `%`_dim(M_2))] [visit_exp Lnn_2] [visit_id Lnn_2] not free -[visit_exp `%`_dim{i#27769}(M_2)] -[visit_exp i#27769] -[visit_id i#27769] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] not free @@ -45799,7 +38645,7 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_exp ?(`ZERO`_zero)] [visit_exp `ZERO`_zero] [visit_exp ()] -[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#6339, dim#6339, i#27790}(Lnn_1, `%`_dim{i#27797}(M_1)), v_1))] +[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1))] [visit_exp c_1*{c_1 <- `c_1*`}] [scope_enter c_1] [visit_exp c_1] @@ -45809,26 +38655,18 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_exp `c_1*`] [visit_id c_1*] no dims [visit_id c_1*] -[visit_exp $lanes_(`%X%`_shape{lanetype#6339, dim#6339, i#27790}(Lnn_1, `%`_dim{i#27797}(M_1)), v_1)] -[visit_exp `%X%`_shape{lanetype#6339, dim#6339, i#27790}(Lnn_1, `%`_dim{i#27797}(M_1))] -[visit_exp lanetype#6339] -[visit_id lanetype#6339] -[visit_exp dim#6339] -[visit_id dim#6339] -[visit_exp i#27790] -[visit_id i#27790] -[visit_exp (Lnn_1, `%`_dim{i#27797}(M_1))] +[visit_exp $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)] +[visit_exp `%X%`_shape(Lnn_1, `%`_dim(M_1))] +[visit_exp (Lnn_1, `%`_dim(M_1))] [visit_exp Lnn_1] [visit_id Lnn_1] not free -[visit_exp `%`_dim{i#27797}(M_1)] -[visit_exp i#27797] -[visit_id i#27797] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] not free [visit_exp v_1] [visit_id v_1] not free -[visit_exp (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape{lanetype#6501, dim#6501, i#28022}(Lnn_1, `%`_dim{i#28029}(M_1)), `%X%`_shape{lanetype#6513, dim#6513, i#28034}(Lnn_2, `%`_dim{i#28041}(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`, dim#6501 <- `dim#6501*`, dim#6513 <- `dim#6513*`, i#28022 <- `i#28022*`, i#28029 <- `i#28029*`, i#28034 <- `i#28034*`, i#28041 <- `i#28041*`, lanetype#6501 <- `lanetype#6501*`, lanetype#6513 <- `lanetype#6513*`} ++ [$zero(Lnn_2)]^M_1{}))] +[visit_exp (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{}))] [visit_exp c*{c <- `c*`}*{`c*` <- `c**`}] [scope_enter c*] [visit_exp c*{c <- `c*`}] @@ -45846,50 +38684,26 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_exp `c**`] [visit_id c**] no dims [visit_id c**] -[visit_exp $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape{lanetype#6501, dim#6501, i#28022}(Lnn_1, `%`_dim{i#28029}(M_1)), `%X%`_shape{lanetype#6513, dim#6513, i#28034}(Lnn_2, `%`_dim{i#28041}(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`, dim#6501 <- `dim#6501*`, dim#6513 <- `dim#6513*`, i#28022 <- `i#28022*`, i#28029 <- `i#28029*`, i#28034 <- `i#28034*`, i#28041 <- `i#28041*`, lanetype#6501 <- `lanetype#6501*`, lanetype#6513 <- `lanetype#6513*`} ++ [$zero(Lnn_2)]^M_1{})] +[visit_exp $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{})] [visit_exp Lnn_2] [visit_id Lnn_2] not free -[visit_exp $lcvtop__(`%X%`_shape{lanetype#6501, dim#6501, i#28022}(Lnn_1, `%`_dim{i#28029}(M_1)), `%X%`_shape{lanetype#6513, dim#6513, i#28034}(Lnn_2, `%`_dim{i#28041}(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`, dim#6501 <- `dim#6501*`, dim#6513 <- `dim#6513*`, i#28022 <- `i#28022*`, i#28029 <- `i#28029*`, i#28034 <- `i#28034*`, i#28041 <- `i#28041*`, lanetype#6501 <- `lanetype#6501*`, lanetype#6513 <- `lanetype#6513*`} ++ [$zero(Lnn_2)]^M_1{}] -[visit_exp $lcvtop__(`%X%`_shape{lanetype#6501, dim#6501, i#28022}(Lnn_1, `%`_dim{i#28029}(M_1)), `%X%`_shape{lanetype#6513, dim#6513, i#28034}(Lnn_2, `%`_dim{i#28041}(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`, dim#6501 <- `dim#6501*`, dim#6513 <- `dim#6513*`, i#28022 <- `i#28022*`, i#28029 <- `i#28029*`, i#28034 <- `i#28034*`, i#28041 <- `i#28041*`, lanetype#6501 <- `lanetype#6501*`, lanetype#6513 <- `lanetype#6513*`}] +[visit_exp $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{}] +[visit_exp $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`}] [scope_enter c_1] -[scope_enter dim#6501] -[scope_enter dim#6513] -[scope_enter i#28022] -[scope_enter i#28029] -[scope_enter i#28034] -[scope_enter i#28041] -[scope_enter lanetype#6501] -[scope_enter lanetype#6513] -[visit_exp $lcvtop__(`%X%`_shape{lanetype#6501, dim#6501, i#28022}(Lnn_1, `%`_dim{i#28029}(M_1)), `%X%`_shape{lanetype#6513, dim#6513, i#28034}(Lnn_2, `%`_dim{i#28041}(M_2)), vcvtop, c_1)] -[visit_exp `%X%`_shape{lanetype#6501, dim#6501, i#28022}(Lnn_1, `%`_dim{i#28029}(M_1))] -[visit_exp lanetype#6501] -[visit_id lanetype#6501] not free -[visit_exp dim#6501] -[visit_id dim#6501] not free -[visit_exp i#28022] -[visit_id i#28022] not free -[visit_exp (Lnn_1, `%`_dim{i#28029}(M_1))] +[visit_exp $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)] +[visit_exp `%X%`_shape(Lnn_1, `%`_dim(M_1))] +[visit_exp (Lnn_1, `%`_dim(M_1))] [visit_exp Lnn_1] [visit_id Lnn_1] not free -[visit_exp `%`_dim{i#28029}(M_1)] -[visit_exp i#28029] -[visit_id i#28029] not free +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] not free -[visit_exp `%X%`_shape{lanetype#6513, dim#6513, i#28034}(Lnn_2, `%`_dim{i#28041}(M_2))] -[visit_exp lanetype#6513] -[visit_id lanetype#6513] not free -[visit_exp dim#6513] -[visit_id dim#6513] not free -[visit_exp i#28034] -[visit_id i#28034] not free -[visit_exp (Lnn_2, `%`_dim{i#28041}(M_2))] +[visit_exp `%X%`_shape(Lnn_2, `%`_dim(M_2))] +[visit_exp (Lnn_2, `%`_dim(M_2))] [visit_exp Lnn_2] [visit_id Lnn_2] not free -[visit_exp `%`_dim{i#28041}(M_2)] -[visit_exp i#28041] -[visit_id i#28041] not free +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] not free @@ -45898,50 +38712,10 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_exp c_1] [visit_id c_1] not free [visit_id c_1] not free -[visit_id dim#6501] not free -[visit_id dim#6513] not free -[visit_id i#28022] not free -[visit_id i#28029] not free -[visit_id i#28034] not free -[visit_id i#28041] not free -[visit_id lanetype#6501] not free -[visit_id lanetype#6513] not free -[scope_exit lanetype#6513] -[scope_exit lanetype#6501] -[scope_exit i#28041] -[scope_exit i#28034] -[scope_exit i#28029] -[scope_exit i#28022] -[scope_exit dim#6513] -[scope_exit dim#6501] [scope_exit c_1] [visit_exp `c_1*`] [visit_id c_1*] not free [visit_id c_1*] no dims -[visit_exp `dim#6501*`] -[visit_id dim#6501*] no dims -[visit_id dim#6501*] -[visit_exp `dim#6513*`] -[visit_id dim#6513*] no dims -[visit_id dim#6513*] -[visit_exp `i#28022*`] -[visit_id i#28022*] no dims -[visit_id i#28022*] -[visit_exp `i#28029*`] -[visit_id i#28029*] no dims -[visit_id i#28029*] -[visit_exp `i#28034*`] -[visit_id i#28034*] no dims -[visit_id i#28034*] -[visit_exp `i#28041*`] -[visit_id i#28041*] no dims -[visit_id i#28041*] -[visit_exp `lanetype#6501*`] -[visit_id lanetype#6501*] no dims -[visit_id lanetype#6501*] -[visit_exp `lanetype#6513*`] -[visit_id lanetype#6513*] no dims -[visit_id lanetype#6513*] [visit_exp [$zero(Lnn_2)]^M_1{}] [visit_exp [$zero(Lnn_2)]] [visit_exp $zero(Lnn_2)] @@ -45949,29 +38723,17 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id Lnn_2] not free [visit_exp M_1] [visit_id M_1] not free -[visit_exp (v <- $inv_lanes_(`%X%`_shape{lanetype#6548, dim#6548, i#28083}(Lnn_2, `%`_dim{i#28090}(M_2)), c*{c <- `c*`})*{`c*` <- `c**`, dim#6548 <- `dim#6548*`, i#28083 <- `i#28083*`, i#28090 <- `i#28090*`, lanetype#6548 <- `lanetype#6548*`})] +[visit_exp (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`})] [visit_exp v] [visit_id v] not free -[visit_exp $inv_lanes_(`%X%`_shape{lanetype#6548, dim#6548, i#28083}(Lnn_2, `%`_dim{i#28090}(M_2)), c*{c <- `c*`})*{`c*` <- `c**`, dim#6548 <- `dim#6548*`, i#28083 <- `i#28083*`, i#28090 <- `i#28090*`, lanetype#6548 <- `lanetype#6548*`}] +[visit_exp $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}] [scope_enter c*] -[scope_enter dim#6548] -[scope_enter i#28083] -[scope_enter i#28090] -[scope_enter lanetype#6548] -[visit_exp $inv_lanes_(`%X%`_shape{lanetype#6548, dim#6548, i#28083}(Lnn_2, `%`_dim{i#28090}(M_2)), c*{c <- `c*`})] -[visit_exp `%X%`_shape{lanetype#6548, dim#6548, i#28083}(Lnn_2, `%`_dim{i#28090}(M_2))] -[visit_exp lanetype#6548] -[visit_id lanetype#6548] not free -[visit_exp dim#6548] -[visit_id dim#6548] not free -[visit_exp i#28083] -[visit_id i#28083] not free -[visit_exp (Lnn_2, `%`_dim{i#28090}(M_2))] +[visit_exp $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})] +[visit_exp `%X%`_shape(Lnn_2, `%`_dim(M_2))] +[visit_exp (Lnn_2, `%`_dim(M_2))] [visit_exp Lnn_2] [visit_id Lnn_2] not free -[visit_exp `%`_dim{i#28090}(M_2)] -[visit_exp i#28090] -[visit_id i#28090] not free +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] not free @@ -45986,69 +38748,33 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id c*] no dims [visit_id c*] not free [visit_id c*] no dims -[visit_id dim#6548] not free -[visit_id i#28083] not free -[visit_id i#28090] not free -[visit_id lanetype#6548] not free -[scope_exit lanetype#6548] -[scope_exit i#28090] -[scope_exit i#28083] -[scope_exit dim#6548] [scope_exit c*] [visit_exp `c**`] [visit_id c**] not free [visit_id c**] no dims -[visit_exp `dim#6548*`] -[visit_id dim#6548*] no dims -[visit_id dim#6548*] -[visit_exp `i#28083*`] -[visit_id i#28083*] no dims -[visit_id i#28083*] -[visit_exp `i#28090*`] -[visit_id i#28090*] no dims -[visit_id i#28090*] -[visit_exp `lanetype#6548*`] -[visit_id lanetype#6548*] no dims -[visit_id lanetype#6548*] => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vcvtop__{lanetype#6251 : lanetype, dim#6251 : dim, i#27690 : nat, Lnn_1 : Lnn, i#27697 : nat, M_1 : M, lanetype#6263 : lanetype, dim#6263 : dim, i#27702 : nat, Lnn_2 : Lnn, i#27709 : nat, M_2 : M, vcvtop : vcvtop__(`%X%`_shape{lanetype#6251, dim#6251, i#27690}(Lnn_1, `%`_dim{i#27697}(M_1)), `%X%`_shape{lanetype#6263, dim#6263, i#27702}(Lnn_2, `%`_dim{i#27709}(M_2))), v_1 : vec_(`V128`_Vnn), v : vec_(`V128`_Vnn), lanetype#6299 : lanetype, dim#6299 : dim, i#27750 : nat, i#27757 : nat, lanetype#6311 : lanetype, dim#6311 : dim, i#27762 : nat, i#27769 : nat, lanetype#6339 : lanetype, dim#6339 : dim, i#27790 : nat, i#27797 : nat, `c**` : lane_(Lnn_2)**, `dim#6501*` : dim*, `dim#6513*` : dim*, `i#28022*` : nat*, `i#28029*` : nat*, `i#28034*` : nat*, `i#28041*` : nat*, `lanetype#6501*` : lanetype*, `lanetype#6513*` : lanetype*, `dim#6548*` : dim*, `i#28083*` : nat*, `i#28090*` : nat*, `lanetype#6548*` : lanetype*, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#6339, dim#6339, i#27790}(Lnn_1, `%`_dim{i#27797}(M_1))))*}(`%X%`_shape{lanetype#6251, dim#6251, i#27690}(Lnn_1, `%`_dim{i#27697}(M_1)), `%X%`_shape{lanetype#6263, dim#6263, i#27702}(Lnn_2, `%`_dim{i#27709}(M_2)), vcvtop, v_1) = v - -- if ($zeroop(`%X%`_shape{lanetype#6299, dim#6299, i#27750}(Lnn_1, `%`_dim{i#27757}(M_1)), `%X%`_shape{lanetype#6311, dim#6311, i#27762}(Lnn_2, `%`_dim{i#27769}(M_2)), vcvtop) = ?(`ZERO`_zero)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#6339, dim#6339, i#27790}(Lnn_1, `%`_dim{i#27797}(M_1)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape{lanetype#6501, dim#6501, i#28022}(Lnn_1, `%`_dim{i#28029}(M_1)), `%X%`_shape{lanetype#6513, dim#6513, i#28034}(Lnn_2, `%`_dim{i#28041}(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`, dim#6501 <- `dim#6501*`, dim#6513 <- `dim#6513*`, i#28022 <- `i#28022*`, i#28029 <- `i#28029*`, i#28034 <- `i#28034*`, i#28041 <- `i#28041*`, lanetype#6501 <- `lanetype#6501*`, lanetype#6513 <- `lanetype#6513*`} ++ [$zero(Lnn_2)]^M_1{})) - -- if (v <- $inv_lanes_(`%X%`_shape{lanetype#6548, dim#6548, i#28083}(Lnn_2, `%`_dim{i#28090}(M_2)), c*{c <- `c*`})*{`c*` <- `c**`, dim#6548 <- `dim#6548*`, i#28083 <- `i#28083*`, i#28090 <- `i#28090*`, lanetype#6548 <- `lanetype#6548*`}) -[check_dims] Jnn_1 Jnn_2 M_1 M_2 c'_1 c'_2 c_1 c_2 dim#6571 dim#6583 dim#6595 dim#6620 dim#6647 i#28150 i#28157 i#28162 i#28169 i#28198 i#28205 i#28284 i#28291 i#28450 i#28457 lanetype#6571 lanetype#6583 lanetype#6595 lanetype#6620 lanetype#6647 sx v v_1 v_2 -[visit_exp `%X%`_shape{lanetype#6571, dim#6571, i#28150}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28157}(M_1))] -[visit_exp lanetype#6571] -[visit_id lanetype#6571] -[visit_exp dim#6571] -[visit_id dim#6571] -[visit_exp i#28150] -[visit_id i#28150] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28157}(M_1))] + 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)) + -- 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{})) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) +[check_dims] Jnn_1 Jnn_2 M_1 M_2 c'_1 c'_2 c_1 c_2 sx v v_1 v_2 +[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] [visit_exp (Jnn_1 : Jnn <: lanetype)] [visit_exp Jnn_1] [visit_id Jnn_1] -[visit_exp `%`_dim{i#28157}(M_1)] -[visit_exp i#28157] -[visit_id i#28157] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] -[visit_exp `%X%`_shape{lanetype#6583, dim#6583, i#28162}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28169}(M_2))] -[visit_exp lanetype#6583] -[visit_id lanetype#6583] -[visit_exp dim#6583] -[visit_id dim#6583] -[visit_exp i#28162] -[visit_id i#28162] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28169}(M_2))] +[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] [visit_exp (Jnn_2 : Jnn <: lanetype)] [visit_exp Jnn_2] [visit_id Jnn_2] -[visit_exp `%`_dim{i#28169}(M_2)] -[visit_exp i#28169] -[visit_id i#28169] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] @@ -46060,7 +38786,7 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id v_2] [visit_exp v] [visit_id v] -[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#6595, dim#6595, i#28198}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28205}(M_1)), v_1))] +[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1))] [visit_exp c_1*{c_1 <- `c_1*`}] [scope_enter c_1] [visit_exp c_1] @@ -46070,27 +38796,19 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_exp `c_1*`] [visit_id c_1*] no dims [visit_id c_1*] -[visit_exp $lanes_(`%X%`_shape{lanetype#6595, dim#6595, i#28198}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28205}(M_1)), v_1)] -[visit_exp `%X%`_shape{lanetype#6595, dim#6595, i#28198}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28205}(M_1))] -[visit_exp lanetype#6595] -[visit_id lanetype#6595] -[visit_exp dim#6595] -[visit_id dim#6595] -[visit_exp i#28198] -[visit_id i#28198] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28205}(M_1))] +[visit_exp $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)] +[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] [visit_exp (Jnn_1 : Jnn <: lanetype)] [visit_exp Jnn_1] [visit_id Jnn_1] not free -[visit_exp `%`_dim{i#28205}(M_1)] -[visit_exp i#28205] -[visit_id i#28205] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] not free [visit_exp v_1] [visit_id v_1] not free -[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#6620, dim#6620, i#28284}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28291}(M_1)), v_2))] +[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2))] [visit_exp c_2*{c_2 <- `c_2*`}] [scope_enter c_2] [visit_exp c_2] @@ -46100,21 +38818,13 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_exp `c_2*`] [visit_id c_2*] no dims [visit_id c_2*] -[visit_exp $lanes_(`%X%`_shape{lanetype#6620, dim#6620, i#28284}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28291}(M_1)), v_2)] -[visit_exp `%X%`_shape{lanetype#6620, dim#6620, i#28284}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28291}(M_1))] -[visit_exp lanetype#6620] -[visit_id lanetype#6620] -[visit_exp dim#6620] -[visit_id dim#6620] -[visit_exp i#28284] -[visit_id i#28284] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28291}(M_1))] +[visit_exp $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)] +[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] [visit_exp (Jnn_1 : Jnn <: lanetype)] [visit_exp Jnn_1] [visit_id Jnn_1] not free -[visit_exp `%`_dim{i#28291}(M_1)] -[visit_exp i#28291] -[visit_id i#28291] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] not free @@ -46180,24 +38890,16 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_exp `c_2*`] [visit_id c_2*] not free [visit_id c_2*] no dims -[visit_exp (v = $inv_lanes_(`%X%`_shape{lanetype#6647, dim#6647, i#28450}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28457}(M_2)), c'_1*{c'_1 <- `c'_1*`} ++ c'_2*{c'_2 <- `c'_2*`}))] +[visit_exp (v = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), c'_1*{c'_1 <- `c'_1*`} ++ c'_2*{c'_2 <- `c'_2*`}))] [visit_exp v] [visit_id v] not free -[visit_exp $inv_lanes_(`%X%`_shape{lanetype#6647, dim#6647, i#28450}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28457}(M_2)), c'_1*{c'_1 <- `c'_1*`} ++ c'_2*{c'_2 <- `c'_2*`})] -[visit_exp `%X%`_shape{lanetype#6647, dim#6647, i#28450}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28457}(M_2))] -[visit_exp lanetype#6647] -[visit_id lanetype#6647] -[visit_exp dim#6647] -[visit_id dim#6647] -[visit_exp i#28450] -[visit_id i#28450] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28457}(M_2))] +[visit_exp $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), c'_1*{c'_1 <- `c'_1*`} ++ c'_2*{c'_2 <- `c'_2*`})] +[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] [visit_exp (Jnn_2 : Jnn <: lanetype)] [visit_exp Jnn_2] [visit_id Jnn_2] not free -[visit_exp `%`_dim{i#28457}(M_2)] -[visit_exp i#28457] -[visit_id i#28457] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] not free @@ -46222,12 +38924,12 @@ DecD vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno [visit_id c'_2*] no dims => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{lanetype#6571 : lanetype, dim#6571 : dim, i#28150 : nat, Jnn_1 : Jnn, i#28157 : nat, M_1 : M, lanetype#6583 : lanetype, dim#6583 : dim, i#28162 : nat, Jnn_2 : Jnn, i#28169 : nat, M_2 : M, sx : sx, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), v : vec_(`V128`_Vnn), lanetype#6595 : lanetype, dim#6595 : dim, i#28198 : nat, i#28205 : nat, lanetype#6620 : lanetype, dim#6620 : dim, i#28284 : nat, i#28291 : nat, `c'_1*` : iN($lsize((Jnn_2 : Jnn <: lanetype)))*, `c'_2*` : iN($lsize((Jnn_2 : Jnn <: lanetype)))*, lanetype#6647 : lanetype, dim#6647 : dim, i#28450 : nat, i#28457 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#6595, dim#6595, i#28198}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28205}(M_1))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#6620, dim#6620, i#28284}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28291}(M_1))))*}(`%X%`_shape{lanetype#6571, dim#6571, i#28150}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28157}(M_1)), `%X%`_shape{lanetype#6583, dim#6583, i#28162}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28169}(M_2)), sx, v_1, v_2) = v - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#6595, dim#6595, i#28198}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28205}(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#6620, dim#6620, i#28284}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28291}(M_1)), v_2)) + 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 + -- 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, 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, c_2)*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape{lanetype#6647, dim#6647, i#28450}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28457}(M_2)), c'_1*{c'_1 <- `c'_1*`} ++ c'_2*{c'_2 <- `c'_2*`})) + -- if (v = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), c'_1*{c'_1 <- `c'_1*`} ++ c'_2*{c'_2 <- `c'_2*`})) [check_dims] N _ shape_1 shape_2 sx vec_ DecD ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN(N)*) : iN(N)*, sx : sx, vec_ : vec_(`V128`_Vnn)) : vec_(`V128`_Vnn) [visit_id shape_1] not free @@ -46244,38 +38946,22 @@ DecD ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN(N)*) : iN(N [visit_exp ()] [visit_exp `V128`_Vnn] [visit_exp ()] -[check_dims] Jnn_1 Jnn_2 M_1 M_2 c c'_1 c_1 dim#6690 dim#6702 dim#6714 dim#6740 i#28642 i#28649 i#28654 i#28661 i#28678 i#28685 i#28862 i#28869 lanetype#6690 lanetype#6702 lanetype#6714 lanetype#6740 sx v_1 -[visit_exp `%X%`_shape{lanetype#6690, dim#6690, i#28642}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28649}(M_1))] -[visit_exp lanetype#6690] -[visit_id lanetype#6690] -[visit_exp dim#6690] -[visit_id dim#6690] -[visit_exp i#28642] -[visit_id i#28642] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28649}(M_1))] +[check_dims] Jnn_1 Jnn_2 M_1 M_2 c c'_1 c_1 sx v_1 +[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] [visit_exp (Jnn_1 : Jnn <: lanetype)] [visit_exp Jnn_1] [visit_id Jnn_1] -[visit_exp `%`_dim{i#28649}(M_1)] -[visit_exp i#28649] -[visit_id i#28649] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] -[visit_exp `%X%`_shape{lanetype#6702, dim#6702, i#28654}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28661}(M_2))] -[visit_exp lanetype#6702] -[visit_id lanetype#6702] -[visit_exp dim#6702] -[visit_id dim#6702] -[visit_exp i#28654] -[visit_id i#28654] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28661}(M_2))] +[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] [visit_exp (Jnn_2 : Jnn <: lanetype)] [visit_exp Jnn_2] [visit_id Jnn_2] -[visit_exp `%`_dim{i#28661}(M_2)] -[visit_exp i#28661] -[visit_id i#28661] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] @@ -46283,21 +38969,13 @@ DecD ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN(N)*) : iN(N [visit_id sx] [visit_exp v_1] [visit_id v_1] -[visit_exp $inv_lanes_(`%X%`_shape{lanetype#6740, dim#6740, i#28862}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28869}(M_2)), c*{c <- `c*`})] -[visit_exp `%X%`_shape{lanetype#6740, dim#6740, i#28862}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28869}(M_2))] -[visit_exp lanetype#6740] -[visit_id lanetype#6740] -[visit_exp dim#6740] -[visit_id dim#6740] -[visit_exp i#28862] -[visit_id i#28862] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28869}(M_2))] +[visit_exp $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), c*{c <- `c*`})] +[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] [visit_exp (Jnn_2 : Jnn <: lanetype)] [visit_exp Jnn_2] [visit_id Jnn_2] not free -[visit_exp `%`_dim{i#28869}(M_2)] -[visit_exp i#28869] -[visit_id i#28869] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] not free @@ -46310,7 +38988,7 @@ DecD ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN(N)*) : iN(N [visit_exp `c*`] [visit_id c*] no dims [visit_id c*] -[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#6714, dim#6714, i#28678}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28685}(M_1)), v_1))] +[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1))] [visit_exp c_1*{c_1 <- `c_1*`}] [scope_enter c_1] [visit_exp c_1] @@ -46320,21 +38998,13 @@ DecD ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN(N)*) : iN(N [visit_exp `c_1*`] [visit_id c_1*] no dims [visit_id c_1*] -[visit_exp $lanes_(`%X%`_shape{lanetype#6714, dim#6714, i#28678}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28685}(M_1)), v_1)] -[visit_exp `%X%`_shape{lanetype#6714, dim#6714, i#28678}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28685}(M_1))] -[visit_exp lanetype#6714] -[visit_id lanetype#6714] -[visit_exp dim#6714] -[visit_id dim#6714] -[visit_exp i#28678] -[visit_id i#28678] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28685}(M_1))] +[visit_exp $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)] +[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] [visit_exp (Jnn_1 : Jnn <: lanetype)] [visit_exp Jnn_1] [visit_id Jnn_1] not free -[visit_exp `%`_dim{i#28685}(M_1)] -[visit_exp i#28685] -[visit_id i#28685] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] not free @@ -46396,8 +39066,8 @@ DecD ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN(N)*) : iN(N [visit_id c'_1*] no dims => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{lanetype#6690 : lanetype, dim#6690 : dim, i#28642 : nat, Jnn_1 : Jnn, i#28649 : nat, M_1 : M, lanetype#6702 : lanetype, dim#6702 : dim, i#28654 : nat, Jnn_2 : Jnn, i#28661 : nat, M_2 : M, def $f_(N : N, iN(N)*) : iN(N)*, sx : sx, v_1 : vec_(`V128`_Vnn), lanetype#6740 : lanetype, dim#6740 : dim, i#28862 : nat, i#28869 : nat, `c*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, lanetype#6714 : lanetype, dim#6714 : dim, i#28678 : nat, i#28685 : nat, `c'_1*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#6714, dim#6714, i#28678}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28685}(M_1))))*}(`%X%`_shape{lanetype#6690, dim#6690, i#28642}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28649}(M_1)), `%X%`_shape{lanetype#6702, dim#6702, i#28654}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28661}(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape{lanetype#6740, dim#6740, i#28862}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28869}(M_2)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#6714, dim#6714, i#28678}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28685}(M_1)), v_1)) + 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*`}) + -- 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, c_1)*{c_1 <- `c_1*`}) -- if (c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`})) [check_dims] N _ laneidx shape_1 shape_2 sx vec_ @@ -46425,38 +39095,22 @@ DecD ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN(N)*, iN(N) [visit_exp ()] [visit_exp `V128`_Vnn] [visit_exp ()] -[check_dims] Jnn_1 Jnn_2 M_1 M_2 c c'_1 c'_2 c_1 c_2 dim#6764 dim#6776 dim#6788 dim#6813 dim#6840 i i#28935 i#28942 i#28947 i#28954 i#29007 i#29014 i#29034 i#29044 i#29113 i#29120 i#29140 i#29150 i#29380 i#29387 k lanetype#6764 lanetype#6776 lanetype#6788 lanetype#6813 lanetype#6840 sx_1 sx_2 v_1 v_2 -[visit_exp `%X%`_shape{lanetype#6764, dim#6764, i#28935}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28942}(M_1))] -[visit_exp lanetype#6764] -[visit_id lanetype#6764] -[visit_exp dim#6764] -[visit_id dim#6764] -[visit_exp i#28935] -[visit_id i#28935] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28942}(M_1))] +[check_dims] Jnn_1 Jnn_2 M_1 M_2 c c'_1 c'_2 c_1 c_2 i k sx_1 sx_2 v_1 v_2 +[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] [visit_exp (Jnn_1 : Jnn <: lanetype)] [visit_exp Jnn_1] [visit_id Jnn_1] -[visit_exp `%`_dim{i#28942}(M_1)] -[visit_exp i#28942] -[visit_id i#28942] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] -[visit_exp `%X%`_shape{lanetype#6776, dim#6776, i#28947}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28954}(M_2))] -[visit_exp lanetype#6776] -[visit_id lanetype#6776] -[visit_exp dim#6776] -[visit_id dim#6776] -[visit_exp i#28947] -[visit_id i#28947] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28954}(M_2))] +[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] [visit_exp (Jnn_2 : Jnn <: lanetype)] [visit_exp Jnn_2] [visit_id Jnn_2] -[visit_exp `%`_dim{i#28954}(M_2)] -[visit_exp i#28954] -[visit_id i#28954] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] @@ -46472,21 +39126,13 @@ DecD ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN(N)*, iN(N) [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $inv_lanes_(`%X%`_shape{lanetype#6840, dim#6840, i#29380}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#29387}(M_2)), c*{c <- `c*`})] -[visit_exp `%X%`_shape{lanetype#6840, dim#6840, i#29380}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#29387}(M_2))] -[visit_exp lanetype#6840] -[visit_id lanetype#6840] -[visit_exp dim#6840] -[visit_id dim#6840] -[visit_exp i#29380] -[visit_id i#29380] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#29387}(M_2))] +[visit_exp $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), c*{c <- `c*`})] +[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] [visit_exp (Jnn_2 : Jnn <: lanetype)] [visit_exp Jnn_2] [visit_id Jnn_2] not free -[visit_exp `%`_dim{i#29387}(M_2)] -[visit_exp i#29387] -[visit_id i#29387] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] not free @@ -46499,7 +39145,7 @@ DecD ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN(N)*, iN(N) [visit_exp `c*`] [visit_id c*] no dims [visit_id c*] -[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#6788, dim#6788, i#29007}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29014}(M_1)), v_1)[i!`%`_laneidx{i#29034}.0 : k!`%`_laneidx{i#29044}.0])] +[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)[i!`%`_laneidx.0 : k!`%`_laneidx.0])] [visit_exp c_1*{c_1 <- `c_1*`}] [scope_enter c_1] [visit_exp c_1] @@ -46509,40 +39155,28 @@ DecD ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN(N)*, iN(N) [visit_exp `c_1*`] [visit_id c_1*] no dims [visit_id c_1*] -[visit_exp $lanes_(`%X%`_shape{lanetype#6788, dim#6788, i#29007}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29014}(M_1)), v_1)[i!`%`_laneidx{i#29034}.0 : k!`%`_laneidx{i#29044}.0]] -[visit_exp $lanes_(`%X%`_shape{lanetype#6788, dim#6788, i#29007}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29014}(M_1)), v_1)] -[visit_exp `%X%`_shape{lanetype#6788, dim#6788, i#29007}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29014}(M_1))] -[visit_exp lanetype#6788] -[visit_id lanetype#6788] -[visit_exp dim#6788] -[visit_id dim#6788] -[visit_exp i#29007] -[visit_id i#29007] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29014}(M_1))] +[visit_exp $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)[i!`%`_laneidx.0 : k!`%`_laneidx.0]] +[visit_exp $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)] +[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] [visit_exp (Jnn_1 : Jnn <: lanetype)] [visit_exp Jnn_1] [visit_id Jnn_1] not free -[visit_exp `%`_dim{i#29014}(M_1)] -[visit_exp i#29014] -[visit_id i#29014] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] not free [visit_exp v_1] [visit_id v_1] not free -[visit_exp i!`%`_laneidx{i#29034}.0] -[visit_exp i!`%`_laneidx{i#29034}] +[visit_exp i!`%`_laneidx.0] +[visit_exp i!`%`_laneidx] [visit_exp i] [visit_id i] not free -[visit_exp i#29034] -[visit_id i#29034] -[visit_exp k!`%`_laneidx{i#29044}.0] -[visit_exp k!`%`_laneidx{i#29044}] +[visit_exp k!`%`_laneidx.0] +[visit_exp k!`%`_laneidx] [visit_exp k] [visit_id k] not free -[visit_exp i#29044] -[visit_id i#29044] -[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#6813, dim#6813, i#29113}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29120}(M_1)), v_2)[i!`%`_laneidx{i#29140}.0 : k!`%`_laneidx{i#29150}.0])] +[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)[i!`%`_laneidx.0 : k!`%`_laneidx.0])] [visit_exp c_2*{c_2 <- `c_2*`}] [scope_enter c_2] [visit_exp c_2] @@ -46552,39 +39186,27 @@ DecD ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN(N)*, iN(N) [visit_exp `c_2*`] [visit_id c_2*] no dims [visit_id c_2*] -[visit_exp $lanes_(`%X%`_shape{lanetype#6813, dim#6813, i#29113}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29120}(M_1)), v_2)[i!`%`_laneidx{i#29140}.0 : k!`%`_laneidx{i#29150}.0]] -[visit_exp $lanes_(`%X%`_shape{lanetype#6813, dim#6813, i#29113}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29120}(M_1)), v_2)] -[visit_exp `%X%`_shape{lanetype#6813, dim#6813, i#29113}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29120}(M_1))] -[visit_exp lanetype#6813] -[visit_id lanetype#6813] -[visit_exp dim#6813] -[visit_id dim#6813] -[visit_exp i#29113] -[visit_id i#29113] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29120}(M_1))] +[visit_exp $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)[i!`%`_laneidx.0 : k!`%`_laneidx.0]] +[visit_exp $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)] +[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] [visit_exp (Jnn_1 : Jnn <: lanetype)] [visit_exp Jnn_1] [visit_id Jnn_1] not free -[visit_exp `%`_dim{i#29120}(M_1)] -[visit_exp i#29120] -[visit_id i#29120] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] not free [visit_exp v_2] [visit_id v_2] not free -[visit_exp i!`%`_laneidx{i#29140}.0] -[visit_exp i!`%`_laneidx{i#29140}] +[visit_exp i!`%`_laneidx.0] +[visit_exp i!`%`_laneidx] [visit_exp i] [visit_id i] not free -[visit_exp i#29140] -[visit_id i#29140] -[visit_exp k!`%`_laneidx{i#29150}.0] -[visit_exp k!`%`_laneidx{i#29150}] +[visit_exp k!`%`_laneidx.0] +[visit_exp k!`%`_laneidx] [visit_exp k] [visit_id k] not free -[visit_exp i#29150] -[visit_id i#29150] [visit_exp (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*`})] [visit_exp c'_1*{c'_1 <- `c'_1*`}] [scope_enter c'_1] @@ -46680,9 +39302,9 @@ DecD ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN(N)*, iN(N) [visit_id c'_2*] no dims => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{lanetype#6764 : lanetype, dim#6764 : dim, i#28935 : nat, Jnn_1 : Jnn, i#28942 : nat, M_1 : M, lanetype#6776 : lanetype, dim#6776 : dim, i#28947 : nat, Jnn_2 : Jnn, i#28954 : nat, 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), lanetype#6840 : lanetype, dim#6840 : dim, i#29380 : nat, i#29387 : nat, `c*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, lanetype#6788 : lanetype, dim#6788 : dim, i#29007 : nat, i#29014 : nat, i#29034 : nat, i#29044 : nat, lanetype#6813 : lanetype, dim#6813 : dim, i#29113 : nat, i#29120 : nat, i#29140 : nat, i#29150 : nat, `c'_1*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c'_2*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#6788, dim#6788, i#29007}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29014}(M_1))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#6813, dim#6813, i#29113}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29120}(M_1))))*}(`%X%`_shape{lanetype#6764, dim#6764, i#28935}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28942}(M_1)), `%X%`_shape{lanetype#6776, dim#6776, i#28947}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28954}(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape{lanetype#6840, dim#6840, i#29380}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#29387}(M_2)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#6788, dim#6788, i#29007}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29014}(M_1)), v_1)[i!`%`_laneidx{i#29034}.0 : k!`%`_laneidx{i#29044}.0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#6813, dim#6813, i#29113}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29120}(M_1)), v_2)[i!`%`_laneidx{i#29140}.0 : k!`%`_laneidx{i#29150}.0]) + 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*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)[i!`%`_laneidx.0 : k!`%`_laneidx.0]) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)[i!`%`_laneidx.0 : k!`%`_laneidx.0]) -- if (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*`}) -- if (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*`}) -- if (c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) @@ -46694,7 +39316,7 @@ DecD ivadd_pairwise_(N : N, iN(N)*) : iN(N)* [visit_id N] not free [visit_exp N] [visit_id N] not free -[check_dims] N i i#29472 i#29492 i#29500 j_1 j_2 +[check_dims] N i j_1 j_2 [visit_exp N] [visit_id N] [visit_exp i*{i <- `i*`}] @@ -46706,47 +39328,31 @@ DecD ivadd_pairwise_(N : N, iN(N)*) : iN(N)* [visit_exp `i*`] [visit_id i*] no dims [visit_id i*] -[visit_exp $iadd_(N, `%`_iN{i#29492}(j_1), `%`_iN{i#29500}(j_2))*{i#29492 <- `i#29492*`, i#29500 <- `i#29500*`, j_1 <- `j_1*`, j_2 <- `j_2*`}] -[scope_enter i#29492] -[scope_enter i#29500] +[visit_exp $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`}] [scope_enter j_1] [scope_enter j_2] -[visit_exp $iadd_(N, `%`_iN{i#29492}(j_1), `%`_iN{i#29500}(j_2))] +[visit_exp $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))] [visit_exp N] [visit_id N] not free -[visit_exp `%`_iN{i#29492}(j_1)] -[visit_exp i#29492] -[visit_id i#29492] not free +[visit_exp `%`_iN(j_1)] [visit_exp (j_1)] [visit_exp j_1] [visit_id j_1] not free -[visit_exp `%`_iN{i#29500}(j_2)] -[visit_exp i#29500] -[visit_id i#29500] not free +[visit_exp `%`_iN(j_2)] [visit_exp (j_2)] [visit_exp j_2] [visit_id j_2] not free -[visit_id i#29492] not free -[visit_id i#29500] not free [visit_id j_1] not free [visit_id j_2] not free [scope_exit j_2] [scope_exit j_1] -[scope_exit i#29500] -[scope_exit i#29492] -[visit_exp `i#29492*`] -[visit_id i#29492*] no dims -[visit_id i#29492*] -[visit_exp `i#29500*`] -[visit_id i#29500*] no dims -[visit_id i#29500*] [visit_exp `j_1*`] [visit_id j_1*] no dims [visit_id j_1*] [visit_exp `j_2*`] [visit_id j_2*] no dims [visit_id j_2*] -[visit_exp ($concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = i!`%`_iN{i#29472}.0*{i <- `i*`, i#29472 <- `i#29472*`})] +[visit_exp ($concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = i!`%`_iN.0*{i <- `i*`})] [visit_exp $concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`})] [visit_exp [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}] [scope_enter j_1] @@ -46766,29 +39372,21 @@ DecD ivadd_pairwise_(N : N, iN(N)*) : iN(N)* [visit_exp `j_2*`] [visit_id j_2*] not free [visit_id j_2*] no dims -[visit_exp i!`%`_iN{i#29472}.0*{i <- `i*`, i#29472 <- `i#29472*`}] +[visit_exp i!`%`_iN.0*{i <- `i*`}] [scope_enter i] -[scope_enter i#29472] -[visit_exp i!`%`_iN{i#29472}.0] -[visit_exp i!`%`_iN{i#29472}] +[visit_exp i!`%`_iN.0] +[visit_exp i!`%`_iN] [visit_exp i] [visit_id i] not free -[visit_exp i#29472] -[visit_id i#29472] not free [visit_id i] not free -[visit_id i#29472] not free -[scope_exit i#29472] [scope_exit i] [visit_exp `i*`] [visit_id i*] not free [visit_id i*] no dims -[visit_exp `i#29472*`] -[visit_id i#29472*] no dims -[visit_id i#29472*] => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivadd_pairwise_{N : N, `i*` : iN(N)*, `i#29492*` : nat*, `i#29500*` : nat*, `j_1*` : N*, `j_2*` : N*, `i#29472*` : nat*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN{i#29492}(j_1), `%`_iN{i#29500}(j_2))*{i#29492 <- `i#29492*`, i#29500 <- `i#29500*`, 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{i#29472}.0*{i <- `i*`, i#29472 <- `i#29472*`}) + 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*`}) [check_dims] N _ DecD ivmul_(N : N, iN(N)*, iN(N)*) : iN(N)* [visit_id N] not free @@ -47042,93 +39640,51 @@ DecD 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*`}) -[check_dims] Jnn#131 Jnn#135 Jnn_1 Jnn_2 M_1 M_2 dim#6864 dim#6876 dim#6888 dim#6900 i#29941 i#29948 i#29953 i#29960 i#29987 i#29994 i#29999 i#30006 lanetype#6864 lanetype#6876 lanetype#6888 lanetype#6900 shape#493 shape#505 sx sx#182 v_1 -[visit_exp `%`_ishape{shape#493, Jnn#131}(`%X%`_shape{lanetype#6864, dim#6864, i#29941}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29948}(M_1)))] -[visit_exp shape#493] -[visit_id shape#493] -[visit_exp Jnn#131] -[visit_id Jnn#131] -[visit_exp (`%X%`_shape{lanetype#6864, dim#6864, i#29941}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29948}(M_1)))] -[visit_exp `%X%`_shape{lanetype#6864, dim#6864, i#29941}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29948}(M_1))] -[visit_exp lanetype#6864] -[visit_id lanetype#6864] -[visit_exp dim#6864] -[visit_id dim#6864] -[visit_exp i#29941] -[visit_id i#29941] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29948}(M_1))] +[check_dims] Jnn_1 Jnn_2 M_1 M_2 sx v_1 +[visit_exp `%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))] +[visit_exp (`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))] +[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] [visit_exp (Jnn_1 : Jnn <: lanetype)] [visit_exp Jnn_1] [visit_id Jnn_1] -[visit_exp `%`_dim{i#29948}(M_1)] -[visit_exp i#29948] -[visit_id i#29948] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] -[visit_exp `%`_ishape{shape#505, Jnn#135}(`%X%`_shape{lanetype#6876, dim#6876, i#29953}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#29960}(M_2)))] -[visit_exp shape#505] -[visit_id shape#505] -[visit_exp Jnn#135] -[visit_id Jnn#135] -[visit_exp (`%X%`_shape{lanetype#6876, dim#6876, i#29953}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#29960}(M_2)))] -[visit_exp `%X%`_shape{lanetype#6876, dim#6876, i#29953}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#29960}(M_2))] -[visit_exp lanetype#6876] -[visit_id lanetype#6876] -[visit_exp dim#6876] -[visit_id dim#6876] -[visit_exp i#29953] -[visit_id i#29953] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#29960}(M_2))] +[visit_exp `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))] +[visit_exp (`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))] +[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] [visit_exp (Jnn_2 : Jnn <: lanetype)] [visit_exp Jnn_2] [visit_id Jnn_2] -[visit_exp `%`_dim{i#29960}(M_2)] -[visit_exp i#29960] -[visit_id i#29960] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] -[visit_exp `EXTADD_PAIRWISE`_vextunop__{sx#182}(sx)] -[visit_exp sx#182] -[visit_id sx#182] +[visit_exp `EXTADD_PAIRWISE`_vextunop__(sx)] [visit_exp (sx)] [visit_exp sx] [visit_id sx] [visit_exp v_1] [visit_id v_1] -[visit_exp $ivextunop__(`%X%`_shape{lanetype#6888, dim#6888, i#29987}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29994}(M_1)), `%X%`_shape{lanetype#6900, dim#6900, i#29999}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30006}(M_2)), def $ivadd_pairwise_, sx, v_1)] -[visit_exp `%X%`_shape{lanetype#6888, dim#6888, i#29987}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29994}(M_1))] -[visit_exp lanetype#6888] -[visit_id lanetype#6888] -[visit_exp dim#6888] -[visit_id dim#6888] -[visit_exp i#29987] -[visit_id i#29987] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29994}(M_1))] +[visit_exp $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)] +[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] [visit_exp (Jnn_1 : Jnn <: lanetype)] [visit_exp Jnn_1] [visit_id Jnn_1] not free -[visit_exp `%`_dim{i#29994}(M_1)] -[visit_exp i#29994] -[visit_id i#29994] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] not free -[visit_exp `%X%`_shape{lanetype#6900, dim#6900, i#29999}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30006}(M_2))] -[visit_exp lanetype#6900] -[visit_id lanetype#6900] -[visit_exp dim#6900] -[visit_id dim#6900] -[visit_exp i#29999] -[visit_id i#29999] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30006}(M_2))] +[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] [visit_exp (Jnn_2 : Jnn <: lanetype)] [visit_exp Jnn_2] [visit_id Jnn_2] not free -[visit_exp `%`_dim{i#30006}(M_2)] -[visit_exp i#30006] -[visit_id i#30006] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] not free @@ -47138,59 +39694,31 @@ DecD ivdot_sat_(N : N, iN(N)*, iN(N)*) : iN(N)* [visit_id v_1] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextunop__{shape#493 : shape, Jnn#131 : Jnn, lanetype#6864 : lanetype, dim#6864 : dim, i#29941 : nat, Jnn_1 : Jnn, i#29948 : nat, M_1 : M, shape#505 : shape, Jnn#135 : Jnn, lanetype#6876 : lanetype, dim#6876 : dim, i#29953 : nat, Jnn_2 : Jnn, i#29960 : nat, M_2 : M, sx#182 : sx, sx : sx, v_1 : vec_(`V128`_Vnn), lanetype#6888 : lanetype, dim#6888 : dim, i#29987 : nat, i#29994 : nat, lanetype#6900 : lanetype, dim#6900 : dim, i#29999 : nat, i#30006 : nat}(`%`_ishape{shape#493, Jnn#131}(`%X%`_shape{lanetype#6864, dim#6864, i#29941}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29948}(M_1))), `%`_ishape{shape#505, Jnn#135}(`%X%`_shape{lanetype#6876, dim#6876, i#29953}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#29960}(M_2))), `EXTADD_PAIRWISE`_vextunop__{sx#182}(sx), v_1) = $ivextunop__(`%X%`_shape{lanetype#6888, dim#6888, i#29987}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29994}(M_1)), `%X%`_shape{lanetype#6900, dim#6900, i#29999}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30006}(M_2)), def $ivadd_pairwise_, sx, v_1) -[check_dims] Jnn#139 Jnn#143 Jnn_1 Jnn_2 M_1 M_2 dim#6912 dim#6924 dim#6936 dim#6948 half half#7 i#30021 i#30028 i#30033 i#30040 i#30079 i#30086 i#30091 i#30098 i#30118 i#30140 lanetype#6912 lanetype#6924 lanetype#6936 lanetype#6948 shape#517 shape#529 sx sx#184 v_1 v_2 -[visit_exp `%`_ishape{shape#517, Jnn#139}(`%X%`_shape{lanetype#6912, dim#6912, i#30021}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30028}(M_1)))] -[visit_exp shape#517] -[visit_id shape#517] -[visit_exp Jnn#139] -[visit_id Jnn#139] -[visit_exp (`%X%`_shape{lanetype#6912, dim#6912, i#30021}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30028}(M_1)))] -[visit_exp `%X%`_shape{lanetype#6912, dim#6912, i#30021}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30028}(M_1))] -[visit_exp lanetype#6912] -[visit_id lanetype#6912] -[visit_exp dim#6912] -[visit_id dim#6912] -[visit_exp i#30021] -[visit_id i#30021] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30028}(M_1))] + 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) +[check_dims] Jnn_1 Jnn_2 M_1 M_2 half sx v_1 v_2 +[visit_exp `%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))] +[visit_exp (`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))] +[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] [visit_exp (Jnn_1 : Jnn <: lanetype)] [visit_exp Jnn_1] [visit_id Jnn_1] -[visit_exp `%`_dim{i#30028}(M_1)] -[visit_exp i#30028] -[visit_id i#30028] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] -[visit_exp `%`_ishape{shape#529, Jnn#143}(`%X%`_shape{lanetype#6924, dim#6924, i#30033}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30040}(M_2)))] -[visit_exp shape#529] -[visit_id shape#529] -[visit_exp Jnn#143] -[visit_id Jnn#143] -[visit_exp (`%X%`_shape{lanetype#6924, dim#6924, i#30033}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30040}(M_2)))] -[visit_exp `%X%`_shape{lanetype#6924, dim#6924, i#30033}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30040}(M_2))] -[visit_exp lanetype#6924] -[visit_id lanetype#6924] -[visit_exp dim#6924] -[visit_id dim#6924] -[visit_exp i#30033] -[visit_id i#30033] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30040}(M_2))] +[visit_exp `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))] +[visit_exp (`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))] +[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] [visit_exp (Jnn_2 : Jnn <: lanetype)] [visit_exp Jnn_2] [visit_id Jnn_2] -[visit_exp `%`_dim{i#30040}(M_2)] -[visit_exp i#30040] -[visit_id i#30040] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] -[visit_exp `EXTMUL`_vextbinop__{half#7, sx#184}(half, sx)] -[visit_exp half#7] -[visit_id half#7] -[visit_exp sx#184] -[visit_id sx#184] +[visit_exp `EXTMUL`_vextbinop__(half, sx)] [visit_exp (half, sx)] [visit_exp half] [visit_id half] @@ -47200,38 +39728,22 @@ DecD ivdot_sat_(N : N, iN(N)*, iN(N)*) : iN(N)* [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $ivextbinop__(`%X%`_shape{lanetype#6936, dim#6936, i#30079}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30086}(M_1)), `%X%`_shape{lanetype#6948, dim#6948, i#30091}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30098}(M_2)), def $ivmul_, sx, sx, `%`_laneidx{i#30118}($half(half, 0, M_2)), `%`_laneidx{i#30140}(M_2), v_1, v_2)] -[visit_exp `%X%`_shape{lanetype#6936, dim#6936, i#30079}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30086}(M_1))] -[visit_exp lanetype#6936] -[visit_id lanetype#6936] -[visit_exp dim#6936] -[visit_id dim#6936] -[visit_exp i#30079] -[visit_id i#30079] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30086}(M_1))] +[visit_exp $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)] +[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] [visit_exp (Jnn_1 : Jnn <: lanetype)] [visit_exp Jnn_1] [visit_id Jnn_1] not free -[visit_exp `%`_dim{i#30086}(M_1)] -[visit_exp i#30086] -[visit_id i#30086] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] not free -[visit_exp `%X%`_shape{lanetype#6948, dim#6948, i#30091}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30098}(M_2))] -[visit_exp lanetype#6948] -[visit_id lanetype#6948] -[visit_exp dim#6948] -[visit_id dim#6948] -[visit_exp i#30091] -[visit_id i#30091] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30098}(M_2))] +[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] [visit_exp (Jnn_2 : Jnn <: lanetype)] [visit_exp Jnn_2] [visit_id Jnn_2] not free -[visit_exp `%`_dim{i#30098}(M_2)] -[visit_exp i#30098] -[visit_id i#30098] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] not free @@ -47239,9 +39751,7 @@ DecD ivdot_sat_(N : N, iN(N)*, iN(N)*) : iN(N)* [visit_id sx] not free [visit_exp sx] [visit_id sx] not free -[visit_exp `%`_laneidx{i#30118}($half(half, 0, M_2))] -[visit_exp i#30118] -[visit_id i#30118] +[visit_exp `%`_laneidx($half(half, 0, M_2))] [visit_exp ($half(half, 0, M_2))] [visit_exp $half(half, 0, M_2)] [visit_exp half] @@ -47249,9 +39759,7 @@ DecD ivdot_sat_(N : N, iN(N)*, iN(N)*) : iN(N)* [visit_exp 0] [visit_exp M_2] [visit_id M_2] not free -[visit_exp `%`_laneidx{i#30140}(M_2)] -[visit_exp i#30140] -[visit_id i#30140] +[visit_exp `%`_laneidx(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] not free @@ -47261,51 +39769,27 @@ DecD ivdot_sat_(N : N, iN(N)*, iN(N)*) : iN(N)* [visit_id v_2] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{shape#517 : shape, Jnn#139 : Jnn, lanetype#6912 : lanetype, dim#6912 : dim, i#30021 : nat, Jnn_1 : Jnn, i#30028 : nat, M_1 : M, shape#529 : shape, Jnn#143 : Jnn, lanetype#6924 : lanetype, dim#6924 : dim, i#30033 : nat, Jnn_2 : Jnn, i#30040 : nat, M_2 : M, half#7 : half, sx#184 : sx, half : half, sx : sx, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#6936 : lanetype, dim#6936 : dim, i#30079 : nat, i#30086 : nat, lanetype#6948 : lanetype, dim#6948 : dim, i#30091 : nat, i#30098 : nat, i#30118 : nat, i#30140 : nat}(`%`_ishape{shape#517, Jnn#139}(`%X%`_shape{lanetype#6912, dim#6912, i#30021}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30028}(M_1))), `%`_ishape{shape#529, Jnn#143}(`%X%`_shape{lanetype#6924, dim#6924, i#30033}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30040}(M_2))), `EXTMUL`_vextbinop__{half#7, sx#184}(half, sx), v_1, v_2) = $ivextbinop__(`%X%`_shape{lanetype#6936, dim#6936, i#30079}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30086}(M_1)), `%X%`_shape{lanetype#6948, dim#6948, i#30091}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30098}(M_2)), def $ivmul_, sx, sx, `%`_laneidx{i#30118}($half(half, 0, M_2)), `%`_laneidx{i#30140}(M_2), v_1, v_2) -[check_dims] Jnn#147 Jnn#151 Jnn_1 Jnn_2 M_1 M_2 dim#6960 dim#6972 dim#6984 dim#6996 i#30165 i#30172 i#30177 i#30184 i#30223 i#30230 i#30235 i#30242 i#30262 i#30284 lanetype#6960 lanetype#6972 lanetype#6984 lanetype#6996 shape#541 shape#553 v_1 v_2 -[visit_exp `%`_ishape{shape#541, Jnn#147}(`%X%`_shape{lanetype#6960, dim#6960, i#30165}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30172}(M_1)))] -[visit_exp shape#541] -[visit_id shape#541] -[visit_exp Jnn#147] -[visit_id Jnn#147] -[visit_exp (`%X%`_shape{lanetype#6960, dim#6960, i#30165}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30172}(M_1)))] -[visit_exp `%X%`_shape{lanetype#6960, dim#6960, i#30165}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30172}(M_1))] -[visit_exp lanetype#6960] -[visit_id lanetype#6960] -[visit_exp dim#6960] -[visit_id dim#6960] -[visit_exp i#30165] -[visit_id i#30165] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30172}(M_1))] + 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) +[check_dims] Jnn_1 Jnn_2 M_1 M_2 v_1 v_2 +[visit_exp `%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))] +[visit_exp (`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))] +[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] [visit_exp (Jnn_1 : Jnn <: lanetype)] [visit_exp Jnn_1] [visit_id Jnn_1] -[visit_exp `%`_dim{i#30172}(M_1)] -[visit_exp i#30172] -[visit_id i#30172] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] -[visit_exp `%`_ishape{shape#553, Jnn#151}(`%X%`_shape{lanetype#6972, dim#6972, i#30177}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30184}(M_2)))] -[visit_exp shape#553] -[visit_id shape#553] -[visit_exp Jnn#151] -[visit_id Jnn#151] -[visit_exp (`%X%`_shape{lanetype#6972, dim#6972, i#30177}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30184}(M_2)))] -[visit_exp `%X%`_shape{lanetype#6972, dim#6972, i#30177}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30184}(M_2))] -[visit_exp lanetype#6972] -[visit_id lanetype#6972] -[visit_exp dim#6972] -[visit_id dim#6972] -[visit_exp i#30177] -[visit_id i#30177] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30184}(M_2))] +[visit_exp `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))] +[visit_exp (`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))] +[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] [visit_exp (Jnn_2 : Jnn <: lanetype)] [visit_exp Jnn_2] [visit_id Jnn_2] -[visit_exp `%`_dim{i#30184}(M_2)] -[visit_exp i#30184] -[visit_id i#30184] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] @@ -47315,38 +39799,22 @@ DecD ivdot_sat_(N : N, iN(N)*, iN(N)*) : iN(N)* [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $ivextbinop__(`%X%`_shape{lanetype#6984, dim#6984, i#30223}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30230}(M_1)), `%X%`_shape{lanetype#6996, dim#6996, i#30235}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30242}(M_2)), def $ivdot_, `S`_sx, `S`_sx, `%`_laneidx{i#30262}(0), `%`_laneidx{i#30284}(M_1), v_1, v_2)] -[visit_exp `%X%`_shape{lanetype#6984, dim#6984, i#30223}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30230}(M_1))] -[visit_exp lanetype#6984] -[visit_id lanetype#6984] -[visit_exp dim#6984] -[visit_id dim#6984] -[visit_exp i#30223] -[visit_id i#30223] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30230}(M_1))] +[visit_exp $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)] +[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] [visit_exp (Jnn_1 : Jnn <: lanetype)] [visit_exp Jnn_1] [visit_id Jnn_1] not free -[visit_exp `%`_dim{i#30230}(M_1)] -[visit_exp i#30230] -[visit_id i#30230] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] not free -[visit_exp `%X%`_shape{lanetype#6996, dim#6996, i#30235}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30242}(M_2))] -[visit_exp lanetype#6996] -[visit_id lanetype#6996] -[visit_exp dim#6996] -[visit_id dim#6996] -[visit_exp i#30235] -[visit_id i#30235] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30242}(M_2))] +[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] [visit_exp (Jnn_2 : Jnn <: lanetype)] [visit_exp Jnn_2] [visit_id Jnn_2] not free -[visit_exp `%`_dim{i#30242}(M_2)] -[visit_exp i#30242] -[visit_id i#30242] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] not free @@ -47354,14 +39822,10 @@ DecD ivdot_sat_(N : N, iN(N)*, iN(N)*) : iN(N)* [visit_exp ()] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_laneidx{i#30262}(0)] -[visit_exp i#30262] -[visit_id i#30262] +[visit_exp `%`_laneidx(0)] [visit_exp (0)] [visit_exp 0] -[visit_exp `%`_laneidx{i#30284}(M_1)] -[visit_exp i#30284] -[visit_id i#30284] +[visit_exp `%`_laneidx(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] not free @@ -47371,51 +39835,27 @@ DecD ivdot_sat_(N : N, iN(N)*, iN(N)*) : iN(N)* [visit_id v_2] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{shape#541 : shape, Jnn#147 : Jnn, lanetype#6960 : lanetype, dim#6960 : dim, i#30165 : nat, Jnn_1 : Jnn, i#30172 : nat, M_1 : M, shape#553 : shape, Jnn#151 : Jnn, lanetype#6972 : lanetype, dim#6972 : dim, i#30177 : nat, Jnn_2 : Jnn, i#30184 : nat, M_2 : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#6984 : lanetype, dim#6984 : dim, i#30223 : nat, i#30230 : nat, lanetype#6996 : lanetype, dim#6996 : dim, i#30235 : nat, i#30242 : nat, i#30262 : nat, i#30284 : nat}(`%`_ishape{shape#541, Jnn#147}(`%X%`_shape{lanetype#6960, dim#6960, i#30165}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30172}(M_1))), `%`_ishape{shape#553, Jnn#151}(`%X%`_shape{lanetype#6972, dim#6972, i#30177}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30184}(M_2))), `DOTS`_vextbinop__, v_1, v_2) = $ivextbinop__(`%X%`_shape{lanetype#6984, dim#6984, i#30223}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30230}(M_1)), `%X%`_shape{lanetype#6996, dim#6996, i#30235}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30242}(M_2)), def $ivdot_, `S`_sx, `S`_sx, `%`_laneidx{i#30262}(0), `%`_laneidx{i#30284}(M_1), v_1, v_2) -[check_dims] Jnn#155 Jnn#159 Jnn_1 Jnn_2 M_1 M_2 dim#7008 dim#7020 dim#7032 dim#7044 i#30309 i#30316 i#30321 i#30328 i#30367 i#30374 i#30379 i#30386 i#30412 i#30434 lanetype#7008 lanetype#7020 lanetype#7032 lanetype#7044 shape#565 shape#577 v_1 v_2 -[visit_exp `%`_ishape{shape#565, Jnn#155}(`%X%`_shape{lanetype#7008, dim#7008, i#30309}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30316}(M_1)))] -[visit_exp shape#565] -[visit_id shape#565] -[visit_exp Jnn#155] -[visit_id Jnn#155] -[visit_exp (`%X%`_shape{lanetype#7008, dim#7008, i#30309}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30316}(M_1)))] -[visit_exp `%X%`_shape{lanetype#7008, dim#7008, i#30309}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30316}(M_1))] -[visit_exp lanetype#7008] -[visit_id lanetype#7008] -[visit_exp dim#7008] -[visit_id dim#7008] -[visit_exp i#30309] -[visit_id i#30309] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30316}(M_1))] + 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) +[check_dims] Jnn_1 Jnn_2 M_1 M_2 v_1 v_2 +[visit_exp `%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))] +[visit_exp (`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))] +[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] [visit_exp (Jnn_1 : Jnn <: lanetype)] [visit_exp Jnn_1] [visit_id Jnn_1] -[visit_exp `%`_dim{i#30316}(M_1)] -[visit_exp i#30316] -[visit_id i#30316] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] -[visit_exp `%`_ishape{shape#577, Jnn#159}(`%X%`_shape{lanetype#7020, dim#7020, i#30321}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30328}(M_2)))] -[visit_exp shape#577] -[visit_id shape#577] -[visit_exp Jnn#159] -[visit_id Jnn#159] -[visit_exp (`%X%`_shape{lanetype#7020, dim#7020, i#30321}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30328}(M_2)))] -[visit_exp `%X%`_shape{lanetype#7020, dim#7020, i#30321}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30328}(M_2))] -[visit_exp lanetype#7020] -[visit_id lanetype#7020] -[visit_exp dim#7020] -[visit_id dim#7020] -[visit_exp i#30321] -[visit_id i#30321] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30328}(M_2))] +[visit_exp `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))] +[visit_exp (`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))] +[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] [visit_exp (Jnn_2 : Jnn <: lanetype)] [visit_exp Jnn_2] [visit_id Jnn_2] -[visit_exp `%`_dim{i#30328}(M_2)] -[visit_exp i#30328] -[visit_id i#30328] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] @@ -47425,38 +39865,22 @@ DecD ivdot_sat_(N : N, iN(N)*, iN(N)*) : iN(N)* [visit_id v_1] [visit_exp v_2] [visit_id v_2] -[visit_exp $ivextbinop__(`%X%`_shape{lanetype#7032, dim#7032, i#30367}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30374}(M_1)), `%X%`_shape{lanetype#7044, dim#7044, i#30379}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30386}(M_2)), def $ivdot_sat_, `S`_sx, $relaxed2($R_idot, syntax sx, `S`_sx, `U`_sx), `%`_laneidx{i#30412}(0), `%`_laneidx{i#30434}(M_1), v_1, v_2)] -[visit_exp `%X%`_shape{lanetype#7032, dim#7032, i#30367}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30374}(M_1))] -[visit_exp lanetype#7032] -[visit_id lanetype#7032] -[visit_exp dim#7032] -[visit_id dim#7032] -[visit_exp i#30367] -[visit_id i#30367] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30374}(M_1))] +[visit_exp $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)] +[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] [visit_exp (Jnn_1 : Jnn <: lanetype)] [visit_exp Jnn_1] [visit_id Jnn_1] not free -[visit_exp `%`_dim{i#30374}(M_1)] -[visit_exp i#30374] -[visit_id i#30374] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] not free -[visit_exp `%X%`_shape{lanetype#7044, dim#7044, i#30379}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30386}(M_2))] -[visit_exp lanetype#7044] -[visit_id lanetype#7044] -[visit_exp dim#7044] -[visit_id dim#7044] -[visit_exp i#30379] -[visit_id i#30379] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30386}(M_2))] +[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] [visit_exp (Jnn_2 : Jnn <: lanetype)] [visit_exp Jnn_2] [visit_id Jnn_2] not free -[visit_exp `%`_dim{i#30386}(M_2)] -[visit_exp i#30386] -[visit_id i#30386] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] not free @@ -47468,14 +39892,10 @@ DecD ivdot_sat_(N : N, iN(N)*, iN(N)*) : iN(N)* [visit_exp ()] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_laneidx{i#30412}(0)] -[visit_exp i#30412] -[visit_id i#30412] +[visit_exp `%`_laneidx(0)] [visit_exp (0)] [visit_exp 0] -[visit_exp `%`_laneidx{i#30434}(M_1)] -[visit_exp i#30434] -[visit_id i#30434] +[visit_exp `%`_laneidx(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] not free @@ -47485,51 +39905,27 @@ DecD ivdot_sat_(N : N, iN(N)*, iN(N)*) : iN(N)* [visit_id v_2] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{shape#565 : shape, Jnn#155 : Jnn, lanetype#7008 : lanetype, dim#7008 : dim, i#30309 : nat, Jnn_1 : Jnn, i#30316 : nat, M_1 : M, shape#577 : shape, Jnn#159 : Jnn, lanetype#7020 : lanetype, dim#7020 : dim, i#30321 : nat, Jnn_2 : Jnn, i#30328 : nat, M_2 : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#7032 : lanetype, dim#7032 : dim, i#30367 : nat, i#30374 : nat, lanetype#7044 : lanetype, dim#7044 : dim, i#30379 : nat, i#30386 : nat, i#30412 : nat, i#30434 : nat}(`%`_ishape{shape#565, Jnn#155}(`%X%`_shape{lanetype#7008, dim#7008, i#30309}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30316}(M_1))), `%`_ishape{shape#577, Jnn#159}(`%X%`_shape{lanetype#7020, dim#7020, i#30321}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30328}(M_2))), `RELAXED_DOTS`_vextbinop__, v_1, v_2) = $ivextbinop__(`%X%`_shape{lanetype#7032, dim#7032, i#30367}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30374}(M_1)), `%X%`_shape{lanetype#7044, dim#7044, i#30379}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30386}(M_2)), def $ivdot_sat_, `S`_sx, $relaxed2($R_idot, syntax sx, `S`_sx, `U`_sx), `%`_laneidx{i#30412}(0), `%`_laneidx{i#30434}(M_1), v_1, v_2) -[check_dims] Jnn Jnn#163 Jnn#167 Jnn#171 Jnn#175 Jnn#179 Jnn#183 Jnn_1 Jnn_2 M M_1 M_2 c c' c'' c_1 c_2 c_3 dim#7056 dim#7068 dim#7080 dim#7092 dim#7149 dim#7161 dim#7218 i#30459 i#30466 i#30471 i#30478 i#30519 i#30526 i#30531 i#30538 i#30650 i#30657 i#30662 i#30669 i#30771 i#30778 lanetype#7056 lanetype#7068 lanetype#7080 lanetype#7092 lanetype#7149 lanetype#7161 lanetype#7218 shape#589 shape#601 shape#613 shape#625 shape#652 shape#664 sx#216 -[visit_exp `%`_ishape{shape#589, Jnn#163}(`%X%`_shape{lanetype#7056, dim#7056, i#30459}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30466}(M_1)))] -[visit_exp shape#589] -[visit_id shape#589] -[visit_exp Jnn#163] -[visit_id Jnn#163] -[visit_exp (`%X%`_shape{lanetype#7056, dim#7056, i#30459}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30466}(M_1)))] -[visit_exp `%X%`_shape{lanetype#7056, dim#7056, i#30459}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30466}(M_1))] -[visit_exp lanetype#7056] -[visit_id lanetype#7056] -[visit_exp dim#7056] -[visit_id dim#7056] -[visit_exp i#30459] -[visit_id i#30459] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30466}(M_1))] + 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) +[check_dims] Jnn Jnn_1 Jnn_2 M M_1 M_2 c c' c'' c_1 c_2 c_3 +[visit_exp `%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))] +[visit_exp (`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))] +[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] [visit_exp (Jnn_1 : Jnn <: lanetype)] [visit_exp Jnn_1] [visit_id Jnn_1] -[visit_exp `%`_dim{i#30466}(M_1)] -[visit_exp i#30466] -[visit_id i#30466] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] -[visit_exp `%`_ishape{shape#601, Jnn#167}(`%X%`_shape{lanetype#7068, dim#7068, i#30471}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30478}(M_2)))] -[visit_exp shape#601] -[visit_id shape#601] -[visit_exp Jnn#167] -[visit_id Jnn#167] -[visit_exp (`%X%`_shape{lanetype#7068, dim#7068, i#30471}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30478}(M_2)))] -[visit_exp `%X%`_shape{lanetype#7068, dim#7068, i#30471}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30478}(M_2))] -[visit_exp lanetype#7068] -[visit_id lanetype#7068] -[visit_exp dim#7068] -[visit_id dim#7068] -[visit_exp i#30471] -[visit_id i#30471] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30478}(M_2))] +[visit_exp `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))] +[visit_exp (`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))] +[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] [visit_exp (Jnn_2 : Jnn <: lanetype)] [visit_exp Jnn_2] [visit_id Jnn_2] -[visit_exp `%`_dim{i#30478}(M_2)] -[visit_exp i#30478] -[visit_id i#30478] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] @@ -47560,53 +39956,29 @@ DecD ivdot_sat_(N : N, iN(N)*, iN(N)*) : iN(N)* [visit_exp 2] [visit_exp M_2] [visit_id M_2] not free -[visit_exp (c' = $vextbinop__(`%`_ishape{shape#613, Jnn#171}(`%X%`_shape{lanetype#7080, dim#7080, i#30519}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30526}(M_1))), `%`_ishape{shape#625, Jnn#175}(`%X%`_shape{lanetype#7092, dim#7092, i#30531}((Jnn : Jnn <: lanetype), `%`_dim{i#30538}(M))), `RELAXED_DOTS`_vextbinop__, c_1, c_2))] +[visit_exp (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))] [visit_exp c'] [visit_id c'] -[visit_exp $vextbinop__(`%`_ishape{shape#613, Jnn#171}(`%X%`_shape{lanetype#7080, dim#7080, i#30519}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30526}(M_1))), `%`_ishape{shape#625, Jnn#175}(`%X%`_shape{lanetype#7092, dim#7092, i#30531}((Jnn : Jnn <: lanetype), `%`_dim{i#30538}(M))), `RELAXED_DOTS`_vextbinop__, c_1, c_2)] -[visit_exp `%`_ishape{shape#613, Jnn#171}(`%X%`_shape{lanetype#7080, dim#7080, i#30519}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30526}(M_1)))] -[visit_exp shape#613] -[visit_id shape#613] -[visit_exp Jnn#171] -[visit_id Jnn#171] -[visit_exp (`%X%`_shape{lanetype#7080, dim#7080, i#30519}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30526}(M_1)))] -[visit_exp `%X%`_shape{lanetype#7080, dim#7080, i#30519}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30526}(M_1))] -[visit_exp lanetype#7080] -[visit_id lanetype#7080] -[visit_exp dim#7080] -[visit_id dim#7080] -[visit_exp i#30519] -[visit_id i#30519] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30526}(M_1))] +[visit_exp $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)] +[visit_exp `%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))] +[visit_exp (`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))] +[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] +[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] [visit_exp (Jnn_1 : Jnn <: lanetype)] [visit_exp Jnn_1] [visit_id Jnn_1] not free -[visit_exp `%`_dim{i#30526}(M_1)] -[visit_exp i#30526] -[visit_id i#30526] +[visit_exp `%`_dim(M_1)] [visit_exp (M_1)] [visit_exp M_1] [visit_id M_1] not free -[visit_exp `%`_ishape{shape#625, Jnn#175}(`%X%`_shape{lanetype#7092, dim#7092, i#30531}((Jnn : Jnn <: lanetype), `%`_dim{i#30538}(M)))] -[visit_exp shape#625] -[visit_id shape#625] -[visit_exp Jnn#175] -[visit_id Jnn#175] -[visit_exp (`%X%`_shape{lanetype#7092, dim#7092, i#30531}((Jnn : Jnn <: lanetype), `%`_dim{i#30538}(M)))] -[visit_exp `%X%`_shape{lanetype#7092, dim#7092, i#30531}((Jnn : Jnn <: lanetype), `%`_dim{i#30538}(M))] -[visit_exp lanetype#7092] -[visit_id lanetype#7092] -[visit_exp dim#7092] -[visit_id dim#7092] -[visit_exp i#30531] -[visit_id i#30531] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#30538}(M))] +[visit_exp `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))] +[visit_exp (`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#30538}(M)] -[visit_exp i#30538] -[visit_id i#30538] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -47616,82 +39988,48 @@ DecD ivdot_sat_(N : N, iN(N)*, iN(N)*) : iN(N)* [visit_id c_1] not free [visit_exp c_2] [visit_id c_2] not free -[visit_exp (c'' = $vextunop__(`%`_ishape{shape#652, Jnn#179}(`%X%`_shape{lanetype#7149, dim#7149, i#30650}((Jnn : Jnn <: lanetype), `%`_dim{i#30657}(M))), `%`_ishape{shape#664, Jnn#183}(`%X%`_shape{lanetype#7161, dim#7161, i#30662}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30669}(M_2))), `EXTADD_PAIRWISE`_vextunop__{sx#216}(`S`_sx), c'))] +[visit_exp (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'))] [visit_exp c''] [visit_id c''] -[visit_exp $vextunop__(`%`_ishape{shape#652, Jnn#179}(`%X%`_shape{lanetype#7149, dim#7149, i#30650}((Jnn : Jnn <: lanetype), `%`_dim{i#30657}(M))), `%`_ishape{shape#664, Jnn#183}(`%X%`_shape{lanetype#7161, dim#7161, i#30662}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30669}(M_2))), `EXTADD_PAIRWISE`_vextunop__{sx#216}(`S`_sx), c')] -[visit_exp `%`_ishape{shape#652, Jnn#179}(`%X%`_shape{lanetype#7149, dim#7149, i#30650}((Jnn : Jnn <: lanetype), `%`_dim{i#30657}(M)))] -[visit_exp shape#652] -[visit_id shape#652] -[visit_exp Jnn#179] -[visit_id Jnn#179] -[visit_exp (`%X%`_shape{lanetype#7149, dim#7149, i#30650}((Jnn : Jnn <: lanetype), `%`_dim{i#30657}(M)))] -[visit_exp `%X%`_shape{lanetype#7149, dim#7149, i#30650}((Jnn : Jnn <: lanetype), `%`_dim{i#30657}(M))] -[visit_exp lanetype#7149] -[visit_id lanetype#7149] -[visit_exp dim#7149] -[visit_id dim#7149] -[visit_exp i#30650] -[visit_id i#30650] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#30657}(M))] +[visit_exp $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')] +[visit_exp `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))] +[visit_exp (`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#30657}(M)] -[visit_exp i#30657] -[visit_id i#30657] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free -[visit_exp `%`_ishape{shape#664, Jnn#183}(`%X%`_shape{lanetype#7161, dim#7161, i#30662}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30669}(M_2)))] -[visit_exp shape#664] -[visit_id shape#664] -[visit_exp Jnn#183] -[visit_id Jnn#183] -[visit_exp (`%X%`_shape{lanetype#7161, dim#7161, i#30662}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30669}(M_2)))] -[visit_exp `%X%`_shape{lanetype#7161, dim#7161, i#30662}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30669}(M_2))] -[visit_exp lanetype#7161] -[visit_id lanetype#7161] -[visit_exp dim#7161] -[visit_id dim#7161] -[visit_exp i#30662] -[visit_id i#30662] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30669}(M_2))] +[visit_exp `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))] +[visit_exp (`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))] +[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] [visit_exp (Jnn_2 : Jnn <: lanetype)] [visit_exp Jnn_2] [visit_id Jnn_2] not free -[visit_exp `%`_dim{i#30669}(M_2)] -[visit_exp i#30669] -[visit_id i#30669] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] not free -[visit_exp `EXTADD_PAIRWISE`_vextunop__{sx#216}(`S`_sx)] -[visit_exp sx#216] -[visit_id sx#216] +[visit_exp `EXTADD_PAIRWISE`_vextunop__(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] [visit_exp c'] [visit_id c'] not free -[visit_exp (c <- $vbinop_(`%X%`_shape{lanetype#7218, dim#7218, i#30771}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30778}(M_2)), `ADD`_vbinop_, c'', c_3))] +[visit_exp (c <- $vbinop_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), `ADD`_vbinop_, c'', c_3))] [visit_exp c] [visit_id c] not free -[visit_exp $vbinop_(`%X%`_shape{lanetype#7218, dim#7218, i#30771}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30778}(M_2)), `ADD`_vbinop_, c'', c_3)] -[visit_exp `%X%`_shape{lanetype#7218, dim#7218, i#30771}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30778}(M_2))] -[visit_exp lanetype#7218] -[visit_id lanetype#7218] -[visit_exp dim#7218] -[visit_id dim#7218] -[visit_exp i#30771] -[visit_id i#30771] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30778}(M_2))] +[visit_exp $vbinop_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), `ADD`_vbinop_, c'', c_3)] +[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] +[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] [visit_exp (Jnn_2 : Jnn <: lanetype)] [visit_exp Jnn_2] [visit_id Jnn_2] not free -[visit_exp `%`_dim{i#30778}(M_2)] -[visit_exp i#30778] -[visit_id i#30778] +[visit_exp `%`_dim(M_2)] [visit_exp (M_2)] [visit_exp M_2] [visit_id M_2] not free @@ -47703,12 +40041,12 @@ DecD ivdot_sat_(N : N, iN(N)*, iN(N)*) : iN(N)* [visit_id c_3] not free => ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextternop__{shape#589 : shape, Jnn#163 : Jnn, lanetype#7056 : lanetype, dim#7056 : dim, i#30459 : nat, Jnn_1 : Jnn, i#30466 : nat, M_1 : M, shape#601 : shape, Jnn#167 : Jnn, lanetype#7068 : lanetype, dim#7068 : dim, i#30471 : nat, Jnn_2 : Jnn, i#30478 : nat, 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), shape#613 : shape, Jnn#171 : Jnn, lanetype#7080 : lanetype, dim#7080 : dim, i#30519 : nat, i#30526 : nat, shape#625 : shape, Jnn#175 : Jnn, lanetype#7092 : lanetype, dim#7092 : dim, i#30531 : nat, i#30538 : nat, c'' : vec_(`V128`_Vnn), shape#652 : shape, Jnn#179 : Jnn, lanetype#7149 : lanetype, dim#7149 : dim, i#30650 : nat, i#30657 : nat, shape#664 : shape, Jnn#183 : Jnn, lanetype#7161 : lanetype, dim#7161 : dim, i#30662 : nat, i#30669 : nat, sx#216 : sx, lanetype#7218 : lanetype, dim#7218 : dim, i#30771 : nat, i#30778 : nat}(`%`_ishape{shape#589, Jnn#163}(`%X%`_shape{lanetype#7056, dim#7056, i#30459}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30466}(M_1))), `%`_ishape{shape#601, Jnn#167}(`%X%`_shape{lanetype#7068, dim#7068, i#30471}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30478}(M_2))), `RELAXED_DOT_ADDS`_vextternop__, c_1, c_2, c_3) = c + 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)))) -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape{shape#613, Jnn#171}(`%X%`_shape{lanetype#7080, dim#7080, i#30519}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30526}(M_1))), `%`_ishape{shape#625, Jnn#175}(`%X%`_shape{lanetype#7092, dim#7092, i#30531}((Jnn : Jnn <: lanetype), `%`_dim{i#30538}(M))), `RELAXED_DOTS`_vextbinop__, c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape{shape#652, Jnn#179}(`%X%`_shape{lanetype#7149, dim#7149, i#30650}((Jnn : Jnn <: lanetype), `%`_dim{i#30657}(M))), `%`_ishape{shape#664, Jnn#183}(`%X%`_shape{lanetype#7161, dim#7161, i#30662}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30669}(M_2))), `EXTADD_PAIRWISE`_vextunop__{sx#216}(`S`_sx), c')) - -- if (c <- $vbinop_(`%X%`_shape{lanetype#7218, dim#7218, i#30771}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30778}(M_2)), `ADD`_vbinop_, c'', c_3)) + -- if (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)) + -- if (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')) + -- if (c <- $vbinop_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), `ADD`_vbinop_, c'', c_3)) [check_dims] [check_dims] [check_dims] @@ -47722,147 +40060,195 @@ DecD ivdot_sat_(N : N, iN(N)*, iN(N)*) : iN(N)* [check_dims] [check_dims] [check_dims] ---- 1 --- [check_dims] ---- 2 --- ---- 3 --- ---- 4 --- +[scope_enter tagaddr] +[visit_id tagaddr] not free [visit_id tagaddr] no dims -[visit_id tagaddr] +[scope_exit tagaddr] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter globaladdr] +[visit_id globaladdr] not free [visit_id globaladdr] no dims -[visit_id globaladdr] +[scope_exit globaladdr] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter memaddr] +[visit_id memaddr] not free [visit_id memaddr] no dims -[visit_id memaddr] +[scope_exit memaddr] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter tableaddr] +[visit_id tableaddr] not free [visit_id tableaddr] no dims -[visit_id tableaddr] +[scope_exit tableaddr] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter funcaddr] +[visit_id funcaddr] not free [visit_id funcaddr] no dims -[visit_id funcaddr] +[scope_exit funcaddr] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- [check_dims] [check_dims] [check_dims] +[check_dims] numtype +[scope_enter numtype] +[visit_id numtype] not free +[visit_exp numtype] +[visit_id numtype] not free +[scope_enter _] +[visit_id _] not free +[visit_id _] no dims +[scope_exit _] +[scope_exit numtype] --- 1 --- [check_dims] numtype --- 2 --- --- 3 --- --- 4 --- -[visit_id numtype] +[check_dims] +[check_dims] vectype +[scope_enter vectype] +[visit_id vectype] not free +[visit_exp vectype] +[visit_id vectype] not free +[scope_enter _] [visit_id _] not free [visit_id _] no dims -[visit_exp numtype] -[visit_id numtype] not free -[check_dims] +[scope_exit _] +[scope_exit vectype] --- 1 --- [check_dims] vectype --- 2 --- --- 3 --- --- 4 --- -[visit_id vectype] -[visit_id _] not free -[visit_id _] no dims -[visit_exp vectype] -[visit_id vectype] not free [check_dims] ---- 1 --- [check_dims] ---- 2 --- ---- 3 --- ---- 4 --- +[scope_enter u31] +[visit_id u31] not free [visit_id u31] no dims -[visit_id u31] +[scope_exit u31] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter structaddr] +[visit_id structaddr] not free [visit_id structaddr] no dims -[visit_id structaddr] +[scope_exit structaddr] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter arrayaddr] +[visit_id arrayaddr] not free [visit_id arrayaddr] no dims -[visit_id arrayaddr] +[scope_exit arrayaddr] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter funcaddr] +[visit_id funcaddr] not free [visit_id funcaddr] no dims -[visit_id funcaddr] +[scope_exit funcaddr] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter exnaddr] +[visit_id exnaddr] not free [visit_id exnaddr] no dims -[visit_id exnaddr] +[scope_exit exnaddr] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter hostaddr] +[visit_id hostaddr] not free [visit_id hostaddr] no dims -[visit_id hostaddr] +[scope_exit hostaddr] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id addrref] no dims -[visit_id addrref] [check_dims] +[scope_enter addrref] +[visit_id addrref] not free +[visit_id addrref] no dims +[scope_exit addrref] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id heaptype] no dims -[visit_id heaptype] [check_dims] [check_dims] +[scope_enter heaptype] +[visit_id heaptype] not free +[visit_id heaptype] no dims +[scope_exit heaptype] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[check_dims] +[scope_enter val*] +[visit_id val*] not free [visit_id val*] no dims -[visit_id val*] +[scope_exit val*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter exnaddr] +[visit_id exnaddr] not free [visit_id exnaddr] no dims -[visit_id exnaddr] +[scope_exit exnaddr] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- [check_dims] -[check_dims] -[check_dims] --- 1 --- [check_dims] --- 2 --- @@ -47870,360 +40256,516 @@ DecD ivdot_sat_(N : N, iN(N)*, iN(N)*) : iN(N)* --- 4 --- [check_dims] [check_dims] +[check_dims] +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id tagtype] no dims -[visit_id tagtype] [check_dims] +[check_dims] +[check_dims] +[scope_enter tagtype] +[visit_id tagtype] not free +[visit_id tagtype] no dims +[scope_exit tagtype] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter globaltype] +[visit_id globaltype] not free [visit_id globaltype] no dims -[visit_id globaltype] +[scope_exit globaltype] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id val] no dims -[visit_id val] [check_dims] +[scope_enter val] +[visit_id val] not free +[visit_id val] no dims +[scope_exit val] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter memtype] +[visit_id memtype] not free [visit_id memtype] no dims -[visit_id memtype] +[scope_exit memtype] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id byte*] no dims -[visit_id byte*] [check_dims] +[scope_enter byte*] +[visit_id byte*] not free +[visit_id byte*] no dims +[scope_exit byte*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter tabletype] +[visit_id tabletype] not free [visit_id tabletype] no dims -[visit_id tabletype] +[scope_exit tabletype] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id ref*] no dims -[visit_id ref*] [check_dims] +[scope_enter ref*] +[visit_id ref*] not free +[visit_id ref*] no dims +[scope_exit ref*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter deftype] +[visit_id deftype] not free [visit_id deftype] no dims -[visit_id deftype] +[scope_exit deftype] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter moduleinst] +[visit_id moduleinst] not free [visit_id moduleinst] no dims -[visit_id moduleinst] +[scope_exit moduleinst] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id funccode] no dims -[visit_id funccode] [check_dims] +[scope_enter funccode] +[visit_id funccode] not free +[visit_id funccode] no dims +[scope_exit funccode] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id byte*] no dims -[visit_id byte*] [check_dims] +[check_dims] +[scope_enter byte*] +[visit_id byte*] not free +[visit_id byte*] no dims +[scope_exit byte*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter elemtype] +[visit_id elemtype] not free [visit_id elemtype] no dims -[visit_id elemtype] +[scope_exit elemtype] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id ref*] no dims -[visit_id ref*] [check_dims] +[scope_enter ref*] +[visit_id ref*] not free +[visit_id ref*] no dims +[scope_exit ref*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter name] +[visit_id name] not free [visit_id name] no dims -[visit_id name] +[scope_exit name] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id externaddr] no dims -[visit_id externaddr] [check_dims] +[scope_enter externaddr] +[visit_id externaddr] not free +[visit_id externaddr] no dims +[scope_exit externaddr] --- 1 --- -[check_dims] packtype +[check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id packtype] -[visit_id _] not free -[visit_id _] no dims +[check_dims] +[check_dims] packtype +[scope_enter packtype] +[visit_id packtype] not free [visit_exp $psizenn(packtype)] [visit_exp packtype] [visit_id packtype] not free -[check_dims] -[check_dims] +[scope_enter _] +[visit_id _] not free +[visit_id _] no dims +[scope_exit _] +[scope_exit packtype] --- 1 --- -[check_dims] +[check_dims] packtype --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[check_dims] +[scope_enter deftype] +[visit_id deftype] not free [visit_id deftype] no dims -[visit_id deftype] +[scope_exit deftype] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id fieldval*] no dims -[visit_id fieldval*] [check_dims] +[scope_enter fieldval*] +[visit_id fieldval*] not free +[visit_id fieldval*] no dims +[scope_exit fieldval*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter deftype] +[visit_id deftype] not free [visit_id deftype] no dims -[visit_id deftype] +[scope_exit deftype] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id fieldval*] no dims -[visit_id fieldval*] [check_dims] +[scope_enter fieldval*] +[visit_id fieldval*] not free +[visit_id fieldval*] no dims +[scope_exit fieldval*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter tagaddr] +[visit_id tagaddr] not free [visit_id tagaddr] no dims -[visit_id tagaddr] +[scope_exit tagaddr] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id val*] no dims -[visit_id val*] [check_dims] +[scope_enter val*] +[visit_id val*] not free +[visit_id val*] no dims +[scope_exit val*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter deftype*] +[visit_id deftype*] not free [visit_id deftype*] no dims -[visit_id deftype*] +[scope_exit deftype*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter tagaddr*] +[visit_id tagaddr*] not free [visit_id tagaddr*] no dims -[visit_id tagaddr*] +[scope_exit tagaddr*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter globaladdr*] +[visit_id globaladdr*] not free [visit_id globaladdr*] no dims -[visit_id globaladdr*] +[scope_exit globaladdr*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter memaddr*] +[visit_id memaddr*] not free [visit_id memaddr*] no dims -[visit_id memaddr*] +[scope_exit memaddr*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter tableaddr*] +[visit_id tableaddr*] not free [visit_id tableaddr*] no dims -[visit_id tableaddr*] +[scope_exit tableaddr*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter funcaddr*] +[visit_id funcaddr*] not free [visit_id funcaddr*] no dims -[visit_id funcaddr*] +[scope_exit funcaddr*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter dataaddr*] +[visit_id dataaddr*] not free [visit_id dataaddr*] no dims -[visit_id dataaddr*] +[scope_exit dataaddr*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter elemaddr*] +[visit_id elemaddr*] not free [visit_id elemaddr*] no dims -[visit_id elemaddr*] +[scope_exit elemaddr*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id exportinst*] no dims -[visit_id exportinst*] [check_dims] +[scope_enter exportinst*] +[visit_id exportinst*] not free +[visit_id exportinst*] no dims +[scope_exit exportinst*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter taginst*] +[visit_id taginst*] not free [visit_id taginst*] no dims -[visit_id taginst*] +[scope_exit taginst*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter globalinst*] +[visit_id globalinst*] not free [visit_id globalinst*] no dims -[visit_id globalinst*] +[scope_exit globalinst*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter meminst*] +[visit_id meminst*] not free [visit_id meminst*] no dims -[visit_id meminst*] +[scope_exit meminst*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter tableinst*] +[visit_id tableinst*] not free [visit_id tableinst*] no dims -[visit_id tableinst*] +[scope_exit tableinst*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter funcinst*] +[visit_id funcinst*] not free [visit_id funcinst*] no dims -[visit_id funcinst*] +[scope_exit funcinst*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter datainst*] +[visit_id datainst*] not free [visit_id datainst*] no dims -[visit_id datainst*] +[scope_exit datainst*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter eleminst*] +[visit_id eleminst*] not free [visit_id eleminst*] no dims -[visit_id eleminst*] +[scope_exit eleminst*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter structinst*] +[visit_id structinst*] not free [visit_id structinst*] no dims -[visit_id structinst*] +[scope_exit structinst*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter arrayinst*] +[visit_id arrayinst*] not free [visit_id arrayinst*] no dims -[visit_id arrayinst*] +[scope_exit arrayinst*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id exninst*] no dims -[visit_id exninst*] [check_dims] +[scope_enter exninst*] +[visit_id exninst*] not free +[visit_id exninst*] no dims +[scope_exit exninst*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter val?*] +[visit_id val?*] not free [visit_id val?*] no dims -[visit_id val?*] +[scope_exit val?*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id moduleinst] no dims -[visit_id moduleinst] [check_dims] +[scope_enter moduleinst] +[visit_id moduleinst] not free +[visit_id moduleinst] no dims +[scope_exit moduleinst] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter n] +[visit_id n] not free [visit_id n] no dims -[visit_id n] +[scope_enter instr*] +[visit_id instr*] not free [visit_id instr*] no dims -[visit_id instr*] +[scope_enter instr*] [visit_id instr*] not free [visit_id instr*] no dims +[scope_exit instr*] +[scope_exit instr*] +[scope_exit n] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter n] +[visit_id n] not free [visit_id n] no dims -[visit_id n] +[scope_enter frame] +[visit_id frame] not free [visit_id frame] no dims -[visit_id frame] +[scope_enter instr*] +[visit_id instr*] not free [visit_id instr*] no dims -[visit_id instr*] +[scope_exit instr*] +[scope_exit frame] +[scope_exit n] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter n] +[visit_id n] not free [visit_id n] no dims -[visit_id n] +[scope_enter catch*] +[visit_id catch*] not free [visit_id catch*] no dims -[visit_id catch*] +[scope_enter instr*] +[visit_id instr*] not free [visit_id instr*] no dims -[visit_id instr*] +[scope_exit instr*] +[scope_exit catch*] +[scope_exit n] --- 1 --- [check_dims] --- 2 --- @@ -48235,20 +40777,36 @@ DecD ivdot_sat_(N : N, iN(N)*, iN(N)*) : iN(N)* --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter store] +[visit_id store] not free [visit_id store] no dims -[visit_id store] +[scope_enter frame] +[visit_id frame] not free [visit_id frame] no dims -[visit_id frame] -[check_dims] +[scope_exit frame] +[scope_exit store] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[scope_enter state] +[visit_id state] not free [visit_id state] no dims -[visit_id state] +[scope_enter instr*] +[visit_id instr*] not free [visit_id instr*] no dims -[visit_id instr*] +[scope_exit instr*] +[scope_exit state] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- [check_dims] [check_dims] [check_dims] @@ -48292,21 +40850,17 @@ DecD unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $packfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), val) = (val : val <: fieldval) -[check_dims] i numtype#33 packtype packtype#1 +[check_dims] i packtype [visit_exp (packtype : packtype <: storagetype)] [visit_exp packtype] [visit_id packtype] -[visit_exp `CONST`_val{numtype#33}(`I32`_numtype, i)] -[visit_exp numtype#33] -[visit_id numtype#33] +[visit_exp `CONST`_val(`I32`_numtype, i)] [visit_exp (`I32`_numtype, i)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp i] [visit_id i] -[visit_exp `PACK`_fieldval{packtype#1}(packtype, $wrap__(32, $psize(packtype), i))] -[visit_exp packtype#1] -[visit_id packtype#1] +[visit_exp `PACK`_fieldval(packtype, $wrap__(32, $psize(packtype), i))] [visit_exp (packtype, $wrap__(32, $psize(packtype), i))] [visit_exp packtype] [visit_id packtype] not free @@ -48319,7 +40873,7 @@ DecD unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val [visit_id i] not free => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{packtype : packtype, numtype#33 : numtype, i : num_(`I32`_numtype), packtype#1 : packtype}((packtype : packtype <: storagetype), `CONST`_val{numtype#33}(`I32`_numtype, i)) = `PACK`_fieldval{packtype#1}(packtype, $wrap__(32, $psize(packtype), i)) + def $packfield_{packtype : packtype, i : num_(`I32`_numtype)}((packtype : packtype <: storagetype), `CONST`_val(`I32`_numtype, i)) = `PACK`_fieldval(packtype, $wrap__(32, $psize(packtype), i)) [check_dims] val valtype [visit_exp (valtype : valtype <: storagetype)] [visit_exp valtype] @@ -48333,24 +40887,20 @@ DecD 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 -[check_dims] i numtype#35 packtype packtype#3 sx +[check_dims] i packtype sx [visit_exp (packtype : packtype <: storagetype)] [visit_exp packtype] [visit_id packtype] [visit_exp ?(sx)] [visit_exp sx] [visit_id sx] -[visit_exp `PACK`_fieldval{packtype#3}(packtype, i)] -[visit_exp packtype#3] -[visit_id packtype#3] +[visit_exp `PACK`_fieldval(packtype, i)] [visit_exp (packtype, i)] [visit_exp packtype] [visit_id packtype] not free [visit_exp i] [visit_id i] -[visit_exp `CONST`_val{numtype#35}(`I32`_numtype, $extend__($psize(packtype), 32, sx, i))] -[visit_exp numtype#35] -[visit_id numtype#35] +[visit_exp `CONST`_val(`I32`_numtype, $extend__($psize(packtype), 32, sx, i))] [visit_exp (`I32`_numtype, $extend__($psize(packtype), 32, sx, i))] [visit_exp `I32`_numtype] [visit_exp ()] @@ -48365,7 +40915,7 @@ DecD unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val [visit_id i] not free => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{packtype : packtype, sx : sx, packtype#3 : packtype, i : iN($psizenn(packtype)), numtype#35 : numtype}((packtype : packtype <: storagetype), ?(sx), `PACK`_fieldval{packtype#3}(packtype, i)) = `CONST`_val{numtype#35}(`I32`_numtype, $extend__($psize(packtype), 32, sx, i)) + 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)) [check_dims] _ DecD tagsxa(externaddr*) : tagaddr* [visit_id _] not free @@ -48387,12 +40937,10 @@ DecD funcsxa(externaddr*) : funcaddr* => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tagsxa([]) = [] -[check_dims] a tagaddr#1 xa -[visit_exp [`TAG`_externaddr{tagaddr#1}(a)] ++ xa*{xa <- `xa*`}] -[visit_exp [`TAG`_externaddr{tagaddr#1}(a)]] -[visit_exp `TAG`_externaddr{tagaddr#1}(a)] -[visit_exp tagaddr#1] -[visit_id tagaddr#1] +[check_dims] a xa +[visit_exp [`TAG`_externaddr(a)] ++ xa*{xa <- `xa*`}] +[visit_exp [`TAG`_externaddr(a)]] +[visit_exp `TAG`_externaddr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] @@ -48421,7 +40969,7 @@ DecD funcsxa(externaddr*) : funcaddr* [visit_id xa*] no dims => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $tagsxa{tagaddr#1 : tagaddr, a : addr, `xa*` : externaddr*}([`TAG`_externaddr{tagaddr#1}(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tagsxa(xa*{xa <- `xa*`}) + def $tagsxa{a : addr, `xa*` : externaddr*}([`TAG`_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tagsxa(xa*{xa <- `xa*`}) [check_dims] externaddr xa [visit_exp [externaddr] ++ xa*{xa <- `xa*`}] [visit_exp [externaddr]] @@ -48456,12 +41004,10 @@ DecD funcsxa(externaddr*) : funcaddr* => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $globalsxa([]) = [] -[check_dims] a globaladdr#1 xa -[visit_exp [`GLOBAL`_externaddr{globaladdr#1}(a)] ++ xa*{xa <- `xa*`}] -[visit_exp [`GLOBAL`_externaddr{globaladdr#1}(a)]] -[visit_exp `GLOBAL`_externaddr{globaladdr#1}(a)] -[visit_exp globaladdr#1] -[visit_id globaladdr#1] +[check_dims] a xa +[visit_exp [`GLOBAL`_externaddr(a)] ++ xa*{xa <- `xa*`}] +[visit_exp [`GLOBAL`_externaddr(a)]] +[visit_exp `GLOBAL`_externaddr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] @@ -48490,7 +41036,7 @@ DecD funcsxa(externaddr*) : funcaddr* [visit_id xa*] no dims => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $globalsxa{globaladdr#1 : globaladdr, a : addr, `xa*` : externaddr*}([`GLOBAL`_externaddr{globaladdr#1}(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $globalsxa(xa*{xa <- `xa*`}) + def $globalsxa{a : addr, `xa*` : externaddr*}([`GLOBAL`_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $globalsxa(xa*{xa <- `xa*`}) [check_dims] externaddr xa [visit_exp [externaddr] ++ xa*{xa <- `xa*`}] [visit_exp [externaddr]] @@ -48525,12 +41071,10 @@ DecD funcsxa(externaddr*) : funcaddr* => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $memsxa([]) = [] -[check_dims] a memaddr#1 xa -[visit_exp [`MEM`_externaddr{memaddr#1}(a)] ++ xa*{xa <- `xa*`}] -[visit_exp [`MEM`_externaddr{memaddr#1}(a)]] -[visit_exp `MEM`_externaddr{memaddr#1}(a)] -[visit_exp memaddr#1] -[visit_id memaddr#1] +[check_dims] a xa +[visit_exp [`MEM`_externaddr(a)] ++ xa*{xa <- `xa*`}] +[visit_exp [`MEM`_externaddr(a)]] +[visit_exp `MEM`_externaddr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] @@ -48559,7 +41103,7 @@ DecD funcsxa(externaddr*) : funcaddr* [visit_id xa*] no dims => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $memsxa{memaddr#1 : memaddr, a : addr, `xa*` : externaddr*}([`MEM`_externaddr{memaddr#1}(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $memsxa(xa*{xa <- `xa*`}) + def $memsxa{a : addr, `xa*` : externaddr*}([`MEM`_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $memsxa(xa*{xa <- `xa*`}) [check_dims] externaddr xa [visit_exp [externaddr] ++ xa*{xa <- `xa*`}] [visit_exp [externaddr]] @@ -48594,12 +41138,10 @@ DecD funcsxa(externaddr*) : funcaddr* => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tablesxa([]) = [] -[check_dims] a tableaddr#1 xa -[visit_exp [`TABLE`_externaddr{tableaddr#1}(a)] ++ xa*{xa <- `xa*`}] -[visit_exp [`TABLE`_externaddr{tableaddr#1}(a)]] -[visit_exp `TABLE`_externaddr{tableaddr#1}(a)] -[visit_exp tableaddr#1] -[visit_id tableaddr#1] +[check_dims] a xa +[visit_exp [`TABLE`_externaddr(a)] ++ xa*{xa <- `xa*`}] +[visit_exp [`TABLE`_externaddr(a)]] +[visit_exp `TABLE`_externaddr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] @@ -48628,7 +41170,7 @@ DecD funcsxa(externaddr*) : funcaddr* [visit_id xa*] no dims => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $tablesxa{tableaddr#1 : tableaddr, a : addr, `xa*` : externaddr*}([`TABLE`_externaddr{tableaddr#1}(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tablesxa(xa*{xa <- `xa*`}) + def $tablesxa{a : addr, `xa*` : externaddr*}([`TABLE`_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tablesxa(xa*{xa <- `xa*`}) [check_dims] externaddr xa [visit_exp [externaddr] ++ xa*{xa <- `xa*`}] [visit_exp [externaddr]] @@ -48663,12 +41205,10 @@ DecD funcsxa(externaddr*) : funcaddr* => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $funcsxa([]) = [] -[check_dims] a funcaddr#1 xa -[visit_exp [`FUNC`_externaddr{funcaddr#1}(a)] ++ xa*{xa <- `xa*`}] -[visit_exp [`FUNC`_externaddr{funcaddr#1}(a)]] -[visit_exp `FUNC`_externaddr{funcaddr#1}(a)] -[visit_exp funcaddr#1] -[visit_id funcaddr#1] +[check_dims] a xa +[visit_exp [`FUNC`_externaddr(a)] ++ xa*{xa <- `xa*`}] +[visit_exp [`FUNC`_externaddr(a)]] +[visit_exp `FUNC`_externaddr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] @@ -48697,7 +41237,7 @@ DecD funcsxa(externaddr*) : funcaddr* [visit_id xa*] no dims => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $funcsxa{funcaddr#1 : funcaddr, a : addr, `xa*` : externaddr*}([`FUNC`_externaddr{funcaddr#1}(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $funcsxa(xa*{xa <- `xa*`}) + def $funcsxa{a : addr, `xa*` : externaddr*}([`FUNC`_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $funcsxa(xa*{xa <- `xa*`}) [check_dims] externaddr xa [visit_exp [externaddr] ++ xa*{xa <- `xa*`}] [visit_exp [externaddr]] @@ -48732,12 +41272,8 @@ DecD store(state : state) : store [check_dims] state DecD frame(state : state) : frame [visit_id state] not free -[check_dims] f frame#11 s store#11 -[visit_exp `%;%`_state{store#11, frame#11}(s, f)] -[visit_exp store#11] -[visit_id store#11] -[visit_exp frame#11] -[visit_id frame#11] +[check_dims] f s +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] @@ -48747,13 +41283,9 @@ DecD frame(state : state) : frame [visit_id s] not free => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $store{store#11 : store, frame#11 : frame, s : store, f : frame}(`%;%`_state{store#11, frame#11}(s, f)) = s -[check_dims] f frame#23 s store#23 -[visit_exp `%;%`_state{store#23, frame#23}(s, f)] -[visit_exp store#23] -[visit_id store#23] -[visit_exp frame#23] -[visit_id frame#23] + def $store{s : store, f : frame}(`%;%`_state(s, f)) = s +[check_dims] f s +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] @@ -48763,32 +41295,24 @@ DecD frame(state : state) : frame [visit_id f] not free => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $frame{store#23 : store, frame#23 : frame, s : store, f : frame}(`%;%`_state{store#23, frame#23}(s, f)) = f + def $frame{s : store, f : frame}(`%;%`_state(s, f)) = f [check_dims] state DecD tagaddr(state : state) : tagaddr* [visit_id state] not free -[check_dims] f frame#35 moduleinst#2 s store#35 tagaddr*#2 -[visit_exp `%;%`_state{store#35, frame#35}(s, f)] -[visit_exp store#35] -[visit_id store#35] -[visit_exp frame#35] -[visit_id frame#35] +[check_dims] f s +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] [visit_exp f] [visit_id f] -[visit_exp f.`MODULE`_frame{moduleinst#2}.`TAGS`_moduleinst{`tagaddr*#2`}] -[visit_exp f.`MODULE`_frame{moduleinst#2}] +[visit_exp f.`MODULE`_frame.`TAGS`_moduleinst] +[visit_exp f.`MODULE`_frame] [visit_exp f] [visit_id f] not free -[visit_exp moduleinst#2] -[visit_id moduleinst#2] -[visit_exp `tagaddr*#2`] -[visit_id tagaddr*#2] => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $tagaddr{store#35 : store, frame#35 : frame, s : store, f : frame, moduleinst#2 : moduleinst, `tagaddr*#2` : tagaddr*}(`%;%`_state{store#35, frame#35}(s, f)) = f.`MODULE`_frame{moduleinst#2}.`TAGS`_moduleinst{`tagaddr*#2`} + def $tagaddr{s : store, f : frame}(`%;%`_state(s, f)) = f.`MODULE`_frame.`TAGS`_moduleinst [check_dims] state DecD moduleinst(state : state) : moduleinst [visit_id state] not free @@ -48822,215 +41346,149 @@ DecD arrayinst(state : state) : arrayinst* [check_dims] state DecD exninst(state : state) : exninst* [visit_id state] not free -[check_dims] f frame#47 moduleinst#3 s store#47 -[visit_exp `%;%`_state{store#47, frame#47}(s, f)] -[visit_exp store#47] -[visit_id store#47] -[visit_exp frame#47] -[visit_id frame#47] +[check_dims] f s +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] [visit_exp f] [visit_id f] -[visit_exp f.`MODULE`_frame{moduleinst#3}] +[visit_exp f.`MODULE`_frame] [visit_exp f] [visit_id f] not free -[visit_exp moduleinst#3] -[visit_id moduleinst#3] => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $moduleinst{store#47 : store, frame#47 : frame, s : store, f : frame, moduleinst#3 : moduleinst}(`%;%`_state{store#47, frame#47}(s, f)) = f.`MODULE`_frame{moduleinst#3} -[check_dims] f frame#59 s store#59 taginst*#2 -[visit_exp `%;%`_state{store#59, frame#59}(s, f)] -[visit_exp store#59] -[visit_id store#59] -[visit_exp frame#59] -[visit_id frame#59] + def $moduleinst{s : store, f : frame}(`%;%`_state(s, f)) = f.`MODULE`_frame +[check_dims] f s +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] [visit_exp f] [visit_id f] -[visit_exp s.`TAGS`_store{`taginst*#2`}] +[visit_exp s.`TAGS`_store] [visit_exp s] [visit_id s] not free -[visit_exp `taginst*#2`] -[visit_id taginst*#2] => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $taginst{store#59 : store, frame#59 : frame, s : store, f : frame, `taginst*#2` : taginst*}(`%;%`_state{store#59, frame#59}(s, f)) = s.`TAGS`_store{`taginst*#2`} -[check_dims] f frame#71 globalinst*#2 s store#71 -[visit_exp `%;%`_state{store#71, frame#71}(s, f)] -[visit_exp store#71] -[visit_id store#71] -[visit_exp frame#71] -[visit_id frame#71] + def $taginst{s : store, f : frame}(`%;%`_state(s, f)) = s.`TAGS`_store +[check_dims] f s +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] [visit_exp f] [visit_id f] -[visit_exp s.`GLOBALS`_store{`globalinst*#2`}] +[visit_exp s.`GLOBALS`_store] [visit_exp s] [visit_id s] not free -[visit_exp `globalinst*#2`] -[visit_id globalinst*#2] => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $globalinst{store#71 : store, frame#71 : frame, s : store, f : frame, `globalinst*#2` : globalinst*}(`%;%`_state{store#71, frame#71}(s, f)) = s.`GLOBALS`_store{`globalinst*#2`} -[check_dims] f frame#83 meminst*#2 s store#83 -[visit_exp `%;%`_state{store#83, frame#83}(s, f)] -[visit_exp store#83] -[visit_id store#83] -[visit_exp frame#83] -[visit_id frame#83] + def $globalinst{s : store, f : frame}(`%;%`_state(s, f)) = s.`GLOBALS`_store +[check_dims] f s +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] [visit_exp f] [visit_id f] -[visit_exp s.`MEMS`_store{`meminst*#2`}] +[visit_exp s.`MEMS`_store] [visit_exp s] [visit_id s] not free -[visit_exp `meminst*#2`] -[visit_id meminst*#2] => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $meminst{store#83 : store, frame#83 : frame, s : store, f : frame, `meminst*#2` : meminst*}(`%;%`_state{store#83, frame#83}(s, f)) = s.`MEMS`_store{`meminst*#2`} -[check_dims] f frame#95 s store#95 tableinst*#2 -[visit_exp `%;%`_state{store#95, frame#95}(s, f)] -[visit_exp store#95] -[visit_id store#95] -[visit_exp frame#95] -[visit_id frame#95] + def $meminst{s : store, f : frame}(`%;%`_state(s, f)) = s.`MEMS`_store +[check_dims] f s +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] [visit_exp f] [visit_id f] -[visit_exp s.`TABLES`_store{`tableinst*#2`}] +[visit_exp s.`TABLES`_store] [visit_exp s] [visit_id s] not free -[visit_exp `tableinst*#2`] -[visit_id tableinst*#2] => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $tableinst{store#95 : store, frame#95 : frame, s : store, f : frame, `tableinst*#2` : tableinst*}(`%;%`_state{store#95, frame#95}(s, f)) = s.`TABLES`_store{`tableinst*#2`} -[check_dims] f frame#107 funcinst*#2 s store#107 -[visit_exp `%;%`_state{store#107, frame#107}(s, f)] -[visit_exp store#107] -[visit_id store#107] -[visit_exp frame#107] -[visit_id frame#107] + def $tableinst{s : store, f : frame}(`%;%`_state(s, f)) = s.`TABLES`_store +[check_dims] f s +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] [visit_exp f] [visit_id f] -[visit_exp s.`FUNCS`_store{`funcinst*#2`}] +[visit_exp s.`FUNCS`_store] [visit_exp s] [visit_id s] not free -[visit_exp `funcinst*#2`] -[visit_id funcinst*#2] => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $funcinst{store#107 : store, frame#107 : frame, s : store, f : frame, `funcinst*#2` : funcinst*}(`%;%`_state{store#107, frame#107}(s, f)) = s.`FUNCS`_store{`funcinst*#2`} -[check_dims] datainst*#2 f frame#119 s store#119 -[visit_exp `%;%`_state{store#119, frame#119}(s, f)] -[visit_exp store#119] -[visit_id store#119] -[visit_exp frame#119] -[visit_id frame#119] + def $funcinst{s : store, f : frame}(`%;%`_state(s, f)) = s.`FUNCS`_store +[check_dims] f s +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] [visit_exp f] [visit_id f] -[visit_exp s.`DATAS`_store{`datainst*#2`}] +[visit_exp s.`DATAS`_store] [visit_exp s] [visit_id s] not free -[visit_exp `datainst*#2`] -[visit_id datainst*#2] => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $datainst{store#119 : store, frame#119 : frame, s : store, f : frame, `datainst*#2` : datainst*}(`%;%`_state{store#119, frame#119}(s, f)) = s.`DATAS`_store{`datainst*#2`} -[check_dims] eleminst*#2 f frame#131 s store#131 -[visit_exp `%;%`_state{store#131, frame#131}(s, f)] -[visit_exp store#131] -[visit_id store#131] -[visit_exp frame#131] -[visit_id frame#131] + def $datainst{s : store, f : frame}(`%;%`_state(s, f)) = s.`DATAS`_store +[check_dims] f s +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] [visit_exp f] [visit_id f] -[visit_exp s.`ELEMS`_store{`eleminst*#2`}] +[visit_exp s.`ELEMS`_store] [visit_exp s] [visit_id s] not free -[visit_exp `eleminst*#2`] -[visit_id eleminst*#2] => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $eleminst{store#131 : store, frame#131 : frame, s : store, f : frame, `eleminst*#2` : eleminst*}(`%;%`_state{store#131, frame#131}(s, f)) = s.`ELEMS`_store{`eleminst*#2`} -[check_dims] f frame#143 s store#143 structinst*#2 -[visit_exp `%;%`_state{store#143, frame#143}(s, f)] -[visit_exp store#143] -[visit_id store#143] -[visit_exp frame#143] -[visit_id frame#143] + def $eleminst{s : store, f : frame}(`%;%`_state(s, f)) = s.`ELEMS`_store +[check_dims] f s +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] [visit_exp f] [visit_id f] -[visit_exp s.`STRUCTS`_store{`structinst*#2`}] +[visit_exp s.`STRUCTS`_store] [visit_exp s] [visit_id s] not free -[visit_exp `structinst*#2`] -[visit_id structinst*#2] => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $structinst{store#143 : store, frame#143 : frame, s : store, f : frame, `structinst*#2` : structinst*}(`%;%`_state{store#143, frame#143}(s, f)) = s.`STRUCTS`_store{`structinst*#2`} -[check_dims] arrayinst*#2 f frame#155 s store#155 -[visit_exp `%;%`_state{store#155, frame#155}(s, f)] -[visit_exp store#155] -[visit_id store#155] -[visit_exp frame#155] -[visit_id frame#155] + def $structinst{s : store, f : frame}(`%;%`_state(s, f)) = s.`STRUCTS`_store +[check_dims] f s +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] [visit_exp f] [visit_id f] -[visit_exp s.`ARRAYS`_store{`arrayinst*#2`}] +[visit_exp s.`ARRAYS`_store] [visit_exp s] [visit_id s] not free -[visit_exp `arrayinst*#2`] -[visit_id arrayinst*#2] => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $arrayinst{store#155 : store, frame#155 : frame, s : store, f : frame, `arrayinst*#2` : arrayinst*}(`%;%`_state{store#155, frame#155}(s, f)) = s.`ARRAYS`_store{`arrayinst*#2`} -[check_dims] exninst*#2 f frame#167 s store#167 -[visit_exp `%;%`_state{store#167, frame#167}(s, f)] -[visit_exp store#167] -[visit_id store#167] -[visit_exp frame#167] -[visit_id frame#167] + def $arrayinst{s : store, f : frame}(`%;%`_state(s, f)) = s.`ARRAYS`_store +[check_dims] f s +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] [visit_exp f] [visit_id f] -[visit_exp s.`EXNS`_store{`exninst*#2`}] +[visit_exp s.`EXNS`_store] [visit_exp s] [visit_id s] not free -[visit_exp `exninst*#2`] -[visit_id exninst*#2] => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $exninst{store#167 : store, frame#167 : frame, s : store, f : frame, `exninst*#2` : exninst*}(`%;%`_state{store#167, frame#167}(s, f)) = s.`EXNS`_store{`exninst*#2`} + def $exninst{s : store, f : frame}(`%;%`_state(s, f)) = s.`EXNS`_store [check_dims] state typeidx DecD type(state : state, typeidx : typeidx) : deftype [visit_id state] not free @@ -49067,12 +41525,8 @@ DecD elem(state : state, tableidx : tableidx) : eleminst DecD local(state : state, localidx : localidx) : val? [visit_id state] not free [visit_id localidx] not free -[check_dims] deftype*#74 f frame#179 i#30957 moduleinst#4 s store#179 x -[visit_exp `%;%`_state{store#179, frame#179}(s, f)] -[visit_exp store#179] -[visit_id store#179] -[visit_exp frame#179] -[visit_id frame#179] +[check_dims] f s x +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] @@ -49080,30 +41534,20 @@ DecD local(state : state, localidx : localidx) : val? [visit_id f] [visit_exp x] [visit_id x] -[visit_exp f.`MODULE`_frame{moduleinst#4}.`TYPES`_moduleinst{`deftype*#74`}[x!`%`_idx{i#30957}.0]] -[visit_exp f.`MODULE`_frame{moduleinst#4}.`TYPES`_moduleinst{`deftype*#74`}] -[visit_exp f.`MODULE`_frame{moduleinst#4}] +[visit_exp f.`MODULE`_frame.`TYPES`_moduleinst[x!`%`_idx.0]] +[visit_exp f.`MODULE`_frame.`TYPES`_moduleinst] +[visit_exp f.`MODULE`_frame] [visit_exp f] [visit_id f] not free -[visit_exp moduleinst#4] -[visit_id moduleinst#4] -[visit_exp `deftype*#74`] -[visit_id deftype*#74] -[visit_exp x!`%`_idx{i#30957}.0] -[visit_exp x!`%`_idx{i#30957}] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] [visit_exp x] [visit_id x] not free -[visit_exp i#30957] -[visit_id i#30957] => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $type{store#179 : store, frame#179 : frame, s : store, f : frame, x : idx, moduleinst#4 : moduleinst, `deftype*#74` : deftype*, i#30957 : nat}(`%;%`_state{store#179, frame#179}(s, f), x) = f.`MODULE`_frame{moduleinst#4}.`TYPES`_moduleinst{`deftype*#74`}[x!`%`_idx{i#30957}.0] -[check_dims] f frame#191 i#30979 moduleinst#5 s store#191 tagaddr*#3 taginst*#3 x -[visit_exp `%;%`_state{store#191, frame#191}(s, f)] -[visit_exp store#191] -[visit_id store#191] -[visit_exp frame#191] -[visit_id frame#191] + def $type{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = f.`MODULE`_frame.`TYPES`_moduleinst[x!`%`_idx.0] +[check_dims] f s x +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] @@ -49111,36 +41555,24 @@ DecD local(state : state, localidx : localidx) : val? [visit_id f] [visit_exp x] [visit_id x] -[visit_exp s.`TAGS`_store{`taginst*#3`}[f.`MODULE`_frame{moduleinst#5}.`TAGS`_moduleinst{`tagaddr*#3`}[x!`%`_idx{i#30979}.0]]] -[visit_exp s.`TAGS`_store{`taginst*#3`}] +[visit_exp s.`TAGS`_store[f.`MODULE`_frame.`TAGS`_moduleinst[x!`%`_idx.0]]] +[visit_exp s.`TAGS`_store] [visit_exp s] [visit_id s] not free -[visit_exp `taginst*#3`] -[visit_id taginst*#3] -[visit_exp f.`MODULE`_frame{moduleinst#5}.`TAGS`_moduleinst{`tagaddr*#3`}[x!`%`_idx{i#30979}.0]] -[visit_exp f.`MODULE`_frame{moduleinst#5}.`TAGS`_moduleinst{`tagaddr*#3`}] -[visit_exp f.`MODULE`_frame{moduleinst#5}] +[visit_exp f.`MODULE`_frame.`TAGS`_moduleinst[x!`%`_idx.0]] +[visit_exp f.`MODULE`_frame.`TAGS`_moduleinst] +[visit_exp f.`MODULE`_frame] [visit_exp f] [visit_id f] not free -[visit_exp moduleinst#5] -[visit_id moduleinst#5] -[visit_exp `tagaddr*#3`] -[visit_id tagaddr*#3] -[visit_exp x!`%`_idx{i#30979}.0] -[visit_exp x!`%`_idx{i#30979}] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] [visit_exp x] [visit_id x] not free -[visit_exp i#30979] -[visit_id i#30979] => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $tag{store#191 : store, frame#191 : frame, s : store, f : frame, x : idx, `taginst*#3` : taginst*, moduleinst#5 : moduleinst, `tagaddr*#3` : tagaddr*, i#30979 : nat}(`%;%`_state{store#191, frame#191}(s, f), x) = s.`TAGS`_store{`taginst*#3`}[f.`MODULE`_frame{moduleinst#5}.`TAGS`_moduleinst{`tagaddr*#3`}[x!`%`_idx{i#30979}.0]] -[check_dims] f frame#203 globaladdr*#1 globalinst*#3 i#31001 moduleinst#6 s store#203 x -[visit_exp `%;%`_state{store#203, frame#203}(s, f)] -[visit_exp store#203] -[visit_id store#203] -[visit_exp frame#203] -[visit_id frame#203] + def $tag{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = s.`TAGS`_store[f.`MODULE`_frame.`TAGS`_moduleinst[x!`%`_idx.0]] +[check_dims] f s x +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] @@ -49148,36 +41580,24 @@ DecD local(state : state, localidx : localidx) : val? [visit_id f] [visit_exp x] [visit_id x] -[visit_exp s.`GLOBALS`_store{`globalinst*#3`}[f.`MODULE`_frame{moduleinst#6}.`GLOBALS`_moduleinst{`globaladdr*#1`}[x!`%`_idx{i#31001}.0]]] -[visit_exp s.`GLOBALS`_store{`globalinst*#3`}] +[visit_exp s.`GLOBALS`_store[f.`MODULE`_frame.`GLOBALS`_moduleinst[x!`%`_idx.0]]] +[visit_exp s.`GLOBALS`_store] [visit_exp s] [visit_id s] not free -[visit_exp `globalinst*#3`] -[visit_id globalinst*#3] -[visit_exp f.`MODULE`_frame{moduleinst#6}.`GLOBALS`_moduleinst{`globaladdr*#1`}[x!`%`_idx{i#31001}.0]] -[visit_exp f.`MODULE`_frame{moduleinst#6}.`GLOBALS`_moduleinst{`globaladdr*#1`}] -[visit_exp f.`MODULE`_frame{moduleinst#6}] +[visit_exp f.`MODULE`_frame.`GLOBALS`_moduleinst[x!`%`_idx.0]] +[visit_exp f.`MODULE`_frame.`GLOBALS`_moduleinst] +[visit_exp f.`MODULE`_frame] [visit_exp f] [visit_id f] not free -[visit_exp moduleinst#6] -[visit_id moduleinst#6] -[visit_exp `globaladdr*#1`] -[visit_id globaladdr*#1] -[visit_exp x!`%`_idx{i#31001}.0] -[visit_exp x!`%`_idx{i#31001}] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] [visit_exp x] [visit_id x] not free -[visit_exp i#31001] -[visit_id i#31001] => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $global{store#203 : store, frame#203 : frame, s : store, f : frame, x : idx, `globalinst*#3` : globalinst*, moduleinst#6 : moduleinst, `globaladdr*#1` : globaladdr*, i#31001 : nat}(`%;%`_state{store#203, frame#203}(s, f), x) = s.`GLOBALS`_store{`globalinst*#3`}[f.`MODULE`_frame{moduleinst#6}.`GLOBALS`_moduleinst{`globaladdr*#1`}[x!`%`_idx{i#31001}.0]] -[check_dims] f frame#215 i#31023 memaddr*#1 meminst*#3 moduleinst#7 s store#215 x -[visit_exp `%;%`_state{store#215, frame#215}(s, f)] -[visit_exp store#215] -[visit_id store#215] -[visit_exp frame#215] -[visit_id frame#215] + def $global{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = s.`GLOBALS`_store[f.`MODULE`_frame.`GLOBALS`_moduleinst[x!`%`_idx.0]] +[check_dims] f s x +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] @@ -49185,36 +41605,24 @@ DecD local(state : state, localidx : localidx) : val? [visit_id f] [visit_exp x] [visit_id x] -[visit_exp s.`MEMS`_store{`meminst*#3`}[f.`MODULE`_frame{moduleinst#7}.`MEMS`_moduleinst{`memaddr*#1`}[x!`%`_idx{i#31023}.0]]] -[visit_exp s.`MEMS`_store{`meminst*#3`}] +[visit_exp s.`MEMS`_store[f.`MODULE`_frame.`MEMS`_moduleinst[x!`%`_idx.0]]] +[visit_exp s.`MEMS`_store] [visit_exp s] [visit_id s] not free -[visit_exp `meminst*#3`] -[visit_id meminst*#3] -[visit_exp f.`MODULE`_frame{moduleinst#7}.`MEMS`_moduleinst{`memaddr*#1`}[x!`%`_idx{i#31023}.0]] -[visit_exp f.`MODULE`_frame{moduleinst#7}.`MEMS`_moduleinst{`memaddr*#1`}] -[visit_exp f.`MODULE`_frame{moduleinst#7}] +[visit_exp f.`MODULE`_frame.`MEMS`_moduleinst[x!`%`_idx.0]] +[visit_exp f.`MODULE`_frame.`MEMS`_moduleinst] +[visit_exp f.`MODULE`_frame] [visit_exp f] [visit_id f] not free -[visit_exp moduleinst#7] -[visit_id moduleinst#7] -[visit_exp `memaddr*#1`] -[visit_id memaddr*#1] -[visit_exp x!`%`_idx{i#31023}.0] -[visit_exp x!`%`_idx{i#31023}] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] [visit_exp x] [visit_id x] not free -[visit_exp i#31023] -[visit_id i#31023] => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $mem{store#215 : store, frame#215 : frame, s : store, f : frame, x : idx, `meminst*#3` : meminst*, moduleinst#7 : moduleinst, `memaddr*#1` : memaddr*, i#31023 : nat}(`%;%`_state{store#215, frame#215}(s, f), x) = s.`MEMS`_store{`meminst*#3`}[f.`MODULE`_frame{moduleinst#7}.`MEMS`_moduleinst{`memaddr*#1`}[x!`%`_idx{i#31023}.0]] -[check_dims] f frame#227 i#31045 moduleinst#8 s store#227 tableaddr*#1 tableinst*#3 x -[visit_exp `%;%`_state{store#227, frame#227}(s, f)] -[visit_exp store#227] -[visit_id store#227] -[visit_exp frame#227] -[visit_id frame#227] + def $mem{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = s.`MEMS`_store[f.`MODULE`_frame.`MEMS`_moduleinst[x!`%`_idx.0]] +[check_dims] f s x +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] @@ -49222,36 +41630,24 @@ DecD local(state : state, localidx : localidx) : val? [visit_id f] [visit_exp x] [visit_id x] -[visit_exp s.`TABLES`_store{`tableinst*#3`}[f.`MODULE`_frame{moduleinst#8}.`TABLES`_moduleinst{`tableaddr*#1`}[x!`%`_idx{i#31045}.0]]] -[visit_exp s.`TABLES`_store{`tableinst*#3`}] +[visit_exp s.`TABLES`_store[f.`MODULE`_frame.`TABLES`_moduleinst[x!`%`_idx.0]]] +[visit_exp s.`TABLES`_store] [visit_exp s] [visit_id s] not free -[visit_exp `tableinst*#3`] -[visit_id tableinst*#3] -[visit_exp f.`MODULE`_frame{moduleinst#8}.`TABLES`_moduleinst{`tableaddr*#1`}[x!`%`_idx{i#31045}.0]] -[visit_exp f.`MODULE`_frame{moduleinst#8}.`TABLES`_moduleinst{`tableaddr*#1`}] -[visit_exp f.`MODULE`_frame{moduleinst#8}] +[visit_exp f.`MODULE`_frame.`TABLES`_moduleinst[x!`%`_idx.0]] +[visit_exp f.`MODULE`_frame.`TABLES`_moduleinst] +[visit_exp f.`MODULE`_frame] [visit_exp f] [visit_id f] not free -[visit_exp moduleinst#8] -[visit_id moduleinst#8] -[visit_exp `tableaddr*#1`] -[visit_id tableaddr*#1] -[visit_exp x!`%`_idx{i#31045}.0] -[visit_exp x!`%`_idx{i#31045}] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] [visit_exp x] [visit_id x] not free -[visit_exp i#31045] -[visit_id i#31045] => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $table{store#227 : store, frame#227 : frame, s : store, f : frame, x : idx, `tableinst*#3` : tableinst*, moduleinst#8 : moduleinst, `tableaddr*#1` : tableaddr*, i#31045 : nat}(`%;%`_state{store#227, frame#227}(s, f), x) = s.`TABLES`_store{`tableinst*#3`}[f.`MODULE`_frame{moduleinst#8}.`TABLES`_moduleinst{`tableaddr*#1`}[x!`%`_idx{i#31045}.0]] -[check_dims] f frame#239 funcaddr*#1 funcinst*#3 i#31067 moduleinst#9 s store#239 x -[visit_exp `%;%`_state{store#239, frame#239}(s, f)] -[visit_exp store#239] -[visit_id store#239] -[visit_exp frame#239] -[visit_id frame#239] + def $table{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = s.`TABLES`_store[f.`MODULE`_frame.`TABLES`_moduleinst[x!`%`_idx.0]] +[check_dims] f s x +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] @@ -49259,36 +41655,24 @@ DecD local(state : state, localidx : localidx) : val? [visit_id f] [visit_exp x] [visit_id x] -[visit_exp s.`FUNCS`_store{`funcinst*#3`}[f.`MODULE`_frame{moduleinst#9}.`FUNCS`_moduleinst{`funcaddr*#1`}[x!`%`_idx{i#31067}.0]]] -[visit_exp s.`FUNCS`_store{`funcinst*#3`}] +[visit_exp s.`FUNCS`_store[f.`MODULE`_frame.`FUNCS`_moduleinst[x!`%`_idx.0]]] +[visit_exp s.`FUNCS`_store] [visit_exp s] [visit_id s] not free -[visit_exp `funcinst*#3`] -[visit_id funcinst*#3] -[visit_exp f.`MODULE`_frame{moduleinst#9}.`FUNCS`_moduleinst{`funcaddr*#1`}[x!`%`_idx{i#31067}.0]] -[visit_exp f.`MODULE`_frame{moduleinst#9}.`FUNCS`_moduleinst{`funcaddr*#1`}] -[visit_exp f.`MODULE`_frame{moduleinst#9}] +[visit_exp f.`MODULE`_frame.`FUNCS`_moduleinst[x!`%`_idx.0]] +[visit_exp f.`MODULE`_frame.`FUNCS`_moduleinst] +[visit_exp f.`MODULE`_frame] [visit_exp f] [visit_id f] not free -[visit_exp moduleinst#9] -[visit_id moduleinst#9] -[visit_exp `funcaddr*#1`] -[visit_id funcaddr*#1] -[visit_exp x!`%`_idx{i#31067}.0] -[visit_exp x!`%`_idx{i#31067}] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] [visit_exp x] [visit_id x] not free -[visit_exp i#31067] -[visit_id i#31067] => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $func{store#239 : store, frame#239 : frame, s : store, f : frame, x : idx, `funcinst*#3` : funcinst*, moduleinst#9 : moduleinst, `funcaddr*#1` : funcaddr*, i#31067 : nat}(`%;%`_state{store#239, frame#239}(s, f), x) = s.`FUNCS`_store{`funcinst*#3`}[f.`MODULE`_frame{moduleinst#9}.`FUNCS`_moduleinst{`funcaddr*#1`}[x!`%`_idx{i#31067}.0]] -[check_dims] dataaddr*#1 datainst*#3 f frame#251 i#31089 moduleinst#10 s store#251 x -[visit_exp `%;%`_state{store#251, frame#251}(s, f)] -[visit_exp store#251] -[visit_id store#251] -[visit_exp frame#251] -[visit_id frame#251] + def $func{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = s.`FUNCS`_store[f.`MODULE`_frame.`FUNCS`_moduleinst[x!`%`_idx.0]] +[check_dims] f s x +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] @@ -49296,36 +41680,24 @@ DecD local(state : state, localidx : localidx) : val? [visit_id f] [visit_exp x] [visit_id x] -[visit_exp s.`DATAS`_store{`datainst*#3`}[f.`MODULE`_frame{moduleinst#10}.`DATAS`_moduleinst{`dataaddr*#1`}[x!`%`_idx{i#31089}.0]]] -[visit_exp s.`DATAS`_store{`datainst*#3`}] +[visit_exp s.`DATAS`_store[f.`MODULE`_frame.`DATAS`_moduleinst[x!`%`_idx.0]]] +[visit_exp s.`DATAS`_store] [visit_exp s] [visit_id s] not free -[visit_exp `datainst*#3`] -[visit_id datainst*#3] -[visit_exp f.`MODULE`_frame{moduleinst#10}.`DATAS`_moduleinst{`dataaddr*#1`}[x!`%`_idx{i#31089}.0]] -[visit_exp f.`MODULE`_frame{moduleinst#10}.`DATAS`_moduleinst{`dataaddr*#1`}] -[visit_exp f.`MODULE`_frame{moduleinst#10}] +[visit_exp f.`MODULE`_frame.`DATAS`_moduleinst[x!`%`_idx.0]] +[visit_exp f.`MODULE`_frame.`DATAS`_moduleinst] +[visit_exp f.`MODULE`_frame] [visit_exp f] [visit_id f] not free -[visit_exp moduleinst#10] -[visit_id moduleinst#10] -[visit_exp `dataaddr*#1`] -[visit_id dataaddr*#1] -[visit_exp x!`%`_idx{i#31089}.0] -[visit_exp x!`%`_idx{i#31089}] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] [visit_exp x] [visit_id x] not free -[visit_exp i#31089] -[visit_id i#31089] => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $data{store#251 : store, frame#251 : frame, s : store, f : frame, x : idx, `datainst*#3` : datainst*, moduleinst#10 : moduleinst, `dataaddr*#1` : dataaddr*, i#31089 : nat}(`%;%`_state{store#251, frame#251}(s, f), x) = s.`DATAS`_store{`datainst*#3`}[f.`MODULE`_frame{moduleinst#10}.`DATAS`_moduleinst{`dataaddr*#1`}[x!`%`_idx{i#31089}.0]] -[check_dims] elemaddr*#1 eleminst*#3 f frame#263 i#31111 moduleinst#11 s store#263 x -[visit_exp `%;%`_state{store#263, frame#263}(s, f)] -[visit_exp store#263] -[visit_id store#263] -[visit_exp frame#263] -[visit_id frame#263] + def $data{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = s.`DATAS`_store[f.`MODULE`_frame.`DATAS`_moduleinst[x!`%`_idx.0]] +[check_dims] f s x +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] @@ -49333,36 +41705,24 @@ DecD local(state : state, localidx : localidx) : val? [visit_id f] [visit_exp x] [visit_id x] -[visit_exp s.`ELEMS`_store{`eleminst*#3`}[f.`MODULE`_frame{moduleinst#11}.`ELEMS`_moduleinst{`elemaddr*#1`}[x!`%`_idx{i#31111}.0]]] -[visit_exp s.`ELEMS`_store{`eleminst*#3`}] +[visit_exp s.`ELEMS`_store[f.`MODULE`_frame.`ELEMS`_moduleinst[x!`%`_idx.0]]] +[visit_exp s.`ELEMS`_store] [visit_exp s] [visit_id s] not free -[visit_exp `eleminst*#3`] -[visit_id eleminst*#3] -[visit_exp f.`MODULE`_frame{moduleinst#11}.`ELEMS`_moduleinst{`elemaddr*#1`}[x!`%`_idx{i#31111}.0]] -[visit_exp f.`MODULE`_frame{moduleinst#11}.`ELEMS`_moduleinst{`elemaddr*#1`}] -[visit_exp f.`MODULE`_frame{moduleinst#11}] +[visit_exp f.`MODULE`_frame.`ELEMS`_moduleinst[x!`%`_idx.0]] +[visit_exp f.`MODULE`_frame.`ELEMS`_moduleinst] +[visit_exp f.`MODULE`_frame] [visit_exp f] [visit_id f] not free -[visit_exp moduleinst#11] -[visit_id moduleinst#11] -[visit_exp `elemaddr*#1`] -[visit_id elemaddr*#1] -[visit_exp x!`%`_idx{i#31111}.0] -[visit_exp x!`%`_idx{i#31111}] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] [visit_exp x] [visit_id x] not free -[visit_exp i#31111] -[visit_id i#31111] => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $elem{store#263 : store, frame#263 : frame, s : store, f : frame, x : idx, `eleminst*#3` : eleminst*, moduleinst#11 : moduleinst, `elemaddr*#1` : elemaddr*, i#31111 : nat}(`%;%`_state{store#263, frame#263}(s, f), x) = s.`ELEMS`_store{`eleminst*#3`}[f.`MODULE`_frame{moduleinst#11}.`ELEMS`_moduleinst{`elemaddr*#1`}[x!`%`_idx{i#31111}.0]] -[check_dims] f frame#275 i#31143 s store#275 val?*#2 x -[visit_exp `%;%`_state{store#275, frame#275}(s, f)] -[visit_exp store#275] -[visit_id store#275] -[visit_exp frame#275] -[visit_id frame#275] + def $elem{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = s.`ELEMS`_store[f.`MODULE`_frame.`ELEMS`_moduleinst[x!`%`_idx.0]] +[check_dims] f s x +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] @@ -49370,21 +41730,17 @@ DecD local(state : state, localidx : localidx) : val? [visit_id f] [visit_exp x] [visit_id x] -[visit_exp f.`LOCALS`_frame{`val?*#2`}[x!`%`_idx{i#31143}.0]] -[visit_exp f.`LOCALS`_frame{`val?*#2`}] +[visit_exp f.`LOCALS`_frame[x!`%`_idx.0]] +[visit_exp f.`LOCALS`_frame] [visit_exp f] [visit_id f] not free -[visit_exp `val?*#2`] -[visit_id val?*#2] -[visit_exp x!`%`_idx{i#31143}.0] -[visit_exp x!`%`_idx{i#31143}] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] [visit_exp x] [visit_id x] not free -[visit_exp i#31143] -[visit_id i#31143] => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $local{store#275 : store, frame#275 : frame, s : store, f : frame, x : idx, `val?*#2` : val?*, i#31143 : nat}(`%;%`_state{store#275, frame#275}(s, f), x) = f.`LOCALS`_frame{`val?*#2`}[x!`%`_idx{i#31143}.0] + def $local{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = f.`LOCALS`_frame[x!`%`_idx.0] [check_dims] localidx state val DecD with_local(state : state, localidx : localidx, val : val) : state [visit_id state] not free @@ -49440,12 +41796,8 @@ DecD with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fiel [visit_id arrayaddr] not free [visit_id nat] not free [visit_id fieldval] not free -[check_dims] f frame#287 frame#299 i#31165 s store#287 store#299 v val?*#3 x -[visit_exp `%;%`_state{store#287, frame#287}(s, f)] -[visit_exp store#287] -[visit_id store#287] -[visit_exp frame#287] -[visit_id frame#287] +[check_dims] f s v x +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] @@ -49455,37 +41807,25 @@ DecD with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fiel [visit_id x] [visit_exp v] [visit_id v] -[visit_exp `%;%`_state{store#299, frame#299}(s, f[`LOCALS`_frame{`val?*#3`}[x!`%`_idx{i#31165}.0] = ?(v)])] -[visit_exp store#299] -[visit_id store#299] -[visit_exp frame#299] -[visit_id frame#299] -[visit_exp (s, f[`LOCALS`_frame{`val?*#3`}[x!`%`_idx{i#31165}.0] = ?(v)])] +[visit_exp `%;%`_state(s, f[`LOCALS`_frame[x!`%`_idx.0] = ?(v)])] +[visit_exp (s, f[`LOCALS`_frame[x!`%`_idx.0] = ?(v)])] [visit_exp s] [visit_id s] not free -[visit_exp f[`LOCALS`_frame{`val?*#3`}[x!`%`_idx{i#31165}.0] = ?(v)]] +[visit_exp f[`LOCALS`_frame[x!`%`_idx.0] = ?(v)]] [visit_exp f] [visit_id f] not free -[visit_exp `val?*#3`] -[visit_id val?*#3] -[visit_exp x!`%`_idx{i#31165}.0] -[visit_exp x!`%`_idx{i#31165}] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] [visit_exp x] [visit_id x] not free -[visit_exp i#31165] -[visit_id i#31165] [visit_exp ?(v)] [visit_exp v] [visit_id v] not free => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_local{store#287 : store, frame#287 : frame, s : store, f : frame, x : idx, v : val, store#299 : store, frame#299 : frame, `val?*#3` : val?*, i#31165 : nat}(`%;%`_state{store#287, frame#287}(s, f), x, v) = `%;%`_state{store#299, frame#299}(s, f[`LOCALS`_frame{`val?*#3`}[x!`%`_idx{i#31165}.0] = ?(v)]) -[check_dims] f frame#311 frame#323 globaladdr*#2 globalinst*#4 i#31187 moduleinst#12 s store#311 store#323 v val#1 x -[visit_exp `%;%`_state{store#311, frame#311}(s, f)] -[visit_exp store#311] -[visit_id store#311] -[visit_exp frame#311] -[visit_id frame#311] + 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)]) +[check_dims] f s v x +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] @@ -49495,47 +41835,29 @@ DecD with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fiel [visit_id x] [visit_exp v] [visit_id v] -[visit_exp `%;%`_state{store#323, frame#323}(s[`GLOBALS`_store{`globalinst*#4`}[f.`MODULE`_frame{moduleinst#12}.`GLOBALS`_moduleinst{`globaladdr*#2`}[x!`%`_idx{i#31187}.0]].`VALUE`_globalinst{val#1} = v], f)] -[visit_exp store#323] -[visit_id store#323] -[visit_exp frame#323] -[visit_id frame#323] -[visit_exp (s[`GLOBALS`_store{`globalinst*#4`}[f.`MODULE`_frame{moduleinst#12}.`GLOBALS`_moduleinst{`globaladdr*#2`}[x!`%`_idx{i#31187}.0]].`VALUE`_globalinst{val#1} = v], f)] -[visit_exp s[`GLOBALS`_store{`globalinst*#4`}[f.`MODULE`_frame{moduleinst#12}.`GLOBALS`_moduleinst{`globaladdr*#2`}[x!`%`_idx{i#31187}.0]].`VALUE`_globalinst{val#1} = v]] +[visit_exp `%;%`_state(s[`GLOBALS`_store[f.`MODULE`_frame.`GLOBALS`_moduleinst[x!`%`_idx.0]].`VALUE`_globalinst = v], f)] +[visit_exp (s[`GLOBALS`_store[f.`MODULE`_frame.`GLOBALS`_moduleinst[x!`%`_idx.0]].`VALUE`_globalinst = v], f)] +[visit_exp s[`GLOBALS`_store[f.`MODULE`_frame.`GLOBALS`_moduleinst[x!`%`_idx.0]].`VALUE`_globalinst = v]] [visit_exp s] [visit_id s] not free -[visit_exp `globalinst*#4`] -[visit_id globalinst*#4] -[visit_exp f.`MODULE`_frame{moduleinst#12}.`GLOBALS`_moduleinst{`globaladdr*#2`}[x!`%`_idx{i#31187}.0]] -[visit_exp f.`MODULE`_frame{moduleinst#12}.`GLOBALS`_moduleinst{`globaladdr*#2`}] -[visit_exp f.`MODULE`_frame{moduleinst#12}] +[visit_exp f.`MODULE`_frame.`GLOBALS`_moduleinst[x!`%`_idx.0]] +[visit_exp f.`MODULE`_frame.`GLOBALS`_moduleinst] +[visit_exp f.`MODULE`_frame] [visit_exp f] [visit_id f] not free -[visit_exp moduleinst#12] -[visit_id moduleinst#12] -[visit_exp `globaladdr*#2`] -[visit_id globaladdr*#2] -[visit_exp x!`%`_idx{i#31187}.0] -[visit_exp x!`%`_idx{i#31187}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#31187] -[visit_id i#31187] -[visit_exp val#1] -[visit_id val#1] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free [visit_exp v] [visit_id v] not free [visit_exp f] [visit_id f] not free => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_global{store#311 : store, frame#311 : frame, s : store, f : frame, x : idx, v : val, store#323 : store, frame#323 : frame, `globalinst*#4` : globalinst*, moduleinst#12 : moduleinst, `globaladdr*#2` : globaladdr*, i#31187 : nat, val#1 : val}(`%;%`_state{store#311, frame#311}(s, f), x, v) = `%;%`_state{store#323, frame#323}(s[`GLOBALS`_store{`globalinst*#4`}[f.`MODULE`_frame{moduleinst#12}.`GLOBALS`_moduleinst{`globaladdr*#2`}[x!`%`_idx{i#31187}.0]].`VALUE`_globalinst{val#1} = v], f) -[check_dims] f frame#335 frame#347 i i#31209 moduleinst#13 r ref*#1 s store#335 store#347 tableaddr*#2 tableinst*#4 x -[visit_exp `%;%`_state{store#335, frame#335}(s, f)] -[visit_exp store#335] -[visit_id store#335] -[visit_exp frame#335] -[visit_id frame#335] + 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) +[check_dims] f i r s x +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] @@ -49547,34 +41869,20 @@ DecD with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fiel [visit_id i] [visit_exp r] [visit_id r] -[visit_exp `%;%`_state{store#347, frame#347}(s[`TABLES`_store{`tableinst*#4`}[f.`MODULE`_frame{moduleinst#13}.`TABLES`_moduleinst{`tableaddr*#2`}[x!`%`_idx{i#31209}.0]].`REFS`_tableinst{`ref*#1`}[i] = r], f)] -[visit_exp store#347] -[visit_id store#347] -[visit_exp frame#347] -[visit_id frame#347] -[visit_exp (s[`TABLES`_store{`tableinst*#4`}[f.`MODULE`_frame{moduleinst#13}.`TABLES`_moduleinst{`tableaddr*#2`}[x!`%`_idx{i#31209}.0]].`REFS`_tableinst{`ref*#1`}[i] = r], f)] -[visit_exp s[`TABLES`_store{`tableinst*#4`}[f.`MODULE`_frame{moduleinst#13}.`TABLES`_moduleinst{`tableaddr*#2`}[x!`%`_idx{i#31209}.0]].`REFS`_tableinst{`ref*#1`}[i] = r]] +[visit_exp `%;%`_state(s[`TABLES`_store[f.`MODULE`_frame.`TABLES`_moduleinst[x!`%`_idx.0]].`REFS`_tableinst[i] = r], f)] +[visit_exp (s[`TABLES`_store[f.`MODULE`_frame.`TABLES`_moduleinst[x!`%`_idx.0]].`REFS`_tableinst[i] = r], f)] +[visit_exp s[`TABLES`_store[f.`MODULE`_frame.`TABLES`_moduleinst[x!`%`_idx.0]].`REFS`_tableinst[i] = r]] [visit_exp s] [visit_id s] not free -[visit_exp `tableinst*#4`] -[visit_id tableinst*#4] -[visit_exp f.`MODULE`_frame{moduleinst#13}.`TABLES`_moduleinst{`tableaddr*#2`}[x!`%`_idx{i#31209}.0]] -[visit_exp f.`MODULE`_frame{moduleinst#13}.`TABLES`_moduleinst{`tableaddr*#2`}] -[visit_exp f.`MODULE`_frame{moduleinst#13}] +[visit_exp f.`MODULE`_frame.`TABLES`_moduleinst[x!`%`_idx.0]] +[visit_exp f.`MODULE`_frame.`TABLES`_moduleinst] +[visit_exp f.`MODULE`_frame] [visit_exp f] [visit_id f] not free -[visit_exp moduleinst#13] -[visit_id moduleinst#13] -[visit_exp `tableaddr*#2`] -[visit_id tableaddr*#2] -[visit_exp x!`%`_idx{i#31209}.0] -[visit_exp x!`%`_idx{i#31209}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#31209] -[visit_id i#31209] -[visit_exp `ref*#1`] -[visit_id ref*#1] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free [visit_exp i] [visit_id i] not free [visit_exp r] @@ -49583,13 +41891,9 @@ DecD with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fiel [visit_id f] not free => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_table{store#335 : store, frame#335 : frame, s : store, f : frame, x : idx, i : nat, r : ref, store#347 : store, frame#347 : frame, `tableinst*#4` : tableinst*, moduleinst#13 : moduleinst, `tableaddr*#2` : tableaddr*, i#31209 : nat, `ref*#1` : ref*}(`%;%`_state{store#335, frame#335}(s, f), x, i, r) = `%;%`_state{store#347, frame#347}(s[`TABLES`_store{`tableinst*#4`}[f.`MODULE`_frame{moduleinst#13}.`TABLES`_moduleinst{`tableaddr*#2`}[x!`%`_idx{i#31209}.0]].`REFS`_tableinst{`ref*#1`}[i] = r], f) -[check_dims] f frame#359 frame#371 i#31231 moduleinst#14 s store#359 store#371 tableaddr*#3 tableinst*#5 ti x -[visit_exp `%;%`_state{store#359, frame#359}(s, f)] -[visit_exp store#359] -[visit_id store#359] -[visit_exp frame#359] -[visit_id frame#359] + 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) +[check_dims] f s ti x +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] @@ -49599,45 +41903,29 @@ DecD with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fiel [visit_id x] [visit_exp ti] [visit_id ti] -[visit_exp `%;%`_state{store#371, frame#371}(s[`TABLES`_store{`tableinst*#5`}[f.`MODULE`_frame{moduleinst#14}.`TABLES`_moduleinst{`tableaddr*#3`}[x!`%`_idx{i#31231}.0]] = ti], f)] -[visit_exp store#371] -[visit_id store#371] -[visit_exp frame#371] -[visit_id frame#371] -[visit_exp (s[`TABLES`_store{`tableinst*#5`}[f.`MODULE`_frame{moduleinst#14}.`TABLES`_moduleinst{`tableaddr*#3`}[x!`%`_idx{i#31231}.0]] = ti], f)] -[visit_exp s[`TABLES`_store{`tableinst*#5`}[f.`MODULE`_frame{moduleinst#14}.`TABLES`_moduleinst{`tableaddr*#3`}[x!`%`_idx{i#31231}.0]] = ti]] +[visit_exp `%;%`_state(s[`TABLES`_store[f.`MODULE`_frame.`TABLES`_moduleinst[x!`%`_idx.0]] = ti], f)] +[visit_exp (s[`TABLES`_store[f.`MODULE`_frame.`TABLES`_moduleinst[x!`%`_idx.0]] = ti], f)] +[visit_exp s[`TABLES`_store[f.`MODULE`_frame.`TABLES`_moduleinst[x!`%`_idx.0]] = ti]] [visit_exp s] [visit_id s] not free -[visit_exp `tableinst*#5`] -[visit_id tableinst*#5] -[visit_exp f.`MODULE`_frame{moduleinst#14}.`TABLES`_moduleinst{`tableaddr*#3`}[x!`%`_idx{i#31231}.0]] -[visit_exp f.`MODULE`_frame{moduleinst#14}.`TABLES`_moduleinst{`tableaddr*#3`}] -[visit_exp f.`MODULE`_frame{moduleinst#14}] +[visit_exp f.`MODULE`_frame.`TABLES`_moduleinst[x!`%`_idx.0]] +[visit_exp f.`MODULE`_frame.`TABLES`_moduleinst] +[visit_exp f.`MODULE`_frame] [visit_exp f] [visit_id f] not free -[visit_exp moduleinst#14] -[visit_id moduleinst#14] -[visit_exp `tableaddr*#3`] -[visit_id tableaddr*#3] -[visit_exp x!`%`_idx{i#31231}.0] -[visit_exp x!`%`_idx{i#31231}] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] [visit_exp x] [visit_id x] not free -[visit_exp i#31231] -[visit_id i#31231] [visit_exp ti] [visit_id ti] not free [visit_exp f] [visit_id f] not free => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_tableinst{store#359 : store, frame#359 : frame, s : store, f : frame, x : idx, ti : tableinst, store#371 : store, frame#371 : frame, `tableinst*#5` : tableinst*, moduleinst#14 : moduleinst, `tableaddr*#3` : tableaddr*, i#31231 : nat}(`%;%`_state{store#359, frame#359}(s, f), x, ti) = `%;%`_state{store#371, frame#371}(s[`TABLES`_store{`tableinst*#5`}[f.`MODULE`_frame{moduleinst#14}.`TABLES`_moduleinst{`tableaddr*#3`}[x!`%`_idx{i#31231}.0]] = ti], f) -[check_dims] b byte*#1845 f frame#383 frame#395 i i#31265 j memaddr*#2 meminst*#4 moduleinst#15 s store#383 store#395 x -[visit_exp `%;%`_state{store#383, frame#383}(s, f)] -[visit_exp store#383] -[visit_id store#383] -[visit_exp frame#383] -[visit_id frame#383] + 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) +[check_dims] b f i j s x +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] @@ -49658,34 +41946,20 @@ DecD with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fiel [visit_exp `b*`] [visit_id b*] no dims [visit_id b*] -[visit_exp `%;%`_state{store#395, frame#395}(s[`MEMS`_store{`meminst*#4`}[f.`MODULE`_frame{moduleinst#15}.`MEMS`_moduleinst{`memaddr*#2`}[x!`%`_idx{i#31265}.0]].`BYTES`_meminst{`byte*#1845`}[i : j] = b*{b <- `b*`}], f)] -[visit_exp store#395] -[visit_id store#395] -[visit_exp frame#395] -[visit_id frame#395] -[visit_exp (s[`MEMS`_store{`meminst*#4`}[f.`MODULE`_frame{moduleinst#15}.`MEMS`_moduleinst{`memaddr*#2`}[x!`%`_idx{i#31265}.0]].`BYTES`_meminst{`byte*#1845`}[i : j] = b*{b <- `b*`}], f)] -[visit_exp s[`MEMS`_store{`meminst*#4`}[f.`MODULE`_frame{moduleinst#15}.`MEMS`_moduleinst{`memaddr*#2`}[x!`%`_idx{i#31265}.0]].`BYTES`_meminst{`byte*#1845`}[i : j] = b*{b <- `b*`}]] +[visit_exp `%;%`_state(s[`MEMS`_store[f.`MODULE`_frame.`MEMS`_moduleinst[x!`%`_idx.0]].`BYTES`_meminst[i : j] = b*{b <- `b*`}], f)] +[visit_exp (s[`MEMS`_store[f.`MODULE`_frame.`MEMS`_moduleinst[x!`%`_idx.0]].`BYTES`_meminst[i : j] = b*{b <- `b*`}], f)] +[visit_exp s[`MEMS`_store[f.`MODULE`_frame.`MEMS`_moduleinst[x!`%`_idx.0]].`BYTES`_meminst[i : j] = b*{b <- `b*`}]] [visit_exp s] [visit_id s] not free -[visit_exp `meminst*#4`] -[visit_id meminst*#4] -[visit_exp f.`MODULE`_frame{moduleinst#15}.`MEMS`_moduleinst{`memaddr*#2`}[x!`%`_idx{i#31265}.0]] -[visit_exp f.`MODULE`_frame{moduleinst#15}.`MEMS`_moduleinst{`memaddr*#2`}] -[visit_exp f.`MODULE`_frame{moduleinst#15}] +[visit_exp f.`MODULE`_frame.`MEMS`_moduleinst[x!`%`_idx.0]] +[visit_exp f.`MODULE`_frame.`MEMS`_moduleinst] +[visit_exp f.`MODULE`_frame] [visit_exp f] [visit_id f] not free -[visit_exp moduleinst#15] -[visit_id moduleinst#15] -[visit_exp `memaddr*#2`] -[visit_id memaddr*#2] -[visit_exp x!`%`_idx{i#31265}.0] -[visit_exp x!`%`_idx{i#31265}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#31265] -[visit_id i#31265] -[visit_exp `byte*#1845`] -[visit_id byte*#1845] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free [visit_exp i] [visit_id i] not free [visit_exp j] @@ -49703,13 +41977,9 @@ DecD with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fiel [visit_id f] not free => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_mem{store#383 : store, frame#383 : frame, s : store, f : frame, x : idx, i : nat, j : nat, `b*` : byte*, store#395 : store, frame#395 : frame, `meminst*#4` : meminst*, moduleinst#15 : moduleinst, `memaddr*#2` : memaddr*, i#31265 : nat, `byte*#1845` : byte*}(`%;%`_state{store#383, frame#383}(s, f), x, i, j, b*{b <- `b*`}) = `%;%`_state{store#395, frame#395}(s[`MEMS`_store{`meminst*#4`}[f.`MODULE`_frame{moduleinst#15}.`MEMS`_moduleinst{`memaddr*#2`}[x!`%`_idx{i#31265}.0]].`BYTES`_meminst{`byte*#1845`}[i : j] = b*{b <- `b*`}], f) -[check_dims] f frame#407 frame#419 i#31299 memaddr*#3 meminst*#5 mi moduleinst#16 s store#407 store#419 x -[visit_exp `%;%`_state{store#407, frame#407}(s, f)] -[visit_exp store#407] -[visit_id store#407] -[visit_exp frame#407] -[visit_id frame#407] + 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) +[check_dims] f mi s x +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] @@ -49719,45 +41989,29 @@ DecD with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fiel [visit_id x] [visit_exp mi] [visit_id mi] -[visit_exp `%;%`_state{store#419, frame#419}(s[`MEMS`_store{`meminst*#5`}[f.`MODULE`_frame{moduleinst#16}.`MEMS`_moduleinst{`memaddr*#3`}[x!`%`_idx{i#31299}.0]] = mi], f)] -[visit_exp store#419] -[visit_id store#419] -[visit_exp frame#419] -[visit_id frame#419] -[visit_exp (s[`MEMS`_store{`meminst*#5`}[f.`MODULE`_frame{moduleinst#16}.`MEMS`_moduleinst{`memaddr*#3`}[x!`%`_idx{i#31299}.0]] = mi], f)] -[visit_exp s[`MEMS`_store{`meminst*#5`}[f.`MODULE`_frame{moduleinst#16}.`MEMS`_moduleinst{`memaddr*#3`}[x!`%`_idx{i#31299}.0]] = mi]] +[visit_exp `%;%`_state(s[`MEMS`_store[f.`MODULE`_frame.`MEMS`_moduleinst[x!`%`_idx.0]] = mi], f)] +[visit_exp (s[`MEMS`_store[f.`MODULE`_frame.`MEMS`_moduleinst[x!`%`_idx.0]] = mi], f)] +[visit_exp s[`MEMS`_store[f.`MODULE`_frame.`MEMS`_moduleinst[x!`%`_idx.0]] = mi]] [visit_exp s] [visit_id s] not free -[visit_exp `meminst*#5`] -[visit_id meminst*#5] -[visit_exp f.`MODULE`_frame{moduleinst#16}.`MEMS`_moduleinst{`memaddr*#3`}[x!`%`_idx{i#31299}.0]] -[visit_exp f.`MODULE`_frame{moduleinst#16}.`MEMS`_moduleinst{`memaddr*#3`}] -[visit_exp f.`MODULE`_frame{moduleinst#16}] +[visit_exp f.`MODULE`_frame.`MEMS`_moduleinst[x!`%`_idx.0]] +[visit_exp f.`MODULE`_frame.`MEMS`_moduleinst] +[visit_exp f.`MODULE`_frame] [visit_exp f] [visit_id f] not free -[visit_exp moduleinst#16] -[visit_id moduleinst#16] -[visit_exp `memaddr*#3`] -[visit_id memaddr*#3] -[visit_exp x!`%`_idx{i#31299}.0] -[visit_exp x!`%`_idx{i#31299}] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] [visit_exp x] [visit_id x] not free -[visit_exp i#31299] -[visit_id i#31299] [visit_exp mi] [visit_id mi] not free [visit_exp f] [visit_id f] not free => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_meminst{store#407 : store, frame#407 : frame, s : store, f : frame, x : idx, mi : meminst, store#419 : store, frame#419 : frame, `meminst*#5` : meminst*, moduleinst#16 : moduleinst, `memaddr*#3` : memaddr*, i#31299 : nat}(`%;%`_state{store#407, frame#407}(s, f), x, mi) = `%;%`_state{store#419, frame#419}(s[`MEMS`_store{`meminst*#5`}[f.`MODULE`_frame{moduleinst#16}.`MEMS`_moduleinst{`memaddr*#3`}[x!`%`_idx{i#31299}.0]] = mi], f) -[check_dims] elemaddr*#2 eleminst*#4 f frame#431 frame#443 i#31321 moduleinst#17 r ref*#2 s store#431 store#443 x -[visit_exp `%;%`_state{store#431, frame#431}(s, f)] -[visit_exp store#431] -[visit_id store#431] -[visit_exp frame#431] -[visit_id frame#431] + 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) +[check_dims] f r s x +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] @@ -49774,34 +42028,20 @@ DecD with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fiel [visit_exp `r*`] [visit_id r*] no dims [visit_id r*] -[visit_exp `%;%`_state{store#443, frame#443}(s[`ELEMS`_store{`eleminst*#4`}[f.`MODULE`_frame{moduleinst#17}.`ELEMS`_moduleinst{`elemaddr*#2`}[x!`%`_idx{i#31321}.0]].`REFS`_eleminst{`ref*#2`} = r*{r <- `r*`}], f)] -[visit_exp store#443] -[visit_id store#443] -[visit_exp frame#443] -[visit_id frame#443] -[visit_exp (s[`ELEMS`_store{`eleminst*#4`}[f.`MODULE`_frame{moduleinst#17}.`ELEMS`_moduleinst{`elemaddr*#2`}[x!`%`_idx{i#31321}.0]].`REFS`_eleminst{`ref*#2`} = r*{r <- `r*`}], f)] -[visit_exp s[`ELEMS`_store{`eleminst*#4`}[f.`MODULE`_frame{moduleinst#17}.`ELEMS`_moduleinst{`elemaddr*#2`}[x!`%`_idx{i#31321}.0]].`REFS`_eleminst{`ref*#2`} = r*{r <- `r*`}]] +[visit_exp `%;%`_state(s[`ELEMS`_store[f.`MODULE`_frame.`ELEMS`_moduleinst[x!`%`_idx.0]].`REFS`_eleminst = r*{r <- `r*`}], f)] +[visit_exp (s[`ELEMS`_store[f.`MODULE`_frame.`ELEMS`_moduleinst[x!`%`_idx.0]].`REFS`_eleminst = r*{r <- `r*`}], f)] +[visit_exp s[`ELEMS`_store[f.`MODULE`_frame.`ELEMS`_moduleinst[x!`%`_idx.0]].`REFS`_eleminst = r*{r <- `r*`}]] [visit_exp s] [visit_id s] not free -[visit_exp `eleminst*#4`] -[visit_id eleminst*#4] -[visit_exp f.`MODULE`_frame{moduleinst#17}.`ELEMS`_moduleinst{`elemaddr*#2`}[x!`%`_idx{i#31321}.0]] -[visit_exp f.`MODULE`_frame{moduleinst#17}.`ELEMS`_moduleinst{`elemaddr*#2`}] -[visit_exp f.`MODULE`_frame{moduleinst#17}] +[visit_exp f.`MODULE`_frame.`ELEMS`_moduleinst[x!`%`_idx.0]] +[visit_exp f.`MODULE`_frame.`ELEMS`_moduleinst] +[visit_exp f.`MODULE`_frame] [visit_exp f] [visit_id f] not free -[visit_exp moduleinst#17] -[visit_id moduleinst#17] -[visit_exp `elemaddr*#2`] -[visit_id elemaddr*#2] -[visit_exp x!`%`_idx{i#31321}.0] -[visit_exp x!`%`_idx{i#31321}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#31321] -[visit_id i#31321] -[visit_exp `ref*#2`] -[visit_id ref*#2] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free [visit_exp r*{r <- `r*`}] [scope_enter r] [visit_exp r] @@ -49815,13 +42055,9 @@ DecD with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fiel [visit_id f] not free => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_elem{store#431 : store, frame#431 : frame, s : store, f : frame, x : idx, `r*` : ref*, store#443 : store, frame#443 : frame, `eleminst*#4` : eleminst*, moduleinst#17 : moduleinst, `elemaddr*#2` : elemaddr*, i#31321 : nat, `ref*#2` : ref*}(`%;%`_state{store#431, frame#431}(s, f), x, r*{r <- `r*`}) = `%;%`_state{store#443, frame#443}(s[`ELEMS`_store{`eleminst*#4`}[f.`MODULE`_frame{moduleinst#17}.`ELEMS`_moduleinst{`elemaddr*#2`}[x!`%`_idx{i#31321}.0]].`REFS`_eleminst{`ref*#2`} = r*{r <- `r*`}], f) -[check_dims] b byte*#1846 dataaddr*#2 datainst*#4 f frame#455 frame#467 i#31355 moduleinst#18 s store#455 store#467 x -[visit_exp `%;%`_state{store#455, frame#455}(s, f)] -[visit_exp store#455] -[visit_id store#455] -[visit_exp frame#455] -[visit_id frame#455] + 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) +[check_dims] b f s x +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] @@ -49838,34 +42074,20 @@ DecD with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fiel [visit_exp `b*`] [visit_id b*] no dims [visit_id b*] -[visit_exp `%;%`_state{store#467, frame#467}(s[`DATAS`_store{`datainst*#4`}[f.`MODULE`_frame{moduleinst#18}.`DATAS`_moduleinst{`dataaddr*#2`}[x!`%`_idx{i#31355}.0]].`BYTES`_datainst{`byte*#1846`} = b*{b <- `b*`}], f)] -[visit_exp store#467] -[visit_id store#467] -[visit_exp frame#467] -[visit_id frame#467] -[visit_exp (s[`DATAS`_store{`datainst*#4`}[f.`MODULE`_frame{moduleinst#18}.`DATAS`_moduleinst{`dataaddr*#2`}[x!`%`_idx{i#31355}.0]].`BYTES`_datainst{`byte*#1846`} = b*{b <- `b*`}], f)] -[visit_exp s[`DATAS`_store{`datainst*#4`}[f.`MODULE`_frame{moduleinst#18}.`DATAS`_moduleinst{`dataaddr*#2`}[x!`%`_idx{i#31355}.0]].`BYTES`_datainst{`byte*#1846`} = b*{b <- `b*`}]] +[visit_exp `%;%`_state(s[`DATAS`_store[f.`MODULE`_frame.`DATAS`_moduleinst[x!`%`_idx.0]].`BYTES`_datainst = b*{b <- `b*`}], f)] +[visit_exp (s[`DATAS`_store[f.`MODULE`_frame.`DATAS`_moduleinst[x!`%`_idx.0]].`BYTES`_datainst = b*{b <- `b*`}], f)] +[visit_exp s[`DATAS`_store[f.`MODULE`_frame.`DATAS`_moduleinst[x!`%`_idx.0]].`BYTES`_datainst = b*{b <- `b*`}]] [visit_exp s] [visit_id s] not free -[visit_exp `datainst*#4`] -[visit_id datainst*#4] -[visit_exp f.`MODULE`_frame{moduleinst#18}.`DATAS`_moduleinst{`dataaddr*#2`}[x!`%`_idx{i#31355}.0]] -[visit_exp f.`MODULE`_frame{moduleinst#18}.`DATAS`_moduleinst{`dataaddr*#2`}] -[visit_exp f.`MODULE`_frame{moduleinst#18}] +[visit_exp f.`MODULE`_frame.`DATAS`_moduleinst[x!`%`_idx.0]] +[visit_exp f.`MODULE`_frame.`DATAS`_moduleinst] +[visit_exp f.`MODULE`_frame] [visit_exp f] [visit_id f] not free -[visit_exp moduleinst#18] -[visit_id moduleinst#18] -[visit_exp `dataaddr*#2`] -[visit_id dataaddr*#2] -[visit_exp x!`%`_idx{i#31355}.0] -[visit_exp x!`%`_idx{i#31355}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#31355] -[visit_id i#31355] -[visit_exp `byte*#1846`] -[visit_id byte*#1846] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free [visit_exp b*{b <- `b*`}] [scope_enter b] [visit_exp b] @@ -49879,13 +42101,9 @@ DecD with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fiel [visit_id f] not free => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_data{store#455 : store, frame#455 : frame, s : store, f : frame, x : idx, `b*` : byte*, store#467 : store, frame#467 : frame, `datainst*#4` : datainst*, moduleinst#18 : moduleinst, `dataaddr*#2` : dataaddr*, i#31355 : nat, `byte*#1846` : byte*}(`%;%`_state{store#455, frame#455}(s, f), x, b*{b <- `b*`}) = `%;%`_state{store#467, frame#467}(s[`DATAS`_store{`datainst*#4`}[f.`MODULE`_frame{moduleinst#18}.`DATAS`_moduleinst{`dataaddr*#2`}[x!`%`_idx{i#31355}.0]].`BYTES`_datainst{`byte*#1846`} = b*{b <- `b*`}], f) -[check_dims] a f fieldval*#1 frame#479 frame#491 fv i s store#479 store#491 structinst*#3 -[visit_exp `%;%`_state{store#479, frame#479}(s, f)] -[visit_exp store#479] -[visit_id store#479] -[visit_exp frame#479] -[visit_id frame#479] + 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) +[check_dims] a f fv i s +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] @@ -49897,21 +42115,13 @@ DecD with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fiel [visit_id i] [visit_exp fv] [visit_id fv] -[visit_exp `%;%`_state{store#491, frame#491}(s[`STRUCTS`_store{`structinst*#3`}[a].`FIELDS`_structinst{`fieldval*#1`}[i] = fv], f)] -[visit_exp store#491] -[visit_id store#491] -[visit_exp frame#491] -[visit_id frame#491] -[visit_exp (s[`STRUCTS`_store{`structinst*#3`}[a].`FIELDS`_structinst{`fieldval*#1`}[i] = fv], f)] -[visit_exp s[`STRUCTS`_store{`structinst*#3`}[a].`FIELDS`_structinst{`fieldval*#1`}[i] = fv]] +[visit_exp `%;%`_state(s[`STRUCTS`_store[a].`FIELDS`_structinst[i] = fv], f)] +[visit_exp (s[`STRUCTS`_store[a].`FIELDS`_structinst[i] = fv], f)] +[visit_exp s[`STRUCTS`_store[a].`FIELDS`_structinst[i] = fv]] [visit_exp s] [visit_id s] not free -[visit_exp `structinst*#3`] -[visit_id structinst*#3] [visit_exp a] [visit_id a] not free -[visit_exp `fieldval*#1`] -[visit_id fieldval*#1] [visit_exp i] [visit_id i] not free [visit_exp fv] @@ -49920,13 +42130,9 @@ DecD with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fiel [visit_id f] not free => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_struct{store#479 : store, frame#479 : frame, s : store, f : frame, a : addr, i : nat, fv : fieldval, store#491 : store, frame#491 : frame, `structinst*#3` : structinst*, `fieldval*#1` : fieldval*}(`%;%`_state{store#479, frame#479}(s, f), a, i, fv) = `%;%`_state{store#491, frame#491}(s[`STRUCTS`_store{`structinst*#3`}[a].`FIELDS`_structinst{`fieldval*#1`}[i] = fv], f) -[check_dims] a arrayinst*#3 f fieldval*#2 frame#503 frame#515 fv i s store#503 store#515 -[visit_exp `%;%`_state{store#503, frame#503}(s, f)] -[visit_exp store#503] -[visit_id store#503] -[visit_exp frame#503] -[visit_id frame#503] + 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) +[check_dims] a f fv i s +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] @@ -49938,21 +42144,13 @@ DecD with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fiel [visit_id i] [visit_exp fv] [visit_id fv] -[visit_exp `%;%`_state{store#515, frame#515}(s[`ARRAYS`_store{`arrayinst*#3`}[a].`FIELDS`_arrayinst{`fieldval*#2`}[i] = fv], f)] -[visit_exp store#515] -[visit_id store#515] -[visit_exp frame#515] -[visit_id frame#515] -[visit_exp (s[`ARRAYS`_store{`arrayinst*#3`}[a].`FIELDS`_arrayinst{`fieldval*#2`}[i] = fv], f)] -[visit_exp s[`ARRAYS`_store{`arrayinst*#3`}[a].`FIELDS`_arrayinst{`fieldval*#2`}[i] = fv]] +[visit_exp `%;%`_state(s[`ARRAYS`_store[a].`FIELDS`_arrayinst[i] = fv], f)] +[visit_exp (s[`ARRAYS`_store[a].`FIELDS`_arrayinst[i] = fv], f)] +[visit_exp s[`ARRAYS`_store[a].`FIELDS`_arrayinst[i] = fv]] [visit_exp s] [visit_id s] not free -[visit_exp `arrayinst*#3`] -[visit_id arrayinst*#3] [visit_exp a] [visit_id a] not free -[visit_exp `fieldval*#2`] -[visit_id fieldval*#2] [visit_exp i] [visit_id i] not free [visit_exp fv] @@ -49961,7 +42159,7 @@ DecD with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fiel [visit_id f] not free => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_array{store#503 : store, frame#503 : frame, s : store, f : frame, a : addr, i : nat, fv : fieldval, store#515 : store, frame#515 : frame, `arrayinst*#3` : arrayinst*, `fieldval*#2` : fieldval*}(`%;%`_state{store#503, frame#503}(s, f), a, i, fv) = `%;%`_state{store#515, frame#515}(s[`ARRAYS`_store{`arrayinst*#3`}[a].`FIELDS`_arrayinst{`fieldval*#2`}[i] = fv], f) + 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) [check_dims] _ state DecD add_structinst(state : state, structinst*) : state [visit_id state] not free @@ -49974,12 +42172,8 @@ DecD add_arrayinst(state : state, arrayinst*) : state DecD add_exninst(state : state, exninst*) : state [visit_id state] not free [visit_id _] not free -[check_dims] f frame#527 frame#539 s si store#527 store#539 structinst*#4 -[visit_exp `%;%`_state{store#527, frame#527}(s, f)] -[visit_exp store#527] -[visit_id store#527] -[visit_exp frame#527] -[visit_id frame#527] +[check_dims] f s si +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] @@ -49994,17 +42188,11 @@ DecD add_exninst(state : state, exninst*) : state [visit_exp `si*`] [visit_id si*] no dims [visit_id si*] -[visit_exp `%;%`_state{store#539, frame#539}(s[`STRUCTS`_store{`structinst*#4`} =++ si*{si <- `si*`}], f)] -[visit_exp store#539] -[visit_id store#539] -[visit_exp frame#539] -[visit_id frame#539] -[visit_exp (s[`STRUCTS`_store{`structinst*#4`} =++ si*{si <- `si*`}], f)] -[visit_exp s[`STRUCTS`_store{`structinst*#4`} =++ si*{si <- `si*`}]] +[visit_exp `%;%`_state(s[`STRUCTS`_store =++ si*{si <- `si*`}], f)] +[visit_exp (s[`STRUCTS`_store =++ si*{si <- `si*`}], f)] +[visit_exp s[`STRUCTS`_store =++ si*{si <- `si*`}]] [visit_exp s] [visit_id s] not free -[visit_exp `structinst*#4`] -[visit_id structinst*#4] [visit_exp si*{si <- `si*`}] [scope_enter si] [visit_exp si] @@ -50018,13 +42206,9 @@ DecD add_exninst(state : state, exninst*) : state [visit_id f] not free => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $add_structinst{store#527 : store, frame#527 : frame, s : store, f : frame, `si*` : structinst*, store#539 : store, frame#539 : frame, `structinst*#4` : structinst*}(`%;%`_state{store#527, frame#527}(s, f), si*{si <- `si*`}) = `%;%`_state{store#539, frame#539}(s[`STRUCTS`_store{`structinst*#4`} =++ si*{si <- `si*`}], f) -[check_dims] ai arrayinst*#4 f frame#551 frame#563 s store#551 store#563 -[visit_exp `%;%`_state{store#551, frame#551}(s, f)] -[visit_exp store#551] -[visit_id store#551] -[visit_exp frame#551] -[visit_id frame#551] + def $add_structinst{s : store, f : frame, `si*` : structinst*}(`%;%`_state(s, f), si*{si <- `si*`}) = `%;%`_state(s[`STRUCTS`_store =++ si*{si <- `si*`}], f) +[check_dims] ai f s +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] @@ -50039,17 +42223,11 @@ DecD add_exninst(state : state, exninst*) : state [visit_exp `ai*`] [visit_id ai*] no dims [visit_id ai*] -[visit_exp `%;%`_state{store#563, frame#563}(s[`ARRAYS`_store{`arrayinst*#4`} =++ ai*{ai <- `ai*`}], f)] -[visit_exp store#563] -[visit_id store#563] -[visit_exp frame#563] -[visit_id frame#563] -[visit_exp (s[`ARRAYS`_store{`arrayinst*#4`} =++ ai*{ai <- `ai*`}], f)] -[visit_exp s[`ARRAYS`_store{`arrayinst*#4`} =++ ai*{ai <- `ai*`}]] +[visit_exp `%;%`_state(s[`ARRAYS`_store =++ ai*{ai <- `ai*`}], f)] +[visit_exp (s[`ARRAYS`_store =++ ai*{ai <- `ai*`}], f)] +[visit_exp s[`ARRAYS`_store =++ ai*{ai <- `ai*`}]] [visit_exp s] [visit_id s] not free -[visit_exp `arrayinst*#4`] -[visit_id arrayinst*#4] [visit_exp ai*{ai <- `ai*`}] [scope_enter ai] [visit_exp ai] @@ -50063,13 +42241,9 @@ DecD add_exninst(state : state, exninst*) : state [visit_id f] not free => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $add_arrayinst{store#551 : store, frame#551 : frame, s : store, f : frame, `ai*` : arrayinst*, store#563 : store, frame#563 : frame, `arrayinst*#4` : arrayinst*}(`%;%`_state{store#551, frame#551}(s, f), ai*{ai <- `ai*`}) = `%;%`_state{store#563, frame#563}(s[`ARRAYS`_store{`arrayinst*#4`} =++ ai*{ai <- `ai*`}], f) -[check_dims] exn exninst*#3 f frame#575 frame#587 s store#575 store#587 -[visit_exp `%;%`_state{store#575, frame#575}(s, f)] -[visit_exp store#575] -[visit_id store#575] -[visit_exp frame#575] -[visit_id frame#575] + def $add_arrayinst{s : store, f : frame, `ai*` : arrayinst*}(`%;%`_state(s, f), ai*{ai <- `ai*`}) = `%;%`_state(s[`ARRAYS`_store =++ ai*{ai <- `ai*`}], f) +[check_dims] exn f s +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] @@ -50084,17 +42258,11 @@ DecD add_exninst(state : state, exninst*) : state [visit_exp `exn*`] [visit_id exn*] no dims [visit_id exn*] -[visit_exp `%;%`_state{store#587, frame#587}(s[`EXNS`_store{`exninst*#3`} =++ exn*{exn <- `exn*`}], f)] -[visit_exp store#587] -[visit_id store#587] -[visit_exp frame#587] -[visit_id frame#587] -[visit_exp (s[`EXNS`_store{`exninst*#3`} =++ exn*{exn <- `exn*`}], f)] -[visit_exp s[`EXNS`_store{`exninst*#3`} =++ exn*{exn <- `exn*`}]] +[visit_exp `%;%`_state(s[`EXNS`_store =++ exn*{exn <- `exn*`}], f)] +[visit_exp (s[`EXNS`_store =++ exn*{exn <- `exn*`}], f)] +[visit_exp s[`EXNS`_store =++ exn*{exn <- `exn*`}]] [visit_exp s] [visit_id s] not free -[visit_exp `exninst*#3`] -[visit_id exninst*#3] [visit_exp exn*{exn <- `exn*`}] [scope_enter exn] [visit_exp exn] @@ -50108,7 +42276,7 @@ DecD add_exninst(state : state, exninst*) : state [visit_id f] not free => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $add_exninst{store#575 : store, frame#575 : frame, s : store, f : frame, `exn*` : exninst*, store#587 : store, frame#587 : frame, `exninst*#3` : exninst*}(`%;%`_state{store#575, frame#575}(s, f), exn*{exn <- `exn*`}) = `%;%`_state{store#587, frame#587}(s[`EXNS`_store{`exninst*#3`} =++ exn*{exn <- `exn*`}], f) + def $add_exninst{s : store, f : frame, `exn*` : exninst*}(`%;%`_state(s, f), exn*{exn <- `exn*`}) = `%;%`_state(s[`EXNS`_store =++ exn*{exn <- `exn*`}], f) [check_dims] nat ref tableinst DecD growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst [visit_id tableinst] not free @@ -50118,7 +42286,7 @@ DecD growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst DecD growmem(meminst : meminst, nat : nat) : meminst [visit_id meminst] not free [visit_id nat] not free -[check_dims] addrtype#1027 addrtype#1039 at i i#31449 i#31467 i#31477 i' j limits#1027 limits#1039 n r r' ref*#3 ref*#4 reftype#3401 reftype#3413 rt tableinst tableinst' tabletype#875 tabletype#876 u64#361 u64#373 u64?#359 u64?#371 +[check_dims] at i i' j n r r' rt tableinst tableinst' [visit_exp tableinst] [visit_id tableinst] [visit_exp n] @@ -50127,27 +42295,15 @@ DecD growmem(meminst : meminst, nat : nat) : meminst [visit_id r] [visit_exp tableinst'] [visit_id tableinst'] -[visit_exp (tableinst = {`TYPE`{tabletype#875} `%%%`_tabletype{addrtype#1027, limits#1027, reftype#3401}(at, `[%..%]`_limits{u64#361, `u64?#359`}(i, j?{j <- `j?`}), rt), `REFS`{`ref*#3`} r'*{r' <- `r'*`}})] +[visit_exp (tableinst = {`TYPE` `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), `REFS` r'*{r' <- `r'*`}})] [visit_exp tableinst] [visit_id tableinst] not free -[visit_exp {`TYPE`{tabletype#875} `%%%`_tabletype{addrtype#1027, limits#1027, reftype#3401}(at, `[%..%]`_limits{u64#361, `u64?#359`}(i, j?{j <- `j?`}), rt), `REFS`{`ref*#3`} r'*{r' <- `r'*`}}] -[visit_exp tabletype#875] -[visit_id tabletype#875] -[visit_exp `%%%`_tabletype{addrtype#1027, limits#1027, reftype#3401}(at, `[%..%]`_limits{u64#361, `u64?#359`}(i, j?{j <- `j?`}), rt)] -[visit_exp addrtype#1027] -[visit_id addrtype#1027] -[visit_exp limits#1027] -[visit_id limits#1027] -[visit_exp reftype#3401] -[visit_id reftype#3401] -[visit_exp (at, `[%..%]`_limits{u64#361, `u64?#359`}(i, j?{j <- `j?`}), rt)] +[visit_exp {`TYPE` `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), `REFS` r'*{r' <- `r'*`}}] +[visit_exp `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt)] +[visit_exp (at, `[%..%]`_limits(i, j?{j <- `j?`}), rt)] [visit_exp at] [visit_id at] -[visit_exp `[%..%]`_limits{u64#361, `u64?#359`}(i, j?{j <- `j?`})] -[visit_exp u64#361] -[visit_id u64#361] -[visit_exp `u64?#359`] -[visit_id u64?#359] +[visit_exp `[%..%]`_limits(i, j?{j <- `j?`})] [visit_exp (i, j?{j <- `j?`})] [visit_exp i] [visit_id i] @@ -50162,8 +42318,6 @@ DecD growmem(meminst : meminst, nat : nat) : meminst [visit_id j?] [visit_exp rt] [visit_id rt] -[visit_exp `ref*#3`] -[visit_id ref*#3] [visit_exp r'*{r' <- `r'*`}] [scope_enter r'] [visit_exp r'] @@ -50173,27 +42327,15 @@ DecD growmem(meminst : meminst, nat : nat) : meminst [visit_exp `r'*`] [visit_id r'*] no dims [visit_id r'*] -[visit_exp (tableinst' = {`TYPE`{tabletype#876} `%%%`_tabletype{addrtype#1039, limits#1039, reftype#3413}(at, `[%..%]`_limits{u64#373, `u64?#371`}(i', j?{j <- `j?`}), rt), `REFS`{`ref*#4`} r'*{r' <- `r'*`} ++ r^n{}})] +[visit_exp (tableinst' = {`TYPE` `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), `REFS` r'*{r' <- `r'*`} ++ r^n{}})] [visit_exp tableinst'] [visit_id tableinst'] not free -[visit_exp {`TYPE`{tabletype#876} `%%%`_tabletype{addrtype#1039, limits#1039, reftype#3413}(at, `[%..%]`_limits{u64#373, `u64?#371`}(i', j?{j <- `j?`}), rt), `REFS`{`ref*#4`} r'*{r' <- `r'*`} ++ r^n{}}] -[visit_exp tabletype#876] -[visit_id tabletype#876] -[visit_exp `%%%`_tabletype{addrtype#1039, limits#1039, reftype#3413}(at, `[%..%]`_limits{u64#373, `u64?#371`}(i', j?{j <- `j?`}), rt)] -[visit_exp addrtype#1039] -[visit_id addrtype#1039] -[visit_exp limits#1039] -[visit_id limits#1039] -[visit_exp reftype#3413] -[visit_id reftype#3413] -[visit_exp (at, `[%..%]`_limits{u64#373, `u64?#371`}(i', j?{j <- `j?`}), rt)] +[visit_exp {`TYPE` `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), `REFS` r'*{r' <- `r'*`} ++ r^n{}}] +[visit_exp `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt)] +[visit_exp (at, `[%..%]`_limits(i', j?{j <- `j?`}), rt)] [visit_exp at] [visit_id at] not free -[visit_exp `[%..%]`_limits{u64#373, `u64?#371`}(i', j?{j <- `j?`})] -[visit_exp u64#373] -[visit_id u64#373] -[visit_exp `u64?#371`] -[visit_id u64?#371] +[visit_exp `[%..%]`_limits(i', j?{j <- `j?`})] [visit_exp (i', j?{j <- `j?`})] [visit_exp i'] [visit_id i'] @@ -50208,8 +42350,6 @@ DecD growmem(meminst : meminst, nat : nat) : meminst [visit_id j?] no dims [visit_exp rt] [visit_id rt] not free -[visit_exp `ref*#4`] -[visit_id ref*#4] [visit_exp r'*{r' <- `r'*`} ++ r^n{}] [visit_exp r'*{r' <- `r'*`}] [scope_enter r'] @@ -50225,13 +42365,11 @@ DecD growmem(meminst : meminst, nat : nat) : meminst [visit_id r] not free [visit_exp n] [visit_id n] not free -[visit_exp (i'!`%`_u64{i#31449}.0 = (|r'*{r' <- `r'*`}| + n))] -[visit_exp i'!`%`_u64{i#31449}.0] -[visit_exp i'!`%`_u64{i#31449}] +[visit_exp (i'!`%`_u64.0 = (|r'*{r' <- `r'*`}| + n))] +[visit_exp i'!`%`_u64.0] +[visit_exp i'!`%`_u64] [visit_exp i'] [visit_id i'] not free -[visit_exp i#31449] -[visit_id i#31449] [visit_exp (|r'*{r' <- `r'*`}| + n)] [visit_exp |r'*{r' <- `r'*`}|] [visit_exp r'*{r' <- `r'*`}] @@ -50245,70 +42383,44 @@ DecD growmem(meminst : meminst, nat : nat) : meminst [visit_id r'*] no dims [visit_exp n] [visit_id n] not free -[scope_enter i#31467] -[scope_enter i#31477] [scope_enter j] -[visit_exp (i'!`%`_u64{i#31467}.0 <= j!`%`_u64{i#31477}.0)] -[visit_exp i'!`%`_u64{i#31467}.0] -[visit_exp i'!`%`_u64{i#31467}] +[visit_exp (i'!`%`_u64.0 <= j!`%`_u64.0)] +[visit_exp i'!`%`_u64.0] +[visit_exp i'!`%`_u64] [visit_exp i'] [visit_id i'] not free -[visit_exp i#31467] -[visit_id i#31467] not free -[visit_exp j!`%`_u64{i#31477}.0] -[visit_exp j!`%`_u64{i#31477}] +[visit_exp j!`%`_u64.0] +[visit_exp j!`%`_u64] [visit_exp j] [visit_id j] not free -[visit_exp i#31477] -[visit_id i#31477] not free -[visit_id i#31467] not free -[visit_id i#31477] not free [visit_id j] not free [scope_exit j] -[scope_exit i#31477] -[scope_exit i#31467] -[visit_exp `i#31467?`] -[visit_id i#31467?] no dims -[visit_id i#31467?] -[visit_exp `i#31477?`] -[visit_id i#31477?] no dims -[visit_id i#31477?] [visit_exp `j?`] [visit_id j?] not free [visit_id j?] no dims => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $growtable{tableinst : tableinst, n : n, r : ref, tableinst' : tableinst, tabletype#875 : tabletype, addrtype#1027 : addrtype, limits#1027 : limits, reftype#3401 : reftype, at : addrtype, u64#361 : u64, `u64?#359` : u64?, i : u64, `j?` : u64?, rt : reftype, `ref*#3` : ref*, `r'*` : ref*, tabletype#876 : tabletype, addrtype#1039 : addrtype, limits#1039 : limits, reftype#3413 : reftype, u64#373 : u64, `u64?#371` : u64?, i' : u64, `ref*#4` : ref*, i#31449 : nat, `i#31467?` : nat?, `i#31477?` : nat?}(tableinst, n, r) = tableinst' - -- if (tableinst = {`TYPE`{tabletype#875} `%%%`_tabletype{addrtype#1027, limits#1027, reftype#3401}(at, `[%..%]`_limits{u64#361, `u64?#359`}(i, j?{j <- `j?`}), rt), `REFS`{`ref*#3`} r'*{r' <- `r'*`}}) - -- if (tableinst' = {`TYPE`{tabletype#876} `%%%`_tabletype{addrtype#1039, limits#1039, reftype#3413}(at, `[%..%]`_limits{u64#373, `u64?#371`}(i', j?{j <- `j?`}), rt), `REFS`{`ref*#4`} r'*{r' <- `r'*`} ++ r^n{}}) - -- if (i'!`%`_u64{i#31449}.0 = (|r'*{r' <- `r'*`}| + n)) - -- (if (i'!`%`_u64{i#31467}.0 <= j!`%`_u64{i#31477}.0))?{i#31467 <- `i#31467?`, i#31477 <- `i#31477?`, j <- `j?`} -[check_dims] addrtype#1051 addrtype#1063 at b byte*#1847 byte*#1848 i i#31599 i#31609 i#31627 i#31637 i' j limits#1051 limits#1063 meminst meminst' memtype#525 memtype#526 n u64#385 u64#397 u64?#383 u64?#395 + 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' + -- 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 (i'!`%`_u64.0 = (|r'*{r' <- `r'*`}| + n)) + -- (if (i'!`%`_u64.0 <= j!`%`_u64.0))?{j <- `j?`} +[check_dims] at b i i' j meminst meminst' n [visit_exp meminst] [visit_id meminst] [visit_exp n] [visit_id n] [visit_exp meminst'] [visit_id meminst'] -[visit_exp (meminst = {`TYPE`{memtype#525} `%%PAGE`_memtype{addrtype#1051, limits#1051}(at, `[%..%]`_limits{u64#385, `u64?#383`}(i, j?{j <- `j?`})), `BYTES`{`byte*#1847`} b*{b <- `b*`}})] +[visit_exp (meminst = {`TYPE` `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), `BYTES` b*{b <- `b*`}})] [visit_exp meminst] [visit_id meminst] not free -[visit_exp {`TYPE`{memtype#525} `%%PAGE`_memtype{addrtype#1051, limits#1051}(at, `[%..%]`_limits{u64#385, `u64?#383`}(i, j?{j <- `j?`})), `BYTES`{`byte*#1847`} b*{b <- `b*`}}] -[visit_exp memtype#525] -[visit_id memtype#525] -[visit_exp `%%PAGE`_memtype{addrtype#1051, limits#1051}(at, `[%..%]`_limits{u64#385, `u64?#383`}(i, j?{j <- `j?`}))] -[visit_exp addrtype#1051] -[visit_id addrtype#1051] -[visit_exp limits#1051] -[visit_id limits#1051] -[visit_exp (at, `[%..%]`_limits{u64#385, `u64?#383`}(i, j?{j <- `j?`}))] +[visit_exp {`TYPE` `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), `BYTES` b*{b <- `b*`}}] +[visit_exp `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))] +[visit_exp (at, `[%..%]`_limits(i, j?{j <- `j?`}))] [visit_exp at] [visit_id at] -[visit_exp `[%..%]`_limits{u64#385, `u64?#383`}(i, j?{j <- `j?`})] -[visit_exp u64#385] -[visit_id u64#385] -[visit_exp `u64?#383`] -[visit_id u64?#383] +[visit_exp `[%..%]`_limits(i, j?{j <- `j?`})] [visit_exp (i, j?{j <- `j?`})] [visit_exp i] [visit_id i] @@ -50321,8 +42433,6 @@ DecD growmem(meminst : meminst, nat : nat) : meminst [visit_exp `j?`] [visit_id j?] no dims [visit_id j?] -[visit_exp `byte*#1847`] -[visit_id byte*#1847] [visit_exp b*{b <- `b*`}] [scope_enter b] [visit_exp b] @@ -50332,25 +42442,15 @@ DecD growmem(meminst : meminst, nat : nat) : meminst [visit_exp `b*`] [visit_id b*] no dims [visit_id b*] -[visit_exp (meminst' = {`TYPE`{memtype#526} `%%PAGE`_memtype{addrtype#1063, limits#1063}(at, `[%..%]`_limits{u64#397, `u64?#395`}(i', j?{j <- `j?`})), `BYTES`{`byte*#1848`} b*{b <- `b*`} ++ `%`_byte{i#31599}(0)^(n * (64 * $Ki)){i#31599 <- `i#31599*`}})] +[visit_exp (meminst' = {`TYPE` `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), `BYTES` b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}})] [visit_exp meminst'] [visit_id meminst'] not free -[visit_exp {`TYPE`{memtype#526} `%%PAGE`_memtype{addrtype#1063, limits#1063}(at, `[%..%]`_limits{u64#397, `u64?#395`}(i', j?{j <- `j?`})), `BYTES`{`byte*#1848`} b*{b <- `b*`} ++ `%`_byte{i#31599}(0)^(n * (64 * $Ki)){i#31599 <- `i#31599*`}}] -[visit_exp memtype#526] -[visit_id memtype#526] -[visit_exp `%%PAGE`_memtype{addrtype#1063, limits#1063}(at, `[%..%]`_limits{u64#397, `u64?#395`}(i', j?{j <- `j?`}))] -[visit_exp addrtype#1063] -[visit_id addrtype#1063] -[visit_exp limits#1063] -[visit_id limits#1063] -[visit_exp (at, `[%..%]`_limits{u64#397, `u64?#395`}(i', j?{j <- `j?`}))] +[visit_exp {`TYPE` `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), `BYTES` b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}] +[visit_exp `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`}))] +[visit_exp (at, `[%..%]`_limits(i', j?{j <- `j?`}))] [visit_exp at] [visit_id at] not free -[visit_exp `[%..%]`_limits{u64#397, `u64?#395`}(i', j?{j <- `j?`})] -[visit_exp u64#397] -[visit_id u64#397] -[visit_exp `u64?#395`] -[visit_id u64?#395] +[visit_exp `[%..%]`_limits(i', j?{j <- `j?`})] [visit_exp (i', j?{j <- `j?`})] [visit_exp i'] [visit_id i'] @@ -50363,9 +42463,7 @@ DecD growmem(meminst : meminst, nat : nat) : meminst [visit_exp `j?`] [visit_id j?] not free [visit_id j?] no dims -[visit_exp `byte*#1848`] -[visit_id byte*#1848] -[visit_exp b*{b <- `b*`} ++ `%`_byte{i#31599}(0)^(n * (64 * $Ki)){i#31599 <- `i#31599*`}] +[visit_exp b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}] [visit_exp b*{b <- `b*`}] [scope_enter b] [visit_exp b] @@ -50375,32 +42473,22 @@ DecD growmem(meminst : meminst, nat : nat) : meminst [visit_exp `b*`] [visit_id b*] not free [visit_id b*] no dims -[visit_exp `%`_byte{i#31599}(0)^(n * (64 * $Ki)){i#31599 <- `i#31599*`}] -[scope_enter i#31599] -[visit_exp `%`_byte{i#31599}(0)] -[visit_exp i#31599] -[visit_id i#31599] not free +[visit_exp `%`_byte(0)^(n * (64 * $Ki)){}] +[visit_exp `%`_byte(0)] [visit_exp (0)] [visit_exp 0] -[visit_id i#31599] not free -[scope_exit i#31599] [visit_exp (n * (64 * $Ki))] [visit_exp n] [visit_id n] not free [visit_exp (64 * $Ki)] [visit_exp 64] [visit_exp $Ki] -[visit_exp `i#31599*`] -[visit_id i#31599*] no dims -[visit_id i#31599*] -[visit_exp ((i'!`%`_u64{i#31609}.0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat)))] -[visit_exp (i'!`%`_u64{i#31609}.0 : nat <:> rat)] -[visit_exp i'!`%`_u64{i#31609}.0] -[visit_exp i'!`%`_u64{i#31609}] +[visit_exp ((i'!`%`_u64.0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat)))] +[visit_exp (i'!`%`_u64.0 : nat <:> rat)] +[visit_exp i'!`%`_u64.0] +[visit_exp i'!`%`_u64] [visit_exp i'] [visit_id i'] not free -[visit_exp i#31609] -[visit_id i#31609] [visit_exp (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))] [visit_exp ((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat))] [visit_exp (|b*{b <- `b*`}| : nat <:> rat)] @@ -50421,75 +42509,53 @@ DecD growmem(meminst : meminst, nat : nat) : meminst [visit_exp (n : nat <:> rat)] [visit_exp n] [visit_id n] not free -[scope_enter i#31627] -[scope_enter i#31637] [scope_enter j] -[visit_exp (i'!`%`_u64{i#31627}.0 <= j!`%`_u64{i#31637}.0)] -[visit_exp i'!`%`_u64{i#31627}.0] -[visit_exp i'!`%`_u64{i#31627}] +[visit_exp (i'!`%`_u64.0 <= j!`%`_u64.0)] +[visit_exp i'!`%`_u64.0] +[visit_exp i'!`%`_u64] [visit_exp i'] [visit_id i'] not free -[visit_exp i#31627] -[visit_id i#31627] not free -[visit_exp j!`%`_u64{i#31637}.0] -[visit_exp j!`%`_u64{i#31637}] +[visit_exp j!`%`_u64.0] +[visit_exp j!`%`_u64] [visit_exp j] [visit_id j] not free -[visit_exp i#31637] -[visit_id i#31637] not free -[visit_id i#31627] not free -[visit_id i#31637] not free [visit_id j] not free [scope_exit j] -[scope_exit i#31637] -[scope_exit i#31627] -[visit_exp `i#31627?`] -[visit_id i#31627?] no dims -[visit_id i#31627?] -[visit_exp `i#31637?`] -[visit_id i#31637?] no dims -[visit_id i#31637?] [visit_exp `j?`] [visit_id j?] not free [visit_id j?] no dims => ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $growmem{meminst : meminst, n : n, meminst' : meminst, memtype#525 : memtype, addrtype#1051 : addrtype, limits#1051 : limits, at : addrtype, u64#385 : u64, `u64?#383` : u64?, i : u64, `j?` : u64?, `byte*#1847` : byte*, `b*` : byte*, memtype#526 : memtype, addrtype#1063 : addrtype, limits#1063 : limits, u64#397 : u64, `u64?#395` : u64?, i' : u64, `byte*#1848` : byte*, `i#31599*` : nat*, i#31609 : nat, `i#31627?` : nat?, `i#31637?` : nat?}(meminst, n) = meminst' - -- if (meminst = {`TYPE`{memtype#525} `%%PAGE`_memtype{addrtype#1051, limits#1051}(at, `[%..%]`_limits{u64#385, `u64?#383`}(i, j?{j <- `j?`})), `BYTES`{`byte*#1847`} b*{b <- `b*`}}) - -- if (meminst' = {`TYPE`{memtype#526} `%%PAGE`_memtype{addrtype#1063, limits#1063}(at, `[%..%]`_limits{u64#397, `u64?#395`}(i', j?{j <- `j?`})), `BYTES`{`byte*#1848`} b*{b <- `b*`} ++ `%`_byte{i#31599}(0)^(n * (64 * $Ki)){i#31599 <- `i#31599*`}}) - -- if ((i'!`%`_u64{i#31609}.0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) - -- (if (i'!`%`_u64{i#31627}.0 <= j!`%`_u64{i#31637}.0))?{i#31627 <- `i#31627?`, i#31637 <- `i#31637?`, j <- `j?`} + def $growmem{meminst : meminst, n : n, meminst' : meminst, at : addrtype, i : u64, `j?` : u64?, `b*` : byte*, i' : u64}(meminst, n) = meminst' + -- 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 ((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?`} [check_dims] valtype DecD default_(valtype : valtype) : val? [visit_id valtype] not free -[check_dims] Inn i#31659 numtype#37 +[check_dims] Inn [visit_exp (Inn : Inn <: valtype)] [visit_exp Inn] [visit_id Inn] -[visit_exp ?(`CONST`_val{numtype#37}((Inn : Inn <: numtype), `%`_num_{i#31659}(0)))] -[visit_exp `CONST`_val{numtype#37}((Inn : Inn <: numtype), `%`_num_{i#31659}(0))] -[visit_exp numtype#37] -[visit_id numtype#37] -[visit_exp ((Inn : Inn <: numtype), `%`_num_{i#31659}(0))] +[visit_exp ?(`CONST`_val((Inn : Inn <: numtype), `%`_num_(0)))] +[visit_exp `CONST`_val((Inn : Inn <: numtype), `%`_num_(0))] +[visit_exp ((Inn : Inn <: numtype), `%`_num_(0))] [visit_exp (Inn : Inn <: numtype)] [visit_exp Inn] [visit_id Inn] not free -[visit_exp `%`_num_{i#31659}(0)] -[visit_exp i#31659] -[visit_id i#31659] +[visit_exp `%`_num_(0)] [visit_exp (0)] [visit_exp 0] => ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{Inn : Inn, numtype#37 : numtype, i#31659 : nat}((Inn : Inn <: valtype)) = ?(`CONST`_val{numtype#37}((Inn : Inn <: numtype), `%`_num_{i#31659}(0))) -[check_dims] Fnn numtype#39 + def $default_{Inn : Inn}((Inn : Inn <: valtype)) = ?(`CONST`_val((Inn : Inn <: numtype), `%`_num_(0))) +[check_dims] Fnn [visit_exp (Fnn : Fnn <: valtype)] [visit_exp Fnn] [visit_id Fnn] -[visit_exp ?(`CONST`_val{numtype#39}((Fnn : Fnn <: numtype), $fzero($size((Fnn : Fnn <: numtype)))))] -[visit_exp `CONST`_val{numtype#39}((Fnn : Fnn <: numtype), $fzero($size((Fnn : Fnn <: numtype))))] -[visit_exp numtype#39] -[visit_id numtype#39] +[visit_exp ?(`CONST`_val((Fnn : Fnn <: numtype), $fzero($size((Fnn : Fnn <: numtype)))))] +[visit_exp `CONST`_val((Fnn : Fnn <: numtype), $fzero($size((Fnn : Fnn <: numtype))))] [visit_exp ((Fnn : Fnn <: numtype), $fzero($size((Fnn : Fnn <: numtype))))] [visit_exp (Fnn : Fnn <: numtype)] [visit_exp Fnn] @@ -50501,54 +42567,40 @@ DecD default_(valtype : valtype) : val? [visit_id Fnn] not free => ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{Fnn : Fnn, numtype#39 : numtype}((Fnn : Fnn <: valtype)) = ?(`CONST`_val{numtype#39}((Fnn : Fnn <: numtype), $fzero($size((Fnn : Fnn <: numtype))))) -[check_dims] Vnn i#31681 vectype#42 + def $default_{Fnn : Fnn}((Fnn : Fnn <: valtype)) = ?(`CONST`_val((Fnn : Fnn <: numtype), $fzero($size((Fnn : Fnn <: numtype))))) +[check_dims] Vnn [visit_exp (Vnn : Vnn <: valtype)] [visit_exp Vnn] [visit_id Vnn] -[visit_exp ?(`VCONST`_val{vectype#42}(Vnn, `%`_vec_{i#31681}(0)))] -[visit_exp `VCONST`_val{vectype#42}(Vnn, `%`_vec_{i#31681}(0))] -[visit_exp vectype#42] -[visit_id vectype#42] -[visit_exp (Vnn, `%`_vec_{i#31681}(0))] +[visit_exp ?(`VCONST`_val(Vnn, `%`_vec_(0)))] +[visit_exp `VCONST`_val(Vnn, `%`_vec_(0))] +[visit_exp (Vnn, `%`_vec_(0))] [visit_exp Vnn] [visit_id Vnn] not free -[visit_exp `%`_vec_{i#31681}(0)] -[visit_exp i#31681] -[visit_id i#31681] +[visit_exp `%`_vec_(0)] [visit_exp (0)] [visit_exp 0] => ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{Vnn : Vnn, vectype#42 : vectype, i#31681 : nat}((Vnn : Vnn <: valtype)) = ?(`VCONST`_val{vectype#42}(Vnn, `%`_vec_{i#31681}(0))) -[check_dims] heaptype#1043 heaptype#1045 ht null?#1037 -[visit_exp `REF`_valtype{`null?#1037`, heaptype#1043}(?(`NULL`_null), ht)] -[visit_exp `null?#1037`] -[visit_id null?#1037] -[visit_exp heaptype#1043] -[visit_id heaptype#1043] + def $default_{Vnn : Vnn}((Vnn : Vnn <: valtype)) = ?(`VCONST`_val(Vnn, `%`_vec_(0))) +[check_dims] ht +[visit_exp `REF`_valtype(?(`NULL`_null), ht)] [visit_exp (?(`NULL`_null), ht)] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] [visit_exp ()] [visit_exp ht] [visit_id ht] -[visit_exp ?(`REF.NULL`_val{heaptype#1045}(ht))] -[visit_exp `REF.NULL`_val{heaptype#1045}(ht)] -[visit_exp heaptype#1045] -[visit_id heaptype#1045] +[visit_exp ?(`REF.NULL`_val(ht))] +[visit_exp `REF.NULL`_val(ht)] [visit_exp (ht)] [visit_exp ht] [visit_id ht] not free => ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{`null?#1037` : null?, heaptype#1043 : heaptype, ht : heaptype, heaptype#1045 : heaptype}(`REF`_valtype{`null?#1037`, heaptype#1043}(?(`NULL`_null), ht)) = ?(`REF.NULL`_val{heaptype#1045}(ht)) -[check_dims] heaptype#1047 ht null?#1039 -[visit_exp `REF`_valtype{`null?#1039`, heaptype#1047}(?(), ht)] -[visit_exp `null?#1039`] -[visit_id null?#1039] -[visit_exp heaptype#1047] -[visit_id heaptype#1047] + def $default_{ht : heaptype}(`REF`_valtype(?(`NULL`_null), ht)) = ?(`REF.NULL`_val(ht)) +[check_dims] ht +[visit_exp `REF`_valtype(?(), ht)] [visit_exp (?(), ht)] [visit_exp ?()] [visit_exp ht] @@ -50556,7 +42608,7 @@ DecD default_(valtype : valtype) : val? [visit_exp ?()] => ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{`null?#1039` : null?, heaptype#1047 : heaptype, ht : heaptype}(`REF`_valtype{`null?#1039`, heaptype#1047}(?(), ht)) = ?() + def $default_{ht : heaptype}(`REF`_valtype(?(), ht)) = ?() [check_dims] t [visit_exp t] [visit_id t] @@ -50577,12 +42629,10 @@ DecD default_(valtype : valtype) : val? [check_dims] [check_dims] [check_dims] -[check_dims] c nt numtype#51 s +[check_dims] c nt s [visit_exp s] [visit_id s] -[visit_exp `CONST`_num{numtype#51}(nt, c)] -[visit_exp numtype#51] -[visit_id numtype#51] +[visit_exp `CONST`_num(nt, c)] [visit_exp (nt, c)] [visit_exp nt] [visit_id nt] @@ -50590,12 +42640,10 @@ DecD default_(valtype : valtype) : val? [visit_id c] [visit_exp nt] [visit_id nt] not free -[check_dims] c s vectype#54 vt +[check_dims] c s vt [visit_exp s] [visit_id s] -[visit_exp `VCONST`_vec{vectype#54}(vt, c)] -[visit_exp vectype#54] -[visit_id vectype#54] +[visit_exp `VCONST`_vec(vt, c)] [visit_exp (vt, c)] [visit_exp vt] [visit_id vt] @@ -50603,269 +42651,177 @@ DecD default_(valtype : valtype) : val? [visit_id c] [visit_exp vt] [visit_id vt] not free -[check_dims] datatype*#19 deftype*#75 deftype*#76 elemtype*#19 funcidx*#56 globaltype*#20 heaptype#1049 heaptype#1061 ht ht' localtype*#22 memtype*#34 null?#1051 resulttype*#30 resulttype?#27 s subtype*#18 tabletype*#27 tagtype*#19 +[check_dims] ht ht' s [visit_exp s] [visit_id s] -[visit_exp `REF.NULL`_ref{heaptype#1049}(ht)] -[visit_exp heaptype#1049] -[visit_id heaptype#1049] +[visit_exp `REF.NULL`_ref(ht)] [visit_exp (ht)] [visit_exp ht] [visit_id ht] -[visit_exp `REF`_reftype{`null?#1051`, heaptype#1061}(?(`NULL`_null), ht')] -[visit_exp `null?#1051`] -[visit_id null?#1051] -[visit_exp heaptype#1061] -[visit_id heaptype#1061] +[visit_exp `REF`_reftype(?(`NULL`_null), ht')] [visit_exp (?(`NULL`_null), ht')] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] [visit_exp ()] [visit_exp ht'] [visit_id ht'] -[visit_exp ({`TYPES`{`deftype*#75`} [], `RECS`{`subtype*#18`} [], `TAGS`{`tagtype*#19`} [], `GLOBALS`{`globaltype*#20`} [], `MEMS`{`memtype*#34`} [], `TABLES`{`tabletype*#27`} [], `FUNCS`{`deftype*#76`} [], `DATAS`{`datatype*#19`} [], `ELEMS`{`elemtype*#19`} [], `LOCALS`{`localtype*#22`} [], `LABELS`{`resulttype*#30`} [], `RETURN`{`resulttype?#27`} ?(), `REFS`{`funcidx*#56`} []}, ht', ht)] -[visit_exp {`TYPES`{`deftype*#75`} [], `RECS`{`subtype*#18`} [], `TAGS`{`tagtype*#19`} [], `GLOBALS`{`globaltype*#20`} [], `MEMS`{`memtype*#34`} [], `TABLES`{`tabletype*#27`} [], `FUNCS`{`deftype*#76`} [], `DATAS`{`datatype*#19`} [], `ELEMS`{`elemtype*#19`} [], `LOCALS`{`localtype*#22`} [], `LABELS`{`resulttype*#30`} [], `RETURN`{`resulttype?#27`} ?(), `REFS`{`funcidx*#56`} []}] -[visit_exp `deftype*#75`] -[visit_id deftype*#75] +[visit_exp ({`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}, ht', ht)] +[visit_exp {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}] [visit_exp []] -[visit_exp `subtype*#18`] -[visit_id subtype*#18] [visit_exp []] -[visit_exp `tagtype*#19`] -[visit_id tagtype*#19] [visit_exp []] -[visit_exp `globaltype*#20`] -[visit_id globaltype*#20] [visit_exp []] -[visit_exp `memtype*#34`] -[visit_id memtype*#34] [visit_exp []] -[visit_exp `tabletype*#27`] -[visit_id tabletype*#27] [visit_exp []] -[visit_exp `deftype*#76`] -[visit_id deftype*#76] [visit_exp []] -[visit_exp `datatype*#19`] -[visit_id datatype*#19] [visit_exp []] -[visit_exp `elemtype*#19`] -[visit_id elemtype*#19] [visit_exp []] -[visit_exp `localtype*#22`] -[visit_id localtype*#22] [visit_exp []] -[visit_exp `resulttype*#30`] -[visit_id resulttype*#30] [visit_exp []] -[visit_exp `resulttype?#27`] -[visit_id resulttype?#27] [visit_exp ?()] -[visit_exp `funcidx*#56`] -[visit_id funcidx*#56] [visit_exp []] [visit_exp ht'] [visit_id ht'] not free [visit_exp ht] [visit_id ht] not free -[check_dims] heaptype#1073 i null?#1063 s u31#1 +[check_dims] i s [visit_exp s] [visit_id s] -[visit_exp `REF.I31_NUM`_ref{u31#1}(i)] -[visit_exp u31#1] -[visit_id u31#1] +[visit_exp `REF.I31_NUM`_ref(i)] [visit_exp (i)] [visit_exp i] [visit_id i] -[visit_exp `REF`_reftype{`null?#1063`, heaptype#1073}(?(), `I31`_heaptype)] -[visit_exp `null?#1063`] -[visit_id null?#1063] -[visit_exp heaptype#1073] -[visit_id heaptype#1073] +[visit_exp `REF`_reftype(?(), `I31`_heaptype)] [visit_exp (?(), `I31`_heaptype)] [visit_exp ?()] [visit_exp `I31`_heaptype] [visit_exp ()] -[check_dims] a deftype#1 dt heaptype#1085 null?#1075 s structaddr#1 structinst*#5 +[check_dims] a dt s [visit_exp s] [visit_id s] -[visit_exp `REF.STRUCT_ADDR`_ref{structaddr#1}(a)] -[visit_exp structaddr#1] -[visit_id structaddr#1] +[visit_exp `REF.STRUCT_ADDR`_ref(a)] [visit_exp (a)] [visit_exp a] [visit_id a] -[visit_exp `REF`_reftype{`null?#1075`, heaptype#1085}(?(), (dt : deftype <: heaptype))] -[visit_exp `null?#1075`] -[visit_id null?#1075] -[visit_exp heaptype#1085] -[visit_id heaptype#1085] +[visit_exp `REF`_reftype(?(), (dt : deftype <: heaptype))] [visit_exp (?(), (dt : deftype <: heaptype))] [visit_exp ?()] [visit_exp (dt : deftype <: heaptype)] [visit_exp dt] [visit_id dt] -[visit_exp (s.`STRUCTS`_store{`structinst*#5`}[a].`TYPE`_structinst{deftype#1} = dt)] -[visit_exp s.`STRUCTS`_store{`structinst*#5`}[a].`TYPE`_structinst{deftype#1}] -[visit_exp s.`STRUCTS`_store{`structinst*#5`}[a]] -[visit_exp s.`STRUCTS`_store{`structinst*#5`}] +[visit_exp (s.`STRUCTS`_store[a].`TYPE`_structinst = dt)] +[visit_exp s.`STRUCTS`_store[a].`TYPE`_structinst] +[visit_exp s.`STRUCTS`_store[a]] +[visit_exp s.`STRUCTS`_store] [visit_exp s] [visit_id s] not free -[visit_exp `structinst*#5`] -[visit_id structinst*#5] [visit_exp a] [visit_id a] not free -[visit_exp deftype#1] -[visit_id deftype#1] [visit_exp dt] [visit_id dt] not free -[check_dims] a arrayaddr#1 arrayinst*#5 deftype#2 dt heaptype#1097 null?#1087 s +[check_dims] a dt s [visit_exp s] [visit_id s] -[visit_exp `REF.ARRAY_ADDR`_ref{arrayaddr#1}(a)] -[visit_exp arrayaddr#1] -[visit_id arrayaddr#1] +[visit_exp `REF.ARRAY_ADDR`_ref(a)] [visit_exp (a)] [visit_exp a] [visit_id a] -[visit_exp `REF`_reftype{`null?#1087`, heaptype#1097}(?(), (dt : deftype <: heaptype))] -[visit_exp `null?#1087`] -[visit_id null?#1087] -[visit_exp heaptype#1097] -[visit_id heaptype#1097] +[visit_exp `REF`_reftype(?(), (dt : deftype <: heaptype))] [visit_exp (?(), (dt : deftype <: heaptype))] [visit_exp ?()] [visit_exp (dt : deftype <: heaptype)] [visit_exp dt] [visit_id dt] -[visit_exp (s.`ARRAYS`_store{`arrayinst*#5`}[a].`TYPE`_arrayinst{deftype#2} = dt)] -[visit_exp s.`ARRAYS`_store{`arrayinst*#5`}[a].`TYPE`_arrayinst{deftype#2}] -[visit_exp s.`ARRAYS`_store{`arrayinst*#5`}[a]] -[visit_exp s.`ARRAYS`_store{`arrayinst*#5`}] +[visit_exp (s.`ARRAYS`_store[a].`TYPE`_arrayinst = dt)] +[visit_exp s.`ARRAYS`_store[a].`TYPE`_arrayinst] +[visit_exp s.`ARRAYS`_store[a]] +[visit_exp s.`ARRAYS`_store] [visit_exp s] [visit_id s] not free -[visit_exp `arrayinst*#5`] -[visit_id arrayinst*#5] [visit_exp a] [visit_id a] not free -[visit_exp deftype#2] -[visit_id deftype#2] [visit_exp dt] [visit_id dt] not free -[check_dims] a deftype#3 dt funcaddr#3 funcinst*#4 heaptype#1109 null?#1099 s +[check_dims] a dt s [visit_exp s] [visit_id s] -[visit_exp `REF.FUNC_ADDR`_ref{funcaddr#3}(a)] -[visit_exp funcaddr#3] -[visit_id funcaddr#3] +[visit_exp `REF.FUNC_ADDR`_ref(a)] [visit_exp (a)] [visit_exp a] [visit_id a] -[visit_exp `REF`_reftype{`null?#1099`, heaptype#1109}(?(), (dt : deftype <: heaptype))] -[visit_exp `null?#1099`] -[visit_id null?#1099] -[visit_exp heaptype#1109] -[visit_id heaptype#1109] +[visit_exp `REF`_reftype(?(), (dt : deftype <: heaptype))] [visit_exp (?(), (dt : deftype <: heaptype))] [visit_exp ?()] [visit_exp (dt : deftype <: heaptype)] [visit_exp dt] [visit_id dt] -[visit_exp (s.`FUNCS`_store{`funcinst*#4`}[a].`TYPE`_funcinst{deftype#3} = dt)] -[visit_exp s.`FUNCS`_store{`funcinst*#4`}[a].`TYPE`_funcinst{deftype#3}] -[visit_exp s.`FUNCS`_store{`funcinst*#4`}[a]] -[visit_exp s.`FUNCS`_store{`funcinst*#4`}] +[visit_exp (s.`FUNCS`_store[a].`TYPE`_funcinst = dt)] +[visit_exp s.`FUNCS`_store[a].`TYPE`_funcinst] +[visit_exp s.`FUNCS`_store[a]] +[visit_exp s.`FUNCS`_store] [visit_exp s] [visit_id s] not free -[visit_exp `funcinst*#4`] -[visit_id funcinst*#4] [visit_exp a] [visit_id a] not free -[visit_exp deftype#3] -[visit_id deftype#3] [visit_exp dt] [visit_id dt] not free -[check_dims] a exn exnaddr#1 exninst*#4 heaptype#1121 null?#1111 s +[check_dims] a exn s [visit_exp s] [visit_id s] -[visit_exp `REF.EXN_ADDR`_ref{exnaddr#1}(a)] -[visit_exp exnaddr#1] -[visit_id exnaddr#1] +[visit_exp `REF.EXN_ADDR`_ref(a)] [visit_exp (a)] [visit_exp a] [visit_id a] -[visit_exp `REF`_reftype{`null?#1111`, heaptype#1121}(?(), `EXN`_heaptype)] -[visit_exp `null?#1111`] -[visit_id null?#1111] -[visit_exp heaptype#1121] -[visit_id heaptype#1121] +[visit_exp `REF`_reftype(?(), `EXN`_heaptype)] [visit_exp (?(), `EXN`_heaptype)] [visit_exp ?()] [visit_exp `EXN`_heaptype] [visit_exp ()] -[visit_exp (s.`EXNS`_store{`exninst*#4`}[a] = exn)] -[visit_exp s.`EXNS`_store{`exninst*#4`}[a]] -[visit_exp s.`EXNS`_store{`exninst*#4`}] +[visit_exp (s.`EXNS`_store[a] = exn)] +[visit_exp s.`EXNS`_store[a]] +[visit_exp s.`EXNS`_store] [visit_exp s] [visit_id s] not free -[visit_exp `exninst*#4`] -[visit_id exninst*#4] [visit_exp a] [visit_id a] not free [visit_exp exn] [visit_id exn] -[check_dims] a heaptype#1133 hostaddr#1 null?#1123 s +[check_dims] a s [visit_exp s] [visit_id s] -[visit_exp `REF.HOST_ADDR`_ref{hostaddr#1}(a)] -[visit_exp hostaddr#1] -[visit_id hostaddr#1] +[visit_exp `REF.HOST_ADDR`_ref(a)] [visit_exp (a)] [visit_exp a] [visit_id a] -[visit_exp `REF`_reftype{`null?#1123`, heaptype#1133}(?(), `ANY`_heaptype)] -[visit_exp `null?#1123`] -[visit_id null?#1123] -[visit_exp heaptype#1133] -[visit_id heaptype#1133] +[visit_exp `REF`_reftype(?(), `ANY`_heaptype)] [visit_exp (?(), `ANY`_heaptype)] [visit_exp ?()] [visit_exp `ANY`_heaptype] [visit_exp ()] -[check_dims] addrref addrref#1 heaptype#1145 heaptype#1157 null?#1135 null?#1147 s +[check_dims] addrref s [visit_exp s] [visit_id s] -[visit_exp `REF.EXTERN`_ref{addrref#1}(addrref)] -[visit_exp addrref#1] -[visit_id addrref#1] +[visit_exp `REF.EXTERN`_ref(addrref)] [visit_exp (addrref)] [visit_exp addrref] [visit_id addrref] -[visit_exp `REF`_reftype{`null?#1135`, heaptype#1145}(?(), `EXTERN`_heaptype)] -[visit_exp `null?#1135`] -[visit_id null?#1135] -[visit_exp heaptype#1145] -[visit_id heaptype#1145] +[visit_exp `REF`_reftype(?(), `EXTERN`_heaptype)] [visit_exp (?(), `EXTERN`_heaptype)] [visit_exp ?()] [visit_exp `EXTERN`_heaptype] [visit_exp ()] -[visit_exp (s, (addrref : addrref <: ref), `REF`_reftype{`null?#1147`, heaptype#1157}(?(), `ANY`_heaptype))] +[visit_exp (s, (addrref : addrref <: ref), `REF`_reftype(?(), `ANY`_heaptype))] [visit_exp s] [visit_id s] not free [visit_exp (addrref : addrref <: ref)] [visit_exp addrref] [visit_id addrref] not free -[visit_exp `REF`_reftype{`null?#1147`, heaptype#1157}(?(), `ANY`_heaptype)] -[visit_exp `null?#1147`] -[visit_id null?#1147] -[visit_exp heaptype#1157] -[visit_id heaptype#1157] +[visit_exp `REF`_reftype(?(), `ANY`_heaptype)] [visit_exp (?(), `ANY`_heaptype)] [visit_exp ?()] [visit_exp `ANY`_heaptype] [visit_exp ()] -[check_dims] datatype*#20 deftype*#77 deftype*#78 elemtype*#20 funcidx*#57 globaltype*#21 localtype*#23 memtype*#35 ref resulttype*#31 resulttype?#28 rt rt' s subtype*#19 tabletype*#28 tagtype*#20 +[check_dims] ref rt rt' s [visit_exp s] [visit_id s] [visit_exp ref] @@ -50879,46 +42835,20 @@ DecD default_(valtype : valtype) : val? [visit_id ref] not free [visit_exp rt'] [visit_id rt'] -[visit_exp ({`TYPES`{`deftype*#77`} [], `RECS`{`subtype*#19`} [], `TAGS`{`tagtype*#20`} [], `GLOBALS`{`globaltype*#21`} [], `MEMS`{`memtype*#35`} [], `TABLES`{`tabletype*#28`} [], `FUNCS`{`deftype*#78`} [], `DATAS`{`datatype*#20`} [], `ELEMS`{`elemtype*#20`} [], `LOCALS`{`localtype*#23`} [], `LABELS`{`resulttype*#31`} [], `RETURN`{`resulttype?#28`} ?(), `REFS`{`funcidx*#57`} []}, rt', rt)] -[visit_exp {`TYPES`{`deftype*#77`} [], `RECS`{`subtype*#19`} [], `TAGS`{`tagtype*#20`} [], `GLOBALS`{`globaltype*#21`} [], `MEMS`{`memtype*#35`} [], `TABLES`{`tabletype*#28`} [], `FUNCS`{`deftype*#78`} [], `DATAS`{`datatype*#20`} [], `ELEMS`{`elemtype*#20`} [], `LOCALS`{`localtype*#23`} [], `LABELS`{`resulttype*#31`} [], `RETURN`{`resulttype?#28`} ?(), `REFS`{`funcidx*#57`} []}] -[visit_exp `deftype*#77`] -[visit_id deftype*#77] +[visit_exp ({`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}, rt', rt)] +[visit_exp {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}] [visit_exp []] -[visit_exp `subtype*#19`] -[visit_id subtype*#19] [visit_exp []] -[visit_exp `tagtype*#20`] -[visit_id tagtype*#20] [visit_exp []] -[visit_exp `globaltype*#21`] -[visit_id globaltype*#21] [visit_exp []] -[visit_exp `memtype*#35`] -[visit_id memtype*#35] [visit_exp []] -[visit_exp `tabletype*#28`] -[visit_id tabletype*#28] [visit_exp []] -[visit_exp `deftype*#78`] -[visit_id deftype*#78] [visit_exp []] -[visit_exp `datatype*#20`] -[visit_id datatype*#20] [visit_exp []] -[visit_exp `elemtype*#20`] -[visit_id elemtype*#20] [visit_exp []] -[visit_exp `localtype*#23`] -[visit_id localtype*#23] [visit_exp []] -[visit_exp `resulttype*#31`] -[visit_id resulttype*#31] [visit_exp []] -[visit_exp `resulttype?#28`] -[visit_id resulttype?#28] [visit_exp ?()] -[visit_exp `funcidx*#57`] -[visit_id funcidx*#57] [visit_exp []] [visit_exp rt'] [visit_id rt'] not free @@ -50973,153 +42903,113 @@ DecD default_(valtype : valtype) : val? [visit_exp rt] [visit_id rt] not free [check_dims] -[check_dims] a s tagaddr#3 taginst taginst*#4 tagtype#177 tagtype#179 +[check_dims] a s taginst [visit_exp s] [visit_id s] -[visit_exp `TAG`_externaddr{tagaddr#3}(a)] -[visit_exp tagaddr#3] -[visit_id tagaddr#3] +[visit_exp `TAG`_externaddr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] -[visit_exp `TAG`_externtype{tagtype#177}(taginst.`TYPE`_taginst{tagtype#179})] -[visit_exp tagtype#177] -[visit_id tagtype#177] -[visit_exp (taginst.`TYPE`_taginst{tagtype#179})] -[visit_exp taginst.`TYPE`_taginst{tagtype#179}] +[visit_exp `TAG`_externtype(taginst.`TYPE`_taginst)] +[visit_exp (taginst.`TYPE`_taginst)] +[visit_exp taginst.`TYPE`_taginst] [visit_exp taginst] [visit_id taginst] -[visit_exp tagtype#179] -[visit_id tagtype#179] -[visit_exp (s.`TAGS`_store{`taginst*#4`}[a] = taginst)] -[visit_exp s.`TAGS`_store{`taginst*#4`}[a]] -[visit_exp s.`TAGS`_store{`taginst*#4`}] +[visit_exp (s.`TAGS`_store[a] = taginst)] +[visit_exp s.`TAGS`_store[a]] +[visit_exp s.`TAGS`_store] [visit_exp s] [visit_id s] not free -[visit_exp `taginst*#4`] -[visit_id taginst*#4] [visit_exp a] [visit_id a] not free [visit_exp taginst] [visit_id taginst] not free -[check_dims] a globaladdr#3 globalinst globalinst*#5 globaltype#2085 globaltype#2087 s +[check_dims] a globalinst s [visit_exp s] [visit_id s] -[visit_exp `GLOBAL`_externaddr{globaladdr#3}(a)] -[visit_exp globaladdr#3] -[visit_id globaladdr#3] +[visit_exp `GLOBAL`_externaddr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] -[visit_exp `GLOBAL`_externtype{globaltype#2085}(globalinst.`TYPE`_globalinst{globaltype#2087})] -[visit_exp globaltype#2085] -[visit_id globaltype#2085] -[visit_exp (globalinst.`TYPE`_globalinst{globaltype#2087})] -[visit_exp globalinst.`TYPE`_globalinst{globaltype#2087}] +[visit_exp `GLOBAL`_externtype(globalinst.`TYPE`_globalinst)] +[visit_exp (globalinst.`TYPE`_globalinst)] +[visit_exp globalinst.`TYPE`_globalinst] [visit_exp globalinst] [visit_id globalinst] -[visit_exp globaltype#2087] -[visit_id globaltype#2087] -[visit_exp (s.`GLOBALS`_store{`globalinst*#5`}[a] = globalinst)] -[visit_exp s.`GLOBALS`_store{`globalinst*#5`}[a]] -[visit_exp s.`GLOBALS`_store{`globalinst*#5`}] +[visit_exp (s.`GLOBALS`_store[a] = globalinst)] +[visit_exp s.`GLOBALS`_store[a]] +[visit_exp s.`GLOBALS`_store] [visit_exp s] [visit_id s] not free -[visit_exp `globalinst*#5`] -[visit_id globalinst*#5] [visit_exp a] [visit_id a] not free [visit_exp globalinst] [visit_id globalinst] not free -[check_dims] a memaddr#3 meminst meminst*#6 memtype#527 memtype#529 s +[check_dims] a meminst s [visit_exp s] [visit_id s] -[visit_exp `MEM`_externaddr{memaddr#3}(a)] -[visit_exp memaddr#3] -[visit_id memaddr#3] +[visit_exp `MEM`_externaddr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] -[visit_exp `MEM`_externtype{memtype#527}(meminst.`TYPE`_meminst{memtype#529})] -[visit_exp memtype#527] -[visit_id memtype#527] -[visit_exp (meminst.`TYPE`_meminst{memtype#529})] -[visit_exp meminst.`TYPE`_meminst{memtype#529}] +[visit_exp `MEM`_externtype(meminst.`TYPE`_meminst)] +[visit_exp (meminst.`TYPE`_meminst)] +[visit_exp meminst.`TYPE`_meminst] [visit_exp meminst] [visit_id meminst] -[visit_exp memtype#529] -[visit_id memtype#529] -[visit_exp (s.`MEMS`_store{`meminst*#6`}[a] = meminst)] -[visit_exp s.`MEMS`_store{`meminst*#6`}[a]] -[visit_exp s.`MEMS`_store{`meminst*#6`}] +[visit_exp (s.`MEMS`_store[a] = meminst)] +[visit_exp s.`MEMS`_store[a]] +[visit_exp s.`MEMS`_store] [visit_exp s] [visit_id s] not free -[visit_exp `meminst*#6`] -[visit_id meminst*#6] [visit_exp a] [visit_id a] not free [visit_exp meminst] [visit_id meminst] not free -[check_dims] a s tableaddr#3 tableinst tableinst*#6 tabletype#877 tabletype#879 +[check_dims] a s tableinst [visit_exp s] [visit_id s] -[visit_exp `TABLE`_externaddr{tableaddr#3}(a)] -[visit_exp tableaddr#3] -[visit_id tableaddr#3] +[visit_exp `TABLE`_externaddr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] -[visit_exp `TABLE`_externtype{tabletype#877}(tableinst.`TYPE`_tableinst{tabletype#879})] -[visit_exp tabletype#877] -[visit_id tabletype#877] -[visit_exp (tableinst.`TYPE`_tableinst{tabletype#879})] -[visit_exp tableinst.`TYPE`_tableinst{tabletype#879}] +[visit_exp `TABLE`_externtype(tableinst.`TYPE`_tableinst)] +[visit_exp (tableinst.`TYPE`_tableinst)] +[visit_exp tableinst.`TYPE`_tableinst] [visit_exp tableinst] [visit_id tableinst] -[visit_exp tabletype#879] -[visit_id tabletype#879] -[visit_exp (s.`TABLES`_store{`tableinst*#6`}[a] = tableinst)] -[visit_exp s.`TABLES`_store{`tableinst*#6`}[a]] -[visit_exp s.`TABLES`_store{`tableinst*#6`}] +[visit_exp (s.`TABLES`_store[a] = tableinst)] +[visit_exp s.`TABLES`_store[a]] +[visit_exp s.`TABLES`_store] [visit_exp s] [visit_id s] not free -[visit_exp `tableinst*#6`] -[visit_id tableinst*#6] [visit_exp a] [visit_id a] not free [visit_exp tableinst] [visit_id tableinst] not free -[check_dims] a deftype#4 funcaddr#5 funcinst funcinst*#5 s typeuse#33 +[check_dims] a funcinst s [visit_exp s] [visit_id s] -[visit_exp `FUNC`_externaddr{funcaddr#5}(a)] -[visit_exp funcaddr#5] -[visit_id funcaddr#5] +[visit_exp `FUNC`_externaddr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] -[visit_exp `FUNC`_externtype{typeuse#33}((funcinst.`TYPE`_funcinst{deftype#4} : deftype <: typeuse))] -[visit_exp typeuse#33] -[visit_id typeuse#33] -[visit_exp ((funcinst.`TYPE`_funcinst{deftype#4} : deftype <: typeuse))] -[visit_exp (funcinst.`TYPE`_funcinst{deftype#4} : deftype <: typeuse)] -[visit_exp funcinst.`TYPE`_funcinst{deftype#4}] +[visit_exp `FUNC`_externtype((funcinst.`TYPE`_funcinst : deftype <: typeuse))] +[visit_exp ((funcinst.`TYPE`_funcinst : deftype <: typeuse))] +[visit_exp (funcinst.`TYPE`_funcinst : deftype <: typeuse)] +[visit_exp funcinst.`TYPE`_funcinst] [visit_exp funcinst] [visit_id funcinst] -[visit_exp deftype#4] -[visit_id deftype#4] -[visit_exp (s.`FUNCS`_store{`funcinst*#5`}[a] = funcinst)] -[visit_exp s.`FUNCS`_store{`funcinst*#5`}[a]] -[visit_exp s.`FUNCS`_store{`funcinst*#5`}] +[visit_exp (s.`FUNCS`_store[a] = funcinst)] +[visit_exp s.`FUNCS`_store[a]] +[visit_exp s.`FUNCS`_store] [visit_exp s] [visit_id s] not free -[visit_exp `funcinst*#5`] -[visit_id funcinst*#5] [visit_exp a] [visit_id a] not free [visit_exp funcinst] [visit_id funcinst] not free -[check_dims] datatype*#21 deftype*#79 deftype*#80 elemtype*#21 externaddr funcidx*#58 globaltype*#22 localtype*#24 memtype*#36 resulttype*#32 resulttype?#29 s subtype*#20 tabletype*#29 tagtype*#21 xt xt' +[check_dims] externaddr s xt xt' [visit_exp s] [visit_id s] [visit_exp externaddr] @@ -51133,46 +43023,20 @@ DecD default_(valtype : valtype) : val? [visit_id externaddr] not free [visit_exp xt'] [visit_id xt'] -[visit_exp ({`TYPES`{`deftype*#79`} [], `RECS`{`subtype*#20`} [], `TAGS`{`tagtype*#21`} [], `GLOBALS`{`globaltype*#22`} [], `MEMS`{`memtype*#36`} [], `TABLES`{`tabletype*#29`} [], `FUNCS`{`deftype*#80`} [], `DATAS`{`datatype*#21`} [], `ELEMS`{`elemtype*#21`} [], `LOCALS`{`localtype*#24`} [], `LABELS`{`resulttype*#32`} [], `RETURN`{`resulttype?#29`} ?(), `REFS`{`funcidx*#58`} []}, xt', xt)] -[visit_exp {`TYPES`{`deftype*#79`} [], `RECS`{`subtype*#20`} [], `TAGS`{`tagtype*#21`} [], `GLOBALS`{`globaltype*#22`} [], `MEMS`{`memtype*#36`} [], `TABLES`{`tabletype*#29`} [], `FUNCS`{`deftype*#80`} [], `DATAS`{`datatype*#21`} [], `ELEMS`{`elemtype*#21`} [], `LOCALS`{`localtype*#24`} [], `LABELS`{`resulttype*#32`} [], `RETURN`{`resulttype?#29`} ?(), `REFS`{`funcidx*#58`} []}] -[visit_exp `deftype*#79`] -[visit_id deftype*#79] +[visit_exp ({`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}, xt', xt)] +[visit_exp {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}] [visit_exp []] -[visit_exp `subtype*#20`] -[visit_id subtype*#20] [visit_exp []] -[visit_exp `tagtype*#21`] -[visit_id tagtype*#21] [visit_exp []] -[visit_exp `globaltype*#22`] -[visit_id globaltype*#22] [visit_exp []] -[visit_exp `memtype*#36`] -[visit_id memtype*#36] [visit_exp []] -[visit_exp `tabletype*#29`] -[visit_id tabletype*#29] [visit_exp []] -[visit_exp `deftype*#80`] -[visit_id deftype*#80] [visit_exp []] -[visit_exp `datatype*#21`] -[visit_id datatype*#21] [visit_exp []] -[visit_exp `elemtype*#21`] -[visit_id elemtype*#21] [visit_exp []] -[visit_exp `localtype*#24`] -[visit_id localtype*#24] [visit_exp []] -[visit_exp `resulttype*#32`] -[visit_id resulttype*#32] [visit_exp []] -[visit_exp `resulttype?#29`] -[visit_id resulttype?#29] [visit_exp ?()] -[visit_exp `funcidx*#58`] -[visit_id funcidx*#58] [visit_exp []] [visit_exp xt'] [visit_id xt'] not free @@ -51198,7 +43062,7 @@ DecD inst_memtype(moduleinst : moduleinst, memtype : memtype) : memtype DecD inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype [visit_id moduleinst] not free [visit_id tabletype] not free -[check_dims] deftype*#81 dt moduleinst t +[check_dims] dt moduleinst t [visit_exp moduleinst] [visit_id moduleinst] [visit_exp t] @@ -51216,7 +43080,7 @@ DecD inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype [visit_exp `dt*`] [visit_id dt*] no dims [visit_id dt*] -[visit_exp (dt*{dt <- `dt*`} = moduleinst.`TYPES`_moduleinst{`deftype*#81`})] +[visit_exp (dt*{dt <- `dt*`} = moduleinst.`TYPES`_moduleinst)] [visit_exp dt*{dt <- `dt*`}] [scope_enter dt] [visit_exp dt] @@ -51226,16 +43090,14 @@ DecD inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype [visit_exp `dt*`] [visit_id dt*] not free [visit_id dt*] no dims -[visit_exp moduleinst.`TYPES`_moduleinst{`deftype*#81`}] +[visit_exp moduleinst.`TYPES`_moduleinst] [visit_exp moduleinst] [visit_id moduleinst] not free -[visit_exp `deftype*#81`] -[visit_id deftype*#81] => ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_valtype{moduleinst : moduleinst, t : valtype, `dt*` : deftype*, `deftype*#81` : deftype*}(moduleinst, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.`TYPES`_moduleinst{`deftype*#81`}) -[check_dims] deftype*#82 dt moduleinst rt + 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) +[check_dims] dt moduleinst rt [visit_exp moduleinst] [visit_id moduleinst] [visit_exp rt] @@ -51253,7 +43115,7 @@ DecD inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype [visit_exp `dt*`] [visit_id dt*] no dims [visit_id dt*] -[visit_exp (dt*{dt <- `dt*`} = moduleinst.`TYPES`_moduleinst{`deftype*#82`})] +[visit_exp (dt*{dt <- `dt*`} = moduleinst.`TYPES`_moduleinst)] [visit_exp dt*{dt <- `dt*`}] [scope_enter dt] [visit_exp dt] @@ -51263,16 +43125,14 @@ DecD inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype [visit_exp `dt*`] [visit_id dt*] not free [visit_id dt*] no dims -[visit_exp moduleinst.`TYPES`_moduleinst{`deftype*#82`}] +[visit_exp moduleinst.`TYPES`_moduleinst] [visit_exp moduleinst] [visit_id moduleinst] not free -[visit_exp `deftype*#82`] -[visit_id deftype*#82] => ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_reftype{moduleinst : moduleinst, rt : reftype, `dt*` : deftype*, `deftype*#82` : deftype*}(moduleinst, rt) = $subst_all_reftype(rt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.`TYPES`_moduleinst{`deftype*#82`}) -[check_dims] deftype*#83 dt gt moduleinst + 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) +[check_dims] dt gt moduleinst [visit_exp moduleinst] [visit_id moduleinst] [visit_exp gt] @@ -51290,7 +43150,7 @@ DecD inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype [visit_exp `dt*`] [visit_id dt*] no dims [visit_id dt*] -[visit_exp (dt*{dt <- `dt*`} = moduleinst.`TYPES`_moduleinst{`deftype*#83`})] +[visit_exp (dt*{dt <- `dt*`} = moduleinst.`TYPES`_moduleinst)] [visit_exp dt*{dt <- `dt*`}] [scope_enter dt] [visit_exp dt] @@ -51300,16 +43160,14 @@ DecD inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype [visit_exp `dt*`] [visit_id dt*] not free [visit_id dt*] no dims -[visit_exp moduleinst.`TYPES`_moduleinst{`deftype*#83`}] +[visit_exp moduleinst.`TYPES`_moduleinst] [visit_exp moduleinst] [visit_id moduleinst] not free -[visit_exp `deftype*#83`] -[visit_id deftype*#83] => ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_globaltype{moduleinst : moduleinst, gt : globaltype, `dt*` : deftype*, `deftype*#83` : deftype*}(moduleinst, gt) = $subst_all_globaltype(gt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.`TYPES`_moduleinst{`deftype*#83`}) -[check_dims] deftype*#84 dt moduleinst mt + 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) +[check_dims] dt moduleinst mt [visit_exp moduleinst] [visit_id moduleinst] [visit_exp mt] @@ -51327,7 +43185,7 @@ DecD inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype [visit_exp `dt*`] [visit_id dt*] no dims [visit_id dt*] -[visit_exp (dt*{dt <- `dt*`} = moduleinst.`TYPES`_moduleinst{`deftype*#84`})] +[visit_exp (dt*{dt <- `dt*`} = moduleinst.`TYPES`_moduleinst)] [visit_exp dt*{dt <- `dt*`}] [scope_enter dt] [visit_exp dt] @@ -51337,16 +43195,14 @@ DecD inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype [visit_exp `dt*`] [visit_id dt*] not free [visit_id dt*] no dims -[visit_exp moduleinst.`TYPES`_moduleinst{`deftype*#84`}] +[visit_exp moduleinst.`TYPES`_moduleinst] [visit_exp moduleinst] [visit_id moduleinst] not free -[visit_exp `deftype*#84`] -[visit_id deftype*#84] => ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_memtype{moduleinst : moduleinst, mt : memtype, `dt*` : deftype*, `deftype*#84` : deftype*}(moduleinst, mt) = $subst_all_memtype(mt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.`TYPES`_moduleinst{`deftype*#84`}) -[check_dims] deftype*#85 dt moduleinst tt + 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) +[check_dims] dt moduleinst tt [visit_exp moduleinst] [visit_id moduleinst] [visit_exp tt] @@ -51364,7 +43220,7 @@ DecD inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype [visit_exp `dt*`] [visit_id dt*] no dims [visit_id dt*] -[visit_exp (dt*{dt <- `dt*`} = moduleinst.`TYPES`_moduleinst{`deftype*#85`})] +[visit_exp (dt*{dt <- `dt*`} = moduleinst.`TYPES`_moduleinst)] [visit_exp dt*{dt <- `dt*`}] [scope_enter dt] [visit_exp dt] @@ -51374,25 +43230,19 @@ DecD inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype [visit_exp `dt*`] [visit_id dt*] not free [visit_id dt*] no dims -[visit_exp moduleinst.`TYPES`_moduleinst{`deftype*#85`}] +[visit_exp moduleinst.`TYPES`_moduleinst] [visit_exp moduleinst] [visit_id moduleinst] not free -[visit_exp `deftype*#85`] -[visit_id deftype*#85] => ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_tabletype{moduleinst : moduleinst, tt : tabletype, `dt*` : deftype*, `deftype*#85` : deftype*}(moduleinst, tt) = $subst_all_tabletype(tt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.`TYPES`_moduleinst{`deftype*#85`}) + 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) [check_dims] [check_dims] [check_dims] [check_dims] -[check_dims] instr instr' instr*#27 instr*#39 state#11 state#23 z -[visit_exp `%;%`_config{state#11, `instr*#27`}(z, instr*{instr <- `instr*`})] -[visit_exp state#11] -[visit_id state#11] -[visit_exp `instr*#27`] -[visit_id instr*#27] +[check_dims] instr instr' z +[visit_exp `%;%`_config(z, instr*{instr <- `instr*`})] [visit_exp (z, instr*{instr <- `instr*`})] [visit_exp z] [visit_id z] @@ -51405,11 +43255,7 @@ DecD inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype [visit_exp `instr*`] [visit_id instr*] no dims [visit_id instr*] -[visit_exp `%;%`_config{state#23, `instr*#39`}(z, instr'*{instr' <- `instr'*`})] -[visit_exp state#23] -[visit_id state#23] -[visit_exp `instr*#39`] -[visit_id instr*#39] +[visit_exp `%;%`_config(z, instr'*{instr' <- `instr'*`})] [visit_exp (z, instr'*{instr' <- `instr'*`})] [visit_exp z] [visit_id z] not free @@ -51441,12 +43287,8 @@ DecD inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype [visit_exp `instr'*`] [visit_id instr'*] not free [visit_id instr'*] no dims -[check_dims] instr instr' instr*#51 instr*#63 instr*#75 state#35 state#47 state#59 z -[visit_exp `%;%`_config{state#35, `instr*#51`}(z, instr*{instr <- `instr*`})] -[visit_exp state#35] -[visit_id state#35] -[visit_exp `instr*#51`] -[visit_id instr*#51] +[check_dims] instr instr' z +[visit_exp `%;%`_config(z, instr*{instr <- `instr*`})] [visit_exp (z, instr*{instr <- `instr*`})] [visit_exp z] [visit_id z] @@ -51459,11 +43301,7 @@ DecD inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype [visit_exp `instr*`] [visit_id instr*] no dims [visit_id instr*] -[visit_exp `%;%`_config{state#47, `instr*#63`}(z, instr'*{instr' <- `instr'*`})] -[visit_exp state#47] -[visit_id state#47] -[visit_exp `instr*#63`] -[visit_id instr*#63] +[visit_exp `%;%`_config(z, instr'*{instr' <- `instr'*`})] [visit_exp (z, instr'*{instr' <- `instr'*`})] [visit_exp z] [visit_id z] not free @@ -51476,12 +43314,8 @@ DecD inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype [visit_exp `instr'*`] [visit_id instr'*] no dims [visit_id instr'*] -[visit_exp (`%;%`_config{state#59, `instr*#75`}(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`})] -[visit_exp `%;%`_config{state#59, `instr*#75`}(z, instr*{instr <- `instr*`})] -[visit_exp state#59] -[visit_id state#59] -[visit_exp `instr*#75`] -[visit_id instr*#75] +[visit_exp (`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`})] +[visit_exp `%;%`_config(z, instr*{instr <- `instr*`})] [visit_exp (z, instr*{instr <- `instr*`})] [visit_exp z] [visit_id z] not free @@ -51503,12 +43337,8 @@ DecD inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype [visit_exp `instr'*`] [visit_id instr'*] not free [visit_id instr'*] no dims -[check_dims] instr instr*#87 instr*#99 state#71 state#83 z -[visit_exp `%;%`_config{state#71, `instr*#87`}(z, instr*{instr <- `instr*`})] -[visit_exp state#71] -[visit_id state#71] -[visit_exp `instr*#87`] -[visit_id instr*#87] +[check_dims] instr z +[visit_exp `%;%`_config(z, instr*{instr <- `instr*`})] [visit_exp (z, instr*{instr <- `instr*`})] [visit_exp z] [visit_id z] @@ -51521,11 +43351,7 @@ DecD inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype [visit_exp `instr*`] [visit_id instr*] no dims [visit_id instr*] -[visit_exp `%;%`_config{state#83, `instr*#99`}(z, instr*{instr <- `instr*`})] -[visit_exp state#83] -[visit_id state#83] -[visit_exp `instr*#99`] -[visit_id instr*#99] +[visit_exp `%;%`_config(z, instr*{instr <- `instr*`})] [visit_exp (z, instr*{instr <- `instr*`})] [visit_exp z] [visit_id z] not free @@ -51538,12 +43364,8 @@ DecD inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype [visit_exp `instr*`] [visit_id instr*] not free [visit_id instr*] no dims -[check_dims] instr instr' instr'' instr*#111 instr*#123 instr*#135 instr*#147 instr*#159 instr*#171 state#107 state#119 state#131 state#143 state#155 state#95 z z' z'' -[visit_exp `%;%`_config{state#95, `instr*#111`}(z, instr*{instr <- `instr*`})] -[visit_exp state#95] -[visit_id state#95] -[visit_exp `instr*#111`] -[visit_id instr*#111] +[check_dims] instr instr' instr'' z z' z'' +[visit_exp `%;%`_config(z, instr*{instr <- `instr*`})] [visit_exp (z, instr*{instr <- `instr*`})] [visit_exp z] [visit_id z] @@ -51556,11 +43378,7 @@ DecD inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype [visit_exp `instr*`] [visit_id instr*] no dims [visit_id instr*] -[visit_exp `%;%`_config{state#107, `instr*#123`}(z'', instr''*{instr'' <- `instr''*`})] -[visit_exp state#107] -[visit_id state#107] -[visit_exp `instr*#123`] -[visit_id instr*#123] +[visit_exp `%;%`_config(z'', instr''*{instr'' <- `instr''*`})] [visit_exp (z'', instr''*{instr'' <- `instr''*`})] [visit_exp z''] [visit_id z''] @@ -51573,12 +43391,8 @@ DecD inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype [visit_exp `instr''*`] [visit_id instr''*] no dims [visit_id instr''*] -[visit_exp (`%;%`_config{state#119, `instr*#135`}(z, instr*{instr <- `instr*`}), `%;%`_config{state#131, `instr*#147`}(z', instr'*{instr' <- `instr'*`}))] -[visit_exp `%;%`_config{state#119, `instr*#135`}(z, instr*{instr <- `instr*`})] -[visit_exp state#119] -[visit_id state#119] -[visit_exp `instr*#135`] -[visit_id instr*#135] +[visit_exp (`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`}))] +[visit_exp `%;%`_config(z, instr*{instr <- `instr*`})] [visit_exp (z, instr*{instr <- `instr*`})] [visit_exp z] [visit_id z] not free @@ -51591,11 +43405,7 @@ DecD inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype [visit_exp `instr*`] [visit_id instr*] not free [visit_id instr*] no dims -[visit_exp `%;%`_config{state#131, `instr*#147`}(z', instr'*{instr' <- `instr'*`})] -[visit_exp state#131] -[visit_id state#131] -[visit_exp `instr*#147`] -[visit_id instr*#147] +[visit_exp `%;%`_config(z', instr'*{instr' <- `instr'*`})] [visit_exp (z', instr'*{instr' <- `instr'*`})] [visit_exp z'] [visit_id z'] @@ -51608,12 +43418,8 @@ DecD inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype [visit_exp `instr'*`] [visit_id instr'*] no dims [visit_id instr'*] -[visit_exp (`%;%`_config{state#143, `instr*#159`}(z', instr'*{instr' <- `instr'*`}), `%;%`_config{state#155, `instr*#171`}(z'', instr''*{instr'' <- `instr''*`}))] -[visit_exp `%;%`_config{state#143, `instr*#159`}(z', instr'*{instr' <- `instr'*`})] -[visit_exp state#143] -[visit_id state#143] -[visit_exp `instr*#159`] -[visit_id instr*#159] +[visit_exp (`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`}))] +[visit_exp `%;%`_config(z', instr'*{instr' <- `instr'*`})] [visit_exp (z', instr'*{instr' <- `instr'*`})] [visit_exp z'] [visit_id z'] not free @@ -51626,11 +43432,7 @@ DecD inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype [visit_exp `instr'*`] [visit_id instr'*] not free [visit_id instr'*] no dims -[visit_exp `%;%`_config{state#155, `instr*#171`}(z'', instr''*{instr'' <- `instr''*`})] -[visit_exp state#155] -[visit_id state#155] -[visit_exp `instr*#171`] -[visit_id instr*#171] +[visit_exp `%;%`_config(z'', instr''*{instr'' <- `instr''*`})] [visit_exp (z'', instr''*{instr'' <- `instr''*`})] [visit_exp z''] [visit_id z''] not free @@ -51643,12 +43445,8 @@ DecD inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype [visit_exp `instr''*`] [visit_id instr''*] not free [visit_id instr''*] no dims -[check_dims] instr instr' instr*#183 instr*#195 instr*#207 instr*#219 instr_1 state#167 state#179 state#191 state#203 val z z' -[visit_exp `%;%`_config{state#167, `instr*#183`}(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})] -[visit_exp state#167] -[visit_id state#167] -[visit_exp `instr*#183`] -[visit_id instr*#183] +[check_dims] instr instr' instr_1 val z z' +[visit_exp `%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})] [visit_exp (z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})] [visit_exp z] [visit_id z] @@ -51682,11 +43480,7 @@ DecD inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype [visit_exp `instr_1*`] [visit_id instr_1*] no dims [visit_id instr_1*] -[visit_exp `%;%`_config{state#179, `instr*#195`}(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})] -[visit_exp state#179] -[visit_id state#179] -[visit_exp `instr*#195`] -[visit_id instr*#195] +[visit_exp `%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})] [visit_exp (z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})] [visit_exp z'] [visit_id z'] @@ -51720,12 +43514,8 @@ DecD inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype [visit_exp `instr_1*`] [visit_id instr_1*] not free [visit_id instr_1*] no dims -[visit_exp (`%;%`_config{state#191, `instr*#207`}(z, instr*{instr <- `instr*`}), `%;%`_config{state#203, `instr*#219`}(z', instr'*{instr' <- `instr'*`}))] -[visit_exp `%;%`_config{state#191, `instr*#207`}(z, instr*{instr <- `instr*`})] -[visit_exp state#191] -[visit_id state#191] -[visit_exp `instr*#207`] -[visit_id instr*#207] +[visit_exp (`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`}))] +[visit_exp `%;%`_config(z, instr*{instr <- `instr*`})] [visit_exp (z, instr*{instr <- `instr*`})] [visit_exp z] [visit_id z] not free @@ -51738,11 +43528,7 @@ DecD inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype [visit_exp `instr*`] [visit_id instr*] not free [visit_id instr*] no dims -[visit_exp `%;%`_config{state#203, `instr*#219`}(z', instr'*{instr' <- `instr'*`})] -[visit_exp state#203] -[visit_id state#203] -[visit_exp `instr*#219`] -[visit_id instr*#219] +[visit_exp `%;%`_config(z', instr'*{instr' <- `instr'*`})] [visit_exp (z', instr'*{instr' <- `instr'*`})] [visit_exp z'] [visit_id z'] not free @@ -51778,21 +43564,13 @@ DecD inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype [visit_id instr_1*] not free [visit_id instr_1*] no dims [visit_exp []] -[check_dims] instr instr' instr*#231 instr*#233 instr*#246 instr*#248 instr*#261 instr*#273 instr_0 n n#1127 n#1129 state#215 state#227 state#239 state#251 z z' -[visit_exp `%;%`_config{state#215, `instr*#231`}(z, [`LABEL_%{%}%`_instr{n#1127, `instr*#233`}(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])] -[visit_exp state#215] -[visit_id state#215] -[visit_exp `instr*#231`] -[visit_id instr*#231] -[visit_exp (z, [`LABEL_%{%}%`_instr{n#1127, `instr*#233`}(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])] +[check_dims] instr instr' instr_0 n z z' +[visit_exp `%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])] +[visit_exp (z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])] [visit_exp z] [visit_id z] -[visit_exp [`LABEL_%{%}%`_instr{n#1127, `instr*#233`}(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]] -[visit_exp `LABEL_%{%}%`_instr{n#1127, `instr*#233`}(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})] -[visit_exp n#1127] -[visit_id n#1127] -[visit_exp `instr*#233`] -[visit_id instr*#233] +[visit_exp [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]] +[visit_exp `LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})] [visit_exp (n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})] [visit_exp n] [visit_id n] @@ -51814,20 +43592,12 @@ DecD inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype [visit_exp `instr*`] [visit_id instr*] no dims [visit_id instr*] -[visit_exp `%;%`_config{state#227, `instr*#246`}(z', [`LABEL_%{%}%`_instr{n#1129, `instr*#248`}(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])] -[visit_exp state#227] -[visit_id state#227] -[visit_exp `instr*#246`] -[visit_id instr*#246] -[visit_exp (z', [`LABEL_%{%}%`_instr{n#1129, `instr*#248`}(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])] +[visit_exp `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])] +[visit_exp (z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])] [visit_exp z'] [visit_id z'] -[visit_exp [`LABEL_%{%}%`_instr{n#1129, `instr*#248`}(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})]] -[visit_exp `LABEL_%{%}%`_instr{n#1129, `instr*#248`}(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})] -[visit_exp n#1129] -[visit_id n#1129] -[visit_exp `instr*#248`] -[visit_id instr*#248] +[visit_exp [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})]] +[visit_exp `LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})] [visit_exp (n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})] [visit_exp n] [visit_id n] not free @@ -51849,12 +43619,8 @@ DecD inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype [visit_exp `instr'*`] [visit_id instr'*] no dims [visit_id instr'*] -[visit_exp (`%;%`_config{state#239, `instr*#261`}(z, instr*{instr <- `instr*`}), `%;%`_config{state#251, `instr*#273`}(z', instr'*{instr' <- `instr'*`}))] -[visit_exp `%;%`_config{state#239, `instr*#261`}(z, instr*{instr <- `instr*`})] -[visit_exp state#239] -[visit_id state#239] -[visit_exp `instr*#261`] -[visit_id instr*#261] +[visit_exp (`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`}))] +[visit_exp `%;%`_config(z, instr*{instr <- `instr*`})] [visit_exp (z, instr*{instr <- `instr*`})] [visit_exp z] [visit_id z] not free @@ -51867,11 +43633,7 @@ DecD inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype [visit_exp `instr*`] [visit_id instr*] not free [visit_id instr*] no dims -[visit_exp `%;%`_config{state#251, `instr*#273`}(z', instr'*{instr' <- `instr'*`})] -[visit_exp state#251] -[visit_id state#251] -[visit_exp `instr*#273`] -[visit_id instr*#273] +[visit_exp `%;%`_config(z', instr'*{instr' <- `instr'*`})] [visit_exp (z', instr'*{instr' <- `instr'*`})] [visit_exp z'] [visit_id z'] not free @@ -51884,31 +43646,17 @@ DecD inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype [visit_exp `instr'*`] [visit_id instr'*] not free [visit_id instr'*] no dims -[check_dims] f f' f'' frame#725 frame#727 frame#739 frame#741 frame#753 frame#765 instr instr' instr*#285 instr*#287 instr*#299 instr*#301 instr*#313 instr*#325 n n#1131 n#1133 s s' state#263 state#275 state#287 state#299 store#725 store#737 store#749 store#761 -[visit_exp `%;%`_config{state#263, `instr*#285`}(`%;%`_state{store#725, frame#725}(s, f), [`FRAME_%{%}%`_instr{n#1131, frame#727, `instr*#287`}(n, f', instr*{instr <- `instr*`})])] -[visit_exp state#263] -[visit_id state#263] -[visit_exp `instr*#285`] -[visit_id instr*#285] -[visit_exp (`%;%`_state{store#725, frame#725}(s, f), [`FRAME_%{%}%`_instr{n#1131, frame#727, `instr*#287`}(n, f', instr*{instr <- `instr*`})])] -[visit_exp `%;%`_state{store#725, frame#725}(s, f)] -[visit_exp store#725] -[visit_id store#725] -[visit_exp frame#725] -[visit_id frame#725] +[check_dims] f f' f'' instr instr' n s s' +[visit_exp `%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})])] +[visit_exp (`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})])] +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] [visit_exp f] [visit_id f] -[visit_exp [`FRAME_%{%}%`_instr{n#1131, frame#727, `instr*#287`}(n, f', instr*{instr <- `instr*`})]] -[visit_exp `FRAME_%{%}%`_instr{n#1131, frame#727, `instr*#287`}(n, f', instr*{instr <- `instr*`})] -[visit_exp n#1131] -[visit_id n#1131] -[visit_exp frame#727] -[visit_id frame#727] -[visit_exp `instr*#287`] -[visit_id instr*#287] +[visit_exp [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]] +[visit_exp `FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})] [visit_exp (n, f', instr*{instr <- `instr*`})] [visit_exp n] [visit_id n] @@ -51923,30 +43671,16 @@ DecD inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype [visit_exp `instr*`] [visit_id instr*] no dims [visit_id instr*] -[visit_exp `%;%`_config{state#275, `instr*#299`}(`%;%`_state{store#737, frame#739}(s', f), [`FRAME_%{%}%`_instr{n#1133, frame#741, `instr*#301`}(n, f'', instr'*{instr' <- `instr'*`})])] -[visit_exp state#275] -[visit_id state#275] -[visit_exp `instr*#299`] -[visit_id instr*#299] -[visit_exp (`%;%`_state{store#737, frame#739}(s', f), [`FRAME_%{%}%`_instr{n#1133, frame#741, `instr*#301`}(n, f'', instr'*{instr' <- `instr'*`})])] -[visit_exp `%;%`_state{store#737, frame#739}(s', f)] -[visit_exp store#737] -[visit_id store#737] -[visit_exp frame#739] -[visit_id frame#739] +[visit_exp `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])] +[visit_exp (`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])] +[visit_exp `%;%`_state(s', f)] [visit_exp (s', f)] [visit_exp s'] [visit_id s'] [visit_exp f] [visit_id f] not free -[visit_exp [`FRAME_%{%}%`_instr{n#1133, frame#741, `instr*#301`}(n, f'', instr'*{instr' <- `instr'*`})]] -[visit_exp `FRAME_%{%}%`_instr{n#1133, frame#741, `instr*#301`}(n, f'', instr'*{instr' <- `instr'*`})] -[visit_exp n#1133] -[visit_id n#1133] -[visit_exp frame#741] -[visit_id frame#741] -[visit_exp `instr*#301`] -[visit_id instr*#301] +[visit_exp [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})]] +[visit_exp `FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})] [visit_exp (n, f'', instr'*{instr' <- `instr'*`})] [visit_exp n] [visit_id n] not free @@ -51961,18 +43695,10 @@ DecD inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype [visit_exp `instr'*`] [visit_id instr'*] no dims [visit_id instr'*] -[visit_exp (`%;%`_config{state#287, `instr*#313`}(`%;%`_state{store#749, frame#753}(s, f'), instr*{instr <- `instr*`}), `%;%`_config{state#299, `instr*#325`}(`%;%`_state{store#761, frame#765}(s', f''), instr'*{instr' <- `instr'*`}))] -[visit_exp `%;%`_config{state#287, `instr*#313`}(`%;%`_state{store#749, frame#753}(s, f'), instr*{instr <- `instr*`})] -[visit_exp state#287] -[visit_id state#287] -[visit_exp `instr*#313`] -[visit_id instr*#313] -[visit_exp (`%;%`_state{store#749, frame#753}(s, f'), instr*{instr <- `instr*`})] -[visit_exp `%;%`_state{store#749, frame#753}(s, f')] -[visit_exp store#749] -[visit_id store#749] -[visit_exp frame#753] -[visit_id frame#753] +[visit_exp (`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`}))] +[visit_exp `%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`})] +[visit_exp (`%;%`_state(s, f'), instr*{instr <- `instr*`})] +[visit_exp `%;%`_state(s, f')] [visit_exp (s, f')] [visit_exp s] [visit_id s] not free @@ -51987,17 +43713,9 @@ DecD inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype [visit_exp `instr*`] [visit_id instr*] not free [visit_id instr*] no dims -[visit_exp `%;%`_config{state#299, `instr*#325`}(`%;%`_state{store#761, frame#765}(s', f''), instr'*{instr' <- `instr'*`})] -[visit_exp state#299] -[visit_id state#299] -[visit_exp `instr*#325`] -[visit_id instr*#325] -[visit_exp (`%;%`_state{store#761, frame#765}(s', f''), instr'*{instr' <- `instr'*`})] -[visit_exp `%;%`_state{store#761, frame#765}(s', f'')] -[visit_exp store#761] -[visit_id store#761] -[visit_exp frame#765] -[visit_id frame#765] +[visit_exp `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})] +[visit_exp (`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})] +[visit_exp `%;%`_state(s', f'')] [visit_exp (s', f'')] [visit_exp s'] [visit_id s'] not free @@ -52032,25 +43750,21 @@ DecD inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype [visit_exp `DROP`_instr] [visit_exp ()] [visit_exp []] -[check_dims] c i#31733 numtype#59 t val_1 val_2 valtype*?#7 -[visit_exp [(val_1 : val <: instr) (val_2 : val <: instr) `CONST`_instr{numtype#59}(`I32`_numtype, c) `SELECT`_instr{`valtype*?#7`}(t*{t <- `t*`}?{`t*` <- `t*?`})]] +[check_dims] c t val_1 val_2 +[visit_exp [(val_1 : val <: instr) (val_2 : val <: instr) `CONST`_instr(`I32`_numtype, c) `SELECT`_instr(t*{t <- `t*`}?{`t*` <- `t*?`})]] [visit_exp (val_1 : val <: instr)] [visit_exp val_1] [visit_id val_1] [visit_exp (val_2 : val <: instr)] [visit_exp val_2] [visit_id val_2] -[visit_exp `CONST`_instr{numtype#59}(`I32`_numtype, c)] -[visit_exp numtype#59] -[visit_id numtype#59] +[visit_exp `CONST`_instr(`I32`_numtype, c)] [visit_exp (`I32`_numtype, c)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp c] [visit_id c] -[visit_exp `SELECT`_instr{`valtype*?#7`}(t*{t <- `t*`}?{`t*` <- `t*?`})] -[visit_exp `valtype*?#7`] -[visit_id valtype*?#7] +[visit_exp `SELECT`_instr(t*{t <- `t*`}?{`t*` <- `t*?`})] [visit_exp (t*{t <- `t*`}?{`t*` <- `t*?`})] [visit_exp t*{t <- `t*`}?{`t*` <- `t*?`}] [scope_enter t*] @@ -52073,33 +43787,27 @@ DecD inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype [visit_exp (val_1 : val <: instr)] [visit_exp val_1] [visit_id val_1] not free -[visit_exp (c!`%`_num_{i#31733}.0 =/= 0)] -[visit_exp c!`%`_num_{i#31733}.0] -[visit_exp c!`%`_num_{i#31733}] +[visit_exp (c!`%`_num_.0 =/= 0)] +[visit_exp c!`%`_num_.0] +[visit_exp c!`%`_num_] [visit_exp c] [visit_id c] not free -[visit_exp i#31733] -[visit_id i#31733] [visit_exp 0] -[check_dims] c i#31757 numtype#61 t val_1 val_2 valtype*?#9 -[visit_exp [(val_1 : val <: instr) (val_2 : val <: instr) `CONST`_instr{numtype#61}(`I32`_numtype, c) `SELECT`_instr{`valtype*?#9`}(t*{t <- `t*`}?{`t*` <- `t*?`})]] +[check_dims] c t val_1 val_2 +[visit_exp [(val_1 : val <: instr) (val_2 : val <: instr) `CONST`_instr(`I32`_numtype, c) `SELECT`_instr(t*{t <- `t*`}?{`t*` <- `t*?`})]] [visit_exp (val_1 : val <: instr)] [visit_exp val_1] [visit_id val_1] [visit_exp (val_2 : val <: instr)] [visit_exp val_2] [visit_id val_2] -[visit_exp `CONST`_instr{numtype#61}(`I32`_numtype, c)] -[visit_exp numtype#61] -[visit_id numtype#61] +[visit_exp `CONST`_instr(`I32`_numtype, c)] [visit_exp (`I32`_numtype, c)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp c] [visit_id c] -[visit_exp `SELECT`_instr{`valtype*?#9`}(t*{t <- `t*`}?{`t*` <- `t*?`})] -[visit_exp `valtype*?#9`] -[visit_id valtype*?#9] +[visit_exp `SELECT`_instr(t*{t <- `t*`}?{`t*` <- `t*?`})] [visit_exp (t*{t <- `t*`}?{`t*` <- `t*?`})] [visit_exp t*{t <- `t*`}?{`t*` <- `t*?`}] [scope_enter t*] @@ -52122,36 +43830,26 @@ DecD inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype [visit_exp (val_2 : val <: instr)] [visit_exp val_2] [visit_id val_2] not free -[visit_exp (c!`%`_num_{i#31757}.0 = 0)] -[visit_exp c!`%`_num_{i#31757}.0] -[visit_exp c!`%`_num_{i#31757}] +[visit_exp (c!`%`_num_.0 = 0)] +[visit_exp c!`%`_num_.0] +[visit_exp c!`%`_num_] [visit_exp c] [visit_id c] not free -[visit_exp i#31757] -[visit_id i#31757] [visit_exp 0] [check_dims] blocktype state DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id state] not free [visit_id blocktype] not free -[check_dims] X*#12215 X*#12228 X*#12241 X*#12292 localidx*#1757 resulttype#2914 resulttype#2934 t_1 t_2 typeidx#1551 x z +[check_dims] t_1 t_2 x z [visit_exp z] [visit_id z] -[visit_exp `_IDX`_blocktype{typeidx#1551}(x)] -[visit_exp typeidx#1551] -[visit_id typeidx#1551] +[visit_exp `_IDX`_blocktype(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%->_%%`_instrtype{resulttype#2934, `localidx*#1757`}(`%`_resulttype{`X*#12241`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#12292`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#2934] -[visit_id resulttype#2934] -[visit_exp `localidx*#1757`] -[visit_id localidx*#1757] -[visit_exp (`%`_resulttype{`X*#12241`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#12292`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#12241`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#12241`] -[visit_id X*#12241] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -52163,9 +43861,7 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id t_1*] no dims [visit_id t_1*] [visit_exp []] -[visit_exp `%`_resulttype{`X*#12292`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#12292`] -[visit_id X*#12292] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -52176,19 +43872,15 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `t_2*`] [visit_id t_2*] no dims [visit_id t_2*] -[visit_exp ($type(z, x), `FUNC%->%`_comptype{resulttype#2914}(`%`_resulttype{`X*#12215`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#12228`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp ($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))] [visit_exp $type(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `FUNC%->%`_comptype{resulttype#2914}(`%`_resulttype{`X*#12215`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#12228`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#2914] -[visit_id resulttype#2914] -[visit_exp (`%`_resulttype{`X*#12215`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#12228`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#12215`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#12215`] -[visit_id X*#12215] +[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -52199,9 +43891,7 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `t_1*`] [visit_id t_1*] not free [visit_id t_1*] no dims -[visit_exp `%`_resulttype{`X*#12228`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#12228`] -[visit_id X*#12228] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -52214,14 +43904,12 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id t_2*] no dims => ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - def $blocktype_{z : state, typeidx#1551 : typeidx, x : idx, resulttype#2934 : resulttype, `localidx*#1757` : localidx*, `X*#12241` : valtype*, `t_1*` : valtype*, `X*#12292` : valtype*, `t_2*` : valtype*, resulttype#2914 : resulttype, `X*#12215` : valtype*, `X*#12228` : valtype*}(z, `_IDX`_blocktype{typeidx#1551}(x)) = `%->_%%`_instrtype{resulttype#2934, `localidx*#1757`}(`%`_resulttype{`X*#12241`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#12292`}(t_2*{t_2 <- `t_2*`})) - -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype{resulttype#2914}(`%`_resulttype{`X*#12215`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#12228`}(t_2*{t_2 <- `t_2*`}))) -[check_dims] X*#12313 X*#12362 localidx*#1769 resulttype#2954 t valtype?#5 z + 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*`}))) +[check_dims] t z [visit_exp z] [visit_id z] -[visit_exp `_RESULT`_blocktype{`valtype?#5`}(t?{t <- `t?`})] -[visit_exp `valtype?#5`] -[visit_id valtype?#5] +[visit_exp `_RESULT`_blocktype(t?{t <- `t?`})] [visit_exp (t?{t <- `t?`})] [visit_exp t?{t <- `t?`}] [scope_enter t] @@ -52232,21 +43920,13 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `t?`] [visit_id t?] no dims [visit_id t?] -[visit_exp `%->_%%`_instrtype{resulttype#2954, `localidx*#1769`}(`%`_resulttype{`X*#12313`}([]), [], `%`_resulttype{`X*#12362`}(lift(t?{t <- `t?`})))] -[visit_exp resulttype#2954] -[visit_id resulttype#2954] -[visit_exp `localidx*#1769`] -[visit_id localidx*#1769] -[visit_exp (`%`_resulttype{`X*#12313`}([]), [], `%`_resulttype{`X*#12362`}(lift(t?{t <- `t?`})))] -[visit_exp `%`_resulttype{`X*#12313`}([])] -[visit_exp `X*#12313`] -[visit_id X*#12313] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`})))] +[visit_exp (`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`})))] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] [visit_exp []] -[visit_exp `%`_resulttype{`X*#12362`}(lift(t?{t <- `t?`}))] -[visit_exp `X*#12362`] -[visit_id X*#12362] +[visit_exp `%`_resulttype(lift(t?{t <- `t?`}))] [visit_exp (lift(t?{t <- `t?`}))] [visit_exp lift(t?{t <- `t?`})] [visit_exp t?{t <- `t?`}] @@ -52260,17 +43940,13 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id t?] no dims => ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - def $blocktype_{z : state, `valtype?#5` : valtype?, `t?` : valtype?, resulttype#2954 : resulttype, `localidx*#1769` : localidx*, `X*#12313` : valtype*, `X*#12362` : valtype*}(z, `_RESULT`_blocktype{`valtype?#5`}(t?{t <- `t?`})) = `%->_%%`_instrtype{resulttype#2954, `localidx*#1769`}(`%`_resulttype{`X*#12313`}([]), [], `%`_resulttype{`X*#12362`}(lift(t?{t <- `t?`}))) -[check_dims] X*#12373 X*#12424 blocktype#15 bt instr instr*#337 instr*#339 instr*#341 localidx*#1781 m n n#1141 resulttype#2974 state#311 t_1 t_2 val z -[visit_exp `%;%`_config{state#311, `instr*#337`}(z, (val : val <: instr)^m{val <- `val*`} ++ [`BLOCK`_instr{blocktype#15, `instr*#339`}(bt, instr*{instr <- `instr*`})])] -[visit_exp state#311] -[visit_id state#311] -[visit_exp `instr*#337`] -[visit_id instr*#337] -[visit_exp (z, (val : val <: instr)^m{val <- `val*`} ++ [`BLOCK`_instr{blocktype#15, `instr*#339`}(bt, instr*{instr <- `instr*`})])] + def $blocktype_{z : state, `t?` : valtype?}(z, `_RESULT`_blocktype(t?{t <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`}))) +[check_dims] bt instr m n t_1 t_2 val z +[visit_exp `%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [`BLOCK`_instr(bt, instr*{instr <- `instr*`})])] +[visit_exp (z, (val : val <: instr)^m{val <- `val*`} ++ [`BLOCK`_instr(bt, instr*{instr <- `instr*`})])] [visit_exp z] [visit_id z] -[visit_exp (val : val <: instr)^m{val <- `val*`} ++ [`BLOCK`_instr{blocktype#15, `instr*#339`}(bt, instr*{instr <- `instr*`})]] +[visit_exp (val : val <: instr)^m{val <- `val*`} ++ [`BLOCK`_instr(bt, instr*{instr <- `instr*`})]] [visit_exp (val : val <: instr)^m{val <- `val*`}] [scope_enter val] [visit_exp (val : val <: instr)] @@ -52283,12 +43959,8 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `val*`] [visit_id val*] no dims [visit_id val*] -[visit_exp [`BLOCK`_instr{blocktype#15, `instr*#339`}(bt, instr*{instr <- `instr*`})]] -[visit_exp `BLOCK`_instr{blocktype#15, `instr*#339`}(bt, instr*{instr <- `instr*`})] -[visit_exp blocktype#15] -[visit_id blocktype#15] -[visit_exp `instr*#339`] -[visit_id instr*#339] +[visit_exp [`BLOCK`_instr(bt, instr*{instr <- `instr*`})]] +[visit_exp `BLOCK`_instr(bt, instr*{instr <- `instr*`})] [visit_exp (bt, instr*{instr <- `instr*`})] [visit_exp bt] [visit_id bt] @@ -52301,12 +43973,8 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `instr*`] [visit_id instr*] no dims [visit_id instr*] -[visit_exp [`LABEL_%{%}%`_instr{n#1141, `instr*#341`}(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]] -[visit_exp `LABEL_%{%}%`_instr{n#1141, `instr*#341`}(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})] -[visit_exp n#1141] -[visit_id n#1141] -[visit_exp `instr*#341`] -[visit_id instr*#341] +[visit_exp [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]] +[visit_exp `LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})] [visit_exp (n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})] [visit_exp n] [visit_id n] @@ -52333,21 +44001,15 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `instr*`] [visit_id instr*] not free [visit_id instr*] no dims -[visit_exp ($blocktype_(z, bt) = `%->_%%`_instrtype{resulttype#2974, `localidx*#1781`}(`%`_resulttype{`X*#12373`}(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#12424`}(t_2^n{t_2 <- `t_2*`})))] +[visit_exp ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`})))] [visit_exp $blocktype_(z, bt)] [visit_exp z] [visit_id z] not free [visit_exp bt] [visit_id bt] not free -[visit_exp `%->_%%`_instrtype{resulttype#2974, `localidx*#1781`}(`%`_resulttype{`X*#12373`}(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#12424`}(t_2^n{t_2 <- `t_2*`}))] -[visit_exp resulttype#2974] -[visit_id resulttype#2974] -[visit_exp `localidx*#1781`] -[visit_id localidx*#1781] -[visit_exp (`%`_resulttype{`X*#12373`}(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#12424`}(t_2^n{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#12373`}(t_1^m{t_1 <- `t_1*`})] -[visit_exp `X*#12373`] -[visit_id X*#12373] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1^m{t_1 <- `t_1*`})] [visit_exp (t_1^m{t_1 <- `t_1*`})] [visit_exp t_1^m{t_1 <- `t_1*`}] [scope_enter t_1] @@ -52361,9 +44023,7 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id t_1*] no dims [visit_id t_1*] [visit_exp []] -[visit_exp `%`_resulttype{`X*#12424`}(t_2^n{t_2 <- `t_2*`})] -[visit_exp `X*#12424`] -[visit_id X*#12424] +[visit_exp `%`_resulttype(t_2^n{t_2 <- `t_2*`})] [visit_exp (t_2^n{t_2 <- `t_2*`})] [visit_exp t_2^n{t_2 <- `t_2*`}] [scope_enter t_2] @@ -52376,16 +44036,12 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `t_2*`] [visit_id t_2*] no dims [visit_id t_2*] -[check_dims] X*#12435 X*#12486 blocktype#17 blocktype#19 bt instr instr*#354 instr*#356 instr*#358 instr*#361 localidx*#1793 m n n#1143 resulttype#2994 state#323 t_1 t_2 val z -[visit_exp `%;%`_config{state#323, `instr*#354`}(z, (val : val <: instr)^m{val <- `val*`} ++ [`LOOP`_instr{blocktype#17, `instr*#356`}(bt, instr*{instr <- `instr*`})])] -[visit_exp state#323] -[visit_id state#323] -[visit_exp `instr*#354`] -[visit_id instr*#354] -[visit_exp (z, (val : val <: instr)^m{val <- `val*`} ++ [`LOOP`_instr{blocktype#17, `instr*#356`}(bt, instr*{instr <- `instr*`})])] +[check_dims] bt instr m n t_1 t_2 val z +[visit_exp `%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [`LOOP`_instr(bt, instr*{instr <- `instr*`})])] +[visit_exp (z, (val : val <: instr)^m{val <- `val*`} ++ [`LOOP`_instr(bt, instr*{instr <- `instr*`})])] [visit_exp z] [visit_id z] -[visit_exp (val : val <: instr)^m{val <- `val*`} ++ [`LOOP`_instr{blocktype#17, `instr*#356`}(bt, instr*{instr <- `instr*`})]] +[visit_exp (val : val <: instr)^m{val <- `val*`} ++ [`LOOP`_instr(bt, instr*{instr <- `instr*`})]] [visit_exp (val : val <: instr)^m{val <- `val*`}] [scope_enter val] [visit_exp (val : val <: instr)] @@ -52398,12 +44054,8 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `val*`] [visit_id val*] no dims [visit_id val*] -[visit_exp [`LOOP`_instr{blocktype#17, `instr*#356`}(bt, instr*{instr <- `instr*`})]] -[visit_exp `LOOP`_instr{blocktype#17, `instr*#356`}(bt, instr*{instr <- `instr*`})] -[visit_exp blocktype#17] -[visit_id blocktype#17] -[visit_exp `instr*#356`] -[visit_id instr*#356] +[visit_exp [`LOOP`_instr(bt, instr*{instr <- `instr*`})]] +[visit_exp `LOOP`_instr(bt, instr*{instr <- `instr*`})] [visit_exp (bt, instr*{instr <- `instr*`})] [visit_exp bt] [visit_id bt] @@ -52416,21 +44068,13 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `instr*`] [visit_id instr*] no dims [visit_id instr*] -[visit_exp [`LABEL_%{%}%`_instr{n#1143, `instr*#358`}(m, [`LOOP`_instr{blocktype#19, `instr*#361`}(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]] -[visit_exp `LABEL_%{%}%`_instr{n#1143, `instr*#358`}(m, [`LOOP`_instr{blocktype#19, `instr*#361`}(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})] -[visit_exp n#1143] -[visit_id n#1143] -[visit_exp `instr*#358`] -[visit_id instr*#358] -[visit_exp (m, [`LOOP`_instr{blocktype#19, `instr*#361`}(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})] +[visit_exp [`LABEL_%{%}%`_instr(m, [`LOOP`_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]] +[visit_exp `LABEL_%{%}%`_instr(m, [`LOOP`_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})] +[visit_exp (m, [`LOOP`_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})] [visit_exp m] [visit_id m] not free -[visit_exp [`LOOP`_instr{blocktype#19, `instr*#361`}(bt, instr*{instr <- `instr*`})]] -[visit_exp `LOOP`_instr{blocktype#19, `instr*#361`}(bt, instr*{instr <- `instr*`})] -[visit_exp blocktype#19] -[visit_id blocktype#19] -[visit_exp `instr*#361`] -[visit_id instr*#361] +[visit_exp [`LOOP`_instr(bt, instr*{instr <- `instr*`})]] +[visit_exp `LOOP`_instr(bt, instr*{instr <- `instr*`})] [visit_exp (bt, instr*{instr <- `instr*`})] [visit_exp bt] [visit_id bt] not free @@ -52465,21 +44109,15 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `instr*`] [visit_id instr*] not free [visit_id instr*] no dims -[visit_exp ($blocktype_(z, bt) = `%->_%%`_instrtype{resulttype#2994, `localidx*#1793`}(`%`_resulttype{`X*#12435`}(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#12486`}(t_2^n{t_2 <- `t_2*`})))] +[visit_exp ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`})))] [visit_exp $blocktype_(z, bt)] [visit_exp z] [visit_id z] not free [visit_exp bt] [visit_id bt] not free -[visit_exp `%->_%%`_instrtype{resulttype#2994, `localidx*#1793`}(`%`_resulttype{`X*#12435`}(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#12486`}(t_2^n{t_2 <- `t_2*`}))] -[visit_exp resulttype#2994] -[visit_id resulttype#2994] -[visit_exp `localidx*#1793`] -[visit_id localidx*#1793] -[visit_exp (`%`_resulttype{`X*#12435`}(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#12486`}(t_2^n{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#12435`}(t_1^m{t_1 <- `t_1*`})] -[visit_exp `X*#12435`] -[visit_id X*#12435] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1^m{t_1 <- `t_1*`})] [visit_exp (t_1^m{t_1 <- `t_1*`})] [visit_exp t_1^m{t_1 <- `t_1*`}] [scope_enter t_1] @@ -52493,9 +44131,7 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id t_1*] no dims [visit_id t_1*] [visit_exp []] -[visit_exp `%`_resulttype{`X*#12486`}(t_2^n{t_2 <- `t_2*`})] -[visit_exp `X*#12486`] -[visit_id X*#12486] +[visit_exp `%`_resulttype(t_2^n{t_2 <- `t_2*`})] [visit_exp (t_2^n{t_2 <- `t_2*`})] [visit_exp t_2^n{t_2 <- `t_2*`}] [scope_enter t_2] @@ -52508,21 +44144,15 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `t_2*`] [visit_id t_2*] no dims [visit_id t_2*] -[check_dims] blocktype#21 blocktype#23 bt c i#31807 instr*#363 instr*#366 instr_1 instr_2 numtype#63 -[visit_exp [`CONST`_instr{numtype#63}(`I32`_numtype, c) `IF%%ELSE%`_instr{blocktype#21, `instr*#363`}(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})]] -[visit_exp `CONST`_instr{numtype#63}(`I32`_numtype, c)] -[visit_exp numtype#63] -[visit_id numtype#63] +[check_dims] bt c instr_1 instr_2 +[visit_exp [`CONST`_instr(`I32`_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})]] +[visit_exp `CONST`_instr(`I32`_numtype, c)] [visit_exp (`I32`_numtype, c)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp c] [visit_id c] -[visit_exp `IF%%ELSE%`_instr{blocktype#21, `instr*#363`}(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})] -[visit_exp blocktype#21] -[visit_id blocktype#21] -[visit_exp `instr*#363`] -[visit_id instr*#363] +[visit_exp `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})] [visit_exp (bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})] [visit_exp bt] [visit_id bt] @@ -52544,12 +44174,8 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `instr_2*`] [visit_id instr_2*] no dims [visit_id instr_2*] -[visit_exp [`BLOCK`_instr{blocktype#23, `instr*#366`}(bt, instr_1*{instr_1 <- `instr_1*`})]] -[visit_exp `BLOCK`_instr{blocktype#23, `instr*#366`}(bt, instr_1*{instr_1 <- `instr_1*`})] -[visit_exp blocktype#23] -[visit_id blocktype#23] -[visit_exp `instr*#366`] -[visit_id instr*#366] +[visit_exp [`BLOCK`_instr(bt, instr_1*{instr_1 <- `instr_1*`})]] +[visit_exp `BLOCK`_instr(bt, instr_1*{instr_1 <- `instr_1*`})] [visit_exp (bt, instr_1*{instr_1 <- `instr_1*`})] [visit_exp bt] [visit_id bt] not free @@ -52562,29 +44188,21 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `instr_1*`] [visit_id instr_1*] not free [visit_id instr_1*] no dims -[visit_exp (c!`%`_num_{i#31807}.0 =/= 0)] -[visit_exp c!`%`_num_{i#31807}.0] -[visit_exp c!`%`_num_{i#31807}] +[visit_exp (c!`%`_num_.0 =/= 0)] +[visit_exp c!`%`_num_.0] +[visit_exp c!`%`_num_] [visit_exp c] [visit_id c] not free -[visit_exp i#31807] -[visit_id i#31807] [visit_exp 0] -[check_dims] blocktype#25 blocktype#27 bt c i#31831 instr*#368 instr*#371 instr_1 instr_2 numtype#65 -[visit_exp [`CONST`_instr{numtype#65}(`I32`_numtype, c) `IF%%ELSE%`_instr{blocktype#25, `instr*#368`}(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})]] -[visit_exp `CONST`_instr{numtype#65}(`I32`_numtype, c)] -[visit_exp numtype#65] -[visit_id numtype#65] +[check_dims] bt c instr_1 instr_2 +[visit_exp [`CONST`_instr(`I32`_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})]] +[visit_exp `CONST`_instr(`I32`_numtype, c)] [visit_exp (`I32`_numtype, c)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp c] [visit_id c] -[visit_exp `IF%%ELSE%`_instr{blocktype#25, `instr*#368`}(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})] -[visit_exp blocktype#25] -[visit_id blocktype#25] -[visit_exp `instr*#368`] -[visit_id instr*#368] +[visit_exp `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})] [visit_exp (bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})] [visit_exp bt] [visit_id bt] @@ -52606,12 +44224,8 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `instr_2*`] [visit_id instr_2*] no dims [visit_id instr_2*] -[visit_exp [`BLOCK`_instr{blocktype#27, `instr*#371`}(bt, instr_2*{instr_2 <- `instr_2*`})]] -[visit_exp `BLOCK`_instr{blocktype#27, `instr*#371`}(bt, instr_2*{instr_2 <- `instr_2*`})] -[visit_exp blocktype#27] -[visit_id blocktype#27] -[visit_exp `instr*#371`] -[visit_id instr*#371] +[visit_exp [`BLOCK`_instr(bt, instr_2*{instr_2 <- `instr_2*`})]] +[visit_exp `BLOCK`_instr(bt, instr_2*{instr_2 <- `instr_2*`})] [visit_exp (bt, instr_2*{instr_2 <- `instr_2*`})] [visit_exp bt] [visit_id bt] not free @@ -52624,21 +44238,15 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `instr_2*`] [visit_id instr_2*] not free [visit_id instr_2*] no dims -[visit_exp (c!`%`_num_{i#31831}.0 = 0)] -[visit_exp c!`%`_num_{i#31831}.0] -[visit_exp c!`%`_num_{i#31831}] +[visit_exp (c!`%`_num_.0 = 0)] +[visit_exp c!`%`_num_.0] +[visit_exp c!`%`_num_] [visit_exp c] [visit_id c] not free -[visit_exp i#31831] -[visit_id i#31831] [visit_exp 0] -[check_dims] instr instr*#373 n n#1145 val -[visit_exp [`LABEL_%{%}%`_instr{n#1145, `instr*#373`}(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})]] -[visit_exp `LABEL_%{%}%`_instr{n#1145, `instr*#373`}(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})] -[visit_exp n#1145] -[visit_id n#1145] -[visit_exp `instr*#373`] -[visit_id instr*#373] +[check_dims] instr n val +[visit_exp [`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})]] +[visit_exp `LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})] [visit_exp (n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})] [visit_exp n] [visit_id n] @@ -52671,14 +44279,10 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `val*`] [visit_id val*] not free [visit_id val*] no dims -[check_dims] i#31853 instr instr' instr*#376 l labelidx#37 n n#1147 val val' -[visit_exp [`LABEL_%{%}%`_instr{n#1147, `instr*#376`}(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`BR`_instr{labelidx#37}(l)] ++ instr*{instr <- `instr*`})]] -[visit_exp `LABEL_%{%}%`_instr{n#1147, `instr*#376`}(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`BR`_instr{labelidx#37}(l)] ++ instr*{instr <- `instr*`})] -[visit_exp n#1147] -[visit_id n#1147] -[visit_exp `instr*#376`] -[visit_id instr*#376] -[visit_exp (n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`BR`_instr{labelidx#37}(l)] ++ instr*{instr <- `instr*`})] +[check_dims] instr instr' l n val val' +[visit_exp [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`BR`_instr(l)] ++ instr*{instr <- `instr*`})]] +[visit_exp `LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`BR`_instr(l)] ++ instr*{instr <- `instr*`})] +[visit_exp (n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`BR`_instr(l)] ++ instr*{instr <- `instr*`})] [visit_exp n] [visit_id n] [visit_exp instr'*{instr' <- `instr'*`}] @@ -52690,8 +44294,8 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `instr'*`] [visit_id instr'*] no dims [visit_id instr'*] -[visit_exp (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`BR`_instr{labelidx#37}(l)] ++ instr*{instr <- `instr*`}] -[visit_exp (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`BR`_instr{labelidx#37}(l)]] +[visit_exp (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`BR`_instr(l)] ++ instr*{instr <- `instr*`}] +[visit_exp (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`BR`_instr(l)]] [visit_exp (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`}] [visit_exp (val' : val <: instr)*{val' <- `val'*`}] [scope_enter val'] @@ -52715,10 +44319,8 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `val*`] [visit_id val*] no dims [visit_id val*] -[visit_exp [`BR`_instr{labelidx#37}(l)]] -[visit_exp `BR`_instr{labelidx#37}(l)] -[visit_exp labelidx#37] -[visit_id labelidx#37] +[visit_exp [`BR`_instr(l)]] +[visit_exp `BR`_instr(l)] [visit_exp (l)] [visit_exp l] [visit_id l] @@ -52753,22 +44355,16 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `instr'*`] [visit_id instr'*] not free [visit_id instr'*] no dims -[visit_exp (l!`%`_labelidx{i#31853}.0 = 0)] -[visit_exp l!`%`_labelidx{i#31853}.0] -[visit_exp l!`%`_labelidx{i#31853}] +[visit_exp (l!`%`_labelidx.0 = 0)] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] not free -[visit_exp i#31853] -[visit_id i#31853] [visit_exp 0] -[check_dims] i#31891 i#31901 i#31915 instr instr' instr*#379 l labelidx#39 labelidx#41 n n#1149 val -[visit_exp [`LABEL_%{%}%`_instr{n#1149, `instr*#379`}(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr{labelidx#39}(l)] ++ instr*{instr <- `instr*`})]] -[visit_exp `LABEL_%{%}%`_instr{n#1149, `instr*#379`}(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr{labelidx#39}(l)] ++ instr*{instr <- `instr*`})] -[visit_exp n#1149] -[visit_id n#1149] -[visit_exp `instr*#379`] -[visit_id instr*#379] -[visit_exp (n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr{labelidx#39}(l)] ++ instr*{instr <- `instr*`})] +[check_dims] instr instr' l n val +[visit_exp [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr(l)] ++ instr*{instr <- `instr*`})]] +[visit_exp `LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr(l)] ++ instr*{instr <- `instr*`})] +[visit_exp (n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr(l)] ++ instr*{instr <- `instr*`})] [visit_exp n] [visit_id n] [visit_exp instr'*{instr' <- `instr'*`}] @@ -52780,8 +44376,8 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `instr'*`] [visit_id instr'*] no dims [visit_id instr'*] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr{labelidx#39}(l)] ++ instr*{instr <- `instr*`}] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr{labelidx#39}(l)]] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr(l)] ++ instr*{instr <- `instr*`}] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr(l)]] [visit_exp (val : val <: instr)*{val <- `val*`}] [scope_enter val] [visit_exp (val : val <: instr)] @@ -52792,10 +44388,8 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `val*`] [visit_id val*] no dims [visit_id val*] -[visit_exp [`BR`_instr{labelidx#39}(l)]] -[visit_exp `BR`_instr{labelidx#39}(l)] -[visit_exp labelidx#39] -[visit_id labelidx#39] +[visit_exp [`BR`_instr(l)]] +[visit_exp `BR`_instr(l)] [visit_exp (l)] [visit_exp l] [visit_id l] @@ -52808,7 +44402,7 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `instr*`] [visit_id instr*] no dims [visit_id instr*] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr{labelidx#41}(`%`_labelidx{i#31901}((((l!`%`_labelidx{i#31891}.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr(`%`_labelidx((((l!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]] [visit_exp (val : val <: instr)*{val <- `val*`}] [scope_enter val] [visit_exp (val : val <: instr)] @@ -52819,44 +44413,30 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `val*`] [visit_id val*] not free [visit_id val*] no dims -[visit_exp [`BR`_instr{labelidx#41}(`%`_labelidx{i#31901}((((l!`%`_labelidx{i#31891}.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]] -[visit_exp `BR`_instr{labelidx#41}(`%`_labelidx{i#31901}((((l!`%`_labelidx{i#31891}.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp labelidx#41] -[visit_id labelidx#41] -[visit_exp (`%`_labelidx{i#31901}((((l!`%`_labelidx{i#31891}.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp `%`_labelidx{i#31901}((((l!`%`_labelidx{i#31891}.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp i#31901] -[visit_id i#31901] -[visit_exp ((((l!`%`_labelidx{i#31891}.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp (((l!`%`_labelidx{i#31891}.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp ((l!`%`_labelidx{i#31891}.0 : nat <:> int) - (1 : nat <:> int))] -[visit_exp (l!`%`_labelidx{i#31891}.0 : nat <:> int)] -[visit_exp l!`%`_labelidx{i#31891}.0] -[visit_exp l!`%`_labelidx{i#31891}] +[visit_exp [`BR`_instr(`%`_labelidx((((l!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]] +[visit_exp `BR`_instr(`%`_labelidx((((l!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp (`%`_labelidx((((l!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp `%`_labelidx((((l!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp ((((l!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp (((l!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp ((l!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int))] +[visit_exp (l!`%`_labelidx.0 : nat <:> int)] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] not free -[visit_exp i#31891] -[visit_id i#31891] [visit_exp (1 : nat <:> int)] [visit_exp 1] -[visit_exp (l!`%`_labelidx{i#31915}.0 > 0)] -[visit_exp l!`%`_labelidx{i#31915}.0] -[visit_exp l!`%`_labelidx{i#31915}] +[visit_exp (l!`%`_labelidx.0 > 0)] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] not free -[visit_exp i#31915] -[visit_id i#31915] [visit_exp 0] -[check_dims] catch catch*#1 instr instr*#382 l labelidx#43 labelidx#45 n n#1151 val -[visit_exp [`HANDLER_%{%}%`_instr{n#1151, `catch*#1`, `instr*#382`}(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr{labelidx#43}(l)] ++ instr*{instr <- `instr*`})]] -[visit_exp `HANDLER_%{%}%`_instr{n#1151, `catch*#1`, `instr*#382`}(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr{labelidx#43}(l)] ++ instr*{instr <- `instr*`})] -[visit_exp n#1151] -[visit_id n#1151] -[visit_exp `catch*#1`] -[visit_id catch*#1] -[visit_exp `instr*#382`] -[visit_id instr*#382] -[visit_exp (n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr{labelidx#43}(l)] ++ instr*{instr <- `instr*`})] +[check_dims] catch instr l n val +[visit_exp [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr(l)] ++ instr*{instr <- `instr*`})]] +[visit_exp `HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr(l)] ++ instr*{instr <- `instr*`})] +[visit_exp (n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr(l)] ++ instr*{instr <- `instr*`})] [visit_exp n] [visit_id n] [visit_exp catch*{catch <- `catch*`}] @@ -52868,8 +44448,8 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `catch*`] [visit_id catch*] no dims [visit_id catch*] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr{labelidx#43}(l)] ++ instr*{instr <- `instr*`}] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr{labelidx#43}(l)]] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr(l)] ++ instr*{instr <- `instr*`}] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr(l)]] [visit_exp (val : val <: instr)*{val <- `val*`}] [scope_enter val] [visit_exp (val : val <: instr)] @@ -52880,10 +44460,8 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `val*`] [visit_id val*] no dims [visit_id val*] -[visit_exp [`BR`_instr{labelidx#43}(l)]] -[visit_exp `BR`_instr{labelidx#43}(l)] -[visit_exp labelidx#43] -[visit_id labelidx#43] +[visit_exp [`BR`_instr(l)]] +[visit_exp `BR`_instr(l)] [visit_exp (l)] [visit_exp l] [visit_id l] @@ -52896,7 +44474,7 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `instr*`] [visit_id instr*] no dims [visit_id instr*] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr{labelidx#45}(l)]] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr(l)]] [visit_exp (val : val <: instr)*{val <- `val*`}] [scope_enter val] [visit_exp (val : val <: instr)] @@ -52907,84 +44485,62 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `val*`] [visit_id val*] not free [visit_id val*] no dims -[visit_exp [`BR`_instr{labelidx#45}(l)]] -[visit_exp `BR`_instr{labelidx#45}(l)] -[visit_exp labelidx#45] -[visit_id labelidx#45] +[visit_exp [`BR`_instr(l)]] +[visit_exp `BR`_instr(l)] [visit_exp (l)] [visit_exp l] [visit_id l] not free -[check_dims] c i#31987 l labelidx#47 labelidx#49 numtype#67 -[visit_exp [`CONST`_instr{numtype#67}(`I32`_numtype, c) `BR_IF`_instr{labelidx#47}(l)]] -[visit_exp `CONST`_instr{numtype#67}(`I32`_numtype, c)] -[visit_exp numtype#67] -[visit_id numtype#67] +[check_dims] c l +[visit_exp [`CONST`_instr(`I32`_numtype, c) `BR_IF`_instr(l)]] +[visit_exp `CONST`_instr(`I32`_numtype, c)] [visit_exp (`I32`_numtype, c)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp c] [visit_id c] -[visit_exp `BR_IF`_instr{labelidx#47}(l)] -[visit_exp labelidx#47] -[visit_id labelidx#47] +[visit_exp `BR_IF`_instr(l)] [visit_exp (l)] [visit_exp l] [visit_id l] -[visit_exp [`BR`_instr{labelidx#49}(l)]] -[visit_exp `BR`_instr{labelidx#49}(l)] -[visit_exp labelidx#49] -[visit_id labelidx#49] +[visit_exp [`BR`_instr(l)]] +[visit_exp `BR`_instr(l)] [visit_exp (l)] [visit_exp l] [visit_id l] not free -[visit_exp (c!`%`_num_{i#31987}.0 =/= 0)] -[visit_exp c!`%`_num_{i#31987}.0] -[visit_exp c!`%`_num_{i#31987}] +[visit_exp (c!`%`_num_.0 =/= 0)] +[visit_exp c!`%`_num_.0] +[visit_exp c!`%`_num_] [visit_exp c] [visit_id c] not free -[visit_exp i#31987] -[visit_id i#31987] [visit_exp 0] -[check_dims] c i#32023 l labelidx#51 numtype#69 -[visit_exp [`CONST`_instr{numtype#69}(`I32`_numtype, c) `BR_IF`_instr{labelidx#51}(l)]] -[visit_exp `CONST`_instr{numtype#69}(`I32`_numtype, c)] -[visit_exp numtype#69] -[visit_id numtype#69] +[check_dims] c l +[visit_exp [`CONST`_instr(`I32`_numtype, c) `BR_IF`_instr(l)]] +[visit_exp `CONST`_instr(`I32`_numtype, c)] [visit_exp (`I32`_numtype, c)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp c] [visit_id c] -[visit_exp `BR_IF`_instr{labelidx#51}(l)] -[visit_exp labelidx#51] -[visit_id labelidx#51] +[visit_exp `BR_IF`_instr(l)] [visit_exp (l)] [visit_exp l] [visit_id l] [visit_exp []] -[visit_exp (c!`%`_num_{i#32023}.0 = 0)] -[visit_exp c!`%`_num_{i#32023}.0] -[visit_exp c!`%`_num_{i#32023}] +[visit_exp (c!`%`_num_.0 = 0)] +[visit_exp c!`%`_num_.0] +[visit_exp c!`%`_num_] [visit_exp c] [visit_id c] not free -[visit_exp i#32023] -[visit_id i#32023] [visit_exp 0] -[check_dims] i i#32131 i#32145 l l' labelidx#53 labelidx#55 labelidx*#50 numtype#71 -[visit_exp [`CONST`_instr{numtype#71}(`I32`_numtype, i) `BR_TABLE`_instr{`labelidx*#50`, labelidx#53}(l*{l <- `l*`}, l')]] -[visit_exp `CONST`_instr{numtype#71}(`I32`_numtype, i)] -[visit_exp numtype#71] -[visit_id numtype#71] +[check_dims] i l l' +[visit_exp [`CONST`_instr(`I32`_numtype, i) `BR_TABLE`_instr(l*{l <- `l*`}, l')]] +[visit_exp `CONST`_instr(`I32`_numtype, i)] [visit_exp (`I32`_numtype, i)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp i] [visit_id i] -[visit_exp `BR_TABLE`_instr{`labelidx*#50`, labelidx#53}(l*{l <- `l*`}, l')] -[visit_exp `labelidx*#50`] -[visit_id labelidx*#50] -[visit_exp labelidx#53] -[visit_id labelidx#53] +[visit_exp `BR_TABLE`_instr(l*{l <- `l*`}, l')] [visit_exp (l*{l <- `l*`}, l')] [visit_exp l*{l <- `l*`}] [scope_enter l] @@ -52997,12 +44553,10 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id l*] [visit_exp l'] [visit_id l'] -[visit_exp [`BR`_instr{labelidx#55}(l*{l <- `l*`}[i!`%`_num_{i#32131}.0])]] -[visit_exp `BR`_instr{labelidx#55}(l*{l <- `l*`}[i!`%`_num_{i#32131}.0])] -[visit_exp labelidx#55] -[visit_id labelidx#55] -[visit_exp (l*{l <- `l*`}[i!`%`_num_{i#32131}.0])] -[visit_exp l*{l <- `l*`}[i!`%`_num_{i#32131}.0]] +[visit_exp [`BR`_instr(l*{l <- `l*`}[i!`%`_num_.0])]] +[visit_exp `BR`_instr(l*{l <- `l*`}[i!`%`_num_.0])] +[visit_exp (l*{l <- `l*`}[i!`%`_num_.0])] +[visit_exp l*{l <- `l*`}[i!`%`_num_.0]] [visit_exp l*{l <- `l*`}] [scope_enter l] [visit_exp l] @@ -53012,19 +44566,15 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `l*`] [visit_id l*] not free [visit_id l*] no dims -[visit_exp i!`%`_num_{i#32131}.0] -[visit_exp i!`%`_num_{i#32131}] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#32131] -[visit_id i#32131] -[visit_exp (i!`%`_num_{i#32145}.0 < |l*{l <- `l*`}|)] -[visit_exp i!`%`_num_{i#32145}.0] -[visit_exp i!`%`_num_{i#32145}] +[visit_exp (i!`%`_num_.0 < |l*{l <- `l*`}|)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#32145] -[visit_id i#32145] [visit_exp |l*{l <- `l*`}|] [visit_exp l*{l <- `l*`}] [scope_enter l] @@ -53035,21 +44585,15 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `l*`] [visit_id l*] not free [visit_id l*] no dims -[check_dims] i i#32257 l l' labelidx#57 labelidx#59 labelidx*#52 numtype#73 -[visit_exp [`CONST`_instr{numtype#73}(`I32`_numtype, i) `BR_TABLE`_instr{`labelidx*#52`, labelidx#57}(l*{l <- `l*`}, l')]] -[visit_exp `CONST`_instr{numtype#73}(`I32`_numtype, i)] -[visit_exp numtype#73] -[visit_id numtype#73] +[check_dims] i l l' +[visit_exp [`CONST`_instr(`I32`_numtype, i) `BR_TABLE`_instr(l*{l <- `l*`}, l')]] +[visit_exp `CONST`_instr(`I32`_numtype, i)] [visit_exp (`I32`_numtype, i)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp i] [visit_id i] -[visit_exp `BR_TABLE`_instr{`labelidx*#52`, labelidx#57}(l*{l <- `l*`}, l')] -[visit_exp `labelidx*#52`] -[visit_id labelidx*#52] -[visit_exp labelidx#57] -[visit_id labelidx#57] +[visit_exp `BR_TABLE`_instr(l*{l <- `l*`}, l')] [visit_exp (l*{l <- `l*`}, l')] [visit_exp l*{l <- `l*`}] [scope_enter l] @@ -53062,20 +44606,16 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id l*] [visit_exp l'] [visit_id l'] -[visit_exp [`BR`_instr{labelidx#59}(l')]] -[visit_exp `BR`_instr{labelidx#59}(l')] -[visit_exp labelidx#59] -[visit_id labelidx#59] +[visit_exp [`BR`_instr(l')]] +[visit_exp `BR`_instr(l')] [visit_exp (l')] [visit_exp l'] [visit_id l'] not free -[visit_exp (i!`%`_num_{i#32257}.0 >= |l*{l <- `l*`}|)] -[visit_exp i!`%`_num_{i#32257}.0] -[visit_exp i!`%`_num_{i#32257}] +[visit_exp (i!`%`_num_.0 >= |l*{l <- `l*`}|)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#32257] -[visit_id i#32257] [visit_exp |l*{l <- `l*`}|] [visit_exp l*{l <- `l*`}] [scope_enter l] @@ -53086,41 +44626,33 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `l*`] [visit_id l*] not free [visit_id l*] no dims -[check_dims] heaptype#1207 ht l labelidx#61 labelidx#63 val -[visit_exp [(val : val <: instr) `BR_ON_NULL`_instr{labelidx#61}(l)]] +[check_dims] ht l val +[visit_exp [(val : val <: instr) `BR_ON_NULL`_instr(l)]] [visit_exp (val : val <: instr)] [visit_exp val] [visit_id val] -[visit_exp `BR_ON_NULL`_instr{labelidx#61}(l)] -[visit_exp labelidx#61] -[visit_id labelidx#61] +[visit_exp `BR_ON_NULL`_instr(l)] [visit_exp (l)] [visit_exp l] [visit_id l] -[visit_exp [`BR`_instr{labelidx#63}(l)]] -[visit_exp `BR`_instr{labelidx#63}(l)] -[visit_exp labelidx#63] -[visit_id labelidx#63] +[visit_exp [`BR`_instr(l)]] +[visit_exp `BR`_instr(l)] [visit_exp (l)] [visit_exp l] [visit_id l] not free -[visit_exp (val = `REF.NULL`_val{heaptype#1207}(ht))] +[visit_exp (val = `REF.NULL`_val(ht))] [visit_exp val] [visit_id val] not free -[visit_exp `REF.NULL`_val{heaptype#1207}(ht)] -[visit_exp heaptype#1207] -[visit_id heaptype#1207] +[visit_exp `REF.NULL`_val(ht)] [visit_exp (ht)] [visit_exp ht] [visit_id ht] -[check_dims] l labelidx#65 val -[visit_exp [(val : val <: instr) `BR_ON_NULL`_instr{labelidx#65}(l)]] +[check_dims] l val +[visit_exp [(val : val <: instr) `BR_ON_NULL`_instr(l)]] [visit_exp (val : val <: instr)] [visit_exp val] [visit_id val] -[visit_exp `BR_ON_NULL`_instr{labelidx#65}(l)] -[visit_exp labelidx#65] -[visit_id labelidx#65] +[visit_exp `BR_ON_NULL`_instr(l)] [visit_exp (l)] [visit_exp l] [visit_id l] @@ -53128,74 +44660,54 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp (val : val <: instr)] [visit_exp val] [visit_id val] not free -[check_dims] heaptype#1209 ht l labelidx#67 val -[visit_exp [(val : val <: instr) `BR_ON_NON_NULL`_instr{labelidx#67}(l)]] +[check_dims] ht l val +[visit_exp [(val : val <: instr) `BR_ON_NON_NULL`_instr(l)]] [visit_exp (val : val <: instr)] [visit_exp val] [visit_id val] -[visit_exp `BR_ON_NON_NULL`_instr{labelidx#67}(l)] -[visit_exp labelidx#67] -[visit_id labelidx#67] +[visit_exp `BR_ON_NON_NULL`_instr(l)] [visit_exp (l)] [visit_exp l] [visit_id l] [visit_exp []] -[visit_exp (val = `REF.NULL`_val{heaptype#1209}(ht))] +[visit_exp (val = `REF.NULL`_val(ht))] [visit_exp val] [visit_id val] not free -[visit_exp `REF.NULL`_val{heaptype#1209}(ht)] -[visit_exp heaptype#1209] -[visit_id heaptype#1209] +[visit_exp `REF.NULL`_val(ht)] [visit_exp (ht)] [visit_exp ht] [visit_id ht] -[check_dims] l labelidx#69 labelidx#71 val -[visit_exp [(val : val <: instr) `BR_ON_NON_NULL`_instr{labelidx#69}(l)]] +[check_dims] l val +[visit_exp [(val : val <: instr) `BR_ON_NON_NULL`_instr(l)]] [visit_exp (val : val <: instr)] [visit_exp val] [visit_id val] -[visit_exp `BR_ON_NON_NULL`_instr{labelidx#69}(l)] -[visit_exp labelidx#69] -[visit_id labelidx#69] +[visit_exp `BR_ON_NON_NULL`_instr(l)] [visit_exp (l)] [visit_exp l] [visit_id l] -[visit_exp [(val : val <: instr) `BR`_instr{labelidx#71}(l)]] +[visit_exp [(val : val <: instr) `BR`_instr(l)]] [visit_exp (val : val <: instr)] [visit_exp val] [visit_id val] not free -[visit_exp `BR`_instr{labelidx#71}(l)] -[visit_exp labelidx#71] -[visit_id labelidx#71] +[visit_exp `BR`_instr(l)] [visit_exp (l)] [visit_exp l] [visit_id l] not free -[check_dims] datatype*#22 deftype*#86 deftype*#87 elemtype*#22 f frame#819 funcidx*#59 globaltype*#23 instr*#394 l labelidx#73 labelidx#75 localtype*#25 memtype*#37 moduleinst#19 ref reftype#3439 resulttype*#33 resulttype?#30 rt rt_1 rt_2 s state#335 store#815 subtype*#21 tabletype*#30 tagtype*#22 -[visit_exp `%;%`_config{state#335, `instr*#394`}(`%;%`_state{store#815, frame#819}(s, f), [(ref : ref <: instr) `BR_ON_CAST`_instr{labelidx#73, reftype#3439}(l, rt_1, rt_2)])] -[visit_exp state#335] -[visit_id state#335] -[visit_exp `instr*#394`] -[visit_id instr*#394] -[visit_exp (`%;%`_state{store#815, frame#819}(s, f), [(ref : ref <: instr) `BR_ON_CAST`_instr{labelidx#73, reftype#3439}(l, rt_1, rt_2)])] -[visit_exp `%;%`_state{store#815, frame#819}(s, f)] -[visit_exp store#815] -[visit_id store#815] -[visit_exp frame#819] -[visit_id frame#819] +[check_dims] f l ref rt rt_1 rt_2 s +[visit_exp `%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `BR_ON_CAST`_instr(l, rt_1, rt_2)])] +[visit_exp (`%;%`_state(s, f), [(ref : ref <: instr) `BR_ON_CAST`_instr(l, rt_1, rt_2)])] +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] [visit_exp f] [visit_id f] -[visit_exp [(ref : ref <: instr) `BR_ON_CAST`_instr{labelidx#73, reftype#3439}(l, rt_1, rt_2)]] +[visit_exp [(ref : ref <: instr) `BR_ON_CAST`_instr(l, rt_1, rt_2)]] [visit_exp (ref : ref <: instr)] [visit_exp ref] [visit_id ref] -[visit_exp `BR_ON_CAST`_instr{labelidx#73, reftype#3439}(l, rt_1, rt_2)] -[visit_exp labelidx#73] -[visit_id labelidx#73] -[visit_exp reftype#3439] -[visit_id reftype#3439] +[visit_exp `BR_ON_CAST`_instr(l, rt_1, rt_2)] [visit_exp (l, rt_1, rt_2)] [visit_exp l] [visit_id l] @@ -53203,13 +44715,11 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id rt_1] [visit_exp rt_2] [visit_id rt_2] -[visit_exp [(ref : ref <: instr) `BR`_instr{labelidx#75}(l)]] +[visit_exp [(ref : ref <: instr) `BR`_instr(l)]] [visit_exp (ref : ref <: instr)] [visit_exp ref] [visit_id ref] not free -[visit_exp `BR`_instr{labelidx#75}(l)] -[visit_exp labelidx#75] -[visit_id labelidx#75] +[visit_exp `BR`_instr(l)] [visit_exp (l)] [visit_exp l] [visit_id l] not free @@ -53220,83 +44730,43 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id ref] not free [visit_exp rt] [visit_id rt] -[visit_exp ({`TYPES`{`deftype*#86`} [], `RECS`{`subtype*#21`} [], `TAGS`{`tagtype*#22`} [], `GLOBALS`{`globaltype*#23`} [], `MEMS`{`memtype*#37`} [], `TABLES`{`tabletype*#30`} [], `FUNCS`{`deftype*#87`} [], `DATAS`{`datatype*#22`} [], `ELEMS`{`elemtype*#22`} [], `LOCALS`{`localtype*#25`} [], `LABELS`{`resulttype*#33`} [], `RETURN`{`resulttype?#30`} ?(), `REFS`{`funcidx*#59`} []}, rt, $inst_reftype(f.`MODULE`_frame{moduleinst#19}, rt_2))] -[visit_exp {`TYPES`{`deftype*#86`} [], `RECS`{`subtype*#21`} [], `TAGS`{`tagtype*#22`} [], `GLOBALS`{`globaltype*#23`} [], `MEMS`{`memtype*#37`} [], `TABLES`{`tabletype*#30`} [], `FUNCS`{`deftype*#87`} [], `DATAS`{`datatype*#22`} [], `ELEMS`{`elemtype*#22`} [], `LOCALS`{`localtype*#25`} [], `LABELS`{`resulttype*#33`} [], `RETURN`{`resulttype?#30`} ?(), `REFS`{`funcidx*#59`} []}] -[visit_exp `deftype*#86`] -[visit_id deftype*#86] +[visit_exp ({`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}, rt, $inst_reftype(f.`MODULE`_frame, rt_2))] +[visit_exp {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}] [visit_exp []] -[visit_exp `subtype*#21`] -[visit_id subtype*#21] [visit_exp []] -[visit_exp `tagtype*#22`] -[visit_id tagtype*#22] [visit_exp []] -[visit_exp `globaltype*#23`] -[visit_id globaltype*#23] [visit_exp []] -[visit_exp `memtype*#37`] -[visit_id memtype*#37] [visit_exp []] -[visit_exp `tabletype*#30`] -[visit_id tabletype*#30] [visit_exp []] -[visit_exp `deftype*#87`] -[visit_id deftype*#87] [visit_exp []] -[visit_exp `datatype*#22`] -[visit_id datatype*#22] [visit_exp []] -[visit_exp `elemtype*#22`] -[visit_id elemtype*#22] [visit_exp []] -[visit_exp `localtype*#25`] -[visit_id localtype*#25] [visit_exp []] -[visit_exp `resulttype*#33`] -[visit_id resulttype*#33] [visit_exp []] -[visit_exp `resulttype?#30`] -[visit_id resulttype?#30] [visit_exp ?()] -[visit_exp `funcidx*#59`] -[visit_id funcidx*#59] [visit_exp []] [visit_exp rt] [visit_id rt] not free -[visit_exp $inst_reftype(f.`MODULE`_frame{moduleinst#19}, rt_2)] -[visit_exp f.`MODULE`_frame{moduleinst#19}] +[visit_exp $inst_reftype(f.`MODULE`_frame, rt_2)] +[visit_exp f.`MODULE`_frame] [visit_exp f] [visit_id f] not free -[visit_exp moduleinst#19] -[visit_id moduleinst#19] [visit_exp rt_2] [visit_id rt_2] not free -[check_dims] f frame#831 instr*#406 l labelidx#77 ref reftype#3442 rt_1 rt_2 s state#347 store#827 -[visit_exp `%;%`_config{state#347, `instr*#406`}(`%;%`_state{store#827, frame#831}(s, f), [(ref : ref <: instr) `BR_ON_CAST`_instr{labelidx#77, reftype#3442}(l, rt_1, rt_2)])] -[visit_exp state#347] -[visit_id state#347] -[visit_exp `instr*#406`] -[visit_id instr*#406] -[visit_exp (`%;%`_state{store#827, frame#831}(s, f), [(ref : ref <: instr) `BR_ON_CAST`_instr{labelidx#77, reftype#3442}(l, rt_1, rt_2)])] -[visit_exp `%;%`_state{store#827, frame#831}(s, f)] -[visit_exp store#827] -[visit_id store#827] -[visit_exp frame#831] -[visit_id frame#831] +[check_dims] f l ref rt_1 rt_2 s +[visit_exp `%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `BR_ON_CAST`_instr(l, rt_1, rt_2)])] +[visit_exp (`%;%`_state(s, f), [(ref : ref <: instr) `BR_ON_CAST`_instr(l, rt_1, rt_2)])] +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] [visit_exp f] [visit_id f] -[visit_exp [(ref : ref <: instr) `BR_ON_CAST`_instr{labelidx#77, reftype#3442}(l, rt_1, rt_2)]] +[visit_exp [(ref : ref <: instr) `BR_ON_CAST`_instr(l, rt_1, rt_2)]] [visit_exp (ref : ref <: instr)] [visit_exp ref] [visit_id ref] -[visit_exp `BR_ON_CAST`_instr{labelidx#77, reftype#3442}(l, rt_1, rt_2)] -[visit_exp labelidx#77] -[visit_id labelidx#77] -[visit_exp reftype#3442] -[visit_id reftype#3442] +[visit_exp `BR_ON_CAST`_instr(l, rt_1, rt_2)] [visit_exp (l, rt_1, rt_2)] [visit_exp l] [visit_id l] @@ -53308,32 +44778,20 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp (ref : ref <: instr)] [visit_exp ref] [visit_id ref] not free -[check_dims] datatype*#23 deftype*#88 deftype*#89 elemtype*#23 f frame#843 funcidx*#60 globaltype*#24 instr*#418 l labelidx#79 localtype*#26 memtype*#38 moduleinst#20 ref reftype#3445 resulttype*#34 resulttype?#31 rt rt_1 rt_2 s state#359 store#839 subtype*#22 tabletype*#31 tagtype*#23 -[visit_exp `%;%`_config{state#359, `instr*#418`}(`%;%`_state{store#839, frame#843}(s, f), [(ref : ref <: instr) `BR_ON_CAST_FAIL`_instr{labelidx#79, reftype#3445}(l, rt_1, rt_2)])] -[visit_exp state#359] -[visit_id state#359] -[visit_exp `instr*#418`] -[visit_id instr*#418] -[visit_exp (`%;%`_state{store#839, frame#843}(s, f), [(ref : ref <: instr) `BR_ON_CAST_FAIL`_instr{labelidx#79, reftype#3445}(l, rt_1, rt_2)])] -[visit_exp `%;%`_state{store#839, frame#843}(s, f)] -[visit_exp store#839] -[visit_id store#839] -[visit_exp frame#843] -[visit_id frame#843] +[check_dims] f l ref rt rt_1 rt_2 s +[visit_exp `%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `BR_ON_CAST_FAIL`_instr(l, rt_1, rt_2)])] +[visit_exp (`%;%`_state(s, f), [(ref : ref <: instr) `BR_ON_CAST_FAIL`_instr(l, rt_1, rt_2)])] +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] [visit_exp f] [visit_id f] -[visit_exp [(ref : ref <: instr) `BR_ON_CAST_FAIL`_instr{labelidx#79, reftype#3445}(l, rt_1, rt_2)]] +[visit_exp [(ref : ref <: instr) `BR_ON_CAST_FAIL`_instr(l, rt_1, rt_2)]] [visit_exp (ref : ref <: instr)] [visit_exp ref] [visit_id ref] -[visit_exp `BR_ON_CAST_FAIL`_instr{labelidx#79, reftype#3445}(l, rt_1, rt_2)] -[visit_exp labelidx#79] -[visit_id labelidx#79] -[visit_exp reftype#3445] -[visit_id reftype#3445] +[visit_exp `BR_ON_CAST_FAIL`_instr(l, rt_1, rt_2)] [visit_exp (l, rt_1, rt_2)] [visit_exp l] [visit_id l] @@ -53352,83 +44810,43 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id ref] not free [visit_exp rt] [visit_id rt] -[visit_exp ({`TYPES`{`deftype*#88`} [], `RECS`{`subtype*#22`} [], `TAGS`{`tagtype*#23`} [], `GLOBALS`{`globaltype*#24`} [], `MEMS`{`memtype*#38`} [], `TABLES`{`tabletype*#31`} [], `FUNCS`{`deftype*#89`} [], `DATAS`{`datatype*#23`} [], `ELEMS`{`elemtype*#23`} [], `LOCALS`{`localtype*#26`} [], `LABELS`{`resulttype*#34`} [], `RETURN`{`resulttype?#31`} ?(), `REFS`{`funcidx*#60`} []}, rt, $inst_reftype(f.`MODULE`_frame{moduleinst#20}, rt_2))] -[visit_exp {`TYPES`{`deftype*#88`} [], `RECS`{`subtype*#22`} [], `TAGS`{`tagtype*#23`} [], `GLOBALS`{`globaltype*#24`} [], `MEMS`{`memtype*#38`} [], `TABLES`{`tabletype*#31`} [], `FUNCS`{`deftype*#89`} [], `DATAS`{`datatype*#23`} [], `ELEMS`{`elemtype*#23`} [], `LOCALS`{`localtype*#26`} [], `LABELS`{`resulttype*#34`} [], `RETURN`{`resulttype?#31`} ?(), `REFS`{`funcidx*#60`} []}] -[visit_exp `deftype*#88`] -[visit_id deftype*#88] +[visit_exp ({`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}, rt, $inst_reftype(f.`MODULE`_frame, rt_2))] +[visit_exp {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}] [visit_exp []] -[visit_exp `subtype*#22`] -[visit_id subtype*#22] [visit_exp []] -[visit_exp `tagtype*#23`] -[visit_id tagtype*#23] [visit_exp []] -[visit_exp `globaltype*#24`] -[visit_id globaltype*#24] [visit_exp []] -[visit_exp `memtype*#38`] -[visit_id memtype*#38] [visit_exp []] -[visit_exp `tabletype*#31`] -[visit_id tabletype*#31] [visit_exp []] -[visit_exp `deftype*#89`] -[visit_id deftype*#89] [visit_exp []] -[visit_exp `datatype*#23`] -[visit_id datatype*#23] [visit_exp []] -[visit_exp `elemtype*#23`] -[visit_id elemtype*#23] [visit_exp []] -[visit_exp `localtype*#26`] -[visit_id localtype*#26] [visit_exp []] -[visit_exp `resulttype*#34`] -[visit_id resulttype*#34] [visit_exp []] -[visit_exp `resulttype?#31`] -[visit_id resulttype?#31] [visit_exp ?()] -[visit_exp `funcidx*#60`] -[visit_id funcidx*#60] [visit_exp []] [visit_exp rt] [visit_id rt] not free -[visit_exp $inst_reftype(f.`MODULE`_frame{moduleinst#20}, rt_2)] -[visit_exp f.`MODULE`_frame{moduleinst#20}] +[visit_exp $inst_reftype(f.`MODULE`_frame, rt_2)] +[visit_exp f.`MODULE`_frame] [visit_exp f] [visit_id f] not free -[visit_exp moduleinst#20] -[visit_id moduleinst#20] [visit_exp rt_2] [visit_id rt_2] not free -[check_dims] f frame#855 instr*#430 l labelidx#81 labelidx#83 ref reftype#3448 rt_1 rt_2 s state#371 store#851 -[visit_exp `%;%`_config{state#371, `instr*#430`}(`%;%`_state{store#851, frame#855}(s, f), [(ref : ref <: instr) `BR_ON_CAST_FAIL`_instr{labelidx#81, reftype#3448}(l, rt_1, rt_2)])] -[visit_exp state#371] -[visit_id state#371] -[visit_exp `instr*#430`] -[visit_id instr*#430] -[visit_exp (`%;%`_state{store#851, frame#855}(s, f), [(ref : ref <: instr) `BR_ON_CAST_FAIL`_instr{labelidx#81, reftype#3448}(l, rt_1, rt_2)])] -[visit_exp `%;%`_state{store#851, frame#855}(s, f)] -[visit_exp store#851] -[visit_id store#851] -[visit_exp frame#855] -[visit_id frame#855] +[check_dims] f l ref rt_1 rt_2 s +[visit_exp `%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `BR_ON_CAST_FAIL`_instr(l, rt_1, rt_2)])] +[visit_exp (`%;%`_state(s, f), [(ref : ref <: instr) `BR_ON_CAST_FAIL`_instr(l, rt_1, rt_2)])] +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] [visit_exp f] [visit_id f] -[visit_exp [(ref : ref <: instr) `BR_ON_CAST_FAIL`_instr{labelidx#81, reftype#3448}(l, rt_1, rt_2)]] +[visit_exp [(ref : ref <: instr) `BR_ON_CAST_FAIL`_instr(l, rt_1, rt_2)]] [visit_exp (ref : ref <: instr)] [visit_exp ref] [visit_id ref] -[visit_exp `BR_ON_CAST_FAIL`_instr{labelidx#81, reftype#3448}(l, rt_1, rt_2)] -[visit_exp labelidx#81] -[visit_id labelidx#81] -[visit_exp reftype#3448] -[visit_id reftype#3448] +[visit_exp `BR_ON_CAST_FAIL`_instr(l, rt_1, rt_2)] [visit_exp (l, rt_1, rt_2)] [visit_exp l] [visit_id l] @@ -53436,104 +44854,74 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id rt_1] [visit_exp rt_2] [visit_id rt_2] -[visit_exp [(ref : ref <: instr) `BR`_instr{labelidx#83}(l)]] +[visit_exp [(ref : ref <: instr) `BR`_instr(l)]] [visit_exp (ref : ref <: instr)] [visit_exp ref] [visit_id ref] not free -[visit_exp `BR`_instr{labelidx#83}(l)] -[visit_exp labelidx#83] -[visit_id labelidx#83] +[visit_exp `BR`_instr(l)] [visit_exp (l)] [visit_exp l] [visit_id l] not free -[check_dims] a deftype#5 funcaddr#7 funcaddr*#2 funcidx#2837 i#32425 instr*#442 state#383 typeuse#35 x z -[visit_exp `%;%`_config{state#383, `instr*#442`}(z, [`CALL`_instr{funcidx#2837}(x)])] -[visit_exp state#383] -[visit_id state#383] -[visit_exp `instr*#442`] -[visit_id instr*#442] -[visit_exp (z, [`CALL`_instr{funcidx#2837}(x)])] +[check_dims] a x z +[visit_exp `%;%`_config(z, [`CALL`_instr(x)])] +[visit_exp (z, [`CALL`_instr(x)])] [visit_exp z] [visit_id z] -[visit_exp [`CALL`_instr{funcidx#2837}(x)]] -[visit_exp `CALL`_instr{funcidx#2837}(x)] -[visit_exp funcidx#2837] -[visit_id funcidx#2837] +[visit_exp [`CALL`_instr(x)]] +[visit_exp `CALL`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp [`REF.FUNC_ADDR`_instr{funcaddr#7}(a) `CALL_REF`_instr{typeuse#35}(($funcinst(z)[a].`TYPE`_funcinst{deftype#5} : deftype <: typeuse))]] -[visit_exp `REF.FUNC_ADDR`_instr{funcaddr#7}(a)] -[visit_exp funcaddr#7] -[visit_id funcaddr#7] +[visit_exp [`REF.FUNC_ADDR`_instr(a) `CALL_REF`_instr(($funcinst(z)[a].`TYPE`_funcinst : deftype <: typeuse))]] +[visit_exp `REF.FUNC_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] -[visit_exp `CALL_REF`_instr{typeuse#35}(($funcinst(z)[a].`TYPE`_funcinst{deftype#5} : deftype <: typeuse))] -[visit_exp typeuse#35] -[visit_id typeuse#35] -[visit_exp (($funcinst(z)[a].`TYPE`_funcinst{deftype#5} : deftype <: typeuse))] -[visit_exp ($funcinst(z)[a].`TYPE`_funcinst{deftype#5} : deftype <: typeuse)] -[visit_exp $funcinst(z)[a].`TYPE`_funcinst{deftype#5}] +[visit_exp `CALL_REF`_instr(($funcinst(z)[a].`TYPE`_funcinst : deftype <: typeuse))] +[visit_exp (($funcinst(z)[a].`TYPE`_funcinst : deftype <: typeuse))] +[visit_exp ($funcinst(z)[a].`TYPE`_funcinst : deftype <: typeuse)] +[visit_exp $funcinst(z)[a].`TYPE`_funcinst] [visit_exp $funcinst(z)[a]] [visit_exp $funcinst(z)] [visit_exp z] [visit_id z] not free [visit_exp a] [visit_id a] not free -[visit_exp deftype#5] -[visit_id deftype#5] -[visit_exp ($moduleinst(z).`FUNCS`_moduleinst{`funcaddr*#2`}[x!`%`_idx{i#32425}.0] = a)] -[visit_exp $moduleinst(z).`FUNCS`_moduleinst{`funcaddr*#2`}[x!`%`_idx{i#32425}.0]] -[visit_exp $moduleinst(z).`FUNCS`_moduleinst{`funcaddr*#2`}] +[visit_exp ($moduleinst(z).`FUNCS`_moduleinst[x!`%`_idx.0] = a)] +[visit_exp $moduleinst(z).`FUNCS`_moduleinst[x!`%`_idx.0]] +[visit_exp $moduleinst(z).`FUNCS`_moduleinst] [visit_exp $moduleinst(z)] [visit_exp z] [visit_id z] not free -[visit_exp `funcaddr*#2`] -[visit_id funcaddr*#2] -[visit_exp x!`%`_idx{i#32425}.0] -[visit_exp x!`%`_idx{i#32425}] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] [visit_exp x] [visit_id x] not free -[visit_exp i#32425] -[visit_id i#32425] [visit_exp a] [visit_id a] not free -[check_dims] heaptype#1307 ht instr*#454 state#395 typeuse#37 yy z -[visit_exp `%;%`_config{state#395, `instr*#454`}(z, [`REF.NULL`_instr{heaptype#1307}(ht) `CALL_REF`_instr{typeuse#37}(yy)])] -[visit_exp state#395] -[visit_id state#395] -[visit_exp `instr*#454`] -[visit_id instr*#454] -[visit_exp (z, [`REF.NULL`_instr{heaptype#1307}(ht) `CALL_REF`_instr{typeuse#37}(yy)])] +[check_dims] ht yy z +[visit_exp `%;%`_config(z, [`REF.NULL`_instr(ht) `CALL_REF`_instr(yy)])] +[visit_exp (z, [`REF.NULL`_instr(ht) `CALL_REF`_instr(yy)])] [visit_exp z] [visit_id z] -[visit_exp [`REF.NULL`_instr{heaptype#1307}(ht) `CALL_REF`_instr{typeuse#37}(yy)]] -[visit_exp `REF.NULL`_instr{heaptype#1307}(ht)] -[visit_exp heaptype#1307] -[visit_id heaptype#1307] +[visit_exp [`REF.NULL`_instr(ht) `CALL_REF`_instr(yy)]] +[visit_exp `REF.NULL`_instr(ht)] [visit_exp (ht)] [visit_exp ht] [visit_id ht] -[visit_exp `CALL_REF`_instr{typeuse#37}(yy)] -[visit_exp typeuse#37] -[visit_id typeuse#37] +[visit_exp `CALL_REF`_instr(yy)] [visit_exp (yy)] [visit_exp yy] [visit_id yy] [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[check_dims] X*#12499 X*#12512 a deftype#6 expr#4155 f fi frame#887 funcaddr#9 funccode#1 instr instr*#466 instr*#468 instr*#470 local*#1221 m moduleinst#21 moduleinst#22 n n#1153 n#1155 resulttype#2997 state#407 t t_1 t_2 typeidx#1553 typeuse#39 val val?*#4 valtype#755 x yy z -[visit_exp `%;%`_config{state#407, `instr*#466`}(z, (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr{funcaddr#9}(a) `CALL_REF`_instr{typeuse#39}(yy)])] -[visit_exp state#407] -[visit_id state#407] -[visit_exp `instr*#466`] -[visit_id instr*#466] -[visit_exp (z, (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr{funcaddr#9}(a) `CALL_REF`_instr{typeuse#39}(yy)])] +[check_dims] a f fi instr m n t t_1 t_2 val x yy z +[visit_exp `%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) `CALL_REF`_instr(yy)])] +[visit_exp (z, (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) `CALL_REF`_instr(yy)])] [visit_exp z] [visit_id z] -[visit_exp (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr{funcaddr#9}(a) `CALL_REF`_instr{typeuse#39}(yy)]] +[visit_exp (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) `CALL_REF`_instr(yy)]] [visit_exp (val : val <: instr)^n{val <- `val*`}] [scope_enter val] [visit_exp (val : val <: instr)] @@ -53546,38 +44934,24 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `val*`] [visit_id val*] no dims [visit_id val*] -[visit_exp [`REF.FUNC_ADDR`_instr{funcaddr#9}(a) `CALL_REF`_instr{typeuse#39}(yy)]] -[visit_exp `REF.FUNC_ADDR`_instr{funcaddr#9}(a)] -[visit_exp funcaddr#9] -[visit_id funcaddr#9] +[visit_exp [`REF.FUNC_ADDR`_instr(a) `CALL_REF`_instr(yy)]] +[visit_exp `REF.FUNC_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] -[visit_exp `CALL_REF`_instr{typeuse#39}(yy)] -[visit_exp typeuse#39] -[visit_id typeuse#39] +[visit_exp `CALL_REF`_instr(yy)] [visit_exp (yy)] [visit_exp yy] [visit_id yy] -[visit_exp [`FRAME_%{%}%`_instr{n#1153, frame#887, `instr*#468`}(m, f, [`LABEL_%{%}%`_instr{n#1155, `instr*#470`}(m, [], instr*{instr <- `instr*`})])]] -[visit_exp `FRAME_%{%}%`_instr{n#1153, frame#887, `instr*#468`}(m, f, [`LABEL_%{%}%`_instr{n#1155, `instr*#470`}(m, [], instr*{instr <- `instr*`})])] -[visit_exp n#1153] -[visit_id n#1153] -[visit_exp frame#887] -[visit_id frame#887] -[visit_exp `instr*#468`] -[visit_id instr*#468] -[visit_exp (m, f, [`LABEL_%{%}%`_instr{n#1155, `instr*#470`}(m, [], instr*{instr <- `instr*`})])] +[visit_exp [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])]] +[visit_exp `FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])] +[visit_exp (m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])] [visit_exp m] [visit_id m] [visit_exp f] [visit_id f] -[visit_exp [`LABEL_%{%}%`_instr{n#1155, `instr*#470`}(m, [], instr*{instr <- `instr*`})]] -[visit_exp `LABEL_%{%}%`_instr{n#1155, `instr*#470`}(m, [], instr*{instr <- `instr*`})] -[visit_exp n#1155] -[visit_id n#1155] -[visit_exp `instr*#470`] -[visit_id instr*#470] +[visit_exp [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})]] +[visit_exp `LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})] [visit_exp (m, [], instr*{instr <- `instr*`})] [visit_exp m] [visit_id m] not free @@ -53600,19 +44974,13 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id a] not free [visit_exp fi] [visit_id fi] -[visit_exp (fi.`TYPE`_funcinst{deftype#6}, `FUNC%->%`_comptype{resulttype#2997}(`%`_resulttype{`X*#12499`}(t_1^n{t_1 <- `t_1*`}), `%`_resulttype{`X*#12512`}(t_2^m{t_2 <- `t_2*`})))] -[visit_exp fi.`TYPE`_funcinst{deftype#6}] +[visit_exp (fi.`TYPE`_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`})))] +[visit_exp fi.`TYPE`_funcinst] [visit_exp fi] [visit_id fi] not free -[visit_exp deftype#6] -[visit_id deftype#6] -[visit_exp `FUNC%->%`_comptype{resulttype#2997}(`%`_resulttype{`X*#12499`}(t_1^n{t_1 <- `t_1*`}), `%`_resulttype{`X*#12512`}(t_2^m{t_2 <- `t_2*`}))] -[visit_exp resulttype#2997] -[visit_id resulttype#2997] -[visit_exp (`%`_resulttype{`X*#12499`}(t_1^n{t_1 <- `t_1*`}), `%`_resulttype{`X*#12512`}(t_2^m{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#12499`}(t_1^n{t_1 <- `t_1*`})] -[visit_exp `X*#12499`] -[visit_id X*#12499] +[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1^n{t_1 <- `t_1*`})] [visit_exp (t_1^n{t_1 <- `t_1*`})] [visit_exp t_1^n{t_1 <- `t_1*`}] [scope_enter t_1] @@ -53625,9 +44993,7 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `t_1*`] [visit_id t_1*] no dims [visit_id t_1*] -[visit_exp `%`_resulttype{`X*#12512`}(t_2^m{t_2 <- `t_2*`})] -[visit_exp `X*#12512`] -[visit_id X*#12512] +[visit_exp `%`_resulttype(t_2^m{t_2 <- `t_2*`})] [visit_exp (t_2^m{t_2 <- `t_2*`})] [visit_exp t_2^m{t_2 <- `t_2*`}] [scope_enter t_2] @@ -53640,41 +45006,25 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `t_2*`] [visit_id t_2*] no dims [visit_id t_2*] -[visit_exp (fi.`CODE`_funcinst{funccode#1} = `FUNC`_funccode{typeidx#1553, `local*#1221`, expr#4155}(x, `LOCAL`_local{valtype#755}(t)*{t <- `t*`, valtype#755 <- `valtype#755*`}, instr*{instr <- `instr*`}))] -[visit_exp fi.`CODE`_funcinst{funccode#1}] +[visit_exp (fi.`CODE`_funcinst = `FUNC`_funccode(x, `LOCAL`_local(t)*{t <- `t*`}, instr*{instr <- `instr*`}))] +[visit_exp fi.`CODE`_funcinst] [visit_exp fi] [visit_id fi] not free -[visit_exp funccode#1] -[visit_id funccode#1] -[visit_exp `FUNC`_funccode{typeidx#1553, `local*#1221`, expr#4155}(x, `LOCAL`_local{valtype#755}(t)*{t <- `t*`, valtype#755 <- `valtype#755*`}, instr*{instr <- `instr*`})] -[visit_exp typeidx#1553] -[visit_id typeidx#1553] -[visit_exp `local*#1221`] -[visit_id local*#1221] -[visit_exp expr#4155] -[visit_id expr#4155] -[visit_exp (x, `LOCAL`_local{valtype#755}(t)*{t <- `t*`, valtype#755 <- `valtype#755*`}, instr*{instr <- `instr*`})] +[visit_exp `FUNC`_funccode(x, `LOCAL`_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})] +[visit_exp (x, `LOCAL`_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})] [visit_exp x] [visit_id x] -[visit_exp `LOCAL`_local{valtype#755}(t)*{t <- `t*`, valtype#755 <- `valtype#755*`}] +[visit_exp `LOCAL`_local(t)*{t <- `t*`}] [scope_enter t] -[scope_enter valtype#755] -[visit_exp `LOCAL`_local{valtype#755}(t)] -[visit_exp valtype#755] -[visit_id valtype#755] not free +[visit_exp `LOCAL`_local(t)] [visit_exp (t)] [visit_exp t] [visit_id t] not free [visit_id t] not free -[visit_id valtype#755] not free -[scope_exit valtype#755] [scope_exit t] [visit_exp `t*`] [visit_id t*] no dims [visit_id t*] -[visit_exp `valtype#755*`] -[visit_id valtype#755*] no dims -[visit_id valtype#755*] [visit_exp instr*{instr <- `instr*`}] [scope_enter instr] [visit_exp instr] @@ -53684,12 +45034,10 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `instr*`] [visit_id instr*] not free [visit_id instr*] no dims -[visit_exp (f = {`LOCALS`{`val?*#4`} ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, `MODULE`{moduleinst#22} fi.`MODULE`_funcinst{moduleinst#21}})] +[visit_exp (f = {`LOCALS` ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, `MODULE` fi.`MODULE`_funcinst})] [visit_exp f] [visit_id f] not free -[visit_exp {`LOCALS`{`val?*#4`} ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, `MODULE`{moduleinst#22} fi.`MODULE`_funcinst{moduleinst#21}}] -[visit_exp `val?*#4`] -[visit_id val?*#4] +[visit_exp {`LOCALS` ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, `MODULE` fi.`MODULE`_funcinst}] [visit_exp ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}] [visit_exp ?(val)^n{val <- `val*`}] [scope_enter val] @@ -53713,82 +45061,54 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `t*`] [visit_id t*] not free [visit_id t*] no dims -[visit_exp moduleinst#22] -[visit_id moduleinst#22] -[visit_exp fi.`MODULE`_funcinst{moduleinst#21}] +[visit_exp fi.`MODULE`_funcinst] [visit_exp fi] [visit_id fi] not free -[visit_exp moduleinst#21] -[visit_id moduleinst#21] -[check_dims] a deftype#7 funcaddr#11 funcaddr*#3 funcidx#2839 i#32463 instr*#483 state#419 typeuse#41 x z -[visit_exp `%;%`_config{state#419, `instr*#483`}(z, [`RETURN_CALL`_instr{funcidx#2839}(x)])] -[visit_exp state#419] -[visit_id state#419] -[visit_exp `instr*#483`] -[visit_id instr*#483] -[visit_exp (z, [`RETURN_CALL`_instr{funcidx#2839}(x)])] +[check_dims] a x z +[visit_exp `%;%`_config(z, [`RETURN_CALL`_instr(x)])] +[visit_exp (z, [`RETURN_CALL`_instr(x)])] [visit_exp z] [visit_id z] -[visit_exp [`RETURN_CALL`_instr{funcidx#2839}(x)]] -[visit_exp `RETURN_CALL`_instr{funcidx#2839}(x)] -[visit_exp funcidx#2839] -[visit_id funcidx#2839] +[visit_exp [`RETURN_CALL`_instr(x)]] +[visit_exp `RETURN_CALL`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp [`REF.FUNC_ADDR`_instr{funcaddr#11}(a) `RETURN_CALL_REF`_instr{typeuse#41}(($funcinst(z)[a].`TYPE`_funcinst{deftype#7} : deftype <: typeuse))]] -[visit_exp `REF.FUNC_ADDR`_instr{funcaddr#11}(a)] -[visit_exp funcaddr#11] -[visit_id funcaddr#11] +[visit_exp [`REF.FUNC_ADDR`_instr(a) `RETURN_CALL_REF`_instr(($funcinst(z)[a].`TYPE`_funcinst : deftype <: typeuse))]] +[visit_exp `REF.FUNC_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] -[visit_exp `RETURN_CALL_REF`_instr{typeuse#41}(($funcinst(z)[a].`TYPE`_funcinst{deftype#7} : deftype <: typeuse))] -[visit_exp typeuse#41] -[visit_id typeuse#41] -[visit_exp (($funcinst(z)[a].`TYPE`_funcinst{deftype#7} : deftype <: typeuse))] -[visit_exp ($funcinst(z)[a].`TYPE`_funcinst{deftype#7} : deftype <: typeuse)] -[visit_exp $funcinst(z)[a].`TYPE`_funcinst{deftype#7}] +[visit_exp `RETURN_CALL_REF`_instr(($funcinst(z)[a].`TYPE`_funcinst : deftype <: typeuse))] +[visit_exp (($funcinst(z)[a].`TYPE`_funcinst : deftype <: typeuse))] +[visit_exp ($funcinst(z)[a].`TYPE`_funcinst : deftype <: typeuse)] +[visit_exp $funcinst(z)[a].`TYPE`_funcinst] [visit_exp $funcinst(z)[a]] [visit_exp $funcinst(z)] [visit_exp z] [visit_id z] not free [visit_exp a] [visit_id a] not free -[visit_exp deftype#7] -[visit_id deftype#7] -[visit_exp ($moduleinst(z).`FUNCS`_moduleinst{`funcaddr*#3`}[x!`%`_idx{i#32463}.0] = a)] -[visit_exp $moduleinst(z).`FUNCS`_moduleinst{`funcaddr*#3`}[x!`%`_idx{i#32463}.0]] -[visit_exp $moduleinst(z).`FUNCS`_moduleinst{`funcaddr*#3`}] +[visit_exp ($moduleinst(z).`FUNCS`_moduleinst[x!`%`_idx.0] = a)] +[visit_exp $moduleinst(z).`FUNCS`_moduleinst[x!`%`_idx.0]] +[visit_exp $moduleinst(z).`FUNCS`_moduleinst] [visit_exp $moduleinst(z)] [visit_exp z] [visit_id z] not free -[visit_exp `funcaddr*#3`] -[visit_id funcaddr*#3] -[visit_exp x!`%`_idx{i#32463}.0] -[visit_exp x!`%`_idx{i#32463}] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] [visit_exp x] [visit_id x] not free -[visit_exp i#32463] -[visit_id i#32463] [visit_exp a] [visit_id a] not free -[check_dims] instr instr' instr*#495 instr*#497 k n#1163 state#431 typeuse#43 typeuse#45 val yy z -[visit_exp `%;%`_config{state#431, `instr*#495`}(z, [`LABEL_%{%}%`_instr{n#1163, `instr*#497`}(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr{typeuse#43}(yy)] ++ instr*{instr <- `instr*`})])] -[visit_exp state#431] -[visit_id state#431] -[visit_exp `instr*#495`] -[visit_id instr*#495] -[visit_exp (z, [`LABEL_%{%}%`_instr{n#1163, `instr*#497`}(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr{typeuse#43}(yy)] ++ instr*{instr <- `instr*`})])] +[check_dims] instr instr' k val yy z +[visit_exp `%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr(yy)] ++ instr*{instr <- `instr*`})])] +[visit_exp (z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr(yy)] ++ instr*{instr <- `instr*`})])] [visit_exp z] [visit_id z] -[visit_exp [`LABEL_%{%}%`_instr{n#1163, `instr*#497`}(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr{typeuse#43}(yy)] ++ instr*{instr <- `instr*`})]] -[visit_exp `LABEL_%{%}%`_instr{n#1163, `instr*#497`}(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr{typeuse#43}(yy)] ++ instr*{instr <- `instr*`})] -[visit_exp n#1163] -[visit_id n#1163] -[visit_exp `instr*#497`] -[visit_id instr*#497] -[visit_exp (k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr{typeuse#43}(yy)] ++ instr*{instr <- `instr*`})] +[visit_exp [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr(yy)] ++ instr*{instr <- `instr*`})]] +[visit_exp `LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr(yy)] ++ instr*{instr <- `instr*`})] +[visit_exp (k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr(yy)] ++ instr*{instr <- `instr*`})] [visit_exp k] [visit_id k] [visit_exp instr'*{instr' <- `instr'*`}] @@ -53800,8 +45120,8 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `instr'*`] [visit_id instr'*] no dims [visit_id instr'*] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr{typeuse#43}(yy)] ++ instr*{instr <- `instr*`}] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr{typeuse#43}(yy)]] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr(yy)] ++ instr*{instr <- `instr*`}] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr(yy)]] [visit_exp (val : val <: instr)*{val <- `val*`}] [scope_enter val] [visit_exp (val : val <: instr)] @@ -53812,10 +45132,8 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `val*`] [visit_id val*] no dims [visit_id val*] -[visit_exp [`RETURN_CALL_REF`_instr{typeuse#43}(yy)]] -[visit_exp `RETURN_CALL_REF`_instr{typeuse#43}(yy)] -[visit_exp typeuse#43] -[visit_id typeuse#43] +[visit_exp [`RETURN_CALL_REF`_instr(yy)]] +[visit_exp `RETURN_CALL_REF`_instr(yy)] [visit_exp (yy)] [visit_exp yy] [visit_id yy] @@ -53828,7 +45146,7 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `instr*`] [visit_id instr*] no dims [visit_id instr*] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr{typeuse#45}(yy)]] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr(yy)]] [visit_exp (val : val <: instr)*{val <- `val*`}] [scope_enter val] [visit_exp (val : val <: instr)] @@ -53839,31 +45157,19 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `val*`] [visit_id val*] not free [visit_id val*] no dims -[visit_exp [`RETURN_CALL_REF`_instr{typeuse#45}(yy)]] -[visit_exp `RETURN_CALL_REF`_instr{typeuse#45}(yy)] -[visit_exp typeuse#45] -[visit_id typeuse#45] +[visit_exp [`RETURN_CALL_REF`_instr(yy)]] +[visit_exp `RETURN_CALL_REF`_instr(yy)] [visit_exp (yy)] [visit_exp yy] [visit_id yy] not free -[check_dims] catch catch*#3 instr instr*#510 instr*#512 k n#1165 state#443 typeuse#47 typeuse#49 val yy z -[visit_exp `%;%`_config{state#443, `instr*#510`}(z, [`HANDLER_%{%}%`_instr{n#1165, `catch*#3`, `instr*#512`}(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr{typeuse#47}(yy)] ++ instr*{instr <- `instr*`})])] -[visit_exp state#443] -[visit_id state#443] -[visit_exp `instr*#510`] -[visit_id instr*#510] -[visit_exp (z, [`HANDLER_%{%}%`_instr{n#1165, `catch*#3`, `instr*#512`}(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr{typeuse#47}(yy)] ++ instr*{instr <- `instr*`})])] +[check_dims] catch instr k val yy z +[visit_exp `%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr(yy)] ++ instr*{instr <- `instr*`})])] +[visit_exp (z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr(yy)] ++ instr*{instr <- `instr*`})])] [visit_exp z] [visit_id z] -[visit_exp [`HANDLER_%{%}%`_instr{n#1165, `catch*#3`, `instr*#512`}(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr{typeuse#47}(yy)] ++ instr*{instr <- `instr*`})]] -[visit_exp `HANDLER_%{%}%`_instr{n#1165, `catch*#3`, `instr*#512`}(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr{typeuse#47}(yy)] ++ instr*{instr <- `instr*`})] -[visit_exp n#1165] -[visit_id n#1165] -[visit_exp `catch*#3`] -[visit_id catch*#3] -[visit_exp `instr*#512`] -[visit_id instr*#512] -[visit_exp (k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr{typeuse#47}(yy)] ++ instr*{instr <- `instr*`})] +[visit_exp [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr(yy)] ++ instr*{instr <- `instr*`})]] +[visit_exp `HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr(yy)] ++ instr*{instr <- `instr*`})] +[visit_exp (k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr(yy)] ++ instr*{instr <- `instr*`})] [visit_exp k] [visit_id k] [visit_exp catch*{catch <- `catch*`}] @@ -53875,8 +45181,8 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `catch*`] [visit_id catch*] no dims [visit_id catch*] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr{typeuse#47}(yy)] ++ instr*{instr <- `instr*`}] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr{typeuse#47}(yy)]] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr(yy)] ++ instr*{instr <- `instr*`}] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr(yy)]] [visit_exp (val : val <: instr)*{val <- `val*`}] [scope_enter val] [visit_exp (val : val <: instr)] @@ -53887,10 +45193,8 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `val*`] [visit_id val*] no dims [visit_id val*] -[visit_exp [`RETURN_CALL_REF`_instr{typeuse#47}(yy)]] -[visit_exp `RETURN_CALL_REF`_instr{typeuse#47}(yy)] -[visit_exp typeuse#47] -[visit_id typeuse#47] +[visit_exp [`RETURN_CALL_REF`_instr(yy)]] +[visit_exp `RETURN_CALL_REF`_instr(yy)] [visit_exp (yy)] [visit_exp yy] [visit_id yy] @@ -53903,7 +45207,7 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `instr*`] [visit_id instr*] no dims [visit_id instr*] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr{typeuse#49}(yy)]] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr(yy)]] [visit_exp (val : val <: instr)*{val <- `val*`}] [scope_enter val] [visit_exp (val : val <: instr)] @@ -53914,38 +45218,26 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `val*`] [visit_id val*] not free [visit_id val*] no dims -[visit_exp [`RETURN_CALL_REF`_instr{typeuse#49}(yy)]] -[visit_exp `RETURN_CALL_REF`_instr{typeuse#49}(yy)] -[visit_exp typeuse#49] -[visit_id typeuse#49] +[visit_exp [`RETURN_CALL_REF`_instr(yy)]] +[visit_exp `RETURN_CALL_REF`_instr(yy)] [visit_exp (yy)] [visit_exp yy] [visit_id yy] not free -[check_dims] f frame#931 heaptype#1309 ht instr instr*#524 instr*#526 k n#1167 state#455 typeuse#51 val yy z -[visit_exp `%;%`_config{state#455, `instr*#524`}(z, [`FRAME_%{%}%`_instr{n#1167, frame#931, `instr*#526`}(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL`_instr{heaptype#1309}(ht)] ++ [`RETURN_CALL_REF`_instr{typeuse#51}(yy)] ++ instr*{instr <- `instr*`})])] -[visit_exp state#455] -[visit_id state#455] -[visit_exp `instr*#524`] -[visit_id instr*#524] -[visit_exp (z, [`FRAME_%{%}%`_instr{n#1167, frame#931, `instr*#526`}(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL`_instr{heaptype#1309}(ht)] ++ [`RETURN_CALL_REF`_instr{typeuse#51}(yy)] ++ instr*{instr <- `instr*`})])] +[check_dims] f ht instr k val yy z +[visit_exp `%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL`_instr(ht)] ++ [`RETURN_CALL_REF`_instr(yy)] ++ instr*{instr <- `instr*`})])] +[visit_exp (z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL`_instr(ht)] ++ [`RETURN_CALL_REF`_instr(yy)] ++ instr*{instr <- `instr*`})])] [visit_exp z] [visit_id z] -[visit_exp [`FRAME_%{%}%`_instr{n#1167, frame#931, `instr*#526`}(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL`_instr{heaptype#1309}(ht)] ++ [`RETURN_CALL_REF`_instr{typeuse#51}(yy)] ++ instr*{instr <- `instr*`})]] -[visit_exp `FRAME_%{%}%`_instr{n#1167, frame#931, `instr*#526`}(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL`_instr{heaptype#1309}(ht)] ++ [`RETURN_CALL_REF`_instr{typeuse#51}(yy)] ++ instr*{instr <- `instr*`})] -[visit_exp n#1167] -[visit_id n#1167] -[visit_exp frame#931] -[visit_id frame#931] -[visit_exp `instr*#526`] -[visit_id instr*#526] -[visit_exp (k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL`_instr{heaptype#1309}(ht)] ++ [`RETURN_CALL_REF`_instr{typeuse#51}(yy)] ++ instr*{instr <- `instr*`})] +[visit_exp [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL`_instr(ht)] ++ [`RETURN_CALL_REF`_instr(yy)] ++ instr*{instr <- `instr*`})]] +[visit_exp `FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL`_instr(ht)] ++ [`RETURN_CALL_REF`_instr(yy)] ++ instr*{instr <- `instr*`})] +[visit_exp (k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL`_instr(ht)] ++ [`RETURN_CALL_REF`_instr(yy)] ++ instr*{instr <- `instr*`})] [visit_exp k] [visit_id k] [visit_exp f] [visit_id f] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL`_instr{heaptype#1309}(ht)] ++ [`RETURN_CALL_REF`_instr{typeuse#51}(yy)] ++ instr*{instr <- `instr*`}] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL`_instr{heaptype#1309}(ht)] ++ [`RETURN_CALL_REF`_instr{typeuse#51}(yy)]] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL`_instr{heaptype#1309}(ht)]] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL`_instr(ht)] ++ [`RETURN_CALL_REF`_instr(yy)] ++ instr*{instr <- `instr*`}] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL`_instr(ht)] ++ [`RETURN_CALL_REF`_instr(yy)]] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL`_instr(ht)]] [visit_exp (val : val <: instr)*{val <- `val*`}] [scope_enter val] [visit_exp (val : val <: instr)] @@ -53956,17 +45248,13 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `val*`] [visit_id val*] no dims [visit_id val*] -[visit_exp [`REF.NULL`_instr{heaptype#1309}(ht)]] -[visit_exp `REF.NULL`_instr{heaptype#1309}(ht)] -[visit_exp heaptype#1309] -[visit_id heaptype#1309] +[visit_exp [`REF.NULL`_instr(ht)]] +[visit_exp `REF.NULL`_instr(ht)] [visit_exp (ht)] [visit_exp ht] [visit_id ht] -[visit_exp [`RETURN_CALL_REF`_instr{typeuse#51}(yy)]] -[visit_exp `RETURN_CALL_REF`_instr{typeuse#51}(yy)] -[visit_exp typeuse#51] -[visit_id typeuse#51] +[visit_exp [`RETURN_CALL_REF`_instr(yy)]] +[visit_exp `RETURN_CALL_REF`_instr(yy)] [visit_exp (yy)] [visit_exp yy] [visit_id yy] @@ -53982,31 +45270,21 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[check_dims] X*#12527 X*#12540 a deftype#8 f frame#939 funcaddr#13 funcaddr#15 instr instr*#538 instr*#540 k m n n#1169 resulttype#3000 state#467 t_1 t_2 typeuse#53 typeuse#55 val val' yy z -[visit_exp `%;%`_config{state#467, `instr*#538`}(z, [`FRAME_%{%}%`_instr{n#1169, frame#939, `instr*#540`}(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr{funcaddr#13}(a)] ++ [`RETURN_CALL_REF`_instr{typeuse#53}(yy)] ++ instr*{instr <- `instr*`})])] -[visit_exp state#467] -[visit_id state#467] -[visit_exp `instr*#538`] -[visit_id instr*#538] -[visit_exp (z, [`FRAME_%{%}%`_instr{n#1169, frame#939, `instr*#540`}(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr{funcaddr#13}(a)] ++ [`RETURN_CALL_REF`_instr{typeuse#53}(yy)] ++ instr*{instr <- `instr*`})])] +[check_dims] a f instr k m n t_1 t_2 val val' yy z +[visit_exp `%;%`_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*`})])] +[visit_exp (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*`})])] [visit_exp z] [visit_id z] -[visit_exp [`FRAME_%{%}%`_instr{n#1169, frame#939, `instr*#540`}(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr{funcaddr#13}(a)] ++ [`RETURN_CALL_REF`_instr{typeuse#53}(yy)] ++ instr*{instr <- `instr*`})]] -[visit_exp `FRAME_%{%}%`_instr{n#1169, frame#939, `instr*#540`}(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr{funcaddr#13}(a)] ++ [`RETURN_CALL_REF`_instr{typeuse#53}(yy)] ++ instr*{instr <- `instr*`})] -[visit_exp n#1169] -[visit_id n#1169] -[visit_exp frame#939] -[visit_id frame#939] -[visit_exp `instr*#540`] -[visit_id instr*#540] -[visit_exp (k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr{funcaddr#13}(a)] ++ [`RETURN_CALL_REF`_instr{typeuse#53}(yy)] ++ instr*{instr <- `instr*`})] +[visit_exp [`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*`})]] +[visit_exp `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*`})] +[visit_exp (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*`})] [visit_exp k] [visit_id k] [visit_exp f] [visit_id f] -[visit_exp (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr{funcaddr#13}(a)] ++ [`RETURN_CALL_REF`_instr{typeuse#53}(yy)] ++ instr*{instr <- `instr*`}] -[visit_exp (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr{funcaddr#13}(a)] ++ [`RETURN_CALL_REF`_instr{typeuse#53}(yy)]] -[visit_exp (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr{funcaddr#13}(a)]] +[visit_exp (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [`RETURN_CALL_REF`_instr(yy)] ++ instr*{instr <- `instr*`}] +[visit_exp (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [`RETURN_CALL_REF`_instr(yy)]] +[visit_exp (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)]] [visit_exp (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`}] [visit_exp (val' : val <: instr)*{val' <- `val'*`}] [scope_enter val'] @@ -54030,17 +45308,13 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `val*`] [visit_id val*] no dims [visit_id val*] -[visit_exp [`REF.FUNC_ADDR`_instr{funcaddr#13}(a)]] -[visit_exp `REF.FUNC_ADDR`_instr{funcaddr#13}(a)] -[visit_exp funcaddr#13] -[visit_id funcaddr#13] +[visit_exp [`REF.FUNC_ADDR`_instr(a)]] +[visit_exp `REF.FUNC_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] -[visit_exp [`RETURN_CALL_REF`_instr{typeuse#53}(yy)]] -[visit_exp `RETURN_CALL_REF`_instr{typeuse#53}(yy)] -[visit_exp typeuse#53] -[visit_id typeuse#53] +[visit_exp [`RETURN_CALL_REF`_instr(yy)]] +[visit_exp `RETURN_CALL_REF`_instr(yy)] [visit_exp (yy)] [visit_exp yy] [visit_id yy] @@ -54053,7 +45327,7 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `instr*`] [visit_id instr*] no dims [visit_id instr*] -[visit_exp (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr{funcaddr#15}(a) `CALL_REF`_instr{typeuse#55}(yy)]] +[visit_exp (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) `CALL_REF`_instr(yy)]] [visit_exp (val : val <: instr)^n{val <- `val*`}] [scope_enter val] [visit_exp (val : val <: instr)] @@ -54066,36 +45340,26 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `val*`] [visit_id val*] not free [visit_id val*] no dims -[visit_exp [`REF.FUNC_ADDR`_instr{funcaddr#15}(a) `CALL_REF`_instr{typeuse#55}(yy)]] -[visit_exp `REF.FUNC_ADDR`_instr{funcaddr#15}(a)] -[visit_exp funcaddr#15] -[visit_id funcaddr#15] +[visit_exp [`REF.FUNC_ADDR`_instr(a) `CALL_REF`_instr(yy)]] +[visit_exp `REF.FUNC_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] not free -[visit_exp `CALL_REF`_instr{typeuse#55}(yy)] -[visit_exp typeuse#55] -[visit_id typeuse#55] +[visit_exp `CALL_REF`_instr(yy)] [visit_exp (yy)] [visit_exp yy] [visit_id yy] not free -[visit_exp ($funcinst(z)[a].`TYPE`_funcinst{deftype#8}, `FUNC%->%`_comptype{resulttype#3000}(`%`_resulttype{`X*#12527`}(t_1^n{t_1 <- `t_1*`}), `%`_resulttype{`X*#12540`}(t_2^m{t_2 <- `t_2*`})))] -[visit_exp $funcinst(z)[a].`TYPE`_funcinst{deftype#8}] +[visit_exp ($funcinst(z)[a].`TYPE`_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`})))] +[visit_exp $funcinst(z)[a].`TYPE`_funcinst] [visit_exp $funcinst(z)[a]] [visit_exp $funcinst(z)] [visit_exp z] [visit_id z] not free [visit_exp a] [visit_id a] not free -[visit_exp deftype#8] -[visit_id deftype#8] -[visit_exp `FUNC%->%`_comptype{resulttype#3000}(`%`_resulttype{`X*#12527`}(t_1^n{t_1 <- `t_1*`}), `%`_resulttype{`X*#12540`}(t_2^m{t_2 <- `t_2*`}))] -[visit_exp resulttype#3000] -[visit_id resulttype#3000] -[visit_exp (`%`_resulttype{`X*#12527`}(t_1^n{t_1 <- `t_1*`}), `%`_resulttype{`X*#12540`}(t_2^m{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#12527`}(t_1^n{t_1 <- `t_1*`})] -[visit_exp `X*#12527`] -[visit_id X*#12527] +[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1^n{t_1 <- `t_1*`})] [visit_exp (t_1^n{t_1 <- `t_1*`})] [visit_exp t_1^n{t_1 <- `t_1*`}] [scope_enter t_1] @@ -54108,9 +45372,7 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `t_1*`] [visit_id t_1*] no dims [visit_id t_1*] -[visit_exp `%`_resulttype{`X*#12540`}(t_2^m{t_2 <- `t_2*`})] -[visit_exp `X*#12540`] -[visit_id X*#12540] +[visit_exp `%`_resulttype(t_2^m{t_2 <- `t_2*`})] [visit_exp (t_2^m{t_2 <- `t_2*`})] [visit_exp t_2^m{t_2 <- `t_2*`}] [scope_enter t_2] @@ -54123,34 +45385,22 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `t_2*`] [visit_id t_2*] no dims [visit_id t_2*] -[check_dims] heaptype#1321 null?#1303 reftype#3451 tableidx#49 tableidx#51 typeuse#57 typeuse#59 x yy -[visit_exp [`CALL_INDIRECT`_instr{tableidx#49, typeuse#57}(x, yy)]] -[visit_exp `CALL_INDIRECT`_instr{tableidx#49, typeuse#57}(x, yy)] -[visit_exp tableidx#49] -[visit_id tableidx#49] -[visit_exp typeuse#57] -[visit_id typeuse#57] +[check_dims] x yy +[visit_exp [`CALL_INDIRECT`_instr(x, yy)]] +[visit_exp `CALL_INDIRECT`_instr(x, yy)] [visit_exp (x, yy)] [visit_exp x] [visit_id x] [visit_exp yy] [visit_id yy] -[visit_exp [`TABLE.GET`_instr{tableidx#51}(x) `REF.CAST`_instr{reftype#3451}(`REF`_reftype{`null?#1303`, heaptype#1321}(?(`NULL`_null), (yy : typeuse <: heaptype))) `CALL_REF`_instr{typeuse#59}(yy)]] -[visit_exp `TABLE.GET`_instr{tableidx#51}(x)] -[visit_exp tableidx#51] -[visit_id tableidx#51] +[visit_exp [`TABLE.GET`_instr(x) `REF.CAST`_instr(`REF`_reftype(?(`NULL`_null), (yy : typeuse <: heaptype))) `CALL_REF`_instr(yy)]] +[visit_exp `TABLE.GET`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] not free -[visit_exp `REF.CAST`_instr{reftype#3451}(`REF`_reftype{`null?#1303`, heaptype#1321}(?(`NULL`_null), (yy : typeuse <: heaptype)))] -[visit_exp reftype#3451] -[visit_id reftype#3451] -[visit_exp (`REF`_reftype{`null?#1303`, heaptype#1321}(?(`NULL`_null), (yy : typeuse <: heaptype)))] -[visit_exp `REF`_reftype{`null?#1303`, heaptype#1321}(?(`NULL`_null), (yy : typeuse <: heaptype))] -[visit_exp `null?#1303`] -[visit_id null?#1303] -[visit_exp heaptype#1321] -[visit_id heaptype#1321] +[visit_exp `REF.CAST`_instr(`REF`_reftype(?(`NULL`_null), (yy : typeuse <: heaptype)))] +[visit_exp (`REF`_reftype(?(`NULL`_null), (yy : typeuse <: heaptype)))] +[visit_exp `REF`_reftype(?(`NULL`_null), (yy : typeuse <: heaptype))] [visit_exp (?(`NULL`_null), (yy : typeuse <: heaptype))] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] @@ -54158,40 +45408,26 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp (yy : typeuse <: heaptype)] [visit_exp yy] [visit_id yy] not free -[visit_exp `CALL_REF`_instr{typeuse#59}(yy)] -[visit_exp typeuse#59] -[visit_id typeuse#59] +[visit_exp `CALL_REF`_instr(yy)] [visit_exp (yy)] [visit_exp yy] [visit_id yy] not free -[check_dims] heaptype#1333 null?#1315 reftype#3453 tableidx#53 tableidx#55 typeuse#61 typeuse#63 x yy -[visit_exp [`RETURN_CALL_INDIRECT`_instr{tableidx#53, typeuse#61}(x, yy)]] -[visit_exp `RETURN_CALL_INDIRECT`_instr{tableidx#53, typeuse#61}(x, yy)] -[visit_exp tableidx#53] -[visit_id tableidx#53] -[visit_exp typeuse#61] -[visit_id typeuse#61] +[check_dims] x yy +[visit_exp [`RETURN_CALL_INDIRECT`_instr(x, yy)]] +[visit_exp `RETURN_CALL_INDIRECT`_instr(x, yy)] [visit_exp (x, yy)] [visit_exp x] [visit_id x] [visit_exp yy] [visit_id yy] -[visit_exp [`TABLE.GET`_instr{tableidx#55}(x) `REF.CAST`_instr{reftype#3453}(`REF`_reftype{`null?#1315`, heaptype#1333}(?(`NULL`_null), (yy : typeuse <: heaptype))) `RETURN_CALL_REF`_instr{typeuse#63}(yy)]] -[visit_exp `TABLE.GET`_instr{tableidx#55}(x)] -[visit_exp tableidx#55] -[visit_id tableidx#55] +[visit_exp [`TABLE.GET`_instr(x) `REF.CAST`_instr(`REF`_reftype(?(`NULL`_null), (yy : typeuse <: heaptype))) `RETURN_CALL_REF`_instr(yy)]] +[visit_exp `TABLE.GET`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] not free -[visit_exp `REF.CAST`_instr{reftype#3453}(`REF`_reftype{`null?#1315`, heaptype#1333}(?(`NULL`_null), (yy : typeuse <: heaptype)))] -[visit_exp reftype#3453] -[visit_id reftype#3453] -[visit_exp (`REF`_reftype{`null?#1315`, heaptype#1333}(?(`NULL`_null), (yy : typeuse <: heaptype)))] -[visit_exp `REF`_reftype{`null?#1315`, heaptype#1333}(?(`NULL`_null), (yy : typeuse <: heaptype))] -[visit_exp `null?#1315`] -[visit_id null?#1315] -[visit_exp heaptype#1333] -[visit_id heaptype#1333] +[visit_exp `REF.CAST`_instr(`REF`_reftype(?(`NULL`_null), (yy : typeuse <: heaptype)))] +[visit_exp (`REF`_reftype(?(`NULL`_null), (yy : typeuse <: heaptype)))] +[visit_exp `REF`_reftype(?(`NULL`_null), (yy : typeuse <: heaptype))] [visit_exp (?(`NULL`_null), (yy : typeuse <: heaptype))] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] @@ -54199,21 +45435,13 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp (yy : typeuse <: heaptype)] [visit_exp yy] [visit_id yy] not free -[visit_exp `RETURN_CALL_REF`_instr{typeuse#63}(yy)] -[visit_exp typeuse#63] -[visit_id typeuse#63] +[visit_exp `RETURN_CALL_REF`_instr(yy)] [visit_exp (yy)] [visit_exp yy] [visit_id yy] not free -[check_dims] f frame#947 instr*#542 n n#1177 val -[visit_exp [`FRAME_%{%}%`_instr{n#1177, frame#947, `instr*#542`}(n, f, (val : val <: instr)^n{val <- `val*`})]] -[visit_exp `FRAME_%{%}%`_instr{n#1177, frame#947, `instr*#542`}(n, f, (val : val <: instr)^n{val <- `val*`})] -[visit_exp n#1177] -[visit_id n#1177] -[visit_exp frame#947] -[visit_id frame#947] -[visit_exp `instr*#542`] -[visit_id instr*#542] +[check_dims] f n val +[visit_exp [`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})]] +[visit_exp `FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})] [visit_exp (n, f, (val : val <: instr)^n{val <- `val*`})] [visit_exp n] [visit_id n] @@ -54243,15 +45471,9 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `val*`] [visit_id val*] not free [visit_id val*] no dims -[check_dims] f frame#949 instr instr*#544 n n#1179 val val' -[visit_exp [`FRAME_%{%}%`_instr{n#1179, frame#949, `instr*#544`}(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`RETURN`_instr] ++ instr*{instr <- `instr*`})]] -[visit_exp `FRAME_%{%}%`_instr{n#1179, frame#949, `instr*#544`}(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`RETURN`_instr] ++ instr*{instr <- `instr*`})] -[visit_exp n#1179] -[visit_id n#1179] -[visit_exp frame#949] -[visit_id frame#949] -[visit_exp `instr*#544`] -[visit_id instr*#544] +[check_dims] f instr n val val' +[visit_exp [`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`RETURN`_instr] ++ instr*{instr <- `instr*`})]] +[visit_exp `FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`RETURN`_instr] ++ instr*{instr <- `instr*`})] [visit_exp (n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`RETURN`_instr] ++ instr*{instr <- `instr*`})] [visit_exp n] [visit_id n] @@ -54306,13 +45528,9 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `val*`] [visit_id val*] not free [visit_id val*] no dims -[check_dims] instr instr' instr*#546 n n#1181 val -[visit_exp [`LABEL_%{%}%`_instr{n#1181, `instr*#546`}(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN`_instr] ++ instr*{instr <- `instr*`})]] -[visit_exp `LABEL_%{%}%`_instr{n#1181, `instr*#546`}(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN`_instr] ++ instr*{instr <- `instr*`})] -[visit_exp n#1181] -[visit_id n#1181] -[visit_exp `instr*#546`] -[visit_id instr*#546] +[check_dims] instr instr' n val +[visit_exp [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN`_instr] ++ instr*{instr <- `instr*`})]] +[visit_exp `LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN`_instr] ++ instr*{instr <- `instr*`})] [visit_exp (n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN`_instr] ++ instr*{instr <- `instr*`})] [visit_exp n] [visit_id n] @@ -54363,15 +45581,9 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp [`RETURN`_instr]] [visit_exp `RETURN`_instr] [visit_exp ()] -[check_dims] catch catch*#5 instr instr*#549 n n#1183 val -[visit_exp [`HANDLER_%{%}%`_instr{n#1183, `catch*#5`, `instr*#549`}(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN`_instr] ++ instr*{instr <- `instr*`})]] -[visit_exp `HANDLER_%{%}%`_instr{n#1183, `catch*#5`, `instr*#549`}(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN`_instr] ++ instr*{instr <- `instr*`})] -[visit_exp n#1183] -[visit_id n#1183] -[visit_exp `catch*#5`] -[visit_id catch*#5] -[visit_exp `instr*#549`] -[visit_id instr*#549] +[check_dims] catch instr n val +[visit_exp [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN`_instr] ++ instr*{instr <- `instr*`})]] +[visit_exp `HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN`_instr] ++ instr*{instr <- `instr*`})] [visit_exp (n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN`_instr] ++ instr*{instr <- `instr*`})] [visit_exp n] [visit_id n] @@ -54422,16 +45634,12 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp [`RETURN`_instr]] [visit_exp `RETURN`_instr] [visit_exp ()] -[check_dims] X*#12555 X*#12578 a exn exnaddr#3 i#32555 instr*#561 instr*#573 n resulttype#3003 state#479 state#491 t tagaddr#5 tagidx#11 tagtype#180 val val*#1 x z -[visit_exp `%;%`_config{state#479, `instr*#561`}(z, (val : val <: instr)^n{val <- `val*`} ++ [`THROW`_instr{tagidx#11}(x)])] -[visit_exp state#479] -[visit_id state#479] -[visit_exp `instr*#561`] -[visit_id instr*#561] -[visit_exp (z, (val : val <: instr)^n{val <- `val*`} ++ [`THROW`_instr{tagidx#11}(x)])] +[check_dims] a exn n t val x z +[visit_exp `%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`THROW`_instr(x)])] +[visit_exp (z, (val : val <: instr)^n{val <- `val*`} ++ [`THROW`_instr(x)])] [visit_exp z] [visit_id z] -[visit_exp (val : val <: instr)^n{val <- `val*`} ++ [`THROW`_instr{tagidx#11}(x)]] +[visit_exp (val : val <: instr)^n{val <- `val*`} ++ [`THROW`_instr(x)]] [visit_exp (val : val <: instr)^n{val <- `val*`}] [scope_enter val] [visit_exp (val : val <: instr)] @@ -54444,51 +45652,37 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `val*`] [visit_id val*] no dims [visit_id val*] -[visit_exp [`THROW`_instr{tagidx#11}(x)]] -[visit_exp `THROW`_instr{tagidx#11}(x)] -[visit_exp tagidx#11] -[visit_id tagidx#11] +[visit_exp [`THROW`_instr(x)]] +[visit_exp `THROW`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%;%`_config{state#491, `instr*#573`}($add_exninst(z, [exn]), [`REF.EXN_ADDR`_instr{exnaddr#3}(a) `THROW_REF`_instr])] -[visit_exp state#491] -[visit_id state#491] -[visit_exp `instr*#573`] -[visit_id instr*#573] -[visit_exp ($add_exninst(z, [exn]), [`REF.EXN_ADDR`_instr{exnaddr#3}(a) `THROW_REF`_instr])] +[visit_exp `%;%`_config($add_exninst(z, [exn]), [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])] +[visit_exp ($add_exninst(z, [exn]), [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])] [visit_exp $add_exninst(z, [exn])] [visit_exp z] [visit_id z] not free [visit_exp [exn]] [visit_exp exn] [visit_id exn] -[visit_exp [`REF.EXN_ADDR`_instr{exnaddr#3}(a) `THROW_REF`_instr]] -[visit_exp `REF.EXN_ADDR`_instr{exnaddr#3}(a)] -[visit_exp exnaddr#3] -[visit_id exnaddr#3] +[visit_exp [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr]] +[visit_exp `REF.EXN_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] [visit_exp `THROW_REF`_instr] [visit_exp ()] -[visit_exp ($as_deftype($tag(z, x).`TYPE`_taginst{tagtype#180}), `FUNC%->%`_comptype{resulttype#3003}(`%`_resulttype{`X*#12555`}(t^n{t <- `t*`}), `%`_resulttype{`X*#12578`}([])))] -[visit_exp $as_deftype($tag(z, x).`TYPE`_taginst{tagtype#180})] -[visit_exp $tag(z, x).`TYPE`_taginst{tagtype#180}] +[visit_exp ($as_deftype($tag(z, x).`TYPE`_taginst), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([])))] +[visit_exp $as_deftype($tag(z, x).`TYPE`_taginst)] +[visit_exp $tag(z, x).`TYPE`_taginst] [visit_exp $tag(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp tagtype#180] -[visit_id tagtype#180] -[visit_exp `FUNC%->%`_comptype{resulttype#3003}(`%`_resulttype{`X*#12555`}(t^n{t <- `t*`}), `%`_resulttype{`X*#12578`}([]))] -[visit_exp resulttype#3003] -[visit_id resulttype#3003] -[visit_exp (`%`_resulttype{`X*#12555`}(t^n{t <- `t*`}), `%`_resulttype{`X*#12578`}([]))] -[visit_exp `%`_resulttype{`X*#12555`}(t^n{t <- `t*`})] -[visit_exp `X*#12555`] -[visit_id X*#12555] +[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))] +[visit_exp (`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))] +[visit_exp `%`_resulttype(t^n{t <- `t*`})] [visit_exp (t^n{t <- `t*`})] [visit_exp t^n{t <- `t*`}] [scope_enter t] @@ -54501,9 +45695,7 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `t*`] [visit_id t*] no dims [visit_id t*] -[visit_exp `%`_resulttype{`X*#12578`}([])] -[visit_exp `X*#12578`] -[visit_id X*#12578] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] [visit_exp (a = |$exninst(z)|)] @@ -54513,24 +45705,18 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp $exninst(z)] [visit_exp z] [visit_id z] not free -[visit_exp (exn = {`TAG`{tagaddr#5} $tagaddr(z)[x!`%`_idx{i#32555}.0], `FIELDS`{`val*#1`} val^n{val <- `val*`}})] +[visit_exp (exn = {`TAG` $tagaddr(z)[x!`%`_idx.0], `FIELDS` val^n{val <- `val*`}})] [visit_exp exn] [visit_id exn] not free -[visit_exp {`TAG`{tagaddr#5} $tagaddr(z)[x!`%`_idx{i#32555}.0], `FIELDS`{`val*#1`} val^n{val <- `val*`}}] -[visit_exp tagaddr#5] -[visit_id tagaddr#5] -[visit_exp $tagaddr(z)[x!`%`_idx{i#32555}.0]] +[visit_exp {`TAG` $tagaddr(z)[x!`%`_idx.0], `FIELDS` val^n{val <- `val*`}}] +[visit_exp $tagaddr(z)[x!`%`_idx.0]] [visit_exp $tagaddr(z)] [visit_exp z] [visit_id z] not free -[visit_exp x!`%`_idx{i#32555}.0] -[visit_exp x!`%`_idx{i#32555}] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] [visit_exp x] [visit_id x] not free -[visit_exp i#32555] -[visit_id i#32555] -[visit_exp `val*#1`] -[visit_id val*#1] [visit_exp val^n{val <- `val*`}] [scope_enter val] [visit_exp val] @@ -54542,19 +45728,13 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `val*`] [visit_id val*] not free [visit_id val*] no dims -[check_dims] heaptype#1335 ht instr*#585 state#503 z -[visit_exp `%;%`_config{state#503, `instr*#585`}(z, [`REF.NULL`_instr{heaptype#1335}(ht) `THROW_REF`_instr])] -[visit_exp state#503] -[visit_id state#503] -[visit_exp `instr*#585`] -[visit_id instr*#585] -[visit_exp (z, [`REF.NULL`_instr{heaptype#1335}(ht) `THROW_REF`_instr])] +[check_dims] ht z +[visit_exp `%;%`_config(z, [`REF.NULL`_instr(ht) `THROW_REF`_instr])] +[visit_exp (z, [`REF.NULL`_instr(ht) `THROW_REF`_instr])] [visit_exp z] [visit_id z] -[visit_exp [`REF.NULL`_instr{heaptype#1335}(ht) `THROW_REF`_instr]] -[visit_exp `REF.NULL`_instr{heaptype#1335}(ht)] -[visit_exp heaptype#1335] -[visit_id heaptype#1335] +[visit_exp [`REF.NULL`_instr(ht) `THROW_REF`_instr]] +[visit_exp `REF.NULL`_instr(ht)] [visit_exp (ht)] [visit_exp ht] [visit_id ht] @@ -54563,16 +45743,12 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[check_dims] a exnaddr#5 exnaddr#7 instr instr*#597 state#515 val z -[visit_exp `%;%`_config{state#515, `instr*#597`}(z, (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr{exnaddr#5}(a)] ++ [`THROW_REF`_instr] ++ instr*{instr <- `instr*`})] -[visit_exp state#515] -[visit_id state#515] -[visit_exp `instr*#597`] -[visit_id instr*#597] -[visit_exp (z, (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr{exnaddr#5}(a)] ++ [`THROW_REF`_instr] ++ instr*{instr <- `instr*`})] +[check_dims] a instr val z +[visit_exp `%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [`THROW_REF`_instr] ++ instr*{instr <- `instr*`})] +[visit_exp (z, (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [`THROW_REF`_instr] ++ instr*{instr <- `instr*`})] [visit_exp z] [visit_id z] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr{exnaddr#5}(a)] ++ [`THROW_REF`_instr] ++ instr*{instr <- `instr*`}] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [`THROW_REF`_instr] ++ instr*{instr <- `instr*`}] [visit_exp (val : val <: instr)*{val <- `val*`}] [scope_enter val] [visit_exp (val : val <: instr)] @@ -54583,11 +45759,9 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `val*`] [visit_id val*] no dims [visit_id val*] -[visit_exp [`REF.EXN_ADDR`_instr{exnaddr#5}(a)] ++ [`THROW_REF`_instr] ++ instr*{instr <- `instr*`}] -[visit_exp [`REF.EXN_ADDR`_instr{exnaddr#5}(a)]] -[visit_exp `REF.EXN_ADDR`_instr{exnaddr#5}(a)] -[visit_exp exnaddr#5] -[visit_id exnaddr#5] +[visit_exp [`REF.EXN_ADDR`_instr(a)] ++ [`THROW_REF`_instr] ++ instr*{instr <- `instr*`}] +[visit_exp [`REF.EXN_ADDR`_instr(a)]] +[visit_exp `REF.EXN_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] @@ -54604,10 +45778,8 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `instr*`] [visit_id instr*] no dims [visit_id instr*] -[visit_exp [`REF.EXN_ADDR`_instr{exnaddr#7}(a) `THROW_REF`_instr]] -[visit_exp `REF.EXN_ADDR`_instr{exnaddr#7}(a)] -[visit_exp exnaddr#7] -[visit_id exnaddr#7] +[visit_exp [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr]] +[visit_exp `REF.EXN_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] not free @@ -54636,22 +45808,14 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id instr*] not free [visit_id instr*] no dims [visit_exp []] -[check_dims] a exnaddr#11 exnaddr#9 instr' instr*#609 instr*#611 n n#1191 state#527 z -[visit_exp `%;%`_config{state#527, `instr*#609`}(z, [`LABEL_%{%}%`_instr{n#1191, `instr*#611`}(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr{exnaddr#9}(a) `THROW_REF`_instr])])] -[visit_exp state#527] -[visit_id state#527] -[visit_exp `instr*#609`] -[visit_id instr*#609] -[visit_exp (z, [`LABEL_%{%}%`_instr{n#1191, `instr*#611`}(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr{exnaddr#9}(a) `THROW_REF`_instr])])] +[check_dims] a instr' n z +[visit_exp `%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])])] +[visit_exp (z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])])] [visit_exp z] [visit_id z] -[visit_exp [`LABEL_%{%}%`_instr{n#1191, `instr*#611`}(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr{exnaddr#9}(a) `THROW_REF`_instr])]] -[visit_exp `LABEL_%{%}%`_instr{n#1191, `instr*#611`}(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr{exnaddr#9}(a) `THROW_REF`_instr])] -[visit_exp n#1191] -[visit_id n#1191] -[visit_exp `instr*#611`] -[visit_id instr*#611] -[visit_exp (n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr{exnaddr#9}(a) `THROW_REF`_instr])] +[visit_exp [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])]] +[visit_exp `LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])] +[visit_exp (n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])] [visit_exp n] [visit_id n] [visit_exp instr'*{instr' <- `instr'*`}] @@ -54663,130 +45827,84 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `instr'*`] [visit_id instr'*] no dims [visit_id instr'*] -[visit_exp [`REF.EXN_ADDR`_instr{exnaddr#9}(a) `THROW_REF`_instr]] -[visit_exp `REF.EXN_ADDR`_instr{exnaddr#9}(a)] -[visit_exp exnaddr#9] -[visit_id exnaddr#9] +[visit_exp [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr]] +[visit_exp `REF.EXN_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] [visit_exp `THROW_REF`_instr] [visit_exp ()] -[visit_exp [`REF.EXN_ADDR`_instr{exnaddr#11}(a) `THROW_REF`_instr]] -[visit_exp `REF.EXN_ADDR`_instr{exnaddr#11}(a)] -[visit_exp exnaddr#11] -[visit_id exnaddr#11] +[visit_exp [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr]] +[visit_exp `REF.EXN_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] not free [visit_exp `THROW_REF`_instr] [visit_exp ()] -[check_dims] a exnaddr#13 exnaddr#15 f frame#1011 instr*#624 instr*#626 n n#1193 state#539 z -[visit_exp `%;%`_config{state#539, `instr*#624`}(z, [`FRAME_%{%}%`_instr{n#1193, frame#1011, `instr*#626`}(n, f, [`REF.EXN_ADDR`_instr{exnaddr#13}(a) `THROW_REF`_instr])])] -[visit_exp state#539] -[visit_id state#539] -[visit_exp `instr*#624`] -[visit_id instr*#624] -[visit_exp (z, [`FRAME_%{%}%`_instr{n#1193, frame#1011, `instr*#626`}(n, f, [`REF.EXN_ADDR`_instr{exnaddr#13}(a) `THROW_REF`_instr])])] +[check_dims] a f n z +[visit_exp `%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])])] +[visit_exp (z, [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])])] [visit_exp z] [visit_id z] -[visit_exp [`FRAME_%{%}%`_instr{n#1193, frame#1011, `instr*#626`}(n, f, [`REF.EXN_ADDR`_instr{exnaddr#13}(a) `THROW_REF`_instr])]] -[visit_exp `FRAME_%{%}%`_instr{n#1193, frame#1011, `instr*#626`}(n, f, [`REF.EXN_ADDR`_instr{exnaddr#13}(a) `THROW_REF`_instr])] -[visit_exp n#1193] -[visit_id n#1193] -[visit_exp frame#1011] -[visit_id frame#1011] -[visit_exp `instr*#626`] -[visit_id instr*#626] -[visit_exp (n, f, [`REF.EXN_ADDR`_instr{exnaddr#13}(a) `THROW_REF`_instr])] +[visit_exp [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])]] +[visit_exp `FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])] +[visit_exp (n, f, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])] [visit_exp n] [visit_id n] [visit_exp f] [visit_id f] -[visit_exp [`REF.EXN_ADDR`_instr{exnaddr#13}(a) `THROW_REF`_instr]] -[visit_exp `REF.EXN_ADDR`_instr{exnaddr#13}(a)] -[visit_exp exnaddr#13] -[visit_id exnaddr#13] +[visit_exp [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr]] +[visit_exp `REF.EXN_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] [visit_exp `THROW_REF`_instr] [visit_exp ()] -[visit_exp [`REF.EXN_ADDR`_instr{exnaddr#15}(a) `THROW_REF`_instr]] -[visit_exp `REF.EXN_ADDR`_instr{exnaddr#15}(a)] -[visit_exp exnaddr#15] -[visit_id exnaddr#15] +[visit_exp [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr]] +[visit_exp `REF.EXN_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] not free [visit_exp `THROW_REF`_instr] [visit_exp ()] -[check_dims] a catch*#7 exnaddr#17 exnaddr#19 instr*#638 instr*#640 n n#1195 state#551 z -[visit_exp `%;%`_config{state#551, `instr*#638`}(z, [`HANDLER_%{%}%`_instr{n#1195, `catch*#7`, `instr*#640`}(n, [], [`REF.EXN_ADDR`_instr{exnaddr#17}(a) `THROW_REF`_instr])])] -[visit_exp state#551] -[visit_id state#551] -[visit_exp `instr*#638`] -[visit_id instr*#638] -[visit_exp (z, [`HANDLER_%{%}%`_instr{n#1195, `catch*#7`, `instr*#640`}(n, [], [`REF.EXN_ADDR`_instr{exnaddr#17}(a) `THROW_REF`_instr])])] +[check_dims] a n z +[visit_exp `%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])])] +[visit_exp (z, [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])])] [visit_exp z] [visit_id z] -[visit_exp [`HANDLER_%{%}%`_instr{n#1195, `catch*#7`, `instr*#640`}(n, [], [`REF.EXN_ADDR`_instr{exnaddr#17}(a) `THROW_REF`_instr])]] -[visit_exp `HANDLER_%{%}%`_instr{n#1195, `catch*#7`, `instr*#640`}(n, [], [`REF.EXN_ADDR`_instr{exnaddr#17}(a) `THROW_REF`_instr])] -[visit_exp n#1195] -[visit_id n#1195] -[visit_exp `catch*#7`] -[visit_id catch*#7] -[visit_exp `instr*#640`] -[visit_id instr*#640] -[visit_exp (n, [], [`REF.EXN_ADDR`_instr{exnaddr#17}(a) `THROW_REF`_instr])] +[visit_exp [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])]] +[visit_exp `HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])] +[visit_exp (n, [], [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])] [visit_exp n] [visit_id n] [visit_exp []] -[visit_exp [`REF.EXN_ADDR`_instr{exnaddr#17}(a) `THROW_REF`_instr]] -[visit_exp `REF.EXN_ADDR`_instr{exnaddr#17}(a)] -[visit_exp exnaddr#17] -[visit_id exnaddr#17] +[visit_exp [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr]] +[visit_exp `REF.EXN_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] [visit_exp `THROW_REF`_instr] [visit_exp ()] -[visit_exp [`REF.EXN_ADDR`_instr{exnaddr#19}(a) `THROW_REF`_instr]] -[visit_exp `REF.EXN_ADDR`_instr{exnaddr#19}(a)] -[visit_exp exnaddr#19] -[visit_id exnaddr#19] +[visit_exp [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr]] +[visit_exp `REF.EXN_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] not free [visit_exp `THROW_REF`_instr] [visit_exp ()] -[check_dims] a catch' catch*#9 exnaddr#21 i#32603 instr*#652 instr*#654 l labelidx#85 labelidx#87 n n#1197 state#563 tagaddr#6 tagidx#13 val val*#2 x z -[visit_exp `%;%`_config{state#563, `instr*#652`}(z, [`HANDLER_%{%}%`_instr{n#1197, `catch*#9`, `instr*#654`}(n, [`CATCH`_catch{tagidx#13, labelidx#85}(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#21}(a) `THROW_REF`_instr])])] -[visit_exp state#563] -[visit_id state#563] -[visit_exp `instr*#652`] -[visit_id instr*#652] -[visit_exp (z, [`HANDLER_%{%}%`_instr{n#1197, `catch*#9`, `instr*#654`}(n, [`CATCH`_catch{tagidx#13, labelidx#85}(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#21}(a) `THROW_REF`_instr])])] +[check_dims] a catch' l n val x z +[visit_exp `%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [`CATCH`_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])])] +[visit_exp (z, [`HANDLER_%{%}%`_instr(n, [`CATCH`_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])])] [visit_exp z] [visit_id z] -[visit_exp [`HANDLER_%{%}%`_instr{n#1197, `catch*#9`, `instr*#654`}(n, [`CATCH`_catch{tagidx#13, labelidx#85}(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#21}(a) `THROW_REF`_instr])]] -[visit_exp `HANDLER_%{%}%`_instr{n#1197, `catch*#9`, `instr*#654`}(n, [`CATCH`_catch{tagidx#13, labelidx#85}(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#21}(a) `THROW_REF`_instr])] -[visit_exp n#1197] -[visit_id n#1197] -[visit_exp `catch*#9`] -[visit_id catch*#9] -[visit_exp `instr*#654`] -[visit_id instr*#654] -[visit_exp (n, [`CATCH`_catch{tagidx#13, labelidx#85}(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#21}(a) `THROW_REF`_instr])] +[visit_exp [`HANDLER_%{%}%`_instr(n, [`CATCH`_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])]] +[visit_exp `HANDLER_%{%}%`_instr(n, [`CATCH`_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])] +[visit_exp (n, [`CATCH`_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])] [visit_exp n] [visit_id n] -[visit_exp [`CATCH`_catch{tagidx#13, labelidx#85}(x, l)] ++ catch'*{catch' <- `catch'*`}] -[visit_exp [`CATCH`_catch{tagidx#13, labelidx#85}(x, l)]] -[visit_exp `CATCH`_catch{tagidx#13, labelidx#85}(x, l)] -[visit_exp tagidx#13] -[visit_id tagidx#13] -[visit_exp labelidx#85] -[visit_id labelidx#85] +[visit_exp [`CATCH`_catch(x, l)] ++ catch'*{catch' <- `catch'*`}] +[visit_exp [`CATCH`_catch(x, l)]] +[visit_exp `CATCH`_catch(x, l)] [visit_exp (x, l)] [visit_exp x] [visit_id x] @@ -54801,16 +45919,14 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `catch'*`] [visit_id catch'*] no dims [visit_id catch'*] -[visit_exp [`REF.EXN_ADDR`_instr{exnaddr#21}(a) `THROW_REF`_instr]] -[visit_exp `REF.EXN_ADDR`_instr{exnaddr#21}(a)] -[visit_exp exnaddr#21] -[visit_id exnaddr#21] +[visit_exp [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr]] +[visit_exp `REF.EXN_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] [visit_exp `THROW_REF`_instr] [visit_exp ()] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr{labelidx#87}(l)]] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr(l)]] [visit_exp (val : val <: instr)*{val <- `val*`}] [scope_enter val] [visit_exp (val : val <: instr)] @@ -54821,34 +45937,28 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `val*`] [visit_id val*] no dims [visit_id val*] -[visit_exp [`BR`_instr{labelidx#87}(l)]] -[visit_exp `BR`_instr{labelidx#87}(l)] -[visit_exp labelidx#87] -[visit_id labelidx#87] +[visit_exp [`BR`_instr(l)]] +[visit_exp `BR`_instr(l)] [visit_exp (l)] [visit_exp l] [visit_id l] not free -[visit_exp ($exninst(z)[a].`TAG`_exninst{tagaddr#6} = $tagaddr(z)[x!`%`_idx{i#32603}.0])] -[visit_exp $exninst(z)[a].`TAG`_exninst{tagaddr#6}] +[visit_exp ($exninst(z)[a].`TAG`_exninst = $tagaddr(z)[x!`%`_idx.0])] +[visit_exp $exninst(z)[a].`TAG`_exninst] [visit_exp $exninst(z)[a]] [visit_exp $exninst(z)] [visit_exp z] [visit_id z] not free [visit_exp a] [visit_id a] not free -[visit_exp tagaddr#6] -[visit_id tagaddr#6] -[visit_exp $tagaddr(z)[x!`%`_idx{i#32603}.0]] +[visit_exp $tagaddr(z)[x!`%`_idx.0]] [visit_exp $tagaddr(z)] [visit_exp z] [visit_id z] not free -[visit_exp x!`%`_idx{i#32603}.0] -[visit_exp x!`%`_idx{i#32603}] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] [visit_exp x] [visit_id x] not free -[visit_exp i#32603] -[visit_id i#32603] -[visit_exp (val*{val <- `val*`} = $exninst(z)[a].`FIELDS`_exninst{`val*#2`})] +[visit_exp (val*{val <- `val*`} = $exninst(z)[a].`FIELDS`_exninst)] [visit_exp val*{val <- `val*`}] [scope_enter val] [visit_exp val] @@ -54858,42 +45968,26 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `val*`] [visit_id val*] not free [visit_id val*] no dims -[visit_exp $exninst(z)[a].`FIELDS`_exninst{`val*#2`}] +[visit_exp $exninst(z)[a].`FIELDS`_exninst] [visit_exp $exninst(z)[a]] [visit_exp $exninst(z)] [visit_exp z] [visit_id z] not free [visit_exp a] [visit_id a] not free -[visit_exp `val*#2`] -[visit_id val*#2] -[check_dims] a catch' catch*#11 exnaddr#23 exnaddr#25 i#32651 instr*#666 instr*#668 l labelidx#89 labelidx#91 n n#1199 state#575 tagaddr#7 tagidx#15 val val*#3 x z -[visit_exp `%;%`_config{state#575, `instr*#666`}(z, [`HANDLER_%{%}%`_instr{n#1199, `catch*#11`, `instr*#668`}(n, [`CATCH_REF`_catch{tagidx#15, labelidx#89}(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#23}(a) `THROW_REF`_instr])])] -[visit_exp state#575] -[visit_id state#575] -[visit_exp `instr*#666`] -[visit_id instr*#666] -[visit_exp (z, [`HANDLER_%{%}%`_instr{n#1199, `catch*#11`, `instr*#668`}(n, [`CATCH_REF`_catch{tagidx#15, labelidx#89}(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#23}(a) `THROW_REF`_instr])])] +[check_dims] a catch' l n val x z +[visit_exp `%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [`CATCH_REF`_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])])] +[visit_exp (z, [`HANDLER_%{%}%`_instr(n, [`CATCH_REF`_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])])] [visit_exp z] [visit_id z] -[visit_exp [`HANDLER_%{%}%`_instr{n#1199, `catch*#11`, `instr*#668`}(n, [`CATCH_REF`_catch{tagidx#15, labelidx#89}(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#23}(a) `THROW_REF`_instr])]] -[visit_exp `HANDLER_%{%}%`_instr{n#1199, `catch*#11`, `instr*#668`}(n, [`CATCH_REF`_catch{tagidx#15, labelidx#89}(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#23}(a) `THROW_REF`_instr])] -[visit_exp n#1199] -[visit_id n#1199] -[visit_exp `catch*#11`] -[visit_id catch*#11] -[visit_exp `instr*#668`] -[visit_id instr*#668] -[visit_exp (n, [`CATCH_REF`_catch{tagidx#15, labelidx#89}(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#23}(a) `THROW_REF`_instr])] +[visit_exp [`HANDLER_%{%}%`_instr(n, [`CATCH_REF`_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])]] +[visit_exp `HANDLER_%{%}%`_instr(n, [`CATCH_REF`_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])] +[visit_exp (n, [`CATCH_REF`_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])] [visit_exp n] [visit_id n] -[visit_exp [`CATCH_REF`_catch{tagidx#15, labelidx#89}(x, l)] ++ catch'*{catch' <- `catch'*`}] -[visit_exp [`CATCH_REF`_catch{tagidx#15, labelidx#89}(x, l)]] -[visit_exp `CATCH_REF`_catch{tagidx#15, labelidx#89}(x, l)] -[visit_exp tagidx#15] -[visit_id tagidx#15] -[visit_exp labelidx#89] -[visit_id labelidx#89] +[visit_exp [`CATCH_REF`_catch(x, l)] ++ catch'*{catch' <- `catch'*`}] +[visit_exp [`CATCH_REF`_catch(x, l)]] +[visit_exp `CATCH_REF`_catch(x, l)] [visit_exp (x, l)] [visit_exp x] [visit_id x] @@ -54908,16 +46002,14 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `catch'*`] [visit_id catch'*] no dims [visit_id catch'*] -[visit_exp [`REF.EXN_ADDR`_instr{exnaddr#23}(a) `THROW_REF`_instr]] -[visit_exp `REF.EXN_ADDR`_instr{exnaddr#23}(a)] -[visit_exp exnaddr#23] -[visit_id exnaddr#23] +[visit_exp [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr]] +[visit_exp `REF.EXN_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] [visit_exp `THROW_REF`_instr] [visit_exp ()] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr{exnaddr#25}(a) `BR`_instr{labelidx#91}(l)]] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a) `BR`_instr(l)]] [visit_exp (val : val <: instr)*{val <- `val*`}] [scope_enter val] [visit_exp (val : val <: instr)] @@ -54928,40 +46020,32 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `val*`] [visit_id val*] no dims [visit_id val*] -[visit_exp [`REF.EXN_ADDR`_instr{exnaddr#25}(a) `BR`_instr{labelidx#91}(l)]] -[visit_exp `REF.EXN_ADDR`_instr{exnaddr#25}(a)] -[visit_exp exnaddr#25] -[visit_id exnaddr#25] +[visit_exp [`REF.EXN_ADDR`_instr(a) `BR`_instr(l)]] +[visit_exp `REF.EXN_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] not free -[visit_exp `BR`_instr{labelidx#91}(l)] -[visit_exp labelidx#91] -[visit_id labelidx#91] +[visit_exp `BR`_instr(l)] [visit_exp (l)] [visit_exp l] [visit_id l] not free -[visit_exp ($exninst(z)[a].`TAG`_exninst{tagaddr#7} = $tagaddr(z)[x!`%`_idx{i#32651}.0])] -[visit_exp $exninst(z)[a].`TAG`_exninst{tagaddr#7}] +[visit_exp ($exninst(z)[a].`TAG`_exninst = $tagaddr(z)[x!`%`_idx.0])] +[visit_exp $exninst(z)[a].`TAG`_exninst] [visit_exp $exninst(z)[a]] [visit_exp $exninst(z)] [visit_exp z] [visit_id z] not free [visit_exp a] [visit_id a] not free -[visit_exp tagaddr#7] -[visit_id tagaddr#7] -[visit_exp $tagaddr(z)[x!`%`_idx{i#32651}.0]] +[visit_exp $tagaddr(z)[x!`%`_idx.0]] [visit_exp $tagaddr(z)] [visit_exp z] [visit_id z] not free -[visit_exp x!`%`_idx{i#32651}.0] -[visit_exp x!`%`_idx{i#32651}] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] [visit_exp x] [visit_id x] not free -[visit_exp i#32651] -[visit_id i#32651] -[visit_exp (val*{val <- `val*`} = $exninst(z)[a].`FIELDS`_exninst{`val*#3`})] +[visit_exp (val*{val <- `val*`} = $exninst(z)[a].`FIELDS`_exninst)] [visit_exp val*{val <- `val*`}] [scope_enter val] [visit_exp val] @@ -54971,40 +46055,26 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `val*`] [visit_id val*] not free [visit_id val*] no dims -[visit_exp $exninst(z)[a].`FIELDS`_exninst{`val*#3`}] +[visit_exp $exninst(z)[a].`FIELDS`_exninst] [visit_exp $exninst(z)[a]] [visit_exp $exninst(z)] [visit_exp z] [visit_id z] not free [visit_exp a] [visit_id a] not free -[visit_exp `val*#3`] -[visit_id val*#3] -[check_dims] a catch' catch*#13 exnaddr#27 instr*#680 instr*#682 l labelidx#93 labelidx#95 n n#1201 state#587 z -[visit_exp `%;%`_config{state#587, `instr*#680`}(z, [`HANDLER_%{%}%`_instr{n#1201, `catch*#13`, `instr*#682`}(n, [`CATCH_ALL`_catch{labelidx#93}(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#27}(a) `THROW_REF`_instr])])] -[visit_exp state#587] -[visit_id state#587] -[visit_exp `instr*#680`] -[visit_id instr*#680] -[visit_exp (z, [`HANDLER_%{%}%`_instr{n#1201, `catch*#13`, `instr*#682`}(n, [`CATCH_ALL`_catch{labelidx#93}(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#27}(a) `THROW_REF`_instr])])] +[check_dims] a catch' l n z +[visit_exp `%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [`CATCH_ALL`_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])])] +[visit_exp (z, [`HANDLER_%{%}%`_instr(n, [`CATCH_ALL`_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])])] [visit_exp z] [visit_id z] -[visit_exp [`HANDLER_%{%}%`_instr{n#1201, `catch*#13`, `instr*#682`}(n, [`CATCH_ALL`_catch{labelidx#93}(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#27}(a) `THROW_REF`_instr])]] -[visit_exp `HANDLER_%{%}%`_instr{n#1201, `catch*#13`, `instr*#682`}(n, [`CATCH_ALL`_catch{labelidx#93}(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#27}(a) `THROW_REF`_instr])] -[visit_exp n#1201] -[visit_id n#1201] -[visit_exp `catch*#13`] -[visit_id catch*#13] -[visit_exp `instr*#682`] -[visit_id instr*#682] -[visit_exp (n, [`CATCH_ALL`_catch{labelidx#93}(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#27}(a) `THROW_REF`_instr])] +[visit_exp [`HANDLER_%{%}%`_instr(n, [`CATCH_ALL`_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])]] +[visit_exp `HANDLER_%{%}%`_instr(n, [`CATCH_ALL`_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])] +[visit_exp (n, [`CATCH_ALL`_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])] [visit_exp n] [visit_id n] -[visit_exp [`CATCH_ALL`_catch{labelidx#93}(l)] ++ catch'*{catch' <- `catch'*`}] -[visit_exp [`CATCH_ALL`_catch{labelidx#93}(l)]] -[visit_exp `CATCH_ALL`_catch{labelidx#93}(l)] -[visit_exp labelidx#93] -[visit_id labelidx#93] +[visit_exp [`CATCH_ALL`_catch(l)] ++ catch'*{catch' <- `catch'*`}] +[visit_exp [`CATCH_ALL`_catch(l)]] +[visit_exp `CATCH_ALL`_catch(l)] [visit_exp (l)] [visit_exp l] [visit_id l] @@ -55017,47 +46087,31 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `catch'*`] [visit_id catch'*] no dims [visit_id catch'*] -[visit_exp [`REF.EXN_ADDR`_instr{exnaddr#27}(a) `THROW_REF`_instr]] -[visit_exp `REF.EXN_ADDR`_instr{exnaddr#27}(a)] -[visit_exp exnaddr#27] -[visit_id exnaddr#27] +[visit_exp [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr]] +[visit_exp `REF.EXN_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] [visit_exp `THROW_REF`_instr] [visit_exp ()] -[visit_exp [`BR`_instr{labelidx#95}(l)]] -[visit_exp `BR`_instr{labelidx#95}(l)] -[visit_exp labelidx#95] -[visit_id labelidx#95] +[visit_exp [`BR`_instr(l)]] +[visit_exp `BR`_instr(l)] [visit_exp (l)] [visit_exp l] [visit_id l] not free -[check_dims] a catch' catch*#15 exnaddr#29 exnaddr#31 instr*#694 instr*#696 l labelidx#97 labelidx#99 n n#1203 state#599 z -[visit_exp `%;%`_config{state#599, `instr*#694`}(z, [`HANDLER_%{%}%`_instr{n#1203, `catch*#15`, `instr*#696`}(n, [`CATCH_ALL_REF`_catch{labelidx#97}(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#29}(a) `THROW_REF`_instr])])] -[visit_exp state#599] -[visit_id state#599] -[visit_exp `instr*#694`] -[visit_id instr*#694] -[visit_exp (z, [`HANDLER_%{%}%`_instr{n#1203, `catch*#15`, `instr*#696`}(n, [`CATCH_ALL_REF`_catch{labelidx#97}(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#29}(a) `THROW_REF`_instr])])] +[check_dims] a catch' l n z +[visit_exp `%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [`CATCH_ALL_REF`_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])])] +[visit_exp (z, [`HANDLER_%{%}%`_instr(n, [`CATCH_ALL_REF`_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])])] [visit_exp z] [visit_id z] -[visit_exp [`HANDLER_%{%}%`_instr{n#1203, `catch*#15`, `instr*#696`}(n, [`CATCH_ALL_REF`_catch{labelidx#97}(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#29}(a) `THROW_REF`_instr])]] -[visit_exp `HANDLER_%{%}%`_instr{n#1203, `catch*#15`, `instr*#696`}(n, [`CATCH_ALL_REF`_catch{labelidx#97}(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#29}(a) `THROW_REF`_instr])] -[visit_exp n#1203] -[visit_id n#1203] -[visit_exp `catch*#15`] -[visit_id catch*#15] -[visit_exp `instr*#696`] -[visit_id instr*#696] -[visit_exp (n, [`CATCH_ALL_REF`_catch{labelidx#97}(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#29}(a) `THROW_REF`_instr])] +[visit_exp [`HANDLER_%{%}%`_instr(n, [`CATCH_ALL_REF`_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])]] +[visit_exp `HANDLER_%{%}%`_instr(n, [`CATCH_ALL_REF`_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])] +[visit_exp (n, [`CATCH_ALL_REF`_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])] [visit_exp n] [visit_id n] -[visit_exp [`CATCH_ALL_REF`_catch{labelidx#97}(l)] ++ catch'*{catch' <- `catch'*`}] -[visit_exp [`CATCH_ALL_REF`_catch{labelidx#97}(l)]] -[visit_exp `CATCH_ALL_REF`_catch{labelidx#97}(l)] -[visit_exp labelidx#97] -[visit_id labelidx#97] +[visit_exp [`CATCH_ALL_REF`_catch(l)] ++ catch'*{catch' <- `catch'*`}] +[visit_exp [`CATCH_ALL_REF`_catch(l)]] +[visit_exp `CATCH_ALL_REF`_catch(l)] [visit_exp (l)] [visit_exp l] [visit_id l] @@ -55070,46 +46124,30 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `catch'*`] [visit_id catch'*] no dims [visit_id catch'*] -[visit_exp [`REF.EXN_ADDR`_instr{exnaddr#29}(a) `THROW_REF`_instr]] -[visit_exp `REF.EXN_ADDR`_instr{exnaddr#29}(a)] -[visit_exp exnaddr#29] -[visit_id exnaddr#29] +[visit_exp [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr]] +[visit_exp `REF.EXN_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] [visit_exp `THROW_REF`_instr] [visit_exp ()] -[visit_exp [`REF.EXN_ADDR`_instr{exnaddr#31}(a) `BR`_instr{labelidx#99}(l)]] -[visit_exp `REF.EXN_ADDR`_instr{exnaddr#31}(a)] -[visit_exp exnaddr#31] -[visit_id exnaddr#31] +[visit_exp [`REF.EXN_ADDR`_instr(a) `BR`_instr(l)]] +[visit_exp `REF.EXN_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] not free -[visit_exp `BR`_instr{labelidx#99}(l)] -[visit_exp labelidx#99] -[visit_id labelidx#99] +[visit_exp `BR`_instr(l)] [visit_exp (l)] [visit_exp l] [visit_id l] not free -[check_dims] a catch catch' catch*#17 catch*#19 exnaddr#33 exnaddr#35 instr*#708 instr*#710 instr*#712 n n#1205 n#1207 state#611 z -[visit_exp `%;%`_config{state#611, `instr*#708`}(z, [`HANDLER_%{%}%`_instr{n#1205, `catch*#17`, `instr*#710`}(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#33}(a) `THROW_REF`_instr])])] -[visit_exp state#611] -[visit_id state#611] -[visit_exp `instr*#708`] -[visit_id instr*#708] -[visit_exp (z, [`HANDLER_%{%}%`_instr{n#1205, `catch*#17`, `instr*#710`}(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#33}(a) `THROW_REF`_instr])])] +[check_dims] a catch catch' n z +[visit_exp `%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])])] +[visit_exp (z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])])] [visit_exp z] [visit_id z] -[visit_exp [`HANDLER_%{%}%`_instr{n#1205, `catch*#17`, `instr*#710`}(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#33}(a) `THROW_REF`_instr])]] -[visit_exp `HANDLER_%{%}%`_instr{n#1205, `catch*#17`, `instr*#710`}(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#33}(a) `THROW_REF`_instr])] -[visit_exp n#1205] -[visit_id n#1205] -[visit_exp `catch*#17`] -[visit_id catch*#17] -[visit_exp `instr*#710`] -[visit_id instr*#710] -[visit_exp (n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#33}(a) `THROW_REF`_instr])] +[visit_exp [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])]] +[visit_exp `HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])] +[visit_exp (n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])] [visit_exp n] [visit_id n] [visit_exp [catch] ++ catch'*{catch' <- `catch'*`}] @@ -55125,24 +46163,16 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `catch'*`] [visit_id catch'*] no dims [visit_id catch'*] -[visit_exp [`REF.EXN_ADDR`_instr{exnaddr#33}(a) `THROW_REF`_instr]] -[visit_exp `REF.EXN_ADDR`_instr{exnaddr#33}(a)] -[visit_exp exnaddr#33] -[visit_id exnaddr#33] +[visit_exp [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr]] +[visit_exp `REF.EXN_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] [visit_exp `THROW_REF`_instr] [visit_exp ()] -[visit_exp [`HANDLER_%{%}%`_instr{n#1207, `catch*#19`, `instr*#712`}(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#35}(a) `THROW_REF`_instr])]] -[visit_exp `HANDLER_%{%}%`_instr{n#1207, `catch*#19`, `instr*#712`}(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#35}(a) `THROW_REF`_instr])] -[visit_exp n#1207] -[visit_id n#1207] -[visit_exp `catch*#19`] -[visit_id catch*#19] -[visit_exp `instr*#712`] -[visit_id instr*#712] -[visit_exp (n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#35}(a) `THROW_REF`_instr])] +[visit_exp [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])]] +[visit_exp `HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])] +[visit_exp (n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])] [visit_exp n] [visit_id n] not free [visit_exp catch'*{catch' <- `catch'*`}] @@ -55154,25 +46184,19 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `catch'*`] [visit_id catch'*] not free [visit_id catch'*] no dims -[visit_exp [`REF.EXN_ADDR`_instr{exnaddr#35}(a) `THROW_REF`_instr]] -[visit_exp `REF.EXN_ADDR`_instr{exnaddr#35}(a)] -[visit_exp exnaddr#35] -[visit_id exnaddr#35] +[visit_exp [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr]] +[visit_exp `REF.EXN_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] not free [visit_exp `THROW_REF`_instr] [visit_exp ()] -[check_dims] X*#12591 X*#12604 X*#12655 blocktype#29 bt catch catch*#21 instr instr*#724 instr*#726 instr*#728 instr*#730 localidx*#1805 m n n#1209 n#1211 resulttype#3023 state#623 t_1 t_2 val z -[visit_exp `%;%`_config{state#623, `instr*#724`}(z, (val : val <: instr)^m{val <- `val*`} ++ [`TRY_TABLE`_instr{blocktype#29, `instr*#726`}(bt, `%`_list{`X*#12591`}(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])] -[visit_exp state#623] -[visit_id state#623] -[visit_exp `instr*#724`] -[visit_id instr*#724] -[visit_exp (z, (val : val <: instr)^m{val <- `val*`} ++ [`TRY_TABLE`_instr{blocktype#29, `instr*#726`}(bt, `%`_list{`X*#12591`}(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])] +[check_dims] bt catch instr m n t_1 t_2 val z +[visit_exp `%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [`TRY_TABLE`_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])] +[visit_exp (z, (val : val <: instr)^m{val <- `val*`} ++ [`TRY_TABLE`_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])] [visit_exp z] [visit_id z] -[visit_exp (val : val <: instr)^m{val <- `val*`} ++ [`TRY_TABLE`_instr{blocktype#29, `instr*#726`}(bt, `%`_list{`X*#12591`}(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]] +[visit_exp (val : val <: instr)^m{val <- `val*`} ++ [`TRY_TABLE`_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]] [visit_exp (val : val <: instr)^m{val <- `val*`}] [scope_enter val] [visit_exp (val : val <: instr)] @@ -55185,18 +46209,12 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `val*`] [visit_id val*] no dims [visit_id val*] -[visit_exp [`TRY_TABLE`_instr{blocktype#29, `instr*#726`}(bt, `%`_list{`X*#12591`}(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]] -[visit_exp `TRY_TABLE`_instr{blocktype#29, `instr*#726`}(bt, `%`_list{`X*#12591`}(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})] -[visit_exp blocktype#29] -[visit_id blocktype#29] -[visit_exp `instr*#726`] -[visit_id instr*#726] -[visit_exp (bt, `%`_list{`X*#12591`}(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})] +[visit_exp [`TRY_TABLE`_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]] +[visit_exp `TRY_TABLE`_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})] +[visit_exp (bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})] [visit_exp bt] [visit_id bt] -[visit_exp `%`_list{`X*#12591`}(catch*{catch <- `catch*`})] -[visit_exp `X*#12591`] -[visit_id X*#12591] +[visit_exp `%`_list(catch*{catch <- `catch*`})] [visit_exp (catch*{catch <- `catch*`})] [visit_exp catch*{catch <- `catch*`}] [scope_enter catch] @@ -55216,15 +46234,9 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `instr*`] [visit_id instr*] no dims [visit_id instr*] -[visit_exp [`HANDLER_%{%}%`_instr{n#1209, `catch*#21`, `instr*#728`}(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr{n#1211, `instr*#730`}(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]] -[visit_exp `HANDLER_%{%}%`_instr{n#1209, `catch*#21`, `instr*#728`}(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr{n#1211, `instr*#730`}(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])] -[visit_exp n#1209] -[visit_id n#1209] -[visit_exp `catch*#21`] -[visit_id catch*#21] -[visit_exp `instr*#728`] -[visit_id instr*#728] -[visit_exp (n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr{n#1211, `instr*#730`}(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])] +[visit_exp [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]] +[visit_exp `HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])] +[visit_exp (n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])] [visit_exp n] [visit_id n] [visit_exp catch*{catch <- `catch*`}] @@ -55236,12 +46248,8 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `catch*`] [visit_id catch*] not free [visit_id catch*] no dims -[visit_exp [`LABEL_%{%}%`_instr{n#1211, `instr*#730`}(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]] -[visit_exp `LABEL_%{%}%`_instr{n#1211, `instr*#730`}(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})] -[visit_exp n#1211] -[visit_id n#1211] -[visit_exp `instr*#730`] -[visit_id instr*#730] +[visit_exp [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]] +[visit_exp `LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})] [visit_exp (n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})] [visit_exp n] [visit_id n] not free @@ -55268,21 +46276,15 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `instr*`] [visit_id instr*] not free [visit_id instr*] no dims -[visit_exp ($blocktype_(z, bt) = `%->_%%`_instrtype{resulttype#3023, `localidx*#1805`}(`%`_resulttype{`X*#12604`}(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#12655`}(t_2^n{t_2 <- `t_2*`})))] +[visit_exp ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`})))] [visit_exp $blocktype_(z, bt)] [visit_exp z] [visit_id z] not free [visit_exp bt] [visit_id bt] not free -[visit_exp `%->_%%`_instrtype{resulttype#3023, `localidx*#1805`}(`%`_resulttype{`X*#12604`}(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#12655`}(t_2^n{t_2 <- `t_2*`}))] -[visit_exp resulttype#3023] -[visit_id resulttype#3023] -[visit_exp `localidx*#1805`] -[visit_id localidx*#1805] -[visit_exp (`%`_resulttype{`X*#12604`}(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#12655`}(t_2^n{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#12604`}(t_1^m{t_1 <- `t_1*`})] -[visit_exp `X*#12604`] -[visit_id X*#12604] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1^m{t_1 <- `t_1*`})] [visit_exp (t_1^m{t_1 <- `t_1*`})] [visit_exp t_1^m{t_1 <- `t_1*`}] [scope_enter t_1] @@ -55296,9 +46298,7 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id t_1*] no dims [visit_id t_1*] [visit_exp []] -[visit_exp `%`_resulttype{`X*#12655`}(t_2^n{t_2 <- `t_2*`})] -[visit_exp `X*#12655`] -[visit_id X*#12655] +[visit_exp `%`_resulttype(t_2^n{t_2 <- `t_2*`})] [visit_exp (t_2^n{t_2 <- `t_2*`})] [visit_exp t_2^n{t_2 <- `t_2*`}] [scope_enter t_2] @@ -55311,15 +46311,9 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `t_2*`] [visit_id t_2*] no dims [visit_id t_2*] -[check_dims] catch catch*#23 instr*#733 n n#1213 val -[visit_exp [`HANDLER_%{%}%`_instr{n#1213, `catch*#23`, `instr*#733`}(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})]] -[visit_exp `HANDLER_%{%}%`_instr{n#1213, `catch*#23`, `instr*#733`}(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})] -[visit_exp n#1213] -[visit_id n#1213] -[visit_exp `catch*#23`] -[visit_id catch*#23] -[visit_exp `instr*#733`] -[visit_id instr*#733] +[check_dims] catch n val +[visit_exp [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})]] +[visit_exp `HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})] [visit_exp (n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})] [visit_exp n] [visit_id n] @@ -55403,13 +46397,9 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id instr*] not free [visit_id instr*] no dims [visit_exp []] -[check_dims] instr' instr*#735 n n#1215 -[visit_exp [`LABEL_%{%}%`_instr{n#1215, `instr*#735`}(n, instr'*{instr' <- `instr'*`}, [`TRAP`_instr])]] -[visit_exp `LABEL_%{%}%`_instr{n#1215, `instr*#735`}(n, instr'*{instr' <- `instr'*`}, [`TRAP`_instr])] -[visit_exp n#1215] -[visit_id n#1215] -[visit_exp `instr*#735`] -[visit_id instr*#735] +[check_dims] instr' n +[visit_exp [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`TRAP`_instr])]] +[visit_exp `LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`TRAP`_instr])] [visit_exp (n, instr'*{instr' <- `instr'*`}, [`TRAP`_instr])] [visit_exp n] [visit_id n] @@ -55428,15 +46418,9 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[check_dims] f frame#1097 instr*#738 n n#1217 -[visit_exp [`FRAME_%{%}%`_instr{n#1217, frame#1097, `instr*#738`}(n, f, [`TRAP`_instr])]] -[visit_exp `FRAME_%{%}%`_instr{n#1217, frame#1097, `instr*#738`}(n, f, [`TRAP`_instr])] -[visit_exp n#1217] -[visit_id n#1217] -[visit_exp frame#1097] -[visit_id frame#1097] -[visit_exp `instr*#738`] -[visit_id instr*#738] +[check_dims] f n +[visit_exp [`FRAME_%{%}%`_instr(n, f, [`TRAP`_instr])]] +[visit_exp `FRAME_%{%}%`_instr(n, f, [`TRAP`_instr])] [visit_exp (n, f, [`TRAP`_instr])] [visit_exp n] [visit_id n] @@ -55448,19 +46432,13 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[check_dims] instr*#750 localidx#13 state#635 val x z -[visit_exp `%;%`_config{state#635, `instr*#750`}(z, [`LOCAL.GET`_instr{localidx#13}(x)])] -[visit_exp state#635] -[visit_id state#635] -[visit_exp `instr*#750`] -[visit_id instr*#750] -[visit_exp (z, [`LOCAL.GET`_instr{localidx#13}(x)])] +[check_dims] val x z +[visit_exp `%;%`_config(z, [`LOCAL.GET`_instr(x)])] +[visit_exp (z, [`LOCAL.GET`_instr(x)])] [visit_exp z] [visit_id z] -[visit_exp [`LOCAL.GET`_instr{localidx#13}(x)]] -[visit_exp `LOCAL.GET`_instr{localidx#13}(x)] -[visit_exp localidx#13] -[visit_id localidx#13] +[visit_exp [`LOCAL.GET`_instr(x)]] +[visit_exp `LOCAL.GET`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -55477,30 +46455,20 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp ?(val)] [visit_exp val] [visit_id val] not free -[check_dims] instr*#762 instr*#774 localidx#15 state#647 state#659 val x z -[visit_exp `%;%`_config{state#647, `instr*#762`}(z, [(val : val <: instr) `LOCAL.SET`_instr{localidx#15}(x)])] -[visit_exp state#647] -[visit_id state#647] -[visit_exp `instr*#762`] -[visit_id instr*#762] -[visit_exp (z, [(val : val <: instr) `LOCAL.SET`_instr{localidx#15}(x)])] +[check_dims] val x z +[visit_exp `%;%`_config(z, [(val : val <: instr) `LOCAL.SET`_instr(x)])] +[visit_exp (z, [(val : val <: instr) `LOCAL.SET`_instr(x)])] [visit_exp z] [visit_id z] -[visit_exp [(val : val <: instr) `LOCAL.SET`_instr{localidx#15}(x)]] +[visit_exp [(val : val <: instr) `LOCAL.SET`_instr(x)]] [visit_exp (val : val <: instr)] [visit_exp val] [visit_id val] -[visit_exp `LOCAL.SET`_instr{localidx#15}(x)] -[visit_exp localidx#15] -[visit_id localidx#15] +[visit_exp `LOCAL.SET`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%;%`_config{state#659, `instr*#774`}($with_local(z, x, val), [])] -[visit_exp state#659] -[visit_id state#659] -[visit_exp `instr*#774`] -[visit_id instr*#774] +[visit_exp `%;%`_config($with_local(z, x, val), [])] [visit_exp ($with_local(z, x, val), [])] [visit_exp $with_local(z, x, val)] [visit_exp z] @@ -55510,43 +46478,33 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp val] [visit_id val] not free [visit_exp []] -[check_dims] localidx#17 localidx#19 val x -[visit_exp [(val : val <: instr) `LOCAL.TEE`_instr{localidx#17}(x)]] +[check_dims] val x +[visit_exp [(val : val <: instr) `LOCAL.TEE`_instr(x)]] [visit_exp (val : val <: instr)] [visit_exp val] [visit_id val] -[visit_exp `LOCAL.TEE`_instr{localidx#17}(x)] -[visit_exp localidx#17] -[visit_id localidx#17] +[visit_exp `LOCAL.TEE`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp [(val : val <: instr) (val : val <: instr) `LOCAL.SET`_instr{localidx#19}(x)]] +[visit_exp [(val : val <: instr) (val : val <: instr) `LOCAL.SET`_instr(x)]] [visit_exp (val : val <: instr)] [visit_exp val] [visit_id val] not free [visit_exp (val : val <: instr)] [visit_exp val] [visit_id val] not free -[visit_exp `LOCAL.SET`_instr{localidx#19}(x)] -[visit_exp localidx#19] -[visit_id localidx#19] +[visit_exp `LOCAL.SET`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] not free -[check_dims] globalidx#17 instr*#786 state#671 val val#2 x z -[visit_exp `%;%`_config{state#671, `instr*#786`}(z, [`GLOBAL.GET`_instr{globalidx#17}(x)])] -[visit_exp state#671] -[visit_id state#671] -[visit_exp `instr*#786`] -[visit_id instr*#786] -[visit_exp (z, [`GLOBAL.GET`_instr{globalidx#17}(x)])] +[check_dims] val x z +[visit_exp `%;%`_config(z, [`GLOBAL.GET`_instr(x)])] +[visit_exp (z, [`GLOBAL.GET`_instr(x)])] [visit_exp z] [visit_id z] -[visit_exp [`GLOBAL.GET`_instr{globalidx#17}(x)]] -[visit_exp `GLOBAL.GET`_instr{globalidx#17}(x)] -[visit_exp globalidx#17] -[visit_id globalidx#17] +[visit_exp [`GLOBAL.GET`_instr(x)]] +[visit_exp `GLOBAL.GET`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -55554,41 +46512,29 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp (val : val <: instr)] [visit_exp val] [visit_id val] -[visit_exp ($global(z, x).`VALUE`_globalinst{val#2} = val)] -[visit_exp $global(z, x).`VALUE`_globalinst{val#2}] +[visit_exp ($global(z, x).`VALUE`_globalinst = val)] +[visit_exp $global(z, x).`VALUE`_globalinst] [visit_exp $global(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp val#2] -[visit_id val#2] [visit_exp val] [visit_id val] not free -[check_dims] globalidx#19 instr*#798 instr*#810 state#683 state#695 val x z -[visit_exp `%;%`_config{state#683, `instr*#798`}(z, [(val : val <: instr) `GLOBAL.SET`_instr{globalidx#19}(x)])] -[visit_exp state#683] -[visit_id state#683] -[visit_exp `instr*#798`] -[visit_id instr*#798] -[visit_exp (z, [(val : val <: instr) `GLOBAL.SET`_instr{globalidx#19}(x)])] +[check_dims] val x z +[visit_exp `%;%`_config(z, [(val : val <: instr) `GLOBAL.SET`_instr(x)])] +[visit_exp (z, [(val : val <: instr) `GLOBAL.SET`_instr(x)])] [visit_exp z] [visit_id z] -[visit_exp [(val : val <: instr) `GLOBAL.SET`_instr{globalidx#19}(x)]] +[visit_exp [(val : val <: instr) `GLOBAL.SET`_instr(x)]] [visit_exp (val : val <: instr)] [visit_exp val] [visit_id val] -[visit_exp `GLOBAL.SET`_instr{globalidx#19}(x)] -[visit_exp globalidx#19] -[visit_id globalidx#19] +[visit_exp `GLOBAL.SET`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%;%`_config{state#695, `instr*#810`}($with_global(z, x, val), [])] -[visit_exp state#695] -[visit_id state#695] -[visit_exp `instr*#810`] -[visit_id instr*#810] +[visit_exp `%;%`_config($with_global(z, x, val), [])] [visit_exp ($with_global(z, x, val), [])] [visit_exp $with_global(z, x, val)] [visit_exp z] @@ -55598,121 +46544,87 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp val] [visit_id val] not free [visit_exp []] -[check_dims] at i i#32897 instr*#822 numtype#75 ref*#5 state#707 tableidx#57 x z -[visit_exp `%;%`_config{state#707, `instr*#822`}(z, [`CONST`_instr{numtype#75}((at : addrtype <: numtype), i) `TABLE.GET`_instr{tableidx#57}(x)])] -[visit_exp state#707] -[visit_id state#707] -[visit_exp `instr*#822`] -[visit_id instr*#822] -[visit_exp (z, [`CONST`_instr{numtype#75}((at : addrtype <: numtype), i) `TABLE.GET`_instr{tableidx#57}(x)])] +[check_dims] at i x z +[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)])] +[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#75}((at : addrtype <: numtype), i) `TABLE.GET`_instr{tableidx#57}(x)]] -[visit_exp `CONST`_instr{numtype#75}((at : addrtype <: numtype), i)] -[visit_exp numtype#75] -[visit_id numtype#75] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] [visit_exp ((at : addrtype <: numtype), i)] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] [visit_exp i] [visit_id i] -[visit_exp `TABLE.GET`_instr{tableidx#57}(x)] -[visit_exp tableidx#57] -[visit_id tableidx#57] +[visit_exp `TABLE.GET`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[visit_exp (i!`%`_num_{i#32897}.0 >= |$table(z, x).`REFS`_tableinst{`ref*#5`}|)] -[visit_exp i!`%`_num_{i#32897}.0] -[visit_exp i!`%`_num_{i#32897}] +[visit_exp (i!`%`_num_.0 >= |$table(z, x).`REFS`_tableinst|)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#32897] -[visit_id i#32897] -[visit_exp |$table(z, x).`REFS`_tableinst{`ref*#5`}|] -[visit_exp $table(z, x).`REFS`_tableinst{`ref*#5`}] +[visit_exp |$table(z, x).`REFS`_tableinst|] +[visit_exp $table(z, x).`REFS`_tableinst] [visit_exp $table(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `ref*#5`] -[visit_id ref*#5] -[check_dims] at i i#32947 i#32973 instr*#834 numtype#77 ref*#6 ref*#7 state#719 tableidx#59 x z -[visit_exp `%;%`_config{state#719, `instr*#834`}(z, [`CONST`_instr{numtype#77}((at : addrtype <: numtype), i) `TABLE.GET`_instr{tableidx#59}(x)])] -[visit_exp state#719] -[visit_id state#719] -[visit_exp `instr*#834`] -[visit_id instr*#834] -[visit_exp (z, [`CONST`_instr{numtype#77}((at : addrtype <: numtype), i) `TABLE.GET`_instr{tableidx#59}(x)])] +[check_dims] at i x z +[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)])] +[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#77}((at : addrtype <: numtype), i) `TABLE.GET`_instr{tableidx#59}(x)]] -[visit_exp `CONST`_instr{numtype#77}((at : addrtype <: numtype), i)] -[visit_exp numtype#77] -[visit_id numtype#77] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] [visit_exp ((at : addrtype <: numtype), i)] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] [visit_exp i] [visit_id i] -[visit_exp `TABLE.GET`_instr{tableidx#59}(x)] -[visit_exp tableidx#59] -[visit_id tableidx#59] +[visit_exp `TABLE.GET`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp [($table(z, x).`REFS`_tableinst{`ref*#6`}[i!`%`_num_{i#32947}.0] : ref <: instr)]] -[visit_exp ($table(z, x).`REFS`_tableinst{`ref*#6`}[i!`%`_num_{i#32947}.0] : ref <: instr)] -[visit_exp $table(z, x).`REFS`_tableinst{`ref*#6`}[i!`%`_num_{i#32947}.0]] -[visit_exp $table(z, x).`REFS`_tableinst{`ref*#6`}] +[visit_exp [($table(z, x).`REFS`_tableinst[i!`%`_num_.0] : ref <: instr)]] +[visit_exp ($table(z, x).`REFS`_tableinst[i!`%`_num_.0] : ref <: instr)] +[visit_exp $table(z, x).`REFS`_tableinst[i!`%`_num_.0]] +[visit_exp $table(z, x).`REFS`_tableinst] [visit_exp $table(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `ref*#6`] -[visit_id ref*#6] -[visit_exp i!`%`_num_{i#32947}.0] -[visit_exp i!`%`_num_{i#32947}] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#32947] -[visit_id i#32947] -[visit_exp (i!`%`_num_{i#32973}.0 < |$table(z, x).`REFS`_tableinst{`ref*#7`}|)] -[visit_exp i!`%`_num_{i#32973}.0] -[visit_exp i!`%`_num_{i#32973}] +[visit_exp (i!`%`_num_.0 < |$table(z, x).`REFS`_tableinst|)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#32973] -[visit_id i#32973] -[visit_exp |$table(z, x).`REFS`_tableinst{`ref*#7`}|] -[visit_exp $table(z, x).`REFS`_tableinst{`ref*#7`}] +[visit_exp |$table(z, x).`REFS`_tableinst|] +[visit_exp $table(z, x).`REFS`_tableinst] [visit_exp $table(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `ref*#7`] -[visit_id ref*#7] -[check_dims] at i i#33027 instr*#846 instr*#858 numtype#79 ref ref*#8 state#731 state#743 tableidx#61 x z -[visit_exp `%;%`_config{state#731, `instr*#846`}(z, [`CONST`_instr{numtype#79}((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr{tableidx#61}(x)])] -[visit_exp state#731] -[visit_id state#731] -[visit_exp `instr*#846`] -[visit_id instr*#846] -[visit_exp (z, [`CONST`_instr{numtype#79}((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr{tableidx#61}(x)])] +[check_dims] at i ref x z +[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)])] +[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#79}((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr{tableidx#61}(x)]] -[visit_exp `CONST`_instr{numtype#79}((at : addrtype <: numtype), i)] -[visit_exp numtype#79] -[visit_id numtype#79] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] [visit_exp ((at : addrtype <: numtype), i)] [visit_exp (at : addrtype <: numtype)] [visit_exp at] @@ -55722,52 +46634,36 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp (ref : ref <: instr)] [visit_exp ref] [visit_id ref] -[visit_exp `TABLE.SET`_instr{tableidx#61}(x)] -[visit_exp tableidx#61] -[visit_id tableidx#61] +[visit_exp `TABLE.SET`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%;%`_config{state#743, `instr*#858`}(z, [`TRAP`_instr])] -[visit_exp state#743] -[visit_id state#743] -[visit_exp `instr*#858`] -[visit_id instr*#858] +[visit_exp `%;%`_config(z, [`TRAP`_instr])] [visit_exp (z, [`TRAP`_instr])] [visit_exp z] [visit_id z] not free [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[visit_exp (i!`%`_num_{i#33027}.0 >= |$table(z, x).`REFS`_tableinst{`ref*#8`}|)] -[visit_exp i!`%`_num_{i#33027}.0] -[visit_exp i!`%`_num_{i#33027}] +[visit_exp (i!`%`_num_.0 >= |$table(z, x).`REFS`_tableinst|)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#33027] -[visit_id i#33027] -[visit_exp |$table(z, x).`REFS`_tableinst{`ref*#8`}|] -[visit_exp $table(z, x).`REFS`_tableinst{`ref*#8`}] +[visit_exp |$table(z, x).`REFS`_tableinst|] +[visit_exp $table(z, x).`REFS`_tableinst] [visit_exp $table(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `ref*#8`] -[visit_id ref*#8] -[check_dims] at i i#33077 i#33103 instr*#870 instr*#882 numtype#81 ref ref*#9 state#755 state#767 tableidx#63 x z -[visit_exp `%;%`_config{state#755, `instr*#870`}(z, [`CONST`_instr{numtype#81}((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr{tableidx#63}(x)])] -[visit_exp state#755] -[visit_id state#755] -[visit_exp `instr*#870`] -[visit_id instr*#870] -[visit_exp (z, [`CONST`_instr{numtype#81}((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr{tableidx#63}(x)])] +[check_dims] at i ref x z +[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)])] +[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#81}((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr{tableidx#63}(x)]] -[visit_exp `CONST`_instr{numtype#81}((at : addrtype <: numtype), i)] -[visit_exp numtype#81] -[visit_id numtype#81] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] [visit_exp ((at : addrtype <: numtype), i)] [visit_exp (at : addrtype <: numtype)] [visit_exp at] @@ -55777,106 +46673,74 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp (ref : ref <: instr)] [visit_exp ref] [visit_id ref] -[visit_exp `TABLE.SET`_instr{tableidx#63}(x)] -[visit_exp tableidx#63] -[visit_id tableidx#63] +[visit_exp `TABLE.SET`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%;%`_config{state#767, `instr*#882`}($with_table(z, x, i!`%`_num_{i#33077}.0, ref), [])] -[visit_exp state#767] -[visit_id state#767] -[visit_exp `instr*#882`] -[visit_id instr*#882] -[visit_exp ($with_table(z, x, i!`%`_num_{i#33077}.0, ref), [])] -[visit_exp $with_table(z, x, i!`%`_num_{i#33077}.0, ref)] +[visit_exp `%;%`_config($with_table(z, x, i!`%`_num_.0, ref), [])] +[visit_exp ($with_table(z, x, i!`%`_num_.0, ref), [])] +[visit_exp $with_table(z, x, i!`%`_num_.0, ref)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp i!`%`_num_{i#33077}.0] -[visit_exp i!`%`_num_{i#33077}] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#33077] -[visit_id i#33077] [visit_exp ref] [visit_id ref] not free [visit_exp []] -[visit_exp (i!`%`_num_{i#33103}.0 < |$table(z, x).`REFS`_tableinst{`ref*#9`}|)] -[visit_exp i!`%`_num_{i#33103}.0] -[visit_exp i!`%`_num_{i#33103}] +[visit_exp (i!`%`_num_.0 < |$table(z, x).`REFS`_tableinst|)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#33103] -[visit_id i#33103] -[visit_exp |$table(z, x).`REFS`_tableinst{`ref*#9`}|] -[visit_exp $table(z, x).`REFS`_tableinst{`ref*#9`}] +[visit_exp |$table(z, x).`REFS`_tableinst|] +[visit_exp $table(z, x).`REFS`_tableinst] [visit_exp $table(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `ref*#9`] -[visit_id ref*#9] -[check_dims] addrtype#1123 at i#33141 instr*#894 lim limits#1123 n numtype#83 ref*#10 reftype#3465 rt state#779 tableidx#65 tabletype#880 x z -[visit_exp `%;%`_config{state#779, `instr*#894`}(z, [`TABLE.SIZE`_instr{tableidx#65}(x)])] -[visit_exp state#779] -[visit_id state#779] -[visit_exp `instr*#894`] -[visit_id instr*#894] -[visit_exp (z, [`TABLE.SIZE`_instr{tableidx#65}(x)])] +[check_dims] at lim n rt x z +[visit_exp `%;%`_config(z, [`TABLE.SIZE`_instr(x)])] +[visit_exp (z, [`TABLE.SIZE`_instr(x)])] [visit_exp z] [visit_id z] -[visit_exp [`TABLE.SIZE`_instr{tableidx#65}(x)]] -[visit_exp `TABLE.SIZE`_instr{tableidx#65}(x)] -[visit_exp tableidx#65] -[visit_id tableidx#65] +[visit_exp [`TABLE.SIZE`_instr(x)]] +[visit_exp `TABLE.SIZE`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp [`CONST`_instr{numtype#83}((at : addrtype <: numtype), `%`_num_{i#33141}(n))]] -[visit_exp `CONST`_instr{numtype#83}((at : addrtype <: numtype), `%`_num_{i#33141}(n))] -[visit_exp numtype#83] -[visit_id numtype#83] -[visit_exp ((at : addrtype <: numtype), `%`_num_{i#33141}(n))] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), `%`_num_(n))]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), `%`_num_(n))] +[visit_exp ((at : addrtype <: numtype), `%`_num_(n))] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] -[visit_exp `%`_num_{i#33141}(n)] -[visit_exp i#33141] -[visit_id i#33141] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp (|$table(z, x).`REFS`_tableinst{`ref*#10`}| = n)] -[visit_exp |$table(z, x).`REFS`_tableinst{`ref*#10`}|] -[visit_exp $table(z, x).`REFS`_tableinst{`ref*#10`}] +[visit_exp (|$table(z, x).`REFS`_tableinst| = n)] +[visit_exp |$table(z, x).`REFS`_tableinst|] +[visit_exp $table(z, x).`REFS`_tableinst] [visit_exp $table(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `ref*#10`] -[visit_id ref*#10] [visit_exp n] [visit_id n] not free -[visit_exp ($table(z, x).`TYPE`_tableinst{tabletype#880} = `%%%`_tabletype{addrtype#1123, limits#1123, reftype#3465}(at, lim, rt))] -[visit_exp $table(z, x).`TYPE`_tableinst{tabletype#880}] +[visit_exp ($table(z, x).`TYPE`_tableinst = `%%%`_tabletype(at, lim, rt))] +[visit_exp $table(z, x).`TYPE`_tableinst] [visit_exp $table(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp tabletype#880] -[visit_id tabletype#880] -[visit_exp `%%%`_tabletype{addrtype#1123, limits#1123, reftype#3465}(at, lim, rt)] -[visit_exp addrtype#1123] -[visit_id addrtype#1123] -[visit_exp limits#1123] -[visit_id limits#1123] -[visit_exp reftype#3465] -[visit_id reftype#3465] +[visit_exp `%%%`_tabletype(at, lim, rt)] [visit_exp (at, lim, rt)] [visit_exp at] [visit_id at] not free @@ -55884,44 +46748,30 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id lim] [visit_exp rt] [visit_id rt] -[check_dims] at i#33189 i#33249 instr*#906 instr*#918 n numtype#85 numtype#87 ref ref*#11 state#791 state#803 tableidx#67 ti x z -[visit_exp `%;%`_config{state#791, `instr*#906`}(z, [(ref : ref <: instr) `CONST`_instr{numtype#85}((at : addrtype <: numtype), `%`_num_{i#33189}(n)) `TABLE.GROW`_instr{tableidx#67}(x)])] -[visit_exp state#791] -[visit_id state#791] -[visit_exp `instr*#906`] -[visit_id instr*#906] -[visit_exp (z, [(ref : ref <: instr) `CONST`_instr{numtype#85}((at : addrtype <: numtype), `%`_num_{i#33189}(n)) `TABLE.GROW`_instr{tableidx#67}(x)])] +[check_dims] at n ref ti x z +[visit_exp `%;%`_config(z, [(ref : ref <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `TABLE.GROW`_instr(x)])] +[visit_exp (z, [(ref : ref <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `TABLE.GROW`_instr(x)])] [visit_exp z] [visit_id z] -[visit_exp [(ref : ref <: instr) `CONST`_instr{numtype#85}((at : addrtype <: numtype), `%`_num_{i#33189}(n)) `TABLE.GROW`_instr{tableidx#67}(x)]] +[visit_exp [(ref : ref <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `TABLE.GROW`_instr(x)]] [visit_exp (ref : ref <: instr)] [visit_exp ref] [visit_id ref] -[visit_exp `CONST`_instr{numtype#85}((at : addrtype <: numtype), `%`_num_{i#33189}(n))] -[visit_exp numtype#85] -[visit_id numtype#85] -[visit_exp ((at : addrtype <: numtype), `%`_num_{i#33189}(n))] +[visit_exp `CONST`_instr((at : addrtype <: numtype), `%`_num_(n))] +[visit_exp ((at : addrtype <: numtype), `%`_num_(n))] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] -[visit_exp `%`_num_{i#33189}(n)] -[visit_exp i#33189] -[visit_id i#33189] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `TABLE.GROW`_instr{tableidx#67}(x)] -[visit_exp tableidx#67] -[visit_id tableidx#67] +[visit_exp `TABLE.GROW`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%;%`_config{state#803, `instr*#918`}($with_tableinst(z, x, ti), [`CONST`_instr{numtype#87}((at : addrtype <: numtype), `%`_num_{i#33249}(|$table(z, x).`REFS`_tableinst{`ref*#11`}|))])] -[visit_exp state#803] -[visit_id state#803] -[visit_exp `instr*#918`] -[visit_id instr*#918] -[visit_exp ($with_tableinst(z, x, ti), [`CONST`_instr{numtype#87}((at : addrtype <: numtype), `%`_num_{i#33249}(|$table(z, x).`REFS`_tableinst{`ref*#11`}|))])] +[visit_exp `%;%`_config($with_tableinst(z, x, ti), [`CONST`_instr((at : addrtype <: numtype), `%`_num_(|$table(z, x).`REFS`_tableinst|))])] +[visit_exp ($with_tableinst(z, x, ti), [`CONST`_instr((at : addrtype <: numtype), `%`_num_(|$table(z, x).`REFS`_tableinst|))])] [visit_exp $with_tableinst(z, x, ti)] [visit_exp z] [visit_id z] not free @@ -55929,27 +46779,21 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id x] not free [visit_exp ti] [visit_id ti] -[visit_exp [`CONST`_instr{numtype#87}((at : addrtype <: numtype), `%`_num_{i#33249}(|$table(z, x).`REFS`_tableinst{`ref*#11`}|))]] -[visit_exp `CONST`_instr{numtype#87}((at : addrtype <: numtype), `%`_num_{i#33249}(|$table(z, x).`REFS`_tableinst{`ref*#11`}|))] -[visit_exp numtype#87] -[visit_id numtype#87] -[visit_exp ((at : addrtype <: numtype), `%`_num_{i#33249}(|$table(z, x).`REFS`_tableinst{`ref*#11`}|))] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), `%`_num_(|$table(z, x).`REFS`_tableinst|))]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), `%`_num_(|$table(z, x).`REFS`_tableinst|))] +[visit_exp ((at : addrtype <: numtype), `%`_num_(|$table(z, x).`REFS`_tableinst|))] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] not free -[visit_exp `%`_num_{i#33249}(|$table(z, x).`REFS`_tableinst{`ref*#11`}|)] -[visit_exp i#33249] -[visit_id i#33249] -[visit_exp (|$table(z, x).`REFS`_tableinst{`ref*#11`}|)] -[visit_exp |$table(z, x).`REFS`_tableinst{`ref*#11`}|] -[visit_exp $table(z, x).`REFS`_tableinst{`ref*#11`}] +[visit_exp `%`_num_(|$table(z, x).`REFS`_tableinst|)] +[visit_exp (|$table(z, x).`REFS`_tableinst|)] +[visit_exp |$table(z, x).`REFS`_tableinst|] +[visit_exp $table(z, x).`REFS`_tableinst] [visit_exp $table(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `ref*#11`] -[visit_id ref*#11] [visit_exp (ti = $growtable($table(z, x), n, ref))] [visit_exp ti] [visit_id ti] not free @@ -55963,57 +46807,39 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id n] not free [visit_exp ref] [visit_id ref] not free -[check_dims] at i#33285 i#33321 instr*#930 instr*#942 n numtype#89 numtype#91 ref state#815 state#827 tableidx#69 x z -[visit_exp `%;%`_config{state#815, `instr*#930`}(z, [(ref : ref <: instr) `CONST`_instr{numtype#89}((at : addrtype <: numtype), `%`_num_{i#33285}(n)) `TABLE.GROW`_instr{tableidx#69}(x)])] -[visit_exp state#815] -[visit_id state#815] -[visit_exp `instr*#930`] -[visit_id instr*#930] -[visit_exp (z, [(ref : ref <: instr) `CONST`_instr{numtype#89}((at : addrtype <: numtype), `%`_num_{i#33285}(n)) `TABLE.GROW`_instr{tableidx#69}(x)])] +[check_dims] at n ref x z +[visit_exp `%;%`_config(z, [(ref : ref <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `TABLE.GROW`_instr(x)])] +[visit_exp (z, [(ref : ref <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `TABLE.GROW`_instr(x)])] [visit_exp z] [visit_id z] -[visit_exp [(ref : ref <: instr) `CONST`_instr{numtype#89}((at : addrtype <: numtype), `%`_num_{i#33285}(n)) `TABLE.GROW`_instr{tableidx#69}(x)]] +[visit_exp [(ref : ref <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `TABLE.GROW`_instr(x)]] [visit_exp (ref : ref <: instr)] [visit_exp ref] [visit_id ref] -[visit_exp `CONST`_instr{numtype#89}((at : addrtype <: numtype), `%`_num_{i#33285}(n))] -[visit_exp numtype#89] -[visit_id numtype#89] -[visit_exp ((at : addrtype <: numtype), `%`_num_{i#33285}(n))] +[visit_exp `CONST`_instr((at : addrtype <: numtype), `%`_num_(n))] +[visit_exp ((at : addrtype <: numtype), `%`_num_(n))] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] -[visit_exp `%`_num_{i#33285}(n)] -[visit_exp i#33285] -[visit_id i#33285] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `TABLE.GROW`_instr{tableidx#69}(x)] -[visit_exp tableidx#69] -[visit_id tableidx#69] +[visit_exp `TABLE.GROW`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%;%`_config{state#827, `instr*#942`}(z, [`CONST`_instr{numtype#91}((at : addrtype <: numtype), `%`_num_{i#33321}($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))])] -[visit_exp state#827] -[visit_id state#827] -[visit_exp `instr*#942`] -[visit_id instr*#942] -[visit_exp (z, [`CONST`_instr{numtype#91}((at : addrtype <: numtype), `%`_num_{i#33321}($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))])] +[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))])] +[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))])] [visit_exp z] [visit_id z] not free -[visit_exp [`CONST`_instr{numtype#91}((at : addrtype <: numtype), `%`_num_{i#33321}($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))]] -[visit_exp `CONST`_instr{numtype#91}((at : addrtype <: numtype), `%`_num_{i#33321}($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))] -[visit_exp numtype#91] -[visit_id numtype#91] -[visit_exp ((at : addrtype <: numtype), `%`_num_{i#33321}($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))] +[visit_exp ((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] not free -[visit_exp `%`_num_{i#33321}($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))] -[visit_exp i#33321] -[visit_id i#33321] +[visit_exp `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))] [visit_exp ($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))] [visit_exp $inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))] [visit_exp $size((at : addrtype <: numtype))] @@ -56023,19 +46849,13 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp - (1 : nat <:> int)] [visit_exp (1 : nat <:> int)] [visit_exp 1] -[check_dims] at i i#33359 i#33387 instr*#954 n numtype#93 numtype#95 ref*#12 state#839 tableidx#71 val x z -[visit_exp `%;%`_config{state#839, `instr*#954`}(z, [`CONST`_instr{numtype#93}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#95}((at : addrtype <: numtype), `%`_num_{i#33359}(n)) `TABLE.FILL`_instr{tableidx#71}(x)])] -[visit_exp state#839] -[visit_id state#839] -[visit_exp `instr*#954`] -[visit_id instr*#954] -[visit_exp (z, [`CONST`_instr{numtype#93}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#95}((at : addrtype <: numtype), `%`_num_{i#33359}(n)) `TABLE.FILL`_instr{tableidx#71}(x)])] +[check_dims] at i n val x z +[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `TABLE.FILL`_instr(x)])] +[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `TABLE.FILL`_instr(x)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#93}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#95}((at : addrtype <: numtype), `%`_num_{i#33359}(n)) `TABLE.FILL`_instr{tableidx#71}(x)]] -[visit_exp `CONST`_instr{numtype#93}((at : addrtype <: numtype), i)] -[visit_exp numtype#93] -[visit_id numtype#93] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `TABLE.FILL`_instr(x)]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] [visit_exp ((at : addrtype <: numtype), i)] [visit_exp (at : addrtype <: numtype)] [visit_exp at] @@ -56045,60 +46865,44 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp (val : val <: instr)] [visit_exp val] [visit_id val] -[visit_exp `CONST`_instr{numtype#95}((at : addrtype <: numtype), `%`_num_{i#33359}(n))] -[visit_exp numtype#95] -[visit_id numtype#95] -[visit_exp ((at : addrtype <: numtype), `%`_num_{i#33359}(n))] +[visit_exp `CONST`_instr((at : addrtype <: numtype), `%`_num_(n))] +[visit_exp ((at : addrtype <: numtype), `%`_num_(n))] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] not free -[visit_exp `%`_num_{i#33359}(n)] -[visit_exp i#33359] -[visit_id i#33359] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `TABLE.FILL`_instr{tableidx#71}(x)] -[visit_exp tableidx#71] -[visit_id tableidx#71] +[visit_exp `TABLE.FILL`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[visit_exp ((i!`%`_num_{i#33387}.0 + n) > |$table(z, x).`REFS`_tableinst{`ref*#12`}|)] -[visit_exp (i!`%`_num_{i#33387}.0 + n)] -[visit_exp i!`%`_num_{i#33387}.0] -[visit_exp i!`%`_num_{i#33387}] +[visit_exp ((i!`%`_num_.0 + n) > |$table(z, x).`REFS`_tableinst|)] +[visit_exp (i!`%`_num_.0 + n)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#33387] -[visit_id i#33387] [visit_exp n] [visit_id n] not free -[visit_exp |$table(z, x).`REFS`_tableinst{`ref*#12`}|] -[visit_exp $table(z, x).`REFS`_tableinst{`ref*#12`}] +[visit_exp |$table(z, x).`REFS`_tableinst|] +[visit_exp $table(z, x).`REFS`_tableinst] [visit_exp $table(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `ref*#12`] -[visit_id ref*#12] -[check_dims] at i i#33437 instr*#966 n numtype#97 numtype#99 state#851 tableidx#73 val x z -[visit_exp `%;%`_config{state#851, `instr*#966`}(z, [`CONST`_instr{numtype#97}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#99}((at : addrtype <: numtype), `%`_num_{i#33437}(n)) `TABLE.FILL`_instr{tableidx#73}(x)])] -[visit_exp state#851] -[visit_id state#851] -[visit_exp `instr*#966`] -[visit_id instr*#966] -[visit_exp (z, [`CONST`_instr{numtype#97}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#99}((at : addrtype <: numtype), `%`_num_{i#33437}(n)) `TABLE.FILL`_instr{tableidx#73}(x)])] +[check_dims] at i n val x z +[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `TABLE.FILL`_instr(x)])] +[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `TABLE.FILL`_instr(x)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#97}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#99}((at : addrtype <: numtype), `%`_num_{i#33437}(n)) `TABLE.FILL`_instr{tableidx#73}(x)]] -[visit_exp `CONST`_instr{numtype#97}((at : addrtype <: numtype), i)] -[visit_exp numtype#97] -[visit_id numtype#97] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `TABLE.FILL`_instr(x)]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] [visit_exp ((at : addrtype <: numtype), i)] [visit_exp (at : addrtype <: numtype)] [visit_exp at] @@ -56108,22 +46912,16 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp (val : val <: instr)] [visit_exp val] [visit_id val] -[visit_exp `CONST`_instr{numtype#99}((at : addrtype <: numtype), `%`_num_{i#33437}(n))] -[visit_exp numtype#99] -[visit_id numtype#99] -[visit_exp ((at : addrtype <: numtype), `%`_num_{i#33437}(n))] +[visit_exp `CONST`_instr((at : addrtype <: numtype), `%`_num_(n))] +[visit_exp ((at : addrtype <: numtype), `%`_num_(n))] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] not free -[visit_exp `%`_num_{i#33437}(n)] -[visit_exp i#33437] -[visit_id i#33437] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `TABLE.FILL`_instr{tableidx#73}(x)] -[visit_exp tableidx#73] -[visit_id tableidx#73] +[visit_exp `TABLE.FILL`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -56132,19 +46930,13 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp n] [visit_id n] not free [visit_exp 0] -[check_dims] at i i#33489 i#33555 i#33565 i#33587 instr*#978 n numtype#101 numtype#103 numtype#105 numtype#107 numtype#109 state#863 tableidx#75 tableidx#77 tableidx#79 val x z -[visit_exp `%;%`_config{state#863, `instr*#978`}(z, [`CONST`_instr{numtype#101}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#103}((at : addrtype <: numtype), `%`_num_{i#33489}(n)) `TABLE.FILL`_instr{tableidx#75}(x)])] -[visit_exp state#863] -[visit_id state#863] -[visit_exp `instr*#978`] -[visit_id instr*#978] -[visit_exp (z, [`CONST`_instr{numtype#101}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#103}((at : addrtype <: numtype), `%`_num_{i#33489}(n)) `TABLE.FILL`_instr{tableidx#75}(x)])] +[check_dims] at i n val x z +[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `TABLE.FILL`_instr(x)])] +[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `TABLE.FILL`_instr(x)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#101}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#103}((at : addrtype <: numtype), `%`_num_{i#33489}(n)) `TABLE.FILL`_instr{tableidx#75}(x)]] -[visit_exp `CONST`_instr{numtype#101}((at : addrtype <: numtype), i)] -[visit_exp numtype#101] -[visit_id numtype#101] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `TABLE.FILL`_instr(x)]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] [visit_exp ((at : addrtype <: numtype), i)] [visit_exp (at : addrtype <: numtype)] [visit_exp at] @@ -56154,29 +46946,21 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp (val : val <: instr)] [visit_exp val] [visit_id val] -[visit_exp `CONST`_instr{numtype#103}((at : addrtype <: numtype), `%`_num_{i#33489}(n))] -[visit_exp numtype#103] -[visit_id numtype#103] -[visit_exp ((at : addrtype <: numtype), `%`_num_{i#33489}(n))] +[visit_exp `CONST`_instr((at : addrtype <: numtype), `%`_num_(n))] +[visit_exp ((at : addrtype <: numtype), `%`_num_(n))] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] not free -[visit_exp `%`_num_{i#33489}(n)] -[visit_exp i#33489] -[visit_id i#33489] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `TABLE.FILL`_instr{tableidx#75}(x)] -[visit_exp tableidx#75] -[visit_id tableidx#75] +[visit_exp `TABLE.FILL`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp [`CONST`_instr{numtype#105}((at : addrtype <: numtype), i) (val : val <: instr) `TABLE.SET`_instr{tableidx#77}(x) `CONST`_instr{numtype#107}((at : addrtype <: numtype), `%`_num_{i#33565}((i!`%`_num_{i#33555}.0 + 1))) (val : val <: instr) `CONST`_instr{numtype#109}((at : addrtype <: numtype), `%`_num_{i#33587}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `TABLE.FILL`_instr{tableidx#79}(x)]] -[visit_exp `CONST`_instr{numtype#105}((at : addrtype <: numtype), i)] -[visit_exp numtype#105] -[visit_id numtype#105] +[visit_exp [`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)]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] [visit_exp ((at : addrtype <: numtype), i)] [visit_exp (at : addrtype <: numtype)] [visit_exp at] @@ -56186,44 +46970,32 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp (val : val <: instr)] [visit_exp val] [visit_id val] not free -[visit_exp `TABLE.SET`_instr{tableidx#77}(x)] -[visit_exp tableidx#77] -[visit_id tableidx#77] +[visit_exp `TABLE.SET`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] not free -[visit_exp `CONST`_instr{numtype#107}((at : addrtype <: numtype), `%`_num_{i#33565}((i!`%`_num_{i#33555}.0 + 1)))] -[visit_exp numtype#107] -[visit_id numtype#107] -[visit_exp ((at : addrtype <: numtype), `%`_num_{i#33565}((i!`%`_num_{i#33555}.0 + 1)))] +[visit_exp `CONST`_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1)))] +[visit_exp ((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1)))] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] not free -[visit_exp `%`_num_{i#33565}((i!`%`_num_{i#33555}.0 + 1))] -[visit_exp i#33565] -[visit_id i#33565] -[visit_exp ((i!`%`_num_{i#33555}.0 + 1))] -[visit_exp (i!`%`_num_{i#33555}.0 + 1)] -[visit_exp i!`%`_num_{i#33555}.0] -[visit_exp i!`%`_num_{i#33555}] +[visit_exp `%`_num_((i!`%`_num_.0 + 1))] +[visit_exp ((i!`%`_num_.0 + 1))] +[visit_exp (i!`%`_num_.0 + 1)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#33555] -[visit_id i#33555] [visit_exp 1] [visit_exp (val : val <: instr)] [visit_exp val] [visit_id val] not free -[visit_exp `CONST`_instr{numtype#109}((at : addrtype <: numtype), `%`_num_{i#33587}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp numtype#109] -[visit_id numtype#109] -[visit_exp ((at : addrtype <: numtype), `%`_num_{i#33587}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp `CONST`_instr((at : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp ((at : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] not free -[visit_exp `%`_num_{i#33587}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp i#33587] -[visit_id i#33587] +[visit_exp `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] [visit_exp ((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] [visit_exp (((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] [visit_exp ((n : nat <:> int) - (1 : nat <:> int))] @@ -56232,56 +47004,40 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id n] not free [visit_exp (1 : nat <:> int)] [visit_exp 1] -[visit_exp `TABLE.FILL`_instr{tableidx#79}(x)] -[visit_exp tableidx#79] -[visit_id tableidx#79] +[visit_exp `TABLE.FILL`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] not free -[check_dims] at' at_1 at_2 i#33653 i#33695 i#33721 i_1 i_2 instr*#990 n numtype#111 numtype#113 numtype#115 ref*#13 ref*#14 state#875 tableidx#81 x_1 x_2 z -[visit_exp `%;%`_config{state#875, `instr*#990`}(z, [`CONST`_instr{numtype#111}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#113}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#115}((at' : addrtype <: numtype), `%`_num_{i#33653}(n)) `TABLE.COPY`_instr{tableidx#81}(x_1, x_2)])] -[visit_exp state#875] -[visit_id state#875] -[visit_exp `instr*#990`] -[visit_id instr*#990] -[visit_exp (z, [`CONST`_instr{numtype#111}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#113}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#115}((at' : addrtype <: numtype), `%`_num_{i#33653}(n)) `TABLE.COPY`_instr{tableidx#81}(x_1, x_2)])] +[check_dims] at' at_1 at_2 i_1 i_2 n x_1 x_2 z +[visit_exp `%;%`_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)])] +[visit_exp (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)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#111}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#113}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#115}((at' : addrtype <: numtype), `%`_num_{i#33653}(n)) `TABLE.COPY`_instr{tableidx#81}(x_1, x_2)]] -[visit_exp `CONST`_instr{numtype#111}((at_1 : addrtype <: numtype), i_1)] -[visit_exp numtype#111] -[visit_id numtype#111] +[visit_exp [`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)]] +[visit_exp `CONST`_instr((at_1 : addrtype <: numtype), i_1)] [visit_exp ((at_1 : addrtype <: numtype), i_1)] [visit_exp (at_1 : addrtype <: numtype)] [visit_exp at_1] [visit_id at_1] [visit_exp i_1] [visit_id i_1] -[visit_exp `CONST`_instr{numtype#113}((at_2 : addrtype <: numtype), i_2)] -[visit_exp numtype#113] -[visit_id numtype#113] +[visit_exp `CONST`_instr((at_2 : addrtype <: numtype), i_2)] [visit_exp ((at_2 : addrtype <: numtype), i_2)] [visit_exp (at_2 : addrtype <: numtype)] [visit_exp at_2] [visit_id at_2] [visit_exp i_2] [visit_id i_2] -[visit_exp `CONST`_instr{numtype#115}((at' : addrtype <: numtype), `%`_num_{i#33653}(n))] -[visit_exp numtype#115] -[visit_id numtype#115] -[visit_exp ((at' : addrtype <: numtype), `%`_num_{i#33653}(n))] +[visit_exp `CONST`_instr((at' : addrtype <: numtype), `%`_num_(n))] +[visit_exp ((at' : addrtype <: numtype), `%`_num_(n))] [visit_exp (at' : addrtype <: numtype)] [visit_exp at'] [visit_id at'] -[visit_exp `%`_num_{i#33653}(n)] -[visit_exp i#33653] -[visit_id i#33653] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `TABLE.COPY`_instr{tableidx#81}(x_1, x_2)] -[visit_exp tableidx#81] -[visit_id tableidx#81] +[visit_exp `TABLE.COPY`_instr(x_1, x_2)] [visit_exp (x_1, x_2)] [visit_exp x_1] [visit_id x_1] @@ -56290,89 +47046,67 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[visit_exp (((i_1!`%`_num_{i#33695}.0 + n) > |$table(z, x_1).`REFS`_tableinst{`ref*#13`}|) \/ ((i_2!`%`_num_{i#33721}.0 + n) > |$table(z, x_2).`REFS`_tableinst{`ref*#14`}|))] -[visit_exp ((i_1!`%`_num_{i#33695}.0 + n) > |$table(z, x_1).`REFS`_tableinst{`ref*#13`}|)] -[visit_exp (i_1!`%`_num_{i#33695}.0 + n)] -[visit_exp i_1!`%`_num_{i#33695}.0] -[visit_exp i_1!`%`_num_{i#33695}] +[visit_exp (((i_1!`%`_num_.0 + n) > |$table(z, x_1).`REFS`_tableinst|) \/ ((i_2!`%`_num_.0 + n) > |$table(z, x_2).`REFS`_tableinst|))] +[visit_exp ((i_1!`%`_num_.0 + n) > |$table(z, x_1).`REFS`_tableinst|)] +[visit_exp (i_1!`%`_num_.0 + n)] +[visit_exp i_1!`%`_num_.0] +[visit_exp i_1!`%`_num_] [visit_exp i_1] [visit_id i_1] not free -[visit_exp i#33695] -[visit_id i#33695] [visit_exp n] [visit_id n] not free -[visit_exp |$table(z, x_1).`REFS`_tableinst{`ref*#13`}|] -[visit_exp $table(z, x_1).`REFS`_tableinst{`ref*#13`}] +[visit_exp |$table(z, x_1).`REFS`_tableinst|] +[visit_exp $table(z, x_1).`REFS`_tableinst] [visit_exp $table(z, x_1)] [visit_exp z] [visit_id z] not free [visit_exp x_1] [visit_id x_1] not free -[visit_exp `ref*#13`] -[visit_id ref*#13] -[visit_exp ((i_2!`%`_num_{i#33721}.0 + n) > |$table(z, x_2).`REFS`_tableinst{`ref*#14`}|)] -[visit_exp (i_2!`%`_num_{i#33721}.0 + n)] -[visit_exp i_2!`%`_num_{i#33721}.0] -[visit_exp i_2!`%`_num_{i#33721}] +[visit_exp ((i_2!`%`_num_.0 + n) > |$table(z, x_2).`REFS`_tableinst|)] +[visit_exp (i_2!`%`_num_.0 + n)] +[visit_exp i_2!`%`_num_.0] +[visit_exp i_2!`%`_num_] [visit_exp i_2] [visit_id i_2] not free -[visit_exp i#33721] -[visit_id i#33721] [visit_exp n] [visit_id n] not free -[visit_exp |$table(z, x_2).`REFS`_tableinst{`ref*#14`}|] -[visit_exp $table(z, x_2).`REFS`_tableinst{`ref*#14`}] +[visit_exp |$table(z, x_2).`REFS`_tableinst|] +[visit_exp $table(z, x_2).`REFS`_tableinst] [visit_exp $table(z, x_2)] [visit_exp z] [visit_id z] not free [visit_exp x_2] [visit_id x_2] not free -[visit_exp `ref*#14`] -[visit_id ref*#14] -[check_dims] at' at_1 at_2 i#33785 i_1 i_2 instr*#1002 n numtype#117 numtype#119 numtype#121 state#887 tableidx#84 x y z -[visit_exp `%;%`_config{state#887, `instr*#1002`}(z, [`CONST`_instr{numtype#117}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#119}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#121}((at' : addrtype <: numtype), `%`_num_{i#33785}(n)) `TABLE.COPY`_instr{tableidx#84}(x, y)])] -[visit_exp state#887] -[visit_id state#887] -[visit_exp `instr*#1002`] -[visit_id instr*#1002] -[visit_exp (z, [`CONST`_instr{numtype#117}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#119}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#121}((at' : addrtype <: numtype), `%`_num_{i#33785}(n)) `TABLE.COPY`_instr{tableidx#84}(x, y)])] +[check_dims] at' at_1 at_2 i_1 i_2 n x y z +[visit_exp `%;%`_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)])] +[visit_exp (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)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#117}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#119}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#121}((at' : addrtype <: numtype), `%`_num_{i#33785}(n)) `TABLE.COPY`_instr{tableidx#84}(x, y)]] -[visit_exp `CONST`_instr{numtype#117}((at_1 : addrtype <: numtype), i_1)] -[visit_exp numtype#117] -[visit_id numtype#117] +[visit_exp [`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)]] +[visit_exp `CONST`_instr((at_1 : addrtype <: numtype), i_1)] [visit_exp ((at_1 : addrtype <: numtype), i_1)] [visit_exp (at_1 : addrtype <: numtype)] [visit_exp at_1] [visit_id at_1] [visit_exp i_1] [visit_id i_1] -[visit_exp `CONST`_instr{numtype#119}((at_2 : addrtype <: numtype), i_2)] -[visit_exp numtype#119] -[visit_id numtype#119] +[visit_exp `CONST`_instr((at_2 : addrtype <: numtype), i_2)] [visit_exp ((at_2 : addrtype <: numtype), i_2)] [visit_exp (at_2 : addrtype <: numtype)] [visit_exp at_2] [visit_id at_2] [visit_exp i_2] [visit_id i_2] -[visit_exp `CONST`_instr{numtype#121}((at' : addrtype <: numtype), `%`_num_{i#33785}(n))] -[visit_exp numtype#121] -[visit_id numtype#121] -[visit_exp ((at' : addrtype <: numtype), `%`_num_{i#33785}(n))] +[visit_exp `CONST`_instr((at' : addrtype <: numtype), `%`_num_(n))] +[visit_exp ((at' : addrtype <: numtype), `%`_num_(n))] [visit_exp (at' : addrtype <: numtype)] [visit_exp at'] [visit_id at'] -[visit_exp `%`_num_{i#33785}(n)] -[visit_exp i#33785] -[visit_id i#33785] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `TABLE.COPY`_instr{tableidx#84}(x, y)] -[visit_exp tableidx#84] -[visit_id tableidx#84] +[visit_exp `TABLE.COPY`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] @@ -56383,134 +47117,96 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp n] [visit_id n] not free [visit_exp 0] -[check_dims] at' at_1 at_2 i#33865 i#33971 i#33981 i#34007 i#34017 i#34039 i#34085 i#34095 i_1 i_2 instr*#1014 n numtype#123 numtype#125 numtype#127 numtype#129 numtype#131 numtype#133 numtype#135 numtype#137 state#899 tableidx#87 tableidx#90 tableidx#92 tableidx#94 x y z -[visit_exp `%;%`_config{state#899, `instr*#1014`}(z, [`CONST`_instr{numtype#123}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#125}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#127}((at' : addrtype <: numtype), `%`_num_{i#33865}(n)) `TABLE.COPY`_instr{tableidx#87}(x, y)])] -[visit_exp state#899] -[visit_id state#899] -[visit_exp `instr*#1014`] -[visit_id instr*#1014] -[visit_exp (z, [`CONST`_instr{numtype#123}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#125}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#127}((at' : addrtype <: numtype), `%`_num_{i#33865}(n)) `TABLE.COPY`_instr{tableidx#87}(x, y)])] +[check_dims] at' at_1 at_2 i_1 i_2 n x y z +[visit_exp `%;%`_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)])] +[visit_exp (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)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#123}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#125}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#127}((at' : addrtype <: numtype), `%`_num_{i#33865}(n)) `TABLE.COPY`_instr{tableidx#87}(x, y)]] -[visit_exp `CONST`_instr{numtype#123}((at_1 : addrtype <: numtype), i_1)] -[visit_exp numtype#123] -[visit_id numtype#123] +[visit_exp [`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)]] +[visit_exp `CONST`_instr((at_1 : addrtype <: numtype), i_1)] [visit_exp ((at_1 : addrtype <: numtype), i_1)] [visit_exp (at_1 : addrtype <: numtype)] [visit_exp at_1] [visit_id at_1] [visit_exp i_1] [visit_id i_1] -[visit_exp `CONST`_instr{numtype#125}((at_2 : addrtype <: numtype), i_2)] -[visit_exp numtype#125] -[visit_id numtype#125] +[visit_exp `CONST`_instr((at_2 : addrtype <: numtype), i_2)] [visit_exp ((at_2 : addrtype <: numtype), i_2)] [visit_exp (at_2 : addrtype <: numtype)] [visit_exp at_2] [visit_id at_2] [visit_exp i_2] [visit_id i_2] -[visit_exp `CONST`_instr{numtype#127}((at' : addrtype <: numtype), `%`_num_{i#33865}(n))] -[visit_exp numtype#127] -[visit_id numtype#127] -[visit_exp ((at' : addrtype <: numtype), `%`_num_{i#33865}(n))] +[visit_exp `CONST`_instr((at' : addrtype <: numtype), `%`_num_(n))] +[visit_exp ((at' : addrtype <: numtype), `%`_num_(n))] [visit_exp (at' : addrtype <: numtype)] [visit_exp at'] [visit_id at'] -[visit_exp `%`_num_{i#33865}(n)] -[visit_exp i#33865] -[visit_id i#33865] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `TABLE.COPY`_instr{tableidx#87}(x, y)] -[visit_exp tableidx#87] -[visit_id tableidx#87] +[visit_exp `TABLE.COPY`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] [visit_exp y] [visit_id y] -[visit_exp [`CONST`_instr{numtype#129}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#131}((at_2 : addrtype <: numtype), i_2) `TABLE.GET`_instr{tableidx#90}(y) `TABLE.SET`_instr{tableidx#92}(x) `CONST`_instr{numtype#133}((at_1 : addrtype <: numtype), `%`_num_{i#33981}((i_1!`%`_num_{i#33971}.0 + 1))) `CONST`_instr{numtype#135}((at_2 : addrtype <: numtype), `%`_num_{i#34017}((i_2!`%`_num_{i#34007}.0 + 1))) `CONST`_instr{numtype#137}((at' : addrtype <: numtype), `%`_num_{i#34039}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `TABLE.COPY`_instr{tableidx#94}(x, y)]] -[visit_exp `CONST`_instr{numtype#129}((at_1 : addrtype <: numtype), i_1)] -[visit_exp numtype#129] -[visit_id numtype#129] +[visit_exp [`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)]] +[visit_exp `CONST`_instr((at_1 : addrtype <: numtype), i_1)] [visit_exp ((at_1 : addrtype <: numtype), i_1)] [visit_exp (at_1 : addrtype <: numtype)] [visit_exp at_1] [visit_id at_1] not free [visit_exp i_1] [visit_id i_1] not free -[visit_exp `CONST`_instr{numtype#131}((at_2 : addrtype <: numtype), i_2)] -[visit_exp numtype#131] -[visit_id numtype#131] +[visit_exp `CONST`_instr((at_2 : addrtype <: numtype), i_2)] [visit_exp ((at_2 : addrtype <: numtype), i_2)] [visit_exp (at_2 : addrtype <: numtype)] [visit_exp at_2] [visit_id at_2] not free [visit_exp i_2] [visit_id i_2] not free -[visit_exp `TABLE.GET`_instr{tableidx#90}(y)] -[visit_exp tableidx#90] -[visit_id tableidx#90] +[visit_exp `TABLE.GET`_instr(y)] [visit_exp (y)] [visit_exp y] [visit_id y] not free -[visit_exp `TABLE.SET`_instr{tableidx#92}(x)] -[visit_exp tableidx#92] -[visit_id tableidx#92] +[visit_exp `TABLE.SET`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] not free -[visit_exp `CONST`_instr{numtype#133}((at_1 : addrtype <: numtype), `%`_num_{i#33981}((i_1!`%`_num_{i#33971}.0 + 1)))] -[visit_exp numtype#133] -[visit_id numtype#133] -[visit_exp ((at_1 : addrtype <: numtype), `%`_num_{i#33981}((i_1!`%`_num_{i#33971}.0 + 1)))] +[visit_exp `CONST`_instr((at_1 : addrtype <: numtype), `%`_num_((i_1!`%`_num_.0 + 1)))] +[visit_exp ((at_1 : addrtype <: numtype), `%`_num_((i_1!`%`_num_.0 + 1)))] [visit_exp (at_1 : addrtype <: numtype)] [visit_exp at_1] [visit_id at_1] not free -[visit_exp `%`_num_{i#33981}((i_1!`%`_num_{i#33971}.0 + 1))] -[visit_exp i#33981] -[visit_id i#33981] -[visit_exp ((i_1!`%`_num_{i#33971}.0 + 1))] -[visit_exp (i_1!`%`_num_{i#33971}.0 + 1)] -[visit_exp i_1!`%`_num_{i#33971}.0] -[visit_exp i_1!`%`_num_{i#33971}] +[visit_exp `%`_num_((i_1!`%`_num_.0 + 1))] +[visit_exp ((i_1!`%`_num_.0 + 1))] +[visit_exp (i_1!`%`_num_.0 + 1)] +[visit_exp i_1!`%`_num_.0] +[visit_exp i_1!`%`_num_] [visit_exp i_1] [visit_id i_1] not free -[visit_exp i#33971] -[visit_id i#33971] [visit_exp 1] -[visit_exp `CONST`_instr{numtype#135}((at_2 : addrtype <: numtype), `%`_num_{i#34017}((i_2!`%`_num_{i#34007}.0 + 1)))] -[visit_exp numtype#135] -[visit_id numtype#135] -[visit_exp ((at_2 : addrtype <: numtype), `%`_num_{i#34017}((i_2!`%`_num_{i#34007}.0 + 1)))] +[visit_exp `CONST`_instr((at_2 : addrtype <: numtype), `%`_num_((i_2!`%`_num_.0 + 1)))] +[visit_exp ((at_2 : addrtype <: numtype), `%`_num_((i_2!`%`_num_.0 + 1)))] [visit_exp (at_2 : addrtype <: numtype)] [visit_exp at_2] [visit_id at_2] not free -[visit_exp `%`_num_{i#34017}((i_2!`%`_num_{i#34007}.0 + 1))] -[visit_exp i#34017] -[visit_id i#34017] -[visit_exp ((i_2!`%`_num_{i#34007}.0 + 1))] -[visit_exp (i_2!`%`_num_{i#34007}.0 + 1)] -[visit_exp i_2!`%`_num_{i#34007}.0] -[visit_exp i_2!`%`_num_{i#34007}] +[visit_exp `%`_num_((i_2!`%`_num_.0 + 1))] +[visit_exp ((i_2!`%`_num_.0 + 1))] +[visit_exp (i_2!`%`_num_.0 + 1)] +[visit_exp i_2!`%`_num_.0] +[visit_exp i_2!`%`_num_] [visit_exp i_2] [visit_id i_2] not free -[visit_exp i#34007] -[visit_id i#34007] [visit_exp 1] -[visit_exp `CONST`_instr{numtype#137}((at' : addrtype <: numtype), `%`_num_{i#34039}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp numtype#137] -[visit_id numtype#137] -[visit_exp ((at' : addrtype <: numtype), `%`_num_{i#34039}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp `CONST`_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp ((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] [visit_exp (at' : addrtype <: numtype)] [visit_exp at'] [visit_id at'] not free -[visit_exp `%`_num_{i#34039}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp i#34039] -[visit_id i#34039] +[visit_exp `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] [visit_exp ((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] [visit_exp (((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] [visit_exp ((n : nat <:> int) - (1 : nat <:> int))] @@ -56519,167 +47215,123 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id n] not free [visit_exp (1 : nat <:> int)] [visit_exp 1] -[visit_exp `TABLE.COPY`_instr{tableidx#94}(x, y)] -[visit_exp tableidx#94] -[visit_id tableidx#94] +[visit_exp `TABLE.COPY`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] not free [visit_exp y] [visit_id y] not free -[visit_exp (i_1!`%`_num_{i#34085}.0 <= i_2!`%`_num_{i#34095}.0)] -[visit_exp i_1!`%`_num_{i#34085}.0] -[visit_exp i_1!`%`_num_{i#34085}] +[visit_exp (i_1!`%`_num_.0 <= i_2!`%`_num_.0)] +[visit_exp i_1!`%`_num_.0] +[visit_exp i_1!`%`_num_] [visit_exp i_1] [visit_id i_1] not free -[visit_exp i#34085] -[visit_id i#34085] -[visit_exp i_2!`%`_num_{i#34095}.0] -[visit_exp i_2!`%`_num_{i#34095}] +[visit_exp i_2!`%`_num_.0] +[visit_exp i_2!`%`_num_] [visit_exp i_2] [visit_id i_2] not free -[visit_exp i#34095] -[visit_id i#34095] -[check_dims] at' at_1 at_2 i#34147 i#34201 i#34211 i#34237 i#34247 i#34321 i_1 i_2 instr*#1026 n numtype#139 numtype#141 numtype#143 numtype#145 numtype#147 numtype#149 numtype#151 numtype#153 state#911 tableidx#100 tableidx#102 tableidx#104 tableidx#97 x y z -[visit_exp `%;%`_config{state#911, `instr*#1026`}(z, [`CONST`_instr{numtype#139}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#141}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#143}((at' : addrtype <: numtype), `%`_num_{i#34147}(n)) `TABLE.COPY`_instr{tableidx#97}(x, y)])] -[visit_exp state#911] -[visit_id state#911] -[visit_exp `instr*#1026`] -[visit_id instr*#1026] -[visit_exp (z, [`CONST`_instr{numtype#139}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#141}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#143}((at' : addrtype <: numtype), `%`_num_{i#34147}(n)) `TABLE.COPY`_instr{tableidx#97}(x, y)])] +[check_dims] at' at_1 at_2 i_1 i_2 n x y z +[visit_exp `%;%`_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)])] +[visit_exp (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)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#139}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#141}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#143}((at' : addrtype <: numtype), `%`_num_{i#34147}(n)) `TABLE.COPY`_instr{tableidx#97}(x, y)]] -[visit_exp `CONST`_instr{numtype#139}((at_1 : addrtype <: numtype), i_1)] -[visit_exp numtype#139] -[visit_id numtype#139] +[visit_exp [`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)]] +[visit_exp `CONST`_instr((at_1 : addrtype <: numtype), i_1)] [visit_exp ((at_1 : addrtype <: numtype), i_1)] [visit_exp (at_1 : addrtype <: numtype)] [visit_exp at_1] [visit_id at_1] [visit_exp i_1] [visit_id i_1] -[visit_exp `CONST`_instr{numtype#141}((at_2 : addrtype <: numtype), i_2)] -[visit_exp numtype#141] -[visit_id numtype#141] +[visit_exp `CONST`_instr((at_2 : addrtype <: numtype), i_2)] [visit_exp ((at_2 : addrtype <: numtype), i_2)] [visit_exp (at_2 : addrtype <: numtype)] [visit_exp at_2] [visit_id at_2] [visit_exp i_2] [visit_id i_2] -[visit_exp `CONST`_instr{numtype#143}((at' : addrtype <: numtype), `%`_num_{i#34147}(n))] -[visit_exp numtype#143] -[visit_id numtype#143] -[visit_exp ((at' : addrtype <: numtype), `%`_num_{i#34147}(n))] +[visit_exp `CONST`_instr((at' : addrtype <: numtype), `%`_num_(n))] +[visit_exp ((at' : addrtype <: numtype), `%`_num_(n))] [visit_exp (at' : addrtype <: numtype)] [visit_exp at'] [visit_id at'] -[visit_exp `%`_num_{i#34147}(n)] -[visit_exp i#34147] -[visit_id i#34147] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `TABLE.COPY`_instr{tableidx#97}(x, y)] -[visit_exp tableidx#97] -[visit_id tableidx#97] +[visit_exp `TABLE.COPY`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] [visit_exp y] [visit_id y] -[visit_exp [`CONST`_instr{numtype#145}((at_1 : addrtype <: numtype), `%`_num_{i#34211}(((((i_1!`%`_num_{i#34201}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `CONST`_instr{numtype#147}((at_2 : addrtype <: numtype), `%`_num_{i#34247}(((((i_2!`%`_num_{i#34237}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `TABLE.GET`_instr{tableidx#100}(y) `TABLE.SET`_instr{tableidx#102}(x) `CONST`_instr{numtype#149}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#151}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#153}((at' : addrtype <: numtype), `%`_num_{i#34321}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `TABLE.COPY`_instr{tableidx#104}(x, y)]] -[visit_exp `CONST`_instr{numtype#145}((at_1 : addrtype <: numtype), `%`_num_{i#34211}(((((i_1!`%`_num_{i#34201}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp numtype#145] -[visit_id numtype#145] -[visit_exp ((at_1 : addrtype <: numtype), `%`_num_{i#34211}(((((i_1!`%`_num_{i#34201}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp [`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)]] +[visit_exp `CONST`_instr((at_1 : addrtype <: numtype), `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp ((at_1 : addrtype <: numtype), `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] [visit_exp (at_1 : addrtype <: numtype)] [visit_exp at_1] [visit_id at_1] not free -[visit_exp `%`_num_{i#34211}(((((i_1!`%`_num_{i#34201}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp i#34211] -[visit_id i#34211] -[visit_exp (((((i_1!`%`_num_{i#34201}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp ((((i_1!`%`_num_{i#34201}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp (((i_1!`%`_num_{i#34201}.0 + n) : nat <:> int) - (1 : nat <:> int))] -[visit_exp ((i_1!`%`_num_{i#34201}.0 + n) : nat <:> int)] -[visit_exp (i_1!`%`_num_{i#34201}.0 + n)] -[visit_exp i_1!`%`_num_{i#34201}.0] -[visit_exp i_1!`%`_num_{i#34201}] +[visit_exp `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp (((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp ((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp (((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int))] +[visit_exp ((i_1!`%`_num_.0 + n) : nat <:> int)] +[visit_exp (i_1!`%`_num_.0 + n)] +[visit_exp i_1!`%`_num_.0] +[visit_exp i_1!`%`_num_] [visit_exp i_1] [visit_id i_1] not free -[visit_exp i#34201] -[visit_id i#34201] [visit_exp n] [visit_id n] not free [visit_exp (1 : nat <:> int)] [visit_exp 1] -[visit_exp `CONST`_instr{numtype#147}((at_2 : addrtype <: numtype), `%`_num_{i#34247}(((((i_2!`%`_num_{i#34237}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp numtype#147] -[visit_id numtype#147] -[visit_exp ((at_2 : addrtype <: numtype), `%`_num_{i#34247}(((((i_2!`%`_num_{i#34237}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp `CONST`_instr((at_2 : addrtype <: numtype), `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp ((at_2 : addrtype <: numtype), `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] [visit_exp (at_2 : addrtype <: numtype)] [visit_exp at_2] [visit_id at_2] not free -[visit_exp `%`_num_{i#34247}(((((i_2!`%`_num_{i#34237}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp i#34247] -[visit_id i#34247] -[visit_exp (((((i_2!`%`_num_{i#34237}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp ((((i_2!`%`_num_{i#34237}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp (((i_2!`%`_num_{i#34237}.0 + n) : nat <:> int) - (1 : nat <:> int))] -[visit_exp ((i_2!`%`_num_{i#34237}.0 + n) : nat <:> int)] -[visit_exp (i_2!`%`_num_{i#34237}.0 + n)] -[visit_exp i_2!`%`_num_{i#34237}.0] -[visit_exp i_2!`%`_num_{i#34237}] +[visit_exp `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp (((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp ((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp (((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int))] +[visit_exp ((i_2!`%`_num_.0 + n) : nat <:> int)] +[visit_exp (i_2!`%`_num_.0 + n)] +[visit_exp i_2!`%`_num_.0] +[visit_exp i_2!`%`_num_] [visit_exp i_2] [visit_id i_2] not free -[visit_exp i#34237] -[visit_id i#34237] [visit_exp n] [visit_id n] not free [visit_exp (1 : nat <:> int)] [visit_exp 1] -[visit_exp `TABLE.GET`_instr{tableidx#100}(y)] -[visit_exp tableidx#100] -[visit_id tableidx#100] +[visit_exp `TABLE.GET`_instr(y)] [visit_exp (y)] [visit_exp y] [visit_id y] not free -[visit_exp `TABLE.SET`_instr{tableidx#102}(x)] -[visit_exp tableidx#102] -[visit_id tableidx#102] +[visit_exp `TABLE.SET`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] not free -[visit_exp `CONST`_instr{numtype#149}((at_1 : addrtype <: numtype), i_1)] -[visit_exp numtype#149] -[visit_id numtype#149] +[visit_exp `CONST`_instr((at_1 : addrtype <: numtype), i_1)] [visit_exp ((at_1 : addrtype <: numtype), i_1)] [visit_exp (at_1 : addrtype <: numtype)] [visit_exp at_1] [visit_id at_1] not free [visit_exp i_1] [visit_id i_1] not free -[visit_exp `CONST`_instr{numtype#151}((at_2 : addrtype <: numtype), i_2)] -[visit_exp numtype#151] -[visit_id numtype#151] +[visit_exp `CONST`_instr((at_2 : addrtype <: numtype), i_2)] [visit_exp ((at_2 : addrtype <: numtype), i_2)] [visit_exp (at_2 : addrtype <: numtype)] [visit_exp at_2] [visit_id at_2] not free [visit_exp i_2] [visit_id i_2] not free -[visit_exp `CONST`_instr{numtype#153}((at' : addrtype <: numtype), `%`_num_{i#34321}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp numtype#153] -[visit_id numtype#153] -[visit_exp ((at' : addrtype <: numtype), `%`_num_{i#34321}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp `CONST`_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp ((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] [visit_exp (at' : addrtype <: numtype)] [visit_exp at'] [visit_id at'] not free -[visit_exp `%`_num_{i#34321}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp i#34321] -[visit_id i#34321] +[visit_exp `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] [visit_exp ((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] [visit_exp (((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] [visit_exp ((n : nat <:> int) - (1 : nat <:> int))] @@ -56688,58 +47340,40 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id n] not free [visit_exp (1 : nat <:> int)] [visit_exp 1] -[visit_exp `TABLE.COPY`_instr{tableidx#104}(x, y)] -[visit_exp tableidx#104] -[visit_id tableidx#104] +[visit_exp `TABLE.COPY`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] not free [visit_exp y] [visit_id y] not free -[check_dims] at elemidx#17 i i#34401 i#34443 i#34469 instr*#1038 j n numtype#155 numtype#157 numtype#159 ref*#15 ref*#16 state#923 tableidx#107 x y z -[visit_exp `%;%`_config{state#923, `instr*#1038`}(z, [`CONST`_instr{numtype#155}((at : addrtype <: numtype), i) `CONST`_instr{numtype#157}(`I32`_numtype, j) `CONST`_instr{numtype#159}(`I32`_numtype, `%`_num_{i#34401}(n)) `TABLE.INIT`_instr{tableidx#107, elemidx#17}(x, y)])] -[visit_exp state#923] -[visit_id state#923] -[visit_exp `instr*#1038`] -[visit_id instr*#1038] -[visit_exp (z, [`CONST`_instr{numtype#155}((at : addrtype <: numtype), i) `CONST`_instr{numtype#157}(`I32`_numtype, j) `CONST`_instr{numtype#159}(`I32`_numtype, `%`_num_{i#34401}(n)) `TABLE.INIT`_instr{tableidx#107, elemidx#17}(x, y)])] +[check_dims] at i j n x y z +[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(`I32`_numtype, j) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `TABLE.INIT`_instr(x, y)])] +[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(`I32`_numtype, j) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `TABLE.INIT`_instr(x, y)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#155}((at : addrtype <: numtype), i) `CONST`_instr{numtype#157}(`I32`_numtype, j) `CONST`_instr{numtype#159}(`I32`_numtype, `%`_num_{i#34401}(n)) `TABLE.INIT`_instr{tableidx#107, elemidx#17}(x, y)]] -[visit_exp `CONST`_instr{numtype#155}((at : addrtype <: numtype), i)] -[visit_exp numtype#155] -[visit_id numtype#155] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(`I32`_numtype, j) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `TABLE.INIT`_instr(x, y)]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] [visit_exp ((at : addrtype <: numtype), i)] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] [visit_exp i] [visit_id i] -[visit_exp `CONST`_instr{numtype#157}(`I32`_numtype, j)] -[visit_exp numtype#157] -[visit_id numtype#157] +[visit_exp `CONST`_instr(`I32`_numtype, j)] [visit_exp (`I32`_numtype, j)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp j] [visit_id j] -[visit_exp `CONST`_instr{numtype#159}(`I32`_numtype, `%`_num_{i#34401}(n))] -[visit_exp numtype#159] -[visit_id numtype#159] -[visit_exp (`I32`_numtype, `%`_num_{i#34401}(n))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] +[visit_exp (`I32`_numtype, `%`_num_(n))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#34401}(n)] -[visit_exp i#34401] -[visit_id i#34401] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `TABLE.INIT`_instr{tableidx#107, elemidx#17}(x, y)] -[visit_exp tableidx#107] -[visit_id tableidx#107] -[visit_exp elemidx#17] -[visit_id elemidx#17] +[visit_exp `TABLE.INIT`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] @@ -56748,89 +47382,65 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[visit_exp (((i!`%`_num_{i#34443}.0 + n) > |$table(z, x).`REFS`_tableinst{`ref*#15`}|) \/ ((j!`%`_num_{i#34469}.0 + n) > |$elem(z, y).`REFS`_eleminst{`ref*#16`}|))] -[visit_exp ((i!`%`_num_{i#34443}.0 + n) > |$table(z, x).`REFS`_tableinst{`ref*#15`}|)] -[visit_exp (i!`%`_num_{i#34443}.0 + n)] -[visit_exp i!`%`_num_{i#34443}.0] -[visit_exp i!`%`_num_{i#34443}] +[visit_exp (((i!`%`_num_.0 + n) > |$table(z, x).`REFS`_tableinst|) \/ ((j!`%`_num_.0 + n) > |$elem(z, y).`REFS`_eleminst|))] +[visit_exp ((i!`%`_num_.0 + n) > |$table(z, x).`REFS`_tableinst|)] +[visit_exp (i!`%`_num_.0 + n)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#34443] -[visit_id i#34443] [visit_exp n] [visit_id n] not free -[visit_exp |$table(z, x).`REFS`_tableinst{`ref*#15`}|] -[visit_exp $table(z, x).`REFS`_tableinst{`ref*#15`}] +[visit_exp |$table(z, x).`REFS`_tableinst|] +[visit_exp $table(z, x).`REFS`_tableinst] [visit_exp $table(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `ref*#15`] -[visit_id ref*#15] -[visit_exp ((j!`%`_num_{i#34469}.0 + n) > |$elem(z, y).`REFS`_eleminst{`ref*#16`}|)] -[visit_exp (j!`%`_num_{i#34469}.0 + n)] -[visit_exp j!`%`_num_{i#34469}.0] -[visit_exp j!`%`_num_{i#34469}] +[visit_exp ((j!`%`_num_.0 + n) > |$elem(z, y).`REFS`_eleminst|)] +[visit_exp (j!`%`_num_.0 + n)] +[visit_exp j!`%`_num_.0] +[visit_exp j!`%`_num_] [visit_exp j] [visit_id j] not free -[visit_exp i#34469] -[visit_id i#34469] [visit_exp n] [visit_id n] not free -[visit_exp |$elem(z, y).`REFS`_eleminst{`ref*#16`}|] -[visit_exp $elem(z, y).`REFS`_eleminst{`ref*#16`}] +[visit_exp |$elem(z, y).`REFS`_eleminst|] +[visit_exp $elem(z, y).`REFS`_eleminst] [visit_exp $elem(z, y)] [visit_exp z] [visit_id z] not free [visit_exp y] [visit_id y] not free -[visit_exp `ref*#16`] -[visit_id ref*#16] -[check_dims] at elemidx#19 i i#34533 instr*#1050 j n numtype#161 numtype#163 numtype#165 state#935 tableidx#109 x y z -[visit_exp `%;%`_config{state#935, `instr*#1050`}(z, [`CONST`_instr{numtype#161}((at : addrtype <: numtype), i) `CONST`_instr{numtype#163}(`I32`_numtype, j) `CONST`_instr{numtype#165}(`I32`_numtype, `%`_num_{i#34533}(n)) `TABLE.INIT`_instr{tableidx#109, elemidx#19}(x, y)])] -[visit_exp state#935] -[visit_id state#935] -[visit_exp `instr*#1050`] -[visit_id instr*#1050] -[visit_exp (z, [`CONST`_instr{numtype#161}((at : addrtype <: numtype), i) `CONST`_instr{numtype#163}(`I32`_numtype, j) `CONST`_instr{numtype#165}(`I32`_numtype, `%`_num_{i#34533}(n)) `TABLE.INIT`_instr{tableidx#109, elemidx#19}(x, y)])] +[check_dims] at i j n x y z +[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(`I32`_numtype, j) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `TABLE.INIT`_instr(x, y)])] +[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(`I32`_numtype, j) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `TABLE.INIT`_instr(x, y)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#161}((at : addrtype <: numtype), i) `CONST`_instr{numtype#163}(`I32`_numtype, j) `CONST`_instr{numtype#165}(`I32`_numtype, `%`_num_{i#34533}(n)) `TABLE.INIT`_instr{tableidx#109, elemidx#19}(x, y)]] -[visit_exp `CONST`_instr{numtype#161}((at : addrtype <: numtype), i)] -[visit_exp numtype#161] -[visit_id numtype#161] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(`I32`_numtype, j) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `TABLE.INIT`_instr(x, y)]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] [visit_exp ((at : addrtype <: numtype), i)] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] [visit_exp i] [visit_id i] -[visit_exp `CONST`_instr{numtype#163}(`I32`_numtype, j)] -[visit_exp numtype#163] -[visit_id numtype#163] +[visit_exp `CONST`_instr(`I32`_numtype, j)] [visit_exp (`I32`_numtype, j)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp j] [visit_id j] -[visit_exp `CONST`_instr{numtype#165}(`I32`_numtype, `%`_num_{i#34533}(n))] -[visit_exp numtype#165] -[visit_id numtype#165] -[visit_exp (`I32`_numtype, `%`_num_{i#34533}(n))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] +[visit_exp (`I32`_numtype, `%`_num_(n))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#34533}(n)] -[visit_exp i#34533] -[visit_id i#34533] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `TABLE.INIT`_instr{tableidx#109, elemidx#19}(x, y)] -[visit_exp tableidx#109] -[visit_id tableidx#109] -[visit_exp elemidx#19] -[visit_id elemidx#19] +[visit_exp `TABLE.INIT`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] @@ -56841,133 +47451,93 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp n] [visit_id n] not free [visit_exp 0] -[check_dims] at elemidx#21 elemidx#23 i i#34613 i#34675 i#34715 i#34725 i#34751 i#34761 i#34783 instr*#1062 j n numtype#167 numtype#169 numtype#171 numtype#173 numtype#175 numtype#177 numtype#179 ref*#17 state#947 tableidx#111 tableidx#113 tableidx#115 x y z -[visit_exp `%;%`_config{state#947, `instr*#1062`}(z, [`CONST`_instr{numtype#167}((at : addrtype <: numtype), i) `CONST`_instr{numtype#169}(`I32`_numtype, j) `CONST`_instr{numtype#171}(`I32`_numtype, `%`_num_{i#34613}(n)) `TABLE.INIT`_instr{tableidx#111, elemidx#21}(x, y)])] -[visit_exp state#947] -[visit_id state#947] -[visit_exp `instr*#1062`] -[visit_id instr*#1062] -[visit_exp (z, [`CONST`_instr{numtype#167}((at : addrtype <: numtype), i) `CONST`_instr{numtype#169}(`I32`_numtype, j) `CONST`_instr{numtype#171}(`I32`_numtype, `%`_num_{i#34613}(n)) `TABLE.INIT`_instr{tableidx#111, elemidx#21}(x, y)])] +[check_dims] at i j n x y z +[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(`I32`_numtype, j) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `TABLE.INIT`_instr(x, y)])] +[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(`I32`_numtype, j) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `TABLE.INIT`_instr(x, y)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#167}((at : addrtype <: numtype), i) `CONST`_instr{numtype#169}(`I32`_numtype, j) `CONST`_instr{numtype#171}(`I32`_numtype, `%`_num_{i#34613}(n)) `TABLE.INIT`_instr{tableidx#111, elemidx#21}(x, y)]] -[visit_exp `CONST`_instr{numtype#167}((at : addrtype <: numtype), i)] -[visit_exp numtype#167] -[visit_id numtype#167] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(`I32`_numtype, j) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `TABLE.INIT`_instr(x, y)]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] [visit_exp ((at : addrtype <: numtype), i)] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] [visit_exp i] [visit_id i] -[visit_exp `CONST`_instr{numtype#169}(`I32`_numtype, j)] -[visit_exp numtype#169] -[visit_id numtype#169] +[visit_exp `CONST`_instr(`I32`_numtype, j)] [visit_exp (`I32`_numtype, j)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp j] [visit_id j] -[visit_exp `CONST`_instr{numtype#171}(`I32`_numtype, `%`_num_{i#34613}(n))] -[visit_exp numtype#171] -[visit_id numtype#171] -[visit_exp (`I32`_numtype, `%`_num_{i#34613}(n))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] +[visit_exp (`I32`_numtype, `%`_num_(n))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#34613}(n)] -[visit_exp i#34613] -[visit_id i#34613] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `TABLE.INIT`_instr{tableidx#111, elemidx#21}(x, y)] -[visit_exp tableidx#111] -[visit_id tableidx#111] -[visit_exp elemidx#21] -[visit_id elemidx#21] +[visit_exp `TABLE.INIT`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] [visit_exp y] [visit_id y] -[visit_exp [`CONST`_instr{numtype#173}((at : addrtype <: numtype), i) ($elem(z, y).`REFS`_eleminst{`ref*#17`}[j!`%`_num_{i#34675}.0] : ref <: instr) `TABLE.SET`_instr{tableidx#113}(x) `CONST`_instr{numtype#175}((at : addrtype <: numtype), `%`_num_{i#34725}((i!`%`_num_{i#34715}.0 + 1))) `CONST`_instr{numtype#177}(`I32`_numtype, `%`_num_{i#34761}((j!`%`_num_{i#34751}.0 + 1))) `CONST`_instr{numtype#179}(`I32`_numtype, `%`_num_{i#34783}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `TABLE.INIT`_instr{tableidx#115, elemidx#23}(x, y)]] -[visit_exp `CONST`_instr{numtype#173}((at : addrtype <: numtype), i)] -[visit_exp numtype#173] -[visit_id numtype#173] +[visit_exp [`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)]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] [visit_exp ((at : addrtype <: numtype), i)] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] not free [visit_exp i] [visit_id i] not free -[visit_exp ($elem(z, y).`REFS`_eleminst{`ref*#17`}[j!`%`_num_{i#34675}.0] : ref <: instr)] -[visit_exp $elem(z, y).`REFS`_eleminst{`ref*#17`}[j!`%`_num_{i#34675}.0]] -[visit_exp $elem(z, y).`REFS`_eleminst{`ref*#17`}] +[visit_exp ($elem(z, y).`REFS`_eleminst[j!`%`_num_.0] : ref <: instr)] +[visit_exp $elem(z, y).`REFS`_eleminst[j!`%`_num_.0]] +[visit_exp $elem(z, y).`REFS`_eleminst] [visit_exp $elem(z, y)] [visit_exp z] [visit_id z] not free [visit_exp y] [visit_id y] not free -[visit_exp `ref*#17`] -[visit_id ref*#17] -[visit_exp j!`%`_num_{i#34675}.0] -[visit_exp j!`%`_num_{i#34675}] +[visit_exp j!`%`_num_.0] +[visit_exp j!`%`_num_] [visit_exp j] [visit_id j] not free -[visit_exp i#34675] -[visit_id i#34675] -[visit_exp `TABLE.SET`_instr{tableidx#113}(x)] -[visit_exp tableidx#113] -[visit_id tableidx#113] +[visit_exp `TABLE.SET`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] not free -[visit_exp `CONST`_instr{numtype#175}((at : addrtype <: numtype), `%`_num_{i#34725}((i!`%`_num_{i#34715}.0 + 1)))] -[visit_exp numtype#175] -[visit_id numtype#175] -[visit_exp ((at : addrtype <: numtype), `%`_num_{i#34725}((i!`%`_num_{i#34715}.0 + 1)))] +[visit_exp `CONST`_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1)))] +[visit_exp ((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1)))] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] not free -[visit_exp `%`_num_{i#34725}((i!`%`_num_{i#34715}.0 + 1))] -[visit_exp i#34725] -[visit_id i#34725] -[visit_exp ((i!`%`_num_{i#34715}.0 + 1))] -[visit_exp (i!`%`_num_{i#34715}.0 + 1)] -[visit_exp i!`%`_num_{i#34715}.0] -[visit_exp i!`%`_num_{i#34715}] +[visit_exp `%`_num_((i!`%`_num_.0 + 1))] +[visit_exp ((i!`%`_num_.0 + 1))] +[visit_exp (i!`%`_num_.0 + 1)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#34715] -[visit_id i#34715] [visit_exp 1] -[visit_exp `CONST`_instr{numtype#177}(`I32`_numtype, `%`_num_{i#34761}((j!`%`_num_{i#34751}.0 + 1)))] -[visit_exp numtype#177] -[visit_id numtype#177] -[visit_exp (`I32`_numtype, `%`_num_{i#34761}((j!`%`_num_{i#34751}.0 + 1)))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_((j!`%`_num_.0 + 1)))] +[visit_exp (`I32`_numtype, `%`_num_((j!`%`_num_.0 + 1)))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#34761}((j!`%`_num_{i#34751}.0 + 1))] -[visit_exp i#34761] -[visit_id i#34761] -[visit_exp ((j!`%`_num_{i#34751}.0 + 1))] -[visit_exp (j!`%`_num_{i#34751}.0 + 1)] -[visit_exp j!`%`_num_{i#34751}.0] -[visit_exp j!`%`_num_{i#34751}] +[visit_exp `%`_num_((j!`%`_num_.0 + 1))] +[visit_exp ((j!`%`_num_.0 + 1))] +[visit_exp (j!`%`_num_.0 + 1)] +[visit_exp j!`%`_num_.0] +[visit_exp j!`%`_num_] [visit_exp j] [visit_id j] not free -[visit_exp i#34751] -[visit_id i#34751] [visit_exp 1] -[visit_exp `CONST`_instr{numtype#179}(`I32`_numtype, `%`_num_{i#34783}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp numtype#179] -[visit_id numtype#179] -[visit_exp (`I32`_numtype, `%`_num_{i#34783}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp (`I32`_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#34783}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp i#34783] -[visit_id i#34783] +[visit_exp `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] [visit_exp ((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] [visit_exp (((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] [visit_exp ((n : nat <:> int) - (1 : nat <:> int))] @@ -56976,37 +47546,23 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id n] not free [visit_exp (1 : nat <:> int)] [visit_exp 1] -[visit_exp `TABLE.INIT`_instr{tableidx#115, elemidx#23}(x, y)] -[visit_exp tableidx#115] -[visit_id tableidx#115] -[visit_exp elemidx#23] -[visit_id elemidx#23] +[visit_exp `TABLE.INIT`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] not free [visit_exp y] [visit_id y] not free -[check_dims] elemidx#25 instr*#1074 instr*#1086 state#959 state#971 x z -[visit_exp `%;%`_config{state#959, `instr*#1074`}(z, [`ELEM.DROP`_instr{elemidx#25}(x)])] -[visit_exp state#959] -[visit_id state#959] -[visit_exp `instr*#1074`] -[visit_id instr*#1074] -[visit_exp (z, [`ELEM.DROP`_instr{elemidx#25}(x)])] +[check_dims] x z +[visit_exp `%;%`_config(z, [`ELEM.DROP`_instr(x)])] +[visit_exp (z, [`ELEM.DROP`_instr(x)])] [visit_exp z] [visit_id z] -[visit_exp [`ELEM.DROP`_instr{elemidx#25}(x)]] -[visit_exp `ELEM.DROP`_instr{elemidx#25}(x)] -[visit_exp elemidx#25] -[visit_id elemidx#25] +[visit_exp [`ELEM.DROP`_instr(x)]] +[visit_exp `ELEM.DROP`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%;%`_config{state#971, `instr*#1086`}($with_elem(z, x, []), [])] -[visit_exp state#971] -[visit_id state#971] -[visit_exp `instr*#1086`] -[visit_id instr*#1086] +[visit_exp `%;%`_config($with_elem(z, x, []), [])] [visit_exp ($with_elem(z, x, []), [])] [visit_exp $with_elem(z, x, [])] [visit_exp z] @@ -57015,32 +47571,20 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id x] not free [visit_exp []] [visit_exp []] -[check_dims] ao at byte*#1849 i i#34883 i#34893 instr*#1098 memarg#35 memidx#67 nt numtype#181 numtype?#7 state#983 u64#405 x z -[visit_exp `%;%`_config{state#983, `instr*#1098`}(z, [`CONST`_instr{numtype#181}((at : addrtype <: numtype), i) `LOAD`_instr{`numtype?#7`, memidx#67, memarg#35}(nt, ?(), x, ao)])] -[visit_exp state#983] -[visit_id state#983] -[visit_exp `instr*#1098`] -[visit_id instr*#1098] -[visit_exp (z, [`CONST`_instr{numtype#181}((at : addrtype <: numtype), i) `LOAD`_instr{`numtype?#7`, memidx#67, memarg#35}(nt, ?(), x, ao)])] +[check_dims] ao at i nt x z +[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `LOAD`_instr(nt, ?(), x, ao)])] +[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `LOAD`_instr(nt, ?(), x, ao)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#181}((at : addrtype <: numtype), i) `LOAD`_instr{`numtype?#7`, memidx#67, memarg#35}(nt, ?(), x, ao)]] -[visit_exp `CONST`_instr{numtype#181}((at : addrtype <: numtype), i)] -[visit_exp numtype#181] -[visit_id numtype#181] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `LOAD`_instr(nt, ?(), x, ao)]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] [visit_exp ((at : addrtype <: numtype), i)] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] [visit_exp i] [visit_id i] -[visit_exp `LOAD`_instr{`numtype?#7`, memidx#67, memarg#35}(nt, ?(), x, ao)] -[visit_exp `numtype?#7`] -[visit_id numtype?#7] -[visit_exp memidx#67] -[visit_id memidx#67] -[visit_exp memarg#35] -[visit_id memarg#35] +[visit_exp `LOAD`_instr(nt, ?(), x, ao)] [visit_exp (nt, ?(), x, ao)] [visit_exp nt] [visit_id nt] @@ -57052,24 +47596,18 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[visit_exp (((i!`%`_num_{i#34883}.0 + ao.`OFFSET`_memarg{u64#405}!`%`_u64{i#34893}.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst{`byte*#1849`}|)] -[visit_exp ((i!`%`_num_{i#34883}.0 + ao.`OFFSET`_memarg{u64#405}!`%`_u64{i#34893}.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] -[visit_exp (i!`%`_num_{i#34883}.0 + ao.`OFFSET`_memarg{u64#405}!`%`_u64{i#34893}.0)] -[visit_exp i!`%`_num_{i#34883}.0] -[visit_exp i!`%`_num_{i#34883}] +[visit_exp (((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst|)] +[visit_exp ((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] +[visit_exp (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#34883] -[visit_id i#34883] -[visit_exp ao.`OFFSET`_memarg{u64#405}!`%`_u64{i#34893}.0] -[visit_exp ao.`OFFSET`_memarg{u64#405}!`%`_u64{i#34893}] -[visit_exp ao.`OFFSET`_memarg{u64#405}] +[visit_exp ao.`OFFSET`_memarg!`%`_u64.0] +[visit_exp ao.`OFFSET`_memarg!`%`_u64] +[visit_exp ao.`OFFSET`_memarg] [visit_exp ao] [visit_id ao] not free -[visit_exp u64#405] -[visit_id u64#405] -[visit_exp i#34893] -[visit_id i#34893] [visit_exp ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] [visit_exp (($size(nt) : nat <:> rat) / (8 : nat <:> rat))] [visit_exp ($size(nt) : nat <:> rat)] @@ -57078,41 +47616,27 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id nt] not free [visit_exp (8 : nat <:> rat)] [visit_exp 8] -[visit_exp |$mem(z, x).`BYTES`_meminst{`byte*#1849`}|] -[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1849`}] +[visit_exp |$mem(z, x).`BYTES`_meminst|] +[visit_exp $mem(z, x).`BYTES`_meminst] [visit_exp $mem(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `byte*#1849`] -[visit_id byte*#1849] -[check_dims] ao at byte*#1850 c i i#34963 i#34973 instr*#1110 memarg#37 memidx#69 nt numtype#184 numtype#187 numtype?#8 state#995 u64#406 x z -[visit_exp `%;%`_config{state#995, `instr*#1110`}(z, [`CONST`_instr{numtype#184}((at : addrtype <: numtype), i) `LOAD`_instr{`numtype?#8`, memidx#69, memarg#37}(nt, ?(), x, ao)])] -[visit_exp state#995] -[visit_id state#995] -[visit_exp `instr*#1110`] -[visit_id instr*#1110] -[visit_exp (z, [`CONST`_instr{numtype#184}((at : addrtype <: numtype), i) `LOAD`_instr{`numtype?#8`, memidx#69, memarg#37}(nt, ?(), x, ao)])] +[check_dims] ao at c i nt x z +[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `LOAD`_instr(nt, ?(), x, ao)])] +[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `LOAD`_instr(nt, ?(), x, ao)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#184}((at : addrtype <: numtype), i) `LOAD`_instr{`numtype?#8`, memidx#69, memarg#37}(nt, ?(), x, ao)]] -[visit_exp `CONST`_instr{numtype#184}((at : addrtype <: numtype), i)] -[visit_exp numtype#184] -[visit_id numtype#184] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `LOAD`_instr(nt, ?(), x, ao)]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] [visit_exp ((at : addrtype <: numtype), i)] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] [visit_exp i] [visit_id i] -[visit_exp `LOAD`_instr{`numtype?#8`, memidx#69, memarg#37}(nt, ?(), x, ao)] -[visit_exp `numtype?#8`] -[visit_id numtype?#8] -[visit_exp memidx#69] -[visit_id memidx#69] -[visit_exp memarg#37] -[visit_id memarg#37] +[visit_exp `LOAD`_instr(nt, ?(), x, ao)] [visit_exp (nt, ?(), x, ao)] [visit_exp nt] [visit_id nt] @@ -57121,46 +47645,36 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id x] [visit_exp ao] [visit_id ao] -[visit_exp [`CONST`_instr{numtype#187}(nt, c)]] -[visit_exp `CONST`_instr{numtype#187}(nt, c)] -[visit_exp numtype#187] -[visit_id numtype#187] +[visit_exp [`CONST`_instr(nt, c)]] +[visit_exp `CONST`_instr(nt, c)] [visit_exp (nt, c)] [visit_exp nt] [visit_id nt] not free [visit_exp c] [visit_id c] -[visit_exp ($nbytes_(nt, c) = $mem(z, x).`BYTES`_meminst{`byte*#1850`}[(i!`%`_num_{i#34963}.0 + ao.`OFFSET`_memarg{u64#406}!`%`_u64{i#34973}.0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)])] +[visit_exp ($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)])] [visit_exp $nbytes_(nt, c)] [visit_exp nt] [visit_id nt] not free [visit_exp c] [visit_id c] not free -[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1850`}[(i!`%`_num_{i#34963}.0 + ao.`OFFSET`_memarg{u64#406}!`%`_u64{i#34973}.0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]] -[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1850`}] +[visit_exp $mem(z, x).`BYTES`_meminst[(i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]] +[visit_exp $mem(z, x).`BYTES`_meminst] [visit_exp $mem(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `byte*#1850`] -[visit_id byte*#1850] -[visit_exp (i!`%`_num_{i#34963}.0 + ao.`OFFSET`_memarg{u64#406}!`%`_u64{i#34973}.0)] -[visit_exp i!`%`_num_{i#34963}.0] -[visit_exp i!`%`_num_{i#34963}] +[visit_exp (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#34963] -[visit_id i#34963] -[visit_exp ao.`OFFSET`_memarg{u64#406}!`%`_u64{i#34973}.0] -[visit_exp ao.`OFFSET`_memarg{u64#406}!`%`_u64{i#34973}] -[visit_exp ao.`OFFSET`_memarg{u64#406}] +[visit_exp ao.`OFFSET`_memarg!`%`_u64.0] +[visit_exp ao.`OFFSET`_memarg!`%`_u64] +[visit_exp ao.`OFFSET`_memarg] [visit_exp ao] [visit_id ao] not free -[visit_exp u64#406] -[visit_id u64#406] -[visit_exp i#34973] -[visit_id i#34973] [visit_exp ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] [visit_exp (($size(nt) : nat <:> rat) / (8 : nat <:> rat))] [visit_exp ($size(nt) : nat <:> rat)] @@ -57169,48 +47683,28 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id nt] not free [visit_exp (8 : nat <:> rat)] [visit_exp 8] -[check_dims] Inn ao at byte*#1851 i i#35021 i#35028 i#35060 i#35070 instr*#1122 memarg#39 memidx#71 n numtype#189 numtype?#9 state#1007 sx sx#270 sz#156 u64#407 x z -[visit_exp `%;%`_config{state#1007, `instr*#1122`}(z, [`CONST`_instr{numtype#189}((at : addrtype <: numtype), i) `LOAD`_instr{`numtype?#9`, memidx#71, memarg#39}((Inn : Inn <: numtype), ?(`%_%`_loadop_{sz#156, sx#270, i#35021}(`%`_sz{i#35028}(n), sx)), x, ao)])] -[visit_exp state#1007] -[visit_id state#1007] -[visit_exp `instr*#1122`] -[visit_id instr*#1122] -[visit_exp (z, [`CONST`_instr{numtype#189}((at : addrtype <: numtype), i) `LOAD`_instr{`numtype?#9`, memidx#71, memarg#39}((Inn : Inn <: numtype), ?(`%_%`_loadop_{sz#156, sx#270, i#35021}(`%`_sz{i#35028}(n), sx)), x, ao)])] +[check_dims] Inn ao at i n sx x z +[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `LOAD`_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n), sx)), x, ao)])] +[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `LOAD`_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n), sx)), x, ao)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#189}((at : addrtype <: numtype), i) `LOAD`_instr{`numtype?#9`, memidx#71, memarg#39}((Inn : Inn <: numtype), ?(`%_%`_loadop_{sz#156, sx#270, i#35021}(`%`_sz{i#35028}(n), sx)), x, ao)]] -[visit_exp `CONST`_instr{numtype#189}((at : addrtype <: numtype), i)] -[visit_exp numtype#189] -[visit_id numtype#189] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `LOAD`_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n), sx)), x, ao)]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] [visit_exp ((at : addrtype <: numtype), i)] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] [visit_exp i] [visit_id i] -[visit_exp `LOAD`_instr{`numtype?#9`, memidx#71, memarg#39}((Inn : Inn <: numtype), ?(`%_%`_loadop_{sz#156, sx#270, i#35021}(`%`_sz{i#35028}(n), sx)), x, ao)] -[visit_exp `numtype?#9`] -[visit_id numtype?#9] -[visit_exp memidx#71] -[visit_id memidx#71] -[visit_exp memarg#39] -[visit_id memarg#39] -[visit_exp ((Inn : Inn <: numtype), ?(`%_%`_loadop_{sz#156, sx#270, i#35021}(`%`_sz{i#35028}(n), sx)), x, ao)] +[visit_exp `LOAD`_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n), sx)), x, ao)] +[visit_exp ((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n), sx)), x, ao)] [visit_exp (Inn : Inn <: numtype)] [visit_exp Inn] [visit_id Inn] -[visit_exp ?(`%_%`_loadop_{sz#156, sx#270, i#35021}(`%`_sz{i#35028}(n), sx))] -[visit_exp `%_%`_loadop_{sz#156, sx#270, i#35021}(`%`_sz{i#35028}(n), sx)] -[visit_exp sz#156] -[visit_id sz#156] -[visit_exp sx#270] -[visit_id sx#270] -[visit_exp i#35021] -[visit_id i#35021] -[visit_exp (`%`_sz{i#35028}(n), sx)] -[visit_exp `%`_sz{i#35028}(n)] -[visit_exp i#35028] -[visit_id i#35028] +[visit_exp ?(`%_%`_loadop_(`%`_sz(n), sx))] +[visit_exp `%_%`_loadop_(`%`_sz(n), sx)] +[visit_exp (`%`_sz(n), sx)] +[visit_exp `%`_sz(n)] [visit_exp (n)] [visit_exp n] [visit_id n] @@ -57223,24 +47717,18 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[visit_exp (((i!`%`_num_{i#35060}.0 + ao.`OFFSET`_memarg{u64#407}!`%`_u64{i#35070}.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst{`byte*#1851`}|)] -[visit_exp ((i!`%`_num_{i#35060}.0 + ao.`OFFSET`_memarg{u64#407}!`%`_u64{i#35070}.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] -[visit_exp (i!`%`_num_{i#35060}.0 + ao.`OFFSET`_memarg{u64#407}!`%`_u64{i#35070}.0)] -[visit_exp i!`%`_num_{i#35060}.0] -[visit_exp i!`%`_num_{i#35060}] +[visit_exp (((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst|)] +[visit_exp ((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] +[visit_exp (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#35060] -[visit_id i#35060] -[visit_exp ao.`OFFSET`_memarg{u64#407}!`%`_u64{i#35070}.0] -[visit_exp ao.`OFFSET`_memarg{u64#407}!`%`_u64{i#35070}] -[visit_exp ao.`OFFSET`_memarg{u64#407}] +[visit_exp ao.`OFFSET`_memarg!`%`_u64.0] +[visit_exp ao.`OFFSET`_memarg!`%`_u64] +[visit_exp ao.`OFFSET`_memarg] [visit_exp ao] [visit_id ao] not free -[visit_exp u64#407] -[visit_id u64#407] -[visit_exp i#35070] -[visit_id i#35070] [visit_exp (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] [visit_exp ((n : nat <:> rat) / (8 : nat <:> rat))] [visit_exp (n : nat <:> rat)] @@ -57248,57 +47736,35 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id n] not free [visit_exp (8 : nat <:> rat)] [visit_exp 8] -[visit_exp |$mem(z, x).`BYTES`_meminst{`byte*#1851`}|] -[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1851`}] +[visit_exp |$mem(z, x).`BYTES`_meminst|] +[visit_exp $mem(z, x).`BYTES`_meminst] [visit_exp $mem(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `byte*#1851`] -[visit_id byte*#1851] -[check_dims] Inn ao at byte*#1852 c i i#35122 i#35129 i#35199 i#35209 instr*#1134 memarg#41 memidx#73 n numtype#192 numtype#195 numtype?#10 state#1019 sx sx#272 sz#158 u64#408 x z -[visit_exp `%;%`_config{state#1019, `instr*#1134`}(z, [`CONST`_instr{numtype#192}((at : addrtype <: numtype), i) `LOAD`_instr{`numtype?#10`, memidx#73, memarg#41}((Inn : Inn <: numtype), ?(`%_%`_loadop_{sz#158, sx#272, i#35122}(`%`_sz{i#35129}(n), sx)), x, ao)])] -[visit_exp state#1019] -[visit_id state#1019] -[visit_exp `instr*#1134`] -[visit_id instr*#1134] -[visit_exp (z, [`CONST`_instr{numtype#192}((at : addrtype <: numtype), i) `LOAD`_instr{`numtype?#10`, memidx#73, memarg#41}((Inn : Inn <: numtype), ?(`%_%`_loadop_{sz#158, sx#272, i#35122}(`%`_sz{i#35129}(n), sx)), x, ao)])] +[check_dims] Inn ao at c i n sx x z +[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `LOAD`_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n), sx)), x, ao)])] +[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `LOAD`_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n), sx)), x, ao)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#192}((at : addrtype <: numtype), i) `LOAD`_instr{`numtype?#10`, memidx#73, memarg#41}((Inn : Inn <: numtype), ?(`%_%`_loadop_{sz#158, sx#272, i#35122}(`%`_sz{i#35129}(n), sx)), x, ao)]] -[visit_exp `CONST`_instr{numtype#192}((at : addrtype <: numtype), i)] -[visit_exp numtype#192] -[visit_id numtype#192] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `LOAD`_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n), sx)), x, ao)]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] [visit_exp ((at : addrtype <: numtype), i)] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] [visit_exp i] [visit_id i] -[visit_exp `LOAD`_instr{`numtype?#10`, memidx#73, memarg#41}((Inn : Inn <: numtype), ?(`%_%`_loadop_{sz#158, sx#272, i#35122}(`%`_sz{i#35129}(n), sx)), x, ao)] -[visit_exp `numtype?#10`] -[visit_id numtype?#10] -[visit_exp memidx#73] -[visit_id memidx#73] -[visit_exp memarg#41] -[visit_id memarg#41] -[visit_exp ((Inn : Inn <: numtype), ?(`%_%`_loadop_{sz#158, sx#272, i#35122}(`%`_sz{i#35129}(n), sx)), x, ao)] +[visit_exp `LOAD`_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n), sx)), x, ao)] +[visit_exp ((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n), sx)), x, ao)] [visit_exp (Inn : Inn <: numtype)] [visit_exp Inn] [visit_id Inn] -[visit_exp ?(`%_%`_loadop_{sz#158, sx#272, i#35122}(`%`_sz{i#35129}(n), sx))] -[visit_exp `%_%`_loadop_{sz#158, sx#272, i#35122}(`%`_sz{i#35129}(n), sx)] -[visit_exp sz#158] -[visit_id sz#158] -[visit_exp sx#272] -[visit_id sx#272] -[visit_exp i#35122] -[visit_id i#35122] -[visit_exp (`%`_sz{i#35129}(n), sx)] -[visit_exp `%`_sz{i#35129}(n)] -[visit_exp i#35129] -[visit_id i#35129] +[visit_exp ?(`%_%`_loadop_(`%`_sz(n), sx))] +[visit_exp `%_%`_loadop_(`%`_sz(n), sx)] +[visit_exp (`%`_sz(n), sx)] +[visit_exp `%`_sz(n)] [visit_exp (n)] [visit_exp n] [visit_id n] @@ -57308,10 +47774,8 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id x] [visit_exp ao] [visit_id ao] -[visit_exp [`CONST`_instr{numtype#195}((Inn : Inn <: numtype), $extend__(n, $size((Inn : Inn <: numtype)), sx, c))]] -[visit_exp `CONST`_instr{numtype#195}((Inn : Inn <: numtype), $extend__(n, $size((Inn : Inn <: numtype)), sx, c))] -[visit_exp numtype#195] -[visit_id numtype#195] +[visit_exp [`CONST`_instr((Inn : Inn <: numtype), $extend__(n, $size((Inn : Inn <: numtype)), sx, c))]] +[visit_exp `CONST`_instr((Inn : Inn <: numtype), $extend__(n, $size((Inn : Inn <: numtype)), sx, c))] [visit_exp ((Inn : Inn <: numtype), $extend__(n, $size((Inn : Inn <: numtype)), sx, c))] [visit_exp (Inn : Inn <: numtype)] [visit_exp Inn] @@ -57327,37 +47791,29 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id sx] not free [visit_exp c] [visit_id c] -[visit_exp ($ibytes_(n, c) = $mem(z, x).`BYTES`_meminst{`byte*#1852`}[(i!`%`_num_{i#35199}.0 + ao.`OFFSET`_memarg{u64#408}!`%`_u64{i#35209}.0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)])] +[visit_exp ($ibytes_(n, c) = $mem(z, x).`BYTES`_meminst[(i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)])] [visit_exp $ibytes_(n, c)] [visit_exp n] [visit_id n] not free [visit_exp c] [visit_id c] not free -[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1852`}[(i!`%`_num_{i#35199}.0 + ao.`OFFSET`_memarg{u64#408}!`%`_u64{i#35209}.0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]] -[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1852`}] +[visit_exp $mem(z, x).`BYTES`_meminst[(i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]] +[visit_exp $mem(z, x).`BYTES`_meminst] [visit_exp $mem(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `byte*#1852`] -[visit_id byte*#1852] -[visit_exp (i!`%`_num_{i#35199}.0 + ao.`OFFSET`_memarg{u64#408}!`%`_u64{i#35209}.0)] -[visit_exp i!`%`_num_{i#35199}.0] -[visit_exp i!`%`_num_{i#35199}] +[visit_exp (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#35199] -[visit_id i#35199] -[visit_exp ao.`OFFSET`_memarg{u64#408}!`%`_u64{i#35209}.0] -[visit_exp ao.`OFFSET`_memarg{u64#408}!`%`_u64{i#35209}] -[visit_exp ao.`OFFSET`_memarg{u64#408}] +[visit_exp ao.`OFFSET`_memarg!`%`_u64.0] +[visit_exp ao.`OFFSET`_memarg!`%`_u64] +[visit_exp ao.`OFFSET`_memarg] [visit_exp ao] [visit_id ao] not free -[visit_exp u64#408] -[visit_id u64#408] -[visit_exp i#35209] -[visit_id i#35209] [visit_exp (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] [visit_exp ((n : nat <:> rat) / (8 : nat <:> rat))] [visit_exp (n : nat <:> rat)] @@ -57365,32 +47821,20 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id n] not free [visit_exp (8 : nat <:> rat)] [visit_exp 8] -[check_dims] ao at byte*#1853 i i#35293 i#35303 instr*#1146 memarg#43 memidx#75 numtype#197 state#1031 u64#409 vectype?#6 x z -[visit_exp `%;%`_config{state#1031, `instr*#1146`}(z, [`CONST`_instr{numtype#197}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#6`, memidx#75, memarg#43}(`V128`_vectype, ?(), x, ao)])] -[visit_exp state#1031] -[visit_id state#1031] -[visit_exp `instr*#1146`] -[visit_id instr*#1146] -[visit_exp (z, [`CONST`_instr{numtype#197}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#6`, memidx#75, memarg#43}(`V128`_vectype, ?(), x, ao)])] +[check_dims] ao at i x z +[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(), x, ao)])] +[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(), x, ao)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#197}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#6`, memidx#75, memarg#43}(`V128`_vectype, ?(), x, ao)]] -[visit_exp `CONST`_instr{numtype#197}((at : addrtype <: numtype), i)] -[visit_exp numtype#197] -[visit_id numtype#197] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(), x, ao)]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] [visit_exp ((at : addrtype <: numtype), i)] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] [visit_exp i] [visit_id i] -[visit_exp `VLOAD`_instr{`vectype?#6`, memidx#75, memarg#43}(`V128`_vectype, ?(), x, ao)] -[visit_exp `vectype?#6`] -[visit_id vectype?#6] -[visit_exp memidx#75] -[visit_id memidx#75] -[visit_exp memarg#43] -[visit_id memarg#43] +[visit_exp `VLOAD`_instr(`V128`_vectype, ?(), x, ao)] [visit_exp (`V128`_vectype, ?(), x, ao)] [visit_exp `V128`_vectype] [visit_exp ()] @@ -57402,24 +47846,18 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[visit_exp (((i!`%`_num_{i#35293}.0 + ao.`OFFSET`_memarg{u64#409}!`%`_u64{i#35303}.0) + ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst{`byte*#1853`}|)] -[visit_exp ((i!`%`_num_{i#35293}.0 + ao.`OFFSET`_memarg{u64#409}!`%`_u64{i#35303}.0) + ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] -[visit_exp (i!`%`_num_{i#35293}.0 + ao.`OFFSET`_memarg{u64#409}!`%`_u64{i#35303}.0)] -[visit_exp i!`%`_num_{i#35293}.0] -[visit_exp i!`%`_num_{i#35293}] +[visit_exp (((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst|)] +[visit_exp ((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] +[visit_exp (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#35293] -[visit_id i#35293] -[visit_exp ao.`OFFSET`_memarg{u64#409}!`%`_u64{i#35303}.0] -[visit_exp ao.`OFFSET`_memarg{u64#409}!`%`_u64{i#35303}] -[visit_exp ao.`OFFSET`_memarg{u64#409}] +[visit_exp ao.`OFFSET`_memarg!`%`_u64.0] +[visit_exp ao.`OFFSET`_memarg!`%`_u64] +[visit_exp ao.`OFFSET`_memarg] [visit_exp ao] [visit_id ao] not free -[visit_exp u64#409] -[visit_id u64#409] -[visit_exp i#35303] -[visit_id i#35303] [visit_exp ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] [visit_exp (($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat))] [visit_exp ($vsize(`V128`_vectype) : nat <:> rat)] @@ -57428,41 +47866,27 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp ()] [visit_exp (8 : nat <:> rat)] [visit_exp 8] -[visit_exp |$mem(z, x).`BYTES`_meminst{`byte*#1853`}|] -[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1853`}] +[visit_exp |$mem(z, x).`BYTES`_meminst|] +[visit_exp $mem(z, x).`BYTES`_meminst] [visit_exp $mem(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `byte*#1853`] -[visit_id byte*#1853] -[check_dims] ao at byte*#1854 c i i#35387 i#35397 instr*#1158 memarg#45 memidx#77 numtype#199 state#1043 u64#410 vectype#64 vectype?#7 x z -[visit_exp `%;%`_config{state#1043, `instr*#1158`}(z, [`CONST`_instr{numtype#199}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#7`, memidx#77, memarg#45}(`V128`_vectype, ?(), x, ao)])] -[visit_exp state#1043] -[visit_id state#1043] -[visit_exp `instr*#1158`] -[visit_id instr*#1158] -[visit_exp (z, [`CONST`_instr{numtype#199}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#7`, memidx#77, memarg#45}(`V128`_vectype, ?(), x, ao)])] +[check_dims] ao at c i x z +[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(), x, ao)])] +[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(), x, ao)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#199}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#7`, memidx#77, memarg#45}(`V128`_vectype, ?(), x, ao)]] -[visit_exp `CONST`_instr{numtype#199}((at : addrtype <: numtype), i)] -[visit_exp numtype#199] -[visit_id numtype#199] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(), x, ao)]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] [visit_exp ((at : addrtype <: numtype), i)] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] [visit_exp i] [visit_id i] -[visit_exp `VLOAD`_instr{`vectype?#7`, memidx#77, memarg#45}(`V128`_vectype, ?(), x, ao)] -[visit_exp `vectype?#7`] -[visit_id vectype?#7] -[visit_exp memidx#77] -[visit_id memidx#77] -[visit_exp memarg#45] -[visit_id memarg#45] +[visit_exp `VLOAD`_instr(`V128`_vectype, ?(), x, ao)] [visit_exp (`V128`_vectype, ?(), x, ao)] [visit_exp `V128`_vectype] [visit_exp ()] @@ -57471,46 +47895,36 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id x] [visit_exp ao] [visit_id ao] -[visit_exp [`VCONST`_instr{vectype#64}(`V128`_vectype, c)]] -[visit_exp `VCONST`_instr{vectype#64}(`V128`_vectype, c)] -[visit_exp vectype#64] -[visit_id vectype#64] +[visit_exp [`VCONST`_instr(`V128`_vectype, c)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c)] [visit_exp (`V128`_vectype, c)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c] [visit_id c] -[visit_exp ($vbytes_(`V128`_vectype, c) = $mem(z, x).`BYTES`_meminst{`byte*#1854`}[(i!`%`_num_{i#35387}.0 + ao.`OFFSET`_memarg{u64#410}!`%`_u64{i#35397}.0) : ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)])] +[visit_exp ($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)])] [visit_exp $vbytes_(`V128`_vectype, c)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c] [visit_id c] not free -[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1854`}[(i!`%`_num_{i#35387}.0 + ao.`OFFSET`_memarg{u64#410}!`%`_u64{i#35397}.0) : ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]] -[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1854`}] +[visit_exp $mem(z, x).`BYTES`_meminst[(i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) : ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]] +[visit_exp $mem(z, x).`BYTES`_meminst] [visit_exp $mem(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `byte*#1854`] -[visit_id byte*#1854] -[visit_exp (i!`%`_num_{i#35387}.0 + ao.`OFFSET`_memarg{u64#410}!`%`_u64{i#35397}.0)] -[visit_exp i!`%`_num_{i#35387}.0] -[visit_exp i!`%`_num_{i#35387}] +[visit_exp (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#35387] -[visit_id i#35387] -[visit_exp ao.`OFFSET`_memarg{u64#410}!`%`_u64{i#35397}.0] -[visit_exp ao.`OFFSET`_memarg{u64#410}!`%`_u64{i#35397}] -[visit_exp ao.`OFFSET`_memarg{u64#410}] +[visit_exp ao.`OFFSET`_memarg!`%`_u64.0] +[visit_exp ao.`OFFSET`_memarg!`%`_u64] +[visit_exp ao.`OFFSET`_memarg] [visit_exp ao] [visit_id ao] not free -[visit_exp u64#410] -[visit_id u64#410] -[visit_exp i#35397] -[visit_id i#35397] [visit_exp ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] [visit_exp (($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat))] [visit_exp ($vsize(`V128`_vectype) : nat <:> rat)] @@ -57519,49 +47933,27 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp ()] [visit_exp (8 : nat <:> rat)] [visit_exp 8] -[check_dims] K M M#63 ao at byte*#1855 i i#35475 i#35482 i#35514 i#35524 instr*#1170 memarg#47 memidx#79 numtype#201 state#1055 sx sx#289 sz#205 u64#411 vectype?#8 x z -[visit_exp `%;%`_config{state#1055, `instr*#1170`}(z, [`CONST`_instr{numtype#201}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#8`, memidx#79, memarg#47}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#205, M#63, sx#289, i#35475}(`%`_sz{i#35482}(M), K, sx)), x, ao)])] -[visit_exp state#1055] -[visit_id state#1055] -[visit_exp `instr*#1170`] -[visit_id instr*#1170] -[visit_exp (z, [`CONST`_instr{numtype#201}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#8`, memidx#79, memarg#47}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#205, M#63, sx#289, i#35475}(`%`_sz{i#35482}(M), K, sx)), x, ao)])] +[check_dims] K M ao at i sx x z +[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])] +[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#201}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#8`, memidx#79, memarg#47}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#205, M#63, sx#289, i#35475}(`%`_sz{i#35482}(M), K, sx)), x, ao)]] -[visit_exp `CONST`_instr{numtype#201}((at : addrtype <: numtype), i)] -[visit_exp numtype#201] -[visit_id numtype#201] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] [visit_exp ((at : addrtype <: numtype), i)] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] [visit_exp i] [visit_id i] -[visit_exp `VLOAD`_instr{`vectype?#8`, memidx#79, memarg#47}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#205, M#63, sx#289, i#35475}(`%`_sz{i#35482}(M), K, sx)), x, ao)] -[visit_exp `vectype?#8`] -[visit_id vectype?#8] -[visit_exp memidx#79] -[visit_id memidx#79] -[visit_exp memarg#47] -[visit_id memarg#47] -[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#205, M#63, sx#289, i#35475}(`%`_sz{i#35482}(M), K, sx)), x, ao)] +[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)] +[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp ?(`SHAPE%X%_%`_vloadop_{sz#205, M#63, sx#289, i#35475}(`%`_sz{i#35482}(M), K, sx))] -[visit_exp `SHAPE%X%_%`_vloadop_{sz#205, M#63, sx#289, i#35475}(`%`_sz{i#35482}(M), K, sx)] -[visit_exp sz#205] -[visit_id sz#205] -[visit_exp M#63] -[visit_id M#63] -[visit_exp sx#289] -[visit_id sx#289] -[visit_exp i#35475] -[visit_id i#35475] -[visit_exp (`%`_sz{i#35482}(M), K, sx)] -[visit_exp `%`_sz{i#35482}(M)] -[visit_exp i#35482] -[visit_id i#35482] +[visit_exp ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx))] +[visit_exp `SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)] +[visit_exp (`%`_sz(M), K, sx)] +[visit_exp `%`_sz(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -57576,24 +47968,18 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[visit_exp (((i!`%`_num_{i#35514}.0 + ao.`OFFSET`_memarg{u64#411}!`%`_u64{i#35524}.0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst{`byte*#1855`}|)] -[visit_exp ((i!`%`_num_{i#35514}.0 + ao.`OFFSET`_memarg{u64#411}!`%`_u64{i#35524}.0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] -[visit_exp (i!`%`_num_{i#35514}.0 + ao.`OFFSET`_memarg{u64#411}!`%`_u64{i#35524}.0)] -[visit_exp i!`%`_num_{i#35514}.0] -[visit_exp i!`%`_num_{i#35514}] +[visit_exp (((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst|)] +[visit_exp ((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] +[visit_exp (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#35514] -[visit_id i#35514] -[visit_exp ao.`OFFSET`_memarg{u64#411}!`%`_u64{i#35524}.0] -[visit_exp ao.`OFFSET`_memarg{u64#411}!`%`_u64{i#35524}] -[visit_exp ao.`OFFSET`_memarg{u64#411}] +[visit_exp ao.`OFFSET`_memarg!`%`_u64.0] +[visit_exp ao.`OFFSET`_memarg!`%`_u64] +[visit_exp ao.`OFFSET`_memarg] [visit_exp ao] [visit_id ao] not free -[visit_exp u64#411] -[visit_id u64#411] -[visit_exp i#35524] -[visit_id i#35524] [visit_exp ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] [visit_exp (((M * K) : nat <:> rat) / (8 : nat <:> rat))] [visit_exp ((M * K) : nat <:> rat)] @@ -57604,58 +47990,34 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id K] not free [visit_exp (8 : nat <:> rat)] [visit_exp 8] -[visit_exp |$mem(z, x).`BYTES`_meminst{`byte*#1855`}|] -[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1855`}] +[visit_exp |$mem(z, x).`BYTES`_meminst|] +[visit_exp $mem(z, x).`BYTES`_meminst] [visit_exp $mem(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `byte*#1855`] -[visit_id byte*#1855] -[check_dims] Jnn K M M#80 ao at byte*#1856 c dim#7243 i i#35576 i#35583 i#35641 i#35651 i#35700 i#35707 instr*#1182 j k lanetype#7243 memarg#49 memidx#81 numtype#203 state#1067 sx sx#306 sz#252 u64#412 vectype#68 vectype?#9 x z -[visit_exp `%;%`_config{state#1067, `instr*#1182`}(z, [`CONST`_instr{numtype#203}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#9`, memidx#81, memarg#49}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#252, M#80, sx#306, i#35576}(`%`_sz{i#35583}(M), K, sx)), x, ao)])] -[visit_exp state#1067] -[visit_id state#1067] -[visit_exp `instr*#1182`] -[visit_id instr*#1182] -[visit_exp (z, [`CONST`_instr{numtype#203}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#9`, memidx#81, memarg#49}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#252, M#80, sx#306, i#35576}(`%`_sz{i#35583}(M), K, sx)), x, ao)])] +[check_dims] Jnn K M ao at c i j k sx x z +[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])] +[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#203}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#9`, memidx#81, memarg#49}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#252, M#80, sx#306, i#35576}(`%`_sz{i#35583}(M), K, sx)), x, ao)]] -[visit_exp `CONST`_instr{numtype#203}((at : addrtype <: numtype), i)] -[visit_exp numtype#203] -[visit_id numtype#203] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] [visit_exp ((at : addrtype <: numtype), i)] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] [visit_exp i] [visit_id i] -[visit_exp `VLOAD`_instr{`vectype?#9`, memidx#81, memarg#49}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#252, M#80, sx#306, i#35576}(`%`_sz{i#35583}(M), K, sx)), x, ao)] -[visit_exp `vectype?#9`] -[visit_id vectype?#9] -[visit_exp memidx#81] -[visit_id memidx#81] -[visit_exp memarg#49] -[visit_id memarg#49] -[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#252, M#80, sx#306, i#35576}(`%`_sz{i#35583}(M), K, sx)), x, ao)] +[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)] +[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp ?(`SHAPE%X%_%`_vloadop_{sz#252, M#80, sx#306, i#35576}(`%`_sz{i#35583}(M), K, sx))] -[visit_exp `SHAPE%X%_%`_vloadop_{sz#252, M#80, sx#306, i#35576}(`%`_sz{i#35583}(M), K, sx)] -[visit_exp sz#252] -[visit_id sz#252] -[visit_exp M#80] -[visit_id M#80] -[visit_exp sx#306] -[visit_id sx#306] -[visit_exp i#35576] -[visit_id i#35576] -[visit_exp (`%`_sz{i#35583}(M), K, sx)] -[visit_exp `%`_sz{i#35583}(M)] -[visit_exp i#35583] -[visit_id i#35583] +[visit_exp ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx))] +[visit_exp `SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)] +[visit_exp (`%`_sz(M), K, sx)] +[visit_exp `%`_sz(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -57667,53 +48029,39 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id x] [visit_exp ao] [visit_id ao] -[visit_exp [`VCONST`_instr{vectype#68}(`V128`_vectype, c)]] -[visit_exp `VCONST`_instr{vectype#68}(`V128`_vectype, c)] -[visit_exp vectype#68] -[visit_id vectype#68] +[visit_exp [`VCONST`_instr(`V128`_vectype, c)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c)] [visit_exp (`V128`_vectype, c)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c] [visit_id c] [scope_enter k] -[scope_enter byte*#1856] -[scope_enter i#35641] -[scope_enter i#35651] [scope_enter j] -[scope_enter u64#412] -[visit_exp ($ibytes_(M, j) = $mem(z, x).`BYTES`_meminst{`byte*#1856`}[((i!`%`_num_{i#35641}.0 + ao.`OFFSET`_memarg{u64#412}!`%`_u64{i#35651}.0) + ((((k * M) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)])] +[visit_exp ($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)])] [visit_exp $ibytes_(M, j)] [visit_exp M] [visit_id M] not free [visit_exp j] [visit_id j] not free -[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1856`}[((i!`%`_num_{i#35641}.0 + ao.`OFFSET`_memarg{u64#412}!`%`_u64{i#35651}.0) + ((((k * M) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]] -[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1856`}] +[visit_exp $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)]] +[visit_exp $mem(z, x).`BYTES`_meminst] [visit_exp $mem(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `byte*#1856`] -[visit_id byte*#1856] not free -[visit_exp ((i!`%`_num_{i#35641}.0 + ao.`OFFSET`_memarg{u64#412}!`%`_u64{i#35651}.0) + ((((k * M) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] -[visit_exp (i!`%`_num_{i#35641}.0 + ao.`OFFSET`_memarg{u64#412}!`%`_u64{i#35651}.0)] -[visit_exp i!`%`_num_{i#35641}.0] -[visit_exp i!`%`_num_{i#35641}] +[visit_exp ((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + ((((k * M) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] +[visit_exp (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#35641] -[visit_id i#35641] not free -[visit_exp ao.`OFFSET`_memarg{u64#412}!`%`_u64{i#35651}.0] -[visit_exp ao.`OFFSET`_memarg{u64#412}!`%`_u64{i#35651}] -[visit_exp ao.`OFFSET`_memarg{u64#412}] +[visit_exp ao.`OFFSET`_memarg!`%`_u64.0] +[visit_exp ao.`OFFSET`_memarg!`%`_u64] +[visit_exp ao.`OFFSET`_memarg] [visit_exp ao] [visit_id ao] not free -[visit_exp u64#412] -[visit_id u64#412] not free -[visit_exp i#35651] -[visit_id i#35651] not free [visit_exp ((((k * M) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] [visit_exp (((k * M) : nat <:> rat) / (8 : nat <:> rat))] [visit_exp ((k * M) : nat <:> rat)] @@ -57732,53 +48080,25 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp (8 : nat <:> rat)] [visit_exp 8] [visit_id k] not free -[visit_id byte*#1856] not free -[visit_id i#35641] not free -[visit_id i#35651] not free [visit_id j] not free -[visit_id u64#412] not free -[scope_exit u64#412] [scope_exit j] -[scope_exit i#35651] -[scope_exit i#35641] -[scope_exit byte*#1856] [scope_exit k] [visit_exp K] [visit_id K] not free -[visit_exp `byte*#1856*`] -[visit_id byte*#1856*] no dims -[visit_id byte*#1856*] -[visit_exp `i#35641*`] -[visit_id i#35641*] no dims -[visit_id i#35641*] -[visit_exp `i#35651*`] -[visit_id i#35651*] no dims -[visit_id i#35651*] [visit_exp `j*`] [visit_id j*] no dims [visit_id j*] -[visit_exp `u64#412*`] -[visit_id u64#412*] no dims -[visit_id u64#412*] -[visit_exp ((c = $inv_lanes_(`%X%`_shape{lanetype#7243, dim#7243, i#35700}((Jnn : Jnn <: lanetype), `%`_dim{i#35707}(K)), $extend__(M, $jsizenn(Jnn), sx, j)^K{j <- `j*`})) /\ ($jsizenn(Jnn) = (M * 2)))] -[visit_exp (c = $inv_lanes_(`%X%`_shape{lanetype#7243, dim#7243, i#35700}((Jnn : Jnn <: lanetype), `%`_dim{i#35707}(K)), $extend__(M, $jsizenn(Jnn), sx, j)^K{j <- `j*`}))] +[visit_exp ((c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K)), $extend__(M, $jsizenn(Jnn), sx, j)^K{j <- `j*`})) /\ ($jsizenn(Jnn) = (M * 2)))] +[visit_exp (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K)), $extend__(M, $jsizenn(Jnn), sx, j)^K{j <- `j*`}))] [visit_exp c] [visit_id c] not free -[visit_exp $inv_lanes_(`%X%`_shape{lanetype#7243, dim#7243, i#35700}((Jnn : Jnn <: lanetype), `%`_dim{i#35707}(K)), $extend__(M, $jsizenn(Jnn), sx, j)^K{j <- `j*`})] -[visit_exp `%X%`_shape{lanetype#7243, dim#7243, i#35700}((Jnn : Jnn <: lanetype), `%`_dim{i#35707}(K))] -[visit_exp lanetype#7243] -[visit_id lanetype#7243] -[visit_exp dim#7243] -[visit_id dim#7243] -[visit_exp i#35700] -[visit_id i#35700] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#35707}(K))] +[visit_exp $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K)), $extend__(M, $jsizenn(Jnn), sx, j)^K{j <- `j*`})] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(K))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] -[visit_exp `%`_dim{i#35707}(K)] -[visit_exp i#35707] -[visit_id i#35707] +[visit_exp `%`_dim(K)] [visit_exp (K)] [visit_exp K] [visit_id K] not free @@ -57809,43 +48129,27 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp M] [visit_id M] not free [visit_exp 2] -[check_dims] N ao at byte*#1857 i i#35834 i#35866 i#35876 instr*#1194 memarg#51 memidx#83 numtype#205 state#1079 sz#299 u64#413 vectype?#10 x z -[visit_exp `%;%`_config{state#1079, `instr*#1194`}(z, [`CONST`_instr{numtype#205}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#10`, memidx#83, memarg#51}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#299}(`%`_sz{i#35834}(N))), x, ao)])] -[visit_exp state#1079] -[visit_id state#1079] -[visit_exp `instr*#1194`] -[visit_id instr*#1194] -[visit_exp (z, [`CONST`_instr{numtype#205}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#10`, memidx#83, memarg#51}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#299}(`%`_sz{i#35834}(N))), x, ao)])] +[check_dims] N ao at i x z +[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(N))), x, ao)])] +[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(N))), x, ao)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#205}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#10`, memidx#83, memarg#51}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#299}(`%`_sz{i#35834}(N))), x, ao)]] -[visit_exp `CONST`_instr{numtype#205}((at : addrtype <: numtype), i)] -[visit_exp numtype#205] -[visit_id numtype#205] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(N))), x, ao)]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] [visit_exp ((at : addrtype <: numtype), i)] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] [visit_exp i] [visit_id i] -[visit_exp `VLOAD`_instr{`vectype?#10`, memidx#83, memarg#51}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#299}(`%`_sz{i#35834}(N))), x, ao)] -[visit_exp `vectype?#10`] -[visit_id vectype?#10] -[visit_exp memidx#83] -[visit_id memidx#83] -[visit_exp memarg#51] -[visit_id memarg#51] -[visit_exp (`V128`_vectype, ?(`SPLAT`_vloadop_{sz#299}(`%`_sz{i#35834}(N))), x, ao)] +[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(N))), x, ao)] +[visit_exp (`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(N))), x, ao)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp ?(`SPLAT`_vloadop_{sz#299}(`%`_sz{i#35834}(N)))] -[visit_exp `SPLAT`_vloadop_{sz#299}(`%`_sz{i#35834}(N))] -[visit_exp sz#299] -[visit_id sz#299] -[visit_exp (`%`_sz{i#35834}(N))] -[visit_exp `%`_sz{i#35834}(N)] -[visit_exp i#35834] -[visit_id i#35834] +[visit_exp ?(`SPLAT`_vloadop_(`%`_sz(N)))] +[visit_exp `SPLAT`_vloadop_(`%`_sz(N))] +[visit_exp (`%`_sz(N))] +[visit_exp `%`_sz(N)] [visit_exp (N)] [visit_exp N] [visit_id N] @@ -57856,24 +48160,18 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[visit_exp (((i!`%`_num_{i#35866}.0 + ao.`OFFSET`_memarg{u64#413}!`%`_u64{i#35876}.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst{`byte*#1857`}|)] -[visit_exp ((i!`%`_num_{i#35866}.0 + ao.`OFFSET`_memarg{u64#413}!`%`_u64{i#35876}.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] -[visit_exp (i!`%`_num_{i#35866}.0 + ao.`OFFSET`_memarg{u64#413}!`%`_u64{i#35876}.0)] -[visit_exp i!`%`_num_{i#35866}.0] -[visit_exp i!`%`_num_{i#35866}] +[visit_exp (((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst|)] +[visit_exp ((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] +[visit_exp (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#35866] -[visit_id i#35866] -[visit_exp ao.`OFFSET`_memarg{u64#413}!`%`_u64{i#35876}.0] -[visit_exp ao.`OFFSET`_memarg{u64#413}!`%`_u64{i#35876}] -[visit_exp ao.`OFFSET`_memarg{u64#413}] +[visit_exp ao.`OFFSET`_memarg!`%`_u64.0] +[visit_exp ao.`OFFSET`_memarg!`%`_u64] +[visit_exp ao.`OFFSET`_memarg] [visit_exp ao] [visit_id ao] not free -[visit_exp u64#413] -[visit_id u64#413] -[visit_exp i#35876] -[visit_id i#35876] [visit_exp (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] [visit_exp ((N : nat <:> rat) / (8 : nat <:> rat))] [visit_exp (N : nat <:> rat)] @@ -57881,52 +48179,34 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id N] not free [visit_exp (8 : nat <:> rat)] [visit_exp 8] -[visit_exp |$mem(z, x).`BYTES`_meminst{`byte*#1857`}|] -[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1857`}] +[visit_exp |$mem(z, x).`BYTES`_meminst|] +[visit_exp $mem(z, x).`BYTES`_meminst] [visit_exp $mem(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `byte*#1857`] -[visit_id byte*#1857] -[check_dims] Jnn M N ao at byte*#1858 c dim#7267 i i#35934 i#35992 i#36002 i#36033 i#36040 i#36120 i#36121 instr*#1206 j lanetype#7267 memarg#53 memidx#85 numtype#207 state#1091 sz#346 u64#414 vectype#72 vectype?#11 x z -[visit_exp `%;%`_config{state#1091, `instr*#1206`}(z, [`CONST`_instr{numtype#207}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#11`, memidx#85, memarg#53}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#346}(`%`_sz{i#35934}(N))), x, ao)])] -[visit_exp state#1091] -[visit_id state#1091] -[visit_exp `instr*#1206`] -[visit_id instr*#1206] -[visit_exp (z, [`CONST`_instr{numtype#207}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#11`, memidx#85, memarg#53}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#346}(`%`_sz{i#35934}(N))), x, ao)])] +[check_dims] Jnn M N ao at c i j x z +[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(N))), x, ao)])] +[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(N))), x, ao)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#207}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#11`, memidx#85, memarg#53}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#346}(`%`_sz{i#35934}(N))), x, ao)]] -[visit_exp `CONST`_instr{numtype#207}((at : addrtype <: numtype), i)] -[visit_exp numtype#207] -[visit_id numtype#207] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(N))), x, ao)]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] [visit_exp ((at : addrtype <: numtype), i)] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] [visit_exp i] [visit_id i] -[visit_exp `VLOAD`_instr{`vectype?#11`, memidx#85, memarg#53}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#346}(`%`_sz{i#35934}(N))), x, ao)] -[visit_exp `vectype?#11`] -[visit_id vectype?#11] -[visit_exp memidx#85] -[visit_id memidx#85] -[visit_exp memarg#53] -[visit_id memarg#53] -[visit_exp (`V128`_vectype, ?(`SPLAT`_vloadop_{sz#346}(`%`_sz{i#35934}(N))), x, ao)] +[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(N))), x, ao)] +[visit_exp (`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(N))), x, ao)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp ?(`SPLAT`_vloadop_{sz#346}(`%`_sz{i#35934}(N)))] -[visit_exp `SPLAT`_vloadop_{sz#346}(`%`_sz{i#35934}(N))] -[visit_exp sz#346] -[visit_id sz#346] -[visit_exp (`%`_sz{i#35934}(N))] -[visit_exp `%`_sz{i#35934}(N)] -[visit_exp i#35934] -[visit_id i#35934] +[visit_exp ?(`SPLAT`_vloadop_(`%`_sz(N)))] +[visit_exp `SPLAT`_vloadop_(`%`_sz(N))] +[visit_exp (`%`_sz(N))] +[visit_exp `%`_sz(N)] [visit_exp (N)] [visit_exp N] [visit_id N] @@ -57934,46 +48214,36 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id x] [visit_exp ao] [visit_id ao] -[visit_exp [`VCONST`_instr{vectype#72}(`V128`_vectype, c)]] -[visit_exp `VCONST`_instr{vectype#72}(`V128`_vectype, c)] -[visit_exp vectype#72] -[visit_id vectype#72] +[visit_exp [`VCONST`_instr(`V128`_vectype, c)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c)] [visit_exp (`V128`_vectype, c)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c] [visit_id c] -[visit_exp ($ibytes_(N, j) = $mem(z, x).`BYTES`_meminst{`byte*#1858`}[(i!`%`_num_{i#35992}.0 + ao.`OFFSET`_memarg{u64#414}!`%`_u64{i#36002}.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)])] +[visit_exp ($ibytes_(N, j) = $mem(z, x).`BYTES`_meminst[(i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)])] [visit_exp $ibytes_(N, j)] [visit_exp N] [visit_id N] not free [visit_exp j] [visit_id j] -[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1858`}[(i!`%`_num_{i#35992}.0 + ao.`OFFSET`_memarg{u64#414}!`%`_u64{i#36002}.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]] -[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1858`}] +[visit_exp $mem(z, x).`BYTES`_meminst[(i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]] +[visit_exp $mem(z, x).`BYTES`_meminst] [visit_exp $mem(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `byte*#1858`] -[visit_id byte*#1858] -[visit_exp (i!`%`_num_{i#35992}.0 + ao.`OFFSET`_memarg{u64#414}!`%`_u64{i#36002}.0)] -[visit_exp i!`%`_num_{i#35992}.0] -[visit_exp i!`%`_num_{i#35992}] +[visit_exp (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#35992] -[visit_id i#35992] -[visit_exp ao.`OFFSET`_memarg{u64#414}!`%`_u64{i#36002}.0] -[visit_exp ao.`OFFSET`_memarg{u64#414}!`%`_u64{i#36002}] -[visit_exp ao.`OFFSET`_memarg{u64#414}] +[visit_exp ao.`OFFSET`_memarg!`%`_u64.0] +[visit_exp ao.`OFFSET`_memarg!`%`_u64] +[visit_exp ao.`OFFSET`_memarg] [visit_exp ao] [visit_id ao] not free -[visit_exp u64#414] -[visit_id u64#414] -[visit_exp i#36002] -[visit_id i#36002] [visit_exp (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] [visit_exp ((N : nat <:> rat) / (8 : nat <:> rat))] [visit_exp (N : nat <:> rat)] @@ -57997,91 +48267,49 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp (N : nat <:> rat)] [visit_exp N] [visit_id N] not free -[visit_exp (c = $inv_lanes_(`%X%`_shape{lanetype#7267, dim#7267, i#36033}((Jnn : Jnn <: lanetype), `%`_dim{i#36040}(M)), `%`_lane_{i#36121}(j!`%`_iN{i#36120}.0)^M{i#36120 <- `i#36120*`, i#36121 <- `i#36121*`}))] +[visit_exp (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), `%`_lane_(j!`%`_iN.0)^M{}))] [visit_exp c] [visit_id c] not free -[visit_exp $inv_lanes_(`%X%`_shape{lanetype#7267, dim#7267, i#36033}((Jnn : Jnn <: lanetype), `%`_dim{i#36040}(M)), `%`_lane_{i#36121}(j!`%`_iN{i#36120}.0)^M{i#36120 <- `i#36120*`, i#36121 <- `i#36121*`})] -[visit_exp `%X%`_shape{lanetype#7267, dim#7267, i#36033}((Jnn : Jnn <: lanetype), `%`_dim{i#36040}(M))] -[visit_exp lanetype#7267] -[visit_id lanetype#7267] -[visit_exp dim#7267] -[visit_id dim#7267] -[visit_exp i#36033] -[visit_id i#36033] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#36040}(M))] +[visit_exp $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), `%`_lane_(j!`%`_iN.0)^M{})] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#36040}(M)] -[visit_exp i#36040] -[visit_id i#36040] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free -[visit_exp `%`_lane_{i#36121}(j!`%`_iN{i#36120}.0)^M{i#36120 <- `i#36120*`, i#36121 <- `i#36121*`}] -[scope_enter i#36120] -[scope_enter i#36121] -[visit_exp `%`_lane_{i#36121}(j!`%`_iN{i#36120}.0)] -[visit_exp i#36121] -[visit_id i#36121] not free -[visit_exp (j!`%`_iN{i#36120}.0)] -[visit_exp j!`%`_iN{i#36120}.0] -[visit_exp j!`%`_iN{i#36120}] +[visit_exp `%`_lane_(j!`%`_iN.0)^M{}] +[visit_exp `%`_lane_(j!`%`_iN.0)] +[visit_exp (j!`%`_iN.0)] +[visit_exp j!`%`_iN.0] +[visit_exp j!`%`_iN] [visit_exp j] [visit_id j] not free -[visit_exp i#36120] -[visit_id i#36120] not free -[visit_id i#36120] not free -[visit_id i#36121] not free -[scope_exit i#36121] -[scope_exit i#36120] [visit_exp M] [visit_id M] not free -[visit_exp `i#36120*`] -[visit_id i#36120*] no dims -[visit_id i#36120*] -[visit_exp `i#36121*`] -[visit_id i#36121*] no dims -[visit_id i#36121*] -[check_dims] N ao at byte*#1859 i i#36172 i#36179 i#36211 i#36221 instr*#1218 memarg#55 memidx#87 numtype#209 state#1103 sz#393 u64#415 vectype?#12 x z -[visit_exp `%;%`_config{state#1103, `instr*#1218`}(z, [`CONST`_instr{numtype#209}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#12`, memidx#87, memarg#55}(`V128`_vectype, ?(`ZERO`_vloadop_{sz#393, i#36172}(`%`_sz{i#36179}(N))), x, ao)])] -[visit_exp state#1103] -[visit_id state#1103] -[visit_exp `instr*#1218`] -[visit_id instr*#1218] -[visit_exp (z, [`CONST`_instr{numtype#209}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#12`, memidx#87, memarg#55}(`V128`_vectype, ?(`ZERO`_vloadop_{sz#393, i#36172}(`%`_sz{i#36179}(N))), x, ao)])] +[check_dims] N ao at i x z +[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(`ZERO`_vloadop_(`%`_sz(N))), x, ao)])] +[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(`ZERO`_vloadop_(`%`_sz(N))), x, ao)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#209}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#12`, memidx#87, memarg#55}(`V128`_vectype, ?(`ZERO`_vloadop_{sz#393, i#36172}(`%`_sz{i#36179}(N))), x, ao)]] -[visit_exp `CONST`_instr{numtype#209}((at : addrtype <: numtype), i)] -[visit_exp numtype#209] -[visit_id numtype#209] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(`ZERO`_vloadop_(`%`_sz(N))), x, ao)]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] [visit_exp ((at : addrtype <: numtype), i)] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] [visit_exp i] [visit_id i] -[visit_exp `VLOAD`_instr{`vectype?#12`, memidx#87, memarg#55}(`V128`_vectype, ?(`ZERO`_vloadop_{sz#393, i#36172}(`%`_sz{i#36179}(N))), x, ao)] -[visit_exp `vectype?#12`] -[visit_id vectype?#12] -[visit_exp memidx#87] -[visit_id memidx#87] -[visit_exp memarg#55] -[visit_id memarg#55] -[visit_exp (`V128`_vectype, ?(`ZERO`_vloadop_{sz#393, i#36172}(`%`_sz{i#36179}(N))), x, ao)] +[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`ZERO`_vloadop_(`%`_sz(N))), x, ao)] +[visit_exp (`V128`_vectype, ?(`ZERO`_vloadop_(`%`_sz(N))), x, ao)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp ?(`ZERO`_vloadop_{sz#393, i#36172}(`%`_sz{i#36179}(N)))] -[visit_exp `ZERO`_vloadop_{sz#393, i#36172}(`%`_sz{i#36179}(N))] -[visit_exp sz#393] -[visit_id sz#393] -[visit_exp i#36172] -[visit_id i#36172] -[visit_exp (`%`_sz{i#36179}(N))] -[visit_exp `%`_sz{i#36179}(N)] -[visit_exp i#36179] -[visit_id i#36179] +[visit_exp ?(`ZERO`_vloadop_(`%`_sz(N)))] +[visit_exp `ZERO`_vloadop_(`%`_sz(N))] +[visit_exp (`%`_sz(N))] +[visit_exp `%`_sz(N)] [visit_exp (N)] [visit_exp N] [visit_id N] @@ -58092,24 +48320,18 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[visit_exp (((i!`%`_num_{i#36211}.0 + ao.`OFFSET`_memarg{u64#415}!`%`_u64{i#36221}.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst{`byte*#1859`}|)] -[visit_exp ((i!`%`_num_{i#36211}.0 + ao.`OFFSET`_memarg{u64#415}!`%`_u64{i#36221}.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] -[visit_exp (i!`%`_num_{i#36211}.0 + ao.`OFFSET`_memarg{u64#415}!`%`_u64{i#36221}.0)] -[visit_exp i!`%`_num_{i#36211}.0] -[visit_exp i!`%`_num_{i#36211}] +[visit_exp (((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst|)] +[visit_exp ((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] +[visit_exp (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#36211] -[visit_id i#36211] -[visit_exp ao.`OFFSET`_memarg{u64#415}!`%`_u64{i#36221}.0] -[visit_exp ao.`OFFSET`_memarg{u64#415}!`%`_u64{i#36221}] -[visit_exp ao.`OFFSET`_memarg{u64#415}] +[visit_exp ao.`OFFSET`_memarg!`%`_u64.0] +[visit_exp ao.`OFFSET`_memarg!`%`_u64] +[visit_exp ao.`OFFSET`_memarg] [visit_exp ao] [visit_id ao] not free -[visit_exp u64#415] -[visit_id u64#415] -[visit_exp i#36221] -[visit_id i#36221] [visit_exp (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] [visit_exp ((N : nat <:> rat) / (8 : nat <:> rat))] [visit_exp (N : nat <:> rat)] @@ -58117,54 +48339,34 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id N] not free [visit_exp (8 : nat <:> rat)] [visit_exp 8] -[visit_exp |$mem(z, x).`BYTES`_meminst{`byte*#1859`}|] -[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1859`}] +[visit_exp |$mem(z, x).`BYTES`_meminst|] +[visit_exp $mem(z, x).`BYTES`_meminst] [visit_exp $mem(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `byte*#1859`] -[visit_id byte*#1859] -[check_dims] N ao at byte*#1860 c i i#36273 i#36280 i#36338 i#36348 instr*#1230 j memarg#57 memidx#89 numtype#211 state#1115 sz#440 u64#416 vectype#76 vectype?#13 x z -[visit_exp `%;%`_config{state#1115, `instr*#1230`}(z, [`CONST`_instr{numtype#211}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#13`, memidx#89, memarg#57}(`V128`_vectype, ?(`ZERO`_vloadop_{sz#440, i#36273}(`%`_sz{i#36280}(N))), x, ao)])] -[visit_exp state#1115] -[visit_id state#1115] -[visit_exp `instr*#1230`] -[visit_id instr*#1230] -[visit_exp (z, [`CONST`_instr{numtype#211}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#13`, memidx#89, memarg#57}(`V128`_vectype, ?(`ZERO`_vloadop_{sz#440, i#36273}(`%`_sz{i#36280}(N))), x, ao)])] +[check_dims] N ao at c i j x z +[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(`ZERO`_vloadop_(`%`_sz(N))), x, ao)])] +[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(`ZERO`_vloadop_(`%`_sz(N))), x, ao)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#211}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#13`, memidx#89, memarg#57}(`V128`_vectype, ?(`ZERO`_vloadop_{sz#440, i#36273}(`%`_sz{i#36280}(N))), x, ao)]] -[visit_exp `CONST`_instr{numtype#211}((at : addrtype <: numtype), i)] -[visit_exp numtype#211] -[visit_id numtype#211] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(`ZERO`_vloadop_(`%`_sz(N))), x, ao)]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] [visit_exp ((at : addrtype <: numtype), i)] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] [visit_exp i] [visit_id i] -[visit_exp `VLOAD`_instr{`vectype?#13`, memidx#89, memarg#57}(`V128`_vectype, ?(`ZERO`_vloadop_{sz#440, i#36273}(`%`_sz{i#36280}(N))), x, ao)] -[visit_exp `vectype?#13`] -[visit_id vectype?#13] -[visit_exp memidx#89] -[visit_id memidx#89] -[visit_exp memarg#57] -[visit_id memarg#57] -[visit_exp (`V128`_vectype, ?(`ZERO`_vloadop_{sz#440, i#36273}(`%`_sz{i#36280}(N))), x, ao)] +[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`ZERO`_vloadop_(`%`_sz(N))), x, ao)] +[visit_exp (`V128`_vectype, ?(`ZERO`_vloadop_(`%`_sz(N))), x, ao)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp ?(`ZERO`_vloadop_{sz#440, i#36273}(`%`_sz{i#36280}(N)))] -[visit_exp `ZERO`_vloadop_{sz#440, i#36273}(`%`_sz{i#36280}(N))] -[visit_exp sz#440] -[visit_id sz#440] -[visit_exp i#36273] -[visit_id i#36273] -[visit_exp (`%`_sz{i#36280}(N))] -[visit_exp `%`_sz{i#36280}(N)] -[visit_exp i#36280] -[visit_id i#36280] +[visit_exp ?(`ZERO`_vloadop_(`%`_sz(N)))] +[visit_exp `ZERO`_vloadop_(`%`_sz(N))] +[visit_exp (`%`_sz(N))] +[visit_exp `%`_sz(N)] [visit_exp (N)] [visit_exp N] [visit_id N] @@ -58172,46 +48374,36 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id x] [visit_exp ao] [visit_id ao] -[visit_exp [`VCONST`_instr{vectype#76}(`V128`_vectype, c)]] -[visit_exp `VCONST`_instr{vectype#76}(`V128`_vectype, c)] -[visit_exp vectype#76] -[visit_id vectype#76] +[visit_exp [`VCONST`_instr(`V128`_vectype, c)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c)] [visit_exp (`V128`_vectype, c)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c] [visit_id c] -[visit_exp ($ibytes_(N, j) = $mem(z, x).`BYTES`_meminst{`byte*#1860`}[(i!`%`_num_{i#36338}.0 + ao.`OFFSET`_memarg{u64#416}!`%`_u64{i#36348}.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)])] +[visit_exp ($ibytes_(N, j) = $mem(z, x).`BYTES`_meminst[(i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)])] [visit_exp $ibytes_(N, j)] [visit_exp N] [visit_id N] not free [visit_exp j] [visit_id j] -[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1860`}[(i!`%`_num_{i#36338}.0 + ao.`OFFSET`_memarg{u64#416}!`%`_u64{i#36348}.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]] -[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1860`}] +[visit_exp $mem(z, x).`BYTES`_meminst[(i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]] +[visit_exp $mem(z, x).`BYTES`_meminst] [visit_exp $mem(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `byte*#1860`] -[visit_id byte*#1860] -[visit_exp (i!`%`_num_{i#36338}.0 + ao.`OFFSET`_memarg{u64#416}!`%`_u64{i#36348}.0)] -[visit_exp i!`%`_num_{i#36338}.0] -[visit_exp i!`%`_num_{i#36338}] +[visit_exp (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#36338] -[visit_id i#36338] -[visit_exp ao.`OFFSET`_memarg{u64#416}!`%`_u64{i#36348}.0] -[visit_exp ao.`OFFSET`_memarg{u64#416}!`%`_u64{i#36348}] -[visit_exp ao.`OFFSET`_memarg{u64#416}] +[visit_exp ao.`OFFSET`_memarg!`%`_u64.0] +[visit_exp ao.`OFFSET`_memarg!`%`_u64] +[visit_exp ao.`OFFSET`_memarg] [visit_exp ao] [visit_id ao] not free -[visit_exp u64#416] -[visit_id u64#416] -[visit_exp i#36348] -[visit_id i#36348] [visit_exp (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] [visit_exp ((N : nat <:> rat) / (8 : nat <:> rat))] [visit_exp (N : nat <:> rat)] @@ -58230,50 +48422,30 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp ()] [visit_exp j] [visit_id j] not free -[check_dims] N ao at byte*#1861 c_1 i i#36428 i#36474 i#36484 instr*#1242 j laneidx#17 memarg#59 memidx#91 numtype#213 state#1127 sz#442 u64#417 vectype#78 vectype#80 x z -[visit_exp `%;%`_config{state#1127, `instr*#1242`}(z, [`CONST`_instr{numtype#213}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#78}(`V128`_vectype, c_1) `VLOAD_LANE`_instr{vectype#80, sz#442, memidx#91, memarg#59, laneidx#17}(`V128`_vectype, `%`_sz{i#36428}(N), x, ao, j)])] -[visit_exp state#1127] -[visit_id state#1127] -[visit_exp `instr*#1242`] -[visit_id instr*#1242] -[visit_exp (z, [`CONST`_instr{numtype#213}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#78}(`V128`_vectype, c_1) `VLOAD_LANE`_instr{vectype#80, sz#442, memidx#91, memarg#59, laneidx#17}(`V128`_vectype, `%`_sz{i#36428}(N), x, ao, j)])] +[check_dims] N ao at c_1 i j x z +[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `VCONST`_instr(`V128`_vectype, c_1) `VLOAD_LANE`_instr(`V128`_vectype, `%`_sz(N), x, ao, j)])] +[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `VCONST`_instr(`V128`_vectype, c_1) `VLOAD_LANE`_instr(`V128`_vectype, `%`_sz(N), x, ao, j)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#213}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#78}(`V128`_vectype, c_1) `VLOAD_LANE`_instr{vectype#80, sz#442, memidx#91, memarg#59, laneidx#17}(`V128`_vectype, `%`_sz{i#36428}(N), x, ao, j)]] -[visit_exp `CONST`_instr{numtype#213}((at : addrtype <: numtype), i)] -[visit_exp numtype#213] -[visit_id numtype#213] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `VCONST`_instr(`V128`_vectype, c_1) `VLOAD_LANE`_instr(`V128`_vectype, `%`_sz(N), x, ao, j)]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] [visit_exp ((at : addrtype <: numtype), i)] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] [visit_exp i] [visit_id i] -[visit_exp `VCONST`_instr{vectype#78}(`V128`_vectype, c_1)] -[visit_exp vectype#78] -[visit_id vectype#78] +[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] [visit_exp (`V128`_vectype, c_1)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c_1] [visit_id c_1] -[visit_exp `VLOAD_LANE`_instr{vectype#80, sz#442, memidx#91, memarg#59, laneidx#17}(`V128`_vectype, `%`_sz{i#36428}(N), x, ao, j)] -[visit_exp vectype#80] -[visit_id vectype#80] -[visit_exp sz#442] -[visit_id sz#442] -[visit_exp memidx#91] -[visit_id memidx#91] -[visit_exp memarg#59] -[visit_id memarg#59] -[visit_exp laneidx#17] -[visit_id laneidx#17] -[visit_exp (`V128`_vectype, `%`_sz{i#36428}(N), x, ao, j)] +[visit_exp `VLOAD_LANE`_instr(`V128`_vectype, `%`_sz(N), x, ao, j)] +[visit_exp (`V128`_vectype, `%`_sz(N), x, ao, j)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp `%`_sz{i#36428}(N)] -[visit_exp i#36428] -[visit_id i#36428] +[visit_exp `%`_sz(N)] [visit_exp (N)] [visit_exp N] [visit_id N] @@ -58286,24 +48458,18 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[visit_exp (((i!`%`_num_{i#36474}.0 + ao.`OFFSET`_memarg{u64#417}!`%`_u64{i#36484}.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst{`byte*#1861`}|)] -[visit_exp ((i!`%`_num_{i#36474}.0 + ao.`OFFSET`_memarg{u64#417}!`%`_u64{i#36484}.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] -[visit_exp (i!`%`_num_{i#36474}.0 + ao.`OFFSET`_memarg{u64#417}!`%`_u64{i#36484}.0)] -[visit_exp i!`%`_num_{i#36474}.0] -[visit_exp i!`%`_num_{i#36474}] +[visit_exp (((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst|)] +[visit_exp ((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] +[visit_exp (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#36474] -[visit_id i#36474] -[visit_exp ao.`OFFSET`_memarg{u64#417}!`%`_u64{i#36484}.0] -[visit_exp ao.`OFFSET`_memarg{u64#417}!`%`_u64{i#36484}] -[visit_exp ao.`OFFSET`_memarg{u64#417}] +[visit_exp ao.`OFFSET`_memarg!`%`_u64.0] +[visit_exp ao.`OFFSET`_memarg!`%`_u64] +[visit_exp ao.`OFFSET`_memarg] [visit_exp ao] [visit_id ao] not free -[visit_exp u64#417] -[visit_id u64#417] -[visit_exp i#36484] -[visit_id i#36484] [visit_exp (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] [visit_exp ((N : nat <:> rat) / (8 : nat <:> rat))] [visit_exp (N : nat <:> rat)] @@ -58311,59 +48477,37 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id N] not free [visit_exp (8 : nat <:> rat)] [visit_exp 8] -[visit_exp |$mem(z, x).`BYTES`_meminst{`byte*#1861`}|] -[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1861`}] +[visit_exp |$mem(z, x).`BYTES`_meminst|] +[visit_exp $mem(z, x).`BYTES`_meminst] [visit_exp $mem(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `byte*#1861`] -[visit_id byte*#1861] -[check_dims] Jnn M N ao at byte*#1862 c c_1 dim#7292 dim#7383 i i#36532 i#36604 i#36614 i#36645 i#36652 i#36877 i#36884 i#36910 i#36956 i#36957 instr*#1254 j k laneidx#19 lanetype#7292 lanetype#7383 memarg#61 memidx#93 numtype#215 state#1139 sz#444 u64#418 vectype#82 vectype#84 vectype#86 x z -[visit_exp `%;%`_config{state#1139, `instr*#1254`}(z, [`CONST`_instr{numtype#215}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#82}(`V128`_vectype, c_1) `VLOAD_LANE`_instr{vectype#84, sz#444, memidx#93, memarg#61, laneidx#19}(`V128`_vectype, `%`_sz{i#36532}(N), x, ao, j)])] -[visit_exp state#1139] -[visit_id state#1139] -[visit_exp `instr*#1254`] -[visit_id instr*#1254] -[visit_exp (z, [`CONST`_instr{numtype#215}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#82}(`V128`_vectype, c_1) `VLOAD_LANE`_instr{vectype#84, sz#444, memidx#93, memarg#61, laneidx#19}(`V128`_vectype, `%`_sz{i#36532}(N), x, ao, j)])] +[check_dims] Jnn M N ao at c c_1 i j k x z +[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `VCONST`_instr(`V128`_vectype, c_1) `VLOAD_LANE`_instr(`V128`_vectype, `%`_sz(N), x, ao, j)])] +[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `VCONST`_instr(`V128`_vectype, c_1) `VLOAD_LANE`_instr(`V128`_vectype, `%`_sz(N), x, ao, j)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#215}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#82}(`V128`_vectype, c_1) `VLOAD_LANE`_instr{vectype#84, sz#444, memidx#93, memarg#61, laneidx#19}(`V128`_vectype, `%`_sz{i#36532}(N), x, ao, j)]] -[visit_exp `CONST`_instr{numtype#215}((at : addrtype <: numtype), i)] -[visit_exp numtype#215] -[visit_id numtype#215] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `VCONST`_instr(`V128`_vectype, c_1) `VLOAD_LANE`_instr(`V128`_vectype, `%`_sz(N), x, ao, j)]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] [visit_exp ((at : addrtype <: numtype), i)] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] [visit_exp i] [visit_id i] -[visit_exp `VCONST`_instr{vectype#82}(`V128`_vectype, c_1)] -[visit_exp vectype#82] -[visit_id vectype#82] +[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] [visit_exp (`V128`_vectype, c_1)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c_1] [visit_id c_1] -[visit_exp `VLOAD_LANE`_instr{vectype#84, sz#444, memidx#93, memarg#61, laneidx#19}(`V128`_vectype, `%`_sz{i#36532}(N), x, ao, j)] -[visit_exp vectype#84] -[visit_id vectype#84] -[visit_exp sz#444] -[visit_id sz#444] -[visit_exp memidx#93] -[visit_id memidx#93] -[visit_exp memarg#61] -[visit_id memarg#61] -[visit_exp laneidx#19] -[visit_id laneidx#19] -[visit_exp (`V128`_vectype, `%`_sz{i#36532}(N), x, ao, j)] +[visit_exp `VLOAD_LANE`_instr(`V128`_vectype, `%`_sz(N), x, ao, j)] +[visit_exp (`V128`_vectype, `%`_sz(N), x, ao, j)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp `%`_sz{i#36532}(N)] -[visit_exp i#36532] -[visit_id i#36532] +[visit_exp `%`_sz(N)] [visit_exp (N)] [visit_exp N] [visit_id N] @@ -58373,46 +48517,36 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id ao] [visit_exp j] [visit_id j] -[visit_exp [`VCONST`_instr{vectype#86}(`V128`_vectype, c)]] -[visit_exp `VCONST`_instr{vectype#86}(`V128`_vectype, c)] -[visit_exp vectype#86] -[visit_id vectype#86] +[visit_exp [`VCONST`_instr(`V128`_vectype, c)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c)] [visit_exp (`V128`_vectype, c)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c] [visit_id c] -[visit_exp ($ibytes_(N, k) = $mem(z, x).`BYTES`_meminst{`byte*#1862`}[(i!`%`_num_{i#36604}.0 + ao.`OFFSET`_memarg{u64#418}!`%`_u64{i#36614}.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)])] +[visit_exp ($ibytes_(N, k) = $mem(z, x).`BYTES`_meminst[(i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)])] [visit_exp $ibytes_(N, k)] [visit_exp N] [visit_id N] not free [visit_exp k] [visit_id k] -[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1862`}[(i!`%`_num_{i#36604}.0 + ao.`OFFSET`_memarg{u64#418}!`%`_u64{i#36614}.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]] -[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1862`}] +[visit_exp $mem(z, x).`BYTES`_meminst[(i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]] +[visit_exp $mem(z, x).`BYTES`_meminst] [visit_exp $mem(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `byte*#1862`] -[visit_id byte*#1862] -[visit_exp (i!`%`_num_{i#36604}.0 + ao.`OFFSET`_memarg{u64#418}!`%`_u64{i#36614}.0)] -[visit_exp i!`%`_num_{i#36604}.0] -[visit_exp i!`%`_num_{i#36604}] +[visit_exp (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#36604] -[visit_id i#36604] -[visit_exp ao.`OFFSET`_memarg{u64#418}!`%`_u64{i#36614}.0] -[visit_exp ao.`OFFSET`_memarg{u64#418}!`%`_u64{i#36614}] -[visit_exp ao.`OFFSET`_memarg{u64#418}] +[visit_exp ao.`OFFSET`_memarg!`%`_u64.0] +[visit_exp ao.`OFFSET`_memarg!`%`_u64] +[visit_exp ao.`OFFSET`_memarg] [visit_exp ao] [visit_id ao] not free -[visit_exp u64#418] -[visit_id u64#418] -[visit_exp i#36614] -[visit_id i#36614] [visit_exp (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] [visit_exp ((N : nat <:> rat) / (8 : nat <:> rat))] [visit_exp (N : nat <:> rat)] @@ -58438,98 +48572,62 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp (N : nat <:> rat)] [visit_exp N] [visit_id N] not free -[visit_exp (c = $inv_lanes_(`%X%`_shape{lanetype#7292, dim#7292, i#36645}((Jnn : Jnn <: lanetype), `%`_dim{i#36652}(M)), $lanes_(`%X%`_shape{lanetype#7383, dim#7383, i#36877}((Jnn : Jnn <: lanetype), `%`_dim{i#36884}(M)), c_1)[[j!`%`_laneidx{i#36910}.0] = `%`_lane_{i#36957}(k!`%`_iN{i#36956}.0)]))] +[visit_exp (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)]))] [visit_exp c] [visit_id c] not free -[visit_exp $inv_lanes_(`%X%`_shape{lanetype#7292, dim#7292, i#36645}((Jnn : Jnn <: lanetype), `%`_dim{i#36652}(M)), $lanes_(`%X%`_shape{lanetype#7383, dim#7383, i#36877}((Jnn : Jnn <: lanetype), `%`_dim{i#36884}(M)), c_1)[[j!`%`_laneidx{i#36910}.0] = `%`_lane_{i#36957}(k!`%`_iN{i#36956}.0)])] -[visit_exp `%X%`_shape{lanetype#7292, dim#7292, i#36645}((Jnn : Jnn <: lanetype), `%`_dim{i#36652}(M))] -[visit_exp lanetype#7292] -[visit_id lanetype#7292] -[visit_exp dim#7292] -[visit_id dim#7292] -[visit_exp i#36645] -[visit_id i#36645] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#36652}(M))] +[visit_exp $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)])] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#36652}(M)] -[visit_exp i#36652] -[visit_id i#36652] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free -[visit_exp $lanes_(`%X%`_shape{lanetype#7383, dim#7383, i#36877}((Jnn : Jnn <: lanetype), `%`_dim{i#36884}(M)), c_1)[[j!`%`_laneidx{i#36910}.0] = `%`_lane_{i#36957}(k!`%`_iN{i#36956}.0)]] -[visit_exp $lanes_(`%X%`_shape{lanetype#7383, dim#7383, i#36877}((Jnn : Jnn <: lanetype), `%`_dim{i#36884}(M)), c_1)] -[visit_exp `%X%`_shape{lanetype#7383, dim#7383, i#36877}((Jnn : Jnn <: lanetype), `%`_dim{i#36884}(M))] -[visit_exp lanetype#7383] -[visit_id lanetype#7383] -[visit_exp dim#7383] -[visit_id dim#7383] -[visit_exp i#36877] -[visit_id i#36877] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#36884}(M))] +[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)[[j!`%`_laneidx.0] = `%`_lane_(k!`%`_iN.0)]] +[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#36884}(M)] -[visit_exp i#36884] -[visit_id i#36884] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free [visit_exp c_1] [visit_id c_1] not free -[visit_exp j!`%`_laneidx{i#36910}.0] -[visit_exp j!`%`_laneidx{i#36910}] +[visit_exp j!`%`_laneidx.0] +[visit_exp j!`%`_laneidx] [visit_exp j] [visit_id j] not free -[visit_exp i#36910] -[visit_id i#36910] -[visit_exp `%`_lane_{i#36957}(k!`%`_iN{i#36956}.0)] -[visit_exp i#36957] -[visit_id i#36957] -[visit_exp (k!`%`_iN{i#36956}.0)] -[visit_exp k!`%`_iN{i#36956}.0] -[visit_exp k!`%`_iN{i#36956}] +[visit_exp `%`_lane_(k!`%`_iN.0)] +[visit_exp (k!`%`_iN.0)] +[visit_exp k!`%`_iN.0] +[visit_exp k!`%`_iN] [visit_exp k] [visit_id k] not free -[visit_exp i#36956] -[visit_id i#36956] -[check_dims] ao at byte*#1863 c i i#37014 i#37024 instr*#1266 instr*#1278 memarg#63 memidx#95 nt numtype#217 numtype#219 numtype?#11 state#1151 state#1163 u64#419 x z -[visit_exp `%;%`_config{state#1151, `instr*#1266`}(z, [`CONST`_instr{numtype#217}((at : addrtype <: numtype), i) `CONST`_instr{numtype#219}(nt, c) `STORE`_instr{`numtype?#11`, memidx#95, memarg#63}(nt, ?(), x, ao)])] -[visit_exp state#1151] -[visit_id state#1151] -[visit_exp `instr*#1266`] -[visit_id instr*#1266] -[visit_exp (z, [`CONST`_instr{numtype#217}((at : addrtype <: numtype), i) `CONST`_instr{numtype#219}(nt, c) `STORE`_instr{`numtype?#11`, memidx#95, memarg#63}(nt, ?(), x, ao)])] +[check_dims] ao at c i nt x z +[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(nt, c) `STORE`_instr(nt, ?(), x, ao)])] +[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(nt, c) `STORE`_instr(nt, ?(), x, ao)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#217}((at : addrtype <: numtype), i) `CONST`_instr{numtype#219}(nt, c) `STORE`_instr{`numtype?#11`, memidx#95, memarg#63}(nt, ?(), x, ao)]] -[visit_exp `CONST`_instr{numtype#217}((at : addrtype <: numtype), i)] -[visit_exp numtype#217] -[visit_id numtype#217] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(nt, c) `STORE`_instr(nt, ?(), x, ao)]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] [visit_exp ((at : addrtype <: numtype), i)] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] [visit_exp i] [visit_id i] -[visit_exp `CONST`_instr{numtype#219}(nt, c)] -[visit_exp numtype#219] -[visit_id numtype#219] +[visit_exp `CONST`_instr(nt, c)] [visit_exp (nt, c)] [visit_exp nt] [visit_id nt] [visit_exp c] [visit_id c] -[visit_exp `STORE`_instr{`numtype?#11`, memidx#95, memarg#63}(nt, ?(), x, ao)] -[visit_exp `numtype?#11`] -[visit_id numtype?#11] -[visit_exp memidx#95] -[visit_id memidx#95] -[visit_exp memarg#63] -[visit_id memarg#63] +[visit_exp `STORE`_instr(nt, ?(), x, ao)] [visit_exp (nt, ?(), x, ao)] [visit_exp nt] [visit_id nt] not free @@ -58538,35 +48636,25 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id x] [visit_exp ao] [visit_id ao] -[visit_exp `%;%`_config{state#1163, `instr*#1278`}(z, [`TRAP`_instr])] -[visit_exp state#1163] -[visit_id state#1163] -[visit_exp `instr*#1278`] -[visit_id instr*#1278] +[visit_exp `%;%`_config(z, [`TRAP`_instr])] [visit_exp (z, [`TRAP`_instr])] [visit_exp z] [visit_id z] not free [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[visit_exp (((i!`%`_num_{i#37014}.0 + ao.`OFFSET`_memarg{u64#419}!`%`_u64{i#37024}.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst{`byte*#1863`}|)] -[visit_exp ((i!`%`_num_{i#37014}.0 + ao.`OFFSET`_memarg{u64#419}!`%`_u64{i#37024}.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] -[visit_exp (i!`%`_num_{i#37014}.0 + ao.`OFFSET`_memarg{u64#419}!`%`_u64{i#37024}.0)] -[visit_exp i!`%`_num_{i#37014}.0] -[visit_exp i!`%`_num_{i#37014}] +[visit_exp (((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst|)] +[visit_exp ((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] +[visit_exp (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#37014] -[visit_id i#37014] -[visit_exp ao.`OFFSET`_memarg{u64#419}!`%`_u64{i#37024}.0] -[visit_exp ao.`OFFSET`_memarg{u64#419}!`%`_u64{i#37024}] -[visit_exp ao.`OFFSET`_memarg{u64#419}] +[visit_exp ao.`OFFSET`_memarg!`%`_u64.0] +[visit_exp ao.`OFFSET`_memarg!`%`_u64] +[visit_exp ao.`OFFSET`_memarg] [visit_exp ao] [visit_id ao] not free -[visit_exp u64#419] -[visit_id u64#419] -[visit_exp i#37024] -[visit_id i#37024] [visit_exp ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] [visit_exp (($size(nt) : nat <:> rat) / (8 : nat <:> rat))] [visit_exp ($size(nt) : nat <:> rat)] @@ -58575,49 +48663,33 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id nt] not free [visit_exp (8 : nat <:> rat)] [visit_exp 8] -[visit_exp |$mem(z, x).`BYTES`_meminst{`byte*#1863`}|] -[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1863`}] +[visit_exp |$mem(z, x).`BYTES`_meminst|] +[visit_exp $mem(z, x).`BYTES`_meminst] [visit_exp $mem(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `byte*#1863`] -[visit_id byte*#1863] -[check_dims] ao at b c i i#37094 i#37104 instr*#1290 instr*#1302 memarg#65 memidx#97 nt numtype#222 numtype#224 numtype?#12 state#1175 state#1187 u64#420 x z -[visit_exp `%;%`_config{state#1175, `instr*#1290`}(z, [`CONST`_instr{numtype#222}((at : addrtype <: numtype), i) `CONST`_instr{numtype#224}(nt, c) `STORE`_instr{`numtype?#12`, memidx#97, memarg#65}(nt, ?(), x, ao)])] -[visit_exp state#1175] -[visit_id state#1175] -[visit_exp `instr*#1290`] -[visit_id instr*#1290] -[visit_exp (z, [`CONST`_instr{numtype#222}((at : addrtype <: numtype), i) `CONST`_instr{numtype#224}(nt, c) `STORE`_instr{`numtype?#12`, memidx#97, memarg#65}(nt, ?(), x, ao)])] +[check_dims] ao at b c i nt x z +[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(nt, c) `STORE`_instr(nt, ?(), x, ao)])] +[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(nt, c) `STORE`_instr(nt, ?(), x, ao)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#222}((at : addrtype <: numtype), i) `CONST`_instr{numtype#224}(nt, c) `STORE`_instr{`numtype?#12`, memidx#97, memarg#65}(nt, ?(), x, ao)]] -[visit_exp `CONST`_instr{numtype#222}((at : addrtype <: numtype), i)] -[visit_exp numtype#222] -[visit_id numtype#222] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(nt, c) `STORE`_instr(nt, ?(), x, ao)]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] [visit_exp ((at : addrtype <: numtype), i)] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] [visit_exp i] [visit_id i] -[visit_exp `CONST`_instr{numtype#224}(nt, c)] -[visit_exp numtype#224] -[visit_id numtype#224] +[visit_exp `CONST`_instr(nt, c)] [visit_exp (nt, c)] [visit_exp nt] [visit_id nt] [visit_exp c] [visit_id c] -[visit_exp `STORE`_instr{`numtype?#12`, memidx#97, memarg#65}(nt, ?(), x, ao)] -[visit_exp `numtype?#12`] -[visit_id numtype?#12] -[visit_exp memidx#97] -[visit_id memidx#97] -[visit_exp memarg#65] -[visit_id memarg#65] +[visit_exp `STORE`_instr(nt, ?(), x, ao)] [visit_exp (nt, ?(), x, ao)] [visit_exp nt] [visit_id nt] not free @@ -58626,33 +48698,23 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id x] [visit_exp ao] [visit_id ao] -[visit_exp `%;%`_config{state#1187, `instr*#1302`}($with_mem(z, x, (i!`%`_num_{i#37094}.0 + ao.`OFFSET`_memarg{u64#420}!`%`_u64{i#37104}.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])] -[visit_exp state#1187] -[visit_id state#1187] -[visit_exp `instr*#1302`] -[visit_id instr*#1302] -[visit_exp ($with_mem(z, x, (i!`%`_num_{i#37094}.0 + ao.`OFFSET`_memarg{u64#420}!`%`_u64{i#37104}.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])] -[visit_exp $with_mem(z, x, (i!`%`_num_{i#37094}.0 + ao.`OFFSET`_memarg{u64#420}!`%`_u64{i#37104}.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`})] +[visit_exp `%;%`_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*`}), [])] +[visit_exp ($with_mem(z, x, (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])] +[visit_exp $with_mem(z, x, (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`})] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp (i!`%`_num_{i#37094}.0 + ao.`OFFSET`_memarg{u64#420}!`%`_u64{i#37104}.0)] -[visit_exp i!`%`_num_{i#37094}.0] -[visit_exp i!`%`_num_{i#37094}] +[visit_exp (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#37094] -[visit_id i#37094] -[visit_exp ao.`OFFSET`_memarg{u64#420}!`%`_u64{i#37104}.0] -[visit_exp ao.`OFFSET`_memarg{u64#420}!`%`_u64{i#37104}] -[visit_exp ao.`OFFSET`_memarg{u64#420}] +[visit_exp ao.`OFFSET`_memarg!`%`_u64.0] +[visit_exp ao.`OFFSET`_memarg!`%`_u64] +[visit_exp ao.`OFFSET`_memarg] [visit_exp ao] [visit_id ao] not free -[visit_exp u64#420] -[visit_id u64#420] -[visit_exp i#37104] -[visit_id i#37104] [visit_exp ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] [visit_exp (($size(nt) : nat <:> rat) / (8 : nat <:> rat))] [visit_exp ($size(nt) : nat <:> rat)] @@ -58686,55 +48748,35 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id nt] not free [visit_exp c] [visit_id c] not free -[check_dims] Inn ao at byte*#1864 c i i#37199 i#37200 i#37232 i#37242 instr*#1314 instr*#1326 memarg#67 memidx#99 n numtype#227 numtype#229 numtype?#13 state#1199 state#1211 sz#446 u64#421 x z -[visit_exp `%;%`_config{state#1199, `instr*#1314`}(z, [`CONST`_instr{numtype#227}((at : addrtype <: numtype), i) `CONST`_instr{numtype#229}((Inn : Inn <: numtype), c) `STORE`_instr{`numtype?#13`, memidx#99, memarg#67}((Inn : Inn <: numtype), ?(`%`_storeop_{sz#446, i#37199}(`%`_sz{i#37200}(n))), x, ao)])] -[visit_exp state#1199] -[visit_id state#1199] -[visit_exp `instr*#1314`] -[visit_id instr*#1314] -[visit_exp (z, [`CONST`_instr{numtype#227}((at : addrtype <: numtype), i) `CONST`_instr{numtype#229}((Inn : Inn <: numtype), c) `STORE`_instr{`numtype?#13`, memidx#99, memarg#67}((Inn : Inn <: numtype), ?(`%`_storeop_{sz#446, i#37199}(`%`_sz{i#37200}(n))), x, ao)])] +[check_dims] Inn ao at c i n x z +[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr((Inn : Inn <: numtype), c) `STORE`_instr((Inn : Inn <: numtype), ?(`%`_storeop_(`%`_sz(n))), x, ao)])] +[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr((Inn : Inn <: numtype), c) `STORE`_instr((Inn : Inn <: numtype), ?(`%`_storeop_(`%`_sz(n))), x, ao)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#227}((at : addrtype <: numtype), i) `CONST`_instr{numtype#229}((Inn : Inn <: numtype), c) `STORE`_instr{`numtype?#13`, memidx#99, memarg#67}((Inn : Inn <: numtype), ?(`%`_storeop_{sz#446, i#37199}(`%`_sz{i#37200}(n))), x, ao)]] -[visit_exp `CONST`_instr{numtype#227}((at : addrtype <: numtype), i)] -[visit_exp numtype#227] -[visit_id numtype#227] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr((Inn : Inn <: numtype), c) `STORE`_instr((Inn : Inn <: numtype), ?(`%`_storeop_(`%`_sz(n))), x, ao)]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] [visit_exp ((at : addrtype <: numtype), i)] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] [visit_exp i] [visit_id i] -[visit_exp `CONST`_instr{numtype#229}((Inn : Inn <: numtype), c)] -[visit_exp numtype#229] -[visit_id numtype#229] +[visit_exp `CONST`_instr((Inn : Inn <: numtype), c)] [visit_exp ((Inn : Inn <: numtype), c)] [visit_exp (Inn : Inn <: numtype)] [visit_exp Inn] [visit_id Inn] [visit_exp c] [visit_id c] -[visit_exp `STORE`_instr{`numtype?#13`, memidx#99, memarg#67}((Inn : Inn <: numtype), ?(`%`_storeop_{sz#446, i#37199}(`%`_sz{i#37200}(n))), x, ao)] -[visit_exp `numtype?#13`] -[visit_id numtype?#13] -[visit_exp memidx#99] -[visit_id memidx#99] -[visit_exp memarg#67] -[visit_id memarg#67] -[visit_exp ((Inn : Inn <: numtype), ?(`%`_storeop_{sz#446, i#37199}(`%`_sz{i#37200}(n))), x, ao)] +[visit_exp `STORE`_instr((Inn : Inn <: numtype), ?(`%`_storeop_(`%`_sz(n))), x, ao)] +[visit_exp ((Inn : Inn <: numtype), ?(`%`_storeop_(`%`_sz(n))), x, ao)] [visit_exp (Inn : Inn <: numtype)] [visit_exp Inn] [visit_id Inn] not free -[visit_exp ?(`%`_storeop_{sz#446, i#37199}(`%`_sz{i#37200}(n)))] -[visit_exp `%`_storeop_{sz#446, i#37199}(`%`_sz{i#37200}(n))] -[visit_exp sz#446] -[visit_id sz#446] -[visit_exp i#37199] -[visit_id i#37199] -[visit_exp (`%`_sz{i#37200}(n))] -[visit_exp `%`_sz{i#37200}(n)] -[visit_exp i#37200] -[visit_id i#37200] +[visit_exp ?(`%`_storeop_(`%`_sz(n)))] +[visit_exp `%`_storeop_(`%`_sz(n))] +[visit_exp (`%`_sz(n))] +[visit_exp `%`_sz(n)] [visit_exp (n)] [visit_exp n] [visit_id n] @@ -58742,35 +48784,25 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id x] [visit_exp ao] [visit_id ao] -[visit_exp `%;%`_config{state#1211, `instr*#1326`}(z, [`TRAP`_instr])] -[visit_exp state#1211] -[visit_id state#1211] -[visit_exp `instr*#1326`] -[visit_id instr*#1326] +[visit_exp `%;%`_config(z, [`TRAP`_instr])] [visit_exp (z, [`TRAP`_instr])] [visit_exp z] [visit_id z] not free [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[visit_exp (((i!`%`_num_{i#37232}.0 + ao.`OFFSET`_memarg{u64#421}!`%`_u64{i#37242}.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst{`byte*#1864`}|)] -[visit_exp ((i!`%`_num_{i#37232}.0 + ao.`OFFSET`_memarg{u64#421}!`%`_u64{i#37242}.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] -[visit_exp (i!`%`_num_{i#37232}.0 + ao.`OFFSET`_memarg{u64#421}!`%`_u64{i#37242}.0)] -[visit_exp i!`%`_num_{i#37232}.0] -[visit_exp i!`%`_num_{i#37232}] +[visit_exp (((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst|)] +[visit_exp ((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] +[visit_exp (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#37232] -[visit_id i#37232] -[visit_exp ao.`OFFSET`_memarg{u64#421}!`%`_u64{i#37242}.0] -[visit_exp ao.`OFFSET`_memarg{u64#421}!`%`_u64{i#37242}] -[visit_exp ao.`OFFSET`_memarg{u64#421}] +[visit_exp ao.`OFFSET`_memarg!`%`_u64.0] +[visit_exp ao.`OFFSET`_memarg!`%`_u64] +[visit_exp ao.`OFFSET`_memarg] [visit_exp ao] [visit_id ao] not free -[visit_exp u64#421] -[visit_id u64#421] -[visit_exp i#37242] -[visit_id i#37242] [visit_exp (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] [visit_exp ((n : nat <:> rat) / (8 : nat <:> rat))] [visit_exp (n : nat <:> rat)] @@ -58778,64 +48810,42 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id n] not free [visit_exp (8 : nat <:> rat)] [visit_exp 8] -[visit_exp |$mem(z, x).`BYTES`_meminst{`byte*#1864`}|] -[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1864`}] +[visit_exp |$mem(z, x).`BYTES`_meminst|] +[visit_exp $mem(z, x).`BYTES`_meminst] [visit_exp $mem(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `byte*#1864`] -[visit_id byte*#1864] -[check_dims] Inn ao at b c i i#37325 i#37326 i#37370 i#37380 instr*#1338 instr*#1350 memarg#69 memidx#101 n numtype#232 numtype#234 numtype?#14 state#1223 state#1235 sz#448 u64#422 x z -[visit_exp `%;%`_config{state#1223, `instr*#1338`}(z, [`CONST`_instr{numtype#232}((at : addrtype <: numtype), i) `CONST`_instr{numtype#234}((Inn : Inn <: numtype), c) `STORE`_instr{`numtype?#14`, memidx#101, memarg#69}((Inn : Inn <: numtype), ?(`%`_storeop_{sz#448, i#37325}(`%`_sz{i#37326}(n))), x, ao)])] -[visit_exp state#1223] -[visit_id state#1223] -[visit_exp `instr*#1338`] -[visit_id instr*#1338] -[visit_exp (z, [`CONST`_instr{numtype#232}((at : addrtype <: numtype), i) `CONST`_instr{numtype#234}((Inn : Inn <: numtype), c) `STORE`_instr{`numtype?#14`, memidx#101, memarg#69}((Inn : Inn <: numtype), ?(`%`_storeop_{sz#448, i#37325}(`%`_sz{i#37326}(n))), x, ao)])] +[check_dims] Inn ao at b c i n x z +[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr((Inn : Inn <: numtype), c) `STORE`_instr((Inn : Inn <: numtype), ?(`%`_storeop_(`%`_sz(n))), x, ao)])] +[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr((Inn : Inn <: numtype), c) `STORE`_instr((Inn : Inn <: numtype), ?(`%`_storeop_(`%`_sz(n))), x, ao)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#232}((at : addrtype <: numtype), i) `CONST`_instr{numtype#234}((Inn : Inn <: numtype), c) `STORE`_instr{`numtype?#14`, memidx#101, memarg#69}((Inn : Inn <: numtype), ?(`%`_storeop_{sz#448, i#37325}(`%`_sz{i#37326}(n))), x, ao)]] -[visit_exp `CONST`_instr{numtype#232}((at : addrtype <: numtype), i)] -[visit_exp numtype#232] -[visit_id numtype#232] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr((Inn : Inn <: numtype), c) `STORE`_instr((Inn : Inn <: numtype), ?(`%`_storeop_(`%`_sz(n))), x, ao)]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] [visit_exp ((at : addrtype <: numtype), i)] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] [visit_exp i] [visit_id i] -[visit_exp `CONST`_instr{numtype#234}((Inn : Inn <: numtype), c)] -[visit_exp numtype#234] -[visit_id numtype#234] +[visit_exp `CONST`_instr((Inn : Inn <: numtype), c)] [visit_exp ((Inn : Inn <: numtype), c)] [visit_exp (Inn : Inn <: numtype)] [visit_exp Inn] [visit_id Inn] [visit_exp c] [visit_id c] -[visit_exp `STORE`_instr{`numtype?#14`, memidx#101, memarg#69}((Inn : Inn <: numtype), ?(`%`_storeop_{sz#448, i#37325}(`%`_sz{i#37326}(n))), x, ao)] -[visit_exp `numtype?#14`] -[visit_id numtype?#14] -[visit_exp memidx#101] -[visit_id memidx#101] -[visit_exp memarg#69] -[visit_id memarg#69] -[visit_exp ((Inn : Inn <: numtype), ?(`%`_storeop_{sz#448, i#37325}(`%`_sz{i#37326}(n))), x, ao)] +[visit_exp `STORE`_instr((Inn : Inn <: numtype), ?(`%`_storeop_(`%`_sz(n))), x, ao)] +[visit_exp ((Inn : Inn <: numtype), ?(`%`_storeop_(`%`_sz(n))), x, ao)] [visit_exp (Inn : Inn <: numtype)] [visit_exp Inn] [visit_id Inn] not free -[visit_exp ?(`%`_storeop_{sz#448, i#37325}(`%`_sz{i#37326}(n)))] -[visit_exp `%`_storeop_{sz#448, i#37325}(`%`_sz{i#37326}(n))] -[visit_exp sz#448] -[visit_id sz#448] -[visit_exp i#37325] -[visit_id i#37325] -[visit_exp (`%`_sz{i#37326}(n))] -[visit_exp `%`_sz{i#37326}(n)] -[visit_exp i#37326] -[visit_id i#37326] +[visit_exp ?(`%`_storeop_(`%`_sz(n)))] +[visit_exp `%`_storeop_(`%`_sz(n))] +[visit_exp (`%`_sz(n))] +[visit_exp `%`_sz(n)] [visit_exp (n)] [visit_exp n] [visit_id n] @@ -58843,33 +48853,23 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id x] [visit_exp ao] [visit_id ao] -[visit_exp `%;%`_config{state#1235, `instr*#1350`}($with_mem(z, x, (i!`%`_num_{i#37370}.0 + ao.`OFFSET`_memarg{u64#422}!`%`_u64{i#37380}.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])] -[visit_exp state#1235] -[visit_id state#1235] -[visit_exp `instr*#1350`] -[visit_id instr*#1350] -[visit_exp ($with_mem(z, x, (i!`%`_num_{i#37370}.0 + ao.`OFFSET`_memarg{u64#422}!`%`_u64{i#37380}.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])] -[visit_exp $with_mem(z, x, (i!`%`_num_{i#37370}.0 + ao.`OFFSET`_memarg{u64#422}!`%`_u64{i#37380}.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`})] +[visit_exp `%;%`_config($with_mem(z, x, (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])] +[visit_exp ($with_mem(z, x, (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])] +[visit_exp $with_mem(z, x, (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`})] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp (i!`%`_num_{i#37370}.0 + ao.`OFFSET`_memarg{u64#422}!`%`_u64{i#37380}.0)] -[visit_exp i!`%`_num_{i#37370}.0] -[visit_exp i!`%`_num_{i#37370}] +[visit_exp (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#37370] -[visit_id i#37370] -[visit_exp ao.`OFFSET`_memarg{u64#422}!`%`_u64{i#37380}.0] -[visit_exp ao.`OFFSET`_memarg{u64#422}!`%`_u64{i#37380}] -[visit_exp ao.`OFFSET`_memarg{u64#422}] +[visit_exp ao.`OFFSET`_memarg!`%`_u64.0] +[visit_exp ao.`OFFSET`_memarg!`%`_u64] +[visit_exp ao.`OFFSET`_memarg] [visit_exp ao] [visit_id ao] not free -[visit_exp u64#422] -[visit_id u64#422] -[visit_exp i#37380] -[visit_id i#37380] [visit_exp (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] [visit_exp ((n : nat <:> rat) / (8 : nat <:> rat))] [visit_exp (n : nat <:> rat)] @@ -58909,40 +48909,26 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id n] not free [visit_exp c] [visit_id c] not free -[check_dims] ao at byte*#1865 c i i#37486 i#37496 instr*#1362 instr*#1374 memarg#71 memidx#103 numtype#237 state#1247 state#1259 u64#423 vectype#88 vectype#90 x z -[visit_exp `%;%`_config{state#1247, `instr*#1362`}(z, [`CONST`_instr{numtype#237}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#88}(`V128`_vectype, c) `VSTORE`_instr{vectype#90, memidx#103, memarg#71}(`V128`_vectype, x, ao)])] -[visit_exp state#1247] -[visit_id state#1247] -[visit_exp `instr*#1362`] -[visit_id instr*#1362] -[visit_exp (z, [`CONST`_instr{numtype#237}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#88}(`V128`_vectype, c) `VSTORE`_instr{vectype#90, memidx#103, memarg#71}(`V128`_vectype, x, ao)])] +[check_dims] ao at c i x z +[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `VCONST`_instr(`V128`_vectype, c) `VSTORE`_instr(`V128`_vectype, x, ao)])] +[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `VCONST`_instr(`V128`_vectype, c) `VSTORE`_instr(`V128`_vectype, x, ao)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#237}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#88}(`V128`_vectype, c) `VSTORE`_instr{vectype#90, memidx#103, memarg#71}(`V128`_vectype, x, ao)]] -[visit_exp `CONST`_instr{numtype#237}((at : addrtype <: numtype), i)] -[visit_exp numtype#237] -[visit_id numtype#237] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `VCONST`_instr(`V128`_vectype, c) `VSTORE`_instr(`V128`_vectype, x, ao)]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] [visit_exp ((at : addrtype <: numtype), i)] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] [visit_exp i] [visit_id i] -[visit_exp `VCONST`_instr{vectype#88}(`V128`_vectype, c)] -[visit_exp vectype#88] -[visit_id vectype#88] +[visit_exp `VCONST`_instr(`V128`_vectype, c)] [visit_exp (`V128`_vectype, c)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c] [visit_id c] -[visit_exp `VSTORE`_instr{vectype#90, memidx#103, memarg#71}(`V128`_vectype, x, ao)] -[visit_exp vectype#90] -[visit_id vectype#90] -[visit_exp memidx#103] -[visit_id memidx#103] -[visit_exp memarg#71] -[visit_id memarg#71] +[visit_exp `VSTORE`_instr(`V128`_vectype, x, ao)] [visit_exp (`V128`_vectype, x, ao)] [visit_exp `V128`_vectype] [visit_exp ()] @@ -58950,35 +48936,25 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id x] [visit_exp ao] [visit_id ao] -[visit_exp `%;%`_config{state#1259, `instr*#1374`}(z, [`TRAP`_instr])] -[visit_exp state#1259] -[visit_id state#1259] -[visit_exp `instr*#1374`] -[visit_id instr*#1374] +[visit_exp `%;%`_config(z, [`TRAP`_instr])] [visit_exp (z, [`TRAP`_instr])] [visit_exp z] [visit_id z] not free [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[visit_exp (((i!`%`_num_{i#37486}.0 + ao.`OFFSET`_memarg{u64#423}!`%`_u64{i#37496}.0) + ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst{`byte*#1865`}|)] -[visit_exp ((i!`%`_num_{i#37486}.0 + ao.`OFFSET`_memarg{u64#423}!`%`_u64{i#37496}.0) + ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] -[visit_exp (i!`%`_num_{i#37486}.0 + ao.`OFFSET`_memarg{u64#423}!`%`_u64{i#37496}.0)] -[visit_exp i!`%`_num_{i#37486}.0] -[visit_exp i!`%`_num_{i#37486}] +[visit_exp (((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst|)] +[visit_exp ((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] +[visit_exp (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#37486] -[visit_id i#37486] -[visit_exp ao.`OFFSET`_memarg{u64#423}!`%`_u64{i#37496}.0] -[visit_exp ao.`OFFSET`_memarg{u64#423}!`%`_u64{i#37496}] -[visit_exp ao.`OFFSET`_memarg{u64#423}] +[visit_exp ao.`OFFSET`_memarg!`%`_u64.0] +[visit_exp ao.`OFFSET`_memarg!`%`_u64] +[visit_exp ao.`OFFSET`_memarg] [visit_exp ao] [visit_id ao] not free -[visit_exp u64#423] -[visit_id u64#423] -[visit_exp i#37496] -[visit_id i#37496] [visit_exp ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] [visit_exp (($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat))] [visit_exp ($vsize(`V128`_vectype) : nat <:> rat)] @@ -58987,49 +48963,33 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp ()] [visit_exp (8 : nat <:> rat)] [visit_exp 8] -[visit_exp |$mem(z, x).`BYTES`_meminst{`byte*#1865`}|] -[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1865`}] +[visit_exp |$mem(z, x).`BYTES`_meminst|] +[visit_exp $mem(z, x).`BYTES`_meminst] [visit_exp $mem(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `byte*#1865`] -[visit_id byte*#1865] -[check_dims] ao at b c i i#37580 i#37590 instr*#1386 instr*#1398 memarg#73 memidx#105 numtype#239 state#1271 state#1283 u64#424 vectype#92 vectype#94 x z -[visit_exp `%;%`_config{state#1271, `instr*#1386`}(z, [`CONST`_instr{numtype#239}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#92}(`V128`_vectype, c) `VSTORE`_instr{vectype#94, memidx#105, memarg#73}(`V128`_vectype, x, ao)])] -[visit_exp state#1271] -[visit_id state#1271] -[visit_exp `instr*#1386`] -[visit_id instr*#1386] -[visit_exp (z, [`CONST`_instr{numtype#239}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#92}(`V128`_vectype, c) `VSTORE`_instr{vectype#94, memidx#105, memarg#73}(`V128`_vectype, x, ao)])] +[check_dims] ao at b c i x z +[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `VCONST`_instr(`V128`_vectype, c) `VSTORE`_instr(`V128`_vectype, x, ao)])] +[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `VCONST`_instr(`V128`_vectype, c) `VSTORE`_instr(`V128`_vectype, x, ao)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#239}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#92}(`V128`_vectype, c) `VSTORE`_instr{vectype#94, memidx#105, memarg#73}(`V128`_vectype, x, ao)]] -[visit_exp `CONST`_instr{numtype#239}((at : addrtype <: numtype), i)] -[visit_exp numtype#239] -[visit_id numtype#239] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `VCONST`_instr(`V128`_vectype, c) `VSTORE`_instr(`V128`_vectype, x, ao)]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] [visit_exp ((at : addrtype <: numtype), i)] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] [visit_exp i] [visit_id i] -[visit_exp `VCONST`_instr{vectype#92}(`V128`_vectype, c)] -[visit_exp vectype#92] -[visit_id vectype#92] +[visit_exp `VCONST`_instr(`V128`_vectype, c)] [visit_exp (`V128`_vectype, c)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c] [visit_id c] -[visit_exp `VSTORE`_instr{vectype#94, memidx#105, memarg#73}(`V128`_vectype, x, ao)] -[visit_exp vectype#94] -[visit_id vectype#94] -[visit_exp memidx#105] -[visit_id memidx#105] -[visit_exp memarg#73] -[visit_id memarg#73] +[visit_exp `VSTORE`_instr(`V128`_vectype, x, ao)] [visit_exp (`V128`_vectype, x, ao)] [visit_exp `V128`_vectype] [visit_exp ()] @@ -59037,33 +48997,23 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id x] [visit_exp ao] [visit_id ao] -[visit_exp `%;%`_config{state#1283, `instr*#1398`}($with_mem(z, x, (i!`%`_num_{i#37580}.0 + ao.`OFFSET`_memarg{u64#424}!`%`_u64{i#37590}.0), ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])] -[visit_exp state#1283] -[visit_id state#1283] -[visit_exp `instr*#1398`] -[visit_id instr*#1398] -[visit_exp ($with_mem(z, x, (i!`%`_num_{i#37580}.0 + ao.`OFFSET`_memarg{u64#424}!`%`_u64{i#37590}.0), ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])] -[visit_exp $with_mem(z, x, (i!`%`_num_{i#37580}.0 + ao.`OFFSET`_memarg{u64#424}!`%`_u64{i#37590}.0), ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`})] +[visit_exp `%;%`_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*`}), [])] +[visit_exp ($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*`}), [])] +[visit_exp $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*`})] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp (i!`%`_num_{i#37580}.0 + ao.`OFFSET`_memarg{u64#424}!`%`_u64{i#37590}.0)] -[visit_exp i!`%`_num_{i#37580}.0] -[visit_exp i!`%`_num_{i#37580}] +[visit_exp (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#37580] -[visit_id i#37580] -[visit_exp ao.`OFFSET`_memarg{u64#424}!`%`_u64{i#37590}.0] -[visit_exp ao.`OFFSET`_memarg{u64#424}!`%`_u64{i#37590}] -[visit_exp ao.`OFFSET`_memarg{u64#424}] +[visit_exp ao.`OFFSET`_memarg!`%`_u64.0] +[visit_exp ao.`OFFSET`_memarg!`%`_u64] +[visit_exp ao.`OFFSET`_memarg] [visit_exp ao] [visit_id ao] not free -[visit_exp u64#424] -[visit_id u64#424] -[visit_exp i#37590] -[visit_id i#37590] [visit_exp ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] [visit_exp (($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat))] [visit_exp ($vsize(`V128`_vectype) : nat <:> rat)] @@ -59097,50 +49047,30 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp ()] [visit_exp c] [visit_id c] not free -[check_dims] N ao at byte*#1866 c i i#37660 i#37706 i#37716 instr*#1410 instr*#1422 j laneidx#21 memarg#75 memidx#107 numtype#241 state#1295 state#1307 sz#450 u64#425 vectype#96 vectype#98 x z -[visit_exp `%;%`_config{state#1295, `instr*#1410`}(z, [`CONST`_instr{numtype#241}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#96}(`V128`_vectype, c) `VSTORE_LANE`_instr{vectype#98, sz#450, memidx#107, memarg#75, laneidx#21}(`V128`_vectype, `%`_sz{i#37660}(N), x, ao, j)])] -[visit_exp state#1295] -[visit_id state#1295] -[visit_exp `instr*#1410`] -[visit_id instr*#1410] -[visit_exp (z, [`CONST`_instr{numtype#241}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#96}(`V128`_vectype, c) `VSTORE_LANE`_instr{vectype#98, sz#450, memidx#107, memarg#75, laneidx#21}(`V128`_vectype, `%`_sz{i#37660}(N), x, ao, j)])] +[check_dims] N ao at c i j x z +[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `VCONST`_instr(`V128`_vectype, c) `VSTORE_LANE`_instr(`V128`_vectype, `%`_sz(N), x, ao, j)])] +[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `VCONST`_instr(`V128`_vectype, c) `VSTORE_LANE`_instr(`V128`_vectype, `%`_sz(N), x, ao, j)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#241}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#96}(`V128`_vectype, c) `VSTORE_LANE`_instr{vectype#98, sz#450, memidx#107, memarg#75, laneidx#21}(`V128`_vectype, `%`_sz{i#37660}(N), x, ao, j)]] -[visit_exp `CONST`_instr{numtype#241}((at : addrtype <: numtype), i)] -[visit_exp numtype#241] -[visit_id numtype#241] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `VCONST`_instr(`V128`_vectype, c) `VSTORE_LANE`_instr(`V128`_vectype, `%`_sz(N), x, ao, j)]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] [visit_exp ((at : addrtype <: numtype), i)] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] [visit_exp i] [visit_id i] -[visit_exp `VCONST`_instr{vectype#96}(`V128`_vectype, c)] -[visit_exp vectype#96] -[visit_id vectype#96] +[visit_exp `VCONST`_instr(`V128`_vectype, c)] [visit_exp (`V128`_vectype, c)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c] [visit_id c] -[visit_exp `VSTORE_LANE`_instr{vectype#98, sz#450, memidx#107, memarg#75, laneidx#21}(`V128`_vectype, `%`_sz{i#37660}(N), x, ao, j)] -[visit_exp vectype#98] -[visit_id vectype#98] -[visit_exp sz#450] -[visit_id sz#450] -[visit_exp memidx#107] -[visit_id memidx#107] -[visit_exp memarg#75] -[visit_id memarg#75] -[visit_exp laneidx#21] -[visit_id laneidx#21] -[visit_exp (`V128`_vectype, `%`_sz{i#37660}(N), x, ao, j)] +[visit_exp `VSTORE_LANE`_instr(`V128`_vectype, `%`_sz(N), x, ao, j)] +[visit_exp (`V128`_vectype, `%`_sz(N), x, ao, j)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp `%`_sz{i#37660}(N)] -[visit_exp i#37660] -[visit_id i#37660] +[visit_exp `%`_sz(N)] [visit_exp (N)] [visit_exp N] [visit_id N] @@ -59150,90 +49080,58 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id ao] [visit_exp j] [visit_id j] -[visit_exp `%;%`_config{state#1307, `instr*#1422`}(z, [`TRAP`_instr])] -[visit_exp state#1307] -[visit_id state#1307] -[visit_exp `instr*#1422`] -[visit_id instr*#1422] +[visit_exp `%;%`_config(z, [`TRAP`_instr])] [visit_exp (z, [`TRAP`_instr])] [visit_exp z] [visit_id z] not free [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[visit_exp (((i!`%`_num_{i#37706}.0 + ao.`OFFSET`_memarg{u64#425}!`%`_u64{i#37716}.0) + N) > |$mem(z, x).`BYTES`_meminst{`byte*#1866`}|)] -[visit_exp ((i!`%`_num_{i#37706}.0 + ao.`OFFSET`_memarg{u64#425}!`%`_u64{i#37716}.0) + N)] -[visit_exp (i!`%`_num_{i#37706}.0 + ao.`OFFSET`_memarg{u64#425}!`%`_u64{i#37716}.0)] -[visit_exp i!`%`_num_{i#37706}.0] -[visit_exp i!`%`_num_{i#37706}] +[visit_exp (((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + N) > |$mem(z, x).`BYTES`_meminst|)] +[visit_exp ((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + N)] +[visit_exp (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#37706] -[visit_id i#37706] -[visit_exp ao.`OFFSET`_memarg{u64#425}!`%`_u64{i#37716}.0] -[visit_exp ao.`OFFSET`_memarg{u64#425}!`%`_u64{i#37716}] -[visit_exp ao.`OFFSET`_memarg{u64#425}] +[visit_exp ao.`OFFSET`_memarg!`%`_u64.0] +[visit_exp ao.`OFFSET`_memarg!`%`_u64] +[visit_exp ao.`OFFSET`_memarg] [visit_exp ao] [visit_id ao] not free -[visit_exp u64#425] -[visit_id u64#425] -[visit_exp i#37716] -[visit_id i#37716] [visit_exp N] [visit_id N] not free -[visit_exp |$mem(z, x).`BYTES`_meminst{`byte*#1866`}|] -[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1866`}] +[visit_exp |$mem(z, x).`BYTES`_meminst|] +[visit_exp $mem(z, x).`BYTES`_meminst] [visit_exp $mem(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `byte*#1866`] -[visit_id byte*#1866] -[check_dims] Jnn M N ao at b c dim#7403 i i#37764 i#37822 i#37832 i#37855 i#37862 i#37882 i#37906 i#37907 instr*#1434 instr*#1446 j laneidx#23 lanetype#7403 memarg#77 memidx#109 numtype#243 state#1319 state#1331 sz#452 u64#426 vectype#100 vectype#102 x z -[visit_exp `%;%`_config{state#1319, `instr*#1434`}(z, [`CONST`_instr{numtype#243}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#100}(`V128`_vectype, c) `VSTORE_LANE`_instr{vectype#102, sz#452, memidx#109, memarg#77, laneidx#23}(`V128`_vectype, `%`_sz{i#37764}(N), x, ao, j)])] -[visit_exp state#1319] -[visit_id state#1319] -[visit_exp `instr*#1434`] -[visit_id instr*#1434] -[visit_exp (z, [`CONST`_instr{numtype#243}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#100}(`V128`_vectype, c) `VSTORE_LANE`_instr{vectype#102, sz#452, memidx#109, memarg#77, laneidx#23}(`V128`_vectype, `%`_sz{i#37764}(N), x, ao, j)])] +[check_dims] Jnn M N ao at b c i j x z +[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `VCONST`_instr(`V128`_vectype, c) `VSTORE_LANE`_instr(`V128`_vectype, `%`_sz(N), x, ao, j)])] +[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `VCONST`_instr(`V128`_vectype, c) `VSTORE_LANE`_instr(`V128`_vectype, `%`_sz(N), x, ao, j)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#243}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#100}(`V128`_vectype, c) `VSTORE_LANE`_instr{vectype#102, sz#452, memidx#109, memarg#77, laneidx#23}(`V128`_vectype, `%`_sz{i#37764}(N), x, ao, j)]] -[visit_exp `CONST`_instr{numtype#243}((at : addrtype <: numtype), i)] -[visit_exp numtype#243] -[visit_id numtype#243] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `VCONST`_instr(`V128`_vectype, c) `VSTORE_LANE`_instr(`V128`_vectype, `%`_sz(N), x, ao, j)]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] [visit_exp ((at : addrtype <: numtype), i)] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] [visit_exp i] [visit_id i] -[visit_exp `VCONST`_instr{vectype#100}(`V128`_vectype, c)] -[visit_exp vectype#100] -[visit_id vectype#100] +[visit_exp `VCONST`_instr(`V128`_vectype, c)] [visit_exp (`V128`_vectype, c)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c] [visit_id c] -[visit_exp `VSTORE_LANE`_instr{vectype#102, sz#452, memidx#109, memarg#77, laneidx#23}(`V128`_vectype, `%`_sz{i#37764}(N), x, ao, j)] -[visit_exp vectype#102] -[visit_id vectype#102] -[visit_exp sz#452] -[visit_id sz#452] -[visit_exp memidx#109] -[visit_id memidx#109] -[visit_exp memarg#77] -[visit_id memarg#77] -[visit_exp laneidx#23] -[visit_id laneidx#23] -[visit_exp (`V128`_vectype, `%`_sz{i#37764}(N), x, ao, j)] +[visit_exp `VSTORE_LANE`_instr(`V128`_vectype, `%`_sz(N), x, ao, j)] +[visit_exp (`V128`_vectype, `%`_sz(N), x, ao, j)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp `%`_sz{i#37764}(N)] -[visit_exp i#37764] -[visit_id i#37764] +[visit_exp `%`_sz(N)] [visit_exp (N)] [visit_exp N] [visit_id N] @@ -59243,33 +49141,23 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id ao] [visit_exp j] [visit_id j] -[visit_exp `%;%`_config{state#1331, `instr*#1446`}($with_mem(z, x, (i!`%`_num_{i#37822}.0 + ao.`OFFSET`_memarg{u64#426}!`%`_u64{i#37832}.0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])] -[visit_exp state#1331] -[visit_id state#1331] -[visit_exp `instr*#1446`] -[visit_id instr*#1446] -[visit_exp ($with_mem(z, x, (i!`%`_num_{i#37822}.0 + ao.`OFFSET`_memarg{u64#426}!`%`_u64{i#37832}.0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])] -[visit_exp $with_mem(z, x, (i!`%`_num_{i#37822}.0 + ao.`OFFSET`_memarg{u64#426}!`%`_u64{i#37832}.0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`})] +[visit_exp `%;%`_config($with_mem(z, x, (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])] +[visit_exp ($with_mem(z, x, (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])] +[visit_exp $with_mem(z, x, (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`})] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp (i!`%`_num_{i#37822}.0 + ao.`OFFSET`_memarg{u64#426}!`%`_u64{i#37832}.0)] -[visit_exp i!`%`_num_{i#37822}.0] -[visit_exp i!`%`_num_{i#37822}] +[visit_exp (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#37822] -[visit_id i#37822] -[visit_exp ao.`OFFSET`_memarg{u64#426}!`%`_u64{i#37832}.0] -[visit_exp ao.`OFFSET`_memarg{u64#426}!`%`_u64{i#37832}] -[visit_exp ao.`OFFSET`_memarg{u64#426}] +[visit_exp ao.`OFFSET`_memarg!`%`_u64.0] +[visit_exp ao.`OFFSET`_memarg!`%`_u64] +[visit_exp ao.`OFFSET`_memarg] [visit_exp ao] [visit_id ao] not free -[visit_exp u64#426] -[visit_id u64#426] -[visit_exp i#37832] -[visit_id i#37832] [visit_exp (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] [visit_exp ((N : nat <:> rat) / (8 : nat <:> rat))] [visit_exp (N : nat <:> rat)] @@ -59303,7 +49191,7 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp (N : nat <:> rat)] [visit_exp N] [visit_id N] not free -[visit_exp (b*{b <- `b*`} = $ibytes_(N, `%`_iN{i#37907}($lanes_(`%X%`_shape{lanetype#7403, dim#7403, i#37855}((Jnn : Jnn <: lanetype), `%`_dim{i#37862}(M)), c)[j!`%`_laneidx{i#37882}.0]!`%`_lane_{i#37906}.0)))] +[visit_exp (b*{b <- `b*`} = $ibytes_(N, `%`_iN($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_laneidx.0]!`%`_lane_.0)))] [visit_exp b*{b <- `b*`}] [scope_enter b] [visit_exp b] @@ -59313,144 +49201,98 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `b*`] [visit_id b*] not free [visit_id b*] no dims -[visit_exp $ibytes_(N, `%`_iN{i#37907}($lanes_(`%X%`_shape{lanetype#7403, dim#7403, i#37855}((Jnn : Jnn <: lanetype), `%`_dim{i#37862}(M)), c)[j!`%`_laneidx{i#37882}.0]!`%`_lane_{i#37906}.0))] +[visit_exp $ibytes_(N, `%`_iN($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_laneidx.0]!`%`_lane_.0))] [visit_exp N] [visit_id N] not free -[visit_exp `%`_iN{i#37907}($lanes_(`%X%`_shape{lanetype#7403, dim#7403, i#37855}((Jnn : Jnn <: lanetype), `%`_dim{i#37862}(M)), c)[j!`%`_laneidx{i#37882}.0]!`%`_lane_{i#37906}.0)] -[visit_exp i#37907] -[visit_id i#37907] -[visit_exp ($lanes_(`%X%`_shape{lanetype#7403, dim#7403, i#37855}((Jnn : Jnn <: lanetype), `%`_dim{i#37862}(M)), c)[j!`%`_laneidx{i#37882}.0]!`%`_lane_{i#37906}.0)] -[visit_exp $lanes_(`%X%`_shape{lanetype#7403, dim#7403, i#37855}((Jnn : Jnn <: lanetype), `%`_dim{i#37862}(M)), c)[j!`%`_laneidx{i#37882}.0]!`%`_lane_{i#37906}.0] -[visit_exp $lanes_(`%X%`_shape{lanetype#7403, dim#7403, i#37855}((Jnn : Jnn <: lanetype), `%`_dim{i#37862}(M)), c)[j!`%`_laneidx{i#37882}.0]!`%`_lane_{i#37906}] -[visit_exp $lanes_(`%X%`_shape{lanetype#7403, dim#7403, i#37855}((Jnn : Jnn <: lanetype), `%`_dim{i#37862}(M)), c)[j!`%`_laneidx{i#37882}.0]] -[visit_exp $lanes_(`%X%`_shape{lanetype#7403, dim#7403, i#37855}((Jnn : Jnn <: lanetype), `%`_dim{i#37862}(M)), c)] -[visit_exp `%X%`_shape{lanetype#7403, dim#7403, i#37855}((Jnn : Jnn <: lanetype), `%`_dim{i#37862}(M))] -[visit_exp lanetype#7403] -[visit_id lanetype#7403] -[visit_exp dim#7403] -[visit_id dim#7403] -[visit_exp i#37855] -[visit_id i#37855] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#37862}(M))] +[visit_exp `%`_iN($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_laneidx.0]!`%`_lane_.0)] +[visit_exp ($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_laneidx.0]!`%`_lane_.0)] +[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_laneidx.0]!`%`_lane_.0] +[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_laneidx.0]!`%`_lane_] +[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_laneidx.0]] +[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#37862}(M)] -[visit_exp i#37862] -[visit_id i#37862] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free [visit_exp c] [visit_id c] not free -[visit_exp j!`%`_laneidx{i#37882}.0] -[visit_exp j!`%`_laneidx{i#37882}] +[visit_exp j!`%`_laneidx.0] +[visit_exp j!`%`_laneidx] [visit_exp j] [visit_id j] not free -[visit_exp i#37882] -[visit_id i#37882] -[visit_exp i#37906] -[visit_id i#37906] -[check_dims] addrtype#1135 at byte*#1867 i#37958 instr*#1458 lim limits#1135 memidx#111 memtype#530 n numtype#245 state#1343 x z -[visit_exp `%;%`_config{state#1343, `instr*#1458`}(z, [`MEMORY.SIZE`_instr{memidx#111}(x)])] -[visit_exp state#1343] -[visit_id state#1343] -[visit_exp `instr*#1458`] -[visit_id instr*#1458] -[visit_exp (z, [`MEMORY.SIZE`_instr{memidx#111}(x)])] +[check_dims] at lim n x z +[visit_exp `%;%`_config(z, [`MEMORY.SIZE`_instr(x)])] +[visit_exp (z, [`MEMORY.SIZE`_instr(x)])] [visit_exp z] [visit_id z] -[visit_exp [`MEMORY.SIZE`_instr{memidx#111}(x)]] -[visit_exp `MEMORY.SIZE`_instr{memidx#111}(x)] -[visit_exp memidx#111] -[visit_id memidx#111] +[visit_exp [`MEMORY.SIZE`_instr(x)]] +[visit_exp `MEMORY.SIZE`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp [`CONST`_instr{numtype#245}((at : addrtype <: numtype), `%`_num_{i#37958}(n))]] -[visit_exp `CONST`_instr{numtype#245}((at : addrtype <: numtype), `%`_num_{i#37958}(n))] -[visit_exp numtype#245] -[visit_id numtype#245] -[visit_exp ((at : addrtype <: numtype), `%`_num_{i#37958}(n))] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), `%`_num_(n))]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), `%`_num_(n))] +[visit_exp ((at : addrtype <: numtype), `%`_num_(n))] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] -[visit_exp `%`_num_{i#37958}(n)] -[visit_exp i#37958] -[visit_id i#37958] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp ((n * (64 * $Ki)) = |$mem(z, x).`BYTES`_meminst{`byte*#1867`}|)] +[visit_exp ((n * (64 * $Ki)) = |$mem(z, x).`BYTES`_meminst|)] [visit_exp (n * (64 * $Ki))] [visit_exp n] [visit_id n] not free [visit_exp (64 * $Ki)] [visit_exp 64] [visit_exp $Ki] -[visit_exp |$mem(z, x).`BYTES`_meminst{`byte*#1867`}|] -[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1867`}] +[visit_exp |$mem(z, x).`BYTES`_meminst|] +[visit_exp $mem(z, x).`BYTES`_meminst] [visit_exp $mem(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `byte*#1867`] -[visit_id byte*#1867] -[visit_exp ($mem(z, x).`TYPE`_meminst{memtype#530} = `%%PAGE`_memtype{addrtype#1135, limits#1135}(at, lim))] -[visit_exp $mem(z, x).`TYPE`_meminst{memtype#530}] +[visit_exp ($mem(z, x).`TYPE`_meminst = `%%PAGE`_memtype(at, lim))] +[visit_exp $mem(z, x).`TYPE`_meminst] [visit_exp $mem(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp memtype#530] -[visit_id memtype#530] -[visit_exp `%%PAGE`_memtype{addrtype#1135, limits#1135}(at, lim)] -[visit_exp addrtype#1135] -[visit_id addrtype#1135] -[visit_exp limits#1135] -[visit_id limits#1135] +[visit_exp `%%PAGE`_memtype(at, lim)] [visit_exp (at, lim)] [visit_exp at] [visit_id at] not free [visit_exp lim] [visit_id lim] -[check_dims] at byte*#1868 i#38006 i#38066 instr*#1470 instr*#1482 memidx#113 mi n numtype#247 numtype#249 state#1355 state#1367 x z -[visit_exp `%;%`_config{state#1355, `instr*#1470`}(z, [`CONST`_instr{numtype#247}((at : addrtype <: numtype), `%`_num_{i#38006}(n)) `MEMORY.GROW`_instr{memidx#113}(x)])] -[visit_exp state#1355] -[visit_id state#1355] -[visit_exp `instr*#1470`] -[visit_id instr*#1470] -[visit_exp (z, [`CONST`_instr{numtype#247}((at : addrtype <: numtype), `%`_num_{i#38006}(n)) `MEMORY.GROW`_instr{memidx#113}(x)])] +[check_dims] at mi n x z +[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `MEMORY.GROW`_instr(x)])] +[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `MEMORY.GROW`_instr(x)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#247}((at : addrtype <: numtype), `%`_num_{i#38006}(n)) `MEMORY.GROW`_instr{memidx#113}(x)]] -[visit_exp `CONST`_instr{numtype#247}((at : addrtype <: numtype), `%`_num_{i#38006}(n))] -[visit_exp numtype#247] -[visit_id numtype#247] -[visit_exp ((at : addrtype <: numtype), `%`_num_{i#38006}(n))] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `MEMORY.GROW`_instr(x)]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), `%`_num_(n))] +[visit_exp ((at : addrtype <: numtype), `%`_num_(n))] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] -[visit_exp `%`_num_{i#38006}(n)] -[visit_exp i#38006] -[visit_id i#38006] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `MEMORY.GROW`_instr{memidx#113}(x)] -[visit_exp memidx#113] -[visit_id memidx#113] +[visit_exp `MEMORY.GROW`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%;%`_config{state#1367, `instr*#1482`}($with_meminst(z, x, mi), [`CONST`_instr{numtype#249}((at : addrtype <: numtype), `%`_num_{i#38066}((((|$mem(z, x).`BYTES`_meminst{`byte*#1868`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat)))])] -[visit_exp state#1367] -[visit_id state#1367] -[visit_exp `instr*#1482`] -[visit_id instr*#1482] -[visit_exp ($with_meminst(z, x, mi), [`CONST`_instr{numtype#249}((at : addrtype <: numtype), `%`_num_{i#38066}((((|$mem(z, x).`BYTES`_meminst{`byte*#1868`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat)))])] +[visit_exp `%;%`_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)))])] +[visit_exp ($with_meminst(z, x, mi), [`CONST`_instr((at : addrtype <: numtype), `%`_num_((((|$mem(z, x).`BYTES`_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat)))])] [visit_exp $with_meminst(z, x, mi)] [visit_exp z] [visit_id z] not free @@ -59458,30 +49300,24 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id x] not free [visit_exp mi] [visit_id mi] -[visit_exp [`CONST`_instr{numtype#249}((at : addrtype <: numtype), `%`_num_{i#38066}((((|$mem(z, x).`BYTES`_meminst{`byte*#1868`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat)))]] -[visit_exp `CONST`_instr{numtype#249}((at : addrtype <: numtype), `%`_num_{i#38066}((((|$mem(z, x).`BYTES`_meminst{`byte*#1868`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat)))] -[visit_exp numtype#249] -[visit_id numtype#249] -[visit_exp ((at : addrtype <: numtype), `%`_num_{i#38066}((((|$mem(z, x).`BYTES`_meminst{`byte*#1868`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat)))] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), `%`_num_((((|$mem(z, x).`BYTES`_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat)))]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), `%`_num_((((|$mem(z, x).`BYTES`_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat)))] +[visit_exp ((at : addrtype <: numtype), `%`_num_((((|$mem(z, x).`BYTES`_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat)))] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] not free -[visit_exp `%`_num_{i#38066}((((|$mem(z, x).`BYTES`_meminst{`byte*#1868`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))] -[visit_exp i#38066] -[visit_id i#38066] -[visit_exp ((((|$mem(z, x).`BYTES`_meminst{`byte*#1868`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))] -[visit_exp (((|$mem(z, x).`BYTES`_meminst{`byte*#1868`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat)] -[visit_exp ((|$mem(z, x).`BYTES`_meminst{`byte*#1868`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat))] -[visit_exp (|$mem(z, x).`BYTES`_meminst{`byte*#1868`}| : nat <:> rat)] -[visit_exp |$mem(z, x).`BYTES`_meminst{`byte*#1868`}|] -[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1868`}] +[visit_exp `%`_num_((((|$mem(z, x).`BYTES`_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))] +[visit_exp ((((|$mem(z, x).`BYTES`_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))] +[visit_exp (((|$mem(z, x).`BYTES`_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat)] +[visit_exp ((|$mem(z, x).`BYTES`_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat))] +[visit_exp (|$mem(z, x).`BYTES`_meminst| : nat <:> rat)] +[visit_exp |$mem(z, x).`BYTES`_meminst|] +[visit_exp $mem(z, x).`BYTES`_meminst] [visit_exp $mem(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `byte*#1868`] -[visit_id byte*#1868] [visit_exp ((64 * $Ki) : nat <:> rat)] [visit_exp (64 * $Ki)] [visit_exp 64] @@ -59497,54 +49333,36 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id x] not free [visit_exp n] [visit_id n] not free -[check_dims] at i#38102 i#38138 instr*#1494 instr*#1506 memidx#115 n numtype#251 numtype#253 state#1379 state#1391 x z -[visit_exp `%;%`_config{state#1379, `instr*#1494`}(z, [`CONST`_instr{numtype#251}((at : addrtype <: numtype), `%`_num_{i#38102}(n)) `MEMORY.GROW`_instr{memidx#115}(x)])] -[visit_exp state#1379] -[visit_id state#1379] -[visit_exp `instr*#1494`] -[visit_id instr*#1494] -[visit_exp (z, [`CONST`_instr{numtype#251}((at : addrtype <: numtype), `%`_num_{i#38102}(n)) `MEMORY.GROW`_instr{memidx#115}(x)])] +[check_dims] at n x z +[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `MEMORY.GROW`_instr(x)])] +[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `MEMORY.GROW`_instr(x)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#251}((at : addrtype <: numtype), `%`_num_{i#38102}(n)) `MEMORY.GROW`_instr{memidx#115}(x)]] -[visit_exp `CONST`_instr{numtype#251}((at : addrtype <: numtype), `%`_num_{i#38102}(n))] -[visit_exp numtype#251] -[visit_id numtype#251] -[visit_exp ((at : addrtype <: numtype), `%`_num_{i#38102}(n))] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `MEMORY.GROW`_instr(x)]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), `%`_num_(n))] +[visit_exp ((at : addrtype <: numtype), `%`_num_(n))] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] -[visit_exp `%`_num_{i#38102}(n)] -[visit_exp i#38102] -[visit_id i#38102] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `MEMORY.GROW`_instr{memidx#115}(x)] -[visit_exp memidx#115] -[visit_id memidx#115] +[visit_exp `MEMORY.GROW`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%;%`_config{state#1391, `instr*#1506`}(z, [`CONST`_instr{numtype#253}((at : addrtype <: numtype), `%`_num_{i#38138}($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))])] -[visit_exp state#1391] -[visit_id state#1391] -[visit_exp `instr*#1506`] -[visit_id instr*#1506] -[visit_exp (z, [`CONST`_instr{numtype#253}((at : addrtype <: numtype), `%`_num_{i#38138}($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))])] +[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))])] +[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))])] [visit_exp z] [visit_id z] not free -[visit_exp [`CONST`_instr{numtype#253}((at : addrtype <: numtype), `%`_num_{i#38138}($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))]] -[visit_exp `CONST`_instr{numtype#253}((at : addrtype <: numtype), `%`_num_{i#38138}($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))] -[visit_exp numtype#253] -[visit_id numtype#253] -[visit_exp ((at : addrtype <: numtype), `%`_num_{i#38138}($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))] +[visit_exp ((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] not free -[visit_exp `%`_num_{i#38138}($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))] -[visit_exp i#38138] -[visit_id i#38138] +[visit_exp `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))] [visit_exp ($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))] [visit_exp $inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))] [visit_exp $size((at : addrtype <: numtype))] @@ -59554,19 +49372,13 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp - (1 : nat <:> int)] [visit_exp (1 : nat <:> int)] [visit_exp 1] -[check_dims] at byte*#1869 i i#38176 i#38204 instr*#1518 memidx#117 n numtype#255 numtype#257 state#1403 val x z -[visit_exp `%;%`_config{state#1403, `instr*#1518`}(z, [`CONST`_instr{numtype#255}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#257}((at : addrtype <: numtype), `%`_num_{i#38176}(n)) `MEMORY.FILL`_instr{memidx#117}(x)])] -[visit_exp state#1403] -[visit_id state#1403] -[visit_exp `instr*#1518`] -[visit_id instr*#1518] -[visit_exp (z, [`CONST`_instr{numtype#255}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#257}((at : addrtype <: numtype), `%`_num_{i#38176}(n)) `MEMORY.FILL`_instr{memidx#117}(x)])] +[check_dims] at i n val x z +[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `MEMORY.FILL`_instr(x)])] +[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `MEMORY.FILL`_instr(x)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#255}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#257}((at : addrtype <: numtype), `%`_num_{i#38176}(n)) `MEMORY.FILL`_instr{memidx#117}(x)]] -[visit_exp `CONST`_instr{numtype#255}((at : addrtype <: numtype), i)] -[visit_exp numtype#255] -[visit_id numtype#255] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `MEMORY.FILL`_instr(x)]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] [visit_exp ((at : addrtype <: numtype), i)] [visit_exp (at : addrtype <: numtype)] [visit_exp at] @@ -59576,60 +49388,44 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp (val : val <: instr)] [visit_exp val] [visit_id val] -[visit_exp `CONST`_instr{numtype#257}((at : addrtype <: numtype), `%`_num_{i#38176}(n))] -[visit_exp numtype#257] -[visit_id numtype#257] -[visit_exp ((at : addrtype <: numtype), `%`_num_{i#38176}(n))] +[visit_exp `CONST`_instr((at : addrtype <: numtype), `%`_num_(n))] +[visit_exp ((at : addrtype <: numtype), `%`_num_(n))] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] not free -[visit_exp `%`_num_{i#38176}(n)] -[visit_exp i#38176] -[visit_id i#38176] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `MEMORY.FILL`_instr{memidx#117}(x)] -[visit_exp memidx#117] -[visit_id memidx#117] +[visit_exp `MEMORY.FILL`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[visit_exp ((i!`%`_num_{i#38204}.0 + n) > |$mem(z, x).`BYTES`_meminst{`byte*#1869`}|)] -[visit_exp (i!`%`_num_{i#38204}.0 + n)] -[visit_exp i!`%`_num_{i#38204}.0] -[visit_exp i!`%`_num_{i#38204}] +[visit_exp ((i!`%`_num_.0 + n) > |$mem(z, x).`BYTES`_meminst|)] +[visit_exp (i!`%`_num_.0 + n)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#38204] -[visit_id i#38204] [visit_exp n] [visit_id n] not free -[visit_exp |$mem(z, x).`BYTES`_meminst{`byte*#1869`}|] -[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1869`}] +[visit_exp |$mem(z, x).`BYTES`_meminst|] +[visit_exp $mem(z, x).`BYTES`_meminst] [visit_exp $mem(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `byte*#1869`] -[visit_id byte*#1869] -[check_dims] at i i#38254 instr*#1530 memidx#119 n numtype#259 numtype#261 state#1415 val x z -[visit_exp `%;%`_config{state#1415, `instr*#1530`}(z, [`CONST`_instr{numtype#259}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#261}((at : addrtype <: numtype), `%`_num_{i#38254}(n)) `MEMORY.FILL`_instr{memidx#119}(x)])] -[visit_exp state#1415] -[visit_id state#1415] -[visit_exp `instr*#1530`] -[visit_id instr*#1530] -[visit_exp (z, [`CONST`_instr{numtype#259}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#261}((at : addrtype <: numtype), `%`_num_{i#38254}(n)) `MEMORY.FILL`_instr{memidx#119}(x)])] +[check_dims] at i n val x z +[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `MEMORY.FILL`_instr(x)])] +[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `MEMORY.FILL`_instr(x)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#259}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#261}((at : addrtype <: numtype), `%`_num_{i#38254}(n)) `MEMORY.FILL`_instr{memidx#119}(x)]] -[visit_exp `CONST`_instr{numtype#259}((at : addrtype <: numtype), i)] -[visit_exp numtype#259] -[visit_id numtype#259] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `MEMORY.FILL`_instr(x)]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] [visit_exp ((at : addrtype <: numtype), i)] [visit_exp (at : addrtype <: numtype)] [visit_exp at] @@ -59639,22 +49435,16 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp (val : val <: instr)] [visit_exp val] [visit_id val] -[visit_exp `CONST`_instr{numtype#261}((at : addrtype <: numtype), `%`_num_{i#38254}(n))] -[visit_exp numtype#261] -[visit_id numtype#261] -[visit_exp ((at : addrtype <: numtype), `%`_num_{i#38254}(n))] +[visit_exp `CONST`_instr((at : addrtype <: numtype), `%`_num_(n))] +[visit_exp ((at : addrtype <: numtype), `%`_num_(n))] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] not free -[visit_exp `%`_num_{i#38254}(n)] -[visit_exp i#38254] -[visit_id i#38254] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `MEMORY.FILL`_instr{memidx#119}(x)] -[visit_exp memidx#119] -[visit_id memidx#119] +[visit_exp `MEMORY.FILL`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -59663,19 +49453,13 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp n] [visit_id n] not free [visit_exp 0] -[check_dims] at i i#38306 i#38373 i#38374 i#38414 i#38424 i#38446 instr*#1542 memarg#79 memidx#121 memidx#123 memidx#125 n numtype#263 numtype#265 numtype#267 numtype#270 numtype#272 numtype?#15 state#1427 sz#465 val x z -[visit_exp `%;%`_config{state#1427, `instr*#1542`}(z, [`CONST`_instr{numtype#263}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#265}((at : addrtype <: numtype), `%`_num_{i#38306}(n)) `MEMORY.FILL`_instr{memidx#121}(x)])] -[visit_exp state#1427] -[visit_id state#1427] -[visit_exp `instr*#1542`] -[visit_id instr*#1542] -[visit_exp (z, [`CONST`_instr{numtype#263}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#265}((at : addrtype <: numtype), `%`_num_{i#38306}(n)) `MEMORY.FILL`_instr{memidx#121}(x)])] +[check_dims] at i n val x z +[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `MEMORY.FILL`_instr(x)])] +[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `MEMORY.FILL`_instr(x)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#263}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#265}((at : addrtype <: numtype), `%`_num_{i#38306}(n)) `MEMORY.FILL`_instr{memidx#121}(x)]] -[visit_exp `CONST`_instr{numtype#263}((at : addrtype <: numtype), i)] -[visit_exp numtype#263] -[visit_id numtype#263] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `MEMORY.FILL`_instr(x)]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] [visit_exp ((at : addrtype <: numtype), i)] [visit_exp (at : addrtype <: numtype)] [visit_exp at] @@ -59685,29 +49469,21 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp (val : val <: instr)] [visit_exp val] [visit_id val] -[visit_exp `CONST`_instr{numtype#265}((at : addrtype <: numtype), `%`_num_{i#38306}(n))] -[visit_exp numtype#265] -[visit_id numtype#265] -[visit_exp ((at : addrtype <: numtype), `%`_num_{i#38306}(n))] +[visit_exp `CONST`_instr((at : addrtype <: numtype), `%`_num_(n))] +[visit_exp ((at : addrtype <: numtype), `%`_num_(n))] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] not free -[visit_exp `%`_num_{i#38306}(n)] -[visit_exp i#38306] -[visit_id i#38306] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `MEMORY.FILL`_instr{memidx#121}(x)] -[visit_exp memidx#121] -[visit_id memidx#121] +[visit_exp `MEMORY.FILL`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp [`CONST`_instr{numtype#267}((at : addrtype <: numtype), i) (val : val <: instr) `STORE`_instr{`numtype?#15`, memidx#123, memarg#79}(`I32`_numtype, ?(`%`_storeop_{sz#465, i#38373}(`%`_sz{i#38374}(8))), x, $memarg0) `CONST`_instr{numtype#270}((at : addrtype <: numtype), `%`_num_{i#38424}((i!`%`_num_{i#38414}.0 + 1))) (val : val <: instr) `CONST`_instr{numtype#272}((at : addrtype <: numtype), `%`_num_{i#38446}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `MEMORY.FILL`_instr{memidx#125}(x)]] -[visit_exp `CONST`_instr{numtype#267}((at : addrtype <: numtype), i)] -[visit_exp numtype#267] -[visit_id numtype#267] +[visit_exp [`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)]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] [visit_exp ((at : addrtype <: numtype), i)] [visit_exp (at : addrtype <: numtype)] [visit_exp at] @@ -59717,63 +49493,41 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp (val : val <: instr)] [visit_exp val] [visit_id val] not free -[visit_exp `STORE`_instr{`numtype?#15`, memidx#123, memarg#79}(`I32`_numtype, ?(`%`_storeop_{sz#465, i#38373}(`%`_sz{i#38374}(8))), x, $memarg0)] -[visit_exp `numtype?#15`] -[visit_id numtype?#15] -[visit_exp memidx#123] -[visit_id memidx#123] -[visit_exp memarg#79] -[visit_id memarg#79] -[visit_exp (`I32`_numtype, ?(`%`_storeop_{sz#465, i#38373}(`%`_sz{i#38374}(8))), x, $memarg0)] +[visit_exp `STORE`_instr(`I32`_numtype, ?(`%`_storeop_(`%`_sz(8))), x, $memarg0)] +[visit_exp (`I32`_numtype, ?(`%`_storeop_(`%`_sz(8))), x, $memarg0)] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp ?(`%`_storeop_{sz#465, i#38373}(`%`_sz{i#38374}(8)))] -[visit_exp `%`_storeop_{sz#465, i#38373}(`%`_sz{i#38374}(8))] -[visit_exp sz#465] -[visit_id sz#465] -[visit_exp i#38373] -[visit_id i#38373] -[visit_exp (`%`_sz{i#38374}(8))] -[visit_exp `%`_sz{i#38374}(8)] -[visit_exp i#38374] -[visit_id i#38374] +[visit_exp ?(`%`_storeop_(`%`_sz(8)))] +[visit_exp `%`_storeop_(`%`_sz(8))] +[visit_exp (`%`_sz(8))] +[visit_exp `%`_sz(8)] [visit_exp (8)] [visit_exp 8] [visit_exp x] [visit_id x] not free [visit_exp $memarg0] -[visit_exp `CONST`_instr{numtype#270}((at : addrtype <: numtype), `%`_num_{i#38424}((i!`%`_num_{i#38414}.0 + 1)))] -[visit_exp numtype#270] -[visit_id numtype#270] -[visit_exp ((at : addrtype <: numtype), `%`_num_{i#38424}((i!`%`_num_{i#38414}.0 + 1)))] +[visit_exp `CONST`_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1)))] +[visit_exp ((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1)))] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] not free -[visit_exp `%`_num_{i#38424}((i!`%`_num_{i#38414}.0 + 1))] -[visit_exp i#38424] -[visit_id i#38424] -[visit_exp ((i!`%`_num_{i#38414}.0 + 1))] -[visit_exp (i!`%`_num_{i#38414}.0 + 1)] -[visit_exp i!`%`_num_{i#38414}.0] -[visit_exp i!`%`_num_{i#38414}] +[visit_exp `%`_num_((i!`%`_num_.0 + 1))] +[visit_exp ((i!`%`_num_.0 + 1))] +[visit_exp (i!`%`_num_.0 + 1)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#38414] -[visit_id i#38414] [visit_exp 1] [visit_exp (val : val <: instr)] [visit_exp val] [visit_id val] not free -[visit_exp `CONST`_instr{numtype#272}((at : addrtype <: numtype), `%`_num_{i#38446}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp numtype#272] -[visit_id numtype#272] -[visit_exp ((at : addrtype <: numtype), `%`_num_{i#38446}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp `CONST`_instr((at : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp ((at : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] not free -[visit_exp `%`_num_{i#38446}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp i#38446] -[visit_id i#38446] +[visit_exp `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] [visit_exp ((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] [visit_exp (((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] [visit_exp ((n : nat <:> int) - (1 : nat <:> int))] @@ -59782,56 +49536,40 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id n] not free [visit_exp (1 : nat <:> int)] [visit_exp 1] -[visit_exp `MEMORY.FILL`_instr{memidx#125}(x)] -[visit_exp memidx#125] -[visit_id memidx#125] +[visit_exp `MEMORY.FILL`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] not free -[check_dims] at' at_1 at_2 byte*#1870 byte*#1871 i#38512 i#38554 i#38580 i_1 i_2 instr*#1554 memidx#127 n numtype#274 numtype#276 numtype#278 state#1439 x_1 x_2 z -[visit_exp `%;%`_config{state#1439, `instr*#1554`}(z, [`CONST`_instr{numtype#274}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#276}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#278}((at' : addrtype <: numtype), `%`_num_{i#38512}(n)) `MEMORY.COPY`_instr{memidx#127}(x_1, x_2)])] -[visit_exp state#1439] -[visit_id state#1439] -[visit_exp `instr*#1554`] -[visit_id instr*#1554] -[visit_exp (z, [`CONST`_instr{numtype#274}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#276}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#278}((at' : addrtype <: numtype), `%`_num_{i#38512}(n)) `MEMORY.COPY`_instr{memidx#127}(x_1, x_2)])] +[check_dims] at' at_1 at_2 i_1 i_2 n x_1 x_2 z +[visit_exp `%;%`_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)])] +[visit_exp (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)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#274}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#276}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#278}((at' : addrtype <: numtype), `%`_num_{i#38512}(n)) `MEMORY.COPY`_instr{memidx#127}(x_1, x_2)]] -[visit_exp `CONST`_instr{numtype#274}((at_1 : addrtype <: numtype), i_1)] -[visit_exp numtype#274] -[visit_id numtype#274] +[visit_exp [`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)]] +[visit_exp `CONST`_instr((at_1 : addrtype <: numtype), i_1)] [visit_exp ((at_1 : addrtype <: numtype), i_1)] [visit_exp (at_1 : addrtype <: numtype)] [visit_exp at_1] [visit_id at_1] [visit_exp i_1] [visit_id i_1] -[visit_exp `CONST`_instr{numtype#276}((at_2 : addrtype <: numtype), i_2)] -[visit_exp numtype#276] -[visit_id numtype#276] +[visit_exp `CONST`_instr((at_2 : addrtype <: numtype), i_2)] [visit_exp ((at_2 : addrtype <: numtype), i_2)] [visit_exp (at_2 : addrtype <: numtype)] [visit_exp at_2] [visit_id at_2] [visit_exp i_2] [visit_id i_2] -[visit_exp `CONST`_instr{numtype#278}((at' : addrtype <: numtype), `%`_num_{i#38512}(n))] -[visit_exp numtype#278] -[visit_id numtype#278] -[visit_exp ((at' : addrtype <: numtype), `%`_num_{i#38512}(n))] +[visit_exp `CONST`_instr((at' : addrtype <: numtype), `%`_num_(n))] +[visit_exp ((at' : addrtype <: numtype), `%`_num_(n))] [visit_exp (at' : addrtype <: numtype)] [visit_exp at'] [visit_id at'] -[visit_exp `%`_num_{i#38512}(n)] -[visit_exp i#38512] -[visit_id i#38512] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `MEMORY.COPY`_instr{memidx#127}(x_1, x_2)] -[visit_exp memidx#127] -[visit_id memidx#127] +[visit_exp `MEMORY.COPY`_instr(x_1, x_2)] [visit_exp (x_1, x_2)] [visit_exp x_1] [visit_id x_1] @@ -59840,89 +49578,67 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[visit_exp (((i_1!`%`_num_{i#38554}.0 + n) > |$mem(z, x_1).`BYTES`_meminst{`byte*#1870`}|) \/ ((i_2!`%`_num_{i#38580}.0 + n) > |$mem(z, x_2).`BYTES`_meminst{`byte*#1871`}|))] -[visit_exp ((i_1!`%`_num_{i#38554}.0 + n) > |$mem(z, x_1).`BYTES`_meminst{`byte*#1870`}|)] -[visit_exp (i_1!`%`_num_{i#38554}.0 + n)] -[visit_exp i_1!`%`_num_{i#38554}.0] -[visit_exp i_1!`%`_num_{i#38554}] +[visit_exp (((i_1!`%`_num_.0 + n) > |$mem(z, x_1).`BYTES`_meminst|) \/ ((i_2!`%`_num_.0 + n) > |$mem(z, x_2).`BYTES`_meminst|))] +[visit_exp ((i_1!`%`_num_.0 + n) > |$mem(z, x_1).`BYTES`_meminst|)] +[visit_exp (i_1!`%`_num_.0 + n)] +[visit_exp i_1!`%`_num_.0] +[visit_exp i_1!`%`_num_] [visit_exp i_1] [visit_id i_1] not free -[visit_exp i#38554] -[visit_id i#38554] [visit_exp n] [visit_id n] not free -[visit_exp |$mem(z, x_1).`BYTES`_meminst{`byte*#1870`}|] -[visit_exp $mem(z, x_1).`BYTES`_meminst{`byte*#1870`}] +[visit_exp |$mem(z, x_1).`BYTES`_meminst|] +[visit_exp $mem(z, x_1).`BYTES`_meminst] [visit_exp $mem(z, x_1)] [visit_exp z] [visit_id z] not free [visit_exp x_1] [visit_id x_1] not free -[visit_exp `byte*#1870`] -[visit_id byte*#1870] -[visit_exp ((i_2!`%`_num_{i#38580}.0 + n) > |$mem(z, x_2).`BYTES`_meminst{`byte*#1871`}|)] -[visit_exp (i_2!`%`_num_{i#38580}.0 + n)] -[visit_exp i_2!`%`_num_{i#38580}.0] -[visit_exp i_2!`%`_num_{i#38580}] +[visit_exp ((i_2!`%`_num_.0 + n) > |$mem(z, x_2).`BYTES`_meminst|)] +[visit_exp (i_2!`%`_num_.0 + n)] +[visit_exp i_2!`%`_num_.0] +[visit_exp i_2!`%`_num_] [visit_exp i_2] [visit_id i_2] not free -[visit_exp i#38580] -[visit_id i#38580] [visit_exp n] [visit_id n] not free -[visit_exp |$mem(z, x_2).`BYTES`_meminst{`byte*#1871`}|] -[visit_exp $mem(z, x_2).`BYTES`_meminst{`byte*#1871`}] +[visit_exp |$mem(z, x_2).`BYTES`_meminst|] +[visit_exp $mem(z, x_2).`BYTES`_meminst] [visit_exp $mem(z, x_2)] [visit_exp z] [visit_id z] not free [visit_exp x_2] [visit_id x_2] not free -[visit_exp `byte*#1871`] -[visit_id byte*#1871] -[check_dims] at' at_1 at_2 i#38644 i_1 i_2 instr*#1566 memidx#130 n numtype#280 numtype#282 numtype#284 state#1451 x_1 x_2 z -[visit_exp `%;%`_config{state#1451, `instr*#1566`}(z, [`CONST`_instr{numtype#280}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#282}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#284}((at' : addrtype <: numtype), `%`_num_{i#38644}(n)) `MEMORY.COPY`_instr{memidx#130}(x_1, x_2)])] -[visit_exp state#1451] -[visit_id state#1451] -[visit_exp `instr*#1566`] -[visit_id instr*#1566] -[visit_exp (z, [`CONST`_instr{numtype#280}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#282}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#284}((at' : addrtype <: numtype), `%`_num_{i#38644}(n)) `MEMORY.COPY`_instr{memidx#130}(x_1, x_2)])] +[check_dims] at' at_1 at_2 i_1 i_2 n x_1 x_2 z +[visit_exp `%;%`_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)])] +[visit_exp (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)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#280}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#282}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#284}((at' : addrtype <: numtype), `%`_num_{i#38644}(n)) `MEMORY.COPY`_instr{memidx#130}(x_1, x_2)]] -[visit_exp `CONST`_instr{numtype#280}((at_1 : addrtype <: numtype), i_1)] -[visit_exp numtype#280] -[visit_id numtype#280] +[visit_exp [`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)]] +[visit_exp `CONST`_instr((at_1 : addrtype <: numtype), i_1)] [visit_exp ((at_1 : addrtype <: numtype), i_1)] [visit_exp (at_1 : addrtype <: numtype)] [visit_exp at_1] [visit_id at_1] [visit_exp i_1] [visit_id i_1] -[visit_exp `CONST`_instr{numtype#282}((at_2 : addrtype <: numtype), i_2)] -[visit_exp numtype#282] -[visit_id numtype#282] +[visit_exp `CONST`_instr((at_2 : addrtype <: numtype), i_2)] [visit_exp ((at_2 : addrtype <: numtype), i_2)] [visit_exp (at_2 : addrtype <: numtype)] [visit_exp at_2] [visit_id at_2] [visit_exp i_2] [visit_id i_2] -[visit_exp `CONST`_instr{numtype#284}((at' : addrtype <: numtype), `%`_num_{i#38644}(n))] -[visit_exp numtype#284] -[visit_id numtype#284] -[visit_exp ((at' : addrtype <: numtype), `%`_num_{i#38644}(n))] +[visit_exp `CONST`_instr((at' : addrtype <: numtype), `%`_num_(n))] +[visit_exp ((at' : addrtype <: numtype), `%`_num_(n))] [visit_exp (at' : addrtype <: numtype)] [visit_exp at'] [visit_id at'] -[visit_exp `%`_num_{i#38644}(n)] -[visit_exp i#38644] -[visit_id i#38644] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `MEMORY.COPY`_instr{memidx#130}(x_1, x_2)] -[visit_exp memidx#130] -[visit_id memidx#130] +[visit_exp `MEMORY.COPY`_instr(x_1, x_2)] [visit_exp (x_1, x_2)] [visit_exp x_1] [visit_id x_1] @@ -59933,96 +49649,64 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp n] [visit_id n] not free [visit_exp 0] -[check_dims] at' at_1 at_2 i#38724 i#38802 i#38809 i#38864 i#38865 i#38905 i#38915 i#38941 i#38951 i#38973 i#39019 i#39029 i_1 i_2 instr*#1578 memarg#81 memarg#83 memidx#133 memidx#136 memidx#138 memidx#140 n numtype#286 numtype#288 numtype#290 numtype#292 numtype#294 numtype#298 numtype#300 numtype#302 numtype?#16 numtype?#17 state#1463 sx#384 sz#483 sz#496 x_1 x_2 z -[visit_exp `%;%`_config{state#1463, `instr*#1578`}(z, [`CONST`_instr{numtype#286}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#288}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#290}((at' : addrtype <: numtype), `%`_num_{i#38724}(n)) `MEMORY.COPY`_instr{memidx#133}(x_1, x_2)])] -[visit_exp state#1463] -[visit_id state#1463] -[visit_exp `instr*#1578`] -[visit_id instr*#1578] -[visit_exp (z, [`CONST`_instr{numtype#286}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#288}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#290}((at' : addrtype <: numtype), `%`_num_{i#38724}(n)) `MEMORY.COPY`_instr{memidx#133}(x_1, x_2)])] +[check_dims] at' at_1 at_2 i_1 i_2 n x_1 x_2 z +[visit_exp `%;%`_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)])] +[visit_exp (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)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#286}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#288}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#290}((at' : addrtype <: numtype), `%`_num_{i#38724}(n)) `MEMORY.COPY`_instr{memidx#133}(x_1, x_2)]] -[visit_exp `CONST`_instr{numtype#286}((at_1 : addrtype <: numtype), i_1)] -[visit_exp numtype#286] -[visit_id numtype#286] +[visit_exp [`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)]] +[visit_exp `CONST`_instr((at_1 : addrtype <: numtype), i_1)] [visit_exp ((at_1 : addrtype <: numtype), i_1)] [visit_exp (at_1 : addrtype <: numtype)] [visit_exp at_1] [visit_id at_1] [visit_exp i_1] [visit_id i_1] -[visit_exp `CONST`_instr{numtype#288}((at_2 : addrtype <: numtype), i_2)] -[visit_exp numtype#288] -[visit_id numtype#288] +[visit_exp `CONST`_instr((at_2 : addrtype <: numtype), i_2)] [visit_exp ((at_2 : addrtype <: numtype), i_2)] [visit_exp (at_2 : addrtype <: numtype)] [visit_exp at_2] [visit_id at_2] [visit_exp i_2] [visit_id i_2] -[visit_exp `CONST`_instr{numtype#290}((at' : addrtype <: numtype), `%`_num_{i#38724}(n))] -[visit_exp numtype#290] -[visit_id numtype#290] -[visit_exp ((at' : addrtype <: numtype), `%`_num_{i#38724}(n))] +[visit_exp `CONST`_instr((at' : addrtype <: numtype), `%`_num_(n))] +[visit_exp ((at' : addrtype <: numtype), `%`_num_(n))] [visit_exp (at' : addrtype <: numtype)] [visit_exp at'] [visit_id at'] -[visit_exp `%`_num_{i#38724}(n)] -[visit_exp i#38724] -[visit_id i#38724] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `MEMORY.COPY`_instr{memidx#133}(x_1, x_2)] -[visit_exp memidx#133] -[visit_id memidx#133] +[visit_exp `MEMORY.COPY`_instr(x_1, x_2)] [visit_exp (x_1, x_2)] [visit_exp x_1] [visit_id x_1] [visit_exp x_2] [visit_id x_2] -[visit_exp [`CONST`_instr{numtype#292}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#294}((at_2 : addrtype <: numtype), i_2) `LOAD`_instr{`numtype?#16`, memidx#136, memarg#81}(`I32`_numtype, ?(`%_%`_loadop_{sz#483, sx#384, i#38802}(`%`_sz{i#38809}(8), `U`_sx)), x_2, $memarg0) `STORE`_instr{`numtype?#17`, memidx#138, memarg#83}(`I32`_numtype, ?(`%`_storeop_{sz#496, i#38864}(`%`_sz{i#38865}(8))), x_1, $memarg0) `CONST`_instr{numtype#298}((at_1 : addrtype <: numtype), `%`_num_{i#38915}((i_1!`%`_num_{i#38905}.0 + 1))) `CONST`_instr{numtype#300}((at_2 : addrtype <: numtype), `%`_num_{i#38951}((i_2!`%`_num_{i#38941}.0 + 1))) `CONST`_instr{numtype#302}((at' : addrtype <: numtype), `%`_num_{i#38973}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `MEMORY.COPY`_instr{memidx#140}(x_1, x_2)]] -[visit_exp `CONST`_instr{numtype#292}((at_1 : addrtype <: numtype), i_1)] -[visit_exp numtype#292] -[visit_id numtype#292] +[visit_exp [`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)]] +[visit_exp `CONST`_instr((at_1 : addrtype <: numtype), i_1)] [visit_exp ((at_1 : addrtype <: numtype), i_1)] [visit_exp (at_1 : addrtype <: numtype)] [visit_exp at_1] [visit_id at_1] not free [visit_exp i_1] [visit_id i_1] not free -[visit_exp `CONST`_instr{numtype#294}((at_2 : addrtype <: numtype), i_2)] -[visit_exp numtype#294] -[visit_id numtype#294] +[visit_exp `CONST`_instr((at_2 : addrtype <: numtype), i_2)] [visit_exp ((at_2 : addrtype <: numtype), i_2)] [visit_exp (at_2 : addrtype <: numtype)] [visit_exp at_2] [visit_id at_2] not free [visit_exp i_2] [visit_id i_2] not free -[visit_exp `LOAD`_instr{`numtype?#16`, memidx#136, memarg#81}(`I32`_numtype, ?(`%_%`_loadop_{sz#483, sx#384, i#38802}(`%`_sz{i#38809}(8), `U`_sx)), x_2, $memarg0)] -[visit_exp `numtype?#16`] -[visit_id numtype?#16] -[visit_exp memidx#136] -[visit_id memidx#136] -[visit_exp memarg#81] -[visit_id memarg#81] -[visit_exp (`I32`_numtype, ?(`%_%`_loadop_{sz#483, sx#384, i#38802}(`%`_sz{i#38809}(8), `U`_sx)), x_2, $memarg0)] +[visit_exp `LOAD`_instr(`I32`_numtype, ?(`%_%`_loadop_(`%`_sz(8), `U`_sx)), x_2, $memarg0)] +[visit_exp (`I32`_numtype, ?(`%_%`_loadop_(`%`_sz(8), `U`_sx)), x_2, $memarg0)] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp ?(`%_%`_loadop_{sz#483, sx#384, i#38802}(`%`_sz{i#38809}(8), `U`_sx))] -[visit_exp `%_%`_loadop_{sz#483, sx#384, i#38802}(`%`_sz{i#38809}(8), `U`_sx)] -[visit_exp sz#483] -[visit_id sz#483] -[visit_exp sx#384] -[visit_id sx#384] -[visit_exp i#38802] -[visit_id i#38802] -[visit_exp (`%`_sz{i#38809}(8), `U`_sx)] -[visit_exp `%`_sz{i#38809}(8)] -[visit_exp i#38809] -[visit_id i#38809] +[visit_exp ?(`%_%`_loadop_(`%`_sz(8), `U`_sx))] +[visit_exp `%_%`_loadop_(`%`_sz(8), `U`_sx)] +[visit_exp (`%`_sz(8), `U`_sx)] +[visit_exp `%`_sz(8)] [visit_exp (8)] [visit_exp 8] [visit_exp `U`_sx] @@ -60030,79 +49714,51 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp x_2] [visit_id x_2] not free [visit_exp $memarg0] -[visit_exp `STORE`_instr{`numtype?#17`, memidx#138, memarg#83}(`I32`_numtype, ?(`%`_storeop_{sz#496, i#38864}(`%`_sz{i#38865}(8))), x_1, $memarg0)] -[visit_exp `numtype?#17`] -[visit_id numtype?#17] -[visit_exp memidx#138] -[visit_id memidx#138] -[visit_exp memarg#83] -[visit_id memarg#83] -[visit_exp (`I32`_numtype, ?(`%`_storeop_{sz#496, i#38864}(`%`_sz{i#38865}(8))), x_1, $memarg0)] +[visit_exp `STORE`_instr(`I32`_numtype, ?(`%`_storeop_(`%`_sz(8))), x_1, $memarg0)] +[visit_exp (`I32`_numtype, ?(`%`_storeop_(`%`_sz(8))), x_1, $memarg0)] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp ?(`%`_storeop_{sz#496, i#38864}(`%`_sz{i#38865}(8)))] -[visit_exp `%`_storeop_{sz#496, i#38864}(`%`_sz{i#38865}(8))] -[visit_exp sz#496] -[visit_id sz#496] -[visit_exp i#38864] -[visit_id i#38864] -[visit_exp (`%`_sz{i#38865}(8))] -[visit_exp `%`_sz{i#38865}(8)] -[visit_exp i#38865] -[visit_id i#38865] +[visit_exp ?(`%`_storeop_(`%`_sz(8)))] +[visit_exp `%`_storeop_(`%`_sz(8))] +[visit_exp (`%`_sz(8))] +[visit_exp `%`_sz(8)] [visit_exp (8)] [visit_exp 8] [visit_exp x_1] [visit_id x_1] not free [visit_exp $memarg0] -[visit_exp `CONST`_instr{numtype#298}((at_1 : addrtype <: numtype), `%`_num_{i#38915}((i_1!`%`_num_{i#38905}.0 + 1)))] -[visit_exp numtype#298] -[visit_id numtype#298] -[visit_exp ((at_1 : addrtype <: numtype), `%`_num_{i#38915}((i_1!`%`_num_{i#38905}.0 + 1)))] +[visit_exp `CONST`_instr((at_1 : addrtype <: numtype), `%`_num_((i_1!`%`_num_.0 + 1)))] +[visit_exp ((at_1 : addrtype <: numtype), `%`_num_((i_1!`%`_num_.0 + 1)))] [visit_exp (at_1 : addrtype <: numtype)] [visit_exp at_1] [visit_id at_1] not free -[visit_exp `%`_num_{i#38915}((i_1!`%`_num_{i#38905}.0 + 1))] -[visit_exp i#38915] -[visit_id i#38915] -[visit_exp ((i_1!`%`_num_{i#38905}.0 + 1))] -[visit_exp (i_1!`%`_num_{i#38905}.0 + 1)] -[visit_exp i_1!`%`_num_{i#38905}.0] -[visit_exp i_1!`%`_num_{i#38905}] +[visit_exp `%`_num_((i_1!`%`_num_.0 + 1))] +[visit_exp ((i_1!`%`_num_.0 + 1))] +[visit_exp (i_1!`%`_num_.0 + 1)] +[visit_exp i_1!`%`_num_.0] +[visit_exp i_1!`%`_num_] [visit_exp i_1] [visit_id i_1] not free -[visit_exp i#38905] -[visit_id i#38905] [visit_exp 1] -[visit_exp `CONST`_instr{numtype#300}((at_2 : addrtype <: numtype), `%`_num_{i#38951}((i_2!`%`_num_{i#38941}.0 + 1)))] -[visit_exp numtype#300] -[visit_id numtype#300] -[visit_exp ((at_2 : addrtype <: numtype), `%`_num_{i#38951}((i_2!`%`_num_{i#38941}.0 + 1)))] +[visit_exp `CONST`_instr((at_2 : addrtype <: numtype), `%`_num_((i_2!`%`_num_.0 + 1)))] +[visit_exp ((at_2 : addrtype <: numtype), `%`_num_((i_2!`%`_num_.0 + 1)))] [visit_exp (at_2 : addrtype <: numtype)] [visit_exp at_2] [visit_id at_2] not free -[visit_exp `%`_num_{i#38951}((i_2!`%`_num_{i#38941}.0 + 1))] -[visit_exp i#38951] -[visit_id i#38951] -[visit_exp ((i_2!`%`_num_{i#38941}.0 + 1))] -[visit_exp (i_2!`%`_num_{i#38941}.0 + 1)] -[visit_exp i_2!`%`_num_{i#38941}.0] -[visit_exp i_2!`%`_num_{i#38941}] +[visit_exp `%`_num_((i_2!`%`_num_.0 + 1))] +[visit_exp ((i_2!`%`_num_.0 + 1))] +[visit_exp (i_2!`%`_num_.0 + 1)] +[visit_exp i_2!`%`_num_.0] +[visit_exp i_2!`%`_num_] [visit_exp i_2] [visit_id i_2] not free -[visit_exp i#38941] -[visit_id i#38941] [visit_exp 1] -[visit_exp `CONST`_instr{numtype#302}((at' : addrtype <: numtype), `%`_num_{i#38973}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp numtype#302] -[visit_id numtype#302] -[visit_exp ((at' : addrtype <: numtype), `%`_num_{i#38973}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp `CONST`_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp ((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] [visit_exp (at' : addrtype <: numtype)] [visit_exp at'] [visit_id at'] not free -[visit_exp `%`_num_{i#38973}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp i#38973] -[visit_id i#38973] +[visit_exp `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] [visit_exp ((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] [visit_exp (((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] [visit_exp ((n : nat <:> int) - (1 : nat <:> int))] @@ -60111,149 +49767,103 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id n] not free [visit_exp (1 : nat <:> int)] [visit_exp 1] -[visit_exp `MEMORY.COPY`_instr{memidx#140}(x_1, x_2)] -[visit_exp memidx#140] -[visit_id memidx#140] +[visit_exp `MEMORY.COPY`_instr(x_1, x_2)] [visit_exp (x_1, x_2)] [visit_exp x_1] [visit_id x_1] not free [visit_exp x_2] [visit_id x_2] not free -[visit_exp (i_1!`%`_num_{i#39019}.0 <= i_2!`%`_num_{i#39029}.0)] -[visit_exp i_1!`%`_num_{i#39019}.0] -[visit_exp i_1!`%`_num_{i#39019}] +[visit_exp (i_1!`%`_num_.0 <= i_2!`%`_num_.0)] +[visit_exp i_1!`%`_num_.0] +[visit_exp i_1!`%`_num_] [visit_exp i_1] [visit_id i_1] not free -[visit_exp i#39019] -[visit_id i#39019] -[visit_exp i_2!`%`_num_{i#39029}.0] -[visit_exp i_2!`%`_num_{i#39029}] +[visit_exp i_2!`%`_num_.0] +[visit_exp i_2!`%`_num_] [visit_exp i_2] [visit_id i_2] not free -[visit_exp i#39029] -[visit_id i#39029] -[check_dims] at' at_1 at_2 i#39081 i#39135 i#39145 i#39171 i#39181 i#39207 i#39214 i#39269 i#39270 i#39330 i_1 i_2 instr*#1590 memarg#85 memarg#87 memidx#143 memidx#146 memidx#148 memidx#150 n numtype#304 numtype#306 numtype#308 numtype#310 numtype#312 numtype#316 numtype#318 numtype#320 numtype?#18 numtype?#19 state#1475 sx#402 sz#514 sz#527 x_1 x_2 z -[visit_exp `%;%`_config{state#1475, `instr*#1590`}(z, [`CONST`_instr{numtype#304}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#306}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#308}((at' : addrtype <: numtype), `%`_num_{i#39081}(n)) `MEMORY.COPY`_instr{memidx#143}(x_1, x_2)])] -[visit_exp state#1475] -[visit_id state#1475] -[visit_exp `instr*#1590`] -[visit_id instr*#1590] -[visit_exp (z, [`CONST`_instr{numtype#304}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#306}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#308}((at' : addrtype <: numtype), `%`_num_{i#39081}(n)) `MEMORY.COPY`_instr{memidx#143}(x_1, x_2)])] +[check_dims] at' at_1 at_2 i_1 i_2 n x_1 x_2 z +[visit_exp `%;%`_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)])] +[visit_exp (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)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#304}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#306}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#308}((at' : addrtype <: numtype), `%`_num_{i#39081}(n)) `MEMORY.COPY`_instr{memidx#143}(x_1, x_2)]] -[visit_exp `CONST`_instr{numtype#304}((at_1 : addrtype <: numtype), i_1)] -[visit_exp numtype#304] -[visit_id numtype#304] +[visit_exp [`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)]] +[visit_exp `CONST`_instr((at_1 : addrtype <: numtype), i_1)] [visit_exp ((at_1 : addrtype <: numtype), i_1)] [visit_exp (at_1 : addrtype <: numtype)] [visit_exp at_1] [visit_id at_1] [visit_exp i_1] [visit_id i_1] -[visit_exp `CONST`_instr{numtype#306}((at_2 : addrtype <: numtype), i_2)] -[visit_exp numtype#306] -[visit_id numtype#306] +[visit_exp `CONST`_instr((at_2 : addrtype <: numtype), i_2)] [visit_exp ((at_2 : addrtype <: numtype), i_2)] [visit_exp (at_2 : addrtype <: numtype)] [visit_exp at_2] [visit_id at_2] [visit_exp i_2] [visit_id i_2] -[visit_exp `CONST`_instr{numtype#308}((at' : addrtype <: numtype), `%`_num_{i#39081}(n))] -[visit_exp numtype#308] -[visit_id numtype#308] -[visit_exp ((at' : addrtype <: numtype), `%`_num_{i#39081}(n))] +[visit_exp `CONST`_instr((at' : addrtype <: numtype), `%`_num_(n))] +[visit_exp ((at' : addrtype <: numtype), `%`_num_(n))] [visit_exp (at' : addrtype <: numtype)] [visit_exp at'] [visit_id at'] -[visit_exp `%`_num_{i#39081}(n)] -[visit_exp i#39081] -[visit_id i#39081] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `MEMORY.COPY`_instr{memidx#143}(x_1, x_2)] -[visit_exp memidx#143] -[visit_id memidx#143] +[visit_exp `MEMORY.COPY`_instr(x_1, x_2)] [visit_exp (x_1, x_2)] [visit_exp x_1] [visit_id x_1] [visit_exp x_2] [visit_id x_2] -[visit_exp [`CONST`_instr{numtype#310}((at_1 : addrtype <: numtype), `%`_num_{i#39145}(((((i_1!`%`_num_{i#39135}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `CONST`_instr{numtype#312}((at_2 : addrtype <: numtype), `%`_num_{i#39181}(((((i_2!`%`_num_{i#39171}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `LOAD`_instr{`numtype?#18`, memidx#146, memarg#85}(`I32`_numtype, ?(`%_%`_loadop_{sz#514, sx#402, i#39207}(`%`_sz{i#39214}(8), `U`_sx)), x_2, $memarg0) `STORE`_instr{`numtype?#19`, memidx#148, memarg#87}(`I32`_numtype, ?(`%`_storeop_{sz#527, i#39269}(`%`_sz{i#39270}(8))), x_1, $memarg0) `CONST`_instr{numtype#316}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#318}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#320}((at' : addrtype <: numtype), `%`_num_{i#39330}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `MEMORY.COPY`_instr{memidx#150}(x_1, x_2)]] -[visit_exp `CONST`_instr{numtype#310}((at_1 : addrtype <: numtype), `%`_num_{i#39145}(((((i_1!`%`_num_{i#39135}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp numtype#310] -[visit_id numtype#310] -[visit_exp ((at_1 : addrtype <: numtype), `%`_num_{i#39145}(((((i_1!`%`_num_{i#39135}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp [`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)]] +[visit_exp `CONST`_instr((at_1 : addrtype <: numtype), `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp ((at_1 : addrtype <: numtype), `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] [visit_exp (at_1 : addrtype <: numtype)] [visit_exp at_1] [visit_id at_1] not free -[visit_exp `%`_num_{i#39145}(((((i_1!`%`_num_{i#39135}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp i#39145] -[visit_id i#39145] -[visit_exp (((((i_1!`%`_num_{i#39135}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp ((((i_1!`%`_num_{i#39135}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp (((i_1!`%`_num_{i#39135}.0 + n) : nat <:> int) - (1 : nat <:> int))] -[visit_exp ((i_1!`%`_num_{i#39135}.0 + n) : nat <:> int)] -[visit_exp (i_1!`%`_num_{i#39135}.0 + n)] -[visit_exp i_1!`%`_num_{i#39135}.0] -[visit_exp i_1!`%`_num_{i#39135}] +[visit_exp `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp (((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp ((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp (((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int))] +[visit_exp ((i_1!`%`_num_.0 + n) : nat <:> int)] +[visit_exp (i_1!`%`_num_.0 + n)] +[visit_exp i_1!`%`_num_.0] +[visit_exp i_1!`%`_num_] [visit_exp i_1] [visit_id i_1] not free -[visit_exp i#39135] -[visit_id i#39135] [visit_exp n] [visit_id n] not free [visit_exp (1 : nat <:> int)] [visit_exp 1] -[visit_exp `CONST`_instr{numtype#312}((at_2 : addrtype <: numtype), `%`_num_{i#39181}(((((i_2!`%`_num_{i#39171}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp numtype#312] -[visit_id numtype#312] -[visit_exp ((at_2 : addrtype <: numtype), `%`_num_{i#39181}(((((i_2!`%`_num_{i#39171}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp `CONST`_instr((at_2 : addrtype <: numtype), `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp ((at_2 : addrtype <: numtype), `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] [visit_exp (at_2 : addrtype <: numtype)] [visit_exp at_2] [visit_id at_2] not free -[visit_exp `%`_num_{i#39181}(((((i_2!`%`_num_{i#39171}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp i#39181] -[visit_id i#39181] -[visit_exp (((((i_2!`%`_num_{i#39171}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp ((((i_2!`%`_num_{i#39171}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp (((i_2!`%`_num_{i#39171}.0 + n) : nat <:> int) - (1 : nat <:> int))] -[visit_exp ((i_2!`%`_num_{i#39171}.0 + n) : nat <:> int)] -[visit_exp (i_2!`%`_num_{i#39171}.0 + n)] -[visit_exp i_2!`%`_num_{i#39171}.0] -[visit_exp i_2!`%`_num_{i#39171}] +[visit_exp `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp (((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp ((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp (((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int))] +[visit_exp ((i_2!`%`_num_.0 + n) : nat <:> int)] +[visit_exp (i_2!`%`_num_.0 + n)] +[visit_exp i_2!`%`_num_.0] +[visit_exp i_2!`%`_num_] [visit_exp i_2] [visit_id i_2] not free -[visit_exp i#39171] -[visit_id i#39171] [visit_exp n] [visit_id n] not free [visit_exp (1 : nat <:> int)] [visit_exp 1] -[visit_exp `LOAD`_instr{`numtype?#18`, memidx#146, memarg#85}(`I32`_numtype, ?(`%_%`_loadop_{sz#514, sx#402, i#39207}(`%`_sz{i#39214}(8), `U`_sx)), x_2, $memarg0)] -[visit_exp `numtype?#18`] -[visit_id numtype?#18] -[visit_exp memidx#146] -[visit_id memidx#146] -[visit_exp memarg#85] -[visit_id memarg#85] -[visit_exp (`I32`_numtype, ?(`%_%`_loadop_{sz#514, sx#402, i#39207}(`%`_sz{i#39214}(8), `U`_sx)), x_2, $memarg0)] +[visit_exp `LOAD`_instr(`I32`_numtype, ?(`%_%`_loadop_(`%`_sz(8), `U`_sx)), x_2, $memarg0)] +[visit_exp (`I32`_numtype, ?(`%_%`_loadop_(`%`_sz(8), `U`_sx)), x_2, $memarg0)] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp ?(`%_%`_loadop_{sz#514, sx#402, i#39207}(`%`_sz{i#39214}(8), `U`_sx))] -[visit_exp `%_%`_loadop_{sz#514, sx#402, i#39207}(`%`_sz{i#39214}(8), `U`_sx)] -[visit_exp sz#514] -[visit_id sz#514] -[visit_exp sx#402] -[visit_id sx#402] -[visit_exp i#39207] -[visit_id i#39207] -[visit_exp (`%`_sz{i#39214}(8), `U`_sx)] -[visit_exp `%`_sz{i#39214}(8)] -[visit_exp i#39214] -[visit_id i#39214] +[visit_exp ?(`%_%`_loadop_(`%`_sz(8), `U`_sx))] +[visit_exp `%_%`_loadop_(`%`_sz(8), `U`_sx)] +[visit_exp (`%`_sz(8), `U`_sx)] +[visit_exp `%`_sz(8)] [visit_exp (8)] [visit_exp 8] [visit_exp `U`_sx] @@ -60261,59 +49871,39 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp x_2] [visit_id x_2] not free [visit_exp $memarg0] -[visit_exp `STORE`_instr{`numtype?#19`, memidx#148, memarg#87}(`I32`_numtype, ?(`%`_storeop_{sz#527, i#39269}(`%`_sz{i#39270}(8))), x_1, $memarg0)] -[visit_exp `numtype?#19`] -[visit_id numtype?#19] -[visit_exp memidx#148] -[visit_id memidx#148] -[visit_exp memarg#87] -[visit_id memarg#87] -[visit_exp (`I32`_numtype, ?(`%`_storeop_{sz#527, i#39269}(`%`_sz{i#39270}(8))), x_1, $memarg0)] +[visit_exp `STORE`_instr(`I32`_numtype, ?(`%`_storeop_(`%`_sz(8))), x_1, $memarg0)] +[visit_exp (`I32`_numtype, ?(`%`_storeop_(`%`_sz(8))), x_1, $memarg0)] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp ?(`%`_storeop_{sz#527, i#39269}(`%`_sz{i#39270}(8)))] -[visit_exp `%`_storeop_{sz#527, i#39269}(`%`_sz{i#39270}(8))] -[visit_exp sz#527] -[visit_id sz#527] -[visit_exp i#39269] -[visit_id i#39269] -[visit_exp (`%`_sz{i#39270}(8))] -[visit_exp `%`_sz{i#39270}(8)] -[visit_exp i#39270] -[visit_id i#39270] +[visit_exp ?(`%`_storeop_(`%`_sz(8)))] +[visit_exp `%`_storeop_(`%`_sz(8))] +[visit_exp (`%`_sz(8))] +[visit_exp `%`_sz(8)] [visit_exp (8)] [visit_exp 8] [visit_exp x_1] [visit_id x_1] not free [visit_exp $memarg0] -[visit_exp `CONST`_instr{numtype#316}((at_1 : addrtype <: numtype), i_1)] -[visit_exp numtype#316] -[visit_id numtype#316] +[visit_exp `CONST`_instr((at_1 : addrtype <: numtype), i_1)] [visit_exp ((at_1 : addrtype <: numtype), i_1)] [visit_exp (at_1 : addrtype <: numtype)] [visit_exp at_1] [visit_id at_1] not free [visit_exp i_1] [visit_id i_1] not free -[visit_exp `CONST`_instr{numtype#318}((at_2 : addrtype <: numtype), i_2)] -[visit_exp numtype#318] -[visit_id numtype#318] +[visit_exp `CONST`_instr((at_2 : addrtype <: numtype), i_2)] [visit_exp ((at_2 : addrtype <: numtype), i_2)] [visit_exp (at_2 : addrtype <: numtype)] [visit_exp at_2] [visit_id at_2] not free [visit_exp i_2] [visit_id i_2] not free -[visit_exp `CONST`_instr{numtype#320}((at' : addrtype <: numtype), `%`_num_{i#39330}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp numtype#320] -[visit_id numtype#320] -[visit_exp ((at' : addrtype <: numtype), `%`_num_{i#39330}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp `CONST`_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp ((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] [visit_exp (at' : addrtype <: numtype)] [visit_exp at'] [visit_id at'] not free -[visit_exp `%`_num_{i#39330}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp i#39330] -[visit_id i#39330] +[visit_exp `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] [visit_exp ((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] [visit_exp (((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] [visit_exp ((n : nat <:> int) - (1 : nat <:> int))] @@ -60322,58 +49912,40 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id n] not free [visit_exp (1 : nat <:> int)] [visit_exp 1] -[visit_exp `MEMORY.COPY`_instr{memidx#150}(x_1, x_2)] -[visit_exp memidx#150] -[visit_id memidx#150] +[visit_exp `MEMORY.COPY`_instr(x_1, x_2)] [visit_exp (x_1, x_2)] [visit_exp x_1] [visit_id x_1] not free [visit_exp x_2] [visit_id x_2] not free -[check_dims] at byte*#1872 byte*#1873 dataidx#17 i i#39410 i#39452 i#39478 instr*#1602 j memidx#153 n numtype#322 numtype#324 numtype#326 state#1487 x y z -[visit_exp `%;%`_config{state#1487, `instr*#1602`}(z, [`CONST`_instr{numtype#322}((at : addrtype <: numtype), i) `CONST`_instr{numtype#324}(`I32`_numtype, j) `CONST`_instr{numtype#326}(`I32`_numtype, `%`_num_{i#39410}(n)) `MEMORY.INIT`_instr{memidx#153, dataidx#17}(x, y)])] -[visit_exp state#1487] -[visit_id state#1487] -[visit_exp `instr*#1602`] -[visit_id instr*#1602] -[visit_exp (z, [`CONST`_instr{numtype#322}((at : addrtype <: numtype), i) `CONST`_instr{numtype#324}(`I32`_numtype, j) `CONST`_instr{numtype#326}(`I32`_numtype, `%`_num_{i#39410}(n)) `MEMORY.INIT`_instr{memidx#153, dataidx#17}(x, y)])] +[check_dims] at i j n x y z +[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(`I32`_numtype, j) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `MEMORY.INIT`_instr(x, y)])] +[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(`I32`_numtype, j) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `MEMORY.INIT`_instr(x, y)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#322}((at : addrtype <: numtype), i) `CONST`_instr{numtype#324}(`I32`_numtype, j) `CONST`_instr{numtype#326}(`I32`_numtype, `%`_num_{i#39410}(n)) `MEMORY.INIT`_instr{memidx#153, dataidx#17}(x, y)]] -[visit_exp `CONST`_instr{numtype#322}((at : addrtype <: numtype), i)] -[visit_exp numtype#322] -[visit_id numtype#322] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(`I32`_numtype, j) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `MEMORY.INIT`_instr(x, y)]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] [visit_exp ((at : addrtype <: numtype), i)] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] [visit_exp i] [visit_id i] -[visit_exp `CONST`_instr{numtype#324}(`I32`_numtype, j)] -[visit_exp numtype#324] -[visit_id numtype#324] +[visit_exp `CONST`_instr(`I32`_numtype, j)] [visit_exp (`I32`_numtype, j)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp j] [visit_id j] -[visit_exp `CONST`_instr{numtype#326}(`I32`_numtype, `%`_num_{i#39410}(n))] -[visit_exp numtype#326] -[visit_id numtype#326] -[visit_exp (`I32`_numtype, `%`_num_{i#39410}(n))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] +[visit_exp (`I32`_numtype, `%`_num_(n))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#39410}(n)] -[visit_exp i#39410] -[visit_id i#39410] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `MEMORY.INIT`_instr{memidx#153, dataidx#17}(x, y)] -[visit_exp memidx#153] -[visit_id memidx#153] -[visit_exp dataidx#17] -[visit_id dataidx#17] +[visit_exp `MEMORY.INIT`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] @@ -60382,89 +49954,65 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[visit_exp (((i!`%`_num_{i#39452}.0 + n) > |$mem(z, x).`BYTES`_meminst{`byte*#1872`}|) \/ ((j!`%`_num_{i#39478}.0 + n) > |$data(z, y).`BYTES`_datainst{`byte*#1873`}|))] -[visit_exp ((i!`%`_num_{i#39452}.0 + n) > |$mem(z, x).`BYTES`_meminst{`byte*#1872`}|)] -[visit_exp (i!`%`_num_{i#39452}.0 + n)] -[visit_exp i!`%`_num_{i#39452}.0] -[visit_exp i!`%`_num_{i#39452}] +[visit_exp (((i!`%`_num_.0 + n) > |$mem(z, x).`BYTES`_meminst|) \/ ((j!`%`_num_.0 + n) > |$data(z, y).`BYTES`_datainst|))] +[visit_exp ((i!`%`_num_.0 + n) > |$mem(z, x).`BYTES`_meminst|)] +[visit_exp (i!`%`_num_.0 + n)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#39452] -[visit_id i#39452] [visit_exp n] [visit_id n] not free -[visit_exp |$mem(z, x).`BYTES`_meminst{`byte*#1872`}|] -[visit_exp $mem(z, x).`BYTES`_meminst{`byte*#1872`}] +[visit_exp |$mem(z, x).`BYTES`_meminst|] +[visit_exp $mem(z, x).`BYTES`_meminst] [visit_exp $mem(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `byte*#1872`] -[visit_id byte*#1872] -[visit_exp ((j!`%`_num_{i#39478}.0 + n) > |$data(z, y).`BYTES`_datainst{`byte*#1873`}|)] -[visit_exp (j!`%`_num_{i#39478}.0 + n)] -[visit_exp j!`%`_num_{i#39478}.0] -[visit_exp j!`%`_num_{i#39478}] +[visit_exp ((j!`%`_num_.0 + n) > |$data(z, y).`BYTES`_datainst|)] +[visit_exp (j!`%`_num_.0 + n)] +[visit_exp j!`%`_num_.0] +[visit_exp j!`%`_num_] [visit_exp j] [visit_id j] not free -[visit_exp i#39478] -[visit_id i#39478] [visit_exp n] [visit_id n] not free -[visit_exp |$data(z, y).`BYTES`_datainst{`byte*#1873`}|] -[visit_exp $data(z, y).`BYTES`_datainst{`byte*#1873`}] +[visit_exp |$data(z, y).`BYTES`_datainst|] +[visit_exp $data(z, y).`BYTES`_datainst] [visit_exp $data(z, y)] [visit_exp z] [visit_id z] not free [visit_exp y] [visit_id y] not free -[visit_exp `byte*#1873`] -[visit_id byte*#1873] -[check_dims] at dataidx#19 i i#39542 instr*#1614 j memidx#155 n numtype#328 numtype#330 numtype#332 state#1499 x y z -[visit_exp `%;%`_config{state#1499, `instr*#1614`}(z, [`CONST`_instr{numtype#328}((at : addrtype <: numtype), i) `CONST`_instr{numtype#330}(`I32`_numtype, j) `CONST`_instr{numtype#332}(`I32`_numtype, `%`_num_{i#39542}(n)) `MEMORY.INIT`_instr{memidx#155, dataidx#19}(x, y)])] -[visit_exp state#1499] -[visit_id state#1499] -[visit_exp `instr*#1614`] -[visit_id instr*#1614] -[visit_exp (z, [`CONST`_instr{numtype#328}((at : addrtype <: numtype), i) `CONST`_instr{numtype#330}(`I32`_numtype, j) `CONST`_instr{numtype#332}(`I32`_numtype, `%`_num_{i#39542}(n)) `MEMORY.INIT`_instr{memidx#155, dataidx#19}(x, y)])] +[check_dims] at i j n x y z +[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(`I32`_numtype, j) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `MEMORY.INIT`_instr(x, y)])] +[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(`I32`_numtype, j) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `MEMORY.INIT`_instr(x, y)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#328}((at : addrtype <: numtype), i) `CONST`_instr{numtype#330}(`I32`_numtype, j) `CONST`_instr{numtype#332}(`I32`_numtype, `%`_num_{i#39542}(n)) `MEMORY.INIT`_instr{memidx#155, dataidx#19}(x, y)]] -[visit_exp `CONST`_instr{numtype#328}((at : addrtype <: numtype), i)] -[visit_exp numtype#328] -[visit_id numtype#328] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(`I32`_numtype, j) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `MEMORY.INIT`_instr(x, y)]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] [visit_exp ((at : addrtype <: numtype), i)] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] [visit_exp i] [visit_id i] -[visit_exp `CONST`_instr{numtype#330}(`I32`_numtype, j)] -[visit_exp numtype#330] -[visit_id numtype#330] +[visit_exp `CONST`_instr(`I32`_numtype, j)] [visit_exp (`I32`_numtype, j)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp j] [visit_id j] -[visit_exp `CONST`_instr{numtype#332}(`I32`_numtype, `%`_num_{i#39542}(n))] -[visit_exp numtype#332] -[visit_id numtype#332] -[visit_exp (`I32`_numtype, `%`_num_{i#39542}(n))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] +[visit_exp (`I32`_numtype, `%`_num_(n))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#39542}(n)] -[visit_exp i#39542] -[visit_id i#39542] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `MEMORY.INIT`_instr{memidx#155, dataidx#19}(x, y)] -[visit_exp memidx#155] -[visit_id memidx#155] -[visit_exp dataidx#19] -[visit_id dataidx#19] +[visit_exp `MEMORY.INIT`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] @@ -60475,165 +50023,109 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp n] [visit_id n] not free [visit_exp 0] -[check_dims] at byte*#1874 dataidx#21 dataidx#23 i i#39622 i#39696 i#39714 i#39715 i#39757 i#39758 i#39798 i#39808 i#39834 i#39844 i#39866 instr*#1626 j memarg#89 memidx#157 memidx#159 memidx#161 n numtype#334 numtype#336 numtype#338 numtype#340 numtype#342 numtype#345 numtype#347 numtype#349 numtype?#20 state#1511 sz#540 x y z -[visit_exp `%;%`_config{state#1511, `instr*#1626`}(z, [`CONST`_instr{numtype#334}((at : addrtype <: numtype), i) `CONST`_instr{numtype#336}(`I32`_numtype, j) `CONST`_instr{numtype#338}(`I32`_numtype, `%`_num_{i#39622}(n)) `MEMORY.INIT`_instr{memidx#157, dataidx#21}(x, y)])] -[visit_exp state#1511] -[visit_id state#1511] -[visit_exp `instr*#1626`] -[visit_id instr*#1626] -[visit_exp (z, [`CONST`_instr{numtype#334}((at : addrtype <: numtype), i) `CONST`_instr{numtype#336}(`I32`_numtype, j) `CONST`_instr{numtype#338}(`I32`_numtype, `%`_num_{i#39622}(n)) `MEMORY.INIT`_instr{memidx#157, dataidx#21}(x, y)])] +[check_dims] at i j n x y z +[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(`I32`_numtype, j) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `MEMORY.INIT`_instr(x, y)])] +[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(`I32`_numtype, j) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `MEMORY.INIT`_instr(x, y)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#334}((at : addrtype <: numtype), i) `CONST`_instr{numtype#336}(`I32`_numtype, j) `CONST`_instr{numtype#338}(`I32`_numtype, `%`_num_{i#39622}(n)) `MEMORY.INIT`_instr{memidx#157, dataidx#21}(x, y)]] -[visit_exp `CONST`_instr{numtype#334}((at : addrtype <: numtype), i)] -[visit_exp numtype#334] -[visit_id numtype#334] +[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(`I32`_numtype, j) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `MEMORY.INIT`_instr(x, y)]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] [visit_exp ((at : addrtype <: numtype), i)] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] [visit_exp i] [visit_id i] -[visit_exp `CONST`_instr{numtype#336}(`I32`_numtype, j)] -[visit_exp numtype#336] -[visit_id numtype#336] +[visit_exp `CONST`_instr(`I32`_numtype, j)] [visit_exp (`I32`_numtype, j)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp j] [visit_id j] -[visit_exp `CONST`_instr{numtype#338}(`I32`_numtype, `%`_num_{i#39622}(n))] -[visit_exp numtype#338] -[visit_id numtype#338] -[visit_exp (`I32`_numtype, `%`_num_{i#39622}(n))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] +[visit_exp (`I32`_numtype, `%`_num_(n))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#39622}(n)] -[visit_exp i#39622] -[visit_id i#39622] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `MEMORY.INIT`_instr{memidx#157, dataidx#21}(x, y)] -[visit_exp memidx#157] -[visit_id memidx#157] -[visit_exp dataidx#21] -[visit_id dataidx#21] +[visit_exp `MEMORY.INIT`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] [visit_exp y] [visit_id y] -[visit_exp [`CONST`_instr{numtype#340}((at : addrtype <: numtype), i) `CONST`_instr{numtype#342}(`I32`_numtype, `%`_num_{i#39715}($data(z, y).`BYTES`_datainst{`byte*#1874`}[j!`%`_num_{i#39696}.0]!`%`_byte{i#39714}.0)) `STORE`_instr{`numtype?#20`, memidx#159, memarg#89}(`I32`_numtype, ?(`%`_storeop_{sz#540, i#39757}(`%`_sz{i#39758}(8))), x, $memarg0) `CONST`_instr{numtype#345}((at : addrtype <: numtype), `%`_num_{i#39808}((i!`%`_num_{i#39798}.0 + 1))) `CONST`_instr{numtype#347}(`I32`_numtype, `%`_num_{i#39844}((j!`%`_num_{i#39834}.0 + 1))) `CONST`_instr{numtype#349}(`I32`_numtype, `%`_num_{i#39866}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `MEMORY.INIT`_instr{memidx#161, dataidx#23}(x, y)]] -[visit_exp `CONST`_instr{numtype#340}((at : addrtype <: numtype), i)] -[visit_exp numtype#340] -[visit_id numtype#340] +[visit_exp [`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)]] +[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] [visit_exp ((at : addrtype <: numtype), i)] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] not free [visit_exp i] [visit_id i] not free -[visit_exp `CONST`_instr{numtype#342}(`I32`_numtype, `%`_num_{i#39715}($data(z, y).`BYTES`_datainst{`byte*#1874`}[j!`%`_num_{i#39696}.0]!`%`_byte{i#39714}.0))] -[visit_exp numtype#342] -[visit_id numtype#342] -[visit_exp (`I32`_numtype, `%`_num_{i#39715}($data(z, y).`BYTES`_datainst{`byte*#1874`}[j!`%`_num_{i#39696}.0]!`%`_byte{i#39714}.0))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_($data(z, y).`BYTES`_datainst[j!`%`_num_.0]!`%`_byte.0))] +[visit_exp (`I32`_numtype, `%`_num_($data(z, y).`BYTES`_datainst[j!`%`_num_.0]!`%`_byte.0))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#39715}($data(z, y).`BYTES`_datainst{`byte*#1874`}[j!`%`_num_{i#39696}.0]!`%`_byte{i#39714}.0)] -[visit_exp i#39715] -[visit_id i#39715] -[visit_exp ($data(z, y).`BYTES`_datainst{`byte*#1874`}[j!`%`_num_{i#39696}.0]!`%`_byte{i#39714}.0)] -[visit_exp $data(z, y).`BYTES`_datainst{`byte*#1874`}[j!`%`_num_{i#39696}.0]!`%`_byte{i#39714}.0] -[visit_exp $data(z, y).`BYTES`_datainst{`byte*#1874`}[j!`%`_num_{i#39696}.0]!`%`_byte{i#39714}] -[visit_exp $data(z, y).`BYTES`_datainst{`byte*#1874`}[j!`%`_num_{i#39696}.0]] -[visit_exp $data(z, y).`BYTES`_datainst{`byte*#1874`}] +[visit_exp `%`_num_($data(z, y).`BYTES`_datainst[j!`%`_num_.0]!`%`_byte.0)] +[visit_exp ($data(z, y).`BYTES`_datainst[j!`%`_num_.0]!`%`_byte.0)] +[visit_exp $data(z, y).`BYTES`_datainst[j!`%`_num_.0]!`%`_byte.0] +[visit_exp $data(z, y).`BYTES`_datainst[j!`%`_num_.0]!`%`_byte] +[visit_exp $data(z, y).`BYTES`_datainst[j!`%`_num_.0]] +[visit_exp $data(z, y).`BYTES`_datainst] [visit_exp $data(z, y)] [visit_exp z] [visit_id z] not free [visit_exp y] [visit_id y] not free -[visit_exp `byte*#1874`] -[visit_id byte*#1874] -[visit_exp j!`%`_num_{i#39696}.0] -[visit_exp j!`%`_num_{i#39696}] +[visit_exp j!`%`_num_.0] +[visit_exp j!`%`_num_] [visit_exp j] [visit_id j] not free -[visit_exp i#39696] -[visit_id i#39696] -[visit_exp i#39714] -[visit_id i#39714] -[visit_exp `STORE`_instr{`numtype?#20`, memidx#159, memarg#89}(`I32`_numtype, ?(`%`_storeop_{sz#540, i#39757}(`%`_sz{i#39758}(8))), x, $memarg0)] -[visit_exp `numtype?#20`] -[visit_id numtype?#20] -[visit_exp memidx#159] -[visit_id memidx#159] -[visit_exp memarg#89] -[visit_id memarg#89] -[visit_exp (`I32`_numtype, ?(`%`_storeop_{sz#540, i#39757}(`%`_sz{i#39758}(8))), x, $memarg0)] +[visit_exp `STORE`_instr(`I32`_numtype, ?(`%`_storeop_(`%`_sz(8))), x, $memarg0)] +[visit_exp (`I32`_numtype, ?(`%`_storeop_(`%`_sz(8))), x, $memarg0)] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp ?(`%`_storeop_{sz#540, i#39757}(`%`_sz{i#39758}(8)))] -[visit_exp `%`_storeop_{sz#540, i#39757}(`%`_sz{i#39758}(8))] -[visit_exp sz#540] -[visit_id sz#540] -[visit_exp i#39757] -[visit_id i#39757] -[visit_exp (`%`_sz{i#39758}(8))] -[visit_exp `%`_sz{i#39758}(8)] -[visit_exp i#39758] -[visit_id i#39758] +[visit_exp ?(`%`_storeop_(`%`_sz(8)))] +[visit_exp `%`_storeop_(`%`_sz(8))] +[visit_exp (`%`_sz(8))] +[visit_exp `%`_sz(8)] [visit_exp (8)] [visit_exp 8] [visit_exp x] [visit_id x] not free [visit_exp $memarg0] -[visit_exp `CONST`_instr{numtype#345}((at : addrtype <: numtype), `%`_num_{i#39808}((i!`%`_num_{i#39798}.0 + 1)))] -[visit_exp numtype#345] -[visit_id numtype#345] -[visit_exp ((at : addrtype <: numtype), `%`_num_{i#39808}((i!`%`_num_{i#39798}.0 + 1)))] +[visit_exp `CONST`_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1)))] +[visit_exp ((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1)))] [visit_exp (at : addrtype <: numtype)] [visit_exp at] [visit_id at] not free -[visit_exp `%`_num_{i#39808}((i!`%`_num_{i#39798}.0 + 1))] -[visit_exp i#39808] -[visit_id i#39808] -[visit_exp ((i!`%`_num_{i#39798}.0 + 1))] -[visit_exp (i!`%`_num_{i#39798}.0 + 1)] -[visit_exp i!`%`_num_{i#39798}.0] -[visit_exp i!`%`_num_{i#39798}] +[visit_exp `%`_num_((i!`%`_num_.0 + 1))] +[visit_exp ((i!`%`_num_.0 + 1))] +[visit_exp (i!`%`_num_.0 + 1)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#39798] -[visit_id i#39798] [visit_exp 1] -[visit_exp `CONST`_instr{numtype#347}(`I32`_numtype, `%`_num_{i#39844}((j!`%`_num_{i#39834}.0 + 1)))] -[visit_exp numtype#347] -[visit_id numtype#347] -[visit_exp (`I32`_numtype, `%`_num_{i#39844}((j!`%`_num_{i#39834}.0 + 1)))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_((j!`%`_num_.0 + 1)))] +[visit_exp (`I32`_numtype, `%`_num_((j!`%`_num_.0 + 1)))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#39844}((j!`%`_num_{i#39834}.0 + 1))] -[visit_exp i#39844] -[visit_id i#39844] -[visit_exp ((j!`%`_num_{i#39834}.0 + 1))] -[visit_exp (j!`%`_num_{i#39834}.0 + 1)] -[visit_exp j!`%`_num_{i#39834}.0] -[visit_exp j!`%`_num_{i#39834}] +[visit_exp `%`_num_((j!`%`_num_.0 + 1))] +[visit_exp ((j!`%`_num_.0 + 1))] +[visit_exp (j!`%`_num_.0 + 1)] +[visit_exp j!`%`_num_.0] +[visit_exp j!`%`_num_] [visit_exp j] [visit_id j] not free -[visit_exp i#39834] -[visit_id i#39834] [visit_exp 1] -[visit_exp `CONST`_instr{numtype#349}(`I32`_numtype, `%`_num_{i#39866}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp numtype#349] -[visit_id numtype#349] -[visit_exp (`I32`_numtype, `%`_num_{i#39866}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp (`I32`_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#39866}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp i#39866] -[visit_id i#39866] +[visit_exp `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] [visit_exp ((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] [visit_exp (((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] [visit_exp ((n : nat <:> int) - (1 : nat <:> int))] @@ -60642,37 +50134,23 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id n] not free [visit_exp (1 : nat <:> int)] [visit_exp 1] -[visit_exp `MEMORY.INIT`_instr{memidx#161, dataidx#23}(x, y)] -[visit_exp memidx#161] -[visit_id memidx#161] -[visit_exp dataidx#23] -[visit_id dataidx#23] +[visit_exp `MEMORY.INIT`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] not free [visit_exp y] [visit_id y] not free -[check_dims] dataidx#25 instr*#1638 instr*#1650 state#1523 state#1535 x z -[visit_exp `%;%`_config{state#1523, `instr*#1638`}(z, [`DATA.DROP`_instr{dataidx#25}(x)])] -[visit_exp state#1523] -[visit_id state#1523] -[visit_exp `instr*#1638`] -[visit_id instr*#1638] -[visit_exp (z, [`DATA.DROP`_instr{dataidx#25}(x)])] +[check_dims] x z +[visit_exp `%;%`_config(z, [`DATA.DROP`_instr(x)])] +[visit_exp (z, [`DATA.DROP`_instr(x)])] [visit_exp z] [visit_id z] -[visit_exp [`DATA.DROP`_instr{dataidx#25}(x)]] -[visit_exp `DATA.DROP`_instr{dataidx#25}(x)] -[visit_exp dataidx#25] -[visit_id dataidx#25] +[visit_exp [`DATA.DROP`_instr(x)]] +[visit_exp `DATA.DROP`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%;%`_config{state#1535, `instr*#1650`}($with_data(z, x, []), [])] -[visit_exp state#1535] -[visit_id state#1535] -[visit_exp `instr*#1650`] -[visit_id instr*#1650] +[visit_exp `%;%`_config($with_data(z, x, []), [])] [visit_exp ($with_data(z, x, []), [])] [visit_exp $with_data(z, x, [])] [visit_exp z] @@ -60681,30 +50159,20 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id x] not free [visit_exp []] [visit_exp []] -[check_dims] heaptype#1343 heaptype#1345 instr*#1662 state#1547 typeidx#1555 x z -[visit_exp `%;%`_config{state#1547, `instr*#1662`}(z, [`REF.NULL`_instr{heaptype#1343}(`_IDX`_heaptype{typeidx#1555}(x))])] -[visit_exp state#1547] -[visit_id state#1547] -[visit_exp `instr*#1662`] -[visit_id instr*#1662] -[visit_exp (z, [`REF.NULL`_instr{heaptype#1343}(`_IDX`_heaptype{typeidx#1555}(x))])] +[check_dims] x z +[visit_exp `%;%`_config(z, [`REF.NULL`_instr(`_IDX`_heaptype(x))])] +[visit_exp (z, [`REF.NULL`_instr(`_IDX`_heaptype(x))])] [visit_exp z] [visit_id z] -[visit_exp [`REF.NULL`_instr{heaptype#1343}(`_IDX`_heaptype{typeidx#1555}(x))]] -[visit_exp `REF.NULL`_instr{heaptype#1343}(`_IDX`_heaptype{typeidx#1555}(x))] -[visit_exp heaptype#1343] -[visit_id heaptype#1343] -[visit_exp (`_IDX`_heaptype{typeidx#1555}(x))] -[visit_exp `_IDX`_heaptype{typeidx#1555}(x)] -[visit_exp typeidx#1555] -[visit_id typeidx#1555] +[visit_exp [`REF.NULL`_instr(`_IDX`_heaptype(x))]] +[visit_exp `REF.NULL`_instr(`_IDX`_heaptype(x))] +[visit_exp (`_IDX`_heaptype(x))] +[visit_exp `_IDX`_heaptype(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp [`REF.NULL`_instr{heaptype#1345}(($type(z, x) : deftype <: heaptype))]] -[visit_exp `REF.NULL`_instr{heaptype#1345}(($type(z, x) : deftype <: heaptype))] -[visit_exp heaptype#1345] -[visit_id heaptype#1345] +[visit_exp [`REF.NULL`_instr(($type(z, x) : deftype <: heaptype))]] +[visit_exp `REF.NULL`_instr(($type(z, x) : deftype <: heaptype))] [visit_exp (($type(z, x) : deftype <: heaptype))] [visit_exp ($type(z, x) : deftype <: heaptype)] [visit_exp $type(z, x)] @@ -60712,45 +50180,31 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id z] not free [visit_exp x] [visit_id x] not free -[check_dims] funcaddr#17 funcaddr*#4 funcidx#2841 i#39970 instr*#1674 state#1559 x z -[visit_exp `%;%`_config{state#1559, `instr*#1674`}(z, [`REF.FUNC`_instr{funcidx#2841}(x)])] -[visit_exp state#1559] -[visit_id state#1559] -[visit_exp `instr*#1674`] -[visit_id instr*#1674] -[visit_exp (z, [`REF.FUNC`_instr{funcidx#2841}(x)])] +[check_dims] x z +[visit_exp `%;%`_config(z, [`REF.FUNC`_instr(x)])] +[visit_exp (z, [`REF.FUNC`_instr(x)])] [visit_exp z] [visit_id z] -[visit_exp [`REF.FUNC`_instr{funcidx#2841}(x)]] -[visit_exp `REF.FUNC`_instr{funcidx#2841}(x)] -[visit_exp funcidx#2841] -[visit_id funcidx#2841] +[visit_exp [`REF.FUNC`_instr(x)]] +[visit_exp `REF.FUNC`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp [`REF.FUNC_ADDR`_instr{funcaddr#17}($moduleinst(z).`FUNCS`_moduleinst{`funcaddr*#4`}[x!`%`_idx{i#39970}.0])]] -[visit_exp `REF.FUNC_ADDR`_instr{funcaddr#17}($moduleinst(z).`FUNCS`_moduleinst{`funcaddr*#4`}[x!`%`_idx{i#39970}.0])] -[visit_exp funcaddr#17] -[visit_id funcaddr#17] -[visit_exp ($moduleinst(z).`FUNCS`_moduleinst{`funcaddr*#4`}[x!`%`_idx{i#39970}.0])] -[visit_exp $moduleinst(z).`FUNCS`_moduleinst{`funcaddr*#4`}[x!`%`_idx{i#39970}.0]] -[visit_exp $moduleinst(z).`FUNCS`_moduleinst{`funcaddr*#4`}] +[visit_exp [`REF.FUNC_ADDR`_instr($moduleinst(z).`FUNCS`_moduleinst[x!`%`_idx.0])]] +[visit_exp `REF.FUNC_ADDR`_instr($moduleinst(z).`FUNCS`_moduleinst[x!`%`_idx.0])] +[visit_exp ($moduleinst(z).`FUNCS`_moduleinst[x!`%`_idx.0])] +[visit_exp $moduleinst(z).`FUNCS`_moduleinst[x!`%`_idx.0]] +[visit_exp $moduleinst(z).`FUNCS`_moduleinst] [visit_exp $moduleinst(z)] [visit_exp z] [visit_id z] not free -[visit_exp `funcaddr*#4`] -[visit_id funcaddr*#4] -[visit_exp x!`%`_idx{i#39970}.0] -[visit_exp x!`%`_idx{i#39970}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#39970] -[visit_id i#39970] -[check_dims] i numtype#351 u31#3 -[visit_exp [`CONST`_instr{numtype#351}(`I32`_numtype, i) `REF.I31`_instr]] -[visit_exp `CONST`_instr{numtype#351}(`I32`_numtype, i)] -[visit_exp numtype#351] -[visit_id numtype#351] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[check_dims] i +[visit_exp [`CONST`_instr(`I32`_numtype, i) `REF.I31`_instr]] +[visit_exp `CONST`_instr(`I32`_numtype, i)] [visit_exp (`I32`_numtype, i)] [visit_exp `I32`_numtype] [visit_exp ()] @@ -60758,64 +50212,52 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id i] [visit_exp `REF.I31`_instr] [visit_exp ()] -[visit_exp [`REF.I31_NUM`_instr{u31#3}($wrap__(32, 31, i))]] -[visit_exp `REF.I31_NUM`_instr{u31#3}($wrap__(32, 31, i))] -[visit_exp u31#3] -[visit_id u31#3] +[visit_exp [`REF.I31_NUM`_instr($wrap__(32, 31, i))]] +[visit_exp `REF.I31_NUM`_instr($wrap__(32, 31, i))] [visit_exp ($wrap__(32, 31, i))] [visit_exp $wrap__(32, 31, i)] [visit_exp 32] [visit_exp 31] [visit_exp i] [visit_id i] not free -[check_dims] heaptype#1347 ht i#40032 numtype#353 ref +[check_dims] ht ref [visit_exp [(ref : ref <: instr) `REF.IS_NULL`_instr]] [visit_exp (ref : ref <: instr)] [visit_exp ref] [visit_id ref] [visit_exp `REF.IS_NULL`_instr] [visit_exp ()] -[visit_exp [`CONST`_instr{numtype#353}(`I32`_numtype, `%`_num_{i#40032}(1))]] -[visit_exp `CONST`_instr{numtype#353}(`I32`_numtype, `%`_num_{i#40032}(1))] -[visit_exp numtype#353] -[visit_id numtype#353] -[visit_exp (`I32`_numtype, `%`_num_{i#40032}(1))] +[visit_exp [`CONST`_instr(`I32`_numtype, `%`_num_(1))]] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(1))] +[visit_exp (`I32`_numtype, `%`_num_(1))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#40032}(1)] -[visit_exp i#40032] -[visit_id i#40032] +[visit_exp `%`_num_(1)] [visit_exp (1)] [visit_exp 1] -[visit_exp (ref = `REF.NULL`_ref{heaptype#1347}(ht))] +[visit_exp (ref = `REF.NULL`_ref(ht))] [visit_exp ref] [visit_id ref] not free -[visit_exp `REF.NULL`_ref{heaptype#1347}(ht)] -[visit_exp heaptype#1347] -[visit_id heaptype#1347] +[visit_exp `REF.NULL`_ref(ht)] [visit_exp (ht)] [visit_exp ht] [visit_id ht] -[check_dims] i#40054 numtype#355 ref +[check_dims] ref [visit_exp [(ref : ref <: instr) `REF.IS_NULL`_instr]] [visit_exp (ref : ref <: instr)] [visit_exp ref] [visit_id ref] [visit_exp `REF.IS_NULL`_instr] [visit_exp ()] -[visit_exp [`CONST`_instr{numtype#355}(`I32`_numtype, `%`_num_{i#40054}(0))]] -[visit_exp `CONST`_instr{numtype#355}(`I32`_numtype, `%`_num_{i#40054}(0))] -[visit_exp numtype#355] -[visit_id numtype#355] -[visit_exp (`I32`_numtype, `%`_num_{i#40054}(0))] +[visit_exp [`CONST`_instr(`I32`_numtype, `%`_num_(0))]] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(0))] +[visit_exp (`I32`_numtype, `%`_num_(0))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#40054}(0)] -[visit_exp i#40054] -[visit_id i#40054] +[visit_exp `%`_num_(0)] [visit_exp (0)] [visit_exp 0] -[check_dims] heaptype#1349 ht ref +[check_dims] ht ref [visit_exp [(ref : ref <: instr) `REF.AS_NON_NULL`_instr]] [visit_exp (ref : ref <: instr)] [visit_exp ref] @@ -60825,12 +50267,10 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[visit_exp (ref = `REF.NULL`_ref{heaptype#1349}(ht))] +[visit_exp (ref = `REF.NULL`_ref(ht))] [visit_exp ref] [visit_id ref] not free -[visit_exp `REF.NULL`_ref{heaptype#1349}(ht)] -[visit_exp heaptype#1349] -[visit_id heaptype#1349] +[visit_exp `REF.NULL`_ref(ht)] [visit_exp (ht)] [visit_exp ht] [visit_id ht] @@ -60845,7 +50285,7 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp (ref : ref <: instr)] [visit_exp ref] [visit_id ref] not free -[check_dims] heaptype#1351 heaptype#1353 ht_1 ht_2 i#40076 numtype#357 ref_1 ref_2 +[check_dims] ht_1 ht_2 ref_1 ref_2 [visit_exp [(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr]] [visit_exp (ref_1 : ref <: instr)] [visit_exp ref_1] @@ -60855,38 +50295,30 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id ref_2] [visit_exp `REF.EQ`_instr] [visit_exp ()] -[visit_exp [`CONST`_instr{numtype#357}(`I32`_numtype, `%`_num_{i#40076}(1))]] -[visit_exp `CONST`_instr{numtype#357}(`I32`_numtype, `%`_num_{i#40076}(1))] -[visit_exp numtype#357] -[visit_id numtype#357] -[visit_exp (`I32`_numtype, `%`_num_{i#40076}(1))] +[visit_exp [`CONST`_instr(`I32`_numtype, `%`_num_(1))]] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(1))] +[visit_exp (`I32`_numtype, `%`_num_(1))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#40076}(1)] -[visit_exp i#40076] -[visit_id i#40076] +[visit_exp `%`_num_(1)] [visit_exp (1)] [visit_exp 1] -[visit_exp ((ref_1 = `REF.NULL`_ref{heaptype#1351}(ht_1)) /\ (ref_2 = `REF.NULL`_ref{heaptype#1353}(ht_2)))] -[visit_exp (ref_1 = `REF.NULL`_ref{heaptype#1351}(ht_1))] +[visit_exp ((ref_1 = `REF.NULL`_ref(ht_1)) /\ (ref_2 = `REF.NULL`_ref(ht_2)))] +[visit_exp (ref_1 = `REF.NULL`_ref(ht_1))] [visit_exp ref_1] [visit_id ref_1] not free -[visit_exp `REF.NULL`_ref{heaptype#1351}(ht_1)] -[visit_exp heaptype#1351] -[visit_id heaptype#1351] +[visit_exp `REF.NULL`_ref(ht_1)] [visit_exp (ht_1)] [visit_exp ht_1] [visit_id ht_1] -[visit_exp (ref_2 = `REF.NULL`_ref{heaptype#1353}(ht_2))] +[visit_exp (ref_2 = `REF.NULL`_ref(ht_2))] [visit_exp ref_2] [visit_id ref_2] not free -[visit_exp `REF.NULL`_ref{heaptype#1353}(ht_2)] -[visit_exp heaptype#1353] -[visit_id heaptype#1353] +[visit_exp `REF.NULL`_ref(ht_2)] [visit_exp (ht_2)] [visit_exp ht_2] [visit_id ht_2] -[check_dims] i#40098 numtype#359 ref_1 ref_2 +[check_dims] ref_1 ref_2 [visit_exp [(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr]] [visit_exp (ref_1 : ref <: instr)] [visit_exp ref_1] @@ -60896,16 +50328,12 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id ref_2] [visit_exp `REF.EQ`_instr] [visit_exp ()] -[visit_exp [`CONST`_instr{numtype#359}(`I32`_numtype, `%`_num_{i#40098}(1))]] -[visit_exp `CONST`_instr{numtype#359}(`I32`_numtype, `%`_num_{i#40098}(1))] -[visit_exp numtype#359] -[visit_id numtype#359] -[visit_exp (`I32`_numtype, `%`_num_{i#40098}(1))] +[visit_exp [`CONST`_instr(`I32`_numtype, `%`_num_(1))]] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(1))] +[visit_exp (`I32`_numtype, `%`_num_(1))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#40098}(1)] -[visit_exp i#40098] -[visit_id i#40098] +[visit_exp `%`_num_(1)] [visit_exp (1)] [visit_exp 1] [visit_exp (ref_1 = ref_2)] @@ -60913,7 +50341,7 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id ref_1] not free [visit_exp ref_2] [visit_id ref_2] not free -[check_dims] i#40120 numtype#361 ref_1 ref_2 +[check_dims] ref_1 ref_2 [visit_exp [(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr]] [visit_exp (ref_1 : ref <: instr)] [visit_exp ref_1] @@ -60923,55 +50351,37 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id ref_2] [visit_exp `REF.EQ`_instr] [visit_exp ()] -[visit_exp [`CONST`_instr{numtype#361}(`I32`_numtype, `%`_num_{i#40120}(0))]] -[visit_exp `CONST`_instr{numtype#361}(`I32`_numtype, `%`_num_{i#40120}(0))] -[visit_exp numtype#361] -[visit_id numtype#361] -[visit_exp (`I32`_numtype, `%`_num_{i#40120}(0))] +[visit_exp [`CONST`_instr(`I32`_numtype, `%`_num_(0))]] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(0))] +[visit_exp (`I32`_numtype, `%`_num_(0))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#40120}(0)] -[visit_exp i#40120] -[visit_id i#40120] +[visit_exp `%`_num_(0)] [visit_exp (0)] [visit_exp 0] -[check_dims] datatype*#24 deftype*#90 deftype*#91 elemtype*#24 f frame#1931 funcidx*#61 globaltype*#25 i#40142 instr*#1686 localtype*#27 memtype*#39 moduleinst#23 numtype#363 ref reftype#3467 resulttype*#35 resulttype?#32 rt rt' s state#1571 store#1913 subtype*#23 tabletype*#32 tagtype*#24 -[visit_exp `%;%`_config{state#1571, `instr*#1686`}(`%;%`_state{store#1913, frame#1931}(s, f), [(ref : ref <: instr) `REF.TEST`_instr{reftype#3467}(rt)])] -[visit_exp state#1571] -[visit_id state#1571] -[visit_exp `instr*#1686`] -[visit_id instr*#1686] -[visit_exp (`%;%`_state{store#1913, frame#1931}(s, f), [(ref : ref <: instr) `REF.TEST`_instr{reftype#3467}(rt)])] -[visit_exp `%;%`_state{store#1913, frame#1931}(s, f)] -[visit_exp store#1913] -[visit_id store#1913] -[visit_exp frame#1931] -[visit_id frame#1931] +[check_dims] f ref rt rt' s +[visit_exp `%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])] +[visit_exp (`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])] +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] [visit_exp f] [visit_id f] -[visit_exp [(ref : ref <: instr) `REF.TEST`_instr{reftype#3467}(rt)]] +[visit_exp [(ref : ref <: instr) `REF.TEST`_instr(rt)]] [visit_exp (ref : ref <: instr)] [visit_exp ref] [visit_id ref] -[visit_exp `REF.TEST`_instr{reftype#3467}(rt)] -[visit_exp reftype#3467] -[visit_id reftype#3467] +[visit_exp `REF.TEST`_instr(rt)] [visit_exp (rt)] [visit_exp rt] [visit_id rt] -[visit_exp [`CONST`_instr{numtype#363}(`I32`_numtype, `%`_num_{i#40142}(1))]] -[visit_exp `CONST`_instr{numtype#363}(`I32`_numtype, `%`_num_{i#40142}(1))] -[visit_exp numtype#363] -[visit_id numtype#363] -[visit_exp (`I32`_numtype, `%`_num_{i#40142}(1))] +[visit_exp [`CONST`_instr(`I32`_numtype, `%`_num_(1))]] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(1))] +[visit_exp (`I32`_numtype, `%`_num_(1))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#40142}(1)] -[visit_exp i#40142] -[visit_id i#40142] +[visit_exp `%`_num_(1)] [visit_exp (1)] [visit_exp 1] [visit_exp (s, ref, rt')] @@ -60981,120 +50391,68 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id ref] not free [visit_exp rt'] [visit_id rt'] -[visit_exp ({`TYPES`{`deftype*#90`} [], `RECS`{`subtype*#23`} [], `TAGS`{`tagtype*#24`} [], `GLOBALS`{`globaltype*#25`} [], `MEMS`{`memtype*#39`} [], `TABLES`{`tabletype*#32`} [], `FUNCS`{`deftype*#91`} [], `DATAS`{`datatype*#24`} [], `ELEMS`{`elemtype*#24`} [], `LOCALS`{`localtype*#27`} [], `LABELS`{`resulttype*#35`} [], `RETURN`{`resulttype?#32`} ?(), `REFS`{`funcidx*#61`} []}, rt', $inst_reftype(f.`MODULE`_frame{moduleinst#23}, rt))] -[visit_exp {`TYPES`{`deftype*#90`} [], `RECS`{`subtype*#23`} [], `TAGS`{`tagtype*#24`} [], `GLOBALS`{`globaltype*#25`} [], `MEMS`{`memtype*#39`} [], `TABLES`{`tabletype*#32`} [], `FUNCS`{`deftype*#91`} [], `DATAS`{`datatype*#24`} [], `ELEMS`{`elemtype*#24`} [], `LOCALS`{`localtype*#27`} [], `LABELS`{`resulttype*#35`} [], `RETURN`{`resulttype?#32`} ?(), `REFS`{`funcidx*#61`} []}] -[visit_exp `deftype*#90`] -[visit_id deftype*#90] +[visit_exp ({`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}, rt', $inst_reftype(f.`MODULE`_frame, rt))] +[visit_exp {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}] [visit_exp []] -[visit_exp `subtype*#23`] -[visit_id subtype*#23] [visit_exp []] -[visit_exp `tagtype*#24`] -[visit_id tagtype*#24] [visit_exp []] -[visit_exp `globaltype*#25`] -[visit_id globaltype*#25] [visit_exp []] -[visit_exp `memtype*#39`] -[visit_id memtype*#39] [visit_exp []] -[visit_exp `tabletype*#32`] -[visit_id tabletype*#32] [visit_exp []] -[visit_exp `deftype*#91`] -[visit_id deftype*#91] [visit_exp []] -[visit_exp `datatype*#24`] -[visit_id datatype*#24] [visit_exp []] -[visit_exp `elemtype*#24`] -[visit_id elemtype*#24] [visit_exp []] -[visit_exp `localtype*#27`] -[visit_id localtype*#27] [visit_exp []] -[visit_exp `resulttype*#35`] -[visit_id resulttype*#35] [visit_exp []] -[visit_exp `resulttype?#32`] -[visit_id resulttype?#32] [visit_exp ?()] -[visit_exp `funcidx*#61`] -[visit_id funcidx*#61] [visit_exp []] [visit_exp rt'] [visit_id rt'] not free -[visit_exp $inst_reftype(f.`MODULE`_frame{moduleinst#23}, rt)] -[visit_exp f.`MODULE`_frame{moduleinst#23}] +[visit_exp $inst_reftype(f.`MODULE`_frame, rt)] +[visit_exp f.`MODULE`_frame] [visit_exp f] [visit_id f] not free -[visit_exp moduleinst#23] -[visit_id moduleinst#23] [visit_exp rt] [visit_id rt] not free -[check_dims] f frame#1943 i#40164 instr*#1698 numtype#365 ref reftype#3469 rt s state#1583 store#1925 -[visit_exp `%;%`_config{state#1583, `instr*#1698`}(`%;%`_state{store#1925, frame#1943}(s, f), [(ref : ref <: instr) `REF.TEST`_instr{reftype#3469}(rt)])] -[visit_exp state#1583] -[visit_id state#1583] -[visit_exp `instr*#1698`] -[visit_id instr*#1698] -[visit_exp (`%;%`_state{store#1925, frame#1943}(s, f), [(ref : ref <: instr) `REF.TEST`_instr{reftype#3469}(rt)])] -[visit_exp `%;%`_state{store#1925, frame#1943}(s, f)] -[visit_exp store#1925] -[visit_id store#1925] -[visit_exp frame#1943] -[visit_id frame#1943] +[check_dims] f ref rt s +[visit_exp `%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])] +[visit_exp (`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])] +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] [visit_exp f] [visit_id f] -[visit_exp [(ref : ref <: instr) `REF.TEST`_instr{reftype#3469}(rt)]] +[visit_exp [(ref : ref <: instr) `REF.TEST`_instr(rt)]] [visit_exp (ref : ref <: instr)] [visit_exp ref] [visit_id ref] -[visit_exp `REF.TEST`_instr{reftype#3469}(rt)] -[visit_exp reftype#3469] -[visit_id reftype#3469] +[visit_exp `REF.TEST`_instr(rt)] [visit_exp (rt)] [visit_exp rt] [visit_id rt] -[visit_exp [`CONST`_instr{numtype#365}(`I32`_numtype, `%`_num_{i#40164}(0))]] -[visit_exp `CONST`_instr{numtype#365}(`I32`_numtype, `%`_num_{i#40164}(0))] -[visit_exp numtype#365] -[visit_id numtype#365] -[visit_exp (`I32`_numtype, `%`_num_{i#40164}(0))] +[visit_exp [`CONST`_instr(`I32`_numtype, `%`_num_(0))]] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(0))] +[visit_exp (`I32`_numtype, `%`_num_(0))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#40164}(0)] -[visit_exp i#40164] -[visit_id i#40164] +[visit_exp `%`_num_(0)] [visit_exp (0)] [visit_exp 0] -[check_dims] datatype*#25 deftype*#92 deftype*#93 elemtype*#25 f frame#1955 funcidx*#62 globaltype*#26 instr*#1710 localtype*#28 memtype*#40 moduleinst#24 ref reftype#3471 resulttype*#36 resulttype?#33 rt rt' s state#1595 store#1937 subtype*#24 tabletype*#33 tagtype*#25 -[visit_exp `%;%`_config{state#1595, `instr*#1710`}(`%;%`_state{store#1937, frame#1955}(s, f), [(ref : ref <: instr) `REF.CAST`_instr{reftype#3471}(rt)])] -[visit_exp state#1595] -[visit_id state#1595] -[visit_exp `instr*#1710`] -[visit_id instr*#1710] -[visit_exp (`%;%`_state{store#1937, frame#1955}(s, f), [(ref : ref <: instr) `REF.CAST`_instr{reftype#3471}(rt)])] -[visit_exp `%;%`_state{store#1937, frame#1955}(s, f)] -[visit_exp store#1937] -[visit_id store#1937] -[visit_exp frame#1955] -[visit_id frame#1955] +[check_dims] f ref rt rt' s +[visit_exp `%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])] +[visit_exp (`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])] +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] [visit_exp f] [visit_id f] -[visit_exp [(ref : ref <: instr) `REF.CAST`_instr{reftype#3471}(rt)]] +[visit_exp [(ref : ref <: instr) `REF.CAST`_instr(rt)]] [visit_exp (ref : ref <: instr)] [visit_exp ref] [visit_id ref] -[visit_exp `REF.CAST`_instr{reftype#3471}(rt)] -[visit_exp reftype#3471] -[visit_id reftype#3471] +[visit_exp `REF.CAST`_instr(rt)] [visit_exp (rt)] [visit_exp rt] [visit_id rt] @@ -61109,122 +50467,74 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id ref] not free [visit_exp rt'] [visit_id rt'] -[visit_exp ({`TYPES`{`deftype*#92`} [], `RECS`{`subtype*#24`} [], `TAGS`{`tagtype*#25`} [], `GLOBALS`{`globaltype*#26`} [], `MEMS`{`memtype*#40`} [], `TABLES`{`tabletype*#33`} [], `FUNCS`{`deftype*#93`} [], `DATAS`{`datatype*#25`} [], `ELEMS`{`elemtype*#25`} [], `LOCALS`{`localtype*#28`} [], `LABELS`{`resulttype*#36`} [], `RETURN`{`resulttype?#33`} ?(), `REFS`{`funcidx*#62`} []}, rt', $inst_reftype(f.`MODULE`_frame{moduleinst#24}, rt))] -[visit_exp {`TYPES`{`deftype*#92`} [], `RECS`{`subtype*#24`} [], `TAGS`{`tagtype*#25`} [], `GLOBALS`{`globaltype*#26`} [], `MEMS`{`memtype*#40`} [], `TABLES`{`tabletype*#33`} [], `FUNCS`{`deftype*#93`} [], `DATAS`{`datatype*#25`} [], `ELEMS`{`elemtype*#25`} [], `LOCALS`{`localtype*#28`} [], `LABELS`{`resulttype*#36`} [], `RETURN`{`resulttype?#33`} ?(), `REFS`{`funcidx*#62`} []}] -[visit_exp `deftype*#92`] -[visit_id deftype*#92] +[visit_exp ({`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}, rt', $inst_reftype(f.`MODULE`_frame, rt))] +[visit_exp {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}] [visit_exp []] -[visit_exp `subtype*#24`] -[visit_id subtype*#24] [visit_exp []] -[visit_exp `tagtype*#25`] -[visit_id tagtype*#25] [visit_exp []] -[visit_exp `globaltype*#26`] -[visit_id globaltype*#26] [visit_exp []] -[visit_exp `memtype*#40`] -[visit_id memtype*#40] [visit_exp []] -[visit_exp `tabletype*#33`] -[visit_id tabletype*#33] [visit_exp []] -[visit_exp `deftype*#93`] -[visit_id deftype*#93] [visit_exp []] -[visit_exp `datatype*#25`] -[visit_id datatype*#25] [visit_exp []] -[visit_exp `elemtype*#25`] -[visit_id elemtype*#25] [visit_exp []] -[visit_exp `localtype*#28`] -[visit_id localtype*#28] [visit_exp []] -[visit_exp `resulttype*#36`] -[visit_id resulttype*#36] [visit_exp []] -[visit_exp `resulttype?#33`] -[visit_id resulttype?#33] [visit_exp ?()] -[visit_exp `funcidx*#62`] -[visit_id funcidx*#62] [visit_exp []] [visit_exp rt'] [visit_id rt'] not free -[visit_exp $inst_reftype(f.`MODULE`_frame{moduleinst#24}, rt)] -[visit_exp f.`MODULE`_frame{moduleinst#24}] +[visit_exp $inst_reftype(f.`MODULE`_frame, rt)] +[visit_exp f.`MODULE`_frame] [visit_exp f] [visit_id f] not free -[visit_exp moduleinst#24] -[visit_id moduleinst#24] [visit_exp rt] [visit_id rt] not free -[check_dims] f frame#1967 instr*#1722 ref reftype#3473 rt s state#1607 store#1949 -[visit_exp `%;%`_config{state#1607, `instr*#1722`}(`%;%`_state{store#1949, frame#1967}(s, f), [(ref : ref <: instr) `REF.CAST`_instr{reftype#3473}(rt)])] -[visit_exp state#1607] -[visit_id state#1607] -[visit_exp `instr*#1722`] -[visit_id instr*#1722] -[visit_exp (`%;%`_state{store#1949, frame#1967}(s, f), [(ref : ref <: instr) `REF.CAST`_instr{reftype#3473}(rt)])] -[visit_exp `%;%`_state{store#1949, frame#1967}(s, f)] -[visit_exp store#1949] -[visit_id store#1949] -[visit_exp frame#1967] -[visit_id frame#1967] +[check_dims] f ref rt s +[visit_exp `%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])] +[visit_exp (`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])] +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] [visit_exp f] [visit_id f] -[visit_exp [(ref : ref <: instr) `REF.CAST`_instr{reftype#3473}(rt)]] +[visit_exp [(ref : ref <: instr) `REF.CAST`_instr(rt)]] [visit_exp (ref : ref <: instr)] [visit_exp ref] [visit_id ref] -[visit_exp `REF.CAST`_instr{reftype#3473}(rt)] -[visit_exp reftype#3473] -[visit_id reftype#3473] +[visit_exp `REF.CAST`_instr(rt)] [visit_exp (rt)] [visit_exp rt] [visit_id rt] [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[check_dims] heaptype#1427 ht sx sx#404 -[visit_exp [`REF.NULL`_instr{heaptype#1427}(ht) `I31.GET`_instr{sx#404}(sx)]] -[visit_exp `REF.NULL`_instr{heaptype#1427}(ht)] -[visit_exp heaptype#1427] -[visit_id heaptype#1427] +[check_dims] ht sx +[visit_exp [`REF.NULL`_instr(ht) `I31.GET`_instr(sx)]] +[visit_exp `REF.NULL`_instr(ht)] [visit_exp (ht)] [visit_exp ht] [visit_id ht] -[visit_exp `I31.GET`_instr{sx#404}(sx)] -[visit_exp sx#404] -[visit_id sx#404] +[visit_exp `I31.GET`_instr(sx)] [visit_exp (sx)] [visit_exp sx] [visit_id sx] [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[check_dims] i numtype#367 sx sx#406 u31#5 -[visit_exp [`REF.I31_NUM`_instr{u31#5}(i) `I31.GET`_instr{sx#406}(sx)]] -[visit_exp `REF.I31_NUM`_instr{u31#5}(i)] -[visit_exp u31#5] -[visit_id u31#5] +[check_dims] i sx +[visit_exp [`REF.I31_NUM`_instr(i) `I31.GET`_instr(sx)]] +[visit_exp `REF.I31_NUM`_instr(i)] [visit_exp (i)] [visit_exp i] [visit_id i] -[visit_exp `I31.GET`_instr{sx#406}(sx)] -[visit_exp sx#406] -[visit_id sx#406] +[visit_exp `I31.GET`_instr(sx)] [visit_exp (sx)] [visit_exp sx] [visit_id sx] -[visit_exp [`CONST`_instr{numtype#367}(`I32`_numtype, $extend__(31, 32, sx, i))]] -[visit_exp `CONST`_instr{numtype#367}(`I32`_numtype, $extend__(31, 32, sx, i))] -[visit_exp numtype#367] -[visit_id numtype#367] +[visit_exp [`CONST`_instr(`I32`_numtype, $extend__(31, 32, sx, i))]] +[visit_exp `CONST`_instr(`I32`_numtype, $extend__(31, 32, sx, i))] [visit_exp (`I32`_numtype, $extend__(31, 32, sx, i))] [visit_exp `I32`_numtype] [visit_exp ()] @@ -61235,16 +50545,12 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id sx] not free [visit_exp i] [visit_id i] not free -[check_dims] X*#12668 a deftype#9 fieldval*#3 instr*#1734 instr*#1746 mut mut?#1031 n si state#1619 state#1631 storagetype#569 structaddr#3 typeidx#1557 val x z zt -[visit_exp `%;%`_config{state#1619, `instr*#1734`}(z, (val : val <: instr)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr{typeidx#1557}(x)])] -[visit_exp state#1619] -[visit_id state#1619] -[visit_exp `instr*#1734`] -[visit_id instr*#1734] -[visit_exp (z, (val : val <: instr)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr{typeidx#1557}(x)])] +[check_dims] a mut n si val x z zt +[visit_exp `%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)])] +[visit_exp (z, (val : val <: instr)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)])] [visit_exp z] [visit_id z] -[visit_exp (val : val <: instr)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr{typeidx#1557}(x)]] +[visit_exp (val : val <: instr)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)]] [visit_exp (val : val <: instr)^n{val <- `val*`}] [scope_enter val] [visit_exp (val : val <: instr)] @@ -61257,54 +50563,38 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `val*`] [visit_id val*] no dims [visit_id val*] -[visit_exp [`STRUCT.NEW`_instr{typeidx#1557}(x)]] -[visit_exp `STRUCT.NEW`_instr{typeidx#1557}(x)] -[visit_exp typeidx#1557] -[visit_id typeidx#1557] +[visit_exp [`STRUCT.NEW`_instr(x)]] +[visit_exp `STRUCT.NEW`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%;%`_config{state#1631, `instr*#1746`}($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr{structaddr#3}(a)])] -[visit_exp state#1631] -[visit_id state#1631] -[visit_exp `instr*#1746`] -[visit_id instr*#1746] -[visit_exp ($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr{structaddr#3}(a)])] +[visit_exp `%;%`_config($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr(a)])] +[visit_exp ($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr(a)])] [visit_exp $add_structinst(z, [si])] [visit_exp z] [visit_id z] not free [visit_exp [si]] [visit_exp si] [visit_id si] -[visit_exp [`REF.STRUCT_ADDR`_instr{structaddr#3}(a)]] -[visit_exp `REF.STRUCT_ADDR`_instr{structaddr#3}(a)] -[visit_exp structaddr#3] -[visit_id structaddr#3] +[visit_exp [`REF.STRUCT_ADDR`_instr(a)]] +[visit_exp `REF.STRUCT_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] -[visit_exp ($type(z, x), `STRUCT`_comptype(`%`_list{`X*#12668`}(`%%`_fieldtype{`mut?#1031`, storagetype#569}(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, `mut?#1031` <- `mut?#1031*`, storagetype#569 <- `storagetype#569*`, zt <- `zt*`})))] +[visit_exp ($type(z, x), `STRUCT`_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`})))] [visit_exp $type(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `STRUCT`_comptype(`%`_list{`X*#12668`}(`%%`_fieldtype{`mut?#1031`, storagetype#569}(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, `mut?#1031` <- `mut?#1031*`, storagetype#569 <- `storagetype#569*`, zt <- `zt*`}))] -[visit_exp (`%`_list{`X*#12668`}(`%%`_fieldtype{`mut?#1031`, storagetype#569}(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, `mut?#1031` <- `mut?#1031*`, storagetype#569 <- `storagetype#569*`, zt <- `zt*`}))] -[visit_exp `%`_list{`X*#12668`}(`%%`_fieldtype{`mut?#1031`, storagetype#569}(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, `mut?#1031` <- `mut?#1031*`, storagetype#569 <- `storagetype#569*`, zt <- `zt*`})] -[visit_exp `X*#12668`] -[visit_id X*#12668] -[visit_exp (`%%`_fieldtype{`mut?#1031`, storagetype#569}(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, `mut?#1031` <- `mut?#1031*`, storagetype#569 <- `storagetype#569*`, zt <- `zt*`})] -[visit_exp `%%`_fieldtype{`mut?#1031`, storagetype#569}(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, `mut?#1031` <- `mut?#1031*`, storagetype#569 <- `storagetype#569*`, zt <- `zt*`}] +[visit_exp `STRUCT`_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))] +[visit_exp (`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))] +[visit_exp `%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`})] +[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`})] +[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}] [scope_enter mut?] -[scope_enter mut?#1031] -[scope_enter storagetype#569] [scope_enter zt] -[visit_exp `%%`_fieldtype{`mut?#1031`, storagetype#569}(mut?{mut <- `mut?`}, zt)] -[visit_exp `mut?#1031`] -[visit_id mut?#1031] not free -[visit_exp storagetype#569] -[visit_id storagetype#569] not free +[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)] [visit_exp (mut?{mut <- `mut?`}, zt)] [visit_exp mut?{mut <- `mut?`}] [scope_enter mut] @@ -61319,24 +50609,14 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id zt] not free [visit_id mut?] not free [visit_id mut?] no dims -[visit_id mut?#1031] not free -[visit_id storagetype#569] not free [visit_id zt] not free [scope_exit zt] -[scope_exit storagetype#569] -[scope_exit mut?#1031] [scope_exit mut?] [visit_exp n] [visit_id n] not free [visit_exp `mut?*`] [visit_id mut?*] no dims [visit_id mut?*] -[visit_exp `mut?#1031*`] -[visit_id mut?#1031*] no dims -[visit_id mut?#1031*] -[visit_exp `storagetype#569*`] -[visit_id storagetype#569*] no dims -[visit_id storagetype#569*] [visit_exp `zt*`] [visit_id zt*] no dims [visit_id zt*] @@ -61347,19 +50627,15 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp $structinst(z)] [visit_exp z] [visit_id z] not free -[visit_exp (si = {`TYPE`{deftype#9} $type(z, x), `FIELDS`{`fieldval*#3`} $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}})] +[visit_exp (si = {`TYPE` $type(z, x), `FIELDS` $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}})] [visit_exp si] [visit_id si] not free -[visit_exp {`TYPE`{deftype#9} $type(z, x), `FIELDS`{`fieldval*#3`} $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}] -[visit_exp deftype#9] -[visit_id deftype#9] +[visit_exp {`TYPE` $type(z, x), `FIELDS` $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}] [visit_exp $type(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `fieldval*#3`] -[visit_id fieldval*#3] [visit_exp $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}] [scope_enter val] [scope_enter zt] @@ -61380,23 +50656,17 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `zt*`] [visit_id zt*] not free [visit_id zt*] no dims -[check_dims] X*#12683 instr*#1758 mut mut?#1049 state#1643 storagetype#587 typeidx#1559 typeidx#1561 val x z zt -[visit_exp `%;%`_config{state#1643, `instr*#1758`}(z, [`STRUCT.NEW_DEFAULT`_instr{typeidx#1559}(x)])] -[visit_exp state#1643] -[visit_id state#1643] -[visit_exp `instr*#1758`] -[visit_id instr*#1758] -[visit_exp (z, [`STRUCT.NEW_DEFAULT`_instr{typeidx#1559}(x)])] +[check_dims] mut val x z zt +[visit_exp `%;%`_config(z, [`STRUCT.NEW_DEFAULT`_instr(x)])] +[visit_exp (z, [`STRUCT.NEW_DEFAULT`_instr(x)])] [visit_exp z] [visit_id z] -[visit_exp [`STRUCT.NEW_DEFAULT`_instr{typeidx#1559}(x)]] -[visit_exp `STRUCT.NEW_DEFAULT`_instr{typeidx#1559}(x)] -[visit_exp typeidx#1559] -[visit_id typeidx#1559] +[visit_exp [`STRUCT.NEW_DEFAULT`_instr(x)]] +[visit_exp `STRUCT.NEW_DEFAULT`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`STRUCT.NEW`_instr{typeidx#1561}(x)]] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)]] [visit_exp (val : val <: instr)*{val <- `val*`}] [scope_enter val] [visit_exp (val : val <: instr)] @@ -61407,35 +50677,25 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `val*`] [visit_id val*] no dims [visit_id val*] -[visit_exp [`STRUCT.NEW`_instr{typeidx#1561}(x)]] -[visit_exp `STRUCT.NEW`_instr{typeidx#1561}(x)] -[visit_exp typeidx#1561] -[visit_id typeidx#1561] +[visit_exp [`STRUCT.NEW`_instr(x)]] +[visit_exp `STRUCT.NEW`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] not free -[visit_exp ($type(z, x), `STRUCT`_comptype(`%`_list{`X*#12683`}(`%%`_fieldtype{`mut?#1049`, storagetype#587}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#1049` <- `mut?#1049*`, storagetype#587 <- `storagetype#587*`, zt <- `zt*`})))] +[visit_exp ($type(z, x), `STRUCT`_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`})))] [visit_exp $type(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `STRUCT`_comptype(`%`_list{`X*#12683`}(`%%`_fieldtype{`mut?#1049`, storagetype#587}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#1049` <- `mut?#1049*`, storagetype#587 <- `storagetype#587*`, zt <- `zt*`}))] -[visit_exp (`%`_list{`X*#12683`}(`%%`_fieldtype{`mut?#1049`, storagetype#587}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#1049` <- `mut?#1049*`, storagetype#587 <- `storagetype#587*`, zt <- `zt*`}))] -[visit_exp `%`_list{`X*#12683`}(`%%`_fieldtype{`mut?#1049`, storagetype#587}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#1049` <- `mut?#1049*`, storagetype#587 <- `storagetype#587*`, zt <- `zt*`})] -[visit_exp `X*#12683`] -[visit_id X*#12683] -[visit_exp (`%%`_fieldtype{`mut?#1049`, storagetype#587}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#1049` <- `mut?#1049*`, storagetype#587 <- `storagetype#587*`, zt <- `zt*`})] -[visit_exp `%%`_fieldtype{`mut?#1049`, storagetype#587}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#1049` <- `mut?#1049*`, storagetype#587 <- `storagetype#587*`, zt <- `zt*`}] +[visit_exp `STRUCT`_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))] +[visit_exp (`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))] +[visit_exp `%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`})] +[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`})] +[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}] [scope_enter mut?] -[scope_enter mut?#1049] -[scope_enter storagetype#587] [scope_enter zt] -[visit_exp `%%`_fieldtype{`mut?#1049`, storagetype#587}(mut?{mut <- `mut?`}, zt)] -[visit_exp `mut?#1049`] -[visit_id mut?#1049] not free -[visit_exp storagetype#587] -[visit_id storagetype#587] not free +[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)] [visit_exp (mut?{mut <- `mut?`}, zt)] [visit_exp mut?{mut <- `mut?`}] [scope_enter mut] @@ -61450,22 +50710,12 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id zt] not free [visit_id mut?] not free [visit_id mut?] no dims -[visit_id mut?#1049] not free -[visit_id storagetype#587] not free [visit_id zt] not free [scope_exit zt] -[scope_exit storagetype#587] -[scope_exit mut?#1049] [scope_exit mut?] [visit_exp `mut?*`] [visit_id mut?*] no dims [visit_id mut?*] -[visit_exp `mut?#1049*`] -[visit_id mut?#1049*] no dims -[visit_id mut?#1049*] -[visit_exp `storagetype#587*`] -[visit_id storagetype#587*] no dims -[visit_id storagetype#587*] [visit_exp `zt*`] [visit_id zt*] no dims [visit_id zt*] @@ -61489,29 +50739,17 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `zt*`] [visit_id zt*] not free [visit_id zt*] no dims -[check_dims] heaptype#1429 ht i instr*#1770 state#1655 sx sx?#13 typeidx#1563 u32#17 x z -[visit_exp `%;%`_config{state#1655, `instr*#1770`}(z, [`REF.NULL`_instr{heaptype#1429}(ht) `STRUCT.GET`_instr{`sx?#13`, typeidx#1563, u32#17}(sx?{sx <- `sx?`}, x, i)])] -[visit_exp state#1655] -[visit_id state#1655] -[visit_exp `instr*#1770`] -[visit_id instr*#1770] -[visit_exp (z, [`REF.NULL`_instr{heaptype#1429}(ht) `STRUCT.GET`_instr{`sx?#13`, typeidx#1563, u32#17}(sx?{sx <- `sx?`}, x, i)])] +[check_dims] ht i sx x z +[visit_exp `%;%`_config(z, [`REF.NULL`_instr(ht) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)])] +[visit_exp (z, [`REF.NULL`_instr(ht) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)])] [visit_exp z] [visit_id z] -[visit_exp [`REF.NULL`_instr{heaptype#1429}(ht) `STRUCT.GET`_instr{`sx?#13`, typeidx#1563, u32#17}(sx?{sx <- `sx?`}, x, i)]] -[visit_exp `REF.NULL`_instr{heaptype#1429}(ht)] -[visit_exp heaptype#1429] -[visit_id heaptype#1429] +[visit_exp [`REF.NULL`_instr(ht) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]] +[visit_exp `REF.NULL`_instr(ht)] [visit_exp (ht)] [visit_exp ht] [visit_id ht] -[visit_exp `STRUCT.GET`_instr{`sx?#13`, typeidx#1563, u32#17}(sx?{sx <- `sx?`}, x, i)] -[visit_exp `sx?#13`] -[visit_id sx?#13] -[visit_exp typeidx#1563] -[visit_id typeidx#1563] -[visit_exp u32#17] -[visit_id u32#17] +[visit_exp `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)] [visit_exp (sx?{sx <- `sx?`}, x, i)] [visit_exp sx?{sx <- `sx?`}] [scope_enter sx] @@ -61529,29 +50767,17 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[check_dims] X*#12698 a fieldval*#4 i i#40378 i#40388 instr*#1782 mut mut?#1067 state#1667 storagetype#605 structaddr#5 sx sx?#15 typeidx#1565 u32#19 x z zt -[visit_exp `%;%`_config{state#1667, `instr*#1782`}(z, [`REF.STRUCT_ADDR`_instr{structaddr#5}(a) `STRUCT.GET`_instr{`sx?#15`, typeidx#1565, u32#19}(sx?{sx <- `sx?`}, x, i)])] -[visit_exp state#1667] -[visit_id state#1667] -[visit_exp `instr*#1782`] -[visit_id instr*#1782] -[visit_exp (z, [`REF.STRUCT_ADDR`_instr{structaddr#5}(a) `STRUCT.GET`_instr{`sx?#15`, typeidx#1565, u32#19}(sx?{sx <- `sx?`}, x, i)])] +[check_dims] a i mut sx x z zt +[visit_exp `%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)])] +[visit_exp (z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)])] [visit_exp z] [visit_id z] -[visit_exp [`REF.STRUCT_ADDR`_instr{structaddr#5}(a) `STRUCT.GET`_instr{`sx?#15`, typeidx#1565, u32#19}(sx?{sx <- `sx?`}, x, i)]] -[visit_exp `REF.STRUCT_ADDR`_instr{structaddr#5}(a)] -[visit_exp structaddr#5] -[visit_id structaddr#5] +[visit_exp [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]] +[visit_exp `REF.STRUCT_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] -[visit_exp `STRUCT.GET`_instr{`sx?#15`, typeidx#1565, u32#19}(sx?{sx <- `sx?`}, x, i)] -[visit_exp `sx?#15`] -[visit_id sx?#15] -[visit_exp typeidx#1565] -[visit_id typeidx#1565] -[visit_exp u32#19] -[visit_id u32#19] +[visit_exp `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)] [visit_exp (sx?{sx <- `sx?`}, x, i)] [visit_exp sx?{sx <- `sx?`}] [scope_enter sx] @@ -61566,10 +50792,10 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id x] [visit_exp i] [visit_id i] -[visit_exp [($unpackfield_(zt*{zt <- `zt*`}[i!`%`_u32{i#40378}.0], sx?{sx <- `sx?`}, $structinst(z)[a].`FIELDS`_structinst{`fieldval*#4`}[i!`%`_u32{i#40388}.0]) : val <: instr)]] -[visit_exp ($unpackfield_(zt*{zt <- `zt*`}[i!`%`_u32{i#40378}.0], sx?{sx <- `sx?`}, $structinst(z)[a].`FIELDS`_structinst{`fieldval*#4`}[i!`%`_u32{i#40388}.0]) : val <: instr)] -[visit_exp $unpackfield_(zt*{zt <- `zt*`}[i!`%`_u32{i#40378}.0], sx?{sx <- `sx?`}, $structinst(z)[a].`FIELDS`_structinst{`fieldval*#4`}[i!`%`_u32{i#40388}.0])] -[visit_exp zt*{zt <- `zt*`}[i!`%`_u32{i#40378}.0]] +[visit_exp [($unpackfield_(zt*{zt <- `zt*`}[i!`%`_u32.0], sx?{sx <- `sx?`}, $structinst(z)[a].`FIELDS`_structinst[i!`%`_u32.0]) : val <: instr)]] +[visit_exp ($unpackfield_(zt*{zt <- `zt*`}[i!`%`_u32.0], sx?{sx <- `sx?`}, $structinst(z)[a].`FIELDS`_structinst[i!`%`_u32.0]) : val <: instr)] +[visit_exp $unpackfield_(zt*{zt <- `zt*`}[i!`%`_u32.0], sx?{sx <- `sx?`}, $structinst(z)[a].`FIELDS`_structinst[i!`%`_u32.0])] +[visit_exp zt*{zt <- `zt*`}[i!`%`_u32.0]] [visit_exp zt*{zt <- `zt*`}] [scope_enter zt] [visit_exp zt] @@ -61579,12 +50805,10 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `zt*`] [visit_id zt*] no dims [visit_id zt*] -[visit_exp i!`%`_u32{i#40378}.0] -[visit_exp i!`%`_u32{i#40378}] +[visit_exp i!`%`_u32.0] +[visit_exp i!`%`_u32] [visit_exp i] [visit_id i] not free -[visit_exp i#40378] -[visit_id i#40378] [visit_exp sx?{sx <- `sx?`}] [scope_enter sx] [visit_exp sx] @@ -61594,44 +50818,32 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `sx?`] [visit_id sx?] not free [visit_id sx?] no dims -[visit_exp $structinst(z)[a].`FIELDS`_structinst{`fieldval*#4`}[i!`%`_u32{i#40388}.0]] -[visit_exp $structinst(z)[a].`FIELDS`_structinst{`fieldval*#4`}] +[visit_exp $structinst(z)[a].`FIELDS`_structinst[i!`%`_u32.0]] +[visit_exp $structinst(z)[a].`FIELDS`_structinst] [visit_exp $structinst(z)[a]] [visit_exp $structinst(z)] [visit_exp z] [visit_id z] not free [visit_exp a] [visit_id a] not free -[visit_exp `fieldval*#4`] -[visit_id fieldval*#4] -[visit_exp i!`%`_u32{i#40388}.0] -[visit_exp i!`%`_u32{i#40388}] +[visit_exp i!`%`_u32.0] +[visit_exp i!`%`_u32] [visit_exp i] [visit_id i] not free -[visit_exp i#40388] -[visit_id i#40388] -[visit_exp ($type(z, x), `STRUCT`_comptype(`%`_list{`X*#12698`}(`%%`_fieldtype{`mut?#1067`, storagetype#605}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#1067` <- `mut?#1067*`, storagetype#605 <- `storagetype#605*`, zt <- `zt*`})))] +[visit_exp ($type(z, x), `STRUCT`_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`})))] [visit_exp $type(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `STRUCT`_comptype(`%`_list{`X*#12698`}(`%%`_fieldtype{`mut?#1067`, storagetype#605}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#1067` <- `mut?#1067*`, storagetype#605 <- `storagetype#605*`, zt <- `zt*`}))] -[visit_exp (`%`_list{`X*#12698`}(`%%`_fieldtype{`mut?#1067`, storagetype#605}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#1067` <- `mut?#1067*`, storagetype#605 <- `storagetype#605*`, zt <- `zt*`}))] -[visit_exp `%`_list{`X*#12698`}(`%%`_fieldtype{`mut?#1067`, storagetype#605}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#1067` <- `mut?#1067*`, storagetype#605 <- `storagetype#605*`, zt <- `zt*`})] -[visit_exp `X*#12698`] -[visit_id X*#12698] -[visit_exp (`%%`_fieldtype{`mut?#1067`, storagetype#605}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#1067` <- `mut?#1067*`, storagetype#605 <- `storagetype#605*`, zt <- `zt*`})] -[visit_exp `%%`_fieldtype{`mut?#1067`, storagetype#605}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#1067` <- `mut?#1067*`, storagetype#605 <- `storagetype#605*`, zt <- `zt*`}] +[visit_exp `STRUCT`_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))] +[visit_exp (`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))] +[visit_exp `%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`})] +[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`})] +[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}] [scope_enter mut?] -[scope_enter mut?#1067] -[scope_enter storagetype#605] [scope_enter zt] -[visit_exp `%%`_fieldtype{`mut?#1067`, storagetype#605}(mut?{mut <- `mut?`}, zt)] -[visit_exp `mut?#1067`] -[visit_id mut?#1067] not free -[visit_exp storagetype#605] -[visit_id storagetype#605] not free +[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)] [visit_exp (mut?{mut <- `mut?`}, zt)] [visit_exp mut?{mut <- `mut?`}] [scope_enter mut] @@ -61646,113 +50858,73 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id zt] not free [visit_id mut?] not free [visit_id mut?] no dims -[visit_id mut?#1067] not free -[visit_id storagetype#605] not free [visit_id zt] not free [scope_exit zt] -[scope_exit storagetype#605] -[scope_exit mut?#1067] [scope_exit mut?] [visit_exp `mut?*`] [visit_id mut?*] no dims [visit_id mut?*] -[visit_exp `mut?#1067*`] -[visit_id mut?#1067*] no dims -[visit_id mut?#1067*] -[visit_exp `storagetype#605*`] -[visit_id storagetype#605*] no dims -[visit_id storagetype#605*] [visit_exp `zt*`] [visit_id zt*] not free [visit_id zt*] no dims -[check_dims] heaptype#1431 ht i instr*#1794 instr*#1806 state#1679 state#1691 typeidx#1567 u32#21 val x z -[visit_exp `%;%`_config{state#1679, `instr*#1794`}(z, [`REF.NULL`_instr{heaptype#1431}(ht) (val : val <: instr) `STRUCT.SET`_instr{typeidx#1567, u32#21}(x, i)])] -[visit_exp state#1679] -[visit_id state#1679] -[visit_exp `instr*#1794`] -[visit_id instr*#1794] -[visit_exp (z, [`REF.NULL`_instr{heaptype#1431}(ht) (val : val <: instr) `STRUCT.SET`_instr{typeidx#1567, u32#21}(x, i)])] +[check_dims] ht i val x z +[visit_exp `%;%`_config(z, [`REF.NULL`_instr(ht) (val : val <: instr) `STRUCT.SET`_instr(x, i)])] +[visit_exp (z, [`REF.NULL`_instr(ht) (val : val <: instr) `STRUCT.SET`_instr(x, i)])] [visit_exp z] [visit_id z] -[visit_exp [`REF.NULL`_instr{heaptype#1431}(ht) (val : val <: instr) `STRUCT.SET`_instr{typeidx#1567, u32#21}(x, i)]] -[visit_exp `REF.NULL`_instr{heaptype#1431}(ht)] -[visit_exp heaptype#1431] -[visit_id heaptype#1431] +[visit_exp [`REF.NULL`_instr(ht) (val : val <: instr) `STRUCT.SET`_instr(x, i)]] +[visit_exp `REF.NULL`_instr(ht)] [visit_exp (ht)] [visit_exp ht] [visit_id ht] [visit_exp (val : val <: instr)] [visit_exp val] [visit_id val] -[visit_exp `STRUCT.SET`_instr{typeidx#1567, u32#21}(x, i)] -[visit_exp typeidx#1567] -[visit_id typeidx#1567] -[visit_exp u32#21] -[visit_id u32#21] +[visit_exp `STRUCT.SET`_instr(x, i)] [visit_exp (x, i)] [visit_exp x] [visit_id x] [visit_exp i] [visit_id i] -[visit_exp `%;%`_config{state#1691, `instr*#1806`}(z, [`TRAP`_instr])] -[visit_exp state#1691] -[visit_id state#1691] -[visit_exp `instr*#1806`] -[visit_id instr*#1806] +[visit_exp `%;%`_config(z, [`TRAP`_instr])] [visit_exp (z, [`TRAP`_instr])] [visit_exp z] [visit_id z] not free [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[check_dims] X*#12713 a i i#40466 i#40476 instr*#1818 instr*#1830 mut mut?#1085 state#1703 state#1715 storagetype#623 structaddr#7 typeidx#1569 u32#23 val x z zt -[visit_exp `%;%`_config{state#1703, `instr*#1818`}(z, [`REF.STRUCT_ADDR`_instr{structaddr#7}(a) (val : val <: instr) `STRUCT.SET`_instr{typeidx#1569, u32#23}(x, i)])] -[visit_exp state#1703] -[visit_id state#1703] -[visit_exp `instr*#1818`] -[visit_id instr*#1818] -[visit_exp (z, [`REF.STRUCT_ADDR`_instr{structaddr#7}(a) (val : val <: instr) `STRUCT.SET`_instr{typeidx#1569, u32#23}(x, i)])] +[check_dims] a i mut val x z zt +[visit_exp `%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) (val : val <: instr) `STRUCT.SET`_instr(x, i)])] +[visit_exp (z, [`REF.STRUCT_ADDR`_instr(a) (val : val <: instr) `STRUCT.SET`_instr(x, i)])] [visit_exp z] [visit_id z] -[visit_exp [`REF.STRUCT_ADDR`_instr{structaddr#7}(a) (val : val <: instr) `STRUCT.SET`_instr{typeidx#1569, u32#23}(x, i)]] -[visit_exp `REF.STRUCT_ADDR`_instr{structaddr#7}(a)] -[visit_exp structaddr#7] -[visit_id structaddr#7] +[visit_exp [`REF.STRUCT_ADDR`_instr(a) (val : val <: instr) `STRUCT.SET`_instr(x, i)]] +[visit_exp `REF.STRUCT_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] [visit_exp (val : val <: instr)] [visit_exp val] [visit_id val] -[visit_exp `STRUCT.SET`_instr{typeidx#1569, u32#23}(x, i)] -[visit_exp typeidx#1569] -[visit_id typeidx#1569] -[visit_exp u32#23] -[visit_id u32#23] +[visit_exp `STRUCT.SET`_instr(x, i)] [visit_exp (x, i)] [visit_exp x] [visit_id x] [visit_exp i] [visit_id i] -[visit_exp `%;%`_config{state#1715, `instr*#1830`}($with_struct(z, a, i!`%`_u32{i#40466}.0, $packfield_(zt*{zt <- `zt*`}[i!`%`_u32{i#40476}.0], val)), [])] -[visit_exp state#1715] -[visit_id state#1715] -[visit_exp `instr*#1830`] -[visit_id instr*#1830] -[visit_exp ($with_struct(z, a, i!`%`_u32{i#40466}.0, $packfield_(zt*{zt <- `zt*`}[i!`%`_u32{i#40476}.0], val)), [])] -[visit_exp $with_struct(z, a, i!`%`_u32{i#40466}.0, $packfield_(zt*{zt <- `zt*`}[i!`%`_u32{i#40476}.0], val))] +[visit_exp `%;%`_config($with_struct(z, a, i!`%`_u32.0, $packfield_(zt*{zt <- `zt*`}[i!`%`_u32.0], val)), [])] +[visit_exp ($with_struct(z, a, i!`%`_u32.0, $packfield_(zt*{zt <- `zt*`}[i!`%`_u32.0], val)), [])] +[visit_exp $with_struct(z, a, i!`%`_u32.0, $packfield_(zt*{zt <- `zt*`}[i!`%`_u32.0], val))] [visit_exp z] [visit_id z] not free [visit_exp a] [visit_id a] not free -[visit_exp i!`%`_u32{i#40466}.0] -[visit_exp i!`%`_u32{i#40466}] +[visit_exp i!`%`_u32.0] +[visit_exp i!`%`_u32] [visit_exp i] [visit_id i] not free -[visit_exp i#40466] -[visit_id i#40466] -[visit_exp $packfield_(zt*{zt <- `zt*`}[i!`%`_u32{i#40476}.0], val)] -[visit_exp zt*{zt <- `zt*`}[i!`%`_u32{i#40476}.0]] +[visit_exp $packfield_(zt*{zt <- `zt*`}[i!`%`_u32.0], val)] +[visit_exp zt*{zt <- `zt*`}[i!`%`_u32.0]] [visit_exp zt*{zt <- `zt*`}] [scope_enter zt] [visit_exp zt] @@ -61762,37 +50934,27 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `zt*`] [visit_id zt*] no dims [visit_id zt*] -[visit_exp i!`%`_u32{i#40476}.0] -[visit_exp i!`%`_u32{i#40476}] +[visit_exp i!`%`_u32.0] +[visit_exp i!`%`_u32] [visit_exp i] [visit_id i] not free -[visit_exp i#40476] -[visit_id i#40476] [visit_exp val] [visit_id val] not free [visit_exp []] -[visit_exp ($type(z, x), `STRUCT`_comptype(`%`_list{`X*#12713`}(`%%`_fieldtype{`mut?#1085`, storagetype#623}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#1085` <- `mut?#1085*`, storagetype#623 <- `storagetype#623*`, zt <- `zt*`})))] +[visit_exp ($type(z, x), `STRUCT`_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`})))] [visit_exp $type(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `STRUCT`_comptype(`%`_list{`X*#12713`}(`%%`_fieldtype{`mut?#1085`, storagetype#623}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#1085` <- `mut?#1085*`, storagetype#623 <- `storagetype#623*`, zt <- `zt*`}))] -[visit_exp (`%`_list{`X*#12713`}(`%%`_fieldtype{`mut?#1085`, storagetype#623}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#1085` <- `mut?#1085*`, storagetype#623 <- `storagetype#623*`, zt <- `zt*`}))] -[visit_exp `%`_list{`X*#12713`}(`%%`_fieldtype{`mut?#1085`, storagetype#623}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#1085` <- `mut?#1085*`, storagetype#623 <- `storagetype#623*`, zt <- `zt*`})] -[visit_exp `X*#12713`] -[visit_id X*#12713] -[visit_exp (`%%`_fieldtype{`mut?#1085`, storagetype#623}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#1085` <- `mut?#1085*`, storagetype#623 <- `storagetype#623*`, zt <- `zt*`})] -[visit_exp `%%`_fieldtype{`mut?#1085`, storagetype#623}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#1085` <- `mut?#1085*`, storagetype#623 <- `storagetype#623*`, zt <- `zt*`}] +[visit_exp `STRUCT`_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))] +[visit_exp (`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))] +[visit_exp `%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`})] +[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`})] +[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}] [scope_enter mut?] -[scope_enter mut?#1085] -[scope_enter storagetype#623] [scope_enter zt] -[visit_exp `%%`_fieldtype{`mut?#1085`, storagetype#623}(mut?{mut <- `mut?`}, zt)] -[visit_exp `mut?#1085`] -[visit_id mut?#1085] not free -[visit_exp storagetype#623] -[visit_id storagetype#623] not free +[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)] [visit_exp (mut?{mut <- `mut?`}, zt)] [visit_exp mut?{mut <- `mut?`}] [scope_enter mut] @@ -61807,135 +50969,91 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id zt] not free [visit_id mut?] not free [visit_id mut?] no dims -[visit_id mut?#1085] not free -[visit_id storagetype#623] not free [visit_id zt] not free [scope_exit zt] -[scope_exit storagetype#623] -[scope_exit mut?#1085] [scope_exit mut?] [visit_exp `mut?*`] [visit_id mut?*] no dims [visit_id mut?*] -[visit_exp `mut?#1085*`] -[visit_id mut?#1085*] no dims -[visit_id mut?#1085*] -[visit_exp `storagetype#623*`] -[visit_id storagetype#623*] no dims -[visit_id storagetype#623*] [visit_exp `zt*`] [visit_id zt*] not free [visit_id zt*] no dims -[check_dims] i#40512 i#40564 n numtype#369 typeidx#1571 typeidx#1573 u32#25 val x -[visit_exp [(val : val <: instr) `CONST`_instr{numtype#369}(`I32`_numtype, `%`_num_{i#40512}(n)) `ARRAY.NEW`_instr{typeidx#1571}(x)]] +[check_dims] n val x +[visit_exp [(val : val <: instr) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.NEW`_instr(x)]] [visit_exp (val : val <: instr)] [visit_exp val] [visit_id val] -[visit_exp `CONST`_instr{numtype#369}(`I32`_numtype, `%`_num_{i#40512}(n))] -[visit_exp numtype#369] -[visit_id numtype#369] -[visit_exp (`I32`_numtype, `%`_num_{i#40512}(n))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] +[visit_exp (`I32`_numtype, `%`_num_(n))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#40512}(n)] -[visit_exp i#40512] -[visit_id i#40512] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `ARRAY.NEW`_instr{typeidx#1571}(x)] -[visit_exp typeidx#1571] -[visit_id typeidx#1571] +[visit_exp `ARRAY.NEW`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr{typeidx#1573, u32#25}(x, `%`_u32{i#40564}(n))]] +[visit_exp (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]] [visit_exp (val : val <: instr)^n{}] [visit_exp (val : val <: instr)] [visit_exp val] [visit_id val] not free [visit_exp n] [visit_id n] not free -[visit_exp [`ARRAY.NEW_FIXED`_instr{typeidx#1573, u32#25}(x, `%`_u32{i#40564}(n))]] -[visit_exp `ARRAY.NEW_FIXED`_instr{typeidx#1573, u32#25}(x, `%`_u32{i#40564}(n))] -[visit_exp typeidx#1573] -[visit_id typeidx#1573] -[visit_exp u32#25] -[visit_id u32#25] -[visit_exp (x, `%`_u32{i#40564}(n))] -[visit_exp x] -[visit_id x] not free -[visit_exp `%`_u32{i#40564}(n)] -[visit_exp i#40564] -[visit_id i#40564] +[visit_exp [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]] +[visit_exp `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))] +[visit_exp (x, `%`_u32(n))] +[visit_exp x] +[visit_id x] not free +[visit_exp `%`_u32(n)] [visit_exp (n)] [visit_exp n] [visit_id n] not free -[check_dims] fieldtype#39 i#40588 i#40640 instr*#1842 mut mut?#1097 n numtype#371 state#1727 storagetype#635 typeidx#1575 typeidx#1577 u32#27 val x z zt -[visit_exp `%;%`_config{state#1727, `instr*#1842`}(z, [`CONST`_instr{numtype#371}(`I32`_numtype, `%`_num_{i#40588}(n)) `ARRAY.NEW_DEFAULT`_instr{typeidx#1575}(x)])] -[visit_exp state#1727] -[visit_id state#1727] -[visit_exp `instr*#1842`] -[visit_id instr*#1842] -[visit_exp (z, [`CONST`_instr{numtype#371}(`I32`_numtype, `%`_num_{i#40588}(n)) `ARRAY.NEW_DEFAULT`_instr{typeidx#1575}(x)])] +[check_dims] mut n val x z zt +[visit_exp `%;%`_config(z, [`CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.NEW_DEFAULT`_instr(x)])] +[visit_exp (z, [`CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.NEW_DEFAULT`_instr(x)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#371}(`I32`_numtype, `%`_num_{i#40588}(n)) `ARRAY.NEW_DEFAULT`_instr{typeidx#1575}(x)]] -[visit_exp `CONST`_instr{numtype#371}(`I32`_numtype, `%`_num_{i#40588}(n))] -[visit_exp numtype#371] -[visit_id numtype#371] -[visit_exp (`I32`_numtype, `%`_num_{i#40588}(n))] +[visit_exp [`CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.NEW_DEFAULT`_instr(x)]] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] +[visit_exp (`I32`_numtype, `%`_num_(n))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#40588}(n)] -[visit_exp i#40588] -[visit_id i#40588] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `ARRAY.NEW_DEFAULT`_instr{typeidx#1575}(x)] -[visit_exp typeidx#1575] -[visit_id typeidx#1575] +[visit_exp `ARRAY.NEW_DEFAULT`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr{typeidx#1577, u32#27}(x, `%`_u32{i#40640}(n))]] +[visit_exp (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]] [visit_exp (val : val <: instr)^n{}] [visit_exp (val : val <: instr)] [visit_exp val] [visit_id val] [visit_exp n] [visit_id n] not free -[visit_exp [`ARRAY.NEW_FIXED`_instr{typeidx#1577, u32#27}(x, `%`_u32{i#40640}(n))]] -[visit_exp `ARRAY.NEW_FIXED`_instr{typeidx#1577, u32#27}(x, `%`_u32{i#40640}(n))] -[visit_exp typeidx#1577] -[visit_id typeidx#1577] -[visit_exp u32#27] -[visit_id u32#27] -[visit_exp (x, `%`_u32{i#40640}(n))] -[visit_exp x] -[visit_id x] not free -[visit_exp `%`_u32{i#40640}(n)] -[visit_exp i#40640] -[visit_id i#40640] +[visit_exp [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]] +[visit_exp `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))] +[visit_exp (x, `%`_u32(n))] +[visit_exp x] +[visit_id x] not free +[visit_exp `%`_u32(n)] [visit_exp (n)] [visit_exp n] [visit_id n] not free -[visit_exp ($type(z, x), `ARRAY`_comptype{fieldtype#39}(`%%`_fieldtype{`mut?#1097`, storagetype#635}(mut?{mut <- `mut?`}, zt)))] +[visit_exp ($type(z, x), `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)))] [visit_exp $type(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `ARRAY`_comptype{fieldtype#39}(`%%`_fieldtype{`mut?#1097`, storagetype#635}(mut?{mut <- `mut?`}, zt))] -[visit_exp fieldtype#39] -[visit_id fieldtype#39] -[visit_exp (`%%`_fieldtype{`mut?#1097`, storagetype#635}(mut?{mut <- `mut?`}, zt))] -[visit_exp `%%`_fieldtype{`mut?#1097`, storagetype#635}(mut?{mut <- `mut?`}, zt)] -[visit_exp `mut?#1097`] -[visit_id mut?#1097] -[visit_exp storagetype#635] -[visit_id storagetype#635] +[visit_exp `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] +[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] +[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)] [visit_exp (mut?{mut <- `mut?`}, zt)] [visit_exp mut?{mut <- `mut?`}] [scope_enter mut] @@ -61956,16 +51074,12 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp ?(val)] [visit_exp val] [visit_id val] not free -[check_dims] a ai arrayaddr#3 deftype#10 fieldtype#41 fieldval*#5 i#40690 instr*#1854 instr*#1866 mut mut?#1109 n state#1739 state#1751 storagetype#647 typeidx#1579 u32#29 val x z zt -[visit_exp `%;%`_config{state#1739, `instr*#1854`}(z, (val : val <: instr)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr{typeidx#1579, u32#29}(x, `%`_u32{i#40690}(n))])] -[visit_exp state#1739] -[visit_id state#1739] -[visit_exp `instr*#1854`] -[visit_id instr*#1854] -[visit_exp (z, (val : val <: instr)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr{typeidx#1579, u32#29}(x, `%`_u32{i#40690}(n))])] +[check_dims] a ai mut n val x z zt +[visit_exp `%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))])] +[visit_exp (z, (val : val <: instr)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))])] [visit_exp z] [visit_id z] -[visit_exp (val : val <: instr)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr{typeidx#1579, u32#29}(x, `%`_u32{i#40690}(n))]] +[visit_exp (val : val <: instr)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]] [visit_exp (val : val <: instr)^n{val <- `val*`}] [scope_enter val] [visit_exp (val : val <: instr)] @@ -61978,55 +51092,37 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `val*`] [visit_id val*] no dims [visit_id val*] -[visit_exp [`ARRAY.NEW_FIXED`_instr{typeidx#1579, u32#29}(x, `%`_u32{i#40690}(n))]] -[visit_exp `ARRAY.NEW_FIXED`_instr{typeidx#1579, u32#29}(x, `%`_u32{i#40690}(n))] -[visit_exp typeidx#1579] -[visit_id typeidx#1579] -[visit_exp u32#29] -[visit_id u32#29] -[visit_exp (x, `%`_u32{i#40690}(n))] +[visit_exp [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]] +[visit_exp `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))] +[visit_exp (x, `%`_u32(n))] [visit_exp x] [visit_id x] -[visit_exp `%`_u32{i#40690}(n)] -[visit_exp i#40690] -[visit_id i#40690] +[visit_exp `%`_u32(n)] [visit_exp (n)] [visit_exp n] [visit_id n] not free -[visit_exp `%;%`_config{state#1751, `instr*#1866`}($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr{arrayaddr#3}(a)])] -[visit_exp state#1751] -[visit_id state#1751] -[visit_exp `instr*#1866`] -[visit_id instr*#1866] -[visit_exp ($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr{arrayaddr#3}(a)])] +[visit_exp `%;%`_config($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr(a)])] +[visit_exp ($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr(a)])] [visit_exp $add_arrayinst(z, [ai])] [visit_exp z] [visit_id z] not free [visit_exp [ai]] [visit_exp ai] [visit_id ai] -[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#3}(a)]] -[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#3}(a)] -[visit_exp arrayaddr#3] -[visit_id arrayaddr#3] +[visit_exp [`REF.ARRAY_ADDR`_instr(a)]] +[visit_exp `REF.ARRAY_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] -[visit_exp ($type(z, x), `ARRAY`_comptype{fieldtype#41}(`%%`_fieldtype{`mut?#1109`, storagetype#647}(mut?{mut <- `mut?`}, zt)))] +[visit_exp ($type(z, x), `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)))] [visit_exp $type(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `ARRAY`_comptype{fieldtype#41}(`%%`_fieldtype{`mut?#1109`, storagetype#647}(mut?{mut <- `mut?`}, zt))] -[visit_exp fieldtype#41] -[visit_id fieldtype#41] -[visit_exp (`%%`_fieldtype{`mut?#1109`, storagetype#647}(mut?{mut <- `mut?`}, zt))] -[visit_exp `%%`_fieldtype{`mut?#1109`, storagetype#647}(mut?{mut <- `mut?`}, zt)] -[visit_exp `mut?#1109`] -[visit_id mut?#1109] -[visit_exp storagetype#647] -[visit_id storagetype#647] +[visit_exp `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] +[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] +[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)] [visit_exp (mut?{mut <- `mut?`}, zt)] [visit_exp mut?{mut <- `mut?`}] [scope_enter mut] @@ -62039,7 +51135,7 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id mut?] [visit_exp zt] [visit_id zt] -[visit_exp ((a = |$arrayinst(z)|) /\ (ai = {`TYPE`{deftype#10} $type(z, x), `FIELDS`{`fieldval*#5`} $packfield_(zt, val)^n{val <- `val*`}}))] +[visit_exp ((a = |$arrayinst(z)|) /\ (ai = {`TYPE` $type(z, x), `FIELDS` $packfield_(zt, val)^n{val <- `val*`}}))] [visit_exp (a = |$arrayinst(z)|)] [visit_exp a] [visit_id a] not free @@ -62047,19 +51143,15 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp $arrayinst(z)] [visit_exp z] [visit_id z] not free -[visit_exp (ai = {`TYPE`{deftype#10} $type(z, x), `FIELDS`{`fieldval*#5`} $packfield_(zt, val)^n{val <- `val*`}})] +[visit_exp (ai = {`TYPE` $type(z, x), `FIELDS` $packfield_(zt, val)^n{val <- `val*`}})] [visit_exp ai] [visit_id ai] not free -[visit_exp {`TYPE`{deftype#10} $type(z, x), `FIELDS`{`fieldval*#5`} $packfield_(zt, val)^n{val <- `val*`}}] -[visit_exp deftype#10] -[visit_id deftype#10] +[visit_exp {`TYPE` $type(z, x), `FIELDS` $packfield_(zt, val)^n{val <- `val*`}}] [visit_exp $type(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `fieldval*#5`] -[visit_id fieldval*#5] [visit_exp $packfield_(zt, val)^n{val <- `val*`}] [scope_enter val] [visit_exp $packfield_(zt, val)] @@ -62074,41 +51166,27 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `val*`] [visit_id val*] not free [visit_id val*] no dims -[check_dims] elemidx#27 i i#40752 i#40794 instr*#1878 n numtype#373 numtype#375 ref*#18 state#1763 typeidx#1581 x y z -[visit_exp `%;%`_config{state#1763, `instr*#1878`}(z, [`CONST`_instr{numtype#373}(`I32`_numtype, i) `CONST`_instr{numtype#375}(`I32`_numtype, `%`_num_{i#40752}(n)) `ARRAY.NEW_ELEM`_instr{typeidx#1581, elemidx#27}(x, y)])] -[visit_exp state#1763] -[visit_id state#1763] -[visit_exp `instr*#1878`] -[visit_id instr*#1878] -[visit_exp (z, [`CONST`_instr{numtype#373}(`I32`_numtype, i) `CONST`_instr{numtype#375}(`I32`_numtype, `%`_num_{i#40752}(n)) `ARRAY.NEW_ELEM`_instr{typeidx#1581, elemidx#27}(x, y)])] +[check_dims] i n x y z +[visit_exp `%;%`_config(z, [`CONST`_instr(`I32`_numtype, i) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.NEW_ELEM`_instr(x, y)])] +[visit_exp (z, [`CONST`_instr(`I32`_numtype, i) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.NEW_ELEM`_instr(x, y)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#373}(`I32`_numtype, i) `CONST`_instr{numtype#375}(`I32`_numtype, `%`_num_{i#40752}(n)) `ARRAY.NEW_ELEM`_instr{typeidx#1581, elemidx#27}(x, y)]] -[visit_exp `CONST`_instr{numtype#373}(`I32`_numtype, i)] -[visit_exp numtype#373] -[visit_id numtype#373] +[visit_exp [`CONST`_instr(`I32`_numtype, i) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.NEW_ELEM`_instr(x, y)]] +[visit_exp `CONST`_instr(`I32`_numtype, i)] [visit_exp (`I32`_numtype, i)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp i] [visit_id i] -[visit_exp `CONST`_instr{numtype#375}(`I32`_numtype, `%`_num_{i#40752}(n))] -[visit_exp numtype#375] -[visit_id numtype#375] -[visit_exp (`I32`_numtype, `%`_num_{i#40752}(n))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] +[visit_exp (`I32`_numtype, `%`_num_(n))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#40752}(n)] -[visit_exp i#40752] -[visit_id i#40752] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `ARRAY.NEW_ELEM`_instr{typeidx#1581, elemidx#27}(x, y)] -[visit_exp typeidx#1581] -[visit_id typeidx#1581] -[visit_exp elemidx#27] -[visit_id elemidx#27] +[visit_exp `ARRAY.NEW_ELEM`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] @@ -62117,66 +51195,48 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[visit_exp ((i!`%`_num_{i#40794}.0 + n) > |$elem(z, y).`REFS`_eleminst{`ref*#18`}|)] -[visit_exp (i!`%`_num_{i#40794}.0 + n)] -[visit_exp i!`%`_num_{i#40794}.0] -[visit_exp i!`%`_num_{i#40794}] +[visit_exp ((i!`%`_num_.0 + n) > |$elem(z, y).`REFS`_eleminst|)] +[visit_exp (i!`%`_num_.0 + n)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#40794] -[visit_id i#40794] [visit_exp n] [visit_id n] not free -[visit_exp |$elem(z, y).`REFS`_eleminst{`ref*#18`}|] -[visit_exp $elem(z, y).`REFS`_eleminst{`ref*#18`}] +[visit_exp |$elem(z, y).`REFS`_eleminst|] +[visit_exp $elem(z, y).`REFS`_eleminst] [visit_exp $elem(z, y)] [visit_exp z] [visit_id z] not free [visit_exp y] [visit_id y] not free -[visit_exp `ref*#18`] -[visit_id ref*#18] -[check_dims] elemidx#29 i i#40844 i#40910 i#40932 instr*#1890 n numtype#377 numtype#379 ref ref*#19 state#1775 typeidx#1583 typeidx#1585 u32#31 x y z -[visit_exp `%;%`_config{state#1775, `instr*#1890`}(z, [`CONST`_instr{numtype#377}(`I32`_numtype, i) `CONST`_instr{numtype#379}(`I32`_numtype, `%`_num_{i#40844}(n)) `ARRAY.NEW_ELEM`_instr{typeidx#1583, elemidx#29}(x, y)])] -[visit_exp state#1775] -[visit_id state#1775] -[visit_exp `instr*#1890`] -[visit_id instr*#1890] -[visit_exp (z, [`CONST`_instr{numtype#377}(`I32`_numtype, i) `CONST`_instr{numtype#379}(`I32`_numtype, `%`_num_{i#40844}(n)) `ARRAY.NEW_ELEM`_instr{typeidx#1583, elemidx#29}(x, y)])] +[check_dims] i n ref x y z +[visit_exp `%;%`_config(z, [`CONST`_instr(`I32`_numtype, i) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.NEW_ELEM`_instr(x, y)])] +[visit_exp (z, [`CONST`_instr(`I32`_numtype, i) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.NEW_ELEM`_instr(x, y)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#377}(`I32`_numtype, i) `CONST`_instr{numtype#379}(`I32`_numtype, `%`_num_{i#40844}(n)) `ARRAY.NEW_ELEM`_instr{typeidx#1583, elemidx#29}(x, y)]] -[visit_exp `CONST`_instr{numtype#377}(`I32`_numtype, i)] -[visit_exp numtype#377] -[visit_id numtype#377] +[visit_exp [`CONST`_instr(`I32`_numtype, i) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.NEW_ELEM`_instr(x, y)]] +[visit_exp `CONST`_instr(`I32`_numtype, i)] [visit_exp (`I32`_numtype, i)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp i] [visit_id i] -[visit_exp `CONST`_instr{numtype#379}(`I32`_numtype, `%`_num_{i#40844}(n))] -[visit_exp numtype#379] -[visit_id numtype#379] -[visit_exp (`I32`_numtype, `%`_num_{i#40844}(n))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] +[visit_exp (`I32`_numtype, `%`_num_(n))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#40844}(n)] -[visit_exp i#40844] -[visit_id i#40844] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `ARRAY.NEW_ELEM`_instr{typeidx#1583, elemidx#29}(x, y)] -[visit_exp typeidx#1583] -[visit_id typeidx#1583] -[visit_exp elemidx#29] -[visit_id elemidx#29] +[visit_exp `ARRAY.NEW_ELEM`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] [visit_exp y] [visit_id y] -[visit_exp (ref : ref <: instr)^n{ref <- `ref*`} ++ [`ARRAY.NEW_FIXED`_instr{typeidx#1585, u32#31}(x, `%`_u32{i#40910}(n))]] +[visit_exp (ref : ref <: instr)^n{ref <- `ref*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]] [visit_exp (ref : ref <: instr)^n{ref <- `ref*`}] [scope_enter ref] [visit_exp (ref : ref <: instr)] @@ -62189,22 +51249,16 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `ref*`] [visit_id ref*] no dims [visit_id ref*] -[visit_exp [`ARRAY.NEW_FIXED`_instr{typeidx#1585, u32#31}(x, `%`_u32{i#40910}(n))]] -[visit_exp `ARRAY.NEW_FIXED`_instr{typeidx#1585, u32#31}(x, `%`_u32{i#40910}(n))] -[visit_exp typeidx#1585] -[visit_id typeidx#1585] -[visit_exp u32#31] -[visit_id u32#31] -[visit_exp (x, `%`_u32{i#40910}(n))] -[visit_exp x] -[visit_id x] not free -[visit_exp `%`_u32{i#40910}(n)] -[visit_exp i#40910] -[visit_id i#40910] +[visit_exp [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]] +[visit_exp `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))] +[visit_exp (x, `%`_u32(n))] +[visit_exp x] +[visit_id x] not free +[visit_exp `%`_u32(n)] [visit_exp (n)] [visit_exp n] [visit_id n] not free -[visit_exp (ref^n{ref <- `ref*`} = $elem(z, y).`REFS`_eleminst{`ref*#19`}[i!`%`_num_{i#40932}.0 : n])] +[visit_exp (ref^n{ref <- `ref*`} = $elem(z, y).`REFS`_eleminst[i!`%`_num_.0 : n])] [visit_exp ref^n{ref <- `ref*`}] [scope_enter ref] [visit_exp ref] @@ -62216,58 +51270,40 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `ref*`] [visit_id ref*] not free [visit_id ref*] no dims -[visit_exp $elem(z, y).`REFS`_eleminst{`ref*#19`}[i!`%`_num_{i#40932}.0 : n]] -[visit_exp $elem(z, y).`REFS`_eleminst{`ref*#19`}] +[visit_exp $elem(z, y).`REFS`_eleminst[i!`%`_num_.0 : n]] +[visit_exp $elem(z, y).`REFS`_eleminst] [visit_exp $elem(z, y)] [visit_exp z] [visit_id z] not free [visit_exp y] [visit_id y] not free -[visit_exp `ref*#19`] -[visit_id ref*#19] -[visit_exp i!`%`_num_{i#40932}.0] -[visit_exp i!`%`_num_{i#40932}] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#40932] -[visit_id i#40932] [visit_exp n] [visit_id n] not free -[check_dims] byte*#1875 dataidx#27 fieldtype#43 i i#40970 i#41024 instr*#1902 mut mut?#1121 n numtype#381 numtype#383 state#1787 storagetype#659 typeidx#1587 x y z zt -[visit_exp `%;%`_config{state#1787, `instr*#1902`}(z, [`CONST`_instr{numtype#381}(`I32`_numtype, i) `CONST`_instr{numtype#383}(`I32`_numtype, `%`_num_{i#40970}(n)) `ARRAY.NEW_DATA`_instr{typeidx#1587, dataidx#27}(x, y)])] -[visit_exp state#1787] -[visit_id state#1787] -[visit_exp `instr*#1902`] -[visit_id instr*#1902] -[visit_exp (z, [`CONST`_instr{numtype#381}(`I32`_numtype, i) `CONST`_instr{numtype#383}(`I32`_numtype, `%`_num_{i#40970}(n)) `ARRAY.NEW_DATA`_instr{typeidx#1587, dataidx#27}(x, y)])] +[check_dims] i mut n x y z zt +[visit_exp `%;%`_config(z, [`CONST`_instr(`I32`_numtype, i) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.NEW_DATA`_instr(x, y)])] +[visit_exp (z, [`CONST`_instr(`I32`_numtype, i) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.NEW_DATA`_instr(x, y)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#381}(`I32`_numtype, i) `CONST`_instr{numtype#383}(`I32`_numtype, `%`_num_{i#40970}(n)) `ARRAY.NEW_DATA`_instr{typeidx#1587, dataidx#27}(x, y)]] -[visit_exp `CONST`_instr{numtype#381}(`I32`_numtype, i)] -[visit_exp numtype#381] -[visit_id numtype#381] +[visit_exp [`CONST`_instr(`I32`_numtype, i) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.NEW_DATA`_instr(x, y)]] +[visit_exp `CONST`_instr(`I32`_numtype, i)] [visit_exp (`I32`_numtype, i)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp i] [visit_id i] -[visit_exp `CONST`_instr{numtype#383}(`I32`_numtype, `%`_num_{i#40970}(n))] -[visit_exp numtype#383] -[visit_id numtype#383] -[visit_exp (`I32`_numtype, `%`_num_{i#40970}(n))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] +[visit_exp (`I32`_numtype, `%`_num_(n))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#40970}(n)] -[visit_exp i#40970] -[visit_id i#40970] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `ARRAY.NEW_DATA`_instr{typeidx#1587, dataidx#27}(x, y)] -[visit_exp typeidx#1587] -[visit_id typeidx#1587] -[visit_exp dataidx#27] -[visit_id dataidx#27] +[visit_exp `ARRAY.NEW_DATA`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] @@ -62276,21 +51312,15 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[visit_exp ($type(z, x), `ARRAY`_comptype{fieldtype#43}(`%%`_fieldtype{`mut?#1121`, storagetype#659}(mut?{mut <- `mut?`}, zt)))] +[visit_exp ($type(z, x), `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)))] [visit_exp $type(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `ARRAY`_comptype{fieldtype#43}(`%%`_fieldtype{`mut?#1121`, storagetype#659}(mut?{mut <- `mut?`}, zt))] -[visit_exp fieldtype#43] -[visit_id fieldtype#43] -[visit_exp (`%%`_fieldtype{`mut?#1121`, storagetype#659}(mut?{mut <- `mut?`}, zt))] -[visit_exp `%%`_fieldtype{`mut?#1121`, storagetype#659}(mut?{mut <- `mut?`}, zt)] -[visit_exp `mut?#1121`] -[visit_id mut?#1121] -[visit_exp storagetype#659] -[visit_id storagetype#659] +[visit_exp `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] +[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] +[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)] [visit_exp (mut?{mut <- `mut?`}, zt)] [visit_exp mut?{mut <- `mut?`}] [scope_enter mut] @@ -62303,14 +51333,12 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id mut?] [visit_exp zt] [visit_id zt] -[visit_exp ((i!`%`_num_{i#41024}.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).`BYTES`_datainst{`byte*#1875`}|)] -[visit_exp (i!`%`_num_{i#41024}.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] -[visit_exp i!`%`_num_{i#41024}.0] -[visit_exp i!`%`_num_{i#41024}] +[visit_exp ((i!`%`_num_.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).`BYTES`_datainst|)] +[visit_exp (i!`%`_num_.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#41024] -[visit_id i#41024] [visit_exp ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] [visit_exp (((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat))] [visit_exp ((n * $zsize(zt)) : nat <:> rat)] @@ -62322,56 +51350,40 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id zt] not free [visit_exp (8 : nat <:> rat)] [visit_exp 8] -[visit_exp |$data(z, y).`BYTES`_datainst{`byte*#1875`}|] -[visit_exp $data(z, y).`BYTES`_datainst{`byte*#1875`}] +[visit_exp |$data(z, y).`BYTES`_datainst|] +[visit_exp $data(z, y).`BYTES`_datainst] [visit_exp $data(z, y)] [visit_exp z] [visit_id z] not free [visit_exp y] [visit_id y] not free -[visit_exp `byte*#1875`] -[visit_id byte*#1875] -[check_dims] byte*#1876 c dataidx#29 fieldtype#45 i i#41074 i#41140 i#41174 instr*#1914 mut mut?#1133 n numtype#385 numtype#387 state#1799 storagetype#671 typeidx#1589 typeidx#1591 u32#33 x y z zt -[visit_exp `%;%`_config{state#1799, `instr*#1914`}(z, [`CONST`_instr{numtype#385}(`I32`_numtype, i) `CONST`_instr{numtype#387}(`I32`_numtype, `%`_num_{i#41074}(n)) `ARRAY.NEW_DATA`_instr{typeidx#1589, dataidx#29}(x, y)])] -[visit_exp state#1799] -[visit_id state#1799] -[visit_exp `instr*#1914`] -[visit_id instr*#1914] -[visit_exp (z, [`CONST`_instr{numtype#385}(`I32`_numtype, i) `CONST`_instr{numtype#387}(`I32`_numtype, `%`_num_{i#41074}(n)) `ARRAY.NEW_DATA`_instr{typeidx#1589, dataidx#29}(x, y)])] +[check_dims] c i mut n x y z zt +[visit_exp `%;%`_config(z, [`CONST`_instr(`I32`_numtype, i) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.NEW_DATA`_instr(x, y)])] +[visit_exp (z, [`CONST`_instr(`I32`_numtype, i) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.NEW_DATA`_instr(x, y)])] [visit_exp z] [visit_id z] -[visit_exp [`CONST`_instr{numtype#385}(`I32`_numtype, i) `CONST`_instr{numtype#387}(`I32`_numtype, `%`_num_{i#41074}(n)) `ARRAY.NEW_DATA`_instr{typeidx#1589, dataidx#29}(x, y)]] -[visit_exp `CONST`_instr{numtype#385}(`I32`_numtype, i)] -[visit_exp numtype#385] -[visit_id numtype#385] +[visit_exp [`CONST`_instr(`I32`_numtype, i) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.NEW_DATA`_instr(x, y)]] +[visit_exp `CONST`_instr(`I32`_numtype, i)] [visit_exp (`I32`_numtype, i)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp i] [visit_id i] -[visit_exp `CONST`_instr{numtype#387}(`I32`_numtype, `%`_num_{i#41074}(n))] -[visit_exp numtype#387] -[visit_id numtype#387] -[visit_exp (`I32`_numtype, `%`_num_{i#41074}(n))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] +[visit_exp (`I32`_numtype, `%`_num_(n))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#41074}(n)] -[visit_exp i#41074] -[visit_id i#41074] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `ARRAY.NEW_DATA`_instr{typeidx#1589, dataidx#29}(x, y)] -[visit_exp typeidx#1589] -[visit_id typeidx#1589] -[visit_exp dataidx#29] -[visit_id dataidx#29] +[visit_exp `ARRAY.NEW_DATA`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] [visit_exp y] [visit_id y] -[visit_exp $const($cunpack(zt), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [`ARRAY.NEW_FIXED`_instr{typeidx#1591, u32#33}(x, `%`_u32{i#41140}(n))]] +[visit_exp $const($cunpack(zt), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]] [visit_exp $const($cunpack(zt), $cunpacknum_(zt, c))^n{c <- `c*`}] [scope_enter c] [visit_exp $const($cunpack(zt), $cunpacknum_(zt, c))] @@ -62390,36 +51402,24 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `c*`] [visit_id c*] no dims [visit_id c*] -[visit_exp [`ARRAY.NEW_FIXED`_instr{typeidx#1591, u32#33}(x, `%`_u32{i#41140}(n))]] -[visit_exp `ARRAY.NEW_FIXED`_instr{typeidx#1591, u32#33}(x, `%`_u32{i#41140}(n))] -[visit_exp typeidx#1591] -[visit_id typeidx#1591] -[visit_exp u32#33] -[visit_id u32#33] -[visit_exp (x, `%`_u32{i#41140}(n))] -[visit_exp x] -[visit_id x] not free -[visit_exp `%`_u32{i#41140}(n)] -[visit_exp i#41140] -[visit_id i#41140] +[visit_exp [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]] +[visit_exp `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))] +[visit_exp (x, `%`_u32(n))] +[visit_exp x] +[visit_id x] not free +[visit_exp `%`_u32(n)] [visit_exp (n)] [visit_exp n] [visit_id n] not free -[visit_exp ($type(z, x), `ARRAY`_comptype{fieldtype#45}(`%%`_fieldtype{`mut?#1133`, storagetype#671}(mut?{mut <- `mut?`}, zt)))] +[visit_exp ($type(z, x), `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)))] [visit_exp $type(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `ARRAY`_comptype{fieldtype#45}(`%%`_fieldtype{`mut?#1133`, storagetype#671}(mut?{mut <- `mut?`}, zt))] -[visit_exp fieldtype#45] -[visit_id fieldtype#45] -[visit_exp (`%%`_fieldtype{`mut?#1133`, storagetype#671}(mut?{mut <- `mut?`}, zt))] -[visit_exp `%%`_fieldtype{`mut?#1133`, storagetype#671}(mut?{mut <- `mut?`}, zt)] -[visit_exp `mut?#1133`] -[visit_id mut?#1133] -[visit_exp storagetype#671] -[visit_id storagetype#671] +[visit_exp `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] +[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] +[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)] [visit_exp (mut?{mut <- `mut?`}, zt)] [visit_exp mut?{mut <- `mut?`}] [scope_enter mut] @@ -62432,7 +51432,7 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id mut?] [visit_exp zt] [visit_id zt] not free -[visit_exp ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).`BYTES`_datainst{`byte*#1876`}[i!`%`_num_{i#41174}.0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)])] +[visit_exp ($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)])] [visit_exp $concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] [visit_exp $zbytes_(zt, c)^n{c <- `c*`}] [scope_enter c] @@ -62456,21 +51456,17 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id zt] not free [visit_exp (8 : nat <:> rat)] [visit_exp 8] -[visit_exp $data(z, y).`BYTES`_datainst{`byte*#1876`}[i!`%`_num_{i#41174}.0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]] -[visit_exp $data(z, y).`BYTES`_datainst{`byte*#1876`}] +[visit_exp $data(z, y).`BYTES`_datainst[i!`%`_num_.0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]] +[visit_exp $data(z, y).`BYTES`_datainst] [visit_exp $data(z, y)] [visit_exp z] [visit_id z] not free [visit_exp y] [visit_id y] not free -[visit_exp `byte*#1876`] -[visit_id byte*#1876] -[visit_exp i!`%`_num_{i#41174}.0] -[visit_exp i!`%`_num_{i#41174}] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#41174] -[visit_id i#41174] [visit_exp ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] [visit_exp (((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat))] [visit_exp ((n * $zsize(zt)) : nat <:> rat)] @@ -62482,35 +51478,23 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id zt] not free [visit_exp (8 : nat <:> rat)] [visit_exp 8] -[check_dims] heaptype#1433 ht i instr*#1926 numtype#389 state#1811 sx sx?#17 typeidx#1593 x z -[visit_exp `%;%`_config{state#1811, `instr*#1926`}(z, [`REF.NULL`_instr{heaptype#1433}(ht) `CONST`_instr{numtype#389}(`I32`_numtype, i) `ARRAY.GET`_instr{`sx?#17`, typeidx#1593}(sx?{sx <- `sx?`}, x)])] -[visit_exp state#1811] -[visit_id state#1811] -[visit_exp `instr*#1926`] -[visit_id instr*#1926] -[visit_exp (z, [`REF.NULL`_instr{heaptype#1433}(ht) `CONST`_instr{numtype#389}(`I32`_numtype, i) `ARRAY.GET`_instr{`sx?#17`, typeidx#1593}(sx?{sx <- `sx?`}, x)])] +[check_dims] ht i sx x z +[visit_exp `%;%`_config(z, [`REF.NULL`_instr(ht) `CONST`_instr(`I32`_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])] +[visit_exp (z, [`REF.NULL`_instr(ht) `CONST`_instr(`I32`_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])] [visit_exp z] [visit_id z] -[visit_exp [`REF.NULL`_instr{heaptype#1433}(ht) `CONST`_instr{numtype#389}(`I32`_numtype, i) `ARRAY.GET`_instr{`sx?#17`, typeidx#1593}(sx?{sx <- `sx?`}, x)]] -[visit_exp `REF.NULL`_instr{heaptype#1433}(ht)] -[visit_exp heaptype#1433] -[visit_id heaptype#1433] +[visit_exp [`REF.NULL`_instr(ht) `CONST`_instr(`I32`_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]] +[visit_exp `REF.NULL`_instr(ht)] [visit_exp (ht)] [visit_exp ht] [visit_id ht] -[visit_exp `CONST`_instr{numtype#389}(`I32`_numtype, i)] -[visit_exp numtype#389] -[visit_id numtype#389] +[visit_exp `CONST`_instr(`I32`_numtype, i)] [visit_exp (`I32`_numtype, i)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp i] [visit_id i] -[visit_exp `ARRAY.GET`_instr{`sx?#17`, typeidx#1593}(sx?{sx <- `sx?`}, x)] -[visit_exp `sx?#17`] -[visit_id sx?#17] -[visit_exp typeidx#1593] -[visit_id typeidx#1593] +[visit_exp `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)] [visit_exp (sx?{sx <- `sx?`}, x)] [visit_exp sx?{sx <- `sx?`}] [scope_enter sx] @@ -62526,35 +51510,23 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[check_dims] a arrayaddr#5 fieldval*#6 i i#41392 instr*#1938 numtype#391 state#1823 sx sx?#19 typeidx#1595 x z -[visit_exp `%;%`_config{state#1823, `instr*#1938`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#5}(a) `CONST`_instr{numtype#391}(`I32`_numtype, i) `ARRAY.GET`_instr{`sx?#19`, typeidx#1595}(sx?{sx <- `sx?`}, x)])] -[visit_exp state#1823] -[visit_id state#1823] -[visit_exp `instr*#1938`] -[visit_id instr*#1938] -[visit_exp (z, [`REF.ARRAY_ADDR`_instr{arrayaddr#5}(a) `CONST`_instr{numtype#391}(`I32`_numtype, i) `ARRAY.GET`_instr{`sx?#19`, typeidx#1595}(sx?{sx <- `sx?`}, x)])] +[check_dims] a i sx x z +[visit_exp `%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `CONST`_instr(`I32`_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])] +[visit_exp (z, [`REF.ARRAY_ADDR`_instr(a) `CONST`_instr(`I32`_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])] [visit_exp z] [visit_id z] -[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#5}(a) `CONST`_instr{numtype#391}(`I32`_numtype, i) `ARRAY.GET`_instr{`sx?#19`, typeidx#1595}(sx?{sx <- `sx?`}, x)]] -[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#5}(a)] -[visit_exp arrayaddr#5] -[visit_id arrayaddr#5] +[visit_exp [`REF.ARRAY_ADDR`_instr(a) `CONST`_instr(`I32`_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]] +[visit_exp `REF.ARRAY_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] -[visit_exp `CONST`_instr{numtype#391}(`I32`_numtype, i)] -[visit_exp numtype#391] -[visit_id numtype#391] +[visit_exp `CONST`_instr(`I32`_numtype, i)] [visit_exp (`I32`_numtype, i)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp i] [visit_id i] -[visit_exp `ARRAY.GET`_instr{`sx?#19`, typeidx#1595}(sx?{sx <- `sx?`}, x)] -[visit_exp `sx?#19`] -[visit_id sx?#19] -[visit_exp typeidx#1595] -[visit_id typeidx#1595] +[visit_exp `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)] [visit_exp (sx?{sx <- `sx?`}, x)] [visit_exp sx?{sx <- `sx?`}] [scope_enter sx] @@ -62570,52 +51542,36 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[visit_exp (i!`%`_num_{i#41392}.0 >= |$arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#6`}|)] -[visit_exp i!`%`_num_{i#41392}.0] -[visit_exp i!`%`_num_{i#41392}] +[visit_exp (i!`%`_num_.0 >= |$arrayinst(z)[a].`FIELDS`_arrayinst|)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#41392] -[visit_id i#41392] -[visit_exp |$arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#6`}|] -[visit_exp $arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#6`}] +[visit_exp |$arrayinst(z)[a].`FIELDS`_arrayinst|] +[visit_exp $arrayinst(z)[a].`FIELDS`_arrayinst] [visit_exp $arrayinst(z)[a]] [visit_exp $arrayinst(z)] [visit_exp z] [visit_id z] not free [visit_exp a] [visit_id a] not free -[visit_exp `fieldval*#6`] -[visit_id fieldval*#6] -[check_dims] a arrayaddr#7 fieldtype#47 fieldval*#7 i i#41467 instr*#1950 mut mut?#1145 numtype#393 state#1835 storagetype#683 sx sx?#21 typeidx#1597 x z zt -[visit_exp `%;%`_config{state#1835, `instr*#1950`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#7}(a) `CONST`_instr{numtype#393}(`I32`_numtype, i) `ARRAY.GET`_instr{`sx?#21`, typeidx#1597}(sx?{sx <- `sx?`}, x)])] -[visit_exp state#1835] -[visit_id state#1835] -[visit_exp `instr*#1950`] -[visit_id instr*#1950] -[visit_exp (z, [`REF.ARRAY_ADDR`_instr{arrayaddr#7}(a) `CONST`_instr{numtype#393}(`I32`_numtype, i) `ARRAY.GET`_instr{`sx?#21`, typeidx#1597}(sx?{sx <- `sx?`}, x)])] +[check_dims] a i mut sx x z zt +[visit_exp `%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `CONST`_instr(`I32`_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])] +[visit_exp (z, [`REF.ARRAY_ADDR`_instr(a) `CONST`_instr(`I32`_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])] [visit_exp z] [visit_id z] -[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#7}(a) `CONST`_instr{numtype#393}(`I32`_numtype, i) `ARRAY.GET`_instr{`sx?#21`, typeidx#1597}(sx?{sx <- `sx?`}, x)]] -[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#7}(a)] -[visit_exp arrayaddr#7] -[visit_id arrayaddr#7] +[visit_exp [`REF.ARRAY_ADDR`_instr(a) `CONST`_instr(`I32`_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]] +[visit_exp `REF.ARRAY_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] -[visit_exp `CONST`_instr{numtype#393}(`I32`_numtype, i)] -[visit_exp numtype#393] -[visit_id numtype#393] +[visit_exp `CONST`_instr(`I32`_numtype, i)] [visit_exp (`I32`_numtype, i)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp i] [visit_id i] -[visit_exp `ARRAY.GET`_instr{`sx?#21`, typeidx#1597}(sx?{sx <- `sx?`}, x)] -[visit_exp `sx?#21`] -[visit_id sx?#21] -[visit_exp typeidx#1597] -[visit_id typeidx#1597] +[visit_exp `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)] [visit_exp (sx?{sx <- `sx?`}, x)] [visit_exp sx?{sx <- `sx?`}] [scope_enter sx] @@ -62628,9 +51584,9 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id sx?] [visit_exp x] [visit_id x] -[visit_exp [($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#7`}[i!`%`_num_{i#41467}.0]) : val <: instr)]] -[visit_exp ($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#7`}[i!`%`_num_{i#41467}.0]) : val <: instr)] -[visit_exp $unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#7`}[i!`%`_num_{i#41467}.0])] +[visit_exp [($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].`FIELDS`_arrayinst[i!`%`_num_.0]) : val <: instr)]] +[visit_exp ($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].`FIELDS`_arrayinst[i!`%`_num_.0]) : val <: instr)] +[visit_exp $unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].`FIELDS`_arrayinst[i!`%`_num_.0])] [visit_exp zt] [visit_id zt] [visit_exp sx?{sx <- `sx?`}] @@ -62642,37 +51598,27 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `sx?`] [visit_id sx?] not free [visit_id sx?] no dims -[visit_exp $arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#7`}[i!`%`_num_{i#41467}.0]] -[visit_exp $arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#7`}] +[visit_exp $arrayinst(z)[a].`FIELDS`_arrayinst[i!`%`_num_.0]] +[visit_exp $arrayinst(z)[a].`FIELDS`_arrayinst] [visit_exp $arrayinst(z)[a]] [visit_exp $arrayinst(z)] [visit_exp z] [visit_id z] not free [visit_exp a] [visit_id a] not free -[visit_exp `fieldval*#7`] -[visit_id fieldval*#7] -[visit_exp i!`%`_num_{i#41467}.0] -[visit_exp i!`%`_num_{i#41467}] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#41467] -[visit_id i#41467] -[visit_exp ($type(z, x), `ARRAY`_comptype{fieldtype#47}(`%%`_fieldtype{`mut?#1145`, storagetype#683}(mut?{mut <- `mut?`}, zt)))] +[visit_exp ($type(z, x), `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)))] [visit_exp $type(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `ARRAY`_comptype{fieldtype#47}(`%%`_fieldtype{`mut?#1145`, storagetype#683}(mut?{mut <- `mut?`}, zt))] -[visit_exp fieldtype#47] -[visit_id fieldtype#47] -[visit_exp (`%%`_fieldtype{`mut?#1145`, storagetype#683}(mut?{mut <- `mut?`}, zt))] -[visit_exp `%%`_fieldtype{`mut?#1145`, storagetype#683}(mut?{mut <- `mut?`}, zt)] -[visit_exp `mut?#1145`] -[visit_id mut?#1145] -[visit_exp storagetype#683] -[visit_id storagetype#683] +[visit_exp `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] +[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] +[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)] [visit_exp (mut?{mut <- `mut?`}, zt)] [visit_exp mut?{mut <- `mut?`}] [scope_enter mut] @@ -62685,25 +51631,17 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id mut?] [visit_exp zt] [visit_id zt] not free -[check_dims] heaptype#1435 ht i instr*#1962 instr*#1974 numtype#395 state#1847 state#1859 typeidx#1599 val x z -[visit_exp `%;%`_config{state#1847, `instr*#1962`}(z, [`REF.NULL`_instr{heaptype#1435}(ht) `CONST`_instr{numtype#395}(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr{typeidx#1599}(x)])] -[visit_exp state#1847] -[visit_id state#1847] -[visit_exp `instr*#1962`] -[visit_id instr*#1962] -[visit_exp (z, [`REF.NULL`_instr{heaptype#1435}(ht) `CONST`_instr{numtype#395}(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr{typeidx#1599}(x)])] +[check_dims] ht i val x z +[visit_exp `%;%`_config(z, [`REF.NULL`_instr(ht) `CONST`_instr(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)])] +[visit_exp (z, [`REF.NULL`_instr(ht) `CONST`_instr(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)])] [visit_exp z] [visit_id z] -[visit_exp [`REF.NULL`_instr{heaptype#1435}(ht) `CONST`_instr{numtype#395}(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr{typeidx#1599}(x)]] -[visit_exp `REF.NULL`_instr{heaptype#1435}(ht)] -[visit_exp heaptype#1435] -[visit_id heaptype#1435] +[visit_exp [`REF.NULL`_instr(ht) `CONST`_instr(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]] +[visit_exp `REF.NULL`_instr(ht)] [visit_exp (ht)] [visit_exp ht] [visit_id ht] -[visit_exp `CONST`_instr{numtype#395}(`I32`_numtype, i)] -[visit_exp numtype#395] -[visit_id numtype#395] +[visit_exp `CONST`_instr(`I32`_numtype, i)] [visit_exp (`I32`_numtype, i)] [visit_exp `I32`_numtype] [visit_exp ()] @@ -62712,42 +51650,28 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp (val : val <: instr)] [visit_exp val] [visit_id val] -[visit_exp `ARRAY.SET`_instr{typeidx#1599}(x)] -[visit_exp typeidx#1599] -[visit_id typeidx#1599] +[visit_exp `ARRAY.SET`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%;%`_config{state#1859, `instr*#1974`}(z, [`TRAP`_instr])] -[visit_exp state#1859] -[visit_id state#1859] -[visit_exp `instr*#1974`] -[visit_id instr*#1974] +[visit_exp `%;%`_config(z, [`TRAP`_instr])] [visit_exp (z, [`TRAP`_instr])] [visit_exp z] [visit_id z] not free [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[check_dims] a arrayaddr#9 fieldval*#8 i i#41549 instr*#1986 instr*#1998 numtype#397 state#1871 state#1883 typeidx#1601 val x z -[visit_exp `%;%`_config{state#1871, `instr*#1986`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#9}(a) `CONST`_instr{numtype#397}(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr{typeidx#1601}(x)])] -[visit_exp state#1871] -[visit_id state#1871] -[visit_exp `instr*#1986`] -[visit_id instr*#1986] -[visit_exp (z, [`REF.ARRAY_ADDR`_instr{arrayaddr#9}(a) `CONST`_instr{numtype#397}(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr{typeidx#1601}(x)])] +[check_dims] a i val x z +[visit_exp `%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `CONST`_instr(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)])] +[visit_exp (z, [`REF.ARRAY_ADDR`_instr(a) `CONST`_instr(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)])] [visit_exp z] [visit_id z] -[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#9}(a) `CONST`_instr{numtype#397}(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr{typeidx#1601}(x)]] -[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#9}(a)] -[visit_exp arrayaddr#9] -[visit_id arrayaddr#9] +[visit_exp [`REF.ARRAY_ADDR`_instr(a) `CONST`_instr(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]] +[visit_exp `REF.ARRAY_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] -[visit_exp `CONST`_instr{numtype#397}(`I32`_numtype, i)] -[visit_exp numtype#397] -[visit_id numtype#397] +[visit_exp `CONST`_instr(`I32`_numtype, i)] [visit_exp (`I32`_numtype, i)] [visit_exp `I32`_numtype] [visit_exp ()] @@ -62756,59 +51680,41 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp (val : val <: instr)] [visit_exp val] [visit_id val] -[visit_exp `ARRAY.SET`_instr{typeidx#1601}(x)] -[visit_exp typeidx#1601] -[visit_id typeidx#1601] +[visit_exp `ARRAY.SET`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%;%`_config{state#1883, `instr*#1998`}(z, [`TRAP`_instr])] -[visit_exp state#1883] -[visit_id state#1883] -[visit_exp `instr*#1998`] -[visit_id instr*#1998] +[visit_exp `%;%`_config(z, [`TRAP`_instr])] [visit_exp (z, [`TRAP`_instr])] [visit_exp z] [visit_id z] not free [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[visit_exp (i!`%`_num_{i#41549}.0 >= |$arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#8`}|)] -[visit_exp i!`%`_num_{i#41549}.0] -[visit_exp i!`%`_num_{i#41549}] +[visit_exp (i!`%`_num_.0 >= |$arrayinst(z)[a].`FIELDS`_arrayinst|)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#41549] -[visit_id i#41549] -[visit_exp |$arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#8`}|] -[visit_exp $arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#8`}] +[visit_exp |$arrayinst(z)[a].`FIELDS`_arrayinst|] +[visit_exp $arrayinst(z)[a].`FIELDS`_arrayinst] [visit_exp $arrayinst(z)[a]] [visit_exp $arrayinst(z)] [visit_exp z] [visit_id z] not free [visit_exp a] [visit_id a] not free -[visit_exp `fieldval*#8`] -[visit_id fieldval*#8] -[check_dims] a arrayaddr#11 fieldtype#49 i i#41587 instr*#2010 instr*#2022 mut mut?#1157 numtype#399 state#1895 state#1907 storagetype#695 typeidx#1603 val x z zt -[visit_exp `%;%`_config{state#1895, `instr*#2010`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#11}(a) `CONST`_instr{numtype#399}(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr{typeidx#1603}(x)])] -[visit_exp state#1895] -[visit_id state#1895] -[visit_exp `instr*#2010`] -[visit_id instr*#2010] -[visit_exp (z, [`REF.ARRAY_ADDR`_instr{arrayaddr#11}(a) `CONST`_instr{numtype#399}(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr{typeidx#1603}(x)])] +[check_dims] a i mut val x z zt +[visit_exp `%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `CONST`_instr(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)])] +[visit_exp (z, [`REF.ARRAY_ADDR`_instr(a) `CONST`_instr(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)])] [visit_exp z] [visit_id z] -[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#11}(a) `CONST`_instr{numtype#399}(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr{typeidx#1603}(x)]] -[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#11}(a)] -[visit_exp arrayaddr#11] -[visit_id arrayaddr#11] +[visit_exp [`REF.ARRAY_ADDR`_instr(a) `CONST`_instr(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]] +[visit_exp `REF.ARRAY_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] -[visit_exp `CONST`_instr{numtype#399}(`I32`_numtype, i)] -[visit_exp numtype#399] -[visit_id numtype#399] +[visit_exp `CONST`_instr(`I32`_numtype, i)] [visit_exp (`I32`_numtype, i)] [visit_exp `I32`_numtype] [visit_exp ()] @@ -62817,50 +51723,36 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp (val : val <: instr)] [visit_exp val] [visit_id val] -[visit_exp `ARRAY.SET`_instr{typeidx#1603}(x)] -[visit_exp typeidx#1603] -[visit_id typeidx#1603] +[visit_exp `ARRAY.SET`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%;%`_config{state#1907, `instr*#2022`}($with_array(z, a, i!`%`_num_{i#41587}.0, $packfield_(zt, val)), [])] -[visit_exp state#1907] -[visit_id state#1907] -[visit_exp `instr*#2022`] -[visit_id instr*#2022] -[visit_exp ($with_array(z, a, i!`%`_num_{i#41587}.0, $packfield_(zt, val)), [])] -[visit_exp $with_array(z, a, i!`%`_num_{i#41587}.0, $packfield_(zt, val))] +[visit_exp `%;%`_config($with_array(z, a, i!`%`_num_.0, $packfield_(zt, val)), [])] +[visit_exp ($with_array(z, a, i!`%`_num_.0, $packfield_(zt, val)), [])] +[visit_exp $with_array(z, a, i!`%`_num_.0, $packfield_(zt, val))] [visit_exp z] [visit_id z] not free [visit_exp a] [visit_id a] not free -[visit_exp i!`%`_num_{i#41587}.0] -[visit_exp i!`%`_num_{i#41587}] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#41587] -[visit_id i#41587] [visit_exp $packfield_(zt, val)] [visit_exp zt] [visit_id zt] [visit_exp val] [visit_id val] not free [visit_exp []] -[visit_exp ($type(z, x), `ARRAY`_comptype{fieldtype#49}(`%%`_fieldtype{`mut?#1157`, storagetype#695}(mut?{mut <- `mut?`}, zt)))] +[visit_exp ($type(z, x), `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)))] [visit_exp $type(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `ARRAY`_comptype{fieldtype#49}(`%%`_fieldtype{`mut?#1157`, storagetype#695}(mut?{mut <- `mut?`}, zt))] -[visit_exp fieldtype#49] -[visit_id fieldtype#49] -[visit_exp (`%%`_fieldtype{`mut?#1157`, storagetype#695}(mut?{mut <- `mut?`}, zt))] -[visit_exp `%%`_fieldtype{`mut?#1157`, storagetype#695}(mut?{mut <- `mut?`}, zt)] -[visit_exp `mut?#1157`] -[visit_id mut?#1157] -[visit_exp storagetype#695] -[visit_id storagetype#695] +[visit_exp `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] +[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] +[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)] [visit_exp (mut?{mut <- `mut?`}, zt)] [visit_exp mut?{mut <- `mut?`}] [scope_enter mut] @@ -62873,19 +51765,13 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id mut?] [visit_exp zt] [visit_id zt] not free -[check_dims] heaptype#1437 ht instr*#2034 state#1919 z -[visit_exp `%;%`_config{state#1919, `instr*#2034`}(z, [`REF.NULL`_instr{heaptype#1437}(ht) `ARRAY.LEN`_instr])] -[visit_exp state#1919] -[visit_id state#1919] -[visit_exp `instr*#2034`] -[visit_id instr*#2034] -[visit_exp (z, [`REF.NULL`_instr{heaptype#1437}(ht) `ARRAY.LEN`_instr])] +[check_dims] ht z +[visit_exp `%;%`_config(z, [`REF.NULL`_instr(ht) `ARRAY.LEN`_instr])] +[visit_exp (z, [`REF.NULL`_instr(ht) `ARRAY.LEN`_instr])] [visit_exp z] [visit_id z] -[visit_exp [`REF.NULL`_instr{heaptype#1437}(ht) `ARRAY.LEN`_instr]] -[visit_exp `REF.NULL`_instr{heaptype#1437}(ht)] -[visit_exp heaptype#1437] -[visit_id heaptype#1437] +[visit_exp [`REF.NULL`_instr(ht) `ARRAY.LEN`_instr]] +[visit_exp `REF.NULL`_instr(ht)] [visit_exp (ht)] [visit_exp ht] [visit_id ht] @@ -62894,64 +51780,44 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[check_dims] a arrayaddr#13 fieldval*#9 i#41621 instr*#2046 numtype#401 state#1931 z -[visit_exp `%;%`_config{state#1931, `instr*#2046`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#13}(a) `ARRAY.LEN`_instr])] -[visit_exp state#1931] -[visit_id state#1931] -[visit_exp `instr*#2046`] -[visit_id instr*#2046] -[visit_exp (z, [`REF.ARRAY_ADDR`_instr{arrayaddr#13}(a) `ARRAY.LEN`_instr])] +[check_dims] a z +[visit_exp `%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr])] +[visit_exp (z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr])] [visit_exp z] [visit_id z] -[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#13}(a) `ARRAY.LEN`_instr]] -[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#13}(a)] -[visit_exp arrayaddr#13] -[visit_id arrayaddr#13] +[visit_exp [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr]] +[visit_exp `REF.ARRAY_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] [visit_exp `ARRAY.LEN`_instr] [visit_exp ()] -[visit_exp [`CONST`_instr{numtype#401}(`I32`_numtype, `%`_num_{i#41621}(|$arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#9`}|))]] -[visit_exp `CONST`_instr{numtype#401}(`I32`_numtype, `%`_num_{i#41621}(|$arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#9`}|))] -[visit_exp numtype#401] -[visit_id numtype#401] -[visit_exp (`I32`_numtype, `%`_num_{i#41621}(|$arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#9`}|))] +[visit_exp [`CONST`_instr(`I32`_numtype, `%`_num_(|$arrayinst(z)[a].`FIELDS`_arrayinst|))]] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(|$arrayinst(z)[a].`FIELDS`_arrayinst|))] +[visit_exp (`I32`_numtype, `%`_num_(|$arrayinst(z)[a].`FIELDS`_arrayinst|))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#41621}(|$arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#9`}|)] -[visit_exp i#41621] -[visit_id i#41621] -[visit_exp (|$arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#9`}|)] -[visit_exp |$arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#9`}|] -[visit_exp $arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#9`}] +[visit_exp `%`_num_(|$arrayinst(z)[a].`FIELDS`_arrayinst|)] +[visit_exp (|$arrayinst(z)[a].`FIELDS`_arrayinst|)] +[visit_exp |$arrayinst(z)[a].`FIELDS`_arrayinst|] +[visit_exp $arrayinst(z)[a].`FIELDS`_arrayinst] [visit_exp $arrayinst(z)[a]] [visit_exp $arrayinst(z)] [visit_exp z] [visit_id z] not free [visit_exp a] [visit_id a] not free -[visit_exp `fieldval*#9`] -[visit_id fieldval*#9] -[check_dims] heaptype#1439 ht i i#41659 instr*#2058 n numtype#403 numtype#405 state#1943 typeidx#1605 val x z -[visit_exp `%;%`_config{state#1943, `instr*#2058`}(z, [`REF.NULL`_instr{heaptype#1439}(ht) `CONST`_instr{numtype#403}(`I32`_numtype, i) (val : val <: instr) `CONST`_instr{numtype#405}(`I32`_numtype, `%`_num_{i#41659}(n)) `ARRAY.FILL`_instr{typeidx#1605}(x)])] -[visit_exp state#1943] -[visit_id state#1943] -[visit_exp `instr*#2058`] -[visit_id instr*#2058] -[visit_exp (z, [`REF.NULL`_instr{heaptype#1439}(ht) `CONST`_instr{numtype#403}(`I32`_numtype, i) (val : val <: instr) `CONST`_instr{numtype#405}(`I32`_numtype, `%`_num_{i#41659}(n)) `ARRAY.FILL`_instr{typeidx#1605}(x)])] +[check_dims] ht i n val x z +[visit_exp `%;%`_config(z, [`REF.NULL`_instr(ht) `CONST`_instr(`I32`_numtype, i) (val : val <: instr) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.FILL`_instr(x)])] +[visit_exp (z, [`REF.NULL`_instr(ht) `CONST`_instr(`I32`_numtype, i) (val : val <: instr) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.FILL`_instr(x)])] [visit_exp z] [visit_id z] -[visit_exp [`REF.NULL`_instr{heaptype#1439}(ht) `CONST`_instr{numtype#403}(`I32`_numtype, i) (val : val <: instr) `CONST`_instr{numtype#405}(`I32`_numtype, `%`_num_{i#41659}(n)) `ARRAY.FILL`_instr{typeidx#1605}(x)]] -[visit_exp `REF.NULL`_instr{heaptype#1439}(ht)] -[visit_exp heaptype#1439] -[visit_id heaptype#1439] +[visit_exp [`REF.NULL`_instr(ht) `CONST`_instr(`I32`_numtype, i) (val : val <: instr) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.FILL`_instr(x)]] +[visit_exp `REF.NULL`_instr(ht)] [visit_exp (ht)] [visit_exp ht] [visit_id ht] -[visit_exp `CONST`_instr{numtype#403}(`I32`_numtype, i)] -[visit_exp numtype#403] -[visit_id numtype#403] +[visit_exp `CONST`_instr(`I32`_numtype, i)] [visit_exp (`I32`_numtype, i)] [visit_exp `I32`_numtype] [visit_exp ()] @@ -62960,46 +51826,32 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp (val : val <: instr)] [visit_exp val] [visit_id val] -[visit_exp `CONST`_instr{numtype#405}(`I32`_numtype, `%`_num_{i#41659}(n))] -[visit_exp numtype#405] -[visit_id numtype#405] -[visit_exp (`I32`_numtype, `%`_num_{i#41659}(n))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] +[visit_exp (`I32`_numtype, `%`_num_(n))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#41659}(n)] -[visit_exp i#41659] -[visit_id i#41659] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `ARRAY.FILL`_instr{typeidx#1605}(x)] -[visit_exp typeidx#1605] -[visit_id typeidx#1605] +[visit_exp `ARRAY.FILL`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[check_dims] a arrayaddr#15 fieldval*#10 i i#41711 i#41739 instr*#2070 n numtype#407 numtype#409 state#1955 typeidx#1607 val x z -[visit_exp `%;%`_config{state#1955, `instr*#2070`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#15}(a) `CONST`_instr{numtype#407}(`I32`_numtype, i) (val : val <: instr) `CONST`_instr{numtype#409}(`I32`_numtype, `%`_num_{i#41711}(n)) `ARRAY.FILL`_instr{typeidx#1607}(x)])] -[visit_exp state#1955] -[visit_id state#1955] -[visit_exp `instr*#2070`] -[visit_id instr*#2070] -[visit_exp (z, [`REF.ARRAY_ADDR`_instr{arrayaddr#15}(a) `CONST`_instr{numtype#407}(`I32`_numtype, i) (val : val <: instr) `CONST`_instr{numtype#409}(`I32`_numtype, `%`_num_{i#41711}(n)) `ARRAY.FILL`_instr{typeidx#1607}(x)])] +[check_dims] a i n val x z +[visit_exp `%;%`_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)])] +[visit_exp (z, [`REF.ARRAY_ADDR`_instr(a) `CONST`_instr(`I32`_numtype, i) (val : val <: instr) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.FILL`_instr(x)])] [visit_exp z] [visit_id z] -[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#15}(a) `CONST`_instr{numtype#407}(`I32`_numtype, i) (val : val <: instr) `CONST`_instr{numtype#409}(`I32`_numtype, `%`_num_{i#41711}(n)) `ARRAY.FILL`_instr{typeidx#1607}(x)]] -[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#15}(a)] -[visit_exp arrayaddr#15] -[visit_id arrayaddr#15] +[visit_exp [`REF.ARRAY_ADDR`_instr(a) `CONST`_instr(`I32`_numtype, i) (val : val <: instr) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.FILL`_instr(x)]] +[visit_exp `REF.ARRAY_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] -[visit_exp `CONST`_instr{numtype#407}(`I32`_numtype, i)] -[visit_exp numtype#407] -[visit_id numtype#407] +[visit_exp `CONST`_instr(`I32`_numtype, i)] [visit_exp (`I32`_numtype, i)] [visit_exp `I32`_numtype] [visit_exp ()] @@ -63008,66 +51860,48 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp (val : val <: instr)] [visit_exp val] [visit_id val] -[visit_exp `CONST`_instr{numtype#409}(`I32`_numtype, `%`_num_{i#41711}(n))] -[visit_exp numtype#409] -[visit_id numtype#409] -[visit_exp (`I32`_numtype, `%`_num_{i#41711}(n))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] +[visit_exp (`I32`_numtype, `%`_num_(n))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#41711}(n)] -[visit_exp i#41711] -[visit_id i#41711] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `ARRAY.FILL`_instr{typeidx#1607}(x)] -[visit_exp typeidx#1607] -[visit_id typeidx#1607] +[visit_exp `ARRAY.FILL`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[visit_exp ((i!`%`_num_{i#41739}.0 + n) > |$arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#10`}|)] -[visit_exp (i!`%`_num_{i#41739}.0 + n)] -[visit_exp i!`%`_num_{i#41739}.0] -[visit_exp i!`%`_num_{i#41739}] +[visit_exp ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].`FIELDS`_arrayinst|)] +[visit_exp (i!`%`_num_.0 + n)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#41739] -[visit_id i#41739] [visit_exp n] [visit_id n] not free -[visit_exp |$arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#10`}|] -[visit_exp $arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#10`}] +[visit_exp |$arrayinst(z)[a].`FIELDS`_arrayinst|] +[visit_exp $arrayinst(z)[a].`FIELDS`_arrayinst] [visit_exp $arrayinst(z)[a]] [visit_exp $arrayinst(z)] [visit_exp z] [visit_id z] not free [visit_exp a] [visit_id a] not free -[visit_exp `fieldval*#10`] -[visit_id fieldval*#10] -[check_dims] a arrayaddr#17 i i#41777 instr*#2082 n numtype#411 numtype#413 state#1967 typeidx#1609 val x z -[visit_exp `%;%`_config{state#1967, `instr*#2082`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#17}(a) `CONST`_instr{numtype#411}(`I32`_numtype, i) (val : val <: instr) `CONST`_instr{numtype#413}(`I32`_numtype, `%`_num_{i#41777}(n)) `ARRAY.FILL`_instr{typeidx#1609}(x)])] -[visit_exp state#1967] -[visit_id state#1967] -[visit_exp `instr*#2082`] -[visit_id instr*#2082] -[visit_exp (z, [`REF.ARRAY_ADDR`_instr{arrayaddr#17}(a) `CONST`_instr{numtype#411}(`I32`_numtype, i) (val : val <: instr) `CONST`_instr{numtype#413}(`I32`_numtype, `%`_num_{i#41777}(n)) `ARRAY.FILL`_instr{typeidx#1609}(x)])] +[check_dims] a i n val x z +[visit_exp `%;%`_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)])] +[visit_exp (z, [`REF.ARRAY_ADDR`_instr(a) `CONST`_instr(`I32`_numtype, i) (val : val <: instr) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.FILL`_instr(x)])] [visit_exp z] [visit_id z] -[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#17}(a) `CONST`_instr{numtype#411}(`I32`_numtype, i) (val : val <: instr) `CONST`_instr{numtype#413}(`I32`_numtype, `%`_num_{i#41777}(n)) `ARRAY.FILL`_instr{typeidx#1609}(x)]] -[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#17}(a)] -[visit_exp arrayaddr#17] -[visit_id arrayaddr#17] +[visit_exp [`REF.ARRAY_ADDR`_instr(a) `CONST`_instr(`I32`_numtype, i) (val : val <: instr) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.FILL`_instr(x)]] +[visit_exp `REF.ARRAY_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] -[visit_exp `CONST`_instr{numtype#411}(`I32`_numtype, i)] -[visit_exp numtype#411] -[visit_id numtype#411] +[visit_exp `CONST`_instr(`I32`_numtype, i)] [visit_exp (`I32`_numtype, i)] [visit_exp `I32`_numtype] [visit_exp ()] @@ -63076,21 +51910,15 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp (val : val <: instr)] [visit_exp val] [visit_id val] -[visit_exp `CONST`_instr{numtype#413}(`I32`_numtype, `%`_num_{i#41777}(n))] -[visit_exp numtype#413] -[visit_id numtype#413] -[visit_exp (`I32`_numtype, `%`_num_{i#41777}(n))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] +[visit_exp (`I32`_numtype, `%`_num_(n))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#41777}(n)] -[visit_exp i#41777] -[visit_id i#41777] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `ARRAY.FILL`_instr{typeidx#1609}(x)] -[visit_exp typeidx#1609] -[visit_id typeidx#1609] +[visit_exp `ARRAY.FILL`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -63099,25 +51927,17 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp n] [visit_id n] not free [visit_exp 0] -[check_dims] a arrayaddr#19 arrayaddr#21 arrayaddr#23 i i#41829 i#41895 i#41905 i#41927 instr*#2094 n numtype#415 numtype#417 numtype#419 numtype#421 numtype#423 state#1979 typeidx#1611 typeidx#1613 typeidx#1615 val x z -[visit_exp `%;%`_config{state#1979, `instr*#2094`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#19}(a) `CONST`_instr{numtype#415}(`I32`_numtype, i) (val : val <: instr) `CONST`_instr{numtype#417}(`I32`_numtype, `%`_num_{i#41829}(n)) `ARRAY.FILL`_instr{typeidx#1611}(x)])] -[visit_exp state#1979] -[visit_id state#1979] -[visit_exp `instr*#2094`] -[visit_id instr*#2094] -[visit_exp (z, [`REF.ARRAY_ADDR`_instr{arrayaddr#19}(a) `CONST`_instr{numtype#415}(`I32`_numtype, i) (val : val <: instr) `CONST`_instr{numtype#417}(`I32`_numtype, `%`_num_{i#41829}(n)) `ARRAY.FILL`_instr{typeidx#1611}(x)])] +[check_dims] a i n val x z +[visit_exp `%;%`_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)])] +[visit_exp (z, [`REF.ARRAY_ADDR`_instr(a) `CONST`_instr(`I32`_numtype, i) (val : val <: instr) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.FILL`_instr(x)])] [visit_exp z] [visit_id z] -[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#19}(a) `CONST`_instr{numtype#415}(`I32`_numtype, i) (val : val <: instr) `CONST`_instr{numtype#417}(`I32`_numtype, `%`_num_{i#41829}(n)) `ARRAY.FILL`_instr{typeidx#1611}(x)]] -[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#19}(a)] -[visit_exp arrayaddr#19] -[visit_id arrayaddr#19] +[visit_exp [`REF.ARRAY_ADDR`_instr(a) `CONST`_instr(`I32`_numtype, i) (val : val <: instr) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.FILL`_instr(x)]] +[visit_exp `REF.ARRAY_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] -[visit_exp `CONST`_instr{numtype#415}(`I32`_numtype, i)] -[visit_exp numtype#415] -[visit_id numtype#415] +[visit_exp `CONST`_instr(`I32`_numtype, i)] [visit_exp (`I32`_numtype, i)] [visit_exp `I32`_numtype] [visit_exp ()] @@ -63126,34 +51946,24 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp (val : val <: instr)] [visit_exp val] [visit_id val] -[visit_exp `CONST`_instr{numtype#417}(`I32`_numtype, `%`_num_{i#41829}(n))] -[visit_exp numtype#417] -[visit_id numtype#417] -[visit_exp (`I32`_numtype, `%`_num_{i#41829}(n))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] +[visit_exp (`I32`_numtype, `%`_num_(n))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#41829}(n)] -[visit_exp i#41829] -[visit_id i#41829] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `ARRAY.FILL`_instr{typeidx#1611}(x)] -[visit_exp typeidx#1611] -[visit_id typeidx#1611] +[visit_exp `ARRAY.FILL`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#21}(a) `CONST`_instr{numtype#419}(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr{typeidx#1613}(x) `REF.ARRAY_ADDR`_instr{arrayaddr#23}(a) `CONST`_instr{numtype#421}(`I32`_numtype, `%`_num_{i#41905}((i!`%`_num_{i#41895}.0 + 1))) (val : val <: instr) `CONST`_instr{numtype#423}(`I32`_numtype, `%`_num_{i#41927}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `ARRAY.FILL`_instr{typeidx#1615}(x)]] -[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#21}(a)] -[visit_exp arrayaddr#21] -[visit_id arrayaddr#21] +[visit_exp [`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)]] +[visit_exp `REF.ARRAY_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] not free -[visit_exp `CONST`_instr{numtype#419}(`I32`_numtype, i)] -[visit_exp numtype#419] -[visit_id numtype#419] +[visit_exp `CONST`_instr(`I32`_numtype, i)] [visit_exp (`I32`_numtype, i)] [visit_exp `I32`_numtype] [visit_exp ()] @@ -63162,48 +51972,34 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp (val : val <: instr)] [visit_exp val] [visit_id val] not free -[visit_exp `ARRAY.SET`_instr{typeidx#1613}(x)] -[visit_exp typeidx#1613] -[visit_id typeidx#1613] +[visit_exp `ARRAY.SET`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] not free -[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#23}(a)] -[visit_exp arrayaddr#23] -[visit_id arrayaddr#23] +[visit_exp `REF.ARRAY_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] not free -[visit_exp `CONST`_instr{numtype#421}(`I32`_numtype, `%`_num_{i#41905}((i!`%`_num_{i#41895}.0 + 1)))] -[visit_exp numtype#421] -[visit_id numtype#421] -[visit_exp (`I32`_numtype, `%`_num_{i#41905}((i!`%`_num_{i#41895}.0 + 1)))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_((i!`%`_num_.0 + 1)))] +[visit_exp (`I32`_numtype, `%`_num_((i!`%`_num_.0 + 1)))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#41905}((i!`%`_num_{i#41895}.0 + 1))] -[visit_exp i#41905] -[visit_id i#41905] -[visit_exp ((i!`%`_num_{i#41895}.0 + 1))] -[visit_exp (i!`%`_num_{i#41895}.0 + 1)] -[visit_exp i!`%`_num_{i#41895}.0] -[visit_exp i!`%`_num_{i#41895}] +[visit_exp `%`_num_((i!`%`_num_.0 + 1))] +[visit_exp ((i!`%`_num_.0 + 1))] +[visit_exp (i!`%`_num_.0 + 1)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#41895] -[visit_id i#41895] [visit_exp 1] [visit_exp (val : val <: instr)] [visit_exp val] [visit_id val] not free -[visit_exp `CONST`_instr{numtype#423}(`I32`_numtype, `%`_num_{i#41927}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp numtype#423] -[visit_id numtype#423] -[visit_exp (`I32`_numtype, `%`_num_{i#41927}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp (`I32`_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#41927}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp i#41927] -[visit_id i#41927] +[visit_exp `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] [visit_exp ((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] [visit_exp (((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] [visit_exp ((n : nat <:> int) - (1 : nat <:> int))] @@ -63212,31 +52008,21 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id n] not free [visit_exp (1 : nat <:> int)] [visit_exp 1] -[visit_exp `ARRAY.FILL`_instr{typeidx#1615}(x)] -[visit_exp typeidx#1615] -[visit_id typeidx#1615] +[visit_exp `ARRAY.FILL`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] not free -[check_dims] heaptype#1441 ht_1 i#41993 i_1 i_2 instr*#2106 n numtype#425 numtype#427 numtype#429 ref state#1991 typeidx#1617 x_1 x_2 z -[visit_exp `%;%`_config{state#1991, `instr*#2106`}(z, [`REF.NULL`_instr{heaptype#1441}(ht_1) `CONST`_instr{numtype#425}(`I32`_numtype, i_1) (ref : ref <: instr) `CONST`_instr{numtype#427}(`I32`_numtype, i_2) `CONST`_instr{numtype#429}(`I32`_numtype, `%`_num_{i#41993}(n)) `ARRAY.COPY`_instr{typeidx#1617}(x_1, x_2)])] -[visit_exp state#1991] -[visit_id state#1991] -[visit_exp `instr*#2106`] -[visit_id instr*#2106] -[visit_exp (z, [`REF.NULL`_instr{heaptype#1441}(ht_1) `CONST`_instr{numtype#425}(`I32`_numtype, i_1) (ref : ref <: instr) `CONST`_instr{numtype#427}(`I32`_numtype, i_2) `CONST`_instr{numtype#429}(`I32`_numtype, `%`_num_{i#41993}(n)) `ARRAY.COPY`_instr{typeidx#1617}(x_1, x_2)])] +[check_dims] ht_1 i_1 i_2 n ref x_1 x_2 z +[visit_exp `%;%`_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)])] +[visit_exp (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)])] [visit_exp z] [visit_id z] -[visit_exp [`REF.NULL`_instr{heaptype#1441}(ht_1) `CONST`_instr{numtype#425}(`I32`_numtype, i_1) (ref : ref <: instr) `CONST`_instr{numtype#427}(`I32`_numtype, i_2) `CONST`_instr{numtype#429}(`I32`_numtype, `%`_num_{i#41993}(n)) `ARRAY.COPY`_instr{typeidx#1617}(x_1, x_2)]] -[visit_exp `REF.NULL`_instr{heaptype#1441}(ht_1)] -[visit_exp heaptype#1441] -[visit_id heaptype#1441] +[visit_exp [`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)]] +[visit_exp `REF.NULL`_instr(ht_1)] [visit_exp (ht_1)] [visit_exp ht_1] [visit_id ht_1] -[visit_exp `CONST`_instr{numtype#425}(`I32`_numtype, i_1)] -[visit_exp numtype#425] -[visit_id numtype#425] +[visit_exp `CONST`_instr(`I32`_numtype, i_1)] [visit_exp (`I32`_numtype, i_1)] [visit_exp `I32`_numtype] [visit_exp ()] @@ -63245,29 +52031,21 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp (ref : ref <: instr)] [visit_exp ref] [visit_id ref] -[visit_exp `CONST`_instr{numtype#427}(`I32`_numtype, i_2)] -[visit_exp numtype#427] -[visit_id numtype#427] +[visit_exp `CONST`_instr(`I32`_numtype, i_2)] [visit_exp (`I32`_numtype, i_2)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp i_2] [visit_id i_2] -[visit_exp `CONST`_instr{numtype#429}(`I32`_numtype, `%`_num_{i#41993}(n))] -[visit_exp numtype#429] -[visit_id numtype#429] -[visit_exp (`I32`_numtype, `%`_num_{i#41993}(n))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] +[visit_exp (`I32`_numtype, `%`_num_(n))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#41993}(n)] -[visit_exp i#41993] -[visit_id i#41993] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `ARRAY.COPY`_instr{typeidx#1617}(x_1, x_2)] -[visit_exp typeidx#1617] -[visit_id typeidx#1617] +[visit_exp `ARRAY.COPY`_instr(x_1, x_2)] [visit_exp (x_1, x_2)] [visit_exp x_1] [visit_id x_1] @@ -63276,56 +52054,40 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[check_dims] heaptype#1443 ht_2 i#42073 i_1 i_2 instr*#2118 n numtype#431 numtype#433 numtype#435 ref state#2003 typeidx#1620 x_1 x_2 z -[visit_exp `%;%`_config{state#2003, `instr*#2118`}(z, [(ref : ref <: instr) `CONST`_instr{numtype#431}(`I32`_numtype, i_1) `REF.NULL`_instr{heaptype#1443}(ht_2) `CONST`_instr{numtype#433}(`I32`_numtype, i_2) `CONST`_instr{numtype#435}(`I32`_numtype, `%`_num_{i#42073}(n)) `ARRAY.COPY`_instr{typeidx#1620}(x_1, x_2)])] -[visit_exp state#2003] -[visit_id state#2003] -[visit_exp `instr*#2118`] -[visit_id instr*#2118] -[visit_exp (z, [(ref : ref <: instr) `CONST`_instr{numtype#431}(`I32`_numtype, i_1) `REF.NULL`_instr{heaptype#1443}(ht_2) `CONST`_instr{numtype#433}(`I32`_numtype, i_2) `CONST`_instr{numtype#435}(`I32`_numtype, `%`_num_{i#42073}(n)) `ARRAY.COPY`_instr{typeidx#1620}(x_1, x_2)])] +[check_dims] ht_2 i_1 i_2 n ref x_1 x_2 z +[visit_exp `%;%`_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)])] +[visit_exp (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)])] [visit_exp z] [visit_id z] -[visit_exp [(ref : ref <: instr) `CONST`_instr{numtype#431}(`I32`_numtype, i_1) `REF.NULL`_instr{heaptype#1443}(ht_2) `CONST`_instr{numtype#433}(`I32`_numtype, i_2) `CONST`_instr{numtype#435}(`I32`_numtype, `%`_num_{i#42073}(n)) `ARRAY.COPY`_instr{typeidx#1620}(x_1, x_2)]] +[visit_exp [(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)]] [visit_exp (ref : ref <: instr)] [visit_exp ref] [visit_id ref] -[visit_exp `CONST`_instr{numtype#431}(`I32`_numtype, i_1)] -[visit_exp numtype#431] -[visit_id numtype#431] +[visit_exp `CONST`_instr(`I32`_numtype, i_1)] [visit_exp (`I32`_numtype, i_1)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp i_1] [visit_id i_1] -[visit_exp `REF.NULL`_instr{heaptype#1443}(ht_2)] -[visit_exp heaptype#1443] -[visit_id heaptype#1443] +[visit_exp `REF.NULL`_instr(ht_2)] [visit_exp (ht_2)] [visit_exp ht_2] [visit_id ht_2] -[visit_exp `CONST`_instr{numtype#433}(`I32`_numtype, i_2)] -[visit_exp numtype#433] -[visit_id numtype#433] +[visit_exp `CONST`_instr(`I32`_numtype, i_2)] [visit_exp (`I32`_numtype, i_2)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp i_2] [visit_id i_2] -[visit_exp `CONST`_instr{numtype#435}(`I32`_numtype, `%`_num_{i#42073}(n))] -[visit_exp numtype#435] -[visit_id numtype#435] -[visit_exp (`I32`_numtype, `%`_num_{i#42073}(n))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] +[visit_exp (`I32`_numtype, `%`_num_(n))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#42073}(n)] -[visit_exp i#42073] -[visit_id i#42073] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `ARRAY.COPY`_instr{typeidx#1620}(x_1, x_2)] -[visit_exp typeidx#1620] -[visit_id typeidx#1620] +[visit_exp `ARRAY.COPY`_instr(x_1, x_2)] [visit_exp (x_1, x_2)] [visit_exp x_1] [visit_id x_1] @@ -63334,59 +52096,41 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[check_dims] a_1 a_2 arrayaddr#25 arrayaddr#27 fieldval*#11 i#42153 i#42195 i_1 i_2 instr*#2130 n numtype#437 numtype#439 numtype#441 state#2015 typeidx#1623 x_1 x_2 z -[visit_exp `%;%`_config{state#2015, `instr*#2130`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#25}(a_1) `CONST`_instr{numtype#437}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#27}(a_2) `CONST`_instr{numtype#439}(`I32`_numtype, i_2) `CONST`_instr{numtype#441}(`I32`_numtype, `%`_num_{i#42153}(n)) `ARRAY.COPY`_instr{typeidx#1623}(x_1, x_2)])] -[visit_exp state#2015] -[visit_id state#2015] -[visit_exp `instr*#2130`] -[visit_id instr*#2130] -[visit_exp (z, [`REF.ARRAY_ADDR`_instr{arrayaddr#25}(a_1) `CONST`_instr{numtype#437}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#27}(a_2) `CONST`_instr{numtype#439}(`I32`_numtype, i_2) `CONST`_instr{numtype#441}(`I32`_numtype, `%`_num_{i#42153}(n)) `ARRAY.COPY`_instr{typeidx#1623}(x_1, x_2)])] +[check_dims] a_1 a_2 i_1 i_2 n x_1 x_2 z +[visit_exp `%;%`_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)])] +[visit_exp (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)])] [visit_exp z] [visit_id z] -[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#25}(a_1) `CONST`_instr{numtype#437}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#27}(a_2) `CONST`_instr{numtype#439}(`I32`_numtype, i_2) `CONST`_instr{numtype#441}(`I32`_numtype, `%`_num_{i#42153}(n)) `ARRAY.COPY`_instr{typeidx#1623}(x_1, x_2)]] -[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#25}(a_1)] -[visit_exp arrayaddr#25] -[visit_id arrayaddr#25] +[visit_exp [`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)]] +[visit_exp `REF.ARRAY_ADDR`_instr(a_1)] [visit_exp (a_1)] [visit_exp a_1] [visit_id a_1] -[visit_exp `CONST`_instr{numtype#437}(`I32`_numtype, i_1)] -[visit_exp numtype#437] -[visit_id numtype#437] +[visit_exp `CONST`_instr(`I32`_numtype, i_1)] [visit_exp (`I32`_numtype, i_1)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp i_1] [visit_id i_1] -[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#27}(a_2)] -[visit_exp arrayaddr#27] -[visit_id arrayaddr#27] +[visit_exp `REF.ARRAY_ADDR`_instr(a_2)] [visit_exp (a_2)] [visit_exp a_2] [visit_id a_2] -[visit_exp `CONST`_instr{numtype#439}(`I32`_numtype, i_2)] -[visit_exp numtype#439] -[visit_id numtype#439] +[visit_exp `CONST`_instr(`I32`_numtype, i_2)] [visit_exp (`I32`_numtype, i_2)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp i_2] [visit_id i_2] -[visit_exp `CONST`_instr{numtype#441}(`I32`_numtype, `%`_num_{i#42153}(n))] -[visit_exp numtype#441] -[visit_id numtype#441] -[visit_exp (`I32`_numtype, `%`_num_{i#42153}(n))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] +[visit_exp (`I32`_numtype, `%`_num_(n))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#42153}(n)] -[visit_exp i#42153] -[visit_id i#42153] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `ARRAY.COPY`_instr{typeidx#1623}(x_1, x_2)] -[visit_exp typeidx#1623] -[visit_id typeidx#1623] +[visit_exp `ARRAY.COPY`_instr(x_1, x_2)] [visit_exp (x_1, x_2)] [visit_exp x_1] [visit_id x_1] @@ -63395,79 +52139,57 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[visit_exp ((i_1!`%`_num_{i#42195}.0 + n) > |$arrayinst(z)[a_1].`FIELDS`_arrayinst{`fieldval*#11`}|)] -[visit_exp (i_1!`%`_num_{i#42195}.0 + n)] -[visit_exp i_1!`%`_num_{i#42195}.0] -[visit_exp i_1!`%`_num_{i#42195}] +[visit_exp ((i_1!`%`_num_.0 + n) > |$arrayinst(z)[a_1].`FIELDS`_arrayinst|)] +[visit_exp (i_1!`%`_num_.0 + n)] +[visit_exp i_1!`%`_num_.0] +[visit_exp i_1!`%`_num_] [visit_exp i_1] [visit_id i_1] not free -[visit_exp i#42195] -[visit_id i#42195] [visit_exp n] [visit_id n] not free -[visit_exp |$arrayinst(z)[a_1].`FIELDS`_arrayinst{`fieldval*#11`}|] -[visit_exp $arrayinst(z)[a_1].`FIELDS`_arrayinst{`fieldval*#11`}] +[visit_exp |$arrayinst(z)[a_1].`FIELDS`_arrayinst|] +[visit_exp $arrayinst(z)[a_1].`FIELDS`_arrayinst] [visit_exp $arrayinst(z)[a_1]] [visit_exp $arrayinst(z)] [visit_exp z] [visit_id z] not free [visit_exp a_1] [visit_id a_1] not free -[visit_exp `fieldval*#11`] -[visit_id fieldval*#11] -[check_dims] a_1 a_2 arrayaddr#29 arrayaddr#31 fieldval*#12 i#42247 i#42289 i_1 i_2 instr*#2142 n numtype#443 numtype#445 numtype#447 state#2027 typeidx#1626 x_1 x_2 z -[visit_exp `%;%`_config{state#2027, `instr*#2142`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#29}(a_1) `CONST`_instr{numtype#443}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#31}(a_2) `CONST`_instr{numtype#445}(`I32`_numtype, i_2) `CONST`_instr{numtype#447}(`I32`_numtype, `%`_num_{i#42247}(n)) `ARRAY.COPY`_instr{typeidx#1626}(x_1, x_2)])] -[visit_exp state#2027] -[visit_id state#2027] -[visit_exp `instr*#2142`] -[visit_id instr*#2142] -[visit_exp (z, [`REF.ARRAY_ADDR`_instr{arrayaddr#29}(a_1) `CONST`_instr{numtype#443}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#31}(a_2) `CONST`_instr{numtype#445}(`I32`_numtype, i_2) `CONST`_instr{numtype#447}(`I32`_numtype, `%`_num_{i#42247}(n)) `ARRAY.COPY`_instr{typeidx#1626}(x_1, x_2)])] +[check_dims] a_1 a_2 i_1 i_2 n x_1 x_2 z +[visit_exp `%;%`_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)])] +[visit_exp (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)])] [visit_exp z] [visit_id z] -[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#29}(a_1) `CONST`_instr{numtype#443}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#31}(a_2) `CONST`_instr{numtype#445}(`I32`_numtype, i_2) `CONST`_instr{numtype#447}(`I32`_numtype, `%`_num_{i#42247}(n)) `ARRAY.COPY`_instr{typeidx#1626}(x_1, x_2)]] -[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#29}(a_1)] -[visit_exp arrayaddr#29] -[visit_id arrayaddr#29] +[visit_exp [`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)]] +[visit_exp `REF.ARRAY_ADDR`_instr(a_1)] [visit_exp (a_1)] [visit_exp a_1] [visit_id a_1] -[visit_exp `CONST`_instr{numtype#443}(`I32`_numtype, i_1)] -[visit_exp numtype#443] -[visit_id numtype#443] +[visit_exp `CONST`_instr(`I32`_numtype, i_1)] [visit_exp (`I32`_numtype, i_1)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp i_1] [visit_id i_1] -[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#31}(a_2)] -[visit_exp arrayaddr#31] -[visit_id arrayaddr#31] +[visit_exp `REF.ARRAY_ADDR`_instr(a_2)] [visit_exp (a_2)] [visit_exp a_2] [visit_id a_2] -[visit_exp `CONST`_instr{numtype#445}(`I32`_numtype, i_2)] -[visit_exp numtype#445] -[visit_id numtype#445] +[visit_exp `CONST`_instr(`I32`_numtype, i_2)] [visit_exp (`I32`_numtype, i_2)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp i_2] [visit_id i_2] -[visit_exp `CONST`_instr{numtype#447}(`I32`_numtype, `%`_num_{i#42247}(n))] -[visit_exp numtype#447] -[visit_id numtype#447] -[visit_exp (`I32`_numtype, `%`_num_{i#42247}(n))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] +[visit_exp (`I32`_numtype, `%`_num_(n))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#42247}(n)] -[visit_exp i#42247] -[visit_id i#42247] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `ARRAY.COPY`_instr{typeidx#1626}(x_1, x_2)] -[visit_exp typeidx#1626] -[visit_id typeidx#1626] +[visit_exp `ARRAY.COPY`_instr(x_1, x_2)] [visit_exp (x_1, x_2)] [visit_exp x_1] [visit_id x_1] @@ -63476,79 +52198,57 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[visit_exp ((i_2!`%`_num_{i#42289}.0 + n) > |$arrayinst(z)[a_2].`FIELDS`_arrayinst{`fieldval*#12`}|)] -[visit_exp (i_2!`%`_num_{i#42289}.0 + n)] -[visit_exp i_2!`%`_num_{i#42289}.0] -[visit_exp i_2!`%`_num_{i#42289}] +[visit_exp ((i_2!`%`_num_.0 + n) > |$arrayinst(z)[a_2].`FIELDS`_arrayinst|)] +[visit_exp (i_2!`%`_num_.0 + n)] +[visit_exp i_2!`%`_num_.0] +[visit_exp i_2!`%`_num_] [visit_exp i_2] [visit_id i_2] not free -[visit_exp i#42289] -[visit_id i#42289] [visit_exp n] [visit_id n] not free -[visit_exp |$arrayinst(z)[a_2].`FIELDS`_arrayinst{`fieldval*#12`}|] -[visit_exp $arrayinst(z)[a_2].`FIELDS`_arrayinst{`fieldval*#12`}] +[visit_exp |$arrayinst(z)[a_2].`FIELDS`_arrayinst|] +[visit_exp $arrayinst(z)[a_2].`FIELDS`_arrayinst] [visit_exp $arrayinst(z)[a_2]] [visit_exp $arrayinst(z)] [visit_exp z] [visit_id z] not free [visit_exp a_2] [visit_id a_2] not free -[visit_exp `fieldval*#12`] -[visit_id fieldval*#12] -[check_dims] a_1 a_2 arrayaddr#33 arrayaddr#35 i#42341 i_1 i_2 instr*#2154 n numtype#449 numtype#451 numtype#453 state#2039 typeidx#1629 x_1 x_2 z -[visit_exp `%;%`_config{state#2039, `instr*#2154`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#33}(a_1) `CONST`_instr{numtype#449}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#35}(a_2) `CONST`_instr{numtype#451}(`I32`_numtype, i_2) `CONST`_instr{numtype#453}(`I32`_numtype, `%`_num_{i#42341}(n)) `ARRAY.COPY`_instr{typeidx#1629}(x_1, x_2)])] -[visit_exp state#2039] -[visit_id state#2039] -[visit_exp `instr*#2154`] -[visit_id instr*#2154] -[visit_exp (z, [`REF.ARRAY_ADDR`_instr{arrayaddr#33}(a_1) `CONST`_instr{numtype#449}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#35}(a_2) `CONST`_instr{numtype#451}(`I32`_numtype, i_2) `CONST`_instr{numtype#453}(`I32`_numtype, `%`_num_{i#42341}(n)) `ARRAY.COPY`_instr{typeidx#1629}(x_1, x_2)])] +[check_dims] a_1 a_2 i_1 i_2 n x_1 x_2 z +[visit_exp `%;%`_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)])] +[visit_exp (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)])] [visit_exp z] [visit_id z] -[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#33}(a_1) `CONST`_instr{numtype#449}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#35}(a_2) `CONST`_instr{numtype#451}(`I32`_numtype, i_2) `CONST`_instr{numtype#453}(`I32`_numtype, `%`_num_{i#42341}(n)) `ARRAY.COPY`_instr{typeidx#1629}(x_1, x_2)]] -[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#33}(a_1)] -[visit_exp arrayaddr#33] -[visit_id arrayaddr#33] +[visit_exp [`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)]] +[visit_exp `REF.ARRAY_ADDR`_instr(a_1)] [visit_exp (a_1)] [visit_exp a_1] [visit_id a_1] -[visit_exp `CONST`_instr{numtype#449}(`I32`_numtype, i_1)] -[visit_exp numtype#449] -[visit_id numtype#449] +[visit_exp `CONST`_instr(`I32`_numtype, i_1)] [visit_exp (`I32`_numtype, i_1)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp i_1] [visit_id i_1] -[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#35}(a_2)] -[visit_exp arrayaddr#35] -[visit_id arrayaddr#35] +[visit_exp `REF.ARRAY_ADDR`_instr(a_2)] [visit_exp (a_2)] [visit_exp a_2] [visit_id a_2] -[visit_exp `CONST`_instr{numtype#451}(`I32`_numtype, i_2)] -[visit_exp numtype#451] -[visit_id numtype#451] +[visit_exp `CONST`_instr(`I32`_numtype, i_2)] [visit_exp (`I32`_numtype, i_2)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp i_2] [visit_id i_2] -[visit_exp `CONST`_instr{numtype#453}(`I32`_numtype, `%`_num_{i#42341}(n))] -[visit_exp numtype#453] -[visit_id numtype#453] -[visit_exp (`I32`_numtype, `%`_num_{i#42341}(n))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] +[visit_exp (`I32`_numtype, `%`_num_(n))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#42341}(n)] -[visit_exp i#42341] -[visit_id i#42341] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `ARRAY.COPY`_instr{typeidx#1629}(x_1, x_2)] -[visit_exp typeidx#1629] -[visit_id typeidx#1629] +[visit_exp `ARRAY.COPY`_instr(x_1, x_2)] [visit_exp (x_1, x_2)] [visit_exp x_1] [visit_id x_1] @@ -63559,98 +52259,68 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp n] [visit_id n] not free [visit_exp 0] -[check_dims] a_1 a_2 arrayaddr#37 arrayaddr#39 arrayaddr#41 arrayaddr#43 arrayaddr#45 arrayaddr#47 fieldtype#51 i#42421 i#42564 i#42574 i#42600 i#42610 i#42632 i#42690 i#42700 i_1 i_2 instr*#2166 mut mut?#1169 n numtype#455 numtype#457 numtype#459 numtype#461 numtype#463 numtype#465 numtype#467 numtype#469 state#2051 storagetype#707 sx sx?#23 typeidx#1632 typeidx#1635 typeidx#1637 typeidx#1639 x_1 x_2 z zt_2 -[visit_exp `%;%`_config{state#2051, `instr*#2166`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#37}(a_1) `CONST`_instr{numtype#455}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#39}(a_2) `CONST`_instr{numtype#457}(`I32`_numtype, i_2) `CONST`_instr{numtype#459}(`I32`_numtype, `%`_num_{i#42421}(n)) `ARRAY.COPY`_instr{typeidx#1632}(x_1, x_2)])] -[visit_exp state#2051] -[visit_id state#2051] -[visit_exp `instr*#2166`] -[visit_id instr*#2166] -[visit_exp (z, [`REF.ARRAY_ADDR`_instr{arrayaddr#37}(a_1) `CONST`_instr{numtype#455}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#39}(a_2) `CONST`_instr{numtype#457}(`I32`_numtype, i_2) `CONST`_instr{numtype#459}(`I32`_numtype, `%`_num_{i#42421}(n)) `ARRAY.COPY`_instr{typeidx#1632}(x_1, x_2)])] +[check_dims] a_1 a_2 i_1 i_2 mut n sx x_1 x_2 z zt_2 +[visit_exp `%;%`_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)])] +[visit_exp (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)])] [visit_exp z] [visit_id z] -[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#37}(a_1) `CONST`_instr{numtype#455}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#39}(a_2) `CONST`_instr{numtype#457}(`I32`_numtype, i_2) `CONST`_instr{numtype#459}(`I32`_numtype, `%`_num_{i#42421}(n)) `ARRAY.COPY`_instr{typeidx#1632}(x_1, x_2)]] -[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#37}(a_1)] -[visit_exp arrayaddr#37] -[visit_id arrayaddr#37] +[visit_exp [`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)]] +[visit_exp `REF.ARRAY_ADDR`_instr(a_1)] [visit_exp (a_1)] [visit_exp a_1] [visit_id a_1] -[visit_exp `CONST`_instr{numtype#455}(`I32`_numtype, i_1)] -[visit_exp numtype#455] -[visit_id numtype#455] +[visit_exp `CONST`_instr(`I32`_numtype, i_1)] [visit_exp (`I32`_numtype, i_1)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp i_1] [visit_id i_1] -[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#39}(a_2)] -[visit_exp arrayaddr#39] -[visit_id arrayaddr#39] +[visit_exp `REF.ARRAY_ADDR`_instr(a_2)] [visit_exp (a_2)] [visit_exp a_2] [visit_id a_2] -[visit_exp `CONST`_instr{numtype#457}(`I32`_numtype, i_2)] -[visit_exp numtype#457] -[visit_id numtype#457] +[visit_exp `CONST`_instr(`I32`_numtype, i_2)] [visit_exp (`I32`_numtype, i_2)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp i_2] [visit_id i_2] -[visit_exp `CONST`_instr{numtype#459}(`I32`_numtype, `%`_num_{i#42421}(n))] -[visit_exp numtype#459] -[visit_id numtype#459] -[visit_exp (`I32`_numtype, `%`_num_{i#42421}(n))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] +[visit_exp (`I32`_numtype, `%`_num_(n))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#42421}(n)] -[visit_exp i#42421] -[visit_id i#42421] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `ARRAY.COPY`_instr{typeidx#1632}(x_1, x_2)] -[visit_exp typeidx#1632] -[visit_id typeidx#1632] +[visit_exp `ARRAY.COPY`_instr(x_1, x_2)] [visit_exp (x_1, x_2)] [visit_exp x_1] [visit_id x_1] [visit_exp x_2] [visit_id x_2] -[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#41}(a_1) `CONST`_instr{numtype#461}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#43}(a_2) `CONST`_instr{numtype#463}(`I32`_numtype, i_2) `ARRAY.GET`_instr{`sx?#23`, typeidx#1635}(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr{typeidx#1637}(x_1) `REF.ARRAY_ADDR`_instr{arrayaddr#45}(a_1) `CONST`_instr{numtype#465}(`I32`_numtype, `%`_num_{i#42574}((i_1!`%`_num_{i#42564}.0 + 1))) `REF.ARRAY_ADDR`_instr{arrayaddr#47}(a_2) `CONST`_instr{numtype#467}(`I32`_numtype, `%`_num_{i#42610}((i_2!`%`_num_{i#42600}.0 + 1))) `CONST`_instr{numtype#469}(`I32`_numtype, `%`_num_{i#42632}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `ARRAY.COPY`_instr{typeidx#1639}(x_1, x_2)]] -[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#41}(a_1)] -[visit_exp arrayaddr#41] -[visit_id arrayaddr#41] +[visit_exp [`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)]] +[visit_exp `REF.ARRAY_ADDR`_instr(a_1)] [visit_exp (a_1)] [visit_exp a_1] [visit_id a_1] not free -[visit_exp `CONST`_instr{numtype#461}(`I32`_numtype, i_1)] -[visit_exp numtype#461] -[visit_id numtype#461] +[visit_exp `CONST`_instr(`I32`_numtype, i_1)] [visit_exp (`I32`_numtype, i_1)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp i_1] [visit_id i_1] not free -[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#43}(a_2)] -[visit_exp arrayaddr#43] -[visit_id arrayaddr#43] +[visit_exp `REF.ARRAY_ADDR`_instr(a_2)] [visit_exp (a_2)] [visit_exp a_2] [visit_id a_2] not free -[visit_exp `CONST`_instr{numtype#463}(`I32`_numtype, i_2)] -[visit_exp numtype#463] -[visit_id numtype#463] +[visit_exp `CONST`_instr(`I32`_numtype, i_2)] [visit_exp (`I32`_numtype, i_2)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp i_2] [visit_id i_2] not free -[visit_exp `ARRAY.GET`_instr{`sx?#23`, typeidx#1635}(sx?{sx <- `sx?`}, x_2)] -[visit_exp `sx?#23`] -[visit_id sx?#23] -[visit_exp typeidx#1635] -[visit_id typeidx#1635] +[visit_exp `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)] [visit_exp (sx?{sx <- `sx?`}, x_2)] [visit_exp sx?{sx <- `sx?`}] [scope_enter sx] @@ -63663,69 +52333,47 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id sx?] [visit_exp x_2] [visit_id x_2] not free -[visit_exp `ARRAY.SET`_instr{typeidx#1637}(x_1)] -[visit_exp typeidx#1637] -[visit_id typeidx#1637] +[visit_exp `ARRAY.SET`_instr(x_1)] [visit_exp (x_1)] [visit_exp x_1] [visit_id x_1] not free -[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#45}(a_1)] -[visit_exp arrayaddr#45] -[visit_id arrayaddr#45] +[visit_exp `REF.ARRAY_ADDR`_instr(a_1)] [visit_exp (a_1)] [visit_exp a_1] [visit_id a_1] not free -[visit_exp `CONST`_instr{numtype#465}(`I32`_numtype, `%`_num_{i#42574}((i_1!`%`_num_{i#42564}.0 + 1)))] -[visit_exp numtype#465] -[visit_id numtype#465] -[visit_exp (`I32`_numtype, `%`_num_{i#42574}((i_1!`%`_num_{i#42564}.0 + 1)))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_((i_1!`%`_num_.0 + 1)))] +[visit_exp (`I32`_numtype, `%`_num_((i_1!`%`_num_.0 + 1)))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#42574}((i_1!`%`_num_{i#42564}.0 + 1))] -[visit_exp i#42574] -[visit_id i#42574] -[visit_exp ((i_1!`%`_num_{i#42564}.0 + 1))] -[visit_exp (i_1!`%`_num_{i#42564}.0 + 1)] -[visit_exp i_1!`%`_num_{i#42564}.0] -[visit_exp i_1!`%`_num_{i#42564}] +[visit_exp `%`_num_((i_1!`%`_num_.0 + 1))] +[visit_exp ((i_1!`%`_num_.0 + 1))] +[visit_exp (i_1!`%`_num_.0 + 1)] +[visit_exp i_1!`%`_num_.0] +[visit_exp i_1!`%`_num_] [visit_exp i_1] [visit_id i_1] not free -[visit_exp i#42564] -[visit_id i#42564] [visit_exp 1] -[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#47}(a_2)] -[visit_exp arrayaddr#47] -[visit_id arrayaddr#47] +[visit_exp `REF.ARRAY_ADDR`_instr(a_2)] [visit_exp (a_2)] [visit_exp a_2] [visit_id a_2] not free -[visit_exp `CONST`_instr{numtype#467}(`I32`_numtype, `%`_num_{i#42610}((i_2!`%`_num_{i#42600}.0 + 1)))] -[visit_exp numtype#467] -[visit_id numtype#467] -[visit_exp (`I32`_numtype, `%`_num_{i#42610}((i_2!`%`_num_{i#42600}.0 + 1)))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_((i_2!`%`_num_.0 + 1)))] +[visit_exp (`I32`_numtype, `%`_num_((i_2!`%`_num_.0 + 1)))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#42610}((i_2!`%`_num_{i#42600}.0 + 1))] -[visit_exp i#42610] -[visit_id i#42610] -[visit_exp ((i_2!`%`_num_{i#42600}.0 + 1))] -[visit_exp (i_2!`%`_num_{i#42600}.0 + 1)] -[visit_exp i_2!`%`_num_{i#42600}.0] -[visit_exp i_2!`%`_num_{i#42600}] +[visit_exp `%`_num_((i_2!`%`_num_.0 + 1))] +[visit_exp ((i_2!`%`_num_.0 + 1))] +[visit_exp (i_2!`%`_num_.0 + 1)] +[visit_exp i_2!`%`_num_.0] +[visit_exp i_2!`%`_num_] [visit_exp i_2] [visit_id i_2] not free -[visit_exp i#42600] -[visit_id i#42600] [visit_exp 1] -[visit_exp `CONST`_instr{numtype#469}(`I32`_numtype, `%`_num_{i#42632}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp numtype#469] -[visit_id numtype#469] -[visit_exp (`I32`_numtype, `%`_num_{i#42632}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp (`I32`_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#42632}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp i#42632] -[visit_id i#42632] +[visit_exp `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] [visit_exp ((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] [visit_exp (((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] [visit_exp ((n : nat <:> int) - (1 : nat <:> int))] @@ -63734,29 +52382,21 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id n] not free [visit_exp (1 : nat <:> int)] [visit_exp 1] -[visit_exp `ARRAY.COPY`_instr{typeidx#1639}(x_1, x_2)] -[visit_exp typeidx#1639] -[visit_id typeidx#1639] +[visit_exp `ARRAY.COPY`_instr(x_1, x_2)] [visit_exp (x_1, x_2)] [visit_exp x_1] [visit_id x_1] not free [visit_exp x_2] [visit_id x_2] not free -[visit_exp ($type(z, x_2), `ARRAY`_comptype{fieldtype#51}(`%%`_fieldtype{`mut?#1169`, storagetype#707}(mut?{mut <- `mut?`}, zt_2)))] +[visit_exp ($type(z, x_2), `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2)))] [visit_exp $type(z, x_2)] [visit_exp z] [visit_id z] not free [visit_exp x_2] [visit_id x_2] not free -[visit_exp `ARRAY`_comptype{fieldtype#51}(`%%`_fieldtype{`mut?#1169`, storagetype#707}(mut?{mut <- `mut?`}, zt_2))] -[visit_exp fieldtype#51] -[visit_id fieldtype#51] -[visit_exp (`%%`_fieldtype{`mut?#1169`, storagetype#707}(mut?{mut <- `mut?`}, zt_2))] -[visit_exp `%%`_fieldtype{`mut?#1169`, storagetype#707}(mut?{mut <- `mut?`}, zt_2)] -[visit_exp `mut?#1169`] -[visit_id mut?#1169] -[visit_exp storagetype#707] -[visit_id storagetype#707] +[visit_exp `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))] +[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))] +[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt_2)] [visit_exp (mut?{mut <- `mut?`}, zt_2)] [visit_exp mut?{mut <- `mut?`}] [scope_enter mut] @@ -63769,20 +52409,16 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id mut?] [visit_exp zt_2] [visit_id zt_2] -[visit_exp ((i_1!`%`_num_{i#42690}.0 <= i_2!`%`_num_{i#42700}.0) /\ (sx?{sx <- `sx?`} = $sx(zt_2)))] -[visit_exp (i_1!`%`_num_{i#42690}.0 <= i_2!`%`_num_{i#42700}.0)] -[visit_exp i_1!`%`_num_{i#42690}.0] -[visit_exp i_1!`%`_num_{i#42690}] +[visit_exp ((i_1!`%`_num_.0 <= i_2!`%`_num_.0) /\ (sx?{sx <- `sx?`} = $sx(zt_2)))] +[visit_exp (i_1!`%`_num_.0 <= i_2!`%`_num_.0)] +[visit_exp i_1!`%`_num_.0] +[visit_exp i_1!`%`_num_] [visit_exp i_1] [visit_id i_1] not free -[visit_exp i#42690] -[visit_id i#42690] -[visit_exp i_2!`%`_num_{i#42700}.0] -[visit_exp i_2!`%`_num_{i#42700}] +[visit_exp i_2!`%`_num_.0] +[visit_exp i_2!`%`_num_] [visit_exp i_2] [visit_id i_2] not free -[visit_exp i#42700] -[visit_id i#42700] [visit_exp (sx?{sx <- `sx?`} = $sx(zt_2))] [visit_exp sx?{sx <- `sx?`}] [scope_enter sx] @@ -63796,130 +52432,92 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp $sx(zt_2)] [visit_exp zt_2] [visit_id zt_2] not free -[check_dims] a_1 a_2 arrayaddr#49 arrayaddr#51 arrayaddr#53 arrayaddr#55 arrayaddr#57 arrayaddr#59 fieldtype#53 i#42752 i#42806 i#42816 i#42842 i#42852 i#42963 i_1 i_2 instr*#2178 mut mut?#1181 n numtype#471 numtype#473 numtype#475 numtype#477 numtype#479 numtype#481 numtype#483 numtype#485 state#2063 storagetype#719 sx sx?#25 typeidx#1642 typeidx#1645 typeidx#1647 typeidx#1649 x_1 x_2 z zt_2 -[visit_exp `%;%`_config{state#2063, `instr*#2178`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#49}(a_1) `CONST`_instr{numtype#471}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#51}(a_2) `CONST`_instr{numtype#473}(`I32`_numtype, i_2) `CONST`_instr{numtype#475}(`I32`_numtype, `%`_num_{i#42752}(n)) `ARRAY.COPY`_instr{typeidx#1642}(x_1, x_2)])] -[visit_exp state#2063] -[visit_id state#2063] -[visit_exp `instr*#2178`] -[visit_id instr*#2178] -[visit_exp (z, [`REF.ARRAY_ADDR`_instr{arrayaddr#49}(a_1) `CONST`_instr{numtype#471}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#51}(a_2) `CONST`_instr{numtype#473}(`I32`_numtype, i_2) `CONST`_instr{numtype#475}(`I32`_numtype, `%`_num_{i#42752}(n)) `ARRAY.COPY`_instr{typeidx#1642}(x_1, x_2)])] +[check_dims] a_1 a_2 i_1 i_2 mut n sx x_1 x_2 z zt_2 +[visit_exp `%;%`_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)])] +[visit_exp (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)])] [visit_exp z] [visit_id z] -[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#49}(a_1) `CONST`_instr{numtype#471}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#51}(a_2) `CONST`_instr{numtype#473}(`I32`_numtype, i_2) `CONST`_instr{numtype#475}(`I32`_numtype, `%`_num_{i#42752}(n)) `ARRAY.COPY`_instr{typeidx#1642}(x_1, x_2)]] -[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#49}(a_1)] -[visit_exp arrayaddr#49] -[visit_id arrayaddr#49] +[visit_exp [`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)]] +[visit_exp `REF.ARRAY_ADDR`_instr(a_1)] [visit_exp (a_1)] [visit_exp a_1] [visit_id a_1] -[visit_exp `CONST`_instr{numtype#471}(`I32`_numtype, i_1)] -[visit_exp numtype#471] -[visit_id numtype#471] +[visit_exp `CONST`_instr(`I32`_numtype, i_1)] [visit_exp (`I32`_numtype, i_1)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp i_1] [visit_id i_1] -[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#51}(a_2)] -[visit_exp arrayaddr#51] -[visit_id arrayaddr#51] +[visit_exp `REF.ARRAY_ADDR`_instr(a_2)] [visit_exp (a_2)] [visit_exp a_2] [visit_id a_2] -[visit_exp `CONST`_instr{numtype#473}(`I32`_numtype, i_2)] -[visit_exp numtype#473] -[visit_id numtype#473] +[visit_exp `CONST`_instr(`I32`_numtype, i_2)] [visit_exp (`I32`_numtype, i_2)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp i_2] [visit_id i_2] -[visit_exp `CONST`_instr{numtype#475}(`I32`_numtype, `%`_num_{i#42752}(n))] -[visit_exp numtype#475] -[visit_id numtype#475] -[visit_exp (`I32`_numtype, `%`_num_{i#42752}(n))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] +[visit_exp (`I32`_numtype, `%`_num_(n))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#42752}(n)] -[visit_exp i#42752] -[visit_id i#42752] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `ARRAY.COPY`_instr{typeidx#1642}(x_1, x_2)] -[visit_exp typeidx#1642] -[visit_id typeidx#1642] +[visit_exp `ARRAY.COPY`_instr(x_1, x_2)] [visit_exp (x_1, x_2)] [visit_exp x_1] [visit_id x_1] [visit_exp x_2] [visit_id x_2] -[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#53}(a_1) `CONST`_instr{numtype#477}(`I32`_numtype, `%`_num_{i#42816}(((((i_1!`%`_num_{i#42806}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `REF.ARRAY_ADDR`_instr{arrayaddr#55}(a_2) `CONST`_instr{numtype#479}(`I32`_numtype, `%`_num_{i#42852}(((((i_2!`%`_num_{i#42842}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `ARRAY.GET`_instr{`sx?#25`, typeidx#1645}(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr{typeidx#1647}(x_1) `REF.ARRAY_ADDR`_instr{arrayaddr#57}(a_1) `CONST`_instr{numtype#481}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#59}(a_2) `CONST`_instr{numtype#483}(`I32`_numtype, i_2) `CONST`_instr{numtype#485}(`I32`_numtype, `%`_num_{i#42963}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `ARRAY.COPY`_instr{typeidx#1649}(x_1, x_2)]] -[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#53}(a_1)] -[visit_exp arrayaddr#53] -[visit_id arrayaddr#53] +[visit_exp [`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)]] +[visit_exp `REF.ARRAY_ADDR`_instr(a_1)] [visit_exp (a_1)] [visit_exp a_1] [visit_id a_1] not free -[visit_exp `CONST`_instr{numtype#477}(`I32`_numtype, `%`_num_{i#42816}(((((i_1!`%`_num_{i#42806}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp numtype#477] -[visit_id numtype#477] -[visit_exp (`I32`_numtype, `%`_num_{i#42816}(((((i_1!`%`_num_{i#42806}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp (`I32`_numtype, `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#42816}(((((i_1!`%`_num_{i#42806}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp i#42816] -[visit_id i#42816] -[visit_exp (((((i_1!`%`_num_{i#42806}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp ((((i_1!`%`_num_{i#42806}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp (((i_1!`%`_num_{i#42806}.0 + n) : nat <:> int) - (1 : nat <:> int))] -[visit_exp ((i_1!`%`_num_{i#42806}.0 + n) : nat <:> int)] -[visit_exp (i_1!`%`_num_{i#42806}.0 + n)] -[visit_exp i_1!`%`_num_{i#42806}.0] -[visit_exp i_1!`%`_num_{i#42806}] +[visit_exp `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp (((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp ((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp (((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int))] +[visit_exp ((i_1!`%`_num_.0 + n) : nat <:> int)] +[visit_exp (i_1!`%`_num_.0 + n)] +[visit_exp i_1!`%`_num_.0] +[visit_exp i_1!`%`_num_] [visit_exp i_1] [visit_id i_1] not free -[visit_exp i#42806] -[visit_id i#42806] [visit_exp n] [visit_id n] not free [visit_exp (1 : nat <:> int)] [visit_exp 1] -[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#55}(a_2)] -[visit_exp arrayaddr#55] -[visit_id arrayaddr#55] +[visit_exp `REF.ARRAY_ADDR`_instr(a_2)] [visit_exp (a_2)] [visit_exp a_2] [visit_id a_2] not free -[visit_exp `CONST`_instr{numtype#479}(`I32`_numtype, `%`_num_{i#42852}(((((i_2!`%`_num_{i#42842}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp numtype#479] -[visit_id numtype#479] -[visit_exp (`I32`_numtype, `%`_num_{i#42852}(((((i_2!`%`_num_{i#42842}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp (`I32`_numtype, `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#42852}(((((i_2!`%`_num_{i#42842}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp i#42852] -[visit_id i#42852] -[visit_exp (((((i_2!`%`_num_{i#42842}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp ((((i_2!`%`_num_{i#42842}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp (((i_2!`%`_num_{i#42842}.0 + n) : nat <:> int) - (1 : nat <:> int))] -[visit_exp ((i_2!`%`_num_{i#42842}.0 + n) : nat <:> int)] -[visit_exp (i_2!`%`_num_{i#42842}.0 + n)] -[visit_exp i_2!`%`_num_{i#42842}.0] -[visit_exp i_2!`%`_num_{i#42842}] +[visit_exp `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp (((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] +[visit_exp ((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] +[visit_exp (((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int))] +[visit_exp ((i_2!`%`_num_.0 + n) : nat <:> int)] +[visit_exp (i_2!`%`_num_.0 + n)] +[visit_exp i_2!`%`_num_.0] +[visit_exp i_2!`%`_num_] [visit_exp i_2] [visit_id i_2] not free -[visit_exp i#42842] -[visit_id i#42842] [visit_exp n] [visit_id n] not free [visit_exp (1 : nat <:> int)] [visit_exp 1] -[visit_exp `ARRAY.GET`_instr{`sx?#25`, typeidx#1645}(sx?{sx <- `sx?`}, x_2)] -[visit_exp `sx?#25`] -[visit_id sx?#25] -[visit_exp typeidx#1645] -[visit_id typeidx#1645] +[visit_exp `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)] [visit_exp (sx?{sx <- `sx?`}, x_2)] [visit_exp sx?{sx <- `sx?`}] [scope_enter sx] @@ -63932,49 +52530,35 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id sx?] [visit_exp x_2] [visit_id x_2] not free -[visit_exp `ARRAY.SET`_instr{typeidx#1647}(x_1)] -[visit_exp typeidx#1647] -[visit_id typeidx#1647] +[visit_exp `ARRAY.SET`_instr(x_1)] [visit_exp (x_1)] [visit_exp x_1] [visit_id x_1] not free -[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#57}(a_1)] -[visit_exp arrayaddr#57] -[visit_id arrayaddr#57] +[visit_exp `REF.ARRAY_ADDR`_instr(a_1)] [visit_exp (a_1)] [visit_exp a_1] [visit_id a_1] not free -[visit_exp `CONST`_instr{numtype#481}(`I32`_numtype, i_1)] -[visit_exp numtype#481] -[visit_id numtype#481] +[visit_exp `CONST`_instr(`I32`_numtype, i_1)] [visit_exp (`I32`_numtype, i_1)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp i_1] [visit_id i_1] not free -[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#59}(a_2)] -[visit_exp arrayaddr#59] -[visit_id arrayaddr#59] +[visit_exp `REF.ARRAY_ADDR`_instr(a_2)] [visit_exp (a_2)] [visit_exp a_2] [visit_id a_2] not free -[visit_exp `CONST`_instr{numtype#483}(`I32`_numtype, i_2)] -[visit_exp numtype#483] -[visit_id numtype#483] +[visit_exp `CONST`_instr(`I32`_numtype, i_2)] [visit_exp (`I32`_numtype, i_2)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp i_2] [visit_id i_2] not free -[visit_exp `CONST`_instr{numtype#485}(`I32`_numtype, `%`_num_{i#42963}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp numtype#485] -[visit_id numtype#485] -[visit_exp (`I32`_numtype, `%`_num_{i#42963}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp (`I32`_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#42963}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp i#42963] -[visit_id i#42963] +[visit_exp `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] [visit_exp ((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] [visit_exp (((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] [visit_exp ((n : nat <:> int) - (1 : nat <:> int))] @@ -63983,29 +52567,21 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id n] not free [visit_exp (1 : nat <:> int)] [visit_exp 1] -[visit_exp `ARRAY.COPY`_instr{typeidx#1649}(x_1, x_2)] -[visit_exp typeidx#1649] -[visit_id typeidx#1649] +[visit_exp `ARRAY.COPY`_instr(x_1, x_2)] [visit_exp (x_1, x_2)] [visit_exp x_1] [visit_id x_1] not free [visit_exp x_2] [visit_id x_2] not free -[visit_exp ($type(z, x_2), `ARRAY`_comptype{fieldtype#53}(`%%`_fieldtype{`mut?#1181`, storagetype#719}(mut?{mut <- `mut?`}, zt_2)))] +[visit_exp ($type(z, x_2), `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2)))] [visit_exp $type(z, x_2)] [visit_exp z] [visit_id z] not free [visit_exp x_2] [visit_id x_2] not free -[visit_exp `ARRAY`_comptype{fieldtype#53}(`%%`_fieldtype{`mut?#1181`, storagetype#719}(mut?{mut <- `mut?`}, zt_2))] -[visit_exp fieldtype#53] -[visit_id fieldtype#53] -[visit_exp (`%%`_fieldtype{`mut?#1181`, storagetype#719}(mut?{mut <- `mut?`}, zt_2))] -[visit_exp `%%`_fieldtype{`mut?#1181`, storagetype#719}(mut?{mut <- `mut?`}, zt_2)] -[visit_exp `mut?#1181`] -[visit_id mut?#1181] -[visit_exp storagetype#719] -[visit_id storagetype#719] +[visit_exp `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))] +[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))] +[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt_2)] [visit_exp (mut?{mut <- `mut?`}, zt_2)] [visit_exp mut?{mut <- `mut?`}] [scope_enter mut] @@ -64031,55 +52607,37 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp $sx(zt_2)] [visit_exp zt_2] [visit_id zt_2] not free -[check_dims] elemidx#31 heaptype#1445 ht i i#43055 instr*#2190 j n numtype#487 numtype#489 numtype#491 state#2075 typeidx#1652 x y z -[visit_exp `%;%`_config{state#2075, `instr*#2190`}(z, [`REF.NULL`_instr{heaptype#1445}(ht) `CONST`_instr{numtype#487}(`I32`_numtype, i) `CONST`_instr{numtype#489}(`I32`_numtype, j) `CONST`_instr{numtype#491}(`I32`_numtype, `%`_num_{i#43055}(n)) `ARRAY.INIT_ELEM`_instr{typeidx#1652, elemidx#31}(x, y)])] -[visit_exp state#2075] -[visit_id state#2075] -[visit_exp `instr*#2190`] -[visit_id instr*#2190] -[visit_exp (z, [`REF.NULL`_instr{heaptype#1445}(ht) `CONST`_instr{numtype#487}(`I32`_numtype, i) `CONST`_instr{numtype#489}(`I32`_numtype, j) `CONST`_instr{numtype#491}(`I32`_numtype, `%`_num_{i#43055}(n)) `ARRAY.INIT_ELEM`_instr{typeidx#1652, elemidx#31}(x, y)])] +[check_dims] ht i j n x y z +[visit_exp `%;%`_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)])] +[visit_exp (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)])] [visit_exp z] [visit_id z] -[visit_exp [`REF.NULL`_instr{heaptype#1445}(ht) `CONST`_instr{numtype#487}(`I32`_numtype, i) `CONST`_instr{numtype#489}(`I32`_numtype, j) `CONST`_instr{numtype#491}(`I32`_numtype, `%`_num_{i#43055}(n)) `ARRAY.INIT_ELEM`_instr{typeidx#1652, elemidx#31}(x, y)]] -[visit_exp `REF.NULL`_instr{heaptype#1445}(ht)] -[visit_exp heaptype#1445] -[visit_id heaptype#1445] +[visit_exp [`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)]] +[visit_exp `REF.NULL`_instr(ht)] [visit_exp (ht)] [visit_exp ht] [visit_id ht] -[visit_exp `CONST`_instr{numtype#487}(`I32`_numtype, i)] -[visit_exp numtype#487] -[visit_id numtype#487] +[visit_exp `CONST`_instr(`I32`_numtype, i)] [visit_exp (`I32`_numtype, i)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp i] [visit_id i] -[visit_exp `CONST`_instr{numtype#489}(`I32`_numtype, j)] -[visit_exp numtype#489] -[visit_id numtype#489] +[visit_exp `CONST`_instr(`I32`_numtype, j)] [visit_exp (`I32`_numtype, j)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp j] [visit_id j] -[visit_exp `CONST`_instr{numtype#491}(`I32`_numtype, `%`_num_{i#43055}(n))] -[visit_exp numtype#491] -[visit_id numtype#491] -[visit_exp (`I32`_numtype, `%`_num_{i#43055}(n))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] +[visit_exp (`I32`_numtype, `%`_num_(n))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#43055}(n)] -[visit_exp i#43055] -[visit_id i#43055] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `ARRAY.INIT_ELEM`_instr{typeidx#1652, elemidx#31}(x, y)] -[visit_exp typeidx#1652] -[visit_id typeidx#1652] -[visit_exp elemidx#31] -[visit_id elemidx#31] +[visit_exp `ARRAY.INIT_ELEM`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] @@ -64088,55 +52646,37 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[check_dims] a arrayaddr#61 elemidx#33 fieldval*#13 i i#43135 i#43177 instr*#2202 j n numtype#493 numtype#495 numtype#497 state#2087 typeidx#1654 x y z -[visit_exp `%;%`_config{state#2087, `instr*#2202`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#61}(a) `CONST`_instr{numtype#493}(`I32`_numtype, i) `CONST`_instr{numtype#495}(`I32`_numtype, j) `CONST`_instr{numtype#497}(`I32`_numtype, `%`_num_{i#43135}(n)) `ARRAY.INIT_ELEM`_instr{typeidx#1654, elemidx#33}(x, y)])] -[visit_exp state#2087] -[visit_id state#2087] -[visit_exp `instr*#2202`] -[visit_id instr*#2202] -[visit_exp (z, [`REF.ARRAY_ADDR`_instr{arrayaddr#61}(a) `CONST`_instr{numtype#493}(`I32`_numtype, i) `CONST`_instr{numtype#495}(`I32`_numtype, j) `CONST`_instr{numtype#497}(`I32`_numtype, `%`_num_{i#43135}(n)) `ARRAY.INIT_ELEM`_instr{typeidx#1654, elemidx#33}(x, y)])] +[check_dims] a i j n x y z +[visit_exp `%;%`_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)])] +[visit_exp (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)])] [visit_exp z] [visit_id z] -[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#61}(a) `CONST`_instr{numtype#493}(`I32`_numtype, i) `CONST`_instr{numtype#495}(`I32`_numtype, j) `CONST`_instr{numtype#497}(`I32`_numtype, `%`_num_{i#43135}(n)) `ARRAY.INIT_ELEM`_instr{typeidx#1654, elemidx#33}(x, y)]] -[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#61}(a)] -[visit_exp arrayaddr#61] -[visit_id arrayaddr#61] +[visit_exp [`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)]] +[visit_exp `REF.ARRAY_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] -[visit_exp `CONST`_instr{numtype#493}(`I32`_numtype, i)] -[visit_exp numtype#493] -[visit_id numtype#493] +[visit_exp `CONST`_instr(`I32`_numtype, i)] [visit_exp (`I32`_numtype, i)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp i] [visit_id i] -[visit_exp `CONST`_instr{numtype#495}(`I32`_numtype, j)] -[visit_exp numtype#495] -[visit_id numtype#495] +[visit_exp `CONST`_instr(`I32`_numtype, j)] [visit_exp (`I32`_numtype, j)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp j] [visit_id j] -[visit_exp `CONST`_instr{numtype#497}(`I32`_numtype, `%`_num_{i#43135}(n))] -[visit_exp numtype#497] -[visit_id numtype#497] -[visit_exp (`I32`_numtype, `%`_num_{i#43135}(n))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] +[visit_exp (`I32`_numtype, `%`_num_(n))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#43135}(n)] -[visit_exp i#43135] -[visit_id i#43135] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `ARRAY.INIT_ELEM`_instr{typeidx#1654, elemidx#33}(x, y)] -[visit_exp typeidx#1654] -[visit_id typeidx#1654] -[visit_exp elemidx#33] -[visit_id elemidx#33] +[visit_exp `ARRAY.INIT_ELEM`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] @@ -64145,75 +52685,53 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[visit_exp ((i!`%`_num_{i#43177}.0 + n) > |$arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#13`}|)] -[visit_exp (i!`%`_num_{i#43177}.0 + n)] -[visit_exp i!`%`_num_{i#43177}.0] -[visit_exp i!`%`_num_{i#43177}] +[visit_exp ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].`FIELDS`_arrayinst|)] +[visit_exp (i!`%`_num_.0 + n)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#43177] -[visit_id i#43177] [visit_exp n] [visit_id n] not free -[visit_exp |$arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#13`}|] -[visit_exp $arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#13`}] +[visit_exp |$arrayinst(z)[a].`FIELDS`_arrayinst|] +[visit_exp $arrayinst(z)[a].`FIELDS`_arrayinst] [visit_exp $arrayinst(z)[a]] [visit_exp $arrayinst(z)] [visit_exp z] [visit_id z] not free [visit_exp a] [visit_id a] not free -[visit_exp `fieldval*#13`] -[visit_id fieldval*#13] -[check_dims] a arrayaddr#63 elemidx#35 i i#43229 i#43271 instr*#2214 j n numtype#499 numtype#501 numtype#503 ref*#20 state#2099 typeidx#1656 x y z -[visit_exp `%;%`_config{state#2099, `instr*#2214`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#63}(a) `CONST`_instr{numtype#499}(`I32`_numtype, i) `CONST`_instr{numtype#501}(`I32`_numtype, j) `CONST`_instr{numtype#503}(`I32`_numtype, `%`_num_{i#43229}(n)) `ARRAY.INIT_ELEM`_instr{typeidx#1656, elemidx#35}(x, y)])] -[visit_exp state#2099] -[visit_id state#2099] -[visit_exp `instr*#2214`] -[visit_id instr*#2214] -[visit_exp (z, [`REF.ARRAY_ADDR`_instr{arrayaddr#63}(a) `CONST`_instr{numtype#499}(`I32`_numtype, i) `CONST`_instr{numtype#501}(`I32`_numtype, j) `CONST`_instr{numtype#503}(`I32`_numtype, `%`_num_{i#43229}(n)) `ARRAY.INIT_ELEM`_instr{typeidx#1656, elemidx#35}(x, y)])] +[check_dims] a i j n x y z +[visit_exp `%;%`_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)])] +[visit_exp (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)])] [visit_exp z] [visit_id z] -[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#63}(a) `CONST`_instr{numtype#499}(`I32`_numtype, i) `CONST`_instr{numtype#501}(`I32`_numtype, j) `CONST`_instr{numtype#503}(`I32`_numtype, `%`_num_{i#43229}(n)) `ARRAY.INIT_ELEM`_instr{typeidx#1656, elemidx#35}(x, y)]] -[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#63}(a)] -[visit_exp arrayaddr#63] -[visit_id arrayaddr#63] +[visit_exp [`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)]] +[visit_exp `REF.ARRAY_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] -[visit_exp `CONST`_instr{numtype#499}(`I32`_numtype, i)] -[visit_exp numtype#499] -[visit_id numtype#499] +[visit_exp `CONST`_instr(`I32`_numtype, i)] [visit_exp (`I32`_numtype, i)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp i] [visit_id i] -[visit_exp `CONST`_instr{numtype#501}(`I32`_numtype, j)] -[visit_exp numtype#501] -[visit_id numtype#501] +[visit_exp `CONST`_instr(`I32`_numtype, j)] [visit_exp (`I32`_numtype, j)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp j] [visit_id j] -[visit_exp `CONST`_instr{numtype#503}(`I32`_numtype, `%`_num_{i#43229}(n))] -[visit_exp numtype#503] -[visit_id numtype#503] -[visit_exp (`I32`_numtype, `%`_num_{i#43229}(n))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] +[visit_exp (`I32`_numtype, `%`_num_(n))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#43229}(n)] -[visit_exp i#43229] -[visit_id i#43229] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `ARRAY.INIT_ELEM`_instr{typeidx#1656, elemidx#35}(x, y)] -[visit_exp typeidx#1656] -[visit_id typeidx#1656] -[visit_exp elemidx#35] -[visit_id elemidx#35] +[visit_exp `ARRAY.INIT_ELEM`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] @@ -64222,74 +52740,52 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[visit_exp ((j!`%`_num_{i#43271}.0 + n) > |$elem(z, y).`REFS`_eleminst{`ref*#20`}|)] -[visit_exp (j!`%`_num_{i#43271}.0 + n)] -[visit_exp j!`%`_num_{i#43271}.0] -[visit_exp j!`%`_num_{i#43271}] +[visit_exp ((j!`%`_num_.0 + n) > |$elem(z, y).`REFS`_eleminst|)] +[visit_exp (j!`%`_num_.0 + n)] +[visit_exp j!`%`_num_.0] +[visit_exp j!`%`_num_] [visit_exp j] [visit_id j] not free -[visit_exp i#43271] -[visit_id i#43271] [visit_exp n] [visit_id n] not free -[visit_exp |$elem(z, y).`REFS`_eleminst{`ref*#20`}|] -[visit_exp $elem(z, y).`REFS`_eleminst{`ref*#20`}] +[visit_exp |$elem(z, y).`REFS`_eleminst|] +[visit_exp $elem(z, y).`REFS`_eleminst] [visit_exp $elem(z, y)] [visit_exp z] [visit_id z] not free [visit_exp y] [visit_id y] not free -[visit_exp `ref*#20`] -[visit_id ref*#20] -[check_dims] a arrayaddr#65 elemidx#37 i i#43335 instr*#2226 j n numtype#505 numtype#507 numtype#509 state#2111 typeidx#1658 x y z -[visit_exp `%;%`_config{state#2111, `instr*#2226`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#65}(a) `CONST`_instr{numtype#505}(`I32`_numtype, i) `CONST`_instr{numtype#507}(`I32`_numtype, j) `CONST`_instr{numtype#509}(`I32`_numtype, `%`_num_{i#43335}(n)) `ARRAY.INIT_ELEM`_instr{typeidx#1658, elemidx#37}(x, y)])] -[visit_exp state#2111] -[visit_id state#2111] -[visit_exp `instr*#2226`] -[visit_id instr*#2226] -[visit_exp (z, [`REF.ARRAY_ADDR`_instr{arrayaddr#65}(a) `CONST`_instr{numtype#505}(`I32`_numtype, i) `CONST`_instr{numtype#507}(`I32`_numtype, j) `CONST`_instr{numtype#509}(`I32`_numtype, `%`_num_{i#43335}(n)) `ARRAY.INIT_ELEM`_instr{typeidx#1658, elemidx#37}(x, y)])] +[check_dims] a i j n x y z +[visit_exp `%;%`_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)])] +[visit_exp (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)])] [visit_exp z] [visit_id z] -[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#65}(a) `CONST`_instr{numtype#505}(`I32`_numtype, i) `CONST`_instr{numtype#507}(`I32`_numtype, j) `CONST`_instr{numtype#509}(`I32`_numtype, `%`_num_{i#43335}(n)) `ARRAY.INIT_ELEM`_instr{typeidx#1658, elemidx#37}(x, y)]] -[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#65}(a)] -[visit_exp arrayaddr#65] -[visit_id arrayaddr#65] +[visit_exp [`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)]] +[visit_exp `REF.ARRAY_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] -[visit_exp `CONST`_instr{numtype#505}(`I32`_numtype, i)] -[visit_exp numtype#505] -[visit_id numtype#505] +[visit_exp `CONST`_instr(`I32`_numtype, i)] [visit_exp (`I32`_numtype, i)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp i] [visit_id i] -[visit_exp `CONST`_instr{numtype#507}(`I32`_numtype, j)] -[visit_exp numtype#507] -[visit_id numtype#507] +[visit_exp `CONST`_instr(`I32`_numtype, j)] [visit_exp (`I32`_numtype, j)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp j] [visit_id j] -[visit_exp `CONST`_instr{numtype#509}(`I32`_numtype, `%`_num_{i#43335}(n))] -[visit_exp numtype#509] -[visit_id numtype#509] -[visit_exp (`I32`_numtype, `%`_num_{i#43335}(n))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] +[visit_exp (`I32`_numtype, `%`_num_(n))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#43335}(n)] -[visit_exp i#43335] -[visit_id i#43335] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `ARRAY.INIT_ELEM`_instr{typeidx#1658, elemidx#37}(x, y)] -[visit_exp typeidx#1658] -[visit_id typeidx#1658] -[visit_exp elemidx#37] -[visit_id elemidx#37] +[visit_exp `ARRAY.INIT_ELEM`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] @@ -64300,70 +52796,48 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp n] [visit_id n] not free [visit_exp 0] -[check_dims] a arrayaddr#67 arrayaddr#69 arrayaddr#71 elemidx#39 elemidx#41 i i#43415 i#43495 i#43505 i#43531 i#43541 i#43563 i#43613 instr*#2238 j n numtype#511 numtype#513 numtype#515 numtype#517 numtype#519 numtype#521 numtype#523 ref ref*#21 state#2123 typeidx#1660 typeidx#1662 typeidx#1664 x y z -[visit_exp `%;%`_config{state#2123, `instr*#2238`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#67}(a) `CONST`_instr{numtype#511}(`I32`_numtype, i) `CONST`_instr{numtype#513}(`I32`_numtype, j) `CONST`_instr{numtype#515}(`I32`_numtype, `%`_num_{i#43415}(n)) `ARRAY.INIT_ELEM`_instr{typeidx#1660, elemidx#39}(x, y)])] -[visit_exp state#2123] -[visit_id state#2123] -[visit_exp `instr*#2238`] -[visit_id instr*#2238] -[visit_exp (z, [`REF.ARRAY_ADDR`_instr{arrayaddr#67}(a) `CONST`_instr{numtype#511}(`I32`_numtype, i) `CONST`_instr{numtype#513}(`I32`_numtype, j) `CONST`_instr{numtype#515}(`I32`_numtype, `%`_num_{i#43415}(n)) `ARRAY.INIT_ELEM`_instr{typeidx#1660, elemidx#39}(x, y)])] +[check_dims] a i j n ref x y z +[visit_exp `%;%`_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)])] +[visit_exp (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)])] [visit_exp z] [visit_id z] -[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#67}(a) `CONST`_instr{numtype#511}(`I32`_numtype, i) `CONST`_instr{numtype#513}(`I32`_numtype, j) `CONST`_instr{numtype#515}(`I32`_numtype, `%`_num_{i#43415}(n)) `ARRAY.INIT_ELEM`_instr{typeidx#1660, elemidx#39}(x, y)]] -[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#67}(a)] -[visit_exp arrayaddr#67] -[visit_id arrayaddr#67] +[visit_exp [`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)]] +[visit_exp `REF.ARRAY_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] -[visit_exp `CONST`_instr{numtype#511}(`I32`_numtype, i)] -[visit_exp numtype#511] -[visit_id numtype#511] +[visit_exp `CONST`_instr(`I32`_numtype, i)] [visit_exp (`I32`_numtype, i)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp i] [visit_id i] -[visit_exp `CONST`_instr{numtype#513}(`I32`_numtype, j)] -[visit_exp numtype#513] -[visit_id numtype#513] +[visit_exp `CONST`_instr(`I32`_numtype, j)] [visit_exp (`I32`_numtype, j)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp j] [visit_id j] -[visit_exp `CONST`_instr{numtype#515}(`I32`_numtype, `%`_num_{i#43415}(n))] -[visit_exp numtype#515] -[visit_id numtype#515] -[visit_exp (`I32`_numtype, `%`_num_{i#43415}(n))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] +[visit_exp (`I32`_numtype, `%`_num_(n))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#43415}(n)] -[visit_exp i#43415] -[visit_id i#43415] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `ARRAY.INIT_ELEM`_instr{typeidx#1660, elemidx#39}(x, y)] -[visit_exp typeidx#1660] -[visit_id typeidx#1660] -[visit_exp elemidx#39] -[visit_id elemidx#39] +[visit_exp `ARRAY.INIT_ELEM`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] [visit_exp y] [visit_id y] -[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#69}(a) `CONST`_instr{numtype#517}(`I32`_numtype, i) (ref : ref <: instr) `ARRAY.SET`_instr{typeidx#1662}(x) `REF.ARRAY_ADDR`_instr{arrayaddr#71}(a) `CONST`_instr{numtype#519}(`I32`_numtype, `%`_num_{i#43505}((i!`%`_num_{i#43495}.0 + 1))) `CONST`_instr{numtype#521}(`I32`_numtype, `%`_num_{i#43541}((j!`%`_num_{i#43531}.0 + 1))) `CONST`_instr{numtype#523}(`I32`_numtype, `%`_num_{i#43563}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `ARRAY.INIT_ELEM`_instr{typeidx#1664, elemidx#41}(x, y)]] -[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#69}(a)] -[visit_exp arrayaddr#69] -[visit_id arrayaddr#69] +[visit_exp [`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)]] +[visit_exp `REF.ARRAY_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] not free -[visit_exp `CONST`_instr{numtype#517}(`I32`_numtype, i)] -[visit_exp numtype#517] -[visit_id numtype#517] +[visit_exp `CONST`_instr(`I32`_numtype, i)] [visit_exp (`I32`_numtype, i)] [visit_exp `I32`_numtype] [visit_exp ()] @@ -64372,63 +52846,43 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp (ref : ref <: instr)] [visit_exp ref] [visit_id ref] -[visit_exp `ARRAY.SET`_instr{typeidx#1662}(x)] -[visit_exp typeidx#1662] -[visit_id typeidx#1662] +[visit_exp `ARRAY.SET`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] not free -[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#71}(a)] -[visit_exp arrayaddr#71] -[visit_id arrayaddr#71] +[visit_exp `REF.ARRAY_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] not free -[visit_exp `CONST`_instr{numtype#519}(`I32`_numtype, `%`_num_{i#43505}((i!`%`_num_{i#43495}.0 + 1)))] -[visit_exp numtype#519] -[visit_id numtype#519] -[visit_exp (`I32`_numtype, `%`_num_{i#43505}((i!`%`_num_{i#43495}.0 + 1)))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_((i!`%`_num_.0 + 1)))] +[visit_exp (`I32`_numtype, `%`_num_((i!`%`_num_.0 + 1)))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#43505}((i!`%`_num_{i#43495}.0 + 1))] -[visit_exp i#43505] -[visit_id i#43505] -[visit_exp ((i!`%`_num_{i#43495}.0 + 1))] -[visit_exp (i!`%`_num_{i#43495}.0 + 1)] -[visit_exp i!`%`_num_{i#43495}.0] -[visit_exp i!`%`_num_{i#43495}] +[visit_exp `%`_num_((i!`%`_num_.0 + 1))] +[visit_exp ((i!`%`_num_.0 + 1))] +[visit_exp (i!`%`_num_.0 + 1)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#43495] -[visit_id i#43495] [visit_exp 1] -[visit_exp `CONST`_instr{numtype#521}(`I32`_numtype, `%`_num_{i#43541}((j!`%`_num_{i#43531}.0 + 1)))] -[visit_exp numtype#521] -[visit_id numtype#521] -[visit_exp (`I32`_numtype, `%`_num_{i#43541}((j!`%`_num_{i#43531}.0 + 1)))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_((j!`%`_num_.0 + 1)))] +[visit_exp (`I32`_numtype, `%`_num_((j!`%`_num_.0 + 1)))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#43541}((j!`%`_num_{i#43531}.0 + 1))] -[visit_exp i#43541] -[visit_id i#43541] -[visit_exp ((j!`%`_num_{i#43531}.0 + 1))] -[visit_exp (j!`%`_num_{i#43531}.0 + 1)] -[visit_exp j!`%`_num_{i#43531}.0] -[visit_exp j!`%`_num_{i#43531}] +[visit_exp `%`_num_((j!`%`_num_.0 + 1))] +[visit_exp ((j!`%`_num_.0 + 1))] +[visit_exp (j!`%`_num_.0 + 1)] +[visit_exp j!`%`_num_.0] +[visit_exp j!`%`_num_] [visit_exp j] [visit_id j] not free -[visit_exp i#43531] -[visit_id i#43531] [visit_exp 1] -[visit_exp `CONST`_instr{numtype#523}(`I32`_numtype, `%`_num_{i#43563}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp numtype#523] -[visit_id numtype#523] -[visit_exp (`I32`_numtype, `%`_num_{i#43563}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp (`I32`_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#43563}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp i#43563] -[visit_id i#43563] +[visit_exp `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] [visit_exp ((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] [visit_exp (((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] [visit_exp ((n : nat <:> int) - (1 : nat <:> int))] @@ -64437,83 +52891,57 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id n] not free [visit_exp (1 : nat <:> int)] [visit_exp 1] -[visit_exp `ARRAY.INIT_ELEM`_instr{typeidx#1664, elemidx#41}(x, y)] -[visit_exp typeidx#1664] -[visit_id typeidx#1664] -[visit_exp elemidx#41] -[visit_id elemidx#41] +[visit_exp `ARRAY.INIT_ELEM`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] not free [visit_exp y] [visit_id y] not free -[visit_exp (ref = $elem(z, y).`REFS`_eleminst{`ref*#21`}[j!`%`_num_{i#43613}.0])] +[visit_exp (ref = $elem(z, y).`REFS`_eleminst[j!`%`_num_.0])] [visit_exp ref] [visit_id ref] not free -[visit_exp $elem(z, y).`REFS`_eleminst{`ref*#21`}[j!`%`_num_{i#43613}.0]] -[visit_exp $elem(z, y).`REFS`_eleminst{`ref*#21`}] +[visit_exp $elem(z, y).`REFS`_eleminst[j!`%`_num_.0]] +[visit_exp $elem(z, y).`REFS`_eleminst] [visit_exp $elem(z, y)] [visit_exp z] [visit_id z] not free [visit_exp y] [visit_id y] not free -[visit_exp `ref*#21`] -[visit_id ref*#21] -[visit_exp j!`%`_num_{i#43613}.0] -[visit_exp j!`%`_num_{i#43613}] +[visit_exp j!`%`_num_.0] +[visit_exp j!`%`_num_] [visit_exp j] [visit_id j] not free -[visit_exp i#43613] -[visit_id i#43613] -[check_dims] dataidx#31 heaptype#1447 ht i i#43665 instr*#2250 j n numtype#525 numtype#527 numtype#529 state#2135 typeidx#1666 x y z -[visit_exp `%;%`_config{state#2135, `instr*#2250`}(z, [`REF.NULL`_instr{heaptype#1447}(ht) `CONST`_instr{numtype#525}(`I32`_numtype, i) `CONST`_instr{numtype#527}(`I32`_numtype, j) `CONST`_instr{numtype#529}(`I32`_numtype, `%`_num_{i#43665}(n)) `ARRAY.INIT_DATA`_instr{typeidx#1666, dataidx#31}(x, y)])] -[visit_exp state#2135] -[visit_id state#2135] -[visit_exp `instr*#2250`] -[visit_id instr*#2250] -[visit_exp (z, [`REF.NULL`_instr{heaptype#1447}(ht) `CONST`_instr{numtype#525}(`I32`_numtype, i) `CONST`_instr{numtype#527}(`I32`_numtype, j) `CONST`_instr{numtype#529}(`I32`_numtype, `%`_num_{i#43665}(n)) `ARRAY.INIT_DATA`_instr{typeidx#1666, dataidx#31}(x, y)])] +[check_dims] ht i j n x y z +[visit_exp `%;%`_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)])] +[visit_exp (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)])] [visit_exp z] [visit_id z] -[visit_exp [`REF.NULL`_instr{heaptype#1447}(ht) `CONST`_instr{numtype#525}(`I32`_numtype, i) `CONST`_instr{numtype#527}(`I32`_numtype, j) `CONST`_instr{numtype#529}(`I32`_numtype, `%`_num_{i#43665}(n)) `ARRAY.INIT_DATA`_instr{typeidx#1666, dataidx#31}(x, y)]] -[visit_exp `REF.NULL`_instr{heaptype#1447}(ht)] -[visit_exp heaptype#1447] -[visit_id heaptype#1447] +[visit_exp [`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)]] +[visit_exp `REF.NULL`_instr(ht)] [visit_exp (ht)] [visit_exp ht] [visit_id ht] -[visit_exp `CONST`_instr{numtype#525}(`I32`_numtype, i)] -[visit_exp numtype#525] -[visit_id numtype#525] +[visit_exp `CONST`_instr(`I32`_numtype, i)] [visit_exp (`I32`_numtype, i)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp i] [visit_id i] -[visit_exp `CONST`_instr{numtype#527}(`I32`_numtype, j)] -[visit_exp numtype#527] -[visit_id numtype#527] +[visit_exp `CONST`_instr(`I32`_numtype, j)] [visit_exp (`I32`_numtype, j)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp j] [visit_id j] -[visit_exp `CONST`_instr{numtype#529}(`I32`_numtype, `%`_num_{i#43665}(n))] -[visit_exp numtype#529] -[visit_id numtype#529] -[visit_exp (`I32`_numtype, `%`_num_{i#43665}(n))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] +[visit_exp (`I32`_numtype, `%`_num_(n))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#43665}(n)] -[visit_exp i#43665] -[visit_id i#43665] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `ARRAY.INIT_DATA`_instr{typeidx#1666, dataidx#31}(x, y)] -[visit_exp typeidx#1666] -[visit_id typeidx#1666] -[visit_exp dataidx#31] -[visit_id dataidx#31] +[visit_exp `ARRAY.INIT_DATA`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] @@ -64522,55 +52950,37 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[check_dims] a arrayaddr#73 dataidx#33 fieldval*#14 i i#43745 i#43787 instr*#2262 j n numtype#531 numtype#533 numtype#535 state#2147 typeidx#1668 x y z -[visit_exp `%;%`_config{state#2147, `instr*#2262`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#73}(a) `CONST`_instr{numtype#531}(`I32`_numtype, i) `CONST`_instr{numtype#533}(`I32`_numtype, j) `CONST`_instr{numtype#535}(`I32`_numtype, `%`_num_{i#43745}(n)) `ARRAY.INIT_DATA`_instr{typeidx#1668, dataidx#33}(x, y)])] -[visit_exp state#2147] -[visit_id state#2147] -[visit_exp `instr*#2262`] -[visit_id instr*#2262] -[visit_exp (z, [`REF.ARRAY_ADDR`_instr{arrayaddr#73}(a) `CONST`_instr{numtype#531}(`I32`_numtype, i) `CONST`_instr{numtype#533}(`I32`_numtype, j) `CONST`_instr{numtype#535}(`I32`_numtype, `%`_num_{i#43745}(n)) `ARRAY.INIT_DATA`_instr{typeidx#1668, dataidx#33}(x, y)])] +[check_dims] a i j n x y z +[visit_exp `%;%`_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)])] +[visit_exp (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)])] [visit_exp z] [visit_id z] -[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#73}(a) `CONST`_instr{numtype#531}(`I32`_numtype, i) `CONST`_instr{numtype#533}(`I32`_numtype, j) `CONST`_instr{numtype#535}(`I32`_numtype, `%`_num_{i#43745}(n)) `ARRAY.INIT_DATA`_instr{typeidx#1668, dataidx#33}(x, y)]] -[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#73}(a)] -[visit_exp arrayaddr#73] -[visit_id arrayaddr#73] +[visit_exp [`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)]] +[visit_exp `REF.ARRAY_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] -[visit_exp `CONST`_instr{numtype#531}(`I32`_numtype, i)] -[visit_exp numtype#531] -[visit_id numtype#531] +[visit_exp `CONST`_instr(`I32`_numtype, i)] [visit_exp (`I32`_numtype, i)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp i] [visit_id i] -[visit_exp `CONST`_instr{numtype#533}(`I32`_numtype, j)] -[visit_exp numtype#533] -[visit_id numtype#533] +[visit_exp `CONST`_instr(`I32`_numtype, j)] [visit_exp (`I32`_numtype, j)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp j] [visit_id j] -[visit_exp `CONST`_instr{numtype#535}(`I32`_numtype, `%`_num_{i#43745}(n))] -[visit_exp numtype#535] -[visit_id numtype#535] -[visit_exp (`I32`_numtype, `%`_num_{i#43745}(n))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] +[visit_exp (`I32`_numtype, `%`_num_(n))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#43745}(n)] -[visit_exp i#43745] -[visit_id i#43745] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `ARRAY.INIT_DATA`_instr{typeidx#1668, dataidx#33}(x, y)] -[visit_exp typeidx#1668] -[visit_id typeidx#1668] -[visit_exp dataidx#33] -[visit_id dataidx#33] +[visit_exp `ARRAY.INIT_DATA`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] @@ -64579,75 +52989,53 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[visit_exp ((i!`%`_num_{i#43787}.0 + n) > |$arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#14`}|)] -[visit_exp (i!`%`_num_{i#43787}.0 + n)] -[visit_exp i!`%`_num_{i#43787}.0] -[visit_exp i!`%`_num_{i#43787}] +[visit_exp ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].`FIELDS`_arrayinst|)] +[visit_exp (i!`%`_num_.0 + n)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#43787] -[visit_id i#43787] [visit_exp n] [visit_id n] not free -[visit_exp |$arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#14`}|] -[visit_exp $arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#14`}] +[visit_exp |$arrayinst(z)[a].`FIELDS`_arrayinst|] +[visit_exp $arrayinst(z)[a].`FIELDS`_arrayinst] [visit_exp $arrayinst(z)[a]] [visit_exp $arrayinst(z)] [visit_exp z] [visit_id z] not free [visit_exp a] [visit_id a] not free -[visit_exp `fieldval*#14`] -[visit_id fieldval*#14] -[check_dims] a arrayaddr#75 byte*#1877 dataidx#35 fieldtype#55 i i#43839 i#43893 instr*#2274 j mut mut?#1193 n numtype#537 numtype#539 numtype#541 state#2159 storagetype#731 typeidx#1670 x y z zt -[visit_exp `%;%`_config{state#2159, `instr*#2274`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#75}(a) `CONST`_instr{numtype#537}(`I32`_numtype, i) `CONST`_instr{numtype#539}(`I32`_numtype, j) `CONST`_instr{numtype#541}(`I32`_numtype, `%`_num_{i#43839}(n)) `ARRAY.INIT_DATA`_instr{typeidx#1670, dataidx#35}(x, y)])] -[visit_exp state#2159] -[visit_id state#2159] -[visit_exp `instr*#2274`] -[visit_id instr*#2274] -[visit_exp (z, [`REF.ARRAY_ADDR`_instr{arrayaddr#75}(a) `CONST`_instr{numtype#537}(`I32`_numtype, i) `CONST`_instr{numtype#539}(`I32`_numtype, j) `CONST`_instr{numtype#541}(`I32`_numtype, `%`_num_{i#43839}(n)) `ARRAY.INIT_DATA`_instr{typeidx#1670, dataidx#35}(x, y)])] +[check_dims] a i j mut n x y z zt +[visit_exp `%;%`_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)])] +[visit_exp (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)])] [visit_exp z] [visit_id z] -[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#75}(a) `CONST`_instr{numtype#537}(`I32`_numtype, i) `CONST`_instr{numtype#539}(`I32`_numtype, j) `CONST`_instr{numtype#541}(`I32`_numtype, `%`_num_{i#43839}(n)) `ARRAY.INIT_DATA`_instr{typeidx#1670, dataidx#35}(x, y)]] -[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#75}(a)] -[visit_exp arrayaddr#75] -[visit_id arrayaddr#75] +[visit_exp [`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)]] +[visit_exp `REF.ARRAY_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] -[visit_exp `CONST`_instr{numtype#537}(`I32`_numtype, i)] -[visit_exp numtype#537] -[visit_id numtype#537] +[visit_exp `CONST`_instr(`I32`_numtype, i)] [visit_exp (`I32`_numtype, i)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp i] [visit_id i] -[visit_exp `CONST`_instr{numtype#539}(`I32`_numtype, j)] -[visit_exp numtype#539] -[visit_id numtype#539] +[visit_exp `CONST`_instr(`I32`_numtype, j)] [visit_exp (`I32`_numtype, j)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp j] [visit_id j] -[visit_exp `CONST`_instr{numtype#541}(`I32`_numtype, `%`_num_{i#43839}(n))] -[visit_exp numtype#541] -[visit_id numtype#541] -[visit_exp (`I32`_numtype, `%`_num_{i#43839}(n))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] +[visit_exp (`I32`_numtype, `%`_num_(n))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#43839}(n)] -[visit_exp i#43839] -[visit_id i#43839] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `ARRAY.INIT_DATA`_instr{typeidx#1670, dataidx#35}(x, y)] -[visit_exp typeidx#1670] -[visit_id typeidx#1670] -[visit_exp dataidx#35] -[visit_id dataidx#35] +[visit_exp `ARRAY.INIT_DATA`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] @@ -64656,21 +53044,15 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp [`TRAP`_instr]] [visit_exp `TRAP`_instr] [visit_exp ()] -[visit_exp ($type(z, x), `ARRAY`_comptype{fieldtype#55}(`%%`_fieldtype{`mut?#1193`, storagetype#731}(mut?{mut <- `mut?`}, zt)))] +[visit_exp ($type(z, x), `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)))] [visit_exp $type(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `ARRAY`_comptype{fieldtype#55}(`%%`_fieldtype{`mut?#1193`, storagetype#731}(mut?{mut <- `mut?`}, zt))] -[visit_exp fieldtype#55] -[visit_id fieldtype#55] -[visit_exp (`%%`_fieldtype{`mut?#1193`, storagetype#731}(mut?{mut <- `mut?`}, zt))] -[visit_exp `%%`_fieldtype{`mut?#1193`, storagetype#731}(mut?{mut <- `mut?`}, zt)] -[visit_exp `mut?#1193`] -[visit_id mut?#1193] -[visit_exp storagetype#731] -[visit_id storagetype#731] +[visit_exp `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] +[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] +[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)] [visit_exp (mut?{mut <- `mut?`}, zt)] [visit_exp mut?{mut <- `mut?`}] [scope_enter mut] @@ -64683,14 +53065,12 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id mut?] [visit_exp zt] [visit_id zt] -[visit_exp ((j!`%`_num_{i#43893}.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).`BYTES`_datainst{`byte*#1877`}|)] -[visit_exp (j!`%`_num_{i#43893}.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] -[visit_exp j!`%`_num_{i#43893}.0] -[visit_exp j!`%`_num_{i#43893}] +[visit_exp ((j!`%`_num_.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).`BYTES`_datainst|)] +[visit_exp (j!`%`_num_.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] +[visit_exp j!`%`_num_.0] +[visit_exp j!`%`_num_] [visit_exp j] [visit_id j] not free -[visit_exp i#43893] -[visit_id i#43893] [visit_exp ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] [visit_exp (((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat))] [visit_exp ((n * $zsize(zt)) : nat <:> rat)] @@ -64702,64 +53082,44 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id zt] not free [visit_exp (8 : nat <:> rat)] [visit_exp 8] -[visit_exp |$data(z, y).`BYTES`_datainst{`byte*#1877`}|] -[visit_exp $data(z, y).`BYTES`_datainst{`byte*#1877`}] +[visit_exp |$data(z, y).`BYTES`_datainst|] +[visit_exp $data(z, y).`BYTES`_datainst] [visit_exp $data(z, y)] [visit_exp z] [visit_id z] not free [visit_exp y] [visit_id y] not free -[visit_exp `byte*#1877`] -[visit_id byte*#1877] -[check_dims] a arrayaddr#77 dataidx#37 i i#43957 instr*#2286 j n numtype#543 numtype#545 numtype#547 state#2171 typeidx#1672 x y z -[visit_exp `%;%`_config{state#2171, `instr*#2286`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#77}(a) `CONST`_instr{numtype#543}(`I32`_numtype, i) `CONST`_instr{numtype#545}(`I32`_numtype, j) `CONST`_instr{numtype#547}(`I32`_numtype, `%`_num_{i#43957}(n)) `ARRAY.INIT_DATA`_instr{typeidx#1672, dataidx#37}(x, y)])] -[visit_exp state#2171] -[visit_id state#2171] -[visit_exp `instr*#2286`] -[visit_id instr*#2286] -[visit_exp (z, [`REF.ARRAY_ADDR`_instr{arrayaddr#77}(a) `CONST`_instr{numtype#543}(`I32`_numtype, i) `CONST`_instr{numtype#545}(`I32`_numtype, j) `CONST`_instr{numtype#547}(`I32`_numtype, `%`_num_{i#43957}(n)) `ARRAY.INIT_DATA`_instr{typeidx#1672, dataidx#37}(x, y)])] +[check_dims] a i j n x y z +[visit_exp `%;%`_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)])] +[visit_exp (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)])] [visit_exp z] [visit_id z] -[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#77}(a) `CONST`_instr{numtype#543}(`I32`_numtype, i) `CONST`_instr{numtype#545}(`I32`_numtype, j) `CONST`_instr{numtype#547}(`I32`_numtype, `%`_num_{i#43957}(n)) `ARRAY.INIT_DATA`_instr{typeidx#1672, dataidx#37}(x, y)]] -[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#77}(a)] -[visit_exp arrayaddr#77] -[visit_id arrayaddr#77] +[visit_exp [`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)]] +[visit_exp `REF.ARRAY_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] -[visit_exp `CONST`_instr{numtype#543}(`I32`_numtype, i)] -[visit_exp numtype#543] -[visit_id numtype#543] +[visit_exp `CONST`_instr(`I32`_numtype, i)] [visit_exp (`I32`_numtype, i)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp i] [visit_id i] -[visit_exp `CONST`_instr{numtype#545}(`I32`_numtype, j)] -[visit_exp numtype#545] -[visit_id numtype#545] +[visit_exp `CONST`_instr(`I32`_numtype, j)] [visit_exp (`I32`_numtype, j)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp j] [visit_id j] -[visit_exp `CONST`_instr{numtype#547}(`I32`_numtype, `%`_num_{i#43957}(n))] -[visit_exp numtype#547] -[visit_id numtype#547] -[visit_exp (`I32`_numtype, `%`_num_{i#43957}(n))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] +[visit_exp (`I32`_numtype, `%`_num_(n))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#43957}(n)] -[visit_exp i#43957] -[visit_id i#43957] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `ARRAY.INIT_DATA`_instr{typeidx#1672, dataidx#37}(x, y)] -[visit_exp typeidx#1672] -[visit_id typeidx#1672] -[visit_exp dataidx#37] -[visit_id dataidx#37] +[visit_exp `ARRAY.INIT_DATA`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] @@ -64770,70 +53130,48 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp n] [visit_id n] not free [visit_exp 0] -[check_dims] a arrayaddr#79 arrayaddr#81 arrayaddr#83 byte*#1878 c dataidx#39 dataidx#41 fieldtype#57 i i#44037 i#44117 i#44127 i#44153 i#44163 i#44185 i#44247 instr*#2298 j mut mut?#1205 n numtype#549 numtype#551 numtype#553 numtype#555 numtype#557 numtype#559 numtype#561 state#2183 storagetype#743 typeidx#1674 typeidx#1676 typeidx#1678 x y z zt -[visit_exp `%;%`_config{state#2183, `instr*#2298`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#79}(a) `CONST`_instr{numtype#549}(`I32`_numtype, i) `CONST`_instr{numtype#551}(`I32`_numtype, j) `CONST`_instr{numtype#553}(`I32`_numtype, `%`_num_{i#44037}(n)) `ARRAY.INIT_DATA`_instr{typeidx#1674, dataidx#39}(x, y)])] -[visit_exp state#2183] -[visit_id state#2183] -[visit_exp `instr*#2298`] -[visit_id instr*#2298] -[visit_exp (z, [`REF.ARRAY_ADDR`_instr{arrayaddr#79}(a) `CONST`_instr{numtype#549}(`I32`_numtype, i) `CONST`_instr{numtype#551}(`I32`_numtype, j) `CONST`_instr{numtype#553}(`I32`_numtype, `%`_num_{i#44037}(n)) `ARRAY.INIT_DATA`_instr{typeidx#1674, dataidx#39}(x, y)])] +[check_dims] a c i j mut n x y z zt +[visit_exp `%;%`_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)])] +[visit_exp (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)])] [visit_exp z] [visit_id z] -[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#79}(a) `CONST`_instr{numtype#549}(`I32`_numtype, i) `CONST`_instr{numtype#551}(`I32`_numtype, j) `CONST`_instr{numtype#553}(`I32`_numtype, `%`_num_{i#44037}(n)) `ARRAY.INIT_DATA`_instr{typeidx#1674, dataidx#39}(x, y)]] -[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#79}(a)] -[visit_exp arrayaddr#79] -[visit_id arrayaddr#79] +[visit_exp [`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)]] +[visit_exp `REF.ARRAY_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] -[visit_exp `CONST`_instr{numtype#549}(`I32`_numtype, i)] -[visit_exp numtype#549] -[visit_id numtype#549] +[visit_exp `CONST`_instr(`I32`_numtype, i)] [visit_exp (`I32`_numtype, i)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp i] [visit_id i] -[visit_exp `CONST`_instr{numtype#551}(`I32`_numtype, j)] -[visit_exp numtype#551] -[visit_id numtype#551] +[visit_exp `CONST`_instr(`I32`_numtype, j)] [visit_exp (`I32`_numtype, j)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp j] [visit_id j] -[visit_exp `CONST`_instr{numtype#553}(`I32`_numtype, `%`_num_{i#44037}(n))] -[visit_exp numtype#553] -[visit_id numtype#553] -[visit_exp (`I32`_numtype, `%`_num_{i#44037}(n))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] +[visit_exp (`I32`_numtype, `%`_num_(n))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#44037}(n)] -[visit_exp i#44037] -[visit_id i#44037] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `ARRAY.INIT_DATA`_instr{typeidx#1674, dataidx#39}(x, y)] -[visit_exp typeidx#1674] -[visit_id typeidx#1674] -[visit_exp dataidx#39] -[visit_id dataidx#39] +[visit_exp `ARRAY.INIT_DATA`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] [visit_exp y] [visit_id y] -[visit_exp [`REF.ARRAY_ADDR`_instr{arrayaddr#81}(a) `CONST`_instr{numtype#555}(`I32`_numtype, i) $const($cunpack(zt), $cunpacknum_(zt, c)) `ARRAY.SET`_instr{typeidx#1676}(x) `REF.ARRAY_ADDR`_instr{arrayaddr#83}(a) `CONST`_instr{numtype#557}(`I32`_numtype, `%`_num_{i#44127}((i!`%`_num_{i#44117}.0 + 1))) `CONST`_instr{numtype#559}(`I32`_numtype, `%`_num_{i#44163}((j!`%`_num_{i#44153}.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))) `CONST`_instr{numtype#561}(`I32`_numtype, `%`_num_{i#44185}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `ARRAY.INIT_DATA`_instr{typeidx#1678, dataidx#41}(x, y)]] -[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#81}(a)] -[visit_exp arrayaddr#81] -[visit_id arrayaddr#81] +[visit_exp [`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)]] +[visit_exp `REF.ARRAY_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] not free -[visit_exp `CONST`_instr{numtype#555}(`I32`_numtype, i)] -[visit_exp numtype#555] -[visit_id numtype#555] +[visit_exp `CONST`_instr(`I32`_numtype, i)] [visit_exp (`I32`_numtype, i)] [visit_exp `I32`_numtype] [visit_exp ()] @@ -64848,53 +53186,37 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id zt] not free [visit_exp c] [visit_id c] -[visit_exp `ARRAY.SET`_instr{typeidx#1676}(x)] -[visit_exp typeidx#1676] -[visit_id typeidx#1676] +[visit_exp `ARRAY.SET`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] not free -[visit_exp `REF.ARRAY_ADDR`_instr{arrayaddr#83}(a)] -[visit_exp arrayaddr#83] -[visit_id arrayaddr#83] +[visit_exp `REF.ARRAY_ADDR`_instr(a)] [visit_exp (a)] [visit_exp a] [visit_id a] not free -[visit_exp `CONST`_instr{numtype#557}(`I32`_numtype, `%`_num_{i#44127}((i!`%`_num_{i#44117}.0 + 1)))] -[visit_exp numtype#557] -[visit_id numtype#557] -[visit_exp (`I32`_numtype, `%`_num_{i#44127}((i!`%`_num_{i#44117}.0 + 1)))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_((i!`%`_num_.0 + 1)))] +[visit_exp (`I32`_numtype, `%`_num_((i!`%`_num_.0 + 1)))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#44127}((i!`%`_num_{i#44117}.0 + 1))] -[visit_exp i#44127] -[visit_id i#44127] -[visit_exp ((i!`%`_num_{i#44117}.0 + 1))] -[visit_exp (i!`%`_num_{i#44117}.0 + 1)] -[visit_exp i!`%`_num_{i#44117}.0] -[visit_exp i!`%`_num_{i#44117}] +[visit_exp `%`_num_((i!`%`_num_.0 + 1))] +[visit_exp ((i!`%`_num_.0 + 1))] +[visit_exp (i!`%`_num_.0 + 1)] +[visit_exp i!`%`_num_.0] +[visit_exp i!`%`_num_] [visit_exp i] [visit_id i] not free -[visit_exp i#44117] -[visit_id i#44117] [visit_exp 1] -[visit_exp `CONST`_instr{numtype#559}(`I32`_numtype, `%`_num_{i#44163}((j!`%`_num_{i#44153}.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))] -[visit_exp numtype#559] -[visit_id numtype#559] -[visit_exp (`I32`_numtype, `%`_num_{i#44163}((j!`%`_num_{i#44153}.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_((j!`%`_num_.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))] +[visit_exp (`I32`_numtype, `%`_num_((j!`%`_num_.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#44163}((j!`%`_num_{i#44153}.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))] -[visit_exp i#44163] -[visit_id i#44163] -[visit_exp ((j!`%`_num_{i#44153}.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))] -[visit_exp (j!`%`_num_{i#44153}.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] -[visit_exp j!`%`_num_{i#44153}.0] -[visit_exp j!`%`_num_{i#44153}] +[visit_exp `%`_num_((j!`%`_num_.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))] +[visit_exp ((j!`%`_num_.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))] +[visit_exp (j!`%`_num_.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] +[visit_exp j!`%`_num_.0] +[visit_exp j!`%`_num_] [visit_exp j] [visit_id j] not free -[visit_exp i#44153] -[visit_id i#44153] [visit_exp ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] [visit_exp (($zsize(zt) : nat <:> rat) / (8 : nat <:> rat))] [visit_exp ($zsize(zt) : nat <:> rat)] @@ -64903,15 +53225,11 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id zt] not free [visit_exp (8 : nat <:> rat)] [visit_exp 8] -[visit_exp `CONST`_instr{numtype#561}(`I32`_numtype, `%`_num_{i#44185}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp numtype#561] -[visit_id numtype#561] -[visit_exp (`I32`_numtype, `%`_num_{i#44185}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] +[visit_exp (`I32`_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#44185}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp i#44185] -[visit_id i#44185] +[visit_exp `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] [visit_exp ((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] [visit_exp (((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] [visit_exp ((n : nat <:> int) - (1 : nat <:> int))] @@ -64920,31 +53238,21 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id n] not free [visit_exp (1 : nat <:> int)] [visit_exp 1] -[visit_exp `ARRAY.INIT_DATA`_instr{typeidx#1678, dataidx#41}(x, y)] -[visit_exp typeidx#1678] -[visit_id typeidx#1678] -[visit_exp dataidx#41] -[visit_id dataidx#41] +[visit_exp `ARRAY.INIT_DATA`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] not free [visit_exp y] [visit_id y] not free -[visit_exp ($type(z, x), `ARRAY`_comptype{fieldtype#57}(`%%`_fieldtype{`mut?#1205`, storagetype#743}(mut?{mut <- `mut?`}, zt)))] +[visit_exp ($type(z, x), `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)))] [visit_exp $type(z, x)] [visit_exp z] [visit_id z] not free [visit_exp x] [visit_id x] not free -[visit_exp `ARRAY`_comptype{fieldtype#57}(`%%`_fieldtype{`mut?#1205`, storagetype#743}(mut?{mut <- `mut?`}, zt))] -[visit_exp fieldtype#57] -[visit_id fieldtype#57] -[visit_exp (`%%`_fieldtype{`mut?#1205`, storagetype#743}(mut?{mut <- `mut?`}, zt))] -[visit_exp `%%`_fieldtype{`mut?#1205`, storagetype#743}(mut?{mut <- `mut?`}, zt)] -[visit_exp `mut?#1205`] -[visit_id mut?#1205] -[visit_exp storagetype#743] -[visit_id storagetype#743] +[visit_exp `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] +[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] +[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)] [visit_exp (mut?{mut <- `mut?`}, zt)] [visit_exp mut?{mut <- `mut?`}] [scope_enter mut] @@ -64957,27 +53265,23 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id mut?] [visit_exp zt] [visit_id zt] not free -[visit_exp ($zbytes_(zt, c) = $data(z, y).`BYTES`_datainst{`byte*#1878`}[j!`%`_num_{i#44247}.0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)])] +[visit_exp ($zbytes_(zt, c) = $data(z, y).`BYTES`_datainst[j!`%`_num_.0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)])] [visit_exp $zbytes_(zt, c)] [visit_exp zt] [visit_id zt] not free [visit_exp c] [visit_id c] not free -[visit_exp $data(z, y).`BYTES`_datainst{`byte*#1878`}[j!`%`_num_{i#44247}.0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]] -[visit_exp $data(z, y).`BYTES`_datainst{`byte*#1878`}] +[visit_exp $data(z, y).`BYTES`_datainst[j!`%`_num_.0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]] +[visit_exp $data(z, y).`BYTES`_datainst] [visit_exp $data(z, y)] [visit_exp z] [visit_id z] not free [visit_exp y] [visit_id y] not free -[visit_exp `byte*#1878`] -[visit_id byte*#1878] -[visit_exp j!`%`_num_{i#44247}.0] -[visit_exp j!`%`_num_{i#44247}] +[visit_exp j!`%`_num_.0] +[visit_exp j!`%`_num_] [visit_exp j] [visit_id j] not free -[visit_exp i#44247] -[visit_id i#44247] [visit_exp ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] [visit_exp (($zsize(zt) : nat <:> rat) / (8 : nat <:> rat))] [visit_exp ($zsize(zt) : nat <:> rat)] @@ -64986,59 +53290,47 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id zt] not free [visit_exp (8 : nat <:> rat)] [visit_exp 8] -[check_dims] heaptype#1449 heaptype#1451 ht -[visit_exp [`REF.NULL`_instr{heaptype#1449}(ht) `EXTERN.CONVERT_ANY`_instr]] -[visit_exp `REF.NULL`_instr{heaptype#1449}(ht)] -[visit_exp heaptype#1449] -[visit_id heaptype#1449] +[check_dims] ht +[visit_exp [`REF.NULL`_instr(ht) `EXTERN.CONVERT_ANY`_instr]] +[visit_exp `REF.NULL`_instr(ht)] [visit_exp (ht)] [visit_exp ht] [visit_id ht] [visit_exp `EXTERN.CONVERT_ANY`_instr] [visit_exp ()] -[visit_exp [`REF.NULL`_instr{heaptype#1451}(`EXTERN`_heaptype)]] -[visit_exp `REF.NULL`_instr{heaptype#1451}(`EXTERN`_heaptype)] -[visit_exp heaptype#1451] -[visit_id heaptype#1451] +[visit_exp [`REF.NULL`_instr(`EXTERN`_heaptype)]] +[visit_exp `REF.NULL`_instr(`EXTERN`_heaptype)] [visit_exp (`EXTERN`_heaptype)] [visit_exp `EXTERN`_heaptype] [visit_exp ()] -[check_dims] addrref addrref#3 +[check_dims] addrref [visit_exp [(addrref : addrref <: instr) `EXTERN.CONVERT_ANY`_instr]] [visit_exp (addrref : addrref <: instr)] [visit_exp addrref] [visit_id addrref] [visit_exp `EXTERN.CONVERT_ANY`_instr] [visit_exp ()] -[visit_exp [`REF.EXTERN`_instr{addrref#3}(addrref)]] -[visit_exp `REF.EXTERN`_instr{addrref#3}(addrref)] -[visit_exp addrref#3] -[visit_id addrref#3] +[visit_exp [`REF.EXTERN`_instr(addrref)]] +[visit_exp `REF.EXTERN`_instr(addrref)] [visit_exp (addrref)] [visit_exp addrref] [visit_id addrref] not free -[check_dims] heaptype#1453 heaptype#1455 ht -[visit_exp [`REF.NULL`_instr{heaptype#1453}(ht) `ANY.CONVERT_EXTERN`_instr]] -[visit_exp `REF.NULL`_instr{heaptype#1453}(ht)] -[visit_exp heaptype#1453] -[visit_id heaptype#1453] +[check_dims] ht +[visit_exp [`REF.NULL`_instr(ht) `ANY.CONVERT_EXTERN`_instr]] +[visit_exp `REF.NULL`_instr(ht)] [visit_exp (ht)] [visit_exp ht] [visit_id ht] [visit_exp `ANY.CONVERT_EXTERN`_instr] [visit_exp ()] -[visit_exp [`REF.NULL`_instr{heaptype#1455}(`ANY`_heaptype)]] -[visit_exp `REF.NULL`_instr{heaptype#1455}(`ANY`_heaptype)] -[visit_exp heaptype#1455] -[visit_id heaptype#1455] +[visit_exp [`REF.NULL`_instr(`ANY`_heaptype)]] +[visit_exp `REF.NULL`_instr(`ANY`_heaptype)] [visit_exp (`ANY`_heaptype)] [visit_exp `ANY`_heaptype] [visit_exp ()] -[check_dims] addrref addrref#5 -[visit_exp [`REF.EXTERN`_instr{addrref#5}(addrref) `ANY.CONVERT_EXTERN`_instr]] -[visit_exp `REF.EXTERN`_instr{addrref#5}(addrref)] -[visit_exp addrref#5] -[visit_id addrref#5] +[check_dims] addrref +[visit_exp [`REF.EXTERN`_instr(addrref) `ANY.CONVERT_EXTERN`_instr]] +[visit_exp `REF.EXTERN`_instr(addrref)] [visit_exp (addrref)] [visit_exp addrref] [visit_id addrref] @@ -65048,28 +53340,22 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp (addrref : addrref <: instr)] [visit_exp addrref] [visit_id addrref] not free -[check_dims] c c_1 nt numtype#563 numtype#565 numtype#567 unop -[visit_exp [`CONST`_instr{numtype#563}(nt, c_1) `UNOP`_instr{numtype#565}(nt, unop)]] -[visit_exp `CONST`_instr{numtype#563}(nt, c_1)] -[visit_exp numtype#563] -[visit_id numtype#563] +[check_dims] c c_1 nt unop +[visit_exp [`CONST`_instr(nt, c_1) `UNOP`_instr(nt, unop)]] +[visit_exp `CONST`_instr(nt, c_1)] [visit_exp (nt, c_1)] [visit_exp nt] [visit_id nt] [visit_exp c_1] [visit_id c_1] -[visit_exp `UNOP`_instr{numtype#565}(nt, unop)] -[visit_exp numtype#565] -[visit_id numtype#565] +[visit_exp `UNOP`_instr(nt, unop)] [visit_exp (nt, unop)] [visit_exp nt] [visit_id nt] not free [visit_exp unop] [visit_id unop] -[visit_exp [`CONST`_instr{numtype#567}(nt, c)]] -[visit_exp `CONST`_instr{numtype#567}(nt, c)] -[visit_exp numtype#567] -[visit_id numtype#567] +[visit_exp [`CONST`_instr(nt, c)]] +[visit_exp `CONST`_instr(nt, c)] [visit_exp (nt, c)] [visit_exp nt] [visit_id nt] not free @@ -65085,19 +53371,15 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id unop] not free [visit_exp c_1] [visit_id c_1] not free -[check_dims] c_1 nt numtype#569 numtype#571 unop -[visit_exp [`CONST`_instr{numtype#569}(nt, c_1) `UNOP`_instr{numtype#571}(nt, unop)]] -[visit_exp `CONST`_instr{numtype#569}(nt, c_1)] -[visit_exp numtype#569] -[visit_id numtype#569] +[check_dims] c_1 nt unop +[visit_exp [`CONST`_instr(nt, c_1) `UNOP`_instr(nt, unop)]] +[visit_exp `CONST`_instr(nt, c_1)] [visit_exp (nt, c_1)] [visit_exp nt] [visit_id nt] [visit_exp c_1] [visit_id c_1] -[visit_exp `UNOP`_instr{numtype#571}(nt, unop)] -[visit_exp numtype#571] -[visit_id numtype#571] +[visit_exp `UNOP`_instr(nt, unop)] [visit_exp (nt, unop)] [visit_exp nt] [visit_id nt] not free @@ -65115,36 +53397,28 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp c_1] [visit_id c_1] not free [visit_exp []] -[check_dims] binop c c_1 c_2 nt numtype#573 numtype#575 numtype#577 numtype#579 -[visit_exp [`CONST`_instr{numtype#573}(nt, c_1) `CONST`_instr{numtype#575}(nt, c_2) `BINOP`_instr{numtype#577}(nt, binop)]] -[visit_exp `CONST`_instr{numtype#573}(nt, c_1)] -[visit_exp numtype#573] -[visit_id numtype#573] +[check_dims] binop c c_1 c_2 nt +[visit_exp [`CONST`_instr(nt, c_1) `CONST`_instr(nt, c_2) `BINOP`_instr(nt, binop)]] +[visit_exp `CONST`_instr(nt, c_1)] [visit_exp (nt, c_1)] [visit_exp nt] [visit_id nt] [visit_exp c_1] [visit_id c_1] -[visit_exp `CONST`_instr{numtype#575}(nt, c_2)] -[visit_exp numtype#575] -[visit_id numtype#575] +[visit_exp `CONST`_instr(nt, c_2)] [visit_exp (nt, c_2)] [visit_exp nt] [visit_id nt] not free [visit_exp c_2] [visit_id c_2] -[visit_exp `BINOP`_instr{numtype#577}(nt, binop)] -[visit_exp numtype#577] -[visit_id numtype#577] +[visit_exp `BINOP`_instr(nt, binop)] [visit_exp (nt, binop)] [visit_exp nt] [visit_id nt] not free [visit_exp binop] [visit_id binop] -[visit_exp [`CONST`_instr{numtype#579}(nt, c)]] -[visit_exp `CONST`_instr{numtype#579}(nt, c)] -[visit_exp numtype#579] -[visit_id numtype#579] +[visit_exp [`CONST`_instr(nt, c)]] +[visit_exp `CONST`_instr(nt, c)] [visit_exp (nt, c)] [visit_exp nt] [visit_id nt] not free @@ -65162,27 +53436,21 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id c_1] not free [visit_exp c_2] [visit_id c_2] not free -[check_dims] binop c_1 c_2 nt numtype#581 numtype#583 numtype#585 -[visit_exp [`CONST`_instr{numtype#581}(nt, c_1) `CONST`_instr{numtype#583}(nt, c_2) `BINOP`_instr{numtype#585}(nt, binop)]] -[visit_exp `CONST`_instr{numtype#581}(nt, c_1)] -[visit_exp numtype#581] -[visit_id numtype#581] +[check_dims] binop c_1 c_2 nt +[visit_exp [`CONST`_instr(nt, c_1) `CONST`_instr(nt, c_2) `BINOP`_instr(nt, binop)]] +[visit_exp `CONST`_instr(nt, c_1)] [visit_exp (nt, c_1)] [visit_exp nt] [visit_id nt] [visit_exp c_1] [visit_id c_1] -[visit_exp `CONST`_instr{numtype#583}(nt, c_2)] -[visit_exp numtype#583] -[visit_id numtype#583] +[visit_exp `CONST`_instr(nt, c_2)] [visit_exp (nt, c_2)] [visit_exp nt] [visit_id nt] not free [visit_exp c_2] [visit_id c_2] -[visit_exp `BINOP`_instr{numtype#585}(nt, binop)] -[visit_exp numtype#585] -[visit_id numtype#585] +[visit_exp `BINOP`_instr(nt, binop)] [visit_exp (nt, binop)] [visit_exp nt] [visit_id nt] not free @@ -65202,28 +53470,22 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp c_2] [visit_id c_2] not free [visit_exp []] -[check_dims] c c_1 nt numtype#587 numtype#589 numtype#591 testop -[visit_exp [`CONST`_instr{numtype#587}(nt, c_1) `TESTOP`_instr{numtype#589}(nt, testop)]] -[visit_exp `CONST`_instr{numtype#587}(nt, c_1)] -[visit_exp numtype#587] -[visit_id numtype#587] +[check_dims] c c_1 nt testop +[visit_exp [`CONST`_instr(nt, c_1) `TESTOP`_instr(nt, testop)]] +[visit_exp `CONST`_instr(nt, c_1)] [visit_exp (nt, c_1)] [visit_exp nt] [visit_id nt] [visit_exp c_1] [visit_id c_1] -[visit_exp `TESTOP`_instr{numtype#589}(nt, testop)] -[visit_exp numtype#589] -[visit_id numtype#589] +[visit_exp `TESTOP`_instr(nt, testop)] [visit_exp (nt, testop)] [visit_exp nt] [visit_id nt] not free [visit_exp testop] [visit_id testop] -[visit_exp [`CONST`_instr{numtype#591}(`I32`_numtype, c)]] -[visit_exp `CONST`_instr{numtype#591}(`I32`_numtype, c)] -[visit_exp numtype#591] -[visit_id numtype#591] +[visit_exp [`CONST`_instr(`I32`_numtype, c)]] +[visit_exp `CONST`_instr(`I32`_numtype, c)] [visit_exp (`I32`_numtype, c)] [visit_exp `I32`_numtype] [visit_exp ()] @@ -65239,36 +53501,28 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id testop] not free [visit_exp c_1] [visit_id c_1] not free -[check_dims] c c_1 c_2 nt numtype#593 numtype#595 numtype#597 numtype#599 relop -[visit_exp [`CONST`_instr{numtype#593}(nt, c_1) `CONST`_instr{numtype#595}(nt, c_2) `RELOP`_instr{numtype#597}(nt, relop)]] -[visit_exp `CONST`_instr{numtype#593}(nt, c_1)] -[visit_exp numtype#593] -[visit_id numtype#593] +[check_dims] c c_1 c_2 nt relop +[visit_exp [`CONST`_instr(nt, c_1) `CONST`_instr(nt, c_2) `RELOP`_instr(nt, relop)]] +[visit_exp `CONST`_instr(nt, c_1)] [visit_exp (nt, c_1)] [visit_exp nt] [visit_id nt] [visit_exp c_1] [visit_id c_1] -[visit_exp `CONST`_instr{numtype#595}(nt, c_2)] -[visit_exp numtype#595] -[visit_id numtype#595] +[visit_exp `CONST`_instr(nt, c_2)] [visit_exp (nt, c_2)] [visit_exp nt] [visit_id nt] not free [visit_exp c_2] [visit_id c_2] -[visit_exp `RELOP`_instr{numtype#597}(nt, relop)] -[visit_exp numtype#597] -[visit_id numtype#597] +[visit_exp `RELOP`_instr(nt, relop)] [visit_exp (nt, relop)] [visit_exp nt] [visit_id nt] not free [visit_exp relop] [visit_id relop] -[visit_exp [`CONST`_instr{numtype#599}(`I32`_numtype, c)]] -[visit_exp `CONST`_instr{numtype#599}(`I32`_numtype, c)] -[visit_exp numtype#599] -[visit_id numtype#599] +[visit_exp [`CONST`_instr(`I32`_numtype, c)]] +[visit_exp `CONST`_instr(`I32`_numtype, c)] [visit_exp (`I32`_numtype, c)] [visit_exp `I32`_numtype] [visit_exp ()] @@ -65286,21 +53540,15 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id c_1] not free [visit_exp c_2] [visit_id c_2] not free -[check_dims] c c_1 cvtop nt_1 nt_2 numtype#601 numtype#603 numtype_1#5 numtype_2#5 -[visit_exp [`CONST`_instr{numtype#601}(nt_1, c_1) `CVTOP`_instr{numtype_1#5, numtype_2#5}(nt_2, nt_1, cvtop)]] -[visit_exp `CONST`_instr{numtype#601}(nt_1, c_1)] -[visit_exp numtype#601] -[visit_id numtype#601] +[check_dims] c c_1 cvtop nt_1 nt_2 +[visit_exp [`CONST`_instr(nt_1, c_1) `CVTOP`_instr(nt_2, nt_1, cvtop)]] +[visit_exp `CONST`_instr(nt_1, c_1)] [visit_exp (nt_1, c_1)] [visit_exp nt_1] [visit_id nt_1] [visit_exp c_1] [visit_id c_1] -[visit_exp `CVTOP`_instr{numtype_1#5, numtype_2#5}(nt_2, nt_1, cvtop)] -[visit_exp numtype_1#5] -[visit_id numtype_1#5] -[visit_exp numtype_2#5] -[visit_id numtype_2#5] +[visit_exp `CVTOP`_instr(nt_2, nt_1, cvtop)] [visit_exp (nt_2, nt_1, cvtop)] [visit_exp nt_2] [visit_id nt_2] @@ -65308,10 +53556,8 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id nt_1] not free [visit_exp cvtop] [visit_id cvtop] -[visit_exp [`CONST`_instr{numtype#603}(nt_2, c)]] -[visit_exp `CONST`_instr{numtype#603}(nt_2, c)] -[visit_exp numtype#603] -[visit_id numtype#603] +[visit_exp [`CONST`_instr(nt_2, c)]] +[visit_exp `CONST`_instr(nt_2, c)] [visit_exp (nt_2, c)] [visit_exp nt_2] [visit_id nt_2] not free @@ -65329,21 +53575,15 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id cvtop] not free [visit_exp c_1] [visit_id c_1] not free -[check_dims] c_1 cvtop nt_1 nt_2 numtype#605 numtype_1#7 numtype_2#7 -[visit_exp [`CONST`_instr{numtype#605}(nt_1, c_1) `CVTOP`_instr{numtype_1#7, numtype_2#7}(nt_2, nt_1, cvtop)]] -[visit_exp `CONST`_instr{numtype#605}(nt_1, c_1)] -[visit_exp numtype#605] -[visit_id numtype#605] +[check_dims] c_1 cvtop nt_1 nt_2 +[visit_exp [`CONST`_instr(nt_1, c_1) `CVTOP`_instr(nt_2, nt_1, cvtop)]] +[visit_exp `CONST`_instr(nt_1, c_1)] [visit_exp (nt_1, c_1)] [visit_exp nt_1] [visit_id nt_1] [visit_exp c_1] [visit_id c_1] -[visit_exp `CVTOP`_instr{numtype_1#7, numtype_2#7}(nt_2, nt_1, cvtop)] -[visit_exp numtype_1#7] -[visit_id numtype_1#7] -[visit_exp numtype_2#7] -[visit_id numtype_2#7] +[visit_exp `CVTOP`_instr(nt_2, nt_1, cvtop)] [visit_exp (nt_2, nt_1, cvtop)] [visit_exp nt_2] [visit_id nt_2] @@ -65365,30 +53605,22 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp c_1] [visit_id c_1] not free [visit_exp []] -[check_dims] c c_1 vectype#104 vectype#106 vectype#108 vvunop vvunop#5 -[visit_exp [`VCONST`_instr{vectype#104}(`V128`_vectype, c_1) `VVUNOP`_instr{vectype#106, vvunop#5}(`V128`_vectype, vvunop)]] -[visit_exp `VCONST`_instr{vectype#104}(`V128`_vectype, c_1)] -[visit_exp vectype#104] -[visit_id vectype#104] +[check_dims] c c_1 vvunop +[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `VVUNOP`_instr(`V128`_vectype, vvunop)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] [visit_exp (`V128`_vectype, c_1)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c_1] [visit_id c_1] -[visit_exp `VVUNOP`_instr{vectype#106, vvunop#5}(`V128`_vectype, vvunop)] -[visit_exp vectype#106] -[visit_id vectype#106] -[visit_exp vvunop#5] -[visit_id vvunop#5] +[visit_exp `VVUNOP`_instr(`V128`_vectype, vvunop)] [visit_exp (`V128`_vectype, vvunop)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp vvunop] [visit_id vvunop] -[visit_exp [`VCONST`_instr{vectype#108}(`V128`_vectype, c)]] -[visit_exp `VCONST`_instr{vectype#108}(`V128`_vectype, c)] -[visit_exp vectype#108] -[visit_id vectype#108] +[visit_exp [`VCONST`_instr(`V128`_vectype, c)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c)] [visit_exp (`V128`_vectype, c)] [visit_exp `V128`_vectype] [visit_exp ()] @@ -65404,38 +53636,28 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id vvunop] not free [visit_exp c_1] [visit_id c_1] not free -[check_dims] c c_1 c_2 vectype#110 vectype#112 vectype#114 vectype#116 vvbinop vvbinop#5 -[visit_exp [`VCONST`_instr{vectype#110}(`V128`_vectype, c_1) `VCONST`_instr{vectype#112}(`V128`_vectype, c_2) `VVBINOP`_instr{vectype#114, vvbinop#5}(`V128`_vectype, vvbinop)]] -[visit_exp `VCONST`_instr{vectype#110}(`V128`_vectype, c_1)] -[visit_exp vectype#110] -[visit_id vectype#110] +[check_dims] c c_1 c_2 vvbinop +[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `VCONST`_instr(`V128`_vectype, c_2) `VVBINOP`_instr(`V128`_vectype, vvbinop)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] [visit_exp (`V128`_vectype, c_1)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c_1] [visit_id c_1] -[visit_exp `VCONST`_instr{vectype#112}(`V128`_vectype, c_2)] -[visit_exp vectype#112] -[visit_id vectype#112] +[visit_exp `VCONST`_instr(`V128`_vectype, c_2)] [visit_exp (`V128`_vectype, c_2)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c_2] [visit_id c_2] -[visit_exp `VVBINOP`_instr{vectype#114, vvbinop#5}(`V128`_vectype, vvbinop)] -[visit_exp vectype#114] -[visit_id vectype#114] -[visit_exp vvbinop#5] -[visit_id vvbinop#5] +[visit_exp `VVBINOP`_instr(`V128`_vectype, vvbinop)] [visit_exp (`V128`_vectype, vvbinop)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp vvbinop] [visit_id vvbinop] -[visit_exp [`VCONST`_instr{vectype#116}(`V128`_vectype, c)]] -[visit_exp `VCONST`_instr{vectype#116}(`V128`_vectype, c)] -[visit_exp vectype#116] -[visit_id vectype#116] +[visit_exp [`VCONST`_instr(`V128`_vectype, c)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c)] [visit_exp (`V128`_vectype, c)] [visit_exp `V128`_vectype] [visit_exp ()] @@ -65453,46 +53675,34 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id c_1] not free [visit_exp c_2] [visit_id c_2] not free -[check_dims] c c_1 c_2 c_3 vectype#118 vectype#120 vectype#122 vectype#124 vectype#126 vvternop vvternop#5 -[visit_exp [`VCONST`_instr{vectype#118}(`V128`_vectype, c_1) `VCONST`_instr{vectype#120}(`V128`_vectype, c_2) `VCONST`_instr{vectype#122}(`V128`_vectype, c_3) `VVTERNOP`_instr{vectype#124, vvternop#5}(`V128`_vectype, vvternop)]] -[visit_exp `VCONST`_instr{vectype#118}(`V128`_vectype, c_1)] -[visit_exp vectype#118] -[visit_id vectype#118] +[check_dims] c c_1 c_2 c_3 vvternop +[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `VCONST`_instr(`V128`_vectype, c_2) `VCONST`_instr(`V128`_vectype, c_3) `VVTERNOP`_instr(`V128`_vectype, vvternop)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] [visit_exp (`V128`_vectype, c_1)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c_1] [visit_id c_1] -[visit_exp `VCONST`_instr{vectype#120}(`V128`_vectype, c_2)] -[visit_exp vectype#120] -[visit_id vectype#120] +[visit_exp `VCONST`_instr(`V128`_vectype, c_2)] [visit_exp (`V128`_vectype, c_2)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c_2] [visit_id c_2] -[visit_exp `VCONST`_instr{vectype#122}(`V128`_vectype, c_3)] -[visit_exp vectype#122] -[visit_id vectype#122] +[visit_exp `VCONST`_instr(`V128`_vectype, c_3)] [visit_exp (`V128`_vectype, c_3)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c_3] [visit_id c_3] -[visit_exp `VVTERNOP`_instr{vectype#124, vvternop#5}(`V128`_vectype, vvternop)] -[visit_exp vectype#124] -[visit_id vectype#124] -[visit_exp vvternop#5] -[visit_id vvternop#5] +[visit_exp `VVTERNOP`_instr(`V128`_vectype, vvternop)] [visit_exp (`V128`_vectype, vvternop)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp vvternop] [visit_id vvternop] -[visit_exp [`VCONST`_instr{vectype#126}(`V128`_vectype, c)]] -[visit_exp `VCONST`_instr{vectype#126}(`V128`_vectype, c)] -[visit_exp vectype#126] -[visit_id vectype#126] +[visit_exp [`VCONST`_instr(`V128`_vectype, c)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c)] [visit_exp (`V128`_vectype, c)] [visit_exp `V128`_vectype] [visit_exp ()] @@ -65512,30 +53722,22 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id c_2] not free [visit_exp c_3] [visit_id c_3] not free -[check_dims] c c_1 numtype#607 vectype#128 vectype#130 vvtestop#5 -[visit_exp [`VCONST`_instr{vectype#128}(`V128`_vectype, c_1) `VVTESTOP`_instr{vectype#130, vvtestop#5}(`V128`_vectype, `ANY_TRUE`_vvtestop)]] -[visit_exp `VCONST`_instr{vectype#128}(`V128`_vectype, c_1)] -[visit_exp vectype#128] -[visit_id vectype#128] +[check_dims] c c_1 +[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `VVTESTOP`_instr(`V128`_vectype, `ANY_TRUE`_vvtestop)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] [visit_exp (`V128`_vectype, c_1)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c_1] [visit_id c_1] -[visit_exp `VVTESTOP`_instr{vectype#130, vvtestop#5}(`V128`_vectype, `ANY_TRUE`_vvtestop)] -[visit_exp vectype#130] -[visit_id vectype#130] -[visit_exp vvtestop#5] -[visit_id vvtestop#5] +[visit_exp `VVTESTOP`_instr(`V128`_vectype, `ANY_TRUE`_vvtestop)] [visit_exp (`V128`_vectype, `ANY_TRUE`_vvtestop)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp `ANY_TRUE`_vvtestop] [visit_exp ()] -[visit_exp [`CONST`_instr{numtype#607}(`I32`_numtype, c)]] -[visit_exp `CONST`_instr{numtype#607}(`I32`_numtype, c)] -[visit_exp numtype#607] -[visit_id numtype#607] +[visit_exp [`CONST`_instr(`I32`_numtype, c)]] +[visit_exp `CONST`_instr(`I32`_numtype, c)] [visit_exp (`I32`_numtype, c)] [visit_exp `I32`_numtype] [visit_exp ()] @@ -65550,28 +53752,22 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp ()] [visit_exp c_1] [visit_id c_1] not free -[check_dims] c c_1 sh shape#681 vectype#132 vectype#134 vunop -[visit_exp [`VCONST`_instr{vectype#132}(`V128`_vectype, c_1) `VUNOP`_instr{shape#681}(sh, vunop)]] -[visit_exp `VCONST`_instr{vectype#132}(`V128`_vectype, c_1)] -[visit_exp vectype#132] -[visit_id vectype#132] +[check_dims] c c_1 sh vunop +[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `VUNOP`_instr(sh, vunop)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] [visit_exp (`V128`_vectype, c_1)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c_1] [visit_id c_1] -[visit_exp `VUNOP`_instr{shape#681}(sh, vunop)] -[visit_exp shape#681] -[visit_id shape#681] +[visit_exp `VUNOP`_instr(sh, vunop)] [visit_exp (sh, vunop)] [visit_exp sh] [visit_id sh] [visit_exp vunop] [visit_id vunop] -[visit_exp [`VCONST`_instr{vectype#134}(`V128`_vectype, c)]] -[visit_exp `VCONST`_instr{vectype#134}(`V128`_vectype, c)] -[visit_exp vectype#134] -[visit_id vectype#134] +[visit_exp [`VCONST`_instr(`V128`_vectype, c)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c)] [visit_exp (`V128`_vectype, c)] [visit_exp `V128`_vectype] [visit_exp ()] @@ -65587,19 +53783,15 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id vunop] not free [visit_exp c_1] [visit_id c_1] not free -[check_dims] c_1 sh shape#683 vectype#136 vunop -[visit_exp [`VCONST`_instr{vectype#136}(`V128`_vectype, c_1) `VUNOP`_instr{shape#683}(sh, vunop)]] -[visit_exp `VCONST`_instr{vectype#136}(`V128`_vectype, c_1)] -[visit_exp vectype#136] -[visit_id vectype#136] +[check_dims] c_1 sh vunop +[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `VUNOP`_instr(sh, vunop)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] [visit_exp (`V128`_vectype, c_1)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c_1] [visit_id c_1] -[visit_exp `VUNOP`_instr{shape#683}(sh, vunop)] -[visit_exp shape#683] -[visit_id shape#683] +[visit_exp `VUNOP`_instr(sh, vunop)] [visit_exp (sh, vunop)] [visit_exp sh] [visit_id sh] @@ -65617,36 +53809,28 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp c_1] [visit_id c_1] not free [visit_exp []] -[check_dims] c c_1 c_2 sh shape#685 vbinop vectype#138 vectype#140 vectype#142 -[visit_exp [`VCONST`_instr{vectype#138}(`V128`_vectype, c_1) `VCONST`_instr{vectype#140}(`V128`_vectype, c_2) `VBINOP`_instr{shape#685}(sh, vbinop)]] -[visit_exp `VCONST`_instr{vectype#138}(`V128`_vectype, c_1)] -[visit_exp vectype#138] -[visit_id vectype#138] +[check_dims] c c_1 c_2 sh vbinop +[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `VCONST`_instr(`V128`_vectype, c_2) `VBINOP`_instr(sh, vbinop)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] [visit_exp (`V128`_vectype, c_1)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c_1] [visit_id c_1] -[visit_exp `VCONST`_instr{vectype#140}(`V128`_vectype, c_2)] -[visit_exp vectype#140] -[visit_id vectype#140] +[visit_exp `VCONST`_instr(`V128`_vectype, c_2)] [visit_exp (`V128`_vectype, c_2)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c_2] [visit_id c_2] -[visit_exp `VBINOP`_instr{shape#685}(sh, vbinop)] -[visit_exp shape#685] -[visit_id shape#685] +[visit_exp `VBINOP`_instr(sh, vbinop)] [visit_exp (sh, vbinop)] [visit_exp sh] [visit_id sh] [visit_exp vbinop] [visit_id vbinop] -[visit_exp [`VCONST`_instr{vectype#142}(`V128`_vectype, c)]] -[visit_exp `VCONST`_instr{vectype#142}(`V128`_vectype, c)] -[visit_exp vectype#142] -[visit_id vectype#142] +[visit_exp [`VCONST`_instr(`V128`_vectype, c)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c)] [visit_exp (`V128`_vectype, c)] [visit_exp `V128`_vectype] [visit_exp ()] @@ -65664,27 +53848,21 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id c_1] not free [visit_exp c_2] [visit_id c_2] not free -[check_dims] c_1 c_2 sh shape#687 vbinop vectype#144 vectype#146 -[visit_exp [`VCONST`_instr{vectype#144}(`V128`_vectype, c_1) `VCONST`_instr{vectype#146}(`V128`_vectype, c_2) `VBINOP`_instr{shape#687}(sh, vbinop)]] -[visit_exp `VCONST`_instr{vectype#144}(`V128`_vectype, c_1)] -[visit_exp vectype#144] -[visit_id vectype#144] +[check_dims] c_1 c_2 sh vbinop +[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `VCONST`_instr(`V128`_vectype, c_2) `VBINOP`_instr(sh, vbinop)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] [visit_exp (`V128`_vectype, c_1)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c_1] [visit_id c_1] -[visit_exp `VCONST`_instr{vectype#146}(`V128`_vectype, c_2)] -[visit_exp vectype#146] -[visit_id vectype#146] +[visit_exp `VCONST`_instr(`V128`_vectype, c_2)] [visit_exp (`V128`_vectype, c_2)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c_2] [visit_id c_2] -[visit_exp `VBINOP`_instr{shape#687}(sh, vbinop)] -[visit_exp shape#687] -[visit_id shape#687] +[visit_exp `VBINOP`_instr(sh, vbinop)] [visit_exp (sh, vbinop)] [visit_exp sh] [visit_id sh] @@ -65704,44 +53882,34 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp c_2] [visit_id c_2] not free [visit_exp []] -[check_dims] c c_1 c_2 c_3 sh shape#689 vectype#148 vectype#150 vectype#152 vectype#154 vternop -[visit_exp [`VCONST`_instr{vectype#148}(`V128`_vectype, c_1) `VCONST`_instr{vectype#150}(`V128`_vectype, c_2) `VCONST`_instr{vectype#152}(`V128`_vectype, c_3) `VTERNOP`_instr{shape#689}(sh, vternop)]] -[visit_exp `VCONST`_instr{vectype#148}(`V128`_vectype, c_1)] -[visit_exp vectype#148] -[visit_id vectype#148] +[check_dims] c c_1 c_2 c_3 sh vternop +[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `VCONST`_instr(`V128`_vectype, c_2) `VCONST`_instr(`V128`_vectype, c_3) `VTERNOP`_instr(sh, vternop)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] [visit_exp (`V128`_vectype, c_1)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c_1] [visit_id c_1] -[visit_exp `VCONST`_instr{vectype#150}(`V128`_vectype, c_2)] -[visit_exp vectype#150] -[visit_id vectype#150] +[visit_exp `VCONST`_instr(`V128`_vectype, c_2)] [visit_exp (`V128`_vectype, c_2)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c_2] [visit_id c_2] -[visit_exp `VCONST`_instr{vectype#152}(`V128`_vectype, c_3)] -[visit_exp vectype#152] -[visit_id vectype#152] +[visit_exp `VCONST`_instr(`V128`_vectype, c_3)] [visit_exp (`V128`_vectype, c_3)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c_3] [visit_id c_3] -[visit_exp `VTERNOP`_instr{shape#689}(sh, vternop)] -[visit_exp shape#689] -[visit_id shape#689] +[visit_exp `VTERNOP`_instr(sh, vternop)] [visit_exp (sh, vternop)] [visit_exp sh] [visit_id sh] [visit_exp vternop] [visit_id vternop] -[visit_exp [`VCONST`_instr{vectype#154}(`V128`_vectype, c)]] -[visit_exp `VCONST`_instr{vectype#154}(`V128`_vectype, c)] -[visit_exp vectype#154] -[visit_id vectype#154] +[visit_exp [`VCONST`_instr(`V128`_vectype, c)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c)] [visit_exp (`V128`_vectype, c)] [visit_exp `V128`_vectype] [visit_exp ()] @@ -65761,35 +53929,27 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id c_2] not free [visit_exp c_3] [visit_id c_3] not free -[check_dims] c_1 c_2 c_3 sh shape#691 vectype#156 vectype#158 vectype#160 vternop -[visit_exp [`VCONST`_instr{vectype#156}(`V128`_vectype, c_1) `VCONST`_instr{vectype#158}(`V128`_vectype, c_2) `VCONST`_instr{vectype#160}(`V128`_vectype, c_3) `VTERNOP`_instr{shape#691}(sh, vternop)]] -[visit_exp `VCONST`_instr{vectype#156}(`V128`_vectype, c_1)] -[visit_exp vectype#156] -[visit_id vectype#156] +[check_dims] c_1 c_2 c_3 sh vternop +[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `VCONST`_instr(`V128`_vectype, c_2) `VCONST`_instr(`V128`_vectype, c_3) `VTERNOP`_instr(sh, vternop)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] [visit_exp (`V128`_vectype, c_1)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c_1] [visit_id c_1] -[visit_exp `VCONST`_instr{vectype#158}(`V128`_vectype, c_2)] -[visit_exp vectype#158] -[visit_id vectype#158] +[visit_exp `VCONST`_instr(`V128`_vectype, c_2)] [visit_exp (`V128`_vectype, c_2)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c_2] [visit_id c_2] -[visit_exp `VCONST`_instr{vectype#160}(`V128`_vectype, c_3)] -[visit_exp vectype#160] -[visit_id vectype#160] +[visit_exp `VCONST`_instr(`V128`_vectype, c_3)] [visit_exp (`V128`_vectype, c_3)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c_3] [visit_id c_3] -[visit_exp `VTERNOP`_instr{shape#691}(sh, vternop)] -[visit_exp shape#691] -[visit_id shape#691] +[visit_exp `VTERNOP`_instr(sh, vternop)] [visit_exp (sh, vternop)] [visit_exp sh] [visit_id sh] @@ -65811,49 +53971,35 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp c_3] [visit_id c_3] not free [visit_exp []] -[check_dims] Jnn M c c_1 dim#7525 dim#7537 i i#45296 i#45303 i#45322 i#45329 i#45428 i#45438 lanetype#7525 lanetype#7537 numtype#609 shape#693 vectype#162 -[visit_exp [`VCONST`_instr{vectype#162}(`V128`_vectype, c_1) `VTESTOP`_instr{shape#693}(`%X%`_shape{lanetype#7525, dim#7525, i#45296}((Jnn : Jnn <: lanetype), `%`_dim{i#45303}(M)), `ALL_TRUE`_vtestop_)]] -[visit_exp `VCONST`_instr{vectype#162}(`V128`_vectype, c_1)] -[visit_exp vectype#162] -[visit_id vectype#162] +[check_dims] Jnn M c c_1 i +[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `VTESTOP`_instr(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), `ALL_TRUE`_vtestop_)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] [visit_exp (`V128`_vectype, c_1)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c_1] [visit_id c_1] -[visit_exp `VTESTOP`_instr{shape#693}(`%X%`_shape{lanetype#7525, dim#7525, i#45296}((Jnn : Jnn <: lanetype), `%`_dim{i#45303}(M)), `ALL_TRUE`_vtestop_)] -[visit_exp shape#693] -[visit_id shape#693] -[visit_exp (`%X%`_shape{lanetype#7525, dim#7525, i#45296}((Jnn : Jnn <: lanetype), `%`_dim{i#45303}(M)), `ALL_TRUE`_vtestop_)] -[visit_exp `%X%`_shape{lanetype#7525, dim#7525, i#45296}((Jnn : Jnn <: lanetype), `%`_dim{i#45303}(M))] -[visit_exp lanetype#7525] -[visit_id lanetype#7525] -[visit_exp dim#7525] -[visit_id dim#7525] -[visit_exp i#45296] -[visit_id i#45296] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#45303}(M))] +[visit_exp `VTESTOP`_instr(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), `ALL_TRUE`_vtestop_)] +[visit_exp (`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), `ALL_TRUE`_vtestop_)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] -[visit_exp `%`_dim{i#45303}(M)] -[visit_exp i#45303] -[visit_id i#45303] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] [visit_exp `ALL_TRUE`_vtestop_] [visit_exp ()] -[visit_exp [`CONST`_instr{numtype#609}(`I32`_numtype, c)]] -[visit_exp `CONST`_instr{numtype#609}(`I32`_numtype, c)] -[visit_exp numtype#609] -[visit_id numtype#609] +[visit_exp [`CONST`_instr(`I32`_numtype, c)]] +[visit_exp `CONST`_instr(`I32`_numtype, c)] [visit_exp (`I32`_numtype, c)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp c] [visit_id c] -[visit_exp (i*{i <- `i*`} = $lanes_(`%X%`_shape{lanetype#7537, dim#7537, i#45322}((Jnn : Jnn <: lanetype), `%`_dim{i#45329}(M)), c_1))] +[visit_exp (i*{i <- `i*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1))] [visit_exp i*{i <- `i*`}] [scope_enter i] [visit_exp i] @@ -65863,87 +54009,61 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `i*`] [visit_id i*] no dims [visit_id i*] -[visit_exp $lanes_(`%X%`_shape{lanetype#7537, dim#7537, i#45322}((Jnn : Jnn <: lanetype), `%`_dim{i#45329}(M)), c_1)] -[visit_exp `%X%`_shape{lanetype#7537, dim#7537, i#45322}((Jnn : Jnn <: lanetype), `%`_dim{i#45329}(M))] -[visit_exp lanetype#7537] -[visit_id lanetype#7537] -[visit_exp dim#7537] -[visit_id dim#7537] -[visit_exp i#45322] -[visit_id i#45322] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim{i#45329}(M))] +[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)] +[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] +[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] [visit_exp (Jnn : Jnn <: lanetype)] [visit_exp Jnn] [visit_id Jnn] not free -[visit_exp `%`_dim{i#45329}(M)] -[visit_exp i#45329] -[visit_id i#45329] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free [visit_exp c_1] [visit_id c_1] not free -[visit_exp (c!`%`_num_{i#45438}.0 = $prod($inez_($jsizenn(Jnn), i)!`%`_u32{i#45428}.0*{i <- `i*`, i#45428 <- `i#45428*`}))] -[visit_exp c!`%`_num_{i#45438}.0] -[visit_exp c!`%`_num_{i#45438}] +[visit_exp (c!`%`_num_.0 = $prod($inez_($jsizenn(Jnn), i)!`%`_u32.0*{i <- `i*`}))] +[visit_exp c!`%`_num_.0] +[visit_exp c!`%`_num_] [visit_exp c] [visit_id c] not free -[visit_exp i#45438] -[visit_id i#45438] -[visit_exp $prod($inez_($jsizenn(Jnn), i)!`%`_u32{i#45428}.0*{i <- `i*`, i#45428 <- `i#45428*`})] -[visit_exp $inez_($jsizenn(Jnn), i)!`%`_u32{i#45428}.0*{i <- `i*`, i#45428 <- `i#45428*`}] +[visit_exp $prod($inez_($jsizenn(Jnn), i)!`%`_u32.0*{i <- `i*`})] +[visit_exp $inez_($jsizenn(Jnn), i)!`%`_u32.0*{i <- `i*`}] [scope_enter i] -[scope_enter i#45428] -[visit_exp $inez_($jsizenn(Jnn), i)!`%`_u32{i#45428}.0] -[visit_exp $inez_($jsizenn(Jnn), i)!`%`_u32{i#45428}] +[visit_exp $inez_($jsizenn(Jnn), i)!`%`_u32.0] +[visit_exp $inez_($jsizenn(Jnn), i)!`%`_u32] [visit_exp $inez_($jsizenn(Jnn), i)] [visit_exp $jsizenn(Jnn)] [visit_exp Jnn] [visit_id Jnn] not free [visit_exp i] [visit_id i] not free -[visit_exp i#45428] -[visit_id i#45428] not free [visit_id i] not free -[visit_id i#45428] not free -[scope_exit i#45428] [scope_exit i] [visit_exp `i*`] [visit_id i*] not free [visit_id i*] no dims -[visit_exp `i#45428*`] -[visit_id i#45428*] no dims -[visit_id i#45428*] -[check_dims] c c_1 c_2 sh shape#695 vectype#164 vectype#166 vectype#168 vrelop -[visit_exp [`VCONST`_instr{vectype#164}(`V128`_vectype, c_1) `VCONST`_instr{vectype#166}(`V128`_vectype, c_2) `VRELOP`_instr{shape#695}(sh, vrelop)]] -[visit_exp `VCONST`_instr{vectype#164}(`V128`_vectype, c_1)] -[visit_exp vectype#164] -[visit_id vectype#164] +[check_dims] c c_1 c_2 sh vrelop +[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `VCONST`_instr(`V128`_vectype, c_2) `VRELOP`_instr(sh, vrelop)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] [visit_exp (`V128`_vectype, c_1)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c_1] [visit_id c_1] -[visit_exp `VCONST`_instr{vectype#166}(`V128`_vectype, c_2)] -[visit_exp vectype#166] -[visit_id vectype#166] +[visit_exp `VCONST`_instr(`V128`_vectype, c_2)] [visit_exp (`V128`_vectype, c_2)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c_2] [visit_id c_2] -[visit_exp `VRELOP`_instr{shape#695}(sh, vrelop)] -[visit_exp shape#695] -[visit_id shape#695] +[visit_exp `VRELOP`_instr(sh, vrelop)] [visit_exp (sh, vrelop)] [visit_exp sh] [visit_id sh] [visit_exp vrelop] [visit_id vrelop] -[visit_exp [`VCONST`_instr{vectype#168}(`V128`_vectype, c)]] -[visit_exp `VCONST`_instr{vectype#168}(`V128`_vectype, c)] -[visit_exp vectype#168] -[visit_id vectype#168] +[visit_exp [`VCONST`_instr(`V128`_vectype, c)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c)] [visit_exp (`V128`_vectype, c)] [visit_exp `V128`_vectype] [visit_exp ()] @@ -65961,36 +54081,28 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id c_1] not free [visit_exp c_2] [visit_id c_2] not free -[check_dims] c c_1 i ishape#9 numtype#611 sh vectype#170 vectype#172 vshiftop -[visit_exp [`VCONST`_instr{vectype#170}(`V128`_vectype, c_1) `CONST`_instr{numtype#611}(`I32`_numtype, i) `VSHIFTOP`_instr{ishape#9}(sh, vshiftop)]] -[visit_exp `VCONST`_instr{vectype#170}(`V128`_vectype, c_1)] -[visit_exp vectype#170] -[visit_id vectype#170] +[check_dims] c c_1 i sh vshiftop +[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `CONST`_instr(`I32`_numtype, i) `VSHIFTOP`_instr(sh, vshiftop)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] [visit_exp (`V128`_vectype, c_1)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c_1] [visit_id c_1] -[visit_exp `CONST`_instr{numtype#611}(`I32`_numtype, i)] -[visit_exp numtype#611] -[visit_id numtype#611] +[visit_exp `CONST`_instr(`I32`_numtype, i)] [visit_exp (`I32`_numtype, i)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp i] [visit_id i] -[visit_exp `VSHIFTOP`_instr{ishape#9}(sh, vshiftop)] -[visit_exp ishape#9] -[visit_id ishape#9] +[visit_exp `VSHIFTOP`_instr(sh, vshiftop)] [visit_exp (sh, vshiftop)] [visit_exp sh] [visit_id sh] [visit_exp vshiftop] [visit_id vshiftop] -[visit_exp [`VCONST`_instr{vectype#172}(`V128`_vectype, c)]] -[visit_exp `VCONST`_instr{vectype#172}(`V128`_vectype, c)] -[visit_exp vectype#172] -[visit_id vectype#172] +[visit_exp [`VCONST`_instr(`V128`_vectype, c)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c)] [visit_exp (`V128`_vectype, c)] [visit_exp `V128`_vectype] [visit_exp ()] @@ -66008,26 +54120,20 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id c_1] not free [visit_exp i] [visit_id i] not free -[check_dims] c c_1 ishape#11 numtype#613 sh vectype#174 -[visit_exp [`VCONST`_instr{vectype#174}(`V128`_vectype, c_1) `VBITMASK`_instr{ishape#11}(sh)]] -[visit_exp `VCONST`_instr{vectype#174}(`V128`_vectype, c_1)] -[visit_exp vectype#174] -[visit_id vectype#174] +[check_dims] c c_1 sh +[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `VBITMASK`_instr(sh)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] [visit_exp (`V128`_vectype, c_1)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c_1] [visit_id c_1] -[visit_exp `VBITMASK`_instr{ishape#11}(sh)] -[visit_exp ishape#11] -[visit_id ishape#11] +[visit_exp `VBITMASK`_instr(sh)] [visit_exp (sh)] [visit_exp sh] [visit_id sh] -[visit_exp [`CONST`_instr{numtype#613}(`I32`_numtype, c)]] -[visit_exp `CONST`_instr{numtype#613}(`I32`_numtype, c)] -[visit_exp numtype#613] -[visit_id numtype#613] +[visit_exp [`CONST`_instr(`I32`_numtype, c)]] +[visit_exp `CONST`_instr(`I32`_numtype, c)] [visit_exp (`I32`_numtype, c)] [visit_exp `I32`_numtype] [visit_exp ()] @@ -66041,36 +54147,28 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id sh] not free [visit_exp c_1] [visit_id c_1] not free -[check_dims] bshape#9 c c_1 c_2 sh swizzlop vectype#176 vectype#178 vectype#180 -[visit_exp [`VCONST`_instr{vectype#176}(`V128`_vectype, c_1) `VCONST`_instr{vectype#178}(`V128`_vectype, c_2) `VSWIZZLOP`_instr{bshape#9}(sh, swizzlop)]] -[visit_exp `VCONST`_instr{vectype#176}(`V128`_vectype, c_1)] -[visit_exp vectype#176] -[visit_id vectype#176] +[check_dims] c c_1 c_2 sh swizzlop +[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `VCONST`_instr(`V128`_vectype, c_2) `VSWIZZLOP`_instr(sh, swizzlop)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] [visit_exp (`V128`_vectype, c_1)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c_1] [visit_id c_1] -[visit_exp `VCONST`_instr{vectype#178}(`V128`_vectype, c_2)] -[visit_exp vectype#178] -[visit_id vectype#178] +[visit_exp `VCONST`_instr(`V128`_vectype, c_2)] [visit_exp (`V128`_vectype, c_2)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c_2] [visit_id c_2] -[visit_exp `VSWIZZLOP`_instr{bshape#9}(sh, swizzlop)] -[visit_exp bshape#9] -[visit_id bshape#9] +[visit_exp `VSWIZZLOP`_instr(sh, swizzlop)] [visit_exp (sh, swizzlop)] [visit_exp sh] [visit_id sh] [visit_exp swizzlop] [visit_id swizzlop] -[visit_exp [`VCONST`_instr{vectype#180}(`V128`_vectype, c)]] -[visit_exp `VCONST`_instr{vectype#180}(`V128`_vectype, c)] -[visit_exp vectype#180] -[visit_id vectype#180] +[visit_exp [`VCONST`_instr(`V128`_vectype, c)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c)] [visit_exp (`V128`_vectype, c)] [visit_exp `V128`_vectype] [visit_exp ()] @@ -66088,33 +54186,21 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id c_1] not free [visit_exp c_2] [visit_id c_2] not free -[check_dims] bshape#11 c c_1 c_2 i i#45740 laneidx*#5 sh shape#733 vectype#182 vectype#184 vectype#186 -[visit_exp [`VCONST`_instr{vectype#182}(`V128`_vectype, c_1) `VCONST`_instr{vectype#184}(`V128`_vectype, c_2) `VSHUFFLE`_instr{bshape#11, `laneidx*#5`, i#45740, shape#733}(sh, i*{i <- `i*`})]] -[visit_exp `VCONST`_instr{vectype#182}(`V128`_vectype, c_1)] -[visit_exp vectype#182] -[visit_id vectype#182] +[check_dims] c c_1 c_2 i sh +[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `VCONST`_instr(`V128`_vectype, c_2) `VSHUFFLE`_instr(sh, i*{i <- `i*`})]] +[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] [visit_exp (`V128`_vectype, c_1)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c_1] [visit_id c_1] -[visit_exp `VCONST`_instr{vectype#184}(`V128`_vectype, c_2)] -[visit_exp vectype#184] -[visit_id vectype#184] +[visit_exp `VCONST`_instr(`V128`_vectype, c_2)] [visit_exp (`V128`_vectype, c_2)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c_2] [visit_id c_2] -[visit_exp `VSHUFFLE`_instr{bshape#11, `laneidx*#5`, i#45740, shape#733}(sh, i*{i <- `i*`})] -[visit_exp bshape#11] -[visit_id bshape#11] -[visit_exp `laneidx*#5`] -[visit_id laneidx*#5] -[visit_exp i#45740] -[visit_id i#45740] -[visit_exp shape#733] -[visit_id shape#733] +[visit_exp `VSHUFFLE`_instr(sh, i*{i <- `i*`})] [visit_exp (sh, i*{i <- `i*`})] [visit_exp sh] [visit_id sh] @@ -66127,10 +54213,8 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `i*`] [visit_id i*] no dims [visit_id i*] -[visit_exp [`VCONST`_instr{vectype#186}(`V128`_vectype, c)]] -[visit_exp `VCONST`_instr{vectype#186}(`V128`_vectype, c)] -[visit_exp vectype#186] -[visit_id vectype#186] +[visit_exp [`VCONST`_instr(`V128`_vectype, c)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c)] [visit_exp (`V128`_vectype, c)] [visit_exp `V128`_vectype] [visit_exp ()] @@ -66155,63 +54239,41 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id c_1] not free [visit_exp c_2] [visit_id c_2] not free -[check_dims] Lnn M c c_1 dim#7575 dim#7587 i#45836 i#45843 i#45862 i#45869 lanetype#7575 lanetype#7587 numtype#615 shape#746 vectype#188 -[visit_exp [`CONST`_instr{numtype#615}($lunpack(Lnn), c_1) `VSPLAT`_instr{shape#746}(`%X%`_shape{lanetype#7575, dim#7575, i#45836}(Lnn, `%`_dim{i#45843}(M)))]] -[visit_exp `CONST`_instr{numtype#615}($lunpack(Lnn), c_1)] -[visit_exp numtype#615] -[visit_id numtype#615] +[check_dims] Lnn M c c_1 +[visit_exp [`CONST`_instr($lunpack(Lnn), c_1) `VSPLAT`_instr(`%X%`_shape(Lnn, `%`_dim(M)))]] +[visit_exp `CONST`_instr($lunpack(Lnn), c_1)] [visit_exp ($lunpack(Lnn), c_1)] [visit_exp $lunpack(Lnn)] [visit_exp Lnn] [visit_id Lnn] [visit_exp c_1] [visit_id c_1] -[visit_exp `VSPLAT`_instr{shape#746}(`%X%`_shape{lanetype#7575, dim#7575, i#45836}(Lnn, `%`_dim{i#45843}(M)))] -[visit_exp shape#746] -[visit_id shape#746] -[visit_exp (`%X%`_shape{lanetype#7575, dim#7575, i#45836}(Lnn, `%`_dim{i#45843}(M)))] -[visit_exp `%X%`_shape{lanetype#7575, dim#7575, i#45836}(Lnn, `%`_dim{i#45843}(M))] -[visit_exp lanetype#7575] -[visit_id lanetype#7575] -[visit_exp dim#7575] -[visit_id dim#7575] -[visit_exp i#45836] -[visit_id i#45836] -[visit_exp (Lnn, `%`_dim{i#45843}(M))] +[visit_exp `VSPLAT`_instr(`%X%`_shape(Lnn, `%`_dim(M)))] +[visit_exp (`%X%`_shape(Lnn, `%`_dim(M)))] +[visit_exp `%X%`_shape(Lnn, `%`_dim(M))] +[visit_exp (Lnn, `%`_dim(M))] [visit_exp Lnn] [visit_id Lnn] not free -[visit_exp `%`_dim{i#45843}(M)] -[visit_exp i#45843] -[visit_id i#45843] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] -[visit_exp [`VCONST`_instr{vectype#188}(`V128`_vectype, c)]] -[visit_exp `VCONST`_instr{vectype#188}(`V128`_vectype, c)] -[visit_exp vectype#188] -[visit_id vectype#188] +[visit_exp [`VCONST`_instr(`V128`_vectype, c)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c)] [visit_exp (`V128`_vectype, c)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c] [visit_id c] -[visit_exp (c = $inv_lanes_(`%X%`_shape{lanetype#7587, dim#7587, i#45862}(Lnn, `%`_dim{i#45869}(M)), $lpacknum_(Lnn, c_1)^M{}))] +[visit_exp (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{}))] [visit_exp c] [visit_id c] not free -[visit_exp $inv_lanes_(`%X%`_shape{lanetype#7587, dim#7587, i#45862}(Lnn, `%`_dim{i#45869}(M)), $lpacknum_(Lnn, c_1)^M{})] -[visit_exp `%X%`_shape{lanetype#7587, dim#7587, i#45862}(Lnn, `%`_dim{i#45869}(M))] -[visit_exp lanetype#7587] -[visit_id lanetype#7587] -[visit_exp dim#7587] -[visit_id dim#7587] -[visit_exp i#45862] -[visit_id i#45862] -[visit_exp (Lnn, `%`_dim{i#45869}(M))] +[visit_exp $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})] +[visit_exp `%X%`_shape(Lnn, `%`_dim(M))] +[visit_exp (Lnn, `%`_dim(M))] [visit_exp Lnn] [visit_id Lnn] not free -[visit_exp `%`_dim{i#45869}(M)] -[visit_exp i#45869] -[visit_id i#45869] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free @@ -66223,115 +54285,71 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id c_1] not free [visit_exp M] [visit_id M] not free -[check_dims] M c_1 c_2 dim#7610 dim#7622 i i#45931 i#45938 i#45957 i#45964 i#45984 laneidx#25 lanetype#7610 lanetype#7622 nt numtype#617 shape#748 sx?#27 vectype#190 -[visit_exp [`VCONST`_instr{vectype#190}(`V128`_vectype, c_1) `VEXTRACT_LANE`_instr{shape#748, `sx?#27`, laneidx#25}(`%X%`_shape{lanetype#7610, dim#7610, i#45931}((nt : numtype <: lanetype), `%`_dim{i#45938}(M)), ?(), i)]] -[visit_exp `VCONST`_instr{vectype#190}(`V128`_vectype, c_1)] -[visit_exp vectype#190] -[visit_id vectype#190] +[check_dims] M c_1 c_2 i nt +[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `VEXTRACT_LANE`_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] [visit_exp (`V128`_vectype, c_1)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c_1] [visit_id c_1] -[visit_exp `VEXTRACT_LANE`_instr{shape#748, `sx?#27`, laneidx#25}(`%X%`_shape{lanetype#7610, dim#7610, i#45931}((nt : numtype <: lanetype), `%`_dim{i#45938}(M)), ?(), i)] -[visit_exp shape#748] -[visit_id shape#748] -[visit_exp `sx?#27`] -[visit_id sx?#27] -[visit_exp laneidx#25] -[visit_id laneidx#25] -[visit_exp (`%X%`_shape{lanetype#7610, dim#7610, i#45931}((nt : numtype <: lanetype), `%`_dim{i#45938}(M)), ?(), i)] -[visit_exp `%X%`_shape{lanetype#7610, dim#7610, i#45931}((nt : numtype <: lanetype), `%`_dim{i#45938}(M))] -[visit_exp lanetype#7610] -[visit_id lanetype#7610] -[visit_exp dim#7610] -[visit_id dim#7610] -[visit_exp i#45931] -[visit_id i#45931] -[visit_exp ((nt : numtype <: lanetype), `%`_dim{i#45938}(M))] +[visit_exp `VEXTRACT_LANE`_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)] +[visit_exp (`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)] +[visit_exp `%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))] +[visit_exp ((nt : numtype <: lanetype), `%`_dim(M))] [visit_exp (nt : numtype <: lanetype)] [visit_exp nt] [visit_id nt] -[visit_exp `%`_dim{i#45938}(M)] -[visit_exp i#45938] -[visit_id i#45938] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] [visit_exp ?()] [visit_exp i] [visit_id i] -[visit_exp [`CONST`_instr{numtype#617}(nt, c_2)]] -[visit_exp `CONST`_instr{numtype#617}(nt, c_2)] -[visit_exp numtype#617] -[visit_id numtype#617] +[visit_exp [`CONST`_instr(nt, c_2)]] +[visit_exp `CONST`_instr(nt, c_2)] [visit_exp (nt, c_2)] [visit_exp nt] [visit_id nt] not free [visit_exp c_2] [visit_id c_2] -[visit_exp (c_2 = $lanes_(`%X%`_shape{lanetype#7622, dim#7622, i#45957}((nt : numtype <: lanetype), `%`_dim{i#45964}(M)), c_1)[i!`%`_laneidx{i#45984}.0])] +[visit_exp (c_2 = $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_laneidx.0])] [visit_exp c_2] [visit_id c_2] not free -[visit_exp $lanes_(`%X%`_shape{lanetype#7622, dim#7622, i#45957}((nt : numtype <: lanetype), `%`_dim{i#45964}(M)), c_1)[i!`%`_laneidx{i#45984}.0]] -[visit_exp $lanes_(`%X%`_shape{lanetype#7622, dim#7622, i#45957}((nt : numtype <: lanetype), `%`_dim{i#45964}(M)), c_1)] -[visit_exp `%X%`_shape{lanetype#7622, dim#7622, i#45957}((nt : numtype <: lanetype), `%`_dim{i#45964}(M))] -[visit_exp lanetype#7622] -[visit_id lanetype#7622] -[visit_exp dim#7622] -[visit_id dim#7622] -[visit_exp i#45957] -[visit_id i#45957] -[visit_exp ((nt : numtype <: lanetype), `%`_dim{i#45964}(M))] +[visit_exp $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_laneidx.0]] +[visit_exp $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)] +[visit_exp `%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))] +[visit_exp ((nt : numtype <: lanetype), `%`_dim(M))] [visit_exp (nt : numtype <: lanetype)] [visit_exp nt] [visit_id nt] not free -[visit_exp `%`_dim{i#45964}(M)] -[visit_exp i#45964] -[visit_id i#45964] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free [visit_exp c_1] [visit_id c_1] not free -[visit_exp i!`%`_laneidx{i#45984}.0] -[visit_exp i!`%`_laneidx{i#45984}] +[visit_exp i!`%`_laneidx.0] +[visit_exp i!`%`_laneidx] [visit_exp i] [visit_id i] not free -[visit_exp i#45984] -[visit_id i#45984] -[check_dims] M c_1 c_2 dim#7639 dim#7651 i i#46018 i#46025 i#46122 i#46129 i#46149 laneidx#27 lanetype#7639 lanetype#7651 numtype#619 pt shape#750 sx sx?#29 vectype#192 -[visit_exp [`VCONST`_instr{vectype#192}(`V128`_vectype, c_1) `VEXTRACT_LANE`_instr{shape#750, `sx?#29`, laneidx#27}(`%X%`_shape{lanetype#7639, dim#7639, i#46018}((pt : packtype <: lanetype), `%`_dim{i#46025}(M)), ?(sx), i)]] -[visit_exp `VCONST`_instr{vectype#192}(`V128`_vectype, c_1)] -[visit_exp vectype#192] -[visit_id vectype#192] +[check_dims] M c_1 c_2 i pt sx +[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `VEXTRACT_LANE`_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] [visit_exp (`V128`_vectype, c_1)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c_1] [visit_id c_1] -[visit_exp `VEXTRACT_LANE`_instr{shape#750, `sx?#29`, laneidx#27}(`%X%`_shape{lanetype#7639, dim#7639, i#46018}((pt : packtype <: lanetype), `%`_dim{i#46025}(M)), ?(sx), i)] -[visit_exp shape#750] -[visit_id shape#750] -[visit_exp `sx?#29`] -[visit_id sx?#29] -[visit_exp laneidx#27] -[visit_id laneidx#27] -[visit_exp (`%X%`_shape{lanetype#7639, dim#7639, i#46018}((pt : packtype <: lanetype), `%`_dim{i#46025}(M)), ?(sx), i)] -[visit_exp `%X%`_shape{lanetype#7639, dim#7639, i#46018}((pt : packtype <: lanetype), `%`_dim{i#46025}(M))] -[visit_exp lanetype#7639] -[visit_id lanetype#7639] -[visit_exp dim#7639] -[visit_id dim#7639] -[visit_exp i#46018] -[visit_id i#46018] -[visit_exp ((pt : packtype <: lanetype), `%`_dim{i#46025}(M))] +[visit_exp `VEXTRACT_LANE`_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)] +[visit_exp (`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)] +[visit_exp `%X%`_shape((pt : packtype <: lanetype), `%`_dim(M))] +[visit_exp ((pt : packtype <: lanetype), `%`_dim(M))] [visit_exp (pt : packtype <: lanetype)] [visit_exp pt] [visit_id pt] -[visit_exp `%`_dim{i#46025}(M)] -[visit_exp i#46025] -[visit_id i#46025] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] @@ -66340,170 +54358,116 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id sx] [visit_exp i] [visit_id i] -[visit_exp [`CONST`_instr{numtype#619}(`I32`_numtype, c_2)]] -[visit_exp `CONST`_instr{numtype#619}(`I32`_numtype, c_2)] -[visit_exp numtype#619] -[visit_id numtype#619] +[visit_exp [`CONST`_instr(`I32`_numtype, c_2)]] +[visit_exp `CONST`_instr(`I32`_numtype, c_2)] [visit_exp (`I32`_numtype, c_2)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp c_2] [visit_id c_2] -[visit_exp (c_2 = $extend__($psize(pt), 32, sx, $lanes_(`%X%`_shape{lanetype#7651, dim#7651, i#46122}((pt : packtype <: lanetype), `%`_dim{i#46129}(M)), c_1)[i!`%`_laneidx{i#46149}.0]))] +[visit_exp (c_2 = $extend__($psize(pt), 32, sx, $lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_laneidx.0]))] [visit_exp c_2] [visit_id c_2] not free -[visit_exp $extend__($psize(pt), 32, sx, $lanes_(`%X%`_shape{lanetype#7651, dim#7651, i#46122}((pt : packtype <: lanetype), `%`_dim{i#46129}(M)), c_1)[i!`%`_laneidx{i#46149}.0])] +[visit_exp $extend__($psize(pt), 32, sx, $lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_laneidx.0])] [visit_exp $psize(pt)] [visit_exp pt] [visit_id pt] not free [visit_exp 32] [visit_exp sx] [visit_id sx] not free -[visit_exp $lanes_(`%X%`_shape{lanetype#7651, dim#7651, i#46122}((pt : packtype <: lanetype), `%`_dim{i#46129}(M)), c_1)[i!`%`_laneidx{i#46149}.0]] -[visit_exp $lanes_(`%X%`_shape{lanetype#7651, dim#7651, i#46122}((pt : packtype <: lanetype), `%`_dim{i#46129}(M)), c_1)] -[visit_exp `%X%`_shape{lanetype#7651, dim#7651, i#46122}((pt : packtype <: lanetype), `%`_dim{i#46129}(M))] -[visit_exp lanetype#7651] -[visit_id lanetype#7651] -[visit_exp dim#7651] -[visit_id dim#7651] -[visit_exp i#46122] -[visit_id i#46122] -[visit_exp ((pt : packtype <: lanetype), `%`_dim{i#46129}(M))] +[visit_exp $lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_laneidx.0]] +[visit_exp $lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)] +[visit_exp `%X%`_shape((pt : packtype <: lanetype), `%`_dim(M))] +[visit_exp ((pt : packtype <: lanetype), `%`_dim(M))] [visit_exp (pt : packtype <: lanetype)] [visit_exp pt] [visit_id pt] not free -[visit_exp `%`_dim{i#46129}(M)] -[visit_exp i#46129] -[visit_id i#46129] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free [visit_exp c_1] [visit_id c_1] not free -[visit_exp i!`%`_laneidx{i#46149}.0] -[visit_exp i!`%`_laneidx{i#46149}] +[visit_exp i!`%`_laneidx.0] +[visit_exp i!`%`_laneidx] [visit_exp i] [visit_id i] not free -[visit_exp i#46149] -[visit_id i#46149] -[check_dims] Lnn M c c_1 c_2 dim#7664 dim#7676 dim#7730 i i#46185 i#46192 i#46225 i#46232 i#46335 i#46342 i#46368 laneidx#29 lanetype#7664 lanetype#7676 lanetype#7730 numtype#621 shape#752 vectype#194 vectype#196 -[visit_exp [`VCONST`_instr{vectype#194}(`V128`_vectype, c_1) `CONST`_instr{numtype#621}($lunpack(Lnn), c_2) `VREPLACE_LANE`_instr{shape#752, laneidx#29}(`%X%`_shape{lanetype#7664, dim#7664, i#46185}(Lnn, `%`_dim{i#46192}(M)), i)]] -[visit_exp `VCONST`_instr{vectype#194}(`V128`_vectype, c_1)] -[visit_exp vectype#194] -[visit_id vectype#194] +[check_dims] Lnn M c c_1 c_2 i +[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `CONST`_instr($lunpack(Lnn), c_2) `VREPLACE_LANE`_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] [visit_exp (`V128`_vectype, c_1)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c_1] [visit_id c_1] -[visit_exp `CONST`_instr{numtype#621}($lunpack(Lnn), c_2)] -[visit_exp numtype#621] -[visit_id numtype#621] +[visit_exp `CONST`_instr($lunpack(Lnn), c_2)] [visit_exp ($lunpack(Lnn), c_2)] [visit_exp $lunpack(Lnn)] [visit_exp Lnn] [visit_id Lnn] [visit_exp c_2] [visit_id c_2] -[visit_exp `VREPLACE_LANE`_instr{shape#752, laneidx#29}(`%X%`_shape{lanetype#7664, dim#7664, i#46185}(Lnn, `%`_dim{i#46192}(M)), i)] -[visit_exp shape#752] -[visit_id shape#752] -[visit_exp laneidx#29] -[visit_id laneidx#29] -[visit_exp (`%X%`_shape{lanetype#7664, dim#7664, i#46185}(Lnn, `%`_dim{i#46192}(M)), i)] -[visit_exp `%X%`_shape{lanetype#7664, dim#7664, i#46185}(Lnn, `%`_dim{i#46192}(M))] -[visit_exp lanetype#7664] -[visit_id lanetype#7664] -[visit_exp dim#7664] -[visit_id dim#7664] -[visit_exp i#46185] -[visit_id i#46185] -[visit_exp (Lnn, `%`_dim{i#46192}(M))] +[visit_exp `VREPLACE_LANE`_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)] +[visit_exp (`%X%`_shape(Lnn, `%`_dim(M)), i)] +[visit_exp `%X%`_shape(Lnn, `%`_dim(M))] +[visit_exp (Lnn, `%`_dim(M))] [visit_exp Lnn] [visit_id Lnn] not free -[visit_exp `%`_dim{i#46192}(M)] -[visit_exp i#46192] -[visit_id i#46192] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] [visit_exp i] [visit_id i] -[visit_exp [`VCONST`_instr{vectype#196}(`V128`_vectype, c)]] -[visit_exp `VCONST`_instr{vectype#196}(`V128`_vectype, c)] -[visit_exp vectype#196] -[visit_id vectype#196] +[visit_exp [`VCONST`_instr(`V128`_vectype, c)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c)] [visit_exp (`V128`_vectype, c)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c] [visit_id c] -[visit_exp (c = $inv_lanes_(`%X%`_shape{lanetype#7676, dim#7676, i#46225}(Lnn, `%`_dim{i#46232}(M)), $lanes_(`%X%`_shape{lanetype#7730, dim#7730, i#46335}(Lnn, `%`_dim{i#46342}(M)), c_1)[[i!`%`_laneidx{i#46368}.0] = $lpacknum_(Lnn, c_2)]))] +[visit_exp (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[i!`%`_laneidx.0] = $lpacknum_(Lnn, c_2)]))] [visit_exp c] [visit_id c] not free -[visit_exp $inv_lanes_(`%X%`_shape{lanetype#7676, dim#7676, i#46225}(Lnn, `%`_dim{i#46232}(M)), $lanes_(`%X%`_shape{lanetype#7730, dim#7730, i#46335}(Lnn, `%`_dim{i#46342}(M)), c_1)[[i!`%`_laneidx{i#46368}.0] = $lpacknum_(Lnn, c_2)])] -[visit_exp `%X%`_shape{lanetype#7676, dim#7676, i#46225}(Lnn, `%`_dim{i#46232}(M))] -[visit_exp lanetype#7676] -[visit_id lanetype#7676] -[visit_exp dim#7676] -[visit_id dim#7676] -[visit_exp i#46225] -[visit_id i#46225] -[visit_exp (Lnn, `%`_dim{i#46232}(M))] +[visit_exp $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[i!`%`_laneidx.0] = $lpacknum_(Lnn, c_2)])] +[visit_exp `%X%`_shape(Lnn, `%`_dim(M))] +[visit_exp (Lnn, `%`_dim(M))] [visit_exp Lnn] [visit_id Lnn] not free -[visit_exp `%`_dim{i#46232}(M)] -[visit_exp i#46232] -[visit_id i#46232] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free -[visit_exp $lanes_(`%X%`_shape{lanetype#7730, dim#7730, i#46335}(Lnn, `%`_dim{i#46342}(M)), c_1)[[i!`%`_laneidx{i#46368}.0] = $lpacknum_(Lnn, c_2)]] -[visit_exp $lanes_(`%X%`_shape{lanetype#7730, dim#7730, i#46335}(Lnn, `%`_dim{i#46342}(M)), c_1)] -[visit_exp `%X%`_shape{lanetype#7730, dim#7730, i#46335}(Lnn, `%`_dim{i#46342}(M))] -[visit_exp lanetype#7730] -[visit_id lanetype#7730] -[visit_exp dim#7730] -[visit_id dim#7730] -[visit_exp i#46335] -[visit_id i#46335] -[visit_exp (Lnn, `%`_dim{i#46342}(M))] +[visit_exp $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[i!`%`_laneidx.0] = $lpacknum_(Lnn, c_2)]] +[visit_exp $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)] +[visit_exp `%X%`_shape(Lnn, `%`_dim(M))] +[visit_exp (Lnn, `%`_dim(M))] [visit_exp Lnn] [visit_id Lnn] not free -[visit_exp `%`_dim{i#46342}(M)] -[visit_exp i#46342] -[visit_id i#46342] +[visit_exp `%`_dim(M)] [visit_exp (M)] [visit_exp M] [visit_id M] not free [visit_exp c_1] [visit_id c_1] not free -[visit_exp i!`%`_laneidx{i#46368}.0] -[visit_exp i!`%`_laneidx{i#46368}] +[visit_exp i!`%`_laneidx.0] +[visit_exp i!`%`_laneidx] [visit_exp i] [visit_id i] not free -[visit_exp i#46368] -[visit_id i#46368] [visit_exp $lpacknum_(Lnn, c_2)] [visit_exp Lnn] [visit_id Lnn] not free [visit_exp c_2] [visit_id c_2] not free -[check_dims] c c_1 ishape_1#17 ishape_2#17 sh_1 sh_2 vectype#198 vectype#200 vextunop -[visit_exp [`VCONST`_instr{vectype#198}(`V128`_vectype, c_1) `VEXTUNOP`_instr{ishape_1#17, ishape_2#17}(sh_2, sh_1, vextunop)]] -[visit_exp `VCONST`_instr{vectype#198}(`V128`_vectype, c_1)] -[visit_exp vectype#198] -[visit_id vectype#198] +[check_dims] c c_1 sh_1 sh_2 vextunop +[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `VEXTUNOP`_instr(sh_2, sh_1, vextunop)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] [visit_exp (`V128`_vectype, c_1)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c_1] [visit_id c_1] -[visit_exp `VEXTUNOP`_instr{ishape_1#17, ishape_2#17}(sh_2, sh_1, vextunop)] -[visit_exp ishape_1#17] -[visit_id ishape_1#17] -[visit_exp ishape_2#17] -[visit_id ishape_2#17] +[visit_exp `VEXTUNOP`_instr(sh_2, sh_1, vextunop)] [visit_exp (sh_2, sh_1, vextunop)] [visit_exp sh_2] [visit_id sh_2] @@ -66511,10 +54475,8 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id sh_1] [visit_exp vextunop] [visit_id vextunop] -[visit_exp [`VCONST`_instr{vectype#200}(`V128`_vectype, c)]] -[visit_exp `VCONST`_instr{vectype#200}(`V128`_vectype, c)] -[visit_exp vectype#200] -[visit_id vectype#200] +[visit_exp [`VCONST`_instr(`V128`_vectype, c)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c)] [visit_exp (`V128`_vectype, c)] [visit_exp `V128`_vectype] [visit_exp ()] @@ -66532,29 +54494,21 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id c_1] not free [visit_exp c] [visit_id c] not free -[check_dims] c c_1 c_2 ishape_1#19 ishape_2#19 sh_1 sh_2 vectype#202 vectype#204 vectype#206 vextbinop -[visit_exp [`VCONST`_instr{vectype#202}(`V128`_vectype, c_1) `VCONST`_instr{vectype#204}(`V128`_vectype, c_2) `VEXTBINOP`_instr{ishape_1#19, ishape_2#19}(sh_2, sh_1, vextbinop)]] -[visit_exp `VCONST`_instr{vectype#202}(`V128`_vectype, c_1)] -[visit_exp vectype#202] -[visit_id vectype#202] +[check_dims] c c_1 c_2 sh_1 sh_2 vextbinop +[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `VCONST`_instr(`V128`_vectype, c_2) `VEXTBINOP`_instr(sh_2, sh_1, vextbinop)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] [visit_exp (`V128`_vectype, c_1)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c_1] [visit_id c_1] -[visit_exp `VCONST`_instr{vectype#204}(`V128`_vectype, c_2)] -[visit_exp vectype#204] -[visit_id vectype#204] +[visit_exp `VCONST`_instr(`V128`_vectype, c_2)] [visit_exp (`V128`_vectype, c_2)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c_2] [visit_id c_2] -[visit_exp `VEXTBINOP`_instr{ishape_1#19, ishape_2#19}(sh_2, sh_1, vextbinop)] -[visit_exp ishape_1#19] -[visit_id ishape_1#19] -[visit_exp ishape_2#19] -[visit_id ishape_2#19] +[visit_exp `VEXTBINOP`_instr(sh_2, sh_1, vextbinop)] [visit_exp (sh_2, sh_1, vextbinop)] [visit_exp sh_2] [visit_id sh_2] @@ -66562,10 +54516,8 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id sh_1] [visit_exp vextbinop] [visit_id vextbinop] -[visit_exp [`VCONST`_instr{vectype#206}(`V128`_vectype, c)]] -[visit_exp `VCONST`_instr{vectype#206}(`V128`_vectype, c)] -[visit_exp vectype#206] -[visit_id vectype#206] +[visit_exp [`VCONST`_instr(`V128`_vectype, c)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c)] [visit_exp (`V128`_vectype, c)] [visit_exp `V128`_vectype] [visit_exp ()] @@ -66585,37 +54537,27 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id c_2] not free [visit_exp c] [visit_id c] not free -[check_dims] c c_1 c_2 c_3 ishape_1#21 ishape_2#21 sh_1 sh_2 vectype#208 vectype#210 vectype#212 vectype#214 vextternop -[visit_exp [`VCONST`_instr{vectype#208}(`V128`_vectype, c_1) `VCONST`_instr{vectype#210}(`V128`_vectype, c_2) `VCONST`_instr{vectype#212}(`V128`_vectype, c_3) `VEXTTERNOP`_instr{ishape_1#21, ishape_2#21}(sh_2, sh_1, vextternop)]] -[visit_exp `VCONST`_instr{vectype#208}(`V128`_vectype, c_1)] -[visit_exp vectype#208] -[visit_id vectype#208] +[check_dims] c c_1 c_2 c_3 sh_1 sh_2 vextternop +[visit_exp [`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)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] [visit_exp (`V128`_vectype, c_1)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c_1] [visit_id c_1] -[visit_exp `VCONST`_instr{vectype#210}(`V128`_vectype, c_2)] -[visit_exp vectype#210] -[visit_id vectype#210] +[visit_exp `VCONST`_instr(`V128`_vectype, c_2)] [visit_exp (`V128`_vectype, c_2)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c_2] [visit_id c_2] -[visit_exp `VCONST`_instr{vectype#212}(`V128`_vectype, c_3)] -[visit_exp vectype#212] -[visit_id vectype#212] +[visit_exp `VCONST`_instr(`V128`_vectype, c_3)] [visit_exp (`V128`_vectype, c_3)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c_3] [visit_id c_3] -[visit_exp `VEXTTERNOP`_instr{ishape_1#21, ishape_2#21}(sh_2, sh_1, vextternop)] -[visit_exp ishape_1#21] -[visit_id ishape_1#21] -[visit_exp ishape_2#21] -[visit_id ishape_2#21] +[visit_exp `VEXTTERNOP`_instr(sh_2, sh_1, vextternop)] [visit_exp (sh_2, sh_1, vextternop)] [visit_exp sh_2] [visit_id sh_2] @@ -66623,10 +54565,8 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id sh_1] [visit_exp vextternop] [visit_id vextternop] -[visit_exp [`VCONST`_instr{vectype#214}(`V128`_vectype, c)]] -[visit_exp `VCONST`_instr{vectype#214}(`V128`_vectype, c)] -[visit_exp vectype#214] -[visit_id vectype#214] +[visit_exp [`VCONST`_instr(`V128`_vectype, c)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c)] [visit_exp (`V128`_vectype, c)] [visit_exp `V128`_vectype] [visit_exp ()] @@ -66648,43 +54588,21 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id c_3] not free [visit_exp c] [visit_id c] not free -[check_dims] Jnn#216 Jnn#217 Jnn#218 Jnn#223 Jnn#224 c c_1 c_2 ishape_1#23 ishape_2#23 sh_1 sh_2 shape#826 shape#827 shape#828 shape#841 shape#843 sx sx#408 vectype#216 vectype#218 vectype#220 -[visit_exp [`VCONST`_instr{vectype#216}(`V128`_vectype, c_1) `VCONST`_instr{vectype#218}(`V128`_vectype, c_2) `VNARROW`_instr{ishape_1#23, ishape_2#23, sx#408, shape#826, Jnn#216, shape#827, Jnn#217, shape#828, Jnn#218}(sh_2, sh_1, sx)]] -[visit_exp `VCONST`_instr{vectype#216}(`V128`_vectype, c_1)] -[visit_exp vectype#216] -[visit_id vectype#216] +[check_dims] c c_1 c_2 sh_1 sh_2 sx +[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `VCONST`_instr(`V128`_vectype, c_2) `VNARROW`_instr(sh_2, sh_1, sx)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] [visit_exp (`V128`_vectype, c_1)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c_1] [visit_id c_1] -[visit_exp `VCONST`_instr{vectype#218}(`V128`_vectype, c_2)] -[visit_exp vectype#218] -[visit_id vectype#218] +[visit_exp `VCONST`_instr(`V128`_vectype, c_2)] [visit_exp (`V128`_vectype, c_2)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c_2] [visit_id c_2] -[visit_exp `VNARROW`_instr{ishape_1#23, ishape_2#23, sx#408, shape#826, Jnn#216, shape#827, Jnn#217, shape#828, Jnn#218}(sh_2, sh_1, sx)] -[visit_exp ishape_1#23] -[visit_id ishape_1#23] -[visit_exp ishape_2#23] -[visit_id ishape_2#23] -[visit_exp sx#408] -[visit_id sx#408] -[visit_exp shape#826] -[visit_id shape#826] -[visit_exp Jnn#216] -[visit_id Jnn#216] -[visit_exp shape#827] -[visit_id shape#827] -[visit_exp Jnn#217] -[visit_id Jnn#217] -[visit_exp shape#828] -[visit_id shape#828] -[visit_exp Jnn#218] -[visit_id Jnn#218] +[visit_exp `VNARROW`_instr(sh_2, sh_1, sx)] [visit_exp (sh_2, sh_1, sx)] [visit_exp sh_2] [visit_id sh_2] @@ -66692,56 +54610,40 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id sh_1] [visit_exp sx] [visit_id sx] -[visit_exp [`VCONST`_instr{vectype#220}(`V128`_vectype, c)]] -[visit_exp `VCONST`_instr{vectype#220}(`V128`_vectype, c)] -[visit_exp vectype#220] -[visit_id vectype#220] +[visit_exp [`VCONST`_instr(`V128`_vectype, c)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c)] [visit_exp (`V128`_vectype, c)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c] [visit_id c] -[visit_exp (c = $vnarrowop__(sh_1!`%`_ishape{shape#841, Jnn#223}.0, sh_2!`%`_ishape{shape#843, Jnn#224}.0, sx, c_1, c_2))] +[visit_exp (c = $vnarrowop__(sh_1!`%`_ishape.0, sh_2!`%`_ishape.0, sx, c_1, c_2))] [visit_exp c] [visit_id c] not free -[visit_exp $vnarrowop__(sh_1!`%`_ishape{shape#841, Jnn#223}.0, sh_2!`%`_ishape{shape#843, Jnn#224}.0, sx, c_1, c_2)] -[visit_exp sh_1!`%`_ishape{shape#841, Jnn#223}.0] -[visit_exp sh_1!`%`_ishape{shape#841, Jnn#223}] +[visit_exp $vnarrowop__(sh_1!`%`_ishape.0, sh_2!`%`_ishape.0, sx, c_1, c_2)] +[visit_exp sh_1!`%`_ishape.0] +[visit_exp sh_1!`%`_ishape] [visit_exp sh_1] [visit_id sh_1] not free -[visit_exp shape#841] -[visit_id shape#841] -[visit_exp Jnn#223] -[visit_id Jnn#223] -[visit_exp sh_2!`%`_ishape{shape#843, Jnn#224}.0] -[visit_exp sh_2!`%`_ishape{shape#843, Jnn#224}] +[visit_exp sh_2!`%`_ishape.0] +[visit_exp sh_2!`%`_ishape] [visit_exp sh_2] [visit_id sh_2] not free -[visit_exp shape#843] -[visit_id shape#843] -[visit_exp Jnn#224] -[visit_id Jnn#224] [visit_exp sx] [visit_id sx] not free [visit_exp c_1] [visit_id c_1] not free [visit_exp c_2] [visit_id c_2] not free -[check_dims] c c_1 sh_1 sh_2 shape_1#5 shape_2#5 vcvtop vectype#222 vectype#224 -[visit_exp [`VCONST`_instr{vectype#222}(`V128`_vectype, c_1) `VCVTOP`_instr{shape_1#5, shape_2#5}(sh_2, sh_1, vcvtop)]] -[visit_exp `VCONST`_instr{vectype#222}(`V128`_vectype, c_1)] -[visit_exp vectype#222] -[visit_id vectype#222] +[check_dims] c c_1 sh_1 sh_2 vcvtop +[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `VCVTOP`_instr(sh_2, sh_1, vcvtop)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] [visit_exp (`V128`_vectype, c_1)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp c_1] [visit_id c_1] -[visit_exp `VCVTOP`_instr{shape_1#5, shape_2#5}(sh_2, sh_1, vcvtop)] -[visit_exp shape_1#5] -[visit_id shape_1#5] -[visit_exp shape_2#5] -[visit_id shape_2#5] +[visit_exp `VCVTOP`_instr(sh_2, sh_1, vcvtop)] [visit_exp (sh_2, sh_1, vcvtop)] [visit_exp sh_2] [visit_id sh_2] @@ -66749,10 +54651,8 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_id sh_1] [visit_exp vcvtop] [visit_id vcvtop] -[visit_exp [`VCONST`_instr{vectype#224}(`V128`_vectype, c)]] -[visit_exp `VCONST`_instr{vectype#224}(`V128`_vectype, c)] -[visit_exp vectype#224] -[visit_id vectype#224] +[visit_exp [`VCONST`_instr(`V128`_vectype, c)]] +[visit_exp `VCONST`_instr(`V128`_vectype, c)] [visit_exp (`V128`_vectype, c)] [visit_exp `V128`_vectype] [visit_exp ()] @@ -66771,7 +54671,7 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp c_1] [visit_id c_1] not free [check_dims] -[check_dims] instr instr*#2310 instr*#2322 state#2195 state#2207 val z z' +[check_dims] instr val z z' [visit_exp z] [visit_id z] [visit_exp instr*{instr <- `instr*`}] @@ -66794,12 +54694,8 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `val*`] [visit_id val*] no dims [visit_id val*] -[visit_exp (`%;%`_config{state#2195, `instr*#2310`}(z, instr*{instr <- `instr*`}), `%;%`_config{state#2207, `instr*#2322`}(z', (val : val <: instr)*{val <- `val*`}))] -[visit_exp `%;%`_config{state#2195, `instr*#2310`}(z, instr*{instr <- `instr*`})] -[visit_exp state#2195] -[visit_id state#2195] -[visit_exp `instr*#2310`] -[visit_id instr*#2310] +[visit_exp (`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`}))] +[visit_exp `%;%`_config(z, instr*{instr <- `instr*`})] [visit_exp (z, instr*{instr <- `instr*`})] [visit_exp z] [visit_id z] not free @@ -66812,11 +54708,7 @@ DecD blocktype_(state : state, blocktype : blocktype) : instrtype [visit_exp `instr*`] [visit_id instr*] not free [visit_id instr*] no dims -[visit_exp `%;%`_config{state#2207, `instr*#2322`}(z', (val : val <: instr)*{val <- `val*`})] -[visit_exp state#2207] -[visit_id state#2207] -[visit_exp `instr*#2322`] -[visit_id instr*#2322] +[visit_exp `%;%`_config(z', (val : val <: instr)*{val <- `val*`})] [visit_exp (z', (val : val <: instr)*{val <- `val*`})] [visit_exp z'] [visit_id z'] not free @@ -66839,7 +54731,7 @@ DecD alloctypes(type*) : deftype* => ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $alloctypes([]) = [] -[check_dims] deftype deftype' i#46777 rectype rectype#1449 type type' x +[check_dims] deftype deftype' rectype type type' x [visit_exp type'*{type' <- `type'*`} ++ [type]] [visit_exp type'*{type' <- `type'*`}] [scope_enter type'] @@ -66892,12 +54784,10 @@ DecD alloctypes(type*) : deftype* [visit_exp `type'*`] [visit_id type'*] not free [visit_id type'*] no dims -[visit_exp (type = `TYPE`_type{rectype#1449}(rectype))] +[visit_exp (type = `TYPE`_type(rectype))] [visit_exp type] [visit_id type] not free -[visit_exp `TYPE`_type{rectype#1449}(rectype)] -[visit_exp rectype#1449] -[visit_id rectype#1449] +[visit_exp `TYPE`_type(rectype)] [visit_exp (rectype)] [visit_exp rectype] [visit_id rectype] @@ -66927,13 +54817,11 @@ DecD alloctypes(type*) : deftype* [visit_exp `deftype'*`] [visit_id deftype'*] not free [visit_id deftype'*] no dims -[visit_exp (x!`%`_idx{i#46777}.0 = |deftype'*{deftype' <- `deftype'*`}|)] -[visit_exp x!`%`_idx{i#46777}.0] -[visit_exp x!`%`_idx{i#46777}] +[visit_exp (x!`%`_idx.0 = |deftype'*{deftype' <- `deftype'*`}|)] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] [visit_exp x] [visit_id x] not free -[visit_exp i#46777] -[visit_id i#46777] [visit_exp |deftype'*{deftype' <- `deftype'*`}|] [visit_exp deftype'*{deftype' <- `deftype'*`}] [scope_enter deftype'] @@ -66946,83 +54834,67 @@ DecD alloctypes(type*) : deftype* [visit_id deftype'*] no dims => ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype#1449 : rectype, rectype : rectype, x : idx, i#46777 : nat}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} + def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : idx}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} -- if (deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`})) - -- if (type = `TYPE`_type{rectype#1449}(rectype)) + -- if (type = `TYPE`_type(rectype)) -- if (deftype*{deftype <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), (deftype' : deftype <: typeuse)*{deftype' <- `deftype'*`})) - -- if (x!`%`_idx{i#46777}.0 = |deftype'*{deftype' <- `deftype'*`}|) + -- if (x!`%`_idx.0 = |deftype'*{deftype' <- `deftype'*`}|) [check_dims] _ store tagtype DecD alloctag(store : store, tagtype : tagtype) : (store, tagaddr) [visit_id store] not free [visit_id tagtype] not free +[scope_enter _] [visit_id _] not free +[scope_enter _] [visit_id _] not free -[check_dims] arrayinst*#6 datainst*#5 eleminst*#5 exninst*#5 funcinst*#6 globalinst*#6 meminst*#7 s structinst*#6 tableinst*#7 taginst taginst*#5 taginst*#6 tagtype tagtype#181 +[scope_exit _] +[scope_exit _] +[check_dims] s taginst tagtype [visit_exp s] [visit_id s] [visit_exp tagtype] [visit_id tagtype] -[visit_exp (s +++ {`TAGS`{`taginst*#5`} [taginst], `GLOBALS`{`globalinst*#6`} [], `MEMS`{`meminst*#7`} [], `TABLES`{`tableinst*#7`} [], `FUNCS`{`funcinst*#6`} [], `DATAS`{`datainst*#5`} [], `ELEMS`{`eleminst*#5`} [], `STRUCTS`{`structinst*#6`} [], `ARRAYS`{`arrayinst*#6`} [], `EXNS`{`exninst*#5`} []}, |s.`TAGS`_store{`taginst*#6`}|)] -[visit_exp s +++ {`TAGS`{`taginst*#5`} [taginst], `GLOBALS`{`globalinst*#6`} [], `MEMS`{`meminst*#7`} [], `TABLES`{`tableinst*#7`} [], `FUNCS`{`funcinst*#6`} [], `DATAS`{`datainst*#5`} [], `ELEMS`{`eleminst*#5`} [], `STRUCTS`{`structinst*#6`} [], `ARRAYS`{`arrayinst*#6`} [], `EXNS`{`exninst*#5`} []}] +[visit_exp (s +++ {`TAGS` [taginst], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `STRUCTS` [], `ARRAYS` [], `EXNS` []}, |s.`TAGS`_store|)] +[visit_exp s +++ {`TAGS` [taginst], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `STRUCTS` [], `ARRAYS` [], `EXNS` []}] [visit_exp s] [visit_id s] not free -[visit_exp {`TAGS`{`taginst*#5`} [taginst], `GLOBALS`{`globalinst*#6`} [], `MEMS`{`meminst*#7`} [], `TABLES`{`tableinst*#7`} [], `FUNCS`{`funcinst*#6`} [], `DATAS`{`datainst*#5`} [], `ELEMS`{`eleminst*#5`} [], `STRUCTS`{`structinst*#6`} [], `ARRAYS`{`arrayinst*#6`} [], `EXNS`{`exninst*#5`} []}] -[visit_exp `taginst*#5`] -[visit_id taginst*#5] +[visit_exp {`TAGS` [taginst], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `STRUCTS` [], `ARRAYS` [], `EXNS` []}] [visit_exp [taginst]] [visit_exp taginst] [visit_id taginst] -[visit_exp `globalinst*#6`] -[visit_id globalinst*#6] [visit_exp []] -[visit_exp `meminst*#7`] -[visit_id meminst*#7] [visit_exp []] -[visit_exp `tableinst*#7`] -[visit_id tableinst*#7] [visit_exp []] -[visit_exp `funcinst*#6`] -[visit_id funcinst*#6] [visit_exp []] -[visit_exp `datainst*#5`] -[visit_id datainst*#5] [visit_exp []] -[visit_exp `eleminst*#5`] -[visit_id eleminst*#5] [visit_exp []] -[visit_exp `structinst*#6`] -[visit_id structinst*#6] [visit_exp []] -[visit_exp `arrayinst*#6`] -[visit_id arrayinst*#6] [visit_exp []] -[visit_exp `exninst*#5`] -[visit_id exninst*#5] [visit_exp []] -[visit_exp |s.`TAGS`_store{`taginst*#6`}|] -[visit_exp s.`TAGS`_store{`taginst*#6`}] +[visit_exp |s.`TAGS`_store|] +[visit_exp s.`TAGS`_store] [visit_exp s] [visit_id s] not free -[visit_exp `taginst*#6`] -[visit_id taginst*#6] -[visit_exp (taginst = {`TYPE`{tagtype#181} tagtype})] +[visit_exp (taginst = {`TYPE` tagtype})] [visit_exp taginst] [visit_id taginst] not free -[visit_exp {`TYPE`{tagtype#181} tagtype}] -[visit_exp tagtype#181] -[visit_id tagtype#181] +[visit_exp {`TYPE` tagtype}] [visit_exp tagtype] [visit_id tagtype] not free => ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $alloctag{s : store, tagtype : tagtype, `taginst*#5` : taginst*, taginst : taginst, `globalinst*#6` : globalinst*, `meminst*#7` : meminst*, `tableinst*#7` : tableinst*, `funcinst*#6` : funcinst*, `datainst*#5` : datainst*, `eleminst*#5` : eleminst*, `structinst*#6` : structinst*, `arrayinst*#6` : arrayinst*, `exninst*#5` : exninst*, `taginst*#6` : taginst*, tagtype#181 : tagtype}(s, tagtype) = (s +++ {`TAGS`{`taginst*#5`} [taginst], `GLOBALS`{`globalinst*#6`} [], `MEMS`{`meminst*#7`} [], `TABLES`{`tableinst*#7`} [], `FUNCS`{`funcinst*#6`} [], `DATAS`{`datainst*#5`} [], `ELEMS`{`eleminst*#5`} [], `STRUCTS`{`structinst*#6`} [], `ARRAYS`{`arrayinst*#6`} [], `EXNS`{`exninst*#5`} []}, |s.`TAGS`_store{`taginst*#6`}|) - -- if (taginst = {`TYPE`{tagtype#181} tagtype}) + 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}) [check_dims] _ store DecD alloctags(store : store, tagtype*) : (store, tagaddr*) [visit_id store] not free [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_exit _] +[scope_exit _] [check_dims] s [visit_exp s] [visit_id s] @@ -67112,81 +54984,63 @@ DecD allocglobal(store : store, globaltype : globaltype, val : val) : (store, gl [visit_id store] not free [visit_id globaltype] not free [visit_id val] not free +[scope_enter _] [visit_id _] not free +[scope_enter _] [visit_id _] not free -[check_dims] arrayinst*#7 datainst*#6 eleminst*#6 exninst*#6 funcinst*#7 globalinst globalinst*#7 globalinst*#8 globaltype globaltype#2088 meminst*#8 s structinst*#7 tableinst*#8 taginst*#7 val val#3 +[scope_exit _] +[scope_exit _] +[check_dims] globalinst globaltype s val [visit_exp s] [visit_id s] [visit_exp globaltype] [visit_id globaltype] [visit_exp val] [visit_id val] -[visit_exp (s +++ {`TAGS`{`taginst*#7`} [], `GLOBALS`{`globalinst*#7`} [globalinst], `MEMS`{`meminst*#8`} [], `TABLES`{`tableinst*#8`} [], `FUNCS`{`funcinst*#7`} [], `DATAS`{`datainst*#6`} [], `ELEMS`{`eleminst*#6`} [], `STRUCTS`{`structinst*#7`} [], `ARRAYS`{`arrayinst*#7`} [], `EXNS`{`exninst*#6`} []}, |s.`GLOBALS`_store{`globalinst*#8`}|)] -[visit_exp s +++ {`TAGS`{`taginst*#7`} [], `GLOBALS`{`globalinst*#7`} [globalinst], `MEMS`{`meminst*#8`} [], `TABLES`{`tableinst*#8`} [], `FUNCS`{`funcinst*#7`} [], `DATAS`{`datainst*#6`} [], `ELEMS`{`eleminst*#6`} [], `STRUCTS`{`structinst*#7`} [], `ARRAYS`{`arrayinst*#7`} [], `EXNS`{`exninst*#6`} []}] +[visit_exp (s +++ {`TAGS` [], `GLOBALS` [globalinst], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `STRUCTS` [], `ARRAYS` [], `EXNS` []}, |s.`GLOBALS`_store|)] +[visit_exp s +++ {`TAGS` [], `GLOBALS` [globalinst], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `STRUCTS` [], `ARRAYS` [], `EXNS` []}] [visit_exp s] [visit_id s] not free -[visit_exp {`TAGS`{`taginst*#7`} [], `GLOBALS`{`globalinst*#7`} [globalinst], `MEMS`{`meminst*#8`} [], `TABLES`{`tableinst*#8`} [], `FUNCS`{`funcinst*#7`} [], `DATAS`{`datainst*#6`} [], `ELEMS`{`eleminst*#6`} [], `STRUCTS`{`structinst*#7`} [], `ARRAYS`{`arrayinst*#7`} [], `EXNS`{`exninst*#6`} []}] -[visit_exp `taginst*#7`] -[visit_id taginst*#7] +[visit_exp {`TAGS` [], `GLOBALS` [globalinst], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `STRUCTS` [], `ARRAYS` [], `EXNS` []}] [visit_exp []] -[visit_exp `globalinst*#7`] -[visit_id globalinst*#7] [visit_exp [globalinst]] [visit_exp globalinst] [visit_id globalinst] -[visit_exp `meminst*#8`] -[visit_id meminst*#8] [visit_exp []] -[visit_exp `tableinst*#8`] -[visit_id tableinst*#8] [visit_exp []] -[visit_exp `funcinst*#7`] -[visit_id funcinst*#7] [visit_exp []] -[visit_exp `datainst*#6`] -[visit_id datainst*#6] [visit_exp []] -[visit_exp `eleminst*#6`] -[visit_id eleminst*#6] [visit_exp []] -[visit_exp `structinst*#7`] -[visit_id structinst*#7] [visit_exp []] -[visit_exp `arrayinst*#7`] -[visit_id arrayinst*#7] [visit_exp []] -[visit_exp `exninst*#6`] -[visit_id exninst*#6] [visit_exp []] -[visit_exp |s.`GLOBALS`_store{`globalinst*#8`}|] -[visit_exp s.`GLOBALS`_store{`globalinst*#8`}] +[visit_exp |s.`GLOBALS`_store|] +[visit_exp s.`GLOBALS`_store] [visit_exp s] [visit_id s] not free -[visit_exp `globalinst*#8`] -[visit_id globalinst*#8] -[visit_exp (globalinst = {`TYPE`{globaltype#2088} globaltype, `VALUE`{val#3} val})] +[visit_exp (globalinst = {`TYPE` globaltype, `VALUE` val})] [visit_exp globalinst] [visit_id globalinst] not free -[visit_exp {`TYPE`{globaltype#2088} globaltype, `VALUE`{val#3} val}] -[visit_exp globaltype#2088] -[visit_id globaltype#2088] +[visit_exp {`TYPE` globaltype, `VALUE` val}] [visit_exp globaltype] [visit_id globaltype] not free -[visit_exp val#3] -[visit_id val#3] [visit_exp val] [visit_id val] not free => ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocglobal{s : store, globaltype : globaltype, val : val, `taginst*#7` : taginst*, `globalinst*#7` : globalinst*, globalinst : globalinst, `meminst*#8` : meminst*, `tableinst*#8` : tableinst*, `funcinst*#7` : funcinst*, `datainst*#6` : datainst*, `eleminst*#6` : eleminst*, `structinst*#7` : structinst*, `arrayinst*#7` : arrayinst*, `exninst*#6` : exninst*, `globalinst*#8` : globalinst*, globaltype#2088 : globaltype, val#3 : val}(s, globaltype, val) = (s +++ {`TAGS`{`taginst*#7`} [], `GLOBALS`{`globalinst*#7`} [globalinst], `MEMS`{`meminst*#8`} [], `TABLES`{`tableinst*#8`} [], `FUNCS`{`funcinst*#7`} [], `DATAS`{`datainst*#6`} [], `ELEMS`{`eleminst*#6`} [], `STRUCTS`{`structinst*#7`} [], `ARRAYS`{`arrayinst*#7`} [], `EXNS`{`exninst*#6`} []}, |s.`GLOBALS`_store{`globalinst*#8`}|) - -- if (globalinst = {`TYPE`{globaltype#2088} globaltype, `VALUE`{val#3} val}) + 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}) [check_dims] _ store DecD allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) [visit_id store] not free [visit_id _] not free [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_exit _] +[scope_exit _] [check_dims] s [visit_exp s] [visit_id s] @@ -67300,24 +55154,20 @@ DecD allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) DecD allocmem(store : store, memtype : memtype) : (store, memaddr) [visit_id store] not free [visit_id memtype] not free +[scope_enter _] [visit_id _] not free +[scope_enter _] [visit_id _] not free -[check_dims] addrtype#1147 addrtype#1159 arrayinst*#8 at byte*#1879 datainst*#7 eleminst*#7 exninst*#7 funcinst*#8 globalinst*#9 i i#46867 i#46875 j limits#1147 limits#1159 meminst meminst*#10 meminst*#9 memtype#531 s structinst*#8 tableinst*#9 taginst*#8 u64#443 u64#455 u64?#419 u64?#431 +[scope_exit _] +[scope_exit _] +[check_dims] at i j meminst s [visit_exp s] [visit_id s] -[visit_exp `%%PAGE`_memtype{addrtype#1147, limits#1147}(at, `[%..%]`_limits{u64#443, `u64?#419`}(i, j?{j <- `j?`}))] -[visit_exp addrtype#1147] -[visit_id addrtype#1147] -[visit_exp limits#1147] -[visit_id limits#1147] -[visit_exp (at, `[%..%]`_limits{u64#443, `u64?#419`}(i, j?{j <- `j?`}))] +[visit_exp `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))] +[visit_exp (at, `[%..%]`_limits(i, j?{j <- `j?`}))] [visit_exp at] [visit_id at] -[visit_exp `[%..%]`_limits{u64#443, `u64?#419`}(i, j?{j <- `j?`})] -[visit_exp u64#443] -[visit_id u64#443] -[visit_exp `u64?#419`] -[visit_id u64?#419] +[visit_exp `[%..%]`_limits(i, j?{j <- `j?`})] [visit_exp (i, j?{j <- `j?`})] [visit_exp i] [visit_id i] @@ -67330,68 +55180,36 @@ DecD allocmem(store : store, memtype : memtype) : (store, memaddr) [visit_exp `j?`] [visit_id j?] no dims [visit_id j?] -[visit_exp (s +++ {`TAGS`{`taginst*#8`} [], `GLOBALS`{`globalinst*#9`} [], `MEMS`{`meminst*#9`} [meminst], `TABLES`{`tableinst*#9`} [], `FUNCS`{`funcinst*#8`} [], `DATAS`{`datainst*#7`} [], `ELEMS`{`eleminst*#7`} [], `STRUCTS`{`structinst*#8`} [], `ARRAYS`{`arrayinst*#8`} [], `EXNS`{`exninst*#7`} []}, |s.`MEMS`_store{`meminst*#10`}|)] -[visit_exp s +++ {`TAGS`{`taginst*#8`} [], `GLOBALS`{`globalinst*#9`} [], `MEMS`{`meminst*#9`} [meminst], `TABLES`{`tableinst*#9`} [], `FUNCS`{`funcinst*#8`} [], `DATAS`{`datainst*#7`} [], `ELEMS`{`eleminst*#7`} [], `STRUCTS`{`structinst*#8`} [], `ARRAYS`{`arrayinst*#8`} [], `EXNS`{`exninst*#7`} []}] +[visit_exp (s +++ {`TAGS` [], `GLOBALS` [], `MEMS` [meminst], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `STRUCTS` [], `ARRAYS` [], `EXNS` []}, |s.`MEMS`_store|)] +[visit_exp s +++ {`TAGS` [], `GLOBALS` [], `MEMS` [meminst], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `STRUCTS` [], `ARRAYS` [], `EXNS` []}] [visit_exp s] [visit_id s] not free -[visit_exp {`TAGS`{`taginst*#8`} [], `GLOBALS`{`globalinst*#9`} [], `MEMS`{`meminst*#9`} [meminst], `TABLES`{`tableinst*#9`} [], `FUNCS`{`funcinst*#8`} [], `DATAS`{`datainst*#7`} [], `ELEMS`{`eleminst*#7`} [], `STRUCTS`{`structinst*#8`} [], `ARRAYS`{`arrayinst*#8`} [], `EXNS`{`exninst*#7`} []}] -[visit_exp `taginst*#8`] -[visit_id taginst*#8] +[visit_exp {`TAGS` [], `GLOBALS` [], `MEMS` [meminst], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `STRUCTS` [], `ARRAYS` [], `EXNS` []}] [visit_exp []] -[visit_exp `globalinst*#9`] -[visit_id globalinst*#9] [visit_exp []] -[visit_exp `meminst*#9`] -[visit_id meminst*#9] [visit_exp [meminst]] [visit_exp meminst] [visit_id meminst] -[visit_exp `tableinst*#9`] -[visit_id tableinst*#9] [visit_exp []] -[visit_exp `funcinst*#8`] -[visit_id funcinst*#8] [visit_exp []] -[visit_exp `datainst*#7`] -[visit_id datainst*#7] [visit_exp []] -[visit_exp `eleminst*#7`] -[visit_id eleminst*#7] [visit_exp []] -[visit_exp `structinst*#8`] -[visit_id structinst*#8] [visit_exp []] -[visit_exp `arrayinst*#8`] -[visit_id arrayinst*#8] [visit_exp []] -[visit_exp `exninst*#7`] -[visit_id exninst*#7] [visit_exp []] -[visit_exp |s.`MEMS`_store{`meminst*#10`}|] -[visit_exp s.`MEMS`_store{`meminst*#10`}] +[visit_exp |s.`MEMS`_store|] +[visit_exp s.`MEMS`_store] [visit_exp s] [visit_id s] not free -[visit_exp `meminst*#10`] -[visit_id meminst*#10] -[visit_exp (meminst = {`TYPE`{memtype#531} `%%PAGE`_memtype{addrtype#1159, limits#1159}(at, `[%..%]`_limits{u64#455, `u64?#431`}(i, j?{j <- `j?`})), `BYTES`{`byte*#1879`} `%`_byte{i#46875}(0)^(i!`%`_u64{i#46867}.0 * (64 * $Ki)){i#46875 <- `i#46875*`}})] +[visit_exp (meminst = {`TYPE` `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), `BYTES` `%`_byte(0)^(i!`%`_u64.0 * (64 * $Ki)){}})] [visit_exp meminst] [visit_id meminst] not free -[visit_exp {`TYPE`{memtype#531} `%%PAGE`_memtype{addrtype#1159, limits#1159}(at, `[%..%]`_limits{u64#455, `u64?#431`}(i, j?{j <- `j?`})), `BYTES`{`byte*#1879`} `%`_byte{i#46875}(0)^(i!`%`_u64{i#46867}.0 * (64 * $Ki)){i#46875 <- `i#46875*`}}] -[visit_exp memtype#531] -[visit_id memtype#531] -[visit_exp `%%PAGE`_memtype{addrtype#1159, limits#1159}(at, `[%..%]`_limits{u64#455, `u64?#431`}(i, j?{j <- `j?`}))] -[visit_exp addrtype#1159] -[visit_id addrtype#1159] -[visit_exp limits#1159] -[visit_id limits#1159] -[visit_exp (at, `[%..%]`_limits{u64#455, `u64?#431`}(i, j?{j <- `j?`}))] +[visit_exp {`TYPE` `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), `BYTES` `%`_byte(0)^(i!`%`_u64.0 * (64 * $Ki)){}}] +[visit_exp `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))] +[visit_exp (at, `[%..%]`_limits(i, j?{j <- `j?`}))] [visit_exp at] [visit_id at] not free -[visit_exp `[%..%]`_limits{u64#455, `u64?#431`}(i, j?{j <- `j?`})] -[visit_exp u64#455] -[visit_id u64#455] -[visit_exp `u64?#431`] -[visit_id u64?#431] +[visit_exp `[%..%]`_limits(i, j?{j <- `j?`})] [visit_exp (i, j?{j <- `j?`})] [visit_exp i] [visit_id i] not free @@ -67404,40 +55222,32 @@ DecD allocmem(store : store, memtype : memtype) : (store, memaddr) [visit_exp `j?`] [visit_id j?] not free [visit_id j?] no dims -[visit_exp `byte*#1879`] -[visit_id byte*#1879] -[visit_exp `%`_byte{i#46875}(0)^(i!`%`_u64{i#46867}.0 * (64 * $Ki)){i#46875 <- `i#46875*`}] -[scope_enter i#46875] -[visit_exp `%`_byte{i#46875}(0)] -[visit_exp i#46875] -[visit_id i#46875] not free +[visit_exp `%`_byte(0)^(i!`%`_u64.0 * (64 * $Ki)){}] +[visit_exp `%`_byte(0)] [visit_exp (0)] [visit_exp 0] -[visit_id i#46875] not free -[scope_exit i#46875] -[visit_exp (i!`%`_u64{i#46867}.0 * (64 * $Ki))] -[visit_exp i!`%`_u64{i#46867}.0] -[visit_exp i!`%`_u64{i#46867}] +[visit_exp (i!`%`_u64.0 * (64 * $Ki))] +[visit_exp i!`%`_u64.0] +[visit_exp i!`%`_u64] [visit_exp i] [visit_id i] not free -[visit_exp i#46867] -[visit_id i#46867] [visit_exp (64 * $Ki)] [visit_exp 64] [visit_exp $Ki] -[visit_exp `i#46875*`] -[visit_id i#46875*] no dims -[visit_id i#46875*] => ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocmem{s : store, addrtype#1147 : addrtype, limits#1147 : limits, at : addrtype, u64#443 : u64, `u64?#419` : u64?, i : u64, `j?` : u64?, `taginst*#8` : taginst*, `globalinst*#9` : globalinst*, `meminst*#9` : meminst*, meminst : meminst, `tableinst*#9` : tableinst*, `funcinst*#8` : funcinst*, `datainst*#7` : datainst*, `eleminst*#7` : eleminst*, `structinst*#8` : structinst*, `arrayinst*#8` : arrayinst*, `exninst*#7` : exninst*, `meminst*#10` : meminst*, memtype#531 : memtype, addrtype#1159 : addrtype, limits#1159 : limits, u64#455 : u64, `u64?#431` : u64?, `byte*#1879` : byte*, i#46867 : nat, `i#46875*` : nat*}(s, `%%PAGE`_memtype{addrtype#1147, limits#1147}(at, `[%..%]`_limits{u64#443, `u64?#419`}(i, j?{j <- `j?`}))) = (s +++ {`TAGS`{`taginst*#8`} [], `GLOBALS`{`globalinst*#9`} [], `MEMS`{`meminst*#9`} [meminst], `TABLES`{`tableinst*#9`} [], `FUNCS`{`funcinst*#8`} [], `DATAS`{`datainst*#7`} [], `ELEMS`{`eleminst*#7`} [], `STRUCTS`{`structinst*#8`} [], `ARRAYS`{`arrayinst*#8`} [], `EXNS`{`exninst*#7`} []}, |s.`MEMS`_store{`meminst*#10`}|) - -- if (meminst = {`TYPE`{memtype#531} `%%PAGE`_memtype{addrtype#1159, limits#1159}(at, `[%..%]`_limits{u64#455, `u64?#431`}(i, j?{j <- `j?`})), `BYTES`{`byte*#1879`} `%`_byte{i#46875}(0)^(i!`%`_u64{i#46867}.0 * (64 * $Ki)){i#46875 <- `i#46875*`}}) + 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)){}}) [check_dims] _ store DecD allocmems(store : store, memtype*) : (store, memaddr*) [visit_id store] not free [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_exit _] +[scope_exit _] [check_dims] s [visit_exp s] [visit_id s] @@ -67527,26 +55337,20 @@ DecD alloctable(store : store, tabletype : tabletype, ref : ref) : (store, table [visit_id store] not free [visit_id tabletype] not free [visit_id ref] not free +[scope_enter _] [visit_id _] not free +[scope_enter _] [visit_id _] not free -[check_dims] addrtype#1219 addrtype#1231 arrayinst*#9 at datainst*#8 eleminst*#8 exninst*#8 funcinst*#9 globalinst*#10 i i#46955 j limits#1219 limits#1231 meminst*#11 ref ref*#22 reftype#3485 reftype#3497 rt s structinst*#9 tableinst tableinst*#10 tableinst*#11 tabletype#881 taginst*#9 u64#467 u64#479 u64?#443 u64?#455 +[scope_exit _] +[scope_exit _] +[check_dims] at i j ref rt s tableinst [visit_exp s] [visit_id s] -[visit_exp `%%%`_tabletype{addrtype#1219, limits#1219, reftype#3485}(at, `[%..%]`_limits{u64#467, `u64?#443`}(i, j?{j <- `j?`}), rt)] -[visit_exp addrtype#1219] -[visit_id addrtype#1219] -[visit_exp limits#1219] -[visit_id limits#1219] -[visit_exp reftype#3485] -[visit_id reftype#3485] -[visit_exp (at, `[%..%]`_limits{u64#467, `u64?#443`}(i, j?{j <- `j?`}), rt)] +[visit_exp `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt)] +[visit_exp (at, `[%..%]`_limits(i, j?{j <- `j?`}), rt)] [visit_exp at] [visit_id at] -[visit_exp `[%..%]`_limits{u64#467, `u64?#443`}(i, j?{j <- `j?`})] -[visit_exp u64#467] -[visit_id u64#467] -[visit_exp `u64?#443`] -[visit_id u64?#443] +[visit_exp `[%..%]`_limits(i, j?{j <- `j?`})] [visit_exp (i, j?{j <- `j?`})] [visit_exp i] [visit_id i] @@ -67563,70 +55367,36 @@ DecD alloctable(store : store, tabletype : tabletype, ref : ref) : (store, table [visit_id rt] [visit_exp ref] [visit_id ref] -[visit_exp (s +++ {`TAGS`{`taginst*#9`} [], `GLOBALS`{`globalinst*#10`} [], `MEMS`{`meminst*#11`} [], `TABLES`{`tableinst*#10`} [tableinst], `FUNCS`{`funcinst*#9`} [], `DATAS`{`datainst*#8`} [], `ELEMS`{`eleminst*#8`} [], `STRUCTS`{`structinst*#9`} [], `ARRAYS`{`arrayinst*#9`} [], `EXNS`{`exninst*#8`} []}, |s.`TABLES`_store{`tableinst*#11`}|)] -[visit_exp s +++ {`TAGS`{`taginst*#9`} [], `GLOBALS`{`globalinst*#10`} [], `MEMS`{`meminst*#11`} [], `TABLES`{`tableinst*#10`} [tableinst], `FUNCS`{`funcinst*#9`} [], `DATAS`{`datainst*#8`} [], `ELEMS`{`eleminst*#8`} [], `STRUCTS`{`structinst*#9`} [], `ARRAYS`{`arrayinst*#9`} [], `EXNS`{`exninst*#8`} []}] +[visit_exp (s +++ {`TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [tableinst], `FUNCS` [], `DATAS` [], `ELEMS` [], `STRUCTS` [], `ARRAYS` [], `EXNS` []}, |s.`TABLES`_store|)] +[visit_exp s +++ {`TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [tableinst], `FUNCS` [], `DATAS` [], `ELEMS` [], `STRUCTS` [], `ARRAYS` [], `EXNS` []}] [visit_exp s] [visit_id s] not free -[visit_exp {`TAGS`{`taginst*#9`} [], `GLOBALS`{`globalinst*#10`} [], `MEMS`{`meminst*#11`} [], `TABLES`{`tableinst*#10`} [tableinst], `FUNCS`{`funcinst*#9`} [], `DATAS`{`datainst*#8`} [], `ELEMS`{`eleminst*#8`} [], `STRUCTS`{`structinst*#9`} [], `ARRAYS`{`arrayinst*#9`} [], `EXNS`{`exninst*#8`} []}] -[visit_exp `taginst*#9`] -[visit_id taginst*#9] +[visit_exp {`TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [tableinst], `FUNCS` [], `DATAS` [], `ELEMS` [], `STRUCTS` [], `ARRAYS` [], `EXNS` []}] [visit_exp []] -[visit_exp `globalinst*#10`] -[visit_id globalinst*#10] [visit_exp []] -[visit_exp `meminst*#11`] -[visit_id meminst*#11] [visit_exp []] -[visit_exp `tableinst*#10`] -[visit_id tableinst*#10] [visit_exp [tableinst]] [visit_exp tableinst] [visit_id tableinst] -[visit_exp `funcinst*#9`] -[visit_id funcinst*#9] [visit_exp []] -[visit_exp `datainst*#8`] -[visit_id datainst*#8] [visit_exp []] -[visit_exp `eleminst*#8`] -[visit_id eleminst*#8] [visit_exp []] -[visit_exp `structinst*#9`] -[visit_id structinst*#9] [visit_exp []] -[visit_exp `arrayinst*#9`] -[visit_id arrayinst*#9] [visit_exp []] -[visit_exp `exninst*#8`] -[visit_id exninst*#8] [visit_exp []] -[visit_exp |s.`TABLES`_store{`tableinst*#11`}|] -[visit_exp s.`TABLES`_store{`tableinst*#11`}] +[visit_exp |s.`TABLES`_store|] +[visit_exp s.`TABLES`_store] [visit_exp s] [visit_id s] not free -[visit_exp `tableinst*#11`] -[visit_id tableinst*#11] -[visit_exp (tableinst = {`TYPE`{tabletype#881} `%%%`_tabletype{addrtype#1231, limits#1231, reftype#3497}(at, `[%..%]`_limits{u64#479, `u64?#455`}(i, j?{j <- `j?`}), rt), `REFS`{`ref*#22`} ref^i!`%`_u64{i#46955}.0{}})] +[visit_exp (tableinst = {`TYPE` `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), `REFS` ref^i!`%`_u64.0{}})] [visit_exp tableinst] [visit_id tableinst] not free -[visit_exp {`TYPE`{tabletype#881} `%%%`_tabletype{addrtype#1231, limits#1231, reftype#3497}(at, `[%..%]`_limits{u64#479, `u64?#455`}(i, j?{j <- `j?`}), rt), `REFS`{`ref*#22`} ref^i!`%`_u64{i#46955}.0{}}] -[visit_exp tabletype#881] -[visit_id tabletype#881] -[visit_exp `%%%`_tabletype{addrtype#1231, limits#1231, reftype#3497}(at, `[%..%]`_limits{u64#479, `u64?#455`}(i, j?{j <- `j?`}), rt)] -[visit_exp addrtype#1231] -[visit_id addrtype#1231] -[visit_exp limits#1231] -[visit_id limits#1231] -[visit_exp reftype#3497] -[visit_id reftype#3497] -[visit_exp (at, `[%..%]`_limits{u64#479, `u64?#455`}(i, j?{j <- `j?`}), rt)] +[visit_exp {`TYPE` `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), `REFS` ref^i!`%`_u64.0{}}] +[visit_exp `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt)] +[visit_exp (at, `[%..%]`_limits(i, j?{j <- `j?`}), rt)] [visit_exp at] [visit_id at] not free -[visit_exp `[%..%]`_limits{u64#479, `u64?#455`}(i, j?{j <- `j?`})] -[visit_exp u64#479] -[visit_id u64#479] -[visit_exp `u64?#455`] -[visit_id u64?#455] +[visit_exp `[%..%]`_limits(i, j?{j <- `j?`})] [visit_exp (i, j?{j <- `j?`})] [visit_exp i] [visit_id i] not free @@ -67641,28 +55411,28 @@ DecD alloctable(store : store, tabletype : tabletype, ref : ref) : (store, table [visit_id j?] no dims [visit_exp rt] [visit_id rt] not free -[visit_exp `ref*#22`] -[visit_id ref*#22] -[visit_exp ref^i!`%`_u64{i#46955}.0{}] +[visit_exp ref^i!`%`_u64.0{}] [visit_exp ref] [visit_id ref] not free -[visit_exp i!`%`_u64{i#46955}.0] -[visit_exp i!`%`_u64{i#46955}] +[visit_exp i!`%`_u64.0] +[visit_exp i!`%`_u64] [visit_exp i] [visit_id i] not free -[visit_exp i#46955] -[visit_id i#46955] => ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $alloctable{s : store, addrtype#1219 : addrtype, limits#1219 : limits, reftype#3485 : reftype, at : addrtype, u64#467 : u64, `u64?#443` : u64?, i : u64, `j?` : u64?, rt : reftype, ref : ref, `taginst*#9` : taginst*, `globalinst*#10` : globalinst*, `meminst*#11` : meminst*, `tableinst*#10` : tableinst*, tableinst : tableinst, `funcinst*#9` : funcinst*, `datainst*#8` : datainst*, `eleminst*#8` : eleminst*, `structinst*#9` : structinst*, `arrayinst*#9` : arrayinst*, `exninst*#8` : exninst*, `tableinst*#11` : tableinst*, tabletype#881 : tabletype, addrtype#1231 : addrtype, limits#1231 : limits, reftype#3497 : reftype, u64#479 : u64, `u64?#455` : u64?, `ref*#22` : ref*, i#46955 : nat}(s, `%%%`_tabletype{addrtype#1219, limits#1219, reftype#3485}(at, `[%..%]`_limits{u64#467, `u64?#443`}(i, j?{j <- `j?`}), rt), ref) = (s +++ {`TAGS`{`taginst*#9`} [], `GLOBALS`{`globalinst*#10`} [], `MEMS`{`meminst*#11`} [], `TABLES`{`tableinst*#10`} [tableinst], `FUNCS`{`funcinst*#9`} [], `DATAS`{`datainst*#8`} [], `ELEMS`{`eleminst*#8`} [], `STRUCTS`{`structinst*#9`} [], `ARRAYS`{`arrayinst*#9`} [], `EXNS`{`exninst*#8`} []}, |s.`TABLES`_store{`tableinst*#11`}|) - -- if (tableinst = {`TYPE`{tabletype#881} `%%%`_tabletype{addrtype#1231, limits#1231, reftype#3497}(at, `[%..%]`_limits{u64#479, `u64?#455`}(i, j?{j <- `j?`}), rt), `REFS`{`ref*#22`} ref^i!`%`_u64{i#46955}.0{}}) + 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{}}) [check_dims] _ store DecD alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) [visit_id store] not free [visit_id _] not free [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_exit _] +[scope_exit _] [check_dims] s [visit_exp s] [visit_id s] @@ -67778,9 +55548,13 @@ DecD allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst [visit_id deftype] not free [visit_id funccode] not free [visit_id moduleinst] not free +[scope_enter _] [visit_id _] not free +[scope_enter _] [visit_id _] not free -[check_dims] arrayinst*#10 datainst*#9 deftype deftype#11 eleminst*#9 exninst*#9 funccode funccode#2 funcinst funcinst*#10 funcinst*#11 globalinst*#11 meminst*#12 moduleinst moduleinst#25 s structinst*#10 tableinst*#12 taginst*#10 +[scope_exit _] +[scope_exit _] +[check_dims] deftype funccode funcinst moduleinst s [visit_exp s] [visit_id s] [visit_exp deftype] @@ -67789,77 +55563,53 @@ DecD allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst [visit_id funccode] [visit_exp moduleinst] [visit_id moduleinst] -[visit_exp (s +++ {`TAGS`{`taginst*#10`} [], `GLOBALS`{`globalinst*#11`} [], `MEMS`{`meminst*#12`} [], `TABLES`{`tableinst*#12`} [], `FUNCS`{`funcinst*#10`} [funcinst], `DATAS`{`datainst*#9`} [], `ELEMS`{`eleminst*#9`} [], `STRUCTS`{`structinst*#10`} [], `ARRAYS`{`arrayinst*#10`} [], `EXNS`{`exninst*#9`} []}, |s.`FUNCS`_store{`funcinst*#11`}|)] -[visit_exp s +++ {`TAGS`{`taginst*#10`} [], `GLOBALS`{`globalinst*#11`} [], `MEMS`{`meminst*#12`} [], `TABLES`{`tableinst*#12`} [], `FUNCS`{`funcinst*#10`} [funcinst], `DATAS`{`datainst*#9`} [], `ELEMS`{`eleminst*#9`} [], `STRUCTS`{`structinst*#10`} [], `ARRAYS`{`arrayinst*#10`} [], `EXNS`{`exninst*#9`} []}] +[visit_exp (s +++ {`TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [funcinst], `DATAS` [], `ELEMS` [], `STRUCTS` [], `ARRAYS` [], `EXNS` []}, |s.`FUNCS`_store|)] +[visit_exp s +++ {`TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [funcinst], `DATAS` [], `ELEMS` [], `STRUCTS` [], `ARRAYS` [], `EXNS` []}] [visit_exp s] [visit_id s] not free -[visit_exp {`TAGS`{`taginst*#10`} [], `GLOBALS`{`globalinst*#11`} [], `MEMS`{`meminst*#12`} [], `TABLES`{`tableinst*#12`} [], `FUNCS`{`funcinst*#10`} [funcinst], `DATAS`{`datainst*#9`} [], `ELEMS`{`eleminst*#9`} [], `STRUCTS`{`structinst*#10`} [], `ARRAYS`{`arrayinst*#10`} [], `EXNS`{`exninst*#9`} []}] -[visit_exp `taginst*#10`] -[visit_id taginst*#10] +[visit_exp {`TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [funcinst], `DATAS` [], `ELEMS` [], `STRUCTS` [], `ARRAYS` [], `EXNS` []}] [visit_exp []] -[visit_exp `globalinst*#11`] -[visit_id globalinst*#11] [visit_exp []] -[visit_exp `meminst*#12`] -[visit_id meminst*#12] [visit_exp []] -[visit_exp `tableinst*#12`] -[visit_id tableinst*#12] [visit_exp []] -[visit_exp `funcinst*#10`] -[visit_id funcinst*#10] [visit_exp [funcinst]] [visit_exp funcinst] [visit_id funcinst] -[visit_exp `datainst*#9`] -[visit_id datainst*#9] [visit_exp []] -[visit_exp `eleminst*#9`] -[visit_id eleminst*#9] [visit_exp []] -[visit_exp `structinst*#10`] -[visit_id structinst*#10] [visit_exp []] -[visit_exp `arrayinst*#10`] -[visit_id arrayinst*#10] [visit_exp []] -[visit_exp `exninst*#9`] -[visit_id exninst*#9] [visit_exp []] -[visit_exp |s.`FUNCS`_store{`funcinst*#11`}|] -[visit_exp s.`FUNCS`_store{`funcinst*#11`}] +[visit_exp |s.`FUNCS`_store|] +[visit_exp s.`FUNCS`_store] [visit_exp s] [visit_id s] not free -[visit_exp `funcinst*#11`] -[visit_id funcinst*#11] -[visit_exp (funcinst = {`TYPE`{deftype#11} deftype, `MODULE`{moduleinst#25} moduleinst, `CODE`{funccode#2} funccode})] +[visit_exp (funcinst = {`TYPE` deftype, `MODULE` moduleinst, `CODE` funccode})] [visit_exp funcinst] [visit_id funcinst] not free -[visit_exp {`TYPE`{deftype#11} deftype, `MODULE`{moduleinst#25} moduleinst, `CODE`{funccode#2} funccode}] -[visit_exp deftype#11] -[visit_id deftype#11] +[visit_exp {`TYPE` deftype, `MODULE` moduleinst, `CODE` funccode}] [visit_exp deftype] [visit_id deftype] not free -[visit_exp moduleinst#25] -[visit_id moduleinst#25] [visit_exp moduleinst] [visit_id moduleinst] not free -[visit_exp funccode#2] -[visit_id funccode#2] [visit_exp funccode] [visit_id funccode] not free => ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, `taginst*#10` : taginst*, `globalinst*#11` : globalinst*, `meminst*#12` : meminst*, `tableinst*#12` : tableinst*, `funcinst*#10` : funcinst*, funcinst : funcinst, `datainst*#9` : datainst*, `eleminst*#9` : eleminst*, `structinst*#10` : structinst*, `arrayinst*#10` : arrayinst*, `exninst*#9` : exninst*, `funcinst*#11` : funcinst*, deftype#11 : deftype, moduleinst#25 : moduleinst, funccode#2 : funccode}(s, deftype, funccode, moduleinst) = (s +++ {`TAGS`{`taginst*#10`} [], `GLOBALS`{`globalinst*#11`} [], `MEMS`{`meminst*#12`} [], `TABLES`{`tableinst*#12`} [], `FUNCS`{`funcinst*#10`} [funcinst], `DATAS`{`datainst*#9`} [], `ELEMS`{`eleminst*#9`} [], `STRUCTS`{`structinst*#10`} [], `ARRAYS`{`arrayinst*#10`} [], `EXNS`{`exninst*#9`} []}, |s.`FUNCS`_store{`funcinst*#11`}|) - -- if (funcinst = {`TYPE`{deftype#11} deftype, `MODULE`{moduleinst#25} moduleinst, `CODE`{funccode#2} funccode}) + 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}) [check_dims] _ store DecD allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funcaddr*) [visit_id store] not free [visit_id _] not free [visit_id _] not free [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_exit _] +[scope_exit _] [check_dims] s [visit_exp s] [visit_id s] @@ -67999,9 +55749,13 @@ DecD allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) [visit_id store] not free [visit_id datatype] not free [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_enter _] [visit_id _] not free -[check_dims] arrayinst*#11 byte byte*#1880 datainst datainst*#10 datainst*#11 eleminst*#10 exninst*#10 funcinst*#12 globalinst*#12 meminst*#13 s structinst*#11 tableinst*#13 taginst*#11 +[scope_exit _] +[scope_exit _] +[check_dims] byte datainst s [visit_exp s] [visit_id s] [visit_exp `OK`_datatype] @@ -68015,55 +55769,31 @@ DecD allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) [visit_exp `byte*`] [visit_id byte*] no dims [visit_id byte*] -[visit_exp (s +++ {`TAGS`{`taginst*#11`} [], `GLOBALS`{`globalinst*#12`} [], `MEMS`{`meminst*#13`} [], `TABLES`{`tableinst*#13`} [], `FUNCS`{`funcinst*#12`} [], `DATAS`{`datainst*#10`} [datainst], `ELEMS`{`eleminst*#10`} [], `STRUCTS`{`structinst*#11`} [], `ARRAYS`{`arrayinst*#11`} [], `EXNS`{`exninst*#10`} []}, |s.`DATAS`_store{`datainst*#11`}|)] -[visit_exp s +++ {`TAGS`{`taginst*#11`} [], `GLOBALS`{`globalinst*#12`} [], `MEMS`{`meminst*#13`} [], `TABLES`{`tableinst*#13`} [], `FUNCS`{`funcinst*#12`} [], `DATAS`{`datainst*#10`} [datainst], `ELEMS`{`eleminst*#10`} [], `STRUCTS`{`structinst*#11`} [], `ARRAYS`{`arrayinst*#11`} [], `EXNS`{`exninst*#10`} []}] +[visit_exp (s +++ {`TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [datainst], `ELEMS` [], `STRUCTS` [], `ARRAYS` [], `EXNS` []}, |s.`DATAS`_store|)] +[visit_exp s +++ {`TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [datainst], `ELEMS` [], `STRUCTS` [], `ARRAYS` [], `EXNS` []}] [visit_exp s] [visit_id s] not free -[visit_exp {`TAGS`{`taginst*#11`} [], `GLOBALS`{`globalinst*#12`} [], `MEMS`{`meminst*#13`} [], `TABLES`{`tableinst*#13`} [], `FUNCS`{`funcinst*#12`} [], `DATAS`{`datainst*#10`} [datainst], `ELEMS`{`eleminst*#10`} [], `STRUCTS`{`structinst*#11`} [], `ARRAYS`{`arrayinst*#11`} [], `EXNS`{`exninst*#10`} []}] -[visit_exp `taginst*#11`] -[visit_id taginst*#11] +[visit_exp {`TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [datainst], `ELEMS` [], `STRUCTS` [], `ARRAYS` [], `EXNS` []}] [visit_exp []] -[visit_exp `globalinst*#12`] -[visit_id globalinst*#12] [visit_exp []] -[visit_exp `meminst*#13`] -[visit_id meminst*#13] [visit_exp []] -[visit_exp `tableinst*#13`] -[visit_id tableinst*#13] [visit_exp []] -[visit_exp `funcinst*#12`] -[visit_id funcinst*#12] [visit_exp []] -[visit_exp `datainst*#10`] -[visit_id datainst*#10] [visit_exp [datainst]] [visit_exp datainst] [visit_id datainst] -[visit_exp `eleminst*#10`] -[visit_id eleminst*#10] [visit_exp []] -[visit_exp `structinst*#11`] -[visit_id structinst*#11] [visit_exp []] -[visit_exp `arrayinst*#11`] -[visit_id arrayinst*#11] [visit_exp []] -[visit_exp `exninst*#10`] -[visit_id exninst*#10] [visit_exp []] -[visit_exp |s.`DATAS`_store{`datainst*#11`}|] -[visit_exp s.`DATAS`_store{`datainst*#11`}] +[visit_exp |s.`DATAS`_store|] +[visit_exp s.`DATAS`_store] [visit_exp s] [visit_id s] not free -[visit_exp `datainst*#11`] -[visit_id datainst*#11] -[visit_exp (datainst = {`BYTES`{`byte*#1880`} byte*{byte <- `byte*`}})] +[visit_exp (datainst = {`BYTES` byte*{byte <- `byte*`}})] [visit_exp datainst] [visit_id datainst] not free -[visit_exp {`BYTES`{`byte*#1880`} byte*{byte <- `byte*`}}] -[visit_exp `byte*#1880`] -[visit_id byte*#1880] +[visit_exp {`BYTES` byte*{byte <- `byte*`}}] [visit_exp byte*{byte <- `byte*`}] [scope_enter byte] [visit_exp byte] @@ -68075,15 +55805,19 @@ DecD allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) [visit_id byte*] no dims => ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocdata{s : store, `byte*` : byte*, `taginst*#11` : taginst*, `globalinst*#12` : globalinst*, `meminst*#13` : meminst*, `tableinst*#13` : tableinst*, `funcinst*#12` : funcinst*, `datainst*#10` : datainst*, datainst : datainst, `eleminst*#10` : eleminst*, `structinst*#11` : structinst*, `arrayinst*#11` : arrayinst*, `exninst*#10` : exninst*, `datainst*#11` : datainst*, `byte*#1880` : byte*}(s, `OK`_datatype, byte*{byte <- `byte*`}) = (s +++ {`TAGS`{`taginst*#11`} [], `GLOBALS`{`globalinst*#12`} [], `MEMS`{`meminst*#13`} [], `TABLES`{`tableinst*#13`} [], `FUNCS`{`funcinst*#12`} [], `DATAS`{`datainst*#10`} [datainst], `ELEMS`{`eleminst*#10`} [], `STRUCTS`{`structinst*#11`} [], `ARRAYS`{`arrayinst*#11`} [], `EXNS`{`exninst*#10`} []}, |s.`DATAS`_store{`datainst*#11`}|) - -- if (datainst = {`BYTES`{`byte*#1880`} byte*{byte <- `byte*`}}) + 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*`}}) [check_dims] _ store DecD allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) [visit_id store] not free [visit_id _] not free [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_exit _] +[scope_exit _] [check_dims] s [visit_exp s] [visit_id s] @@ -68228,9 +55962,13 @@ DecD allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) [visit_id store] not free [visit_id elemtype] not free [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_enter _] [visit_id _] not free -[check_dims] arrayinst*#12 datainst*#12 eleminst eleminst*#11 eleminst*#12 elemtype elemtype#1 exninst*#11 funcinst*#13 globalinst*#13 meminst*#14 ref ref*#23 s structinst*#12 tableinst*#14 taginst*#12 +[scope_exit _] +[scope_exit _] +[check_dims] eleminst elemtype ref s [visit_exp s] [visit_id s] [visit_exp elemtype] @@ -68244,59 +55982,33 @@ DecD allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) [visit_exp `ref*`] [visit_id ref*] no dims [visit_id ref*] -[visit_exp (s +++ {`TAGS`{`taginst*#12`} [], `GLOBALS`{`globalinst*#13`} [], `MEMS`{`meminst*#14`} [], `TABLES`{`tableinst*#14`} [], `FUNCS`{`funcinst*#13`} [], `DATAS`{`datainst*#12`} [], `ELEMS`{`eleminst*#11`} [eleminst], `STRUCTS`{`structinst*#12`} [], `ARRAYS`{`arrayinst*#12`} [], `EXNS`{`exninst*#11`} []}, |s.`ELEMS`_store{`eleminst*#12`}|)] -[visit_exp s +++ {`TAGS`{`taginst*#12`} [], `GLOBALS`{`globalinst*#13`} [], `MEMS`{`meminst*#14`} [], `TABLES`{`tableinst*#14`} [], `FUNCS`{`funcinst*#13`} [], `DATAS`{`datainst*#12`} [], `ELEMS`{`eleminst*#11`} [eleminst], `STRUCTS`{`structinst*#12`} [], `ARRAYS`{`arrayinst*#12`} [], `EXNS`{`exninst*#11`} []}] +[visit_exp (s +++ {`TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [eleminst], `STRUCTS` [], `ARRAYS` [], `EXNS` []}, |s.`ELEMS`_store|)] +[visit_exp s +++ {`TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [eleminst], `STRUCTS` [], `ARRAYS` [], `EXNS` []}] [visit_exp s] [visit_id s] not free -[visit_exp {`TAGS`{`taginst*#12`} [], `GLOBALS`{`globalinst*#13`} [], `MEMS`{`meminst*#14`} [], `TABLES`{`tableinst*#14`} [], `FUNCS`{`funcinst*#13`} [], `DATAS`{`datainst*#12`} [], `ELEMS`{`eleminst*#11`} [eleminst], `STRUCTS`{`structinst*#12`} [], `ARRAYS`{`arrayinst*#12`} [], `EXNS`{`exninst*#11`} []}] -[visit_exp `taginst*#12`] -[visit_id taginst*#12] +[visit_exp {`TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [eleminst], `STRUCTS` [], `ARRAYS` [], `EXNS` []}] [visit_exp []] -[visit_exp `globalinst*#13`] -[visit_id globalinst*#13] [visit_exp []] -[visit_exp `meminst*#14`] -[visit_id meminst*#14] [visit_exp []] -[visit_exp `tableinst*#14`] -[visit_id tableinst*#14] [visit_exp []] -[visit_exp `funcinst*#13`] -[visit_id funcinst*#13] [visit_exp []] -[visit_exp `datainst*#12`] -[visit_id datainst*#12] [visit_exp []] -[visit_exp `eleminst*#11`] -[visit_id eleminst*#11] [visit_exp [eleminst]] [visit_exp eleminst] [visit_id eleminst] -[visit_exp `structinst*#12`] -[visit_id structinst*#12] [visit_exp []] -[visit_exp `arrayinst*#12`] -[visit_id arrayinst*#12] [visit_exp []] -[visit_exp `exninst*#11`] -[visit_id exninst*#11] [visit_exp []] -[visit_exp |s.`ELEMS`_store{`eleminst*#12`}|] -[visit_exp s.`ELEMS`_store{`eleminst*#12`}] +[visit_exp |s.`ELEMS`_store|] +[visit_exp s.`ELEMS`_store] [visit_exp s] [visit_id s] not free -[visit_exp `eleminst*#12`] -[visit_id eleminst*#12] -[visit_exp (eleminst = {`TYPE`{elemtype#1} elemtype, `REFS`{`ref*#23`} ref*{ref <- `ref*`}})] +[visit_exp (eleminst = {`TYPE` elemtype, `REFS` ref*{ref <- `ref*`}})] [visit_exp eleminst] [visit_id eleminst] not free -[visit_exp {`TYPE`{elemtype#1} elemtype, `REFS`{`ref*#23`} ref*{ref <- `ref*`}}] -[visit_exp elemtype#1] -[visit_id elemtype#1] +[visit_exp {`TYPE` elemtype, `REFS` ref*{ref <- `ref*`}}] [visit_exp elemtype] [visit_id elemtype] not free -[visit_exp `ref*#23`] -[visit_id ref*#23] [visit_exp ref*{ref <- `ref*`}] [scope_enter ref] [visit_exp ref] @@ -68308,15 +56020,19 @@ DecD allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) [visit_id ref*] no dims => ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocelem{s : store, elemtype : elemtype, `ref*` : ref*, `taginst*#12` : taginst*, `globalinst*#13` : globalinst*, `meminst*#14` : meminst*, `tableinst*#14` : tableinst*, `funcinst*#13` : funcinst*, `datainst*#12` : datainst*, `eleminst*#11` : eleminst*, eleminst : eleminst, `structinst*#12` : structinst*, `arrayinst*#12` : arrayinst*, `exninst*#11` : exninst*, `eleminst*#12` : eleminst*, elemtype#1 : elemtype, `ref*#23` : ref*}(s, elemtype, ref*{ref <- `ref*`}) = (s +++ {`TAGS`{`taginst*#12`} [], `GLOBALS`{`globalinst*#13`} [], `MEMS`{`meminst*#14`} [], `TABLES`{`tableinst*#14`} [], `FUNCS`{`funcinst*#13`} [], `DATAS`{`datainst*#12`} [], `ELEMS`{`eleminst*#11`} [eleminst], `STRUCTS`{`structinst*#12`} [], `ARRAYS`{`arrayinst*#12`} [], `EXNS`{`exninst*#11`} []}, |s.`ELEMS`_store{`eleminst*#12`}|) - -- if (eleminst = {`TYPE`{elemtype#1} elemtype, `REFS`{`ref*#23`} ref*{ref <- `ref*`}}) + 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*`}}) [check_dims] _ store DecD allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) [visit_id store] not free [visit_id _] not free [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_exit _] +[scope_exit _] [check_dims] s [visit_exp s] [visit_id s] @@ -68460,221 +56176,141 @@ DecD allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) DecD allocexport(moduleinst : moduleinst, export : export) : exportinst [visit_id moduleinst] not free [visit_id export] not free -[check_dims] externaddr#1 externidx#5379 i#47111 moduleinst name name#5597 name#5599 tagaddr#8 tagaddr*#4 tagidx#17 x +[check_dims] moduleinst name x [visit_exp moduleinst] [visit_id moduleinst] -[visit_exp `EXPORT`_export{name#5597, externidx#5379}(name, `TAG`_externidx{tagidx#17}(x))] -[visit_exp name#5597] -[visit_id name#5597] -[visit_exp externidx#5379] -[visit_id externidx#5379] -[visit_exp (name, `TAG`_externidx{tagidx#17}(x))] +[visit_exp `EXPORT`_export(name, `TAG`_externidx(x))] +[visit_exp (name, `TAG`_externidx(x))] [visit_exp name] [visit_id name] -[visit_exp `TAG`_externidx{tagidx#17}(x)] -[visit_exp tagidx#17] -[visit_id tagidx#17] +[visit_exp `TAG`_externidx(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp {`NAME`{name#5599} name, `ADDR`{externaddr#1} `TAG`_externaddr{tagaddr#8}(moduleinst.`TAGS`_moduleinst{`tagaddr*#4`}[x!`%`_idx{i#47111}.0])}] -[visit_exp name#5599] -[visit_id name#5599] +[visit_exp {`NAME` name, `ADDR` `TAG`_externaddr(moduleinst.`TAGS`_moduleinst[x!`%`_idx.0])}] [visit_exp name] [visit_id name] not free -[visit_exp externaddr#1] -[visit_id externaddr#1] -[visit_exp `TAG`_externaddr{tagaddr#8}(moduleinst.`TAGS`_moduleinst{`tagaddr*#4`}[x!`%`_idx{i#47111}.0])] -[visit_exp tagaddr#8] -[visit_id tagaddr#8] -[visit_exp (moduleinst.`TAGS`_moduleinst{`tagaddr*#4`}[x!`%`_idx{i#47111}.0])] -[visit_exp moduleinst.`TAGS`_moduleinst{`tagaddr*#4`}[x!`%`_idx{i#47111}.0]] -[visit_exp moduleinst.`TAGS`_moduleinst{`tagaddr*#4`}] +[visit_exp `TAG`_externaddr(moduleinst.`TAGS`_moduleinst[x!`%`_idx.0])] +[visit_exp (moduleinst.`TAGS`_moduleinst[x!`%`_idx.0])] +[visit_exp moduleinst.`TAGS`_moduleinst[x!`%`_idx.0]] +[visit_exp moduleinst.`TAGS`_moduleinst] [visit_exp moduleinst] [visit_id moduleinst] not free -[visit_exp `tagaddr*#4`] -[visit_id tagaddr*#4] -[visit_exp x!`%`_idx{i#47111}.0] -[visit_exp x!`%`_idx{i#47111}] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] [visit_exp x] [visit_id x] not free -[visit_exp i#47111] -[visit_id i#47111] => ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{moduleinst : moduleinst, name#5597 : name, externidx#5379 : externidx, name : name, tagidx#17 : tagidx, x : idx, name#5599 : name, externaddr#1 : externaddr, tagaddr#8 : tagaddr, `tagaddr*#4` : tagaddr*, i#47111 : nat}(moduleinst, `EXPORT`_export{name#5597, externidx#5379}(name, `TAG`_externidx{tagidx#17}(x))) = {`NAME`{name#5599} name, `ADDR`{externaddr#1} `TAG`_externaddr{tagaddr#8}(moduleinst.`TAGS`_moduleinst{`tagaddr*#4`}[x!`%`_idx{i#47111}.0])} -[check_dims] externaddr#2 externidx#5391 globaladdr#5 globaladdr*#3 globalidx#21 i#47135 moduleinst name name#5610 name#5612 x + 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])} +[check_dims] moduleinst name x [visit_exp moduleinst] [visit_id moduleinst] -[visit_exp `EXPORT`_export{name#5610, externidx#5391}(name, `GLOBAL`_externidx{globalidx#21}(x))] -[visit_exp name#5610] -[visit_id name#5610] -[visit_exp externidx#5391] -[visit_id externidx#5391] -[visit_exp (name, `GLOBAL`_externidx{globalidx#21}(x))] +[visit_exp `EXPORT`_export(name, `GLOBAL`_externidx(x))] +[visit_exp (name, `GLOBAL`_externidx(x))] [visit_exp name] [visit_id name] -[visit_exp `GLOBAL`_externidx{globalidx#21}(x)] -[visit_exp globalidx#21] -[visit_id globalidx#21] +[visit_exp `GLOBAL`_externidx(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp {`NAME`{name#5612} name, `ADDR`{externaddr#2} `GLOBAL`_externaddr{globaladdr#5}(moduleinst.`GLOBALS`_moduleinst{`globaladdr*#3`}[x!`%`_idx{i#47135}.0])}] -[visit_exp name#5612] -[visit_id name#5612] +[visit_exp {`NAME` name, `ADDR` `GLOBAL`_externaddr(moduleinst.`GLOBALS`_moduleinst[x!`%`_idx.0])}] [visit_exp name] [visit_id name] not free -[visit_exp externaddr#2] -[visit_id externaddr#2] -[visit_exp `GLOBAL`_externaddr{globaladdr#5}(moduleinst.`GLOBALS`_moduleinst{`globaladdr*#3`}[x!`%`_idx{i#47135}.0])] -[visit_exp globaladdr#5] -[visit_id globaladdr#5] -[visit_exp (moduleinst.`GLOBALS`_moduleinst{`globaladdr*#3`}[x!`%`_idx{i#47135}.0])] -[visit_exp moduleinst.`GLOBALS`_moduleinst{`globaladdr*#3`}[x!`%`_idx{i#47135}.0]] -[visit_exp moduleinst.`GLOBALS`_moduleinst{`globaladdr*#3`}] +[visit_exp `GLOBAL`_externaddr(moduleinst.`GLOBALS`_moduleinst[x!`%`_idx.0])] +[visit_exp (moduleinst.`GLOBALS`_moduleinst[x!`%`_idx.0])] +[visit_exp moduleinst.`GLOBALS`_moduleinst[x!`%`_idx.0]] +[visit_exp moduleinst.`GLOBALS`_moduleinst] [visit_exp moduleinst] [visit_id moduleinst] not free -[visit_exp `globaladdr*#3`] -[visit_id globaladdr*#3] -[visit_exp x!`%`_idx{i#47135}.0] -[visit_exp x!`%`_idx{i#47135}] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] [visit_exp x] [visit_id x] not free -[visit_exp i#47135] -[visit_id i#47135] => ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{moduleinst : moduleinst, name#5610 : name, externidx#5391 : externidx, name : name, globalidx#21 : globalidx, x : idx, name#5612 : name, externaddr#2 : externaddr, globaladdr#5 : globaladdr, `globaladdr*#3` : globaladdr*, i#47135 : nat}(moduleinst, `EXPORT`_export{name#5610, externidx#5391}(name, `GLOBAL`_externidx{globalidx#21}(x))) = {`NAME`{name#5612} name, `ADDR`{externaddr#2} `GLOBAL`_externaddr{globaladdr#5}(moduleinst.`GLOBALS`_moduleinst{`globaladdr*#3`}[x!`%`_idx{i#47135}.0])} -[check_dims] externaddr#3 externidx#5403 i#47159 memaddr#5 memaddr*#4 memidx#163 moduleinst name name#5623 name#5625 x + 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])} +[check_dims] moduleinst name x [visit_exp moduleinst] [visit_id moduleinst] -[visit_exp `EXPORT`_export{name#5623, externidx#5403}(name, `MEM`_externidx{memidx#163}(x))] -[visit_exp name#5623] -[visit_id name#5623] -[visit_exp externidx#5403] -[visit_id externidx#5403] -[visit_exp (name, `MEM`_externidx{memidx#163}(x))] +[visit_exp `EXPORT`_export(name, `MEM`_externidx(x))] +[visit_exp (name, `MEM`_externidx(x))] [visit_exp name] [visit_id name] -[visit_exp `MEM`_externidx{memidx#163}(x)] -[visit_exp memidx#163] -[visit_id memidx#163] +[visit_exp `MEM`_externidx(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp {`NAME`{name#5625} name, `ADDR`{externaddr#3} `MEM`_externaddr{memaddr#5}(moduleinst.`MEMS`_moduleinst{`memaddr*#4`}[x!`%`_idx{i#47159}.0])}] -[visit_exp name#5625] -[visit_id name#5625] +[visit_exp {`NAME` name, `ADDR` `MEM`_externaddr(moduleinst.`MEMS`_moduleinst[x!`%`_idx.0])}] [visit_exp name] [visit_id name] not free -[visit_exp externaddr#3] -[visit_id externaddr#3] -[visit_exp `MEM`_externaddr{memaddr#5}(moduleinst.`MEMS`_moduleinst{`memaddr*#4`}[x!`%`_idx{i#47159}.0])] -[visit_exp memaddr#5] -[visit_id memaddr#5] -[visit_exp (moduleinst.`MEMS`_moduleinst{`memaddr*#4`}[x!`%`_idx{i#47159}.0])] -[visit_exp moduleinst.`MEMS`_moduleinst{`memaddr*#4`}[x!`%`_idx{i#47159}.0]] -[visit_exp moduleinst.`MEMS`_moduleinst{`memaddr*#4`}] +[visit_exp `MEM`_externaddr(moduleinst.`MEMS`_moduleinst[x!`%`_idx.0])] +[visit_exp (moduleinst.`MEMS`_moduleinst[x!`%`_idx.0])] +[visit_exp moduleinst.`MEMS`_moduleinst[x!`%`_idx.0]] +[visit_exp moduleinst.`MEMS`_moduleinst] [visit_exp moduleinst] [visit_id moduleinst] not free -[visit_exp `memaddr*#4`] -[visit_id memaddr*#4] -[visit_exp x!`%`_idx{i#47159}.0] -[visit_exp x!`%`_idx{i#47159}] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] [visit_exp x] [visit_id x] not free -[visit_exp i#47159] -[visit_id i#47159] => ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{moduleinst : moduleinst, name#5623 : name, externidx#5403 : externidx, name : name, memidx#163 : memidx, x : idx, name#5625 : name, externaddr#3 : externaddr, memaddr#5 : memaddr, `memaddr*#4` : memaddr*, i#47159 : nat}(moduleinst, `EXPORT`_export{name#5623, externidx#5403}(name, `MEM`_externidx{memidx#163}(x))) = {`NAME`{name#5625} name, `ADDR`{externaddr#3} `MEM`_externaddr{memaddr#5}(moduleinst.`MEMS`_moduleinst{`memaddr*#4`}[x!`%`_idx{i#47159}.0])} -[check_dims] externaddr#4 externidx#5415 i#47183 moduleinst name name#5636 name#5638 tableaddr#5 tableaddr*#4 tableidx#117 x + 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])} +[check_dims] moduleinst name x [visit_exp moduleinst] [visit_id moduleinst] -[visit_exp `EXPORT`_export{name#5636, externidx#5415}(name, `TABLE`_externidx{tableidx#117}(x))] -[visit_exp name#5636] -[visit_id name#5636] -[visit_exp externidx#5415] -[visit_id externidx#5415] -[visit_exp (name, `TABLE`_externidx{tableidx#117}(x))] +[visit_exp `EXPORT`_export(name, `TABLE`_externidx(x))] +[visit_exp (name, `TABLE`_externidx(x))] [visit_exp name] [visit_id name] -[visit_exp `TABLE`_externidx{tableidx#117}(x)] -[visit_exp tableidx#117] -[visit_id tableidx#117] +[visit_exp `TABLE`_externidx(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp {`NAME`{name#5638} name, `ADDR`{externaddr#4} `TABLE`_externaddr{tableaddr#5}(moduleinst.`TABLES`_moduleinst{`tableaddr*#4`}[x!`%`_idx{i#47183}.0])}] -[visit_exp name#5638] -[visit_id name#5638] +[visit_exp {`NAME` name, `ADDR` `TABLE`_externaddr(moduleinst.`TABLES`_moduleinst[x!`%`_idx.0])}] [visit_exp name] [visit_id name] not free -[visit_exp externaddr#4] -[visit_id externaddr#4] -[visit_exp `TABLE`_externaddr{tableaddr#5}(moduleinst.`TABLES`_moduleinst{`tableaddr*#4`}[x!`%`_idx{i#47183}.0])] -[visit_exp tableaddr#5] -[visit_id tableaddr#5] -[visit_exp (moduleinst.`TABLES`_moduleinst{`tableaddr*#4`}[x!`%`_idx{i#47183}.0])] -[visit_exp moduleinst.`TABLES`_moduleinst{`tableaddr*#4`}[x!`%`_idx{i#47183}.0]] -[visit_exp moduleinst.`TABLES`_moduleinst{`tableaddr*#4`}] +[visit_exp `TABLE`_externaddr(moduleinst.`TABLES`_moduleinst[x!`%`_idx.0])] +[visit_exp (moduleinst.`TABLES`_moduleinst[x!`%`_idx.0])] +[visit_exp moduleinst.`TABLES`_moduleinst[x!`%`_idx.0]] +[visit_exp moduleinst.`TABLES`_moduleinst] [visit_exp moduleinst] [visit_id moduleinst] not free -[visit_exp `tableaddr*#4`] -[visit_id tableaddr*#4] -[visit_exp x!`%`_idx{i#47183}.0] -[visit_exp x!`%`_idx{i#47183}] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] [visit_exp x] [visit_id x] not free -[visit_exp i#47183] -[visit_id i#47183] => ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{moduleinst : moduleinst, name#5636 : name, externidx#5415 : externidx, name : name, tableidx#117 : tableidx, x : idx, name#5638 : name, externaddr#4 : externaddr, tableaddr#5 : tableaddr, `tableaddr*#4` : tableaddr*, i#47183 : nat}(moduleinst, `EXPORT`_export{name#5636, externidx#5415}(name, `TABLE`_externidx{tableidx#117}(x))) = {`NAME`{name#5638} name, `ADDR`{externaddr#4} `TABLE`_externaddr{tableaddr#5}(moduleinst.`TABLES`_moduleinst{`tableaddr*#4`}[x!`%`_idx{i#47183}.0])} -[check_dims] externaddr#5 externidx#5427 funcaddr#19 funcaddr*#5 funcidx#2843 i#47207 moduleinst name name#5649 name#5651 x + 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])} +[check_dims] moduleinst name x [visit_exp moduleinst] [visit_id moduleinst] -[visit_exp `EXPORT`_export{name#5649, externidx#5427}(name, `FUNC`_externidx{funcidx#2843}(x))] -[visit_exp name#5649] -[visit_id name#5649] -[visit_exp externidx#5427] -[visit_id externidx#5427] -[visit_exp (name, `FUNC`_externidx{funcidx#2843}(x))] +[visit_exp `EXPORT`_export(name, `FUNC`_externidx(x))] +[visit_exp (name, `FUNC`_externidx(x))] [visit_exp name] [visit_id name] -[visit_exp `FUNC`_externidx{funcidx#2843}(x)] -[visit_exp funcidx#2843] -[visit_id funcidx#2843] +[visit_exp `FUNC`_externidx(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp {`NAME`{name#5651} name, `ADDR`{externaddr#5} `FUNC`_externaddr{funcaddr#19}(moduleinst.`FUNCS`_moduleinst{`funcaddr*#5`}[x!`%`_idx{i#47207}.0])}] -[visit_exp name#5651] -[visit_id name#5651] +[visit_exp {`NAME` name, `ADDR` `FUNC`_externaddr(moduleinst.`FUNCS`_moduleinst[x!`%`_idx.0])}] [visit_exp name] [visit_id name] not free -[visit_exp externaddr#5] -[visit_id externaddr#5] -[visit_exp `FUNC`_externaddr{funcaddr#19}(moduleinst.`FUNCS`_moduleinst{`funcaddr*#5`}[x!`%`_idx{i#47207}.0])] -[visit_exp funcaddr#19] -[visit_id funcaddr#19] -[visit_exp (moduleinst.`FUNCS`_moduleinst{`funcaddr*#5`}[x!`%`_idx{i#47207}.0])] -[visit_exp moduleinst.`FUNCS`_moduleinst{`funcaddr*#5`}[x!`%`_idx{i#47207}.0]] -[visit_exp moduleinst.`FUNCS`_moduleinst{`funcaddr*#5`}] +[visit_exp `FUNC`_externaddr(moduleinst.`FUNCS`_moduleinst[x!`%`_idx.0])] +[visit_exp (moduleinst.`FUNCS`_moduleinst[x!`%`_idx.0])] +[visit_exp moduleinst.`FUNCS`_moduleinst[x!`%`_idx.0]] +[visit_exp moduleinst.`FUNCS`_moduleinst] [visit_exp moduleinst] [visit_id moduleinst] not free -[visit_exp `funcaddr*#5`] -[visit_id funcaddr*#5] -[visit_exp x!`%`_idx{i#47207}.0] -[visit_exp x!`%`_idx{i#47207}] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] [visit_exp x] [visit_id x] not free -[visit_exp i#47207] -[visit_id i#47207] => ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{moduleinst : moduleinst, name#5649 : name, externidx#5427 : externidx, name : name, funcidx#2843 : funcidx, x : idx, name#5651 : name, externaddr#5 : externaddr, funcaddr#19 : funcaddr, `funcaddr*#5` : funcaddr*, i#47207 : nat}(moduleinst, `EXPORT`_export{name#5649, externidx#5427}(name, `FUNC`_externidx{funcidx#2843}(x))) = {`NAME`{name#5651} name, `ADDR`{externaddr#5} `FUNC`_externaddr{funcaddr#19}(moduleinst.`FUNCS`_moduleinst{`funcaddr*#5`}[x!`%`_idx{i#47207}.0])} + 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])} [check_dims] _ moduleinst DecD allocexports(moduleinst : moduleinst, export*) : exportinst* [visit_id moduleinst] not free @@ -68714,9 +56350,13 @@ DecD allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) [visit_id _] not free [visit_id _] not free [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_enter _] [visit_id _] not free -[check_dims] aa aa_I byte byte*#2021 da data data*#101 dataaddr*#3 dataaddr*#4 datamode datamode#1985 deftype*#94 deftype*#95 dt ea elem elem*#125 elemaddr*#3 elemaddr*#4 elemmode elemmode#3087 elemtype export export*#101 exportinst*#1 exportinst*#2 expr#4459 expr#4477 expr#4495 expr#4497 expr*#3087 expr_E expr_F expr_G expr_T externaddr fa fa_I func func*#101 funcaddr*#6 funcaddr*#7 funcinst*#14 ga ga_I global global*#125 globaladdr*#4 globaladdr*#5 globaltype globaltype#2179 i#47295 i_F import import*#101 local local*#1351 local*#1353 ma ma_I mem mem*#125 memaddr*#5 memaddr*#6 memtype memtype#634 module moduleinst ref_E ref_T reftype#3705 s s_1 s_2 s_3 s_4 s_5 s_6 s_7 start start?#101 ta ta_I table table*#125 tableaddr*#5 tableaddr*#6 tabletype tabletype#998 tag tag*#101 tagaddr*#5 tagaddr*#6 tagtype tagtype#260 type type*#101 typeidx#1808 typeidx#1810 val_G x xi +[scope_exit _] +[scope_exit _] +[check_dims] aa aa_I byte da data datamode dt ea elem elemmode elemtype export expr_E expr_F expr_G expr_T externaddr fa fa_I func ga ga_I global globaltype i_F import local ma ma_I mem memtype module moduleinst ref_E ref_T s s_1 s_2 s_3 s_4 s_5 s_6 s_7 start ta ta_I table tabletype tag tagtype type val_G x xi [visit_exp s] [visit_id s] [visit_exp module] @@ -68770,32 +56410,10 @@ DecD allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) [visit_id s_7] [visit_exp moduleinst] [visit_id moduleinst] -[visit_exp (module = `MODULE`_module{`type*#101`, `import*#101`, `tag*#101`, `global*#125`, `mem*#125`, `table*#125`, `func*#101`, `data*#101`, `elem*#125`, `start?#101`, `export*#101`}(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*`}))] +[visit_exp (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*`}))] [visit_exp module] [visit_id module] not free -[visit_exp `MODULE`_module{`type*#101`, `import*#101`, `tag*#101`, `global*#125`, `mem*#125`, `table*#125`, `func*#101`, `data*#101`, `elem*#125`, `start?#101`, `export*#101`}(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*`})] -[visit_exp `type*#101`] -[visit_id type*#101] -[visit_exp `import*#101`] -[visit_id import*#101] -[visit_exp `tag*#101`] -[visit_id tag*#101] -[visit_exp `global*#125`] -[visit_id global*#125] -[visit_exp `mem*#125`] -[visit_id mem*#125] -[visit_exp `table*#125`] -[visit_id table*#125] -[visit_exp `func*#101`] -[visit_id func*#101] -[visit_exp `data*#101`] -[visit_id data*#101] -[visit_exp `elem*#125`] -[visit_id elem*#125] -[visit_exp `start?#101`] -[visit_id start?#101] -[visit_exp `export*#101`] -[visit_id export*#101] +[visit_exp `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*`})] [visit_exp (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*`})] [visit_exp type*{type <- `type*`}] [scope_enter type] @@ -68896,7 +56514,7 @@ DecD allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) [visit_exp `export*`] [visit_id export*] no dims [visit_id export*] -[visit_exp (tag*{tag <- `tag*`} = `TAG`_tag{tagtype#260}(tagtype)*{tagtype <- `tagtype*`, tagtype#260 <- `tagtype#260*`})] +[visit_exp (tag*{tag <- `tag*`} = `TAG`_tag(tagtype)*{tagtype <- `tagtype*`})] [visit_exp tag*{tag <- `tag*`}] [scope_enter tag] [visit_exp tag] @@ -68906,26 +56524,18 @@ DecD allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) [visit_exp `tag*`] [visit_id tag*] not free [visit_id tag*] no dims -[visit_exp `TAG`_tag{tagtype#260}(tagtype)*{tagtype <- `tagtype*`, tagtype#260 <- `tagtype#260*`}] +[visit_exp `TAG`_tag(tagtype)*{tagtype <- `tagtype*`}] [scope_enter tagtype] -[scope_enter tagtype#260] -[visit_exp `TAG`_tag{tagtype#260}(tagtype)] -[visit_exp tagtype#260] -[visit_id tagtype#260] not free +[visit_exp `TAG`_tag(tagtype)] [visit_exp (tagtype)] [visit_exp tagtype] [visit_id tagtype] not free [visit_id tagtype] not free -[visit_id tagtype#260] not free -[scope_exit tagtype#260] [scope_exit tagtype] [visit_exp `tagtype*`] [visit_id tagtype*] no dims [visit_id tagtype*] -[visit_exp `tagtype#260*`] -[visit_id tagtype#260*] no dims -[visit_id tagtype#260*] -[visit_exp (global*{global <- `global*`} = `GLOBAL`_global{globaltype#2179, expr#4459}(globaltype, expr_G)*{expr#4459 <- `expr#4459*`, expr_G <- `expr_G*`, globaltype <- `globaltype*`, globaltype#2179 <- `globaltype#2179*`})] +[visit_exp (global*{global <- `global*`} = `GLOBAL`_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`})] [visit_exp global*{global <- `global*`}] [scope_enter global] [visit_exp global] @@ -68935,42 +56545,26 @@ DecD allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) [visit_exp `global*`] [visit_id global*] not free [visit_id global*] no dims -[visit_exp `GLOBAL`_global{globaltype#2179, expr#4459}(globaltype, expr_G)*{expr#4459 <- `expr#4459*`, expr_G <- `expr_G*`, globaltype <- `globaltype*`, globaltype#2179 <- `globaltype#2179*`}] -[scope_enter expr#4459] +[visit_exp `GLOBAL`_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`}] [scope_enter expr_G] [scope_enter globaltype] -[scope_enter globaltype#2179] -[visit_exp `GLOBAL`_global{globaltype#2179, expr#4459}(globaltype, expr_G)] -[visit_exp globaltype#2179] -[visit_id globaltype#2179] not free -[visit_exp expr#4459] -[visit_id expr#4459] not free +[visit_exp `GLOBAL`_global(globaltype, expr_G)] [visit_exp (globaltype, expr_G)] [visit_exp globaltype] [visit_id globaltype] not free [visit_exp expr_G] [visit_id expr_G] not free -[visit_id expr#4459] not free [visit_id expr_G] not free [visit_id globaltype] not free -[visit_id globaltype#2179] not free -[scope_exit globaltype#2179] [scope_exit globaltype] [scope_exit expr_G] -[scope_exit expr#4459] -[visit_exp `expr#4459*`] -[visit_id expr#4459*] no dims -[visit_id expr#4459*] [visit_exp `expr_G*`] [visit_id expr_G*] no dims [visit_id expr_G*] [visit_exp `globaltype*`] [visit_id globaltype*] no dims [visit_id globaltype*] -[visit_exp `globaltype#2179*`] -[visit_id globaltype#2179*] no dims -[visit_id globaltype#2179*] -[visit_exp (mem*{mem <- `mem*`} = `MEMORY`_mem{memtype#634}(memtype)*{memtype <- `memtype*`, memtype#634 <- `memtype#634*`})] +[visit_exp (mem*{mem <- `mem*`} = `MEMORY`_mem(memtype)*{memtype <- `memtype*`})] [visit_exp mem*{mem <- `mem*`}] [scope_enter mem] [visit_exp mem] @@ -68980,26 +56574,18 @@ DecD allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) [visit_exp `mem*`] [visit_id mem*] not free [visit_id mem*] no dims -[visit_exp `MEMORY`_mem{memtype#634}(memtype)*{memtype <- `memtype*`, memtype#634 <- `memtype#634*`}] +[visit_exp `MEMORY`_mem(memtype)*{memtype <- `memtype*`}] [scope_enter memtype] -[scope_enter memtype#634] -[visit_exp `MEMORY`_mem{memtype#634}(memtype)] -[visit_exp memtype#634] -[visit_id memtype#634] not free +[visit_exp `MEMORY`_mem(memtype)] [visit_exp (memtype)] [visit_exp memtype] [visit_id memtype] not free [visit_id memtype] not free -[visit_id memtype#634] not free -[scope_exit memtype#634] [scope_exit memtype] [visit_exp `memtype*`] [visit_id memtype*] no dims [visit_id memtype*] -[visit_exp `memtype#634*`] -[visit_id memtype#634*] no dims -[visit_id memtype#634*] -[visit_exp (table*{table <- `table*`} = `TABLE`_table{tabletype#998, expr#4477}(tabletype, expr_T)*{expr#4477 <- `expr#4477*`, expr_T <- `expr_T*`, tabletype <- `tabletype*`, tabletype#998 <- `tabletype#998*`})] +[visit_exp (table*{table <- `table*`} = `TABLE`_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`})] [visit_exp table*{table <- `table*`}] [scope_enter table] [visit_exp table] @@ -69009,42 +56595,26 @@ DecD allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) [visit_exp `table*`] [visit_id table*] not free [visit_id table*] no dims -[visit_exp `TABLE`_table{tabletype#998, expr#4477}(tabletype, expr_T)*{expr#4477 <- `expr#4477*`, expr_T <- `expr_T*`, tabletype <- `tabletype*`, tabletype#998 <- `tabletype#998*`}] -[scope_enter expr#4477] +[visit_exp `TABLE`_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`}] [scope_enter expr_T] [scope_enter tabletype] -[scope_enter tabletype#998] -[visit_exp `TABLE`_table{tabletype#998, expr#4477}(tabletype, expr_T)] -[visit_exp tabletype#998] -[visit_id tabletype#998] not free -[visit_exp expr#4477] -[visit_id expr#4477] not free +[visit_exp `TABLE`_table(tabletype, expr_T)] [visit_exp (tabletype, expr_T)] [visit_exp tabletype] [visit_id tabletype] not free [visit_exp expr_T] [visit_id expr_T] not free -[visit_id expr#4477] not free [visit_id expr_T] not free [visit_id tabletype] not free -[visit_id tabletype#998] not free -[scope_exit tabletype#998] [scope_exit tabletype] [scope_exit expr_T] -[scope_exit expr#4477] -[visit_exp `expr#4477*`] -[visit_id expr#4477*] no dims -[visit_id expr#4477*] [visit_exp `expr_T*`] [visit_id expr_T*] no dims [visit_id expr_T*] [visit_exp `tabletype*`] [visit_id tabletype*] no dims [visit_id tabletype*] -[visit_exp `tabletype#998*`] -[visit_id tabletype#998*] no dims -[visit_id tabletype#998*] -[visit_exp (func*{func <- `func*`} = `FUNC`_func{typeidx#1808, `local*#1351`, expr#4495}(x, local*{local <- `local*`}, expr_F)*{expr#4495 <- `expr#4495*`, expr_F <- `expr_F*`, `local*` <- `local**`, `local*#1351` <- `local*#1351*`, typeidx#1808 <- `typeidx#1808*`, x <- `x*`})] +[visit_exp (func*{func <- `func*`} = `FUNC`_func(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`})] [visit_exp func*{func <- `func*`}] [scope_enter func] [visit_exp func] @@ -69054,20 +56624,11 @@ DecD allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) [visit_exp `func*`] [visit_id func*] not free [visit_id func*] no dims -[visit_exp `FUNC`_func{typeidx#1808, `local*#1351`, expr#4495}(x, local*{local <- `local*`}, expr_F)*{expr#4495 <- `expr#4495*`, expr_F <- `expr_F*`, `local*` <- `local**`, `local*#1351` <- `local*#1351*`, typeidx#1808 <- `typeidx#1808*`, x <- `x*`}] -[scope_enter expr#4495] +[visit_exp `FUNC`_func(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}] [scope_enter expr_F] [scope_enter local*] -[scope_enter local*#1351] -[scope_enter typeidx#1808] [scope_enter x] -[visit_exp `FUNC`_func{typeidx#1808, `local*#1351`, expr#4495}(x, local*{local <- `local*`}, expr_F)] -[visit_exp typeidx#1808] -[visit_id typeidx#1808] not free -[visit_exp `local*#1351`] -[visit_id local*#1351] not free -[visit_exp expr#4495] -[visit_id expr#4495] not free +[visit_exp `FUNC`_func(x, local*{local <- `local*`}, expr_F)] [visit_exp (x, local*{local <- `local*`}, expr_F)] [visit_exp x] [visit_id x] not free @@ -69082,38 +56643,23 @@ DecD allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) [visit_id local*] no dims [visit_exp expr_F] [visit_id expr_F] not free -[visit_id expr#4495] not free [visit_id expr_F] not free [visit_id local*] not free [visit_id local*] no dims -[visit_id local*#1351] not free -[visit_id typeidx#1808] not free [visit_id x] not free [scope_exit x] -[scope_exit typeidx#1808] -[scope_exit local*#1351] [scope_exit local*] [scope_exit expr_F] -[scope_exit expr#4495] -[visit_exp `expr#4495*`] -[visit_id expr#4495*] no dims -[visit_id expr#4495*] [visit_exp `expr_F*`] [visit_id expr_F*] no dims [visit_id expr_F*] [visit_exp `local**`] [visit_id local**] no dims [visit_id local**] -[visit_exp `local*#1351*`] -[visit_id local*#1351*] no dims -[visit_id local*#1351*] -[visit_exp `typeidx#1808*`] -[visit_id typeidx#1808*] no dims -[visit_id typeidx#1808*] [visit_exp `x*`] [visit_id x*] no dims [visit_id x*] -[visit_exp (data*{data <- `data*`} = `DATA`_data{`byte*#2021`, datamode#1985}(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, `byte*#2021` <- `byte*#2021*`, datamode <- `datamode*`, datamode#1985 <- `datamode#1985*`})] +[visit_exp (data*{data <- `data*`} = `DATA`_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`})] [visit_exp data*{data <- `data*`}] [scope_enter data] [visit_exp data] @@ -69123,16 +56669,10 @@ DecD allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) [visit_exp `data*`] [visit_id data*] not free [visit_id data*] no dims -[visit_exp `DATA`_data{`byte*#2021`, datamode#1985}(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, `byte*#2021` <- `byte*#2021*`, datamode <- `datamode*`, datamode#1985 <- `datamode#1985*`}] +[visit_exp `DATA`_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`}] [scope_enter byte*] -[scope_enter byte*#2021] [scope_enter datamode] -[scope_enter datamode#1985] -[visit_exp `DATA`_data{`byte*#2021`, datamode#1985}(byte*{byte <- `byte*`}, datamode)] -[visit_exp `byte*#2021`] -[visit_id byte*#2021] not free -[visit_exp datamode#1985] -[visit_id datamode#1985] not free +[visit_exp `DATA`_data(byte*{byte <- `byte*`}, datamode)] [visit_exp (byte*{byte <- `byte*`}, datamode)] [visit_exp byte*{byte <- `byte*`}] [scope_enter byte] @@ -69147,26 +56687,16 @@ DecD allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) [visit_id datamode] not free [visit_id byte*] not free [visit_id byte*] no dims -[visit_id byte*#2021] not free [visit_id datamode] not free -[visit_id datamode#1985] not free -[scope_exit datamode#1985] [scope_exit datamode] -[scope_exit byte*#2021] [scope_exit byte*] [visit_exp `byte**`] [visit_id byte**] no dims [visit_id byte**] -[visit_exp `byte*#2021*`] -[visit_id byte*#2021*] no dims -[visit_id byte*#2021*] [visit_exp `datamode*`] [visit_id datamode*] no dims [visit_id datamode*] -[visit_exp `datamode#1985*`] -[visit_id datamode#1985*] no dims -[visit_id datamode#1985*] -[visit_exp (elem*{elem <- `elem*`} = `ELEM`_elem{reftype#3705, `expr*#3087`, elemmode#3087}(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemmode#3087 <- `elemmode#3087*`, elemtype <- `elemtype*`, `expr*#3087` <- `expr*#3087*`, `expr_E*` <- `expr_E**`, reftype#3705 <- `reftype#3705*`})] +[visit_exp (elem*{elem <- `elem*`} = `ELEM`_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`})] [visit_exp elem*{elem <- `elem*`}] [scope_enter elem] [visit_exp elem] @@ -69176,20 +56706,11 @@ DecD allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) [visit_exp `elem*`] [visit_id elem*] not free [visit_id elem*] no dims -[visit_exp `ELEM`_elem{reftype#3705, `expr*#3087`, elemmode#3087}(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemmode#3087 <- `elemmode#3087*`, elemtype <- `elemtype*`, `expr*#3087` <- `expr*#3087*`, `expr_E*` <- `expr_E**`, reftype#3705 <- `reftype#3705*`}] +[visit_exp `ELEM`_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`}] [scope_enter elemmode] -[scope_enter elemmode#3087] [scope_enter elemtype] -[scope_enter expr*#3087] [scope_enter expr_E*] -[scope_enter reftype#3705] -[visit_exp `ELEM`_elem{reftype#3705, `expr*#3087`, elemmode#3087}(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)] -[visit_exp reftype#3705] -[visit_id reftype#3705] not free -[visit_exp `expr*#3087`] -[visit_id expr*#3087] not free -[visit_exp elemmode#3087] -[visit_id elemmode#3087] not free +[visit_exp `ELEM`_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)] [visit_exp (elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)] [visit_exp elemtype] [visit_id elemtype] not free @@ -69205,36 +56726,21 @@ DecD allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) [visit_exp elemmode] [visit_id elemmode] not free [visit_id elemmode] not free -[visit_id elemmode#3087] not free [visit_id elemtype] not free -[visit_id expr*#3087] not free [visit_id expr_E*] not free [visit_id expr_E*] no dims -[visit_id reftype#3705] not free -[scope_exit reftype#3705] [scope_exit expr_E*] -[scope_exit expr*#3087] [scope_exit elemtype] -[scope_exit elemmode#3087] [scope_exit elemmode] [visit_exp `elemmode*`] [visit_id elemmode*] no dims [visit_id elemmode*] -[visit_exp `elemmode#3087*`] -[visit_id elemmode#3087*] no dims -[visit_id elemmode#3087*] [visit_exp `elemtype*`] [visit_id elemtype*] no dims [visit_id elemtype*] -[visit_exp `expr*#3087*`] -[visit_id expr*#3087*] no dims -[visit_id expr*#3087*] [visit_exp `expr_E**`] [visit_id expr_E**] no dims [visit_id expr_E**] -[visit_exp `reftype#3705*`] -[visit_id reftype#3705*] no dims -[visit_id reftype#3705*] [visit_exp (aa_I*{aa_I <- `aa_I*`} = $tagsxa(externaddr*{externaddr <- `externaddr*`}))] [visit_exp aa_I*{aa_I <- `aa_I*`}] [scope_enter aa_I] @@ -69355,7 +56861,7 @@ DecD allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) [visit_exp `type*`] [visit_id type*] not free [visit_id type*] no dims -[visit_exp (fa*{fa <- `fa*`} = (|s.`FUNCS`_store{`funcinst*#14`}| + i_F)^(i_F<|func*{func <- `func*`}|){`funcinst*#14` <- `funcinst*#14*`})] +[visit_exp (fa*{fa <- `fa*`} = (|s.`FUNCS`_store| + i_F)^(i_F<|func*{func <- `func*`}|){})] [visit_exp fa*{fa <- `fa*`}] [scope_enter fa] [visit_exp fa] @@ -69365,21 +56871,16 @@ DecD allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) [visit_exp `fa*`] [visit_id fa*] no dims [visit_id fa*] -[visit_exp (|s.`FUNCS`_store{`funcinst*#14`}| + i_F)^(i_F<|func*{func <- `func*`}|){`funcinst*#14` <- `funcinst*#14*`}] +[visit_exp (|s.`FUNCS`_store| + i_F)^(i_F<|func*{func <- `func*`}|){}] [scope_enter i_F] -[scope_enter funcinst*#14] -[visit_exp (|s.`FUNCS`_store{`funcinst*#14`}| + i_F)] -[visit_exp |s.`FUNCS`_store{`funcinst*#14`}|] -[visit_exp s.`FUNCS`_store{`funcinst*#14`}] +[visit_exp (|s.`FUNCS`_store| + i_F)] +[visit_exp |s.`FUNCS`_store|] +[visit_exp s.`FUNCS`_store] [visit_exp s] [visit_id s] not free -[visit_exp `funcinst*#14`] -[visit_id funcinst*#14] not free [visit_exp i_F] [visit_id i_F] [visit_id i_F] not free -[visit_id funcinst*#14] not free -[scope_exit funcinst*#14] [scope_exit i_F] [visit_exp |func*{func <- `func*`}|] [visit_exp func*{func <- `func*`}] @@ -69391,9 +56892,6 @@ DecD allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) [visit_exp `func*`] [visit_id func*] not free [visit_id func*] no dims -[visit_exp `funcinst*#14*`] -[visit_id funcinst*#14*] no dims -[visit_id funcinst*#14*] [visit_exp ((s_1, aa*{aa <- `aa*`}) = $alloctags(s, $subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tagtype <- `tagtype*`}))] [visit_exp (s_1, aa*{aa <- `aa*`})] [visit_exp s_1] @@ -69655,7 +57153,7 @@ DecD allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) [visit_exp `ref_E**`] [visit_id ref_E**] not free [visit_id ref_E**] no dims -[visit_exp ((s_7, fa*{fa <- `fa*`}) = $allocfuncs(s_6, dt*{dt <- `dt*`}[x!`%`_idx{i#47295}.0]*{i#47295 <- `i#47295*`, x <- `x*`}, `FUNC`_funccode{typeidx#1810, `local*#1353`, expr#4497}(x, local*{local <- `local*`}, expr_F)*{expr#4497 <- `expr#4497*`, expr_F <- `expr_F*`, `local*` <- `local**`, `local*#1353` <- `local*#1353*`, typeidx#1810 <- `typeidx#1810*`, x <- `x*`}, moduleinst^|func*{func <- `func*`}|{}))] +[visit_exp ((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*`}|{}))] [visit_exp (s_7, fa*{fa <- `fa*`})] [visit_exp s_7] [visit_id s_7] not free @@ -69668,13 +57166,12 @@ DecD allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) [visit_exp `fa*`] [visit_id fa*] not free [visit_id fa*] no dims -[visit_exp $allocfuncs(s_6, dt*{dt <- `dt*`}[x!`%`_idx{i#47295}.0]*{i#47295 <- `i#47295*`, x <- `x*`}, `FUNC`_funccode{typeidx#1810, `local*#1353`, expr#4497}(x, local*{local <- `local*`}, expr_F)*{expr#4497 <- `expr#4497*`, expr_F <- `expr_F*`, `local*` <- `local**`, `local*#1353` <- `local*#1353*`, typeidx#1810 <- `typeidx#1810*`, x <- `x*`}, moduleinst^|func*{func <- `func*`}|{})] +[visit_exp $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*`}|{})] [visit_exp s_6] [visit_id s_6] not free -[visit_exp dt*{dt <- `dt*`}[x!`%`_idx{i#47295}.0]*{i#47295 <- `i#47295*`, x <- `x*`}] -[scope_enter i#47295] +[visit_exp dt*{dt <- `dt*`}[x!`%`_idx.0]*{x <- `x*`}] [scope_enter x] -[visit_exp dt*{dt <- `dt*`}[x!`%`_idx{i#47295}.0]] +[visit_exp dt*{dt <- `dt*`}[x!`%`_idx.0]] [visit_exp dt*{dt <- `dt*`}] [scope_enter dt] [visit_exp dt] @@ -69684,36 +57181,20 @@ DecD allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) [visit_exp `dt*`] [visit_id dt*] not free [visit_id dt*] no dims -[visit_exp x!`%`_idx{i#47295}.0] -[visit_exp x!`%`_idx{i#47295}] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] [visit_exp x] [visit_id x] not free -[visit_exp i#47295] -[visit_id i#47295] not free -[visit_id i#47295] not free [visit_id x] not free [scope_exit x] -[scope_exit i#47295] -[visit_exp `i#47295*`] -[visit_id i#47295*] no dims -[visit_id i#47295*] [visit_exp `x*`] [visit_id x*] not free [visit_id x*] no dims -[visit_exp `FUNC`_funccode{typeidx#1810, `local*#1353`, expr#4497}(x, local*{local <- `local*`}, expr_F)*{expr#4497 <- `expr#4497*`, expr_F <- `expr_F*`, `local*` <- `local**`, `local*#1353` <- `local*#1353*`, typeidx#1810 <- `typeidx#1810*`, x <- `x*`}] -[scope_enter expr#4497] +[visit_exp `FUNC`_funccode(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}] [scope_enter expr_F] [scope_enter local*] -[scope_enter local*#1353] -[scope_enter typeidx#1810] [scope_enter x] -[visit_exp `FUNC`_funccode{typeidx#1810, `local*#1353`, expr#4497}(x, local*{local <- `local*`}, expr_F)] -[visit_exp typeidx#1810] -[visit_id typeidx#1810] not free -[visit_exp `local*#1353`] -[visit_id local*#1353] not free -[visit_exp expr#4497] -[visit_id expr#4497] not free +[visit_exp `FUNC`_funccode(x, local*{local <- `local*`}, expr_F)] [visit_exp (x, local*{local <- `local*`}, expr_F)] [visit_exp x] [visit_id x] not free @@ -69728,34 +57209,19 @@ DecD allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) [visit_id local*] no dims [visit_exp expr_F] [visit_id expr_F] not free -[visit_id expr#4497] not free [visit_id expr_F] not free [visit_id local*] not free [visit_id local*] no dims -[visit_id local*#1353] not free -[visit_id typeidx#1810] not free [visit_id x] not free [scope_exit x] -[scope_exit typeidx#1810] -[scope_exit local*#1353] [scope_exit local*] [scope_exit expr_F] -[scope_exit expr#4497] -[visit_exp `expr#4497*`] -[visit_id expr#4497*] no dims -[visit_id expr#4497*] [visit_exp `expr_F*`] [visit_id expr_F*] not free [visit_id expr_F*] no dims [visit_exp `local**`] [visit_id local**] not free [visit_id local**] no dims -[visit_exp `local*#1353*`] -[visit_id local*#1353*] no dims -[visit_id local*#1353*] -[visit_exp `typeidx#1810*`] -[visit_id typeidx#1810*] no dims -[visit_id typeidx#1810*] [visit_exp `x*`] [visit_id x*] not free [visit_id x*] no dims @@ -69772,7 +57238,7 @@ DecD allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) [visit_exp `func*`] [visit_id func*] not free [visit_id func*] no dims -[visit_exp (xi*{xi <- `xi*`} = $allocexports({`TYPES`{`deftype*#94`} [], `TAGS`{`tagaddr*#5`} aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, `GLOBALS`{`globaladdr*#4`} ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, `MEMS`{`memaddr*#5`} ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, `TABLES`{`tableaddr*#5`} ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, `FUNCS`{`funcaddr*#6`} fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, `DATAS`{`dataaddr*#3`} [], `ELEMS`{`elemaddr*#3`} [], `EXPORTS`{`exportinst*#1`} []}, export*{export <- `export*`}))] +[visit_exp (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*`}))] [visit_exp xi*{xi <- `xi*`}] [scope_enter xi] [visit_exp xi] @@ -69782,13 +57248,9 @@ DecD allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) [visit_exp `xi*`] [visit_id xi*] no dims [visit_id xi*] -[visit_exp $allocexports({`TYPES`{`deftype*#94`} [], `TAGS`{`tagaddr*#5`} aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, `GLOBALS`{`globaladdr*#4`} ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, `MEMS`{`memaddr*#5`} ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, `TABLES`{`tableaddr*#5`} ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, `FUNCS`{`funcaddr*#6`} fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, `DATAS`{`dataaddr*#3`} [], `ELEMS`{`elemaddr*#3`} [], `EXPORTS`{`exportinst*#1`} []}, export*{export <- `export*`})] -[visit_exp {`TYPES`{`deftype*#94`} [], `TAGS`{`tagaddr*#5`} aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, `GLOBALS`{`globaladdr*#4`} ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, `MEMS`{`memaddr*#5`} ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, `TABLES`{`tableaddr*#5`} ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, `FUNCS`{`funcaddr*#6`} fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, `DATAS`{`dataaddr*#3`} [], `ELEMS`{`elemaddr*#3`} [], `EXPORTS`{`exportinst*#1`} []}] -[visit_exp `deftype*#94`] -[visit_id deftype*#94] +[visit_exp $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*`})] +[visit_exp {`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` []}] [visit_exp []] -[visit_exp `tagaddr*#5`] -[visit_id tagaddr*#5] [visit_exp aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}] [visit_exp aa_I*{aa_I <- `aa_I*`}] [scope_enter aa_I] @@ -69808,8 +57270,6 @@ DecD allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) [visit_exp `aa*`] [visit_id aa*] not free [visit_id aa*] no dims -[visit_exp `globaladdr*#4`] -[visit_id globaladdr*#4] [visit_exp ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}] [visit_exp ga_I*{ga_I <- `ga_I*`}] [scope_enter ga_I] @@ -69829,8 +57289,6 @@ DecD allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) [visit_exp `ga*`] [visit_id ga*] not free [visit_id ga*] no dims -[visit_exp `memaddr*#5`] -[visit_id memaddr*#5] [visit_exp ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}] [visit_exp ma_I*{ma_I <- `ma_I*`}] [scope_enter ma_I] @@ -69850,8 +57308,6 @@ DecD allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) [visit_exp `ma*`] [visit_id ma*] not free [visit_id ma*] no dims -[visit_exp `tableaddr*#5`] -[visit_id tableaddr*#5] [visit_exp ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}] [visit_exp ta_I*{ta_I <- `ta_I*`}] [scope_enter ta_I] @@ -69871,8 +57327,6 @@ DecD allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) [visit_exp `ta*`] [visit_id ta*] not free [visit_id ta*] no dims -[visit_exp `funcaddr*#6`] -[visit_id funcaddr*#6] [visit_exp fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}] [visit_exp fa_I*{fa_I <- `fa_I*`}] [scope_enter fa_I] @@ -69892,14 +57346,8 @@ DecD allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) [visit_exp `fa*`] [visit_id fa*] not free [visit_id fa*] no dims -[visit_exp `dataaddr*#3`] -[visit_id dataaddr*#3] [visit_exp []] -[visit_exp `elemaddr*#3`] -[visit_id elemaddr*#3] [visit_exp []] -[visit_exp `exportinst*#1`] -[visit_id exportinst*#1] [visit_exp []] [visit_exp export*{export <- `export*`}] [scope_enter export] @@ -69910,12 +57358,10 @@ DecD allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) [visit_exp `export*`] [visit_id export*] not free [visit_id export*] no dims -[visit_exp (moduleinst = {`TYPES`{`deftype*#95`} dt*{dt <- `dt*`}, `TAGS`{`tagaddr*#6`} aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, `GLOBALS`{`globaladdr*#5`} ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, `MEMS`{`memaddr*#6`} ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, `TABLES`{`tableaddr*#6`} ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, `FUNCS`{`funcaddr*#7`} fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, `DATAS`{`dataaddr*#4`} da*{da <- `da*`}, `ELEMS`{`elemaddr*#4`} ea*{ea <- `ea*`}, `EXPORTS`{`exportinst*#2`} xi*{xi <- `xi*`}})] +[visit_exp (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*`}})] [visit_exp moduleinst] [visit_id moduleinst] not free -[visit_exp {`TYPES`{`deftype*#95`} dt*{dt <- `dt*`}, `TAGS`{`tagaddr*#6`} aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, `GLOBALS`{`globaladdr*#5`} ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, `MEMS`{`memaddr*#6`} ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, `TABLES`{`tableaddr*#6`} ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, `FUNCS`{`funcaddr*#7`} fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, `DATAS`{`dataaddr*#4`} da*{da <- `da*`}, `ELEMS`{`elemaddr*#4`} ea*{ea <- `ea*`}, `EXPORTS`{`exportinst*#2`} xi*{xi <- `xi*`}}] -[visit_exp `deftype*#95`] -[visit_id deftype*#95] +[visit_exp {`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*`}}] [visit_exp dt*{dt <- `dt*`}] [scope_enter dt] [visit_exp dt] @@ -69925,8 +57371,6 @@ DecD allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) [visit_exp `dt*`] [visit_id dt*] not free [visit_id dt*] no dims -[visit_exp `tagaddr*#6`] -[visit_id tagaddr*#6] [visit_exp aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}] [visit_exp aa_I*{aa_I <- `aa_I*`}] [scope_enter aa_I] @@ -69946,8 +57390,6 @@ DecD allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) [visit_exp `aa*`] [visit_id aa*] not free [visit_id aa*] no dims -[visit_exp `globaladdr*#5`] -[visit_id globaladdr*#5] [visit_exp ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}] [visit_exp ga_I*{ga_I <- `ga_I*`}] [scope_enter ga_I] @@ -69967,8 +57409,6 @@ DecD allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) [visit_exp `ga*`] [visit_id ga*] not free [visit_id ga*] no dims -[visit_exp `memaddr*#6`] -[visit_id memaddr*#6] [visit_exp ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}] [visit_exp ma_I*{ma_I <- `ma_I*`}] [scope_enter ma_I] @@ -69988,8 +57428,6 @@ DecD allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) [visit_exp `ma*`] [visit_id ma*] not free [visit_id ma*] no dims -[visit_exp `tableaddr*#6`] -[visit_id tableaddr*#6] [visit_exp ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}] [visit_exp ta_I*{ta_I <- `ta_I*`}] [scope_enter ta_I] @@ -70009,8 +57447,6 @@ DecD allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) [visit_exp `ta*`] [visit_id ta*] not free [visit_id ta*] no dims -[visit_exp `funcaddr*#7`] -[visit_id funcaddr*#7] [visit_exp fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}] [visit_exp fa_I*{fa_I <- `fa_I*`}] [scope_enter fa_I] @@ -70030,8 +57466,6 @@ DecD allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) [visit_exp `fa*`] [visit_id fa*] not free [visit_id fa*] no dims -[visit_exp `dataaddr*#4`] -[visit_id dataaddr*#4] [visit_exp da*{da <- `da*`}] [scope_enter da] [visit_exp da] @@ -70041,8 +57475,6 @@ DecD allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) [visit_exp `da*`] [visit_id da*] not free [visit_id da*] no dims -[visit_exp `elemaddr*#4`] -[visit_id elemaddr*#4] [visit_exp ea*{ea <- `ea*`}] [scope_enter ea] [visit_exp ea] @@ -70052,8 +57484,6 @@ DecD allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) [visit_exp `ea*`] [visit_id ea*] not free [visit_id ea*] no dims -[visit_exp `exportinst*#2`] -[visit_id exportinst*#2] [visit_exp xi*{xi <- `xi*`}] [scope_enter xi] [visit_exp xi] @@ -70065,43 +57495,39 @@ DecD allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) [visit_id xi*] no dims => ;; ../../../../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*#101` : type*, `import*#101` : import*, `tag*#101` : tag*, `global*#125` : global*, `mem*#125` : mem*, `table*#125` : table*, `func*#101` : func*, `data*#101` : data*, `elem*#125` : elem*, `start?#101` : start?, `export*#101` : export*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `tagtype#260*` : tagtype*, `expr#4459*` : expr*, `expr_G*` : expr*, `globaltype*` : globaltype*, `globaltype#2179*` : globaltype*, `memtype*` : memtype*, `memtype#634*` : memtype*, `expr#4477*` : expr*, `expr_T*` : expr*, `tabletype*` : tabletype*, `tabletype#998*` : tabletype*, `expr#4495*` : expr*, `expr_F*` : expr*, `local**` : local**, `local*#1351*` : local**, `typeidx#1808*` : typeidx*, `x*` : idx*, `byte**` : byte**, `byte*#2021*` : byte**, `datamode*` : datamode*, `datamode#1985*` : datamode*, `elemmode*` : elemmode*, `elemmode#3087*` : elemmode*, `elemtype*` : elemtype*, `expr*#3087*` : expr**, `expr_E**` : expr**, `reftype#3705*` : reftype*, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, i_F : nat, `funcinst*#14*` : funcinst**, 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*, `i#47295*` : nat*, `expr#4497*` : expr*, `local*#1353*` : local**, `typeidx#1810*` : typeidx*, `xi*` : exportinst*, `deftype*#94` : deftype*, `tagaddr*#5` : tagaddr*, `globaladdr*#4` : globaladdr*, `memaddr*#5` : memaddr*, `tableaddr*#5` : tableaddr*, `funcaddr*#6` : funcaddr*, `dataaddr*#3` : dataaddr*, `elemaddr*#3` : elemaddr*, `exportinst*#1` : exportinst*, `deftype*#95` : deftype*, `tagaddr*#6` : tagaddr*, `globaladdr*#5` : globaladdr*, `memaddr*#6` : memaddr*, `tableaddr*#6` : tableaddr*, `funcaddr*#7` : funcaddr*, `dataaddr*#4` : dataaddr*, `elemaddr*#4` : elemaddr*, `exportinst*#2` : 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*#101`, `import*#101`, `tag*#101`, `global*#125`, `mem*#125`, `table*#125`, `func*#101`, `data*#101`, `elem*#125`, `start?#101`, `export*#101`}(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#260}(tagtype)*{tagtype <- `tagtype*`, tagtype#260 <- `tagtype#260*`}) - -- if (global*{global <- `global*`} = `GLOBAL`_global{globaltype#2179, expr#4459}(globaltype, expr_G)*{expr#4459 <- `expr#4459*`, expr_G <- `expr_G*`, globaltype <- `globaltype*`, globaltype#2179 <- `globaltype#2179*`}) - -- if (mem*{mem <- `mem*`} = `MEMORY`_mem{memtype#634}(memtype)*{memtype <- `memtype*`, memtype#634 <- `memtype#634*`}) - -- if (table*{table <- `table*`} = `TABLE`_table{tabletype#998, expr#4477}(tabletype, expr_T)*{expr#4477 <- `expr#4477*`, expr_T <- `expr_T*`, tabletype <- `tabletype*`, tabletype#998 <- `tabletype#998*`}) - -- if (func*{func <- `func*`} = `FUNC`_func{typeidx#1808, `local*#1351`, expr#4495}(x, local*{local <- `local*`}, expr_F)*{expr#4495 <- `expr#4495*`, expr_F <- `expr_F*`, `local*` <- `local**`, `local*#1351` <- `local*#1351*`, typeidx#1808 <- `typeidx#1808*`, x <- `x*`}) - -- if (data*{data <- `data*`} = `DATA`_data{`byte*#2021`, datamode#1985}(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, `byte*#2021` <- `byte*#2021*`, datamode <- `datamode*`, datamode#1985 <- `datamode#1985*`}) - -- if (elem*{elem <- `elem*`} = `ELEM`_elem{reftype#3705, `expr*#3087`, elemmode#3087}(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemmode#3087 <- `elemmode#3087*`, elemtype <- `elemtype*`, `expr*#3087` <- `expr*#3087*`, `expr_E*` <- `expr_E**`, reftype#3705 <- `reftype#3705*`}) + 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*, `expr_G*` : expr*, `globaltype*` : globaltype*, `memtype*` : memtype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `expr_F*` : expr*, `local**` : local**, `x*` : idx*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `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*`})) - -- if (fa*{fa <- `fa*`} = (|s.`FUNCS`_store{`funcinst*#14`}| + i_F)^(i_F<|func*{func <- `func*`}|){`funcinst*#14` <- `funcinst*#14*`}) + -- if (fa*{fa <- `fa*`} = (|s.`FUNCS`_store| + i_F)^(i_F<|func*{func <- `func*`}|){}) -- 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*`}[x!`%`_idx{i#47295}.0]*{i#47295 <- `i#47295*`, x <- `x*`}, `FUNC`_funccode{typeidx#1810, `local*#1353`, expr#4497}(x, local*{local <- `local*`}, expr_F)*{expr#4497 <- `expr#4497*`, expr_F <- `expr_F*`, `local*` <- `local**`, `local*#1353` <- `local*#1353*`, typeidx#1810 <- `typeidx#1810*`, x <- `x*`}, moduleinst^|func*{func <- `func*`}|{})) - -- if (xi*{xi <- `xi*`} = $allocexports({`TYPES`{`deftype*#94`} [], `TAGS`{`tagaddr*#5`} aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, `GLOBALS`{`globaladdr*#4`} ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, `MEMS`{`memaddr*#5`} ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, `TABLES`{`tableaddr*#5`} ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, `FUNCS`{`funcaddr*#6`} fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, `DATAS`{`dataaddr*#3`} [], `ELEMS`{`elemaddr*#3`} [], `EXPORTS`{`exportinst*#1`} []}, export*{export <- `export*`})) - -- if (moduleinst = {`TYPES`{`deftype*#95`} dt*{dt <- `dt*`}, `TAGS`{`tagaddr*#6`} aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, `GLOBALS`{`globaladdr*#5`} ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, `MEMS`{`memaddr*#6`} ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, `TABLES`{`tableaddr*#6`} ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, `FUNCS`{`funcaddr*#7`} fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, `DATAS`{`dataaddr*#4`} da*{da <- `da*`}, `ELEMS`{`elemaddr*#4`} ea*{ea <- `ea*`}, `EXPORTS`{`exportinst*#2`} xi*{xi <- `xi*`}}) + -- 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*`}}) [check_dims] data dataidx DecD rundata_(dataidx : dataidx, data : data) : instr* [visit_id dataidx] not free [visit_id data] not free -[check_dims] b byte*#2033 datamode#1997 n x +[check_dims] b n x [visit_exp x] [visit_id x] -[visit_exp `DATA`_data{`byte*#2033`, datamode#1997}(b^n{b <- `b*`}, `PASSIVE`_datamode)] -[visit_exp `byte*#2033`] -[visit_id byte*#2033] -[visit_exp datamode#1997] -[visit_id datamode#1997] +[visit_exp `DATA`_data(b^n{b <- `b*`}, `PASSIVE`_datamode)] [visit_exp (b^n{b <- `b*`}, `PASSIVE`_datamode)] [visit_exp b^n{b <- `b*`}] [scope_enter b] @@ -70119,16 +57545,12 @@ DecD rundata_(dataidx : dataidx, data : data) : instr* [visit_exp []] => ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $rundata_{x : idx, `byte*#2033` : byte*, datamode#1997 : datamode, n : n, `b*` : byte*}(x, `DATA`_data{`byte*#2033`, datamode#1997}(b^n{b <- `b*`}, `PASSIVE`_datamode)) = [] -[check_dims] b byte*#2045 dataidx#43 dataidx#45 datamode#2009 expr#4499 i#47393 i#47417 instr memidx#165 memidx#167 n numtype#623 numtype#625 x y + def $rundata_{x : idx, n : n, `b*` : byte*}(x, `DATA`_data(b^n{b <- `b*`}, `PASSIVE`_datamode)) = [] +[check_dims] b instr n x y [visit_exp x] [visit_id x] -[visit_exp `DATA`_data{`byte*#2045`, datamode#2009}(b^n{b <- `b*`}, `ACTIVE`_datamode{memidx#165, expr#4499}(y, instr*{instr <- `instr*`}))] -[visit_exp `byte*#2045`] -[visit_id byte*#2045] -[visit_exp datamode#2009] -[visit_id datamode#2009] -[visit_exp (b^n{b <- `b*`}, `ACTIVE`_datamode{memidx#165, expr#4499}(y, instr*{instr <- `instr*`}))] +[visit_exp `DATA`_data(b^n{b <- `b*`}, `ACTIVE`_datamode(y, instr*{instr <- `instr*`}))] +[visit_exp (b^n{b <- `b*`}, `ACTIVE`_datamode(y, instr*{instr <- `instr*`}))] [visit_exp b^n{b <- `b*`}] [scope_enter b] [visit_exp b] @@ -70140,11 +57562,7 @@ DecD rundata_(dataidx : dataidx, data : data) : instr* [visit_exp `b*`] [visit_id b*] no dims [visit_id b*] -[visit_exp `ACTIVE`_datamode{memidx#165, expr#4499}(y, instr*{instr <- `instr*`})] -[visit_exp memidx#165] -[visit_id memidx#165] -[visit_exp expr#4499] -[visit_id expr#4499] +[visit_exp `ACTIVE`_datamode(y, instr*{instr <- `instr*`})] [visit_exp (y, instr*{instr <- `instr*`})] [visit_exp y] [visit_id y] @@ -70157,7 +57575,7 @@ DecD rundata_(dataidx : dataidx, data : data) : instr* [visit_exp `instr*`] [visit_id instr*] no dims [visit_id instr*] -[visit_exp instr*{instr <- `instr*`} ++ [`CONST`_instr{numtype#623}(`I32`_numtype, `%`_num_{i#47393}(0)) `CONST`_instr{numtype#625}(`I32`_numtype, `%`_num_{i#47417}(n)) `MEMORY.INIT`_instr{memidx#167, dataidx#43}(y, x) `DATA.DROP`_instr{dataidx#45}(x)]] +[visit_exp instr*{instr <- `instr*`} ++ [`CONST`_instr(`I32`_numtype, `%`_num_(0)) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `MEMORY.INIT`_instr(y, x) `DATA.DROP`_instr(x)]] [visit_exp instr*{instr <- `instr*`}] [scope_enter instr] [visit_exp instr] @@ -70167,63 +57585,43 @@ DecD rundata_(dataidx : dataidx, data : data) : instr* [visit_exp `instr*`] [visit_id instr*] not free [visit_id instr*] no dims -[visit_exp [`CONST`_instr{numtype#623}(`I32`_numtype, `%`_num_{i#47393}(0)) `CONST`_instr{numtype#625}(`I32`_numtype, `%`_num_{i#47417}(n)) `MEMORY.INIT`_instr{memidx#167, dataidx#43}(y, x) `DATA.DROP`_instr{dataidx#45}(x)]] -[visit_exp `CONST`_instr{numtype#623}(`I32`_numtype, `%`_num_{i#47393}(0))] -[visit_exp numtype#623] -[visit_id numtype#623] -[visit_exp (`I32`_numtype, `%`_num_{i#47393}(0))] +[visit_exp [`CONST`_instr(`I32`_numtype, `%`_num_(0)) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `MEMORY.INIT`_instr(y, x) `DATA.DROP`_instr(x)]] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(0))] +[visit_exp (`I32`_numtype, `%`_num_(0))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#47393}(0)] -[visit_exp i#47393] -[visit_id i#47393] +[visit_exp `%`_num_(0)] [visit_exp (0)] [visit_exp 0] -[visit_exp `CONST`_instr{numtype#625}(`I32`_numtype, `%`_num_{i#47417}(n))] -[visit_exp numtype#625] -[visit_id numtype#625] -[visit_exp (`I32`_numtype, `%`_num_{i#47417}(n))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] +[visit_exp (`I32`_numtype, `%`_num_(n))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#47417}(n)] -[visit_exp i#47417] -[visit_id i#47417] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] not free -[visit_exp `MEMORY.INIT`_instr{memidx#167, dataidx#43}(y, x)] -[visit_exp memidx#167] -[visit_id memidx#167] -[visit_exp dataidx#43] -[visit_id dataidx#43] +[visit_exp `MEMORY.INIT`_instr(y, x)] [visit_exp (y, x)] [visit_exp y] [visit_id y] not free [visit_exp x] [visit_id x] not free -[visit_exp `DATA.DROP`_instr{dataidx#45}(x)] -[visit_exp dataidx#45] -[visit_id dataidx#45] +[visit_exp `DATA.DROP`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] not free => ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $rundata_{x : idx, `byte*#2045` : byte*, datamode#2009 : datamode, n : n, `b*` : byte*, memidx#165 : memidx, expr#4499 : expr, y : idx, `instr*` : instr*, numtype#623 : numtype, i#47393 : nat, numtype#625 : numtype, i#47417 : nat, memidx#167 : memidx, dataidx#43 : dataidx, dataidx#45 : dataidx}(x, `DATA`_data{`byte*#2045`, datamode#2009}(b^n{b <- `b*`}, `ACTIVE`_datamode{memidx#165, expr#4499}(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [`CONST`_instr{numtype#623}(`I32`_numtype, `%`_num_{i#47393}(0)) `CONST`_instr{numtype#625}(`I32`_numtype, `%`_num_{i#47417}(n)) `MEMORY.INIT`_instr{memidx#167, dataidx#43}(y, x) `DATA.DROP`_instr{dataidx#45}(x)] + def $rundata_{x : idx, n : n, `b*` : byte*, 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)] [check_dims] elem elemidx DecD runelem_(elemidx : elemidx, elem : elem) : instr* [visit_id elemidx] not free [visit_id elem] not free -[check_dims] e elemmode#3099 expr*#3099 n reftype#3735 rt x +[check_dims] e n rt x [visit_exp x] [visit_id x] -[visit_exp `ELEM`_elem{reftype#3735, `expr*#3099`, elemmode#3099}(rt, e^n{e <- `e*`}, `PASSIVE`_elemmode)] -[visit_exp reftype#3735] -[visit_id reftype#3735] -[visit_exp `expr*#3099`] -[visit_id expr*#3099] -[visit_exp elemmode#3099] -[visit_id elemmode#3099] +[visit_exp `ELEM`_elem(rt, e^n{e <- `e*`}, `PASSIVE`_elemmode)] [visit_exp (rt, e^n{e <- `e*`}, `PASSIVE`_elemmode)] [visit_exp rt] [visit_id rt] @@ -70243,17 +57641,11 @@ DecD runelem_(elemidx : elemidx, elem : elem) : instr* [visit_exp []] => ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : idx, reftype#3735 : reftype, `expr*#3099` : expr*, elemmode#3099 : elemmode, rt : reftype, n : n, `e*` : expr*}(x, `ELEM`_elem{reftype#3735, `expr*#3099`, elemmode#3099}(rt, e^n{e <- `e*`}, `PASSIVE`_elemmode)) = [] -[check_dims] e elemidx#43 elemmode#3111 expr*#3111 n reftype#3747 rt x + def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*}(x, `ELEM`_elem(rt, e^n{e <- `e*`}, `PASSIVE`_elemmode)) = [] +[check_dims] e n rt x [visit_exp x] [visit_id x] -[visit_exp `ELEM`_elem{reftype#3747, `expr*#3111`, elemmode#3111}(rt, e^n{e <- `e*`}, `DECLARE`_elemmode)] -[visit_exp reftype#3747] -[visit_id reftype#3747] -[visit_exp `expr*#3111`] -[visit_id expr*#3111] -[visit_exp elemmode#3111] -[visit_id elemmode#3111] +[visit_exp `ELEM`_elem(rt, e^n{e <- `e*`}, `DECLARE`_elemmode)] [visit_exp (rt, e^n{e <- `e*`}, `DECLARE`_elemmode)] [visit_exp rt] [visit_id rt] @@ -70270,27 +57662,19 @@ DecD runelem_(elemidx : elemidx, elem : elem) : instr* [visit_id e*] [visit_exp `DECLARE`_elemmode] [visit_exp ()] -[visit_exp [`ELEM.DROP`_instr{elemidx#43}(x)]] -[visit_exp `ELEM.DROP`_instr{elemidx#43}(x)] -[visit_exp elemidx#43] -[visit_id elemidx#43] +[visit_exp [`ELEM.DROP`_instr(x)]] +[visit_exp `ELEM.DROP`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] not free => ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : idx, reftype#3747 : reftype, `expr*#3111` : expr*, elemmode#3111 : elemmode, rt : reftype, n : n, `e*` : expr*, elemidx#43 : elemidx}(x, `ELEM`_elem{reftype#3747, `expr*#3111`, elemmode#3111}(rt, e^n{e <- `e*`}, `DECLARE`_elemmode)) = [`ELEM.DROP`_instr{elemidx#43}(x)] -[check_dims] e elemidx#45 elemidx#47 elemmode#3123 expr#4501 expr*#3123 i#47545 i#47569 instr n numtype#627 numtype#629 reftype#3759 rt tableidx#119 tableidx#121 x y + def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*}(x, `ELEM`_elem(rt, e^n{e <- `e*`}, `DECLARE`_elemmode)) = [`ELEM.DROP`_instr(x)] +[check_dims] e instr n rt x y [visit_exp x] [visit_id x] -[visit_exp `ELEM`_elem{reftype#3759, `expr*#3123`, elemmode#3123}(rt, e^n{e <- `e*`}, `ACTIVE`_elemmode{tableidx#119, expr#4501}(y, instr*{instr <- `instr*`}))] -[visit_exp reftype#3759] -[visit_id reftype#3759] -[visit_exp `expr*#3123`] -[visit_id expr*#3123] -[visit_exp elemmode#3123] -[visit_id elemmode#3123] -[visit_exp (rt, e^n{e <- `e*`}, `ACTIVE`_elemmode{tableidx#119, expr#4501}(y, instr*{instr <- `instr*`}))] +[visit_exp `ELEM`_elem(rt, e^n{e <- `e*`}, `ACTIVE`_elemmode(y, instr*{instr <- `instr*`}))] +[visit_exp (rt, e^n{e <- `e*`}, `ACTIVE`_elemmode(y, instr*{instr <- `instr*`}))] [visit_exp rt] [visit_id rt] [visit_exp e^n{e <- `e*`}] @@ -70304,11 +57688,7 @@ DecD runelem_(elemidx : elemidx, elem : elem) : instr* [visit_exp `e*`] [visit_id e*] no dims [visit_id e*] -[visit_exp `ACTIVE`_elemmode{tableidx#119, expr#4501}(y, instr*{instr <- `instr*`})] -[visit_exp tableidx#119] -[visit_id tableidx#119] -[visit_exp expr#4501] -[visit_id expr#4501] +[visit_exp `ACTIVE`_elemmode(y, instr*{instr <- `instr*`})] [visit_exp (y, instr*{instr <- `instr*`})] [visit_exp y] [visit_id y] @@ -70321,7 +57701,7 @@ DecD runelem_(elemidx : elemidx, elem : elem) : instr* [visit_exp `instr*`] [visit_id instr*] no dims [visit_id instr*] -[visit_exp instr*{instr <- `instr*`} ++ [`CONST`_instr{numtype#627}(`I32`_numtype, `%`_num_{i#47545}(0)) `CONST`_instr{numtype#629}(`I32`_numtype, `%`_num_{i#47569}(n)) `TABLE.INIT`_instr{tableidx#121, elemidx#45}(y, x) `ELEM.DROP`_instr{elemidx#47}(x)]] +[visit_exp instr*{instr <- `instr*`} ++ [`CONST`_instr(`I32`_numtype, `%`_num_(0)) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `TABLE.INIT`_instr(y, x) `ELEM.DROP`_instr(x)]] [visit_exp instr*{instr <- `instr*`}] [scope_enter instr] [visit_exp instr] @@ -70331,56 +57711,46 @@ DecD runelem_(elemidx : elemidx, elem : elem) : instr* [visit_exp `instr*`] [visit_id instr*] not free [visit_id instr*] no dims -[visit_exp [`CONST`_instr{numtype#627}(`I32`_numtype, `%`_num_{i#47545}(0)) `CONST`_instr{numtype#629}(`I32`_numtype, `%`_num_{i#47569}(n)) `TABLE.INIT`_instr{tableidx#121, elemidx#45}(y, x) `ELEM.DROP`_instr{elemidx#47}(x)]] -[visit_exp `CONST`_instr{numtype#627}(`I32`_numtype, `%`_num_{i#47545}(0))] -[visit_exp numtype#627] -[visit_id numtype#627] -[visit_exp (`I32`_numtype, `%`_num_{i#47545}(0))] +[visit_exp [`CONST`_instr(`I32`_numtype, `%`_num_(0)) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `TABLE.INIT`_instr(y, x) `ELEM.DROP`_instr(x)]] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(0))] +[visit_exp (`I32`_numtype, `%`_num_(0))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#47545}(0)] -[visit_exp i#47545] -[visit_id i#47545] +[visit_exp `%`_num_(0)] [visit_exp (0)] [visit_exp 0] -[visit_exp `CONST`_instr{numtype#629}(`I32`_numtype, `%`_num_{i#47569}(n))] -[visit_exp numtype#629] -[visit_id numtype#629] -[visit_exp (`I32`_numtype, `%`_num_{i#47569}(n))] +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] +[visit_exp (`I32`_numtype, `%`_num_(n))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#47569}(n)] -[visit_exp i#47569] -[visit_id i#47569] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] not free -[visit_exp `TABLE.INIT`_instr{tableidx#121, elemidx#45}(y, x)] -[visit_exp tableidx#121] -[visit_id tableidx#121] -[visit_exp elemidx#45] -[visit_id elemidx#45] +[visit_exp `TABLE.INIT`_instr(y, x)] [visit_exp (y, x)] [visit_exp y] [visit_id y] not free [visit_exp x] [visit_id x] not free -[visit_exp `ELEM.DROP`_instr{elemidx#47}(x)] -[visit_exp elemidx#47] -[visit_id elemidx#47] +[visit_exp `ELEM.DROP`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] not free => ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : idx, reftype#3759 : reftype, `expr*#3123` : expr*, elemmode#3123 : elemmode, rt : reftype, n : n, `e*` : expr*, tableidx#119 : tableidx, expr#4501 : expr, y : idx, `instr*` : instr*, numtype#627 : numtype, i#47545 : nat, numtype#629 : numtype, i#47569 : nat, tableidx#121 : tableidx, elemidx#45 : elemidx, elemidx#47 : elemidx}(x, `ELEM`_elem{reftype#3759, `expr*#3123`, elemmode#3123}(rt, e^n{e <- `e*`}, `ACTIVE`_elemmode{tableidx#119, expr#4501}(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [`CONST`_instr{numtype#627}(`I32`_numtype, `%`_num_{i#47545}(0)) `CONST`_instr{numtype#629}(`I32`_numtype, `%`_num_{i#47569}(n)) `TABLE.INIT`_instr{tableidx#121, elemidx#45}(y, x) `ELEM.DROP`_instr{elemidx#47}(x)] + def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*, 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)] [check_dims] _ state DecD evalglobals(state : state, globaltype*, expr*) : (state, val*) [visit_id state] not free [visit_id _] not free [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_exit _] +[scope_exit _] [check_dims] z [visit_exp z] [visit_id z] @@ -70393,7 +57763,7 @@ DecD evalglobals(state : state, globaltype*, expr*) : (state, val*) => ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $evalglobals{z : state}(z, [], []) = (z, []) -[check_dims] a expr expr' f frame#2561 frame#2573 globaladdr*#6 gt gt' moduleinst#26 s s' store#2543 store#2555 val val' z z' +[check_dims] a expr expr' f gt gt' s s' val val' z z' [visit_exp z] [visit_id z] [visit_exp [gt] ++ gt'*{gt' <- `gt'*`}] @@ -70448,14 +57818,10 @@ DecD evalglobals(state : state, globaltype*, expr*) : (state, val*) [visit_exp [val]] [visit_exp val] [visit_id val] not free -[visit_exp (z = `%;%`_state{store#2543, frame#2561}(s, f))] +[visit_exp (z = `%;%`_state(s, f))] [visit_exp z] [visit_id z] not free -[visit_exp `%;%`_state{store#2543, frame#2561}(s, f)] -[visit_exp store#2543] -[visit_id store#2543] -[visit_exp frame#2561] -[visit_id frame#2561] +[visit_exp `%;%`_state(s, f)] [visit_exp (s, f)] [visit_exp s] [visit_id s] @@ -70474,7 +57840,7 @@ DecD evalglobals(state : state, globaltype*, expr*) : (state, val*) [visit_id gt] not free [visit_exp val] [visit_id val] not free -[visit_exp ((z', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state{store#2555, frame#2573}(s', f[`MODULE`_frame{moduleinst#26}.`GLOBALS`_moduleinst{`globaladdr*#6`} =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`}))] +[visit_exp ((z', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[`MODULE`_frame.`GLOBALS`_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`}))] [visit_exp (z', val'*{val' <- `val'*`})] [visit_exp z'] [visit_id z'] not free @@ -70487,22 +57853,14 @@ DecD evalglobals(state : state, globaltype*, expr*) : (state, val*) [visit_exp `val'*`] [visit_id val'*] not free [visit_id val'*] no dims -[visit_exp $evalglobals(`%;%`_state{store#2555, frame#2573}(s', f[`MODULE`_frame{moduleinst#26}.`GLOBALS`_moduleinst{`globaladdr*#6`} =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`})] -[visit_exp `%;%`_state{store#2555, frame#2573}(s', f[`MODULE`_frame{moduleinst#26}.`GLOBALS`_moduleinst{`globaladdr*#6`} =++ [a]])] -[visit_exp store#2555] -[visit_id store#2555] -[visit_exp frame#2573] -[visit_id frame#2573] -[visit_exp (s', f[`MODULE`_frame{moduleinst#26}.`GLOBALS`_moduleinst{`globaladdr*#6`} =++ [a]])] +[visit_exp $evalglobals(`%;%`_state(s', f[`MODULE`_frame.`GLOBALS`_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`})] +[visit_exp `%;%`_state(s', f[`MODULE`_frame.`GLOBALS`_moduleinst =++ [a]])] +[visit_exp (s', f[`MODULE`_frame.`GLOBALS`_moduleinst =++ [a]])] [visit_exp s'] [visit_id s'] not free -[visit_exp f[`MODULE`_frame{moduleinst#26}.`GLOBALS`_moduleinst{`globaladdr*#6`} =++ [a]]] +[visit_exp f[`MODULE`_frame.`GLOBALS`_moduleinst =++ [a]]] [visit_exp f] [visit_id f] not free -[visit_exp moduleinst#26] -[visit_id moduleinst#26] -[visit_exp `globaladdr*#6`] -[visit_id globaladdr*#6] [visit_exp [a]] [visit_exp a] [visit_id a] not free @@ -70526,17 +57884,17 @@ DecD evalglobals(state : state, globaltype*, expr*) : (state, val*) [visit_id expr'*] no dims => ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : expr, `expr'*` : expr*, z' : state, val : val, `val'*` : val*, store#2543 : store, frame#2561 : frame, s : store, f : frame, s' : store, a : addr, store#2555 : store, frame#2573 : frame, moduleinst#26 : moduleinst, `globaladdr*#6` : globaladdr*}(z, [gt] ++ gt'*{gt' <- `gt'*`}, [expr] ++ expr'*{expr' <- `expr'*`}) = (z', [val] ++ val'*{val' <- `val'*`}) + 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]) - -- if (z = `%;%`_state{store#2543, frame#2561}(s, f)) + -- if (z = `%;%`_state(s, f)) -- if ((s', a) = $allocglobal(s, gt, val)) - -- if ((z', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state{store#2555, frame#2573}(s', f[`MODULE`_frame{moduleinst#26}.`GLOBALS`_moduleinst{`globaladdr*#6`} =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`})) + -- if ((z', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[`MODULE`_frame.`GLOBALS`_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`})) [check_dims] _ module store DecD instantiate(store : store, module : module, externaddr*) : config [visit_id store] not free [visit_id module] not free [visit_id _] not free -[check_dims] byte byte*#2187 data data*#125 dataaddr*#5 datamode datamode#2151 deftype*#96 elem elem*#149 elemaddr*#5 elemmode elemmode#3277 export export*#125 exportinst*#3 expr#4805 expr#4823 expr*#3277 expr_E expr_G expr_T externaddr externtype*#168 frame#2597 frame#2645 func func*#125 funcaddr*#8 funcidx#3157 funcidx#3159 funcinst*#15 global global*#149 globaladdr*#7 globaltype globaltype#2271 i#47725 i#47785 i_D i_E i_F import import*#125 instr*#2334 instr_D instr_E instr_S mem mem*#149 memaddr*#7 module moduleinst moduleinst#27 moduleinst#28 moduleinst_0 ref_E ref_T reftype reftype#3919 s s' start start?#125 state#2219 store#2579 store#2627 table table*#149 tableaddr*#7 tabletype tabletype#1116 tag tag*#125 tagaddr*#7 type type*#125 val?*#5 val?*#6 val_G x xt_E xt_I z z' +[check_dims] byte data datamode elem elemmode export expr_E expr_G expr_T externaddr func global globaltype i_D i_E i_F import instr_D instr_E instr_S mem module moduleinst moduleinst_0 ref_E ref_T reftype s s' start table tabletype tag type val_G x xt_E xt_I z z' [visit_exp s] [visit_id s] [visit_exp module] @@ -70550,26 +57908,14 @@ DecD instantiate(store : store, module : module, externaddr*) : config [visit_exp `externaddr*`] [visit_id externaddr*] no dims [visit_id externaddr*] -[visit_exp `%;%`_config{state#2219, `instr*#2334`}(`%;%`_state{store#2627, frame#2645}(s', {`LOCALS`{`val?*#6`} [], `MODULE`{moduleinst#28} moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))] -[visit_exp state#2219] -[visit_id state#2219] -[visit_exp `instr*#2334`] -[visit_id instr*#2334] -[visit_exp (`%;%`_state{store#2627, frame#2645}(s', {`LOCALS`{`val?*#6`} [], `MODULE`{moduleinst#28} moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))] -[visit_exp `%;%`_state{store#2627, frame#2645}(s', {`LOCALS`{`val?*#6`} [], `MODULE`{moduleinst#28} moduleinst})] -[visit_exp store#2627] -[visit_id store#2627] -[visit_exp frame#2645] -[visit_id frame#2645] -[visit_exp (s', {`LOCALS`{`val?*#6`} [], `MODULE`{moduleinst#28} moduleinst})] +[visit_exp `%;%`_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?`}))] +[visit_exp (`%;%`_state(s', {`LOCALS` [], `MODULE` moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))] +[visit_exp `%;%`_state(s', {`LOCALS` [], `MODULE` moduleinst})] +[visit_exp (s', {`LOCALS` [], `MODULE` moduleinst})] [visit_exp s'] [visit_id s'] -[visit_exp {`LOCALS`{`val?*#6`} [], `MODULE`{moduleinst#28} moduleinst}] -[visit_exp `val?*#6`] -[visit_id val?*#6] +[visit_exp {`LOCALS` [], `MODULE` moduleinst}] [visit_exp []] -[visit_exp moduleinst#28] -[visit_id moduleinst#28] [visit_exp moduleinst] [visit_id moduleinst] [visit_exp instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})] @@ -70602,12 +57948,10 @@ DecD instantiate(store : store, module : module, externaddr*) : config [visit_exp `instr_S?`] [visit_id instr_S?] no dims [visit_id instr_S?] -[visit_exp (module, `%->%`_moduletype{`externtype*#168`}(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))] +[visit_exp (module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))] [visit_exp module] [visit_id module] not free -[visit_exp `%->%`_moduletype{`externtype*#168`}(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})] -[visit_exp `externtype*#168`] -[visit_id externtype*#168] +[visit_exp `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})] [visit_exp (xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})] [visit_exp xt_I*{xt_I <- `xt_I*`}] [scope_enter xt_I] @@ -70646,32 +57990,10 @@ DecD instantiate(store : store, module : module, externaddr*) : config [visit_exp `xt_I*`] [visit_id xt_I*] not free [visit_id xt_I*] no dims -[visit_exp (module = `MODULE`_module{`type*#125`, `import*#125`, `tag*#125`, `global*#149`, `mem*#149`, `table*#149`, `func*#125`, `data*#125`, `elem*#149`, `start?#125`, `export*#125`}(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*`}))] +[visit_exp (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*`}))] [visit_exp module] [visit_id module] not free -[visit_exp `MODULE`_module{`type*#125`, `import*#125`, `tag*#125`, `global*#149`, `mem*#149`, `table*#149`, `func*#125`, `data*#125`, `elem*#149`, `start?#125`, `export*#125`}(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*`})] -[visit_exp `type*#125`] -[visit_id type*#125] -[visit_exp `import*#125`] -[visit_id import*#125] -[visit_exp `tag*#125`] -[visit_id tag*#125] -[visit_exp `global*#149`] -[visit_id global*#149] -[visit_exp `mem*#149`] -[visit_id mem*#149] -[visit_exp `table*#149`] -[visit_id table*#149] -[visit_exp `func*#125`] -[visit_id func*#125] -[visit_exp `data*#125`] -[visit_id data*#125] -[visit_exp `elem*#149`] -[visit_id elem*#149] -[visit_exp `start?#125`] -[visit_id start?#125] -[visit_exp `export*#125`] -[visit_id export*#125] +[visit_exp `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*`})] [visit_exp (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*`})] [visit_exp type*{type <- `type*`}] [scope_enter type] @@ -70772,7 +58094,7 @@ DecD instantiate(store : store, module : module, externaddr*) : config [visit_exp `export*`] [visit_id export*] no dims [visit_id export*] -[visit_exp (global*{global <- `global*`} = `GLOBAL`_global{globaltype#2271, expr#4805}(globaltype, expr_G)*{expr#4805 <- `expr#4805*`, expr_G <- `expr_G*`, globaltype <- `globaltype*`, globaltype#2271 <- `globaltype#2271*`})] +[visit_exp (global*{global <- `global*`} = `GLOBAL`_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`})] [visit_exp global*{global <- `global*`}] [scope_enter global] [visit_exp global] @@ -70782,42 +58104,26 @@ DecD instantiate(store : store, module : module, externaddr*) : config [visit_exp `global*`] [visit_id global*] not free [visit_id global*] no dims -[visit_exp `GLOBAL`_global{globaltype#2271, expr#4805}(globaltype, expr_G)*{expr#4805 <- `expr#4805*`, expr_G <- `expr_G*`, globaltype <- `globaltype*`, globaltype#2271 <- `globaltype#2271*`}] -[scope_enter expr#4805] +[visit_exp `GLOBAL`_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`}] [scope_enter expr_G] [scope_enter globaltype] -[scope_enter globaltype#2271] -[visit_exp `GLOBAL`_global{globaltype#2271, expr#4805}(globaltype, expr_G)] -[visit_exp globaltype#2271] -[visit_id globaltype#2271] not free -[visit_exp expr#4805] -[visit_id expr#4805] not free +[visit_exp `GLOBAL`_global(globaltype, expr_G)] [visit_exp (globaltype, expr_G)] [visit_exp globaltype] [visit_id globaltype] not free [visit_exp expr_G] [visit_id expr_G] not free -[visit_id expr#4805] not free [visit_id expr_G] not free [visit_id globaltype] not free -[visit_id globaltype#2271] not free -[scope_exit globaltype#2271] [scope_exit globaltype] [scope_exit expr_G] -[scope_exit expr#4805] -[visit_exp `expr#4805*`] -[visit_id expr#4805*] no dims -[visit_id expr#4805*] [visit_exp `expr_G*`] [visit_id expr_G*] no dims [visit_id expr_G*] [visit_exp `globaltype*`] [visit_id globaltype*] no dims [visit_id globaltype*] -[visit_exp `globaltype#2271*`] -[visit_id globaltype#2271*] no dims -[visit_id globaltype#2271*] -[visit_exp (table*{table <- `table*`} = `TABLE`_table{tabletype#1116, expr#4823}(tabletype, expr_T)*{expr#4823 <- `expr#4823*`, expr_T <- `expr_T*`, tabletype <- `tabletype*`, tabletype#1116 <- `tabletype#1116*`})] +[visit_exp (table*{table <- `table*`} = `TABLE`_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`})] [visit_exp table*{table <- `table*`}] [scope_enter table] [visit_exp table] @@ -70827,42 +58133,26 @@ DecD instantiate(store : store, module : module, externaddr*) : config [visit_exp `table*`] [visit_id table*] not free [visit_id table*] no dims -[visit_exp `TABLE`_table{tabletype#1116, expr#4823}(tabletype, expr_T)*{expr#4823 <- `expr#4823*`, expr_T <- `expr_T*`, tabletype <- `tabletype*`, tabletype#1116 <- `tabletype#1116*`}] -[scope_enter expr#4823] +[visit_exp `TABLE`_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`}] [scope_enter expr_T] [scope_enter tabletype] -[scope_enter tabletype#1116] -[visit_exp `TABLE`_table{tabletype#1116, expr#4823}(tabletype, expr_T)] -[visit_exp tabletype#1116] -[visit_id tabletype#1116] not free -[visit_exp expr#4823] -[visit_id expr#4823] not free +[visit_exp `TABLE`_table(tabletype, expr_T)] [visit_exp (tabletype, expr_T)] [visit_exp tabletype] [visit_id tabletype] not free [visit_exp expr_T] [visit_id expr_T] not free -[visit_id expr#4823] not free [visit_id expr_T] not free [visit_id tabletype] not free -[visit_id tabletype#1116] not free -[scope_exit tabletype#1116] [scope_exit tabletype] [scope_exit expr_T] -[scope_exit expr#4823] -[visit_exp `expr#4823*`] -[visit_id expr#4823*] no dims -[visit_id expr#4823*] [visit_exp `expr_T*`] [visit_id expr_T*] no dims [visit_id expr_T*] [visit_exp `tabletype*`] [visit_id tabletype*] no dims [visit_id tabletype*] -[visit_exp `tabletype#1116*`] -[visit_id tabletype#1116*] no dims -[visit_id tabletype#1116*] -[visit_exp (data*{data <- `data*`} = `DATA`_data{`byte*#2187`, datamode#2151}(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, `byte*#2187` <- `byte*#2187*`, datamode <- `datamode*`, datamode#2151 <- `datamode#2151*`})] +[visit_exp (data*{data <- `data*`} = `DATA`_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`})] [visit_exp data*{data <- `data*`}] [scope_enter data] [visit_exp data] @@ -70872,16 +58162,10 @@ DecD instantiate(store : store, module : module, externaddr*) : config [visit_exp `data*`] [visit_id data*] not free [visit_id data*] no dims -[visit_exp `DATA`_data{`byte*#2187`, datamode#2151}(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, `byte*#2187` <- `byte*#2187*`, datamode <- `datamode*`, datamode#2151 <- `datamode#2151*`}] +[visit_exp `DATA`_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`}] [scope_enter byte*] -[scope_enter byte*#2187] [scope_enter datamode] -[scope_enter datamode#2151] -[visit_exp `DATA`_data{`byte*#2187`, datamode#2151}(byte*{byte <- `byte*`}, datamode)] -[visit_exp `byte*#2187`] -[visit_id byte*#2187] not free -[visit_exp datamode#2151] -[visit_id datamode#2151] not free +[visit_exp `DATA`_data(byte*{byte <- `byte*`}, datamode)] [visit_exp (byte*{byte <- `byte*`}, datamode)] [visit_exp byte*{byte <- `byte*`}] [scope_enter byte] @@ -70896,26 +58180,16 @@ DecD instantiate(store : store, module : module, externaddr*) : config [visit_id datamode] not free [visit_id byte*] not free [visit_id byte*] no dims -[visit_id byte*#2187] not free [visit_id datamode] not free -[visit_id datamode#2151] not free -[scope_exit datamode#2151] [scope_exit datamode] -[scope_exit byte*#2187] [scope_exit byte*] [visit_exp `byte**`] [visit_id byte**] no dims [visit_id byte**] -[visit_exp `byte*#2187*`] -[visit_id byte*#2187*] no dims -[visit_id byte*#2187*] [visit_exp `datamode*`] [visit_id datamode*] no dims [visit_id datamode*] -[visit_exp `datamode#2151*`] -[visit_id datamode#2151*] no dims -[visit_id datamode#2151*] -[visit_exp (elem*{elem <- `elem*`} = `ELEM`_elem{reftype#3919, `expr*#3277`, elemmode#3277}(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemmode#3277 <- `elemmode#3277*`, `expr*#3277` <- `expr*#3277*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`, reftype#3919 <- `reftype#3919*`})] +[visit_exp (elem*{elem <- `elem*`} = `ELEM`_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`})] [visit_exp elem*{elem <- `elem*`}] [scope_enter elem] [visit_exp elem] @@ -70925,20 +58199,11 @@ DecD instantiate(store : store, module : module, externaddr*) : config [visit_exp `elem*`] [visit_id elem*] not free [visit_id elem*] no dims -[visit_exp `ELEM`_elem{reftype#3919, `expr*#3277`, elemmode#3277}(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemmode#3277 <- `elemmode#3277*`, `expr*#3277` <- `expr*#3277*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`, reftype#3919 <- `reftype#3919*`}] +[visit_exp `ELEM`_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`}] [scope_enter elemmode] -[scope_enter elemmode#3277] -[scope_enter expr*#3277] [scope_enter expr_E*] [scope_enter reftype] -[scope_enter reftype#3919] -[visit_exp `ELEM`_elem{reftype#3919, `expr*#3277`, elemmode#3277}(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)] -[visit_exp reftype#3919] -[visit_id reftype#3919] not free -[visit_exp `expr*#3277`] -[visit_id expr*#3277] not free -[visit_exp elemmode#3277] -[visit_id elemmode#3277] not free +[visit_exp `ELEM`_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)] [visit_exp (reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)] [visit_exp reftype] [visit_id reftype] not free @@ -70954,37 +58219,22 @@ DecD instantiate(store : store, module : module, externaddr*) : config [visit_exp elemmode] [visit_id elemmode] not free [visit_id elemmode] not free -[visit_id elemmode#3277] not free -[visit_id expr*#3277] not free [visit_id expr_E*] not free [visit_id expr_E*] no dims [visit_id reftype] not free -[visit_id reftype#3919] not free -[scope_exit reftype#3919] [scope_exit reftype] [scope_exit expr_E*] -[scope_exit expr*#3277] -[scope_exit elemmode#3277] [scope_exit elemmode] [visit_exp `elemmode*`] [visit_id elemmode*] no dims [visit_id elemmode*] -[visit_exp `elemmode#3277*`] -[visit_id elemmode#3277*] no dims -[visit_id elemmode#3277*] -[visit_exp `expr*#3277*`] -[visit_id expr*#3277*] no dims -[visit_id expr*#3277*] [visit_exp `expr_E**`] [visit_id expr_E**] no dims [visit_id expr_E**] [visit_exp `reftype*`] [visit_id reftype*] no dims [visit_id reftype*] -[visit_exp `reftype#3919*`] -[visit_id reftype#3919*] no dims -[visit_id reftype#3919*] -[visit_exp (start?{start <- `start?`} = `START`_start{funcidx#3157}(x)?{funcidx#3157 <- `funcidx#3157?`, x <- `x?`})] +[visit_exp (start?{start <- `start?`} = `START`_start(x)?{x <- `x?`})] [visit_exp start?{start <- `start?`}] [scope_enter start] [visit_exp start] @@ -70994,31 +58244,21 @@ DecD instantiate(store : store, module : module, externaddr*) : config [visit_exp `start?`] [visit_id start?] not free [visit_id start?] no dims -[visit_exp `START`_start{funcidx#3157}(x)?{funcidx#3157 <- `funcidx#3157?`, x <- `x?`}] -[scope_enter funcidx#3157] +[visit_exp `START`_start(x)?{x <- `x?`}] [scope_enter x] -[visit_exp `START`_start{funcidx#3157}(x)] -[visit_exp funcidx#3157] -[visit_id funcidx#3157] not free +[visit_exp `START`_start(x)] [visit_exp (x)] [visit_exp x] [visit_id x] not free -[visit_id funcidx#3157] not free [visit_id x] not free [scope_exit x] -[scope_exit funcidx#3157] -[visit_exp `funcidx#3157?`] -[visit_id funcidx#3157?] no dims -[visit_id funcidx#3157?] [visit_exp `x?`] [visit_id x?] no dims [visit_id x?] -[visit_exp (moduleinst_0 = {`TYPES`{`deftype*#96`} $alloctypes(type*{type <- `type*`}), `TAGS`{`tagaddr*#7`} [], `GLOBALS`{`globaladdr*#7`} $globalsxa(externaddr*{externaddr <- `externaddr*`}), `MEMS`{`memaddr*#7`} [], `TABLES`{`tableaddr*#7`} [], `FUNCS`{`funcaddr*#8`} $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.`FUNCS`_store{`funcinst*#15`}| + i_F)^(i_F<|func*{func <- `func*`}|){`funcinst*#15` <- `funcinst*#15*`}, `DATAS`{`dataaddr*#5`} [], `ELEMS`{`elemaddr*#5`} [], `EXPORTS`{`exportinst*#3`} []})] +[visit_exp (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*`}|){}, `DATAS` [], `ELEMS` [], `EXPORTS` []})] [visit_exp moduleinst_0] [visit_id moduleinst_0] -[visit_exp {`TYPES`{`deftype*#96`} $alloctypes(type*{type <- `type*`}), `TAGS`{`tagaddr*#7`} [], `GLOBALS`{`globaladdr*#7`} $globalsxa(externaddr*{externaddr <- `externaddr*`}), `MEMS`{`memaddr*#7`} [], `TABLES`{`tableaddr*#7`} [], `FUNCS`{`funcaddr*#8`} $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.`FUNCS`_store{`funcinst*#15`}| + i_F)^(i_F<|func*{func <- `func*`}|){`funcinst*#15` <- `funcinst*#15*`}, `DATAS`{`dataaddr*#5`} [], `ELEMS`{`elemaddr*#5`} [], `EXPORTS`{`exportinst*#3`} []}] -[visit_exp `deftype*#96`] -[visit_id deftype*#96] +[visit_exp {`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*`}|){}, `DATAS` [], `ELEMS` [], `EXPORTS` []}] [visit_exp $alloctypes(type*{type <- `type*`})] [visit_exp type*{type <- `type*`}] [scope_enter type] @@ -71029,11 +58269,7 @@ DecD instantiate(store : store, module : module, externaddr*) : config [visit_exp `type*`] [visit_id type*] not free [visit_id type*] no dims -[visit_exp `tagaddr*#7`] -[visit_id tagaddr*#7] [visit_exp []] -[visit_exp `globaladdr*#7`] -[visit_id globaladdr*#7] [visit_exp $globalsxa(externaddr*{externaddr <- `externaddr*`})] [visit_exp externaddr*{externaddr <- `externaddr*`}] [scope_enter externaddr] @@ -71044,15 +58280,9 @@ DecD instantiate(store : store, module : module, externaddr*) : config [visit_exp `externaddr*`] [visit_id externaddr*] not free [visit_id externaddr*] no dims -[visit_exp `memaddr*#7`] -[visit_id memaddr*#7] [visit_exp []] -[visit_exp `tableaddr*#7`] -[visit_id tableaddr*#7] [visit_exp []] -[visit_exp `funcaddr*#8`] -[visit_id funcaddr*#8] -[visit_exp $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.`FUNCS`_store{`funcinst*#15`}| + i_F)^(i_F<|func*{func <- `func*`}|){`funcinst*#15` <- `funcinst*#15*`}] +[visit_exp $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.`FUNCS`_store| + i_F)^(i_F<|func*{func <- `func*`}|){}] [visit_exp $funcsxa(externaddr*{externaddr <- `externaddr*`})] [visit_exp externaddr*{externaddr <- `externaddr*`}] [scope_enter externaddr] @@ -71063,21 +58293,16 @@ DecD instantiate(store : store, module : module, externaddr*) : config [visit_exp `externaddr*`] [visit_id externaddr*] not free [visit_id externaddr*] no dims -[visit_exp (|s.`FUNCS`_store{`funcinst*#15`}| + i_F)^(i_F<|func*{func <- `func*`}|){`funcinst*#15` <- `funcinst*#15*`}] +[visit_exp (|s.`FUNCS`_store| + i_F)^(i_F<|func*{func <- `func*`}|){}] [scope_enter i_F] -[scope_enter funcinst*#15] -[visit_exp (|s.`FUNCS`_store{`funcinst*#15`}| + i_F)] -[visit_exp |s.`FUNCS`_store{`funcinst*#15`}|] -[visit_exp s.`FUNCS`_store{`funcinst*#15`}] +[visit_exp (|s.`FUNCS`_store| + i_F)] +[visit_exp |s.`FUNCS`_store|] +[visit_exp s.`FUNCS`_store] [visit_exp s] [visit_id s] not free -[visit_exp `funcinst*#15`] -[visit_id funcinst*#15] not free [visit_exp i_F] [visit_id i_F] [visit_id i_F] not free -[visit_id funcinst*#15] not free -[scope_exit funcinst*#15] [scope_exit i_F] [visit_exp |func*{func <- `func*`}|] [visit_exp func*{func <- `func*`}] @@ -71089,35 +58314,18 @@ DecD instantiate(store : store, module : module, externaddr*) : config [visit_exp `func*`] [visit_id func*] not free [visit_id func*] no dims -[visit_exp `funcinst*#15*`] -[visit_id funcinst*#15*] no dims -[visit_id funcinst*#15*] -[visit_exp `dataaddr*#5`] -[visit_id dataaddr*#5] [visit_exp []] -[visit_exp `elemaddr*#5`] -[visit_id elemaddr*#5] [visit_exp []] -[visit_exp `exportinst*#3`] -[visit_id exportinst*#3] [visit_exp []] -[visit_exp (z = `%;%`_state{store#2579, frame#2597}(s, {`LOCALS`{`val?*#5`} [], `MODULE`{moduleinst#27} moduleinst_0}))] +[visit_exp (z = `%;%`_state(s, {`LOCALS` [], `MODULE` moduleinst_0}))] [visit_exp z] [visit_id z] -[visit_exp `%;%`_state{store#2579, frame#2597}(s, {`LOCALS`{`val?*#5`} [], `MODULE`{moduleinst#27} moduleinst_0})] -[visit_exp store#2579] -[visit_id store#2579] -[visit_exp frame#2597] -[visit_id frame#2597] -[visit_exp (s, {`LOCALS`{`val?*#5`} [], `MODULE`{moduleinst#27} moduleinst_0})] +[visit_exp `%;%`_state(s, {`LOCALS` [], `MODULE` moduleinst_0})] +[visit_exp (s, {`LOCALS` [], `MODULE` moduleinst_0})] [visit_exp s] [visit_id s] not free -[visit_exp {`LOCALS`{`val?*#5`} [], `MODULE`{moduleinst#27} moduleinst_0}] -[visit_exp `val?*#5`] -[visit_id val?*#5] +[visit_exp {`LOCALS` [], `MODULE` moduleinst_0}] [visit_exp []] -[visit_exp moduleinst#27] -[visit_id moduleinst#27] [visit_exp moduleinst_0] [visit_id moduleinst_0] not free [visit_exp ((z', val_G*{val_G <- `val_G*`}) = $evalglobals(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`}))] @@ -71269,7 +58477,7 @@ DecD instantiate(store : store, module : module, externaddr*) : config [visit_exp `ref_E**`] [visit_id ref_E**] not free [visit_id ref_E**] no dims -[visit_exp (instr_D*{instr_D <- `instr_D*`} = $concat_(syntax instr, $rundata_(`%`_dataidx{i#47725}(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){i#47725 <- `i#47725*`}))] +[visit_exp (instr_D*{instr_D <- `instr_D*`} = $concat_(syntax instr, $rundata_(`%`_dataidx(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){}))] [visit_exp instr_D*{instr_D <- `instr_D*`}] [scope_enter instr_D] [visit_exp instr_D] @@ -71279,14 +58487,11 @@ DecD instantiate(store : store, module : module, externaddr*) : config [visit_exp `instr_D*`] [visit_id instr_D*] not free [visit_id instr_D*] no dims -[visit_exp $concat_(syntax instr, $rundata_(`%`_dataidx{i#47725}(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){i#47725 <- `i#47725*`})] -[visit_exp $rundata_(`%`_dataidx{i#47725}(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){i#47725 <- `i#47725*`}] +[visit_exp $concat_(syntax instr, $rundata_(`%`_dataidx(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){})] +[visit_exp $rundata_(`%`_dataidx(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){}] [scope_enter i_D] -[scope_enter i#47725] -[visit_exp $rundata_(`%`_dataidx{i#47725}(i_D), data*{data <- `data*`}[i_D])] -[visit_exp `%`_dataidx{i#47725}(i_D)] -[visit_exp i#47725] -[visit_id i#47725] not free +[visit_exp $rundata_(`%`_dataidx(i_D), data*{data <- `data*`}[i_D])] +[visit_exp `%`_dataidx(i_D)] [visit_exp (i_D)] [visit_exp i_D] [visit_id i_D] @@ -71303,8 +58508,6 @@ DecD instantiate(store : store, module : module, externaddr*) : config [visit_exp i_D] [visit_id i_D] not free [visit_id i_D] not free -[visit_id i#47725] not free -[scope_exit i#47725] [scope_exit i_D] [visit_exp |data*{data <- `data*`}|] [visit_exp data*{data <- `data*`}] @@ -71316,10 +58519,7 @@ DecD instantiate(store : store, module : module, externaddr*) : config [visit_exp `data*`] [visit_id data*] not free [visit_id data*] no dims -[visit_exp `i#47725*`] -[visit_id i#47725*] no dims -[visit_id i#47725*] -[visit_exp (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx{i#47785}(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){i#47785 <- `i#47785*`}))] +[visit_exp (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){}))] [visit_exp instr_E*{instr_E <- `instr_E*`}] [scope_enter instr_E] [visit_exp instr_E] @@ -71329,14 +58529,11 @@ DecD instantiate(store : store, module : module, externaddr*) : config [visit_exp `instr_E*`] [visit_id instr_E*] not free [visit_id instr_E*] no dims -[visit_exp $concat_(syntax instr, $runelem_(`%`_elemidx{i#47785}(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){i#47785 <- `i#47785*`})] -[visit_exp $runelem_(`%`_elemidx{i#47785}(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){i#47785 <- `i#47785*`}] +[visit_exp $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){})] +[visit_exp $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){}] [scope_enter i_E] -[scope_enter i#47785] -[visit_exp $runelem_(`%`_elemidx{i#47785}(i_E), elem*{elem <- `elem*`}[i_E])] -[visit_exp `%`_elemidx{i#47785}(i_E)] -[visit_exp i#47785] -[visit_id i#47785] not free +[visit_exp $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])] +[visit_exp `%`_elemidx(i_E)] [visit_exp (i_E)] [visit_exp i_E] [visit_id i_E] @@ -71353,8 +58550,6 @@ DecD instantiate(store : store, module : module, externaddr*) : config [visit_exp i_E] [visit_id i_E] not free [visit_id i_E] not free -[visit_id i#47785] not free -[scope_exit i#47785] [scope_exit i_E] [visit_exp |elem*{elem <- `elem*`}|] [visit_exp elem*{elem <- `elem*`}] @@ -71366,10 +58561,7 @@ DecD instantiate(store : store, module : module, externaddr*) : config [visit_exp `elem*`] [visit_id elem*] not free [visit_id elem*] no dims -[visit_exp `i#47785*`] -[visit_id i#47785*] no dims -[visit_id i#47785*] -[visit_exp (instr_S?{instr_S <- `instr_S?`} = `CALL`_instr{funcidx#3159}(x)?{funcidx#3159 <- `funcidx#3159?`, x <- `x?`})] +[visit_exp (instr_S?{instr_S <- `instr_S?`} = `CALL`_instr(x)?{x <- `x?`})] [visit_exp instr_S?{instr_S <- `instr_S?`}] [scope_enter instr_S] [visit_exp instr_S] @@ -71379,51 +58571,43 @@ DecD instantiate(store : store, module : module, externaddr*) : config [visit_exp `instr_S?`] [visit_id instr_S?] not free [visit_id instr_S?] no dims -[visit_exp `CALL`_instr{funcidx#3159}(x)?{funcidx#3159 <- `funcidx#3159?`, x <- `x?`}] -[scope_enter funcidx#3159] +[visit_exp `CALL`_instr(x)?{x <- `x?`}] [scope_enter x] -[visit_exp `CALL`_instr{funcidx#3159}(x)] -[visit_exp funcidx#3159] -[visit_id funcidx#3159] not free +[visit_exp `CALL`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] not free -[visit_id funcidx#3159] not free [visit_id x] not free [scope_exit x] -[scope_exit funcidx#3159] -[visit_exp `funcidx#3159?`] -[visit_id funcidx#3159?] no dims -[visit_id funcidx#3159?] [visit_exp `x?`] [visit_id x?] not free [visit_id x?] no dims => ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $instantiate{s : store, module : module, `externaddr*` : externaddr*, state#2219 : state, `instr*#2334` : instr*, store#2627 : store, frame#2645 : frame, s' : store, `val?*#6` : val?*, moduleinst#28 : moduleinst, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `externtype*#168` : externtype*, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*#125` : type*, `import*#125` : import*, `tag*#125` : tag*, `global*#149` : global*, `mem*#149` : mem*, `table*#149` : table*, `func*#125` : func*, `data*#125` : data*, `elem*#149` : elem*, `start?#125` : start?, `export*#125` : export*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `expr#4805*` : expr*, `expr_G*` : expr*, `globaltype*` : globaltype*, `globaltype#2271*` : globaltype*, `expr#4823*` : expr*, `expr_T*` : expr*, `tabletype*` : tabletype*, `tabletype#1116*` : tabletype*, `byte**` : byte**, `byte*#2187*` : byte**, `datamode*` : datamode*, `datamode#2151*` : datamode*, `elemmode*` : elemmode*, `elemmode#3277*` : elemmode*, `expr*#3277*` : expr**, `expr_E**` : expr**, `reftype*` : reftype*, `reftype#3919*` : reftype*, `funcidx#3157?` : funcidx?, `x?` : idx?, moduleinst_0 : moduleinst, `deftype*#96` : deftype*, `tagaddr*#7` : tagaddr*, `globaladdr*#7` : globaladdr*, `memaddr*#7` : memaddr*, `tableaddr*#7` : tableaddr*, `funcaddr*#8` : funcaddr*, i_F : nat, `funcinst*#15*` : funcinst**, `dataaddr*#5` : dataaddr*, `elemaddr*#5` : elemaddr*, `exportinst*#3` : exportinst*, z : state, store#2579 : store, frame#2597 : frame, `val?*#5` : val?*, moduleinst#27 : moduleinst, z' : state, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, i_D : nat, `i#47725*` : nat*, i_E : nat, `i#47785*` : nat*, `funcidx#3159?` : funcidx?}(s, module, externaddr*{externaddr <- `externaddr*`}) = `%;%`_config{state#2219, `instr*#2334`}(`%;%`_state{store#2627, frame#2645}(s', {`LOCALS`{`val?*#6`} [], `MODULE`{moduleinst#28} moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) - -- Module_ok: `|-%:%`(module, `%->%`_moduletype{`externtype*#168`}(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + 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*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `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*#125`, `import*#125`, `tag*#125`, `global*#149`, `mem*#149`, `table*#149`, `func*#125`, `data*#125`, `elem*#149`, `start?#125`, `export*#125`}(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#2271, expr#4805}(globaltype, expr_G)*{expr#4805 <- `expr#4805*`, expr_G <- `expr_G*`, globaltype <- `globaltype*`, globaltype#2271 <- `globaltype#2271*`}) - -- if (table*{table <- `table*`} = `TABLE`_table{tabletype#1116, expr#4823}(tabletype, expr_T)*{expr#4823 <- `expr#4823*`, expr_T <- `expr_T*`, tabletype <- `tabletype*`, tabletype#1116 <- `tabletype#1116*`}) - -- if (data*{data <- `data*`} = `DATA`_data{`byte*#2187`, datamode#2151}(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, `byte*#2187` <- `byte*#2187*`, datamode <- `datamode*`, datamode#2151 <- `datamode#2151*`}) - -- if (elem*{elem <- `elem*`} = `ELEM`_elem{reftype#3919, `expr*#3277`, elemmode#3277}(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemmode#3277 <- `elemmode#3277*`, `expr*#3277` <- `expr*#3277*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`, reftype#3919 <- `reftype#3919*`}) - -- if (start?{start <- `start?`} = `START`_start{funcidx#3157}(x)?{funcidx#3157 <- `funcidx#3157?`, x <- `x?`}) - -- if (moduleinst_0 = {`TYPES`{`deftype*#96`} $alloctypes(type*{type <- `type*`}), `TAGS`{`tagaddr*#7`} [], `GLOBALS`{`globaladdr*#7`} $globalsxa(externaddr*{externaddr <- `externaddr*`}), `MEMS`{`memaddr*#7`} [], `TABLES`{`tableaddr*#7`} [], `FUNCS`{`funcaddr*#8`} $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.`FUNCS`_store{`funcinst*#15`}| + i_F)^(i_F<|func*{func <- `func*`}|){`funcinst*#15` <- `funcinst*#15*`}, `DATAS`{`dataaddr*#5`} [], `ELEMS`{`elemaddr*#5`} [], `EXPORTS`{`exportinst*#3`} []}) - -- if (z = `%;%`_state{store#2579, frame#2597}(s, {`LOCALS`{`val?*#5`} [], `MODULE`{moduleinst#27} moduleinst_0})) + -- 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*`}|){}, `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#47725}(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){i#47725 <- `i#47725*`})) - -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx{i#47785}(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){i#47785 <- `i#47785*`})) - -- if (instr_S?{instr_S <- `instr_S?`} = `CALL`_instr{funcidx#3159}(x)?{funcidx#3159 <- `funcidx#3159?`, x <- `x?`}) + -- if (instr_D*{instr_D <- `instr_D*`} = $concat_(syntax instr, $rundata_(`%`_dataidx(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){})) + -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){})) + -- if (instr_S?{instr_S <- `instr_S?`} = `CALL`_instr(x)?{x <- `x?`}) [check_dims] _ funcaddr store DecD invoke(store : store, funcaddr : funcaddr, val*) : config [visit_id store] not free [visit_id funcaddr] not free [visit_id _] not free -[check_dims] X*#13028 X*#13041 dataaddr*#6 deftype#12 deftype#13 deftype*#97 elemaddr*#6 exportinst*#4 frame#2657 funcaddr funcaddr#21 funcaddr*#9 funcinst*#16 funcinst*#17 globaladdr*#8 instr*#2346 memaddr*#8 moduleinst#29 resulttype#3026 s state#2231 store#2639 t_1 t_2 tableaddr*#8 tagaddr*#8 typeuse#65 val val?*#7 +[check_dims] funcaddr s t_1 t_2 val [visit_exp s] [visit_id s] [visit_exp funcaddr] @@ -71437,55 +58621,25 @@ DecD invoke(store : store, funcaddr : funcaddr, val*) : config [visit_exp `val*`] [visit_id val*] no dims [visit_id val*] -[visit_exp `%;%`_config{state#2231, `instr*#2346`}(`%;%`_state{store#2639, frame#2657}(s, {`LOCALS`{`val?*#7`} [], `MODULE`{moduleinst#29} {`TYPES`{`deftype*#97`} [], `TAGS`{`tagaddr*#8`} [], `GLOBALS`{`globaladdr*#8`} [], `MEMS`{`memaddr*#8`} [], `TABLES`{`tableaddr*#8`} [], `FUNCS`{`funcaddr*#9`} [], `DATAS`{`dataaddr*#6`} [], `ELEMS`{`elemaddr*#6`} [], `EXPORTS`{`exportinst*#4`} []}}), (val : val <: instr)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr{funcaddr#21}(funcaddr) `CALL_REF`_instr{typeuse#65}((s.`FUNCS`_store{`funcinst*#17`}[funcaddr].`TYPE`_funcinst{deftype#13} : deftype <: typeuse))])] -[visit_exp state#2231] -[visit_id state#2231] -[visit_exp `instr*#2346`] -[visit_id instr*#2346] -[visit_exp (`%;%`_state{store#2639, frame#2657}(s, {`LOCALS`{`val?*#7`} [], `MODULE`{moduleinst#29} {`TYPES`{`deftype*#97`} [], `TAGS`{`tagaddr*#8`} [], `GLOBALS`{`globaladdr*#8`} [], `MEMS`{`memaddr*#8`} [], `TABLES`{`tableaddr*#8`} [], `FUNCS`{`funcaddr*#9`} [], `DATAS`{`dataaddr*#6`} [], `ELEMS`{`elemaddr*#6`} [], `EXPORTS`{`exportinst*#4`} []}}), (val : val <: instr)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr{funcaddr#21}(funcaddr) `CALL_REF`_instr{typeuse#65}((s.`FUNCS`_store{`funcinst*#17`}[funcaddr].`TYPE`_funcinst{deftype#13} : deftype <: typeuse))])] -[visit_exp `%;%`_state{store#2639, frame#2657}(s, {`LOCALS`{`val?*#7`} [], `MODULE`{moduleinst#29} {`TYPES`{`deftype*#97`} [], `TAGS`{`tagaddr*#8`} [], `GLOBALS`{`globaladdr*#8`} [], `MEMS`{`memaddr*#8`} [], `TABLES`{`tableaddr*#8`} [], `FUNCS`{`funcaddr*#9`} [], `DATAS`{`dataaddr*#6`} [], `ELEMS`{`elemaddr*#6`} [], `EXPORTS`{`exportinst*#4`} []}})] -[visit_exp store#2639] -[visit_id store#2639] -[visit_exp frame#2657] -[visit_id frame#2657] -[visit_exp (s, {`LOCALS`{`val?*#7`} [], `MODULE`{moduleinst#29} {`TYPES`{`deftype*#97`} [], `TAGS`{`tagaddr*#8`} [], `GLOBALS`{`globaladdr*#8`} [], `MEMS`{`memaddr*#8`} [], `TABLES`{`tableaddr*#8`} [], `FUNCS`{`funcaddr*#9`} [], `DATAS`{`dataaddr*#6`} [], `ELEMS`{`elemaddr*#6`} [], `EXPORTS`{`exportinst*#4`} []}})] +[visit_exp `%;%`_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))])] +[visit_exp (`%;%`_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))])] +[visit_exp `%;%`_state(s, {`LOCALS` [], `MODULE` {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `EXPORTS` []}})] +[visit_exp (s, {`LOCALS` [], `MODULE` {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `EXPORTS` []}})] [visit_exp s] [visit_id s] not free -[visit_exp {`LOCALS`{`val?*#7`} [], `MODULE`{moduleinst#29} {`TYPES`{`deftype*#97`} [], `TAGS`{`tagaddr*#8`} [], `GLOBALS`{`globaladdr*#8`} [], `MEMS`{`memaddr*#8`} [], `TABLES`{`tableaddr*#8`} [], `FUNCS`{`funcaddr*#9`} [], `DATAS`{`dataaddr*#6`} [], `ELEMS`{`elemaddr*#6`} [], `EXPORTS`{`exportinst*#4`} []}}] -[visit_exp `val?*#7`] -[visit_id val?*#7] +[visit_exp {`LOCALS` [], `MODULE` {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `EXPORTS` []}}] [visit_exp []] -[visit_exp moduleinst#29] -[visit_id moduleinst#29] -[visit_exp {`TYPES`{`deftype*#97`} [], `TAGS`{`tagaddr*#8`} [], `GLOBALS`{`globaladdr*#8`} [], `MEMS`{`memaddr*#8`} [], `TABLES`{`tableaddr*#8`} [], `FUNCS`{`funcaddr*#9`} [], `DATAS`{`dataaddr*#6`} [], `ELEMS`{`elemaddr*#6`} [], `EXPORTS`{`exportinst*#4`} []}] -[visit_exp `deftype*#97`] -[visit_id deftype*#97] +[visit_exp {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `EXPORTS` []}] [visit_exp []] -[visit_exp `tagaddr*#8`] -[visit_id tagaddr*#8] [visit_exp []] -[visit_exp `globaladdr*#8`] -[visit_id globaladdr*#8] [visit_exp []] -[visit_exp `memaddr*#8`] -[visit_id memaddr*#8] [visit_exp []] -[visit_exp `tableaddr*#8`] -[visit_id tableaddr*#8] [visit_exp []] -[visit_exp `funcaddr*#9`] -[visit_id funcaddr*#9] [visit_exp []] -[visit_exp `dataaddr*#6`] -[visit_id dataaddr*#6] [visit_exp []] -[visit_exp `elemaddr*#6`] -[visit_id elemaddr*#6] [visit_exp []] -[visit_exp `exportinst*#4`] -[visit_id exportinst*#4] [visit_exp []] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr{funcaddr#21}(funcaddr) `CALL_REF`_instr{typeuse#65}((s.`FUNCS`_store{`funcinst*#17`}[funcaddr].`TYPE`_funcinst{deftype#13} : deftype <: typeuse))]] +[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(funcaddr) `CALL_REF`_instr((s.`FUNCS`_store[funcaddr].`TYPE`_funcinst : deftype <: typeuse))]] [visit_exp (val : val <: instr)*{val <- `val*`}] [scope_enter val] [visit_exp (val : val <: instr)] @@ -71496,48 +58650,32 @@ DecD invoke(store : store, funcaddr : funcaddr, val*) : config [visit_exp `val*`] [visit_id val*] not free [visit_id val*] no dims -[visit_exp [`REF.FUNC_ADDR`_instr{funcaddr#21}(funcaddr) `CALL_REF`_instr{typeuse#65}((s.`FUNCS`_store{`funcinst*#17`}[funcaddr].`TYPE`_funcinst{deftype#13} : deftype <: typeuse))]] -[visit_exp `REF.FUNC_ADDR`_instr{funcaddr#21}(funcaddr)] -[visit_exp funcaddr#21] -[visit_id funcaddr#21] +[visit_exp [`REF.FUNC_ADDR`_instr(funcaddr) `CALL_REF`_instr((s.`FUNCS`_store[funcaddr].`TYPE`_funcinst : deftype <: typeuse))]] +[visit_exp `REF.FUNC_ADDR`_instr(funcaddr)] [visit_exp (funcaddr)] [visit_exp funcaddr] [visit_id funcaddr] not free -[visit_exp `CALL_REF`_instr{typeuse#65}((s.`FUNCS`_store{`funcinst*#17`}[funcaddr].`TYPE`_funcinst{deftype#13} : deftype <: typeuse))] -[visit_exp typeuse#65] -[visit_id typeuse#65] -[visit_exp ((s.`FUNCS`_store{`funcinst*#17`}[funcaddr].`TYPE`_funcinst{deftype#13} : deftype <: typeuse))] -[visit_exp (s.`FUNCS`_store{`funcinst*#17`}[funcaddr].`TYPE`_funcinst{deftype#13} : deftype <: typeuse)] -[visit_exp s.`FUNCS`_store{`funcinst*#17`}[funcaddr].`TYPE`_funcinst{deftype#13}] -[visit_exp s.`FUNCS`_store{`funcinst*#17`}[funcaddr]] -[visit_exp s.`FUNCS`_store{`funcinst*#17`}] +[visit_exp `CALL_REF`_instr((s.`FUNCS`_store[funcaddr].`TYPE`_funcinst : deftype <: typeuse))] +[visit_exp ((s.`FUNCS`_store[funcaddr].`TYPE`_funcinst : deftype <: typeuse))] +[visit_exp (s.`FUNCS`_store[funcaddr].`TYPE`_funcinst : deftype <: typeuse)] +[visit_exp s.`FUNCS`_store[funcaddr].`TYPE`_funcinst] +[visit_exp s.`FUNCS`_store[funcaddr]] +[visit_exp s.`FUNCS`_store] [visit_exp s] [visit_id s] not free -[visit_exp `funcinst*#17`] -[visit_id funcinst*#17] [visit_exp funcaddr] [visit_id funcaddr] not free -[visit_exp deftype#13] -[visit_id deftype#13] -[visit_exp (s.`FUNCS`_store{`funcinst*#16`}[funcaddr].`TYPE`_funcinst{deftype#12}, `FUNC%->%`_comptype{resulttype#3026}(`%`_resulttype{`X*#13028`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13041`}(t_2*{t_2 <- `t_2*`})))] -[visit_exp s.`FUNCS`_store{`funcinst*#16`}[funcaddr].`TYPE`_funcinst{deftype#12}] -[visit_exp s.`FUNCS`_store{`funcinst*#16`}[funcaddr]] -[visit_exp s.`FUNCS`_store{`funcinst*#16`}] +[visit_exp (s.`FUNCS`_store[funcaddr].`TYPE`_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))] +[visit_exp s.`FUNCS`_store[funcaddr].`TYPE`_funcinst] +[visit_exp s.`FUNCS`_store[funcaddr]] +[visit_exp s.`FUNCS`_store] [visit_exp s] [visit_id s] not free -[visit_exp `funcinst*#16`] -[visit_id funcinst*#16] [visit_exp funcaddr] [visit_id funcaddr] not free -[visit_exp deftype#12] -[visit_id deftype#12] -[visit_exp `FUNC%->%`_comptype{resulttype#3026}(`%`_resulttype{`X*#13028`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13041`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#3026] -[visit_id resulttype#3026] -[visit_exp (`%`_resulttype{`X*#13028`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13041`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#13028`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#13028`] -[visit_id X*#13028] +[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -71548,9 +58686,7 @@ DecD invoke(store : store, funcaddr : funcaddr, val*) : config [visit_exp `t_1*`] [visit_id t_1*] no dims [visit_id t_1*] -[visit_exp `%`_resulttype{`X*#13041`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#13041`] -[visit_id X*#13041] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -71582,16 +58718,14 @@ DecD invoke(store : store, funcaddr : funcaddr, val*) : config [visit_id val*] no dims => ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $invoke{s : store, funcaddr : funcaddr, `val*` : val*, state#2231 : state, `instr*#2346` : instr*, store#2639 : store, frame#2657 : frame, `val?*#7` : val?*, moduleinst#29 : moduleinst, `deftype*#97` : deftype*, `tagaddr*#8` : tagaddr*, `globaladdr*#8` : globaladdr*, `memaddr*#8` : memaddr*, `tableaddr*#8` : tableaddr*, `funcaddr*#9` : funcaddr*, `dataaddr*#6` : dataaddr*, `elemaddr*#6` : elemaddr*, `exportinst*#4` : exportinst*, funcaddr#21 : funcaddr, typeuse#65 : typeuse, `funcinst*#17` : funcinst*, deftype#13 : deftype, `funcinst*#16` : funcinst*, deftype#12 : deftype, resulttype#3026 : resulttype, `X*#13028` : valtype*, `t_1*` : valtype*, `X*#13041` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config{state#2231, `instr*#2346`}(`%;%`_state{store#2639, frame#2657}(s, {`LOCALS`{`val?*#7`} [], `MODULE`{moduleinst#29} {`TYPES`{`deftype*#97`} [], `TAGS`{`tagaddr*#8`} [], `GLOBALS`{`globaladdr*#8`} [], `MEMS`{`memaddr*#8`} [], `TABLES`{`tableaddr*#8`} [], `FUNCS`{`funcaddr*#9`} [], `DATAS`{`dataaddr*#6`} [], `ELEMS`{`elemaddr*#6`} [], `EXPORTS`{`exportinst*#4`} []}}), (val : val <: instr)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr{funcaddr#21}(funcaddr) `CALL_REF`_instr{typeuse#65}((s.`FUNCS`_store{`funcinst*#17`}[funcaddr].`TYPE`_funcinst{deftype#13} : deftype <: typeuse))]) - -- Expand: `%~~%`(s.`FUNCS`_store{`funcinst*#16`}[funcaddr].`TYPE`_funcinst{deftype#12}, `FUNC%->%`_comptype{resulttype#3026}(`%`_resulttype{`X*#13028`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13041`}(t_2*{t_2 <- `t_2*`}))) + 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*`} ps' = [check_dims] -[check_dims] i#47807 -dims \ = , i#47807 -[visit_exp `%`_byte{i#47807}(``)] -[visit_exp i#47807] -[visit_id i#47807] +[check_dims] +dims \ = +[visit_exp `%`_byte(``)] [visit_exp (``)] [visit_exp ``] [visit_id ] @@ -71599,17 +58733,13 @@ dims \ = , i#47807 [visit_id ] not free ps' = (N : N) [check_dims] N -[check_dims] N i#47815 i#47823 n -dims \ N = i#47815, i#47823, n -[visit_exp `%`_uN{i#47823}(n)] -[visit_exp i#47823] -[visit_id i#47823] +[check_dims] N n +dims \ N = n +[visit_exp `%`_uN(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `%`_byte{i#47815}(n)] -[visit_exp i#47815] -[visit_id i#47815] +[visit_exp `%`_byte(n)] [visit_exp (n)] [visit_exp n] [visit_id n] not free @@ -71628,11 +58758,9 @@ dims \ N = i#47815, i#47823, n [visit_exp N] [visit_id N] not free [visit_id N] no dims -[check_dims] N i#47831 i#47856 i#47866 m n -dims \ N = i#47831, i#47856, i#47866, m, n -[visit_exp `%`_uN{i#47866}((((2 ^ 7) * m) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)))] -[visit_exp i#47866] -[visit_id i#47866] +[check_dims] N m n +dims \ N = m, n +[visit_exp `%`_uN((((2 ^ 7) * m) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)))] [visit_exp ((((2 ^ 7) * m) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)))] [visit_exp (((2 ^ 7) * m) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat))] [visit_exp ((2 ^ 7) * m)] @@ -71650,15 +58778,11 @@ dims \ N = i#47831, i#47856, i#47866, m, n [visit_exp (2 ^ 7)] [visit_exp 2] [visit_exp 7] -[visit_exp `%`_byte{i#47831}(n)] -[visit_exp i#47831] -[visit_id i#47831] +[visit_exp `%`_byte(n)] [visit_exp (n)] [visit_exp n] [visit_id n] not free -[visit_exp `%`_uN{i#47856}(m)] -[visit_exp i#47856] -[visit_id i#47856] +[visit_exp `%`_uN(m)] [visit_exp (m)] [visit_exp m] [visit_id m] not free @@ -71687,18 +58811,14 @@ dims \ N = i#47831, i#47856, i#47866, m, n [visit_id N] not free ps' = (N : N) [check_dims] N -[check_dims] N i#47874 i#47882 n -dims \ N = i#47874, i#47882, n -[visit_exp `%`_sN{i#47882}((n : nat <:> int))] -[visit_exp i#47882] -[visit_id i#47882] +[check_dims] N n +dims \ N = n +[visit_exp `%`_sN((n : nat <:> int))] [visit_exp ((n : nat <:> int))] [visit_exp (n : nat <:> int)] [visit_exp n] [visit_id n] -[visit_exp `%`_byte{i#47874}(n)] -[visit_exp i#47874] -[visit_id i#47874] +[visit_exp `%`_byte(n)] [visit_exp (n)] [visit_exp n] [visit_id n] not free @@ -71722,11 +58842,9 @@ dims \ N = i#47874, i#47882, n [visit_id N] no dims [visit_exp (1 : nat <:> int)] [visit_exp 1] -[check_dims] N i#47890 i#47898 n -dims \ N = i#47890, i#47898, n -[visit_exp `%`_sN{i#47898}(((n : nat <:> int) - ((2 ^ 7) : nat <:> int)))] -[visit_exp i#47898] -[visit_id i#47898] +[check_dims] N n +dims \ N = n +[visit_exp `%`_sN(((n : nat <:> int) - ((2 ^ 7) : nat <:> int)))] [visit_exp (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)))] [visit_exp ((n : nat <:> int) - ((2 ^ 7) : nat <:> int))] [visit_exp (n : nat <:> int)] @@ -71736,9 +58854,7 @@ dims \ N = i#47890, i#47898, n [visit_exp (2 ^ 7)] [visit_exp 2] [visit_exp 7] -[visit_exp `%`_byte{i#47890}(n)] -[visit_exp i#47890] -[visit_id i#47890] +[visit_exp `%`_byte(n)] [visit_exp (n)] [visit_exp n] [visit_id n] not free @@ -71776,24 +58892,20 @@ dims \ N = i#47890, i#47898, n [visit_id N] no dims [visit_exp (1 : nat <:> int)] [visit_exp 1] -[check_dims] N i i#47906 i#47943 i#47945 n -dims \ N = i, i#47906, i#47943, i#47945, n -[visit_exp `%`_sN{i#47945}(((((2 ^ 7) * i!`%`_uN{i#47943}.0) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int))] -[visit_exp i#47945] -[visit_id i#47945] -[visit_exp (((((2 ^ 7) * i!`%`_uN{i#47943}.0) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int))] -[visit_exp ((((2 ^ 7) * i!`%`_uN{i#47943}.0) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int)] -[visit_exp (((2 ^ 7) * i!`%`_uN{i#47943}.0) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat))] -[visit_exp ((2 ^ 7) * i!`%`_uN{i#47943}.0)] +[check_dims] N i n +dims \ N = i, n +[visit_exp `%`_sN(((((2 ^ 7) * i!`%`_uN.0) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int))] +[visit_exp (((((2 ^ 7) * i!`%`_uN.0) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int))] +[visit_exp ((((2 ^ 7) * i!`%`_uN.0) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int)] +[visit_exp (((2 ^ 7) * i!`%`_uN.0) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat))] +[visit_exp ((2 ^ 7) * i!`%`_uN.0)] [visit_exp (2 ^ 7)] [visit_exp 2] [visit_exp 7] -[visit_exp i!`%`_uN{i#47943}.0] -[visit_exp i!`%`_uN{i#47943}] +[visit_exp i!`%`_uN.0] +[visit_exp i!`%`_uN] [visit_exp i] [visit_id i] -[visit_exp i#47943] -[visit_id i#47943] [visit_exp (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)] [visit_exp ((n : nat <:> int) - ((2 ^ 7) : nat <:> int))] [visit_exp (n : nat <:> int)] @@ -71803,9 +58915,7 @@ dims \ N = i, i#47906, i#47943, i#47945, n [visit_exp (2 ^ 7)] [visit_exp 2] [visit_exp 7] -[visit_exp `%`_byte{i#47906}(n)] -[visit_exp i#47906] -[visit_id i#47906] +[visit_exp `%`_byte(n)] [visit_exp (n)] [visit_exp n] [visit_id n] not free @@ -71836,22 +58946,18 @@ dims \ N = i, i#47906, i#47943, i#47945, n [visit_id N] not free ps' = (N : N) [check_dims] N -[check_dims] N i i#47959 i#47961 -dims \ N = i, i#47959, i#47961 -[visit_exp `%`_iN{i#47961}($inv_signed_(N, i!`%`_sN{i#47959}.0))] -[visit_exp i#47961] -[visit_id i#47961] -[visit_exp ($inv_signed_(N, i!`%`_sN{i#47959}.0))] -[visit_exp $inv_signed_(N, i!`%`_sN{i#47959}.0)] +[check_dims] N i +dims \ N = i +[visit_exp `%`_iN($inv_signed_(N, i!`%`_sN.0))] +[visit_exp ($inv_signed_(N, i!`%`_sN.0))] +[visit_exp $inv_signed_(N, i!`%`_sN.0)] [visit_exp N] [visit_id N] not free [visit_id N] no dims -[visit_exp i!`%`_sN{i#47959}.0] -[visit_exp i!`%`_sN{i#47959}] +[visit_exp i!`%`_sN.0] +[visit_exp i!`%`_sN] [visit_exp i] [visit_id i] -[visit_exp i#47959] -[visit_id i#47959] [visit_exp i] [visit_id i] not free [visit_exp N] @@ -71899,34 +59005,26 @@ dims \ N = b [visit_id N] not free ps' = [check_dims] -[check_dims] i#48009 i#48033 n -dims \ = i#48009, i#48033, n -[visit_exp `%`_u32{i#48033}(n)] -[visit_exp i#48033] -[visit_id i#48033] +[check_dims] n +dims \ = n +[visit_exp `%`_u32(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `%`_uN{i#48009}(n)] -[visit_exp i#48009] -[visit_id i#48009] +[visit_exp `%`_uN(n)] [visit_exp (n)] [visit_exp n] [visit_id n] not free [visit_exp 32] ps' = [check_dims] -[check_dims] i#48057 i#48081 n -dims \ = i#48057, i#48081, n -[visit_exp `%`_u64{i#48081}(n)] -[visit_exp i#48081] -[visit_id i#48081] +[check_dims] n +dims \ = n +[visit_exp `%`_u64(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `%`_uN{i#48057}(n)] -[visit_exp i#48057] -[visit_id i#48057] +[visit_exp `%`_uN(n)] [visit_exp (n)] [visit_exp n] [visit_id n] not free @@ -71960,8 +59058,8 @@ dims \ = p [visit_exp 64] ps' = (syntax el, grammar BX : el) [check_dims] el -[check_dims] el i#48134 n -dims \ = el, i#48134, n +[check_dims] el n +dims \ = el, n [visit_exp el^n{el <- `el*`}] [scope_enter el] [visit_exp el] @@ -71973,9 +59071,7 @@ dims \ = el, i#48134, n [visit_exp `el*`] [visit_id el*] no dims [visit_id el*] -[visit_exp `%`_u32{i#48134}(n)] -[visit_exp i#48134] -[visit_id i#48134] +[visit_exp `%`_u32(n)] [visit_exp (n)] [visit_exp n] [visit_id n] not free @@ -71993,41 +59089,35 @@ dims \ = el, i#48134, n [check_dims] byte DecD cont(byte : byte) : nat [visit_id byte] not free -[check_dims] b i#48144 i#48146 i#48148 +[check_dims] b [visit_exp b] [visit_id b] -[visit_exp (((b!`%`_byte{i#48148}.0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat)] -[visit_exp ((b!`%`_byte{i#48148}.0 : nat <:> int) - (128 : nat <:> int))] -[visit_exp (b!`%`_byte{i#48148}.0 : nat <:> int)] -[visit_exp b!`%`_byte{i#48148}.0] -[visit_exp b!`%`_byte{i#48148}] +[visit_exp (((b!`%`_byte.0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat)] +[visit_exp ((b!`%`_byte.0 : nat <:> int) - (128 : nat <:> int))] +[visit_exp (b!`%`_byte.0 : nat <:> int)] +[visit_exp b!`%`_byte.0] +[visit_exp b!`%`_byte] [visit_exp b] [visit_id b] not free -[visit_exp i#48148] -[visit_id i#48148] [visit_exp (128 : nat <:> int)] [visit_exp 128] -[visit_exp ((128 < b!`%`_byte{i#48144}.0) /\ (b!`%`_byte{i#48146}.0 < 192))] -[visit_exp (128 < b!`%`_byte{i#48144}.0)] +[visit_exp ((128 < b!`%`_byte.0) /\ (b!`%`_byte.0 < 192))] +[visit_exp (128 < b!`%`_byte.0)] [visit_exp 128] -[visit_exp b!`%`_byte{i#48144}.0] -[visit_exp b!`%`_byte{i#48144}] +[visit_exp b!`%`_byte.0] +[visit_exp b!`%`_byte] [visit_exp b] [visit_id b] not free -[visit_exp i#48144] -[visit_id i#48144] -[visit_exp (b!`%`_byte{i#48146}.0 < 192)] -[visit_exp b!`%`_byte{i#48146}.0] -[visit_exp b!`%`_byte{i#48146}] +[visit_exp (b!`%`_byte.0 < 192)] +[visit_exp b!`%`_byte.0] +[visit_exp b!`%`_byte] [visit_exp b] [visit_id b] not free -[visit_exp i#48146] -[visit_id i#48146] [visit_exp 192] => ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - def $cont{b : byte, i#48148 : nat, i#48144 : nat, i#48146 : nat}(b) = (((b!`%`_byte{i#48148}.0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat) - -- if ((128 < b!`%`_byte{i#48144}.0) /\ (b!`%`_byte{i#48146}.0 < 192)) + def $cont{b : byte}(b) = (((b!`%`_byte.0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat) + -- if ((128 < b!`%`_byte.0) /\ (b!`%`_byte.0 < 192)) [check_dims] ch [visit_exp ch*{ch <- `ch*`}] [scope_enter ch] @@ -72053,40 +59143,34 @@ DecD cont(byte : byte) : nat => ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec def $utf8{`ch*` : char*}(ch*{ch <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) -[check_dims] b ch i#48332 i#48340 i#48341 +[check_dims] b ch [visit_exp [ch]] [visit_exp ch] [visit_id ch] [visit_exp [b]] [visit_exp b] [visit_id b] -[visit_exp (ch!`%`_char{i#48332}.0 < 128)] -[visit_exp ch!`%`_char{i#48332}.0] -[visit_exp ch!`%`_char{i#48332}] +[visit_exp (ch!`%`_char.0 < 128)] +[visit_exp ch!`%`_char.0] +[visit_exp ch!`%`_char] [visit_exp ch] [visit_id ch] not free -[visit_exp i#48332] -[visit_id i#48332] [visit_exp 128] -[visit_exp (`%`_byte{i#48341}(ch!`%`_char{i#48340}.0) = b)] -[visit_exp `%`_byte{i#48341}(ch!`%`_char{i#48340}.0)] -[visit_exp i#48341] -[visit_id i#48341] -[visit_exp (ch!`%`_char{i#48340}.0)] -[visit_exp ch!`%`_char{i#48340}.0] -[visit_exp ch!`%`_char{i#48340}] +[visit_exp (`%`_byte(ch!`%`_char.0) = b)] +[visit_exp `%`_byte(ch!`%`_char.0)] +[visit_exp (ch!`%`_char.0)] +[visit_exp ch!`%`_char.0] +[visit_exp ch!`%`_char] [visit_exp ch] [visit_id ch] not free -[visit_exp i#48340] -[visit_id i#48340] [visit_exp b] [visit_id b] not free => ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - def $utf8{ch : char, b : byte, i#48332 : nat, i#48341 : nat, i#48340 : nat}([ch]) = [b] - -- if (ch!`%`_char{i#48332}.0 < 128) - -- if (`%`_byte{i#48341}(ch!`%`_char{i#48340}.0) = b) -[check_dims] b_1 b_2 ch i#48356 i#48358 i#48360 i#48368 + def $utf8{ch : char, b : byte}([ch]) = [b] + -- if (ch!`%`_char.0 < 128) + -- if (`%`_byte(ch!`%`_char.0) = b) +[check_dims] b_1 b_2 ch [visit_exp [ch]] [visit_exp ch] [visit_id ch] @@ -72095,44 +59179,36 @@ DecD cont(byte : byte) : nat [visit_id b_1] [visit_exp b_2] [visit_id b_2] -[visit_exp ((128 <= ch!`%`_char{i#48356}.0) /\ (ch!`%`_char{i#48358}.0 < 2048))] -[visit_exp (128 <= ch!`%`_char{i#48356}.0)] +[visit_exp ((128 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 2048))] +[visit_exp (128 <= ch!`%`_char.0)] [visit_exp 128] -[visit_exp ch!`%`_char{i#48356}.0] -[visit_exp ch!`%`_char{i#48356}] +[visit_exp ch!`%`_char.0] +[visit_exp ch!`%`_char] [visit_exp ch] [visit_id ch] not free -[visit_exp i#48356] -[visit_id i#48356] -[visit_exp (ch!`%`_char{i#48358}.0 < 2048)] -[visit_exp ch!`%`_char{i#48358}.0] -[visit_exp ch!`%`_char{i#48358}] +[visit_exp (ch!`%`_char.0 < 2048)] +[visit_exp ch!`%`_char.0] +[visit_exp ch!`%`_char] [visit_exp ch] [visit_id ch] not free -[visit_exp i#48358] -[visit_id i#48358] [visit_exp 2048] -[visit_exp (ch!`%`_char{i#48368}.0 = (((2 ^ 6) * (((b_1!`%`_byte{i#48360}.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2)))] -[visit_exp ch!`%`_char{i#48368}.0] -[visit_exp ch!`%`_char{i#48368}] +[visit_exp (ch!`%`_char.0 = (((2 ^ 6) * (((b_1!`%`_byte.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2)))] +[visit_exp ch!`%`_char.0] +[visit_exp ch!`%`_char] [visit_exp ch] [visit_id ch] not free -[visit_exp i#48368] -[visit_id i#48368] -[visit_exp (((2 ^ 6) * (((b_1!`%`_byte{i#48360}.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))] -[visit_exp ((2 ^ 6) * (((b_1!`%`_byte{i#48360}.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat))] +[visit_exp (((2 ^ 6) * (((b_1!`%`_byte.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))] +[visit_exp ((2 ^ 6) * (((b_1!`%`_byte.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat))] [visit_exp (2 ^ 6)] [visit_exp 2] [visit_exp 6] -[visit_exp (((b_1!`%`_byte{i#48360}.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)] -[visit_exp ((b_1!`%`_byte{i#48360}.0 : nat <:> int) - (192 : nat <:> int))] -[visit_exp (b_1!`%`_byte{i#48360}.0 : nat <:> int)] -[visit_exp b_1!`%`_byte{i#48360}.0] -[visit_exp b_1!`%`_byte{i#48360}] +[visit_exp (((b_1!`%`_byte.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)] +[visit_exp ((b_1!`%`_byte.0 : nat <:> int) - (192 : nat <:> int))] +[visit_exp (b_1!`%`_byte.0 : nat <:> int)] +[visit_exp b_1!`%`_byte.0] +[visit_exp b_1!`%`_byte] [visit_exp b_1] [visit_id b_1] not free -[visit_exp i#48360] -[visit_id i#48360] [visit_exp (192 : nat <:> int)] [visit_exp 192] [visit_exp $cont(b_2)] @@ -72140,10 +59216,10 @@ DecD cont(byte : byte) : nat [visit_id b_2] not free => ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - def $utf8{ch : char, b_1 : byte, b_2 : byte, i#48356 : nat, i#48358 : nat, i#48368 : nat, i#48360 : nat}([ch]) = [b_1 b_2] - -- if ((128 <= ch!`%`_char{i#48356}.0) /\ (ch!`%`_char{i#48358}.0 < 2048)) - -- if (ch!`%`_char{i#48368}.0 = (((2 ^ 6) * (((b_1!`%`_byte{i#48360}.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) -[check_dims] b_1 b_2 b_3 ch i#48400 i#48402 i#48404 i#48406 i#48408 i#48422 + 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))) +[check_dims] b_1 b_2 b_3 ch [visit_exp [ch]] [visit_exp ch] [visit_id ch] @@ -72154,63 +59230,51 @@ DecD cont(byte : byte) : nat [visit_id b_2] [visit_exp b_3] [visit_id b_3] -[visit_exp (((2048 <= ch!`%`_char{i#48400}.0) /\ (ch!`%`_char{i#48402}.0 < 55296)) \/ ((57344 <= ch!`%`_char{i#48404}.0) /\ (ch!`%`_char{i#48406}.0 < 65536)))] -[visit_exp ((2048 <= ch!`%`_char{i#48400}.0) /\ (ch!`%`_char{i#48402}.0 < 55296))] -[visit_exp (2048 <= ch!`%`_char{i#48400}.0)] +[visit_exp (((2048 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 55296)) \/ ((57344 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 65536)))] +[visit_exp ((2048 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 55296))] +[visit_exp (2048 <= ch!`%`_char.0)] [visit_exp 2048] -[visit_exp ch!`%`_char{i#48400}.0] -[visit_exp ch!`%`_char{i#48400}] +[visit_exp ch!`%`_char.0] +[visit_exp ch!`%`_char] [visit_exp ch] [visit_id ch] not free -[visit_exp i#48400] -[visit_id i#48400] -[visit_exp (ch!`%`_char{i#48402}.0 < 55296)] -[visit_exp ch!`%`_char{i#48402}.0] -[visit_exp ch!`%`_char{i#48402}] +[visit_exp (ch!`%`_char.0 < 55296)] +[visit_exp ch!`%`_char.0] +[visit_exp ch!`%`_char] [visit_exp ch] [visit_id ch] not free -[visit_exp i#48402] -[visit_id i#48402] [visit_exp 55296] -[visit_exp ((57344 <= ch!`%`_char{i#48404}.0) /\ (ch!`%`_char{i#48406}.0 < 65536))] -[visit_exp (57344 <= ch!`%`_char{i#48404}.0)] +[visit_exp ((57344 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 65536))] +[visit_exp (57344 <= ch!`%`_char.0)] [visit_exp 57344] -[visit_exp ch!`%`_char{i#48404}.0] -[visit_exp ch!`%`_char{i#48404}] +[visit_exp ch!`%`_char.0] +[visit_exp ch!`%`_char] [visit_exp ch] [visit_id ch] not free -[visit_exp i#48404] -[visit_id i#48404] -[visit_exp (ch!`%`_char{i#48406}.0 < 65536)] -[visit_exp ch!`%`_char{i#48406}.0] -[visit_exp ch!`%`_char{i#48406}] +[visit_exp (ch!`%`_char.0 < 65536)] +[visit_exp ch!`%`_char.0] +[visit_exp ch!`%`_char] [visit_exp ch] [visit_id ch] not free -[visit_exp i#48406] -[visit_id i#48406] [visit_exp 65536] -[visit_exp (ch!`%`_char{i#48422}.0 = ((((2 ^ 12) * (((b_1!`%`_byte{i#48408}.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3)))] -[visit_exp ch!`%`_char{i#48422}.0] -[visit_exp ch!`%`_char{i#48422}] +[visit_exp (ch!`%`_char.0 = ((((2 ^ 12) * (((b_1!`%`_byte.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3)))] +[visit_exp ch!`%`_char.0] +[visit_exp ch!`%`_char] [visit_exp ch] [visit_id ch] not free -[visit_exp i#48422] -[visit_id i#48422] -[visit_exp ((((2 ^ 12) * (((b_1!`%`_byte{i#48408}.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))] -[visit_exp (((2 ^ 12) * (((b_1!`%`_byte{i#48408}.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2)))] -[visit_exp ((2 ^ 12) * (((b_1!`%`_byte{i#48408}.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat))] +[visit_exp ((((2 ^ 12) * (((b_1!`%`_byte.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))] +[visit_exp (((2 ^ 12) * (((b_1!`%`_byte.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2)))] +[visit_exp ((2 ^ 12) * (((b_1!`%`_byte.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat))] [visit_exp (2 ^ 12)] [visit_exp 2] [visit_exp 12] -[visit_exp (((b_1!`%`_byte{i#48408}.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)] -[visit_exp ((b_1!`%`_byte{i#48408}.0 : nat <:> int) - (224 : nat <:> int))] -[visit_exp (b_1!`%`_byte{i#48408}.0 : nat <:> int)] -[visit_exp b_1!`%`_byte{i#48408}.0] -[visit_exp b_1!`%`_byte{i#48408}] +[visit_exp (((b_1!`%`_byte.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)] +[visit_exp ((b_1!`%`_byte.0 : nat <:> int) - (224 : nat <:> int))] +[visit_exp (b_1!`%`_byte.0 : nat <:> int)] +[visit_exp b_1!`%`_byte.0] +[visit_exp b_1!`%`_byte] [visit_exp b_1] [visit_id b_1] not free -[visit_exp i#48408] -[visit_id i#48408] [visit_exp (224 : nat <:> int)] [visit_exp 224] [visit_exp ((2 ^ 6) * $cont(b_2))] @@ -72225,10 +59289,10 @@ DecD cont(byte : byte) : nat [visit_id b_3] not free => ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, i#48400 : nat, i#48402 : nat, i#48404 : nat, i#48406 : nat, i#48422 : nat, i#48408 : nat}([ch]) = [b_1 b_2 b_3] - -- if (((2048 <= ch!`%`_char{i#48400}.0) /\ (ch!`%`_char{i#48402}.0 < 55296)) \/ ((57344 <= ch!`%`_char{i#48404}.0) /\ (ch!`%`_char{i#48406}.0 < 65536))) - -- if (ch!`%`_char{i#48422}.0 = ((((2 ^ 12) * (((b_1!`%`_byte{i#48408}.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) -[check_dims] b_1 b_2 b_3 b_4 ch i#48460 i#48462 i#48464 i#48484 + 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))) +[check_dims] b_1 b_2 b_3 b_4 ch [visit_exp [ch]] [visit_exp ch] [visit_id ch] @@ -72241,46 +59305,38 @@ DecD cont(byte : byte) : nat [visit_id b_3] [visit_exp b_4] [visit_id b_4] -[visit_exp ((65536 <= ch!`%`_char{i#48460}.0) /\ (ch!`%`_char{i#48462}.0 < 69632))] -[visit_exp (65536 <= ch!`%`_char{i#48460}.0)] +[visit_exp ((65536 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 69632))] +[visit_exp (65536 <= ch!`%`_char.0)] [visit_exp 65536] -[visit_exp ch!`%`_char{i#48460}.0] -[visit_exp ch!`%`_char{i#48460}] +[visit_exp ch!`%`_char.0] +[visit_exp ch!`%`_char] [visit_exp ch] [visit_id ch] not free -[visit_exp i#48460] -[visit_id i#48460] -[visit_exp (ch!`%`_char{i#48462}.0 < 69632)] -[visit_exp ch!`%`_char{i#48462}.0] -[visit_exp ch!`%`_char{i#48462}] +[visit_exp (ch!`%`_char.0 < 69632)] +[visit_exp ch!`%`_char.0] +[visit_exp ch!`%`_char] [visit_exp ch] [visit_id ch] not free -[visit_exp i#48462] -[visit_id i#48462] [visit_exp 69632] -[visit_exp (ch!`%`_char{i#48484}.0 = (((((2 ^ 18) * (((b_1!`%`_byte{i#48464}.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4)))] -[visit_exp ch!`%`_char{i#48484}.0] -[visit_exp ch!`%`_char{i#48484}] +[visit_exp (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)))] +[visit_exp ch!`%`_char.0] +[visit_exp ch!`%`_char] [visit_exp ch] [visit_id ch] not free -[visit_exp i#48484] -[visit_id i#48484] -[visit_exp (((((2 ^ 18) * (((b_1!`%`_byte{i#48464}.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))] -[visit_exp ((((2 ^ 18) * (((b_1!`%`_byte{i#48464}.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3)))] -[visit_exp (((2 ^ 18) * (((b_1!`%`_byte{i#48464}.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2)))] -[visit_exp ((2 ^ 18) * (((b_1!`%`_byte{i#48464}.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat))] +[visit_exp (((((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))] +[visit_exp ((((2 ^ 18) * (((b_1!`%`_byte.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3)))] +[visit_exp (((2 ^ 18) * (((b_1!`%`_byte.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2)))] +[visit_exp ((2 ^ 18) * (((b_1!`%`_byte.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat))] [visit_exp (2 ^ 18)] [visit_exp 2] [visit_exp 18] -[visit_exp (((b_1!`%`_byte{i#48464}.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)] -[visit_exp ((b_1!`%`_byte{i#48464}.0 : nat <:> int) - (240 : nat <:> int))] -[visit_exp (b_1!`%`_byte{i#48464}.0 : nat <:> int)] -[visit_exp b_1!`%`_byte{i#48464}.0] -[visit_exp b_1!`%`_byte{i#48464}] +[visit_exp (((b_1!`%`_byte.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)] +[visit_exp ((b_1!`%`_byte.0 : nat <:> int) - (240 : nat <:> int))] +[visit_exp (b_1!`%`_byte.0 : nat <:> int)] +[visit_exp b_1!`%`_byte.0] +[visit_exp b_1!`%`_byte] [visit_exp b_1] [visit_id b_1] not free -[visit_exp i#48464] -[visit_id i#48464] [visit_exp (240 : nat <:> int)] [visit_exp 240] [visit_exp ((2 ^ 12) * $cont(b_2))] @@ -72302,13 +59358,13 @@ DecD cont(byte : byte) : nat [visit_id b_4] not free => ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte, i#48460 : nat, i#48462 : nat, i#48484 : nat, i#48464 : nat}([ch]) = [b_1 b_2 b_3 b_4] - -- if ((65536 <= ch!`%`_char{i#48460}.0) /\ (ch!`%`_char{i#48462}.0 < 69632)) - -- if (ch!`%`_char{i#48484}.0 = (((((2 ^ 18) * (((b_1!`%`_byte{i#48464}.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) + 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))) ps' = [check_dims] -[check_dims] b char*#153 name -dims \ = b, char*#153, name +[check_dims] b name +dims \ = b, name [visit_exp name] [visit_id name] [visit_exp b*{b <- `b*`}] @@ -72320,14 +59376,12 @@ dims \ = b, char*#153, name [visit_exp `b*`] [visit_id b*] no dims [visit_id b*] -[visit_exp ($utf8(name!`%`_name{`char*#153`}.0) = b*{b <- `b*`})] -[visit_exp $utf8(name!`%`_name{`char*#153`}.0)] -[visit_exp name!`%`_name{`char*#153`}.0] -[visit_exp name!`%`_name{`char*#153`}] +[visit_exp ($utf8(name!`%`_name.0) = b*{b <- `b*`})] +[visit_exp $utf8(name!`%`_name.0)] +[visit_exp name!`%`_name.0] +[visit_exp name!`%`_name] [visit_exp name] [visit_id name] not free -[visit_exp `char*#153`] -[visit_id char*#153] [visit_exp b*{b <- `b*`}] [scope_enter b] [visit_exp b] @@ -72419,51 +59473,41 @@ dims \ = l [visit_id l] not free ps' = [check_dims] -[check_dims] funcidx#3161 x -dims \ = funcidx#3161, x -[visit_exp `FUNC`_externidx{funcidx#3161}(x)] -[visit_exp funcidx#3161] -[visit_id funcidx#3161] +[check_dims] x +dims \ = x +[visit_exp `FUNC`_externidx(x)] [visit_exp (x)] [visit_exp x] [visit_id x] [visit_exp x] [visit_id x] not free -[check_dims] tableidx#123 x -dims \ = tableidx#123, x -[visit_exp `TABLE`_externidx{tableidx#123}(x)] -[visit_exp tableidx#123] -[visit_id tableidx#123] +[check_dims] x +dims \ = x +[visit_exp `TABLE`_externidx(x)] [visit_exp (x)] [visit_exp x] [visit_id x] [visit_exp x] [visit_id x] not free -[check_dims] memidx#169 x -dims \ = memidx#169, x -[visit_exp `MEM`_externidx{memidx#169}(x)] -[visit_exp memidx#169] -[visit_id memidx#169] +[check_dims] x +dims \ = x +[visit_exp `MEM`_externidx(x)] [visit_exp (x)] [visit_exp x] [visit_id x] [visit_exp x] [visit_id x] not free -[check_dims] globalidx#23 x -dims \ = globalidx#23, x -[visit_exp `GLOBAL`_externidx{globalidx#23}(x)] -[visit_exp globalidx#23] -[visit_id globalidx#23] +[check_dims] x +dims \ = x +[visit_exp `GLOBAL`_externidx(x)] [visit_exp (x)] [visit_exp x] [visit_id x] [visit_exp x] [visit_id x] not free -[check_dims] tagidx#19 x -dims \ = tagidx#19, x -[visit_exp `TAG`_externidx{tagidx#19}(x)] -[visit_exp tagidx#19] -[visit_id tagidx#19] +[check_dims] x +dims \ = x +[visit_exp `TAG`_externidx(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -72551,35 +59595,27 @@ dims \ = ht [visit_id ht] [visit_exp ht] [visit_id ht] not free -[check_dims] i#49064 typeidx#1924 x33 -dims \ = i#49064, typeidx#1924, x33 -[visit_exp `_IDX`_heaptype{typeidx#1924}($s33_to_u32(x33))] -[visit_exp typeidx#1924] -[visit_id typeidx#1924] +[check_dims] x33 +dims \ = x33 +[visit_exp `_IDX`_heaptype($s33_to_u32(x33))] [visit_exp ($s33_to_u32(x33))] [visit_exp $s33_to_u32(x33)] [visit_exp x33] [visit_id x33] [visit_exp x33] [visit_id x33] not free -[visit_exp (x33!`%`_s33{i#49064}.0 >= (0 : nat <:> int))] -[visit_exp x33!`%`_s33{i#49064}.0] -[visit_exp x33!`%`_s33{i#49064}] +[visit_exp (x33!`%`_s33.0 >= (0 : nat <:> int))] +[visit_exp x33!`%`_s33.0] +[visit_exp x33!`%`_s33] [visit_exp x33] [visit_id x33] not free -[visit_exp i#49064] -[visit_id i#49064] [visit_exp (0 : nat <:> int)] [visit_exp 0] ps' = [check_dims] -[check_dims] heaptype#1587 ht null?#1525 -dims \ = heaptype#1587, ht, null?#1525 -[visit_exp `REF`_reftype{`null?#1525`, heaptype#1587}(?(`NULL`_null), ht)] -[visit_exp `null?#1525`] -[visit_id null?#1525] -[visit_exp heaptype#1587] -[visit_id heaptype#1587] +[check_dims] ht +dims \ = ht +[visit_exp `REF`_reftype(?(`NULL`_null), ht)] [visit_exp (?(`NULL`_null), ht)] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] @@ -72588,26 +59624,18 @@ dims \ = heaptype#1587, ht, null?#1525 [visit_id ht] [visit_exp ht] [visit_id ht] not free -[check_dims] heaptype#1599 ht null?#1537 -dims \ = heaptype#1599, ht, null?#1537 -[visit_exp `REF`_reftype{`null?#1537`, heaptype#1599}(?(), ht)] -[visit_exp `null?#1537`] -[visit_id null?#1537] -[visit_exp heaptype#1599] -[visit_id heaptype#1599] +[check_dims] ht +dims \ = ht +[visit_exp `REF`_reftype(?(), ht)] [visit_exp (?(), ht)] [visit_exp ?()] [visit_exp ht] [visit_id ht] [visit_exp ht] [visit_id ht] not free -[check_dims] heaptype#1611 ht null?#1549 -dims \ = heaptype#1611, ht, null?#1549 -[visit_exp `REF`_reftype{`null?#1549`, heaptype#1611}(?(`NULL`_null), ht)] -[visit_exp `null?#1549`] -[visit_id null?#1549] -[visit_exp heaptype#1611] -[visit_id heaptype#1611] +[check_dims] ht +dims \ = ht +[visit_exp `REF`_reftype(?(`NULL`_null), ht)] [visit_exp (?(`NULL`_null), ht)] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] @@ -72641,11 +59669,9 @@ dims \ = rt [visit_id rt] not free ps' = [check_dims] -[check_dims] X*#13056 t -dims \ = X*#13056, t -[visit_exp `%`_resulttype{`X*#13056`}(t*{t <- `t*`})] -[visit_exp `X*#13056`] -[visit_id X*#13056] +[check_dims] t +dims \ = t +[visit_exp `%`_resulttype(t*{t <- `t*`})] [visit_exp (t*{t <- `t*`})] [visit_exp t*{t <- `t*`}] [scope_enter t] @@ -72703,13 +59729,9 @@ dims \ = pt [visit_id pt] not free ps' = [check_dims] -[check_dims] mut mut?#1417 storagetype#755 zt -dims \ = mut, mut?#1417, storagetype#755, zt -[visit_exp `%%`_fieldtype{`mut?#1417`, storagetype#755}(mut?{mut <- `mut?`}, zt)] -[visit_exp `mut?#1417`] -[visit_id mut?#1417] -[visit_exp storagetype#755] -[visit_id storagetype#755] +[check_dims] mut zt +dims \ = mut, zt +[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)] [visit_exp (mut?{mut <- `mut?`}, zt)] [visit_exp mut?{mut <- `mut?`}] [scope_enter mut] @@ -72735,23 +59757,19 @@ dims \ = mut, mut?#1417, storagetype#755, zt [visit_id mut?] no dims ps' = [check_dims] -[check_dims] fieldtype#59 ft -dims \ = fieldtype#59, ft -[visit_exp `ARRAY`_comptype{fieldtype#59}(ft)] -[visit_exp fieldtype#59] -[visit_id fieldtype#59] +[check_dims] ft +dims \ = ft +[visit_exp `ARRAY`_comptype(ft)] [visit_exp (ft)] [visit_exp ft] [visit_id ft] [visit_exp ft] [visit_id ft] not free -[check_dims] X*#13071 ft -dims \ = X*#13071, ft -[visit_exp `STRUCT`_comptype(`%`_list{`X*#13071`}(ft*{ft <- `ft*`}))] -[visit_exp (`%`_list{`X*#13071`}(ft*{ft <- `ft*`}))] -[visit_exp `%`_list{`X*#13071`}(ft*{ft <- `ft*`})] -[visit_exp `X*#13071`] -[visit_id X*#13071] +[check_dims] ft +dims \ = ft +[visit_exp `STRUCT`_comptype(`%`_list(ft*{ft <- `ft*`}))] +[visit_exp (`%`_list(ft*{ft <- `ft*`}))] +[visit_exp `%`_list(ft*{ft <- `ft*`})] [visit_exp (ft*{ft <- `ft*`})] [visit_exp ft*{ft <- `ft*`}] [scope_enter ft] @@ -72771,15 +59789,11 @@ dims \ = X*#13071, ft [visit_exp `ft*`] [visit_id ft*] not free [visit_id ft*] no dims -[check_dims] X*#13087 X*#13105 X*#13122 X*#13135 resulttype#3029 t_1 t_2 -dims \ = X*#13087, X*#13105, X*#13122, X*#13135, resulttype#3029, t_1, t_2 -[visit_exp `FUNC%->%`_comptype{resulttype#3029}(`%`_resulttype{`X*#13122`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13135`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#3029] -[visit_id resulttype#3029] -[visit_exp (`%`_resulttype{`X*#13122`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13135`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#13122`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#13122`] -[visit_id X*#13122] +[check_dims] t_1 t_2 +dims \ = t_1, t_2 +[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -72790,9 +59804,7 @@ dims \ = X*#13087, X*#13105, X*#13122, X*#13135, resulttype#3029, t_1, t_2 [visit_exp `t_1*`] [visit_id t_1*] no dims [visit_id t_1*] -[visit_exp `%`_resulttype{`X*#13135`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#13135`] -[visit_id X*#13135] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -72803,9 +59815,7 @@ dims \ = X*#13087, X*#13105, X*#13122, X*#13135, resulttype#3029, t_1, t_2 [visit_exp `t_2*`] [visit_id t_2*] no dims [visit_id t_2*] -[visit_exp `%`_resulttype{`X*#13087`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#13087`] -[visit_id X*#13087] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -72816,9 +59826,7 @@ dims \ = X*#13087, X*#13105, X*#13122, X*#13135, resulttype#3029, t_1, t_2 [visit_exp `t_1*`] [visit_id t_1*] not free [visit_id t_1*] no dims -[visit_exp `%`_resulttype{`X*#13105`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#13105`] -[visit_id X*#13105] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -72831,35 +59839,21 @@ dims \ = X*#13087, X*#13105, X*#13122, X*#13135, resulttype#3029, t_1, t_2 [visit_id t_2*] no dims ps' = [check_dims] -[check_dims] comptype#449 ct final?#449 typeidx#1926 typeuse*#449 x -dims \ = comptype#449, ct, final?#449, typeidx#1926, typeuse*#449, x -[visit_exp `SUB`_subtype{`final?#449`, `typeuse*#449`, comptype#449}(?(`FINAL`_final), `_IDX`_typeuse{typeidx#1926}(x)*{typeidx#1926 <- `typeidx#1926*`, x <- `x*`}, ct)] -[visit_exp `final?#449`] -[visit_id final?#449] -[visit_exp `typeuse*#449`] -[visit_id typeuse*#449] -[visit_exp comptype#449] -[visit_id comptype#449] -[visit_exp (?(`FINAL`_final), `_IDX`_typeuse{typeidx#1926}(x)*{typeidx#1926 <- `typeidx#1926*`, x <- `x*`}, ct)] +[check_dims] ct x +dims \ = ct, x +[visit_exp `SUB`_subtype(?(`FINAL`_final), `_IDX`_typeuse(x)*{x <- `x*`}, ct)] +[visit_exp (?(`FINAL`_final), `_IDX`_typeuse(x)*{x <- `x*`}, ct)] [visit_exp ?(`FINAL`_final)] [visit_exp `FINAL`_final] [visit_exp ()] -[visit_exp `_IDX`_typeuse{typeidx#1926}(x)*{typeidx#1926 <- `typeidx#1926*`, x <- `x*`}] -[scope_enter typeidx#1926] +[visit_exp `_IDX`_typeuse(x)*{x <- `x*`}] [scope_enter x] -[visit_exp `_IDX`_typeuse{typeidx#1926}(x)] -[visit_exp typeidx#1926] -[visit_id typeidx#1926] not free +[visit_exp `_IDX`_typeuse(x)] [visit_exp (x)] [visit_exp x] [visit_id x] not free -[visit_id typeidx#1926] not free [visit_id x] not free [scope_exit x] -[scope_exit typeidx#1926] -[visit_exp `typeidx#1926*`] -[visit_id typeidx#1926*] no dims -[visit_id typeidx#1926*] [visit_exp `x*`] [visit_id x*] no dims [visit_id x*] @@ -72876,33 +59870,19 @@ dims \ = comptype#449, ct, final?#449, typeidx#1926, typeuse*#449, x [visit_id x*] no dims [visit_exp ct] [visit_id ct] not free -[check_dims] comptype#461 ct final?#461 typeidx#1928 typeuse*#461 x -dims \ = comptype#461, ct, final?#461, typeidx#1928, typeuse*#461, x -[visit_exp `SUB`_subtype{`final?#461`, `typeuse*#461`, comptype#461}(?(), `_IDX`_typeuse{typeidx#1928}(x)*{typeidx#1928 <- `typeidx#1928*`, x <- `x*`}, ct)] -[visit_exp `final?#461`] -[visit_id final?#461] -[visit_exp `typeuse*#461`] -[visit_id typeuse*#461] -[visit_exp comptype#461] -[visit_id comptype#461] -[visit_exp (?(), `_IDX`_typeuse{typeidx#1928}(x)*{typeidx#1928 <- `typeidx#1928*`, x <- `x*`}, ct)] +[check_dims] ct x +dims \ = ct, x +[visit_exp `SUB`_subtype(?(), `_IDX`_typeuse(x)*{x <- `x*`}, ct)] +[visit_exp (?(), `_IDX`_typeuse(x)*{x <- `x*`}, ct)] [visit_exp ?()] -[visit_exp `_IDX`_typeuse{typeidx#1928}(x)*{typeidx#1928 <- `typeidx#1928*`, x <- `x*`}] -[scope_enter typeidx#1928] +[visit_exp `_IDX`_typeuse(x)*{x <- `x*`}] [scope_enter x] -[visit_exp `_IDX`_typeuse{typeidx#1928}(x)] -[visit_exp typeidx#1928] -[visit_id typeidx#1928] not free +[visit_exp `_IDX`_typeuse(x)] [visit_exp (x)] [visit_exp x] [visit_id x] not free -[visit_id typeidx#1928] not free [visit_id x] not free [scope_exit x] -[scope_exit typeidx#1928] -[visit_exp `typeidx#1928*`] -[visit_id typeidx#1928*] no dims -[visit_id typeidx#1928*] [visit_exp `x*`] [visit_id x*] no dims [visit_id x*] @@ -72919,15 +59899,9 @@ dims \ = comptype#461, ct, final?#461, typeidx#1928, typeuse*#461, x [visit_id x*] no dims [visit_exp ct] [visit_id ct] not free -[check_dims] comptype#473 ct final?#473 typeuse*#473 -dims \ = comptype#473, ct, final?#473, typeuse*#473 -[visit_exp `SUB`_subtype{`final?#473`, `typeuse*#473`, comptype#473}(?(`FINAL`_final), [], ct)] -[visit_exp `final?#473`] -[visit_id final?#473] -[visit_exp `typeuse*#473`] -[visit_id typeuse*#473] -[visit_exp comptype#473] -[visit_id comptype#473] +[check_dims] ct +dims \ = ct +[visit_exp `SUB`_subtype(?(`FINAL`_final), [], ct)] [visit_exp (?(`FINAL`_final), [], ct)] [visit_exp ?(`FINAL`_final)] [visit_exp `FINAL`_final] @@ -72939,13 +59913,11 @@ dims \ = comptype#473, ct, final?#473, typeuse*#473 [visit_id ct] not free ps' = [check_dims] -[check_dims] X*#13150 st -dims \ = X*#13150, st -[visit_exp `REC`_rectype(`%`_list{`X*#13150`}(st*{st <- `st*`}))] -[visit_exp (`%`_list{`X*#13150`}(st*{st <- `st*`}))] -[visit_exp `%`_list{`X*#13150`}(st*{st <- `st*`})] -[visit_exp `X*#13150`] -[visit_id X*#13150] +[check_dims] st +dims \ = st +[visit_exp `REC`_rectype(`%`_list(st*{st <- `st*`}))] +[visit_exp (`%`_list(st*{st <- `st*`}))] +[visit_exp `%`_list(st*{st <- `st*`})] [visit_exp (st*{st <- `st*`})] [visit_exp st*{st <- `st*`}] [scope_enter st] @@ -72965,13 +59937,11 @@ dims \ = X*#13150, st [visit_exp `st*`] [visit_id st*] not free [visit_id st*] no dims -[check_dims] X*#13165 st -dims \ = X*#13165, st -[visit_exp `REC`_rectype(`%`_list{`X*#13165`}([st]))] -[visit_exp (`%`_list{`X*#13165`}([st]))] -[visit_exp `%`_list{`X*#13165`}([st])] -[visit_exp `X*#13165`] -[visit_id X*#13165] +[check_dims] st +dims \ = st +[visit_exp `REC`_rectype(`%`_list([st]))] +[visit_exp (`%`_list([st]))] +[visit_exp `%`_list([st])] [visit_exp ([st])] [visit_exp [st]] [visit_exp st] @@ -72980,137 +59950,99 @@ dims \ = X*#13165, st [visit_id st] not free ps' = [check_dims] _ -[check_dims] i#49167 i#49191 n u64#491 u64?#467 -dims \ = i#49167, i#49191, n, u64#491, u64?#467 -[visit_exp (`I32`_addrtype, `[%..%]`_limits{u64#491, `u64?#467`}(`%`_u64{i#49191}(n), ?()))] +[check_dims] n +dims \ = n +[visit_exp (`I32`_addrtype, `[%..%]`_limits(`%`_u64(n), ?()))] [visit_exp `I32`_addrtype] [visit_exp ()] -[visit_exp `[%..%]`_limits{u64#491, `u64?#467`}(`%`_u64{i#49191}(n), ?())] -[visit_exp u64#491] -[visit_id u64#491] -[visit_exp `u64?#467`] -[visit_id u64?#467] -[visit_exp (`%`_u64{i#49191}(n), ?())] -[visit_exp `%`_u64{i#49191}(n)] -[visit_exp i#49191] -[visit_id i#49191] +[visit_exp `[%..%]`_limits(`%`_u64(n), ?())] +[visit_exp (`%`_u64(n), ?())] +[visit_exp `%`_u64(n)] [visit_exp (n)] [visit_exp n] [visit_id n] [visit_exp ?()] -[visit_exp `%`_u64{i#49167}(n)] -[visit_exp i#49167] -[visit_id i#49167] +[visit_exp `%`_u64(n)] [visit_exp (n)] [visit_exp n] [visit_id n] not free -[check_dims] i#49216 i#49243 i#49267 i#49289 m n u64#503 u64?#479 -dims \ = i#49216, i#49243, i#49267, i#49289, m, n, u64#503, u64?#479 -[visit_exp (`I32`_addrtype, `[%..%]`_limits{u64#503, `u64?#479`}(`%`_u64{i#49267}(n), ?(`%`_u64{i#49289}(m))))] +[check_dims] m n +dims \ = m, n +[visit_exp (`I32`_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))] [visit_exp `I32`_addrtype] [visit_exp ()] -[visit_exp `[%..%]`_limits{u64#503, `u64?#479`}(`%`_u64{i#49267}(n), ?(`%`_u64{i#49289}(m)))] -[visit_exp u64#503] -[visit_id u64#503] -[visit_exp `u64?#479`] -[visit_id u64?#479] -[visit_exp (`%`_u64{i#49267}(n), ?(`%`_u64{i#49289}(m)))] -[visit_exp `%`_u64{i#49267}(n)] -[visit_exp i#49267] -[visit_id i#49267] +[visit_exp `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))] +[visit_exp (`%`_u64(n), ?(`%`_u64(m)))] +[visit_exp `%`_u64(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp ?(`%`_u64{i#49289}(m))] -[visit_exp `%`_u64{i#49289}(m)] -[visit_exp i#49289] -[visit_id i#49289] +[visit_exp ?(`%`_u64(m))] +[visit_exp `%`_u64(m)] [visit_exp (m)] [visit_exp m] [visit_id m] -[visit_exp `%`_u64{i#49216}(n)] -[visit_exp i#49216] -[visit_id i#49216] +[visit_exp `%`_u64(n)] [visit_exp (n)] [visit_exp n] [visit_id n] not free -[visit_exp `%`_u64{i#49243}(m)] -[visit_exp i#49243] -[visit_id i#49243] +[visit_exp `%`_u64(m)] [visit_exp (m)] [visit_exp m] [visit_id m] not free -[check_dims] i#49314 i#49338 n u64#515 u64?#491 -dims \ = i#49314, i#49338, n, u64#515, u64?#491 -[visit_exp (`I64`_addrtype, `[%..%]`_limits{u64#515, `u64?#491`}(`%`_u64{i#49338}(n), ?()))] +[check_dims] n +dims \ = n +[visit_exp (`I64`_addrtype, `[%..%]`_limits(`%`_u64(n), ?()))] [visit_exp `I64`_addrtype] [visit_exp ()] -[visit_exp `[%..%]`_limits{u64#515, `u64?#491`}(`%`_u64{i#49338}(n), ?())] -[visit_exp u64#515] -[visit_id u64#515] -[visit_exp `u64?#491`] -[visit_id u64?#491] -[visit_exp (`%`_u64{i#49338}(n), ?())] -[visit_exp `%`_u64{i#49338}(n)] -[visit_exp i#49338] -[visit_id i#49338] +[visit_exp `[%..%]`_limits(`%`_u64(n), ?())] +[visit_exp (`%`_u64(n), ?())] +[visit_exp `%`_u64(n)] [visit_exp (n)] [visit_exp n] [visit_id n] [visit_exp ?()] -[visit_exp `%`_u64{i#49314}(n)] -[visit_exp i#49314] -[visit_id i#49314] +[visit_exp `%`_u64(n)] [visit_exp (n)] [visit_exp n] [visit_id n] not free -[check_dims] i#49363 i#49390 i#49414 i#49436 m n u64#527 u64?#503 -dims \ = i#49363, i#49390, i#49414, i#49436, m, n, u64#527, u64?#503 -[visit_exp (`I64`_addrtype, `[%..%]`_limits{u64#527, `u64?#503`}(`%`_u64{i#49414}(n), ?(`%`_u64{i#49436}(m))))] +[check_dims] m n +dims \ = m, n +[visit_exp (`I64`_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))] [visit_exp `I64`_addrtype] [visit_exp ()] -[visit_exp `[%..%]`_limits{u64#527, `u64?#503`}(`%`_u64{i#49414}(n), ?(`%`_u64{i#49436}(m)))] -[visit_exp u64#527] -[visit_id u64#527] -[visit_exp `u64?#503`] -[visit_id u64?#503] -[visit_exp (`%`_u64{i#49414}(n), ?(`%`_u64{i#49436}(m)))] -[visit_exp `%`_u64{i#49414}(n)] -[visit_exp i#49414] -[visit_id i#49414] +[visit_exp `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))] +[visit_exp (`%`_u64(n), ?(`%`_u64(m)))] +[visit_exp `%`_u64(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp ?(`%`_u64{i#49436}(m))] -[visit_exp `%`_u64{i#49436}(m)] -[visit_exp i#49436] -[visit_id i#49436] +[visit_exp ?(`%`_u64(m))] +[visit_exp `%`_u64(m)] [visit_exp (m)] [visit_exp m] [visit_id m] -[visit_exp `%`_u64{i#49363}(n)] -[visit_exp i#49363] -[visit_id i#49363] +[visit_exp `%`_u64(n)] [visit_exp (n)] [visit_exp n] [visit_id n] not free -[visit_exp `%`_u64{i#49390}(m)] -[visit_exp i#49390] -[visit_id i#49390] +[visit_exp `%`_u64(m)] [visit_exp (m)] [visit_exp m] [visit_id m] not free +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_exit _] +[scope_exit _] ps' = [check_dims] -[check_dims] typeidx#1930 x -dims \ = typeidx#1930, x -[visit_exp `_IDX`_tagtype{typeidx#1930}(x)] -[visit_exp typeidx#1930] -[visit_id typeidx#1930] +[check_dims] x +dims \ = x +[visit_exp `_IDX`_tagtype(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -73118,13 +60050,9 @@ dims \ = typeidx#1930, x [visit_id x] not free ps' = [check_dims] -[check_dims] mut mut?#1469 t valtype#991 -dims \ = mut, mut?#1469, t, valtype#991 -[visit_exp `%%`_globaltype{`mut?#1469`, valtype#991}(mut?{mut <- `mut?`}, t)] -[visit_exp `mut?#1469`] -[visit_id mut?#1469] -[visit_exp valtype#991] -[visit_id valtype#991] +[check_dims] mut t +dims \ = mut, t +[visit_exp `%%`_globaltype(mut?{mut <- `mut?`}, t)] [visit_exp (mut?{mut <- `mut?`}, t)] [visit_exp mut?{mut <- `mut?`}] [scope_enter mut] @@ -73150,13 +60078,9 @@ dims \ = mut, mut?#1469, t, valtype#991 [visit_id mut?] no dims ps' = [check_dims] -[check_dims] addrtype#1373 at lim limits#1373 -dims \ = addrtype#1373, at, lim, limits#1373 -[visit_exp `%%PAGE`_memtype{addrtype#1373, limits#1373}(at, lim)] -[visit_exp addrtype#1373] -[visit_id addrtype#1373] -[visit_exp limits#1373] -[visit_id limits#1373] +[check_dims] at lim +dims \ = at, lim +[visit_exp `%%PAGE`_memtype(at, lim)] [visit_exp (at, lim)] [visit_exp at] [visit_id at] @@ -73169,15 +60093,9 @@ dims \ = addrtype#1373, at, lim, limits#1373 [visit_id lim] not free ps' = [check_dims] -[check_dims] addrtype#1385 at lim limits#1385 reftype#3949 rt -dims \ = addrtype#1385, at, lim, limits#1385, reftype#3949, rt -[visit_exp `%%%`_tabletype{addrtype#1385, limits#1385, reftype#3949}(at, lim, rt)] -[visit_exp addrtype#1385] -[visit_id addrtype#1385] -[visit_exp limits#1385] -[visit_id limits#1385] -[visit_exp reftype#3949] -[visit_id reftype#3949] +[check_dims] at lim rt +dims \ = at, lim, rt +[visit_exp `%%%`_tabletype(at, lim, rt)] [visit_exp (at, lim, rt)] [visit_exp at] [visit_id at] @@ -73194,55 +60112,43 @@ dims \ = addrtype#1385, at, lim, limits#1385, reftype#3949, rt [visit_id lim] not free ps' = [check_dims] -[check_dims] typeidx#1932 typeuse#67 x -dims \ = typeidx#1932, typeuse#67, x -[visit_exp `FUNC`_externtype{typeuse#67}(`_IDX`_typeuse{typeidx#1932}(x))] -[visit_exp typeuse#67] -[visit_id typeuse#67] -[visit_exp (`_IDX`_typeuse{typeidx#1932}(x))] -[visit_exp `_IDX`_typeuse{typeidx#1932}(x)] -[visit_exp typeidx#1932] -[visit_id typeidx#1932] +[check_dims] x +dims \ = x +[visit_exp `FUNC`_externtype(`_IDX`_typeuse(x))] +[visit_exp (`_IDX`_typeuse(x))] +[visit_exp `_IDX`_typeuse(x)] [visit_exp (x)] [visit_exp x] [visit_id x] [visit_exp x] [visit_id x] not free -[check_dims] tabletype#1118 tt -dims \ = tabletype#1118, tt -[visit_exp `TABLE`_externtype{tabletype#1118}(tt)] -[visit_exp tabletype#1118] -[visit_id tabletype#1118] +[check_dims] tt +dims \ = tt +[visit_exp `TABLE`_externtype(tt)] [visit_exp (tt)] [visit_exp tt] [visit_id tt] [visit_exp tt] [visit_id tt] not free -[check_dims] memtype#722 mt -dims \ = memtype#722, mt -[visit_exp `MEM`_externtype{memtype#722}(mt)] -[visit_exp memtype#722] -[visit_id memtype#722] +[check_dims] mt +dims \ = mt +[visit_exp `MEM`_externtype(mt)] [visit_exp (mt)] [visit_exp mt] [visit_id mt] [visit_exp mt] [visit_id mt] not free -[check_dims] globaltype#2273 gt -dims \ = globaltype#2273, gt -[visit_exp `GLOBAL`_externtype{globaltype#2273}(gt)] -[visit_exp globaltype#2273] -[visit_id globaltype#2273] +[check_dims] gt +dims \ = gt +[visit_exp `GLOBAL`_externtype(gt)] [visit_exp (gt)] [visit_exp gt] [visit_id gt] [visit_exp gt] [visit_id gt] not free -[check_dims] jt tagtype#324 -dims \ = jt, tagtype#324 -[visit_exp `TAG`_externtype{tagtype#324}(jt)] -[visit_exp tagtype#324] -[visit_id tagtype#324] +[check_dims] jt +dims \ = jt +[visit_exp `TAG`_externtype(jt)] [visit_exp (jt)] [visit_exp jt] [visit_id jt] @@ -73262,18 +60168,14 @@ dims \ = dims \ = [visit_exp `DROP`_instr] [visit_exp ()] -[check_dims] valtype*?#11 -dims \ = valtype*?#11 -[visit_exp `SELECT`_instr{`valtype*?#11`}(?())] -[visit_exp `valtype*?#11`] -[visit_id valtype*?#11] +[check_dims] +dims \ = +[visit_exp `SELECT`_instr(?())] [visit_exp (?())] [visit_exp ?()] -[check_dims] t valtype*?#13 -dims \ = t, valtype*?#13 -[visit_exp `SELECT`_instr{`valtype*?#13`}(?(t*{t <- `t*`}))] -[visit_exp `valtype*?#13`] -[visit_id valtype*?#13] +[check_dims] t +dims \ = t +[visit_exp `SELECT`_instr(?(t*{t <- `t*`}))] [visit_exp (?(t*{t <- `t*`}))] [visit_exp ?(t*{t <- `t*`})] [visit_exp t*{t <- `t*`}] @@ -73327,61 +60229,45 @@ dims \ = [visit_exp ()] ps' = [check_dims] -[check_dims] valtype?#7 -dims \ = valtype?#7 -[visit_exp `_RESULT`_blocktype{`valtype?#7`}(?())] -[visit_exp `valtype?#7`] -[visit_id valtype?#7] +[check_dims] +dims \ = +[visit_exp `_RESULT`_blocktype(?())] [visit_exp (?())] [visit_exp ?()] -[check_dims] t valtype?#9 -dims \ = t, valtype?#9 -[visit_exp `_RESULT`_blocktype{`valtype?#9`}(?(t))] -[visit_exp `valtype?#9`] -[visit_id valtype?#9] +[check_dims] t +dims \ = t +[visit_exp `_RESULT`_blocktype(?(t))] [visit_exp (?(t))] [visit_exp ?(t)] [visit_exp t] [visit_id t] [visit_exp t] [visit_id t] not free -[check_dims] i i#49559 i#49560 i#49575 typeidx#1934 -dims \ = i, i#49559, i#49560, i#49575, typeidx#1934 -[visit_exp `_IDX`_blocktype{typeidx#1934}(`%`_typeidx{i#49560}((i!`%`_s33{i#49559}.0 : int <:> nat)))] -[visit_exp typeidx#1934] -[visit_id typeidx#1934] -[visit_exp (`%`_typeidx{i#49560}((i!`%`_s33{i#49559}.0 : int <:> nat)))] -[visit_exp `%`_typeidx{i#49560}((i!`%`_s33{i#49559}.0 : int <:> nat))] -[visit_exp i#49560] -[visit_id i#49560] -[visit_exp ((i!`%`_s33{i#49559}.0 : int <:> nat))] -[visit_exp (i!`%`_s33{i#49559}.0 : int <:> nat)] -[visit_exp i!`%`_s33{i#49559}.0] -[visit_exp i!`%`_s33{i#49559}] +[check_dims] i +dims \ = i +[visit_exp `_IDX`_blocktype(`%`_typeidx((i!`%`_s33.0 : int <:> nat)))] +[visit_exp (`%`_typeidx((i!`%`_s33.0 : int <:> nat)))] +[visit_exp `%`_typeidx((i!`%`_s33.0 : int <:> nat))] +[visit_exp ((i!`%`_s33.0 : int <:> nat))] +[visit_exp (i!`%`_s33.0 : int <:> nat)] +[visit_exp i!`%`_s33.0] +[visit_exp i!`%`_s33] [visit_exp i] [visit_id i] -[visit_exp i#49559] -[visit_id i#49559] [visit_exp i] [visit_id i] not free -[visit_exp (i!`%`_s33{i#49575}.0 >= (0 : nat <:> int))] -[visit_exp i!`%`_s33{i#49575}.0] -[visit_exp i!`%`_s33{i#49575}] +[visit_exp (i!`%`_s33.0 >= (0 : nat <:> int))] +[visit_exp i!`%`_s33.0] +[visit_exp i!`%`_s33] [visit_exp i] [visit_id i] not free -[visit_exp i#49575] -[visit_id i#49575] [visit_exp (0 : nat <:> int)] [visit_exp 0] ps' = [check_dims] -[check_dims] blocktype#31 bt in instr*#2348 -dims \ = blocktype#31, bt, in, instr*#2348 -[visit_exp `BLOCK`_instr{blocktype#31, `instr*#2348`}(bt, in*{in <- `in*`})] -[visit_exp blocktype#31] -[visit_id blocktype#31] -[visit_exp `instr*#2348`] -[visit_id instr*#2348] +[check_dims] bt in +dims \ = bt, in +[visit_exp `BLOCK`_instr(bt, in*{in <- `in*`})] [visit_exp (bt, in*{in <- `in*`})] [visit_exp bt] [visit_id bt] @@ -73404,13 +60290,9 @@ dims \ = blocktype#31, bt, in, instr*#2348 [visit_exp `in*`] [visit_id in*] not free [visit_id in*] no dims -[check_dims] blocktype#33 bt in instr*#2350 -dims \ = blocktype#33, bt, in, instr*#2350 -[visit_exp `LOOP`_instr{blocktype#33, `instr*#2350`}(bt, in*{in <- `in*`})] -[visit_exp blocktype#33] -[visit_id blocktype#33] -[visit_exp `instr*#2350`] -[visit_id instr*#2350] +[check_dims] bt in +dims \ = bt, in +[visit_exp `LOOP`_instr(bt, in*{in <- `in*`})] [visit_exp (bt, in*{in <- `in*`})] [visit_exp bt] [visit_id bt] @@ -73433,13 +60315,9 @@ dims \ = blocktype#33, bt, in, instr*#2350 [visit_exp `in*`] [visit_id in*] not free [visit_id in*] no dims -[check_dims] blocktype#35 bt in instr*#2352 -dims \ = blocktype#35, bt, in, instr*#2352 -[visit_exp `IF%%ELSE%`_instr{blocktype#35, `instr*#2352`}(bt, in*{in <- `in*`}, [])] -[visit_exp blocktype#35] -[visit_id blocktype#35] -[visit_exp `instr*#2352`] -[visit_id instr*#2352] +[check_dims] bt in +dims \ = bt, in +[visit_exp `IF%%ELSE%`_instr(bt, in*{in <- `in*`}, [])] [visit_exp (bt, in*{in <- `in*`}, [])] [visit_exp bt] [visit_id bt] @@ -73463,13 +60341,9 @@ dims \ = blocktype#35, bt, in, instr*#2352 [visit_exp `in*`] [visit_id in*] not free [visit_id in*] no dims -[check_dims] blocktype#37 bt in_1 in_2 instr*#2355 -dims \ = blocktype#37, bt, in_1, in_2, instr*#2355 -[visit_exp `IF%%ELSE%`_instr{blocktype#37, `instr*#2355`}(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`})] -[visit_exp blocktype#37] -[visit_id blocktype#37] -[visit_exp `instr*#2355`] -[visit_id instr*#2355] +[check_dims] bt in_1 in_2 +dims \ = bt, in_1, in_2 +[visit_exp `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`})] [visit_exp (bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`})] [visit_exp bt] [visit_id bt] @@ -73511,11 +60385,9 @@ dims \ = blocktype#37, bt, in_1, in_2, instr*#2355 [visit_id in_2*] no dims ps' = [check_dims] -[check_dims] tagidx#21 x -dims \ = tagidx#21, x -[visit_exp `THROW`_instr{tagidx#21}(x)] -[visit_exp tagidx#21] -[visit_id tagidx#21] +[check_dims] x +dims \ = x +[visit_exp `THROW`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -73525,33 +60397,25 @@ dims \ = tagidx#21, x dims \ = [visit_exp `THROW_REF`_instr] [visit_exp ()] -[check_dims] l labelidx#101 -dims \ = l, labelidx#101 -[visit_exp `BR`_instr{labelidx#101}(l)] -[visit_exp labelidx#101] -[visit_id labelidx#101] +[check_dims] l +dims \ = l +[visit_exp `BR`_instr(l)] [visit_exp (l)] [visit_exp l] [visit_id l] [visit_exp l] [visit_id l] not free -[check_dims] l labelidx#103 -dims \ = l, labelidx#103 -[visit_exp `BR_IF`_instr{labelidx#103}(l)] -[visit_exp labelidx#103] -[visit_id labelidx#103] +[check_dims] l +dims \ = l +[visit_exp `BR_IF`_instr(l)] [visit_exp (l)] [visit_exp l] [visit_id l] [visit_exp l] [visit_id l] not free -[check_dims] l l_n labelidx#105 labelidx*#54 -dims \ = l, l_n, labelidx#105, labelidx*#54 -[visit_exp `BR_TABLE`_instr{`labelidx*#54`, labelidx#105}(l*{l <- `l*`}, l_n)] -[visit_exp `labelidx*#54`] -[visit_id labelidx*#54] -[visit_exp labelidx#105] -[visit_id labelidx#105] +[check_dims] l l_n +dims \ = l, l_n +[visit_exp `BR_TABLE`_instr(l*{l <- `l*`}, l_n)] [visit_exp (l*{l <- `l*`}, l_n)] [visit_exp l*{l <- `l*`}] [scope_enter l] @@ -73579,29 +60443,21 @@ dims \ = l, l_n, labelidx#105, labelidx*#54 dims \ = [visit_exp `RETURN`_instr] [visit_exp ()] -[check_dims] funcidx#3163 x -dims \ = funcidx#3163, x -[visit_exp `CALL`_instr{funcidx#3163}(x)] -[visit_exp funcidx#3163] -[visit_id funcidx#3163] +[check_dims] x +dims \ = x +[visit_exp `CALL`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] [visit_exp x] [visit_id x] not free -[check_dims] tableidx#125 typeidx#1936 typeuse#69 x y -dims \ = tableidx#125, typeidx#1936, typeuse#69, x, y -[visit_exp `CALL_INDIRECT`_instr{tableidx#125, typeuse#69}(x, `_IDX`_typeuse{typeidx#1936}(y))] -[visit_exp tableidx#125] -[visit_id tableidx#125] -[visit_exp typeuse#69] -[visit_id typeuse#69] -[visit_exp (x, `_IDX`_typeuse{typeidx#1936}(y))] +[check_dims] x y +dims \ = x, y +[visit_exp `CALL_INDIRECT`_instr(x, `_IDX`_typeuse(y))] +[visit_exp (x, `_IDX`_typeuse(y))] [visit_exp x] [visit_id x] -[visit_exp `_IDX`_typeuse{typeidx#1936}(y)] -[visit_exp typeidx#1936] -[visit_id typeidx#1936] +[visit_exp `_IDX`_typeuse(y)] [visit_exp (y)] [visit_exp y] [visit_id y] @@ -73609,29 +60465,21 @@ dims \ = tableidx#125, typeidx#1936, typeuse#69, x, y [visit_id y] not free [visit_exp x] [visit_id x] not free -[check_dims] funcidx#3165 x -dims \ = funcidx#3165, x -[visit_exp `RETURN_CALL`_instr{funcidx#3165}(x)] -[visit_exp funcidx#3165] -[visit_id funcidx#3165] +[check_dims] x +dims \ = x +[visit_exp `RETURN_CALL`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] [visit_exp x] [visit_id x] not free -[check_dims] tableidx#127 typeidx#1938 typeuse#71 x y -dims \ = tableidx#127, typeidx#1938, typeuse#71, x, y -[visit_exp `RETURN_CALL_INDIRECT`_instr{tableidx#127, typeuse#71}(x, `_IDX`_typeuse{typeidx#1938}(y))] -[visit_exp tableidx#127] -[visit_id tableidx#127] -[visit_exp typeuse#71] -[visit_id typeuse#71] -[visit_exp (x, `_IDX`_typeuse{typeidx#1938}(y))] +[check_dims] x y +dims \ = x, y +[visit_exp `RETURN_CALL_INDIRECT`_instr(x, `_IDX`_typeuse(y))] +[visit_exp (x, `_IDX`_typeuse(y))] [visit_exp x] [visit_id x] -[visit_exp `_IDX`_typeuse{typeidx#1938}(y)] -[visit_exp typeidx#1938] -[visit_id typeidx#1938] +[visit_exp `_IDX`_typeuse(y)] [visit_exp (y)] [visit_exp y] [visit_id y] @@ -73639,47 +60487,33 @@ dims \ = tableidx#127, typeidx#1938, typeuse#71, x, y [visit_id y] not free [visit_exp x] [visit_id x] not free -[check_dims] typeidx#1940 typeuse#73 x -dims \ = typeidx#1940, typeuse#73, x -[visit_exp `CALL_REF`_instr{typeuse#73}(`_IDX`_typeuse{typeidx#1940}(x))] -[visit_exp typeuse#73] -[visit_id typeuse#73] -[visit_exp (`_IDX`_typeuse{typeidx#1940}(x))] -[visit_exp `_IDX`_typeuse{typeidx#1940}(x)] -[visit_exp typeidx#1940] -[visit_id typeidx#1940] +[check_dims] x +dims \ = x +[visit_exp `CALL_REF`_instr(`_IDX`_typeuse(x))] +[visit_exp (`_IDX`_typeuse(x))] +[visit_exp `_IDX`_typeuse(x)] [visit_exp (x)] [visit_exp x] [visit_id x] [visit_exp x] [visit_id x] not free -[check_dims] typeidx#1942 typeuse#75 x -dims \ = typeidx#1942, typeuse#75, x -[visit_exp `RETURN_CALL_REF`_instr{typeuse#75}(`_IDX`_typeuse{typeidx#1942}(x))] -[visit_exp typeuse#75] -[visit_id typeuse#75] -[visit_exp (`_IDX`_typeuse{typeidx#1942}(x))] -[visit_exp `_IDX`_typeuse{typeidx#1942}(x)] -[visit_exp typeidx#1942] -[visit_id typeidx#1942] +[check_dims] x +dims \ = x +[visit_exp `RETURN_CALL_REF`_instr(`_IDX`_typeuse(x))] +[visit_exp (`_IDX`_typeuse(x))] +[visit_exp `_IDX`_typeuse(x)] [visit_exp (x)] [visit_exp x] [visit_id x] [visit_exp x] [visit_id x] not free -[check_dims] X*#13196 blocktype#39 bt c in instr*#2358 -dims \ = X*#13196, blocktype#39, bt, c, in, instr*#2358 -[visit_exp `TRY_TABLE`_instr{blocktype#39, `instr*#2358`}(bt, `%`_list{`X*#13196`}(c*{c <- `c*`}), in*{in <- `in*`})] -[visit_exp blocktype#39] -[visit_id blocktype#39] -[visit_exp `instr*#2358`] -[visit_id instr*#2358] -[visit_exp (bt, `%`_list{`X*#13196`}(c*{c <- `c*`}), in*{in <- `in*`})] +[check_dims] bt c in +dims \ = bt, c, in +[visit_exp `TRY_TABLE`_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`})] +[visit_exp (bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`})] [visit_exp bt] [visit_id bt] -[visit_exp `%`_list{`X*#13196`}(c*{c <- `c*`})] -[visit_exp `X*#13196`] -[visit_id X*#13196] +[visit_exp `%`_list(c*{c <- `c*`})] [visit_exp (c*{c <- `c*`})] [visit_exp c*{c <- `c*`}] [scope_enter c] @@ -73718,41 +60552,29 @@ dims \ = X*#13196, blocktype#39, bt, c, in, instr*#2358 [visit_exp `in*`] [visit_id in*] not free [visit_id in*] no dims -[check_dims] l labelidx#107 -dims \ = l, labelidx#107 -[visit_exp `BR_ON_NULL`_instr{labelidx#107}(l)] -[visit_exp labelidx#107] -[visit_id labelidx#107] +[check_dims] l +dims \ = l +[visit_exp `BR_ON_NULL`_instr(l)] [visit_exp (l)] [visit_exp l] [visit_id l] [visit_exp l] [visit_id l] not free -[check_dims] l labelidx#109 -dims \ = l, labelidx#109 -[visit_exp `BR_ON_NON_NULL`_instr{labelidx#109}(l)] -[visit_exp labelidx#109] -[visit_id labelidx#109] +[check_dims] l +dims \ = l +[visit_exp `BR_ON_NON_NULL`_instr(l)] [visit_exp (l)] [visit_exp l] [visit_id l] [visit_exp l] [visit_id l] not free -[check_dims] heaptype#1641 heaptype#1653 ht_1 ht_2 i#50095 l labelidx#111 null?#1579 null?#1591 null_1 null_2 reftype#3963 -dims \ = heaptype#1641, heaptype#1653, ht_1, ht_2, i#50095, l, labelidx#111, null?#1579, null?#1591, null_1, null_2, reftype#3963 -[visit_exp `BR_ON_CAST`_instr{labelidx#111, reftype#3963}(l, `REF`_reftype{`null?#1579`, heaptype#1641}(null_1?{null_1 <- `null_1?`}, ht_1), `REF`_reftype{`null?#1591`, heaptype#1653}(null_2?{null_2 <- `null_2?`}, ht_2))] -[visit_exp labelidx#111] -[visit_id labelidx#111] -[visit_exp reftype#3963] -[visit_id reftype#3963] -[visit_exp (l, `REF`_reftype{`null?#1579`, heaptype#1641}(null_1?{null_1 <- `null_1?`}, ht_1), `REF`_reftype{`null?#1591`, heaptype#1653}(null_2?{null_2 <- `null_2?`}, ht_2))] +[check_dims] ht_1 ht_2 l null_1 null_2 +dims \ = ht_1, ht_2, l, null_1, null_2 +[visit_exp `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))] +[visit_exp (l, `REF`_reftype(null_1?{null_1 <- `null_1?`}, ht_1), `REF`_reftype(null_2?{null_2 <- `null_2?`}, ht_2))] [visit_exp l] [visit_id l] -[visit_exp `REF`_reftype{`null?#1579`, heaptype#1641}(null_1?{null_1 <- `null_1?`}, ht_1)] -[visit_exp `null?#1579`] -[visit_id null?#1579] -[visit_exp heaptype#1641] -[visit_id heaptype#1641] +[visit_exp `REF`_reftype(null_1?{null_1 <- `null_1?`}, ht_1)] [visit_exp (null_1?{null_1 <- `null_1?`}, ht_1)] [visit_exp null_1?{null_1 <- `null_1?`}] [scope_enter null_1] @@ -73765,11 +60587,7 @@ dims \ = heaptype#1641, heaptype#1653, ht_1, ht_2, i#50095, l, labelidx#111, nu [visit_id null_1?] [visit_exp ht_1] [visit_id ht_1] -[visit_exp `REF`_reftype{`null?#1591`, heaptype#1653}(null_2?{null_2 <- `null_2?`}, ht_2)] -[visit_exp `null?#1591`] -[visit_id null?#1591] -[visit_exp heaptype#1653] -[visit_id heaptype#1653] +[visit_exp `REF`_reftype(null_2?{null_2 <- `null_2?`}, ht_2)] [visit_exp (null_2?{null_2 <- `null_2?`}, ht_2)] [visit_exp null_2?{null_2 <- `null_2?`}] [scope_enter null_2] @@ -73782,9 +60600,7 @@ dims \ = heaptype#1641, heaptype#1653, ht_1, ht_2, i#50095, l, labelidx#111, nu [visit_id null_2?] [visit_exp ht_2] [visit_id ht_2] -[visit_exp `%`_u32{i#50095}(24)] -[visit_exp i#50095] -[visit_id i#50095] +[visit_exp `%`_u32(24)] [visit_exp (24)] [visit_exp 24] [visit_exp (null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`})] @@ -73812,21 +60628,13 @@ dims \ = heaptype#1641, heaptype#1653, ht_1, ht_2, i#50095, l, labelidx#111, nu [visit_id ht_1] not free [visit_exp ht_2] [visit_id ht_2] not free -[check_dims] heaptype#1665 heaptype#1677 ht_1 ht_2 i#50147 l labelidx#113 null?#1603 null?#1615 null_1 null_2 reftype#3966 -dims \ = heaptype#1665, heaptype#1677, ht_1, ht_2, i#50147, l, labelidx#113, null?#1603, null?#1615, null_1, null_2, reftype#3966 -[visit_exp `BR_ON_CAST_FAIL`_instr{labelidx#113, reftype#3966}(l, `REF`_reftype{`null?#1603`, heaptype#1665}(null_1?{null_1 <- `null_1?`}, ht_1), `REF`_reftype{`null?#1615`, heaptype#1677}(null_2?{null_2 <- `null_2?`}, ht_2))] -[visit_exp labelidx#113] -[visit_id labelidx#113] -[visit_exp reftype#3966] -[visit_id reftype#3966] -[visit_exp (l, `REF`_reftype{`null?#1603`, heaptype#1665}(null_1?{null_1 <- `null_1?`}, ht_1), `REF`_reftype{`null?#1615`, heaptype#1677}(null_2?{null_2 <- `null_2?`}, ht_2))] +[check_dims] ht_1 ht_2 l null_1 null_2 +dims \ = ht_1, ht_2, l, null_1, null_2 +[visit_exp `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))] +[visit_exp (l, `REF`_reftype(null_1?{null_1 <- `null_1?`}, ht_1), `REF`_reftype(null_2?{null_2 <- `null_2?`}, ht_2))] [visit_exp l] [visit_id l] -[visit_exp `REF`_reftype{`null?#1603`, heaptype#1665}(null_1?{null_1 <- `null_1?`}, ht_1)] -[visit_exp `null?#1603`] -[visit_id null?#1603] -[visit_exp heaptype#1665] -[visit_id heaptype#1665] +[visit_exp `REF`_reftype(null_1?{null_1 <- `null_1?`}, ht_1)] [visit_exp (null_1?{null_1 <- `null_1?`}, ht_1)] [visit_exp null_1?{null_1 <- `null_1?`}] [scope_enter null_1] @@ -73839,11 +60647,7 @@ dims \ = heaptype#1665, heaptype#1677, ht_1, ht_2, i#50147, l, labelidx#113, nu [visit_id null_1?] [visit_exp ht_1] [visit_id ht_1] -[visit_exp `REF`_reftype{`null?#1615`, heaptype#1677}(null_2?{null_2 <- `null_2?`}, ht_2)] -[visit_exp `null?#1615`] -[visit_id null?#1615] -[visit_exp heaptype#1677] -[visit_id heaptype#1677] +[visit_exp `REF`_reftype(null_2?{null_2 <- `null_2?`}, ht_2)] [visit_exp (null_2?{null_2 <- `null_2?`}, ht_2)] [visit_exp null_2?{null_2 <- `null_2?`}] [scope_enter null_2] @@ -73856,9 +60660,7 @@ dims \ = heaptype#1665, heaptype#1677, ht_1, ht_2, i#50147, l, labelidx#113, nu [visit_id null_2?] [visit_exp ht_2] [visit_id ht_2] -[visit_exp `%`_u32{i#50147}(25)] -[visit_exp i#50147] -[visit_id i#50147] +[visit_exp `%`_u32(25)] [visit_exp (25)] [visit_exp 25] [visit_exp (null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`})] @@ -73888,13 +60690,9 @@ dims \ = heaptype#1665, heaptype#1677, ht_1, ht_2, i#50147, l, labelidx#113, nu [visit_id ht_2] not free ps' = [check_dims] -[check_dims] l labelidx#115 tagidx#23 x -dims \ = l, labelidx#115, tagidx#23, x -[visit_exp `CATCH`_catch{tagidx#23, labelidx#115}(x, l)] -[visit_exp tagidx#23] -[visit_id tagidx#23] -[visit_exp labelidx#115] -[visit_id labelidx#115] +[check_dims] l x +dims \ = l, x +[visit_exp `CATCH`_catch(x, l)] [visit_exp (x, l)] [visit_exp x] [visit_id x] @@ -73904,13 +60702,9 @@ dims \ = l, labelidx#115, tagidx#23, x [visit_id x] not free [visit_exp l] [visit_id l] not free -[check_dims] l labelidx#117 tagidx#25 x -dims \ = l, labelidx#117, tagidx#25, x -[visit_exp `CATCH_REF`_catch{tagidx#25, labelidx#117}(x, l)] -[visit_exp tagidx#25] -[visit_id tagidx#25] -[visit_exp labelidx#117] -[visit_id labelidx#117] +[check_dims] l x +dims \ = l, x +[visit_exp `CATCH_REF`_catch(x, l)] [visit_exp (x, l)] [visit_exp x] [visit_id x] @@ -73920,21 +60714,17 @@ dims \ = l, labelidx#117, tagidx#25, x [visit_id x] not free [visit_exp l] [visit_id l] not free -[check_dims] l labelidx#119 -dims \ = l, labelidx#119 -[visit_exp `CATCH_ALL`_catch{labelidx#119}(l)] -[visit_exp labelidx#119] -[visit_id labelidx#119] +[check_dims] l +dims \ = l +[visit_exp `CATCH_ALL`_catch(l)] [visit_exp (l)] [visit_exp l] [visit_id l] [visit_exp l] [visit_id l] not free -[check_dims] l labelidx#121 -dims \ = l, labelidx#121 -[visit_exp `CATCH_ALL_REF`_catch{labelidx#121}(l)] -[visit_exp labelidx#121] -[visit_id labelidx#121] +[check_dims] l +dims \ = l +[visit_exp `CATCH_ALL_REF`_catch(l)] [visit_exp (l)] [visit_exp l] [visit_id l] @@ -73942,31 +60732,25 @@ dims \ = l, labelidx#121 [visit_id l] not free ps' = [check_dims] -[check_dims] localidx#21 x -dims \ = localidx#21, x -[visit_exp `LOCAL.GET`_instr{localidx#21}(x)] -[visit_exp localidx#21] -[visit_id localidx#21] +[check_dims] x +dims \ = x +[visit_exp `LOCAL.GET`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] [visit_exp x] [visit_id x] not free -[check_dims] localidx#23 x -dims \ = localidx#23, x -[visit_exp `LOCAL.SET`_instr{localidx#23}(x)] -[visit_exp localidx#23] -[visit_id localidx#23] +[check_dims] x +dims \ = x +[visit_exp `LOCAL.SET`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] [visit_exp x] [visit_id x] not free -[check_dims] localidx#25 x -dims \ = localidx#25, x -[visit_exp `LOCAL.TEE`_instr{localidx#25}(x)] -[visit_exp localidx#25] -[visit_id localidx#25] +[check_dims] x +dims \ = x +[visit_exp `LOCAL.TEE`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -73974,21 +60758,17 @@ dims \ = localidx#25, x [visit_id x] not free ps' = [check_dims] -[check_dims] globalidx#25 x -dims \ = globalidx#25, x -[visit_exp `GLOBAL.GET`_instr{globalidx#25}(x)] -[visit_exp globalidx#25] -[visit_id globalidx#25] +[check_dims] x +dims \ = x +[visit_exp `GLOBAL.GET`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] [visit_exp x] [visit_id x] not free -[check_dims] globalidx#27 x -dims \ = globalidx#27, x -[visit_exp `GLOBAL.SET`_instr{globalidx#27}(x)] -[visit_exp globalidx#27] -[visit_id globalidx#27] +[check_dims] x +dims \ = x +[visit_exp `GLOBAL.SET`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -73996,122 +60776,92 @@ dims \ = globalidx#27, x [visit_id x] not free ps' = [check_dims] -[check_dims] tableidx#129 x -dims \ = tableidx#129, x -[visit_exp `TABLE.GET`_instr{tableidx#129}(x)] -[visit_exp tableidx#129] -[visit_id tableidx#129] +[check_dims] x +dims \ = x +[visit_exp `TABLE.GET`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] [visit_exp x] [visit_id x] not free -[check_dims] tableidx#131 x -dims \ = tableidx#131, x -[visit_exp `TABLE.SET`_instr{tableidx#131}(x)] -[visit_exp tableidx#131] -[visit_id tableidx#131] +[check_dims] x +dims \ = x +[visit_exp `TABLE.SET`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] [visit_exp x] [visit_id x] not free -[check_dims] elemidx#49 i#50586 tableidx#133 x y -dims \ = elemidx#49, i#50586, tableidx#133, x, y -[visit_exp `TABLE.INIT`_instr{tableidx#133, elemidx#49}(x, y)] -[visit_exp tableidx#133] -[visit_id tableidx#133] -[visit_exp elemidx#49] -[visit_id elemidx#49] +[check_dims] x y +dims \ = x, y +[visit_exp `TABLE.INIT`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] [visit_exp y] [visit_id y] -[visit_exp `%`_u32{i#50586}(12)] -[visit_exp i#50586] -[visit_id i#50586] +[visit_exp `%`_u32(12)] [visit_exp (12)] [visit_exp 12] [visit_exp y] [visit_id y] not free [visit_exp x] [visit_id x] not free -[check_dims] elemidx#51 i#50673 x -dims \ = elemidx#51, i#50673, x -[visit_exp `ELEM.DROP`_instr{elemidx#51}(x)] -[visit_exp elemidx#51] -[visit_id elemidx#51] +[check_dims] x +dims \ = x +[visit_exp `ELEM.DROP`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%`_u32{i#50673}(13)] -[visit_exp i#50673] -[visit_id i#50673] +[visit_exp `%`_u32(13)] [visit_exp (13)] [visit_exp 13] [visit_exp x] [visit_id x] not free -[check_dims] i#50729 tableidx#135 x_1 x_2 -dims \ = i#50729, tableidx#135, x_1, x_2 -[visit_exp `TABLE.COPY`_instr{tableidx#135}(x_1, x_2)] -[visit_exp tableidx#135] -[visit_id tableidx#135] +[check_dims] x_1 x_2 +dims \ = x_1, x_2 +[visit_exp `TABLE.COPY`_instr(x_1, x_2)] [visit_exp (x_1, x_2)] [visit_exp x_1] [visit_id x_1] [visit_exp x_2] [visit_id x_2] -[visit_exp `%`_u32{i#50729}(14)] -[visit_exp i#50729] -[visit_id i#50729] +[visit_exp `%`_u32(14)] [visit_exp (14)] [visit_exp 14] [visit_exp x_1] [visit_id x_1] not free [visit_exp x_2] [visit_id x_2] not free -[check_dims] i#50816 tableidx#138 x -dims \ = i#50816, tableidx#138, x -[visit_exp `TABLE.GROW`_instr{tableidx#138}(x)] -[visit_exp tableidx#138] -[visit_id tableidx#138] +[check_dims] x +dims \ = x +[visit_exp `TABLE.GROW`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%`_u32{i#50816}(15)] -[visit_exp i#50816] -[visit_id i#50816] +[visit_exp `%`_u32(15)] [visit_exp (15)] [visit_exp 15] [visit_exp x] [visit_id x] not free -[check_dims] i#50872 tableidx#140 x -dims \ = i#50872, tableidx#140, x -[visit_exp `TABLE.SIZE`_instr{tableidx#140}(x)] -[visit_exp tableidx#140] -[visit_id tableidx#140] +[check_dims] x +dims \ = x +[visit_exp `TABLE.SIZE`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%`_u32{i#50872}(16)] -[visit_exp i#50872] -[visit_id i#50872] +[visit_exp `%`_u32(16)] [visit_exp (16)] [visit_exp 16] [visit_exp x] [visit_id x] not free -[check_dims] i#50928 tableidx#142 x -dims \ = i#50928, tableidx#142, x -[visit_exp `TABLE.FILL`_instr{tableidx#142}(x)] -[visit_exp tableidx#142] -[visit_id tableidx#142] +[check_dims] x +dims \ = x +[visit_exp `TABLE.FILL`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%`_u32{i#50928}(17)] -[visit_exp i#50928] -[visit_id i#50928] +[visit_exp `%`_u32(17)] [visit_exp (17)] [visit_exp 17] [visit_exp x] @@ -74119,40 +60869,26 @@ dims \ = i#50928, tableidx#142, x [check_dims] ps' = [check_dims] -[check_dims] i#50986 i#51013 i#51035 i#51057 i#51079 m n u32#35 u64#553 -dims \ = i#50986, i#51013, i#51035, i#51057, i#51079, m, n, u32#35, u64#553 -[visit_exp (`%`_memidx{i#51035}(0), {`ALIGN`{u32#35} `%`_u32{i#51057}(n), `OFFSET`{u64#553} `%`_u64{i#51079}(m)})] -[visit_exp `%`_memidx{i#51035}(0)] -[visit_exp i#51035] -[visit_id i#51035] +[check_dims] m n +dims \ = m, n +[visit_exp (`%`_memidx(0), {`ALIGN` `%`_u32(n), `OFFSET` `%`_u64(m)})] +[visit_exp `%`_memidx(0)] [visit_exp (0)] [visit_exp 0] -[visit_exp {`ALIGN`{u32#35} `%`_u32{i#51057}(n), `OFFSET`{u64#553} `%`_u64{i#51079}(m)}] -[visit_exp u32#35] -[visit_id u32#35] -[visit_exp `%`_u32{i#51057}(n)] -[visit_exp i#51057] -[visit_id i#51057] +[visit_exp {`ALIGN` `%`_u32(n), `OFFSET` `%`_u64(m)}] +[visit_exp `%`_u32(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp u64#553] -[visit_id u64#553] -[visit_exp `%`_u64{i#51079}(m)] -[visit_exp i#51079] -[visit_id i#51079] +[visit_exp `%`_u64(m)] [visit_exp (m)] [visit_exp m] [visit_id m] -[visit_exp `%`_u32{i#50986}(n)] -[visit_exp i#50986] -[visit_id i#50986] +[visit_exp `%`_u32(n)] [visit_exp (n)] [visit_exp n] [visit_id n] not free -[visit_exp `%`_u64{i#51013}(m)] -[visit_exp i#51013] -[visit_id i#51013] +[visit_exp `%`_u64(m)] [visit_exp (m)] [visit_exp m] [visit_id m] not free @@ -74162,17 +60898,13 @@ dims \ = i#50986, i#51013, i#51035, i#51057, i#51079, m, n, u32#35, u64#553 [visit_exp (2 ^ 6)] [visit_exp 2] [visit_exp 6] -[check_dims] i#51104 i#51148 i#51182 i#51204 m n u32#36 u64#554 x -dims \ = i#51104, i#51148, i#51182, i#51204, m, n, u32#36, u64#554, x -[visit_exp (x, {`ALIGN`{u32#36} `%`_u32{i#51182}((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat)), `OFFSET`{u64#554} `%`_u64{i#51204}(m)})] +[check_dims] m n x +dims \ = m, n, x +[visit_exp (x, {`ALIGN` `%`_u32((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat)), `OFFSET` `%`_u64(m)})] [visit_exp x] [visit_id x] -[visit_exp {`ALIGN`{u32#36} `%`_u32{i#51182}((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat)), `OFFSET`{u64#554} `%`_u64{i#51204}(m)}] -[visit_exp u32#36] -[visit_id u32#36] -[visit_exp `%`_u32{i#51182}((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat))] -[visit_exp i#51182] -[visit_id i#51182] +[visit_exp {`ALIGN` `%`_u32((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat)), `OFFSET` `%`_u64(m)}] +[visit_exp `%`_u32((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat))] [visit_exp ((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat))] [visit_exp (((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat)] [visit_exp ((n : nat <:> int) - ((2 ^ 6) : nat <:> int))] @@ -74183,25 +60915,17 @@ dims \ = i#51104, i#51148, i#51182, i#51204, m, n, u32#36, u64#554, x [visit_exp (2 ^ 6)] [visit_exp 2] [visit_exp 6] -[visit_exp u64#554] -[visit_id u64#554] -[visit_exp `%`_u64{i#51204}(m)] -[visit_exp i#51204] -[visit_id i#51204] +[visit_exp `%`_u64(m)] [visit_exp (m)] [visit_exp m] [visit_id m] -[visit_exp `%`_u32{i#51104}(n)] -[visit_exp i#51104] -[visit_id i#51104] +[visit_exp `%`_u32(n)] [visit_exp (n)] [visit_exp n] [visit_id n] not free [visit_exp x] [visit_id x] not free -[visit_exp `%`_u64{i#51148}(m)] -[visit_exp i#51148] -[visit_id i#51148] +[visit_exp `%`_u64(m)] [visit_exp (m)] [visit_exp m] [visit_id m] not free @@ -74220,15 +60944,9 @@ dims \ = i#51104, i#51148, i#51182, i#51204, m, n, u32#36, u64#554, x [visit_exp 7] ps' = [check_dims] -[check_dims] ao memarg#91 memidx#171 numtype?#21 x -dims \ = ao, memarg#91, memidx#171, numtype?#21, x -[visit_exp `LOAD`_instr{`numtype?#21`, memidx#171, memarg#91}(`I32`_numtype, ?(), x, ao)] -[visit_exp `numtype?#21`] -[visit_id numtype?#21] -[visit_exp memidx#171] -[visit_id memidx#171] -[visit_exp memarg#91] -[visit_id memarg#91] +[check_dims] ao x +dims \ = ao, x +[visit_exp `LOAD`_instr(`I32`_numtype, ?(), x, ao)] [visit_exp (`I32`_numtype, ?(), x, ao)] [visit_exp `I32`_numtype] [visit_exp ()] @@ -74242,15 +60960,9 @@ dims \ = ao, memarg#91, memidx#171, numtype?#21, x [visit_id x] not free [visit_exp ao] [visit_id ao] not free -[check_dims] ao memarg#93 memidx#173 numtype?#22 x -dims \ = ao, memarg#93, memidx#173, numtype?#22, x -[visit_exp `LOAD`_instr{`numtype?#22`, memidx#173, memarg#93}(`I64`_numtype, ?(), x, ao)] -[visit_exp `numtype?#22`] -[visit_id numtype?#22] -[visit_exp memidx#173] -[visit_id memidx#173] -[visit_exp memarg#93] -[visit_id memarg#93] +[check_dims] ao x +dims \ = ao, x +[visit_exp `LOAD`_instr(`I64`_numtype, ?(), x, ao)] [visit_exp (`I64`_numtype, ?(), x, ao)] [visit_exp `I64`_numtype] [visit_exp ()] @@ -74264,15 +60976,9 @@ dims \ = ao, memarg#93, memidx#173, numtype?#22, x [visit_id x] not free [visit_exp ao] [visit_id ao] not free -[check_dims] ao memarg#95 memidx#175 numtype?#23 x -dims \ = ao, memarg#95, memidx#175, numtype?#23, x -[visit_exp `LOAD`_instr{`numtype?#23`, memidx#175, memarg#95}(`F32`_numtype, ?(), x, ao)] -[visit_exp `numtype?#23`] -[visit_id numtype?#23] -[visit_exp memidx#175] -[visit_id memidx#175] -[visit_exp memarg#95] -[visit_id memarg#95] +[check_dims] ao x +dims \ = ao, x +[visit_exp `LOAD`_instr(`F32`_numtype, ?(), x, ao)] [visit_exp (`F32`_numtype, ?(), x, ao)] [visit_exp `F32`_numtype] [visit_exp ()] @@ -74286,15 +60992,9 @@ dims \ = ao, memarg#95, memidx#175, numtype?#23, x [visit_id x] not free [visit_exp ao] [visit_id ao] not free -[check_dims] ao memarg#97 memidx#177 numtype?#24 x -dims \ = ao, memarg#97, memidx#177, numtype?#24, x -[visit_exp `LOAD`_instr{`numtype?#24`, memidx#177, memarg#97}(`F64`_numtype, ?(), x, ao)] -[visit_exp `numtype?#24`] -[visit_id numtype?#24] -[visit_exp memidx#177] -[visit_id memidx#177] -[visit_exp memarg#97] -[visit_id memarg#97] +[check_dims] ao x +dims \ = ao, x +[visit_exp `LOAD`_instr(`F64`_numtype, ?(), x, ao)] [visit_exp (`F64`_numtype, ?(), x, ao)] [visit_exp `F64`_numtype] [visit_exp ()] @@ -74308,30 +61008,16 @@ dims \ = ao, memarg#97, memidx#177, numtype?#24, x [visit_id x] not free [visit_exp ao] [visit_id ao] not free -[check_dims] ao i#51346 i#51353 memarg#99 memidx#179 numtype?#25 sx#426 sz#558 x -dims \ = ao, i#51346, i#51353, memarg#99, memidx#179, numtype?#25, sx#426, sz#558, x -[visit_exp `LOAD`_instr{`numtype?#25`, memidx#179, memarg#99}(`I32`_numtype, ?(`%_%`_loadop_{sz#558, sx#426, i#51346}(`%`_sz{i#51353}(8), `S`_sx)), x, ao)] -[visit_exp `numtype?#25`] -[visit_id numtype?#25] -[visit_exp memidx#179] -[visit_id memidx#179] -[visit_exp memarg#99] -[visit_id memarg#99] -[visit_exp (`I32`_numtype, ?(`%_%`_loadop_{sz#558, sx#426, i#51346}(`%`_sz{i#51353}(8), `S`_sx)), x, ao)] +[check_dims] ao x +dims \ = ao, x +[visit_exp `LOAD`_instr(`I32`_numtype, ?(`%_%`_loadop_(`%`_sz(8), `S`_sx)), x, ao)] +[visit_exp (`I32`_numtype, ?(`%_%`_loadop_(`%`_sz(8), `S`_sx)), x, ao)] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp ?(`%_%`_loadop_{sz#558, sx#426, i#51346}(`%`_sz{i#51353}(8), `S`_sx))] -[visit_exp `%_%`_loadop_{sz#558, sx#426, i#51346}(`%`_sz{i#51353}(8), `S`_sx)] -[visit_exp sz#558] -[visit_id sz#558] -[visit_exp sx#426] -[visit_id sx#426] -[visit_exp i#51346] -[visit_id i#51346] -[visit_exp (`%`_sz{i#51353}(8), `S`_sx)] -[visit_exp `%`_sz{i#51353}(8)] -[visit_exp i#51353] -[visit_id i#51353] +[visit_exp ?(`%_%`_loadop_(`%`_sz(8), `S`_sx))] +[visit_exp `%_%`_loadop_(`%`_sz(8), `S`_sx)] +[visit_exp (`%`_sz(8), `S`_sx)] +[visit_exp `%`_sz(8)] [visit_exp (8)] [visit_exp 8] [visit_exp `S`_sx] @@ -74345,30 +61031,16 @@ dims \ = ao, i#51346, i#51353, memarg#99, memidx#179, numtype?#25, sx#426, sz#5 [visit_id x] not free [visit_exp ao] [visit_id ao] not free -[check_dims] ao i#51405 i#51412 memarg#101 memidx#181 numtype?#26 sx#444 sz#576 x -dims \ = ao, i#51405, i#51412, memarg#101, memidx#181, numtype?#26, sx#444, sz#576, x -[visit_exp `LOAD`_instr{`numtype?#26`, memidx#181, memarg#101}(`I32`_numtype, ?(`%_%`_loadop_{sz#576, sx#444, i#51405}(`%`_sz{i#51412}(8), `U`_sx)), x, ao)] -[visit_exp `numtype?#26`] -[visit_id numtype?#26] -[visit_exp memidx#181] -[visit_id memidx#181] -[visit_exp memarg#101] -[visit_id memarg#101] -[visit_exp (`I32`_numtype, ?(`%_%`_loadop_{sz#576, sx#444, i#51405}(`%`_sz{i#51412}(8), `U`_sx)), x, ao)] +[check_dims] ao x +dims \ = ao, x +[visit_exp `LOAD`_instr(`I32`_numtype, ?(`%_%`_loadop_(`%`_sz(8), `U`_sx)), x, ao)] +[visit_exp (`I32`_numtype, ?(`%_%`_loadop_(`%`_sz(8), `U`_sx)), x, ao)] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp ?(`%_%`_loadop_{sz#576, sx#444, i#51405}(`%`_sz{i#51412}(8), `U`_sx))] -[visit_exp `%_%`_loadop_{sz#576, sx#444, i#51405}(`%`_sz{i#51412}(8), `U`_sx)] -[visit_exp sz#576] -[visit_id sz#576] -[visit_exp sx#444] -[visit_id sx#444] -[visit_exp i#51405] -[visit_id i#51405] -[visit_exp (`%`_sz{i#51412}(8), `U`_sx)] -[visit_exp `%`_sz{i#51412}(8)] -[visit_exp i#51412] -[visit_id i#51412] +[visit_exp ?(`%_%`_loadop_(`%`_sz(8), `U`_sx))] +[visit_exp `%_%`_loadop_(`%`_sz(8), `U`_sx)] +[visit_exp (`%`_sz(8), `U`_sx)] +[visit_exp `%`_sz(8)] [visit_exp (8)] [visit_exp 8] [visit_exp `U`_sx] @@ -74382,30 +61054,16 @@ dims \ = ao, i#51405, i#51412, memarg#101, memidx#181, numtype?#26, sx#444, sz# [visit_id x] not free [visit_exp ao] [visit_id ao] not free -[check_dims] ao i#51464 i#51471 memarg#103 memidx#183 numtype?#27 sx#462 sz#594 x -dims \ = ao, i#51464, i#51471, memarg#103, memidx#183, numtype?#27, sx#462, sz#594, x -[visit_exp `LOAD`_instr{`numtype?#27`, memidx#183, memarg#103}(`I32`_numtype, ?(`%_%`_loadop_{sz#594, sx#462, i#51464}(`%`_sz{i#51471}(16), `S`_sx)), x, ao)] -[visit_exp `numtype?#27`] -[visit_id numtype?#27] -[visit_exp memidx#183] -[visit_id memidx#183] -[visit_exp memarg#103] -[visit_id memarg#103] -[visit_exp (`I32`_numtype, ?(`%_%`_loadop_{sz#594, sx#462, i#51464}(`%`_sz{i#51471}(16), `S`_sx)), x, ao)] +[check_dims] ao x +dims \ = ao, x +[visit_exp `LOAD`_instr(`I32`_numtype, ?(`%_%`_loadop_(`%`_sz(16), `S`_sx)), x, ao)] +[visit_exp (`I32`_numtype, ?(`%_%`_loadop_(`%`_sz(16), `S`_sx)), x, ao)] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp ?(`%_%`_loadop_{sz#594, sx#462, i#51464}(`%`_sz{i#51471}(16), `S`_sx))] -[visit_exp `%_%`_loadop_{sz#594, sx#462, i#51464}(`%`_sz{i#51471}(16), `S`_sx)] -[visit_exp sz#594] -[visit_id sz#594] -[visit_exp sx#462] -[visit_id sx#462] -[visit_exp i#51464] -[visit_id i#51464] -[visit_exp (`%`_sz{i#51471}(16), `S`_sx)] -[visit_exp `%`_sz{i#51471}(16)] -[visit_exp i#51471] -[visit_id i#51471] +[visit_exp ?(`%_%`_loadop_(`%`_sz(16), `S`_sx))] +[visit_exp `%_%`_loadop_(`%`_sz(16), `S`_sx)] +[visit_exp (`%`_sz(16), `S`_sx)] +[visit_exp `%`_sz(16)] [visit_exp (16)] [visit_exp 16] [visit_exp `S`_sx] @@ -74419,30 +61077,16 @@ dims \ = ao, i#51464, i#51471, memarg#103, memidx#183, numtype?#27, sx#462, sz# [visit_id x] not free [visit_exp ao] [visit_id ao] not free -[check_dims] ao i#51523 i#51530 memarg#105 memidx#185 numtype?#28 sx#480 sz#612 x -dims \ = ao, i#51523, i#51530, memarg#105, memidx#185, numtype?#28, sx#480, sz#612, x -[visit_exp `LOAD`_instr{`numtype?#28`, memidx#185, memarg#105}(`I32`_numtype, ?(`%_%`_loadop_{sz#612, sx#480, i#51523}(`%`_sz{i#51530}(16), `U`_sx)), x, ao)] -[visit_exp `numtype?#28`] -[visit_id numtype?#28] -[visit_exp memidx#185] -[visit_id memidx#185] -[visit_exp memarg#105] -[visit_id memarg#105] -[visit_exp (`I32`_numtype, ?(`%_%`_loadop_{sz#612, sx#480, i#51523}(`%`_sz{i#51530}(16), `U`_sx)), x, ao)] +[check_dims] ao x +dims \ = ao, x +[visit_exp `LOAD`_instr(`I32`_numtype, ?(`%_%`_loadop_(`%`_sz(16), `U`_sx)), x, ao)] +[visit_exp (`I32`_numtype, ?(`%_%`_loadop_(`%`_sz(16), `U`_sx)), x, ao)] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp ?(`%_%`_loadop_{sz#612, sx#480, i#51523}(`%`_sz{i#51530}(16), `U`_sx))] -[visit_exp `%_%`_loadop_{sz#612, sx#480, i#51523}(`%`_sz{i#51530}(16), `U`_sx)] -[visit_exp sz#612] -[visit_id sz#612] -[visit_exp sx#480] -[visit_id sx#480] -[visit_exp i#51523] -[visit_id i#51523] -[visit_exp (`%`_sz{i#51530}(16), `U`_sx)] -[visit_exp `%`_sz{i#51530}(16)] -[visit_exp i#51530] -[visit_id i#51530] +[visit_exp ?(`%_%`_loadop_(`%`_sz(16), `U`_sx))] +[visit_exp `%_%`_loadop_(`%`_sz(16), `U`_sx)] +[visit_exp (`%`_sz(16), `U`_sx)] +[visit_exp `%`_sz(16)] [visit_exp (16)] [visit_exp 16] [visit_exp `U`_sx] @@ -74456,30 +61100,16 @@ dims \ = ao, i#51523, i#51530, memarg#105, memidx#185, numtype?#28, sx#480, sz# [visit_id x] not free [visit_exp ao] [visit_id ao] not free -[check_dims] ao i#51582 i#51589 memarg#107 memidx#187 numtype?#29 sx#498 sz#630 x -dims \ = ao, i#51582, i#51589, memarg#107, memidx#187, numtype?#29, sx#498, sz#630, x -[visit_exp `LOAD`_instr{`numtype?#29`, memidx#187, memarg#107}(`I64`_numtype, ?(`%_%`_loadop_{sz#630, sx#498, i#51582}(`%`_sz{i#51589}(8), `S`_sx)), x, ao)] -[visit_exp `numtype?#29`] -[visit_id numtype?#29] -[visit_exp memidx#187] -[visit_id memidx#187] -[visit_exp memarg#107] -[visit_id memarg#107] -[visit_exp (`I64`_numtype, ?(`%_%`_loadop_{sz#630, sx#498, i#51582}(`%`_sz{i#51589}(8), `S`_sx)), x, ao)] +[check_dims] ao x +dims \ = ao, x +[visit_exp `LOAD`_instr(`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(8), `S`_sx)), x, ao)] +[visit_exp (`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(8), `S`_sx)), x, ao)] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp ?(`%_%`_loadop_{sz#630, sx#498, i#51582}(`%`_sz{i#51589}(8), `S`_sx))] -[visit_exp `%_%`_loadop_{sz#630, sx#498, i#51582}(`%`_sz{i#51589}(8), `S`_sx)] -[visit_exp sz#630] -[visit_id sz#630] -[visit_exp sx#498] -[visit_id sx#498] -[visit_exp i#51582] -[visit_id i#51582] -[visit_exp (`%`_sz{i#51589}(8), `S`_sx)] -[visit_exp `%`_sz{i#51589}(8)] -[visit_exp i#51589] -[visit_id i#51589] +[visit_exp ?(`%_%`_loadop_(`%`_sz(8), `S`_sx))] +[visit_exp `%_%`_loadop_(`%`_sz(8), `S`_sx)] +[visit_exp (`%`_sz(8), `S`_sx)] +[visit_exp `%`_sz(8)] [visit_exp (8)] [visit_exp 8] [visit_exp `S`_sx] @@ -74493,30 +61123,16 @@ dims \ = ao, i#51582, i#51589, memarg#107, memidx#187, numtype?#29, sx#498, sz# [visit_id x] not free [visit_exp ao] [visit_id ao] not free -[check_dims] ao i#51641 i#51648 memarg#109 memidx#189 numtype?#30 sx#516 sz#648 x -dims \ = ao, i#51641, i#51648, memarg#109, memidx#189, numtype?#30, sx#516, sz#648, x -[visit_exp `LOAD`_instr{`numtype?#30`, memidx#189, memarg#109}(`I64`_numtype, ?(`%_%`_loadop_{sz#648, sx#516, i#51641}(`%`_sz{i#51648}(8), `U`_sx)), x, ao)] -[visit_exp `numtype?#30`] -[visit_id numtype?#30] -[visit_exp memidx#189] -[visit_id memidx#189] -[visit_exp memarg#109] -[visit_id memarg#109] -[visit_exp (`I64`_numtype, ?(`%_%`_loadop_{sz#648, sx#516, i#51641}(`%`_sz{i#51648}(8), `U`_sx)), x, ao)] +[check_dims] ao x +dims \ = ao, x +[visit_exp `LOAD`_instr(`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(8), `U`_sx)), x, ao)] +[visit_exp (`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(8), `U`_sx)), x, ao)] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp ?(`%_%`_loadop_{sz#648, sx#516, i#51641}(`%`_sz{i#51648}(8), `U`_sx))] -[visit_exp `%_%`_loadop_{sz#648, sx#516, i#51641}(`%`_sz{i#51648}(8), `U`_sx)] -[visit_exp sz#648] -[visit_id sz#648] -[visit_exp sx#516] -[visit_id sx#516] -[visit_exp i#51641] -[visit_id i#51641] -[visit_exp (`%`_sz{i#51648}(8), `U`_sx)] -[visit_exp `%`_sz{i#51648}(8)] -[visit_exp i#51648] -[visit_id i#51648] +[visit_exp ?(`%_%`_loadop_(`%`_sz(8), `U`_sx))] +[visit_exp `%_%`_loadop_(`%`_sz(8), `U`_sx)] +[visit_exp (`%`_sz(8), `U`_sx)] +[visit_exp `%`_sz(8)] [visit_exp (8)] [visit_exp 8] [visit_exp `U`_sx] @@ -74530,30 +61146,16 @@ dims \ = ao, i#51641, i#51648, memarg#109, memidx#189, numtype?#30, sx#516, sz# [visit_id x] not free [visit_exp ao] [visit_id ao] not free -[check_dims] ao i#51700 i#51707 memarg#111 memidx#191 numtype?#31 sx#534 sz#666 x -dims \ = ao, i#51700, i#51707, memarg#111, memidx#191, numtype?#31, sx#534, sz#666, x -[visit_exp `LOAD`_instr{`numtype?#31`, memidx#191, memarg#111}(`I64`_numtype, ?(`%_%`_loadop_{sz#666, sx#534, i#51700}(`%`_sz{i#51707}(16), `S`_sx)), x, ao)] -[visit_exp `numtype?#31`] -[visit_id numtype?#31] -[visit_exp memidx#191] -[visit_id memidx#191] -[visit_exp memarg#111] -[visit_id memarg#111] -[visit_exp (`I64`_numtype, ?(`%_%`_loadop_{sz#666, sx#534, i#51700}(`%`_sz{i#51707}(16), `S`_sx)), x, ao)] +[check_dims] ao x +dims \ = ao, x +[visit_exp `LOAD`_instr(`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(16), `S`_sx)), x, ao)] +[visit_exp (`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(16), `S`_sx)), x, ao)] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp ?(`%_%`_loadop_{sz#666, sx#534, i#51700}(`%`_sz{i#51707}(16), `S`_sx))] -[visit_exp `%_%`_loadop_{sz#666, sx#534, i#51700}(`%`_sz{i#51707}(16), `S`_sx)] -[visit_exp sz#666] -[visit_id sz#666] -[visit_exp sx#534] -[visit_id sx#534] -[visit_exp i#51700] -[visit_id i#51700] -[visit_exp (`%`_sz{i#51707}(16), `S`_sx)] -[visit_exp `%`_sz{i#51707}(16)] -[visit_exp i#51707] -[visit_id i#51707] +[visit_exp ?(`%_%`_loadop_(`%`_sz(16), `S`_sx))] +[visit_exp `%_%`_loadop_(`%`_sz(16), `S`_sx)] +[visit_exp (`%`_sz(16), `S`_sx)] +[visit_exp `%`_sz(16)] [visit_exp (16)] [visit_exp 16] [visit_exp `S`_sx] @@ -74567,30 +61169,16 @@ dims \ = ao, i#51700, i#51707, memarg#111, memidx#191, numtype?#31, sx#534, sz# [visit_id x] not free [visit_exp ao] [visit_id ao] not free -[check_dims] ao i#51759 i#51766 memarg#113 memidx#193 numtype?#32 sx#552 sz#684 x -dims \ = ao, i#51759, i#51766, memarg#113, memidx#193, numtype?#32, sx#552, sz#684, x -[visit_exp `LOAD`_instr{`numtype?#32`, memidx#193, memarg#113}(`I64`_numtype, ?(`%_%`_loadop_{sz#684, sx#552, i#51759}(`%`_sz{i#51766}(16), `U`_sx)), x, ao)] -[visit_exp `numtype?#32`] -[visit_id numtype?#32] -[visit_exp memidx#193] -[visit_id memidx#193] -[visit_exp memarg#113] -[visit_id memarg#113] -[visit_exp (`I64`_numtype, ?(`%_%`_loadop_{sz#684, sx#552, i#51759}(`%`_sz{i#51766}(16), `U`_sx)), x, ao)] +[check_dims] ao x +dims \ = ao, x +[visit_exp `LOAD`_instr(`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(16), `U`_sx)), x, ao)] +[visit_exp (`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(16), `U`_sx)), x, ao)] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp ?(`%_%`_loadop_{sz#684, sx#552, i#51759}(`%`_sz{i#51766}(16), `U`_sx))] -[visit_exp `%_%`_loadop_{sz#684, sx#552, i#51759}(`%`_sz{i#51766}(16), `U`_sx)] -[visit_exp sz#684] -[visit_id sz#684] -[visit_exp sx#552] -[visit_id sx#552] -[visit_exp i#51759] -[visit_id i#51759] -[visit_exp (`%`_sz{i#51766}(16), `U`_sx)] -[visit_exp `%`_sz{i#51766}(16)] -[visit_exp i#51766] -[visit_id i#51766] +[visit_exp ?(`%_%`_loadop_(`%`_sz(16), `U`_sx))] +[visit_exp `%_%`_loadop_(`%`_sz(16), `U`_sx)] +[visit_exp (`%`_sz(16), `U`_sx)] +[visit_exp `%`_sz(16)] [visit_exp (16)] [visit_exp 16] [visit_exp `U`_sx] @@ -74604,30 +61192,16 @@ dims \ = ao, i#51759, i#51766, memarg#113, memidx#193, numtype?#32, sx#552, sz# [visit_id x] not free [visit_exp ao] [visit_id ao] not free -[check_dims] ao i#51818 i#51825 memarg#115 memidx#195 numtype?#33 sx#570 sz#702 x -dims \ = ao, i#51818, i#51825, memarg#115, memidx#195, numtype?#33, sx#570, sz#702, x -[visit_exp `LOAD`_instr{`numtype?#33`, memidx#195, memarg#115}(`I64`_numtype, ?(`%_%`_loadop_{sz#702, sx#570, i#51818}(`%`_sz{i#51825}(32), `S`_sx)), x, ao)] -[visit_exp `numtype?#33`] -[visit_id numtype?#33] -[visit_exp memidx#195] -[visit_id memidx#195] -[visit_exp memarg#115] -[visit_id memarg#115] -[visit_exp (`I64`_numtype, ?(`%_%`_loadop_{sz#702, sx#570, i#51818}(`%`_sz{i#51825}(32), `S`_sx)), x, ao)] +[check_dims] ao x +dims \ = ao, x +[visit_exp `LOAD`_instr(`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(32), `S`_sx)), x, ao)] +[visit_exp (`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(32), `S`_sx)), x, ao)] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp ?(`%_%`_loadop_{sz#702, sx#570, i#51818}(`%`_sz{i#51825}(32), `S`_sx))] -[visit_exp `%_%`_loadop_{sz#702, sx#570, i#51818}(`%`_sz{i#51825}(32), `S`_sx)] -[visit_exp sz#702] -[visit_id sz#702] -[visit_exp sx#570] -[visit_id sx#570] -[visit_exp i#51818] -[visit_id i#51818] -[visit_exp (`%`_sz{i#51825}(32), `S`_sx)] -[visit_exp `%`_sz{i#51825}(32)] -[visit_exp i#51825] -[visit_id i#51825] +[visit_exp ?(`%_%`_loadop_(`%`_sz(32), `S`_sx))] +[visit_exp `%_%`_loadop_(`%`_sz(32), `S`_sx)] +[visit_exp (`%`_sz(32), `S`_sx)] +[visit_exp `%`_sz(32)] [visit_exp (32)] [visit_exp 32] [visit_exp `S`_sx] @@ -74641,30 +61215,16 @@ dims \ = ao, i#51818, i#51825, memarg#115, memidx#195, numtype?#33, sx#570, sz# [visit_id x] not free [visit_exp ao] [visit_id ao] not free -[check_dims] ao i#51877 i#51884 memarg#117 memidx#197 numtype?#34 sx#588 sz#720 x -dims \ = ao, i#51877, i#51884, memarg#117, memidx#197, numtype?#34, sx#588, sz#720, x -[visit_exp `LOAD`_instr{`numtype?#34`, memidx#197, memarg#117}(`I64`_numtype, ?(`%_%`_loadop_{sz#720, sx#588, i#51877}(`%`_sz{i#51884}(32), `U`_sx)), x, ao)] -[visit_exp `numtype?#34`] -[visit_id numtype?#34] -[visit_exp memidx#197] -[visit_id memidx#197] -[visit_exp memarg#117] -[visit_id memarg#117] -[visit_exp (`I64`_numtype, ?(`%_%`_loadop_{sz#720, sx#588, i#51877}(`%`_sz{i#51884}(32), `U`_sx)), x, ao)] +[check_dims] ao x +dims \ = ao, x +[visit_exp `LOAD`_instr(`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(32), `U`_sx)), x, ao)] +[visit_exp (`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(32), `U`_sx)), x, ao)] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp ?(`%_%`_loadop_{sz#720, sx#588, i#51877}(`%`_sz{i#51884}(32), `U`_sx))] -[visit_exp `%_%`_loadop_{sz#720, sx#588, i#51877}(`%`_sz{i#51884}(32), `U`_sx)] -[visit_exp sz#720] -[visit_id sz#720] -[visit_exp sx#588] -[visit_id sx#588] -[visit_exp i#51877] -[visit_id i#51877] -[visit_exp (`%`_sz{i#51884}(32), `U`_sx)] -[visit_exp `%`_sz{i#51884}(32)] -[visit_exp i#51884] -[visit_id i#51884] +[visit_exp ?(`%_%`_loadop_(`%`_sz(32), `U`_sx))] +[visit_exp `%_%`_loadop_(`%`_sz(32), `U`_sx)] +[visit_exp (`%`_sz(32), `U`_sx)] +[visit_exp `%`_sz(32)] [visit_exp (32)] [visit_exp 32] [visit_exp `U`_sx] @@ -74678,15 +61238,9 @@ dims \ = ao, i#51877, i#51884, memarg#117, memidx#197, numtype?#34, sx#588, sz# [visit_id x] not free [visit_exp ao] [visit_id ao] not free -[check_dims] ao memarg#119 memidx#199 numtype?#35 x -dims \ = ao, memarg#119, memidx#199, numtype?#35, x -[visit_exp `STORE`_instr{`numtype?#35`, memidx#199, memarg#119}(`I32`_numtype, ?(), x, ao)] -[visit_exp `numtype?#35`] -[visit_id numtype?#35] -[visit_exp memidx#199] -[visit_id memidx#199] -[visit_exp memarg#119] -[visit_id memarg#119] +[check_dims] ao x +dims \ = ao, x +[visit_exp `STORE`_instr(`I32`_numtype, ?(), x, ao)] [visit_exp (`I32`_numtype, ?(), x, ao)] [visit_exp `I32`_numtype] [visit_exp ()] @@ -74700,15 +61254,9 @@ dims \ = ao, memarg#119, memidx#199, numtype?#35, x [visit_id x] not free [visit_exp ao] [visit_id ao] not free -[check_dims] ao memarg#121 memidx#201 numtype?#36 x -dims \ = ao, memarg#121, memidx#201, numtype?#36, x -[visit_exp `STORE`_instr{`numtype?#36`, memidx#201, memarg#121}(`I64`_numtype, ?(), x, ao)] -[visit_exp `numtype?#36`] -[visit_id numtype?#36] -[visit_exp memidx#201] -[visit_id memidx#201] -[visit_exp memarg#121] -[visit_id memarg#121] +[check_dims] ao x +dims \ = ao, x +[visit_exp `STORE`_instr(`I64`_numtype, ?(), x, ao)] [visit_exp (`I64`_numtype, ?(), x, ao)] [visit_exp `I64`_numtype] [visit_exp ()] @@ -74722,15 +61270,9 @@ dims \ = ao, memarg#121, memidx#201, numtype?#36, x [visit_id x] not free [visit_exp ao] [visit_id ao] not free -[check_dims] ao memarg#123 memidx#203 numtype?#37 x -dims \ = ao, memarg#123, memidx#203, numtype?#37, x -[visit_exp `STORE`_instr{`numtype?#37`, memidx#203, memarg#123}(`F32`_numtype, ?(), x, ao)] -[visit_exp `numtype?#37`] -[visit_id numtype?#37] -[visit_exp memidx#203] -[visit_id memidx#203] -[visit_exp memarg#123] -[visit_id memarg#123] +[check_dims] ao x +dims \ = ao, x +[visit_exp `STORE`_instr(`F32`_numtype, ?(), x, ao)] [visit_exp (`F32`_numtype, ?(), x, ao)] [visit_exp `F32`_numtype] [visit_exp ()] @@ -74744,15 +61286,9 @@ dims \ = ao, memarg#123, memidx#203, numtype?#37, x [visit_id x] not free [visit_exp ao] [visit_id ao] not free -[check_dims] ao memarg#125 memidx#205 numtype?#38 x -dims \ = ao, memarg#125, memidx#205, numtype?#38, x -[visit_exp `STORE`_instr{`numtype?#38`, memidx#205, memarg#125}(`F64`_numtype, ?(), x, ao)] -[visit_exp `numtype?#38`] -[visit_id numtype?#38] -[visit_exp memidx#205] -[visit_id memidx#205] -[visit_exp memarg#125] -[visit_id memarg#125] +[check_dims] ao x +dims \ = ao, x +[visit_exp `STORE`_instr(`F64`_numtype, ?(), x, ao)] [visit_exp (`F64`_numtype, ?(), x, ao)] [visit_exp `F64`_numtype] [visit_exp ()] @@ -74766,28 +61302,16 @@ dims \ = ao, memarg#125, memidx#205, numtype?#38, x [visit_id x] not free [visit_exp ao] [visit_id ao] not free -[check_dims] ao i#52055 i#52056 memarg#127 memidx#207 numtype?#39 sz#733 x -dims \ = ao, i#52055, i#52056, memarg#127, memidx#207, numtype?#39, sz#733, x -[visit_exp `STORE`_instr{`numtype?#39`, memidx#207, memarg#127}(`I32`_numtype, ?(`%`_storeop_{sz#733, i#52055}(`%`_sz{i#52056}(8))), x, ao)] -[visit_exp `numtype?#39`] -[visit_id numtype?#39] -[visit_exp memidx#207] -[visit_id memidx#207] -[visit_exp memarg#127] -[visit_id memarg#127] -[visit_exp (`I32`_numtype, ?(`%`_storeop_{sz#733, i#52055}(`%`_sz{i#52056}(8))), x, ao)] +[check_dims] ao x +dims \ = ao, x +[visit_exp `STORE`_instr(`I32`_numtype, ?(`%`_storeop_(`%`_sz(8))), x, ao)] +[visit_exp (`I32`_numtype, ?(`%`_storeop_(`%`_sz(8))), x, ao)] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp ?(`%`_storeop_{sz#733, i#52055}(`%`_sz{i#52056}(8)))] -[visit_exp `%`_storeop_{sz#733, i#52055}(`%`_sz{i#52056}(8))] -[visit_exp sz#733] -[visit_id sz#733] -[visit_exp i#52055] -[visit_id i#52055] -[visit_exp (`%`_sz{i#52056}(8))] -[visit_exp `%`_sz{i#52056}(8)] -[visit_exp i#52056] -[visit_id i#52056] +[visit_exp ?(`%`_storeop_(`%`_sz(8)))] +[visit_exp `%`_storeop_(`%`_sz(8))] +[visit_exp (`%`_sz(8))] +[visit_exp `%`_sz(8)] [visit_exp (8)] [visit_exp 8] [visit_exp x] @@ -74799,28 +61323,16 @@ dims \ = ao, i#52055, i#52056, memarg#127, memidx#207, numtype?#39, sz#733, x [visit_id x] not free [visit_exp ao] [visit_id ao] not free -[check_dims] ao i#52123 i#52124 memarg#129 memidx#209 numtype?#40 sz#746 x -dims \ = ao, i#52123, i#52124, memarg#129, memidx#209, numtype?#40, sz#746, x -[visit_exp `STORE`_instr{`numtype?#40`, memidx#209, memarg#129}(`I32`_numtype, ?(`%`_storeop_{sz#746, i#52123}(`%`_sz{i#52124}(16))), x, ao)] -[visit_exp `numtype?#40`] -[visit_id numtype?#40] -[visit_exp memidx#209] -[visit_id memidx#209] -[visit_exp memarg#129] -[visit_id memarg#129] -[visit_exp (`I32`_numtype, ?(`%`_storeop_{sz#746, i#52123}(`%`_sz{i#52124}(16))), x, ao)] +[check_dims] ao x +dims \ = ao, x +[visit_exp `STORE`_instr(`I32`_numtype, ?(`%`_storeop_(`%`_sz(16))), x, ao)] +[visit_exp (`I32`_numtype, ?(`%`_storeop_(`%`_sz(16))), x, ao)] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp ?(`%`_storeop_{sz#746, i#52123}(`%`_sz{i#52124}(16)))] -[visit_exp `%`_storeop_{sz#746, i#52123}(`%`_sz{i#52124}(16))] -[visit_exp sz#746] -[visit_id sz#746] -[visit_exp i#52123] -[visit_id i#52123] -[visit_exp (`%`_sz{i#52124}(16))] -[visit_exp `%`_sz{i#52124}(16)] -[visit_exp i#52124] -[visit_id i#52124] +[visit_exp ?(`%`_storeop_(`%`_sz(16)))] +[visit_exp `%`_storeop_(`%`_sz(16))] +[visit_exp (`%`_sz(16))] +[visit_exp `%`_sz(16)] [visit_exp (16)] [visit_exp 16] [visit_exp x] @@ -74832,28 +61344,16 @@ dims \ = ao, i#52123, i#52124, memarg#129, memidx#209, numtype?#40, sz#746, x [visit_id x] not free [visit_exp ao] [visit_id ao] not free -[check_dims] ao i#52191 i#52192 memarg#131 memidx#211 numtype?#41 sz#759 x -dims \ = ao, i#52191, i#52192, memarg#131, memidx#211, numtype?#41, sz#759, x -[visit_exp `STORE`_instr{`numtype?#41`, memidx#211, memarg#131}(`I64`_numtype, ?(`%`_storeop_{sz#759, i#52191}(`%`_sz{i#52192}(8))), x, ao)] -[visit_exp `numtype?#41`] -[visit_id numtype?#41] -[visit_exp memidx#211] -[visit_id memidx#211] -[visit_exp memarg#131] -[visit_id memarg#131] -[visit_exp (`I64`_numtype, ?(`%`_storeop_{sz#759, i#52191}(`%`_sz{i#52192}(8))), x, ao)] +[check_dims] ao x +dims \ = ao, x +[visit_exp `STORE`_instr(`I64`_numtype, ?(`%`_storeop_(`%`_sz(8))), x, ao)] +[visit_exp (`I64`_numtype, ?(`%`_storeop_(`%`_sz(8))), x, ao)] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp ?(`%`_storeop_{sz#759, i#52191}(`%`_sz{i#52192}(8)))] -[visit_exp `%`_storeop_{sz#759, i#52191}(`%`_sz{i#52192}(8))] -[visit_exp sz#759] -[visit_id sz#759] -[visit_exp i#52191] -[visit_id i#52191] -[visit_exp (`%`_sz{i#52192}(8))] -[visit_exp `%`_sz{i#52192}(8)] -[visit_exp i#52192] -[visit_id i#52192] +[visit_exp ?(`%`_storeop_(`%`_sz(8)))] +[visit_exp `%`_storeop_(`%`_sz(8))] +[visit_exp (`%`_sz(8))] +[visit_exp `%`_sz(8)] [visit_exp (8)] [visit_exp 8] [visit_exp x] @@ -74865,28 +61365,16 @@ dims \ = ao, i#52191, i#52192, memarg#131, memidx#211, numtype?#41, sz#759, x [visit_id x] not free [visit_exp ao] [visit_id ao] not free -[check_dims] ao i#52259 i#52260 memarg#133 memidx#213 numtype?#42 sz#772 x -dims \ = ao, i#52259, i#52260, memarg#133, memidx#213, numtype?#42, sz#772, x -[visit_exp `STORE`_instr{`numtype?#42`, memidx#213, memarg#133}(`I64`_numtype, ?(`%`_storeop_{sz#772, i#52259}(`%`_sz{i#52260}(16))), x, ao)] -[visit_exp `numtype?#42`] -[visit_id numtype?#42] -[visit_exp memidx#213] -[visit_id memidx#213] -[visit_exp memarg#133] -[visit_id memarg#133] -[visit_exp (`I64`_numtype, ?(`%`_storeop_{sz#772, i#52259}(`%`_sz{i#52260}(16))), x, ao)] +[check_dims] ao x +dims \ = ao, x +[visit_exp `STORE`_instr(`I64`_numtype, ?(`%`_storeop_(`%`_sz(16))), x, ao)] +[visit_exp (`I64`_numtype, ?(`%`_storeop_(`%`_sz(16))), x, ao)] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp ?(`%`_storeop_{sz#772, i#52259}(`%`_sz{i#52260}(16)))] -[visit_exp `%`_storeop_{sz#772, i#52259}(`%`_sz{i#52260}(16))] -[visit_exp sz#772] -[visit_id sz#772] -[visit_exp i#52259] -[visit_id i#52259] -[visit_exp (`%`_sz{i#52260}(16))] -[visit_exp `%`_sz{i#52260}(16)] -[visit_exp i#52260] -[visit_id i#52260] +[visit_exp ?(`%`_storeop_(`%`_sz(16)))] +[visit_exp `%`_storeop_(`%`_sz(16))] +[visit_exp (`%`_sz(16))] +[visit_exp `%`_sz(16)] [visit_exp (16)] [visit_exp 16] [visit_exp x] @@ -74898,28 +61386,16 @@ dims \ = ao, i#52259, i#52260, memarg#133, memidx#213, numtype?#42, sz#772, x [visit_id x] not free [visit_exp ao] [visit_id ao] not free -[check_dims] ao i#52327 i#52328 memarg#135 memidx#215 numtype?#43 sz#785 x -dims \ = ao, i#52327, i#52328, memarg#135, memidx#215, numtype?#43, sz#785, x -[visit_exp `STORE`_instr{`numtype?#43`, memidx#215, memarg#135}(`I64`_numtype, ?(`%`_storeop_{sz#785, i#52327}(`%`_sz{i#52328}(32))), x, ao)] -[visit_exp `numtype?#43`] -[visit_id numtype?#43] -[visit_exp memidx#215] -[visit_id memidx#215] -[visit_exp memarg#135] -[visit_id memarg#135] -[visit_exp (`I64`_numtype, ?(`%`_storeop_{sz#785, i#52327}(`%`_sz{i#52328}(32))), x, ao)] +[check_dims] ao x +dims \ = ao, x +[visit_exp `STORE`_instr(`I64`_numtype, ?(`%`_storeop_(`%`_sz(32))), x, ao)] +[visit_exp (`I64`_numtype, ?(`%`_storeop_(`%`_sz(32))), x, ao)] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp ?(`%`_storeop_{sz#785, i#52327}(`%`_sz{i#52328}(32)))] -[visit_exp `%`_storeop_{sz#785, i#52327}(`%`_sz{i#52328}(32))] -[visit_exp sz#785] -[visit_id sz#785] -[visit_exp i#52327] -[visit_id i#52327] -[visit_exp (`%`_sz{i#52328}(32))] -[visit_exp `%`_sz{i#52328}(32)] -[visit_exp i#52328] -[visit_id i#52328] +[visit_exp ?(`%`_storeop_(`%`_sz(32)))] +[visit_exp `%`_storeop_(`%`_sz(32))] +[visit_exp (`%`_sz(32))] +[visit_exp `%`_sz(32)] [visit_exp (32)] [visit_exp 32] [visit_exp x] @@ -74931,103 +61407,79 @@ dims \ = ao, i#52327, i#52328, memarg#135, memidx#215, numtype?#43, sz#785, x [visit_id x] not free [visit_exp ao] [visit_id ao] not free -[check_dims] memidx#217 x -dims \ = memidx#217, x -[visit_exp `MEMORY.SIZE`_instr{memidx#217}(x)] -[visit_exp memidx#217] -[visit_id memidx#217] +[check_dims] x +dims \ = x +[visit_exp `MEMORY.SIZE`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] [visit_exp x] [visit_id x] not free -[check_dims] memidx#219 x -dims \ = memidx#219, x -[visit_exp `MEMORY.GROW`_instr{memidx#219}(x)] -[visit_exp memidx#219] -[visit_id memidx#219] +[check_dims] x +dims \ = x +[visit_exp `MEMORY.GROW`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] [visit_exp x] [visit_id x] not free -[check_dims] dataidx#47 i#52427 memidx#221 x y -dims \ = dataidx#47, i#52427, memidx#221, x, y -[visit_exp `MEMORY.INIT`_instr{memidx#221, dataidx#47}(x, y)] -[visit_exp memidx#221] -[visit_id memidx#221] -[visit_exp dataidx#47] -[visit_id dataidx#47] +[check_dims] x y +dims \ = x, y +[visit_exp `MEMORY.INIT`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] [visit_exp y] [visit_id y] -[visit_exp `%`_u32{i#52427}(8)] -[visit_exp i#52427] -[visit_id i#52427] +[visit_exp `%`_u32(8)] [visit_exp (8)] [visit_exp 8] [visit_exp y] [visit_id y] not free [visit_exp x] [visit_id x] not free -[check_dims] dataidx#49 i#52514 x -dims \ = dataidx#49, i#52514, x -[visit_exp `DATA.DROP`_instr{dataidx#49}(x)] -[visit_exp dataidx#49] -[visit_id dataidx#49] +[check_dims] x +dims \ = x +[visit_exp `DATA.DROP`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%`_u32{i#52514}(9)] -[visit_exp i#52514] -[visit_id i#52514] +[visit_exp `%`_u32(9)] [visit_exp (9)] [visit_exp 9] [visit_exp x] [visit_id x] not free -[check_dims] i#52570 memidx#223 x_1 x_2 -dims \ = i#52570, memidx#223, x_1, x_2 -[visit_exp `MEMORY.COPY`_instr{memidx#223}(x_1, x_2)] -[visit_exp memidx#223] -[visit_id memidx#223] +[check_dims] x_1 x_2 +dims \ = x_1, x_2 +[visit_exp `MEMORY.COPY`_instr(x_1, x_2)] [visit_exp (x_1, x_2)] [visit_exp x_1] [visit_id x_1] [visit_exp x_2] [visit_id x_2] -[visit_exp `%`_u32{i#52570}(10)] -[visit_exp i#52570] -[visit_id i#52570] +[visit_exp `%`_u32(10)] [visit_exp (10)] [visit_exp 10] [visit_exp x_1] [visit_id x_1] not free [visit_exp x_2] [visit_id x_2] not free -[check_dims] i#52657 memidx#226 x -dims \ = i#52657, memidx#226, x -[visit_exp `MEMORY.FILL`_instr{memidx#226}(x)] -[visit_exp memidx#226] -[visit_id memidx#226] +[check_dims] x +dims \ = x +[visit_exp `MEMORY.FILL`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%`_u32{i#52657}(11)] -[visit_exp i#52657] -[visit_id i#52657] +[visit_exp `%`_u32(11)] [visit_exp (11)] [visit_exp 11] [visit_exp x] [visit_id x] not free ps' = [check_dims] -[check_dims] heaptype#1679 ht -dims \ = heaptype#1679, ht -[visit_exp `REF.NULL`_instr{heaptype#1679}(ht)] -[visit_exp heaptype#1679] -[visit_id heaptype#1679] +[check_dims] ht +dims \ = ht +[visit_exp `REF.NULL`_instr(ht)] [visit_exp (ht)] [visit_exp ht] [visit_id ht] @@ -75037,11 +61489,9 @@ dims \ = heaptype#1679, ht dims \ = [visit_exp `REF.IS_NULL`_instr] [visit_exp ()] -[check_dims] funcidx#3167 x -dims \ = funcidx#3167, x -[visit_exp `REF.FUNC`_instr{funcidx#3167}(x)] -[visit_exp funcidx#3167] -[visit_id funcidx#3167] +[check_dims] x +dims \ = x +[visit_exp `REF.FUNC`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -75055,163 +61505,109 @@ dims \ = dims \ = [visit_exp `REF.AS_NON_NULL`_instr] [visit_exp ()] -[check_dims] heaptype#1691 ht i#52744 null?#1627 reftype#3969 -dims \ = heaptype#1691, ht, i#52744, null?#1627, reftype#3969 -[visit_exp `REF.TEST`_instr{reftype#3969}(`REF`_reftype{`null?#1627`, heaptype#1691}(?(), ht))] -[visit_exp reftype#3969] -[visit_id reftype#3969] -[visit_exp (`REF`_reftype{`null?#1627`, heaptype#1691}(?(), ht))] -[visit_exp `REF`_reftype{`null?#1627`, heaptype#1691}(?(), ht)] -[visit_exp `null?#1627`] -[visit_id null?#1627] -[visit_exp heaptype#1691] -[visit_id heaptype#1691] +[check_dims] ht +dims \ = ht +[visit_exp `REF.TEST`_instr(`REF`_reftype(?(), ht))] +[visit_exp (`REF`_reftype(?(), ht))] +[visit_exp `REF`_reftype(?(), ht)] [visit_exp (?(), ht)] [visit_exp ?()] [visit_exp ht] [visit_id ht] -[visit_exp `%`_u32{i#52744}(20)] -[visit_exp i#52744] -[visit_id i#52744] +[visit_exp `%`_u32(20)] [visit_exp (20)] [visit_exp 20] [visit_exp ht] [visit_id ht] not free -[check_dims] heaptype#1703 ht i#52769 null?#1639 reftype#3971 -dims \ = heaptype#1703, ht, i#52769, null?#1639, reftype#3971 -[visit_exp `REF.TEST`_instr{reftype#3971}(`REF`_reftype{`null?#1639`, heaptype#1703}(?(`NULL`_null), ht))] -[visit_exp reftype#3971] -[visit_id reftype#3971] -[visit_exp (`REF`_reftype{`null?#1639`, heaptype#1703}(?(`NULL`_null), ht))] -[visit_exp `REF`_reftype{`null?#1639`, heaptype#1703}(?(`NULL`_null), ht)] -[visit_exp `null?#1639`] -[visit_id null?#1639] -[visit_exp heaptype#1703] -[visit_id heaptype#1703] +[check_dims] ht +dims \ = ht +[visit_exp `REF.TEST`_instr(`REF`_reftype(?(`NULL`_null), ht))] +[visit_exp (`REF`_reftype(?(`NULL`_null), ht))] +[visit_exp `REF`_reftype(?(`NULL`_null), ht)] [visit_exp (?(`NULL`_null), ht)] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] [visit_exp ()] [visit_exp ht] [visit_id ht] -[visit_exp `%`_u32{i#52769}(21)] -[visit_exp i#52769] -[visit_id i#52769] +[visit_exp `%`_u32(21)] [visit_exp (21)] [visit_exp 21] [visit_exp ht] [visit_id ht] not free -[check_dims] heaptype#1715 ht i#52794 null?#1651 reftype#3973 -dims \ = heaptype#1715, ht, i#52794, null?#1651, reftype#3973 -[visit_exp `REF.CAST`_instr{reftype#3973}(`REF`_reftype{`null?#1651`, heaptype#1715}(?(), ht))] -[visit_exp reftype#3973] -[visit_id reftype#3973] -[visit_exp (`REF`_reftype{`null?#1651`, heaptype#1715}(?(), ht))] -[visit_exp `REF`_reftype{`null?#1651`, heaptype#1715}(?(), ht)] -[visit_exp `null?#1651`] -[visit_id null?#1651] -[visit_exp heaptype#1715] -[visit_id heaptype#1715] +[check_dims] ht +dims \ = ht +[visit_exp `REF.CAST`_instr(`REF`_reftype(?(), ht))] +[visit_exp (`REF`_reftype(?(), ht))] +[visit_exp `REF`_reftype(?(), ht)] [visit_exp (?(), ht)] [visit_exp ?()] [visit_exp ht] [visit_id ht] -[visit_exp `%`_u32{i#52794}(22)] -[visit_exp i#52794] -[visit_id i#52794] +[visit_exp `%`_u32(22)] [visit_exp (22)] [visit_exp 22] [visit_exp ht] [visit_id ht] not free -[check_dims] heaptype#1727 ht i#52819 null?#1663 reftype#3975 -dims \ = heaptype#1727, ht, i#52819, null?#1663, reftype#3975 -[visit_exp `REF.CAST`_instr{reftype#3975}(`REF`_reftype{`null?#1663`, heaptype#1727}(?(`NULL`_null), ht))] -[visit_exp reftype#3975] -[visit_id reftype#3975] -[visit_exp (`REF`_reftype{`null?#1663`, heaptype#1727}(?(`NULL`_null), ht))] -[visit_exp `REF`_reftype{`null?#1663`, heaptype#1727}(?(`NULL`_null), ht)] -[visit_exp `null?#1663`] -[visit_id null?#1663] -[visit_exp heaptype#1727] -[visit_id heaptype#1727] +[check_dims] ht +dims \ = ht +[visit_exp `REF.CAST`_instr(`REF`_reftype(?(`NULL`_null), ht))] +[visit_exp (`REF`_reftype(?(`NULL`_null), ht))] +[visit_exp `REF`_reftype(?(`NULL`_null), ht)] [visit_exp (?(`NULL`_null), ht)] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] [visit_exp ()] [visit_exp ht] [visit_id ht] -[visit_exp `%`_u32{i#52819}(23)] -[visit_exp i#52819] -[visit_id i#52819] +[visit_exp `%`_u32(23)] [visit_exp (23)] [visit_exp 23] [visit_exp ht] [visit_id ht] not free ps' = [check_dims] -[check_dims] i#52844 typeidx#1944 x -dims \ = i#52844, typeidx#1944, x -[visit_exp `STRUCT.NEW`_instr{typeidx#1944}(x)] -[visit_exp typeidx#1944] -[visit_id typeidx#1944] +[check_dims] x +dims \ = x +[visit_exp `STRUCT.NEW`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%`_u32{i#52844}(0)] -[visit_exp i#52844] -[visit_id i#52844] +[visit_exp `%`_u32(0)] [visit_exp (0)] [visit_exp 0] [visit_exp x] [visit_id x] not free -[check_dims] i#52900 typeidx#1946 x -dims \ = i#52900, typeidx#1946, x -[visit_exp `STRUCT.NEW_DEFAULT`_instr{typeidx#1946}(x)] -[visit_exp typeidx#1946] -[visit_id typeidx#1946] +[check_dims] x +dims \ = x +[visit_exp `STRUCT.NEW_DEFAULT`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%`_u32{i#52900}(1)] -[visit_exp i#52900] -[visit_id i#52900] +[visit_exp `%`_u32(1)] [visit_exp (1)] [visit_exp 1] [visit_exp x] [visit_id x] not free -[check_dims] i i#52956 sx?#31 typeidx#1948 u32#37 x -dims \ = i, i#52956, sx?#31, typeidx#1948, u32#37, x -[visit_exp `STRUCT.GET`_instr{`sx?#31`, typeidx#1948, u32#37}(?(), x, i)] -[visit_exp `sx?#31`] -[visit_id sx?#31] -[visit_exp typeidx#1948] -[visit_id typeidx#1948] -[visit_exp u32#37] -[visit_id u32#37] +[check_dims] i x +dims \ = i, x +[visit_exp `STRUCT.GET`_instr(?(), x, i)] [visit_exp (?(), x, i)] [visit_exp ?()] [visit_exp x] [visit_id x] [visit_exp i] [visit_id i] -[visit_exp `%`_u32{i#52956}(2)] -[visit_exp i#52956] -[visit_id i#52956] +[visit_exp `%`_u32(2)] [visit_exp (2)] [visit_exp 2] [visit_exp x] [visit_id x] not free [visit_exp i] [visit_id i] not free -[check_dims] i i#53041 sx?#33 typeidx#1950 u32#39 x -dims \ = i, i#53041, sx?#33, typeidx#1950, u32#39, x -[visit_exp `STRUCT.GET`_instr{`sx?#33`, typeidx#1950, u32#39}(?(`S`_sx), x, i)] -[visit_exp `sx?#33`] -[visit_id sx?#33] -[visit_exp typeidx#1950] -[visit_id typeidx#1950] -[visit_exp u32#39] -[visit_id u32#39] +[check_dims] i x +dims \ = i, x +[visit_exp `STRUCT.GET`_instr(?(`S`_sx), x, i)] [visit_exp (?(`S`_sx), x, i)] [visit_exp ?(`S`_sx)] [visit_exp `S`_sx] @@ -75220,24 +61616,16 @@ dims \ = i, i#53041, sx?#33, typeidx#1950, u32#39, x [visit_id x] [visit_exp i] [visit_id i] -[visit_exp `%`_u32{i#53041}(3)] -[visit_exp i#53041] -[visit_id i#53041] +[visit_exp `%`_u32(3)] [visit_exp (3)] [visit_exp 3] [visit_exp x] [visit_id x] not free [visit_exp i] [visit_id i] not free -[check_dims] i i#53148 sx?#35 typeidx#1952 u32#41 x -dims \ = i, i#53148, sx?#35, typeidx#1952, u32#41, x -[visit_exp `STRUCT.GET`_instr{`sx?#35`, typeidx#1952, u32#41}(?(`U`_sx), x, i)] -[visit_exp `sx?#35`] -[visit_id sx?#35] -[visit_exp typeidx#1952] -[visit_id typeidx#1952] -[visit_exp u32#41] -[visit_id u32#41] +[check_dims] i x +dims \ = i, x +[visit_exp `STRUCT.GET`_instr(?(`U`_sx), x, i)] [visit_exp (?(`U`_sx), x, i)] [visit_exp ?(`U`_sx)] [visit_exp `U`_sx] @@ -75246,30 +61634,22 @@ dims \ = i, i#53148, sx?#35, typeidx#1952, u32#41, x [visit_id x] [visit_exp i] [visit_id i] -[visit_exp `%`_u32{i#53148}(4)] -[visit_exp i#53148] -[visit_id i#53148] +[visit_exp `%`_u32(4)] [visit_exp (4)] [visit_exp 4] [visit_exp x] [visit_id x] not free [visit_exp i] [visit_id i] not free -[check_dims] i i#53255 typeidx#1954 u32#43 x -dims \ = i, i#53255, typeidx#1954, u32#43, x -[visit_exp `STRUCT.SET`_instr{typeidx#1954, u32#43}(x, i)] -[visit_exp typeidx#1954] -[visit_id typeidx#1954] -[visit_exp u32#43] -[visit_id u32#43] +[check_dims] i x +dims \ = i, x +[visit_exp `STRUCT.SET`_instr(x, i)] [visit_exp (x, i)] [visit_exp x] [visit_id x] [visit_exp i] [visit_id i] -[visit_exp `%`_u32{i#53255}(5)] -[visit_exp i#53255] -[visit_id i#53255] +[visit_exp `%`_u32(5)] [visit_exp (5)] [visit_exp 5] [visit_exp x] @@ -75278,259 +61658,185 @@ dims \ = i, i#53255, typeidx#1954, u32#43, x [visit_id i] not free ps' = [check_dims] -[check_dims] i#53340 typeidx#1956 x -dims \ = i#53340, typeidx#1956, x -[visit_exp `ARRAY.NEW`_instr{typeidx#1956}(x)] -[visit_exp typeidx#1956] -[visit_id typeidx#1956] +[check_dims] x +dims \ = x +[visit_exp `ARRAY.NEW`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%`_u32{i#53340}(6)] -[visit_exp i#53340] -[visit_id i#53340] +[visit_exp `%`_u32(6)] [visit_exp (6)] [visit_exp 6] [visit_exp x] [visit_id x] not free -[check_dims] i#53396 typeidx#1958 x -dims \ = i#53396, typeidx#1958, x -[visit_exp `ARRAY.NEW_DEFAULT`_instr{typeidx#1958}(x)] -[visit_exp typeidx#1958] -[visit_id typeidx#1958] +[check_dims] x +dims \ = x +[visit_exp `ARRAY.NEW_DEFAULT`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%`_u32{i#53396}(7)] -[visit_exp i#53396] -[visit_id i#53396] +[visit_exp `%`_u32(7)] [visit_exp (7)] [visit_exp 7] [visit_exp x] [visit_id x] not free -[check_dims] i#53452 i#53496 i#53536 n typeidx#1960 u32#45 x -dims \ = i#53452, i#53496, i#53536, n, typeidx#1960, u32#45, x -[visit_exp `ARRAY.NEW_FIXED`_instr{typeidx#1960, u32#45}(x, `%`_u32{i#53536}(n))] -[visit_exp typeidx#1960] -[visit_id typeidx#1960] -[visit_exp u32#45] -[visit_id u32#45] -[visit_exp (x, `%`_u32{i#53536}(n))] +[check_dims] n x +dims \ = n, x +[visit_exp `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))] +[visit_exp (x, `%`_u32(n))] [visit_exp x] [visit_id x] -[visit_exp `%`_u32{i#53536}(n)] -[visit_exp i#53536] -[visit_id i#53536] +[visit_exp `%`_u32(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `%`_u32{i#53452}(8)] -[visit_exp i#53452] -[visit_id i#53452] +[visit_exp `%`_u32(8)] [visit_exp (8)] [visit_exp 8] [visit_exp x] [visit_id x] not free -[visit_exp `%`_u32{i#53496}(n)] -[visit_exp i#53496] -[visit_id i#53496] +[visit_exp `%`_u32(n)] [visit_exp (n)] [visit_exp n] [visit_id n] not free -[check_dims] dataidx#51 i#53559 typeidx#1962 x y -dims \ = dataidx#51, i#53559, typeidx#1962, x, y -[visit_exp `ARRAY.NEW_DATA`_instr{typeidx#1962, dataidx#51}(x, y)] -[visit_exp typeidx#1962] -[visit_id typeidx#1962] -[visit_exp dataidx#51] -[visit_id dataidx#51] +[check_dims] x y +dims \ = x, y +[visit_exp `ARRAY.NEW_DATA`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] [visit_exp y] [visit_id y] -[visit_exp `%`_u32{i#53559}(9)] -[visit_exp i#53559] -[visit_id i#53559] +[visit_exp `%`_u32(9)] [visit_exp (9)] [visit_exp 9] [visit_exp x] [visit_id x] not free [visit_exp y] [visit_id y] not free -[check_dims] elemidx#53 i#53646 typeidx#1964 x y -dims \ = elemidx#53, i#53646, typeidx#1964, x, y -[visit_exp `ARRAY.NEW_ELEM`_instr{typeidx#1964, elemidx#53}(x, y)] -[visit_exp typeidx#1964] -[visit_id typeidx#1964] -[visit_exp elemidx#53] -[visit_id elemidx#53] +[check_dims] x y +dims \ = x, y +[visit_exp `ARRAY.NEW_ELEM`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] [visit_exp y] [visit_id y] -[visit_exp `%`_u32{i#53646}(10)] -[visit_exp i#53646] -[visit_id i#53646] +[visit_exp `%`_u32(10)] [visit_exp (10)] [visit_exp 10] [visit_exp x] [visit_id x] not free [visit_exp y] [visit_id y] not free -[check_dims] i#53733 sx?#37 typeidx#1966 x -dims \ = i#53733, sx?#37, typeidx#1966, x -[visit_exp `ARRAY.GET`_instr{`sx?#37`, typeidx#1966}(?(), x)] -[visit_exp `sx?#37`] -[visit_id sx?#37] -[visit_exp typeidx#1966] -[visit_id typeidx#1966] +[check_dims] x +dims \ = x +[visit_exp `ARRAY.GET`_instr(?(), x)] [visit_exp (?(), x)] [visit_exp ?()] [visit_exp x] [visit_id x] -[visit_exp `%`_u32{i#53733}(11)] -[visit_exp i#53733] -[visit_id i#53733] +[visit_exp `%`_u32(11)] [visit_exp (11)] [visit_exp 11] [visit_exp x] [visit_id x] not free -[check_dims] i#53789 sx?#39 typeidx#1968 x -dims \ = i#53789, sx?#39, typeidx#1968, x -[visit_exp `ARRAY.GET`_instr{`sx?#39`, typeidx#1968}(?(`S`_sx), x)] -[visit_exp `sx?#39`] -[visit_id sx?#39] -[visit_exp typeidx#1968] -[visit_id typeidx#1968] +[check_dims] x +dims \ = x +[visit_exp `ARRAY.GET`_instr(?(`S`_sx), x)] [visit_exp (?(`S`_sx), x)] [visit_exp ?(`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] [visit_exp x] [visit_id x] -[visit_exp `%`_u32{i#53789}(12)] -[visit_exp i#53789] -[visit_id i#53789] +[visit_exp `%`_u32(12)] [visit_exp (12)] [visit_exp 12] [visit_exp x] [visit_id x] not free -[check_dims] i#53889 sx?#41 typeidx#1970 x -dims \ = i#53889, sx?#41, typeidx#1970, x -[visit_exp `ARRAY.GET`_instr{`sx?#41`, typeidx#1970}(?(`U`_sx), x)] -[visit_exp `sx?#41`] -[visit_id sx?#41] -[visit_exp typeidx#1970] -[visit_id typeidx#1970] +[check_dims] x +dims \ = x +[visit_exp `ARRAY.GET`_instr(?(`U`_sx), x)] [visit_exp (?(`U`_sx), x)] [visit_exp ?(`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] [visit_exp x] [visit_id x] -[visit_exp `%`_u32{i#53889}(13)] -[visit_exp i#53889] -[visit_id i#53889] +[visit_exp `%`_u32(13)] [visit_exp (13)] [visit_exp 13] [visit_exp x] [visit_id x] not free -[check_dims] i#53989 typeidx#1972 x -dims \ = i#53989, typeidx#1972, x -[visit_exp `ARRAY.SET`_instr{typeidx#1972}(x)] -[visit_exp typeidx#1972] -[visit_id typeidx#1972] +[check_dims] x +dims \ = x +[visit_exp `ARRAY.SET`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%`_u32{i#53989}(14)] -[visit_exp i#53989] -[visit_id i#53989] +[visit_exp `%`_u32(14)] [visit_exp (14)] [visit_exp 14] [visit_exp x] [visit_id x] not free -[check_dims] i#54045 -dims \ = i#54045 +[check_dims] +dims \ = [visit_exp `ARRAY.LEN`_instr] [visit_exp ()] -[visit_exp `%`_u32{i#54045}(15)] -[visit_exp i#54045] -[visit_id i#54045] +[visit_exp `%`_u32(15)] [visit_exp (15)] [visit_exp 15] -[check_dims] i#54070 typeidx#1974 x -dims \ = i#54070, typeidx#1974, x -[visit_exp `ARRAY.FILL`_instr{typeidx#1974}(x)] -[visit_exp typeidx#1974] -[visit_id typeidx#1974] +[check_dims] x +dims \ = x +[visit_exp `ARRAY.FILL`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%`_u32{i#54070}(16)] -[visit_exp i#54070] -[visit_id i#54070] +[visit_exp `%`_u32(16)] [visit_exp (16)] [visit_exp 16] [visit_exp x] [visit_id x] not free -[check_dims] i#54126 typeidx#1976 x_1 x_2 -dims \ = i#54126, typeidx#1976, x_1, x_2 -[visit_exp `ARRAY.COPY`_instr{typeidx#1976}(x_1, x_2)] -[visit_exp typeidx#1976] -[visit_id typeidx#1976] +[check_dims] x_1 x_2 +dims \ = x_1, x_2 +[visit_exp `ARRAY.COPY`_instr(x_1, x_2)] [visit_exp (x_1, x_2)] [visit_exp x_1] [visit_id x_1] [visit_exp x_2] [visit_id x_2] -[visit_exp `%`_u32{i#54126}(17)] -[visit_exp i#54126] -[visit_id i#54126] +[visit_exp `%`_u32(17)] [visit_exp (17)] [visit_exp 17] [visit_exp x_1] [visit_id x_1] not free [visit_exp x_2] [visit_id x_2] not free -[check_dims] dataidx#53 i#54213 typeidx#1979 x y -dims \ = dataidx#53, i#54213, typeidx#1979, x, y -[visit_exp `ARRAY.INIT_DATA`_instr{typeidx#1979, dataidx#53}(x, y)] -[visit_exp typeidx#1979] -[visit_id typeidx#1979] -[visit_exp dataidx#53] -[visit_id dataidx#53] +[check_dims] x y +dims \ = x, y +[visit_exp `ARRAY.INIT_DATA`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] [visit_exp y] [visit_id y] -[visit_exp `%`_u32{i#54213}(18)] -[visit_exp i#54213] -[visit_id i#54213] +[visit_exp `%`_u32(18)] [visit_exp (18)] [visit_exp 18] [visit_exp x] [visit_id x] not free [visit_exp y] [visit_id y] not free -[check_dims] elemidx#55 i#54300 typeidx#1981 x y -dims \ = elemidx#55, i#54300, typeidx#1981, x, y -[visit_exp `ARRAY.INIT_ELEM`_instr{typeidx#1981, elemidx#55}(x, y)] -[visit_exp typeidx#1981] -[visit_id typeidx#1981] -[visit_exp elemidx#55] -[visit_id elemidx#55] +[check_dims] x y +dims \ = x, y +[visit_exp `ARRAY.INIT_ELEM`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] [visit_exp y] [visit_id y] -[visit_exp `%`_u32{i#54300}(19)] -[visit_exp i#54300] -[visit_id i#54300] +[visit_exp `%`_u32(19)] [visit_exp (19)] [visit_exp 19] [visit_exp x] @@ -75539,108 +61845,80 @@ dims \ = elemidx#55, i#54300, typeidx#1981, x, y [visit_id y] not free ps' = [check_dims] -[check_dims] i#54387 -dims \ = i#54387 +[check_dims] +dims \ = [visit_exp `ANY.CONVERT_EXTERN`_instr] [visit_exp ()] -[visit_exp `%`_u32{i#54387}(26)] -[visit_exp i#54387] -[visit_id i#54387] +[visit_exp `%`_u32(26)] [visit_exp (26)] [visit_exp 26] -[check_dims] i#54412 -dims \ = i#54412 +[check_dims] +dims \ = [visit_exp `EXTERN.CONVERT_ANY`_instr] [visit_exp ()] -[visit_exp `%`_u32{i#54412}(27)] -[visit_exp i#54412] -[visit_id i#54412] +[visit_exp `%`_u32(27)] [visit_exp (27)] [visit_exp 27] ps' = [check_dims] -[check_dims] i#54437 -dims \ = i#54437 +[check_dims] +dims \ = [visit_exp `REF.I31`_instr] [visit_exp ()] -[visit_exp `%`_u32{i#54437}(28)] -[visit_exp i#54437] -[visit_id i#54437] +[visit_exp `%`_u32(28)] [visit_exp (28)] [visit_exp 28] -[check_dims] i#54462 sx#590 -dims \ = i#54462, sx#590 -[visit_exp `I31.GET`_instr{sx#590}(`S`_sx)] -[visit_exp sx#590] -[visit_id sx#590] +[check_dims] +dims \ = +[visit_exp `I31.GET`_instr(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#54462}(29)] -[visit_exp i#54462] -[visit_id i#54462] +[visit_exp `%`_u32(29)] [visit_exp (29)] [visit_exp 29] -[check_dims] i#54487 sx#592 -dims \ = i#54487, sx#592 -[visit_exp `I31.GET`_instr{sx#592}(`U`_sx)] -[visit_exp sx#592] -[visit_id sx#592] +[check_dims] +dims \ = +[visit_exp `I31.GET`_instr(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#54487}(30)] -[visit_exp i#54487] -[visit_id i#54487] +[visit_exp `%`_u32(30)] [visit_exp (30)] [visit_exp 30] ps' = [check_dims] -[check_dims] i#54514 i#54540 n numtype#654 -dims \ = i#54514, i#54540, n, numtype#654 -[visit_exp `CONST`_instr{numtype#654}(`I32`_numtype, `%`_num_{i#54540}(n))] -[visit_exp numtype#654] -[visit_id numtype#654] -[visit_exp (`I32`_numtype, `%`_num_{i#54540}(n))] +[check_dims] n +dims \ = n +[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] +[visit_exp (`I32`_numtype, `%`_num_(n))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#54540}(n)] -[visit_exp i#54540] -[visit_id i#54540] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `%`_u32{i#54514}(n)] -[visit_exp i#54514] -[visit_id i#54514] +[visit_exp `%`_u32(n)] [visit_exp (n)] [visit_exp n] [visit_id n] not free -[check_dims] i#54565 i#54591 n numtype#656 -dims \ = i#54565, i#54591, n, numtype#656 -[visit_exp `CONST`_instr{numtype#656}(`I64`_numtype, `%`_num_{i#54591}(n))] -[visit_exp numtype#656] -[visit_id numtype#656] -[visit_exp (`I64`_numtype, `%`_num_{i#54591}(n))] +[check_dims] n +dims \ = n +[visit_exp `CONST`_instr(`I64`_numtype, `%`_num_(n))] +[visit_exp (`I64`_numtype, `%`_num_(n))] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `%`_num_{i#54591}(n)] -[visit_exp i#54591] -[visit_id i#54591] +[visit_exp `%`_num_(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `%`_u64{i#54565}(n)] -[visit_exp i#54565] -[visit_id i#54565] +[visit_exp `%`_u64(n)] [visit_exp (n)] [visit_exp n] [visit_id n] not free -[check_dims] numtype#658 p -dims \ = numtype#658, p -[visit_exp `CONST`_instr{numtype#658}(`F32`_numtype, p)] -[visit_exp numtype#658] -[visit_id numtype#658] +[check_dims] p +dims \ = p +[visit_exp `CONST`_instr(`F32`_numtype, p)] [visit_exp (`F32`_numtype, p)] [visit_exp `F32`_numtype] [visit_exp ()] @@ -75648,11 +61926,9 @@ dims \ = numtype#658, p [visit_id p] [visit_exp p] [visit_id p] not free -[check_dims] numtype#660 p -dims \ = numtype#660, p -[visit_exp `CONST`_instr{numtype#660}(`F64`_numtype, p)] -[visit_exp numtype#660] -[visit_id numtype#660] +[check_dims] p +dims \ = p +[visit_exp `CONST`_instr(`F64`_numtype, p)] [visit_exp (`F64`_numtype, p)] [visit_exp `F64`_numtype] [visit_exp ()] @@ -75662,11 +61938,9 @@ dims \ = numtype#660, p [visit_id p] not free ps' = [check_dims] -[check_dims] numtype#662 -dims \ = numtype#662 -[visit_exp `TESTOP`_instr{numtype#662}(`I32`_numtype, `EQZ`_testop_)] -[visit_exp numtype#662] -[visit_id numtype#662] +[check_dims] +dims \ = +[visit_exp `TESTOP`_instr(`I32`_numtype, `EQZ`_testop_)] [visit_exp (`I32`_numtype, `EQZ`_testop_)] [visit_exp `I32`_numtype] [visit_exp ()] @@ -75674,145 +61948,107 @@ dims \ = numtype#662 [visit_exp ()] ps' = [check_dims] -[check_dims] numtype#664 -dims \ = numtype#664 -[visit_exp `RELOP`_instr{numtype#664}(`I32`_numtype, `EQ`_relop_)] -[visit_exp numtype#664] -[visit_id numtype#664] +[check_dims] +dims \ = +[visit_exp `RELOP`_instr(`I32`_numtype, `EQ`_relop_)] [visit_exp (`I32`_numtype, `EQ`_relop_)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp `EQ`_relop_] [visit_exp ()] -[check_dims] numtype#666 -dims \ = numtype#666 -[visit_exp `RELOP`_instr{numtype#666}(`I32`_numtype, `NE`_relop_)] -[visit_exp numtype#666] -[visit_id numtype#666] +[check_dims] +dims \ = +[visit_exp `RELOP`_instr(`I32`_numtype, `NE`_relop_)] [visit_exp (`I32`_numtype, `NE`_relop_)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp `NE`_relop_] [visit_exp ()] -[check_dims] numtype#668 sx#836 -dims \ = numtype#668, sx#836 -[visit_exp `RELOP`_instr{numtype#668}(`I32`_numtype, `LT`_relop_{sx#836}(`S`_sx))] -[visit_exp numtype#668] -[visit_id numtype#668] -[visit_exp (`I32`_numtype, `LT`_relop_{sx#836}(`S`_sx))] +[check_dims] +dims \ = +[visit_exp `RELOP`_instr(`I32`_numtype, `LT`_relop_(`S`_sx))] +[visit_exp (`I32`_numtype, `LT`_relop_(`S`_sx))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `LT`_relop_{sx#836}(`S`_sx)] -[visit_exp sx#836] -[visit_id sx#836] +[visit_exp `LT`_relop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] numtype#670 sx#960 -dims \ = numtype#670, sx#960 -[visit_exp `RELOP`_instr{numtype#670}(`I32`_numtype, `LT`_relop_{sx#960}(`U`_sx))] -[visit_exp numtype#670] -[visit_id numtype#670] -[visit_exp (`I32`_numtype, `LT`_relop_{sx#960}(`U`_sx))] +[check_dims] +dims \ = +[visit_exp `RELOP`_instr(`I32`_numtype, `LT`_relop_(`U`_sx))] +[visit_exp (`I32`_numtype, `LT`_relop_(`U`_sx))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `LT`_relop_{sx#960}(`U`_sx)] -[visit_exp sx#960] -[visit_id sx#960] +[visit_exp `LT`_relop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] numtype#672 sx#1084 -dims \ = numtype#672, sx#1084 -[visit_exp `RELOP`_instr{numtype#672}(`I32`_numtype, `GT`_relop_{sx#1084}(`S`_sx))] -[visit_exp numtype#672] -[visit_id numtype#672] -[visit_exp (`I32`_numtype, `GT`_relop_{sx#1084}(`S`_sx))] +[check_dims] +dims \ = +[visit_exp `RELOP`_instr(`I32`_numtype, `GT`_relop_(`S`_sx))] +[visit_exp (`I32`_numtype, `GT`_relop_(`S`_sx))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `GT`_relop_{sx#1084}(`S`_sx)] -[visit_exp sx#1084] -[visit_id sx#1084] +[visit_exp `GT`_relop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] numtype#674 sx#1208 -dims \ = numtype#674, sx#1208 -[visit_exp `RELOP`_instr{numtype#674}(`I32`_numtype, `GT`_relop_{sx#1208}(`U`_sx))] -[visit_exp numtype#674] -[visit_id numtype#674] -[visit_exp (`I32`_numtype, `GT`_relop_{sx#1208}(`U`_sx))] +[check_dims] +dims \ = +[visit_exp `RELOP`_instr(`I32`_numtype, `GT`_relop_(`U`_sx))] +[visit_exp (`I32`_numtype, `GT`_relop_(`U`_sx))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `GT`_relop_{sx#1208}(`U`_sx)] -[visit_exp sx#1208] -[visit_id sx#1208] +[visit_exp `GT`_relop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] numtype#676 sx#1332 -dims \ = numtype#676, sx#1332 -[visit_exp `RELOP`_instr{numtype#676}(`I32`_numtype, `LE`_relop_{sx#1332}(`S`_sx))] -[visit_exp numtype#676] -[visit_id numtype#676] -[visit_exp (`I32`_numtype, `LE`_relop_{sx#1332}(`S`_sx))] +[check_dims] +dims \ = +[visit_exp `RELOP`_instr(`I32`_numtype, `LE`_relop_(`S`_sx))] +[visit_exp (`I32`_numtype, `LE`_relop_(`S`_sx))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `LE`_relop_{sx#1332}(`S`_sx)] -[visit_exp sx#1332] -[visit_id sx#1332] +[visit_exp `LE`_relop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] numtype#678 sx#1456 -dims \ = numtype#678, sx#1456 -[visit_exp `RELOP`_instr{numtype#678}(`I32`_numtype, `LE`_relop_{sx#1456}(`U`_sx))] -[visit_exp numtype#678] -[visit_id numtype#678] -[visit_exp (`I32`_numtype, `LE`_relop_{sx#1456}(`U`_sx))] +[check_dims] +dims \ = +[visit_exp `RELOP`_instr(`I32`_numtype, `LE`_relop_(`U`_sx))] +[visit_exp (`I32`_numtype, `LE`_relop_(`U`_sx))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `LE`_relop_{sx#1456}(`U`_sx)] -[visit_exp sx#1456] -[visit_id sx#1456] +[visit_exp `LE`_relop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] numtype#680 sx#1580 -dims \ = numtype#680, sx#1580 -[visit_exp `RELOP`_instr{numtype#680}(`I32`_numtype, `GE`_relop_{sx#1580}(`S`_sx))] -[visit_exp numtype#680] -[visit_id numtype#680] -[visit_exp (`I32`_numtype, `GE`_relop_{sx#1580}(`S`_sx))] +[check_dims] +dims \ = +[visit_exp `RELOP`_instr(`I32`_numtype, `GE`_relop_(`S`_sx))] +[visit_exp (`I32`_numtype, `GE`_relop_(`S`_sx))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `GE`_relop_{sx#1580}(`S`_sx)] -[visit_exp sx#1580] -[visit_id sx#1580] +[visit_exp `GE`_relop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] numtype#682 sx#1704 -dims \ = numtype#682, sx#1704 -[visit_exp `RELOP`_instr{numtype#682}(`I32`_numtype, `GE`_relop_{sx#1704}(`U`_sx))] -[visit_exp numtype#682] -[visit_id numtype#682] -[visit_exp (`I32`_numtype, `GE`_relop_{sx#1704}(`U`_sx))] +[check_dims] +dims \ = +[visit_exp `RELOP`_instr(`I32`_numtype, `GE`_relop_(`U`_sx))] +[visit_exp (`I32`_numtype, `GE`_relop_(`U`_sx))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `GE`_relop_{sx#1704}(`U`_sx)] -[visit_exp sx#1704] -[visit_id sx#1704] +[visit_exp `GE`_relop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] ps' = [check_dims] -[check_dims] numtype#684 -dims \ = numtype#684 -[visit_exp `TESTOP`_instr{numtype#684}(`I64`_numtype, `EQZ`_testop_)] -[visit_exp numtype#684] -[visit_id numtype#684] +[check_dims] +dims \ = +[visit_exp `TESTOP`_instr(`I64`_numtype, `EQZ`_testop_)] [visit_exp (`I64`_numtype, `EQZ`_testop_)] [visit_exp `I64`_numtype] [visit_exp ()] @@ -75820,195 +62056,147 @@ dims \ = numtype#684 [visit_exp ()] ps' = [check_dims] -[check_dims] numtype#686 -dims \ = numtype#686 -[visit_exp `RELOP`_instr{numtype#686}(`I64`_numtype, `EQ`_relop_)] -[visit_exp numtype#686] -[visit_id numtype#686] +[check_dims] +dims \ = +[visit_exp `RELOP`_instr(`I64`_numtype, `EQ`_relop_)] [visit_exp (`I64`_numtype, `EQ`_relop_)] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `EQ`_relop_] [visit_exp ()] -[check_dims] numtype#688 -dims \ = numtype#688 -[visit_exp `RELOP`_instr{numtype#688}(`I64`_numtype, `NE`_relop_)] -[visit_exp numtype#688] -[visit_id numtype#688] +[check_dims] +dims \ = +[visit_exp `RELOP`_instr(`I64`_numtype, `NE`_relop_)] [visit_exp (`I64`_numtype, `NE`_relop_)] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `NE`_relop_] [visit_exp ()] -[check_dims] numtype#690 sx#1948 -dims \ = numtype#690, sx#1948 -[visit_exp `RELOP`_instr{numtype#690}(`I64`_numtype, `LT`_relop_{sx#1948}(`S`_sx))] -[visit_exp numtype#690] -[visit_id numtype#690] -[visit_exp (`I64`_numtype, `LT`_relop_{sx#1948}(`S`_sx))] +[check_dims] +dims \ = +[visit_exp `RELOP`_instr(`I64`_numtype, `LT`_relop_(`S`_sx))] +[visit_exp (`I64`_numtype, `LT`_relop_(`S`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `LT`_relop_{sx#1948}(`S`_sx)] -[visit_exp sx#1948] -[visit_id sx#1948] +[visit_exp `LT`_relop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] numtype#692 sx#2072 -dims \ = numtype#692, sx#2072 -[visit_exp `RELOP`_instr{numtype#692}(`I64`_numtype, `LT`_relop_{sx#2072}(`U`_sx))] -[visit_exp numtype#692] -[visit_id numtype#692] -[visit_exp (`I64`_numtype, `LT`_relop_{sx#2072}(`U`_sx))] +[check_dims] +dims \ = +[visit_exp `RELOP`_instr(`I64`_numtype, `LT`_relop_(`U`_sx))] +[visit_exp (`I64`_numtype, `LT`_relop_(`U`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `LT`_relop_{sx#2072}(`U`_sx)] -[visit_exp sx#2072] -[visit_id sx#2072] +[visit_exp `LT`_relop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] numtype#694 sx#2196 -dims \ = numtype#694, sx#2196 -[visit_exp `RELOP`_instr{numtype#694}(`I64`_numtype, `GT`_relop_{sx#2196}(`S`_sx))] -[visit_exp numtype#694] -[visit_id numtype#694] -[visit_exp (`I64`_numtype, `GT`_relop_{sx#2196}(`S`_sx))] +[check_dims] +dims \ = +[visit_exp `RELOP`_instr(`I64`_numtype, `GT`_relop_(`S`_sx))] +[visit_exp (`I64`_numtype, `GT`_relop_(`S`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `GT`_relop_{sx#2196}(`S`_sx)] -[visit_exp sx#2196] -[visit_id sx#2196] +[visit_exp `GT`_relop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] numtype#696 sx#2320 -dims \ = numtype#696, sx#2320 -[visit_exp `RELOP`_instr{numtype#696}(`I64`_numtype, `GT`_relop_{sx#2320}(`U`_sx))] -[visit_exp numtype#696] -[visit_id numtype#696] -[visit_exp (`I64`_numtype, `GT`_relop_{sx#2320}(`U`_sx))] +[check_dims] +dims \ = +[visit_exp `RELOP`_instr(`I64`_numtype, `GT`_relop_(`U`_sx))] +[visit_exp (`I64`_numtype, `GT`_relop_(`U`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `GT`_relop_{sx#2320}(`U`_sx)] -[visit_exp sx#2320] -[visit_id sx#2320] +[visit_exp `GT`_relop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] numtype#698 sx#2444 -dims \ = numtype#698, sx#2444 -[visit_exp `RELOP`_instr{numtype#698}(`I64`_numtype, `LE`_relop_{sx#2444}(`S`_sx))] -[visit_exp numtype#698] -[visit_id numtype#698] -[visit_exp (`I64`_numtype, `LE`_relop_{sx#2444}(`S`_sx))] +[check_dims] +dims \ = +[visit_exp `RELOP`_instr(`I64`_numtype, `LE`_relop_(`S`_sx))] +[visit_exp (`I64`_numtype, `LE`_relop_(`S`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `LE`_relop_{sx#2444}(`S`_sx)] -[visit_exp sx#2444] -[visit_id sx#2444] +[visit_exp `LE`_relop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] numtype#700 sx#2568 -dims \ = numtype#700, sx#2568 -[visit_exp `RELOP`_instr{numtype#700}(`I64`_numtype, `LE`_relop_{sx#2568}(`U`_sx))] -[visit_exp numtype#700] -[visit_id numtype#700] -[visit_exp (`I64`_numtype, `LE`_relop_{sx#2568}(`U`_sx))] +[check_dims] +dims \ = +[visit_exp `RELOP`_instr(`I64`_numtype, `LE`_relop_(`U`_sx))] +[visit_exp (`I64`_numtype, `LE`_relop_(`U`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `LE`_relop_{sx#2568}(`U`_sx)] -[visit_exp sx#2568] -[visit_id sx#2568] +[visit_exp `LE`_relop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] numtype#702 sx#2692 -dims \ = numtype#702, sx#2692 -[visit_exp `RELOP`_instr{numtype#702}(`I64`_numtype, `GE`_relop_{sx#2692}(`S`_sx))] -[visit_exp numtype#702] -[visit_id numtype#702] -[visit_exp (`I64`_numtype, `GE`_relop_{sx#2692}(`S`_sx))] +[check_dims] +dims \ = +[visit_exp `RELOP`_instr(`I64`_numtype, `GE`_relop_(`S`_sx))] +[visit_exp (`I64`_numtype, `GE`_relop_(`S`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `GE`_relop_{sx#2692}(`S`_sx)] -[visit_exp sx#2692] -[visit_id sx#2692] +[visit_exp `GE`_relop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] numtype#704 sx#2816 -dims \ = numtype#704, sx#2816 -[visit_exp `RELOP`_instr{numtype#704}(`I64`_numtype, `GE`_relop_{sx#2816}(`U`_sx))] -[visit_exp numtype#704] -[visit_id numtype#704] -[visit_exp (`I64`_numtype, `GE`_relop_{sx#2816}(`U`_sx))] +[check_dims] +dims \ = +[visit_exp `RELOP`_instr(`I64`_numtype, `GE`_relop_(`U`_sx))] +[visit_exp (`I64`_numtype, `GE`_relop_(`U`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `GE`_relop_{sx#2816}(`U`_sx)] -[visit_exp sx#2816] -[visit_id sx#2816] +[visit_exp `GE`_relop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] ps' = [check_dims] -[check_dims] numtype#706 -dims \ = numtype#706 -[visit_exp `RELOP`_instr{numtype#706}(`F32`_numtype, `EQ`_relop_)] -[visit_exp numtype#706] -[visit_id numtype#706] +[check_dims] +dims \ = +[visit_exp `RELOP`_instr(`F32`_numtype, `EQ`_relop_)] [visit_exp (`F32`_numtype, `EQ`_relop_)] [visit_exp `F32`_numtype] [visit_exp ()] [visit_exp `EQ`_relop_] [visit_exp ()] -[check_dims] numtype#708 -dims \ = numtype#708 -[visit_exp `RELOP`_instr{numtype#708}(`F32`_numtype, `NE`_relop_)] -[visit_exp numtype#708] -[visit_id numtype#708] +[check_dims] +dims \ = +[visit_exp `RELOP`_instr(`F32`_numtype, `NE`_relop_)] [visit_exp (`F32`_numtype, `NE`_relop_)] [visit_exp `F32`_numtype] [visit_exp ()] [visit_exp `NE`_relop_] [visit_exp ()] -[check_dims] numtype#710 -dims \ = numtype#710 -[visit_exp `RELOP`_instr{numtype#710}(`F32`_numtype, `LT`_relop_)] -[visit_exp numtype#710] -[visit_id numtype#710] +[check_dims] +dims \ = +[visit_exp `RELOP`_instr(`F32`_numtype, `LT`_relop_)] [visit_exp (`F32`_numtype, `LT`_relop_)] [visit_exp `F32`_numtype] [visit_exp ()] [visit_exp `LT`_relop_] [visit_exp ()] -[check_dims] numtype#712 -dims \ = numtype#712 -[visit_exp `RELOP`_instr{numtype#712}(`F32`_numtype, `GT`_relop_)] -[visit_exp numtype#712] -[visit_id numtype#712] +[check_dims] +dims \ = +[visit_exp `RELOP`_instr(`F32`_numtype, `GT`_relop_)] [visit_exp (`F32`_numtype, `GT`_relop_)] [visit_exp `F32`_numtype] [visit_exp ()] [visit_exp `GT`_relop_] [visit_exp ()] -[check_dims] numtype#714 -dims \ = numtype#714 -[visit_exp `RELOP`_instr{numtype#714}(`F32`_numtype, `LE`_relop_)] -[visit_exp numtype#714] -[visit_id numtype#714] +[check_dims] +dims \ = +[visit_exp `RELOP`_instr(`F32`_numtype, `LE`_relop_)] [visit_exp (`F32`_numtype, `LE`_relop_)] [visit_exp `F32`_numtype] [visit_exp ()] [visit_exp `LE`_relop_] [visit_exp ()] -[check_dims] numtype#716 -dims \ = numtype#716 -[visit_exp `RELOP`_instr{numtype#716}(`F32`_numtype, `GE`_relop_)] -[visit_exp numtype#716] -[visit_id numtype#716] +[check_dims] +dims \ = +[visit_exp `RELOP`_instr(`F32`_numtype, `GE`_relop_)] [visit_exp (`F32`_numtype, `GE`_relop_)] [visit_exp `F32`_numtype] [visit_exp ()] @@ -76016,61 +62204,49 @@ dims \ = numtype#716 [visit_exp ()] ps' = [check_dims] -[check_dims] numtype#718 -dims \ = numtype#718 -[visit_exp `RELOP`_instr{numtype#718}(`F64`_numtype, `EQ`_relop_)] -[visit_exp numtype#718] -[visit_id numtype#718] +[check_dims] +dims \ = +[visit_exp `RELOP`_instr(`F64`_numtype, `EQ`_relop_)] [visit_exp (`F64`_numtype, `EQ`_relop_)] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `EQ`_relop_] [visit_exp ()] -[check_dims] numtype#720 -dims \ = numtype#720 -[visit_exp `RELOP`_instr{numtype#720}(`F64`_numtype, `NE`_relop_)] -[visit_exp numtype#720] -[visit_id numtype#720] +[check_dims] +dims \ = +[visit_exp `RELOP`_instr(`F64`_numtype, `NE`_relop_)] [visit_exp (`F64`_numtype, `NE`_relop_)] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `NE`_relop_] [visit_exp ()] -[check_dims] numtype#722 -dims \ = numtype#722 -[visit_exp `RELOP`_instr{numtype#722}(`F64`_numtype, `LT`_relop_)] -[visit_exp numtype#722] -[visit_id numtype#722] +[check_dims] +dims \ = +[visit_exp `RELOP`_instr(`F64`_numtype, `LT`_relop_)] [visit_exp (`F64`_numtype, `LT`_relop_)] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `LT`_relop_] [visit_exp ()] -[check_dims] numtype#724 -dims \ = numtype#724 -[visit_exp `RELOP`_instr{numtype#724}(`F64`_numtype, `GT`_relop_)] -[visit_exp numtype#724] -[visit_id numtype#724] +[check_dims] +dims \ = +[visit_exp `RELOP`_instr(`F64`_numtype, `GT`_relop_)] [visit_exp (`F64`_numtype, `GT`_relop_)] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `GT`_relop_] [visit_exp ()] -[check_dims] numtype#726 -dims \ = numtype#726 -[visit_exp `RELOP`_instr{numtype#726}(`F64`_numtype, `LE`_relop_)] -[visit_exp numtype#726] -[visit_id numtype#726] +[check_dims] +dims \ = +[visit_exp `RELOP`_instr(`F64`_numtype, `LE`_relop_)] [visit_exp (`F64`_numtype, `LE`_relop_)] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `LE`_relop_] [visit_exp ()] -[check_dims] numtype#728 -dims \ = numtype#728 -[visit_exp `RELOP`_instr{numtype#728}(`F64`_numtype, `GE`_relop_)] -[visit_exp numtype#728] -[visit_id numtype#728] +[check_dims] +dims \ = +[visit_exp `RELOP`_instr(`F64`_numtype, `GE`_relop_)] [visit_exp (`F64`_numtype, `GE`_relop_)] [visit_exp `F64`_numtype] [visit_exp ()] @@ -76078,31 +62254,25 @@ dims \ = numtype#728 [visit_exp ()] ps' = [check_dims] -[check_dims] numtype#730 -dims \ = numtype#730 -[visit_exp `UNOP`_instr{numtype#730}(`I32`_numtype, `CLZ`_unop_)] -[visit_exp numtype#730] -[visit_id numtype#730] +[check_dims] +dims \ = +[visit_exp `UNOP`_instr(`I32`_numtype, `CLZ`_unop_)] [visit_exp (`I32`_numtype, `CLZ`_unop_)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp `CLZ`_unop_] [visit_exp ()] -[check_dims] numtype#732 -dims \ = numtype#732 -[visit_exp `UNOP`_instr{numtype#732}(`I32`_numtype, `CTZ`_unop_)] -[visit_exp numtype#732] -[visit_id numtype#732] +[check_dims] +dims \ = +[visit_exp `UNOP`_instr(`I32`_numtype, `CTZ`_unop_)] [visit_exp (`I32`_numtype, `CTZ`_unop_)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp `CTZ`_unop_] [visit_exp ()] -[check_dims] numtype#734 -dims \ = numtype#734 -[visit_exp `UNOP`_instr{numtype#734}(`I32`_numtype, `POPCNT`_unop_)] -[visit_exp numtype#734] -[visit_id numtype#734] +[check_dims] +dims \ = +[visit_exp `UNOP`_instr(`I32`_numtype, `POPCNT`_unop_)] [visit_exp (`I32`_numtype, `POPCNT`_unop_)] [visit_exp `I32`_numtype] [visit_exp ()] @@ -76110,175 +62280,133 @@ dims \ = numtype#734 [visit_exp ()] ps' = [check_dims] -[check_dims] numtype#736 -dims \ = numtype#736 -[visit_exp `BINOP`_instr{numtype#736}(`I32`_numtype, `ADD`_binop_)] -[visit_exp numtype#736] -[visit_id numtype#736] +[check_dims] +dims \ = +[visit_exp `BINOP`_instr(`I32`_numtype, `ADD`_binop_)] [visit_exp (`I32`_numtype, `ADD`_binop_)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp `ADD`_binop_] [visit_exp ()] -[check_dims] numtype#738 -dims \ = numtype#738 -[visit_exp `BINOP`_instr{numtype#738}(`I32`_numtype, `SUB`_binop_)] -[visit_exp numtype#738] -[visit_id numtype#738] +[check_dims] +dims \ = +[visit_exp `BINOP`_instr(`I32`_numtype, `SUB`_binop_)] [visit_exp (`I32`_numtype, `SUB`_binop_)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp `SUB`_binop_] [visit_exp ()] -[check_dims] numtype#740 -dims \ = numtype#740 -[visit_exp `BINOP`_instr{numtype#740}(`I32`_numtype, `MUL`_binop_)] -[visit_exp numtype#740] -[visit_id numtype#740] +[check_dims] +dims \ = +[visit_exp `BINOP`_instr(`I32`_numtype, `MUL`_binop_)] [visit_exp (`I32`_numtype, `MUL`_binop_)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp `MUL`_binop_] [visit_exp ()] -[check_dims] numtype#742 sx#3045 -dims \ = numtype#742, sx#3045 -[visit_exp `BINOP`_instr{numtype#742}(`I32`_numtype, `DIV`_binop_{sx#3045}(`S`_sx))] -[visit_exp numtype#742] -[visit_id numtype#742] -[visit_exp (`I32`_numtype, `DIV`_binop_{sx#3045}(`S`_sx))] +[check_dims] +dims \ = +[visit_exp `BINOP`_instr(`I32`_numtype, `DIV`_binop_(`S`_sx))] +[visit_exp (`I32`_numtype, `DIV`_binop_(`S`_sx))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `DIV`_binop_{sx#3045}(`S`_sx)] -[visit_exp sx#3045] -[visit_id sx#3045] +[visit_exp `DIV`_binop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] numtype#744 sx#3139 -dims \ = numtype#744, sx#3139 -[visit_exp `BINOP`_instr{numtype#744}(`I32`_numtype, `DIV`_binop_{sx#3139}(`U`_sx))] -[visit_exp numtype#744] -[visit_id numtype#744] -[visit_exp (`I32`_numtype, `DIV`_binop_{sx#3139}(`U`_sx))] +[check_dims] +dims \ = +[visit_exp `BINOP`_instr(`I32`_numtype, `DIV`_binop_(`U`_sx))] +[visit_exp (`I32`_numtype, `DIV`_binop_(`U`_sx))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `DIV`_binop_{sx#3139}(`U`_sx)] -[visit_exp sx#3139] -[visit_id sx#3139] +[visit_exp `DIV`_binop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] numtype#746 sx#3233 -dims \ = numtype#746, sx#3233 -[visit_exp `BINOP`_instr{numtype#746}(`I32`_numtype, `REM`_binop_{sx#3233}(`S`_sx))] -[visit_exp numtype#746] -[visit_id numtype#746] -[visit_exp (`I32`_numtype, `REM`_binop_{sx#3233}(`S`_sx))] +[check_dims] +dims \ = +[visit_exp `BINOP`_instr(`I32`_numtype, `REM`_binop_(`S`_sx))] +[visit_exp (`I32`_numtype, `REM`_binop_(`S`_sx))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `REM`_binop_{sx#3233}(`S`_sx)] -[visit_exp sx#3233] -[visit_id sx#3233] +[visit_exp `REM`_binop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] numtype#748 sx#3327 -dims \ = numtype#748, sx#3327 -[visit_exp `BINOP`_instr{numtype#748}(`I32`_numtype, `REM`_binop_{sx#3327}(`U`_sx))] -[visit_exp numtype#748] -[visit_id numtype#748] -[visit_exp (`I32`_numtype, `REM`_binop_{sx#3327}(`U`_sx))] +[check_dims] +dims \ = +[visit_exp `BINOP`_instr(`I32`_numtype, `REM`_binop_(`U`_sx))] +[visit_exp (`I32`_numtype, `REM`_binop_(`U`_sx))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `REM`_binop_{sx#3327}(`U`_sx)] -[visit_exp sx#3327] -[visit_id sx#3327] +[visit_exp `REM`_binop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] numtype#750 -dims \ = numtype#750 -[visit_exp `BINOP`_instr{numtype#750}(`I32`_numtype, `AND`_binop_)] -[visit_exp numtype#750] -[visit_id numtype#750] +[check_dims] +dims \ = +[visit_exp `BINOP`_instr(`I32`_numtype, `AND`_binop_)] [visit_exp (`I32`_numtype, `AND`_binop_)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp `AND`_binop_] [visit_exp ()] -[check_dims] numtype#752 -dims \ = numtype#752 -[visit_exp `BINOP`_instr{numtype#752}(`I32`_numtype, `OR`_binop_)] -[visit_exp numtype#752] -[visit_id numtype#752] +[check_dims] +dims \ = +[visit_exp `BINOP`_instr(`I32`_numtype, `OR`_binop_)] [visit_exp (`I32`_numtype, `OR`_binop_)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp `OR`_binop_] [visit_exp ()] -[check_dims] numtype#754 -dims \ = numtype#754 -[visit_exp `BINOP`_instr{numtype#754}(`I32`_numtype, `XOR`_binop_)] -[visit_exp numtype#754] -[visit_id numtype#754] +[check_dims] +dims \ = +[visit_exp `BINOP`_instr(`I32`_numtype, `XOR`_binop_)] [visit_exp (`I32`_numtype, `XOR`_binop_)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp `XOR`_binop_] [visit_exp ()] -[check_dims] numtype#756 -dims \ = numtype#756 -[visit_exp `BINOP`_instr{numtype#756}(`I32`_numtype, `SHL`_binop_)] -[visit_exp numtype#756] -[visit_id numtype#756] +[check_dims] +dims \ = +[visit_exp `BINOP`_instr(`I32`_numtype, `SHL`_binop_)] [visit_exp (`I32`_numtype, `SHL`_binop_)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp `SHL`_binop_] [visit_exp ()] -[check_dims] numtype#758 sx#3601 -dims \ = numtype#758, sx#3601 -[visit_exp `BINOP`_instr{numtype#758}(`I32`_numtype, `SHR`_binop_{sx#3601}(`S`_sx))] -[visit_exp numtype#758] -[visit_id numtype#758] -[visit_exp (`I32`_numtype, `SHR`_binop_{sx#3601}(`S`_sx))] +[check_dims] +dims \ = +[visit_exp `BINOP`_instr(`I32`_numtype, `SHR`_binop_(`S`_sx))] +[visit_exp (`I32`_numtype, `SHR`_binop_(`S`_sx))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `SHR`_binop_{sx#3601}(`S`_sx)] -[visit_exp sx#3601] -[visit_id sx#3601] +[visit_exp `SHR`_binop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] numtype#760 sx#3695 -dims \ = numtype#760, sx#3695 -[visit_exp `BINOP`_instr{numtype#760}(`I32`_numtype, `SHR`_binop_{sx#3695}(`U`_sx))] -[visit_exp numtype#760] -[visit_id numtype#760] -[visit_exp (`I32`_numtype, `SHR`_binop_{sx#3695}(`U`_sx))] +[check_dims] +dims \ = +[visit_exp `BINOP`_instr(`I32`_numtype, `SHR`_binop_(`U`_sx))] +[visit_exp (`I32`_numtype, `SHR`_binop_(`U`_sx))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `SHR`_binop_{sx#3695}(`U`_sx)] -[visit_exp sx#3695] -[visit_id sx#3695] +[visit_exp `SHR`_binop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] numtype#762 -dims \ = numtype#762 -[visit_exp `BINOP`_instr{numtype#762}(`I32`_numtype, `ROTL`_binop_)] -[visit_exp numtype#762] -[visit_id numtype#762] +[check_dims] +dims \ = +[visit_exp `BINOP`_instr(`I32`_numtype, `ROTL`_binop_)] [visit_exp (`I32`_numtype, `ROTL`_binop_)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp `ROTL`_binop_] [visit_exp ()] -[check_dims] numtype#764 -dims \ = numtype#764 -[visit_exp `BINOP`_instr{numtype#764}(`I32`_numtype, `ROTR`_binop_)] -[visit_exp numtype#764] -[visit_id numtype#764] +[check_dims] +dims \ = +[visit_exp `BINOP`_instr(`I32`_numtype, `ROTR`_binop_)] [visit_exp (`I32`_numtype, `ROTR`_binop_)] [visit_exp `I32`_numtype] [visit_exp ()] @@ -76286,31 +62414,25 @@ dims \ = numtype#764 [visit_exp ()] ps' = [check_dims] -[check_dims] numtype#766 -dims \ = numtype#766 -[visit_exp `UNOP`_instr{numtype#766}(`I64`_numtype, `CLZ`_unop_)] -[visit_exp numtype#766] -[visit_id numtype#766] +[check_dims] +dims \ = +[visit_exp `UNOP`_instr(`I64`_numtype, `CLZ`_unop_)] [visit_exp (`I64`_numtype, `CLZ`_unop_)] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `CLZ`_unop_] [visit_exp ()] -[check_dims] numtype#768 -dims \ = numtype#768 -[visit_exp `UNOP`_instr{numtype#768}(`I64`_numtype, `CTZ`_unop_)] -[visit_exp numtype#768] -[visit_id numtype#768] +[check_dims] +dims \ = +[visit_exp `UNOP`_instr(`I64`_numtype, `CTZ`_unop_)] [visit_exp (`I64`_numtype, `CTZ`_unop_)] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `CTZ`_unop_] [visit_exp ()] -[check_dims] numtype#770 -dims \ = numtype#770 -[visit_exp `UNOP`_instr{numtype#770}(`I64`_numtype, `POPCNT`_unop_)] -[visit_exp numtype#770] -[visit_id numtype#770] +[check_dims] +dims \ = +[visit_exp `UNOP`_instr(`I64`_numtype, `POPCNT`_unop_)] [visit_exp (`I64`_numtype, `POPCNT`_unop_)] [visit_exp `I64`_numtype] [visit_exp ()] @@ -76318,274 +62440,192 @@ dims \ = numtype#770 [visit_exp ()] ps' = [check_dims] -[check_dims] i#54600 i#54607 numtype#772 sz#909 -dims \ = i#54600, i#54607, numtype#772, sz#909 -[visit_exp `UNOP`_instr{numtype#772}(`I32`_numtype, `EXTEND`_unop_{sz#909, i#54600}(`%`_sz{i#54607}(8)))] -[visit_exp numtype#772] -[visit_id numtype#772] -[visit_exp (`I32`_numtype, `EXTEND`_unop_{sz#909, i#54600}(`%`_sz{i#54607}(8)))] +[check_dims] +dims \ = +[visit_exp `UNOP`_instr(`I32`_numtype, `EXTEND`_unop_(`%`_sz(8)))] +[visit_exp (`I32`_numtype, `EXTEND`_unop_(`%`_sz(8)))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `EXTEND`_unop_{sz#909, i#54600}(`%`_sz{i#54607}(8))] -[visit_exp sz#909] -[visit_id sz#909] -[visit_exp i#54600] -[visit_id i#54600] -[visit_exp (`%`_sz{i#54607}(8))] -[visit_exp `%`_sz{i#54607}(8)] -[visit_exp i#54607] -[visit_id i#54607] +[visit_exp `EXTEND`_unop_(`%`_sz(8))] +[visit_exp (`%`_sz(8))] +[visit_exp `%`_sz(8)] [visit_exp (8)] [visit_exp 8] -[check_dims] i#54616 i#54623 numtype#774 sz#943 -dims \ = i#54616, i#54623, numtype#774, sz#943 -[visit_exp `UNOP`_instr{numtype#774}(`I32`_numtype, `EXTEND`_unop_{sz#943, i#54616}(`%`_sz{i#54623}(16)))] -[visit_exp numtype#774] -[visit_id numtype#774] -[visit_exp (`I32`_numtype, `EXTEND`_unop_{sz#943, i#54616}(`%`_sz{i#54623}(16)))] +[check_dims] +dims \ = +[visit_exp `UNOP`_instr(`I32`_numtype, `EXTEND`_unop_(`%`_sz(16)))] +[visit_exp (`I32`_numtype, `EXTEND`_unop_(`%`_sz(16)))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `EXTEND`_unop_{sz#943, i#54616}(`%`_sz{i#54623}(16))] -[visit_exp sz#943] -[visit_id sz#943] -[visit_exp i#54616] -[visit_id i#54616] -[visit_exp (`%`_sz{i#54623}(16))] -[visit_exp `%`_sz{i#54623}(16)] -[visit_exp i#54623] -[visit_id i#54623] +[visit_exp `EXTEND`_unop_(`%`_sz(16))] +[visit_exp (`%`_sz(16))] +[visit_exp `%`_sz(16)] [visit_exp (16)] [visit_exp 16] ps' = [check_dims] -[check_dims] i#54632 i#54639 numtype#776 sz#977 -dims \ = i#54632, i#54639, numtype#776, sz#977 -[visit_exp `UNOP`_instr{numtype#776}(`I64`_numtype, `EXTEND`_unop_{sz#977, i#54632}(`%`_sz{i#54639}(8)))] -[visit_exp numtype#776] -[visit_id numtype#776] -[visit_exp (`I64`_numtype, `EXTEND`_unop_{sz#977, i#54632}(`%`_sz{i#54639}(8)))] +[check_dims] +dims \ = +[visit_exp `UNOP`_instr(`I64`_numtype, `EXTEND`_unop_(`%`_sz(8)))] +[visit_exp (`I64`_numtype, `EXTEND`_unop_(`%`_sz(8)))] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `EXTEND`_unop_{sz#977, i#54632}(`%`_sz{i#54639}(8))] -[visit_exp sz#977] -[visit_id sz#977] -[visit_exp i#54632] -[visit_id i#54632] -[visit_exp (`%`_sz{i#54639}(8))] -[visit_exp `%`_sz{i#54639}(8)] -[visit_exp i#54639] -[visit_id i#54639] +[visit_exp `EXTEND`_unop_(`%`_sz(8))] +[visit_exp (`%`_sz(8))] +[visit_exp `%`_sz(8)] [visit_exp (8)] [visit_exp 8] -[check_dims] i#54648 i#54655 numtype#778 sz#1011 -dims \ = i#54648, i#54655, numtype#778, sz#1011 -[visit_exp `UNOP`_instr{numtype#778}(`I64`_numtype, `EXTEND`_unop_{sz#1011, i#54648}(`%`_sz{i#54655}(16)))] -[visit_exp numtype#778] -[visit_id numtype#778] -[visit_exp (`I64`_numtype, `EXTEND`_unop_{sz#1011, i#54648}(`%`_sz{i#54655}(16)))] +[check_dims] +dims \ = +[visit_exp `UNOP`_instr(`I64`_numtype, `EXTEND`_unop_(`%`_sz(16)))] +[visit_exp (`I64`_numtype, `EXTEND`_unop_(`%`_sz(16)))] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `EXTEND`_unop_{sz#1011, i#54648}(`%`_sz{i#54655}(16))] -[visit_exp sz#1011] -[visit_id sz#1011] -[visit_exp i#54648] -[visit_id i#54648] -[visit_exp (`%`_sz{i#54655}(16))] -[visit_exp `%`_sz{i#54655}(16)] -[visit_exp i#54655] -[visit_id i#54655] +[visit_exp `EXTEND`_unop_(`%`_sz(16))] +[visit_exp (`%`_sz(16))] +[visit_exp `%`_sz(16)] [visit_exp (16)] [visit_exp 16] -[check_dims] i#54664 i#54671 numtype#780 sz#1045 -dims \ = i#54664, i#54671, numtype#780, sz#1045 -[visit_exp `UNOP`_instr{numtype#780}(`I64`_numtype, `EXTEND`_unop_{sz#1045, i#54664}(`%`_sz{i#54671}(32)))] -[visit_exp numtype#780] -[visit_id numtype#780] -[visit_exp (`I64`_numtype, `EXTEND`_unop_{sz#1045, i#54664}(`%`_sz{i#54671}(32)))] +[check_dims] +dims \ = +[visit_exp `UNOP`_instr(`I64`_numtype, `EXTEND`_unop_(`%`_sz(32)))] +[visit_exp (`I64`_numtype, `EXTEND`_unop_(`%`_sz(32)))] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `EXTEND`_unop_{sz#1045, i#54664}(`%`_sz{i#54671}(32))] -[visit_exp sz#1045] -[visit_id sz#1045] -[visit_exp i#54664] -[visit_id i#54664] -[visit_exp (`%`_sz{i#54671}(32))] -[visit_exp `%`_sz{i#54671}(32)] -[visit_exp i#54671] -[visit_id i#54671] +[visit_exp `EXTEND`_unop_(`%`_sz(32))] +[visit_exp (`%`_sz(32))] +[visit_exp `%`_sz(32)] [visit_exp (32)] [visit_exp 32] ps' = [check_dims] -[check_dims] numtype#782 -dims \ = numtype#782 -[visit_exp `BINOP`_instr{numtype#782}(`I64`_numtype, `ADD`_binop_)] -[visit_exp numtype#782] -[visit_id numtype#782] +[check_dims] +dims \ = +[visit_exp `BINOP`_instr(`I64`_numtype, `ADD`_binop_)] [visit_exp (`I64`_numtype, `ADD`_binop_)] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `ADD`_binop_] [visit_exp ()] -[check_dims] numtype#784 -dims \ = numtype#784 -[visit_exp `BINOP`_instr{numtype#784}(`I64`_numtype, `SUB`_binop_)] -[visit_exp numtype#784] -[visit_id numtype#784] +[check_dims] +dims \ = +[visit_exp `BINOP`_instr(`I64`_numtype, `SUB`_binop_)] [visit_exp (`I64`_numtype, `SUB`_binop_)] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `SUB`_binop_] [visit_exp ()] -[check_dims] numtype#786 -dims \ = numtype#786 -[visit_exp `BINOP`_instr{numtype#786}(`I64`_numtype, `MUL`_binop_)] -[visit_exp numtype#786] -[visit_id numtype#786] +[check_dims] +dims \ = +[visit_exp `BINOP`_instr(`I64`_numtype, `MUL`_binop_)] [visit_exp (`I64`_numtype, `MUL`_binop_)] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `MUL`_binop_] [visit_exp ()] -[check_dims] numtype#788 sx#4014 -dims \ = numtype#788, sx#4014 -[visit_exp `BINOP`_instr{numtype#788}(`I64`_numtype, `DIV`_binop_{sx#4014}(`S`_sx))] -[visit_exp numtype#788] -[visit_id numtype#788] -[visit_exp (`I64`_numtype, `DIV`_binop_{sx#4014}(`S`_sx))] +[check_dims] +dims \ = +[visit_exp `BINOP`_instr(`I64`_numtype, `DIV`_binop_(`S`_sx))] +[visit_exp (`I64`_numtype, `DIV`_binop_(`S`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `DIV`_binop_{sx#4014}(`S`_sx)] -[visit_exp sx#4014] -[visit_id sx#4014] +[visit_exp `DIV`_binop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] numtype#790 sx#4108 -dims \ = numtype#790, sx#4108 -[visit_exp `BINOP`_instr{numtype#790}(`I64`_numtype, `DIV`_binop_{sx#4108}(`U`_sx))] -[visit_exp numtype#790] -[visit_id numtype#790] -[visit_exp (`I64`_numtype, `DIV`_binop_{sx#4108}(`U`_sx))] +[check_dims] +dims \ = +[visit_exp `BINOP`_instr(`I64`_numtype, `DIV`_binop_(`U`_sx))] +[visit_exp (`I64`_numtype, `DIV`_binop_(`U`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `DIV`_binop_{sx#4108}(`U`_sx)] -[visit_exp sx#4108] -[visit_id sx#4108] +[visit_exp `DIV`_binop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] numtype#792 sx#4202 -dims \ = numtype#792, sx#4202 -[visit_exp `BINOP`_instr{numtype#792}(`I64`_numtype, `REM`_binop_{sx#4202}(`S`_sx))] -[visit_exp numtype#792] -[visit_id numtype#792] -[visit_exp (`I64`_numtype, `REM`_binop_{sx#4202}(`S`_sx))] +[check_dims] +dims \ = +[visit_exp `BINOP`_instr(`I64`_numtype, `REM`_binop_(`S`_sx))] +[visit_exp (`I64`_numtype, `REM`_binop_(`S`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `REM`_binop_{sx#4202}(`S`_sx)] -[visit_exp sx#4202] -[visit_id sx#4202] +[visit_exp `REM`_binop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] numtype#794 sx#4296 -dims \ = numtype#794, sx#4296 -[visit_exp `BINOP`_instr{numtype#794}(`I64`_numtype, `REM`_binop_{sx#4296}(`U`_sx))] -[visit_exp numtype#794] -[visit_id numtype#794] -[visit_exp (`I64`_numtype, `REM`_binop_{sx#4296}(`U`_sx))] +[check_dims] +dims \ = +[visit_exp `BINOP`_instr(`I64`_numtype, `REM`_binop_(`U`_sx))] +[visit_exp (`I64`_numtype, `REM`_binop_(`U`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `REM`_binop_{sx#4296}(`U`_sx)] -[visit_exp sx#4296] -[visit_id sx#4296] +[visit_exp `REM`_binop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] numtype#796 -dims \ = numtype#796 -[visit_exp `BINOP`_instr{numtype#796}(`I64`_numtype, `AND`_binop_)] -[visit_exp numtype#796] -[visit_id numtype#796] +[check_dims] +dims \ = +[visit_exp `BINOP`_instr(`I64`_numtype, `AND`_binop_)] [visit_exp (`I64`_numtype, `AND`_binop_)] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `AND`_binop_] [visit_exp ()] -[check_dims] numtype#798 -dims \ = numtype#798 -[visit_exp `BINOP`_instr{numtype#798}(`I64`_numtype, `OR`_binop_)] -[visit_exp numtype#798] -[visit_id numtype#798] +[check_dims] +dims \ = +[visit_exp `BINOP`_instr(`I64`_numtype, `OR`_binop_)] [visit_exp (`I64`_numtype, `OR`_binop_)] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `OR`_binop_] [visit_exp ()] -[check_dims] numtype#800 -dims \ = numtype#800 -[visit_exp `BINOP`_instr{numtype#800}(`I64`_numtype, `XOR`_binop_)] -[visit_exp numtype#800] -[visit_id numtype#800] +[check_dims] +dims \ = +[visit_exp `BINOP`_instr(`I64`_numtype, `XOR`_binop_)] [visit_exp (`I64`_numtype, `XOR`_binop_)] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `XOR`_binop_] [visit_exp ()] -[check_dims] numtype#802 -dims \ = numtype#802 -[visit_exp `BINOP`_instr{numtype#802}(`I64`_numtype, `SHL`_binop_)] -[visit_exp numtype#802] -[visit_id numtype#802] +[check_dims] +dims \ = +[visit_exp `BINOP`_instr(`I64`_numtype, `SHL`_binop_)] [visit_exp (`I64`_numtype, `SHL`_binop_)] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `SHL`_binop_] [visit_exp ()] -[check_dims] numtype#804 sx#4570 -dims \ = numtype#804, sx#4570 -[visit_exp `BINOP`_instr{numtype#804}(`I64`_numtype, `SHR`_binop_{sx#4570}(`S`_sx))] -[visit_exp numtype#804] -[visit_id numtype#804] -[visit_exp (`I64`_numtype, `SHR`_binop_{sx#4570}(`S`_sx))] +[check_dims] +dims \ = +[visit_exp `BINOP`_instr(`I64`_numtype, `SHR`_binop_(`S`_sx))] +[visit_exp (`I64`_numtype, `SHR`_binop_(`S`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `SHR`_binop_{sx#4570}(`S`_sx)] -[visit_exp sx#4570] -[visit_id sx#4570] +[visit_exp `SHR`_binop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] numtype#806 sx#4664 -dims \ = numtype#806, sx#4664 -[visit_exp `BINOP`_instr{numtype#806}(`I64`_numtype, `SHR`_binop_{sx#4664}(`U`_sx))] -[visit_exp numtype#806] -[visit_id numtype#806] -[visit_exp (`I64`_numtype, `SHR`_binop_{sx#4664}(`U`_sx))] +[check_dims] +dims \ = +[visit_exp `BINOP`_instr(`I64`_numtype, `SHR`_binop_(`U`_sx))] +[visit_exp (`I64`_numtype, `SHR`_binop_(`U`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `SHR`_binop_{sx#4664}(`U`_sx)] -[visit_exp sx#4664] -[visit_id sx#4664] +[visit_exp `SHR`_binop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] numtype#808 -dims \ = numtype#808 -[visit_exp `BINOP`_instr{numtype#808}(`I64`_numtype, `ROTL`_binop_)] -[visit_exp numtype#808] -[visit_id numtype#808] +[check_dims] +dims \ = +[visit_exp `BINOP`_instr(`I64`_numtype, `ROTL`_binop_)] [visit_exp (`I64`_numtype, `ROTL`_binop_)] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `ROTL`_binop_] [visit_exp ()] -[check_dims] numtype#810 -dims \ = numtype#810 -[visit_exp `BINOP`_instr{numtype#810}(`I64`_numtype, `ROTR`_binop_)] -[visit_exp numtype#810] -[visit_id numtype#810] +[check_dims] +dims \ = +[visit_exp `BINOP`_instr(`I64`_numtype, `ROTR`_binop_)] [visit_exp (`I64`_numtype, `ROTR`_binop_)] [visit_exp `I64`_numtype] [visit_exp ()] @@ -76593,71 +62633,57 @@ dims \ = numtype#810 [visit_exp ()] ps' = [check_dims] -[check_dims] numtype#812 -dims \ = numtype#812 -[visit_exp `UNOP`_instr{numtype#812}(`F32`_numtype, `ABS`_unop_)] -[visit_exp numtype#812] -[visit_id numtype#812] +[check_dims] +dims \ = +[visit_exp `UNOP`_instr(`F32`_numtype, `ABS`_unop_)] [visit_exp (`F32`_numtype, `ABS`_unop_)] [visit_exp `F32`_numtype] [visit_exp ()] [visit_exp `ABS`_unop_] [visit_exp ()] -[check_dims] numtype#814 -dims \ = numtype#814 -[visit_exp `UNOP`_instr{numtype#814}(`F32`_numtype, `NEG`_unop_)] -[visit_exp numtype#814] -[visit_id numtype#814] +[check_dims] +dims \ = +[visit_exp `UNOP`_instr(`F32`_numtype, `NEG`_unop_)] [visit_exp (`F32`_numtype, `NEG`_unop_)] [visit_exp `F32`_numtype] [visit_exp ()] [visit_exp `NEG`_unop_] [visit_exp ()] -[check_dims] numtype#816 -dims \ = numtype#816 -[visit_exp `UNOP`_instr{numtype#816}(`F32`_numtype, `CEIL`_unop_)] -[visit_exp numtype#816] -[visit_id numtype#816] +[check_dims] +dims \ = +[visit_exp `UNOP`_instr(`F32`_numtype, `CEIL`_unop_)] [visit_exp (`F32`_numtype, `CEIL`_unop_)] [visit_exp `F32`_numtype] [visit_exp ()] [visit_exp `CEIL`_unop_] [visit_exp ()] -[check_dims] numtype#818 -dims \ = numtype#818 -[visit_exp `UNOP`_instr{numtype#818}(`F32`_numtype, `FLOOR`_unop_)] -[visit_exp numtype#818] -[visit_id numtype#818] +[check_dims] +dims \ = +[visit_exp `UNOP`_instr(`F32`_numtype, `FLOOR`_unop_)] [visit_exp (`F32`_numtype, `FLOOR`_unop_)] [visit_exp `F32`_numtype] [visit_exp ()] [visit_exp `FLOOR`_unop_] [visit_exp ()] -[check_dims] numtype#820 -dims \ = numtype#820 -[visit_exp `UNOP`_instr{numtype#820}(`F32`_numtype, `TRUNC`_unop_)] -[visit_exp numtype#820] -[visit_id numtype#820] +[check_dims] +dims \ = +[visit_exp `UNOP`_instr(`F32`_numtype, `TRUNC`_unop_)] [visit_exp (`F32`_numtype, `TRUNC`_unop_)] [visit_exp `F32`_numtype] [visit_exp ()] [visit_exp `TRUNC`_unop_] [visit_exp ()] -[check_dims] numtype#822 -dims \ = numtype#822 -[visit_exp `UNOP`_instr{numtype#822}(`F32`_numtype, `NEAREST`_unop_)] -[visit_exp numtype#822] -[visit_id numtype#822] +[check_dims] +dims \ = +[visit_exp `UNOP`_instr(`F32`_numtype, `NEAREST`_unop_)] [visit_exp (`F32`_numtype, `NEAREST`_unop_)] [visit_exp `F32`_numtype] [visit_exp ()] [visit_exp `NEAREST`_unop_] [visit_exp ()] -[check_dims] numtype#824 -dims \ = numtype#824 -[visit_exp `UNOP`_instr{numtype#824}(`F32`_numtype, `SQRT`_unop_)] -[visit_exp numtype#824] -[visit_id numtype#824] +[check_dims] +dims \ = +[visit_exp `UNOP`_instr(`F32`_numtype, `SQRT`_unop_)] [visit_exp (`F32`_numtype, `SQRT`_unop_)] [visit_exp `F32`_numtype] [visit_exp ()] @@ -76665,71 +62691,57 @@ dims \ = numtype#824 [visit_exp ()] ps' = [check_dims] -[check_dims] numtype#826 -dims \ = numtype#826 -[visit_exp `BINOP`_instr{numtype#826}(`F32`_numtype, `ADD`_binop_)] -[visit_exp numtype#826] -[visit_id numtype#826] +[check_dims] +dims \ = +[visit_exp `BINOP`_instr(`F32`_numtype, `ADD`_binop_)] [visit_exp (`F32`_numtype, `ADD`_binop_)] [visit_exp `F32`_numtype] [visit_exp ()] [visit_exp `ADD`_binop_] [visit_exp ()] -[check_dims] numtype#828 -dims \ = numtype#828 -[visit_exp `BINOP`_instr{numtype#828}(`F32`_numtype, `SUB`_binop_)] -[visit_exp numtype#828] -[visit_id numtype#828] +[check_dims] +dims \ = +[visit_exp `BINOP`_instr(`F32`_numtype, `SUB`_binop_)] [visit_exp (`F32`_numtype, `SUB`_binop_)] [visit_exp `F32`_numtype] [visit_exp ()] [visit_exp `SUB`_binop_] [visit_exp ()] -[check_dims] numtype#830 -dims \ = numtype#830 -[visit_exp `BINOP`_instr{numtype#830}(`F32`_numtype, `MUL`_binop_)] -[visit_exp numtype#830] -[visit_id numtype#830] +[check_dims] +dims \ = +[visit_exp `BINOP`_instr(`F32`_numtype, `MUL`_binop_)] [visit_exp (`F32`_numtype, `MUL`_binop_)] [visit_exp `F32`_numtype] [visit_exp ()] [visit_exp `MUL`_binop_] [visit_exp ()] -[check_dims] numtype#832 -dims \ = numtype#832 -[visit_exp `BINOP`_instr{numtype#832}(`F32`_numtype, `DIV`_binop_)] -[visit_exp numtype#832] -[visit_id numtype#832] +[check_dims] +dims \ = +[visit_exp `BINOP`_instr(`F32`_numtype, `DIV`_binop_)] [visit_exp (`F32`_numtype, `DIV`_binop_)] [visit_exp `F32`_numtype] [visit_exp ()] [visit_exp `DIV`_binop_] [visit_exp ()] -[check_dims] numtype#834 -dims \ = numtype#834 -[visit_exp `BINOP`_instr{numtype#834}(`F32`_numtype, `MIN`_binop_)] -[visit_exp numtype#834] -[visit_id numtype#834] +[check_dims] +dims \ = +[visit_exp `BINOP`_instr(`F32`_numtype, `MIN`_binop_)] [visit_exp (`F32`_numtype, `MIN`_binop_)] [visit_exp `F32`_numtype] [visit_exp ()] [visit_exp `MIN`_binop_] [visit_exp ()] -[check_dims] numtype#836 -dims \ = numtype#836 -[visit_exp `BINOP`_instr{numtype#836}(`F32`_numtype, `MAX`_binop_)] -[visit_exp numtype#836] -[visit_id numtype#836] +[check_dims] +dims \ = +[visit_exp `BINOP`_instr(`F32`_numtype, `MAX`_binop_)] [visit_exp (`F32`_numtype, `MAX`_binop_)] [visit_exp `F32`_numtype] [visit_exp ()] [visit_exp `MAX`_binop_] [visit_exp ()] -[check_dims] numtype#838 -dims \ = numtype#838 -[visit_exp `BINOP`_instr{numtype#838}(`F32`_numtype, `COPYSIGN`_binop_)] -[visit_exp numtype#838] -[visit_id numtype#838] +[check_dims] +dims \ = +[visit_exp `BINOP`_instr(`F32`_numtype, `COPYSIGN`_binop_)] [visit_exp (`F32`_numtype, `COPYSIGN`_binop_)] [visit_exp `F32`_numtype] [visit_exp ()] @@ -76737,71 +62749,57 @@ dims \ = numtype#838 [visit_exp ()] ps' = [check_dims] -[check_dims] numtype#840 -dims \ = numtype#840 -[visit_exp `UNOP`_instr{numtype#840}(`F64`_numtype, `ABS`_unop_)] -[visit_exp numtype#840] -[visit_id numtype#840] +[check_dims] +dims \ = +[visit_exp `UNOP`_instr(`F64`_numtype, `ABS`_unop_)] [visit_exp (`F64`_numtype, `ABS`_unop_)] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `ABS`_unop_] [visit_exp ()] -[check_dims] numtype#842 -dims \ = numtype#842 -[visit_exp `UNOP`_instr{numtype#842}(`F64`_numtype, `NEG`_unop_)] -[visit_exp numtype#842] -[visit_id numtype#842] +[check_dims] +dims \ = +[visit_exp `UNOP`_instr(`F64`_numtype, `NEG`_unop_)] [visit_exp (`F64`_numtype, `NEG`_unop_)] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `NEG`_unop_] [visit_exp ()] -[check_dims] numtype#844 -dims \ = numtype#844 -[visit_exp `UNOP`_instr{numtype#844}(`F64`_numtype, `CEIL`_unop_)] -[visit_exp numtype#844] -[visit_id numtype#844] +[check_dims] +dims \ = +[visit_exp `UNOP`_instr(`F64`_numtype, `CEIL`_unop_)] [visit_exp (`F64`_numtype, `CEIL`_unop_)] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `CEIL`_unop_] [visit_exp ()] -[check_dims] numtype#846 -dims \ = numtype#846 -[visit_exp `UNOP`_instr{numtype#846}(`F64`_numtype, `FLOOR`_unop_)] -[visit_exp numtype#846] -[visit_id numtype#846] +[check_dims] +dims \ = +[visit_exp `UNOP`_instr(`F64`_numtype, `FLOOR`_unop_)] [visit_exp (`F64`_numtype, `FLOOR`_unop_)] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `FLOOR`_unop_] [visit_exp ()] -[check_dims] numtype#848 -dims \ = numtype#848 -[visit_exp `UNOP`_instr{numtype#848}(`F64`_numtype, `TRUNC`_unop_)] -[visit_exp numtype#848] -[visit_id numtype#848] +[check_dims] +dims \ = +[visit_exp `UNOP`_instr(`F64`_numtype, `TRUNC`_unop_)] [visit_exp (`F64`_numtype, `TRUNC`_unop_)] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `TRUNC`_unop_] [visit_exp ()] -[check_dims] numtype#850 -dims \ = numtype#850 -[visit_exp `UNOP`_instr{numtype#850}(`F64`_numtype, `NEAREST`_unop_)] -[visit_exp numtype#850] -[visit_id numtype#850] +[check_dims] +dims \ = +[visit_exp `UNOP`_instr(`F64`_numtype, `NEAREST`_unop_)] [visit_exp (`F64`_numtype, `NEAREST`_unop_)] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `NEAREST`_unop_] [visit_exp ()] -[check_dims] numtype#852 -dims \ = numtype#852 -[visit_exp `UNOP`_instr{numtype#852}(`F64`_numtype, `SQRT`_unop_)] -[visit_exp numtype#852] -[visit_id numtype#852] +[check_dims] +dims \ = +[visit_exp `UNOP`_instr(`F64`_numtype, `SQRT`_unop_)] [visit_exp (`F64`_numtype, `SQRT`_unop_)] [visit_exp `F64`_numtype] [visit_exp ()] @@ -76809,71 +62807,57 @@ dims \ = numtype#852 [visit_exp ()] ps' = [check_dims] -[check_dims] numtype#854 -dims \ = numtype#854 -[visit_exp `BINOP`_instr{numtype#854}(`F64`_numtype, `ADD`_binop_)] -[visit_exp numtype#854] -[visit_id numtype#854] +[check_dims] +dims \ = +[visit_exp `BINOP`_instr(`F64`_numtype, `ADD`_binop_)] [visit_exp (`F64`_numtype, `ADD`_binop_)] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `ADD`_binop_] [visit_exp ()] -[check_dims] numtype#856 -dims \ = numtype#856 -[visit_exp `BINOP`_instr{numtype#856}(`F64`_numtype, `SUB`_binop_)] -[visit_exp numtype#856] -[visit_id numtype#856] +[check_dims] +dims \ = +[visit_exp `BINOP`_instr(`F64`_numtype, `SUB`_binop_)] [visit_exp (`F64`_numtype, `SUB`_binop_)] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `SUB`_binop_] [visit_exp ()] -[check_dims] numtype#858 -dims \ = numtype#858 -[visit_exp `BINOP`_instr{numtype#858}(`F64`_numtype, `MUL`_binop_)] -[visit_exp numtype#858] -[visit_id numtype#858] +[check_dims] +dims \ = +[visit_exp `BINOP`_instr(`F64`_numtype, `MUL`_binop_)] [visit_exp (`F64`_numtype, `MUL`_binop_)] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `MUL`_binop_] [visit_exp ()] -[check_dims] numtype#860 -dims \ = numtype#860 -[visit_exp `BINOP`_instr{numtype#860}(`F64`_numtype, `DIV`_binop_)] -[visit_exp numtype#860] -[visit_id numtype#860] +[check_dims] +dims \ = +[visit_exp `BINOP`_instr(`F64`_numtype, `DIV`_binop_)] [visit_exp (`F64`_numtype, `DIV`_binop_)] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `DIV`_binop_] [visit_exp ()] -[check_dims] numtype#862 -dims \ = numtype#862 -[visit_exp `BINOP`_instr{numtype#862}(`F64`_numtype, `MIN`_binop_)] -[visit_exp numtype#862] -[visit_id numtype#862] +[check_dims] +dims \ = +[visit_exp `BINOP`_instr(`F64`_numtype, `MIN`_binop_)] [visit_exp (`F64`_numtype, `MIN`_binop_)] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `MIN`_binop_] [visit_exp ()] -[check_dims] numtype#864 -dims \ = numtype#864 -[visit_exp `BINOP`_instr{numtype#864}(`F64`_numtype, `MAX`_binop_)] -[visit_exp numtype#864] -[visit_id numtype#864] +[check_dims] +dims \ = +[visit_exp `BINOP`_instr(`F64`_numtype, `MAX`_binop_)] [visit_exp (`F64`_numtype, `MAX`_binop_)] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `MAX`_binop_] [visit_exp ()] -[check_dims] numtype#866 -dims \ = numtype#866 -[visit_exp `BINOP`_instr{numtype#866}(`F64`_numtype, `COPYSIGN`_binop_)] -[visit_exp numtype#866] -[visit_id numtype#866] +[check_dims] +dims \ = +[visit_exp `BINOP`_instr(`F64`_numtype, `COPYSIGN`_binop_)] [visit_exp (`F64`_numtype, `COPYSIGN`_binop_)] [visit_exp `F64`_numtype] [visit_exp ()] @@ -76881,13 +62865,9 @@ dims \ = numtype#866 [visit_exp ()] ps' = [check_dims] -[check_dims] numtype_1#9 numtype_2#9 -dims \ = numtype_1#9, numtype_2#9 -[visit_exp `CVTOP`_instr{numtype_1#9, numtype_2#9}(`I32`_numtype, `I64`_numtype, `WRAP`_cvtop__)] -[visit_exp numtype_1#9] -[visit_id numtype_1#9] -[visit_exp numtype_2#9] -[visit_id numtype_2#9] +[check_dims] +dims \ = +[visit_exp `CVTOP`_instr(`I32`_numtype, `I64`_numtype, `WRAP`_cvtop__)] [visit_exp (`I32`_numtype, `I64`_numtype, `WRAP`_cvtop__)] [visit_exp `I32`_numtype] [visit_exp ()] @@ -76895,265 +62875,177 @@ dims \ = numtype_1#9, numtype_2#9 [visit_exp ()] [visit_exp `WRAP`_cvtop__] [visit_exp ()] -[check_dims] numtype_1#11 numtype_2#11 sx#4833 -dims \ = numtype_1#11, numtype_2#11, sx#4833 -[visit_exp `CVTOP`_instr{numtype_1#11, numtype_2#11}(`I32`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#4833}(`S`_sx))] -[visit_exp numtype_1#11] -[visit_id numtype_1#11] -[visit_exp numtype_2#11] -[visit_id numtype_2#11] -[visit_exp (`I32`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#4833}(`S`_sx))] +[check_dims] +dims \ = +[visit_exp `CVTOP`_instr(`I32`_numtype, `F32`_numtype, `TRUNC`_cvtop__(`S`_sx))] +[visit_exp (`I32`_numtype, `F32`_numtype, `TRUNC`_cvtop__(`S`_sx))] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp `F32`_numtype] [visit_exp ()] -[visit_exp `TRUNC`_cvtop__{sx#4833}(`S`_sx)] -[visit_exp sx#4833] -[visit_id sx#4833] +[visit_exp `TRUNC`_cvtop__(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] numtype_1#13 numtype_2#13 sx#4897 -dims \ = numtype_1#13, numtype_2#13, sx#4897 -[visit_exp `CVTOP`_instr{numtype_1#13, numtype_2#13}(`I32`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#4897}(`U`_sx))] -[visit_exp numtype_1#13] -[visit_id numtype_1#13] -[visit_exp numtype_2#13] -[visit_id numtype_2#13] -[visit_exp (`I32`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#4897}(`U`_sx))] +[check_dims] +dims \ = +[visit_exp `CVTOP`_instr(`I32`_numtype, `F32`_numtype, `TRUNC`_cvtop__(`U`_sx))] +[visit_exp (`I32`_numtype, `F32`_numtype, `TRUNC`_cvtop__(`U`_sx))] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp `F32`_numtype] [visit_exp ()] -[visit_exp `TRUNC`_cvtop__{sx#4897}(`U`_sx)] -[visit_exp sx#4897] -[visit_id sx#4897] +[visit_exp `TRUNC`_cvtop__(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] numtype_1#15 numtype_2#15 sx#4961 -dims \ = numtype_1#15, numtype_2#15, sx#4961 -[visit_exp `CVTOP`_instr{numtype_1#15, numtype_2#15}(`I32`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#4961}(`S`_sx))] -[visit_exp numtype_1#15] -[visit_id numtype_1#15] -[visit_exp numtype_2#15] -[visit_id numtype_2#15] -[visit_exp (`I32`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#4961}(`S`_sx))] +[check_dims] +dims \ = +[visit_exp `CVTOP`_instr(`I32`_numtype, `F64`_numtype, `TRUNC`_cvtop__(`S`_sx))] +[visit_exp (`I32`_numtype, `F64`_numtype, `TRUNC`_cvtop__(`S`_sx))] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp `F64`_numtype] [visit_exp ()] -[visit_exp `TRUNC`_cvtop__{sx#4961}(`S`_sx)] -[visit_exp sx#4961] -[visit_id sx#4961] +[visit_exp `TRUNC`_cvtop__(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] numtype_1#17 numtype_2#17 sx#5025 -dims \ = numtype_1#17, numtype_2#17, sx#5025 -[visit_exp `CVTOP`_instr{numtype_1#17, numtype_2#17}(`I32`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#5025}(`U`_sx))] -[visit_exp numtype_1#17] -[visit_id numtype_1#17] -[visit_exp numtype_2#17] -[visit_id numtype_2#17] -[visit_exp (`I32`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#5025}(`U`_sx))] +[check_dims] +dims \ = +[visit_exp `CVTOP`_instr(`I32`_numtype, `F64`_numtype, `TRUNC`_cvtop__(`U`_sx))] +[visit_exp (`I32`_numtype, `F64`_numtype, `TRUNC`_cvtop__(`U`_sx))] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp `F64`_numtype] [visit_exp ()] -[visit_exp `TRUNC`_cvtop__{sx#5025}(`U`_sx)] -[visit_exp sx#5025] -[visit_id sx#5025] +[visit_exp `TRUNC`_cvtop__(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] numtype_1#19 numtype_2#19 sx#5059 -dims \ = numtype_1#19, numtype_2#19, sx#5059 -[visit_exp `CVTOP`_instr{numtype_1#19, numtype_2#19}(`I64`_numtype, `I32`_numtype, `EXTEND`_cvtop__{sx#5059}(`S`_sx))] -[visit_exp numtype_1#19] -[visit_id numtype_1#19] -[visit_exp numtype_2#19] -[visit_id numtype_2#19] -[visit_exp (`I64`_numtype, `I32`_numtype, `EXTEND`_cvtop__{sx#5059}(`S`_sx))] +[check_dims] +dims \ = +[visit_exp `CVTOP`_instr(`I64`_numtype, `I32`_numtype, `EXTEND`_cvtop__(`S`_sx))] +[visit_exp (`I64`_numtype, `I32`_numtype, `EXTEND`_cvtop__(`S`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `EXTEND`_cvtop__{sx#5059}(`S`_sx)] -[visit_exp sx#5059] -[visit_id sx#5059] +[visit_exp `EXTEND`_cvtop__(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] numtype_1#21 numtype_2#21 sx#5093 -dims \ = numtype_1#21, numtype_2#21, sx#5093 -[visit_exp `CVTOP`_instr{numtype_1#21, numtype_2#21}(`I64`_numtype, `I32`_numtype, `EXTEND`_cvtop__{sx#5093}(`U`_sx))] -[visit_exp numtype_1#21] -[visit_id numtype_1#21] -[visit_exp numtype_2#21] -[visit_id numtype_2#21] -[visit_exp (`I64`_numtype, `I32`_numtype, `EXTEND`_cvtop__{sx#5093}(`U`_sx))] +[check_dims] +dims \ = +[visit_exp `CVTOP`_instr(`I64`_numtype, `I32`_numtype, `EXTEND`_cvtop__(`U`_sx))] +[visit_exp (`I64`_numtype, `I32`_numtype, `EXTEND`_cvtop__(`U`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `EXTEND`_cvtop__{sx#5093}(`U`_sx)] -[visit_exp sx#5093] -[visit_id sx#5093] +[visit_exp `EXTEND`_cvtop__(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] numtype_1#23 numtype_2#23 sx#5157 -dims \ = numtype_1#23, numtype_2#23, sx#5157 -[visit_exp `CVTOP`_instr{numtype_1#23, numtype_2#23}(`I64`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#5157}(`S`_sx))] -[visit_exp numtype_1#23] -[visit_id numtype_1#23] -[visit_exp numtype_2#23] -[visit_id numtype_2#23] -[visit_exp (`I64`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#5157}(`S`_sx))] +[check_dims] +dims \ = +[visit_exp `CVTOP`_instr(`I64`_numtype, `F32`_numtype, `TRUNC`_cvtop__(`S`_sx))] +[visit_exp (`I64`_numtype, `F32`_numtype, `TRUNC`_cvtop__(`S`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `F32`_numtype] [visit_exp ()] -[visit_exp `TRUNC`_cvtop__{sx#5157}(`S`_sx)] -[visit_exp sx#5157] -[visit_id sx#5157] +[visit_exp `TRUNC`_cvtop__(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] numtype_1#25 numtype_2#25 sx#5221 -dims \ = numtype_1#25, numtype_2#25, sx#5221 -[visit_exp `CVTOP`_instr{numtype_1#25, numtype_2#25}(`I64`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#5221}(`U`_sx))] -[visit_exp numtype_1#25] -[visit_id numtype_1#25] -[visit_exp numtype_2#25] -[visit_id numtype_2#25] -[visit_exp (`I64`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#5221}(`U`_sx))] +[check_dims] +dims \ = +[visit_exp `CVTOP`_instr(`I64`_numtype, `F32`_numtype, `TRUNC`_cvtop__(`U`_sx))] +[visit_exp (`I64`_numtype, `F32`_numtype, `TRUNC`_cvtop__(`U`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `F32`_numtype] [visit_exp ()] -[visit_exp `TRUNC`_cvtop__{sx#5221}(`U`_sx)] -[visit_exp sx#5221] -[visit_id sx#5221] +[visit_exp `TRUNC`_cvtop__(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] numtype_1#27 numtype_2#27 sx#5285 -dims \ = numtype_1#27, numtype_2#27, sx#5285 -[visit_exp `CVTOP`_instr{numtype_1#27, numtype_2#27}(`I64`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#5285}(`S`_sx))] -[visit_exp numtype_1#27] -[visit_id numtype_1#27] -[visit_exp numtype_2#27] -[visit_id numtype_2#27] -[visit_exp (`I64`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#5285}(`S`_sx))] +[check_dims] +dims \ = +[visit_exp `CVTOP`_instr(`I64`_numtype, `F64`_numtype, `TRUNC`_cvtop__(`S`_sx))] +[visit_exp (`I64`_numtype, `F64`_numtype, `TRUNC`_cvtop__(`S`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `F64`_numtype] [visit_exp ()] -[visit_exp `TRUNC`_cvtop__{sx#5285}(`S`_sx)] -[visit_exp sx#5285] -[visit_id sx#5285] +[visit_exp `TRUNC`_cvtop__(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] numtype_1#29 numtype_2#29 sx#5349 -dims \ = numtype_1#29, numtype_2#29, sx#5349 -[visit_exp `CVTOP`_instr{numtype_1#29, numtype_2#29}(`I64`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#5349}(`U`_sx))] -[visit_exp numtype_1#29] -[visit_id numtype_1#29] -[visit_exp numtype_2#29] -[visit_id numtype_2#29] -[visit_exp (`I64`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#5349}(`U`_sx))] +[check_dims] +dims \ = +[visit_exp `CVTOP`_instr(`I64`_numtype, `F64`_numtype, `TRUNC`_cvtop__(`U`_sx))] +[visit_exp (`I64`_numtype, `F64`_numtype, `TRUNC`_cvtop__(`U`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `F64`_numtype] [visit_exp ()] -[visit_exp `TRUNC`_cvtop__{sx#5349}(`U`_sx)] -[visit_exp sx#5349] -[visit_id sx#5349] +[visit_exp `TRUNC`_cvtop__(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] numtype_1#31 numtype_2#31 sx#5383 -dims \ = numtype_1#31, numtype_2#31, sx#5383 -[visit_exp `CVTOP`_instr{numtype_1#31, numtype_2#31}(`F32`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#5383}(`S`_sx))] -[visit_exp numtype_1#31] -[visit_id numtype_1#31] -[visit_exp numtype_2#31] -[visit_id numtype_2#31] -[visit_exp (`F32`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#5383}(`S`_sx))] +[check_dims] +dims \ = +[visit_exp `CVTOP`_instr(`F32`_numtype, `I32`_numtype, `CONVERT`_cvtop__(`S`_sx))] +[visit_exp (`F32`_numtype, `I32`_numtype, `CONVERT`_cvtop__(`S`_sx))] [visit_exp `F32`_numtype] [visit_exp ()] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `CONVERT`_cvtop__{sx#5383}(`S`_sx)] -[visit_exp sx#5383] -[visit_id sx#5383] +[visit_exp `CONVERT`_cvtop__(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] numtype_1#33 numtype_2#33 sx#5417 -dims \ = numtype_1#33, numtype_2#33, sx#5417 -[visit_exp `CVTOP`_instr{numtype_1#33, numtype_2#33}(`F32`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#5417}(`U`_sx))] -[visit_exp numtype_1#33] -[visit_id numtype_1#33] -[visit_exp numtype_2#33] -[visit_id numtype_2#33] -[visit_exp (`F32`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#5417}(`U`_sx))] +[check_dims] +dims \ = +[visit_exp `CVTOP`_instr(`F32`_numtype, `I32`_numtype, `CONVERT`_cvtop__(`U`_sx))] +[visit_exp (`F32`_numtype, `I32`_numtype, `CONVERT`_cvtop__(`U`_sx))] [visit_exp `F32`_numtype] [visit_exp ()] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `CONVERT`_cvtop__{sx#5417}(`U`_sx)] -[visit_exp sx#5417] -[visit_id sx#5417] +[visit_exp `CONVERT`_cvtop__(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] numtype_1#35 numtype_2#35 sx#5451 -dims \ = numtype_1#35, numtype_2#35, sx#5451 -[visit_exp `CVTOP`_instr{numtype_1#35, numtype_2#35}(`F32`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#5451}(`S`_sx))] -[visit_exp numtype_1#35] -[visit_id numtype_1#35] -[visit_exp numtype_2#35] -[visit_id numtype_2#35] -[visit_exp (`F32`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#5451}(`S`_sx))] +[check_dims] +dims \ = +[visit_exp `CVTOP`_instr(`F32`_numtype, `I64`_numtype, `CONVERT`_cvtop__(`S`_sx))] +[visit_exp (`F32`_numtype, `I64`_numtype, `CONVERT`_cvtop__(`S`_sx))] [visit_exp `F32`_numtype] [visit_exp ()] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `CONVERT`_cvtop__{sx#5451}(`S`_sx)] -[visit_exp sx#5451] -[visit_id sx#5451] +[visit_exp `CONVERT`_cvtop__(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] numtype_1#37 numtype_2#37 sx#5485 -dims \ = numtype_1#37, numtype_2#37, sx#5485 -[visit_exp `CVTOP`_instr{numtype_1#37, numtype_2#37}(`F32`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#5485}(`U`_sx))] -[visit_exp numtype_1#37] -[visit_id numtype_1#37] -[visit_exp numtype_2#37] -[visit_id numtype_2#37] -[visit_exp (`F32`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#5485}(`U`_sx))] +[check_dims] +dims \ = +[visit_exp `CVTOP`_instr(`F32`_numtype, `I64`_numtype, `CONVERT`_cvtop__(`U`_sx))] +[visit_exp (`F32`_numtype, `I64`_numtype, `CONVERT`_cvtop__(`U`_sx))] [visit_exp `F32`_numtype] [visit_exp ()] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `CONVERT`_cvtop__{sx#5485}(`U`_sx)] -[visit_exp sx#5485] -[visit_id sx#5485] +[visit_exp `CONVERT`_cvtop__(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] numtype_1#39 numtype_2#39 -dims \ = numtype_1#39, numtype_2#39 -[visit_exp `CVTOP`_instr{numtype_1#39, numtype_2#39}(`F32`_numtype, `F64`_numtype, `DEMOTE`_cvtop__)] -[visit_exp numtype_1#39] -[visit_id numtype_1#39] -[visit_exp numtype_2#39] -[visit_id numtype_2#39] +[check_dims] +dims \ = +[visit_exp `CVTOP`_instr(`F32`_numtype, `F64`_numtype, `DEMOTE`_cvtop__)] [visit_exp (`F32`_numtype, `F64`_numtype, `DEMOTE`_cvtop__)] [visit_exp `F32`_numtype] [visit_exp ()] @@ -77161,85 +63053,57 @@ dims \ = numtype_1#39, numtype_2#39 [visit_exp ()] [visit_exp `DEMOTE`_cvtop__] [visit_exp ()] -[check_dims] numtype_1#41 numtype_2#41 sx#5519 -dims \ = numtype_1#41, numtype_2#41, sx#5519 -[visit_exp `CVTOP`_instr{numtype_1#41, numtype_2#41}(`F64`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#5519}(`S`_sx))] -[visit_exp numtype_1#41] -[visit_id numtype_1#41] -[visit_exp numtype_2#41] -[visit_id numtype_2#41] -[visit_exp (`F64`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#5519}(`S`_sx))] +[check_dims] +dims \ = +[visit_exp `CVTOP`_instr(`F64`_numtype, `I32`_numtype, `CONVERT`_cvtop__(`S`_sx))] +[visit_exp (`F64`_numtype, `I32`_numtype, `CONVERT`_cvtop__(`S`_sx))] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `CONVERT`_cvtop__{sx#5519}(`S`_sx)] -[visit_exp sx#5519] -[visit_id sx#5519] +[visit_exp `CONVERT`_cvtop__(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] numtype_1#43 numtype_2#43 sx#5553 -dims \ = numtype_1#43, numtype_2#43, sx#5553 -[visit_exp `CVTOP`_instr{numtype_1#43, numtype_2#43}(`F64`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#5553}(`U`_sx))] -[visit_exp numtype_1#43] -[visit_id numtype_1#43] -[visit_exp numtype_2#43] -[visit_id numtype_2#43] -[visit_exp (`F64`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#5553}(`U`_sx))] +[check_dims] +dims \ = +[visit_exp `CVTOP`_instr(`F64`_numtype, `I32`_numtype, `CONVERT`_cvtop__(`U`_sx))] +[visit_exp (`F64`_numtype, `I32`_numtype, `CONVERT`_cvtop__(`U`_sx))] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `CONVERT`_cvtop__{sx#5553}(`U`_sx)] -[visit_exp sx#5553] -[visit_id sx#5553] +[visit_exp `CONVERT`_cvtop__(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] numtype_1#45 numtype_2#45 sx#5587 -dims \ = numtype_1#45, numtype_2#45, sx#5587 -[visit_exp `CVTOP`_instr{numtype_1#45, numtype_2#45}(`F64`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#5587}(`S`_sx))] -[visit_exp numtype_1#45] -[visit_id numtype_1#45] -[visit_exp numtype_2#45] -[visit_id numtype_2#45] -[visit_exp (`F64`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#5587}(`S`_sx))] +[check_dims] +dims \ = +[visit_exp `CVTOP`_instr(`F64`_numtype, `I64`_numtype, `CONVERT`_cvtop__(`S`_sx))] +[visit_exp (`F64`_numtype, `I64`_numtype, `CONVERT`_cvtop__(`S`_sx))] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `CONVERT`_cvtop__{sx#5587}(`S`_sx)] -[visit_exp sx#5587] -[visit_id sx#5587] +[visit_exp `CONVERT`_cvtop__(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] numtype_1#47 numtype_2#47 sx#5621 -dims \ = numtype_1#47, numtype_2#47, sx#5621 -[visit_exp `CVTOP`_instr{numtype_1#47, numtype_2#47}(`F64`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#5621}(`U`_sx))] -[visit_exp numtype_1#47] -[visit_id numtype_1#47] -[visit_exp numtype_2#47] -[visit_id numtype_2#47] -[visit_exp (`F64`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#5621}(`U`_sx))] +[check_dims] +dims \ = +[visit_exp `CVTOP`_instr(`F64`_numtype, `I64`_numtype, `CONVERT`_cvtop__(`U`_sx))] +[visit_exp (`F64`_numtype, `I64`_numtype, `CONVERT`_cvtop__(`U`_sx))] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `CONVERT`_cvtop__{sx#5621}(`U`_sx)] -[visit_exp sx#5621] -[visit_id sx#5621] +[visit_exp `CONVERT`_cvtop__(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] numtype_1#49 numtype_2#49 -dims \ = numtype_1#49, numtype_2#49 -[visit_exp `CVTOP`_instr{numtype_1#49, numtype_2#49}(`F64`_numtype, `F32`_numtype, `PROMOTE`_cvtop__)] -[visit_exp numtype_1#49] -[visit_id numtype_1#49] -[visit_exp numtype_2#49] -[visit_id numtype_2#49] +[check_dims] +dims \ = +[visit_exp `CVTOP`_instr(`F64`_numtype, `F32`_numtype, `PROMOTE`_cvtop__)] [visit_exp (`F64`_numtype, `F32`_numtype, `PROMOTE`_cvtop__)] [visit_exp `F64`_numtype] [visit_exp ()] @@ -77247,13 +63111,9 @@ dims \ = numtype_1#49, numtype_2#49 [visit_exp ()] [visit_exp `PROMOTE`_cvtop__] [visit_exp ()] -[check_dims] numtype_1#51 numtype_2#51 -dims \ = numtype_1#51, numtype_2#51 -[visit_exp `CVTOP`_instr{numtype_1#51, numtype_2#51}(`I32`_numtype, `F32`_numtype, `REINTERPRET`_cvtop__)] -[visit_exp numtype_1#51] -[visit_id numtype_1#51] -[visit_exp numtype_2#51] -[visit_id numtype_2#51] +[check_dims] +dims \ = +[visit_exp `CVTOP`_instr(`I32`_numtype, `F32`_numtype, `REINTERPRET`_cvtop__)] [visit_exp (`I32`_numtype, `F32`_numtype, `REINTERPRET`_cvtop__)] [visit_exp `I32`_numtype] [visit_exp ()] @@ -77261,13 +63121,9 @@ dims \ = numtype_1#51, numtype_2#51 [visit_exp ()] [visit_exp `REINTERPRET`_cvtop__] [visit_exp ()] -[check_dims] numtype_1#53 numtype_2#53 -dims \ = numtype_1#53, numtype_2#53 -[visit_exp `CVTOP`_instr{numtype_1#53, numtype_2#53}(`I64`_numtype, `F64`_numtype, `REINTERPRET`_cvtop__)] -[visit_exp numtype_1#53] -[visit_id numtype_1#53] -[visit_exp numtype_2#53] -[visit_id numtype_2#53] +[check_dims] +dims \ = +[visit_exp `CVTOP`_instr(`I64`_numtype, `F64`_numtype, `REINTERPRET`_cvtop__)] [visit_exp (`I64`_numtype, `F64`_numtype, `REINTERPRET`_cvtop__)] [visit_exp `I64`_numtype] [visit_exp ()] @@ -77275,13 +63131,9 @@ dims \ = numtype_1#53, numtype_2#53 [visit_exp ()] [visit_exp `REINTERPRET`_cvtop__] [visit_exp ()] -[check_dims] numtype_1#55 numtype_2#55 -dims \ = numtype_1#55, numtype_2#55 -[visit_exp `CVTOP`_instr{numtype_1#55, numtype_2#55}(`F32`_numtype, `I32`_numtype, `REINTERPRET`_cvtop__)] -[visit_exp numtype_1#55] -[visit_id numtype_1#55] -[visit_exp numtype_2#55] -[visit_id numtype_2#55] +[check_dims] +dims \ = +[visit_exp `CVTOP`_instr(`F32`_numtype, `I32`_numtype, `REINTERPRET`_cvtop__)] [visit_exp (`F32`_numtype, `I32`_numtype, `REINTERPRET`_cvtop__)] [visit_exp `F32`_numtype] [visit_exp ()] @@ -77289,13 +63141,9 @@ dims \ = numtype_1#55, numtype_2#55 [visit_exp ()] [visit_exp `REINTERPRET`_cvtop__] [visit_exp ()] -[check_dims] numtype_1#57 numtype_2#57 -dims \ = numtype_1#57, numtype_2#57 -[visit_exp `CVTOP`_instr{numtype_1#57, numtype_2#57}(`F64`_numtype, `I64`_numtype, `REINTERPRET`_cvtop__)] -[visit_exp numtype_1#57] -[visit_id numtype_1#57] -[visit_exp numtype_2#57] -[visit_id numtype_2#57] +[check_dims] +dims \ = +[visit_exp `CVTOP`_instr(`F64`_numtype, `I64`_numtype, `REINTERPRET`_cvtop__)] [visit_exp (`F64`_numtype, `I64`_numtype, `REINTERPRET`_cvtop__)] [visit_exp `F64`_numtype] [visit_exp ()] @@ -77305,225 +63153,147 @@ dims \ = numtype_1#57, numtype_2#57 [visit_exp ()] ps' = [check_dims] -[check_dims] i#54694 numtype_1#59 numtype_2#59 sx#5775 -dims \ = i#54694, numtype_1#59, numtype_2#59, sx#5775 -[visit_exp `CVTOP`_instr{numtype_1#59, numtype_2#59}(`I32`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#5775}(`S`_sx))] -[visit_exp numtype_1#59] -[visit_id numtype_1#59] -[visit_exp numtype_2#59] -[visit_id numtype_2#59] -[visit_exp (`I32`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#5775}(`S`_sx))] +[check_dims] +dims \ = +[visit_exp `CVTOP`_instr(`I32`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__(`S`_sx))] +[visit_exp (`I32`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__(`S`_sx))] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp `F32`_numtype] [visit_exp ()] -[visit_exp `TRUNC_SAT`_cvtop__{sx#5775}(`S`_sx)] -[visit_exp sx#5775] -[visit_id sx#5775] +[visit_exp `TRUNC_SAT`_cvtop__(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#54694}(0)] -[visit_exp i#54694] -[visit_id i#54694] +[visit_exp `%`_u32(0)] [visit_exp (0)] [visit_exp 0] -[check_dims] i#54719 numtype_1#61 numtype_2#61 sx#5839 -dims \ = i#54719, numtype_1#61, numtype_2#61, sx#5839 -[visit_exp `CVTOP`_instr{numtype_1#61, numtype_2#61}(`I32`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#5839}(`U`_sx))] -[visit_exp numtype_1#61] -[visit_id numtype_1#61] -[visit_exp numtype_2#61] -[visit_id numtype_2#61] -[visit_exp (`I32`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#5839}(`U`_sx))] +[check_dims] +dims \ = +[visit_exp `CVTOP`_instr(`I32`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__(`U`_sx))] +[visit_exp (`I32`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__(`U`_sx))] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp `F32`_numtype] [visit_exp ()] -[visit_exp `TRUNC_SAT`_cvtop__{sx#5839}(`U`_sx)] -[visit_exp sx#5839] -[visit_id sx#5839] +[visit_exp `TRUNC_SAT`_cvtop__(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#54719}(1)] -[visit_exp i#54719] -[visit_id i#54719] +[visit_exp `%`_u32(1)] [visit_exp (1)] [visit_exp 1] -[check_dims] i#54744 numtype_1#63 numtype_2#63 sx#5903 -dims \ = i#54744, numtype_1#63, numtype_2#63, sx#5903 -[visit_exp `CVTOP`_instr{numtype_1#63, numtype_2#63}(`I32`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#5903}(`S`_sx))] -[visit_exp numtype_1#63] -[visit_id numtype_1#63] -[visit_exp numtype_2#63] -[visit_id numtype_2#63] -[visit_exp (`I32`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#5903}(`S`_sx))] +[check_dims] +dims \ = +[visit_exp `CVTOP`_instr(`I32`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__(`S`_sx))] +[visit_exp (`I32`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__(`S`_sx))] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp `F64`_numtype] [visit_exp ()] -[visit_exp `TRUNC_SAT`_cvtop__{sx#5903}(`S`_sx)] -[visit_exp sx#5903] -[visit_id sx#5903] +[visit_exp `TRUNC_SAT`_cvtop__(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#54744}(2)] -[visit_exp i#54744] -[visit_id i#54744] +[visit_exp `%`_u32(2)] [visit_exp (2)] [visit_exp 2] -[check_dims] i#54769 numtype_1#65 numtype_2#65 sx#5967 -dims \ = i#54769, numtype_1#65, numtype_2#65, sx#5967 -[visit_exp `CVTOP`_instr{numtype_1#65, numtype_2#65}(`I32`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#5967}(`U`_sx))] -[visit_exp numtype_1#65] -[visit_id numtype_1#65] -[visit_exp numtype_2#65] -[visit_id numtype_2#65] -[visit_exp (`I32`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#5967}(`U`_sx))] +[check_dims] +dims \ = +[visit_exp `CVTOP`_instr(`I32`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__(`U`_sx))] +[visit_exp (`I32`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__(`U`_sx))] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp `F64`_numtype] [visit_exp ()] -[visit_exp `TRUNC_SAT`_cvtop__{sx#5967}(`U`_sx)] -[visit_exp sx#5967] -[visit_id sx#5967] +[visit_exp `TRUNC_SAT`_cvtop__(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#54769}(3)] -[visit_exp i#54769] -[visit_id i#54769] +[visit_exp `%`_u32(3)] [visit_exp (3)] [visit_exp 3] -[check_dims] i#54794 numtype_1#67 numtype_2#67 sx#6031 -dims \ = i#54794, numtype_1#67, numtype_2#67, sx#6031 -[visit_exp `CVTOP`_instr{numtype_1#67, numtype_2#67}(`I64`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#6031}(`S`_sx))] -[visit_exp numtype_1#67] -[visit_id numtype_1#67] -[visit_exp numtype_2#67] -[visit_id numtype_2#67] -[visit_exp (`I64`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#6031}(`S`_sx))] +[check_dims] +dims \ = +[visit_exp `CVTOP`_instr(`I64`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__(`S`_sx))] +[visit_exp (`I64`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__(`S`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `F32`_numtype] [visit_exp ()] -[visit_exp `TRUNC_SAT`_cvtop__{sx#6031}(`S`_sx)] -[visit_exp sx#6031] -[visit_id sx#6031] +[visit_exp `TRUNC_SAT`_cvtop__(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#54794}(4)] -[visit_exp i#54794] -[visit_id i#54794] +[visit_exp `%`_u32(4)] [visit_exp (4)] [visit_exp 4] -[check_dims] i#54819 numtype_1#69 numtype_2#69 sx#6095 -dims \ = i#54819, numtype_1#69, numtype_2#69, sx#6095 -[visit_exp `CVTOP`_instr{numtype_1#69, numtype_2#69}(`I64`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#6095}(`U`_sx))] -[visit_exp numtype_1#69] -[visit_id numtype_1#69] -[visit_exp numtype_2#69] -[visit_id numtype_2#69] -[visit_exp (`I64`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#6095}(`U`_sx))] +[check_dims] +dims \ = +[visit_exp `CVTOP`_instr(`I64`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__(`U`_sx))] +[visit_exp (`I64`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__(`U`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `F32`_numtype] [visit_exp ()] -[visit_exp `TRUNC_SAT`_cvtop__{sx#6095}(`U`_sx)] -[visit_exp sx#6095] -[visit_id sx#6095] +[visit_exp `TRUNC_SAT`_cvtop__(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#54819}(5)] -[visit_exp i#54819] -[visit_id i#54819] +[visit_exp `%`_u32(5)] [visit_exp (5)] [visit_exp 5] -[check_dims] i#54844 numtype_1#71 numtype_2#71 sx#6159 -dims \ = i#54844, numtype_1#71, numtype_2#71, sx#6159 -[visit_exp `CVTOP`_instr{numtype_1#71, numtype_2#71}(`I64`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#6159}(`S`_sx))] -[visit_exp numtype_1#71] -[visit_id numtype_1#71] -[visit_exp numtype_2#71] -[visit_id numtype_2#71] -[visit_exp (`I64`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#6159}(`S`_sx))] +[check_dims] +dims \ = +[visit_exp `CVTOP`_instr(`I64`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__(`S`_sx))] +[visit_exp (`I64`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__(`S`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `F64`_numtype] [visit_exp ()] -[visit_exp `TRUNC_SAT`_cvtop__{sx#6159}(`S`_sx)] -[visit_exp sx#6159] -[visit_id sx#6159] +[visit_exp `TRUNC_SAT`_cvtop__(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#54844}(6)] -[visit_exp i#54844] -[visit_id i#54844] +[visit_exp `%`_u32(6)] [visit_exp (6)] [visit_exp 6] -[check_dims] i#54869 numtype_1#73 numtype_2#73 sx#6223 -dims \ = i#54869, numtype_1#73, numtype_2#73, sx#6223 -[visit_exp `CVTOP`_instr{numtype_1#73, numtype_2#73}(`I64`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#6223}(`U`_sx))] -[visit_exp numtype_1#73] -[visit_id numtype_1#73] -[visit_exp numtype_2#73] -[visit_id numtype_2#73] -[visit_exp (`I64`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#6223}(`U`_sx))] +[check_dims] +dims \ = +[visit_exp `CVTOP`_instr(`I64`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__(`U`_sx))] +[visit_exp (`I64`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__(`U`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `F64`_numtype] [visit_exp ()] -[visit_exp `TRUNC_SAT`_cvtop__{sx#6223}(`U`_sx)] -[visit_exp sx#6223] -[visit_id sx#6223] +[visit_exp `TRUNC_SAT`_cvtop__(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#54869}(7)] -[visit_exp i#54869] -[visit_id i#54869] +[visit_exp `%`_u32(7)] [visit_exp (7)] [visit_exp 7] ps' = [check_dims] -[check_dims] i#54895 i#54896 i#54943 i#54944 l -dims \ = i#54895, i#54896, i#54943, i#54944, l -[visit_exp `%`_laneidx{i#54944}(l!`%`_labelidx{i#54943}.0)] -[visit_exp i#54944] -[visit_id i#54944] -[visit_exp (l!`%`_labelidx{i#54943}.0)] -[visit_exp l!`%`_labelidx{i#54943}.0] -[visit_exp l!`%`_labelidx{i#54943}] +[check_dims] l +dims \ = l +[visit_exp `%`_laneidx(l!`%`_labelidx.0)] +[visit_exp (l!`%`_labelidx.0)] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] -[visit_exp i#54943] -[visit_id i#54943] -[visit_exp `%`_byte{i#54896}(l!`%`_labelidx{i#54895}.0)] -[visit_exp i#54896] -[visit_id i#54896] -[visit_exp (l!`%`_labelidx{i#54895}.0)] -[visit_exp l!`%`_labelidx{i#54895}.0] -[visit_exp l!`%`_labelidx{i#54895}] +[visit_exp `%`_byte(l!`%`_labelidx.0)] +[visit_exp (l!`%`_labelidx.0)] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] not free -[visit_exp i#54895] -[visit_id i#54895] ps' = [check_dims] -[check_dims] ao i#54968 memarg#137 memidx#228 vectype?#14 x -dims \ = ao, i#54968, memarg#137, memidx#228, vectype?#14, x -[visit_exp `VLOAD`_instr{`vectype?#14`, memidx#228, memarg#137}(`V128`_vectype, ?(), x, ao)] -[visit_exp `vectype?#14`] -[visit_id vectype?#14] -[visit_exp memidx#228] -[visit_id memidx#228] -[visit_exp memarg#137] -[visit_id memarg#137] +[check_dims] ao x +dims \ = ao, x +[visit_exp `VLOAD`_instr(`V128`_vectype, ?(), x, ao)] [visit_exp (`V128`_vectype, ?(), x, ao)] [visit_exp `V128`_vectype] [visit_exp ()] @@ -77532,9 +63302,7 @@ dims \ = ao, i#54968, memarg#137, memidx#228, vectype?#14, x [visit_id x] [visit_exp ao] [visit_id ao] -[visit_exp `%`_u32{i#54968}(0)] -[visit_exp i#54968] -[visit_id i#54968] +[visit_exp `%`_u32(0)] [visit_exp (0)] [visit_exp 0] [visit_exp (x, ao)] @@ -77542,32 +63310,16 @@ dims \ = ao, i#54968, memarg#137, memidx#228, vectype?#14, x [visit_id x] not free [visit_exp ao] [visit_id ao] not free -[check_dims] M#157 ao i#55019 i#55059 i#55066 memarg#139 memidx#230 sx#6240 sz#1092 vectype?#15 x -dims \ = M#157, ao, i#55019, i#55059, i#55066, memarg#139, memidx#230, sx#6240, sz#1092, vectype?#15, x -[visit_exp `VLOAD`_instr{`vectype?#15`, memidx#230, memarg#139}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1092, M#157, sx#6240, i#55059}(`%`_sz{i#55066}(8), 8, `S`_sx)), x, ao)] -[visit_exp `vectype?#15`] -[visit_id vectype?#15] -[visit_exp memidx#230] -[visit_id memidx#230] -[visit_exp memarg#139] -[visit_id memarg#139] -[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1092, M#157, sx#6240, i#55059}(`%`_sz{i#55066}(8), 8, `S`_sx)), x, ao)] +[check_dims] ao x +dims \ = ao, x +[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, `S`_sx)), x, ao)] +[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, `S`_sx)), x, ao)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp ?(`SHAPE%X%_%`_vloadop_{sz#1092, M#157, sx#6240, i#55059}(`%`_sz{i#55066}(8), 8, `S`_sx))] -[visit_exp `SHAPE%X%_%`_vloadop_{sz#1092, M#157, sx#6240, i#55059}(`%`_sz{i#55066}(8), 8, `S`_sx)] -[visit_exp sz#1092] -[visit_id sz#1092] -[visit_exp M#157] -[visit_id M#157] -[visit_exp sx#6240] -[visit_id sx#6240] -[visit_exp i#55059] -[visit_id i#55059] -[visit_exp (`%`_sz{i#55066}(8), 8, `S`_sx)] -[visit_exp `%`_sz{i#55066}(8)] -[visit_exp i#55066] -[visit_id i#55066] +[visit_exp ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, `S`_sx))] +[visit_exp `SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, `S`_sx)] +[visit_exp (`%`_sz(8), 8, `S`_sx)] +[visit_exp `%`_sz(8)] [visit_exp (8)] [visit_exp 8] [visit_exp 8] @@ -77577,9 +63329,7 @@ dims \ = M#157, ao, i#55019, i#55059, i#55066, memarg#139, memidx#230, sx#6240, [visit_id x] [visit_exp ao] [visit_id ao] -[visit_exp `%`_u32{i#55019}(1)] -[visit_exp i#55019] -[visit_id i#55019] +[visit_exp `%`_u32(1)] [visit_exp (1)] [visit_exp 1] [visit_exp (x, ao)] @@ -77587,32 +63337,16 @@ dims \ = M#157, ao, i#55019, i#55059, i#55066, memarg#139, memidx#230, sx#6240, [visit_id x] not free [visit_exp ao] [visit_id ao] not free -[check_dims] M#174 ao i#55103 i#55143 i#55150 memarg#141 memidx#232 sx#6257 sz#1139 vectype?#16 x -dims \ = M#174, ao, i#55103, i#55143, i#55150, memarg#141, memidx#232, sx#6257, sz#1139, vectype?#16, x -[visit_exp `VLOAD`_instr{`vectype?#16`, memidx#232, memarg#141}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1139, M#174, sx#6257, i#55143}(`%`_sz{i#55150}(8), 8, `U`_sx)), x, ao)] -[visit_exp `vectype?#16`] -[visit_id vectype?#16] -[visit_exp memidx#232] -[visit_id memidx#232] -[visit_exp memarg#141] -[visit_id memarg#141] -[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1139, M#174, sx#6257, i#55143}(`%`_sz{i#55150}(8), 8, `U`_sx)), x, ao)] +[check_dims] ao x +dims \ = ao, x +[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, `U`_sx)), x, ao)] +[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, `U`_sx)), x, ao)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp ?(`SHAPE%X%_%`_vloadop_{sz#1139, M#174, sx#6257, i#55143}(`%`_sz{i#55150}(8), 8, `U`_sx))] -[visit_exp `SHAPE%X%_%`_vloadop_{sz#1139, M#174, sx#6257, i#55143}(`%`_sz{i#55150}(8), 8, `U`_sx)] -[visit_exp sz#1139] -[visit_id sz#1139] -[visit_exp M#174] -[visit_id M#174] -[visit_exp sx#6257] -[visit_id sx#6257] -[visit_exp i#55143] -[visit_id i#55143] -[visit_exp (`%`_sz{i#55150}(8), 8, `U`_sx)] -[visit_exp `%`_sz{i#55150}(8)] -[visit_exp i#55150] -[visit_id i#55150] +[visit_exp ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, `U`_sx))] +[visit_exp `SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, `U`_sx)] +[visit_exp (`%`_sz(8), 8, `U`_sx)] +[visit_exp `%`_sz(8)] [visit_exp (8)] [visit_exp 8] [visit_exp 8] @@ -77622,9 +63356,7 @@ dims \ = M#174, ao, i#55103, i#55143, i#55150, memarg#141, memidx#232, sx#6257, [visit_id x] [visit_exp ao] [visit_id ao] -[visit_exp `%`_u32{i#55103}(2)] -[visit_exp i#55103] -[visit_id i#55103] +[visit_exp `%`_u32(2)] [visit_exp (2)] [visit_exp 2] [visit_exp (x, ao)] @@ -77632,32 +63364,16 @@ dims \ = M#174, ao, i#55103, i#55143, i#55150, memarg#141, memidx#232, sx#6257, [visit_id x] not free [visit_exp ao] [visit_id ao] not free -[check_dims] M#191 ao i#55187 i#55227 i#55234 memarg#143 memidx#234 sx#6274 sz#1186 vectype?#17 x -dims \ = M#191, ao, i#55187, i#55227, i#55234, memarg#143, memidx#234, sx#6274, sz#1186, vectype?#17, x -[visit_exp `VLOAD`_instr{`vectype?#17`, memidx#234, memarg#143}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1186, M#191, sx#6274, i#55227}(`%`_sz{i#55234}(16), 4, `S`_sx)), x, ao)] -[visit_exp `vectype?#17`] -[visit_id vectype?#17] -[visit_exp memidx#234] -[visit_id memidx#234] -[visit_exp memarg#143] -[visit_id memarg#143] -[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1186, M#191, sx#6274, i#55227}(`%`_sz{i#55234}(16), 4, `S`_sx)), x, ao)] +[check_dims] ao x +dims \ = ao, x +[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, `S`_sx)), x, ao)] +[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, `S`_sx)), x, ao)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp ?(`SHAPE%X%_%`_vloadop_{sz#1186, M#191, sx#6274, i#55227}(`%`_sz{i#55234}(16), 4, `S`_sx))] -[visit_exp `SHAPE%X%_%`_vloadop_{sz#1186, M#191, sx#6274, i#55227}(`%`_sz{i#55234}(16), 4, `S`_sx)] -[visit_exp sz#1186] -[visit_id sz#1186] -[visit_exp M#191] -[visit_id M#191] -[visit_exp sx#6274] -[visit_id sx#6274] -[visit_exp i#55227] -[visit_id i#55227] -[visit_exp (`%`_sz{i#55234}(16), 4, `S`_sx)] -[visit_exp `%`_sz{i#55234}(16)] -[visit_exp i#55234] -[visit_id i#55234] +[visit_exp ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, `S`_sx))] +[visit_exp `SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, `S`_sx)] +[visit_exp (`%`_sz(16), 4, `S`_sx)] +[visit_exp `%`_sz(16)] [visit_exp (16)] [visit_exp 16] [visit_exp 4] @@ -77667,9 +63383,7 @@ dims \ = M#191, ao, i#55187, i#55227, i#55234, memarg#143, memidx#234, sx#6274, [visit_id x] [visit_exp ao] [visit_id ao] -[visit_exp `%`_u32{i#55187}(3)] -[visit_exp i#55187] -[visit_id i#55187] +[visit_exp `%`_u32(3)] [visit_exp (3)] [visit_exp 3] [visit_exp (x, ao)] @@ -77677,32 +63391,16 @@ dims \ = M#191, ao, i#55187, i#55227, i#55234, memarg#143, memidx#234, sx#6274, [visit_id x] not free [visit_exp ao] [visit_id ao] not free -[check_dims] M#208 ao i#55271 i#55311 i#55318 memarg#145 memidx#236 sx#6291 sz#1233 vectype?#18 x -dims \ = M#208, ao, i#55271, i#55311, i#55318, memarg#145, memidx#236, sx#6291, sz#1233, vectype?#18, x -[visit_exp `VLOAD`_instr{`vectype?#18`, memidx#236, memarg#145}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1233, M#208, sx#6291, i#55311}(`%`_sz{i#55318}(16), 4, `U`_sx)), x, ao)] -[visit_exp `vectype?#18`] -[visit_id vectype?#18] -[visit_exp memidx#236] -[visit_id memidx#236] -[visit_exp memarg#145] -[visit_id memarg#145] -[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1233, M#208, sx#6291, i#55311}(`%`_sz{i#55318}(16), 4, `U`_sx)), x, ao)] +[check_dims] ao x +dims \ = ao, x +[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, `U`_sx)), x, ao)] +[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, `U`_sx)), x, ao)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp ?(`SHAPE%X%_%`_vloadop_{sz#1233, M#208, sx#6291, i#55311}(`%`_sz{i#55318}(16), 4, `U`_sx))] -[visit_exp `SHAPE%X%_%`_vloadop_{sz#1233, M#208, sx#6291, i#55311}(`%`_sz{i#55318}(16), 4, `U`_sx)] -[visit_exp sz#1233] -[visit_id sz#1233] -[visit_exp M#208] -[visit_id M#208] -[visit_exp sx#6291] -[visit_id sx#6291] -[visit_exp i#55311] -[visit_id i#55311] -[visit_exp (`%`_sz{i#55318}(16), 4, `U`_sx)] -[visit_exp `%`_sz{i#55318}(16)] -[visit_exp i#55318] -[visit_id i#55318] +[visit_exp ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, `U`_sx))] +[visit_exp `SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, `U`_sx)] +[visit_exp (`%`_sz(16), 4, `U`_sx)] +[visit_exp `%`_sz(16)] [visit_exp (16)] [visit_exp 16] [visit_exp 4] @@ -77712,9 +63410,7 @@ dims \ = M#208, ao, i#55271, i#55311, i#55318, memarg#145, memidx#236, sx#6291, [visit_id x] [visit_exp ao] [visit_id ao] -[visit_exp `%`_u32{i#55271}(4)] -[visit_exp i#55271] -[visit_id i#55271] +[visit_exp `%`_u32(4)] [visit_exp (4)] [visit_exp 4] [visit_exp (x, ao)] @@ -77722,32 +63418,16 @@ dims \ = M#208, ao, i#55271, i#55311, i#55318, memarg#145, memidx#236, sx#6291, [visit_id x] not free [visit_exp ao] [visit_id ao] not free -[check_dims] M#225 ao i#55355 i#55395 i#55402 memarg#147 memidx#238 sx#6308 sz#1280 vectype?#19 x -dims \ = M#225, ao, i#55355, i#55395, i#55402, memarg#147, memidx#238, sx#6308, sz#1280, vectype?#19, x -[visit_exp `VLOAD`_instr{`vectype?#19`, memidx#238, memarg#147}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1280, M#225, sx#6308, i#55395}(`%`_sz{i#55402}(32), 2, `S`_sx)), x, ao)] -[visit_exp `vectype?#19`] -[visit_id vectype?#19] -[visit_exp memidx#238] -[visit_id memidx#238] -[visit_exp memarg#147] -[visit_id memarg#147] -[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1280, M#225, sx#6308, i#55395}(`%`_sz{i#55402}(32), 2, `S`_sx)), x, ao)] +[check_dims] ao x +dims \ = ao, x +[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, `S`_sx)), x, ao)] +[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, `S`_sx)), x, ao)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp ?(`SHAPE%X%_%`_vloadop_{sz#1280, M#225, sx#6308, i#55395}(`%`_sz{i#55402}(32), 2, `S`_sx))] -[visit_exp `SHAPE%X%_%`_vloadop_{sz#1280, M#225, sx#6308, i#55395}(`%`_sz{i#55402}(32), 2, `S`_sx)] -[visit_exp sz#1280] -[visit_id sz#1280] -[visit_exp M#225] -[visit_id M#225] -[visit_exp sx#6308] -[visit_id sx#6308] -[visit_exp i#55395] -[visit_id i#55395] -[visit_exp (`%`_sz{i#55402}(32), 2, `S`_sx)] -[visit_exp `%`_sz{i#55402}(32)] -[visit_exp i#55402] -[visit_id i#55402] +[visit_exp ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, `S`_sx))] +[visit_exp `SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, `S`_sx)] +[visit_exp (`%`_sz(32), 2, `S`_sx)] +[visit_exp `%`_sz(32)] [visit_exp (32)] [visit_exp 32] [visit_exp 2] @@ -77757,9 +63437,7 @@ dims \ = M#225, ao, i#55355, i#55395, i#55402, memarg#147, memidx#238, sx#6308, [visit_id x] [visit_exp ao] [visit_id ao] -[visit_exp `%`_u32{i#55355}(5)] -[visit_exp i#55355] -[visit_id i#55355] +[visit_exp `%`_u32(5)] [visit_exp (5)] [visit_exp 5] [visit_exp (x, ao)] @@ -77767,32 +63445,16 @@ dims \ = M#225, ao, i#55355, i#55395, i#55402, memarg#147, memidx#238, sx#6308, [visit_id x] not free [visit_exp ao] [visit_id ao] not free -[check_dims] M#242 ao i#55439 i#55479 i#55486 memarg#149 memidx#240 sx#6325 sz#1327 vectype?#20 x -dims \ = M#242, ao, i#55439, i#55479, i#55486, memarg#149, memidx#240, sx#6325, sz#1327, vectype?#20, x -[visit_exp `VLOAD`_instr{`vectype?#20`, memidx#240, memarg#149}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1327, M#242, sx#6325, i#55479}(`%`_sz{i#55486}(32), 2, `U`_sx)), x, ao)] -[visit_exp `vectype?#20`] -[visit_id vectype?#20] -[visit_exp memidx#240] -[visit_id memidx#240] -[visit_exp memarg#149] -[visit_id memarg#149] -[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1327, M#242, sx#6325, i#55479}(`%`_sz{i#55486}(32), 2, `U`_sx)), x, ao)] +[check_dims] ao x +dims \ = ao, x +[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, `U`_sx)), x, ao)] +[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, `U`_sx)), x, ao)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp ?(`SHAPE%X%_%`_vloadop_{sz#1327, M#242, sx#6325, i#55479}(`%`_sz{i#55486}(32), 2, `U`_sx))] -[visit_exp `SHAPE%X%_%`_vloadop_{sz#1327, M#242, sx#6325, i#55479}(`%`_sz{i#55486}(32), 2, `U`_sx)] -[visit_exp sz#1327] -[visit_id sz#1327] -[visit_exp M#242] -[visit_id M#242] -[visit_exp sx#6325] -[visit_id sx#6325] -[visit_exp i#55479] -[visit_id i#55479] -[visit_exp (`%`_sz{i#55486}(32), 2, `U`_sx)] -[visit_exp `%`_sz{i#55486}(32)] -[visit_exp i#55486] -[visit_id i#55486] +[visit_exp ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, `U`_sx))] +[visit_exp `SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, `U`_sx)] +[visit_exp (`%`_sz(32), 2, `U`_sx)] +[visit_exp `%`_sz(32)] [visit_exp (32)] [visit_exp 32] [visit_exp 2] @@ -77802,9 +63464,7 @@ dims \ = M#242, ao, i#55439, i#55479, i#55486, memarg#149, memidx#240, sx#6325, [visit_id x] [visit_exp ao] [visit_id ao] -[visit_exp `%`_u32{i#55439}(6)] -[visit_exp i#55439] -[visit_id i#55439] +[visit_exp `%`_u32(6)] [visit_exp (6)] [visit_exp 6] [visit_exp (x, ao)] @@ -77812,35 +63472,23 @@ dims \ = M#242, ao, i#55439, i#55479, i#55486, memarg#149, memidx#240, sx#6325, [visit_id x] not free [visit_exp ao] [visit_id ao] not free -[check_dims] ao i#55523 i#55569 memarg#151 memidx#242 sz#1374 vectype?#21 x -dims \ = ao, i#55523, i#55569, memarg#151, memidx#242, sz#1374, vectype?#21, x -[visit_exp `VLOAD`_instr{`vectype?#21`, memidx#242, memarg#151}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#1374}(`%`_sz{i#55569}(8))), x, ao)] -[visit_exp `vectype?#21`] -[visit_id vectype?#21] -[visit_exp memidx#242] -[visit_id memidx#242] -[visit_exp memarg#151] -[visit_id memarg#151] -[visit_exp (`V128`_vectype, ?(`SPLAT`_vloadop_{sz#1374}(`%`_sz{i#55569}(8))), x, ao)] +[check_dims] ao x +dims \ = ao, x +[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(8))), x, ao)] +[visit_exp (`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(8))), x, ao)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp ?(`SPLAT`_vloadop_{sz#1374}(`%`_sz{i#55569}(8)))] -[visit_exp `SPLAT`_vloadop_{sz#1374}(`%`_sz{i#55569}(8))] -[visit_exp sz#1374] -[visit_id sz#1374] -[visit_exp (`%`_sz{i#55569}(8))] -[visit_exp `%`_sz{i#55569}(8)] -[visit_exp i#55569] -[visit_id i#55569] +[visit_exp ?(`SPLAT`_vloadop_(`%`_sz(8)))] +[visit_exp `SPLAT`_vloadop_(`%`_sz(8))] +[visit_exp (`%`_sz(8))] +[visit_exp `%`_sz(8)] [visit_exp (8)] [visit_exp 8] [visit_exp x] [visit_id x] [visit_exp ao] [visit_id ao] -[visit_exp `%`_u32{i#55523}(7)] -[visit_exp i#55523] -[visit_id i#55523] +[visit_exp `%`_u32(7)] [visit_exp (7)] [visit_exp 7] [visit_exp (x, ao)] @@ -77848,35 +63496,23 @@ dims \ = ao, i#55523, i#55569, memarg#151, memidx#242, sz#1374, vectype?#21, x [visit_id x] not free [visit_exp ao] [visit_id ao] not free -[check_dims] ao i#55606 i#55652 memarg#153 memidx#244 sz#1421 vectype?#22 x -dims \ = ao, i#55606, i#55652, memarg#153, memidx#244, sz#1421, vectype?#22, x -[visit_exp `VLOAD`_instr{`vectype?#22`, memidx#244, memarg#153}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#1421}(`%`_sz{i#55652}(16))), x, ao)] -[visit_exp `vectype?#22`] -[visit_id vectype?#22] -[visit_exp memidx#244] -[visit_id memidx#244] -[visit_exp memarg#153] -[visit_id memarg#153] -[visit_exp (`V128`_vectype, ?(`SPLAT`_vloadop_{sz#1421}(`%`_sz{i#55652}(16))), x, ao)] +[check_dims] ao x +dims \ = ao, x +[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(16))), x, ao)] +[visit_exp (`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(16))), x, ao)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp ?(`SPLAT`_vloadop_{sz#1421}(`%`_sz{i#55652}(16)))] -[visit_exp `SPLAT`_vloadop_{sz#1421}(`%`_sz{i#55652}(16))] -[visit_exp sz#1421] -[visit_id sz#1421] -[visit_exp (`%`_sz{i#55652}(16))] -[visit_exp `%`_sz{i#55652}(16)] -[visit_exp i#55652] -[visit_id i#55652] +[visit_exp ?(`SPLAT`_vloadop_(`%`_sz(16)))] +[visit_exp `SPLAT`_vloadop_(`%`_sz(16))] +[visit_exp (`%`_sz(16))] +[visit_exp `%`_sz(16)] [visit_exp (16)] [visit_exp 16] [visit_exp x] [visit_id x] [visit_exp ao] [visit_id ao] -[visit_exp `%`_u32{i#55606}(8)] -[visit_exp i#55606] -[visit_id i#55606] +[visit_exp `%`_u32(8)] [visit_exp (8)] [visit_exp 8] [visit_exp (x, ao)] @@ -77884,35 +63520,23 @@ dims \ = ao, i#55606, i#55652, memarg#153, memidx#244, sz#1421, vectype?#22, x [visit_id x] not free [visit_exp ao] [visit_id ao] not free -[check_dims] ao i#55689 i#55735 memarg#155 memidx#246 sz#1468 vectype?#23 x -dims \ = ao, i#55689, i#55735, memarg#155, memidx#246, sz#1468, vectype?#23, x -[visit_exp `VLOAD`_instr{`vectype?#23`, memidx#246, memarg#155}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#1468}(`%`_sz{i#55735}(32))), x, ao)] -[visit_exp `vectype?#23`] -[visit_id vectype?#23] -[visit_exp memidx#246] -[visit_id memidx#246] -[visit_exp memarg#155] -[visit_id memarg#155] -[visit_exp (`V128`_vectype, ?(`SPLAT`_vloadop_{sz#1468}(`%`_sz{i#55735}(32))), x, ao)] +[check_dims] ao x +dims \ = ao, x +[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(32))), x, ao)] +[visit_exp (`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(32))), x, ao)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp ?(`SPLAT`_vloadop_{sz#1468}(`%`_sz{i#55735}(32)))] -[visit_exp `SPLAT`_vloadop_{sz#1468}(`%`_sz{i#55735}(32))] -[visit_exp sz#1468] -[visit_id sz#1468] -[visit_exp (`%`_sz{i#55735}(32))] -[visit_exp `%`_sz{i#55735}(32)] -[visit_exp i#55735] -[visit_id i#55735] +[visit_exp ?(`SPLAT`_vloadop_(`%`_sz(32)))] +[visit_exp `SPLAT`_vloadop_(`%`_sz(32))] +[visit_exp (`%`_sz(32))] +[visit_exp `%`_sz(32)] [visit_exp (32)] [visit_exp 32] [visit_exp x] [visit_id x] [visit_exp ao] [visit_id ao] -[visit_exp `%`_u32{i#55689}(9)] -[visit_exp i#55689] -[visit_id i#55689] +[visit_exp `%`_u32(9)] [visit_exp (9)] [visit_exp 9] [visit_exp (x, ao)] @@ -77920,35 +63544,23 @@ dims \ = ao, i#55689, i#55735, memarg#155, memidx#246, sz#1468, vectype?#23, x [visit_id x] not free [visit_exp ao] [visit_id ao] not free -[check_dims] ao i#55772 i#55818 memarg#157 memidx#248 sz#1515 vectype?#24 x -dims \ = ao, i#55772, i#55818, memarg#157, memidx#248, sz#1515, vectype?#24, x -[visit_exp `VLOAD`_instr{`vectype?#24`, memidx#248, memarg#157}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#1515}(`%`_sz{i#55818}(64))), x, ao)] -[visit_exp `vectype?#24`] -[visit_id vectype?#24] -[visit_exp memidx#248] -[visit_id memidx#248] -[visit_exp memarg#157] -[visit_id memarg#157] -[visit_exp (`V128`_vectype, ?(`SPLAT`_vloadop_{sz#1515}(`%`_sz{i#55818}(64))), x, ao)] +[check_dims] ao x +dims \ = ao, x +[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(64))), x, ao)] +[visit_exp (`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(64))), x, ao)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp ?(`SPLAT`_vloadop_{sz#1515}(`%`_sz{i#55818}(64)))] -[visit_exp `SPLAT`_vloadop_{sz#1515}(`%`_sz{i#55818}(64))] -[visit_exp sz#1515] -[visit_id sz#1515] -[visit_exp (`%`_sz{i#55818}(64))] -[visit_exp `%`_sz{i#55818}(64)] -[visit_exp i#55818] -[visit_id i#55818] +[visit_exp ?(`SPLAT`_vloadop_(`%`_sz(64)))] +[visit_exp `SPLAT`_vloadop_(`%`_sz(64))] +[visit_exp (`%`_sz(64))] +[visit_exp `%`_sz(64)] [visit_exp (64)] [visit_exp 64] [visit_exp x] [visit_id x] [visit_exp ao] [visit_id ao] -[visit_exp `%`_u32{i#55772}(10)] -[visit_exp i#55772] -[visit_id i#55772] +[visit_exp `%`_u32(10)] [visit_exp (10)] [visit_exp 10] [visit_exp (x, ao)] @@ -77956,15 +63568,9 @@ dims \ = ao, i#55772, i#55818, memarg#157, memidx#248, sz#1515, vectype?#24, x [visit_id x] not free [visit_exp ao] [visit_id ao] not free -[check_dims] ao i#55855 memarg#159 memidx#250 vectype#237 x -dims \ = ao, i#55855, memarg#159, memidx#250, vectype#237, x -[visit_exp `VSTORE`_instr{vectype#237, memidx#250, memarg#159}(`V128`_vectype, x, ao)] -[visit_exp vectype#237] -[visit_id vectype#237] -[visit_exp memidx#250] -[visit_id memidx#250] -[visit_exp memarg#159] -[visit_id memarg#159] +[check_dims] ao x +dims \ = ao, x +[visit_exp `VSTORE`_instr(`V128`_vectype, x, ao)] [visit_exp (`V128`_vectype, x, ao)] [visit_exp `V128`_vectype] [visit_exp ()] @@ -77972,9 +63578,7 @@ dims \ = ao, i#55855, memarg#159, memidx#250, vectype#237, x [visit_id x] [visit_exp ao] [visit_id ao] -[visit_exp `%`_u32{i#55855}(11)] -[visit_exp i#55855] -[visit_id i#55855] +[visit_exp `%`_u32(11)] [visit_exp (11)] [visit_exp 11] [visit_exp (x, ao)] @@ -77982,25 +63586,13 @@ dims \ = ao, i#55855, memarg#159, memidx#250, vectype#237, x [visit_id x] not free [visit_exp ao] [visit_id ao] not free -[check_dims] ao i i#55906 i#55945 laneidx#31 memarg#161 memidx#252 sz#1517 vectype#239 x -dims \ = ao, i, i#55906, i#55945, laneidx#31, memarg#161, memidx#252, sz#1517, vectype#239, x -[visit_exp `VLOAD_LANE`_instr{vectype#239, sz#1517, memidx#252, memarg#161, laneidx#31}(`V128`_vectype, `%`_sz{i#55945}(8), x, ao, i)] -[visit_exp vectype#239] -[visit_id vectype#239] -[visit_exp sz#1517] -[visit_id sz#1517] -[visit_exp memidx#252] -[visit_id memidx#252] -[visit_exp memarg#161] -[visit_id memarg#161] -[visit_exp laneidx#31] -[visit_id laneidx#31] -[visit_exp (`V128`_vectype, `%`_sz{i#55945}(8), x, ao, i)] +[check_dims] ao i x +dims \ = ao, i, x +[visit_exp `VLOAD_LANE`_instr(`V128`_vectype, `%`_sz(8), x, ao, i)] +[visit_exp (`V128`_vectype, `%`_sz(8), x, ao, i)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp `%`_sz{i#55945}(8)] -[visit_exp i#55945] -[visit_id i#55945] +[visit_exp `%`_sz(8)] [visit_exp (8)] [visit_exp 8] [visit_exp x] @@ -78009,9 +63601,7 @@ dims \ = ao, i, i#55906, i#55945, laneidx#31, memarg#161, memidx#252, sz#1517, [visit_id ao] [visit_exp i] [visit_id i] -[visit_exp `%`_u32{i#55906}(84)] -[visit_exp i#55906] -[visit_id i#55906] +[visit_exp `%`_u32(84)] [visit_exp (84)] [visit_exp 84] [visit_exp (x, ao)] @@ -78021,25 +63611,13 @@ dims \ = ao, i, i#55906, i#55945, laneidx#31, memarg#161, memidx#252, sz#1517, [visit_id ao] not free [visit_exp i] [visit_id i] not free -[check_dims] ao i i#55994 i#56033 laneidx#33 memarg#163 memidx#254 sz#1519 vectype#241 x -dims \ = ao, i, i#55994, i#56033, laneidx#33, memarg#163, memidx#254, sz#1519, vectype#241, x -[visit_exp `VLOAD_LANE`_instr{vectype#241, sz#1519, memidx#254, memarg#163, laneidx#33}(`V128`_vectype, `%`_sz{i#56033}(16), x, ao, i)] -[visit_exp vectype#241] -[visit_id vectype#241] -[visit_exp sz#1519] -[visit_id sz#1519] -[visit_exp memidx#254] -[visit_id memidx#254] -[visit_exp memarg#163] -[visit_id memarg#163] -[visit_exp laneidx#33] -[visit_id laneidx#33] -[visit_exp (`V128`_vectype, `%`_sz{i#56033}(16), x, ao, i)] +[check_dims] ao i x +dims \ = ao, i, x +[visit_exp `VLOAD_LANE`_instr(`V128`_vectype, `%`_sz(16), x, ao, i)] +[visit_exp (`V128`_vectype, `%`_sz(16), x, ao, i)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp `%`_sz{i#56033}(16)] -[visit_exp i#56033] -[visit_id i#56033] +[visit_exp `%`_sz(16)] [visit_exp (16)] [visit_exp 16] [visit_exp x] @@ -78048,9 +63626,7 @@ dims \ = ao, i, i#55994, i#56033, laneidx#33, memarg#163, memidx#254, sz#1519, [visit_id ao] [visit_exp i] [visit_id i] -[visit_exp `%`_u32{i#55994}(85)] -[visit_exp i#55994] -[visit_id i#55994] +[visit_exp `%`_u32(85)] [visit_exp (85)] [visit_exp 85] [visit_exp (x, ao)] @@ -78060,25 +63636,13 @@ dims \ = ao, i, i#55994, i#56033, laneidx#33, memarg#163, memidx#254, sz#1519, [visit_id ao] not free [visit_exp i] [visit_id i] not free -[check_dims] ao i i#56082 i#56121 laneidx#35 memarg#165 memidx#256 sz#1521 vectype#243 x -dims \ = ao, i, i#56082, i#56121, laneidx#35, memarg#165, memidx#256, sz#1521, vectype#243, x -[visit_exp `VLOAD_LANE`_instr{vectype#243, sz#1521, memidx#256, memarg#165, laneidx#35}(`V128`_vectype, `%`_sz{i#56121}(32), x, ao, i)] -[visit_exp vectype#243] -[visit_id vectype#243] -[visit_exp sz#1521] -[visit_id sz#1521] -[visit_exp memidx#256] -[visit_id memidx#256] -[visit_exp memarg#165] -[visit_id memarg#165] -[visit_exp laneidx#35] -[visit_id laneidx#35] -[visit_exp (`V128`_vectype, `%`_sz{i#56121}(32), x, ao, i)] +[check_dims] ao i x +dims \ = ao, i, x +[visit_exp `VLOAD_LANE`_instr(`V128`_vectype, `%`_sz(32), x, ao, i)] +[visit_exp (`V128`_vectype, `%`_sz(32), x, ao, i)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp `%`_sz{i#56121}(32)] -[visit_exp i#56121] -[visit_id i#56121] +[visit_exp `%`_sz(32)] [visit_exp (32)] [visit_exp 32] [visit_exp x] @@ -78087,9 +63651,7 @@ dims \ = ao, i, i#56082, i#56121, laneidx#35, memarg#165, memidx#256, sz#1521, [visit_id ao] [visit_exp i] [visit_id i] -[visit_exp `%`_u32{i#56082}(86)] -[visit_exp i#56082] -[visit_id i#56082] +[visit_exp `%`_u32(86)] [visit_exp (86)] [visit_exp 86] [visit_exp (x, ao)] @@ -78099,25 +63661,13 @@ dims \ = ao, i, i#56082, i#56121, laneidx#35, memarg#165, memidx#256, sz#1521, [visit_id ao] not free [visit_exp i] [visit_id i] not free -[check_dims] ao i i#56170 i#56209 laneidx#37 memarg#167 memidx#258 sz#1523 vectype#245 x -dims \ = ao, i, i#56170, i#56209, laneidx#37, memarg#167, memidx#258, sz#1523, vectype#245, x -[visit_exp `VLOAD_LANE`_instr{vectype#245, sz#1523, memidx#258, memarg#167, laneidx#37}(`V128`_vectype, `%`_sz{i#56209}(64), x, ao, i)] -[visit_exp vectype#245] -[visit_id vectype#245] -[visit_exp sz#1523] -[visit_id sz#1523] -[visit_exp memidx#258] -[visit_id memidx#258] -[visit_exp memarg#167] -[visit_id memarg#167] -[visit_exp laneidx#37] -[visit_id laneidx#37] -[visit_exp (`V128`_vectype, `%`_sz{i#56209}(64), x, ao, i)] +[check_dims] ao i x +dims \ = ao, i, x +[visit_exp `VLOAD_LANE`_instr(`V128`_vectype, `%`_sz(64), x, ao, i)] +[visit_exp (`V128`_vectype, `%`_sz(64), x, ao, i)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp `%`_sz{i#56209}(64)] -[visit_exp i#56209] -[visit_id i#56209] +[visit_exp `%`_sz(64)] [visit_exp (64)] [visit_exp 64] [visit_exp x] @@ -78126,9 +63676,7 @@ dims \ = ao, i, i#56170, i#56209, laneidx#37, memarg#167, memidx#258, sz#1523, [visit_id ao] [visit_exp i] [visit_id i] -[visit_exp `%`_u32{i#56170}(87)] -[visit_exp i#56170] -[visit_id i#56170] +[visit_exp `%`_u32(87)] [visit_exp (87)] [visit_exp 87] [visit_exp (x, ao)] @@ -78138,25 +63686,13 @@ dims \ = ao, i, i#56170, i#56209, laneidx#37, memarg#167, memidx#258, sz#1523, [visit_id ao] not free [visit_exp i] [visit_id i] not free -[check_dims] ao i i#56258 i#56297 laneidx#39 memarg#169 memidx#260 sz#1525 vectype#247 x -dims \ = ao, i, i#56258, i#56297, laneidx#39, memarg#169, memidx#260, sz#1525, vectype#247, x -[visit_exp `VSTORE_LANE`_instr{vectype#247, sz#1525, memidx#260, memarg#169, laneidx#39}(`V128`_vectype, `%`_sz{i#56297}(8), x, ao, i)] -[visit_exp vectype#247] -[visit_id vectype#247] -[visit_exp sz#1525] -[visit_id sz#1525] -[visit_exp memidx#260] -[visit_id memidx#260] -[visit_exp memarg#169] -[visit_id memarg#169] -[visit_exp laneidx#39] -[visit_id laneidx#39] -[visit_exp (`V128`_vectype, `%`_sz{i#56297}(8), x, ao, i)] +[check_dims] ao i x +dims \ = ao, i, x +[visit_exp `VSTORE_LANE`_instr(`V128`_vectype, `%`_sz(8), x, ao, i)] +[visit_exp (`V128`_vectype, `%`_sz(8), x, ao, i)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp `%`_sz{i#56297}(8)] -[visit_exp i#56297] -[visit_id i#56297] +[visit_exp `%`_sz(8)] [visit_exp (8)] [visit_exp 8] [visit_exp x] @@ -78165,9 +63701,7 @@ dims \ = ao, i, i#56258, i#56297, laneidx#39, memarg#169, memidx#260, sz#1525, [visit_id ao] [visit_exp i] [visit_id i] -[visit_exp `%`_u32{i#56258}(88)] -[visit_exp i#56258] -[visit_id i#56258] +[visit_exp `%`_u32(88)] [visit_exp (88)] [visit_exp 88] [visit_exp (x, ao)] @@ -78177,25 +63711,13 @@ dims \ = ao, i, i#56258, i#56297, laneidx#39, memarg#169, memidx#260, sz#1525, [visit_id ao] not free [visit_exp i] [visit_id i] not free -[check_dims] ao i i#56346 i#56385 laneidx#41 memarg#171 memidx#262 sz#1527 vectype#249 x -dims \ = ao, i, i#56346, i#56385, laneidx#41, memarg#171, memidx#262, sz#1527, vectype#249, x -[visit_exp `VSTORE_LANE`_instr{vectype#249, sz#1527, memidx#262, memarg#171, laneidx#41}(`V128`_vectype, `%`_sz{i#56385}(16), x, ao, i)] -[visit_exp vectype#249] -[visit_id vectype#249] -[visit_exp sz#1527] -[visit_id sz#1527] -[visit_exp memidx#262] -[visit_id memidx#262] -[visit_exp memarg#171] -[visit_id memarg#171] -[visit_exp laneidx#41] -[visit_id laneidx#41] -[visit_exp (`V128`_vectype, `%`_sz{i#56385}(16), x, ao, i)] +[check_dims] ao i x +dims \ = ao, i, x +[visit_exp `VSTORE_LANE`_instr(`V128`_vectype, `%`_sz(16), x, ao, i)] +[visit_exp (`V128`_vectype, `%`_sz(16), x, ao, i)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp `%`_sz{i#56385}(16)] -[visit_exp i#56385] -[visit_id i#56385] +[visit_exp `%`_sz(16)] [visit_exp (16)] [visit_exp 16] [visit_exp x] @@ -78204,9 +63726,7 @@ dims \ = ao, i, i#56346, i#56385, laneidx#41, memarg#171, memidx#262, sz#1527, [visit_id ao] [visit_exp i] [visit_id i] -[visit_exp `%`_u32{i#56346}(89)] -[visit_exp i#56346] -[visit_id i#56346] +[visit_exp `%`_u32(89)] [visit_exp (89)] [visit_exp 89] [visit_exp (x, ao)] @@ -78216,25 +63736,13 @@ dims \ = ao, i, i#56346, i#56385, laneidx#41, memarg#171, memidx#262, sz#1527, [visit_id ao] not free [visit_exp i] [visit_id i] not free -[check_dims] ao i i#56434 i#56473 laneidx#43 memarg#173 memidx#264 sz#1529 vectype#251 x -dims \ = ao, i, i#56434, i#56473, laneidx#43, memarg#173, memidx#264, sz#1529, vectype#251, x -[visit_exp `VSTORE_LANE`_instr{vectype#251, sz#1529, memidx#264, memarg#173, laneidx#43}(`V128`_vectype, `%`_sz{i#56473}(32), x, ao, i)] -[visit_exp vectype#251] -[visit_id vectype#251] -[visit_exp sz#1529] -[visit_id sz#1529] -[visit_exp memidx#264] -[visit_id memidx#264] -[visit_exp memarg#173] -[visit_id memarg#173] -[visit_exp laneidx#43] -[visit_id laneidx#43] -[visit_exp (`V128`_vectype, `%`_sz{i#56473}(32), x, ao, i)] +[check_dims] ao i x +dims \ = ao, i, x +[visit_exp `VSTORE_LANE`_instr(`V128`_vectype, `%`_sz(32), x, ao, i)] +[visit_exp (`V128`_vectype, `%`_sz(32), x, ao, i)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp `%`_sz{i#56473}(32)] -[visit_exp i#56473] -[visit_id i#56473] +[visit_exp `%`_sz(32)] [visit_exp (32)] [visit_exp 32] [visit_exp x] @@ -78243,9 +63751,7 @@ dims \ = ao, i, i#56434, i#56473, laneidx#43, memarg#173, memidx#264, sz#1529, [visit_id ao] [visit_exp i] [visit_id i] -[visit_exp `%`_u32{i#56434}(90)] -[visit_exp i#56434] -[visit_id i#56434] +[visit_exp `%`_u32(90)] [visit_exp (90)] [visit_exp 90] [visit_exp (x, ao)] @@ -78255,25 +63761,13 @@ dims \ = ao, i, i#56434, i#56473, laneidx#43, memarg#173, memidx#264, sz#1529, [visit_id ao] not free [visit_exp i] [visit_id i] not free -[check_dims] ao i i#56522 i#56561 laneidx#45 memarg#175 memidx#266 sz#1531 vectype#253 x -dims \ = ao, i, i#56522, i#56561, laneidx#45, memarg#175, memidx#266, sz#1531, vectype#253, x -[visit_exp `VSTORE_LANE`_instr{vectype#253, sz#1531, memidx#266, memarg#175, laneidx#45}(`V128`_vectype, `%`_sz{i#56561}(64), x, ao, i)] -[visit_exp vectype#253] -[visit_id vectype#253] -[visit_exp sz#1531] -[visit_id sz#1531] -[visit_exp memidx#266] -[visit_id memidx#266] -[visit_exp memarg#175] -[visit_id memarg#175] -[visit_exp laneidx#45] -[visit_id laneidx#45] -[visit_exp (`V128`_vectype, `%`_sz{i#56561}(64), x, ao, i)] +[check_dims] ao i x +dims \ = ao, i, x +[visit_exp `VSTORE_LANE`_instr(`V128`_vectype, `%`_sz(64), x, ao, i)] +[visit_exp (`V128`_vectype, `%`_sz(64), x, ao, i)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp `%`_sz{i#56561}(64)] -[visit_exp i#56561] -[visit_id i#56561] +[visit_exp `%`_sz(64)] [visit_exp (64)] [visit_exp 64] [visit_exp x] @@ -78282,9 +63776,7 @@ dims \ = ao, i, i#56522, i#56561, laneidx#45, memarg#175, memidx#266, sz#1531, [visit_id ao] [visit_exp i] [visit_id i] -[visit_exp `%`_u32{i#56522}(91)] -[visit_exp i#56522] -[visit_id i#56522] +[visit_exp `%`_u32(91)] [visit_exp (91)] [visit_exp 91] [visit_exp (x, ao)] @@ -78294,37 +63786,23 @@ dims \ = ao, i, i#56522, i#56561, laneidx#45, memarg#175, memidx#266, sz#1531, [visit_id ao] not free [visit_exp i] [visit_id i] not free -[check_dims] ao i#56610 i#56650 i#56657 memarg#177 memidx#268 sz#1578 vectype?#25 x -dims \ = ao, i#56610, i#56650, i#56657, memarg#177, memidx#268, sz#1578, vectype?#25, x -[visit_exp `VLOAD`_instr{`vectype?#25`, memidx#268, memarg#177}(`V128`_vectype, ?(`ZERO`_vloadop_{sz#1578, i#56650}(`%`_sz{i#56657}(32))), x, ao)] -[visit_exp `vectype?#25`] -[visit_id vectype?#25] -[visit_exp memidx#268] -[visit_id memidx#268] -[visit_exp memarg#177] -[visit_id memarg#177] -[visit_exp (`V128`_vectype, ?(`ZERO`_vloadop_{sz#1578, i#56650}(`%`_sz{i#56657}(32))), x, ao)] +[check_dims] ao x +dims \ = ao, x +[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`ZERO`_vloadop_(`%`_sz(32))), x, ao)] +[visit_exp (`V128`_vectype, ?(`ZERO`_vloadop_(`%`_sz(32))), x, ao)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp ?(`ZERO`_vloadop_{sz#1578, i#56650}(`%`_sz{i#56657}(32)))] -[visit_exp `ZERO`_vloadop_{sz#1578, i#56650}(`%`_sz{i#56657}(32))] -[visit_exp sz#1578] -[visit_id sz#1578] -[visit_exp i#56650] -[visit_id i#56650] -[visit_exp (`%`_sz{i#56657}(32))] -[visit_exp `%`_sz{i#56657}(32)] -[visit_exp i#56657] -[visit_id i#56657] +[visit_exp ?(`ZERO`_vloadop_(`%`_sz(32)))] +[visit_exp `ZERO`_vloadop_(`%`_sz(32))] +[visit_exp (`%`_sz(32))] +[visit_exp `%`_sz(32)] [visit_exp (32)] [visit_exp 32] [visit_exp x] [visit_id x] [visit_exp ao] [visit_id ao] -[visit_exp `%`_u32{i#56610}(92)] -[visit_exp i#56610] -[visit_id i#56610] +[visit_exp `%`_u32(92)] [visit_exp (92)] [visit_exp 92] [visit_exp (x, ao)] @@ -78332,37 +63810,23 @@ dims \ = ao, i#56610, i#56650, i#56657, memarg#177, memidx#268, sz#1578, vectyp [visit_id x] not free [visit_exp ao] [visit_id ao] not free -[check_dims] ao i#56694 i#56734 i#56741 memarg#179 memidx#270 sz#1625 vectype?#26 x -dims \ = ao, i#56694, i#56734, i#56741, memarg#179, memidx#270, sz#1625, vectype?#26, x -[visit_exp `VLOAD`_instr{`vectype?#26`, memidx#270, memarg#179}(`V128`_vectype, ?(`ZERO`_vloadop_{sz#1625, i#56734}(`%`_sz{i#56741}(64))), x, ao)] -[visit_exp `vectype?#26`] -[visit_id vectype?#26] -[visit_exp memidx#270] -[visit_id memidx#270] -[visit_exp memarg#179] -[visit_id memarg#179] -[visit_exp (`V128`_vectype, ?(`ZERO`_vloadop_{sz#1625, i#56734}(`%`_sz{i#56741}(64))), x, ao)] +[check_dims] ao x +dims \ = ao, x +[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`ZERO`_vloadop_(`%`_sz(64))), x, ao)] +[visit_exp (`V128`_vectype, ?(`ZERO`_vloadop_(`%`_sz(64))), x, ao)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp ?(`ZERO`_vloadop_{sz#1625, i#56734}(`%`_sz{i#56741}(64)))] -[visit_exp `ZERO`_vloadop_{sz#1625, i#56734}(`%`_sz{i#56741}(64))] -[visit_exp sz#1625] -[visit_id sz#1625] -[visit_exp i#56734] -[visit_id i#56734] -[visit_exp (`%`_sz{i#56741}(64))] -[visit_exp `%`_sz{i#56741}(64)] -[visit_exp i#56741] -[visit_id i#56741] +[visit_exp ?(`ZERO`_vloadop_(`%`_sz(64)))] +[visit_exp `ZERO`_vloadop_(`%`_sz(64))] +[visit_exp (`%`_sz(64))] +[visit_exp `%`_sz(64)] [visit_exp (64)] [visit_exp 64] [visit_exp x] [visit_id x] [visit_exp ao] [visit_id ao] -[visit_exp `%`_u32{i#56694}(93)] -[visit_exp i#56694] -[visit_id i#56694] +[visit_exp `%`_u32(93)] [visit_exp (93)] [visit_exp 93] [visit_exp (x, ao)] @@ -78372,11 +63836,9 @@ dims \ = ao, i#56694, i#56734, i#56741, memarg#179, memidx#270, sz#1625, vectyp [visit_id ao] not free ps' = [check_dims] -[check_dims] b i#56778 vectype#257 -dims \ = b, i#56778, vectype#257 -[visit_exp `VCONST`_instr{vectype#257}(`V128`_vectype, $inv_ibytes_(128, b^16{b <- `b*`}))] -[visit_exp vectype#257] -[visit_id vectype#257] +[check_dims] b +dims \ = b +[visit_exp `VCONST`_instr(`V128`_vectype, $inv_ibytes_(128, b^16{b <- `b*`}))] [visit_exp (`V128`_vectype, $inv_ibytes_(128, b^16{b <- `b*`}))] [visit_exp `V128`_vectype] [visit_exp ()] @@ -78392,9 +63854,7 @@ dims \ = b, i#56778, vectype#257 [visit_exp `b*`] [visit_id b*] no dims [visit_id b*] -[visit_exp `%`_u32{i#56778}(12)] -[visit_exp i#56778] -[visit_id i#56778] +[visit_exp `%`_u32(12)] [visit_exp (12)] [visit_exp 12] [scope_enter b] @@ -78408,8711 +63868,4697 @@ dims \ = b, i#56778, vectype#257 [visit_id b*] no dims ps' = [check_dims] -[check_dims] bshape#13 dim#7789 i#56835 i#56884 i#56885 i#56888 i#56892 i#56899 i#56956 i#56957 l laneidx*#7 lanetype#7789 shape#845 shape#856 -dims \ = bshape#13, dim#7789, i#56835, i#56884, i#56885, i#56888, i#56892, i#56899, i#56956, i#56957, l, laneidx*#7, lanetype#7789, shape#845, shape#856 -[visit_exp `VSHUFFLE`_instr{bshape#13, `laneidx*#7`, i#56888, shape#845}(`%`_bshape{shape#856}(`%X%`_shape{lanetype#7789, dim#7789, i#56892}(`I8`_lanetype, `%`_dim{i#56899}(16))), `%`_laneidx{i#56957}(l!`%`_labelidx{i#56956}.0)^16{i#56956 <- `i#56956*`, i#56957 <- `i#56957*`, l <- `l*`})] -[visit_exp bshape#13] -[visit_id bshape#13] -[visit_exp `laneidx*#7`] -[visit_id laneidx*#7] -[visit_exp i#56888] -[visit_id i#56888] -[visit_exp shape#845] -[visit_id shape#845] -[visit_exp (`%`_bshape{shape#856}(`%X%`_shape{lanetype#7789, dim#7789, i#56892}(`I8`_lanetype, `%`_dim{i#56899}(16))), `%`_laneidx{i#56957}(l!`%`_labelidx{i#56956}.0)^16{i#56956 <- `i#56956*`, i#56957 <- `i#56957*`, l <- `l*`})] -[visit_exp `%`_bshape{shape#856}(`%X%`_shape{lanetype#7789, dim#7789, i#56892}(`I8`_lanetype, `%`_dim{i#56899}(16)))] -[visit_exp shape#856] -[visit_id shape#856] -[visit_exp (`%X%`_shape{lanetype#7789, dim#7789, i#56892}(`I8`_lanetype, `%`_dim{i#56899}(16)))] -[visit_exp `%X%`_shape{lanetype#7789, dim#7789, i#56892}(`I8`_lanetype, `%`_dim{i#56899}(16))] -[visit_exp lanetype#7789] -[visit_id lanetype#7789] -[visit_exp dim#7789] -[visit_id dim#7789] -[visit_exp i#56892] -[visit_id i#56892] -[visit_exp (`I8`_lanetype, `%`_dim{i#56899}(16))] +[check_dims] l +dims \ = l +[visit_exp `VSHUFFLE`_instr(`%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `%`_laneidx(l!`%`_labelidx.0)^16{l <- `l*`})] +[visit_exp (`%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `%`_laneidx(l!`%`_labelidx.0)^16{l <- `l*`})] +[visit_exp `%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#56899}(16)] -[visit_exp i#56899] -[visit_id i#56899] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `%`_laneidx{i#56957}(l!`%`_labelidx{i#56956}.0)^16{i#56956 <- `i#56956*`, i#56957 <- `i#56957*`, l <- `l*`}] -[scope_enter i#56956] -[scope_enter i#56957] +[visit_exp `%`_laneidx(l!`%`_labelidx.0)^16{l <- `l*`}] [scope_enter l] -[visit_exp `%`_laneidx{i#56957}(l!`%`_labelidx{i#56956}.0)] -[visit_exp i#56957] -[visit_id i#56957] not free -[visit_exp (l!`%`_labelidx{i#56956}.0)] -[visit_exp l!`%`_labelidx{i#56956}.0] -[visit_exp l!`%`_labelidx{i#56956}] +[visit_exp `%`_laneidx(l!`%`_labelidx.0)] +[visit_exp (l!`%`_labelidx.0)] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] not free -[visit_exp i#56956] -[visit_id i#56956] not free -[visit_id i#56956] not free -[visit_id i#56957] not free [visit_id l] not free [scope_exit l] -[scope_exit i#56957] -[scope_exit i#56956] [visit_exp 16] -[visit_exp `i#56956*`] -[visit_id i#56956*] no dims -[visit_id i#56956*] -[visit_exp `i#56957*`] -[visit_id i#56957*] no dims -[visit_id i#56957*] [visit_exp `l*`] [visit_id l*] no dims [visit_id l*] -[visit_exp `%`_u32{i#56835}(13)] -[visit_exp i#56835] -[visit_id i#56835] +[visit_exp `%`_u32(13)] [visit_exp (13)] [visit_exp 13] -[scope_enter i#56884] -[scope_enter i#56885] [scope_enter l] -[visit_exp `%`_laneidx{i#56885}(l!`%`_labelidx{i#56884}.0)] -[visit_exp i#56885] -[visit_id i#56885] not free -[visit_exp (l!`%`_labelidx{i#56884}.0)] -[visit_exp l!`%`_labelidx{i#56884}.0] -[visit_exp l!`%`_labelidx{i#56884}] +[visit_exp `%`_laneidx(l!`%`_labelidx.0)] +[visit_exp (l!`%`_labelidx.0)] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] not free -[visit_exp i#56884] -[visit_id i#56884] not free -[visit_id i#56884] not free -[visit_id i#56885] not free [visit_id l] not free [scope_exit l] -[scope_exit i#56885] -[scope_exit i#56884] [visit_exp 16] -[visit_exp `i#56884*`] -[visit_id i#56884*] no dims -[visit_id i#56884*] -[visit_exp `i#56885*`] -[visit_id i#56885*] no dims -[visit_id i#56885*] [visit_exp `l*`] [visit_id l*] not free [visit_id l*] no dims -[check_dims] bshape#15 dim#7801 i#56981 i#56988 i#56995 lanetype#7801 shape#868 -dims \ = bshape#15, dim#7801, i#56981, i#56988, i#56995, lanetype#7801, shape#868 -[visit_exp `VSWIZZLOP`_instr{bshape#15}(`%`_bshape{shape#868}(`%X%`_shape{lanetype#7801, dim#7801, i#56988}(`I8`_lanetype, `%`_dim{i#56995}(16))), `SWIZZLE`_vswizzlop_)] -[visit_exp bshape#15] -[visit_id bshape#15] -[visit_exp (`%`_bshape{shape#868}(`%X%`_shape{lanetype#7801, dim#7801, i#56988}(`I8`_lanetype, `%`_dim{i#56995}(16))), `SWIZZLE`_vswizzlop_)] -[visit_exp `%`_bshape{shape#868}(`%X%`_shape{lanetype#7801, dim#7801, i#56988}(`I8`_lanetype, `%`_dim{i#56995}(16)))] -[visit_exp shape#868] -[visit_id shape#868] -[visit_exp (`%X%`_shape{lanetype#7801, dim#7801, i#56988}(`I8`_lanetype, `%`_dim{i#56995}(16)))] -[visit_exp `%X%`_shape{lanetype#7801, dim#7801, i#56988}(`I8`_lanetype, `%`_dim{i#56995}(16))] -[visit_exp lanetype#7801] -[visit_id lanetype#7801] -[visit_exp dim#7801] -[visit_id dim#7801] -[visit_exp i#56988] -[visit_id i#56988] -[visit_exp (`I8`_lanetype, `%`_dim{i#56995}(16))] +[check_dims] +dims \ = +[visit_exp `VSWIZZLOP`_instr(`%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `SWIZZLE`_vswizzlop_)] +[visit_exp (`%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `SWIZZLE`_vswizzlop_)] +[visit_exp `%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#56995}(16)] -[visit_exp i#56995] -[visit_id i#56995] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] [visit_exp `SWIZZLE`_vswizzlop_] [visit_exp ()] -[visit_exp `%`_u32{i#56981}(14)] -[visit_exp i#56981] -[visit_id i#56981] +[visit_exp `%`_u32(14)] [visit_exp (14)] [visit_exp 14] -[check_dims] bshape#17 dim#7858 i#57093 i#57100 i#57107 lanetype#7858 shape#895 -dims \ = bshape#17, dim#7858, i#57093, i#57100, i#57107, lanetype#7858, shape#895 -[visit_exp `VSWIZZLOP`_instr{bshape#17}(`%`_bshape{shape#895}(`%X%`_shape{lanetype#7858, dim#7858, i#57100}(`I8`_lanetype, `%`_dim{i#57107}(16))), `RELAXED_SWIZZLE`_vswizzlop_)] -[visit_exp bshape#17] -[visit_id bshape#17] -[visit_exp (`%`_bshape{shape#895}(`%X%`_shape{lanetype#7858, dim#7858, i#57100}(`I8`_lanetype, `%`_dim{i#57107}(16))), `RELAXED_SWIZZLE`_vswizzlop_)] -[visit_exp `%`_bshape{shape#895}(`%X%`_shape{lanetype#7858, dim#7858, i#57100}(`I8`_lanetype, `%`_dim{i#57107}(16)))] -[visit_exp shape#895] -[visit_id shape#895] -[visit_exp (`%X%`_shape{lanetype#7858, dim#7858, i#57100}(`I8`_lanetype, `%`_dim{i#57107}(16)))] -[visit_exp `%X%`_shape{lanetype#7858, dim#7858, i#57100}(`I8`_lanetype, `%`_dim{i#57107}(16))] -[visit_exp lanetype#7858] -[visit_id lanetype#7858] -[visit_exp dim#7858] -[visit_id dim#7858] -[visit_exp i#57100] -[visit_id i#57100] -[visit_exp (`I8`_lanetype, `%`_dim{i#57107}(16))] +[check_dims] +dims \ = +[visit_exp `VSWIZZLOP`_instr(`%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `RELAXED_SWIZZLE`_vswizzlop_)] +[visit_exp (`%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `RELAXED_SWIZZLE`_vswizzlop_)] +[visit_exp `%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#57107}(16)] -[visit_exp i#57107] -[visit_id i#57107] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] [visit_exp `RELAXED_SWIZZLE`_vswizzlop_] [visit_exp ()] -[visit_exp `%`_u32{i#57093}(256)] -[visit_exp i#57093] -[visit_id i#57093] +[visit_exp `%`_u32(256)] [visit_exp (256)] [visit_exp 256] ps' = [check_dims] -[check_dims] dim#7915 i#57205 i#57212 i#57219 lanetype#7915 shape#912 -dims \ = dim#7915, i#57205, i#57212, i#57219, lanetype#7915, shape#912 -[visit_exp `VSPLAT`_instr{shape#912}(`%X%`_shape{lanetype#7915, dim#7915, i#57212}(`I8`_lanetype, `%`_dim{i#57219}(16)))] -[visit_exp shape#912] -[visit_id shape#912] -[visit_exp (`%X%`_shape{lanetype#7915, dim#7915, i#57212}(`I8`_lanetype, `%`_dim{i#57219}(16)))] -[visit_exp `%X%`_shape{lanetype#7915, dim#7915, i#57212}(`I8`_lanetype, `%`_dim{i#57219}(16))] -[visit_exp lanetype#7915] -[visit_id lanetype#7915] -[visit_exp dim#7915] -[visit_id dim#7915] -[visit_exp i#57212] -[visit_id i#57212] -[visit_exp (`I8`_lanetype, `%`_dim{i#57219}(16))] +[check_dims] +dims \ = +[visit_exp `VSPLAT`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#57219}(16)] -[visit_exp i#57219] -[visit_id i#57219] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `%`_u32{i#57205}(15)] -[visit_exp i#57205] -[visit_id i#57205] +[visit_exp `%`_u32(15)] [visit_exp (15)] [visit_exp 15] -[check_dims] dim#7927 i#57242 i#57249 i#57256 lanetype#7927 shape#914 -dims \ = dim#7927, i#57242, i#57249, i#57256, lanetype#7927, shape#914 -[visit_exp `VSPLAT`_instr{shape#914}(`%X%`_shape{lanetype#7927, dim#7927, i#57249}(`I16`_lanetype, `%`_dim{i#57256}(8)))] -[visit_exp shape#914] -[visit_id shape#914] -[visit_exp (`%X%`_shape{lanetype#7927, dim#7927, i#57249}(`I16`_lanetype, `%`_dim{i#57256}(8)))] -[visit_exp `%X%`_shape{lanetype#7927, dim#7927, i#57249}(`I16`_lanetype, `%`_dim{i#57256}(8))] -[visit_exp lanetype#7927] -[visit_id lanetype#7927] -[visit_exp dim#7927] -[visit_id dim#7927] -[visit_exp i#57249] -[visit_id i#57249] -[visit_exp (`I16`_lanetype, `%`_dim{i#57256}(8))] +[check_dims] +dims \ = +[visit_exp `VSPLAT`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#57256}(8)] -[visit_exp i#57256] -[visit_id i#57256] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `%`_u32{i#57242}(16)] -[visit_exp i#57242] -[visit_id i#57242] +[visit_exp `%`_u32(16)] [visit_exp (16)] [visit_exp 16] -[check_dims] dim#7939 i#57279 i#57286 i#57293 lanetype#7939 shape#916 -dims \ = dim#7939, i#57279, i#57286, i#57293, lanetype#7939, shape#916 -[visit_exp `VSPLAT`_instr{shape#916}(`%X%`_shape{lanetype#7939, dim#7939, i#57286}(`I32`_lanetype, `%`_dim{i#57293}(4)))] -[visit_exp shape#916] -[visit_id shape#916] -[visit_exp (`%X%`_shape{lanetype#7939, dim#7939, i#57286}(`I32`_lanetype, `%`_dim{i#57293}(4)))] -[visit_exp `%X%`_shape{lanetype#7939, dim#7939, i#57286}(`I32`_lanetype, `%`_dim{i#57293}(4))] -[visit_exp lanetype#7939] -[visit_id lanetype#7939] -[visit_exp dim#7939] -[visit_id dim#7939] -[visit_exp i#57286] -[visit_id i#57286] -[visit_exp (`I32`_lanetype, `%`_dim{i#57293}(4))] +[check_dims] +dims \ = +[visit_exp `VSPLAT`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#57293}(4)] -[visit_exp i#57293] -[visit_id i#57293] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%`_u32{i#57279}(17)] -[visit_exp i#57279] -[visit_id i#57279] +[visit_exp `%`_u32(17)] [visit_exp (17)] [visit_exp 17] -[check_dims] dim#7951 i#57316 i#57323 i#57330 lanetype#7951 shape#918 -dims \ = dim#7951, i#57316, i#57323, i#57330, lanetype#7951, shape#918 -[visit_exp `VSPLAT`_instr{shape#918}(`%X%`_shape{lanetype#7951, dim#7951, i#57323}(`I64`_lanetype, `%`_dim{i#57330}(2)))] -[visit_exp shape#918] -[visit_id shape#918] -[visit_exp (`%X%`_shape{lanetype#7951, dim#7951, i#57323}(`I64`_lanetype, `%`_dim{i#57330}(2)))] -[visit_exp `%X%`_shape{lanetype#7951, dim#7951, i#57323}(`I64`_lanetype, `%`_dim{i#57330}(2))] -[visit_exp lanetype#7951] -[visit_id lanetype#7951] -[visit_exp dim#7951] -[visit_id dim#7951] -[visit_exp i#57323] -[visit_id i#57323] -[visit_exp (`I64`_lanetype, `%`_dim{i#57330}(2))] +[check_dims] +dims \ = +[visit_exp `VSPLAT`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#57330}(2)] -[visit_exp i#57330] -[visit_id i#57330] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `%`_u32{i#57316}(18)] -[visit_exp i#57316] -[visit_id i#57316] +[visit_exp `%`_u32(18)] [visit_exp (18)] [visit_exp 18] -[check_dims] dim#7963 i#57353 i#57360 i#57367 lanetype#7963 shape#920 -dims \ = dim#7963, i#57353, i#57360, i#57367, lanetype#7963, shape#920 -[visit_exp `VSPLAT`_instr{shape#920}(`%X%`_shape{lanetype#7963, dim#7963, i#57360}(`F32`_lanetype, `%`_dim{i#57367}(4)))] -[visit_exp shape#920] -[visit_id shape#920] -[visit_exp (`%X%`_shape{lanetype#7963, dim#7963, i#57360}(`F32`_lanetype, `%`_dim{i#57367}(4)))] -[visit_exp `%X%`_shape{lanetype#7963, dim#7963, i#57360}(`F32`_lanetype, `%`_dim{i#57367}(4))] -[visit_exp lanetype#7963] -[visit_id lanetype#7963] -[visit_exp dim#7963] -[visit_id dim#7963] -[visit_exp i#57360] -[visit_id i#57360] -[visit_exp (`F32`_lanetype, `%`_dim{i#57367}(4))] +[check_dims] +dims \ = +[visit_exp `VSPLAT`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)))] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)))] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#57367}(4)] -[visit_exp i#57367] -[visit_id i#57367] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%`_u32{i#57353}(19)] -[visit_exp i#57353] -[visit_id i#57353] +[visit_exp `%`_u32(19)] [visit_exp (19)] [visit_exp 19] -[check_dims] dim#7975 i#57390 i#57397 i#57404 lanetype#7975 shape#922 -dims \ = dim#7975, i#57390, i#57397, i#57404, lanetype#7975, shape#922 -[visit_exp `VSPLAT`_instr{shape#922}(`%X%`_shape{lanetype#7975, dim#7975, i#57397}(`F64`_lanetype, `%`_dim{i#57404}(2)))] -[visit_exp shape#922] -[visit_id shape#922] -[visit_exp (`%X%`_shape{lanetype#7975, dim#7975, i#57397}(`F64`_lanetype, `%`_dim{i#57404}(2)))] -[visit_exp `%X%`_shape{lanetype#7975, dim#7975, i#57397}(`F64`_lanetype, `%`_dim{i#57404}(2))] -[visit_exp lanetype#7975] -[visit_id lanetype#7975] -[visit_exp dim#7975] -[visit_id dim#7975] -[visit_exp i#57397] -[visit_id i#57397] -[visit_exp (`F64`_lanetype, `%`_dim{i#57404}(2))] +[check_dims] +dims \ = +[visit_exp `VSPLAT`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)))] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)))] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#57404}(2)] -[visit_exp i#57404] -[visit_id i#57404] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `%`_u32{i#57390}(20)] -[visit_exp i#57390] -[visit_id i#57390] +[visit_exp `%`_u32(20)] [visit_exp (20)] [visit_exp 20] ps' = [check_dims] -[check_dims] dim#7987 i#57427 i#57476 i#57477 i#57485 i#57492 i#57582 i#57583 l laneidx#47 lanetype#7987 shape#924 sx?#43 -dims \ = dim#7987, i#57427, i#57476, i#57477, i#57485, i#57492, i#57582, i#57583, l, laneidx#47, lanetype#7987, shape#924, sx?#43 -[visit_exp `VEXTRACT_LANE`_instr{shape#924, `sx?#43`, laneidx#47}(`%X%`_shape{lanetype#7987, dim#7987, i#57485}(`I8`_lanetype, `%`_dim{i#57492}(16)), ?(`S`_sx), `%`_laneidx{i#57583}(l!`%`_labelidx{i#57582}.0))] -[visit_exp shape#924] -[visit_id shape#924] -[visit_exp `sx?#43`] -[visit_id sx?#43] -[visit_exp laneidx#47] -[visit_id laneidx#47] -[visit_exp (`%X%`_shape{lanetype#7987, dim#7987, i#57485}(`I8`_lanetype, `%`_dim{i#57492}(16)), ?(`S`_sx), `%`_laneidx{i#57583}(l!`%`_labelidx{i#57582}.0))] -[visit_exp `%X%`_shape{lanetype#7987, dim#7987, i#57485}(`I8`_lanetype, `%`_dim{i#57492}(16))] -[visit_exp lanetype#7987] -[visit_id lanetype#7987] -[visit_exp dim#7987] -[visit_id dim#7987] -[visit_exp i#57485] -[visit_id i#57485] -[visit_exp (`I8`_lanetype, `%`_dim{i#57492}(16))] +[check_dims] l +dims \ = l +[visit_exp `VEXTRACT_LANE`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), ?(`S`_sx), `%`_laneidx(l!`%`_labelidx.0))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), ?(`S`_sx), `%`_laneidx(l!`%`_labelidx.0))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#57492}(16)] -[visit_exp i#57492] -[visit_id i#57492] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] [visit_exp ?(`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_laneidx{i#57583}(l!`%`_labelidx{i#57582}.0)] -[visit_exp i#57583] -[visit_id i#57583] -[visit_exp (l!`%`_labelidx{i#57582}.0)] -[visit_exp l!`%`_labelidx{i#57582}.0] -[visit_exp l!`%`_labelidx{i#57582}] +[visit_exp `%`_laneidx(l!`%`_labelidx.0)] +[visit_exp (l!`%`_labelidx.0)] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] -[visit_exp i#57582] -[visit_id i#57582] -[visit_exp `%`_u32{i#57427}(21)] -[visit_exp i#57427] -[visit_id i#57427] +[visit_exp `%`_u32(21)] [visit_exp (21)] [visit_exp 21] -[visit_exp `%`_laneidx{i#57477}(l!`%`_labelidx{i#57476}.0)] -[visit_exp i#57477] -[visit_id i#57477] -[visit_exp (l!`%`_labelidx{i#57476}.0)] -[visit_exp l!`%`_labelidx{i#57476}.0] -[visit_exp l!`%`_labelidx{i#57476}] +[visit_exp `%`_laneidx(l!`%`_labelidx.0)] +[visit_exp (l!`%`_labelidx.0)] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] not free -[visit_exp i#57476] -[visit_id i#57476] -[check_dims] dim#7999 i#57607 i#57656 i#57657 i#57665 i#57672 i#57762 i#57763 l laneidx#49 lanetype#7999 shape#926 sx?#45 -dims \ = dim#7999, i#57607, i#57656, i#57657, i#57665, i#57672, i#57762, i#57763, l, laneidx#49, lanetype#7999, shape#926, sx?#45 -[visit_exp `VEXTRACT_LANE`_instr{shape#926, `sx?#45`, laneidx#49}(`%X%`_shape{lanetype#7999, dim#7999, i#57665}(`I8`_lanetype, `%`_dim{i#57672}(16)), ?(`U`_sx), `%`_laneidx{i#57763}(l!`%`_labelidx{i#57762}.0))] -[visit_exp shape#926] -[visit_id shape#926] -[visit_exp `sx?#45`] -[visit_id sx?#45] -[visit_exp laneidx#49] -[visit_id laneidx#49] -[visit_exp (`%X%`_shape{lanetype#7999, dim#7999, i#57665}(`I8`_lanetype, `%`_dim{i#57672}(16)), ?(`U`_sx), `%`_laneidx{i#57763}(l!`%`_labelidx{i#57762}.0))] -[visit_exp `%X%`_shape{lanetype#7999, dim#7999, i#57665}(`I8`_lanetype, `%`_dim{i#57672}(16))] -[visit_exp lanetype#7999] -[visit_id lanetype#7999] -[visit_exp dim#7999] -[visit_id dim#7999] -[visit_exp i#57665] -[visit_id i#57665] -[visit_exp (`I8`_lanetype, `%`_dim{i#57672}(16))] +[check_dims] l +dims \ = l +[visit_exp `VEXTRACT_LANE`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), ?(`U`_sx), `%`_laneidx(l!`%`_labelidx.0))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), ?(`U`_sx), `%`_laneidx(l!`%`_labelidx.0))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#57672}(16)] -[visit_exp i#57672] -[visit_id i#57672] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] [visit_exp ?(`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_laneidx{i#57763}(l!`%`_labelidx{i#57762}.0)] -[visit_exp i#57763] -[visit_id i#57763] -[visit_exp (l!`%`_labelidx{i#57762}.0)] -[visit_exp l!`%`_labelidx{i#57762}.0] -[visit_exp l!`%`_labelidx{i#57762}] +[visit_exp `%`_laneidx(l!`%`_labelidx.0)] +[visit_exp (l!`%`_labelidx.0)] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] -[visit_exp i#57762] -[visit_id i#57762] -[visit_exp `%`_u32{i#57607}(22)] -[visit_exp i#57607] -[visit_id i#57607] +[visit_exp `%`_u32(22)] [visit_exp (22)] [visit_exp 22] -[visit_exp `%`_laneidx{i#57657}(l!`%`_labelidx{i#57656}.0)] -[visit_exp i#57657] -[visit_id i#57657] -[visit_exp (l!`%`_labelidx{i#57656}.0)] -[visit_exp l!`%`_labelidx{i#57656}.0] -[visit_exp l!`%`_labelidx{i#57656}] +[visit_exp `%`_laneidx(l!`%`_labelidx.0)] +[visit_exp (l!`%`_labelidx.0)] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] not free -[visit_exp i#57656] -[visit_id i#57656] -[check_dims] dim#8011 i#57787 i#57836 i#57837 i#57845 i#57852 i#57898 i#57899 l laneidx#51 lanetype#8011 shape#928 -dims \ = dim#8011, i#57787, i#57836, i#57837, i#57845, i#57852, i#57898, i#57899, l, laneidx#51, lanetype#8011, shape#928 -[visit_exp `VREPLACE_LANE`_instr{shape#928, laneidx#51}(`%X%`_shape{lanetype#8011, dim#8011, i#57845}(`I8`_lanetype, `%`_dim{i#57852}(16)), `%`_laneidx{i#57899}(l!`%`_labelidx{i#57898}.0))] -[visit_exp shape#928] -[visit_id shape#928] -[visit_exp laneidx#51] -[visit_id laneidx#51] -[visit_exp (`%X%`_shape{lanetype#8011, dim#8011, i#57845}(`I8`_lanetype, `%`_dim{i#57852}(16)), `%`_laneidx{i#57899}(l!`%`_labelidx{i#57898}.0))] -[visit_exp `%X%`_shape{lanetype#8011, dim#8011, i#57845}(`I8`_lanetype, `%`_dim{i#57852}(16))] -[visit_exp lanetype#8011] -[visit_id lanetype#8011] -[visit_exp dim#8011] -[visit_id dim#8011] -[visit_exp i#57845] -[visit_id i#57845] -[visit_exp (`I8`_lanetype, `%`_dim{i#57852}(16))] +[check_dims] l +dims \ = l +[visit_exp `VREPLACE_LANE`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `%`_laneidx(l!`%`_labelidx.0))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `%`_laneidx(l!`%`_labelidx.0))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#57852}(16)] -[visit_exp i#57852] -[visit_id i#57852] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `%`_laneidx{i#57899}(l!`%`_labelidx{i#57898}.0)] -[visit_exp i#57899] -[visit_id i#57899] -[visit_exp (l!`%`_labelidx{i#57898}.0)] -[visit_exp l!`%`_labelidx{i#57898}.0] -[visit_exp l!`%`_labelidx{i#57898}] +[visit_exp `%`_laneidx(l!`%`_labelidx.0)] +[visit_exp (l!`%`_labelidx.0)] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] -[visit_exp i#57898] -[visit_id i#57898] -[visit_exp `%`_u32{i#57787}(23)] -[visit_exp i#57787] -[visit_id i#57787] +[visit_exp `%`_u32(23)] [visit_exp (23)] [visit_exp 23] -[visit_exp `%`_laneidx{i#57837}(l!`%`_labelidx{i#57836}.0)] -[visit_exp i#57837] -[visit_id i#57837] -[visit_exp (l!`%`_labelidx{i#57836}.0)] -[visit_exp l!`%`_labelidx{i#57836}.0] -[visit_exp l!`%`_labelidx{i#57836}] +[visit_exp `%`_laneidx(l!`%`_labelidx.0)] +[visit_exp (l!`%`_labelidx.0)] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] not free -[visit_exp i#57836] -[visit_id i#57836] -[check_dims] dim#8023 i#57923 i#57972 i#57973 i#57981 i#57988 i#58078 i#58079 l laneidx#53 lanetype#8023 shape#930 sx?#47 -dims \ = dim#8023, i#57923, i#57972, i#57973, i#57981, i#57988, i#58078, i#58079, l, laneidx#53, lanetype#8023, shape#930, sx?#47 -[visit_exp `VEXTRACT_LANE`_instr{shape#930, `sx?#47`, laneidx#53}(`%X%`_shape{lanetype#8023, dim#8023, i#57981}(`I16`_lanetype, `%`_dim{i#57988}(8)), ?(`S`_sx), `%`_laneidx{i#58079}(l!`%`_labelidx{i#58078}.0))] -[visit_exp shape#930] -[visit_id shape#930] -[visit_exp `sx?#47`] -[visit_id sx?#47] -[visit_exp laneidx#53] -[visit_id laneidx#53] -[visit_exp (`%X%`_shape{lanetype#8023, dim#8023, i#57981}(`I16`_lanetype, `%`_dim{i#57988}(8)), ?(`S`_sx), `%`_laneidx{i#58079}(l!`%`_labelidx{i#58078}.0))] -[visit_exp `%X%`_shape{lanetype#8023, dim#8023, i#57981}(`I16`_lanetype, `%`_dim{i#57988}(8))] -[visit_exp lanetype#8023] -[visit_id lanetype#8023] -[visit_exp dim#8023] -[visit_id dim#8023] -[visit_exp i#57981] -[visit_id i#57981] -[visit_exp (`I16`_lanetype, `%`_dim{i#57988}(8))] +[check_dims] l +dims \ = l +[visit_exp `VEXTRACT_LANE`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), ?(`S`_sx), `%`_laneidx(l!`%`_labelidx.0))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), ?(`S`_sx), `%`_laneidx(l!`%`_labelidx.0))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#57988}(8)] -[visit_exp i#57988] -[visit_id i#57988] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] [visit_exp ?(`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_laneidx{i#58079}(l!`%`_labelidx{i#58078}.0)] -[visit_exp i#58079] -[visit_id i#58079] -[visit_exp (l!`%`_labelidx{i#58078}.0)] -[visit_exp l!`%`_labelidx{i#58078}.0] -[visit_exp l!`%`_labelidx{i#58078}] +[visit_exp `%`_laneidx(l!`%`_labelidx.0)] +[visit_exp (l!`%`_labelidx.0)] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] -[visit_exp i#58078] -[visit_id i#58078] -[visit_exp `%`_u32{i#57923}(24)] -[visit_exp i#57923] -[visit_id i#57923] +[visit_exp `%`_u32(24)] [visit_exp (24)] [visit_exp 24] -[visit_exp `%`_laneidx{i#57973}(l!`%`_labelidx{i#57972}.0)] -[visit_exp i#57973] -[visit_id i#57973] -[visit_exp (l!`%`_labelidx{i#57972}.0)] -[visit_exp l!`%`_labelidx{i#57972}.0] -[visit_exp l!`%`_labelidx{i#57972}] +[visit_exp `%`_laneidx(l!`%`_labelidx.0)] +[visit_exp (l!`%`_labelidx.0)] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] not free -[visit_exp i#57972] -[visit_id i#57972] -[check_dims] dim#8035 i#58103 i#58152 i#58153 i#58161 i#58168 i#58258 i#58259 l laneidx#55 lanetype#8035 shape#932 sx?#49 -dims \ = dim#8035, i#58103, i#58152, i#58153, i#58161, i#58168, i#58258, i#58259, l, laneidx#55, lanetype#8035, shape#932, sx?#49 -[visit_exp `VEXTRACT_LANE`_instr{shape#932, `sx?#49`, laneidx#55}(`%X%`_shape{lanetype#8035, dim#8035, i#58161}(`I16`_lanetype, `%`_dim{i#58168}(8)), ?(`U`_sx), `%`_laneidx{i#58259}(l!`%`_labelidx{i#58258}.0))] -[visit_exp shape#932] -[visit_id shape#932] -[visit_exp `sx?#49`] -[visit_id sx?#49] -[visit_exp laneidx#55] -[visit_id laneidx#55] -[visit_exp (`%X%`_shape{lanetype#8035, dim#8035, i#58161}(`I16`_lanetype, `%`_dim{i#58168}(8)), ?(`U`_sx), `%`_laneidx{i#58259}(l!`%`_labelidx{i#58258}.0))] -[visit_exp `%X%`_shape{lanetype#8035, dim#8035, i#58161}(`I16`_lanetype, `%`_dim{i#58168}(8))] -[visit_exp lanetype#8035] -[visit_id lanetype#8035] -[visit_exp dim#8035] -[visit_id dim#8035] -[visit_exp i#58161] -[visit_id i#58161] -[visit_exp (`I16`_lanetype, `%`_dim{i#58168}(8))] +[check_dims] l +dims \ = l +[visit_exp `VEXTRACT_LANE`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), ?(`U`_sx), `%`_laneidx(l!`%`_labelidx.0))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), ?(`U`_sx), `%`_laneidx(l!`%`_labelidx.0))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#58168}(8)] -[visit_exp i#58168] -[visit_id i#58168] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] [visit_exp ?(`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_laneidx{i#58259}(l!`%`_labelidx{i#58258}.0)] -[visit_exp i#58259] -[visit_id i#58259] -[visit_exp (l!`%`_labelidx{i#58258}.0)] -[visit_exp l!`%`_labelidx{i#58258}.0] -[visit_exp l!`%`_labelidx{i#58258}] +[visit_exp `%`_laneidx(l!`%`_labelidx.0)] +[visit_exp (l!`%`_labelidx.0)] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] -[visit_exp i#58258] -[visit_id i#58258] -[visit_exp `%`_u32{i#58103}(25)] -[visit_exp i#58103] -[visit_id i#58103] +[visit_exp `%`_u32(25)] [visit_exp (25)] [visit_exp 25] -[visit_exp `%`_laneidx{i#58153}(l!`%`_labelidx{i#58152}.0)] -[visit_exp i#58153] -[visit_id i#58153] -[visit_exp (l!`%`_labelidx{i#58152}.0)] -[visit_exp l!`%`_labelidx{i#58152}.0] -[visit_exp l!`%`_labelidx{i#58152}] +[visit_exp `%`_laneidx(l!`%`_labelidx.0)] +[visit_exp (l!`%`_labelidx.0)] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] not free -[visit_exp i#58152] -[visit_id i#58152] -[check_dims] dim#8047 i#58283 i#58332 i#58333 i#58341 i#58348 i#58394 i#58395 l laneidx#57 lanetype#8047 shape#934 -dims \ = dim#8047, i#58283, i#58332, i#58333, i#58341, i#58348, i#58394, i#58395, l, laneidx#57, lanetype#8047, shape#934 -[visit_exp `VREPLACE_LANE`_instr{shape#934, laneidx#57}(`%X%`_shape{lanetype#8047, dim#8047, i#58341}(`I16`_lanetype, `%`_dim{i#58348}(8)), `%`_laneidx{i#58395}(l!`%`_labelidx{i#58394}.0))] -[visit_exp shape#934] -[visit_id shape#934] -[visit_exp laneidx#57] -[visit_id laneidx#57] -[visit_exp (`%X%`_shape{lanetype#8047, dim#8047, i#58341}(`I16`_lanetype, `%`_dim{i#58348}(8)), `%`_laneidx{i#58395}(l!`%`_labelidx{i#58394}.0))] -[visit_exp `%X%`_shape{lanetype#8047, dim#8047, i#58341}(`I16`_lanetype, `%`_dim{i#58348}(8))] -[visit_exp lanetype#8047] -[visit_id lanetype#8047] -[visit_exp dim#8047] -[visit_id dim#8047] -[visit_exp i#58341] -[visit_id i#58341] -[visit_exp (`I16`_lanetype, `%`_dim{i#58348}(8))] +[check_dims] l +dims \ = l +[visit_exp `VREPLACE_LANE`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `%`_laneidx(l!`%`_labelidx.0))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `%`_laneidx(l!`%`_labelidx.0))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#58348}(8)] -[visit_exp i#58348] -[visit_id i#58348] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `%`_laneidx{i#58395}(l!`%`_labelidx{i#58394}.0)] -[visit_exp i#58395] -[visit_id i#58395] -[visit_exp (l!`%`_labelidx{i#58394}.0)] -[visit_exp l!`%`_labelidx{i#58394}.0] -[visit_exp l!`%`_labelidx{i#58394}] +[visit_exp `%`_laneidx(l!`%`_labelidx.0)] +[visit_exp (l!`%`_labelidx.0)] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] -[visit_exp i#58394] -[visit_id i#58394] -[visit_exp `%`_u32{i#58283}(26)] -[visit_exp i#58283] -[visit_id i#58283] +[visit_exp `%`_u32(26)] [visit_exp (26)] [visit_exp 26] -[visit_exp `%`_laneidx{i#58333}(l!`%`_labelidx{i#58332}.0)] -[visit_exp i#58333] -[visit_id i#58333] -[visit_exp (l!`%`_labelidx{i#58332}.0)] -[visit_exp l!`%`_labelidx{i#58332}.0] -[visit_exp l!`%`_labelidx{i#58332}] +[visit_exp `%`_laneidx(l!`%`_labelidx.0)] +[visit_exp (l!`%`_labelidx.0)] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] not free -[visit_exp i#58332] -[visit_id i#58332] -[check_dims] dim#8059 i#58419 i#58468 i#58469 i#58477 i#58484 i#58530 i#58531 l laneidx#59 lanetype#8059 shape#936 sx?#51 -dims \ = dim#8059, i#58419, i#58468, i#58469, i#58477, i#58484, i#58530, i#58531, l, laneidx#59, lanetype#8059, shape#936, sx?#51 -[visit_exp `VEXTRACT_LANE`_instr{shape#936, `sx?#51`, laneidx#59}(`%X%`_shape{lanetype#8059, dim#8059, i#58477}(`I32`_lanetype, `%`_dim{i#58484}(4)), ?(), `%`_laneidx{i#58531}(l!`%`_labelidx{i#58530}.0))] -[visit_exp shape#936] -[visit_id shape#936] -[visit_exp `sx?#51`] -[visit_id sx?#51] -[visit_exp laneidx#59] -[visit_id laneidx#59] -[visit_exp (`%X%`_shape{lanetype#8059, dim#8059, i#58477}(`I32`_lanetype, `%`_dim{i#58484}(4)), ?(), `%`_laneidx{i#58531}(l!`%`_labelidx{i#58530}.0))] -[visit_exp `%X%`_shape{lanetype#8059, dim#8059, i#58477}(`I32`_lanetype, `%`_dim{i#58484}(4))] -[visit_exp lanetype#8059] -[visit_id lanetype#8059] -[visit_exp dim#8059] -[visit_id dim#8059] -[visit_exp i#58477] -[visit_id i#58477] -[visit_exp (`I32`_lanetype, `%`_dim{i#58484}(4))] +[check_dims] l +dims \ = l +[visit_exp `VEXTRACT_LANE`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_labelidx.0))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_labelidx.0))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#58484}(4)] -[visit_exp i#58484] -[visit_id i#58484] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp ?()] -[visit_exp `%`_laneidx{i#58531}(l!`%`_labelidx{i#58530}.0)] -[visit_exp i#58531] -[visit_id i#58531] -[visit_exp (l!`%`_labelidx{i#58530}.0)] -[visit_exp l!`%`_labelidx{i#58530}.0] -[visit_exp l!`%`_labelidx{i#58530}] +[visit_exp `%`_laneidx(l!`%`_labelidx.0)] +[visit_exp (l!`%`_labelidx.0)] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] -[visit_exp i#58530] -[visit_id i#58530] -[visit_exp `%`_u32{i#58419}(27)] -[visit_exp i#58419] -[visit_id i#58419] +[visit_exp `%`_u32(27)] [visit_exp (27)] [visit_exp 27] -[visit_exp `%`_laneidx{i#58469}(l!`%`_labelidx{i#58468}.0)] -[visit_exp i#58469] -[visit_id i#58469] -[visit_exp (l!`%`_labelidx{i#58468}.0)] -[visit_exp l!`%`_labelidx{i#58468}.0] -[visit_exp l!`%`_labelidx{i#58468}] +[visit_exp `%`_laneidx(l!`%`_labelidx.0)] +[visit_exp (l!`%`_labelidx.0)] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] not free -[visit_exp i#58468] -[visit_id i#58468] -[check_dims] dim#8071 i#58555 i#58604 i#58605 i#58613 i#58620 i#58666 i#58667 l laneidx#61 lanetype#8071 shape#938 -dims \ = dim#8071, i#58555, i#58604, i#58605, i#58613, i#58620, i#58666, i#58667, l, laneidx#61, lanetype#8071, shape#938 -[visit_exp `VREPLACE_LANE`_instr{shape#938, laneidx#61}(`%X%`_shape{lanetype#8071, dim#8071, i#58613}(`I32`_lanetype, `%`_dim{i#58620}(4)), `%`_laneidx{i#58667}(l!`%`_labelidx{i#58666}.0))] -[visit_exp shape#938] -[visit_id shape#938] -[visit_exp laneidx#61] -[visit_id laneidx#61] -[visit_exp (`%X%`_shape{lanetype#8071, dim#8071, i#58613}(`I32`_lanetype, `%`_dim{i#58620}(4)), `%`_laneidx{i#58667}(l!`%`_labelidx{i#58666}.0))] -[visit_exp `%X%`_shape{lanetype#8071, dim#8071, i#58613}(`I32`_lanetype, `%`_dim{i#58620}(4))] -[visit_exp lanetype#8071] -[visit_id lanetype#8071] -[visit_exp dim#8071] -[visit_id dim#8071] -[visit_exp i#58613] -[visit_id i#58613] -[visit_exp (`I32`_lanetype, `%`_dim{i#58620}(4))] +[check_dims] l +dims \ = l +[visit_exp `VREPLACE_LANE`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_labelidx.0))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_labelidx.0))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#58620}(4)] -[visit_exp i#58620] -[visit_id i#58620] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%`_laneidx{i#58667}(l!`%`_labelidx{i#58666}.0)] -[visit_exp i#58667] -[visit_id i#58667] -[visit_exp (l!`%`_labelidx{i#58666}.0)] -[visit_exp l!`%`_labelidx{i#58666}.0] -[visit_exp l!`%`_labelidx{i#58666}] +[visit_exp `%`_laneidx(l!`%`_labelidx.0)] +[visit_exp (l!`%`_labelidx.0)] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] -[visit_exp i#58666] -[visit_id i#58666] -[visit_exp `%`_u32{i#58555}(28)] -[visit_exp i#58555] -[visit_id i#58555] +[visit_exp `%`_u32(28)] [visit_exp (28)] [visit_exp 28] -[visit_exp `%`_laneidx{i#58605}(l!`%`_labelidx{i#58604}.0)] -[visit_exp i#58605] -[visit_id i#58605] -[visit_exp (l!`%`_labelidx{i#58604}.0)] -[visit_exp l!`%`_labelidx{i#58604}.0] -[visit_exp l!`%`_labelidx{i#58604}] +[visit_exp `%`_laneidx(l!`%`_labelidx.0)] +[visit_exp (l!`%`_labelidx.0)] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] not free -[visit_exp i#58604] -[visit_id i#58604] -[check_dims] dim#8083 i#58691 i#58740 i#58741 i#58749 i#58756 i#58802 i#58803 l laneidx#63 lanetype#8083 shape#940 sx?#53 -dims \ = dim#8083, i#58691, i#58740, i#58741, i#58749, i#58756, i#58802, i#58803, l, laneidx#63, lanetype#8083, shape#940, sx?#53 -[visit_exp `VEXTRACT_LANE`_instr{shape#940, `sx?#53`, laneidx#63}(`%X%`_shape{lanetype#8083, dim#8083, i#58749}(`I64`_lanetype, `%`_dim{i#58756}(2)), ?(), `%`_laneidx{i#58803}(l!`%`_labelidx{i#58802}.0))] -[visit_exp shape#940] -[visit_id shape#940] -[visit_exp `sx?#53`] -[visit_id sx?#53] -[visit_exp laneidx#63] -[visit_id laneidx#63] -[visit_exp (`%X%`_shape{lanetype#8083, dim#8083, i#58749}(`I64`_lanetype, `%`_dim{i#58756}(2)), ?(), `%`_laneidx{i#58803}(l!`%`_labelidx{i#58802}.0))] -[visit_exp `%X%`_shape{lanetype#8083, dim#8083, i#58749}(`I64`_lanetype, `%`_dim{i#58756}(2))] -[visit_exp lanetype#8083] -[visit_id lanetype#8083] -[visit_exp dim#8083] -[visit_id dim#8083] -[visit_exp i#58749] -[visit_id i#58749] -[visit_exp (`I64`_lanetype, `%`_dim{i#58756}(2))] +[check_dims] l +dims \ = l +[visit_exp `VEXTRACT_LANE`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_labelidx.0))] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_labelidx.0))] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#58756}(2)] -[visit_exp i#58756] -[visit_id i#58756] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp ?()] -[visit_exp `%`_laneidx{i#58803}(l!`%`_labelidx{i#58802}.0)] -[visit_exp i#58803] -[visit_id i#58803] -[visit_exp (l!`%`_labelidx{i#58802}.0)] -[visit_exp l!`%`_labelidx{i#58802}.0] -[visit_exp l!`%`_labelidx{i#58802}] +[visit_exp `%`_laneidx(l!`%`_labelidx.0)] +[visit_exp (l!`%`_labelidx.0)] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] -[visit_exp i#58802] -[visit_id i#58802] -[visit_exp `%`_u32{i#58691}(29)] -[visit_exp i#58691] -[visit_id i#58691] +[visit_exp `%`_u32(29)] [visit_exp (29)] [visit_exp 29] -[visit_exp `%`_laneidx{i#58741}(l!`%`_labelidx{i#58740}.0)] -[visit_exp i#58741] -[visit_id i#58741] -[visit_exp (l!`%`_labelidx{i#58740}.0)] -[visit_exp l!`%`_labelidx{i#58740}.0] -[visit_exp l!`%`_labelidx{i#58740}] +[visit_exp `%`_laneidx(l!`%`_labelidx.0)] +[visit_exp (l!`%`_labelidx.0)] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] not free -[visit_exp i#58740] -[visit_id i#58740] -[check_dims] dim#8095 i#58827 i#58876 i#58877 i#58885 i#58892 i#58938 i#58939 l laneidx#65 lanetype#8095 shape#942 -dims \ = dim#8095, i#58827, i#58876, i#58877, i#58885, i#58892, i#58938, i#58939, l, laneidx#65, lanetype#8095, shape#942 -[visit_exp `VREPLACE_LANE`_instr{shape#942, laneidx#65}(`%X%`_shape{lanetype#8095, dim#8095, i#58885}(`I64`_lanetype, `%`_dim{i#58892}(2)), `%`_laneidx{i#58939}(l!`%`_labelidx{i#58938}.0))] -[visit_exp shape#942] -[visit_id shape#942] -[visit_exp laneidx#65] -[visit_id laneidx#65] -[visit_exp (`%X%`_shape{lanetype#8095, dim#8095, i#58885}(`I64`_lanetype, `%`_dim{i#58892}(2)), `%`_laneidx{i#58939}(l!`%`_labelidx{i#58938}.0))] -[visit_exp `%X%`_shape{lanetype#8095, dim#8095, i#58885}(`I64`_lanetype, `%`_dim{i#58892}(2))] -[visit_exp lanetype#8095] -[visit_id lanetype#8095] -[visit_exp dim#8095] -[visit_id dim#8095] -[visit_exp i#58885] -[visit_id i#58885] -[visit_exp (`I64`_lanetype, `%`_dim{i#58892}(2))] +[check_dims] l +dims \ = l +[visit_exp `VREPLACE_LANE`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_labelidx.0))] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_labelidx.0))] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#58892}(2)] -[visit_exp i#58892] -[visit_id i#58892] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `%`_laneidx{i#58939}(l!`%`_labelidx{i#58938}.0)] -[visit_exp i#58939] -[visit_id i#58939] -[visit_exp (l!`%`_labelidx{i#58938}.0)] -[visit_exp l!`%`_labelidx{i#58938}.0] -[visit_exp l!`%`_labelidx{i#58938}] +[visit_exp `%`_laneidx(l!`%`_labelidx.0)] +[visit_exp (l!`%`_labelidx.0)] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] -[visit_exp i#58938] -[visit_id i#58938] -[visit_exp `%`_u32{i#58827}(30)] -[visit_exp i#58827] -[visit_id i#58827] +[visit_exp `%`_u32(30)] [visit_exp (30)] [visit_exp 30] -[visit_exp `%`_laneidx{i#58877}(l!`%`_labelidx{i#58876}.0)] -[visit_exp i#58877] -[visit_id i#58877] -[visit_exp (l!`%`_labelidx{i#58876}.0)] -[visit_exp l!`%`_labelidx{i#58876}.0] -[visit_exp l!`%`_labelidx{i#58876}] +[visit_exp `%`_laneidx(l!`%`_labelidx.0)] +[visit_exp (l!`%`_labelidx.0)] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] not free -[visit_exp i#58876] -[visit_id i#58876] -[check_dims] dim#8107 i#58963 i#59012 i#59013 i#59021 i#59028 i#59074 i#59075 l laneidx#67 lanetype#8107 shape#944 sx?#55 -dims \ = dim#8107, i#58963, i#59012, i#59013, i#59021, i#59028, i#59074, i#59075, l, laneidx#67, lanetype#8107, shape#944, sx?#55 -[visit_exp `VEXTRACT_LANE`_instr{shape#944, `sx?#55`, laneidx#67}(`%X%`_shape{lanetype#8107, dim#8107, i#59021}(`F32`_lanetype, `%`_dim{i#59028}(4)), ?(), `%`_laneidx{i#59075}(l!`%`_labelidx{i#59074}.0))] -[visit_exp shape#944] -[visit_id shape#944] -[visit_exp `sx?#55`] -[visit_id sx?#55] -[visit_exp laneidx#67] -[visit_id laneidx#67] -[visit_exp (`%X%`_shape{lanetype#8107, dim#8107, i#59021}(`F32`_lanetype, `%`_dim{i#59028}(4)), ?(), `%`_laneidx{i#59075}(l!`%`_labelidx{i#59074}.0))] -[visit_exp `%X%`_shape{lanetype#8107, dim#8107, i#59021}(`F32`_lanetype, `%`_dim{i#59028}(4))] -[visit_exp lanetype#8107] -[visit_id lanetype#8107] -[visit_exp dim#8107] -[visit_id dim#8107] -[visit_exp i#59021] -[visit_id i#59021] -[visit_exp (`F32`_lanetype, `%`_dim{i#59028}(4))] +[check_dims] l +dims \ = l +[visit_exp `VEXTRACT_LANE`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_labelidx.0))] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_labelidx.0))] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#59028}(4)] -[visit_exp i#59028] -[visit_id i#59028] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp ?()] -[visit_exp `%`_laneidx{i#59075}(l!`%`_labelidx{i#59074}.0)] -[visit_exp i#59075] -[visit_id i#59075] -[visit_exp (l!`%`_labelidx{i#59074}.0)] -[visit_exp l!`%`_labelidx{i#59074}.0] -[visit_exp l!`%`_labelidx{i#59074}] +[visit_exp `%`_laneidx(l!`%`_labelidx.0)] +[visit_exp (l!`%`_labelidx.0)] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] -[visit_exp i#59074] -[visit_id i#59074] -[visit_exp `%`_u32{i#58963}(31)] -[visit_exp i#58963] -[visit_id i#58963] +[visit_exp `%`_u32(31)] [visit_exp (31)] [visit_exp 31] -[visit_exp `%`_laneidx{i#59013}(l!`%`_labelidx{i#59012}.0)] -[visit_exp i#59013] -[visit_id i#59013] -[visit_exp (l!`%`_labelidx{i#59012}.0)] -[visit_exp l!`%`_labelidx{i#59012}.0] -[visit_exp l!`%`_labelidx{i#59012}] +[visit_exp `%`_laneidx(l!`%`_labelidx.0)] +[visit_exp (l!`%`_labelidx.0)] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] not free -[visit_exp i#59012] -[visit_id i#59012] -[check_dims] dim#8119 i#59099 i#59148 i#59149 i#59157 i#59164 i#59210 i#59211 l laneidx#69 lanetype#8119 shape#946 -dims \ = dim#8119, i#59099, i#59148, i#59149, i#59157, i#59164, i#59210, i#59211, l, laneidx#69, lanetype#8119, shape#946 -[visit_exp `VREPLACE_LANE`_instr{shape#946, laneidx#69}(`%X%`_shape{lanetype#8119, dim#8119, i#59157}(`F32`_lanetype, `%`_dim{i#59164}(4)), `%`_laneidx{i#59211}(l!`%`_labelidx{i#59210}.0))] -[visit_exp shape#946] -[visit_id shape#946] -[visit_exp laneidx#69] -[visit_id laneidx#69] -[visit_exp (`%X%`_shape{lanetype#8119, dim#8119, i#59157}(`F32`_lanetype, `%`_dim{i#59164}(4)), `%`_laneidx{i#59211}(l!`%`_labelidx{i#59210}.0))] -[visit_exp `%X%`_shape{lanetype#8119, dim#8119, i#59157}(`F32`_lanetype, `%`_dim{i#59164}(4))] -[visit_exp lanetype#8119] -[visit_id lanetype#8119] -[visit_exp dim#8119] -[visit_id dim#8119] -[visit_exp i#59157] -[visit_id i#59157] -[visit_exp (`F32`_lanetype, `%`_dim{i#59164}(4))] +[check_dims] l +dims \ = l +[visit_exp `VREPLACE_LANE`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_labelidx.0))] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_labelidx.0))] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#59164}(4)] -[visit_exp i#59164] -[visit_id i#59164] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%`_laneidx{i#59211}(l!`%`_labelidx{i#59210}.0)] -[visit_exp i#59211] -[visit_id i#59211] -[visit_exp (l!`%`_labelidx{i#59210}.0)] -[visit_exp l!`%`_labelidx{i#59210}.0] -[visit_exp l!`%`_labelidx{i#59210}] +[visit_exp `%`_laneidx(l!`%`_labelidx.0)] +[visit_exp (l!`%`_labelidx.0)] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] -[visit_exp i#59210] -[visit_id i#59210] -[visit_exp `%`_u32{i#59099}(32)] -[visit_exp i#59099] -[visit_id i#59099] +[visit_exp `%`_u32(32)] [visit_exp (32)] [visit_exp 32] -[visit_exp `%`_laneidx{i#59149}(l!`%`_labelidx{i#59148}.0)] -[visit_exp i#59149] -[visit_id i#59149] -[visit_exp (l!`%`_labelidx{i#59148}.0)] -[visit_exp l!`%`_labelidx{i#59148}.0] -[visit_exp l!`%`_labelidx{i#59148}] +[visit_exp `%`_laneidx(l!`%`_labelidx.0)] +[visit_exp (l!`%`_labelidx.0)] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] not free -[visit_exp i#59148] -[visit_id i#59148] -[check_dims] dim#8131 i#59235 i#59284 i#59285 i#59293 i#59300 i#59346 i#59347 l laneidx#71 lanetype#8131 shape#948 sx?#57 -dims \ = dim#8131, i#59235, i#59284, i#59285, i#59293, i#59300, i#59346, i#59347, l, laneidx#71, lanetype#8131, shape#948, sx?#57 -[visit_exp `VEXTRACT_LANE`_instr{shape#948, `sx?#57`, laneidx#71}(`%X%`_shape{lanetype#8131, dim#8131, i#59293}(`F64`_lanetype, `%`_dim{i#59300}(2)), ?(), `%`_laneidx{i#59347}(l!`%`_labelidx{i#59346}.0))] -[visit_exp shape#948] -[visit_id shape#948] -[visit_exp `sx?#57`] -[visit_id sx?#57] -[visit_exp laneidx#71] -[visit_id laneidx#71] -[visit_exp (`%X%`_shape{lanetype#8131, dim#8131, i#59293}(`F64`_lanetype, `%`_dim{i#59300}(2)), ?(), `%`_laneidx{i#59347}(l!`%`_labelidx{i#59346}.0))] -[visit_exp `%X%`_shape{lanetype#8131, dim#8131, i#59293}(`F64`_lanetype, `%`_dim{i#59300}(2))] -[visit_exp lanetype#8131] -[visit_id lanetype#8131] -[visit_exp dim#8131] -[visit_id dim#8131] -[visit_exp i#59293] -[visit_id i#59293] -[visit_exp (`F64`_lanetype, `%`_dim{i#59300}(2))] +[check_dims] l +dims \ = l +[visit_exp `VEXTRACT_LANE`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_labelidx.0))] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_labelidx.0))] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#59300}(2)] -[visit_exp i#59300] -[visit_id i#59300] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp ?()] -[visit_exp `%`_laneidx{i#59347}(l!`%`_labelidx{i#59346}.0)] -[visit_exp i#59347] -[visit_id i#59347] -[visit_exp (l!`%`_labelidx{i#59346}.0)] -[visit_exp l!`%`_labelidx{i#59346}.0] -[visit_exp l!`%`_labelidx{i#59346}] +[visit_exp `%`_laneidx(l!`%`_labelidx.0)] +[visit_exp (l!`%`_labelidx.0)] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] -[visit_exp i#59346] -[visit_id i#59346] -[visit_exp `%`_u32{i#59235}(33)] -[visit_exp i#59235] -[visit_id i#59235] +[visit_exp `%`_u32(33)] [visit_exp (33)] [visit_exp 33] -[visit_exp `%`_laneidx{i#59285}(l!`%`_labelidx{i#59284}.0)] -[visit_exp i#59285] -[visit_id i#59285] -[visit_exp (l!`%`_labelidx{i#59284}.0)] -[visit_exp l!`%`_labelidx{i#59284}.0] -[visit_exp l!`%`_labelidx{i#59284}] +[visit_exp `%`_laneidx(l!`%`_labelidx.0)] +[visit_exp (l!`%`_labelidx.0)] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] not free -[visit_exp i#59284] -[visit_id i#59284] -[check_dims] dim#8143 i#59371 i#59420 i#59421 i#59429 i#59436 i#59482 i#59483 l laneidx#73 lanetype#8143 shape#950 -dims \ = dim#8143, i#59371, i#59420, i#59421, i#59429, i#59436, i#59482, i#59483, l, laneidx#73, lanetype#8143, shape#950 -[visit_exp `VREPLACE_LANE`_instr{shape#950, laneidx#73}(`%X%`_shape{lanetype#8143, dim#8143, i#59429}(`F64`_lanetype, `%`_dim{i#59436}(2)), `%`_laneidx{i#59483}(l!`%`_labelidx{i#59482}.0))] -[visit_exp shape#950] -[visit_id shape#950] -[visit_exp laneidx#73] -[visit_id laneidx#73] -[visit_exp (`%X%`_shape{lanetype#8143, dim#8143, i#59429}(`F64`_lanetype, `%`_dim{i#59436}(2)), `%`_laneidx{i#59483}(l!`%`_labelidx{i#59482}.0))] -[visit_exp `%X%`_shape{lanetype#8143, dim#8143, i#59429}(`F64`_lanetype, `%`_dim{i#59436}(2))] -[visit_exp lanetype#8143] -[visit_id lanetype#8143] -[visit_exp dim#8143] -[visit_id dim#8143] -[visit_exp i#59429] -[visit_id i#59429] -[visit_exp (`F64`_lanetype, `%`_dim{i#59436}(2))] +[check_dims] l +dims \ = l +[visit_exp `VREPLACE_LANE`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_labelidx.0))] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_labelidx.0))] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#59436}(2)] -[visit_exp i#59436] -[visit_id i#59436] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `%`_laneidx{i#59483}(l!`%`_labelidx{i#59482}.0)] -[visit_exp i#59483] -[visit_id i#59483] -[visit_exp (l!`%`_labelidx{i#59482}.0)] -[visit_exp l!`%`_labelidx{i#59482}.0] -[visit_exp l!`%`_labelidx{i#59482}] +[visit_exp `%`_laneidx(l!`%`_labelidx.0)] +[visit_exp (l!`%`_labelidx.0)] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] -[visit_exp i#59482] -[visit_id i#59482] -[visit_exp `%`_u32{i#59371}(34)] -[visit_exp i#59371] -[visit_id i#59371] +[visit_exp `%`_u32(34)] [visit_exp (34)] [visit_exp 34] -[visit_exp `%`_laneidx{i#59421}(l!`%`_labelidx{i#59420}.0)] -[visit_exp i#59421] -[visit_id i#59421] -[visit_exp (l!`%`_labelidx{i#59420}.0)] -[visit_exp l!`%`_labelidx{i#59420}.0] -[visit_exp l!`%`_labelidx{i#59420}] +[visit_exp `%`_laneidx(l!`%`_labelidx.0)] +[visit_exp (l!`%`_labelidx.0)] +[visit_exp l!`%`_labelidx.0] +[visit_exp l!`%`_labelidx] [visit_exp l] [visit_id l] not free -[visit_exp i#59420] -[visit_id i#59420] ps' = [check_dims] -[check_dims] dim#8155 i#59507 i#59514 i#59521 lanetype#8155 shape#952 -dims \ = dim#8155, i#59507, i#59514, i#59521, lanetype#8155, shape#952 -[visit_exp `VRELOP`_instr{shape#952}(`%X%`_shape{lanetype#8155, dim#8155, i#59514}(`I8`_lanetype, `%`_dim{i#59521}(16)), `EQ`_vrelop_)] -[visit_exp shape#952] -[visit_id shape#952] -[visit_exp (`%X%`_shape{lanetype#8155, dim#8155, i#59514}(`I8`_lanetype, `%`_dim{i#59521}(16)), `EQ`_vrelop_)] -[visit_exp `%X%`_shape{lanetype#8155, dim#8155, i#59514}(`I8`_lanetype, `%`_dim{i#59521}(16))] -[visit_exp lanetype#8155] -[visit_id lanetype#8155] -[visit_exp dim#8155] -[visit_id dim#8155] -[visit_exp i#59514] -[visit_id i#59514] -[visit_exp (`I8`_lanetype, `%`_dim{i#59521}(16))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `EQ`_vrelop_)] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `EQ`_vrelop_)] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#59521}(16)] -[visit_exp i#59521] -[visit_id i#59521] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] [visit_exp `EQ`_vrelop_] [visit_exp ()] -[visit_exp `%`_u32{i#59507}(35)] -[visit_exp i#59507] -[visit_id i#59507] +[visit_exp `%`_u32(35)] [visit_exp (35)] [visit_exp 35] -[check_dims] dim#8182 i#59589 i#59596 i#59603 lanetype#8182 shape#954 -dims \ = dim#8182, i#59589, i#59596, i#59603, lanetype#8182, shape#954 -[visit_exp `VRELOP`_instr{shape#954}(`%X%`_shape{lanetype#8182, dim#8182, i#59596}(`I8`_lanetype, `%`_dim{i#59603}(16)), `NE`_vrelop_)] -[visit_exp shape#954] -[visit_id shape#954] -[visit_exp (`%X%`_shape{lanetype#8182, dim#8182, i#59596}(`I8`_lanetype, `%`_dim{i#59603}(16)), `NE`_vrelop_)] -[visit_exp `%X%`_shape{lanetype#8182, dim#8182, i#59596}(`I8`_lanetype, `%`_dim{i#59603}(16))] -[visit_exp lanetype#8182] -[visit_id lanetype#8182] -[visit_exp dim#8182] -[visit_id dim#8182] -[visit_exp i#59596] -[visit_id i#59596] -[visit_exp (`I8`_lanetype, `%`_dim{i#59603}(16))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `NE`_vrelop_)] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `NE`_vrelop_)] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#59603}(16)] -[visit_exp i#59603] -[visit_id i#59603] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] [visit_exp `NE`_vrelop_] [visit_exp ()] -[visit_exp `%`_u32{i#59589}(36)] -[visit_exp i#59589] -[visit_id i#59589] +[visit_exp `%`_u32(36)] [visit_exp (36)] [visit_exp 36] -[check_dims] dim#8209 i#59671 i#59678 i#59685 lanetype#8209 shape#956 sx#6659 -dims \ = dim#8209, i#59671, i#59678, i#59685, lanetype#8209, shape#956, sx#6659 -[visit_exp `VRELOP`_instr{shape#956}(`%X%`_shape{lanetype#8209, dim#8209, i#59678}(`I8`_lanetype, `%`_dim{i#59685}(16)), `LT`_vrelop_{sx#6659}(`S`_sx))] -[visit_exp shape#956] -[visit_id shape#956] -[visit_exp (`%X%`_shape{lanetype#8209, dim#8209, i#59678}(`I8`_lanetype, `%`_dim{i#59685}(16)), `LT`_vrelop_{sx#6659}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#8209, dim#8209, i#59678}(`I8`_lanetype, `%`_dim{i#59685}(16))] -[visit_exp lanetype#8209] -[visit_id lanetype#8209] -[visit_exp dim#8209] -[visit_id dim#8209] -[visit_exp i#59678] -[visit_id i#59678] -[visit_exp (`I8`_lanetype, `%`_dim{i#59685}(16))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `LT`_vrelop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `LT`_vrelop_(`S`_sx))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#59685}(16)] -[visit_exp i#59685] -[visit_id i#59685] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `LT`_vrelop_{sx#6659}(`S`_sx)] -[visit_exp sx#6659] -[visit_id sx#6659] +[visit_exp `LT`_vrelop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#59671}(37)] -[visit_exp i#59671] -[visit_id i#59671] +[visit_exp `%`_u32(37)] [visit_exp (37)] [visit_exp 37] -[check_dims] dim#8251 i#59798 i#59805 i#59812 lanetype#8251 shape#958 sx#6783 -dims \ = dim#8251, i#59798, i#59805, i#59812, lanetype#8251, shape#958, sx#6783 -[visit_exp `VRELOP`_instr{shape#958}(`%X%`_shape{lanetype#8251, dim#8251, i#59805}(`I8`_lanetype, `%`_dim{i#59812}(16)), `LT`_vrelop_{sx#6783}(`U`_sx))] -[visit_exp shape#958] -[visit_id shape#958] -[visit_exp (`%X%`_shape{lanetype#8251, dim#8251, i#59805}(`I8`_lanetype, `%`_dim{i#59812}(16)), `LT`_vrelop_{sx#6783}(`U`_sx))] -[visit_exp `%X%`_shape{lanetype#8251, dim#8251, i#59805}(`I8`_lanetype, `%`_dim{i#59812}(16))] -[visit_exp lanetype#8251] -[visit_id lanetype#8251] -[visit_exp dim#8251] -[visit_id dim#8251] -[visit_exp i#59805] -[visit_id i#59805] -[visit_exp (`I8`_lanetype, `%`_dim{i#59812}(16))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `LT`_vrelop_(`U`_sx))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `LT`_vrelop_(`U`_sx))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#59812}(16)] -[visit_exp i#59812] -[visit_id i#59812] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `LT`_vrelop_{sx#6783}(`U`_sx)] -[visit_exp sx#6783] -[visit_id sx#6783] +[visit_exp `LT`_vrelop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#59798}(38)] -[visit_exp i#59798] -[visit_id i#59798] +[visit_exp `%`_u32(38)] [visit_exp (38)] [visit_exp 38] -[check_dims] dim#8293 i#59925 i#59932 i#59939 lanetype#8293 shape#960 sx#6907 -dims \ = dim#8293, i#59925, i#59932, i#59939, lanetype#8293, shape#960, sx#6907 -[visit_exp `VRELOP`_instr{shape#960}(`%X%`_shape{lanetype#8293, dim#8293, i#59932}(`I8`_lanetype, `%`_dim{i#59939}(16)), `GT`_vrelop_{sx#6907}(`S`_sx))] -[visit_exp shape#960] -[visit_id shape#960] -[visit_exp (`%X%`_shape{lanetype#8293, dim#8293, i#59932}(`I8`_lanetype, `%`_dim{i#59939}(16)), `GT`_vrelop_{sx#6907}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#8293, dim#8293, i#59932}(`I8`_lanetype, `%`_dim{i#59939}(16))] -[visit_exp lanetype#8293] -[visit_id lanetype#8293] -[visit_exp dim#8293] -[visit_id dim#8293] -[visit_exp i#59932] -[visit_id i#59932] -[visit_exp (`I8`_lanetype, `%`_dim{i#59939}(16))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `GT`_vrelop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `GT`_vrelop_(`S`_sx))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#59939}(16)] -[visit_exp i#59939] -[visit_id i#59939] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `GT`_vrelop_{sx#6907}(`S`_sx)] -[visit_exp sx#6907] -[visit_id sx#6907] +[visit_exp `GT`_vrelop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#59925}(39)] -[visit_exp i#59925] -[visit_id i#59925] +[visit_exp `%`_u32(39)] [visit_exp (39)] [visit_exp 39] -[check_dims] dim#8335 i#60052 i#60059 i#60066 lanetype#8335 shape#962 sx#7031 -dims \ = dim#8335, i#60052, i#60059, i#60066, lanetype#8335, shape#962, sx#7031 -[visit_exp `VRELOP`_instr{shape#962}(`%X%`_shape{lanetype#8335, dim#8335, i#60059}(`I8`_lanetype, `%`_dim{i#60066}(16)), `GT`_vrelop_{sx#7031}(`U`_sx))] -[visit_exp shape#962] -[visit_id shape#962] -[visit_exp (`%X%`_shape{lanetype#8335, dim#8335, i#60059}(`I8`_lanetype, `%`_dim{i#60066}(16)), `GT`_vrelop_{sx#7031}(`U`_sx))] -[visit_exp `%X%`_shape{lanetype#8335, dim#8335, i#60059}(`I8`_lanetype, `%`_dim{i#60066}(16))] -[visit_exp lanetype#8335] -[visit_id lanetype#8335] -[visit_exp dim#8335] -[visit_id dim#8335] -[visit_exp i#60059] -[visit_id i#60059] -[visit_exp (`I8`_lanetype, `%`_dim{i#60066}(16))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `GT`_vrelop_(`U`_sx))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `GT`_vrelop_(`U`_sx))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#60066}(16)] -[visit_exp i#60066] -[visit_id i#60066] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `GT`_vrelop_{sx#7031}(`U`_sx)] -[visit_exp sx#7031] -[visit_id sx#7031] +[visit_exp `GT`_vrelop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#60052}(40)] -[visit_exp i#60052] -[visit_id i#60052] +[visit_exp `%`_u32(40)] [visit_exp (40)] [visit_exp 40] -[check_dims] dim#8377 i#60179 i#60186 i#60193 lanetype#8377 shape#964 sx#7155 -dims \ = dim#8377, i#60179, i#60186, i#60193, lanetype#8377, shape#964, sx#7155 -[visit_exp `VRELOP`_instr{shape#964}(`%X%`_shape{lanetype#8377, dim#8377, i#60186}(`I8`_lanetype, `%`_dim{i#60193}(16)), `LE`_vrelop_{sx#7155}(`S`_sx))] -[visit_exp shape#964] -[visit_id shape#964] -[visit_exp (`%X%`_shape{lanetype#8377, dim#8377, i#60186}(`I8`_lanetype, `%`_dim{i#60193}(16)), `LE`_vrelop_{sx#7155}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#8377, dim#8377, i#60186}(`I8`_lanetype, `%`_dim{i#60193}(16))] -[visit_exp lanetype#8377] -[visit_id lanetype#8377] -[visit_exp dim#8377] -[visit_id dim#8377] -[visit_exp i#60186] -[visit_id i#60186] -[visit_exp (`I8`_lanetype, `%`_dim{i#60193}(16))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `LE`_vrelop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `LE`_vrelop_(`S`_sx))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#60193}(16)] -[visit_exp i#60193] -[visit_id i#60193] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `LE`_vrelop_{sx#7155}(`S`_sx)] -[visit_exp sx#7155] -[visit_id sx#7155] +[visit_exp `LE`_vrelop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#60179}(41)] -[visit_exp i#60179] -[visit_id i#60179] +[visit_exp `%`_u32(41)] [visit_exp (41)] [visit_exp 41] -[check_dims] dim#8419 i#60306 i#60313 i#60320 lanetype#8419 shape#966 sx#7279 -dims \ = dim#8419, i#60306, i#60313, i#60320, lanetype#8419, shape#966, sx#7279 -[visit_exp `VRELOP`_instr{shape#966}(`%X%`_shape{lanetype#8419, dim#8419, i#60313}(`I8`_lanetype, `%`_dim{i#60320}(16)), `LE`_vrelop_{sx#7279}(`U`_sx))] -[visit_exp shape#966] -[visit_id shape#966] -[visit_exp (`%X%`_shape{lanetype#8419, dim#8419, i#60313}(`I8`_lanetype, `%`_dim{i#60320}(16)), `LE`_vrelop_{sx#7279}(`U`_sx))] -[visit_exp `%X%`_shape{lanetype#8419, dim#8419, i#60313}(`I8`_lanetype, `%`_dim{i#60320}(16))] -[visit_exp lanetype#8419] -[visit_id lanetype#8419] -[visit_exp dim#8419] -[visit_id dim#8419] -[visit_exp i#60313] -[visit_id i#60313] -[visit_exp (`I8`_lanetype, `%`_dim{i#60320}(16))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `LE`_vrelop_(`U`_sx))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `LE`_vrelop_(`U`_sx))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#60320}(16)] -[visit_exp i#60320] -[visit_id i#60320] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `LE`_vrelop_{sx#7279}(`U`_sx)] -[visit_exp sx#7279] -[visit_id sx#7279] +[visit_exp `LE`_vrelop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#60306}(42)] -[visit_exp i#60306] -[visit_id i#60306] +[visit_exp `%`_u32(42)] [visit_exp (42)] [visit_exp 42] -[check_dims] dim#8461 i#60433 i#60440 i#60447 lanetype#8461 shape#968 sx#7403 -dims \ = dim#8461, i#60433, i#60440, i#60447, lanetype#8461, shape#968, sx#7403 -[visit_exp `VRELOP`_instr{shape#968}(`%X%`_shape{lanetype#8461, dim#8461, i#60440}(`I8`_lanetype, `%`_dim{i#60447}(16)), `GE`_vrelop_{sx#7403}(`S`_sx))] -[visit_exp shape#968] -[visit_id shape#968] -[visit_exp (`%X%`_shape{lanetype#8461, dim#8461, i#60440}(`I8`_lanetype, `%`_dim{i#60447}(16)), `GE`_vrelop_{sx#7403}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#8461, dim#8461, i#60440}(`I8`_lanetype, `%`_dim{i#60447}(16))] -[visit_exp lanetype#8461] -[visit_id lanetype#8461] -[visit_exp dim#8461] -[visit_id dim#8461] -[visit_exp i#60440] -[visit_id i#60440] -[visit_exp (`I8`_lanetype, `%`_dim{i#60447}(16))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `GE`_vrelop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `GE`_vrelop_(`S`_sx))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#60447}(16)] -[visit_exp i#60447] -[visit_id i#60447] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `GE`_vrelop_{sx#7403}(`S`_sx)] -[visit_exp sx#7403] -[visit_id sx#7403] +[visit_exp `GE`_vrelop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#60433}(43)] -[visit_exp i#60433] -[visit_id i#60433] +[visit_exp `%`_u32(43)] [visit_exp (43)] [visit_exp 43] -[check_dims] dim#8503 i#60560 i#60567 i#60574 lanetype#8503 shape#970 sx#7527 -dims \ = dim#8503, i#60560, i#60567, i#60574, lanetype#8503, shape#970, sx#7527 -[visit_exp `VRELOP`_instr{shape#970}(`%X%`_shape{lanetype#8503, dim#8503, i#60567}(`I8`_lanetype, `%`_dim{i#60574}(16)), `GE`_vrelop_{sx#7527}(`U`_sx))] -[visit_exp shape#970] -[visit_id shape#970] -[visit_exp (`%X%`_shape{lanetype#8503, dim#8503, i#60567}(`I8`_lanetype, `%`_dim{i#60574}(16)), `GE`_vrelop_{sx#7527}(`U`_sx))] -[visit_exp `%X%`_shape{lanetype#8503, dim#8503, i#60567}(`I8`_lanetype, `%`_dim{i#60574}(16))] -[visit_exp lanetype#8503] -[visit_id lanetype#8503] -[visit_exp dim#8503] -[visit_id dim#8503] -[visit_exp i#60567] -[visit_id i#60567] -[visit_exp (`I8`_lanetype, `%`_dim{i#60574}(16))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `GE`_vrelop_(`U`_sx))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `GE`_vrelop_(`U`_sx))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#60574}(16)] -[visit_exp i#60574] -[visit_id i#60574] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `GE`_vrelop_{sx#7527}(`U`_sx)] -[visit_exp sx#7527] -[visit_id sx#7527] +[visit_exp `GE`_vrelop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#60560}(44)] -[visit_exp i#60560] -[visit_id i#60560] +[visit_exp `%`_u32(44)] [visit_exp (44)] [visit_exp 44] ps' = [check_dims] -[check_dims] dim#8545 i#60687 i#60694 i#60701 lanetype#8545 shape#972 -dims \ = dim#8545, i#60687, i#60694, i#60701, lanetype#8545, shape#972 -[visit_exp `VRELOP`_instr{shape#972}(`%X%`_shape{lanetype#8545, dim#8545, i#60694}(`I16`_lanetype, `%`_dim{i#60701}(8)), `EQ`_vrelop_)] -[visit_exp shape#972] -[visit_id shape#972] -[visit_exp (`%X%`_shape{lanetype#8545, dim#8545, i#60694}(`I16`_lanetype, `%`_dim{i#60701}(8)), `EQ`_vrelop_)] -[visit_exp `%X%`_shape{lanetype#8545, dim#8545, i#60694}(`I16`_lanetype, `%`_dim{i#60701}(8))] -[visit_exp lanetype#8545] -[visit_id lanetype#8545] -[visit_exp dim#8545] -[visit_id dim#8545] -[visit_exp i#60694] -[visit_id i#60694] -[visit_exp (`I16`_lanetype, `%`_dim{i#60701}(8))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `EQ`_vrelop_)] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `EQ`_vrelop_)] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#60701}(8)] -[visit_exp i#60701] -[visit_id i#60701] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] [visit_exp `EQ`_vrelop_] [visit_exp ()] -[visit_exp `%`_u32{i#60687}(45)] -[visit_exp i#60687] -[visit_id i#60687] +[visit_exp `%`_u32(45)] [visit_exp (45)] [visit_exp 45] -[check_dims] dim#8572 i#60769 i#60776 i#60783 lanetype#8572 shape#974 -dims \ = dim#8572, i#60769, i#60776, i#60783, lanetype#8572, shape#974 -[visit_exp `VRELOP`_instr{shape#974}(`%X%`_shape{lanetype#8572, dim#8572, i#60776}(`I16`_lanetype, `%`_dim{i#60783}(8)), `NE`_vrelop_)] -[visit_exp shape#974] -[visit_id shape#974] -[visit_exp (`%X%`_shape{lanetype#8572, dim#8572, i#60776}(`I16`_lanetype, `%`_dim{i#60783}(8)), `NE`_vrelop_)] -[visit_exp `%X%`_shape{lanetype#8572, dim#8572, i#60776}(`I16`_lanetype, `%`_dim{i#60783}(8))] -[visit_exp lanetype#8572] -[visit_id lanetype#8572] -[visit_exp dim#8572] -[visit_id dim#8572] -[visit_exp i#60776] -[visit_id i#60776] -[visit_exp (`I16`_lanetype, `%`_dim{i#60783}(8))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `NE`_vrelop_)] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `NE`_vrelop_)] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#60783}(8)] -[visit_exp i#60783] -[visit_id i#60783] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] [visit_exp `NE`_vrelop_] [visit_exp ()] -[visit_exp `%`_u32{i#60769}(46)] -[visit_exp i#60769] -[visit_id i#60769] +[visit_exp `%`_u32(46)] [visit_exp (46)] [visit_exp 46] -[check_dims] dim#8599 i#60851 i#60858 i#60865 lanetype#8599 shape#976 sx#7771 -dims \ = dim#8599, i#60851, i#60858, i#60865, lanetype#8599, shape#976, sx#7771 -[visit_exp `VRELOP`_instr{shape#976}(`%X%`_shape{lanetype#8599, dim#8599, i#60858}(`I16`_lanetype, `%`_dim{i#60865}(8)), `LT`_vrelop_{sx#7771}(`S`_sx))] -[visit_exp shape#976] -[visit_id shape#976] -[visit_exp (`%X%`_shape{lanetype#8599, dim#8599, i#60858}(`I16`_lanetype, `%`_dim{i#60865}(8)), `LT`_vrelop_{sx#7771}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#8599, dim#8599, i#60858}(`I16`_lanetype, `%`_dim{i#60865}(8))] -[visit_exp lanetype#8599] -[visit_id lanetype#8599] -[visit_exp dim#8599] -[visit_id dim#8599] -[visit_exp i#60858] -[visit_id i#60858] -[visit_exp (`I16`_lanetype, `%`_dim{i#60865}(8))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `LT`_vrelop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `LT`_vrelop_(`S`_sx))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#60865}(8)] -[visit_exp i#60865] -[visit_id i#60865] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `LT`_vrelop_{sx#7771}(`S`_sx)] -[visit_exp sx#7771] -[visit_id sx#7771] +[visit_exp `LT`_vrelop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#60851}(47)] -[visit_exp i#60851] -[visit_id i#60851] +[visit_exp `%`_u32(47)] [visit_exp (47)] [visit_exp 47] -[check_dims] dim#8641 i#60978 i#60985 i#60992 lanetype#8641 shape#978 sx#7895 -dims \ = dim#8641, i#60978, i#60985, i#60992, lanetype#8641, shape#978, sx#7895 -[visit_exp `VRELOP`_instr{shape#978}(`%X%`_shape{lanetype#8641, dim#8641, i#60985}(`I16`_lanetype, `%`_dim{i#60992}(8)), `LT`_vrelop_{sx#7895}(`U`_sx))] -[visit_exp shape#978] -[visit_id shape#978] -[visit_exp (`%X%`_shape{lanetype#8641, dim#8641, i#60985}(`I16`_lanetype, `%`_dim{i#60992}(8)), `LT`_vrelop_{sx#7895}(`U`_sx))] -[visit_exp `%X%`_shape{lanetype#8641, dim#8641, i#60985}(`I16`_lanetype, `%`_dim{i#60992}(8))] -[visit_exp lanetype#8641] -[visit_id lanetype#8641] -[visit_exp dim#8641] -[visit_id dim#8641] -[visit_exp i#60985] -[visit_id i#60985] -[visit_exp (`I16`_lanetype, `%`_dim{i#60992}(8))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `LT`_vrelop_(`U`_sx))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `LT`_vrelop_(`U`_sx))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#60992}(8)] -[visit_exp i#60992] -[visit_id i#60992] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `LT`_vrelop_{sx#7895}(`U`_sx)] -[visit_exp sx#7895] -[visit_id sx#7895] +[visit_exp `LT`_vrelop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#60978}(48)] -[visit_exp i#60978] -[visit_id i#60978] +[visit_exp `%`_u32(48)] [visit_exp (48)] [visit_exp 48] -[check_dims] dim#8683 i#61105 i#61112 i#61119 lanetype#8683 shape#980 sx#8019 -dims \ = dim#8683, i#61105, i#61112, i#61119, lanetype#8683, shape#980, sx#8019 -[visit_exp `VRELOP`_instr{shape#980}(`%X%`_shape{lanetype#8683, dim#8683, i#61112}(`I16`_lanetype, `%`_dim{i#61119}(8)), `GT`_vrelop_{sx#8019}(`S`_sx))] -[visit_exp shape#980] -[visit_id shape#980] -[visit_exp (`%X%`_shape{lanetype#8683, dim#8683, i#61112}(`I16`_lanetype, `%`_dim{i#61119}(8)), `GT`_vrelop_{sx#8019}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#8683, dim#8683, i#61112}(`I16`_lanetype, `%`_dim{i#61119}(8))] -[visit_exp lanetype#8683] -[visit_id lanetype#8683] -[visit_exp dim#8683] -[visit_id dim#8683] -[visit_exp i#61112] -[visit_id i#61112] -[visit_exp (`I16`_lanetype, `%`_dim{i#61119}(8))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `GT`_vrelop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `GT`_vrelop_(`S`_sx))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#61119}(8)] -[visit_exp i#61119] -[visit_id i#61119] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `GT`_vrelop_{sx#8019}(`S`_sx)] -[visit_exp sx#8019] -[visit_id sx#8019] +[visit_exp `GT`_vrelop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#61105}(49)] -[visit_exp i#61105] -[visit_id i#61105] +[visit_exp `%`_u32(49)] [visit_exp (49)] [visit_exp 49] -[check_dims] dim#8725 i#61232 i#61239 i#61246 lanetype#8725 shape#982 sx#8143 -dims \ = dim#8725, i#61232, i#61239, i#61246, lanetype#8725, shape#982, sx#8143 -[visit_exp `VRELOP`_instr{shape#982}(`%X%`_shape{lanetype#8725, dim#8725, i#61239}(`I16`_lanetype, `%`_dim{i#61246}(8)), `GT`_vrelop_{sx#8143}(`U`_sx))] -[visit_exp shape#982] -[visit_id shape#982] -[visit_exp (`%X%`_shape{lanetype#8725, dim#8725, i#61239}(`I16`_lanetype, `%`_dim{i#61246}(8)), `GT`_vrelop_{sx#8143}(`U`_sx))] -[visit_exp `%X%`_shape{lanetype#8725, dim#8725, i#61239}(`I16`_lanetype, `%`_dim{i#61246}(8))] -[visit_exp lanetype#8725] -[visit_id lanetype#8725] -[visit_exp dim#8725] -[visit_id dim#8725] -[visit_exp i#61239] -[visit_id i#61239] -[visit_exp (`I16`_lanetype, `%`_dim{i#61246}(8))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `GT`_vrelop_(`U`_sx))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `GT`_vrelop_(`U`_sx))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#61246}(8)] -[visit_exp i#61246] -[visit_id i#61246] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `GT`_vrelop_{sx#8143}(`U`_sx)] -[visit_exp sx#8143] -[visit_id sx#8143] +[visit_exp `GT`_vrelop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#61232}(50)] -[visit_exp i#61232] -[visit_id i#61232] +[visit_exp `%`_u32(50)] [visit_exp (50)] [visit_exp 50] -[check_dims] dim#8767 i#61359 i#61366 i#61373 lanetype#8767 shape#984 sx#8267 -dims \ = dim#8767, i#61359, i#61366, i#61373, lanetype#8767, shape#984, sx#8267 -[visit_exp `VRELOP`_instr{shape#984}(`%X%`_shape{lanetype#8767, dim#8767, i#61366}(`I16`_lanetype, `%`_dim{i#61373}(8)), `LE`_vrelop_{sx#8267}(`S`_sx))] -[visit_exp shape#984] -[visit_id shape#984] -[visit_exp (`%X%`_shape{lanetype#8767, dim#8767, i#61366}(`I16`_lanetype, `%`_dim{i#61373}(8)), `LE`_vrelop_{sx#8267}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#8767, dim#8767, i#61366}(`I16`_lanetype, `%`_dim{i#61373}(8))] -[visit_exp lanetype#8767] -[visit_id lanetype#8767] -[visit_exp dim#8767] -[visit_id dim#8767] -[visit_exp i#61366] -[visit_id i#61366] -[visit_exp (`I16`_lanetype, `%`_dim{i#61373}(8))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `LE`_vrelop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `LE`_vrelop_(`S`_sx))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#61373}(8)] -[visit_exp i#61373] -[visit_id i#61373] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `LE`_vrelop_{sx#8267}(`S`_sx)] -[visit_exp sx#8267] -[visit_id sx#8267] +[visit_exp `LE`_vrelop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#61359}(51)] -[visit_exp i#61359] -[visit_id i#61359] +[visit_exp `%`_u32(51)] [visit_exp (51)] [visit_exp 51] -[check_dims] dim#8809 i#61486 i#61493 i#61500 lanetype#8809 shape#986 sx#8391 -dims \ = dim#8809, i#61486, i#61493, i#61500, lanetype#8809, shape#986, sx#8391 -[visit_exp `VRELOP`_instr{shape#986}(`%X%`_shape{lanetype#8809, dim#8809, i#61493}(`I16`_lanetype, `%`_dim{i#61500}(8)), `LE`_vrelop_{sx#8391}(`U`_sx))] -[visit_exp shape#986] -[visit_id shape#986] -[visit_exp (`%X%`_shape{lanetype#8809, dim#8809, i#61493}(`I16`_lanetype, `%`_dim{i#61500}(8)), `LE`_vrelop_{sx#8391}(`U`_sx))] -[visit_exp `%X%`_shape{lanetype#8809, dim#8809, i#61493}(`I16`_lanetype, `%`_dim{i#61500}(8))] -[visit_exp lanetype#8809] -[visit_id lanetype#8809] -[visit_exp dim#8809] -[visit_id dim#8809] -[visit_exp i#61493] -[visit_id i#61493] -[visit_exp (`I16`_lanetype, `%`_dim{i#61500}(8))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `LE`_vrelop_(`U`_sx))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `LE`_vrelop_(`U`_sx))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#61500}(8)] -[visit_exp i#61500] -[visit_id i#61500] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `LE`_vrelop_{sx#8391}(`U`_sx)] -[visit_exp sx#8391] -[visit_id sx#8391] +[visit_exp `LE`_vrelop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#61486}(52)] -[visit_exp i#61486] -[visit_id i#61486] +[visit_exp `%`_u32(52)] [visit_exp (52)] [visit_exp 52] -[check_dims] dim#8851 i#61613 i#61620 i#61627 lanetype#8851 shape#988 sx#8515 -dims \ = dim#8851, i#61613, i#61620, i#61627, lanetype#8851, shape#988, sx#8515 -[visit_exp `VRELOP`_instr{shape#988}(`%X%`_shape{lanetype#8851, dim#8851, i#61620}(`I16`_lanetype, `%`_dim{i#61627}(8)), `GE`_vrelop_{sx#8515}(`S`_sx))] -[visit_exp shape#988] -[visit_id shape#988] -[visit_exp (`%X%`_shape{lanetype#8851, dim#8851, i#61620}(`I16`_lanetype, `%`_dim{i#61627}(8)), `GE`_vrelop_{sx#8515}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#8851, dim#8851, i#61620}(`I16`_lanetype, `%`_dim{i#61627}(8))] -[visit_exp lanetype#8851] -[visit_id lanetype#8851] -[visit_exp dim#8851] -[visit_id dim#8851] -[visit_exp i#61620] -[visit_id i#61620] -[visit_exp (`I16`_lanetype, `%`_dim{i#61627}(8))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `GE`_vrelop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `GE`_vrelop_(`S`_sx))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#61627}(8)] -[visit_exp i#61627] -[visit_id i#61627] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `GE`_vrelop_{sx#8515}(`S`_sx)] -[visit_exp sx#8515] -[visit_id sx#8515] +[visit_exp `GE`_vrelop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#61613}(53)] -[visit_exp i#61613] -[visit_id i#61613] +[visit_exp `%`_u32(53)] [visit_exp (53)] [visit_exp 53] -[check_dims] dim#8893 i#61740 i#61747 i#61754 lanetype#8893 shape#990 sx#8639 -dims \ = dim#8893, i#61740, i#61747, i#61754, lanetype#8893, shape#990, sx#8639 -[visit_exp `VRELOP`_instr{shape#990}(`%X%`_shape{lanetype#8893, dim#8893, i#61747}(`I16`_lanetype, `%`_dim{i#61754}(8)), `GE`_vrelop_{sx#8639}(`U`_sx))] -[visit_exp shape#990] -[visit_id shape#990] -[visit_exp (`%X%`_shape{lanetype#8893, dim#8893, i#61747}(`I16`_lanetype, `%`_dim{i#61754}(8)), `GE`_vrelop_{sx#8639}(`U`_sx))] -[visit_exp `%X%`_shape{lanetype#8893, dim#8893, i#61747}(`I16`_lanetype, `%`_dim{i#61754}(8))] -[visit_exp lanetype#8893] -[visit_id lanetype#8893] -[visit_exp dim#8893] -[visit_id dim#8893] -[visit_exp i#61747] -[visit_id i#61747] -[visit_exp (`I16`_lanetype, `%`_dim{i#61754}(8))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `GE`_vrelop_(`U`_sx))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `GE`_vrelop_(`U`_sx))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#61754}(8)] -[visit_exp i#61754] -[visit_id i#61754] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `GE`_vrelop_{sx#8639}(`U`_sx)] -[visit_exp sx#8639] -[visit_id sx#8639] +[visit_exp `GE`_vrelop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#61740}(54)] -[visit_exp i#61740] -[visit_id i#61740] +[visit_exp `%`_u32(54)] [visit_exp (54)] [visit_exp 54] ps' = [check_dims] -[check_dims] dim#8935 i#61867 i#61874 i#61881 lanetype#8935 shape#992 -dims \ = dim#8935, i#61867, i#61874, i#61881, lanetype#8935, shape#992 -[visit_exp `VRELOP`_instr{shape#992}(`%X%`_shape{lanetype#8935, dim#8935, i#61874}(`I32`_lanetype, `%`_dim{i#61881}(4)), `EQ`_vrelop_)] -[visit_exp shape#992] -[visit_id shape#992] -[visit_exp (`%X%`_shape{lanetype#8935, dim#8935, i#61874}(`I32`_lanetype, `%`_dim{i#61881}(4)), `EQ`_vrelop_)] -[visit_exp `%X%`_shape{lanetype#8935, dim#8935, i#61874}(`I32`_lanetype, `%`_dim{i#61881}(4))] -[visit_exp lanetype#8935] -[visit_id lanetype#8935] -[visit_exp dim#8935] -[visit_id dim#8935] -[visit_exp i#61874] -[visit_id i#61874] -[visit_exp (`I32`_lanetype, `%`_dim{i#61881}(4))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `EQ`_vrelop_)] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `EQ`_vrelop_)] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#61881}(4)] -[visit_exp i#61881] -[visit_id i#61881] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `EQ`_vrelop_] [visit_exp ()] -[visit_exp `%`_u32{i#61867}(55)] -[visit_exp i#61867] -[visit_id i#61867] +[visit_exp `%`_u32(55)] [visit_exp (55)] [visit_exp 55] -[check_dims] dim#8962 i#61949 i#61956 i#61963 lanetype#8962 shape#994 -dims \ = dim#8962, i#61949, i#61956, i#61963, lanetype#8962, shape#994 -[visit_exp `VRELOP`_instr{shape#994}(`%X%`_shape{lanetype#8962, dim#8962, i#61956}(`I32`_lanetype, `%`_dim{i#61963}(4)), `NE`_vrelop_)] -[visit_exp shape#994] -[visit_id shape#994] -[visit_exp (`%X%`_shape{lanetype#8962, dim#8962, i#61956}(`I32`_lanetype, `%`_dim{i#61963}(4)), `NE`_vrelop_)] -[visit_exp `%X%`_shape{lanetype#8962, dim#8962, i#61956}(`I32`_lanetype, `%`_dim{i#61963}(4))] -[visit_exp lanetype#8962] -[visit_id lanetype#8962] -[visit_exp dim#8962] -[visit_id dim#8962] -[visit_exp i#61956] -[visit_id i#61956] -[visit_exp (`I32`_lanetype, `%`_dim{i#61963}(4))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `NE`_vrelop_)] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `NE`_vrelop_)] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#61963}(4)] -[visit_exp i#61963] -[visit_id i#61963] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `NE`_vrelop_] [visit_exp ()] -[visit_exp `%`_u32{i#61949}(56)] -[visit_exp i#61949] -[visit_id i#61949] +[visit_exp `%`_u32(56)] [visit_exp (56)] [visit_exp 56] -[check_dims] dim#8989 i#62031 i#62038 i#62045 lanetype#8989 shape#996 sx#8883 -dims \ = dim#8989, i#62031, i#62038, i#62045, lanetype#8989, shape#996, sx#8883 -[visit_exp `VRELOP`_instr{shape#996}(`%X%`_shape{lanetype#8989, dim#8989, i#62038}(`I32`_lanetype, `%`_dim{i#62045}(4)), `LT`_vrelop_{sx#8883}(`S`_sx))] -[visit_exp shape#996] -[visit_id shape#996] -[visit_exp (`%X%`_shape{lanetype#8989, dim#8989, i#62038}(`I32`_lanetype, `%`_dim{i#62045}(4)), `LT`_vrelop_{sx#8883}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#8989, dim#8989, i#62038}(`I32`_lanetype, `%`_dim{i#62045}(4))] -[visit_exp lanetype#8989] -[visit_id lanetype#8989] -[visit_exp dim#8989] -[visit_id dim#8989] -[visit_exp i#62038] -[visit_id i#62038] -[visit_exp (`I32`_lanetype, `%`_dim{i#62045}(4))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `LT`_vrelop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `LT`_vrelop_(`S`_sx))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#62045}(4)] -[visit_exp i#62045] -[visit_id i#62045] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `LT`_vrelop_{sx#8883}(`S`_sx)] -[visit_exp sx#8883] -[visit_id sx#8883] +[visit_exp `LT`_vrelop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#62031}(57)] -[visit_exp i#62031] -[visit_id i#62031] +[visit_exp `%`_u32(57)] [visit_exp (57)] [visit_exp 57] -[check_dims] dim#9031 i#62158 i#62165 i#62172 lanetype#9031 shape#998 sx#9007 -dims \ = dim#9031, i#62158, i#62165, i#62172, lanetype#9031, shape#998, sx#9007 -[visit_exp `VRELOP`_instr{shape#998}(`%X%`_shape{lanetype#9031, dim#9031, i#62165}(`I32`_lanetype, `%`_dim{i#62172}(4)), `LT`_vrelop_{sx#9007}(`U`_sx))] -[visit_exp shape#998] -[visit_id shape#998] -[visit_exp (`%X%`_shape{lanetype#9031, dim#9031, i#62165}(`I32`_lanetype, `%`_dim{i#62172}(4)), `LT`_vrelop_{sx#9007}(`U`_sx))] -[visit_exp `%X%`_shape{lanetype#9031, dim#9031, i#62165}(`I32`_lanetype, `%`_dim{i#62172}(4))] -[visit_exp lanetype#9031] -[visit_id lanetype#9031] -[visit_exp dim#9031] -[visit_id dim#9031] -[visit_exp i#62165] -[visit_id i#62165] -[visit_exp (`I32`_lanetype, `%`_dim{i#62172}(4))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `LT`_vrelop_(`U`_sx))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `LT`_vrelop_(`U`_sx))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#62172}(4)] -[visit_exp i#62172] -[visit_id i#62172] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `LT`_vrelop_{sx#9007}(`U`_sx)] -[visit_exp sx#9007] -[visit_id sx#9007] +[visit_exp `LT`_vrelop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#62158}(58)] -[visit_exp i#62158] -[visit_id i#62158] +[visit_exp `%`_u32(58)] [visit_exp (58)] [visit_exp 58] -[check_dims] dim#9073 i#62285 i#62292 i#62299 lanetype#9073 shape#1000 sx#9131 -dims \ = dim#9073, i#62285, i#62292, i#62299, lanetype#9073, shape#1000, sx#9131 -[visit_exp `VRELOP`_instr{shape#1000}(`%X%`_shape{lanetype#9073, dim#9073, i#62292}(`I32`_lanetype, `%`_dim{i#62299}(4)), `GT`_vrelop_{sx#9131}(`S`_sx))] -[visit_exp shape#1000] -[visit_id shape#1000] -[visit_exp (`%X%`_shape{lanetype#9073, dim#9073, i#62292}(`I32`_lanetype, `%`_dim{i#62299}(4)), `GT`_vrelop_{sx#9131}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#9073, dim#9073, i#62292}(`I32`_lanetype, `%`_dim{i#62299}(4))] -[visit_exp lanetype#9073] -[visit_id lanetype#9073] -[visit_exp dim#9073] -[visit_id dim#9073] -[visit_exp i#62292] -[visit_id i#62292] -[visit_exp (`I32`_lanetype, `%`_dim{i#62299}(4))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `GT`_vrelop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `GT`_vrelop_(`S`_sx))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#62299}(4)] -[visit_exp i#62299] -[visit_id i#62299] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `GT`_vrelop_{sx#9131}(`S`_sx)] -[visit_exp sx#9131] -[visit_id sx#9131] +[visit_exp `GT`_vrelop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#62285}(59)] -[visit_exp i#62285] -[visit_id i#62285] +[visit_exp `%`_u32(59)] [visit_exp (59)] [visit_exp 59] -[check_dims] dim#9115 i#62412 i#62419 i#62426 lanetype#9115 shape#1002 sx#9255 -dims \ = dim#9115, i#62412, i#62419, i#62426, lanetype#9115, shape#1002, sx#9255 -[visit_exp `VRELOP`_instr{shape#1002}(`%X%`_shape{lanetype#9115, dim#9115, i#62419}(`I32`_lanetype, `%`_dim{i#62426}(4)), `GT`_vrelop_{sx#9255}(`U`_sx))] -[visit_exp shape#1002] -[visit_id shape#1002] -[visit_exp (`%X%`_shape{lanetype#9115, dim#9115, i#62419}(`I32`_lanetype, `%`_dim{i#62426}(4)), `GT`_vrelop_{sx#9255}(`U`_sx))] -[visit_exp `%X%`_shape{lanetype#9115, dim#9115, i#62419}(`I32`_lanetype, `%`_dim{i#62426}(4))] -[visit_exp lanetype#9115] -[visit_id lanetype#9115] -[visit_exp dim#9115] -[visit_id dim#9115] -[visit_exp i#62419] -[visit_id i#62419] -[visit_exp (`I32`_lanetype, `%`_dim{i#62426}(4))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `GT`_vrelop_(`U`_sx))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `GT`_vrelop_(`U`_sx))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#62426}(4)] -[visit_exp i#62426] -[visit_id i#62426] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `GT`_vrelop_{sx#9255}(`U`_sx)] -[visit_exp sx#9255] -[visit_id sx#9255] +[visit_exp `GT`_vrelop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#62412}(60)] -[visit_exp i#62412] -[visit_id i#62412] +[visit_exp `%`_u32(60)] [visit_exp (60)] [visit_exp 60] -[check_dims] dim#9157 i#62539 i#62546 i#62553 lanetype#9157 shape#1004 sx#9379 -dims \ = dim#9157, i#62539, i#62546, i#62553, lanetype#9157, shape#1004, sx#9379 -[visit_exp `VRELOP`_instr{shape#1004}(`%X%`_shape{lanetype#9157, dim#9157, i#62546}(`I32`_lanetype, `%`_dim{i#62553}(4)), `LE`_vrelop_{sx#9379}(`S`_sx))] -[visit_exp shape#1004] -[visit_id shape#1004] -[visit_exp (`%X%`_shape{lanetype#9157, dim#9157, i#62546}(`I32`_lanetype, `%`_dim{i#62553}(4)), `LE`_vrelop_{sx#9379}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#9157, dim#9157, i#62546}(`I32`_lanetype, `%`_dim{i#62553}(4))] -[visit_exp lanetype#9157] -[visit_id lanetype#9157] -[visit_exp dim#9157] -[visit_id dim#9157] -[visit_exp i#62546] -[visit_id i#62546] -[visit_exp (`I32`_lanetype, `%`_dim{i#62553}(4))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `LE`_vrelop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `LE`_vrelop_(`S`_sx))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#62553}(4)] -[visit_exp i#62553] -[visit_id i#62553] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `LE`_vrelop_{sx#9379}(`S`_sx)] -[visit_exp sx#9379] -[visit_id sx#9379] +[visit_exp `LE`_vrelop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#62539}(61)] -[visit_exp i#62539] -[visit_id i#62539] +[visit_exp `%`_u32(61)] [visit_exp (61)] [visit_exp 61] -[check_dims] dim#9199 i#62666 i#62673 i#62680 lanetype#9199 shape#1006 sx#9503 -dims \ = dim#9199, i#62666, i#62673, i#62680, lanetype#9199, shape#1006, sx#9503 -[visit_exp `VRELOP`_instr{shape#1006}(`%X%`_shape{lanetype#9199, dim#9199, i#62673}(`I32`_lanetype, `%`_dim{i#62680}(4)), `LE`_vrelop_{sx#9503}(`U`_sx))] -[visit_exp shape#1006] -[visit_id shape#1006] -[visit_exp (`%X%`_shape{lanetype#9199, dim#9199, i#62673}(`I32`_lanetype, `%`_dim{i#62680}(4)), `LE`_vrelop_{sx#9503}(`U`_sx))] -[visit_exp `%X%`_shape{lanetype#9199, dim#9199, i#62673}(`I32`_lanetype, `%`_dim{i#62680}(4))] -[visit_exp lanetype#9199] -[visit_id lanetype#9199] -[visit_exp dim#9199] -[visit_id dim#9199] -[visit_exp i#62673] -[visit_id i#62673] -[visit_exp (`I32`_lanetype, `%`_dim{i#62680}(4))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `LE`_vrelop_(`U`_sx))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `LE`_vrelop_(`U`_sx))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#62680}(4)] -[visit_exp i#62680] -[visit_id i#62680] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `LE`_vrelop_{sx#9503}(`U`_sx)] -[visit_exp sx#9503] -[visit_id sx#9503] +[visit_exp `LE`_vrelop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#62666}(62)] -[visit_exp i#62666] -[visit_id i#62666] +[visit_exp `%`_u32(62)] [visit_exp (62)] [visit_exp 62] -[check_dims] dim#9241 i#62793 i#62800 i#62807 lanetype#9241 shape#1008 sx#9627 -dims \ = dim#9241, i#62793, i#62800, i#62807, lanetype#9241, shape#1008, sx#9627 -[visit_exp `VRELOP`_instr{shape#1008}(`%X%`_shape{lanetype#9241, dim#9241, i#62800}(`I32`_lanetype, `%`_dim{i#62807}(4)), `GE`_vrelop_{sx#9627}(`S`_sx))] -[visit_exp shape#1008] -[visit_id shape#1008] -[visit_exp (`%X%`_shape{lanetype#9241, dim#9241, i#62800}(`I32`_lanetype, `%`_dim{i#62807}(4)), `GE`_vrelop_{sx#9627}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#9241, dim#9241, i#62800}(`I32`_lanetype, `%`_dim{i#62807}(4))] -[visit_exp lanetype#9241] -[visit_id lanetype#9241] -[visit_exp dim#9241] -[visit_id dim#9241] -[visit_exp i#62800] -[visit_id i#62800] -[visit_exp (`I32`_lanetype, `%`_dim{i#62807}(4))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `GE`_vrelop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `GE`_vrelop_(`S`_sx))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#62807}(4)] -[visit_exp i#62807] -[visit_id i#62807] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `GE`_vrelop_{sx#9627}(`S`_sx)] -[visit_exp sx#9627] -[visit_id sx#9627] +[visit_exp `GE`_vrelop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#62793}(63)] -[visit_exp i#62793] -[visit_id i#62793] +[visit_exp `%`_u32(63)] [visit_exp (63)] [visit_exp 63] -[check_dims] dim#9283 i#62920 i#62927 i#62934 lanetype#9283 shape#1010 sx#9751 -dims \ = dim#9283, i#62920, i#62927, i#62934, lanetype#9283, shape#1010, sx#9751 -[visit_exp `VRELOP`_instr{shape#1010}(`%X%`_shape{lanetype#9283, dim#9283, i#62927}(`I32`_lanetype, `%`_dim{i#62934}(4)), `GE`_vrelop_{sx#9751}(`U`_sx))] -[visit_exp shape#1010] -[visit_id shape#1010] -[visit_exp (`%X%`_shape{lanetype#9283, dim#9283, i#62927}(`I32`_lanetype, `%`_dim{i#62934}(4)), `GE`_vrelop_{sx#9751}(`U`_sx))] -[visit_exp `%X%`_shape{lanetype#9283, dim#9283, i#62927}(`I32`_lanetype, `%`_dim{i#62934}(4))] -[visit_exp lanetype#9283] -[visit_id lanetype#9283] -[visit_exp dim#9283] -[visit_id dim#9283] -[visit_exp i#62927] -[visit_id i#62927] -[visit_exp (`I32`_lanetype, `%`_dim{i#62934}(4))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `GE`_vrelop_(`U`_sx))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `GE`_vrelop_(`U`_sx))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#62934}(4)] -[visit_exp i#62934] -[visit_id i#62934] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `GE`_vrelop_{sx#9751}(`U`_sx)] -[visit_exp sx#9751] -[visit_id sx#9751] +[visit_exp `GE`_vrelop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#62920}(64)] -[visit_exp i#62920] -[visit_id i#62920] +[visit_exp `%`_u32(64)] [visit_exp (64)] [visit_exp 64] ps' = [check_dims] -[check_dims] dim#9325 i#63047 i#63054 i#63061 lanetype#9325 shape#1012 -dims \ = dim#9325, i#63047, i#63054, i#63061, lanetype#9325, shape#1012 -[visit_exp `VRELOP`_instr{shape#1012}(`%X%`_shape{lanetype#9325, dim#9325, i#63054}(`F32`_lanetype, `%`_dim{i#63061}(4)), `EQ`_vrelop_)] -[visit_exp shape#1012] -[visit_id shape#1012] -[visit_exp (`%X%`_shape{lanetype#9325, dim#9325, i#63054}(`F32`_lanetype, `%`_dim{i#63061}(4)), `EQ`_vrelop_)] -[visit_exp `%X%`_shape{lanetype#9325, dim#9325, i#63054}(`F32`_lanetype, `%`_dim{i#63061}(4))] -[visit_exp lanetype#9325] -[visit_id lanetype#9325] -[visit_exp dim#9325] -[visit_id dim#9325] -[visit_exp i#63054] -[visit_id i#63054] -[visit_exp (`F32`_lanetype, `%`_dim{i#63061}(4))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `EQ`_vrelop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `EQ`_vrelop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#63061}(4)] -[visit_exp i#63061] -[visit_id i#63061] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `EQ`_vrelop_] [visit_exp ()] -[visit_exp `%`_u32{i#63047}(65)] -[visit_exp i#63047] -[visit_id i#63047] +[visit_exp `%`_u32(65)] [visit_exp (65)] [visit_exp 65] -[check_dims] dim#9367 i#63144 i#63151 i#63158 lanetype#9367 shape#1014 -dims \ = dim#9367, i#63144, i#63151, i#63158, lanetype#9367, shape#1014 -[visit_exp `VRELOP`_instr{shape#1014}(`%X%`_shape{lanetype#9367, dim#9367, i#63151}(`F32`_lanetype, `%`_dim{i#63158}(4)), `NE`_vrelop_)] -[visit_exp shape#1014] -[visit_id shape#1014] -[visit_exp (`%X%`_shape{lanetype#9367, dim#9367, i#63151}(`F32`_lanetype, `%`_dim{i#63158}(4)), `NE`_vrelop_)] -[visit_exp `%X%`_shape{lanetype#9367, dim#9367, i#63151}(`F32`_lanetype, `%`_dim{i#63158}(4))] -[visit_exp lanetype#9367] -[visit_id lanetype#9367] -[visit_exp dim#9367] -[visit_id dim#9367] -[visit_exp i#63151] -[visit_id i#63151] -[visit_exp (`F32`_lanetype, `%`_dim{i#63158}(4))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `NE`_vrelop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `NE`_vrelop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#63158}(4)] -[visit_exp i#63158] -[visit_id i#63158] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `NE`_vrelop_] [visit_exp ()] -[visit_exp `%`_u32{i#63144}(66)] -[visit_exp i#63144] -[visit_id i#63144] +[visit_exp `%`_u32(66)] [visit_exp (66)] [visit_exp 66] -[check_dims] dim#9409 i#63241 i#63248 i#63255 lanetype#9409 shape#1016 -dims \ = dim#9409, i#63241, i#63248, i#63255, lanetype#9409, shape#1016 -[visit_exp `VRELOP`_instr{shape#1016}(`%X%`_shape{lanetype#9409, dim#9409, i#63248}(`F32`_lanetype, `%`_dim{i#63255}(4)), `LT`_vrelop_)] -[visit_exp shape#1016] -[visit_id shape#1016] -[visit_exp (`%X%`_shape{lanetype#9409, dim#9409, i#63248}(`F32`_lanetype, `%`_dim{i#63255}(4)), `LT`_vrelop_)] -[visit_exp `%X%`_shape{lanetype#9409, dim#9409, i#63248}(`F32`_lanetype, `%`_dim{i#63255}(4))] -[visit_exp lanetype#9409] -[visit_id lanetype#9409] -[visit_exp dim#9409] -[visit_id dim#9409] -[visit_exp i#63248] -[visit_id i#63248] -[visit_exp (`F32`_lanetype, `%`_dim{i#63255}(4))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `LT`_vrelop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `LT`_vrelop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#63255}(4)] -[visit_exp i#63255] -[visit_id i#63255] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `LT`_vrelop_] [visit_exp ()] -[visit_exp `%`_u32{i#63241}(67)] -[visit_exp i#63241] -[visit_id i#63241] +[visit_exp `%`_u32(67)] [visit_exp (67)] [visit_exp 67] -[check_dims] dim#9451 i#63338 i#63345 i#63352 lanetype#9451 shape#1018 -dims \ = dim#9451, i#63338, i#63345, i#63352, lanetype#9451, shape#1018 -[visit_exp `VRELOP`_instr{shape#1018}(`%X%`_shape{lanetype#9451, dim#9451, i#63345}(`F32`_lanetype, `%`_dim{i#63352}(4)), `GT`_vrelop_)] -[visit_exp shape#1018] -[visit_id shape#1018] -[visit_exp (`%X%`_shape{lanetype#9451, dim#9451, i#63345}(`F32`_lanetype, `%`_dim{i#63352}(4)), `GT`_vrelop_)] -[visit_exp `%X%`_shape{lanetype#9451, dim#9451, i#63345}(`F32`_lanetype, `%`_dim{i#63352}(4))] -[visit_exp lanetype#9451] -[visit_id lanetype#9451] -[visit_exp dim#9451] -[visit_id dim#9451] -[visit_exp i#63345] -[visit_id i#63345] -[visit_exp (`F32`_lanetype, `%`_dim{i#63352}(4))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `GT`_vrelop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `GT`_vrelop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#63352}(4)] -[visit_exp i#63352] -[visit_id i#63352] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `GT`_vrelop_] [visit_exp ()] -[visit_exp `%`_u32{i#63338}(68)] -[visit_exp i#63338] -[visit_id i#63338] +[visit_exp `%`_u32(68)] [visit_exp (68)] [visit_exp 68] -[check_dims] dim#9493 i#63435 i#63442 i#63449 lanetype#9493 shape#1020 -dims \ = dim#9493, i#63435, i#63442, i#63449, lanetype#9493, shape#1020 -[visit_exp `VRELOP`_instr{shape#1020}(`%X%`_shape{lanetype#9493, dim#9493, i#63442}(`F32`_lanetype, `%`_dim{i#63449}(4)), `LE`_vrelop_)] -[visit_exp shape#1020] -[visit_id shape#1020] -[visit_exp (`%X%`_shape{lanetype#9493, dim#9493, i#63442}(`F32`_lanetype, `%`_dim{i#63449}(4)), `LE`_vrelop_)] -[visit_exp `%X%`_shape{lanetype#9493, dim#9493, i#63442}(`F32`_lanetype, `%`_dim{i#63449}(4))] -[visit_exp lanetype#9493] -[visit_id lanetype#9493] -[visit_exp dim#9493] -[visit_id dim#9493] -[visit_exp i#63442] -[visit_id i#63442] -[visit_exp (`F32`_lanetype, `%`_dim{i#63449}(4))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `LE`_vrelop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `LE`_vrelop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#63449}(4)] -[visit_exp i#63449] -[visit_id i#63449] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `LE`_vrelop_] [visit_exp ()] -[visit_exp `%`_u32{i#63435}(69)] -[visit_exp i#63435] -[visit_id i#63435] +[visit_exp `%`_u32(69)] [visit_exp (69)] [visit_exp 69] -[check_dims] dim#9535 i#63532 i#63539 i#63546 lanetype#9535 shape#1022 -dims \ = dim#9535, i#63532, i#63539, i#63546, lanetype#9535, shape#1022 -[visit_exp `VRELOP`_instr{shape#1022}(`%X%`_shape{lanetype#9535, dim#9535, i#63539}(`F32`_lanetype, `%`_dim{i#63546}(4)), `GE`_vrelop_)] -[visit_exp shape#1022] -[visit_id shape#1022] -[visit_exp (`%X%`_shape{lanetype#9535, dim#9535, i#63539}(`F32`_lanetype, `%`_dim{i#63546}(4)), `GE`_vrelop_)] -[visit_exp `%X%`_shape{lanetype#9535, dim#9535, i#63539}(`F32`_lanetype, `%`_dim{i#63546}(4))] -[visit_exp lanetype#9535] -[visit_id lanetype#9535] -[visit_exp dim#9535] -[visit_id dim#9535] -[visit_exp i#63539] -[visit_id i#63539] -[visit_exp (`F32`_lanetype, `%`_dim{i#63546}(4))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `GE`_vrelop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `GE`_vrelop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#63546}(4)] -[visit_exp i#63546] -[visit_id i#63546] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `GE`_vrelop_] [visit_exp ()] -[visit_exp `%`_u32{i#63532}(70)] -[visit_exp i#63532] -[visit_id i#63532] +[visit_exp `%`_u32(70)] [visit_exp (70)] [visit_exp 70] ps' = [check_dims] -[check_dims] dim#9577 i#63629 i#63636 i#63643 lanetype#9577 shape#1024 -dims \ = dim#9577, i#63629, i#63636, i#63643, lanetype#9577, shape#1024 -[visit_exp `VRELOP`_instr{shape#1024}(`%X%`_shape{lanetype#9577, dim#9577, i#63636}(`F64`_lanetype, `%`_dim{i#63643}(2)), `EQ`_vrelop_)] -[visit_exp shape#1024] -[visit_id shape#1024] -[visit_exp (`%X%`_shape{lanetype#9577, dim#9577, i#63636}(`F64`_lanetype, `%`_dim{i#63643}(2)), `EQ`_vrelop_)] -[visit_exp `%X%`_shape{lanetype#9577, dim#9577, i#63636}(`F64`_lanetype, `%`_dim{i#63643}(2))] -[visit_exp lanetype#9577] -[visit_id lanetype#9577] -[visit_exp dim#9577] -[visit_id dim#9577] -[visit_exp i#63636] -[visit_id i#63636] -[visit_exp (`F64`_lanetype, `%`_dim{i#63643}(2))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `EQ`_vrelop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `EQ`_vrelop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#63643}(2)] -[visit_exp i#63643] -[visit_id i#63643] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `EQ`_vrelop_] [visit_exp ()] -[visit_exp `%`_u32{i#63629}(71)] -[visit_exp i#63629] -[visit_id i#63629] +[visit_exp `%`_u32(71)] [visit_exp (71)] [visit_exp 71] -[check_dims] dim#9619 i#63726 i#63733 i#63740 lanetype#9619 shape#1026 -dims \ = dim#9619, i#63726, i#63733, i#63740, lanetype#9619, shape#1026 -[visit_exp `VRELOP`_instr{shape#1026}(`%X%`_shape{lanetype#9619, dim#9619, i#63733}(`F64`_lanetype, `%`_dim{i#63740}(2)), `NE`_vrelop_)] -[visit_exp shape#1026] -[visit_id shape#1026] -[visit_exp (`%X%`_shape{lanetype#9619, dim#9619, i#63733}(`F64`_lanetype, `%`_dim{i#63740}(2)), `NE`_vrelop_)] -[visit_exp `%X%`_shape{lanetype#9619, dim#9619, i#63733}(`F64`_lanetype, `%`_dim{i#63740}(2))] -[visit_exp lanetype#9619] -[visit_id lanetype#9619] -[visit_exp dim#9619] -[visit_id dim#9619] -[visit_exp i#63733] -[visit_id i#63733] -[visit_exp (`F64`_lanetype, `%`_dim{i#63740}(2))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `NE`_vrelop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `NE`_vrelop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#63740}(2)] -[visit_exp i#63740] -[visit_id i#63740] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `NE`_vrelop_] [visit_exp ()] -[visit_exp `%`_u32{i#63726}(72)] -[visit_exp i#63726] -[visit_id i#63726] +[visit_exp `%`_u32(72)] [visit_exp (72)] [visit_exp 72] -[check_dims] dim#9661 i#63823 i#63830 i#63837 lanetype#9661 shape#1028 -dims \ = dim#9661, i#63823, i#63830, i#63837, lanetype#9661, shape#1028 -[visit_exp `VRELOP`_instr{shape#1028}(`%X%`_shape{lanetype#9661, dim#9661, i#63830}(`F64`_lanetype, `%`_dim{i#63837}(2)), `LT`_vrelop_)] -[visit_exp shape#1028] -[visit_id shape#1028] -[visit_exp (`%X%`_shape{lanetype#9661, dim#9661, i#63830}(`F64`_lanetype, `%`_dim{i#63837}(2)), `LT`_vrelop_)] -[visit_exp `%X%`_shape{lanetype#9661, dim#9661, i#63830}(`F64`_lanetype, `%`_dim{i#63837}(2))] -[visit_exp lanetype#9661] -[visit_id lanetype#9661] -[visit_exp dim#9661] -[visit_id dim#9661] -[visit_exp i#63830] -[visit_id i#63830] -[visit_exp (`F64`_lanetype, `%`_dim{i#63837}(2))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `LT`_vrelop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `LT`_vrelop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#63837}(2)] -[visit_exp i#63837] -[visit_id i#63837] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `LT`_vrelop_] [visit_exp ()] -[visit_exp `%`_u32{i#63823}(73)] -[visit_exp i#63823] -[visit_id i#63823] +[visit_exp `%`_u32(73)] [visit_exp (73)] [visit_exp 73] -[check_dims] dim#9703 i#63920 i#63927 i#63934 lanetype#9703 shape#1030 -dims \ = dim#9703, i#63920, i#63927, i#63934, lanetype#9703, shape#1030 -[visit_exp `VRELOP`_instr{shape#1030}(`%X%`_shape{lanetype#9703, dim#9703, i#63927}(`F64`_lanetype, `%`_dim{i#63934}(2)), `GT`_vrelop_)] -[visit_exp shape#1030] -[visit_id shape#1030] -[visit_exp (`%X%`_shape{lanetype#9703, dim#9703, i#63927}(`F64`_lanetype, `%`_dim{i#63934}(2)), `GT`_vrelop_)] -[visit_exp `%X%`_shape{lanetype#9703, dim#9703, i#63927}(`F64`_lanetype, `%`_dim{i#63934}(2))] -[visit_exp lanetype#9703] -[visit_id lanetype#9703] -[visit_exp dim#9703] -[visit_id dim#9703] -[visit_exp i#63927] -[visit_id i#63927] -[visit_exp (`F64`_lanetype, `%`_dim{i#63934}(2))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `GT`_vrelop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `GT`_vrelop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#63934}(2)] -[visit_exp i#63934] -[visit_id i#63934] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `GT`_vrelop_] [visit_exp ()] -[visit_exp `%`_u32{i#63920}(74)] -[visit_exp i#63920] -[visit_id i#63920] +[visit_exp `%`_u32(74)] [visit_exp (74)] [visit_exp 74] -[check_dims] dim#9745 i#64017 i#64024 i#64031 lanetype#9745 shape#1032 -dims \ = dim#9745, i#64017, i#64024, i#64031, lanetype#9745, shape#1032 -[visit_exp `VRELOP`_instr{shape#1032}(`%X%`_shape{lanetype#9745, dim#9745, i#64024}(`F64`_lanetype, `%`_dim{i#64031}(2)), `LE`_vrelop_)] -[visit_exp shape#1032] -[visit_id shape#1032] -[visit_exp (`%X%`_shape{lanetype#9745, dim#9745, i#64024}(`F64`_lanetype, `%`_dim{i#64031}(2)), `LE`_vrelop_)] -[visit_exp `%X%`_shape{lanetype#9745, dim#9745, i#64024}(`F64`_lanetype, `%`_dim{i#64031}(2))] -[visit_exp lanetype#9745] -[visit_id lanetype#9745] -[visit_exp dim#9745] -[visit_id dim#9745] -[visit_exp i#64024] -[visit_id i#64024] -[visit_exp (`F64`_lanetype, `%`_dim{i#64031}(2))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `LE`_vrelop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `LE`_vrelop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#64031}(2)] -[visit_exp i#64031] -[visit_id i#64031] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `LE`_vrelop_] [visit_exp ()] -[visit_exp `%`_u32{i#64017}(75)] -[visit_exp i#64017] -[visit_id i#64017] +[visit_exp `%`_u32(75)] [visit_exp (75)] [visit_exp 75] -[check_dims] dim#9787 i#64114 i#64121 i#64128 lanetype#9787 shape#1034 -dims \ = dim#9787, i#64114, i#64121, i#64128, lanetype#9787, shape#1034 -[visit_exp `VRELOP`_instr{shape#1034}(`%X%`_shape{lanetype#9787, dim#9787, i#64121}(`F64`_lanetype, `%`_dim{i#64128}(2)), `GE`_vrelop_)] -[visit_exp shape#1034] -[visit_id shape#1034] -[visit_exp (`%X%`_shape{lanetype#9787, dim#9787, i#64121}(`F64`_lanetype, `%`_dim{i#64128}(2)), `GE`_vrelop_)] -[visit_exp `%X%`_shape{lanetype#9787, dim#9787, i#64121}(`F64`_lanetype, `%`_dim{i#64128}(2))] -[visit_exp lanetype#9787] -[visit_id lanetype#9787] -[visit_exp dim#9787] -[visit_id dim#9787] -[visit_exp i#64121] -[visit_id i#64121] -[visit_exp (`F64`_lanetype, `%`_dim{i#64128}(2))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `GE`_vrelop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `GE`_vrelop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#64128}(2)] -[visit_exp i#64128] -[visit_id i#64128] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `GE`_vrelop_] [visit_exp ()] -[visit_exp `%`_u32{i#64114}(76)] -[visit_exp i#64114] -[visit_id i#64114] +[visit_exp `%`_u32(76)] [visit_exp (76)] [visit_exp 76] ps' = [check_dims] -[check_dims] i#64211 vectype#259 vvunop#7 -dims \ = i#64211, vectype#259, vvunop#7 -[visit_exp `VVUNOP`_instr{vectype#259, vvunop#7}(`V128`_vectype, `NOT`_vvunop)] -[visit_exp vectype#259] -[visit_id vectype#259] -[visit_exp vvunop#7] -[visit_id vvunop#7] +[check_dims] +dims \ = +[visit_exp `VVUNOP`_instr(`V128`_vectype, `NOT`_vvunop)] [visit_exp (`V128`_vectype, `NOT`_vvunop)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp `NOT`_vvunop] [visit_exp ()] -[visit_exp `%`_u32{i#64211}(77)] -[visit_exp i#64211] -[visit_id i#64211] +[visit_exp `%`_u32(77)] [visit_exp (77)] [visit_exp 77] ps' = [check_dims] -[check_dims] i#64236 vectype#261 vvbinop#7 -dims \ = i#64236, vectype#261, vvbinop#7 -[visit_exp `VVBINOP`_instr{vectype#261, vvbinop#7}(`V128`_vectype, `AND`_vvbinop)] -[visit_exp vectype#261] -[visit_id vectype#261] -[visit_exp vvbinop#7] -[visit_id vvbinop#7] +[check_dims] +dims \ = +[visit_exp `VVBINOP`_instr(`V128`_vectype, `AND`_vvbinop)] [visit_exp (`V128`_vectype, `AND`_vvbinop)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp `AND`_vvbinop] [visit_exp ()] -[visit_exp `%`_u32{i#64236}(78)] -[visit_exp i#64236] -[visit_id i#64236] +[visit_exp `%`_u32(78)] [visit_exp (78)] [visit_exp 78] -[check_dims] i#64261 vectype#263 vvbinop#9 -dims \ = i#64261, vectype#263, vvbinop#9 -[visit_exp `VVBINOP`_instr{vectype#263, vvbinop#9}(`V128`_vectype, `ANDNOT`_vvbinop)] -[visit_exp vectype#263] -[visit_id vectype#263] -[visit_exp vvbinop#9] -[visit_id vvbinop#9] +[check_dims] +dims \ = +[visit_exp `VVBINOP`_instr(`V128`_vectype, `ANDNOT`_vvbinop)] [visit_exp (`V128`_vectype, `ANDNOT`_vvbinop)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp `ANDNOT`_vvbinop] [visit_exp ()] -[visit_exp `%`_u32{i#64261}(79)] -[visit_exp i#64261] -[visit_id i#64261] +[visit_exp `%`_u32(79)] [visit_exp (79)] [visit_exp 79] -[check_dims] i#64286 vectype#265 vvbinop#11 -dims \ = i#64286, vectype#265, vvbinop#11 -[visit_exp `VVBINOP`_instr{vectype#265, vvbinop#11}(`V128`_vectype, `OR`_vvbinop)] -[visit_exp vectype#265] -[visit_id vectype#265] -[visit_exp vvbinop#11] -[visit_id vvbinop#11] +[check_dims] +dims \ = +[visit_exp `VVBINOP`_instr(`V128`_vectype, `OR`_vvbinop)] [visit_exp (`V128`_vectype, `OR`_vvbinop)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp `OR`_vvbinop] [visit_exp ()] -[visit_exp `%`_u32{i#64286}(80)] -[visit_exp i#64286] -[visit_id i#64286] +[visit_exp `%`_u32(80)] [visit_exp (80)] [visit_exp 80] -[check_dims] i#64311 vectype#267 vvbinop#13 -dims \ = i#64311, vectype#267, vvbinop#13 -[visit_exp `VVBINOP`_instr{vectype#267, vvbinop#13}(`V128`_vectype, `XOR`_vvbinop)] -[visit_exp vectype#267] -[visit_id vectype#267] -[visit_exp vvbinop#13] -[visit_id vvbinop#13] +[check_dims] +dims \ = +[visit_exp `VVBINOP`_instr(`V128`_vectype, `XOR`_vvbinop)] [visit_exp (`V128`_vectype, `XOR`_vvbinop)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp `XOR`_vvbinop] [visit_exp ()] -[visit_exp `%`_u32{i#64311}(81)] -[visit_exp i#64311] -[visit_id i#64311] +[visit_exp `%`_u32(81)] [visit_exp (81)] [visit_exp 81] ps' = [check_dims] -[check_dims] i#64336 vectype#269 vvternop#7 -dims \ = i#64336, vectype#269, vvternop#7 -[visit_exp `VVTERNOP`_instr{vectype#269, vvternop#7}(`V128`_vectype, `BITSELECT`_vvternop)] -[visit_exp vectype#269] -[visit_id vectype#269] -[visit_exp vvternop#7] -[visit_id vvternop#7] +[check_dims] +dims \ = +[visit_exp `VVTERNOP`_instr(`V128`_vectype, `BITSELECT`_vvternop)] [visit_exp (`V128`_vectype, `BITSELECT`_vvternop)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp `BITSELECT`_vvternop] [visit_exp ()] -[visit_exp `%`_u32{i#64336}(82)] -[visit_exp i#64336] -[visit_id i#64336] +[visit_exp `%`_u32(82)] [visit_exp (82)] [visit_exp 82] ps' = [check_dims] -[check_dims] i#64361 vectype#271 vvtestop#7 -dims \ = i#64361, vectype#271, vvtestop#7 -[visit_exp `VVTESTOP`_instr{vectype#271, vvtestop#7}(`V128`_vectype, `ANY_TRUE`_vvtestop)] -[visit_exp vectype#271] -[visit_id vectype#271] -[visit_exp vvtestop#7] -[visit_id vvtestop#7] +[check_dims] +dims \ = +[visit_exp `VVTESTOP`_instr(`V128`_vectype, `ANY_TRUE`_vvtestop)] [visit_exp (`V128`_vectype, `ANY_TRUE`_vvtestop)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp `ANY_TRUE`_vvtestop] [visit_exp ()] -[visit_exp `%`_u32{i#64361}(83)] -[visit_exp i#64361] -[visit_id i#64361] +[visit_exp `%`_u32(83)] [visit_exp (83)] [visit_exp 83] ps' = [check_dims] -[check_dims] dim#9829 i#64386 i#64393 i#64400 lanetype#9829 shape#1036 -dims \ = dim#9829, i#64386, i#64393, i#64400, lanetype#9829, shape#1036 -[visit_exp `VUNOP`_instr{shape#1036}(`%X%`_shape{lanetype#9829, dim#9829, i#64393}(`I8`_lanetype, `%`_dim{i#64400}(16)), `ABS`_vunop_)] -[visit_exp shape#1036] -[visit_id shape#1036] -[visit_exp (`%X%`_shape{lanetype#9829, dim#9829, i#64393}(`I8`_lanetype, `%`_dim{i#64400}(16)), `ABS`_vunop_)] -[visit_exp `%X%`_shape{lanetype#9829, dim#9829, i#64393}(`I8`_lanetype, `%`_dim{i#64400}(16))] -[visit_exp lanetype#9829] -[visit_id lanetype#9829] -[visit_exp dim#9829] -[visit_id dim#9829] -[visit_exp i#64393] -[visit_id i#64393] -[visit_exp (`I8`_lanetype, `%`_dim{i#64400}(16))] +[check_dims] +dims \ = +[visit_exp `VUNOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `ABS`_vunop_)] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `ABS`_vunop_)] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#64400}(16)] -[visit_exp i#64400] -[visit_id i#64400] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] [visit_exp `ABS`_vunop_] [visit_exp ()] -[visit_exp `%`_u32{i#64386}(96)] -[visit_exp i#64386] -[visit_id i#64386] +[visit_exp `%`_u32(96)] [visit_exp (96)] [visit_exp 96] -[check_dims] dim#9856 i#64468 i#64475 i#64482 lanetype#9856 shape#1038 -dims \ = dim#9856, i#64468, i#64475, i#64482, lanetype#9856, shape#1038 -[visit_exp `VUNOP`_instr{shape#1038}(`%X%`_shape{lanetype#9856, dim#9856, i#64475}(`I8`_lanetype, `%`_dim{i#64482}(16)), `NEG`_vunop_)] -[visit_exp shape#1038] -[visit_id shape#1038] -[visit_exp (`%X%`_shape{lanetype#9856, dim#9856, i#64475}(`I8`_lanetype, `%`_dim{i#64482}(16)), `NEG`_vunop_)] -[visit_exp `%X%`_shape{lanetype#9856, dim#9856, i#64475}(`I8`_lanetype, `%`_dim{i#64482}(16))] -[visit_exp lanetype#9856] -[visit_id lanetype#9856] -[visit_exp dim#9856] -[visit_id dim#9856] -[visit_exp i#64475] -[visit_id i#64475] -[visit_exp (`I8`_lanetype, `%`_dim{i#64482}(16))] +[check_dims] +dims \ = +[visit_exp `VUNOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `NEG`_vunop_)] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `NEG`_vunop_)] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#64482}(16)] -[visit_exp i#64482] -[visit_id i#64482] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] [visit_exp `NEG`_vunop_] [visit_exp ()] -[visit_exp `%`_u32{i#64468}(97)] -[visit_exp i#64468] -[visit_id i#64468] +[visit_exp `%`_u32(97)] [visit_exp (97)] [visit_exp 97] -[check_dims] dim#9883 i#64550 i#64557 i#64564 lanetype#9883 shape#1040 -dims \ = dim#9883, i#64550, i#64557, i#64564, lanetype#9883, shape#1040 -[visit_exp `VUNOP`_instr{shape#1040}(`%X%`_shape{lanetype#9883, dim#9883, i#64557}(`I8`_lanetype, `%`_dim{i#64564}(16)), `POPCNT`_vunop_)] -[visit_exp shape#1040] -[visit_id shape#1040] -[visit_exp (`%X%`_shape{lanetype#9883, dim#9883, i#64557}(`I8`_lanetype, `%`_dim{i#64564}(16)), `POPCNT`_vunop_)] -[visit_exp `%X%`_shape{lanetype#9883, dim#9883, i#64557}(`I8`_lanetype, `%`_dim{i#64564}(16))] -[visit_exp lanetype#9883] -[visit_id lanetype#9883] -[visit_exp dim#9883] -[visit_id dim#9883] -[visit_exp i#64557] -[visit_id i#64557] -[visit_exp (`I8`_lanetype, `%`_dim{i#64564}(16))] +[check_dims] +dims \ = +[visit_exp `VUNOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `POPCNT`_vunop_)] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `POPCNT`_vunop_)] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#64564}(16)] -[visit_exp i#64564] -[visit_id i#64564] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] [visit_exp `POPCNT`_vunop_] [visit_exp ()] -[visit_exp `%`_u32{i#64550}(98)] -[visit_exp i#64550] -[visit_id i#64550] +[visit_exp `%`_u32(98)] [visit_exp (98)] [visit_exp 98] ps' = [check_dims] -[check_dims] dim#9910 i#64632 i#64639 i#64646 lanetype#9910 shape#1042 -dims \ = dim#9910, i#64632, i#64639, i#64646, lanetype#9910, shape#1042 -[visit_exp `VTESTOP`_instr{shape#1042}(`%X%`_shape{lanetype#9910, dim#9910, i#64639}(`I8`_lanetype, `%`_dim{i#64646}(16)), `ALL_TRUE`_vtestop_)] -[visit_exp shape#1042] -[visit_id shape#1042] -[visit_exp (`%X%`_shape{lanetype#9910, dim#9910, i#64639}(`I8`_lanetype, `%`_dim{i#64646}(16)), `ALL_TRUE`_vtestop_)] -[visit_exp `%X%`_shape{lanetype#9910, dim#9910, i#64639}(`I8`_lanetype, `%`_dim{i#64646}(16))] -[visit_exp lanetype#9910] -[visit_id lanetype#9910] -[visit_exp dim#9910] -[visit_id dim#9910] -[visit_exp i#64639] -[visit_id i#64639] -[visit_exp (`I8`_lanetype, `%`_dim{i#64646}(16))] +[check_dims] +dims \ = +[visit_exp `VTESTOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `ALL_TRUE`_vtestop_)] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `ALL_TRUE`_vtestop_)] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#64646}(16)] -[visit_exp i#64646] -[visit_id i#64646] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] [visit_exp `ALL_TRUE`_vtestop_] [visit_exp ()] -[visit_exp `%`_u32{i#64632}(99)] -[visit_exp i#64632] -[visit_id i#64632] +[visit_exp `%`_u32(99)] [visit_exp (99)] [visit_exp 99] ps' = [check_dims] -[check_dims] Jnn#228 dim#9937 i#64714 i#64721 i#64728 ishape#13 lanetype#9937 shape#1054 -dims \ = Jnn#228, dim#9937, i#64714, i#64721, i#64728, ishape#13, lanetype#9937, shape#1054 -[visit_exp `VBITMASK`_instr{ishape#13}(`%`_ishape{shape#1054, Jnn#228}(`%X%`_shape{lanetype#9937, dim#9937, i#64721}(`I8`_lanetype, `%`_dim{i#64728}(16))))] -[visit_exp ishape#13] -[visit_id ishape#13] -[visit_exp (`%`_ishape{shape#1054, Jnn#228}(`%X%`_shape{lanetype#9937, dim#9937, i#64721}(`I8`_lanetype, `%`_dim{i#64728}(16))))] -[visit_exp `%`_ishape{shape#1054, Jnn#228}(`%X%`_shape{lanetype#9937, dim#9937, i#64721}(`I8`_lanetype, `%`_dim{i#64728}(16)))] -[visit_exp shape#1054] -[visit_id shape#1054] -[visit_exp Jnn#228] -[visit_id Jnn#228] -[visit_exp (`%X%`_shape{lanetype#9937, dim#9937, i#64721}(`I8`_lanetype, `%`_dim{i#64728}(16)))] -[visit_exp `%X%`_shape{lanetype#9937, dim#9937, i#64721}(`I8`_lanetype, `%`_dim{i#64728}(16))] -[visit_exp lanetype#9937] -[visit_id lanetype#9937] -[visit_exp dim#9937] -[visit_id dim#9937] -[visit_exp i#64721] -[visit_id i#64721] -[visit_exp (`I8`_lanetype, `%`_dim{i#64728}(16))] +[check_dims] +dims \ = +[visit_exp `VBITMASK`_instr(`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))))] +[visit_exp (`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))))] +[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#64728}(16)] -[visit_exp i#64728] -[visit_id i#64728] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `%`_u32{i#64714}(100)] -[visit_exp i#64714] -[visit_id i#64714] +[visit_exp `%`_u32(100)] [visit_exp (100)] [visit_exp 100] ps' = [check_dims] -[check_dims] Jnn#229 Jnn#230 Jnn#231 Jnn#235 Jnn#239 dim#9949 dim#9961 i#64751 i#64758 i#64765 i#64770 i#64777 ishape_1#25 ishape_2#25 lanetype#9949 lanetype#9961 shape#1056 shape#1057 shape#1058 shape#1069 shape#1081 sx#9753 -dims \ = Jnn#229, Jnn#230, Jnn#231, Jnn#235, Jnn#239, dim#9949, dim#9961, i#64751, i#64758, i#64765, i#64770, i#64777, ishape_1#25, ishape_2#25, lanetype#9949, lanetype#9961, shape#1056, shape#1057, shape#1058, shape#1069, shape#1081, sx#9753 -[visit_exp `VNARROW`_instr{ishape_1#25, ishape_2#25, sx#9753, shape#1056, Jnn#229, shape#1057, Jnn#230, shape#1058, Jnn#231}(`%`_ishape{shape#1069, Jnn#235}(`%X%`_shape{lanetype#9949, dim#9949, i#64758}(`I8`_lanetype, `%`_dim{i#64765}(16))), `%`_ishape{shape#1081, Jnn#239}(`%X%`_shape{lanetype#9961, dim#9961, i#64770}(`I16`_lanetype, `%`_dim{i#64777}(8))), `S`_sx)] -[visit_exp ishape_1#25] -[visit_id ishape_1#25] -[visit_exp ishape_2#25] -[visit_id ishape_2#25] -[visit_exp sx#9753] -[visit_id sx#9753] -[visit_exp shape#1056] -[visit_id shape#1056] -[visit_exp Jnn#229] -[visit_id Jnn#229] -[visit_exp shape#1057] -[visit_id shape#1057] -[visit_exp Jnn#230] -[visit_id Jnn#230] -[visit_exp shape#1058] -[visit_id shape#1058] -[visit_exp Jnn#231] -[visit_id Jnn#231] -[visit_exp (`%`_ishape{shape#1069, Jnn#235}(`%X%`_shape{lanetype#9949, dim#9949, i#64758}(`I8`_lanetype, `%`_dim{i#64765}(16))), `%`_ishape{shape#1081, Jnn#239}(`%X%`_shape{lanetype#9961, dim#9961, i#64770}(`I16`_lanetype, `%`_dim{i#64777}(8))), `S`_sx)] -[visit_exp `%`_ishape{shape#1069, Jnn#235}(`%X%`_shape{lanetype#9949, dim#9949, i#64758}(`I8`_lanetype, `%`_dim{i#64765}(16)))] -[visit_exp shape#1069] -[visit_id shape#1069] -[visit_exp Jnn#235] -[visit_id Jnn#235] -[visit_exp (`%X%`_shape{lanetype#9949, dim#9949, i#64758}(`I8`_lanetype, `%`_dim{i#64765}(16)))] -[visit_exp `%X%`_shape{lanetype#9949, dim#9949, i#64758}(`I8`_lanetype, `%`_dim{i#64765}(16))] -[visit_exp lanetype#9949] -[visit_id lanetype#9949] -[visit_exp dim#9949] -[visit_id dim#9949] -[visit_exp i#64758] -[visit_id i#64758] -[visit_exp (`I8`_lanetype, `%`_dim{i#64765}(16))] +[check_dims] +dims \ = +[visit_exp `VNARROW`_instr(`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `S`_sx)] +[visit_exp (`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `S`_sx)] +[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#64765}(16)] -[visit_exp i#64765] -[visit_id i#64765] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `%`_ishape{shape#1081, Jnn#239}(`%X%`_shape{lanetype#9961, dim#9961, i#64770}(`I16`_lanetype, `%`_dim{i#64777}(8)))] -[visit_exp shape#1081] -[visit_id shape#1081] -[visit_exp Jnn#239] -[visit_id Jnn#239] -[visit_exp (`%X%`_shape{lanetype#9961, dim#9961, i#64770}(`I16`_lanetype, `%`_dim{i#64777}(8)))] -[visit_exp `%X%`_shape{lanetype#9961, dim#9961, i#64770}(`I16`_lanetype, `%`_dim{i#64777}(8))] -[visit_exp lanetype#9961] -[visit_id lanetype#9961] -[visit_exp dim#9961] -[visit_id dim#9961] -[visit_exp i#64770] -[visit_id i#64770] -[visit_exp (`I16`_lanetype, `%`_dim{i#64777}(8))] +[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#64777}(8)] -[visit_exp i#64777] -[visit_id i#64777] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#64751}(101)] -[visit_exp i#64751] -[visit_id i#64751] +[visit_exp `%`_u32(101)] [visit_exp (101)] [visit_exp 101] -[check_dims] Jnn#240 Jnn#241 Jnn#242 Jnn#246 Jnn#250 dim#9973 dim#9985 i#64800 i#64807 i#64814 i#64819 i#64826 ishape_1#27 ishape_2#27 lanetype#9973 lanetype#9985 shape#1083 shape#1084 shape#1085 shape#1096 shape#1108 sx#9755 -dims \ = Jnn#240, Jnn#241, Jnn#242, Jnn#246, Jnn#250, dim#9973, dim#9985, i#64800, i#64807, i#64814, i#64819, i#64826, ishape_1#27, ishape_2#27, lanetype#9973, lanetype#9985, shape#1083, shape#1084, shape#1085, shape#1096, shape#1108, sx#9755 -[visit_exp `VNARROW`_instr{ishape_1#27, ishape_2#27, sx#9755, shape#1083, Jnn#240, shape#1084, Jnn#241, shape#1085, Jnn#242}(`%`_ishape{shape#1096, Jnn#246}(`%X%`_shape{lanetype#9973, dim#9973, i#64807}(`I8`_lanetype, `%`_dim{i#64814}(16))), `%`_ishape{shape#1108, Jnn#250}(`%X%`_shape{lanetype#9985, dim#9985, i#64819}(`I16`_lanetype, `%`_dim{i#64826}(8))), `U`_sx)] -[visit_exp ishape_1#27] -[visit_id ishape_1#27] -[visit_exp ishape_2#27] -[visit_id ishape_2#27] -[visit_exp sx#9755] -[visit_id sx#9755] -[visit_exp shape#1083] -[visit_id shape#1083] -[visit_exp Jnn#240] -[visit_id Jnn#240] -[visit_exp shape#1084] -[visit_id shape#1084] -[visit_exp Jnn#241] -[visit_id Jnn#241] -[visit_exp shape#1085] -[visit_id shape#1085] -[visit_exp Jnn#242] -[visit_id Jnn#242] -[visit_exp (`%`_ishape{shape#1096, Jnn#246}(`%X%`_shape{lanetype#9973, dim#9973, i#64807}(`I8`_lanetype, `%`_dim{i#64814}(16))), `%`_ishape{shape#1108, Jnn#250}(`%X%`_shape{lanetype#9985, dim#9985, i#64819}(`I16`_lanetype, `%`_dim{i#64826}(8))), `U`_sx)] -[visit_exp `%`_ishape{shape#1096, Jnn#246}(`%X%`_shape{lanetype#9973, dim#9973, i#64807}(`I8`_lanetype, `%`_dim{i#64814}(16)))] -[visit_exp shape#1096] -[visit_id shape#1096] -[visit_exp Jnn#246] -[visit_id Jnn#246] -[visit_exp (`%X%`_shape{lanetype#9973, dim#9973, i#64807}(`I8`_lanetype, `%`_dim{i#64814}(16)))] -[visit_exp `%X%`_shape{lanetype#9973, dim#9973, i#64807}(`I8`_lanetype, `%`_dim{i#64814}(16))] -[visit_exp lanetype#9973] -[visit_id lanetype#9973] -[visit_exp dim#9973] -[visit_id dim#9973] -[visit_exp i#64807] -[visit_id i#64807] -[visit_exp (`I8`_lanetype, `%`_dim{i#64814}(16))] +[check_dims] +dims \ = +[visit_exp `VNARROW`_instr(`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `U`_sx)] +[visit_exp (`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `U`_sx)] +[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#64814}(16)] -[visit_exp i#64814] -[visit_id i#64814] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `%`_ishape{shape#1108, Jnn#250}(`%X%`_shape{lanetype#9985, dim#9985, i#64819}(`I16`_lanetype, `%`_dim{i#64826}(8)))] -[visit_exp shape#1108] -[visit_id shape#1108] -[visit_exp Jnn#250] -[visit_id Jnn#250] -[visit_exp (`%X%`_shape{lanetype#9985, dim#9985, i#64819}(`I16`_lanetype, `%`_dim{i#64826}(8)))] -[visit_exp `%X%`_shape{lanetype#9985, dim#9985, i#64819}(`I16`_lanetype, `%`_dim{i#64826}(8))] -[visit_exp lanetype#9985] -[visit_id lanetype#9985] -[visit_exp dim#9985] -[visit_id dim#9985] -[visit_exp i#64819] -[visit_id i#64819] -[visit_exp (`I16`_lanetype, `%`_dim{i#64826}(8))] +[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#64826}(8)] -[visit_exp i#64826] -[visit_id i#64826] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#64800}(102)] -[visit_exp i#64800] -[visit_id i#64800] +[visit_exp `%`_u32(102)] [visit_exp (102)] [visit_exp 102] ps' = [check_dims] -[check_dims] Jnn#254 dim#9997 i#64849 i#64856 i#64863 ishape#15 lanetype#9997 shape#1120 -dims \ = Jnn#254, dim#9997, i#64849, i#64856, i#64863, ishape#15, lanetype#9997, shape#1120 -[visit_exp `VSHIFTOP`_instr{ishape#15}(`%`_ishape{shape#1120, Jnn#254}(`%X%`_shape{lanetype#9997, dim#9997, i#64856}(`I8`_lanetype, `%`_dim{i#64863}(16))), `SHL`_vshiftop_)] -[visit_exp ishape#15] -[visit_id ishape#15] -[visit_exp (`%`_ishape{shape#1120, Jnn#254}(`%X%`_shape{lanetype#9997, dim#9997, i#64856}(`I8`_lanetype, `%`_dim{i#64863}(16))), `SHL`_vshiftop_)] -[visit_exp `%`_ishape{shape#1120, Jnn#254}(`%X%`_shape{lanetype#9997, dim#9997, i#64856}(`I8`_lanetype, `%`_dim{i#64863}(16)))] -[visit_exp shape#1120] -[visit_id shape#1120] -[visit_exp Jnn#254] -[visit_id Jnn#254] -[visit_exp (`%X%`_shape{lanetype#9997, dim#9997, i#64856}(`I8`_lanetype, `%`_dim{i#64863}(16)))] -[visit_exp `%X%`_shape{lanetype#9997, dim#9997, i#64856}(`I8`_lanetype, `%`_dim{i#64863}(16))] -[visit_exp lanetype#9997] -[visit_id lanetype#9997] -[visit_exp dim#9997] -[visit_id dim#9997] -[visit_exp i#64856] -[visit_id i#64856] -[visit_exp (`I8`_lanetype, `%`_dim{i#64863}(16))] +[check_dims] +dims \ = +[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `SHL`_vshiftop_)] +[visit_exp (`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `SHL`_vshiftop_)] +[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#64863}(16)] -[visit_exp i#64863] -[visit_id i#64863] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] [visit_exp `SHL`_vshiftop_] [visit_exp ()] -[visit_exp `%`_u32{i#64849}(107)] -[visit_exp i#64849] -[visit_id i#64849] +[visit_exp `%`_u32(107)] [visit_exp (107)] [visit_exp 107] -[check_dims] Jnn#258 dim#10054 i#64961 i#64968 i#64975 ishape#17 lanetype#10054 shape#1147 sx#9804 -dims \ = Jnn#258, dim#10054, i#64961, i#64968, i#64975, ishape#17, lanetype#10054, shape#1147, sx#9804 -[visit_exp `VSHIFTOP`_instr{ishape#17}(`%`_ishape{shape#1147, Jnn#258}(`%X%`_shape{lanetype#10054, dim#10054, i#64968}(`I8`_lanetype, `%`_dim{i#64975}(16))), `SHR`_vshiftop_{sx#9804}(`S`_sx))] -[visit_exp ishape#17] -[visit_id ishape#17] -[visit_exp (`%`_ishape{shape#1147, Jnn#258}(`%X%`_shape{lanetype#10054, dim#10054, i#64968}(`I8`_lanetype, `%`_dim{i#64975}(16))), `SHR`_vshiftop_{sx#9804}(`S`_sx))] -[visit_exp `%`_ishape{shape#1147, Jnn#258}(`%X%`_shape{lanetype#10054, dim#10054, i#64968}(`I8`_lanetype, `%`_dim{i#64975}(16)))] -[visit_exp shape#1147] -[visit_id shape#1147] -[visit_exp Jnn#258] -[visit_id Jnn#258] -[visit_exp (`%X%`_shape{lanetype#10054, dim#10054, i#64968}(`I8`_lanetype, `%`_dim{i#64975}(16)))] -[visit_exp `%X%`_shape{lanetype#10054, dim#10054, i#64968}(`I8`_lanetype, `%`_dim{i#64975}(16))] -[visit_exp lanetype#10054] -[visit_id lanetype#10054] -[visit_exp dim#10054] -[visit_id dim#10054] -[visit_exp i#64968] -[visit_id i#64968] -[visit_exp (`I8`_lanetype, `%`_dim{i#64975}(16))] +[check_dims] +dims \ = +[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `SHR`_vshiftop_(`S`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `SHR`_vshiftop_(`S`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#64975}(16)] -[visit_exp i#64975] -[visit_id i#64975] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `SHR`_vshiftop_{sx#9804}(`S`_sx)] -[visit_exp sx#9804] -[visit_id sx#9804] +[visit_exp `SHR`_vshiftop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#64961}(108)] -[visit_exp i#64961] -[visit_id i#64961] +[visit_exp `%`_u32(108)] [visit_exp (108)] [visit_exp 108] -[check_dims] Jnn#262 dim#10156 i#65148 i#65155 i#65162 ishape#19 lanetype#10156 shape#1189 sx#9838 -dims \ = Jnn#262, dim#10156, i#65148, i#65155, i#65162, ishape#19, lanetype#10156, shape#1189, sx#9838 -[visit_exp `VSHIFTOP`_instr{ishape#19}(`%`_ishape{shape#1189, Jnn#262}(`%X%`_shape{lanetype#10156, dim#10156, i#65155}(`I8`_lanetype, `%`_dim{i#65162}(16))), `SHR`_vshiftop_{sx#9838}(`U`_sx))] -[visit_exp ishape#19] -[visit_id ishape#19] -[visit_exp (`%`_ishape{shape#1189, Jnn#262}(`%X%`_shape{lanetype#10156, dim#10156, i#65155}(`I8`_lanetype, `%`_dim{i#65162}(16))), `SHR`_vshiftop_{sx#9838}(`U`_sx))] -[visit_exp `%`_ishape{shape#1189, Jnn#262}(`%X%`_shape{lanetype#10156, dim#10156, i#65155}(`I8`_lanetype, `%`_dim{i#65162}(16)))] -[visit_exp shape#1189] -[visit_id shape#1189] -[visit_exp Jnn#262] -[visit_id Jnn#262] -[visit_exp (`%X%`_shape{lanetype#10156, dim#10156, i#65155}(`I8`_lanetype, `%`_dim{i#65162}(16)))] -[visit_exp `%X%`_shape{lanetype#10156, dim#10156, i#65155}(`I8`_lanetype, `%`_dim{i#65162}(16))] -[visit_exp lanetype#10156] -[visit_id lanetype#10156] -[visit_exp dim#10156] -[visit_id dim#10156] -[visit_exp i#65155] -[visit_id i#65155] -[visit_exp (`I8`_lanetype, `%`_dim{i#65162}(16))] +[check_dims] +dims \ = +[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `SHR`_vshiftop_(`U`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `SHR`_vshiftop_(`U`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#65162}(16)] -[visit_exp i#65162] -[visit_id i#65162] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `SHR`_vshiftop_{sx#9838}(`U`_sx)] -[visit_exp sx#9838] -[visit_id sx#9838] +[visit_exp `SHR`_vshiftop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#65148}(109)] -[visit_exp i#65148] -[visit_id i#65148] +[visit_exp `%`_u32(109)] [visit_exp (109)] [visit_exp 109] ps' = [check_dims] -[check_dims] dim#10258 i#65335 i#65342 i#65349 lanetype#10258 shape#1221 -dims \ = dim#10258, i#65335, i#65342, i#65349, lanetype#10258, shape#1221 -[visit_exp `VBINOP`_instr{shape#1221}(`%X%`_shape{lanetype#10258, dim#10258, i#65342}(`I8`_lanetype, `%`_dim{i#65349}(16)), `ADD`_vbinop_)] -[visit_exp shape#1221] -[visit_id shape#1221] -[visit_exp (`%X%`_shape{lanetype#10258, dim#10258, i#65342}(`I8`_lanetype, `%`_dim{i#65349}(16)), `ADD`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#10258, dim#10258, i#65342}(`I8`_lanetype, `%`_dim{i#65349}(16))] -[visit_exp lanetype#10258] -[visit_id lanetype#10258] -[visit_exp dim#10258] -[visit_id dim#10258] -[visit_exp i#65342] -[visit_id i#65342] -[visit_exp (`I8`_lanetype, `%`_dim{i#65349}(16))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `ADD`_vbinop_)] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `ADD`_vbinop_)] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#65349}(16)] -[visit_exp i#65349] -[visit_id i#65349] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] [visit_exp `ADD`_vbinop_] [visit_exp ()] -[visit_exp `%`_u32{i#65335}(110)] -[visit_exp i#65335] -[visit_id i#65335] +[visit_exp `%`_u32(110)] [visit_exp (110)] [visit_exp 110] -[check_dims] dim#10285 i#65417 i#65424 i#65431 lanetype#10285 shape#1223 sx#10022 -dims \ = dim#10285, i#65417, i#65424, i#65431, lanetype#10285, shape#1223, sx#10022 -[visit_exp `VBINOP`_instr{shape#1223}(`%X%`_shape{lanetype#10285, dim#10285, i#65424}(`I8`_lanetype, `%`_dim{i#65431}(16)), `ADD_SAT`_vbinop_{sx#10022}(`S`_sx))] -[visit_exp shape#1223] -[visit_id shape#1223] -[visit_exp (`%X%`_shape{lanetype#10285, dim#10285, i#65424}(`I8`_lanetype, `%`_dim{i#65431}(16)), `ADD_SAT`_vbinop_{sx#10022}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#10285, dim#10285, i#65424}(`I8`_lanetype, `%`_dim{i#65431}(16))] -[visit_exp lanetype#10285] -[visit_id lanetype#10285] -[visit_exp dim#10285] -[visit_id dim#10285] -[visit_exp i#65424] -[visit_id i#65424] -[visit_exp (`I8`_lanetype, `%`_dim{i#65431}(16))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `ADD_SAT`_vbinop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `ADD_SAT`_vbinop_(`S`_sx))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#65431}(16)] -[visit_exp i#65431] -[visit_id i#65431] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `ADD_SAT`_vbinop_{sx#10022}(`S`_sx)] -[visit_exp sx#10022] -[visit_id sx#10022] +[visit_exp `ADD_SAT`_vbinop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#65417}(111)] -[visit_exp i#65417] -[visit_id i#65417] +[visit_exp `%`_u32(111)] [visit_exp (111)] [visit_exp 111] -[check_dims] dim#10327 i#65544 i#65551 i#65558 lanetype#10327 shape#1225 sx#10146 -dims \ = dim#10327, i#65544, i#65551, i#65558, lanetype#10327, shape#1225, sx#10146 -[visit_exp `VBINOP`_instr{shape#1225}(`%X%`_shape{lanetype#10327, dim#10327, i#65551}(`I8`_lanetype, `%`_dim{i#65558}(16)), `ADD_SAT`_vbinop_{sx#10146}(`U`_sx))] -[visit_exp shape#1225] -[visit_id shape#1225] -[visit_exp (`%X%`_shape{lanetype#10327, dim#10327, i#65551}(`I8`_lanetype, `%`_dim{i#65558}(16)), `ADD_SAT`_vbinop_{sx#10146}(`U`_sx))] -[visit_exp `%X%`_shape{lanetype#10327, dim#10327, i#65551}(`I8`_lanetype, `%`_dim{i#65558}(16))] -[visit_exp lanetype#10327] -[visit_id lanetype#10327] -[visit_exp dim#10327] -[visit_id dim#10327] -[visit_exp i#65551] -[visit_id i#65551] -[visit_exp (`I8`_lanetype, `%`_dim{i#65558}(16))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `ADD_SAT`_vbinop_(`U`_sx))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `ADD_SAT`_vbinop_(`U`_sx))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#65558}(16)] -[visit_exp i#65558] -[visit_id i#65558] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `ADD_SAT`_vbinop_{sx#10146}(`U`_sx)] -[visit_exp sx#10146] -[visit_id sx#10146] +[visit_exp `ADD_SAT`_vbinop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#65544}(112)] -[visit_exp i#65544] -[visit_id i#65544] +[visit_exp `%`_u32(112)] [visit_exp (112)] [visit_exp 112] -[check_dims] dim#10369 i#65671 i#65678 i#65685 lanetype#10369 shape#1227 -dims \ = dim#10369, i#65671, i#65678, i#65685, lanetype#10369, shape#1227 -[visit_exp `VBINOP`_instr{shape#1227}(`%X%`_shape{lanetype#10369, dim#10369, i#65678}(`I8`_lanetype, `%`_dim{i#65685}(16)), `SUB`_vbinop_)] -[visit_exp shape#1227] -[visit_id shape#1227] -[visit_exp (`%X%`_shape{lanetype#10369, dim#10369, i#65678}(`I8`_lanetype, `%`_dim{i#65685}(16)), `SUB`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#10369, dim#10369, i#65678}(`I8`_lanetype, `%`_dim{i#65685}(16))] -[visit_exp lanetype#10369] -[visit_id lanetype#10369] -[visit_exp dim#10369] -[visit_id dim#10369] -[visit_exp i#65678] -[visit_id i#65678] -[visit_exp (`I8`_lanetype, `%`_dim{i#65685}(16))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `SUB`_vbinop_)] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `SUB`_vbinop_)] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#65685}(16)] -[visit_exp i#65685] -[visit_id i#65685] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] [visit_exp `SUB`_vbinop_] [visit_exp ()] -[visit_exp `%`_u32{i#65671}(113)] -[visit_exp i#65671] -[visit_id i#65671] +[visit_exp `%`_u32(113)] [visit_exp (113)] [visit_exp 113] -[check_dims] dim#10396 i#65753 i#65760 i#65767 lanetype#10396 shape#1229 sx#10330 -dims \ = dim#10396, i#65753, i#65760, i#65767, lanetype#10396, shape#1229, sx#10330 -[visit_exp `VBINOP`_instr{shape#1229}(`%X%`_shape{lanetype#10396, dim#10396, i#65760}(`I8`_lanetype, `%`_dim{i#65767}(16)), `SUB_SAT`_vbinop_{sx#10330}(`S`_sx))] -[visit_exp shape#1229] -[visit_id shape#1229] -[visit_exp (`%X%`_shape{lanetype#10396, dim#10396, i#65760}(`I8`_lanetype, `%`_dim{i#65767}(16)), `SUB_SAT`_vbinop_{sx#10330}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#10396, dim#10396, i#65760}(`I8`_lanetype, `%`_dim{i#65767}(16))] -[visit_exp lanetype#10396] -[visit_id lanetype#10396] -[visit_exp dim#10396] -[visit_id dim#10396] -[visit_exp i#65760] -[visit_id i#65760] -[visit_exp (`I8`_lanetype, `%`_dim{i#65767}(16))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `SUB_SAT`_vbinop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `SUB_SAT`_vbinop_(`S`_sx))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#65767}(16)] -[visit_exp i#65767] -[visit_id i#65767] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `SUB_SAT`_vbinop_{sx#10330}(`S`_sx)] -[visit_exp sx#10330] -[visit_id sx#10330] +[visit_exp `SUB_SAT`_vbinop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#65753}(114)] -[visit_exp i#65753] -[visit_id i#65753] +[visit_exp `%`_u32(114)] [visit_exp (114)] [visit_exp 114] -[check_dims] dim#10438 i#65880 i#65887 i#65894 lanetype#10438 shape#1231 sx#10454 -dims \ = dim#10438, i#65880, i#65887, i#65894, lanetype#10438, shape#1231, sx#10454 -[visit_exp `VBINOP`_instr{shape#1231}(`%X%`_shape{lanetype#10438, dim#10438, i#65887}(`I8`_lanetype, `%`_dim{i#65894}(16)), `SUB_SAT`_vbinop_{sx#10454}(`U`_sx))] -[visit_exp shape#1231] -[visit_id shape#1231] -[visit_exp (`%X%`_shape{lanetype#10438, dim#10438, i#65887}(`I8`_lanetype, `%`_dim{i#65894}(16)), `SUB_SAT`_vbinop_{sx#10454}(`U`_sx))] -[visit_exp `%X%`_shape{lanetype#10438, dim#10438, i#65887}(`I8`_lanetype, `%`_dim{i#65894}(16))] -[visit_exp lanetype#10438] -[visit_id lanetype#10438] -[visit_exp dim#10438] -[visit_id dim#10438] -[visit_exp i#65887] -[visit_id i#65887] -[visit_exp (`I8`_lanetype, `%`_dim{i#65894}(16))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `SUB_SAT`_vbinop_(`U`_sx))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `SUB_SAT`_vbinop_(`U`_sx))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#65894}(16)] -[visit_exp i#65894] -[visit_id i#65894] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `SUB_SAT`_vbinop_{sx#10454}(`U`_sx)] -[visit_exp sx#10454] -[visit_id sx#10454] +[visit_exp `SUB_SAT`_vbinop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#65880}(115)] -[visit_exp i#65880] -[visit_id i#65880] +[visit_exp `%`_u32(115)] [visit_exp (115)] [visit_exp 115] -[check_dims] dim#10480 i#66007 i#66014 i#66021 lanetype#10480 shape#1233 sx#10578 -dims \ = dim#10480, i#66007, i#66014, i#66021, lanetype#10480, shape#1233, sx#10578 -[visit_exp `VBINOP`_instr{shape#1233}(`%X%`_shape{lanetype#10480, dim#10480, i#66014}(`I8`_lanetype, `%`_dim{i#66021}(16)), `MIN`_vbinop_{sx#10578}(`S`_sx))] -[visit_exp shape#1233] -[visit_id shape#1233] -[visit_exp (`%X%`_shape{lanetype#10480, dim#10480, i#66014}(`I8`_lanetype, `%`_dim{i#66021}(16)), `MIN`_vbinop_{sx#10578}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#10480, dim#10480, i#66014}(`I8`_lanetype, `%`_dim{i#66021}(16))] -[visit_exp lanetype#10480] -[visit_id lanetype#10480] -[visit_exp dim#10480] -[visit_id dim#10480] -[visit_exp i#66014] -[visit_id i#66014] -[visit_exp (`I8`_lanetype, `%`_dim{i#66021}(16))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `MIN`_vbinop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `MIN`_vbinop_(`S`_sx))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#66021}(16)] -[visit_exp i#66021] -[visit_id i#66021] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `MIN`_vbinop_{sx#10578}(`S`_sx)] -[visit_exp sx#10578] -[visit_id sx#10578] +[visit_exp `MIN`_vbinop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#66007}(118)] -[visit_exp i#66007] -[visit_id i#66007] +[visit_exp `%`_u32(118)] [visit_exp (118)] [visit_exp 118] -[check_dims] dim#10522 i#66134 i#66141 i#66148 lanetype#10522 shape#1235 sx#10702 -dims \ = dim#10522, i#66134, i#66141, i#66148, lanetype#10522, shape#1235, sx#10702 -[visit_exp `VBINOP`_instr{shape#1235}(`%X%`_shape{lanetype#10522, dim#10522, i#66141}(`I8`_lanetype, `%`_dim{i#66148}(16)), `MIN`_vbinop_{sx#10702}(`U`_sx))] -[visit_exp shape#1235] -[visit_id shape#1235] -[visit_exp (`%X%`_shape{lanetype#10522, dim#10522, i#66141}(`I8`_lanetype, `%`_dim{i#66148}(16)), `MIN`_vbinop_{sx#10702}(`U`_sx))] -[visit_exp `%X%`_shape{lanetype#10522, dim#10522, i#66141}(`I8`_lanetype, `%`_dim{i#66148}(16))] -[visit_exp lanetype#10522] -[visit_id lanetype#10522] -[visit_exp dim#10522] -[visit_id dim#10522] -[visit_exp i#66141] -[visit_id i#66141] -[visit_exp (`I8`_lanetype, `%`_dim{i#66148}(16))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `MIN`_vbinop_(`U`_sx))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `MIN`_vbinop_(`U`_sx))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#66148}(16)] -[visit_exp i#66148] -[visit_id i#66148] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `MIN`_vbinop_{sx#10702}(`U`_sx)] -[visit_exp sx#10702] -[visit_id sx#10702] +[visit_exp `MIN`_vbinop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#66134}(119)] -[visit_exp i#66134] -[visit_id i#66134] +[visit_exp `%`_u32(119)] [visit_exp (119)] [visit_exp 119] -[check_dims] dim#10564 i#66261 i#66268 i#66275 lanetype#10564 shape#1237 sx#10826 -dims \ = dim#10564, i#66261, i#66268, i#66275, lanetype#10564, shape#1237, sx#10826 -[visit_exp `VBINOP`_instr{shape#1237}(`%X%`_shape{lanetype#10564, dim#10564, i#66268}(`I8`_lanetype, `%`_dim{i#66275}(16)), `MAX`_vbinop_{sx#10826}(`S`_sx))] -[visit_exp shape#1237] -[visit_id shape#1237] -[visit_exp (`%X%`_shape{lanetype#10564, dim#10564, i#66268}(`I8`_lanetype, `%`_dim{i#66275}(16)), `MAX`_vbinop_{sx#10826}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#10564, dim#10564, i#66268}(`I8`_lanetype, `%`_dim{i#66275}(16))] -[visit_exp lanetype#10564] -[visit_id lanetype#10564] -[visit_exp dim#10564] -[visit_id dim#10564] -[visit_exp i#66268] -[visit_id i#66268] -[visit_exp (`I8`_lanetype, `%`_dim{i#66275}(16))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `MAX`_vbinop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `MAX`_vbinop_(`S`_sx))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#66275}(16)] -[visit_exp i#66275] -[visit_id i#66275] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `MAX`_vbinop_{sx#10826}(`S`_sx)] -[visit_exp sx#10826] -[visit_id sx#10826] +[visit_exp `MAX`_vbinop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#66261}(120)] -[visit_exp i#66261] -[visit_id i#66261] +[visit_exp `%`_u32(120)] [visit_exp (120)] [visit_exp 120] -[check_dims] dim#10606 i#66388 i#66395 i#66402 lanetype#10606 shape#1239 sx#10950 -dims \ = dim#10606, i#66388, i#66395, i#66402, lanetype#10606, shape#1239, sx#10950 -[visit_exp `VBINOP`_instr{shape#1239}(`%X%`_shape{lanetype#10606, dim#10606, i#66395}(`I8`_lanetype, `%`_dim{i#66402}(16)), `MAX`_vbinop_{sx#10950}(`U`_sx))] -[visit_exp shape#1239] -[visit_id shape#1239] -[visit_exp (`%X%`_shape{lanetype#10606, dim#10606, i#66395}(`I8`_lanetype, `%`_dim{i#66402}(16)), `MAX`_vbinop_{sx#10950}(`U`_sx))] -[visit_exp `%X%`_shape{lanetype#10606, dim#10606, i#66395}(`I8`_lanetype, `%`_dim{i#66402}(16))] -[visit_exp lanetype#10606] -[visit_id lanetype#10606] -[visit_exp dim#10606] -[visit_id dim#10606] -[visit_exp i#66395] -[visit_id i#66395] -[visit_exp (`I8`_lanetype, `%`_dim{i#66402}(16))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `MAX`_vbinop_(`U`_sx))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `MAX`_vbinop_(`U`_sx))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#66402}(16)] -[visit_exp i#66402] -[visit_id i#66402] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `MAX`_vbinop_{sx#10950}(`U`_sx)] -[visit_exp sx#10950] -[visit_id sx#10950] +[visit_exp `MAX`_vbinop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#66388}(121)] -[visit_exp i#66388] -[visit_id i#66388] +[visit_exp `%`_u32(121)] [visit_exp (121)] [visit_exp 121] -[check_dims] dim#10648 i#66515 i#66522 i#66529 lanetype#10648 shape#1241 -dims \ = dim#10648, i#66515, i#66522, i#66529, lanetype#10648, shape#1241 -[visit_exp `VBINOP`_instr{shape#1241}(`%X%`_shape{lanetype#10648, dim#10648, i#66522}(`I8`_lanetype, `%`_dim{i#66529}(16)), `AVGRU`_vbinop_)] -[visit_exp shape#1241] -[visit_id shape#1241] -[visit_exp (`%X%`_shape{lanetype#10648, dim#10648, i#66522}(`I8`_lanetype, `%`_dim{i#66529}(16)), `AVGRU`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#10648, dim#10648, i#66522}(`I8`_lanetype, `%`_dim{i#66529}(16))] -[visit_exp lanetype#10648] -[visit_id lanetype#10648] -[visit_exp dim#10648] -[visit_id dim#10648] -[visit_exp i#66522] -[visit_id i#66522] -[visit_exp (`I8`_lanetype, `%`_dim{i#66529}(16))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `AVGRU`_vbinop_)] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `AVGRU`_vbinop_)] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#66529}(16)] -[visit_exp i#66529] -[visit_id i#66529] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] [visit_exp `AVGRU`_vbinop_] [visit_exp ()] -[visit_exp `%`_u32{i#66515}(123)] -[visit_exp i#66515] -[visit_id i#66515] +[visit_exp `%`_u32(123)] [visit_exp (123)] [visit_exp 123] ps' = [check_dims] -[check_dims] Jnn#266 Jnn#270 dim#10690 dim#10702 i#66642 i#66649 i#66656 i#66661 i#66668 ishape_1#29 ishape_2#29 lanetype#10690 lanetype#10702 shape#1253 shape#1265 sx#11104 -dims \ = Jnn#266, Jnn#270, dim#10690, dim#10702, i#66642, i#66649, i#66656, i#66661, i#66668, ishape_1#29, ishape_2#29, lanetype#10690, lanetype#10702, shape#1253, shape#1265, sx#11104 -[visit_exp `VEXTUNOP`_instr{ishape_1#29, ishape_2#29}(`%`_ishape{shape#1253, Jnn#266}(`%X%`_shape{lanetype#10690, dim#10690, i#66649}(`I16`_lanetype, `%`_dim{i#66656}(8))), `%`_ishape{shape#1265, Jnn#270}(`%X%`_shape{lanetype#10702, dim#10702, i#66661}(`I8`_lanetype, `%`_dim{i#66668}(16))), `EXTADD_PAIRWISE`_vextunop__{sx#11104}(`S`_sx))] -[visit_exp ishape_1#29] -[visit_id ishape_1#29] -[visit_exp ishape_2#29] -[visit_id ishape_2#29] -[visit_exp (`%`_ishape{shape#1253, Jnn#266}(`%X%`_shape{lanetype#10690, dim#10690, i#66649}(`I16`_lanetype, `%`_dim{i#66656}(8))), `%`_ishape{shape#1265, Jnn#270}(`%X%`_shape{lanetype#10702, dim#10702, i#66661}(`I8`_lanetype, `%`_dim{i#66668}(16))), `EXTADD_PAIRWISE`_vextunop__{sx#11104}(`S`_sx))] -[visit_exp `%`_ishape{shape#1253, Jnn#266}(`%X%`_shape{lanetype#10690, dim#10690, i#66649}(`I16`_lanetype, `%`_dim{i#66656}(8)))] -[visit_exp shape#1253] -[visit_id shape#1253] -[visit_exp Jnn#266] -[visit_id Jnn#266] -[visit_exp (`%X%`_shape{lanetype#10690, dim#10690, i#66649}(`I16`_lanetype, `%`_dim{i#66656}(8)))] -[visit_exp `%X%`_shape{lanetype#10690, dim#10690, i#66649}(`I16`_lanetype, `%`_dim{i#66656}(8))] -[visit_exp lanetype#10690] -[visit_id lanetype#10690] -[visit_exp dim#10690] -[visit_id dim#10690] -[visit_exp i#66649] -[visit_id i#66649] -[visit_exp (`I16`_lanetype, `%`_dim{i#66656}(8))] +[check_dims] +dims \ = +[visit_exp `VEXTUNOP`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTADD_PAIRWISE`_vextunop__(`S`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTADD_PAIRWISE`_vextunop__(`S`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#66656}(8)] -[visit_exp i#66656] -[visit_id i#66656] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `%`_ishape{shape#1265, Jnn#270}(`%X%`_shape{lanetype#10702, dim#10702, i#66661}(`I8`_lanetype, `%`_dim{i#66668}(16)))] -[visit_exp shape#1265] -[visit_id shape#1265] -[visit_exp Jnn#270] -[visit_id Jnn#270] -[visit_exp (`%X%`_shape{lanetype#10702, dim#10702, i#66661}(`I8`_lanetype, `%`_dim{i#66668}(16)))] -[visit_exp `%X%`_shape{lanetype#10702, dim#10702, i#66661}(`I8`_lanetype, `%`_dim{i#66668}(16))] -[visit_exp lanetype#10702] -[visit_id lanetype#10702] -[visit_exp dim#10702] -[visit_id dim#10702] -[visit_exp i#66661] -[visit_id i#66661] -[visit_exp (`I8`_lanetype, `%`_dim{i#66668}(16))] +[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#66668}(16)] -[visit_exp i#66668] -[visit_id i#66668] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `EXTADD_PAIRWISE`_vextunop__{sx#11104}(`S`_sx)] -[visit_exp sx#11104] -[visit_id sx#11104] +[visit_exp `EXTADD_PAIRWISE`_vextunop__(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#66642}(124)] -[visit_exp i#66642] -[visit_id i#66642] +[visit_exp `%`_u32(124)] [visit_exp (124)] [visit_exp 124] -[check_dims] Jnn#274 Jnn#278 dim#10925 dim#10937 i#67022 i#67029 i#67036 i#67041 i#67048 ishape_1#31 ishape_2#31 lanetype#10925 lanetype#10937 shape#1368 shape#1380 sx#11138 -dims \ = Jnn#274, Jnn#278, dim#10925, dim#10937, i#67022, i#67029, i#67036, i#67041, i#67048, ishape_1#31, ishape_2#31, lanetype#10925, lanetype#10937, shape#1368, shape#1380, sx#11138 -[visit_exp `VEXTUNOP`_instr{ishape_1#31, ishape_2#31}(`%`_ishape{shape#1368, Jnn#274}(`%X%`_shape{lanetype#10925, dim#10925, i#67029}(`I16`_lanetype, `%`_dim{i#67036}(8))), `%`_ishape{shape#1380, Jnn#278}(`%X%`_shape{lanetype#10937, dim#10937, i#67041}(`I8`_lanetype, `%`_dim{i#67048}(16))), `EXTADD_PAIRWISE`_vextunop__{sx#11138}(`U`_sx))] -[visit_exp ishape_1#31] -[visit_id ishape_1#31] -[visit_exp ishape_2#31] -[visit_id ishape_2#31] -[visit_exp (`%`_ishape{shape#1368, Jnn#274}(`%X%`_shape{lanetype#10925, dim#10925, i#67029}(`I16`_lanetype, `%`_dim{i#67036}(8))), `%`_ishape{shape#1380, Jnn#278}(`%X%`_shape{lanetype#10937, dim#10937, i#67041}(`I8`_lanetype, `%`_dim{i#67048}(16))), `EXTADD_PAIRWISE`_vextunop__{sx#11138}(`U`_sx))] -[visit_exp `%`_ishape{shape#1368, Jnn#274}(`%X%`_shape{lanetype#10925, dim#10925, i#67029}(`I16`_lanetype, `%`_dim{i#67036}(8)))] -[visit_exp shape#1368] -[visit_id shape#1368] -[visit_exp Jnn#274] -[visit_id Jnn#274] -[visit_exp (`%X%`_shape{lanetype#10925, dim#10925, i#67029}(`I16`_lanetype, `%`_dim{i#67036}(8)))] -[visit_exp `%X%`_shape{lanetype#10925, dim#10925, i#67029}(`I16`_lanetype, `%`_dim{i#67036}(8))] -[visit_exp lanetype#10925] -[visit_id lanetype#10925] -[visit_exp dim#10925] -[visit_id dim#10925] -[visit_exp i#67029] -[visit_id i#67029] -[visit_exp (`I16`_lanetype, `%`_dim{i#67036}(8))] +[check_dims] +dims \ = +[visit_exp `VEXTUNOP`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTADD_PAIRWISE`_vextunop__(`U`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTADD_PAIRWISE`_vextunop__(`U`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#67036}(8)] -[visit_exp i#67036] -[visit_id i#67036] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `%`_ishape{shape#1380, Jnn#278}(`%X%`_shape{lanetype#10937, dim#10937, i#67041}(`I8`_lanetype, `%`_dim{i#67048}(16)))] -[visit_exp shape#1380] -[visit_id shape#1380] -[visit_exp Jnn#278] -[visit_id Jnn#278] -[visit_exp (`%X%`_shape{lanetype#10937, dim#10937, i#67041}(`I8`_lanetype, `%`_dim{i#67048}(16)))] -[visit_exp `%X%`_shape{lanetype#10937, dim#10937, i#67041}(`I8`_lanetype, `%`_dim{i#67048}(16))] -[visit_exp lanetype#10937] -[visit_id lanetype#10937] -[visit_exp dim#10937] -[visit_id dim#10937] -[visit_exp i#67041] -[visit_id i#67041] -[visit_exp (`I8`_lanetype, `%`_dim{i#67048}(16))] +[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#67048}(16)] -[visit_exp i#67048] -[visit_id i#67048] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `EXTADD_PAIRWISE`_vextunop__{sx#11138}(`U`_sx)] -[visit_exp sx#11138] -[visit_id sx#11138] +[visit_exp `EXTADD_PAIRWISE`_vextunop__(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#67022}(125)] -[visit_exp i#67022] -[visit_id i#67022] +[visit_exp `%`_u32(125)] [visit_exp (125)] [visit_exp 125] ps' = [check_dims] -[check_dims] dim#11160 i#67402 i#67409 i#67416 lanetype#11160 shape#1473 -dims \ = dim#11160, i#67402, i#67409, i#67416, lanetype#11160, shape#1473 -[visit_exp `VUNOP`_instr{shape#1473}(`%X%`_shape{lanetype#11160, dim#11160, i#67409}(`I16`_lanetype, `%`_dim{i#67416}(8)), `ABS`_vunop_)] -[visit_exp shape#1473] -[visit_id shape#1473] -[visit_exp (`%X%`_shape{lanetype#11160, dim#11160, i#67409}(`I16`_lanetype, `%`_dim{i#67416}(8)), `ABS`_vunop_)] -[visit_exp `%X%`_shape{lanetype#11160, dim#11160, i#67409}(`I16`_lanetype, `%`_dim{i#67416}(8))] -[visit_exp lanetype#11160] -[visit_id lanetype#11160] -[visit_exp dim#11160] -[visit_id dim#11160] -[visit_exp i#67409] -[visit_id i#67409] -[visit_exp (`I16`_lanetype, `%`_dim{i#67416}(8))] +[check_dims] +dims \ = +[visit_exp `VUNOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `ABS`_vunop_)] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `ABS`_vunop_)] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#67416}(8)] -[visit_exp i#67416] -[visit_id i#67416] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] [visit_exp `ABS`_vunop_] [visit_exp ()] -[visit_exp `%`_u32{i#67402}(128)] -[visit_exp i#67402] -[visit_id i#67402] +[visit_exp `%`_u32(128)] [visit_exp (128)] [visit_exp 128] -[check_dims] dim#11187 i#67484 i#67491 i#67498 lanetype#11187 shape#1475 -dims \ = dim#11187, i#67484, i#67491, i#67498, lanetype#11187, shape#1475 -[visit_exp `VUNOP`_instr{shape#1475}(`%X%`_shape{lanetype#11187, dim#11187, i#67491}(`I16`_lanetype, `%`_dim{i#67498}(8)), `NEG`_vunop_)] -[visit_exp shape#1475] -[visit_id shape#1475] -[visit_exp (`%X%`_shape{lanetype#11187, dim#11187, i#67491}(`I16`_lanetype, `%`_dim{i#67498}(8)), `NEG`_vunop_)] -[visit_exp `%X%`_shape{lanetype#11187, dim#11187, i#67491}(`I16`_lanetype, `%`_dim{i#67498}(8))] -[visit_exp lanetype#11187] -[visit_id lanetype#11187] -[visit_exp dim#11187] -[visit_id dim#11187] -[visit_exp i#67491] -[visit_id i#67491] -[visit_exp (`I16`_lanetype, `%`_dim{i#67498}(8))] +[check_dims] +dims \ = +[visit_exp `VUNOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `NEG`_vunop_)] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `NEG`_vunop_)] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#67498}(8)] -[visit_exp i#67498] -[visit_id i#67498] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] [visit_exp `NEG`_vunop_] [visit_exp ()] -[visit_exp `%`_u32{i#67484}(129)] -[visit_exp i#67484] -[visit_id i#67484] +[visit_exp `%`_u32(129)] [visit_exp (129)] [visit_exp 129] ps' = [check_dims] -[check_dims] dim#11214 i#67566 i#67573 i#67580 lanetype#11214 shape#1477 -dims \ = dim#11214, i#67566, i#67573, i#67580, lanetype#11214, shape#1477 -[visit_exp `VBINOP`_instr{shape#1477}(`%X%`_shape{lanetype#11214, dim#11214, i#67573}(`I16`_lanetype, `%`_dim{i#67580}(8)), `Q15MULR_SATS`_vbinop_)] -[visit_exp shape#1477] -[visit_id shape#1477] -[visit_exp (`%X%`_shape{lanetype#11214, dim#11214, i#67573}(`I16`_lanetype, `%`_dim{i#67580}(8)), `Q15MULR_SATS`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#11214, dim#11214, i#67573}(`I16`_lanetype, `%`_dim{i#67580}(8))] -[visit_exp lanetype#11214] -[visit_id lanetype#11214] -[visit_exp dim#11214] -[visit_id dim#11214] -[visit_exp i#67573] -[visit_id i#67573] -[visit_exp (`I16`_lanetype, `%`_dim{i#67580}(8))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `Q15MULR_SATS`_vbinop_)] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `Q15MULR_SATS`_vbinop_)] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#67580}(8)] -[visit_exp i#67580] -[visit_id i#67580] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] [visit_exp `Q15MULR_SATS`_vbinop_] [visit_exp ()] -[visit_exp `%`_u32{i#67566}(130)] -[visit_exp i#67566] -[visit_id i#67566] +[visit_exp `%`_u32(130)] [visit_exp (130)] [visit_exp 130] -[check_dims] dim#11256 i#67693 i#67700 i#67707 lanetype#11256 shape#1479 -dims \ = dim#11256, i#67693, i#67700, i#67707, lanetype#11256, shape#1479 -[visit_exp `VBINOP`_instr{shape#1479}(`%X%`_shape{lanetype#11256, dim#11256, i#67700}(`I16`_lanetype, `%`_dim{i#67707}(8)), `ADD`_vbinop_)] -[visit_exp shape#1479] -[visit_id shape#1479] -[visit_exp (`%X%`_shape{lanetype#11256, dim#11256, i#67700}(`I16`_lanetype, `%`_dim{i#67707}(8)), `ADD`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#11256, dim#11256, i#67700}(`I16`_lanetype, `%`_dim{i#67707}(8))] -[visit_exp lanetype#11256] -[visit_id lanetype#11256] -[visit_exp dim#11256] -[visit_id dim#11256] -[visit_exp i#67700] -[visit_id i#67700] -[visit_exp (`I16`_lanetype, `%`_dim{i#67707}(8))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `ADD`_vbinop_)] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `ADD`_vbinop_)] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#67707}(8)] -[visit_exp i#67707] -[visit_id i#67707] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] [visit_exp `ADD`_vbinop_] [visit_exp ()] -[visit_exp `%`_u32{i#67693}(142)] -[visit_exp i#67693] -[visit_id i#67693] +[visit_exp `%`_u32(142)] [visit_exp (142)] [visit_exp 142] -[check_dims] dim#11283 i#67775 i#67782 i#67789 lanetype#11283 shape#1481 sx#11442 -dims \ = dim#11283, i#67775, i#67782, i#67789, lanetype#11283, shape#1481, sx#11442 -[visit_exp `VBINOP`_instr{shape#1481}(`%X%`_shape{lanetype#11283, dim#11283, i#67782}(`I16`_lanetype, `%`_dim{i#67789}(8)), `ADD_SAT`_vbinop_{sx#11442}(`S`_sx))] -[visit_exp shape#1481] -[visit_id shape#1481] -[visit_exp (`%X%`_shape{lanetype#11283, dim#11283, i#67782}(`I16`_lanetype, `%`_dim{i#67789}(8)), `ADD_SAT`_vbinop_{sx#11442}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#11283, dim#11283, i#67782}(`I16`_lanetype, `%`_dim{i#67789}(8))] -[visit_exp lanetype#11283] -[visit_id lanetype#11283] -[visit_exp dim#11283] -[visit_id dim#11283] -[visit_exp i#67782] -[visit_id i#67782] -[visit_exp (`I16`_lanetype, `%`_dim{i#67789}(8))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `ADD_SAT`_vbinop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `ADD_SAT`_vbinop_(`S`_sx))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#67789}(8)] -[visit_exp i#67789] -[visit_id i#67789] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `ADD_SAT`_vbinop_{sx#11442}(`S`_sx)] -[visit_exp sx#11442] -[visit_id sx#11442] +[visit_exp `ADD_SAT`_vbinop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#67775}(143)] -[visit_exp i#67775] -[visit_id i#67775] +[visit_exp `%`_u32(143)] [visit_exp (143)] [visit_exp 143] -[check_dims] dim#11325 i#67902 i#67909 i#67916 lanetype#11325 shape#1483 sx#11566 -dims \ = dim#11325, i#67902, i#67909, i#67916, lanetype#11325, shape#1483, sx#11566 -[visit_exp `VBINOP`_instr{shape#1483}(`%X%`_shape{lanetype#11325, dim#11325, i#67909}(`I16`_lanetype, `%`_dim{i#67916}(8)), `ADD_SAT`_vbinop_{sx#11566}(`U`_sx))] -[visit_exp shape#1483] -[visit_id shape#1483] -[visit_exp (`%X%`_shape{lanetype#11325, dim#11325, i#67909}(`I16`_lanetype, `%`_dim{i#67916}(8)), `ADD_SAT`_vbinop_{sx#11566}(`U`_sx))] -[visit_exp `%X%`_shape{lanetype#11325, dim#11325, i#67909}(`I16`_lanetype, `%`_dim{i#67916}(8))] -[visit_exp lanetype#11325] -[visit_id lanetype#11325] -[visit_exp dim#11325] -[visit_id dim#11325] -[visit_exp i#67909] -[visit_id i#67909] -[visit_exp (`I16`_lanetype, `%`_dim{i#67916}(8))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `ADD_SAT`_vbinop_(`U`_sx))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `ADD_SAT`_vbinop_(`U`_sx))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#67916}(8)] -[visit_exp i#67916] -[visit_id i#67916] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `ADD_SAT`_vbinop_{sx#11566}(`U`_sx)] -[visit_exp sx#11566] -[visit_id sx#11566] +[visit_exp `ADD_SAT`_vbinop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#67902}(144)] -[visit_exp i#67902] -[visit_id i#67902] +[visit_exp `%`_u32(144)] [visit_exp (144)] [visit_exp 144] -[check_dims] dim#11367 i#68029 i#68036 i#68043 lanetype#11367 shape#1485 -dims \ = dim#11367, i#68029, i#68036, i#68043, lanetype#11367, shape#1485 -[visit_exp `VBINOP`_instr{shape#1485}(`%X%`_shape{lanetype#11367, dim#11367, i#68036}(`I16`_lanetype, `%`_dim{i#68043}(8)), `SUB`_vbinop_)] -[visit_exp shape#1485] -[visit_id shape#1485] -[visit_exp (`%X%`_shape{lanetype#11367, dim#11367, i#68036}(`I16`_lanetype, `%`_dim{i#68043}(8)), `SUB`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#11367, dim#11367, i#68036}(`I16`_lanetype, `%`_dim{i#68043}(8))] -[visit_exp lanetype#11367] -[visit_id lanetype#11367] -[visit_exp dim#11367] -[visit_id dim#11367] -[visit_exp i#68036] -[visit_id i#68036] -[visit_exp (`I16`_lanetype, `%`_dim{i#68043}(8))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `SUB`_vbinop_)] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `SUB`_vbinop_)] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#68043}(8)] -[visit_exp i#68043] -[visit_id i#68043] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] [visit_exp `SUB`_vbinop_] [visit_exp ()] -[visit_exp `%`_u32{i#68029}(145)] -[visit_exp i#68029] -[visit_id i#68029] +[visit_exp `%`_u32(145)] [visit_exp (145)] [visit_exp 145] -[check_dims] dim#11394 i#68111 i#68118 i#68125 lanetype#11394 shape#1487 sx#11750 -dims \ = dim#11394, i#68111, i#68118, i#68125, lanetype#11394, shape#1487, sx#11750 -[visit_exp `VBINOP`_instr{shape#1487}(`%X%`_shape{lanetype#11394, dim#11394, i#68118}(`I16`_lanetype, `%`_dim{i#68125}(8)), `SUB_SAT`_vbinop_{sx#11750}(`S`_sx))] -[visit_exp shape#1487] -[visit_id shape#1487] -[visit_exp (`%X%`_shape{lanetype#11394, dim#11394, i#68118}(`I16`_lanetype, `%`_dim{i#68125}(8)), `SUB_SAT`_vbinop_{sx#11750}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#11394, dim#11394, i#68118}(`I16`_lanetype, `%`_dim{i#68125}(8))] -[visit_exp lanetype#11394] -[visit_id lanetype#11394] -[visit_exp dim#11394] -[visit_id dim#11394] -[visit_exp i#68118] -[visit_id i#68118] -[visit_exp (`I16`_lanetype, `%`_dim{i#68125}(8))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `SUB_SAT`_vbinop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `SUB_SAT`_vbinop_(`S`_sx))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#68125}(8)] -[visit_exp i#68125] -[visit_id i#68125] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `SUB_SAT`_vbinop_{sx#11750}(`S`_sx)] -[visit_exp sx#11750] -[visit_id sx#11750] +[visit_exp `SUB_SAT`_vbinop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#68111}(146)] -[visit_exp i#68111] -[visit_id i#68111] +[visit_exp `%`_u32(146)] [visit_exp (146)] [visit_exp 146] -[check_dims] dim#11436 i#68238 i#68245 i#68252 lanetype#11436 shape#1489 sx#11874 -dims \ = dim#11436, i#68238, i#68245, i#68252, lanetype#11436, shape#1489, sx#11874 -[visit_exp `VBINOP`_instr{shape#1489}(`%X%`_shape{lanetype#11436, dim#11436, i#68245}(`I16`_lanetype, `%`_dim{i#68252}(8)), `SUB_SAT`_vbinop_{sx#11874}(`U`_sx))] -[visit_exp shape#1489] -[visit_id shape#1489] -[visit_exp (`%X%`_shape{lanetype#11436, dim#11436, i#68245}(`I16`_lanetype, `%`_dim{i#68252}(8)), `SUB_SAT`_vbinop_{sx#11874}(`U`_sx))] -[visit_exp `%X%`_shape{lanetype#11436, dim#11436, i#68245}(`I16`_lanetype, `%`_dim{i#68252}(8))] -[visit_exp lanetype#11436] -[visit_id lanetype#11436] -[visit_exp dim#11436] -[visit_id dim#11436] -[visit_exp i#68245] -[visit_id i#68245] -[visit_exp (`I16`_lanetype, `%`_dim{i#68252}(8))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `SUB_SAT`_vbinop_(`U`_sx))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `SUB_SAT`_vbinop_(`U`_sx))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#68252}(8)] -[visit_exp i#68252] -[visit_id i#68252] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `SUB_SAT`_vbinop_{sx#11874}(`U`_sx)] -[visit_exp sx#11874] -[visit_id sx#11874] +[visit_exp `SUB_SAT`_vbinop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#68238}(147)] -[visit_exp i#68238] -[visit_id i#68238] +[visit_exp `%`_u32(147)] [visit_exp (147)] [visit_exp 147] -[check_dims] dim#11478 i#68365 i#68372 i#68379 lanetype#11478 shape#1491 -dims \ = dim#11478, i#68365, i#68372, i#68379, lanetype#11478, shape#1491 -[visit_exp `VBINOP`_instr{shape#1491}(`%X%`_shape{lanetype#11478, dim#11478, i#68372}(`I16`_lanetype, `%`_dim{i#68379}(8)), `MUL`_vbinop_)] -[visit_exp shape#1491] -[visit_id shape#1491] -[visit_exp (`%X%`_shape{lanetype#11478, dim#11478, i#68372}(`I16`_lanetype, `%`_dim{i#68379}(8)), `MUL`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#11478, dim#11478, i#68372}(`I16`_lanetype, `%`_dim{i#68379}(8))] -[visit_exp lanetype#11478] -[visit_id lanetype#11478] -[visit_exp dim#11478] -[visit_id dim#11478] -[visit_exp i#68372] -[visit_id i#68372] -[visit_exp (`I16`_lanetype, `%`_dim{i#68379}(8))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `MUL`_vbinop_)] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `MUL`_vbinop_)] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#68379}(8)] -[visit_exp i#68379] -[visit_id i#68379] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] [visit_exp `MUL`_vbinop_] [visit_exp ()] -[visit_exp `%`_u32{i#68365}(149)] -[visit_exp i#68365] -[visit_id i#68365] +[visit_exp `%`_u32(149)] [visit_exp (149)] [visit_exp 149] -[check_dims] dim#11505 i#68447 i#68454 i#68461 lanetype#11505 shape#1493 sx#12058 -dims \ = dim#11505, i#68447, i#68454, i#68461, lanetype#11505, shape#1493, sx#12058 -[visit_exp `VBINOP`_instr{shape#1493}(`%X%`_shape{lanetype#11505, dim#11505, i#68454}(`I16`_lanetype, `%`_dim{i#68461}(8)), `MIN`_vbinop_{sx#12058}(`S`_sx))] -[visit_exp shape#1493] -[visit_id shape#1493] -[visit_exp (`%X%`_shape{lanetype#11505, dim#11505, i#68454}(`I16`_lanetype, `%`_dim{i#68461}(8)), `MIN`_vbinop_{sx#12058}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#11505, dim#11505, i#68454}(`I16`_lanetype, `%`_dim{i#68461}(8))] -[visit_exp lanetype#11505] -[visit_id lanetype#11505] -[visit_exp dim#11505] -[visit_id dim#11505] -[visit_exp i#68454] -[visit_id i#68454] -[visit_exp (`I16`_lanetype, `%`_dim{i#68461}(8))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `MIN`_vbinop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `MIN`_vbinop_(`S`_sx))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#68461}(8)] -[visit_exp i#68461] -[visit_id i#68461] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `MIN`_vbinop_{sx#12058}(`S`_sx)] -[visit_exp sx#12058] -[visit_id sx#12058] +[visit_exp `MIN`_vbinop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#68447}(150)] -[visit_exp i#68447] -[visit_id i#68447] +[visit_exp `%`_u32(150)] [visit_exp (150)] [visit_exp 150] -[check_dims] dim#11547 i#68574 i#68581 i#68588 lanetype#11547 shape#1495 sx#12182 -dims \ = dim#11547, i#68574, i#68581, i#68588, lanetype#11547, shape#1495, sx#12182 -[visit_exp `VBINOP`_instr{shape#1495}(`%X%`_shape{lanetype#11547, dim#11547, i#68581}(`I16`_lanetype, `%`_dim{i#68588}(8)), `MIN`_vbinop_{sx#12182}(`U`_sx))] -[visit_exp shape#1495] -[visit_id shape#1495] -[visit_exp (`%X%`_shape{lanetype#11547, dim#11547, i#68581}(`I16`_lanetype, `%`_dim{i#68588}(8)), `MIN`_vbinop_{sx#12182}(`U`_sx))] -[visit_exp `%X%`_shape{lanetype#11547, dim#11547, i#68581}(`I16`_lanetype, `%`_dim{i#68588}(8))] -[visit_exp lanetype#11547] -[visit_id lanetype#11547] -[visit_exp dim#11547] -[visit_id dim#11547] -[visit_exp i#68581] -[visit_id i#68581] -[visit_exp (`I16`_lanetype, `%`_dim{i#68588}(8))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `MIN`_vbinop_(`U`_sx))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `MIN`_vbinop_(`U`_sx))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#68588}(8)] -[visit_exp i#68588] -[visit_id i#68588] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `MIN`_vbinop_{sx#12182}(`U`_sx)] -[visit_exp sx#12182] -[visit_id sx#12182] +[visit_exp `MIN`_vbinop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#68574}(151)] -[visit_exp i#68574] -[visit_id i#68574] +[visit_exp `%`_u32(151)] [visit_exp (151)] [visit_exp 151] -[check_dims] dim#11589 i#68701 i#68708 i#68715 lanetype#11589 shape#1497 sx#12306 -dims \ = dim#11589, i#68701, i#68708, i#68715, lanetype#11589, shape#1497, sx#12306 -[visit_exp `VBINOP`_instr{shape#1497}(`%X%`_shape{lanetype#11589, dim#11589, i#68708}(`I16`_lanetype, `%`_dim{i#68715}(8)), `MAX`_vbinop_{sx#12306}(`S`_sx))] -[visit_exp shape#1497] -[visit_id shape#1497] -[visit_exp (`%X%`_shape{lanetype#11589, dim#11589, i#68708}(`I16`_lanetype, `%`_dim{i#68715}(8)), `MAX`_vbinop_{sx#12306}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#11589, dim#11589, i#68708}(`I16`_lanetype, `%`_dim{i#68715}(8))] -[visit_exp lanetype#11589] -[visit_id lanetype#11589] -[visit_exp dim#11589] -[visit_id dim#11589] -[visit_exp i#68708] -[visit_id i#68708] -[visit_exp (`I16`_lanetype, `%`_dim{i#68715}(8))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `MAX`_vbinop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `MAX`_vbinop_(`S`_sx))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#68715}(8)] -[visit_exp i#68715] -[visit_id i#68715] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `MAX`_vbinop_{sx#12306}(`S`_sx)] -[visit_exp sx#12306] -[visit_id sx#12306] +[visit_exp `MAX`_vbinop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#68701}(152)] -[visit_exp i#68701] -[visit_id i#68701] +[visit_exp `%`_u32(152)] [visit_exp (152)] [visit_exp 152] -[check_dims] dim#11631 i#68828 i#68835 i#68842 lanetype#11631 shape#1499 sx#12430 -dims \ = dim#11631, i#68828, i#68835, i#68842, lanetype#11631, shape#1499, sx#12430 -[visit_exp `VBINOP`_instr{shape#1499}(`%X%`_shape{lanetype#11631, dim#11631, i#68835}(`I16`_lanetype, `%`_dim{i#68842}(8)), `MAX`_vbinop_{sx#12430}(`U`_sx))] -[visit_exp shape#1499] -[visit_id shape#1499] -[visit_exp (`%X%`_shape{lanetype#11631, dim#11631, i#68835}(`I16`_lanetype, `%`_dim{i#68842}(8)), `MAX`_vbinop_{sx#12430}(`U`_sx))] -[visit_exp `%X%`_shape{lanetype#11631, dim#11631, i#68835}(`I16`_lanetype, `%`_dim{i#68842}(8))] -[visit_exp lanetype#11631] -[visit_id lanetype#11631] -[visit_exp dim#11631] -[visit_id dim#11631] -[visit_exp i#68835] -[visit_id i#68835] -[visit_exp (`I16`_lanetype, `%`_dim{i#68842}(8))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `MAX`_vbinop_(`U`_sx))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `MAX`_vbinop_(`U`_sx))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#68842}(8)] -[visit_exp i#68842] -[visit_id i#68842] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `MAX`_vbinop_{sx#12430}(`U`_sx)] -[visit_exp sx#12430] -[visit_id sx#12430] +[visit_exp `MAX`_vbinop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#68828}(153)] -[visit_exp i#68828] -[visit_id i#68828] +[visit_exp `%`_u32(153)] [visit_exp (153)] [visit_exp 153] -[check_dims] dim#11673 i#68955 i#68962 i#68969 lanetype#11673 shape#1501 -dims \ = dim#11673, i#68955, i#68962, i#68969, lanetype#11673, shape#1501 -[visit_exp `VBINOP`_instr{shape#1501}(`%X%`_shape{lanetype#11673, dim#11673, i#68962}(`I16`_lanetype, `%`_dim{i#68969}(8)), `AVGRU`_vbinop_)] -[visit_exp shape#1501] -[visit_id shape#1501] -[visit_exp (`%X%`_shape{lanetype#11673, dim#11673, i#68962}(`I16`_lanetype, `%`_dim{i#68969}(8)), `AVGRU`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#11673, dim#11673, i#68962}(`I16`_lanetype, `%`_dim{i#68969}(8))] -[visit_exp lanetype#11673] -[visit_id lanetype#11673] -[visit_exp dim#11673] -[visit_id dim#11673] -[visit_exp i#68962] -[visit_id i#68962] -[visit_exp (`I16`_lanetype, `%`_dim{i#68969}(8))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `AVGRU`_vbinop_)] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `AVGRU`_vbinop_)] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#68969}(8)] -[visit_exp i#68969] -[visit_id i#68969] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] [visit_exp `AVGRU`_vbinop_] [visit_exp ()] -[visit_exp `%`_u32{i#68955}(155)] -[visit_exp i#68955] -[visit_id i#68955] +[visit_exp `%`_u32(155)] [visit_exp (155)] [visit_exp 155] -[check_dims] dim#11715 i#69082 i#69089 i#69096 lanetype#11715 shape#1503 -dims \ = dim#11715, i#69082, i#69089, i#69096, lanetype#11715, shape#1503 -[visit_exp `VBINOP`_instr{shape#1503}(`%X%`_shape{lanetype#11715, dim#11715, i#69089}(`I16`_lanetype, `%`_dim{i#69096}(8)), `RELAXED_Q15MULRS`_vbinop_)] -[visit_exp shape#1503] -[visit_id shape#1503] -[visit_exp (`%X%`_shape{lanetype#11715, dim#11715, i#69089}(`I16`_lanetype, `%`_dim{i#69096}(8)), `RELAXED_Q15MULRS`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#11715, dim#11715, i#69089}(`I16`_lanetype, `%`_dim{i#69096}(8))] -[visit_exp lanetype#11715] -[visit_id lanetype#11715] -[visit_exp dim#11715] -[visit_id dim#11715] -[visit_exp i#69089] -[visit_id i#69089] -[visit_exp (`I16`_lanetype, `%`_dim{i#69096}(8))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `RELAXED_Q15MULRS`_vbinop_)] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `RELAXED_Q15MULRS`_vbinop_)] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#69096}(8)] -[visit_exp i#69096] -[visit_id i#69096] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] [visit_exp `RELAXED_Q15MULRS`_vbinop_] [visit_exp ()] -[visit_exp `%`_u32{i#69082}(273)] -[visit_exp i#69082] -[visit_id i#69082] +[visit_exp `%`_u32(273)] [visit_exp (273)] [visit_exp 273] ps' = [check_dims] -[check_dims] dim#11757 i#69209 i#69216 i#69223 lanetype#11757 shape#1505 -dims \ = dim#11757, i#69209, i#69216, i#69223, lanetype#11757, shape#1505 -[visit_exp `VTESTOP`_instr{shape#1505}(`%X%`_shape{lanetype#11757, dim#11757, i#69216}(`I16`_lanetype, `%`_dim{i#69223}(8)), `ALL_TRUE`_vtestop_)] -[visit_exp shape#1505] -[visit_id shape#1505] -[visit_exp (`%X%`_shape{lanetype#11757, dim#11757, i#69216}(`I16`_lanetype, `%`_dim{i#69223}(8)), `ALL_TRUE`_vtestop_)] -[visit_exp `%X%`_shape{lanetype#11757, dim#11757, i#69216}(`I16`_lanetype, `%`_dim{i#69223}(8))] -[visit_exp lanetype#11757] -[visit_id lanetype#11757] -[visit_exp dim#11757] -[visit_id dim#11757] -[visit_exp i#69216] -[visit_id i#69216] -[visit_exp (`I16`_lanetype, `%`_dim{i#69223}(8))] +[check_dims] +dims \ = +[visit_exp `VTESTOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `ALL_TRUE`_vtestop_)] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `ALL_TRUE`_vtestop_)] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#69223}(8)] -[visit_exp i#69223] -[visit_id i#69223] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] [visit_exp `ALL_TRUE`_vtestop_] [visit_exp ()] -[visit_exp `%`_u32{i#69209}(131)] -[visit_exp i#69209] -[visit_id i#69209] +[visit_exp `%`_u32(131)] [visit_exp (131)] [visit_exp 131] ps' = [check_dims] -[check_dims] Jnn#282 dim#11784 i#69291 i#69298 i#69305 ishape#21 lanetype#11784 shape#1517 -dims \ = Jnn#282, dim#11784, i#69291, i#69298, i#69305, ishape#21, lanetype#11784, shape#1517 -[visit_exp `VBITMASK`_instr{ishape#21}(`%`_ishape{shape#1517, Jnn#282}(`%X%`_shape{lanetype#11784, dim#11784, i#69298}(`I16`_lanetype, `%`_dim{i#69305}(8))))] -[visit_exp ishape#21] -[visit_id ishape#21] -[visit_exp (`%`_ishape{shape#1517, Jnn#282}(`%X%`_shape{lanetype#11784, dim#11784, i#69298}(`I16`_lanetype, `%`_dim{i#69305}(8))))] -[visit_exp `%`_ishape{shape#1517, Jnn#282}(`%X%`_shape{lanetype#11784, dim#11784, i#69298}(`I16`_lanetype, `%`_dim{i#69305}(8)))] -[visit_exp shape#1517] -[visit_id shape#1517] -[visit_exp Jnn#282] -[visit_id Jnn#282] -[visit_exp (`%X%`_shape{lanetype#11784, dim#11784, i#69298}(`I16`_lanetype, `%`_dim{i#69305}(8)))] -[visit_exp `%X%`_shape{lanetype#11784, dim#11784, i#69298}(`I16`_lanetype, `%`_dim{i#69305}(8))] -[visit_exp lanetype#11784] -[visit_id lanetype#11784] -[visit_exp dim#11784] -[visit_id dim#11784] -[visit_exp i#69298] -[visit_id i#69298] -[visit_exp (`I16`_lanetype, `%`_dim{i#69305}(8))] +[check_dims] +dims \ = +[visit_exp `VBITMASK`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))))] +[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))))] +[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#69305}(8)] -[visit_exp i#69305] -[visit_id i#69305] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `%`_u32{i#69291}(132)] -[visit_exp i#69291] -[visit_id i#69291] +[visit_exp `%`_u32(132)] [visit_exp (132)] [visit_exp 132] ps' = [check_dims] -[check_dims] Jnn#283 Jnn#284 Jnn#285 Jnn#289 Jnn#293 dim#11796 dim#11808 i#69328 i#69335 i#69342 i#69347 i#69354 ishape_1#33 ishape_2#33 lanetype#11796 lanetype#11808 shape#1519 shape#1520 shape#1521 shape#1532 shape#1544 sx#12672 -dims \ = Jnn#283, Jnn#284, Jnn#285, Jnn#289, Jnn#293, dim#11796, dim#11808, i#69328, i#69335, i#69342, i#69347, i#69354, ishape_1#33, ishape_2#33, lanetype#11796, lanetype#11808, shape#1519, shape#1520, shape#1521, shape#1532, shape#1544, sx#12672 -[visit_exp `VNARROW`_instr{ishape_1#33, ishape_2#33, sx#12672, shape#1519, Jnn#283, shape#1520, Jnn#284, shape#1521, Jnn#285}(`%`_ishape{shape#1532, Jnn#289}(`%X%`_shape{lanetype#11796, dim#11796, i#69335}(`I16`_lanetype, `%`_dim{i#69342}(8))), `%`_ishape{shape#1544, Jnn#293}(`%X%`_shape{lanetype#11808, dim#11808, i#69347}(`I32`_lanetype, `%`_dim{i#69354}(4))), `S`_sx)] -[visit_exp ishape_1#33] -[visit_id ishape_1#33] -[visit_exp ishape_2#33] -[visit_id ishape_2#33] -[visit_exp sx#12672] -[visit_id sx#12672] -[visit_exp shape#1519] -[visit_id shape#1519] -[visit_exp Jnn#283] -[visit_id Jnn#283] -[visit_exp shape#1520] -[visit_id shape#1520] -[visit_exp Jnn#284] -[visit_id Jnn#284] -[visit_exp shape#1521] -[visit_id shape#1521] -[visit_exp Jnn#285] -[visit_id Jnn#285] -[visit_exp (`%`_ishape{shape#1532, Jnn#289}(`%X%`_shape{lanetype#11796, dim#11796, i#69335}(`I16`_lanetype, `%`_dim{i#69342}(8))), `%`_ishape{shape#1544, Jnn#293}(`%X%`_shape{lanetype#11808, dim#11808, i#69347}(`I32`_lanetype, `%`_dim{i#69354}(4))), `S`_sx)] -[visit_exp `%`_ishape{shape#1532, Jnn#289}(`%X%`_shape{lanetype#11796, dim#11796, i#69335}(`I16`_lanetype, `%`_dim{i#69342}(8)))] -[visit_exp shape#1532] -[visit_id shape#1532] -[visit_exp Jnn#289] -[visit_id Jnn#289] -[visit_exp (`%X%`_shape{lanetype#11796, dim#11796, i#69335}(`I16`_lanetype, `%`_dim{i#69342}(8)))] -[visit_exp `%X%`_shape{lanetype#11796, dim#11796, i#69335}(`I16`_lanetype, `%`_dim{i#69342}(8))] -[visit_exp lanetype#11796] -[visit_id lanetype#11796] -[visit_exp dim#11796] -[visit_id dim#11796] -[visit_exp i#69335] -[visit_id i#69335] -[visit_exp (`I16`_lanetype, `%`_dim{i#69342}(8))] +[check_dims] +dims \ = +[visit_exp `VNARROW`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `S`_sx)] +[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `S`_sx)] +[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#69342}(8)] -[visit_exp i#69342] -[visit_id i#69342] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `%`_ishape{shape#1544, Jnn#293}(`%X%`_shape{lanetype#11808, dim#11808, i#69347}(`I32`_lanetype, `%`_dim{i#69354}(4)))] -[visit_exp shape#1544] -[visit_id shape#1544] -[visit_exp Jnn#293] -[visit_id Jnn#293] -[visit_exp (`%X%`_shape{lanetype#11808, dim#11808, i#69347}(`I32`_lanetype, `%`_dim{i#69354}(4)))] -[visit_exp `%X%`_shape{lanetype#11808, dim#11808, i#69347}(`I32`_lanetype, `%`_dim{i#69354}(4))] -[visit_exp lanetype#11808] -[visit_id lanetype#11808] -[visit_exp dim#11808] -[visit_id dim#11808] -[visit_exp i#69347] -[visit_id i#69347] -[visit_exp (`I32`_lanetype, `%`_dim{i#69354}(4))] +[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#69354}(4)] -[visit_exp i#69354] -[visit_id i#69354] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#69328}(133)] -[visit_exp i#69328] -[visit_id i#69328] +[visit_exp `%`_u32(133)] [visit_exp (133)] [visit_exp 133] -[check_dims] Jnn#294 Jnn#295 Jnn#296 Jnn#300 Jnn#304 dim#11820 dim#11832 i#69377 i#69384 i#69391 i#69396 i#69403 ishape_1#35 ishape_2#35 lanetype#11820 lanetype#11832 shape#1546 shape#1547 shape#1548 shape#1559 shape#1571 sx#12674 -dims \ = Jnn#294, Jnn#295, Jnn#296, Jnn#300, Jnn#304, dim#11820, dim#11832, i#69377, i#69384, i#69391, i#69396, i#69403, ishape_1#35, ishape_2#35, lanetype#11820, lanetype#11832, shape#1546, shape#1547, shape#1548, shape#1559, shape#1571, sx#12674 -[visit_exp `VNARROW`_instr{ishape_1#35, ishape_2#35, sx#12674, shape#1546, Jnn#294, shape#1547, Jnn#295, shape#1548, Jnn#296}(`%`_ishape{shape#1559, Jnn#300}(`%X%`_shape{lanetype#11820, dim#11820, i#69384}(`I16`_lanetype, `%`_dim{i#69391}(8))), `%`_ishape{shape#1571, Jnn#304}(`%X%`_shape{lanetype#11832, dim#11832, i#69396}(`I32`_lanetype, `%`_dim{i#69403}(4))), `U`_sx)] -[visit_exp ishape_1#35] -[visit_id ishape_1#35] -[visit_exp ishape_2#35] -[visit_id ishape_2#35] -[visit_exp sx#12674] -[visit_id sx#12674] -[visit_exp shape#1546] -[visit_id shape#1546] -[visit_exp Jnn#294] -[visit_id Jnn#294] -[visit_exp shape#1547] -[visit_id shape#1547] -[visit_exp Jnn#295] -[visit_id Jnn#295] -[visit_exp shape#1548] -[visit_id shape#1548] -[visit_exp Jnn#296] -[visit_id Jnn#296] -[visit_exp (`%`_ishape{shape#1559, Jnn#300}(`%X%`_shape{lanetype#11820, dim#11820, i#69384}(`I16`_lanetype, `%`_dim{i#69391}(8))), `%`_ishape{shape#1571, Jnn#304}(`%X%`_shape{lanetype#11832, dim#11832, i#69396}(`I32`_lanetype, `%`_dim{i#69403}(4))), `U`_sx)] -[visit_exp `%`_ishape{shape#1559, Jnn#300}(`%X%`_shape{lanetype#11820, dim#11820, i#69384}(`I16`_lanetype, `%`_dim{i#69391}(8)))] -[visit_exp shape#1559] -[visit_id shape#1559] -[visit_exp Jnn#300] -[visit_id Jnn#300] -[visit_exp (`%X%`_shape{lanetype#11820, dim#11820, i#69384}(`I16`_lanetype, `%`_dim{i#69391}(8)))] -[visit_exp `%X%`_shape{lanetype#11820, dim#11820, i#69384}(`I16`_lanetype, `%`_dim{i#69391}(8))] -[visit_exp lanetype#11820] -[visit_id lanetype#11820] -[visit_exp dim#11820] -[visit_id dim#11820] -[visit_exp i#69384] -[visit_id i#69384] -[visit_exp (`I16`_lanetype, `%`_dim{i#69391}(8))] +[check_dims] +dims \ = +[visit_exp `VNARROW`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `U`_sx)] +[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `U`_sx)] +[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#69391}(8)] -[visit_exp i#69391] -[visit_id i#69391] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `%`_ishape{shape#1571, Jnn#304}(`%X%`_shape{lanetype#11832, dim#11832, i#69396}(`I32`_lanetype, `%`_dim{i#69403}(4)))] -[visit_exp shape#1571] -[visit_id shape#1571] -[visit_exp Jnn#304] -[visit_id Jnn#304] -[visit_exp (`%X%`_shape{lanetype#11832, dim#11832, i#69396}(`I32`_lanetype, `%`_dim{i#69403}(4)))] -[visit_exp `%X%`_shape{lanetype#11832, dim#11832, i#69396}(`I32`_lanetype, `%`_dim{i#69403}(4))] -[visit_exp lanetype#11832] -[visit_id lanetype#11832] -[visit_exp dim#11832] -[visit_id dim#11832] -[visit_exp i#69396] -[visit_id i#69396] -[visit_exp (`I32`_lanetype, `%`_dim{i#69403}(4))] +[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#69403}(4)] -[visit_exp i#69403] -[visit_id i#69403] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#69377}(134)] -[visit_exp i#69377] -[visit_id i#69377] +[visit_exp `%`_u32(134)] [visit_exp (134)] [visit_exp 134] ps' = [check_dims] -[check_dims] dim#11844 dim#11856 half#56 i#69426 i#69433 i#69440 i#69445 i#69452 lanetype#11844 lanetype#11856 shape_1#7 shape_2#7 sx#12708 -dims \ = dim#11844, dim#11856, half#56, i#69426, i#69433, i#69440, i#69445, i#69452, lanetype#11844, lanetype#11856, shape_1#7, shape_2#7, sx#12708 -[visit_exp `VCVTOP`_instr{shape_1#7, shape_2#7}(`%X%`_shape{lanetype#11844, dim#11844, i#69433}(`I16`_lanetype, `%`_dim{i#69440}(8)), `%X%`_shape{lanetype#11856, dim#11856, i#69445}(`I8`_lanetype, `%`_dim{i#69452}(16)), `EXTEND`_vcvtop__{half#56, sx#12708}(`LOW`_half, `S`_sx))] -[visit_exp shape_1#7] -[visit_id shape_1#7] -[visit_exp shape_2#7] -[visit_id shape_2#7] -[visit_exp (`%X%`_shape{lanetype#11844, dim#11844, i#69433}(`I16`_lanetype, `%`_dim{i#69440}(8)), `%X%`_shape{lanetype#11856, dim#11856, i#69445}(`I8`_lanetype, `%`_dim{i#69452}(16)), `EXTEND`_vcvtop__{half#56, sx#12708}(`LOW`_half, `S`_sx))] -[visit_exp `%X%`_shape{lanetype#11844, dim#11844, i#69433}(`I16`_lanetype, `%`_dim{i#69440}(8))] -[visit_exp lanetype#11844] -[visit_id lanetype#11844] -[visit_exp dim#11844] -[visit_id dim#11844] -[visit_exp i#69433] -[visit_id i#69433] -[visit_exp (`I16`_lanetype, `%`_dim{i#69440}(8))] +[check_dims] +dims \ = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `%X%`_shape(`I8`_lanetype, `%`_dim(16)), `EXTEND`_vcvtop__(`LOW`_half, `S`_sx))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `%X%`_shape(`I8`_lanetype, `%`_dim(16)), `EXTEND`_vcvtop__(`LOW`_half, `S`_sx))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#69440}(8)] -[visit_exp i#69440] -[visit_id i#69440] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `%X%`_shape{lanetype#11856, dim#11856, i#69445}(`I8`_lanetype, `%`_dim{i#69452}(16))] -[visit_exp lanetype#11856] -[visit_id lanetype#11856] -[visit_exp dim#11856] -[visit_id dim#11856] -[visit_exp i#69445] -[visit_id i#69445] -[visit_exp (`I8`_lanetype, `%`_dim{i#69452}(16))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#69452}(16)] -[visit_exp i#69452] -[visit_id i#69452] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `EXTEND`_vcvtop__{half#56, sx#12708}(`LOW`_half, `S`_sx)] -[visit_exp half#56] -[visit_id half#56] -[visit_exp sx#12708] -[visit_id sx#12708] +[visit_exp `EXTEND`_vcvtop__(`LOW`_half, `S`_sx)] [visit_exp (`LOW`_half, `S`_sx)] [visit_exp `LOW`_half] [visit_exp ()] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#69426}(135)] -[visit_exp i#69426] -[visit_id i#69426] +[visit_exp `%`_u32(135)] [visit_exp (135)] [visit_exp 135] -[check_dims] dim#11959 dim#11971 half#90 i#69686 i#69693 i#69700 i#69705 i#69712 lanetype#11959 lanetype#11971 shape_1#9 shape_2#9 sx#12742 -dims \ = dim#11959, dim#11971, half#90, i#69686, i#69693, i#69700, i#69705, i#69712, lanetype#11959, lanetype#11971, shape_1#9, shape_2#9, sx#12742 -[visit_exp `VCVTOP`_instr{shape_1#9, shape_2#9}(`%X%`_shape{lanetype#11959, dim#11959, i#69693}(`I16`_lanetype, `%`_dim{i#69700}(8)), `%X%`_shape{lanetype#11971, dim#11971, i#69705}(`I8`_lanetype, `%`_dim{i#69712}(16)), `EXTEND`_vcvtop__{half#90, sx#12742}(`HIGH`_half, `S`_sx))] -[visit_exp shape_1#9] -[visit_id shape_1#9] -[visit_exp shape_2#9] -[visit_id shape_2#9] -[visit_exp (`%X%`_shape{lanetype#11959, dim#11959, i#69693}(`I16`_lanetype, `%`_dim{i#69700}(8)), `%X%`_shape{lanetype#11971, dim#11971, i#69705}(`I8`_lanetype, `%`_dim{i#69712}(16)), `EXTEND`_vcvtop__{half#90, sx#12742}(`HIGH`_half, `S`_sx))] -[visit_exp `%X%`_shape{lanetype#11959, dim#11959, i#69693}(`I16`_lanetype, `%`_dim{i#69700}(8))] -[visit_exp lanetype#11959] -[visit_id lanetype#11959] -[visit_exp dim#11959] -[visit_id dim#11959] -[visit_exp i#69693] -[visit_id i#69693] -[visit_exp (`I16`_lanetype, `%`_dim{i#69700}(8))] +[check_dims] +dims \ = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `%X%`_shape(`I8`_lanetype, `%`_dim(16)), `EXTEND`_vcvtop__(`HIGH`_half, `S`_sx))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `%X%`_shape(`I8`_lanetype, `%`_dim(16)), `EXTEND`_vcvtop__(`HIGH`_half, `S`_sx))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#69700}(8)] -[visit_exp i#69700] -[visit_id i#69700] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `%X%`_shape{lanetype#11971, dim#11971, i#69705}(`I8`_lanetype, `%`_dim{i#69712}(16))] -[visit_exp lanetype#11971] -[visit_id lanetype#11971] -[visit_exp dim#11971] -[visit_id dim#11971] -[visit_exp i#69705] -[visit_id i#69705] -[visit_exp (`I8`_lanetype, `%`_dim{i#69712}(16))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#69712}(16)] -[visit_exp i#69712] -[visit_id i#69712] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `EXTEND`_vcvtop__{half#90, sx#12742}(`HIGH`_half, `S`_sx)] -[visit_exp half#90] -[visit_id half#90] -[visit_exp sx#12742] -[visit_id sx#12742] +[visit_exp `EXTEND`_vcvtop__(`HIGH`_half, `S`_sx)] [visit_exp (`HIGH`_half, `S`_sx)] [visit_exp `HIGH`_half] [visit_exp ()] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#69686}(136)] -[visit_exp i#69686] -[visit_id i#69686] +[visit_exp `%`_u32(136)] [visit_exp (136)] [visit_exp 136] -[check_dims] dim#12074 dim#12086 half#124 i#69946 i#69953 i#69960 i#69965 i#69972 lanetype#12074 lanetype#12086 shape_1#11 shape_2#11 sx#12776 -dims \ = dim#12074, dim#12086, half#124, i#69946, i#69953, i#69960, i#69965, i#69972, lanetype#12074, lanetype#12086, shape_1#11, shape_2#11, sx#12776 -[visit_exp `VCVTOP`_instr{shape_1#11, shape_2#11}(`%X%`_shape{lanetype#12074, dim#12074, i#69953}(`I16`_lanetype, `%`_dim{i#69960}(8)), `%X%`_shape{lanetype#12086, dim#12086, i#69965}(`I8`_lanetype, `%`_dim{i#69972}(16)), `EXTEND`_vcvtop__{half#124, sx#12776}(`LOW`_half, `U`_sx))] -[visit_exp shape_1#11] -[visit_id shape_1#11] -[visit_exp shape_2#11] -[visit_id shape_2#11] -[visit_exp (`%X%`_shape{lanetype#12074, dim#12074, i#69953}(`I16`_lanetype, `%`_dim{i#69960}(8)), `%X%`_shape{lanetype#12086, dim#12086, i#69965}(`I8`_lanetype, `%`_dim{i#69972}(16)), `EXTEND`_vcvtop__{half#124, sx#12776}(`LOW`_half, `U`_sx))] -[visit_exp `%X%`_shape{lanetype#12074, dim#12074, i#69953}(`I16`_lanetype, `%`_dim{i#69960}(8))] -[visit_exp lanetype#12074] -[visit_id lanetype#12074] -[visit_exp dim#12074] -[visit_id dim#12074] -[visit_exp i#69953] -[visit_id i#69953] -[visit_exp (`I16`_lanetype, `%`_dim{i#69960}(8))] +[check_dims] +dims \ = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `%X%`_shape(`I8`_lanetype, `%`_dim(16)), `EXTEND`_vcvtop__(`LOW`_half, `U`_sx))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `%X%`_shape(`I8`_lanetype, `%`_dim(16)), `EXTEND`_vcvtop__(`LOW`_half, `U`_sx))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#69960}(8)] -[visit_exp i#69960] -[visit_id i#69960] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `%X%`_shape{lanetype#12086, dim#12086, i#69965}(`I8`_lanetype, `%`_dim{i#69972}(16))] -[visit_exp lanetype#12086] -[visit_id lanetype#12086] -[visit_exp dim#12086] -[visit_id dim#12086] -[visit_exp i#69965] -[visit_id i#69965] -[visit_exp (`I8`_lanetype, `%`_dim{i#69972}(16))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#69972}(16)] -[visit_exp i#69972] -[visit_id i#69972] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `EXTEND`_vcvtop__{half#124, sx#12776}(`LOW`_half, `U`_sx)] -[visit_exp half#124] -[visit_id half#124] -[visit_exp sx#12776] -[visit_id sx#12776] +[visit_exp `EXTEND`_vcvtop__(`LOW`_half, `U`_sx)] [visit_exp (`LOW`_half, `U`_sx)] [visit_exp `LOW`_half] [visit_exp ()] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#69946}(137)] -[visit_exp i#69946] -[visit_id i#69946] +[visit_exp `%`_u32(137)] [visit_exp (137)] [visit_exp 137] -[check_dims] dim#12189 dim#12201 half#158 i#70206 i#70213 i#70220 i#70225 i#70232 lanetype#12189 lanetype#12201 shape_1#13 shape_2#13 sx#12810 -dims \ = dim#12189, dim#12201, half#158, i#70206, i#70213, i#70220, i#70225, i#70232, lanetype#12189, lanetype#12201, shape_1#13, shape_2#13, sx#12810 -[visit_exp `VCVTOP`_instr{shape_1#13, shape_2#13}(`%X%`_shape{lanetype#12189, dim#12189, i#70213}(`I16`_lanetype, `%`_dim{i#70220}(8)), `%X%`_shape{lanetype#12201, dim#12201, i#70225}(`I8`_lanetype, `%`_dim{i#70232}(16)), `EXTEND`_vcvtop__{half#158, sx#12810}(`HIGH`_half, `U`_sx))] -[visit_exp shape_1#13] -[visit_id shape_1#13] -[visit_exp shape_2#13] -[visit_id shape_2#13] -[visit_exp (`%X%`_shape{lanetype#12189, dim#12189, i#70213}(`I16`_lanetype, `%`_dim{i#70220}(8)), `%X%`_shape{lanetype#12201, dim#12201, i#70225}(`I8`_lanetype, `%`_dim{i#70232}(16)), `EXTEND`_vcvtop__{half#158, sx#12810}(`HIGH`_half, `U`_sx))] -[visit_exp `%X%`_shape{lanetype#12189, dim#12189, i#70213}(`I16`_lanetype, `%`_dim{i#70220}(8))] -[visit_exp lanetype#12189] -[visit_id lanetype#12189] -[visit_exp dim#12189] -[visit_id dim#12189] -[visit_exp i#70213] -[visit_id i#70213] -[visit_exp (`I16`_lanetype, `%`_dim{i#70220}(8))] +[check_dims] +dims \ = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `%X%`_shape(`I8`_lanetype, `%`_dim(16)), `EXTEND`_vcvtop__(`HIGH`_half, `U`_sx))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `%X%`_shape(`I8`_lanetype, `%`_dim(16)), `EXTEND`_vcvtop__(`HIGH`_half, `U`_sx))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#70220}(8)] -[visit_exp i#70220] -[visit_id i#70220] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `%X%`_shape{lanetype#12201, dim#12201, i#70225}(`I8`_lanetype, `%`_dim{i#70232}(16))] -[visit_exp lanetype#12201] -[visit_id lanetype#12201] -[visit_exp dim#12201] -[visit_id dim#12201] -[visit_exp i#70225] -[visit_id i#70225] -[visit_exp (`I8`_lanetype, `%`_dim{i#70232}(16))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#70232}(16)] -[visit_exp i#70232] -[visit_id i#70232] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `EXTEND`_vcvtop__{half#158, sx#12810}(`HIGH`_half, `U`_sx)] -[visit_exp half#158] -[visit_id half#158] -[visit_exp sx#12810] -[visit_id sx#12810] +[visit_exp `EXTEND`_vcvtop__(`HIGH`_half, `U`_sx)] [visit_exp (`HIGH`_half, `U`_sx)] [visit_exp `HIGH`_half] [visit_exp ()] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#70206}(138)] -[visit_exp i#70206] -[visit_id i#70206] +[visit_exp `%`_u32(138)] [visit_exp (138)] [visit_exp 138] ps' = [check_dims] -[check_dims] Jnn#308 dim#12304 i#70466 i#70473 i#70480 ishape#23 lanetype#12304 shape#1583 -dims \ = Jnn#308, dim#12304, i#70466, i#70473, i#70480, ishape#23, lanetype#12304, shape#1583 -[visit_exp `VSHIFTOP`_instr{ishape#23}(`%`_ishape{shape#1583, Jnn#308}(`%X%`_shape{lanetype#12304, dim#12304, i#70473}(`I16`_lanetype, `%`_dim{i#70480}(8))), `SHL`_vshiftop_)] -[visit_exp ishape#23] -[visit_id ishape#23] -[visit_exp (`%`_ishape{shape#1583, Jnn#308}(`%X%`_shape{lanetype#12304, dim#12304, i#70473}(`I16`_lanetype, `%`_dim{i#70480}(8))), `SHL`_vshiftop_)] -[visit_exp `%`_ishape{shape#1583, Jnn#308}(`%X%`_shape{lanetype#12304, dim#12304, i#70473}(`I16`_lanetype, `%`_dim{i#70480}(8)))] -[visit_exp shape#1583] -[visit_id shape#1583] -[visit_exp Jnn#308] -[visit_id Jnn#308] -[visit_exp (`%X%`_shape{lanetype#12304, dim#12304, i#70473}(`I16`_lanetype, `%`_dim{i#70480}(8)))] -[visit_exp `%X%`_shape{lanetype#12304, dim#12304, i#70473}(`I16`_lanetype, `%`_dim{i#70480}(8))] -[visit_exp lanetype#12304] -[visit_id lanetype#12304] -[visit_exp dim#12304] -[visit_id dim#12304] -[visit_exp i#70473] -[visit_id i#70473] -[visit_exp (`I16`_lanetype, `%`_dim{i#70480}(8))] +[check_dims] +dims \ = +[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `SHL`_vshiftop_)] +[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `SHL`_vshiftop_)] +[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#70480}(8)] -[visit_exp i#70480] -[visit_id i#70480] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] [visit_exp `SHL`_vshiftop_] [visit_exp ()] -[visit_exp `%`_u32{i#70466}(139)] -[visit_exp i#70466] -[visit_id i#70466] +[visit_exp `%`_u32(139)] [visit_exp (139)] [visit_exp 139] -[check_dims] Jnn#312 dim#12361 i#70578 i#70585 i#70592 ishape#25 lanetype#12361 shape#1610 sx#12859 -dims \ = Jnn#312, dim#12361, i#70578, i#70585, i#70592, ishape#25, lanetype#12361, shape#1610, sx#12859 -[visit_exp `VSHIFTOP`_instr{ishape#25}(`%`_ishape{shape#1610, Jnn#312}(`%X%`_shape{lanetype#12361, dim#12361, i#70585}(`I16`_lanetype, `%`_dim{i#70592}(8))), `SHR`_vshiftop_{sx#12859}(`S`_sx))] -[visit_exp ishape#25] -[visit_id ishape#25] -[visit_exp (`%`_ishape{shape#1610, Jnn#312}(`%X%`_shape{lanetype#12361, dim#12361, i#70585}(`I16`_lanetype, `%`_dim{i#70592}(8))), `SHR`_vshiftop_{sx#12859}(`S`_sx))] -[visit_exp `%`_ishape{shape#1610, Jnn#312}(`%X%`_shape{lanetype#12361, dim#12361, i#70585}(`I16`_lanetype, `%`_dim{i#70592}(8)))] -[visit_exp shape#1610] -[visit_id shape#1610] -[visit_exp Jnn#312] -[visit_id Jnn#312] -[visit_exp (`%X%`_shape{lanetype#12361, dim#12361, i#70585}(`I16`_lanetype, `%`_dim{i#70592}(8)))] -[visit_exp `%X%`_shape{lanetype#12361, dim#12361, i#70585}(`I16`_lanetype, `%`_dim{i#70592}(8))] -[visit_exp lanetype#12361] -[visit_id lanetype#12361] -[visit_exp dim#12361] -[visit_id dim#12361] -[visit_exp i#70585] -[visit_id i#70585] -[visit_exp (`I16`_lanetype, `%`_dim{i#70592}(8))] +[check_dims] +dims \ = +[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `SHR`_vshiftop_(`S`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `SHR`_vshiftop_(`S`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#70592}(8)] -[visit_exp i#70592] -[visit_id i#70592] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `SHR`_vshiftop_{sx#12859}(`S`_sx)] -[visit_exp sx#12859] -[visit_id sx#12859] +[visit_exp `SHR`_vshiftop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#70578}(140)] -[visit_exp i#70578] -[visit_id i#70578] +[visit_exp `%`_u32(140)] [visit_exp (140)] [visit_exp 140] -[check_dims] Jnn#316 dim#12463 i#70765 i#70772 i#70779 ishape#27 lanetype#12463 shape#1652 sx#12893 -dims \ = Jnn#316, dim#12463, i#70765, i#70772, i#70779, ishape#27, lanetype#12463, shape#1652, sx#12893 -[visit_exp `VSHIFTOP`_instr{ishape#27}(`%`_ishape{shape#1652, Jnn#316}(`%X%`_shape{lanetype#12463, dim#12463, i#70772}(`I16`_lanetype, `%`_dim{i#70779}(8))), `SHR`_vshiftop_{sx#12893}(`U`_sx))] -[visit_exp ishape#27] -[visit_id ishape#27] -[visit_exp (`%`_ishape{shape#1652, Jnn#316}(`%X%`_shape{lanetype#12463, dim#12463, i#70772}(`I16`_lanetype, `%`_dim{i#70779}(8))), `SHR`_vshiftop_{sx#12893}(`U`_sx))] -[visit_exp `%`_ishape{shape#1652, Jnn#316}(`%X%`_shape{lanetype#12463, dim#12463, i#70772}(`I16`_lanetype, `%`_dim{i#70779}(8)))] -[visit_exp shape#1652] -[visit_id shape#1652] -[visit_exp Jnn#316] -[visit_id Jnn#316] -[visit_exp (`%X%`_shape{lanetype#12463, dim#12463, i#70772}(`I16`_lanetype, `%`_dim{i#70779}(8)))] -[visit_exp `%X%`_shape{lanetype#12463, dim#12463, i#70772}(`I16`_lanetype, `%`_dim{i#70779}(8))] -[visit_exp lanetype#12463] -[visit_id lanetype#12463] -[visit_exp dim#12463] -[visit_id dim#12463] -[visit_exp i#70772] -[visit_id i#70772] -[visit_exp (`I16`_lanetype, `%`_dim{i#70779}(8))] +[check_dims] +dims \ = +[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `SHR`_vshiftop_(`U`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `SHR`_vshiftop_(`U`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#70779}(8)] -[visit_exp i#70779] -[visit_id i#70779] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `SHR`_vshiftop_{sx#12893}(`U`_sx)] -[visit_exp sx#12893] -[visit_id sx#12893] +[visit_exp `SHR`_vshiftop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#70765}(141)] -[visit_exp i#70765] -[visit_id i#70765] +[visit_exp `%`_u32(141)] [visit_exp (141)] [visit_exp 141] ps' = [check_dims] -[check_dims] Jnn#320 Jnn#324 dim#12565 dim#12577 half#192 i#70952 i#70959 i#70966 i#70971 i#70978 ishape_1#37 ishape_2#37 lanetype#12565 lanetype#12577 shape#1694 shape#1706 sx#12927 -dims \ = Jnn#320, Jnn#324, dim#12565, dim#12577, half#192, i#70952, i#70959, i#70966, i#70971, i#70978, ishape_1#37, ishape_2#37, lanetype#12565, lanetype#12577, shape#1694, shape#1706, sx#12927 -[visit_exp `VEXTBINOP`_instr{ishape_1#37, ishape_2#37}(`%`_ishape{shape#1694, Jnn#320}(`%X%`_shape{lanetype#12565, dim#12565, i#70959}(`I16`_lanetype, `%`_dim{i#70966}(8))), `%`_ishape{shape#1706, Jnn#324}(`%X%`_shape{lanetype#12577, dim#12577, i#70971}(`I8`_lanetype, `%`_dim{i#70978}(16))), `EXTMUL`_vextbinop__{half#192, sx#12927}(`LOW`_half, `S`_sx))] -[visit_exp ishape_1#37] -[visit_id ishape_1#37] -[visit_exp ishape_2#37] -[visit_id ishape_2#37] -[visit_exp (`%`_ishape{shape#1694, Jnn#320}(`%X%`_shape{lanetype#12565, dim#12565, i#70959}(`I16`_lanetype, `%`_dim{i#70966}(8))), `%`_ishape{shape#1706, Jnn#324}(`%X%`_shape{lanetype#12577, dim#12577, i#70971}(`I8`_lanetype, `%`_dim{i#70978}(16))), `EXTMUL`_vextbinop__{half#192, sx#12927}(`LOW`_half, `S`_sx))] -[visit_exp `%`_ishape{shape#1694, Jnn#320}(`%X%`_shape{lanetype#12565, dim#12565, i#70959}(`I16`_lanetype, `%`_dim{i#70966}(8)))] -[visit_exp shape#1694] -[visit_id shape#1694] -[visit_exp Jnn#320] -[visit_id Jnn#320] -[visit_exp (`%X%`_shape{lanetype#12565, dim#12565, i#70959}(`I16`_lanetype, `%`_dim{i#70966}(8)))] -[visit_exp `%X%`_shape{lanetype#12565, dim#12565, i#70959}(`I16`_lanetype, `%`_dim{i#70966}(8))] -[visit_exp lanetype#12565] -[visit_id lanetype#12565] -[visit_exp dim#12565] -[visit_id dim#12565] -[visit_exp i#70959] -[visit_id i#70959] -[visit_exp (`I16`_lanetype, `%`_dim{i#70966}(8))] +[check_dims] +dims \ = +[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTMUL`_vextbinop__(`LOW`_half, `S`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTMUL`_vextbinop__(`LOW`_half, `S`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#70966}(8)] -[visit_exp i#70966] -[visit_id i#70966] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `%`_ishape{shape#1706, Jnn#324}(`%X%`_shape{lanetype#12577, dim#12577, i#70971}(`I8`_lanetype, `%`_dim{i#70978}(16)))] -[visit_exp shape#1706] -[visit_id shape#1706] -[visit_exp Jnn#324] -[visit_id Jnn#324] -[visit_exp (`%X%`_shape{lanetype#12577, dim#12577, i#70971}(`I8`_lanetype, `%`_dim{i#70978}(16)))] -[visit_exp `%X%`_shape{lanetype#12577, dim#12577, i#70971}(`I8`_lanetype, `%`_dim{i#70978}(16))] -[visit_exp lanetype#12577] -[visit_id lanetype#12577] -[visit_exp dim#12577] -[visit_id dim#12577] -[visit_exp i#70971] -[visit_id i#70971] -[visit_exp (`I8`_lanetype, `%`_dim{i#70978}(16))] +[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#70978}(16)] -[visit_exp i#70978] -[visit_id i#70978] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `EXTMUL`_vextbinop__{half#192, sx#12927}(`LOW`_half, `S`_sx)] -[visit_exp half#192] -[visit_id half#192] -[visit_exp sx#12927] -[visit_id sx#12927] +[visit_exp `EXTMUL`_vextbinop__(`LOW`_half, `S`_sx)] [visit_exp (`LOW`_half, `S`_sx)] [visit_exp `LOW`_half] [visit_exp ()] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#70952}(156)] -[visit_exp i#70952] -[visit_id i#70952] +[visit_exp `%`_u32(156)] [visit_exp (156)] [visit_exp 156] -[check_dims] Jnn#328 Jnn#332 dim#12800 dim#12812 half#226 i#71332 i#71339 i#71346 i#71351 i#71358 ishape_1#39 ishape_2#39 lanetype#12800 lanetype#12812 shape#1809 shape#1821 sx#12961 -dims \ = Jnn#328, Jnn#332, dim#12800, dim#12812, half#226, i#71332, i#71339, i#71346, i#71351, i#71358, ishape_1#39, ishape_2#39, lanetype#12800, lanetype#12812, shape#1809, shape#1821, sx#12961 -[visit_exp `VEXTBINOP`_instr{ishape_1#39, ishape_2#39}(`%`_ishape{shape#1809, Jnn#328}(`%X%`_shape{lanetype#12800, dim#12800, i#71339}(`I16`_lanetype, `%`_dim{i#71346}(8))), `%`_ishape{shape#1821, Jnn#332}(`%X%`_shape{lanetype#12812, dim#12812, i#71351}(`I8`_lanetype, `%`_dim{i#71358}(16))), `EXTMUL`_vextbinop__{half#226, sx#12961}(`HIGH`_half, `S`_sx))] -[visit_exp ishape_1#39] -[visit_id ishape_1#39] -[visit_exp ishape_2#39] -[visit_id ishape_2#39] -[visit_exp (`%`_ishape{shape#1809, Jnn#328}(`%X%`_shape{lanetype#12800, dim#12800, i#71339}(`I16`_lanetype, `%`_dim{i#71346}(8))), `%`_ishape{shape#1821, Jnn#332}(`%X%`_shape{lanetype#12812, dim#12812, i#71351}(`I8`_lanetype, `%`_dim{i#71358}(16))), `EXTMUL`_vextbinop__{half#226, sx#12961}(`HIGH`_half, `S`_sx))] -[visit_exp `%`_ishape{shape#1809, Jnn#328}(`%X%`_shape{lanetype#12800, dim#12800, i#71339}(`I16`_lanetype, `%`_dim{i#71346}(8)))] -[visit_exp shape#1809] -[visit_id shape#1809] -[visit_exp Jnn#328] -[visit_id Jnn#328] -[visit_exp (`%X%`_shape{lanetype#12800, dim#12800, i#71339}(`I16`_lanetype, `%`_dim{i#71346}(8)))] -[visit_exp `%X%`_shape{lanetype#12800, dim#12800, i#71339}(`I16`_lanetype, `%`_dim{i#71346}(8))] -[visit_exp lanetype#12800] -[visit_id lanetype#12800] -[visit_exp dim#12800] -[visit_id dim#12800] -[visit_exp i#71339] -[visit_id i#71339] -[visit_exp (`I16`_lanetype, `%`_dim{i#71346}(8))] +[check_dims] +dims \ = +[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTMUL`_vextbinop__(`HIGH`_half, `S`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTMUL`_vextbinop__(`HIGH`_half, `S`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#71346}(8)] -[visit_exp i#71346] -[visit_id i#71346] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `%`_ishape{shape#1821, Jnn#332}(`%X%`_shape{lanetype#12812, dim#12812, i#71351}(`I8`_lanetype, `%`_dim{i#71358}(16)))] -[visit_exp shape#1821] -[visit_id shape#1821] -[visit_exp Jnn#332] -[visit_id Jnn#332] -[visit_exp (`%X%`_shape{lanetype#12812, dim#12812, i#71351}(`I8`_lanetype, `%`_dim{i#71358}(16)))] -[visit_exp `%X%`_shape{lanetype#12812, dim#12812, i#71351}(`I8`_lanetype, `%`_dim{i#71358}(16))] -[visit_exp lanetype#12812] -[visit_id lanetype#12812] -[visit_exp dim#12812] -[visit_id dim#12812] -[visit_exp i#71351] -[visit_id i#71351] -[visit_exp (`I8`_lanetype, `%`_dim{i#71358}(16))] +[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#71358}(16)] -[visit_exp i#71358] -[visit_id i#71358] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `EXTMUL`_vextbinop__{half#226, sx#12961}(`HIGH`_half, `S`_sx)] -[visit_exp half#226] -[visit_id half#226] -[visit_exp sx#12961] -[visit_id sx#12961] +[visit_exp `EXTMUL`_vextbinop__(`HIGH`_half, `S`_sx)] [visit_exp (`HIGH`_half, `S`_sx)] [visit_exp `HIGH`_half] [visit_exp ()] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#71332}(157)] -[visit_exp i#71332] -[visit_id i#71332] +[visit_exp `%`_u32(157)] [visit_exp (157)] [visit_exp 157] -[check_dims] Jnn#336 Jnn#340 dim#13035 dim#13047 half#260 i#71712 i#71719 i#71726 i#71731 i#71738 ishape_1#41 ishape_2#41 lanetype#13035 lanetype#13047 shape#1924 shape#1936 sx#12995 -dims \ = Jnn#336, Jnn#340, dim#13035, dim#13047, half#260, i#71712, i#71719, i#71726, i#71731, i#71738, ishape_1#41, ishape_2#41, lanetype#13035, lanetype#13047, shape#1924, shape#1936, sx#12995 -[visit_exp `VEXTBINOP`_instr{ishape_1#41, ishape_2#41}(`%`_ishape{shape#1924, Jnn#336}(`%X%`_shape{lanetype#13035, dim#13035, i#71719}(`I16`_lanetype, `%`_dim{i#71726}(8))), `%`_ishape{shape#1936, Jnn#340}(`%X%`_shape{lanetype#13047, dim#13047, i#71731}(`I8`_lanetype, `%`_dim{i#71738}(16))), `EXTMUL`_vextbinop__{half#260, sx#12995}(`LOW`_half, `U`_sx))] -[visit_exp ishape_1#41] -[visit_id ishape_1#41] -[visit_exp ishape_2#41] -[visit_id ishape_2#41] -[visit_exp (`%`_ishape{shape#1924, Jnn#336}(`%X%`_shape{lanetype#13035, dim#13035, i#71719}(`I16`_lanetype, `%`_dim{i#71726}(8))), `%`_ishape{shape#1936, Jnn#340}(`%X%`_shape{lanetype#13047, dim#13047, i#71731}(`I8`_lanetype, `%`_dim{i#71738}(16))), `EXTMUL`_vextbinop__{half#260, sx#12995}(`LOW`_half, `U`_sx))] -[visit_exp `%`_ishape{shape#1924, Jnn#336}(`%X%`_shape{lanetype#13035, dim#13035, i#71719}(`I16`_lanetype, `%`_dim{i#71726}(8)))] -[visit_exp shape#1924] -[visit_id shape#1924] -[visit_exp Jnn#336] -[visit_id Jnn#336] -[visit_exp (`%X%`_shape{lanetype#13035, dim#13035, i#71719}(`I16`_lanetype, `%`_dim{i#71726}(8)))] -[visit_exp `%X%`_shape{lanetype#13035, dim#13035, i#71719}(`I16`_lanetype, `%`_dim{i#71726}(8))] -[visit_exp lanetype#13035] -[visit_id lanetype#13035] -[visit_exp dim#13035] -[visit_id dim#13035] -[visit_exp i#71719] -[visit_id i#71719] -[visit_exp (`I16`_lanetype, `%`_dim{i#71726}(8))] +[check_dims] +dims \ = +[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTMUL`_vextbinop__(`LOW`_half, `U`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTMUL`_vextbinop__(`LOW`_half, `U`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#71726}(8)] -[visit_exp i#71726] -[visit_id i#71726] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `%`_ishape{shape#1936, Jnn#340}(`%X%`_shape{lanetype#13047, dim#13047, i#71731}(`I8`_lanetype, `%`_dim{i#71738}(16)))] -[visit_exp shape#1936] -[visit_id shape#1936] -[visit_exp Jnn#340] -[visit_id Jnn#340] -[visit_exp (`%X%`_shape{lanetype#13047, dim#13047, i#71731}(`I8`_lanetype, `%`_dim{i#71738}(16)))] -[visit_exp `%X%`_shape{lanetype#13047, dim#13047, i#71731}(`I8`_lanetype, `%`_dim{i#71738}(16))] -[visit_exp lanetype#13047] -[visit_id lanetype#13047] -[visit_exp dim#13047] -[visit_id dim#13047] -[visit_exp i#71731] -[visit_id i#71731] -[visit_exp (`I8`_lanetype, `%`_dim{i#71738}(16))] +[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#71738}(16)] -[visit_exp i#71738] -[visit_id i#71738] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `EXTMUL`_vextbinop__{half#260, sx#12995}(`LOW`_half, `U`_sx)] -[visit_exp half#260] -[visit_id half#260] -[visit_exp sx#12995] -[visit_id sx#12995] +[visit_exp `EXTMUL`_vextbinop__(`LOW`_half, `U`_sx)] [visit_exp (`LOW`_half, `U`_sx)] [visit_exp `LOW`_half] [visit_exp ()] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#71712}(158)] -[visit_exp i#71712] -[visit_id i#71712] +[visit_exp `%`_u32(158)] [visit_exp (158)] [visit_exp 158] -[check_dims] Jnn#344 Jnn#348 dim#13270 dim#13282 half#294 i#72092 i#72099 i#72106 i#72111 i#72118 ishape_1#43 ishape_2#43 lanetype#13270 lanetype#13282 shape#2039 shape#2051 sx#13029 -dims \ = Jnn#344, Jnn#348, dim#13270, dim#13282, half#294, i#72092, i#72099, i#72106, i#72111, i#72118, ishape_1#43, ishape_2#43, lanetype#13270, lanetype#13282, shape#2039, shape#2051, sx#13029 -[visit_exp `VEXTBINOP`_instr{ishape_1#43, ishape_2#43}(`%`_ishape{shape#2039, Jnn#344}(`%X%`_shape{lanetype#13270, dim#13270, i#72099}(`I16`_lanetype, `%`_dim{i#72106}(8))), `%`_ishape{shape#2051, Jnn#348}(`%X%`_shape{lanetype#13282, dim#13282, i#72111}(`I8`_lanetype, `%`_dim{i#72118}(16))), `EXTMUL`_vextbinop__{half#294, sx#13029}(`HIGH`_half, `U`_sx))] -[visit_exp ishape_1#43] -[visit_id ishape_1#43] -[visit_exp ishape_2#43] -[visit_id ishape_2#43] -[visit_exp (`%`_ishape{shape#2039, Jnn#344}(`%X%`_shape{lanetype#13270, dim#13270, i#72099}(`I16`_lanetype, `%`_dim{i#72106}(8))), `%`_ishape{shape#2051, Jnn#348}(`%X%`_shape{lanetype#13282, dim#13282, i#72111}(`I8`_lanetype, `%`_dim{i#72118}(16))), `EXTMUL`_vextbinop__{half#294, sx#13029}(`HIGH`_half, `U`_sx))] -[visit_exp `%`_ishape{shape#2039, Jnn#344}(`%X%`_shape{lanetype#13270, dim#13270, i#72099}(`I16`_lanetype, `%`_dim{i#72106}(8)))] -[visit_exp shape#2039] -[visit_id shape#2039] -[visit_exp Jnn#344] -[visit_id Jnn#344] -[visit_exp (`%X%`_shape{lanetype#13270, dim#13270, i#72099}(`I16`_lanetype, `%`_dim{i#72106}(8)))] -[visit_exp `%X%`_shape{lanetype#13270, dim#13270, i#72099}(`I16`_lanetype, `%`_dim{i#72106}(8))] -[visit_exp lanetype#13270] -[visit_id lanetype#13270] -[visit_exp dim#13270] -[visit_id dim#13270] -[visit_exp i#72099] -[visit_id i#72099] -[visit_exp (`I16`_lanetype, `%`_dim{i#72106}(8))] +[check_dims] +dims \ = +[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTMUL`_vextbinop__(`HIGH`_half, `U`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTMUL`_vextbinop__(`HIGH`_half, `U`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#72106}(8)] -[visit_exp i#72106] -[visit_id i#72106] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `%`_ishape{shape#2051, Jnn#348}(`%X%`_shape{lanetype#13282, dim#13282, i#72111}(`I8`_lanetype, `%`_dim{i#72118}(16)))] -[visit_exp shape#2051] -[visit_id shape#2051] -[visit_exp Jnn#348] -[visit_id Jnn#348] -[visit_exp (`%X%`_shape{lanetype#13282, dim#13282, i#72111}(`I8`_lanetype, `%`_dim{i#72118}(16)))] -[visit_exp `%X%`_shape{lanetype#13282, dim#13282, i#72111}(`I8`_lanetype, `%`_dim{i#72118}(16))] -[visit_exp lanetype#13282] -[visit_id lanetype#13282] -[visit_exp dim#13282] -[visit_id dim#13282] -[visit_exp i#72111] -[visit_id i#72111] -[visit_exp (`I8`_lanetype, `%`_dim{i#72118}(16))] +[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#72118}(16)] -[visit_exp i#72118] -[visit_id i#72118] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `EXTMUL`_vextbinop__{half#294, sx#13029}(`HIGH`_half, `U`_sx)] -[visit_exp half#294] -[visit_id half#294] -[visit_exp sx#13029] -[visit_id sx#13029] +[visit_exp `EXTMUL`_vextbinop__(`HIGH`_half, `U`_sx)] [visit_exp (`HIGH`_half, `U`_sx)] [visit_exp `HIGH`_half] [visit_exp ()] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#72092}(159)] -[visit_exp i#72092] -[visit_id i#72092] +[visit_exp `%`_u32(159)] [visit_exp (159)] [visit_exp 159] -[check_dims] Jnn#352 Jnn#356 dim#13505 dim#13517 i#72472 i#72479 i#72486 i#72491 i#72498 ishape_1#45 ishape_2#45 lanetype#13505 lanetype#13517 shape#2154 shape#2166 -dims \ = Jnn#352, Jnn#356, dim#13505, dim#13517, i#72472, i#72479, i#72486, i#72491, i#72498, ishape_1#45, ishape_2#45, lanetype#13505, lanetype#13517, shape#2154, shape#2166 -[visit_exp `VEXTBINOP`_instr{ishape_1#45, ishape_2#45}(`%`_ishape{shape#2154, Jnn#352}(`%X%`_shape{lanetype#13505, dim#13505, i#72479}(`I16`_lanetype, `%`_dim{i#72486}(8))), `%`_ishape{shape#2166, Jnn#356}(`%X%`_shape{lanetype#13517, dim#13517, i#72491}(`I8`_lanetype, `%`_dim{i#72498}(16))), `RELAXED_DOTS`_vextbinop__)] -[visit_exp ishape_1#45] -[visit_id ishape_1#45] -[visit_exp ishape_2#45] -[visit_id ishape_2#45] -[visit_exp (`%`_ishape{shape#2154, Jnn#352}(`%X%`_shape{lanetype#13505, dim#13505, i#72479}(`I16`_lanetype, `%`_dim{i#72486}(8))), `%`_ishape{shape#2166, Jnn#356}(`%X%`_shape{lanetype#13517, dim#13517, i#72491}(`I8`_lanetype, `%`_dim{i#72498}(16))), `RELAXED_DOTS`_vextbinop__)] -[visit_exp `%`_ishape{shape#2154, Jnn#352}(`%X%`_shape{lanetype#13505, dim#13505, i#72479}(`I16`_lanetype, `%`_dim{i#72486}(8)))] -[visit_exp shape#2154] -[visit_id shape#2154] -[visit_exp Jnn#352] -[visit_id Jnn#352] -[visit_exp (`%X%`_shape{lanetype#13505, dim#13505, i#72479}(`I16`_lanetype, `%`_dim{i#72486}(8)))] -[visit_exp `%X%`_shape{lanetype#13505, dim#13505, i#72479}(`I16`_lanetype, `%`_dim{i#72486}(8))] -[visit_exp lanetype#13505] -[visit_id lanetype#13505] -[visit_exp dim#13505] -[visit_id dim#13505] -[visit_exp i#72479] -[visit_id i#72479] -[visit_exp (`I16`_lanetype, `%`_dim{i#72486}(8))] +[check_dims] +dims \ = +[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `RELAXED_DOTS`_vextbinop__)] +[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `RELAXED_DOTS`_vextbinop__)] +[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#72486}(8)] -[visit_exp i#72486] -[visit_id i#72486] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `%`_ishape{shape#2166, Jnn#356}(`%X%`_shape{lanetype#13517, dim#13517, i#72491}(`I8`_lanetype, `%`_dim{i#72498}(16)))] -[visit_exp shape#2166] -[visit_id shape#2166] -[visit_exp Jnn#356] -[visit_id Jnn#356] -[visit_exp (`%X%`_shape{lanetype#13517, dim#13517, i#72491}(`I8`_lanetype, `%`_dim{i#72498}(16)))] -[visit_exp `%X%`_shape{lanetype#13517, dim#13517, i#72491}(`I8`_lanetype, `%`_dim{i#72498}(16))] -[visit_exp lanetype#13517] -[visit_id lanetype#13517] -[visit_exp dim#13517] -[visit_id dim#13517] -[visit_exp i#72491] -[visit_id i#72491] -[visit_exp (`I8`_lanetype, `%`_dim{i#72498}(16))] +[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#72498}(16)] -[visit_exp i#72498] -[visit_id i#72498] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] [visit_exp `RELAXED_DOTS`_vextbinop__] [visit_exp ()] -[visit_exp `%`_u32{i#72472}(274)] -[visit_exp i#72472] -[visit_id i#72472] +[visit_exp `%`_u32(274)] [visit_exp (274)] [visit_exp 274] ps' = [check_dims] -[check_dims] Jnn#360 Jnn#364 dim#13740 dim#13752 i#72852 i#72859 i#72866 i#72871 i#72878 ishape_1#47 ishape_2#47 lanetype#13740 lanetype#13752 shape#2269 shape#2281 sx#13093 -dims \ = Jnn#360, Jnn#364, dim#13740, dim#13752, i#72852, i#72859, i#72866, i#72871, i#72878, ishape_1#47, ishape_2#47, lanetype#13740, lanetype#13752, shape#2269, shape#2281, sx#13093 -[visit_exp `VEXTUNOP`_instr{ishape_1#47, ishape_2#47}(`%`_ishape{shape#2269, Jnn#360}(`%X%`_shape{lanetype#13740, dim#13740, i#72859}(`I32`_lanetype, `%`_dim{i#72866}(4))), `%`_ishape{shape#2281, Jnn#364}(`%X%`_shape{lanetype#13752, dim#13752, i#72871}(`I16`_lanetype, `%`_dim{i#72878}(8))), `EXTADD_PAIRWISE`_vextunop__{sx#13093}(`S`_sx))] -[visit_exp ishape_1#47] -[visit_id ishape_1#47] -[visit_exp ishape_2#47] -[visit_id ishape_2#47] -[visit_exp (`%`_ishape{shape#2269, Jnn#360}(`%X%`_shape{lanetype#13740, dim#13740, i#72859}(`I32`_lanetype, `%`_dim{i#72866}(4))), `%`_ishape{shape#2281, Jnn#364}(`%X%`_shape{lanetype#13752, dim#13752, i#72871}(`I16`_lanetype, `%`_dim{i#72878}(8))), `EXTADD_PAIRWISE`_vextunop__{sx#13093}(`S`_sx))] -[visit_exp `%`_ishape{shape#2269, Jnn#360}(`%X%`_shape{lanetype#13740, dim#13740, i#72859}(`I32`_lanetype, `%`_dim{i#72866}(4)))] -[visit_exp shape#2269] -[visit_id shape#2269] -[visit_exp Jnn#360] -[visit_id Jnn#360] -[visit_exp (`%X%`_shape{lanetype#13740, dim#13740, i#72859}(`I32`_lanetype, `%`_dim{i#72866}(4)))] -[visit_exp `%X%`_shape{lanetype#13740, dim#13740, i#72859}(`I32`_lanetype, `%`_dim{i#72866}(4))] -[visit_exp lanetype#13740] -[visit_id lanetype#13740] -[visit_exp dim#13740] -[visit_id dim#13740] -[visit_exp i#72859] -[visit_id i#72859] -[visit_exp (`I32`_lanetype, `%`_dim{i#72866}(4))] +[check_dims] +dims \ = +[visit_exp `VEXTUNOP`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTADD_PAIRWISE`_vextunop__(`S`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTADD_PAIRWISE`_vextunop__(`S`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#72866}(4)] -[visit_exp i#72866] -[visit_id i#72866] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%`_ishape{shape#2281, Jnn#364}(`%X%`_shape{lanetype#13752, dim#13752, i#72871}(`I16`_lanetype, `%`_dim{i#72878}(8)))] -[visit_exp shape#2281] -[visit_id shape#2281] -[visit_exp Jnn#364] -[visit_id Jnn#364] -[visit_exp (`%X%`_shape{lanetype#13752, dim#13752, i#72871}(`I16`_lanetype, `%`_dim{i#72878}(8)))] -[visit_exp `%X%`_shape{lanetype#13752, dim#13752, i#72871}(`I16`_lanetype, `%`_dim{i#72878}(8))] -[visit_exp lanetype#13752] -[visit_id lanetype#13752] -[visit_exp dim#13752] -[visit_id dim#13752] -[visit_exp i#72871] -[visit_id i#72871] -[visit_exp (`I16`_lanetype, `%`_dim{i#72878}(8))] +[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#72878}(8)] -[visit_exp i#72878] -[visit_id i#72878] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `EXTADD_PAIRWISE`_vextunop__{sx#13093}(`S`_sx)] -[visit_exp sx#13093] -[visit_id sx#13093] +[visit_exp `EXTADD_PAIRWISE`_vextunop__(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#72852}(126)] -[visit_exp i#72852] -[visit_id i#72852] +[visit_exp `%`_u32(126)] [visit_exp (126)] [visit_exp 126] -[check_dims] Jnn#368 Jnn#372 dim#13975 dim#13987 i#73232 i#73239 i#73246 i#73251 i#73258 ishape_1#49 ishape_2#49 lanetype#13975 lanetype#13987 shape#2384 shape#2396 sx#13127 -dims \ = Jnn#368, Jnn#372, dim#13975, dim#13987, i#73232, i#73239, i#73246, i#73251, i#73258, ishape_1#49, ishape_2#49, lanetype#13975, lanetype#13987, shape#2384, shape#2396, sx#13127 -[visit_exp `VEXTUNOP`_instr{ishape_1#49, ishape_2#49}(`%`_ishape{shape#2384, Jnn#368}(`%X%`_shape{lanetype#13975, dim#13975, i#73239}(`I32`_lanetype, `%`_dim{i#73246}(4))), `%`_ishape{shape#2396, Jnn#372}(`%X%`_shape{lanetype#13987, dim#13987, i#73251}(`I16`_lanetype, `%`_dim{i#73258}(8))), `EXTADD_PAIRWISE`_vextunop__{sx#13127}(`U`_sx))] -[visit_exp ishape_1#49] -[visit_id ishape_1#49] -[visit_exp ishape_2#49] -[visit_id ishape_2#49] -[visit_exp (`%`_ishape{shape#2384, Jnn#368}(`%X%`_shape{lanetype#13975, dim#13975, i#73239}(`I32`_lanetype, `%`_dim{i#73246}(4))), `%`_ishape{shape#2396, Jnn#372}(`%X%`_shape{lanetype#13987, dim#13987, i#73251}(`I16`_lanetype, `%`_dim{i#73258}(8))), `EXTADD_PAIRWISE`_vextunop__{sx#13127}(`U`_sx))] -[visit_exp `%`_ishape{shape#2384, Jnn#368}(`%X%`_shape{lanetype#13975, dim#13975, i#73239}(`I32`_lanetype, `%`_dim{i#73246}(4)))] -[visit_exp shape#2384] -[visit_id shape#2384] -[visit_exp Jnn#368] -[visit_id Jnn#368] -[visit_exp (`%X%`_shape{lanetype#13975, dim#13975, i#73239}(`I32`_lanetype, `%`_dim{i#73246}(4)))] -[visit_exp `%X%`_shape{lanetype#13975, dim#13975, i#73239}(`I32`_lanetype, `%`_dim{i#73246}(4))] -[visit_exp lanetype#13975] -[visit_id lanetype#13975] -[visit_exp dim#13975] -[visit_id dim#13975] -[visit_exp i#73239] -[visit_id i#73239] -[visit_exp (`I32`_lanetype, `%`_dim{i#73246}(4))] +[check_dims] +dims \ = +[visit_exp `VEXTUNOP`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTADD_PAIRWISE`_vextunop__(`U`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTADD_PAIRWISE`_vextunop__(`U`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#73246}(4)] -[visit_exp i#73246] -[visit_id i#73246] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%`_ishape{shape#2396, Jnn#372}(`%X%`_shape{lanetype#13987, dim#13987, i#73251}(`I16`_lanetype, `%`_dim{i#73258}(8)))] -[visit_exp shape#2396] -[visit_id shape#2396] -[visit_exp Jnn#372] -[visit_id Jnn#372] -[visit_exp (`%X%`_shape{lanetype#13987, dim#13987, i#73251}(`I16`_lanetype, `%`_dim{i#73258}(8)))] -[visit_exp `%X%`_shape{lanetype#13987, dim#13987, i#73251}(`I16`_lanetype, `%`_dim{i#73258}(8))] -[visit_exp lanetype#13987] -[visit_id lanetype#13987] -[visit_exp dim#13987] -[visit_id dim#13987] -[visit_exp i#73251] -[visit_id i#73251] -[visit_exp (`I16`_lanetype, `%`_dim{i#73258}(8))] +[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#73258}(8)] -[visit_exp i#73258] -[visit_id i#73258] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `EXTADD_PAIRWISE`_vextunop__{sx#13127}(`U`_sx)] -[visit_exp sx#13127] -[visit_id sx#13127] +[visit_exp `EXTADD_PAIRWISE`_vextunop__(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#73232}(127)] -[visit_exp i#73232] -[visit_id i#73232] +[visit_exp `%`_u32(127)] [visit_exp (127)] [visit_exp 127] ps' = [check_dims] -[check_dims] dim#14210 i#73612 i#73619 i#73626 lanetype#14210 shape#2489 -dims \ = dim#14210, i#73612, i#73619, i#73626, lanetype#14210, shape#2489 -[visit_exp `VUNOP`_instr{shape#2489}(`%X%`_shape{lanetype#14210, dim#14210, i#73619}(`I32`_lanetype, `%`_dim{i#73626}(4)), `ABS`_vunop_)] -[visit_exp shape#2489] -[visit_id shape#2489] -[visit_exp (`%X%`_shape{lanetype#14210, dim#14210, i#73619}(`I32`_lanetype, `%`_dim{i#73626}(4)), `ABS`_vunop_)] -[visit_exp `%X%`_shape{lanetype#14210, dim#14210, i#73619}(`I32`_lanetype, `%`_dim{i#73626}(4))] -[visit_exp lanetype#14210] -[visit_id lanetype#14210] -[visit_exp dim#14210] -[visit_id dim#14210] -[visit_exp i#73619] -[visit_id i#73619] -[visit_exp (`I32`_lanetype, `%`_dim{i#73626}(4))] +[check_dims] +dims \ = +[visit_exp `VUNOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `ABS`_vunop_)] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `ABS`_vunop_)] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#73626}(4)] -[visit_exp i#73626] -[visit_id i#73626] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `ABS`_vunop_] [visit_exp ()] -[visit_exp `%`_u32{i#73612}(160)] -[visit_exp i#73612] -[visit_id i#73612] +[visit_exp `%`_u32(160)] [visit_exp (160)] [visit_exp 160] -[check_dims] dim#14237 i#73694 i#73701 i#73708 lanetype#14237 shape#2491 -dims \ = dim#14237, i#73694, i#73701, i#73708, lanetype#14237, shape#2491 -[visit_exp `VUNOP`_instr{shape#2491}(`%X%`_shape{lanetype#14237, dim#14237, i#73701}(`I32`_lanetype, `%`_dim{i#73708}(4)), `NEG`_vunop_)] -[visit_exp shape#2491] -[visit_id shape#2491] -[visit_exp (`%X%`_shape{lanetype#14237, dim#14237, i#73701}(`I32`_lanetype, `%`_dim{i#73708}(4)), `NEG`_vunop_)] -[visit_exp `%X%`_shape{lanetype#14237, dim#14237, i#73701}(`I32`_lanetype, `%`_dim{i#73708}(4))] -[visit_exp lanetype#14237] -[visit_id lanetype#14237] -[visit_exp dim#14237] -[visit_id dim#14237] -[visit_exp i#73701] -[visit_id i#73701] -[visit_exp (`I32`_lanetype, `%`_dim{i#73708}(4))] +[check_dims] +dims \ = +[visit_exp `VUNOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `NEG`_vunop_)] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `NEG`_vunop_)] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#73708}(4)] -[visit_exp i#73708] -[visit_id i#73708] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `NEG`_vunop_] [visit_exp ()] -[visit_exp `%`_u32{i#73694}(161)] -[visit_exp i#73694] -[visit_id i#73694] +[visit_exp `%`_u32(161)] [visit_exp (161)] [visit_exp 161] ps' = [check_dims] -[check_dims] dim#14264 i#73776 i#73783 i#73790 lanetype#14264 shape#2493 -dims \ = dim#14264, i#73776, i#73783, i#73790, lanetype#14264, shape#2493 -[visit_exp `VTESTOP`_instr{shape#2493}(`%X%`_shape{lanetype#14264, dim#14264, i#73783}(`I32`_lanetype, `%`_dim{i#73790}(4)), `ALL_TRUE`_vtestop_)] -[visit_exp shape#2493] -[visit_id shape#2493] -[visit_exp (`%X%`_shape{lanetype#14264, dim#14264, i#73783}(`I32`_lanetype, `%`_dim{i#73790}(4)), `ALL_TRUE`_vtestop_)] -[visit_exp `%X%`_shape{lanetype#14264, dim#14264, i#73783}(`I32`_lanetype, `%`_dim{i#73790}(4))] -[visit_exp lanetype#14264] -[visit_id lanetype#14264] -[visit_exp dim#14264] -[visit_id dim#14264] -[visit_exp i#73783] -[visit_id i#73783] -[visit_exp (`I32`_lanetype, `%`_dim{i#73790}(4))] +[check_dims] +dims \ = +[visit_exp `VTESTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `ALL_TRUE`_vtestop_)] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `ALL_TRUE`_vtestop_)] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#73790}(4)] -[visit_exp i#73790] -[visit_id i#73790] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `ALL_TRUE`_vtestop_] [visit_exp ()] -[visit_exp `%`_u32{i#73776}(163)] -[visit_exp i#73776] -[visit_id i#73776] +[visit_exp `%`_u32(163)] [visit_exp (163)] [visit_exp 163] ps' = [check_dims] -[check_dims] Jnn#376 dim#14291 i#73858 i#73865 i#73872 ishape#29 lanetype#14291 shape#2505 -dims \ = Jnn#376, dim#14291, i#73858, i#73865, i#73872, ishape#29, lanetype#14291, shape#2505 -[visit_exp `VBITMASK`_instr{ishape#29}(`%`_ishape{shape#2505, Jnn#376}(`%X%`_shape{lanetype#14291, dim#14291, i#73865}(`I32`_lanetype, `%`_dim{i#73872}(4))))] -[visit_exp ishape#29] -[visit_id ishape#29] -[visit_exp (`%`_ishape{shape#2505, Jnn#376}(`%X%`_shape{lanetype#14291, dim#14291, i#73865}(`I32`_lanetype, `%`_dim{i#73872}(4))))] -[visit_exp `%`_ishape{shape#2505, Jnn#376}(`%X%`_shape{lanetype#14291, dim#14291, i#73865}(`I32`_lanetype, `%`_dim{i#73872}(4)))] -[visit_exp shape#2505] -[visit_id shape#2505] -[visit_exp Jnn#376] -[visit_id Jnn#376] -[visit_exp (`%X%`_shape{lanetype#14291, dim#14291, i#73865}(`I32`_lanetype, `%`_dim{i#73872}(4)))] -[visit_exp `%X%`_shape{lanetype#14291, dim#14291, i#73865}(`I32`_lanetype, `%`_dim{i#73872}(4))] -[visit_exp lanetype#14291] -[visit_id lanetype#14291] -[visit_exp dim#14291] -[visit_id dim#14291] -[visit_exp i#73865] -[visit_id i#73865] -[visit_exp (`I32`_lanetype, `%`_dim{i#73872}(4))] +[check_dims] +dims \ = +[visit_exp `VBITMASK`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))))] +[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))))] +[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#73872}(4)] -[visit_exp i#73872] -[visit_id i#73872] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%`_u32{i#73858}(164)] -[visit_exp i#73858] -[visit_id i#73858] +[visit_exp `%`_u32(164)] [visit_exp (164)] [visit_exp 164] ps' = [check_dims] -[check_dims] dim#14303 dim#14315 half#358 i#73895 i#73902 i#73909 i#73914 i#73921 lanetype#14303 lanetype#14315 shape_1#15 shape_2#15 sx#13161 -dims \ = dim#14303, dim#14315, half#358, i#73895, i#73902, i#73909, i#73914, i#73921, lanetype#14303, lanetype#14315, shape_1#15, shape_2#15, sx#13161 -[visit_exp `VCVTOP`_instr{shape_1#15, shape_2#15}(`%X%`_shape{lanetype#14303, dim#14303, i#73902}(`I32`_lanetype, `%`_dim{i#73909}(4)), `%X%`_shape{lanetype#14315, dim#14315, i#73914}(`I16`_lanetype, `%`_dim{i#73921}(8)), `EXTEND`_vcvtop__{half#358, sx#13161}(`LOW`_half, `S`_sx))] -[visit_exp shape_1#15] -[visit_id shape_1#15] -[visit_exp shape_2#15] -[visit_id shape_2#15] -[visit_exp (`%X%`_shape{lanetype#14303, dim#14303, i#73902}(`I32`_lanetype, `%`_dim{i#73909}(4)), `%X%`_shape{lanetype#14315, dim#14315, i#73914}(`I16`_lanetype, `%`_dim{i#73921}(8)), `EXTEND`_vcvtop__{half#358, sx#13161}(`LOW`_half, `S`_sx))] -[visit_exp `%X%`_shape{lanetype#14303, dim#14303, i#73902}(`I32`_lanetype, `%`_dim{i#73909}(4))] -[visit_exp lanetype#14303] -[visit_id lanetype#14303] -[visit_exp dim#14303] -[visit_id dim#14303] -[visit_exp i#73902] -[visit_id i#73902] -[visit_exp (`I32`_lanetype, `%`_dim{i#73909}(4))] +[check_dims] +dims \ = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`I16`_lanetype, `%`_dim(8)), `EXTEND`_vcvtop__(`LOW`_half, `S`_sx))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`I16`_lanetype, `%`_dim(8)), `EXTEND`_vcvtop__(`LOW`_half, `S`_sx))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#73909}(4)] -[visit_exp i#73909] -[visit_id i#73909] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%X%`_shape{lanetype#14315, dim#14315, i#73914}(`I16`_lanetype, `%`_dim{i#73921}(8))] -[visit_exp lanetype#14315] -[visit_id lanetype#14315] -[visit_exp dim#14315] -[visit_id dim#14315] -[visit_exp i#73914] -[visit_id i#73914] -[visit_exp (`I16`_lanetype, `%`_dim{i#73921}(8))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#73921}(8)] -[visit_exp i#73921] -[visit_id i#73921] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `EXTEND`_vcvtop__{half#358, sx#13161}(`LOW`_half, `S`_sx)] -[visit_exp half#358] -[visit_id half#358] -[visit_exp sx#13161] -[visit_id sx#13161] +[visit_exp `EXTEND`_vcvtop__(`LOW`_half, `S`_sx)] [visit_exp (`LOW`_half, `S`_sx)] [visit_exp `LOW`_half] [visit_exp ()] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#73895}(167)] -[visit_exp i#73895] -[visit_id i#73895] +[visit_exp `%`_u32(167)] [visit_exp (167)] [visit_exp 167] -[check_dims] dim#14418 dim#14430 half#392 i#74155 i#74162 i#74169 i#74174 i#74181 lanetype#14418 lanetype#14430 shape_1#17 shape_2#17 sx#13195 -dims \ = dim#14418, dim#14430, half#392, i#74155, i#74162, i#74169, i#74174, i#74181, lanetype#14418, lanetype#14430, shape_1#17, shape_2#17, sx#13195 -[visit_exp `VCVTOP`_instr{shape_1#17, shape_2#17}(`%X%`_shape{lanetype#14418, dim#14418, i#74162}(`I32`_lanetype, `%`_dim{i#74169}(4)), `%X%`_shape{lanetype#14430, dim#14430, i#74174}(`I16`_lanetype, `%`_dim{i#74181}(8)), `EXTEND`_vcvtop__{half#392, sx#13195}(`HIGH`_half, `S`_sx))] -[visit_exp shape_1#17] -[visit_id shape_1#17] -[visit_exp shape_2#17] -[visit_id shape_2#17] -[visit_exp (`%X%`_shape{lanetype#14418, dim#14418, i#74162}(`I32`_lanetype, `%`_dim{i#74169}(4)), `%X%`_shape{lanetype#14430, dim#14430, i#74174}(`I16`_lanetype, `%`_dim{i#74181}(8)), `EXTEND`_vcvtop__{half#392, sx#13195}(`HIGH`_half, `S`_sx))] -[visit_exp `%X%`_shape{lanetype#14418, dim#14418, i#74162}(`I32`_lanetype, `%`_dim{i#74169}(4))] -[visit_exp lanetype#14418] -[visit_id lanetype#14418] -[visit_exp dim#14418] -[visit_id dim#14418] -[visit_exp i#74162] -[visit_id i#74162] -[visit_exp (`I32`_lanetype, `%`_dim{i#74169}(4))] +[check_dims] +dims \ = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`I16`_lanetype, `%`_dim(8)), `EXTEND`_vcvtop__(`HIGH`_half, `S`_sx))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`I16`_lanetype, `%`_dim(8)), `EXTEND`_vcvtop__(`HIGH`_half, `S`_sx))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#74169}(4)] -[visit_exp i#74169] -[visit_id i#74169] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%X%`_shape{lanetype#14430, dim#14430, i#74174}(`I16`_lanetype, `%`_dim{i#74181}(8))] -[visit_exp lanetype#14430] -[visit_id lanetype#14430] -[visit_exp dim#14430] -[visit_id dim#14430] -[visit_exp i#74174] -[visit_id i#74174] -[visit_exp (`I16`_lanetype, `%`_dim{i#74181}(8))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#74181}(8)] -[visit_exp i#74181] -[visit_id i#74181] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `EXTEND`_vcvtop__{half#392, sx#13195}(`HIGH`_half, `S`_sx)] -[visit_exp half#392] -[visit_id half#392] -[visit_exp sx#13195] -[visit_id sx#13195] +[visit_exp `EXTEND`_vcvtop__(`HIGH`_half, `S`_sx)] [visit_exp (`HIGH`_half, `S`_sx)] [visit_exp `HIGH`_half] [visit_exp ()] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#74155}(168)] -[visit_exp i#74155] -[visit_id i#74155] +[visit_exp `%`_u32(168)] [visit_exp (168)] [visit_exp 168] -[check_dims] dim#14533 dim#14545 half#426 i#74415 i#74422 i#74429 i#74434 i#74441 lanetype#14533 lanetype#14545 shape_1#19 shape_2#19 sx#13229 -dims \ = dim#14533, dim#14545, half#426, i#74415, i#74422, i#74429, i#74434, i#74441, lanetype#14533, lanetype#14545, shape_1#19, shape_2#19, sx#13229 -[visit_exp `VCVTOP`_instr{shape_1#19, shape_2#19}(`%X%`_shape{lanetype#14533, dim#14533, i#74422}(`I32`_lanetype, `%`_dim{i#74429}(4)), `%X%`_shape{lanetype#14545, dim#14545, i#74434}(`I16`_lanetype, `%`_dim{i#74441}(8)), `EXTEND`_vcvtop__{half#426, sx#13229}(`LOW`_half, `U`_sx))] -[visit_exp shape_1#19] -[visit_id shape_1#19] -[visit_exp shape_2#19] -[visit_id shape_2#19] -[visit_exp (`%X%`_shape{lanetype#14533, dim#14533, i#74422}(`I32`_lanetype, `%`_dim{i#74429}(4)), `%X%`_shape{lanetype#14545, dim#14545, i#74434}(`I16`_lanetype, `%`_dim{i#74441}(8)), `EXTEND`_vcvtop__{half#426, sx#13229}(`LOW`_half, `U`_sx))] -[visit_exp `%X%`_shape{lanetype#14533, dim#14533, i#74422}(`I32`_lanetype, `%`_dim{i#74429}(4))] -[visit_exp lanetype#14533] -[visit_id lanetype#14533] -[visit_exp dim#14533] -[visit_id dim#14533] -[visit_exp i#74422] -[visit_id i#74422] -[visit_exp (`I32`_lanetype, `%`_dim{i#74429}(4))] +[check_dims] +dims \ = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`I16`_lanetype, `%`_dim(8)), `EXTEND`_vcvtop__(`LOW`_half, `U`_sx))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`I16`_lanetype, `%`_dim(8)), `EXTEND`_vcvtop__(`LOW`_half, `U`_sx))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#74429}(4)] -[visit_exp i#74429] -[visit_id i#74429] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%X%`_shape{lanetype#14545, dim#14545, i#74434}(`I16`_lanetype, `%`_dim{i#74441}(8))] -[visit_exp lanetype#14545] -[visit_id lanetype#14545] -[visit_exp dim#14545] -[visit_id dim#14545] -[visit_exp i#74434] -[visit_id i#74434] -[visit_exp (`I16`_lanetype, `%`_dim{i#74441}(8))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#74441}(8)] -[visit_exp i#74441] -[visit_id i#74441] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `EXTEND`_vcvtop__{half#426, sx#13229}(`LOW`_half, `U`_sx)] -[visit_exp half#426] -[visit_id half#426] -[visit_exp sx#13229] -[visit_id sx#13229] +[visit_exp `EXTEND`_vcvtop__(`LOW`_half, `U`_sx)] [visit_exp (`LOW`_half, `U`_sx)] [visit_exp `LOW`_half] [visit_exp ()] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#74415}(169)] -[visit_exp i#74415] -[visit_id i#74415] +[visit_exp `%`_u32(169)] [visit_exp (169)] [visit_exp 169] -[check_dims] dim#14648 dim#14660 half#460 i#74675 i#74682 i#74689 i#74694 i#74701 lanetype#14648 lanetype#14660 shape_1#21 shape_2#21 sx#13263 -dims \ = dim#14648, dim#14660, half#460, i#74675, i#74682, i#74689, i#74694, i#74701, lanetype#14648, lanetype#14660, shape_1#21, shape_2#21, sx#13263 -[visit_exp `VCVTOP`_instr{shape_1#21, shape_2#21}(`%X%`_shape{lanetype#14648, dim#14648, i#74682}(`I32`_lanetype, `%`_dim{i#74689}(4)), `%X%`_shape{lanetype#14660, dim#14660, i#74694}(`I16`_lanetype, `%`_dim{i#74701}(8)), `EXTEND`_vcvtop__{half#460, sx#13263}(`HIGH`_half, `U`_sx))] -[visit_exp shape_1#21] -[visit_id shape_1#21] -[visit_exp shape_2#21] -[visit_id shape_2#21] -[visit_exp (`%X%`_shape{lanetype#14648, dim#14648, i#74682}(`I32`_lanetype, `%`_dim{i#74689}(4)), `%X%`_shape{lanetype#14660, dim#14660, i#74694}(`I16`_lanetype, `%`_dim{i#74701}(8)), `EXTEND`_vcvtop__{half#460, sx#13263}(`HIGH`_half, `U`_sx))] -[visit_exp `%X%`_shape{lanetype#14648, dim#14648, i#74682}(`I32`_lanetype, `%`_dim{i#74689}(4))] -[visit_exp lanetype#14648] -[visit_id lanetype#14648] -[visit_exp dim#14648] -[visit_id dim#14648] -[visit_exp i#74682] -[visit_id i#74682] -[visit_exp (`I32`_lanetype, `%`_dim{i#74689}(4))] +[check_dims] +dims \ = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`I16`_lanetype, `%`_dim(8)), `EXTEND`_vcvtop__(`HIGH`_half, `U`_sx))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`I16`_lanetype, `%`_dim(8)), `EXTEND`_vcvtop__(`HIGH`_half, `U`_sx))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#74689}(4)] -[visit_exp i#74689] -[visit_id i#74689] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%X%`_shape{lanetype#14660, dim#14660, i#74694}(`I16`_lanetype, `%`_dim{i#74701}(8))] -[visit_exp lanetype#14660] -[visit_id lanetype#14660] -[visit_exp dim#14660] -[visit_id dim#14660] -[visit_exp i#74694] -[visit_id i#74694] -[visit_exp (`I16`_lanetype, `%`_dim{i#74701}(8))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#74701}(8)] -[visit_exp i#74701] -[visit_id i#74701] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `EXTEND`_vcvtop__{half#460, sx#13263}(`HIGH`_half, `U`_sx)] -[visit_exp half#460] -[visit_id half#460] -[visit_exp sx#13263] -[visit_id sx#13263] +[visit_exp `EXTEND`_vcvtop__(`HIGH`_half, `U`_sx)] [visit_exp (`HIGH`_half, `U`_sx)] [visit_exp `HIGH`_half] [visit_exp ()] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#74675}(170)] -[visit_exp i#74675] -[visit_id i#74675] +[visit_exp `%`_u32(170)] [visit_exp (170)] [visit_exp 170] ps' = [check_dims] -[check_dims] Jnn#380 dim#14763 i#74935 i#74942 i#74949 ishape#31 lanetype#14763 shape#2517 -dims \ = Jnn#380, dim#14763, i#74935, i#74942, i#74949, ishape#31, lanetype#14763, shape#2517 -[visit_exp `VSHIFTOP`_instr{ishape#31}(`%`_ishape{shape#2517, Jnn#380}(`%X%`_shape{lanetype#14763, dim#14763, i#74942}(`I32`_lanetype, `%`_dim{i#74949}(4))), `SHL`_vshiftop_)] -[visit_exp ishape#31] -[visit_id ishape#31] -[visit_exp (`%`_ishape{shape#2517, Jnn#380}(`%X%`_shape{lanetype#14763, dim#14763, i#74942}(`I32`_lanetype, `%`_dim{i#74949}(4))), `SHL`_vshiftop_)] -[visit_exp `%`_ishape{shape#2517, Jnn#380}(`%X%`_shape{lanetype#14763, dim#14763, i#74942}(`I32`_lanetype, `%`_dim{i#74949}(4)))] -[visit_exp shape#2517] -[visit_id shape#2517] -[visit_exp Jnn#380] -[visit_id Jnn#380] -[visit_exp (`%X%`_shape{lanetype#14763, dim#14763, i#74942}(`I32`_lanetype, `%`_dim{i#74949}(4)))] -[visit_exp `%X%`_shape{lanetype#14763, dim#14763, i#74942}(`I32`_lanetype, `%`_dim{i#74949}(4))] -[visit_exp lanetype#14763] -[visit_id lanetype#14763] -[visit_exp dim#14763] -[visit_id dim#14763] -[visit_exp i#74942] -[visit_id i#74942] -[visit_exp (`I32`_lanetype, `%`_dim{i#74949}(4))] +[check_dims] +dims \ = +[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `SHL`_vshiftop_)] +[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `SHL`_vshiftop_)] +[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#74949}(4)] -[visit_exp i#74949] -[visit_id i#74949] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `SHL`_vshiftop_] [visit_exp ()] -[visit_exp `%`_u32{i#74935}(171)] -[visit_exp i#74935] -[visit_id i#74935] +[visit_exp `%`_u32(171)] [visit_exp (171)] [visit_exp 171] -[check_dims] Jnn#384 dim#14820 i#75047 i#75054 i#75061 ishape#33 lanetype#14820 shape#2544 sx#13297 -dims \ = Jnn#384, dim#14820, i#75047, i#75054, i#75061, ishape#33, lanetype#14820, shape#2544, sx#13297 -[visit_exp `VSHIFTOP`_instr{ishape#33}(`%`_ishape{shape#2544, Jnn#384}(`%X%`_shape{lanetype#14820, dim#14820, i#75054}(`I32`_lanetype, `%`_dim{i#75061}(4))), `SHR`_vshiftop_{sx#13297}(`S`_sx))] -[visit_exp ishape#33] -[visit_id ishape#33] -[visit_exp (`%`_ishape{shape#2544, Jnn#384}(`%X%`_shape{lanetype#14820, dim#14820, i#75054}(`I32`_lanetype, `%`_dim{i#75061}(4))), `SHR`_vshiftop_{sx#13297}(`S`_sx))] -[visit_exp `%`_ishape{shape#2544, Jnn#384}(`%X%`_shape{lanetype#14820, dim#14820, i#75054}(`I32`_lanetype, `%`_dim{i#75061}(4)))] -[visit_exp shape#2544] -[visit_id shape#2544] -[visit_exp Jnn#384] -[visit_id Jnn#384] -[visit_exp (`%X%`_shape{lanetype#14820, dim#14820, i#75054}(`I32`_lanetype, `%`_dim{i#75061}(4)))] -[visit_exp `%X%`_shape{lanetype#14820, dim#14820, i#75054}(`I32`_lanetype, `%`_dim{i#75061}(4))] -[visit_exp lanetype#14820] -[visit_id lanetype#14820] -[visit_exp dim#14820] -[visit_id dim#14820] -[visit_exp i#75054] -[visit_id i#75054] -[visit_exp (`I32`_lanetype, `%`_dim{i#75061}(4))] +[check_dims] +dims \ = +[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `SHR`_vshiftop_(`S`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `SHR`_vshiftop_(`S`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#75061}(4)] -[visit_exp i#75061] -[visit_id i#75061] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `SHR`_vshiftop_{sx#13297}(`S`_sx)] -[visit_exp sx#13297] -[visit_id sx#13297] +[visit_exp `SHR`_vshiftop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#75047}(172)] -[visit_exp i#75047] -[visit_id i#75047] +[visit_exp `%`_u32(172)] [visit_exp (172)] [visit_exp 172] -[check_dims] Jnn#388 dim#14883 i#75169 i#75176 i#75183 ishape#35 lanetype#14883 shape#2573 sx#13316 -dims \ = Jnn#388, dim#14883, i#75169, i#75176, i#75183, ishape#35, lanetype#14883, shape#2573, sx#13316 -[visit_exp `VSHIFTOP`_instr{ishape#35}(`%`_ishape{shape#2573, Jnn#388}(`%X%`_shape{lanetype#14883, dim#14883, i#75176}(`I32`_lanetype, `%`_dim{i#75183}(4))), `SHR`_vshiftop_{sx#13316}(`U`_sx))] -[visit_exp ishape#35] -[visit_id ishape#35] -[visit_exp (`%`_ishape{shape#2573, Jnn#388}(`%X%`_shape{lanetype#14883, dim#14883, i#75176}(`I32`_lanetype, `%`_dim{i#75183}(4))), `SHR`_vshiftop_{sx#13316}(`U`_sx))] -[visit_exp `%`_ishape{shape#2573, Jnn#388}(`%X%`_shape{lanetype#14883, dim#14883, i#75176}(`I32`_lanetype, `%`_dim{i#75183}(4)))] -[visit_exp shape#2573] -[visit_id shape#2573] -[visit_exp Jnn#388] -[visit_id Jnn#388] -[visit_exp (`%X%`_shape{lanetype#14883, dim#14883, i#75176}(`I32`_lanetype, `%`_dim{i#75183}(4)))] -[visit_exp `%X%`_shape{lanetype#14883, dim#14883, i#75176}(`I32`_lanetype, `%`_dim{i#75183}(4))] -[visit_exp lanetype#14883] -[visit_id lanetype#14883] -[visit_exp dim#14883] -[visit_id dim#14883] -[visit_exp i#75176] -[visit_id i#75176] -[visit_exp (`I32`_lanetype, `%`_dim{i#75183}(4))] +[check_dims] +dims \ = +[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `SHR`_vshiftop_(`U`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `SHR`_vshiftop_(`U`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#75183}(4)] -[visit_exp i#75183] -[visit_id i#75183] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `SHR`_vshiftop_{sx#13316}(`U`_sx)] -[visit_exp sx#13316] -[visit_id sx#13316] +[visit_exp `SHR`_vshiftop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#75169}(173)] -[visit_exp i#75169] -[visit_id i#75169] +[visit_exp `%`_u32(173)] [visit_exp (173)] [visit_exp 173] ps' = [check_dims] -[check_dims] dim#14946 i#75291 i#75298 i#75305 lanetype#14946 shape#2592 -dims \ = dim#14946, i#75291, i#75298, i#75305, lanetype#14946, shape#2592 -[visit_exp `VBINOP`_instr{shape#2592}(`%X%`_shape{lanetype#14946, dim#14946, i#75298}(`I32`_lanetype, `%`_dim{i#75305}(4)), `ADD`_vbinop_)] -[visit_exp shape#2592] -[visit_id shape#2592] -[visit_exp (`%X%`_shape{lanetype#14946, dim#14946, i#75298}(`I32`_lanetype, `%`_dim{i#75305}(4)), `ADD`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#14946, dim#14946, i#75298}(`I32`_lanetype, `%`_dim{i#75305}(4))] -[visit_exp lanetype#14946] -[visit_id lanetype#14946] -[visit_exp dim#14946] -[visit_id dim#14946] -[visit_exp i#75298] -[visit_id i#75298] -[visit_exp (`I32`_lanetype, `%`_dim{i#75305}(4))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `ADD`_vbinop_)] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `ADD`_vbinop_)] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#75305}(4)] -[visit_exp i#75305] -[visit_id i#75305] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `ADD`_vbinop_] [visit_exp ()] -[visit_exp `%`_u32{i#75291}(174)] -[visit_exp i#75291] -[visit_id i#75291] +[visit_exp `%`_u32(174)] [visit_exp (174)] [visit_exp 174] -[check_dims] dim#14973 i#75373 i#75380 i#75387 lanetype#14973 shape#2594 -dims \ = dim#14973, i#75373, i#75380, i#75387, lanetype#14973, shape#2594 -[visit_exp `VBINOP`_instr{shape#2594}(`%X%`_shape{lanetype#14973, dim#14973, i#75380}(`I32`_lanetype, `%`_dim{i#75387}(4)), `SUB`_vbinop_)] -[visit_exp shape#2594] -[visit_id shape#2594] -[visit_exp (`%X%`_shape{lanetype#14973, dim#14973, i#75380}(`I32`_lanetype, `%`_dim{i#75387}(4)), `SUB`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#14973, dim#14973, i#75380}(`I32`_lanetype, `%`_dim{i#75387}(4))] -[visit_exp lanetype#14973] -[visit_id lanetype#14973] -[visit_exp dim#14973] -[visit_id dim#14973] -[visit_exp i#75380] -[visit_id i#75380] -[visit_exp (`I32`_lanetype, `%`_dim{i#75387}(4))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `SUB`_vbinop_)] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `SUB`_vbinop_)] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#75387}(4)] -[visit_exp i#75387] -[visit_id i#75387] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `SUB`_vbinop_] [visit_exp ()] -[visit_exp `%`_u32{i#75373}(177)] -[visit_exp i#75373] -[visit_id i#75373] +[visit_exp `%`_u32(177)] [visit_exp (177)] [visit_exp 177] -[check_dims] dim#15000 i#75455 i#75462 i#75469 lanetype#15000 shape#2596 -dims \ = dim#15000, i#75455, i#75462, i#75469, lanetype#15000, shape#2596 -[visit_exp `VBINOP`_instr{shape#2596}(`%X%`_shape{lanetype#15000, dim#15000, i#75462}(`I32`_lanetype, `%`_dim{i#75469}(4)), `MUL`_vbinop_)] -[visit_exp shape#2596] -[visit_id shape#2596] -[visit_exp (`%X%`_shape{lanetype#15000, dim#15000, i#75462}(`I32`_lanetype, `%`_dim{i#75469}(4)), `MUL`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#15000, dim#15000, i#75462}(`I32`_lanetype, `%`_dim{i#75469}(4))] -[visit_exp lanetype#15000] -[visit_id lanetype#15000] -[visit_exp dim#15000] -[visit_id dim#15000] -[visit_exp i#75462] -[visit_id i#75462] -[visit_exp (`I32`_lanetype, `%`_dim{i#75469}(4))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `MUL`_vbinop_)] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `MUL`_vbinop_)] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#75469}(4)] -[visit_exp i#75469] -[visit_id i#75469] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `MUL`_vbinop_] [visit_exp ()] -[visit_exp `%`_u32{i#75455}(181)] -[visit_exp i#75455] -[visit_id i#75455] +[visit_exp `%`_u32(181)] [visit_exp (181)] [visit_exp 181] -[check_dims] dim#15027 i#75537 i#75544 i#75551 lanetype#15027 shape#2598 sx#13620 -dims \ = dim#15027, i#75537, i#75544, i#75551, lanetype#15027, shape#2598, sx#13620 -[visit_exp `VBINOP`_instr{shape#2598}(`%X%`_shape{lanetype#15027, dim#15027, i#75544}(`I32`_lanetype, `%`_dim{i#75551}(4)), `MIN`_vbinop_{sx#13620}(`S`_sx))] -[visit_exp shape#2598] -[visit_id shape#2598] -[visit_exp (`%X%`_shape{lanetype#15027, dim#15027, i#75544}(`I32`_lanetype, `%`_dim{i#75551}(4)), `MIN`_vbinop_{sx#13620}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#15027, dim#15027, i#75544}(`I32`_lanetype, `%`_dim{i#75551}(4))] -[visit_exp lanetype#15027] -[visit_id lanetype#15027] -[visit_exp dim#15027] -[visit_id dim#15027] -[visit_exp i#75544] -[visit_id i#75544] -[visit_exp (`I32`_lanetype, `%`_dim{i#75551}(4))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `MIN`_vbinop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `MIN`_vbinop_(`S`_sx))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#75551}(4)] -[visit_exp i#75551] -[visit_id i#75551] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `MIN`_vbinop_{sx#13620}(`S`_sx)] -[visit_exp sx#13620] -[visit_id sx#13620] +[visit_exp `MIN`_vbinop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#75537}(182)] -[visit_exp i#75537] -[visit_id i#75537] +[visit_exp `%`_u32(182)] [visit_exp (182)] [visit_exp 182] -[check_dims] dim#15069 i#75664 i#75671 i#75678 lanetype#15069 shape#2600 sx#13744 -dims \ = dim#15069, i#75664, i#75671, i#75678, lanetype#15069, shape#2600, sx#13744 -[visit_exp `VBINOP`_instr{shape#2600}(`%X%`_shape{lanetype#15069, dim#15069, i#75671}(`I32`_lanetype, `%`_dim{i#75678}(4)), `MIN`_vbinop_{sx#13744}(`U`_sx))] -[visit_exp shape#2600] -[visit_id shape#2600] -[visit_exp (`%X%`_shape{lanetype#15069, dim#15069, i#75671}(`I32`_lanetype, `%`_dim{i#75678}(4)), `MIN`_vbinop_{sx#13744}(`U`_sx))] -[visit_exp `%X%`_shape{lanetype#15069, dim#15069, i#75671}(`I32`_lanetype, `%`_dim{i#75678}(4))] -[visit_exp lanetype#15069] -[visit_id lanetype#15069] -[visit_exp dim#15069] -[visit_id dim#15069] -[visit_exp i#75671] -[visit_id i#75671] -[visit_exp (`I32`_lanetype, `%`_dim{i#75678}(4))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `MIN`_vbinop_(`U`_sx))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `MIN`_vbinop_(`U`_sx))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#75678}(4)] -[visit_exp i#75678] -[visit_id i#75678] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `MIN`_vbinop_{sx#13744}(`U`_sx)] -[visit_exp sx#13744] -[visit_id sx#13744] +[visit_exp `MIN`_vbinop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#75664}(183)] -[visit_exp i#75664] -[visit_id i#75664] +[visit_exp `%`_u32(183)] [visit_exp (183)] [visit_exp 183] -[check_dims] dim#15111 i#75791 i#75798 i#75805 lanetype#15111 shape#2602 sx#13868 -dims \ = dim#15111, i#75791, i#75798, i#75805, lanetype#15111, shape#2602, sx#13868 -[visit_exp `VBINOP`_instr{shape#2602}(`%X%`_shape{lanetype#15111, dim#15111, i#75798}(`I32`_lanetype, `%`_dim{i#75805}(4)), `MAX`_vbinop_{sx#13868}(`S`_sx))] -[visit_exp shape#2602] -[visit_id shape#2602] -[visit_exp (`%X%`_shape{lanetype#15111, dim#15111, i#75798}(`I32`_lanetype, `%`_dim{i#75805}(4)), `MAX`_vbinop_{sx#13868}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#15111, dim#15111, i#75798}(`I32`_lanetype, `%`_dim{i#75805}(4))] -[visit_exp lanetype#15111] -[visit_id lanetype#15111] -[visit_exp dim#15111] -[visit_id dim#15111] -[visit_exp i#75798] -[visit_id i#75798] -[visit_exp (`I32`_lanetype, `%`_dim{i#75805}(4))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `MAX`_vbinop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `MAX`_vbinop_(`S`_sx))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#75805}(4)] -[visit_exp i#75805] -[visit_id i#75805] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `MAX`_vbinop_{sx#13868}(`S`_sx)] -[visit_exp sx#13868] -[visit_id sx#13868] +[visit_exp `MAX`_vbinop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#75791}(184)] -[visit_exp i#75791] -[visit_id i#75791] +[visit_exp `%`_u32(184)] [visit_exp (184)] [visit_exp 184] -[check_dims] dim#15153 i#75918 i#75925 i#75932 lanetype#15153 shape#2604 sx#13992 -dims \ = dim#15153, i#75918, i#75925, i#75932, lanetype#15153, shape#2604, sx#13992 -[visit_exp `VBINOP`_instr{shape#2604}(`%X%`_shape{lanetype#15153, dim#15153, i#75925}(`I32`_lanetype, `%`_dim{i#75932}(4)), `MAX`_vbinop_{sx#13992}(`U`_sx))] -[visit_exp shape#2604] -[visit_id shape#2604] -[visit_exp (`%X%`_shape{lanetype#15153, dim#15153, i#75925}(`I32`_lanetype, `%`_dim{i#75932}(4)), `MAX`_vbinop_{sx#13992}(`U`_sx))] -[visit_exp `%X%`_shape{lanetype#15153, dim#15153, i#75925}(`I32`_lanetype, `%`_dim{i#75932}(4))] -[visit_exp lanetype#15153] -[visit_id lanetype#15153] -[visit_exp dim#15153] -[visit_id dim#15153] -[visit_exp i#75925] -[visit_id i#75925] -[visit_exp (`I32`_lanetype, `%`_dim{i#75932}(4))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `MAX`_vbinop_(`U`_sx))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `MAX`_vbinop_(`U`_sx))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#75932}(4)] -[visit_exp i#75932] -[visit_id i#75932] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `MAX`_vbinop_{sx#13992}(`U`_sx)] -[visit_exp sx#13992] -[visit_id sx#13992] +[visit_exp `MAX`_vbinop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#75918}(185)] -[visit_exp i#75918] -[visit_id i#75918] +[visit_exp `%`_u32(185)] [visit_exp (185)] [visit_exp 185] ps' = [check_dims] -[check_dims] Jnn#392 Jnn#396 dim#15195 dim#15207 i#76045 i#76052 i#76059 i#76064 i#76071 ishape_1#51 ishape_2#51 lanetype#15195 lanetype#15207 shape#2616 shape#2628 -dims \ = Jnn#392, Jnn#396, dim#15195, dim#15207, i#76045, i#76052, i#76059, i#76064, i#76071, ishape_1#51, ishape_2#51, lanetype#15195, lanetype#15207, shape#2616, shape#2628 -[visit_exp `VEXTBINOP`_instr{ishape_1#51, ishape_2#51}(`%`_ishape{shape#2616, Jnn#392}(`%X%`_shape{lanetype#15195, dim#15195, i#76052}(`I32`_lanetype, `%`_dim{i#76059}(4))), `%`_ishape{shape#2628, Jnn#396}(`%X%`_shape{lanetype#15207, dim#15207, i#76064}(`I16`_lanetype, `%`_dim{i#76071}(8))), `DOTS`_vextbinop__)] -[visit_exp ishape_1#51] -[visit_id ishape_1#51] -[visit_exp ishape_2#51] -[visit_id ishape_2#51] -[visit_exp (`%`_ishape{shape#2616, Jnn#392}(`%X%`_shape{lanetype#15195, dim#15195, i#76052}(`I32`_lanetype, `%`_dim{i#76059}(4))), `%`_ishape{shape#2628, Jnn#396}(`%X%`_shape{lanetype#15207, dim#15207, i#76064}(`I16`_lanetype, `%`_dim{i#76071}(8))), `DOTS`_vextbinop__)] -[visit_exp `%`_ishape{shape#2616, Jnn#392}(`%X%`_shape{lanetype#15195, dim#15195, i#76052}(`I32`_lanetype, `%`_dim{i#76059}(4)))] -[visit_exp shape#2616] -[visit_id shape#2616] -[visit_exp Jnn#392] -[visit_id Jnn#392] -[visit_exp (`%X%`_shape{lanetype#15195, dim#15195, i#76052}(`I32`_lanetype, `%`_dim{i#76059}(4)))] -[visit_exp `%X%`_shape{lanetype#15195, dim#15195, i#76052}(`I32`_lanetype, `%`_dim{i#76059}(4))] -[visit_exp lanetype#15195] -[visit_id lanetype#15195] -[visit_exp dim#15195] -[visit_id dim#15195] -[visit_exp i#76052] -[visit_id i#76052] -[visit_exp (`I32`_lanetype, `%`_dim{i#76059}(4))] +[check_dims] +dims \ = +[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `DOTS`_vextbinop__)] +[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `DOTS`_vextbinop__)] +[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#76059}(4)] -[visit_exp i#76059] -[visit_id i#76059] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%`_ishape{shape#2628, Jnn#396}(`%X%`_shape{lanetype#15207, dim#15207, i#76064}(`I16`_lanetype, `%`_dim{i#76071}(8)))] -[visit_exp shape#2628] -[visit_id shape#2628] -[visit_exp Jnn#396] -[visit_id Jnn#396] -[visit_exp (`%X%`_shape{lanetype#15207, dim#15207, i#76064}(`I16`_lanetype, `%`_dim{i#76071}(8)))] -[visit_exp `%X%`_shape{lanetype#15207, dim#15207, i#76064}(`I16`_lanetype, `%`_dim{i#76071}(8))] -[visit_exp lanetype#15207] -[visit_id lanetype#15207] -[visit_exp dim#15207] -[visit_id dim#15207] -[visit_exp i#76064] -[visit_id i#76064] -[visit_exp (`I16`_lanetype, `%`_dim{i#76071}(8))] +[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#76071}(8)] -[visit_exp i#76071] -[visit_id i#76071] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] [visit_exp `DOTS`_vextbinop__] [visit_exp ()] -[visit_exp `%`_u32{i#76045}(186)] -[visit_exp i#76045] -[visit_id i#76045] +[visit_exp `%`_u32(186)] [visit_exp (186)] [visit_exp 186] -[check_dims] Jnn#400 Jnn#404 dim#15430 dim#15442 half#524 i#76425 i#76432 i#76439 i#76444 i#76451 ishape_1#53 ishape_2#53 lanetype#15430 lanetype#15442 shape#2731 shape#2743 sx#14056 -dims \ = Jnn#400, Jnn#404, dim#15430, dim#15442, half#524, i#76425, i#76432, i#76439, i#76444, i#76451, ishape_1#53, ishape_2#53, lanetype#15430, lanetype#15442, shape#2731, shape#2743, sx#14056 -[visit_exp `VEXTBINOP`_instr{ishape_1#53, ishape_2#53}(`%`_ishape{shape#2731, Jnn#400}(`%X%`_shape{lanetype#15430, dim#15430, i#76432}(`I32`_lanetype, `%`_dim{i#76439}(4))), `%`_ishape{shape#2743, Jnn#404}(`%X%`_shape{lanetype#15442, dim#15442, i#76444}(`I16`_lanetype, `%`_dim{i#76451}(8))), `EXTMUL`_vextbinop__{half#524, sx#14056}(`LOW`_half, `S`_sx))] -[visit_exp ishape_1#53] -[visit_id ishape_1#53] -[visit_exp ishape_2#53] -[visit_id ishape_2#53] -[visit_exp (`%`_ishape{shape#2731, Jnn#400}(`%X%`_shape{lanetype#15430, dim#15430, i#76432}(`I32`_lanetype, `%`_dim{i#76439}(4))), `%`_ishape{shape#2743, Jnn#404}(`%X%`_shape{lanetype#15442, dim#15442, i#76444}(`I16`_lanetype, `%`_dim{i#76451}(8))), `EXTMUL`_vextbinop__{half#524, sx#14056}(`LOW`_half, `S`_sx))] -[visit_exp `%`_ishape{shape#2731, Jnn#400}(`%X%`_shape{lanetype#15430, dim#15430, i#76432}(`I32`_lanetype, `%`_dim{i#76439}(4)))] -[visit_exp shape#2731] -[visit_id shape#2731] -[visit_exp Jnn#400] -[visit_id Jnn#400] -[visit_exp (`%X%`_shape{lanetype#15430, dim#15430, i#76432}(`I32`_lanetype, `%`_dim{i#76439}(4)))] -[visit_exp `%X%`_shape{lanetype#15430, dim#15430, i#76432}(`I32`_lanetype, `%`_dim{i#76439}(4))] -[visit_exp lanetype#15430] -[visit_id lanetype#15430] -[visit_exp dim#15430] -[visit_id dim#15430] -[visit_exp i#76432] -[visit_id i#76432] -[visit_exp (`I32`_lanetype, `%`_dim{i#76439}(4))] +[check_dims] +dims \ = +[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTMUL`_vextbinop__(`LOW`_half, `S`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTMUL`_vextbinop__(`LOW`_half, `S`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#76439}(4)] -[visit_exp i#76439] -[visit_id i#76439] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%`_ishape{shape#2743, Jnn#404}(`%X%`_shape{lanetype#15442, dim#15442, i#76444}(`I16`_lanetype, `%`_dim{i#76451}(8)))] -[visit_exp shape#2743] -[visit_id shape#2743] -[visit_exp Jnn#404] -[visit_id Jnn#404] -[visit_exp (`%X%`_shape{lanetype#15442, dim#15442, i#76444}(`I16`_lanetype, `%`_dim{i#76451}(8)))] -[visit_exp `%X%`_shape{lanetype#15442, dim#15442, i#76444}(`I16`_lanetype, `%`_dim{i#76451}(8))] -[visit_exp lanetype#15442] -[visit_id lanetype#15442] -[visit_exp dim#15442] -[visit_id dim#15442] -[visit_exp i#76444] -[visit_id i#76444] -[visit_exp (`I16`_lanetype, `%`_dim{i#76451}(8))] +[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#76451}(8)] -[visit_exp i#76451] -[visit_id i#76451] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `EXTMUL`_vextbinop__{half#524, sx#14056}(`LOW`_half, `S`_sx)] -[visit_exp half#524] -[visit_id half#524] -[visit_exp sx#14056] -[visit_id sx#14056] +[visit_exp `EXTMUL`_vextbinop__(`LOW`_half, `S`_sx)] [visit_exp (`LOW`_half, `S`_sx)] [visit_exp `LOW`_half] [visit_exp ()] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#76425}(188)] -[visit_exp i#76425] -[visit_id i#76425] +[visit_exp `%`_u32(188)] [visit_exp (188)] [visit_exp 188] -[check_dims] Jnn#408 Jnn#412 dim#15665 dim#15677 half#558 i#76805 i#76812 i#76819 i#76824 i#76831 ishape_1#55 ishape_2#55 lanetype#15665 lanetype#15677 shape#2846 shape#2858 sx#14090 -dims \ = Jnn#408, Jnn#412, dim#15665, dim#15677, half#558, i#76805, i#76812, i#76819, i#76824, i#76831, ishape_1#55, ishape_2#55, lanetype#15665, lanetype#15677, shape#2846, shape#2858, sx#14090 -[visit_exp `VEXTBINOP`_instr{ishape_1#55, ishape_2#55}(`%`_ishape{shape#2846, Jnn#408}(`%X%`_shape{lanetype#15665, dim#15665, i#76812}(`I32`_lanetype, `%`_dim{i#76819}(4))), `%`_ishape{shape#2858, Jnn#412}(`%X%`_shape{lanetype#15677, dim#15677, i#76824}(`I16`_lanetype, `%`_dim{i#76831}(8))), `EXTMUL`_vextbinop__{half#558, sx#14090}(`HIGH`_half, `S`_sx))] -[visit_exp ishape_1#55] -[visit_id ishape_1#55] -[visit_exp ishape_2#55] -[visit_id ishape_2#55] -[visit_exp (`%`_ishape{shape#2846, Jnn#408}(`%X%`_shape{lanetype#15665, dim#15665, i#76812}(`I32`_lanetype, `%`_dim{i#76819}(4))), `%`_ishape{shape#2858, Jnn#412}(`%X%`_shape{lanetype#15677, dim#15677, i#76824}(`I16`_lanetype, `%`_dim{i#76831}(8))), `EXTMUL`_vextbinop__{half#558, sx#14090}(`HIGH`_half, `S`_sx))] -[visit_exp `%`_ishape{shape#2846, Jnn#408}(`%X%`_shape{lanetype#15665, dim#15665, i#76812}(`I32`_lanetype, `%`_dim{i#76819}(4)))] -[visit_exp shape#2846] -[visit_id shape#2846] -[visit_exp Jnn#408] -[visit_id Jnn#408] -[visit_exp (`%X%`_shape{lanetype#15665, dim#15665, i#76812}(`I32`_lanetype, `%`_dim{i#76819}(4)))] -[visit_exp `%X%`_shape{lanetype#15665, dim#15665, i#76812}(`I32`_lanetype, `%`_dim{i#76819}(4))] -[visit_exp lanetype#15665] -[visit_id lanetype#15665] -[visit_exp dim#15665] -[visit_id dim#15665] -[visit_exp i#76812] -[visit_id i#76812] -[visit_exp (`I32`_lanetype, `%`_dim{i#76819}(4))] +[check_dims] +dims \ = +[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTMUL`_vextbinop__(`HIGH`_half, `S`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTMUL`_vextbinop__(`HIGH`_half, `S`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#76819}(4)] -[visit_exp i#76819] -[visit_id i#76819] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%`_ishape{shape#2858, Jnn#412}(`%X%`_shape{lanetype#15677, dim#15677, i#76824}(`I16`_lanetype, `%`_dim{i#76831}(8)))] -[visit_exp shape#2858] -[visit_id shape#2858] -[visit_exp Jnn#412] -[visit_id Jnn#412] -[visit_exp (`%X%`_shape{lanetype#15677, dim#15677, i#76824}(`I16`_lanetype, `%`_dim{i#76831}(8)))] -[visit_exp `%X%`_shape{lanetype#15677, dim#15677, i#76824}(`I16`_lanetype, `%`_dim{i#76831}(8))] -[visit_exp lanetype#15677] -[visit_id lanetype#15677] -[visit_exp dim#15677] -[visit_id dim#15677] -[visit_exp i#76824] -[visit_id i#76824] -[visit_exp (`I16`_lanetype, `%`_dim{i#76831}(8))] +[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#76831}(8)] -[visit_exp i#76831] -[visit_id i#76831] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `EXTMUL`_vextbinop__{half#558, sx#14090}(`HIGH`_half, `S`_sx)] -[visit_exp half#558] -[visit_id half#558] -[visit_exp sx#14090] -[visit_id sx#14090] +[visit_exp `EXTMUL`_vextbinop__(`HIGH`_half, `S`_sx)] [visit_exp (`HIGH`_half, `S`_sx)] [visit_exp `HIGH`_half] [visit_exp ()] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#76805}(189)] -[visit_exp i#76805] -[visit_id i#76805] +[visit_exp `%`_u32(189)] [visit_exp (189)] [visit_exp 189] -[check_dims] Jnn#416 Jnn#420 dim#15900 dim#15912 half#592 i#77185 i#77192 i#77199 i#77204 i#77211 ishape_1#57 ishape_2#57 lanetype#15900 lanetype#15912 shape#2961 shape#2973 sx#14124 -dims \ = Jnn#416, Jnn#420, dim#15900, dim#15912, half#592, i#77185, i#77192, i#77199, i#77204, i#77211, ishape_1#57, ishape_2#57, lanetype#15900, lanetype#15912, shape#2961, shape#2973, sx#14124 -[visit_exp `VEXTBINOP`_instr{ishape_1#57, ishape_2#57}(`%`_ishape{shape#2961, Jnn#416}(`%X%`_shape{lanetype#15900, dim#15900, i#77192}(`I32`_lanetype, `%`_dim{i#77199}(4))), `%`_ishape{shape#2973, Jnn#420}(`%X%`_shape{lanetype#15912, dim#15912, i#77204}(`I16`_lanetype, `%`_dim{i#77211}(8))), `EXTMUL`_vextbinop__{half#592, sx#14124}(`LOW`_half, `U`_sx))] -[visit_exp ishape_1#57] -[visit_id ishape_1#57] -[visit_exp ishape_2#57] -[visit_id ishape_2#57] -[visit_exp (`%`_ishape{shape#2961, Jnn#416}(`%X%`_shape{lanetype#15900, dim#15900, i#77192}(`I32`_lanetype, `%`_dim{i#77199}(4))), `%`_ishape{shape#2973, Jnn#420}(`%X%`_shape{lanetype#15912, dim#15912, i#77204}(`I16`_lanetype, `%`_dim{i#77211}(8))), `EXTMUL`_vextbinop__{half#592, sx#14124}(`LOW`_half, `U`_sx))] -[visit_exp `%`_ishape{shape#2961, Jnn#416}(`%X%`_shape{lanetype#15900, dim#15900, i#77192}(`I32`_lanetype, `%`_dim{i#77199}(4)))] -[visit_exp shape#2961] -[visit_id shape#2961] -[visit_exp Jnn#416] -[visit_id Jnn#416] -[visit_exp (`%X%`_shape{lanetype#15900, dim#15900, i#77192}(`I32`_lanetype, `%`_dim{i#77199}(4)))] -[visit_exp `%X%`_shape{lanetype#15900, dim#15900, i#77192}(`I32`_lanetype, `%`_dim{i#77199}(4))] -[visit_exp lanetype#15900] -[visit_id lanetype#15900] -[visit_exp dim#15900] -[visit_id dim#15900] -[visit_exp i#77192] -[visit_id i#77192] -[visit_exp (`I32`_lanetype, `%`_dim{i#77199}(4))] +[check_dims] +dims \ = +[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTMUL`_vextbinop__(`LOW`_half, `U`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTMUL`_vextbinop__(`LOW`_half, `U`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#77199}(4)] -[visit_exp i#77199] -[visit_id i#77199] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%`_ishape{shape#2973, Jnn#420}(`%X%`_shape{lanetype#15912, dim#15912, i#77204}(`I16`_lanetype, `%`_dim{i#77211}(8)))] -[visit_exp shape#2973] -[visit_id shape#2973] -[visit_exp Jnn#420] -[visit_id Jnn#420] -[visit_exp (`%X%`_shape{lanetype#15912, dim#15912, i#77204}(`I16`_lanetype, `%`_dim{i#77211}(8)))] -[visit_exp `%X%`_shape{lanetype#15912, dim#15912, i#77204}(`I16`_lanetype, `%`_dim{i#77211}(8))] -[visit_exp lanetype#15912] -[visit_id lanetype#15912] -[visit_exp dim#15912] -[visit_id dim#15912] -[visit_exp i#77204] -[visit_id i#77204] -[visit_exp (`I16`_lanetype, `%`_dim{i#77211}(8))] +[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#77211}(8)] -[visit_exp i#77211] -[visit_id i#77211] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `EXTMUL`_vextbinop__{half#592, sx#14124}(`LOW`_half, `U`_sx)] -[visit_exp half#592] -[visit_id half#592] -[visit_exp sx#14124] -[visit_id sx#14124] +[visit_exp `EXTMUL`_vextbinop__(`LOW`_half, `U`_sx)] [visit_exp (`LOW`_half, `U`_sx)] [visit_exp `LOW`_half] [visit_exp ()] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#77185}(190)] -[visit_exp i#77185] -[visit_id i#77185] +[visit_exp `%`_u32(190)] [visit_exp (190)] [visit_exp 190] -[check_dims] Jnn#424 Jnn#428 dim#16135 dim#16147 half#626 i#77565 i#77572 i#77579 i#77584 i#77591 ishape_1#59 ishape_2#59 lanetype#16135 lanetype#16147 shape#3076 shape#3088 sx#14158 -dims \ = Jnn#424, Jnn#428, dim#16135, dim#16147, half#626, i#77565, i#77572, i#77579, i#77584, i#77591, ishape_1#59, ishape_2#59, lanetype#16135, lanetype#16147, shape#3076, shape#3088, sx#14158 -[visit_exp `VEXTBINOP`_instr{ishape_1#59, ishape_2#59}(`%`_ishape{shape#3076, Jnn#424}(`%X%`_shape{lanetype#16135, dim#16135, i#77572}(`I32`_lanetype, `%`_dim{i#77579}(4))), `%`_ishape{shape#3088, Jnn#428}(`%X%`_shape{lanetype#16147, dim#16147, i#77584}(`I16`_lanetype, `%`_dim{i#77591}(8))), `EXTMUL`_vextbinop__{half#626, sx#14158}(`HIGH`_half, `U`_sx))] -[visit_exp ishape_1#59] -[visit_id ishape_1#59] -[visit_exp ishape_2#59] -[visit_id ishape_2#59] -[visit_exp (`%`_ishape{shape#3076, Jnn#424}(`%X%`_shape{lanetype#16135, dim#16135, i#77572}(`I32`_lanetype, `%`_dim{i#77579}(4))), `%`_ishape{shape#3088, Jnn#428}(`%X%`_shape{lanetype#16147, dim#16147, i#77584}(`I16`_lanetype, `%`_dim{i#77591}(8))), `EXTMUL`_vextbinop__{half#626, sx#14158}(`HIGH`_half, `U`_sx))] -[visit_exp `%`_ishape{shape#3076, Jnn#424}(`%X%`_shape{lanetype#16135, dim#16135, i#77572}(`I32`_lanetype, `%`_dim{i#77579}(4)))] -[visit_exp shape#3076] -[visit_id shape#3076] -[visit_exp Jnn#424] -[visit_id Jnn#424] -[visit_exp (`%X%`_shape{lanetype#16135, dim#16135, i#77572}(`I32`_lanetype, `%`_dim{i#77579}(4)))] -[visit_exp `%X%`_shape{lanetype#16135, dim#16135, i#77572}(`I32`_lanetype, `%`_dim{i#77579}(4))] -[visit_exp lanetype#16135] -[visit_id lanetype#16135] -[visit_exp dim#16135] -[visit_id dim#16135] -[visit_exp i#77572] -[visit_id i#77572] -[visit_exp (`I32`_lanetype, `%`_dim{i#77579}(4))] +[check_dims] +dims \ = +[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTMUL`_vextbinop__(`HIGH`_half, `U`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTMUL`_vextbinop__(`HIGH`_half, `U`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#77579}(4)] -[visit_exp i#77579] -[visit_id i#77579] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%`_ishape{shape#3088, Jnn#428}(`%X%`_shape{lanetype#16147, dim#16147, i#77584}(`I16`_lanetype, `%`_dim{i#77591}(8)))] -[visit_exp shape#3088] -[visit_id shape#3088] -[visit_exp Jnn#428] -[visit_id Jnn#428] -[visit_exp (`%X%`_shape{lanetype#16147, dim#16147, i#77584}(`I16`_lanetype, `%`_dim{i#77591}(8)))] -[visit_exp `%X%`_shape{lanetype#16147, dim#16147, i#77584}(`I16`_lanetype, `%`_dim{i#77591}(8))] -[visit_exp lanetype#16147] -[visit_id lanetype#16147] -[visit_exp dim#16147] -[visit_id dim#16147] -[visit_exp i#77584] -[visit_id i#77584] -[visit_exp (`I16`_lanetype, `%`_dim{i#77591}(8))] +[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#77591}(8)] -[visit_exp i#77591] -[visit_id i#77591] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `EXTMUL`_vextbinop__{half#626, sx#14158}(`HIGH`_half, `U`_sx)] -[visit_exp half#626] -[visit_id half#626] -[visit_exp sx#14158] -[visit_id sx#14158] +[visit_exp `EXTMUL`_vextbinop__(`HIGH`_half, `U`_sx)] [visit_exp (`HIGH`_half, `U`_sx)] [visit_exp `HIGH`_half] [visit_exp ()] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#77565}(191)] -[visit_exp i#77565] -[visit_id i#77565] +[visit_exp `%`_u32(191)] [visit_exp (191)] [visit_exp 191] ps' = [check_dims] -[check_dims] Jnn#432 Jnn#436 dim#16370 dim#16382 i#77945 i#77952 i#77959 i#77964 i#77971 ishape_1#61 ishape_2#61 lanetype#16370 lanetype#16382 shape#3191 shape#3203 -dims \ = Jnn#432, Jnn#436, dim#16370, dim#16382, i#77945, i#77952, i#77959, i#77964, i#77971, ishape_1#61, ishape_2#61, lanetype#16370, lanetype#16382, shape#3191, shape#3203 -[visit_exp `VEXTTERNOP`_instr{ishape_1#61, ishape_2#61}(`%`_ishape{shape#3191, Jnn#432}(`%X%`_shape{lanetype#16370, dim#16370, i#77952}(`I32`_lanetype, `%`_dim{i#77959}(4))), `%`_ishape{shape#3203, Jnn#436}(`%X%`_shape{lanetype#16382, dim#16382, i#77964}(`I16`_lanetype, `%`_dim{i#77971}(8))), `RELAXED_DOT_ADDS`_vextternop__)] -[visit_exp ishape_1#61] -[visit_id ishape_1#61] -[visit_exp ishape_2#61] -[visit_id ishape_2#61] -[visit_exp (`%`_ishape{shape#3191, Jnn#432}(`%X%`_shape{lanetype#16370, dim#16370, i#77952}(`I32`_lanetype, `%`_dim{i#77959}(4))), `%`_ishape{shape#3203, Jnn#436}(`%X%`_shape{lanetype#16382, dim#16382, i#77964}(`I16`_lanetype, `%`_dim{i#77971}(8))), `RELAXED_DOT_ADDS`_vextternop__)] -[visit_exp `%`_ishape{shape#3191, Jnn#432}(`%X%`_shape{lanetype#16370, dim#16370, i#77952}(`I32`_lanetype, `%`_dim{i#77959}(4)))] -[visit_exp shape#3191] -[visit_id shape#3191] -[visit_exp Jnn#432] -[visit_id Jnn#432] -[visit_exp (`%X%`_shape{lanetype#16370, dim#16370, i#77952}(`I32`_lanetype, `%`_dim{i#77959}(4)))] -[visit_exp `%X%`_shape{lanetype#16370, dim#16370, i#77952}(`I32`_lanetype, `%`_dim{i#77959}(4))] -[visit_exp lanetype#16370] -[visit_id lanetype#16370] -[visit_exp dim#16370] -[visit_id dim#16370] -[visit_exp i#77952] -[visit_id i#77952] -[visit_exp (`I32`_lanetype, `%`_dim{i#77959}(4))] +[check_dims] +dims \ = +[visit_exp `VEXTTERNOP`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `RELAXED_DOT_ADDS`_vextternop__)] +[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `RELAXED_DOT_ADDS`_vextternop__)] +[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#77959}(4)] -[visit_exp i#77959] -[visit_id i#77959] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%`_ishape{shape#3203, Jnn#436}(`%X%`_shape{lanetype#16382, dim#16382, i#77964}(`I16`_lanetype, `%`_dim{i#77971}(8)))] -[visit_exp shape#3203] -[visit_id shape#3203] -[visit_exp Jnn#436] -[visit_id Jnn#436] -[visit_exp (`%X%`_shape{lanetype#16382, dim#16382, i#77964}(`I16`_lanetype, `%`_dim{i#77971}(8)))] -[visit_exp `%X%`_shape{lanetype#16382, dim#16382, i#77964}(`I16`_lanetype, `%`_dim{i#77971}(8))] -[visit_exp lanetype#16382] -[visit_id lanetype#16382] -[visit_exp dim#16382] -[visit_id dim#16382] -[visit_exp i#77964] -[visit_id i#77964] -[visit_exp (`I16`_lanetype, `%`_dim{i#77971}(8))] +[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#77971}(8)] -[visit_exp i#77971] -[visit_id i#77971] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] [visit_exp `RELAXED_DOT_ADDS`_vextternop__] [visit_exp ()] -[visit_exp `%`_u32{i#77945}(275)] -[visit_exp i#77945] -[visit_id i#77945] +[visit_exp `%`_u32(275)] [visit_exp (275)] [visit_exp 275] ps' = [check_dims] -[check_dims] dim#16605 i#78325 i#78332 i#78339 lanetype#16605 shape#3296 -dims \ = dim#16605, i#78325, i#78332, i#78339, lanetype#16605, shape#3296 -[visit_exp `VUNOP`_instr{shape#3296}(`%X%`_shape{lanetype#16605, dim#16605, i#78332}(`I64`_lanetype, `%`_dim{i#78339}(2)), `ABS`_vunop_)] -[visit_exp shape#3296] -[visit_id shape#3296] -[visit_exp (`%X%`_shape{lanetype#16605, dim#16605, i#78332}(`I64`_lanetype, `%`_dim{i#78339}(2)), `ABS`_vunop_)] -[visit_exp `%X%`_shape{lanetype#16605, dim#16605, i#78332}(`I64`_lanetype, `%`_dim{i#78339}(2))] -[visit_exp lanetype#16605] -[visit_id lanetype#16605] -[visit_exp dim#16605] -[visit_id dim#16605] -[visit_exp i#78332] -[visit_id i#78332] -[visit_exp (`I64`_lanetype, `%`_dim{i#78339}(2))] +[check_dims] +dims \ = +[visit_exp `VUNOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `ABS`_vunop_)] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `ABS`_vunop_)] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#78339}(2)] -[visit_exp i#78339] -[visit_id i#78339] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `ABS`_vunop_] [visit_exp ()] -[visit_exp `%`_u32{i#78325}(192)] -[visit_exp i#78325] -[visit_id i#78325] +[visit_exp `%`_u32(192)] [visit_exp (192)] [visit_exp 192] -[check_dims] dim#16632 i#78407 i#78414 i#78421 lanetype#16632 shape#3298 -dims \ = dim#16632, i#78407, i#78414, i#78421, lanetype#16632, shape#3298 -[visit_exp `VUNOP`_instr{shape#3298}(`%X%`_shape{lanetype#16632, dim#16632, i#78414}(`I64`_lanetype, `%`_dim{i#78421}(2)), `NEG`_vunop_)] -[visit_exp shape#3298] -[visit_id shape#3298] -[visit_exp (`%X%`_shape{lanetype#16632, dim#16632, i#78414}(`I64`_lanetype, `%`_dim{i#78421}(2)), `NEG`_vunop_)] -[visit_exp `%X%`_shape{lanetype#16632, dim#16632, i#78414}(`I64`_lanetype, `%`_dim{i#78421}(2))] -[visit_exp lanetype#16632] -[visit_id lanetype#16632] -[visit_exp dim#16632] -[visit_id dim#16632] -[visit_exp i#78414] -[visit_id i#78414] -[visit_exp (`I64`_lanetype, `%`_dim{i#78421}(2))] +[check_dims] +dims \ = +[visit_exp `VUNOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `NEG`_vunop_)] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `NEG`_vunop_)] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#78421}(2)] -[visit_exp i#78421] -[visit_id i#78421] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `NEG`_vunop_] [visit_exp ()] -[visit_exp `%`_u32{i#78407}(193)] -[visit_exp i#78407] -[visit_id i#78407] +[visit_exp `%`_u32(193)] [visit_exp (193)] [visit_exp 193] ps' = [check_dims] -[check_dims] dim#16659 i#78489 i#78496 i#78503 lanetype#16659 shape#3300 -dims \ = dim#16659, i#78489, i#78496, i#78503, lanetype#16659, shape#3300 -[visit_exp `VTESTOP`_instr{shape#3300}(`%X%`_shape{lanetype#16659, dim#16659, i#78496}(`I64`_lanetype, `%`_dim{i#78503}(2)), `ALL_TRUE`_vtestop_)] -[visit_exp shape#3300] -[visit_id shape#3300] -[visit_exp (`%X%`_shape{lanetype#16659, dim#16659, i#78496}(`I64`_lanetype, `%`_dim{i#78503}(2)), `ALL_TRUE`_vtestop_)] -[visit_exp `%X%`_shape{lanetype#16659, dim#16659, i#78496}(`I64`_lanetype, `%`_dim{i#78503}(2))] -[visit_exp lanetype#16659] -[visit_id lanetype#16659] -[visit_exp dim#16659] -[visit_id dim#16659] -[visit_exp i#78496] -[visit_id i#78496] -[visit_exp (`I64`_lanetype, `%`_dim{i#78503}(2))] +[check_dims] +dims \ = +[visit_exp `VTESTOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `ALL_TRUE`_vtestop_)] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `ALL_TRUE`_vtestop_)] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#78503}(2)] -[visit_exp i#78503] -[visit_id i#78503] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `ALL_TRUE`_vtestop_] [visit_exp ()] -[visit_exp `%`_u32{i#78489}(195)] -[visit_exp i#78489] -[visit_id i#78489] +[visit_exp `%`_u32(195)] [visit_exp (195)] [visit_exp 195] ps' = [check_dims] -[check_dims] Jnn#440 dim#16686 i#78571 i#78578 i#78585 ishape#37 lanetype#16686 shape#3312 -dims \ = Jnn#440, dim#16686, i#78571, i#78578, i#78585, ishape#37, lanetype#16686, shape#3312 -[visit_exp `VBITMASK`_instr{ishape#37}(`%`_ishape{shape#3312, Jnn#440}(`%X%`_shape{lanetype#16686, dim#16686, i#78578}(`I64`_lanetype, `%`_dim{i#78585}(2))))] -[visit_exp ishape#37] -[visit_id ishape#37] -[visit_exp (`%`_ishape{shape#3312, Jnn#440}(`%X%`_shape{lanetype#16686, dim#16686, i#78578}(`I64`_lanetype, `%`_dim{i#78585}(2))))] -[visit_exp `%`_ishape{shape#3312, Jnn#440}(`%X%`_shape{lanetype#16686, dim#16686, i#78578}(`I64`_lanetype, `%`_dim{i#78585}(2)))] -[visit_exp shape#3312] -[visit_id shape#3312] -[visit_exp Jnn#440] -[visit_id Jnn#440] -[visit_exp (`%X%`_shape{lanetype#16686, dim#16686, i#78578}(`I64`_lanetype, `%`_dim{i#78585}(2)))] -[visit_exp `%X%`_shape{lanetype#16686, dim#16686, i#78578}(`I64`_lanetype, `%`_dim{i#78585}(2))] -[visit_exp lanetype#16686] -[visit_id lanetype#16686] -[visit_exp dim#16686] -[visit_id dim#16686] -[visit_exp i#78578] -[visit_id i#78578] -[visit_exp (`I64`_lanetype, `%`_dim{i#78585}(2))] +[check_dims] +dims \ = +[visit_exp `VBITMASK`_instr(`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))))] +[visit_exp (`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))))] +[visit_exp `%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#78585}(2)] -[visit_exp i#78585] -[visit_id i#78585] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `%`_u32{i#78571}(196)] -[visit_exp i#78571] -[visit_id i#78571] +[visit_exp `%`_u32(196)] [visit_exp (196)] [visit_exp 196] ps' = [check_dims] -[check_dims] dim#16698 dim#16710 half#660 i#78608 i#78615 i#78622 i#78627 i#78634 lanetype#16698 lanetype#16710 shape_1#23 shape_2#23 sx#14192 -dims \ = dim#16698, dim#16710, half#660, i#78608, i#78615, i#78622, i#78627, i#78634, lanetype#16698, lanetype#16710, shape_1#23, shape_2#23, sx#14192 -[visit_exp `VCVTOP`_instr{shape_1#23, shape_2#23}(`%X%`_shape{lanetype#16698, dim#16698, i#78615}(`I64`_lanetype, `%`_dim{i#78622}(2)), `%X%`_shape{lanetype#16710, dim#16710, i#78627}(`I32`_lanetype, `%`_dim{i#78634}(4)), `EXTEND`_vcvtop__{half#660, sx#14192}(`LOW`_half, `S`_sx))] -[visit_exp shape_1#23] -[visit_id shape_1#23] -[visit_exp shape_2#23] -[visit_id shape_2#23] -[visit_exp (`%X%`_shape{lanetype#16698, dim#16698, i#78615}(`I64`_lanetype, `%`_dim{i#78622}(2)), `%X%`_shape{lanetype#16710, dim#16710, i#78627}(`I32`_lanetype, `%`_dim{i#78634}(4)), `EXTEND`_vcvtop__{half#660, sx#14192}(`LOW`_half, `S`_sx))] -[visit_exp `%X%`_shape{lanetype#16698, dim#16698, i#78615}(`I64`_lanetype, `%`_dim{i#78622}(2))] -[visit_exp lanetype#16698] -[visit_id lanetype#16698] -[visit_exp dim#16698] -[visit_id dim#16698] -[visit_exp i#78615] -[visit_id i#78615] -[visit_exp (`I64`_lanetype, `%`_dim{i#78622}(2))] +[check_dims] +dims \ = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `EXTEND`_vcvtop__(`LOW`_half, `S`_sx))] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `EXTEND`_vcvtop__(`LOW`_half, `S`_sx))] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#78622}(2)] -[visit_exp i#78622] -[visit_id i#78622] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `%X%`_shape{lanetype#16710, dim#16710, i#78627}(`I32`_lanetype, `%`_dim{i#78634}(4))] -[visit_exp lanetype#16710] -[visit_id lanetype#16710] -[visit_exp dim#16710] -[visit_id dim#16710] -[visit_exp i#78627] -[visit_id i#78627] -[visit_exp (`I32`_lanetype, `%`_dim{i#78634}(4))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#78634}(4)] -[visit_exp i#78634] -[visit_id i#78634] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `EXTEND`_vcvtop__{half#660, sx#14192}(`LOW`_half, `S`_sx)] -[visit_exp half#660] -[visit_id half#660] -[visit_exp sx#14192] -[visit_id sx#14192] +[visit_exp `EXTEND`_vcvtop__(`LOW`_half, `S`_sx)] [visit_exp (`LOW`_half, `S`_sx)] [visit_exp `LOW`_half] [visit_exp ()] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#78608}(199)] -[visit_exp i#78608] -[visit_id i#78608] +[visit_exp `%`_u32(199)] [visit_exp (199)] [visit_exp 199] -[check_dims] dim#16813 dim#16825 half#694 i#78868 i#78875 i#78882 i#78887 i#78894 lanetype#16813 lanetype#16825 shape_1#25 shape_2#25 sx#14226 -dims \ = dim#16813, dim#16825, half#694, i#78868, i#78875, i#78882, i#78887, i#78894, lanetype#16813, lanetype#16825, shape_1#25, shape_2#25, sx#14226 -[visit_exp `VCVTOP`_instr{shape_1#25, shape_2#25}(`%X%`_shape{lanetype#16813, dim#16813, i#78875}(`I64`_lanetype, `%`_dim{i#78882}(2)), `%X%`_shape{lanetype#16825, dim#16825, i#78887}(`I32`_lanetype, `%`_dim{i#78894}(4)), `EXTEND`_vcvtop__{half#694, sx#14226}(`HIGH`_half, `S`_sx))] -[visit_exp shape_1#25] -[visit_id shape_1#25] -[visit_exp shape_2#25] -[visit_id shape_2#25] -[visit_exp (`%X%`_shape{lanetype#16813, dim#16813, i#78875}(`I64`_lanetype, `%`_dim{i#78882}(2)), `%X%`_shape{lanetype#16825, dim#16825, i#78887}(`I32`_lanetype, `%`_dim{i#78894}(4)), `EXTEND`_vcvtop__{half#694, sx#14226}(`HIGH`_half, `S`_sx))] -[visit_exp `%X%`_shape{lanetype#16813, dim#16813, i#78875}(`I64`_lanetype, `%`_dim{i#78882}(2))] -[visit_exp lanetype#16813] -[visit_id lanetype#16813] -[visit_exp dim#16813] -[visit_id dim#16813] -[visit_exp i#78875] -[visit_id i#78875] -[visit_exp (`I64`_lanetype, `%`_dim{i#78882}(2))] +[check_dims] +dims \ = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `EXTEND`_vcvtop__(`HIGH`_half, `S`_sx))] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `EXTEND`_vcvtop__(`HIGH`_half, `S`_sx))] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#78882}(2)] -[visit_exp i#78882] -[visit_id i#78882] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `%X%`_shape{lanetype#16825, dim#16825, i#78887}(`I32`_lanetype, `%`_dim{i#78894}(4))] -[visit_exp lanetype#16825] -[visit_id lanetype#16825] -[visit_exp dim#16825] -[visit_id dim#16825] -[visit_exp i#78887] -[visit_id i#78887] -[visit_exp (`I32`_lanetype, `%`_dim{i#78894}(4))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#78894}(4)] -[visit_exp i#78894] -[visit_id i#78894] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `EXTEND`_vcvtop__{half#694, sx#14226}(`HIGH`_half, `S`_sx)] -[visit_exp half#694] -[visit_id half#694] -[visit_exp sx#14226] -[visit_id sx#14226] +[visit_exp `EXTEND`_vcvtop__(`HIGH`_half, `S`_sx)] [visit_exp (`HIGH`_half, `S`_sx)] [visit_exp `HIGH`_half] [visit_exp ()] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#78868}(200)] -[visit_exp i#78868] -[visit_id i#78868] +[visit_exp `%`_u32(200)] [visit_exp (200)] [visit_exp 200] -[check_dims] dim#16928 dim#16940 half#728 i#79128 i#79135 i#79142 i#79147 i#79154 lanetype#16928 lanetype#16940 shape_1#27 shape_2#27 sx#14260 -dims \ = dim#16928, dim#16940, half#728, i#79128, i#79135, i#79142, i#79147, i#79154, lanetype#16928, lanetype#16940, shape_1#27, shape_2#27, sx#14260 -[visit_exp `VCVTOP`_instr{shape_1#27, shape_2#27}(`%X%`_shape{lanetype#16928, dim#16928, i#79135}(`I64`_lanetype, `%`_dim{i#79142}(2)), `%X%`_shape{lanetype#16940, dim#16940, i#79147}(`I32`_lanetype, `%`_dim{i#79154}(4)), `EXTEND`_vcvtop__{half#728, sx#14260}(`LOW`_half, `U`_sx))] -[visit_exp shape_1#27] -[visit_id shape_1#27] -[visit_exp shape_2#27] -[visit_id shape_2#27] -[visit_exp (`%X%`_shape{lanetype#16928, dim#16928, i#79135}(`I64`_lanetype, `%`_dim{i#79142}(2)), `%X%`_shape{lanetype#16940, dim#16940, i#79147}(`I32`_lanetype, `%`_dim{i#79154}(4)), `EXTEND`_vcvtop__{half#728, sx#14260}(`LOW`_half, `U`_sx))] -[visit_exp `%X%`_shape{lanetype#16928, dim#16928, i#79135}(`I64`_lanetype, `%`_dim{i#79142}(2))] -[visit_exp lanetype#16928] -[visit_id lanetype#16928] -[visit_exp dim#16928] -[visit_id dim#16928] -[visit_exp i#79135] -[visit_id i#79135] -[visit_exp (`I64`_lanetype, `%`_dim{i#79142}(2))] +[check_dims] +dims \ = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `EXTEND`_vcvtop__(`LOW`_half, `U`_sx))] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `EXTEND`_vcvtop__(`LOW`_half, `U`_sx))] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#79142}(2)] -[visit_exp i#79142] -[visit_id i#79142] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `%X%`_shape{lanetype#16940, dim#16940, i#79147}(`I32`_lanetype, `%`_dim{i#79154}(4))] -[visit_exp lanetype#16940] -[visit_id lanetype#16940] -[visit_exp dim#16940] -[visit_id dim#16940] -[visit_exp i#79147] -[visit_id i#79147] -[visit_exp (`I32`_lanetype, `%`_dim{i#79154}(4))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#79154}(4)] -[visit_exp i#79154] -[visit_id i#79154] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `EXTEND`_vcvtop__{half#728, sx#14260}(`LOW`_half, `U`_sx)] -[visit_exp half#728] -[visit_id half#728] -[visit_exp sx#14260] -[visit_id sx#14260] +[visit_exp `EXTEND`_vcvtop__(`LOW`_half, `U`_sx)] [visit_exp (`LOW`_half, `U`_sx)] [visit_exp `LOW`_half] [visit_exp ()] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#79128}(201)] -[visit_exp i#79128] -[visit_id i#79128] +[visit_exp `%`_u32(201)] [visit_exp (201)] [visit_exp 201] -[check_dims] dim#17043 dim#17055 half#762 i#79388 i#79395 i#79402 i#79407 i#79414 lanetype#17043 lanetype#17055 shape_1#29 shape_2#29 sx#14294 -dims \ = dim#17043, dim#17055, half#762, i#79388, i#79395, i#79402, i#79407, i#79414, lanetype#17043, lanetype#17055, shape_1#29, shape_2#29, sx#14294 -[visit_exp `VCVTOP`_instr{shape_1#29, shape_2#29}(`%X%`_shape{lanetype#17043, dim#17043, i#79395}(`I64`_lanetype, `%`_dim{i#79402}(2)), `%X%`_shape{lanetype#17055, dim#17055, i#79407}(`I32`_lanetype, `%`_dim{i#79414}(4)), `EXTEND`_vcvtop__{half#762, sx#14294}(`HIGH`_half, `U`_sx))] -[visit_exp shape_1#29] -[visit_id shape_1#29] -[visit_exp shape_2#29] -[visit_id shape_2#29] -[visit_exp (`%X%`_shape{lanetype#17043, dim#17043, i#79395}(`I64`_lanetype, `%`_dim{i#79402}(2)), `%X%`_shape{lanetype#17055, dim#17055, i#79407}(`I32`_lanetype, `%`_dim{i#79414}(4)), `EXTEND`_vcvtop__{half#762, sx#14294}(`HIGH`_half, `U`_sx))] -[visit_exp `%X%`_shape{lanetype#17043, dim#17043, i#79395}(`I64`_lanetype, `%`_dim{i#79402}(2))] -[visit_exp lanetype#17043] -[visit_id lanetype#17043] -[visit_exp dim#17043] -[visit_id dim#17043] -[visit_exp i#79395] -[visit_id i#79395] -[visit_exp (`I64`_lanetype, `%`_dim{i#79402}(2))] +[check_dims] +dims \ = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `EXTEND`_vcvtop__(`HIGH`_half, `U`_sx))] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `EXTEND`_vcvtop__(`HIGH`_half, `U`_sx))] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#79402}(2)] -[visit_exp i#79402] -[visit_id i#79402] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `%X%`_shape{lanetype#17055, dim#17055, i#79407}(`I32`_lanetype, `%`_dim{i#79414}(4))] -[visit_exp lanetype#17055] -[visit_id lanetype#17055] -[visit_exp dim#17055] -[visit_id dim#17055] -[visit_exp i#79407] -[visit_id i#79407] -[visit_exp (`I32`_lanetype, `%`_dim{i#79414}(4))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#79414}(4)] -[visit_exp i#79414] -[visit_id i#79414] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `EXTEND`_vcvtop__{half#762, sx#14294}(`HIGH`_half, `U`_sx)] -[visit_exp half#762] -[visit_id half#762] -[visit_exp sx#14294] -[visit_id sx#14294] +[visit_exp `EXTEND`_vcvtop__(`HIGH`_half, `U`_sx)] [visit_exp (`HIGH`_half, `U`_sx)] [visit_exp `HIGH`_half] [visit_exp ()] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#79388}(202)] -[visit_exp i#79388] -[visit_id i#79388] +[visit_exp `%`_u32(202)] [visit_exp (202)] [visit_exp 202] ps' = [check_dims] -[check_dims] Jnn#444 dim#17158 i#79648 i#79655 i#79662 ishape#39 lanetype#17158 shape#3324 -dims \ = Jnn#444, dim#17158, i#79648, i#79655, i#79662, ishape#39, lanetype#17158, shape#3324 -[visit_exp `VSHIFTOP`_instr{ishape#39}(`%`_ishape{shape#3324, Jnn#444}(`%X%`_shape{lanetype#17158, dim#17158, i#79655}(`I64`_lanetype, `%`_dim{i#79662}(2))), `SHL`_vshiftop_)] -[visit_exp ishape#39] -[visit_id ishape#39] -[visit_exp (`%`_ishape{shape#3324, Jnn#444}(`%X%`_shape{lanetype#17158, dim#17158, i#79655}(`I64`_lanetype, `%`_dim{i#79662}(2))), `SHL`_vshiftop_)] -[visit_exp `%`_ishape{shape#3324, Jnn#444}(`%X%`_shape{lanetype#17158, dim#17158, i#79655}(`I64`_lanetype, `%`_dim{i#79662}(2)))] -[visit_exp shape#3324] -[visit_id shape#3324] -[visit_exp Jnn#444] -[visit_id Jnn#444] -[visit_exp (`%X%`_shape{lanetype#17158, dim#17158, i#79655}(`I64`_lanetype, `%`_dim{i#79662}(2)))] -[visit_exp `%X%`_shape{lanetype#17158, dim#17158, i#79655}(`I64`_lanetype, `%`_dim{i#79662}(2))] -[visit_exp lanetype#17158] -[visit_id lanetype#17158] -[visit_exp dim#17158] -[visit_id dim#17158] -[visit_exp i#79655] -[visit_id i#79655] -[visit_exp (`I64`_lanetype, `%`_dim{i#79662}(2))] +[check_dims] +dims \ = +[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `SHL`_vshiftop_)] +[visit_exp (`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `SHL`_vshiftop_)] +[visit_exp `%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#79662}(2)] -[visit_exp i#79662] -[visit_id i#79662] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `SHL`_vshiftop_] [visit_exp ()] -[visit_exp `%`_u32{i#79648}(203)] -[visit_exp i#79648] -[visit_id i#79648] +[visit_exp `%`_u32(203)] [visit_exp (203)] [visit_exp 203] -[check_dims] Jnn#448 dim#17215 i#79760 i#79767 i#79774 ishape#41 lanetype#17215 shape#3351 sx#14328 -dims \ = Jnn#448, dim#17215, i#79760, i#79767, i#79774, ishape#41, lanetype#17215, shape#3351, sx#14328 -[visit_exp `VSHIFTOP`_instr{ishape#41}(`%`_ishape{shape#3351, Jnn#448}(`%X%`_shape{lanetype#17215, dim#17215, i#79767}(`I64`_lanetype, `%`_dim{i#79774}(2))), `SHR`_vshiftop_{sx#14328}(`S`_sx))] -[visit_exp ishape#41] -[visit_id ishape#41] -[visit_exp (`%`_ishape{shape#3351, Jnn#448}(`%X%`_shape{lanetype#17215, dim#17215, i#79767}(`I64`_lanetype, `%`_dim{i#79774}(2))), `SHR`_vshiftop_{sx#14328}(`S`_sx))] -[visit_exp `%`_ishape{shape#3351, Jnn#448}(`%X%`_shape{lanetype#17215, dim#17215, i#79767}(`I64`_lanetype, `%`_dim{i#79774}(2)))] -[visit_exp shape#3351] -[visit_id shape#3351] -[visit_exp Jnn#448] -[visit_id Jnn#448] -[visit_exp (`%X%`_shape{lanetype#17215, dim#17215, i#79767}(`I64`_lanetype, `%`_dim{i#79774}(2)))] -[visit_exp `%X%`_shape{lanetype#17215, dim#17215, i#79767}(`I64`_lanetype, `%`_dim{i#79774}(2))] -[visit_exp lanetype#17215] -[visit_id lanetype#17215] -[visit_exp dim#17215] -[visit_id dim#17215] -[visit_exp i#79767] -[visit_id i#79767] -[visit_exp (`I64`_lanetype, `%`_dim{i#79774}(2))] +[check_dims] +dims \ = +[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `SHR`_vshiftop_(`S`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `SHR`_vshiftop_(`S`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#79774}(2)] -[visit_exp i#79774] -[visit_id i#79774] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `SHR`_vshiftop_{sx#14328}(`S`_sx)] -[visit_exp sx#14328] -[visit_id sx#14328] +[visit_exp `SHR`_vshiftop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#79760}(204)] -[visit_exp i#79760] -[visit_id i#79760] +[visit_exp `%`_u32(204)] [visit_exp (204)] [visit_exp 204] -[check_dims] Jnn#452 dim#17278 i#79882 i#79889 i#79896 ishape#43 lanetype#17278 shape#3380 sx#14347 -dims \ = Jnn#452, dim#17278, i#79882, i#79889, i#79896, ishape#43, lanetype#17278, shape#3380, sx#14347 -[visit_exp `VSHIFTOP`_instr{ishape#43}(`%`_ishape{shape#3380, Jnn#452}(`%X%`_shape{lanetype#17278, dim#17278, i#79889}(`I64`_lanetype, `%`_dim{i#79896}(2))), `SHR`_vshiftop_{sx#14347}(`U`_sx))] -[visit_exp ishape#43] -[visit_id ishape#43] -[visit_exp (`%`_ishape{shape#3380, Jnn#452}(`%X%`_shape{lanetype#17278, dim#17278, i#79889}(`I64`_lanetype, `%`_dim{i#79896}(2))), `SHR`_vshiftop_{sx#14347}(`U`_sx))] -[visit_exp `%`_ishape{shape#3380, Jnn#452}(`%X%`_shape{lanetype#17278, dim#17278, i#79889}(`I64`_lanetype, `%`_dim{i#79896}(2)))] -[visit_exp shape#3380] -[visit_id shape#3380] -[visit_exp Jnn#452] -[visit_id Jnn#452] -[visit_exp (`%X%`_shape{lanetype#17278, dim#17278, i#79889}(`I64`_lanetype, `%`_dim{i#79896}(2)))] -[visit_exp `%X%`_shape{lanetype#17278, dim#17278, i#79889}(`I64`_lanetype, `%`_dim{i#79896}(2))] -[visit_exp lanetype#17278] -[visit_id lanetype#17278] -[visit_exp dim#17278] -[visit_id dim#17278] -[visit_exp i#79889] -[visit_id i#79889] -[visit_exp (`I64`_lanetype, `%`_dim{i#79896}(2))] +[check_dims] +dims \ = +[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `SHR`_vshiftop_(`U`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `SHR`_vshiftop_(`U`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#79896}(2)] -[visit_exp i#79896] -[visit_id i#79896] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `SHR`_vshiftop_{sx#14347}(`U`_sx)] -[visit_exp sx#14347] -[visit_id sx#14347] +[visit_exp `SHR`_vshiftop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#79882}(205)] -[visit_exp i#79882] -[visit_id i#79882] +[visit_exp `%`_u32(205)] [visit_exp (205)] [visit_exp 205] ps' = [check_dims] -[check_dims] dim#17341 i#80004 i#80011 i#80018 lanetype#17341 shape#3399 -dims \ = dim#17341, i#80004, i#80011, i#80018, lanetype#17341, shape#3399 -[visit_exp `VBINOP`_instr{shape#3399}(`%X%`_shape{lanetype#17341, dim#17341, i#80011}(`I64`_lanetype, `%`_dim{i#80018}(2)), `ADD`_vbinop_)] -[visit_exp shape#3399] -[visit_id shape#3399] -[visit_exp (`%X%`_shape{lanetype#17341, dim#17341, i#80011}(`I64`_lanetype, `%`_dim{i#80018}(2)), `ADD`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#17341, dim#17341, i#80011}(`I64`_lanetype, `%`_dim{i#80018}(2))] -[visit_exp lanetype#17341] -[visit_id lanetype#17341] -[visit_exp dim#17341] -[visit_id dim#17341] -[visit_exp i#80011] -[visit_id i#80011] -[visit_exp (`I64`_lanetype, `%`_dim{i#80018}(2))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `ADD`_vbinop_)] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `ADD`_vbinop_)] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#80018}(2)] -[visit_exp i#80018] -[visit_id i#80018] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `ADD`_vbinop_] [visit_exp ()] -[visit_exp `%`_u32{i#80004}(206)] -[visit_exp i#80004] -[visit_id i#80004] +[visit_exp `%`_u32(206)] [visit_exp (206)] [visit_exp 206] -[check_dims] dim#17368 i#80086 i#80093 i#80100 lanetype#17368 shape#3401 -dims \ = dim#17368, i#80086, i#80093, i#80100, lanetype#17368, shape#3401 -[visit_exp `VBINOP`_instr{shape#3401}(`%X%`_shape{lanetype#17368, dim#17368, i#80093}(`I64`_lanetype, `%`_dim{i#80100}(2)), `SUB`_vbinop_)] -[visit_exp shape#3401] -[visit_id shape#3401] -[visit_exp (`%X%`_shape{lanetype#17368, dim#17368, i#80093}(`I64`_lanetype, `%`_dim{i#80100}(2)), `SUB`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#17368, dim#17368, i#80093}(`I64`_lanetype, `%`_dim{i#80100}(2))] -[visit_exp lanetype#17368] -[visit_id lanetype#17368] -[visit_exp dim#17368] -[visit_id dim#17368] -[visit_exp i#80093] -[visit_id i#80093] -[visit_exp (`I64`_lanetype, `%`_dim{i#80100}(2))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `SUB`_vbinop_)] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `SUB`_vbinop_)] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#80100}(2)] -[visit_exp i#80100] -[visit_id i#80100] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `SUB`_vbinop_] [visit_exp ()] -[visit_exp `%`_u32{i#80086}(209)] -[visit_exp i#80086] -[visit_id i#80086] +[visit_exp `%`_u32(209)] [visit_exp (209)] [visit_exp 209] -[check_dims] dim#17395 i#80168 i#80175 i#80182 lanetype#17395 shape#3403 -dims \ = dim#17395, i#80168, i#80175, i#80182, lanetype#17395, shape#3403 -[visit_exp `VBINOP`_instr{shape#3403}(`%X%`_shape{lanetype#17395, dim#17395, i#80175}(`I64`_lanetype, `%`_dim{i#80182}(2)), `MUL`_vbinop_)] -[visit_exp shape#3403] -[visit_id shape#3403] -[visit_exp (`%X%`_shape{lanetype#17395, dim#17395, i#80175}(`I64`_lanetype, `%`_dim{i#80182}(2)), `MUL`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#17395, dim#17395, i#80175}(`I64`_lanetype, `%`_dim{i#80182}(2))] -[visit_exp lanetype#17395] -[visit_id lanetype#17395] -[visit_exp dim#17395] -[visit_id dim#17395] -[visit_exp i#80175] -[visit_id i#80175] -[visit_exp (`I64`_lanetype, `%`_dim{i#80182}(2))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `MUL`_vbinop_)] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `MUL`_vbinop_)] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#80182}(2)] -[visit_exp i#80182] -[visit_id i#80182] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `MUL`_vbinop_] [visit_exp ()] -[visit_exp `%`_u32{i#80168}(213)] -[visit_exp i#80168] -[visit_id i#80168] +[visit_exp `%`_u32(213)] [visit_exp (213)] [visit_exp 213] ps' = [check_dims] -[check_dims] dim#17422 i#80250 i#80257 i#80264 lanetype#17422 shape#3405 -dims \ = dim#17422, i#80250, i#80257, i#80264, lanetype#17422, shape#3405 -[visit_exp `VRELOP`_instr{shape#3405}(`%X%`_shape{lanetype#17422, dim#17422, i#80257}(`I64`_lanetype, `%`_dim{i#80264}(2)), `EQ`_vrelop_)] -[visit_exp shape#3405] -[visit_id shape#3405] -[visit_exp (`%X%`_shape{lanetype#17422, dim#17422, i#80257}(`I64`_lanetype, `%`_dim{i#80264}(2)), `EQ`_vrelop_)] -[visit_exp `%X%`_shape{lanetype#17422, dim#17422, i#80257}(`I64`_lanetype, `%`_dim{i#80264}(2))] -[visit_exp lanetype#17422] -[visit_id lanetype#17422] -[visit_exp dim#17422] -[visit_id dim#17422] -[visit_exp i#80257] -[visit_id i#80257] -[visit_exp (`I64`_lanetype, `%`_dim{i#80264}(2))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `EQ`_vrelop_)] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `EQ`_vrelop_)] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#80264}(2)] -[visit_exp i#80264] -[visit_id i#80264] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `EQ`_vrelop_] [visit_exp ()] -[visit_exp `%`_u32{i#80250}(214)] -[visit_exp i#80250] -[visit_id i#80250] +[visit_exp `%`_u32(214)] [visit_exp (214)] [visit_exp 214] -[check_dims] dim#17449 i#80332 i#80339 i#80346 lanetype#17449 shape#3407 -dims \ = dim#17449, i#80332, i#80339, i#80346, lanetype#17449, shape#3407 -[visit_exp `VRELOP`_instr{shape#3407}(`%X%`_shape{lanetype#17449, dim#17449, i#80339}(`I64`_lanetype, `%`_dim{i#80346}(2)), `NE`_vrelop_)] -[visit_exp shape#3407] -[visit_id shape#3407] -[visit_exp (`%X%`_shape{lanetype#17449, dim#17449, i#80339}(`I64`_lanetype, `%`_dim{i#80346}(2)), `NE`_vrelop_)] -[visit_exp `%X%`_shape{lanetype#17449, dim#17449, i#80339}(`I64`_lanetype, `%`_dim{i#80346}(2))] -[visit_exp lanetype#17449] -[visit_id lanetype#17449] -[visit_exp dim#17449] -[visit_id dim#17449] -[visit_exp i#80339] -[visit_id i#80339] -[visit_exp (`I64`_lanetype, `%`_dim{i#80346}(2))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `NE`_vrelop_)] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `NE`_vrelop_)] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#80346}(2)] -[visit_exp i#80346] -[visit_id i#80346] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `NE`_vrelop_] [visit_exp ()] -[visit_exp `%`_u32{i#80332}(215)] -[visit_exp i#80332] -[visit_id i#80332] +[visit_exp `%`_u32(215)] [visit_exp (215)] [visit_exp 215] -[check_dims] dim#17476 i#80414 i#80421 i#80428 lanetype#17476 shape#3409 sx#14717 -dims \ = dim#17476, i#80414, i#80421, i#80428, lanetype#17476, shape#3409, sx#14717 -[visit_exp `VRELOP`_instr{shape#3409}(`%X%`_shape{lanetype#17476, dim#17476, i#80421}(`I64`_lanetype, `%`_dim{i#80428}(2)), `LT`_vrelop_{sx#14717}(`S`_sx))] -[visit_exp shape#3409] -[visit_id shape#3409] -[visit_exp (`%X%`_shape{lanetype#17476, dim#17476, i#80421}(`I64`_lanetype, `%`_dim{i#80428}(2)), `LT`_vrelop_{sx#14717}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#17476, dim#17476, i#80421}(`I64`_lanetype, `%`_dim{i#80428}(2))] -[visit_exp lanetype#17476] -[visit_id lanetype#17476] -[visit_exp dim#17476] -[visit_id dim#17476] -[visit_exp i#80421] -[visit_id i#80421] -[visit_exp (`I64`_lanetype, `%`_dim{i#80428}(2))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `LT`_vrelop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `LT`_vrelop_(`S`_sx))] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#80428}(2)] -[visit_exp i#80428] -[visit_id i#80428] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `LT`_vrelop_{sx#14717}(`S`_sx)] -[visit_exp sx#14717] -[visit_id sx#14717] +[visit_exp `LT`_vrelop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#80414}(216)] -[visit_exp i#80414] -[visit_id i#80414] +[visit_exp `%`_u32(216)] [visit_exp (216)] [visit_exp 216] -[check_dims] dim#17505 i#80502 i#80509 i#80516 lanetype#17505 shape#3411 sx#14787 -dims \ = dim#17505, i#80502, i#80509, i#80516, lanetype#17505, shape#3411, sx#14787 -[visit_exp `VRELOP`_instr{shape#3411}(`%X%`_shape{lanetype#17505, dim#17505, i#80509}(`I64`_lanetype, `%`_dim{i#80516}(2)), `GT`_vrelop_{sx#14787}(`S`_sx))] -[visit_exp shape#3411] -[visit_id shape#3411] -[visit_exp (`%X%`_shape{lanetype#17505, dim#17505, i#80509}(`I64`_lanetype, `%`_dim{i#80516}(2)), `GT`_vrelop_{sx#14787}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#17505, dim#17505, i#80509}(`I64`_lanetype, `%`_dim{i#80516}(2))] -[visit_exp lanetype#17505] -[visit_id lanetype#17505] -[visit_exp dim#17505] -[visit_id dim#17505] -[visit_exp i#80509] -[visit_id i#80509] -[visit_exp (`I64`_lanetype, `%`_dim{i#80516}(2))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `GT`_vrelop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `GT`_vrelop_(`S`_sx))] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#80516}(2)] -[visit_exp i#80516] -[visit_id i#80516] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `GT`_vrelop_{sx#14787}(`S`_sx)] -[visit_exp sx#14787] -[visit_id sx#14787] +[visit_exp `GT`_vrelop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#80502}(217)] -[visit_exp i#80502] -[visit_id i#80502] +[visit_exp `%`_u32(217)] [visit_exp (217)] [visit_exp 217] -[check_dims] dim#17534 i#80590 i#80597 i#80604 lanetype#17534 shape#3413 sx#14857 -dims \ = dim#17534, i#80590, i#80597, i#80604, lanetype#17534, shape#3413, sx#14857 -[visit_exp `VRELOP`_instr{shape#3413}(`%X%`_shape{lanetype#17534, dim#17534, i#80597}(`I64`_lanetype, `%`_dim{i#80604}(2)), `LE`_vrelop_{sx#14857}(`S`_sx))] -[visit_exp shape#3413] -[visit_id shape#3413] -[visit_exp (`%X%`_shape{lanetype#17534, dim#17534, i#80597}(`I64`_lanetype, `%`_dim{i#80604}(2)), `LE`_vrelop_{sx#14857}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#17534, dim#17534, i#80597}(`I64`_lanetype, `%`_dim{i#80604}(2))] -[visit_exp lanetype#17534] -[visit_id lanetype#17534] -[visit_exp dim#17534] -[visit_id dim#17534] -[visit_exp i#80597] -[visit_id i#80597] -[visit_exp (`I64`_lanetype, `%`_dim{i#80604}(2))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `LE`_vrelop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `LE`_vrelop_(`S`_sx))] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#80604}(2)] -[visit_exp i#80604] -[visit_id i#80604] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `LE`_vrelop_{sx#14857}(`S`_sx)] -[visit_exp sx#14857] -[visit_id sx#14857] +[visit_exp `LE`_vrelop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#80590}(218)] -[visit_exp i#80590] -[visit_id i#80590] +[visit_exp `%`_u32(218)] [visit_exp (218)] [visit_exp 218] -[check_dims] dim#17563 i#80678 i#80685 i#80692 lanetype#17563 shape#3415 sx#14927 -dims \ = dim#17563, i#80678, i#80685, i#80692, lanetype#17563, shape#3415, sx#14927 -[visit_exp `VRELOP`_instr{shape#3415}(`%X%`_shape{lanetype#17563, dim#17563, i#80685}(`I64`_lanetype, `%`_dim{i#80692}(2)), `GE`_vrelop_{sx#14927}(`S`_sx))] -[visit_exp shape#3415] -[visit_id shape#3415] -[visit_exp (`%X%`_shape{lanetype#17563, dim#17563, i#80685}(`I64`_lanetype, `%`_dim{i#80692}(2)), `GE`_vrelop_{sx#14927}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#17563, dim#17563, i#80685}(`I64`_lanetype, `%`_dim{i#80692}(2))] -[visit_exp lanetype#17563] -[visit_id lanetype#17563] -[visit_exp dim#17563] -[visit_id dim#17563] -[visit_exp i#80685] -[visit_id i#80685] -[visit_exp (`I64`_lanetype, `%`_dim{i#80692}(2))] +[check_dims] +dims \ = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `GE`_vrelop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `GE`_vrelop_(`S`_sx))] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#80692}(2)] -[visit_exp i#80692] -[visit_id i#80692] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `GE`_vrelop_{sx#14927}(`S`_sx)] -[visit_exp sx#14927] -[visit_id sx#14927] +[visit_exp `GE`_vrelop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#80678}(219)] -[visit_exp i#80678] -[visit_id i#80678] +[visit_exp `%`_u32(219)] [visit_exp (219)] [visit_exp 219] ps' = [check_dims] -[check_dims] Jnn#456 Jnn#460 dim#17592 dim#17604 half#796 i#80766 i#80773 i#80780 i#80785 i#80792 ishape_1#63 ishape_2#63 lanetype#17592 lanetype#17604 shape#3427 shape#3439 sx#14961 -dims \ = Jnn#456, Jnn#460, dim#17592, dim#17604, half#796, i#80766, i#80773, i#80780, i#80785, i#80792, ishape_1#63, ishape_2#63, lanetype#17592, lanetype#17604, shape#3427, shape#3439, sx#14961 -[visit_exp `VEXTBINOP`_instr{ishape_1#63, ishape_2#63}(`%`_ishape{shape#3427, Jnn#456}(`%X%`_shape{lanetype#17592, dim#17592, i#80773}(`I64`_lanetype, `%`_dim{i#80780}(2))), `%`_ishape{shape#3439, Jnn#460}(`%X%`_shape{lanetype#17604, dim#17604, i#80785}(`I32`_lanetype, `%`_dim{i#80792}(4))), `EXTMUL`_vextbinop__{half#796, sx#14961}(`LOW`_half, `S`_sx))] -[visit_exp ishape_1#63] -[visit_id ishape_1#63] -[visit_exp ishape_2#63] -[visit_id ishape_2#63] -[visit_exp (`%`_ishape{shape#3427, Jnn#456}(`%X%`_shape{lanetype#17592, dim#17592, i#80773}(`I64`_lanetype, `%`_dim{i#80780}(2))), `%`_ishape{shape#3439, Jnn#460}(`%X%`_shape{lanetype#17604, dim#17604, i#80785}(`I32`_lanetype, `%`_dim{i#80792}(4))), `EXTMUL`_vextbinop__{half#796, sx#14961}(`LOW`_half, `S`_sx))] -[visit_exp `%`_ishape{shape#3427, Jnn#456}(`%X%`_shape{lanetype#17592, dim#17592, i#80773}(`I64`_lanetype, `%`_dim{i#80780}(2)))] -[visit_exp shape#3427] -[visit_id shape#3427] -[visit_exp Jnn#456] -[visit_id Jnn#456] -[visit_exp (`%X%`_shape{lanetype#17592, dim#17592, i#80773}(`I64`_lanetype, `%`_dim{i#80780}(2)))] -[visit_exp `%X%`_shape{lanetype#17592, dim#17592, i#80773}(`I64`_lanetype, `%`_dim{i#80780}(2))] -[visit_exp lanetype#17592] -[visit_id lanetype#17592] -[visit_exp dim#17592] -[visit_id dim#17592] -[visit_exp i#80773] -[visit_id i#80773] -[visit_exp (`I64`_lanetype, `%`_dim{i#80780}(2))] +[check_dims] +dims \ = +[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `EXTMUL`_vextbinop__(`LOW`_half, `S`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `EXTMUL`_vextbinop__(`LOW`_half, `S`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#80780}(2)] -[visit_exp i#80780] -[visit_id i#80780] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `%`_ishape{shape#3439, Jnn#460}(`%X%`_shape{lanetype#17604, dim#17604, i#80785}(`I32`_lanetype, `%`_dim{i#80792}(4)))] -[visit_exp shape#3439] -[visit_id shape#3439] -[visit_exp Jnn#460] -[visit_id Jnn#460] -[visit_exp (`%X%`_shape{lanetype#17604, dim#17604, i#80785}(`I32`_lanetype, `%`_dim{i#80792}(4)))] -[visit_exp `%X%`_shape{lanetype#17604, dim#17604, i#80785}(`I32`_lanetype, `%`_dim{i#80792}(4))] -[visit_exp lanetype#17604] -[visit_id lanetype#17604] -[visit_exp dim#17604] -[visit_id dim#17604] -[visit_exp i#80785] -[visit_id i#80785] -[visit_exp (`I32`_lanetype, `%`_dim{i#80792}(4))] +[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#80792}(4)] -[visit_exp i#80792] -[visit_id i#80792] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `EXTMUL`_vextbinop__{half#796, sx#14961}(`LOW`_half, `S`_sx)] -[visit_exp half#796] -[visit_id half#796] -[visit_exp sx#14961] -[visit_id sx#14961] +[visit_exp `EXTMUL`_vextbinop__(`LOW`_half, `S`_sx)] [visit_exp (`LOW`_half, `S`_sx)] [visit_exp `LOW`_half] [visit_exp ()] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#80766}(220)] -[visit_exp i#80766] -[visit_id i#80766] +[visit_exp `%`_u32(220)] [visit_exp (220)] [visit_exp 220] -[check_dims] Jnn#464 Jnn#468 dim#17827 dim#17839 half#830 i#81146 i#81153 i#81160 i#81165 i#81172 ishape_1#65 ishape_2#65 lanetype#17827 lanetype#17839 shape#3542 shape#3554 sx#14995 -dims \ = Jnn#464, Jnn#468, dim#17827, dim#17839, half#830, i#81146, i#81153, i#81160, i#81165, i#81172, ishape_1#65, ishape_2#65, lanetype#17827, lanetype#17839, shape#3542, shape#3554, sx#14995 -[visit_exp `VEXTBINOP`_instr{ishape_1#65, ishape_2#65}(`%`_ishape{shape#3542, Jnn#464}(`%X%`_shape{lanetype#17827, dim#17827, i#81153}(`I64`_lanetype, `%`_dim{i#81160}(2))), `%`_ishape{shape#3554, Jnn#468}(`%X%`_shape{lanetype#17839, dim#17839, i#81165}(`I32`_lanetype, `%`_dim{i#81172}(4))), `EXTMUL`_vextbinop__{half#830, sx#14995}(`HIGH`_half, `S`_sx))] -[visit_exp ishape_1#65] -[visit_id ishape_1#65] -[visit_exp ishape_2#65] -[visit_id ishape_2#65] -[visit_exp (`%`_ishape{shape#3542, Jnn#464}(`%X%`_shape{lanetype#17827, dim#17827, i#81153}(`I64`_lanetype, `%`_dim{i#81160}(2))), `%`_ishape{shape#3554, Jnn#468}(`%X%`_shape{lanetype#17839, dim#17839, i#81165}(`I32`_lanetype, `%`_dim{i#81172}(4))), `EXTMUL`_vextbinop__{half#830, sx#14995}(`HIGH`_half, `S`_sx))] -[visit_exp `%`_ishape{shape#3542, Jnn#464}(`%X%`_shape{lanetype#17827, dim#17827, i#81153}(`I64`_lanetype, `%`_dim{i#81160}(2)))] -[visit_exp shape#3542] -[visit_id shape#3542] -[visit_exp Jnn#464] -[visit_id Jnn#464] -[visit_exp (`%X%`_shape{lanetype#17827, dim#17827, i#81153}(`I64`_lanetype, `%`_dim{i#81160}(2)))] -[visit_exp `%X%`_shape{lanetype#17827, dim#17827, i#81153}(`I64`_lanetype, `%`_dim{i#81160}(2))] -[visit_exp lanetype#17827] -[visit_id lanetype#17827] -[visit_exp dim#17827] -[visit_id dim#17827] -[visit_exp i#81153] -[visit_id i#81153] -[visit_exp (`I64`_lanetype, `%`_dim{i#81160}(2))] +[check_dims] +dims \ = +[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `EXTMUL`_vextbinop__(`HIGH`_half, `S`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `EXTMUL`_vextbinop__(`HIGH`_half, `S`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#81160}(2)] -[visit_exp i#81160] -[visit_id i#81160] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `%`_ishape{shape#3554, Jnn#468}(`%X%`_shape{lanetype#17839, dim#17839, i#81165}(`I32`_lanetype, `%`_dim{i#81172}(4)))] -[visit_exp shape#3554] -[visit_id shape#3554] -[visit_exp Jnn#468] -[visit_id Jnn#468] -[visit_exp (`%X%`_shape{lanetype#17839, dim#17839, i#81165}(`I32`_lanetype, `%`_dim{i#81172}(4)))] -[visit_exp `%X%`_shape{lanetype#17839, dim#17839, i#81165}(`I32`_lanetype, `%`_dim{i#81172}(4))] -[visit_exp lanetype#17839] -[visit_id lanetype#17839] -[visit_exp dim#17839] -[visit_id dim#17839] -[visit_exp i#81165] -[visit_id i#81165] -[visit_exp (`I32`_lanetype, `%`_dim{i#81172}(4))] +[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#81172}(4)] -[visit_exp i#81172] -[visit_id i#81172] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `EXTMUL`_vextbinop__{half#830, sx#14995}(`HIGH`_half, `S`_sx)] -[visit_exp half#830] -[visit_id half#830] -[visit_exp sx#14995] -[visit_id sx#14995] +[visit_exp `EXTMUL`_vextbinop__(`HIGH`_half, `S`_sx)] [visit_exp (`HIGH`_half, `S`_sx)] [visit_exp `HIGH`_half] [visit_exp ()] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#81146}(221)] -[visit_exp i#81146] -[visit_id i#81146] +[visit_exp `%`_u32(221)] [visit_exp (221)] [visit_exp 221] -[check_dims] Jnn#472 Jnn#476 dim#18062 dim#18074 half#864 i#81526 i#81533 i#81540 i#81545 i#81552 ishape_1#67 ishape_2#67 lanetype#18062 lanetype#18074 shape#3657 shape#3669 sx#15029 -dims \ = Jnn#472, Jnn#476, dim#18062, dim#18074, half#864, i#81526, i#81533, i#81540, i#81545, i#81552, ishape_1#67, ishape_2#67, lanetype#18062, lanetype#18074, shape#3657, shape#3669, sx#15029 -[visit_exp `VEXTBINOP`_instr{ishape_1#67, ishape_2#67}(`%`_ishape{shape#3657, Jnn#472}(`%X%`_shape{lanetype#18062, dim#18062, i#81533}(`I64`_lanetype, `%`_dim{i#81540}(2))), `%`_ishape{shape#3669, Jnn#476}(`%X%`_shape{lanetype#18074, dim#18074, i#81545}(`I32`_lanetype, `%`_dim{i#81552}(4))), `EXTMUL`_vextbinop__{half#864, sx#15029}(`LOW`_half, `U`_sx))] -[visit_exp ishape_1#67] -[visit_id ishape_1#67] -[visit_exp ishape_2#67] -[visit_id ishape_2#67] -[visit_exp (`%`_ishape{shape#3657, Jnn#472}(`%X%`_shape{lanetype#18062, dim#18062, i#81533}(`I64`_lanetype, `%`_dim{i#81540}(2))), `%`_ishape{shape#3669, Jnn#476}(`%X%`_shape{lanetype#18074, dim#18074, i#81545}(`I32`_lanetype, `%`_dim{i#81552}(4))), `EXTMUL`_vextbinop__{half#864, sx#15029}(`LOW`_half, `U`_sx))] -[visit_exp `%`_ishape{shape#3657, Jnn#472}(`%X%`_shape{lanetype#18062, dim#18062, i#81533}(`I64`_lanetype, `%`_dim{i#81540}(2)))] -[visit_exp shape#3657] -[visit_id shape#3657] -[visit_exp Jnn#472] -[visit_id Jnn#472] -[visit_exp (`%X%`_shape{lanetype#18062, dim#18062, i#81533}(`I64`_lanetype, `%`_dim{i#81540}(2)))] -[visit_exp `%X%`_shape{lanetype#18062, dim#18062, i#81533}(`I64`_lanetype, `%`_dim{i#81540}(2))] -[visit_exp lanetype#18062] -[visit_id lanetype#18062] -[visit_exp dim#18062] -[visit_id dim#18062] -[visit_exp i#81533] -[visit_id i#81533] -[visit_exp (`I64`_lanetype, `%`_dim{i#81540}(2))] +[check_dims] +dims \ = +[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `EXTMUL`_vextbinop__(`LOW`_half, `U`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `EXTMUL`_vextbinop__(`LOW`_half, `U`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#81540}(2)] -[visit_exp i#81540] -[visit_id i#81540] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `%`_ishape{shape#3669, Jnn#476}(`%X%`_shape{lanetype#18074, dim#18074, i#81545}(`I32`_lanetype, `%`_dim{i#81552}(4)))] -[visit_exp shape#3669] -[visit_id shape#3669] -[visit_exp Jnn#476] -[visit_id Jnn#476] -[visit_exp (`%X%`_shape{lanetype#18074, dim#18074, i#81545}(`I32`_lanetype, `%`_dim{i#81552}(4)))] -[visit_exp `%X%`_shape{lanetype#18074, dim#18074, i#81545}(`I32`_lanetype, `%`_dim{i#81552}(4))] -[visit_exp lanetype#18074] -[visit_id lanetype#18074] -[visit_exp dim#18074] -[visit_id dim#18074] -[visit_exp i#81545] -[visit_id i#81545] -[visit_exp (`I32`_lanetype, `%`_dim{i#81552}(4))] +[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#81552}(4)] -[visit_exp i#81552] -[visit_id i#81552] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `EXTMUL`_vextbinop__{half#864, sx#15029}(`LOW`_half, `U`_sx)] -[visit_exp half#864] -[visit_id half#864] -[visit_exp sx#15029] -[visit_id sx#15029] +[visit_exp `EXTMUL`_vextbinop__(`LOW`_half, `U`_sx)] [visit_exp (`LOW`_half, `U`_sx)] [visit_exp `LOW`_half] [visit_exp ()] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#81526}(222)] -[visit_exp i#81526] -[visit_id i#81526] +[visit_exp `%`_u32(222)] [visit_exp (222)] [visit_exp 222] -[check_dims] Jnn#480 Jnn#484 dim#18297 dim#18309 half#898 i#81906 i#81913 i#81920 i#81925 i#81932 ishape_1#69 ishape_2#69 lanetype#18297 lanetype#18309 shape#3772 shape#3784 sx#15063 -dims \ = Jnn#480, Jnn#484, dim#18297, dim#18309, half#898, i#81906, i#81913, i#81920, i#81925, i#81932, ishape_1#69, ishape_2#69, lanetype#18297, lanetype#18309, shape#3772, shape#3784, sx#15063 -[visit_exp `VEXTBINOP`_instr{ishape_1#69, ishape_2#69}(`%`_ishape{shape#3772, Jnn#480}(`%X%`_shape{lanetype#18297, dim#18297, i#81913}(`I64`_lanetype, `%`_dim{i#81920}(2))), `%`_ishape{shape#3784, Jnn#484}(`%X%`_shape{lanetype#18309, dim#18309, i#81925}(`I32`_lanetype, `%`_dim{i#81932}(4))), `EXTMUL`_vextbinop__{half#898, sx#15063}(`HIGH`_half, `U`_sx))] -[visit_exp ishape_1#69] -[visit_id ishape_1#69] -[visit_exp ishape_2#69] -[visit_id ishape_2#69] -[visit_exp (`%`_ishape{shape#3772, Jnn#480}(`%X%`_shape{lanetype#18297, dim#18297, i#81913}(`I64`_lanetype, `%`_dim{i#81920}(2))), `%`_ishape{shape#3784, Jnn#484}(`%X%`_shape{lanetype#18309, dim#18309, i#81925}(`I32`_lanetype, `%`_dim{i#81932}(4))), `EXTMUL`_vextbinop__{half#898, sx#15063}(`HIGH`_half, `U`_sx))] -[visit_exp `%`_ishape{shape#3772, Jnn#480}(`%X%`_shape{lanetype#18297, dim#18297, i#81913}(`I64`_lanetype, `%`_dim{i#81920}(2)))] -[visit_exp shape#3772] -[visit_id shape#3772] -[visit_exp Jnn#480] -[visit_id Jnn#480] -[visit_exp (`%X%`_shape{lanetype#18297, dim#18297, i#81913}(`I64`_lanetype, `%`_dim{i#81920}(2)))] -[visit_exp `%X%`_shape{lanetype#18297, dim#18297, i#81913}(`I64`_lanetype, `%`_dim{i#81920}(2))] -[visit_exp lanetype#18297] -[visit_id lanetype#18297] -[visit_exp dim#18297] -[visit_id dim#18297] -[visit_exp i#81913] -[visit_id i#81913] -[visit_exp (`I64`_lanetype, `%`_dim{i#81920}(2))] +[check_dims] +dims \ = +[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `EXTMUL`_vextbinop__(`HIGH`_half, `U`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `EXTMUL`_vextbinop__(`HIGH`_half, `U`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#81920}(2)] -[visit_exp i#81920] -[visit_id i#81920] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `%`_ishape{shape#3784, Jnn#484}(`%X%`_shape{lanetype#18309, dim#18309, i#81925}(`I32`_lanetype, `%`_dim{i#81932}(4)))] -[visit_exp shape#3784] -[visit_id shape#3784] -[visit_exp Jnn#484] -[visit_id Jnn#484] -[visit_exp (`%X%`_shape{lanetype#18309, dim#18309, i#81925}(`I32`_lanetype, `%`_dim{i#81932}(4)))] -[visit_exp `%X%`_shape{lanetype#18309, dim#18309, i#81925}(`I32`_lanetype, `%`_dim{i#81932}(4))] -[visit_exp lanetype#18309] -[visit_id lanetype#18309] -[visit_exp dim#18309] -[visit_id dim#18309] -[visit_exp i#81925] -[visit_id i#81925] -[visit_exp (`I32`_lanetype, `%`_dim{i#81932}(4))] +[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#81932}(4)] -[visit_exp i#81932] -[visit_id i#81932] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `EXTMUL`_vextbinop__{half#898, sx#15063}(`HIGH`_half, `U`_sx)] -[visit_exp half#898] -[visit_id half#898] -[visit_exp sx#15063] -[visit_id sx#15063] +[visit_exp `EXTMUL`_vextbinop__(`HIGH`_half, `U`_sx)] [visit_exp (`HIGH`_half, `U`_sx)] [visit_exp `HIGH`_half] [visit_exp ()] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#81906}(223)] -[visit_exp i#81906] -[visit_id i#81906] +[visit_exp `%`_u32(223)] [visit_exp (223)] [visit_exp 223] ps' = [check_dims] -[check_dims] dim#18532 i#82286 i#82293 i#82300 lanetype#18532 shape#3877 -dims \ = dim#18532, i#82286, i#82293, i#82300, lanetype#18532, shape#3877 -[visit_exp `VUNOP`_instr{shape#3877}(`%X%`_shape{lanetype#18532, dim#18532, i#82293}(`F32`_lanetype, `%`_dim{i#82300}(4)), `CEIL`_vunop_)] -[visit_exp shape#3877] -[visit_id shape#3877] -[visit_exp (`%X%`_shape{lanetype#18532, dim#18532, i#82293}(`F32`_lanetype, `%`_dim{i#82300}(4)), `CEIL`_vunop_)] -[visit_exp `%X%`_shape{lanetype#18532, dim#18532, i#82293}(`F32`_lanetype, `%`_dim{i#82300}(4))] -[visit_exp lanetype#18532] -[visit_id lanetype#18532] -[visit_exp dim#18532] -[visit_id dim#18532] -[visit_exp i#82293] -[visit_id i#82293] -[visit_exp (`F32`_lanetype, `%`_dim{i#82300}(4))] +[check_dims] +dims \ = +[visit_exp `VUNOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `CEIL`_vunop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `CEIL`_vunop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#82300}(4)] -[visit_exp i#82300] -[visit_id i#82300] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `CEIL`_vunop_] [visit_exp ()] -[visit_exp `%`_u32{i#82286}(103)] -[visit_exp i#82286] -[visit_id i#82286] +[visit_exp `%`_u32(103)] [visit_exp (103)] [visit_exp 103] -[check_dims] dim#18574 i#82383 i#82390 i#82397 lanetype#18574 shape#3879 -dims \ = dim#18574, i#82383, i#82390, i#82397, lanetype#18574, shape#3879 -[visit_exp `VUNOP`_instr{shape#3879}(`%X%`_shape{lanetype#18574, dim#18574, i#82390}(`F32`_lanetype, `%`_dim{i#82397}(4)), `FLOOR`_vunop_)] -[visit_exp shape#3879] -[visit_id shape#3879] -[visit_exp (`%X%`_shape{lanetype#18574, dim#18574, i#82390}(`F32`_lanetype, `%`_dim{i#82397}(4)), `FLOOR`_vunop_)] -[visit_exp `%X%`_shape{lanetype#18574, dim#18574, i#82390}(`F32`_lanetype, `%`_dim{i#82397}(4))] -[visit_exp lanetype#18574] -[visit_id lanetype#18574] -[visit_exp dim#18574] -[visit_id dim#18574] -[visit_exp i#82390] -[visit_id i#82390] -[visit_exp (`F32`_lanetype, `%`_dim{i#82397}(4))] +[check_dims] +dims \ = +[visit_exp `VUNOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `FLOOR`_vunop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `FLOOR`_vunop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#82397}(4)] -[visit_exp i#82397] -[visit_id i#82397] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `FLOOR`_vunop_] [visit_exp ()] -[visit_exp `%`_u32{i#82383}(104)] -[visit_exp i#82383] -[visit_id i#82383] +[visit_exp `%`_u32(104)] [visit_exp (104)] [visit_exp 104] -[check_dims] dim#18616 i#82480 i#82487 i#82494 lanetype#18616 shape#3881 -dims \ = dim#18616, i#82480, i#82487, i#82494, lanetype#18616, shape#3881 -[visit_exp `VUNOP`_instr{shape#3881}(`%X%`_shape{lanetype#18616, dim#18616, i#82487}(`F32`_lanetype, `%`_dim{i#82494}(4)), `TRUNC`_vunop_)] -[visit_exp shape#3881] -[visit_id shape#3881] -[visit_exp (`%X%`_shape{lanetype#18616, dim#18616, i#82487}(`F32`_lanetype, `%`_dim{i#82494}(4)), `TRUNC`_vunop_)] -[visit_exp `%X%`_shape{lanetype#18616, dim#18616, i#82487}(`F32`_lanetype, `%`_dim{i#82494}(4))] -[visit_exp lanetype#18616] -[visit_id lanetype#18616] -[visit_exp dim#18616] -[visit_id dim#18616] -[visit_exp i#82487] -[visit_id i#82487] -[visit_exp (`F32`_lanetype, `%`_dim{i#82494}(4))] +[check_dims] +dims \ = +[visit_exp `VUNOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `TRUNC`_vunop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `TRUNC`_vunop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#82494}(4)] -[visit_exp i#82494] -[visit_id i#82494] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `TRUNC`_vunop_] [visit_exp ()] -[visit_exp `%`_u32{i#82480}(105)] -[visit_exp i#82480] -[visit_id i#82480] +[visit_exp `%`_u32(105)] [visit_exp (105)] [visit_exp 105] -[check_dims] dim#18658 i#82577 i#82584 i#82591 lanetype#18658 shape#3883 -dims \ = dim#18658, i#82577, i#82584, i#82591, lanetype#18658, shape#3883 -[visit_exp `VUNOP`_instr{shape#3883}(`%X%`_shape{lanetype#18658, dim#18658, i#82584}(`F32`_lanetype, `%`_dim{i#82591}(4)), `NEAREST`_vunop_)] -[visit_exp shape#3883] -[visit_id shape#3883] -[visit_exp (`%X%`_shape{lanetype#18658, dim#18658, i#82584}(`F32`_lanetype, `%`_dim{i#82591}(4)), `NEAREST`_vunop_)] -[visit_exp `%X%`_shape{lanetype#18658, dim#18658, i#82584}(`F32`_lanetype, `%`_dim{i#82591}(4))] -[visit_exp lanetype#18658] -[visit_id lanetype#18658] -[visit_exp dim#18658] -[visit_id dim#18658] -[visit_exp i#82584] -[visit_id i#82584] -[visit_exp (`F32`_lanetype, `%`_dim{i#82591}(4))] +[check_dims] +dims \ = +[visit_exp `VUNOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `NEAREST`_vunop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `NEAREST`_vunop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#82591}(4)] -[visit_exp i#82591] -[visit_id i#82591] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `NEAREST`_vunop_] [visit_exp ()] -[visit_exp `%`_u32{i#82577}(106)] -[visit_exp i#82577] -[visit_id i#82577] +[visit_exp `%`_u32(106)] [visit_exp (106)] [visit_exp 106] -[check_dims] dim#18700 i#82674 i#82681 i#82688 lanetype#18700 shape#3885 -dims \ = dim#18700, i#82674, i#82681, i#82688, lanetype#18700, shape#3885 -[visit_exp `VUNOP`_instr{shape#3885}(`%X%`_shape{lanetype#18700, dim#18700, i#82681}(`F32`_lanetype, `%`_dim{i#82688}(4)), `ABS`_vunop_)] -[visit_exp shape#3885] -[visit_id shape#3885] -[visit_exp (`%X%`_shape{lanetype#18700, dim#18700, i#82681}(`F32`_lanetype, `%`_dim{i#82688}(4)), `ABS`_vunop_)] -[visit_exp `%X%`_shape{lanetype#18700, dim#18700, i#82681}(`F32`_lanetype, `%`_dim{i#82688}(4))] -[visit_exp lanetype#18700] -[visit_id lanetype#18700] -[visit_exp dim#18700] -[visit_id dim#18700] -[visit_exp i#82681] -[visit_id i#82681] -[visit_exp (`F32`_lanetype, `%`_dim{i#82688}(4))] +[check_dims] +dims \ = +[visit_exp `VUNOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `ABS`_vunop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `ABS`_vunop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#82688}(4)] -[visit_exp i#82688] -[visit_id i#82688] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `ABS`_vunop_] [visit_exp ()] -[visit_exp `%`_u32{i#82674}(224)] -[visit_exp i#82674] -[visit_id i#82674] +[visit_exp `%`_u32(224)] [visit_exp (224)] [visit_exp 224] -[check_dims] dim#18742 i#82771 i#82778 i#82785 lanetype#18742 shape#3887 -dims \ = dim#18742, i#82771, i#82778, i#82785, lanetype#18742, shape#3887 -[visit_exp `VUNOP`_instr{shape#3887}(`%X%`_shape{lanetype#18742, dim#18742, i#82778}(`F32`_lanetype, `%`_dim{i#82785}(4)), `NEG`_vunop_)] -[visit_exp shape#3887] -[visit_id shape#3887] -[visit_exp (`%X%`_shape{lanetype#18742, dim#18742, i#82778}(`F32`_lanetype, `%`_dim{i#82785}(4)), `NEG`_vunop_)] -[visit_exp `%X%`_shape{lanetype#18742, dim#18742, i#82778}(`F32`_lanetype, `%`_dim{i#82785}(4))] -[visit_exp lanetype#18742] -[visit_id lanetype#18742] -[visit_exp dim#18742] -[visit_id dim#18742] -[visit_exp i#82778] -[visit_id i#82778] -[visit_exp (`F32`_lanetype, `%`_dim{i#82785}(4))] +[check_dims] +dims \ = +[visit_exp `VUNOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `NEG`_vunop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `NEG`_vunop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#82785}(4)] -[visit_exp i#82785] -[visit_id i#82785] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `NEG`_vunop_] [visit_exp ()] -[visit_exp `%`_u32{i#82771}(225)] -[visit_exp i#82771] -[visit_id i#82771] +[visit_exp `%`_u32(225)] [visit_exp (225)] [visit_exp 225] -[check_dims] dim#18784 i#82868 i#82875 i#82882 lanetype#18784 shape#3889 -dims \ = dim#18784, i#82868, i#82875, i#82882, lanetype#18784, shape#3889 -[visit_exp `VUNOP`_instr{shape#3889}(`%X%`_shape{lanetype#18784, dim#18784, i#82875}(`F32`_lanetype, `%`_dim{i#82882}(4)), `SQRT`_vunop_)] -[visit_exp shape#3889] -[visit_id shape#3889] -[visit_exp (`%X%`_shape{lanetype#18784, dim#18784, i#82875}(`F32`_lanetype, `%`_dim{i#82882}(4)), `SQRT`_vunop_)] -[visit_exp `%X%`_shape{lanetype#18784, dim#18784, i#82875}(`F32`_lanetype, `%`_dim{i#82882}(4))] -[visit_exp lanetype#18784] -[visit_id lanetype#18784] -[visit_exp dim#18784] -[visit_id dim#18784] -[visit_exp i#82875] -[visit_id i#82875] -[visit_exp (`F32`_lanetype, `%`_dim{i#82882}(4))] +[check_dims] +dims \ = +[visit_exp `VUNOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `SQRT`_vunop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `SQRT`_vunop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#82882}(4)] -[visit_exp i#82882] -[visit_id i#82882] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `SQRT`_vunop_] [visit_exp ()] -[visit_exp `%`_u32{i#82868}(227)] -[visit_exp i#82868] -[visit_id i#82868] +[visit_exp `%`_u32(227)] [visit_exp (227)] [visit_exp 227] ps' = [check_dims] -[check_dims] dim#18826 i#82965 i#82972 i#82979 lanetype#18826 shape#3891 -dims \ = dim#18826, i#82965, i#82972, i#82979, lanetype#18826, shape#3891 -[visit_exp `VBINOP`_instr{shape#3891}(`%X%`_shape{lanetype#18826, dim#18826, i#82972}(`F32`_lanetype, `%`_dim{i#82979}(4)), `ADD`_vbinop_)] -[visit_exp shape#3891] -[visit_id shape#3891] -[visit_exp (`%X%`_shape{lanetype#18826, dim#18826, i#82972}(`F32`_lanetype, `%`_dim{i#82979}(4)), `ADD`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#18826, dim#18826, i#82972}(`F32`_lanetype, `%`_dim{i#82979}(4))] -[visit_exp lanetype#18826] -[visit_id lanetype#18826] -[visit_exp dim#18826] -[visit_id dim#18826] -[visit_exp i#82972] -[visit_id i#82972] -[visit_exp (`F32`_lanetype, `%`_dim{i#82979}(4))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `ADD`_vbinop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `ADD`_vbinop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#82979}(4)] -[visit_exp i#82979] -[visit_id i#82979] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `ADD`_vbinop_] [visit_exp ()] -[visit_exp `%`_u32{i#82965}(228)] -[visit_exp i#82965] -[visit_id i#82965] +[visit_exp `%`_u32(228)] [visit_exp (228)] [visit_exp 228] -[check_dims] dim#18868 i#83062 i#83069 i#83076 lanetype#18868 shape#3893 -dims \ = dim#18868, i#83062, i#83069, i#83076, lanetype#18868, shape#3893 -[visit_exp `VBINOP`_instr{shape#3893}(`%X%`_shape{lanetype#18868, dim#18868, i#83069}(`F32`_lanetype, `%`_dim{i#83076}(4)), `SUB`_vbinop_)] -[visit_exp shape#3893] -[visit_id shape#3893] -[visit_exp (`%X%`_shape{lanetype#18868, dim#18868, i#83069}(`F32`_lanetype, `%`_dim{i#83076}(4)), `SUB`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#18868, dim#18868, i#83069}(`F32`_lanetype, `%`_dim{i#83076}(4))] -[visit_exp lanetype#18868] -[visit_id lanetype#18868] -[visit_exp dim#18868] -[visit_id dim#18868] -[visit_exp i#83069] -[visit_id i#83069] -[visit_exp (`F32`_lanetype, `%`_dim{i#83076}(4))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `SUB`_vbinop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `SUB`_vbinop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#83076}(4)] -[visit_exp i#83076] -[visit_id i#83076] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `SUB`_vbinop_] [visit_exp ()] -[visit_exp `%`_u32{i#83062}(229)] -[visit_exp i#83062] -[visit_id i#83062] +[visit_exp `%`_u32(229)] [visit_exp (229)] [visit_exp 229] -[check_dims] dim#18910 i#83159 i#83166 i#83173 lanetype#18910 shape#3895 -dims \ = dim#18910, i#83159, i#83166, i#83173, lanetype#18910, shape#3895 -[visit_exp `VBINOP`_instr{shape#3895}(`%X%`_shape{lanetype#18910, dim#18910, i#83166}(`F32`_lanetype, `%`_dim{i#83173}(4)), `MUL`_vbinop_)] -[visit_exp shape#3895] -[visit_id shape#3895] -[visit_exp (`%X%`_shape{lanetype#18910, dim#18910, i#83166}(`F32`_lanetype, `%`_dim{i#83173}(4)), `MUL`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#18910, dim#18910, i#83166}(`F32`_lanetype, `%`_dim{i#83173}(4))] -[visit_exp lanetype#18910] -[visit_id lanetype#18910] -[visit_exp dim#18910] -[visit_id dim#18910] -[visit_exp i#83166] -[visit_id i#83166] -[visit_exp (`F32`_lanetype, `%`_dim{i#83173}(4))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `MUL`_vbinop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `MUL`_vbinop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#83173}(4)] -[visit_exp i#83173] -[visit_id i#83173] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `MUL`_vbinop_] [visit_exp ()] -[visit_exp `%`_u32{i#83159}(230)] -[visit_exp i#83159] -[visit_id i#83159] +[visit_exp `%`_u32(230)] [visit_exp (230)] [visit_exp 230] -[check_dims] dim#18952 i#83256 i#83263 i#83270 lanetype#18952 shape#3897 -dims \ = dim#18952, i#83256, i#83263, i#83270, lanetype#18952, shape#3897 -[visit_exp `VBINOP`_instr{shape#3897}(`%X%`_shape{lanetype#18952, dim#18952, i#83263}(`F32`_lanetype, `%`_dim{i#83270}(4)), `DIV`_vbinop_)] -[visit_exp shape#3897] -[visit_id shape#3897] -[visit_exp (`%X%`_shape{lanetype#18952, dim#18952, i#83263}(`F32`_lanetype, `%`_dim{i#83270}(4)), `DIV`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#18952, dim#18952, i#83263}(`F32`_lanetype, `%`_dim{i#83270}(4))] -[visit_exp lanetype#18952] -[visit_id lanetype#18952] -[visit_exp dim#18952] -[visit_id dim#18952] -[visit_exp i#83263] -[visit_id i#83263] -[visit_exp (`F32`_lanetype, `%`_dim{i#83270}(4))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `DIV`_vbinop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `DIV`_vbinop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#83270}(4)] -[visit_exp i#83270] -[visit_id i#83270] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `DIV`_vbinop_] [visit_exp ()] -[visit_exp `%`_u32{i#83256}(231)] -[visit_exp i#83256] -[visit_id i#83256] +[visit_exp `%`_u32(231)] [visit_exp (231)] [visit_exp 231] -[check_dims] dim#18994 i#83353 i#83360 i#83367 lanetype#18994 shape#3899 -dims \ = dim#18994, i#83353, i#83360, i#83367, lanetype#18994, shape#3899 -[visit_exp `VBINOP`_instr{shape#3899}(`%X%`_shape{lanetype#18994, dim#18994, i#83360}(`F32`_lanetype, `%`_dim{i#83367}(4)), `MIN`_vbinop_)] -[visit_exp shape#3899] -[visit_id shape#3899] -[visit_exp (`%X%`_shape{lanetype#18994, dim#18994, i#83360}(`F32`_lanetype, `%`_dim{i#83367}(4)), `MIN`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#18994, dim#18994, i#83360}(`F32`_lanetype, `%`_dim{i#83367}(4))] -[visit_exp lanetype#18994] -[visit_id lanetype#18994] -[visit_exp dim#18994] -[visit_id dim#18994] -[visit_exp i#83360] -[visit_id i#83360] -[visit_exp (`F32`_lanetype, `%`_dim{i#83367}(4))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `MIN`_vbinop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `MIN`_vbinop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#83367}(4)] -[visit_exp i#83367] -[visit_id i#83367] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `MIN`_vbinop_] [visit_exp ()] -[visit_exp `%`_u32{i#83353}(232)] -[visit_exp i#83353] -[visit_id i#83353] +[visit_exp `%`_u32(232)] [visit_exp (232)] [visit_exp 232] -[check_dims] dim#19036 i#83450 i#83457 i#83464 lanetype#19036 shape#3901 -dims \ = dim#19036, i#83450, i#83457, i#83464, lanetype#19036, shape#3901 -[visit_exp `VBINOP`_instr{shape#3901}(`%X%`_shape{lanetype#19036, dim#19036, i#83457}(`F32`_lanetype, `%`_dim{i#83464}(4)), `MAX`_vbinop_)] -[visit_exp shape#3901] -[visit_id shape#3901] -[visit_exp (`%X%`_shape{lanetype#19036, dim#19036, i#83457}(`F32`_lanetype, `%`_dim{i#83464}(4)), `MAX`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#19036, dim#19036, i#83457}(`F32`_lanetype, `%`_dim{i#83464}(4))] -[visit_exp lanetype#19036] -[visit_id lanetype#19036] -[visit_exp dim#19036] -[visit_id dim#19036] -[visit_exp i#83457] -[visit_id i#83457] -[visit_exp (`F32`_lanetype, `%`_dim{i#83464}(4))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `MAX`_vbinop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `MAX`_vbinop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#83464}(4)] -[visit_exp i#83464] -[visit_id i#83464] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `MAX`_vbinop_] [visit_exp ()] -[visit_exp `%`_u32{i#83450}(233)] -[visit_exp i#83450] -[visit_id i#83450] +[visit_exp `%`_u32(233)] [visit_exp (233)] [visit_exp 233] -[check_dims] dim#19078 i#83547 i#83554 i#83561 lanetype#19078 shape#3903 -dims \ = dim#19078, i#83547, i#83554, i#83561, lanetype#19078, shape#3903 -[visit_exp `VBINOP`_instr{shape#3903}(`%X%`_shape{lanetype#19078, dim#19078, i#83554}(`F32`_lanetype, `%`_dim{i#83561}(4)), `PMIN`_vbinop_)] -[visit_exp shape#3903] -[visit_id shape#3903] -[visit_exp (`%X%`_shape{lanetype#19078, dim#19078, i#83554}(`F32`_lanetype, `%`_dim{i#83561}(4)), `PMIN`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#19078, dim#19078, i#83554}(`F32`_lanetype, `%`_dim{i#83561}(4))] -[visit_exp lanetype#19078] -[visit_id lanetype#19078] -[visit_exp dim#19078] -[visit_id dim#19078] -[visit_exp i#83554] -[visit_id i#83554] -[visit_exp (`F32`_lanetype, `%`_dim{i#83561}(4))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `PMIN`_vbinop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `PMIN`_vbinop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#83561}(4)] -[visit_exp i#83561] -[visit_id i#83561] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `PMIN`_vbinop_] [visit_exp ()] -[visit_exp `%`_u32{i#83547}(234)] -[visit_exp i#83547] -[visit_id i#83547] +[visit_exp `%`_u32(234)] [visit_exp (234)] [visit_exp 234] -[check_dims] dim#19120 i#83644 i#83651 i#83658 lanetype#19120 shape#3905 -dims \ = dim#19120, i#83644, i#83651, i#83658, lanetype#19120, shape#3905 -[visit_exp `VBINOP`_instr{shape#3905}(`%X%`_shape{lanetype#19120, dim#19120, i#83651}(`F32`_lanetype, `%`_dim{i#83658}(4)), `PMAX`_vbinop_)] -[visit_exp shape#3905] -[visit_id shape#3905] -[visit_exp (`%X%`_shape{lanetype#19120, dim#19120, i#83651}(`F32`_lanetype, `%`_dim{i#83658}(4)), `PMAX`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#19120, dim#19120, i#83651}(`F32`_lanetype, `%`_dim{i#83658}(4))] -[visit_exp lanetype#19120] -[visit_id lanetype#19120] -[visit_exp dim#19120] -[visit_id dim#19120] -[visit_exp i#83651] -[visit_id i#83651] -[visit_exp (`F32`_lanetype, `%`_dim{i#83658}(4))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `PMAX`_vbinop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `PMAX`_vbinop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#83658}(4)] -[visit_exp i#83658] -[visit_id i#83658] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `PMAX`_vbinop_] [visit_exp ()] -[visit_exp `%`_u32{i#83644}(235)] -[visit_exp i#83644] -[visit_id i#83644] +[visit_exp `%`_u32(235)] [visit_exp (235)] [visit_exp 235] -[check_dims] dim#19162 i#83741 i#83748 i#83755 lanetype#19162 shape#3907 -dims \ = dim#19162, i#83741, i#83748, i#83755, lanetype#19162, shape#3907 -[visit_exp `VBINOP`_instr{shape#3907}(`%X%`_shape{lanetype#19162, dim#19162, i#83748}(`F32`_lanetype, `%`_dim{i#83755}(4)), `RELAXED_MIN`_vbinop_)] -[visit_exp shape#3907] -[visit_id shape#3907] -[visit_exp (`%X%`_shape{lanetype#19162, dim#19162, i#83748}(`F32`_lanetype, `%`_dim{i#83755}(4)), `RELAXED_MIN`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#19162, dim#19162, i#83748}(`F32`_lanetype, `%`_dim{i#83755}(4))] -[visit_exp lanetype#19162] -[visit_id lanetype#19162] -[visit_exp dim#19162] -[visit_id dim#19162] -[visit_exp i#83748] -[visit_id i#83748] -[visit_exp (`F32`_lanetype, `%`_dim{i#83755}(4))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_MIN`_vbinop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_MIN`_vbinop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#83755}(4)] -[visit_exp i#83755] -[visit_id i#83755] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `RELAXED_MIN`_vbinop_] [visit_exp ()] -[visit_exp `%`_u32{i#83741}(269)] -[visit_exp i#83741] -[visit_id i#83741] +[visit_exp `%`_u32(269)] [visit_exp (269)] [visit_exp 269] -[check_dims] dim#19204 i#83838 i#83845 i#83852 lanetype#19204 shape#3909 -dims \ = dim#19204, i#83838, i#83845, i#83852, lanetype#19204, shape#3909 -[visit_exp `VBINOP`_instr{shape#3909}(`%X%`_shape{lanetype#19204, dim#19204, i#83845}(`F32`_lanetype, `%`_dim{i#83852}(4)), `RELAXED_MAX`_vbinop_)] -[visit_exp shape#3909] -[visit_id shape#3909] -[visit_exp (`%X%`_shape{lanetype#19204, dim#19204, i#83845}(`F32`_lanetype, `%`_dim{i#83852}(4)), `RELAXED_MAX`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#19204, dim#19204, i#83845}(`F32`_lanetype, `%`_dim{i#83852}(4))] -[visit_exp lanetype#19204] -[visit_id lanetype#19204] -[visit_exp dim#19204] -[visit_id dim#19204] -[visit_exp i#83845] -[visit_id i#83845] -[visit_exp (`F32`_lanetype, `%`_dim{i#83852}(4))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_MAX`_vbinop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_MAX`_vbinop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#83852}(4)] -[visit_exp i#83852] -[visit_id i#83852] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `RELAXED_MAX`_vbinop_] [visit_exp ()] -[visit_exp `%`_u32{i#83838}(270)] -[visit_exp i#83838] -[visit_id i#83838] +[visit_exp `%`_u32(270)] [visit_exp (270)] [visit_exp 270] ps' = [check_dims] -[check_dims] dim#19246 i#83935 i#83942 i#83949 lanetype#19246 shape#3911 -dims \ = dim#19246, i#83935, i#83942, i#83949, lanetype#19246, shape#3911 -[visit_exp `VTERNOP`_instr{shape#3911}(`%X%`_shape{lanetype#19246, dim#19246, i#83942}(`F32`_lanetype, `%`_dim{i#83949}(4)), `RELAXED_MADD`_vternop_)] -[visit_exp shape#3911] -[visit_id shape#3911] -[visit_exp (`%X%`_shape{lanetype#19246, dim#19246, i#83942}(`F32`_lanetype, `%`_dim{i#83949}(4)), `RELAXED_MADD`_vternop_)] -[visit_exp `%X%`_shape{lanetype#19246, dim#19246, i#83942}(`F32`_lanetype, `%`_dim{i#83949}(4))] -[visit_exp lanetype#19246] -[visit_id lanetype#19246] -[visit_exp dim#19246] -[visit_id dim#19246] -[visit_exp i#83942] -[visit_id i#83942] -[visit_exp (`F32`_lanetype, `%`_dim{i#83949}(4))] +[check_dims] +dims \ = +[visit_exp `VTERNOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_MADD`_vternop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_MADD`_vternop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#83949}(4)] -[visit_exp i#83949] -[visit_id i#83949] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `RELAXED_MADD`_vternop_] [visit_exp ()] -[visit_exp `%`_u32{i#83935}(261)] -[visit_exp i#83935] -[visit_id i#83935] +[visit_exp `%`_u32(261)] [visit_exp (261)] [visit_exp 261] -[check_dims] dim#19288 i#84032 i#84039 i#84046 lanetype#19288 shape#3913 -dims \ = dim#19288, i#84032, i#84039, i#84046, lanetype#19288, shape#3913 -[visit_exp `VTERNOP`_instr{shape#3913}(`%X%`_shape{lanetype#19288, dim#19288, i#84039}(`F32`_lanetype, `%`_dim{i#84046}(4)), `RELAXED_NMADD`_vternop_)] -[visit_exp shape#3913] -[visit_id shape#3913] -[visit_exp (`%X%`_shape{lanetype#19288, dim#19288, i#84039}(`F32`_lanetype, `%`_dim{i#84046}(4)), `RELAXED_NMADD`_vternop_)] -[visit_exp `%X%`_shape{lanetype#19288, dim#19288, i#84039}(`F32`_lanetype, `%`_dim{i#84046}(4))] -[visit_exp lanetype#19288] -[visit_id lanetype#19288] -[visit_exp dim#19288] -[visit_id dim#19288] -[visit_exp i#84039] -[visit_id i#84039] -[visit_exp (`F32`_lanetype, `%`_dim{i#84046}(4))] +[check_dims] +dims \ = +[visit_exp `VTERNOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_NMADD`_vternop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_NMADD`_vternop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#84046}(4)] -[visit_exp i#84046] -[visit_id i#84046] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `RELAXED_NMADD`_vternop_] [visit_exp ()] -[visit_exp `%`_u32{i#84032}(262)] -[visit_exp i#84032] -[visit_id i#84032] +[visit_exp `%`_u32(262)] [visit_exp (262)] [visit_exp 262] ps' = [check_dims] -[check_dims] dim#19330 i#84129 i#84136 i#84143 lanetype#19330 shape#3915 -dims \ = dim#19330, i#84129, i#84136, i#84143, lanetype#19330, shape#3915 -[visit_exp `VUNOP`_instr{shape#3915}(`%X%`_shape{lanetype#19330, dim#19330, i#84136}(`F64`_lanetype, `%`_dim{i#84143}(2)), `CEIL`_vunop_)] -[visit_exp shape#3915] -[visit_id shape#3915] -[visit_exp (`%X%`_shape{lanetype#19330, dim#19330, i#84136}(`F64`_lanetype, `%`_dim{i#84143}(2)), `CEIL`_vunop_)] -[visit_exp `%X%`_shape{lanetype#19330, dim#19330, i#84136}(`F64`_lanetype, `%`_dim{i#84143}(2))] -[visit_exp lanetype#19330] -[visit_id lanetype#19330] -[visit_exp dim#19330] -[visit_id dim#19330] -[visit_exp i#84136] -[visit_id i#84136] -[visit_exp (`F64`_lanetype, `%`_dim{i#84143}(2))] +[check_dims] +dims \ = +[visit_exp `VUNOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `CEIL`_vunop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `CEIL`_vunop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#84143}(2)] -[visit_exp i#84143] -[visit_id i#84143] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `CEIL`_vunop_] [visit_exp ()] -[visit_exp `%`_u32{i#84129}(116)] -[visit_exp i#84129] -[visit_id i#84129] +[visit_exp `%`_u32(116)] [visit_exp (116)] [visit_exp 116] -[check_dims] dim#19372 i#84226 i#84233 i#84240 lanetype#19372 shape#3917 -dims \ = dim#19372, i#84226, i#84233, i#84240, lanetype#19372, shape#3917 -[visit_exp `VUNOP`_instr{shape#3917}(`%X%`_shape{lanetype#19372, dim#19372, i#84233}(`F64`_lanetype, `%`_dim{i#84240}(2)), `FLOOR`_vunop_)] -[visit_exp shape#3917] -[visit_id shape#3917] -[visit_exp (`%X%`_shape{lanetype#19372, dim#19372, i#84233}(`F64`_lanetype, `%`_dim{i#84240}(2)), `FLOOR`_vunop_)] -[visit_exp `%X%`_shape{lanetype#19372, dim#19372, i#84233}(`F64`_lanetype, `%`_dim{i#84240}(2))] -[visit_exp lanetype#19372] -[visit_id lanetype#19372] -[visit_exp dim#19372] -[visit_id dim#19372] -[visit_exp i#84233] -[visit_id i#84233] -[visit_exp (`F64`_lanetype, `%`_dim{i#84240}(2))] +[check_dims] +dims \ = +[visit_exp `VUNOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `FLOOR`_vunop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `FLOOR`_vunop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#84240}(2)] -[visit_exp i#84240] -[visit_id i#84240] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `FLOOR`_vunop_] [visit_exp ()] -[visit_exp `%`_u32{i#84226}(117)] -[visit_exp i#84226] -[visit_id i#84226] +[visit_exp `%`_u32(117)] [visit_exp (117)] [visit_exp 117] -[check_dims] dim#19414 i#84323 i#84330 i#84337 lanetype#19414 shape#3919 -dims \ = dim#19414, i#84323, i#84330, i#84337, lanetype#19414, shape#3919 -[visit_exp `VUNOP`_instr{shape#3919}(`%X%`_shape{lanetype#19414, dim#19414, i#84330}(`F64`_lanetype, `%`_dim{i#84337}(2)), `TRUNC`_vunop_)] -[visit_exp shape#3919] -[visit_id shape#3919] -[visit_exp (`%X%`_shape{lanetype#19414, dim#19414, i#84330}(`F64`_lanetype, `%`_dim{i#84337}(2)), `TRUNC`_vunop_)] -[visit_exp `%X%`_shape{lanetype#19414, dim#19414, i#84330}(`F64`_lanetype, `%`_dim{i#84337}(2))] -[visit_exp lanetype#19414] -[visit_id lanetype#19414] -[visit_exp dim#19414] -[visit_id dim#19414] -[visit_exp i#84330] -[visit_id i#84330] -[visit_exp (`F64`_lanetype, `%`_dim{i#84337}(2))] +[check_dims] +dims \ = +[visit_exp `VUNOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `TRUNC`_vunop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `TRUNC`_vunop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#84337}(2)] -[visit_exp i#84337] -[visit_id i#84337] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `TRUNC`_vunop_] [visit_exp ()] -[visit_exp `%`_u32{i#84323}(122)] -[visit_exp i#84323] -[visit_id i#84323] +[visit_exp `%`_u32(122)] [visit_exp (122)] [visit_exp 122] -[check_dims] dim#19456 i#84420 i#84427 i#84434 lanetype#19456 shape#3921 -dims \ = dim#19456, i#84420, i#84427, i#84434, lanetype#19456, shape#3921 -[visit_exp `VUNOP`_instr{shape#3921}(`%X%`_shape{lanetype#19456, dim#19456, i#84427}(`F64`_lanetype, `%`_dim{i#84434}(2)), `NEAREST`_vunop_)] -[visit_exp shape#3921] -[visit_id shape#3921] -[visit_exp (`%X%`_shape{lanetype#19456, dim#19456, i#84427}(`F64`_lanetype, `%`_dim{i#84434}(2)), `NEAREST`_vunop_)] -[visit_exp `%X%`_shape{lanetype#19456, dim#19456, i#84427}(`F64`_lanetype, `%`_dim{i#84434}(2))] -[visit_exp lanetype#19456] -[visit_id lanetype#19456] -[visit_exp dim#19456] -[visit_id dim#19456] -[visit_exp i#84427] -[visit_id i#84427] -[visit_exp (`F64`_lanetype, `%`_dim{i#84434}(2))] +[check_dims] +dims \ = +[visit_exp `VUNOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `NEAREST`_vunop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `NEAREST`_vunop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#84434}(2)] -[visit_exp i#84434] -[visit_id i#84434] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `NEAREST`_vunop_] [visit_exp ()] -[visit_exp `%`_u32{i#84420}(148)] -[visit_exp i#84420] -[visit_id i#84420] +[visit_exp `%`_u32(148)] [visit_exp (148)] [visit_exp 148] -[check_dims] dim#19498 i#84517 i#84524 i#84531 lanetype#19498 shape#3923 -dims \ = dim#19498, i#84517, i#84524, i#84531, lanetype#19498, shape#3923 -[visit_exp `VUNOP`_instr{shape#3923}(`%X%`_shape{lanetype#19498, dim#19498, i#84524}(`F64`_lanetype, `%`_dim{i#84531}(2)), `ABS`_vunop_)] -[visit_exp shape#3923] -[visit_id shape#3923] -[visit_exp (`%X%`_shape{lanetype#19498, dim#19498, i#84524}(`F64`_lanetype, `%`_dim{i#84531}(2)), `ABS`_vunop_)] -[visit_exp `%X%`_shape{lanetype#19498, dim#19498, i#84524}(`F64`_lanetype, `%`_dim{i#84531}(2))] -[visit_exp lanetype#19498] -[visit_id lanetype#19498] -[visit_exp dim#19498] -[visit_id dim#19498] -[visit_exp i#84524] -[visit_id i#84524] -[visit_exp (`F64`_lanetype, `%`_dim{i#84531}(2))] +[check_dims] +dims \ = +[visit_exp `VUNOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `ABS`_vunop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `ABS`_vunop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#84531}(2)] -[visit_exp i#84531] -[visit_id i#84531] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `ABS`_vunop_] [visit_exp ()] -[visit_exp `%`_u32{i#84517}(236)] -[visit_exp i#84517] -[visit_id i#84517] +[visit_exp `%`_u32(236)] [visit_exp (236)] [visit_exp 236] -[check_dims] dim#19540 i#84614 i#84621 i#84628 lanetype#19540 shape#3925 -dims \ = dim#19540, i#84614, i#84621, i#84628, lanetype#19540, shape#3925 -[visit_exp `VUNOP`_instr{shape#3925}(`%X%`_shape{lanetype#19540, dim#19540, i#84621}(`F64`_lanetype, `%`_dim{i#84628}(2)), `NEG`_vunop_)] -[visit_exp shape#3925] -[visit_id shape#3925] -[visit_exp (`%X%`_shape{lanetype#19540, dim#19540, i#84621}(`F64`_lanetype, `%`_dim{i#84628}(2)), `NEG`_vunop_)] -[visit_exp `%X%`_shape{lanetype#19540, dim#19540, i#84621}(`F64`_lanetype, `%`_dim{i#84628}(2))] -[visit_exp lanetype#19540] -[visit_id lanetype#19540] -[visit_exp dim#19540] -[visit_id dim#19540] -[visit_exp i#84621] -[visit_id i#84621] -[visit_exp (`F64`_lanetype, `%`_dim{i#84628}(2))] +[check_dims] +dims \ = +[visit_exp `VUNOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `NEG`_vunop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `NEG`_vunop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#84628}(2)] -[visit_exp i#84628] -[visit_id i#84628] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `NEG`_vunop_] [visit_exp ()] -[visit_exp `%`_u32{i#84614}(237)] -[visit_exp i#84614] -[visit_id i#84614] +[visit_exp `%`_u32(237)] [visit_exp (237)] [visit_exp 237] -[check_dims] dim#19582 i#84711 i#84718 i#84725 lanetype#19582 shape#3927 -dims \ = dim#19582, i#84711, i#84718, i#84725, lanetype#19582, shape#3927 -[visit_exp `VUNOP`_instr{shape#3927}(`%X%`_shape{lanetype#19582, dim#19582, i#84718}(`F64`_lanetype, `%`_dim{i#84725}(2)), `SQRT`_vunop_)] -[visit_exp shape#3927] -[visit_id shape#3927] -[visit_exp (`%X%`_shape{lanetype#19582, dim#19582, i#84718}(`F64`_lanetype, `%`_dim{i#84725}(2)), `SQRT`_vunop_)] -[visit_exp `%X%`_shape{lanetype#19582, dim#19582, i#84718}(`F64`_lanetype, `%`_dim{i#84725}(2))] -[visit_exp lanetype#19582] -[visit_id lanetype#19582] -[visit_exp dim#19582] -[visit_id dim#19582] -[visit_exp i#84718] -[visit_id i#84718] -[visit_exp (`F64`_lanetype, `%`_dim{i#84725}(2))] +[check_dims] +dims \ = +[visit_exp `VUNOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `SQRT`_vunop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `SQRT`_vunop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#84725}(2)] -[visit_exp i#84725] -[visit_id i#84725] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `SQRT`_vunop_] [visit_exp ()] -[visit_exp `%`_u32{i#84711}(239)] -[visit_exp i#84711] -[visit_id i#84711] +[visit_exp `%`_u32(239)] [visit_exp (239)] [visit_exp 239] ps' = [check_dims] -[check_dims] dim#19624 i#84808 i#84815 i#84822 lanetype#19624 shape#3929 -dims \ = dim#19624, i#84808, i#84815, i#84822, lanetype#19624, shape#3929 -[visit_exp `VBINOP`_instr{shape#3929}(`%X%`_shape{lanetype#19624, dim#19624, i#84815}(`F64`_lanetype, `%`_dim{i#84822}(2)), `ADD`_vbinop_)] -[visit_exp shape#3929] -[visit_id shape#3929] -[visit_exp (`%X%`_shape{lanetype#19624, dim#19624, i#84815}(`F64`_lanetype, `%`_dim{i#84822}(2)), `ADD`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#19624, dim#19624, i#84815}(`F64`_lanetype, `%`_dim{i#84822}(2))] -[visit_exp lanetype#19624] -[visit_id lanetype#19624] -[visit_exp dim#19624] -[visit_id dim#19624] -[visit_exp i#84815] -[visit_id i#84815] -[visit_exp (`F64`_lanetype, `%`_dim{i#84822}(2))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `ADD`_vbinop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `ADD`_vbinop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#84822}(2)] -[visit_exp i#84822] -[visit_id i#84822] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `ADD`_vbinop_] [visit_exp ()] -[visit_exp `%`_u32{i#84808}(240)] -[visit_exp i#84808] -[visit_id i#84808] +[visit_exp `%`_u32(240)] [visit_exp (240)] [visit_exp 240] -[check_dims] dim#19666 i#84905 i#84912 i#84919 lanetype#19666 shape#3931 -dims \ = dim#19666, i#84905, i#84912, i#84919, lanetype#19666, shape#3931 -[visit_exp `VBINOP`_instr{shape#3931}(`%X%`_shape{lanetype#19666, dim#19666, i#84912}(`F64`_lanetype, `%`_dim{i#84919}(2)), `SUB`_vbinop_)] -[visit_exp shape#3931] -[visit_id shape#3931] -[visit_exp (`%X%`_shape{lanetype#19666, dim#19666, i#84912}(`F64`_lanetype, `%`_dim{i#84919}(2)), `SUB`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#19666, dim#19666, i#84912}(`F64`_lanetype, `%`_dim{i#84919}(2))] -[visit_exp lanetype#19666] -[visit_id lanetype#19666] -[visit_exp dim#19666] -[visit_id dim#19666] -[visit_exp i#84912] -[visit_id i#84912] -[visit_exp (`F64`_lanetype, `%`_dim{i#84919}(2))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `SUB`_vbinop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `SUB`_vbinop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#84919}(2)] -[visit_exp i#84919] -[visit_id i#84919] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `SUB`_vbinop_] [visit_exp ()] -[visit_exp `%`_u32{i#84905}(241)] -[visit_exp i#84905] -[visit_id i#84905] +[visit_exp `%`_u32(241)] [visit_exp (241)] [visit_exp 241] -[check_dims] dim#19708 i#85002 i#85009 i#85016 lanetype#19708 shape#3933 -dims \ = dim#19708, i#85002, i#85009, i#85016, lanetype#19708, shape#3933 -[visit_exp `VBINOP`_instr{shape#3933}(`%X%`_shape{lanetype#19708, dim#19708, i#85009}(`F64`_lanetype, `%`_dim{i#85016}(2)), `MUL`_vbinop_)] -[visit_exp shape#3933] -[visit_id shape#3933] -[visit_exp (`%X%`_shape{lanetype#19708, dim#19708, i#85009}(`F64`_lanetype, `%`_dim{i#85016}(2)), `MUL`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#19708, dim#19708, i#85009}(`F64`_lanetype, `%`_dim{i#85016}(2))] -[visit_exp lanetype#19708] -[visit_id lanetype#19708] -[visit_exp dim#19708] -[visit_id dim#19708] -[visit_exp i#85009] -[visit_id i#85009] -[visit_exp (`F64`_lanetype, `%`_dim{i#85016}(2))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `MUL`_vbinop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `MUL`_vbinop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#85016}(2)] -[visit_exp i#85016] -[visit_id i#85016] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `MUL`_vbinop_] [visit_exp ()] -[visit_exp `%`_u32{i#85002}(242)] -[visit_exp i#85002] -[visit_id i#85002] +[visit_exp `%`_u32(242)] [visit_exp (242)] [visit_exp 242] -[check_dims] dim#19750 i#85099 i#85106 i#85113 lanetype#19750 shape#3935 -dims \ = dim#19750, i#85099, i#85106, i#85113, lanetype#19750, shape#3935 -[visit_exp `VBINOP`_instr{shape#3935}(`%X%`_shape{lanetype#19750, dim#19750, i#85106}(`F64`_lanetype, `%`_dim{i#85113}(2)), `DIV`_vbinop_)] -[visit_exp shape#3935] -[visit_id shape#3935] -[visit_exp (`%X%`_shape{lanetype#19750, dim#19750, i#85106}(`F64`_lanetype, `%`_dim{i#85113}(2)), `DIV`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#19750, dim#19750, i#85106}(`F64`_lanetype, `%`_dim{i#85113}(2))] -[visit_exp lanetype#19750] -[visit_id lanetype#19750] -[visit_exp dim#19750] -[visit_id dim#19750] -[visit_exp i#85106] -[visit_id i#85106] -[visit_exp (`F64`_lanetype, `%`_dim{i#85113}(2))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `DIV`_vbinop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `DIV`_vbinop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#85113}(2)] -[visit_exp i#85113] -[visit_id i#85113] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `DIV`_vbinop_] [visit_exp ()] -[visit_exp `%`_u32{i#85099}(243)] -[visit_exp i#85099] -[visit_id i#85099] +[visit_exp `%`_u32(243)] [visit_exp (243)] [visit_exp 243] -[check_dims] dim#19792 i#85196 i#85203 i#85210 lanetype#19792 shape#3937 -dims \ = dim#19792, i#85196, i#85203, i#85210, lanetype#19792, shape#3937 -[visit_exp `VBINOP`_instr{shape#3937}(`%X%`_shape{lanetype#19792, dim#19792, i#85203}(`F64`_lanetype, `%`_dim{i#85210}(2)), `MIN`_vbinop_)] -[visit_exp shape#3937] -[visit_id shape#3937] -[visit_exp (`%X%`_shape{lanetype#19792, dim#19792, i#85203}(`F64`_lanetype, `%`_dim{i#85210}(2)), `MIN`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#19792, dim#19792, i#85203}(`F64`_lanetype, `%`_dim{i#85210}(2))] -[visit_exp lanetype#19792] -[visit_id lanetype#19792] -[visit_exp dim#19792] -[visit_id dim#19792] -[visit_exp i#85203] -[visit_id i#85203] -[visit_exp (`F64`_lanetype, `%`_dim{i#85210}(2))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `MIN`_vbinop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `MIN`_vbinop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#85210}(2)] -[visit_exp i#85210] -[visit_id i#85210] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `MIN`_vbinop_] [visit_exp ()] -[visit_exp `%`_u32{i#85196}(244)] -[visit_exp i#85196] -[visit_id i#85196] +[visit_exp `%`_u32(244)] [visit_exp (244)] [visit_exp 244] -[check_dims] dim#19834 i#85293 i#85300 i#85307 lanetype#19834 shape#3939 -dims \ = dim#19834, i#85293, i#85300, i#85307, lanetype#19834, shape#3939 -[visit_exp `VBINOP`_instr{shape#3939}(`%X%`_shape{lanetype#19834, dim#19834, i#85300}(`F64`_lanetype, `%`_dim{i#85307}(2)), `MAX`_vbinop_)] -[visit_exp shape#3939] -[visit_id shape#3939] -[visit_exp (`%X%`_shape{lanetype#19834, dim#19834, i#85300}(`F64`_lanetype, `%`_dim{i#85307}(2)), `MAX`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#19834, dim#19834, i#85300}(`F64`_lanetype, `%`_dim{i#85307}(2))] -[visit_exp lanetype#19834] -[visit_id lanetype#19834] -[visit_exp dim#19834] -[visit_id dim#19834] -[visit_exp i#85300] -[visit_id i#85300] -[visit_exp (`F64`_lanetype, `%`_dim{i#85307}(2))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `MAX`_vbinop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `MAX`_vbinop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#85307}(2)] -[visit_exp i#85307] -[visit_id i#85307] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `MAX`_vbinop_] [visit_exp ()] -[visit_exp `%`_u32{i#85293}(245)] -[visit_exp i#85293] -[visit_id i#85293] +[visit_exp `%`_u32(245)] [visit_exp (245)] [visit_exp 245] -[check_dims] dim#19876 i#85390 i#85397 i#85404 lanetype#19876 shape#3941 -dims \ = dim#19876, i#85390, i#85397, i#85404, lanetype#19876, shape#3941 -[visit_exp `VBINOP`_instr{shape#3941}(`%X%`_shape{lanetype#19876, dim#19876, i#85397}(`F64`_lanetype, `%`_dim{i#85404}(2)), `PMIN`_vbinop_)] -[visit_exp shape#3941] -[visit_id shape#3941] -[visit_exp (`%X%`_shape{lanetype#19876, dim#19876, i#85397}(`F64`_lanetype, `%`_dim{i#85404}(2)), `PMIN`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#19876, dim#19876, i#85397}(`F64`_lanetype, `%`_dim{i#85404}(2))] -[visit_exp lanetype#19876] -[visit_id lanetype#19876] -[visit_exp dim#19876] -[visit_id dim#19876] -[visit_exp i#85397] -[visit_id i#85397] -[visit_exp (`F64`_lanetype, `%`_dim{i#85404}(2))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `PMIN`_vbinop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `PMIN`_vbinop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#85404}(2)] -[visit_exp i#85404] -[visit_id i#85404] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `PMIN`_vbinop_] [visit_exp ()] -[visit_exp `%`_u32{i#85390}(246)] -[visit_exp i#85390] -[visit_id i#85390] +[visit_exp `%`_u32(246)] [visit_exp (246)] [visit_exp 246] -[check_dims] dim#19918 i#85487 i#85494 i#85501 lanetype#19918 shape#3943 -dims \ = dim#19918, i#85487, i#85494, i#85501, lanetype#19918, shape#3943 -[visit_exp `VBINOP`_instr{shape#3943}(`%X%`_shape{lanetype#19918, dim#19918, i#85494}(`F64`_lanetype, `%`_dim{i#85501}(2)), `PMAX`_vbinop_)] -[visit_exp shape#3943] -[visit_id shape#3943] -[visit_exp (`%X%`_shape{lanetype#19918, dim#19918, i#85494}(`F64`_lanetype, `%`_dim{i#85501}(2)), `PMAX`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#19918, dim#19918, i#85494}(`F64`_lanetype, `%`_dim{i#85501}(2))] -[visit_exp lanetype#19918] -[visit_id lanetype#19918] -[visit_exp dim#19918] -[visit_id dim#19918] -[visit_exp i#85494] -[visit_id i#85494] -[visit_exp (`F64`_lanetype, `%`_dim{i#85501}(2))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `PMAX`_vbinop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `PMAX`_vbinop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#85501}(2)] -[visit_exp i#85501] -[visit_id i#85501] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `PMAX`_vbinop_] [visit_exp ()] -[visit_exp `%`_u32{i#85487}(247)] -[visit_exp i#85487] -[visit_id i#85487] +[visit_exp `%`_u32(247)] [visit_exp (247)] [visit_exp 247] -[check_dims] dim#19960 i#85584 i#85591 i#85598 lanetype#19960 shape#3945 -dims \ = dim#19960, i#85584, i#85591, i#85598, lanetype#19960, shape#3945 -[visit_exp `VBINOP`_instr{shape#3945}(`%X%`_shape{lanetype#19960, dim#19960, i#85591}(`F64`_lanetype, `%`_dim{i#85598}(2)), `RELAXED_MIN`_vbinop_)] -[visit_exp shape#3945] -[visit_id shape#3945] -[visit_exp (`%X%`_shape{lanetype#19960, dim#19960, i#85591}(`F64`_lanetype, `%`_dim{i#85598}(2)), `RELAXED_MIN`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#19960, dim#19960, i#85591}(`F64`_lanetype, `%`_dim{i#85598}(2))] -[visit_exp lanetype#19960] -[visit_id lanetype#19960] -[visit_exp dim#19960] -[visit_id dim#19960] -[visit_exp i#85591] -[visit_id i#85591] -[visit_exp (`F64`_lanetype, `%`_dim{i#85598}(2))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_MIN`_vbinop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_MIN`_vbinop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#85598}(2)] -[visit_exp i#85598] -[visit_id i#85598] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `RELAXED_MIN`_vbinop_] [visit_exp ()] -[visit_exp `%`_u32{i#85584}(271)] -[visit_exp i#85584] -[visit_id i#85584] +[visit_exp `%`_u32(271)] [visit_exp (271)] [visit_exp 271] -[check_dims] dim#20002 i#85681 i#85688 i#85695 lanetype#20002 shape#3947 -dims \ = dim#20002, i#85681, i#85688, i#85695, lanetype#20002, shape#3947 -[visit_exp `VBINOP`_instr{shape#3947}(`%X%`_shape{lanetype#20002, dim#20002, i#85688}(`F64`_lanetype, `%`_dim{i#85695}(2)), `RELAXED_MAX`_vbinop_)] -[visit_exp shape#3947] -[visit_id shape#3947] -[visit_exp (`%X%`_shape{lanetype#20002, dim#20002, i#85688}(`F64`_lanetype, `%`_dim{i#85695}(2)), `RELAXED_MAX`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#20002, dim#20002, i#85688}(`F64`_lanetype, `%`_dim{i#85695}(2))] -[visit_exp lanetype#20002] -[visit_id lanetype#20002] -[visit_exp dim#20002] -[visit_id dim#20002] -[visit_exp i#85688] -[visit_id i#85688] -[visit_exp (`F64`_lanetype, `%`_dim{i#85695}(2))] +[check_dims] +dims \ = +[visit_exp `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_MAX`_vbinop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_MAX`_vbinop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#85695}(2)] -[visit_exp i#85695] -[visit_id i#85695] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `RELAXED_MAX`_vbinop_] [visit_exp ()] -[visit_exp `%`_u32{i#85681}(272)] -[visit_exp i#85681] -[visit_id i#85681] +[visit_exp `%`_u32(272)] [visit_exp (272)] [visit_exp 272] ps' = [check_dims] -[check_dims] dim#20044 i#85778 i#85785 i#85792 lanetype#20044 shape#3949 -dims \ = dim#20044, i#85778, i#85785, i#85792, lanetype#20044, shape#3949 -[visit_exp `VTERNOP`_instr{shape#3949}(`%X%`_shape{lanetype#20044, dim#20044, i#85785}(`F64`_lanetype, `%`_dim{i#85792}(2)), `RELAXED_MADD`_vternop_)] -[visit_exp shape#3949] -[visit_id shape#3949] -[visit_exp (`%X%`_shape{lanetype#20044, dim#20044, i#85785}(`F64`_lanetype, `%`_dim{i#85792}(2)), `RELAXED_MADD`_vternop_)] -[visit_exp `%X%`_shape{lanetype#20044, dim#20044, i#85785}(`F64`_lanetype, `%`_dim{i#85792}(2))] -[visit_exp lanetype#20044] -[visit_id lanetype#20044] -[visit_exp dim#20044] -[visit_id dim#20044] -[visit_exp i#85785] -[visit_id i#85785] -[visit_exp (`F64`_lanetype, `%`_dim{i#85792}(2))] +[check_dims] +dims \ = +[visit_exp `VTERNOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_MADD`_vternop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_MADD`_vternop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#85792}(2)] -[visit_exp i#85792] -[visit_id i#85792] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `RELAXED_MADD`_vternop_] [visit_exp ()] -[visit_exp `%`_u32{i#85778}(263)] -[visit_exp i#85778] -[visit_id i#85778] +[visit_exp `%`_u32(263)] [visit_exp (263)] [visit_exp 263] -[check_dims] dim#20086 i#85875 i#85882 i#85889 lanetype#20086 shape#3951 -dims \ = dim#20086, i#85875, i#85882, i#85889, lanetype#20086, shape#3951 -[visit_exp `VTERNOP`_instr{shape#3951}(`%X%`_shape{lanetype#20086, dim#20086, i#85882}(`F64`_lanetype, `%`_dim{i#85889}(2)), `RELAXED_NMADD`_vternop_)] -[visit_exp shape#3951] -[visit_id shape#3951] -[visit_exp (`%X%`_shape{lanetype#20086, dim#20086, i#85882}(`F64`_lanetype, `%`_dim{i#85889}(2)), `RELAXED_NMADD`_vternop_)] -[visit_exp `%X%`_shape{lanetype#20086, dim#20086, i#85882}(`F64`_lanetype, `%`_dim{i#85889}(2))] -[visit_exp lanetype#20086] -[visit_id lanetype#20086] -[visit_exp dim#20086] -[visit_id dim#20086] -[visit_exp i#85882] -[visit_id i#85882] -[visit_exp (`F64`_lanetype, `%`_dim{i#85889}(2))] +[check_dims] +dims \ = +[visit_exp `VTERNOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_NMADD`_vternop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_NMADD`_vternop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#85889}(2)] -[visit_exp i#85889] -[visit_id i#85889] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `RELAXED_NMADD`_vternop_] [visit_exp ()] -[visit_exp `%`_u32{i#85875}(264)] -[visit_exp i#85875] -[visit_id i#85875] +[visit_exp `%`_u32(264)] [visit_exp (264)] [visit_exp 264] -[check_dims] dim#20128 i#85972 i#85979 i#85986 lanetype#20128 shape#3953 -dims \ = dim#20128, i#85972, i#85979, i#85986, lanetype#20128, shape#3953 -[visit_exp `VTERNOP`_instr{shape#3953}(`%X%`_shape{lanetype#20128, dim#20128, i#85979}(`I8`_lanetype, `%`_dim{i#85986}(16)), `RELAXED_LANESELECT`_vternop_)] -[visit_exp shape#3953] -[visit_id shape#3953] -[visit_exp (`%X%`_shape{lanetype#20128, dim#20128, i#85979}(`I8`_lanetype, `%`_dim{i#85986}(16)), `RELAXED_LANESELECT`_vternop_)] -[visit_exp `%X%`_shape{lanetype#20128, dim#20128, i#85979}(`I8`_lanetype, `%`_dim{i#85986}(16))] -[visit_exp lanetype#20128] -[visit_id lanetype#20128] -[visit_exp dim#20128] -[visit_id dim#20128] -[visit_exp i#85979] -[visit_id i#85979] -[visit_exp (`I8`_lanetype, `%`_dim{i#85986}(16))] +[check_dims] +dims \ = +[visit_exp `VTERNOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `RELAXED_LANESELECT`_vternop_)] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `RELAXED_LANESELECT`_vternop_)] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#85986}(16)] -[visit_exp i#85986] -[visit_id i#85986] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] [visit_exp `RELAXED_LANESELECT`_vternop_] [visit_exp ()] -[visit_exp `%`_u32{i#85972}(265)] -[visit_exp i#85972] -[visit_id i#85972] +[visit_exp `%`_u32(265)] [visit_exp (265)] [visit_exp 265] -[check_dims] dim#20155 i#86054 i#86061 i#86068 lanetype#20155 shape#3955 -dims \ = dim#20155, i#86054, i#86061, i#86068, lanetype#20155, shape#3955 -[visit_exp `VTERNOP`_instr{shape#3955}(`%X%`_shape{lanetype#20155, dim#20155, i#86061}(`I16`_lanetype, `%`_dim{i#86068}(8)), `RELAXED_LANESELECT`_vternop_)] -[visit_exp shape#3955] -[visit_id shape#3955] -[visit_exp (`%X%`_shape{lanetype#20155, dim#20155, i#86061}(`I16`_lanetype, `%`_dim{i#86068}(8)), `RELAXED_LANESELECT`_vternop_)] -[visit_exp `%X%`_shape{lanetype#20155, dim#20155, i#86061}(`I16`_lanetype, `%`_dim{i#86068}(8))] -[visit_exp lanetype#20155] -[visit_id lanetype#20155] -[visit_exp dim#20155] -[visit_id dim#20155] -[visit_exp i#86061] -[visit_id i#86061] -[visit_exp (`I16`_lanetype, `%`_dim{i#86068}(8))] +[check_dims] +dims \ = +[visit_exp `VTERNOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `RELAXED_LANESELECT`_vternop_)] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `RELAXED_LANESELECT`_vternop_)] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#86068}(8)] -[visit_exp i#86068] -[visit_id i#86068] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] [visit_exp `RELAXED_LANESELECT`_vternop_] [visit_exp ()] -[visit_exp `%`_u32{i#86054}(266)] -[visit_exp i#86054] -[visit_id i#86054] +[visit_exp `%`_u32(266)] [visit_exp (266)] [visit_exp 266] -[check_dims] dim#20182 i#86136 i#86143 i#86150 lanetype#20182 shape#3957 -dims \ = dim#20182, i#86136, i#86143, i#86150, lanetype#20182, shape#3957 -[visit_exp `VTERNOP`_instr{shape#3957}(`%X%`_shape{lanetype#20182, dim#20182, i#86143}(`I32`_lanetype, `%`_dim{i#86150}(4)), `RELAXED_LANESELECT`_vternop_)] -[visit_exp shape#3957] -[visit_id shape#3957] -[visit_exp (`%X%`_shape{lanetype#20182, dim#20182, i#86143}(`I32`_lanetype, `%`_dim{i#86150}(4)), `RELAXED_LANESELECT`_vternop_)] -[visit_exp `%X%`_shape{lanetype#20182, dim#20182, i#86143}(`I32`_lanetype, `%`_dim{i#86150}(4))] -[visit_exp lanetype#20182] -[visit_id lanetype#20182] -[visit_exp dim#20182] -[visit_id dim#20182] -[visit_exp i#86143] -[visit_id i#86143] -[visit_exp (`I32`_lanetype, `%`_dim{i#86150}(4))] +[check_dims] +dims \ = +[visit_exp `VTERNOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `RELAXED_LANESELECT`_vternop_)] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `RELAXED_LANESELECT`_vternop_)] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#86150}(4)] -[visit_exp i#86150] -[visit_id i#86150] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `RELAXED_LANESELECT`_vternop_] [visit_exp ()] -[visit_exp `%`_u32{i#86136}(267)] -[visit_exp i#86136] -[visit_id i#86136] +[visit_exp `%`_u32(267)] [visit_exp (267)] [visit_exp 267] -[check_dims] dim#20209 i#86218 i#86225 i#86232 lanetype#20209 shape#3959 -dims \ = dim#20209, i#86218, i#86225, i#86232, lanetype#20209, shape#3959 -[visit_exp `VTERNOP`_instr{shape#3959}(`%X%`_shape{lanetype#20209, dim#20209, i#86225}(`I64`_lanetype, `%`_dim{i#86232}(2)), `RELAXED_LANESELECT`_vternop_)] -[visit_exp shape#3959] -[visit_id shape#3959] -[visit_exp (`%X%`_shape{lanetype#20209, dim#20209, i#86225}(`I64`_lanetype, `%`_dim{i#86232}(2)), `RELAXED_LANESELECT`_vternop_)] -[visit_exp `%X%`_shape{lanetype#20209, dim#20209, i#86225}(`I64`_lanetype, `%`_dim{i#86232}(2))] -[visit_exp lanetype#20209] -[visit_id lanetype#20209] -[visit_exp dim#20209] -[visit_id dim#20209] -[visit_exp i#86225] -[visit_id i#86225] -[visit_exp (`I64`_lanetype, `%`_dim{i#86232}(2))] +[check_dims] +dims \ = +[visit_exp `VTERNOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `RELAXED_LANESELECT`_vternop_)] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `RELAXED_LANESELECT`_vternop_)] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#86232}(2)] -[visit_exp i#86232] -[visit_id i#86232] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `RELAXED_LANESELECT`_vternop_] [visit_exp ()] -[visit_exp `%`_u32{i#86218}(268)] -[visit_exp i#86218] -[visit_id i#86218] +[visit_exp `%`_u32(268)] [visit_exp (268)] [visit_exp 268] ps' = [check_dims] -[check_dims] dim#20236 dim#20248 i#86300 i#86307 i#86314 i#86319 i#86326 lanetype#20236 lanetype#20248 shape_1#31 shape_2#31 zero#159 -dims \ = dim#20236, dim#20248, i#86300, i#86307, i#86314, i#86319, i#86326, lanetype#20236, lanetype#20248, shape_1#31, shape_2#31, zero#159 -[visit_exp `VCVTOP`_instr{shape_1#31, shape_2#31}(`%X%`_shape{lanetype#20236, dim#20236, i#86307}(`F32`_lanetype, `%`_dim{i#86314}(4)), `%X%`_shape{lanetype#20248, dim#20248, i#86319}(`F64`_lanetype, `%`_dim{i#86326}(2)), `DEMOTE`_vcvtop__{zero#159}(`ZERO`_zero))] -[visit_exp shape_1#31] -[visit_id shape_1#31] -[visit_exp shape_2#31] -[visit_id shape_2#31] -[visit_exp (`%X%`_shape{lanetype#20236, dim#20236, i#86307}(`F32`_lanetype, `%`_dim{i#86314}(4)), `%X%`_shape{lanetype#20248, dim#20248, i#86319}(`F64`_lanetype, `%`_dim{i#86326}(2)), `DEMOTE`_vcvtop__{zero#159}(`ZERO`_zero))] -[visit_exp `%X%`_shape{lanetype#20236, dim#20236, i#86307}(`F32`_lanetype, `%`_dim{i#86314}(4))] -[visit_exp lanetype#20236] -[visit_id lanetype#20236] -[visit_exp dim#20236] -[visit_id dim#20236] -[visit_exp i#86307] -[visit_id i#86307] -[visit_exp (`F32`_lanetype, `%`_dim{i#86314}(4))] +[check_dims] +dims \ = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `%X%`_shape(`F64`_lanetype, `%`_dim(2)), `DEMOTE`_vcvtop__(`ZERO`_zero))] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `%X%`_shape(`F64`_lanetype, `%`_dim(2)), `DEMOTE`_vcvtop__(`ZERO`_zero))] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#86314}(4)] -[visit_exp i#86314] -[visit_id i#86314] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%X%`_shape{lanetype#20248, dim#20248, i#86319}(`F64`_lanetype, `%`_dim{i#86326}(2))] -[visit_exp lanetype#20248] -[visit_id lanetype#20248] -[visit_exp dim#20248] -[visit_id dim#20248] -[visit_exp i#86319] -[visit_id i#86319] -[visit_exp (`F64`_lanetype, `%`_dim{i#86326}(2))] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#86326}(2)] -[visit_exp i#86326] -[visit_id i#86326] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `DEMOTE`_vcvtop__{zero#159}(`ZERO`_zero)] -[visit_exp zero#159] -[visit_id zero#159] +[visit_exp `DEMOTE`_vcvtop__(`ZERO`_zero)] [visit_exp (`ZERO`_zero)] [visit_exp `ZERO`_zero] [visit_exp ()] -[visit_exp `%`_u32{i#86300}(94)] -[visit_exp i#86300] -[visit_id i#86300] +[visit_exp `%`_u32(94)] [visit_exp (94)] [visit_exp 94] -[check_dims] dim#20501 dim#20513 i#86770 i#86777 i#86784 i#86789 i#86796 lanetype#20501 lanetype#20513 shape_1#33 shape_2#33 -dims \ = dim#20501, dim#20513, i#86770, i#86777, i#86784, i#86789, i#86796, lanetype#20501, lanetype#20513, shape_1#33, shape_2#33 -[visit_exp `VCVTOP`_instr{shape_1#33, shape_2#33}(`%X%`_shape{lanetype#20501, dim#20501, i#86777}(`F64`_lanetype, `%`_dim{i#86784}(2)), `%X%`_shape{lanetype#20513, dim#20513, i#86789}(`F32`_lanetype, `%`_dim{i#86796}(4)), `PROMOTELOW`_vcvtop__)] -[visit_exp shape_1#33] -[visit_id shape_1#33] -[visit_exp shape_2#33] -[visit_id shape_2#33] -[visit_exp (`%X%`_shape{lanetype#20501, dim#20501, i#86777}(`F64`_lanetype, `%`_dim{i#86784}(2)), `%X%`_shape{lanetype#20513, dim#20513, i#86789}(`F32`_lanetype, `%`_dim{i#86796}(4)), `PROMOTELOW`_vcvtop__)] -[visit_exp `%X%`_shape{lanetype#20501, dim#20501, i#86777}(`F64`_lanetype, `%`_dim{i#86784}(2))] -[visit_exp lanetype#20501] -[visit_id lanetype#20501] -[visit_exp dim#20501] -[visit_id dim#20501] -[visit_exp i#86777] -[visit_id i#86777] -[visit_exp (`F64`_lanetype, `%`_dim{i#86784}(2))] +[check_dims] +dims \ = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `%X%`_shape(`F32`_lanetype, `%`_dim(4)), `PROMOTELOW`_vcvtop__)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `%X%`_shape(`F32`_lanetype, `%`_dim(4)), `PROMOTELOW`_vcvtop__)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#86784}(2)] -[visit_exp i#86784] -[visit_id i#86784] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `%X%`_shape{lanetype#20513, dim#20513, i#86789}(`F32`_lanetype, `%`_dim{i#86796}(4))] -[visit_exp lanetype#20513] -[visit_id lanetype#20513] -[visit_exp dim#20513] -[visit_id dim#20513] -[visit_exp i#86789] -[visit_id i#86789] -[visit_exp (`F32`_lanetype, `%`_dim{i#86796}(4))] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#86796}(4)] -[visit_exp i#86796] -[visit_id i#86796] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `PROMOTELOW`_vcvtop__] [visit_exp ()] -[visit_exp `%`_u32{i#86770}(95)] -[visit_exp i#86770] -[visit_id i#86770] +[visit_exp `%`_u32(95)] [visit_exp (95)] [visit_exp 95] -[check_dims] dim#20766 dim#20778 i#87240 i#87247 i#87254 i#87259 i#87266 lanetype#20766 lanetype#20778 shape_1#35 shape_2#35 sx#15127 zero?#135 -dims \ = dim#20766, dim#20778, i#87240, i#87247, i#87254, i#87259, i#87266, lanetype#20766, lanetype#20778, shape_1#35, shape_2#35, sx#15127, zero?#135 -[visit_exp `VCVTOP`_instr{shape_1#35, shape_2#35}(`%X%`_shape{lanetype#20766, dim#20766, i#87247}(`I32`_lanetype, `%`_dim{i#87254}(4)), `%X%`_shape{lanetype#20778, dim#20778, i#87259}(`F32`_lanetype, `%`_dim{i#87266}(4)), `TRUNC_SAT`_vcvtop__{sx#15127, `zero?#135`}(`S`_sx, ?()))] -[visit_exp shape_1#35] -[visit_id shape_1#35] -[visit_exp shape_2#35] -[visit_id shape_2#35] -[visit_exp (`%X%`_shape{lanetype#20766, dim#20766, i#87247}(`I32`_lanetype, `%`_dim{i#87254}(4)), `%X%`_shape{lanetype#20778, dim#20778, i#87259}(`F32`_lanetype, `%`_dim{i#87266}(4)), `TRUNC_SAT`_vcvtop__{sx#15127, `zero?#135`}(`S`_sx, ?()))] -[visit_exp `%X%`_shape{lanetype#20766, dim#20766, i#87247}(`I32`_lanetype, `%`_dim{i#87254}(4))] -[visit_exp lanetype#20766] -[visit_id lanetype#20766] -[visit_exp dim#20766] -[visit_id dim#20766] -[visit_exp i#87247] -[visit_id i#87247] -[visit_exp (`I32`_lanetype, `%`_dim{i#87254}(4))] +[check_dims] +dims \ = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F32`_lanetype, `%`_dim(4)), `TRUNC_SAT`_vcvtop__(`S`_sx, ?()))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F32`_lanetype, `%`_dim(4)), `TRUNC_SAT`_vcvtop__(`S`_sx, ?()))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#87254}(4)] -[visit_exp i#87254] -[visit_id i#87254] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%X%`_shape{lanetype#20778, dim#20778, i#87259}(`F32`_lanetype, `%`_dim{i#87266}(4))] -[visit_exp lanetype#20778] -[visit_id lanetype#20778] -[visit_exp dim#20778] -[visit_id dim#20778] -[visit_exp i#87259] -[visit_id i#87259] -[visit_exp (`F32`_lanetype, `%`_dim{i#87266}(4))] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#87266}(4)] -[visit_exp i#87266] -[visit_id i#87266] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `TRUNC_SAT`_vcvtop__{sx#15127, `zero?#135`}(`S`_sx, ?())] -[visit_exp sx#15127] -[visit_id sx#15127] -[visit_exp `zero?#135`] -[visit_id zero?#135] +[visit_exp `TRUNC_SAT`_vcvtop__(`S`_sx, ?())] [visit_exp (`S`_sx, ?())] [visit_exp `S`_sx] [visit_exp ()] [visit_exp ?()] -[visit_exp `%`_u32{i#87240}(248)] -[visit_exp i#87240] -[visit_id i#87240] +[visit_exp `%`_u32(248)] [visit_exp (248)] [visit_exp 248] -[check_dims] dim#20941 dim#20953 i#87560 i#87567 i#87574 i#87579 i#87586 lanetype#20941 lanetype#20953 shape_1#37 shape_2#37 sx#15191 zero?#199 -dims \ = dim#20941, dim#20953, i#87560, i#87567, i#87574, i#87579, i#87586, lanetype#20941, lanetype#20953, shape_1#37, shape_2#37, sx#15191, zero?#199 -[visit_exp `VCVTOP`_instr{shape_1#37, shape_2#37}(`%X%`_shape{lanetype#20941, dim#20941, i#87567}(`I32`_lanetype, `%`_dim{i#87574}(4)), `%X%`_shape{lanetype#20953, dim#20953, i#87579}(`F32`_lanetype, `%`_dim{i#87586}(4)), `TRUNC_SAT`_vcvtop__{sx#15191, `zero?#199`}(`U`_sx, ?()))] -[visit_exp shape_1#37] -[visit_id shape_1#37] -[visit_exp shape_2#37] -[visit_id shape_2#37] -[visit_exp (`%X%`_shape{lanetype#20941, dim#20941, i#87567}(`I32`_lanetype, `%`_dim{i#87574}(4)), `%X%`_shape{lanetype#20953, dim#20953, i#87579}(`F32`_lanetype, `%`_dim{i#87586}(4)), `TRUNC_SAT`_vcvtop__{sx#15191, `zero?#199`}(`U`_sx, ?()))] -[visit_exp `%X%`_shape{lanetype#20941, dim#20941, i#87567}(`I32`_lanetype, `%`_dim{i#87574}(4))] -[visit_exp lanetype#20941] -[visit_id lanetype#20941] -[visit_exp dim#20941] -[visit_id dim#20941] -[visit_exp i#87567] -[visit_id i#87567] -[visit_exp (`I32`_lanetype, `%`_dim{i#87574}(4))] +[check_dims] +dims \ = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F32`_lanetype, `%`_dim(4)), `TRUNC_SAT`_vcvtop__(`U`_sx, ?()))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F32`_lanetype, `%`_dim(4)), `TRUNC_SAT`_vcvtop__(`U`_sx, ?()))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#87574}(4)] -[visit_exp i#87574] -[visit_id i#87574] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%X%`_shape{lanetype#20953, dim#20953, i#87579}(`F32`_lanetype, `%`_dim{i#87586}(4))] -[visit_exp lanetype#20953] -[visit_id lanetype#20953] -[visit_exp dim#20953] -[visit_id dim#20953] -[visit_exp i#87579] -[visit_id i#87579] -[visit_exp (`F32`_lanetype, `%`_dim{i#87586}(4))] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#87586}(4)] -[visit_exp i#87586] -[visit_id i#87586] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `TRUNC_SAT`_vcvtop__{sx#15191, `zero?#199`}(`U`_sx, ?())] -[visit_exp sx#15191] -[visit_id sx#15191] -[visit_exp `zero?#199`] -[visit_id zero?#199] +[visit_exp `TRUNC_SAT`_vcvtop__(`U`_sx, ?())] [visit_exp (`U`_sx, ?())] [visit_exp `U`_sx] [visit_exp ()] [visit_exp ?()] -[visit_exp `%`_u32{i#87560}(249)] -[visit_exp i#87560] -[visit_id i#87560] +[visit_exp `%`_u32(249)] [visit_exp (249)] [visit_exp 249] -[check_dims] dim#21116 dim#21128 half?#39 i#87880 i#87887 i#87894 i#87899 i#87906 lanetype#21116 lanetype#21128 shape_1#39 shape_2#39 sx#15225 -dims \ = dim#21116, dim#21128, half?#39, i#87880, i#87887, i#87894, i#87899, i#87906, lanetype#21116, lanetype#21128, shape_1#39, shape_2#39, sx#15225 -[visit_exp `VCVTOP`_instr{shape_1#39, shape_2#39}(`%X%`_shape{lanetype#21116, dim#21116, i#87887}(`F32`_lanetype, `%`_dim{i#87894}(4)), `%X%`_shape{lanetype#21128, dim#21128, i#87899}(`I32`_lanetype, `%`_dim{i#87906}(4)), `CONVERT`_vcvtop__{`half?#39`, sx#15225}(?(), `S`_sx))] -[visit_exp shape_1#39] -[visit_id shape_1#39] -[visit_exp shape_2#39] -[visit_id shape_2#39] -[visit_exp (`%X%`_shape{lanetype#21116, dim#21116, i#87887}(`F32`_lanetype, `%`_dim{i#87894}(4)), `%X%`_shape{lanetype#21128, dim#21128, i#87899}(`I32`_lanetype, `%`_dim{i#87906}(4)), `CONVERT`_vcvtop__{`half?#39`, sx#15225}(?(), `S`_sx))] -[visit_exp `%X%`_shape{lanetype#21116, dim#21116, i#87887}(`F32`_lanetype, `%`_dim{i#87894}(4))] -[visit_exp lanetype#21116] -[visit_id lanetype#21116] -[visit_exp dim#21116] -[visit_id dim#21116] -[visit_exp i#87887] -[visit_id i#87887] -[visit_exp (`F32`_lanetype, `%`_dim{i#87894}(4))] +[check_dims] +dims \ = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `CONVERT`_vcvtop__(?(), `S`_sx))] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `CONVERT`_vcvtop__(?(), `S`_sx))] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#87894}(4)] -[visit_exp i#87894] -[visit_id i#87894] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%X%`_shape{lanetype#21128, dim#21128, i#87899}(`I32`_lanetype, `%`_dim{i#87906}(4))] -[visit_exp lanetype#21128] -[visit_id lanetype#21128] -[visit_exp dim#21128] -[visit_id dim#21128] -[visit_exp i#87899] -[visit_id i#87899] -[visit_exp (`I32`_lanetype, `%`_dim{i#87906}(4))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#87906}(4)] -[visit_exp i#87906] -[visit_id i#87906] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `CONVERT`_vcvtop__{`half?#39`, sx#15225}(?(), `S`_sx)] -[visit_exp `half?#39`] -[visit_id half?#39] -[visit_exp sx#15225] -[visit_id sx#15225] +[visit_exp `CONVERT`_vcvtop__(?(), `S`_sx)] [visit_exp (?(), `S`_sx)] [visit_exp ?()] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#87880}(250)] -[visit_exp i#87880] -[visit_id i#87880] +[visit_exp `%`_u32(250)] [visit_exp (250)] [visit_exp 250] -[check_dims] dim#21321 dim#21333 half?#73 i#88290 i#88297 i#88304 i#88309 i#88316 lanetype#21321 lanetype#21333 shape_1#41 shape_2#41 sx#15259 -dims \ = dim#21321, dim#21333, half?#73, i#88290, i#88297, i#88304, i#88309, i#88316, lanetype#21321, lanetype#21333, shape_1#41, shape_2#41, sx#15259 -[visit_exp `VCVTOP`_instr{shape_1#41, shape_2#41}(`%X%`_shape{lanetype#21321, dim#21321, i#88297}(`F32`_lanetype, `%`_dim{i#88304}(4)), `%X%`_shape{lanetype#21333, dim#21333, i#88309}(`I32`_lanetype, `%`_dim{i#88316}(4)), `CONVERT`_vcvtop__{`half?#73`, sx#15259}(?(), `U`_sx))] -[visit_exp shape_1#41] -[visit_id shape_1#41] -[visit_exp shape_2#41] -[visit_id shape_2#41] -[visit_exp (`%X%`_shape{lanetype#21321, dim#21321, i#88297}(`F32`_lanetype, `%`_dim{i#88304}(4)), `%X%`_shape{lanetype#21333, dim#21333, i#88309}(`I32`_lanetype, `%`_dim{i#88316}(4)), `CONVERT`_vcvtop__{`half?#73`, sx#15259}(?(), `U`_sx))] -[visit_exp `%X%`_shape{lanetype#21321, dim#21321, i#88297}(`F32`_lanetype, `%`_dim{i#88304}(4))] -[visit_exp lanetype#21321] -[visit_id lanetype#21321] -[visit_exp dim#21321] -[visit_id dim#21321] -[visit_exp i#88297] -[visit_id i#88297] -[visit_exp (`F32`_lanetype, `%`_dim{i#88304}(4))] +[check_dims] +dims \ = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `CONVERT`_vcvtop__(?(), `U`_sx))] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `CONVERT`_vcvtop__(?(), `U`_sx))] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#88304}(4)] -[visit_exp i#88304] -[visit_id i#88304] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%X%`_shape{lanetype#21333, dim#21333, i#88309}(`I32`_lanetype, `%`_dim{i#88316}(4))] -[visit_exp lanetype#21333] -[visit_id lanetype#21333] -[visit_exp dim#21333] -[visit_id dim#21333] -[visit_exp i#88309] -[visit_id i#88309] -[visit_exp (`I32`_lanetype, `%`_dim{i#88316}(4))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#88316}(4)] -[visit_exp i#88316] -[visit_id i#88316] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `CONVERT`_vcvtop__{`half?#73`, sx#15259}(?(), `U`_sx)] -[visit_exp `half?#73`] -[visit_id half?#73] -[visit_exp sx#15259] -[visit_id sx#15259] +[visit_exp `CONVERT`_vcvtop__(?(), `U`_sx)] [visit_exp (?(), `U`_sx)] [visit_exp ?()] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#88290}(251)] -[visit_exp i#88290] -[visit_id i#88290] +[visit_exp `%`_u32(251)] [visit_exp (251)] [visit_exp 251] -[check_dims] dim#21526 dim#21538 i#88700 i#88707 i#88714 i#88719 i#88726 lanetype#21526 lanetype#21538 shape_1#43 shape_2#43 sx#15323 zero?#263 -dims \ = dim#21526, dim#21538, i#88700, i#88707, i#88714, i#88719, i#88726, lanetype#21526, lanetype#21538, shape_1#43, shape_2#43, sx#15323, zero?#263 -[visit_exp `VCVTOP`_instr{shape_1#43, shape_2#43}(`%X%`_shape{lanetype#21526, dim#21526, i#88707}(`I32`_lanetype, `%`_dim{i#88714}(4)), `%X%`_shape{lanetype#21538, dim#21538, i#88719}(`F64`_lanetype, `%`_dim{i#88726}(2)), `TRUNC_SAT`_vcvtop__{sx#15323, `zero?#263`}(`S`_sx, ?(`ZERO`_zero)))] -[visit_exp shape_1#43] -[visit_id shape_1#43] -[visit_exp shape_2#43] -[visit_id shape_2#43] -[visit_exp (`%X%`_shape{lanetype#21526, dim#21526, i#88707}(`I32`_lanetype, `%`_dim{i#88714}(4)), `%X%`_shape{lanetype#21538, dim#21538, i#88719}(`F64`_lanetype, `%`_dim{i#88726}(2)), `TRUNC_SAT`_vcvtop__{sx#15323, `zero?#263`}(`S`_sx, ?(`ZERO`_zero)))] -[visit_exp `%X%`_shape{lanetype#21526, dim#21526, i#88707}(`I32`_lanetype, `%`_dim{i#88714}(4))] -[visit_exp lanetype#21526] -[visit_id lanetype#21526] -[visit_exp dim#21526] -[visit_id dim#21526] -[visit_exp i#88707] -[visit_id i#88707] -[visit_exp (`I32`_lanetype, `%`_dim{i#88714}(4))] +[check_dims] +dims \ = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F64`_lanetype, `%`_dim(2)), `TRUNC_SAT`_vcvtop__(`S`_sx, ?(`ZERO`_zero)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F64`_lanetype, `%`_dim(2)), `TRUNC_SAT`_vcvtop__(`S`_sx, ?(`ZERO`_zero)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#88714}(4)] -[visit_exp i#88714] -[visit_id i#88714] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%X%`_shape{lanetype#21538, dim#21538, i#88719}(`F64`_lanetype, `%`_dim{i#88726}(2))] -[visit_exp lanetype#21538] -[visit_id lanetype#21538] -[visit_exp dim#21538] -[visit_id dim#21538] -[visit_exp i#88719] -[visit_id i#88719] -[visit_exp (`F64`_lanetype, `%`_dim{i#88726}(2))] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#88726}(2)] -[visit_exp i#88726] -[visit_id i#88726] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `TRUNC_SAT`_vcvtop__{sx#15323, `zero?#263`}(`S`_sx, ?(`ZERO`_zero))] -[visit_exp sx#15323] -[visit_id sx#15323] -[visit_exp `zero?#263`] -[visit_id zero?#263] +[visit_exp `TRUNC_SAT`_vcvtop__(`S`_sx, ?(`ZERO`_zero))] [visit_exp (`S`_sx, ?(`ZERO`_zero))] [visit_exp `S`_sx] [visit_exp ()] [visit_exp ?(`ZERO`_zero)] [visit_exp `ZERO`_zero] [visit_exp ()] -[visit_exp `%`_u32{i#88700}(252)] -[visit_exp i#88700] -[visit_id i#88700] +[visit_exp `%`_u32(252)] [visit_exp (252)] [visit_exp 252] -[check_dims] dim#21701 dim#21713 i#89020 i#89027 i#89034 i#89039 i#89046 lanetype#21701 lanetype#21713 shape_1#45 shape_2#45 sx#15387 zero?#327 -dims \ = dim#21701, dim#21713, i#89020, i#89027, i#89034, i#89039, i#89046, lanetype#21701, lanetype#21713, shape_1#45, shape_2#45, sx#15387, zero?#327 -[visit_exp `VCVTOP`_instr{shape_1#45, shape_2#45}(`%X%`_shape{lanetype#21701, dim#21701, i#89027}(`I32`_lanetype, `%`_dim{i#89034}(4)), `%X%`_shape{lanetype#21713, dim#21713, i#89039}(`F64`_lanetype, `%`_dim{i#89046}(2)), `TRUNC_SAT`_vcvtop__{sx#15387, `zero?#327`}(`U`_sx, ?(`ZERO`_zero)))] -[visit_exp shape_1#45] -[visit_id shape_1#45] -[visit_exp shape_2#45] -[visit_id shape_2#45] -[visit_exp (`%X%`_shape{lanetype#21701, dim#21701, i#89027}(`I32`_lanetype, `%`_dim{i#89034}(4)), `%X%`_shape{lanetype#21713, dim#21713, i#89039}(`F64`_lanetype, `%`_dim{i#89046}(2)), `TRUNC_SAT`_vcvtop__{sx#15387, `zero?#327`}(`U`_sx, ?(`ZERO`_zero)))] -[visit_exp `%X%`_shape{lanetype#21701, dim#21701, i#89027}(`I32`_lanetype, `%`_dim{i#89034}(4))] -[visit_exp lanetype#21701] -[visit_id lanetype#21701] -[visit_exp dim#21701] -[visit_id dim#21701] -[visit_exp i#89027] -[visit_id i#89027] -[visit_exp (`I32`_lanetype, `%`_dim{i#89034}(4))] +[check_dims] +dims \ = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F64`_lanetype, `%`_dim(2)), `TRUNC_SAT`_vcvtop__(`U`_sx, ?(`ZERO`_zero)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F64`_lanetype, `%`_dim(2)), `TRUNC_SAT`_vcvtop__(`U`_sx, ?(`ZERO`_zero)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#89034}(4)] -[visit_exp i#89034] -[visit_id i#89034] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%X%`_shape{lanetype#21713, dim#21713, i#89039}(`F64`_lanetype, `%`_dim{i#89046}(2))] -[visit_exp lanetype#21713] -[visit_id lanetype#21713] -[visit_exp dim#21713] -[visit_id dim#21713] -[visit_exp i#89039] -[visit_id i#89039] -[visit_exp (`F64`_lanetype, `%`_dim{i#89046}(2))] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#89046}(2)] -[visit_exp i#89046] -[visit_id i#89046] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `TRUNC_SAT`_vcvtop__{sx#15387, `zero?#327`}(`U`_sx, ?(`ZERO`_zero))] -[visit_exp sx#15387] -[visit_id sx#15387] -[visit_exp `zero?#327`] -[visit_id zero?#327] +[visit_exp `TRUNC_SAT`_vcvtop__(`U`_sx, ?(`ZERO`_zero))] [visit_exp (`U`_sx, ?(`ZERO`_zero))] [visit_exp `U`_sx] [visit_exp ()] [visit_exp ?(`ZERO`_zero)] [visit_exp `ZERO`_zero] [visit_exp ()] -[visit_exp `%`_u32{i#89020}(253)] -[visit_exp i#89020] -[visit_id i#89020] +[visit_exp `%`_u32(253)] [visit_exp (253)] [visit_exp 253] -[check_dims] dim#21876 dim#21888 half?#107 i#89340 i#89347 i#89354 i#89359 i#89366 lanetype#21876 lanetype#21888 shape_1#47 shape_2#47 sx#15421 -dims \ = dim#21876, dim#21888, half?#107, i#89340, i#89347, i#89354, i#89359, i#89366, lanetype#21876, lanetype#21888, shape_1#47, shape_2#47, sx#15421 -[visit_exp `VCVTOP`_instr{shape_1#47, shape_2#47}(`%X%`_shape{lanetype#21876, dim#21876, i#89347}(`F64`_lanetype, `%`_dim{i#89354}(2)), `%X%`_shape{lanetype#21888, dim#21888, i#89359}(`I32`_lanetype, `%`_dim{i#89366}(4)), `CONVERT`_vcvtop__{`half?#107`, sx#15421}(?(`LOW`_half), `S`_sx))] -[visit_exp shape_1#47] -[visit_id shape_1#47] -[visit_exp shape_2#47] -[visit_id shape_2#47] -[visit_exp (`%X%`_shape{lanetype#21876, dim#21876, i#89347}(`F64`_lanetype, `%`_dim{i#89354}(2)), `%X%`_shape{lanetype#21888, dim#21888, i#89359}(`I32`_lanetype, `%`_dim{i#89366}(4)), `CONVERT`_vcvtop__{`half?#107`, sx#15421}(?(`LOW`_half), `S`_sx))] -[visit_exp `%X%`_shape{lanetype#21876, dim#21876, i#89347}(`F64`_lanetype, `%`_dim{i#89354}(2))] -[visit_exp lanetype#21876] -[visit_id lanetype#21876] -[visit_exp dim#21876] -[visit_id dim#21876] -[visit_exp i#89347] -[visit_id i#89347] -[visit_exp (`F64`_lanetype, `%`_dim{i#89354}(2))] +[check_dims] +dims \ = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `CONVERT`_vcvtop__(?(`LOW`_half), `S`_sx))] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `CONVERT`_vcvtop__(?(`LOW`_half), `S`_sx))] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#89354}(2)] -[visit_exp i#89354] -[visit_id i#89354] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `%X%`_shape{lanetype#21888, dim#21888, i#89359}(`I32`_lanetype, `%`_dim{i#89366}(4))] -[visit_exp lanetype#21888] -[visit_id lanetype#21888] -[visit_exp dim#21888] -[visit_id dim#21888] -[visit_exp i#89359] -[visit_id i#89359] -[visit_exp (`I32`_lanetype, `%`_dim{i#89366}(4))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#89366}(4)] -[visit_exp i#89366] -[visit_id i#89366] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `CONVERT`_vcvtop__{`half?#107`, sx#15421}(?(`LOW`_half), `S`_sx)] -[visit_exp `half?#107`] -[visit_id half?#107] -[visit_exp sx#15421] -[visit_id sx#15421] +[visit_exp `CONVERT`_vcvtop__(?(`LOW`_half), `S`_sx)] [visit_exp (?(`LOW`_half), `S`_sx)] [visit_exp ?(`LOW`_half)] [visit_exp `LOW`_half] [visit_exp ()] [visit_exp `S`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#89340}(254)] -[visit_exp i#89340] -[visit_id i#89340] +[visit_exp `%`_u32(254)] [visit_exp (254)] [visit_exp 254] -[check_dims] dim#22081 dim#22093 half?#141 i#89750 i#89757 i#89764 i#89769 i#89776 lanetype#22081 lanetype#22093 shape_1#49 shape_2#49 sx#15455 -dims \ = dim#22081, dim#22093, half?#141, i#89750, i#89757, i#89764, i#89769, i#89776, lanetype#22081, lanetype#22093, shape_1#49, shape_2#49, sx#15455 -[visit_exp `VCVTOP`_instr{shape_1#49, shape_2#49}(`%X%`_shape{lanetype#22081, dim#22081, i#89757}(`F64`_lanetype, `%`_dim{i#89764}(2)), `%X%`_shape{lanetype#22093, dim#22093, i#89769}(`I32`_lanetype, `%`_dim{i#89776}(4)), `CONVERT`_vcvtop__{`half?#141`, sx#15455}(?(`LOW`_half), `U`_sx))] -[visit_exp shape_1#49] -[visit_id shape_1#49] -[visit_exp shape_2#49] -[visit_id shape_2#49] -[visit_exp (`%X%`_shape{lanetype#22081, dim#22081, i#89757}(`F64`_lanetype, `%`_dim{i#89764}(2)), `%X%`_shape{lanetype#22093, dim#22093, i#89769}(`I32`_lanetype, `%`_dim{i#89776}(4)), `CONVERT`_vcvtop__{`half?#141`, sx#15455}(?(`LOW`_half), `U`_sx))] -[visit_exp `%X%`_shape{lanetype#22081, dim#22081, i#89757}(`F64`_lanetype, `%`_dim{i#89764}(2))] -[visit_exp lanetype#22081] -[visit_id lanetype#22081] -[visit_exp dim#22081] -[visit_id dim#22081] -[visit_exp i#89757] -[visit_id i#89757] -[visit_exp (`F64`_lanetype, `%`_dim{i#89764}(2))] +[check_dims] +dims \ = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `CONVERT`_vcvtop__(?(`LOW`_half), `U`_sx))] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `CONVERT`_vcvtop__(?(`LOW`_half), `U`_sx))] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#89764}(2)] -[visit_exp i#89764] -[visit_id i#89764] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `%X%`_shape{lanetype#22093, dim#22093, i#89769}(`I32`_lanetype, `%`_dim{i#89776}(4))] -[visit_exp lanetype#22093] -[visit_id lanetype#22093] -[visit_exp dim#22093] -[visit_id dim#22093] -[visit_exp i#89769] -[visit_id i#89769] -[visit_exp (`I32`_lanetype, `%`_dim{i#89776}(4))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#89776}(4)] -[visit_exp i#89776] -[visit_id i#89776] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `CONVERT`_vcvtop__{`half?#141`, sx#15455}(?(`LOW`_half), `U`_sx)] -[visit_exp `half?#141`] -[visit_id half?#141] -[visit_exp sx#15455] -[visit_id sx#15455] +[visit_exp `CONVERT`_vcvtop__(?(`LOW`_half), `U`_sx)] [visit_exp (?(`LOW`_half), `U`_sx)] [visit_exp ?(`LOW`_half)] [visit_exp `LOW`_half] [visit_exp ()] [visit_exp `U`_sx] [visit_exp ()] -[visit_exp `%`_u32{i#89750}(255)] -[visit_exp i#89750] -[visit_id i#89750] +[visit_exp `%`_u32(255)] [visit_exp (255)] [visit_exp 255] -[check_dims] dim#22286 dim#22298 i#90160 i#90167 i#90174 i#90179 i#90186 lanetype#22286 lanetype#22298 shape_1#51 shape_2#51 sx#15519 zero?#391 -dims \ = dim#22286, dim#22298, i#90160, i#90167, i#90174, i#90179, i#90186, lanetype#22286, lanetype#22298, shape_1#51, shape_2#51, sx#15519, zero?#391 -[visit_exp `VCVTOP`_instr{shape_1#51, shape_2#51}(`%X%`_shape{lanetype#22286, dim#22286, i#90167}(`I32`_lanetype, `%`_dim{i#90174}(4)), `%X%`_shape{lanetype#22298, dim#22298, i#90179}(`F32`_lanetype, `%`_dim{i#90186}(4)), `RELAXED_TRUNC`_vcvtop__{sx#15519, `zero?#391`}(`S`_sx, ?()))] -[visit_exp shape_1#51] -[visit_id shape_1#51] -[visit_exp shape_2#51] -[visit_id shape_2#51] -[visit_exp (`%X%`_shape{lanetype#22286, dim#22286, i#90167}(`I32`_lanetype, `%`_dim{i#90174}(4)), `%X%`_shape{lanetype#22298, dim#22298, i#90179}(`F32`_lanetype, `%`_dim{i#90186}(4)), `RELAXED_TRUNC`_vcvtop__{sx#15519, `zero?#391`}(`S`_sx, ?()))] -[visit_exp `%X%`_shape{lanetype#22286, dim#22286, i#90167}(`I32`_lanetype, `%`_dim{i#90174}(4))] -[visit_exp lanetype#22286] -[visit_id lanetype#22286] -[visit_exp dim#22286] -[visit_id dim#22286] -[visit_exp i#90167] -[visit_id i#90167] -[visit_exp (`I32`_lanetype, `%`_dim{i#90174}(4))] +[check_dims] +dims \ = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_TRUNC`_vcvtop__(`S`_sx, ?()))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_TRUNC`_vcvtop__(`S`_sx, ?()))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#90174}(4)] -[visit_exp i#90174] -[visit_id i#90174] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%X%`_shape{lanetype#22298, dim#22298, i#90179}(`F32`_lanetype, `%`_dim{i#90186}(4))] -[visit_exp lanetype#22298] -[visit_id lanetype#22298] -[visit_exp dim#22298] -[visit_id dim#22298] -[visit_exp i#90179] -[visit_id i#90179] -[visit_exp (`F32`_lanetype, `%`_dim{i#90186}(4))] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#90186}(4)] -[visit_exp i#90186] -[visit_id i#90186] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `RELAXED_TRUNC`_vcvtop__{sx#15519, `zero?#391`}(`S`_sx, ?())] -[visit_exp sx#15519] -[visit_id sx#15519] -[visit_exp `zero?#391`] -[visit_id zero?#391] +[visit_exp `RELAXED_TRUNC`_vcvtop__(`S`_sx, ?())] [visit_exp (`S`_sx, ?())] [visit_exp `S`_sx] [visit_exp ()] [visit_exp ?()] -[visit_exp `%`_u32{i#90160}(257)] -[visit_exp i#90160] -[visit_id i#90160] +[visit_exp `%`_u32(257)] [visit_exp (257)] [visit_exp 257] -[check_dims] dim#22461 dim#22473 i#90480 i#90487 i#90494 i#90499 i#90506 lanetype#22461 lanetype#22473 shape_1#53 shape_2#53 sx#15583 zero?#455 -dims \ = dim#22461, dim#22473, i#90480, i#90487, i#90494, i#90499, i#90506, lanetype#22461, lanetype#22473, shape_1#53, shape_2#53, sx#15583, zero?#455 -[visit_exp `VCVTOP`_instr{shape_1#53, shape_2#53}(`%X%`_shape{lanetype#22461, dim#22461, i#90487}(`I32`_lanetype, `%`_dim{i#90494}(4)), `%X%`_shape{lanetype#22473, dim#22473, i#90499}(`F32`_lanetype, `%`_dim{i#90506}(4)), `RELAXED_TRUNC`_vcvtop__{sx#15583, `zero?#455`}(`U`_sx, ?()))] -[visit_exp shape_1#53] -[visit_id shape_1#53] -[visit_exp shape_2#53] -[visit_id shape_2#53] -[visit_exp (`%X%`_shape{lanetype#22461, dim#22461, i#90487}(`I32`_lanetype, `%`_dim{i#90494}(4)), `%X%`_shape{lanetype#22473, dim#22473, i#90499}(`F32`_lanetype, `%`_dim{i#90506}(4)), `RELAXED_TRUNC`_vcvtop__{sx#15583, `zero?#455`}(`U`_sx, ?()))] -[visit_exp `%X%`_shape{lanetype#22461, dim#22461, i#90487}(`I32`_lanetype, `%`_dim{i#90494}(4))] -[visit_exp lanetype#22461] -[visit_id lanetype#22461] -[visit_exp dim#22461] -[visit_id dim#22461] -[visit_exp i#90487] -[visit_id i#90487] -[visit_exp (`I32`_lanetype, `%`_dim{i#90494}(4))] +[check_dims] +dims \ = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_TRUNC`_vcvtop__(`U`_sx, ?()))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_TRUNC`_vcvtop__(`U`_sx, ?()))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#90494}(4)] -[visit_exp i#90494] -[visit_id i#90494] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%X%`_shape{lanetype#22473, dim#22473, i#90499}(`F32`_lanetype, `%`_dim{i#90506}(4))] -[visit_exp lanetype#22473] -[visit_id lanetype#22473] -[visit_exp dim#22473] -[visit_id dim#22473] -[visit_exp i#90499] -[visit_id i#90499] -[visit_exp (`F32`_lanetype, `%`_dim{i#90506}(4))] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#90506}(4)] -[visit_exp i#90506] -[visit_id i#90506] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `RELAXED_TRUNC`_vcvtop__{sx#15583, `zero?#455`}(`U`_sx, ?())] -[visit_exp sx#15583] -[visit_id sx#15583] -[visit_exp `zero?#455`] -[visit_id zero?#455] +[visit_exp `RELAXED_TRUNC`_vcvtop__(`U`_sx, ?())] [visit_exp (`U`_sx, ?())] [visit_exp `U`_sx] [visit_exp ()] [visit_exp ?()] -[visit_exp `%`_u32{i#90480}(258)] -[visit_exp i#90480] -[visit_id i#90480] +[visit_exp `%`_u32(258)] [visit_exp (258)] [visit_exp 258] -[check_dims] dim#22636 dim#22648 i#90800 i#90807 i#90814 i#90819 i#90826 lanetype#22636 lanetype#22648 shape_1#55 shape_2#55 sx#15647 zero?#519 -dims \ = dim#22636, dim#22648, i#90800, i#90807, i#90814, i#90819, i#90826, lanetype#22636, lanetype#22648, shape_1#55, shape_2#55, sx#15647, zero?#519 -[visit_exp `VCVTOP`_instr{shape_1#55, shape_2#55}(`%X%`_shape{lanetype#22636, dim#22636, i#90807}(`I32`_lanetype, `%`_dim{i#90814}(4)), `%X%`_shape{lanetype#22648, dim#22648, i#90819}(`F64`_lanetype, `%`_dim{i#90826}(2)), `RELAXED_TRUNC`_vcvtop__{sx#15647, `zero?#519`}(`S`_sx, ?(`ZERO`_zero)))] -[visit_exp shape_1#55] -[visit_id shape_1#55] -[visit_exp shape_2#55] -[visit_id shape_2#55] -[visit_exp (`%X%`_shape{lanetype#22636, dim#22636, i#90807}(`I32`_lanetype, `%`_dim{i#90814}(4)), `%X%`_shape{lanetype#22648, dim#22648, i#90819}(`F64`_lanetype, `%`_dim{i#90826}(2)), `RELAXED_TRUNC`_vcvtop__{sx#15647, `zero?#519`}(`S`_sx, ?(`ZERO`_zero)))] -[visit_exp `%X%`_shape{lanetype#22636, dim#22636, i#90807}(`I32`_lanetype, `%`_dim{i#90814}(4))] -[visit_exp lanetype#22636] -[visit_id lanetype#22636] -[visit_exp dim#22636] -[visit_id dim#22636] -[visit_exp i#90807] -[visit_id i#90807] -[visit_exp (`I32`_lanetype, `%`_dim{i#90814}(4))] +[check_dims] +dims \ = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_TRUNC`_vcvtop__(`S`_sx, ?(`ZERO`_zero)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_TRUNC`_vcvtop__(`S`_sx, ?(`ZERO`_zero)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#90814}(4)] -[visit_exp i#90814] -[visit_id i#90814] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%X%`_shape{lanetype#22648, dim#22648, i#90819}(`F64`_lanetype, `%`_dim{i#90826}(2))] -[visit_exp lanetype#22648] -[visit_id lanetype#22648] -[visit_exp dim#22648] -[visit_id dim#22648] -[visit_exp i#90819] -[visit_id i#90819] -[visit_exp (`F64`_lanetype, `%`_dim{i#90826}(2))] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#90826}(2)] -[visit_exp i#90826] -[visit_id i#90826] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `RELAXED_TRUNC`_vcvtop__{sx#15647, `zero?#519`}(`S`_sx, ?(`ZERO`_zero))] -[visit_exp sx#15647] -[visit_id sx#15647] -[visit_exp `zero?#519`] -[visit_id zero?#519] +[visit_exp `RELAXED_TRUNC`_vcvtop__(`S`_sx, ?(`ZERO`_zero))] [visit_exp (`S`_sx, ?(`ZERO`_zero))] [visit_exp `S`_sx] [visit_exp ()] [visit_exp ?(`ZERO`_zero)] [visit_exp `ZERO`_zero] [visit_exp ()] -[visit_exp `%`_u32{i#90800}(259)] -[visit_exp i#90800] -[visit_id i#90800] +[visit_exp `%`_u32(259)] [visit_exp (259)] [visit_exp 259] -[check_dims] dim#22811 dim#22823 i#91120 i#91127 i#91134 i#91139 i#91146 lanetype#22811 lanetype#22823 shape_1#57 shape_2#57 sx#15711 zero?#583 -dims \ = dim#22811, dim#22823, i#91120, i#91127, i#91134, i#91139, i#91146, lanetype#22811, lanetype#22823, shape_1#57, shape_2#57, sx#15711, zero?#583 -[visit_exp `VCVTOP`_instr{shape_1#57, shape_2#57}(`%X%`_shape{lanetype#22811, dim#22811, i#91127}(`I32`_lanetype, `%`_dim{i#91134}(4)), `%X%`_shape{lanetype#22823, dim#22823, i#91139}(`F64`_lanetype, `%`_dim{i#91146}(2)), `RELAXED_TRUNC`_vcvtop__{sx#15711, `zero?#583`}(`U`_sx, ?(`ZERO`_zero)))] -[visit_exp shape_1#57] -[visit_id shape_1#57] -[visit_exp shape_2#57] -[visit_id shape_2#57] -[visit_exp (`%X%`_shape{lanetype#22811, dim#22811, i#91127}(`I32`_lanetype, `%`_dim{i#91134}(4)), `%X%`_shape{lanetype#22823, dim#22823, i#91139}(`F64`_lanetype, `%`_dim{i#91146}(2)), `RELAXED_TRUNC`_vcvtop__{sx#15711, `zero?#583`}(`U`_sx, ?(`ZERO`_zero)))] -[visit_exp `%X%`_shape{lanetype#22811, dim#22811, i#91127}(`I32`_lanetype, `%`_dim{i#91134}(4))] -[visit_exp lanetype#22811] -[visit_id lanetype#22811] -[visit_exp dim#22811] -[visit_id dim#22811] -[visit_exp i#91127] -[visit_id i#91127] -[visit_exp (`I32`_lanetype, `%`_dim{i#91134}(4))] +[check_dims] +dims \ = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_TRUNC`_vcvtop__(`U`_sx, ?(`ZERO`_zero)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_TRUNC`_vcvtop__(`U`_sx, ?(`ZERO`_zero)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#91134}(4)] -[visit_exp i#91134] -[visit_id i#91134] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%X%`_shape{lanetype#22823, dim#22823, i#91139}(`F64`_lanetype, `%`_dim{i#91146}(2))] -[visit_exp lanetype#22823] -[visit_id lanetype#22823] -[visit_exp dim#22823] -[visit_id dim#22823] -[visit_exp i#91139] -[visit_id i#91139] -[visit_exp (`F64`_lanetype, `%`_dim{i#91146}(2))] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#91146}(2)] -[visit_exp i#91146] -[visit_id i#91146] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `RELAXED_TRUNC`_vcvtop__{sx#15711, `zero?#583`}(`U`_sx, ?(`ZERO`_zero))] -[visit_exp sx#15711] -[visit_id sx#15711] -[visit_exp `zero?#583`] -[visit_id zero?#583] +[visit_exp `RELAXED_TRUNC`_vcvtop__(`U`_sx, ?(`ZERO`_zero))] [visit_exp (`U`_sx, ?(`ZERO`_zero))] [visit_exp `U`_sx] [visit_exp ()] [visit_exp ?(`ZERO`_zero)] [visit_exp `ZERO`_zero] [visit_exp ()] -[visit_exp `%`_u32{i#91120}(260)] -[visit_exp i#91120] -[visit_id i#91120] +[visit_exp `%`_u32(260)] [visit_exp (260)] [visit_exp 260] ps' = @@ -87139,8 +68585,8 @@ dims \ = in [check_dims] ps' = (N : N, syntax en, grammar BX : en*) [check_dims] N en -[check_dims] N en i#91425 i#91448 len -dims \ N = en, i#91425, i#91448, len +[check_dims] N en len +dims \ N = en, len [visit_exp en*{en <- `en*`}] [scope_enter en] [visit_exp en] @@ -87150,16 +68596,12 @@ dims \ N = en, i#91425, i#91448, len [visit_exp `en*`] [visit_id en*] no dims [visit_id en*] -[visit_exp `%`_byte{i#91425}(N)] -[visit_exp i#91425] -[visit_id i#91425] +[visit_exp `%`_byte(N)] [visit_exp (N)] [visit_exp N] [visit_id N] not free [visit_id N] no dims -[visit_exp `%`_u32{i#91448}(len)] -[visit_exp i#91448] -[visit_id i#91448] +[visit_exp `%`_u32(len)] [visit_exp (len)] [visit_exp len] [visit_id len] @@ -87196,11 +68638,9 @@ dims \ = [visit_exp 0] ps' = [check_dims] -[check_dims] qt rectype#1727 -dims \ = qt, rectype#1727 -[visit_exp `TYPE`_type{rectype#1727}(qt)] -[visit_exp rectype#1727] -[visit_id rectype#1727] +[check_dims] qt +dims \ = qt +[visit_exp `TYPE`_type(qt)] [visit_exp (qt)] [visit_exp qt] [visit_id qt] @@ -87231,13 +68671,9 @@ dims \ = ty [visit_exp 1] ps' = [check_dims] -[check_dims] externtype#247 name#6185 nm_1 nm_2 xt -dims \ = externtype#247, name#6185, nm_1, nm_2, xt -[visit_exp `IMPORT`_import{name#6185, externtype#247}(nm_1, nm_2, xt)] -[visit_exp name#6185] -[visit_id name#6185] -[visit_exp externtype#247] -[visit_id externtype#247] +[check_dims] nm_1 nm_2 xt +dims \ = nm_1, nm_2, xt +[visit_exp `IMPORT`_import(nm_1, nm_2, xt)] [visit_exp (nm_1, nm_2, xt)] [visit_exp nm_1] [visit_id nm_1] @@ -87299,58 +68735,38 @@ dims \ = x [visit_exp 3] ps' = [check_dims] -[check_dims] addrtype#1433 at expr#4835 heaptype#1729 heaptype#1741 ht lim limits#1433 null?#1675 reftype#3999 tabletype#1130 tt -dims \ = addrtype#1433, at, expr#4835, heaptype#1729, heaptype#1741, ht, lim, limits#1433, null?#1675, reftype#3999, tabletype#1130, tt -[visit_exp `TABLE`_table{tabletype#1130, expr#4835}(tt, [`REF.NULL`_instr{heaptype#1729}(ht)])] -[visit_exp tabletype#1130] -[visit_id tabletype#1130] -[visit_exp expr#4835] -[visit_id expr#4835] -[visit_exp (tt, [`REF.NULL`_instr{heaptype#1729}(ht)])] +[check_dims] at ht lim tt +dims \ = at, ht, lim, tt +[visit_exp `TABLE`_table(tt, [`REF.NULL`_instr(ht)])] +[visit_exp (tt, [`REF.NULL`_instr(ht)])] [visit_exp tt] [visit_id tt] -[visit_exp [`REF.NULL`_instr{heaptype#1729}(ht)]] -[visit_exp `REF.NULL`_instr{heaptype#1729}(ht)] -[visit_exp heaptype#1729] -[visit_id heaptype#1729] +[visit_exp [`REF.NULL`_instr(ht)]] +[visit_exp `REF.NULL`_instr(ht)] [visit_exp (ht)] [visit_exp ht] [visit_id ht] [visit_exp tt] [visit_id tt] not free -[visit_exp (tt = `%%%`_tabletype{addrtype#1433, limits#1433, reftype#3999}(at, lim, `REF`_reftype{`null?#1675`, heaptype#1741}(`NULL`_null?{}, ht)))] +[visit_exp (tt = `%%%`_tabletype(at, lim, `REF`_reftype(`NULL`_null?{}, ht)))] [visit_exp tt] [visit_id tt] not free -[visit_exp `%%%`_tabletype{addrtype#1433, limits#1433, reftype#3999}(at, lim, `REF`_reftype{`null?#1675`, heaptype#1741}(`NULL`_null?{}, ht))] -[visit_exp addrtype#1433] -[visit_id addrtype#1433] -[visit_exp limits#1433] -[visit_id limits#1433] -[visit_exp reftype#3999] -[visit_id reftype#3999] -[visit_exp (at, lim, `REF`_reftype{`null?#1675`, heaptype#1741}(`NULL`_null?{}, ht))] +[visit_exp `%%%`_tabletype(at, lim, `REF`_reftype(`NULL`_null?{}, ht))] +[visit_exp (at, lim, `REF`_reftype(`NULL`_null?{}, ht))] [visit_exp at] [visit_id at] [visit_exp lim] [visit_id lim] -[visit_exp `REF`_reftype{`null?#1675`, heaptype#1741}(`NULL`_null?{}, ht)] -[visit_exp `null?#1675`] -[visit_id null?#1675] -[visit_exp heaptype#1741] -[visit_id heaptype#1741] +[visit_exp `REF`_reftype(`NULL`_null?{}, ht)] [visit_exp (`NULL`_null?{}, ht)] [visit_exp `NULL`_null?{}] [visit_exp `NULL`_null] [visit_exp ()] [visit_exp ht] [visit_id ht] not free -[check_dims] e expr#4847 tabletype#1142 tt -dims \ = e, expr#4847, tabletype#1142, tt -[visit_exp `TABLE`_table{tabletype#1142, expr#4847}(tt, e)] -[visit_exp tabletype#1142] -[visit_id tabletype#1142] -[visit_exp expr#4847] -[visit_id expr#4847] +[check_dims] e tt +dims \ = e, tt +[visit_exp `TABLE`_table(tt, e)] [visit_exp (tt, e)] [visit_exp tt] [visit_id tt] @@ -87385,11 +68801,9 @@ dims \ = tab [visit_exp 4] ps' = [check_dims] -[check_dims] memtype#734 mt -dims \ = memtype#734, mt -[visit_exp `MEMORY`_mem{memtype#734}(mt)] -[visit_exp memtype#734] -[visit_id memtype#734] +[check_dims] mt +dims \ = mt +[visit_exp `MEMORY`_mem(mt)] [visit_exp (mt)] [visit_exp mt] [visit_id mt] @@ -87420,13 +68834,9 @@ dims \ = mem [visit_exp 5] ps' = [check_dims] -[check_dims] e expr#4883 globaltype#2285 gt -dims \ = e, expr#4883, globaltype#2285, gt -[visit_exp `GLOBAL`_global{globaltype#2285, expr#4883}(gt, e)] -[visit_exp globaltype#2285] -[visit_id globaltype#2285] -[visit_exp expr#4883] -[visit_id expr#4883] +[check_dims] e gt +dims \ = e, gt +[visit_exp `GLOBAL`_global(gt, e)] [visit_exp (gt, e)] [visit_exp gt] [visit_id gt] @@ -87461,13 +68871,9 @@ dims \ = glob [visit_exp 6] ps' = [check_dims] -[check_dims] externidx#5797 name#6238 nm xx -dims \ = externidx#5797, name#6238, nm, xx -[visit_exp `EXPORT`_export{name#6238, externidx#5797}(nm, xx)] -[visit_exp name#6238] -[visit_id name#6238] -[visit_exp externidx#5797] -[visit_id externidx#5797] +[check_dims] nm xx +dims \ = nm, xx +[visit_exp `EXPORT`_export(nm, xx)] [visit_exp (nm, xx)] [visit_exp nm] [visit_id nm] @@ -87502,12 +68908,10 @@ dims \ = ex [visit_exp 7] ps' = [check_dims] -[check_dims] funcidx#3179 x -dims \ = funcidx#3179, x -[visit_exp [`START`_start{funcidx#3179}(x)]] -[visit_exp `START`_start{funcidx#3179}(x)] -[visit_exp funcidx#3179] -[visit_id funcidx#3179] +[check_dims] x +dims \ = x +[visit_exp [`START`_start(x)]] +[visit_exp `START`_start(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -87526,13 +68930,9 @@ dims \ = startopt [visit_exp 8] ps' = [check_dims] -[check_dims] heaptype#1753 null?#1687 -dims \ = heaptype#1753, null?#1687 -[visit_exp `REF`_reftype{`null?#1687`, heaptype#1753}(?(`NULL`_null), `FUNC`_heaptype)] -[visit_exp `null?#1687`] -[visit_id null?#1687] -[visit_exp heaptype#1753] -[visit_id heaptype#1753] +[check_dims] +dims \ = +[visit_exp `REF`_reftype(?(`NULL`_null), `FUNC`_heaptype)] [visit_exp (?(`NULL`_null), `FUNC`_heaptype)] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] @@ -87541,61 +68941,35 @@ dims \ = heaptype#1753, null?#1687 [visit_exp ()] ps' = [check_dims] -[check_dims] e_o elemmode#3307 expr#4909 expr*#3307 funcidx#3213 heaptype#1765 i#91592 i#91655 null?#1699 reftype#4023 tableidx#144 y -dims \ = e_o, elemmode#3307, expr#4909, expr*#3307, funcidx#3213, heaptype#1765, i#91592, i#91655, null?#1699, reftype#4023, tableidx#144, y -[visit_exp `ELEM`_elem{reftype#4023, `expr*#3307`, elemmode#3307}(`REF`_reftype{`null?#1699`, heaptype#1765}(?(), `FUNC`_heaptype), [`REF.FUNC`_instr{funcidx#3213}(y)*{funcidx#3213 <- `funcidx#3213*`, y <- `y*`}], `ACTIVE`_elemmode{tableidx#144, expr#4909}(`%`_tableidx{i#91655}(0), e_o))] -[visit_exp reftype#4023] -[visit_id reftype#4023] -[visit_exp `expr*#3307`] -[visit_id expr*#3307] -[visit_exp elemmode#3307] -[visit_id elemmode#3307] -[visit_exp (`REF`_reftype{`null?#1699`, heaptype#1765}(?(), `FUNC`_heaptype), [`REF.FUNC`_instr{funcidx#3213}(y)*{funcidx#3213 <- `funcidx#3213*`, y <- `y*`}], `ACTIVE`_elemmode{tableidx#144, expr#4909}(`%`_tableidx{i#91655}(0), e_o))] -[visit_exp `REF`_reftype{`null?#1699`, heaptype#1765}(?(), `FUNC`_heaptype)] -[visit_exp `null?#1699`] -[visit_id null?#1699] -[visit_exp heaptype#1765] -[visit_id heaptype#1765] +[check_dims] e_o y +dims \ = e_o, y +[visit_exp `ELEM`_elem(`REF`_reftype(?(), `FUNC`_heaptype), [`REF.FUNC`_instr(y)*{y <- `y*`}], `ACTIVE`_elemmode(`%`_tableidx(0), e_o))] +[visit_exp (`REF`_reftype(?(), `FUNC`_heaptype), [`REF.FUNC`_instr(y)*{y <- `y*`}], `ACTIVE`_elemmode(`%`_tableidx(0), e_o))] +[visit_exp `REF`_reftype(?(), `FUNC`_heaptype)] [visit_exp (?(), `FUNC`_heaptype)] [visit_exp ?()] [visit_exp `FUNC`_heaptype] [visit_exp ()] -[visit_exp [`REF.FUNC`_instr{funcidx#3213}(y)*{funcidx#3213 <- `funcidx#3213*`, y <- `y*`}]] -[visit_exp `REF.FUNC`_instr{funcidx#3213}(y)*{funcidx#3213 <- `funcidx#3213*`, y <- `y*`}] -[scope_enter funcidx#3213] +[visit_exp [`REF.FUNC`_instr(y)*{y <- `y*`}]] +[visit_exp `REF.FUNC`_instr(y)*{y <- `y*`}] [scope_enter y] -[visit_exp `REF.FUNC`_instr{funcidx#3213}(y)] -[visit_exp funcidx#3213] -[visit_id funcidx#3213] not free +[visit_exp `REF.FUNC`_instr(y)] [visit_exp (y)] [visit_exp y] [visit_id y] not free -[visit_id funcidx#3213] not free [visit_id y] not free [scope_exit y] -[scope_exit funcidx#3213] -[visit_exp `funcidx#3213*`] -[visit_id funcidx#3213*] no dims -[visit_id funcidx#3213*] [visit_exp `y*`] [visit_id y*] no dims [visit_id y*] -[visit_exp `ACTIVE`_elemmode{tableidx#144, expr#4909}(`%`_tableidx{i#91655}(0), e_o)] -[visit_exp tableidx#144] -[visit_id tableidx#144] -[visit_exp expr#4909] -[visit_id expr#4909] -[visit_exp (`%`_tableidx{i#91655}(0), e_o)] -[visit_exp `%`_tableidx{i#91655}(0)] -[visit_exp i#91655] -[visit_id i#91655] +[visit_exp `ACTIVE`_elemmode(`%`_tableidx(0), e_o)] +[visit_exp (`%`_tableidx(0), e_o)] +[visit_exp `%`_tableidx(0)] [visit_exp (0)] [visit_exp 0] [visit_exp e_o] [visit_id e_o] -[visit_exp `%`_u32{i#91592}(0)] -[visit_exp i#91592] -[visit_id i#91592] +[visit_exp `%`_u32(0)] [visit_exp (0)] [visit_exp 0] [visit_exp e_o] @@ -87609,43 +68983,27 @@ dims \ = e_o, elemmode#3307, expr#4909, expr*#3307, funcidx#3213, heaptype#1765 [visit_exp `y*`] [visit_id y*] not free [visit_id y*] no dims -[check_dims] elemmode#3319 expr*#3319 funcidx#3215 i#91678 reftype#4035 rt y -dims \ = elemmode#3319, expr*#3319, funcidx#3215, i#91678, reftype#4035, rt, y -[visit_exp `ELEM`_elem{reftype#4035, `expr*#3319`, elemmode#3319}(rt, [`REF.FUNC`_instr{funcidx#3215}(y)*{funcidx#3215 <- `funcidx#3215*`, y <- `y*`}], `PASSIVE`_elemmode)] -[visit_exp reftype#4035] -[visit_id reftype#4035] -[visit_exp `expr*#3319`] -[visit_id expr*#3319] -[visit_exp elemmode#3319] -[visit_id elemmode#3319] -[visit_exp (rt, [`REF.FUNC`_instr{funcidx#3215}(y)*{funcidx#3215 <- `funcidx#3215*`, y <- `y*`}], `PASSIVE`_elemmode)] +[check_dims] rt y +dims \ = rt, y +[visit_exp `ELEM`_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], `PASSIVE`_elemmode)] +[visit_exp (rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], `PASSIVE`_elemmode)] [visit_exp rt] [visit_id rt] -[visit_exp [`REF.FUNC`_instr{funcidx#3215}(y)*{funcidx#3215 <- `funcidx#3215*`, y <- `y*`}]] -[visit_exp `REF.FUNC`_instr{funcidx#3215}(y)*{funcidx#3215 <- `funcidx#3215*`, y <- `y*`}] -[scope_enter funcidx#3215] +[visit_exp [`REF.FUNC`_instr(y)*{y <- `y*`}]] +[visit_exp `REF.FUNC`_instr(y)*{y <- `y*`}] [scope_enter y] -[visit_exp `REF.FUNC`_instr{funcidx#3215}(y)] -[visit_exp funcidx#3215] -[visit_id funcidx#3215] not free +[visit_exp `REF.FUNC`_instr(y)] [visit_exp (y)] [visit_exp y] [visit_id y] not free -[visit_id funcidx#3215] not free [visit_id y] not free [scope_exit y] -[scope_exit funcidx#3215] -[visit_exp `funcidx#3215*`] -[visit_id funcidx#3215*] no dims -[visit_id funcidx#3215*] [visit_exp `y*`] [visit_id y*] no dims [visit_id y*] [visit_exp `PASSIVE`_elemmode] [visit_exp ()] -[visit_exp `%`_u32{i#91678}(1)] -[visit_exp i#91678] -[visit_id i#91678] +[visit_exp `%`_u32(1)] [visit_exp (1)] [visit_exp 1] [visit_exp rt] @@ -87659,51 +69017,31 @@ dims \ = elemmode#3319, expr*#3319, funcidx#3215, i#91678, reftype#4035, rt, y [visit_exp `y*`] [visit_id y*] not free [visit_id y*] no dims -[check_dims] e elemmode#3331 expr#4911 expr*#3331 funcidx#3217 i#91742 reftype#4047 rt tableidx#146 x y -dims \ = e, elemmode#3331, expr#4911, expr*#3331, funcidx#3217, i#91742, reftype#4047, rt, tableidx#146, x, y -[visit_exp `ELEM`_elem{reftype#4047, `expr*#3331`, elemmode#3331}(rt, [`REF.FUNC`_instr{funcidx#3217}(y)*{funcidx#3217 <- `funcidx#3217*`, y <- `y*`}], `ACTIVE`_elemmode{tableidx#146, expr#4911}(x, e))] -[visit_exp reftype#4047] -[visit_id reftype#4047] -[visit_exp `expr*#3331`] -[visit_id expr*#3331] -[visit_exp elemmode#3331] -[visit_id elemmode#3331] -[visit_exp (rt, [`REF.FUNC`_instr{funcidx#3217}(y)*{funcidx#3217 <- `funcidx#3217*`, y <- `y*`}], `ACTIVE`_elemmode{tableidx#146, expr#4911}(x, e))] +[check_dims] e rt x y +dims \ = e, rt, x, y +[visit_exp `ELEM`_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], `ACTIVE`_elemmode(x, e))] +[visit_exp (rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], `ACTIVE`_elemmode(x, e))] [visit_exp rt] [visit_id rt] -[visit_exp [`REF.FUNC`_instr{funcidx#3217}(y)*{funcidx#3217 <- `funcidx#3217*`, y <- `y*`}]] -[visit_exp `REF.FUNC`_instr{funcidx#3217}(y)*{funcidx#3217 <- `funcidx#3217*`, y <- `y*`}] -[scope_enter funcidx#3217] +[visit_exp [`REF.FUNC`_instr(y)*{y <- `y*`}]] +[visit_exp `REF.FUNC`_instr(y)*{y <- `y*`}] [scope_enter y] -[visit_exp `REF.FUNC`_instr{funcidx#3217}(y)] -[visit_exp funcidx#3217] -[visit_id funcidx#3217] not free +[visit_exp `REF.FUNC`_instr(y)] [visit_exp (y)] [visit_exp y] [visit_id y] not free -[visit_id funcidx#3217] not free [visit_id y] not free [scope_exit y] -[scope_exit funcidx#3217] -[visit_exp `funcidx#3217*`] -[visit_id funcidx#3217*] no dims -[visit_id funcidx#3217*] [visit_exp `y*`] [visit_id y*] no dims [visit_id y*] -[visit_exp `ACTIVE`_elemmode{tableidx#146, expr#4911}(x, e)] -[visit_exp tableidx#146] -[visit_id tableidx#146] -[visit_exp expr#4911] -[visit_id expr#4911] +[visit_exp `ACTIVE`_elemmode(x, e)] [visit_exp (x, e)] [visit_exp x] [visit_id x] [visit_exp e] [visit_id e] -[visit_exp `%`_u32{i#91742}(2)] -[visit_exp i#91742] -[visit_id i#91742] +[visit_exp `%`_u32(2)] [visit_exp (2)] [visit_exp 2] [visit_exp x] @@ -87721,43 +69059,27 @@ dims \ = e, elemmode#3331, expr#4911, expr*#3331, funcidx#3217, i#91742, reftyp [visit_exp `y*`] [visit_id y*] not free [visit_id y*] no dims -[check_dims] elemmode#3343 expr*#3343 funcidx#3219 i#91837 reftype#4059 rt y -dims \ = elemmode#3343, expr*#3343, funcidx#3219, i#91837, reftype#4059, rt, y -[visit_exp `ELEM`_elem{reftype#4059, `expr*#3343`, elemmode#3343}(rt, [`REF.FUNC`_instr{funcidx#3219}(y)*{funcidx#3219 <- `funcidx#3219*`, y <- `y*`}], `DECLARE`_elemmode)] -[visit_exp reftype#4059] -[visit_id reftype#4059] -[visit_exp `expr*#3343`] -[visit_id expr*#3343] -[visit_exp elemmode#3343] -[visit_id elemmode#3343] -[visit_exp (rt, [`REF.FUNC`_instr{funcidx#3219}(y)*{funcidx#3219 <- `funcidx#3219*`, y <- `y*`}], `DECLARE`_elemmode)] +[check_dims] rt y +dims \ = rt, y +[visit_exp `ELEM`_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], `DECLARE`_elemmode)] +[visit_exp (rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], `DECLARE`_elemmode)] [visit_exp rt] [visit_id rt] -[visit_exp [`REF.FUNC`_instr{funcidx#3219}(y)*{funcidx#3219 <- `funcidx#3219*`, y <- `y*`}]] -[visit_exp `REF.FUNC`_instr{funcidx#3219}(y)*{funcidx#3219 <- `funcidx#3219*`, y <- `y*`}] -[scope_enter funcidx#3219] +[visit_exp [`REF.FUNC`_instr(y)*{y <- `y*`}]] +[visit_exp `REF.FUNC`_instr(y)*{y <- `y*`}] [scope_enter y] -[visit_exp `REF.FUNC`_instr{funcidx#3219}(y)] -[visit_exp funcidx#3219] -[visit_id funcidx#3219] not free +[visit_exp `REF.FUNC`_instr(y)] [visit_exp (y)] [visit_exp y] [visit_id y] not free -[visit_id funcidx#3219] not free [visit_id y] not free [scope_exit y] -[scope_exit funcidx#3219] -[visit_exp `funcidx#3219*`] -[visit_id funcidx#3219*] no dims -[visit_id funcidx#3219*] [visit_exp `y*`] [visit_id y*] no dims [visit_id y*] [visit_exp `DECLARE`_elemmode] [visit_exp ()] -[visit_exp `%`_u32{i#91837}(3)] -[visit_exp i#91837] -[visit_id i#91837] +[visit_exp `%`_u32(3)] [visit_exp (3)] [visit_exp 3] [visit_exp rt] @@ -87771,21 +69093,11 @@ dims \ = elemmode#3343, expr*#3343, funcidx#3219, i#91837, reftype#4059, rt, y [visit_exp `y*`] [visit_id y*] not free [visit_id y*] no dims -[check_dims] e e_O elemmode#3355 expr#4913 expr*#3355 heaptype#1813 i#91901 i#91925 null?#1747 reftype#4071 tableidx#148 -dims \ = e, e_O, elemmode#3355, expr#4913, expr*#3355, heaptype#1813, i#91901, i#91925, null?#1747, reftype#4071, tableidx#148 -[visit_exp `ELEM`_elem{reftype#4071, `expr*#3355`, elemmode#3355}(`REF`_reftype{`null?#1747`, heaptype#1813}(?(`NULL`_null), `FUNC`_heaptype), e*{e <- `e*`}, `ACTIVE`_elemmode{tableidx#148, expr#4913}(`%`_tableidx{i#91925}(0), e_O))] -[visit_exp reftype#4071] -[visit_id reftype#4071] -[visit_exp `expr*#3355`] -[visit_id expr*#3355] -[visit_exp elemmode#3355] -[visit_id elemmode#3355] -[visit_exp (`REF`_reftype{`null?#1747`, heaptype#1813}(?(`NULL`_null), `FUNC`_heaptype), e*{e <- `e*`}, `ACTIVE`_elemmode{tableidx#148, expr#4913}(`%`_tableidx{i#91925}(0), e_O))] -[visit_exp `REF`_reftype{`null?#1747`, heaptype#1813}(?(`NULL`_null), `FUNC`_heaptype)] -[visit_exp `null?#1747`] -[visit_id null?#1747] -[visit_exp heaptype#1813] -[visit_id heaptype#1813] +[check_dims] e e_O +dims \ = e, e_O +[visit_exp `ELEM`_elem(`REF`_reftype(?(`NULL`_null), `FUNC`_heaptype), e*{e <- `e*`}, `ACTIVE`_elemmode(`%`_tableidx(0), e_O))] +[visit_exp (`REF`_reftype(?(`NULL`_null), `FUNC`_heaptype), e*{e <- `e*`}, `ACTIVE`_elemmode(`%`_tableidx(0), e_O))] +[visit_exp `REF`_reftype(?(`NULL`_null), `FUNC`_heaptype)] [visit_exp (?(`NULL`_null), `FUNC`_heaptype)] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] @@ -87801,22 +69113,14 @@ dims \ = e, e_O, elemmode#3355, expr#4913, expr*#3355, heaptype#1813, i#91901, [visit_exp `e*`] [visit_id e*] no dims [visit_id e*] -[visit_exp `ACTIVE`_elemmode{tableidx#148, expr#4913}(`%`_tableidx{i#91925}(0), e_O)] -[visit_exp tableidx#148] -[visit_id tableidx#148] -[visit_exp expr#4913] -[visit_id expr#4913] -[visit_exp (`%`_tableidx{i#91925}(0), e_O)] -[visit_exp `%`_tableidx{i#91925}(0)] -[visit_exp i#91925] -[visit_id i#91925] +[visit_exp `ACTIVE`_elemmode(`%`_tableidx(0), e_O)] +[visit_exp (`%`_tableidx(0), e_O)] +[visit_exp `%`_tableidx(0)] [visit_exp (0)] [visit_exp 0] [visit_exp e_O] [visit_id e_O] -[visit_exp `%`_u32{i#91901}(4)] -[visit_exp i#91901] -[visit_id i#91901] +[visit_exp `%`_u32(4)] [visit_exp (4)] [visit_exp 4] [visit_exp e_O] @@ -87830,15 +69134,9 @@ dims \ = e, e_O, elemmode#3355, expr#4913, expr*#3355, heaptype#1813, i#91901, [visit_exp `e*`] [visit_id e*] not free [visit_id e*] no dims -[check_dims] e elemmode#3367 expr*#3367 i#91948 reftype#4083 rt -dims \ = e, elemmode#3367, expr*#3367, i#91948, reftype#4083, rt -[visit_exp `ELEM`_elem{reftype#4083, `expr*#3367`, elemmode#3367}(rt, e*{e <- `e*`}, `PASSIVE`_elemmode)] -[visit_exp reftype#4083] -[visit_id reftype#4083] -[visit_exp `expr*#3367`] -[visit_id expr*#3367] -[visit_exp elemmode#3367] -[visit_id elemmode#3367] +[check_dims] e rt +dims \ = e, rt +[visit_exp `ELEM`_elem(rt, e*{e <- `e*`}, `PASSIVE`_elemmode)] [visit_exp (rt, e*{e <- `e*`}, `PASSIVE`_elemmode)] [visit_exp rt] [visit_id rt] @@ -87853,9 +69151,7 @@ dims \ = e, elemmode#3367, expr*#3367, i#91948, reftype#4083, rt [visit_id e*] [visit_exp `PASSIVE`_elemmode] [visit_exp ()] -[visit_exp `%`_u32{i#91948}(5)] -[visit_exp i#91948] -[visit_id i#91948] +[visit_exp `%`_u32(5)] [visit_exp (5)] [visit_exp 5] [visit_exp rt] @@ -87869,21 +69165,11 @@ dims \ = e, elemmode#3367, expr*#3367, i#91948, reftype#4083, rt [visit_exp `e*`] [visit_id e*] not free [visit_id e*] no dims -[check_dims] e e_O elemmode#3379 expr#4915 expr*#3379 heaptype#1837 i#91973 null?#1771 reftype#4095 tableidx#150 x -dims \ = e, e_O, elemmode#3379, expr#4915, expr*#3379, heaptype#1837, i#91973, null?#1771, reftype#4095, tableidx#150, x -[visit_exp `ELEM`_elem{reftype#4095, `expr*#3379`, elemmode#3379}(`REF`_reftype{`null?#1771`, heaptype#1837}(?(`NULL`_null), `FUNC`_heaptype), e*{e <- `e*`}, `ACTIVE`_elemmode{tableidx#150, expr#4915}(x, e_O))] -[visit_exp reftype#4095] -[visit_id reftype#4095] -[visit_exp `expr*#3379`] -[visit_id expr*#3379] -[visit_exp elemmode#3379] -[visit_id elemmode#3379] -[visit_exp (`REF`_reftype{`null?#1771`, heaptype#1837}(?(`NULL`_null), `FUNC`_heaptype), e*{e <- `e*`}, `ACTIVE`_elemmode{tableidx#150, expr#4915}(x, e_O))] -[visit_exp `REF`_reftype{`null?#1771`, heaptype#1837}(?(`NULL`_null), `FUNC`_heaptype)] -[visit_exp `null?#1771`] -[visit_id null?#1771] -[visit_exp heaptype#1837] -[visit_id heaptype#1837] +[check_dims] e e_O x +dims \ = e, e_O, x +[visit_exp `ELEM`_elem(`REF`_reftype(?(`NULL`_null), `FUNC`_heaptype), e*{e <- `e*`}, `ACTIVE`_elemmode(x, e_O))] +[visit_exp (`REF`_reftype(?(`NULL`_null), `FUNC`_heaptype), e*{e <- `e*`}, `ACTIVE`_elemmode(x, e_O))] +[visit_exp `REF`_reftype(?(`NULL`_null), `FUNC`_heaptype)] [visit_exp (?(`NULL`_null), `FUNC`_heaptype)] [visit_exp ?(`NULL`_null)] [visit_exp `NULL`_null] @@ -87899,19 +69185,13 @@ dims \ = e, e_O, elemmode#3379, expr#4915, expr*#3379, heaptype#1837, i#91973, [visit_exp `e*`] [visit_id e*] no dims [visit_id e*] -[visit_exp `ACTIVE`_elemmode{tableidx#150, expr#4915}(x, e_O)] -[visit_exp tableidx#150] -[visit_id tableidx#150] -[visit_exp expr#4915] -[visit_id expr#4915] +[visit_exp `ACTIVE`_elemmode(x, e_O)] [visit_exp (x, e_O)] [visit_exp x] [visit_id x] [visit_exp e_O] [visit_id e_O] -[visit_exp `%`_u32{i#91973}(6)] -[visit_exp i#91973] -[visit_id i#91973] +[visit_exp `%`_u32(6)] [visit_exp (6)] [visit_exp 6] [visit_exp x] @@ -87927,15 +69207,9 @@ dims \ = e, e_O, elemmode#3379, expr#4915, expr*#3379, heaptype#1837, i#91973, [visit_exp `e*`] [visit_id e*] not free [visit_id e*] no dims -[check_dims] e elemmode#3391 expr*#3391 i#92029 reftype#4107 rt -dims \ = e, elemmode#3391, expr*#3391, i#92029, reftype#4107, rt -[visit_exp `ELEM`_elem{reftype#4107, `expr*#3391`, elemmode#3391}(rt, e*{e <- `e*`}, `DECLARE`_elemmode)] -[visit_exp reftype#4107] -[visit_id reftype#4107] -[visit_exp `expr*#3391`] -[visit_id expr*#3391] -[visit_exp elemmode#3391] -[visit_id elemmode#3391] +[check_dims] e rt +dims \ = e, rt +[visit_exp `ELEM`_elem(rt, e*{e <- `e*`}, `DECLARE`_elemmode)] [visit_exp (rt, e*{e <- `e*`}, `DECLARE`_elemmode)] [visit_exp rt] [visit_id rt] @@ -87950,9 +69224,7 @@ dims \ = e, elemmode#3391, expr*#3391, i#92029, reftype#4107, rt [visit_id e*] [visit_exp `DECLARE`_elemmode] [visit_exp ()] -[visit_exp `%`_u32{i#92029}(7)] -[visit_exp i#92029] -[visit_id i#92029] +[visit_exp `%`_u32(7)] [visit_exp (7)] [visit_exp 7] [visit_exp rt] @@ -87992,26 +69264,16 @@ dims \ = elem [check_dims] ps' = [check_dims] -[check_dims] i#92056 n t valtype#1033 -dims \ = i#92056, n, t, valtype#1033 -[visit_exp `LOCAL`_local{valtype#1033}(t)^n{valtype#1033 <- `valtype#1033*`}] -[scope_enter valtype#1033] -[visit_exp `LOCAL`_local{valtype#1033}(t)] -[visit_exp valtype#1033] -[visit_id valtype#1033] not free +[check_dims] n t +dims \ = n, t +[visit_exp `LOCAL`_local(t)^n{}] +[visit_exp `LOCAL`_local(t)] [visit_exp (t)] [visit_exp t] [visit_id t] -[visit_id valtype#1033] not free -[scope_exit valtype#1033] [visit_exp n] [visit_id n] -[visit_exp `valtype#1033*`] -[visit_id valtype#1033*] no dims -[visit_id valtype#1033*] -[visit_exp `%`_u32{i#92056}(n)] -[visit_exp i#92056] -[visit_id i#92056] +[visit_exp `%`_u32(n)] [visit_exp (n)] [visit_exp n] [visit_id n] not free @@ -88086,13 +69348,11 @@ dims \ = e, loc [visit_exp 32] ps' = [check_dims] -[check_dims] code i#92081 len -dims \ = code, i#92081, len +[check_dims] code len +dims \ = code, len [visit_exp code] [visit_id code] -[visit_exp `%`_u32{i#92081}(len)] -[visit_exp i#92081] -[visit_id i#92081] +[visit_exp `%`_u32(len)] [visit_exp (len)] [visit_exp len] [visit_id len] @@ -88127,14 +69387,10 @@ dims \ = code [visit_exp 10] ps' = [check_dims] -[check_dims] b byte*#2217 datamode#2181 e expr#4917 i#92106 i#92154 memidx#272 -dims \ = b, byte*#2217, datamode#2181, e, expr#4917, i#92106, i#92154, memidx#272 -[visit_exp `DATA`_data{`byte*#2217`, datamode#2181}(b*{b <- `b*`}, `ACTIVE`_datamode{memidx#272, expr#4917}(`%`_memidx{i#92154}(0), e))] -[visit_exp `byte*#2217`] -[visit_id byte*#2217] -[visit_exp datamode#2181] -[visit_id datamode#2181] -[visit_exp (b*{b <- `b*`}, `ACTIVE`_datamode{memidx#272, expr#4917}(`%`_memidx{i#92154}(0), e))] +[check_dims] b e +dims \ = b, e +[visit_exp `DATA`_data(b*{b <- `b*`}, `ACTIVE`_datamode(`%`_memidx(0), e))] +[visit_exp (b*{b <- `b*`}, `ACTIVE`_datamode(`%`_memidx(0), e))] [visit_exp b*{b <- `b*`}] [scope_enter b] [visit_exp b] @@ -88144,22 +69400,14 @@ dims \ = b, byte*#2217, datamode#2181, e, expr#4917, i#92106, i#92154, memidx#2 [visit_exp `b*`] [visit_id b*] no dims [visit_id b*] -[visit_exp `ACTIVE`_datamode{memidx#272, expr#4917}(`%`_memidx{i#92154}(0), e)] -[visit_exp memidx#272] -[visit_id memidx#272] -[visit_exp expr#4917] -[visit_id expr#4917] -[visit_exp (`%`_memidx{i#92154}(0), e)] -[visit_exp `%`_memidx{i#92154}(0)] -[visit_exp i#92154] -[visit_id i#92154] +[visit_exp `ACTIVE`_datamode(`%`_memidx(0), e)] +[visit_exp (`%`_memidx(0), e)] +[visit_exp `%`_memidx(0)] [visit_exp (0)] [visit_exp 0] [visit_exp e] [visit_id e] -[visit_exp `%`_u32{i#92106}(0)] -[visit_exp i#92106] -[visit_id i#92106] +[visit_exp `%`_u32(0)] [visit_exp (0)] [visit_exp 0] [visit_exp e] @@ -88173,13 +69421,9 @@ dims \ = b, byte*#2217, datamode#2181, e, expr#4917, i#92106, i#92154, memidx#2 [visit_exp `b*`] [visit_id b*] not free [visit_id b*] no dims -[check_dims] b byte*#2229 datamode#2193 i#92177 -dims \ = b, byte*#2229, datamode#2193, i#92177 -[visit_exp `DATA`_data{`byte*#2229`, datamode#2193}(b*{b <- `b*`}, `PASSIVE`_datamode)] -[visit_exp `byte*#2229`] -[visit_id byte*#2229] -[visit_exp datamode#2193] -[visit_id datamode#2193] +[check_dims] b +dims \ = b +[visit_exp `DATA`_data(b*{b <- `b*`}, `PASSIVE`_datamode)] [visit_exp (b*{b <- `b*`}, `PASSIVE`_datamode)] [visit_exp b*{b <- `b*`}] [scope_enter b] @@ -88192,9 +69436,7 @@ dims \ = b, byte*#2229, datamode#2193, i#92177 [visit_id b*] [visit_exp `PASSIVE`_datamode] [visit_exp ()] -[visit_exp `%`_u32{i#92177}(1)] -[visit_exp i#92177] -[visit_id i#92177] +[visit_exp `%`_u32(1)] [visit_exp (1)] [visit_exp 1] [visit_exp b*{b <- `b*`}] @@ -88206,14 +69448,10 @@ dims \ = b, byte*#2229, datamode#2193, i#92177 [visit_exp `b*`] [visit_id b*] not free [visit_id b*] no dims -[check_dims] b byte*#2241 datamode#2205 e expr#4919 i#92226 memidx#274 x -dims \ = b, byte*#2241, datamode#2205, e, expr#4919, i#92226, memidx#274, x -[visit_exp `DATA`_data{`byte*#2241`, datamode#2205}(b*{b <- `b*`}, `ACTIVE`_datamode{memidx#274, expr#4919}(x, e))] -[visit_exp `byte*#2241`] -[visit_id byte*#2241] -[visit_exp datamode#2205] -[visit_id datamode#2205] -[visit_exp (b*{b <- `b*`}, `ACTIVE`_datamode{memidx#274, expr#4919}(x, e))] +[check_dims] b e x +dims \ = b, e, x +[visit_exp `DATA`_data(b*{b <- `b*`}, `ACTIVE`_datamode(x, e))] +[visit_exp (b*{b <- `b*`}, `ACTIVE`_datamode(x, e))] [visit_exp b*{b <- `b*`}] [scope_enter b] [visit_exp b] @@ -88223,19 +69461,13 @@ dims \ = b, byte*#2241, datamode#2205, e, expr#4919, i#92226, memidx#274, x [visit_exp `b*`] [visit_id b*] no dims [visit_id b*] -[visit_exp `ACTIVE`_datamode{memidx#274, expr#4919}(x, e)] -[visit_exp memidx#274] -[visit_id memidx#274] -[visit_exp expr#4919] -[visit_id expr#4919] +[visit_exp `ACTIVE`_datamode(x, e)] [visit_exp (x, e)] [visit_exp x] [visit_id x] [visit_exp e] [visit_id e] -[visit_exp `%`_u32{i#92226}(2)] -[visit_exp i#92226] -[visit_id i#92226] +[visit_exp `%`_u32(2)] [visit_exp (2)] [visit_exp 2] [visit_exp x] @@ -88276,18 +69508,14 @@ dims \ = data [visit_exp 11] ps' = [check_dims] -[check_dims] i#92308 i#92330 n -dims \ = i#92308, i#92330, n -[visit_exp [`%`_u32{i#92330}(n)]] -[visit_exp `%`_u32{i#92330}(n)] -[visit_exp i#92330] -[visit_id i#92330] +[check_dims] n +dims \ = n +[visit_exp [`%`_u32(n)]] +[visit_exp `%`_u32(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `%`_u32{i#92308}(n)] -[visit_exp i#92308] -[visit_id i#92308] +[visit_exp `%`_u32(n)] [visit_exp (n)] [visit_exp n] [visit_id n] not free @@ -88304,11 +69532,9 @@ dims \ = nopt [visit_exp 12] ps' = [check_dims] -[check_dims] jt tagtype#336 -dims \ = jt, tagtype#336 -[visit_exp `TAG`_tag{tagtype#336}(jt)] -[visit_exp tagtype#336] -[visit_id tagtype#336] +[check_dims] jt +dims \ = jt +[visit_exp `TAG`_tag(jt)] [visit_exp (jt)] [visit_exp jt] [visit_id jt] @@ -88355,31 +69581,9 @@ dims \ = [visit_exp ()] ps' = [check_dims] -[check_dims] data data*#143 elem elem*#167 export export*#143 expr expr#5253 func func*#143 global global*#167 i#92509 import import*#143 local local*#1601 mem mem*#167 n start start?#143 table table*#167 tag tag*#143 type type*#143 typeidx typeidx#2117 -dims \ = data, data*#143, elem, elem*#167, export, export*#143, expr, expr#5253, func, func*#143, global, global*#167, i#92509, import, import*#143, local, local*#1601, mem, mem*#167, n, start, start?#143, table, table*#167, tag, tag*#143, type, type*#143, typeidx, typeidx#2117 -[visit_exp `MODULE`_module{`type*#143`, `import*#143`, `tag*#143`, `global*#167`, `mem*#167`, `table*#167`, `func*#143`, `data*#143`, `elem*#167`, `start?#143`, `export*#143`}(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*`})] -[visit_exp `type*#143`] -[visit_id type*#143] -[visit_exp `import*#143`] -[visit_id import*#143] -[visit_exp `tag*#143`] -[visit_id tag*#143] -[visit_exp `global*#167`] -[visit_id global*#167] -[visit_exp `mem*#167`] -[visit_id mem*#167] -[visit_exp `table*#167`] -[visit_id table*#167] -[visit_exp `func*#143`] -[visit_id func*#143] -[visit_exp `data*#143`] -[visit_id data*#143] -[visit_exp `elem*#167`] -[visit_id elem*#167] -[visit_exp `start?#143`] -[visit_id start?#143] -[visit_exp `export*#143`] -[visit_id export*#143] +[check_dims] data elem export expr func global import local mem n start table tag type typeidx +dims \ = data, elem, export, expr, func, global, import, local, mem, n, start, table, tag, type, typeidx +[visit_exp `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*`})] [visit_exp (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*`})] [visit_exp type*{type <- `type*`}] [scope_enter type] @@ -88570,22 +69774,14 @@ dims \ = data, data*#143, elem, elem*#167, export, export*#143, expr, expr#5253 [visit_exp `elem*`] [visit_id elem*] not free [visit_id elem*] no dims -[visit_exp `%`_u32{i#92509}(n)?{i#92509 <- `i#92509?`, n <- `n?`}] -[scope_enter i#92509] +[visit_exp `%`_u32(n)?{n <- `n?`}] [scope_enter n] -[visit_exp `%`_u32{i#92509}(n)] -[visit_exp i#92509] -[visit_id i#92509] not free +[visit_exp `%`_u32(n)] [visit_exp (n)] [visit_exp n] [visit_id n] not free -[visit_id i#92509] not free [visit_id n] not free [scope_exit n] -[scope_exit i#92509] -[visit_exp `i#92509?`] -[visit_id i#92509?] no dims -[visit_id i#92509?] [visit_exp `n?`] [visit_id n?] no dims [visit_id n?] @@ -88668,22 +69864,13 @@ dims \ = data, data*#143, elem, elem*#167, export, export*#143, expr, expr#5253 [visit_id func*] no dims [visit_exp []] [scope_enter expr] -[scope_enter expr#5253] [scope_enter func] [scope_enter local*] -[scope_enter local*#1601] [scope_enter typeidx] -[scope_enter typeidx#2117] -[visit_exp (func = `FUNC`_func{typeidx#2117, `local*#1601`, expr#5253}(typeidx, local*{local <- `local*`}, expr))] +[visit_exp (func = `FUNC`_func(typeidx, local*{local <- `local*`}, expr))] [visit_exp func] [visit_id func] not free -[visit_exp `FUNC`_func{typeidx#2117, `local*#1601`, expr#5253}(typeidx, local*{local <- `local*`}, expr)] -[visit_exp typeidx#2117] -[visit_id typeidx#2117] not free -[visit_exp `local*#1601`] -[visit_id local*#1601] not free -[visit_exp expr#5253] -[visit_id expr#5253] not free +[visit_exp `FUNC`_func(typeidx, local*{local <- `local*`}, expr)] [visit_exp (typeidx, local*{local <- `local*`}, expr)] [visit_exp typeidx] [visit_id typeidx] not free @@ -88699,58 +69886,39 @@ dims \ = data, data*#143, elem, elem*#167, export, export*#143, expr, expr#5253 [visit_exp expr] [visit_id expr] not free [visit_id expr] not free -[visit_id expr#5253] not free [visit_id func] not free [visit_id local*] not free [visit_id local*] no dims -[visit_id local*#1601] not free [visit_id typeidx] not free -[visit_id typeidx#2117] not free -[scope_exit typeidx#2117] [scope_exit typeidx] -[scope_exit local*#1601] [scope_exit local*] [scope_exit func] -[scope_exit expr#5253] [scope_exit expr] [visit_exp `expr*`] [visit_id expr*] not free [visit_id expr*] no dims -[visit_exp `expr#5253*`] -[visit_id expr#5253*] no dims -[visit_id expr#5253*] [visit_exp `func*`] [visit_id func*] not free [visit_id func*] no dims [visit_exp `local**`] [visit_id local**] not free [visit_id local**] no dims -[visit_exp `local*#1601*`] -[visit_id local*#1601*] no dims -[visit_id local*#1601*] [visit_exp `typeidx*`] [visit_id typeidx*] not free [visit_id typeidx*] no dims -[visit_exp `typeidx#2117*`] -[visit_id typeidx#2117*] no dims -[visit_id typeidx#2117*] ps' = [check_dims] -[check_dims] i#92557 -dims \ = , i#92557 -[visit_exp `%`_char{i#92557}(``)] -[visit_exp i#92557] -[visit_id i#92557] +[check_dims] +dims \ = +[visit_exp `%`_char(``)] [visit_exp (``)] [visit_exp ``] [visit_id ] [visit_exp ``] [visit_id ] not free -[check_dims] i#92565 -dims \ = , i#92565 -[visit_exp `%`_char{i#92565}(``)] -[visit_exp i#92565] -[visit_id i#92565] +[check_dims] +dims \ = +[visit_exp `%`_char(``)] [visit_exp (``)] [visit_exp ``] [visit_id ] @@ -89013,8 +70181,8 @@ dims \ = [visit_id ] not free ps' = [check_dims] -[check_dims] c i#92597 i#92599 -dims \ = , c, i#92597, i#92599 +[check_dims] c +dims \ = , c [visit_exp (``, ()).1] [visit_exp (``, ())] [visit_exp ``] @@ -89024,22 +70192,18 @@ dims \ = , c, i#92597, i#92599 [visit_id ] not free [visit_exp c] [visit_id c] -[visit_exp ((c!`%`_char{i#92597}.0 =/= 10) /\ (c!`%`_char{i#92599}.0 =/= 13))] -[visit_exp (c!`%`_char{i#92597}.0 =/= 10)] -[visit_exp c!`%`_char{i#92597}.0] -[visit_exp c!`%`_char{i#92597}] +[visit_exp ((c!`%`_char.0 =/= 10) /\ (c!`%`_char.0 =/= 13))] +[visit_exp (c!`%`_char.0 =/= 10)] +[visit_exp c!`%`_char.0] +[visit_exp c!`%`_char] [visit_exp c] [visit_id c] not free -[visit_exp i#92597] -[visit_id i#92597] [visit_exp 10] -[visit_exp (c!`%`_char{i#92599}.0 =/= 13)] -[visit_exp c!`%`_char{i#92599}.0] -[visit_exp c!`%`_char{i#92599}] +[visit_exp (c!`%`_char.0 =/= 13)] +[visit_exp c!`%`_char.0] +[visit_exp c!`%`_char] [visit_exp c] [visit_id c] not free -[visit_exp i#92599] -[visit_id i#92599] [visit_exp 13] ps' = [check_dims] @@ -89054,8 +70218,8 @@ dims \ = [visit_id ] not free ps' = [check_dims] -[check_dims] c i#92625 i#92635 -dims \ = , c, i#92625, i#92635 +[check_dims] c +dims \ = , c [visit_exp (``, ()).1] [visit_exp (``, ())] [visit_exp ``] @@ -89065,25 +70229,21 @@ dims \ = , c, i#92625, i#92635 [visit_id ] not free [visit_exp c] [visit_id c] -[visit_exp ((c =/= `%`_char{i#92625}(59)) /\ (c =/= `%`_char{i#92635}(40)))] -[visit_exp (c =/= `%`_char{i#92625}(59))] +[visit_exp ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40)))] +[visit_exp (c =/= `%`_char(59))] [visit_exp c] [visit_id c] not free -[visit_exp `%`_char{i#92625}(59)] -[visit_exp i#92625] -[visit_id i#92625] +[visit_exp `%`_char(59)] [visit_exp (59)] [visit_exp 59] -[visit_exp (c =/= `%`_char{i#92635}(40))] +[visit_exp (c =/= `%`_char(40))] [visit_exp c] [visit_id c] not free -[visit_exp `%`_char{i#92635}(40)] -[visit_exp i#92635] -[visit_id i#92635] +[visit_exp `%`_char(40)] [visit_exp (40)] [visit_exp 40] -[check_dims] c i#92657 i#92667 -dims \ = , c, i#92657, i#92667 +[check_dims] c +dims \ = , c [visit_exp (``, ()).1] [visit_exp (``, ())] [visit_exp ``] @@ -89093,25 +70253,21 @@ dims \ = , c, i#92657, i#92667 [visit_id ] not free [visit_exp c] [visit_id c] -[visit_exp ((c =/= `%`_char{i#92657}(59)) /\ (c =/= `%`_char{i#92667}(41)))] -[visit_exp (c =/= `%`_char{i#92657}(59))] +[visit_exp ((c =/= `%`_char(59)) /\ (c =/= `%`_char(41)))] +[visit_exp (c =/= `%`_char(59))] [visit_exp c] [visit_id c] not free -[visit_exp `%`_char{i#92657}(59)] -[visit_exp i#92657] -[visit_id i#92657] +[visit_exp `%`_char(59)] [visit_exp (59)] [visit_exp 59] -[visit_exp (c =/= `%`_char{i#92667}(41))] +[visit_exp (c =/= `%`_char(41))] [visit_exp c] [visit_id c] not free -[visit_exp `%`_char{i#92667}(41)] -[visit_exp i#92667] -[visit_id i#92667] +[visit_exp `%`_char(41)] [visit_exp (41)] [visit_exp 41] -[check_dims] c i#92689 i#92699 -dims \ = , c, i#92689, i#92699 +[check_dims] c +dims \ = , c [visit_exp (``, ()).1] [visit_exp (``, ())] [visit_exp ``] @@ -89121,21 +70277,17 @@ dims \ = , c, i#92689, i#92699 [visit_id ] not free [visit_exp c] [visit_id c] -[visit_exp ((c =/= `%`_char{i#92689}(59)) /\ (c =/= `%`_char{i#92699}(40)))] -[visit_exp (c =/= `%`_char{i#92689}(59))] +[visit_exp ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40)))] +[visit_exp (c =/= `%`_char(59))] [visit_exp c] [visit_id c] not free -[visit_exp `%`_char{i#92689}(59)] -[visit_exp i#92689] -[visit_id i#92689] +[visit_exp `%`_char(59)] [visit_exp (59)] [visit_exp 59] -[visit_exp (c =/= `%`_char{i#92699}(40))] +[visit_exp (c =/= `%`_char(40))] [visit_exp c] [visit_id c] not free -[visit_exp `%`_char{i#92699}(40)] -[visit_exp i#92699] -[visit_id i#92699] +[visit_exp `%`_char(40)] [visit_exp (40)] [visit_exp 40] [check_dims] @@ -89259,11 +70411,9 @@ dims \ = h, n [visit_id h] not free ps' = (N : N) [check_dims] N -[check_dims] N i#92715 n -dims \ N = i#92715, n -[visit_exp `%`_uN{i#92715}(n)] -[visit_exp i#92715] -[visit_id i#92715] +[check_dims] N n +dims \ N = n +[visit_exp `%`_uN(n)] [visit_exp (n)] [visit_exp n] [visit_id n] @@ -89277,11 +70427,9 @@ dims \ N = i#92715, n [visit_exp N] [visit_id N] not free [visit_id N] no dims -[check_dims] N i#92723 n -dims \ N = i#92723, n -[visit_exp `%`_uN{i#92723}(n)] -[visit_exp i#92723] -[visit_id i#92723] +[check_dims] N n +dims \ N = n +[visit_exp `%`_uN(n)] [visit_exp (n)] [visit_exp n] [visit_id n] @@ -89300,11 +70448,9 @@ dims \ N = i#92723, n [visit_id N] not free ps' = (N : N) [check_dims] N -[check_dims] N i#92731 i#92739 n s -dims \ N = i#92731, i#92739, n, s -[visit_exp `%`_sN{i#92739}((s * (n : nat <:> int)))] -[visit_exp i#92739] -[visit_id i#92739] +[check_dims] N n s +dims \ N = n, s +[visit_exp `%`_sN((s * (n : nat <:> int)))] [visit_exp ((s * (n : nat <:> int)))] [visit_exp (s * (n : nat <:> int))] [visit_exp s] @@ -89314,9 +70460,7 @@ dims \ N = i#92731, i#92739, n, s [visit_id n] [visit_exp s] [visit_id s] not free -[visit_exp `%`_uN{i#92731}(n)] -[visit_exp i#92731] -[visit_id i#92731] +[visit_exp `%`_uN(n)] [visit_exp (n)] [visit_exp n] [visit_id n] not free @@ -89366,39 +70510,31 @@ dims \ N = i#92731, i#92739, n, s [visit_id N] not free ps' = (N : N) [check_dims] N -[check_dims] N i#92747 i#92755 n -dims \ N = i#92747, i#92755, n -[visit_exp `%`_iN{i#92755}(n)] -[visit_exp i#92755] -[visit_id i#92755] +[check_dims] N n +dims \ N = n +[visit_exp `%`_iN(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `%`_uN{i#92747}(n)] -[visit_exp i#92747] -[visit_id i#92747] +[visit_exp `%`_uN(n)] [visit_exp (n)] [visit_exp n] [visit_id n] not free [visit_exp N] [visit_id N] not free [visit_id N] no dims -[check_dims] N i i#92769 i#92771 -dims \ N = i, i#92769, i#92771 -[visit_exp `%`_iN{i#92771}($inv_signed_(N, i!`%`_sN{i#92769}.0))] -[visit_exp i#92771] -[visit_id i#92771] -[visit_exp ($inv_signed_(N, i!`%`_sN{i#92769}.0))] -[visit_exp $inv_signed_(N, i!`%`_sN{i#92769}.0)] +[check_dims] N i +dims \ N = i +[visit_exp `%`_iN($inv_signed_(N, i!`%`_sN.0))] +[visit_exp ($inv_signed_(N, i!`%`_sN.0))] +[visit_exp $inv_signed_(N, i!`%`_sN.0)] [visit_exp N] [visit_id N] not free [visit_id N] no dims -[visit_exp i!`%`_sN{i#92769}.0] -[visit_exp i!`%`_sN{i#92769}] +[visit_exp i!`%`_sN.0] +[visit_exp i!`%`_sN] [visit_exp i] [visit_id i] -[visit_exp i#92769] -[visit_id i#92769] [visit_exp i] [visit_id i] not free [visit_exp N] @@ -89610,21 +70746,17 @@ dims \ N = q dims \ N = [visit_exp `INF`_fNmag] [visit_exp ()] -[check_dims] N m#7 -dims \ N = m#7 -[visit_exp `NAN`_fNmag{m#7}($canon_(N))] -[visit_exp m#7] -[visit_id m#7] +[check_dims] N +dims \ N = +[visit_exp `NAN`_fNmag($canon_(N))] [visit_exp ($canon_(N))] [visit_exp $canon_(N)] [visit_exp N] [visit_id N] not free [visit_id N] no dims -[check_dims] N m#9 n -dims \ N = m#9, n -[visit_exp `NAN`_fNmag{m#9}(n)] -[visit_exp m#9] -[visit_id m#9] +[check_dims] N n +dims \ N = n +[visit_exp `NAN`_fNmag(n)] [visit_exp (n)] [visit_exp n] [visit_id n] @@ -89772,94 +70904,72 @@ dims \ = [visit_exp 64] ps' = [check_dims] -[check_dims] c i#93014 i#93016 i#93024 i#93034 -dims \ = c, i#93014, i#93016, i#93024, i#93034 +[check_dims] c +dims \ = c [visit_exp c] [visit_id c] [visit_exp c] [visit_id c] not free -[visit_exp ((((c!`%`_char{i#93014}.0 >= 32) /\ (c!`%`_char{i#93016}.0 =/= 127)) /\ (c =/= `%`_char{i#93024}(34))) /\ (c =/= `%`_char{i#93034}(92)))] -[visit_exp (((c!`%`_char{i#93014}.0 >= 32) /\ (c!`%`_char{i#93016}.0 =/= 127)) /\ (c =/= `%`_char{i#93024}(34)))] -[visit_exp ((c!`%`_char{i#93014}.0 >= 32) /\ (c!`%`_char{i#93016}.0 =/= 127))] -[visit_exp (c!`%`_char{i#93014}.0 >= 32)] -[visit_exp c!`%`_char{i#93014}.0] -[visit_exp c!`%`_char{i#93014}] +[visit_exp ((((c!`%`_char.0 >= 32) /\ (c!`%`_char.0 =/= 127)) /\ (c =/= `%`_char(34))) /\ (c =/= `%`_char(92)))] +[visit_exp (((c!`%`_char.0 >= 32) /\ (c!`%`_char.0 =/= 127)) /\ (c =/= `%`_char(34)))] +[visit_exp ((c!`%`_char.0 >= 32) /\ (c!`%`_char.0 =/= 127))] +[visit_exp (c!`%`_char.0 >= 32)] +[visit_exp c!`%`_char.0] +[visit_exp c!`%`_char] [visit_exp c] [visit_id c] not free -[visit_exp i#93014] -[visit_id i#93014] [visit_exp 32] -[visit_exp (c!`%`_char{i#93016}.0 =/= 127)] -[visit_exp c!`%`_char{i#93016}.0] -[visit_exp c!`%`_char{i#93016}] +[visit_exp (c!`%`_char.0 =/= 127)] +[visit_exp c!`%`_char.0] +[visit_exp c!`%`_char] [visit_exp c] [visit_id c] not free -[visit_exp i#93016] -[visit_id i#93016] [visit_exp 127] -[visit_exp (c =/= `%`_char{i#93024}(34))] +[visit_exp (c =/= `%`_char(34))] [visit_exp c] [visit_id c] not free -[visit_exp `%`_char{i#93024}(34)] -[visit_exp i#93024] -[visit_id i#93024] +[visit_exp `%`_char(34)] [visit_exp (34)] [visit_exp 34] -[visit_exp (c =/= `%`_char{i#93034}(92))] +[visit_exp (c =/= `%`_char(92))] [visit_exp c] [visit_id c] not free -[visit_exp `%`_char{i#93034}(92)] -[visit_exp i#93034] -[visit_id i#93034] +[visit_exp `%`_char(92)] [visit_exp (92)] [visit_exp 92] -[check_dims] i#93044 -dims \ = i#93044 -[visit_exp `%`_char{i#93044}(9)] -[visit_exp i#93044] -[visit_id i#93044] +[check_dims] +dims \ = +[visit_exp `%`_char(9)] [visit_exp (9)] [visit_exp 9] -[check_dims] i#93052 -dims \ = i#93052 -[visit_exp `%`_char{i#93052}(10)] -[visit_exp i#93052] -[visit_id i#93052] +[check_dims] +dims \ = +[visit_exp `%`_char(10)] [visit_exp (10)] [visit_exp 10] -[check_dims] i#93060 -dims \ = i#93060 -[visit_exp `%`_char{i#93060}(13)] -[visit_exp i#93060] -[visit_id i#93060] +[check_dims] +dims \ = +[visit_exp `%`_char(13)] [visit_exp (13)] [visit_exp 13] -[check_dims] i#93068 -dims \ = i#93068 -[visit_exp `%`_char{i#93068}(34)] -[visit_exp i#93068] -[visit_id i#93068] +[check_dims] +dims \ = +[visit_exp `%`_char(34)] [visit_exp (34)] [visit_exp 34] -[check_dims] i#93076 -dims \ = i#93076 -[visit_exp `%`_char{i#93076}(39)] -[visit_exp i#93076] -[visit_id i#93076] +[check_dims] +dims \ = +[visit_exp `%`_char(39)] [visit_exp (39)] [visit_exp 39] -[check_dims] i#93084 -dims \ = i#93084 -[visit_exp `%`_char{i#93084}(92)] -[visit_exp i#93084] -[visit_id i#93084] +[check_dims] +dims \ = +[visit_exp `%`_char(92)] [visit_exp (92)] [visit_exp 92] -[check_dims] i#93092 n -dims \ = i#93092, n -[visit_exp `%`_char{i#93092}(n)] -[visit_exp i#93092] -[visit_id i#93092] +[check_dims] n +dims \ = n +[visit_exp `%`_char(n)] [visit_exp (n)] [visit_exp n] [visit_id n] @@ -89889,12 +70999,10 @@ dims \ = c [visit_id c] [visit_exp c] [visit_id c] not free -[check_dims] h_1 h_2 i#93132 -dims \ = h_1, h_2, i#93132 -[visit_exp [`%`_byte{i#93132}(((16 * h_1) + h_2))]] -[visit_exp `%`_byte{i#93132}(((16 * h_1) + h_2))] -[visit_exp i#93132] -[visit_id i#93132] +[check_dims] h_1 h_2 +dims \ = h_1, h_2 +[visit_exp [`%`_byte(((16 * h_1) + h_2))]] +[visit_exp `%`_byte(((16 * h_1) + h_2))] [visit_exp (((16 * h_1) + h_2))] [visit_exp ((16 * h_1) + h_2)] [visit_exp (16 * h_1)] @@ -90005,11 +71113,9 @@ dims \ = el [visit_exp 32] ps' = [check_dims] -[check_dims] b c char*#207 -dims \ = b, c, char*#207 -[visit_exp `%`_name{`char*#207`}(c*{c <- `c*`})] -[visit_exp `char*#207`] -[visit_id char*#207] +[check_dims] b c +dims \ = b, c +[visit_exp `%`_name(c*{c <- `c*`})] [visit_exp (c*{c <- `c*`})] [visit_exp c*{c <- `c*`}] [scope_enter c] @@ -90051,261 +71157,209 @@ dims \ = b, c, char*#207 [visit_id c*] no dims ps' = [check_dims] -[check_dims] i#93304 -dims \ = , i#93304 -[visit_exp `%`_char{i#93304}(``)] -[visit_exp i#93304] -[visit_id i#93304] +[check_dims] +dims \ = +[visit_exp `%`_char(``)] [visit_exp (``)] [visit_exp ``] [visit_id ] [visit_exp ``] [visit_id ] not free -[check_dims] i#93312 -dims \ = , i#93312 -[visit_exp `%`_char{i#93312}(``)] -[visit_exp i#93312] -[visit_id i#93312] +[check_dims] +dims \ = +[visit_exp `%`_char(``)] [visit_exp (``)] [visit_exp ``] [visit_id ] [visit_exp ``] [visit_id ] not free -[check_dims] i#93320 -dims \ = , i#93320 -[visit_exp `%`_char{i#93320}(``)] -[visit_exp i#93320] -[visit_id i#93320] +[check_dims] +dims \ = +[visit_exp `%`_char(``)] [visit_exp (``)] [visit_exp ``] [visit_id ] [visit_exp ``] [visit_id ] not free -[check_dims] i#93328 -dims \ = , i#93328 -[visit_exp `%`_char{i#93328}(``)] -[visit_exp i#93328] -[visit_id i#93328] +[check_dims] +dims \ = +[visit_exp `%`_char(``)] [visit_exp (``)] [visit_exp ``] [visit_id ] [visit_exp ``] [visit_id ] not free -[check_dims] i#93336 -dims \ = , i#93336 -[visit_exp `%`_char{i#93336}(``)] -[visit_exp i#93336] -[visit_id i#93336] +[check_dims] +dims \ = +[visit_exp `%`_char(``)] [visit_exp (``)] [visit_exp ``] [visit_id ] [visit_exp ``] [visit_id ] not free -[check_dims] i#93344 -dims \ = , i#93344 -[visit_exp `%`_char{i#93344}(``)] -[visit_exp i#93344] -[visit_id i#93344] +[check_dims] +dims \ = +[visit_exp `%`_char(``)] [visit_exp (``)] [visit_exp ``] [visit_id ] [visit_exp ``] [visit_id ] not free -[check_dims] i#93352 -dims \ = , i#93352 -[visit_exp `%`_char{i#93352}(``)] -[visit_exp i#93352] -[visit_id i#93352] +[check_dims] +dims \ = +[visit_exp `%`_char(``)] [visit_exp (``)] [visit_exp ``] [visit_id ] [visit_exp ``] [visit_id ] not free -[check_dims] i#93360 -dims \ = , i#93360 -[visit_exp `%`_char{i#93360}(``)] -[visit_exp i#93360] -[visit_id i#93360] +[check_dims] +dims \ = +[visit_exp `%`_char(``)] [visit_exp (``)] [visit_exp ``] [visit_id ] [visit_exp ``] [visit_id ] not free -[check_dims] i#93368 -dims \ = , i#93368 -[visit_exp `%`_char{i#93368}(``)] -[visit_exp i#93368] -[visit_id i#93368] +[check_dims] +dims \ = +[visit_exp `%`_char(``)] [visit_exp (``)] [visit_exp ``] [visit_id ] [visit_exp ``] [visit_id ] not free -[check_dims] i#93376 -dims \ = , i#93376 -[visit_exp `%`_char{i#93376}(``)] -[visit_exp i#93376] -[visit_id i#93376] +[check_dims] +dims \ = +[visit_exp `%`_char(``)] [visit_exp (``)] [visit_exp ``] [visit_id ] [visit_exp ``] [visit_id ] not free -[check_dims] i#93384 -dims \ = , i#93384 -[visit_exp `%`_char{i#93384}(``)] -[visit_exp i#93384] -[visit_id i#93384] +[check_dims] +dims \ = +[visit_exp `%`_char(``)] [visit_exp (``)] [visit_exp ``] [visit_id ] [visit_exp ``] [visit_id ] not free -[check_dims] i#93392 -dims \ = , i#93392 -[visit_exp `%`_char{i#93392}(``)] -[visit_exp i#93392] -[visit_id i#93392] +[check_dims] +dims \ = +[visit_exp `%`_char(``)] [visit_exp (``)] [visit_exp ``] [visit_id ] [visit_exp ``] [visit_id ] not free -[check_dims] i#93400 -dims \ = , i#93400 -[visit_exp `%`_char{i#93400}(``)] -[visit_exp i#93400] -[visit_id i#93400] +[check_dims] +dims \ = +[visit_exp `%`_char(``)] [visit_exp (``)] [visit_exp ``] [visit_id ] [visit_exp ``] [visit_id ] not free -[check_dims] i#93408 -dims \ = , i#93408 -[visit_exp `%`_char{i#93408}(``)] -[visit_exp i#93408] -[visit_id i#93408] +[check_dims] +dims \ = +[visit_exp `%`_char(``)] [visit_exp (``)] [visit_exp ``] [visit_id ] [visit_exp ``] [visit_id ] not free -[check_dims] i#93416 -dims \ = , i#93416 -[visit_exp `%`_char{i#93416}(``)] -[visit_exp i#93416] -[visit_id i#93416] +[check_dims] +dims \ = +[visit_exp `%`_char(``)] [visit_exp (``)] [visit_exp ``] [visit_id ] [visit_exp ``] [visit_id ] not free -[check_dims] i#93424 -dims \ = , i#93424 -[visit_exp `%`_char{i#93424}(``)] -[visit_exp i#93424] -[visit_id i#93424] +[check_dims] +dims \ = +[visit_exp `%`_char(``)] [visit_exp (``)] [visit_exp ``] [visit_id ] [visit_exp ``] [visit_id ] not free -[check_dims] i#93432 -dims \ = , i#93432 -[visit_exp `%`_char{i#93432}(``)] -[visit_exp i#93432] -[visit_id i#93432] +[check_dims] +dims \ = +[visit_exp `%`_char(``)] [visit_exp (``)] [visit_exp ``] [visit_id ] [visit_exp ``] [visit_id ] not free -[check_dims] i#93440 -dims \ = , i#93440 -[visit_exp `%`_char{i#93440}(``)] -[visit_exp i#93440] -[visit_id i#93440] +[check_dims] +dims \ = +[visit_exp `%`_char(``)] [visit_exp (``)] [visit_exp ``] [visit_id ] [visit_exp ``] [visit_id ] not free -[check_dims] i#93448 -dims \ = , i#93448 -[visit_exp `%`_char{i#93448}(``)] -[visit_exp i#93448] -[visit_id i#93448] +[check_dims] +dims \ = +[visit_exp `%`_char(``)] [visit_exp (``)] [visit_exp ``] [visit_id ] [visit_exp ``] [visit_id ] not free -[check_dims] i#93456 -dims \ = , i#93456 -[visit_exp `%`_char{i#93456}(``)] -[visit_exp i#93456] -[visit_id i#93456] +[check_dims] +dims \ = +[visit_exp `%`_char(``)] [visit_exp (``)] [visit_exp ``] [visit_id ] [visit_exp ``] [visit_id ] not free -[check_dims] i#93464 -dims \ = , i#93464 -[visit_exp `%`_char{i#93464}(``)] -[visit_exp i#93464] -[visit_id i#93464] +[check_dims] +dims \ = +[visit_exp `%`_char(``)] [visit_exp (``)] [visit_exp ``] [visit_id ] [visit_exp ``] [visit_id ] not free -[check_dims] i#93472 -dims \ = , i#93472 -[visit_exp `%`_char{i#93472}(``)] -[visit_exp i#93472] -[visit_id i#93472] +[check_dims] +dims \ = +[visit_exp `%`_char(``)] [visit_exp (``)] [visit_exp ``] [visit_id ] [visit_exp ``] [visit_id ] not free -[check_dims] i#93480 -dims \ = , i#93480 -[visit_exp `%`_char{i#93480}(``)] -[visit_exp i#93480] -[visit_id i#93480] +[check_dims] +dims \ = +[visit_exp `%`_char(``)] [visit_exp (``)] [visit_exp ``] [visit_id ] [visit_exp ``] [visit_id ] not free -[check_dims] i#93488 -dims \ = , i#93488 -[visit_exp `%`_char{i#93488}(``)] -[visit_exp i#93488] -[visit_id i#93488] +[check_dims] +dims \ = +[visit_exp `%`_char(``)] [visit_exp (``)] [visit_exp ``] [visit_id ] [visit_exp ``] [visit_id ] not free -[check_dims] i#93496 -dims \ = , i#93496 -[visit_exp `%`_char{i#93496}(``)] -[visit_exp i#93496] -[visit_id i#93496] +[check_dims] +dims \ = +[visit_exp `%`_char(``)] [visit_exp (``)] [visit_exp ``] [visit_id ] [visit_exp ``] [visit_id ] not free -[check_dims] i#93504 -dims \ = , i#93504 -[visit_exp `%`_char{i#93504}(``)] -[visit_exp i#93504] -[visit_id i#93504] +[check_dims] +dims \ = +[visit_exp `%`_char(``)] [visit_exp (``)] [visit_exp ``] [visit_id ] @@ -90313,11 +71367,9 @@ dims \ = , i#93504 [visit_id ] not free ps' = [check_dims] -[check_dims] c char*#213 -dims \ = c, char*#213 -[visit_exp `%`_name{`char*#213`}(c*{c <- `c*`})] -[visit_exp `char*#213`] -[visit_id char*#213] +[check_dims] c +dims \ = c +[visit_exp `%`_name(c*{c <- `c*`})] [visit_exp (c*{c <- `c*`})] [visit_exp c*{c <- `c*`}] [scope_enter c] @@ -90337,11 +71389,9 @@ dims \ = c, char*#213 [visit_exp `c*`] [visit_id c*] not free [visit_id c*] no dims -[check_dims] c char*#219 char*#225 -dims \ = c, char*#219, char*#225 -[visit_exp `%`_name{`char*#225`}(c*{c <- `c*`})] -[visit_exp `char*#225`] -[visit_id char*#225] +[check_dims] c +dims \ = c +[visit_exp `%`_name(c*{c <- `c*`})] [visit_exp (c*{c <- `c*`})] [visit_exp c*{c <- `c*`}] [scope_enter c] @@ -90352,9 +71402,7 @@ dims \ = c, char*#219, char*#225 [visit_exp `c*`] [visit_id c*] no dims [visit_id c*] -[visit_exp `%`_name{`char*#219`}(c*{c <- `c*`})] -[visit_exp `char*#219`] -[visit_id char*#219] +[visit_exp `%`_name(c*{c <- `c*`})] [visit_exp (c*{c <- `c*`})] [visit_exp c*{c <- `c*`}] [scope_enter c] @@ -90378,136 +71426,148 @@ dims \ = c, char*#219, char*#225 [visit_id c*] no dims [visit_exp 0] [check_dims] +[check_dims] +[scope_enter name?*] +[visit_id name?*] not free +[visit_id name?*] no dims +[scope_exit name?*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter name?*] +[visit_id name?*] not free [visit_id name?*] no dims -[visit_id name?*] +[scope_exit name?*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter name?*] +[visit_id name?*] not free [visit_id name?*] no dims -[visit_id name?*] +[scope_exit name?*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter name?*] +[visit_id name?*] not free [visit_id name?*] no dims -[visit_id name?*] +[scope_exit name?*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter name?*] +[visit_id name?*] not free [visit_id name?*] no dims -[visit_id name?*] +[scope_exit name?*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter name?*] +[visit_id name?*] not free [visit_id name?*] no dims -[visit_id name?*] +[scope_exit name?*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter name?*] +[visit_id name?*] not free [visit_id name?*] no dims -[visit_id name?*] +[scope_exit name?*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter name?*] +[visit_id name?*] not free [visit_id name?*] no dims -[visit_id name?*] +[scope_exit name?*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter name?*] +[visit_id name?*] not free [visit_id name?*] no dims -[visit_id name?*] +[scope_exit name?*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter name?*] +[visit_id name?*] not free [visit_id name?*] no dims -[visit_id name?*] +[scope_exit name?*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id name?*] no dims -[visit_id name?*] +[check_dims] +[scope_enter name?**] +[visit_id name?**] not free +[visit_id name?**] no dims +[scope_exit name?**] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id name?**] no dims -[visit_id name?**] +[check_dims] +[scope_enter deftype?*] +[visit_id deftype?*] not free +[visit_id deftype?*] no dims +[scope_exit deftype?*] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id deftype?*] no dims -[visit_id deftype?*] [check_dims] [check_dims] _ DecD concat_idctxt(idctxt*) : idctxt [visit_id _] not free -[check_dims] deftype?*#1 name?*#1 name?*#10 name?*#2 name?*#3 name?*#4 name?*#5 name?*#6 name?*#7 name?*#8 name?*#9 name?**#1 +[check_dims] [visit_exp []] -[visit_exp {`TYPES`{`name?*#1`} [], `TAGS`{`name?*#2`} [], `GLOBALS`{`name?*#3`} [], `MEMS`{`name?*#4`} [], `TABLES`{`name?*#5`} [], `FUNCS`{`name?*#6`} [], `DATAS`{`name?*#7`} [], `ELEMS`{`name?*#8`} [], `LOCALS`{`name?*#9`} [], `LABELS`{`name?*#10`} [], `FIELDS`{`name?**#1`} [], `TYPEDEFS`{`deftype?*#1`} []}] -[visit_exp `name?*#1`] -[visit_id name?*#1] +[visit_exp {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [], `TYPEDEFS` []}] [visit_exp []] -[visit_exp `name?*#2`] -[visit_id name?*#2] [visit_exp []] -[visit_exp `name?*#3`] -[visit_id name?*#3] [visit_exp []] -[visit_exp `name?*#4`] -[visit_id name?*#4] [visit_exp []] -[visit_exp `name?*#5`] -[visit_id name?*#5] [visit_exp []] -[visit_exp `name?*#6`] -[visit_id name?*#6] [visit_exp []] -[visit_exp `name?*#7`] -[visit_id name?*#7] [visit_exp []] -[visit_exp `name?*#8`] -[visit_id name?*#8] [visit_exp []] -[visit_exp `name?*#9`] -[visit_id name?*#9] [visit_exp []] -[visit_exp `name?*#10`] -[visit_id name?*#10] [visit_exp []] -[visit_exp `name?**#1`] -[visit_id name?**#1] [visit_exp []] -[visit_exp `deftype?*#1`] -[visit_id deftype?*#1] [visit_exp []] => ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - def $concat_idctxt{`name?*#1` : name?*, `name?*#2` : name?*, `name?*#3` : name?*, `name?*#4` : name?*, `name?*#5` : name?*, `name?*#6` : name?*, `name?*#7` : name?*, `name?*#8` : name?*, `name?*#9` : name?*, `name?*#10` : name?*, `name?**#1` : name?**, `deftype?*#1` : deftype?*}([]) = {`TYPES`{`name?*#1`} [], `TAGS`{`name?*#2`} [], `GLOBALS`{`name?*#3`} [], `MEMS`{`name?*#4`} [], `TABLES`{`name?*#5`} [], `FUNCS`{`name?*#6`} [], `DATAS`{`name?*#7`} [], `ELEMS`{`name?*#8`} [], `LOCALS`{`name?*#9`} [], `LABELS`{`name?*#10`} [], `FIELDS`{`name?**#1`} [], `TYPEDEFS`{`deftype?*#1`} []} + def $concat_idctxt([]) = {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [], `TYPEDEFS` []} [check_dims] I I' [visit_exp [I] ++ I'*{I' <- `I'*`}] [visit_exp [I]] @@ -90539,88 +71599,65 @@ DecD concat_idctxt(idctxt*) : idctxt ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec def $concat_idctxt{I : I, `I'*` : I*}([I] ++ I'*{I' <- `I'*`}) = I +++ $concat_idctxt(I'*{I' <- `I'*`}) [check_dims] -[check_dims] I char*#743 char*#761 field name?*#100 name?*#130 name?*#160 name?*#190 name?*#220 name?*#250 name?*#280 name?*#310 name?*#40 name?*#70 name?**#2 +[check_dims] I field [visit_exp I] [visit_id I] -[visit_exp $disjoint_(syntax name, $concatopt_(syntax name, I.`TYPES`_I{`name?*#40`}))] -[visit_exp $concatopt_(syntax name, I.`TYPES`_I{`name?*#40`})] -[visit_exp I.`TYPES`_I{`name?*#40`}] +[visit_exp $disjoint_(syntax name, $concatopt_(syntax name, I.`TYPES`_I))] +[visit_exp $concatopt_(syntax name, I.`TYPES`_I)] +[visit_exp I.`TYPES`_I] [visit_exp I] [visit_id I] not free -[visit_exp `name?*#40`] -[visit_id name?*#40] -[visit_exp $disjoint_(syntax name, $concatopt_(syntax name, I.`TAGS`_I{`name?*#70`}))] -[visit_exp $concatopt_(syntax name, I.`TAGS`_I{`name?*#70`})] -[visit_exp I.`TAGS`_I{`name?*#70`}] +[visit_exp $disjoint_(syntax name, $concatopt_(syntax name, I.`TAGS`_I))] +[visit_exp $concatopt_(syntax name, I.`TAGS`_I)] +[visit_exp I.`TAGS`_I] [visit_exp I] [visit_id I] not free -[visit_exp `name?*#70`] -[visit_id name?*#70] -[visit_exp $disjoint_(syntax name, $concatopt_(syntax name, I.`GLOBALS`_I{`name?*#100`}))] -[visit_exp $concatopt_(syntax name, I.`GLOBALS`_I{`name?*#100`})] -[visit_exp I.`GLOBALS`_I{`name?*#100`}] +[visit_exp $disjoint_(syntax name, $concatopt_(syntax name, I.`GLOBALS`_I))] +[visit_exp $concatopt_(syntax name, I.`GLOBALS`_I)] +[visit_exp I.`GLOBALS`_I] [visit_exp I] [visit_id I] not free -[visit_exp `name?*#100`] -[visit_id name?*#100] -[visit_exp $disjoint_(syntax name, $concatopt_(syntax name, I.`MEMS`_I{`name?*#130`}))] -[visit_exp $concatopt_(syntax name, I.`MEMS`_I{`name?*#130`})] -[visit_exp I.`MEMS`_I{`name?*#130`}] +[visit_exp $disjoint_(syntax name, $concatopt_(syntax name, I.`MEMS`_I))] +[visit_exp $concatopt_(syntax name, I.`MEMS`_I)] +[visit_exp I.`MEMS`_I] [visit_exp I] [visit_id I] not free -[visit_exp `name?*#130`] -[visit_id name?*#130] -[visit_exp $disjoint_(syntax name, $concatopt_(syntax name, I.`TABLES`_I{`name?*#160`}))] -[visit_exp $concatopt_(syntax name, I.`TABLES`_I{`name?*#160`})] -[visit_exp I.`TABLES`_I{`name?*#160`}] +[visit_exp $disjoint_(syntax name, $concatopt_(syntax name, I.`TABLES`_I))] +[visit_exp $concatopt_(syntax name, I.`TABLES`_I)] +[visit_exp I.`TABLES`_I] [visit_exp I] [visit_id I] not free -[visit_exp `name?*#160`] -[visit_id name?*#160] -[visit_exp $disjoint_(syntax name, $concatopt_(syntax name, I.`FUNCS`_I{`name?*#190`}))] -[visit_exp $concatopt_(syntax name, I.`FUNCS`_I{`name?*#190`})] -[visit_exp I.`FUNCS`_I{`name?*#190`}] +[visit_exp $disjoint_(syntax name, $concatopt_(syntax name, I.`FUNCS`_I))] +[visit_exp $concatopt_(syntax name, I.`FUNCS`_I)] +[visit_exp I.`FUNCS`_I] [visit_exp I] [visit_id I] not free -[visit_exp `name?*#190`] -[visit_id name?*#190] -[visit_exp $disjoint_(syntax name, $concatopt_(syntax name, I.`DATAS`_I{`name?*#220`}))] -[visit_exp $concatopt_(syntax name, I.`DATAS`_I{`name?*#220`})] -[visit_exp I.`DATAS`_I{`name?*#220`}] +[visit_exp $disjoint_(syntax name, $concatopt_(syntax name, I.`DATAS`_I))] +[visit_exp $concatopt_(syntax name, I.`DATAS`_I)] +[visit_exp I.`DATAS`_I] [visit_exp I] [visit_id I] not free -[visit_exp `name?*#220`] -[visit_id name?*#220] -[visit_exp $disjoint_(syntax name, $concatopt_(syntax name, I.`ELEMS`_I{`name?*#250`}))] -[visit_exp $concatopt_(syntax name, I.`ELEMS`_I{`name?*#250`})] -[visit_exp I.`ELEMS`_I{`name?*#250`}] +[visit_exp $disjoint_(syntax name, $concatopt_(syntax name, I.`ELEMS`_I))] +[visit_exp $concatopt_(syntax name, I.`ELEMS`_I)] +[visit_exp I.`ELEMS`_I] [visit_exp I] [visit_id I] not free -[visit_exp `name?*#250`] -[visit_id name?*#250] -[visit_exp $disjoint_(syntax name, $concatopt_(syntax name, I.`LOCALS`_I{`name?*#280`}))] -[visit_exp $concatopt_(syntax name, I.`LOCALS`_I{`name?*#280`})] -[visit_exp I.`LOCALS`_I{`name?*#280`}] +[visit_exp $disjoint_(syntax name, $concatopt_(syntax name, I.`LOCALS`_I))] +[visit_exp $concatopt_(syntax name, I.`LOCALS`_I)] +[visit_exp I.`LOCALS`_I] [visit_exp I] [visit_id I] not free -[visit_exp `name?*#280`] -[visit_id name?*#280] -[visit_exp $disjoint_(syntax name, $concatopt_(syntax name, I.`LABELS`_I{`name?*#310`}))] -[visit_exp $concatopt_(syntax name, I.`LABELS`_I{`name?*#310`})] -[visit_exp I.`LABELS`_I{`name?*#310`}] +[visit_exp $disjoint_(syntax name, $concatopt_(syntax name, I.`LABELS`_I))] +[visit_exp $concatopt_(syntax name, I.`LABELS`_I)] +[visit_exp I.`LABELS`_I] [visit_exp I] [visit_id I] not free -[visit_exp `name?*#310`] -[visit_id name?*#310] -[scope_enter char*#743] [scope_enter field*] -[visit_exp $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name{`char*#743`}(field*{field <- `field*`}))]))] -[visit_exp $concatopt_(syntax name, [?(`%`_name{`char*#743`}(field*{field <- `field*`}))])] -[visit_exp [?(`%`_name{`char*#743`}(field*{field <- `field*`}))]] -[visit_exp ?(`%`_name{`char*#743`}(field*{field <- `field*`}))] -[visit_exp `%`_name{`char*#743`}(field*{field <- `field*`})] -[visit_exp `char*#743`] -[visit_id char*#743] not free +[visit_exp $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))]))] +[visit_exp $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])] +[visit_exp [?(`%`_name(field*{field <- `field*`}))]] +[visit_exp ?(`%`_name(field*{field <- `field*`}))] +[visit_exp `%`_name(field*{field <- `field*`})] [visit_exp (field*{field <- `field*`})] [visit_exp field*{field <- `field*`}] [scope_enter field] @@ -90631,26 +71668,18 @@ DecD concat_idctxt(idctxt*) : idctxt [visit_exp `field*`] [visit_id field*] not free [visit_id field*] no dims -[visit_id char*#743] not free [visit_id field*] not free [visit_id field*] no dims [scope_exit field*] -[scope_exit char*#743] -[visit_exp `char*#743*`] -[visit_id char*#743*] no dims -[visit_id char*#743*] [visit_exp `field**`] [visit_id field**] no dims [visit_id field**] -[visit_exp ([?(`%`_name{`char*#761`}(field*{field <- `field*`}))*{`char*#761` <- `char*#761*`, `field*` <- `field**`}] = I.`FIELDS`_I{`name?**#2`})] -[visit_exp [?(`%`_name{`char*#761`}(field*{field <- `field*`}))*{`char*#761` <- `char*#761*`, `field*` <- `field**`}]] -[visit_exp ?(`%`_name{`char*#761`}(field*{field <- `field*`}))*{`char*#761` <- `char*#761*`, `field*` <- `field**`}] -[scope_enter char*#761] +[visit_exp ([?(`%`_name(field*{field <- `field*`}))*{`field*` <- `field**`}] = I.`FIELDS`_I)] +[visit_exp [?(`%`_name(field*{field <- `field*`}))*{`field*` <- `field**`}]] +[visit_exp ?(`%`_name(field*{field <- `field*`}))*{`field*` <- `field**`}] [scope_enter field*] -[visit_exp ?(`%`_name{`char*#761`}(field*{field <- `field*`}))] -[visit_exp `%`_name{`char*#761`}(field*{field <- `field*`})] -[visit_exp `char*#761`] -[visit_id char*#761] not free +[visit_exp ?(`%`_name(field*{field <- `field*`}))] +[visit_exp `%`_name(field*{field <- `field*`})] [visit_exp (field*{field <- `field*`})] [visit_exp field*{field <- `field*`}] [scope_enter field] @@ -90661,22 +71690,15 @@ DecD concat_idctxt(idctxt*) : idctxt [visit_exp `field*`] [visit_id field*] not free [visit_id field*] no dims -[visit_id char*#761] not free [visit_id field*] not free [visit_id field*] no dims [scope_exit field*] -[scope_exit char*#761] -[visit_exp `char*#761*`] -[visit_id char*#761*] no dims -[visit_id char*#761*] [visit_exp `field**`] [visit_id field**] not free [visit_id field**] no dims -[visit_exp I.`FIELDS`_I{`name?**#2`}] +[visit_exp I.`FIELDS`_I] [visit_exp I] [visit_id I] not free -[visit_exp `name?**#2`] -[visit_id name?**#2] ps' = (ids : name?*) [check_dims] ids [check_dims] ids x @@ -90685,208 +71707,180 @@ dims \ ids = x [visit_id x] [visit_exp x] [visit_id x] not free -[check_dims] i#94485 id ids x -dims \ ids = i#94485, id, x +[check_dims] id ids x +dims \ ids = id, x [visit_exp x] [visit_id x] [visit_exp id] [visit_id id] -[visit_exp (ids[x!`%`_idx{i#94485}.0] = ?(id))] -[visit_exp ids[x!`%`_idx{i#94485}.0]] +[visit_exp (ids[x!`%`_idx.0] = ?(id))] +[visit_exp ids[x!`%`_idx.0]] [visit_exp ids] [visit_id ids] not free [visit_id ids] no dims -[visit_exp x!`%`_idx{i#94485}.0] -[visit_exp x!`%`_idx{i#94485}] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] [visit_exp x] [visit_id x] not free -[visit_exp i#94485] -[visit_id i#94485] [visit_exp ?(id)] [visit_exp id] [visit_id id] not free [visit_id ids] not free ps' = (I : I) [check_dims] I -[check_dims] I name?*#322 -dims \ I = , name?*#322 +[check_dims] I +dims \ I = [visit_exp ``] [visit_id ] [visit_exp ``] [visit_id ] not free -[visit_exp I.`TYPES`_I{`name?*#322`}] +[visit_exp I.`TYPES`_I] [visit_exp I] [visit_id I] not free [visit_id I] no dims -[visit_exp `name?*#322`] -[visit_id name?*#322] [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I name?*#334 -dims \ I = , name?*#334 +[check_dims] I +dims \ I = [visit_exp ``] [visit_id ] [visit_exp ``] [visit_id ] not free -[visit_exp I.`TAGS`_I{`name?*#334`}] +[visit_exp I.`TAGS`_I] [visit_exp I] [visit_id I] not free [visit_id I] no dims -[visit_exp `name?*#334`] -[visit_id name?*#334] [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I name?*#346 -dims \ I = , name?*#346 +[check_dims] I +dims \ I = [visit_exp ``] [visit_id ] [visit_exp ``] [visit_id ] not free -[visit_exp I.`GLOBALS`_I{`name?*#346`}] +[visit_exp I.`GLOBALS`_I] [visit_exp I] [visit_id I] not free [visit_id I] no dims -[visit_exp `name?*#346`] -[visit_id name?*#346] [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I name?*#358 -dims \ I = , name?*#358 +[check_dims] I +dims \ I = [visit_exp ``] [visit_id ] [visit_exp ``] [visit_id ] not free -[visit_exp I.`MEMS`_I{`name?*#358`}] +[visit_exp I.`MEMS`_I] [visit_exp I] [visit_id I] not free [visit_id I] no dims -[visit_exp `name?*#358`] -[visit_id name?*#358] [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I name?*#370 -dims \ I = , name?*#370 +[check_dims] I +dims \ I = [visit_exp ``] [visit_id ] [visit_exp ``] [visit_id ] not free -[visit_exp I.`TABLES`_I{`name?*#370`}] +[visit_exp I.`TABLES`_I] [visit_exp I] [visit_id I] not free [visit_id I] no dims -[visit_exp `name?*#370`] -[visit_id name?*#370] [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I name?*#382 -dims \ I = , name?*#382 +[check_dims] I +dims \ I = [visit_exp ``] [visit_id ] [visit_exp ``] [visit_id ] not free -[visit_exp I.`FUNCS`_I{`name?*#382`}] +[visit_exp I.`FUNCS`_I] [visit_exp I] [visit_id I] not free [visit_id I] no dims -[visit_exp `name?*#382`] -[visit_id name?*#382] [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I name?*#394 -dims \ I = , name?*#394 +[check_dims] I +dims \ I = [visit_exp ``] [visit_id ] [visit_exp ``] [visit_id ] not free -[visit_exp I.`DATAS`_I{`name?*#394`}] +[visit_exp I.`DATAS`_I] [visit_exp I] [visit_id I] not free [visit_id I] no dims -[visit_exp `name?*#394`] -[visit_id name?*#394] [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I name?*#406 -dims \ I = , name?*#406 +[check_dims] I +dims \ I = [visit_exp ``] [visit_id ] [visit_exp ``] [visit_id ] not free -[visit_exp I.`ELEMS`_I{`name?*#406`}] +[visit_exp I.`ELEMS`_I] [visit_exp I] [visit_id I] not free [visit_id I] no dims -[visit_exp `name?*#406`] -[visit_id name?*#406] [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I name?*#418 -dims \ I = , name?*#418 +[check_dims] I +dims \ I = [visit_exp ``] [visit_id ] [visit_exp ``] [visit_id ] not free -[visit_exp I.`LOCALS`_I{`name?*#418`}] +[visit_exp I.`LOCALS`_I] [visit_exp I] [visit_id I] not free [visit_id I] no dims -[visit_exp `name?*#418`] -[visit_id name?*#418] [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I name?*#430 -dims \ I = , name?*#430 +[check_dims] I +dims \ I = [visit_exp ``] [visit_id ] [visit_exp ``] [visit_id ] not free -[visit_exp I.`LABELS`_I{`name?*#430`}] +[visit_exp I.`LABELS`_I] [visit_exp I] [visit_id I] not free [visit_id I] no dims -[visit_exp `name?*#430`] -[visit_id name?*#430] [visit_id I] not free ps' = (I : I, x : idx) [check_dims] I x -[check_dims] I i#95162 name?**#14 x -dims \ I x = , i#95162, name?**#14 +[check_dims] I x +dims \ I x = [visit_exp ``] [visit_id ] [visit_exp ``] [visit_id ] not free -[visit_exp I.`FIELDS`_I{`name?**#14`}[x!`%`_idx{i#95162}.0]] -[visit_exp I.`FIELDS`_I{`name?**#14`}] +[visit_exp I.`FIELDS`_I[x!`%`_idx.0]] +[visit_exp I.`FIELDS`_I] [visit_exp I] [visit_id I] not free [visit_id I] no dims -[visit_exp `name?**#14`] -[visit_id name?**#14] -[visit_exp x!`%`_idx{i#95162}.0] -[visit_exp x!`%`_idx{i#95162}] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] [visit_exp x] [visit_id x] not free [visit_id x] no dims -[visit_exp i#95162] -[visit_id i#95162] [visit_id I] not free [visit_id x] not free ps' = (I : I) [check_dims] I -[check_dims] I tagidx#27 x -dims \ I = tagidx#27, x -[visit_exp `TAG`_externidx{tagidx#27}(x)] -[visit_exp tagidx#27] -[visit_id tagidx#27] +[check_dims] I x +dims \ I = x +[visit_exp `TAG`_externidx(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -90895,11 +71889,9 @@ dims \ I = tagidx#27, x [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I globalidx#29 x -dims \ I = globalidx#29, x -[visit_exp `GLOBAL`_externidx{globalidx#29}(x)] -[visit_exp globalidx#29] -[visit_id globalidx#29] +[check_dims] I x +dims \ I = x +[visit_exp `GLOBAL`_externidx(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -90908,11 +71900,9 @@ dims \ I = globalidx#29, x [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I memidx#276 x -dims \ I = memidx#276, x -[visit_exp `MEM`_externidx{memidx#276}(x)] -[visit_exp memidx#276] -[visit_id memidx#276] +[check_dims] I x +dims \ I = x +[visit_exp `MEM`_externidx(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -90921,11 +71911,9 @@ dims \ I = memidx#276, x [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I tableidx#152 x -dims \ I = tableidx#152, x -[visit_exp `TABLE`_externidx{tableidx#152}(x)] -[visit_exp tableidx#152] -[visit_id tableidx#152] +[check_dims] I x +dims \ I = x +[visit_exp `TABLE`_externidx(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -90934,11 +71922,9 @@ dims \ I = tableidx#152, x [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I funcidx#3381 x -dims \ I = funcidx#3381, x -[visit_exp `FUNC`_externidx{funcidx#3381}(x)] -[visit_exp funcidx#3381] -[visit_id funcidx#3381] +[check_dims] I x +dims \ I = x +[visit_exp `FUNC`_externidx(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -91030,11 +72016,9 @@ dims \ I = ht [visit_id ht] [visit_exp ht] [visit_id ht] not free -[check_dims] I typeidx#2119 x -dims \ I = typeidx#2119, x -[visit_exp `_IDX`_heaptype{typeidx#2119}(x)] -[visit_exp typeidx#2119] -[visit_id typeidx#2119] +[check_dims] I x +dims \ I = x +[visit_exp `_IDX`_heaptype(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -91052,13 +72036,9 @@ dims \ = [visit_exp ()] ps' = (I : I) [check_dims] I -[check_dims] I heaptype#1861 ht null null?#1795 -dims \ I = heaptype#1861, ht, null, null?#1795 -[visit_exp `REF`_reftype{`null?#1795`, heaptype#1861}(null?{null <- `null?`}, ht)] -[visit_exp `null?#1795`] -[visit_id null?#1795] -[visit_exp heaptype#1861] -[visit_id heaptype#1861] +[check_dims] I ht null +dims \ I = ht, null +[visit_exp `REF`_reftype(null?{null <- `null?`}, ht)] [visit_exp (null?{null <- `null?`}, ht)] [visit_exp null?{null <- `null?`}] [scope_enter null] @@ -91160,13 +72140,9 @@ dims \ I = pt [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I mut?#1499 storagetype#801 zt -dims \ I = mut?#1499, storagetype#801, zt -[visit_exp `%%`_fieldtype{`mut?#1499`, storagetype#801}(?(), zt)] -[visit_exp `mut?#1499`] -[visit_id mut?#1499] -[visit_exp storagetype#801] -[visit_id storagetype#801] +[check_dims] I zt +dims \ I = zt +[visit_exp `%%`_fieldtype(?(), zt)] [visit_exp (?(), zt)] [visit_exp ?()] [visit_exp zt] @@ -91176,13 +72152,9 @@ dims \ I = mut?#1499, storagetype#801, zt [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I mut?#1511 storagetype#813 zt -dims \ I = mut?#1511, storagetype#813, zt -[visit_exp `%%`_fieldtype{`mut?#1511`, storagetype#813}(?(`MUT`_mut), zt)] -[visit_exp `mut?#1511`] -[visit_id mut?#1511] -[visit_exp storagetype#813] -[visit_id storagetype#813] +[check_dims] I zt +dims \ I = zt +[visit_exp `%%`_fieldtype(?(`MUT`_mut), zt)] [visit_exp (?(`MUT`_mut), zt)] [visit_exp ?(`MUT`_mut)] [visit_exp `MUT`_mut] @@ -91197,15 +72169,13 @@ dims \ I = mut?#1511, storagetype#813, zt [visit_id I] not free ps' = (I : I) [check_dims] I _ -[check_dims] I char*#963 char*#969 ft id -dims \ I = char*#963, char*#969, ft, id -[visit_exp (ft, ?(`%`_name{`char*#969`}(lift(id?{id <- `id?`}))))] +[check_dims] I ft id +dims \ I = ft, id +[visit_exp (ft, ?(`%`_name(lift(id?{id <- `id?`}))))] [visit_exp ft] [visit_id ft] -[visit_exp ?(`%`_name{`char*#969`}(lift(id?{id <- `id?`})))] -[visit_exp `%`_name{`char*#969`}(lift(id?{id <- `id?`}))] -[visit_exp `char*#969`] -[visit_id char*#969] +[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] +[visit_exp `%`_name(lift(id?{id <- `id?`}))] [visit_exp (lift(id?{id <- `id?`}))] [visit_exp lift(id?{id <- `id?`})] [visit_exp id?{id <- `id?`}] @@ -91217,10 +72187,8 @@ dims \ I = char*#963, char*#969, ft, id [visit_exp `id?`] [visit_id id?] no dims [visit_id id?] -[visit_exp ?(`%`_name{`char*#963`}(lift(id?{id <- `id?`})))] -[visit_exp `%`_name{`char*#963`}(lift(id?{id <- `id?`}))] -[visit_exp `char*#963`] -[visit_id char*#963] +[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] +[visit_exp `%`_name(lift(id?{id <- `id?`}))] [visit_exp (lift(id?{id <- `id?`}))] [visit_exp lift(id?{id <- `id?`})] [visit_exp id?{id <- `id?`}] @@ -91238,10 +72206,14 @@ dims \ I = char*#963, char*#969, ft, id [visit_id I] not free [visit_id I] no dims [visit_id I] not free +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_exit _] +[scope_exit _] ps' = (I : I) [check_dims] I _ [check_dims] I @@ -91252,21 +72224,23 @@ ps' = (I : I) [visit_id I] not free [visit_id I] no dims [visit_id I] not free +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_exit _] +[scope_exit _] ps' = (I : I) [check_dims] I _ -[check_dims] I char*#975 char*#981 id t -dims \ I = char*#975, char*#981, id, t -[visit_exp (t, ?(`%`_name{`char*#981`}(lift(id?{id <- `id?`}))))] +[check_dims] I id t +dims \ I = id, t +[visit_exp (t, ?(`%`_name(lift(id?{id <- `id?`}))))] [visit_exp t] [visit_id t] -[visit_exp ?(`%`_name{`char*#981`}(lift(id?{id <- `id?`})))] -[visit_exp `%`_name{`char*#981`}(lift(id?{id <- `id?`}))] -[visit_exp `char*#981`] -[visit_id char*#981] +[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] +[visit_exp `%`_name(lift(id?{id <- `id?`}))] [visit_exp (lift(id?{id <- `id?`}))] [visit_exp lift(id?{id <- `id?`})] [visit_exp id?{id <- `id?`}] @@ -91278,10 +72252,8 @@ dims \ I = char*#975, char*#981, id, t [visit_exp `id?`] [visit_id id?] no dims [visit_id id?] -[visit_exp ?(`%`_name{`char*#975`}(lift(id?{id <- `id?`})))] -[visit_exp `%`_name{`char*#975`}(lift(id?{id <- `id?`}))] -[visit_exp `char*#975`] -[visit_id char*#975] +[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] +[visit_exp `%`_name(lift(id?{id <- `id?`}))] [visit_exp (lift(id?{id <- `id?`}))] [visit_exp lift(id?{id <- `id?`})] [visit_exp id?{id <- `id?`}] @@ -91299,10 +72271,14 @@ dims \ I = char*#975, char*#981, id, t [visit_id I] not free [visit_id I] no dims [visit_id I] not free +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_exit _] +[scope_exit _] ps' = (I : I) [check_dims] I _ [check_dims] I @@ -91313,10 +72289,14 @@ ps' = (I : I) [visit_id I] not free [visit_id I] no dims [visit_id I] not free +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_exit _] +[scope_exit _] ps' = (I : I) [check_dims] I [check_dims] I t @@ -91341,14 +72321,12 @@ ps' = (I : I) [visit_id I] not free ps' = (I : I) [check_dims] I _ -[check_dims] I X*#13361 _ char*#1005 char*#987 deftype?*#2 ft id name?*#431 name?*#432 name?*#433 name?*#434 name?*#435 name?*#436 name?*#437 name?*#438 name?*#439 name?*#440 name?**#15 -dims \ I = X*#13361, _, char*#1005, char*#987, deftype?*#2, ft, id, name?*#431, name?*#432, name?*#433, name?*#434, name?*#435, name?*#436, name?*#437, name?*#438, name?*#439, name?*#440, name?**#15 -[visit_exp (`STRUCT`_comptype(`%`_list{`X*#13361`}(ft*{ft <- `ft*`})), {`TYPES`{`name?*#431`} [], `TAGS`{`name?*#432`} [], `GLOBALS`{`name?*#433`} [], `MEMS`{`name?*#434`} [], `TABLES`{`name?*#435`} [], `FUNCS`{`name?*#436`} [], `DATAS`{`name?*#437`} [], `ELEMS`{`name?*#438`} [], `LOCALS`{`name?*#439`} [], `LABELS`{`name?*#440`} [], `FIELDS`{`name?**#15`} [?(`%`_name{`char*#1005`}(lift(id?{id <- `id?`})))*{`char*#1005` <- `char*#1005*`, `id?` <- `id?*`}], `TYPEDEFS`{`deftype?*#2`} []})] -[visit_exp `STRUCT`_comptype(`%`_list{`X*#13361`}(ft*{ft <- `ft*`}))] -[visit_exp (`%`_list{`X*#13361`}(ft*{ft <- `ft*`}))] -[visit_exp `%`_list{`X*#13361`}(ft*{ft <- `ft*`})] -[visit_exp `X*#13361`] -[visit_id X*#13361] +[check_dims] I _ ft id +dims \ I = _, ft, id +[visit_exp (`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` []})] +[visit_exp `STRUCT`_comptype(`%`_list(ft*{ft <- `ft*`}))] +[visit_exp (`%`_list(ft*{ft <- `ft*`}))] +[visit_exp `%`_list(ft*{ft <- `ft*`})] [visit_exp (ft*{ft <- `ft*`})] [visit_exp ft*{ft <- `ft*`}] [scope_enter ft] @@ -91359,47 +72337,22 @@ dims \ I = X*#13361, _, char*#1005, char*#987, deftype?*#2, ft, id, name?*#431, [visit_exp `ft*`] [visit_id ft*] no dims [visit_id ft*] -[visit_exp {`TYPES`{`name?*#431`} [], `TAGS`{`name?*#432`} [], `GLOBALS`{`name?*#433`} [], `MEMS`{`name?*#434`} [], `TABLES`{`name?*#435`} [], `FUNCS`{`name?*#436`} [], `DATAS`{`name?*#437`} [], `ELEMS`{`name?*#438`} [], `LOCALS`{`name?*#439`} [], `LABELS`{`name?*#440`} [], `FIELDS`{`name?**#15`} [?(`%`_name{`char*#1005`}(lift(id?{id <- `id?`})))*{`char*#1005` <- `char*#1005*`, `id?` <- `id?*`}], `TYPEDEFS`{`deftype?*#2`} []}] -[visit_exp `name?*#431`] -[visit_id name?*#431] +[visit_exp {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}], `TYPEDEFS` []}] [visit_exp []] -[visit_exp `name?*#432`] -[visit_id name?*#432] [visit_exp []] -[visit_exp `name?*#433`] -[visit_id name?*#433] [visit_exp []] -[visit_exp `name?*#434`] -[visit_id name?*#434] [visit_exp []] -[visit_exp `name?*#435`] -[visit_id name?*#435] [visit_exp []] -[visit_exp `name?*#436`] -[visit_id name?*#436] [visit_exp []] -[visit_exp `name?*#437`] -[visit_id name?*#437] [visit_exp []] -[visit_exp `name?*#438`] -[visit_id name?*#438] [visit_exp []] -[visit_exp `name?*#439`] -[visit_id name?*#439] [visit_exp []] -[visit_exp `name?*#440`] -[visit_id name?*#440] [visit_exp []] -[visit_exp `name?**#15`] -[visit_id name?**#15] -[visit_exp [?(`%`_name{`char*#1005`}(lift(id?{id <- `id?`})))*{`char*#1005` <- `char*#1005*`, `id?` <- `id?*`}]] -[visit_exp ?(`%`_name{`char*#1005`}(lift(id?{id <- `id?`})))*{`char*#1005` <- `char*#1005*`, `id?` <- `id?*`}] -[scope_enter char*#1005] +[visit_exp [?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}]] +[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}] [scope_enter id?] -[visit_exp ?(`%`_name{`char*#1005`}(lift(id?{id <- `id?`})))] -[visit_exp `%`_name{`char*#1005`}(lift(id?{id <- `id?`}))] -[visit_exp `char*#1005`] -[visit_id char*#1005] not free +[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] +[visit_exp `%`_name(lift(id?{id <- `id?`}))] [visit_exp (lift(id?{id <- `id?`}))] [visit_exp lift(id?{id <- `id?`})] [visit_exp id?{id <- `id?`}] @@ -91411,31 +72364,21 @@ dims \ I = X*#13361, _, char*#1005, char*#987, deftype?*#2, ft, id, name?*#431, [visit_exp `id?`] [visit_id id?] not free [visit_id id?] no dims -[visit_id char*#1005] not free [visit_id id?] not free [visit_id id?] no dims [scope_exit id?] -[scope_exit char*#1005] -[visit_exp `char*#1005*`] -[visit_id char*#1005*] no dims -[visit_id char*#1005*] [visit_exp `id?*`] [visit_id id?*] no dims [visit_id id?*] -[visit_exp `deftype?*#2`] -[visit_id deftype?*#2] [visit_exp []] -[visit_exp (ft, ?(`%`_name{`char*#987`}(lift(id?{id <- `id?`}))))*{`char*#987` <- `char*#987*`, ft <- `ft*`, `id?` <- `id?*`}] -[scope_enter char*#987] +[visit_exp (ft, ?(`%`_name(lift(id?{id <- `id?`}))))*{ft <- `ft*`, `id?` <- `id?*`}] [scope_enter ft] [scope_enter id?] -[visit_exp (ft, ?(`%`_name{`char*#987`}(lift(id?{id <- `id?`}))))] +[visit_exp (ft, ?(`%`_name(lift(id?{id <- `id?`}))))] [visit_exp ft] [visit_id ft] not free -[visit_exp ?(`%`_name{`char*#987`}(lift(id?{id <- `id?`})))] -[visit_exp `%`_name{`char*#987`}(lift(id?{id <- `id?`}))] -[visit_exp `char*#987`] -[visit_id char*#987] not free +[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] +[visit_exp `%`_name(lift(id?{id <- `id?`}))] [visit_exp (lift(id?{id <- `id?`}))] [visit_exp lift(id?{id <- `id?`})] [visit_exp id?{id <- `id?`}] @@ -91447,88 +72390,57 @@ dims \ I = X*#13361, _, char*#1005, char*#987, deftype?*#2, ft, id, name?*#431, [visit_exp `id?`] [visit_id id?] not free [visit_id id?] no dims -[visit_id char*#987] not free [visit_id ft] not free [visit_id id?] not free [visit_id id?] no dims [scope_exit id?] [scope_exit ft] -[scope_exit char*#987] -[visit_exp `char*#987*`] -[visit_id char*#987*] no dims -[visit_id char*#987*] [visit_exp `ft*`] [visit_id ft*] not free [visit_id ft*] no dims [visit_exp `id?*`] [visit_id id?*] not free [visit_id id?*] no dims +[scope_enter _] [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_exit _] +[scope_exit _] [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I deftype?*#3 fieldtype#61 ft name?*#441 name?*#442 name?*#443 name?*#444 name?*#445 name?*#446 name?*#447 name?*#448 name?*#449 name?*#450 name?**#16 -dims \ I = deftype?*#3, fieldtype#61, ft, name?*#441, name?*#442, name?*#443, name?*#444, name?*#445, name?*#446, name?*#447, name?*#448, name?*#449, name?*#450, name?**#16 -[visit_exp (`ARRAY`_comptype{fieldtype#61}(ft), {`TYPES`{`name?*#441`} [], `TAGS`{`name?*#442`} [], `GLOBALS`{`name?*#443`} [], `MEMS`{`name?*#444`} [], `TABLES`{`name?*#445`} [], `FUNCS`{`name?*#446`} [], `DATAS`{`name?*#447`} [], `ELEMS`{`name?*#448`} [], `LOCALS`{`name?*#449`} [], `LABELS`{`name?*#450`} [], `FIELDS`{`name?**#16`} [], `TYPEDEFS`{`deftype?*#3`} []})] -[visit_exp `ARRAY`_comptype{fieldtype#61}(ft)] -[visit_exp fieldtype#61] -[visit_id fieldtype#61] +[check_dims] I ft +dims \ I = ft +[visit_exp (`ARRAY`_comptype(ft), {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [], `TYPEDEFS` []})] +[visit_exp `ARRAY`_comptype(ft)] [visit_exp (ft)] [visit_exp ft] [visit_id ft] -[visit_exp {`TYPES`{`name?*#441`} [], `TAGS`{`name?*#442`} [], `GLOBALS`{`name?*#443`} [], `MEMS`{`name?*#444`} [], `TABLES`{`name?*#445`} [], `FUNCS`{`name?*#446`} [], `DATAS`{`name?*#447`} [], `ELEMS`{`name?*#448`} [], `LOCALS`{`name?*#449`} [], `LABELS`{`name?*#450`} [], `FIELDS`{`name?**#16`} [], `TYPEDEFS`{`deftype?*#3`} []}] -[visit_exp `name?*#441`] -[visit_id name?*#441] +[visit_exp {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [], `TYPEDEFS` []}] [visit_exp []] -[visit_exp `name?*#442`] -[visit_id name?*#442] [visit_exp []] -[visit_exp `name?*#443`] -[visit_id name?*#443] [visit_exp []] -[visit_exp `name?*#444`] -[visit_id name?*#444] [visit_exp []] -[visit_exp `name?*#445`] -[visit_id name?*#445] [visit_exp []] -[visit_exp `name?*#446`] -[visit_id name?*#446] [visit_exp []] -[visit_exp `name?*#447`] -[visit_id name?*#447] [visit_exp []] -[visit_exp `name?*#448`] -[visit_id name?*#448] [visit_exp []] -[visit_exp `name?*#449`] -[visit_id name?*#449] [visit_exp []] -[visit_exp `name?*#450`] -[visit_id name?*#450] [visit_exp []] -[visit_exp `name?**#16`] -[visit_id name?**#16] [visit_exp []] -[visit_exp `deftype?*#3`] -[visit_id deftype?*#3] [visit_exp []] [visit_exp ft] [visit_id ft] not free [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I X*#13376 X*#13389 _ char*#1011 deftype?*#4 id name?*#451 name?*#452 name?*#453 name?*#454 name?*#455 name?*#456 name?*#457 name?*#458 name?*#459 name?*#460 name?**#17 resulttype#3032 t_1 t_2 -dims \ I = X*#13376, X*#13389, _, char*#1011, deftype?*#4, id, name?*#451, name?*#452, name?*#453, name?*#454, name?*#455, name?*#456, name?*#457, name?*#458, name?*#459, name?*#460, name?**#17, resulttype#3032, t_1, t_2 -[visit_exp (`FUNC%->%`_comptype{resulttype#3032}(`%`_resulttype{`X*#13376`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13389`}(t_2*{t_2 <- `t_2*`})), {`TYPES`{`name?*#451`} [], `TAGS`{`name?*#452`} [], `GLOBALS`{`name?*#453`} [], `MEMS`{`name?*#454`} [], `TABLES`{`name?*#455`} [], `FUNCS`{`name?*#456`} [], `DATAS`{`name?*#457`} [], `ELEMS`{`name?*#458`} [], `LOCALS`{`name?*#459`} [], `LABELS`{`name?*#460`} [], `FIELDS`{`name?**#17`} [], `TYPEDEFS`{`deftype?*#4`} []})] -[visit_exp `FUNC%->%`_comptype{resulttype#3032}(`%`_resulttype{`X*#13376`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13389`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#3032] -[visit_id resulttype#3032] -[visit_exp (`%`_resulttype{`X*#13376`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13389`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#13376`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#13376`] -[visit_id X*#13376] +[check_dims] I _ id t_1 t_2 +dims \ I = _, id, t_1, t_2 +[visit_exp (`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` []})] +[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -91539,9 +72451,7 @@ dims \ I = X*#13376, X*#13389, _, char*#1011, deftype?*#4, id, name?*#451, name? [visit_exp `t_1*`] [visit_id t_1*] no dims [visit_id t_1*] -[visit_exp `%`_resulttype{`X*#13389`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#13389`] -[visit_id X*#13389] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -91552,54 +72462,27 @@ dims \ I = X*#13376, X*#13389, _, char*#1011, deftype?*#4, id, name?*#451, name? [visit_exp `t_2*`] [visit_id t_2*] no dims [visit_id t_2*] -[visit_exp {`TYPES`{`name?*#451`} [], `TAGS`{`name?*#452`} [], `GLOBALS`{`name?*#453`} [], `MEMS`{`name?*#454`} [], `TABLES`{`name?*#455`} [], `FUNCS`{`name?*#456`} [], `DATAS`{`name?*#457`} [], `ELEMS`{`name?*#458`} [], `LOCALS`{`name?*#459`} [], `LABELS`{`name?*#460`} [], `FIELDS`{`name?**#17`} [], `TYPEDEFS`{`deftype?*#4`} []}] -[visit_exp `name?*#451`] -[visit_id name?*#451] +[visit_exp {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [], `TYPEDEFS` []}] [visit_exp []] -[visit_exp `name?*#452`] -[visit_id name?*#452] [visit_exp []] -[visit_exp `name?*#453`] -[visit_id name?*#453] [visit_exp []] -[visit_exp `name?*#454`] -[visit_id name?*#454] [visit_exp []] -[visit_exp `name?*#455`] -[visit_id name?*#455] [visit_exp []] -[visit_exp `name?*#456`] -[visit_id name?*#456] [visit_exp []] -[visit_exp `name?*#457`] -[visit_id name?*#457] [visit_exp []] -[visit_exp `name?*#458`] -[visit_id name?*#458] [visit_exp []] -[visit_exp `name?*#459`] -[visit_id name?*#459] [visit_exp []] -[visit_exp `name?*#460`] -[visit_id name?*#460] [visit_exp []] -[visit_exp `name?**#17`] -[visit_id name?**#17] [visit_exp []] -[visit_exp `deftype?*#4`] -[visit_id deftype?*#4] [visit_exp []] -[visit_exp (t_1, ?(`%`_name{`char*#1011`}(lift(id?{id <- `id?`}))))*{`char*#1011` <- `char*#1011*`, `id?` <- `id?*`, t_1 <- `t_1*`}] -[scope_enter char*#1011] +[visit_exp (t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}] [scope_enter id?] [scope_enter t_1] -[visit_exp (t_1, ?(`%`_name{`char*#1011`}(lift(id?{id <- `id?`}))))] +[visit_exp (t_1, ?(`%`_name(lift(id?{id <- `id?`}))))] [visit_exp t_1] [visit_id t_1] not free -[visit_exp ?(`%`_name{`char*#1011`}(lift(id?{id <- `id?`})))] -[visit_exp `%`_name{`char*#1011`}(lift(id?{id <- `id?`}))] -[visit_exp `char*#1011`] -[visit_id char*#1011] not free +[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] +[visit_exp `%`_name(lift(id?{id <- `id?`}))] [visit_exp (lift(id?{id <- `id?`}))] [visit_exp lift(id?{id <- `id?`})] [visit_exp id?{id <- `id?`}] @@ -91611,24 +72494,23 @@ dims \ I = X*#13376, X*#13389, _, char*#1011, deftype?*#4, id, name?*#451, name? [visit_exp `id?`] [visit_id id?] not free [visit_id id?] no dims -[visit_id char*#1011] not free [visit_id id?] not free [visit_id id?] no dims [visit_id t_1] not free [scope_exit t_1] [scope_exit id?] -[scope_exit char*#1011] -[visit_exp `char*#1011*`] -[visit_id char*#1011*] no dims -[visit_id char*#1011*] [visit_exp `id?*`] [visit_id id?*] no dims [visit_id id?*] [visit_exp `t_1*`] [visit_id t_1*] not free [visit_id t_1*] no dims +[scope_enter _] [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_exit _] +[scope_exit _] [visit_exp I] [visit_id I] not free [visit_id I] no dims @@ -91645,10 +72527,14 @@ dims \ I = X*#13376, X*#13389, _, char*#1011, deftype?*#4, id, name?*#451, name? [visit_id I] not free [visit_id I] no dims [visit_id I] not free +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_exit _] +[scope_exit _] ps' = [check_dims] [check_dims] @@ -91657,17 +72543,11 @@ dims \ = [visit_exp ()] ps' = (I : I) [check_dims] I _ -[check_dims] I I' comptype#523 ct fin final?#523 typeidx#2121 typeuse*#523 x -dims \ I = I', comptype#523, ct, fin, final?#523, typeidx#2121, typeuse*#523, x -[visit_exp (`SUB`_subtype{`final?#523`, `typeuse*#523`, comptype#523}(fin?{fin <- `fin?`}, `_IDX`_typeuse{typeidx#2121}(x)*{typeidx#2121 <- `typeidx#2121*`, x <- `x*`}, ct), I')] -[visit_exp `SUB`_subtype{`final?#523`, `typeuse*#523`, comptype#523}(fin?{fin <- `fin?`}, `_IDX`_typeuse{typeidx#2121}(x)*{typeidx#2121 <- `typeidx#2121*`, x <- `x*`}, ct)] -[visit_exp `final?#523`] -[visit_id final?#523] -[visit_exp `typeuse*#523`] -[visit_id typeuse*#523] -[visit_exp comptype#523] -[visit_id comptype#523] -[visit_exp (fin?{fin <- `fin?`}, `_IDX`_typeuse{typeidx#2121}(x)*{typeidx#2121 <- `typeidx#2121*`, x <- `x*`}, ct)] +[check_dims] I I' ct fin x +dims \ I = I', ct, fin, x +[visit_exp (`SUB`_subtype(fin?{fin <- `fin?`}, `_IDX`_typeuse(x)*{x <- `x*`}, ct), I')] +[visit_exp `SUB`_subtype(fin?{fin <- `fin?`}, `_IDX`_typeuse(x)*{x <- `x*`}, ct)] +[visit_exp (fin?{fin <- `fin?`}, `_IDX`_typeuse(x)*{x <- `x*`}, ct)] [visit_exp fin?{fin <- `fin?`}] [scope_enter fin] [visit_exp fin] @@ -91677,22 +72557,14 @@ dims \ I = I', comptype#523, ct, fin, final?#523, typeidx#2121, typeuse*#523, x [visit_exp `fin?`] [visit_id fin?] no dims [visit_id fin?] -[visit_exp `_IDX`_typeuse{typeidx#2121}(x)*{typeidx#2121 <- `typeidx#2121*`, x <- `x*`}] -[scope_enter typeidx#2121] +[visit_exp `_IDX`_typeuse(x)*{x <- `x*`}] [scope_enter x] -[visit_exp `_IDX`_typeuse{typeidx#2121}(x)] -[visit_exp typeidx#2121] -[visit_id typeidx#2121] not free +[visit_exp `_IDX`_typeuse(x)] [visit_exp (x)] [visit_exp x] [visit_id x] not free -[visit_id typeidx#2121] not free [visit_id x] not free [scope_exit x] -[scope_exit typeidx#2121] -[visit_exp `typeidx#2121*`] -[visit_id typeidx#2121*] no dims -[visit_id typeidx#2121*] [visit_exp `x*`] [visit_id x*] no dims [visit_id x*] @@ -91730,10 +72602,14 @@ dims \ I = I', comptype#523, ct, fin, final?#523, typeidx#2121, typeuse*#523, x [visit_id I] not free [visit_id I] no dims [visit_id I] not free +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_exit _] +[scope_exit _] ps' = (I : I) [check_dims] I _ [check_dims] I @@ -91744,28 +72620,28 @@ ps' = (I : I) [visit_id I] not free [visit_id I] no dims [visit_id I] not free +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_exit _] +[scope_exit _] ps' = (I : I) [check_dims] I _ -[check_dims] I I' char*#1017 char*#1023 deftype?*#5 id name?*#461 name?*#462 name?*#463 name?*#464 name?*#465 name?*#466 name?*#467 name?*#468 name?*#469 name?*#470 name?**#18 st -dims \ I = I', char*#1017, char*#1023, deftype?*#5, id, name?*#461, name?*#462, name?*#463, name?*#464, name?*#465, name?*#466, name?*#467, name?*#468, name?*#469, name?*#470, name?**#18, st -[visit_exp (st, I' +++ {`TYPES`{`name?*#461`} [?(`%`_name{`char*#1023`}(lift(id?{id <- `id?`})))], `TAGS`{`name?*#462`} [], `GLOBALS`{`name?*#463`} [], `MEMS`{`name?*#464`} [], `TABLES`{`name?*#465`} [], `FUNCS`{`name?*#466`} [], `DATAS`{`name?*#467`} [], `ELEMS`{`name?*#468`} [], `LOCALS`{`name?*#469`} [], `LABELS`{`name?*#470`} [], `FIELDS`{`name?**#18`} [], `TYPEDEFS`{`deftype?*#5`} []})] +[check_dims] I I' id st +dims \ I = I', id, st +[visit_exp (st, I' +++ {`TYPES` [?(`%`_name(lift(id?{id <- `id?`})))], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [], `TYPEDEFS` []})] [visit_exp st] [visit_id st] -[visit_exp I' +++ {`TYPES`{`name?*#461`} [?(`%`_name{`char*#1023`}(lift(id?{id <- `id?`})))], `TAGS`{`name?*#462`} [], `GLOBALS`{`name?*#463`} [], `MEMS`{`name?*#464`} [], `TABLES`{`name?*#465`} [], `FUNCS`{`name?*#466`} [], `DATAS`{`name?*#467`} [], `ELEMS`{`name?*#468`} [], `LOCALS`{`name?*#469`} [], `LABELS`{`name?*#470`} [], `FIELDS`{`name?**#18`} [], `TYPEDEFS`{`deftype?*#5`} []}] +[visit_exp I' +++ {`TYPES` [?(`%`_name(lift(id?{id <- `id?`})))], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [], `TYPEDEFS` []}] [visit_exp I'] [visit_id I'] -[visit_exp {`TYPES`{`name?*#461`} [?(`%`_name{`char*#1023`}(lift(id?{id <- `id?`})))], `TAGS`{`name?*#462`} [], `GLOBALS`{`name?*#463`} [], `MEMS`{`name?*#464`} [], `TABLES`{`name?*#465`} [], `FUNCS`{`name?*#466`} [], `DATAS`{`name?*#467`} [], `ELEMS`{`name?*#468`} [], `LOCALS`{`name?*#469`} [], `LABELS`{`name?*#470`} [], `FIELDS`{`name?**#18`} [], `TYPEDEFS`{`deftype?*#5`} []}] -[visit_exp `name?*#461`] -[visit_id name?*#461] -[visit_exp [?(`%`_name{`char*#1023`}(lift(id?{id <- `id?`})))]] -[visit_exp ?(`%`_name{`char*#1023`}(lift(id?{id <- `id?`})))] -[visit_exp `%`_name{`char*#1023`}(lift(id?{id <- `id?`}))] -[visit_exp `char*#1023`] -[visit_id char*#1023] +[visit_exp {`TYPES` [?(`%`_name(lift(id?{id <- `id?`})))], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [], `TYPEDEFS` []}] +[visit_exp [?(`%`_name(lift(id?{id <- `id?`})))]] +[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] +[visit_exp `%`_name(lift(id?{id <- `id?`}))] [visit_exp (lift(id?{id <- `id?`}))] [visit_exp lift(id?{id <- `id?`})] [visit_exp id?{id <- `id?`}] @@ -91777,43 +72653,19 @@ dims \ I = I', char*#1017, char*#1023, deftype?*#5, id, name?*#461, name?*#462, [visit_exp `id?`] [visit_id id?] no dims [visit_id id?] -[visit_exp `name?*#462`] -[visit_id name?*#462] [visit_exp []] -[visit_exp `name?*#463`] -[visit_id name?*#463] [visit_exp []] -[visit_exp `name?*#464`] -[visit_id name?*#464] [visit_exp []] -[visit_exp `name?*#465`] -[visit_id name?*#465] [visit_exp []] -[visit_exp `name?*#466`] -[visit_id name?*#466] [visit_exp []] -[visit_exp `name?*#467`] -[visit_id name?*#467] [visit_exp []] -[visit_exp `name?*#468`] -[visit_id name?*#468] [visit_exp []] -[visit_exp `name?*#469`] -[visit_id name?*#469] [visit_exp []] -[visit_exp `name?*#470`] -[visit_id name?*#470] [visit_exp []] -[visit_exp `name?**#18`] -[visit_id name?**#18] [visit_exp []] -[visit_exp `deftype?*#5`] -[visit_id deftype?*#5] [visit_exp []] -[visit_exp ?(`%`_name{`char*#1017`}(lift(id?{id <- `id?`})))] -[visit_exp `%`_name{`char*#1017`}(lift(id?{id <- `id?`}))] -[visit_exp `char*#1017`] -[visit_id char*#1017] +[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] +[visit_exp `%`_name(lift(id?{id <- `id?`}))] [visit_exp (lift(id?{id <- `id?`}))] [visit_exp lift(id?{id <- `id?`})] [visit_exp id?{id <- `id?`}] @@ -91834,20 +72686,22 @@ dims \ I = I', char*#1017, char*#1023, deftype?*#5, id, name?*#461, name?*#462, [visit_id I] not free [visit_id I] no dims [visit_id I] not free +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_exit _] +[scope_exit _] ps' = (I : I) [check_dims] I _ -[check_dims] I I' X*#13404 _ st -dims \ I = I', X*#13404, _, st -[visit_exp (`REC`_rectype(`%`_list{`X*#13404`}(st*{st <- `st*`})), $concat_idctxt(I'*{I' <- `I'*`}))] -[visit_exp `REC`_rectype(`%`_list{`X*#13404`}(st*{st <- `st*`}))] -[visit_exp (`%`_list{`X*#13404`}(st*{st <- `st*`}))] -[visit_exp `%`_list{`X*#13404`}(st*{st <- `st*`})] -[visit_exp `X*#13404`] -[visit_id X*#13404] +[check_dims] I I' _ st +dims \ I = I', _, st +[visit_exp (`REC`_rectype(`%`_list(st*{st <- `st*`})), $concat_idctxt(I'*{I' <- `I'*`}))] +[visit_exp `REC`_rectype(`%`_list(st*{st <- `st*`}))] +[visit_exp (`%`_list(st*{st <- `st*`}))] +[visit_exp `%`_list(st*{st <- `st*`})] [visit_exp (st*{st <- `st*`})] [visit_exp st*{st <- `st*`}] [scope_enter st] @@ -91886,16 +72740,24 @@ dims \ I = I', X*#13404, _, st [visit_exp `st*`] [visit_id st*] not free [visit_id st*] no dims +[scope_enter _] [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_exit _] +[scope_exit _] [visit_exp I] [visit_id I] not free [visit_id I] no dims [visit_id I] not free +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_exit _] +[scope_exit _] ps' = (I : I) [check_dims] I _ [check_dims] I @@ -91906,10 +72768,14 @@ ps' = (I : I) [visit_id I] not free [visit_id I] no dims [visit_id I] not free +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_exit _] +[scope_exit _] ps' = [check_dims] [check_dims] @@ -91925,67 +72791,45 @@ ps' = [check_dims] ps' = [check_dims] -[check_dims] i#95568 i#95590 n u64#571 u64?#545 -dims \ = i#95568, i#95590, n, u64#571, u64?#545 -[visit_exp `[%..%]`_limits{u64#571, `u64?#545`}(`%`_u64{i#95590}(n), ?())] -[visit_exp u64#571] -[visit_id u64#571] -[visit_exp `u64?#545`] -[visit_id u64?#545] -[visit_exp (`%`_u64{i#95590}(n), ?())] -[visit_exp `%`_u64{i#95590}(n)] -[visit_exp i#95590] -[visit_id i#95590] +[check_dims] n +dims \ = n +[visit_exp `[%..%]`_limits(`%`_u64(n), ?())] +[visit_exp (`%`_u64(n), ?())] +[visit_exp `%`_u64(n)] [visit_exp (n)] [visit_exp n] [visit_id n] [visit_exp ?()] -[visit_exp `%`_u64{i#95568}(n)] -[visit_exp i#95568] -[visit_id i#95568] +[visit_exp `%`_u64(n)] [visit_exp (n)] [visit_exp n] [visit_id n] not free -[check_dims] i#95615 i#95642 i#95666 i#95688 m n u64#583 u64?#557 -dims \ = i#95615, i#95642, i#95666, i#95688, m, n, u64#583, u64?#557 -[visit_exp `[%..%]`_limits{u64#583, `u64?#557`}(`%`_u64{i#95666}(n), ?(`%`_u64{i#95688}(m)))] -[visit_exp u64#583] -[visit_id u64#583] -[visit_exp `u64?#557`] -[visit_id u64?#557] -[visit_exp (`%`_u64{i#95666}(n), ?(`%`_u64{i#95688}(m)))] -[visit_exp `%`_u64{i#95666}(n)] -[visit_exp i#95666] -[visit_id i#95666] +[check_dims] m n +dims \ = m, n +[visit_exp `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))] +[visit_exp (`%`_u64(n), ?(`%`_u64(m)))] +[visit_exp `%`_u64(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp ?(`%`_u64{i#95688}(m))] -[visit_exp `%`_u64{i#95688}(m)] -[visit_exp i#95688] -[visit_id i#95688] +[visit_exp ?(`%`_u64(m))] +[visit_exp `%`_u64(m)] [visit_exp (m)] [visit_exp m] [visit_id m] -[visit_exp `%`_u64{i#95615}(n)] -[visit_exp i#95615] -[visit_id i#95615] +[visit_exp `%`_u64(n)] [visit_exp (n)] [visit_exp n] [visit_id n] not free -[visit_exp `%`_u64{i#95642}(m)] -[visit_exp i#95642] -[visit_id i#95642] +[visit_exp `%`_u64(m)] [visit_exp (m)] [visit_exp m] [visit_id m] not free ps' = (I : I) [check_dims] I -[check_dims] I I' typeidx#2123 x -dims \ I = I', typeidx#2123, x -[visit_exp `_IDX`_tagtype{typeidx#2123}(x)] -[visit_exp typeidx#2123] -[visit_id typeidx#2123] +[check_dims] I I' x +dims \ I = I', x +[visit_exp `_IDX`_tagtype(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -92000,13 +72844,9 @@ dims \ I = I', typeidx#2123, x [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I mut?#1561 t valtype#1167 -dims \ I = mut?#1561, t, valtype#1167 -[visit_exp `%%`_globaltype{`mut?#1561`, valtype#1167}(?(), t)] -[visit_exp `mut?#1561`] -[visit_id mut?#1561] -[visit_exp valtype#1167] -[visit_id valtype#1167] +[check_dims] I t +dims \ I = t +[visit_exp `%%`_globaltype(?(), t)] [visit_exp (?(), t)] [visit_exp ?()] [visit_exp t] @@ -92016,13 +72856,9 @@ dims \ I = mut?#1561, t, valtype#1167 [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I mut?#1573 t valtype#1179 -dims \ I = mut?#1573, t, valtype#1179 -[visit_exp `%%`_globaltype{`mut?#1573`, valtype#1179}(?(`MUT`_mut), t)] -[visit_exp `mut?#1573`] -[visit_id mut?#1573] -[visit_exp valtype#1179] -[visit_id valtype#1179] +[check_dims] I t +dims \ I = t +[visit_exp `%%`_globaltype(?(`MUT`_mut), t)] [visit_exp (?(`MUT`_mut), t)] [visit_exp ?(`MUT`_mut)] [visit_exp `MUT`_mut] @@ -92037,13 +72873,9 @@ dims \ I = mut?#1573, t, valtype#1179 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I addrtype#1483 at lim limits#1483 -dims \ I = addrtype#1483, at, lim, limits#1483 -[visit_exp `%%PAGE`_memtype{addrtype#1483, limits#1483}(at, lim)] -[visit_exp addrtype#1483] -[visit_id addrtype#1483] -[visit_exp limits#1483] -[visit_id limits#1483] +[check_dims] I at lim +dims \ I = at, lim +[visit_exp `%%PAGE`_memtype(at, lim)] [visit_exp (at, lim)] [visit_exp at] [visit_id at] @@ -92056,15 +72888,9 @@ dims \ I = addrtype#1483, at, lim, limits#1483 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I addrtype#1495 at lim limits#1495 reftype#4291 rt -dims \ I = addrtype#1495, at, lim, limits#1495, reftype#4291, rt -[visit_exp `%%%`_tabletype{addrtype#1495, limits#1495, reftype#4291}(at, lim, rt)] -[visit_exp addrtype#1495] -[visit_id addrtype#1495] -[visit_exp limits#1495] -[visit_id limits#1495] -[visit_exp reftype#4291] -[visit_id reftype#4291] +[check_dims] I at lim rt +dims \ I = at, lim, rt +[visit_exp `%%%`_tabletype(at, lim, rt)] [visit_exp (at, lim, rt)] [visit_exp at] [visit_id at] @@ -92084,26 +72910,18 @@ dims \ I = addrtype#1495, at, lim, limits#1495, reftype#4291, rt [visit_id I] not free ps' = (I : I) [check_dims] I _ -[check_dims] I char*#1029 char*#1035 deftype?*#6 id jt name?*#471 name?*#472 name?*#473 name?*#474 name?*#475 name?*#476 name?*#477 name?*#478 name?*#479 name?*#480 name?**#19 tagtype#436 -dims \ I = char*#1029, char*#1035, deftype?*#6, id, jt, name?*#471, name?*#472, name?*#473, name?*#474, name?*#475, name?*#476, name?*#477, name?*#478, name?*#479, name?*#480, name?**#19, tagtype#436 -[visit_exp (`TAG`_externtype{tagtype#436}(jt), {`TYPES`{`name?*#471`} [], `TAGS`{`name?*#472`} [?(`%`_name{`char*#1035`}(lift(id?{id <- `id?`})))], `GLOBALS`{`name?*#473`} [], `MEMS`{`name?*#474`} [], `TABLES`{`name?*#475`} [], `FUNCS`{`name?*#476`} [], `DATAS`{`name?*#477`} [], `ELEMS`{`name?*#478`} [], `LOCALS`{`name?*#479`} [], `LABELS`{`name?*#480`} [], `FIELDS`{`name?**#19`} [], `TYPEDEFS`{`deftype?*#6`} []})] -[visit_exp `TAG`_externtype{tagtype#436}(jt)] -[visit_exp tagtype#436] -[visit_id tagtype#436] +[check_dims] I id jt +dims \ I = id, jt +[visit_exp (`TAG`_externtype(jt), {`TYPES` [], `TAGS` [?(`%`_name(lift(id?{id <- `id?`})))], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [], `TYPEDEFS` []})] +[visit_exp `TAG`_externtype(jt)] [visit_exp (jt)] [visit_exp jt] [visit_id jt] -[visit_exp {`TYPES`{`name?*#471`} [], `TAGS`{`name?*#472`} [?(`%`_name{`char*#1035`}(lift(id?{id <- `id?`})))], `GLOBALS`{`name?*#473`} [], `MEMS`{`name?*#474`} [], `TABLES`{`name?*#475`} [], `FUNCS`{`name?*#476`} [], `DATAS`{`name?*#477`} [], `ELEMS`{`name?*#478`} [], `LOCALS`{`name?*#479`} [], `LABELS`{`name?*#480`} [], `FIELDS`{`name?**#19`} [], `TYPEDEFS`{`deftype?*#6`} []}] -[visit_exp `name?*#471`] -[visit_id name?*#471] -[visit_exp []] -[visit_exp `name?*#472`] -[visit_id name?*#472] -[visit_exp [?(`%`_name{`char*#1035`}(lift(id?{id <- `id?`})))]] -[visit_exp ?(`%`_name{`char*#1035`}(lift(id?{id <- `id?`})))] -[visit_exp `%`_name{`char*#1035`}(lift(id?{id <- `id?`}))] -[visit_exp `char*#1035`] -[visit_id char*#1035] +[visit_exp {`TYPES` [], `TAGS` [?(`%`_name(lift(id?{id <- `id?`})))], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [], `TYPEDEFS` []}] +[visit_exp []] +[visit_exp [?(`%`_name(lift(id?{id <- `id?`})))]] +[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] +[visit_exp `%`_name(lift(id?{id <- `id?`}))] [visit_exp (lift(id?{id <- `id?`}))] [visit_exp lift(id?{id <- `id?`})] [visit_exp id?{id <- `id?`}] @@ -92115,40 +72933,18 @@ dims \ I = char*#1029, char*#1035, deftype?*#6, id, jt, name?*#471, name?*#472, [visit_exp `id?`] [visit_id id?] no dims [visit_id id?] -[visit_exp `name?*#473`] -[visit_id name?*#473] [visit_exp []] -[visit_exp `name?*#474`] -[visit_id name?*#474] [visit_exp []] -[visit_exp `name?*#475`] -[visit_id name?*#475] [visit_exp []] -[visit_exp `name?*#476`] -[visit_id name?*#476] [visit_exp []] -[visit_exp `name?*#477`] -[visit_id name?*#477] [visit_exp []] -[visit_exp `name?*#478`] -[visit_id name?*#478] [visit_exp []] -[visit_exp `name?*#479`] -[visit_id name?*#479] [visit_exp []] -[visit_exp `name?*#480`] -[visit_id name?*#480] [visit_exp []] -[visit_exp `name?**#19`] -[visit_id name?**#19] [visit_exp []] -[visit_exp `deftype?*#6`] -[visit_id deftype?*#6] [visit_exp []] -[visit_exp ?(`%`_name{`char*#1029`}(lift(id?{id <- `id?`})))] -[visit_exp `%`_name{`char*#1029`}(lift(id?{id <- `id?`}))] -[visit_exp `char*#1029`] -[visit_id char*#1029] +[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] +[visit_exp `%`_name(lift(id?{id <- `id?`}))] [visit_exp (lift(id?{id <- `id?`}))] [visit_exp lift(id?{id <- `id?`})] [visit_exp id?{id <- `id?`}] @@ -92165,29 +72961,19 @@ dims \ I = char*#1029, char*#1035, deftype?*#6, id, jt, name?*#471, name?*#472, [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I char*#1041 char*#1047 deftype?*#7 globaltype#2397 gt id name?*#481 name?*#482 name?*#483 name?*#484 name?*#485 name?*#486 name?*#487 name?*#488 name?*#489 name?*#490 name?**#20 -dims \ I = char*#1041, char*#1047, deftype?*#7, globaltype#2397, gt, id, name?*#481, name?*#482, name?*#483, name?*#484, name?*#485, name?*#486, name?*#487, name?*#488, name?*#489, name?*#490, name?**#20 -[visit_exp (`GLOBAL`_externtype{globaltype#2397}(gt), {`TYPES`{`name?*#481`} [], `TAGS`{`name?*#482`} [], `GLOBALS`{`name?*#483`} [?(`%`_name{`char*#1047`}(lift(id?{id <- `id?`})))], `MEMS`{`name?*#484`} [], `TABLES`{`name?*#485`} [], `FUNCS`{`name?*#486`} [], `DATAS`{`name?*#487`} [], `ELEMS`{`name?*#488`} [], `LOCALS`{`name?*#489`} [], `LABELS`{`name?*#490`} [], `FIELDS`{`name?**#20`} [], `TYPEDEFS`{`deftype?*#7`} []})] -[visit_exp `GLOBAL`_externtype{globaltype#2397}(gt)] -[visit_exp globaltype#2397] -[visit_id globaltype#2397] +[check_dims] I gt id +dims \ I = gt, id +[visit_exp (`GLOBAL`_externtype(gt), {`TYPES` [], `TAGS` [], `GLOBALS` [?(`%`_name(lift(id?{id <- `id?`})))], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [], `TYPEDEFS` []})] +[visit_exp `GLOBAL`_externtype(gt)] [visit_exp (gt)] [visit_exp gt] [visit_id gt] -[visit_exp {`TYPES`{`name?*#481`} [], `TAGS`{`name?*#482`} [], `GLOBALS`{`name?*#483`} [?(`%`_name{`char*#1047`}(lift(id?{id <- `id?`})))], `MEMS`{`name?*#484`} [], `TABLES`{`name?*#485`} [], `FUNCS`{`name?*#486`} [], `DATAS`{`name?*#487`} [], `ELEMS`{`name?*#488`} [], `LOCALS`{`name?*#489`} [], `LABELS`{`name?*#490`} [], `FIELDS`{`name?**#20`} [], `TYPEDEFS`{`deftype?*#7`} []}] -[visit_exp `name?*#481`] -[visit_id name?*#481] -[visit_exp []] -[visit_exp `name?*#482`] -[visit_id name?*#482] -[visit_exp []] -[visit_exp `name?*#483`] -[visit_id name?*#483] -[visit_exp [?(`%`_name{`char*#1047`}(lift(id?{id <- `id?`})))]] -[visit_exp ?(`%`_name{`char*#1047`}(lift(id?{id <- `id?`})))] -[visit_exp `%`_name{`char*#1047`}(lift(id?{id <- `id?`}))] -[visit_exp `char*#1047`] -[visit_id char*#1047] +[visit_exp {`TYPES` [], `TAGS` [], `GLOBALS` [?(`%`_name(lift(id?{id <- `id?`})))], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [], `TYPEDEFS` []}] +[visit_exp []] +[visit_exp []] +[visit_exp [?(`%`_name(lift(id?{id <- `id?`})))]] +[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] +[visit_exp `%`_name(lift(id?{id <- `id?`}))] [visit_exp (lift(id?{id <- `id?`}))] [visit_exp lift(id?{id <- `id?`})] [visit_exp id?{id <- `id?`}] @@ -92199,37 +72985,17 @@ dims \ I = char*#1041, char*#1047, deftype?*#7, globaltype#2397, gt, id, name?*# [visit_exp `id?`] [visit_id id?] no dims [visit_id id?] -[visit_exp `name?*#484`] -[visit_id name?*#484] [visit_exp []] -[visit_exp `name?*#485`] -[visit_id name?*#485] [visit_exp []] -[visit_exp `name?*#486`] -[visit_id name?*#486] [visit_exp []] -[visit_exp `name?*#487`] -[visit_id name?*#487] [visit_exp []] -[visit_exp `name?*#488`] -[visit_id name?*#488] [visit_exp []] -[visit_exp `name?*#489`] -[visit_id name?*#489] [visit_exp []] -[visit_exp `name?*#490`] -[visit_id name?*#490] [visit_exp []] -[visit_exp `name?**#20`] -[visit_id name?**#20] [visit_exp []] -[visit_exp `deftype?*#7`] -[visit_id deftype?*#7] [visit_exp []] -[visit_exp ?(`%`_name{`char*#1041`}(lift(id?{id <- `id?`})))] -[visit_exp `%`_name{`char*#1041`}(lift(id?{id <- `id?`}))] -[visit_exp `char*#1041`] -[visit_id char*#1041] +[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] +[visit_exp `%`_name(lift(id?{id <- `id?`}))] [visit_exp (lift(id?{id <- `id?`}))] [visit_exp lift(id?{id <- `id?`})] [visit_exp id?{id <- `id?`}] @@ -92246,32 +73012,20 @@ dims \ I = char*#1041, char*#1047, deftype?*#7, globaltype#2397, gt, id, name?*# [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I char*#1053 char*#1059 deftype?*#8 id memtype#858 mt name?*#491 name?*#492 name?*#493 name?*#494 name?*#495 name?*#496 name?*#497 name?*#498 name?*#499 name?*#500 name?**#21 -dims \ I = char*#1053, char*#1059, deftype?*#8, id, memtype#858, mt, name?*#491, name?*#492, name?*#493, name?*#494, name?*#495, name?*#496, name?*#497, name?*#498, name?*#499, name?*#500, name?**#21 -[visit_exp (`MEM`_externtype{memtype#858}(mt), {`TYPES`{`name?*#491`} [], `TAGS`{`name?*#492`} [], `GLOBALS`{`name?*#493`} [], `MEMS`{`name?*#494`} [?(`%`_name{`char*#1059`}(lift(id?{id <- `id?`})))], `TABLES`{`name?*#495`} [], `FUNCS`{`name?*#496`} [], `DATAS`{`name?*#497`} [], `ELEMS`{`name?*#498`} [], `LOCALS`{`name?*#499`} [], `LABELS`{`name?*#500`} [], `FIELDS`{`name?**#21`} [], `TYPEDEFS`{`deftype?*#8`} []})] -[visit_exp `MEM`_externtype{memtype#858}(mt)] -[visit_exp memtype#858] -[visit_id memtype#858] +[check_dims] I id mt +dims \ I = id, mt +[visit_exp (`MEM`_externtype(mt), {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [?(`%`_name(lift(id?{id <- `id?`})))], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [], `TYPEDEFS` []})] +[visit_exp `MEM`_externtype(mt)] [visit_exp (mt)] [visit_exp mt] [visit_id mt] -[visit_exp {`TYPES`{`name?*#491`} [], `TAGS`{`name?*#492`} [], `GLOBALS`{`name?*#493`} [], `MEMS`{`name?*#494`} [?(`%`_name{`char*#1059`}(lift(id?{id <- `id?`})))], `TABLES`{`name?*#495`} [], `FUNCS`{`name?*#496`} [], `DATAS`{`name?*#497`} [], `ELEMS`{`name?*#498`} [], `LOCALS`{`name?*#499`} [], `LABELS`{`name?*#500`} [], `FIELDS`{`name?**#21`} [], `TYPEDEFS`{`deftype?*#8`} []}] -[visit_exp `name?*#491`] -[visit_id name?*#491] -[visit_exp []] -[visit_exp `name?*#492`] -[visit_id name?*#492] -[visit_exp []] -[visit_exp `name?*#493`] -[visit_id name?*#493] -[visit_exp []] -[visit_exp `name?*#494`] -[visit_id name?*#494] -[visit_exp [?(`%`_name{`char*#1059`}(lift(id?{id <- `id?`})))]] -[visit_exp ?(`%`_name{`char*#1059`}(lift(id?{id <- `id?`})))] -[visit_exp `%`_name{`char*#1059`}(lift(id?{id <- `id?`}))] -[visit_exp `char*#1059`] -[visit_id char*#1059] +[visit_exp {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [?(`%`_name(lift(id?{id <- `id?`})))], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [], `TYPEDEFS` []}] +[visit_exp []] +[visit_exp []] +[visit_exp []] +[visit_exp [?(`%`_name(lift(id?{id <- `id?`})))]] +[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] +[visit_exp `%`_name(lift(id?{id <- `id?`}))] [visit_exp (lift(id?{id <- `id?`}))] [visit_exp lift(id?{id <- `id?`})] [visit_exp id?{id <- `id?`}] @@ -92283,34 +73037,16 @@ dims \ I = char*#1053, char*#1059, deftype?*#8, id, memtype#858, mt, name?*#491, [visit_exp `id?`] [visit_id id?] no dims [visit_id id?] -[visit_exp `name?*#495`] -[visit_id name?*#495] [visit_exp []] -[visit_exp `name?*#496`] -[visit_id name?*#496] [visit_exp []] -[visit_exp `name?*#497`] -[visit_id name?*#497] [visit_exp []] -[visit_exp `name?*#498`] -[visit_id name?*#498] [visit_exp []] -[visit_exp `name?*#499`] -[visit_id name?*#499] [visit_exp []] -[visit_exp `name?*#500`] -[visit_id name?*#500] [visit_exp []] -[visit_exp `name?**#21`] -[visit_id name?**#21] [visit_exp []] -[visit_exp `deftype?*#8`] -[visit_id deftype?*#8] [visit_exp []] -[visit_exp ?(`%`_name{`char*#1053`}(lift(id?{id <- `id?`})))] -[visit_exp `%`_name{`char*#1053`}(lift(id?{id <- `id?`}))] -[visit_exp `char*#1053`] -[visit_id char*#1053] +[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] +[visit_exp `%`_name(lift(id?{id <- `id?`}))] [visit_exp (lift(id?{id <- `id?`}))] [visit_exp lift(id?{id <- `id?`})] [visit_exp id?{id <- `id?`}] @@ -92327,35 +73063,21 @@ dims \ I = char*#1053, char*#1059, deftype?*#8, id, memtype#858, mt, name?*#491, [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I char*#1065 char*#1071 deftype?*#9 id name?*#501 name?*#502 name?*#503 name?*#504 name?*#505 name?*#506 name?*#507 name?*#508 name?*#509 name?*#510 name?**#22 tabletype#1280 tt -dims \ I = char*#1065, char*#1071, deftype?*#9, id, name?*#501, name?*#502, name?*#503, name?*#504, name?*#505, name?*#506, name?*#507, name?*#508, name?*#509, name?*#510, name?**#22, tabletype#1280, tt -[visit_exp (`TABLE`_externtype{tabletype#1280}(tt), {`TYPES`{`name?*#501`} [], `TAGS`{`name?*#502`} [], `GLOBALS`{`name?*#503`} [], `MEMS`{`name?*#504`} [], `TABLES`{`name?*#505`} [?(`%`_name{`char*#1071`}(lift(id?{id <- `id?`})))], `FUNCS`{`name?*#506`} [], `DATAS`{`name?*#507`} [], `ELEMS`{`name?*#508`} [], `LOCALS`{`name?*#509`} [], `LABELS`{`name?*#510`} [], `FIELDS`{`name?**#22`} [], `TYPEDEFS`{`deftype?*#9`} []})] -[visit_exp `TABLE`_externtype{tabletype#1280}(tt)] -[visit_exp tabletype#1280] -[visit_id tabletype#1280] +[check_dims] I id tt +dims \ I = id, tt +[visit_exp (`TABLE`_externtype(tt), {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [?(`%`_name(lift(id?{id <- `id?`})))], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [], `TYPEDEFS` []})] +[visit_exp `TABLE`_externtype(tt)] [visit_exp (tt)] [visit_exp tt] [visit_id tt] -[visit_exp {`TYPES`{`name?*#501`} [], `TAGS`{`name?*#502`} [], `GLOBALS`{`name?*#503`} [], `MEMS`{`name?*#504`} [], `TABLES`{`name?*#505`} [?(`%`_name{`char*#1071`}(lift(id?{id <- `id?`})))], `FUNCS`{`name?*#506`} [], `DATAS`{`name?*#507`} [], `ELEMS`{`name?*#508`} [], `LOCALS`{`name?*#509`} [], `LABELS`{`name?*#510`} [], `FIELDS`{`name?**#22`} [], `TYPEDEFS`{`deftype?*#9`} []}] -[visit_exp `name?*#501`] -[visit_id name?*#501] -[visit_exp []] -[visit_exp `name?*#502`] -[visit_id name?*#502] -[visit_exp []] -[visit_exp `name?*#503`] -[visit_id name?*#503] -[visit_exp []] -[visit_exp `name?*#504`] -[visit_id name?*#504] -[visit_exp []] -[visit_exp `name?*#505`] -[visit_id name?*#505] -[visit_exp [?(`%`_name{`char*#1071`}(lift(id?{id <- `id?`})))]] -[visit_exp ?(`%`_name{`char*#1071`}(lift(id?{id <- `id?`})))] -[visit_exp `%`_name{`char*#1071`}(lift(id?{id <- `id?`}))] -[visit_exp `char*#1071`] -[visit_id char*#1071] +[visit_exp {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [?(`%`_name(lift(id?{id <- `id?`})))], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [], `TYPEDEFS` []}] +[visit_exp []] +[visit_exp []] +[visit_exp []] +[visit_exp []] +[visit_exp [?(`%`_name(lift(id?{id <- `id?`})))]] +[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] +[visit_exp `%`_name(lift(id?{id <- `id?`}))] [visit_exp (lift(id?{id <- `id?`}))] [visit_exp lift(id?{id <- `id?`})] [visit_exp id?{id <- `id?`}] @@ -92367,31 +73089,15 @@ dims \ I = char*#1065, char*#1071, deftype?*#9, id, name?*#501, name?*#502, name [visit_exp `id?`] [visit_id id?] no dims [visit_id id?] -[visit_exp `name?*#506`] -[visit_id name?*#506] [visit_exp []] -[visit_exp `name?*#507`] -[visit_id name?*#507] [visit_exp []] -[visit_exp `name?*#508`] -[visit_id name?*#508] [visit_exp []] -[visit_exp `name?*#509`] -[visit_id name?*#509] [visit_exp []] -[visit_exp `name?*#510`] -[visit_id name?*#510] [visit_exp []] -[visit_exp `name?**#22`] -[visit_id name?**#22] [visit_exp []] -[visit_exp `deftype?*#9`] -[visit_id deftype?*#9] [visit_exp []] -[visit_exp ?(`%`_name{`char*#1065`}(lift(id?{id <- `id?`})))] -[visit_exp `%`_name{`char*#1065`}(lift(id?{id <- `id?`}))] -[visit_exp `char*#1065`] -[visit_id char*#1065] +[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] +[visit_exp `%`_name(lift(id?{id <- `id?`}))] [visit_exp (lift(id?{id <- `id?`}))] [visit_exp lift(id?{id <- `id?`})] [visit_exp id?{id <- `id?`}] @@ -92408,42 +73114,24 @@ dims \ I = char*#1065, char*#1071, deftype?*#9, id, name?*#501, name?*#502, name [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I I' char*#1077 char*#1083 deftype?*#10 id name?*#511 name?*#512 name?*#513 name?*#514 name?*#515 name?*#516 name?*#517 name?*#518 name?*#519 name?*#520 name?**#23 typeidx#2125 typeuse#77 x -dims \ I = I', char*#1077, char*#1083, deftype?*#10, id, name?*#511, name?*#512, name?*#513, name?*#514, name?*#515, name?*#516, name?*#517, name?*#518, name?*#519, name?*#520, name?**#23, typeidx#2125, typeuse#77, x -[visit_exp (`FUNC`_externtype{typeuse#77}(`_IDX`_typeuse{typeidx#2125}(x)), {`TYPES`{`name?*#511`} [], `TAGS`{`name?*#512`} [], `GLOBALS`{`name?*#513`} [], `MEMS`{`name?*#514`} [], `TABLES`{`name?*#515`} [], `FUNCS`{`name?*#516`} [?(`%`_name{`char*#1083`}(lift(id?{id <- `id?`})))], `DATAS`{`name?*#517`} [], `ELEMS`{`name?*#518`} [], `LOCALS`{`name?*#519`} [], `LABELS`{`name?*#520`} [], `FIELDS`{`name?**#23`} [], `TYPEDEFS`{`deftype?*#10`} []})] -[visit_exp `FUNC`_externtype{typeuse#77}(`_IDX`_typeuse{typeidx#2125}(x))] -[visit_exp typeuse#77] -[visit_id typeuse#77] -[visit_exp (`_IDX`_typeuse{typeidx#2125}(x))] -[visit_exp `_IDX`_typeuse{typeidx#2125}(x)] -[visit_exp typeidx#2125] -[visit_id typeidx#2125] +[check_dims] I I' id x +dims \ I = I', id, x +[visit_exp (`FUNC`_externtype(`_IDX`_typeuse(x)), {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [?(`%`_name(lift(id?{id <- `id?`})))], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [], `TYPEDEFS` []})] +[visit_exp `FUNC`_externtype(`_IDX`_typeuse(x))] +[visit_exp (`_IDX`_typeuse(x))] +[visit_exp `_IDX`_typeuse(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp {`TYPES`{`name?*#511`} [], `TAGS`{`name?*#512`} [], `GLOBALS`{`name?*#513`} [], `MEMS`{`name?*#514`} [], `TABLES`{`name?*#515`} [], `FUNCS`{`name?*#516`} [?(`%`_name{`char*#1083`}(lift(id?{id <- `id?`})))], `DATAS`{`name?*#517`} [], `ELEMS`{`name?*#518`} [], `LOCALS`{`name?*#519`} [], `LABELS`{`name?*#520`} [], `FIELDS`{`name?**#23`} [], `TYPEDEFS`{`deftype?*#10`} []}] -[visit_exp `name?*#511`] -[visit_id name?*#511] +[visit_exp {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [?(`%`_name(lift(id?{id <- `id?`})))], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [], `TYPEDEFS` []}] [visit_exp []] -[visit_exp `name?*#512`] -[visit_id name?*#512] [visit_exp []] -[visit_exp `name?*#513`] -[visit_id name?*#513] [visit_exp []] -[visit_exp `name?*#514`] -[visit_id name?*#514] [visit_exp []] -[visit_exp `name?*#515`] -[visit_id name?*#515] [visit_exp []] -[visit_exp `name?*#516`] -[visit_id name?*#516] -[visit_exp [?(`%`_name{`char*#1083`}(lift(id?{id <- `id?`})))]] -[visit_exp ?(`%`_name{`char*#1083`}(lift(id?{id <- `id?`})))] -[visit_exp `%`_name{`char*#1083`}(lift(id?{id <- `id?`}))] -[visit_exp `char*#1083`] -[visit_id char*#1083] +[visit_exp [?(`%`_name(lift(id?{id <- `id?`})))]] +[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] +[visit_exp `%`_name(lift(id?{id <- `id?`}))] [visit_exp (lift(id?{id <- `id?`}))] [visit_exp lift(id?{id <- `id?`})] [visit_exp id?{id <- `id?`}] @@ -92455,28 +73143,14 @@ dims \ I = I', char*#1077, char*#1083, deftype?*#10, id, name?*#511, name?*#512, [visit_exp `id?`] [visit_id id?] no dims [visit_id id?] -[visit_exp `name?*#517`] -[visit_id name?*#517] [visit_exp []] -[visit_exp `name?*#518`] -[visit_id name?*#518] [visit_exp []] -[visit_exp `name?*#519`] -[visit_id name?*#519] [visit_exp []] -[visit_exp `name?*#520`] -[visit_id name?*#520] [visit_exp []] -[visit_exp `name?**#23`] -[visit_id name?**#23] [visit_exp []] -[visit_exp `deftype?*#10`] -[visit_id deftype?*#10] [visit_exp []] -[visit_exp ?(`%`_name{`char*#1077`}(lift(id?{id <- `id?`})))] -[visit_exp `%`_name{`char*#1077`}(lift(id?{id <- `id?`}))] -[visit_exp `char*#1077`] -[visit_id char*#1077] +[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] +[visit_exp `%`_name(lift(id?{id <- `id?`}))] [visit_exp (lift(id?{id <- `id?`}))] [visit_exp lift(id?{id <- `id?`})] [visit_exp id?{id <- `id?`}] @@ -92497,14 +73171,18 @@ dims \ I = I', char*#1077, char*#1083, deftype?*#10, id, name?*#511, name?*#512, [visit_id I] not free [visit_id I] no dims [visit_id I] not free +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_exit _] +[scope_exit _] ps' = (I : I) [check_dims] I _ -[check_dims] I I' X*#13419 X*#13434 X*#13447 char*#1113 comptype#577 deftype?*#11 deftype?*#12 final?#577 i i#95899 n#1503 name?*#521 name?*#522 name?*#523 name?*#524 name?*#525 name?*#526 name?*#527 name?*#528 name?*#529 name?*#530 name?**#24 rectype#1807 resulttype#3035 st t_1 t_2 typeuse*#577 x -dims \ I = I', X*#13419, X*#13434, X*#13447, char*#1113, comptype#577, deftype?*#11, deftype?*#12, final?#577, i, i#95899, n#1503, name?*#521, name?*#522, name?*#523, name?*#524, name?*#525, name?*#526, name?*#527, name?*#528, name?*#529, name?*#530, name?**#24, rectype#1807, resulttype#3035, st, t_1, t_2, typeuse*#577, x +[check_dims] I I' i st t_1 t_2 x +dims \ I = I', i, st, t_1, t_2, x [visit_exp (x, I')] [visit_exp x] [visit_id x] @@ -92515,32 +73193,22 @@ dims \ I = I', X*#13419, X*#13434, X*#13447, char*#1113, comptype#577, deftype?* [visit_exp I] [visit_id I] not free [visit_id I] no dims -[visit_exp (I.`TYPEDEFS`_I{`deftype?*#11`}[x!`%`_idx{i#95899}.0] = ?(`_DEF`_deftype{rectype#1807, n#1503}(`REC`_rectype(`%`_list{`X*#13419`}(st*{st <- `st*`})), i)))] -[visit_exp I.`TYPEDEFS`_I{`deftype?*#11`}[x!`%`_idx{i#95899}.0]] -[visit_exp I.`TYPEDEFS`_I{`deftype?*#11`}] +[visit_exp (I.`TYPEDEFS`_I[x!`%`_idx.0] = ?(`_DEF`_deftype(`REC`_rectype(`%`_list(st*{st <- `st*`})), i)))] +[visit_exp I.`TYPEDEFS`_I[x!`%`_idx.0]] +[visit_exp I.`TYPEDEFS`_I] [visit_exp I] [visit_id I] not free [visit_id I] no dims -[visit_exp `deftype?*#11`] -[visit_id deftype?*#11] -[visit_exp x!`%`_idx{i#95899}.0] -[visit_exp x!`%`_idx{i#95899}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#95899] -[visit_id i#95899] -[visit_exp ?(`_DEF`_deftype{rectype#1807, n#1503}(`REC`_rectype(`%`_list{`X*#13419`}(st*{st <- `st*`})), i))] -[visit_exp `_DEF`_deftype{rectype#1807, n#1503}(`REC`_rectype(`%`_list{`X*#13419`}(st*{st <- `st*`})), i)] -[visit_exp rectype#1807] -[visit_id rectype#1807] -[visit_exp n#1503] -[visit_id n#1503] -[visit_exp (`REC`_rectype(`%`_list{`X*#13419`}(st*{st <- `st*`})), i)] -[visit_exp `REC`_rectype(`%`_list{`X*#13419`}(st*{st <- `st*`}))] -[visit_exp (`%`_list{`X*#13419`}(st*{st <- `st*`}))] -[visit_exp `%`_list{`X*#13419`}(st*{st <- `st*`})] -[visit_exp `X*#13419`] -[visit_id X*#13419] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp ?(`_DEF`_deftype(`REC`_rectype(`%`_list(st*{st <- `st*`})), i))] +[visit_exp `_DEF`_deftype(`REC`_rectype(`%`_list(st*{st <- `st*`})), i)] +[visit_exp (`REC`_rectype(`%`_list(st*{st <- `st*`})), i)] +[visit_exp `REC`_rectype(`%`_list(st*{st <- `st*`}))] +[visit_exp (`%`_list(st*{st <- `st*`}))] +[visit_exp `%`_list(st*{st <- `st*`})] [visit_exp (st*{st <- `st*`})] [visit_exp st*{st <- `st*`}] [scope_enter st] @@ -92553,7 +73221,7 @@ dims \ I = I', X*#13419, X*#13434, X*#13447, char*#1113, comptype#577, deftype?* [visit_id st*] [visit_exp i] [visit_id i] -[visit_exp (st*{st <- `st*`}[i] = `SUB`_subtype{`final?#577`, `typeuse*#577`, comptype#577}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3035}(`%`_resulttype{`X*#13434`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13447`}(t_2*{t_2 <- `t_2*`}))))] +[visit_exp (st*{st <- `st*`}[i] = `SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))))] [visit_exp st*{st <- `st*`}[i]] [visit_exp st*{st <- `st*`}] [scope_enter st] @@ -92566,25 +73234,15 @@ dims \ I = I', X*#13419, X*#13434, X*#13447, char*#1113, comptype#577, deftype?* [visit_id st*] no dims [visit_exp i] [visit_id i] not free -[visit_exp `SUB`_subtype{`final?#577`, `typeuse*#577`, comptype#577}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3035}(`%`_resulttype{`X*#13434`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13447`}(t_2*{t_2 <- `t_2*`})))] -[visit_exp `final?#577`] -[visit_id final?#577] -[visit_exp `typeuse*#577`] -[visit_id typeuse*#577] -[visit_exp comptype#577] -[visit_id comptype#577] -[visit_exp (?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3035}(`%`_resulttype{`X*#13434`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13447`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp `SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))] +[visit_exp (?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))] [visit_exp ?(`FINAL`_final)] [visit_exp `FINAL`_final] [visit_exp ()] [visit_exp []] -[visit_exp `FUNC%->%`_comptype{resulttype#3035}(`%`_resulttype{`X*#13434`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13447`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#3035] -[visit_id resulttype#3035] -[visit_exp (`%`_resulttype{`X*#13434`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13447`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#13434`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#13434`] -[visit_id X*#13434] +[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -92595,9 +73253,7 @@ dims \ I = I', X*#13419, X*#13434, X*#13447, char*#1113, comptype#577, deftype?* [visit_exp `t_1*`] [visit_id t_1*] no dims [visit_id t_1*] -[visit_exp `%`_resulttype{`X*#13447`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#13447`] -[visit_id X*#13447] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -92608,46 +73264,23 @@ dims \ I = I', X*#13419, X*#13434, X*#13447, char*#1113, comptype#577, deftype?* [visit_exp `t_2*`] [visit_id t_2*] no dims [visit_id t_2*] -[visit_exp (I' = {`TYPES`{`name?*#521`} [], `TAGS`{`name?*#522`} [], `GLOBALS`{`name?*#523`} [], `MEMS`{`name?*#524`} [], `TABLES`{`name?*#525`} [], `FUNCS`{`name?*#526`} [], `DATAS`{`name?*#527`} [], `ELEMS`{`name?*#528`} [], `LOCALS`{`name?*#529`} ?(`%`_name{`char*#1113`}([]))^|t_1*{t_1 <- `t_1*`}|{`char*#1113` <- `char*#1113*`}, `LABELS`{`name?*#530`} [], `FIELDS`{`name?**#24`} [], `TYPEDEFS`{`deftype?*#12`} []})] +[visit_exp (I' = {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` ?(`%`_name([]))^|t_1*{t_1 <- `t_1*`}|{}, `LABELS` [], `FIELDS` [], `TYPEDEFS` []})] [visit_exp I'] [visit_id I'] not free -[visit_exp {`TYPES`{`name?*#521`} [], `TAGS`{`name?*#522`} [], `GLOBALS`{`name?*#523`} [], `MEMS`{`name?*#524`} [], `TABLES`{`name?*#525`} [], `FUNCS`{`name?*#526`} [], `DATAS`{`name?*#527`} [], `ELEMS`{`name?*#528`} [], `LOCALS`{`name?*#529`} ?(`%`_name{`char*#1113`}([]))^|t_1*{t_1 <- `t_1*`}|{`char*#1113` <- `char*#1113*`}, `LABELS`{`name?*#530`} [], `FIELDS`{`name?**#24`} [], `TYPEDEFS`{`deftype?*#12`} []}] -[visit_exp `name?*#521`] -[visit_id name?*#521] +[visit_exp {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` ?(`%`_name([]))^|t_1*{t_1 <- `t_1*`}|{}, `LABELS` [], `FIELDS` [], `TYPEDEFS` []}] [visit_exp []] -[visit_exp `name?*#522`] -[visit_id name?*#522] [visit_exp []] -[visit_exp `name?*#523`] -[visit_id name?*#523] [visit_exp []] -[visit_exp `name?*#524`] -[visit_id name?*#524] [visit_exp []] -[visit_exp `name?*#525`] -[visit_id name?*#525] [visit_exp []] -[visit_exp `name?*#526`] -[visit_id name?*#526] [visit_exp []] -[visit_exp `name?*#527`] -[visit_id name?*#527] [visit_exp []] -[visit_exp `name?*#528`] -[visit_id name?*#528] [visit_exp []] -[visit_exp `name?*#529`] -[visit_id name?*#529] -[visit_exp ?(`%`_name{`char*#1113`}([]))^|t_1*{t_1 <- `t_1*`}|{`char*#1113` <- `char*#1113*`}] -[scope_enter char*#1113] -[visit_exp ?(`%`_name{`char*#1113`}([]))] -[visit_exp `%`_name{`char*#1113`}([])] -[visit_exp `char*#1113`] -[visit_id char*#1113] not free +[visit_exp ?(`%`_name([]))^|t_1*{t_1 <- `t_1*`}|{}] +[visit_exp ?(`%`_name([]))] +[visit_exp `%`_name([])] [visit_exp ([])] [visit_exp []] -[visit_id char*#1113] not free -[scope_exit char*#1113] [visit_exp |t_1*{t_1 <- `t_1*`}|] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -92658,20 +73291,11 @@ dims \ I = I', X*#13419, X*#13434, X*#13447, char*#1113, comptype#577, deftype?* [visit_exp `t_1*`] [visit_id t_1*] not free [visit_id t_1*] no dims -[visit_exp `char*#1113*`] -[visit_id char*#1113*] no dims -[visit_id char*#1113*] -[visit_exp `name?*#530`] -[visit_id name?*#530] [visit_exp []] -[visit_exp `name?**#24`] -[visit_id name?**#24] [visit_exp []] -[visit_exp `deftype?*#12`] -[visit_id deftype?*#12] [visit_exp []] -[check_dims] I I' X*#13462 X*#13477 X*#13490 char*#1119 char*#1137 comptype#601 deftype?*#13 deftype?*#14 final?#601 i i#95968 id n#1515 name?*#531 name?*#532 name?*#533 name?*#534 name?*#535 name?*#536 name?*#537 name?*#538 name?*#539 name?*#540 name?**#25 rectype#1819 resulttype#3038 st t_1 t_2 typeuse*#601 x -dims \ I = I', X*#13462, X*#13477, X*#13490, char*#1119, char*#1137, comptype#601, deftype?*#13, deftype?*#14, final?#601, i, i#95968, id, n#1515, name?*#531, name?*#532, name?*#533, name?*#534, name?*#535, name?*#536, name?*#537, name?*#538, name?*#539, name?*#540, name?**#25, rectype#1819, resulttype#3038, st, t_1, t_2, typeuse*#601, x +[check_dims] I I' i id st t_1 t_2 x +dims \ I = I', i, id, st, t_1, t_2, x [visit_exp (x, I')] [visit_exp x] [visit_id x] @@ -92682,17 +73306,14 @@ dims \ I = I', X*#13462, X*#13477, X*#13490, char*#1119, char*#1137, comptype#60 [visit_exp I] [visit_id I] not free [visit_id I] no dims -[visit_exp (t_1, ?(`%`_name{`char*#1119`}(lift(id?{id <- `id?`}))))*{`char*#1119` <- `char*#1119*`, `id?` <- `id?*`, t_1 <- `t_1*`}] -[scope_enter char*#1119] +[visit_exp (t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}] [scope_enter id?] [scope_enter t_1] -[visit_exp (t_1, ?(`%`_name{`char*#1119`}(lift(id?{id <- `id?`}))))] +[visit_exp (t_1, ?(`%`_name(lift(id?{id <- `id?`}))))] [visit_exp t_1] [visit_id t_1] not free -[visit_exp ?(`%`_name{`char*#1119`}(lift(id?{id <- `id?`})))] -[visit_exp `%`_name{`char*#1119`}(lift(id?{id <- `id?`}))] -[visit_exp `char*#1119`] -[visit_id char*#1119] not free +[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] +[visit_exp `%`_name(lift(id?{id <- `id?`}))] [visit_exp (lift(id?{id <- `id?`}))] [visit_exp lift(id?{id <- `id?`})] [visit_exp id?{id <- `id?`}] @@ -92704,16 +73325,11 @@ dims \ I = I', X*#13462, X*#13477, X*#13490, char*#1119, char*#1137, comptype#60 [visit_exp `id?`] [visit_id id?] not free [visit_id id?] no dims -[visit_id char*#1119] not free [visit_id id?] not free [visit_id id?] no dims [visit_id t_1] not free [scope_exit t_1] [scope_exit id?] -[scope_exit char*#1119] -[visit_exp `char*#1119*`] -[visit_id char*#1119*] no dims -[visit_id char*#1119*] [visit_exp `id?*`] [visit_id id?*] no dims [visit_id id?*] @@ -92735,32 +73351,22 @@ dims \ I = I', X*#13462, X*#13477, X*#13490, char*#1119, char*#1137, comptype#60 [visit_exp I] [visit_id I] not free [visit_id I] no dims -[visit_exp (I.`TYPEDEFS`_I{`deftype?*#13`}[x!`%`_idx{i#95968}.0] = ?(`_DEF`_deftype{rectype#1819, n#1515}(`REC`_rectype(`%`_list{`X*#13462`}(st*{st <- `st*`})), i)))] -[visit_exp I.`TYPEDEFS`_I{`deftype?*#13`}[x!`%`_idx{i#95968}.0]] -[visit_exp I.`TYPEDEFS`_I{`deftype?*#13`}] +[visit_exp (I.`TYPEDEFS`_I[x!`%`_idx.0] = ?(`_DEF`_deftype(`REC`_rectype(`%`_list(st*{st <- `st*`})), i)))] +[visit_exp I.`TYPEDEFS`_I[x!`%`_idx.0]] +[visit_exp I.`TYPEDEFS`_I] [visit_exp I] [visit_id I] not free [visit_id I] no dims -[visit_exp `deftype?*#13`] -[visit_id deftype?*#13] -[visit_exp x!`%`_idx{i#95968}.0] -[visit_exp x!`%`_idx{i#95968}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#95968] -[visit_id i#95968] -[visit_exp ?(`_DEF`_deftype{rectype#1819, n#1515}(`REC`_rectype(`%`_list{`X*#13462`}(st*{st <- `st*`})), i))] -[visit_exp `_DEF`_deftype{rectype#1819, n#1515}(`REC`_rectype(`%`_list{`X*#13462`}(st*{st <- `st*`})), i)] -[visit_exp rectype#1819] -[visit_id rectype#1819] -[visit_exp n#1515] -[visit_id n#1515] -[visit_exp (`REC`_rectype(`%`_list{`X*#13462`}(st*{st <- `st*`})), i)] -[visit_exp `REC`_rectype(`%`_list{`X*#13462`}(st*{st <- `st*`}))] -[visit_exp (`%`_list{`X*#13462`}(st*{st <- `st*`}))] -[visit_exp `%`_list{`X*#13462`}(st*{st <- `st*`})] -[visit_exp `X*#13462`] -[visit_id X*#13462] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp ?(`_DEF`_deftype(`REC`_rectype(`%`_list(st*{st <- `st*`})), i))] +[visit_exp `_DEF`_deftype(`REC`_rectype(`%`_list(st*{st <- `st*`})), i)] +[visit_exp (`REC`_rectype(`%`_list(st*{st <- `st*`})), i)] +[visit_exp `REC`_rectype(`%`_list(st*{st <- `st*`}))] +[visit_exp (`%`_list(st*{st <- `st*`}))] +[visit_exp `%`_list(st*{st <- `st*`})] [visit_exp (st*{st <- `st*`})] [visit_exp st*{st <- `st*`}] [scope_enter st] @@ -92773,7 +73379,7 @@ dims \ I = I', X*#13462, X*#13477, X*#13490, char*#1119, char*#1137, comptype#60 [visit_id st*] [visit_exp i] [visit_id i] -[visit_exp (st*{st <- `st*`}[i] = `SUB`_subtype{`final?#601`, `typeuse*#601`, comptype#601}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3038}(`%`_resulttype{`X*#13477`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13490`}(t_2*{t_2 <- `t_2*`}))))] +[visit_exp (st*{st <- `st*`}[i] = `SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))))] [visit_exp st*{st <- `st*`}[i]] [visit_exp st*{st <- `st*`}] [scope_enter st] @@ -92786,25 +73392,15 @@ dims \ I = I', X*#13462, X*#13477, X*#13490, char*#1119, char*#1137, comptype#60 [visit_id st*] no dims [visit_exp i] [visit_id i] not free -[visit_exp `SUB`_subtype{`final?#601`, `typeuse*#601`, comptype#601}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3038}(`%`_resulttype{`X*#13477`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13490`}(t_2*{t_2 <- `t_2*`})))] -[visit_exp `final?#601`] -[visit_id final?#601] -[visit_exp `typeuse*#601`] -[visit_id typeuse*#601] -[visit_exp comptype#601] -[visit_id comptype#601] -[visit_exp (?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3038}(`%`_resulttype{`X*#13477`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13490`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp `SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))] +[visit_exp (?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))] [visit_exp ?(`FINAL`_final)] [visit_exp `FINAL`_final] [visit_exp ()] [visit_exp []] -[visit_exp `FUNC%->%`_comptype{resulttype#3038}(`%`_resulttype{`X*#13477`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13490`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#3038] -[visit_id resulttype#3038] -[visit_exp (`%`_resulttype{`X*#13477`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13490`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#13477`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#13477`] -[visit_id X*#13477] +[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -92815,9 +73411,7 @@ dims \ I = I', X*#13462, X*#13477, X*#13490, char*#1119, char*#1137, comptype#60 [visit_exp `t_1*`] [visit_id t_1*] not free [visit_id t_1*] no dims -[visit_exp `%`_resulttype{`X*#13490`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#13490`] -[visit_id X*#13490] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -92828,43 +73422,22 @@ dims \ I = I', X*#13462, X*#13477, X*#13490, char*#1119, char*#1137, comptype#60 [visit_exp `t_2*`] [visit_id t_2*] not free [visit_id t_2*] no dims -[visit_exp (I' = {`TYPES`{`name?*#531`} [], `TAGS`{`name?*#532`} [], `GLOBALS`{`name?*#533`} [], `MEMS`{`name?*#534`} [], `TABLES`{`name?*#535`} [], `FUNCS`{`name?*#536`} [], `DATAS`{`name?*#537`} [], `ELEMS`{`name?*#538`} [], `LOCALS`{`name?*#539`} ?(`%`_name{`char*#1137`}(lift(id?{id <- `id?`})))*{`char*#1137` <- `char*#1137*`, `id?` <- `id?*`}, `LABELS`{`name?*#540`} [], `FIELDS`{`name?**#25`} [], `TYPEDEFS`{`deftype?*#14`} []})] +[visit_exp (I' = {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` ?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}, `LABELS` [], `FIELDS` [], `TYPEDEFS` []})] [visit_exp I'] [visit_id I'] not free -[visit_exp {`TYPES`{`name?*#531`} [], `TAGS`{`name?*#532`} [], `GLOBALS`{`name?*#533`} [], `MEMS`{`name?*#534`} [], `TABLES`{`name?*#535`} [], `FUNCS`{`name?*#536`} [], `DATAS`{`name?*#537`} [], `ELEMS`{`name?*#538`} [], `LOCALS`{`name?*#539`} ?(`%`_name{`char*#1137`}(lift(id?{id <- `id?`})))*{`char*#1137` <- `char*#1137*`, `id?` <- `id?*`}, `LABELS`{`name?*#540`} [], `FIELDS`{`name?**#25`} [], `TYPEDEFS`{`deftype?*#14`} []}] -[visit_exp `name?*#531`] -[visit_id name?*#531] +[visit_exp {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` ?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}, `LABELS` [], `FIELDS` [], `TYPEDEFS` []}] [visit_exp []] -[visit_exp `name?*#532`] -[visit_id name?*#532] [visit_exp []] -[visit_exp `name?*#533`] -[visit_id name?*#533] [visit_exp []] -[visit_exp `name?*#534`] -[visit_id name?*#534] [visit_exp []] -[visit_exp `name?*#535`] -[visit_id name?*#535] [visit_exp []] -[visit_exp `name?*#536`] -[visit_id name?*#536] [visit_exp []] -[visit_exp `name?*#537`] -[visit_id name?*#537] [visit_exp []] -[visit_exp `name?*#538`] -[visit_id name?*#538] [visit_exp []] -[visit_exp `name?*#539`] -[visit_id name?*#539] -[visit_exp ?(`%`_name{`char*#1137`}(lift(id?{id <- `id?`})))*{`char*#1137` <- `char*#1137*`, `id?` <- `id?*`}] -[scope_enter char*#1137] +[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}] [scope_enter id?] -[visit_exp ?(`%`_name{`char*#1137`}(lift(id?{id <- `id?`})))] -[visit_exp `%`_name{`char*#1137`}(lift(id?{id <- `id?`}))] -[visit_exp `char*#1137`] -[visit_id char*#1137] not free +[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] +[visit_exp `%`_name(lift(id?{id <- `id?`}))] [visit_exp (lift(id?{id <- `id?`}))] [visit_exp lift(id?{id <- `id?`})] [visit_exp id?{id <- `id?`}] @@ -92876,47 +73449,37 @@ dims \ I = I', X*#13462, X*#13477, X*#13490, char*#1119, char*#1137, comptype#60 [visit_exp `id?`] [visit_id id?] not free [visit_id id?] no dims -[visit_id char*#1137] not free [visit_id id?] not free [visit_id id?] no dims [scope_exit id?] -[scope_exit char*#1137] -[visit_exp `char*#1137*`] -[visit_id char*#1137*] no dims -[visit_id char*#1137*] [visit_exp `id?*`] [visit_id id?*] not free [visit_id id?*] no dims -[visit_exp `name?*#540`] -[visit_id name?*#540] [visit_exp []] -[visit_exp `name?**#25`] -[visit_id name?**#25] [visit_exp []] -[visit_exp `deftype?*#14`] -[visit_id deftype?*#14] [visit_exp []] [visit_exp I'] [visit_id I'] not free [visit_id I] not free +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_exit _] +[scope_exit _] ps' = (I : I) [check_dims] I _ -[check_dims] I X*#13515 X*#13528 X*#13541 X*#13566 X*#13579 X*#13592 char*#1143 comptype#613 comptype#625 deftype?*#15 deftype?*#16 final?#613 final?#625 i i#96043 i#96053 id n#1527 n#1539 rectype#1831 rectype#1843 resulttype#3041 resulttype#3044 t_1 t_2 typeuse*#613 typeuse*#625 x -[visit_exp (t_1, ?(`%`_name{`char*#1143`}(lift(id?{id <- `id?`}))))*{`char*#1143` <- `char*#1143*`, `id?` <- `id?*`, t_1 <- `t_1*`}] -[scope_enter char*#1143] +[check_dims] I i id t_1 t_2 x +[visit_exp (t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}] [scope_enter id?] [scope_enter t_1] -[visit_exp (t_1, ?(`%`_name{`char*#1143`}(lift(id?{id <- `id?`}))))] +[visit_exp (t_1, ?(`%`_name(lift(id?{id <- `id?`}))))] [visit_exp t_1] [visit_id t_1] not free -[visit_exp ?(`%`_name{`char*#1143`}(lift(id?{id <- `id?`})))] -[visit_exp `%`_name{`char*#1143`}(lift(id?{id <- `id?`}))] -[visit_exp `char*#1143`] -[visit_id char*#1143] not free +[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] +[visit_exp `%`_name(lift(id?{id <- `id?`}))] [visit_exp (lift(id?{id <- `id?`}))] [visit_exp lift(id?{id <- `id?`})] [visit_exp id?{id <- `id?`}] @@ -92928,16 +73491,11 @@ ps' = (I : I) [visit_exp `id?`] [visit_id id?] not free [visit_id id?] no dims -[visit_id char*#1143] not free [visit_id id?] not free [visit_id id?] no dims [visit_id t_1] not free [scope_exit t_1] [scope_exit id?] -[scope_exit char*#1143] -[visit_exp `char*#1143*`] -[visit_id char*#1143*] no dims -[visit_id char*#1143*] [visit_exp `id?*`] [visit_id id?*] no dims [visit_id id?*] @@ -92970,53 +73528,33 @@ ps' = (I : I) [visit_exp I] [visit_id I] not free [visit_id I] no dims -[visit_exp (I.`TYPEDEFS`_I{`deftype?*#15`}[x!`%`_idx{i#96043}.0] = ?(`_DEF`_deftype{rectype#1831, n#1527}(`REC`_rectype(`%`_list{`X*#13515`}([`SUB`_subtype{`final?#613`, `typeuse*#613`, comptype#613}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3041}(`%`_resulttype{`X*#13528`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13541`}(t_2*{t_2 <- `t_2*`})))])), 0)))] -[visit_exp I.`TYPEDEFS`_I{`deftype?*#15`}[x!`%`_idx{i#96043}.0]] -[visit_exp I.`TYPEDEFS`_I{`deftype?*#15`}] +[visit_exp (I.`TYPEDEFS`_I[x!`%`_idx.0] = ?(`_DEF`_deftype(`REC`_rectype(`%`_list([`SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))])), 0)))] +[visit_exp I.`TYPEDEFS`_I[x!`%`_idx.0]] +[visit_exp I.`TYPEDEFS`_I] [visit_exp I] [visit_id I] not free [visit_id I] no dims -[visit_exp `deftype?*#15`] -[visit_id deftype?*#15] -[visit_exp x!`%`_idx{i#96043}.0] -[visit_exp x!`%`_idx{i#96043}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#96043] -[visit_id i#96043] -[visit_exp ?(`_DEF`_deftype{rectype#1831, n#1527}(`REC`_rectype(`%`_list{`X*#13515`}([`SUB`_subtype{`final?#613`, `typeuse*#613`, comptype#613}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3041}(`%`_resulttype{`X*#13528`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13541`}(t_2*{t_2 <- `t_2*`})))])), 0))] -[visit_exp `_DEF`_deftype{rectype#1831, n#1527}(`REC`_rectype(`%`_list{`X*#13515`}([`SUB`_subtype{`final?#613`, `typeuse*#613`, comptype#613}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3041}(`%`_resulttype{`X*#13528`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13541`}(t_2*{t_2 <- `t_2*`})))])), 0)] -[visit_exp rectype#1831] -[visit_id rectype#1831] -[visit_exp n#1527] -[visit_id n#1527] -[visit_exp (`REC`_rectype(`%`_list{`X*#13515`}([`SUB`_subtype{`final?#613`, `typeuse*#613`, comptype#613}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3041}(`%`_resulttype{`X*#13528`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13541`}(t_2*{t_2 <- `t_2*`})))])), 0)] -[visit_exp `REC`_rectype(`%`_list{`X*#13515`}([`SUB`_subtype{`final?#613`, `typeuse*#613`, comptype#613}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3041}(`%`_resulttype{`X*#13528`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13541`}(t_2*{t_2 <- `t_2*`})))]))] -[visit_exp (`%`_list{`X*#13515`}([`SUB`_subtype{`final?#613`, `typeuse*#613`, comptype#613}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3041}(`%`_resulttype{`X*#13528`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13541`}(t_2*{t_2 <- `t_2*`})))]))] -[visit_exp `%`_list{`X*#13515`}([`SUB`_subtype{`final?#613`, `typeuse*#613`, comptype#613}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3041}(`%`_resulttype{`X*#13528`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13541`}(t_2*{t_2 <- `t_2*`})))])] -[visit_exp `X*#13515`] -[visit_id X*#13515] -[visit_exp ([`SUB`_subtype{`final?#613`, `typeuse*#613`, comptype#613}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3041}(`%`_resulttype{`X*#13528`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13541`}(t_2*{t_2 <- `t_2*`})))])] -[visit_exp [`SUB`_subtype{`final?#613`, `typeuse*#613`, comptype#613}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3041}(`%`_resulttype{`X*#13528`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13541`}(t_2*{t_2 <- `t_2*`})))]] -[visit_exp `SUB`_subtype{`final?#613`, `typeuse*#613`, comptype#613}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3041}(`%`_resulttype{`X*#13528`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13541`}(t_2*{t_2 <- `t_2*`})))] -[visit_exp `final?#613`] -[visit_id final?#613] -[visit_exp `typeuse*#613`] -[visit_id typeuse*#613] -[visit_exp comptype#613] -[visit_id comptype#613] -[visit_exp (?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3041}(`%`_resulttype{`X*#13528`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13541`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp ?(`_DEF`_deftype(`REC`_rectype(`%`_list([`SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))])), 0))] +[visit_exp `_DEF`_deftype(`REC`_rectype(`%`_list([`SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))])), 0)] +[visit_exp (`REC`_rectype(`%`_list([`SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))])), 0)] +[visit_exp `REC`_rectype(`%`_list([`SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))]))] +[visit_exp (`%`_list([`SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))]))] +[visit_exp `%`_list([`SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))])] +[visit_exp ([`SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))])] +[visit_exp [`SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))]] +[visit_exp `SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))] +[visit_exp (?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))] [visit_exp ?(`FINAL`_final)] [visit_exp `FINAL`_final] [visit_exp ()] [visit_exp []] -[visit_exp `FUNC%->%`_comptype{resulttype#3041}(`%`_resulttype{`X*#13528`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13541`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#3041] -[visit_id resulttype#3041] -[visit_exp (`%`_resulttype{`X*#13528`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13541`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#13528`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#13528`] -[visit_id X*#13528] +[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -93027,9 +73565,7 @@ ps' = (I : I) [visit_exp `t_1*`] [visit_id t_1*] not free [visit_id t_1*] no dims -[visit_exp `%`_resulttype{`X*#13541`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#13541`] -[visit_id X*#13541] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -93042,59 +73578,31 @@ ps' = (I : I) [visit_id t_2*] no dims [visit_exp 0] [scope_enter i] -[scope_enter X*#13566] -[scope_enter X*#13579] -[scope_enter X*#13592] -[scope_enter comptype#625] -[scope_enter deftype?*#16] -[scope_enter final?#625] -[scope_enter n#1539] -[scope_enter rectype#1843] -[scope_enter resulttype#3044] -[scope_enter typeuse*#625] -[visit_exp (I.`TYPEDEFS`_I{`deftype?*#16`}[i] =/= ?(`_DEF`_deftype{rectype#1843, n#1539}(`REC`_rectype(`%`_list{`X*#13566`}([`SUB`_subtype{`final?#625`, `typeuse*#625`, comptype#625}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3044}(`%`_resulttype{`X*#13579`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13592`}(t_2*{t_2 <- `t_2*`})))])), 0)))] -[visit_exp I.`TYPEDEFS`_I{`deftype?*#16`}[i]] -[visit_exp I.`TYPEDEFS`_I{`deftype?*#16`}] +[visit_exp (I.`TYPEDEFS`_I[i] =/= ?(`_DEF`_deftype(`REC`_rectype(`%`_list([`SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))])), 0)))] +[visit_exp I.`TYPEDEFS`_I[i]] +[visit_exp I.`TYPEDEFS`_I] [visit_exp I] [visit_id I] not free [visit_id I] no dims -[visit_exp `deftype?*#16`] -[visit_id deftype?*#16] not free [visit_exp i] [visit_id i] -[visit_exp ?(`_DEF`_deftype{rectype#1843, n#1539}(`REC`_rectype(`%`_list{`X*#13566`}([`SUB`_subtype{`final?#625`, `typeuse*#625`, comptype#625}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3044}(`%`_resulttype{`X*#13579`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13592`}(t_2*{t_2 <- `t_2*`})))])), 0))] -[visit_exp `_DEF`_deftype{rectype#1843, n#1539}(`REC`_rectype(`%`_list{`X*#13566`}([`SUB`_subtype{`final?#625`, `typeuse*#625`, comptype#625}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3044}(`%`_resulttype{`X*#13579`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13592`}(t_2*{t_2 <- `t_2*`})))])), 0)] -[visit_exp rectype#1843] -[visit_id rectype#1843] not free -[visit_exp n#1539] -[visit_id n#1539] not free -[visit_exp (`REC`_rectype(`%`_list{`X*#13566`}([`SUB`_subtype{`final?#625`, `typeuse*#625`, comptype#625}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3044}(`%`_resulttype{`X*#13579`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13592`}(t_2*{t_2 <- `t_2*`})))])), 0)] -[visit_exp `REC`_rectype(`%`_list{`X*#13566`}([`SUB`_subtype{`final?#625`, `typeuse*#625`, comptype#625}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3044}(`%`_resulttype{`X*#13579`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13592`}(t_2*{t_2 <- `t_2*`})))]))] -[visit_exp (`%`_list{`X*#13566`}([`SUB`_subtype{`final?#625`, `typeuse*#625`, comptype#625}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3044}(`%`_resulttype{`X*#13579`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13592`}(t_2*{t_2 <- `t_2*`})))]))] -[visit_exp `%`_list{`X*#13566`}([`SUB`_subtype{`final?#625`, `typeuse*#625`, comptype#625}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3044}(`%`_resulttype{`X*#13579`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13592`}(t_2*{t_2 <- `t_2*`})))])] -[visit_exp `X*#13566`] -[visit_id X*#13566] not free -[visit_exp ([`SUB`_subtype{`final?#625`, `typeuse*#625`, comptype#625}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3044}(`%`_resulttype{`X*#13579`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13592`}(t_2*{t_2 <- `t_2*`})))])] -[visit_exp [`SUB`_subtype{`final?#625`, `typeuse*#625`, comptype#625}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3044}(`%`_resulttype{`X*#13579`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13592`}(t_2*{t_2 <- `t_2*`})))]] -[visit_exp `SUB`_subtype{`final?#625`, `typeuse*#625`, comptype#625}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3044}(`%`_resulttype{`X*#13579`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13592`}(t_2*{t_2 <- `t_2*`})))] -[visit_exp `final?#625`] -[visit_id final?#625] not free -[visit_exp `typeuse*#625`] -[visit_id typeuse*#625] not free -[visit_exp comptype#625] -[visit_id comptype#625] not free -[visit_exp (?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3044}(`%`_resulttype{`X*#13579`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13592`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp ?(`_DEF`_deftype(`REC`_rectype(`%`_list([`SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))])), 0))] +[visit_exp `_DEF`_deftype(`REC`_rectype(`%`_list([`SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))])), 0)] +[visit_exp (`REC`_rectype(`%`_list([`SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))])), 0)] +[visit_exp `REC`_rectype(`%`_list([`SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))]))] +[visit_exp (`%`_list([`SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))]))] +[visit_exp `%`_list([`SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))])] +[visit_exp ([`SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))])] +[visit_exp [`SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))]] +[visit_exp `SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))] +[visit_exp (?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))] [visit_exp ?(`FINAL`_final)] [visit_exp `FINAL`_final] [visit_exp ()] [visit_exp []] -[visit_exp `FUNC%->%`_comptype{resulttype#3044}(`%`_resulttype{`X*#13579`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13592`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#3044] -[visit_id resulttype#3044] not free -[visit_exp (`%`_resulttype{`X*#13579`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13592`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#13579`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#13579`] -[visit_id X*#13579] not free +[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -93105,9 +73613,7 @@ ps' = (I : I) [visit_exp `t_1*`] [visit_id t_1*] not free [visit_id t_1*] no dims -[visit_exp `%`_resulttype{`X*#13592`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#13592`] -[visit_id X*#13592] not free +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -93120,262 +73626,136 @@ ps' = (I : I) [visit_id t_2*] no dims [visit_exp 0] [visit_id i] not free -[visit_id X*#13566] not free -[visit_id X*#13579] not free -[visit_id X*#13592] not free -[visit_id comptype#625] not free -[visit_id deftype?*#16] not free -[visit_id final?#625] not free -[visit_id n#1539] not free -[visit_id rectype#1843] not free -[visit_id resulttype#3044] not free -[visit_id typeuse*#625] not free -[scope_exit typeuse*#625] -[scope_exit resulttype#3044] -[scope_exit rectype#1843] -[scope_exit n#1539] -[scope_exit final?#625] -[scope_exit deftype?*#16] -[scope_exit comptype#625] -[scope_exit X*#13592] -[scope_exit X*#13579] -[scope_exit X*#13566] [scope_exit i] -[visit_exp x!`%`_idx{i#96053}.0] -[visit_exp x!`%`_idx{i#96053}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#96053] -[visit_id i#96053] -[visit_exp `X*#13566*`] -[visit_id X*#13566*] no dims -[visit_id X*#13566*] -[visit_exp `X*#13579*`] -[visit_id X*#13579*] no dims -[visit_id X*#13579*] -[visit_exp `X*#13592*`] -[visit_id X*#13592*] no dims -[visit_id X*#13592*] -[visit_exp `comptype#625*`] -[visit_id comptype#625*] no dims -[visit_id comptype#625*] -[visit_exp `deftype?*#16*`] -[visit_id deftype?*#16*] no dims -[visit_id deftype?*#16*] -[visit_exp `final?#625*`] -[visit_id final?#625*] no dims -[visit_id final?#625*] -[visit_exp `n#1539*`] -[visit_id n#1539*] no dims -[visit_id n#1539*] -[visit_exp `rectype#1843*`] -[visit_id rectype#1843*] no dims -[visit_id rectype#1843*] -[visit_exp `resulttype#3044*`] -[visit_id resulttype#3044*] no dims -[visit_id resulttype#3044*] -[visit_exp `typeuse*#625*`] -[visit_id typeuse*#625*] no dims -[visit_id typeuse*#625*] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free [visit_id I] not free +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_exit _] +[scope_exit _] ps' = (I : I) [check_dims] I _ -[check_dims] I deftype?*#17 name?*#541 name?*#542 name?*#543 name?*#544 name?*#545 name?*#546 name?*#547 name?*#548 name?*#549 name?*#550 name?**#26 -dims \ I = deftype?*#17, name?*#541, name?*#542, name?*#543, name?*#544, name?*#545, name?*#546, name?*#547, name?*#548, name?*#549, name?*#550, name?**#26 -[visit_exp (?(), {`TYPES`{`name?*#541`} [], `TAGS`{`name?*#542`} [], `GLOBALS`{`name?*#543`} [], `MEMS`{`name?*#544`} [], `TABLES`{`name?*#545`} [], `FUNCS`{`name?*#546`} [], `DATAS`{`name?*#547`} [], `ELEMS`{`name?*#548`} [], `LOCALS`{`name?*#549`} [], `LABELS`{`name?*#550`} [], `FIELDS`{`name?**#26`} [], `TYPEDEFS`{`deftype?*#17`} []} +++ I)] +[check_dims] I +dims \ I = +[visit_exp (?(), {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [], `TYPEDEFS` []} +++ I)] [visit_exp ?()] -[visit_exp {`TYPES`{`name?*#541`} [], `TAGS`{`name?*#542`} [], `GLOBALS`{`name?*#543`} [], `MEMS`{`name?*#544`} [], `TABLES`{`name?*#545`} [], `FUNCS`{`name?*#546`} [], `DATAS`{`name?*#547`} [], `ELEMS`{`name?*#548`} [], `LOCALS`{`name?*#549`} [], `LABELS`{`name?*#550`} [], `FIELDS`{`name?**#26`} [], `TYPEDEFS`{`deftype?*#17`} []} +++ I] -[visit_exp {`TYPES`{`name?*#541`} [], `TAGS`{`name?*#542`} [], `GLOBALS`{`name?*#543`} [], `MEMS`{`name?*#544`} [], `TABLES`{`name?*#545`} [], `FUNCS`{`name?*#546`} [], `DATAS`{`name?*#547`} [], `ELEMS`{`name?*#548`} [], `LOCALS`{`name?*#549`} [], `LABELS`{`name?*#550`} [], `FIELDS`{`name?**#26`} [], `TYPEDEFS`{`deftype?*#17`} []}] -[visit_exp `name?*#541`] -[visit_id name?*#541] +[visit_exp {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [], `TYPEDEFS` []} +++ I] +[visit_exp {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [], `TYPEDEFS` []}] [visit_exp []] -[visit_exp `name?*#542`] -[visit_id name?*#542] [visit_exp []] -[visit_exp `name?*#543`] -[visit_id name?*#543] [visit_exp []] -[visit_exp `name?*#544`] -[visit_id name?*#544] [visit_exp []] -[visit_exp `name?*#545`] -[visit_id name?*#545] [visit_exp []] -[visit_exp `name?*#546`] -[visit_id name?*#546] [visit_exp []] -[visit_exp `name?*#547`] -[visit_id name?*#547] [visit_exp []] -[visit_exp `name?*#548`] -[visit_id name?*#548] [visit_exp []] -[visit_exp `name?*#549`] -[visit_id name?*#549] [visit_exp []] -[visit_exp `name?*#550`] -[visit_id name?*#550] [visit_exp []] -[visit_exp `name?**#26`] -[visit_id name?**#26] [visit_exp []] -[visit_exp `deftype?*#17`] -[visit_id deftype?*#17] [visit_exp []] [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I deftype?*#18 id name?*#551 name?*#552 name?*#553 name?*#554 name?*#555 name?*#556 name?*#557 name?*#558 name?*#559 name?*#560 name?*#566 name?**#27 -dims \ I = deftype?*#18, id, name?*#551, name?*#552, name?*#553, name?*#554, name?*#555, name?*#556, name?*#557, name?*#558, name?*#559, name?*#560, name?*#566, name?**#27 -[visit_exp (?(id), {`TYPES`{`name?*#551`} [], `TAGS`{`name?*#552`} [], `GLOBALS`{`name?*#553`} [], `MEMS`{`name?*#554`} [], `TABLES`{`name?*#555`} [], `FUNCS`{`name?*#556`} [], `DATAS`{`name?*#557`} [], `ELEMS`{`name?*#558`} [], `LOCALS`{`name?*#559`} [], `LABELS`{`name?*#560`} [?(id)], `FIELDS`{`name?**#27`} [], `TYPEDEFS`{`deftype?*#18`} []} +++ I)] +[check_dims] I id +dims \ I = id +[visit_exp (?(id), {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [?(id)], `FIELDS` [], `TYPEDEFS` []} +++ I)] [visit_exp ?(id)] [visit_exp id] [visit_id id] -[visit_exp {`TYPES`{`name?*#551`} [], `TAGS`{`name?*#552`} [], `GLOBALS`{`name?*#553`} [], `MEMS`{`name?*#554`} [], `TABLES`{`name?*#555`} [], `FUNCS`{`name?*#556`} [], `DATAS`{`name?*#557`} [], `ELEMS`{`name?*#558`} [], `LOCALS`{`name?*#559`} [], `LABELS`{`name?*#560`} [?(id)], `FIELDS`{`name?**#27`} [], `TYPEDEFS`{`deftype?*#18`} []} +++ I] -[visit_exp {`TYPES`{`name?*#551`} [], `TAGS`{`name?*#552`} [], `GLOBALS`{`name?*#553`} [], `MEMS`{`name?*#554`} [], `TABLES`{`name?*#555`} [], `FUNCS`{`name?*#556`} [], `DATAS`{`name?*#557`} [], `ELEMS`{`name?*#558`} [], `LOCALS`{`name?*#559`} [], `LABELS`{`name?*#560`} [?(id)], `FIELDS`{`name?**#27`} [], `TYPEDEFS`{`deftype?*#18`} []}] -[visit_exp `name?*#551`] -[visit_id name?*#551] +[visit_exp {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [?(id)], `FIELDS` [], `TYPEDEFS` []} +++ I] +[visit_exp {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [?(id)], `FIELDS` [], `TYPEDEFS` []}] [visit_exp []] -[visit_exp `name?*#552`] -[visit_id name?*#552] [visit_exp []] -[visit_exp `name?*#553`] -[visit_id name?*#553] [visit_exp []] -[visit_exp `name?*#554`] -[visit_id name?*#554] [visit_exp []] -[visit_exp `name?*#555`] -[visit_id name?*#555] [visit_exp []] -[visit_exp `name?*#556`] -[visit_id name?*#556] [visit_exp []] -[visit_exp `name?*#557`] -[visit_id name?*#557] [visit_exp []] -[visit_exp `name?*#558`] -[visit_id name?*#558] [visit_exp []] -[visit_exp `name?*#559`] -[visit_id name?*#559] [visit_exp []] -[visit_exp `name?*#560`] -[visit_id name?*#560] [visit_exp [?(id)]] [visit_exp ?(id)] [visit_exp id] [visit_id id] not free -[visit_exp `name?**#27`] -[visit_id name?**#27] [visit_exp []] -[visit_exp `deftype?*#18`] -[visit_id deftype?*#18] [visit_exp []] [visit_exp I] [visit_id I] not free [visit_id I] no dims [visit_exp id] [visit_id id] not free -[visit_exp ~ (?(id) <- I.`LABELS`_I{`name?*#566`})] -[visit_exp (?(id) <- I.`LABELS`_I{`name?*#566`})] +[visit_exp ~ (?(id) <- I.`LABELS`_I)] +[visit_exp (?(id) <- I.`LABELS`_I)] [visit_exp ?(id)] [visit_exp id] [visit_id id] not free -[visit_exp I.`LABELS`_I{`name?*#566`}] +[visit_exp I.`LABELS`_I] [visit_exp I] [visit_id I] not free [visit_id I] no dims -[visit_exp `name?*#566`] -[visit_id name?*#566] -[check_dims] I deftype?*#19 i#96077 i#96087 id name?*#567 name?*#568 name?*#569 name?*#570 name?*#571 name?*#572 name?*#573 name?*#574 name?*#575 name?*#576 name?*#577 name?*#578 name?**#28 x -dims \ I = deftype?*#19, i#96077, i#96087, id, name?*#567, name?*#568, name?*#569, name?*#570, name?*#571, name?*#572, name?*#573, name?*#574, name?*#575, name?*#576, name?*#577, name?*#578, name?**#28, x -[visit_exp (?(id), {`TYPES`{`name?*#567`} [], `TAGS`{`name?*#568`} [], `GLOBALS`{`name?*#569`} [], `MEMS`{`name?*#570`} [], `TABLES`{`name?*#571`} [], `FUNCS`{`name?*#572`} [], `DATAS`{`name?*#573`} [], `ELEMS`{`name?*#574`} [], `LOCALS`{`name?*#575`} [], `LABELS`{`name?*#576`} [?(id)], `FIELDS`{`name?**#28`} [], `TYPEDEFS`{`deftype?*#19`} []} +++ I[`LABELS`_I{`name?*#577`}[x!`%`_idx{i#96077}.0] = ?()])] +[check_dims] I id x +dims \ I = id, x +[visit_exp (?(id), {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [?(id)], `FIELDS` [], `TYPEDEFS` []} +++ I[`LABELS`_I[x!`%`_idx.0] = ?()])] [visit_exp ?(id)] [visit_exp id] [visit_id id] -[visit_exp {`TYPES`{`name?*#567`} [], `TAGS`{`name?*#568`} [], `GLOBALS`{`name?*#569`} [], `MEMS`{`name?*#570`} [], `TABLES`{`name?*#571`} [], `FUNCS`{`name?*#572`} [], `DATAS`{`name?*#573`} [], `ELEMS`{`name?*#574`} [], `LOCALS`{`name?*#575`} [], `LABELS`{`name?*#576`} [?(id)], `FIELDS`{`name?**#28`} [], `TYPEDEFS`{`deftype?*#19`} []} +++ I[`LABELS`_I{`name?*#577`}[x!`%`_idx{i#96077}.0] = ?()]] -[visit_exp {`TYPES`{`name?*#567`} [], `TAGS`{`name?*#568`} [], `GLOBALS`{`name?*#569`} [], `MEMS`{`name?*#570`} [], `TABLES`{`name?*#571`} [], `FUNCS`{`name?*#572`} [], `DATAS`{`name?*#573`} [], `ELEMS`{`name?*#574`} [], `LOCALS`{`name?*#575`} [], `LABELS`{`name?*#576`} [?(id)], `FIELDS`{`name?**#28`} [], `TYPEDEFS`{`deftype?*#19`} []}] -[visit_exp `name?*#567`] -[visit_id name?*#567] +[visit_exp {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [?(id)], `FIELDS` [], `TYPEDEFS` []} +++ I[`LABELS`_I[x!`%`_idx.0] = ?()]] +[visit_exp {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [?(id)], `FIELDS` [], `TYPEDEFS` []}] [visit_exp []] -[visit_exp `name?*#568`] -[visit_id name?*#568] [visit_exp []] -[visit_exp `name?*#569`] -[visit_id name?*#569] [visit_exp []] -[visit_exp `name?*#570`] -[visit_id name?*#570] [visit_exp []] -[visit_exp `name?*#571`] -[visit_id name?*#571] [visit_exp []] -[visit_exp `name?*#572`] -[visit_id name?*#572] [visit_exp []] -[visit_exp `name?*#573`] -[visit_id name?*#573] [visit_exp []] -[visit_exp `name?*#574`] -[visit_id name?*#574] [visit_exp []] -[visit_exp `name?*#575`] -[visit_id name?*#575] [visit_exp []] -[visit_exp `name?*#576`] -[visit_id name?*#576] [visit_exp [?(id)]] [visit_exp ?(id)] [visit_exp id] [visit_id id] not free -[visit_exp `name?**#28`] -[visit_id name?**#28] [visit_exp []] -[visit_exp `deftype?*#19`] -[visit_id deftype?*#19] [visit_exp []] -[visit_exp I[`LABELS`_I{`name?*#577`}[x!`%`_idx{i#96077}.0] = ?()]] +[visit_exp I[`LABELS`_I[x!`%`_idx.0] = ?()]] [visit_exp I] [visit_id I] not free [visit_id I] no dims -[visit_exp `name?*#577`] -[visit_id name?*#577] -[visit_exp x!`%`_idx{i#96077}.0] -[visit_exp x!`%`_idx{i#96077}] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] [visit_exp x] [visit_id x] -[visit_exp i#96077] -[visit_id i#96077] [visit_exp ?()] [visit_exp id] [visit_id id] not free -[visit_exp (?(id) = I.`LABELS`_I{`name?*#578`}[x!`%`_idx{i#96087}.0])] +[visit_exp (?(id) = I.`LABELS`_I[x!`%`_idx.0])] [visit_exp ?(id)] [visit_exp id] [visit_id id] not free -[visit_exp I.`LABELS`_I{`name?*#578`}[x!`%`_idx{i#96087}.0]] -[visit_exp I.`LABELS`_I{`name?*#578`}] +[visit_exp I.`LABELS`_I[x!`%`_idx.0]] +[visit_exp I.`LABELS`_I] [visit_exp I] [visit_id I] not free [visit_id I] no dims -[visit_exp `name?*#578`] -[visit_id name?*#578] -[visit_exp x!`%`_idx{i#96087}.0] -[visit_exp x!`%`_idx{i#96087}] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] [visit_exp x] [visit_id x] not free -[visit_exp i#96087] -[visit_id i#96087] [visit_id I] not free +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_exit _] +[scope_exit _] ps' = (I : I) [check_dims] I [check_dims] I in @@ -93633,11 +74013,9 @@ dims \ I = dims \ I = [visit_exp `DROP`_instr] [visit_exp ()] -[check_dims] I t valtype*?#15 -dims \ I = t, valtype*?#15 -[visit_exp `SELECT`_instr{`valtype*?#15`}(t*{t <- `t*`}?{`t*` <- `t*?`})] -[visit_exp `valtype*?#15`] -[visit_id valtype*?#15] +[check_dims] I t +dims \ I = t +[visit_exp `SELECT`_instr(t*{t <- `t*`}?{`t*` <- `t*?`})] [visit_exp (t*{t <- `t*`}?{`t*` <- `t*?`})] [visit_exp t*{t <- `t*`}?{`t*` <- `t*?`}] [scope_enter t*] @@ -93678,11 +74056,9 @@ dims \ I = t, valtype*?#15 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I t valtype?#11 -dims \ I = t, valtype?#11 -[visit_exp `_RESULT`_blocktype{`valtype?#11`}(t?{t <- `t?`})] -[visit_exp `valtype?#11`] -[visit_id valtype?#11] +[check_dims] I t +dims \ I = t +[visit_exp `_RESULT`_blocktype(t?{t <- `t?`})] [visit_exp (t?{t <- `t?`})] [visit_exp t?{t <- `t?`}] [scope_enter t] @@ -93705,11 +74081,9 @@ dims \ I = t, valtype?#11 [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I I' char*#1231 deftype?*#20 name?*#579 name?*#580 name?*#581 name?*#582 name?*#583 name?*#584 name?*#585 name?*#586 name?*#587 name?*#588 name?**#29 typeidx#2127 x -dims \ I = I', char*#1231, deftype?*#20, name?*#579, name?*#580, name?*#581, name?*#582, name?*#583, name?*#584, name?*#585, name?*#586, name?*#587, name?*#588, name?**#29, typeidx#2127, x -[visit_exp `_IDX`_blocktype{typeidx#2127}(x)] -[visit_exp typeidx#2127] -[visit_id typeidx#2127] +[check_dims] I I' x +dims \ I = I', x +[visit_exp `_IDX`_blocktype(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -93721,68 +74095,32 @@ dims \ I = I', char*#1231, deftype?*#20, name?*#579, name?*#580, name?*#581, nam [visit_exp I] [visit_id I] not free [visit_id I] no dims -[visit_exp (I' = {`TYPES`{`name?*#579`} [], `TAGS`{`name?*#580`} [], `GLOBALS`{`name?*#581`} [], `MEMS`{`name?*#582`} [], `TABLES`{`name?*#583`} [], `FUNCS`{`name?*#584`} [], `DATAS`{`name?*#585`} [], `ELEMS`{`name?*#586`} [], `LOCALS`{`name?*#587`} ?(`%`_name{`char*#1231`}([]))*{`char*#1231` <- `char*#1231*`}, `LABELS`{`name?*#588`} [], `FIELDS`{`name?**#29`} [], `TYPEDEFS`{`deftype?*#20`} []})] +[visit_exp (I' = {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` ?(`%`_name([]))*{}, `LABELS` [], `FIELDS` [], `TYPEDEFS` []})] [visit_exp I'] [visit_id I'] not free -[visit_exp {`TYPES`{`name?*#579`} [], `TAGS`{`name?*#580`} [], `GLOBALS`{`name?*#581`} [], `MEMS`{`name?*#582`} [], `TABLES`{`name?*#583`} [], `FUNCS`{`name?*#584`} [], `DATAS`{`name?*#585`} [], `ELEMS`{`name?*#586`} [], `LOCALS`{`name?*#587`} ?(`%`_name{`char*#1231`}([]))*{`char*#1231` <- `char*#1231*`}, `LABELS`{`name?*#588`} [], `FIELDS`{`name?**#29`} [], `TYPEDEFS`{`deftype?*#20`} []}] -[visit_exp `name?*#579`] -[visit_id name?*#579] +[visit_exp {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` ?(`%`_name([]))*{}, `LABELS` [], `FIELDS` [], `TYPEDEFS` []}] [visit_exp []] -[visit_exp `name?*#580`] -[visit_id name?*#580] [visit_exp []] -[visit_exp `name?*#581`] -[visit_id name?*#581] [visit_exp []] -[visit_exp `name?*#582`] -[visit_id name?*#582] [visit_exp []] -[visit_exp `name?*#583`] -[visit_id name?*#583] [visit_exp []] -[visit_exp `name?*#584`] -[visit_id name?*#584] [visit_exp []] -[visit_exp `name?*#585`] -[visit_id name?*#585] [visit_exp []] -[visit_exp `name?*#586`] -[visit_id name?*#586] [visit_exp []] -[visit_exp `name?*#587`] -[visit_id name?*#587] -[visit_exp ?(`%`_name{`char*#1231`}([]))*{`char*#1231` <- `char*#1231*`}] -[scope_enter char*#1231] -[visit_exp ?(`%`_name{`char*#1231`}([]))] -[visit_exp `%`_name{`char*#1231`}([])] -[visit_exp `char*#1231`] -[visit_id char*#1231] not free +[visit_exp ?(`%`_name([]))*{}] +[visit_exp ?(`%`_name([]))] +[visit_exp `%`_name([])] [visit_exp ([])] [visit_exp []] -[visit_id char*#1231] not free -[scope_exit char*#1231] -[visit_exp `char*#1231*`] -[visit_id char*#1231*] no dims -[visit_id char*#1231*] -[visit_exp `name?*#588`] -[visit_id name?*#588] [visit_exp []] -[visit_exp `name?**#29`] -[visit_id name?**#29] [visit_exp []] -[visit_exp `deftype?*#20`] -[visit_id deftype?*#20] [visit_exp []] [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I I' blocktype#41 bt char*#1237 char*#1243 id id' in instr*#2360 -dims \ I = I', blocktype#41, bt, char*#1237, char*#1243, id, id', in, instr*#2360 -[visit_exp `BLOCK`_instr{blocktype#41, `instr*#2360`}(bt, in*{in <- `in*`})] -[visit_exp blocktype#41] -[visit_id blocktype#41] -[visit_exp `instr*#2360`] -[visit_id instr*#2360] +[check_dims] I I' bt id id' in +dims \ I = I', bt, id, id', in +[visit_exp `BLOCK`_instr(bt, in*{in <- `in*`})] [visit_exp (bt, in*{in <- `in*`})] [visit_exp bt] [visit_id bt] @@ -93795,11 +74133,9 @@ dims \ I = I', blocktype#41, bt, char*#1237, char*#1243, id, id', in, instr*#236 [visit_exp `in*`] [visit_id in*] no dims [visit_id in*] -[visit_exp (?(`%`_name{`char*#1237`}(lift(id?{id <- `id?`}))), I')] -[visit_exp ?(`%`_name{`char*#1237`}(lift(id?{id <- `id?`})))] -[visit_exp `%`_name{`char*#1237`}(lift(id?{id <- `id?`}))] -[visit_exp `char*#1237`] -[visit_id char*#1237] +[visit_exp (?(`%`_name(lift(id?{id <- `id?`}))), I')] +[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] +[visit_exp `%`_name(lift(id?{id <- `id?`}))] [visit_exp (lift(id?{id <- `id?`}))] [visit_exp lift(id?{id <- `id?`})] [visit_exp id?{id <- `id?`}] @@ -93832,10 +74168,8 @@ dims \ I = I', blocktype#41, bt, char*#1237, char*#1243, id, id', in, instr*#236 [visit_id in*] no dims [visit_exp I'] [visit_id I'] not free -[visit_exp ?(`%`_name{`char*#1243`}(lift(id'?{id' <- `id'?`})))] -[visit_exp `%`_name{`char*#1243`}(lift(id'?{id' <- `id'?`}))] -[visit_exp `char*#1243`] -[visit_id char*#1243] +[visit_exp ?(`%`_name(lift(id'?{id' <- `id'?`})))] +[visit_exp `%`_name(lift(id'?{id' <- `id'?`}))] [visit_exp (lift(id'?{id' <- `id'?`}))] [visit_exp lift(id'?{id' <- `id'?`})] [visit_exp id'?{id' <- `id'?`}] @@ -93878,13 +74212,9 @@ dims \ I = I', blocktype#41, bt, char*#1237, char*#1243, id, id', in, instr*#236 [visit_exp `id?`] [visit_id id?] not free [visit_id id?] no dims -[check_dims] I I' blocktype#43 bt char*#1249 char*#1255 id id' in instr*#2362 -dims \ I = I', blocktype#43, bt, char*#1249, char*#1255, id, id', in, instr*#2362 -[visit_exp `LOOP`_instr{blocktype#43, `instr*#2362`}(bt, in*{in <- `in*`})] -[visit_exp blocktype#43] -[visit_id blocktype#43] -[visit_exp `instr*#2362`] -[visit_id instr*#2362] +[check_dims] I I' bt id id' in +dims \ I = I', bt, id, id', in +[visit_exp `LOOP`_instr(bt, in*{in <- `in*`})] [visit_exp (bt, in*{in <- `in*`})] [visit_exp bt] [visit_id bt] @@ -93897,11 +74227,9 @@ dims \ I = I', blocktype#43, bt, char*#1249, char*#1255, id, id', in, instr*#236 [visit_exp `in*`] [visit_id in*] no dims [visit_id in*] -[visit_exp (?(`%`_name{`char*#1249`}(lift(id?{id <- `id?`}))), I')] -[visit_exp ?(`%`_name{`char*#1249`}(lift(id?{id <- `id?`})))] -[visit_exp `%`_name{`char*#1249`}(lift(id?{id <- `id?`}))] -[visit_exp `char*#1249`] -[visit_id char*#1249] +[visit_exp (?(`%`_name(lift(id?{id <- `id?`}))), I')] +[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] +[visit_exp `%`_name(lift(id?{id <- `id?`}))] [visit_exp (lift(id?{id <- `id?`}))] [visit_exp lift(id?{id <- `id?`})] [visit_exp id?{id <- `id?`}] @@ -93934,10 +74262,8 @@ dims \ I = I', blocktype#43, bt, char*#1249, char*#1255, id, id', in, instr*#236 [visit_id in*] no dims [visit_exp I'] [visit_id I'] not free -[visit_exp ?(`%`_name{`char*#1255`}(lift(id'?{id' <- `id'?`})))] -[visit_exp `%`_name{`char*#1255`}(lift(id'?{id' <- `id'?`}))] -[visit_exp `char*#1255`] -[visit_id char*#1255] +[visit_exp ?(`%`_name(lift(id'?{id' <- `id'?`})))] +[visit_exp `%`_name(lift(id'?{id' <- `id'?`}))] [visit_exp (lift(id'?{id' <- `id'?`}))] [visit_exp lift(id'?{id' <- `id'?`})] [visit_exp id'?{id' <- `id'?`}] @@ -93980,13 +74306,9 @@ dims \ I = I', blocktype#43, bt, char*#1249, char*#1255, id, id', in, instr*#236 [visit_exp `id?`] [visit_id id?] not free [visit_id id?] no dims -[check_dims] I I' blocktype#45 bt char*#1261 char*#1267 char*#1273 id id_1 id_2 in_1 in_2 instr*#2364 -dims \ I = I', blocktype#45, bt, char*#1261, char*#1267, char*#1273, id, id_1, id_2, in_1, in_2, instr*#2364 -[visit_exp `IF%%ELSE%`_instr{blocktype#45, `instr*#2364`}(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`})] -[visit_exp blocktype#45] -[visit_id blocktype#45] -[visit_exp `instr*#2364`] -[visit_id instr*#2364] +[check_dims] I I' bt id id_1 id_2 in_1 in_2 +dims \ I = I', bt, id, id_1, id_2, in_1, in_2 +[visit_exp `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`})] [visit_exp (bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`})] [visit_exp bt] [visit_id bt] @@ -94008,11 +74330,9 @@ dims \ I = I', blocktype#45, bt, char*#1261, char*#1267, char*#1273, id, id_1, i [visit_exp `in_2*`] [visit_id in_2*] no dims [visit_id in_2*] -[visit_exp (?(`%`_name{`char*#1261`}(lift(id?{id <- `id?`}))), I')] -[visit_exp ?(`%`_name{`char*#1261`}(lift(id?{id <- `id?`})))] -[visit_exp `%`_name{`char*#1261`}(lift(id?{id <- `id?`}))] -[visit_exp `char*#1261`] -[visit_id char*#1261] +[visit_exp (?(`%`_name(lift(id?{id <- `id?`}))), I')] +[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] +[visit_exp `%`_name(lift(id?{id <- `id?`}))] [visit_exp (lift(id?{id <- `id?`}))] [visit_exp lift(id?{id <- `id?`})] [visit_exp id?{id <- `id?`}] @@ -94045,10 +74365,8 @@ dims \ I = I', blocktype#45, bt, char*#1261, char*#1267, char*#1273, id, id_1, i [visit_id in_1*] no dims [visit_exp I'] [visit_id I'] not free -[visit_exp ?(`%`_name{`char*#1267`}(lift(id_1?{id_1 <- `id_1?`})))] -[visit_exp `%`_name{`char*#1267`}(lift(id_1?{id_1 <- `id_1?`}))] -[visit_exp `char*#1267`] -[visit_id char*#1267] +[visit_exp ?(`%`_name(lift(id_1?{id_1 <- `id_1?`})))] +[visit_exp `%`_name(lift(id_1?{id_1 <- `id_1?`}))] [visit_exp (lift(id_1?{id_1 <- `id_1?`}))] [visit_exp lift(id_1?{id_1 <- `id_1?`})] [visit_exp id_1?{id_1 <- `id_1?`}] @@ -94071,10 +74389,8 @@ dims \ I = I', blocktype#45, bt, char*#1261, char*#1267, char*#1273, id, id_1, i [visit_id in_2*] no dims [visit_exp I'] [visit_id I'] not free -[visit_exp ?(`%`_name{`char*#1273`}(lift(id_2?{id_2 <- `id_2?`})))] -[visit_exp `%`_name{`char*#1273`}(lift(id_2?{id_2 <- `id_2?`}))] -[visit_exp `char*#1273`] -[visit_id char*#1273] +[visit_exp ?(`%`_name(lift(id_2?{id_2 <- `id_2?`})))] +[visit_exp `%`_name(lift(id_2?{id_2 <- `id_2?`}))] [visit_exp (lift(id_2?{id_2 <- `id_2?`}))] [visit_exp lift(id_2?{id_2 <- `id_2?`})] [visit_exp id_2?{id_2 <- `id_2?`}] @@ -94149,19 +74465,13 @@ dims \ I = I', blocktype#45, bt, char*#1261, char*#1267, char*#1273, id, id_1, i [visit_exp `id?`] [visit_id id?] not free [visit_id id?] no dims -[check_dims] I I' X*#13607 blocktype#47 bt c char*#1279 char*#1285 id id' in instr*#2367 -dims \ I = I', X*#13607, blocktype#47, bt, c, char*#1279, char*#1285, id, id', in, instr*#2367 -[visit_exp `TRY_TABLE`_instr{blocktype#47, `instr*#2367`}(bt, `%`_list{`X*#13607`}(c*{c <- `c*`}), in*{in <- `in*`})] -[visit_exp blocktype#47] -[visit_id blocktype#47] -[visit_exp `instr*#2367`] -[visit_id instr*#2367] -[visit_exp (bt, `%`_list{`X*#13607`}(c*{c <- `c*`}), in*{in <- `in*`})] +[check_dims] I I' bt c id id' in +dims \ I = I', bt, c, id, id', in +[visit_exp `TRY_TABLE`_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`})] +[visit_exp (bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`})] [visit_exp bt] [visit_id bt] -[visit_exp `%`_list{`X*#13607`}(c*{c <- `c*`})] -[visit_exp `X*#13607`] -[visit_id X*#13607] +[visit_exp `%`_list(c*{c <- `c*`})] [visit_exp (c*{c <- `c*`})] [visit_exp c*{c <- `c*`}] [scope_enter c] @@ -94181,11 +74491,9 @@ dims \ I = I', X*#13607, blocktype#47, bt, c, char*#1279, char*#1285, id, id', i [visit_exp `in*`] [visit_id in*] no dims [visit_id in*] -[visit_exp (?(`%`_name{`char*#1279`}(lift(id?{id <- `id?`}))), I')] -[visit_exp ?(`%`_name{`char*#1279`}(lift(id?{id <- `id?`})))] -[visit_exp `%`_name{`char*#1279`}(lift(id?{id <- `id?`}))] -[visit_exp `char*#1279`] -[visit_id char*#1279] +[visit_exp (?(`%`_name(lift(id?{id <- `id?`}))), I')] +[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] +[visit_exp `%`_name(lift(id?{id <- `id?`}))] [visit_exp (lift(id?{id <- `id?`}))] [visit_exp lift(id?{id <- `id?`})] [visit_exp id?{id <- `id?`}] @@ -94230,10 +74538,8 @@ dims \ I = I', X*#13607, blocktype#47, bt, c, char*#1279, char*#1285, id, id', i [visit_id in*] no dims [visit_exp I'] [visit_id I'] not free -[visit_exp ?(`%`_name{`char*#1285`}(lift(id'?{id' <- `id'?`})))] -[visit_exp `%`_name{`char*#1285`}(lift(id'?{id' <- `id'?`}))] -[visit_exp `char*#1285`] -[visit_id char*#1285] +[visit_exp ?(`%`_name(lift(id'?{id' <- `id'?`})))] +[visit_exp `%`_name(lift(id'?{id' <- `id'?`}))] [visit_exp (lift(id'?{id' <- `id'?`}))] [visit_exp lift(id'?{id' <- `id'?`})] [visit_exp id'?{id' <- `id'?`}] @@ -94301,13 +74607,9 @@ ps' = (I : I) [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I l labelidx#123 tagidx#29 x -dims \ I = l, labelidx#123, tagidx#29, x -[visit_exp `CATCH`_catch{tagidx#29, labelidx#123}(x, l)] -[visit_exp tagidx#29] -[visit_id tagidx#29] -[visit_exp labelidx#123] -[visit_id labelidx#123] +[check_dims] I l x +dims \ I = l, x +[visit_exp `CATCH`_catch(x, l)] [visit_exp (x, l)] [visit_exp x] [visit_id x] @@ -94323,13 +74625,9 @@ dims \ I = l, labelidx#123, tagidx#29, x [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I l labelidx#125 tagidx#31 x -dims \ I = l, labelidx#125, tagidx#31, x -[visit_exp `CATCH_REF`_catch{tagidx#31, labelidx#125}(x, l)] -[visit_exp tagidx#31] -[visit_id tagidx#31] -[visit_exp labelidx#125] -[visit_id labelidx#125] +[check_dims] I l x +dims \ I = l, x +[visit_exp `CATCH_REF`_catch(x, l)] [visit_exp (x, l)] [visit_exp x] [visit_id x] @@ -94345,11 +74643,9 @@ dims \ I = l, labelidx#125, tagidx#31, x [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I l labelidx#127 -dims \ I = l, labelidx#127 -[visit_exp `CATCH_ALL`_catch{labelidx#127}(l)] -[visit_exp labelidx#127] -[visit_id labelidx#127] +[check_dims] I l +dims \ I = l +[visit_exp `CATCH_ALL`_catch(l)] [visit_exp (l)] [visit_exp l] [visit_id l] @@ -94358,11 +74654,9 @@ dims \ I = l, labelidx#127 [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I l labelidx#129 -dims \ I = l, labelidx#129 -[visit_exp `CATCH_ALL_REF`_catch{labelidx#129}(l)] -[visit_exp labelidx#129] -[visit_id labelidx#129] +[check_dims] I l +dims \ I = l +[visit_exp `CATCH_ALL_REF`_catch(l)] [visit_exp (l)] [visit_exp l] [visit_id l] @@ -94374,11 +74668,9 @@ dims \ I = l, labelidx#129 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I l labelidx#131 -dims \ I = l, labelidx#131 -[visit_exp `BR`_instr{labelidx#131}(l)] -[visit_exp labelidx#131] -[visit_id labelidx#131] +[check_dims] I l +dims \ I = l +[visit_exp `BR`_instr(l)] [visit_exp (l)] [visit_exp l] [visit_id l] @@ -94387,11 +74679,9 @@ dims \ I = l, labelidx#131 [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I l labelidx#133 -dims \ I = l, labelidx#133 -[visit_exp `BR_IF`_instr{labelidx#133}(l)] -[visit_exp labelidx#133] -[visit_id labelidx#133] +[check_dims] I l +dims \ I = l +[visit_exp `BR_IF`_instr(l)] [visit_exp (l)] [visit_exp l] [visit_id l] @@ -94400,13 +74690,9 @@ dims \ I = l, labelidx#133 [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I l l' labelidx#135 labelidx*#56 -dims \ I = l, l', labelidx#135, labelidx*#56 -[visit_exp `BR_TABLE`_instr{`labelidx*#56`, labelidx#135}(l*{l <- `l*`}, l')] -[visit_exp `labelidx*#56`] -[visit_id labelidx*#56] -[visit_exp labelidx#135] -[visit_id labelidx#135] +[check_dims] I l l' +dims \ I = l, l' +[visit_exp `BR_TABLE`_instr(l*{l <- `l*`}, l')] [visit_exp (l*{l <- `l*`}, l')] [visit_exp l*{l <- `l*`}] [scope_enter l] @@ -94436,11 +74722,9 @@ dims \ I = l, l', labelidx#135, labelidx*#56 [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I l labelidx#137 -dims \ I = l, labelidx#137 -[visit_exp `BR_ON_NULL`_instr{labelidx#137}(l)] -[visit_exp labelidx#137] -[visit_id labelidx#137] +[check_dims] I l +dims \ I = l +[visit_exp `BR_ON_NULL`_instr(l)] [visit_exp (l)] [visit_exp l] [visit_id l] @@ -94449,11 +74733,9 @@ dims \ I = l, labelidx#137 [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I l labelidx#139 -dims \ I = l, labelidx#139 -[visit_exp `BR_ON_NON_NULL`_instr{labelidx#139}(l)] -[visit_exp labelidx#139] -[visit_id labelidx#139] +[check_dims] I l +dims \ I = l +[visit_exp `BR_ON_NON_NULL`_instr(l)] [visit_exp (l)] [visit_exp l] [visit_id l] @@ -94462,13 +74744,9 @@ dims \ I = l, labelidx#139 [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I l labelidx#141 reftype#4305 rt_1 rt_2 -dims \ I = l, labelidx#141, reftype#4305, rt_1, rt_2 -[visit_exp `BR_ON_CAST`_instr{labelidx#141, reftype#4305}(l, rt_1, rt_2)] -[visit_exp labelidx#141] -[visit_id labelidx#141] -[visit_exp reftype#4305] -[visit_id reftype#4305] +[check_dims] I l rt_1 rt_2 +dims \ I = l, rt_1, rt_2 +[visit_exp `BR_ON_CAST`_instr(l, rt_1, rt_2)] [visit_exp (l, rt_1, rt_2)] [visit_exp l] [visit_id l] @@ -94491,13 +74769,9 @@ dims \ I = l, labelidx#141, reftype#4305, rt_1, rt_2 [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I l labelidx#143 reftype#4308 rt_1 rt_2 -dims \ I = l, labelidx#143, reftype#4308, rt_1, rt_2 -[visit_exp `BR_ON_CAST_FAIL`_instr{labelidx#143, reftype#4308}(l, rt_1, rt_2)] -[visit_exp labelidx#143] -[visit_id labelidx#143] -[visit_exp reftype#4308] -[visit_id reftype#4308] +[check_dims] I l rt_1 rt_2 +dims \ I = l, rt_1, rt_2 +[visit_exp `BR_ON_CAST_FAIL`_instr(l, rt_1, rt_2)] [visit_exp (l, rt_1, rt_2)] [visit_exp l] [visit_id l] @@ -94523,11 +74797,9 @@ dims \ I = l, labelidx#143, reftype#4308, rt_1, rt_2 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I funcidx#3383 x -dims \ I = funcidx#3383, x -[visit_exp `CALL`_instr{funcidx#3383}(x)] -[visit_exp funcidx#3383] -[visit_id funcidx#3383] +[check_dims] I x +dims \ I = x +[visit_exp `CALL`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -94536,15 +74808,11 @@ dims \ I = funcidx#3383, x [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I typeidx#2129 typeuse#79 x -dims \ I = typeidx#2129, typeuse#79, x -[visit_exp `CALL_REF`_instr{typeuse#79}(`_IDX`_typeuse{typeidx#2129}(x))] -[visit_exp typeuse#79] -[visit_id typeuse#79] -[visit_exp (`_IDX`_typeuse{typeidx#2129}(x))] -[visit_exp `_IDX`_typeuse{typeidx#2129}(x)] -[visit_exp typeidx#2129] -[visit_id typeidx#2129] +[check_dims] I x +dims \ I = x +[visit_exp `CALL_REF`_instr(`_IDX`_typeuse(x))] +[visit_exp (`_IDX`_typeuse(x))] +[visit_exp `_IDX`_typeuse(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -94553,19 +74821,13 @@ dims \ I = typeidx#2129, typeuse#79, x [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I I' char*#1315 deftype?*#21 name?*#589 name?*#590 name?*#591 name?*#592 name?*#593 name?*#594 name?*#595 name?*#596 name?*#597 name?*#598 name?**#30 tableidx#154 typeidx#2131 typeuse#81 x y -dims \ I = I', char*#1315, deftype?*#21, name?*#589, name?*#590, name?*#591, name?*#592, name?*#593, name?*#594, name?*#595, name?*#596, name?*#597, name?*#598, name?**#30, tableidx#154, typeidx#2131, typeuse#81, x, y -[visit_exp `CALL_INDIRECT`_instr{tableidx#154, typeuse#81}(x, `_IDX`_typeuse{typeidx#2131}(y))] -[visit_exp tableidx#154] -[visit_id tableidx#154] -[visit_exp typeuse#81] -[visit_id typeuse#81] -[visit_exp (x, `_IDX`_typeuse{typeidx#2131}(y))] +[check_dims] I I' x y +dims \ I = I', x, y +[visit_exp `CALL_INDIRECT`_instr(x, `_IDX`_typeuse(y))] +[visit_exp (x, `_IDX`_typeuse(y))] [visit_exp x] [visit_id x] -[visit_exp `_IDX`_typeuse{typeidx#2131}(y)] -[visit_exp typeidx#2131] -[visit_id typeidx#2131] +[visit_exp `_IDX`_typeuse(y)] [visit_exp (y)] [visit_exp y] [visit_id y] @@ -94582,67 +74844,33 @@ dims \ I = I', char*#1315, deftype?*#21, name?*#589, name?*#590, name?*#591, nam [visit_exp I] [visit_id I] not free [visit_id I] no dims -[visit_exp (I' = {`TYPES`{`name?*#589`} [], `TAGS`{`name?*#590`} [], `GLOBALS`{`name?*#591`} [], `MEMS`{`name?*#592`} [], `TABLES`{`name?*#593`} [], `FUNCS`{`name?*#594`} [], `DATAS`{`name?*#595`} [], `ELEMS`{`name?*#596`} [], `LOCALS`{`name?*#597`} ?(`%`_name{`char*#1315`}([]))*{`char*#1315` <- `char*#1315*`}, `LABELS`{`name?*#598`} [], `FIELDS`{`name?**#30`} [], `TYPEDEFS`{`deftype?*#21`} []})] +[visit_exp (I' = {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` ?(`%`_name([]))*{}, `LABELS` [], `FIELDS` [], `TYPEDEFS` []})] [visit_exp I'] [visit_id I'] not free -[visit_exp {`TYPES`{`name?*#589`} [], `TAGS`{`name?*#590`} [], `GLOBALS`{`name?*#591`} [], `MEMS`{`name?*#592`} [], `TABLES`{`name?*#593`} [], `FUNCS`{`name?*#594`} [], `DATAS`{`name?*#595`} [], `ELEMS`{`name?*#596`} [], `LOCALS`{`name?*#597`} ?(`%`_name{`char*#1315`}([]))*{`char*#1315` <- `char*#1315*`}, `LABELS`{`name?*#598`} [], `FIELDS`{`name?**#30`} [], `TYPEDEFS`{`deftype?*#21`} []}] -[visit_exp `name?*#589`] -[visit_id name?*#589] +[visit_exp {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` ?(`%`_name([]))*{}, `LABELS` [], `FIELDS` [], `TYPEDEFS` []}] [visit_exp []] -[visit_exp `name?*#590`] -[visit_id name?*#590] [visit_exp []] -[visit_exp `name?*#591`] -[visit_id name?*#591] [visit_exp []] -[visit_exp `name?*#592`] -[visit_id name?*#592] [visit_exp []] -[visit_exp `name?*#593`] -[visit_id name?*#593] [visit_exp []] -[visit_exp `name?*#594`] -[visit_id name?*#594] [visit_exp []] -[visit_exp `name?*#595`] -[visit_id name?*#595] [visit_exp []] -[visit_exp `name?*#596`] -[visit_id name?*#596] [visit_exp []] -[visit_exp `name?*#597`] -[visit_id name?*#597] -[visit_exp ?(`%`_name{`char*#1315`}([]))*{`char*#1315` <- `char*#1315*`}] -[scope_enter char*#1315] -[visit_exp ?(`%`_name{`char*#1315`}([]))] -[visit_exp `%`_name{`char*#1315`}([])] -[visit_exp `char*#1315`] -[visit_id char*#1315] not free +[visit_exp ?(`%`_name([]))*{}] +[visit_exp ?(`%`_name([]))] +[visit_exp `%`_name([])] [visit_exp ([])] [visit_exp []] -[visit_id char*#1315] not free -[scope_exit char*#1315] -[visit_exp `char*#1315*`] -[visit_id char*#1315*] no dims -[visit_id char*#1315*] -[visit_exp `name?*#598`] -[visit_id name?*#598] [visit_exp []] -[visit_exp `name?**#30`] -[visit_id name?**#30] [visit_exp []] -[visit_exp `deftype?*#21`] -[visit_id deftype?*#21] [visit_exp []] [check_dims] I dims \ I = [visit_exp `RETURN`_instr] [visit_exp ()] -[check_dims] I funcidx#3385 x -dims \ I = funcidx#3385, x -[visit_exp `RETURN_CALL`_instr{funcidx#3385}(x)] -[visit_exp funcidx#3385] -[visit_id funcidx#3385] +[check_dims] I x +dims \ I = x +[visit_exp `RETURN_CALL`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -94651,15 +74879,11 @@ dims \ I = funcidx#3385, x [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I typeidx#2133 typeuse#83 x -dims \ I = typeidx#2133, typeuse#83, x -[visit_exp `RETURN_CALL_REF`_instr{typeuse#83}(`_IDX`_typeuse{typeidx#2133}(x))] -[visit_exp typeuse#83] -[visit_id typeuse#83] -[visit_exp (`_IDX`_typeuse{typeidx#2133}(x))] -[visit_exp `_IDX`_typeuse{typeidx#2133}(x)] -[visit_exp typeidx#2133] -[visit_id typeidx#2133] +[check_dims] I x +dims \ I = x +[visit_exp `RETURN_CALL_REF`_instr(`_IDX`_typeuse(x))] +[visit_exp (`_IDX`_typeuse(x))] +[visit_exp `_IDX`_typeuse(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -94668,19 +74892,13 @@ dims \ I = typeidx#2133, typeuse#83, x [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I I' char*#1345 deftype?*#22 name?*#599 name?*#600 name?*#601 name?*#602 name?*#603 name?*#604 name?*#605 name?*#606 name?*#607 name?*#608 name?**#31 tableidx#156 typeidx#2135 typeuse#85 x y -dims \ I = I', char*#1345, deftype?*#22, name?*#599, name?*#600, name?*#601, name?*#602, name?*#603, name?*#604, name?*#605, name?*#606, name?*#607, name?*#608, name?**#31, tableidx#156, typeidx#2135, typeuse#85, x, y -[visit_exp `RETURN_CALL_INDIRECT`_instr{tableidx#156, typeuse#85}(x, `_IDX`_typeuse{typeidx#2135}(y))] -[visit_exp tableidx#156] -[visit_id tableidx#156] -[visit_exp typeuse#85] -[visit_id typeuse#85] -[visit_exp (x, `_IDX`_typeuse{typeidx#2135}(y))] +[check_dims] I I' x y +dims \ I = I', x, y +[visit_exp `RETURN_CALL_INDIRECT`_instr(x, `_IDX`_typeuse(y))] +[visit_exp (x, `_IDX`_typeuse(y))] [visit_exp x] [visit_id x] -[visit_exp `_IDX`_typeuse{typeidx#2135}(y)] -[visit_exp typeidx#2135] -[visit_id typeidx#2135] +[visit_exp `_IDX`_typeuse(y)] [visit_exp (y)] [visit_exp y] [visit_id y] @@ -94697,57 +74915,25 @@ dims \ I = I', char*#1345, deftype?*#22, name?*#599, name?*#600, name?*#601, nam [visit_exp I] [visit_id I] not free [visit_id I] no dims -[visit_exp (I' = {`TYPES`{`name?*#599`} [], `TAGS`{`name?*#600`} [], `GLOBALS`{`name?*#601`} [], `MEMS`{`name?*#602`} [], `TABLES`{`name?*#603`} [], `FUNCS`{`name?*#604`} [], `DATAS`{`name?*#605`} [], `ELEMS`{`name?*#606`} [], `LOCALS`{`name?*#607`} ?(`%`_name{`char*#1345`}([]))*{`char*#1345` <- `char*#1345*`}, `LABELS`{`name?*#608`} [], `FIELDS`{`name?**#31`} [], `TYPEDEFS`{`deftype?*#22`} []})] +[visit_exp (I' = {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` ?(`%`_name([]))*{}, `LABELS` [], `FIELDS` [], `TYPEDEFS` []})] [visit_exp I'] [visit_id I'] not free -[visit_exp {`TYPES`{`name?*#599`} [], `TAGS`{`name?*#600`} [], `GLOBALS`{`name?*#601`} [], `MEMS`{`name?*#602`} [], `TABLES`{`name?*#603`} [], `FUNCS`{`name?*#604`} [], `DATAS`{`name?*#605`} [], `ELEMS`{`name?*#606`} [], `LOCALS`{`name?*#607`} ?(`%`_name{`char*#1345`}([]))*{`char*#1345` <- `char*#1345*`}, `LABELS`{`name?*#608`} [], `FIELDS`{`name?**#31`} [], `TYPEDEFS`{`deftype?*#22`} []}] -[visit_exp `name?*#599`] -[visit_id name?*#599] +[visit_exp {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` ?(`%`_name([]))*{}, `LABELS` [], `FIELDS` [], `TYPEDEFS` []}] [visit_exp []] -[visit_exp `name?*#600`] -[visit_id name?*#600] [visit_exp []] -[visit_exp `name?*#601`] -[visit_id name?*#601] [visit_exp []] -[visit_exp `name?*#602`] -[visit_id name?*#602] [visit_exp []] -[visit_exp `name?*#603`] -[visit_id name?*#603] [visit_exp []] -[visit_exp `name?*#604`] -[visit_id name?*#604] [visit_exp []] -[visit_exp `name?*#605`] -[visit_id name?*#605] [visit_exp []] -[visit_exp `name?*#606`] -[visit_id name?*#606] [visit_exp []] -[visit_exp `name?*#607`] -[visit_id name?*#607] -[visit_exp ?(`%`_name{`char*#1345`}([]))*{`char*#1345` <- `char*#1345*`}] -[scope_enter char*#1345] -[visit_exp ?(`%`_name{`char*#1345`}([]))] -[visit_exp `%`_name{`char*#1345`}([])] -[visit_exp `char*#1345`] -[visit_id char*#1345] not free +[visit_exp ?(`%`_name([]))*{}] +[visit_exp ?(`%`_name([]))] +[visit_exp `%`_name([])] [visit_exp ([])] [visit_exp []] -[visit_id char*#1345] not free -[scope_exit char*#1345] -[visit_exp `char*#1345*`] -[visit_id char*#1345*] no dims -[visit_id char*#1345*] -[visit_exp `name?*#608`] -[visit_id name?*#608] [visit_exp []] -[visit_exp `name?**#31`] -[visit_id name?**#31] [visit_exp []] -[visit_exp `deftype?*#22`] -[visit_id deftype?*#22] [visit_exp []] [visit_id I] not free ps' = (I : I) @@ -94769,11 +74955,9 @@ ps' = (I : I) [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I tagidx#33 x -dims \ I = tagidx#33, x -[visit_exp `THROW`_instr{tagidx#33}(x)] -[visit_exp tagidx#33] -[visit_id tagidx#33] +[check_dims] I x +dims \ I = x +[visit_exp `THROW`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -94789,11 +74973,9 @@ dims \ I = [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I localidx#27 x -dims \ I = localidx#27, x -[visit_exp `LOCAL.GET`_instr{localidx#27}(x)] -[visit_exp localidx#27] -[visit_id localidx#27] +[check_dims] I x +dims \ I = x +[visit_exp `LOCAL.GET`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -94802,11 +74984,9 @@ dims \ I = localidx#27, x [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I localidx#29 x -dims \ I = localidx#29, x -[visit_exp `LOCAL.SET`_instr{localidx#29}(x)] -[visit_exp localidx#29] -[visit_id localidx#29] +[check_dims] I x +dims \ I = x +[visit_exp `LOCAL.SET`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -94815,11 +74995,9 @@ dims \ I = localidx#29, x [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I localidx#31 x -dims \ I = localidx#31, x -[visit_exp `LOCAL.TEE`_instr{localidx#31}(x)] -[visit_exp localidx#31] -[visit_id localidx#31] +[check_dims] I x +dims \ I = x +[visit_exp `LOCAL.TEE`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -94831,11 +75009,9 @@ dims \ I = localidx#31, x [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I globalidx#31 x -dims \ I = globalidx#31, x -[visit_exp `GLOBAL.GET`_instr{globalidx#31}(x)] -[visit_exp globalidx#31] -[visit_id globalidx#31] +[check_dims] I x +dims \ I = x +[visit_exp `GLOBAL.GET`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -94844,11 +75020,9 @@ dims \ I = globalidx#31, x [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I globalidx#33 x -dims \ I = globalidx#33, x -[visit_exp `GLOBAL.SET`_instr{globalidx#33}(x)] -[visit_exp globalidx#33] -[visit_id globalidx#33] +[check_dims] I x +dims \ I = x +[visit_exp `GLOBAL.SET`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -94860,11 +75034,9 @@ dims \ I = globalidx#33, x [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I tableidx#158 x -dims \ I = tableidx#158, x -[visit_exp `TABLE.GET`_instr{tableidx#158}(x)] -[visit_exp tableidx#158] -[visit_id tableidx#158] +[check_dims] I x +dims \ I = x +[visit_exp `TABLE.GET`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -94873,11 +75045,9 @@ dims \ I = tableidx#158, x [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I tableidx#160 x -dims \ I = tableidx#160, x -[visit_exp `TABLE.SET`_instr{tableidx#160}(x)] -[visit_exp tableidx#160] -[visit_id tableidx#160] +[check_dims] I x +dims \ I = x +[visit_exp `TABLE.SET`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -94886,11 +75056,9 @@ dims \ I = tableidx#160, x [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I tableidx#162 x -dims \ I = tableidx#162, x -[visit_exp `TABLE.SIZE`_instr{tableidx#162}(x)] -[visit_exp tableidx#162] -[visit_id tableidx#162] +[check_dims] I x +dims \ I = x +[visit_exp `TABLE.SIZE`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -94899,11 +75067,9 @@ dims \ I = tableidx#162, x [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I tableidx#164 x -dims \ I = tableidx#164, x -[visit_exp `TABLE.GROW`_instr{tableidx#164}(x)] -[visit_exp tableidx#164] -[visit_id tableidx#164] +[check_dims] I x +dims \ I = x +[visit_exp `TABLE.GROW`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -94912,11 +75078,9 @@ dims \ I = tableidx#164, x [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I tableidx#166 x -dims \ I = tableidx#166, x -[visit_exp `TABLE.FILL`_instr{tableidx#166}(x)] -[visit_exp tableidx#166] -[visit_id tableidx#166] +[check_dims] I x +dims \ I = x +[visit_exp `TABLE.FILL`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -94925,11 +75089,9 @@ dims \ I = tableidx#166, x [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I tableidx#168 x_1 x_2 -dims \ I = tableidx#168, x_1, x_2 -[visit_exp `TABLE.COPY`_instr{tableidx#168}(x_1, x_2)] -[visit_exp tableidx#168] -[visit_id tableidx#168] +[check_dims] I x_1 x_2 +dims \ I = x_1, x_2 +[visit_exp `TABLE.COPY`_instr(x_1, x_2)] [visit_exp (x_1, x_2)] [visit_exp x_1] [visit_id x_1] @@ -94945,13 +75107,9 @@ dims \ I = tableidx#168, x_1, x_2 [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I elemidx#57 tableidx#171 x y -dims \ I = elemidx#57, tableidx#171, x, y -[visit_exp `TABLE.INIT`_instr{tableidx#171, elemidx#57}(x, y)] -[visit_exp tableidx#171] -[visit_id tableidx#171] -[visit_exp elemidx#57] -[visit_id elemidx#57] +[check_dims] I x y +dims \ I = x, y +[visit_exp `TABLE.INIT`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] @@ -94986,11 +75144,9 @@ ps' = (I : I) [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I elemidx#59 x -dims \ I = elemidx#59, x -[visit_exp `ELEM.DROP`_instr{elemidx#59}(x)] -[visit_exp elemidx#59] -[visit_id elemidx#59] +[check_dims] I x +dims \ I = x +[visit_exp `ELEM.DROP`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -95002,34 +75158,22 @@ dims \ I = elemidx#59, x [visit_id I] not free ps' = (N : N) [check_dims] N -[check_dims] N i#97540 i#97567 i#97591 i#97613 m n u32#47 u64#609 -dims \ N = i#97540, i#97567, i#97591, i#97613, m, n, u32#47, u64#609 -[visit_exp {`ALIGN`{u32#47} `%`_u32{i#97591}(n), `OFFSET`{u64#609} `%`_u64{i#97613}(m)}] -[visit_exp u32#47] -[visit_id u32#47] -[visit_exp `%`_u32{i#97591}(n)] -[visit_exp i#97591] -[visit_id i#97591] +[check_dims] N m n +dims \ N = m, n +[visit_exp {`ALIGN` `%`_u32(n), `OFFSET` `%`_u64(m)}] +[visit_exp `%`_u32(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp u64#609] -[visit_id u64#609] -[visit_exp `%`_u64{i#97613}(m)] -[visit_exp i#97613] -[visit_id i#97613] +[visit_exp `%`_u64(m)] [visit_exp (m)] [visit_exp m] [visit_id m] -[visit_exp `%`_u64{i#97540}(n)] -[visit_exp i#97540] -[visit_id i#97540] +[visit_exp `%`_u64(n)] [visit_exp (n)] [visit_exp n] [visit_id n] not free -[visit_exp `%`_u64{i#97567}(m)] -[visit_exp i#97567] -[visit_id i#97567] +[visit_exp `%`_u64(m)] [visit_exp (m)] [visit_exp m] [visit_id m] not free @@ -95039,40 +75183,30 @@ dims \ N = i#97540, i#97567, i#97591, i#97613, m, n, u32#47, u64#609 [visit_id N] not free ps' = [check_dims] -[check_dims] i#97638 i#97664 n -dims \ = i#97638, i#97664, n -[visit_exp `%`_u64{i#97664}(n)] -[visit_exp i#97664] -[visit_id i#97664] +[check_dims] n +dims \ = n +[visit_exp `%`_u64(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `%`_u64{i#97638}(n)] -[visit_exp i#97638] -[visit_id i#97638] +[visit_exp `%`_u64(n)] [visit_exp (n)] [visit_exp n] [visit_id n] not free -[check_dims] i#97686 -dims \ = i#97686 -[visit_exp `%`_u64{i#97686}(0)] -[visit_exp i#97686] -[visit_id i#97686] +[check_dims] +dims \ = +[visit_exp `%`_u64(0)] [visit_exp (0)] [visit_exp 0] ps' = (N : N) [check_dims] N -[check_dims] N i#97711 i#97737 m n -dims \ N = i#97711, i#97737, m, n -[visit_exp `%`_u64{i#97737}(m)] -[visit_exp i#97737] -[visit_id i#97737] +[check_dims] N m n +dims \ N = m, n +[visit_exp `%`_u64(m)] [visit_exp (m)] [visit_exp m] [visit_id m] -[visit_exp `%`_u64{i#97711}(m)] -[visit_exp i#97711] -[visit_id i#97711] +[visit_exp `%`_u64(m)] [visit_exp (m)] [visit_exp m] [visit_id m] not free @@ -95083,11 +75217,9 @@ dims \ N = i#97711, i#97737, m, n [visit_exp 2] [visit_exp n] [visit_id n] -[check_dims] N i#97761 -dims \ N = i#97761 -[visit_exp `%`_u64{i#97761}(N)] -[visit_exp i#97761] -[visit_id i#97761] +[check_dims] N +dims \ N = +[visit_exp `%`_u64(N)] [visit_exp (N)] [visit_exp N] [visit_id N] not free @@ -95103,15 +75235,9 @@ dims \ = i [visit_id i] not free ps' = (I : I) [check_dims] I -[check_dims] I ao memarg#181 memidx#278 numtype?#44 x -dims \ I = ao, memarg#181, memidx#278, numtype?#44, x -[visit_exp `LOAD`_instr{`numtype?#44`, memidx#278, memarg#181}(`I32`_numtype, ?(), x, ao)] -[visit_exp `numtype?#44`] -[visit_id numtype?#44] -[visit_exp memidx#278] -[visit_id memidx#278] -[visit_exp memarg#181] -[visit_id memarg#181] +[check_dims] I ao x +dims \ I = ao, x +[visit_exp `LOAD`_instr(`I32`_numtype, ?(), x, ao)] [visit_exp (`I32`_numtype, ?(), x, ao)] [visit_exp `I32`_numtype] [visit_exp ()] @@ -95128,15 +75254,9 @@ dims \ I = ao, memarg#181, memidx#278, numtype?#44, x [visit_exp ao] [visit_id ao] not free [visit_exp 4] -[check_dims] I ao memarg#183 memidx#280 numtype?#45 x -dims \ I = ao, memarg#183, memidx#280, numtype?#45, x -[visit_exp `LOAD`_instr{`numtype?#45`, memidx#280, memarg#183}(`I64`_numtype, ?(), x, ao)] -[visit_exp `numtype?#45`] -[visit_id numtype?#45] -[visit_exp memidx#280] -[visit_id memidx#280] -[visit_exp memarg#183] -[visit_id memarg#183] +[check_dims] I ao x +dims \ I = ao, x +[visit_exp `LOAD`_instr(`I64`_numtype, ?(), x, ao)] [visit_exp (`I64`_numtype, ?(), x, ao)] [visit_exp `I64`_numtype] [visit_exp ()] @@ -95153,15 +75273,9 @@ dims \ I = ao, memarg#183, memidx#280, numtype?#45, x [visit_exp ao] [visit_id ao] not free [visit_exp 8] -[check_dims] I ao memarg#185 memidx#282 numtype?#46 x -dims \ I = ao, memarg#185, memidx#282, numtype?#46, x -[visit_exp `LOAD`_instr{`numtype?#46`, memidx#282, memarg#185}(`F32`_numtype, ?(), x, ao)] -[visit_exp `numtype?#46`] -[visit_id numtype?#46] -[visit_exp memidx#282] -[visit_id memidx#282] -[visit_exp memarg#185] -[visit_id memarg#185] +[check_dims] I ao x +dims \ I = ao, x +[visit_exp `LOAD`_instr(`F32`_numtype, ?(), x, ao)] [visit_exp (`F32`_numtype, ?(), x, ao)] [visit_exp `F32`_numtype] [visit_exp ()] @@ -95178,15 +75292,9 @@ dims \ I = ao, memarg#185, memidx#282, numtype?#46, x [visit_exp ao] [visit_id ao] not free [visit_exp 4] -[check_dims] I ao memarg#187 memidx#284 numtype?#47 x -dims \ I = ao, memarg#187, memidx#284, numtype?#47, x -[visit_exp `LOAD`_instr{`numtype?#47`, memidx#284, memarg#187}(`F64`_numtype, ?(), x, ao)] -[visit_exp `numtype?#47`] -[visit_id numtype?#47] -[visit_exp memidx#284] -[visit_id memidx#284] -[visit_exp memarg#187] -[visit_id memarg#187] +[check_dims] I ao x +dims \ I = ao, x +[visit_exp `LOAD`_instr(`F64`_numtype, ?(), x, ao)] [visit_exp (`F64`_numtype, ?(), x, ao)] [visit_exp `F64`_numtype] [visit_exp ()] @@ -95203,30 +75311,16 @@ dims \ I = ao, memarg#187, memidx#284, numtype?#47, x [visit_exp ao] [visit_id ao] not free [visit_exp 8] -[check_dims] I ao i#97957 i#97964 memarg#189 memidx#286 numtype?#48 sx#15729 sz#1643 x -dims \ I = ao, i#97957, i#97964, memarg#189, memidx#286, numtype?#48, sx#15729, sz#1643, x -[visit_exp `LOAD`_instr{`numtype?#48`, memidx#286, memarg#189}(`I32`_numtype, ?(`%_%`_loadop_{sz#1643, sx#15729, i#97957}(`%`_sz{i#97964}(8), `S`_sx)), x, ao)] -[visit_exp `numtype?#48`] -[visit_id numtype?#48] -[visit_exp memidx#286] -[visit_id memidx#286] -[visit_exp memarg#189] -[visit_id memarg#189] -[visit_exp (`I32`_numtype, ?(`%_%`_loadop_{sz#1643, sx#15729, i#97957}(`%`_sz{i#97964}(8), `S`_sx)), x, ao)] +[check_dims] I ao x +dims \ I = ao, x +[visit_exp `LOAD`_instr(`I32`_numtype, ?(`%_%`_loadop_(`%`_sz(8), `S`_sx)), x, ao)] +[visit_exp (`I32`_numtype, ?(`%_%`_loadop_(`%`_sz(8), `S`_sx)), x, ao)] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp ?(`%_%`_loadop_{sz#1643, sx#15729, i#97957}(`%`_sz{i#97964}(8), `S`_sx))] -[visit_exp `%_%`_loadop_{sz#1643, sx#15729, i#97957}(`%`_sz{i#97964}(8), `S`_sx)] -[visit_exp sz#1643] -[visit_id sz#1643] -[visit_exp sx#15729] -[visit_id sx#15729] -[visit_exp i#97957] -[visit_id i#97957] -[visit_exp (`%`_sz{i#97964}(8), `S`_sx)] -[visit_exp `%`_sz{i#97964}(8)] -[visit_exp i#97964] -[visit_id i#97964] +[visit_exp ?(`%_%`_loadop_(`%`_sz(8), `S`_sx))] +[visit_exp `%_%`_loadop_(`%`_sz(8), `S`_sx)] +[visit_exp (`%`_sz(8), `S`_sx)] +[visit_exp `%`_sz(8)] [visit_exp (8)] [visit_exp 8] [visit_exp `S`_sx] @@ -95243,30 +75337,16 @@ dims \ I = ao, i#97957, i#97964, memarg#189, memidx#286, numtype?#48, sx#15729, [visit_exp ao] [visit_id ao] not free [visit_exp 1] -[check_dims] I ao i#98021 i#98028 memarg#191 memidx#288 numtype?#49 sx#15747 sz#1661 x -dims \ I = ao, i#98021, i#98028, memarg#191, memidx#288, numtype?#49, sx#15747, sz#1661, x -[visit_exp `LOAD`_instr{`numtype?#49`, memidx#288, memarg#191}(`I32`_numtype, ?(`%_%`_loadop_{sz#1661, sx#15747, i#98021}(`%`_sz{i#98028}(8), `U`_sx)), x, ao)] -[visit_exp `numtype?#49`] -[visit_id numtype?#49] -[visit_exp memidx#288] -[visit_id memidx#288] -[visit_exp memarg#191] -[visit_id memarg#191] -[visit_exp (`I32`_numtype, ?(`%_%`_loadop_{sz#1661, sx#15747, i#98021}(`%`_sz{i#98028}(8), `U`_sx)), x, ao)] +[check_dims] I ao x +dims \ I = ao, x +[visit_exp `LOAD`_instr(`I32`_numtype, ?(`%_%`_loadop_(`%`_sz(8), `U`_sx)), x, ao)] +[visit_exp (`I32`_numtype, ?(`%_%`_loadop_(`%`_sz(8), `U`_sx)), x, ao)] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp ?(`%_%`_loadop_{sz#1661, sx#15747, i#98021}(`%`_sz{i#98028}(8), `U`_sx))] -[visit_exp `%_%`_loadop_{sz#1661, sx#15747, i#98021}(`%`_sz{i#98028}(8), `U`_sx)] -[visit_exp sz#1661] -[visit_id sz#1661] -[visit_exp sx#15747] -[visit_id sx#15747] -[visit_exp i#98021] -[visit_id i#98021] -[visit_exp (`%`_sz{i#98028}(8), `U`_sx)] -[visit_exp `%`_sz{i#98028}(8)] -[visit_exp i#98028] -[visit_id i#98028] +[visit_exp ?(`%_%`_loadop_(`%`_sz(8), `U`_sx))] +[visit_exp `%_%`_loadop_(`%`_sz(8), `U`_sx)] +[visit_exp (`%`_sz(8), `U`_sx)] +[visit_exp `%`_sz(8)] [visit_exp (8)] [visit_exp 8] [visit_exp `U`_sx] @@ -95283,30 +75363,16 @@ dims \ I = ao, i#98021, i#98028, memarg#191, memidx#288, numtype?#49, sx#15747, [visit_exp ao] [visit_id ao] not free [visit_exp 1] -[check_dims] I ao i#98085 i#98092 memarg#193 memidx#290 numtype?#50 sx#15765 sz#1679 x -dims \ I = ao, i#98085, i#98092, memarg#193, memidx#290, numtype?#50, sx#15765, sz#1679, x -[visit_exp `LOAD`_instr{`numtype?#50`, memidx#290, memarg#193}(`I32`_numtype, ?(`%_%`_loadop_{sz#1679, sx#15765, i#98085}(`%`_sz{i#98092}(16), `S`_sx)), x, ao)] -[visit_exp `numtype?#50`] -[visit_id numtype?#50] -[visit_exp memidx#290] -[visit_id memidx#290] -[visit_exp memarg#193] -[visit_id memarg#193] -[visit_exp (`I32`_numtype, ?(`%_%`_loadop_{sz#1679, sx#15765, i#98085}(`%`_sz{i#98092}(16), `S`_sx)), x, ao)] +[check_dims] I ao x +dims \ I = ao, x +[visit_exp `LOAD`_instr(`I32`_numtype, ?(`%_%`_loadop_(`%`_sz(16), `S`_sx)), x, ao)] +[visit_exp (`I32`_numtype, ?(`%_%`_loadop_(`%`_sz(16), `S`_sx)), x, ao)] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp ?(`%_%`_loadop_{sz#1679, sx#15765, i#98085}(`%`_sz{i#98092}(16), `S`_sx))] -[visit_exp `%_%`_loadop_{sz#1679, sx#15765, i#98085}(`%`_sz{i#98092}(16), `S`_sx)] -[visit_exp sz#1679] -[visit_id sz#1679] -[visit_exp sx#15765] -[visit_id sx#15765] -[visit_exp i#98085] -[visit_id i#98085] -[visit_exp (`%`_sz{i#98092}(16), `S`_sx)] -[visit_exp `%`_sz{i#98092}(16)] -[visit_exp i#98092] -[visit_id i#98092] +[visit_exp ?(`%_%`_loadop_(`%`_sz(16), `S`_sx))] +[visit_exp `%_%`_loadop_(`%`_sz(16), `S`_sx)] +[visit_exp (`%`_sz(16), `S`_sx)] +[visit_exp `%`_sz(16)] [visit_exp (16)] [visit_exp 16] [visit_exp `S`_sx] @@ -95323,30 +75389,16 @@ dims \ I = ao, i#98085, i#98092, memarg#193, memidx#290, numtype?#50, sx#15765, [visit_exp ao] [visit_id ao] not free [visit_exp 2] -[check_dims] I ao i#98149 i#98156 memarg#195 memidx#292 numtype?#51 sx#15783 sz#1697 x -dims \ I = ao, i#98149, i#98156, memarg#195, memidx#292, numtype?#51, sx#15783, sz#1697, x -[visit_exp `LOAD`_instr{`numtype?#51`, memidx#292, memarg#195}(`I32`_numtype, ?(`%_%`_loadop_{sz#1697, sx#15783, i#98149}(`%`_sz{i#98156}(16), `U`_sx)), x, ao)] -[visit_exp `numtype?#51`] -[visit_id numtype?#51] -[visit_exp memidx#292] -[visit_id memidx#292] -[visit_exp memarg#195] -[visit_id memarg#195] -[visit_exp (`I32`_numtype, ?(`%_%`_loadop_{sz#1697, sx#15783, i#98149}(`%`_sz{i#98156}(16), `U`_sx)), x, ao)] +[check_dims] I ao x +dims \ I = ao, x +[visit_exp `LOAD`_instr(`I32`_numtype, ?(`%_%`_loadop_(`%`_sz(16), `U`_sx)), x, ao)] +[visit_exp (`I32`_numtype, ?(`%_%`_loadop_(`%`_sz(16), `U`_sx)), x, ao)] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp ?(`%_%`_loadop_{sz#1697, sx#15783, i#98149}(`%`_sz{i#98156}(16), `U`_sx))] -[visit_exp `%_%`_loadop_{sz#1697, sx#15783, i#98149}(`%`_sz{i#98156}(16), `U`_sx)] -[visit_exp sz#1697] -[visit_id sz#1697] -[visit_exp sx#15783] -[visit_id sx#15783] -[visit_exp i#98149] -[visit_id i#98149] -[visit_exp (`%`_sz{i#98156}(16), `U`_sx)] -[visit_exp `%`_sz{i#98156}(16)] -[visit_exp i#98156] -[visit_id i#98156] +[visit_exp ?(`%_%`_loadop_(`%`_sz(16), `U`_sx))] +[visit_exp `%_%`_loadop_(`%`_sz(16), `U`_sx)] +[visit_exp (`%`_sz(16), `U`_sx)] +[visit_exp `%`_sz(16)] [visit_exp (16)] [visit_exp 16] [visit_exp `U`_sx] @@ -95363,30 +75415,16 @@ dims \ I = ao, i#98149, i#98156, memarg#195, memidx#292, numtype?#51, sx#15783, [visit_exp ao] [visit_id ao] not free [visit_exp 2] -[check_dims] I ao i#98213 i#98220 memarg#197 memidx#294 numtype?#52 sx#15801 sz#1715 x -dims \ I = ao, i#98213, i#98220, memarg#197, memidx#294, numtype?#52, sx#15801, sz#1715, x -[visit_exp `LOAD`_instr{`numtype?#52`, memidx#294, memarg#197}(`I64`_numtype, ?(`%_%`_loadop_{sz#1715, sx#15801, i#98213}(`%`_sz{i#98220}(8), `S`_sx)), x, ao)] -[visit_exp `numtype?#52`] -[visit_id numtype?#52] -[visit_exp memidx#294] -[visit_id memidx#294] -[visit_exp memarg#197] -[visit_id memarg#197] -[visit_exp (`I64`_numtype, ?(`%_%`_loadop_{sz#1715, sx#15801, i#98213}(`%`_sz{i#98220}(8), `S`_sx)), x, ao)] +[check_dims] I ao x +dims \ I = ao, x +[visit_exp `LOAD`_instr(`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(8), `S`_sx)), x, ao)] +[visit_exp (`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(8), `S`_sx)), x, ao)] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp ?(`%_%`_loadop_{sz#1715, sx#15801, i#98213}(`%`_sz{i#98220}(8), `S`_sx))] -[visit_exp `%_%`_loadop_{sz#1715, sx#15801, i#98213}(`%`_sz{i#98220}(8), `S`_sx)] -[visit_exp sz#1715] -[visit_id sz#1715] -[visit_exp sx#15801] -[visit_id sx#15801] -[visit_exp i#98213] -[visit_id i#98213] -[visit_exp (`%`_sz{i#98220}(8), `S`_sx)] -[visit_exp `%`_sz{i#98220}(8)] -[visit_exp i#98220] -[visit_id i#98220] +[visit_exp ?(`%_%`_loadop_(`%`_sz(8), `S`_sx))] +[visit_exp `%_%`_loadop_(`%`_sz(8), `S`_sx)] +[visit_exp (`%`_sz(8), `S`_sx)] +[visit_exp `%`_sz(8)] [visit_exp (8)] [visit_exp 8] [visit_exp `S`_sx] @@ -95403,30 +75441,16 @@ dims \ I = ao, i#98213, i#98220, memarg#197, memidx#294, numtype?#52, sx#15801, [visit_exp ao] [visit_id ao] not free [visit_exp 1] -[check_dims] I ao i#98277 i#98284 memarg#199 memidx#296 numtype?#53 sx#15819 sz#1733 x -dims \ I = ao, i#98277, i#98284, memarg#199, memidx#296, numtype?#53, sx#15819, sz#1733, x -[visit_exp `LOAD`_instr{`numtype?#53`, memidx#296, memarg#199}(`I64`_numtype, ?(`%_%`_loadop_{sz#1733, sx#15819, i#98277}(`%`_sz{i#98284}(8), `U`_sx)), x, ao)] -[visit_exp `numtype?#53`] -[visit_id numtype?#53] -[visit_exp memidx#296] -[visit_id memidx#296] -[visit_exp memarg#199] -[visit_id memarg#199] -[visit_exp (`I64`_numtype, ?(`%_%`_loadop_{sz#1733, sx#15819, i#98277}(`%`_sz{i#98284}(8), `U`_sx)), x, ao)] +[check_dims] I ao x +dims \ I = ao, x +[visit_exp `LOAD`_instr(`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(8), `U`_sx)), x, ao)] +[visit_exp (`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(8), `U`_sx)), x, ao)] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp ?(`%_%`_loadop_{sz#1733, sx#15819, i#98277}(`%`_sz{i#98284}(8), `U`_sx))] -[visit_exp `%_%`_loadop_{sz#1733, sx#15819, i#98277}(`%`_sz{i#98284}(8), `U`_sx)] -[visit_exp sz#1733] -[visit_id sz#1733] -[visit_exp sx#15819] -[visit_id sx#15819] -[visit_exp i#98277] -[visit_id i#98277] -[visit_exp (`%`_sz{i#98284}(8), `U`_sx)] -[visit_exp `%`_sz{i#98284}(8)] -[visit_exp i#98284] -[visit_id i#98284] +[visit_exp ?(`%_%`_loadop_(`%`_sz(8), `U`_sx))] +[visit_exp `%_%`_loadop_(`%`_sz(8), `U`_sx)] +[visit_exp (`%`_sz(8), `U`_sx)] +[visit_exp `%`_sz(8)] [visit_exp (8)] [visit_exp 8] [visit_exp `U`_sx] @@ -95443,30 +75467,16 @@ dims \ I = ao, i#98277, i#98284, memarg#199, memidx#296, numtype?#53, sx#15819, [visit_exp ao] [visit_id ao] not free [visit_exp 1] -[check_dims] I ao i#98341 i#98348 memarg#201 memidx#298 numtype?#54 sx#15837 sz#1751 x -dims \ I = ao, i#98341, i#98348, memarg#201, memidx#298, numtype?#54, sx#15837, sz#1751, x -[visit_exp `LOAD`_instr{`numtype?#54`, memidx#298, memarg#201}(`I64`_numtype, ?(`%_%`_loadop_{sz#1751, sx#15837, i#98341}(`%`_sz{i#98348}(16), `S`_sx)), x, ao)] -[visit_exp `numtype?#54`] -[visit_id numtype?#54] -[visit_exp memidx#298] -[visit_id memidx#298] -[visit_exp memarg#201] -[visit_id memarg#201] -[visit_exp (`I64`_numtype, ?(`%_%`_loadop_{sz#1751, sx#15837, i#98341}(`%`_sz{i#98348}(16), `S`_sx)), x, ao)] +[check_dims] I ao x +dims \ I = ao, x +[visit_exp `LOAD`_instr(`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(16), `S`_sx)), x, ao)] +[visit_exp (`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(16), `S`_sx)), x, ao)] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp ?(`%_%`_loadop_{sz#1751, sx#15837, i#98341}(`%`_sz{i#98348}(16), `S`_sx))] -[visit_exp `%_%`_loadop_{sz#1751, sx#15837, i#98341}(`%`_sz{i#98348}(16), `S`_sx)] -[visit_exp sz#1751] -[visit_id sz#1751] -[visit_exp sx#15837] -[visit_id sx#15837] -[visit_exp i#98341] -[visit_id i#98341] -[visit_exp (`%`_sz{i#98348}(16), `S`_sx)] -[visit_exp `%`_sz{i#98348}(16)] -[visit_exp i#98348] -[visit_id i#98348] +[visit_exp ?(`%_%`_loadop_(`%`_sz(16), `S`_sx))] +[visit_exp `%_%`_loadop_(`%`_sz(16), `S`_sx)] +[visit_exp (`%`_sz(16), `S`_sx)] +[visit_exp `%`_sz(16)] [visit_exp (16)] [visit_exp 16] [visit_exp `S`_sx] @@ -95483,30 +75493,16 @@ dims \ I = ao, i#98341, i#98348, memarg#201, memidx#298, numtype?#54, sx#15837, [visit_exp ao] [visit_id ao] not free [visit_exp 2] -[check_dims] I ao i#98405 i#98412 memarg#203 memidx#300 numtype?#55 sx#15855 sz#1769 x -dims \ I = ao, i#98405, i#98412, memarg#203, memidx#300, numtype?#55, sx#15855, sz#1769, x -[visit_exp `LOAD`_instr{`numtype?#55`, memidx#300, memarg#203}(`I64`_numtype, ?(`%_%`_loadop_{sz#1769, sx#15855, i#98405}(`%`_sz{i#98412}(16), `U`_sx)), x, ao)] -[visit_exp `numtype?#55`] -[visit_id numtype?#55] -[visit_exp memidx#300] -[visit_id memidx#300] -[visit_exp memarg#203] -[visit_id memarg#203] -[visit_exp (`I64`_numtype, ?(`%_%`_loadop_{sz#1769, sx#15855, i#98405}(`%`_sz{i#98412}(16), `U`_sx)), x, ao)] +[check_dims] I ao x +dims \ I = ao, x +[visit_exp `LOAD`_instr(`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(16), `U`_sx)), x, ao)] +[visit_exp (`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(16), `U`_sx)), x, ao)] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp ?(`%_%`_loadop_{sz#1769, sx#15855, i#98405}(`%`_sz{i#98412}(16), `U`_sx))] -[visit_exp `%_%`_loadop_{sz#1769, sx#15855, i#98405}(`%`_sz{i#98412}(16), `U`_sx)] -[visit_exp sz#1769] -[visit_id sz#1769] -[visit_exp sx#15855] -[visit_id sx#15855] -[visit_exp i#98405] -[visit_id i#98405] -[visit_exp (`%`_sz{i#98412}(16), `U`_sx)] -[visit_exp `%`_sz{i#98412}(16)] -[visit_exp i#98412] -[visit_id i#98412] +[visit_exp ?(`%_%`_loadop_(`%`_sz(16), `U`_sx))] +[visit_exp `%_%`_loadop_(`%`_sz(16), `U`_sx)] +[visit_exp (`%`_sz(16), `U`_sx)] +[visit_exp `%`_sz(16)] [visit_exp (16)] [visit_exp 16] [visit_exp `U`_sx] @@ -95523,30 +75519,16 @@ dims \ I = ao, i#98405, i#98412, memarg#203, memidx#300, numtype?#55, sx#15855, [visit_exp ao] [visit_id ao] not free [visit_exp 2] -[check_dims] I ao i#98469 i#98476 memarg#205 memidx#302 numtype?#56 sx#15873 sz#1787 x -dims \ I = ao, i#98469, i#98476, memarg#205, memidx#302, numtype?#56, sx#15873, sz#1787, x -[visit_exp `LOAD`_instr{`numtype?#56`, memidx#302, memarg#205}(`I64`_numtype, ?(`%_%`_loadop_{sz#1787, sx#15873, i#98469}(`%`_sz{i#98476}(32), `S`_sx)), x, ao)] -[visit_exp `numtype?#56`] -[visit_id numtype?#56] -[visit_exp memidx#302] -[visit_id memidx#302] -[visit_exp memarg#205] -[visit_id memarg#205] -[visit_exp (`I64`_numtype, ?(`%_%`_loadop_{sz#1787, sx#15873, i#98469}(`%`_sz{i#98476}(32), `S`_sx)), x, ao)] +[check_dims] I ao x +dims \ I = ao, x +[visit_exp `LOAD`_instr(`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(32), `S`_sx)), x, ao)] +[visit_exp (`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(32), `S`_sx)), x, ao)] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp ?(`%_%`_loadop_{sz#1787, sx#15873, i#98469}(`%`_sz{i#98476}(32), `S`_sx))] -[visit_exp `%_%`_loadop_{sz#1787, sx#15873, i#98469}(`%`_sz{i#98476}(32), `S`_sx)] -[visit_exp sz#1787] -[visit_id sz#1787] -[visit_exp sx#15873] -[visit_id sx#15873] -[visit_exp i#98469] -[visit_id i#98469] -[visit_exp (`%`_sz{i#98476}(32), `S`_sx)] -[visit_exp `%`_sz{i#98476}(32)] -[visit_exp i#98476] -[visit_id i#98476] +[visit_exp ?(`%_%`_loadop_(`%`_sz(32), `S`_sx))] +[visit_exp `%_%`_loadop_(`%`_sz(32), `S`_sx)] +[visit_exp (`%`_sz(32), `S`_sx)] +[visit_exp `%`_sz(32)] [visit_exp (32)] [visit_exp 32] [visit_exp `S`_sx] @@ -95563,30 +75545,16 @@ dims \ I = ao, i#98469, i#98476, memarg#205, memidx#302, numtype?#56, sx#15873, [visit_exp ao] [visit_id ao] not free [visit_exp 4] -[check_dims] I ao i#98533 i#98540 memarg#207 memidx#304 numtype?#57 sx#15891 sz#1805 x -dims \ I = ao, i#98533, i#98540, memarg#207, memidx#304, numtype?#57, sx#15891, sz#1805, x -[visit_exp `LOAD`_instr{`numtype?#57`, memidx#304, memarg#207}(`I64`_numtype, ?(`%_%`_loadop_{sz#1805, sx#15891, i#98533}(`%`_sz{i#98540}(32), `U`_sx)), x, ao)] -[visit_exp `numtype?#57`] -[visit_id numtype?#57] -[visit_exp memidx#304] -[visit_id memidx#304] -[visit_exp memarg#207] -[visit_id memarg#207] -[visit_exp (`I64`_numtype, ?(`%_%`_loadop_{sz#1805, sx#15891, i#98533}(`%`_sz{i#98540}(32), `U`_sx)), x, ao)] +[check_dims] I ao x +dims \ I = ao, x +[visit_exp `LOAD`_instr(`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(32), `U`_sx)), x, ao)] +[visit_exp (`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(32), `U`_sx)), x, ao)] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp ?(`%_%`_loadop_{sz#1805, sx#15891, i#98533}(`%`_sz{i#98540}(32), `U`_sx))] -[visit_exp `%_%`_loadop_{sz#1805, sx#15891, i#98533}(`%`_sz{i#98540}(32), `U`_sx)] -[visit_exp sz#1805] -[visit_id sz#1805] -[visit_exp sx#15891] -[visit_id sx#15891] -[visit_exp i#98533] -[visit_id i#98533] -[visit_exp (`%`_sz{i#98540}(32), `U`_sx)] -[visit_exp `%`_sz{i#98540}(32)] -[visit_exp i#98540] -[visit_id i#98540] +[visit_exp ?(`%_%`_loadop_(`%`_sz(32), `U`_sx))] +[visit_exp `%_%`_loadop_(`%`_sz(32), `U`_sx)] +[visit_exp (`%`_sz(32), `U`_sx)] +[visit_exp `%`_sz(32)] [visit_exp (32)] [visit_exp 32] [visit_exp `U`_sx] @@ -95603,15 +75571,9 @@ dims \ I = ao, i#98533, i#98540, memarg#207, memidx#304, numtype?#57, sx#15891, [visit_exp ao] [visit_id ao] not free [visit_exp 4] -[check_dims] I ao memarg#209 memidx#306 vectype?#27 x -dims \ I = ao, memarg#209, memidx#306, vectype?#27, x -[visit_exp `VLOAD`_instr{`vectype?#27`, memidx#306, memarg#209}(`V128`_vectype, ?(), x, ao)] -[visit_exp `vectype?#27`] -[visit_id vectype?#27] -[visit_exp memidx#306] -[visit_id memidx#306] -[visit_exp memarg#209] -[visit_id memarg#209] +[check_dims] I ao x +dims \ I = ao, x +[visit_exp `VLOAD`_instr(`V128`_vectype, ?(), x, ao)] [visit_exp (`V128`_vectype, ?(), x, ao)] [visit_exp `V128`_vectype] [visit_exp ()] @@ -95628,32 +75590,16 @@ dims \ I = ao, memarg#209, memidx#306, vectype?#27, x [visit_exp ao] [visit_id ao] not free [visit_exp 16] -[check_dims] I M#349 ao i#98628 i#98635 memarg#211 memidx#308 sx#15908 sz#1852 vectype?#28 x -dims \ I = M#349, ao, i#98628, i#98635, memarg#211, memidx#308, sx#15908, sz#1852, vectype?#28, x -[visit_exp `VLOAD`_instr{`vectype?#28`, memidx#308, memarg#211}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1852, M#349, sx#15908, i#98628}(`%`_sz{i#98635}(8), 8, `S`_sx)), x, ao)] -[visit_exp `vectype?#28`] -[visit_id vectype?#28] -[visit_exp memidx#308] -[visit_id memidx#308] -[visit_exp memarg#211] -[visit_id memarg#211] -[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1852, M#349, sx#15908, i#98628}(`%`_sz{i#98635}(8), 8, `S`_sx)), x, ao)] +[check_dims] I ao x +dims \ I = ao, x +[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, `S`_sx)), x, ao)] +[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, `S`_sx)), x, ao)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp ?(`SHAPE%X%_%`_vloadop_{sz#1852, M#349, sx#15908, i#98628}(`%`_sz{i#98635}(8), 8, `S`_sx))] -[visit_exp `SHAPE%X%_%`_vloadop_{sz#1852, M#349, sx#15908, i#98628}(`%`_sz{i#98635}(8), 8, `S`_sx)] -[visit_exp sz#1852] -[visit_id sz#1852] -[visit_exp M#349] -[visit_id M#349] -[visit_exp sx#15908] -[visit_id sx#15908] -[visit_exp i#98628] -[visit_id i#98628] -[visit_exp (`%`_sz{i#98635}(8), 8, `S`_sx)] -[visit_exp `%`_sz{i#98635}(8)] -[visit_exp i#98635] -[visit_id i#98635] +[visit_exp ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, `S`_sx))] +[visit_exp `SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, `S`_sx)] +[visit_exp (`%`_sz(8), 8, `S`_sx)] +[visit_exp `%`_sz(8)] [visit_exp (8)] [visit_exp 8] [visit_exp 8] @@ -95671,32 +75617,16 @@ dims \ I = M#349, ao, i#98628, i#98635, memarg#211, memidx#308, sx#15908, sz#185 [visit_exp ao] [visit_id ao] not free [visit_exp 8] -[check_dims] I M#366 ao i#98692 i#98699 memarg#213 memidx#310 sx#15925 sz#1899 vectype?#29 x -dims \ I = M#366, ao, i#98692, i#98699, memarg#213, memidx#310, sx#15925, sz#1899, vectype?#29, x -[visit_exp `VLOAD`_instr{`vectype?#29`, memidx#310, memarg#213}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1899, M#366, sx#15925, i#98692}(`%`_sz{i#98699}(8), 8, `U`_sx)), x, ao)] -[visit_exp `vectype?#29`] -[visit_id vectype?#29] -[visit_exp memidx#310] -[visit_id memidx#310] -[visit_exp memarg#213] -[visit_id memarg#213] -[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1899, M#366, sx#15925, i#98692}(`%`_sz{i#98699}(8), 8, `U`_sx)), x, ao)] +[check_dims] I ao x +dims \ I = ao, x +[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, `U`_sx)), x, ao)] +[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, `U`_sx)), x, ao)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp ?(`SHAPE%X%_%`_vloadop_{sz#1899, M#366, sx#15925, i#98692}(`%`_sz{i#98699}(8), 8, `U`_sx))] -[visit_exp `SHAPE%X%_%`_vloadop_{sz#1899, M#366, sx#15925, i#98692}(`%`_sz{i#98699}(8), 8, `U`_sx)] -[visit_exp sz#1899] -[visit_id sz#1899] -[visit_exp M#366] -[visit_id M#366] -[visit_exp sx#15925] -[visit_id sx#15925] -[visit_exp i#98692] -[visit_id i#98692] -[visit_exp (`%`_sz{i#98699}(8), 8, `U`_sx)] -[visit_exp `%`_sz{i#98699}(8)] -[visit_exp i#98699] -[visit_id i#98699] +[visit_exp ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, `U`_sx))] +[visit_exp `SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, `U`_sx)] +[visit_exp (`%`_sz(8), 8, `U`_sx)] +[visit_exp `%`_sz(8)] [visit_exp (8)] [visit_exp 8] [visit_exp 8] @@ -95714,32 +75644,16 @@ dims \ I = M#366, ao, i#98692, i#98699, memarg#213, memidx#310, sx#15925, sz#189 [visit_exp ao] [visit_id ao] not free [visit_exp 8] -[check_dims] I M#383 ao i#98756 i#98763 memarg#215 memidx#312 sx#15942 sz#1946 vectype?#30 x -dims \ I = M#383, ao, i#98756, i#98763, memarg#215, memidx#312, sx#15942, sz#1946, vectype?#30, x -[visit_exp `VLOAD`_instr{`vectype?#30`, memidx#312, memarg#215}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1946, M#383, sx#15942, i#98756}(`%`_sz{i#98763}(16), 4, `S`_sx)), x, ao)] -[visit_exp `vectype?#30`] -[visit_id vectype?#30] -[visit_exp memidx#312] -[visit_id memidx#312] -[visit_exp memarg#215] -[visit_id memarg#215] -[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1946, M#383, sx#15942, i#98756}(`%`_sz{i#98763}(16), 4, `S`_sx)), x, ao)] +[check_dims] I ao x +dims \ I = ao, x +[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, `S`_sx)), x, ao)] +[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, `S`_sx)), x, ao)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp ?(`SHAPE%X%_%`_vloadop_{sz#1946, M#383, sx#15942, i#98756}(`%`_sz{i#98763}(16), 4, `S`_sx))] -[visit_exp `SHAPE%X%_%`_vloadop_{sz#1946, M#383, sx#15942, i#98756}(`%`_sz{i#98763}(16), 4, `S`_sx)] -[visit_exp sz#1946] -[visit_id sz#1946] -[visit_exp M#383] -[visit_id M#383] -[visit_exp sx#15942] -[visit_id sx#15942] -[visit_exp i#98756] -[visit_id i#98756] -[visit_exp (`%`_sz{i#98763}(16), 4, `S`_sx)] -[visit_exp `%`_sz{i#98763}(16)] -[visit_exp i#98763] -[visit_id i#98763] +[visit_exp ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, `S`_sx))] +[visit_exp `SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, `S`_sx)] +[visit_exp (`%`_sz(16), 4, `S`_sx)] +[visit_exp `%`_sz(16)] [visit_exp (16)] [visit_exp 16] [visit_exp 4] @@ -95757,32 +75671,16 @@ dims \ I = M#383, ao, i#98756, i#98763, memarg#215, memidx#312, sx#15942, sz#194 [visit_exp ao] [visit_id ao] not free [visit_exp 8] -[check_dims] I M#400 ao i#98820 i#98827 memarg#217 memidx#314 sx#15959 sz#1993 vectype?#31 x -dims \ I = M#400, ao, i#98820, i#98827, memarg#217, memidx#314, sx#15959, sz#1993, vectype?#31, x -[visit_exp `VLOAD`_instr{`vectype?#31`, memidx#314, memarg#217}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1993, M#400, sx#15959, i#98820}(`%`_sz{i#98827}(16), 4, `U`_sx)), x, ao)] -[visit_exp `vectype?#31`] -[visit_id vectype?#31] -[visit_exp memidx#314] -[visit_id memidx#314] -[visit_exp memarg#217] -[visit_id memarg#217] -[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1993, M#400, sx#15959, i#98820}(`%`_sz{i#98827}(16), 4, `U`_sx)), x, ao)] +[check_dims] I ao x +dims \ I = ao, x +[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, `U`_sx)), x, ao)] +[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, `U`_sx)), x, ao)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp ?(`SHAPE%X%_%`_vloadop_{sz#1993, M#400, sx#15959, i#98820}(`%`_sz{i#98827}(16), 4, `U`_sx))] -[visit_exp `SHAPE%X%_%`_vloadop_{sz#1993, M#400, sx#15959, i#98820}(`%`_sz{i#98827}(16), 4, `U`_sx)] -[visit_exp sz#1993] -[visit_id sz#1993] -[visit_exp M#400] -[visit_id M#400] -[visit_exp sx#15959] -[visit_id sx#15959] -[visit_exp i#98820] -[visit_id i#98820] -[visit_exp (`%`_sz{i#98827}(16), 4, `U`_sx)] -[visit_exp `%`_sz{i#98827}(16)] -[visit_exp i#98827] -[visit_id i#98827] +[visit_exp ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, `U`_sx))] +[visit_exp `SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, `U`_sx)] +[visit_exp (`%`_sz(16), 4, `U`_sx)] +[visit_exp `%`_sz(16)] [visit_exp (16)] [visit_exp 16] [visit_exp 4] @@ -95800,32 +75698,16 @@ dims \ I = M#400, ao, i#98820, i#98827, memarg#217, memidx#314, sx#15959, sz#199 [visit_exp ao] [visit_id ao] not free [visit_exp 8] -[check_dims] I M#417 ao i#98884 i#98891 memarg#219 memidx#316 sx#15976 sz#2040 vectype?#32 x -dims \ I = M#417, ao, i#98884, i#98891, memarg#219, memidx#316, sx#15976, sz#2040, vectype?#32, x -[visit_exp `VLOAD`_instr{`vectype?#32`, memidx#316, memarg#219}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#2040, M#417, sx#15976, i#98884}(`%`_sz{i#98891}(32), 2, `S`_sx)), x, ao)] -[visit_exp `vectype?#32`] -[visit_id vectype?#32] -[visit_exp memidx#316] -[visit_id memidx#316] -[visit_exp memarg#219] -[visit_id memarg#219] -[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#2040, M#417, sx#15976, i#98884}(`%`_sz{i#98891}(32), 2, `S`_sx)), x, ao)] +[check_dims] I ao x +dims \ I = ao, x +[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, `S`_sx)), x, ao)] +[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, `S`_sx)), x, ao)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp ?(`SHAPE%X%_%`_vloadop_{sz#2040, M#417, sx#15976, i#98884}(`%`_sz{i#98891}(32), 2, `S`_sx))] -[visit_exp `SHAPE%X%_%`_vloadop_{sz#2040, M#417, sx#15976, i#98884}(`%`_sz{i#98891}(32), 2, `S`_sx)] -[visit_exp sz#2040] -[visit_id sz#2040] -[visit_exp M#417] -[visit_id M#417] -[visit_exp sx#15976] -[visit_id sx#15976] -[visit_exp i#98884] -[visit_id i#98884] -[visit_exp (`%`_sz{i#98891}(32), 2, `S`_sx)] -[visit_exp `%`_sz{i#98891}(32)] -[visit_exp i#98891] -[visit_id i#98891] +[visit_exp ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, `S`_sx))] +[visit_exp `SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, `S`_sx)] +[visit_exp (`%`_sz(32), 2, `S`_sx)] +[visit_exp `%`_sz(32)] [visit_exp (32)] [visit_exp 32] [visit_exp 2] @@ -95843,32 +75725,16 @@ dims \ I = M#417, ao, i#98884, i#98891, memarg#219, memidx#316, sx#15976, sz#204 [visit_exp ao] [visit_id ao] not free [visit_exp 8] -[check_dims] I M#434 ao i#98948 i#98955 memarg#221 memidx#318 sx#15993 sz#2087 vectype?#33 x -dims \ I = M#434, ao, i#98948, i#98955, memarg#221, memidx#318, sx#15993, sz#2087, vectype?#33, x -[visit_exp `VLOAD`_instr{`vectype?#33`, memidx#318, memarg#221}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#2087, M#434, sx#15993, i#98948}(`%`_sz{i#98955}(32), 2, `U`_sx)), x, ao)] -[visit_exp `vectype?#33`] -[visit_id vectype?#33] -[visit_exp memidx#318] -[visit_id memidx#318] -[visit_exp memarg#221] -[visit_id memarg#221] -[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#2087, M#434, sx#15993, i#98948}(`%`_sz{i#98955}(32), 2, `U`_sx)), x, ao)] +[check_dims] I ao x +dims \ I = ao, x +[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, `U`_sx)), x, ao)] +[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, `U`_sx)), x, ao)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp ?(`SHAPE%X%_%`_vloadop_{sz#2087, M#434, sx#15993, i#98948}(`%`_sz{i#98955}(32), 2, `U`_sx))] -[visit_exp `SHAPE%X%_%`_vloadop_{sz#2087, M#434, sx#15993, i#98948}(`%`_sz{i#98955}(32), 2, `U`_sx)] -[visit_exp sz#2087] -[visit_id sz#2087] -[visit_exp M#434] -[visit_id M#434] -[visit_exp sx#15993] -[visit_id sx#15993] -[visit_exp i#98948] -[visit_id i#98948] -[visit_exp (`%`_sz{i#98955}(32), 2, `U`_sx)] -[visit_exp `%`_sz{i#98955}(32)] -[visit_exp i#98955] -[visit_id i#98955] +[visit_exp ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, `U`_sx))] +[visit_exp `SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, `U`_sx)] +[visit_exp (`%`_sz(32), 2, `U`_sx)] +[visit_exp `%`_sz(32)] [visit_exp (32)] [visit_exp 32] [visit_exp 2] @@ -95886,26 +75752,16 @@ dims \ I = M#434, ao, i#98948, i#98955, memarg#221, memidx#318, sx#15993, sz#208 [visit_exp ao] [visit_id ao] not free [visit_exp 8] -[check_dims] I ao i#99018 memarg#223 memidx#320 sz#2134 vectype?#34 x -dims \ I = ao, i#99018, memarg#223, memidx#320, sz#2134, vectype?#34, x -[visit_exp `VLOAD`_instr{`vectype?#34`, memidx#320, memarg#223}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#2134}(`%`_sz{i#99018}(8))), x, ao)] -[visit_exp `vectype?#34`] -[visit_id vectype?#34] -[visit_exp memidx#320] -[visit_id memidx#320] -[visit_exp memarg#223] -[visit_id memarg#223] -[visit_exp (`V128`_vectype, ?(`SPLAT`_vloadop_{sz#2134}(`%`_sz{i#99018}(8))), x, ao)] +[check_dims] I ao x +dims \ I = ao, x +[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(8))), x, ao)] +[visit_exp (`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(8))), x, ao)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp ?(`SPLAT`_vloadop_{sz#2134}(`%`_sz{i#99018}(8)))] -[visit_exp `SPLAT`_vloadop_{sz#2134}(`%`_sz{i#99018}(8))] -[visit_exp sz#2134] -[visit_id sz#2134] -[visit_exp (`%`_sz{i#99018}(8))] -[visit_exp `%`_sz{i#99018}(8)] -[visit_exp i#99018] -[visit_id i#99018] +[visit_exp ?(`SPLAT`_vloadop_(`%`_sz(8)))] +[visit_exp `SPLAT`_vloadop_(`%`_sz(8))] +[visit_exp (`%`_sz(8))] +[visit_exp `%`_sz(8)] [visit_exp (8)] [visit_exp 8] [visit_exp x] @@ -95920,26 +75776,16 @@ dims \ I = ao, i#99018, memarg#223, memidx#320, sz#2134, vectype?#34, x [visit_exp ao] [visit_id ao] not free [visit_exp 1] -[check_dims] I ao i#99081 memarg#225 memidx#322 sz#2181 vectype?#35 x -dims \ I = ao, i#99081, memarg#225, memidx#322, sz#2181, vectype?#35, x -[visit_exp `VLOAD`_instr{`vectype?#35`, memidx#322, memarg#225}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#2181}(`%`_sz{i#99081}(16))), x, ao)] -[visit_exp `vectype?#35`] -[visit_id vectype?#35] -[visit_exp memidx#322] -[visit_id memidx#322] -[visit_exp memarg#225] -[visit_id memarg#225] -[visit_exp (`V128`_vectype, ?(`SPLAT`_vloadop_{sz#2181}(`%`_sz{i#99081}(16))), x, ao)] +[check_dims] I ao x +dims \ I = ao, x +[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(16))), x, ao)] +[visit_exp (`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(16))), x, ao)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp ?(`SPLAT`_vloadop_{sz#2181}(`%`_sz{i#99081}(16)))] -[visit_exp `SPLAT`_vloadop_{sz#2181}(`%`_sz{i#99081}(16))] -[visit_exp sz#2181] -[visit_id sz#2181] -[visit_exp (`%`_sz{i#99081}(16))] -[visit_exp `%`_sz{i#99081}(16)] -[visit_exp i#99081] -[visit_id i#99081] +[visit_exp ?(`SPLAT`_vloadop_(`%`_sz(16)))] +[visit_exp `SPLAT`_vloadop_(`%`_sz(16))] +[visit_exp (`%`_sz(16))] +[visit_exp `%`_sz(16)] [visit_exp (16)] [visit_exp 16] [visit_exp x] @@ -95954,26 +75800,16 @@ dims \ I = ao, i#99081, memarg#225, memidx#322, sz#2181, vectype?#35, x [visit_exp ao] [visit_id ao] not free [visit_exp 2] -[check_dims] I ao i#99144 memarg#227 memidx#324 sz#2228 vectype?#36 x -dims \ I = ao, i#99144, memarg#227, memidx#324, sz#2228, vectype?#36, x -[visit_exp `VLOAD`_instr{`vectype?#36`, memidx#324, memarg#227}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#2228}(`%`_sz{i#99144}(32))), x, ao)] -[visit_exp `vectype?#36`] -[visit_id vectype?#36] -[visit_exp memidx#324] -[visit_id memidx#324] -[visit_exp memarg#227] -[visit_id memarg#227] -[visit_exp (`V128`_vectype, ?(`SPLAT`_vloadop_{sz#2228}(`%`_sz{i#99144}(32))), x, ao)] +[check_dims] I ao x +dims \ I = ao, x +[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(32))), x, ao)] +[visit_exp (`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(32))), x, ao)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp ?(`SPLAT`_vloadop_{sz#2228}(`%`_sz{i#99144}(32)))] -[visit_exp `SPLAT`_vloadop_{sz#2228}(`%`_sz{i#99144}(32))] -[visit_exp sz#2228] -[visit_id sz#2228] -[visit_exp (`%`_sz{i#99144}(32))] -[visit_exp `%`_sz{i#99144}(32)] -[visit_exp i#99144] -[visit_id i#99144] +[visit_exp ?(`SPLAT`_vloadop_(`%`_sz(32)))] +[visit_exp `SPLAT`_vloadop_(`%`_sz(32))] +[visit_exp (`%`_sz(32))] +[visit_exp `%`_sz(32)] [visit_exp (32)] [visit_exp 32] [visit_exp x] @@ -95988,26 +75824,16 @@ dims \ I = ao, i#99144, memarg#227, memidx#324, sz#2228, vectype?#36, x [visit_exp ao] [visit_id ao] not free [visit_exp 4] -[check_dims] I ao i#99207 memarg#229 memidx#326 sz#2275 vectype?#37 x -dims \ I = ao, i#99207, memarg#229, memidx#326, sz#2275, vectype?#37, x -[visit_exp `VLOAD`_instr{`vectype?#37`, memidx#326, memarg#229}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#2275}(`%`_sz{i#99207}(64))), x, ao)] -[visit_exp `vectype?#37`] -[visit_id vectype?#37] -[visit_exp memidx#326] -[visit_id memidx#326] -[visit_exp memarg#229] -[visit_id memarg#229] -[visit_exp (`V128`_vectype, ?(`SPLAT`_vloadop_{sz#2275}(`%`_sz{i#99207}(64))), x, ao)] +[check_dims] I ao x +dims \ I = ao, x +[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(64))), x, ao)] +[visit_exp (`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(64))), x, ao)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp ?(`SPLAT`_vloadop_{sz#2275}(`%`_sz{i#99207}(64)))] -[visit_exp `SPLAT`_vloadop_{sz#2275}(`%`_sz{i#99207}(64))] -[visit_exp sz#2275] -[visit_id sz#2275] -[visit_exp (`%`_sz{i#99207}(64))] -[visit_exp `%`_sz{i#99207}(64)] -[visit_exp i#99207] -[visit_id i#99207] +[visit_exp ?(`SPLAT`_vloadop_(`%`_sz(64)))] +[visit_exp `SPLAT`_vloadop_(`%`_sz(64))] +[visit_exp (`%`_sz(64))] +[visit_exp `%`_sz(64)] [visit_exp (64)] [visit_exp 64] [visit_exp x] @@ -96022,28 +75848,16 @@ dims \ I = ao, i#99207, memarg#229, memidx#326, sz#2275, vectype?#37, x [visit_exp ao] [visit_id ao] not free [visit_exp 8] -[check_dims] I ao i#99264 i#99271 memarg#231 memidx#328 sz#2322 vectype?#38 x -dims \ I = ao, i#99264, i#99271, memarg#231, memidx#328, sz#2322, vectype?#38, x -[visit_exp `VLOAD`_instr{`vectype?#38`, memidx#328, memarg#231}(`V128`_vectype, ?(`ZERO`_vloadop_{sz#2322, i#99264}(`%`_sz{i#99271}(32))), x, ao)] -[visit_exp `vectype?#38`] -[visit_id vectype?#38] -[visit_exp memidx#328] -[visit_id memidx#328] -[visit_exp memarg#231] -[visit_id memarg#231] -[visit_exp (`V128`_vectype, ?(`ZERO`_vloadop_{sz#2322, i#99264}(`%`_sz{i#99271}(32))), x, ao)] +[check_dims] I ao x +dims \ I = ao, x +[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`ZERO`_vloadop_(`%`_sz(32))), x, ao)] +[visit_exp (`V128`_vectype, ?(`ZERO`_vloadop_(`%`_sz(32))), x, ao)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp ?(`ZERO`_vloadop_{sz#2322, i#99264}(`%`_sz{i#99271}(32)))] -[visit_exp `ZERO`_vloadop_{sz#2322, i#99264}(`%`_sz{i#99271}(32))] -[visit_exp sz#2322] -[visit_id sz#2322] -[visit_exp i#99264] -[visit_id i#99264] -[visit_exp (`%`_sz{i#99271}(32))] -[visit_exp `%`_sz{i#99271}(32)] -[visit_exp i#99271] -[visit_id i#99271] +[visit_exp ?(`ZERO`_vloadop_(`%`_sz(32)))] +[visit_exp `ZERO`_vloadop_(`%`_sz(32))] +[visit_exp (`%`_sz(32))] +[visit_exp `%`_sz(32)] [visit_exp (32)] [visit_exp 32] [visit_exp x] @@ -96058,28 +75872,16 @@ dims \ I = ao, i#99264, i#99271, memarg#231, memidx#328, sz#2322, vectype?#38, x [visit_exp ao] [visit_id ao] not free [visit_exp 4] -[check_dims] I ao i#99328 i#99335 memarg#233 memidx#330 sz#2369 vectype?#39 x -dims \ I = ao, i#99328, i#99335, memarg#233, memidx#330, sz#2369, vectype?#39, x -[visit_exp `VLOAD`_instr{`vectype?#39`, memidx#330, memarg#233}(`V128`_vectype, ?(`ZERO`_vloadop_{sz#2369, i#99328}(`%`_sz{i#99335}(64))), x, ao)] -[visit_exp `vectype?#39`] -[visit_id vectype?#39] -[visit_exp memidx#330] -[visit_id memidx#330] -[visit_exp memarg#233] -[visit_id memarg#233] -[visit_exp (`V128`_vectype, ?(`ZERO`_vloadop_{sz#2369, i#99328}(`%`_sz{i#99335}(64))), x, ao)] +[check_dims] I ao x +dims \ I = ao, x +[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`ZERO`_vloadop_(`%`_sz(64))), x, ao)] +[visit_exp (`V128`_vectype, ?(`ZERO`_vloadop_(`%`_sz(64))), x, ao)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp ?(`ZERO`_vloadop_{sz#2369, i#99328}(`%`_sz{i#99335}(64)))] -[visit_exp `ZERO`_vloadop_{sz#2369, i#99328}(`%`_sz{i#99335}(64))] -[visit_exp sz#2369] -[visit_id sz#2369] -[visit_exp i#99328] -[visit_id i#99328] -[visit_exp (`%`_sz{i#99335}(64))] -[visit_exp `%`_sz{i#99335}(64)] -[visit_exp i#99335] -[visit_id i#99335] +[visit_exp ?(`ZERO`_vloadop_(`%`_sz(64)))] +[visit_exp `ZERO`_vloadop_(`%`_sz(64))] +[visit_exp (`%`_sz(64))] +[visit_exp `%`_sz(64)] [visit_exp (64)] [visit_exp 64] [visit_exp x] @@ -96094,25 +75896,13 @@ dims \ I = ao, i#99328, i#99335, memarg#233, memidx#330, sz#2369, vectype?#39, x [visit_exp ao] [visit_id ao] not free [visit_exp 8] -[check_dims] I ao i i#99391 laneidx#75 memarg#235 memidx#332 sz#2371 vectype#286 x -dims \ I = ao, i, i#99391, laneidx#75, memarg#235, memidx#332, sz#2371, vectype#286, x -[visit_exp `VLOAD_LANE`_instr{vectype#286, sz#2371, memidx#332, memarg#235, laneidx#75}(`V128`_vectype, `%`_sz{i#99391}(8), x, ao, i)] -[visit_exp vectype#286] -[visit_id vectype#286] -[visit_exp sz#2371] -[visit_id sz#2371] -[visit_exp memidx#332] -[visit_id memidx#332] -[visit_exp memarg#235] -[visit_id memarg#235] -[visit_exp laneidx#75] -[visit_id laneidx#75] -[visit_exp (`V128`_vectype, `%`_sz{i#99391}(8), x, ao, i)] +[check_dims] I ao i x +dims \ I = ao, i, x +[visit_exp `VLOAD_LANE`_instr(`V128`_vectype, `%`_sz(8), x, ao, i)] +[visit_exp (`V128`_vectype, `%`_sz(8), x, ao, i)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp `%`_sz{i#99391}(8)] -[visit_exp i#99391] -[visit_id i#99391] +[visit_exp `%`_sz(8)] [visit_exp (8)] [visit_exp 8] [visit_exp x] @@ -96131,25 +75921,13 @@ dims \ I = ao, i, i#99391, laneidx#75, memarg#235, memidx#332, sz#2371, vectype# [visit_exp 1] [visit_exp i] [visit_id i] not free -[check_dims] I ao i i#99459 laneidx#77 memarg#237 memidx#334 sz#2373 vectype#288 x -dims \ I = ao, i, i#99459, laneidx#77, memarg#237, memidx#334, sz#2373, vectype#288, x -[visit_exp `VLOAD_LANE`_instr{vectype#288, sz#2373, memidx#334, memarg#237, laneidx#77}(`V128`_vectype, `%`_sz{i#99459}(16), x, ao, i)] -[visit_exp vectype#288] -[visit_id vectype#288] -[visit_exp sz#2373] -[visit_id sz#2373] -[visit_exp memidx#334] -[visit_id memidx#334] -[visit_exp memarg#237] -[visit_id memarg#237] -[visit_exp laneidx#77] -[visit_id laneidx#77] -[visit_exp (`V128`_vectype, `%`_sz{i#99459}(16), x, ao, i)] +[check_dims] I ao i x +dims \ I = ao, i, x +[visit_exp `VLOAD_LANE`_instr(`V128`_vectype, `%`_sz(16), x, ao, i)] +[visit_exp (`V128`_vectype, `%`_sz(16), x, ao, i)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp `%`_sz{i#99459}(16)] -[visit_exp i#99459] -[visit_id i#99459] +[visit_exp `%`_sz(16)] [visit_exp (16)] [visit_exp 16] [visit_exp x] @@ -96168,25 +75946,13 @@ dims \ I = ao, i, i#99459, laneidx#77, memarg#237, memidx#334, sz#2373, vectype# [visit_exp 2] [visit_exp i] [visit_id i] not free -[check_dims] I ao i i#99527 laneidx#79 memarg#239 memidx#336 sz#2375 vectype#290 x -dims \ I = ao, i, i#99527, laneidx#79, memarg#239, memidx#336, sz#2375, vectype#290, x -[visit_exp `VLOAD_LANE`_instr{vectype#290, sz#2375, memidx#336, memarg#239, laneidx#79}(`V128`_vectype, `%`_sz{i#99527}(32), x, ao, i)] -[visit_exp vectype#290] -[visit_id vectype#290] -[visit_exp sz#2375] -[visit_id sz#2375] -[visit_exp memidx#336] -[visit_id memidx#336] -[visit_exp memarg#239] -[visit_id memarg#239] -[visit_exp laneidx#79] -[visit_id laneidx#79] -[visit_exp (`V128`_vectype, `%`_sz{i#99527}(32), x, ao, i)] +[check_dims] I ao i x +dims \ I = ao, i, x +[visit_exp `VLOAD_LANE`_instr(`V128`_vectype, `%`_sz(32), x, ao, i)] +[visit_exp (`V128`_vectype, `%`_sz(32), x, ao, i)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp `%`_sz{i#99527}(32)] -[visit_exp i#99527] -[visit_id i#99527] +[visit_exp `%`_sz(32)] [visit_exp (32)] [visit_exp 32] [visit_exp x] @@ -96205,25 +75971,13 @@ dims \ I = ao, i, i#99527, laneidx#79, memarg#239, memidx#336, sz#2375, vectype# [visit_exp 4] [visit_exp i] [visit_id i] not free -[check_dims] I ao i i#99595 laneidx#81 memarg#241 memidx#338 sz#2377 vectype#292 x -dims \ I = ao, i, i#99595, laneidx#81, memarg#241, memidx#338, sz#2377, vectype#292, x -[visit_exp `VLOAD_LANE`_instr{vectype#292, sz#2377, memidx#338, memarg#241, laneidx#81}(`V128`_vectype, `%`_sz{i#99595}(64), x, ao, i)] -[visit_exp vectype#292] -[visit_id vectype#292] -[visit_exp sz#2377] -[visit_id sz#2377] -[visit_exp memidx#338] -[visit_id memidx#338] -[visit_exp memarg#241] -[visit_id memarg#241] -[visit_exp laneidx#81] -[visit_id laneidx#81] -[visit_exp (`V128`_vectype, `%`_sz{i#99595}(64), x, ao, i)] +[check_dims] I ao i x +dims \ I = ao, i, x +[visit_exp `VLOAD_LANE`_instr(`V128`_vectype, `%`_sz(64), x, ao, i)] +[visit_exp (`V128`_vectype, `%`_sz(64), x, ao, i)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp `%`_sz{i#99595}(64)] -[visit_exp i#99595] -[visit_id i#99595] +[visit_exp `%`_sz(64)] [visit_exp (64)] [visit_exp 64] [visit_exp x] @@ -96242,15 +75996,9 @@ dims \ I = ao, i, i#99595, laneidx#81, memarg#241, memidx#338, sz#2377, vectype# [visit_exp 8] [visit_exp i] [visit_id i] not free -[check_dims] I ao memarg#243 memidx#340 numtype?#58 x -dims \ I = ao, memarg#243, memidx#340, numtype?#58, x -[visit_exp `STORE`_instr{`numtype?#58`, memidx#340, memarg#243}(`I32`_numtype, ?(), x, ao)] -[visit_exp `numtype?#58`] -[visit_id numtype?#58] -[visit_exp memidx#340] -[visit_id memidx#340] -[visit_exp memarg#243] -[visit_id memarg#243] +[check_dims] I ao x +dims \ I = ao, x +[visit_exp `STORE`_instr(`I32`_numtype, ?(), x, ao)] [visit_exp (`I32`_numtype, ?(), x, ao)] [visit_exp `I32`_numtype] [visit_exp ()] @@ -96267,15 +76015,9 @@ dims \ I = ao, memarg#243, memidx#340, numtype?#58, x [visit_exp ao] [visit_id ao] not free [visit_exp 4] -[check_dims] I ao memarg#245 memidx#342 numtype?#59 x -dims \ I = ao, memarg#245, memidx#342, numtype?#59, x -[visit_exp `STORE`_instr{`numtype?#59`, memidx#342, memarg#245}(`I64`_numtype, ?(), x, ao)] -[visit_exp `numtype?#59`] -[visit_id numtype?#59] -[visit_exp memidx#342] -[visit_id memidx#342] -[visit_exp memarg#245] -[visit_id memarg#245] +[check_dims] I ao x +dims \ I = ao, x +[visit_exp `STORE`_instr(`I64`_numtype, ?(), x, ao)] [visit_exp (`I64`_numtype, ?(), x, ao)] [visit_exp `I64`_numtype] [visit_exp ()] @@ -96292,15 +76034,9 @@ dims \ I = ao, memarg#245, memidx#342, numtype?#59, x [visit_exp ao] [visit_id ao] not free [visit_exp 8] -[check_dims] I ao memarg#247 memidx#344 numtype?#60 x -dims \ I = ao, memarg#247, memidx#344, numtype?#60, x -[visit_exp `STORE`_instr{`numtype?#60`, memidx#344, memarg#247}(`F32`_numtype, ?(), x, ao)] -[visit_exp `numtype?#60`] -[visit_id numtype?#60] -[visit_exp memidx#344] -[visit_id memidx#344] -[visit_exp memarg#247] -[visit_id memarg#247] +[check_dims] I ao x +dims \ I = ao, x +[visit_exp `STORE`_instr(`F32`_numtype, ?(), x, ao)] [visit_exp (`F32`_numtype, ?(), x, ao)] [visit_exp `F32`_numtype] [visit_exp ()] @@ -96317,15 +76053,9 @@ dims \ I = ao, memarg#247, memidx#344, numtype?#60, x [visit_exp ao] [visit_id ao] not free [visit_exp 4] -[check_dims] I ao memarg#249 memidx#346 numtype?#61 x -dims \ I = ao, memarg#249, memidx#346, numtype?#61, x -[visit_exp `STORE`_instr{`numtype?#61`, memidx#346, memarg#249}(`F64`_numtype, ?(), x, ao)] -[visit_exp `numtype?#61`] -[visit_id numtype?#61] -[visit_exp memidx#346] -[visit_id memidx#346] -[visit_exp memarg#249] -[visit_id memarg#249] +[check_dims] I ao x +dims \ I = ao, x +[visit_exp `STORE`_instr(`F64`_numtype, ?(), x, ao)] [visit_exp (`F64`_numtype, ?(), x, ao)] [visit_exp `F64`_numtype] [visit_exp ()] @@ -96342,28 +76072,16 @@ dims \ I = ao, memarg#249, memidx#346, numtype?#61, x [visit_exp ao] [visit_id ao] not free [visit_exp 8] -[check_dims] I ao i#99803 i#99804 memarg#251 memidx#348 numtype?#62 sz#2390 x -dims \ I = ao, i#99803, i#99804, memarg#251, memidx#348, numtype?#62, sz#2390, x -[visit_exp `STORE`_instr{`numtype?#62`, memidx#348, memarg#251}(`I32`_numtype, ?(`%`_storeop_{sz#2390, i#99803}(`%`_sz{i#99804}(8))), x, ao)] -[visit_exp `numtype?#62`] -[visit_id numtype?#62] -[visit_exp memidx#348] -[visit_id memidx#348] -[visit_exp memarg#251] -[visit_id memarg#251] -[visit_exp (`I32`_numtype, ?(`%`_storeop_{sz#2390, i#99803}(`%`_sz{i#99804}(8))), x, ao)] +[check_dims] I ao x +dims \ I = ao, x +[visit_exp `STORE`_instr(`I32`_numtype, ?(`%`_storeop_(`%`_sz(8))), x, ao)] +[visit_exp (`I32`_numtype, ?(`%`_storeop_(`%`_sz(8))), x, ao)] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp ?(`%`_storeop_{sz#2390, i#99803}(`%`_sz{i#99804}(8)))] -[visit_exp `%`_storeop_{sz#2390, i#99803}(`%`_sz{i#99804}(8))] -[visit_exp sz#2390] -[visit_id sz#2390] -[visit_exp i#99803] -[visit_id i#99803] -[visit_exp (`%`_sz{i#99804}(8))] -[visit_exp `%`_sz{i#99804}(8)] -[visit_exp i#99804] -[visit_id i#99804] +[visit_exp ?(`%`_storeop_(`%`_sz(8)))] +[visit_exp `%`_storeop_(`%`_sz(8))] +[visit_exp (`%`_sz(8))] +[visit_exp `%`_sz(8)] [visit_exp (8)] [visit_exp 8] [visit_exp x] @@ -96378,28 +76096,16 @@ dims \ I = ao, i#99803, i#99804, memarg#251, memidx#348, numtype?#62, sz#2390, x [visit_exp ao] [visit_id ao] not free [visit_exp 1] -[check_dims] I ao i#99876 i#99877 memarg#253 memidx#350 numtype?#63 sz#2403 x -dims \ I = ao, i#99876, i#99877, memarg#253, memidx#350, numtype?#63, sz#2403, x -[visit_exp `STORE`_instr{`numtype?#63`, memidx#350, memarg#253}(`I32`_numtype, ?(`%`_storeop_{sz#2403, i#99876}(`%`_sz{i#99877}(16))), x, ao)] -[visit_exp `numtype?#63`] -[visit_id numtype?#63] -[visit_exp memidx#350] -[visit_id memidx#350] -[visit_exp memarg#253] -[visit_id memarg#253] -[visit_exp (`I32`_numtype, ?(`%`_storeop_{sz#2403, i#99876}(`%`_sz{i#99877}(16))), x, ao)] +[check_dims] I ao x +dims \ I = ao, x +[visit_exp `STORE`_instr(`I32`_numtype, ?(`%`_storeop_(`%`_sz(16))), x, ao)] +[visit_exp (`I32`_numtype, ?(`%`_storeop_(`%`_sz(16))), x, ao)] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp ?(`%`_storeop_{sz#2403, i#99876}(`%`_sz{i#99877}(16)))] -[visit_exp `%`_storeop_{sz#2403, i#99876}(`%`_sz{i#99877}(16))] -[visit_exp sz#2403] -[visit_id sz#2403] -[visit_exp i#99876] -[visit_id i#99876] -[visit_exp (`%`_sz{i#99877}(16))] -[visit_exp `%`_sz{i#99877}(16)] -[visit_exp i#99877] -[visit_id i#99877] +[visit_exp ?(`%`_storeop_(`%`_sz(16)))] +[visit_exp `%`_storeop_(`%`_sz(16))] +[visit_exp (`%`_sz(16))] +[visit_exp `%`_sz(16)] [visit_exp (16)] [visit_exp 16] [visit_exp x] @@ -96414,28 +76120,16 @@ dims \ I = ao, i#99876, i#99877, memarg#253, memidx#350, numtype?#63, sz#2403, x [visit_exp ao] [visit_id ao] not free [visit_exp 2] -[check_dims] I ao i#99949 i#99950 memarg#255 memidx#352 numtype?#64 sz#2416 x -dims \ I = ao, i#99949, i#99950, memarg#255, memidx#352, numtype?#64, sz#2416, x -[visit_exp `STORE`_instr{`numtype?#64`, memidx#352, memarg#255}(`I64`_numtype, ?(`%`_storeop_{sz#2416, i#99949}(`%`_sz{i#99950}(8))), x, ao)] -[visit_exp `numtype?#64`] -[visit_id numtype?#64] -[visit_exp memidx#352] -[visit_id memidx#352] -[visit_exp memarg#255] -[visit_id memarg#255] -[visit_exp (`I64`_numtype, ?(`%`_storeop_{sz#2416, i#99949}(`%`_sz{i#99950}(8))), x, ao)] +[check_dims] I ao x +dims \ I = ao, x +[visit_exp `STORE`_instr(`I64`_numtype, ?(`%`_storeop_(`%`_sz(8))), x, ao)] +[visit_exp (`I64`_numtype, ?(`%`_storeop_(`%`_sz(8))), x, ao)] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp ?(`%`_storeop_{sz#2416, i#99949}(`%`_sz{i#99950}(8)))] -[visit_exp `%`_storeop_{sz#2416, i#99949}(`%`_sz{i#99950}(8))] -[visit_exp sz#2416] -[visit_id sz#2416] -[visit_exp i#99949] -[visit_id i#99949] -[visit_exp (`%`_sz{i#99950}(8))] -[visit_exp `%`_sz{i#99950}(8)] -[visit_exp i#99950] -[visit_id i#99950] +[visit_exp ?(`%`_storeop_(`%`_sz(8)))] +[visit_exp `%`_storeop_(`%`_sz(8))] +[visit_exp (`%`_sz(8))] +[visit_exp `%`_sz(8)] [visit_exp (8)] [visit_exp 8] [visit_exp x] @@ -96450,28 +76144,16 @@ dims \ I = ao, i#99949, i#99950, memarg#255, memidx#352, numtype?#64, sz#2416, x [visit_exp ao] [visit_id ao] not free [visit_exp 1] -[check_dims] I ao i#100022 i#100023 memarg#257 memidx#354 numtype?#65 sz#2429 x -dims \ I = ao, i#100022, i#100023, memarg#257, memidx#354, numtype?#65, sz#2429, x -[visit_exp `STORE`_instr{`numtype?#65`, memidx#354, memarg#257}(`I64`_numtype, ?(`%`_storeop_{sz#2429, i#100022}(`%`_sz{i#100023}(16))), x, ao)] -[visit_exp `numtype?#65`] -[visit_id numtype?#65] -[visit_exp memidx#354] -[visit_id memidx#354] -[visit_exp memarg#257] -[visit_id memarg#257] -[visit_exp (`I64`_numtype, ?(`%`_storeop_{sz#2429, i#100022}(`%`_sz{i#100023}(16))), x, ao)] +[check_dims] I ao x +dims \ I = ao, x +[visit_exp `STORE`_instr(`I64`_numtype, ?(`%`_storeop_(`%`_sz(16))), x, ao)] +[visit_exp (`I64`_numtype, ?(`%`_storeop_(`%`_sz(16))), x, ao)] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp ?(`%`_storeop_{sz#2429, i#100022}(`%`_sz{i#100023}(16)))] -[visit_exp `%`_storeop_{sz#2429, i#100022}(`%`_sz{i#100023}(16))] -[visit_exp sz#2429] -[visit_id sz#2429] -[visit_exp i#100022] -[visit_id i#100022] -[visit_exp (`%`_sz{i#100023}(16))] -[visit_exp `%`_sz{i#100023}(16)] -[visit_exp i#100023] -[visit_id i#100023] +[visit_exp ?(`%`_storeop_(`%`_sz(16)))] +[visit_exp `%`_storeop_(`%`_sz(16))] +[visit_exp (`%`_sz(16))] +[visit_exp `%`_sz(16)] [visit_exp (16)] [visit_exp 16] [visit_exp x] @@ -96486,28 +76168,16 @@ dims \ I = ao, i#100022, i#100023, memarg#257, memidx#354, numtype?#65, sz#2429, [visit_exp ao] [visit_id ao] not free [visit_exp 2] -[check_dims] I ao i#100095 i#100096 memarg#259 memidx#356 numtype?#66 sz#2442 x -dims \ I = ao, i#100095, i#100096, memarg#259, memidx#356, numtype?#66, sz#2442, x -[visit_exp `STORE`_instr{`numtype?#66`, memidx#356, memarg#259}(`I64`_numtype, ?(`%`_storeop_{sz#2442, i#100095}(`%`_sz{i#100096}(32))), x, ao)] -[visit_exp `numtype?#66`] -[visit_id numtype?#66] -[visit_exp memidx#356] -[visit_id memidx#356] -[visit_exp memarg#259] -[visit_id memarg#259] -[visit_exp (`I64`_numtype, ?(`%`_storeop_{sz#2442, i#100095}(`%`_sz{i#100096}(32))), x, ao)] +[check_dims] I ao x +dims \ I = ao, x +[visit_exp `STORE`_instr(`I64`_numtype, ?(`%`_storeop_(`%`_sz(32))), x, ao)] +[visit_exp (`I64`_numtype, ?(`%`_storeop_(`%`_sz(32))), x, ao)] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp ?(`%`_storeop_{sz#2442, i#100095}(`%`_sz{i#100096}(32)))] -[visit_exp `%`_storeop_{sz#2442, i#100095}(`%`_sz{i#100096}(32))] -[visit_exp sz#2442] -[visit_id sz#2442] -[visit_exp i#100095] -[visit_id i#100095] -[visit_exp (`%`_sz{i#100096}(32))] -[visit_exp `%`_sz{i#100096}(32)] -[visit_exp i#100096] -[visit_id i#100096] +[visit_exp ?(`%`_storeop_(`%`_sz(32)))] +[visit_exp `%`_storeop_(`%`_sz(32))] +[visit_exp (`%`_sz(32))] +[visit_exp `%`_sz(32)] [visit_exp (32)] [visit_exp 32] [visit_exp x] @@ -96522,15 +76192,9 @@ dims \ I = ao, i#100095, i#100096, memarg#259, memidx#356, numtype?#66, sz#2442, [visit_exp ao] [visit_id ao] not free [visit_exp 4] -[check_dims] I ao memarg#261 memidx#358 vectype#294 x -dims \ I = ao, memarg#261, memidx#358, vectype#294, x -[visit_exp `VSTORE`_instr{vectype#294, memidx#358, memarg#261}(`V128`_vectype, x, ao)] -[visit_exp vectype#294] -[visit_id vectype#294] -[visit_exp memidx#358] -[visit_id memidx#358] -[visit_exp memarg#261] -[visit_id memarg#261] +[check_dims] I ao x +dims \ I = ao, x +[visit_exp `VSTORE`_instr(`V128`_vectype, x, ao)] [visit_exp (`V128`_vectype, x, ao)] [visit_exp `V128`_vectype] [visit_exp ()] @@ -96546,25 +76210,13 @@ dims \ I = ao, memarg#261, memidx#358, vectype#294, x [visit_exp ao] [visit_id ao] not free [visit_exp 16] -[check_dims] I ao i i#100183 laneidx#83 memarg#263 memidx#360 sz#2444 vectype#296 x -dims \ I = ao, i, i#100183, laneidx#83, memarg#263, memidx#360, sz#2444, vectype#296, x -[visit_exp `VSTORE_LANE`_instr{vectype#296, sz#2444, memidx#360, memarg#263, laneidx#83}(`V128`_vectype, `%`_sz{i#100183}(8), x, ao, i)] -[visit_exp vectype#296] -[visit_id vectype#296] -[visit_exp sz#2444] -[visit_id sz#2444] -[visit_exp memidx#360] -[visit_id memidx#360] -[visit_exp memarg#263] -[visit_id memarg#263] -[visit_exp laneidx#83] -[visit_id laneidx#83] -[visit_exp (`V128`_vectype, `%`_sz{i#100183}(8), x, ao, i)] +[check_dims] I ao i x +dims \ I = ao, i, x +[visit_exp `VSTORE_LANE`_instr(`V128`_vectype, `%`_sz(8), x, ao, i)] +[visit_exp (`V128`_vectype, `%`_sz(8), x, ao, i)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp `%`_sz{i#100183}(8)] -[visit_exp i#100183] -[visit_id i#100183] +[visit_exp `%`_sz(8)] [visit_exp (8)] [visit_exp 8] [visit_exp x] @@ -96583,25 +76235,13 @@ dims \ I = ao, i, i#100183, laneidx#83, memarg#263, memidx#360, sz#2444, vectype [visit_exp 1] [visit_exp i] [visit_id i] not free -[check_dims] I ao i i#100251 laneidx#85 memarg#265 memidx#362 sz#2446 vectype#298 x -dims \ I = ao, i, i#100251, laneidx#85, memarg#265, memidx#362, sz#2446, vectype#298, x -[visit_exp `VSTORE_LANE`_instr{vectype#298, sz#2446, memidx#362, memarg#265, laneidx#85}(`V128`_vectype, `%`_sz{i#100251}(16), x, ao, i)] -[visit_exp vectype#298] -[visit_id vectype#298] -[visit_exp sz#2446] -[visit_id sz#2446] -[visit_exp memidx#362] -[visit_id memidx#362] -[visit_exp memarg#265] -[visit_id memarg#265] -[visit_exp laneidx#85] -[visit_id laneidx#85] -[visit_exp (`V128`_vectype, `%`_sz{i#100251}(16), x, ao, i)] +[check_dims] I ao i x +dims \ I = ao, i, x +[visit_exp `VSTORE_LANE`_instr(`V128`_vectype, `%`_sz(16), x, ao, i)] +[visit_exp (`V128`_vectype, `%`_sz(16), x, ao, i)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp `%`_sz{i#100251}(16)] -[visit_exp i#100251] -[visit_id i#100251] +[visit_exp `%`_sz(16)] [visit_exp (16)] [visit_exp 16] [visit_exp x] @@ -96620,25 +76260,13 @@ dims \ I = ao, i, i#100251, laneidx#85, memarg#265, memidx#362, sz#2446, vectype [visit_exp 2] [visit_exp i] [visit_id i] not free -[check_dims] I ao i i#100319 laneidx#87 memarg#267 memidx#364 sz#2448 vectype#300 x -dims \ I = ao, i, i#100319, laneidx#87, memarg#267, memidx#364, sz#2448, vectype#300, x -[visit_exp `VSTORE_LANE`_instr{vectype#300, sz#2448, memidx#364, memarg#267, laneidx#87}(`V128`_vectype, `%`_sz{i#100319}(32), x, ao, i)] -[visit_exp vectype#300] -[visit_id vectype#300] -[visit_exp sz#2448] -[visit_id sz#2448] -[visit_exp memidx#364] -[visit_id memidx#364] -[visit_exp memarg#267] -[visit_id memarg#267] -[visit_exp laneidx#87] -[visit_id laneidx#87] -[visit_exp (`V128`_vectype, `%`_sz{i#100319}(32), x, ao, i)] +[check_dims] I ao i x +dims \ I = ao, i, x +[visit_exp `VSTORE_LANE`_instr(`V128`_vectype, `%`_sz(32), x, ao, i)] +[visit_exp (`V128`_vectype, `%`_sz(32), x, ao, i)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp `%`_sz{i#100319}(32)] -[visit_exp i#100319] -[visit_id i#100319] +[visit_exp `%`_sz(32)] [visit_exp (32)] [visit_exp 32] [visit_exp x] @@ -96657,25 +76285,13 @@ dims \ I = ao, i, i#100319, laneidx#87, memarg#267, memidx#364, sz#2448, vectype [visit_exp 4] [visit_exp i] [visit_id i] not free -[check_dims] I ao i i#100387 laneidx#89 memarg#269 memidx#366 sz#2450 vectype#302 x -dims \ I = ao, i, i#100387, laneidx#89, memarg#269, memidx#366, sz#2450, vectype#302, x -[visit_exp `VSTORE_LANE`_instr{vectype#302, sz#2450, memidx#366, memarg#269, laneidx#89}(`V128`_vectype, `%`_sz{i#100387}(64), x, ao, i)] -[visit_exp vectype#302] -[visit_id vectype#302] -[visit_exp sz#2450] -[visit_id sz#2450] -[visit_exp memidx#366] -[visit_id memidx#366] -[visit_exp memarg#269] -[visit_id memarg#269] -[visit_exp laneidx#89] -[visit_id laneidx#89] -[visit_exp (`V128`_vectype, `%`_sz{i#100387}(64), x, ao, i)] +[check_dims] I ao i x +dims \ I = ao, i, x +[visit_exp `VSTORE_LANE`_instr(`V128`_vectype, `%`_sz(64), x, ao, i)] +[visit_exp (`V128`_vectype, `%`_sz(64), x, ao, i)] [visit_exp `V128`_vectype] [visit_exp ()] -[visit_exp `%`_sz{i#100387}(64)] -[visit_exp i#100387] -[visit_id i#100387] +[visit_exp `%`_sz(64)] [visit_exp (64)] [visit_exp 64] [visit_exp x] @@ -96694,11 +76310,9 @@ dims \ I = ao, i, i#100387, laneidx#89, memarg#269, memidx#366, sz#2450, vectype [visit_exp 8] [visit_exp i] [visit_id i] not free -[check_dims] I memidx#368 x -dims \ I = memidx#368, x -[visit_exp `MEMORY.SIZE`_instr{memidx#368}(x)] -[visit_exp memidx#368] -[visit_id memidx#368] +[check_dims] I x +dims \ I = x +[visit_exp `MEMORY.SIZE`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -96707,11 +76321,9 @@ dims \ I = memidx#368, x [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I memidx#370 x -dims \ I = memidx#370, x -[visit_exp `MEMORY.GROW`_instr{memidx#370}(x)] -[visit_exp memidx#370] -[visit_id memidx#370] +[check_dims] I x +dims \ I = x +[visit_exp `MEMORY.GROW`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -96720,11 +76332,9 @@ dims \ I = memidx#370, x [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I memidx#372 x -dims \ I = memidx#372, x -[visit_exp `MEMORY.FILL`_instr{memidx#372}(x)] -[visit_exp memidx#372] -[visit_id memidx#372] +[check_dims] I x +dims \ I = x +[visit_exp `MEMORY.FILL`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -96733,11 +76343,9 @@ dims \ I = memidx#372, x [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I memidx#374 x_1 x_2 -dims \ I = memidx#374, x_1, x_2 -[visit_exp `MEMORY.COPY`_instr{memidx#374}(x_1, x_2)] -[visit_exp memidx#374] -[visit_id memidx#374] +[check_dims] I x_1 x_2 +dims \ I = x_1, x_2 +[visit_exp `MEMORY.COPY`_instr(x_1, x_2)] [visit_exp (x_1, x_2)] [visit_exp x_1] [visit_id x_1] @@ -96753,13 +76361,9 @@ dims \ I = memidx#374, x_1, x_2 [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I dataidx#55 memidx#377 x y -dims \ I = dataidx#55, memidx#377, x, y -[visit_exp `MEMORY.INIT`_instr{memidx#377, dataidx#55}(x, y)] -[visit_exp memidx#377] -[visit_id memidx#377] -[visit_exp dataidx#55] -[visit_id dataidx#55] +[check_dims] I x y +dims \ I = x, y +[visit_exp `MEMORY.INIT`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] @@ -96927,11 +76531,9 @@ ps' = (I : I) [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I dataidx#57 x -dims \ I = dataidx#57, x -[visit_exp `DATA.DROP`_instr{dataidx#57}(x)] -[visit_exp dataidx#57] -[visit_id dataidx#57] +[check_dims] I x +dims \ I = x +[visit_exp `DATA.DROP`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -96943,11 +76545,9 @@ dims \ I = dataidx#57, x [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I heaptype#1929 ht -dims \ I = heaptype#1929, ht -[visit_exp `REF.NULL`_instr{heaptype#1929}(ht)] -[visit_exp heaptype#1929] -[visit_id heaptype#1929] +[check_dims] I ht +dims \ I = ht +[visit_exp `REF.NULL`_instr(ht)] [visit_exp (ht)] [visit_exp ht] [visit_id ht] @@ -96956,11 +76556,9 @@ dims \ I = heaptype#1929, ht [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I funcidx#3387 x -dims \ I = funcidx#3387, x -[visit_exp `REF.FUNC`_instr{funcidx#3387}(x)] -[visit_exp funcidx#3387] -[visit_id funcidx#3387] +[check_dims] I x +dims \ I = x +[visit_exp `REF.FUNC`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -96981,11 +76579,9 @@ dims \ I = dims \ I = [visit_exp `REF.EQ`_instr] [visit_exp ()] -[check_dims] I reftype#4311 rt -dims \ I = reftype#4311, rt -[visit_exp `REF.TEST`_instr{reftype#4311}(rt)] -[visit_exp reftype#4311] -[visit_id reftype#4311] +[check_dims] I rt +dims \ I = rt +[visit_exp `REF.TEST`_instr(rt)] [visit_exp (rt)] [visit_exp rt] [visit_id rt] @@ -96994,11 +76590,9 @@ dims \ I = reftype#4311, rt [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I reftype#4313 rt -dims \ I = reftype#4313, rt -[visit_exp `REF.CAST`_instr{reftype#4313}(rt)] -[visit_exp reftype#4313] -[visit_id reftype#4313] +[check_dims] I rt +dims \ I = rt +[visit_exp `REF.CAST`_instr(rt)] [visit_exp (rt)] [visit_exp rt] [visit_id rt] @@ -97014,30 +76608,24 @@ ps' = (I : I) dims \ I = [visit_exp `REF.I31`_instr] [visit_exp ()] -[check_dims] I sx#16085 -dims \ I = sx#16085 -[visit_exp `I31.GET`_instr{sx#16085}(`S`_sx)] -[visit_exp sx#16085] -[visit_id sx#16085] +[check_dims] I +dims \ I = +[visit_exp `I31.GET`_instr(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I sx#16087 -dims \ I = sx#16087 -[visit_exp `I31.GET`_instr{sx#16087}(`U`_sx)] -[visit_exp sx#16087] -[visit_id sx#16087] +[check_dims] I +dims \ I = +[visit_exp `I31.GET`_instr(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I typeidx#2137 x -dims \ I = typeidx#2137, x -[visit_exp `STRUCT.NEW`_instr{typeidx#2137}(x)] -[visit_exp typeidx#2137] -[visit_id typeidx#2137] +[check_dims] I x +dims \ I = x +[visit_exp `STRUCT.NEW`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -97046,11 +76634,9 @@ dims \ I = typeidx#2137, x [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I typeidx#2139 x -dims \ I = typeidx#2139, x -[visit_exp `STRUCT.NEW_DEFAULT`_instr{typeidx#2139}(x)] -[visit_exp typeidx#2139] -[visit_id typeidx#2139] +[check_dims] I x +dims \ I = x +[visit_exp `STRUCT.NEW_DEFAULT`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -97059,15 +76645,9 @@ dims \ I = typeidx#2139, x [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I i sx?#59 typeidx#2141 u32#48 x -dims \ I = i, sx?#59, typeidx#2141, u32#48, x -[visit_exp `STRUCT.GET`_instr{`sx?#59`, typeidx#2141, u32#48}(?(), x, i)] -[visit_exp `sx?#59`] -[visit_id sx?#59] -[visit_exp typeidx#2141] -[visit_id typeidx#2141] -[visit_exp u32#48] -[visit_id u32#48] +[check_dims] I i x +dims \ I = i, x +[visit_exp `STRUCT.GET`_instr(?(), x, i)] [visit_exp (?(), x, i)] [visit_exp ?()] [visit_exp x] @@ -97086,15 +76666,9 @@ dims \ I = i, sx?#59, typeidx#2141, u32#48, x [visit_id I] no dims [visit_exp x] [visit_id x] not free -[check_dims] I i sx?#61 typeidx#2143 u32#50 x -dims \ I = i, sx?#61, typeidx#2143, u32#50, x -[visit_exp `STRUCT.GET`_instr{`sx?#61`, typeidx#2143, u32#50}(?(`S`_sx), x, i)] -[visit_exp `sx?#61`] -[visit_id sx?#61] -[visit_exp typeidx#2143] -[visit_id typeidx#2143] -[visit_exp u32#50] -[visit_id u32#50] +[check_dims] I i x +dims \ I = i, x +[visit_exp `STRUCT.GET`_instr(?(`S`_sx), x, i)] [visit_exp (?(`S`_sx), x, i)] [visit_exp ?(`S`_sx)] [visit_exp `S`_sx] @@ -97115,15 +76689,9 @@ dims \ I = i, sx?#61, typeidx#2143, u32#50, x [visit_id I] no dims [visit_exp x] [visit_id x] not free -[check_dims] I i sx?#63 typeidx#2145 u32#52 x -dims \ I = i, sx?#63, typeidx#2145, u32#52, x -[visit_exp `STRUCT.GET`_instr{`sx?#63`, typeidx#2145, u32#52}(?(`U`_sx), x, i)] -[visit_exp `sx?#63`] -[visit_id sx?#63] -[visit_exp typeidx#2145] -[visit_id typeidx#2145] -[visit_exp u32#52] -[visit_id u32#52] +[check_dims] I i x +dims \ I = i, x +[visit_exp `STRUCT.GET`_instr(?(`U`_sx), x, i)] [visit_exp (?(`U`_sx), x, i)] [visit_exp ?(`U`_sx)] [visit_exp `U`_sx] @@ -97144,13 +76712,9 @@ dims \ I = i, sx?#63, typeidx#2145, u32#52, x [visit_id I] no dims [visit_exp x] [visit_id x] not free -[check_dims] I i typeidx#2147 u32#54 x -dims \ I = i, typeidx#2147, u32#54, x -[visit_exp `STRUCT.SET`_instr{typeidx#2147, u32#54}(x, i)] -[visit_exp typeidx#2147] -[visit_id typeidx#2147] -[visit_exp u32#54] -[visit_id u32#54] +[check_dims] I i x +dims \ I = i, x +[visit_exp `STRUCT.SET`_instr(x, i)] [visit_exp (x, i)] [visit_exp x] [visit_id x] @@ -97171,11 +76735,9 @@ dims \ I = i, typeidx#2147, u32#54, x [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I typeidx#2149 x -dims \ I = typeidx#2149, x -[visit_exp `ARRAY.NEW`_instr{typeidx#2149}(x)] -[visit_exp typeidx#2149] -[visit_id typeidx#2149] +[check_dims] I x +dims \ I = x +[visit_exp `ARRAY.NEW`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -97184,11 +76746,9 @@ dims \ I = typeidx#2149, x [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I typeidx#2151 x -dims \ I = typeidx#2151, x -[visit_exp `ARRAY.NEW_DEFAULT`_instr{typeidx#2151}(x)] -[visit_exp typeidx#2151] -[visit_id typeidx#2151] +[check_dims] I x +dims \ I = x +[visit_exp `ARRAY.NEW_DEFAULT`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -97197,19 +76757,13 @@ dims \ I = typeidx#2151, x [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I i#101266 i#101306 n typeidx#2153 u32#56 x -dims \ I = i#101266, i#101306, n, typeidx#2153, u32#56, x -[visit_exp `ARRAY.NEW_FIXED`_instr{typeidx#2153, u32#56}(x, `%`_u32{i#101306}(n))] -[visit_exp typeidx#2153] -[visit_id typeidx#2153] -[visit_exp u32#56] -[visit_id u32#56] -[visit_exp (x, `%`_u32{i#101306}(n))] +[check_dims] I n x +dims \ I = n, x +[visit_exp `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))] +[visit_exp (x, `%`_u32(n))] [visit_exp x] [visit_id x] -[visit_exp `%`_u32{i#101306}(n)] -[visit_exp i#101306] -[visit_id i#101306] +[visit_exp `%`_u32(n)] [visit_exp (n)] [visit_exp n] [visit_id n] @@ -97218,19 +76772,13 @@ dims \ I = i#101266, i#101306, n, typeidx#2153, u32#56, x [visit_exp I] [visit_id I] not free [visit_id I] no dims -[visit_exp `%`_u32{i#101266}(n)] -[visit_exp i#101266] -[visit_id i#101266] +[visit_exp `%`_u32(n)] [visit_exp (n)] [visit_exp n] [visit_id n] not free -[check_dims] I dataidx#59 typeidx#2155 x y -dims \ I = dataidx#59, typeidx#2155, x, y -[visit_exp `ARRAY.NEW_DATA`_instr{typeidx#2155, dataidx#59}(x, y)] -[visit_exp typeidx#2155] -[visit_id typeidx#2155] -[visit_exp dataidx#59] -[visit_id dataidx#59] +[check_dims] I x y +dims \ I = x, y +[visit_exp `ARRAY.NEW_DATA`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] @@ -97246,13 +76794,9 @@ dims \ I = dataidx#59, typeidx#2155, x, y [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I elemidx#61 typeidx#2157 x y -dims \ I = elemidx#61, typeidx#2157, x, y -[visit_exp `ARRAY.NEW_ELEM`_instr{typeidx#2157, elemidx#61}(x, y)] -[visit_exp typeidx#2157] -[visit_id typeidx#2157] -[visit_exp elemidx#61] -[visit_id elemidx#61] +[check_dims] I x y +dims \ I = x, y +[visit_exp `ARRAY.NEW_ELEM`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] @@ -97268,13 +76812,9 @@ dims \ I = elemidx#61, typeidx#2157, x, y [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I sx?#65 typeidx#2159 x -dims \ I = sx?#65, typeidx#2159, x -[visit_exp `ARRAY.GET`_instr{`sx?#65`, typeidx#2159}(?(), x)] -[visit_exp `sx?#65`] -[visit_id sx?#65] -[visit_exp typeidx#2159] -[visit_id typeidx#2159] +[check_dims] I x +dims \ I = x +[visit_exp `ARRAY.GET`_instr(?(), x)] [visit_exp (?(), x)] [visit_exp ?()] [visit_exp x] @@ -97284,13 +76824,9 @@ dims \ I = sx?#65, typeidx#2159, x [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I sx?#67 typeidx#2161 x -dims \ I = sx?#67, typeidx#2161, x -[visit_exp `ARRAY.GET`_instr{`sx?#67`, typeidx#2161}(?(`S`_sx), x)] -[visit_exp `sx?#67`] -[visit_id sx?#67] -[visit_exp typeidx#2161] -[visit_id typeidx#2161] +[check_dims] I x +dims \ I = x +[visit_exp `ARRAY.GET`_instr(?(`S`_sx), x)] [visit_exp (?(`S`_sx), x)] [visit_exp ?(`S`_sx)] [visit_exp `S`_sx] @@ -97302,13 +76838,9 @@ dims \ I = sx?#67, typeidx#2161, x [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I sx?#69 typeidx#2163 x -dims \ I = sx?#69, typeidx#2163, x -[visit_exp `ARRAY.GET`_instr{`sx?#69`, typeidx#2163}(?(`U`_sx), x)] -[visit_exp `sx?#69`] -[visit_id sx?#69] -[visit_exp typeidx#2163] -[visit_id typeidx#2163] +[check_dims] I x +dims \ I = x +[visit_exp `ARRAY.GET`_instr(?(`U`_sx), x)] [visit_exp (?(`U`_sx), x)] [visit_exp ?(`U`_sx)] [visit_exp `U`_sx] @@ -97320,11 +76852,9 @@ dims \ I = sx?#69, typeidx#2163, x [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I typeidx#2165 x -dims \ I = typeidx#2165, x -[visit_exp `ARRAY.SET`_instr{typeidx#2165}(x)] -[visit_exp typeidx#2165] -[visit_id typeidx#2165] +[check_dims] I x +dims \ I = x +[visit_exp `ARRAY.SET`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -97337,11 +76867,9 @@ dims \ I = typeidx#2165, x dims \ I = [visit_exp `ARRAY.LEN`_instr] [visit_exp ()] -[check_dims] I typeidx#2167 x -dims \ I = typeidx#2167, x -[visit_exp `ARRAY.FILL`_instr{typeidx#2167}(x)] -[visit_exp typeidx#2167] -[visit_id typeidx#2167] +[check_dims] I x +dims \ I = x +[visit_exp `ARRAY.FILL`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] @@ -97350,11 +76878,9 @@ dims \ I = typeidx#2167, x [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I typeidx#2169 x_1 x_2 -dims \ I = typeidx#2169, x_1, x_2 -[visit_exp `ARRAY.COPY`_instr{typeidx#2169}(x_1, x_2)] -[visit_exp typeidx#2169] -[visit_id typeidx#2169] +[check_dims] I x_1 x_2 +dims \ I = x_1, x_2 +[visit_exp `ARRAY.COPY`_instr(x_1, x_2)] [visit_exp (x_1, x_2)] [visit_exp x_1] [visit_id x_1] @@ -97370,13 +76896,9 @@ dims \ I = typeidx#2169, x_1, x_2 [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I dataidx#61 typeidx#2172 x y -dims \ I = dataidx#61, typeidx#2172, x, y -[visit_exp `ARRAY.INIT_DATA`_instr{typeidx#2172, dataidx#61}(x, y)] -[visit_exp typeidx#2172] -[visit_id typeidx#2172] -[visit_exp dataidx#61] -[visit_id dataidx#61] +[check_dims] I x y +dims \ I = x, y +[visit_exp `ARRAY.INIT_DATA`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] @@ -97392,13 +76914,9 @@ dims \ I = dataidx#61, typeidx#2172, x, y [visit_exp I] [visit_id I] not free [visit_id I] no dims -[check_dims] I elemidx#63 typeidx#2174 x y -dims \ I = elemidx#63, typeidx#2174, x, y -[visit_exp `ARRAY.INIT_ELEM`_instr{typeidx#2174, elemidx#63}(x, y)] -[visit_exp typeidx#2174] -[visit_id typeidx#2174] -[visit_exp elemidx#63] -[visit_id elemidx#63] +[check_dims] I x y +dims \ I = x, y +[visit_exp `ARRAY.INIT_ELEM`_instr(x, y)] [visit_exp (x, y)] [visit_exp x] [visit_id x] @@ -97428,11 +76946,9 @@ dims \ I = [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I c numtype#891 -dims \ I = c, numtype#891 -[visit_exp `CONST`_instr{numtype#891}(`I32`_numtype, c)] -[visit_exp numtype#891] -[visit_id numtype#891] +[check_dims] I c +dims \ I = c +[visit_exp `CONST`_instr(`I32`_numtype, c)] [visit_exp (`I32`_numtype, c)] [visit_exp `I32`_numtype] [visit_exp ()] @@ -97440,11 +76956,9 @@ dims \ I = c, numtype#891 [visit_id c] [visit_exp c] [visit_id c] not free -[check_dims] I c numtype#893 -dims \ I = c, numtype#893 -[visit_exp `CONST`_instr{numtype#893}(`I64`_numtype, c)] -[visit_exp numtype#893] -[visit_id numtype#893] +[check_dims] I c +dims \ I = c +[visit_exp `CONST`_instr(`I64`_numtype, c)] [visit_exp (`I64`_numtype, c)] [visit_exp `I64`_numtype] [visit_exp ()] @@ -97452,11 +76966,9 @@ dims \ I = c, numtype#893 [visit_id c] [visit_exp c] [visit_id c] not free -[check_dims] I c numtype#895 -dims \ I = c, numtype#895 -[visit_exp `CONST`_instr{numtype#895}(`F32`_numtype, c)] -[visit_exp numtype#895] -[visit_id numtype#895] +[check_dims] I c +dims \ I = c +[visit_exp `CONST`_instr(`F32`_numtype, c)] [visit_exp (`F32`_numtype, c)] [visit_exp `F32`_numtype] [visit_exp ()] @@ -97464,11 +76976,9 @@ dims \ I = c, numtype#895 [visit_id c] [visit_exp c] [visit_id c] not free -[check_dims] I c numtype#897 -dims \ I = c, numtype#897 -[visit_exp `CONST`_instr{numtype#897}(`F64`_numtype, c)] -[visit_exp numtype#897] -[visit_id numtype#897] +[check_dims] I c +dims \ I = c +[visit_exp `CONST`_instr(`F64`_numtype, c)] [visit_exp (`F64`_numtype, c)] [visit_exp `F64`_numtype] [visit_exp ()] @@ -97479,11 +76989,9 @@ dims \ I = c, numtype#897 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I numtype#899 -dims \ I = numtype#899 -[visit_exp `TESTOP`_instr{numtype#899}(`I32`_numtype, `EQZ`_testop_)] -[visit_exp numtype#899] -[visit_id numtype#899] +[check_dims] I +dims \ I = +[visit_exp `TESTOP`_instr(`I32`_numtype, `EQZ`_testop_)] [visit_exp (`I32`_numtype, `EQZ`_testop_)] [visit_exp `I32`_numtype] [visit_exp ()] @@ -97492,11 +77000,9 @@ dims \ I = numtype#899 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I numtype#901 -dims \ I = numtype#901 -[visit_exp `TESTOP`_instr{numtype#901}(`I64`_numtype, `EQZ`_testop_)] -[visit_exp numtype#901] -[visit_id numtype#901] +[check_dims] I +dims \ I = +[visit_exp `TESTOP`_instr(`I64`_numtype, `EQZ`_testop_)] [visit_exp (`I64`_numtype, `EQZ`_testop_)] [visit_exp `I64`_numtype] [visit_exp ()] @@ -97505,331 +77011,247 @@ dims \ I = numtype#901 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I numtype#903 -dims \ I = numtype#903 -[visit_exp `RELOP`_instr{numtype#903}(`I32`_numtype, `EQ`_relop_)] -[visit_exp numtype#903] -[visit_id numtype#903] +[check_dims] I +dims \ I = +[visit_exp `RELOP`_instr(`I32`_numtype, `EQ`_relop_)] [visit_exp (`I32`_numtype, `EQ`_relop_)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp `EQ`_relop_] [visit_exp ()] -[check_dims] I numtype#905 -dims \ I = numtype#905 -[visit_exp `RELOP`_instr{numtype#905}(`I32`_numtype, `NE`_relop_)] -[visit_exp numtype#905] -[visit_id numtype#905] +[check_dims] I +dims \ I = +[visit_exp `RELOP`_instr(`I32`_numtype, `NE`_relop_)] [visit_exp (`I32`_numtype, `NE`_relop_)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp `NE`_relop_] [visit_exp ()] -[check_dims] I numtype#907 sx#16331 -dims \ I = numtype#907, sx#16331 -[visit_exp `RELOP`_instr{numtype#907}(`I32`_numtype, `LT`_relop_{sx#16331}(`S`_sx))] -[visit_exp numtype#907] -[visit_id numtype#907] -[visit_exp (`I32`_numtype, `LT`_relop_{sx#16331}(`S`_sx))] +[check_dims] I +dims \ I = +[visit_exp `RELOP`_instr(`I32`_numtype, `LT`_relop_(`S`_sx))] +[visit_exp (`I32`_numtype, `LT`_relop_(`S`_sx))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `LT`_relop_{sx#16331}(`S`_sx)] -[visit_exp sx#16331] -[visit_id sx#16331] +[visit_exp `LT`_relop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I numtype#909 sx#16455 -dims \ I = numtype#909, sx#16455 -[visit_exp `RELOP`_instr{numtype#909}(`I32`_numtype, `LT`_relop_{sx#16455}(`U`_sx))] -[visit_exp numtype#909] -[visit_id numtype#909] -[visit_exp (`I32`_numtype, `LT`_relop_{sx#16455}(`U`_sx))] +[check_dims] I +dims \ I = +[visit_exp `RELOP`_instr(`I32`_numtype, `LT`_relop_(`U`_sx))] +[visit_exp (`I32`_numtype, `LT`_relop_(`U`_sx))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `LT`_relop_{sx#16455}(`U`_sx)] -[visit_exp sx#16455] -[visit_id sx#16455] +[visit_exp `LT`_relop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I numtype#911 sx#16579 -dims \ I = numtype#911, sx#16579 -[visit_exp `RELOP`_instr{numtype#911}(`I32`_numtype, `GT`_relop_{sx#16579}(`S`_sx))] -[visit_exp numtype#911] -[visit_id numtype#911] -[visit_exp (`I32`_numtype, `GT`_relop_{sx#16579}(`S`_sx))] +[check_dims] I +dims \ I = +[visit_exp `RELOP`_instr(`I32`_numtype, `GT`_relop_(`S`_sx))] +[visit_exp (`I32`_numtype, `GT`_relop_(`S`_sx))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `GT`_relop_{sx#16579}(`S`_sx)] -[visit_exp sx#16579] -[visit_id sx#16579] +[visit_exp `GT`_relop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I numtype#913 sx#16703 -dims \ I = numtype#913, sx#16703 -[visit_exp `RELOP`_instr{numtype#913}(`I32`_numtype, `GT`_relop_{sx#16703}(`U`_sx))] -[visit_exp numtype#913] -[visit_id numtype#913] -[visit_exp (`I32`_numtype, `GT`_relop_{sx#16703}(`U`_sx))] +[check_dims] I +dims \ I = +[visit_exp `RELOP`_instr(`I32`_numtype, `GT`_relop_(`U`_sx))] +[visit_exp (`I32`_numtype, `GT`_relop_(`U`_sx))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `GT`_relop_{sx#16703}(`U`_sx)] -[visit_exp sx#16703] -[visit_id sx#16703] +[visit_exp `GT`_relop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I numtype#915 sx#16827 -dims \ I = numtype#915, sx#16827 -[visit_exp `RELOP`_instr{numtype#915}(`I32`_numtype, `LE`_relop_{sx#16827}(`S`_sx))] -[visit_exp numtype#915] -[visit_id numtype#915] -[visit_exp (`I32`_numtype, `LE`_relop_{sx#16827}(`S`_sx))] +[check_dims] I +dims \ I = +[visit_exp `RELOP`_instr(`I32`_numtype, `LE`_relop_(`S`_sx))] +[visit_exp (`I32`_numtype, `LE`_relop_(`S`_sx))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `LE`_relop_{sx#16827}(`S`_sx)] -[visit_exp sx#16827] -[visit_id sx#16827] +[visit_exp `LE`_relop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I numtype#917 sx#16951 -dims \ I = numtype#917, sx#16951 -[visit_exp `RELOP`_instr{numtype#917}(`I32`_numtype, `LE`_relop_{sx#16951}(`U`_sx))] -[visit_exp numtype#917] -[visit_id numtype#917] -[visit_exp (`I32`_numtype, `LE`_relop_{sx#16951}(`U`_sx))] +[check_dims] I +dims \ I = +[visit_exp `RELOP`_instr(`I32`_numtype, `LE`_relop_(`U`_sx))] +[visit_exp (`I32`_numtype, `LE`_relop_(`U`_sx))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `LE`_relop_{sx#16951}(`U`_sx)] -[visit_exp sx#16951] -[visit_id sx#16951] +[visit_exp `LE`_relop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I numtype#919 sx#17075 -dims \ I = numtype#919, sx#17075 -[visit_exp `RELOP`_instr{numtype#919}(`I32`_numtype, `GE`_relop_{sx#17075}(`S`_sx))] -[visit_exp numtype#919] -[visit_id numtype#919] -[visit_exp (`I32`_numtype, `GE`_relop_{sx#17075}(`S`_sx))] +[check_dims] I +dims \ I = +[visit_exp `RELOP`_instr(`I32`_numtype, `GE`_relop_(`S`_sx))] +[visit_exp (`I32`_numtype, `GE`_relop_(`S`_sx))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `GE`_relop_{sx#17075}(`S`_sx)] -[visit_exp sx#17075] -[visit_id sx#17075] +[visit_exp `GE`_relop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I numtype#921 sx#17199 -dims \ I = numtype#921, sx#17199 -[visit_exp `RELOP`_instr{numtype#921}(`I32`_numtype, `GE`_relop_{sx#17199}(`U`_sx))] -[visit_exp numtype#921] -[visit_id numtype#921] -[visit_exp (`I32`_numtype, `GE`_relop_{sx#17199}(`U`_sx))] +[check_dims] I +dims \ I = +[visit_exp `RELOP`_instr(`I32`_numtype, `GE`_relop_(`U`_sx))] +[visit_exp (`I32`_numtype, `GE`_relop_(`U`_sx))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `GE`_relop_{sx#17199}(`U`_sx)] -[visit_exp sx#17199] -[visit_id sx#17199] +[visit_exp `GE`_relop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I numtype#923 -dims \ I = numtype#923 -[visit_exp `RELOP`_instr{numtype#923}(`I64`_numtype, `EQ`_relop_)] -[visit_exp numtype#923] -[visit_id numtype#923] +[check_dims] I +dims \ I = +[visit_exp `RELOP`_instr(`I64`_numtype, `EQ`_relop_)] [visit_exp (`I64`_numtype, `EQ`_relop_)] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `EQ`_relop_] [visit_exp ()] -[check_dims] I numtype#925 -dims \ I = numtype#925 -[visit_exp `RELOP`_instr{numtype#925}(`I64`_numtype, `NE`_relop_)] -[visit_exp numtype#925] -[visit_id numtype#925] +[check_dims] I +dims \ I = +[visit_exp `RELOP`_instr(`I64`_numtype, `NE`_relop_)] [visit_exp (`I64`_numtype, `NE`_relop_)] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `NE`_relop_] [visit_exp ()] -[check_dims] I numtype#927 sx#17443 -dims \ I = numtype#927, sx#17443 -[visit_exp `RELOP`_instr{numtype#927}(`I64`_numtype, `LT`_relop_{sx#17443}(`S`_sx))] -[visit_exp numtype#927] -[visit_id numtype#927] -[visit_exp (`I64`_numtype, `LT`_relop_{sx#17443}(`S`_sx))] +[check_dims] I +dims \ I = +[visit_exp `RELOP`_instr(`I64`_numtype, `LT`_relop_(`S`_sx))] +[visit_exp (`I64`_numtype, `LT`_relop_(`S`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `LT`_relop_{sx#17443}(`S`_sx)] -[visit_exp sx#17443] -[visit_id sx#17443] +[visit_exp `LT`_relop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I numtype#929 sx#17567 -dims \ I = numtype#929, sx#17567 -[visit_exp `RELOP`_instr{numtype#929}(`I64`_numtype, `LT`_relop_{sx#17567}(`U`_sx))] -[visit_exp numtype#929] -[visit_id numtype#929] -[visit_exp (`I64`_numtype, `LT`_relop_{sx#17567}(`U`_sx))] +[check_dims] I +dims \ I = +[visit_exp `RELOP`_instr(`I64`_numtype, `LT`_relop_(`U`_sx))] +[visit_exp (`I64`_numtype, `LT`_relop_(`U`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `LT`_relop_{sx#17567}(`U`_sx)] -[visit_exp sx#17567] -[visit_id sx#17567] +[visit_exp `LT`_relop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I numtype#931 sx#17691 -dims \ I = numtype#931, sx#17691 -[visit_exp `RELOP`_instr{numtype#931}(`I64`_numtype, `GT`_relop_{sx#17691}(`S`_sx))] -[visit_exp numtype#931] -[visit_id numtype#931] -[visit_exp (`I64`_numtype, `GT`_relop_{sx#17691}(`S`_sx))] +[check_dims] I +dims \ I = +[visit_exp `RELOP`_instr(`I64`_numtype, `GT`_relop_(`S`_sx))] +[visit_exp (`I64`_numtype, `GT`_relop_(`S`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `GT`_relop_{sx#17691}(`S`_sx)] -[visit_exp sx#17691] -[visit_id sx#17691] +[visit_exp `GT`_relop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I numtype#933 sx#17815 -dims \ I = numtype#933, sx#17815 -[visit_exp `RELOP`_instr{numtype#933}(`I64`_numtype, `GT`_relop_{sx#17815}(`U`_sx))] -[visit_exp numtype#933] -[visit_id numtype#933] -[visit_exp (`I64`_numtype, `GT`_relop_{sx#17815}(`U`_sx))] +[check_dims] I +dims \ I = +[visit_exp `RELOP`_instr(`I64`_numtype, `GT`_relop_(`U`_sx))] +[visit_exp (`I64`_numtype, `GT`_relop_(`U`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `GT`_relop_{sx#17815}(`U`_sx)] -[visit_exp sx#17815] -[visit_id sx#17815] +[visit_exp `GT`_relop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I numtype#935 sx#17939 -dims \ I = numtype#935, sx#17939 -[visit_exp `RELOP`_instr{numtype#935}(`I64`_numtype, `LE`_relop_{sx#17939}(`S`_sx))] -[visit_exp numtype#935] -[visit_id numtype#935] -[visit_exp (`I64`_numtype, `LE`_relop_{sx#17939}(`S`_sx))] +[check_dims] I +dims \ I = +[visit_exp `RELOP`_instr(`I64`_numtype, `LE`_relop_(`S`_sx))] +[visit_exp (`I64`_numtype, `LE`_relop_(`S`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `LE`_relop_{sx#17939}(`S`_sx)] -[visit_exp sx#17939] -[visit_id sx#17939] +[visit_exp `LE`_relop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I numtype#937 sx#18063 -dims \ I = numtype#937, sx#18063 -[visit_exp `RELOP`_instr{numtype#937}(`I64`_numtype, `LE`_relop_{sx#18063}(`U`_sx))] -[visit_exp numtype#937] -[visit_id numtype#937] -[visit_exp (`I64`_numtype, `LE`_relop_{sx#18063}(`U`_sx))] +[check_dims] I +dims \ I = +[visit_exp `RELOP`_instr(`I64`_numtype, `LE`_relop_(`U`_sx))] +[visit_exp (`I64`_numtype, `LE`_relop_(`U`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `LE`_relop_{sx#18063}(`U`_sx)] -[visit_exp sx#18063] -[visit_id sx#18063] +[visit_exp `LE`_relop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I numtype#939 sx#18187 -dims \ I = numtype#939, sx#18187 -[visit_exp `RELOP`_instr{numtype#939}(`I64`_numtype, `GE`_relop_{sx#18187}(`S`_sx))] -[visit_exp numtype#939] -[visit_id numtype#939] -[visit_exp (`I64`_numtype, `GE`_relop_{sx#18187}(`S`_sx))] +[check_dims] I +dims \ I = +[visit_exp `RELOP`_instr(`I64`_numtype, `GE`_relop_(`S`_sx))] +[visit_exp (`I64`_numtype, `GE`_relop_(`S`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `GE`_relop_{sx#18187}(`S`_sx)] -[visit_exp sx#18187] -[visit_id sx#18187] +[visit_exp `GE`_relop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I numtype#941 sx#18311 -dims \ I = numtype#941, sx#18311 -[visit_exp `RELOP`_instr{numtype#941}(`I64`_numtype, `GE`_relop_{sx#18311}(`U`_sx))] -[visit_exp numtype#941] -[visit_id numtype#941] -[visit_exp (`I64`_numtype, `GE`_relop_{sx#18311}(`U`_sx))] +[check_dims] I +dims \ I = +[visit_exp `RELOP`_instr(`I64`_numtype, `GE`_relop_(`U`_sx))] +[visit_exp (`I64`_numtype, `GE`_relop_(`U`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `GE`_relop_{sx#18311}(`U`_sx)] -[visit_exp sx#18311] -[visit_id sx#18311] +[visit_exp `GE`_relop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I numtype#943 -dims \ I = numtype#943 -[visit_exp `RELOP`_instr{numtype#943}(`F32`_numtype, `EQ`_relop_)] -[visit_exp numtype#943] -[visit_id numtype#943] +[check_dims] I +dims \ I = +[visit_exp `RELOP`_instr(`F32`_numtype, `EQ`_relop_)] [visit_exp (`F32`_numtype, `EQ`_relop_)] [visit_exp `F32`_numtype] [visit_exp ()] [visit_exp `EQ`_relop_] [visit_exp ()] -[check_dims] I numtype#945 -dims \ I = numtype#945 -[visit_exp `RELOP`_instr{numtype#945}(`F32`_numtype, `NE`_relop_)] -[visit_exp numtype#945] -[visit_id numtype#945] +[check_dims] I +dims \ I = +[visit_exp `RELOP`_instr(`F32`_numtype, `NE`_relop_)] [visit_exp (`F32`_numtype, `NE`_relop_)] [visit_exp `F32`_numtype] [visit_exp ()] [visit_exp `NE`_relop_] [visit_exp ()] -[check_dims] I numtype#947 -dims \ I = numtype#947 -[visit_exp `RELOP`_instr{numtype#947}(`F32`_numtype, `LT`_relop_)] -[visit_exp numtype#947] -[visit_id numtype#947] +[check_dims] I +dims \ I = +[visit_exp `RELOP`_instr(`F32`_numtype, `LT`_relop_)] [visit_exp (`F32`_numtype, `LT`_relop_)] [visit_exp `F32`_numtype] [visit_exp ()] [visit_exp `LT`_relop_] [visit_exp ()] -[check_dims] I numtype#949 -dims \ I = numtype#949 -[visit_exp `RELOP`_instr{numtype#949}(`F32`_numtype, `GT`_relop_)] -[visit_exp numtype#949] -[visit_id numtype#949] +[check_dims] I +dims \ I = +[visit_exp `RELOP`_instr(`F32`_numtype, `GT`_relop_)] [visit_exp (`F32`_numtype, `GT`_relop_)] [visit_exp `F32`_numtype] [visit_exp ()] [visit_exp `GT`_relop_] [visit_exp ()] -[check_dims] I numtype#951 -dims \ I = numtype#951 -[visit_exp `RELOP`_instr{numtype#951}(`F32`_numtype, `LE`_relop_)] -[visit_exp numtype#951] -[visit_id numtype#951] +[check_dims] I +dims \ I = +[visit_exp `RELOP`_instr(`F32`_numtype, `LE`_relop_)] [visit_exp (`F32`_numtype, `LE`_relop_)] [visit_exp `F32`_numtype] [visit_exp ()] [visit_exp `LE`_relop_] [visit_exp ()] -[check_dims] I numtype#953 -dims \ I = numtype#953 -[visit_exp `RELOP`_instr{numtype#953}(`F32`_numtype, `GE`_relop_)] -[visit_exp numtype#953] -[visit_id numtype#953] +[check_dims] I +dims \ I = +[visit_exp `RELOP`_instr(`F32`_numtype, `GE`_relop_)] [visit_exp (`F32`_numtype, `GE`_relop_)] [visit_exp `F32`_numtype] [visit_exp ()] @@ -97838,61 +77260,49 @@ dims \ I = numtype#953 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I numtype#955 -dims \ I = numtype#955 -[visit_exp `RELOP`_instr{numtype#955}(`F64`_numtype, `EQ`_relop_)] -[visit_exp numtype#955] -[visit_id numtype#955] +[check_dims] I +dims \ I = +[visit_exp `RELOP`_instr(`F64`_numtype, `EQ`_relop_)] [visit_exp (`F64`_numtype, `EQ`_relop_)] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `EQ`_relop_] [visit_exp ()] -[check_dims] I numtype#957 -dims \ I = numtype#957 -[visit_exp `RELOP`_instr{numtype#957}(`F64`_numtype, `NE`_relop_)] -[visit_exp numtype#957] -[visit_id numtype#957] +[check_dims] I +dims \ I = +[visit_exp `RELOP`_instr(`F64`_numtype, `NE`_relop_)] [visit_exp (`F64`_numtype, `NE`_relop_)] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `NE`_relop_] [visit_exp ()] -[check_dims] I numtype#959 -dims \ I = numtype#959 -[visit_exp `RELOP`_instr{numtype#959}(`F64`_numtype, `LT`_relop_)] -[visit_exp numtype#959] -[visit_id numtype#959] +[check_dims] I +dims \ I = +[visit_exp `RELOP`_instr(`F64`_numtype, `LT`_relop_)] [visit_exp (`F64`_numtype, `LT`_relop_)] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `LT`_relop_] [visit_exp ()] -[check_dims] I numtype#961 -dims \ I = numtype#961 -[visit_exp `RELOP`_instr{numtype#961}(`F64`_numtype, `GT`_relop_)] -[visit_exp numtype#961] -[visit_id numtype#961] +[check_dims] I +dims \ I = +[visit_exp `RELOP`_instr(`F64`_numtype, `GT`_relop_)] [visit_exp (`F64`_numtype, `GT`_relop_)] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `GT`_relop_] [visit_exp ()] -[check_dims] I numtype#963 -dims \ I = numtype#963 -[visit_exp `RELOP`_instr{numtype#963}(`F64`_numtype, `LE`_relop_)] -[visit_exp numtype#963] -[visit_id numtype#963] +[check_dims] I +dims \ I = +[visit_exp `RELOP`_instr(`F64`_numtype, `LE`_relop_)] [visit_exp (`F64`_numtype, `LE`_relop_)] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `LE`_relop_] [visit_exp ()] -[check_dims] I numtype#965 -dims \ I = numtype#965 -[visit_exp `RELOP`_instr{numtype#965}(`F64`_numtype, `GE`_relop_)] -[visit_exp numtype#965] -[visit_id numtype#965] +[check_dims] I +dims \ I = +[visit_exp `RELOP`_instr(`F64`_numtype, `GE`_relop_)] [visit_exp (`F64`_numtype, `GE`_relop_)] [visit_exp `F64`_numtype] [visit_exp ()] @@ -97901,232 +77311,166 @@ dims \ I = numtype#965 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I numtype#967 -dims \ I = numtype#967 -[visit_exp `UNOP`_instr{numtype#967}(`I32`_numtype, `CLZ`_unop_)] -[visit_exp numtype#967] -[visit_id numtype#967] +[check_dims] I +dims \ I = +[visit_exp `UNOP`_instr(`I32`_numtype, `CLZ`_unop_)] [visit_exp (`I32`_numtype, `CLZ`_unop_)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp `CLZ`_unop_] [visit_exp ()] -[check_dims] I numtype#969 -dims \ I = numtype#969 -[visit_exp `UNOP`_instr{numtype#969}(`I32`_numtype, `CTZ`_unop_)] -[visit_exp numtype#969] -[visit_id numtype#969] +[check_dims] I +dims \ I = +[visit_exp `UNOP`_instr(`I32`_numtype, `CTZ`_unop_)] [visit_exp (`I32`_numtype, `CTZ`_unop_)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp `CTZ`_unop_] [visit_exp ()] -[check_dims] I numtype#971 -dims \ I = numtype#971 -[visit_exp `UNOP`_instr{numtype#971}(`I32`_numtype, `POPCNT`_unop_)] -[visit_exp numtype#971] -[visit_id numtype#971] +[check_dims] I +dims \ I = +[visit_exp `UNOP`_instr(`I32`_numtype, `POPCNT`_unop_)] [visit_exp (`I32`_numtype, `POPCNT`_unop_)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp `POPCNT`_unop_] [visit_exp ()] -[check_dims] I i#101930 i#101937 numtype#973 sz#2529 -dims \ I = i#101930, i#101937, numtype#973, sz#2529 -[visit_exp `UNOP`_instr{numtype#973}(`I32`_numtype, `EXTEND`_unop_{sz#2529, i#101930}(`%`_sz{i#101937}(8)))] -[visit_exp numtype#973] -[visit_id numtype#973] -[visit_exp (`I32`_numtype, `EXTEND`_unop_{sz#2529, i#101930}(`%`_sz{i#101937}(8)))] +[check_dims] I +dims \ I = +[visit_exp `UNOP`_instr(`I32`_numtype, `EXTEND`_unop_(`%`_sz(8)))] +[visit_exp (`I32`_numtype, `EXTEND`_unop_(`%`_sz(8)))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `EXTEND`_unop_{sz#2529, i#101930}(`%`_sz{i#101937}(8))] -[visit_exp sz#2529] -[visit_id sz#2529] -[visit_exp i#101930] -[visit_id i#101930] -[visit_exp (`%`_sz{i#101937}(8))] -[visit_exp `%`_sz{i#101937}(8)] -[visit_exp i#101937] -[visit_id i#101937] +[visit_exp `EXTEND`_unop_(`%`_sz(8))] +[visit_exp (`%`_sz(8))] +[visit_exp `%`_sz(8)] [visit_exp (8)] [visit_exp 8] -[check_dims] I i#101946 i#101953 numtype#975 sz#2563 -dims \ I = i#101946, i#101953, numtype#975, sz#2563 -[visit_exp `UNOP`_instr{numtype#975}(`I32`_numtype, `EXTEND`_unop_{sz#2563, i#101946}(`%`_sz{i#101953}(16)))] -[visit_exp numtype#975] -[visit_id numtype#975] -[visit_exp (`I32`_numtype, `EXTEND`_unop_{sz#2563, i#101946}(`%`_sz{i#101953}(16)))] +[check_dims] I +dims \ I = +[visit_exp `UNOP`_instr(`I32`_numtype, `EXTEND`_unop_(`%`_sz(16)))] +[visit_exp (`I32`_numtype, `EXTEND`_unop_(`%`_sz(16)))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `EXTEND`_unop_{sz#2563, i#101946}(`%`_sz{i#101953}(16))] -[visit_exp sz#2563] -[visit_id sz#2563] -[visit_exp i#101946] -[visit_id i#101946] -[visit_exp (`%`_sz{i#101953}(16))] -[visit_exp `%`_sz{i#101953}(16)] -[visit_exp i#101953] -[visit_id i#101953] +[visit_exp `EXTEND`_unop_(`%`_sz(16))] +[visit_exp (`%`_sz(16))] +[visit_exp `%`_sz(16)] [visit_exp (16)] [visit_exp 16] [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I numtype#977 -dims \ I = numtype#977 -[visit_exp `UNOP`_instr{numtype#977}(`I64`_numtype, `CLZ`_unop_)] -[visit_exp numtype#977] -[visit_id numtype#977] +[check_dims] I +dims \ I = +[visit_exp `UNOP`_instr(`I64`_numtype, `CLZ`_unop_)] [visit_exp (`I64`_numtype, `CLZ`_unop_)] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `CLZ`_unop_] [visit_exp ()] -[check_dims] I numtype#979 -dims \ I = numtype#979 -[visit_exp `UNOP`_instr{numtype#979}(`I64`_numtype, `CTZ`_unop_)] -[visit_exp numtype#979] -[visit_id numtype#979] +[check_dims] I +dims \ I = +[visit_exp `UNOP`_instr(`I64`_numtype, `CTZ`_unop_)] [visit_exp (`I64`_numtype, `CTZ`_unop_)] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `CTZ`_unop_] [visit_exp ()] -[check_dims] I numtype#981 -dims \ I = numtype#981 -[visit_exp `UNOP`_instr{numtype#981}(`I64`_numtype, `POPCNT`_unop_)] -[visit_exp numtype#981] -[visit_id numtype#981] +[check_dims] I +dims \ I = +[visit_exp `UNOP`_instr(`I64`_numtype, `POPCNT`_unop_)] [visit_exp (`I64`_numtype, `POPCNT`_unop_)] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `POPCNT`_unop_] [visit_exp ()] -[check_dims] I i#101962 i#101969 numtype#983 sz#2642 -dims \ I = i#101962, i#101969, numtype#983, sz#2642 -[visit_exp `UNOP`_instr{numtype#983}(`I64`_numtype, `EXTEND`_unop_{sz#2642, i#101962}(`%`_sz{i#101969}(8)))] -[visit_exp numtype#983] -[visit_id numtype#983] -[visit_exp (`I64`_numtype, `EXTEND`_unop_{sz#2642, i#101962}(`%`_sz{i#101969}(8)))] +[check_dims] I +dims \ I = +[visit_exp `UNOP`_instr(`I64`_numtype, `EXTEND`_unop_(`%`_sz(8)))] +[visit_exp (`I64`_numtype, `EXTEND`_unop_(`%`_sz(8)))] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `EXTEND`_unop_{sz#2642, i#101962}(`%`_sz{i#101969}(8))] -[visit_exp sz#2642] -[visit_id sz#2642] -[visit_exp i#101962] -[visit_id i#101962] -[visit_exp (`%`_sz{i#101969}(8))] -[visit_exp `%`_sz{i#101969}(8)] -[visit_exp i#101969] -[visit_id i#101969] +[visit_exp `EXTEND`_unop_(`%`_sz(8))] +[visit_exp (`%`_sz(8))] +[visit_exp `%`_sz(8)] [visit_exp (8)] [visit_exp 8] -[check_dims] I i#101978 i#101985 numtype#985 sz#2676 -dims \ I = i#101978, i#101985, numtype#985, sz#2676 -[visit_exp `UNOP`_instr{numtype#985}(`I64`_numtype, `EXTEND`_unop_{sz#2676, i#101978}(`%`_sz{i#101985}(16)))] -[visit_exp numtype#985] -[visit_id numtype#985] -[visit_exp (`I64`_numtype, `EXTEND`_unop_{sz#2676, i#101978}(`%`_sz{i#101985}(16)))] +[check_dims] I +dims \ I = +[visit_exp `UNOP`_instr(`I64`_numtype, `EXTEND`_unop_(`%`_sz(16)))] +[visit_exp (`I64`_numtype, `EXTEND`_unop_(`%`_sz(16)))] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `EXTEND`_unop_{sz#2676, i#101978}(`%`_sz{i#101985}(16))] -[visit_exp sz#2676] -[visit_id sz#2676] -[visit_exp i#101978] -[visit_id i#101978] -[visit_exp (`%`_sz{i#101985}(16))] -[visit_exp `%`_sz{i#101985}(16)] -[visit_exp i#101985] -[visit_id i#101985] +[visit_exp `EXTEND`_unop_(`%`_sz(16))] +[visit_exp (`%`_sz(16))] +[visit_exp `%`_sz(16)] [visit_exp (16)] [visit_exp 16] -[check_dims] I i#101994 i#102001 numtype#987 sz#2710 -dims \ I = i#101994, i#102001, numtype#987, sz#2710 -[visit_exp `UNOP`_instr{numtype#987}(`I64`_numtype, `EXTEND`_unop_{sz#2710, i#101994}(`%`_sz{i#102001}(32)))] -[visit_exp numtype#987] -[visit_id numtype#987] -[visit_exp (`I64`_numtype, `EXTEND`_unop_{sz#2710, i#101994}(`%`_sz{i#102001}(32)))] +[check_dims] I +dims \ I = +[visit_exp `UNOP`_instr(`I64`_numtype, `EXTEND`_unop_(`%`_sz(32)))] +[visit_exp (`I64`_numtype, `EXTEND`_unop_(`%`_sz(32)))] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `EXTEND`_unop_{sz#2710, i#101994}(`%`_sz{i#102001}(32))] -[visit_exp sz#2710] -[visit_id sz#2710] -[visit_exp i#101994] -[visit_id i#101994] -[visit_exp (`%`_sz{i#102001}(32))] -[visit_exp `%`_sz{i#102001}(32)] -[visit_exp i#102001] -[visit_id i#102001] +[visit_exp `EXTEND`_unop_(`%`_sz(32))] +[visit_exp (`%`_sz(32))] +[visit_exp `%`_sz(32)] [visit_exp (32)] [visit_exp 32] [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I numtype#989 -dims \ I = numtype#989 -[visit_exp `UNOP`_instr{numtype#989}(`F32`_numtype, `ABS`_unop_)] -[visit_exp numtype#989] -[visit_id numtype#989] +[check_dims] I +dims \ I = +[visit_exp `UNOP`_instr(`F32`_numtype, `ABS`_unop_)] [visit_exp (`F32`_numtype, `ABS`_unop_)] [visit_exp `F32`_numtype] [visit_exp ()] [visit_exp `ABS`_unop_] [visit_exp ()] -[check_dims] I numtype#991 -dims \ I = numtype#991 -[visit_exp `UNOP`_instr{numtype#991}(`F32`_numtype, `NEG`_unop_)] -[visit_exp numtype#991] -[visit_id numtype#991] +[check_dims] I +dims \ I = +[visit_exp `UNOP`_instr(`F32`_numtype, `NEG`_unop_)] [visit_exp (`F32`_numtype, `NEG`_unop_)] [visit_exp `F32`_numtype] [visit_exp ()] [visit_exp `NEG`_unop_] [visit_exp ()] -[check_dims] I numtype#993 -dims \ I = numtype#993 -[visit_exp `UNOP`_instr{numtype#993}(`F32`_numtype, `SQRT`_unop_)] -[visit_exp numtype#993] -[visit_id numtype#993] +[check_dims] I +dims \ I = +[visit_exp `UNOP`_instr(`F32`_numtype, `SQRT`_unop_)] [visit_exp (`F32`_numtype, `SQRT`_unop_)] [visit_exp `F32`_numtype] [visit_exp ()] [visit_exp `SQRT`_unop_] [visit_exp ()] -[check_dims] I numtype#995 -dims \ I = numtype#995 -[visit_exp `UNOP`_instr{numtype#995}(`F32`_numtype, `CEIL`_unop_)] -[visit_exp numtype#995] -[visit_id numtype#995] +[check_dims] I +dims \ I = +[visit_exp `UNOP`_instr(`F32`_numtype, `CEIL`_unop_)] [visit_exp (`F32`_numtype, `CEIL`_unop_)] [visit_exp `F32`_numtype] [visit_exp ()] [visit_exp `CEIL`_unop_] [visit_exp ()] -[check_dims] I numtype#997 -dims \ I = numtype#997 -[visit_exp `UNOP`_instr{numtype#997}(`F32`_numtype, `FLOOR`_unop_)] -[visit_exp numtype#997] -[visit_id numtype#997] +[check_dims] I +dims \ I = +[visit_exp `UNOP`_instr(`F32`_numtype, `FLOOR`_unop_)] [visit_exp (`F32`_numtype, `FLOOR`_unop_)] [visit_exp `F32`_numtype] [visit_exp ()] [visit_exp `FLOOR`_unop_] [visit_exp ()] -[check_dims] I numtype#999 -dims \ I = numtype#999 -[visit_exp `UNOP`_instr{numtype#999}(`F32`_numtype, `TRUNC`_unop_)] -[visit_exp numtype#999] -[visit_id numtype#999] +[check_dims] I +dims \ I = +[visit_exp `UNOP`_instr(`F32`_numtype, `TRUNC`_unop_)] [visit_exp (`F32`_numtype, `TRUNC`_unop_)] [visit_exp `F32`_numtype] [visit_exp ()] [visit_exp `TRUNC`_unop_] [visit_exp ()] -[check_dims] I numtype#1001 -dims \ I = numtype#1001 -[visit_exp `UNOP`_instr{numtype#1001}(`F32`_numtype, `NEAREST`_unop_)] -[visit_exp numtype#1001] -[visit_id numtype#1001] +[check_dims] I +dims \ I = +[visit_exp `UNOP`_instr(`F32`_numtype, `NEAREST`_unop_)] [visit_exp (`F32`_numtype, `NEAREST`_unop_)] [visit_exp `F32`_numtype] [visit_exp ()] @@ -98135,71 +77479,57 @@ dims \ I = numtype#1001 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I numtype#1003 -dims \ I = numtype#1003 -[visit_exp `UNOP`_instr{numtype#1003}(`F64`_numtype, `ABS`_unop_)] -[visit_exp numtype#1003] -[visit_id numtype#1003] +[check_dims] I +dims \ I = +[visit_exp `UNOP`_instr(`F64`_numtype, `ABS`_unop_)] [visit_exp (`F64`_numtype, `ABS`_unop_)] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `ABS`_unop_] [visit_exp ()] -[check_dims] I numtype#1005 -dims \ I = numtype#1005 -[visit_exp `UNOP`_instr{numtype#1005}(`F64`_numtype, `NEG`_unop_)] -[visit_exp numtype#1005] -[visit_id numtype#1005] +[check_dims] I +dims \ I = +[visit_exp `UNOP`_instr(`F64`_numtype, `NEG`_unop_)] [visit_exp (`F64`_numtype, `NEG`_unop_)] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `NEG`_unop_] [visit_exp ()] -[check_dims] I numtype#1007 -dims \ I = numtype#1007 -[visit_exp `UNOP`_instr{numtype#1007}(`F64`_numtype, `SQRT`_unop_)] -[visit_exp numtype#1007] -[visit_id numtype#1007] +[check_dims] I +dims \ I = +[visit_exp `UNOP`_instr(`F64`_numtype, `SQRT`_unop_)] [visit_exp (`F64`_numtype, `SQRT`_unop_)] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `SQRT`_unop_] [visit_exp ()] -[check_dims] I numtype#1009 -dims \ I = numtype#1009 -[visit_exp `UNOP`_instr{numtype#1009}(`F64`_numtype, `CEIL`_unop_)] -[visit_exp numtype#1009] -[visit_id numtype#1009] +[check_dims] I +dims \ I = +[visit_exp `UNOP`_instr(`F64`_numtype, `CEIL`_unop_)] [visit_exp (`F64`_numtype, `CEIL`_unop_)] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `CEIL`_unop_] [visit_exp ()] -[check_dims] I numtype#1011 -dims \ I = numtype#1011 -[visit_exp `UNOP`_instr{numtype#1011}(`F64`_numtype, `FLOOR`_unop_)] -[visit_exp numtype#1011] -[visit_id numtype#1011] +[check_dims] I +dims \ I = +[visit_exp `UNOP`_instr(`F64`_numtype, `FLOOR`_unop_)] [visit_exp (`F64`_numtype, `FLOOR`_unop_)] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `FLOOR`_unop_] [visit_exp ()] -[check_dims] I numtype#1013 -dims \ I = numtype#1013 -[visit_exp `UNOP`_instr{numtype#1013}(`F64`_numtype, `TRUNC`_unop_)] -[visit_exp numtype#1013] -[visit_id numtype#1013] +[check_dims] I +dims \ I = +[visit_exp `UNOP`_instr(`F64`_numtype, `TRUNC`_unop_)] [visit_exp (`F64`_numtype, `TRUNC`_unop_)] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `TRUNC`_unop_] [visit_exp ()] -[check_dims] I numtype#1015 -dims \ I = numtype#1015 -[visit_exp `UNOP`_instr{numtype#1015}(`F64`_numtype, `NEAREST`_unop_)] -[visit_exp numtype#1015] -[visit_id numtype#1015] +[check_dims] I +dims \ I = +[visit_exp `UNOP`_instr(`F64`_numtype, `NEAREST`_unop_)] [visit_exp (`F64`_numtype, `NEAREST`_unop_)] [visit_exp `F64`_numtype] [visit_exp ()] @@ -98208,175 +77538,133 @@ dims \ I = numtype#1015 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I numtype#1017 -dims \ I = numtype#1017 -[visit_exp `BINOP`_instr{numtype#1017}(`I32`_numtype, `ADD`_binop_)] -[visit_exp numtype#1017] -[visit_id numtype#1017] +[check_dims] I +dims \ I = +[visit_exp `BINOP`_instr(`I32`_numtype, `ADD`_binop_)] [visit_exp (`I32`_numtype, `ADD`_binop_)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp `ADD`_binop_] [visit_exp ()] -[check_dims] I numtype#1019 -dims \ I = numtype#1019 -[visit_exp `BINOP`_instr{numtype#1019}(`I32`_numtype, `SUB`_binop_)] -[visit_exp numtype#1019] -[visit_id numtype#1019] +[check_dims] I +dims \ I = +[visit_exp `BINOP`_instr(`I32`_numtype, `SUB`_binop_)] [visit_exp (`I32`_numtype, `SUB`_binop_)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp `SUB`_binop_] [visit_exp ()] -[check_dims] I numtype#1021 -dims \ I = numtype#1021 -[visit_exp `BINOP`_instr{numtype#1021}(`I32`_numtype, `MUL`_binop_)] -[visit_exp numtype#1021] -[visit_id numtype#1021] +[check_dims] I +dims \ I = +[visit_exp `BINOP`_instr(`I32`_numtype, `MUL`_binop_)] [visit_exp (`I32`_numtype, `MUL`_binop_)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp `MUL`_binop_] [visit_exp ()] -[check_dims] I numtype#1023 sx#18540 -dims \ I = numtype#1023, sx#18540 -[visit_exp `BINOP`_instr{numtype#1023}(`I32`_numtype, `DIV`_binop_{sx#18540}(`S`_sx))] -[visit_exp numtype#1023] -[visit_id numtype#1023] -[visit_exp (`I32`_numtype, `DIV`_binop_{sx#18540}(`S`_sx))] +[check_dims] I +dims \ I = +[visit_exp `BINOP`_instr(`I32`_numtype, `DIV`_binop_(`S`_sx))] +[visit_exp (`I32`_numtype, `DIV`_binop_(`S`_sx))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `DIV`_binop_{sx#18540}(`S`_sx)] -[visit_exp sx#18540] -[visit_id sx#18540] +[visit_exp `DIV`_binop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I numtype#1025 sx#18634 -dims \ I = numtype#1025, sx#18634 -[visit_exp `BINOP`_instr{numtype#1025}(`I32`_numtype, `DIV`_binop_{sx#18634}(`U`_sx))] -[visit_exp numtype#1025] -[visit_id numtype#1025] -[visit_exp (`I32`_numtype, `DIV`_binop_{sx#18634}(`U`_sx))] +[check_dims] I +dims \ I = +[visit_exp `BINOP`_instr(`I32`_numtype, `DIV`_binop_(`U`_sx))] +[visit_exp (`I32`_numtype, `DIV`_binop_(`U`_sx))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `DIV`_binop_{sx#18634}(`U`_sx)] -[visit_exp sx#18634] -[visit_id sx#18634] +[visit_exp `DIV`_binop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I numtype#1027 sx#18728 -dims \ I = numtype#1027, sx#18728 -[visit_exp `BINOP`_instr{numtype#1027}(`I32`_numtype, `REM`_binop_{sx#18728}(`S`_sx))] -[visit_exp numtype#1027] -[visit_id numtype#1027] -[visit_exp (`I32`_numtype, `REM`_binop_{sx#18728}(`S`_sx))] +[check_dims] I +dims \ I = +[visit_exp `BINOP`_instr(`I32`_numtype, `REM`_binop_(`S`_sx))] +[visit_exp (`I32`_numtype, `REM`_binop_(`S`_sx))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `REM`_binop_{sx#18728}(`S`_sx)] -[visit_exp sx#18728] -[visit_id sx#18728] +[visit_exp `REM`_binop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I numtype#1029 sx#18822 -dims \ I = numtype#1029, sx#18822 -[visit_exp `BINOP`_instr{numtype#1029}(`I32`_numtype, `REM`_binop_{sx#18822}(`U`_sx))] -[visit_exp numtype#1029] -[visit_id numtype#1029] -[visit_exp (`I32`_numtype, `REM`_binop_{sx#18822}(`U`_sx))] +[check_dims] I +dims \ I = +[visit_exp `BINOP`_instr(`I32`_numtype, `REM`_binop_(`U`_sx))] +[visit_exp (`I32`_numtype, `REM`_binop_(`U`_sx))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `REM`_binop_{sx#18822}(`U`_sx)] -[visit_exp sx#18822] -[visit_id sx#18822] +[visit_exp `REM`_binop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I numtype#1031 -dims \ I = numtype#1031 -[visit_exp `BINOP`_instr{numtype#1031}(`I32`_numtype, `AND`_binop_)] -[visit_exp numtype#1031] -[visit_id numtype#1031] +[check_dims] I +dims \ I = +[visit_exp `BINOP`_instr(`I32`_numtype, `AND`_binop_)] [visit_exp (`I32`_numtype, `AND`_binop_)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp `AND`_binop_] [visit_exp ()] -[check_dims] I numtype#1033 -dims \ I = numtype#1033 -[visit_exp `BINOP`_instr{numtype#1033}(`I32`_numtype, `OR`_binop_)] -[visit_exp numtype#1033] -[visit_id numtype#1033] +[check_dims] I +dims \ I = +[visit_exp `BINOP`_instr(`I32`_numtype, `OR`_binop_)] [visit_exp (`I32`_numtype, `OR`_binop_)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp `OR`_binop_] [visit_exp ()] -[check_dims] I numtype#1035 -dims \ I = numtype#1035 -[visit_exp `BINOP`_instr{numtype#1035}(`I32`_numtype, `XOR`_binop_)] -[visit_exp numtype#1035] -[visit_id numtype#1035] +[check_dims] I +dims \ I = +[visit_exp `BINOP`_instr(`I32`_numtype, `XOR`_binop_)] [visit_exp (`I32`_numtype, `XOR`_binop_)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp `XOR`_binop_] [visit_exp ()] -[check_dims] I numtype#1037 -dims \ I = numtype#1037 -[visit_exp `BINOP`_instr{numtype#1037}(`I32`_numtype, `SHL`_binop_)] -[visit_exp numtype#1037] -[visit_id numtype#1037] +[check_dims] I +dims \ I = +[visit_exp `BINOP`_instr(`I32`_numtype, `SHL`_binop_)] [visit_exp (`I32`_numtype, `SHL`_binop_)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp `SHL`_binop_] [visit_exp ()] -[check_dims] I numtype#1039 sx#19096 -dims \ I = numtype#1039, sx#19096 -[visit_exp `BINOP`_instr{numtype#1039}(`I32`_numtype, `SHR`_binop_{sx#19096}(`S`_sx))] -[visit_exp numtype#1039] -[visit_id numtype#1039] -[visit_exp (`I32`_numtype, `SHR`_binop_{sx#19096}(`S`_sx))] +[check_dims] I +dims \ I = +[visit_exp `BINOP`_instr(`I32`_numtype, `SHR`_binop_(`S`_sx))] +[visit_exp (`I32`_numtype, `SHR`_binop_(`S`_sx))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `SHR`_binop_{sx#19096}(`S`_sx)] -[visit_exp sx#19096] -[visit_id sx#19096] +[visit_exp `SHR`_binop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I numtype#1041 sx#19190 -dims \ I = numtype#1041, sx#19190 -[visit_exp `BINOP`_instr{numtype#1041}(`I32`_numtype, `SHR`_binop_{sx#19190}(`U`_sx))] -[visit_exp numtype#1041] -[visit_id numtype#1041] -[visit_exp (`I32`_numtype, `SHR`_binop_{sx#19190}(`U`_sx))] +[check_dims] I +dims \ I = +[visit_exp `BINOP`_instr(`I32`_numtype, `SHR`_binop_(`U`_sx))] +[visit_exp (`I32`_numtype, `SHR`_binop_(`U`_sx))] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `SHR`_binop_{sx#19190}(`U`_sx)] -[visit_exp sx#19190] -[visit_id sx#19190] +[visit_exp `SHR`_binop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I numtype#1043 -dims \ I = numtype#1043 -[visit_exp `BINOP`_instr{numtype#1043}(`I32`_numtype, `ROTL`_binop_)] -[visit_exp numtype#1043] -[visit_id numtype#1043] +[check_dims] I +dims \ I = +[visit_exp `BINOP`_instr(`I32`_numtype, `ROTL`_binop_)] [visit_exp (`I32`_numtype, `ROTL`_binop_)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp `ROTL`_binop_] [visit_exp ()] -[check_dims] I numtype#1045 -dims \ I = numtype#1045 -[visit_exp `BINOP`_instr{numtype#1045}(`I32`_numtype, `ROTR`_binop_)] -[visit_exp numtype#1045] -[visit_id numtype#1045] +[check_dims] I +dims \ I = +[visit_exp `BINOP`_instr(`I32`_numtype, `ROTR`_binop_)] [visit_exp (`I32`_numtype, `ROTR`_binop_)] [visit_exp `I32`_numtype] [visit_exp ()] @@ -98385,175 +77673,133 @@ dims \ I = numtype#1045 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I numtype#1047 -dims \ I = numtype#1047 -[visit_exp `BINOP`_instr{numtype#1047}(`I64`_numtype, `ADD`_binop_)] -[visit_exp numtype#1047] -[visit_id numtype#1047] +[check_dims] I +dims \ I = +[visit_exp `BINOP`_instr(`I64`_numtype, `ADD`_binop_)] [visit_exp (`I64`_numtype, `ADD`_binop_)] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `ADD`_binop_] [visit_exp ()] -[check_dims] I numtype#1049 -dims \ I = numtype#1049 -[visit_exp `BINOP`_instr{numtype#1049}(`I64`_numtype, `SUB`_binop_)] -[visit_exp numtype#1049] -[visit_id numtype#1049] +[check_dims] I +dims \ I = +[visit_exp `BINOP`_instr(`I64`_numtype, `SUB`_binop_)] [visit_exp (`I64`_numtype, `SUB`_binop_)] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `SUB`_binop_] [visit_exp ()] -[check_dims] I numtype#1051 -dims \ I = numtype#1051 -[visit_exp `BINOP`_instr{numtype#1051}(`I64`_numtype, `MUL`_binop_)] -[visit_exp numtype#1051] -[visit_id numtype#1051] +[check_dims] I +dims \ I = +[visit_exp `BINOP`_instr(`I64`_numtype, `MUL`_binop_)] [visit_exp (`I64`_numtype, `MUL`_binop_)] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `MUL`_binop_] [visit_exp ()] -[check_dims] I numtype#1053 sx#19509 -dims \ I = numtype#1053, sx#19509 -[visit_exp `BINOP`_instr{numtype#1053}(`I64`_numtype, `DIV`_binop_{sx#19509}(`S`_sx))] -[visit_exp numtype#1053] -[visit_id numtype#1053] -[visit_exp (`I64`_numtype, `DIV`_binop_{sx#19509}(`S`_sx))] +[check_dims] I +dims \ I = +[visit_exp `BINOP`_instr(`I64`_numtype, `DIV`_binop_(`S`_sx))] +[visit_exp (`I64`_numtype, `DIV`_binop_(`S`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `DIV`_binop_{sx#19509}(`S`_sx)] -[visit_exp sx#19509] -[visit_id sx#19509] +[visit_exp `DIV`_binop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I numtype#1055 sx#19603 -dims \ I = numtype#1055, sx#19603 -[visit_exp `BINOP`_instr{numtype#1055}(`I64`_numtype, `DIV`_binop_{sx#19603}(`U`_sx))] -[visit_exp numtype#1055] -[visit_id numtype#1055] -[visit_exp (`I64`_numtype, `DIV`_binop_{sx#19603}(`U`_sx))] +[check_dims] I +dims \ I = +[visit_exp `BINOP`_instr(`I64`_numtype, `DIV`_binop_(`U`_sx))] +[visit_exp (`I64`_numtype, `DIV`_binop_(`U`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `DIV`_binop_{sx#19603}(`U`_sx)] -[visit_exp sx#19603] -[visit_id sx#19603] +[visit_exp `DIV`_binop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I numtype#1057 sx#19697 -dims \ I = numtype#1057, sx#19697 -[visit_exp `BINOP`_instr{numtype#1057}(`I64`_numtype, `REM`_binop_{sx#19697}(`S`_sx))] -[visit_exp numtype#1057] -[visit_id numtype#1057] -[visit_exp (`I64`_numtype, `REM`_binop_{sx#19697}(`S`_sx))] +[check_dims] I +dims \ I = +[visit_exp `BINOP`_instr(`I64`_numtype, `REM`_binop_(`S`_sx))] +[visit_exp (`I64`_numtype, `REM`_binop_(`S`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `REM`_binop_{sx#19697}(`S`_sx)] -[visit_exp sx#19697] -[visit_id sx#19697] +[visit_exp `REM`_binop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I numtype#1059 sx#19791 -dims \ I = numtype#1059, sx#19791 -[visit_exp `BINOP`_instr{numtype#1059}(`I64`_numtype, `REM`_binop_{sx#19791}(`U`_sx))] -[visit_exp numtype#1059] -[visit_id numtype#1059] -[visit_exp (`I64`_numtype, `REM`_binop_{sx#19791}(`U`_sx))] +[check_dims] I +dims \ I = +[visit_exp `BINOP`_instr(`I64`_numtype, `REM`_binop_(`U`_sx))] +[visit_exp (`I64`_numtype, `REM`_binop_(`U`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `REM`_binop_{sx#19791}(`U`_sx)] -[visit_exp sx#19791] -[visit_id sx#19791] +[visit_exp `REM`_binop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I numtype#1061 -dims \ I = numtype#1061 -[visit_exp `BINOP`_instr{numtype#1061}(`I64`_numtype, `AND`_binop_)] -[visit_exp numtype#1061] -[visit_id numtype#1061] +[check_dims] I +dims \ I = +[visit_exp `BINOP`_instr(`I64`_numtype, `AND`_binop_)] [visit_exp (`I64`_numtype, `AND`_binop_)] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `AND`_binop_] [visit_exp ()] -[check_dims] I numtype#1063 -dims \ I = numtype#1063 -[visit_exp `BINOP`_instr{numtype#1063}(`I64`_numtype, `OR`_binop_)] -[visit_exp numtype#1063] -[visit_id numtype#1063] +[check_dims] I +dims \ I = +[visit_exp `BINOP`_instr(`I64`_numtype, `OR`_binop_)] [visit_exp (`I64`_numtype, `OR`_binop_)] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `OR`_binop_] [visit_exp ()] -[check_dims] I numtype#1065 -dims \ I = numtype#1065 -[visit_exp `BINOP`_instr{numtype#1065}(`I64`_numtype, `XOR`_binop_)] -[visit_exp numtype#1065] -[visit_id numtype#1065] +[check_dims] I +dims \ I = +[visit_exp `BINOP`_instr(`I64`_numtype, `XOR`_binop_)] [visit_exp (`I64`_numtype, `XOR`_binop_)] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `XOR`_binop_] [visit_exp ()] -[check_dims] I numtype#1067 -dims \ I = numtype#1067 -[visit_exp `BINOP`_instr{numtype#1067}(`I64`_numtype, `SHL`_binop_)] -[visit_exp numtype#1067] -[visit_id numtype#1067] +[check_dims] I +dims \ I = +[visit_exp `BINOP`_instr(`I64`_numtype, `SHL`_binop_)] [visit_exp (`I64`_numtype, `SHL`_binop_)] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `SHL`_binop_] [visit_exp ()] -[check_dims] I numtype#1069 sx#20065 -dims \ I = numtype#1069, sx#20065 -[visit_exp `BINOP`_instr{numtype#1069}(`I64`_numtype, `SHR`_binop_{sx#20065}(`S`_sx))] -[visit_exp numtype#1069] -[visit_id numtype#1069] -[visit_exp (`I64`_numtype, `SHR`_binop_{sx#20065}(`S`_sx))] +[check_dims] I +dims \ I = +[visit_exp `BINOP`_instr(`I64`_numtype, `SHR`_binop_(`S`_sx))] +[visit_exp (`I64`_numtype, `SHR`_binop_(`S`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `SHR`_binop_{sx#20065}(`S`_sx)] -[visit_exp sx#20065] -[visit_id sx#20065] +[visit_exp `SHR`_binop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I numtype#1071 sx#20159 -dims \ I = numtype#1071, sx#20159 -[visit_exp `BINOP`_instr{numtype#1071}(`I64`_numtype, `SHR`_binop_{sx#20159}(`U`_sx))] -[visit_exp numtype#1071] -[visit_id numtype#1071] -[visit_exp (`I64`_numtype, `SHR`_binop_{sx#20159}(`U`_sx))] +[check_dims] I +dims \ I = +[visit_exp `BINOP`_instr(`I64`_numtype, `SHR`_binop_(`U`_sx))] +[visit_exp (`I64`_numtype, `SHR`_binop_(`U`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `SHR`_binop_{sx#20159}(`U`_sx)] -[visit_exp sx#20159] -[visit_id sx#20159] +[visit_exp `SHR`_binop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I numtype#1073 -dims \ I = numtype#1073 -[visit_exp `BINOP`_instr{numtype#1073}(`I64`_numtype, `ROTL`_binop_)] -[visit_exp numtype#1073] -[visit_id numtype#1073] +[check_dims] I +dims \ I = +[visit_exp `BINOP`_instr(`I64`_numtype, `ROTL`_binop_)] [visit_exp (`I64`_numtype, `ROTL`_binop_)] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `ROTL`_binop_] [visit_exp ()] -[check_dims] I numtype#1075 -dims \ I = numtype#1075 -[visit_exp `BINOP`_instr{numtype#1075}(`I64`_numtype, `ROTR`_binop_)] -[visit_exp numtype#1075] -[visit_id numtype#1075] +[check_dims] I +dims \ I = +[visit_exp `BINOP`_instr(`I64`_numtype, `ROTR`_binop_)] [visit_exp (`I64`_numtype, `ROTR`_binop_)] [visit_exp `I64`_numtype] [visit_exp ()] @@ -98562,71 +77808,57 @@ dims \ I = numtype#1075 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I numtype#1077 -dims \ I = numtype#1077 -[visit_exp `BINOP`_instr{numtype#1077}(`F32`_numtype, `ADD`_binop_)] -[visit_exp numtype#1077] -[visit_id numtype#1077] +[check_dims] I +dims \ I = +[visit_exp `BINOP`_instr(`F32`_numtype, `ADD`_binop_)] [visit_exp (`F32`_numtype, `ADD`_binop_)] [visit_exp `F32`_numtype] [visit_exp ()] [visit_exp `ADD`_binop_] [visit_exp ()] -[check_dims] I numtype#1079 -dims \ I = numtype#1079 -[visit_exp `BINOP`_instr{numtype#1079}(`F32`_numtype, `SUB`_binop_)] -[visit_exp numtype#1079] -[visit_id numtype#1079] +[check_dims] I +dims \ I = +[visit_exp `BINOP`_instr(`F32`_numtype, `SUB`_binop_)] [visit_exp (`F32`_numtype, `SUB`_binop_)] [visit_exp `F32`_numtype] [visit_exp ()] [visit_exp `SUB`_binop_] [visit_exp ()] -[check_dims] I numtype#1081 -dims \ I = numtype#1081 -[visit_exp `BINOP`_instr{numtype#1081}(`F32`_numtype, `MUL`_binop_)] -[visit_exp numtype#1081] -[visit_id numtype#1081] +[check_dims] I +dims \ I = +[visit_exp `BINOP`_instr(`F32`_numtype, `MUL`_binop_)] [visit_exp (`F32`_numtype, `MUL`_binop_)] [visit_exp `F32`_numtype] [visit_exp ()] [visit_exp `MUL`_binop_] [visit_exp ()] -[check_dims] I numtype#1083 -dims \ I = numtype#1083 -[visit_exp `BINOP`_instr{numtype#1083}(`F32`_numtype, `DIV`_binop_)] -[visit_exp numtype#1083] -[visit_id numtype#1083] +[check_dims] I +dims \ I = +[visit_exp `BINOP`_instr(`F32`_numtype, `DIV`_binop_)] [visit_exp (`F32`_numtype, `DIV`_binop_)] [visit_exp `F32`_numtype] [visit_exp ()] [visit_exp `DIV`_binop_] [visit_exp ()] -[check_dims] I numtype#1085 -dims \ I = numtype#1085 -[visit_exp `BINOP`_instr{numtype#1085}(`F32`_numtype, `MIN`_binop_)] -[visit_exp numtype#1085] -[visit_id numtype#1085] +[check_dims] I +dims \ I = +[visit_exp `BINOP`_instr(`F32`_numtype, `MIN`_binop_)] [visit_exp (`F32`_numtype, `MIN`_binop_)] [visit_exp `F32`_numtype] [visit_exp ()] [visit_exp `MIN`_binop_] [visit_exp ()] -[check_dims] I numtype#1087 -dims \ I = numtype#1087 -[visit_exp `BINOP`_instr{numtype#1087}(`F32`_numtype, `MAX`_binop_)] -[visit_exp numtype#1087] -[visit_id numtype#1087] +[check_dims] I +dims \ I = +[visit_exp `BINOP`_instr(`F32`_numtype, `MAX`_binop_)] [visit_exp (`F32`_numtype, `MAX`_binop_)] [visit_exp `F32`_numtype] [visit_exp ()] [visit_exp `MAX`_binop_] [visit_exp ()] -[check_dims] I numtype#1089 -dims \ I = numtype#1089 -[visit_exp `BINOP`_instr{numtype#1089}(`F32`_numtype, `COPYSIGN`_binop_)] -[visit_exp numtype#1089] -[visit_id numtype#1089] +[check_dims] I +dims \ I = +[visit_exp `BINOP`_instr(`F32`_numtype, `COPYSIGN`_binop_)] [visit_exp (`F32`_numtype, `COPYSIGN`_binop_)] [visit_exp `F32`_numtype] [visit_exp ()] @@ -98635,71 +77867,57 @@ dims \ I = numtype#1089 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I numtype#1091 -dims \ I = numtype#1091 -[visit_exp `BINOP`_instr{numtype#1091}(`F64`_numtype, `ADD`_binop_)] -[visit_exp numtype#1091] -[visit_id numtype#1091] +[check_dims] I +dims \ I = +[visit_exp `BINOP`_instr(`F64`_numtype, `ADD`_binop_)] [visit_exp (`F64`_numtype, `ADD`_binop_)] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `ADD`_binop_] [visit_exp ()] -[check_dims] I numtype#1093 -dims \ I = numtype#1093 -[visit_exp `BINOP`_instr{numtype#1093}(`F64`_numtype, `SUB`_binop_)] -[visit_exp numtype#1093] -[visit_id numtype#1093] +[check_dims] I +dims \ I = +[visit_exp `BINOP`_instr(`F64`_numtype, `SUB`_binop_)] [visit_exp (`F64`_numtype, `SUB`_binop_)] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `SUB`_binop_] [visit_exp ()] -[check_dims] I numtype#1095 -dims \ I = numtype#1095 -[visit_exp `BINOP`_instr{numtype#1095}(`F64`_numtype, `MUL`_binop_)] -[visit_exp numtype#1095] -[visit_id numtype#1095] +[check_dims] I +dims \ I = +[visit_exp `BINOP`_instr(`F64`_numtype, `MUL`_binop_)] [visit_exp (`F64`_numtype, `MUL`_binop_)] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `MUL`_binop_] [visit_exp ()] -[check_dims] I numtype#1097 -dims \ I = numtype#1097 -[visit_exp `BINOP`_instr{numtype#1097}(`F64`_numtype, `DIV`_binop_)] -[visit_exp numtype#1097] -[visit_id numtype#1097] +[check_dims] I +dims \ I = +[visit_exp `BINOP`_instr(`F64`_numtype, `DIV`_binop_)] [visit_exp (`F64`_numtype, `DIV`_binop_)] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `DIV`_binop_] [visit_exp ()] -[check_dims] I numtype#1099 -dims \ I = numtype#1099 -[visit_exp `BINOP`_instr{numtype#1099}(`F64`_numtype, `MIN`_binop_)] -[visit_exp numtype#1099] -[visit_id numtype#1099] +[check_dims] I +dims \ I = +[visit_exp `BINOP`_instr(`F64`_numtype, `MIN`_binop_)] [visit_exp (`F64`_numtype, `MIN`_binop_)] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `MIN`_binop_] [visit_exp ()] -[check_dims] I numtype#1101 -dims \ I = numtype#1101 -[visit_exp `BINOP`_instr{numtype#1101}(`F64`_numtype, `MAX`_binop_)] -[visit_exp numtype#1101] -[visit_id numtype#1101] +[check_dims] I +dims \ I = +[visit_exp `BINOP`_instr(`F64`_numtype, `MAX`_binop_)] [visit_exp (`F64`_numtype, `MAX`_binop_)] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `MAX`_binop_] [visit_exp ()] -[check_dims] I numtype#1103 -dims \ I = numtype#1103 -[visit_exp `BINOP`_instr{numtype#1103}(`F64`_numtype, `COPYSIGN`_binop_)] -[visit_exp numtype#1103] -[visit_id numtype#1103] +[check_dims] I +dims \ I = +[visit_exp `BINOP`_instr(`F64`_numtype, `COPYSIGN`_binop_)] [visit_exp (`F64`_numtype, `COPYSIGN`_binop_)] [visit_exp `F64`_numtype] [visit_exp ()] @@ -98708,13 +77926,9 @@ dims \ I = numtype#1103 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I numtype_1#75 numtype_2#75 -dims \ I = numtype_1#75, numtype_2#75 -[visit_exp `CVTOP`_instr{numtype_1#75, numtype_2#75}(`I32`_numtype, `I64`_numtype, `WRAP`_cvtop__)] -[visit_exp numtype_1#75] -[visit_id numtype_1#75] -[visit_exp numtype_2#75] -[visit_id numtype_2#75] +[check_dims] I +dims \ I = +[visit_exp `CVTOP`_instr(`I32`_numtype, `I64`_numtype, `WRAP`_cvtop__)] [visit_exp (`I32`_numtype, `I64`_numtype, `WRAP`_cvtop__)] [visit_exp `I32`_numtype] [visit_exp ()] @@ -98722,343 +77936,231 @@ dims \ I = numtype_1#75, numtype_2#75 [visit_exp ()] [visit_exp `WRAP`_cvtop__] [visit_exp ()] -[check_dims] I numtype_1#77 numtype_2#77 sx#20328 -dims \ I = numtype_1#77, numtype_2#77, sx#20328 -[visit_exp `CVTOP`_instr{numtype_1#77, numtype_2#77}(`I32`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#20328}(`S`_sx))] -[visit_exp numtype_1#77] -[visit_id numtype_1#77] -[visit_exp numtype_2#77] -[visit_id numtype_2#77] -[visit_exp (`I32`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#20328}(`S`_sx))] +[check_dims] I +dims \ I = +[visit_exp `CVTOP`_instr(`I32`_numtype, `F32`_numtype, `TRUNC`_cvtop__(`S`_sx))] +[visit_exp (`I32`_numtype, `F32`_numtype, `TRUNC`_cvtop__(`S`_sx))] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp `F32`_numtype] [visit_exp ()] -[visit_exp `TRUNC`_cvtop__{sx#20328}(`S`_sx)] -[visit_exp sx#20328] -[visit_id sx#20328] +[visit_exp `TRUNC`_cvtop__(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I numtype_1#79 numtype_2#79 sx#20392 -dims \ I = numtype_1#79, numtype_2#79, sx#20392 -[visit_exp `CVTOP`_instr{numtype_1#79, numtype_2#79}(`I32`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#20392}(`U`_sx))] -[visit_exp numtype_1#79] -[visit_id numtype_1#79] -[visit_exp numtype_2#79] -[visit_id numtype_2#79] -[visit_exp (`I32`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#20392}(`U`_sx))] +[check_dims] I +dims \ I = +[visit_exp `CVTOP`_instr(`I32`_numtype, `F32`_numtype, `TRUNC`_cvtop__(`U`_sx))] +[visit_exp (`I32`_numtype, `F32`_numtype, `TRUNC`_cvtop__(`U`_sx))] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp `F32`_numtype] [visit_exp ()] -[visit_exp `TRUNC`_cvtop__{sx#20392}(`U`_sx)] -[visit_exp sx#20392] -[visit_id sx#20392] +[visit_exp `TRUNC`_cvtop__(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I numtype_1#81 numtype_2#81 sx#20456 -dims \ I = numtype_1#81, numtype_2#81, sx#20456 -[visit_exp `CVTOP`_instr{numtype_1#81, numtype_2#81}(`I32`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#20456}(`S`_sx))] -[visit_exp numtype_1#81] -[visit_id numtype_1#81] -[visit_exp numtype_2#81] -[visit_id numtype_2#81] -[visit_exp (`I32`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#20456}(`S`_sx))] +[check_dims] I +dims \ I = +[visit_exp `CVTOP`_instr(`I32`_numtype, `F64`_numtype, `TRUNC`_cvtop__(`S`_sx))] +[visit_exp (`I32`_numtype, `F64`_numtype, `TRUNC`_cvtop__(`S`_sx))] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp `F64`_numtype] [visit_exp ()] -[visit_exp `TRUNC`_cvtop__{sx#20456}(`S`_sx)] -[visit_exp sx#20456] -[visit_id sx#20456] +[visit_exp `TRUNC`_cvtop__(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I numtype_1#83 numtype_2#83 sx#20520 -dims \ I = numtype_1#83, numtype_2#83, sx#20520 -[visit_exp `CVTOP`_instr{numtype_1#83, numtype_2#83}(`I32`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#20520}(`U`_sx))] -[visit_exp numtype_1#83] -[visit_id numtype_1#83] -[visit_exp numtype_2#83] -[visit_id numtype_2#83] -[visit_exp (`I32`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#20520}(`U`_sx))] +[check_dims] I +dims \ I = +[visit_exp `CVTOP`_instr(`I32`_numtype, `F64`_numtype, `TRUNC`_cvtop__(`U`_sx))] +[visit_exp (`I32`_numtype, `F64`_numtype, `TRUNC`_cvtop__(`U`_sx))] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp `F64`_numtype] [visit_exp ()] -[visit_exp `TRUNC`_cvtop__{sx#20520}(`U`_sx)] -[visit_exp sx#20520] -[visit_id sx#20520] +[visit_exp `TRUNC`_cvtop__(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I numtype_1#85 numtype_2#85 sx#20584 -dims \ I = numtype_1#85, numtype_2#85, sx#20584 -[visit_exp `CVTOP`_instr{numtype_1#85, numtype_2#85}(`I32`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#20584}(`S`_sx))] -[visit_exp numtype_1#85] -[visit_id numtype_1#85] -[visit_exp numtype_2#85] -[visit_id numtype_2#85] -[visit_exp (`I32`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#20584}(`S`_sx))] +[check_dims] I +dims \ I = +[visit_exp `CVTOP`_instr(`I32`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__(`S`_sx))] +[visit_exp (`I32`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__(`S`_sx))] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp `F32`_numtype] [visit_exp ()] -[visit_exp `TRUNC_SAT`_cvtop__{sx#20584}(`S`_sx)] -[visit_exp sx#20584] -[visit_id sx#20584] +[visit_exp `TRUNC_SAT`_cvtop__(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I numtype_1#87 numtype_2#87 sx#20648 -dims \ I = numtype_1#87, numtype_2#87, sx#20648 -[visit_exp `CVTOP`_instr{numtype_1#87, numtype_2#87}(`I32`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#20648}(`U`_sx))] -[visit_exp numtype_1#87] -[visit_id numtype_1#87] -[visit_exp numtype_2#87] -[visit_id numtype_2#87] -[visit_exp (`I32`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#20648}(`U`_sx))] +[check_dims] I +dims \ I = +[visit_exp `CVTOP`_instr(`I32`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__(`U`_sx))] +[visit_exp (`I32`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__(`U`_sx))] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp `F32`_numtype] [visit_exp ()] -[visit_exp `TRUNC_SAT`_cvtop__{sx#20648}(`U`_sx)] -[visit_exp sx#20648] -[visit_id sx#20648] +[visit_exp `TRUNC_SAT`_cvtop__(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I numtype_1#89 numtype_2#89 sx#20712 -dims \ I = numtype_1#89, numtype_2#89, sx#20712 -[visit_exp `CVTOP`_instr{numtype_1#89, numtype_2#89}(`I32`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#20712}(`S`_sx))] -[visit_exp numtype_1#89] -[visit_id numtype_1#89] -[visit_exp numtype_2#89] -[visit_id numtype_2#89] -[visit_exp (`I32`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#20712}(`S`_sx))] +[check_dims] I +dims \ I = +[visit_exp `CVTOP`_instr(`I32`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__(`S`_sx))] +[visit_exp (`I32`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__(`S`_sx))] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp `F64`_numtype] [visit_exp ()] -[visit_exp `TRUNC_SAT`_cvtop__{sx#20712}(`S`_sx)] -[visit_exp sx#20712] -[visit_id sx#20712] +[visit_exp `TRUNC_SAT`_cvtop__(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I numtype_1#91 numtype_2#91 sx#20776 -dims \ I = numtype_1#91, numtype_2#91, sx#20776 -[visit_exp `CVTOP`_instr{numtype_1#91, numtype_2#91}(`I32`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#20776}(`U`_sx))] -[visit_exp numtype_1#91] -[visit_id numtype_1#91] -[visit_exp numtype_2#91] -[visit_id numtype_2#91] -[visit_exp (`I32`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#20776}(`U`_sx))] +[check_dims] I +dims \ I = +[visit_exp `CVTOP`_instr(`I32`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__(`U`_sx))] +[visit_exp (`I32`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__(`U`_sx))] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp `F64`_numtype] [visit_exp ()] -[visit_exp `TRUNC_SAT`_cvtop__{sx#20776}(`U`_sx)] -[visit_exp sx#20776] -[visit_id sx#20776] +[visit_exp `TRUNC_SAT`_cvtop__(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I numtype_1#93 numtype_2#93 sx#20810 -dims \ I = numtype_1#93, numtype_2#93, sx#20810 -[visit_exp `CVTOP`_instr{numtype_1#93, numtype_2#93}(`I64`_numtype, `I64`_numtype, `EXTEND`_cvtop__{sx#20810}(`S`_sx))] -[visit_exp numtype_1#93] -[visit_id numtype_1#93] -[visit_exp numtype_2#93] -[visit_id numtype_2#93] -[visit_exp (`I64`_numtype, `I64`_numtype, `EXTEND`_cvtop__{sx#20810}(`S`_sx))] +[check_dims] I +dims \ I = +[visit_exp `CVTOP`_instr(`I64`_numtype, `I64`_numtype, `EXTEND`_cvtop__(`S`_sx))] +[visit_exp (`I64`_numtype, `I64`_numtype, `EXTEND`_cvtop__(`S`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `EXTEND`_cvtop__{sx#20810}(`S`_sx)] -[visit_exp sx#20810] -[visit_id sx#20810] +[visit_exp `EXTEND`_cvtop__(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I numtype_1#95 numtype_2#95 sx#20844 -dims \ I = numtype_1#95, numtype_2#95, sx#20844 -[visit_exp `CVTOP`_instr{numtype_1#95, numtype_2#95}(`I64`_numtype, `I64`_numtype, `EXTEND`_cvtop__{sx#20844}(`U`_sx))] -[visit_exp numtype_1#95] -[visit_id numtype_1#95] -[visit_exp numtype_2#95] -[visit_id numtype_2#95] -[visit_exp (`I64`_numtype, `I64`_numtype, `EXTEND`_cvtop__{sx#20844}(`U`_sx))] +[check_dims] I +dims \ I = +[visit_exp `CVTOP`_instr(`I64`_numtype, `I64`_numtype, `EXTEND`_cvtop__(`U`_sx))] +[visit_exp (`I64`_numtype, `I64`_numtype, `EXTEND`_cvtop__(`U`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `EXTEND`_cvtop__{sx#20844}(`U`_sx)] -[visit_exp sx#20844] -[visit_id sx#20844] +[visit_exp `EXTEND`_cvtop__(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I numtype_1#97 numtype_2#97 sx#20908 -dims \ I = numtype_1#97, numtype_2#97, sx#20908 -[visit_exp `CVTOP`_instr{numtype_1#97, numtype_2#97}(`I64`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#20908}(`S`_sx))] -[visit_exp numtype_1#97] -[visit_id numtype_1#97] -[visit_exp numtype_2#97] -[visit_id numtype_2#97] -[visit_exp (`I64`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#20908}(`S`_sx))] +[check_dims] I +dims \ I = +[visit_exp `CVTOP`_instr(`I64`_numtype, `F32`_numtype, `TRUNC`_cvtop__(`S`_sx))] +[visit_exp (`I64`_numtype, `F32`_numtype, `TRUNC`_cvtop__(`S`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `F32`_numtype] [visit_exp ()] -[visit_exp `TRUNC`_cvtop__{sx#20908}(`S`_sx)] -[visit_exp sx#20908] -[visit_id sx#20908] +[visit_exp `TRUNC`_cvtop__(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I numtype_1#99 numtype_2#99 sx#20972 -dims \ I = numtype_1#99, numtype_2#99, sx#20972 -[visit_exp `CVTOP`_instr{numtype_1#99, numtype_2#99}(`I64`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#20972}(`U`_sx))] -[visit_exp numtype_1#99] -[visit_id numtype_1#99] -[visit_exp numtype_2#99] -[visit_id numtype_2#99] -[visit_exp (`I64`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#20972}(`U`_sx))] +[check_dims] I +dims \ I = +[visit_exp `CVTOP`_instr(`I64`_numtype, `F32`_numtype, `TRUNC`_cvtop__(`U`_sx))] +[visit_exp (`I64`_numtype, `F32`_numtype, `TRUNC`_cvtop__(`U`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `F32`_numtype] [visit_exp ()] -[visit_exp `TRUNC`_cvtop__{sx#20972}(`U`_sx)] -[visit_exp sx#20972] -[visit_id sx#20972] +[visit_exp `TRUNC`_cvtop__(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I numtype_1#101 numtype_2#101 sx#21036 -dims \ I = numtype_1#101, numtype_2#101, sx#21036 -[visit_exp `CVTOP`_instr{numtype_1#101, numtype_2#101}(`I64`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#21036}(`S`_sx))] -[visit_exp numtype_1#101] -[visit_id numtype_1#101] -[visit_exp numtype_2#101] -[visit_id numtype_2#101] -[visit_exp (`I64`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#21036}(`S`_sx))] +[check_dims] I +dims \ I = +[visit_exp `CVTOP`_instr(`I64`_numtype, `F64`_numtype, `TRUNC`_cvtop__(`S`_sx))] +[visit_exp (`I64`_numtype, `F64`_numtype, `TRUNC`_cvtop__(`S`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `F64`_numtype] [visit_exp ()] -[visit_exp `TRUNC`_cvtop__{sx#21036}(`S`_sx)] -[visit_exp sx#21036] -[visit_id sx#21036] +[visit_exp `TRUNC`_cvtop__(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I numtype_1#103 numtype_2#103 sx#21100 -dims \ I = numtype_1#103, numtype_2#103, sx#21100 -[visit_exp `CVTOP`_instr{numtype_1#103, numtype_2#103}(`I64`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#21100}(`U`_sx))] -[visit_exp numtype_1#103] -[visit_id numtype_1#103] -[visit_exp numtype_2#103] -[visit_id numtype_2#103] -[visit_exp (`I64`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#21100}(`U`_sx))] +[check_dims] I +dims \ I = +[visit_exp `CVTOP`_instr(`I64`_numtype, `F64`_numtype, `TRUNC`_cvtop__(`U`_sx))] +[visit_exp (`I64`_numtype, `F64`_numtype, `TRUNC`_cvtop__(`U`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `F64`_numtype] [visit_exp ()] -[visit_exp `TRUNC`_cvtop__{sx#21100}(`U`_sx)] -[visit_exp sx#21100] -[visit_id sx#21100] +[visit_exp `TRUNC`_cvtop__(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I numtype_1#105 numtype_2#105 sx#21164 -dims \ I = numtype_1#105, numtype_2#105, sx#21164 -[visit_exp `CVTOP`_instr{numtype_1#105, numtype_2#105}(`I64`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#21164}(`S`_sx))] -[visit_exp numtype_1#105] -[visit_id numtype_1#105] -[visit_exp numtype_2#105] -[visit_id numtype_2#105] -[visit_exp (`I64`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#21164}(`S`_sx))] +[check_dims] I +dims \ I = +[visit_exp `CVTOP`_instr(`I64`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__(`S`_sx))] +[visit_exp (`I64`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__(`S`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `F32`_numtype] [visit_exp ()] -[visit_exp `TRUNC_SAT`_cvtop__{sx#21164}(`S`_sx)] -[visit_exp sx#21164] -[visit_id sx#21164] +[visit_exp `TRUNC_SAT`_cvtop__(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I numtype_1#107 numtype_2#107 sx#21228 -dims \ I = numtype_1#107, numtype_2#107, sx#21228 -[visit_exp `CVTOP`_instr{numtype_1#107, numtype_2#107}(`I64`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#21228}(`U`_sx))] -[visit_exp numtype_1#107] -[visit_id numtype_1#107] -[visit_exp numtype_2#107] -[visit_id numtype_2#107] -[visit_exp (`I64`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#21228}(`U`_sx))] +[check_dims] I +dims \ I = +[visit_exp `CVTOP`_instr(`I64`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__(`U`_sx))] +[visit_exp (`I64`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__(`U`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `F32`_numtype] [visit_exp ()] -[visit_exp `TRUNC_SAT`_cvtop__{sx#21228}(`U`_sx)] -[visit_exp sx#21228] -[visit_id sx#21228] +[visit_exp `TRUNC_SAT`_cvtop__(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I numtype_1#109 numtype_2#109 sx#21292 -dims \ I = numtype_1#109, numtype_2#109, sx#21292 -[visit_exp `CVTOP`_instr{numtype_1#109, numtype_2#109}(`I64`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#21292}(`S`_sx))] -[visit_exp numtype_1#109] -[visit_id numtype_1#109] -[visit_exp numtype_2#109] -[visit_id numtype_2#109] -[visit_exp (`I64`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#21292}(`S`_sx))] +[check_dims] I +dims \ I = +[visit_exp `CVTOP`_instr(`I64`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__(`S`_sx))] +[visit_exp (`I64`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__(`S`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `F64`_numtype] [visit_exp ()] -[visit_exp `TRUNC_SAT`_cvtop__{sx#21292}(`S`_sx)] -[visit_exp sx#21292] -[visit_id sx#21292] +[visit_exp `TRUNC_SAT`_cvtop__(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I numtype_1#111 numtype_2#111 sx#21356 -dims \ I = numtype_1#111, numtype_2#111, sx#21356 -[visit_exp `CVTOP`_instr{numtype_1#111, numtype_2#111}(`I64`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#21356}(`U`_sx))] -[visit_exp numtype_1#111] -[visit_id numtype_1#111] -[visit_exp numtype_2#111] -[visit_id numtype_2#111] -[visit_exp (`I64`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#21356}(`U`_sx))] +[check_dims] I +dims \ I = +[visit_exp `CVTOP`_instr(`I64`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__(`U`_sx))] +[visit_exp (`I64`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__(`U`_sx))] [visit_exp `I64`_numtype] [visit_exp ()] [visit_exp `F64`_numtype] [visit_exp ()] -[visit_exp `TRUNC_SAT`_cvtop__{sx#21356}(`U`_sx)] -[visit_exp sx#21356] -[visit_id sx#21356] +[visit_exp `TRUNC_SAT`_cvtop__(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I numtype_1#113 numtype_2#113 -dims \ I = numtype_1#113, numtype_2#113 -[visit_exp `CVTOP`_instr{numtype_1#113, numtype_2#113}(`F32`_numtype, `F64`_numtype, `DEMOTE`_cvtop__)] -[visit_exp numtype_1#113] -[visit_id numtype_1#113] -[visit_exp numtype_2#113] -[visit_id numtype_2#113] +[check_dims] I +dims \ I = +[visit_exp `CVTOP`_instr(`F32`_numtype, `F64`_numtype, `DEMOTE`_cvtop__)] [visit_exp (`F32`_numtype, `F64`_numtype, `DEMOTE`_cvtop__)] [visit_exp `F32`_numtype] [visit_exp ()] @@ -99066,88 +78168,60 @@ dims \ I = numtype_1#113, numtype_2#113 [visit_exp ()] [visit_exp `DEMOTE`_cvtop__] [visit_exp ()] -[check_dims] I numtype_1#115 numtype_2#115 sx#21390 -dims \ I = numtype_1#115, numtype_2#115, sx#21390 -[visit_exp `CVTOP`_instr{numtype_1#115, numtype_2#115}(`F32`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#21390}(`S`_sx))] -[visit_exp numtype_1#115] -[visit_id numtype_1#115] -[visit_exp numtype_2#115] -[visit_id numtype_2#115] -[visit_exp (`F32`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#21390}(`S`_sx))] +[check_dims] I +dims \ I = +[visit_exp `CVTOP`_instr(`F32`_numtype, `I32`_numtype, `CONVERT`_cvtop__(`S`_sx))] +[visit_exp (`F32`_numtype, `I32`_numtype, `CONVERT`_cvtop__(`S`_sx))] [visit_exp `F32`_numtype] [visit_exp ()] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `CONVERT`_cvtop__{sx#21390}(`S`_sx)] -[visit_exp sx#21390] -[visit_id sx#21390] +[visit_exp `CONVERT`_cvtop__(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I numtype_1#117 numtype_2#117 sx#21424 -dims \ I = numtype_1#117, numtype_2#117, sx#21424 -[visit_exp `CVTOP`_instr{numtype_1#117, numtype_2#117}(`F32`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#21424}(`U`_sx))] -[visit_exp numtype_1#117] -[visit_id numtype_1#117] -[visit_exp numtype_2#117] -[visit_id numtype_2#117] -[visit_exp (`F32`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#21424}(`U`_sx))] +[check_dims] I +dims \ I = +[visit_exp `CVTOP`_instr(`F32`_numtype, `I32`_numtype, `CONVERT`_cvtop__(`U`_sx))] +[visit_exp (`F32`_numtype, `I32`_numtype, `CONVERT`_cvtop__(`U`_sx))] [visit_exp `F32`_numtype] [visit_exp ()] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `CONVERT`_cvtop__{sx#21424}(`U`_sx)] -[visit_exp sx#21424] -[visit_id sx#21424] +[visit_exp `CONVERT`_cvtop__(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I numtype_1#119 numtype_2#119 sx#21458 -dims \ I = numtype_1#119, numtype_2#119, sx#21458 -[visit_exp `CVTOP`_instr{numtype_1#119, numtype_2#119}(`F32`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#21458}(`S`_sx))] -[visit_exp numtype_1#119] -[visit_id numtype_1#119] -[visit_exp numtype_2#119] -[visit_id numtype_2#119] -[visit_exp (`F32`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#21458}(`S`_sx))] +[check_dims] I +dims \ I = +[visit_exp `CVTOP`_instr(`F32`_numtype, `I64`_numtype, `CONVERT`_cvtop__(`S`_sx))] +[visit_exp (`F32`_numtype, `I64`_numtype, `CONVERT`_cvtop__(`S`_sx))] [visit_exp `F32`_numtype] [visit_exp ()] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `CONVERT`_cvtop__{sx#21458}(`S`_sx)] -[visit_exp sx#21458] -[visit_id sx#21458] +[visit_exp `CONVERT`_cvtop__(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I numtype_1#121 numtype_2#121 sx#21492 -dims \ I = numtype_1#121, numtype_2#121, sx#21492 -[visit_exp `CVTOP`_instr{numtype_1#121, numtype_2#121}(`F32`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#21492}(`U`_sx))] -[visit_exp numtype_1#121] -[visit_id numtype_1#121] -[visit_exp numtype_2#121] -[visit_id numtype_2#121] -[visit_exp (`F32`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#21492}(`U`_sx))] +[check_dims] I +dims \ I = +[visit_exp `CVTOP`_instr(`F32`_numtype, `I64`_numtype, `CONVERT`_cvtop__(`U`_sx))] +[visit_exp (`F32`_numtype, `I64`_numtype, `CONVERT`_cvtop__(`U`_sx))] [visit_exp `F32`_numtype] [visit_exp ()] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `CONVERT`_cvtop__{sx#21492}(`U`_sx)] -[visit_exp sx#21492] -[visit_id sx#21492] +[visit_exp `CONVERT`_cvtop__(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I numtype_1#123 numtype_2#123 -dims \ I = numtype_1#123, numtype_2#123 -[visit_exp `CVTOP`_instr{numtype_1#123, numtype_2#123}(`F64`_numtype, `F32`_numtype, `PROMOTE`_cvtop__)] -[visit_exp numtype_1#123] -[visit_id numtype_1#123] -[visit_exp numtype_2#123] -[visit_id numtype_2#123] +[check_dims] I +dims \ I = +[visit_exp `CVTOP`_instr(`F64`_numtype, `F32`_numtype, `PROMOTE`_cvtop__)] [visit_exp (`F64`_numtype, `F32`_numtype, `PROMOTE`_cvtop__)] [visit_exp `F64`_numtype] [visit_exp ()] @@ -99155,88 +78229,60 @@ dims \ I = numtype_1#123, numtype_2#123 [visit_exp ()] [visit_exp `PROMOTE`_cvtop__] [visit_exp ()] -[check_dims] I numtype_1#125 numtype_2#125 sx#21526 -dims \ I = numtype_1#125, numtype_2#125, sx#21526 -[visit_exp `CVTOP`_instr{numtype_1#125, numtype_2#125}(`F64`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#21526}(`S`_sx))] -[visit_exp numtype_1#125] -[visit_id numtype_1#125] -[visit_exp numtype_2#125] -[visit_id numtype_2#125] -[visit_exp (`F64`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#21526}(`S`_sx))] +[check_dims] I +dims \ I = +[visit_exp `CVTOP`_instr(`F64`_numtype, `I32`_numtype, `CONVERT`_cvtop__(`S`_sx))] +[visit_exp (`F64`_numtype, `I32`_numtype, `CONVERT`_cvtop__(`S`_sx))] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `CONVERT`_cvtop__{sx#21526}(`S`_sx)] -[visit_exp sx#21526] -[visit_id sx#21526] +[visit_exp `CONVERT`_cvtop__(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I numtype_1#127 numtype_2#127 sx#21560 -dims \ I = numtype_1#127, numtype_2#127, sx#21560 -[visit_exp `CVTOP`_instr{numtype_1#127, numtype_2#127}(`F64`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#21560}(`U`_sx))] -[visit_exp numtype_1#127] -[visit_id numtype_1#127] -[visit_exp numtype_2#127] -[visit_id numtype_2#127] -[visit_exp (`F64`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#21560}(`U`_sx))] +[check_dims] I +dims \ I = +[visit_exp `CVTOP`_instr(`F64`_numtype, `I32`_numtype, `CONVERT`_cvtop__(`U`_sx))] +[visit_exp (`F64`_numtype, `I32`_numtype, `CONVERT`_cvtop__(`U`_sx))] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `I32`_numtype] [visit_exp ()] -[visit_exp `CONVERT`_cvtop__{sx#21560}(`U`_sx)] -[visit_exp sx#21560] -[visit_id sx#21560] +[visit_exp `CONVERT`_cvtop__(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I numtype_1#129 numtype_2#129 sx#21594 -dims \ I = numtype_1#129, numtype_2#129, sx#21594 -[visit_exp `CVTOP`_instr{numtype_1#129, numtype_2#129}(`F64`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#21594}(`S`_sx))] -[visit_exp numtype_1#129] -[visit_id numtype_1#129] -[visit_exp numtype_2#129] -[visit_id numtype_2#129] -[visit_exp (`F64`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#21594}(`S`_sx))] +[check_dims] I +dims \ I = +[visit_exp `CVTOP`_instr(`F64`_numtype, `I64`_numtype, `CONVERT`_cvtop__(`S`_sx))] +[visit_exp (`F64`_numtype, `I64`_numtype, `CONVERT`_cvtop__(`S`_sx))] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `CONVERT`_cvtop__{sx#21594}(`S`_sx)] -[visit_exp sx#21594] -[visit_id sx#21594] +[visit_exp `CONVERT`_cvtop__(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I numtype_1#131 numtype_2#131 sx#21628 -dims \ I = numtype_1#131, numtype_2#131, sx#21628 -[visit_exp `CVTOP`_instr{numtype_1#131, numtype_2#131}(`F64`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#21628}(`U`_sx))] -[visit_exp numtype_1#131] -[visit_id numtype_1#131] -[visit_exp numtype_2#131] -[visit_id numtype_2#131] -[visit_exp (`F64`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#21628}(`U`_sx))] +[check_dims] I +dims \ I = +[visit_exp `CVTOP`_instr(`F64`_numtype, `I64`_numtype, `CONVERT`_cvtop__(`U`_sx))] +[visit_exp (`F64`_numtype, `I64`_numtype, `CONVERT`_cvtop__(`U`_sx))] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `I64`_numtype] [visit_exp ()] -[visit_exp `CONVERT`_cvtop__{sx#21628}(`U`_sx)] -[visit_exp sx#21628] -[visit_id sx#21628] +[visit_exp `CONVERT`_cvtop__(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I numtype_1#133 numtype_2#133 -dims \ I = numtype_1#133, numtype_2#133 -[visit_exp `CVTOP`_instr{numtype_1#133, numtype_2#133}(`I32`_numtype, `F32`_numtype, `REINTERPRET`_cvtop__)] -[visit_exp numtype_1#133] -[visit_id numtype_1#133] -[visit_exp numtype_2#133] -[visit_id numtype_2#133] +[check_dims] I +dims \ I = +[visit_exp `CVTOP`_instr(`I32`_numtype, `F32`_numtype, `REINTERPRET`_cvtop__)] [visit_exp (`I32`_numtype, `F32`_numtype, `REINTERPRET`_cvtop__)] [visit_exp `I32`_numtype] [visit_exp ()] @@ -99244,13 +78290,9 @@ dims \ I = numtype_1#133, numtype_2#133 [visit_exp ()] [visit_exp `REINTERPRET`_cvtop__] [visit_exp ()] -[check_dims] I numtype_1#135 numtype_2#135 -dims \ I = numtype_1#135, numtype_2#135 -[visit_exp `CVTOP`_instr{numtype_1#135, numtype_2#135}(`I64`_numtype, `F64`_numtype, `REINTERPRET`_cvtop__)] -[visit_exp numtype_1#135] -[visit_id numtype_1#135] -[visit_exp numtype_2#135] -[visit_id numtype_2#135] +[check_dims] I +dims \ I = +[visit_exp `CVTOP`_instr(`I64`_numtype, `F64`_numtype, `REINTERPRET`_cvtop__)] [visit_exp (`I64`_numtype, `F64`_numtype, `REINTERPRET`_cvtop__)] [visit_exp `I64`_numtype] [visit_exp ()] @@ -99258,13 +78300,9 @@ dims \ I = numtype_1#135, numtype_2#135 [visit_exp ()] [visit_exp `REINTERPRET`_cvtop__] [visit_exp ()] -[check_dims] I numtype_1#137 numtype_2#137 -dims \ I = numtype_1#137, numtype_2#137 -[visit_exp `CVTOP`_instr{numtype_1#137, numtype_2#137}(`F32`_numtype, `I32`_numtype, `REINTERPRET`_cvtop__)] -[visit_exp numtype_1#137] -[visit_id numtype_1#137] -[visit_exp numtype_2#137] -[visit_id numtype_2#137] +[check_dims] I +dims \ I = +[visit_exp `CVTOP`_instr(`F32`_numtype, `I32`_numtype, `REINTERPRET`_cvtop__)] [visit_exp (`F32`_numtype, `I32`_numtype, `REINTERPRET`_cvtop__)] [visit_exp `F32`_numtype] [visit_exp ()] @@ -99272,13 +78310,9 @@ dims \ I = numtype_1#137, numtype_2#137 [visit_exp ()] [visit_exp `REINTERPRET`_cvtop__] [visit_exp ()] -[check_dims] I numtype_1#139 numtype_2#139 -dims \ I = numtype_1#139, numtype_2#139 -[visit_exp `CVTOP`_instr{numtype_1#139, numtype_2#139}(`F64`_numtype, `I64`_numtype, `REINTERPRET`_cvtop__)] -[visit_exp numtype_1#139] -[visit_id numtype_1#139] -[visit_exp numtype_2#139] -[visit_id numtype_2#139] +[check_dims] I +dims \ I = +[visit_exp `CVTOP`_instr(`F64`_numtype, `I64`_numtype, `REINTERPRET`_cvtop__)] [visit_exp (`F64`_numtype, `I64`_numtype, `REINTERPRET`_cvtop__)] [visit_exp `F64`_numtype] [visit_exp ()] @@ -99289,11 +78323,9 @@ dims \ I = numtype_1#139, numtype_2#139 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I c vectype#304 -dims \ I = c, vectype#304 -[visit_exp `VCONST`_instr{vectype#304}(`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(8, c)*{c <- `c*`})))] -[visit_exp vectype#304] -[visit_id vectype#304] +[check_dims] I c +dims \ I = c +[visit_exp `VCONST`_instr(`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(8, c)*{c <- `c*`})))] [visit_exp (`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(8, c)*{c <- `c*`})))] [visit_exp `V128`_vectype] [visit_exp ()] @@ -99321,11 +78353,9 @@ dims \ I = c, vectype#304 [visit_id c*] not free [visit_id c*] no dims [visit_exp 16] -[check_dims] I c vectype#306 -dims \ I = c, vectype#306 -[visit_exp `VCONST`_instr{vectype#306}(`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(16, c)*{c <- `c*`})))] -[visit_exp vectype#306] -[visit_id vectype#306] +[check_dims] I c +dims \ I = c +[visit_exp `VCONST`_instr(`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(16, c)*{c <- `c*`})))] [visit_exp (`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(16, c)*{c <- `c*`})))] [visit_exp `V128`_vectype] [visit_exp ()] @@ -99353,11 +78383,9 @@ dims \ I = c, vectype#306 [visit_id c*] not free [visit_id c*] no dims [visit_exp 8] -[check_dims] I c vectype#308 -dims \ I = c, vectype#308 -[visit_exp `VCONST`_instr{vectype#308}(`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(32, c)*{c <- `c*`})))] -[visit_exp vectype#308] -[visit_id vectype#308] +[check_dims] I c +dims \ I = c +[visit_exp `VCONST`_instr(`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(32, c)*{c <- `c*`})))] [visit_exp (`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(32, c)*{c <- `c*`})))] [visit_exp `V128`_vectype] [visit_exp ()] @@ -99385,11 +78413,9 @@ dims \ I = c, vectype#308 [visit_id c*] not free [visit_id c*] no dims [visit_exp 4] -[check_dims] I c vectype#310 -dims \ I = c, vectype#310 -[visit_exp `VCONST`_instr{vectype#310}(`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(64, c)*{c <- `c*`})))] -[visit_exp vectype#310] -[visit_id vectype#310] +[check_dims] I c +dims \ I = c +[visit_exp `VCONST`_instr(`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(64, c)*{c <- `c*`})))] [visit_exp (`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(64, c)*{c <- `c*`})))] [visit_exp `V128`_vectype] [visit_exp ()] @@ -99417,11 +78443,9 @@ dims \ I = c, vectype#310 [visit_id c*] not free [visit_id c*] no dims [visit_exp 2] -[check_dims] I c vectype#312 -dims \ I = c, vectype#312 -[visit_exp `VCONST`_instr{vectype#312}(`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(32, c)*{c <- `c*`})))] -[visit_exp vectype#312] -[visit_id vectype#312] +[check_dims] I c +dims \ I = c +[visit_exp `VCONST`_instr(`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(32, c)*{c <- `c*`})))] [visit_exp (`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(32, c)*{c <- `c*`})))] [visit_exp `V128`_vectype] [visit_exp ()] @@ -99449,11 +78473,9 @@ dims \ I = c, vectype#312 [visit_id c*] not free [visit_id c*] no dims [visit_exp 4] -[check_dims] I c vectype#314 -dims \ I = c, vectype#314 -[visit_exp `VCONST`_instr{vectype#314}(`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(64, c)*{c <- `c*`})))] -[visit_exp vectype#314] -[visit_id vectype#314] +[check_dims] I c +dims \ I = c +[visit_exp `VCONST`_instr(`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(64, c)*{c <- `c*`})))] [visit_exp (`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(64, c)*{c <- `c*`})))] [visit_exp `V128`_vectype] [visit_exp ()] @@ -99484,35 +78506,17 @@ dims \ I = c, vectype#314 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I bshape#19 dim#22986 i i#103376 i#103380 i#103387 laneidx*#9 lanetype#22986 shape#3961 shape#3972 -dims \ I = bshape#19, dim#22986, i, i#103376, i#103380, i#103387, laneidx*#9, lanetype#22986, shape#3961, shape#3972 -[visit_exp `VSHUFFLE`_instr{bshape#19, `laneidx*#9`, i#103376, shape#3961}(`%`_bshape{shape#3972}(`%X%`_shape{lanetype#22986, dim#22986, i#103380}(`I8`_lanetype, `%`_dim{i#103387}(16))), i*{i <- `i*`})] -[visit_exp bshape#19] -[visit_id bshape#19] -[visit_exp `laneidx*#9`] -[visit_id laneidx*#9] -[visit_exp i#103376] -[visit_id i#103376] -[visit_exp shape#3961] -[visit_id shape#3961] -[visit_exp (`%`_bshape{shape#3972}(`%X%`_shape{lanetype#22986, dim#22986, i#103380}(`I8`_lanetype, `%`_dim{i#103387}(16))), i*{i <- `i*`})] -[visit_exp `%`_bshape{shape#3972}(`%X%`_shape{lanetype#22986, dim#22986, i#103380}(`I8`_lanetype, `%`_dim{i#103387}(16)))] -[visit_exp shape#3972] -[visit_id shape#3972] -[visit_exp (`%X%`_shape{lanetype#22986, dim#22986, i#103380}(`I8`_lanetype, `%`_dim{i#103387}(16)))] -[visit_exp `%X%`_shape{lanetype#22986, dim#22986, i#103380}(`I8`_lanetype, `%`_dim{i#103387}(16))] -[visit_exp lanetype#22986] -[visit_id lanetype#22986] -[visit_exp dim#22986] -[visit_id dim#22986] -[visit_exp i#103380] -[visit_id i#103380] -[visit_exp (`I8`_lanetype, `%`_dim{i#103387}(16))] +[check_dims] I i +dims \ I = i +[visit_exp `VSHUFFLE`_instr(`%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), i*{i <- `i*`})] +[visit_exp (`%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), i*{i <- `i*`})] +[visit_exp `%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#103387}(16)] -[visit_exp i#103387] -[visit_id i#103387] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] [visit_exp i*{i <- `i*`}] @@ -99534,56 +78538,32 @@ dims \ I = bshape#19, dim#22986, i, i#103376, i#103380, i#103387, laneidx*#9, la [visit_id i*] not free [visit_id i*] no dims [visit_exp 16] -[check_dims] I bshape#21 dim#22998 i#103415 i#103422 lanetype#22998 shape#3984 -dims \ I = bshape#21, dim#22998, i#103415, i#103422, lanetype#22998, shape#3984 -[visit_exp `VSWIZZLOP`_instr{bshape#21}(`%`_bshape{shape#3984}(`%X%`_shape{lanetype#22998, dim#22998, i#103415}(`I8`_lanetype, `%`_dim{i#103422}(16))), `SWIZZLE`_vswizzlop_)] -[visit_exp bshape#21] -[visit_id bshape#21] -[visit_exp (`%`_bshape{shape#3984}(`%X%`_shape{lanetype#22998, dim#22998, i#103415}(`I8`_lanetype, `%`_dim{i#103422}(16))), `SWIZZLE`_vswizzlop_)] -[visit_exp `%`_bshape{shape#3984}(`%X%`_shape{lanetype#22998, dim#22998, i#103415}(`I8`_lanetype, `%`_dim{i#103422}(16)))] -[visit_exp shape#3984] -[visit_id shape#3984] -[visit_exp (`%X%`_shape{lanetype#22998, dim#22998, i#103415}(`I8`_lanetype, `%`_dim{i#103422}(16)))] -[visit_exp `%X%`_shape{lanetype#22998, dim#22998, i#103415}(`I8`_lanetype, `%`_dim{i#103422}(16))] -[visit_exp lanetype#22998] -[visit_id lanetype#22998] -[visit_exp dim#22998] -[visit_id dim#22998] -[visit_exp i#103415] -[visit_id i#103415] -[visit_exp (`I8`_lanetype, `%`_dim{i#103422}(16))] +[check_dims] I +dims \ I = +[visit_exp `VSWIZZLOP`_instr(`%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `SWIZZLE`_vswizzlop_)] +[visit_exp (`%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `SWIZZLE`_vswizzlop_)] +[visit_exp `%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#103422}(16)] -[visit_exp i#103422] -[visit_id i#103422] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] [visit_exp `SWIZZLE`_vswizzlop_] [visit_exp ()] -[check_dims] I bshape#23 dim#23055 i#103502 i#103509 lanetype#23055 shape#4011 -dims \ I = bshape#23, dim#23055, i#103502, i#103509, lanetype#23055, shape#4011 -[visit_exp `VSWIZZLOP`_instr{bshape#23}(`%`_bshape{shape#4011}(`%X%`_shape{lanetype#23055, dim#23055, i#103502}(`I8`_lanetype, `%`_dim{i#103509}(16))), `RELAXED_SWIZZLE`_vswizzlop_)] -[visit_exp bshape#23] -[visit_id bshape#23] -[visit_exp (`%`_bshape{shape#4011}(`%X%`_shape{lanetype#23055, dim#23055, i#103502}(`I8`_lanetype, `%`_dim{i#103509}(16))), `RELAXED_SWIZZLE`_vswizzlop_)] -[visit_exp `%`_bshape{shape#4011}(`%X%`_shape{lanetype#23055, dim#23055, i#103502}(`I8`_lanetype, `%`_dim{i#103509}(16)))] -[visit_exp shape#4011] -[visit_id shape#4011] -[visit_exp (`%X%`_shape{lanetype#23055, dim#23055, i#103502}(`I8`_lanetype, `%`_dim{i#103509}(16)))] -[visit_exp `%X%`_shape{lanetype#23055, dim#23055, i#103502}(`I8`_lanetype, `%`_dim{i#103509}(16))] -[visit_exp lanetype#23055] -[visit_id lanetype#23055] -[visit_exp dim#23055] -[visit_id dim#23055] -[visit_exp i#103502] -[visit_id i#103502] -[visit_exp (`I8`_lanetype, `%`_dim{i#103509}(16))] +[check_dims] I +dims \ I = +[visit_exp `VSWIZZLOP`_instr(`%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `RELAXED_SWIZZLE`_vswizzlop_)] +[visit_exp (`%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `RELAXED_SWIZZLE`_vswizzlop_)] +[visit_exp `%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#103509}(16)] -[visit_exp i#103509] -[visit_id i#103509] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] [visit_exp `RELAXED_SWIZZLE`_vswizzlop_] @@ -99591,158 +78571,84 @@ dims \ I = bshape#23, dim#23055, i#103502, i#103509, lanetype#23055, shape#4011 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I dim#23112 i#103589 i#103596 lanetype#23112 shape#4028 -dims \ I = dim#23112, i#103589, i#103596, lanetype#23112, shape#4028 -[visit_exp `VSPLAT`_instr{shape#4028}(`%X%`_shape{lanetype#23112, dim#23112, i#103589}(`I8`_lanetype, `%`_dim{i#103596}(16)))] -[visit_exp shape#4028] -[visit_id shape#4028] -[visit_exp (`%X%`_shape{lanetype#23112, dim#23112, i#103589}(`I8`_lanetype, `%`_dim{i#103596}(16)))] -[visit_exp `%X%`_shape{lanetype#23112, dim#23112, i#103589}(`I8`_lanetype, `%`_dim{i#103596}(16))] -[visit_exp lanetype#23112] -[visit_id lanetype#23112] -[visit_exp dim#23112] -[visit_id dim#23112] -[visit_exp i#103589] -[visit_id i#103589] -[visit_exp (`I8`_lanetype, `%`_dim{i#103596}(16))] +[check_dims] I +dims \ I = +[visit_exp `VSPLAT`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#103596}(16)] -[visit_exp i#103596] -[visit_id i#103596] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[check_dims] I dim#23124 i#103601 i#103608 lanetype#23124 shape#4030 -dims \ I = dim#23124, i#103601, i#103608, lanetype#23124, shape#4030 -[visit_exp `VSPLAT`_instr{shape#4030}(`%X%`_shape{lanetype#23124, dim#23124, i#103601}(`I16`_lanetype, `%`_dim{i#103608}(8)))] -[visit_exp shape#4030] -[visit_id shape#4030] -[visit_exp (`%X%`_shape{lanetype#23124, dim#23124, i#103601}(`I16`_lanetype, `%`_dim{i#103608}(8)))] -[visit_exp `%X%`_shape{lanetype#23124, dim#23124, i#103601}(`I16`_lanetype, `%`_dim{i#103608}(8))] -[visit_exp lanetype#23124] -[visit_id lanetype#23124] -[visit_exp dim#23124] -[visit_id dim#23124] -[visit_exp i#103601] -[visit_id i#103601] -[visit_exp (`I16`_lanetype, `%`_dim{i#103608}(8))] +[check_dims] I +dims \ I = +[visit_exp `VSPLAT`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#103608}(8)] -[visit_exp i#103608] -[visit_id i#103608] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[check_dims] I dim#23136 i#103613 i#103620 lanetype#23136 shape#4032 -dims \ I = dim#23136, i#103613, i#103620, lanetype#23136, shape#4032 -[visit_exp `VSPLAT`_instr{shape#4032}(`%X%`_shape{lanetype#23136, dim#23136, i#103613}(`I32`_lanetype, `%`_dim{i#103620}(4)))] -[visit_exp shape#4032] -[visit_id shape#4032] -[visit_exp (`%X%`_shape{lanetype#23136, dim#23136, i#103613}(`I32`_lanetype, `%`_dim{i#103620}(4)))] -[visit_exp `%X%`_shape{lanetype#23136, dim#23136, i#103613}(`I32`_lanetype, `%`_dim{i#103620}(4))] -[visit_exp lanetype#23136] -[visit_id lanetype#23136] -[visit_exp dim#23136] -[visit_id dim#23136] -[visit_exp i#103613] -[visit_id i#103613] -[visit_exp (`I32`_lanetype, `%`_dim{i#103620}(4))] +[check_dims] I +dims \ I = +[visit_exp `VSPLAT`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#103620}(4)] -[visit_exp i#103620] -[visit_id i#103620] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[check_dims] I dim#23148 i#103625 i#103632 lanetype#23148 shape#4034 -dims \ I = dim#23148, i#103625, i#103632, lanetype#23148, shape#4034 -[visit_exp `VSPLAT`_instr{shape#4034}(`%X%`_shape{lanetype#23148, dim#23148, i#103625}(`I64`_lanetype, `%`_dim{i#103632}(2)))] -[visit_exp shape#4034] -[visit_id shape#4034] -[visit_exp (`%X%`_shape{lanetype#23148, dim#23148, i#103625}(`I64`_lanetype, `%`_dim{i#103632}(2)))] -[visit_exp `%X%`_shape{lanetype#23148, dim#23148, i#103625}(`I64`_lanetype, `%`_dim{i#103632}(2))] -[visit_exp lanetype#23148] -[visit_id lanetype#23148] -[visit_exp dim#23148] -[visit_id dim#23148] -[visit_exp i#103625] -[visit_id i#103625] -[visit_exp (`I64`_lanetype, `%`_dim{i#103632}(2))] +[check_dims] I +dims \ I = +[visit_exp `VSPLAT`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#103632}(2)] -[visit_exp i#103632] -[visit_id i#103632] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[check_dims] I dim#23160 i#103637 i#103644 lanetype#23160 shape#4036 -dims \ I = dim#23160, i#103637, i#103644, lanetype#23160, shape#4036 -[visit_exp `VSPLAT`_instr{shape#4036}(`%X%`_shape{lanetype#23160, dim#23160, i#103637}(`F32`_lanetype, `%`_dim{i#103644}(4)))] -[visit_exp shape#4036] -[visit_id shape#4036] -[visit_exp (`%X%`_shape{lanetype#23160, dim#23160, i#103637}(`F32`_lanetype, `%`_dim{i#103644}(4)))] -[visit_exp `%X%`_shape{lanetype#23160, dim#23160, i#103637}(`F32`_lanetype, `%`_dim{i#103644}(4))] -[visit_exp lanetype#23160] -[visit_id lanetype#23160] -[visit_exp dim#23160] -[visit_id dim#23160] -[visit_exp i#103637] -[visit_id i#103637] -[visit_exp (`F32`_lanetype, `%`_dim{i#103644}(4))] +[check_dims] I +dims \ I = +[visit_exp `VSPLAT`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)))] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)))] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#103644}(4)] -[visit_exp i#103644] -[visit_id i#103644] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[check_dims] I dim#23172 i#103649 i#103656 lanetype#23172 shape#4038 -dims \ I = dim#23172, i#103649, i#103656, lanetype#23172, shape#4038 -[visit_exp `VSPLAT`_instr{shape#4038}(`%X%`_shape{lanetype#23172, dim#23172, i#103649}(`F64`_lanetype, `%`_dim{i#103656}(2)))] -[visit_exp shape#4038] -[visit_id shape#4038] -[visit_exp (`%X%`_shape{lanetype#23172, dim#23172, i#103649}(`F64`_lanetype, `%`_dim{i#103656}(2)))] -[visit_exp `%X%`_shape{lanetype#23172, dim#23172, i#103649}(`F64`_lanetype, `%`_dim{i#103656}(2))] -[visit_exp lanetype#23172] -[visit_id lanetype#23172] -[visit_exp dim#23172] -[visit_id dim#23172] -[visit_exp i#103649] -[visit_id i#103649] -[visit_exp (`F64`_lanetype, `%`_dim{i#103656}(2))] +[check_dims] I +dims \ I = +[visit_exp `VSPLAT`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)))] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)))] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#103656}(2)] -[visit_exp i#103656] -[visit_id i#103656] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I dim#23184 i i#103678 i#103685 laneidx#91 lanetype#23184 shape#4040 sx?#71 -dims \ I = dim#23184, i, i#103678, i#103685, laneidx#91, lanetype#23184, shape#4040, sx?#71 -[visit_exp `VEXTRACT_LANE`_instr{shape#4040, `sx?#71`, laneidx#91}(`%X%`_shape{lanetype#23184, dim#23184, i#103678}(`I8`_lanetype, `%`_dim{i#103685}(16)), ?(`S`_sx), i)] -[visit_exp shape#4040] -[visit_id shape#4040] -[visit_exp `sx?#71`] -[visit_id sx?#71] -[visit_exp laneidx#91] -[visit_id laneidx#91] -[visit_exp (`%X%`_shape{lanetype#23184, dim#23184, i#103678}(`I8`_lanetype, `%`_dim{i#103685}(16)), ?(`S`_sx), i)] -[visit_exp `%X%`_shape{lanetype#23184, dim#23184, i#103678}(`I8`_lanetype, `%`_dim{i#103685}(16))] -[visit_exp lanetype#23184] -[visit_id lanetype#23184] -[visit_exp dim#23184] -[visit_id dim#23184] -[visit_exp i#103678] -[visit_id i#103678] -[visit_exp (`I8`_lanetype, `%`_dim{i#103685}(16))] +[check_dims] I i +dims \ I = i +[visit_exp `VEXTRACT_LANE`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), ?(`S`_sx), i)] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), ?(`S`_sx), i)] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#103685}(16)] -[visit_exp i#103685] -[visit_id i#103685] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] [visit_exp ?(`S`_sx)] @@ -99752,29 +78658,15 @@ dims \ I = dim#23184, i, i#103678, i#103685, laneidx#91, lanetype#23184, shape#4 [visit_id i] [visit_exp i] [visit_id i] not free -[check_dims] I dim#23196 i i#103763 i#103770 laneidx#93 lanetype#23196 shape#4042 sx?#73 -dims \ I = dim#23196, i, i#103763, i#103770, laneidx#93, lanetype#23196, shape#4042, sx?#73 -[visit_exp `VEXTRACT_LANE`_instr{shape#4042, `sx?#73`, laneidx#93}(`%X%`_shape{lanetype#23196, dim#23196, i#103763}(`I8`_lanetype, `%`_dim{i#103770}(16)), ?(`U`_sx), i)] -[visit_exp shape#4042] -[visit_id shape#4042] -[visit_exp `sx?#73`] -[visit_id sx?#73] -[visit_exp laneidx#93] -[visit_id laneidx#93] -[visit_exp (`%X%`_shape{lanetype#23196, dim#23196, i#103763}(`I8`_lanetype, `%`_dim{i#103770}(16)), ?(`U`_sx), i)] -[visit_exp `%X%`_shape{lanetype#23196, dim#23196, i#103763}(`I8`_lanetype, `%`_dim{i#103770}(16))] -[visit_exp lanetype#23196] -[visit_id lanetype#23196] -[visit_exp dim#23196] -[visit_id dim#23196] -[visit_exp i#103763] -[visit_id i#103763] -[visit_exp (`I8`_lanetype, `%`_dim{i#103770}(16))] +[check_dims] I i +dims \ I = i +[visit_exp `VEXTRACT_LANE`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), ?(`U`_sx), i)] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), ?(`U`_sx), i)] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#103770}(16)] -[visit_exp i#103770] -[visit_id i#103770] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] [visit_exp ?(`U`_sx)] @@ -99784,29 +78676,15 @@ dims \ I = dim#23196, i, i#103763, i#103770, laneidx#93, lanetype#23196, shape#4 [visit_id i] [visit_exp i] [visit_id i] not free -[check_dims] I dim#23208 i i#103848 i#103855 laneidx#95 lanetype#23208 shape#4044 sx?#75 -dims \ I = dim#23208, i, i#103848, i#103855, laneidx#95, lanetype#23208, shape#4044, sx?#75 -[visit_exp `VEXTRACT_LANE`_instr{shape#4044, `sx?#75`, laneidx#95}(`%X%`_shape{lanetype#23208, dim#23208, i#103848}(`I16`_lanetype, `%`_dim{i#103855}(8)), ?(`S`_sx), i)] -[visit_exp shape#4044] -[visit_id shape#4044] -[visit_exp `sx?#75`] -[visit_id sx?#75] -[visit_exp laneidx#95] -[visit_id laneidx#95] -[visit_exp (`%X%`_shape{lanetype#23208, dim#23208, i#103848}(`I16`_lanetype, `%`_dim{i#103855}(8)), ?(`S`_sx), i)] -[visit_exp `%X%`_shape{lanetype#23208, dim#23208, i#103848}(`I16`_lanetype, `%`_dim{i#103855}(8))] -[visit_exp lanetype#23208] -[visit_id lanetype#23208] -[visit_exp dim#23208] -[visit_id dim#23208] -[visit_exp i#103848] -[visit_id i#103848] -[visit_exp (`I16`_lanetype, `%`_dim{i#103855}(8))] +[check_dims] I i +dims \ I = i +[visit_exp `VEXTRACT_LANE`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), ?(`S`_sx), i)] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), ?(`S`_sx), i)] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#103855}(8)] -[visit_exp i#103855] -[visit_id i#103855] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] [visit_exp ?(`S`_sx)] @@ -99816,29 +78694,15 @@ dims \ I = dim#23208, i, i#103848, i#103855, laneidx#95, lanetype#23208, shape#4 [visit_id i] [visit_exp i] [visit_id i] not free -[check_dims] I dim#23220 i i#103933 i#103940 laneidx#97 lanetype#23220 shape#4046 sx?#77 -dims \ I = dim#23220, i, i#103933, i#103940, laneidx#97, lanetype#23220, shape#4046, sx?#77 -[visit_exp `VEXTRACT_LANE`_instr{shape#4046, `sx?#77`, laneidx#97}(`%X%`_shape{lanetype#23220, dim#23220, i#103933}(`I16`_lanetype, `%`_dim{i#103940}(8)), ?(`U`_sx), i)] -[visit_exp shape#4046] -[visit_id shape#4046] -[visit_exp `sx?#77`] -[visit_id sx?#77] -[visit_exp laneidx#97] -[visit_id laneidx#97] -[visit_exp (`%X%`_shape{lanetype#23220, dim#23220, i#103933}(`I16`_lanetype, `%`_dim{i#103940}(8)), ?(`U`_sx), i)] -[visit_exp `%X%`_shape{lanetype#23220, dim#23220, i#103933}(`I16`_lanetype, `%`_dim{i#103940}(8))] -[visit_exp lanetype#23220] -[visit_id lanetype#23220] -[visit_exp dim#23220] -[visit_id dim#23220] -[visit_exp i#103933] -[visit_id i#103933] -[visit_exp (`I16`_lanetype, `%`_dim{i#103940}(8))] +[check_dims] I i +dims \ I = i +[visit_exp `VEXTRACT_LANE`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), ?(`U`_sx), i)] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), ?(`U`_sx), i)] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#103940}(8)] -[visit_exp i#103940] -[visit_id i#103940] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] [visit_exp ?(`U`_sx)] @@ -99848,29 +78712,15 @@ dims \ I = dim#23220, i, i#103933, i#103940, laneidx#97, lanetype#23220, shape#4 [visit_id i] [visit_exp i] [visit_id i] not free -[check_dims] I dim#23232 i i#104018 i#104025 laneidx#99 lanetype#23232 shape#4048 sx?#79 -dims \ I = dim#23232, i, i#104018, i#104025, laneidx#99, lanetype#23232, shape#4048, sx?#79 -[visit_exp `VEXTRACT_LANE`_instr{shape#4048, `sx?#79`, laneidx#99}(`%X%`_shape{lanetype#23232, dim#23232, i#104018}(`I32`_lanetype, `%`_dim{i#104025}(4)), ?(), i)] -[visit_exp shape#4048] -[visit_id shape#4048] -[visit_exp `sx?#79`] -[visit_id sx?#79] -[visit_exp laneidx#99] -[visit_id laneidx#99] -[visit_exp (`%X%`_shape{lanetype#23232, dim#23232, i#104018}(`I32`_lanetype, `%`_dim{i#104025}(4)), ?(), i)] -[visit_exp `%X%`_shape{lanetype#23232, dim#23232, i#104018}(`I32`_lanetype, `%`_dim{i#104025}(4))] -[visit_exp lanetype#23232] -[visit_id lanetype#23232] -[visit_exp dim#23232] -[visit_id dim#23232] -[visit_exp i#104018] -[visit_id i#104018] -[visit_exp (`I32`_lanetype, `%`_dim{i#104025}(4))] +[check_dims] I i +dims \ I = i +[visit_exp `VEXTRACT_LANE`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), ?(), i)] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), ?(), i)] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#104025}(4)] -[visit_exp i#104025] -[visit_id i#104025] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp ?()] @@ -99878,29 +78728,15 @@ dims \ I = dim#23232, i, i#104018, i#104025, laneidx#99, lanetype#23232, shape#4 [visit_id i] [visit_exp i] [visit_id i] not free -[check_dims] I dim#23244 i i#104059 i#104066 laneidx#101 lanetype#23244 shape#4050 sx?#81 -dims \ I = dim#23244, i, i#104059, i#104066, laneidx#101, lanetype#23244, shape#4050, sx?#81 -[visit_exp `VEXTRACT_LANE`_instr{shape#4050, `sx?#81`, laneidx#101}(`%X%`_shape{lanetype#23244, dim#23244, i#104059}(`I64`_lanetype, `%`_dim{i#104066}(2)), ?(), i)] -[visit_exp shape#4050] -[visit_id shape#4050] -[visit_exp `sx?#81`] -[visit_id sx?#81] -[visit_exp laneidx#101] -[visit_id laneidx#101] -[visit_exp (`%X%`_shape{lanetype#23244, dim#23244, i#104059}(`I64`_lanetype, `%`_dim{i#104066}(2)), ?(), i)] -[visit_exp `%X%`_shape{lanetype#23244, dim#23244, i#104059}(`I64`_lanetype, `%`_dim{i#104066}(2))] -[visit_exp lanetype#23244] -[visit_id lanetype#23244] -[visit_exp dim#23244] -[visit_id dim#23244] -[visit_exp i#104059] -[visit_id i#104059] -[visit_exp (`I64`_lanetype, `%`_dim{i#104066}(2))] +[check_dims] I i +dims \ I = i +[visit_exp `VEXTRACT_LANE`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), ?(), i)] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), ?(), i)] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#104066}(2)] -[visit_exp i#104066] -[visit_id i#104066] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp ?()] @@ -99908,29 +78744,15 @@ dims \ I = dim#23244, i, i#104059, i#104066, laneidx#101, lanetype#23244, shape# [visit_id i] [visit_exp i] [visit_id i] not free -[check_dims] I dim#23256 i i#104100 i#104107 laneidx#103 lanetype#23256 shape#4052 sx?#83 -dims \ I = dim#23256, i, i#104100, i#104107, laneidx#103, lanetype#23256, shape#4052, sx?#83 -[visit_exp `VEXTRACT_LANE`_instr{shape#4052, `sx?#83`, laneidx#103}(`%X%`_shape{lanetype#23256, dim#23256, i#104100}(`F32`_lanetype, `%`_dim{i#104107}(4)), ?(), i)] -[visit_exp shape#4052] -[visit_id shape#4052] -[visit_exp `sx?#83`] -[visit_id sx?#83] -[visit_exp laneidx#103] -[visit_id laneidx#103] -[visit_exp (`%X%`_shape{lanetype#23256, dim#23256, i#104100}(`F32`_lanetype, `%`_dim{i#104107}(4)), ?(), i)] -[visit_exp `%X%`_shape{lanetype#23256, dim#23256, i#104100}(`F32`_lanetype, `%`_dim{i#104107}(4))] -[visit_exp lanetype#23256] -[visit_id lanetype#23256] -[visit_exp dim#23256] -[visit_id dim#23256] -[visit_exp i#104100] -[visit_id i#104100] -[visit_exp (`F32`_lanetype, `%`_dim{i#104107}(4))] +[check_dims] I i +dims \ I = i +[visit_exp `VEXTRACT_LANE`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), ?(), i)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), ?(), i)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#104107}(4)] -[visit_exp i#104107] -[visit_id i#104107] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp ?()] @@ -99938,29 +78760,15 @@ dims \ I = dim#23256, i, i#104100, i#104107, laneidx#103, lanetype#23256, shape# [visit_id i] [visit_exp i] [visit_id i] not free -[check_dims] I dim#23268 i i#104141 i#104148 laneidx#105 lanetype#23268 shape#4054 sx?#85 -dims \ I = dim#23268, i, i#104141, i#104148, laneidx#105, lanetype#23268, shape#4054, sx?#85 -[visit_exp `VEXTRACT_LANE`_instr{shape#4054, `sx?#85`, laneidx#105}(`%X%`_shape{lanetype#23268, dim#23268, i#104141}(`F64`_lanetype, `%`_dim{i#104148}(2)), ?(), i)] -[visit_exp shape#4054] -[visit_id shape#4054] -[visit_exp `sx?#85`] -[visit_id sx?#85] -[visit_exp laneidx#105] -[visit_id laneidx#105] -[visit_exp (`%X%`_shape{lanetype#23268, dim#23268, i#104141}(`F64`_lanetype, `%`_dim{i#104148}(2)), ?(), i)] -[visit_exp `%X%`_shape{lanetype#23268, dim#23268, i#104141}(`F64`_lanetype, `%`_dim{i#104148}(2))] -[visit_exp lanetype#23268] -[visit_id lanetype#23268] -[visit_exp dim#23268] -[visit_id dim#23268] -[visit_exp i#104141] -[visit_id i#104141] -[visit_exp (`F64`_lanetype, `%`_dim{i#104148}(2))] +[check_dims] I i +dims \ I = i +[visit_exp `VEXTRACT_LANE`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), ?(), i)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), ?(), i)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#104148}(2)] -[visit_exp i#104148] -[visit_id i#104148] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp ?()] @@ -99968,162 +78776,90 @@ dims \ I = dim#23268, i, i#104141, i#104148, laneidx#105, lanetype#23268, shape# [visit_id i] [visit_exp i] [visit_id i] not free -[check_dims] I dim#23280 i i#104182 i#104189 laneidx#107 lanetype#23280 shape#4056 -dims \ I = dim#23280, i, i#104182, i#104189, laneidx#107, lanetype#23280, shape#4056 -[visit_exp `VREPLACE_LANE`_instr{shape#4056, laneidx#107}(`%X%`_shape{lanetype#23280, dim#23280, i#104182}(`I8`_lanetype, `%`_dim{i#104189}(16)), i)] -[visit_exp shape#4056] -[visit_id shape#4056] -[visit_exp laneidx#107] -[visit_id laneidx#107] -[visit_exp (`%X%`_shape{lanetype#23280, dim#23280, i#104182}(`I8`_lanetype, `%`_dim{i#104189}(16)), i)] -[visit_exp `%X%`_shape{lanetype#23280, dim#23280, i#104182}(`I8`_lanetype, `%`_dim{i#104189}(16))] -[visit_exp lanetype#23280] -[visit_id lanetype#23280] -[visit_exp dim#23280] -[visit_id dim#23280] -[visit_exp i#104182] -[visit_id i#104182] -[visit_exp (`I8`_lanetype, `%`_dim{i#104189}(16))] +[check_dims] I i +dims \ I = i +[visit_exp `VREPLACE_LANE`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), i)] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), i)] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#104189}(16)] -[visit_exp i#104189] -[visit_id i#104189] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] [visit_exp i] [visit_id i] [visit_exp i] [visit_id i] not free -[check_dims] I dim#23292 i i#104223 i#104230 laneidx#109 lanetype#23292 shape#4058 -dims \ I = dim#23292, i, i#104223, i#104230, laneidx#109, lanetype#23292, shape#4058 -[visit_exp `VREPLACE_LANE`_instr{shape#4058, laneidx#109}(`%X%`_shape{lanetype#23292, dim#23292, i#104223}(`I16`_lanetype, `%`_dim{i#104230}(8)), i)] -[visit_exp shape#4058] -[visit_id shape#4058] -[visit_exp laneidx#109] -[visit_id laneidx#109] -[visit_exp (`%X%`_shape{lanetype#23292, dim#23292, i#104223}(`I16`_lanetype, `%`_dim{i#104230}(8)), i)] -[visit_exp `%X%`_shape{lanetype#23292, dim#23292, i#104223}(`I16`_lanetype, `%`_dim{i#104230}(8))] -[visit_exp lanetype#23292] -[visit_id lanetype#23292] -[visit_exp dim#23292] -[visit_id dim#23292] -[visit_exp i#104223] -[visit_id i#104223] -[visit_exp (`I16`_lanetype, `%`_dim{i#104230}(8))] +[check_dims] I i +dims \ I = i +[visit_exp `VREPLACE_LANE`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), i)] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), i)] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#104230}(8)] -[visit_exp i#104230] -[visit_id i#104230] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] [visit_exp i] [visit_id i] [visit_exp i] [visit_id i] not free -[check_dims] I dim#23304 i i#104264 i#104271 laneidx#111 lanetype#23304 shape#4060 -dims \ I = dim#23304, i, i#104264, i#104271, laneidx#111, lanetype#23304, shape#4060 -[visit_exp `VREPLACE_LANE`_instr{shape#4060, laneidx#111}(`%X%`_shape{lanetype#23304, dim#23304, i#104264}(`I32`_lanetype, `%`_dim{i#104271}(4)), i)] -[visit_exp shape#4060] -[visit_id shape#4060] -[visit_exp laneidx#111] -[visit_id laneidx#111] -[visit_exp (`%X%`_shape{lanetype#23304, dim#23304, i#104264}(`I32`_lanetype, `%`_dim{i#104271}(4)), i)] -[visit_exp `%X%`_shape{lanetype#23304, dim#23304, i#104264}(`I32`_lanetype, `%`_dim{i#104271}(4))] -[visit_exp lanetype#23304] -[visit_id lanetype#23304] -[visit_exp dim#23304] -[visit_id dim#23304] -[visit_exp i#104264] -[visit_id i#104264] -[visit_exp (`I32`_lanetype, `%`_dim{i#104271}(4))] +[check_dims] I i +dims \ I = i +[visit_exp `VREPLACE_LANE`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), i)] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), i)] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#104271}(4)] -[visit_exp i#104271] -[visit_id i#104271] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp i] [visit_id i] [visit_exp i] [visit_id i] not free -[check_dims] I dim#23316 i i#104305 i#104312 laneidx#113 lanetype#23316 shape#4062 -dims \ I = dim#23316, i, i#104305, i#104312, laneidx#113, lanetype#23316, shape#4062 -[visit_exp `VREPLACE_LANE`_instr{shape#4062, laneidx#113}(`%X%`_shape{lanetype#23316, dim#23316, i#104305}(`I64`_lanetype, `%`_dim{i#104312}(2)), i)] -[visit_exp shape#4062] -[visit_id shape#4062] -[visit_exp laneidx#113] -[visit_id laneidx#113] -[visit_exp (`%X%`_shape{lanetype#23316, dim#23316, i#104305}(`I64`_lanetype, `%`_dim{i#104312}(2)), i)] -[visit_exp `%X%`_shape{lanetype#23316, dim#23316, i#104305}(`I64`_lanetype, `%`_dim{i#104312}(2))] -[visit_exp lanetype#23316] -[visit_id lanetype#23316] -[visit_exp dim#23316] -[visit_id dim#23316] -[visit_exp i#104305] -[visit_id i#104305] -[visit_exp (`I64`_lanetype, `%`_dim{i#104312}(2))] +[check_dims] I i +dims \ I = i +[visit_exp `VREPLACE_LANE`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), i)] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), i)] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#104312}(2)] -[visit_exp i#104312] -[visit_id i#104312] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp i] [visit_id i] [visit_exp i] [visit_id i] not free -[check_dims] I dim#23328 i i#104346 i#104353 laneidx#115 lanetype#23328 shape#4064 -dims \ I = dim#23328, i, i#104346, i#104353, laneidx#115, lanetype#23328, shape#4064 -[visit_exp `VREPLACE_LANE`_instr{shape#4064, laneidx#115}(`%X%`_shape{lanetype#23328, dim#23328, i#104346}(`F32`_lanetype, `%`_dim{i#104353}(4)), i)] -[visit_exp shape#4064] -[visit_id shape#4064] -[visit_exp laneidx#115] -[visit_id laneidx#115] -[visit_exp (`%X%`_shape{lanetype#23328, dim#23328, i#104346}(`F32`_lanetype, `%`_dim{i#104353}(4)), i)] -[visit_exp `%X%`_shape{lanetype#23328, dim#23328, i#104346}(`F32`_lanetype, `%`_dim{i#104353}(4))] -[visit_exp lanetype#23328] -[visit_id lanetype#23328] -[visit_exp dim#23328] -[visit_id dim#23328] -[visit_exp i#104346] -[visit_id i#104346] -[visit_exp (`F32`_lanetype, `%`_dim{i#104353}(4))] +[check_dims] I i +dims \ I = i +[visit_exp `VREPLACE_LANE`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), i)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), i)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#104353}(4)] -[visit_exp i#104353] -[visit_id i#104353] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp i] [visit_id i] [visit_exp i] [visit_id i] not free -[check_dims] I dim#23340 i i#104387 i#104394 laneidx#117 lanetype#23340 shape#4066 -dims \ I = dim#23340, i, i#104387, i#104394, laneidx#117, lanetype#23340, shape#4066 -[visit_exp `VREPLACE_LANE`_instr{shape#4066, laneidx#117}(`%X%`_shape{lanetype#23340, dim#23340, i#104387}(`F64`_lanetype, `%`_dim{i#104394}(2)), i)] -[visit_exp shape#4066] -[visit_id shape#4066] -[visit_exp laneidx#117] -[visit_id laneidx#117] -[visit_exp (`%X%`_shape{lanetype#23340, dim#23340, i#104387}(`F64`_lanetype, `%`_dim{i#104394}(2)), i)] -[visit_exp `%X%`_shape{lanetype#23340, dim#23340, i#104387}(`F64`_lanetype, `%`_dim{i#104394}(2))] -[visit_exp lanetype#23340] -[visit_id lanetype#23340] -[visit_exp dim#23340] -[visit_id dim#23340] -[visit_exp i#104387] -[visit_id i#104387] -[visit_exp (`F64`_lanetype, `%`_dim{i#104394}(2))] +[check_dims] I i +dims \ I = i +[visit_exp `VREPLACE_LANE`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), i)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), i)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#104394}(2)] -[visit_exp i#104394] -[visit_id i#104394] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp i] @@ -100133,13 +78869,9 @@ dims \ I = dim#23340, i, i#104387, i#104394, laneidx#117, lanetype#23340, shape# [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I vectype#316 vvtestop#9 -dims \ I = vectype#316, vvtestop#9 -[visit_exp `VVTESTOP`_instr{vectype#316, vvtestop#9}(`V128`_vectype, `ANY_TRUE`_vvtestop)] -[visit_exp vectype#316] -[visit_id vectype#316] -[visit_exp vvtestop#9] -[visit_id vvtestop#9] +[check_dims] I +dims \ I = +[visit_exp `VVTESTOP`_instr(`V128`_vectype, `ANY_TRUE`_vvtestop)] [visit_exp (`V128`_vectype, `ANY_TRUE`_vvtestop)] [visit_exp `V128`_vectype] [visit_exp ()] @@ -100148,25 +78880,15 @@ dims \ I = vectype#316, vvtestop#9 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I dim#23352 i#104411 i#104418 lanetype#23352 shape#4068 -dims \ I = dim#23352, i#104411, i#104418, lanetype#23352, shape#4068 -[visit_exp `VTESTOP`_instr{shape#4068}(`%X%`_shape{lanetype#23352, dim#23352, i#104411}(`I8`_lanetype, `%`_dim{i#104418}(16)), `ALL_TRUE`_vtestop_)] -[visit_exp shape#4068] -[visit_id shape#4068] -[visit_exp (`%X%`_shape{lanetype#23352, dim#23352, i#104411}(`I8`_lanetype, `%`_dim{i#104418}(16)), `ALL_TRUE`_vtestop_)] -[visit_exp `%X%`_shape{lanetype#23352, dim#23352, i#104411}(`I8`_lanetype, `%`_dim{i#104418}(16))] -[visit_exp lanetype#23352] -[visit_id lanetype#23352] -[visit_exp dim#23352] -[visit_id dim#23352] -[visit_exp i#104411] -[visit_id i#104411] -[visit_exp (`I8`_lanetype, `%`_dim{i#104418}(16))] +[check_dims] I +dims \ I = +[visit_exp `VTESTOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `ALL_TRUE`_vtestop_)] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `ALL_TRUE`_vtestop_)] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#104418}(16)] -[visit_exp i#104418] -[visit_id i#104418] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] [visit_exp `ALL_TRUE`_vtestop_] @@ -100174,25 +78896,15 @@ dims \ I = dim#23352, i#104411, i#104418, lanetype#23352, shape#4068 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I dim#23379 i#104468 i#104475 lanetype#23379 shape#4070 -dims \ I = dim#23379, i#104468, i#104475, lanetype#23379, shape#4070 -[visit_exp `VTESTOP`_instr{shape#4070}(`%X%`_shape{lanetype#23379, dim#23379, i#104468}(`I16`_lanetype, `%`_dim{i#104475}(8)), `ALL_TRUE`_vtestop_)] -[visit_exp shape#4070] -[visit_id shape#4070] -[visit_exp (`%X%`_shape{lanetype#23379, dim#23379, i#104468}(`I16`_lanetype, `%`_dim{i#104475}(8)), `ALL_TRUE`_vtestop_)] -[visit_exp `%X%`_shape{lanetype#23379, dim#23379, i#104468}(`I16`_lanetype, `%`_dim{i#104475}(8))] -[visit_exp lanetype#23379] -[visit_id lanetype#23379] -[visit_exp dim#23379] -[visit_id dim#23379] -[visit_exp i#104468] -[visit_id i#104468] -[visit_exp (`I16`_lanetype, `%`_dim{i#104475}(8))] +[check_dims] I +dims \ I = +[visit_exp `VTESTOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `ALL_TRUE`_vtestop_)] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `ALL_TRUE`_vtestop_)] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#104475}(8)] -[visit_exp i#104475] -[visit_id i#104475] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] [visit_exp `ALL_TRUE`_vtestop_] @@ -100200,25 +78912,15 @@ dims \ I = dim#23379, i#104468, i#104475, lanetype#23379, shape#4070 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I dim#23406 i#104525 i#104532 lanetype#23406 shape#4072 -dims \ I = dim#23406, i#104525, i#104532, lanetype#23406, shape#4072 -[visit_exp `VTESTOP`_instr{shape#4072}(`%X%`_shape{lanetype#23406, dim#23406, i#104525}(`I32`_lanetype, `%`_dim{i#104532}(4)), `ALL_TRUE`_vtestop_)] -[visit_exp shape#4072] -[visit_id shape#4072] -[visit_exp (`%X%`_shape{lanetype#23406, dim#23406, i#104525}(`I32`_lanetype, `%`_dim{i#104532}(4)), `ALL_TRUE`_vtestop_)] -[visit_exp `%X%`_shape{lanetype#23406, dim#23406, i#104525}(`I32`_lanetype, `%`_dim{i#104532}(4))] -[visit_exp lanetype#23406] -[visit_id lanetype#23406] -[visit_exp dim#23406] -[visit_id dim#23406] -[visit_exp i#104525] -[visit_id i#104525] -[visit_exp (`I32`_lanetype, `%`_dim{i#104532}(4))] +[check_dims] I +dims \ I = +[visit_exp `VTESTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `ALL_TRUE`_vtestop_)] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `ALL_TRUE`_vtestop_)] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#104532}(4)] -[visit_exp i#104532] -[visit_id i#104532] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `ALL_TRUE`_vtestop_] @@ -100226,25 +78928,15 @@ dims \ I = dim#23406, i#104525, i#104532, lanetype#23406, shape#4072 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I dim#23433 i#104582 i#104589 lanetype#23433 shape#4074 -dims \ I = dim#23433, i#104582, i#104589, lanetype#23433, shape#4074 -[visit_exp `VTESTOP`_instr{shape#4074}(`%X%`_shape{lanetype#23433, dim#23433, i#104582}(`I64`_lanetype, `%`_dim{i#104589}(2)), `ALL_TRUE`_vtestop_)] -[visit_exp shape#4074] -[visit_id shape#4074] -[visit_exp (`%X%`_shape{lanetype#23433, dim#23433, i#104582}(`I64`_lanetype, `%`_dim{i#104589}(2)), `ALL_TRUE`_vtestop_)] -[visit_exp `%X%`_shape{lanetype#23433, dim#23433, i#104582}(`I64`_lanetype, `%`_dim{i#104589}(2))] -[visit_exp lanetype#23433] -[visit_id lanetype#23433] -[visit_exp dim#23433] -[visit_id dim#23433] -[visit_exp i#104582] -[visit_id i#104582] -[visit_exp (`I64`_lanetype, `%`_dim{i#104589}(2))] +[check_dims] I +dims \ I = +[visit_exp `VTESTOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `ALL_TRUE`_vtestop_)] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `ALL_TRUE`_vtestop_)] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#104589}(2)] -[visit_exp i#104589] -[visit_id i#104589] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `ALL_TRUE`_vtestop_] @@ -100252,1092 +78944,616 @@ dims \ I = dim#23433, i#104582, i#104589, lanetype#23433, shape#4074 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I dim#23460 i#104639 i#104646 lanetype#23460 shape#4076 -dims \ I = dim#23460, i#104639, i#104646, lanetype#23460, shape#4076 -[visit_exp `VRELOP`_instr{shape#4076}(`%X%`_shape{lanetype#23460, dim#23460, i#104639}(`I8`_lanetype, `%`_dim{i#104646}(16)), `EQ`_vrelop_)] -[visit_exp shape#4076] -[visit_id shape#4076] -[visit_exp (`%X%`_shape{lanetype#23460, dim#23460, i#104639}(`I8`_lanetype, `%`_dim{i#104646}(16)), `EQ`_vrelop_)] -[visit_exp `%X%`_shape{lanetype#23460, dim#23460, i#104639}(`I8`_lanetype, `%`_dim{i#104646}(16))] -[visit_exp lanetype#23460] -[visit_id lanetype#23460] -[visit_exp dim#23460] -[visit_id dim#23460] -[visit_exp i#104639] -[visit_id i#104639] -[visit_exp (`I8`_lanetype, `%`_dim{i#104646}(16))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `EQ`_vrelop_)] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `EQ`_vrelop_)] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#104646}(16)] -[visit_exp i#104646] -[visit_id i#104646] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] [visit_exp `EQ`_vrelop_] [visit_exp ()] -[check_dims] I dim#23487 i#104696 i#104703 lanetype#23487 shape#4078 -dims \ I = dim#23487, i#104696, i#104703, lanetype#23487, shape#4078 -[visit_exp `VRELOP`_instr{shape#4078}(`%X%`_shape{lanetype#23487, dim#23487, i#104696}(`I8`_lanetype, `%`_dim{i#104703}(16)), `NE`_vrelop_)] -[visit_exp shape#4078] -[visit_id shape#4078] -[visit_exp (`%X%`_shape{lanetype#23487, dim#23487, i#104696}(`I8`_lanetype, `%`_dim{i#104703}(16)), `NE`_vrelop_)] -[visit_exp `%X%`_shape{lanetype#23487, dim#23487, i#104696}(`I8`_lanetype, `%`_dim{i#104703}(16))] -[visit_exp lanetype#23487] -[visit_id lanetype#23487] -[visit_exp dim#23487] -[visit_id dim#23487] -[visit_exp i#104696] -[visit_id i#104696] -[visit_exp (`I8`_lanetype, `%`_dim{i#104703}(16))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `NE`_vrelop_)] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `NE`_vrelop_)] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#104703}(16)] -[visit_exp i#104703] -[visit_id i#104703] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] [visit_exp `NE`_vrelop_] [visit_exp ()] -[check_dims] I dim#23514 i#104753 i#104760 lanetype#23514 shape#4080 sx#21962 -dims \ I = dim#23514, i#104753, i#104760, lanetype#23514, shape#4080, sx#21962 -[visit_exp `VRELOP`_instr{shape#4080}(`%X%`_shape{lanetype#23514, dim#23514, i#104753}(`I8`_lanetype, `%`_dim{i#104760}(16)), `LT`_vrelop_{sx#21962}(`S`_sx))] -[visit_exp shape#4080] -[visit_id shape#4080] -[visit_exp (`%X%`_shape{lanetype#23514, dim#23514, i#104753}(`I8`_lanetype, `%`_dim{i#104760}(16)), `LT`_vrelop_{sx#21962}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#23514, dim#23514, i#104753}(`I8`_lanetype, `%`_dim{i#104760}(16))] -[visit_exp lanetype#23514] -[visit_id lanetype#23514] -[visit_exp dim#23514] -[visit_id dim#23514] -[visit_exp i#104753] -[visit_id i#104753] -[visit_exp (`I8`_lanetype, `%`_dim{i#104760}(16))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `LT`_vrelop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `LT`_vrelop_(`S`_sx))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#104760}(16)] -[visit_exp i#104760] -[visit_id i#104760] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `LT`_vrelop_{sx#21962}(`S`_sx)] -[visit_exp sx#21962] -[visit_id sx#21962] +[visit_exp `LT`_vrelop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I dim#23556 i#104855 i#104862 lanetype#23556 shape#4082 sx#22086 -dims \ I = dim#23556, i#104855, i#104862, lanetype#23556, shape#4082, sx#22086 -[visit_exp `VRELOP`_instr{shape#4082}(`%X%`_shape{lanetype#23556, dim#23556, i#104855}(`I8`_lanetype, `%`_dim{i#104862}(16)), `LT`_vrelop_{sx#22086}(`U`_sx))] -[visit_exp shape#4082] -[visit_id shape#4082] -[visit_exp (`%X%`_shape{lanetype#23556, dim#23556, i#104855}(`I8`_lanetype, `%`_dim{i#104862}(16)), `LT`_vrelop_{sx#22086}(`U`_sx))] -[visit_exp `%X%`_shape{lanetype#23556, dim#23556, i#104855}(`I8`_lanetype, `%`_dim{i#104862}(16))] -[visit_exp lanetype#23556] -[visit_id lanetype#23556] -[visit_exp dim#23556] -[visit_id dim#23556] -[visit_exp i#104855] -[visit_id i#104855] -[visit_exp (`I8`_lanetype, `%`_dim{i#104862}(16))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `LT`_vrelop_(`U`_sx))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `LT`_vrelop_(`U`_sx))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#104862}(16)] -[visit_exp i#104862] -[visit_id i#104862] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `LT`_vrelop_{sx#22086}(`U`_sx)] -[visit_exp sx#22086] -[visit_id sx#22086] +[visit_exp `LT`_vrelop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I dim#23598 i#104957 i#104964 lanetype#23598 shape#4084 sx#22210 -dims \ I = dim#23598, i#104957, i#104964, lanetype#23598, shape#4084, sx#22210 -[visit_exp `VRELOP`_instr{shape#4084}(`%X%`_shape{lanetype#23598, dim#23598, i#104957}(`I8`_lanetype, `%`_dim{i#104964}(16)), `GT`_vrelop_{sx#22210}(`S`_sx))] -[visit_exp shape#4084] -[visit_id shape#4084] -[visit_exp (`%X%`_shape{lanetype#23598, dim#23598, i#104957}(`I8`_lanetype, `%`_dim{i#104964}(16)), `GT`_vrelop_{sx#22210}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#23598, dim#23598, i#104957}(`I8`_lanetype, `%`_dim{i#104964}(16))] -[visit_exp lanetype#23598] -[visit_id lanetype#23598] -[visit_exp dim#23598] -[visit_id dim#23598] -[visit_exp i#104957] -[visit_id i#104957] -[visit_exp (`I8`_lanetype, `%`_dim{i#104964}(16))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `GT`_vrelop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `GT`_vrelop_(`S`_sx))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#104964}(16)] -[visit_exp i#104964] -[visit_id i#104964] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `GT`_vrelop_{sx#22210}(`S`_sx)] -[visit_exp sx#22210] -[visit_id sx#22210] +[visit_exp `GT`_vrelop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I dim#23640 i#105059 i#105066 lanetype#23640 shape#4086 sx#22334 -dims \ I = dim#23640, i#105059, i#105066, lanetype#23640, shape#4086, sx#22334 -[visit_exp `VRELOP`_instr{shape#4086}(`%X%`_shape{lanetype#23640, dim#23640, i#105059}(`I8`_lanetype, `%`_dim{i#105066}(16)), `GT`_vrelop_{sx#22334}(`U`_sx))] -[visit_exp shape#4086] -[visit_id shape#4086] -[visit_exp (`%X%`_shape{lanetype#23640, dim#23640, i#105059}(`I8`_lanetype, `%`_dim{i#105066}(16)), `GT`_vrelop_{sx#22334}(`U`_sx))] -[visit_exp `%X%`_shape{lanetype#23640, dim#23640, i#105059}(`I8`_lanetype, `%`_dim{i#105066}(16))] -[visit_exp lanetype#23640] -[visit_id lanetype#23640] -[visit_exp dim#23640] -[visit_id dim#23640] -[visit_exp i#105059] -[visit_id i#105059] -[visit_exp (`I8`_lanetype, `%`_dim{i#105066}(16))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `GT`_vrelop_(`U`_sx))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `GT`_vrelop_(`U`_sx))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#105066}(16)] -[visit_exp i#105066] -[visit_id i#105066] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `GT`_vrelop_{sx#22334}(`U`_sx)] -[visit_exp sx#22334] -[visit_id sx#22334] +[visit_exp `GT`_vrelop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I dim#23682 i#105161 i#105168 lanetype#23682 shape#4088 sx#22458 -dims \ I = dim#23682, i#105161, i#105168, lanetype#23682, shape#4088, sx#22458 -[visit_exp `VRELOP`_instr{shape#4088}(`%X%`_shape{lanetype#23682, dim#23682, i#105161}(`I8`_lanetype, `%`_dim{i#105168}(16)), `LE`_vrelop_{sx#22458}(`S`_sx))] -[visit_exp shape#4088] -[visit_id shape#4088] -[visit_exp (`%X%`_shape{lanetype#23682, dim#23682, i#105161}(`I8`_lanetype, `%`_dim{i#105168}(16)), `LE`_vrelop_{sx#22458}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#23682, dim#23682, i#105161}(`I8`_lanetype, `%`_dim{i#105168}(16))] -[visit_exp lanetype#23682] -[visit_id lanetype#23682] -[visit_exp dim#23682] -[visit_id dim#23682] -[visit_exp i#105161] -[visit_id i#105161] -[visit_exp (`I8`_lanetype, `%`_dim{i#105168}(16))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `LE`_vrelop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `LE`_vrelop_(`S`_sx))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#105168}(16)] -[visit_exp i#105168] -[visit_id i#105168] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `LE`_vrelop_{sx#22458}(`S`_sx)] -[visit_exp sx#22458] -[visit_id sx#22458] +[visit_exp `LE`_vrelop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I dim#23724 i#105263 i#105270 lanetype#23724 shape#4090 sx#22582 -dims \ I = dim#23724, i#105263, i#105270, lanetype#23724, shape#4090, sx#22582 -[visit_exp `VRELOP`_instr{shape#4090}(`%X%`_shape{lanetype#23724, dim#23724, i#105263}(`I8`_lanetype, `%`_dim{i#105270}(16)), `LE`_vrelop_{sx#22582}(`U`_sx))] -[visit_exp shape#4090] -[visit_id shape#4090] -[visit_exp (`%X%`_shape{lanetype#23724, dim#23724, i#105263}(`I8`_lanetype, `%`_dim{i#105270}(16)), `LE`_vrelop_{sx#22582}(`U`_sx))] -[visit_exp `%X%`_shape{lanetype#23724, dim#23724, i#105263}(`I8`_lanetype, `%`_dim{i#105270}(16))] -[visit_exp lanetype#23724] -[visit_id lanetype#23724] -[visit_exp dim#23724] -[visit_id dim#23724] -[visit_exp i#105263] -[visit_id i#105263] -[visit_exp (`I8`_lanetype, `%`_dim{i#105270}(16))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `LE`_vrelop_(`U`_sx))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `LE`_vrelop_(`U`_sx))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#105270}(16)] -[visit_exp i#105270] -[visit_id i#105270] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `LE`_vrelop_{sx#22582}(`U`_sx)] -[visit_exp sx#22582] -[visit_id sx#22582] +[visit_exp `LE`_vrelop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I dim#23766 i#105365 i#105372 lanetype#23766 shape#4092 sx#22706 -dims \ I = dim#23766, i#105365, i#105372, lanetype#23766, shape#4092, sx#22706 -[visit_exp `VRELOP`_instr{shape#4092}(`%X%`_shape{lanetype#23766, dim#23766, i#105365}(`I8`_lanetype, `%`_dim{i#105372}(16)), `GE`_vrelop_{sx#22706}(`S`_sx))] -[visit_exp shape#4092] -[visit_id shape#4092] -[visit_exp (`%X%`_shape{lanetype#23766, dim#23766, i#105365}(`I8`_lanetype, `%`_dim{i#105372}(16)), `GE`_vrelop_{sx#22706}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#23766, dim#23766, i#105365}(`I8`_lanetype, `%`_dim{i#105372}(16))] -[visit_exp lanetype#23766] -[visit_id lanetype#23766] -[visit_exp dim#23766] -[visit_id dim#23766] -[visit_exp i#105365] -[visit_id i#105365] -[visit_exp (`I8`_lanetype, `%`_dim{i#105372}(16))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `GE`_vrelop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `GE`_vrelop_(`S`_sx))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#105372}(16)] -[visit_exp i#105372] -[visit_id i#105372] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `GE`_vrelop_{sx#22706}(`S`_sx)] -[visit_exp sx#22706] -[visit_id sx#22706] +[visit_exp `GE`_vrelop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I dim#23808 i#105467 i#105474 lanetype#23808 shape#4094 sx#22830 -dims \ I = dim#23808, i#105467, i#105474, lanetype#23808, shape#4094, sx#22830 -[visit_exp `VRELOP`_instr{shape#4094}(`%X%`_shape{lanetype#23808, dim#23808, i#105467}(`I8`_lanetype, `%`_dim{i#105474}(16)), `GE`_vrelop_{sx#22830}(`U`_sx))] -[visit_exp shape#4094] -[visit_id shape#4094] -[visit_exp (`%X%`_shape{lanetype#23808, dim#23808, i#105467}(`I8`_lanetype, `%`_dim{i#105474}(16)), `GE`_vrelop_{sx#22830}(`U`_sx))] -[visit_exp `%X%`_shape{lanetype#23808, dim#23808, i#105467}(`I8`_lanetype, `%`_dim{i#105474}(16))] -[visit_exp lanetype#23808] -[visit_id lanetype#23808] -[visit_exp dim#23808] -[visit_id dim#23808] -[visit_exp i#105467] -[visit_id i#105467] -[visit_exp (`I8`_lanetype, `%`_dim{i#105474}(16))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `GE`_vrelop_(`U`_sx))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `GE`_vrelop_(`U`_sx))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#105474}(16)] -[visit_exp i#105474] -[visit_id i#105474] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `GE`_vrelop_{sx#22830}(`U`_sx)] -[visit_exp sx#22830] -[visit_id sx#22830] +[visit_exp `GE`_vrelop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I dim#23850 i#105569 i#105576 lanetype#23850 shape#4096 -dims \ I = dim#23850, i#105569, i#105576, lanetype#23850, shape#4096 -[visit_exp `VRELOP`_instr{shape#4096}(`%X%`_shape{lanetype#23850, dim#23850, i#105569}(`I16`_lanetype, `%`_dim{i#105576}(8)), `EQ`_vrelop_)] -[visit_exp shape#4096] -[visit_id shape#4096] -[visit_exp (`%X%`_shape{lanetype#23850, dim#23850, i#105569}(`I16`_lanetype, `%`_dim{i#105576}(8)), `EQ`_vrelop_)] -[visit_exp `%X%`_shape{lanetype#23850, dim#23850, i#105569}(`I16`_lanetype, `%`_dim{i#105576}(8))] -[visit_exp lanetype#23850] -[visit_id lanetype#23850] -[visit_exp dim#23850] -[visit_id dim#23850] -[visit_exp i#105569] -[visit_id i#105569] -[visit_exp (`I16`_lanetype, `%`_dim{i#105576}(8))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `EQ`_vrelop_)] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `EQ`_vrelop_)] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#105576}(8)] -[visit_exp i#105576] -[visit_id i#105576] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] [visit_exp `EQ`_vrelop_] [visit_exp ()] -[check_dims] I dim#23877 i#105626 i#105633 lanetype#23877 shape#4098 -dims \ I = dim#23877, i#105626, i#105633, lanetype#23877, shape#4098 -[visit_exp `VRELOP`_instr{shape#4098}(`%X%`_shape{lanetype#23877, dim#23877, i#105626}(`I16`_lanetype, `%`_dim{i#105633}(8)), `NE`_vrelop_)] -[visit_exp shape#4098] -[visit_id shape#4098] -[visit_exp (`%X%`_shape{lanetype#23877, dim#23877, i#105626}(`I16`_lanetype, `%`_dim{i#105633}(8)), `NE`_vrelop_)] -[visit_exp `%X%`_shape{lanetype#23877, dim#23877, i#105626}(`I16`_lanetype, `%`_dim{i#105633}(8))] -[visit_exp lanetype#23877] -[visit_id lanetype#23877] -[visit_exp dim#23877] -[visit_id dim#23877] -[visit_exp i#105626] -[visit_id i#105626] -[visit_exp (`I16`_lanetype, `%`_dim{i#105633}(8))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `NE`_vrelop_)] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `NE`_vrelop_)] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#105633}(8)] -[visit_exp i#105633] -[visit_id i#105633] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] [visit_exp `NE`_vrelop_] [visit_exp ()] -[check_dims] I dim#23904 i#105683 i#105690 lanetype#23904 shape#4100 sx#23074 -dims \ I = dim#23904, i#105683, i#105690, lanetype#23904, shape#4100, sx#23074 -[visit_exp `VRELOP`_instr{shape#4100}(`%X%`_shape{lanetype#23904, dim#23904, i#105683}(`I16`_lanetype, `%`_dim{i#105690}(8)), `LT`_vrelop_{sx#23074}(`S`_sx))] -[visit_exp shape#4100] -[visit_id shape#4100] -[visit_exp (`%X%`_shape{lanetype#23904, dim#23904, i#105683}(`I16`_lanetype, `%`_dim{i#105690}(8)), `LT`_vrelop_{sx#23074}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#23904, dim#23904, i#105683}(`I16`_lanetype, `%`_dim{i#105690}(8))] -[visit_exp lanetype#23904] -[visit_id lanetype#23904] -[visit_exp dim#23904] -[visit_id dim#23904] -[visit_exp i#105683] -[visit_id i#105683] -[visit_exp (`I16`_lanetype, `%`_dim{i#105690}(8))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `LT`_vrelop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `LT`_vrelop_(`S`_sx))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#105690}(8)] -[visit_exp i#105690] -[visit_id i#105690] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `LT`_vrelop_{sx#23074}(`S`_sx)] -[visit_exp sx#23074] -[visit_id sx#23074] +[visit_exp `LT`_vrelop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I dim#23946 i#105785 i#105792 lanetype#23946 shape#4102 sx#23198 -dims \ I = dim#23946, i#105785, i#105792, lanetype#23946, shape#4102, sx#23198 -[visit_exp `VRELOP`_instr{shape#4102}(`%X%`_shape{lanetype#23946, dim#23946, i#105785}(`I16`_lanetype, `%`_dim{i#105792}(8)), `LT`_vrelop_{sx#23198}(`U`_sx))] -[visit_exp shape#4102] -[visit_id shape#4102] -[visit_exp (`%X%`_shape{lanetype#23946, dim#23946, i#105785}(`I16`_lanetype, `%`_dim{i#105792}(8)), `LT`_vrelop_{sx#23198}(`U`_sx))] -[visit_exp `%X%`_shape{lanetype#23946, dim#23946, i#105785}(`I16`_lanetype, `%`_dim{i#105792}(8))] -[visit_exp lanetype#23946] -[visit_id lanetype#23946] -[visit_exp dim#23946] -[visit_id dim#23946] -[visit_exp i#105785] -[visit_id i#105785] -[visit_exp (`I16`_lanetype, `%`_dim{i#105792}(8))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `LT`_vrelop_(`U`_sx))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `LT`_vrelop_(`U`_sx))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#105792}(8)] -[visit_exp i#105792] -[visit_id i#105792] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `LT`_vrelop_{sx#23198}(`U`_sx)] -[visit_exp sx#23198] -[visit_id sx#23198] +[visit_exp `LT`_vrelop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I dim#23988 i#105887 i#105894 lanetype#23988 shape#4104 sx#23322 -dims \ I = dim#23988, i#105887, i#105894, lanetype#23988, shape#4104, sx#23322 -[visit_exp `VRELOP`_instr{shape#4104}(`%X%`_shape{lanetype#23988, dim#23988, i#105887}(`I16`_lanetype, `%`_dim{i#105894}(8)), `GT`_vrelop_{sx#23322}(`S`_sx))] -[visit_exp shape#4104] -[visit_id shape#4104] -[visit_exp (`%X%`_shape{lanetype#23988, dim#23988, i#105887}(`I16`_lanetype, `%`_dim{i#105894}(8)), `GT`_vrelop_{sx#23322}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#23988, dim#23988, i#105887}(`I16`_lanetype, `%`_dim{i#105894}(8))] -[visit_exp lanetype#23988] -[visit_id lanetype#23988] -[visit_exp dim#23988] -[visit_id dim#23988] -[visit_exp i#105887] -[visit_id i#105887] -[visit_exp (`I16`_lanetype, `%`_dim{i#105894}(8))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `GT`_vrelop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `GT`_vrelop_(`S`_sx))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#105894}(8)] -[visit_exp i#105894] -[visit_id i#105894] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `GT`_vrelop_{sx#23322}(`S`_sx)] -[visit_exp sx#23322] -[visit_id sx#23322] +[visit_exp `GT`_vrelop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I dim#24030 i#105989 i#105996 lanetype#24030 shape#4106 sx#23446 -dims \ I = dim#24030, i#105989, i#105996, lanetype#24030, shape#4106, sx#23446 -[visit_exp `VRELOP`_instr{shape#4106}(`%X%`_shape{lanetype#24030, dim#24030, i#105989}(`I16`_lanetype, `%`_dim{i#105996}(8)), `GT`_vrelop_{sx#23446}(`U`_sx))] -[visit_exp shape#4106] -[visit_id shape#4106] -[visit_exp (`%X%`_shape{lanetype#24030, dim#24030, i#105989}(`I16`_lanetype, `%`_dim{i#105996}(8)), `GT`_vrelop_{sx#23446}(`U`_sx))] -[visit_exp `%X%`_shape{lanetype#24030, dim#24030, i#105989}(`I16`_lanetype, `%`_dim{i#105996}(8))] -[visit_exp lanetype#24030] -[visit_id lanetype#24030] -[visit_exp dim#24030] -[visit_id dim#24030] -[visit_exp i#105989] -[visit_id i#105989] -[visit_exp (`I16`_lanetype, `%`_dim{i#105996}(8))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `GT`_vrelop_(`U`_sx))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `GT`_vrelop_(`U`_sx))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#105996}(8)] -[visit_exp i#105996] -[visit_id i#105996] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `GT`_vrelop_{sx#23446}(`U`_sx)] -[visit_exp sx#23446] -[visit_id sx#23446] +[visit_exp `GT`_vrelop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I dim#24072 i#106091 i#106098 lanetype#24072 shape#4108 sx#23570 -dims \ I = dim#24072, i#106091, i#106098, lanetype#24072, shape#4108, sx#23570 -[visit_exp `VRELOP`_instr{shape#4108}(`%X%`_shape{lanetype#24072, dim#24072, i#106091}(`I16`_lanetype, `%`_dim{i#106098}(8)), `LE`_vrelop_{sx#23570}(`S`_sx))] -[visit_exp shape#4108] -[visit_id shape#4108] -[visit_exp (`%X%`_shape{lanetype#24072, dim#24072, i#106091}(`I16`_lanetype, `%`_dim{i#106098}(8)), `LE`_vrelop_{sx#23570}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#24072, dim#24072, i#106091}(`I16`_lanetype, `%`_dim{i#106098}(8))] -[visit_exp lanetype#24072] -[visit_id lanetype#24072] -[visit_exp dim#24072] -[visit_id dim#24072] -[visit_exp i#106091] -[visit_id i#106091] -[visit_exp (`I16`_lanetype, `%`_dim{i#106098}(8))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `LE`_vrelop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `LE`_vrelop_(`S`_sx))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#106098}(8)] -[visit_exp i#106098] -[visit_id i#106098] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `LE`_vrelop_{sx#23570}(`S`_sx)] -[visit_exp sx#23570] -[visit_id sx#23570] +[visit_exp `LE`_vrelop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I dim#24114 i#106193 i#106200 lanetype#24114 shape#4110 sx#23694 -dims \ I = dim#24114, i#106193, i#106200, lanetype#24114, shape#4110, sx#23694 -[visit_exp `VRELOP`_instr{shape#4110}(`%X%`_shape{lanetype#24114, dim#24114, i#106193}(`I16`_lanetype, `%`_dim{i#106200}(8)), `LE`_vrelop_{sx#23694}(`U`_sx))] -[visit_exp shape#4110] -[visit_id shape#4110] -[visit_exp (`%X%`_shape{lanetype#24114, dim#24114, i#106193}(`I16`_lanetype, `%`_dim{i#106200}(8)), `LE`_vrelop_{sx#23694}(`U`_sx))] -[visit_exp `%X%`_shape{lanetype#24114, dim#24114, i#106193}(`I16`_lanetype, `%`_dim{i#106200}(8))] -[visit_exp lanetype#24114] -[visit_id lanetype#24114] -[visit_exp dim#24114] -[visit_id dim#24114] -[visit_exp i#106193] -[visit_id i#106193] -[visit_exp (`I16`_lanetype, `%`_dim{i#106200}(8))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `LE`_vrelop_(`U`_sx))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `LE`_vrelop_(`U`_sx))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#106200}(8)] -[visit_exp i#106200] -[visit_id i#106200] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `LE`_vrelop_{sx#23694}(`U`_sx)] -[visit_exp sx#23694] -[visit_id sx#23694] +[visit_exp `LE`_vrelop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I dim#24156 i#106295 i#106302 lanetype#24156 shape#4112 sx#23818 -dims \ I = dim#24156, i#106295, i#106302, lanetype#24156, shape#4112, sx#23818 -[visit_exp `VRELOP`_instr{shape#4112}(`%X%`_shape{lanetype#24156, dim#24156, i#106295}(`I16`_lanetype, `%`_dim{i#106302}(8)), `GE`_vrelop_{sx#23818}(`S`_sx))] -[visit_exp shape#4112] -[visit_id shape#4112] -[visit_exp (`%X%`_shape{lanetype#24156, dim#24156, i#106295}(`I16`_lanetype, `%`_dim{i#106302}(8)), `GE`_vrelop_{sx#23818}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#24156, dim#24156, i#106295}(`I16`_lanetype, `%`_dim{i#106302}(8))] -[visit_exp lanetype#24156] -[visit_id lanetype#24156] -[visit_exp dim#24156] -[visit_id dim#24156] -[visit_exp i#106295] -[visit_id i#106295] -[visit_exp (`I16`_lanetype, `%`_dim{i#106302}(8))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `GE`_vrelop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `GE`_vrelop_(`S`_sx))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#106302}(8)] -[visit_exp i#106302] -[visit_id i#106302] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `GE`_vrelop_{sx#23818}(`S`_sx)] -[visit_exp sx#23818] -[visit_id sx#23818] +[visit_exp `GE`_vrelop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I dim#24198 i#106397 i#106404 lanetype#24198 shape#4114 sx#23942 -dims \ I = dim#24198, i#106397, i#106404, lanetype#24198, shape#4114, sx#23942 -[visit_exp `VRELOP`_instr{shape#4114}(`%X%`_shape{lanetype#24198, dim#24198, i#106397}(`I16`_lanetype, `%`_dim{i#106404}(8)), `GE`_vrelop_{sx#23942}(`U`_sx))] -[visit_exp shape#4114] -[visit_id shape#4114] -[visit_exp (`%X%`_shape{lanetype#24198, dim#24198, i#106397}(`I16`_lanetype, `%`_dim{i#106404}(8)), `GE`_vrelop_{sx#23942}(`U`_sx))] -[visit_exp `%X%`_shape{lanetype#24198, dim#24198, i#106397}(`I16`_lanetype, `%`_dim{i#106404}(8))] -[visit_exp lanetype#24198] -[visit_id lanetype#24198] -[visit_exp dim#24198] -[visit_id dim#24198] -[visit_exp i#106397] -[visit_id i#106397] -[visit_exp (`I16`_lanetype, `%`_dim{i#106404}(8))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `GE`_vrelop_(`U`_sx))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `GE`_vrelop_(`U`_sx))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#106404}(8)] -[visit_exp i#106404] -[visit_id i#106404] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `GE`_vrelop_{sx#23942}(`U`_sx)] -[visit_exp sx#23942] -[visit_id sx#23942] +[visit_exp `GE`_vrelop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I dim#24240 i#106499 i#106506 lanetype#24240 shape#4116 -dims \ I = dim#24240, i#106499, i#106506, lanetype#24240, shape#4116 -[visit_exp `VRELOP`_instr{shape#4116}(`%X%`_shape{lanetype#24240, dim#24240, i#106499}(`I32`_lanetype, `%`_dim{i#106506}(4)), `EQ`_vrelop_)] -[visit_exp shape#4116] -[visit_id shape#4116] -[visit_exp (`%X%`_shape{lanetype#24240, dim#24240, i#106499}(`I32`_lanetype, `%`_dim{i#106506}(4)), `EQ`_vrelop_)] -[visit_exp `%X%`_shape{lanetype#24240, dim#24240, i#106499}(`I32`_lanetype, `%`_dim{i#106506}(4))] -[visit_exp lanetype#24240] -[visit_id lanetype#24240] -[visit_exp dim#24240] -[visit_id dim#24240] -[visit_exp i#106499] -[visit_id i#106499] -[visit_exp (`I32`_lanetype, `%`_dim{i#106506}(4))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `EQ`_vrelop_)] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `EQ`_vrelop_)] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#106506}(4)] -[visit_exp i#106506] -[visit_id i#106506] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `EQ`_vrelop_] [visit_exp ()] -[check_dims] I dim#24267 i#106556 i#106563 lanetype#24267 shape#4118 -dims \ I = dim#24267, i#106556, i#106563, lanetype#24267, shape#4118 -[visit_exp `VRELOP`_instr{shape#4118}(`%X%`_shape{lanetype#24267, dim#24267, i#106556}(`I32`_lanetype, `%`_dim{i#106563}(4)), `NE`_vrelop_)] -[visit_exp shape#4118] -[visit_id shape#4118] -[visit_exp (`%X%`_shape{lanetype#24267, dim#24267, i#106556}(`I32`_lanetype, `%`_dim{i#106563}(4)), `NE`_vrelop_)] -[visit_exp `%X%`_shape{lanetype#24267, dim#24267, i#106556}(`I32`_lanetype, `%`_dim{i#106563}(4))] -[visit_exp lanetype#24267] -[visit_id lanetype#24267] -[visit_exp dim#24267] -[visit_id dim#24267] -[visit_exp i#106556] -[visit_id i#106556] -[visit_exp (`I32`_lanetype, `%`_dim{i#106563}(4))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `NE`_vrelop_)] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `NE`_vrelop_)] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#106563}(4)] -[visit_exp i#106563] -[visit_id i#106563] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `NE`_vrelop_] [visit_exp ()] -[check_dims] I dim#24294 i#106613 i#106620 lanetype#24294 shape#4120 sx#24186 -dims \ I = dim#24294, i#106613, i#106620, lanetype#24294, shape#4120, sx#24186 -[visit_exp `VRELOP`_instr{shape#4120}(`%X%`_shape{lanetype#24294, dim#24294, i#106613}(`I32`_lanetype, `%`_dim{i#106620}(4)), `LT`_vrelop_{sx#24186}(`S`_sx))] -[visit_exp shape#4120] -[visit_id shape#4120] -[visit_exp (`%X%`_shape{lanetype#24294, dim#24294, i#106613}(`I32`_lanetype, `%`_dim{i#106620}(4)), `LT`_vrelop_{sx#24186}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#24294, dim#24294, i#106613}(`I32`_lanetype, `%`_dim{i#106620}(4))] -[visit_exp lanetype#24294] -[visit_id lanetype#24294] -[visit_exp dim#24294] -[visit_id dim#24294] -[visit_exp i#106613] -[visit_id i#106613] -[visit_exp (`I32`_lanetype, `%`_dim{i#106620}(4))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `LT`_vrelop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `LT`_vrelop_(`S`_sx))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#106620}(4)] -[visit_exp i#106620] -[visit_id i#106620] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `LT`_vrelop_{sx#24186}(`S`_sx)] -[visit_exp sx#24186] -[visit_id sx#24186] +[visit_exp `LT`_vrelop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I dim#24336 i#106715 i#106722 lanetype#24336 shape#4122 sx#24310 -dims \ I = dim#24336, i#106715, i#106722, lanetype#24336, shape#4122, sx#24310 -[visit_exp `VRELOP`_instr{shape#4122}(`%X%`_shape{lanetype#24336, dim#24336, i#106715}(`I32`_lanetype, `%`_dim{i#106722}(4)), `LT`_vrelop_{sx#24310}(`U`_sx))] -[visit_exp shape#4122] -[visit_id shape#4122] -[visit_exp (`%X%`_shape{lanetype#24336, dim#24336, i#106715}(`I32`_lanetype, `%`_dim{i#106722}(4)), `LT`_vrelop_{sx#24310}(`U`_sx))] -[visit_exp `%X%`_shape{lanetype#24336, dim#24336, i#106715}(`I32`_lanetype, `%`_dim{i#106722}(4))] -[visit_exp lanetype#24336] -[visit_id lanetype#24336] -[visit_exp dim#24336] -[visit_id dim#24336] -[visit_exp i#106715] -[visit_id i#106715] -[visit_exp (`I32`_lanetype, `%`_dim{i#106722}(4))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `LT`_vrelop_(`U`_sx))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `LT`_vrelop_(`U`_sx))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#106722}(4)] -[visit_exp i#106722] -[visit_id i#106722] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `LT`_vrelop_{sx#24310}(`U`_sx)] -[visit_exp sx#24310] -[visit_id sx#24310] +[visit_exp `LT`_vrelop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I dim#24378 i#106817 i#106824 lanetype#24378 shape#4124 sx#24434 -dims \ I = dim#24378, i#106817, i#106824, lanetype#24378, shape#4124, sx#24434 -[visit_exp `VRELOP`_instr{shape#4124}(`%X%`_shape{lanetype#24378, dim#24378, i#106817}(`I32`_lanetype, `%`_dim{i#106824}(4)), `GT`_vrelop_{sx#24434}(`S`_sx))] -[visit_exp shape#4124] -[visit_id shape#4124] -[visit_exp (`%X%`_shape{lanetype#24378, dim#24378, i#106817}(`I32`_lanetype, `%`_dim{i#106824}(4)), `GT`_vrelop_{sx#24434}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#24378, dim#24378, i#106817}(`I32`_lanetype, `%`_dim{i#106824}(4))] -[visit_exp lanetype#24378] -[visit_id lanetype#24378] -[visit_exp dim#24378] -[visit_id dim#24378] -[visit_exp i#106817] -[visit_id i#106817] -[visit_exp (`I32`_lanetype, `%`_dim{i#106824}(4))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `GT`_vrelop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `GT`_vrelop_(`S`_sx))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#106824}(4)] -[visit_exp i#106824] -[visit_id i#106824] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `GT`_vrelop_{sx#24434}(`S`_sx)] -[visit_exp sx#24434] -[visit_id sx#24434] +[visit_exp `GT`_vrelop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I dim#24420 i#106919 i#106926 lanetype#24420 shape#4126 sx#24558 -dims \ I = dim#24420, i#106919, i#106926, lanetype#24420, shape#4126, sx#24558 -[visit_exp `VRELOP`_instr{shape#4126}(`%X%`_shape{lanetype#24420, dim#24420, i#106919}(`I32`_lanetype, `%`_dim{i#106926}(4)), `GT`_vrelop_{sx#24558}(`U`_sx))] -[visit_exp shape#4126] -[visit_id shape#4126] -[visit_exp (`%X%`_shape{lanetype#24420, dim#24420, i#106919}(`I32`_lanetype, `%`_dim{i#106926}(4)), `GT`_vrelop_{sx#24558}(`U`_sx))] -[visit_exp `%X%`_shape{lanetype#24420, dim#24420, i#106919}(`I32`_lanetype, `%`_dim{i#106926}(4))] -[visit_exp lanetype#24420] -[visit_id lanetype#24420] -[visit_exp dim#24420] -[visit_id dim#24420] -[visit_exp i#106919] -[visit_id i#106919] -[visit_exp (`I32`_lanetype, `%`_dim{i#106926}(4))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `GT`_vrelop_(`U`_sx))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `GT`_vrelop_(`U`_sx))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#106926}(4)] -[visit_exp i#106926] -[visit_id i#106926] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `GT`_vrelop_{sx#24558}(`U`_sx)] -[visit_exp sx#24558] -[visit_id sx#24558] +[visit_exp `GT`_vrelop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I dim#24462 i#107021 i#107028 lanetype#24462 shape#4128 sx#24682 -dims \ I = dim#24462, i#107021, i#107028, lanetype#24462, shape#4128, sx#24682 -[visit_exp `VRELOP`_instr{shape#4128}(`%X%`_shape{lanetype#24462, dim#24462, i#107021}(`I32`_lanetype, `%`_dim{i#107028}(4)), `LE`_vrelop_{sx#24682}(`S`_sx))] -[visit_exp shape#4128] -[visit_id shape#4128] -[visit_exp (`%X%`_shape{lanetype#24462, dim#24462, i#107021}(`I32`_lanetype, `%`_dim{i#107028}(4)), `LE`_vrelop_{sx#24682}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#24462, dim#24462, i#107021}(`I32`_lanetype, `%`_dim{i#107028}(4))] -[visit_exp lanetype#24462] -[visit_id lanetype#24462] -[visit_exp dim#24462] -[visit_id dim#24462] -[visit_exp i#107021] -[visit_id i#107021] -[visit_exp (`I32`_lanetype, `%`_dim{i#107028}(4))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `LE`_vrelop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `LE`_vrelop_(`S`_sx))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#107028}(4)] -[visit_exp i#107028] -[visit_id i#107028] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `LE`_vrelop_{sx#24682}(`S`_sx)] -[visit_exp sx#24682] -[visit_id sx#24682] +[visit_exp `LE`_vrelop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I dim#24504 i#107123 i#107130 lanetype#24504 shape#4130 sx#24806 -dims \ I = dim#24504, i#107123, i#107130, lanetype#24504, shape#4130, sx#24806 -[visit_exp `VRELOP`_instr{shape#4130}(`%X%`_shape{lanetype#24504, dim#24504, i#107123}(`I32`_lanetype, `%`_dim{i#107130}(4)), `LE`_vrelop_{sx#24806}(`U`_sx))] -[visit_exp shape#4130] -[visit_id shape#4130] -[visit_exp (`%X%`_shape{lanetype#24504, dim#24504, i#107123}(`I32`_lanetype, `%`_dim{i#107130}(4)), `LE`_vrelop_{sx#24806}(`U`_sx))] -[visit_exp `%X%`_shape{lanetype#24504, dim#24504, i#107123}(`I32`_lanetype, `%`_dim{i#107130}(4))] -[visit_exp lanetype#24504] -[visit_id lanetype#24504] -[visit_exp dim#24504] -[visit_id dim#24504] -[visit_exp i#107123] -[visit_id i#107123] -[visit_exp (`I32`_lanetype, `%`_dim{i#107130}(4))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `LE`_vrelop_(`U`_sx))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `LE`_vrelop_(`U`_sx))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#107130}(4)] -[visit_exp i#107130] -[visit_id i#107130] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `LE`_vrelop_{sx#24806}(`U`_sx)] -[visit_exp sx#24806] -[visit_id sx#24806] +[visit_exp `LE`_vrelop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I dim#24546 i#107225 i#107232 lanetype#24546 shape#4132 sx#24930 -dims \ I = dim#24546, i#107225, i#107232, lanetype#24546, shape#4132, sx#24930 -[visit_exp `VRELOP`_instr{shape#4132}(`%X%`_shape{lanetype#24546, dim#24546, i#107225}(`I32`_lanetype, `%`_dim{i#107232}(4)), `GE`_vrelop_{sx#24930}(`S`_sx))] -[visit_exp shape#4132] -[visit_id shape#4132] -[visit_exp (`%X%`_shape{lanetype#24546, dim#24546, i#107225}(`I32`_lanetype, `%`_dim{i#107232}(4)), `GE`_vrelop_{sx#24930}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#24546, dim#24546, i#107225}(`I32`_lanetype, `%`_dim{i#107232}(4))] -[visit_exp lanetype#24546] -[visit_id lanetype#24546] -[visit_exp dim#24546] -[visit_id dim#24546] -[visit_exp i#107225] -[visit_id i#107225] -[visit_exp (`I32`_lanetype, `%`_dim{i#107232}(4))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `GE`_vrelop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `GE`_vrelop_(`S`_sx))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#107232}(4)] -[visit_exp i#107232] -[visit_id i#107232] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `GE`_vrelop_{sx#24930}(`S`_sx)] -[visit_exp sx#24930] -[visit_id sx#24930] +[visit_exp `GE`_vrelop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I dim#24588 i#107327 i#107334 lanetype#24588 shape#4134 sx#25054 -dims \ I = dim#24588, i#107327, i#107334, lanetype#24588, shape#4134, sx#25054 -[visit_exp `VRELOP`_instr{shape#4134}(`%X%`_shape{lanetype#24588, dim#24588, i#107327}(`I32`_lanetype, `%`_dim{i#107334}(4)), `GE`_vrelop_{sx#25054}(`U`_sx))] -[visit_exp shape#4134] -[visit_id shape#4134] -[visit_exp (`%X%`_shape{lanetype#24588, dim#24588, i#107327}(`I32`_lanetype, `%`_dim{i#107334}(4)), `GE`_vrelop_{sx#25054}(`U`_sx))] -[visit_exp `%X%`_shape{lanetype#24588, dim#24588, i#107327}(`I32`_lanetype, `%`_dim{i#107334}(4))] -[visit_exp lanetype#24588] -[visit_id lanetype#24588] -[visit_exp dim#24588] -[visit_id dim#24588] -[visit_exp i#107327] -[visit_id i#107327] -[visit_exp (`I32`_lanetype, `%`_dim{i#107334}(4))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `GE`_vrelop_(`U`_sx))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `GE`_vrelop_(`U`_sx))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#107334}(4)] -[visit_exp i#107334] -[visit_id i#107334] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `GE`_vrelop_{sx#25054}(`U`_sx)] -[visit_exp sx#25054] -[visit_id sx#25054] +[visit_exp `GE`_vrelop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I dim#24630 i#107429 i#107436 lanetype#24630 shape#4136 -dims \ I = dim#24630, i#107429, i#107436, lanetype#24630, shape#4136 -[visit_exp `VRELOP`_instr{shape#4136}(`%X%`_shape{lanetype#24630, dim#24630, i#107429}(`I64`_lanetype, `%`_dim{i#107436}(2)), `EQ`_vrelop_)] -[visit_exp shape#4136] -[visit_id shape#4136] -[visit_exp (`%X%`_shape{lanetype#24630, dim#24630, i#107429}(`I64`_lanetype, `%`_dim{i#107436}(2)), `EQ`_vrelop_)] -[visit_exp `%X%`_shape{lanetype#24630, dim#24630, i#107429}(`I64`_lanetype, `%`_dim{i#107436}(2))] -[visit_exp lanetype#24630] -[visit_id lanetype#24630] -[visit_exp dim#24630] -[visit_id dim#24630] -[visit_exp i#107429] -[visit_id i#107429] -[visit_exp (`I64`_lanetype, `%`_dim{i#107436}(2))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `EQ`_vrelop_)] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `EQ`_vrelop_)] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#107436}(2)] -[visit_exp i#107436] -[visit_id i#107436] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `EQ`_vrelop_] [visit_exp ()] -[check_dims] I dim#24657 i#107486 i#107493 lanetype#24657 shape#4138 -dims \ I = dim#24657, i#107486, i#107493, lanetype#24657, shape#4138 -[visit_exp `VRELOP`_instr{shape#4138}(`%X%`_shape{lanetype#24657, dim#24657, i#107486}(`I64`_lanetype, `%`_dim{i#107493}(2)), `NE`_vrelop_)] -[visit_exp shape#4138] -[visit_id shape#4138] -[visit_exp (`%X%`_shape{lanetype#24657, dim#24657, i#107486}(`I64`_lanetype, `%`_dim{i#107493}(2)), `NE`_vrelop_)] -[visit_exp `%X%`_shape{lanetype#24657, dim#24657, i#107486}(`I64`_lanetype, `%`_dim{i#107493}(2))] -[visit_exp lanetype#24657] -[visit_id lanetype#24657] -[visit_exp dim#24657] -[visit_id dim#24657] -[visit_exp i#107486] -[visit_id i#107486] -[visit_exp (`I64`_lanetype, `%`_dim{i#107493}(2))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `NE`_vrelop_)] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `NE`_vrelop_)] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#107493}(2)] -[visit_exp i#107493] -[visit_id i#107493] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `NE`_vrelop_] [visit_exp ()] -[check_dims] I dim#24684 i#107543 i#107550 lanetype#24684 shape#4140 sx#25298 -dims \ I = dim#24684, i#107543, i#107550, lanetype#24684, shape#4140, sx#25298 -[visit_exp `VRELOP`_instr{shape#4140}(`%X%`_shape{lanetype#24684, dim#24684, i#107543}(`I64`_lanetype, `%`_dim{i#107550}(2)), `LT`_vrelop_{sx#25298}(`S`_sx))] -[visit_exp shape#4140] -[visit_id shape#4140] -[visit_exp (`%X%`_shape{lanetype#24684, dim#24684, i#107543}(`I64`_lanetype, `%`_dim{i#107550}(2)), `LT`_vrelop_{sx#25298}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#24684, dim#24684, i#107543}(`I64`_lanetype, `%`_dim{i#107550}(2))] -[visit_exp lanetype#24684] -[visit_id lanetype#24684] -[visit_exp dim#24684] -[visit_id dim#24684] -[visit_exp i#107543] -[visit_id i#107543] -[visit_exp (`I64`_lanetype, `%`_dim{i#107550}(2))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `LT`_vrelop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `LT`_vrelop_(`S`_sx))] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#107550}(2)] -[visit_exp i#107550] -[visit_id i#107550] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `LT`_vrelop_{sx#25298}(`S`_sx)] -[visit_exp sx#25298] -[visit_id sx#25298] +[visit_exp `LT`_vrelop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I dim#24726 i#107645 i#107652 lanetype#24726 shape#4142 sx#25422 -dims \ I = dim#24726, i#107645, i#107652, lanetype#24726, shape#4142, sx#25422 -[visit_exp `VRELOP`_instr{shape#4142}(`%X%`_shape{lanetype#24726, dim#24726, i#107645}(`I64`_lanetype, `%`_dim{i#107652}(2)), `GT`_vrelop_{sx#25422}(`S`_sx))] -[visit_exp shape#4142] -[visit_id shape#4142] -[visit_exp (`%X%`_shape{lanetype#24726, dim#24726, i#107645}(`I64`_lanetype, `%`_dim{i#107652}(2)), `GT`_vrelop_{sx#25422}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#24726, dim#24726, i#107645}(`I64`_lanetype, `%`_dim{i#107652}(2))] -[visit_exp lanetype#24726] -[visit_id lanetype#24726] -[visit_exp dim#24726] -[visit_id dim#24726] -[visit_exp i#107645] -[visit_id i#107645] -[visit_exp (`I64`_lanetype, `%`_dim{i#107652}(2))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `GT`_vrelop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `GT`_vrelop_(`S`_sx))] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#107652}(2)] -[visit_exp i#107652] -[visit_id i#107652] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `GT`_vrelop_{sx#25422}(`S`_sx)] -[visit_exp sx#25422] -[visit_id sx#25422] +[visit_exp `GT`_vrelop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I dim#24768 i#107747 i#107754 lanetype#24768 shape#4144 sx#25546 -dims \ I = dim#24768, i#107747, i#107754, lanetype#24768, shape#4144, sx#25546 -[visit_exp `VRELOP`_instr{shape#4144}(`%X%`_shape{lanetype#24768, dim#24768, i#107747}(`I64`_lanetype, `%`_dim{i#107754}(2)), `LE`_vrelop_{sx#25546}(`S`_sx))] -[visit_exp shape#4144] -[visit_id shape#4144] -[visit_exp (`%X%`_shape{lanetype#24768, dim#24768, i#107747}(`I64`_lanetype, `%`_dim{i#107754}(2)), `LE`_vrelop_{sx#25546}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#24768, dim#24768, i#107747}(`I64`_lanetype, `%`_dim{i#107754}(2))] -[visit_exp lanetype#24768] -[visit_id lanetype#24768] -[visit_exp dim#24768] -[visit_id dim#24768] -[visit_exp i#107747] -[visit_id i#107747] -[visit_exp (`I64`_lanetype, `%`_dim{i#107754}(2))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `LE`_vrelop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `LE`_vrelop_(`S`_sx))] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#107754}(2)] -[visit_exp i#107754] -[visit_id i#107754] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `LE`_vrelop_{sx#25546}(`S`_sx)] -[visit_exp sx#25546] -[visit_id sx#25546] +[visit_exp `LE`_vrelop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I dim#24810 i#107849 i#107856 lanetype#24810 shape#4146 sx#25670 -dims \ I = dim#24810, i#107849, i#107856, lanetype#24810, shape#4146, sx#25670 -[visit_exp `VRELOP`_instr{shape#4146}(`%X%`_shape{lanetype#24810, dim#24810, i#107849}(`I64`_lanetype, `%`_dim{i#107856}(2)), `GE`_vrelop_{sx#25670}(`S`_sx))] -[visit_exp shape#4146] -[visit_id shape#4146] -[visit_exp (`%X%`_shape{lanetype#24810, dim#24810, i#107849}(`I64`_lanetype, `%`_dim{i#107856}(2)), `GE`_vrelop_{sx#25670}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#24810, dim#24810, i#107849}(`I64`_lanetype, `%`_dim{i#107856}(2))] -[visit_exp lanetype#24810] -[visit_id lanetype#24810] -[visit_exp dim#24810] -[visit_id dim#24810] -[visit_exp i#107849] -[visit_id i#107849] -[visit_exp (`I64`_lanetype, `%`_dim{i#107856}(2))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `GE`_vrelop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `GE`_vrelop_(`S`_sx))] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#107856}(2)] -[visit_exp i#107856] -[visit_id i#107856] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `GE`_vrelop_{sx#25670}(`S`_sx)] -[visit_exp sx#25670] -[visit_id sx#25670] +[visit_exp `GE`_vrelop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I dim#24852 i#107951 i#107958 lanetype#24852 shape#4148 -dims \ I = dim#24852, i#107951, i#107958, lanetype#24852, shape#4148 -[visit_exp `VRELOP`_instr{shape#4148}(`%X%`_shape{lanetype#24852, dim#24852, i#107951}(`F32`_lanetype, `%`_dim{i#107958}(4)), `EQ`_vrelop_)] -[visit_exp shape#4148] -[visit_id shape#4148] -[visit_exp (`%X%`_shape{lanetype#24852, dim#24852, i#107951}(`F32`_lanetype, `%`_dim{i#107958}(4)), `EQ`_vrelop_)] -[visit_exp `%X%`_shape{lanetype#24852, dim#24852, i#107951}(`F32`_lanetype, `%`_dim{i#107958}(4))] -[visit_exp lanetype#24852] -[visit_id lanetype#24852] -[visit_exp dim#24852] -[visit_id dim#24852] -[visit_exp i#107951] -[visit_id i#107951] -[visit_exp (`F32`_lanetype, `%`_dim{i#107958}(4))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `EQ`_vrelop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `EQ`_vrelop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#107958}(4)] -[visit_exp i#107958] -[visit_id i#107958] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `EQ`_vrelop_] [visit_exp ()] -[check_dims] I dim#24894 i#108023 i#108030 lanetype#24894 shape#4150 -dims \ I = dim#24894, i#108023, i#108030, lanetype#24894, shape#4150 -[visit_exp `VRELOP`_instr{shape#4150}(`%X%`_shape{lanetype#24894, dim#24894, i#108023}(`F32`_lanetype, `%`_dim{i#108030}(4)), `NE`_vrelop_)] -[visit_exp shape#4150] -[visit_id shape#4150] -[visit_exp (`%X%`_shape{lanetype#24894, dim#24894, i#108023}(`F32`_lanetype, `%`_dim{i#108030}(4)), `NE`_vrelop_)] -[visit_exp `%X%`_shape{lanetype#24894, dim#24894, i#108023}(`F32`_lanetype, `%`_dim{i#108030}(4))] -[visit_exp lanetype#24894] -[visit_id lanetype#24894] -[visit_exp dim#24894] -[visit_id dim#24894] -[visit_exp i#108023] -[visit_id i#108023] -[visit_exp (`F32`_lanetype, `%`_dim{i#108030}(4))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `NE`_vrelop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `NE`_vrelop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#108030}(4)] -[visit_exp i#108030] -[visit_id i#108030] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `NE`_vrelop_] [visit_exp ()] -[check_dims] I dim#24936 i#108095 i#108102 lanetype#24936 shape#4152 -dims \ I = dim#24936, i#108095, i#108102, lanetype#24936, shape#4152 -[visit_exp `VRELOP`_instr{shape#4152}(`%X%`_shape{lanetype#24936, dim#24936, i#108095}(`F32`_lanetype, `%`_dim{i#108102}(4)), `LT`_vrelop_)] -[visit_exp shape#4152] -[visit_id shape#4152] -[visit_exp (`%X%`_shape{lanetype#24936, dim#24936, i#108095}(`F32`_lanetype, `%`_dim{i#108102}(4)), `LT`_vrelop_)] -[visit_exp `%X%`_shape{lanetype#24936, dim#24936, i#108095}(`F32`_lanetype, `%`_dim{i#108102}(4))] -[visit_exp lanetype#24936] -[visit_id lanetype#24936] -[visit_exp dim#24936] -[visit_id dim#24936] -[visit_exp i#108095] -[visit_id i#108095] -[visit_exp (`F32`_lanetype, `%`_dim{i#108102}(4))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `LT`_vrelop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `LT`_vrelop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#108102}(4)] -[visit_exp i#108102] -[visit_id i#108102] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `LT`_vrelop_] [visit_exp ()] -[check_dims] I dim#24978 i#108167 i#108174 lanetype#24978 shape#4154 -dims \ I = dim#24978, i#108167, i#108174, lanetype#24978, shape#4154 -[visit_exp `VRELOP`_instr{shape#4154}(`%X%`_shape{lanetype#24978, dim#24978, i#108167}(`F32`_lanetype, `%`_dim{i#108174}(4)), `GT`_vrelop_)] -[visit_exp shape#4154] -[visit_id shape#4154] -[visit_exp (`%X%`_shape{lanetype#24978, dim#24978, i#108167}(`F32`_lanetype, `%`_dim{i#108174}(4)), `GT`_vrelop_)] -[visit_exp `%X%`_shape{lanetype#24978, dim#24978, i#108167}(`F32`_lanetype, `%`_dim{i#108174}(4))] -[visit_exp lanetype#24978] -[visit_id lanetype#24978] -[visit_exp dim#24978] -[visit_id dim#24978] -[visit_exp i#108167] -[visit_id i#108167] -[visit_exp (`F32`_lanetype, `%`_dim{i#108174}(4))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `GT`_vrelop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `GT`_vrelop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#108174}(4)] -[visit_exp i#108174] -[visit_id i#108174] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `GT`_vrelop_] [visit_exp ()] -[check_dims] I dim#25020 i#108239 i#108246 lanetype#25020 shape#4156 -dims \ I = dim#25020, i#108239, i#108246, lanetype#25020, shape#4156 -[visit_exp `VRELOP`_instr{shape#4156}(`%X%`_shape{lanetype#25020, dim#25020, i#108239}(`F32`_lanetype, `%`_dim{i#108246}(4)), `LE`_vrelop_)] -[visit_exp shape#4156] -[visit_id shape#4156] -[visit_exp (`%X%`_shape{lanetype#25020, dim#25020, i#108239}(`F32`_lanetype, `%`_dim{i#108246}(4)), `LE`_vrelop_)] -[visit_exp `%X%`_shape{lanetype#25020, dim#25020, i#108239}(`F32`_lanetype, `%`_dim{i#108246}(4))] -[visit_exp lanetype#25020] -[visit_id lanetype#25020] -[visit_exp dim#25020] -[visit_id dim#25020] -[visit_exp i#108239] -[visit_id i#108239] -[visit_exp (`F32`_lanetype, `%`_dim{i#108246}(4))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `LE`_vrelop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `LE`_vrelop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#108246}(4)] -[visit_exp i#108246] -[visit_id i#108246] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `LE`_vrelop_] [visit_exp ()] -[check_dims] I dim#25062 i#108311 i#108318 lanetype#25062 shape#4158 -dims \ I = dim#25062, i#108311, i#108318, lanetype#25062, shape#4158 -[visit_exp `VRELOP`_instr{shape#4158}(`%X%`_shape{lanetype#25062, dim#25062, i#108311}(`F32`_lanetype, `%`_dim{i#108318}(4)), `GE`_vrelop_)] -[visit_exp shape#4158] -[visit_id shape#4158] -[visit_exp (`%X%`_shape{lanetype#25062, dim#25062, i#108311}(`F32`_lanetype, `%`_dim{i#108318}(4)), `GE`_vrelop_)] -[visit_exp `%X%`_shape{lanetype#25062, dim#25062, i#108311}(`F32`_lanetype, `%`_dim{i#108318}(4))] -[visit_exp lanetype#25062] -[visit_id lanetype#25062] -[visit_exp dim#25062] -[visit_id dim#25062] -[visit_exp i#108311] -[visit_id i#108311] -[visit_exp (`F32`_lanetype, `%`_dim{i#108318}(4))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `GE`_vrelop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `GE`_vrelop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#108318}(4)] -[visit_exp i#108318] -[visit_id i#108318] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `GE`_vrelop_] @@ -101345,140 +79561,80 @@ dims \ I = dim#25062, i#108311, i#108318, lanetype#25062, shape#4158 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I dim#25104 i#108383 i#108390 lanetype#25104 shape#4160 -dims \ I = dim#25104, i#108383, i#108390, lanetype#25104, shape#4160 -[visit_exp `VRELOP`_instr{shape#4160}(`%X%`_shape{lanetype#25104, dim#25104, i#108383}(`F64`_lanetype, `%`_dim{i#108390}(2)), `EQ`_vrelop_)] -[visit_exp shape#4160] -[visit_id shape#4160] -[visit_exp (`%X%`_shape{lanetype#25104, dim#25104, i#108383}(`F64`_lanetype, `%`_dim{i#108390}(2)), `EQ`_vrelop_)] -[visit_exp `%X%`_shape{lanetype#25104, dim#25104, i#108383}(`F64`_lanetype, `%`_dim{i#108390}(2))] -[visit_exp lanetype#25104] -[visit_id lanetype#25104] -[visit_exp dim#25104] -[visit_id dim#25104] -[visit_exp i#108383] -[visit_id i#108383] -[visit_exp (`F64`_lanetype, `%`_dim{i#108390}(2))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `EQ`_vrelop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `EQ`_vrelop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#108390}(2)] -[visit_exp i#108390] -[visit_id i#108390] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `EQ`_vrelop_] [visit_exp ()] -[check_dims] I dim#25146 i#108455 i#108462 lanetype#25146 shape#4162 -dims \ I = dim#25146, i#108455, i#108462, lanetype#25146, shape#4162 -[visit_exp `VRELOP`_instr{shape#4162}(`%X%`_shape{lanetype#25146, dim#25146, i#108455}(`F64`_lanetype, `%`_dim{i#108462}(2)), `NE`_vrelop_)] -[visit_exp shape#4162] -[visit_id shape#4162] -[visit_exp (`%X%`_shape{lanetype#25146, dim#25146, i#108455}(`F64`_lanetype, `%`_dim{i#108462}(2)), `NE`_vrelop_)] -[visit_exp `%X%`_shape{lanetype#25146, dim#25146, i#108455}(`F64`_lanetype, `%`_dim{i#108462}(2))] -[visit_exp lanetype#25146] -[visit_id lanetype#25146] -[visit_exp dim#25146] -[visit_id dim#25146] -[visit_exp i#108455] -[visit_id i#108455] -[visit_exp (`F64`_lanetype, `%`_dim{i#108462}(2))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `NE`_vrelop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `NE`_vrelop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#108462}(2)] -[visit_exp i#108462] -[visit_id i#108462] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `NE`_vrelop_] [visit_exp ()] -[check_dims] I dim#25188 i#108527 i#108534 lanetype#25188 shape#4164 -dims \ I = dim#25188, i#108527, i#108534, lanetype#25188, shape#4164 -[visit_exp `VRELOP`_instr{shape#4164}(`%X%`_shape{lanetype#25188, dim#25188, i#108527}(`F64`_lanetype, `%`_dim{i#108534}(2)), `LT`_vrelop_)] -[visit_exp shape#4164] -[visit_id shape#4164] -[visit_exp (`%X%`_shape{lanetype#25188, dim#25188, i#108527}(`F64`_lanetype, `%`_dim{i#108534}(2)), `LT`_vrelop_)] -[visit_exp `%X%`_shape{lanetype#25188, dim#25188, i#108527}(`F64`_lanetype, `%`_dim{i#108534}(2))] -[visit_exp lanetype#25188] -[visit_id lanetype#25188] -[visit_exp dim#25188] -[visit_id dim#25188] -[visit_exp i#108527] -[visit_id i#108527] -[visit_exp (`F64`_lanetype, `%`_dim{i#108534}(2))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `LT`_vrelop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `LT`_vrelop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#108534}(2)] -[visit_exp i#108534] -[visit_id i#108534] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `LT`_vrelop_] [visit_exp ()] -[check_dims] I dim#25230 i#108599 i#108606 lanetype#25230 shape#4166 -dims \ I = dim#25230, i#108599, i#108606, lanetype#25230, shape#4166 -[visit_exp `VRELOP`_instr{shape#4166}(`%X%`_shape{lanetype#25230, dim#25230, i#108599}(`F64`_lanetype, `%`_dim{i#108606}(2)), `GT`_vrelop_)] -[visit_exp shape#4166] -[visit_id shape#4166] -[visit_exp (`%X%`_shape{lanetype#25230, dim#25230, i#108599}(`F64`_lanetype, `%`_dim{i#108606}(2)), `GT`_vrelop_)] -[visit_exp `%X%`_shape{lanetype#25230, dim#25230, i#108599}(`F64`_lanetype, `%`_dim{i#108606}(2))] -[visit_exp lanetype#25230] -[visit_id lanetype#25230] -[visit_exp dim#25230] -[visit_id dim#25230] -[visit_exp i#108599] -[visit_id i#108599] -[visit_exp (`F64`_lanetype, `%`_dim{i#108606}(2))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `GT`_vrelop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `GT`_vrelop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#108606}(2)] -[visit_exp i#108606] -[visit_id i#108606] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `GT`_vrelop_] [visit_exp ()] -[check_dims] I dim#25272 i#108671 i#108678 lanetype#25272 shape#4168 -dims \ I = dim#25272, i#108671, i#108678, lanetype#25272, shape#4168 -[visit_exp `VRELOP`_instr{shape#4168}(`%X%`_shape{lanetype#25272, dim#25272, i#108671}(`F64`_lanetype, `%`_dim{i#108678}(2)), `LE`_vrelop_)] -[visit_exp shape#4168] -[visit_id shape#4168] -[visit_exp (`%X%`_shape{lanetype#25272, dim#25272, i#108671}(`F64`_lanetype, `%`_dim{i#108678}(2)), `LE`_vrelop_)] -[visit_exp `%X%`_shape{lanetype#25272, dim#25272, i#108671}(`F64`_lanetype, `%`_dim{i#108678}(2))] -[visit_exp lanetype#25272] -[visit_id lanetype#25272] -[visit_exp dim#25272] -[visit_id dim#25272] -[visit_exp i#108671] -[visit_id i#108671] -[visit_exp (`F64`_lanetype, `%`_dim{i#108678}(2))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `LE`_vrelop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `LE`_vrelop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#108678}(2)] -[visit_exp i#108678] -[visit_id i#108678] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `LE`_vrelop_] [visit_exp ()] -[check_dims] I dim#25314 i#108743 i#108750 lanetype#25314 shape#4170 -dims \ I = dim#25314, i#108743, i#108750, lanetype#25314, shape#4170 -[visit_exp `VRELOP`_instr{shape#4170}(`%X%`_shape{lanetype#25314, dim#25314, i#108743}(`F64`_lanetype, `%`_dim{i#108750}(2)), `GE`_vrelop_)] -[visit_exp shape#4170] -[visit_id shape#4170] -[visit_exp (`%X%`_shape{lanetype#25314, dim#25314, i#108743}(`F64`_lanetype, `%`_dim{i#108750}(2)), `GE`_vrelop_)] -[visit_exp `%X%`_shape{lanetype#25314, dim#25314, i#108743}(`F64`_lanetype, `%`_dim{i#108750}(2))] -[visit_exp lanetype#25314] -[visit_id lanetype#25314] -[visit_exp dim#25314] -[visit_id dim#25314] -[visit_exp i#108743] -[visit_id i#108743] -[visit_exp (`F64`_lanetype, `%`_dim{i#108750}(2))] +[check_dims] I +dims \ I = +[visit_exp `VRELOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `GE`_vrelop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `GE`_vrelop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#108750}(2)] -[visit_exp i#108750] -[visit_id i#108750] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `GE`_vrelop_] @@ -101486,13 +79642,9 @@ dims \ I = dim#25314, i#108743, i#108750, lanetype#25314, shape#4170 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I vectype#318 vvunop#9 -dims \ I = vectype#318, vvunop#9 -[visit_exp `VVUNOP`_instr{vectype#318, vvunop#9}(`V128`_vectype, `NOT`_vvunop)] -[visit_exp vectype#318] -[visit_id vectype#318] -[visit_exp vvunop#9] -[visit_id vvunop#9] +[check_dims] I +dims \ I = +[visit_exp `VVUNOP`_instr(`V128`_vectype, `NOT`_vvunop)] [visit_exp (`V128`_vectype, `NOT`_vvunop)] [visit_exp `V128`_vectype] [visit_exp ()] @@ -101501,71 +79653,41 @@ dims \ I = vectype#318, vvunop#9 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I dim#25356 i#108815 i#108822 lanetype#25356 shape#4172 -dims \ I = dim#25356, i#108815, i#108822, lanetype#25356, shape#4172 -[visit_exp `VUNOP`_instr{shape#4172}(`%X%`_shape{lanetype#25356, dim#25356, i#108815}(`I8`_lanetype, `%`_dim{i#108822}(16)), `ABS`_vunop_)] -[visit_exp shape#4172] -[visit_id shape#4172] -[visit_exp (`%X%`_shape{lanetype#25356, dim#25356, i#108815}(`I8`_lanetype, `%`_dim{i#108822}(16)), `ABS`_vunop_)] -[visit_exp `%X%`_shape{lanetype#25356, dim#25356, i#108815}(`I8`_lanetype, `%`_dim{i#108822}(16))] -[visit_exp lanetype#25356] -[visit_id lanetype#25356] -[visit_exp dim#25356] -[visit_id dim#25356] -[visit_exp i#108815] -[visit_id i#108815] -[visit_exp (`I8`_lanetype, `%`_dim{i#108822}(16))] +[check_dims] I +dims \ I = +[visit_exp `VUNOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `ABS`_vunop_)] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `ABS`_vunop_)] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#108822}(16)] -[visit_exp i#108822] -[visit_id i#108822] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] [visit_exp `ABS`_vunop_] [visit_exp ()] -[check_dims] I dim#25383 i#108872 i#108879 lanetype#25383 shape#4174 -dims \ I = dim#25383, i#108872, i#108879, lanetype#25383, shape#4174 -[visit_exp `VUNOP`_instr{shape#4174}(`%X%`_shape{lanetype#25383, dim#25383, i#108872}(`I8`_lanetype, `%`_dim{i#108879}(16)), `NEG`_vunop_)] -[visit_exp shape#4174] -[visit_id shape#4174] -[visit_exp (`%X%`_shape{lanetype#25383, dim#25383, i#108872}(`I8`_lanetype, `%`_dim{i#108879}(16)), `NEG`_vunop_)] -[visit_exp `%X%`_shape{lanetype#25383, dim#25383, i#108872}(`I8`_lanetype, `%`_dim{i#108879}(16))] -[visit_exp lanetype#25383] -[visit_id lanetype#25383] -[visit_exp dim#25383] -[visit_id dim#25383] -[visit_exp i#108872] -[visit_id i#108872] -[visit_exp (`I8`_lanetype, `%`_dim{i#108879}(16))] +[check_dims] I +dims \ I = +[visit_exp `VUNOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `NEG`_vunop_)] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `NEG`_vunop_)] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#108879}(16)] -[visit_exp i#108879] -[visit_id i#108879] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] [visit_exp `NEG`_vunop_] [visit_exp ()] -[check_dims] I dim#25410 i#108929 i#108936 lanetype#25410 shape#4176 -dims \ I = dim#25410, i#108929, i#108936, lanetype#25410, shape#4176 -[visit_exp `VUNOP`_instr{shape#4176}(`%X%`_shape{lanetype#25410, dim#25410, i#108929}(`I8`_lanetype, `%`_dim{i#108936}(16)), `POPCNT`_vunop_)] -[visit_exp shape#4176] -[visit_id shape#4176] -[visit_exp (`%X%`_shape{lanetype#25410, dim#25410, i#108929}(`I8`_lanetype, `%`_dim{i#108936}(16)), `POPCNT`_vunop_)] -[visit_exp `%X%`_shape{lanetype#25410, dim#25410, i#108929}(`I8`_lanetype, `%`_dim{i#108936}(16))] -[visit_exp lanetype#25410] -[visit_id lanetype#25410] -[visit_exp dim#25410] -[visit_id dim#25410] -[visit_exp i#108929] -[visit_id i#108929] -[visit_exp (`I8`_lanetype, `%`_dim{i#108936}(16))] +[check_dims] I +dims \ I = +[visit_exp `VUNOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `POPCNT`_vunop_)] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `POPCNT`_vunop_)] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#108936}(16)] -[visit_exp i#108936] -[visit_id i#108936] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] [visit_exp `POPCNT`_vunop_] @@ -101573,48 +79695,28 @@ dims \ I = dim#25410, i#108929, i#108936, lanetype#25410, shape#4176 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I dim#25437 i#108986 i#108993 lanetype#25437 shape#4178 -dims \ I = dim#25437, i#108986, i#108993, lanetype#25437, shape#4178 -[visit_exp `VUNOP`_instr{shape#4178}(`%X%`_shape{lanetype#25437, dim#25437, i#108986}(`I16`_lanetype, `%`_dim{i#108993}(8)), `ABS`_vunop_)] -[visit_exp shape#4178] -[visit_id shape#4178] -[visit_exp (`%X%`_shape{lanetype#25437, dim#25437, i#108986}(`I16`_lanetype, `%`_dim{i#108993}(8)), `ABS`_vunop_)] -[visit_exp `%X%`_shape{lanetype#25437, dim#25437, i#108986}(`I16`_lanetype, `%`_dim{i#108993}(8))] -[visit_exp lanetype#25437] -[visit_id lanetype#25437] -[visit_exp dim#25437] -[visit_id dim#25437] -[visit_exp i#108986] -[visit_id i#108986] -[visit_exp (`I16`_lanetype, `%`_dim{i#108993}(8))] +[check_dims] I +dims \ I = +[visit_exp `VUNOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `ABS`_vunop_)] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `ABS`_vunop_)] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#108993}(8)] -[visit_exp i#108993] -[visit_id i#108993] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] [visit_exp `ABS`_vunop_] [visit_exp ()] -[check_dims] I dim#25464 i#109043 i#109050 lanetype#25464 shape#4180 -dims \ I = dim#25464, i#109043, i#109050, lanetype#25464, shape#4180 -[visit_exp `VUNOP`_instr{shape#4180}(`%X%`_shape{lanetype#25464, dim#25464, i#109043}(`I16`_lanetype, `%`_dim{i#109050}(8)), `NEG`_vunop_)] -[visit_exp shape#4180] -[visit_id shape#4180] -[visit_exp (`%X%`_shape{lanetype#25464, dim#25464, i#109043}(`I16`_lanetype, `%`_dim{i#109050}(8)), `NEG`_vunop_)] -[visit_exp `%X%`_shape{lanetype#25464, dim#25464, i#109043}(`I16`_lanetype, `%`_dim{i#109050}(8))] -[visit_exp lanetype#25464] -[visit_id lanetype#25464] -[visit_exp dim#25464] -[visit_id dim#25464] -[visit_exp i#109043] -[visit_id i#109043] -[visit_exp (`I16`_lanetype, `%`_dim{i#109050}(8))] +[check_dims] I +dims \ I = +[visit_exp `VUNOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `NEG`_vunop_)] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `NEG`_vunop_)] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#109050}(8)] -[visit_exp i#109050] -[visit_id i#109050] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] [visit_exp `NEG`_vunop_] @@ -101622,48 +79724,28 @@ dims \ I = dim#25464, i#109043, i#109050, lanetype#25464, shape#4180 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I dim#25491 i#109100 i#109107 lanetype#25491 shape#4182 -dims \ I = dim#25491, i#109100, i#109107, lanetype#25491, shape#4182 -[visit_exp `VUNOP`_instr{shape#4182}(`%X%`_shape{lanetype#25491, dim#25491, i#109100}(`I32`_lanetype, `%`_dim{i#109107}(4)), `ABS`_vunop_)] -[visit_exp shape#4182] -[visit_id shape#4182] -[visit_exp (`%X%`_shape{lanetype#25491, dim#25491, i#109100}(`I32`_lanetype, `%`_dim{i#109107}(4)), `ABS`_vunop_)] -[visit_exp `%X%`_shape{lanetype#25491, dim#25491, i#109100}(`I32`_lanetype, `%`_dim{i#109107}(4))] -[visit_exp lanetype#25491] -[visit_id lanetype#25491] -[visit_exp dim#25491] -[visit_id dim#25491] -[visit_exp i#109100] -[visit_id i#109100] -[visit_exp (`I32`_lanetype, `%`_dim{i#109107}(4))] +[check_dims] I +dims \ I = +[visit_exp `VUNOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `ABS`_vunop_)] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `ABS`_vunop_)] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#109107}(4)] -[visit_exp i#109107] -[visit_id i#109107] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `ABS`_vunop_] [visit_exp ()] -[check_dims] I dim#25518 i#109157 i#109164 lanetype#25518 shape#4184 -dims \ I = dim#25518, i#109157, i#109164, lanetype#25518, shape#4184 -[visit_exp `VUNOP`_instr{shape#4184}(`%X%`_shape{lanetype#25518, dim#25518, i#109157}(`I32`_lanetype, `%`_dim{i#109164}(4)), `NEG`_vunop_)] -[visit_exp shape#4184] -[visit_id shape#4184] -[visit_exp (`%X%`_shape{lanetype#25518, dim#25518, i#109157}(`I32`_lanetype, `%`_dim{i#109164}(4)), `NEG`_vunop_)] -[visit_exp `%X%`_shape{lanetype#25518, dim#25518, i#109157}(`I32`_lanetype, `%`_dim{i#109164}(4))] -[visit_exp lanetype#25518] -[visit_id lanetype#25518] -[visit_exp dim#25518] -[visit_id dim#25518] -[visit_exp i#109157] -[visit_id i#109157] -[visit_exp (`I32`_lanetype, `%`_dim{i#109164}(4))] +[check_dims] I +dims \ I = +[visit_exp `VUNOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `NEG`_vunop_)] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `NEG`_vunop_)] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#109164}(4)] -[visit_exp i#109164] -[visit_id i#109164] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `NEG`_vunop_] @@ -101671,48 +79753,28 @@ dims \ I = dim#25518, i#109157, i#109164, lanetype#25518, shape#4184 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I dim#25545 i#109214 i#109221 lanetype#25545 shape#4186 -dims \ I = dim#25545, i#109214, i#109221, lanetype#25545, shape#4186 -[visit_exp `VUNOP`_instr{shape#4186}(`%X%`_shape{lanetype#25545, dim#25545, i#109214}(`I64`_lanetype, `%`_dim{i#109221}(2)), `ABS`_vunop_)] -[visit_exp shape#4186] -[visit_id shape#4186] -[visit_exp (`%X%`_shape{lanetype#25545, dim#25545, i#109214}(`I64`_lanetype, `%`_dim{i#109221}(2)), `ABS`_vunop_)] -[visit_exp `%X%`_shape{lanetype#25545, dim#25545, i#109214}(`I64`_lanetype, `%`_dim{i#109221}(2))] -[visit_exp lanetype#25545] -[visit_id lanetype#25545] -[visit_exp dim#25545] -[visit_id dim#25545] -[visit_exp i#109214] -[visit_id i#109214] -[visit_exp (`I64`_lanetype, `%`_dim{i#109221}(2))] +[check_dims] I +dims \ I = +[visit_exp `VUNOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `ABS`_vunop_)] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `ABS`_vunop_)] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#109221}(2)] -[visit_exp i#109221] -[visit_id i#109221] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `ABS`_vunop_] [visit_exp ()] -[check_dims] I dim#25572 i#109271 i#109278 lanetype#25572 shape#4188 -dims \ I = dim#25572, i#109271, i#109278, lanetype#25572, shape#4188 -[visit_exp `VUNOP`_instr{shape#4188}(`%X%`_shape{lanetype#25572, dim#25572, i#109271}(`I64`_lanetype, `%`_dim{i#109278}(2)), `NEG`_vunop_)] -[visit_exp shape#4188] -[visit_id shape#4188] -[visit_exp (`%X%`_shape{lanetype#25572, dim#25572, i#109271}(`I64`_lanetype, `%`_dim{i#109278}(2)), `NEG`_vunop_)] -[visit_exp `%X%`_shape{lanetype#25572, dim#25572, i#109271}(`I64`_lanetype, `%`_dim{i#109278}(2))] -[visit_exp lanetype#25572] -[visit_id lanetype#25572] -[visit_exp dim#25572] -[visit_id dim#25572] -[visit_exp i#109271] -[visit_id i#109271] -[visit_exp (`I64`_lanetype, `%`_dim{i#109278}(2))] +[check_dims] I +dims \ I = +[visit_exp `VUNOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `NEG`_vunop_)] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `NEG`_vunop_)] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#109278}(2)] -[visit_exp i#109278] -[visit_id i#109278] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `NEG`_vunop_] @@ -101720,163 +79782,93 @@ dims \ I = dim#25572, i#109271, i#109278, lanetype#25572, shape#4188 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I dim#25599 i#109328 i#109335 lanetype#25599 shape#4190 -dims \ I = dim#25599, i#109328, i#109335, lanetype#25599, shape#4190 -[visit_exp `VUNOP`_instr{shape#4190}(`%X%`_shape{lanetype#25599, dim#25599, i#109328}(`F32`_lanetype, `%`_dim{i#109335}(4)), `ABS`_vunop_)] -[visit_exp shape#4190] -[visit_id shape#4190] -[visit_exp (`%X%`_shape{lanetype#25599, dim#25599, i#109328}(`F32`_lanetype, `%`_dim{i#109335}(4)), `ABS`_vunop_)] -[visit_exp `%X%`_shape{lanetype#25599, dim#25599, i#109328}(`F32`_lanetype, `%`_dim{i#109335}(4))] -[visit_exp lanetype#25599] -[visit_id lanetype#25599] -[visit_exp dim#25599] -[visit_id dim#25599] -[visit_exp i#109328] -[visit_id i#109328] -[visit_exp (`F32`_lanetype, `%`_dim{i#109335}(4))] +[check_dims] I +dims \ I = +[visit_exp `VUNOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `ABS`_vunop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `ABS`_vunop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#109335}(4)] -[visit_exp i#109335] -[visit_id i#109335] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `ABS`_vunop_] [visit_exp ()] -[check_dims] I dim#25641 i#109400 i#109407 lanetype#25641 shape#4192 -dims \ I = dim#25641, i#109400, i#109407, lanetype#25641, shape#4192 -[visit_exp `VUNOP`_instr{shape#4192}(`%X%`_shape{lanetype#25641, dim#25641, i#109400}(`F32`_lanetype, `%`_dim{i#109407}(4)), `NEG`_vunop_)] -[visit_exp shape#4192] -[visit_id shape#4192] -[visit_exp (`%X%`_shape{lanetype#25641, dim#25641, i#109400}(`F32`_lanetype, `%`_dim{i#109407}(4)), `NEG`_vunop_)] -[visit_exp `%X%`_shape{lanetype#25641, dim#25641, i#109400}(`F32`_lanetype, `%`_dim{i#109407}(4))] -[visit_exp lanetype#25641] -[visit_id lanetype#25641] -[visit_exp dim#25641] -[visit_id dim#25641] -[visit_exp i#109400] -[visit_id i#109400] -[visit_exp (`F32`_lanetype, `%`_dim{i#109407}(4))] +[check_dims] I +dims \ I = +[visit_exp `VUNOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `NEG`_vunop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `NEG`_vunop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#109407}(4)] -[visit_exp i#109407] -[visit_id i#109407] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `NEG`_vunop_] [visit_exp ()] -[check_dims] I dim#25683 i#109472 i#109479 lanetype#25683 shape#4194 -dims \ I = dim#25683, i#109472, i#109479, lanetype#25683, shape#4194 -[visit_exp `VUNOP`_instr{shape#4194}(`%X%`_shape{lanetype#25683, dim#25683, i#109472}(`F32`_lanetype, `%`_dim{i#109479}(4)), `SQRT`_vunop_)] -[visit_exp shape#4194] -[visit_id shape#4194] -[visit_exp (`%X%`_shape{lanetype#25683, dim#25683, i#109472}(`F32`_lanetype, `%`_dim{i#109479}(4)), `SQRT`_vunop_)] -[visit_exp `%X%`_shape{lanetype#25683, dim#25683, i#109472}(`F32`_lanetype, `%`_dim{i#109479}(4))] -[visit_exp lanetype#25683] -[visit_id lanetype#25683] -[visit_exp dim#25683] -[visit_id dim#25683] -[visit_exp i#109472] -[visit_id i#109472] -[visit_exp (`F32`_lanetype, `%`_dim{i#109479}(4))] +[check_dims] I +dims \ I = +[visit_exp `VUNOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `SQRT`_vunop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `SQRT`_vunop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#109479}(4)] -[visit_exp i#109479] -[visit_id i#109479] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `SQRT`_vunop_] [visit_exp ()] -[check_dims] I dim#25725 i#109544 i#109551 lanetype#25725 shape#4196 -dims \ I = dim#25725, i#109544, i#109551, lanetype#25725, shape#4196 -[visit_exp `VUNOP`_instr{shape#4196}(`%X%`_shape{lanetype#25725, dim#25725, i#109544}(`F32`_lanetype, `%`_dim{i#109551}(4)), `CEIL`_vunop_)] -[visit_exp shape#4196] -[visit_id shape#4196] -[visit_exp (`%X%`_shape{lanetype#25725, dim#25725, i#109544}(`F32`_lanetype, `%`_dim{i#109551}(4)), `CEIL`_vunop_)] -[visit_exp `%X%`_shape{lanetype#25725, dim#25725, i#109544}(`F32`_lanetype, `%`_dim{i#109551}(4))] -[visit_exp lanetype#25725] -[visit_id lanetype#25725] -[visit_exp dim#25725] -[visit_id dim#25725] -[visit_exp i#109544] -[visit_id i#109544] -[visit_exp (`F32`_lanetype, `%`_dim{i#109551}(4))] +[check_dims] I +dims \ I = +[visit_exp `VUNOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `CEIL`_vunop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `CEIL`_vunop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#109551}(4)] -[visit_exp i#109551] -[visit_id i#109551] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `CEIL`_vunop_] [visit_exp ()] -[check_dims] I dim#25767 i#109616 i#109623 lanetype#25767 shape#4198 -dims \ I = dim#25767, i#109616, i#109623, lanetype#25767, shape#4198 -[visit_exp `VUNOP`_instr{shape#4198}(`%X%`_shape{lanetype#25767, dim#25767, i#109616}(`F32`_lanetype, `%`_dim{i#109623}(4)), `FLOOR`_vunop_)] -[visit_exp shape#4198] -[visit_id shape#4198] -[visit_exp (`%X%`_shape{lanetype#25767, dim#25767, i#109616}(`F32`_lanetype, `%`_dim{i#109623}(4)), `FLOOR`_vunop_)] -[visit_exp `%X%`_shape{lanetype#25767, dim#25767, i#109616}(`F32`_lanetype, `%`_dim{i#109623}(4))] -[visit_exp lanetype#25767] -[visit_id lanetype#25767] -[visit_exp dim#25767] -[visit_id dim#25767] -[visit_exp i#109616] -[visit_id i#109616] -[visit_exp (`F32`_lanetype, `%`_dim{i#109623}(4))] +[check_dims] I +dims \ I = +[visit_exp `VUNOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `FLOOR`_vunop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `FLOOR`_vunop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#109623}(4)] -[visit_exp i#109623] -[visit_id i#109623] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `FLOOR`_vunop_] [visit_exp ()] -[check_dims] I dim#25809 i#109688 i#109695 lanetype#25809 shape#4200 -dims \ I = dim#25809, i#109688, i#109695, lanetype#25809, shape#4200 -[visit_exp `VUNOP`_instr{shape#4200}(`%X%`_shape{lanetype#25809, dim#25809, i#109688}(`F32`_lanetype, `%`_dim{i#109695}(4)), `TRUNC`_vunop_)] -[visit_exp shape#4200] -[visit_id shape#4200] -[visit_exp (`%X%`_shape{lanetype#25809, dim#25809, i#109688}(`F32`_lanetype, `%`_dim{i#109695}(4)), `TRUNC`_vunop_)] -[visit_exp `%X%`_shape{lanetype#25809, dim#25809, i#109688}(`F32`_lanetype, `%`_dim{i#109695}(4))] -[visit_exp lanetype#25809] -[visit_id lanetype#25809] -[visit_exp dim#25809] -[visit_id dim#25809] -[visit_exp i#109688] -[visit_id i#109688] -[visit_exp (`F32`_lanetype, `%`_dim{i#109695}(4))] +[check_dims] I +dims \ I = +[visit_exp `VUNOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `TRUNC`_vunop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `TRUNC`_vunop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#109695}(4)] -[visit_exp i#109695] -[visit_id i#109695] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `TRUNC`_vunop_] [visit_exp ()] -[check_dims] I dim#25851 i#109760 i#109767 lanetype#25851 shape#4202 -dims \ I = dim#25851, i#109760, i#109767, lanetype#25851, shape#4202 -[visit_exp `VUNOP`_instr{shape#4202}(`%X%`_shape{lanetype#25851, dim#25851, i#109760}(`F32`_lanetype, `%`_dim{i#109767}(4)), `NEAREST`_vunop_)] -[visit_exp shape#4202] -[visit_id shape#4202] -[visit_exp (`%X%`_shape{lanetype#25851, dim#25851, i#109760}(`F32`_lanetype, `%`_dim{i#109767}(4)), `NEAREST`_vunop_)] -[visit_exp `%X%`_shape{lanetype#25851, dim#25851, i#109760}(`F32`_lanetype, `%`_dim{i#109767}(4))] -[visit_exp lanetype#25851] -[visit_id lanetype#25851] -[visit_exp dim#25851] -[visit_id dim#25851] -[visit_exp i#109760] -[visit_id i#109760] -[visit_exp (`F32`_lanetype, `%`_dim{i#109767}(4))] +[check_dims] I +dims \ I = +[visit_exp `VUNOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `NEAREST`_vunop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `NEAREST`_vunop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#109767}(4)] -[visit_exp i#109767] -[visit_id i#109767] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `NEAREST`_vunop_] @@ -101884,163 +79876,93 @@ dims \ I = dim#25851, i#109760, i#109767, lanetype#25851, shape#4202 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I dim#25893 i#109832 i#109839 lanetype#25893 shape#4204 -dims \ I = dim#25893, i#109832, i#109839, lanetype#25893, shape#4204 -[visit_exp `VUNOP`_instr{shape#4204}(`%X%`_shape{lanetype#25893, dim#25893, i#109832}(`F64`_lanetype, `%`_dim{i#109839}(2)), `ABS`_vunop_)] -[visit_exp shape#4204] -[visit_id shape#4204] -[visit_exp (`%X%`_shape{lanetype#25893, dim#25893, i#109832}(`F64`_lanetype, `%`_dim{i#109839}(2)), `ABS`_vunop_)] -[visit_exp `%X%`_shape{lanetype#25893, dim#25893, i#109832}(`F64`_lanetype, `%`_dim{i#109839}(2))] -[visit_exp lanetype#25893] -[visit_id lanetype#25893] -[visit_exp dim#25893] -[visit_id dim#25893] -[visit_exp i#109832] -[visit_id i#109832] -[visit_exp (`F64`_lanetype, `%`_dim{i#109839}(2))] +[check_dims] I +dims \ I = +[visit_exp `VUNOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `ABS`_vunop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `ABS`_vunop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#109839}(2)] -[visit_exp i#109839] -[visit_id i#109839] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `ABS`_vunop_] [visit_exp ()] -[check_dims] I dim#25935 i#109904 i#109911 lanetype#25935 shape#4206 -dims \ I = dim#25935, i#109904, i#109911, lanetype#25935, shape#4206 -[visit_exp `VUNOP`_instr{shape#4206}(`%X%`_shape{lanetype#25935, dim#25935, i#109904}(`F64`_lanetype, `%`_dim{i#109911}(2)), `NEG`_vunop_)] -[visit_exp shape#4206] -[visit_id shape#4206] -[visit_exp (`%X%`_shape{lanetype#25935, dim#25935, i#109904}(`F64`_lanetype, `%`_dim{i#109911}(2)), `NEG`_vunop_)] -[visit_exp `%X%`_shape{lanetype#25935, dim#25935, i#109904}(`F64`_lanetype, `%`_dim{i#109911}(2))] -[visit_exp lanetype#25935] -[visit_id lanetype#25935] -[visit_exp dim#25935] -[visit_id dim#25935] -[visit_exp i#109904] -[visit_id i#109904] -[visit_exp (`F64`_lanetype, `%`_dim{i#109911}(2))] +[check_dims] I +dims \ I = +[visit_exp `VUNOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `NEG`_vunop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `NEG`_vunop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#109911}(2)] -[visit_exp i#109911] -[visit_id i#109911] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `NEG`_vunop_] [visit_exp ()] -[check_dims] I dim#25977 i#109976 i#109983 lanetype#25977 shape#4208 -dims \ I = dim#25977, i#109976, i#109983, lanetype#25977, shape#4208 -[visit_exp `VUNOP`_instr{shape#4208}(`%X%`_shape{lanetype#25977, dim#25977, i#109976}(`F64`_lanetype, `%`_dim{i#109983}(2)), `SQRT`_vunop_)] -[visit_exp shape#4208] -[visit_id shape#4208] -[visit_exp (`%X%`_shape{lanetype#25977, dim#25977, i#109976}(`F64`_lanetype, `%`_dim{i#109983}(2)), `SQRT`_vunop_)] -[visit_exp `%X%`_shape{lanetype#25977, dim#25977, i#109976}(`F64`_lanetype, `%`_dim{i#109983}(2))] -[visit_exp lanetype#25977] -[visit_id lanetype#25977] -[visit_exp dim#25977] -[visit_id dim#25977] -[visit_exp i#109976] -[visit_id i#109976] -[visit_exp (`F64`_lanetype, `%`_dim{i#109983}(2))] +[check_dims] I +dims \ I = +[visit_exp `VUNOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `SQRT`_vunop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `SQRT`_vunop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#109983}(2)] -[visit_exp i#109983] -[visit_id i#109983] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `SQRT`_vunop_] [visit_exp ()] -[check_dims] I dim#26019 i#110048 i#110055 lanetype#26019 shape#4210 -dims \ I = dim#26019, i#110048, i#110055, lanetype#26019, shape#4210 -[visit_exp `VUNOP`_instr{shape#4210}(`%X%`_shape{lanetype#26019, dim#26019, i#110048}(`F64`_lanetype, `%`_dim{i#110055}(2)), `CEIL`_vunop_)] -[visit_exp shape#4210] -[visit_id shape#4210] -[visit_exp (`%X%`_shape{lanetype#26019, dim#26019, i#110048}(`F64`_lanetype, `%`_dim{i#110055}(2)), `CEIL`_vunop_)] -[visit_exp `%X%`_shape{lanetype#26019, dim#26019, i#110048}(`F64`_lanetype, `%`_dim{i#110055}(2))] -[visit_exp lanetype#26019] -[visit_id lanetype#26019] -[visit_exp dim#26019] -[visit_id dim#26019] -[visit_exp i#110048] -[visit_id i#110048] -[visit_exp (`F64`_lanetype, `%`_dim{i#110055}(2))] +[check_dims] I +dims \ I = +[visit_exp `VUNOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `CEIL`_vunop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `CEIL`_vunop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#110055}(2)] -[visit_exp i#110055] -[visit_id i#110055] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `CEIL`_vunop_] [visit_exp ()] -[check_dims] I dim#26061 i#110120 i#110127 lanetype#26061 shape#4212 -dims \ I = dim#26061, i#110120, i#110127, lanetype#26061, shape#4212 -[visit_exp `VUNOP`_instr{shape#4212}(`%X%`_shape{lanetype#26061, dim#26061, i#110120}(`F64`_lanetype, `%`_dim{i#110127}(2)), `FLOOR`_vunop_)] -[visit_exp shape#4212] -[visit_id shape#4212] -[visit_exp (`%X%`_shape{lanetype#26061, dim#26061, i#110120}(`F64`_lanetype, `%`_dim{i#110127}(2)), `FLOOR`_vunop_)] -[visit_exp `%X%`_shape{lanetype#26061, dim#26061, i#110120}(`F64`_lanetype, `%`_dim{i#110127}(2))] -[visit_exp lanetype#26061] -[visit_id lanetype#26061] -[visit_exp dim#26061] -[visit_id dim#26061] -[visit_exp i#110120] -[visit_id i#110120] -[visit_exp (`F64`_lanetype, `%`_dim{i#110127}(2))] +[check_dims] I +dims \ I = +[visit_exp `VUNOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `FLOOR`_vunop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `FLOOR`_vunop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#110127}(2)] -[visit_exp i#110127] -[visit_id i#110127] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `FLOOR`_vunop_] [visit_exp ()] -[check_dims] I dim#26103 i#110192 i#110199 lanetype#26103 shape#4214 -dims \ I = dim#26103, i#110192, i#110199, lanetype#26103, shape#4214 -[visit_exp `VUNOP`_instr{shape#4214}(`%X%`_shape{lanetype#26103, dim#26103, i#110192}(`F64`_lanetype, `%`_dim{i#110199}(2)), `TRUNC`_vunop_)] -[visit_exp shape#4214] -[visit_id shape#4214] -[visit_exp (`%X%`_shape{lanetype#26103, dim#26103, i#110192}(`F64`_lanetype, `%`_dim{i#110199}(2)), `TRUNC`_vunop_)] -[visit_exp `%X%`_shape{lanetype#26103, dim#26103, i#110192}(`F64`_lanetype, `%`_dim{i#110199}(2))] -[visit_exp lanetype#26103] -[visit_id lanetype#26103] -[visit_exp dim#26103] -[visit_id dim#26103] -[visit_exp i#110192] -[visit_id i#110192] -[visit_exp (`F64`_lanetype, `%`_dim{i#110199}(2))] +[check_dims] I +dims \ I = +[visit_exp `VUNOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `TRUNC`_vunop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `TRUNC`_vunop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#110199}(2)] -[visit_exp i#110199] -[visit_id i#110199] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `TRUNC`_vunop_] [visit_exp ()] -[check_dims] I dim#26145 i#110264 i#110271 lanetype#26145 shape#4216 -dims \ I = dim#26145, i#110264, i#110271, lanetype#26145, shape#4216 -[visit_exp `VUNOP`_instr{shape#4216}(`%X%`_shape{lanetype#26145, dim#26145, i#110264}(`F64`_lanetype, `%`_dim{i#110271}(2)), `NEAREST`_vunop_)] -[visit_exp shape#4216] -[visit_id shape#4216] -[visit_exp (`%X%`_shape{lanetype#26145, dim#26145, i#110264}(`F64`_lanetype, `%`_dim{i#110271}(2)), `NEAREST`_vunop_)] -[visit_exp `%X%`_shape{lanetype#26145, dim#26145, i#110264}(`F64`_lanetype, `%`_dim{i#110271}(2))] -[visit_exp lanetype#26145] -[visit_id lanetype#26145] -[visit_exp dim#26145] -[visit_id dim#26145] -[visit_exp i#110264] -[visit_id i#110264] -[visit_exp (`F64`_lanetype, `%`_dim{i#110271}(2))] +[check_dims] I +dims \ I = +[visit_exp `VUNOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `NEAREST`_vunop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `NEAREST`_vunop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#110271}(2)] -[visit_exp i#110271] -[visit_id i#110271] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `NEAREST`_vunop_] @@ -102048,49 +79970,33 @@ dims \ I = dim#26145, i#110264, i#110271, lanetype#26145, shape#4216 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I vectype#320 vvbinop#15 -dims \ I = vectype#320, vvbinop#15 -[visit_exp `VVBINOP`_instr{vectype#320, vvbinop#15}(`V128`_vectype, `AND`_vvbinop)] -[visit_exp vectype#320] -[visit_id vectype#320] -[visit_exp vvbinop#15] -[visit_id vvbinop#15] +[check_dims] I +dims \ I = +[visit_exp `VVBINOP`_instr(`V128`_vectype, `AND`_vvbinop)] [visit_exp (`V128`_vectype, `AND`_vvbinop)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp `AND`_vvbinop] [visit_exp ()] -[check_dims] I vectype#322 vvbinop#17 -dims \ I = vectype#322, vvbinop#17 -[visit_exp `VVBINOP`_instr{vectype#322, vvbinop#17}(`V128`_vectype, `ANDNOT`_vvbinop)] -[visit_exp vectype#322] -[visit_id vectype#322] -[visit_exp vvbinop#17] -[visit_id vvbinop#17] +[check_dims] I +dims \ I = +[visit_exp `VVBINOP`_instr(`V128`_vectype, `ANDNOT`_vvbinop)] [visit_exp (`V128`_vectype, `ANDNOT`_vvbinop)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp `ANDNOT`_vvbinop] [visit_exp ()] -[check_dims] I vectype#324 vvbinop#19 -dims \ I = vectype#324, vvbinop#19 -[visit_exp `VVBINOP`_instr{vectype#324, vvbinop#19}(`V128`_vectype, `OR`_vvbinop)] -[visit_exp vectype#324] -[visit_id vectype#324] -[visit_exp vvbinop#19] -[visit_id vvbinop#19] +[check_dims] I +dims \ I = +[visit_exp `VVBINOP`_instr(`V128`_vectype, `OR`_vvbinop)] [visit_exp (`V128`_vectype, `OR`_vvbinop)] [visit_exp `V128`_vectype] [visit_exp ()] [visit_exp `OR`_vvbinop] [visit_exp ()] -[check_dims] I vectype#326 vvbinop#21 -dims \ I = vectype#326, vvbinop#21 -[visit_exp `VVBINOP`_instr{vectype#326, vvbinop#21}(`V128`_vectype, `XOR`_vvbinop)] -[visit_exp vectype#326] -[visit_id vectype#326] -[visit_exp vvbinop#21] -[visit_id vvbinop#21] +[check_dims] I +dims \ I = +[visit_exp `VVBINOP`_instr(`V128`_vectype, `XOR`_vvbinop)] [visit_exp (`V128`_vectype, `XOR`_vvbinop)] [visit_exp `V128`_vectype] [visit_exp ()] @@ -102099,287 +80005,161 @@ dims \ I = vectype#326, vvbinop#21 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I dim#26187 i#110336 i#110343 lanetype#26187 shape#4218 -dims \ I = dim#26187, i#110336, i#110343, lanetype#26187, shape#4218 -[visit_exp `VBINOP`_instr{shape#4218}(`%X%`_shape{lanetype#26187, dim#26187, i#110336}(`I8`_lanetype, `%`_dim{i#110343}(16)), `ADD`_vbinop_)] -[visit_exp shape#4218] -[visit_id shape#4218] -[visit_exp (`%X%`_shape{lanetype#26187, dim#26187, i#110336}(`I8`_lanetype, `%`_dim{i#110343}(16)), `ADD`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#26187, dim#26187, i#110336}(`I8`_lanetype, `%`_dim{i#110343}(16))] -[visit_exp lanetype#26187] -[visit_id lanetype#26187] -[visit_exp dim#26187] -[visit_id dim#26187] -[visit_exp i#110336] -[visit_id i#110336] -[visit_exp (`I8`_lanetype, `%`_dim{i#110343}(16))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `ADD`_vbinop_)] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `ADD`_vbinop_)] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#110343}(16)] -[visit_exp i#110343] -[visit_id i#110343] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] [visit_exp `ADD`_vbinop_] [visit_exp ()] -[check_dims] I dim#26214 i#110393 i#110400 lanetype#26214 shape#4220 sx#25854 -dims \ I = dim#26214, i#110393, i#110400, lanetype#26214, shape#4220, sx#25854 -[visit_exp `VBINOP`_instr{shape#4220}(`%X%`_shape{lanetype#26214, dim#26214, i#110393}(`I8`_lanetype, `%`_dim{i#110400}(16)), `ADD_SAT`_vbinop_{sx#25854}(`S`_sx))] -[visit_exp shape#4220] -[visit_id shape#4220] -[visit_exp (`%X%`_shape{lanetype#26214, dim#26214, i#110393}(`I8`_lanetype, `%`_dim{i#110400}(16)), `ADD_SAT`_vbinop_{sx#25854}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#26214, dim#26214, i#110393}(`I8`_lanetype, `%`_dim{i#110400}(16))] -[visit_exp lanetype#26214] -[visit_id lanetype#26214] -[visit_exp dim#26214] -[visit_id dim#26214] -[visit_exp i#110393] -[visit_id i#110393] -[visit_exp (`I8`_lanetype, `%`_dim{i#110400}(16))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `ADD_SAT`_vbinop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `ADD_SAT`_vbinop_(`S`_sx))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#110400}(16)] -[visit_exp i#110400] -[visit_id i#110400] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `ADD_SAT`_vbinop_{sx#25854}(`S`_sx)] -[visit_exp sx#25854] -[visit_id sx#25854] +[visit_exp `ADD_SAT`_vbinop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I dim#26256 i#110495 i#110502 lanetype#26256 shape#4222 sx#25978 -dims \ I = dim#26256, i#110495, i#110502, lanetype#26256, shape#4222, sx#25978 -[visit_exp `VBINOP`_instr{shape#4222}(`%X%`_shape{lanetype#26256, dim#26256, i#110495}(`I8`_lanetype, `%`_dim{i#110502}(16)), `ADD_SAT`_vbinop_{sx#25978}(`U`_sx))] -[visit_exp shape#4222] -[visit_id shape#4222] -[visit_exp (`%X%`_shape{lanetype#26256, dim#26256, i#110495}(`I8`_lanetype, `%`_dim{i#110502}(16)), `ADD_SAT`_vbinop_{sx#25978}(`U`_sx))] -[visit_exp `%X%`_shape{lanetype#26256, dim#26256, i#110495}(`I8`_lanetype, `%`_dim{i#110502}(16))] -[visit_exp lanetype#26256] -[visit_id lanetype#26256] -[visit_exp dim#26256] -[visit_id dim#26256] -[visit_exp i#110495] -[visit_id i#110495] -[visit_exp (`I8`_lanetype, `%`_dim{i#110502}(16))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `ADD_SAT`_vbinop_(`U`_sx))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `ADD_SAT`_vbinop_(`U`_sx))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#110502}(16)] -[visit_exp i#110502] -[visit_id i#110502] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `ADD_SAT`_vbinop_{sx#25978}(`U`_sx)] -[visit_exp sx#25978] -[visit_id sx#25978] +[visit_exp `ADD_SAT`_vbinop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I dim#26298 i#110597 i#110604 lanetype#26298 shape#4224 -dims \ I = dim#26298, i#110597, i#110604, lanetype#26298, shape#4224 -[visit_exp `VBINOP`_instr{shape#4224}(`%X%`_shape{lanetype#26298, dim#26298, i#110597}(`I8`_lanetype, `%`_dim{i#110604}(16)), `SUB`_vbinop_)] -[visit_exp shape#4224] -[visit_id shape#4224] -[visit_exp (`%X%`_shape{lanetype#26298, dim#26298, i#110597}(`I8`_lanetype, `%`_dim{i#110604}(16)), `SUB`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#26298, dim#26298, i#110597}(`I8`_lanetype, `%`_dim{i#110604}(16))] -[visit_exp lanetype#26298] -[visit_id lanetype#26298] -[visit_exp dim#26298] -[visit_id dim#26298] -[visit_exp i#110597] -[visit_id i#110597] -[visit_exp (`I8`_lanetype, `%`_dim{i#110604}(16))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `SUB`_vbinop_)] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `SUB`_vbinop_)] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#110604}(16)] -[visit_exp i#110604] -[visit_id i#110604] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] [visit_exp `SUB`_vbinop_] [visit_exp ()] -[check_dims] I dim#26325 i#110654 i#110661 lanetype#26325 shape#4226 sx#26162 -dims \ I = dim#26325, i#110654, i#110661, lanetype#26325, shape#4226, sx#26162 -[visit_exp `VBINOP`_instr{shape#4226}(`%X%`_shape{lanetype#26325, dim#26325, i#110654}(`I8`_lanetype, `%`_dim{i#110661}(16)), `SUB_SAT`_vbinop_{sx#26162}(`S`_sx))] -[visit_exp shape#4226] -[visit_id shape#4226] -[visit_exp (`%X%`_shape{lanetype#26325, dim#26325, i#110654}(`I8`_lanetype, `%`_dim{i#110661}(16)), `SUB_SAT`_vbinop_{sx#26162}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#26325, dim#26325, i#110654}(`I8`_lanetype, `%`_dim{i#110661}(16))] -[visit_exp lanetype#26325] -[visit_id lanetype#26325] -[visit_exp dim#26325] -[visit_id dim#26325] -[visit_exp i#110654] -[visit_id i#110654] -[visit_exp (`I8`_lanetype, `%`_dim{i#110661}(16))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `SUB_SAT`_vbinop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `SUB_SAT`_vbinop_(`S`_sx))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#110661}(16)] -[visit_exp i#110661] -[visit_id i#110661] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `SUB_SAT`_vbinop_{sx#26162}(`S`_sx)] -[visit_exp sx#26162] -[visit_id sx#26162] +[visit_exp `SUB_SAT`_vbinop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I dim#26367 i#110756 i#110763 lanetype#26367 shape#4228 sx#26286 -dims \ I = dim#26367, i#110756, i#110763, lanetype#26367, shape#4228, sx#26286 -[visit_exp `VBINOP`_instr{shape#4228}(`%X%`_shape{lanetype#26367, dim#26367, i#110756}(`I8`_lanetype, `%`_dim{i#110763}(16)), `SUB_SAT`_vbinop_{sx#26286}(`U`_sx))] -[visit_exp shape#4228] -[visit_id shape#4228] -[visit_exp (`%X%`_shape{lanetype#26367, dim#26367, i#110756}(`I8`_lanetype, `%`_dim{i#110763}(16)), `SUB_SAT`_vbinop_{sx#26286}(`U`_sx))] -[visit_exp `%X%`_shape{lanetype#26367, dim#26367, i#110756}(`I8`_lanetype, `%`_dim{i#110763}(16))] -[visit_exp lanetype#26367] -[visit_id lanetype#26367] -[visit_exp dim#26367] -[visit_id dim#26367] -[visit_exp i#110756] -[visit_id i#110756] -[visit_exp (`I8`_lanetype, `%`_dim{i#110763}(16))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `SUB_SAT`_vbinop_(`U`_sx))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `SUB_SAT`_vbinop_(`U`_sx))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#110763}(16)] -[visit_exp i#110763] -[visit_id i#110763] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `SUB_SAT`_vbinop_{sx#26286}(`U`_sx)] -[visit_exp sx#26286] -[visit_id sx#26286] +[visit_exp `SUB_SAT`_vbinop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I dim#26409 i#110858 i#110865 lanetype#26409 shape#4230 sx#26410 -dims \ I = dim#26409, i#110858, i#110865, lanetype#26409, shape#4230, sx#26410 -[visit_exp `VBINOP`_instr{shape#4230}(`%X%`_shape{lanetype#26409, dim#26409, i#110858}(`I8`_lanetype, `%`_dim{i#110865}(16)), `MIN`_vbinop_{sx#26410}(`S`_sx))] -[visit_exp shape#4230] -[visit_id shape#4230] -[visit_exp (`%X%`_shape{lanetype#26409, dim#26409, i#110858}(`I8`_lanetype, `%`_dim{i#110865}(16)), `MIN`_vbinop_{sx#26410}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#26409, dim#26409, i#110858}(`I8`_lanetype, `%`_dim{i#110865}(16))] -[visit_exp lanetype#26409] -[visit_id lanetype#26409] -[visit_exp dim#26409] -[visit_id dim#26409] -[visit_exp i#110858] -[visit_id i#110858] -[visit_exp (`I8`_lanetype, `%`_dim{i#110865}(16))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `MIN`_vbinop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `MIN`_vbinop_(`S`_sx))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#110865}(16)] -[visit_exp i#110865] -[visit_id i#110865] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `MIN`_vbinop_{sx#26410}(`S`_sx)] -[visit_exp sx#26410] -[visit_id sx#26410] +[visit_exp `MIN`_vbinop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I dim#26451 i#110960 i#110967 lanetype#26451 shape#4232 sx#26534 -dims \ I = dim#26451, i#110960, i#110967, lanetype#26451, shape#4232, sx#26534 -[visit_exp `VBINOP`_instr{shape#4232}(`%X%`_shape{lanetype#26451, dim#26451, i#110960}(`I8`_lanetype, `%`_dim{i#110967}(16)), `MIN`_vbinop_{sx#26534}(`U`_sx))] -[visit_exp shape#4232] -[visit_id shape#4232] -[visit_exp (`%X%`_shape{lanetype#26451, dim#26451, i#110960}(`I8`_lanetype, `%`_dim{i#110967}(16)), `MIN`_vbinop_{sx#26534}(`U`_sx))] -[visit_exp `%X%`_shape{lanetype#26451, dim#26451, i#110960}(`I8`_lanetype, `%`_dim{i#110967}(16))] -[visit_exp lanetype#26451] -[visit_id lanetype#26451] -[visit_exp dim#26451] -[visit_id dim#26451] -[visit_exp i#110960] -[visit_id i#110960] -[visit_exp (`I8`_lanetype, `%`_dim{i#110967}(16))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `MIN`_vbinop_(`U`_sx))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `MIN`_vbinop_(`U`_sx))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#110967}(16)] -[visit_exp i#110967] -[visit_id i#110967] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `MIN`_vbinop_{sx#26534}(`U`_sx)] -[visit_exp sx#26534] -[visit_id sx#26534] +[visit_exp `MIN`_vbinop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I dim#26493 i#111062 i#111069 lanetype#26493 shape#4234 sx#26658 -dims \ I = dim#26493, i#111062, i#111069, lanetype#26493, shape#4234, sx#26658 -[visit_exp `VBINOP`_instr{shape#4234}(`%X%`_shape{lanetype#26493, dim#26493, i#111062}(`I8`_lanetype, `%`_dim{i#111069}(16)), `MAX`_vbinop_{sx#26658}(`S`_sx))] -[visit_exp shape#4234] -[visit_id shape#4234] -[visit_exp (`%X%`_shape{lanetype#26493, dim#26493, i#111062}(`I8`_lanetype, `%`_dim{i#111069}(16)), `MAX`_vbinop_{sx#26658}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#26493, dim#26493, i#111062}(`I8`_lanetype, `%`_dim{i#111069}(16))] -[visit_exp lanetype#26493] -[visit_id lanetype#26493] -[visit_exp dim#26493] -[visit_id dim#26493] -[visit_exp i#111062] -[visit_id i#111062] -[visit_exp (`I8`_lanetype, `%`_dim{i#111069}(16))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `MAX`_vbinop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `MAX`_vbinop_(`S`_sx))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#111069}(16)] -[visit_exp i#111069] -[visit_id i#111069] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `MAX`_vbinop_{sx#26658}(`S`_sx)] -[visit_exp sx#26658] -[visit_id sx#26658] +[visit_exp `MAX`_vbinop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I dim#26535 i#111164 i#111171 lanetype#26535 shape#4236 sx#26782 -dims \ I = dim#26535, i#111164, i#111171, lanetype#26535, shape#4236, sx#26782 -[visit_exp `VBINOP`_instr{shape#4236}(`%X%`_shape{lanetype#26535, dim#26535, i#111164}(`I8`_lanetype, `%`_dim{i#111171}(16)), `MAX`_vbinop_{sx#26782}(`U`_sx))] -[visit_exp shape#4236] -[visit_id shape#4236] -[visit_exp (`%X%`_shape{lanetype#26535, dim#26535, i#111164}(`I8`_lanetype, `%`_dim{i#111171}(16)), `MAX`_vbinop_{sx#26782}(`U`_sx))] -[visit_exp `%X%`_shape{lanetype#26535, dim#26535, i#111164}(`I8`_lanetype, `%`_dim{i#111171}(16))] -[visit_exp lanetype#26535] -[visit_id lanetype#26535] -[visit_exp dim#26535] -[visit_id dim#26535] -[visit_exp i#111164] -[visit_id i#111164] -[visit_exp (`I8`_lanetype, `%`_dim{i#111171}(16))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `MAX`_vbinop_(`U`_sx))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `MAX`_vbinop_(`U`_sx))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#111171}(16)] -[visit_exp i#111171] -[visit_id i#111171] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `MAX`_vbinop_{sx#26782}(`U`_sx)] -[visit_exp sx#26782] -[visit_id sx#26782] +[visit_exp `MAX`_vbinop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I dim#26577 i#111266 i#111273 lanetype#26577 shape#4238 -dims \ I = dim#26577, i#111266, i#111273, lanetype#26577, shape#4238 -[visit_exp `VBINOP`_instr{shape#4238}(`%X%`_shape{lanetype#26577, dim#26577, i#111266}(`I8`_lanetype, `%`_dim{i#111273}(16)), `AVGRU`_vbinop_)] -[visit_exp shape#4238] -[visit_id shape#4238] -[visit_exp (`%X%`_shape{lanetype#26577, dim#26577, i#111266}(`I8`_lanetype, `%`_dim{i#111273}(16)), `AVGRU`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#26577, dim#26577, i#111266}(`I8`_lanetype, `%`_dim{i#111273}(16))] -[visit_exp lanetype#26577] -[visit_id lanetype#26577] -[visit_exp dim#26577] -[visit_id dim#26577] -[visit_exp i#111266] -[visit_id i#111266] -[visit_exp (`I8`_lanetype, `%`_dim{i#111273}(16))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `AVGRU`_vbinop_)] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `AVGRU`_vbinop_)] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#111273}(16)] -[visit_exp i#111273] -[visit_id i#111273] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] [visit_exp `AVGRU`_vbinop_] @@ -102387,356 +80167,200 @@ dims \ I = dim#26577, i#111266, i#111273, lanetype#26577, shape#4238 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I dim#26619 i#111368 i#111375 lanetype#26619 shape#4240 -dims \ I = dim#26619, i#111368, i#111375, lanetype#26619, shape#4240 -[visit_exp `VBINOP`_instr{shape#4240}(`%X%`_shape{lanetype#26619, dim#26619, i#111368}(`I16`_lanetype, `%`_dim{i#111375}(8)), `ADD`_vbinop_)] -[visit_exp shape#4240] -[visit_id shape#4240] -[visit_exp (`%X%`_shape{lanetype#26619, dim#26619, i#111368}(`I16`_lanetype, `%`_dim{i#111375}(8)), `ADD`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#26619, dim#26619, i#111368}(`I16`_lanetype, `%`_dim{i#111375}(8))] -[visit_exp lanetype#26619] -[visit_id lanetype#26619] -[visit_exp dim#26619] -[visit_id dim#26619] -[visit_exp i#111368] -[visit_id i#111368] -[visit_exp (`I16`_lanetype, `%`_dim{i#111375}(8))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `ADD`_vbinop_)] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `ADD`_vbinop_)] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#111375}(8)] -[visit_exp i#111375] -[visit_id i#111375] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] [visit_exp `ADD`_vbinop_] [visit_exp ()] -[check_dims] I dim#26646 i#111425 i#111432 lanetype#26646 shape#4242 sx#27086 -dims \ I = dim#26646, i#111425, i#111432, lanetype#26646, shape#4242, sx#27086 -[visit_exp `VBINOP`_instr{shape#4242}(`%X%`_shape{lanetype#26646, dim#26646, i#111425}(`I16`_lanetype, `%`_dim{i#111432}(8)), `ADD_SAT`_vbinop_{sx#27086}(`S`_sx))] -[visit_exp shape#4242] -[visit_id shape#4242] -[visit_exp (`%X%`_shape{lanetype#26646, dim#26646, i#111425}(`I16`_lanetype, `%`_dim{i#111432}(8)), `ADD_SAT`_vbinop_{sx#27086}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#26646, dim#26646, i#111425}(`I16`_lanetype, `%`_dim{i#111432}(8))] -[visit_exp lanetype#26646] -[visit_id lanetype#26646] -[visit_exp dim#26646] -[visit_id dim#26646] -[visit_exp i#111425] -[visit_id i#111425] -[visit_exp (`I16`_lanetype, `%`_dim{i#111432}(8))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `ADD_SAT`_vbinop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `ADD_SAT`_vbinop_(`S`_sx))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#111432}(8)] -[visit_exp i#111432] -[visit_id i#111432] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `ADD_SAT`_vbinop_{sx#27086}(`S`_sx)] -[visit_exp sx#27086] -[visit_id sx#27086] +[visit_exp `ADD_SAT`_vbinop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I dim#26688 i#111527 i#111534 lanetype#26688 shape#4244 sx#27210 -dims \ I = dim#26688, i#111527, i#111534, lanetype#26688, shape#4244, sx#27210 -[visit_exp `VBINOP`_instr{shape#4244}(`%X%`_shape{lanetype#26688, dim#26688, i#111527}(`I16`_lanetype, `%`_dim{i#111534}(8)), `ADD_SAT`_vbinop_{sx#27210}(`U`_sx))] -[visit_exp shape#4244] -[visit_id shape#4244] -[visit_exp (`%X%`_shape{lanetype#26688, dim#26688, i#111527}(`I16`_lanetype, `%`_dim{i#111534}(8)), `ADD_SAT`_vbinop_{sx#27210}(`U`_sx))] -[visit_exp `%X%`_shape{lanetype#26688, dim#26688, i#111527}(`I16`_lanetype, `%`_dim{i#111534}(8))] -[visit_exp lanetype#26688] -[visit_id lanetype#26688] -[visit_exp dim#26688] -[visit_id dim#26688] -[visit_exp i#111527] -[visit_id i#111527] -[visit_exp (`I16`_lanetype, `%`_dim{i#111534}(8))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `ADD_SAT`_vbinop_(`U`_sx))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `ADD_SAT`_vbinop_(`U`_sx))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#111534}(8)] -[visit_exp i#111534] -[visit_id i#111534] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `ADD_SAT`_vbinop_{sx#27210}(`U`_sx)] -[visit_exp sx#27210] -[visit_id sx#27210] +[visit_exp `ADD_SAT`_vbinop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I dim#26730 i#111629 i#111636 lanetype#26730 shape#4246 -dims \ I = dim#26730, i#111629, i#111636, lanetype#26730, shape#4246 -[visit_exp `VBINOP`_instr{shape#4246}(`%X%`_shape{lanetype#26730, dim#26730, i#111629}(`I16`_lanetype, `%`_dim{i#111636}(8)), `SUB`_vbinop_)] -[visit_exp shape#4246] -[visit_id shape#4246] -[visit_exp (`%X%`_shape{lanetype#26730, dim#26730, i#111629}(`I16`_lanetype, `%`_dim{i#111636}(8)), `SUB`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#26730, dim#26730, i#111629}(`I16`_lanetype, `%`_dim{i#111636}(8))] -[visit_exp lanetype#26730] -[visit_id lanetype#26730] -[visit_exp dim#26730] -[visit_id dim#26730] -[visit_exp i#111629] -[visit_id i#111629] -[visit_exp (`I16`_lanetype, `%`_dim{i#111636}(8))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `SUB`_vbinop_)] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `SUB`_vbinop_)] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#111636}(8)] -[visit_exp i#111636] -[visit_id i#111636] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] [visit_exp `SUB`_vbinop_] [visit_exp ()] -[check_dims] I dim#26757 i#111686 i#111693 lanetype#26757 shape#4248 sx#27394 -dims \ I = dim#26757, i#111686, i#111693, lanetype#26757, shape#4248, sx#27394 -[visit_exp `VBINOP`_instr{shape#4248}(`%X%`_shape{lanetype#26757, dim#26757, i#111686}(`I16`_lanetype, `%`_dim{i#111693}(8)), `SUB_SAT`_vbinop_{sx#27394}(`S`_sx))] -[visit_exp shape#4248] -[visit_id shape#4248] -[visit_exp (`%X%`_shape{lanetype#26757, dim#26757, i#111686}(`I16`_lanetype, `%`_dim{i#111693}(8)), `SUB_SAT`_vbinop_{sx#27394}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#26757, dim#26757, i#111686}(`I16`_lanetype, `%`_dim{i#111693}(8))] -[visit_exp lanetype#26757] -[visit_id lanetype#26757] -[visit_exp dim#26757] -[visit_id dim#26757] -[visit_exp i#111686] -[visit_id i#111686] -[visit_exp (`I16`_lanetype, `%`_dim{i#111693}(8))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `SUB_SAT`_vbinop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `SUB_SAT`_vbinop_(`S`_sx))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#111693}(8)] -[visit_exp i#111693] -[visit_id i#111693] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `SUB_SAT`_vbinop_{sx#27394}(`S`_sx)] -[visit_exp sx#27394] -[visit_id sx#27394] +[visit_exp `SUB_SAT`_vbinop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I dim#26799 i#111788 i#111795 lanetype#26799 shape#4250 sx#27518 -dims \ I = dim#26799, i#111788, i#111795, lanetype#26799, shape#4250, sx#27518 -[visit_exp `VBINOP`_instr{shape#4250}(`%X%`_shape{lanetype#26799, dim#26799, i#111788}(`I16`_lanetype, `%`_dim{i#111795}(8)), `SUB_SAT`_vbinop_{sx#27518}(`U`_sx))] -[visit_exp shape#4250] -[visit_id shape#4250] -[visit_exp (`%X%`_shape{lanetype#26799, dim#26799, i#111788}(`I16`_lanetype, `%`_dim{i#111795}(8)), `SUB_SAT`_vbinop_{sx#27518}(`U`_sx))] -[visit_exp `%X%`_shape{lanetype#26799, dim#26799, i#111788}(`I16`_lanetype, `%`_dim{i#111795}(8))] -[visit_exp lanetype#26799] -[visit_id lanetype#26799] -[visit_exp dim#26799] -[visit_id dim#26799] -[visit_exp i#111788] -[visit_id i#111788] -[visit_exp (`I16`_lanetype, `%`_dim{i#111795}(8))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `SUB_SAT`_vbinop_(`U`_sx))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `SUB_SAT`_vbinop_(`U`_sx))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#111795}(8)] -[visit_exp i#111795] -[visit_id i#111795] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `SUB_SAT`_vbinop_{sx#27518}(`U`_sx)] -[visit_exp sx#27518] -[visit_id sx#27518] +[visit_exp `SUB_SAT`_vbinop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I dim#26841 i#111890 i#111897 lanetype#26841 shape#4252 -dims \ I = dim#26841, i#111890, i#111897, lanetype#26841, shape#4252 -[visit_exp `VBINOP`_instr{shape#4252}(`%X%`_shape{lanetype#26841, dim#26841, i#111890}(`I16`_lanetype, `%`_dim{i#111897}(8)), `MUL`_vbinop_)] -[visit_exp shape#4252] -[visit_id shape#4252] -[visit_exp (`%X%`_shape{lanetype#26841, dim#26841, i#111890}(`I16`_lanetype, `%`_dim{i#111897}(8)), `MUL`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#26841, dim#26841, i#111890}(`I16`_lanetype, `%`_dim{i#111897}(8))] -[visit_exp lanetype#26841] -[visit_id lanetype#26841] -[visit_exp dim#26841] -[visit_id dim#26841] -[visit_exp i#111890] -[visit_id i#111890] -[visit_exp (`I16`_lanetype, `%`_dim{i#111897}(8))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `MUL`_vbinop_)] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `MUL`_vbinop_)] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#111897}(8)] -[visit_exp i#111897] -[visit_id i#111897] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] [visit_exp `MUL`_vbinop_] [visit_exp ()] -[check_dims] I dim#26868 i#111947 i#111954 lanetype#26868 shape#4254 sx#27702 -dims \ I = dim#26868, i#111947, i#111954, lanetype#26868, shape#4254, sx#27702 -[visit_exp `VBINOP`_instr{shape#4254}(`%X%`_shape{lanetype#26868, dim#26868, i#111947}(`I16`_lanetype, `%`_dim{i#111954}(8)), `MIN`_vbinop_{sx#27702}(`S`_sx))] -[visit_exp shape#4254] -[visit_id shape#4254] -[visit_exp (`%X%`_shape{lanetype#26868, dim#26868, i#111947}(`I16`_lanetype, `%`_dim{i#111954}(8)), `MIN`_vbinop_{sx#27702}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#26868, dim#26868, i#111947}(`I16`_lanetype, `%`_dim{i#111954}(8))] -[visit_exp lanetype#26868] -[visit_id lanetype#26868] -[visit_exp dim#26868] -[visit_id dim#26868] -[visit_exp i#111947] -[visit_id i#111947] -[visit_exp (`I16`_lanetype, `%`_dim{i#111954}(8))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `MIN`_vbinop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `MIN`_vbinop_(`S`_sx))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#111954}(8)] -[visit_exp i#111954] -[visit_id i#111954] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `MIN`_vbinop_{sx#27702}(`S`_sx)] -[visit_exp sx#27702] -[visit_id sx#27702] +[visit_exp `MIN`_vbinop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I dim#26910 i#112049 i#112056 lanetype#26910 shape#4256 sx#27826 -dims \ I = dim#26910, i#112049, i#112056, lanetype#26910, shape#4256, sx#27826 -[visit_exp `VBINOP`_instr{shape#4256}(`%X%`_shape{lanetype#26910, dim#26910, i#112049}(`I16`_lanetype, `%`_dim{i#112056}(8)), `MIN`_vbinop_{sx#27826}(`U`_sx))] -[visit_exp shape#4256] -[visit_id shape#4256] -[visit_exp (`%X%`_shape{lanetype#26910, dim#26910, i#112049}(`I16`_lanetype, `%`_dim{i#112056}(8)), `MIN`_vbinop_{sx#27826}(`U`_sx))] -[visit_exp `%X%`_shape{lanetype#26910, dim#26910, i#112049}(`I16`_lanetype, `%`_dim{i#112056}(8))] -[visit_exp lanetype#26910] -[visit_id lanetype#26910] -[visit_exp dim#26910] -[visit_id dim#26910] -[visit_exp i#112049] -[visit_id i#112049] -[visit_exp (`I16`_lanetype, `%`_dim{i#112056}(8))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `MIN`_vbinop_(`U`_sx))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `MIN`_vbinop_(`U`_sx))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#112056}(8)] -[visit_exp i#112056] -[visit_id i#112056] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `MIN`_vbinop_{sx#27826}(`U`_sx)] -[visit_exp sx#27826] -[visit_id sx#27826] +[visit_exp `MIN`_vbinop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I dim#26952 i#112151 i#112158 lanetype#26952 shape#4258 sx#27950 -dims \ I = dim#26952, i#112151, i#112158, lanetype#26952, shape#4258, sx#27950 -[visit_exp `VBINOP`_instr{shape#4258}(`%X%`_shape{lanetype#26952, dim#26952, i#112151}(`I16`_lanetype, `%`_dim{i#112158}(8)), `MAX`_vbinop_{sx#27950}(`S`_sx))] -[visit_exp shape#4258] -[visit_id shape#4258] -[visit_exp (`%X%`_shape{lanetype#26952, dim#26952, i#112151}(`I16`_lanetype, `%`_dim{i#112158}(8)), `MAX`_vbinop_{sx#27950}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#26952, dim#26952, i#112151}(`I16`_lanetype, `%`_dim{i#112158}(8))] -[visit_exp lanetype#26952] -[visit_id lanetype#26952] -[visit_exp dim#26952] -[visit_id dim#26952] -[visit_exp i#112151] -[visit_id i#112151] -[visit_exp (`I16`_lanetype, `%`_dim{i#112158}(8))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `MAX`_vbinop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `MAX`_vbinop_(`S`_sx))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#112158}(8)] -[visit_exp i#112158] -[visit_id i#112158] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `MAX`_vbinop_{sx#27950}(`S`_sx)] -[visit_exp sx#27950] -[visit_id sx#27950] +[visit_exp `MAX`_vbinop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I dim#26994 i#112253 i#112260 lanetype#26994 shape#4260 sx#28074 -dims \ I = dim#26994, i#112253, i#112260, lanetype#26994, shape#4260, sx#28074 -[visit_exp `VBINOP`_instr{shape#4260}(`%X%`_shape{lanetype#26994, dim#26994, i#112253}(`I16`_lanetype, `%`_dim{i#112260}(8)), `MAX`_vbinop_{sx#28074}(`U`_sx))] -[visit_exp shape#4260] -[visit_id shape#4260] -[visit_exp (`%X%`_shape{lanetype#26994, dim#26994, i#112253}(`I16`_lanetype, `%`_dim{i#112260}(8)), `MAX`_vbinop_{sx#28074}(`U`_sx))] -[visit_exp `%X%`_shape{lanetype#26994, dim#26994, i#112253}(`I16`_lanetype, `%`_dim{i#112260}(8))] -[visit_exp lanetype#26994] -[visit_id lanetype#26994] -[visit_exp dim#26994] -[visit_id dim#26994] -[visit_exp i#112253] -[visit_id i#112253] -[visit_exp (`I16`_lanetype, `%`_dim{i#112260}(8))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `MAX`_vbinop_(`U`_sx))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `MAX`_vbinop_(`U`_sx))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#112260}(8)] -[visit_exp i#112260] -[visit_id i#112260] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `MAX`_vbinop_{sx#28074}(`U`_sx)] -[visit_exp sx#28074] -[visit_id sx#28074] +[visit_exp `MAX`_vbinop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I dim#27036 i#112355 i#112362 lanetype#27036 shape#4262 -dims \ I = dim#27036, i#112355, i#112362, lanetype#27036, shape#4262 -[visit_exp `VBINOP`_instr{shape#4262}(`%X%`_shape{lanetype#27036, dim#27036, i#112355}(`I16`_lanetype, `%`_dim{i#112362}(8)), `AVGRU`_vbinop_)] -[visit_exp shape#4262] -[visit_id shape#4262] -[visit_exp (`%X%`_shape{lanetype#27036, dim#27036, i#112355}(`I16`_lanetype, `%`_dim{i#112362}(8)), `AVGRU`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#27036, dim#27036, i#112355}(`I16`_lanetype, `%`_dim{i#112362}(8))] -[visit_exp lanetype#27036] -[visit_id lanetype#27036] -[visit_exp dim#27036] -[visit_id dim#27036] -[visit_exp i#112355] -[visit_id i#112355] -[visit_exp (`I16`_lanetype, `%`_dim{i#112362}(8))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `AVGRU`_vbinop_)] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `AVGRU`_vbinop_)] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#112362}(8)] -[visit_exp i#112362] -[visit_id i#112362] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] [visit_exp `AVGRU`_vbinop_] [visit_exp ()] -[check_dims] I dim#27078 i#112457 i#112464 lanetype#27078 shape#4264 -dims \ I = dim#27078, i#112457, i#112464, lanetype#27078, shape#4264 -[visit_exp `VBINOP`_instr{shape#4264}(`%X%`_shape{lanetype#27078, dim#27078, i#112457}(`I16`_lanetype, `%`_dim{i#112464}(8)), `Q15MULR_SATS`_vbinop_)] -[visit_exp shape#4264] -[visit_id shape#4264] -[visit_exp (`%X%`_shape{lanetype#27078, dim#27078, i#112457}(`I16`_lanetype, `%`_dim{i#112464}(8)), `Q15MULR_SATS`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#27078, dim#27078, i#112457}(`I16`_lanetype, `%`_dim{i#112464}(8))] -[visit_exp lanetype#27078] -[visit_id lanetype#27078] -[visit_exp dim#27078] -[visit_id dim#27078] -[visit_exp i#112457] -[visit_id i#112457] -[visit_exp (`I16`_lanetype, `%`_dim{i#112464}(8))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `Q15MULR_SATS`_vbinop_)] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `Q15MULR_SATS`_vbinop_)] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#112464}(8)] -[visit_exp i#112464] -[visit_id i#112464] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] [visit_exp `Q15MULR_SATS`_vbinop_] [visit_exp ()] -[check_dims] I dim#27120 i#112559 i#112566 lanetype#27120 shape#4266 -dims \ I = dim#27120, i#112559, i#112566, lanetype#27120, shape#4266 -[visit_exp `VBINOP`_instr{shape#4266}(`%X%`_shape{lanetype#27120, dim#27120, i#112559}(`I16`_lanetype, `%`_dim{i#112566}(8)), `RELAXED_Q15MULRS`_vbinop_)] -[visit_exp shape#4266] -[visit_id shape#4266] -[visit_exp (`%X%`_shape{lanetype#27120, dim#27120, i#112559}(`I16`_lanetype, `%`_dim{i#112566}(8)), `RELAXED_Q15MULRS`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#27120, dim#27120, i#112559}(`I16`_lanetype, `%`_dim{i#112566}(8))] -[visit_exp lanetype#27120] -[visit_id lanetype#27120] -[visit_exp dim#27120] -[visit_id dim#27120] -[visit_exp i#112559] -[visit_id i#112559] -[visit_exp (`I16`_lanetype, `%`_dim{i#112566}(8))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `RELAXED_Q15MULRS`_vbinop_)] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `RELAXED_Q15MULRS`_vbinop_)] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#112566}(8)] -[visit_exp i#112566] -[visit_id i#112566] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] [visit_exp `RELAXED_Q15MULRS`_vbinop_] @@ -102744,251 +80368,143 @@ dims \ I = dim#27120, i#112559, i#112566, lanetype#27120, shape#4266 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I dim#27162 i#112661 i#112668 lanetype#27162 shape#4268 -dims \ I = dim#27162, i#112661, i#112668, lanetype#27162, shape#4268 -[visit_exp `VBINOP`_instr{shape#4268}(`%X%`_shape{lanetype#27162, dim#27162, i#112661}(`I32`_lanetype, `%`_dim{i#112668}(4)), `ADD`_vbinop_)] -[visit_exp shape#4268] -[visit_id shape#4268] -[visit_exp (`%X%`_shape{lanetype#27162, dim#27162, i#112661}(`I32`_lanetype, `%`_dim{i#112668}(4)), `ADD`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#27162, dim#27162, i#112661}(`I32`_lanetype, `%`_dim{i#112668}(4))] -[visit_exp lanetype#27162] -[visit_id lanetype#27162] -[visit_exp dim#27162] -[visit_id dim#27162] -[visit_exp i#112661] -[visit_id i#112661] -[visit_exp (`I32`_lanetype, `%`_dim{i#112668}(4))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `ADD`_vbinop_)] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `ADD`_vbinop_)] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#112668}(4)] -[visit_exp i#112668] -[visit_id i#112668] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `ADD`_vbinop_] [visit_exp ()] -[check_dims] I dim#27189 i#112718 i#112725 lanetype#27189 shape#4270 -dims \ I = dim#27189, i#112718, i#112725, lanetype#27189, shape#4270 -[visit_exp `VBINOP`_instr{shape#4270}(`%X%`_shape{lanetype#27189, dim#27189, i#112718}(`I32`_lanetype, `%`_dim{i#112725}(4)), `SUB`_vbinop_)] -[visit_exp shape#4270] -[visit_id shape#4270] -[visit_exp (`%X%`_shape{lanetype#27189, dim#27189, i#112718}(`I32`_lanetype, `%`_dim{i#112725}(4)), `SUB`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#27189, dim#27189, i#112718}(`I32`_lanetype, `%`_dim{i#112725}(4))] -[visit_exp lanetype#27189] -[visit_id lanetype#27189] -[visit_exp dim#27189] -[visit_id dim#27189] -[visit_exp i#112718] -[visit_id i#112718] -[visit_exp (`I32`_lanetype, `%`_dim{i#112725}(4))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `SUB`_vbinop_)] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `SUB`_vbinop_)] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#112725}(4)] -[visit_exp i#112725] -[visit_id i#112725] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `SUB`_vbinop_] [visit_exp ()] -[check_dims] I dim#27216 i#112775 i#112782 lanetype#27216 shape#4272 -dims \ I = dim#27216, i#112775, i#112782, lanetype#27216, shape#4272 -[visit_exp `VBINOP`_instr{shape#4272}(`%X%`_shape{lanetype#27216, dim#27216, i#112775}(`I32`_lanetype, `%`_dim{i#112782}(4)), `MUL`_vbinop_)] -[visit_exp shape#4272] -[visit_id shape#4272] -[visit_exp (`%X%`_shape{lanetype#27216, dim#27216, i#112775}(`I32`_lanetype, `%`_dim{i#112782}(4)), `MUL`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#27216, dim#27216, i#112775}(`I32`_lanetype, `%`_dim{i#112782}(4))] -[visit_exp lanetype#27216] -[visit_id lanetype#27216] -[visit_exp dim#27216] -[visit_id dim#27216] -[visit_exp i#112775] -[visit_id i#112775] -[visit_exp (`I32`_lanetype, `%`_dim{i#112782}(4))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `MUL`_vbinop_)] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `MUL`_vbinop_)] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#112782}(4)] -[visit_exp i#112782] -[visit_id i#112782] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `MUL`_vbinop_] [visit_exp ()] -[check_dims] I dim#27243 i#112832 i#112839 lanetype#27243 shape#4274 sx#28738 -dims \ I = dim#27243, i#112832, i#112839, lanetype#27243, shape#4274, sx#28738 -[visit_exp `VBINOP`_instr{shape#4274}(`%X%`_shape{lanetype#27243, dim#27243, i#112832}(`I32`_lanetype, `%`_dim{i#112839}(4)), `MIN`_vbinop_{sx#28738}(`S`_sx))] -[visit_exp shape#4274] -[visit_id shape#4274] -[visit_exp (`%X%`_shape{lanetype#27243, dim#27243, i#112832}(`I32`_lanetype, `%`_dim{i#112839}(4)), `MIN`_vbinop_{sx#28738}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#27243, dim#27243, i#112832}(`I32`_lanetype, `%`_dim{i#112839}(4))] -[visit_exp lanetype#27243] -[visit_id lanetype#27243] -[visit_exp dim#27243] -[visit_id dim#27243] -[visit_exp i#112832] -[visit_id i#112832] -[visit_exp (`I32`_lanetype, `%`_dim{i#112839}(4))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `MIN`_vbinop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `MIN`_vbinop_(`S`_sx))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#112839}(4)] -[visit_exp i#112839] -[visit_id i#112839] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `MIN`_vbinop_{sx#28738}(`S`_sx)] -[visit_exp sx#28738] -[visit_id sx#28738] +[visit_exp `MIN`_vbinop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I dim#27285 i#112934 i#112941 lanetype#27285 shape#4276 sx#28862 -dims \ I = dim#27285, i#112934, i#112941, lanetype#27285, shape#4276, sx#28862 -[visit_exp `VBINOP`_instr{shape#4276}(`%X%`_shape{lanetype#27285, dim#27285, i#112934}(`I32`_lanetype, `%`_dim{i#112941}(4)), `MIN`_vbinop_{sx#28862}(`U`_sx))] -[visit_exp shape#4276] -[visit_id shape#4276] -[visit_exp (`%X%`_shape{lanetype#27285, dim#27285, i#112934}(`I32`_lanetype, `%`_dim{i#112941}(4)), `MIN`_vbinop_{sx#28862}(`U`_sx))] -[visit_exp `%X%`_shape{lanetype#27285, dim#27285, i#112934}(`I32`_lanetype, `%`_dim{i#112941}(4))] -[visit_exp lanetype#27285] -[visit_id lanetype#27285] -[visit_exp dim#27285] -[visit_id dim#27285] -[visit_exp i#112934] -[visit_id i#112934] -[visit_exp (`I32`_lanetype, `%`_dim{i#112941}(4))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `MIN`_vbinop_(`U`_sx))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `MIN`_vbinop_(`U`_sx))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#112941}(4)] -[visit_exp i#112941] -[visit_id i#112941] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `MIN`_vbinop_{sx#28862}(`U`_sx)] -[visit_exp sx#28862] -[visit_id sx#28862] +[visit_exp `MIN`_vbinop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I dim#27327 i#113036 i#113043 lanetype#27327 shape#4278 sx#28986 -dims \ I = dim#27327, i#113036, i#113043, lanetype#27327, shape#4278, sx#28986 -[visit_exp `VBINOP`_instr{shape#4278}(`%X%`_shape{lanetype#27327, dim#27327, i#113036}(`I32`_lanetype, `%`_dim{i#113043}(4)), `MAX`_vbinop_{sx#28986}(`S`_sx))] -[visit_exp shape#4278] -[visit_id shape#4278] -[visit_exp (`%X%`_shape{lanetype#27327, dim#27327, i#113036}(`I32`_lanetype, `%`_dim{i#113043}(4)), `MAX`_vbinop_{sx#28986}(`S`_sx))] -[visit_exp `%X%`_shape{lanetype#27327, dim#27327, i#113036}(`I32`_lanetype, `%`_dim{i#113043}(4))] -[visit_exp lanetype#27327] -[visit_id lanetype#27327] -[visit_exp dim#27327] -[visit_id dim#27327] -[visit_exp i#113036] -[visit_id i#113036] -[visit_exp (`I32`_lanetype, `%`_dim{i#113043}(4))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `MAX`_vbinop_(`S`_sx))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `MAX`_vbinop_(`S`_sx))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#113043}(4)] -[visit_exp i#113043] -[visit_id i#113043] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `MAX`_vbinop_{sx#28986}(`S`_sx)] -[visit_exp sx#28986] -[visit_id sx#28986] +[visit_exp `MAX`_vbinop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I dim#27369 i#113138 i#113145 lanetype#27369 shape#4280 sx#29110 -dims \ I = dim#27369, i#113138, i#113145, lanetype#27369, shape#4280, sx#29110 -[visit_exp `VBINOP`_instr{shape#4280}(`%X%`_shape{lanetype#27369, dim#27369, i#113138}(`I32`_lanetype, `%`_dim{i#113145}(4)), `MAX`_vbinop_{sx#29110}(`U`_sx))] -[visit_exp shape#4280] -[visit_id shape#4280] -[visit_exp (`%X%`_shape{lanetype#27369, dim#27369, i#113138}(`I32`_lanetype, `%`_dim{i#113145}(4)), `MAX`_vbinop_{sx#29110}(`U`_sx))] -[visit_exp `%X%`_shape{lanetype#27369, dim#27369, i#113138}(`I32`_lanetype, `%`_dim{i#113145}(4))] -[visit_exp lanetype#27369] -[visit_id lanetype#27369] -[visit_exp dim#27369] -[visit_id dim#27369] -[visit_exp i#113138] -[visit_id i#113138] -[visit_exp (`I32`_lanetype, `%`_dim{i#113145}(4))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `MAX`_vbinop_(`U`_sx))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `MAX`_vbinop_(`U`_sx))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#113145}(4)] -[visit_exp i#113145] -[visit_id i#113145] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `MAX`_vbinop_{sx#29110}(`U`_sx)] -[visit_exp sx#29110] -[visit_id sx#29110] +[visit_exp `MAX`_vbinop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I dim#27411 i#113240 i#113247 lanetype#27411 shape#4282 -dims \ I = dim#27411, i#113240, i#113247, lanetype#27411, shape#4282 -[visit_exp `VBINOP`_instr{shape#4282}(`%X%`_shape{lanetype#27411, dim#27411, i#113240}(`I64`_lanetype, `%`_dim{i#113247}(2)), `ADD`_vbinop_)] -[visit_exp shape#4282] -[visit_id shape#4282] -[visit_exp (`%X%`_shape{lanetype#27411, dim#27411, i#113240}(`I64`_lanetype, `%`_dim{i#113247}(2)), `ADD`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#27411, dim#27411, i#113240}(`I64`_lanetype, `%`_dim{i#113247}(2))] -[visit_exp lanetype#27411] -[visit_id lanetype#27411] -[visit_exp dim#27411] -[visit_id dim#27411] -[visit_exp i#113240] -[visit_id i#113240] -[visit_exp (`I64`_lanetype, `%`_dim{i#113247}(2))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `ADD`_vbinop_)] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `ADD`_vbinop_)] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#113247}(2)] -[visit_exp i#113247] -[visit_id i#113247] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `ADD`_vbinop_] [visit_exp ()] -[check_dims] I dim#27438 i#113297 i#113304 lanetype#27438 shape#4284 -dims \ I = dim#27438, i#113297, i#113304, lanetype#27438, shape#4284 -[visit_exp `VBINOP`_instr{shape#4284}(`%X%`_shape{lanetype#27438, dim#27438, i#113297}(`I64`_lanetype, `%`_dim{i#113304}(2)), `SUB`_vbinop_)] -[visit_exp shape#4284] -[visit_id shape#4284] -[visit_exp (`%X%`_shape{lanetype#27438, dim#27438, i#113297}(`I64`_lanetype, `%`_dim{i#113304}(2)), `SUB`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#27438, dim#27438, i#113297}(`I64`_lanetype, `%`_dim{i#113304}(2))] -[visit_exp lanetype#27438] -[visit_id lanetype#27438] -[visit_exp dim#27438] -[visit_id dim#27438] -[visit_exp i#113297] -[visit_id i#113297] -[visit_exp (`I64`_lanetype, `%`_dim{i#113304}(2))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `SUB`_vbinop_)] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `SUB`_vbinop_)] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#113304}(2)] -[visit_exp i#113304] -[visit_id i#113304] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `SUB`_vbinop_] [visit_exp ()] -[check_dims] I dim#27465 i#113354 i#113361 lanetype#27465 shape#4286 -dims \ I = dim#27465, i#113354, i#113361, lanetype#27465, shape#4286 -[visit_exp `VBINOP`_instr{shape#4286}(`%X%`_shape{lanetype#27465, dim#27465, i#113354}(`I64`_lanetype, `%`_dim{i#113361}(2)), `MUL`_vbinop_)] -[visit_exp shape#4286] -[visit_id shape#4286] -[visit_exp (`%X%`_shape{lanetype#27465, dim#27465, i#113354}(`I64`_lanetype, `%`_dim{i#113361}(2)), `MUL`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#27465, dim#27465, i#113354}(`I64`_lanetype, `%`_dim{i#113361}(2))] -[visit_exp lanetype#27465] -[visit_id lanetype#27465] -[visit_exp dim#27465] -[visit_id dim#27465] -[visit_exp i#113354] -[visit_id i#113354] -[visit_exp (`I64`_lanetype, `%`_dim{i#113361}(2))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `MUL`_vbinop_)] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `MUL`_vbinop_)] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#113361}(2)] -[visit_exp i#113361] -[visit_id i#113361] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `MUL`_vbinop_] @@ -102996,232 +80512,132 @@ dims \ I = dim#27465, i#113354, i#113361, lanetype#27465, shape#4286 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I dim#27492 i#113411 i#113418 lanetype#27492 shape#4288 -dims \ I = dim#27492, i#113411, i#113418, lanetype#27492, shape#4288 -[visit_exp `VBINOP`_instr{shape#4288}(`%X%`_shape{lanetype#27492, dim#27492, i#113411}(`F32`_lanetype, `%`_dim{i#113418}(4)), `ADD`_vbinop_)] -[visit_exp shape#4288] -[visit_id shape#4288] -[visit_exp (`%X%`_shape{lanetype#27492, dim#27492, i#113411}(`F32`_lanetype, `%`_dim{i#113418}(4)), `ADD`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#27492, dim#27492, i#113411}(`F32`_lanetype, `%`_dim{i#113418}(4))] -[visit_exp lanetype#27492] -[visit_id lanetype#27492] -[visit_exp dim#27492] -[visit_id dim#27492] -[visit_exp i#113411] -[visit_id i#113411] -[visit_exp (`F32`_lanetype, `%`_dim{i#113418}(4))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `ADD`_vbinop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `ADD`_vbinop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#113418}(4)] -[visit_exp i#113418] -[visit_id i#113418] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `ADD`_vbinop_] [visit_exp ()] -[check_dims] I dim#27534 i#113483 i#113490 lanetype#27534 shape#4290 -dims \ I = dim#27534, i#113483, i#113490, lanetype#27534, shape#4290 -[visit_exp `VBINOP`_instr{shape#4290}(`%X%`_shape{lanetype#27534, dim#27534, i#113483}(`F32`_lanetype, `%`_dim{i#113490}(4)), `SUB`_vbinop_)] -[visit_exp shape#4290] -[visit_id shape#4290] -[visit_exp (`%X%`_shape{lanetype#27534, dim#27534, i#113483}(`F32`_lanetype, `%`_dim{i#113490}(4)), `SUB`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#27534, dim#27534, i#113483}(`F32`_lanetype, `%`_dim{i#113490}(4))] -[visit_exp lanetype#27534] -[visit_id lanetype#27534] -[visit_exp dim#27534] -[visit_id dim#27534] -[visit_exp i#113483] -[visit_id i#113483] -[visit_exp (`F32`_lanetype, `%`_dim{i#113490}(4))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `SUB`_vbinop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `SUB`_vbinop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#113490}(4)] -[visit_exp i#113490] -[visit_id i#113490] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `SUB`_vbinop_] [visit_exp ()] -[check_dims] I dim#27576 i#113555 i#113562 lanetype#27576 shape#4292 -dims \ I = dim#27576, i#113555, i#113562, lanetype#27576, shape#4292 -[visit_exp `VBINOP`_instr{shape#4292}(`%X%`_shape{lanetype#27576, dim#27576, i#113555}(`F32`_lanetype, `%`_dim{i#113562}(4)), `MUL`_vbinop_)] -[visit_exp shape#4292] -[visit_id shape#4292] -[visit_exp (`%X%`_shape{lanetype#27576, dim#27576, i#113555}(`F32`_lanetype, `%`_dim{i#113562}(4)), `MUL`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#27576, dim#27576, i#113555}(`F32`_lanetype, `%`_dim{i#113562}(4))] -[visit_exp lanetype#27576] -[visit_id lanetype#27576] -[visit_exp dim#27576] -[visit_id dim#27576] -[visit_exp i#113555] -[visit_id i#113555] -[visit_exp (`F32`_lanetype, `%`_dim{i#113562}(4))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `MUL`_vbinop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `MUL`_vbinop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#113562}(4)] -[visit_exp i#113562] -[visit_id i#113562] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `MUL`_vbinop_] [visit_exp ()] -[check_dims] I dim#27618 i#113627 i#113634 lanetype#27618 shape#4294 -dims \ I = dim#27618, i#113627, i#113634, lanetype#27618, shape#4294 -[visit_exp `VBINOP`_instr{shape#4294}(`%X%`_shape{lanetype#27618, dim#27618, i#113627}(`F32`_lanetype, `%`_dim{i#113634}(4)), `DIV`_vbinop_)] -[visit_exp shape#4294] -[visit_id shape#4294] -[visit_exp (`%X%`_shape{lanetype#27618, dim#27618, i#113627}(`F32`_lanetype, `%`_dim{i#113634}(4)), `DIV`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#27618, dim#27618, i#113627}(`F32`_lanetype, `%`_dim{i#113634}(4))] -[visit_exp lanetype#27618] -[visit_id lanetype#27618] -[visit_exp dim#27618] -[visit_id dim#27618] -[visit_exp i#113627] -[visit_id i#113627] -[visit_exp (`F32`_lanetype, `%`_dim{i#113634}(4))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `DIV`_vbinop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `DIV`_vbinop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#113634}(4)] -[visit_exp i#113634] -[visit_id i#113634] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `DIV`_vbinop_] [visit_exp ()] -[check_dims] I dim#27660 i#113699 i#113706 lanetype#27660 shape#4296 -dims \ I = dim#27660, i#113699, i#113706, lanetype#27660, shape#4296 -[visit_exp `VBINOP`_instr{shape#4296}(`%X%`_shape{lanetype#27660, dim#27660, i#113699}(`F32`_lanetype, `%`_dim{i#113706}(4)), `MIN`_vbinop_)] -[visit_exp shape#4296] -[visit_id shape#4296] -[visit_exp (`%X%`_shape{lanetype#27660, dim#27660, i#113699}(`F32`_lanetype, `%`_dim{i#113706}(4)), `MIN`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#27660, dim#27660, i#113699}(`F32`_lanetype, `%`_dim{i#113706}(4))] -[visit_exp lanetype#27660] -[visit_id lanetype#27660] -[visit_exp dim#27660] -[visit_id dim#27660] -[visit_exp i#113699] -[visit_id i#113699] -[visit_exp (`F32`_lanetype, `%`_dim{i#113706}(4))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `MIN`_vbinop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `MIN`_vbinop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#113706}(4)] -[visit_exp i#113706] -[visit_id i#113706] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `MIN`_vbinop_] [visit_exp ()] -[check_dims] I dim#27702 i#113771 i#113778 lanetype#27702 shape#4298 -dims \ I = dim#27702, i#113771, i#113778, lanetype#27702, shape#4298 -[visit_exp `VBINOP`_instr{shape#4298}(`%X%`_shape{lanetype#27702, dim#27702, i#113771}(`F32`_lanetype, `%`_dim{i#113778}(4)), `MAX`_vbinop_)] -[visit_exp shape#4298] -[visit_id shape#4298] -[visit_exp (`%X%`_shape{lanetype#27702, dim#27702, i#113771}(`F32`_lanetype, `%`_dim{i#113778}(4)), `MAX`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#27702, dim#27702, i#113771}(`F32`_lanetype, `%`_dim{i#113778}(4))] -[visit_exp lanetype#27702] -[visit_id lanetype#27702] -[visit_exp dim#27702] -[visit_id dim#27702] -[visit_exp i#113771] -[visit_id i#113771] -[visit_exp (`F32`_lanetype, `%`_dim{i#113778}(4))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `MAX`_vbinop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `MAX`_vbinop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#113778}(4)] -[visit_exp i#113778] -[visit_id i#113778] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `MAX`_vbinop_] [visit_exp ()] -[check_dims] I dim#27744 i#113843 i#113850 lanetype#27744 shape#4300 -dims \ I = dim#27744, i#113843, i#113850, lanetype#27744, shape#4300 -[visit_exp `VBINOP`_instr{shape#4300}(`%X%`_shape{lanetype#27744, dim#27744, i#113843}(`F32`_lanetype, `%`_dim{i#113850}(4)), `PMIN`_vbinop_)] -[visit_exp shape#4300] -[visit_id shape#4300] -[visit_exp (`%X%`_shape{lanetype#27744, dim#27744, i#113843}(`F32`_lanetype, `%`_dim{i#113850}(4)), `PMIN`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#27744, dim#27744, i#113843}(`F32`_lanetype, `%`_dim{i#113850}(4))] -[visit_exp lanetype#27744] -[visit_id lanetype#27744] -[visit_exp dim#27744] -[visit_id dim#27744] -[visit_exp i#113843] -[visit_id i#113843] -[visit_exp (`F32`_lanetype, `%`_dim{i#113850}(4))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `PMIN`_vbinop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `PMIN`_vbinop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#113850}(4)] -[visit_exp i#113850] -[visit_id i#113850] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `PMIN`_vbinop_] [visit_exp ()] -[check_dims] I dim#27786 i#113915 i#113922 lanetype#27786 shape#4302 -dims \ I = dim#27786, i#113915, i#113922, lanetype#27786, shape#4302 -[visit_exp `VBINOP`_instr{shape#4302}(`%X%`_shape{lanetype#27786, dim#27786, i#113915}(`F32`_lanetype, `%`_dim{i#113922}(4)), `PMAX`_vbinop_)] -[visit_exp shape#4302] -[visit_id shape#4302] -[visit_exp (`%X%`_shape{lanetype#27786, dim#27786, i#113915}(`F32`_lanetype, `%`_dim{i#113922}(4)), `PMAX`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#27786, dim#27786, i#113915}(`F32`_lanetype, `%`_dim{i#113922}(4))] -[visit_exp lanetype#27786] -[visit_id lanetype#27786] -[visit_exp dim#27786] -[visit_id dim#27786] -[visit_exp i#113915] -[visit_id i#113915] -[visit_exp (`F32`_lanetype, `%`_dim{i#113922}(4))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `PMAX`_vbinop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `PMAX`_vbinop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#113922}(4)] -[visit_exp i#113922] -[visit_id i#113922] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `PMAX`_vbinop_] [visit_exp ()] -[check_dims] I dim#27828 i#113987 i#113994 lanetype#27828 shape#4304 -dims \ I = dim#27828, i#113987, i#113994, lanetype#27828, shape#4304 -[visit_exp `VBINOP`_instr{shape#4304}(`%X%`_shape{lanetype#27828, dim#27828, i#113987}(`F32`_lanetype, `%`_dim{i#113994}(4)), `RELAXED_MIN`_vbinop_)] -[visit_exp shape#4304] -[visit_id shape#4304] -[visit_exp (`%X%`_shape{lanetype#27828, dim#27828, i#113987}(`F32`_lanetype, `%`_dim{i#113994}(4)), `RELAXED_MIN`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#27828, dim#27828, i#113987}(`F32`_lanetype, `%`_dim{i#113994}(4))] -[visit_exp lanetype#27828] -[visit_id lanetype#27828] -[visit_exp dim#27828] -[visit_id dim#27828] -[visit_exp i#113987] -[visit_id i#113987] -[visit_exp (`F32`_lanetype, `%`_dim{i#113994}(4))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_MIN`_vbinop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_MIN`_vbinop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#113994}(4)] -[visit_exp i#113994] -[visit_id i#113994] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `RELAXED_MIN`_vbinop_] [visit_exp ()] -[check_dims] I dim#27870 i#114059 i#114066 lanetype#27870 shape#4306 -dims \ I = dim#27870, i#114059, i#114066, lanetype#27870, shape#4306 -[visit_exp `VBINOP`_instr{shape#4306}(`%X%`_shape{lanetype#27870, dim#27870, i#114059}(`F32`_lanetype, `%`_dim{i#114066}(4)), `RELAXED_MAX`_vbinop_)] -[visit_exp shape#4306] -[visit_id shape#4306] -[visit_exp (`%X%`_shape{lanetype#27870, dim#27870, i#114059}(`F32`_lanetype, `%`_dim{i#114066}(4)), `RELAXED_MAX`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#27870, dim#27870, i#114059}(`F32`_lanetype, `%`_dim{i#114066}(4))] -[visit_exp lanetype#27870] -[visit_id lanetype#27870] -[visit_exp dim#27870] -[visit_id dim#27870] -[visit_exp i#114059] -[visit_id i#114059] -[visit_exp (`F32`_lanetype, `%`_dim{i#114066}(4))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_MAX`_vbinop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_MAX`_vbinop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#114066}(4)] -[visit_exp i#114066] -[visit_id i#114066] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `RELAXED_MAX`_vbinop_] @@ -103229,232 +80645,132 @@ dims \ I = dim#27870, i#114059, i#114066, lanetype#27870, shape#4306 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I dim#27912 i#114131 i#114138 lanetype#27912 shape#4308 -dims \ I = dim#27912, i#114131, i#114138, lanetype#27912, shape#4308 -[visit_exp `VBINOP`_instr{shape#4308}(`%X%`_shape{lanetype#27912, dim#27912, i#114131}(`F64`_lanetype, `%`_dim{i#114138}(2)), `ADD`_vbinop_)] -[visit_exp shape#4308] -[visit_id shape#4308] -[visit_exp (`%X%`_shape{lanetype#27912, dim#27912, i#114131}(`F64`_lanetype, `%`_dim{i#114138}(2)), `ADD`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#27912, dim#27912, i#114131}(`F64`_lanetype, `%`_dim{i#114138}(2))] -[visit_exp lanetype#27912] -[visit_id lanetype#27912] -[visit_exp dim#27912] -[visit_id dim#27912] -[visit_exp i#114131] -[visit_id i#114131] -[visit_exp (`F64`_lanetype, `%`_dim{i#114138}(2))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `ADD`_vbinop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `ADD`_vbinop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#114138}(2)] -[visit_exp i#114138] -[visit_id i#114138] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `ADD`_vbinop_] [visit_exp ()] -[check_dims] I dim#27954 i#114203 i#114210 lanetype#27954 shape#4310 -dims \ I = dim#27954, i#114203, i#114210, lanetype#27954, shape#4310 -[visit_exp `VBINOP`_instr{shape#4310}(`%X%`_shape{lanetype#27954, dim#27954, i#114203}(`F64`_lanetype, `%`_dim{i#114210}(2)), `SUB`_vbinop_)] -[visit_exp shape#4310] -[visit_id shape#4310] -[visit_exp (`%X%`_shape{lanetype#27954, dim#27954, i#114203}(`F64`_lanetype, `%`_dim{i#114210}(2)), `SUB`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#27954, dim#27954, i#114203}(`F64`_lanetype, `%`_dim{i#114210}(2))] -[visit_exp lanetype#27954] -[visit_id lanetype#27954] -[visit_exp dim#27954] -[visit_id dim#27954] -[visit_exp i#114203] -[visit_id i#114203] -[visit_exp (`F64`_lanetype, `%`_dim{i#114210}(2))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `SUB`_vbinop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `SUB`_vbinop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#114210}(2)] -[visit_exp i#114210] -[visit_id i#114210] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `SUB`_vbinop_] [visit_exp ()] -[check_dims] I dim#27996 i#114275 i#114282 lanetype#27996 shape#4312 -dims \ I = dim#27996, i#114275, i#114282, lanetype#27996, shape#4312 -[visit_exp `VBINOP`_instr{shape#4312}(`%X%`_shape{lanetype#27996, dim#27996, i#114275}(`F64`_lanetype, `%`_dim{i#114282}(2)), `MUL`_vbinop_)] -[visit_exp shape#4312] -[visit_id shape#4312] -[visit_exp (`%X%`_shape{lanetype#27996, dim#27996, i#114275}(`F64`_lanetype, `%`_dim{i#114282}(2)), `MUL`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#27996, dim#27996, i#114275}(`F64`_lanetype, `%`_dim{i#114282}(2))] -[visit_exp lanetype#27996] -[visit_id lanetype#27996] -[visit_exp dim#27996] -[visit_id dim#27996] -[visit_exp i#114275] -[visit_id i#114275] -[visit_exp (`F64`_lanetype, `%`_dim{i#114282}(2))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `MUL`_vbinop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `MUL`_vbinop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#114282}(2)] -[visit_exp i#114282] -[visit_id i#114282] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `MUL`_vbinop_] [visit_exp ()] -[check_dims] I dim#28038 i#114347 i#114354 lanetype#28038 shape#4314 -dims \ I = dim#28038, i#114347, i#114354, lanetype#28038, shape#4314 -[visit_exp `VBINOP`_instr{shape#4314}(`%X%`_shape{lanetype#28038, dim#28038, i#114347}(`F64`_lanetype, `%`_dim{i#114354}(2)), `DIV`_vbinop_)] -[visit_exp shape#4314] -[visit_id shape#4314] -[visit_exp (`%X%`_shape{lanetype#28038, dim#28038, i#114347}(`F64`_lanetype, `%`_dim{i#114354}(2)), `DIV`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#28038, dim#28038, i#114347}(`F64`_lanetype, `%`_dim{i#114354}(2))] -[visit_exp lanetype#28038] -[visit_id lanetype#28038] -[visit_exp dim#28038] -[visit_id dim#28038] -[visit_exp i#114347] -[visit_id i#114347] -[visit_exp (`F64`_lanetype, `%`_dim{i#114354}(2))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `DIV`_vbinop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `DIV`_vbinop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#114354}(2)] -[visit_exp i#114354] -[visit_id i#114354] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `DIV`_vbinop_] [visit_exp ()] -[check_dims] I dim#28080 i#114419 i#114426 lanetype#28080 shape#4316 -dims \ I = dim#28080, i#114419, i#114426, lanetype#28080, shape#4316 -[visit_exp `VBINOP`_instr{shape#4316}(`%X%`_shape{lanetype#28080, dim#28080, i#114419}(`F64`_lanetype, `%`_dim{i#114426}(2)), `MIN`_vbinop_)] -[visit_exp shape#4316] -[visit_id shape#4316] -[visit_exp (`%X%`_shape{lanetype#28080, dim#28080, i#114419}(`F64`_lanetype, `%`_dim{i#114426}(2)), `MIN`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#28080, dim#28080, i#114419}(`F64`_lanetype, `%`_dim{i#114426}(2))] -[visit_exp lanetype#28080] -[visit_id lanetype#28080] -[visit_exp dim#28080] -[visit_id dim#28080] -[visit_exp i#114419] -[visit_id i#114419] -[visit_exp (`F64`_lanetype, `%`_dim{i#114426}(2))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `MIN`_vbinop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `MIN`_vbinop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#114426}(2)] -[visit_exp i#114426] -[visit_id i#114426] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `MIN`_vbinop_] [visit_exp ()] -[check_dims] I dim#28122 i#114491 i#114498 lanetype#28122 shape#4318 -dims \ I = dim#28122, i#114491, i#114498, lanetype#28122, shape#4318 -[visit_exp `VBINOP`_instr{shape#4318}(`%X%`_shape{lanetype#28122, dim#28122, i#114491}(`F64`_lanetype, `%`_dim{i#114498}(2)), `MAX`_vbinop_)] -[visit_exp shape#4318] -[visit_id shape#4318] -[visit_exp (`%X%`_shape{lanetype#28122, dim#28122, i#114491}(`F64`_lanetype, `%`_dim{i#114498}(2)), `MAX`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#28122, dim#28122, i#114491}(`F64`_lanetype, `%`_dim{i#114498}(2))] -[visit_exp lanetype#28122] -[visit_id lanetype#28122] -[visit_exp dim#28122] -[visit_id dim#28122] -[visit_exp i#114491] -[visit_id i#114491] -[visit_exp (`F64`_lanetype, `%`_dim{i#114498}(2))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `MAX`_vbinop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `MAX`_vbinop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#114498}(2)] -[visit_exp i#114498] -[visit_id i#114498] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `MAX`_vbinop_] [visit_exp ()] -[check_dims] I dim#28164 i#114563 i#114570 lanetype#28164 shape#4320 -dims \ I = dim#28164, i#114563, i#114570, lanetype#28164, shape#4320 -[visit_exp `VBINOP`_instr{shape#4320}(`%X%`_shape{lanetype#28164, dim#28164, i#114563}(`F64`_lanetype, `%`_dim{i#114570}(2)), `PMIN`_vbinop_)] -[visit_exp shape#4320] -[visit_id shape#4320] -[visit_exp (`%X%`_shape{lanetype#28164, dim#28164, i#114563}(`F64`_lanetype, `%`_dim{i#114570}(2)), `PMIN`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#28164, dim#28164, i#114563}(`F64`_lanetype, `%`_dim{i#114570}(2))] -[visit_exp lanetype#28164] -[visit_id lanetype#28164] -[visit_exp dim#28164] -[visit_id dim#28164] -[visit_exp i#114563] -[visit_id i#114563] -[visit_exp (`F64`_lanetype, `%`_dim{i#114570}(2))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `PMIN`_vbinop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `PMIN`_vbinop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#114570}(2)] -[visit_exp i#114570] -[visit_id i#114570] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `PMIN`_vbinop_] [visit_exp ()] -[check_dims] I dim#28206 i#114635 i#114642 lanetype#28206 shape#4322 -dims \ I = dim#28206, i#114635, i#114642, lanetype#28206, shape#4322 -[visit_exp `VBINOP`_instr{shape#4322}(`%X%`_shape{lanetype#28206, dim#28206, i#114635}(`F64`_lanetype, `%`_dim{i#114642}(2)), `PMAX`_vbinop_)] -[visit_exp shape#4322] -[visit_id shape#4322] -[visit_exp (`%X%`_shape{lanetype#28206, dim#28206, i#114635}(`F64`_lanetype, `%`_dim{i#114642}(2)), `PMAX`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#28206, dim#28206, i#114635}(`F64`_lanetype, `%`_dim{i#114642}(2))] -[visit_exp lanetype#28206] -[visit_id lanetype#28206] -[visit_exp dim#28206] -[visit_id dim#28206] -[visit_exp i#114635] -[visit_id i#114635] -[visit_exp (`F64`_lanetype, `%`_dim{i#114642}(2))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `PMAX`_vbinop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `PMAX`_vbinop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#114642}(2)] -[visit_exp i#114642] -[visit_id i#114642] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `PMAX`_vbinop_] [visit_exp ()] -[check_dims] I dim#28248 i#114707 i#114714 lanetype#28248 shape#4324 -dims \ I = dim#28248, i#114707, i#114714, lanetype#28248, shape#4324 -[visit_exp `VBINOP`_instr{shape#4324}(`%X%`_shape{lanetype#28248, dim#28248, i#114707}(`F64`_lanetype, `%`_dim{i#114714}(2)), `RELAXED_MIN`_vbinop_)] -[visit_exp shape#4324] -[visit_id shape#4324] -[visit_exp (`%X%`_shape{lanetype#28248, dim#28248, i#114707}(`F64`_lanetype, `%`_dim{i#114714}(2)), `RELAXED_MIN`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#28248, dim#28248, i#114707}(`F64`_lanetype, `%`_dim{i#114714}(2))] -[visit_exp lanetype#28248] -[visit_id lanetype#28248] -[visit_exp dim#28248] -[visit_id dim#28248] -[visit_exp i#114707] -[visit_id i#114707] -[visit_exp (`F64`_lanetype, `%`_dim{i#114714}(2))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_MIN`_vbinop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_MIN`_vbinop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#114714}(2)] -[visit_exp i#114714] -[visit_id i#114714] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `RELAXED_MIN`_vbinop_] [visit_exp ()] -[check_dims] I dim#28290 i#114779 i#114786 lanetype#28290 shape#4326 -dims \ I = dim#28290, i#114779, i#114786, lanetype#28290, shape#4326 -[visit_exp `VBINOP`_instr{shape#4326}(`%X%`_shape{lanetype#28290, dim#28290, i#114779}(`F64`_lanetype, `%`_dim{i#114786}(2)), `RELAXED_MAX`_vbinop_)] -[visit_exp shape#4326] -[visit_id shape#4326] -[visit_exp (`%X%`_shape{lanetype#28290, dim#28290, i#114779}(`F64`_lanetype, `%`_dim{i#114786}(2)), `RELAXED_MAX`_vbinop_)] -[visit_exp `%X%`_shape{lanetype#28290, dim#28290, i#114779}(`F64`_lanetype, `%`_dim{i#114786}(2))] -[visit_exp lanetype#28290] -[visit_id lanetype#28290] -[visit_exp dim#28290] -[visit_id dim#28290] -[visit_exp i#114779] -[visit_id i#114779] -[visit_exp (`F64`_lanetype, `%`_dim{i#114786}(2))] +[check_dims] I +dims \ I = +[visit_exp `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_MAX`_vbinop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_MAX`_vbinop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#114786}(2)] -[visit_exp i#114786] -[visit_id i#114786] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `RELAXED_MAX`_vbinop_] @@ -103462,13 +80778,9 @@ dims \ I = dim#28290, i#114779, i#114786, lanetype#28290, shape#4326 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I vectype#328 vvternop#9 -dims \ I = vectype#328, vvternop#9 -[visit_exp `VVTERNOP`_instr{vectype#328, vvternop#9}(`V128`_vectype, `BITSELECT`_vvternop)] -[visit_exp vectype#328] -[visit_id vectype#328] -[visit_exp vvternop#9] -[visit_id vvternop#9] +[check_dims] I +dims \ I = +[visit_exp `VVTERNOP`_instr(`V128`_vectype, `BITSELECT`_vvternop)] [visit_exp (`V128`_vectype, `BITSELECT`_vvternop)] [visit_exp `V128`_vectype] [visit_exp ()] @@ -103477,25 +80789,15 @@ dims \ I = vectype#328, vvternop#9 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I dim#28332 i#114851 i#114858 lanetype#28332 shape#4328 -dims \ I = dim#28332, i#114851, i#114858, lanetype#28332, shape#4328 -[visit_exp `VTERNOP`_instr{shape#4328}(`%X%`_shape{lanetype#28332, dim#28332, i#114851}(`I8`_lanetype, `%`_dim{i#114858}(16)), `RELAXED_LANESELECT`_vternop_)] -[visit_exp shape#4328] -[visit_id shape#4328] -[visit_exp (`%X%`_shape{lanetype#28332, dim#28332, i#114851}(`I8`_lanetype, `%`_dim{i#114858}(16)), `RELAXED_LANESELECT`_vternop_)] -[visit_exp `%X%`_shape{lanetype#28332, dim#28332, i#114851}(`I8`_lanetype, `%`_dim{i#114858}(16))] -[visit_exp lanetype#28332] -[visit_id lanetype#28332] -[visit_exp dim#28332] -[visit_id dim#28332] -[visit_exp i#114851] -[visit_id i#114851] -[visit_exp (`I8`_lanetype, `%`_dim{i#114858}(16))] +[check_dims] I +dims \ I = +[visit_exp `VTERNOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `RELAXED_LANESELECT`_vternop_)] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `RELAXED_LANESELECT`_vternop_)] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#114858}(16)] -[visit_exp i#114858] -[visit_id i#114858] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] [visit_exp `RELAXED_LANESELECT`_vternop_] @@ -103503,25 +80805,15 @@ dims \ I = dim#28332, i#114851, i#114858, lanetype#28332, shape#4328 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I dim#28359 i#114908 i#114915 lanetype#28359 shape#4330 -dims \ I = dim#28359, i#114908, i#114915, lanetype#28359, shape#4330 -[visit_exp `VTERNOP`_instr{shape#4330}(`%X%`_shape{lanetype#28359, dim#28359, i#114908}(`I16`_lanetype, `%`_dim{i#114915}(8)), `RELAXED_LANESELECT`_vternop_)] -[visit_exp shape#4330] -[visit_id shape#4330] -[visit_exp (`%X%`_shape{lanetype#28359, dim#28359, i#114908}(`I16`_lanetype, `%`_dim{i#114915}(8)), `RELAXED_LANESELECT`_vternop_)] -[visit_exp `%X%`_shape{lanetype#28359, dim#28359, i#114908}(`I16`_lanetype, `%`_dim{i#114915}(8))] -[visit_exp lanetype#28359] -[visit_id lanetype#28359] -[visit_exp dim#28359] -[visit_id dim#28359] -[visit_exp i#114908] -[visit_id i#114908] -[visit_exp (`I16`_lanetype, `%`_dim{i#114915}(8))] +[check_dims] I +dims \ I = +[visit_exp `VTERNOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `RELAXED_LANESELECT`_vternop_)] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `RELAXED_LANESELECT`_vternop_)] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#114915}(8)] -[visit_exp i#114915] -[visit_id i#114915] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] [visit_exp `RELAXED_LANESELECT`_vternop_] @@ -103529,25 +80821,15 @@ dims \ I = dim#28359, i#114908, i#114915, lanetype#28359, shape#4330 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I dim#28386 i#114965 i#114972 lanetype#28386 shape#4332 -dims \ I = dim#28386, i#114965, i#114972, lanetype#28386, shape#4332 -[visit_exp `VTERNOP`_instr{shape#4332}(`%X%`_shape{lanetype#28386, dim#28386, i#114965}(`I32`_lanetype, `%`_dim{i#114972}(4)), `RELAXED_LANESELECT`_vternop_)] -[visit_exp shape#4332] -[visit_id shape#4332] -[visit_exp (`%X%`_shape{lanetype#28386, dim#28386, i#114965}(`I32`_lanetype, `%`_dim{i#114972}(4)), `RELAXED_LANESELECT`_vternop_)] -[visit_exp `%X%`_shape{lanetype#28386, dim#28386, i#114965}(`I32`_lanetype, `%`_dim{i#114972}(4))] -[visit_exp lanetype#28386] -[visit_id lanetype#28386] -[visit_exp dim#28386] -[visit_id dim#28386] -[visit_exp i#114965] -[visit_id i#114965] -[visit_exp (`I32`_lanetype, `%`_dim{i#114972}(4))] +[check_dims] I +dims \ I = +[visit_exp `VTERNOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `RELAXED_LANESELECT`_vternop_)] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `RELAXED_LANESELECT`_vternop_)] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#114972}(4)] -[visit_exp i#114972] -[visit_id i#114972] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `RELAXED_LANESELECT`_vternop_] @@ -103555,25 +80837,15 @@ dims \ I = dim#28386, i#114965, i#114972, lanetype#28386, shape#4332 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I dim#28413 i#115022 i#115029 lanetype#28413 shape#4334 -dims \ I = dim#28413, i#115022, i#115029, lanetype#28413, shape#4334 -[visit_exp `VTERNOP`_instr{shape#4334}(`%X%`_shape{lanetype#28413, dim#28413, i#115022}(`I64`_lanetype, `%`_dim{i#115029}(2)), `RELAXED_LANESELECT`_vternop_)] -[visit_exp shape#4334] -[visit_id shape#4334] -[visit_exp (`%X%`_shape{lanetype#28413, dim#28413, i#115022}(`I64`_lanetype, `%`_dim{i#115029}(2)), `RELAXED_LANESELECT`_vternop_)] -[visit_exp `%X%`_shape{lanetype#28413, dim#28413, i#115022}(`I64`_lanetype, `%`_dim{i#115029}(2))] -[visit_exp lanetype#28413] -[visit_id lanetype#28413] -[visit_exp dim#28413] -[visit_id dim#28413] -[visit_exp i#115022] -[visit_id i#115022] -[visit_exp (`I64`_lanetype, `%`_dim{i#115029}(2))] +[check_dims] I +dims \ I = +[visit_exp `VTERNOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `RELAXED_LANESELECT`_vternop_)] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `RELAXED_LANESELECT`_vternop_)] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#115029}(2)] -[visit_exp i#115029] -[visit_id i#115029] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `RELAXED_LANESELECT`_vternop_] @@ -103581,48 +80853,28 @@ dims \ I = dim#28413, i#115022, i#115029, lanetype#28413, shape#4334 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I dim#28440 i#115079 i#115086 lanetype#28440 shape#4336 -dims \ I = dim#28440, i#115079, i#115086, lanetype#28440, shape#4336 -[visit_exp `VTERNOP`_instr{shape#4336}(`%X%`_shape{lanetype#28440, dim#28440, i#115079}(`F32`_lanetype, `%`_dim{i#115086}(4)), `RELAXED_MADD`_vternop_)] -[visit_exp shape#4336] -[visit_id shape#4336] -[visit_exp (`%X%`_shape{lanetype#28440, dim#28440, i#115079}(`F32`_lanetype, `%`_dim{i#115086}(4)), `RELAXED_MADD`_vternop_)] -[visit_exp `%X%`_shape{lanetype#28440, dim#28440, i#115079}(`F32`_lanetype, `%`_dim{i#115086}(4))] -[visit_exp lanetype#28440] -[visit_id lanetype#28440] -[visit_exp dim#28440] -[visit_id dim#28440] -[visit_exp i#115079] -[visit_id i#115079] -[visit_exp (`F32`_lanetype, `%`_dim{i#115086}(4))] +[check_dims] I +dims \ I = +[visit_exp `VTERNOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_MADD`_vternop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_MADD`_vternop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#115086}(4)] -[visit_exp i#115086] -[visit_id i#115086] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `RELAXED_MADD`_vternop_] [visit_exp ()] -[check_dims] I dim#28482 i#115151 i#115158 lanetype#28482 shape#4338 -dims \ I = dim#28482, i#115151, i#115158, lanetype#28482, shape#4338 -[visit_exp `VTERNOP`_instr{shape#4338}(`%X%`_shape{lanetype#28482, dim#28482, i#115151}(`F32`_lanetype, `%`_dim{i#115158}(4)), `RELAXED_NMADD`_vternop_)] -[visit_exp shape#4338] -[visit_id shape#4338] -[visit_exp (`%X%`_shape{lanetype#28482, dim#28482, i#115151}(`F32`_lanetype, `%`_dim{i#115158}(4)), `RELAXED_NMADD`_vternop_)] -[visit_exp `%X%`_shape{lanetype#28482, dim#28482, i#115151}(`F32`_lanetype, `%`_dim{i#115158}(4))] -[visit_exp lanetype#28482] -[visit_id lanetype#28482] -[visit_exp dim#28482] -[visit_id dim#28482] -[visit_exp i#115151] -[visit_id i#115151] -[visit_exp (`F32`_lanetype, `%`_dim{i#115158}(4))] +[check_dims] I +dims \ I = +[visit_exp `VTERNOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_NMADD`_vternop_)] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_NMADD`_vternop_)] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#115158}(4)] -[visit_exp i#115158] -[visit_id i#115158] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `RELAXED_NMADD`_vternop_] @@ -103630,48 +80882,28 @@ dims \ I = dim#28482, i#115151, i#115158, lanetype#28482, shape#4338 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I dim#28524 i#115223 i#115230 lanetype#28524 shape#4340 -dims \ I = dim#28524, i#115223, i#115230, lanetype#28524, shape#4340 -[visit_exp `VTERNOP`_instr{shape#4340}(`%X%`_shape{lanetype#28524, dim#28524, i#115223}(`F64`_lanetype, `%`_dim{i#115230}(2)), `RELAXED_MADD`_vternop_)] -[visit_exp shape#4340] -[visit_id shape#4340] -[visit_exp (`%X%`_shape{lanetype#28524, dim#28524, i#115223}(`F64`_lanetype, `%`_dim{i#115230}(2)), `RELAXED_MADD`_vternop_)] -[visit_exp `%X%`_shape{lanetype#28524, dim#28524, i#115223}(`F64`_lanetype, `%`_dim{i#115230}(2))] -[visit_exp lanetype#28524] -[visit_id lanetype#28524] -[visit_exp dim#28524] -[visit_id dim#28524] -[visit_exp i#115223] -[visit_id i#115223] -[visit_exp (`F64`_lanetype, `%`_dim{i#115230}(2))] +[check_dims] I +dims \ I = +[visit_exp `VTERNOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_MADD`_vternop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_MADD`_vternop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#115230}(2)] -[visit_exp i#115230] -[visit_id i#115230] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `RELAXED_MADD`_vternop_] [visit_exp ()] -[check_dims] I dim#28566 i#115295 i#115302 lanetype#28566 shape#4342 -dims \ I = dim#28566, i#115295, i#115302, lanetype#28566, shape#4342 -[visit_exp `VTERNOP`_instr{shape#4342}(`%X%`_shape{lanetype#28566, dim#28566, i#115295}(`F64`_lanetype, `%`_dim{i#115302}(2)), `RELAXED_NMADD`_vternop_)] -[visit_exp shape#4342] -[visit_id shape#4342] -[visit_exp (`%X%`_shape{lanetype#28566, dim#28566, i#115295}(`F64`_lanetype, `%`_dim{i#115302}(2)), `RELAXED_NMADD`_vternop_)] -[visit_exp `%X%`_shape{lanetype#28566, dim#28566, i#115295}(`F64`_lanetype, `%`_dim{i#115302}(2))] -[visit_exp lanetype#28566] -[visit_id lanetype#28566] -[visit_exp dim#28566] -[visit_id dim#28566] -[visit_exp i#115295] -[visit_id i#115295] -[visit_exp (`F64`_lanetype, `%`_dim{i#115302}(2))] +[check_dims] I +dims \ I = +[visit_exp `VTERNOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_NMADD`_vternop_)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_NMADD`_vternop_)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#115302}(2)] -[visit_exp i#115302] -[visit_id i#115302] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `RELAXED_NMADD`_vternop_] @@ -103679,646 +80911,322 @@ dims \ I = dim#28566, i#115295, i#115302, lanetype#28566, shape#4342 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I Jnn#488 dim#28608 i#115367 i#115374 ishape#45 lanetype#28608 shape#4354 -dims \ I = Jnn#488, dim#28608, i#115367, i#115374, ishape#45, lanetype#28608, shape#4354 -[visit_exp `VSHIFTOP`_instr{ishape#45}(`%`_ishape{shape#4354, Jnn#488}(`%X%`_shape{lanetype#28608, dim#28608, i#115367}(`I8`_lanetype, `%`_dim{i#115374}(16))), `SHL`_vshiftop_)] -[visit_exp ishape#45] -[visit_id ishape#45] -[visit_exp (`%`_ishape{shape#4354, Jnn#488}(`%X%`_shape{lanetype#28608, dim#28608, i#115367}(`I8`_lanetype, `%`_dim{i#115374}(16))), `SHL`_vshiftop_)] -[visit_exp `%`_ishape{shape#4354, Jnn#488}(`%X%`_shape{lanetype#28608, dim#28608, i#115367}(`I8`_lanetype, `%`_dim{i#115374}(16)))] -[visit_exp shape#4354] -[visit_id shape#4354] -[visit_exp Jnn#488] -[visit_id Jnn#488] -[visit_exp (`%X%`_shape{lanetype#28608, dim#28608, i#115367}(`I8`_lanetype, `%`_dim{i#115374}(16)))] -[visit_exp `%X%`_shape{lanetype#28608, dim#28608, i#115367}(`I8`_lanetype, `%`_dim{i#115374}(16))] -[visit_exp lanetype#28608] -[visit_id lanetype#28608] -[visit_exp dim#28608] -[visit_id dim#28608] -[visit_exp i#115367] -[visit_id i#115367] -[visit_exp (`I8`_lanetype, `%`_dim{i#115374}(16))] +[check_dims] I +dims \ I = +[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `SHL`_vshiftop_)] +[visit_exp (`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `SHL`_vshiftop_)] +[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#115374}(16)] -[visit_exp i#115374] -[visit_id i#115374] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] [visit_exp `SHL`_vshiftop_] [visit_exp ()] -[check_dims] I Jnn#492 dim#28665 i#115454 i#115461 ishape#47 lanetype#28665 shape#4381 sx#29339 -dims \ I = Jnn#492, dim#28665, i#115454, i#115461, ishape#47, lanetype#28665, shape#4381, sx#29339 -[visit_exp `VSHIFTOP`_instr{ishape#47}(`%`_ishape{shape#4381, Jnn#492}(`%X%`_shape{lanetype#28665, dim#28665, i#115454}(`I8`_lanetype, `%`_dim{i#115461}(16))), `SHR`_vshiftop_{sx#29339}(`S`_sx))] -[visit_exp ishape#47] -[visit_id ishape#47] -[visit_exp (`%`_ishape{shape#4381, Jnn#492}(`%X%`_shape{lanetype#28665, dim#28665, i#115454}(`I8`_lanetype, `%`_dim{i#115461}(16))), `SHR`_vshiftop_{sx#29339}(`S`_sx))] -[visit_exp `%`_ishape{shape#4381, Jnn#492}(`%X%`_shape{lanetype#28665, dim#28665, i#115454}(`I8`_lanetype, `%`_dim{i#115461}(16)))] -[visit_exp shape#4381] -[visit_id shape#4381] -[visit_exp Jnn#492] -[visit_id Jnn#492] -[visit_exp (`%X%`_shape{lanetype#28665, dim#28665, i#115454}(`I8`_lanetype, `%`_dim{i#115461}(16)))] -[visit_exp `%X%`_shape{lanetype#28665, dim#28665, i#115454}(`I8`_lanetype, `%`_dim{i#115461}(16))] -[visit_exp lanetype#28665] -[visit_id lanetype#28665] -[visit_exp dim#28665] -[visit_id dim#28665] -[visit_exp i#115454] -[visit_id i#115454] -[visit_exp (`I8`_lanetype, `%`_dim{i#115461}(16))] +[check_dims] I +dims \ I = +[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `SHR`_vshiftop_(`S`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `SHR`_vshiftop_(`S`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#115461}(16)] -[visit_exp i#115461] -[visit_id i#115461] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `SHR`_vshiftop_{sx#29339}(`S`_sx)] -[visit_exp sx#29339] -[visit_id sx#29339] +[visit_exp `SHR`_vshiftop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I Jnn#496 dim#28767 i#115616 i#115623 ishape#49 lanetype#28767 shape#4423 sx#29373 -dims \ I = Jnn#496, dim#28767, i#115616, i#115623, ishape#49, lanetype#28767, shape#4423, sx#29373 -[visit_exp `VSHIFTOP`_instr{ishape#49}(`%`_ishape{shape#4423, Jnn#496}(`%X%`_shape{lanetype#28767, dim#28767, i#115616}(`I8`_lanetype, `%`_dim{i#115623}(16))), `SHR`_vshiftop_{sx#29373}(`U`_sx))] -[visit_exp ishape#49] -[visit_id ishape#49] -[visit_exp (`%`_ishape{shape#4423, Jnn#496}(`%X%`_shape{lanetype#28767, dim#28767, i#115616}(`I8`_lanetype, `%`_dim{i#115623}(16))), `SHR`_vshiftop_{sx#29373}(`U`_sx))] -[visit_exp `%`_ishape{shape#4423, Jnn#496}(`%X%`_shape{lanetype#28767, dim#28767, i#115616}(`I8`_lanetype, `%`_dim{i#115623}(16)))] -[visit_exp shape#4423] -[visit_id shape#4423] -[visit_exp Jnn#496] -[visit_id Jnn#496] -[visit_exp (`%X%`_shape{lanetype#28767, dim#28767, i#115616}(`I8`_lanetype, `%`_dim{i#115623}(16)))] -[visit_exp `%X%`_shape{lanetype#28767, dim#28767, i#115616}(`I8`_lanetype, `%`_dim{i#115623}(16))] -[visit_exp lanetype#28767] -[visit_id lanetype#28767] -[visit_exp dim#28767] -[visit_id dim#28767] -[visit_exp i#115616] -[visit_id i#115616] -[visit_exp (`I8`_lanetype, `%`_dim{i#115623}(16))] +[check_dims] I +dims \ I = +[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `SHR`_vshiftop_(`U`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `SHR`_vshiftop_(`U`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#115623}(16)] -[visit_exp i#115623] -[visit_id i#115623] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `SHR`_vshiftop_{sx#29373}(`U`_sx)] -[visit_exp sx#29373] -[visit_id sx#29373] +[visit_exp `SHR`_vshiftop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I Jnn#500 dim#28869 i#115778 i#115785 ishape#51 lanetype#28869 shape#4465 -dims \ I = Jnn#500, dim#28869, i#115778, i#115785, ishape#51, lanetype#28869, shape#4465 -[visit_exp `VSHIFTOP`_instr{ishape#51}(`%`_ishape{shape#4465, Jnn#500}(`%X%`_shape{lanetype#28869, dim#28869, i#115778}(`I16`_lanetype, `%`_dim{i#115785}(8))), `SHL`_vshiftop_)] -[visit_exp ishape#51] -[visit_id ishape#51] -[visit_exp (`%`_ishape{shape#4465, Jnn#500}(`%X%`_shape{lanetype#28869, dim#28869, i#115778}(`I16`_lanetype, `%`_dim{i#115785}(8))), `SHL`_vshiftop_)] -[visit_exp `%`_ishape{shape#4465, Jnn#500}(`%X%`_shape{lanetype#28869, dim#28869, i#115778}(`I16`_lanetype, `%`_dim{i#115785}(8)))] -[visit_exp shape#4465] -[visit_id shape#4465] -[visit_exp Jnn#500] -[visit_id Jnn#500] -[visit_exp (`%X%`_shape{lanetype#28869, dim#28869, i#115778}(`I16`_lanetype, `%`_dim{i#115785}(8)))] -[visit_exp `%X%`_shape{lanetype#28869, dim#28869, i#115778}(`I16`_lanetype, `%`_dim{i#115785}(8))] -[visit_exp lanetype#28869] -[visit_id lanetype#28869] -[visit_exp dim#28869] -[visit_id dim#28869] -[visit_exp i#115778] -[visit_id i#115778] -[visit_exp (`I16`_lanetype, `%`_dim{i#115785}(8))] +[check_dims] I +dims \ I = +[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `SHL`_vshiftop_)] +[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `SHL`_vshiftop_)] +[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#115785}(8)] -[visit_exp i#115785] -[visit_id i#115785] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] [visit_exp `SHL`_vshiftop_] [visit_exp ()] -[check_dims] I Jnn#504 dim#28926 i#115865 i#115872 ishape#53 lanetype#28926 shape#4492 sx#29422 -dims \ I = Jnn#504, dim#28926, i#115865, i#115872, ishape#53, lanetype#28926, shape#4492, sx#29422 -[visit_exp `VSHIFTOP`_instr{ishape#53}(`%`_ishape{shape#4492, Jnn#504}(`%X%`_shape{lanetype#28926, dim#28926, i#115865}(`I16`_lanetype, `%`_dim{i#115872}(8))), `SHR`_vshiftop_{sx#29422}(`S`_sx))] -[visit_exp ishape#53] -[visit_id ishape#53] -[visit_exp (`%`_ishape{shape#4492, Jnn#504}(`%X%`_shape{lanetype#28926, dim#28926, i#115865}(`I16`_lanetype, `%`_dim{i#115872}(8))), `SHR`_vshiftop_{sx#29422}(`S`_sx))] -[visit_exp `%`_ishape{shape#4492, Jnn#504}(`%X%`_shape{lanetype#28926, dim#28926, i#115865}(`I16`_lanetype, `%`_dim{i#115872}(8)))] -[visit_exp shape#4492] -[visit_id shape#4492] -[visit_exp Jnn#504] -[visit_id Jnn#504] -[visit_exp (`%X%`_shape{lanetype#28926, dim#28926, i#115865}(`I16`_lanetype, `%`_dim{i#115872}(8)))] -[visit_exp `%X%`_shape{lanetype#28926, dim#28926, i#115865}(`I16`_lanetype, `%`_dim{i#115872}(8))] -[visit_exp lanetype#28926] -[visit_id lanetype#28926] -[visit_exp dim#28926] -[visit_id dim#28926] -[visit_exp i#115865] -[visit_id i#115865] -[visit_exp (`I16`_lanetype, `%`_dim{i#115872}(8))] +[check_dims] I +dims \ I = +[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `SHR`_vshiftop_(`S`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `SHR`_vshiftop_(`S`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#115872}(8)] -[visit_exp i#115872] -[visit_id i#115872] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `SHR`_vshiftop_{sx#29422}(`S`_sx)] -[visit_exp sx#29422] -[visit_id sx#29422] +[visit_exp `SHR`_vshiftop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I Jnn#508 dim#29028 i#116027 i#116034 ishape#55 lanetype#29028 shape#4534 sx#29456 -dims \ I = Jnn#508, dim#29028, i#116027, i#116034, ishape#55, lanetype#29028, shape#4534, sx#29456 -[visit_exp `VSHIFTOP`_instr{ishape#55}(`%`_ishape{shape#4534, Jnn#508}(`%X%`_shape{lanetype#29028, dim#29028, i#116027}(`I16`_lanetype, `%`_dim{i#116034}(8))), `SHR`_vshiftop_{sx#29456}(`U`_sx))] -[visit_exp ishape#55] -[visit_id ishape#55] -[visit_exp (`%`_ishape{shape#4534, Jnn#508}(`%X%`_shape{lanetype#29028, dim#29028, i#116027}(`I16`_lanetype, `%`_dim{i#116034}(8))), `SHR`_vshiftop_{sx#29456}(`U`_sx))] -[visit_exp `%`_ishape{shape#4534, Jnn#508}(`%X%`_shape{lanetype#29028, dim#29028, i#116027}(`I16`_lanetype, `%`_dim{i#116034}(8)))] -[visit_exp shape#4534] -[visit_id shape#4534] -[visit_exp Jnn#508] -[visit_id Jnn#508] -[visit_exp (`%X%`_shape{lanetype#29028, dim#29028, i#116027}(`I16`_lanetype, `%`_dim{i#116034}(8)))] -[visit_exp `%X%`_shape{lanetype#29028, dim#29028, i#116027}(`I16`_lanetype, `%`_dim{i#116034}(8))] -[visit_exp lanetype#29028] -[visit_id lanetype#29028] -[visit_exp dim#29028] -[visit_id dim#29028] -[visit_exp i#116027] -[visit_id i#116027] -[visit_exp (`I16`_lanetype, `%`_dim{i#116034}(8))] +[check_dims] I +dims \ I = +[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `SHR`_vshiftop_(`U`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `SHR`_vshiftop_(`U`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#116034}(8)] -[visit_exp i#116034] -[visit_id i#116034] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `SHR`_vshiftop_{sx#29456}(`U`_sx)] -[visit_exp sx#29456] -[visit_id sx#29456] +[visit_exp `SHR`_vshiftop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I Jnn#512 dim#29130 i#116189 i#116196 ishape#57 lanetype#29130 shape#4576 -dims \ I = Jnn#512, dim#29130, i#116189, i#116196, ishape#57, lanetype#29130, shape#4576 -[visit_exp `VSHIFTOP`_instr{ishape#57}(`%`_ishape{shape#4576, Jnn#512}(`%X%`_shape{lanetype#29130, dim#29130, i#116189}(`I32`_lanetype, `%`_dim{i#116196}(4))), `SHL`_vshiftop_)] -[visit_exp ishape#57] -[visit_id ishape#57] -[visit_exp (`%`_ishape{shape#4576, Jnn#512}(`%X%`_shape{lanetype#29130, dim#29130, i#116189}(`I32`_lanetype, `%`_dim{i#116196}(4))), `SHL`_vshiftop_)] -[visit_exp `%`_ishape{shape#4576, Jnn#512}(`%X%`_shape{lanetype#29130, dim#29130, i#116189}(`I32`_lanetype, `%`_dim{i#116196}(4)))] -[visit_exp shape#4576] -[visit_id shape#4576] -[visit_exp Jnn#512] -[visit_id Jnn#512] -[visit_exp (`%X%`_shape{lanetype#29130, dim#29130, i#116189}(`I32`_lanetype, `%`_dim{i#116196}(4)))] -[visit_exp `%X%`_shape{lanetype#29130, dim#29130, i#116189}(`I32`_lanetype, `%`_dim{i#116196}(4))] -[visit_exp lanetype#29130] -[visit_id lanetype#29130] -[visit_exp dim#29130] -[visit_id dim#29130] -[visit_exp i#116189] -[visit_id i#116189] -[visit_exp (`I32`_lanetype, `%`_dim{i#116196}(4))] +[check_dims] I +dims \ I = +[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `SHL`_vshiftop_)] +[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `SHL`_vshiftop_)] +[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#116196}(4)] -[visit_exp i#116196] -[visit_id i#116196] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `SHL`_vshiftop_] [visit_exp ()] -[check_dims] I Jnn#516 dim#29187 i#116276 i#116283 ishape#59 lanetype#29187 shape#4603 sx#29505 -dims \ I = Jnn#516, dim#29187, i#116276, i#116283, ishape#59, lanetype#29187, shape#4603, sx#29505 -[visit_exp `VSHIFTOP`_instr{ishape#59}(`%`_ishape{shape#4603, Jnn#516}(`%X%`_shape{lanetype#29187, dim#29187, i#116276}(`I32`_lanetype, `%`_dim{i#116283}(4))), `SHR`_vshiftop_{sx#29505}(`S`_sx))] -[visit_exp ishape#59] -[visit_id ishape#59] -[visit_exp (`%`_ishape{shape#4603, Jnn#516}(`%X%`_shape{lanetype#29187, dim#29187, i#116276}(`I32`_lanetype, `%`_dim{i#116283}(4))), `SHR`_vshiftop_{sx#29505}(`S`_sx))] -[visit_exp `%`_ishape{shape#4603, Jnn#516}(`%X%`_shape{lanetype#29187, dim#29187, i#116276}(`I32`_lanetype, `%`_dim{i#116283}(4)))] -[visit_exp shape#4603] -[visit_id shape#4603] -[visit_exp Jnn#516] -[visit_id Jnn#516] -[visit_exp (`%X%`_shape{lanetype#29187, dim#29187, i#116276}(`I32`_lanetype, `%`_dim{i#116283}(4)))] -[visit_exp `%X%`_shape{lanetype#29187, dim#29187, i#116276}(`I32`_lanetype, `%`_dim{i#116283}(4))] -[visit_exp lanetype#29187] -[visit_id lanetype#29187] -[visit_exp dim#29187] -[visit_id dim#29187] -[visit_exp i#116276] -[visit_id i#116276] -[visit_exp (`I32`_lanetype, `%`_dim{i#116283}(4))] +[check_dims] I +dims \ I = +[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `SHR`_vshiftop_(`S`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `SHR`_vshiftop_(`S`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#116283}(4)] -[visit_exp i#116283] -[visit_id i#116283] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `SHR`_vshiftop_{sx#29505}(`S`_sx)] -[visit_exp sx#29505] -[visit_id sx#29505] +[visit_exp `SHR`_vshiftop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I Jnn#520 dim#29289 i#116438 i#116445 ishape#61 lanetype#29289 shape#4645 sx#29539 -dims \ I = Jnn#520, dim#29289, i#116438, i#116445, ishape#61, lanetype#29289, shape#4645, sx#29539 -[visit_exp `VSHIFTOP`_instr{ishape#61}(`%`_ishape{shape#4645, Jnn#520}(`%X%`_shape{lanetype#29289, dim#29289, i#116438}(`I32`_lanetype, `%`_dim{i#116445}(4))), `SHR`_vshiftop_{sx#29539}(`U`_sx))] -[visit_exp ishape#61] -[visit_id ishape#61] -[visit_exp (`%`_ishape{shape#4645, Jnn#520}(`%X%`_shape{lanetype#29289, dim#29289, i#116438}(`I32`_lanetype, `%`_dim{i#116445}(4))), `SHR`_vshiftop_{sx#29539}(`U`_sx))] -[visit_exp `%`_ishape{shape#4645, Jnn#520}(`%X%`_shape{lanetype#29289, dim#29289, i#116438}(`I32`_lanetype, `%`_dim{i#116445}(4)))] -[visit_exp shape#4645] -[visit_id shape#4645] -[visit_exp Jnn#520] -[visit_id Jnn#520] -[visit_exp (`%X%`_shape{lanetype#29289, dim#29289, i#116438}(`I32`_lanetype, `%`_dim{i#116445}(4)))] -[visit_exp `%X%`_shape{lanetype#29289, dim#29289, i#116438}(`I32`_lanetype, `%`_dim{i#116445}(4))] -[visit_exp lanetype#29289] -[visit_id lanetype#29289] -[visit_exp dim#29289] -[visit_id dim#29289] -[visit_exp i#116438] -[visit_id i#116438] -[visit_exp (`I32`_lanetype, `%`_dim{i#116445}(4))] +[check_dims] I +dims \ I = +[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `SHR`_vshiftop_(`U`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `SHR`_vshiftop_(`U`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#116445}(4)] -[visit_exp i#116445] -[visit_id i#116445] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `SHR`_vshiftop_{sx#29539}(`U`_sx)] -[visit_exp sx#29539] -[visit_id sx#29539] +[visit_exp `SHR`_vshiftop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I Jnn#524 dim#29391 i#116600 i#116607 ishape#63 lanetype#29391 shape#4687 -dims \ I = Jnn#524, dim#29391, i#116600, i#116607, ishape#63, lanetype#29391, shape#4687 -[visit_exp `VSHIFTOP`_instr{ishape#63}(`%`_ishape{shape#4687, Jnn#524}(`%X%`_shape{lanetype#29391, dim#29391, i#116600}(`I64`_lanetype, `%`_dim{i#116607}(2))), `SHL`_vshiftop_)] -[visit_exp ishape#63] -[visit_id ishape#63] -[visit_exp (`%`_ishape{shape#4687, Jnn#524}(`%X%`_shape{lanetype#29391, dim#29391, i#116600}(`I64`_lanetype, `%`_dim{i#116607}(2))), `SHL`_vshiftop_)] -[visit_exp `%`_ishape{shape#4687, Jnn#524}(`%X%`_shape{lanetype#29391, dim#29391, i#116600}(`I64`_lanetype, `%`_dim{i#116607}(2)))] -[visit_exp shape#4687] -[visit_id shape#4687] -[visit_exp Jnn#524] -[visit_id Jnn#524] -[visit_exp (`%X%`_shape{lanetype#29391, dim#29391, i#116600}(`I64`_lanetype, `%`_dim{i#116607}(2)))] -[visit_exp `%X%`_shape{lanetype#29391, dim#29391, i#116600}(`I64`_lanetype, `%`_dim{i#116607}(2))] -[visit_exp lanetype#29391] -[visit_id lanetype#29391] -[visit_exp dim#29391] -[visit_id dim#29391] -[visit_exp i#116600] -[visit_id i#116600] -[visit_exp (`I64`_lanetype, `%`_dim{i#116607}(2))] +[check_dims] I +dims \ I = +[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `SHL`_vshiftop_)] +[visit_exp (`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `SHL`_vshiftop_)] +[visit_exp `%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#116607}(2)] -[visit_exp i#116607] -[visit_id i#116607] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_exp `SHL`_vshiftop_] [visit_exp ()] -[check_dims] I Jnn#528 dim#29448 i#116687 i#116694 ishape#65 lanetype#29448 shape#4714 sx#29588 -dims \ I = Jnn#528, dim#29448, i#116687, i#116694, ishape#65, lanetype#29448, shape#4714, sx#29588 -[visit_exp `VSHIFTOP`_instr{ishape#65}(`%`_ishape{shape#4714, Jnn#528}(`%X%`_shape{lanetype#29448, dim#29448, i#116687}(`I64`_lanetype, `%`_dim{i#116694}(2))), `SHR`_vshiftop_{sx#29588}(`S`_sx))] -[visit_exp ishape#65] -[visit_id ishape#65] -[visit_exp (`%`_ishape{shape#4714, Jnn#528}(`%X%`_shape{lanetype#29448, dim#29448, i#116687}(`I64`_lanetype, `%`_dim{i#116694}(2))), `SHR`_vshiftop_{sx#29588}(`S`_sx))] -[visit_exp `%`_ishape{shape#4714, Jnn#528}(`%X%`_shape{lanetype#29448, dim#29448, i#116687}(`I64`_lanetype, `%`_dim{i#116694}(2)))] -[visit_exp shape#4714] -[visit_id shape#4714] -[visit_exp Jnn#528] -[visit_id Jnn#528] -[visit_exp (`%X%`_shape{lanetype#29448, dim#29448, i#116687}(`I64`_lanetype, `%`_dim{i#116694}(2)))] -[visit_exp `%X%`_shape{lanetype#29448, dim#29448, i#116687}(`I64`_lanetype, `%`_dim{i#116694}(2))] -[visit_exp lanetype#29448] -[visit_id lanetype#29448] -[visit_exp dim#29448] -[visit_id dim#29448] -[visit_exp i#116687] -[visit_id i#116687] -[visit_exp (`I64`_lanetype, `%`_dim{i#116694}(2))] +[check_dims] I +dims \ I = +[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `SHR`_vshiftop_(`S`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `SHR`_vshiftop_(`S`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#116694}(2)] -[visit_exp i#116694] -[visit_id i#116694] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `SHR`_vshiftop_{sx#29588}(`S`_sx)] -[visit_exp sx#29588] -[visit_id sx#29588] +[visit_exp `SHR`_vshiftop_(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I Jnn#532 dim#29550 i#116849 i#116856 ishape#67 lanetype#29550 shape#4756 sx#29622 -dims \ I = Jnn#532, dim#29550, i#116849, i#116856, ishape#67, lanetype#29550, shape#4756, sx#29622 -[visit_exp `VSHIFTOP`_instr{ishape#67}(`%`_ishape{shape#4756, Jnn#532}(`%X%`_shape{lanetype#29550, dim#29550, i#116849}(`I64`_lanetype, `%`_dim{i#116856}(2))), `SHR`_vshiftop_{sx#29622}(`U`_sx))] -[visit_exp ishape#67] -[visit_id ishape#67] -[visit_exp (`%`_ishape{shape#4756, Jnn#532}(`%X%`_shape{lanetype#29550, dim#29550, i#116849}(`I64`_lanetype, `%`_dim{i#116856}(2))), `SHR`_vshiftop_{sx#29622}(`U`_sx))] -[visit_exp `%`_ishape{shape#4756, Jnn#532}(`%X%`_shape{lanetype#29550, dim#29550, i#116849}(`I64`_lanetype, `%`_dim{i#116856}(2)))] -[visit_exp shape#4756] -[visit_id shape#4756] -[visit_exp Jnn#532] -[visit_id Jnn#532] -[visit_exp (`%X%`_shape{lanetype#29550, dim#29550, i#116849}(`I64`_lanetype, `%`_dim{i#116856}(2)))] -[visit_exp `%X%`_shape{lanetype#29550, dim#29550, i#116849}(`I64`_lanetype, `%`_dim{i#116856}(2))] -[visit_exp lanetype#29550] -[visit_id lanetype#29550] -[visit_exp dim#29550] -[visit_id dim#29550] -[visit_exp i#116849] -[visit_id i#116849] -[visit_exp (`I64`_lanetype, `%`_dim{i#116856}(2))] +[check_dims] I +dims \ I = +[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `SHR`_vshiftop_(`U`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `SHR`_vshiftop_(`U`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#116856}(2)] -[visit_exp i#116856] -[visit_id i#116856] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `SHR`_vshiftop_{sx#29622}(`U`_sx)] -[visit_exp sx#29622] -[visit_id sx#29622] +[visit_exp `SHR`_vshiftop_(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I Jnn#536 dim#29652 i#117011 i#117018 ishape#69 lanetype#29652 shape#4798 -dims \ I = Jnn#536, dim#29652, i#117011, i#117018, ishape#69, lanetype#29652, shape#4798 -[visit_exp `VBITMASK`_instr{ishape#69}(`%`_ishape{shape#4798, Jnn#536}(`%X%`_shape{lanetype#29652, dim#29652, i#117011}(`I8`_lanetype, `%`_dim{i#117018}(16))))] -[visit_exp ishape#69] -[visit_id ishape#69] -[visit_exp (`%`_ishape{shape#4798, Jnn#536}(`%X%`_shape{lanetype#29652, dim#29652, i#117011}(`I8`_lanetype, `%`_dim{i#117018}(16))))] -[visit_exp `%`_ishape{shape#4798, Jnn#536}(`%X%`_shape{lanetype#29652, dim#29652, i#117011}(`I8`_lanetype, `%`_dim{i#117018}(16)))] -[visit_exp shape#4798] -[visit_id shape#4798] -[visit_exp Jnn#536] -[visit_id Jnn#536] -[visit_exp (`%X%`_shape{lanetype#29652, dim#29652, i#117011}(`I8`_lanetype, `%`_dim{i#117018}(16)))] -[visit_exp `%X%`_shape{lanetype#29652, dim#29652, i#117011}(`I8`_lanetype, `%`_dim{i#117018}(16))] -[visit_exp lanetype#29652] -[visit_id lanetype#29652] -[visit_exp dim#29652] -[visit_id dim#29652] -[visit_exp i#117011] -[visit_id i#117011] -[visit_exp (`I8`_lanetype, `%`_dim{i#117018}(16))] +[check_dims] I +dims \ I = +[visit_exp `VBITMASK`_instr(`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))))] +[visit_exp (`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))))] +[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#117018}(16)] -[visit_exp i#117018] -[visit_id i#117018] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I Jnn#540 dim#29664 i#117023 i#117030 ishape#71 lanetype#29664 shape#4810 -dims \ I = Jnn#540, dim#29664, i#117023, i#117030, ishape#71, lanetype#29664, shape#4810 -[visit_exp `VBITMASK`_instr{ishape#71}(`%`_ishape{shape#4810, Jnn#540}(`%X%`_shape{lanetype#29664, dim#29664, i#117023}(`I16`_lanetype, `%`_dim{i#117030}(8))))] -[visit_exp ishape#71] -[visit_id ishape#71] -[visit_exp (`%`_ishape{shape#4810, Jnn#540}(`%X%`_shape{lanetype#29664, dim#29664, i#117023}(`I16`_lanetype, `%`_dim{i#117030}(8))))] -[visit_exp `%`_ishape{shape#4810, Jnn#540}(`%X%`_shape{lanetype#29664, dim#29664, i#117023}(`I16`_lanetype, `%`_dim{i#117030}(8)))] -[visit_exp shape#4810] -[visit_id shape#4810] -[visit_exp Jnn#540] -[visit_id Jnn#540] -[visit_exp (`%X%`_shape{lanetype#29664, dim#29664, i#117023}(`I16`_lanetype, `%`_dim{i#117030}(8)))] -[visit_exp `%X%`_shape{lanetype#29664, dim#29664, i#117023}(`I16`_lanetype, `%`_dim{i#117030}(8))] -[visit_exp lanetype#29664] -[visit_id lanetype#29664] -[visit_exp dim#29664] -[visit_id dim#29664] -[visit_exp i#117023] -[visit_id i#117023] -[visit_exp (`I16`_lanetype, `%`_dim{i#117030}(8))] +[check_dims] I +dims \ I = +[visit_exp `VBITMASK`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))))] +[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))))] +[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#117030}(8)] -[visit_exp i#117030] -[visit_id i#117030] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I Jnn#544 dim#29676 i#117035 i#117042 ishape#73 lanetype#29676 shape#4822 -dims \ I = Jnn#544, dim#29676, i#117035, i#117042, ishape#73, lanetype#29676, shape#4822 -[visit_exp `VBITMASK`_instr{ishape#73}(`%`_ishape{shape#4822, Jnn#544}(`%X%`_shape{lanetype#29676, dim#29676, i#117035}(`I32`_lanetype, `%`_dim{i#117042}(4))))] -[visit_exp ishape#73] -[visit_id ishape#73] -[visit_exp (`%`_ishape{shape#4822, Jnn#544}(`%X%`_shape{lanetype#29676, dim#29676, i#117035}(`I32`_lanetype, `%`_dim{i#117042}(4))))] -[visit_exp `%`_ishape{shape#4822, Jnn#544}(`%X%`_shape{lanetype#29676, dim#29676, i#117035}(`I32`_lanetype, `%`_dim{i#117042}(4)))] -[visit_exp shape#4822] -[visit_id shape#4822] -[visit_exp Jnn#544] -[visit_id Jnn#544] -[visit_exp (`%X%`_shape{lanetype#29676, dim#29676, i#117035}(`I32`_lanetype, `%`_dim{i#117042}(4)))] -[visit_exp `%X%`_shape{lanetype#29676, dim#29676, i#117035}(`I32`_lanetype, `%`_dim{i#117042}(4))] -[visit_exp lanetype#29676] -[visit_id lanetype#29676] -[visit_exp dim#29676] -[visit_id dim#29676] -[visit_exp i#117035] -[visit_id i#117035] -[visit_exp (`I32`_lanetype, `%`_dim{i#117042}(4))] +[check_dims] I +dims \ I = +[visit_exp `VBITMASK`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))))] +[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))))] +[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#117042}(4)] -[visit_exp i#117042] -[visit_id i#117042] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I Jnn#548 dim#29688 i#117047 i#117054 ishape#75 lanetype#29688 shape#4834 -dims \ I = Jnn#548, dim#29688, i#117047, i#117054, ishape#75, lanetype#29688, shape#4834 -[visit_exp `VBITMASK`_instr{ishape#75}(`%`_ishape{shape#4834, Jnn#548}(`%X%`_shape{lanetype#29688, dim#29688, i#117047}(`I64`_lanetype, `%`_dim{i#117054}(2))))] -[visit_exp ishape#75] -[visit_id ishape#75] -[visit_exp (`%`_ishape{shape#4834, Jnn#548}(`%X%`_shape{lanetype#29688, dim#29688, i#117047}(`I64`_lanetype, `%`_dim{i#117054}(2))))] -[visit_exp `%`_ishape{shape#4834, Jnn#548}(`%X%`_shape{lanetype#29688, dim#29688, i#117047}(`I64`_lanetype, `%`_dim{i#117054}(2)))] -[visit_exp shape#4834] -[visit_id shape#4834] -[visit_exp Jnn#548] -[visit_id Jnn#548] -[visit_exp (`%X%`_shape{lanetype#29688, dim#29688, i#117047}(`I64`_lanetype, `%`_dim{i#117054}(2)))] -[visit_exp `%X%`_shape{lanetype#29688, dim#29688, i#117047}(`I64`_lanetype, `%`_dim{i#117054}(2))] -[visit_exp lanetype#29688] -[visit_id lanetype#29688] -[visit_exp dim#29688] -[visit_id dim#29688] -[visit_exp i#117047] -[visit_id i#117047] -[visit_exp (`I64`_lanetype, `%`_dim{i#117054}(2))] +[check_dims] I +dims \ I = +[visit_exp `VBITMASK`_instr(`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))))] +[visit_exp (`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))))] +[visit_exp `%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#117054}(2)] -[visit_exp i#117054] -[visit_id i#117054] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I Jnn#549 Jnn#550 Jnn#551 Jnn#555 Jnn#559 dim#29700 dim#29712 i#117059 i#117066 i#117071 i#117078 ishape_1#71 ishape_2#71 lanetype#29700 lanetype#29712 shape#4836 shape#4837 shape#4838 shape#4849 shape#4861 sx#29624 -dims \ I = Jnn#549, Jnn#550, Jnn#551, Jnn#555, Jnn#559, dim#29700, dim#29712, i#117059, i#117066, i#117071, i#117078, ishape_1#71, ishape_2#71, lanetype#29700, lanetype#29712, shape#4836, shape#4837, shape#4838, shape#4849, shape#4861, sx#29624 -[visit_exp `VNARROW`_instr{ishape_1#71, ishape_2#71, sx#29624, shape#4836, Jnn#549, shape#4837, Jnn#550, shape#4838, Jnn#551}(`%`_ishape{shape#4849, Jnn#555}(`%X%`_shape{lanetype#29700, dim#29700, i#117059}(`I8`_lanetype, `%`_dim{i#117066}(16))), `%`_ishape{shape#4861, Jnn#559}(`%X%`_shape{lanetype#29712, dim#29712, i#117071}(`I16`_lanetype, `%`_dim{i#117078}(8))), `S`_sx)] -[visit_exp ishape_1#71] -[visit_id ishape_1#71] -[visit_exp ishape_2#71] -[visit_id ishape_2#71] -[visit_exp sx#29624] -[visit_id sx#29624] -[visit_exp shape#4836] -[visit_id shape#4836] -[visit_exp Jnn#549] -[visit_id Jnn#549] -[visit_exp shape#4837] -[visit_id shape#4837] -[visit_exp Jnn#550] -[visit_id Jnn#550] -[visit_exp shape#4838] -[visit_id shape#4838] -[visit_exp Jnn#551] -[visit_id Jnn#551] -[visit_exp (`%`_ishape{shape#4849, Jnn#555}(`%X%`_shape{lanetype#29700, dim#29700, i#117059}(`I8`_lanetype, `%`_dim{i#117066}(16))), `%`_ishape{shape#4861, Jnn#559}(`%X%`_shape{lanetype#29712, dim#29712, i#117071}(`I16`_lanetype, `%`_dim{i#117078}(8))), `S`_sx)] -[visit_exp `%`_ishape{shape#4849, Jnn#555}(`%X%`_shape{lanetype#29700, dim#29700, i#117059}(`I8`_lanetype, `%`_dim{i#117066}(16)))] -[visit_exp shape#4849] -[visit_id shape#4849] -[visit_exp Jnn#555] -[visit_id Jnn#555] -[visit_exp (`%X%`_shape{lanetype#29700, dim#29700, i#117059}(`I8`_lanetype, `%`_dim{i#117066}(16)))] -[visit_exp `%X%`_shape{lanetype#29700, dim#29700, i#117059}(`I8`_lanetype, `%`_dim{i#117066}(16))] -[visit_exp lanetype#29700] -[visit_id lanetype#29700] -[visit_exp dim#29700] -[visit_id dim#29700] -[visit_exp i#117059] -[visit_id i#117059] -[visit_exp (`I8`_lanetype, `%`_dim{i#117066}(16))] +[check_dims] I +dims \ I = +[visit_exp `VNARROW`_instr(`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `S`_sx)] +[visit_exp (`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `S`_sx)] +[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#117066}(16)] -[visit_exp i#117066] -[visit_id i#117066] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `%`_ishape{shape#4861, Jnn#559}(`%X%`_shape{lanetype#29712, dim#29712, i#117071}(`I16`_lanetype, `%`_dim{i#117078}(8)))] -[visit_exp shape#4861] -[visit_id shape#4861] -[visit_exp Jnn#559] -[visit_id Jnn#559] -[visit_exp (`%X%`_shape{lanetype#29712, dim#29712, i#117071}(`I16`_lanetype, `%`_dim{i#117078}(8)))] -[visit_exp `%X%`_shape{lanetype#29712, dim#29712, i#117071}(`I16`_lanetype, `%`_dim{i#117078}(8))] -[visit_exp lanetype#29712] -[visit_id lanetype#29712] -[visit_exp dim#29712] -[visit_id dim#29712] -[visit_exp i#117071] -[visit_id i#117071] -[visit_exp (`I16`_lanetype, `%`_dim{i#117078}(8))] +[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#117078}(8)] -[visit_exp i#117078] -[visit_id i#117078] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I Jnn#560 Jnn#561 Jnn#562 Jnn#566 Jnn#570 dim#29724 dim#29736 i#117083 i#117090 i#117095 i#117102 ishape_1#73 ishape_2#73 lanetype#29724 lanetype#29736 shape#4863 shape#4864 shape#4865 shape#4876 shape#4888 sx#29626 -dims \ I = Jnn#560, Jnn#561, Jnn#562, Jnn#566, Jnn#570, dim#29724, dim#29736, i#117083, i#117090, i#117095, i#117102, ishape_1#73, ishape_2#73, lanetype#29724, lanetype#29736, shape#4863, shape#4864, shape#4865, shape#4876, shape#4888, sx#29626 -[visit_exp `VNARROW`_instr{ishape_1#73, ishape_2#73, sx#29626, shape#4863, Jnn#560, shape#4864, Jnn#561, shape#4865, Jnn#562}(`%`_ishape{shape#4876, Jnn#566}(`%X%`_shape{lanetype#29724, dim#29724, i#117083}(`I8`_lanetype, `%`_dim{i#117090}(16))), `%`_ishape{shape#4888, Jnn#570}(`%X%`_shape{lanetype#29736, dim#29736, i#117095}(`I16`_lanetype, `%`_dim{i#117102}(8))), `U`_sx)] -[visit_exp ishape_1#73] -[visit_id ishape_1#73] -[visit_exp ishape_2#73] -[visit_id ishape_2#73] -[visit_exp sx#29626] -[visit_id sx#29626] -[visit_exp shape#4863] -[visit_id shape#4863] -[visit_exp Jnn#560] -[visit_id Jnn#560] -[visit_exp shape#4864] -[visit_id shape#4864] -[visit_exp Jnn#561] -[visit_id Jnn#561] -[visit_exp shape#4865] -[visit_id shape#4865] -[visit_exp Jnn#562] -[visit_id Jnn#562] -[visit_exp (`%`_ishape{shape#4876, Jnn#566}(`%X%`_shape{lanetype#29724, dim#29724, i#117083}(`I8`_lanetype, `%`_dim{i#117090}(16))), `%`_ishape{shape#4888, Jnn#570}(`%X%`_shape{lanetype#29736, dim#29736, i#117095}(`I16`_lanetype, `%`_dim{i#117102}(8))), `U`_sx)] -[visit_exp `%`_ishape{shape#4876, Jnn#566}(`%X%`_shape{lanetype#29724, dim#29724, i#117083}(`I8`_lanetype, `%`_dim{i#117090}(16)))] -[visit_exp shape#4876] -[visit_id shape#4876] -[visit_exp Jnn#566] -[visit_id Jnn#566] -[visit_exp (`%X%`_shape{lanetype#29724, dim#29724, i#117083}(`I8`_lanetype, `%`_dim{i#117090}(16)))] -[visit_exp `%X%`_shape{lanetype#29724, dim#29724, i#117083}(`I8`_lanetype, `%`_dim{i#117090}(16))] -[visit_exp lanetype#29724] -[visit_id lanetype#29724] -[visit_exp dim#29724] -[visit_id dim#29724] -[visit_exp i#117083] -[visit_id i#117083] -[visit_exp (`I8`_lanetype, `%`_dim{i#117090}(16))] +[check_dims] I +dims \ I = +[visit_exp `VNARROW`_instr(`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `U`_sx)] +[visit_exp (`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `U`_sx)] +[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#117090}(16)] -[visit_exp i#117090] -[visit_id i#117090] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `%`_ishape{shape#4888, Jnn#570}(`%X%`_shape{lanetype#29736, dim#29736, i#117095}(`I16`_lanetype, `%`_dim{i#117102}(8)))] -[visit_exp shape#4888] -[visit_id shape#4888] -[visit_exp Jnn#570] -[visit_id Jnn#570] -[visit_exp (`%X%`_shape{lanetype#29736, dim#29736, i#117095}(`I16`_lanetype, `%`_dim{i#117102}(8)))] -[visit_exp `%X%`_shape{lanetype#29736, dim#29736, i#117095}(`I16`_lanetype, `%`_dim{i#117102}(8))] -[visit_exp lanetype#29736] -[visit_id lanetype#29736] -[visit_exp dim#29736] -[visit_id dim#29736] -[visit_exp i#117095] -[visit_id i#117095] -[visit_exp (`I16`_lanetype, `%`_dim{i#117102}(8))] +[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#117102}(8)] -[visit_exp i#117102] -[visit_id i#117102] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] [visit_exp `U`_sx] @@ -104326,134 +81234,50 @@ dims \ I = Jnn#560, Jnn#561, Jnn#562, Jnn#566, Jnn#570, dim#29724, dim#29736, i# [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I Jnn#571 Jnn#572 Jnn#573 Jnn#577 Jnn#581 dim#29748 dim#29760 i#117107 i#117114 i#117119 i#117126 ishape_1#75 ishape_2#75 lanetype#29748 lanetype#29760 shape#4890 shape#4891 shape#4892 shape#4903 shape#4915 sx#29628 -dims \ I = Jnn#571, Jnn#572, Jnn#573, Jnn#577, Jnn#581, dim#29748, dim#29760, i#117107, i#117114, i#117119, i#117126, ishape_1#75, ishape_2#75, lanetype#29748, lanetype#29760, shape#4890, shape#4891, shape#4892, shape#4903, shape#4915, sx#29628 -[visit_exp `VNARROW`_instr{ishape_1#75, ishape_2#75, sx#29628, shape#4890, Jnn#571, shape#4891, Jnn#572, shape#4892, Jnn#573}(`%`_ishape{shape#4903, Jnn#577}(`%X%`_shape{lanetype#29748, dim#29748, i#117107}(`I16`_lanetype, `%`_dim{i#117114}(8))), `%`_ishape{shape#4915, Jnn#581}(`%X%`_shape{lanetype#29760, dim#29760, i#117119}(`I32`_lanetype, `%`_dim{i#117126}(4))), `S`_sx)] -[visit_exp ishape_1#75] -[visit_id ishape_1#75] -[visit_exp ishape_2#75] -[visit_id ishape_2#75] -[visit_exp sx#29628] -[visit_id sx#29628] -[visit_exp shape#4890] -[visit_id shape#4890] -[visit_exp Jnn#571] -[visit_id Jnn#571] -[visit_exp shape#4891] -[visit_id shape#4891] -[visit_exp Jnn#572] -[visit_id Jnn#572] -[visit_exp shape#4892] -[visit_id shape#4892] -[visit_exp Jnn#573] -[visit_id Jnn#573] -[visit_exp (`%`_ishape{shape#4903, Jnn#577}(`%X%`_shape{lanetype#29748, dim#29748, i#117107}(`I16`_lanetype, `%`_dim{i#117114}(8))), `%`_ishape{shape#4915, Jnn#581}(`%X%`_shape{lanetype#29760, dim#29760, i#117119}(`I32`_lanetype, `%`_dim{i#117126}(4))), `S`_sx)] -[visit_exp `%`_ishape{shape#4903, Jnn#577}(`%X%`_shape{lanetype#29748, dim#29748, i#117107}(`I16`_lanetype, `%`_dim{i#117114}(8)))] -[visit_exp shape#4903] -[visit_id shape#4903] -[visit_exp Jnn#577] -[visit_id Jnn#577] -[visit_exp (`%X%`_shape{lanetype#29748, dim#29748, i#117107}(`I16`_lanetype, `%`_dim{i#117114}(8)))] -[visit_exp `%X%`_shape{lanetype#29748, dim#29748, i#117107}(`I16`_lanetype, `%`_dim{i#117114}(8))] -[visit_exp lanetype#29748] -[visit_id lanetype#29748] -[visit_exp dim#29748] -[visit_id dim#29748] -[visit_exp i#117107] -[visit_id i#117107] -[visit_exp (`I16`_lanetype, `%`_dim{i#117114}(8))] +[check_dims] I +dims \ I = +[visit_exp `VNARROW`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `S`_sx)] +[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `S`_sx)] +[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#117114}(8)] -[visit_exp i#117114] -[visit_id i#117114] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `%`_ishape{shape#4915, Jnn#581}(`%X%`_shape{lanetype#29760, dim#29760, i#117119}(`I32`_lanetype, `%`_dim{i#117126}(4)))] -[visit_exp shape#4915] -[visit_id shape#4915] -[visit_exp Jnn#581] -[visit_id Jnn#581] -[visit_exp (`%X%`_shape{lanetype#29760, dim#29760, i#117119}(`I32`_lanetype, `%`_dim{i#117126}(4)))] -[visit_exp `%X%`_shape{lanetype#29760, dim#29760, i#117119}(`I32`_lanetype, `%`_dim{i#117126}(4))] -[visit_exp lanetype#29760] -[visit_id lanetype#29760] -[visit_exp dim#29760] -[visit_id dim#29760] -[visit_exp i#117119] -[visit_id i#117119] -[visit_exp (`I32`_lanetype, `%`_dim{i#117126}(4))] +[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#117126}(4)] -[visit_exp i#117126] -[visit_id i#117126] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I Jnn#582 Jnn#583 Jnn#584 Jnn#588 Jnn#592 dim#29772 dim#29784 i#117131 i#117138 i#117143 i#117150 ishape_1#77 ishape_2#77 lanetype#29772 lanetype#29784 shape#4917 shape#4918 shape#4919 shape#4930 shape#4942 sx#29630 -dims \ I = Jnn#582, Jnn#583, Jnn#584, Jnn#588, Jnn#592, dim#29772, dim#29784, i#117131, i#117138, i#117143, i#117150, ishape_1#77, ishape_2#77, lanetype#29772, lanetype#29784, shape#4917, shape#4918, shape#4919, shape#4930, shape#4942, sx#29630 -[visit_exp `VNARROW`_instr{ishape_1#77, ishape_2#77, sx#29630, shape#4917, Jnn#582, shape#4918, Jnn#583, shape#4919, Jnn#584}(`%`_ishape{shape#4930, Jnn#588}(`%X%`_shape{lanetype#29772, dim#29772, i#117131}(`I16`_lanetype, `%`_dim{i#117138}(8))), `%`_ishape{shape#4942, Jnn#592}(`%X%`_shape{lanetype#29784, dim#29784, i#117143}(`I32`_lanetype, `%`_dim{i#117150}(4))), `U`_sx)] -[visit_exp ishape_1#77] -[visit_id ishape_1#77] -[visit_exp ishape_2#77] -[visit_id ishape_2#77] -[visit_exp sx#29630] -[visit_id sx#29630] -[visit_exp shape#4917] -[visit_id shape#4917] -[visit_exp Jnn#582] -[visit_id Jnn#582] -[visit_exp shape#4918] -[visit_id shape#4918] -[visit_exp Jnn#583] -[visit_id Jnn#583] -[visit_exp shape#4919] -[visit_id shape#4919] -[visit_exp Jnn#584] -[visit_id Jnn#584] -[visit_exp (`%`_ishape{shape#4930, Jnn#588}(`%X%`_shape{lanetype#29772, dim#29772, i#117131}(`I16`_lanetype, `%`_dim{i#117138}(8))), `%`_ishape{shape#4942, Jnn#592}(`%X%`_shape{lanetype#29784, dim#29784, i#117143}(`I32`_lanetype, `%`_dim{i#117150}(4))), `U`_sx)] -[visit_exp `%`_ishape{shape#4930, Jnn#588}(`%X%`_shape{lanetype#29772, dim#29772, i#117131}(`I16`_lanetype, `%`_dim{i#117138}(8)))] -[visit_exp shape#4930] -[visit_id shape#4930] -[visit_exp Jnn#588] -[visit_id Jnn#588] -[visit_exp (`%X%`_shape{lanetype#29772, dim#29772, i#117131}(`I16`_lanetype, `%`_dim{i#117138}(8)))] -[visit_exp `%X%`_shape{lanetype#29772, dim#29772, i#117131}(`I16`_lanetype, `%`_dim{i#117138}(8))] -[visit_exp lanetype#29772] -[visit_id lanetype#29772] -[visit_exp dim#29772] -[visit_id dim#29772] -[visit_exp i#117131] -[visit_id i#117131] -[visit_exp (`I16`_lanetype, `%`_dim{i#117138}(8))] +[check_dims] I +dims \ I = +[visit_exp `VNARROW`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `U`_sx)] +[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `U`_sx)] +[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#117138}(8)] -[visit_exp i#117138] -[visit_id i#117138] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `%`_ishape{shape#4942, Jnn#592}(`%X%`_shape{lanetype#29784, dim#29784, i#117143}(`I32`_lanetype, `%`_dim{i#117150}(4)))] -[visit_exp shape#4942] -[visit_id shape#4942] -[visit_exp Jnn#592] -[visit_id Jnn#592] -[visit_exp (`%X%`_shape{lanetype#29784, dim#29784, i#117143}(`I32`_lanetype, `%`_dim{i#117150}(4)))] -[visit_exp `%X%`_shape{lanetype#29784, dim#29784, i#117143}(`I32`_lanetype, `%`_dim{i#117150}(4))] -[visit_exp lanetype#29784] -[visit_id lanetype#29784] -[visit_exp dim#29784] -[visit_id dim#29784] -[visit_exp i#117143] -[visit_id i#117143] -[visit_exp (`I32`_lanetype, `%`_dim{i#117150}(4))] +[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#117150}(4)] -[visit_exp i#117150] -[visit_id i#117150] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `U`_sx] @@ -104464,193 +81288,97 @@ ps' = (I : I) [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I dim#29796 dim#29808 half#1172 i#117155 i#117162 i#117167 i#117174 lanetype#29796 lanetype#29808 shape_1#59 shape_2#59 sx#29664 -dims \ I = dim#29796, dim#29808, half#1172, i#117155, i#117162, i#117167, i#117174, lanetype#29796, lanetype#29808, shape_1#59, shape_2#59, sx#29664 -[visit_exp `VCVTOP`_instr{shape_1#59, shape_2#59}(`%X%`_shape{lanetype#29796, dim#29796, i#117155}(`I16`_lanetype, `%`_dim{i#117162}(8)), `%X%`_shape{lanetype#29808, dim#29808, i#117167}(`I8`_lanetype, `%`_dim{i#117174}(16)), `EXTEND`_vcvtop__{half#1172, sx#29664}(`LOW`_half, `S`_sx))] -[visit_exp shape_1#59] -[visit_id shape_1#59] -[visit_exp shape_2#59] -[visit_id shape_2#59] -[visit_exp (`%X%`_shape{lanetype#29796, dim#29796, i#117155}(`I16`_lanetype, `%`_dim{i#117162}(8)), `%X%`_shape{lanetype#29808, dim#29808, i#117167}(`I8`_lanetype, `%`_dim{i#117174}(16)), `EXTEND`_vcvtop__{half#1172, sx#29664}(`LOW`_half, `S`_sx))] -[visit_exp `%X%`_shape{lanetype#29796, dim#29796, i#117155}(`I16`_lanetype, `%`_dim{i#117162}(8))] -[visit_exp lanetype#29796] -[visit_id lanetype#29796] -[visit_exp dim#29796] -[visit_id dim#29796] -[visit_exp i#117155] -[visit_id i#117155] -[visit_exp (`I16`_lanetype, `%`_dim{i#117162}(8))] +[check_dims] I +dims \ I = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `%X%`_shape(`I8`_lanetype, `%`_dim(16)), `EXTEND`_vcvtop__(`LOW`_half, `S`_sx))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `%X%`_shape(`I8`_lanetype, `%`_dim(16)), `EXTEND`_vcvtop__(`LOW`_half, `S`_sx))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#117162}(8)] -[visit_exp i#117162] -[visit_id i#117162] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `%X%`_shape{lanetype#29808, dim#29808, i#117167}(`I8`_lanetype, `%`_dim{i#117174}(16))] -[visit_exp lanetype#29808] -[visit_id lanetype#29808] -[visit_exp dim#29808] -[visit_id dim#29808] -[visit_exp i#117167] -[visit_id i#117167] -[visit_exp (`I8`_lanetype, `%`_dim{i#117174}(16))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#117174}(16)] -[visit_exp i#117174] -[visit_id i#117174] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `EXTEND`_vcvtop__{half#1172, sx#29664}(`LOW`_half, `S`_sx)] -[visit_exp half#1172] -[visit_id half#1172] -[visit_exp sx#29664] -[visit_id sx#29664] +[visit_exp `EXTEND`_vcvtop__(`LOW`_half, `S`_sx)] [visit_exp (`LOW`_half, `S`_sx)] [visit_exp `LOW`_half] [visit_exp ()] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I dim#29911 dim#29923 half#1206 i#117390 i#117397 i#117402 i#117409 lanetype#29911 lanetype#29923 shape_1#61 shape_2#61 sx#29698 -dims \ I = dim#29911, dim#29923, half#1206, i#117390, i#117397, i#117402, i#117409, lanetype#29911, lanetype#29923, shape_1#61, shape_2#61, sx#29698 -[visit_exp `VCVTOP`_instr{shape_1#61, shape_2#61}(`%X%`_shape{lanetype#29911, dim#29911, i#117390}(`I16`_lanetype, `%`_dim{i#117397}(8)), `%X%`_shape{lanetype#29923, dim#29923, i#117402}(`I8`_lanetype, `%`_dim{i#117409}(16)), `EXTEND`_vcvtop__{half#1206, sx#29698}(`LOW`_half, `U`_sx))] -[visit_exp shape_1#61] -[visit_id shape_1#61] -[visit_exp shape_2#61] -[visit_id shape_2#61] -[visit_exp (`%X%`_shape{lanetype#29911, dim#29911, i#117390}(`I16`_lanetype, `%`_dim{i#117397}(8)), `%X%`_shape{lanetype#29923, dim#29923, i#117402}(`I8`_lanetype, `%`_dim{i#117409}(16)), `EXTEND`_vcvtop__{half#1206, sx#29698}(`LOW`_half, `U`_sx))] -[visit_exp `%X%`_shape{lanetype#29911, dim#29911, i#117390}(`I16`_lanetype, `%`_dim{i#117397}(8))] -[visit_exp lanetype#29911] -[visit_id lanetype#29911] -[visit_exp dim#29911] -[visit_id dim#29911] -[visit_exp i#117390] -[visit_id i#117390] -[visit_exp (`I16`_lanetype, `%`_dim{i#117397}(8))] +[check_dims] I +dims \ I = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `%X%`_shape(`I8`_lanetype, `%`_dim(16)), `EXTEND`_vcvtop__(`LOW`_half, `U`_sx))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `%X%`_shape(`I8`_lanetype, `%`_dim(16)), `EXTEND`_vcvtop__(`LOW`_half, `U`_sx))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#117397}(8)] -[visit_exp i#117397] -[visit_id i#117397] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `%X%`_shape{lanetype#29923, dim#29923, i#117402}(`I8`_lanetype, `%`_dim{i#117409}(16))] -[visit_exp lanetype#29923] -[visit_id lanetype#29923] -[visit_exp dim#29923] -[visit_id dim#29923] -[visit_exp i#117402] -[visit_id i#117402] -[visit_exp (`I8`_lanetype, `%`_dim{i#117409}(16))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#117409}(16)] -[visit_exp i#117409] -[visit_id i#117409] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `EXTEND`_vcvtop__{half#1206, sx#29698}(`LOW`_half, `U`_sx)] -[visit_exp half#1206] -[visit_id half#1206] -[visit_exp sx#29698] -[visit_id sx#29698] +[visit_exp `EXTEND`_vcvtop__(`LOW`_half, `U`_sx)] [visit_exp (`LOW`_half, `U`_sx)] [visit_exp `LOW`_half] [visit_exp ()] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I dim#30026 dim#30038 half#1240 i#117625 i#117632 i#117637 i#117644 lanetype#30026 lanetype#30038 shape_1#63 shape_2#63 sx#29732 -dims \ I = dim#30026, dim#30038, half#1240, i#117625, i#117632, i#117637, i#117644, lanetype#30026, lanetype#30038, shape_1#63, shape_2#63, sx#29732 -[visit_exp `VCVTOP`_instr{shape_1#63, shape_2#63}(`%X%`_shape{lanetype#30026, dim#30026, i#117625}(`I16`_lanetype, `%`_dim{i#117632}(8)), `%X%`_shape{lanetype#30038, dim#30038, i#117637}(`I8`_lanetype, `%`_dim{i#117644}(16)), `EXTEND`_vcvtop__{half#1240, sx#29732}(`HIGH`_half, `S`_sx))] -[visit_exp shape_1#63] -[visit_id shape_1#63] -[visit_exp shape_2#63] -[visit_id shape_2#63] -[visit_exp (`%X%`_shape{lanetype#30026, dim#30026, i#117625}(`I16`_lanetype, `%`_dim{i#117632}(8)), `%X%`_shape{lanetype#30038, dim#30038, i#117637}(`I8`_lanetype, `%`_dim{i#117644}(16)), `EXTEND`_vcvtop__{half#1240, sx#29732}(`HIGH`_half, `S`_sx))] -[visit_exp `%X%`_shape{lanetype#30026, dim#30026, i#117625}(`I16`_lanetype, `%`_dim{i#117632}(8))] -[visit_exp lanetype#30026] -[visit_id lanetype#30026] -[visit_exp dim#30026] -[visit_id dim#30026] -[visit_exp i#117625] -[visit_id i#117625] -[visit_exp (`I16`_lanetype, `%`_dim{i#117632}(8))] +[check_dims] I +dims \ I = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `%X%`_shape(`I8`_lanetype, `%`_dim(16)), `EXTEND`_vcvtop__(`HIGH`_half, `S`_sx))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `%X%`_shape(`I8`_lanetype, `%`_dim(16)), `EXTEND`_vcvtop__(`HIGH`_half, `S`_sx))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#117632}(8)] -[visit_exp i#117632] -[visit_id i#117632] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `%X%`_shape{lanetype#30038, dim#30038, i#117637}(`I8`_lanetype, `%`_dim{i#117644}(16))] -[visit_exp lanetype#30038] -[visit_id lanetype#30038] -[visit_exp dim#30038] -[visit_id dim#30038] -[visit_exp i#117637] -[visit_id i#117637] -[visit_exp (`I8`_lanetype, `%`_dim{i#117644}(16))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#117644}(16)] -[visit_exp i#117644] -[visit_id i#117644] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `EXTEND`_vcvtop__{half#1240, sx#29732}(`HIGH`_half, `S`_sx)] -[visit_exp half#1240] -[visit_id half#1240] -[visit_exp sx#29732] -[visit_id sx#29732] +[visit_exp `EXTEND`_vcvtop__(`HIGH`_half, `S`_sx)] [visit_exp (`HIGH`_half, `S`_sx)] [visit_exp `HIGH`_half] [visit_exp ()] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I dim#30141 dim#30153 half#1274 i#117860 i#117867 i#117872 i#117879 lanetype#30141 lanetype#30153 shape_1#65 shape_2#65 sx#29766 -dims \ I = dim#30141, dim#30153, half#1274, i#117860, i#117867, i#117872, i#117879, lanetype#30141, lanetype#30153, shape_1#65, shape_2#65, sx#29766 -[visit_exp `VCVTOP`_instr{shape_1#65, shape_2#65}(`%X%`_shape{lanetype#30141, dim#30141, i#117860}(`I16`_lanetype, `%`_dim{i#117867}(8)), `%X%`_shape{lanetype#30153, dim#30153, i#117872}(`I8`_lanetype, `%`_dim{i#117879}(16)), `EXTEND`_vcvtop__{half#1274, sx#29766}(`HIGH`_half, `U`_sx))] -[visit_exp shape_1#65] -[visit_id shape_1#65] -[visit_exp shape_2#65] -[visit_id shape_2#65] -[visit_exp (`%X%`_shape{lanetype#30141, dim#30141, i#117860}(`I16`_lanetype, `%`_dim{i#117867}(8)), `%X%`_shape{lanetype#30153, dim#30153, i#117872}(`I8`_lanetype, `%`_dim{i#117879}(16)), `EXTEND`_vcvtop__{half#1274, sx#29766}(`HIGH`_half, `U`_sx))] -[visit_exp `%X%`_shape{lanetype#30141, dim#30141, i#117860}(`I16`_lanetype, `%`_dim{i#117867}(8))] -[visit_exp lanetype#30141] -[visit_id lanetype#30141] -[visit_exp dim#30141] -[visit_id dim#30141] -[visit_exp i#117860] -[visit_id i#117860] -[visit_exp (`I16`_lanetype, `%`_dim{i#117867}(8))] +[check_dims] I +dims \ I = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `%X%`_shape(`I8`_lanetype, `%`_dim(16)), `EXTEND`_vcvtop__(`HIGH`_half, `U`_sx))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `%X%`_shape(`I8`_lanetype, `%`_dim(16)), `EXTEND`_vcvtop__(`HIGH`_half, `U`_sx))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#117867}(8)] -[visit_exp i#117867] -[visit_id i#117867] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `%X%`_shape{lanetype#30153, dim#30153, i#117872}(`I8`_lanetype, `%`_dim{i#117879}(16))] -[visit_exp lanetype#30153] -[visit_id lanetype#30153] -[visit_exp dim#30153] -[visit_id dim#30153] -[visit_exp i#117872] -[visit_id i#117872] -[visit_exp (`I8`_lanetype, `%`_dim{i#117879}(16))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#117879}(16)] -[visit_exp i#117879] -[visit_id i#117879] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `EXTEND`_vcvtop__{half#1274, sx#29766}(`HIGH`_half, `U`_sx)] -[visit_exp half#1274] -[visit_id half#1274] -[visit_exp sx#29766] -[visit_id sx#29766] +[visit_exp `EXTEND`_vcvtop__(`HIGH`_half, `U`_sx)] [visit_exp (`HIGH`_half, `U`_sx)] [visit_exp `HIGH`_half] [visit_exp ()] @@ -104659,576 +81387,288 @@ dims \ I = dim#30141, dim#30153, half#1274, i#117860, i#117867, i#117872, i#1178 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I dim#30256 dim#30268 half#1308 i#118095 i#118102 i#118107 i#118114 lanetype#30256 lanetype#30268 shape_1#67 shape_2#67 sx#29800 -dims \ I = dim#30256, dim#30268, half#1308, i#118095, i#118102, i#118107, i#118114, lanetype#30256, lanetype#30268, shape_1#67, shape_2#67, sx#29800 -[visit_exp `VCVTOP`_instr{shape_1#67, shape_2#67}(`%X%`_shape{lanetype#30256, dim#30256, i#118095}(`I32`_lanetype, `%`_dim{i#118102}(4)), `%X%`_shape{lanetype#30268, dim#30268, i#118107}(`I16`_lanetype, `%`_dim{i#118114}(8)), `EXTEND`_vcvtop__{half#1308, sx#29800}(`LOW`_half, `S`_sx))] -[visit_exp shape_1#67] -[visit_id shape_1#67] -[visit_exp shape_2#67] -[visit_id shape_2#67] -[visit_exp (`%X%`_shape{lanetype#30256, dim#30256, i#118095}(`I32`_lanetype, `%`_dim{i#118102}(4)), `%X%`_shape{lanetype#30268, dim#30268, i#118107}(`I16`_lanetype, `%`_dim{i#118114}(8)), `EXTEND`_vcvtop__{half#1308, sx#29800}(`LOW`_half, `S`_sx))] -[visit_exp `%X%`_shape{lanetype#30256, dim#30256, i#118095}(`I32`_lanetype, `%`_dim{i#118102}(4))] -[visit_exp lanetype#30256] -[visit_id lanetype#30256] -[visit_exp dim#30256] -[visit_id dim#30256] -[visit_exp i#118095] -[visit_id i#118095] -[visit_exp (`I32`_lanetype, `%`_dim{i#118102}(4))] +[check_dims] I +dims \ I = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`I16`_lanetype, `%`_dim(8)), `EXTEND`_vcvtop__(`LOW`_half, `S`_sx))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`I16`_lanetype, `%`_dim(8)), `EXTEND`_vcvtop__(`LOW`_half, `S`_sx))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#118102}(4)] -[visit_exp i#118102] -[visit_id i#118102] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%X%`_shape{lanetype#30268, dim#30268, i#118107}(`I16`_lanetype, `%`_dim{i#118114}(8))] -[visit_exp lanetype#30268] -[visit_id lanetype#30268] -[visit_exp dim#30268] -[visit_id dim#30268] -[visit_exp i#118107] -[visit_id i#118107] -[visit_exp (`I16`_lanetype, `%`_dim{i#118114}(8))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#118114}(8)] -[visit_exp i#118114] -[visit_id i#118114] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `EXTEND`_vcvtop__{half#1308, sx#29800}(`LOW`_half, `S`_sx)] -[visit_exp half#1308] -[visit_id half#1308] -[visit_exp sx#29800] -[visit_id sx#29800] +[visit_exp `EXTEND`_vcvtop__(`LOW`_half, `S`_sx)] [visit_exp (`LOW`_half, `S`_sx)] [visit_exp `LOW`_half] [visit_exp ()] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I dim#30371 dim#30383 half#1342 i#118330 i#118337 i#118342 i#118349 lanetype#30371 lanetype#30383 shape_1#69 shape_2#69 sx#29834 -dims \ I = dim#30371, dim#30383, half#1342, i#118330, i#118337, i#118342, i#118349, lanetype#30371, lanetype#30383, shape_1#69, shape_2#69, sx#29834 -[visit_exp `VCVTOP`_instr{shape_1#69, shape_2#69}(`%X%`_shape{lanetype#30371, dim#30371, i#118330}(`I32`_lanetype, `%`_dim{i#118337}(4)), `%X%`_shape{lanetype#30383, dim#30383, i#118342}(`I16`_lanetype, `%`_dim{i#118349}(8)), `EXTEND`_vcvtop__{half#1342, sx#29834}(`LOW`_half, `U`_sx))] -[visit_exp shape_1#69] -[visit_id shape_1#69] -[visit_exp shape_2#69] -[visit_id shape_2#69] -[visit_exp (`%X%`_shape{lanetype#30371, dim#30371, i#118330}(`I32`_lanetype, `%`_dim{i#118337}(4)), `%X%`_shape{lanetype#30383, dim#30383, i#118342}(`I16`_lanetype, `%`_dim{i#118349}(8)), `EXTEND`_vcvtop__{half#1342, sx#29834}(`LOW`_half, `U`_sx))] -[visit_exp `%X%`_shape{lanetype#30371, dim#30371, i#118330}(`I32`_lanetype, `%`_dim{i#118337}(4))] -[visit_exp lanetype#30371] -[visit_id lanetype#30371] -[visit_exp dim#30371] -[visit_id dim#30371] -[visit_exp i#118330] -[visit_id i#118330] -[visit_exp (`I32`_lanetype, `%`_dim{i#118337}(4))] +[check_dims] I +dims \ I = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`I16`_lanetype, `%`_dim(8)), `EXTEND`_vcvtop__(`LOW`_half, `U`_sx))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`I16`_lanetype, `%`_dim(8)), `EXTEND`_vcvtop__(`LOW`_half, `U`_sx))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#118337}(4)] -[visit_exp i#118337] -[visit_id i#118337] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%X%`_shape{lanetype#30383, dim#30383, i#118342}(`I16`_lanetype, `%`_dim{i#118349}(8))] -[visit_exp lanetype#30383] -[visit_id lanetype#30383] -[visit_exp dim#30383] -[visit_id dim#30383] -[visit_exp i#118342] -[visit_id i#118342] -[visit_exp (`I16`_lanetype, `%`_dim{i#118349}(8))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#118349}(8)] -[visit_exp i#118349] -[visit_id i#118349] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `EXTEND`_vcvtop__{half#1342, sx#29834}(`LOW`_half, `U`_sx)] -[visit_exp half#1342] -[visit_id half#1342] -[visit_exp sx#29834] -[visit_id sx#29834] +[visit_exp `EXTEND`_vcvtop__(`LOW`_half, `U`_sx)] [visit_exp (`LOW`_half, `U`_sx)] [visit_exp `LOW`_half] [visit_exp ()] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I dim#30486 dim#30498 half#1376 i#118565 i#118572 i#118577 i#118584 lanetype#30486 lanetype#30498 shape_1#71 shape_2#71 sx#29868 -dims \ I = dim#30486, dim#30498, half#1376, i#118565, i#118572, i#118577, i#118584, lanetype#30486, lanetype#30498, shape_1#71, shape_2#71, sx#29868 -[visit_exp `VCVTOP`_instr{shape_1#71, shape_2#71}(`%X%`_shape{lanetype#30486, dim#30486, i#118565}(`I32`_lanetype, `%`_dim{i#118572}(4)), `%X%`_shape{lanetype#30498, dim#30498, i#118577}(`I16`_lanetype, `%`_dim{i#118584}(8)), `EXTEND`_vcvtop__{half#1376, sx#29868}(`HIGH`_half, `S`_sx))] -[visit_exp shape_1#71] -[visit_id shape_1#71] -[visit_exp shape_2#71] -[visit_id shape_2#71] -[visit_exp (`%X%`_shape{lanetype#30486, dim#30486, i#118565}(`I32`_lanetype, `%`_dim{i#118572}(4)), `%X%`_shape{lanetype#30498, dim#30498, i#118577}(`I16`_lanetype, `%`_dim{i#118584}(8)), `EXTEND`_vcvtop__{half#1376, sx#29868}(`HIGH`_half, `S`_sx))] -[visit_exp `%X%`_shape{lanetype#30486, dim#30486, i#118565}(`I32`_lanetype, `%`_dim{i#118572}(4))] -[visit_exp lanetype#30486] -[visit_id lanetype#30486] -[visit_exp dim#30486] -[visit_id dim#30486] -[visit_exp i#118565] -[visit_id i#118565] -[visit_exp (`I32`_lanetype, `%`_dim{i#118572}(4))] +[check_dims] I +dims \ I = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`I16`_lanetype, `%`_dim(8)), `EXTEND`_vcvtop__(`HIGH`_half, `S`_sx))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`I16`_lanetype, `%`_dim(8)), `EXTEND`_vcvtop__(`HIGH`_half, `S`_sx))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#118572}(4)] -[visit_exp i#118572] -[visit_id i#118572] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%X%`_shape{lanetype#30498, dim#30498, i#118577}(`I16`_lanetype, `%`_dim{i#118584}(8))] -[visit_exp lanetype#30498] -[visit_id lanetype#30498] -[visit_exp dim#30498] -[visit_id dim#30498] -[visit_exp i#118577] -[visit_id i#118577] -[visit_exp (`I16`_lanetype, `%`_dim{i#118584}(8))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#118584}(8)] -[visit_exp i#118584] -[visit_id i#118584] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `EXTEND`_vcvtop__{half#1376, sx#29868}(`HIGH`_half, `S`_sx)] -[visit_exp half#1376] -[visit_id half#1376] -[visit_exp sx#29868] -[visit_id sx#29868] +[visit_exp `EXTEND`_vcvtop__(`HIGH`_half, `S`_sx)] [visit_exp (`HIGH`_half, `S`_sx)] [visit_exp `HIGH`_half] [visit_exp ()] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I dim#30601 dim#30613 half#1410 i#118800 i#118807 i#118812 i#118819 lanetype#30601 lanetype#30613 shape_1#73 shape_2#73 sx#29902 -dims \ I = dim#30601, dim#30613, half#1410, i#118800, i#118807, i#118812, i#118819, lanetype#30601, lanetype#30613, shape_1#73, shape_2#73, sx#29902 -[visit_exp `VCVTOP`_instr{shape_1#73, shape_2#73}(`%X%`_shape{lanetype#30601, dim#30601, i#118800}(`I32`_lanetype, `%`_dim{i#118807}(4)), `%X%`_shape{lanetype#30613, dim#30613, i#118812}(`I16`_lanetype, `%`_dim{i#118819}(8)), `EXTEND`_vcvtop__{half#1410, sx#29902}(`HIGH`_half, `U`_sx))] -[visit_exp shape_1#73] -[visit_id shape_1#73] -[visit_exp shape_2#73] -[visit_id shape_2#73] -[visit_exp (`%X%`_shape{lanetype#30601, dim#30601, i#118800}(`I32`_lanetype, `%`_dim{i#118807}(4)), `%X%`_shape{lanetype#30613, dim#30613, i#118812}(`I16`_lanetype, `%`_dim{i#118819}(8)), `EXTEND`_vcvtop__{half#1410, sx#29902}(`HIGH`_half, `U`_sx))] -[visit_exp `%X%`_shape{lanetype#30601, dim#30601, i#118800}(`I32`_lanetype, `%`_dim{i#118807}(4))] -[visit_exp lanetype#30601] -[visit_id lanetype#30601] -[visit_exp dim#30601] -[visit_id dim#30601] -[visit_exp i#118800] -[visit_id i#118800] -[visit_exp (`I32`_lanetype, `%`_dim{i#118807}(4))] +[check_dims] I +dims \ I = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`I16`_lanetype, `%`_dim(8)), `EXTEND`_vcvtop__(`HIGH`_half, `U`_sx))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`I16`_lanetype, `%`_dim(8)), `EXTEND`_vcvtop__(`HIGH`_half, `U`_sx))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#118807}(4)] -[visit_exp i#118807] -[visit_id i#118807] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%X%`_shape{lanetype#30613, dim#30613, i#118812}(`I16`_lanetype, `%`_dim{i#118819}(8))] -[visit_exp lanetype#30613] -[visit_id lanetype#30613] -[visit_exp dim#30613] -[visit_id dim#30613] -[visit_exp i#118812] -[visit_id i#118812] -[visit_exp (`I16`_lanetype, `%`_dim{i#118819}(8))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#118819}(8)] -[visit_exp i#118819] -[visit_id i#118819] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `EXTEND`_vcvtop__{half#1410, sx#29902}(`HIGH`_half, `U`_sx)] -[visit_exp half#1410] -[visit_id half#1410] -[visit_exp sx#29902] -[visit_id sx#29902] +[visit_exp `EXTEND`_vcvtop__(`HIGH`_half, `U`_sx)] [visit_exp (`HIGH`_half, `U`_sx)] [visit_exp `HIGH`_half] [visit_exp ()] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I dim#30716 dim#30728 i#119035 i#119042 i#119047 i#119054 lanetype#30716 lanetype#30728 shape_1#75 shape_2#75 sx#29966 zero?#647 -dims \ I = dim#30716, dim#30728, i#119035, i#119042, i#119047, i#119054, lanetype#30716, lanetype#30728, shape_1#75, shape_2#75, sx#29966, zero?#647 -[visit_exp `VCVTOP`_instr{shape_1#75, shape_2#75}(`%X%`_shape{lanetype#30716, dim#30716, i#119035}(`I32`_lanetype, `%`_dim{i#119042}(4)), `%X%`_shape{lanetype#30728, dim#30728, i#119047}(`F32`_lanetype, `%`_dim{i#119054}(4)), `TRUNC_SAT`_vcvtop__{sx#29966, `zero?#647`}(`S`_sx, ?()))] -[visit_exp shape_1#75] -[visit_id shape_1#75] -[visit_exp shape_2#75] -[visit_id shape_2#75] -[visit_exp (`%X%`_shape{lanetype#30716, dim#30716, i#119035}(`I32`_lanetype, `%`_dim{i#119042}(4)), `%X%`_shape{lanetype#30728, dim#30728, i#119047}(`F32`_lanetype, `%`_dim{i#119054}(4)), `TRUNC_SAT`_vcvtop__{sx#29966, `zero?#647`}(`S`_sx, ?()))] -[visit_exp `%X%`_shape{lanetype#30716, dim#30716, i#119035}(`I32`_lanetype, `%`_dim{i#119042}(4))] -[visit_exp lanetype#30716] -[visit_id lanetype#30716] -[visit_exp dim#30716] -[visit_id dim#30716] -[visit_exp i#119035] -[visit_id i#119035] -[visit_exp (`I32`_lanetype, `%`_dim{i#119042}(4))] +[check_dims] I +dims \ I = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F32`_lanetype, `%`_dim(4)), `TRUNC_SAT`_vcvtop__(`S`_sx, ?()))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F32`_lanetype, `%`_dim(4)), `TRUNC_SAT`_vcvtop__(`S`_sx, ?()))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#119042}(4)] -[visit_exp i#119042] -[visit_id i#119042] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%X%`_shape{lanetype#30728, dim#30728, i#119047}(`F32`_lanetype, `%`_dim{i#119054}(4))] -[visit_exp lanetype#30728] -[visit_id lanetype#30728] -[visit_exp dim#30728] -[visit_id dim#30728] -[visit_exp i#119047] -[visit_id i#119047] -[visit_exp (`F32`_lanetype, `%`_dim{i#119054}(4))] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#119054}(4)] -[visit_exp i#119054] -[visit_id i#119054] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `TRUNC_SAT`_vcvtop__{sx#29966, `zero?#647`}(`S`_sx, ?())] -[visit_exp sx#29966] -[visit_id sx#29966] -[visit_exp `zero?#647`] -[visit_id zero?#647] +[visit_exp `TRUNC_SAT`_vcvtop__(`S`_sx, ?())] [visit_exp (`S`_sx, ?())] [visit_exp `S`_sx] [visit_exp ()] [visit_exp ?()] -[check_dims] I dim#30891 dim#30903 i#119330 i#119337 i#119342 i#119349 lanetype#30891 lanetype#30903 shape_1#77 shape_2#77 sx#30030 zero?#711 -dims \ I = dim#30891, dim#30903, i#119330, i#119337, i#119342, i#119349, lanetype#30891, lanetype#30903, shape_1#77, shape_2#77, sx#30030, zero?#711 -[visit_exp `VCVTOP`_instr{shape_1#77, shape_2#77}(`%X%`_shape{lanetype#30891, dim#30891, i#119330}(`I32`_lanetype, `%`_dim{i#119337}(4)), `%X%`_shape{lanetype#30903, dim#30903, i#119342}(`F32`_lanetype, `%`_dim{i#119349}(4)), `TRUNC_SAT`_vcvtop__{sx#30030, `zero?#711`}(`U`_sx, ?()))] -[visit_exp shape_1#77] -[visit_id shape_1#77] -[visit_exp shape_2#77] -[visit_id shape_2#77] -[visit_exp (`%X%`_shape{lanetype#30891, dim#30891, i#119330}(`I32`_lanetype, `%`_dim{i#119337}(4)), `%X%`_shape{lanetype#30903, dim#30903, i#119342}(`F32`_lanetype, `%`_dim{i#119349}(4)), `TRUNC_SAT`_vcvtop__{sx#30030, `zero?#711`}(`U`_sx, ?()))] -[visit_exp `%X%`_shape{lanetype#30891, dim#30891, i#119330}(`I32`_lanetype, `%`_dim{i#119337}(4))] -[visit_exp lanetype#30891] -[visit_id lanetype#30891] -[visit_exp dim#30891] -[visit_id dim#30891] -[visit_exp i#119330] -[visit_id i#119330] -[visit_exp (`I32`_lanetype, `%`_dim{i#119337}(4))] +[check_dims] I +dims \ I = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F32`_lanetype, `%`_dim(4)), `TRUNC_SAT`_vcvtop__(`U`_sx, ?()))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F32`_lanetype, `%`_dim(4)), `TRUNC_SAT`_vcvtop__(`U`_sx, ?()))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#119337}(4)] -[visit_exp i#119337] -[visit_id i#119337] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%X%`_shape{lanetype#30903, dim#30903, i#119342}(`F32`_lanetype, `%`_dim{i#119349}(4))] -[visit_exp lanetype#30903] -[visit_id lanetype#30903] -[visit_exp dim#30903] -[visit_id dim#30903] -[visit_exp i#119342] -[visit_id i#119342] -[visit_exp (`F32`_lanetype, `%`_dim{i#119349}(4))] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#119349}(4)] -[visit_exp i#119349] -[visit_id i#119349] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `TRUNC_SAT`_vcvtop__{sx#30030, `zero?#711`}(`U`_sx, ?())] -[visit_exp sx#30030] -[visit_id sx#30030] -[visit_exp `zero?#711`] -[visit_id zero?#711] +[visit_exp `TRUNC_SAT`_vcvtop__(`U`_sx, ?())] [visit_exp (`U`_sx, ?())] [visit_exp `U`_sx] [visit_exp ()] [visit_exp ?()] -[check_dims] I dim#31066 dim#31078 i#119625 i#119632 i#119637 i#119644 lanetype#31066 lanetype#31078 shape_1#79 shape_2#79 sx#30094 zero?#775 -dims \ I = dim#31066, dim#31078, i#119625, i#119632, i#119637, i#119644, lanetype#31066, lanetype#31078, shape_1#79, shape_2#79, sx#30094, zero?#775 -[visit_exp `VCVTOP`_instr{shape_1#79, shape_2#79}(`%X%`_shape{lanetype#31066, dim#31066, i#119625}(`I32`_lanetype, `%`_dim{i#119632}(4)), `%X%`_shape{lanetype#31078, dim#31078, i#119637}(`F64`_lanetype, `%`_dim{i#119644}(2)), `TRUNC_SAT`_vcvtop__{sx#30094, `zero?#775`}(`S`_sx, ?(`ZERO`_zero)))] -[visit_exp shape_1#79] -[visit_id shape_1#79] -[visit_exp shape_2#79] -[visit_id shape_2#79] -[visit_exp (`%X%`_shape{lanetype#31066, dim#31066, i#119625}(`I32`_lanetype, `%`_dim{i#119632}(4)), `%X%`_shape{lanetype#31078, dim#31078, i#119637}(`F64`_lanetype, `%`_dim{i#119644}(2)), `TRUNC_SAT`_vcvtop__{sx#30094, `zero?#775`}(`S`_sx, ?(`ZERO`_zero)))] -[visit_exp `%X%`_shape{lanetype#31066, dim#31066, i#119625}(`I32`_lanetype, `%`_dim{i#119632}(4))] -[visit_exp lanetype#31066] -[visit_id lanetype#31066] -[visit_exp dim#31066] -[visit_id dim#31066] -[visit_exp i#119625] -[visit_id i#119625] -[visit_exp (`I32`_lanetype, `%`_dim{i#119632}(4))] +[check_dims] I +dims \ I = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F64`_lanetype, `%`_dim(2)), `TRUNC_SAT`_vcvtop__(`S`_sx, ?(`ZERO`_zero)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F64`_lanetype, `%`_dim(2)), `TRUNC_SAT`_vcvtop__(`S`_sx, ?(`ZERO`_zero)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#119632}(4)] -[visit_exp i#119632] -[visit_id i#119632] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%X%`_shape{lanetype#31078, dim#31078, i#119637}(`F64`_lanetype, `%`_dim{i#119644}(2))] -[visit_exp lanetype#31078] -[visit_id lanetype#31078] -[visit_exp dim#31078] -[visit_id dim#31078] -[visit_exp i#119637] -[visit_id i#119637] -[visit_exp (`F64`_lanetype, `%`_dim{i#119644}(2))] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#119644}(2)] -[visit_exp i#119644] -[visit_id i#119644] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `TRUNC_SAT`_vcvtop__{sx#30094, `zero?#775`}(`S`_sx, ?(`ZERO`_zero))] -[visit_exp sx#30094] -[visit_id sx#30094] -[visit_exp `zero?#775`] -[visit_id zero?#775] +[visit_exp `TRUNC_SAT`_vcvtop__(`S`_sx, ?(`ZERO`_zero))] [visit_exp (`S`_sx, ?(`ZERO`_zero))] [visit_exp `S`_sx] [visit_exp ()] [visit_exp ?(`ZERO`_zero)] [visit_exp `ZERO`_zero] [visit_exp ()] -[check_dims] I dim#31241 dim#31253 i#119920 i#119927 i#119932 i#119939 lanetype#31241 lanetype#31253 shape_1#81 shape_2#81 sx#30158 zero?#839 -dims \ I = dim#31241, dim#31253, i#119920, i#119927, i#119932, i#119939, lanetype#31241, lanetype#31253, shape_1#81, shape_2#81, sx#30158, zero?#839 -[visit_exp `VCVTOP`_instr{shape_1#81, shape_2#81}(`%X%`_shape{lanetype#31241, dim#31241, i#119920}(`I32`_lanetype, `%`_dim{i#119927}(4)), `%X%`_shape{lanetype#31253, dim#31253, i#119932}(`F64`_lanetype, `%`_dim{i#119939}(2)), `TRUNC_SAT`_vcvtop__{sx#30158, `zero?#839`}(`U`_sx, ?(`ZERO`_zero)))] -[visit_exp shape_1#81] -[visit_id shape_1#81] -[visit_exp shape_2#81] -[visit_id shape_2#81] -[visit_exp (`%X%`_shape{lanetype#31241, dim#31241, i#119920}(`I32`_lanetype, `%`_dim{i#119927}(4)), `%X%`_shape{lanetype#31253, dim#31253, i#119932}(`F64`_lanetype, `%`_dim{i#119939}(2)), `TRUNC_SAT`_vcvtop__{sx#30158, `zero?#839`}(`U`_sx, ?(`ZERO`_zero)))] -[visit_exp `%X%`_shape{lanetype#31241, dim#31241, i#119920}(`I32`_lanetype, `%`_dim{i#119927}(4))] -[visit_exp lanetype#31241] -[visit_id lanetype#31241] -[visit_exp dim#31241] -[visit_id dim#31241] -[visit_exp i#119920] -[visit_id i#119920] -[visit_exp (`I32`_lanetype, `%`_dim{i#119927}(4))] +[check_dims] I +dims \ I = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F64`_lanetype, `%`_dim(2)), `TRUNC_SAT`_vcvtop__(`U`_sx, ?(`ZERO`_zero)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F64`_lanetype, `%`_dim(2)), `TRUNC_SAT`_vcvtop__(`U`_sx, ?(`ZERO`_zero)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#119927}(4)] -[visit_exp i#119927] -[visit_id i#119927] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%X%`_shape{lanetype#31253, dim#31253, i#119932}(`F64`_lanetype, `%`_dim{i#119939}(2))] -[visit_exp lanetype#31253] -[visit_id lanetype#31253] -[visit_exp dim#31253] -[visit_id dim#31253] -[visit_exp i#119932] -[visit_id i#119932] -[visit_exp (`F64`_lanetype, `%`_dim{i#119939}(2))] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#119939}(2)] -[visit_exp i#119939] -[visit_id i#119939] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `TRUNC_SAT`_vcvtop__{sx#30158, `zero?#839`}(`U`_sx, ?(`ZERO`_zero))] -[visit_exp sx#30158] -[visit_id sx#30158] -[visit_exp `zero?#839`] -[visit_id zero?#839] +[visit_exp `TRUNC_SAT`_vcvtop__(`U`_sx, ?(`ZERO`_zero))] [visit_exp (`U`_sx, ?(`ZERO`_zero))] [visit_exp `U`_sx] [visit_exp ()] [visit_exp ?(`ZERO`_zero)] [visit_exp `ZERO`_zero] [visit_exp ()] -[check_dims] I dim#31416 dim#31428 i#120215 i#120222 i#120227 i#120234 lanetype#31416 lanetype#31428 shape_1#83 shape_2#83 sx#30222 zero?#903 -dims \ I = dim#31416, dim#31428, i#120215, i#120222, i#120227, i#120234, lanetype#31416, lanetype#31428, shape_1#83, shape_2#83, sx#30222, zero?#903 -[visit_exp `VCVTOP`_instr{shape_1#83, shape_2#83}(`%X%`_shape{lanetype#31416, dim#31416, i#120215}(`I32`_lanetype, `%`_dim{i#120222}(4)), `%X%`_shape{lanetype#31428, dim#31428, i#120227}(`F32`_lanetype, `%`_dim{i#120234}(4)), `RELAXED_TRUNC`_vcvtop__{sx#30222, `zero?#903`}(`S`_sx, ?()))] -[visit_exp shape_1#83] -[visit_id shape_1#83] -[visit_exp shape_2#83] -[visit_id shape_2#83] -[visit_exp (`%X%`_shape{lanetype#31416, dim#31416, i#120215}(`I32`_lanetype, `%`_dim{i#120222}(4)), `%X%`_shape{lanetype#31428, dim#31428, i#120227}(`F32`_lanetype, `%`_dim{i#120234}(4)), `RELAXED_TRUNC`_vcvtop__{sx#30222, `zero?#903`}(`S`_sx, ?()))] -[visit_exp `%X%`_shape{lanetype#31416, dim#31416, i#120215}(`I32`_lanetype, `%`_dim{i#120222}(4))] -[visit_exp lanetype#31416] -[visit_id lanetype#31416] -[visit_exp dim#31416] -[visit_id dim#31416] -[visit_exp i#120215] -[visit_id i#120215] -[visit_exp (`I32`_lanetype, `%`_dim{i#120222}(4))] +[check_dims] I +dims \ I = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_TRUNC`_vcvtop__(`S`_sx, ?()))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_TRUNC`_vcvtop__(`S`_sx, ?()))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#120222}(4)] -[visit_exp i#120222] -[visit_id i#120222] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%X%`_shape{lanetype#31428, dim#31428, i#120227}(`F32`_lanetype, `%`_dim{i#120234}(4))] -[visit_exp lanetype#31428] -[visit_id lanetype#31428] -[visit_exp dim#31428] -[visit_id dim#31428] -[visit_exp i#120227] -[visit_id i#120227] -[visit_exp (`F32`_lanetype, `%`_dim{i#120234}(4))] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#120234}(4)] -[visit_exp i#120234] -[visit_id i#120234] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `RELAXED_TRUNC`_vcvtop__{sx#30222, `zero?#903`}(`S`_sx, ?())] -[visit_exp sx#30222] -[visit_id sx#30222] -[visit_exp `zero?#903`] -[visit_id zero?#903] +[visit_exp `RELAXED_TRUNC`_vcvtop__(`S`_sx, ?())] [visit_exp (`S`_sx, ?())] [visit_exp `S`_sx] [visit_exp ()] [visit_exp ?()] -[check_dims] I dim#31591 dim#31603 i#120510 i#120517 i#120522 i#120529 lanetype#31591 lanetype#31603 shape_1#85 shape_2#85 sx#30286 zero?#967 -dims \ I = dim#31591, dim#31603, i#120510, i#120517, i#120522, i#120529, lanetype#31591, lanetype#31603, shape_1#85, shape_2#85, sx#30286, zero?#967 -[visit_exp `VCVTOP`_instr{shape_1#85, shape_2#85}(`%X%`_shape{lanetype#31591, dim#31591, i#120510}(`I32`_lanetype, `%`_dim{i#120517}(4)), `%X%`_shape{lanetype#31603, dim#31603, i#120522}(`F32`_lanetype, `%`_dim{i#120529}(4)), `RELAXED_TRUNC`_vcvtop__{sx#30286, `zero?#967`}(`U`_sx, ?()))] -[visit_exp shape_1#85] -[visit_id shape_1#85] -[visit_exp shape_2#85] -[visit_id shape_2#85] -[visit_exp (`%X%`_shape{lanetype#31591, dim#31591, i#120510}(`I32`_lanetype, `%`_dim{i#120517}(4)), `%X%`_shape{lanetype#31603, dim#31603, i#120522}(`F32`_lanetype, `%`_dim{i#120529}(4)), `RELAXED_TRUNC`_vcvtop__{sx#30286, `zero?#967`}(`U`_sx, ?()))] -[visit_exp `%X%`_shape{lanetype#31591, dim#31591, i#120510}(`I32`_lanetype, `%`_dim{i#120517}(4))] -[visit_exp lanetype#31591] -[visit_id lanetype#31591] -[visit_exp dim#31591] -[visit_id dim#31591] -[visit_exp i#120510] -[visit_id i#120510] -[visit_exp (`I32`_lanetype, `%`_dim{i#120517}(4))] +[check_dims] I +dims \ I = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_TRUNC`_vcvtop__(`U`_sx, ?()))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_TRUNC`_vcvtop__(`U`_sx, ?()))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#120517}(4)] -[visit_exp i#120517] -[visit_id i#120517] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%X%`_shape{lanetype#31603, dim#31603, i#120522}(`F32`_lanetype, `%`_dim{i#120529}(4))] -[visit_exp lanetype#31603] -[visit_id lanetype#31603] -[visit_exp dim#31603] -[visit_id dim#31603] -[visit_exp i#120522] -[visit_id i#120522] -[visit_exp (`F32`_lanetype, `%`_dim{i#120529}(4))] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#120529}(4)] -[visit_exp i#120529] -[visit_id i#120529] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `RELAXED_TRUNC`_vcvtop__{sx#30286, `zero?#967`}(`U`_sx, ?())] -[visit_exp sx#30286] -[visit_id sx#30286] -[visit_exp `zero?#967`] -[visit_id zero?#967] +[visit_exp `RELAXED_TRUNC`_vcvtop__(`U`_sx, ?())] [visit_exp (`U`_sx, ?())] [visit_exp `U`_sx] [visit_exp ()] [visit_exp ?()] -[check_dims] I dim#31766 dim#31778 i#120805 i#120812 i#120817 i#120824 lanetype#31766 lanetype#31778 shape_1#87 shape_2#87 sx#30350 zero?#1031 -dims \ I = dim#31766, dim#31778, i#120805, i#120812, i#120817, i#120824, lanetype#31766, lanetype#31778, shape_1#87, shape_2#87, sx#30350, zero?#1031 -[visit_exp `VCVTOP`_instr{shape_1#87, shape_2#87}(`%X%`_shape{lanetype#31766, dim#31766, i#120805}(`I32`_lanetype, `%`_dim{i#120812}(4)), `%X%`_shape{lanetype#31778, dim#31778, i#120817}(`F64`_lanetype, `%`_dim{i#120824}(2)), `RELAXED_TRUNC`_vcvtop__{sx#30350, `zero?#1031`}(`S`_sx, ?(`ZERO`_zero)))] -[visit_exp shape_1#87] -[visit_id shape_1#87] -[visit_exp shape_2#87] -[visit_id shape_2#87] -[visit_exp (`%X%`_shape{lanetype#31766, dim#31766, i#120805}(`I32`_lanetype, `%`_dim{i#120812}(4)), `%X%`_shape{lanetype#31778, dim#31778, i#120817}(`F64`_lanetype, `%`_dim{i#120824}(2)), `RELAXED_TRUNC`_vcvtop__{sx#30350, `zero?#1031`}(`S`_sx, ?(`ZERO`_zero)))] -[visit_exp `%X%`_shape{lanetype#31766, dim#31766, i#120805}(`I32`_lanetype, `%`_dim{i#120812}(4))] -[visit_exp lanetype#31766] -[visit_id lanetype#31766] -[visit_exp dim#31766] -[visit_id dim#31766] -[visit_exp i#120805] -[visit_id i#120805] -[visit_exp (`I32`_lanetype, `%`_dim{i#120812}(4))] +[check_dims] I +dims \ I = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_TRUNC`_vcvtop__(`S`_sx, ?(`ZERO`_zero)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_TRUNC`_vcvtop__(`S`_sx, ?(`ZERO`_zero)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#120812}(4)] -[visit_exp i#120812] -[visit_id i#120812] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%X%`_shape{lanetype#31778, dim#31778, i#120817}(`F64`_lanetype, `%`_dim{i#120824}(2))] -[visit_exp lanetype#31778] -[visit_id lanetype#31778] -[visit_exp dim#31778] -[visit_id dim#31778] -[visit_exp i#120817] -[visit_id i#120817] -[visit_exp (`F64`_lanetype, `%`_dim{i#120824}(2))] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#120824}(2)] -[visit_exp i#120824] -[visit_id i#120824] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `RELAXED_TRUNC`_vcvtop__{sx#30350, `zero?#1031`}(`S`_sx, ?(`ZERO`_zero))] -[visit_exp sx#30350] -[visit_id sx#30350] -[visit_exp `zero?#1031`] -[visit_id zero?#1031] +[visit_exp `RELAXED_TRUNC`_vcvtop__(`S`_sx, ?(`ZERO`_zero))] [visit_exp (`S`_sx, ?(`ZERO`_zero))] [visit_exp `S`_sx] [visit_exp ()] [visit_exp ?(`ZERO`_zero)] [visit_exp `ZERO`_zero] [visit_exp ()] -[check_dims] I dim#31941 dim#31953 i#121100 i#121107 i#121112 i#121119 lanetype#31941 lanetype#31953 shape_1#89 shape_2#89 sx#30414 zero?#1095 -dims \ I = dim#31941, dim#31953, i#121100, i#121107, i#121112, i#121119, lanetype#31941, lanetype#31953, shape_1#89, shape_2#89, sx#30414, zero?#1095 -[visit_exp `VCVTOP`_instr{shape_1#89, shape_2#89}(`%X%`_shape{lanetype#31941, dim#31941, i#121100}(`I32`_lanetype, `%`_dim{i#121107}(4)), `%X%`_shape{lanetype#31953, dim#31953, i#121112}(`F64`_lanetype, `%`_dim{i#121119}(2)), `RELAXED_TRUNC`_vcvtop__{sx#30414, `zero?#1095`}(`U`_sx, ?(`ZERO`_zero)))] -[visit_exp shape_1#89] -[visit_id shape_1#89] -[visit_exp shape_2#89] -[visit_id shape_2#89] -[visit_exp (`%X%`_shape{lanetype#31941, dim#31941, i#121100}(`I32`_lanetype, `%`_dim{i#121107}(4)), `%X%`_shape{lanetype#31953, dim#31953, i#121112}(`F64`_lanetype, `%`_dim{i#121119}(2)), `RELAXED_TRUNC`_vcvtop__{sx#30414, `zero?#1095`}(`U`_sx, ?(`ZERO`_zero)))] -[visit_exp `%X%`_shape{lanetype#31941, dim#31941, i#121100}(`I32`_lanetype, `%`_dim{i#121107}(4))] -[visit_exp lanetype#31941] -[visit_id lanetype#31941] -[visit_exp dim#31941] -[visit_id dim#31941] -[visit_exp i#121100] -[visit_id i#121100] -[visit_exp (`I32`_lanetype, `%`_dim{i#121107}(4))] +[check_dims] I +dims \ I = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_TRUNC`_vcvtop__(`U`_sx, ?(`ZERO`_zero)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_TRUNC`_vcvtop__(`U`_sx, ?(`ZERO`_zero)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#121107}(4)] -[visit_exp i#121107] -[visit_id i#121107] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%X%`_shape{lanetype#31953, dim#31953, i#121112}(`F64`_lanetype, `%`_dim{i#121119}(2))] -[visit_exp lanetype#31953] -[visit_id lanetype#31953] -[visit_exp dim#31953] -[visit_id dim#31953] -[visit_exp i#121112] -[visit_id i#121112] -[visit_exp (`F64`_lanetype, `%`_dim{i#121119}(2))] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#121119}(2)] -[visit_exp i#121119] -[visit_id i#121119] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `RELAXED_TRUNC`_vcvtop__{sx#30414, `zero?#1095`}(`U`_sx, ?(`ZERO`_zero))] -[visit_exp sx#30414] -[visit_id sx#30414] -[visit_exp `zero?#1095`] -[visit_id zero?#1095] +[visit_exp `RELAXED_TRUNC`_vcvtop__(`U`_sx, ?(`ZERO`_zero))] [visit_exp (`U`_sx, ?(`ZERO`_zero))] [visit_exp `U`_sx] [visit_exp ()] @@ -105238,193 +81678,97 @@ dims \ I = dim#31941, dim#31953, i#121100, i#121107, i#121112, i#121119, lanetyp [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I dim#32116 dim#32128 half#1444 i#121395 i#121402 i#121407 i#121414 lanetype#32116 lanetype#32128 shape_1#91 shape_2#91 sx#30448 -dims \ I = dim#32116, dim#32128, half#1444, i#121395, i#121402, i#121407, i#121414, lanetype#32116, lanetype#32128, shape_1#91, shape_2#91, sx#30448 -[visit_exp `VCVTOP`_instr{shape_1#91, shape_2#91}(`%X%`_shape{lanetype#32116, dim#32116, i#121395}(`I64`_lanetype, `%`_dim{i#121402}(2)), `%X%`_shape{lanetype#32128, dim#32128, i#121407}(`I32`_lanetype, `%`_dim{i#121414}(4)), `EXTEND`_vcvtop__{half#1444, sx#30448}(`LOW`_half, `S`_sx))] -[visit_exp shape_1#91] -[visit_id shape_1#91] -[visit_exp shape_2#91] -[visit_id shape_2#91] -[visit_exp (`%X%`_shape{lanetype#32116, dim#32116, i#121395}(`I64`_lanetype, `%`_dim{i#121402}(2)), `%X%`_shape{lanetype#32128, dim#32128, i#121407}(`I32`_lanetype, `%`_dim{i#121414}(4)), `EXTEND`_vcvtop__{half#1444, sx#30448}(`LOW`_half, `S`_sx))] -[visit_exp `%X%`_shape{lanetype#32116, dim#32116, i#121395}(`I64`_lanetype, `%`_dim{i#121402}(2))] -[visit_exp lanetype#32116] -[visit_id lanetype#32116] -[visit_exp dim#32116] -[visit_id dim#32116] -[visit_exp i#121395] -[visit_id i#121395] -[visit_exp (`I64`_lanetype, `%`_dim{i#121402}(2))] +[check_dims] I +dims \ I = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `EXTEND`_vcvtop__(`LOW`_half, `S`_sx))] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `EXTEND`_vcvtop__(`LOW`_half, `S`_sx))] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#121402}(2)] -[visit_exp i#121402] -[visit_id i#121402] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `%X%`_shape{lanetype#32128, dim#32128, i#121407}(`I32`_lanetype, `%`_dim{i#121414}(4))] -[visit_exp lanetype#32128] -[visit_id lanetype#32128] -[visit_exp dim#32128] -[visit_id dim#32128] -[visit_exp i#121407] -[visit_id i#121407] -[visit_exp (`I32`_lanetype, `%`_dim{i#121414}(4))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#121414}(4)] -[visit_exp i#121414] -[visit_id i#121414] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `EXTEND`_vcvtop__{half#1444, sx#30448}(`LOW`_half, `S`_sx)] -[visit_exp half#1444] -[visit_id half#1444] -[visit_exp sx#30448] -[visit_id sx#30448] +[visit_exp `EXTEND`_vcvtop__(`LOW`_half, `S`_sx)] [visit_exp (`LOW`_half, `S`_sx)] [visit_exp `LOW`_half] [visit_exp ()] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I dim#32231 dim#32243 half#1478 i#121630 i#121637 i#121642 i#121649 lanetype#32231 lanetype#32243 shape_1#93 shape_2#93 sx#30482 -dims \ I = dim#32231, dim#32243, half#1478, i#121630, i#121637, i#121642, i#121649, lanetype#32231, lanetype#32243, shape_1#93, shape_2#93, sx#30482 -[visit_exp `VCVTOP`_instr{shape_1#93, shape_2#93}(`%X%`_shape{lanetype#32231, dim#32231, i#121630}(`I64`_lanetype, `%`_dim{i#121637}(2)), `%X%`_shape{lanetype#32243, dim#32243, i#121642}(`I32`_lanetype, `%`_dim{i#121649}(4)), `EXTEND`_vcvtop__{half#1478, sx#30482}(`LOW`_half, `U`_sx))] -[visit_exp shape_1#93] -[visit_id shape_1#93] -[visit_exp shape_2#93] -[visit_id shape_2#93] -[visit_exp (`%X%`_shape{lanetype#32231, dim#32231, i#121630}(`I64`_lanetype, `%`_dim{i#121637}(2)), `%X%`_shape{lanetype#32243, dim#32243, i#121642}(`I32`_lanetype, `%`_dim{i#121649}(4)), `EXTEND`_vcvtop__{half#1478, sx#30482}(`LOW`_half, `U`_sx))] -[visit_exp `%X%`_shape{lanetype#32231, dim#32231, i#121630}(`I64`_lanetype, `%`_dim{i#121637}(2))] -[visit_exp lanetype#32231] -[visit_id lanetype#32231] -[visit_exp dim#32231] -[visit_id dim#32231] -[visit_exp i#121630] -[visit_id i#121630] -[visit_exp (`I64`_lanetype, `%`_dim{i#121637}(2))] +[check_dims] I +dims \ I = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `EXTEND`_vcvtop__(`LOW`_half, `U`_sx))] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `EXTEND`_vcvtop__(`LOW`_half, `U`_sx))] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#121637}(2)] -[visit_exp i#121637] -[visit_id i#121637] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `%X%`_shape{lanetype#32243, dim#32243, i#121642}(`I32`_lanetype, `%`_dim{i#121649}(4))] -[visit_exp lanetype#32243] -[visit_id lanetype#32243] -[visit_exp dim#32243] -[visit_id dim#32243] -[visit_exp i#121642] -[visit_id i#121642] -[visit_exp (`I32`_lanetype, `%`_dim{i#121649}(4))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#121649}(4)] -[visit_exp i#121649] -[visit_id i#121649] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `EXTEND`_vcvtop__{half#1478, sx#30482}(`LOW`_half, `U`_sx)] -[visit_exp half#1478] -[visit_id half#1478] -[visit_exp sx#30482] -[visit_id sx#30482] +[visit_exp `EXTEND`_vcvtop__(`LOW`_half, `U`_sx)] [visit_exp (`LOW`_half, `U`_sx)] [visit_exp `LOW`_half] [visit_exp ()] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I dim#32346 dim#32358 half#1512 i#121865 i#121872 i#121877 i#121884 lanetype#32346 lanetype#32358 shape_1#95 shape_2#95 sx#30516 -dims \ I = dim#32346, dim#32358, half#1512, i#121865, i#121872, i#121877, i#121884, lanetype#32346, lanetype#32358, shape_1#95, shape_2#95, sx#30516 -[visit_exp `VCVTOP`_instr{shape_1#95, shape_2#95}(`%X%`_shape{lanetype#32346, dim#32346, i#121865}(`I64`_lanetype, `%`_dim{i#121872}(2)), `%X%`_shape{lanetype#32358, dim#32358, i#121877}(`I32`_lanetype, `%`_dim{i#121884}(4)), `EXTEND`_vcvtop__{half#1512, sx#30516}(`HIGH`_half, `S`_sx))] -[visit_exp shape_1#95] -[visit_id shape_1#95] -[visit_exp shape_2#95] -[visit_id shape_2#95] -[visit_exp (`%X%`_shape{lanetype#32346, dim#32346, i#121865}(`I64`_lanetype, `%`_dim{i#121872}(2)), `%X%`_shape{lanetype#32358, dim#32358, i#121877}(`I32`_lanetype, `%`_dim{i#121884}(4)), `EXTEND`_vcvtop__{half#1512, sx#30516}(`HIGH`_half, `S`_sx))] -[visit_exp `%X%`_shape{lanetype#32346, dim#32346, i#121865}(`I64`_lanetype, `%`_dim{i#121872}(2))] -[visit_exp lanetype#32346] -[visit_id lanetype#32346] -[visit_exp dim#32346] -[visit_id dim#32346] -[visit_exp i#121865] -[visit_id i#121865] -[visit_exp (`I64`_lanetype, `%`_dim{i#121872}(2))] +[check_dims] I +dims \ I = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `EXTEND`_vcvtop__(`HIGH`_half, `S`_sx))] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `EXTEND`_vcvtop__(`HIGH`_half, `S`_sx))] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#121872}(2)] -[visit_exp i#121872] -[visit_id i#121872] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `%X%`_shape{lanetype#32358, dim#32358, i#121877}(`I32`_lanetype, `%`_dim{i#121884}(4))] -[visit_exp lanetype#32358] -[visit_id lanetype#32358] -[visit_exp dim#32358] -[visit_id dim#32358] -[visit_exp i#121877] -[visit_id i#121877] -[visit_exp (`I32`_lanetype, `%`_dim{i#121884}(4))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#121884}(4)] -[visit_exp i#121884] -[visit_id i#121884] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `EXTEND`_vcvtop__{half#1512, sx#30516}(`HIGH`_half, `S`_sx)] -[visit_exp half#1512] -[visit_id half#1512] -[visit_exp sx#30516] -[visit_id sx#30516] +[visit_exp `EXTEND`_vcvtop__(`HIGH`_half, `S`_sx)] [visit_exp (`HIGH`_half, `S`_sx)] [visit_exp `HIGH`_half] [visit_exp ()] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I dim#32461 dim#32473 half#1546 i#122100 i#122107 i#122112 i#122119 lanetype#32461 lanetype#32473 shape_1#97 shape_2#97 sx#30550 -dims \ I = dim#32461, dim#32473, half#1546, i#122100, i#122107, i#122112, i#122119, lanetype#32461, lanetype#32473, shape_1#97, shape_2#97, sx#30550 -[visit_exp `VCVTOP`_instr{shape_1#97, shape_2#97}(`%X%`_shape{lanetype#32461, dim#32461, i#122100}(`I64`_lanetype, `%`_dim{i#122107}(2)), `%X%`_shape{lanetype#32473, dim#32473, i#122112}(`I32`_lanetype, `%`_dim{i#122119}(4)), `EXTEND`_vcvtop__{half#1546, sx#30550}(`HIGH`_half, `U`_sx))] -[visit_exp shape_1#97] -[visit_id shape_1#97] -[visit_exp shape_2#97] -[visit_id shape_2#97] -[visit_exp (`%X%`_shape{lanetype#32461, dim#32461, i#122100}(`I64`_lanetype, `%`_dim{i#122107}(2)), `%X%`_shape{lanetype#32473, dim#32473, i#122112}(`I32`_lanetype, `%`_dim{i#122119}(4)), `EXTEND`_vcvtop__{half#1546, sx#30550}(`HIGH`_half, `U`_sx))] -[visit_exp `%X%`_shape{lanetype#32461, dim#32461, i#122100}(`I64`_lanetype, `%`_dim{i#122107}(2))] -[visit_exp lanetype#32461] -[visit_id lanetype#32461] -[visit_exp dim#32461] -[visit_id dim#32461] -[visit_exp i#122100] -[visit_id i#122100] -[visit_exp (`I64`_lanetype, `%`_dim{i#122107}(2))] +[check_dims] I +dims \ I = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `EXTEND`_vcvtop__(`HIGH`_half, `U`_sx))] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `EXTEND`_vcvtop__(`HIGH`_half, `U`_sx))] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#122107}(2)] -[visit_exp i#122107] -[visit_id i#122107] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `%X%`_shape{lanetype#32473, dim#32473, i#122112}(`I32`_lanetype, `%`_dim{i#122119}(4))] -[visit_exp lanetype#32473] -[visit_id lanetype#32473] -[visit_exp dim#32473] -[visit_id dim#32473] -[visit_exp i#122112] -[visit_id i#122112] -[visit_exp (`I32`_lanetype, `%`_dim{i#122119}(4))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#122119}(4)] -[visit_exp i#122119] -[visit_id i#122119] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `EXTEND`_vcvtop__{half#1546, sx#30550}(`HIGH`_half, `U`_sx)] -[visit_exp half#1546] -[visit_id half#1546] -[visit_exp sx#30550] -[visit_id sx#30550] +[visit_exp `EXTEND`_vcvtop__(`HIGH`_half, `U`_sx)] [visit_exp (`HIGH`_half, `U`_sx)] [visit_exp `HIGH`_half] [visit_exp ()] @@ -105433,140 +81777,70 @@ dims \ I = dim#32461, dim#32473, half#1546, i#122100, i#122107, i#122112, i#1221 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I dim#32576 dim#32588 i#122335 i#122342 i#122347 i#122354 lanetype#32576 lanetype#32588 shape_1#99 shape_2#99 zero#2143 -dims \ I = dim#32576, dim#32588, i#122335, i#122342, i#122347, i#122354, lanetype#32576, lanetype#32588, shape_1#99, shape_2#99, zero#2143 -[visit_exp `VCVTOP`_instr{shape_1#99, shape_2#99}(`%X%`_shape{lanetype#32576, dim#32576, i#122335}(`F32`_lanetype, `%`_dim{i#122342}(4)), `%X%`_shape{lanetype#32588, dim#32588, i#122347}(`F64`_lanetype, `%`_dim{i#122354}(2)), `DEMOTE`_vcvtop__{zero#2143}(`ZERO`_zero))] -[visit_exp shape_1#99] -[visit_id shape_1#99] -[visit_exp shape_2#99] -[visit_id shape_2#99] -[visit_exp (`%X%`_shape{lanetype#32576, dim#32576, i#122335}(`F32`_lanetype, `%`_dim{i#122342}(4)), `%X%`_shape{lanetype#32588, dim#32588, i#122347}(`F64`_lanetype, `%`_dim{i#122354}(2)), `DEMOTE`_vcvtop__{zero#2143}(`ZERO`_zero))] -[visit_exp `%X%`_shape{lanetype#32576, dim#32576, i#122335}(`F32`_lanetype, `%`_dim{i#122342}(4))] -[visit_exp lanetype#32576] -[visit_id lanetype#32576] -[visit_exp dim#32576] -[visit_id dim#32576] -[visit_exp i#122335] -[visit_id i#122335] -[visit_exp (`F32`_lanetype, `%`_dim{i#122342}(4))] +[check_dims] I +dims \ I = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `%X%`_shape(`F64`_lanetype, `%`_dim(2)), `DEMOTE`_vcvtop__(`ZERO`_zero))] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `%X%`_shape(`F64`_lanetype, `%`_dim(2)), `DEMOTE`_vcvtop__(`ZERO`_zero))] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#122342}(4)] -[visit_exp i#122342] -[visit_id i#122342] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%X%`_shape{lanetype#32588, dim#32588, i#122347}(`F64`_lanetype, `%`_dim{i#122354}(2))] -[visit_exp lanetype#32588] -[visit_id lanetype#32588] -[visit_exp dim#32588] -[visit_id dim#32588] -[visit_exp i#122347] -[visit_id i#122347] -[visit_exp (`F64`_lanetype, `%`_dim{i#122354}(2))] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#122354}(2)] -[visit_exp i#122354] -[visit_id i#122354] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `DEMOTE`_vcvtop__{zero#2143}(`ZERO`_zero)] -[visit_exp zero#2143] -[visit_id zero#2143] +[visit_exp `DEMOTE`_vcvtop__(`ZERO`_zero)] [visit_exp (`ZERO`_zero)] [visit_exp `ZERO`_zero] [visit_exp ()] -[check_dims] I dim#32841 dim#32853 half?#175 i#122780 i#122787 i#122792 i#122799 lanetype#32841 lanetype#32853 shape_1#101 shape_2#101 sx#30584 -dims \ I = dim#32841, dim#32853, half?#175, i#122780, i#122787, i#122792, i#122799, lanetype#32841, lanetype#32853, shape_1#101, shape_2#101, sx#30584 -[visit_exp `VCVTOP`_instr{shape_1#101, shape_2#101}(`%X%`_shape{lanetype#32841, dim#32841, i#122780}(`F32`_lanetype, `%`_dim{i#122787}(4)), `%X%`_shape{lanetype#32853, dim#32853, i#122792}(`I32`_lanetype, `%`_dim{i#122799}(4)), `CONVERT`_vcvtop__{`half?#175`, sx#30584}(?(), `S`_sx))] -[visit_exp shape_1#101] -[visit_id shape_1#101] -[visit_exp shape_2#101] -[visit_id shape_2#101] -[visit_exp (`%X%`_shape{lanetype#32841, dim#32841, i#122780}(`F32`_lanetype, `%`_dim{i#122787}(4)), `%X%`_shape{lanetype#32853, dim#32853, i#122792}(`I32`_lanetype, `%`_dim{i#122799}(4)), `CONVERT`_vcvtop__{`half?#175`, sx#30584}(?(), `S`_sx))] -[visit_exp `%X%`_shape{lanetype#32841, dim#32841, i#122780}(`F32`_lanetype, `%`_dim{i#122787}(4))] -[visit_exp lanetype#32841] -[visit_id lanetype#32841] -[visit_exp dim#32841] -[visit_id dim#32841] -[visit_exp i#122780] -[visit_id i#122780] -[visit_exp (`F32`_lanetype, `%`_dim{i#122787}(4))] +[check_dims] I +dims \ I = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `CONVERT`_vcvtop__(?(), `S`_sx))] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `CONVERT`_vcvtop__(?(), `S`_sx))] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#122787}(4)] -[visit_exp i#122787] -[visit_id i#122787] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%X%`_shape{lanetype#32853, dim#32853, i#122792}(`I32`_lanetype, `%`_dim{i#122799}(4))] -[visit_exp lanetype#32853] -[visit_id lanetype#32853] -[visit_exp dim#32853] -[visit_id dim#32853] -[visit_exp i#122792] -[visit_id i#122792] -[visit_exp (`I32`_lanetype, `%`_dim{i#122799}(4))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#122799}(4)] -[visit_exp i#122799] -[visit_id i#122799] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `CONVERT`_vcvtop__{`half?#175`, sx#30584}(?(), `S`_sx)] -[visit_exp `half?#175`] -[visit_id half?#175] -[visit_exp sx#30584] -[visit_id sx#30584] +[visit_exp `CONVERT`_vcvtop__(?(), `S`_sx)] [visit_exp (?(), `S`_sx)] [visit_exp ?()] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I dim#33046 dim#33058 half?#209 i#123165 i#123172 i#123177 i#123184 lanetype#33046 lanetype#33058 shape_1#103 shape_2#103 sx#30618 -dims \ I = dim#33046, dim#33058, half?#209, i#123165, i#123172, i#123177, i#123184, lanetype#33046, lanetype#33058, shape_1#103, shape_2#103, sx#30618 -[visit_exp `VCVTOP`_instr{shape_1#103, shape_2#103}(`%X%`_shape{lanetype#33046, dim#33046, i#123165}(`F32`_lanetype, `%`_dim{i#123172}(4)), `%X%`_shape{lanetype#33058, dim#33058, i#123177}(`I32`_lanetype, `%`_dim{i#123184}(4)), `CONVERT`_vcvtop__{`half?#209`, sx#30618}(?(), `U`_sx))] -[visit_exp shape_1#103] -[visit_id shape_1#103] -[visit_exp shape_2#103] -[visit_id shape_2#103] -[visit_exp (`%X%`_shape{lanetype#33046, dim#33046, i#123165}(`F32`_lanetype, `%`_dim{i#123172}(4)), `%X%`_shape{lanetype#33058, dim#33058, i#123177}(`I32`_lanetype, `%`_dim{i#123184}(4)), `CONVERT`_vcvtop__{`half?#209`, sx#30618}(?(), `U`_sx))] -[visit_exp `%X%`_shape{lanetype#33046, dim#33046, i#123165}(`F32`_lanetype, `%`_dim{i#123172}(4))] -[visit_exp lanetype#33046] -[visit_id lanetype#33046] -[visit_exp dim#33046] -[visit_id dim#33046] -[visit_exp i#123165] -[visit_id i#123165] -[visit_exp (`F32`_lanetype, `%`_dim{i#123172}(4))] +[check_dims] I +dims \ I = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `CONVERT`_vcvtop__(?(), `U`_sx))] +[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `CONVERT`_vcvtop__(?(), `U`_sx))] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#123172}(4)] -[visit_exp i#123172] -[visit_id i#123172] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%X%`_shape{lanetype#33058, dim#33058, i#123177}(`I32`_lanetype, `%`_dim{i#123184}(4))] -[visit_exp lanetype#33058] -[visit_id lanetype#33058] -[visit_exp dim#33058] -[visit_id dim#33058] -[visit_exp i#123177] -[visit_id i#123177] -[visit_exp (`I32`_lanetype, `%`_dim{i#123184}(4))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#123184}(4)] -[visit_exp i#123184] -[visit_id i#123184] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `CONVERT`_vcvtop__{`half?#209`, sx#30618}(?(), `U`_sx)] -[visit_exp `half?#209`] -[visit_id half?#209] -[visit_exp sx#30618] -[visit_id sx#30618] +[visit_exp `CONVERT`_vcvtop__(?(), `U`_sx)] [visit_exp (?(), `U`_sx)] [visit_exp ?()] [visit_exp `U`_sx] @@ -105574,138 +81848,70 @@ dims \ I = dim#33046, dim#33058, half?#209, i#123165, i#123172, i#123177, i#1231 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I dim#33251 dim#33263 i#123550 i#123557 i#123562 i#123569 lanetype#33251 lanetype#33263 shape_1#105 shape_2#105 -dims \ I = dim#33251, dim#33263, i#123550, i#123557, i#123562, i#123569, lanetype#33251, lanetype#33263, shape_1#105, shape_2#105 -[visit_exp `VCVTOP`_instr{shape_1#105, shape_2#105}(`%X%`_shape{lanetype#33251, dim#33251, i#123550}(`F64`_lanetype, `%`_dim{i#123557}(2)), `%X%`_shape{lanetype#33263, dim#33263, i#123562}(`F32`_lanetype, `%`_dim{i#123569}(4)), `PROMOTELOW`_vcvtop__)] -[visit_exp shape_1#105] -[visit_id shape_1#105] -[visit_exp shape_2#105] -[visit_id shape_2#105] -[visit_exp (`%X%`_shape{lanetype#33251, dim#33251, i#123550}(`F64`_lanetype, `%`_dim{i#123557}(2)), `%X%`_shape{lanetype#33263, dim#33263, i#123562}(`F32`_lanetype, `%`_dim{i#123569}(4)), `PROMOTELOW`_vcvtop__)] -[visit_exp `%X%`_shape{lanetype#33251, dim#33251, i#123550}(`F64`_lanetype, `%`_dim{i#123557}(2))] -[visit_exp lanetype#33251] -[visit_id lanetype#33251] -[visit_exp dim#33251] -[visit_id dim#33251] -[visit_exp i#123550] -[visit_id i#123550] -[visit_exp (`F64`_lanetype, `%`_dim{i#123557}(2))] +[check_dims] I +dims \ I = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `%X%`_shape(`F32`_lanetype, `%`_dim(4)), `PROMOTELOW`_vcvtop__)] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `%X%`_shape(`F32`_lanetype, `%`_dim(4)), `PROMOTELOW`_vcvtop__)] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#123557}(2)] -[visit_exp i#123557] -[visit_id i#123557] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `%X%`_shape{lanetype#33263, dim#33263, i#123562}(`F32`_lanetype, `%`_dim{i#123569}(4))] -[visit_exp lanetype#33263] -[visit_id lanetype#33263] -[visit_exp dim#33263] -[visit_id dim#33263] -[visit_exp i#123562] -[visit_id i#123562] -[visit_exp (`F32`_lanetype, `%`_dim{i#123569}(4))] +[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] +[visit_exp (`F32`_lanetype, `%`_dim(4))] [visit_exp `F32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#123569}(4)] -[visit_exp i#123569] -[visit_id i#123569] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] [visit_exp `PROMOTELOW`_vcvtop__] [visit_exp ()] -[check_dims] I dim#33516 dim#33528 half?#243 i#123995 i#124002 i#124007 i#124014 lanetype#33516 lanetype#33528 shape_1#107 shape_2#107 sx#30652 -dims \ I = dim#33516, dim#33528, half?#243, i#123995, i#124002, i#124007, i#124014, lanetype#33516, lanetype#33528, shape_1#107, shape_2#107, sx#30652 -[visit_exp `VCVTOP`_instr{shape_1#107, shape_2#107}(`%X%`_shape{lanetype#33516, dim#33516, i#123995}(`F64`_lanetype, `%`_dim{i#124002}(2)), `%X%`_shape{lanetype#33528, dim#33528, i#124007}(`I32`_lanetype, `%`_dim{i#124014}(4)), `CONVERT`_vcvtop__{`half?#243`, sx#30652}(?(`LOW`_half), `S`_sx))] -[visit_exp shape_1#107] -[visit_id shape_1#107] -[visit_exp shape_2#107] -[visit_id shape_2#107] -[visit_exp (`%X%`_shape{lanetype#33516, dim#33516, i#123995}(`F64`_lanetype, `%`_dim{i#124002}(2)), `%X%`_shape{lanetype#33528, dim#33528, i#124007}(`I32`_lanetype, `%`_dim{i#124014}(4)), `CONVERT`_vcvtop__{`half?#243`, sx#30652}(?(`LOW`_half), `S`_sx))] -[visit_exp `%X%`_shape{lanetype#33516, dim#33516, i#123995}(`F64`_lanetype, `%`_dim{i#124002}(2))] -[visit_exp lanetype#33516] -[visit_id lanetype#33516] -[visit_exp dim#33516] -[visit_id dim#33516] -[visit_exp i#123995] -[visit_id i#123995] -[visit_exp (`F64`_lanetype, `%`_dim{i#124002}(2))] +[check_dims] I +dims \ I = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `CONVERT`_vcvtop__(?(`LOW`_half), `S`_sx))] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `CONVERT`_vcvtop__(?(`LOW`_half), `S`_sx))] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#124002}(2)] -[visit_exp i#124002] -[visit_id i#124002] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `%X%`_shape{lanetype#33528, dim#33528, i#124007}(`I32`_lanetype, `%`_dim{i#124014}(4))] -[visit_exp lanetype#33528] -[visit_id lanetype#33528] -[visit_exp dim#33528] -[visit_id dim#33528] -[visit_exp i#124007] -[visit_id i#124007] -[visit_exp (`I32`_lanetype, `%`_dim{i#124014}(4))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#124014}(4)] -[visit_exp i#124014] -[visit_id i#124014] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `CONVERT`_vcvtop__{`half?#243`, sx#30652}(?(`LOW`_half), `S`_sx)] -[visit_exp `half?#243`] -[visit_id half?#243] -[visit_exp sx#30652] -[visit_id sx#30652] +[visit_exp `CONVERT`_vcvtop__(?(`LOW`_half), `S`_sx)] [visit_exp (?(`LOW`_half), `S`_sx)] [visit_exp ?(`LOW`_half)] [visit_exp `LOW`_half] [visit_exp ()] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I dim#33721 dim#33733 half?#277 i#124380 i#124387 i#124392 i#124399 lanetype#33721 lanetype#33733 shape_1#109 shape_2#109 sx#30686 -dims \ I = dim#33721, dim#33733, half?#277, i#124380, i#124387, i#124392, i#124399, lanetype#33721, lanetype#33733, shape_1#109, shape_2#109, sx#30686 -[visit_exp `VCVTOP`_instr{shape_1#109, shape_2#109}(`%X%`_shape{lanetype#33721, dim#33721, i#124380}(`F64`_lanetype, `%`_dim{i#124387}(2)), `%X%`_shape{lanetype#33733, dim#33733, i#124392}(`I32`_lanetype, `%`_dim{i#124399}(4)), `CONVERT`_vcvtop__{`half?#277`, sx#30686}(?(`LOW`_half), `U`_sx))] -[visit_exp shape_1#109] -[visit_id shape_1#109] -[visit_exp shape_2#109] -[visit_id shape_2#109] -[visit_exp (`%X%`_shape{lanetype#33721, dim#33721, i#124380}(`F64`_lanetype, `%`_dim{i#124387}(2)), `%X%`_shape{lanetype#33733, dim#33733, i#124392}(`I32`_lanetype, `%`_dim{i#124399}(4)), `CONVERT`_vcvtop__{`half?#277`, sx#30686}(?(`LOW`_half), `U`_sx))] -[visit_exp `%X%`_shape{lanetype#33721, dim#33721, i#124380}(`F64`_lanetype, `%`_dim{i#124387}(2))] -[visit_exp lanetype#33721] -[visit_id lanetype#33721] -[visit_exp dim#33721] -[visit_id dim#33721] -[visit_exp i#124380] -[visit_id i#124380] -[visit_exp (`F64`_lanetype, `%`_dim{i#124387}(2))] +[check_dims] I +dims \ I = +[visit_exp `VCVTOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `CONVERT`_vcvtop__(?(`LOW`_half), `U`_sx))] +[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `CONVERT`_vcvtop__(?(`LOW`_half), `U`_sx))] +[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] +[visit_exp (`F64`_lanetype, `%`_dim(2))] [visit_exp `F64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#124387}(2)] -[visit_exp i#124387] -[visit_id i#124387] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `%X%`_shape{lanetype#33733, dim#33733, i#124392}(`I32`_lanetype, `%`_dim{i#124399}(4))] -[visit_exp lanetype#33733] -[visit_id lanetype#33733] -[visit_exp dim#33733] -[visit_id dim#33733] -[visit_exp i#124392] -[visit_id i#124392] -[visit_exp (`I32`_lanetype, `%`_dim{i#124399}(4))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#124399}(4)] -[visit_exp i#124399] -[visit_id i#124399] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `CONVERT`_vcvtop__{`half?#277`, sx#30686}(?(`LOW`_half), `U`_sx)] -[visit_exp `half?#277`] -[visit_id half?#277] -[visit_exp sx#30686] -[visit_id sx#30686] +[visit_exp `CONVERT`_vcvtop__(?(`LOW`_half), `U`_sx)] [visit_exp (?(`LOW`_half), `U`_sx)] [visit_exp ?(`LOW`_half)] [visit_exp `LOW`_half] @@ -105715,471 +81921,223 @@ dims \ I = dim#33721, dim#33733, half?#277, i#124380, i#124387, i#124392, i#1243 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I Jnn#596 Jnn#600 dim#33926 dim#33938 i#124765 i#124772 i#124777 i#124784 ishape_1#79 ishape_2#79 lanetype#33926 lanetype#33938 shape#4954 shape#4966 sx#30720 -dims \ I = Jnn#596, Jnn#600, dim#33926, dim#33938, i#124765, i#124772, i#124777, i#124784, ishape_1#79, ishape_2#79, lanetype#33926, lanetype#33938, shape#4954, shape#4966, sx#30720 -[visit_exp `VEXTUNOP`_instr{ishape_1#79, ishape_2#79}(`%`_ishape{shape#4954, Jnn#596}(`%X%`_shape{lanetype#33926, dim#33926, i#124765}(`I16`_lanetype, `%`_dim{i#124772}(8))), `%`_ishape{shape#4966, Jnn#600}(`%X%`_shape{lanetype#33938, dim#33938, i#124777}(`I8`_lanetype, `%`_dim{i#124784}(16))), `EXTADD_PAIRWISE`_vextunop__{sx#30720}(`S`_sx))] -[visit_exp ishape_1#79] -[visit_id ishape_1#79] -[visit_exp ishape_2#79] -[visit_id ishape_2#79] -[visit_exp (`%`_ishape{shape#4954, Jnn#596}(`%X%`_shape{lanetype#33926, dim#33926, i#124765}(`I16`_lanetype, `%`_dim{i#124772}(8))), `%`_ishape{shape#4966, Jnn#600}(`%X%`_shape{lanetype#33938, dim#33938, i#124777}(`I8`_lanetype, `%`_dim{i#124784}(16))), `EXTADD_PAIRWISE`_vextunop__{sx#30720}(`S`_sx))] -[visit_exp `%`_ishape{shape#4954, Jnn#596}(`%X%`_shape{lanetype#33926, dim#33926, i#124765}(`I16`_lanetype, `%`_dim{i#124772}(8)))] -[visit_exp shape#4954] -[visit_id shape#4954] -[visit_exp Jnn#596] -[visit_id Jnn#596] -[visit_exp (`%X%`_shape{lanetype#33926, dim#33926, i#124765}(`I16`_lanetype, `%`_dim{i#124772}(8)))] -[visit_exp `%X%`_shape{lanetype#33926, dim#33926, i#124765}(`I16`_lanetype, `%`_dim{i#124772}(8))] -[visit_exp lanetype#33926] -[visit_id lanetype#33926] -[visit_exp dim#33926] -[visit_id dim#33926] -[visit_exp i#124765] -[visit_id i#124765] -[visit_exp (`I16`_lanetype, `%`_dim{i#124772}(8))] +[check_dims] I +dims \ I = +[visit_exp `VEXTUNOP`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTADD_PAIRWISE`_vextunop__(`S`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTADD_PAIRWISE`_vextunop__(`S`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#124772}(8)] -[visit_exp i#124772] -[visit_id i#124772] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `%`_ishape{shape#4966, Jnn#600}(`%X%`_shape{lanetype#33938, dim#33938, i#124777}(`I8`_lanetype, `%`_dim{i#124784}(16)))] -[visit_exp shape#4966] -[visit_id shape#4966] -[visit_exp Jnn#600] -[visit_id Jnn#600] -[visit_exp (`%X%`_shape{lanetype#33938, dim#33938, i#124777}(`I8`_lanetype, `%`_dim{i#124784}(16)))] -[visit_exp `%X%`_shape{lanetype#33938, dim#33938, i#124777}(`I8`_lanetype, `%`_dim{i#124784}(16))] -[visit_exp lanetype#33938] -[visit_id lanetype#33938] -[visit_exp dim#33938] -[visit_id dim#33938] -[visit_exp i#124777] -[visit_id i#124777] -[visit_exp (`I8`_lanetype, `%`_dim{i#124784}(16))] +[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#124784}(16)] -[visit_exp i#124784] -[visit_id i#124784] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `EXTADD_PAIRWISE`_vextunop__{sx#30720}(`S`_sx)] -[visit_exp sx#30720] -[visit_id sx#30720] +[visit_exp `EXTADD_PAIRWISE`_vextunop__(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I Jnn#604 Jnn#608 dim#34161 dim#34173 i#125120 i#125127 i#125132 i#125139 ishape_1#81 ishape_2#81 lanetype#34161 lanetype#34173 shape#5069 shape#5081 sx#30754 -dims \ I = Jnn#604, Jnn#608, dim#34161, dim#34173, i#125120, i#125127, i#125132, i#125139, ishape_1#81, ishape_2#81, lanetype#34161, lanetype#34173, shape#5069, shape#5081, sx#30754 -[visit_exp `VEXTUNOP`_instr{ishape_1#81, ishape_2#81}(`%`_ishape{shape#5069, Jnn#604}(`%X%`_shape{lanetype#34161, dim#34161, i#125120}(`I16`_lanetype, `%`_dim{i#125127}(8))), `%`_ishape{shape#5081, Jnn#608}(`%X%`_shape{lanetype#34173, dim#34173, i#125132}(`I8`_lanetype, `%`_dim{i#125139}(16))), `EXTADD_PAIRWISE`_vextunop__{sx#30754}(`U`_sx))] -[visit_exp ishape_1#81] -[visit_id ishape_1#81] -[visit_exp ishape_2#81] -[visit_id ishape_2#81] -[visit_exp (`%`_ishape{shape#5069, Jnn#604}(`%X%`_shape{lanetype#34161, dim#34161, i#125120}(`I16`_lanetype, `%`_dim{i#125127}(8))), `%`_ishape{shape#5081, Jnn#608}(`%X%`_shape{lanetype#34173, dim#34173, i#125132}(`I8`_lanetype, `%`_dim{i#125139}(16))), `EXTADD_PAIRWISE`_vextunop__{sx#30754}(`U`_sx))] -[visit_exp `%`_ishape{shape#5069, Jnn#604}(`%X%`_shape{lanetype#34161, dim#34161, i#125120}(`I16`_lanetype, `%`_dim{i#125127}(8)))] -[visit_exp shape#5069] -[visit_id shape#5069] -[visit_exp Jnn#604] -[visit_id Jnn#604] -[visit_exp (`%X%`_shape{lanetype#34161, dim#34161, i#125120}(`I16`_lanetype, `%`_dim{i#125127}(8)))] -[visit_exp `%X%`_shape{lanetype#34161, dim#34161, i#125120}(`I16`_lanetype, `%`_dim{i#125127}(8))] -[visit_exp lanetype#34161] -[visit_id lanetype#34161] -[visit_exp dim#34161] -[visit_id dim#34161] -[visit_exp i#125120] -[visit_id i#125120] -[visit_exp (`I16`_lanetype, `%`_dim{i#125127}(8))] +[check_dims] I +dims \ I = +[visit_exp `VEXTUNOP`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTADD_PAIRWISE`_vextunop__(`U`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTADD_PAIRWISE`_vextunop__(`U`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#125127}(8)] -[visit_exp i#125127] -[visit_id i#125127] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `%`_ishape{shape#5081, Jnn#608}(`%X%`_shape{lanetype#34173, dim#34173, i#125132}(`I8`_lanetype, `%`_dim{i#125139}(16)))] -[visit_exp shape#5081] -[visit_id shape#5081] -[visit_exp Jnn#608] -[visit_id Jnn#608] -[visit_exp (`%X%`_shape{lanetype#34173, dim#34173, i#125132}(`I8`_lanetype, `%`_dim{i#125139}(16)))] -[visit_exp `%X%`_shape{lanetype#34173, dim#34173, i#125132}(`I8`_lanetype, `%`_dim{i#125139}(16))] -[visit_exp lanetype#34173] -[visit_id lanetype#34173] -[visit_exp dim#34173] -[visit_id dim#34173] -[visit_exp i#125132] -[visit_id i#125132] -[visit_exp (`I8`_lanetype, `%`_dim{i#125139}(16))] +[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#125139}(16)] -[visit_exp i#125139] -[visit_id i#125139] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `EXTADD_PAIRWISE`_vextunop__{sx#30754}(`U`_sx)] -[visit_exp sx#30754] -[visit_id sx#30754] +[visit_exp `EXTADD_PAIRWISE`_vextunop__(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I Jnn#612 Jnn#616 dim#34396 dim#34408 i#125475 i#125482 i#125487 i#125494 ishape_1#83 ishape_2#83 lanetype#34396 lanetype#34408 shape#5184 shape#5196 sx#30788 -dims \ I = Jnn#612, Jnn#616, dim#34396, dim#34408, i#125475, i#125482, i#125487, i#125494, ishape_1#83, ishape_2#83, lanetype#34396, lanetype#34408, shape#5184, shape#5196, sx#30788 -[visit_exp `VEXTUNOP`_instr{ishape_1#83, ishape_2#83}(`%`_ishape{shape#5184, Jnn#612}(`%X%`_shape{lanetype#34396, dim#34396, i#125475}(`I32`_lanetype, `%`_dim{i#125482}(4))), `%`_ishape{shape#5196, Jnn#616}(`%X%`_shape{lanetype#34408, dim#34408, i#125487}(`I16`_lanetype, `%`_dim{i#125494}(8))), `EXTADD_PAIRWISE`_vextunop__{sx#30788}(`S`_sx))] -[visit_exp ishape_1#83] -[visit_id ishape_1#83] -[visit_exp ishape_2#83] -[visit_id ishape_2#83] -[visit_exp (`%`_ishape{shape#5184, Jnn#612}(`%X%`_shape{lanetype#34396, dim#34396, i#125475}(`I32`_lanetype, `%`_dim{i#125482}(4))), `%`_ishape{shape#5196, Jnn#616}(`%X%`_shape{lanetype#34408, dim#34408, i#125487}(`I16`_lanetype, `%`_dim{i#125494}(8))), `EXTADD_PAIRWISE`_vextunop__{sx#30788}(`S`_sx))] -[visit_exp `%`_ishape{shape#5184, Jnn#612}(`%X%`_shape{lanetype#34396, dim#34396, i#125475}(`I32`_lanetype, `%`_dim{i#125482}(4)))] -[visit_exp shape#5184] -[visit_id shape#5184] -[visit_exp Jnn#612] -[visit_id Jnn#612] -[visit_exp (`%X%`_shape{lanetype#34396, dim#34396, i#125475}(`I32`_lanetype, `%`_dim{i#125482}(4)))] -[visit_exp `%X%`_shape{lanetype#34396, dim#34396, i#125475}(`I32`_lanetype, `%`_dim{i#125482}(4))] -[visit_exp lanetype#34396] -[visit_id lanetype#34396] -[visit_exp dim#34396] -[visit_id dim#34396] -[visit_exp i#125475] -[visit_id i#125475] -[visit_exp (`I32`_lanetype, `%`_dim{i#125482}(4))] +[check_dims] I +dims \ I = +[visit_exp `VEXTUNOP`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTADD_PAIRWISE`_vextunop__(`S`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTADD_PAIRWISE`_vextunop__(`S`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#125482}(4)] -[visit_exp i#125482] -[visit_id i#125482] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%`_ishape{shape#5196, Jnn#616}(`%X%`_shape{lanetype#34408, dim#34408, i#125487}(`I16`_lanetype, `%`_dim{i#125494}(8)))] -[visit_exp shape#5196] -[visit_id shape#5196] -[visit_exp Jnn#616] -[visit_id Jnn#616] -[visit_exp (`%X%`_shape{lanetype#34408, dim#34408, i#125487}(`I16`_lanetype, `%`_dim{i#125494}(8)))] -[visit_exp `%X%`_shape{lanetype#34408, dim#34408, i#125487}(`I16`_lanetype, `%`_dim{i#125494}(8))] -[visit_exp lanetype#34408] -[visit_id lanetype#34408] -[visit_exp dim#34408] -[visit_id dim#34408] -[visit_exp i#125487] -[visit_id i#125487] -[visit_exp (`I16`_lanetype, `%`_dim{i#125494}(8))] +[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#125494}(8)] -[visit_exp i#125494] -[visit_id i#125494] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `EXTADD_PAIRWISE`_vextunop__{sx#30788}(`S`_sx)] -[visit_exp sx#30788] -[visit_id sx#30788] +[visit_exp `EXTADD_PAIRWISE`_vextunop__(`S`_sx)] [visit_exp (`S`_sx)] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I Jnn#620 Jnn#624 dim#34631 dim#34643 i#125830 i#125837 i#125842 i#125849 ishape_1#85 ishape_2#85 lanetype#34631 lanetype#34643 shape#5299 shape#5311 sx#30822 -dims \ I = Jnn#620, Jnn#624, dim#34631, dim#34643, i#125830, i#125837, i#125842, i#125849, ishape_1#85, ishape_2#85, lanetype#34631, lanetype#34643, shape#5299, shape#5311, sx#30822 -[visit_exp `VEXTUNOP`_instr{ishape_1#85, ishape_2#85}(`%`_ishape{shape#5299, Jnn#620}(`%X%`_shape{lanetype#34631, dim#34631, i#125830}(`I32`_lanetype, `%`_dim{i#125837}(4))), `%`_ishape{shape#5311, Jnn#624}(`%X%`_shape{lanetype#34643, dim#34643, i#125842}(`I16`_lanetype, `%`_dim{i#125849}(8))), `EXTADD_PAIRWISE`_vextunop__{sx#30822}(`U`_sx))] -[visit_exp ishape_1#85] -[visit_id ishape_1#85] -[visit_exp ishape_2#85] -[visit_id ishape_2#85] -[visit_exp (`%`_ishape{shape#5299, Jnn#620}(`%X%`_shape{lanetype#34631, dim#34631, i#125830}(`I32`_lanetype, `%`_dim{i#125837}(4))), `%`_ishape{shape#5311, Jnn#624}(`%X%`_shape{lanetype#34643, dim#34643, i#125842}(`I16`_lanetype, `%`_dim{i#125849}(8))), `EXTADD_PAIRWISE`_vextunop__{sx#30822}(`U`_sx))] -[visit_exp `%`_ishape{shape#5299, Jnn#620}(`%X%`_shape{lanetype#34631, dim#34631, i#125830}(`I32`_lanetype, `%`_dim{i#125837}(4)))] -[visit_exp shape#5299] -[visit_id shape#5299] -[visit_exp Jnn#620] -[visit_id Jnn#620] -[visit_exp (`%X%`_shape{lanetype#34631, dim#34631, i#125830}(`I32`_lanetype, `%`_dim{i#125837}(4)))] -[visit_exp `%X%`_shape{lanetype#34631, dim#34631, i#125830}(`I32`_lanetype, `%`_dim{i#125837}(4))] -[visit_exp lanetype#34631] -[visit_id lanetype#34631] -[visit_exp dim#34631] -[visit_id dim#34631] -[visit_exp i#125830] -[visit_id i#125830] -[visit_exp (`I32`_lanetype, `%`_dim{i#125837}(4))] +[check_dims] I +dims \ I = +[visit_exp `VEXTUNOP`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTADD_PAIRWISE`_vextunop__(`U`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTADD_PAIRWISE`_vextunop__(`U`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#125837}(4)] -[visit_exp i#125837] -[visit_id i#125837] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%`_ishape{shape#5311, Jnn#624}(`%X%`_shape{lanetype#34643, dim#34643, i#125842}(`I16`_lanetype, `%`_dim{i#125849}(8)))] -[visit_exp shape#5311] -[visit_id shape#5311] -[visit_exp Jnn#624] -[visit_id Jnn#624] -[visit_exp (`%X%`_shape{lanetype#34643, dim#34643, i#125842}(`I16`_lanetype, `%`_dim{i#125849}(8)))] -[visit_exp `%X%`_shape{lanetype#34643, dim#34643, i#125842}(`I16`_lanetype, `%`_dim{i#125849}(8))] -[visit_exp lanetype#34643] -[visit_id lanetype#34643] -[visit_exp dim#34643] -[visit_id dim#34643] -[visit_exp i#125842] -[visit_id i#125842] -[visit_exp (`I16`_lanetype, `%`_dim{i#125849}(8))] +[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#125849}(8)] -[visit_exp i#125849] -[visit_id i#125849] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `EXTADD_PAIRWISE`_vextunop__{sx#30822}(`U`_sx)] -[visit_exp sx#30822] -[visit_id sx#30822] +[visit_exp `EXTADD_PAIRWISE`_vextunop__(`U`_sx)] [visit_exp (`U`_sx)] [visit_exp `U`_sx] [visit_exp ()] [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I Jnn#628 Jnn#632 dim#34866 dim#34878 half#1820 i#126185 i#126192 i#126197 i#126204 ishape_1#87 ishape_2#87 lanetype#34866 lanetype#34878 shape#5414 shape#5426 sx#30856 -dims \ I = Jnn#628, Jnn#632, dim#34866, dim#34878, half#1820, i#126185, i#126192, i#126197, i#126204, ishape_1#87, ishape_2#87, lanetype#34866, lanetype#34878, shape#5414, shape#5426, sx#30856 -[visit_exp `VEXTBINOP`_instr{ishape_1#87, ishape_2#87}(`%`_ishape{shape#5414, Jnn#628}(`%X%`_shape{lanetype#34866, dim#34866, i#126185}(`I16`_lanetype, `%`_dim{i#126192}(8))), `%`_ishape{shape#5426, Jnn#632}(`%X%`_shape{lanetype#34878, dim#34878, i#126197}(`I8`_lanetype, `%`_dim{i#126204}(16))), `EXTMUL`_vextbinop__{half#1820, sx#30856}(`LOW`_half, `S`_sx))] -[visit_exp ishape_1#87] -[visit_id ishape_1#87] -[visit_exp ishape_2#87] -[visit_id ishape_2#87] -[visit_exp (`%`_ishape{shape#5414, Jnn#628}(`%X%`_shape{lanetype#34866, dim#34866, i#126185}(`I16`_lanetype, `%`_dim{i#126192}(8))), `%`_ishape{shape#5426, Jnn#632}(`%X%`_shape{lanetype#34878, dim#34878, i#126197}(`I8`_lanetype, `%`_dim{i#126204}(16))), `EXTMUL`_vextbinop__{half#1820, sx#30856}(`LOW`_half, `S`_sx))] -[visit_exp `%`_ishape{shape#5414, Jnn#628}(`%X%`_shape{lanetype#34866, dim#34866, i#126185}(`I16`_lanetype, `%`_dim{i#126192}(8)))] -[visit_exp shape#5414] -[visit_id shape#5414] -[visit_exp Jnn#628] -[visit_id Jnn#628] -[visit_exp (`%X%`_shape{lanetype#34866, dim#34866, i#126185}(`I16`_lanetype, `%`_dim{i#126192}(8)))] -[visit_exp `%X%`_shape{lanetype#34866, dim#34866, i#126185}(`I16`_lanetype, `%`_dim{i#126192}(8))] -[visit_exp lanetype#34866] -[visit_id lanetype#34866] -[visit_exp dim#34866] -[visit_id dim#34866] -[visit_exp i#126185] -[visit_id i#126185] -[visit_exp (`I16`_lanetype, `%`_dim{i#126192}(8))] +[check_dims] I +dims \ I = +[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTMUL`_vextbinop__(`LOW`_half, `S`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTMUL`_vextbinop__(`LOW`_half, `S`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#126192}(8)] -[visit_exp i#126192] -[visit_id i#126192] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `%`_ishape{shape#5426, Jnn#632}(`%X%`_shape{lanetype#34878, dim#34878, i#126197}(`I8`_lanetype, `%`_dim{i#126204}(16)))] -[visit_exp shape#5426] -[visit_id shape#5426] -[visit_exp Jnn#632] -[visit_id Jnn#632] -[visit_exp (`%X%`_shape{lanetype#34878, dim#34878, i#126197}(`I8`_lanetype, `%`_dim{i#126204}(16)))] -[visit_exp `%X%`_shape{lanetype#34878, dim#34878, i#126197}(`I8`_lanetype, `%`_dim{i#126204}(16))] -[visit_exp lanetype#34878] -[visit_id lanetype#34878] -[visit_exp dim#34878] -[visit_id dim#34878] -[visit_exp i#126197] -[visit_id i#126197] -[visit_exp (`I8`_lanetype, `%`_dim{i#126204}(16))] +[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#126204}(16)] -[visit_exp i#126204] -[visit_id i#126204] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `EXTMUL`_vextbinop__{half#1820, sx#30856}(`LOW`_half, `S`_sx)] -[visit_exp half#1820] -[visit_id half#1820] -[visit_exp sx#30856] -[visit_id sx#30856] +[visit_exp `EXTMUL`_vextbinop__(`LOW`_half, `S`_sx)] [visit_exp (`LOW`_half, `S`_sx)] [visit_exp `LOW`_half] [visit_exp ()] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I Jnn#636 Jnn#640 dim#35101 dim#35113 half#1854 i#126540 i#126547 i#126552 i#126559 ishape_1#89 ishape_2#89 lanetype#35101 lanetype#35113 shape#5529 shape#5541 sx#30890 -dims \ I = Jnn#636, Jnn#640, dim#35101, dim#35113, half#1854, i#126540, i#126547, i#126552, i#126559, ishape_1#89, ishape_2#89, lanetype#35101, lanetype#35113, shape#5529, shape#5541, sx#30890 -[visit_exp `VEXTBINOP`_instr{ishape_1#89, ishape_2#89}(`%`_ishape{shape#5529, Jnn#636}(`%X%`_shape{lanetype#35101, dim#35101, i#126540}(`I16`_lanetype, `%`_dim{i#126547}(8))), `%`_ishape{shape#5541, Jnn#640}(`%X%`_shape{lanetype#35113, dim#35113, i#126552}(`I8`_lanetype, `%`_dim{i#126559}(16))), `EXTMUL`_vextbinop__{half#1854, sx#30890}(`LOW`_half, `U`_sx))] -[visit_exp ishape_1#89] -[visit_id ishape_1#89] -[visit_exp ishape_2#89] -[visit_id ishape_2#89] -[visit_exp (`%`_ishape{shape#5529, Jnn#636}(`%X%`_shape{lanetype#35101, dim#35101, i#126540}(`I16`_lanetype, `%`_dim{i#126547}(8))), `%`_ishape{shape#5541, Jnn#640}(`%X%`_shape{lanetype#35113, dim#35113, i#126552}(`I8`_lanetype, `%`_dim{i#126559}(16))), `EXTMUL`_vextbinop__{half#1854, sx#30890}(`LOW`_half, `U`_sx))] -[visit_exp `%`_ishape{shape#5529, Jnn#636}(`%X%`_shape{lanetype#35101, dim#35101, i#126540}(`I16`_lanetype, `%`_dim{i#126547}(8)))] -[visit_exp shape#5529] -[visit_id shape#5529] -[visit_exp Jnn#636] -[visit_id Jnn#636] -[visit_exp (`%X%`_shape{lanetype#35101, dim#35101, i#126540}(`I16`_lanetype, `%`_dim{i#126547}(8)))] -[visit_exp `%X%`_shape{lanetype#35101, dim#35101, i#126540}(`I16`_lanetype, `%`_dim{i#126547}(8))] -[visit_exp lanetype#35101] -[visit_id lanetype#35101] -[visit_exp dim#35101] -[visit_id dim#35101] -[visit_exp i#126540] -[visit_id i#126540] -[visit_exp (`I16`_lanetype, `%`_dim{i#126547}(8))] +[check_dims] I +dims \ I = +[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTMUL`_vextbinop__(`LOW`_half, `U`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTMUL`_vextbinop__(`LOW`_half, `U`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#126547}(8)] -[visit_exp i#126547] -[visit_id i#126547] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `%`_ishape{shape#5541, Jnn#640}(`%X%`_shape{lanetype#35113, dim#35113, i#126552}(`I8`_lanetype, `%`_dim{i#126559}(16)))] -[visit_exp shape#5541] -[visit_id shape#5541] -[visit_exp Jnn#640] -[visit_id Jnn#640] -[visit_exp (`%X%`_shape{lanetype#35113, dim#35113, i#126552}(`I8`_lanetype, `%`_dim{i#126559}(16)))] -[visit_exp `%X%`_shape{lanetype#35113, dim#35113, i#126552}(`I8`_lanetype, `%`_dim{i#126559}(16))] -[visit_exp lanetype#35113] -[visit_id lanetype#35113] -[visit_exp dim#35113] -[visit_id dim#35113] -[visit_exp i#126552] -[visit_id i#126552] -[visit_exp (`I8`_lanetype, `%`_dim{i#126559}(16))] +[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#126559}(16)] -[visit_exp i#126559] -[visit_id i#126559] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `EXTMUL`_vextbinop__{half#1854, sx#30890}(`LOW`_half, `U`_sx)] -[visit_exp half#1854] -[visit_id half#1854] -[visit_exp sx#30890] -[visit_id sx#30890] +[visit_exp `EXTMUL`_vextbinop__(`LOW`_half, `U`_sx)] [visit_exp (`LOW`_half, `U`_sx)] [visit_exp `LOW`_half] [visit_exp ()] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I Jnn#644 Jnn#648 dim#35336 dim#35348 half#1888 i#126895 i#126902 i#126907 i#126914 ishape_1#91 ishape_2#91 lanetype#35336 lanetype#35348 shape#5644 shape#5656 sx#30924 -dims \ I = Jnn#644, Jnn#648, dim#35336, dim#35348, half#1888, i#126895, i#126902, i#126907, i#126914, ishape_1#91, ishape_2#91, lanetype#35336, lanetype#35348, shape#5644, shape#5656, sx#30924 -[visit_exp `VEXTBINOP`_instr{ishape_1#91, ishape_2#91}(`%`_ishape{shape#5644, Jnn#644}(`%X%`_shape{lanetype#35336, dim#35336, i#126895}(`I16`_lanetype, `%`_dim{i#126902}(8))), `%`_ishape{shape#5656, Jnn#648}(`%X%`_shape{lanetype#35348, dim#35348, i#126907}(`I8`_lanetype, `%`_dim{i#126914}(16))), `EXTMUL`_vextbinop__{half#1888, sx#30924}(`HIGH`_half, `S`_sx))] -[visit_exp ishape_1#91] -[visit_id ishape_1#91] -[visit_exp ishape_2#91] -[visit_id ishape_2#91] -[visit_exp (`%`_ishape{shape#5644, Jnn#644}(`%X%`_shape{lanetype#35336, dim#35336, i#126895}(`I16`_lanetype, `%`_dim{i#126902}(8))), `%`_ishape{shape#5656, Jnn#648}(`%X%`_shape{lanetype#35348, dim#35348, i#126907}(`I8`_lanetype, `%`_dim{i#126914}(16))), `EXTMUL`_vextbinop__{half#1888, sx#30924}(`HIGH`_half, `S`_sx))] -[visit_exp `%`_ishape{shape#5644, Jnn#644}(`%X%`_shape{lanetype#35336, dim#35336, i#126895}(`I16`_lanetype, `%`_dim{i#126902}(8)))] -[visit_exp shape#5644] -[visit_id shape#5644] -[visit_exp Jnn#644] -[visit_id Jnn#644] -[visit_exp (`%X%`_shape{lanetype#35336, dim#35336, i#126895}(`I16`_lanetype, `%`_dim{i#126902}(8)))] -[visit_exp `%X%`_shape{lanetype#35336, dim#35336, i#126895}(`I16`_lanetype, `%`_dim{i#126902}(8))] -[visit_exp lanetype#35336] -[visit_id lanetype#35336] -[visit_exp dim#35336] -[visit_id dim#35336] -[visit_exp i#126895] -[visit_id i#126895] -[visit_exp (`I16`_lanetype, `%`_dim{i#126902}(8))] +[check_dims] I +dims \ I = +[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTMUL`_vextbinop__(`HIGH`_half, `S`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTMUL`_vextbinop__(`HIGH`_half, `S`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#126902}(8)] -[visit_exp i#126902] -[visit_id i#126902] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `%`_ishape{shape#5656, Jnn#648}(`%X%`_shape{lanetype#35348, dim#35348, i#126907}(`I8`_lanetype, `%`_dim{i#126914}(16)))] -[visit_exp shape#5656] -[visit_id shape#5656] -[visit_exp Jnn#648] -[visit_id Jnn#648] -[visit_exp (`%X%`_shape{lanetype#35348, dim#35348, i#126907}(`I8`_lanetype, `%`_dim{i#126914}(16)))] -[visit_exp `%X%`_shape{lanetype#35348, dim#35348, i#126907}(`I8`_lanetype, `%`_dim{i#126914}(16))] -[visit_exp lanetype#35348] -[visit_id lanetype#35348] -[visit_exp dim#35348] -[visit_id dim#35348] -[visit_exp i#126907] -[visit_id i#126907] -[visit_exp (`I8`_lanetype, `%`_dim{i#126914}(16))] +[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#126914}(16)] -[visit_exp i#126914] -[visit_id i#126914] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `EXTMUL`_vextbinop__{half#1888, sx#30924}(`HIGH`_half, `S`_sx)] -[visit_exp half#1888] -[visit_id half#1888] -[visit_exp sx#30924] -[visit_id sx#30924] +[visit_exp `EXTMUL`_vextbinop__(`HIGH`_half, `S`_sx)] [visit_exp (`HIGH`_half, `S`_sx)] [visit_exp `HIGH`_half] [visit_exp ()] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I Jnn#652 Jnn#656 dim#35571 dim#35583 half#1922 i#127250 i#127257 i#127262 i#127269 ishape_1#93 ishape_2#93 lanetype#35571 lanetype#35583 shape#5759 shape#5771 sx#30958 -dims \ I = Jnn#652, Jnn#656, dim#35571, dim#35583, half#1922, i#127250, i#127257, i#127262, i#127269, ishape_1#93, ishape_2#93, lanetype#35571, lanetype#35583, shape#5759, shape#5771, sx#30958 -[visit_exp `VEXTBINOP`_instr{ishape_1#93, ishape_2#93}(`%`_ishape{shape#5759, Jnn#652}(`%X%`_shape{lanetype#35571, dim#35571, i#127250}(`I16`_lanetype, `%`_dim{i#127257}(8))), `%`_ishape{shape#5771, Jnn#656}(`%X%`_shape{lanetype#35583, dim#35583, i#127262}(`I8`_lanetype, `%`_dim{i#127269}(16))), `EXTMUL`_vextbinop__{half#1922, sx#30958}(`HIGH`_half, `U`_sx))] -[visit_exp ishape_1#93] -[visit_id ishape_1#93] -[visit_exp ishape_2#93] -[visit_id ishape_2#93] -[visit_exp (`%`_ishape{shape#5759, Jnn#652}(`%X%`_shape{lanetype#35571, dim#35571, i#127250}(`I16`_lanetype, `%`_dim{i#127257}(8))), `%`_ishape{shape#5771, Jnn#656}(`%X%`_shape{lanetype#35583, dim#35583, i#127262}(`I8`_lanetype, `%`_dim{i#127269}(16))), `EXTMUL`_vextbinop__{half#1922, sx#30958}(`HIGH`_half, `U`_sx))] -[visit_exp `%`_ishape{shape#5759, Jnn#652}(`%X%`_shape{lanetype#35571, dim#35571, i#127250}(`I16`_lanetype, `%`_dim{i#127257}(8)))] -[visit_exp shape#5759] -[visit_id shape#5759] -[visit_exp Jnn#652] -[visit_id Jnn#652] -[visit_exp (`%X%`_shape{lanetype#35571, dim#35571, i#127250}(`I16`_lanetype, `%`_dim{i#127257}(8)))] -[visit_exp `%X%`_shape{lanetype#35571, dim#35571, i#127250}(`I16`_lanetype, `%`_dim{i#127257}(8))] -[visit_exp lanetype#35571] -[visit_id lanetype#35571] -[visit_exp dim#35571] -[visit_id dim#35571] -[visit_exp i#127250] -[visit_id i#127250] -[visit_exp (`I16`_lanetype, `%`_dim{i#127257}(8))] +[check_dims] I +dims \ I = +[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTMUL`_vextbinop__(`HIGH`_half, `U`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTMUL`_vextbinop__(`HIGH`_half, `U`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#127257}(8)] -[visit_exp i#127257] -[visit_id i#127257] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `%`_ishape{shape#5771, Jnn#656}(`%X%`_shape{lanetype#35583, dim#35583, i#127262}(`I8`_lanetype, `%`_dim{i#127269}(16)))] -[visit_exp shape#5771] -[visit_id shape#5771] -[visit_exp Jnn#656] -[visit_id Jnn#656] -[visit_exp (`%X%`_shape{lanetype#35583, dim#35583, i#127262}(`I8`_lanetype, `%`_dim{i#127269}(16)))] -[visit_exp `%X%`_shape{lanetype#35583, dim#35583, i#127262}(`I8`_lanetype, `%`_dim{i#127269}(16))] -[visit_exp lanetype#35583] -[visit_id lanetype#35583] -[visit_exp dim#35583] -[visit_id dim#35583] -[visit_exp i#127262] -[visit_id i#127262] -[visit_exp (`I8`_lanetype, `%`_dim{i#127269}(16))] +[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] +[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] +[visit_exp (`I8`_lanetype, `%`_dim(16))] [visit_exp `I8`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#127269}(16)] -[visit_exp i#127269] -[visit_id i#127269] +[visit_exp `%`_dim(16)] [visit_exp (16)] [visit_exp 16] -[visit_exp `EXTMUL`_vextbinop__{half#1922, sx#30958}(`HIGH`_half, `U`_sx)] -[visit_exp half#1922] -[visit_id half#1922] -[visit_exp sx#30958] -[visit_id sx#30958] +[visit_exp `EXTMUL`_vextbinop__(`HIGH`_half, `U`_sx)] [visit_exp (`HIGH`_half, `U`_sx)] [visit_exp `HIGH`_half] [visit_exp ()] @@ -106188,294 +82146,138 @@ dims \ I = Jnn#652, Jnn#656, dim#35571, dim#35583, half#1922, i#127250, i#127257 [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I Jnn#660 Jnn#664 dim#35806 dim#35818 half#1956 i#127605 i#127612 i#127617 i#127624 ishape_1#95 ishape_2#95 lanetype#35806 lanetype#35818 shape#5874 shape#5886 sx#30992 -dims \ I = Jnn#660, Jnn#664, dim#35806, dim#35818, half#1956, i#127605, i#127612, i#127617, i#127624, ishape_1#95, ishape_2#95, lanetype#35806, lanetype#35818, shape#5874, shape#5886, sx#30992 -[visit_exp `VEXTBINOP`_instr{ishape_1#95, ishape_2#95}(`%`_ishape{shape#5874, Jnn#660}(`%X%`_shape{lanetype#35806, dim#35806, i#127605}(`I32`_lanetype, `%`_dim{i#127612}(4))), `%`_ishape{shape#5886, Jnn#664}(`%X%`_shape{lanetype#35818, dim#35818, i#127617}(`I16`_lanetype, `%`_dim{i#127624}(8))), `EXTMUL`_vextbinop__{half#1956, sx#30992}(`LOW`_half, `S`_sx))] -[visit_exp ishape_1#95] -[visit_id ishape_1#95] -[visit_exp ishape_2#95] -[visit_id ishape_2#95] -[visit_exp (`%`_ishape{shape#5874, Jnn#660}(`%X%`_shape{lanetype#35806, dim#35806, i#127605}(`I32`_lanetype, `%`_dim{i#127612}(4))), `%`_ishape{shape#5886, Jnn#664}(`%X%`_shape{lanetype#35818, dim#35818, i#127617}(`I16`_lanetype, `%`_dim{i#127624}(8))), `EXTMUL`_vextbinop__{half#1956, sx#30992}(`LOW`_half, `S`_sx))] -[visit_exp `%`_ishape{shape#5874, Jnn#660}(`%X%`_shape{lanetype#35806, dim#35806, i#127605}(`I32`_lanetype, `%`_dim{i#127612}(4)))] -[visit_exp shape#5874] -[visit_id shape#5874] -[visit_exp Jnn#660] -[visit_id Jnn#660] -[visit_exp (`%X%`_shape{lanetype#35806, dim#35806, i#127605}(`I32`_lanetype, `%`_dim{i#127612}(4)))] -[visit_exp `%X%`_shape{lanetype#35806, dim#35806, i#127605}(`I32`_lanetype, `%`_dim{i#127612}(4))] -[visit_exp lanetype#35806] -[visit_id lanetype#35806] -[visit_exp dim#35806] -[visit_id dim#35806] -[visit_exp i#127605] -[visit_id i#127605] -[visit_exp (`I32`_lanetype, `%`_dim{i#127612}(4))] +[check_dims] I +dims \ I = +[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTMUL`_vextbinop__(`LOW`_half, `S`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTMUL`_vextbinop__(`LOW`_half, `S`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#127612}(4)] -[visit_exp i#127612] -[visit_id i#127612] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%`_ishape{shape#5886, Jnn#664}(`%X%`_shape{lanetype#35818, dim#35818, i#127617}(`I16`_lanetype, `%`_dim{i#127624}(8)))] -[visit_exp shape#5886] -[visit_id shape#5886] -[visit_exp Jnn#664] -[visit_id Jnn#664] -[visit_exp (`%X%`_shape{lanetype#35818, dim#35818, i#127617}(`I16`_lanetype, `%`_dim{i#127624}(8)))] -[visit_exp `%X%`_shape{lanetype#35818, dim#35818, i#127617}(`I16`_lanetype, `%`_dim{i#127624}(8))] -[visit_exp lanetype#35818] -[visit_id lanetype#35818] -[visit_exp dim#35818] -[visit_id dim#35818] -[visit_exp i#127617] -[visit_id i#127617] -[visit_exp (`I16`_lanetype, `%`_dim{i#127624}(8))] +[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#127624}(8)] -[visit_exp i#127624] -[visit_id i#127624] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `EXTMUL`_vextbinop__{half#1956, sx#30992}(`LOW`_half, `S`_sx)] -[visit_exp half#1956] -[visit_id half#1956] -[visit_exp sx#30992] -[visit_id sx#30992] +[visit_exp `EXTMUL`_vextbinop__(`LOW`_half, `S`_sx)] [visit_exp (`LOW`_half, `S`_sx)] [visit_exp `LOW`_half] [visit_exp ()] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I Jnn#668 Jnn#672 dim#36041 dim#36053 half#1990 i#127960 i#127967 i#127972 i#127979 ishape_1#97 ishape_2#97 lanetype#36041 lanetype#36053 shape#5989 shape#6001 sx#31026 -dims \ I = Jnn#668, Jnn#672, dim#36041, dim#36053, half#1990, i#127960, i#127967, i#127972, i#127979, ishape_1#97, ishape_2#97, lanetype#36041, lanetype#36053, shape#5989, shape#6001, sx#31026 -[visit_exp `VEXTBINOP`_instr{ishape_1#97, ishape_2#97}(`%`_ishape{shape#5989, Jnn#668}(`%X%`_shape{lanetype#36041, dim#36041, i#127960}(`I32`_lanetype, `%`_dim{i#127967}(4))), `%`_ishape{shape#6001, Jnn#672}(`%X%`_shape{lanetype#36053, dim#36053, i#127972}(`I16`_lanetype, `%`_dim{i#127979}(8))), `EXTMUL`_vextbinop__{half#1990, sx#31026}(`LOW`_half, `U`_sx))] -[visit_exp ishape_1#97] -[visit_id ishape_1#97] -[visit_exp ishape_2#97] -[visit_id ishape_2#97] -[visit_exp (`%`_ishape{shape#5989, Jnn#668}(`%X%`_shape{lanetype#36041, dim#36041, i#127960}(`I32`_lanetype, `%`_dim{i#127967}(4))), `%`_ishape{shape#6001, Jnn#672}(`%X%`_shape{lanetype#36053, dim#36053, i#127972}(`I16`_lanetype, `%`_dim{i#127979}(8))), `EXTMUL`_vextbinop__{half#1990, sx#31026}(`LOW`_half, `U`_sx))] -[visit_exp `%`_ishape{shape#5989, Jnn#668}(`%X%`_shape{lanetype#36041, dim#36041, i#127960}(`I32`_lanetype, `%`_dim{i#127967}(4)))] -[visit_exp shape#5989] -[visit_id shape#5989] -[visit_exp Jnn#668] -[visit_id Jnn#668] -[visit_exp (`%X%`_shape{lanetype#36041, dim#36041, i#127960}(`I32`_lanetype, `%`_dim{i#127967}(4)))] -[visit_exp `%X%`_shape{lanetype#36041, dim#36041, i#127960}(`I32`_lanetype, `%`_dim{i#127967}(4))] -[visit_exp lanetype#36041] -[visit_id lanetype#36041] -[visit_exp dim#36041] -[visit_id dim#36041] -[visit_exp i#127960] -[visit_id i#127960] -[visit_exp (`I32`_lanetype, `%`_dim{i#127967}(4))] +[check_dims] I +dims \ I = +[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTMUL`_vextbinop__(`LOW`_half, `U`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTMUL`_vextbinop__(`LOW`_half, `U`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#127967}(4)] -[visit_exp i#127967] -[visit_id i#127967] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%`_ishape{shape#6001, Jnn#672}(`%X%`_shape{lanetype#36053, dim#36053, i#127972}(`I16`_lanetype, `%`_dim{i#127979}(8)))] -[visit_exp shape#6001] -[visit_id shape#6001] -[visit_exp Jnn#672] -[visit_id Jnn#672] -[visit_exp (`%X%`_shape{lanetype#36053, dim#36053, i#127972}(`I16`_lanetype, `%`_dim{i#127979}(8)))] -[visit_exp `%X%`_shape{lanetype#36053, dim#36053, i#127972}(`I16`_lanetype, `%`_dim{i#127979}(8))] -[visit_exp lanetype#36053] -[visit_id lanetype#36053] -[visit_exp dim#36053] -[visit_id dim#36053] -[visit_exp i#127972] -[visit_id i#127972] -[visit_exp (`I16`_lanetype, `%`_dim{i#127979}(8))] +[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#127979}(8)] -[visit_exp i#127979] -[visit_id i#127979] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `EXTMUL`_vextbinop__{half#1990, sx#31026}(`LOW`_half, `U`_sx)] -[visit_exp half#1990] -[visit_id half#1990] -[visit_exp sx#31026] -[visit_id sx#31026] +[visit_exp `EXTMUL`_vextbinop__(`LOW`_half, `U`_sx)] [visit_exp (`LOW`_half, `U`_sx)] [visit_exp `LOW`_half] [visit_exp ()] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I Jnn#676 Jnn#680 dim#36276 dim#36288 half#2024 i#128315 i#128322 i#128327 i#128334 ishape_1#99 ishape_2#99 lanetype#36276 lanetype#36288 shape#6104 shape#6116 sx#31060 -dims \ I = Jnn#676, Jnn#680, dim#36276, dim#36288, half#2024, i#128315, i#128322, i#128327, i#128334, ishape_1#99, ishape_2#99, lanetype#36276, lanetype#36288, shape#6104, shape#6116, sx#31060 -[visit_exp `VEXTBINOP`_instr{ishape_1#99, ishape_2#99}(`%`_ishape{shape#6104, Jnn#676}(`%X%`_shape{lanetype#36276, dim#36276, i#128315}(`I32`_lanetype, `%`_dim{i#128322}(4))), `%`_ishape{shape#6116, Jnn#680}(`%X%`_shape{lanetype#36288, dim#36288, i#128327}(`I16`_lanetype, `%`_dim{i#128334}(8))), `EXTMUL`_vextbinop__{half#2024, sx#31060}(`HIGH`_half, `S`_sx))] -[visit_exp ishape_1#99] -[visit_id ishape_1#99] -[visit_exp ishape_2#99] -[visit_id ishape_2#99] -[visit_exp (`%`_ishape{shape#6104, Jnn#676}(`%X%`_shape{lanetype#36276, dim#36276, i#128315}(`I32`_lanetype, `%`_dim{i#128322}(4))), `%`_ishape{shape#6116, Jnn#680}(`%X%`_shape{lanetype#36288, dim#36288, i#128327}(`I16`_lanetype, `%`_dim{i#128334}(8))), `EXTMUL`_vextbinop__{half#2024, sx#31060}(`HIGH`_half, `S`_sx))] -[visit_exp `%`_ishape{shape#6104, Jnn#676}(`%X%`_shape{lanetype#36276, dim#36276, i#128315}(`I32`_lanetype, `%`_dim{i#128322}(4)))] -[visit_exp shape#6104] -[visit_id shape#6104] -[visit_exp Jnn#676] -[visit_id Jnn#676] -[visit_exp (`%X%`_shape{lanetype#36276, dim#36276, i#128315}(`I32`_lanetype, `%`_dim{i#128322}(4)))] -[visit_exp `%X%`_shape{lanetype#36276, dim#36276, i#128315}(`I32`_lanetype, `%`_dim{i#128322}(4))] -[visit_exp lanetype#36276] -[visit_id lanetype#36276] -[visit_exp dim#36276] -[visit_id dim#36276] -[visit_exp i#128315] -[visit_id i#128315] -[visit_exp (`I32`_lanetype, `%`_dim{i#128322}(4))] +[check_dims] I +dims \ I = +[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTMUL`_vextbinop__(`HIGH`_half, `S`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTMUL`_vextbinop__(`HIGH`_half, `S`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#128322}(4)] -[visit_exp i#128322] -[visit_id i#128322] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%`_ishape{shape#6116, Jnn#680}(`%X%`_shape{lanetype#36288, dim#36288, i#128327}(`I16`_lanetype, `%`_dim{i#128334}(8)))] -[visit_exp shape#6116] -[visit_id shape#6116] -[visit_exp Jnn#680] -[visit_id Jnn#680] -[visit_exp (`%X%`_shape{lanetype#36288, dim#36288, i#128327}(`I16`_lanetype, `%`_dim{i#128334}(8)))] -[visit_exp `%X%`_shape{lanetype#36288, dim#36288, i#128327}(`I16`_lanetype, `%`_dim{i#128334}(8))] -[visit_exp lanetype#36288] -[visit_id lanetype#36288] -[visit_exp dim#36288] -[visit_id dim#36288] -[visit_exp i#128327] -[visit_id i#128327] -[visit_exp (`I16`_lanetype, `%`_dim{i#128334}(8))] +[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#128334}(8)] -[visit_exp i#128334] -[visit_id i#128334] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `EXTMUL`_vextbinop__{half#2024, sx#31060}(`HIGH`_half, `S`_sx)] -[visit_exp half#2024] -[visit_id half#2024] -[visit_exp sx#31060] -[visit_id sx#31060] +[visit_exp `EXTMUL`_vextbinop__(`HIGH`_half, `S`_sx)] [visit_exp (`HIGH`_half, `S`_sx)] [visit_exp `HIGH`_half] [visit_exp ()] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I Jnn#684 Jnn#688 dim#36511 dim#36523 half#2058 i#128670 i#128677 i#128682 i#128689 ishape_1#101 ishape_2#101 lanetype#36511 lanetype#36523 shape#6219 shape#6231 sx#31094 -dims \ I = Jnn#684, Jnn#688, dim#36511, dim#36523, half#2058, i#128670, i#128677, i#128682, i#128689, ishape_1#101, ishape_2#101, lanetype#36511, lanetype#36523, shape#6219, shape#6231, sx#31094 -[visit_exp `VEXTBINOP`_instr{ishape_1#101, ishape_2#101}(`%`_ishape{shape#6219, Jnn#684}(`%X%`_shape{lanetype#36511, dim#36511, i#128670}(`I32`_lanetype, `%`_dim{i#128677}(4))), `%`_ishape{shape#6231, Jnn#688}(`%X%`_shape{lanetype#36523, dim#36523, i#128682}(`I16`_lanetype, `%`_dim{i#128689}(8))), `EXTMUL`_vextbinop__{half#2058, sx#31094}(`HIGH`_half, `U`_sx))] -[visit_exp ishape_1#101] -[visit_id ishape_1#101] -[visit_exp ishape_2#101] -[visit_id ishape_2#101] -[visit_exp (`%`_ishape{shape#6219, Jnn#684}(`%X%`_shape{lanetype#36511, dim#36511, i#128670}(`I32`_lanetype, `%`_dim{i#128677}(4))), `%`_ishape{shape#6231, Jnn#688}(`%X%`_shape{lanetype#36523, dim#36523, i#128682}(`I16`_lanetype, `%`_dim{i#128689}(8))), `EXTMUL`_vextbinop__{half#2058, sx#31094}(`HIGH`_half, `U`_sx))] -[visit_exp `%`_ishape{shape#6219, Jnn#684}(`%X%`_shape{lanetype#36511, dim#36511, i#128670}(`I32`_lanetype, `%`_dim{i#128677}(4)))] -[visit_exp shape#6219] -[visit_id shape#6219] -[visit_exp Jnn#684] -[visit_id Jnn#684] -[visit_exp (`%X%`_shape{lanetype#36511, dim#36511, i#128670}(`I32`_lanetype, `%`_dim{i#128677}(4)))] -[visit_exp `%X%`_shape{lanetype#36511, dim#36511, i#128670}(`I32`_lanetype, `%`_dim{i#128677}(4))] -[visit_exp lanetype#36511] -[visit_id lanetype#36511] -[visit_exp dim#36511] -[visit_id dim#36511] -[visit_exp i#128670] -[visit_id i#128670] -[visit_exp (`I32`_lanetype, `%`_dim{i#128677}(4))] +[check_dims] I +dims \ I = +[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTMUL`_vextbinop__(`HIGH`_half, `U`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTMUL`_vextbinop__(`HIGH`_half, `U`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#128677}(4)] -[visit_exp i#128677] -[visit_id i#128677] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%`_ishape{shape#6231, Jnn#688}(`%X%`_shape{lanetype#36523, dim#36523, i#128682}(`I16`_lanetype, `%`_dim{i#128689}(8)))] -[visit_exp shape#6231] -[visit_id shape#6231] -[visit_exp Jnn#688] -[visit_id Jnn#688] -[visit_exp (`%X%`_shape{lanetype#36523, dim#36523, i#128682}(`I16`_lanetype, `%`_dim{i#128689}(8)))] -[visit_exp `%X%`_shape{lanetype#36523, dim#36523, i#128682}(`I16`_lanetype, `%`_dim{i#128689}(8))] -[visit_exp lanetype#36523] -[visit_id lanetype#36523] -[visit_exp dim#36523] -[visit_id dim#36523] -[visit_exp i#128682] -[visit_id i#128682] -[visit_exp (`I16`_lanetype, `%`_dim{i#128689}(8))] +[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#128689}(8)] -[visit_exp i#128689] -[visit_id i#128689] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] -[visit_exp `EXTMUL`_vextbinop__{half#2058, sx#31094}(`HIGH`_half, `U`_sx)] -[visit_exp half#2058] -[visit_id half#2058] -[visit_exp sx#31094] -[visit_id sx#31094] +[visit_exp `EXTMUL`_vextbinop__(`HIGH`_half, `U`_sx)] [visit_exp (`HIGH`_half, `U`_sx)] [visit_exp `HIGH`_half] [visit_exp ()] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I Jnn#692 Jnn#696 dim#36746 dim#36758 i#129025 i#129032 i#129037 i#129044 ishape_1#103 ishape_2#103 lanetype#36746 lanetype#36758 shape#6334 shape#6346 -dims \ I = Jnn#692, Jnn#696, dim#36746, dim#36758, i#129025, i#129032, i#129037, i#129044, ishape_1#103, ishape_2#103, lanetype#36746, lanetype#36758, shape#6334, shape#6346 -[visit_exp `VEXTBINOP`_instr{ishape_1#103, ishape_2#103}(`%`_ishape{shape#6334, Jnn#692}(`%X%`_shape{lanetype#36746, dim#36746, i#129025}(`I32`_lanetype, `%`_dim{i#129032}(4))), `%`_ishape{shape#6346, Jnn#696}(`%X%`_shape{lanetype#36758, dim#36758, i#129037}(`I16`_lanetype, `%`_dim{i#129044}(8))), `DOTS`_vextbinop__)] -[visit_exp ishape_1#103] -[visit_id ishape_1#103] -[visit_exp ishape_2#103] -[visit_id ishape_2#103] -[visit_exp (`%`_ishape{shape#6334, Jnn#692}(`%X%`_shape{lanetype#36746, dim#36746, i#129025}(`I32`_lanetype, `%`_dim{i#129032}(4))), `%`_ishape{shape#6346, Jnn#696}(`%X%`_shape{lanetype#36758, dim#36758, i#129037}(`I16`_lanetype, `%`_dim{i#129044}(8))), `DOTS`_vextbinop__)] -[visit_exp `%`_ishape{shape#6334, Jnn#692}(`%X%`_shape{lanetype#36746, dim#36746, i#129025}(`I32`_lanetype, `%`_dim{i#129032}(4)))] -[visit_exp shape#6334] -[visit_id shape#6334] -[visit_exp Jnn#692] -[visit_id Jnn#692] -[visit_exp (`%X%`_shape{lanetype#36746, dim#36746, i#129025}(`I32`_lanetype, `%`_dim{i#129032}(4)))] -[visit_exp `%X%`_shape{lanetype#36746, dim#36746, i#129025}(`I32`_lanetype, `%`_dim{i#129032}(4))] -[visit_exp lanetype#36746] -[visit_id lanetype#36746] -[visit_exp dim#36746] -[visit_id dim#36746] -[visit_exp i#129025] -[visit_id i#129025] -[visit_exp (`I32`_lanetype, `%`_dim{i#129032}(4))] +[check_dims] I +dims \ I = +[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `DOTS`_vextbinop__)] +[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `DOTS`_vextbinop__)] +[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#129032}(4)] -[visit_exp i#129032] -[visit_id i#129032] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `%`_ishape{shape#6346, Jnn#696}(`%X%`_shape{lanetype#36758, dim#36758, i#129037}(`I16`_lanetype, `%`_dim{i#129044}(8)))] -[visit_exp shape#6346] -[visit_id shape#6346] -[visit_exp Jnn#696] -[visit_id Jnn#696] -[visit_exp (`%X%`_shape{lanetype#36758, dim#36758, i#129037}(`I16`_lanetype, `%`_dim{i#129044}(8)))] -[visit_exp `%X%`_shape{lanetype#36758, dim#36758, i#129037}(`I16`_lanetype, `%`_dim{i#129044}(8))] -[visit_exp lanetype#36758] -[visit_id lanetype#36758] -[visit_exp dim#36758] -[visit_id dim#36758] -[visit_exp i#129037] -[visit_id i#129037] -[visit_exp (`I16`_lanetype, `%`_dim{i#129044}(8))] +[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] +[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] +[visit_exp (`I16`_lanetype, `%`_dim(8))] [visit_exp `I16`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#129044}(8)] -[visit_exp i#129044] -[visit_id i#129044] +[visit_exp `%`_dim(8)] [visit_exp (8)] [visit_exp 8] [visit_exp `DOTS`_vextbinop__] @@ -106483,241 +82285,113 @@ dims \ I = Jnn#692, Jnn#696, dim#36746, dim#36758, i#129025, i#129032, i#129037, [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I Jnn#700 Jnn#704 dim#36981 dim#36993 half#2122 i#129380 i#129387 i#129392 i#129399 ishape_1#105 ishape_2#105 lanetype#36981 lanetype#36993 shape#6449 shape#6461 sx#31158 -dims \ I = Jnn#700, Jnn#704, dim#36981, dim#36993, half#2122, i#129380, i#129387, i#129392, i#129399, ishape_1#105, ishape_2#105, lanetype#36981, lanetype#36993, shape#6449, shape#6461, sx#31158 -[visit_exp `VEXTBINOP`_instr{ishape_1#105, ishape_2#105}(`%`_ishape{shape#6449, Jnn#700}(`%X%`_shape{lanetype#36981, dim#36981, i#129380}(`I64`_lanetype, `%`_dim{i#129387}(2))), `%`_ishape{shape#6461, Jnn#704}(`%X%`_shape{lanetype#36993, dim#36993, i#129392}(`I32`_lanetype, `%`_dim{i#129399}(4))), `EXTMUL`_vextbinop__{half#2122, sx#31158}(`LOW`_half, `S`_sx))] -[visit_exp ishape_1#105] -[visit_id ishape_1#105] -[visit_exp ishape_2#105] -[visit_id ishape_2#105] -[visit_exp (`%`_ishape{shape#6449, Jnn#700}(`%X%`_shape{lanetype#36981, dim#36981, i#129380}(`I64`_lanetype, `%`_dim{i#129387}(2))), `%`_ishape{shape#6461, Jnn#704}(`%X%`_shape{lanetype#36993, dim#36993, i#129392}(`I32`_lanetype, `%`_dim{i#129399}(4))), `EXTMUL`_vextbinop__{half#2122, sx#31158}(`LOW`_half, `S`_sx))] -[visit_exp `%`_ishape{shape#6449, Jnn#700}(`%X%`_shape{lanetype#36981, dim#36981, i#129380}(`I64`_lanetype, `%`_dim{i#129387}(2)))] -[visit_exp shape#6449] -[visit_id shape#6449] -[visit_exp Jnn#700] -[visit_id Jnn#700] -[visit_exp (`%X%`_shape{lanetype#36981, dim#36981, i#129380}(`I64`_lanetype, `%`_dim{i#129387}(2)))] -[visit_exp `%X%`_shape{lanetype#36981, dim#36981, i#129380}(`I64`_lanetype, `%`_dim{i#129387}(2))] -[visit_exp lanetype#36981] -[visit_id lanetype#36981] -[visit_exp dim#36981] -[visit_id dim#36981] -[visit_exp i#129380] -[visit_id i#129380] -[visit_exp (`I64`_lanetype, `%`_dim{i#129387}(2))] +[check_dims] I +dims \ I = +[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `EXTMUL`_vextbinop__(`LOW`_half, `S`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `EXTMUL`_vextbinop__(`LOW`_half, `S`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#129387}(2)] -[visit_exp i#129387] -[visit_id i#129387] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `%`_ishape{shape#6461, Jnn#704}(`%X%`_shape{lanetype#36993, dim#36993, i#129392}(`I32`_lanetype, `%`_dim{i#129399}(4)))] -[visit_exp shape#6461] -[visit_id shape#6461] -[visit_exp Jnn#704] -[visit_id Jnn#704] -[visit_exp (`%X%`_shape{lanetype#36993, dim#36993, i#129392}(`I32`_lanetype, `%`_dim{i#129399}(4)))] -[visit_exp `%X%`_shape{lanetype#36993, dim#36993, i#129392}(`I32`_lanetype, `%`_dim{i#129399}(4))] -[visit_exp lanetype#36993] -[visit_id lanetype#36993] -[visit_exp dim#36993] -[visit_id dim#36993] -[visit_exp i#129392] -[visit_id i#129392] -[visit_exp (`I32`_lanetype, `%`_dim{i#129399}(4))] +[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#129399}(4)] -[visit_exp i#129399] -[visit_id i#129399] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `EXTMUL`_vextbinop__{half#2122, sx#31158}(`LOW`_half, `S`_sx)] -[visit_exp half#2122] -[visit_id half#2122] -[visit_exp sx#31158] -[visit_id sx#31158] +[visit_exp `EXTMUL`_vextbinop__(`LOW`_half, `S`_sx)] [visit_exp (`LOW`_half, `S`_sx)] [visit_exp `LOW`_half] [visit_exp ()] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I Jnn#708 Jnn#712 dim#37216 dim#37228 half#2156 i#129735 i#129742 i#129747 i#129754 ishape_1#107 ishape_2#107 lanetype#37216 lanetype#37228 shape#6564 shape#6576 sx#31192 -dims \ I = Jnn#708, Jnn#712, dim#37216, dim#37228, half#2156, i#129735, i#129742, i#129747, i#129754, ishape_1#107, ishape_2#107, lanetype#37216, lanetype#37228, shape#6564, shape#6576, sx#31192 -[visit_exp `VEXTBINOP`_instr{ishape_1#107, ishape_2#107}(`%`_ishape{shape#6564, Jnn#708}(`%X%`_shape{lanetype#37216, dim#37216, i#129735}(`I64`_lanetype, `%`_dim{i#129742}(2))), `%`_ishape{shape#6576, Jnn#712}(`%X%`_shape{lanetype#37228, dim#37228, i#129747}(`I32`_lanetype, `%`_dim{i#129754}(4))), `EXTMUL`_vextbinop__{half#2156, sx#31192}(`LOW`_half, `U`_sx))] -[visit_exp ishape_1#107] -[visit_id ishape_1#107] -[visit_exp ishape_2#107] -[visit_id ishape_2#107] -[visit_exp (`%`_ishape{shape#6564, Jnn#708}(`%X%`_shape{lanetype#37216, dim#37216, i#129735}(`I64`_lanetype, `%`_dim{i#129742}(2))), `%`_ishape{shape#6576, Jnn#712}(`%X%`_shape{lanetype#37228, dim#37228, i#129747}(`I32`_lanetype, `%`_dim{i#129754}(4))), `EXTMUL`_vextbinop__{half#2156, sx#31192}(`LOW`_half, `U`_sx))] -[visit_exp `%`_ishape{shape#6564, Jnn#708}(`%X%`_shape{lanetype#37216, dim#37216, i#129735}(`I64`_lanetype, `%`_dim{i#129742}(2)))] -[visit_exp shape#6564] -[visit_id shape#6564] -[visit_exp Jnn#708] -[visit_id Jnn#708] -[visit_exp (`%X%`_shape{lanetype#37216, dim#37216, i#129735}(`I64`_lanetype, `%`_dim{i#129742}(2)))] -[visit_exp `%X%`_shape{lanetype#37216, dim#37216, i#129735}(`I64`_lanetype, `%`_dim{i#129742}(2))] -[visit_exp lanetype#37216] -[visit_id lanetype#37216] -[visit_exp dim#37216] -[visit_id dim#37216] -[visit_exp i#129735] -[visit_id i#129735] -[visit_exp (`I64`_lanetype, `%`_dim{i#129742}(2))] +[check_dims] I +dims \ I = +[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `EXTMUL`_vextbinop__(`LOW`_half, `U`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `EXTMUL`_vextbinop__(`LOW`_half, `U`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#129742}(2)] -[visit_exp i#129742] -[visit_id i#129742] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `%`_ishape{shape#6576, Jnn#712}(`%X%`_shape{lanetype#37228, dim#37228, i#129747}(`I32`_lanetype, `%`_dim{i#129754}(4)))] -[visit_exp shape#6576] -[visit_id shape#6576] -[visit_exp Jnn#712] -[visit_id Jnn#712] -[visit_exp (`%X%`_shape{lanetype#37228, dim#37228, i#129747}(`I32`_lanetype, `%`_dim{i#129754}(4)))] -[visit_exp `%X%`_shape{lanetype#37228, dim#37228, i#129747}(`I32`_lanetype, `%`_dim{i#129754}(4))] -[visit_exp lanetype#37228] -[visit_id lanetype#37228] -[visit_exp dim#37228] -[visit_id dim#37228] -[visit_exp i#129747] -[visit_id i#129747] -[visit_exp (`I32`_lanetype, `%`_dim{i#129754}(4))] +[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#129754}(4)] -[visit_exp i#129754] -[visit_id i#129754] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `EXTMUL`_vextbinop__{half#2156, sx#31192}(`LOW`_half, `U`_sx)] -[visit_exp half#2156] -[visit_id half#2156] -[visit_exp sx#31192] -[visit_id sx#31192] +[visit_exp `EXTMUL`_vextbinop__(`LOW`_half, `U`_sx)] [visit_exp (`LOW`_half, `U`_sx)] [visit_exp `LOW`_half] [visit_exp ()] [visit_exp `U`_sx] [visit_exp ()] -[check_dims] I Jnn#716 Jnn#720 dim#37451 dim#37463 half#2190 i#130090 i#130097 i#130102 i#130109 ishape_1#109 ishape_2#109 lanetype#37451 lanetype#37463 shape#6679 shape#6691 sx#31226 -dims \ I = Jnn#716, Jnn#720, dim#37451, dim#37463, half#2190, i#130090, i#130097, i#130102, i#130109, ishape_1#109, ishape_2#109, lanetype#37451, lanetype#37463, shape#6679, shape#6691, sx#31226 -[visit_exp `VEXTBINOP`_instr{ishape_1#109, ishape_2#109}(`%`_ishape{shape#6679, Jnn#716}(`%X%`_shape{lanetype#37451, dim#37451, i#130090}(`I64`_lanetype, `%`_dim{i#130097}(2))), `%`_ishape{shape#6691, Jnn#720}(`%X%`_shape{lanetype#37463, dim#37463, i#130102}(`I32`_lanetype, `%`_dim{i#130109}(4))), `EXTMUL`_vextbinop__{half#2190, sx#31226}(`HIGH`_half, `S`_sx))] -[visit_exp ishape_1#109] -[visit_id ishape_1#109] -[visit_exp ishape_2#109] -[visit_id ishape_2#109] -[visit_exp (`%`_ishape{shape#6679, Jnn#716}(`%X%`_shape{lanetype#37451, dim#37451, i#130090}(`I64`_lanetype, `%`_dim{i#130097}(2))), `%`_ishape{shape#6691, Jnn#720}(`%X%`_shape{lanetype#37463, dim#37463, i#130102}(`I32`_lanetype, `%`_dim{i#130109}(4))), `EXTMUL`_vextbinop__{half#2190, sx#31226}(`HIGH`_half, `S`_sx))] -[visit_exp `%`_ishape{shape#6679, Jnn#716}(`%X%`_shape{lanetype#37451, dim#37451, i#130090}(`I64`_lanetype, `%`_dim{i#130097}(2)))] -[visit_exp shape#6679] -[visit_id shape#6679] -[visit_exp Jnn#716] -[visit_id Jnn#716] -[visit_exp (`%X%`_shape{lanetype#37451, dim#37451, i#130090}(`I64`_lanetype, `%`_dim{i#130097}(2)))] -[visit_exp `%X%`_shape{lanetype#37451, dim#37451, i#130090}(`I64`_lanetype, `%`_dim{i#130097}(2))] -[visit_exp lanetype#37451] -[visit_id lanetype#37451] -[visit_exp dim#37451] -[visit_id dim#37451] -[visit_exp i#130090] -[visit_id i#130090] -[visit_exp (`I64`_lanetype, `%`_dim{i#130097}(2))] +[check_dims] I +dims \ I = +[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `EXTMUL`_vextbinop__(`HIGH`_half, `S`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `EXTMUL`_vextbinop__(`HIGH`_half, `S`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#130097}(2)] -[visit_exp i#130097] -[visit_id i#130097] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `%`_ishape{shape#6691, Jnn#720}(`%X%`_shape{lanetype#37463, dim#37463, i#130102}(`I32`_lanetype, `%`_dim{i#130109}(4)))] -[visit_exp shape#6691] -[visit_id shape#6691] -[visit_exp Jnn#720] -[visit_id Jnn#720] -[visit_exp (`%X%`_shape{lanetype#37463, dim#37463, i#130102}(`I32`_lanetype, `%`_dim{i#130109}(4)))] -[visit_exp `%X%`_shape{lanetype#37463, dim#37463, i#130102}(`I32`_lanetype, `%`_dim{i#130109}(4))] -[visit_exp lanetype#37463] -[visit_id lanetype#37463] -[visit_exp dim#37463] -[visit_id dim#37463] -[visit_exp i#130102] -[visit_id i#130102] -[visit_exp (`I32`_lanetype, `%`_dim{i#130109}(4))] +[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#130109}(4)] -[visit_exp i#130109] -[visit_id i#130109] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `EXTMUL`_vextbinop__{half#2190, sx#31226}(`HIGH`_half, `S`_sx)] -[visit_exp half#2190] -[visit_id half#2190] -[visit_exp sx#31226] -[visit_id sx#31226] +[visit_exp `EXTMUL`_vextbinop__(`HIGH`_half, `S`_sx)] [visit_exp (`HIGH`_half, `S`_sx)] [visit_exp `HIGH`_half] [visit_exp ()] [visit_exp `S`_sx] [visit_exp ()] -[check_dims] I Jnn#724 Jnn#728 dim#37686 dim#37698 half#2224 i#130445 i#130452 i#130457 i#130464 ishape_1#111 ishape_2#111 lanetype#37686 lanetype#37698 shape#6794 shape#6806 sx#31260 -dims \ I = Jnn#724, Jnn#728, dim#37686, dim#37698, half#2224, i#130445, i#130452, i#130457, i#130464, ishape_1#111, ishape_2#111, lanetype#37686, lanetype#37698, shape#6794, shape#6806, sx#31260 -[visit_exp `VEXTBINOP`_instr{ishape_1#111, ishape_2#111}(`%`_ishape{shape#6794, Jnn#724}(`%X%`_shape{lanetype#37686, dim#37686, i#130445}(`I64`_lanetype, `%`_dim{i#130452}(2))), `%`_ishape{shape#6806, Jnn#728}(`%X%`_shape{lanetype#37698, dim#37698, i#130457}(`I32`_lanetype, `%`_dim{i#130464}(4))), `EXTMUL`_vextbinop__{half#2224, sx#31260}(`HIGH`_half, `U`_sx))] -[visit_exp ishape_1#111] -[visit_id ishape_1#111] -[visit_exp ishape_2#111] -[visit_id ishape_2#111] -[visit_exp (`%`_ishape{shape#6794, Jnn#724}(`%X%`_shape{lanetype#37686, dim#37686, i#130445}(`I64`_lanetype, `%`_dim{i#130452}(2))), `%`_ishape{shape#6806, Jnn#728}(`%X%`_shape{lanetype#37698, dim#37698, i#130457}(`I32`_lanetype, `%`_dim{i#130464}(4))), `EXTMUL`_vextbinop__{half#2224, sx#31260}(`HIGH`_half, `U`_sx))] -[visit_exp `%`_ishape{shape#6794, Jnn#724}(`%X%`_shape{lanetype#37686, dim#37686, i#130445}(`I64`_lanetype, `%`_dim{i#130452}(2)))] -[visit_exp shape#6794] -[visit_id shape#6794] -[visit_exp Jnn#724] -[visit_id Jnn#724] -[visit_exp (`%X%`_shape{lanetype#37686, dim#37686, i#130445}(`I64`_lanetype, `%`_dim{i#130452}(2)))] -[visit_exp `%X%`_shape{lanetype#37686, dim#37686, i#130445}(`I64`_lanetype, `%`_dim{i#130452}(2))] -[visit_exp lanetype#37686] -[visit_id lanetype#37686] -[visit_exp dim#37686] -[visit_id dim#37686] -[visit_exp i#130445] -[visit_id i#130445] -[visit_exp (`I64`_lanetype, `%`_dim{i#130452}(2))] +[check_dims] I +dims \ I = +[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `EXTMUL`_vextbinop__(`HIGH`_half, `U`_sx))] +[visit_exp (`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `EXTMUL`_vextbinop__(`HIGH`_half, `U`_sx))] +[visit_exp `%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] +[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] +[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] +[visit_exp (`I64`_lanetype, `%`_dim(2))] [visit_exp `I64`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#130452}(2)] -[visit_exp i#130452] -[visit_id i#130452] +[visit_exp `%`_dim(2)] [visit_exp (2)] [visit_exp 2] -[visit_exp `%`_ishape{shape#6806, Jnn#728}(`%X%`_shape{lanetype#37698, dim#37698, i#130457}(`I32`_lanetype, `%`_dim{i#130464}(4)))] -[visit_exp shape#6806] -[visit_id shape#6806] -[visit_exp Jnn#728] -[visit_id Jnn#728] -[visit_exp (`%X%`_shape{lanetype#37698, dim#37698, i#130457}(`I32`_lanetype, `%`_dim{i#130464}(4)))] -[visit_exp `%X%`_shape{lanetype#37698, dim#37698, i#130457}(`I32`_lanetype, `%`_dim{i#130464}(4))] -[visit_exp lanetype#37698] -[visit_id lanetype#37698] -[visit_exp dim#37698] -[visit_id dim#37698] -[visit_exp i#130457] -[visit_id i#130457] -[visit_exp (`I32`_lanetype, `%`_dim{i#130464}(4))] +[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] +[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] +[visit_exp (`I32`_lanetype, `%`_dim(4))] [visit_exp `I32`_lanetype] [visit_exp ()] -[visit_exp `%`_dim{i#130464}(4)] -[visit_exp i#130464] -[visit_id i#130464] +[visit_exp `%`_dim(4)] [visit_exp (4)] [visit_exp 4] -[visit_exp `EXTMUL`_vextbinop__{half#2224, sx#31260}(`HIGH`_half, `U`_sx)] -[visit_exp half#2224] -[visit_id half#2224] -[visit_exp sx#31260] -[visit_id sx#31260] +[visit_exp `EXTMUL`_vextbinop__(`HIGH`_half, `U`_sx)] [visit_exp (`HIGH`_half, `U`_sx)] [visit_exp `HIGH`_half] [visit_exp ()] @@ -106752,12 +82426,10 @@ dims \ I = in [visit_id I] not free ps' = (I : I) [check_dims] I _ -[check_dims] I I' I'' X*#13622 deftype?*#23 i n n#1569 name?*#609 name?*#610 name?*#611 name?*#612 name?*#613 name?*#614 name?*#615 name?*#616 name?*#617 name?*#618 name?**#32 qt rectype#1855 rectype#1885 st -dims \ I = I', I'', X*#13622, deftype?*#23, i, n, n#1569, name?*#609, name?*#610, name?*#611, name?*#612, name?*#613, name?*#614, name?*#615, name?*#616, name?*#617, name?*#618, name?**#32, qt, rectype#1855, rectype#1885, st -[visit_exp (`TYPE`_type{rectype#1855}(qt), I' +++ I'')] -[visit_exp `TYPE`_type{rectype#1855}(qt)] -[visit_exp rectype#1855] -[visit_id rectype#1855] +[check_dims] I I' I'' i n qt st +dims \ I = I', I'', i, n, qt, st +[visit_exp (`TYPE`_type(qt), I' +++ I'')] +[visit_exp `TYPE`_type(qt)] [visit_exp (qt)] [visit_exp qt] [visit_id qt] @@ -106774,14 +82446,12 @@ dims \ I = I', I'', X*#13622, deftype?*#23, i, n, n#1569, name?*#609, name?*#610 [visit_exp I] [visit_id I] not free [visit_id I] no dims -[visit_exp (qt = `REC`_rectype(`%`_list{`X*#13622`}(st^n{st <- `st*`})))] +[visit_exp (qt = `REC`_rectype(`%`_list(st^n{st <- `st*`})))] [visit_exp qt] [visit_id qt] not free -[visit_exp `REC`_rectype(`%`_list{`X*#13622`}(st^n{st <- `st*`}))] -[visit_exp (`%`_list{`X*#13622`}(st^n{st <- `st*`}))] -[visit_exp `%`_list{`X*#13622`}(st^n{st <- `st*`})] -[visit_exp `X*#13622`] -[visit_id X*#13622] +[visit_exp `REC`_rectype(`%`_list(st^n{st <- `st*`}))] +[visit_exp (`%`_list(st^n{st <- `st*`}))] +[visit_exp `%`_list(st^n{st <- `st*`})] [visit_exp (st^n{st <- `st*`})] [visit_exp st^n{st <- `st*`}] [scope_enter st] @@ -106794,101 +82464,57 @@ dims \ I = I', I'', X*#13622, deftype?*#23, i, n, n#1569, name?*#609, name?*#610 [visit_exp `st*`] [visit_id st*] no dims [visit_id st*] -[visit_exp (I'' = {`TYPES`{`name?*#609`} [], `TAGS`{`name?*#610`} [], `GLOBALS`{`name?*#611`} [], `MEMS`{`name?*#612`} [], `TABLES`{`name?*#613`} [], `FUNCS`{`name?*#614`} [], `DATAS`{`name?*#615`} [], `ELEMS`{`name?*#616`} [], `LOCALS`{`name?*#617`} [], `LABELS`{`name?*#618`} [], `FIELDS`{`name?**#32`} [], `TYPEDEFS`{`deftype?*#23`} ?(`_DEF`_deftype{rectype#1885, n#1569}(qt, i))^(i @@ -108749,11 +84037,9 @@ dims \ I = [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I char*#1519 char*#1531 id id' name?*#754 -[visit_exp ?(`%`_name{`char*#1519`}(lift(id?{id <- `id?`})))] -[visit_exp `%`_name{`char*#1519`}(lift(id?{id <- `id?`}))] -[visit_exp `char*#1519`] -[visit_id char*#1519] +[check_dims] I id id' +[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] +[visit_exp `%`_name(lift(id?{id <- `id?`}))] [visit_exp (lift(id?{id <- `id?`}))] [visit_exp lift(id?{id <- `id?`})] [visit_exp id?{id <- `id?`}] @@ -108773,11 +84059,9 @@ ps' = (I : I) [visit_exp I] [visit_id I] not free [visit_id I] no dims -[visit_exp ((`%`_name{`char*#1531`}(lift(id?{id <- `id?`})) = id') \/ ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`TAGS`_I{`name?*#754`})))] -[visit_exp (`%`_name{`char*#1531`}(lift(id?{id <- `id?`})) = id')] -[visit_exp `%`_name{`char*#1531`}(lift(id?{id <- `id?`}))] -[visit_exp `char*#1531`] -[visit_id char*#1531] +[visit_exp ((`%`_name(lift(id?{id <- `id?`})) = id') \/ ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`TAGS`_I)))] +[visit_exp (`%`_name(lift(id?{id <- `id?`})) = id')] +[visit_exp `%`_name(lift(id?{id <- `id?`}))] [visit_exp (lift(id?{id <- `id?`}))] [visit_exp lift(id?{id <- `id?`})] [visit_exp id?{id <- `id?`}] @@ -108791,7 +84075,7 @@ ps' = (I : I) [visit_id id?] no dims [visit_exp id'] [visit_id id'] not free -[visit_exp ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`TAGS`_I{`name?*#754`}))] +[visit_exp ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`TAGS`_I))] [visit_exp (id?{id <- `id?`} = ?())] [visit_exp id?{id <- `id?`}] [scope_enter id] @@ -108803,25 +84087,21 @@ ps' = (I : I) [visit_id id?] not free [visit_id id?] no dims [visit_exp ?()] -[visit_exp ~ (?(id') <- I.`TAGS`_I{`name?*#754`})] -[visit_exp (?(id') <- I.`TAGS`_I{`name?*#754`})] +[visit_exp ~ (?(id') <- I.`TAGS`_I)] +[visit_exp (?(id') <- I.`TAGS`_I)] [visit_exp ?(id')] [visit_exp id'] [visit_id id'] not free -[visit_exp I.`TAGS`_I{`name?*#754`}] +[visit_exp I.`TAGS`_I] [visit_exp I] [visit_id I] not free [visit_id I] no dims -[visit_exp `name?*#754`] -[visit_id name?*#754] [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I char*#1553 char*#1565 id id' name?*#760 -[visit_exp ?(`%`_name{`char*#1553`}(lift(id?{id <- `id?`})))] -[visit_exp `%`_name{`char*#1553`}(lift(id?{id <- `id?`}))] -[visit_exp `char*#1553`] -[visit_id char*#1553] +[check_dims] I id id' +[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] +[visit_exp `%`_name(lift(id?{id <- `id?`}))] [visit_exp (lift(id?{id <- `id?`}))] [visit_exp lift(id?{id <- `id?`})] [visit_exp id?{id <- `id?`}] @@ -108841,11 +84121,9 @@ ps' = (I : I) [visit_exp I] [visit_id I] not free [visit_id I] no dims -[visit_exp ((`%`_name{`char*#1565`}(lift(id?{id <- `id?`})) = id') \/ ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`GLOBALS`_I{`name?*#760`})))] -[visit_exp (`%`_name{`char*#1565`}(lift(id?{id <- `id?`})) = id')] -[visit_exp `%`_name{`char*#1565`}(lift(id?{id <- `id?`}))] -[visit_exp `char*#1565`] -[visit_id char*#1565] +[visit_exp ((`%`_name(lift(id?{id <- `id?`})) = id') \/ ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`GLOBALS`_I)))] +[visit_exp (`%`_name(lift(id?{id <- `id?`})) = id')] +[visit_exp `%`_name(lift(id?{id <- `id?`}))] [visit_exp (lift(id?{id <- `id?`}))] [visit_exp lift(id?{id <- `id?`})] [visit_exp id?{id <- `id?`}] @@ -108859,7 +84137,7 @@ ps' = (I : I) [visit_id id?] no dims [visit_exp id'] [visit_id id'] not free -[visit_exp ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`GLOBALS`_I{`name?*#760`}))] +[visit_exp ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`GLOBALS`_I))] [visit_exp (id?{id <- `id?`} = ?())] [visit_exp id?{id <- `id?`}] [scope_enter id] @@ -108871,25 +84149,21 @@ ps' = (I : I) [visit_id id?] not free [visit_id id?] no dims [visit_exp ?()] -[visit_exp ~ (?(id') <- I.`GLOBALS`_I{`name?*#760`})] -[visit_exp (?(id') <- I.`GLOBALS`_I{`name?*#760`})] +[visit_exp ~ (?(id') <- I.`GLOBALS`_I)] +[visit_exp (?(id') <- I.`GLOBALS`_I)] [visit_exp ?(id')] [visit_exp id'] [visit_id id'] not free -[visit_exp I.`GLOBALS`_I{`name?*#760`}] +[visit_exp I.`GLOBALS`_I] [visit_exp I] [visit_id I] not free [visit_id I] no dims -[visit_exp `name?*#760`] -[visit_id name?*#760] [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I char*#1587 char*#1599 id id' name?*#766 -[visit_exp ?(`%`_name{`char*#1587`}(lift(id?{id <- `id?`})))] -[visit_exp `%`_name{`char*#1587`}(lift(id?{id <- `id?`}))] -[visit_exp `char*#1587`] -[visit_id char*#1587] +[check_dims] I id id' +[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] +[visit_exp `%`_name(lift(id?{id <- `id?`}))] [visit_exp (lift(id?{id <- `id?`}))] [visit_exp lift(id?{id <- `id?`})] [visit_exp id?{id <- `id?`}] @@ -108909,11 +84183,9 @@ ps' = (I : I) [visit_exp I] [visit_id I] not free [visit_id I] no dims -[visit_exp ((`%`_name{`char*#1599`}(lift(id?{id <- `id?`})) = id') \/ ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`MEMS`_I{`name?*#766`})))] -[visit_exp (`%`_name{`char*#1599`}(lift(id?{id <- `id?`})) = id')] -[visit_exp `%`_name{`char*#1599`}(lift(id?{id <- `id?`}))] -[visit_exp `char*#1599`] -[visit_id char*#1599] +[visit_exp ((`%`_name(lift(id?{id <- `id?`})) = id') \/ ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`MEMS`_I)))] +[visit_exp (`%`_name(lift(id?{id <- `id?`})) = id')] +[visit_exp `%`_name(lift(id?{id <- `id?`}))] [visit_exp (lift(id?{id <- `id?`}))] [visit_exp lift(id?{id <- `id?`})] [visit_exp id?{id <- `id?`}] @@ -108927,7 +84199,7 @@ ps' = (I : I) [visit_id id?] no dims [visit_exp id'] [visit_id id'] not free -[visit_exp ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`MEMS`_I{`name?*#766`}))] +[visit_exp ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`MEMS`_I))] [visit_exp (id?{id <- `id?`} = ?())] [visit_exp id?{id <- `id?`}] [scope_enter id] @@ -108939,25 +84211,21 @@ ps' = (I : I) [visit_id id?] not free [visit_id id?] no dims [visit_exp ?()] -[visit_exp ~ (?(id') <- I.`MEMS`_I{`name?*#766`})] -[visit_exp (?(id') <- I.`MEMS`_I{`name?*#766`})] +[visit_exp ~ (?(id') <- I.`MEMS`_I)] +[visit_exp (?(id') <- I.`MEMS`_I)] [visit_exp ?(id')] [visit_exp id'] [visit_id id'] not free -[visit_exp I.`MEMS`_I{`name?*#766`}] +[visit_exp I.`MEMS`_I] [visit_exp I] [visit_id I] not free [visit_id I] no dims -[visit_exp `name?*#766`] -[visit_id name?*#766] [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I char*#1621 char*#1633 id id' name?*#772 -[visit_exp ?(`%`_name{`char*#1621`}(lift(id?{id <- `id?`})))] -[visit_exp `%`_name{`char*#1621`}(lift(id?{id <- `id?`}))] -[visit_exp `char*#1621`] -[visit_id char*#1621] +[check_dims] I id id' +[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] +[visit_exp `%`_name(lift(id?{id <- `id?`}))] [visit_exp (lift(id?{id <- `id?`}))] [visit_exp lift(id?{id <- `id?`})] [visit_exp id?{id <- `id?`}] @@ -108977,11 +84245,9 @@ ps' = (I : I) [visit_exp I] [visit_id I] not free [visit_id I] no dims -[visit_exp ((`%`_name{`char*#1633`}(lift(id?{id <- `id?`})) = id') \/ ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`TABLES`_I{`name?*#772`})))] -[visit_exp (`%`_name{`char*#1633`}(lift(id?{id <- `id?`})) = id')] -[visit_exp `%`_name{`char*#1633`}(lift(id?{id <- `id?`}))] -[visit_exp `char*#1633`] -[visit_id char*#1633] +[visit_exp ((`%`_name(lift(id?{id <- `id?`})) = id') \/ ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`TABLES`_I)))] +[visit_exp (`%`_name(lift(id?{id <- `id?`})) = id')] +[visit_exp `%`_name(lift(id?{id <- `id?`}))] [visit_exp (lift(id?{id <- `id?`}))] [visit_exp lift(id?{id <- `id?`})] [visit_exp id?{id <- `id?`}] @@ -108995,7 +84261,7 @@ ps' = (I : I) [visit_id id?] no dims [visit_exp id'] [visit_id id'] not free -[visit_exp ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`TABLES`_I{`name?*#772`}))] +[visit_exp ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`TABLES`_I))] [visit_exp (id?{id <- `id?`} = ?())] [visit_exp id?{id <- `id?`}] [scope_enter id] @@ -109007,25 +84273,21 @@ ps' = (I : I) [visit_id id?] not free [visit_id id?] no dims [visit_exp ?()] -[visit_exp ~ (?(id') <- I.`TABLES`_I{`name?*#772`})] -[visit_exp (?(id') <- I.`TABLES`_I{`name?*#772`})] +[visit_exp ~ (?(id') <- I.`TABLES`_I)] +[visit_exp (?(id') <- I.`TABLES`_I)] [visit_exp ?(id')] [visit_exp id'] [visit_id id'] not free -[visit_exp I.`TABLES`_I{`name?*#772`}] +[visit_exp I.`TABLES`_I] [visit_exp I] [visit_id I] not free [visit_id I] no dims -[visit_exp `name?*#772`] -[visit_id name?*#772] [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I char*#1655 char*#1667 id id' name?*#778 -[visit_exp ?(`%`_name{`char*#1655`}(lift(id?{id <- `id?`})))] -[visit_exp `%`_name{`char*#1655`}(lift(id?{id <- `id?`}))] -[visit_exp `char*#1655`] -[visit_id char*#1655] +[check_dims] I id id' +[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] +[visit_exp `%`_name(lift(id?{id <- `id?`}))] [visit_exp (lift(id?{id <- `id?`}))] [visit_exp lift(id?{id <- `id?`})] [visit_exp id?{id <- `id?`}] @@ -109045,11 +84307,9 @@ ps' = (I : I) [visit_exp I] [visit_id I] not free [visit_id I] no dims -[visit_exp ((`%`_name{`char*#1667`}(lift(id?{id <- `id?`})) = id') \/ ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`FUNCS`_I{`name?*#778`})))] -[visit_exp (`%`_name{`char*#1667`}(lift(id?{id <- `id?`})) = id')] -[visit_exp `%`_name{`char*#1667`}(lift(id?{id <- `id?`}))] -[visit_exp `char*#1667`] -[visit_id char*#1667] +[visit_exp ((`%`_name(lift(id?{id <- `id?`})) = id') \/ ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`FUNCS`_I)))] +[visit_exp (`%`_name(lift(id?{id <- `id?`})) = id')] +[visit_exp `%`_name(lift(id?{id <- `id?`}))] [visit_exp (lift(id?{id <- `id?`}))] [visit_exp lift(id?{id <- `id?`})] [visit_exp id?{id <- `id?`}] @@ -109063,7 +84323,7 @@ ps' = (I : I) [visit_id id?] no dims [visit_exp id'] [visit_id id'] not free -[visit_exp ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`FUNCS`_I{`name?*#778`}))] +[visit_exp ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`FUNCS`_I))] [visit_exp (id?{id <- `id?`} = ?())] [visit_exp id?{id <- `id?`}] [scope_enter id] @@ -109075,25 +84335,21 @@ ps' = (I : I) [visit_id id?] not free [visit_id id?] no dims [visit_exp ?()] -[visit_exp ~ (?(id') <- I.`FUNCS`_I{`name?*#778`})] -[visit_exp (?(id') <- I.`FUNCS`_I{`name?*#778`})] +[visit_exp ~ (?(id') <- I.`FUNCS`_I)] +[visit_exp (?(id') <- I.`FUNCS`_I)] [visit_exp ?(id')] [visit_exp id'] [visit_id id'] not free -[visit_exp I.`FUNCS`_I{`name?*#778`}] +[visit_exp I.`FUNCS`_I] [visit_exp I] [visit_id I] not free [visit_id I] no dims -[visit_exp `name?*#778`] -[visit_id name?*#778] [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I at at' b char*#1689 char*#1707 i#131658 i#131685 id id' n name?*#784 -[visit_exp ?(`%`_name{`char*#1689`}(lift(id?{id <- `id?`})))] -[visit_exp `%`_name{`char*#1689`}(lift(id?{id <- `id?`}))] -[visit_exp `char*#1689`] -[visit_id char*#1689] +[check_dims] I at at' b id id' n +[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] +[visit_exp `%`_name(lift(id?{id <- `id?`}))] [visit_exp (lift(id?{id <- `id?`}))] [visit_exp lift(id?{id <- `id?`})] [visit_exp id?{id <- `id?`}] @@ -109134,15 +84390,11 @@ ps' = (I : I) [visit_exp `at?`] [visit_id at?] not free [visit_id at?] no dims -[visit_exp `%`_u64{i#131658}(n)] -[visit_exp i#131658] -[visit_id i#131658] +[visit_exp `%`_u64(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `%`_u64{i#131685}(n)] -[visit_exp i#131685] -[visit_id i#131685] +[visit_exp `%`_u64(n)] [visit_exp (n)] [visit_exp n] [visit_id n] not free @@ -109150,11 +84402,9 @@ ps' = (I : I) [visit_id id'] not free [visit_exp at'] [visit_id at'] -[visit_exp ((`%`_name{`char*#1707`}(lift(id?{id <- `id?`})) = id') \/ ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`MEMS`_I{`name?*#784`})))] -[visit_exp (`%`_name{`char*#1707`}(lift(id?{id <- `id?`})) = id')] -[visit_exp `%`_name{`char*#1707`}(lift(id?{id <- `id?`}))] -[visit_exp `char*#1707`] -[visit_id char*#1707] +[visit_exp ((`%`_name(lift(id?{id <- `id?`})) = id') \/ ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`MEMS`_I)))] +[visit_exp (`%`_name(lift(id?{id <- `id?`})) = id')] +[visit_exp `%`_name(lift(id?{id <- `id?`}))] [visit_exp (lift(id?{id <- `id?`}))] [visit_exp lift(id?{id <- `id?`})] [visit_exp id?{id <- `id?`}] @@ -109168,7 +84418,7 @@ ps' = (I : I) [visit_id id?] no dims [visit_exp id'] [visit_id id'] not free -[visit_exp ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`MEMS`_I{`name?*#784`}))] +[visit_exp ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`MEMS`_I))] [visit_exp (id?{id <- `id?`} = ?())] [visit_exp id?{id <- `id?`}] [scope_enter id] @@ -109180,17 +84430,15 @@ ps' = (I : I) [visit_id id?] not free [visit_id id?] no dims [visit_exp ?()] -[visit_exp ~ (?(id') <- I.`MEMS`_I{`name?*#784`})] -[visit_exp (?(id') <- I.`MEMS`_I{`name?*#784`})] +[visit_exp ~ (?(id') <- I.`MEMS`_I)] +[visit_exp (?(id') <- I.`MEMS`_I)] [visit_exp ?(id')] [visit_exp id'] [visit_id id'] not free -[visit_exp I.`MEMS`_I{`name?*#784`}] +[visit_exp I.`MEMS`_I] [visit_exp I] [visit_id I] not free [visit_id I] no dims -[visit_exp `name?*#784`] -[visit_id name?*#784] [visit_exp ((at?{at <- `at?`} = ?(at')) \/ ((at?{at <- `at?`} = ?()) /\ (at' = `I32`_addrtype)))] [visit_exp (at?{at <- `at?`} = ?(at'))] [visit_exp at?{at <- `at?`}] @@ -109247,11 +84495,9 @@ ps' = (I : I) [visit_id I] not free ps' = (I : I) [check_dims] I -[check_dims] I at at' char*#1729 char*#1747 e i#131750 i#131777 id id' n name?*#790 rt -[visit_exp ?(`%`_name{`char*#1729`}(lift(id?{id <- `id?`})))] -[visit_exp `%`_name{`char*#1729`}(lift(id?{id <- `id?`}))] -[visit_exp `char*#1729`] -[visit_id char*#1729] +[check_dims] I at at' e id id' n rt +[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] +[visit_exp `%`_name(lift(id?{id <- `id?`}))] [visit_exp (lift(id?{id <- `id?`}))] [visit_exp lift(id?{id <- `id?`})] [visit_exp id?{id <- `id?`}] @@ -109301,15 +84547,11 @@ ps' = (I : I) [visit_exp `at?`] [visit_id at?] not free [visit_id at?] no dims -[visit_exp `%`_u64{i#131750}(n)] -[visit_exp i#131750] -[visit_id i#131750] +[visit_exp `%`_u64(n)] [visit_exp (n)] [visit_exp n] [visit_id n] -[visit_exp `%`_u64{i#131777}(n)] -[visit_exp i#131777] -[visit_id i#131777] +[visit_exp `%`_u64(n)] [visit_exp (n)] [visit_exp n] [visit_id n] not free @@ -109323,11 +84565,9 @@ ps' = (I : I) [visit_exp I] [visit_id I] not free [visit_id I] no dims -[visit_exp ((`%`_name{`char*#1747`}(lift(id?{id <- `id?`})) = id') \/ ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`TABLES`_I{`name?*#790`})))] -[visit_exp (`%`_name{`char*#1747`}(lift(id?{id <- `id?`})) = id')] -[visit_exp `%`_name{`char*#1747`}(lift(id?{id <- `id?`}))] -[visit_exp `char*#1747`] -[visit_id char*#1747] +[visit_exp ((`%`_name(lift(id?{id <- `id?`})) = id') \/ ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`TABLES`_I)))] +[visit_exp (`%`_name(lift(id?{id <- `id?`})) = id')] +[visit_exp `%`_name(lift(id?{id <- `id?`}))] [visit_exp (lift(id?{id <- `id?`}))] [visit_exp lift(id?{id <- `id?`})] [visit_exp id?{id <- `id?`}] @@ -109341,7 +84581,7 @@ ps' = (I : I) [visit_id id?] no dims [visit_exp id'] [visit_id id'] not free -[visit_exp ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`TABLES`_I{`name?*#790`}))] +[visit_exp ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`TABLES`_I))] [visit_exp (id?{id <- `id?`} = ?())] [visit_exp id?{id <- `id?`}] [scope_enter id] @@ -109353,17 +84593,15 @@ ps' = (I : I) [visit_id id?] not free [visit_id id?] no dims [visit_exp ?()] -[visit_exp ~ (?(id') <- I.`TABLES`_I{`name?*#790`})] -[visit_exp (?(id') <- I.`TABLES`_I{`name?*#790`})] +[visit_exp ~ (?(id') <- I.`TABLES`_I)] +[visit_exp (?(id') <- I.`TABLES`_I)] [visit_exp ?(id')] [visit_exp id'] [visit_id id'] not free -[visit_exp I.`TABLES`_I{`name?*#790`}] +[visit_exp I.`TABLES`_I] [visit_exp I] [visit_id I] not free [visit_id I] no dims -[visit_exp `name?*#790`] -[visit_id name?*#790] [visit_exp ((at?{at <- `at?`} = ?(at')) \/ ((at?{at <- `at?`} = ?()) /\ (at' = `I32`_addrtype)))] [visit_exp (at?{at <- `at?`} = ?(at'))] [visit_exp at?{at <- `at?`}] @@ -109447,7 +84685,7 @@ DecD exportsd(decl*) : export* [visit_exp []] [visit_exp []] => - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $typesd([]) = [] [check_dims] decl' type [visit_exp [(type : type <: decl)] ++ decl'*{decl' <- `decl'*`}] @@ -109479,7 +84717,7 @@ DecD exportsd(decl*) : export* [visit_id decl'*] not free [visit_id decl'*] no dims => - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $typesd{type : type, `decl'*` : decl*}([(type : type <: decl)] ++ decl'*{decl' <- `decl'*`}) = [type] ++ $typesd(decl'*{decl' <- `decl'*`}) [check_dims] decl decl' [visit_exp [decl] ++ decl'*{decl' <- `decl'*`}] @@ -109506,14 +84744,14 @@ DecD exportsd(decl*) : export* [visit_id decl'*] not free [visit_id decl'*] no dims => - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) -- otherwise [check_dims] [visit_exp []] [visit_exp []] => - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $importsd([]) = [] [check_dims] decl' import [visit_exp [(import : import <: decl)] ++ decl'*{decl' <- `decl'*`}] @@ -109545,7 +84783,7 @@ DecD exportsd(decl*) : export* [visit_id decl'*] not free [visit_id decl'*] no dims => - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $importsd{import : import, `decl'*` : decl*}([(import : import <: decl)] ++ decl'*{decl' <- `decl'*`}) = [import] ++ $importsd(decl'*{decl' <- `decl'*`}) [check_dims] decl decl' [visit_exp [decl] ++ decl'*{decl' <- `decl'*`}] @@ -109572,14 +84810,14 @@ DecD exportsd(decl*) : export* [visit_id decl'*] not free [visit_id decl'*] no dims => - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) -- otherwise [check_dims] [visit_exp []] [visit_exp []] => - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $tagsd([]) = [] [check_dims] decl' tag [visit_exp [(tag : tag <: decl)] ++ decl'*{decl' <- `decl'*`}] @@ -109611,7 +84849,7 @@ DecD exportsd(decl*) : export* [visit_id decl'*] not free [visit_id decl'*] no dims => - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $tagsd{tag : tag, `decl'*` : decl*}([(tag : tag <: decl)] ++ decl'*{decl' <- `decl'*`}) = [tag] ++ $tagsd(decl'*{decl' <- `decl'*`}) [check_dims] decl decl' [visit_exp [decl] ++ decl'*{decl' <- `decl'*`}] @@ -109638,14 +84876,14 @@ DecD exportsd(decl*) : export* [visit_id decl'*] not free [visit_id decl'*] no dims => - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) -- otherwise [check_dims] [visit_exp []] [visit_exp []] => - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $globalsd([]) = [] [check_dims] decl' global [visit_exp [(global : global <: decl)] ++ decl'*{decl' <- `decl'*`}] @@ -109677,7 +84915,7 @@ DecD exportsd(decl*) : export* [visit_id decl'*] not free [visit_id decl'*] no dims => - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $globalsd{global : global, `decl'*` : decl*}([(global : global <: decl)] ++ decl'*{decl' <- `decl'*`}) = [global] ++ $globalsd(decl'*{decl' <- `decl'*`}) [check_dims] decl decl' [visit_exp [decl] ++ decl'*{decl' <- `decl'*`}] @@ -109704,14 +84942,14 @@ DecD exportsd(decl*) : export* [visit_id decl'*] not free [visit_id decl'*] no dims => - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) -- otherwise [check_dims] [visit_exp []] [visit_exp []] => - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $memsd([]) = [] [check_dims] decl' mem [visit_exp [(mem : mem <: decl)] ++ decl'*{decl' <- `decl'*`}] @@ -109743,7 +84981,7 @@ DecD exportsd(decl*) : export* [visit_id decl'*] not free [visit_id decl'*] no dims => - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $memsd{mem : mem, `decl'*` : decl*}([(mem : mem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [mem] ++ $memsd(decl'*{decl' <- `decl'*`}) [check_dims] decl decl' [visit_exp [decl] ++ decl'*{decl' <- `decl'*`}] @@ -109770,14 +85008,14 @@ DecD exportsd(decl*) : export* [visit_id decl'*] not free [visit_id decl'*] no dims => - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) -- otherwise [check_dims] [visit_exp []] [visit_exp []] => - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $tablesd([]) = [] [check_dims] decl' table [visit_exp [(table : table <: decl)] ++ decl'*{decl' <- `decl'*`}] @@ -109809,7 +85047,7 @@ DecD exportsd(decl*) : export* [visit_id decl'*] not free [visit_id decl'*] no dims => - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $tablesd{table : table, `decl'*` : decl*}([(table : table <: decl)] ++ decl'*{decl' <- `decl'*`}) = [table] ++ $tablesd(decl'*{decl' <- `decl'*`}) [check_dims] decl decl' [visit_exp [decl] ++ decl'*{decl' <- `decl'*`}] @@ -109836,14 +85074,14 @@ DecD exportsd(decl*) : export* [visit_id decl'*] not free [visit_id decl'*] no dims => - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) -- otherwise [check_dims] [visit_exp []] [visit_exp []] => - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $funcsd([]) = [] [check_dims] decl' func [visit_exp [(func : func <: decl)] ++ decl'*{decl' <- `decl'*`}] @@ -109875,7 +85113,7 @@ DecD exportsd(decl*) : export* [visit_id decl'*] not free [visit_id decl'*] no dims => - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $funcsd{func : func, `decl'*` : decl*}([(func : func <: decl)] ++ decl'*{decl' <- `decl'*`}) = [func] ++ $funcsd(decl'*{decl' <- `decl'*`}) [check_dims] decl decl' [visit_exp [decl] ++ decl'*{decl' <- `decl'*`}] @@ -109902,14 +85140,14 @@ DecD exportsd(decl*) : export* [visit_id decl'*] not free [visit_id decl'*] no dims => - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) -- otherwise [check_dims] [visit_exp []] [visit_exp []] => - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $datasd([]) = [] [check_dims] data decl' [visit_exp [(data : data <: decl)] ++ decl'*{decl' <- `decl'*`}] @@ -109941,7 +85179,7 @@ DecD exportsd(decl*) : export* [visit_id decl'*] not free [visit_id decl'*] no dims => - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $datasd{data : data, `decl'*` : decl*}([(data : data <: decl)] ++ decl'*{decl' <- `decl'*`}) = [data] ++ $datasd(decl'*{decl' <- `decl'*`}) [check_dims] decl decl' [visit_exp [decl] ++ decl'*{decl' <- `decl'*`}] @@ -109968,14 +85206,14 @@ DecD exportsd(decl*) : export* [visit_id decl'*] not free [visit_id decl'*] no dims => - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) -- otherwise [check_dims] [visit_exp []] [visit_exp []] => - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $elemsd([]) = [] [check_dims] decl' elem [visit_exp [(elem : elem <: decl)] ++ decl'*{decl' <- `decl'*`}] @@ -110007,7 +85245,7 @@ DecD exportsd(decl*) : export* [visit_id decl'*] not free [visit_id decl'*] no dims => - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $elemsd{elem : elem, `decl'*` : decl*}([(elem : elem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [elem] ++ $elemsd(decl'*{decl' <- `decl'*`}) [check_dims] decl decl' [visit_exp [decl] ++ decl'*{decl' <- `decl'*`}] @@ -110034,14 +85272,14 @@ DecD exportsd(decl*) : export* [visit_id decl'*] not free [visit_id decl'*] no dims => - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) -- otherwise [check_dims] [visit_exp []] [visit_exp []] => - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $startsd([]) = [] [check_dims] decl' start [visit_exp [(start : start <: decl)] ++ decl'*{decl' <- `decl'*`}] @@ -110073,7 +85311,7 @@ DecD exportsd(decl*) : export* [visit_id decl'*] not free [visit_id decl'*] no dims => - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $startsd{start : start, `decl'*` : decl*}([(start : start <: decl)] ++ decl'*{decl' <- `decl'*`}) = [start] ++ $startsd(decl'*{decl' <- `decl'*`}) [check_dims] decl decl' [visit_exp [decl] ++ decl'*{decl' <- `decl'*`}] @@ -110100,14 +85338,14 @@ DecD exportsd(decl*) : export* [visit_id decl'*] not free [visit_id decl'*] no dims => - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) -- otherwise [check_dims] [visit_exp []] [visit_exp []] => - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $exportsd([]) = [] [check_dims] decl' export [visit_exp [(export : export <: decl)] ++ decl'*{decl' <- `decl'*`}] @@ -110139,7 +85377,7 @@ DecD exportsd(decl*) : export* [visit_id decl'*] not free [visit_id decl'*] no dims => - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $exportsd{export : export, `decl'*` : decl*}([(export : export <: decl)] ++ decl'*{decl' <- `decl'*`}) = [export] ++ $exportsd(decl'*{decl' <- `decl'*`}) [check_dims] decl decl' [visit_exp [decl] ++ decl'*{decl' <- `decl'*`}] @@ -110166,7 +85404,7 @@ DecD exportsd(decl*) : export* [visit_id decl'*] not free [visit_id decl'*] no dims => - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) -- otherwise [check_dims] _ @@ -110196,7 +85434,7 @@ DecD ordered(decl*) : bool [visit_id decl'*] no dims [visit_exp []] => - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $ordered{`decl'*` : decl*}(decl'*{decl' <- `decl'*`}) = true -- if ($importsd(decl'*{decl' <- `decl'*`}) = []) [check_dims] decl_1 decl_2 import @@ -110302,7 +85540,7 @@ DecD ordered(decl*) : bool [visit_id decl_1*] no dims [visit_exp []] => - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-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*`}) = [])) ps' = (I : I) [check_dims] I _ @@ -110311,10 +85549,18 @@ dims \ I = , _ [visit_exp (`` : (type, idctxt) <: (decl, idctxt))] [visit_exp ``] [visit_id ] +[scope_enter _] [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_exit _] +[scope_exit _] +[scope_enter _] [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_exit _] +[scope_exit _] [visit_exp ``] [visit_id ] not free [visit_exp I] @@ -110325,10 +85571,18 @@ dims \ I = , _ [visit_exp (`` : (import, idctxt) <: (decl, idctxt))] [visit_exp ``] [visit_id ] +[scope_enter _] [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_exit _] +[scope_exit _] +[scope_enter _] [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_exit _] +[scope_exit _] [visit_exp ``] [visit_id ] not free [visit_exp I] @@ -110339,10 +85593,18 @@ dims \ I = , _ [visit_exp (`` : (tag, idctxt) <: (decl, idctxt))] [visit_exp ``] [visit_id ] +[scope_enter _] [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_exit _] +[scope_exit _] +[scope_enter _] [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_exit _] +[scope_exit _] [visit_exp ``] [visit_id ] not free [visit_exp I] @@ -110353,10 +85615,18 @@ dims \ I = , _ [visit_exp (`` : (global, idctxt) <: (decl, idctxt))] [visit_exp ``] [visit_id ] +[scope_enter _] [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_exit _] +[scope_exit _] +[scope_enter _] [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_exit _] +[scope_exit _] [visit_exp ``] [visit_id ] not free [visit_exp I] @@ -110367,10 +85637,18 @@ dims \ I = , _ [visit_exp (`` : (mem, idctxt) <: (decl, idctxt))] [visit_exp ``] [visit_id ] +[scope_enter _] [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_exit _] +[scope_exit _] +[scope_enter _] [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_exit _] +[scope_exit _] [visit_exp ``] [visit_id ] not free [visit_exp I] @@ -110381,10 +85659,18 @@ dims \ I = , _ [visit_exp (`` : (table, idctxt) <: (decl, idctxt))] [visit_exp ``] [visit_id ] +[scope_enter _] [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_exit _] +[scope_exit _] +[scope_enter _] [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_exit _] +[scope_exit _] [visit_exp ``] [visit_id ] not free [visit_exp I] @@ -110395,10 +85681,18 @@ dims \ I = , _ [visit_exp (`` : (func, idctxt) <: (decl, idctxt))] [visit_exp ``] [visit_id ] +[scope_enter _] [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_exit _] +[scope_exit _] +[scope_enter _] [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_exit _] +[scope_exit _] [visit_exp ``] [visit_id ] not free [visit_exp I] @@ -110409,10 +85703,18 @@ dims \ I = , _ [visit_exp (`` : (data, idctxt) <: (decl, idctxt))] [visit_exp ``] [visit_id ] +[scope_enter _] [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_exit _] +[scope_exit _] +[scope_enter _] [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_exit _] +[scope_exit _] [visit_exp ``] [visit_id ] not free [visit_exp I] @@ -110423,10 +85725,18 @@ dims \ I = , _ [visit_exp (`` : (elem, idctxt) <: (decl, idctxt))] [visit_exp ``] [visit_id ] +[scope_enter _] [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_exit _] +[scope_exit _] +[scope_enter _] [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_exit _] +[scope_exit _] [visit_exp ``] [visit_id ] not free [visit_exp I] @@ -110437,10 +85747,18 @@ dims \ I = , _ [visit_exp (`` : (start, idctxt) <: (decl, idctxt))] [visit_exp ``] [visit_id ] +[scope_enter _] [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_exit _] +[scope_exit _] +[scope_enter _] [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_exit _] +[scope_exit _] [visit_exp ``] [visit_id ] not free [visit_exp I] @@ -110451,47 +85769,37 @@ dims \ I = , _ [visit_exp (`` : (export, idctxt) <: (decl, idctxt))] [visit_exp ``] [visit_id ] +[scope_enter _] [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_exit _] +[scope_exit _] +[scope_enter _] [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_exit _] +[scope_exit _] [visit_exp ``] [visit_id ] not free [visit_exp I] [visit_id I] not free [visit_id I] no dims [visit_id I] not free +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_exit _] +[scope_exit _] ps' = [check_dims] -[check_dims] I I' data data*#155 decl elem elem*#179 export export*#155 func func*#155 global global*#179 import import*#155 mem mem*#179 start start?#155 table table*#179 tag tag*#155 type type*#155 -dims \ = I, I', data, data*#155, decl, elem, elem*#179, export, export*#155, func, func*#155, global, global*#179, import, import*#155, mem, mem*#179, start, start?#155, table, table*#179, tag, tag*#155, type, type*#155 -[visit_exp `MODULE`_module{`type*#155`, `import*#155`, `tag*#155`, `global*#179`, `mem*#179`, `table*#179`, `func*#155`, `data*#155`, `elem*#179`, `start?#155`, `export*#155`}(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*`})] -[visit_exp `type*#155`] -[visit_id type*#155] -[visit_exp `import*#155`] -[visit_id import*#155] -[visit_exp `tag*#155`] -[visit_id tag*#155] -[visit_exp `global*#179`] -[visit_id global*#179] -[visit_exp `mem*#179`] -[visit_id mem*#179] -[visit_exp `table*#179`] -[visit_id table*#179] -[visit_exp `func*#155`] -[visit_id func*#155] -[visit_exp `data*#155`] -[visit_id data*#155] -[visit_exp `elem*#179`] -[visit_id elem*#179] -[visit_exp `start?#155`] -[visit_id start?#155] -[visit_exp `export*#155`] -[visit_id export*#155] +[check_dims] I I' data decl elem export func global import mem start table tag type +dims \ = I, I', data, decl, elem, export, func, global, import, mem, start, table, tag, type +[visit_exp `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*`})] [visit_exp (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*`})] [visit_exp type*{type <- `type*`}] [scope_enter type] @@ -110891,71 +86199,98 @@ dims \ I = [visit_id I] not free [visit_id I] no dims [visit_id I] not free +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_enter _] [visit_id _] not free [visit_id _] no dims +[scope_exit _] +[scope_exit _] [check_dims] [check_dims] [check_dims] ---- 1 --- [check_dims] ---- 2 --- ---- 3 --- ---- 4 --- +[scope_enter A_1] +[visit_id A_1] not free [visit_id A_1] no dims -[visit_id A_1] +[scope_exit A_1] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id A_n] no dims -[visit_id A_n] [check_dims] +[scope_enter A_n] +[visit_id A_n] not free +[visit_id A_n] no dims +[scope_exit A_n] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id A_1] no dims -[visit_id A_1] [check_dims] +[check_dims] +[scope_enter A_1] +[visit_id A_1] not free +[visit_id A_1] no dims +[scope_exit A_1] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id A_2] no dims -[visit_id A_2] [check_dims] [check_dims] +[scope_enter A_2] +[visit_id A_2] not free +[visit_id A_2] no dims +[scope_exit A_2] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[check_dims] +[check_dims] +[scope_enter A_1] +[visit_id A_1] not free [visit_id A_1] no dims -[visit_id A_1] +[scope_exit A_1] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter A_2] +[visit_id A_2] not free [visit_id A_2] no dims -[visit_id A_2] +[scope_exit A_2] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- +[check_dims] +[scope_enter recorddots] +[visit_id recorddots] not free [visit_id recorddots] no dims -[visit_id recorddots] +[scope_exit recorddots] +--- 1 --- +[check_dims] +--- 2 --- +--- 3 --- +--- 4 --- +[check_dims] [check_dims] --- 1 --- [check_dims] @@ -110977,27 +86312,19 @@ dims \ I = [visit_exp premise_n] [visit_id premise_n] [check_dims] -[check_dims] C X*#13813 X*#13862 localidx*#1817 numtype#1105 resulttype#3064 +[check_dims] C [visit_exp C] [visit_id C] -[visit_exp [`BINOP`_instr{numtype#1105}(`I32`_numtype, `ADD`_binop_)]] -[visit_exp `BINOP`_instr{numtype#1105}(`I32`_numtype, `ADD`_binop_)] -[visit_exp numtype#1105] -[visit_id numtype#1105] +[visit_exp [`BINOP`_instr(`I32`_numtype, `ADD`_binop_)]] +[visit_exp `BINOP`_instr(`I32`_numtype, `ADD`_binop_)] [visit_exp (`I32`_numtype, `ADD`_binop_)] [visit_exp `I32`_numtype] [visit_exp ()] [visit_exp `ADD`_binop_] [visit_exp ()] -[visit_exp `%->_%%`_instrtype{resulttype#3064, `localidx*#1817`}(`%`_resulttype{`X*#13813`}([`I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#13862`}([`I32`_valtype]))] -[visit_exp resulttype#3064] -[visit_id resulttype#3064] -[visit_exp `localidx*#1817`] -[visit_id localidx*#1817] -[visit_exp (`%`_resulttype{`X*#13813`}([`I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#13862`}([`I32`_valtype]))] -[visit_exp `%`_resulttype{`X*#13813`}([`I32`_valtype `I32`_valtype])] -[visit_exp `X*#13813`] -[visit_id X*#13813] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([`I32`_valtype `I32`_valtype]), [], `%`_resulttype([`I32`_valtype]))] +[visit_exp (`%`_resulttype([`I32`_valtype `I32`_valtype]), [], `%`_resulttype([`I32`_valtype]))] +[visit_exp `%`_resulttype([`I32`_valtype `I32`_valtype])] [visit_exp ([`I32`_valtype `I32`_valtype])] [visit_exp [`I32`_valtype `I32`_valtype]] [visit_exp `I32`_valtype] @@ -111005,75 +86332,51 @@ dims \ I = [visit_exp `I32`_valtype] [visit_exp ()] [visit_exp []] -[visit_exp `%`_resulttype{`X*#13862`}([`I32`_valtype])] -[visit_exp `X*#13862`] -[visit_id X*#13862] +[visit_exp `%`_resulttype([`I32`_valtype])] [visit_exp ([`I32`_valtype])] [visit_exp [`I32`_valtype]] [visit_exp `I32`_valtype] [visit_exp ()] -[check_dims] C X*#13883 X*#13932 globalidx#35 globaltype*#27 i#131877 localidx*#1829 mut mut?#1609 resulttype#3084 t valtype#1343 x +[check_dims] C mut t x [visit_exp C] [visit_id C] -[visit_exp [`GLOBAL.GET`_instr{globalidx#35}(x)]] -[visit_exp `GLOBAL.GET`_instr{globalidx#35}(x)] -[visit_exp globalidx#35] -[visit_id globalidx#35] +[visit_exp [`GLOBAL.GET`_instr(x)]] +[visit_exp `GLOBAL.GET`_instr(x)] [visit_exp (x)] [visit_exp x] [visit_id x] -[visit_exp `%->_%%`_instrtype{resulttype#3084, `localidx*#1829`}(`%`_resulttype{`X*#13883`}([]), [], `%`_resulttype{`X*#13932`}([t]))] -[visit_exp resulttype#3084] -[visit_id resulttype#3084] -[visit_exp `localidx*#1829`] -[visit_id localidx*#1829] -[visit_exp (`%`_resulttype{`X*#13883`}([]), [], `%`_resulttype{`X*#13932`}([t]))] -[visit_exp `%`_resulttype{`X*#13883`}([])] -[visit_exp `X*#13883`] -[visit_id X*#13883] +[visit_exp `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))] +[visit_exp (`%`_resulttype([]), [], `%`_resulttype([t]))] +[visit_exp `%`_resulttype([])] [visit_exp ([])] [visit_exp []] [visit_exp []] -[visit_exp `%`_resulttype{`X*#13932`}([t])] -[visit_exp `X*#13932`] -[visit_id X*#13932] +[visit_exp `%`_resulttype([t])] [visit_exp ([t])] [visit_exp [t]] [visit_exp t] [visit_id t] -[visit_exp (C.`GLOBALS`_context{`globaltype*#27`}[x!`%`_idx{i#131877}.0] = `%%`_globaltype{`mut?#1609`, valtype#1343}(?(mut), t))] -[visit_exp C.`GLOBALS`_context{`globaltype*#27`}[x!`%`_idx{i#131877}.0]] -[visit_exp C.`GLOBALS`_context{`globaltype*#27`}] +[visit_exp (C.`GLOBALS`_context[x!`%`_idx.0] = `%%`_globaltype(?(mut), t))] +[visit_exp C.`GLOBALS`_context[x!`%`_idx.0]] +[visit_exp C.`GLOBALS`_context] [visit_exp C] [visit_id C] not free -[visit_exp `globaltype*#27`] -[visit_id globaltype*#27] -[visit_exp x!`%`_idx{i#131877}.0] -[visit_exp x!`%`_idx{i#131877}] -[visit_exp x] -[visit_id x] not free -[visit_exp i#131877] -[visit_id i#131877] -[visit_exp `%%`_globaltype{`mut?#1609`, valtype#1343}(?(mut), t)] -[visit_exp `mut?#1609`] -[visit_id mut?#1609] -[visit_exp valtype#1343] -[visit_id valtype#1343] +[visit_exp x!`%`_idx.0] +[visit_exp x!`%`_idx] +[visit_exp x] +[visit_id x] not free +[visit_exp `%%`_globaltype(?(mut), t)] [visit_exp (?(mut), t)] [visit_exp ?(mut)] [visit_exp mut] [visit_id mut] [visit_exp t] [visit_id t] not free -[check_dims] C X*#13943 X*#13994 X*#14005 X*#14056 X*#14067 X*#14080 X*#14131 blocktype blocktype#49 datatype*#26 deftype*#98 deftype*#99 elemtype*#26 funcidx*#63 globaltype*#28 instr instr*#2369 localidx*#1841 localidx*#1853 localidx*#1865 localtype*#29 memtype*#41 resulttype#3104 resulttype#3124 resulttype#3144 resulttype*#37 resulttype?#34 subtype*#25 t_1 t_2 tabletype*#34 tagtype*#26 +[check_dims] C blocktype instr t_1 t_2 [visit_exp C] [visit_id C] -[visit_exp [`BLOCK`_instr{blocktype#49, `instr*#2369`}(blocktype, instr*{instr <- `instr*`})]] -[visit_exp `BLOCK`_instr{blocktype#49, `instr*#2369`}(blocktype, instr*{instr <- `instr*`})] -[visit_exp blocktype#49] -[visit_id blocktype#49] -[visit_exp `instr*#2369`] -[visit_id instr*#2369] +[visit_exp [`BLOCK`_instr(blocktype, instr*{instr <- `instr*`})]] +[visit_exp `BLOCK`_instr(blocktype, instr*{instr <- `instr*`})] [visit_exp (blocktype, instr*{instr <- `instr*`})] [visit_exp blocktype] [visit_id blocktype] @@ -111086,15 +86389,9 @@ dims \ I = [visit_exp `instr*`] [visit_id instr*] no dims [visit_id instr*] -[visit_exp `%->_%%`_instrtype{resulttype#3104, `localidx*#1841`}(`%`_resulttype{`X*#13943`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#13994`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#3104] -[visit_id resulttype#3104] -[visit_exp `localidx*#1841`] -[visit_id localidx*#1841] -[visit_exp (`%`_resulttype{`X*#13943`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#13994`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#13943`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#13943`] -[visit_id X*#13943] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -111106,9 +86403,7 @@ dims \ I = [visit_id t_1*] no dims [visit_id t_1*] [visit_exp []] -[visit_exp `%`_resulttype{`X*#13994`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#13994`] -[visit_id X*#13994] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -111119,20 +86414,14 @@ dims \ I = [visit_exp `t_2*`] [visit_id t_2*] no dims [visit_id t_2*] -[visit_exp (C, blocktype, `%->_%%`_instrtype{resulttype#3124, `localidx*#1853`}(`%`_resulttype{`X*#14005`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#14056`}(t_2*{t_2 <- `t_2*`})))] +[visit_exp (C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})))] [visit_exp C] [visit_id C] not free [visit_exp blocktype] [visit_id blocktype] not free -[visit_exp `%->_%%`_instrtype{resulttype#3124, `localidx*#1853`}(`%`_resulttype{`X*#14005`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#14056`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#3124] -[visit_id resulttype#3124] -[visit_exp `localidx*#1853`] -[visit_id localidx*#1853] -[visit_exp (`%`_resulttype{`X*#14005`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#14056`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#14005`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#14005`] -[visit_id X*#14005] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -111144,9 +86433,7 @@ dims \ I = [visit_id t_1*] not free [visit_id t_1*] no dims [visit_exp []] -[visit_exp `%`_resulttype{`X*#14056`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#14056`] -[visit_id X*#14056] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -111157,45 +86444,21 @@ dims \ I = [visit_exp `t_2*`] [visit_id t_2*] not free [visit_id t_2*] no dims -[visit_exp ({`TYPES`{`deftype*#98`} [], `RECS`{`subtype*#25`} [], `TAGS`{`tagtype*#26`} [], `GLOBALS`{`globaltype*#28`} [], `MEMS`{`memtype*#41`} [], `TABLES`{`tabletype*#34`} [], `FUNCS`{`deftype*#99`} [], `DATAS`{`datatype*#26`} [], `ELEMS`{`elemtype*#26`} [], `LOCALS`{`localtype*#29`} [], `LABELS`{`resulttype*#37`} [`%`_resulttype{`X*#14067`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#34`} ?(), `REFS`{`funcidx*#63`} []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype{resulttype#3144, `localidx*#1865`}(`%`_resulttype{`X*#14080`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#14131`}(t_2*{t_2 <- `t_2*`})))] -[visit_exp {`TYPES`{`deftype*#98`} [], `RECS`{`subtype*#25`} [], `TAGS`{`tagtype*#26`} [], `GLOBALS`{`globaltype*#28`} [], `MEMS`{`memtype*#41`} [], `TABLES`{`tabletype*#34`} [], `FUNCS`{`deftype*#99`} [], `DATAS`{`datatype*#26`} [], `ELEMS`{`elemtype*#26`} [], `LOCALS`{`localtype*#29`} [], `LABELS`{`resulttype*#37`} [`%`_resulttype{`X*#14067`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#34`} ?(), `REFS`{`funcidx*#63`} []} +++ C] -[visit_exp {`TYPES`{`deftype*#98`} [], `RECS`{`subtype*#25`} [], `TAGS`{`tagtype*#26`} [], `GLOBALS`{`globaltype*#28`} [], `MEMS`{`memtype*#41`} [], `TABLES`{`tabletype*#34`} [], `FUNCS`{`deftype*#99`} [], `DATAS`{`datatype*#26`} [], `ELEMS`{`elemtype*#26`} [], `LOCALS`{`localtype*#29`} [], `LABELS`{`resulttype*#37`} [`%`_resulttype{`X*#14067`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#34`} ?(), `REFS`{`funcidx*#63`} []}] -[visit_exp `deftype*#98`] -[visit_id deftype*#98] +[visit_exp ({`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*`})))] +[visit_exp {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [`%`_resulttype(t_2*{t_2 <- `t_2*`})], `RETURN` ?(), `REFS` []} +++ C] +[visit_exp {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [`%`_resulttype(t_2*{t_2 <- `t_2*`})], `RETURN` ?(), `REFS` []}] [visit_exp []] -[visit_exp `subtype*#25`] -[visit_id subtype*#25] [visit_exp []] -[visit_exp `tagtype*#26`] -[visit_id tagtype*#26] [visit_exp []] -[visit_exp `globaltype*#28`] -[visit_id globaltype*#28] [visit_exp []] -[visit_exp `memtype*#41`] -[visit_id memtype*#41] [visit_exp []] -[visit_exp `tabletype*#34`] -[visit_id tabletype*#34] [visit_exp []] -[visit_exp `deftype*#99`] -[visit_id deftype*#99] [visit_exp []] -[visit_exp `datatype*#26`] -[visit_id datatype*#26] [visit_exp []] -[visit_exp `elemtype*#26`] -[visit_id elemtype*#26] [visit_exp []] -[visit_exp `localtype*#29`] -[visit_id localtype*#29] [visit_exp []] -[visit_exp `resulttype*#37`] -[visit_id resulttype*#37] -[visit_exp [`%`_resulttype{`X*#14067`}(t_2*{t_2 <- `t_2*`})]] -[visit_exp `%`_resulttype{`X*#14067`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#14067`] -[visit_id X*#14067] +[visit_exp [`%`_resulttype(t_2*{t_2 <- `t_2*`})]] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -111206,11 +86469,7 @@ dims \ I = [visit_exp `t_2*`] [visit_id t_2*] not free [visit_id t_2*] no dims -[visit_exp `resulttype?#34`] -[visit_id resulttype?#34] [visit_exp ?()] -[visit_exp `funcidx*#63`] -[visit_id funcidx*#63] [visit_exp []] [visit_exp C] [visit_id C] not free @@ -111223,15 +86482,9 @@ dims \ I = [visit_exp `instr*`] [visit_id instr*] not free [visit_id instr*] no dims -[visit_exp `%->_%%`_instrtype{resulttype#3144, `localidx*#1865`}(`%`_resulttype{`X*#14080`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#14131`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp resulttype#3144] -[visit_id resulttype#3144] -[visit_exp `localidx*#1865`] -[visit_id localidx*#1865] -[visit_exp (`%`_resulttype{`X*#14080`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#14131`}(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype{`X*#14080`}(t_1*{t_1 <- `t_1*`})] -[visit_exp `X*#14080`] -[visit_id X*#14080] +[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] +[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] [visit_exp (t_1*{t_1 <- `t_1*`})] [visit_exp t_1*{t_1 <- `t_1*`}] [scope_enter t_1] @@ -111243,9 +86496,7 @@ dims \ I = [visit_id t_1*] not free [visit_id t_1*] no dims [visit_exp []] -[visit_exp `%`_resulttype{`X*#14131`}(t_2*{t_2 <- `t_2*`})] -[visit_exp `X*#14131`] -[visit_id X*#14131] +[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] [visit_exp (t_2*{t_2 <- `t_2*`})] [visit_exp t_2*{t_2 <- `t_2*`}] [scope_enter t_2] @@ -111257,79 +86508,61 @@ dims \ I = [visit_id t_2*] not free [visit_id t_2*] no dims [check_dims] -[check_dims] numtype#1107 numtype#1109 numtype#1111 numtype#1113 numtype#1115 q_1 q_3 q_4 -[visit_exp [`CONST`_instr{numtype#1107}(`F64`_numtype, q_1) `CONST`_instr{numtype#1109}(`F64`_numtype, q_4) `CONST`_instr{numtype#1111}(`F64`_numtype, q_3) `BINOP`_instr{numtype#1113}(`F64`_numtype, `ADD`_binop_) `BINOP`_instr{numtype#1115}(`F64`_numtype, `MUL`_binop_)]] -[visit_exp `CONST`_instr{numtype#1107}(`F64`_numtype, q_1)] -[visit_exp numtype#1107] -[visit_id numtype#1107] +[check_dims] q_1 q_3 q_4 +[visit_exp [`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_)]] +[visit_exp `CONST`_instr(`F64`_numtype, q_1)] [visit_exp (`F64`_numtype, q_1)] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp q_1] [visit_id q_1] -[visit_exp `CONST`_instr{numtype#1109}(`F64`_numtype, q_4)] -[visit_exp numtype#1109] -[visit_id numtype#1109] +[visit_exp `CONST`_instr(`F64`_numtype, q_4)] [visit_exp (`F64`_numtype, q_4)] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp q_4] [visit_id q_4] -[visit_exp `CONST`_instr{numtype#1111}(`F64`_numtype, q_3)] -[visit_exp numtype#1111] -[visit_id numtype#1111] +[visit_exp `CONST`_instr(`F64`_numtype, q_3)] [visit_exp (`F64`_numtype, q_3)] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp q_3] [visit_id q_3] -[visit_exp `BINOP`_instr{numtype#1113}(`F64`_numtype, `ADD`_binop_)] -[visit_exp numtype#1113] -[visit_id numtype#1113] +[visit_exp `BINOP`_instr(`F64`_numtype, `ADD`_binop_)] [visit_exp (`F64`_numtype, `ADD`_binop_)] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `ADD`_binop_] [visit_exp ()] -[visit_exp `BINOP`_instr{numtype#1115}(`F64`_numtype, `MUL`_binop_)] -[visit_exp numtype#1115] -[visit_id numtype#1115] +[visit_exp `BINOP`_instr(`F64`_numtype, `MUL`_binop_)] [visit_exp (`F64`_numtype, `MUL`_binop_)] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `MUL`_binop_] [visit_exp ()] -[check_dims] numtype#1117 numtype#1119 numtype#1121 q_1 q_5 -[visit_exp [`CONST`_instr{numtype#1117}(`F64`_numtype, q_1) `CONST`_instr{numtype#1119}(`F64`_numtype, q_5) `BINOP`_instr{numtype#1121}(`F64`_numtype, `MUL`_binop_)]] -[visit_exp `CONST`_instr{numtype#1117}(`F64`_numtype, q_1)] -[visit_exp numtype#1117] -[visit_id numtype#1117] +[check_dims] q_1 q_5 +[visit_exp [`CONST`_instr(`F64`_numtype, q_1) `CONST`_instr(`F64`_numtype, q_5) `BINOP`_instr(`F64`_numtype, `MUL`_binop_)]] +[visit_exp `CONST`_instr(`F64`_numtype, q_1)] [visit_exp (`F64`_numtype, q_1)] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp q_1] [visit_id q_1] -[visit_exp `CONST`_instr{numtype#1119}(`F64`_numtype, q_5)] -[visit_exp numtype#1119] -[visit_id numtype#1119] +[visit_exp `CONST`_instr(`F64`_numtype, q_5)] [visit_exp (`F64`_numtype, q_5)] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp q_5] [visit_id q_5] -[visit_exp `BINOP`_instr{numtype#1121}(`F64`_numtype, `MUL`_binop_)] -[visit_exp numtype#1121] -[visit_id numtype#1121] +[visit_exp `BINOP`_instr(`F64`_numtype, `MUL`_binop_)] [visit_exp (`F64`_numtype, `MUL`_binop_)] [visit_exp `F64`_numtype] [visit_exp ()] [visit_exp `MUL`_binop_] [visit_exp ()] -[check_dims] numtype#1123 q_6 -[visit_exp [`CONST`_instr{numtype#1123}(`F64`_numtype, q_6)]] -[visit_exp `CONST`_instr{numtype#1123}(`F64`_numtype, q_6)] -[visit_exp numtype#1123] -[visit_id numtype#1123] +[check_dims] q_6 +[visit_exp [`CONST`_instr(`F64`_numtype, q_6)]] +[visit_exp `CONST`_instr(`F64`_numtype, q_6)] [visit_exp (`F64`_numtype, q_6)] [visit_exp `F64`_numtype] [visit_exp ()] @@ -111338,40 +86571,58 @@ dims \ I = [check_dims] DecD instrdots : instr* [check_dims] +[check_dims] +[scope_enter n] +[visit_id n] not free +[visit_id n] no dims +[scope_enter instr*] +[visit_id instr*] not free +[visit_id instr*] no dims +[scope_exit instr*] +[scope_exit n] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id n] no dims -[visit_id n] -[visit_id instr*] no dims -[visit_id instr*] [check_dims] +[check_dims] +[scope_enter n] +[visit_id n] not free +[visit_id n] no dims +[scope_enter frame] +[visit_id frame] not free +[visit_id frame] no dims +[scope_exit frame] +[scope_exit n] --- 1 --- [check_dims] --- 2 --- --- 3 --- --- 4 --- -[visit_id n] no dims -[visit_id n] -[visit_id frame] no dims -[visit_id frame] [check_dims] [check_dims] X Y _ store DecD allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) [visit_id store] not free [visit_id X] not free [visit_id Y] not free +[scope_enter _] [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_exit _] +[scope_exit _] [check_dims] X Y _ store DecD allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) [visit_id store] not free [visit_id _] not free [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_enter _] [visit_id _] not free +[scope_exit _] +[scope_exit _] [check_dims] s [visit_exp s] [visit_id s] @@ -111737,22 +86988,22 @@ def $ND : bool ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax bit = - | `%`{i : nat}(i : nat) + | `%`(i : nat) -- if ((i = 0) \/ (i = 1)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax byte = - | `%`{i : nat}(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) + | `%`(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) + | `%`(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 @@ -111808,12 +87059,12 @@ 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) + | `NORM`(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) + | `SUBNORM`(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)) | `INF` - | `NAN`{m : m}(m : m) + | `NAN`(m : m) -- if ((1 <= m) /\ (m < (2 ^ $M(N)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -111830,17 +87081,17 @@ 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, m#1 : m, exp#1 : exp}(N) = `POS`_fN(`SUBNORM`_fNmag{m#1, exp#1}(0)) + 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, m#3 : m, exp#2 : exp}(N, n) = `POS`_fN(`NORM`_fNmag{m#3, exp#2}(n, (0 : nat <:> int))) + 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, m#5 : m, exp#4 : exp}(N) = `POS`_fN(`NORM`_fNmag{m#5, exp#4}(1, (0 : nat <:> int))) + 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 @@ -111855,19 +87106,19 @@ 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) + | `%`(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, i#48148 : nat, i#48144 : nat, i#48146 : nat}(b) = (((b!`%`_byte{i#48148}.0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat) - -- if ((128 < b!`%`_byte{i#48144}.0) /\ (b!`%`_byte{i#48146}.0 < 192)) + 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 { @@ -111877,26 +87128,26 @@ def $utf8(char*) : byte* ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:48.1-48.44 def $utf8{`ch*` : char*}(ch*{ch <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:49.1-51.15 - def $utf8{ch : char, b : byte, i#48332 : nat, i#48341 : nat, i#48340 : nat}([ch]) = [b] - -- if (ch!`%`_char{i#48332}.0 < 128) - -- if (`%`_byte{i#48341}(ch!`%`_char{i#48340}.0) = b) + 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:52.1-54.46 - def $utf8{ch : char, b_1 : byte, b_2 : byte, i#48356 : nat, i#48358 : nat, i#48368 : nat, i#48360 : nat}([ch]) = [b_1 b_2] - -- if ((128 <= ch!`%`_char{i#48356}.0) /\ (ch!`%`_char{i#48358}.0 < 2048)) - -- if (ch!`%`_char{i#48368}.0 = (((2 ^ 6) * (((b_1!`%`_byte{i#48360}.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) + 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:55.1-57.64 - def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, i#48400 : nat, i#48402 : nat, i#48404 : nat, i#48406 : nat, i#48422 : nat, i#48408 : nat}([ch]) = [b_1 b_2 b_3] - -- if (((2048 <= ch!`%`_char{i#48400}.0) /\ (ch!`%`_char{i#48402}.0 < 55296)) \/ ((57344 <= ch!`%`_char{i#48404}.0) /\ (ch!`%`_char{i#48406}.0 < 65536))) - -- if (ch!`%`_char{i#48422}.0 = ((((2 ^ 12) * (((b_1!`%`_byte{i#48408}.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) + 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:58.1-60.82 - def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte, i#48460 : nat, i#48462 : nat, i#48484 : nat, i#48464 : nat}([ch]) = [b_1 b_2 b_3 b_4] - -- if ((65536 <= ch!`%`_char{i#48460}.0) /\ (ch!`%`_char{i#48462}.0 < 69632)) - -- if (ch!`%`_char{i#48484}.0 = (((((2 ^ 18) * (((b_1!`%`_byte{i#48464}.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) + 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 = - | `%`{`char*` : char*}(`char*` : char*) + | `%`(`char*` : char*) -- if (|$utf8(char*{char <- `char*`})| < (2 ^ 32)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -111940,11 +87191,11 @@ 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) + | `FUNC`(funcidx : funcidx) + | `GLOBAL`(globalidx : globalidx) + | `TABLE`(tableidx : tableidx) + | `MEM`(memidx : memidx) + | `TAG`(tagidx : tagidx) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { @@ -111954,7 +87205,7 @@ def $funcsxx(externidx*) : typeidx* ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.1-133.24 def $funcsxx([]) = [] ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:134.1-134.45 - def $funcsxx{funcidx#1 : funcidx, x : idx, `xx*` : externidx*}([`FUNC`_externidx{funcidx#1}(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $funcsxx(xx*{xx <- `xx*`}) + 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:135.1-135.58 def $funcsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $funcsxx(xx*{xx <- `xx*`}) -- otherwise @@ -111968,7 +87219,7 @@ def $globalsxx(externidx*) : globalidx* ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:137.1-137.26 def $globalsxx([]) = [] ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:138.1-138.51 - def $globalsxx{globalidx#1 : globalidx, x : idx, `xx*` : externidx*}([`GLOBAL`_externidx{globalidx#1}(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $globalsxx(xx*{xx <- `xx*`}) + 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:139.1-139.62 def $globalsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $globalsxx(xx*{xx <- `xx*`}) -- otherwise @@ -111982,7 +87233,7 @@ def $tablesxx(externidx*) : tableidx* ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:141.1-141.25 def $tablesxx([]) = [] ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:142.1-142.48 - def $tablesxx{tableidx#1 : tableidx, x : idx, `xx*` : externidx*}([`TABLE`_externidx{tableidx#1}(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $tablesxx(xx*{xx <- `xx*`}) + 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:143.1-143.60 def $tablesxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $tablesxx(xx*{xx <- `xx*`}) -- otherwise @@ -111996,7 +87247,7 @@ def $memsxx(externidx*) : memidx* ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:145.1-145.23 def $memsxx([]) = [] ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:146.1-146.42 - def $memsxx{memidx#1 : memidx, x : idx, `xx*` : externidx*}([`MEM`_externidx{memidx#1}(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $memsxx(xx*{xx <- `xx*`}) + 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:147.1-147.56 def $memsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $memsxx(xx*{xx <- `xx*`}) -- otherwise @@ -112010,7 +87261,7 @@ def $tagsxx(externidx*) : tagidx* ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:149.1-149.23 def $tagsxx([]) = [] ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:150.1-150.42 - def $tagsxx{tagidx#1 : tagidx, x : idx, `xx*` : externidx*}([`TAG`_externidx{tagidx#1}(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $tagsxx(xx*{xx <- `xx*`}) + 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:151.1-151.56 def $tagsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $tagsxx(xx*{xx <- `xx*`}) -- otherwise @@ -112019,21 +87270,21 @@ def $tagsxx(externidx*) : tagidx* ;; ../../../../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* + `TYPES` typeidx* , + `FUNCS` funcidx* , + `GLOBALS` globalidx* , + `TABLES` tableidx* , + `MEMS` memidx* , + `ELEMS` elemidx* , + `DATAS` dataidx* , + `LOCALS` localidx* , + `LABELS` 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{`typeidx*#1` : typeidx*, `funcidx*#1` : funcidx*, `globalidx*#1` : globalidx*, `tableidx*#1` : tableidx*, `memidx*#1` : memidx*, `elemidx*#1` : elemidx*, `dataidx*#1` : dataidx*, `localidx*#1` : localidx*, `labelidx*#1` : labelidx*}(?()) = {`TYPES`{`typeidx*#1`} [], `FUNCS`{`funcidx*#1`} [], `GLOBALS`{`globalidx*#1`} [], `TABLES`{`tableidx*#1`} [], `MEMS`{`memidx*#1`} [], `ELEMS`{`elemidx*#1`} [], `DATAS`{`dataidx*#1`} [], `LOCALS`{`localidx*#1`} [], `LABELS`{`labelidx*#1`} []} + 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 @@ -112043,7 +87294,7 @@ rec { ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:170.1-170.29 def $free_list(free*) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:175.1-175.25 - def $free_list{`typeidx*#2` : typeidx*, `funcidx*#2` : funcidx*, `globalidx*#2` : globalidx*, `tableidx*#2` : tableidx*, `memidx*#2` : memidx*, `elemidx*#2` : elemidx*, `dataidx*#2` : dataidx*, `localidx*#2` : localidx*, `labelidx*#2` : labelidx*}([]) = {`TYPES`{`typeidx*#2`} [], `FUNCS`{`funcidx*#2`} [], `GLOBALS`{`globalidx*#2`} [], `TABLES`{`tableidx*#2`} [], `MEMS`{`memidx*#2`} [], `ELEMS`{`elemidx*#2`} [], `DATAS`{`dataidx*#2`} [], `LOCALS`{`localidx*#2`} [], `LABELS`{`labelidx*#2`} []} + def $free_list([]) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:176.1-176.57 def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) } @@ -112051,58 +87302,58 @@ def $free_list(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*#3` : typeidx*, `funcidx*#3` : funcidx*, `globalidx*#3` : globalidx*, `tableidx*#3` : tableidx*, `memidx*#3` : memidx*, `elemidx*#3` : elemidx*, `dataidx*#3` : dataidx*, `localidx*#3` : localidx*, `labelidx*#3` : labelidx*}(typeidx) = {`TYPES`{`typeidx*#3`} [typeidx], `FUNCS`{`funcidx*#3`} [], `GLOBALS`{`globalidx*#3`} [], `TABLES`{`tableidx*#3`} [], `MEMS`{`memidx*#3`} [], `ELEMS`{`elemidx*#3`} [], `DATAS`{`dataidx*#3`} [], `LOCALS`{`localidx*#3`} [], `LABELS`{`labelidx*#3`} []} + 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, `typeidx*#4` : typeidx*, `funcidx*#4` : funcidx*, `globalidx*#4` : globalidx*, `tableidx*#4` : tableidx*, `memidx*#4` : memidx*, `elemidx*#4` : elemidx*, `dataidx*#4` : dataidx*, `localidx*#4` : localidx*, `labelidx*#4` : labelidx*}(funcidx) = {`TYPES`{`typeidx*#4`} [], `FUNCS`{`funcidx*#4`} [funcidx], `GLOBALS`{`globalidx*#4`} [], `TABLES`{`tableidx*#4`} [], `MEMS`{`memidx*#4`} [], `ELEMS`{`elemidx*#4`} [], `DATAS`{`dataidx*#4`} [], `LOCALS`{`localidx*#4`} [], `LABELS`{`labelidx*#4`} []} + 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, `typeidx*#5` : typeidx*, `funcidx*#5` : funcidx*, `globalidx*#5` : globalidx*, `tableidx*#5` : tableidx*, `memidx*#5` : memidx*, `elemidx*#5` : elemidx*, `dataidx*#5` : dataidx*, `localidx*#5` : localidx*, `labelidx*#5` : labelidx*}(globalidx) = {`TYPES`{`typeidx*#5`} [], `FUNCS`{`funcidx*#5`} [], `GLOBALS`{`globalidx*#5`} [globalidx], `TABLES`{`tableidx*#5`} [], `MEMS`{`memidx*#5`} [], `ELEMS`{`elemidx*#5`} [], `DATAS`{`dataidx*#5`} [], `LOCALS`{`localidx*#5`} [], `LABELS`{`labelidx*#5`} []} + 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, `typeidx*#6` : typeidx*, `funcidx*#6` : funcidx*, `globalidx*#6` : globalidx*, `tableidx*#6` : tableidx*, `memidx*#6` : memidx*, `elemidx*#6` : elemidx*, `dataidx*#6` : dataidx*, `localidx*#6` : localidx*, `labelidx*#6` : labelidx*}(tableidx) = {`TYPES`{`typeidx*#6`} [], `FUNCS`{`funcidx*#6`} [], `GLOBALS`{`globalidx*#6`} [], `TABLES`{`tableidx*#6`} [tableidx], `MEMS`{`memidx*#6`} [], `ELEMS`{`elemidx*#6`} [], `DATAS`{`dataidx*#6`} [], `LOCALS`{`localidx*#6`} [], `LABELS`{`labelidx*#6`} []} + 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, `typeidx*#7` : typeidx*, `funcidx*#7` : funcidx*, `globalidx*#7` : globalidx*, `tableidx*#7` : tableidx*, `memidx*#7` : memidx*, `elemidx*#7` : elemidx*, `dataidx*#7` : dataidx*, `localidx*#7` : localidx*, `labelidx*#7` : labelidx*}(memidx) = {`TYPES`{`typeidx*#7`} [], `FUNCS`{`funcidx*#7`} [], `GLOBALS`{`globalidx*#7`} [], `TABLES`{`tableidx*#7`} [], `MEMS`{`memidx*#7`} [memidx], `ELEMS`{`elemidx*#7`} [], `DATAS`{`dataidx*#7`} [], `LOCALS`{`localidx*#7`} [], `LABELS`{`labelidx*#7`} []} + 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, `typeidx*#8` : typeidx*, `funcidx*#8` : funcidx*, `globalidx*#8` : globalidx*, `tableidx*#8` : tableidx*, `memidx*#8` : memidx*, `elemidx*#8` : elemidx*, `dataidx*#8` : dataidx*, `localidx*#8` : localidx*, `labelidx*#8` : labelidx*}(elemidx) = {`TYPES`{`typeidx*#8`} [], `FUNCS`{`funcidx*#8`} [], `GLOBALS`{`globalidx*#8`} [], `TABLES`{`tableidx*#8`} [], `MEMS`{`memidx*#8`} [], `ELEMS`{`elemidx*#8`} [elemidx], `DATAS`{`dataidx*#8`} [], `LOCALS`{`localidx*#8`} [], `LABELS`{`labelidx*#8`} []} + 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, `typeidx*#9` : typeidx*, `funcidx*#9` : funcidx*, `globalidx*#9` : globalidx*, `tableidx*#9` : tableidx*, `memidx*#9` : memidx*, `elemidx*#9` : elemidx*, `dataidx*#9` : dataidx*, `localidx*#9` : localidx*, `labelidx*#9` : labelidx*}(dataidx) = {`TYPES`{`typeidx*#9`} [], `FUNCS`{`funcidx*#9`} [], `GLOBALS`{`globalidx*#9`} [], `TABLES`{`tableidx*#9`} [], `MEMS`{`memidx*#9`} [], `ELEMS`{`elemidx*#9`} [], `DATAS`{`dataidx*#9`} [dataidx], `LOCALS`{`localidx*#9`} [], `LABELS`{`labelidx*#9`} []} + 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, `typeidx*#10` : typeidx*, `funcidx*#10` : funcidx*, `globalidx*#10` : globalidx*, `tableidx*#10` : tableidx*, `memidx*#10` : memidx*, `elemidx*#10` : elemidx*, `dataidx*#10` : dataidx*, `localidx*#10` : localidx*, `labelidx*#10` : labelidx*}(localidx) = {`TYPES`{`typeidx*#10`} [], `FUNCS`{`funcidx*#10`} [], `GLOBALS`{`globalidx*#10`} [], `TABLES`{`tableidx*#10`} [], `MEMS`{`memidx*#10`} [], `ELEMS`{`elemidx*#10`} [], `DATAS`{`dataidx*#10`} [], `LOCALS`{`localidx*#10`} [localidx], `LABELS`{`labelidx*#10`} []} + 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, `typeidx*#11` : typeidx*, `funcidx*#11` : funcidx*, `globalidx*#11` : globalidx*, `tableidx*#11` : tableidx*, `memidx*#11` : memidx*, `elemidx*#11` : elemidx*, `dataidx*#11` : dataidx*, `localidx*#11` : localidx*, `labelidx*#11` : labelidx*}(labelidx) = {`TYPES`{`typeidx*#11`} [], `FUNCS`{`funcidx*#11`} [], `GLOBALS`{`globalidx*#11`} [], `TABLES`{`tableidx*#11`} [], `MEMS`{`memidx*#11`} [], `ELEMS`{`elemidx*#11`} [], `DATAS`{`dataidx*#11`} [], `LOCALS`{`localidx*#11`} [], `LABELS`{`labelidx*#11`} [labelidx]} + 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#3 : funcidx, funcidx : funcidx}(`FUNC`_externidx{funcidx#3}(funcidx)) = $free_funcidx(funcidx) + def $free_externidx{funcidx : funcidx}(`FUNC`_externidx(funcidx)) = $free_funcidx(funcidx) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{globalidx#3 : globalidx, globalidx : globalidx}(`GLOBAL`_externidx{globalidx#3}(globalidx)) = $free_globalidx(globalidx) + def $free_externidx{globalidx : globalidx}(`GLOBAL`_externidx(globalidx)) = $free_globalidx(globalidx) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{tableidx#3 : tableidx, tableidx : tableidx}(`TABLE`_externidx{tableidx#3}(tableidx)) = $free_tableidx(tableidx) + def $free_externidx{tableidx : tableidx}(`TABLE`_externidx(tableidx)) = $free_tableidx(tableidx) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{memidx#3 : memidx, memidx : memidx}(`MEM`_externidx{memidx#3}(memidx)) = $free_memidx(memidx) + def $free_externidx{memidx : memidx}(`MEM`_externidx(memidx)) = $free_memidx(memidx) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax null = @@ -112161,9 +87412,9 @@ 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) + | `_IDX`(typeidx : typeidx) + | `_DEF`(rectype : rectype, n : n) + | `REC`(n : n) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.1-44.26 syntax heaptype = @@ -112180,9 +87431,9 @@ syntax heaptype = | `EXTERN` | `NOEXTERN` | `BOT` - | `_IDX`{typeidx : typeidx}(typeidx : typeidx) - | `_DEF`{rectype : rectype, n : n}(rectype : rectype, n : n) - | `REC`{n : n}(n : n) + | `_IDX`(typeidx : typeidx) + | `_DEF`(rectype : rectype, n : n) + | `REC`(n : n) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.1-52.14 syntax valtype = @@ -112191,7 +87442,7 @@ syntax valtype = | `F32` | `F64` | `V128` - | `REF`{`null?` : null?, heaptype : heaptype}(`null?` : null?, heaptype : heaptype) + | `REF`(`null?` : null?, heaptype : heaptype) | `BOT` ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.1-92.66 @@ -112201,7 +87452,7 @@ syntax storagetype = | `F32` | `F64` | `V128` - | `REF`{`null?` : null?, heaptype : heaptype}(`null?` : null?, heaptype : heaptype) + | `REF`(`null?` : null?, heaptype : heaptype) | `BOT` | `I8` | `I16` @@ -112211,17 +87462,17 @@ 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?, storagetype : storagetype) + | `%%`(`mut?` : mut?, storagetype : storagetype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.1-117.34 syntax comptype = | `STRUCT`(list(syntax fieldtype)) - | `ARRAY`{fieldtype : fieldtype}(fieldtype : fieldtype) - | `FUNC%->%`{resulttype : resulttype}(resulttype : resulttype, resulttype : resulttype) + | `ARRAY`(fieldtype : fieldtype) + | `FUNC%->%`(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?, `typeuse*` : typeuse*, comptype : comptype) + | `SUB`(`final?` : final?, `typeuse*` : typeuse*, comptype : comptype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:122.1-123.22 syntax rectype = @@ -112230,16 +87481,16 @@ syntax rectype = ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax deftype = - | `_DEF`{rectype : rectype, n : n}(rectype : rectype, n : n) + | `_DEF`(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) + | `_IDX`(typeidx : typeidx) + | `REC`(n : n) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax reftype = - | `REF`{`null?` : null?, heaptype : heaptype}(`null?` : null?, heaptype : heaptype) + | `REF`(`null?` : null?, heaptype : heaptype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax Inn = @@ -112266,62 +87517,62 @@ syntax Cnn = ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $ANYREF : reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $ANYREF{`null?#11` : null?, heaptype#11 : heaptype} = `REF`_reftype{`null?#11`, heaptype#11}(?(`NULL`_null), `ANY`_heaptype) + 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{`null?#23` : null?, heaptype#23 : heaptype} = `REF`_reftype{`null?#23`, heaptype#23}(?(`NULL`_null), `EQ`_heaptype) + 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{`null?#35` : null?, heaptype#35 : heaptype} = `REF`_reftype{`null?#35`, heaptype#35}(?(`NULL`_null), `I31`_heaptype) + 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{`null?#47` : null?, heaptype#47 : heaptype} = `REF`_reftype{`null?#47`, heaptype#47}(?(`NULL`_null), `STRUCT`_heaptype) + 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{`null?#59` : null?, heaptype#59 : heaptype} = `REF`_reftype{`null?#59`, heaptype#59}(?(`NULL`_null), `ARRAY`_heaptype) + 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{`null?#71` : null?, heaptype#71 : heaptype} = `REF`_reftype{`null?#71`, heaptype#71}(?(`NULL`_null), `FUNC`_heaptype) + 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{`null?#83` : null?, heaptype#83 : heaptype} = `REF`_reftype{`null?#83`, heaptype#83}(?(`NULL`_null), `EXN`_heaptype) + 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{`null?#95` : null?, heaptype#95 : heaptype} = `REF`_reftype{`null?#95`, heaptype#95}(?(`NULL`_null), `EXTERN`_heaptype) + 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{`null?#107` : null?, heaptype#107 : heaptype} = `REF`_reftype{`null?#107`, heaptype#107}(?(`NULL`_null), `NONE`_heaptype) + 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{`null?#119` : null?, heaptype#119 : heaptype} = `REF`_reftype{`null?#119`, heaptype#119}(?(`NULL`_null), `NOFUNC`_heaptype) + 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{`null?#131` : null?, heaptype#131 : heaptype} = `REF`_reftype{`null?#131`, heaptype#131}(?(`NULL`_null), `NOEXN`_heaptype) + 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{`null?#143` : null?, heaptype#143 : heaptype} = `REF`_reftype{`null?#143`, heaptype#143}(?(`NULL`_null), `NOEXTERN`_heaptype) + def $NULLEXTERNREF = `REF`_reftype(?(`NULL`_null), `NOEXTERN`_heaptype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax packtype = @@ -112358,22 +87609,22 @@ syntax Lnn = ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax limits = - | `[%..%]`{u64 : u64, `u64?` : u64?}(u64 : u64, `u64?` : 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?, valtype : valtype) + | `%%`(`mut?` : mut?, valtype : valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax memtype = - | `%%PAGE`{addrtype : addrtype, limits : limits}(addrtype : addrtype, limits : limits) + | `%%PAGE`(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) + | `%%%`(addrtype : addrtype, limits : limits, reftype : reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax datatype = @@ -112384,15 +87635,15 @@ 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) + | `TAG`(tagtype : tagtype) + | `GLOBAL`(globaltype : globaltype) + | `MEM`(memtype : memtype) + | `TABLE`(tabletype : tabletype) + | `FUNC`(typeuse : typeuse) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax moduletype = - | `%->%`{`externtype*` : externtype*}(`externtype*` : externtype*, `externtype*` : externtype*) + | `%->%`(`externtype*` : externtype*, `externtype*` : externtype*) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $IN(N : N) : Inn @@ -112593,9 +87844,9 @@ def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype ;; ../../../../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?#155` : null?, heaptype#155 : heaptype, `null_1?` : null?, ht_1 : heaptype, `null?#167` : null?, heaptype#167 : heaptype, ht_2 : heaptype, `null?#179` : null?, heaptype#179 : heaptype}(`REF`_reftype{`null?#155`, heaptype#155}(null_1?{null_1 <- `null_1?`}, ht_1), `REF`_reftype{`null?#167`, heaptype#167}(?(`NULL`_null), ht_2)) = `REF`_reftype{`null?#179`, heaptype#179}(?(), ht_1) + 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?#191` : null?, heaptype#191 : heaptype, `null_1?` : null?, ht_1 : heaptype, `null?#203` : null?, heaptype#203 : heaptype, ht_2 : heaptype, `null?#215` : null?, heaptype#215 : heaptype}(`REF`_reftype{`null?#191`, heaptype#191}(null_1?{null_1 <- `null_1?`}, ht_1), `REF`_reftype{`null?#203`, heaptype#203}(?(), ht_2)) = `REF`_reftype{`null?#215`, heaptype#215}(null_1?{null_1 <- `null_1?`}, ht_1) + 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 @@ -112610,7 +87861,7 @@ 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{tagtype#1 : tagtype, jt : tagtype, `xt*` : externtype*}([`TAG`_externtype{tagtype#1}(jt)] ++ xt*{xt <- `xt*`}) = [jt] ++ $tagsxt(xt*{xt <- `xt*`}) + 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 def $tagsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tagsxt(xt*{xt <- `xt*`}) -- otherwise @@ -112624,7 +87875,7 @@ 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{globaltype#1 : globaltype, gt : globaltype, `xt*` : externtype*}([`GLOBAL`_externtype{globaltype#1}(gt)] ++ xt*{xt <- `xt*`}) = [gt] ++ $globalsxt(xt*{xt <- `xt*`}) + 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*`}) -- otherwise @@ -112638,7 +87889,7 @@ 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{memtype#1 : memtype, mt : memtype, `xt*` : externtype*}([`MEM`_externtype{memtype#1}(mt)] ++ xt*{xt <- `xt*`}) = [mt] ++ $memsxt(xt*{xt <- `xt*`}) + 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*`}) -- otherwise @@ -112652,7 +87903,7 @@ 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{tabletype#1 : tabletype, tt : tabletype, `xt*` : externtype*}([`TABLE`_externtype{tabletype#1}(tt)] ++ xt*{xt <- `xt*`}) = [tt] ++ $tablesxt(xt*{xt <- `xt*`}) + 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*`}) -- otherwise @@ -112666,7 +87917,7 @@ 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{typeuse#1 : typeuse, dt : deftype, `xt*` : externtype*}([`FUNC`_externtype{typeuse#1}((dt : deftype <: typeuse))] ++ xt*{xt <- `xt*`}) = [dt] ++ $funcsxt(xt*{xt <- `xt*`}) + 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*`}) -- otherwise @@ -112695,9 +87946,9 @@ 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#53 : n, n : n, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([`REC`_typevar{n#53}(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) + 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 - def $minus_recs{typeidx#1 : typeidx, x : idx, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, typeidx#3 : typeidx, `tv'*` : typevar*, `tu'*` : typeuse*}([`_IDX`_typevar{typeidx#1}(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ([`_IDX`_typevar{typeidx#3}(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) + 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*`})) } @@ -112739,7 +87990,7 @@ def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype ;; ../../../../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?#227` : null?, heaptype#227 : heaptype, `null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*, `null?#239` : null?, heaptype#239 : heaptype}(`REF`_reftype{`null?#227`, heaptype#227}(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `REF`_reftype{`null?#239`, heaptype#239}(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + 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 def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype @@ -112762,32 +88013,32 @@ def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storaget ;; ../../../../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?#67` : mut?, storagetype#11 : storagetype, `mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*, `mut?#79` : mut?, storagetype#23 : storagetype}(`%%`_fieldtype{`mut?#67`, storagetype#11}(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype{`mut?#79`, storagetype#23}(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + 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 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 - def $subst_comptype{`X*#11` : fieldtype*, `ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*, `X*#26` : fieldtype*}(`STRUCT`_comptype(`%`_list{`X*#11`}(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `STRUCT`_comptype(`%`_list{`X*#26`}($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) + 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 - def $subst_comptype{fieldtype#1 : fieldtype, ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*, fieldtype#3 : fieldtype}(`ARRAY`_comptype{fieldtype#1}(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `ARRAY`_comptype{fieldtype#3}($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + 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 - def $subst_comptype{resulttype#1 : resulttype, `X*#41` : valtype*, `t_1*` : valtype*, `X*#54` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*, resulttype#4 : resulttype, `X*#69` : valtype*, `X*#82` : valtype*}(`FUNC%->%`_comptype{resulttype#1}(`%`_resulttype{`X*#41`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#54`}(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype{resulttype#4}(`%`_resulttype{`X*#69`}($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype{`X*#82`}($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) + 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 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?#11` : final?, `typeuse*#11` : typeuse*, comptype#11 : comptype, `final?` : final?, `tu'*` : typeuse*, ct : comptype, `tv*` : typevar*, `tu*` : typeuse*, `final?#23` : final?, `typeuse*#23` : typeuse*, comptype#23 : comptype}(`SUB`_subtype{`final?#11`, `typeuse*#11`, comptype#11}(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `SUB`_subtype{`final?#23`, `typeuse*#23`, comptype#23}(final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + 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 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 - def $subst_rectype{`X*#97` : subtype*, `st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `X*#112` : subtype*, `tv'*` : typevar*, `tu'*` : typeuse*}(`REC`_rectype(`%`_list{`X*#97`}(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `REC`_rectype(`%`_list{`X*#112`}($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) + 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 def $subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:413.1-413.80 - def $subst_deftype{rectype#63 : rectype, n#65 : n, qt : rectype, i : n, `tv*` : typevar*, `tu*` : typeuse*, rectype#75 : rectype, n#77 : n}(`_DEF`_deftype{rectype#63, n#65}(qt, i), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `_DEF`_deftype{rectype#75, n#77}($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i) + 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 @@ -112803,80 +88054,80 @@ def $subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype ;; ../../../../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?#149` : mut?, valtype#67 : valtype, `mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*, `mut?#161` : mut?, valtype#79 : valtype}(`%%`_globaltype{`mut?#149`, valtype#67}(mut?{mut <- `mut?`}, t), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_globaltype{`mut?#161`, valtype#79}(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + 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{addrtype#91 : addrtype, limits#91 : limits, at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*, addrtype#103 : addrtype, limits#103 : limits}(`%%PAGE`_memtype{addrtype#91, limits#91}(at, lim), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%PAGE`_memtype{addrtype#103, limits#103}(at, lim) + 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{addrtype#115 : addrtype, limits#115 : limits, reftype#51 : reftype, at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*, addrtype#127 : addrtype, limits#127 : limits, reftype#63 : reftype}(`%%%`_tabletype{addrtype#115, limits#115, reftype#51}(at, lim, rt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%%`_tabletype{addrtype#127, limits#127, reftype#63}(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + 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{tagtype#3 : tagtype, jt : tagtype, `tv*` : typevar*, `tu*` : typeuse*, tagtype#5 : tagtype}(`TAG`_externtype{tagtype#3}(jt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `TAG`_externtype{tagtype#5}($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + 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{globaltype#3 : globaltype, gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*, globaltype#5 : globaltype}(`GLOBAL`_externtype{globaltype#3}(gt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `GLOBAL`_externtype{globaltype#5}($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + 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{tabletype#3 : tabletype, tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*, tabletype#5 : tabletype}(`TABLE`_externtype{tabletype#3}(tt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `TABLE`_externtype{tabletype#5}($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + 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{memtype#3 : memtype, mt : memtype, `tv*` : typevar*, `tu*` : typeuse*, memtype#5 : memtype}(`MEM`_externtype{memtype#3}(mt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `MEM`_externtype{memtype#5}($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) + 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{typeuse#3 : typeuse, dt : deftype, `tv*` : typevar*, `tu*` : typeuse*, typeuse#5 : typeuse}(`FUNC`_externtype{typeuse#3}((dt : deftype <: typeuse)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC`_externtype{typeuse#5}(($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse)) + 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{`externtype*#18` : externtype*, `xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*, `externtype*#38` : externtype*}(`%->%`_moduletype{`externtype*#18`}(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`}), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%->%`_moduletype{`externtype*#38`}($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*`}) + 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, n : n, `tu*` : typeuse*, i : nat, `i#779*` : nat*, `typeidx#5*` : typeidx*}(t, tu^n{tu <- `tu*`}) = $subst_valtype(t, `_IDX`_typevar{typeidx#5}(`%`_typeidx{i#779}(i))^(i%`_comptype{resulttype#7}(resulttype_1, resulttype_2)) = $free_resulttype(resulttype_1) +++ $free_resulttype(resulttype_2) + 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 def $free_subtype(subtype : subtype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:553.1-554.66 - def $free_subtype{`final?#179` : final?, `typeuse*#179` : typeuse*, comptype#179 : comptype, `final?` : final?, `typeuse*` : typeuse*, comptype : comptype}(`SUB`_subtype{`final?#179`, `typeuse*#179`, comptype#179}(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) = $free_list($free_typeuse(typeuse)*{typeuse <- `typeuse*`}) +++ $free_comptype(comptype) + 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{`X*#302` : subtype*, `subtype*` : subtype*}(`REC`_rectype(`%`_list{`X*#302`}(subtype*{subtype <- `subtype*`}))) = $free_list($free_subtype(subtype)*{subtype <- `subtype*`}) + 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#241 : rectype, n#247 : n, rectype : rectype, n : n}(`_DEF`_deftype{rectype#241, n#247}(rectype, n)) = $free_rectype(rectype) + def $free_deftype{rectype : rectype, n : n}(`_DEF`_deftype(rectype, n)) = $free_rectype(rectype) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -113048,22 +88299,22 @@ def $free_tagtype(tagtype : tagtype) : free ;; ../../../../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?#253` : mut?, valtype#127 : valtype, `mut?` : mut?, valtype : valtype}(`%%`_globaltype{`mut?#253`, valtype#127}(mut?{mut <- `mut?`}, valtype)) = $free_valtype(valtype) + 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#211 : addrtype, limits#211 : limits, addrtype : addrtype, limits : limits}(`%%PAGE`_memtype{addrtype#211, limits#211}(addrtype, limits)) = $free_addrtype((addrtype : addrtype <: numtype)) + 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#223 : addrtype, limits#223 : limits, reftype#111 : reftype, addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype{addrtype#223, limits#223, reftype#111}(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 : 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{`typeidx*#19` : typeidx*, `funcidx*#19` : funcidx*, `globalidx*#19` : globalidx*, `tableidx*#19` : tableidx*, `memidx*#19` : memidx*, `elemidx*#19` : elemidx*, `dataidx*#19` : dataidx*, `localidx*#19` : localidx*, `labelidx*#19` : labelidx*}(`OK`_datatype) = {`TYPES`{`typeidx*#19`} [], `FUNCS`{`funcidx*#19`} [], `GLOBALS`{`globalidx*#19`} [], `TABLES`{`tableidx*#19`} [], `MEMS`{`memidx*#19`} [], `ELEMS`{`elemidx*#19`} [], `DATAS`{`dataidx*#19`} [], `LOCALS`{`localidx*#19`} [], `LABELS`{`labelidx*#19`} []} + 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 @@ -113073,20 +88324,20 @@ def $free_elemtype(elemtype : elemtype) : free ;; ../../../../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#7 : tagtype, tagtype : tagtype}(`TAG`_externtype{tagtype#7}(tagtype)) = $free_tagtype(tagtype) + def $free_externtype{tagtype : tagtype}(`TAG`_externtype(tagtype)) = $free_tagtype(tagtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{globaltype#7 : globaltype, globaltype : globaltype}(`GLOBAL`_externtype{globaltype#7}(globaltype)) = $free_globaltype(globaltype) + def $free_externtype{globaltype : globaltype}(`GLOBAL`_externtype(globaltype)) = $free_globaltype(globaltype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{memtype#7 : memtype, memtype : memtype}(`MEM`_externtype{memtype#7}(memtype)) = $free_memtype(memtype) + def $free_externtype{memtype : memtype}(`MEM`_externtype(memtype)) = $free_memtype(memtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{tabletype#7 : tabletype, tabletype : tabletype}(`TABLE`_externtype{tabletype#7}(tabletype)) = $free_tabletype(tabletype) + def $free_externtype{tabletype : tabletype}(`TABLE`_externtype(tabletype)) = $free_tabletype(tabletype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{typeuse#7 : typeuse, typeuse : typeuse}(`FUNC`_externtype{typeuse#7}(typeuse)) = $free_typeuse(typeuse) + 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*#88` : externtype*, `externtype_1*` : externtype*, `externtype_2*` : externtype*}(`%->%`_moduletype{`externtype*#88`}(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*`}) + 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) @@ -113134,7 +88385,7 @@ syntax lit_(storagetype : storagetype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax sz = - | `%`{i : nat}(i : nat) + | `%`(i : nat) -- if ((((i = 8) \/ (i = 16)) \/ (i = 32)) \/ (i = 64)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -113149,8 +88400,8 @@ syntax unop_(numtype : numtype) | `CLZ` | `CTZ` | `POPCNT` - | `EXTEND`{sz : sz, i#1051 : nat}(sz : sz) - -- if (sz!`%`_sz{i#1051}.0 < $sizenn((Inn : Inn <: numtype))) + | `EXTEND`(sz : sz) + -- if (sz!`%`_sz.0 < $sizenn((Inn : Inn <: numtype))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -113171,13 +88422,13 @@ syntax binop_(numtype : numtype) | `ADD` | `SUB` | `MUL` - | `DIV`{sx : sx}(sx : sx) - | `REM`{sx : sx}(sx : sx) + | `DIV`(sx : sx) + | `REM`(sx : sx) | `AND` | `OR` | `XOR` | `SHL` - | `SHR`{sx : sx}(sx : sx) + | `SHR`(sx : sx) | `ROTL` | `ROTR` @@ -113203,10 +88454,10 @@ syntax relop_(numtype : numtype) syntax relop_{Inn : Inn}((Inn : Inn <: numtype)) = | `EQ` | `NE` - | `LT`{sx : sx}(sx : sx) - | `GT`{sx : sx}(sx : sx) - | `LE`{sx : sx}(sx : sx) - | `GE`{sx : sx}(sx : sx) + | `LT`(sx : sx) + | `GT`(sx : sx) + | `LE`(sx : sx) + | `GE`(sx : sx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -113223,7 +88474,7 @@ syntax relop_(numtype : numtype) 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 : Inn <: numtype), (Inn_2 : Inn <: numtype)) = - | `EXTEND`{sx : sx}(sx : sx) + | `EXTEND`(sx : sx) -- if ($sizenn1((Inn_1 : Inn <: numtype)) < $sizenn2((Inn_2 : Inn <: numtype))) | `WRAP` -- if ($sizenn1((Inn_1 : Inn <: numtype)) > $sizenn2((Inn_2 : Inn <: numtype))) @@ -113231,15 +88482,15 @@ syntax cvtop__(numtype_1 : numtype, numtype_2 : numtype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax cvtop__{Inn_1 : Inn, Fnn_2 : Fnn}((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype)) = - | `CONVERT`{sx : sx}(sx : sx) + | `CONVERT`(sx : sx) | `REINTERPRET` -- if ($sizenn1((Inn_1 : Inn <: 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 : Inn <: numtype)) = - | `TRUNC`{sx : sx}(sx : sx) - | `TRUNC_SAT`{sx : sx}(sx : sx) + | `TRUNC`(sx : sx) + | `TRUNC_SAT`(sx : sx) | `REINTERPRET` -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) = $sizenn2((Inn_2 : Inn <: numtype))) @@ -113254,37 +88505,37 @@ syntax cvtop__(numtype_1 : numtype, numtype_2 : numtype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax dim = - | `%`{i : nat}(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, i#1053 : nat}(lanetype : lanetype, dim : dim) - -- if (($lsize(lanetype) * dim!`%`_dim{i#1053}.0) = 128) + | `%X%`(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{lanetype#11 : lanetype, dim#11 : dim, i#1058 : nat, Lnn : Lnn, i#1065 : nat, N : N, i#1073 : nat}(`%X%`_shape{lanetype#11, dim#11, i#1058}(Lnn, `%`_dim{i#1065}(N))) = `%`_dim{i#1073}(N) + 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{lanetype#23 : lanetype, dim#23 : dim, i#1078 : nat, Lnn : Lnn, i#1085 : nat, N : N}(`%X%`_shape{lanetype#23, dim#23, i#1078}(Lnn, `%`_dim{i#1085}(N))) = Lnn + 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{lanetype#35 : lanetype, dim#35 : dim, i#1090 : nat, Lnn : Lnn, i#1097 : nat, N : N}(`%X%`_shape{lanetype#35, dim#35, i#1090}(Lnn, `%`_dim{i#1097}(N))) = $lunpack(Lnn) + 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) + | `%`(shape : shape){Jnn : Jnn} -- if ($lanetype(shape) = (Jnn : Jnn <: lanetype)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax bshape = - | `%`{shape : shape}(shape : shape) + | `%`(shape : shape) -- if ($lanetype(shape) = `I8`_lanetype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -113318,7 +88569,7 @@ syntax vvtestop = ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vunop_(shape : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vunop_{lanetype#65 : lanetype, dim#65 : dim, i#1108 : nat, Jnn : Jnn, i#1115 : nat, M : M}(`%X%`_shape{lanetype#65, dim#65, i#1108}((Jnn : Jnn <: lanetype), `%`_dim{i#1115}(M))) = + syntax vunop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = | `ABS` | `NEG` | `POPCNT` @@ -113326,7 +88577,7 @@ syntax vunop_(shape : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vunop_{lanetype#77 : lanetype, dim#77 : dim, i#1120 : nat, Fnn : Fnn, i#1127 : nat, M : M}(`%X%`_shape{lanetype#77, dim#77, i#1120}((Fnn : Fnn <: lanetype), `%`_dim{i#1127}(M))) = + syntax vunop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) = | `ABS` | `NEG` | `SQRT` @@ -113339,12 +88590,12 @@ syntax vunop_(shape : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vbinop_(shape : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vbinop_{lanetype#89 : lanetype, dim#89 : dim, i#1132 : nat, Jnn : Jnn, i#1139 : nat, M : M}(`%X%`_shape{lanetype#89, dim#89, i#1132}((Jnn : Jnn <: lanetype), `%`_dim{i#1139}(M))) = + syntax vbinop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = | `ADD` | `SUB` - | `ADD_SAT`{sx : sx}(sx : sx) + | `ADD_SAT`(sx : sx) -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) - | `SUB_SAT`{sx : sx}(sx : sx) + | `SUB_SAT`(sx : sx) -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) | `MUL` -- if ($lsizenn((Jnn : Jnn <: lanetype)) >= 16) @@ -113354,14 +88605,14 @@ syntax vbinop_(shape : shape) -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 16) | `RELAXED_Q15MULRS` -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 16) - | `MIN`{sx : sx}(sx : sx) + | `MIN`(sx : sx) -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 32) - | `MAX`{sx : sx}(sx : sx) + | `MAX`(sx : sx) -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 32) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vbinop_{lanetype#101 : lanetype, dim#101 : dim, i#1144 : nat, Fnn : Fnn, i#1151 : nat, M : M}(`%X%`_shape{lanetype#101, dim#101, i#1144}((Fnn : Fnn <: lanetype), `%`_dim{i#1151}(M))) = + syntax vbinop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) = | `ADD` | `SUB` | `MUL` @@ -113377,38 +88628,38 @@ syntax vbinop_(shape : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vternop_(shape : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vternop_{lanetype#113 : lanetype, dim#113 : dim, i#1156 : nat, Jnn : Jnn, i#1163 : nat, M : M}(`%X%`_shape{lanetype#113, dim#113, i#1156}((Jnn : Jnn <: lanetype), `%`_dim{i#1163}(M))) = + 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_{lanetype#125 : lanetype, dim#125 : dim, i#1168 : nat, Fnn : Fnn, i#1175 : nat, M : M}(`%X%`_shape{lanetype#125, dim#125, i#1168}((Fnn : Fnn <: lanetype), `%`_dim{i#1175}(M))) = + 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_(lanetype#137 : lanetype, dim#137 : dim, i#1180 : nat, Jnn : Jnn, i#1187 : nat, M : M)(`%X%`_shape{lanetype#137, dim#137, i#1180}((Jnn : Jnn <: lanetype), `%`_dim{i#1187}(M))) = +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_{lanetype#149 : lanetype, dim#149 : dim, i#1192 : nat, Jnn : Jnn, i#1199 : nat, M : M}(`%X%`_shape{lanetype#149, dim#149, i#1192}((Jnn : Jnn <: lanetype), `%`_dim{i#1199}(M))) = + syntax vrelop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = | `EQ` | `NE` - | `LT`{sx : sx}(sx : sx) + | `LT`(sx : sx) -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = `S`_sx)) - | `GT`{sx : sx}(sx : sx) + | `GT`(sx : sx) -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = `S`_sx)) - | `LE`{sx : sx}(sx : sx) + | `LE`(sx : sx) -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = `S`_sx)) - | `GE`{sx : sx}(sx : sx) + | `GE`(sx : sx) -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = `S`_sx)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vrelop_{lanetype#161 : lanetype, dim#161 : dim, i#1204 : nat, Fnn : Fnn, i#1211 : nat, M : M}(`%X%`_shape{lanetype#161, dim#161, i#1204}((Fnn : Fnn <: lanetype), `%`_dim{i#1211}(M))) = + syntax vrelop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) = | `EQ` | `NE` | `LT` @@ -113418,23 +88669,23 @@ syntax vrelop_(shape : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vshiftop_(shape#11 : shape, Jnn#4 : Jnn, lanetype#173 : lanetype, dim#173 : dim, i#1216 : nat, Jnn : Jnn, i#1223 : nat, M : M)(`%`_ishape{shape#11, Jnn#4}(`%X%`_shape{lanetype#173, dim#173, i#1216}((Jnn : Jnn <: lanetype), `%`_dim{i#1223}(M)))) = +syntax vshiftop_(Jnn : Jnn, M : M)(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) = | `SHL` - | `SHR`{sx : sx}(sx : sx) + | `SHR`(sx : sx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vswizzlop_(shape#23 : shape, lanetype#185 : lanetype, dim#185 : dim, i#1228 : nat, i#1235 : nat, M : M)(`%`_bshape{shape#23}(`%X%`_shape{lanetype#185, dim#185, i#1228}(`I8`_lanetype, `%`_dim{i#1235}(M)))) = +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__(shape#35 : shape, Jnn#8 : Jnn, lanetype#197 : lanetype, dim#197 : dim, i#1240 : nat, Jnn_1 : Jnn, i#1247 : nat, M_1 : M, shape#47 : shape, Jnn#12 : Jnn, lanetype#209 : lanetype, dim#209 : dim, i#1252 : nat, Jnn_2 : Jnn, i#1259 : nat, M_2 : M)(`%`_ishape{shape#35, Jnn#8}(`%X%`_shape{lanetype#197, dim#197, i#1240}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#1247}(M_1))), `%`_ishape{shape#47, Jnn#12}(`%X%`_shape{lanetype#209, dim#209, i#1252}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#1259}(M_2)))) = - | `EXTADD_PAIRWISE`{sx : sx}(sx : sx) +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) -- 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__(shape#59 : shape, Jnn#16 : Jnn, lanetype#221 : lanetype, dim#221 : dim, i#1264 : nat, Jnn_1 : Jnn, i#1271 : nat, M_1 : M, shape#71 : shape, Jnn#20 : Jnn, lanetype#233 : lanetype, dim#233 : dim, i#1276 : nat, Jnn_2 : Jnn, i#1283 : nat, M_2 : M)(`%`_ishape{shape#59, Jnn#16}(`%X%`_shape{lanetype#221, dim#221, i#1264}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#1271}(M_1))), `%`_ishape{shape#71, Jnn#20}(`%X%`_shape{lanetype#233, dim#233, i#1276}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#1283}(M_2)))) = - | `EXTMUL`{half : half, sx : sx}(half : half, sx : sx) +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) -- 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)) @@ -113442,35 +88693,35 @@ syntax vextbinop__(shape#59 : shape, Jnn#16 : Jnn, lanetype#221 : lanetype, dim# -- 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__(shape#83 : shape, Jnn#24 : Jnn, lanetype#245 : lanetype, dim#245 : dim, i#1288 : nat, Jnn_1 : Jnn, i#1295 : nat, M_1 : M, shape#95 : shape, Jnn#28 : Jnn, lanetype#257 : lanetype, dim#257 : dim, i#1300 : nat, Jnn_2 : Jnn, i#1307 : nat, M_2 : M)(`%`_ishape{shape#83, Jnn#24}(`%X%`_shape{lanetype#245, dim#245, i#1288}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#1295}(M_1))), `%`_ishape{shape#95, Jnn#28}(`%X%`_shape{lanetype#257, dim#257, i#1300}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#1307}(M_2)))) = +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__{lanetype#269 : lanetype, dim#269 : dim, i#1312 : nat, Jnn_1 : Jnn, i#1319 : nat, M_1 : M, lanetype#281 : lanetype, dim#281 : dim, i#1324 : nat, Jnn_2 : Jnn, i#1331 : nat, M_2 : M}(`%X%`_shape{lanetype#269, dim#269, i#1312}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#1319}(M_1)), `%X%`_shape{lanetype#281, dim#281, i#1324}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#1331}(M_2))) = - | `EXTEND`{half : half, sx : sx}(half : half, sx : sx) + 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) -- if ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vcvtop__{lanetype#293 : lanetype, dim#293 : dim, i#1336 : nat, Jnn_1 : Jnn, i#1343 : nat, M_1 : M, lanetype#305 : lanetype, dim#305 : dim, i#1348 : nat, Fnn_2 : Fnn, i#1355 : nat, M_2 : M}(`%X%`_shape{lanetype#293, dim#293, i#1336}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#1343}(M_1)), `%X%`_shape{lanetype#305, dim#305, i#1348}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#1355}(M_2))) = - | `CONVERT`{`half?` : half?, sx : sx}(`half?` : half?, sx : sx) + 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) -- 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__{lanetype#317 : lanetype, dim#317 : dim, i#1360 : nat, Fnn_1 : Fnn, i#1367 : nat, M_1 : M, lanetype#329 : lanetype, dim#329 : dim, i#1372 : nat, Jnn_2 : Jnn, i#1379 : nat, M_2 : M}(`%X%`_shape{lanetype#317, dim#317, i#1360}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#1367}(M_1)), `%X%`_shape{lanetype#329, dim#329, i#1372}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#1379}(M_2))) = - | `TRUNC_SAT`{sx : sx, `zero?` : zero?}(sx : sx, `zero?` : zero?) + 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?) -- 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?) + | `RELAXED_TRUNC`(sx : sx, `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__{lanetype#341 : lanetype, dim#341 : dim, i#1384 : nat, Fnn_1 : Fnn, i#1391 : nat, M_1 : M, lanetype#353 : lanetype, dim#353 : dim, i#1396 : nat, Fnn_2 : Fnn, i#1403 : nat, M_2 : M}(`%X%`_shape{lanetype#341, dim#341, i#1384}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#1391}(M_1)), `%X%`_shape{lanetype#353, dim#353, i#1396}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#1403}(M_2))) = - | `DEMOTE`{zero : zero}(zero : zero) + 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) -- 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))) @@ -113479,32 +88730,32 @@ syntax vcvtop__(shape_1 : shape, shape_2 : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax memarg = { - `ALIGN`{u32 : u32} u32, - `OFFSET`{u64 : u64} u64 + `ALIGN` u32 , + `OFFSET` u64 } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax loadop_(Inn : Inn)((Inn : Inn <: numtype)) = - | `%_%`{sz : sz, sx : sx, i#1405 : nat}(sz : sz, sx : sx) - -- if (sz!`%`_sz{i#1405}.0 < $sizenn((Inn : Inn <: numtype))) + | `%_%`(sz : sz, sx : sx) + -- if (sz!`%`_sz.0 < $sizenn((Inn : Inn <: numtype))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax storeop_(Inn : Inn)((Inn : Inn <: numtype)) = - | `%`{sz : sz, i#1407 : nat}(sz : sz) - -- if (sz!`%`_sz{i#1407}.0 < $sizenn((Inn : Inn <: numtype))) + | `%`(sz : sz) + -- if (sz!`%`_sz.0 < $sizenn((Inn : Inn <: numtype))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vloadop_(vectype : vectype)(vectype) = - | `SHAPE%X%_%`{sz : sz, M : M, sx : sx, i#1409 : nat}(sz : sz, M : M, sx : sx) - -- if (((sz!`%`_sz{i#1409}.0 * M) : nat <:> rat) = (($vsize(vectype) : nat <:> rat) / (2 : nat <:> rat))) - | `SPLAT`{sz : sz}(sz : sz) - | `ZERO`{sz : sz, i#1411 : nat}(sz : sz) - -- if (sz!`%`_sz{i#1411}.0 >= 32) + | `SHAPE%X%_%`(sz : sz, M : M, sx : sx) + -- if (((sz!`%`_sz.0 * M) : nat <:> rat) = (($vsize(vectype) : nat <:> rat) / (2 : nat <:> rat))) + | `SPLAT`(sz : sz) + | `ZERO`(sz : sz) + -- if (sz!`%`_sz.0 >= 32) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax blocktype = - | `_RESULT`{`valtype?` : valtype?}(`valtype?` : valtype?) - | `_IDX`{typeidx : typeidx}(typeidx : typeidx) + | `_RESULT`(`valtype?` : valtype?) + | `_IDX`(typeidx : typeidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax addr = nat @@ -113529,21 +88780,21 @@ 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) + | `REF.I31_NUM`(u31 : u31) + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `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) + | `CATCH`(tagidx : tagidx, labelidx : labelidx) + | `CATCH_REF`(tagidx : tagidx, labelidx : labelidx) + | `CATCH_ALL`(labelidx : labelidx) + | `CATCH_ALL_REF`(labelidx : labelidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax dataaddr = addr @@ -113565,51 +88816,51 @@ 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) + | `TAG`(tagaddr : tagaddr) + | `GLOBAL`(globaladdr : globaladdr) + | `MEM`(memaddr : memaddr) + | `TABLE`(tableaddr : tableaddr) + | `FUNC`(funcaddr : funcaddr) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax exportinst = { - `NAME`{name : name} name, - `ADDR`{externaddr : externaddr} externaddr + `NAME` name , + `ADDR` 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* + `TYPES` deftype* , + `TAGS` tagaddr* , + `GLOBALS` globaladdr* , + `MEMS` memaddr* , + `TABLES` tableaddr* , + `FUNCS` funcaddr* , + `DATAS` dataaddr* , + `ELEMS` elemaddr* , + `EXPORTS` exportinst* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax val = - | `CONST`{numtype : numtype}(numtype : numtype, num_(numtype)) - | `VCONST`{vectype : vectype}(vectype : vectype, vec_(vectype)) - | `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) + | `CONST`(numtype : numtype, num_(numtype)) + | `VCONST`(vectype : vectype, vec_(vectype)) + | `REF.I31_NUM`(u31 : u31) + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(addrref : addrref) + | `REF.NULL`(heaptype : heaptype) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax frame = { - `LOCALS`{`val?*` : val?*} val?*, - `MODULE`{moduleinst : moduleinst} moduleinst + `LOCALS` val?* , + `MODULE` moduleinst } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -113620,120 +88871,120 @@ syntax instr = | `NOP` | `UNREACHABLE` | `DROP` - | `SELECT`{`valtype*?` : valtype*?}(`valtype*?` : valtype*?) - | `BLOCK`{blocktype : blocktype, `instr*` : instr*}(blocktype : blocktype, `instr*` : instr*) - | `LOOP`{blocktype : blocktype, `instr*` : instr*}(blocktype : blocktype, `instr*` : instr*) - | `IF%%ELSE%`{blocktype : blocktype, `instr*` : instr*}(blocktype : blocktype, `instr*` : instr*, `instr*` : instr*) - | `BR`{labelidx : labelidx}(labelidx : labelidx) - | `BR_IF`{labelidx : labelidx}(labelidx : labelidx) - | `BR_TABLE`{`labelidx*` : 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 : reftype) - | `BR_ON_CAST_FAIL`{labelidx : labelidx, reftype : reftype}(labelidx : labelidx, reftype : reftype, reftype : reftype) - | `CALL`{funcidx : funcidx}(funcidx : funcidx) - | `CALL_REF`{typeuse : typeuse}(typeuse : typeuse) - | `CALL_INDIRECT`{tableidx : tableidx, typeuse : typeuse}(tableidx : tableidx, typeuse : typeuse) + | `SELECT`(`valtype*?` : valtype*?) + | `BLOCK`(blocktype : blocktype, `instr*` : instr*) + | `LOOP`(blocktype : blocktype, `instr*` : instr*) + | `IF%%ELSE%`(blocktype : blocktype, `instr*` : instr*, `instr*` : instr*) + | `BR`(labelidx : labelidx) + | `BR_IF`(labelidx : labelidx) + | `BR_TABLE`(`labelidx*` : labelidx*, labelidx : labelidx) + | `BR_ON_NULL`(labelidx : labelidx) + | `BR_ON_NON_NULL`(labelidx : labelidx) + | `BR_ON_CAST`(labelidx : labelidx, reftype : reftype, reftype : reftype) + | `BR_ON_CAST_FAIL`(labelidx : labelidx, reftype : reftype, reftype : reftype) + | `CALL`(funcidx : funcidx) + | `CALL_REF`(typeuse : typeuse) + | `CALL_INDIRECT`(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) + | `RETURN_CALL`(funcidx : funcidx) + | `RETURN_CALL_REF`(typeuse : typeuse) + | `RETURN_CALL_INDIRECT`(tableidx : tableidx, typeuse : typeuse) + | `THROW`(tagidx : tagidx) | `THROW_REF` - | `TRY_TABLE`{blocktype : blocktype, `instr*` : instr*}(blocktype : blocktype, list(syntax catch), `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 : tableidx) - | `TABLE.INIT`{tableidx : tableidx, elemidx : elemidx}(tableidx : tableidx, elemidx : elemidx) - | `ELEM.DROP`{elemidx : elemidx}(elemidx : elemidx) - | `LOAD`{`numtype?` : numtype?, memidx : memidx, memarg : memarg}(numtype : numtype, loadop_(numtype)?, memidx : memidx, memarg : memarg) - | `STORE`{`numtype?` : numtype?, memidx : memidx, memarg : memarg}(numtype : numtype, storeop_(numtype)?, memidx : memidx, memarg : memarg) - | `VLOAD`{`vectype?` : vectype?, memidx : memidx, memarg : memarg}(vectype : vectype, 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 : memidx) - | `MEMORY.INIT`{memidx : memidx, dataidx : dataidx}(memidx : memidx, dataidx : dataidx) - | `DATA.DROP`{dataidx : dataidx}(dataidx : dataidx) - | `REF.NULL`{heaptype : heaptype}(heaptype : heaptype) + | `TRY_TABLE`(blocktype : blocktype, list(syntax catch), `instr*` : instr*) + | `LOCAL.GET`(localidx : localidx) + | `LOCAL.SET`(localidx : localidx) + | `LOCAL.TEE`(localidx : localidx) + | `GLOBAL.GET`(globalidx : globalidx) + | `GLOBAL.SET`(globalidx : globalidx) + | `TABLE.GET`(tableidx : tableidx) + | `TABLE.SET`(tableidx : tableidx) + | `TABLE.SIZE`(tableidx : tableidx) + | `TABLE.GROW`(tableidx : tableidx) + | `TABLE.FILL`(tableidx : tableidx) + | `TABLE.COPY`(tableidx : tableidx, tableidx : tableidx) + | `TABLE.INIT`(tableidx : tableidx, elemidx : elemidx) + | `ELEM.DROP`(elemidx : elemidx) + | `LOAD`(numtype : numtype, loadop_(numtype)?, memidx : memidx, memarg : memarg) + | `STORE`(numtype : numtype, storeop_(numtype)?, memidx : memidx, memarg : memarg) + | `VLOAD`(vectype : vectype, vloadop_(vectype)?, memidx : memidx, memarg : memarg) + | `VLOAD_LANE`(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | `VSTORE`(vectype : vectype, memidx : memidx, memarg : memarg) + | `VSTORE_LANE`(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | `MEMORY.SIZE`(memidx : memidx) + | `MEMORY.GROW`(memidx : memidx) + | `MEMORY.FILL`(memidx : memidx) + | `MEMORY.COPY`(memidx : memidx, memidx : memidx) + | `MEMORY.INIT`(memidx : memidx, dataidx : dataidx) + | `DATA.DROP`(dataidx : dataidx) + | `REF.NULL`(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.TEST`(reftype : reftype) + | `REF.CAST`(reftype : reftype) + | `REF.FUNC`(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?, 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?, typeidx : typeidx) - | `ARRAY.SET`{typeidx : typeidx}(typeidx : typeidx) + | `I31.GET`(sx : sx) + | `STRUCT.NEW`(typeidx : typeidx) + | `STRUCT.NEW_DEFAULT`(typeidx : typeidx) + | `STRUCT.GET`(`sx?` : sx?, typeidx : typeidx, u32 : u32) + | `STRUCT.SET`(typeidx : typeidx, u32 : u32) + | `ARRAY.NEW`(typeidx : typeidx) + | `ARRAY.NEW_DEFAULT`(typeidx : typeidx) + | `ARRAY.NEW_FIXED`(typeidx : typeidx, u32 : u32) + | `ARRAY.NEW_DATA`(typeidx : typeidx, dataidx : dataidx) + | `ARRAY.NEW_ELEM`(typeidx : typeidx, elemidx : elemidx) + | `ARRAY.GET`(`sx?` : sx?, typeidx : typeidx) + | `ARRAY.SET`(typeidx : typeidx) | `ARRAY.LEN` - | `ARRAY.FILL`{typeidx : typeidx}(typeidx : typeidx) - | `ARRAY.COPY`{typeidx : 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) + | `ARRAY.FILL`(typeidx : typeidx) + | `ARRAY.COPY`(typeidx : typeidx, typeidx : typeidx) + | `ARRAY.INIT_DATA`(typeidx : typeidx, dataidx : dataidx) + | `ARRAY.INIT_ELEM`(typeidx : typeidx, elemidx : elemidx) | `EXTERN.CONVERT_ANY` | `ANY.CONVERT_EXTERN` - | `CONST`{numtype : numtype}(numtype : numtype, num_(numtype)) - | `UNOP`{numtype : numtype}(numtype : numtype, unop_(numtype)) - | `BINOP`{numtype : numtype}(numtype : numtype, binop_(numtype)) - | `TESTOP`{numtype : numtype}(numtype : numtype, testop_(numtype)) - | `RELOP`{numtype : numtype}(numtype : numtype, relop_(numtype)) - | `CVTOP`{numtype_1 : numtype, numtype_2 : numtype}(numtype_1 : numtype, numtype_2 : numtype, cvtop__(numtype_2, numtype_1)) - | `VCONST`{vectype : vectype}(vectype : vectype, 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}(shape : shape, vunop_(shape)) - | `VBINOP`{shape : shape}(shape : shape, vbinop_(shape)) - | `VTERNOP`{shape : shape}(shape : shape, vternop_(shape)) - | `VTESTOP`{shape : shape}(shape : shape, vtestop_(shape)) - | `VRELOP`{shape : shape}(shape : shape, vrelop_(shape)) - | `VSHIFTOP`{ishape : ishape}(ishape : ishape, vshiftop_(ishape)) - | `VBITMASK`{ishape : ishape}(ishape : ishape) - | `VSWIZZLOP`{bshape : bshape}(bshape : bshape, vswizzlop_(bshape)) - | `VSHUFFLE`{bshape : bshape, `laneidx*` : laneidx*, i#1432 : nat, shape#109 : shape}(bshape : bshape, `laneidx*` : laneidx*) - -- if (`%`_dim{i#1432}(|laneidx*{laneidx <- `laneidx*`}|) = $dim(bshape!`%`_bshape{shape#109}.0)) - | `VEXTUNOP`{ishape_1 : ishape, ishape_2 : ishape}(ishape_1 : ishape, ishape_2 : ishape, vextunop__(ishape_2, ishape_1)) - | `VEXTBINOP`{ishape_1 : ishape, ishape_2 : ishape}(ishape_1 : ishape, ishape_2 : ishape, vextbinop__(ishape_2, ishape_1)) - | `VEXTTERNOP`{ishape_1 : ishape, ishape_2 : ishape}(ishape_1 : ishape, ishape_2 : ishape, vextternop__(ishape_2, ishape_1)) - | `VNARROW`{ishape_1 : ishape, ishape_2 : ishape, sx : sx, shape#149 : shape, Jnn#44 : Jnn, shape#147 : shape, Jnn#43 : Jnn, shape#151 : shape, Jnn#45 : Jnn}(ishape_1 : ishape, ishape_2 : ishape, sx : sx) - -- if (($lsize($lanetype(ishape_2!`%`_ishape{shape#149, Jnn#44}.0)) = (2 * $lsize($lanetype(ishape_1!`%`_ishape{shape#147, Jnn#43}.0)))) /\ ((2 * $lsize($lanetype(ishape_1!`%`_ishape{shape#151, Jnn#45}.0))) <= 32)) - | `VCVTOP`{shape_1 : shape, shape_2 : shape}(shape_1 : shape, shape_2 : shape, vcvtop__(shape_2, shape_1)) - | `VSPLAT`{shape : shape}(shape : shape) - | `VEXTRACT_LANE`{shape : shape, `sx?` : sx?, laneidx : laneidx}(shape : shape, `sx?` : sx?, laneidx : laneidx) + | `CONST`(numtype : numtype, num_(numtype)) + | `UNOP`(numtype : numtype, unop_(numtype)) + | `BINOP`(numtype : numtype, binop_(numtype)) + | `TESTOP`(numtype : numtype, testop_(numtype)) + | `RELOP`(numtype : numtype, relop_(numtype)) + | `CVTOP`(numtype_1 : numtype, numtype_2 : numtype, cvtop__(numtype_2, numtype_1)) + | `VCONST`(vectype : vectype, vec_(vectype)) + | `VVUNOP`(vectype : vectype, vvunop : vvunop) + | `VVBINOP`(vectype : vectype, vvbinop : vvbinop) + | `VVTERNOP`(vectype : vectype, vvternop : vvternop) + | `VVTESTOP`(vectype : vectype, vvtestop : vvtestop) + | `VUNOP`(shape : shape, vunop_(shape)) + | `VBINOP`(shape : shape, vbinop_(shape)) + | `VTERNOP`(shape : shape, vternop_(shape)) + | `VTESTOP`(shape : shape, vtestop_(shape)) + | `VRELOP`(shape : shape, vrelop_(shape)) + | `VSHIFTOP`(ishape : ishape, vshiftop_(ishape)) + | `VBITMASK`(ishape : ishape) + | `VSWIZZLOP`(bshape : bshape, vswizzlop_(bshape)) + | `VSHUFFLE`(bshape : bshape, `laneidx*` : laneidx*) + -- if (`%`_dim(|laneidx*{laneidx <- `laneidx*`}|) = $dim(bshape!`%`_bshape.0)) + | `VEXTUNOP`(ishape_1 : ishape, ishape_2 : ishape, vextunop__(ishape_2, ishape_1)) + | `VEXTBINOP`(ishape_1 : ishape, ishape_2 : ishape, vextbinop__(ishape_2, ishape_1)) + | `VEXTTERNOP`(ishape_1 : ishape, ishape_2 : ishape, vextternop__(ishape_2, ishape_1)) + | `VNARROW`(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__(shape_2, shape_1)) + | `VSPLAT`(shape : shape) + | `VEXTRACT_LANE`(shape : shape, `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*) - | `FRAME_%{%}%`{n : n, frame : frame, `instr*` : instr*}(n : n, frame : frame, `instr*` : instr*) - | `HANDLER_%{%}%`{n : n, `catch*` : catch*, `instr*` : instr*}(n : n, `catch*` : catch*, `instr*` : instr*) + | `VREPLACE_LANE`(shape : shape, laneidx : laneidx) + | `REF.I31_NUM`(u31 : u31) + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(addrref : addrref) + | `LABEL_%{%}%`(n : n, `instr*` : instr*, `instr*` : instr*) + | `FRAME_%{%}%`(n : n, frame : frame, `instr*` : instr*) + | `HANDLER_%{%}%`(n : n, `catch*` : catch*, `instr*` : instr*) | `TRAP` } @@ -113743,26 +88994,26 @@ 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{u32#1 : u32, i#1467 : nat, u64#37 : u64, i#1487 : nat} = {`ALIGN`{u32#1} `%`_u32{i#1467}(0), `OFFSET`{u64#37} `%`_u64{i#1487}(0)} + 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 <: consttype) : consttype <: storagetype)), numtype#1 : numtype}((numtype : numtype <: consttype), c) = `CONST`_instr{numtype#1}(numtype, c) + def $const{numtype : numtype, c : lit_(((numtype : numtype <: consttype) : consttype <: 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 <: consttype) : consttype <: storagetype)), vectype#1 : vectype}((vectype : vectype <: consttype), c) = `VCONST`_instr{vectype#1}(vectype, c) + def $const{vectype : vectype, c : lit_(((vectype : vectype <: consttype) : consttype <: 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#445 : lanetype, dim#445 : dim, i#1518 : nat, lanetype : lanetype, dim : dim}(`%X%`_shape{lanetype#445, dim#445, i#1518}(lanetype, dim)) = $free_lanetype(lanetype) + 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?#1` : valtype?, `valtype?` : valtype?}(`_RESULT`_blocktype{`valtype?#1`}(valtype?{valtype <- `valtype?`})) = $free_opt($free_valtype(valtype)?{valtype <- `valtype?`}) + 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#27 : typeidx, typeidx : typeidx}(`_IDX`_blocktype{typeidx#27}(typeidx)) = $free_typeidx(typeidx) + def $free_blocktype{typeidx : typeidx}(`_IDX`_blocktype(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { @@ -113772,9 +89023,9 @@ 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{i#3333 : nat, `labelidx'*` : labelidx*}([`%`_labelidx{i#3333}(0)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) + 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*, i#3557 : nat, i#3547 : nat}([labelidx] ++ labelidx'*{labelidx' <- `labelidx'*`}) = [`%`_labelidx{i#3557}((((labelidx!`%`_labelidx{i#3547}.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) + 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 @@ -113783,212 +89034,212 @@ 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{`typeidx*#20` : typeidx*, `funcidx*#20` : funcidx*, `globalidx*#20` : globalidx*, `tableidx*#20` : tableidx*, `memidx*#20` : memidx*, `elemidx*#20` : elemidx*, `dataidx*#20` : dataidx*, `localidx*#20` : localidx*, `labelidx*#20` : labelidx*}(`NOP`_instr) = {`TYPES`{`typeidx*#20`} [], `FUNCS`{`funcidx*#20`} [], `GLOBALS`{`globalidx*#20`} [], `TABLES`{`tableidx*#20`} [], `MEMS`{`memidx*#20`} [], `ELEMS`{`elemidx*#20`} [], `DATAS`{`dataidx*#20`} [], `LOCALS`{`localidx*#20`} [], `LABELS`{`labelidx*#20`} []} + 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{`typeidx*#21` : typeidx*, `funcidx*#21` : funcidx*, `globalidx*#21` : globalidx*, `tableidx*#21` : tableidx*, `memidx*#21` : memidx*, `elemidx*#21` : elemidx*, `dataidx*#21` : dataidx*, `localidx*#21` : localidx*, `labelidx*#21` : labelidx*}(`UNREACHABLE`_instr) = {`TYPES`{`typeidx*#21`} [], `FUNCS`{`funcidx*#21`} [], `GLOBALS`{`globalidx*#21`} [], `TABLES`{`tableidx*#21`} [], `MEMS`{`memidx*#21`} [], `ELEMS`{`elemidx*#21`} [], `DATAS`{`dataidx*#21`} [], `LOCALS`{`localidx*#21`} [], `LABELS`{`labelidx*#21`} []} + 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{`typeidx*#22` : typeidx*, `funcidx*#22` : funcidx*, `globalidx*#22` : globalidx*, `tableidx*#22` : tableidx*, `memidx*#22` : memidx*, `elemidx*#22` : elemidx*, `dataidx*#22` : dataidx*, `localidx*#22` : localidx*, `labelidx*#22` : labelidx*}(`DROP`_instr) = {`TYPES`{`typeidx*#22`} [], `FUNCS`{`funcidx*#22`} [], `GLOBALS`{`globalidx*#22`} [], `TABLES`{`tableidx*#22`} [], `MEMS`{`memidx*#22`} [], `ELEMS`{`elemidx*#22`} [], `DATAS`{`dataidx*#22`} [], `LOCALS`{`localidx*#22`} [], `LABELS`{`labelidx*#22`} []} + 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*?#1` : valtype*?, `valtype*?` : valtype*?}(`SELECT`_instr{`valtype*?#1`}(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) + 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#1 : blocktype, `instr*#1` : instr*, blocktype : blocktype, `instr*` : instr*}(`BLOCK`_instr{blocktype#1, `instr*#1`}(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) + 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#3 : blocktype, `instr*#3` : instr*, blocktype : blocktype, `instr*` : instr*}(`LOOP`_instr{blocktype#3, `instr*#3`}(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) + 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#5 : blocktype, `instr*#5` : instr*, blocktype : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}(`IF%%ELSE%`_instr{blocktype#5, `instr*#5`}(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*`}) + 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#1 : labelidx, labelidx : labelidx}(`BR`_instr{labelidx#1}(labelidx)) = $free_labelidx(labelidx) + 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#3 : labelidx, labelidx : labelidx}(`BR_IF`_instr{labelidx#3}(labelidx)) = $free_labelidx(labelidx) + 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*#23` : labelidx*, labelidx#5 : labelidx, `labelidx*` : labelidx*, labelidx' : labelidx}(`BR_TABLE`_instr{`labelidx*#23`, labelidx#5}(labelidx*{labelidx <- `labelidx*`}, labelidx')) = $free_list($free_labelidx(labelidx)*{labelidx <- `labelidx*`}) +++ $free_labelidx(labelidx') + 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#7 : labelidx, labelidx : labelidx}(`BR_ON_NULL`_instr{labelidx#7}(labelidx)) = $free_labelidx(labelidx) + 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#9 : labelidx, labelidx : labelidx}(`BR_ON_NON_NULL`_instr{labelidx#9}(labelidx)) = $free_labelidx(labelidx) + 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#11 : labelidx, reftype#125 : reftype, labelidx : labelidx, reftype_1 : reftype, reftype_2 : reftype}(`BR_ON_CAST`_instr{labelidx#11, reftype#125}(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) + 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#13 : labelidx, reftype#128 : reftype, labelidx : labelidx, reftype_1 : reftype, reftype_2 : reftype}(`BR_ON_CAST_FAIL`_instr{labelidx#13, reftype#128}(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) + 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#5 : funcidx, funcidx : funcidx}(`CALL`_instr{funcidx#5}(funcidx)) = $free_funcidx(funcidx) + 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#9 : typeuse, typeuse : typeuse}(`CALL_REF`_instr{typeuse#9}(typeuse)) = $free_typeuse(typeuse) + 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#5 : tableidx, typeuse#11 : typeuse, tableidx : tableidx, typeuse : typeuse}(`CALL_INDIRECT`_instr{tableidx#5, typeuse#11}(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) + 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{`typeidx*#23` : typeidx*, `funcidx*#23` : funcidx*, `globalidx*#23` : globalidx*, `tableidx*#23` : tableidx*, `memidx*#23` : memidx*, `elemidx*#23` : elemidx*, `dataidx*#23` : dataidx*, `localidx*#23` : localidx*, `labelidx*#25` : labelidx*}(`RETURN`_instr) = {`TYPES`{`typeidx*#23`} [], `FUNCS`{`funcidx*#23`} [], `GLOBALS`{`globalidx*#23`} [], `TABLES`{`tableidx*#23`} [], `MEMS`{`memidx*#23`} [], `ELEMS`{`elemidx*#23`} [], `DATAS`{`dataidx*#23`} [], `LOCALS`{`localidx*#23`} [], `LABELS`{`labelidx*#25`} []} + 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#7 : funcidx, funcidx : funcidx}(`RETURN_CALL`_instr{funcidx#7}(funcidx)) = $free_funcidx(funcidx) + 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#13 : typeuse, typeuse : typeuse}(`RETURN_CALL_REF`_instr{typeuse#13}(typeuse)) = $free_typeuse(typeuse) + 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#7 : tableidx, typeuse#15 : typeuse, tableidx : tableidx, typeuse : typeuse}(`RETURN_CALL_INDIRECT`_instr{tableidx#7, typeuse#15}(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) + 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#3 : numtype, numtype : numtype, numlit : num_(numtype)}(`CONST`_instr{numtype#3}(numtype, numlit)) = $free_numtype(numtype) + 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#5 : numtype, numtype : numtype, unop : unop_(numtype)}(`UNOP`_instr{numtype#5}(numtype, unop)) = $free_numtype(numtype) + 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#7 : numtype, numtype : numtype, binop : binop_(numtype)}(`BINOP`_instr{numtype#7}(numtype, binop)) = $free_numtype(numtype) + 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#9 : numtype, numtype : numtype, testop : testop_(numtype)}(`TESTOP`_instr{numtype#9}(numtype, testop)) = $free_numtype(numtype) + 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#11 : numtype, numtype : numtype, relop : relop_(numtype)}(`RELOP`_instr{numtype#11}(numtype, relop)) = $free_numtype(numtype) + 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#1 : numtype, numtype_2#1 : numtype, numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop__(numtype_2, numtype_1)}(`CVTOP`_instr{numtype_1#1, numtype_2#1}(numtype_1, numtype_2, cvtop)) = $free_numtype(numtype_1) +++ $free_numtype(numtype_2) + 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#3 : vectype, vectype : vectype, veclit : vec_(vectype)}(`VCONST`_instr{vectype#3}(vectype, veclit)) = $free_vectype(vectype) + 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#5 : vectype, vvunop#1 : vvunop, vectype : vectype, vvunop : vvunop}(`VVUNOP`_instr{vectype#5, vvunop#1}(vectype, vvunop)) = $free_vectype(vectype) + 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#7 : vectype, vvbinop#1 : vvbinop, vectype : vectype, vvbinop : vvbinop}(`VVBINOP`_instr{vectype#7, vvbinop#1}(vectype, vvbinop)) = $free_vectype(vectype) + 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#9 : vectype, vvternop#1 : vvternop, vectype : vectype, vvternop : vvternop}(`VVTERNOP`_instr{vectype#9, vvternop#1}(vectype, vvternop)) = $free_vectype(vectype) + 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#11 : vectype, vvtestop#1 : vvtestop, vectype : vectype, vvtestop : vvtestop}(`VVTESTOP`_instr{vectype#11, vvtestop#1}(vectype, vvtestop)) = $free_vectype(vectype) + 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#153 : shape, shape : shape, vunop : vunop_(shape)}(`VUNOP`_instr{shape#153}(shape, vunop)) = $free_shape(shape) + 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#155 : shape, shape : shape, vbinop : vbinop_(shape)}(`VBINOP`_instr{shape#155}(shape, vbinop)) = $free_shape(shape) + 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#157 : shape, shape : shape, vternop : vternop_(shape)}(`VTERNOP`_instr{shape#157}(shape, vternop)) = $free_shape(shape) + 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#159 : shape, shape : shape, vtestop : vtestop_(shape)}(`VTESTOP`_instr{shape#159}(shape, vtestop)) = $free_shape(shape) + 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#161 : shape, shape : shape, vrelop : vrelop_(shape)}(`VRELOP`_instr{shape#161}(shape, vrelop)) = $free_shape(shape) + 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#1 : ishape, ishape : ishape, vshiftop : vshiftop_(ishape), shape#169 : shape, Jnn#48 : Jnn}(`VSHIFTOP`_instr{ishape#1}(ishape, vshiftop)) = $free_shape(ishape!`%`_ishape{shape#169, Jnn#48}.0) + 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#3 : ishape, ishape : ishape, shape#177 : shape, Jnn#51 : Jnn}(`VBITMASK`_instr{ishape#3}(ishape)) = $free_shape(ishape!`%`_ishape{shape#177, Jnn#51}.0) + 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#1 : bshape, bshape : bshape, vswizzlop : vswizzlop_(bshape), shape#185 : shape}(`VSWIZZLOP`_instr{bshape#1}(bshape, vswizzlop)) = $free_shape(bshape!`%`_bshape{shape#185}.0) + 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#3 : bshape, `laneidx*#1` : laneidx*, i#1902 : nat, shape#187 : shape, bshape : bshape, `laneidx*` : laneidx*, shape#194 : shape}(`VSHUFFLE`_instr{bshape#3, `laneidx*#1`, i#1902, shape#187}(bshape, laneidx*{laneidx <- `laneidx*`})) = $free_shape(bshape!`%`_bshape{shape#194}.0) + 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#1 : ishape, ishape_2#1 : ishape, ishape_1 : ishape, ishape_2 : ishape, vextunop : vextunop__(ishape_2, ishape_1), shape#208 : shape, Jnn#56 : Jnn, shape#210 : shape, Jnn#57 : Jnn}(`VEXTUNOP`_instr{ishape_1#1, ishape_2#1}(ishape_1, ishape_2, vextunop)) = $free_shape(ishape_1!`%`_ishape{shape#208, Jnn#56}.0) +++ $free_shape(ishape_2!`%`_ishape{shape#210, Jnn#57}.0) + 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#3 : ishape, ishape_2#3 : ishape, ishape_1 : ishape, ishape_2 : ishape, vextbinop : vextbinop__(ishape_2, ishape_1), shape#224 : shape, Jnn#62 : Jnn, shape#226 : shape, Jnn#63 : Jnn}(`VEXTBINOP`_instr{ishape_1#3, ishape_2#3}(ishape_1, ishape_2, vextbinop)) = $free_shape(ishape_1!`%`_ishape{shape#224, Jnn#62}.0) +++ $free_shape(ishape_2!`%`_ishape{shape#226, Jnn#63}.0) + 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#5 : ishape, ishape_2#5 : ishape, ishape_1 : ishape, ishape_2 : ishape, vextternop : vextternop__(ishape_2, ishape_1), shape#240 : shape, Jnn#68 : Jnn, shape#242 : shape, Jnn#69 : Jnn}(`VEXTTERNOP`_instr{ishape_1#5, ishape_2#5}(ishape_1, ishape_2, vextternop)) = $free_shape(ishape_1!`%`_ishape{shape#240, Jnn#68}.0) +++ $free_shape(ishape_2!`%`_ishape{shape#242, Jnn#69}.0) + 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#7 : ishape, ishape_2#7 : ishape, sx#1 : sx, shape#244 : shape, Jnn#70 : Jnn, shape#245 : shape, Jnn#71 : Jnn, shape#246 : shape, Jnn#72 : Jnn, ishape_1 : ishape, ishape_2 : ishape, sx : sx, shape#259 : shape, Jnn#77 : Jnn, shape#261 : shape, Jnn#78 : Jnn}(`VNARROW`_instr{ishape_1#7, ishape_2#7, sx#1, shape#244, Jnn#70, shape#245, Jnn#71, shape#246, Jnn#72}(ishape_1, ishape_2, sx)) = $free_shape(ishape_1!`%`_ishape{shape#259, Jnn#77}.0) +++ $free_shape(ishape_2!`%`_ishape{shape#261, Jnn#78}.0) + 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#1 : shape, shape_2#1 : shape, shape_1 : shape, shape_2 : shape, vcvtop : vcvtop__(shape_2, shape_1)}(`VCVTOP`_instr{shape_1#1, shape_2#1}(shape_1, shape_2, vcvtop)) = $free_shape(shape_1) +++ $free_shape(shape_2) + 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#263 : shape, shape : shape}(`VSPLAT`_instr{shape#263}(shape)) = $free_shape(shape) + 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#265 : shape, `sx?#1` : sx?, laneidx#1 : laneidx, shape : shape, `sx?` : sx?, laneidx : laneidx}(`VEXTRACT_LANE`_instr{shape#265, `sx?#1`, laneidx#1}(shape, sx?{sx <- `sx?`}, laneidx)) = $free_shape(shape) + 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#267 : shape, laneidx#3 : laneidx, shape : shape, laneidx : laneidx}(`VREPLACE_LANE`_instr{shape#267, laneidx#3}(shape, laneidx)) = $free_shape(shape) + 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#373 : heaptype, heaptype : heaptype}(`REF.NULL`_instr{heaptype#373}(heaptype)) = $free_heaptype(heaptype) + 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{`typeidx*#24` : typeidx*, `funcidx*#24` : funcidx*, `globalidx*#24` : globalidx*, `tableidx*#24` : tableidx*, `memidx*#24` : memidx*, `elemidx*#24` : elemidx*, `dataidx*#24` : dataidx*, `localidx*#24` : localidx*, `labelidx*#26` : labelidx*}(`REF.IS_NULL`_instr) = {`TYPES`{`typeidx*#24`} [], `FUNCS`{`funcidx*#24`} [], `GLOBALS`{`globalidx*#24`} [], `TABLES`{`tableidx*#24`} [], `MEMS`{`memidx*#24`} [], `ELEMS`{`elemidx*#24`} [], `DATAS`{`dataidx*#24`} [], `LOCALS`{`localidx*#24`} [], `LABELS`{`labelidx*#26`} []} + 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{`typeidx*#25` : typeidx*, `funcidx*#25` : funcidx*, `globalidx*#25` : globalidx*, `tableidx*#25` : tableidx*, `memidx*#25` : memidx*, `elemidx*#25` : elemidx*, `dataidx*#25` : dataidx*, `localidx*#25` : localidx*, `labelidx*#27` : labelidx*}(`REF.AS_NON_NULL`_instr) = {`TYPES`{`typeidx*#25`} [], `FUNCS`{`funcidx*#25`} [], `GLOBALS`{`globalidx*#25`} [], `TABLES`{`tableidx*#25`} [], `MEMS`{`memidx*#25`} [], `ELEMS`{`elemidx*#25`} [], `DATAS`{`dataidx*#25`} [], `LOCALS`{`localidx*#25`} [], `LABELS`{`labelidx*#27`} []} + 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{`typeidx*#26` : typeidx*, `funcidx*#26` : funcidx*, `globalidx*#26` : globalidx*, `tableidx*#26` : tableidx*, `memidx*#26` : memidx*, `elemidx*#26` : elemidx*, `dataidx*#26` : dataidx*, `localidx*#26` : localidx*, `labelidx*#28` : labelidx*}(`REF.EQ`_instr) = {`TYPES`{`typeidx*#26`} [], `FUNCS`{`funcidx*#26`} [], `GLOBALS`{`globalidx*#26`} [], `TABLES`{`tableidx*#26`} [], `MEMS`{`memidx*#26`} [], `ELEMS`{`elemidx*#26`} [], `DATAS`{`dataidx*#26`} [], `LOCALS`{`localidx*#26`} [], `LABELS`{`labelidx*#28`} []} + 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#131 : reftype, reftype : reftype}(`REF.TEST`_instr{reftype#131}(reftype)) = $free_reftype(reftype) + 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#133 : reftype, reftype : reftype}(`REF.CAST`_instr{reftype#133}(reftype)) = $free_reftype(reftype) + 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#9 : funcidx, funcidx : funcidx}(`REF.FUNC`_instr{funcidx#9}(funcidx)) = $free_funcidx(funcidx) + 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{`typeidx*#27` : typeidx*, `funcidx*#27` : funcidx*, `globalidx*#27` : globalidx*, `tableidx*#27` : tableidx*, `memidx*#27` : memidx*, `elemidx*#27` : elemidx*, `dataidx*#27` : dataidx*, `localidx*#27` : localidx*, `labelidx*#29` : labelidx*}(`REF.I31`_instr) = {`TYPES`{`typeidx*#27`} [], `FUNCS`{`funcidx*#27`} [], `GLOBALS`{`globalidx*#27`} [], `TABLES`{`tableidx*#27`} [], `MEMS`{`memidx*#27`} [], `ELEMS`{`elemidx*#27`} [], `DATAS`{`dataidx*#27`} [], `LOCALS`{`localidx*#27`} [], `LABELS`{`labelidx*#29`} []} + 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#3 : sx, sx : sx, `typeidx*#28` : typeidx*, `funcidx*#28` : funcidx*, `globalidx*#28` : globalidx*, `tableidx*#28` : tableidx*, `memidx*#28` : memidx*, `elemidx*#28` : elemidx*, `dataidx*#28` : dataidx*, `localidx*#28` : localidx*, `labelidx*#30` : labelidx*}(`I31.GET`_instr{sx#3}(sx)) = {`TYPES`{`typeidx*#28`} [], `FUNCS`{`funcidx*#28`} [], `GLOBALS`{`globalidx*#28`} [], `TABLES`{`tableidx*#28`} [], `MEMS`{`memidx*#28`} [], `ELEMS`{`elemidx*#28`} [], `DATAS`{`dataidx*#28`} [], `LOCALS`{`localidx*#28`} [], `LABELS`{`labelidx*#30`} []} + 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#29 : typeidx, typeidx : typeidx, `typeidx*#29` : typeidx*, `funcidx*#29` : funcidx*, `globalidx*#29` : globalidx*, `tableidx*#29` : tableidx*, `memidx*#29` : memidx*, `elemidx*#29` : elemidx*, `dataidx*#29` : dataidx*, `localidx*#29` : localidx*, `labelidx*#31` : labelidx*}(`STRUCT.NEW`_instr{typeidx#29}(typeidx)) = {`TYPES`{`typeidx*#29`} [], `FUNCS`{`funcidx*#29`} [], `GLOBALS`{`globalidx*#29`} [], `TABLES`{`tableidx*#29`} [], `MEMS`{`memidx*#29`} [], `ELEMS`{`elemidx*#29`} [], `DATAS`{`dataidx*#29`} [], `LOCALS`{`localidx*#29`} [], `LABELS`{`labelidx*#31`} []} + 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#31 : typeidx, typeidx : typeidx}(`STRUCT.NEW_DEFAULT`_instr{typeidx#31}(typeidx)) = $free_typeidx(typeidx) + 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?#3` : sx?, typeidx#33 : typeidx, u32#2 : u32, `sx?` : sx?, typeidx : typeidx, u32 : u32}(`STRUCT.GET`_instr{`sx?#3`, typeidx#33, u32#2}(sx?{sx <- `sx?`}, typeidx, u32)) = $free_typeidx(typeidx) + 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#35 : typeidx, u32#4 : u32, typeidx : typeidx, u32 : u32}(`STRUCT.SET`_instr{typeidx#35, u32#4}(typeidx, u32)) = $free_typeidx(typeidx) + 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#37 : typeidx, typeidx : typeidx}(`ARRAY.NEW`_instr{typeidx#37}(typeidx)) = $free_typeidx(typeidx) + 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#39 : typeidx, typeidx : typeidx}(`ARRAY.NEW_DEFAULT`_instr{typeidx#39}(typeidx)) = $free_typeidx(typeidx) + 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#41 : typeidx, u32#6 : u32, typeidx : typeidx, u32 : u32}(`ARRAY.NEW_FIXED`_instr{typeidx#41, u32#6}(typeidx, u32)) = $free_typeidx(typeidx) + 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#43 : typeidx, dataidx#1 : dataidx, typeidx : typeidx, dataidx : dataidx}(`ARRAY.NEW_DATA`_instr{typeidx#43, dataidx#1}(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) + 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#45 : typeidx, elemidx#1 : elemidx, typeidx : typeidx, elemidx : elemidx}(`ARRAY.NEW_ELEM`_instr{typeidx#45, elemidx#1}(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) + 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?#5` : sx?, typeidx#47 : typeidx, `sx?` : sx?, typeidx : typeidx}(`ARRAY.GET`_instr{`sx?#5`, typeidx#47}(sx?{sx <- `sx?`}, typeidx)) = $free_typeidx(typeidx) + 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#49 : typeidx, typeidx : typeidx}(`ARRAY.SET`_instr{typeidx#49}(typeidx)) = $free_typeidx(typeidx) + 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{`typeidx*#30` : typeidx*, `funcidx*#30` : funcidx*, `globalidx*#30` : globalidx*, `tableidx*#30` : tableidx*, `memidx*#30` : memidx*, `elemidx*#30` : elemidx*, `dataidx*#30` : dataidx*, `localidx*#30` : localidx*, `labelidx*#32` : labelidx*}(`ARRAY.LEN`_instr) = {`TYPES`{`typeidx*#30`} [], `FUNCS`{`funcidx*#30`} [], `GLOBALS`{`globalidx*#30`} [], `TABLES`{`tableidx*#30`} [], `MEMS`{`memidx*#30`} [], `ELEMS`{`elemidx*#30`} [], `DATAS`{`dataidx*#30`} [], `LOCALS`{`localidx*#30`} [], `LABELS`{`labelidx*#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#51 : typeidx, typeidx : typeidx}(`ARRAY.FILL`_instr{typeidx#51}(typeidx)) = $free_typeidx(typeidx) + 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#53 : typeidx, typeidx_1 : typeidx, typeidx_2 : typeidx}(`ARRAY.COPY`_instr{typeidx#53}(typeidx_1, typeidx_2)) = $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2) + 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#56 : typeidx, dataidx#3 : dataidx, typeidx : typeidx, dataidx : dataidx}(`ARRAY.INIT_DATA`_instr{typeidx#56, dataidx#3}(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) + 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#58 : typeidx, elemidx#3 : elemidx, typeidx : typeidx, elemidx : elemidx}(`ARRAY.INIT_ELEM`_instr{typeidx#58, elemidx#3}(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) + 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{`typeidx*#31` : typeidx*, `funcidx*#31` : funcidx*, `globalidx*#31` : globalidx*, `tableidx*#31` : tableidx*, `memidx*#31` : memidx*, `elemidx*#31` : elemidx*, `dataidx*#31` : dataidx*, `localidx*#31` : localidx*, `labelidx*#33` : labelidx*}(`EXTERN.CONVERT_ANY`_instr) = {`TYPES`{`typeidx*#31`} [], `FUNCS`{`funcidx*#31`} [], `GLOBALS`{`globalidx*#31`} [], `TABLES`{`tableidx*#31`} [], `MEMS`{`memidx*#31`} [], `ELEMS`{`elemidx*#31`} [], `DATAS`{`dataidx*#31`} [], `LOCALS`{`localidx*#31`} [], `LABELS`{`labelidx*#33`} []} + 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{`typeidx*#32` : typeidx*, `funcidx*#32` : funcidx*, `globalidx*#32` : globalidx*, `tableidx*#32` : tableidx*, `memidx*#32` : memidx*, `elemidx*#32` : elemidx*, `dataidx*#32` : dataidx*, `localidx*#32` : localidx*, `labelidx*#34` : labelidx*}(`ANY.CONVERT_EXTERN`_instr) = {`TYPES`{`typeidx*#32`} [], `FUNCS`{`funcidx*#32`} [], `GLOBALS`{`globalidx*#32`} [], `TABLES`{`tableidx*#32`} [], `MEMS`{`memidx*#32`} [], `ELEMS`{`elemidx*#32`} [], `DATAS`{`dataidx*#32`} [], `LOCALS`{`localidx*#32`} [], `LABELS`{`labelidx*#34`} []} + 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#1 : localidx, localidx : localidx}(`LOCAL.GET`_instr{localidx#1}(localidx)) = $free_localidx(localidx) + 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#3 : localidx, localidx : localidx}(`LOCAL.SET`_instr{localidx#3}(localidx)) = $free_localidx(localidx) + 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#5 : localidx, localidx : localidx}(`LOCAL.TEE`_instr{localidx#5}(localidx)) = $free_localidx(localidx) + 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#5 : globalidx, globalidx : globalidx}(`GLOBAL.GET`_instr{globalidx#5}(globalidx)) = $free_globalidx(globalidx) + 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#7 : globalidx, globalidx : globalidx}(`GLOBAL.SET`_instr{globalidx#7}(globalidx)) = $free_globalidx(globalidx) + 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#9 : tableidx, tableidx : tableidx}(`TABLE.GET`_instr{tableidx#9}(tableidx)) = $free_tableidx(tableidx) + 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#11 : tableidx, tableidx : tableidx}(`TABLE.SET`_instr{tableidx#11}(tableidx)) = $free_tableidx(tableidx) + 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#13 : tableidx, tableidx : tableidx}(`TABLE.SIZE`_instr{tableidx#13}(tableidx)) = $free_tableidx(tableidx) + 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#15 : tableidx, tableidx : tableidx}(`TABLE.GROW`_instr{tableidx#15}(tableidx)) = $free_tableidx(tableidx) + 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#17 : tableidx, tableidx : tableidx}(`TABLE.FILL`_instr{tableidx#17}(tableidx)) = $free_tableidx(tableidx) + 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#19 : tableidx, tableidx_1 : tableidx, tableidx_2 : tableidx}(`TABLE.COPY`_instr{tableidx#19}(tableidx_1, tableidx_2)) = $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2) + 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#22 : tableidx, elemidx#5 : elemidx, tableidx : tableidx, elemidx : elemidx}(`TABLE.INIT`_instr{tableidx#22, elemidx#5}(tableidx, elemidx)) = $free_tableidx(tableidx) +++ $free_elemidx(elemidx) + 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#7 : elemidx, elemidx : elemidx}(`ELEM.DROP`_instr{elemidx#7}(elemidx)) = $free_elemidx(elemidx) + 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?#1` : numtype?, memidx#5 : memidx, memarg#1 : memarg, numtype : numtype, `loadop?` : loadop_(numtype)?, memidx : memidx, memarg : memarg}(`LOAD`_instr{`numtype?#1`, memidx#5, memarg#1}(numtype, loadop?{loadop <- `loadop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) + 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?#2` : numtype?, memidx#7 : memidx, memarg#3 : memarg, numtype : numtype, `storeop?` : storeop_(numtype)?, memidx : memidx, memarg : memarg}(`STORE`_instr{`numtype?#2`, memidx#7, memarg#3}(numtype, storeop?{storeop <- `storeop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) + 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?#1` : vectype?, memidx#9 : memidx, memarg#5 : memarg, vectype : vectype, `vloadop?` : vloadop_(vectype)?, memidx : memidx, memarg : memarg}(`VLOAD`_instr{`vectype?#1`, memidx#9, memarg#5}(vectype, vloadop?{vloadop <- `vloadop?`}, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) + 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#14 : vectype, sz#1 : sz, memidx#11 : memidx, memarg#7 : memarg, laneidx#5 : laneidx, vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(`VLOAD_LANE`_instr{vectype#14, sz#1, memidx#11, memarg#7, laneidx#5}(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) + 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#16 : vectype, memidx#13 : memidx, memarg#9 : memarg, vectype : vectype, memidx : memidx, memarg : memarg}(`VSTORE`_instr{vectype#16, memidx#13, memarg#9}(vectype, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) + 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#18 : vectype, sz#3 : sz, memidx#15 : memidx, memarg#11 : memarg, laneidx#7 : laneidx, vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(`VSTORE_LANE`_instr{vectype#18, sz#3, memidx#15, memarg#11, laneidx#7}(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) + 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#17 : memidx, memidx : memidx}(`MEMORY.SIZE`_instr{memidx#17}(memidx)) = $free_memidx(memidx) + 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#19 : memidx, memidx : memidx}(`MEMORY.GROW`_instr{memidx#19}(memidx)) = $free_memidx(memidx) + 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#21 : memidx, memidx : memidx}(`MEMORY.FILL`_instr{memidx#21}(memidx)) = $free_memidx(memidx) + 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#23 : memidx, memidx_1 : memidx, memidx_2 : memidx}(`MEMORY.COPY`_instr{memidx#23}(memidx_1, memidx_2)) = $free_memidx(memidx_1) +++ $free_memidx(memidx_2) + 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#26 : memidx, dataidx#5 : dataidx, memidx : memidx, dataidx : dataidx}(`MEMORY.INIT`_instr{memidx#26, dataidx#5}(memidx, dataidx)) = $free_memidx(memidx) +++ $free_dataidx(dataidx) + 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#7 : dataidx, dataidx : dataidx}(`DATA.DROP`_instr{dataidx#7}(dataidx)) = $free_dataidx(dataidx) + 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, `labelidx*#35` : labelidx*, `labelidx*#44` : labelidx*}(instr*{instr <- `instr*`}) = free[`LABELS`_free{`labelidx*#35`} = $shift_labelidxs(free.`LABELS`_free{`labelidx*#44`})] + 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*`})) } @@ -113999,157 +89250,157 @@ def $free_expr(expr : expr) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax elemmode = - | `ACTIVE`{tableidx : tableidx, expr : expr}(tableidx : tableidx, expr : expr) + | `ACTIVE`(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) + | `ACTIVE`(memidx : memidx, expr : expr) | `PASSIVE` ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax type = - | `TYPE`{rectype : rectype}(rectype : rectype) + | `TYPE`(rectype : rectype) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax tag = - | `TAG`{tagtype : tagtype}(tagtype : tagtype) + | `TAG`(tagtype : tagtype) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax global = - | `GLOBAL`{globaltype : globaltype, expr : expr}(globaltype : globaltype, expr : expr) + | `GLOBAL`(globaltype : globaltype, expr : expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax mem = - | `MEMORY`{memtype : memtype}(memtype : memtype) + | `MEMORY`(memtype : memtype) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax table = - | `TABLE`{tabletype : tabletype, expr : expr}(tabletype : tabletype, expr : expr) + | `TABLE`(tabletype : tabletype, expr : expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax data = - | `DATA`{`byte*` : byte*, datamode : datamode}(`byte*` : byte*, datamode : datamode) + | `DATA`(`byte*` : byte*, datamode : datamode) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax local = - | `LOCAL`{valtype : valtype}(valtype : valtype) + | `LOCAL`(valtype : valtype) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax func = - | `FUNC`{typeidx : typeidx, `local*` : local*, expr : expr}(typeidx : typeidx, `local*` : local*, expr : expr) + | `FUNC`(typeidx : typeidx, `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*, elemmode : elemmode) + | `ELEM`(reftype : reftype, `expr*` : expr*, elemmode : elemmode) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax start = - | `START`{funcidx : funcidx}(funcidx : funcidx) + | `START`(funcidx : funcidx) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax import = - | `IMPORT`{name : name, externtype : externtype}(name : name, name : name, externtype : externtype) + | `IMPORT`(name : 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) + | `EXPORT`(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*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*) + | `MODULE`(`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `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#265 : rectype, rectype : rectype}(`TYPE`_type{rectype#265}(rectype)) = $free_rectype(rectype) + 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#19 : tagtype, tagtype : tagtype}(`TAG`_tag{tagtype#19}(tagtype)) = $free_tagtype(tagtype) + 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#19 : globaltype, expr#11 : expr, globaltype : globaltype, expr : expr}(`GLOBAL`_global{globaltype#19, expr#11}(globaltype, expr)) = $free_globaltype(globaltype) +++ $free_expr(expr) + 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#19 : memtype, memtype : memtype}(`MEMORY`_mem{memtype#19}(memtype)) = $free_memtype(memtype) + 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#19 : tabletype, expr#23 : expr, tabletype : tabletype, expr : expr}(`TABLE`_table{tabletype#19, expr#23}(tabletype, expr)) = $free_tabletype(tabletype) +++ $free_expr(expr) + 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{valtype#163 : valtype, t : valtype}(`LOCAL`_local{valtype#163}(t)) = $free_valtype(t) + 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#70 : typeidx, `local*#11` : local*, expr#35 : expr, typeidx : typeidx, `local*` : local*, expr : expr, `localidx*#33` : localidx*}(`FUNC`_func{typeidx#70, `local*#11`, expr#35}(typeidx, local*{local <- `local*`}, expr)) = $free_typeidx(typeidx) +++ $free_list($free_local(local)*{local <- `local*`}) +++ $free_block(expr)[`LOCALS`_free{`localidx*#33`} = []] + 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#28 : memidx, expr#39 : expr, memidx : memidx, expr : expr}(`ACTIVE`_datamode{memidx#28, expr#39}(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) + 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{`typeidx*#35` : typeidx*, `funcidx*#35` : funcidx*, `globalidx*#35` : globalidx*, `tableidx*#35` : tableidx*, `memidx*#35` : memidx*, `elemidx*#35` : elemidx*, `dataidx*#35` : dataidx*, `localidx*#36` : localidx*, `labelidx*#47` : labelidx*}(`PASSIVE`_datamode) = {`TYPES`{`typeidx*#35`} [], `FUNCS`{`funcidx*#35`} [], `GLOBALS`{`globalidx*#35`} [], `TABLES`{`tableidx*#35`} [], `MEMS`{`memidx*#35`} [], `ELEMS`{`elemidx*#35`} [], `DATAS`{`dataidx*#35`} [], `LOCALS`{`localidx*#36`} [], `LABELS`{`labelidx*#47`} []} + 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*#11` : byte*, datamode#11 : datamode, `byte*` : byte*, datamode : datamode}(`DATA`_data{`byte*#11`, datamode#11}(byte*{byte <- `byte*`}, datamode)) = $free_datamode(datamode) + 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#24 : tableidx, expr#37 : expr, tableidx : tableidx, expr : expr}(`ACTIVE`_elemmode{tableidx#24, expr#37}(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) + 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{`typeidx*#33` : typeidx*, `funcidx*#33` : funcidx*, `globalidx*#33` : globalidx*, `tableidx*#33` : tableidx*, `memidx*#33` : memidx*, `elemidx*#33` : elemidx*, `dataidx*#33` : dataidx*, `localidx*#34` : localidx*, `labelidx*#45` : labelidx*}(`PASSIVE`_elemmode) = {`TYPES`{`typeidx*#33`} [], `FUNCS`{`funcidx*#33`} [], `GLOBALS`{`globalidx*#33`} [], `TABLES`{`tableidx*#33`} [], `MEMS`{`memidx*#33`} [], `ELEMS`{`elemidx*#33`} [], `DATAS`{`dataidx*#33`} [], `LOCALS`{`localidx*#34`} [], `LABELS`{`labelidx*#45`} []} + 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{`typeidx*#34` : typeidx*, `funcidx*#34` : funcidx*, `globalidx*#34` : globalidx*, `tableidx*#34` : tableidx*, `memidx*#34` : memidx*, `elemidx*#34` : elemidx*, `dataidx*#34` : dataidx*, `localidx*#35` : localidx*, `labelidx*#46` : labelidx*}(`DECLARE`_elemmode) = {`TYPES`{`typeidx*#34`} [], `FUNCS`{`funcidx*#34`} [], `GLOBALS`{`globalidx*#34`} [], `TABLES`{`tableidx*#34`} [], `MEMS`{`memidx*#34`} [], `ELEMS`{`elemidx*#34`} [], `DATAS`{`dataidx*#34`} [], `LOCALS`{`localidx*#35`} [], `LABELS`{`labelidx*#46`} []} + 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#157 : reftype, `expr*#11` : expr*, elemmode#11 : elemmode, reftype : reftype, `expr*` : expr*, elemmode : elemmode}(`ELEM`_elem{reftype#157, `expr*#11`, elemmode#11}(reftype, expr*{expr <- `expr*`}, elemmode)) = $free_reftype(reftype) +++ $free_list($free_expr(expr)*{expr <- `expr*`}) +++ $free_elemmode(elemmode) + 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#21 : funcidx, funcidx : funcidx}(`START`_start{funcidx#21}(funcidx)) = $free_funcidx(funcidx) + 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#18 : name, externtype#11 : externtype, name_1 : name, name_2 : name, externtype : externtype}(`IMPORT`_import{name#18, externtype#11}(name_1, name_2, externtype)) = $free_externtype(externtype) + 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#31 : name, externidx#11 : externidx, name : name, externidx : externidx}(`EXPORT`_export{name#31, externidx#11}(name, externidx)) = $free_externidx(externidx) + 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*#11` : type*, `import*#11` : import*, `tag*#11` : tag*, `global*#11` : global*, `mem*#11` : mem*, `table*#11` : table*, `func*#11` : func*, `data*#11` : data*, `elem*#11` : elem*, `start?#11` : start?, `export*#11` : export*, `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*#11`, `import*#11`, `tag*#11`, `global*#11`, `mem*#11`, `table*#11`, `func*#11`, `data*#11`, `elem*#11`, `start?#11`, `export*#11`}(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*`}) + 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, `funcidx*#38` : funcidx*}(module) = $free_module(module).`FUNCS`_free{`funcidx*#38`} + 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*, `dataidx*#38` : dataidx*}(func*{func <- `func*`}) = $free_list($free_func(func)*{func <- `func*`}).`DATAS`_free{`dataidx*#38`} + 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 = @@ -114158,28 +89409,28 @@ syntax init = ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec syntax localtype = - | `%%`{init : init, valtype : valtype}(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*, resulttype : resulttype) + | `%->_%%`(resulttype : resulttype, `localidx*` : localidx*, resulttype : 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* + `TYPES` deftype* , + `RECS` subtype* , + `TAGS` tagtype* , + `GLOBALS` globaltype* , + `MEMS` memtype* , + `TABLES` tabletype* , + `FUNCS` deftype* , + `DATAS` datatype* , + `ELEMS` elemtype* , + `LOCALS` localtype* , + `LABELS` resulttype* , + `RETURN` resulttype? , + `REFS` funcidx* } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec @@ -114190,7 +89441,7 @@ 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 : idx, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*, `localtype*#1` : localtype*, i#3970 : nat}(C, [x_1] ++ x*{x <- `x*`}, [lct_1] ++ lct*{lct <- `lct*`}) = $with_locals(C[`LOCALS`_context{`localtype*#1`}[x_1!`%`_idx{i#3970}.0] = lct_1], x*{x <- `x*`}, lct*{lct <- `lct*`}) + 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 @@ -114208,32 +89459,32 @@ def $clos_deftypes(deftype*) : deftype* ;; ../../../../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*, `deftype*#2` : deftype*}(C, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.`TYPES`_context{`deftype*#2`})) + 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*, `deftype*#4` : deftype*}(C, dt) = $subst_all_deftype(dt, (dt' : deftype <: typeuse)*{dt' <- `dt'*`}) - -- if (dt'*{dt' <- `dt'*`} = $clos_deftypes(C.`TYPES`_context{`deftype*#4`})) + 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 : tagtype, `dt*` : deftype*, `deftype*#6` : deftype*}(C, jt) = $subst_all_tagtype(jt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.`TYPES`_context{`deftype*#6`})) + def $clos_tagtype{C : context, jt : tagtype, `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*, `deftype*#8` : deftype*}(C, xt) = $subst_all_externtype(xt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.`TYPES`_context{`deftype*#8`})) + 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*, `deftype*#10` : deftype*}(C, mmt) = $subst_all_moduletype(mmt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.`TYPES`_context{`deftype*#10`})) + 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) @@ -114249,11 +89500,11 @@ relation Vectype_ok: `%|-%:OK`(context, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypeidx = - | `OK`{typeidx : typeidx}(typeidx : typeidx) + | `OK`(typeidx : typeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypeidxnat = - | `OK`{typeidx : typeidx}(typeidx : typeidx, nat) + | `OK`(typeidx : typeidx, nat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Packtype_ok: `%|-%:OK`(context, packtype) @@ -114291,18 +89542,18 @@ 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#240 : typeidx, typeidx : typeidx, x : idx, i : nat, i#4259 : nat, i#4269 : nat}(`_IDX`_typeuse{typeidx#240}(typeidx), x, i) = (typeidx!`%`_typeidx{i#4259}.0 < x!`%`_idx{i#4269}.0) + 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{n#515 : n, j : n, x : idx, i : nat}(`REC`_typeuse{n#515}(j), x, i) = (j < i) + 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#242 : typeidx, typeidx : typeidx, `deftype*#14` : deftype*, i#4303 : nat}(C, `_IDX`_heaptype{typeidx#242}(typeidx)) = $unrolldt(C.`TYPES`_context{`deftype*#14`}[typeidx!`%`_typeidx{i#4303}.0]) + 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, n#529 : n, i : n, `subtype*#2` : subtype*}(C, `REC`_heaptype{n#529}(i)) = C.`RECS`_context{`subtype*#2`}[i] + def $unrollht{C : context, i : n}(C, `REC`_heaptype(i)) = C.`RECS`_context[i] ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rec { @@ -114321,8 +89572,8 @@ relation Heaptype_ok: `%|-%:OK`(context, heaptype) ;; ../../../../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, `null?#419` : null?, heaptype#421 : heaptype, heaptype : heaptype}: - `%|-%:OK`(C, `REF`_reftype{`null?#419`, heaptype#421}(`NULL`_null?{}, heaptype)) + 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 @@ -114349,14 +89600,14 @@ relation Valtype_ok: `%|-%:OK`(context, 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#222 : typeidx, typeidx : typeidx, `deftype*#12` : deftype*, i#4125 : nat, dt : deftype}: - `%|-%:OK`(C, `_IDX`_typeuse{typeidx#222}(typeidx)) - -- if (C.`TYPES`_context{`deftype*#12`}[typeidx!`%`_typeidx{i#4125}.0] = dt) + 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, n#501 : n, i : n, `subtype*#1` : subtype*, st : subtype}: - `%|-%:OK`(C, `REC`_typeuse{n#501}(i)) - -- if (C.`RECS`_context{`subtype*#1`}[i] = st) + 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}: @@ -114366,15 +89617,15 @@ relation Typeuse_ok: `%|-%:OK`(context, typeuse) ;; ../../../../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, `X*#465` : valtype*, `t*` : valtype*}: - `%|-%:OK`(C, `%`_resulttype{`X*#465`}(t*{t <- `t*`})) + 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, `mut?#289` : mut?, storagetype#137 : storagetype, storagetype : storagetype}: - `%|-%:OK`(C, `%%`_fieldtype{`mut?#289`, storagetype#137}(`MUT`_mut?{}, storagetype)) + 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 @@ -114392,98 +89643,98 @@ relation Storagetype_ok: `%|-%:OK`(context, storagetype) ;; ../../../../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, `X*#571` : fieldtype*, `fieldtype*` : fieldtype*}: - `%|-%:OK`(C, `STRUCT`_comptype(`%`_list{`X*#571`}(fieldtype*{fieldtype <- `fieldtype*`}))) + 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#7 : fieldtype, fieldtype : fieldtype}: - `%|-%:OK`(C, `ARRAY`_comptype{fieldtype#7}(fieldtype)) + 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, resulttype#30 : resulttype, `X*#586` : valtype*, `t_1*` : valtype*, `X*#599` : valtype*, `t_2*` : valtype*, `X*#612` : valtype*, `X*#625` : valtype*}: - `%|-%:OK`(C, `FUNC%->%`_comptype{resulttype#30}(`%`_resulttype{`X*#586`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#599`}(t_2*{t_2 <- `t_2*`}))) - -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype{`X*#612`}(t_1*{t_1 <- `t_1*`})) - -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype{`X*#625`}(t_2*{t_2 <- `t_2*`})) + 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, `final?#215` : final?, `typeuse*#215` : typeuse*, comptype#215 : comptype, `typeidx#224*` : typeidx*, `x*` : idx*, comptype : comptype, typeidx#236 : typeidx, x_0 : idx, `i#4171*` : nat*, `i#4181*` : nat*, `comptype#227*` : comptype*, `comptype'*` : comptype*, `deftype*#13*` : deftype**, `final?#227*` : final?*, `i#4191*` : nat*, `typeidx#238**` : typeidx**, `typeuse*#227*` : typeuse**, `x'**` : idx**}: - `%|-%:%`(C, `SUB`_subtype{`final?#215`, `typeuse*#215`, comptype#215}(`FINAL`_final?{}, `_IDX`_typeuse{typeidx#224}(x)*{typeidx#224 <- `typeidx#224*`, x <- `x*`}, comptype), `OK`_oktypeidx{typeidx#236}(x_0)) + rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `comptype'*` : comptype*, `x'**` : idx**}: + `%|-%:%`(C, `SUB`_subtype(`FINAL`_final?{}, `_IDX`_typeuse(x)*{x <- `x*`}, comptype), `OK`_oktypeidx(x_0)) -- if (|x*{x <- `x*`}| <= 1) - -- (if (x!`%`_idx{i#4171}.0 < x_0!`%`_idx{i#4181}.0))*{i#4171 <- `i#4171*`, i#4181 <- `i#4181*`, x <- `x*`} - -- (if ($unrolldt(C.`TYPES`_context{`deftype*#13`}[x!`%`_idx{i#4191}.0]) = `SUB`_subtype{`final?#227`, `typeuse*#227`, comptype#227}(?(), `_IDX`_typeuse{typeidx#238}(x')*{typeidx#238 <- `typeidx#238*`, x' <- `x'*`}, comptype')))*{comptype#227 <- `comptype#227*`, comptype' <- `comptype'*`, `deftype*#13` <- `deftype*#13*`, `final?#227` <- `final?#227*`, i#4191 <- `i#4191*`, `typeidx#238*` <- `typeidx#238**`, `typeuse*#227` <- `typeuse*#227*`, x <- `x*`, `x'*` <- `x'**`} + -- (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*#650` : subtype*, typeidx#266 : typeidx, x : idx}: - `%|-%:%`(C, `REC`_rectype(`%`_list{`X*#650`}([])), `OK`_oktypeidx{typeidx#266}(x)) + 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, `X*#673` : subtype*, subtype_1 : subtype, `subtype*` : subtype*, typeidx#278 : typeidx, x : idx, typeidx#290 : typeidx, `X*#686` : subtype*, typeidx#302 : typeidx, i#4407 : nat, i#4397 : nat}: - `%|-%:%`(C, `REC`_rectype(`%`_list{`X*#673`}([subtype_1] ++ subtype*{subtype <- `subtype*`})), `OK`_oktypeidx{typeidx#278}(x)) - -- Subtype_ok: `%|-%:%`(C, subtype_1, `OK`_oktypeidx{typeidx#290}(x)) - -- Rectype_ok: `%|-%:%`(C, `REC`_rectype(`%`_list{`X*#686`}(subtype*{subtype <- `subtype*`})), `OK`_oktypeidx{typeidx#302}(`%`_typeidx{i#4407}((x!`%`_idx{i#4397}.0 + 1)))) + 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, `X*#701` : subtype*, `subtype*` : subtype*, typeidx#314 : typeidx, x : idx, `deftype*#15` : deftype*, `subtype*#3` : subtype*, `tagtype*#1` : tagtype*, `globaltype*#1` : globaltype*, `memtype*#1` : memtype*, `tabletype*#1` : tabletype*, `deftype*#16` : deftype*, `datatype*#1` : datatype*, `elemtype*#1` : elemtype*, `localtype*#3` : localtype*, `resulttype*#1` : resulttype*, `resulttype?#1` : resulttype?, `funcidx*#39` : funcidx*, `X*#716` : subtype*, typeidx#326 : typeidx}: - `%|-%:%`(C, `REC`_rectype(`%`_list{`X*#701`}(subtype*{subtype <- `subtype*`})), `OK`_oktypeidx{typeidx#314}(x)) - -- Rectype_ok2: `%|-%:%`({`TYPES`{`deftype*#15`} [], `RECS`{`subtype*#3`} subtype*{subtype <- `subtype*`}, `TAGS`{`tagtype*#1`} [], `GLOBALS`{`globaltype*#1`} [], `MEMS`{`memtype*#1`} [], `TABLES`{`tabletype*#1`} [], `FUNCS`{`deftype*#16`} [], `DATAS`{`datatype*#1`} [], `ELEMS`{`elemtype*#1`} [], `LOCALS`{`localtype*#3`} [], `LABELS`{`resulttype*#1`} [], `RETURN`{`resulttype?#1`} ?(), `REFS`{`funcidx*#39`} []} +++ C, `REC`_rectype(`%`_list{`X*#716`}(subtype*{subtype <- `subtype*`})), `OK`_oktypeidxnat{typeidx#326}(x, 0)) + 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, `final?#257` : final?, `typeuse*#257` : typeuse*, comptype#257 : comptype, `typeuse*` : typeuse*, compttype : comptype, typeidx#254 : typeidx, x : idx, i : nat, `comptype#269*` : comptype*, `comptype'*` : comptype*, `final?#269*` : final?*, `typeuse'**` : typeuse**, `typeuse*#269*` : typeuse**, comptype : comptype}: - `%|-%:%`(C, `SUB`_subtype{`final?#257`, `typeuse*#257`, comptype#257}(`FINAL`_final?{}, typeuse*{typeuse <- `typeuse*`}, compttype), `OK`_oktypeidxnat{typeidx#254}(x, i)) + rule _{C : context, `typeuse*` : typeuse*, compttype : comptype, x : idx, i : nat, `comptype'*` : comptype*, `typeuse'**` : typeuse**, 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{`final?#269`, `typeuse*#269`, comptype#269}(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype#269 <- `comptype#269*`, comptype' <- `comptype'*`, `final?#269` <- `final?#269*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`, `typeuse*#269` <- `typeuse*#269*`} + -- (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*#741` : subtype*, typeidx#338 : typeidx, x : idx, i : nat}: - `%|-%:%`(C, `REC`_rectype(`%`_list{`X*#741`}([])), `OK`_oktypeidxnat{typeidx#338}(x, i)) + 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, `X*#764` : subtype*, subtype_1 : subtype, `subtype*` : subtype*, typeidx#350 : typeidx, x : idx, i : nat, typeidx#362 : typeidx, `X*#777` : subtype*, typeidx#374 : typeidx, i#4513 : nat, i#4503 : nat}: - `%|-%:%`(C, `REC`_rectype(`%`_list{`X*#764`}([subtype_1] ++ subtype*{subtype <- `subtype*`})), `OK`_oktypeidxnat{typeidx#350}(x, i)) - -- Subtype_ok2: `%|-%:%`(C, subtype_1, `OK`_oktypeidxnat{typeidx#362}(x, i)) - -- Rectype_ok2: `%|-%:%`(C, `REC`_rectype(`%`_list{`X*#777`}(subtype*{subtype <- `subtype*`})), `OK`_oktypeidxnat{typeidx#374}(`%`_typeidx{i#4513}((x!`%`_idx{i#4503}.0 + 1)), (i + 1))) + 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#577 : rectype, n#541 : n, rectype : rectype, i : n, typeidx#386 : typeidx, x : idx, `X*#792` : subtype*, n : n, `subtype*` : subtype*}: - `%|-%:OK`(C, `_DEF`_deftype{rectype#577, n#541}(rectype, i)) - -- Rectype_ok: `%|-%:%`(C, rectype, `OK`_oktypeidx{typeidx#386}(x)) - -- if (rectype = `REC`_rectype(`%`_list{`X*#792`}(subtype^n{subtype <- `subtype*`}))) + rule _{C : context, rectype : rectype, i : n, x : idx, n : n, `subtype*` : subtype*}: + `%|-%: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, `X*#1124` : fieldtype*, `ft_1*` : fieldtype*, `ft'_1*` : fieldtype*, `X*#1137` : fieldtype*, `ft_2*` : fieldtype*}: - `%|-%<:%`(C, `STRUCT`_comptype(`%`_list{`X*#1124`}(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), `STRUCT`_comptype(`%`_list{`X*#1137`}(ft_2*{ft_2 <- `ft_2*`}))) + 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, fieldtype#11 : fieldtype, ft_1 : fieldtype, fieldtype#13 : fieldtype, ft_2 : fieldtype}: - `%|-%<:%`(C, `ARRAY`_comptype{fieldtype#11}(ft_1), `ARRAY`_comptype{fieldtype#13}(ft_2)) + 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, resulttype#82 : resulttype, `X*#1152` : valtype*, `t_11*` : valtype*, `X*#1165` : valtype*, `t_12*` : valtype*, resulttype#85 : resulttype, `X*#1180` : valtype*, `t_21*` : valtype*, `X*#1193` : valtype*, `t_22*` : valtype*, `X*#1206` : valtype*, `X*#1219` : valtype*, `X*#1232` : valtype*, `X*#1245` : valtype*}: - `%|-%<:%`(C, `FUNC%->%`_comptype{resulttype#82}(`%`_resulttype{`X*#1152`}(t_11*{t_11 <- `t_11*`}), `%`_resulttype{`X*#1165`}(t_12*{t_12 <- `t_12*`})), `FUNC%->%`_comptype{resulttype#85}(`%`_resulttype{`X*#1180`}(t_21*{t_21 <- `t_21*`}), `%`_resulttype{`X*#1193`}(t_22*{t_22 <- `t_22*`}))) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype{`X*#1206`}(t_21*{t_21 <- `t_21*`}), `%`_resulttype{`X*#1219`}(t_11*{t_11 <- `t_11*`})) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype{`X*#1232`}(t_12*{t_12 <- `t_12*`}), `%`_resulttype{`X*#1245`}(t_22*{t_22 <- `t_22*`})) + 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) @@ -114493,9 +89744,9 @@ relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) -- 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?#437` : final?, `typeuse*#437` : typeuse*, comptype#437 : comptype, `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}: `%|-%<:%`(C, deftype_1, deftype_2) - -- if ($unrolldt(deftype_1) = `SUB`_subtype{`final?#437`, `typeuse*#437`, comptype#437}(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 @@ -114528,19 +89779,19 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, `ARRAY`_heaptype, `EQ`_heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 - rule struct{C : context, deftype : deftype, `X*#863` : fieldtype*, `fieldtype*` : fieldtype*}: + rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), `STRUCT`_heaptype) - -- Expand: `%~~%`(deftype, `STRUCT`_comptype(`%`_list{`X*#863`}(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#9 : fieldtype, fieldtype : fieldtype}: + rule array{C : context, deftype : deftype, fieldtype : fieldtype}: `%|-%<:%`(C, (deftype : deftype <: heaptype), `ARRAY`_heaptype) - -- Expand: `%~~%`(deftype, `ARRAY`_comptype{fieldtype#9}(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, resulttype#39 : resulttype, `X*#878` : valtype*, `t_1*` : valtype*, `X*#891` : valtype*, `t_2*` : valtype*}: + rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), `FUNC`_heaptype) - -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype{resulttype#39}(`%`_resulttype{`X*#878`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#891`}(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}: @@ -114548,19 +89799,19 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, 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#388 : typeidx, typeidx : typeidx, heaptype : heaptype, `deftype*#17` : deftype*, i#4606 : nat}: - `%|-%<:%`(C, `_IDX`_heaptype{typeidx#388}(typeidx), heaptype) - -- Heaptype_sub: `%|-%<:%`(C, (C.`TYPES`_context{`deftype*#17`}[typeidx!`%`_typeidx{i#4606}.0] : deftype <: heaptype), heaptype) + 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#390 : typeidx, typeidx : typeidx, `deftype*#18` : deftype*, i#4628 : nat}: - `%|-%<:%`(C, heaptype, `_IDX`_heaptype{typeidx#390}(typeidx)) - -- Heaptype_sub: `%|-%<:%`(C, heaptype, (C.`TYPES`_context{`deftype*#18`}[typeidx!`%`_typeidx{i#4628}.0] : deftype <: heaptype)) + 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, n#573 : n, i : n, `typeuse*` : typeuse*, j : nat, `subtype*#4` : subtype*, `final?#425` : final?, `typeuse*#425` : typeuse*, comptype#425 : comptype, `final?` : final?, ct : comptype}: - `%|-%<:%`(C, `REC`_heaptype{n#573}(i), (typeuse*{typeuse <- `typeuse*`}[j] : typeuse <: heaptype)) - -- if (C.`RECS`_context{`subtype*#4`}[i] = `SUB`_subtype{`final?#425`, `typeuse*#425`, comptype#425}(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) + 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}: @@ -114589,13 +89840,13 @@ relation Heaptype_sub: `%|-%<:%`(context, 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, `null?#449` : null?, heaptype#451 : heaptype, ht_1 : heaptype, `null?#461` : null?, heaptype#463 : heaptype, ht_2 : heaptype}: - `%|-%<:%`(C, `REF`_reftype{`null?#449`, heaptype#451}(?(), ht_1), `REF`_reftype{`null?#461`, heaptype#463}(?(), ht_2)) + 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, `null?#473` : null?, heaptype#475 : heaptype, ht_1 : heaptype, `null?#485` : null?, heaptype#487 : heaptype, ht_2 : heaptype}: - `%|-%<:%`(C, `REF`_reftype{`null?#473`, heaptype#475}(`NULL`_null?{}, ht_1), `REF`_reftype{`null?#485`, heaptype#487}(?(`NULL`_null), ht_2)) + 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 @@ -114622,8 +89873,8 @@ relation Valtype_sub: `%|-%<:%`(context, 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, `X*#904` : valtype*, `t_1*` : valtype*, `X*#917` : valtype*, `t_2*` : valtype*}: - `%|-%<:%`(C, `%`_resulttype{`X*#904`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#917`}(t_2*{t_2 <- `t_2*`})) + 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 @@ -114641,13 +89892,13 @@ relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) ;; ../../../../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, `mut?#371` : mut?, storagetype#195 : storagetype, zt_1 : storagetype, `mut?#377` : mut?, storagetype#201 : storagetype, zt_2 : storagetype}: - `%|-%<:%`(C, `%%`_fieldtype{`mut?#371`, storagetype#195}(?(), zt_1), `%%`_fieldtype{`mut?#377`, storagetype#201}(?(), zt_2)) + 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, `mut?#389` : mut?, storagetype#213 : storagetype, zt_1 : storagetype, `mut?#401` : mut?, storagetype#225 : storagetype, zt_2 : storagetype}: - `%|-%<:%`(C, `%%`_fieldtype{`mut?#389`, storagetype#213}(?(`MUT`_mut), zt_1), `%%`_fieldtype{`mut?#401`, storagetype#225}(?(`MUT`_mut), zt_2)) + 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) } @@ -114655,11 +89906,11 @@ relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) ;; ../../../../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, resulttype#27 : resulttype, `localidx*#47` : localidx*, `X*#478` : valtype*, `t_1*` : valtype*, `x*` : idx*, `X*#530` : valtype*, `t_2*` : valtype*, `X*#543` : valtype*, `X*#556` : valtype*, `i#4081*` : nat*, `lct*` : localtype*, `localtype*#2*` : localtype**}: - `%|-%:OK`(C, `%->_%%`_instrtype{resulttype#27, `localidx*#47`}(`%`_resulttype{`X*#478`}(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype{`X*#530`}(t_2*{t_2 <- `t_2*`}))) - -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype{`X*#543`}(t_1*{t_1 <- `t_1*`})) - -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype{`X*#556`}(t_2*{t_2 <- `t_2*`})) - -- (if (C.`LOCALS`_context{`localtype*#2`}[x!`%`_idx{i#4081}.0] = lct))*{i#4081 <- `i#4081*`, lct <- `lct*`, `localtype*#2` <- `localtype*#2*`, x <- `x*`} + 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) @@ -114669,97 +89920,97 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) -- Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - rule typeidx{typeidx#220 : typeidx, typeidx : typeidx, C : context, comptype : comptype, `deftype*#11` : deftype*, i#4103 : nat}: - `%~~_%%`(`_IDX`_typeuse{typeidx#220}(typeidx), C, comptype) - -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#11`}[typeidx!`%`_typeidx{i#4103}.0], comptype) + 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, u64#48 : u64, `u64?#47` : u64?, i#4549 : nat, n : n, `i#4584?` : nat?, `m?` : m?, k : nat}: - `%|-%:%`(C, `[%..%]`_limits{u64#48, `u64?#47`}(`%`_u64{i#4549}(n), `%`_u64{i#4584}(m)?{i#4584 <- `i#4584?`, m <- `m?`}), k) + 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, resulttype#33 : resulttype, `X*#807` : valtype*, `t_1*` : valtype*, `X*#820` : valtype*, `t_2*` : valtype*}: + 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#33}(`%`_resulttype{`X*#807`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#820`}(t_2*{t_2 <- `t_2*`}))) + -- 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, `mut?#333` : mut?, valtype#247 : valtype, t : valtype}: - `%|-%:OK`(C, `%%`_globaltype{`mut?#333`, valtype#247}(`MUT`_mut?{}, t)) + 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#297 : addrtype, limits#297 : limits, addrtype : addrtype, limits : limits}: - `%|-%:OK`(C, `%%PAGE`_memtype{addrtype#297, limits#297}(addrtype, limits)) + 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#309 : addrtype, limits#309 : limits, reftype#311 : reftype, addrtype : addrtype, limits : limits, reftype : reftype}: - `%|-%:OK`(C, `%%%`_tabletype{addrtype#309, limits#309, reftype#311}(addrtype, limits, reftype)) + 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#89 : tagtype, tagtype : tagtype}: - `%|-%:OK`(C, `TAG`_externtype{tagtype#89}(tagtype)) + 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#101 : globaltype, globaltype : globaltype}: - `%|-%:OK`(C, `GLOBAL`_externtype{globaltype#101}(globaltype)) + 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#113 : memtype, memtype : memtype}: - `%|-%:OK`(C, `MEM`_externtype{memtype#113}(memtype)) + 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#127 : tabletype, tabletype : tabletype}: - `%|-%:OK`(C, `TABLE`_externtype{tabletype#127}(tabletype)) + 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#17 : typeuse, typeuse : typeuse, resulttype#36 : resulttype, `X*#835` : valtype*, `t_1*` : valtype*, `X*#848` : valtype*, `t_2*` : valtype*}: - `%|-%:OK`(C, `FUNC`_externtype{typeuse#17}(typeuse)) + 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#36}(`%`_resulttype{`X*#835`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#848`}(t_2*{t_2 <- `t_2*`}))) + -- 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, resulttype#59 : resulttype, `localidx*#59` : localidx*, `X*#930` : valtype*, `t_11*` : valtype*, `x_1*` : idx*, `X*#982` : valtype*, `t_12*` : valtype*, resulttype#79 : resulttype, `localidx*#71` : localidx*, `X*#995` : valtype*, `t_21*` : valtype*, `x_2*` : idx*, `X*#1047` : valtype*, `t_22*` : valtype*, `X*#1060` : valtype*, `X*#1073` : valtype*, `X*#1086` : valtype*, `X*#1099` : valtype*, `x*` : idx*, `i#4865*` : nat*, `init#65*` : init*, `localtype*#4*` : localtype**, `t*` : valtype*, `valtype#271*` : valtype*}: - `%|-%<:%`(C, `%->_%%`_instrtype{resulttype#59, `localidx*#59`}(`%`_resulttype{`X*#930`}(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype{`X*#982`}(t_12*{t_12 <- `t_12*`})), `%->_%%`_instrtype{resulttype#79, `localidx*#71`}(`%`_resulttype{`X*#995`}(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype{`X*#1047`}(t_22*{t_22 <- `t_22*`}))) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype{`X*#1060`}(t_21*{t_21 <- `t_21*`}), `%`_resulttype{`X*#1073`}(t_11*{t_11 <- `t_11*`})) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype{`X*#1086`}(t_12*{t_12 <- `t_12*`}), `%`_resulttype{`X*#1099`}(t_22*{t_22 <- `t_22*`})) + 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{`localtype*#4`}[x!`%`_idx{i#4865}.0] = `%%`_localtype{init#65, valtype#271}(`SET`_init, t)))*{i#4865 <- `i#4865*`, init#65 <- `init#65*`, `localtype*#4` <- `localtype*#4*`, t <- `t*`, valtype#271 <- `valtype#271*`, x <- `x*`} + -- (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, u64#84 : u64, `u64?#83` : u64?, i#4887 : nat, n_1 : n, i#4909 : nat, m_1 : m, u64#96 : u64, `u64?#95` : u64?, i#4931 : nat, n_2 : n, `i#4966?` : nat?, `m_2?` : m?}: - `%|-%<:%`(C, `[%..%]`_limits{u64#84, `u64?#83`}(`%`_u64{i#4887}(n_1), ?(`%`_u64{i#4909}(m_1))), `[%..%]`_limits{u64#96, `u64?#95`}(`%`_u64{i#4931}(n_2), `%`_u64{i#4966}(m_2)?{i#4966 <- `i#4966?`, m_2 <- `m_2?`})) + 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, u64#108 : u64, `u64?#107` : u64?, i#4988 : nat, n_1 : n, u64#120 : u64, `u64?#119` : u64?, i#5010 : nat, n_2 : n}: - `%|-%<:%`(C, `[%..%]`_limits{u64#108, `u64?#107`}(`%`_u64{i#4988}(n_1), ?()), `[%..%]`_limits{u64#120, `u64?#119`}(`%`_u64{i#5010}(n_2), ?())) + 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 @@ -114773,28 +90024,28 @@ relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) ;; ../../../../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, `mut?#501` : mut?, valtype#277 : valtype, valtype_1 : valtype, `mut?#507` : mut?, valtype#283 : valtype, valtype_2 : valtype}: - `%|-%<:%`(C, `%%`_globaltype{`mut?#501`, valtype#277}(?(), valtype_1), `%%`_globaltype{`mut?#507`, valtype#283}(?(), valtype_2)) + 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, `mut?#519` : mut?, valtype#295 : valtype, valtype_1 : valtype, `mut?#531` : mut?, valtype#307 : valtype, valtype_2 : valtype}: - `%|-%<:%`(C, `%%`_globaltype{`mut?#519`, valtype#295}(?(`MUT`_mut), valtype_1), `%%`_globaltype{`mut?#531`, valtype#307}(?(`MUT`_mut), valtype_2)) + 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#345 : addrtype, limits#345 : limits, addrtype : addrtype, limits_1 : limits, addrtype#357 : addrtype, limits#357 : limits, limits_2 : limits}: - `%|-%<:%`(C, `%%PAGE`_memtype{addrtype#345, limits#345}(addrtype, limits_1), `%%PAGE`_memtype{addrtype#357, limits#357}(addrtype, limits_2)) + 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#369 : addrtype, limits#369 : limits, reftype#335 : reftype, addrtype : addrtype, limits_1 : limits, reftype_1 : reftype, addrtype#381 : addrtype, limits#381 : limits, reftype#347 : reftype, limits_2 : limits, reftype_2 : reftype}: - `%|-%<:%`(C, `%%%`_tabletype{addrtype#369, limits#369, reftype#335}(addrtype, limits_1, reftype_1), `%%%`_tabletype{addrtype#381, limits#381, reftype#347}(addrtype, limits_2, reftype_2)) + 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) @@ -114802,78 +90053,78 @@ relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) ;; ../../../../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#91 : tagtype, tagtype_1 : tagtype, tagtype#93 : tagtype, tagtype_2 : tagtype}: - `%|-%<:%`(C, `TAG`_externtype{tagtype#91}(tagtype_1), `TAG`_externtype{tagtype#93}(tagtype_2)) + 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#103 : globaltype, globaltype_1 : globaltype, globaltype#105 : globaltype, globaltype_2 : globaltype}: - `%|-%<:%`(C, `GLOBAL`_externtype{globaltype#103}(globaltype_1), `GLOBAL`_externtype{globaltype#105}(globaltype_2)) + 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#115 : memtype, memtype_1 : memtype, memtype#117 : memtype, memtype_2 : memtype}: - `%|-%<:%`(C, `MEM`_externtype{memtype#115}(memtype_1), `MEM`_externtype{memtype#117}(memtype_2)) + 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#129 : tabletype, tabletype_1 : tabletype, tabletype#131 : tabletype, tabletype_2 : tabletype}: - `%|-%<:%`(C, `TABLE`_externtype{tabletype#129}(tabletype_1), `TABLE`_externtype{tabletype#131}(tabletype_2)) + 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, typeuse#19 : typeuse, deftype_1 : deftype, typeuse#21 : typeuse, deftype_2 : deftype}: - `%|-%<:%`(C, `FUNC`_externtype{typeuse#19}((deftype_1 : deftype <: typeuse)), `FUNC`_externtype{typeuse#21}((deftype_2 : deftype <: typeuse))) + 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?#3` : valtype?, `valtype?` : valtype?, resulttype#225 : resulttype, `localidx*#155` : localidx*, `X*#1681` : valtype*, `X*#1730` : valtype*}: - `%|-%:%`(C, `_RESULT`_blocktype{`valtype?#3`}(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype{resulttype#225, `localidx*#155`}(`%`_resulttype{`X*#1681`}([]), [], `%`_resulttype{`X*#1730`}(lift(valtype?{valtype <- `valtype?`})))) + 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#392 : typeidx, typeidx : typeidx, resulttype#245 : resulttype, `localidx*#167` : localidx*, `X*#1741` : valtype*, `t_1*` : valtype*, `X*#1792` : valtype*, `t_2*` : valtype*, `deftype*#19` : deftype*, i#5032 : nat, resulttype#248 : resulttype, `X*#1805` : valtype*, `X*#1818` : valtype*}: - `%|-%:%`(C, `_IDX`_blocktype{typeidx#392}(typeidx), `%->_%%`_instrtype{resulttype#245, `localidx*#167`}(`%`_resulttype{`X*#1741`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#1792`}(t_2*{t_2 <- `t_2*`}))) - -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#19`}[typeidx!`%`_typeidx{i#5032}.0], `FUNC%->%`_comptype{resulttype#248}(`%`_resulttype{`X*#1805`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#1818`}(t_2*{t_2 <- `t_2*`}))) + 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, tagidx#5 : tagidx, labelidx#29 : labelidx, x : idx, l : labelidx, `tagtype*#8` : tagtype*, i#5946 : nat, resulttype#1012 : resulttype, `X*#5029` : valtype*, `t*` : valtype*, `X*#5052` : valtype*, `X*#5063` : valtype*, `resulttype*#18` : resulttype*, i#5956 : nat}: - `%|-%:OK`(C, `CATCH`_catch{tagidx#5, labelidx#29}(x, l)) - -- Expand: `%~~%`($as_deftype(C.`TAGS`_context{`tagtype*#8`}[x!`%`_idx{i#5946}.0]), `FUNC%->%`_comptype{resulttype#1012}(`%`_resulttype{`X*#5029`}(t*{t <- `t*`}), `%`_resulttype{`X*#5052`}([]))) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype{`X*#5063`}(t*{t <- `t*`}), C.`LABELS`_context{`resulttype*#18`}[l!`%`_labelidx{i#5956}.0]) + 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, tagidx#7 : tagidx, labelidx#31 : labelidx, x : idx, l : labelidx, `tagtype*#9` : tagtype*, i#5992 : nat, resulttype#1015 : resulttype, `X*#5088` : valtype*, `t*` : valtype*, `X*#5111` : valtype*, `X*#5132` : valtype*, `null?#717` : null?, heaptype#719 : heaptype, `resulttype*#19` : resulttype*, i#6002 : nat}: - `%|-%:OK`(C, `CATCH_REF`_catch{tagidx#7, labelidx#31}(x, l)) - -- Expand: `%~~%`($as_deftype(C.`TAGS`_context{`tagtype*#9`}[x!`%`_idx{i#5992}.0]), `FUNC%->%`_comptype{resulttype#1015}(`%`_resulttype{`X*#5088`}(t*{t <- `t*`}), `%`_resulttype{`X*#5111`}([]))) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype{`X*#5132`}(t*{t <- `t*`} ++ [`REF`_valtype{`null?#717`, heaptype#719}(?(), `EXN`_heaptype)]), C.`LABELS`_context{`resulttype*#19`}[l!`%`_labelidx{i#6002}.0]) + 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, labelidx#33 : labelidx, l : labelidx, `X*#5163` : valtype*, `resulttype*#20` : resulttype*, i#6024 : nat}: - `%|-%:OK`(C, `CATCH_ALL`_catch{labelidx#33}(l)) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype{`X*#5163`}([]), C.`LABELS`_context{`resulttype*#20`}[l!`%`_labelidx{i#6024}.0]) + 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, labelidx#35 : labelidx, l : labelidx, `X*#5194` : valtype*, `null?#719` : null?, heaptype#721 : heaptype, `resulttype*#21` : resulttype*, i#6046 : nat}: - `%|-%:OK`(C, `CATCH_ALL_REF`_catch{labelidx#35}(l)) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype{`X*#5194`}([`REF`_valtype{`null?#719`, heaptype#721}(?(), `EXN`_heaptype)]), C.`LABELS`_context{`resulttype*#21`}[l!`%`_labelidx{i#6046}.0]) + 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, numtype#37 : numtype, i#31659 : nat}((Inn : Inn <: valtype)) = ?(`CONST`_val{numtype#37}((Inn : Inn <: numtype), `%`_num_{i#31659}(0))) + def $default_{Inn : Inn}((Inn : Inn <: valtype)) = ?(`CONST`_val((Inn : Inn <: numtype), `%`_num_(0))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{Fnn : Fnn, numtype#39 : numtype}((Fnn : Fnn <: valtype)) = ?(`CONST`_val{numtype#39}((Fnn : Fnn <: numtype), $fzero($size((Fnn : Fnn <: numtype))))) + 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, vectype#42 : vectype, i#31681 : nat}((Vnn : Vnn <: valtype)) = ?(`VCONST`_val{vectype#42}(Vnn, `%`_vec_{i#31681}(0))) + def $default_{Vnn : Vnn}((Vnn : Vnn <: valtype)) = ?(`VCONST`_val(Vnn, `%`_vec_(0))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{`null?#1037` : null?, heaptype#1043 : heaptype, ht : heaptype, heaptype#1045 : heaptype}(`REF`_valtype{`null?#1037`, heaptype#1043}(?(`NULL`_null), ht)) = ?(`REF.NULL`_val{heaptype#1045}(ht)) + def $default_{ht : heaptype}(`REF`_valtype(?(`NULL`_null), ht)) = ?(`REF.NULL`_val(ht)) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{`null?#1039` : null?, heaptype#1047 : heaptype, ht : heaptype}(`REF`_valtype{`null?#1039`, heaptype#1047}(?(), ht)) = ?() + def $default_{ht : heaptype}(`REF`_valtype(?(), ht)) = ?() ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Defaultable: `|-%DEFAULTABLE`(valtype) @@ -114885,8 +90136,8 @@ relation Defaultable: `|-%DEFAULTABLE`(valtype) ;; ../../../../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 _{u32#14 : u32, i#7729 : nat, n : n, u64#230 : u64, i#7751 : nat, m : m, at : addrtype, N : N}: - `|-%:%->%`({`ALIGN`{u32#14} `%`_u32{i#7729}(n), `OFFSET`{u64#230} `%`_u64{i#7751}(m)}, at, N) + 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)))) @@ -114901,610 +90152,610 @@ 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, resulttype#105 : resulttype, `localidx*#83` : localidx*, `X*#1268` : valtype*, `X*#1317` : valtype*}: - `%|-%:%`(C, `NOP`_instr, `%->_%%`_instrtype{resulttype#105, `localidx*#83`}(`%`_resulttype{`X*#1268`}([]), [], `%`_resulttype{`X*#1317`}([]))) + 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, resulttype#125 : resulttype, `localidx*#95` : localidx*, `X*#1328` : valtype*, `t_1*` : valtype*, `X*#1379` : valtype*, `t_2*` : valtype*, resulttype#145 : resulttype, `localidx*#107` : localidx*, `X*#1390` : valtype*, `X*#1441` : valtype*}: - `%|-%:%`(C, `UNREACHABLE`_instr, `%->_%%`_instrtype{resulttype#125, `localidx*#95`}(`%`_resulttype{`X*#1328`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#1379`}(t_2*{t_2 <- `t_2*`}))) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype{resulttype#145, `localidx*#107`}(`%`_resulttype{`X*#1390`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#1441`}(t_2*{t_2 <- `t_2*`}))) + 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, resulttype#165 : resulttype, `localidx*#119` : localidx*, `X*#1452` : valtype*, t : valtype, `X*#1520` : valtype*}: - `%|-%:%`(C, `DROP`_instr, `%->_%%`_instrtype{resulttype#165, `localidx*#119`}(`%`_resulttype{`X*#1452`}([t]), [], `%`_resulttype{`X*#1520`}([]))) + 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, `valtype*?#3` : valtype*?, t : valtype, resulttype#185 : resulttype, `localidx*#131` : localidx*, `X*#1541` : valtype*, `X*#1590` : valtype*}: - `%|-%:%`(C, `SELECT`_instr{`valtype*?#3`}(?([t])), `%->_%%`_instrtype{resulttype#185, `localidx*#131`}(`%`_resulttype{`X*#1541`}([t t `I32`_valtype]), [], `%`_resulttype{`X*#1590`}([t]))) + 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, `valtype*?#5` : valtype*?, resulttype#205 : resulttype, `localidx*#143` : localidx*, `X*#1611` : valtype*, t : valtype, `X*#1660` : valtype*, t' : valtype, numtype : numtype, vectype : vectype}: - `%|-%:%`(C, `SELECT`_instr{`valtype*?#5`}(?()), `%->_%%`_instrtype{resulttype#205, `localidx*#143`}(`%`_resulttype{`X*#1611`}([t t `I32`_valtype]), [], `%`_resulttype{`X*#1660`}([t]))) + 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, blocktype#7 : blocktype, `instr*#8` : instr*, bt : blocktype, `instr*` : instr*, resulttype#268 : resulttype, `localidx*#179` : localidx*, `X*#1831` : valtype*, `t_1*` : valtype*, `X*#1882` : valtype*, `t_2*` : valtype*, resulttype#288 : resulttype, `localidx*#191` : localidx*, `X*#1893` : valtype*, `X*#1944` : valtype*, `deftype*#20` : deftype*, `subtype*#5` : subtype*, `tagtype*#2` : tagtype*, `globaltype*#2` : globaltype*, `memtype*#2` : memtype*, `tabletype*#2` : tabletype*, `deftype*#21` : deftype*, `datatype*#2` : datatype*, `elemtype*#2` : elemtype*, `localtype*#5` : localtype*, `resulttype*#2` : resulttype*, `X*#1955` : valtype*, `resulttype?#2` : resulttype?, `funcidx*#40` : funcidx*, resulttype#308 : resulttype, `localidx*#203` : localidx*, `X*#1968` : valtype*, `x*` : idx*, `X*#2020` : valtype*}: - `%|-%:%`(C, `BLOCK`_instr{blocktype#7, `instr*#8`}(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype{resulttype#268, `localidx*#179`}(`%`_resulttype{`X*#1831`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#1882`}(t_2*{t_2 <- `t_2*`}))) - -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype{resulttype#288, `localidx*#191`}(`%`_resulttype{`X*#1893`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#1944`}(t_2*{t_2 <- `t_2*`}))) - -- Instrs_ok: `%|-%:%`({`TYPES`{`deftype*#20`} [], `RECS`{`subtype*#5`} [], `TAGS`{`tagtype*#2`} [], `GLOBALS`{`globaltype*#2`} [], `MEMS`{`memtype*#2`} [], `TABLES`{`tabletype*#2`} [], `FUNCS`{`deftype*#21`} [], `DATAS`{`datatype*#2`} [], `ELEMS`{`elemtype*#2`} [], `LOCALS`{`localtype*#5`} [], `LABELS`{`resulttype*#2`} [`%`_resulttype{`X*#1955`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#2`} ?(), `REFS`{`funcidx*#40`} []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype{resulttype#308, `localidx*#203`}(`%`_resulttype{`X*#1968`}(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype{`X*#2020`}(t_2*{t_2 <- `t_2*`}))) + 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, blocktype#9 : blocktype, `instr*#10` : instr*, bt : blocktype, `instr*` : instr*, resulttype#328 : resulttype, `localidx*#215` : localidx*, `X*#2033` : valtype*, `t_1*` : valtype*, `X*#2084` : valtype*, `t_2*` : valtype*, resulttype#348 : resulttype, `localidx*#227` : localidx*, `X*#2095` : valtype*, `X*#2146` : valtype*, `deftype*#22` : deftype*, `subtype*#6` : subtype*, `tagtype*#3` : tagtype*, `globaltype*#3` : globaltype*, `memtype*#3` : memtype*, `tabletype*#3` : tabletype*, `deftype*#23` : deftype*, `datatype*#3` : datatype*, `elemtype*#3` : elemtype*, `localtype*#6` : localtype*, `resulttype*#3` : resulttype*, `X*#2157` : valtype*, `resulttype?#3` : resulttype?, `funcidx*#41` : funcidx*, resulttype#368 : resulttype, `localidx*#239` : localidx*, `X*#2170` : valtype*, `x*` : idx*, `X*#2222` : valtype*}: - `%|-%:%`(C, `LOOP`_instr{blocktype#9, `instr*#10`}(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype{resulttype#328, `localidx*#215`}(`%`_resulttype{`X*#2033`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#2084`}(t_2*{t_2 <- `t_2*`}))) - -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype{resulttype#348, `localidx*#227`}(`%`_resulttype{`X*#2095`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#2146`}(t_2*{t_2 <- `t_2*`}))) - -- Instrs_ok: `%|-%:%`({`TYPES`{`deftype*#22`} [], `RECS`{`subtype*#6`} [], `TAGS`{`tagtype*#3`} [], `GLOBALS`{`globaltype*#3`} [], `MEMS`{`memtype*#3`} [], `TABLES`{`tabletype*#3`} [], `FUNCS`{`deftype*#23`} [], `DATAS`{`datatype*#3`} [], `ELEMS`{`elemtype*#3`} [], `LOCALS`{`localtype*#6`} [], `LABELS`{`resulttype*#3`} [`%`_resulttype{`X*#2157`}(t_1*{t_1 <- `t_1*`})], `RETURN`{`resulttype?#3`} ?(), `REFS`{`funcidx*#41`} []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype{resulttype#368, `localidx*#239`}(`%`_resulttype{`X*#2170`}(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype{`X*#2222`}(t_2*{t_2 <- `t_2*`}))) + 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, blocktype#11 : blocktype, `instr*#12` : instr*, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, resulttype#388 : resulttype, `localidx*#251` : localidx*, `X*#2245` : valtype*, `t_1*` : valtype*, `X*#2294` : valtype*, `t_2*` : valtype*, resulttype#408 : resulttype, `localidx*#263` : localidx*, `X*#2305` : valtype*, `X*#2356` : valtype*, `deftype*#24` : deftype*, `subtype*#7` : subtype*, `tagtype*#4` : tagtype*, `globaltype*#4` : globaltype*, `memtype*#4` : memtype*, `tabletype*#4` : tabletype*, `deftype*#25` : deftype*, `datatype*#4` : datatype*, `elemtype*#4` : elemtype*, `localtype*#7` : localtype*, `resulttype*#4` : resulttype*, `X*#2367` : valtype*, `resulttype?#4` : resulttype?, `funcidx*#42` : funcidx*, resulttype#428 : resulttype, `localidx*#275` : localidx*, `X*#2380` : valtype*, `x_1*` : idx*, `X*#2432` : valtype*, `deftype*#26` : deftype*, `subtype*#8` : subtype*, `tagtype*#5` : tagtype*, `globaltype*#5` : globaltype*, `memtype*#5` : memtype*, `tabletype*#5` : tabletype*, `deftype*#27` : deftype*, `datatype*#5` : datatype*, `elemtype*#5` : elemtype*, `localtype*#8` : localtype*, `resulttype*#5` : resulttype*, `X*#2445` : valtype*, `resulttype?#5` : resulttype?, `funcidx*#43` : funcidx*, resulttype#448 : resulttype, `localidx*#287` : localidx*, `X*#2458` : valtype*, `x_2*` : idx*, `X*#2510` : valtype*}: - `%|-%:%`(C, `IF%%ELSE%`_instr{blocktype#11, `instr*#12`}(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), `%->_%%`_instrtype{resulttype#388, `localidx*#251`}(`%`_resulttype{`X*#2245`}(t_1*{t_1 <- `t_1*`} ++ [`I32`_valtype]), [], `%`_resulttype{`X*#2294`}(t_2*{t_2 <- `t_2*`}))) - -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype{resulttype#408, `localidx*#263`}(`%`_resulttype{`X*#2305`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#2356`}(t_2*{t_2 <- `t_2*`}))) - -- Instrs_ok: `%|-%:%`({`TYPES`{`deftype*#24`} [], `RECS`{`subtype*#7`} [], `TAGS`{`tagtype*#4`} [], `GLOBALS`{`globaltype*#4`} [], `MEMS`{`memtype*#4`} [], `TABLES`{`tabletype*#4`} [], `FUNCS`{`deftype*#25`} [], `DATAS`{`datatype*#4`} [], `ELEMS`{`elemtype*#4`} [], `LOCALS`{`localtype*#7`} [], `LABELS`{`resulttype*#4`} [`%`_resulttype{`X*#2367`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#4`} ?(), `REFS`{`funcidx*#42`} []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype{resulttype#428, `localidx*#275`}(`%`_resulttype{`X*#2380`}(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype{`X*#2432`}(t_2*{t_2 <- `t_2*`}))) - -- Instrs_ok: `%|-%:%`({`TYPES`{`deftype*#26`} [], `RECS`{`subtype*#8`} [], `TAGS`{`tagtype*#5`} [], `GLOBALS`{`globaltype*#5`} [], `MEMS`{`memtype*#5`} [], `TABLES`{`tabletype*#5`} [], `FUNCS`{`deftype*#27`} [], `DATAS`{`datatype*#5`} [], `ELEMS`{`elemtype*#5`} [], `LOCALS`{`localtype*#8`} [], `LABELS`{`resulttype*#5`} [`%`_resulttype{`X*#2445`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#5`} ?(), `REFS`{`funcidx*#43`} []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype{resulttype#448, `localidx*#287`}(`%`_resulttype{`X*#2458`}(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype{`X*#2510`}(t_2*{t_2 <- `t_2*`}))) + 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, labelidx#15 : labelidx, l : labelidx, resulttype#468 : resulttype, `localidx*#299` : localidx*, `X*#2533` : valtype*, `t_1*` : valtype*, `t*` : valtype*, `X*#2582` : valtype*, `t_2*` : valtype*, `resulttype*#7` : resulttype*, i#5368 : nat, `X*#2627` : valtype*, resulttype#488 : resulttype, `localidx*#311` : localidx*, `X*#2637` : valtype*, `X*#2688` : valtype*}: - `%|-%:%`(C, `BR`_instr{labelidx#15}(l), `%->_%%`_instrtype{resulttype#468, `localidx*#299`}(`%`_resulttype{`X*#2533`}(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype{`X*#2582`}(t_2*{t_2 <- `t_2*`}))) - -- if (C.`LABELS`_context{`resulttype*#7`}[l!`%`_labelidx{i#5368}.0]!`%`_resulttype{`X*#2627`}.0 = t*{t <- `t*`}) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype{resulttype#488, `localidx*#311`}(`%`_resulttype{`X*#2637`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#2688`}(t_2*{t_2 <- `t_2*`}))) + 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, labelidx#17 : labelidx, l : labelidx, resulttype#508 : resulttype, `localidx*#323` : localidx*, `X*#2709` : valtype*, `t*` : valtype*, `X*#2758` : valtype*, `resulttype*#9` : resulttype*, i#5400 : nat, `X*#2803` : valtype*}: - `%|-%:%`(C, `BR_IF`_instr{labelidx#17}(l), `%->_%%`_instrtype{resulttype#508, `localidx*#323`}(`%`_resulttype{`X*#2709`}(t*{t <- `t*`} ++ [`I32`_valtype]), [], `%`_resulttype{`X*#2758`}(t*{t <- `t*`}))) - -- if (C.`LABELS`_context{`resulttype*#9`}[l!`%`_labelidx{i#5400}.0]!`%`_resulttype{`X*#2803`}.0 = t*{t <- `t*`}) + 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, `labelidx*#48` : labelidx*, labelidx#19 : labelidx, `l*` : labelidx*, l' : labelidx, resulttype#528 : resulttype, `localidx*#335` : localidx*, `X*#2823` : valtype*, `t_1*` : valtype*, `t*` : valtype*, `X*#2872` : valtype*, `t_2*` : valtype*, `X*#2883*` : valtype**, `i#5482*` : nat*, `resulttype*#10*` : resulttype**, `X*#2906` : valtype*, `resulttype*#11` : resulttype*, i#5492 : nat, resulttype#548 : resulttype, `localidx*#347` : localidx*, `X*#2939` : valtype*, `X*#2988` : valtype*}: - `%|-%:%`(C, `BR_TABLE`_instr{`labelidx*#48`, labelidx#19}(l*{l <- `l*`}, l'), `%->_%%`_instrtype{resulttype#528, `localidx*#335`}(`%`_resulttype{`X*#2823`}(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [`I32`_valtype]), [], `%`_resulttype{`X*#2872`}(t_2*{t_2 <- `t_2*`}))) - -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype{`X*#2883`}(t*{t <- `t*`}), C.`LABELS`_context{`resulttype*#10`}[l!`%`_labelidx{i#5482}.0]))*{`X*#2883` <- `X*#2883*`, i#5482 <- `i#5482*`, l <- `l*`, `resulttype*#10` <- `resulttype*#10*`} - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype{`X*#2906`}(t*{t <- `t*`}), C.`LABELS`_context{`resulttype*#11`}[l'!`%`_labelidx{i#5492}.0]) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype{resulttype#548, `localidx*#347`}(`%`_resulttype{`X*#2939`}(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [`I32`_valtype]), [], `%`_resulttype{`X*#2988`}(t_2*{t_2 <- `t_2*`}))) + 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, labelidx#21 : labelidx, l : labelidx, resulttype#568 : resulttype, `localidx*#359` : localidx*, `X*#3009` : valtype*, `t*` : valtype*, `null?#535` : null?, heaptype#537 : heaptype, ht : heaptype, `X*#3058` : valtype*, `null?#537` : null?, heaptype#539 : heaptype, `resulttype*#13` : resulttype*, i#5524 : nat, `X*#3103` : valtype*}: - `%|-%:%`(C, `BR_ON_NULL`_instr{labelidx#21}(l), `%->_%%`_instrtype{resulttype#568, `localidx*#359`}(`%`_resulttype{`X*#3009`}(t*{t <- `t*`} ++ [`REF`_valtype{`null?#535`, heaptype#537}(?(`NULL`_null), ht)]), [], `%`_resulttype{`X*#3058`}(t*{t <- `t*`} ++ [`REF`_valtype{`null?#537`, heaptype#539}(?(), ht)]))) - -- if (C.`LABELS`_context{`resulttype*#13`}[l!`%`_labelidx{i#5524}.0]!`%`_resulttype{`X*#3103`}.0 = t*{t <- `t*`}) + 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, labelidx#23 : labelidx, l : labelidx, resulttype#588 : resulttype, `localidx*#371` : localidx*, `X*#3123` : valtype*, `t*` : valtype*, `null?#539` : null?, heaptype#541 : heaptype, ht : heaptype, `X*#3172` : valtype*, `resulttype*#14` : resulttype*, i#5546 : nat, `X*#3193` : valtype*, `null?#541` : null?, heaptype#543 : heaptype}: - `%|-%:%`(C, `BR_ON_NON_NULL`_instr{labelidx#23}(l), `%->_%%`_instrtype{resulttype#588, `localidx*#371`}(`%`_resulttype{`X*#3123`}(t*{t <- `t*`} ++ [`REF`_valtype{`null?#539`, heaptype#541}(?(`NULL`_null), ht)]), [], `%`_resulttype{`X*#3172`}(t*{t <- `t*`}))) - -- if (C.`LABELS`_context{`resulttype*#14`}[l!`%`_labelidx{i#5546}.0] = `%`_resulttype{`X*#3193`}(t*{t <- `t*`} ++ [`REF`_valtype{`null?#541`, heaptype#543}(`NULL`_null?{}, ht)])) + 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, labelidx#25 : labelidx, reftype#373 : reftype, l : labelidx, rt_1 : reftype, rt_2 : reftype, resulttype#608 : resulttype, `localidx*#383` : localidx*, `X*#3214` : valtype*, `t*` : valtype*, `X*#3263` : valtype*, `resulttype*#15` : resulttype*, i#5568 : nat, `X*#3284` : valtype*, rt : reftype}: - `%|-%:%`(C, `BR_ON_CAST`_instr{labelidx#25, reftype#373}(l, rt_1, rt_2), `%->_%%`_instrtype{resulttype#608, `localidx*#383`}(`%`_resulttype{`X*#3214`}(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype{`X*#3263`}(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) - -- if (C.`LABELS`_context{`resulttype*#15`}[l!`%`_labelidx{i#5568}.0] = `%`_resulttype{`X*#3284`}(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) + 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, labelidx#27 : labelidx, reftype#376 : reftype, l : labelidx, rt_1 : reftype, rt_2 : reftype, resulttype#628 : resulttype, `localidx*#395` : localidx*, `X*#3305` : valtype*, `t*` : valtype*, `X*#3354` : valtype*, `resulttype*#16` : resulttype*, i#5590 : nat, `X*#3375` : valtype*, rt : reftype}: - `%|-%:%`(C, `BR_ON_CAST_FAIL`_instr{labelidx#27, reftype#376}(l, rt_1, rt_2), `%->_%%`_instrtype{resulttype#628, `localidx*#395`}(`%`_resulttype{`X*#3305`}(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype{`X*#3354`}(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) - -- if (C.`LABELS`_context{`resulttype*#16`}[l!`%`_labelidx{i#5590}.0] = `%`_resulttype{`X*#3375`}(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) + 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, funcidx#177 : funcidx, x : idx, resulttype#648 : resulttype, `localidx*#407` : localidx*, `X*#3386` : valtype*, `t_1*` : valtype*, `X*#3437` : valtype*, `t_2*` : valtype*, `deftype*#28` : deftype*, i#5614 : nat, resulttype#651 : resulttype, `X*#3450` : valtype*, `X*#3463` : valtype*}: - `%|-%:%`(C, `CALL`_instr{funcidx#177}(x), `%->_%%`_instrtype{resulttype#648, `localidx*#407`}(`%`_resulttype{`X*#3386`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#3437`}(t_2*{t_2 <- `t_2*`}))) - -- Expand: `%~~%`(C.`FUNCS`_context{`deftype*#28`}[x!`%`_idx{i#5614}.0], `FUNC%->%`_comptype{resulttype#651}(`%`_resulttype{`X*#3450`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#3463`}(t_2*{t_2 <- `t_2*`}))) + 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, typeuse#23 : typeuse, typeidx#394 : typeidx, x : idx, resulttype#671 : resulttype, `localidx*#419` : localidx*, `X*#3486` : valtype*, `t_1*` : valtype*, `null?#663` : null?, heaptype#665 : heaptype, typeidx#396 : typeidx, `X*#3535` : valtype*, `t_2*` : valtype*, `deftype*#29` : deftype*, i#5652 : nat, resulttype#674 : resulttype, `X*#3548` : valtype*, `X*#3561` : valtype*}: - `%|-%:%`(C, `CALL_REF`_instr{typeuse#23}(`_IDX`_typeuse{typeidx#394}(x)), `%->_%%`_instrtype{resulttype#671, `localidx*#419`}(`%`_resulttype{`X*#3486`}(t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype{`null?#663`, heaptype#665}(?(`NULL`_null), `_IDX`_heaptype{typeidx#396}(x))]), [], `%`_resulttype{`X*#3535`}(t_2*{t_2 <- `t_2*`}))) - -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#29`}[x!`%`_idx{i#5652}.0], `FUNC%->%`_comptype{resulttype#674}(`%`_resulttype{`X*#3548`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#3561`}(t_2*{t_2 <- `t_2*`}))) + 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, tableidx#26 : tableidx, typeuse#25 : typeuse, x : idx, typeidx#398 : typeidx, y : idx, resulttype#694 : resulttype, `localidx*#431` : localidx*, `X*#3584` : valtype*, `t_1*` : valtype*, at : addrtype, `X*#3633` : valtype*, `t_2*` : valtype*, `tabletype*#6` : tabletype*, i#5690 : nat, addrtype#441 : addrtype, limits#441 : limits, reftype#389 : reftype, lim : limits, rt : reftype, `null?#687` : null?, heaptype#689 : heaptype, `deftype*#30` : deftype*, i#5700 : nat, resulttype#697 : resulttype, `X*#3646` : valtype*, `X*#3659` : valtype*}: - `%|-%:%`(C, `CALL_INDIRECT`_instr{tableidx#26, typeuse#25}(x, `_IDX`_typeuse{typeidx#398}(y)), `%->_%%`_instrtype{resulttype#694, `localidx*#431`}(`%`_resulttype{`X*#3584`}(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#3633`}(t_2*{t_2 <- `t_2*`}))) - -- if (C.`TABLES`_context{`tabletype*#6`}[x!`%`_idx{i#5690}.0] = `%%%`_tabletype{addrtype#441, limits#441, reftype#389}(at, lim, rt)) - -- Reftype_sub: `%|-%<:%`(C, rt, `REF`_reftype{`null?#687`, heaptype#689}(?(`NULL`_null), `FUNC`_heaptype)) - -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#30`}[y!`%`_idx{i#5700}.0], `FUNC%->%`_comptype{resulttype#697}(`%`_resulttype{`X*#3646`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#3659`}(t_2*{t_2 <- `t_2*`}))) + 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, resulttype#717 : resulttype, `localidx*#443` : localidx*, `X*#3682` : valtype*, `t_1*` : valtype*, `t*` : valtype*, `X*#3731` : valtype*, `t_2*` : valtype*, `resulttype?#8` : resulttype?, `X*#3766` : valtype*, resulttype#737 : resulttype, `localidx*#455` : localidx*, `X*#3779` : valtype*, `X*#3830` : valtype*}: - `%|-%:%`(C, `RETURN`_instr, `%->_%%`_instrtype{resulttype#717, `localidx*#443`}(`%`_resulttype{`X*#3682`}(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype{`X*#3731`}(t_2*{t_2 <- `t_2*`}))) - -- if (C.`RETURN`_context{`resulttype?#8`} = ?(`%`_resulttype{`X*#3766`}(t*{t <- `t*`}))) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype{resulttype#737, `localidx*#455`}(`%`_resulttype{`X*#3779`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#3830`}(t_2*{t_2 <- `t_2*`}))) + 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, funcidx#179 : funcidx, x : idx, resulttype#757 : resulttype, `localidx*#467` : localidx*, `X*#3851` : valtype*, `t_3*` : valtype*, `t_1*` : valtype*, `X*#3900` : valtype*, `t_4*` : valtype*, `deftype*#31` : deftype*, i#5724 : nat, resulttype#760 : resulttype, `X*#3913` : valtype*, `X*#3926` : valtype*, `t_2*` : valtype*, `resulttype?#11` : resulttype?, `X*#3963` : valtype*, `t'_2*` : valtype*, `X*#3976` : valtype*, `X*#3989` : valtype*, resulttype#780 : resulttype, `localidx*#479` : localidx*, `X*#4002` : valtype*, `X*#4053` : valtype*}: - `%|-%:%`(C, `RETURN_CALL`_instr{funcidx#179}(x), `%->_%%`_instrtype{resulttype#757, `localidx*#467`}(`%`_resulttype{`X*#3851`}(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#3900`}(t_4*{t_4 <- `t_4*`}))) - -- Expand: `%~~%`(C.`FUNCS`_context{`deftype*#31`}[x!`%`_idx{i#5724}.0], `FUNC%->%`_comptype{resulttype#760}(`%`_resulttype{`X*#3913`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#3926`}(t_2*{t_2 <- `t_2*`}))) - -- if (C.`RETURN`_context{`resulttype?#11`} = ?(`%`_resulttype{`X*#3963`}(t'_2*{t'_2 <- `t'_2*`}))) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype{`X*#3976`}(t_2*{t_2 <- `t_2*`}), `%`_resulttype{`X*#3989`}(t'_2*{t'_2 <- `t'_2*`})) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype{resulttype#780, `localidx*#479`}(`%`_resulttype{`X*#4002`}(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype{`X*#4053`}(t_4*{t_4 <- `t_4*`}))) + 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, typeuse#27 : typeuse, typeidx#400 : typeidx, x : idx, resulttype#800 : resulttype, `localidx*#491` : localidx*, `X*#4074` : valtype*, `t_3*` : valtype*, `t_1*` : valtype*, `null?#689` : null?, heaptype#691 : heaptype, typeidx#402 : typeidx, `X*#4123` : valtype*, `t_4*` : valtype*, `deftype*#32` : deftype*, i#5762 : nat, resulttype#803 : resulttype, `X*#4136` : valtype*, `X*#4149` : valtype*, `t_2*` : valtype*, `resulttype?#14` : resulttype?, `X*#4186` : valtype*, `t'_2*` : valtype*, `X*#4199` : valtype*, `X*#4212` : valtype*, resulttype#823 : resulttype, `localidx*#503` : localidx*, `X*#4225` : valtype*, `X*#4276` : valtype*}: - `%|-%:%`(C, `RETURN_CALL_REF`_instr{typeuse#27}(`_IDX`_typeuse{typeidx#400}(x)), `%->_%%`_instrtype{resulttype#800, `localidx*#491`}(`%`_resulttype{`X*#4074`}(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype{`null?#689`, heaptype#691}(?(`NULL`_null), `_IDX`_heaptype{typeidx#402}(x))]), [], `%`_resulttype{`X*#4123`}(t_4*{t_4 <- `t_4*`}))) - -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#32`}[x!`%`_idx{i#5762}.0], `FUNC%->%`_comptype{resulttype#803}(`%`_resulttype{`X*#4136`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#4149`}(t_2*{t_2 <- `t_2*`}))) - -- if (C.`RETURN`_context{`resulttype?#14`} = ?(`%`_resulttype{`X*#4186`}(t'_2*{t'_2 <- `t'_2*`}))) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype{`X*#4199`}(t_2*{t_2 <- `t_2*`}), `%`_resulttype{`X*#4212`}(t'_2*{t'_2 <- `t'_2*`})) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype{resulttype#823, `localidx*#503`}(`%`_resulttype{`X*#4225`}(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype{`X*#4276`}(t_4*{t_4 <- `t_4*`}))) + 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, tableidx#28 : tableidx, typeuse#29 : typeuse, x : idx, typeidx#404 : typeidx, y : idx, resulttype#843 : resulttype, `localidx*#515` : localidx*, `X*#4297` : valtype*, `t_3*` : valtype*, `t_1*` : valtype*, at : addrtype, `X*#4346` : valtype*, `t_4*` : valtype*, `tabletype*#7` : tabletype*, i#5800 : nat, addrtype#453 : addrtype, limits#453 : limits, reftype#401 : reftype, lim : limits, rt : reftype, `null?#713` : null?, heaptype#715 : heaptype, `deftype*#33` : deftype*, i#5810 : nat, resulttype#846 : resulttype, `X*#4359` : valtype*, `X*#4372` : valtype*, `t_2*` : valtype*, `resulttype?#17` : resulttype?, `X*#4409` : valtype*, `t'_2*` : valtype*, `X*#4422` : valtype*, `X*#4435` : valtype*, resulttype#866 : resulttype, `localidx*#527` : localidx*, `X*#4448` : valtype*, `X*#4499` : valtype*}: - `%|-%:%`(C, `RETURN_CALL_INDIRECT`_instr{tableidx#28, typeuse#29}(x, `_IDX`_typeuse{typeidx#404}(y)), `%->_%%`_instrtype{resulttype#843, `localidx*#515`}(`%`_resulttype{`X*#4297`}(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#4346`}(t_4*{t_4 <- `t_4*`}))) - -- if (C.`TABLES`_context{`tabletype*#7`}[x!`%`_idx{i#5800}.0] = `%%%`_tabletype{addrtype#453, limits#453, reftype#401}(at, lim, rt)) - -- Reftype_sub: `%|-%<:%`(C, rt, `REF`_reftype{`null?#713`, heaptype#715}(?(`NULL`_null), `FUNC`_heaptype)) - -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#33`}[y!`%`_idx{i#5810}.0], `FUNC%->%`_comptype{resulttype#846}(`%`_resulttype{`X*#4359`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#4372`}(t_2*{t_2 <- `t_2*`}))) - -- if (C.`RETURN`_context{`resulttype?#17`} = ?(`%`_resulttype{`X*#4409`}(t'_2*{t'_2 <- `t'_2*`}))) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype{`X*#4422`}(t_2*{t_2 <- `t_2*`}), `%`_resulttype{`X*#4435`}(t'_2*{t'_2 <- `t'_2*`})) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype{resulttype#866, `localidx*#527`}(`%`_resulttype{`X*#4448`}(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype{`X*#4499`}(t_4*{t_4 <- `t_4*`}))) + 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, tagidx#3 : tagidx, x : idx, resulttype#886 : resulttype, `localidx*#539` : localidx*, `X*#4520` : valtype*, `t_1*` : valtype*, `t*` : valtype*, `X*#4569` : valtype*, `t_2*` : valtype*, `tagtype*#6` : tagtype*, i#5834 : nat, resulttype#889 : resulttype, `X*#4582` : valtype*, `X*#4605` : valtype*, resulttype#909 : resulttype, `localidx*#551` : localidx*, `X*#4616` : valtype*, `X*#4667` : valtype*}: - `%|-%:%`(C, `THROW`_instr{tagidx#3}(x), `%->_%%`_instrtype{resulttype#886, `localidx*#539`}(`%`_resulttype{`X*#4520`}(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype{`X*#4569`}(t_2*{t_2 <- `t_2*`}))) - -- Expand: `%~~%`($as_deftype(C.`TAGS`_context{`tagtype*#6`}[x!`%`_idx{i#5834}.0]), `FUNC%->%`_comptype{resulttype#889}(`%`_resulttype{`X*#4582`}(t*{t <- `t*`}), `%`_resulttype{`X*#4605`}([]))) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype{resulttype#909, `localidx*#551`}(`%`_resulttype{`X*#4616`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#4667`}(t_2*{t_2 <- `t_2*`}))) + 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, resulttype#929 : resulttype, `localidx*#563` : localidx*, `X*#4688` : valtype*, `t_1*` : valtype*, `null?#715` : null?, heaptype#717 : heaptype, `X*#4737` : valtype*, `t_2*` : valtype*, resulttype#949 : resulttype, `localidx*#575` : localidx*, `X*#4748` : valtype*, `X*#4799` : valtype*}: - `%|-%:%`(C, `THROW_REF`_instr, `%->_%%`_instrtype{resulttype#929, `localidx*#563`}(`%`_resulttype{`X*#4688`}(t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype{`null?#715`, heaptype#717}(?(`NULL`_null), `EXN`_heaptype)]), [], `%`_resulttype{`X*#4737`}(t_2*{t_2 <- `t_2*`}))) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype{resulttype#949, `localidx*#575`}(`%`_resulttype{`X*#4748`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#4799`}(t_2*{t_2 <- `t_2*`}))) + 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, blocktype#13 : blocktype, `instr*#15` : instr*, bt : blocktype, `X*#4812` : catch*, `catch*` : catch*, `instr*` : instr*, resulttype#969 : resulttype, `localidx*#587` : localidx*, `X*#4825` : valtype*, `t_1*` : valtype*, `X*#4876` : valtype*, `t_2*` : valtype*, resulttype#989 : resulttype, `localidx*#599` : localidx*, `X*#4887` : valtype*, `X*#4938` : valtype*, `deftype*#34` : deftype*, `subtype*#9` : subtype*, `tagtype*#7` : tagtype*, `globaltype*#6` : globaltype*, `memtype*#6` : memtype*, `tabletype*#8` : tabletype*, `deftype*#35` : deftype*, `datatype*#6` : datatype*, `elemtype*#6` : elemtype*, `localtype*#9` : localtype*, `resulttype*#17` : resulttype*, `X*#4949` : valtype*, `resulttype?#18` : resulttype?, `funcidx*#44` : funcidx*, resulttype#1009 : resulttype, `localidx*#611` : localidx*, `X*#4962` : valtype*, `x*` : idx*, `X*#5014` : valtype*}: - `%|-%:%`(C, `TRY_TABLE`_instr{blocktype#13, `instr*#15`}(bt, `%`_list{`X*#4812`}(catch*{catch <- `catch*`}), instr*{instr <- `instr*`}), `%->_%%`_instrtype{resulttype#969, `localidx*#587`}(`%`_resulttype{`X*#4825`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#4876`}(t_2*{t_2 <- `t_2*`}))) - -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype{resulttype#989, `localidx*#599`}(`%`_resulttype{`X*#4887`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#4938`}(t_2*{t_2 <- `t_2*`}))) - -- Instrs_ok: `%|-%:%`({`TYPES`{`deftype*#34`} [], `RECS`{`subtype*#9`} [], `TAGS`{`tagtype*#7`} [], `GLOBALS`{`globaltype*#6`} [], `MEMS`{`memtype*#6`} [], `TABLES`{`tabletype*#8`} [], `FUNCS`{`deftype*#35`} [], `DATAS`{`datatype*#6`} [], `ELEMS`{`elemtype*#6`} [], `LOCALS`{`localtype*#9`} [], `LABELS`{`resulttype*#17`} [`%`_resulttype{`X*#4949`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#18`} ?(), `REFS`{`funcidx*#44`} []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype{resulttype#1009, `localidx*#611`}(`%`_resulttype{`X*#4962`}(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype{`X*#5014`}(t_2*{t_2 <- `t_2*`}))) + 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, heaptype#723 : heaptype, ht : heaptype, resulttype#1035 : resulttype, `localidx*#623` : localidx*, `X*#5225` : valtype*, `X*#5274` : valtype*, `null?#721` : null?, heaptype#725 : heaptype}: - `%|-%:%`(C, `REF.NULL`_instr{heaptype#723}(ht), `%->_%%`_instrtype{resulttype#1035, `localidx*#623`}(`%`_resulttype{`X*#5225`}([]), [], `%`_resulttype{`X*#5274`}([`REF`_valtype{`null?#721`, heaptype#725}(?(`NULL`_null), ht)]))) + 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, funcidx#181 : funcidx, x : idx, resulttype#1055 : resulttype, `localidx*#635` : localidx*, `X*#5295` : valtype*, `X*#5344` : valtype*, `null?#723` : null?, heaptype#727 : heaptype, dt : deftype, `deftype*#36` : deftype*, i#6070 : nat, `funcidx*#47` : funcidx*}: - `%|-%:%`(C, `REF.FUNC`_instr{funcidx#181}(x), `%->_%%`_instrtype{resulttype#1055, `localidx*#635`}(`%`_resulttype{`X*#5295`}([]), [], `%`_resulttype{`X*#5344`}([`REF`_valtype{`null?#723`, heaptype#727}(?(), (dt : deftype <: heaptype))]))) - -- if (C.`FUNCS`_context{`deftype*#36`}[x!`%`_idx{i#6070}.0] = dt) - -- if (x <- C.`REFS`_context{`funcidx*#47`}) + 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, resulttype#1075 : resulttype, `localidx*#647` : localidx*, `X*#5363` : valtype*, `X*#5412` : valtype*, `null?#725` : null?, heaptype#729 : heaptype}: - `%|-%:%`(C, `REF.I31`_instr, `%->_%%`_instrtype{resulttype#1075, `localidx*#647`}(`%`_resulttype{`X*#5363`}([`I32`_valtype]), [], `%`_resulttype{`X*#5412`}([`REF`_valtype{`null?#725`, heaptype#729}(?(), `I31`_heaptype)]))) + 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, resulttype#1095 : resulttype, `localidx*#659` : localidx*, `X*#5433` : valtype*, `null?#727` : null?, heaptype#731 : heaptype, ht : heaptype, `X*#5482` : valtype*}: - `%|-%:%`(C, `REF.IS_NULL`_instr, `%->_%%`_instrtype{resulttype#1095, `localidx*#659`}(`%`_resulttype{`X*#5433`}([`REF`_valtype{`null?#727`, heaptype#731}(?(`NULL`_null), ht)]), [], `%`_resulttype{`X*#5482`}([`I32`_valtype]))) + 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, resulttype#1115 : resulttype, `localidx*#671` : localidx*, `X*#5503` : valtype*, `null?#729` : null?, heaptype#733 : heaptype, ht : heaptype, `X*#5552` : valtype*, `null?#731` : null?, heaptype#735 : heaptype}: - `%|-%:%`(C, `REF.AS_NON_NULL`_instr, `%->_%%`_instrtype{resulttype#1115, `localidx*#671`}(`%`_resulttype{`X*#5503`}([`REF`_valtype{`null?#729`, heaptype#733}(?(`NULL`_null), ht)]), [], `%`_resulttype{`X*#5552`}([`REF`_valtype{`null?#731`, heaptype#735}(?(), ht)]))) + 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, resulttype#1135 : resulttype, `localidx*#683` : localidx*, `X*#5573` : valtype*, `null?#733` : null?, heaptype#737 : heaptype, `null?#735` : null?, heaptype#739 : heaptype, `X*#5622` : valtype*}: - `%|-%:%`(C, `REF.EQ`_instr, `%->_%%`_instrtype{resulttype#1135, `localidx*#683`}(`%`_resulttype{`X*#5573`}([`REF`_valtype{`null?#733`, heaptype#737}(?(`NULL`_null), `EQ`_heaptype) `REF`_valtype{`null?#735`, heaptype#739}(?(`NULL`_null), `EQ`_heaptype)]), [], `%`_resulttype{`X*#5622`}([`I32`_valtype]))) + 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, reftype#403 : reftype, rt : reftype, resulttype#1155 : resulttype, `localidx*#695` : localidx*, `X*#5633` : valtype*, rt' : reftype, `X*#5703` : valtype*}: - `%|-%:%`(C, `REF.TEST`_instr{reftype#403}(rt), `%->_%%`_instrtype{resulttype#1155, `localidx*#695`}(`%`_resulttype{`X*#5633`}([(rt' : reftype <: valtype)]), [], `%`_resulttype{`X*#5703`}([`I32`_valtype]))) + 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, reftype#405 : reftype, rt : reftype, resulttype#1175 : resulttype, `localidx*#707` : localidx*, `X*#5714` : valtype*, rt' : reftype, `X*#5784` : valtype*}: - `%|-%:%`(C, `REF.CAST`_instr{reftype#405}(rt), `%->_%%`_instrtype{resulttype#1175, `localidx*#707`}(`%`_resulttype{`X*#5714`}([(rt' : reftype <: valtype)]), [], `%`_resulttype{`X*#5784`}([(rt : reftype <: valtype)]))) + 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#5 : sx, sx : sx, resulttype#1195 : resulttype, `localidx*#719` : localidx*, `X*#5805` : valtype*, `null?#801` : null?, heaptype#805 : heaptype, `X*#5854` : valtype*}: - `%|-%:%`(C, `I31.GET`_instr{sx#5}(sx), `%->_%%`_instrtype{resulttype#1195, `localidx*#719`}(`%`_resulttype{`X*#5805`}([`REF`_valtype{`null?#801`, heaptype#805}(?(`NULL`_null), `I31`_heaptype)]), [], `%`_resulttype{`X*#5854`}([`I32`_valtype]))) + 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, typeidx#406 : typeidx, x : idx, resulttype#1215 : resulttype, `localidx*#731` : localidx*, `X*#5865` : valtype*, `zt*` : storagetype*, `X*#5916` : valtype*, `null?#803` : null?, heaptype#807 : heaptype, typeidx#408 : typeidx, `deftype*#37` : deftype*, i#6131 : nat, `X*#5929` : fieldtype*, `mut?*` : mut?*, `mut?#573*` : mut?*, `storagetype#337*` : storagetype*}: - `%|-%:%`(C, `STRUCT.NEW`_instr{typeidx#406}(x), `%->_%%`_instrtype{resulttype#1215, `localidx*#731`}(`%`_resulttype{`X*#5865`}($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype{`X*#5916`}([`REF`_valtype{`null?#803`, heaptype#807}(?(), `_IDX`_heaptype{typeidx#408}(x))]))) - -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#37`}[x!`%`_idx{i#6131}.0], `STRUCT`_comptype(`%`_list{`X*#5929`}(`%%`_fieldtype{`mut?#573`, storagetype#337}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#573` <- `mut?#573*`, storagetype#337 <- `storagetype#337*`, zt <- `zt*`}))) + 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, typeidx#410 : typeidx, x : idx, resulttype#1235 : resulttype, `localidx*#743` : localidx*, `X*#5952` : valtype*, `X*#6001` : valtype*, `null?#805` : null?, heaptype#809 : heaptype, typeidx#412 : typeidx, `deftype*#38` : deftype*, i#6169 : nat, `X*#6014` : fieldtype*, `mut?*` : mut?*, `mut?#591*` : mut?*, `storagetype#355*` : storagetype*, `zt*` : storagetype*}: - `%|-%:%`(C, `STRUCT.NEW_DEFAULT`_instr{typeidx#410}(x), `%->_%%`_instrtype{resulttype#1235, `localidx*#743`}(`%`_resulttype{`X*#5952`}([]), [], `%`_resulttype{`X*#6001`}([`REF`_valtype{`null?#805`, heaptype#809}(?(), `_IDX`_heaptype{typeidx#412}(x))]))) - -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#38`}[x!`%`_idx{i#6169}.0], `STRUCT`_comptype(`%`_list{`X*#6014`}(`%%`_fieldtype{`mut?#591`, storagetype#355}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#591` <- `mut?#591*`, storagetype#355 <- `storagetype#355*`, zt <- `zt*`}))) + 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?#7` : sx?, typeidx#414 : typeidx, u32#8 : u32, `sx?` : sx?, x : idx, i : u32, resulttype#1255 : resulttype, `localidx*#755` : localidx*, `X*#6037` : valtype*, `null?#807` : null?, heaptype#811 : heaptype, typeidx#416 : typeidx, `X*#6086` : valtype*, zt : storagetype, `deftype*#39` : deftype*, i#6236 : nat, `X*#6099` : fieldtype*, `ft*` : fieldtype*, i#6246 : nat, `mut?#617` : mut?, storagetype#381 : storagetype, `mut?` : mut?}: - `%|-%:%`(C, `STRUCT.GET`_instr{`sx?#7`, typeidx#414, u32#8}(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype{resulttype#1255, `localidx*#755`}(`%`_resulttype{`X*#6037`}([`REF`_valtype{`null?#807`, heaptype#811}(?(`NULL`_null), `_IDX`_heaptype{typeidx#416}(x))]), [], `%`_resulttype{`X*#6086`}([$unpack(zt)]))) - -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#39`}[x!`%`_idx{i#6236}.0], `STRUCT`_comptype(`%`_list{`X*#6099`}(ft*{ft <- `ft*`}))) - -- if (ft*{ft <- `ft*`}[i!`%`_u32{i#6246}.0] = `%%`_fieldtype{`mut?#617`, storagetype#381}(mut?{mut <- `mut?`}, zt)) + 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, typeidx#418 : typeidx, u32#10 : u32, x : idx, i : u32, resulttype#1275 : resulttype, `localidx*#767` : localidx*, `X*#6122` : valtype*, `null?#809` : null?, heaptype#813 : heaptype, typeidx#420 : typeidx, zt : storagetype, `X*#6171` : valtype*, `deftype*#40` : deftype*, i#6298 : nat, `X*#6184` : fieldtype*, `ft*` : fieldtype*, i#6308 : nat, `mut?#643` : mut?, storagetype#407 : storagetype}: - `%|-%:%`(C, `STRUCT.SET`_instr{typeidx#418, u32#10}(x, i), `%->_%%`_instrtype{resulttype#1275, `localidx*#767`}(`%`_resulttype{`X*#6122`}([`REF`_valtype{`null?#809`, heaptype#813}(?(`NULL`_null), `_IDX`_heaptype{typeidx#420}(x)) $unpack(zt)]), [], `%`_resulttype{`X*#6171`}([]))) - -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#40`}[x!`%`_idx{i#6298}.0], `STRUCT`_comptype(`%`_list{`X*#6184`}(ft*{ft <- `ft*`}))) - -- if (ft*{ft <- `ft*`}[i!`%`_u32{i#6308}.0] = `%%`_fieldtype{`mut?#643`, storagetype#407}(?(`MUT`_mut), zt)) + 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, typeidx#422 : typeidx, x : idx, resulttype#1295 : resulttype, `localidx*#779` : localidx*, `X*#6207` : valtype*, zt : storagetype, `X*#6256` : valtype*, `null?#811` : null?, heaptype#815 : heaptype, typeidx#424 : typeidx, `deftype*#41` : deftype*, i#6346 : nat, fieldtype#15 : fieldtype, `mut?#655` : mut?, storagetype#419 : storagetype, `mut?` : mut?}: - `%|-%:%`(C, `ARRAY.NEW`_instr{typeidx#422}(x), `%->_%%`_instrtype{resulttype#1295, `localidx*#779`}(`%`_resulttype{`X*#6207`}([$unpack(zt) `I32`_valtype]), [], `%`_resulttype{`X*#6256`}([`REF`_valtype{`null?#811`, heaptype#815}(?(), `_IDX`_heaptype{typeidx#424}(x))]))) - -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#41`}[x!`%`_idx{i#6346}.0], `ARRAY`_comptype{fieldtype#15}(`%%`_fieldtype{`mut?#655`, storagetype#419}(mut?{mut <- `mut?`}, zt))) + 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, typeidx#426 : typeidx, x : idx, resulttype#1315 : resulttype, `localidx*#791` : localidx*, `X*#6275` : valtype*, `X*#6324` : valtype*, `null?#813` : null?, heaptype#817 : heaptype, typeidx#428 : typeidx, `deftype*#42` : deftype*, i#6384 : nat, fieldtype#17 : fieldtype, `mut?#667` : mut?, storagetype#431 : storagetype, `mut?` : mut?, zt : storagetype}: - `%|-%:%`(C, `ARRAY.NEW_DEFAULT`_instr{typeidx#426}(x), `%->_%%`_instrtype{resulttype#1315, `localidx*#791`}(`%`_resulttype{`X*#6275`}([`I32`_valtype]), [], `%`_resulttype{`X*#6324`}([`REF`_valtype{`null?#813`, heaptype#817}(?(), `_IDX`_heaptype{typeidx#428}(x))]))) - -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#42`}[x!`%`_idx{i#6384}.0], `ARRAY`_comptype{fieldtype#17}(`%%`_fieldtype{`mut?#667`, storagetype#431}(mut?{mut <- `mut?`}, zt))) + 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, typeidx#430 : typeidx, u32#12 : u32, x : idx, i#6422 : nat, n : n, resulttype#1335 : resulttype, `localidx*#803` : localidx*, `X*#6335` : valtype*, zt : storagetype, `X*#6386` : valtype*, `null?#815` : null?, heaptype#819 : heaptype, typeidx#432 : typeidx, `deftype*#43` : deftype*, i#6446 : nat, fieldtype#19 : fieldtype, `mut?#679` : mut?, storagetype#443 : storagetype, `mut?` : mut?}: - `%|-%:%`(C, `ARRAY.NEW_FIXED`_instr{typeidx#430, u32#12}(x, `%`_u32{i#6422}(n)), `%->_%%`_instrtype{resulttype#1335, `localidx*#803`}(`%`_resulttype{`X*#6335`}($unpack(zt)^n{}), [], `%`_resulttype{`X*#6386`}([`REF`_valtype{`null?#815`, heaptype#819}(?(), `_IDX`_heaptype{typeidx#432}(x))]))) - -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#43`}[x!`%`_idx{i#6446}.0], `ARRAY`_comptype{fieldtype#19}(`%%`_fieldtype{`mut?#679`, storagetype#443}(mut?{mut <- `mut?`}, zt))) + 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, typeidx#434 : typeidx, elemidx#9 : elemidx, x : idx, y : idx, resulttype#1355 : resulttype, `localidx*#815` : localidx*, `X*#6407` : valtype*, `X*#6456` : valtype*, `null?#817` : null?, heaptype#821 : heaptype, typeidx#436 : typeidx, `deftype*#44` : deftype*, i#6498 : nat, fieldtype#21 : fieldtype, `mut?#691` : mut?, storagetype#455 : storagetype, `mut?` : mut?, rt : reftype, `elemtype*#7` : elemtype*, i#6508 : nat}: - `%|-%:%`(C, `ARRAY.NEW_ELEM`_instr{typeidx#434, elemidx#9}(x, y), `%->_%%`_instrtype{resulttype#1355, `localidx*#815`}(`%`_resulttype{`X*#6407`}([`I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#6456`}([`REF`_valtype{`null?#817`, heaptype#821}(?(), `_IDX`_heaptype{typeidx#436}(x))]))) - -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#44`}[x!`%`_idx{i#6498}.0], `ARRAY`_comptype{fieldtype#21}(`%%`_fieldtype{`mut?#691`, storagetype#455}(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) - -- Reftype_sub: `%|-%<:%`(C, C.`ELEMS`_context{`elemtype*#7`}[y!`%`_idx{i#6508}.0], rt) + 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, typeidx#438 : typeidx, dataidx#9 : dataidx, x : idx, y : idx, resulttype#1375 : resulttype, `localidx*#827` : localidx*, `X*#6477` : valtype*, `X*#6526` : valtype*, `null?#831` : null?, heaptype#835 : heaptype, typeidx#440 : typeidx, `deftype*#45` : deftype*, i#6560 : nat, fieldtype#23 : fieldtype, `mut?#703` : mut?, storagetype#467 : storagetype, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype, `datatype*#7` : datatype*, i#6570 : nat}: - `%|-%:%`(C, `ARRAY.NEW_DATA`_instr{typeidx#438, dataidx#9}(x, y), `%->_%%`_instrtype{resulttype#1375, `localidx*#827`}(`%`_resulttype{`X*#6477`}([`I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#6526`}([`REF`_valtype{`null?#831`, heaptype#835}(?(), `_IDX`_heaptype{typeidx#440}(x))]))) - -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#45`}[x!`%`_idx{i#6560}.0], `ARRAY`_comptype{fieldtype#23}(`%%`_fieldtype{`mut?#703`, storagetype#467}(mut?{mut <- `mut?`}, zt))) + 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{`datatype*#7`}[y!`%`_idx{i#6570}.0] = `OK`_datatype) + -- 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?#9` : sx?, typeidx#442 : typeidx, `sx?` : sx?, x : idx, resulttype#1395 : resulttype, `localidx*#839` : localidx*, `X*#6547` : valtype*, `null?#833` : null?, heaptype#837 : heaptype, typeidx#444 : typeidx, `X*#6596` : valtype*, zt : storagetype, `deftype*#46` : deftype*, i#6645 : nat, fieldtype#25 : fieldtype, `mut?#715` : mut?, storagetype#479 : storagetype, `mut?` : mut?}: - `%|-%:%`(C, `ARRAY.GET`_instr{`sx?#9`, typeidx#442}(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype{resulttype#1395, `localidx*#839`}(`%`_resulttype{`X*#6547`}([`REF`_valtype{`null?#833`, heaptype#837}(?(`NULL`_null), `_IDX`_heaptype{typeidx#444}(x)) `I32`_valtype]), [], `%`_resulttype{`X*#6596`}([$unpack(zt)]))) - -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#46`}[x!`%`_idx{i#6645}.0], `ARRAY`_comptype{fieldtype#25}(`%%`_fieldtype{`mut?#715`, storagetype#479}(mut?{mut <- `mut?`}, zt))) + 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, typeidx#446 : typeidx, x : idx, resulttype#1415 : resulttype, `localidx*#851` : localidx*, `X*#6617` : valtype*, `null?#835` : null?, heaptype#839 : heaptype, typeidx#448 : typeidx, zt : storagetype, `X*#6666` : valtype*, `deftype*#47` : deftype*, i#6683 : nat, fieldtype#27 : fieldtype, `mut?#727` : mut?, storagetype#491 : storagetype}: - `%|-%:%`(C, `ARRAY.SET`_instr{typeidx#446}(x), `%->_%%`_instrtype{resulttype#1415, `localidx*#851`}(`%`_resulttype{`X*#6617`}([`REF`_valtype{`null?#835`, heaptype#839}(?(`NULL`_null), `_IDX`_heaptype{typeidx#448}(x)) `I32`_valtype $unpack(zt)]), [], `%`_resulttype{`X*#6666`}([]))) - -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#47`}[x!`%`_idx{i#6683}.0], `ARRAY`_comptype{fieldtype#27}(`%%`_fieldtype{`mut?#727`, storagetype#491}(?(`MUT`_mut), zt))) + 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, resulttype#1435 : resulttype, `localidx*#863` : localidx*, `X*#6687` : valtype*, `null?#837` : null?, heaptype#841 : heaptype, `X*#6736` : valtype*}: - `%|-%:%`(C, `ARRAY.LEN`_instr, `%->_%%`_instrtype{resulttype#1435, `localidx*#863`}(`%`_resulttype{`X*#6687`}([`REF`_valtype{`null?#837`, heaptype#841}(?(`NULL`_null), `ARRAY`_heaptype)]), [], `%`_resulttype{`X*#6736`}([`I32`_valtype]))) + 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, typeidx#450 : typeidx, x : idx, resulttype#1455 : resulttype, `localidx*#875` : localidx*, `X*#6757` : valtype*, `null?#839` : null?, heaptype#843 : heaptype, typeidx#452 : typeidx, zt : storagetype, `X*#6806` : valtype*, `deftype*#48` : deftype*, i#6721 : nat, fieldtype#29 : fieldtype, `mut?#739` : mut?, storagetype#503 : storagetype}: - `%|-%:%`(C, `ARRAY.FILL`_instr{typeidx#450}(x), `%->_%%`_instrtype{resulttype#1455, `localidx*#875`}(`%`_resulttype{`X*#6757`}([`REF`_valtype{`null?#839`, heaptype#843}(?(`NULL`_null), `_IDX`_heaptype{typeidx#452}(x)) `I32`_valtype $unpack(zt) `I32`_valtype]), [], `%`_resulttype{`X*#6806`}([]))) - -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#48`}[x!`%`_idx{i#6721}.0], `ARRAY`_comptype{fieldtype#29}(`%%`_fieldtype{`mut?#739`, storagetype#503}(?(`MUT`_mut), zt))) + 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, typeidx#454 : typeidx, x_1 : idx, x_2 : idx, resulttype#1475 : resulttype, `localidx*#887` : localidx*, `X*#6827` : valtype*, `null?#841` : null?, heaptype#845 : heaptype, typeidx#457 : typeidx, `null?#843` : null?, heaptype#847 : heaptype, typeidx#459 : typeidx, `X*#6876` : valtype*, `deftype*#49` : deftype*, i#6787 : nat, fieldtype#31 : fieldtype, `mut?#751` : mut?, storagetype#515 : storagetype, zt_1 : storagetype, `deftype*#50` : deftype*, i#6797 : nat, fieldtype#33 : fieldtype, `mut?#763` : mut?, storagetype#527 : storagetype, `mut?` : mut?, zt_2 : storagetype}: - `%|-%:%`(C, `ARRAY.COPY`_instr{typeidx#454}(x_1, x_2), `%->_%%`_instrtype{resulttype#1475, `localidx*#887`}(`%`_resulttype{`X*#6827`}([`REF`_valtype{`null?#841`, heaptype#845}(?(`NULL`_null), `_IDX`_heaptype{typeidx#457}(x_1)) `I32`_valtype `REF`_valtype{`null?#843`, heaptype#847}(?(`NULL`_null), `_IDX`_heaptype{typeidx#459}(x_2)) `I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#6876`}([]))) - -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#49`}[x_1!`%`_idx{i#6787}.0], `ARRAY`_comptype{fieldtype#31}(`%%`_fieldtype{`mut?#751`, storagetype#515}(?(`MUT`_mut), zt_1))) - -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#50`}[x_2!`%`_idx{i#6797}.0], `ARRAY`_comptype{fieldtype#33}(`%%`_fieldtype{`mut?#763`, storagetype#527}(mut?{mut <- `mut?`}, zt_2))) + 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, typeidx#461 : typeidx, elemidx#11 : elemidx, x : idx, y : idx, resulttype#1495 : resulttype, `localidx*#899` : localidx*, `X*#6897` : valtype*, `null?#845` : null?, heaptype#849 : heaptype, typeidx#463 : typeidx, `X*#6946` : valtype*, `deftype*#51` : deftype*, i#6849 : nat, fieldtype#35 : fieldtype, `mut?#775` : mut?, storagetype#539 : storagetype, zt : storagetype, `elemtype*#8` : elemtype*, i#6859 : nat}: - `%|-%:%`(C, `ARRAY.INIT_ELEM`_instr{typeidx#461, elemidx#11}(x, y), `%->_%%`_instrtype{resulttype#1495, `localidx*#899`}(`%`_resulttype{`X*#6897`}([`REF`_valtype{`null?#845`, heaptype#849}(?(`NULL`_null), `_IDX`_heaptype{typeidx#463}(x)) `I32`_valtype `I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#6946`}([]))) - -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#51`}[x!`%`_idx{i#6849}.0], `ARRAY`_comptype{fieldtype#35}(`%%`_fieldtype{`mut?#775`, storagetype#539}(?(`MUT`_mut), zt))) - -- Storagetype_sub: `%|-%<:%`(C, (C.`ELEMS`_context{`elemtype*#8`}[y!`%`_idx{i#6859}.0] : reftype <: storagetype), zt) + 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, typeidx#465 : typeidx, dataidx#11 : dataidx, x : idx, y : idx, resulttype#1515 : resulttype, `localidx*#911` : localidx*, `X*#6967` : valtype*, `null?#847` : null?, heaptype#851 : heaptype, typeidx#467 : typeidx, `X*#7016` : valtype*, `deftype*#52` : deftype*, i#6911 : nat, fieldtype#37 : fieldtype, `mut?#787` : mut?, storagetype#551 : storagetype, zt : storagetype, numtype : numtype, vectype : vectype, `datatype*#8` : datatype*, i#6921 : nat}: - `%|-%:%`(C, `ARRAY.INIT_DATA`_instr{typeidx#465, dataidx#11}(x, y), `%->_%%`_instrtype{resulttype#1515, `localidx*#911`}(`%`_resulttype{`X*#6967`}([`REF`_valtype{`null?#847`, heaptype#851}(?(`NULL`_null), `_IDX`_heaptype{typeidx#467}(x)) `I32`_valtype `I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#7016`}([]))) - -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#52`}[x!`%`_idx{i#6911}.0], `ARRAY`_comptype{fieldtype#37}(`%%`_fieldtype{`mut?#787`, storagetype#551}(?(`MUT`_mut), zt))) + 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{`datatype*#8`}[y!`%`_idx{i#6921}.0] = `OK`_datatype) + -- 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, resulttype#1535 : resulttype, `localidx*#923` : localidx*, `X*#7037` : valtype*, `null?#849` : null?, heaptype#853 : heaptype, `null_1?` : null?, `X*#7086` : valtype*, `null?#851` : null?, heaptype#855 : heaptype, `null_2?` : null?}: - `%|-%:%`(C, `EXTERN.CONVERT_ANY`_instr, `%->_%%`_instrtype{resulttype#1535, `localidx*#923`}(`%`_resulttype{`X*#7037`}([`REF`_valtype{`null?#849`, heaptype#853}(null_1?{null_1 <- `null_1?`}, `ANY`_heaptype)]), [], `%`_resulttype{`X*#7086`}([`REF`_valtype{`null?#851`, heaptype#855}(null_2?{null_2 <- `null_2?`}, `EXTERN`_heaptype)]))) + 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, resulttype#1555 : resulttype, `localidx*#935` : localidx*, `X*#7107` : valtype*, `null?#853` : null?, heaptype#857 : heaptype, `null_1?` : null?, `X*#7156` : valtype*, `null?#855` : null?, heaptype#859 : heaptype, `null_2?` : null?}: - `%|-%:%`(C, `ANY.CONVERT_EXTERN`_instr, `%->_%%`_instrtype{resulttype#1555, `localidx*#935`}(`%`_resulttype{`X*#7107`}([`REF`_valtype{`null?#853`, heaptype#857}(null_1?{null_1 <- `null_1?`}, `EXTERN`_heaptype)]), [], `%`_resulttype{`X*#7156`}([`REF`_valtype{`null?#855`, heaptype#859}(null_2?{null_2 <- `null_2?`}, `ANY`_heaptype)]))) + 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, localidx#7 : localidx, x : idx, resulttype#1575 : resulttype, `localidx*#947` : localidx*, `X*#7177` : valtype*, `X*#7226` : valtype*, t : valtype, `localtype*#10` : localtype*, i#6945 : nat, init#77 : init, valtype#343 : valtype}: - `%|-%:%`(C, `LOCAL.GET`_instr{localidx#7}(x), `%->_%%`_instrtype{resulttype#1575, `localidx*#947`}(`%`_resulttype{`X*#7177`}([]), [], `%`_resulttype{`X*#7226`}([t]))) - -- if (C.`LOCALS`_context{`localtype*#10`}[x!`%`_idx{i#6945}.0] = `%%`_localtype{init#77, valtype#343}(`SET`_init, t)) + 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, localidx#9 : localidx, x : idx, resulttype#1595 : resulttype, `localidx*#959` : localidx*, `X*#7237` : valtype*, t : valtype, `X*#7334` : valtype*, `localtype*#11` : localtype*, i#7182 : nat, init#89 : init, valtype#355 : valtype, init : init}: - `%|-%:%`(C, `LOCAL.SET`_instr{localidx#9}(x), `%->_%%`_instrtype{resulttype#1595, `localidx*#959`}(`%`_resulttype{`X*#7237`}([t]), [x], `%`_resulttype{`X*#7334`}([]))) - -- if (C.`LOCALS`_context{`localtype*#11`}[x!`%`_idx{i#7182}.0] = `%%`_localtype{init#89, valtype#355}(init, t)) + 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, localidx#11 : localidx, x : idx, resulttype#1615 : resulttype, `localidx*#971` : localidx*, `X*#7345` : valtype*, t : valtype, `X*#7432` : valtype*, `localtype*#12` : localtype*, i#7419 : nat, init#101 : init, valtype#367 : valtype, init : init}: - `%|-%:%`(C, `LOCAL.TEE`_instr{localidx#11}(x), `%->_%%`_instrtype{resulttype#1615, `localidx*#971`}(`%`_resulttype{`X*#7345`}([t]), [x], `%`_resulttype{`X*#7432`}([t]))) - -- if (C.`LOCALS`_context{`localtype*#12`}[x!`%`_idx{i#7419}.0] = `%%`_localtype{init#101, valtype#367}(init, t)) + 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, globalidx#9 : globalidx, x : idx, resulttype#1635 : resulttype, `localidx*#983` : localidx*, `X*#7472` : valtype*, `X*#7521` : valtype*, t : valtype, `globaltype*#7` : globaltype*, i#7443 : nat, `mut?#799` : mut?, valtype#379 : valtype, `mut?` : mut?}: - `%|-%:%`(C, `GLOBAL.GET`_instr{globalidx#9}(x), `%->_%%`_instrtype{resulttype#1635, `localidx*#983`}(`%`_resulttype{`X*#7472`}([]), [], `%`_resulttype{`X*#7521`}([t]))) - -- if (C.`GLOBALS`_context{`globaltype*#7`}[x!`%`_idx{i#7443}.0] = `%%`_globaltype{`mut?#799`, valtype#379}(mut?{mut <- `mut?`}, t)) + 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, globalidx#11 : globalidx, x : idx, resulttype#1655 : resulttype, `localidx*#995` : localidx*, `X*#7532` : valtype*, t : valtype, `X*#7600` : valtype*, `globaltype*#8` : globaltype*, i#7467 : nat, `mut?#811` : mut?, valtype#391 : valtype}: - `%|-%:%`(C, `GLOBAL.SET`_instr{globalidx#11}(x), `%->_%%`_instrtype{resulttype#1655, `localidx*#995`}(`%`_resulttype{`X*#7532`}([t]), [], `%`_resulttype{`X*#7600`}([]))) - -- if (C.`GLOBALS`_context{`globaltype*#8`}[x!`%`_idx{i#7467}.0] = `%%`_globaltype{`mut?#811`, valtype#391}(?(`MUT`_mut), t)) + 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, tableidx#30 : tableidx, x : idx, resulttype#1675 : resulttype, `localidx*#1007` : localidx*, `X*#7611` : valtype*, at : addrtype, `X*#7679` : valtype*, rt : reftype, `tabletype*#9` : tabletype*, i#7491 : nat, addrtype#465 : addrtype, limits#465 : limits, reftype#417 : reftype, lim : limits}: - `%|-%:%`(C, `TABLE.GET`_instr{tableidx#30}(x), `%->_%%`_instrtype{resulttype#1675, `localidx*#1007`}(`%`_resulttype{`X*#7611`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#7679`}([(rt : reftype <: valtype)]))) - -- if (C.`TABLES`_context{`tabletype*#9`}[x!`%`_idx{i#7491}.0] = `%%%`_tabletype{addrtype#465, limits#465, reftype#417}(at, lim, rt)) + 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, tableidx#32 : tableidx, x : idx, resulttype#1695 : resulttype, `localidx*#1019` : localidx*, `X*#7700` : valtype*, at : addrtype, rt : reftype, `X*#7749` : valtype*, `tabletype*#10` : tabletype*, i#7515 : nat, addrtype#477 : addrtype, limits#477 : limits, reftype#429 : reftype, lim : limits}: - `%|-%:%`(C, `TABLE.SET`_instr{tableidx#32}(x), `%->_%%`_instrtype{resulttype#1695, `localidx*#1019`}(`%`_resulttype{`X*#7700`}([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype{`X*#7749`}([]))) - -- if (C.`TABLES`_context{`tabletype*#10`}[x!`%`_idx{i#7515}.0] = `%%%`_tabletype{addrtype#477, limits#477, reftype#429}(at, lim, rt)) + 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, tableidx#34 : tableidx, x : idx, resulttype#1715 : resulttype, `localidx*#1031` : localidx*, `X*#7770` : valtype*, `X*#7819` : valtype*, at : addrtype, `tabletype*#11` : tabletype*, i#7539 : nat, addrtype#489 : addrtype, limits#489 : limits, reftype#441 : reftype, lim : limits, rt : reftype}: - `%|-%:%`(C, `TABLE.SIZE`_instr{tableidx#34}(x), `%->_%%`_instrtype{resulttype#1715, `localidx*#1031`}(`%`_resulttype{`X*#7770`}([]), [], `%`_resulttype{`X*#7819`}([(at : addrtype <: valtype)]))) - -- if (C.`TABLES`_context{`tabletype*#11`}[x!`%`_idx{i#7539}.0] = `%%%`_tabletype{addrtype#489, limits#489, reftype#441}(at, lim, rt)) + 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, tableidx#36 : tableidx, x : idx, resulttype#1735 : resulttype, `localidx*#1043` : localidx*, `X*#7840` : valtype*, rt : reftype, at : addrtype, `X*#7889` : valtype*, `tabletype*#12` : tabletype*, i#7563 : nat, addrtype#501 : addrtype, limits#501 : limits, reftype#453 : reftype, lim : limits}: - `%|-%:%`(C, `TABLE.GROW`_instr{tableidx#36}(x), `%->_%%`_instrtype{resulttype#1735, `localidx*#1043`}(`%`_resulttype{`X*#7840`}([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype{`X*#7889`}([`I32`_valtype]))) - -- if (C.`TABLES`_context{`tabletype*#12`}[x!`%`_idx{i#7563}.0] = `%%%`_tabletype{addrtype#501, limits#501, reftype#453}(at, lim, rt)) + 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, tableidx#38 : tableidx, x : idx, resulttype#1755 : resulttype, `localidx*#1055` : localidx*, `X*#7910` : valtype*, at : addrtype, rt : reftype, `X*#7959` : valtype*, `tabletype*#13` : tabletype*, i#7587 : nat, addrtype#513 : addrtype, limits#513 : limits, reftype#465 : reftype, lim : limits}: - `%|-%:%`(C, `TABLE.FILL`_instr{tableidx#38}(x), `%->_%%`_instrtype{resulttype#1755, `localidx*#1055`}(`%`_resulttype{`X*#7910`}([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype{`X*#7959`}([]))) - -- if (C.`TABLES`_context{`tabletype*#13`}[x!`%`_idx{i#7587}.0] = `%%%`_tabletype{addrtype#513, limits#513, reftype#465}(at, lim, rt)) + 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, tableidx#40 : tableidx, x_1 : idx, x_2 : idx, resulttype#1775 : resulttype, `localidx*#1067` : localidx*, `X*#7980` : valtype*, at_1 : addrtype, at_2 : addrtype, `X*#8029` : valtype*, `tabletype*#14` : tabletype*, i#7625 : nat, addrtype#525 : addrtype, limits#525 : limits, reftype#477 : reftype, lim_1 : limits, rt_1 : reftype, `tabletype*#15` : tabletype*, i#7635 : nat, addrtype#537 : addrtype, limits#537 : limits, reftype#489 : reftype, lim_2 : limits, rt_2 : reftype}: - `%|-%:%`(C, `TABLE.COPY`_instr{tableidx#40}(x_1, x_2), `%->_%%`_instrtype{resulttype#1775, `localidx*#1067`}(`%`_resulttype{`X*#7980`}([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype{`X*#8029`}([]))) - -- if (C.`TABLES`_context{`tabletype*#14`}[x_1!`%`_idx{i#7625}.0] = `%%%`_tabletype{addrtype#525, limits#525, reftype#477}(at_1, lim_1, rt_1)) - -- if (C.`TABLES`_context{`tabletype*#15`}[x_2!`%`_idx{i#7635}.0] = `%%%`_tabletype{addrtype#537, limits#537, reftype#489}(at_2, lim_2, rt_2)) + 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, tableidx#43 : tableidx, elemidx#13 : elemidx, x : idx, y : idx, resulttype#1795 : resulttype, `localidx*#1079` : localidx*, `X*#8050` : valtype*, at : addrtype, `X*#8099` : valtype*, `tabletype*#16` : tabletype*, i#7673 : nat, addrtype#549 : addrtype, limits#549 : limits, reftype#501 : reftype, lim : limits, rt_1 : reftype, `elemtype*#9` : elemtype*, i#7683 : nat, rt_2 : reftype}: - `%|-%:%`(C, `TABLE.INIT`_instr{tableidx#43, elemidx#13}(x, y), `%->_%%`_instrtype{resulttype#1795, `localidx*#1079`}(`%`_resulttype{`X*#8050`}([(at : addrtype <: valtype) `I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#8099`}([]))) - -- if (C.`TABLES`_context{`tabletype*#16`}[x!`%`_idx{i#7673}.0] = `%%%`_tabletype{addrtype#549, limits#549, reftype#501}(at, lim, rt_1)) - -- if (C.`ELEMS`_context{`elemtype*#9`}[y!`%`_idx{i#7683}.0] = rt_2) + 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, elemidx#15 : elemidx, x : idx, resulttype#1815 : resulttype, `localidx*#1091` : localidx*, `X*#8120` : valtype*, `X*#8169` : valtype*, `elemtype*#10` : elemtype*, i#7707 : nat, rt : reftype}: - `%|-%:%`(C, `ELEM.DROP`_instr{elemidx#15}(x), `%->_%%`_instrtype{resulttype#1815, `localidx*#1091`}(`%`_resulttype{`X*#8120`}([]), [], `%`_resulttype{`X*#8169`}([]))) - -- if (C.`ELEMS`_context{`elemtype*#10`}[x!`%`_idx{i#7707}.0] = rt) + 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, memidx#30 : memidx, x : idx, resulttype#1835 : resulttype, `localidx*#1103` : localidx*, `X*#8190` : valtype*, `X*#8239` : valtype*, at : addrtype, `memtype*#7` : memtype*, i#7775 : nat, addrtype#561 : addrtype, limits#561 : limits, lim : limits}: - `%|-%:%`(C, `MEMORY.SIZE`_instr{memidx#30}(x), `%->_%%`_instrtype{resulttype#1835, `localidx*#1103`}(`%`_resulttype{`X*#8190`}([]), [], `%`_resulttype{`X*#8239`}([(at : addrtype <: valtype)]))) - -- if (C.`MEMS`_context{`memtype*#7`}[x!`%`_idx{i#7775}.0] = `%%PAGE`_memtype{addrtype#561, limits#561}(at, lim)) + 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, memidx#32 : memidx, x : idx, resulttype#1855 : resulttype, `localidx*#1115` : localidx*, `X*#8250` : valtype*, at : addrtype, `X*#8318` : valtype*, `memtype*#8` : memtype*, i#7799 : nat, addrtype#573 : addrtype, limits#573 : limits, lim : limits}: - `%|-%:%`(C, `MEMORY.GROW`_instr{memidx#32}(x), `%->_%%`_instrtype{resulttype#1855, `localidx*#1115`}(`%`_resulttype{`X*#8250`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#8318`}([(at : addrtype <: valtype)]))) - -- if (C.`MEMS`_context{`memtype*#8`}[x!`%`_idx{i#7799}.0] = `%%PAGE`_memtype{addrtype#573, limits#573}(at, lim)) + 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, memidx#34 : memidx, x : idx, resulttype#1875 : resulttype, `localidx*#1127` : localidx*, `X*#8339` : valtype*, at : addrtype, `X*#8388` : valtype*, `memtype*#9` : memtype*, i#7823 : nat, addrtype#585 : addrtype, limits#585 : limits, lim : limits}: - `%|-%:%`(C, `MEMORY.FILL`_instr{memidx#34}(x), `%->_%%`_instrtype{resulttype#1875, `localidx*#1127`}(`%`_resulttype{`X*#8339`}([(at : addrtype <: valtype) `I32`_valtype (at : addrtype <: valtype)]), [], `%`_resulttype{`X*#8388`}([]))) - -- if (C.`MEMS`_context{`memtype*#9`}[x!`%`_idx{i#7823}.0] = `%%PAGE`_memtype{addrtype#585, limits#585}(at, lim)) + 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, memidx#36 : memidx, x_1 : idx, x_2 : idx, resulttype#1895 : resulttype, `localidx*#1139` : localidx*, `X*#8409` : valtype*, at_1 : addrtype, at_2 : addrtype, `X*#8458` : valtype*, `memtype*#10` : memtype*, i#7861 : nat, addrtype#597 : addrtype, limits#597 : limits, lim_1 : limits, `memtype*#11` : memtype*, i#7871 : nat, addrtype#609 : addrtype, limits#609 : limits, lim_2 : limits}: - `%|-%:%`(C, `MEMORY.COPY`_instr{memidx#36}(x_1, x_2), `%->_%%`_instrtype{resulttype#1895, `localidx*#1139`}(`%`_resulttype{`X*#8409`}([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype{`X*#8458`}([]))) - -- if (C.`MEMS`_context{`memtype*#10`}[x_1!`%`_idx{i#7861}.0] = `%%PAGE`_memtype{addrtype#597, limits#597}(at_1, lim_1)) - -- if (C.`MEMS`_context{`memtype*#11`}[x_2!`%`_idx{i#7871}.0] = `%%PAGE`_memtype{addrtype#609, limits#609}(at_2, lim_2)) + 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, memidx#39 : memidx, dataidx#13 : dataidx, x : idx, y : idx, resulttype#1915 : resulttype, `localidx*#1151` : localidx*, `X*#8479` : valtype*, at : addrtype, `X*#8528` : valtype*, `memtype*#12` : memtype*, i#7909 : nat, addrtype#621 : addrtype, limits#621 : limits, lim : limits, `datatype*#9` : datatype*, i#7919 : nat}: - `%|-%:%`(C, `MEMORY.INIT`_instr{memidx#39, dataidx#13}(x, y), `%->_%%`_instrtype{resulttype#1915, `localidx*#1151`}(`%`_resulttype{`X*#8479`}([(at : addrtype <: valtype) `I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#8528`}([]))) - -- if (C.`MEMS`_context{`memtype*#12`}[x!`%`_idx{i#7909}.0] = `%%PAGE`_memtype{addrtype#621, limits#621}(at, lim)) - -- if (C.`DATAS`_context{`datatype*#9`}[y!`%`_idx{i#7919}.0] = `OK`_datatype) + 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, dataidx#15 : dataidx, x : idx, resulttype#1935 : resulttype, `localidx*#1163` : localidx*, `X*#8549` : valtype*, `X*#8598` : valtype*, `datatype*#10` : datatype*, i#7943 : nat}: - `%|-%:%`(C, `DATA.DROP`_instr{dataidx#15}(x), `%->_%%`_instrtype{resulttype#1935, `localidx*#1163`}(`%`_resulttype{`X*#8549`}([]), [], `%`_resulttype{`X*#8598`}([]))) - -- if (C.`DATAS`_context{`datatype*#10`}[x!`%`_idx{i#7943}.0] = `OK`_datatype) + 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, `numtype?#3` : numtype?, memidx#41 : memidx, memarg#13 : memarg, nt : numtype, x : idx, memarg : memarg, resulttype#1955 : resulttype, `localidx*#1175` : localidx*, `X*#8609` : valtype*, at : addrtype, `X*#8677` : valtype*, `memtype*#13` : memtype*, i#7967 : nat, addrtype#633 : addrtype, limits#633 : limits, lim : limits}: - `%|-%:%`(C, `LOAD`_instr{`numtype?#3`, memidx#41, memarg#13}(nt, ?(), x, memarg), `%->_%%`_instrtype{resulttype#1955, `localidx*#1175`}(`%`_resulttype{`X*#8609`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#8677`}([(nt : numtype <: valtype)]))) - -- if (C.`MEMS`_context{`memtype*#13`}[x!`%`_idx{i#7967}.0] = `%%PAGE`_memtype{addrtype#633, limits#633}(at, lim)) + 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, `numtype?#4` : numtype?, memidx#43 : memidx, memarg#15 : memarg, Inn : Inn, sz#5 : sz, sx#7 : sx, i#7993 : nat, i#8000 : nat, M : M, sx : sx, x : idx, memarg : memarg, resulttype#1975 : resulttype, `localidx*#1187` : localidx*, `X*#8688` : valtype*, at : addrtype, `X*#8756` : valtype*, `memtype*#14` : memtype*, i#8024 : nat, addrtype#645 : addrtype, limits#645 : limits, lim : limits}: - `%|-%:%`(C, `LOAD`_instr{`numtype?#4`, memidx#43, memarg#15}((Inn : Inn <: numtype), ?(`%_%`_loadop_{sz#5, sx#7, i#7993}(`%`_sz{i#8000}(M), sx)), x, memarg), `%->_%%`_instrtype{resulttype#1975, `localidx*#1187`}(`%`_resulttype{`X*#8688`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#8756`}([(Inn : Inn <: valtype)]))) - -- if (C.`MEMS`_context{`memtype*#14`}[x!`%`_idx{i#8024}.0] = `%%PAGE`_memtype{addrtype#645, limits#645}(at, lim)) + rule `load-pack`{C : context, Inn : Inn, M : M, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, `LOAD`_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(M), sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : Inn <: 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, `numtype?#5` : numtype?, memidx#45 : memidx, memarg#17 : memarg, nt : numtype, x : idx, memarg : memarg, resulttype#1995 : resulttype, `localidx*#1199` : localidx*, `X*#8777` : valtype*, at : addrtype, `X*#8826` : valtype*, `memtype*#15` : memtype*, i#8048 : nat, addrtype#657 : addrtype, limits#657 : limits, lim : limits}: - `%|-%:%`(C, `STORE`_instr{`numtype?#5`, memidx#45, memarg#17}(nt, ?(), x, memarg), `%->_%%`_instrtype{resulttype#1995, `localidx*#1199`}(`%`_resulttype{`X*#8777`}([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype{`X*#8826`}([]))) - -- if (C.`MEMS`_context{`memtype*#15`}[x!`%`_idx{i#8048}.0] = `%%PAGE`_memtype{addrtype#657, limits#657}(at, lim)) + 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, `numtype?#6` : numtype?, memidx#47 : memidx, memarg#19 : memarg, Inn : Inn, sz#7 : sz, i#8091 : nat, i#8092 : nat, M : M, x : idx, memarg : memarg, resulttype#2015 : resulttype, `localidx*#1211` : localidx*, `X*#8847` : valtype*, at : addrtype, `X*#8896` : valtype*, `memtype*#16` : memtype*, i#8116 : nat, addrtype#669 : addrtype, limits#669 : limits, lim : limits}: - `%|-%:%`(C, `STORE`_instr{`numtype?#6`, memidx#47, memarg#19}((Inn : Inn <: numtype), ?(`%`_storeop_{sz#7, i#8091}(`%`_sz{i#8092}(M))), x, memarg), `%->_%%`_instrtype{resulttype#2015, `localidx*#1211`}(`%`_resulttype{`X*#8847`}([(at : addrtype <: valtype) (Inn : Inn <: valtype)]), [], `%`_resulttype{`X*#8896`}([]))) - -- if (C.`MEMS`_context{`memtype*#16`}[x!`%`_idx{i#8116}.0] = `%%PAGE`_memtype{addrtype#669, limits#669}(at, lim)) + rule `store-pack`{C : context, Inn : Inn, M : M, x : idx, memarg : memarg, at : addrtype, lim : limits}: + `%|-%:%`(C, `STORE`_instr((Inn : Inn <: numtype), ?(`%`_storeop_(`%`_sz(M))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : Inn <: 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, `vectype?#2` : vectype?, memidx#49 : memidx, memarg#21 : memarg, x : idx, memarg : memarg, resulttype#2035 : resulttype, `localidx*#1223` : localidx*, `X*#8907` : valtype*, at : addrtype, `X*#8975` : valtype*, `memtype*#17` : memtype*, i#8140 : nat, addrtype#681 : addrtype, limits#681 : limits, lim : limits}: - `%|-%:%`(C, `VLOAD`_instr{`vectype?#2`, memidx#49, memarg#21}(`V128`_vectype, ?(), x, memarg), `%->_%%`_instrtype{resulttype#2035, `localidx*#1223`}(`%`_resulttype{`X*#8907`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#8975`}([`V128`_valtype]))) - -- if (C.`MEMS`_context{`memtype*#17`}[x!`%`_idx{i#8140}.0] = `%%PAGE`_memtype{addrtype#681, limits#681}(at, lim)) + 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, `vectype?#3` : vectype?, memidx#51 : memidx, memarg#23 : memarg, sz#54 : sz, M#16 : M, sx#24 : sx, i#8166 : nat, i#8173 : nat, M : M, N : N, sx : sx, x : idx, memarg : memarg, resulttype#2055 : resulttype, `localidx*#1235` : localidx*, `X*#8986` : valtype*, at : addrtype, `X*#9054` : valtype*, `memtype*#18` : memtype*, i#8197 : nat, addrtype#693 : addrtype, limits#693 : limits, lim : limits}: - `%|-%:%`(C, `VLOAD`_instr{`vectype?#3`, memidx#51, memarg#23}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#54, M#16, sx#24, i#8166}(`%`_sz{i#8173}(M), N, sx)), x, memarg), `%->_%%`_instrtype{resulttype#2055, `localidx*#1235`}(`%`_resulttype{`X*#8986`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#9054`}([`V128`_valtype]))) - -- if (C.`MEMS`_context{`memtype*#18`}[x!`%`_idx{i#8197}.0] = `%%PAGE`_memtype{addrtype#693, limits#693}(at, lim)) + 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, `vectype?#4` : vectype?, memidx#53 : memidx, memarg#25 : memarg, sz#101 : sz, i#8229 : nat, N : N, x : idx, memarg : memarg, resulttype#2075 : resulttype, `localidx*#1247` : localidx*, `X*#9065` : valtype*, at : addrtype, `X*#9133` : valtype*, `memtype*#19` : memtype*, i#8253 : nat, addrtype#705 : addrtype, limits#705 : limits, lim : limits}: - `%|-%:%`(C, `VLOAD`_instr{`vectype?#4`, memidx#53, memarg#25}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#101}(`%`_sz{i#8229}(N))), x, memarg), `%->_%%`_instrtype{resulttype#2075, `localidx*#1247`}(`%`_resulttype{`X*#9065`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#9133`}([`V128`_valtype]))) - -- if (C.`MEMS`_context{`memtype*#19`}[x!`%`_idx{i#8253}.0] = `%%PAGE`_memtype{addrtype#705, limits#705}(at, lim)) + 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, `vectype?#5` : vectype?, memidx#55 : memidx, memarg#27 : memarg, sz#148 : sz, i#8279 : nat, i#8286 : nat, N : N, x : idx, memarg : memarg, resulttype#2095 : resulttype, `localidx*#1259` : localidx*, `X*#9144` : valtype*, at : addrtype, `X*#9212` : valtype*, `memtype*#20` : memtype*, i#8310 : nat, addrtype#717 : addrtype, limits#717 : limits, lim : limits}: - `%|-%:%`(C, `VLOAD`_instr{`vectype?#5`, memidx#55, memarg#27}(`V128`_vectype, ?(`ZERO`_vloadop_{sz#148, i#8279}(`%`_sz{i#8286}(N))), x, memarg), `%->_%%`_instrtype{resulttype#2095, `localidx*#1259`}(`%`_resulttype{`X*#9144`}([(at : addrtype <: valtype)]), [], `%`_resulttype{`X*#9212`}([`V128`_valtype]))) - -- if (C.`MEMS`_context{`memtype*#20`}[x!`%`_idx{i#8310}.0] = `%%PAGE`_memtype{addrtype#717, limits#717}(at, lim)) + 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, vectype#24 : vectype, sz#150 : sz, memidx#57 : memidx, memarg#29 : memarg, laneidx#9 : laneidx, i#8318 : nat, N : N, x : idx, memarg : memarg, i : laneidx, resulttype#2115 : resulttype, `localidx*#1271` : localidx*, `X*#9233` : valtype*, at : addrtype, `X*#9282` : valtype*, `memtype*#21` : memtype*, i#8356 : nat, addrtype#729 : addrtype, limits#729 : limits, lim : limits, i#8370 : nat}: - `%|-%:%`(C, `VLOAD_LANE`_instr{vectype#24, sz#150, memidx#57, memarg#29, laneidx#9}(`V128`_vectype, `%`_sz{i#8318}(N), x, memarg, i), `%->_%%`_instrtype{resulttype#2115, `localidx*#1271`}(`%`_resulttype{`X*#9233`}([(at : addrtype <: valtype) `V128`_valtype]), [], `%`_resulttype{`X*#9282`}([`V128`_valtype]))) - -- if (C.`MEMS`_context{`memtype*#21`}[x!`%`_idx{i#8356}.0] = `%%PAGE`_memtype{addrtype#729, limits#729}(at, lim)) + 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{i#8370}.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) + -- 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, vectype#26 : vectype, memidx#59 : memidx, memarg#31 : memarg, x : idx, memarg : memarg, resulttype#2135 : resulttype, `localidx*#1283` : localidx*, `X*#9303` : valtype*, at : addrtype, `X*#9352` : valtype*, `memtype*#22` : memtype*, i#8394 : nat, addrtype#741 : addrtype, limits#741 : limits, lim : limits}: - `%|-%:%`(C, `VSTORE`_instr{vectype#26, memidx#59, memarg#31}(`V128`_vectype, x, memarg), `%->_%%`_instrtype{resulttype#2135, `localidx*#1283`}(`%`_resulttype{`X*#9303`}([(at : addrtype <: valtype) `V128`_valtype]), [], `%`_resulttype{`X*#9352`}([]))) - -- if (C.`MEMS`_context{`memtype*#22`}[x!`%`_idx{i#8394}.0] = `%%PAGE`_memtype{addrtype#741, limits#741}(at, lim)) + 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, vectype#28 : vectype, sz#152 : sz, memidx#61 : memidx, memarg#33 : memarg, laneidx#11 : laneidx, i#8402 : nat, N : N, x : idx, memarg : memarg, i : laneidx, resulttype#2155 : resulttype, `localidx*#1295` : localidx*, `X*#9373` : valtype*, at : addrtype, `X*#9422` : valtype*, `memtype*#23` : memtype*, i#8440 : nat, addrtype#753 : addrtype, limits#753 : limits, lim : limits, i#8454 : nat}: - `%|-%:%`(C, `VSTORE_LANE`_instr{vectype#28, sz#152, memidx#61, memarg#33, laneidx#11}(`V128`_vectype, `%`_sz{i#8402}(N), x, memarg, i), `%->_%%`_instrtype{resulttype#2155, `localidx*#1295`}(`%`_resulttype{`X*#9373`}([(at : addrtype <: valtype) `V128`_valtype]), [], `%`_resulttype{`X*#9422`}([]))) - -- if (C.`MEMS`_context{`memtype*#23`}[x!`%`_idx{i#8440}.0] = `%%PAGE`_memtype{addrtype#753, limits#753}(at, lim)) + 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{i#8454}.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) + -- 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, numtype#19 : numtype, nt : numtype, c_nt : num_(nt), resulttype#2175 : resulttype, `localidx*#1307` : localidx*, `X*#9443` : valtype*, `X*#9492` : valtype*}: - `%|-%:%`(C, `CONST`_instr{numtype#19}(nt, c_nt), `%->_%%`_instrtype{resulttype#2175, `localidx*#1307`}(`%`_resulttype{`X*#9443`}([]), [], `%`_resulttype{`X*#9492`}([(nt : numtype <: valtype)]))) + 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, numtype#21 : numtype, nt : numtype, unop_nt : unop_(nt), resulttype#2195 : resulttype, `localidx*#1319` : localidx*, `X*#9503` : valtype*, `X*#9571` : valtype*}: - `%|-%:%`(C, `UNOP`_instr{numtype#21}(nt, unop_nt), `%->_%%`_instrtype{resulttype#2195, `localidx*#1319`}(`%`_resulttype{`X*#9503`}([(nt : numtype <: valtype)]), [], `%`_resulttype{`X*#9571`}([(nt : numtype <: valtype)]))) + 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, numtype#23 : numtype, nt : numtype, binop_nt : binop_(nt), resulttype#2215 : resulttype, `localidx*#1331` : localidx*, `X*#9592` : valtype*, `X*#9641` : valtype*}: - `%|-%:%`(C, `BINOP`_instr{numtype#23}(nt, binop_nt), `%->_%%`_instrtype{resulttype#2215, `localidx*#1331`}(`%`_resulttype{`X*#9592`}([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype{`X*#9641`}([(nt : numtype <: valtype)]))) + 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, numtype#25 : numtype, nt : numtype, testop_nt : testop_(nt), resulttype#2235 : resulttype, `localidx*#1343` : localidx*, `X*#9652` : valtype*, `X*#9720` : valtype*}: - `%|-%:%`(C, `TESTOP`_instr{numtype#25}(nt, testop_nt), `%->_%%`_instrtype{resulttype#2235, `localidx*#1343`}(`%`_resulttype{`X*#9652`}([(nt : numtype <: valtype)]), [], `%`_resulttype{`X*#9720`}([`I32`_valtype]))) + 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, numtype#27 : numtype, nt : numtype, relop_nt : relop_(nt), resulttype#2255 : resulttype, `localidx*#1355` : localidx*, `X*#9741` : valtype*, `X*#9790` : valtype*}: - `%|-%:%`(C, `RELOP`_instr{numtype#27}(nt, relop_nt), `%->_%%`_instrtype{resulttype#2255, `localidx*#1355`}(`%`_resulttype{`X*#9741`}([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype{`X*#9790`}([`I32`_valtype]))) + 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, numtype_1#3 : numtype, numtype_2#3 : numtype, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__(nt_2, nt_1), resulttype#2275 : resulttype, `localidx*#1367` : localidx*, `X*#9801` : valtype*, `X*#9869` : valtype*}: - `%|-%:%`(C, `CVTOP`_instr{numtype_1#3, numtype_2#3}(nt_1, nt_2, cvtop), `%->_%%`_instrtype{resulttype#2275, `localidx*#1367`}(`%`_resulttype{`X*#9801`}([(nt_2 : numtype <: valtype)]), [], `%`_resulttype{`X*#9869`}([(nt_1 : numtype <: valtype)]))) + 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, vectype#30 : vectype, c : vec_(`V128`_Vnn), resulttype#2295 : resulttype, `localidx*#1379` : localidx*, `X*#9890` : valtype*, `X*#9939` : valtype*}: - `%|-%:%`(C, `VCONST`_instr{vectype#30}(`V128`_vectype, c), `%->_%%`_instrtype{resulttype#2295, `localidx*#1379`}(`%`_resulttype{`X*#9890`}([]), [], `%`_resulttype{`X*#9939`}([`V128`_valtype]))) + 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, vectype#32 : vectype, vvunop#3 : vvunop, vvunop : vvunop, resulttype#2315 : resulttype, `localidx*#1391` : localidx*, `X*#9958` : valtype*, `X*#10007` : valtype*}: - `%|-%:%`(C, `VVUNOP`_instr{vectype#32, vvunop#3}(`V128`_vectype, vvunop), `%->_%%`_instrtype{resulttype#2315, `localidx*#1391`}(`%`_resulttype{`X*#9958`}([`V128`_valtype]), [], `%`_resulttype{`X*#10007`}([`V128`_valtype]))) + 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, vectype#34 : vectype, vvbinop#3 : vvbinop, vvbinop : vvbinop, resulttype#2335 : resulttype, `localidx*#1403` : localidx*, `X*#10028` : valtype*, `X*#10077` : valtype*}: - `%|-%:%`(C, `VVBINOP`_instr{vectype#34, vvbinop#3}(`V128`_vectype, vvbinop), `%->_%%`_instrtype{resulttype#2335, `localidx*#1403`}(`%`_resulttype{`X*#10028`}([`V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#10077`}([`V128`_valtype]))) + 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, vectype#36 : vectype, vvternop#3 : vvternop, vvternop : vvternop, resulttype#2355 : resulttype, `localidx*#1415` : localidx*, `X*#10098` : valtype*, `X*#10147` : valtype*}: - `%|-%:%`(C, `VVTERNOP`_instr{vectype#36, vvternop#3}(`V128`_vectype, vvternop), `%->_%%`_instrtype{resulttype#2355, `localidx*#1415`}(`%`_resulttype{`X*#10098`}([`V128`_valtype `V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#10147`}([`V128`_valtype]))) + 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, vectype#38 : vectype, vvtestop#3 : vvtestop, vvtestop : vvtestop, resulttype#2375 : resulttype, `localidx*#1427` : localidx*, `X*#10166` : valtype*, `X*#10215` : valtype*}: - `%|-%:%`(C, `VVTESTOP`_instr{vectype#38, vvtestop#3}(`V128`_vectype, vvtestop), `%->_%%`_instrtype{resulttype#2375, `localidx*#1427`}(`%`_resulttype{`X*#10166`}([`V128`_valtype]), [], `%`_resulttype{`X*#10215`}([`I32`_valtype]))) + 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, shape#269 : shape, sh : shape, vunop : vunop_(sh), resulttype#2395 : resulttype, `localidx*#1439` : localidx*, `X*#10234` : valtype*, `X*#10283` : valtype*}: - `%|-%:%`(C, `VUNOP`_instr{shape#269}(sh, vunop), `%->_%%`_instrtype{resulttype#2395, `localidx*#1439`}(`%`_resulttype{`X*#10234`}([`V128`_valtype]), [], `%`_resulttype{`X*#10283`}([`V128`_valtype]))) + 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, shape#271 : shape, sh : shape, vbinop : vbinop_(sh), resulttype#2415 : resulttype, `localidx*#1451` : localidx*, `X*#10304` : valtype*, `X*#10353` : valtype*}: - `%|-%:%`(C, `VBINOP`_instr{shape#271}(sh, vbinop), `%->_%%`_instrtype{resulttype#2415, `localidx*#1451`}(`%`_resulttype{`X*#10304`}([`V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#10353`}([`V128`_valtype]))) + 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, shape#273 : shape, sh : shape, vternop : vternop_(sh), resulttype#2435 : resulttype, `localidx*#1463` : localidx*, `X*#10374` : valtype*, `X*#10423` : valtype*}: - `%|-%:%`(C, `VTERNOP`_instr{shape#273}(sh, vternop), `%->_%%`_instrtype{resulttype#2435, `localidx*#1463`}(`%`_resulttype{`X*#10374`}([`V128`_valtype `V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#10423`}([`V128`_valtype]))) + 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, shape#275 : shape, sh : shape, vtestop : vtestop_(sh), resulttype#2455 : resulttype, `localidx*#1475` : localidx*, `X*#10442` : valtype*, `X*#10491` : valtype*}: - `%|-%:%`(C, `VTESTOP`_instr{shape#275}(sh, vtestop), `%->_%%`_instrtype{resulttype#2455, `localidx*#1475`}(`%`_resulttype{`X*#10442`}([`V128`_valtype]), [], `%`_resulttype{`X*#10491`}([`I32`_valtype]))) + 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, shape#277 : shape, sh : shape, vrelop : vrelop_(sh), resulttype#2475 : resulttype, `localidx*#1487` : localidx*, `X*#10512` : valtype*, `X*#10561` : valtype*}: - `%|-%:%`(C, `VRELOP`_instr{shape#277}(sh, vrelop), `%->_%%`_instrtype{resulttype#2475, `localidx*#1487`}(`%`_resulttype{`X*#10512`}([`V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#10561`}([`V128`_valtype]))) + 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, ishape#5 : ishape, sh : ishape, vshiftop : vshiftop_(sh), resulttype#2495 : resulttype, `localidx*#1499` : localidx*, `X*#10582` : valtype*, `X*#10631` : valtype*}: - `%|-%:%`(C, `VSHIFTOP`_instr{ishape#5}(sh, vshiftop), `%->_%%`_instrtype{resulttype#2495, `localidx*#1499`}(`%`_resulttype{`X*#10582`}([`V128`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#10631`}([`V128`_valtype]))) + 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, ishape#7 : ishape, sh : ishape, resulttype#2515 : resulttype, `localidx*#1511` : localidx*, `X*#10650` : valtype*, `X*#10699` : valtype*}: - `%|-%:%`(C, `VBITMASK`_instr{ishape#7}(sh), `%->_%%`_instrtype{resulttype#2515, `localidx*#1511`}(`%`_resulttype{`X*#10650`}([`V128`_valtype]), [], `%`_resulttype{`X*#10699`}([`I32`_valtype]))) + 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, bshape#5 : bshape, sh : bshape, vswizzlop : vswizzlop_(sh), resulttype#2535 : resulttype, `localidx*#1523` : localidx*, `X*#10720` : valtype*, `X*#10769` : valtype*}: - `%|-%:%`(C, `VSWIZZLOP`_instr{bshape#5}(sh, vswizzlop), `%->_%%`_instrtype{resulttype#2535, `localidx*#1523`}(`%`_resulttype{`X*#10720`}([`V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#10769`}([`V128`_valtype]))) + 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, bshape#7 : bshape, `laneidx*#3` : laneidx*, i#8480 : nat, shape#297 : shape, sh : bshape, `i*` : laneidx*, resulttype#2555 : resulttype, `localidx*#1535` : localidx*, `X*#10790` : valtype*, `X*#10839` : valtype*, `i#8509*` : nat*, `i#8523*` : nat*, `shape#304*` : shape*}: - `%|-%:%`(C, `VSHUFFLE`_instr{bshape#7, `laneidx*#3`, i#8480, shape#297}(sh, i*{i <- `i*`}), `%->_%%`_instrtype{resulttype#2555, `localidx*#1535`}(`%`_resulttype{`X*#10790`}([`V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#10839`}([`V128`_valtype]))) - -- (if (i!`%`_laneidx{i#8523}.0 < (2 * $dim(sh!`%`_bshape{shape#304}.0)!`%`_dim{i#8509}.0)))*{i <- `i*`, i#8509 <- `i#8509*`, i#8523 <- `i#8523*`, shape#304 <- `shape#304*`} + 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, shape#306 : shape, sh : shape, resulttype#2575 : resulttype, `localidx*#1547` : localidx*, `X*#10850` : valtype*, `X*#10916` : valtype*}: - `%|-%:%`(C, `VSPLAT`_instr{shape#306}(sh), `%->_%%`_instrtype{resulttype#2575, `localidx*#1547`}(`%`_resulttype{`X*#10850`}([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype{`X*#10916`}([`V128`_valtype]))) + 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, shape#308 : shape, `sx?#11` : sx?, laneidx#13 : laneidx, sh : shape, `sx?` : sx?, i : laneidx, resulttype#2595 : resulttype, `localidx*#1559` : localidx*, `X*#10935` : valtype*, `X*#10984` : valtype*, i#8600 : nat, i#8602 : nat}: - `%|-%:%`(C, `VEXTRACT_LANE`_instr{shape#308, `sx?#11`, laneidx#13}(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype{resulttype#2595, `localidx*#1559`}(`%`_resulttype{`X*#10935`}([`V128`_valtype]), [], `%`_resulttype{`X*#10984`}([($unpackshape(sh) : numtype <: valtype)]))) - -- if (i!`%`_laneidx{i#8600}.0 < $dim(sh)!`%`_dim{i#8602}.0) + 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, shape#310 : shape, laneidx#15 : laneidx, sh : shape, i : laneidx, resulttype#2615 : resulttype, `localidx*#1571` : localidx*, `X*#11005` : valtype*, `X*#11054` : valtype*, i#8636 : nat, i#8638 : nat}: - `%|-%:%`(C, `VREPLACE_LANE`_instr{shape#310, laneidx#15}(sh, i), `%->_%%`_instrtype{resulttype#2615, `localidx*#1571`}(`%`_resulttype{`X*#11005`}([`V128`_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype{`X*#11054`}([`V128`_valtype]))) - -- if (i!`%`_laneidx{i#8636}.0 < $dim(sh)!`%`_dim{i#8638}.0) + 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, ishape_1#9 : ishape, ishape_2#9 : ishape, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__(sh_2, sh_1), resulttype#2635 : resulttype, `localidx*#1583` : localidx*, `X*#11073` : valtype*, `X*#11122` : valtype*}: - `%|-%:%`(C, `VEXTUNOP`_instr{ishape_1#9, ishape_2#9}(sh_1, sh_2, vextunop), `%->_%%`_instrtype{resulttype#2635, `localidx*#1583`}(`%`_resulttype{`X*#11073`}([`V128`_valtype]), [], `%`_resulttype{`X*#11122`}([`V128`_valtype]))) + 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, ishape_1#11 : ishape, ishape_2#11 : ishape, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__(sh_2, sh_1), resulttype#2655 : resulttype, `localidx*#1595` : localidx*, `X*#11143` : valtype*, `X*#11192` : valtype*}: - `%|-%:%`(C, `VEXTBINOP`_instr{ishape_1#11, ishape_2#11}(sh_1, sh_2, vextbinop), `%->_%%`_instrtype{resulttype#2655, `localidx*#1595`}(`%`_resulttype{`X*#11143`}([`V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#11192`}([`V128`_valtype]))) + 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, ishape_1#13 : ishape, ishape_2#13 : ishape, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__(sh_2, sh_1), resulttype#2675 : resulttype, `localidx*#1607` : localidx*, `X*#11213` : valtype*, `X*#11262` : valtype*}: - `%|-%:%`(C, `VEXTTERNOP`_instr{ishape_1#13, ishape_2#13}(sh_1, sh_2, vextternop), `%->_%%`_instrtype{resulttype#2675, `localidx*#1607`}(`%`_resulttype{`X*#11213`}([`V128`_valtype `V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#11262`}([`V128`_valtype]))) + 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, ishape_1#15 : ishape, ishape_2#15 : ishape, sx#56 : sx, shape#348 : shape, Jnn#95 : Jnn, shape#349 : shape, Jnn#96 : Jnn, shape#350 : shape, Jnn#97 : Jnn, sh_1 : ishape, sh_2 : ishape, sx : sx, resulttype#2695 : resulttype, `localidx*#1619` : localidx*, `X*#11283` : valtype*, `X*#11332` : valtype*}: - `%|-%:%`(C, `VNARROW`_instr{ishape_1#15, ishape_2#15, sx#56, shape#348, Jnn#95, shape#349, Jnn#96, shape#350, Jnn#97}(sh_1, sh_2, sx), `%->_%%`_instrtype{resulttype#2695, `localidx*#1619`}(`%`_resulttype{`X*#11283`}([`V128`_valtype `V128`_valtype]), [], `%`_resulttype{`X*#11332`}([`V128`_valtype]))) + 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, shape_1#3 : shape, shape_2#3 : shape, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__(sh_2, sh_1), resulttype#2715 : resulttype, `localidx*#1631` : localidx*, `X*#11351` : valtype*, `X*#11400` : valtype*}: - `%|-%:%`(C, `VCVTOP`_instr{shape_1#3, shape_2#3}(sh_1, sh_2, vcvtop), `%->_%%`_instrtype{resulttype#2715, `localidx*#1631`}(`%`_resulttype{`X*#11351`}([`V128`_valtype]), [], `%`_resulttype{`X*#11400`}([`V128`_valtype]))) + 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, resulttype#2735 : resulttype, `localidx*#1643` : localidx*, `X*#11421` : valtype*, `X*#11470` : valtype*}: - `%|-%:%`(C, [], `%->_%%`_instrtype{resulttype#2735, `localidx*#1643`}(`%`_resulttype{`X*#11421`}([]), [], `%`_resulttype{`X*#11470`}([]))) + 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*, resulttype#2755 : resulttype, `localidx*#1655` : localidx*, `X*#11481` : valtype*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `X*#11542` : valtype*, `t_3*` : valtype*, resulttype#2775 : resulttype, `localidx*#1667` : localidx*, `X*#11555` : valtype*, `X*#11607` : valtype*, `t_2*` : valtype*, `i#8868*` : nat*, `init*` : init*, `init#113*` : init*, `localtype*#13*` : localtype**, `t*` : valtype*, `valtype#403*` : valtype*, `init#131*` : init*, `valtype#421*` : valtype*, resulttype#2795 : resulttype, `localidx*#1679` : localidx*, `X*#11620` : valtype*, `X*#11672` : valtype*}: - `%|-%:%`(C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype{resulttype#2755, `localidx*#1655`}(`%`_resulttype{`X*#11481`}(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype{`X*#11542`}(t_3*{t_3 <- `t_3*`}))) - -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype{resulttype#2775, `localidx*#1667`}(`%`_resulttype{`X*#11555`}(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype{`X*#11607`}(t_2*{t_2 <- `t_2*`}))) - -- (if (C.`LOCALS`_context{`localtype*#13`}[x_1!`%`_idx{i#8868}.0] = `%%`_localtype{init#113, valtype#403}(init, t)))*{i#8868 <- `i#8868*`, init <- `init*`, init#113 <- `init#113*`, `localtype*#13` <- `localtype*#13*`, t <- `t*`, valtype#403 <- `valtype#403*`, x_1 <- `x_1*`} - -- Instrs_ok: `%|-%:%`($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype{init#131, valtype#421}(`SET`_init, t)*{init#131 <- `init#131*`, t <- `t*`, valtype#421 <- `valtype#421*`}), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype{resulttype#2795, `localidx*#1679`}(`%`_resulttype{`X*#11620`}(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype{`X*#11672`}(t_3*{t_3 <- `t_3*`}))) + 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}: @@ -115514,18 +90765,18 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) -- Instrtype_ok: `%|-%:OK`(C, it') ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:630.1-633.33 - rule frame{C : context, `instr*` : instr*, resulttype#2865 : resulttype, `localidx*#1721` : localidx*, `X*#11695` : valtype*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `X*#11755` : valtype*, `t_2*` : valtype*, resulttype#2885 : resulttype, `localidx*#1733` : localidx*, `X*#11766` : valtype*, `X*#11818` : valtype*, `X*#11831` : valtype*}: - `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype{resulttype#2865, `localidx*#1721`}(`%`_resulttype{`X*#11695`}(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype{`X*#11755`}(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) - -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype{resulttype#2885, `localidx*#1733`}(`%`_resulttype{`X*#11766`}(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype{`X*#11818`}(t_2*{t_2 <- `t_2*`}))) - -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype{`X*#11831`}(t*{t <- `t*`})) + 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*, `X*#11844` : valtype*, `t*` : valtype*, resulttype#2905 : resulttype, `localidx*#1745` : localidx*, `X*#11867` : valtype*, `X*#11911` : valtype*}: - `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype{`X*#11844`}(t*{t <- `t*`})) - -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype{resulttype#2905, `localidx*#1745`}(`%`_resulttype{`X*#11867`}([]), [], `%`_resulttype{`X*#11911`}(t*{t <- `t*`}))) + 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) @@ -115537,44 +90788,44 @@ relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) ;; ../../../../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, numtype#29 : numtype, nt : numtype, c_nt : num_(nt)}: - `%|-%CONST`(C, `CONST`_instr{numtype#29}(nt, c_nt)) + 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, vectype#40 : vectype, vt : vectype, c_vt : vec_(vt)}: - `%|-%CONST`(C, `VCONST`_instr{vectype#40}(vt, c_vt)) + 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, heaptype#945 : heaptype, ht : heaptype}: - `%|-%CONST`(C, `REF.NULL`_instr{heaptype#945}(ht)) + 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, funcidx#183 : funcidx, x : idx}: - `%|-%CONST`(C, `REF.FUNC`_instr{funcidx#183}(x)) + 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, typeidx#469 : typeidx, x : idx}: - `%|-%CONST`(C, `STRUCT.NEW`_instr{typeidx#469}(x)) + 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, typeidx#471 : typeidx, x : idx}: - `%|-%CONST`(C, `STRUCT.NEW_DEFAULT`_instr{typeidx#471}(x)) + 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, typeidx#473 : typeidx, x : idx}: - `%|-%CONST`(C, `ARRAY.NEW`_instr{typeidx#473}(x)) + 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, typeidx#475 : typeidx, x : idx}: - `%|-%CONST`(C, `ARRAY.NEW_DEFAULT`_instr{typeidx#475}(x)) + 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, typeidx#477 : typeidx, u32#15 : u32, x : idx, i#9243 : nat, n : n}: - `%|-%CONST`(C, `ARRAY.NEW_FIXED`_instr{typeidx#477, u32#15}(x, `%`_u32{i#9243}(n))) + 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}: @@ -115585,13 +90836,13 @@ relation Instr_const: `%|-%CONST`(context, instr) `%|-%CONST`(C, `EXTERN.CONVERT_ANY`_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule global.get{C : context, globalidx#13 : globalidx, x : idx, `globaltype*#10` : globaltype*, i#9277 : nat, `mut?#817` : mut?, valtype#427 : valtype, t : valtype}: - `%|-%CONST`(C, `GLOBAL.GET`_instr{globalidx#13}(x)) - -- if (C.`GLOBALS`_context{`globaltype*#10`}[x!`%`_idx{i#9277}.0] = `%%`_globaltype{`mut?#817`, valtype#427}(?(), t)) + 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, numtype#31 : numtype, Inn : Inn, binop : binop_((Inn : Inn <: numtype))}: - `%|-%CONST`(C, `BINOP`_instr{numtype#31}((Inn : Inn <: numtype), binop)) + rule binop{C : context, Inn : Inn, binop : binop_((Inn : Inn <: numtype))}: + `%|-%CONST`(C, `BINOP`_instr((Inn : Inn <: numtype), binop)) -- if (Inn <- [`I32`_Inn `I64`_Inn]) -- if (binop <- [`ADD`_binop_ `SUB`_binop_ `MUL`_binop_]) @@ -115605,72 +90856,72 @@ relation Expr_const: `%|-%CONST`(context, expr) ;; ../../../../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, `X*#11922` : valtype*}: + rule _{C : context, expr : expr, t : valtype}: `%|-%:%CONST`(C, expr, t) - -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype{`X*#11922`}([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#865 : rectype, rectype : rectype, `dt*` : deftype*, x : idx, i#9287 : nat, `deftype*#53` : deftype*, `deftype*#54` : deftype*, `subtype*#10` : subtype*, `tagtype*#10` : tagtype*, `globaltype*#11` : globaltype*, `memtype*#24` : memtype*, `tabletype*#17` : tabletype*, `deftype*#55` : deftype*, `datatype*#11` : datatype*, `elemtype*#11` : elemtype*, `localtype*#14` : localtype*, `resulttype*#22` : resulttype*, `resulttype?#19` : resulttype?, `funcidx*#48` : funcidx*, typeidx#489 : typeidx}: - `%|-%:%`(C, `TYPE`_type{rectype#865}(rectype), dt*{dt <- `dt*`}) - -- if (x!`%`_idx{i#9287}.0 = |C.`TYPES`_context{`deftype*#53`}|) + 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`{`deftype*#54`} dt*{dt <- `dt*`}, `RECS`{`subtype*#10`} [], `TAGS`{`tagtype*#10`} [], `GLOBALS`{`globaltype*#11`} [], `MEMS`{`memtype*#24`} [], `TABLES`{`tabletype*#17`} [], `FUNCS`{`deftype*#55`} [], `DATAS`{`datatype*#11`} [], `ELEMS`{`elemtype*#11`} [], `LOCALS`{`localtype*#14`} [], `LABELS`{`resulttype*#22`} [], `RETURN`{`resulttype?#19`} ?(), `REFS`{`funcidx*#48`} []}, rectype, `OK`_oktypeidx{typeidx#489}(x)) + -- 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#105 : tagtype, tagtype : tagtype}: - `%|-%:%`(C, `TAG`_tag{tagtype#105}(tagtype), $clos_tagtype(C, tagtype)) + 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#117 : globaltype, expr#385 : expr, globaltype : globaltype, expr : expr, `mut?#847` : mut?, valtype#457 : valtype, t : valtype}: - `%|-%:%`(C, `GLOBAL`_global{globaltype#117, expr#385}(globaltype, expr), globaltype) + rule _{C : context, globaltype : globaltype, expr : expr, t : valtype}: + `%|-%:%`(C, `GLOBAL`_global(globaltype, expr), globaltype) -- Globaltype_ok: `%|-%:OK`(C, globaltype) - -- if (globaltype = `%%`_globaltype{`mut?#847`, valtype#457}(`MUT`_mut?{}, t)) + -- 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#129 : memtype, memtype : memtype}: - `%|-%:%`(C, `MEMORY`_mem{memtype#129}(memtype), memtype) + 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#143 : tabletype, expr#397 : expr, tabletype : tabletype, expr : expr, addrtype#801 : addrtype, limits#801 : limits, reftype#531 : reftype, at : addrtype, lim : limits, rt : reftype}: - `%|-%:%`(C, `TABLE`_table{tabletype#143, expr#397}(tabletype, expr), tabletype) + 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{addrtype#801, limits#801, reftype#531}(at, lim, rt)) + -- 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, valtype#469 : valtype, t : valtype, init#143 : init, valtype#481 : valtype}: - `%|-%:%`(C, `LOCAL`_local{valtype#469}(t), `%%`_localtype{init#143, valtype#481}(`SET`_init, t)) + 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, valtype#493 : valtype, t : valtype, init#155 : init, valtype#505 : valtype}: - `%|-%:%`(C, `LOCAL`_local{valtype#493}(t), `%%`_localtype{init#155, valtype#505}(`UNSET`_init, t)) + 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, typeidx#501 : typeidx, `local*#171` : local*, expr#409 : expr, x : idx, `local*` : local*, expr : expr, `deftype*#56` : deftype*, i#9337 : nat, `deftype*#57` : deftype*, i#9347 : nat, resulttype#2908 : resulttype, `X*#11954` : valtype*, `t_1*` : valtype*, `X*#11967` : valtype*, `t_2*` : valtype*, `lct*` : localtype*, `deftype*#58` : deftype*, `subtype*#11` : subtype*, `tagtype*#11` : tagtype*, `globaltype*#12` : globaltype*, `memtype*#25` : memtype*, `tabletype*#18` : tabletype*, `deftype*#59` : deftype*, `datatype*#12` : datatype*, `elemtype*#12` : elemtype*, `localtype*#15` : localtype*, `init#191*` : init*, `valtype#559*` : valtype*, `resulttype*#23` : resulttype*, `X*#11980` : valtype*, `resulttype?#20` : resulttype?, `X*#11993` : valtype*, `funcidx*#49` : funcidx*, `X*#12006` : valtype*}: - `%|-%:%`(C, `FUNC`_func{typeidx#501, `local*#171`, expr#409}(x, local*{local <- `local*`}, expr), C.`TYPES`_context{`deftype*#56`}[x!`%`_idx{i#9337}.0]) - -- Expand: `%~~%`(C.`TYPES`_context{`deftype*#57`}[x!`%`_idx{i#9347}.0], `FUNC%->%`_comptype{resulttype#2908}(`%`_resulttype{`X*#11954`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#11967`}(t_2*{t_2 <- `t_2*`}))) + 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`{`deftype*#58`} [], `RECS`{`subtype*#11`} [], `TAGS`{`tagtype*#11`} [], `GLOBALS`{`globaltype*#12`} [], `MEMS`{`memtype*#25`} [], `TABLES`{`tabletype*#18`} [], `FUNCS`{`deftype*#59`} [], `DATAS`{`datatype*#12`} [], `ELEMS`{`elemtype*#12`} [], `LOCALS`{`localtype*#15`} `%%`_localtype{init#191, valtype#559}(`SET`_init, t_1)*{init#191 <- `init#191*`, t_1 <- `t_1*`, valtype#559 <- `valtype#559*`} ++ lct*{lct <- `lct*`}, `LABELS`{`resulttype*#23`} [`%`_resulttype{`X*#11980`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#20`} ?(`%`_resulttype{`X*#11993`}(t_2*{t_2 <- `t_2*`})), `REFS`{`funcidx*#49`} []}, expr, `%`_resulttype{`X*#12006`}(t_2*{t_2 <- `t_2*`})) + -- 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) @@ -115679,16 +90930,16 @@ relation Datamode_ok: `%|-%:%`(context, datamode, datatype) `%|-%:%`(C, `PASSIVE`_datamode, `OK`_datatype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule active{C : context, memidx#63 : memidx, expr#411 : expr, x : idx, expr : expr, `memtype*#26` : memtype*, i#9383 : nat, addrtype#813 : addrtype, limits#813 : limits, at : addrtype, lim : limits}: - `%|-%:%`(C, `ACTIVE`_datamode{memidx#63, expr#411}(x, expr), `OK`_datatype) - -- if (C.`MEMS`_context{`memtype*#26`}[x!`%`_idx{i#9383}.0] = `%%PAGE`_memtype{addrtype#813, limits#813}(at, lim)) + 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, `byte*#153` : byte*, datamode#153 : datamode, `b*` : byte*, datamode : datamode}: - `%|-%:%`(C, `DATA`_data{`byte*#153`, datamode#153}(b*{b <- `b*`}, datamode), `OK`_datatype) + 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 @@ -115702,17 +90953,17 @@ relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) `%|-%:%`(C, `DECLARE`_elemmode, rt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - rule active{C : context, tableidx#45 : tableidx, expr#413 : expr, x : idx, expr : expr, rt : reftype, `tabletype*#19` : tabletype*, i#9407 : nat, addrtype#825 : addrtype, limits#825 : limits, reftype#555 : reftype, at : addrtype, lim : limits, rt' : reftype}: - `%|-%:%`(C, `ACTIVE`_elemmode{tableidx#45, expr#413}(x, expr), rt) - -- if (C.`TABLES`_context{`tabletype*#19`}[x!`%`_idx{i#9407}.0] = `%%%`_tabletype{addrtype#825, limits#825, reftype#555}(at, lim, rt')) + 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, reftype#543 : reftype, `expr*#165` : expr*, elemmode#165 : elemmode, elemtype : elemtype, `expr*` : expr*, elemmode : elemmode}: - `%|-%:%`(C, `ELEM`_elem{reftype#543, `expr*#165`, elemmode#165}(elemtype, expr*{expr <- `expr*`}, elemmode), elemtype) + 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) @@ -115720,49 +90971,49 @@ relation Elem_ok: `%|-%:%`(context, elem, 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, funcidx#195 : funcidx, x : idx, `deftype*#60` : deftype*, i#9431 : nat, resulttype#2911 : resulttype, `X*#12031` : valtype*, `X*#12052` : valtype*}: - `%|-%:OK`(C, `START`_start{funcidx#195}(x)) - -- Expand: `%~~%`(C.`FUNCS`_context{`deftype*#60`}[x!`%`_idx{i#9431}.0], `FUNC%->%`_comptype{resulttype#2911}(`%`_resulttype{`X*#12031`}([]), `%`_resulttype{`X*#12052`}([]))) + 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#309 : name, externtype#79 : externtype, name_1 : name, name_2 : name, xt : externtype}: - `%|-%:%`(C, `IMPORT`_import{name#309, externtype#79}(name_1, name_2, xt), $clos_externtype(C, xt)) + 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, tagidx#9 : tagidx, x : idx, tagtype#107 : tagtype, jt : tagtype, `tagtype*#12` : tagtype*, i#9455 : nat}: - `%|-%:%`(C, `TAG`_externidx{tagidx#9}(x), `TAG`_externtype{tagtype#107}(jt)) - -- if (C.`TAGS`_context{`tagtype*#12`}[x!`%`_idx{i#9455}.0] = jt) + 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, globalidx#15 : globalidx, x : idx, globaltype#119 : globaltype, gt : globaltype, `globaltype*#13` : globaltype*, i#9479 : nat}: - `%|-%:%`(C, `GLOBAL`_externidx{globalidx#15}(x), `GLOBAL`_externtype{globaltype#119}(gt)) - -- if (C.`GLOBALS`_context{`globaltype*#13`}[x!`%`_idx{i#9479}.0] = gt) + 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, memidx#65 : memidx, x : idx, memtype#131 : memtype, mt : memtype, `memtype*#27` : memtype*, i#9503 : nat}: - `%|-%:%`(C, `MEM`_externidx{memidx#65}(x), `MEM`_externtype{memtype#131}(mt)) - -- if (C.`MEMS`_context{`memtype*#27`}[x!`%`_idx{i#9503}.0] = mt) + 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, tableidx#47 : tableidx, x : idx, tabletype#145 : tabletype, tt : tabletype, `tabletype*#20` : tabletype*, i#9527 : nat}: - `%|-%:%`(C, `TABLE`_externidx{tableidx#47}(x), `TABLE`_externtype{tabletype#145}(tt)) - -- if (C.`TABLES`_context{`tabletype*#20`}[x!`%`_idx{i#9527}.0] = tt) + 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, funcidx#197 : funcidx, x : idx, typeuse#31 : typeuse, dt : deftype, `deftype*#61` : deftype*, i#9551 : nat}: - `%|-%:%`(C, `FUNC`_externidx{funcidx#197}(x), `FUNC`_externtype{typeuse#31}((dt : deftype <: typeuse))) - -- if (C.`FUNCS`_context{`deftype*#61`}[x!`%`_idx{i#9551}.0] = dt) + 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#322 : name, externidx#193 : externidx, name : name, externidx : externidx, xt : externtype}: - `%|-%:%%`(C, `EXPORT`_export{name#322, externidx#193}(name, externidx), name, xt) + 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 @@ -115775,10 +91026,10 @@ relation Globals_ok: `%|-%:%`(context, global*, globaltype*) `%|-%:%`(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*, `deftype*#72` : deftype*, `subtype*#17` : subtype*, `tagtype*#18` : tagtype*, `globaltype*#19` : globaltype*, `memtype*#33` : memtype*, `tabletype*#26` : tabletype*, `deftype*#73` : deftype*, `datatype*#18` : datatype*, `elemtype*#18` : elemtype*, `localtype*#21` : localtype*, `resulttype*#29` : resulttype*, `resulttype?#26` : resulttype?, `funcidx*#55` : funcidx*}: + 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`{`deftype*#72`} [], `RECS`{`subtype*#17`} [], `TAGS`{`tagtype*#18`} [], `GLOBALS`{`globaltype*#19`} [gt_1], `MEMS`{`memtype*#33`} [], `TABLES`{`tabletype*#26`} [], `FUNCS`{`deftype*#73`} [], `DATAS`{`datatype*#18`} [], `ELEMS`{`elemtype*#18`} [], `LOCALS`{`localtype*#21`} [], `LABELS`{`resulttype*#29`} [], `RETURN`{`resulttype?#26`} ?(), `REFS`{`funcidx*#55`} []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) + -- 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 @@ -115791,28 +91042,28 @@ relation Types_ok: `%|-%:%`(context, type*, deftype*) `%|-%:%`(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*, `deftype*#70` : deftype*, `subtype*#16` : subtype*, `tagtype*#17` : tagtype*, `globaltype*#18` : globaltype*, `memtype*#32` : memtype*, `tabletype*#25` : tabletype*, `deftype*#71` : deftype*, `datatype*#17` : datatype*, `elemtype*#17` : elemtype*, `localtype*#20` : localtype*, `resulttype*#28` : resulttype*, `resulttype?#25` : resulttype?, `funcidx*#54` : funcidx*}: + 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`{`deftype*#70`} dt_1*{dt_1 <- `dt_1*`}, `RECS`{`subtype*#16`} [], `TAGS`{`tagtype*#17`} [], `GLOBALS`{`globaltype*#18`} [], `MEMS`{`memtype*#32`} [], `TABLES`{`tabletype*#25`} [], `FUNCS`{`deftype*#71`} [], `DATAS`{`datatype*#17`} [], `ELEMS`{`elemtype*#17`} [], `LOCALS`{`localtype*#20`} [], `LABELS`{`resulttype*#28`} [], `RETURN`{`resulttype?#25`} ?(), `REFS`{`funcidx*#54`} []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) + -- 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*, `mem*` : mem*, `table*` : table*, `elem*` : elem*) + | `%%%%`(`global*` : global*, `mem*` : mem*, `table*` : table*, `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*#47` : global*, `mem*#47` : mem*, `table*#47` : table*, `elem*#47` : elem*, `global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `type*#71` : type*, `import*#71` : import*, `tag*#71` : tag*, `global*#83` : global*, `mem*#83` : mem*, `table*#83` : table*, `func*#71` : func*, `data*#71` : data*, `elem*#83` : elem*, `start?#71` : start?, `export*#71` : export*}(`%%%%`_nonfuncs{`global*#47`, `mem*#47`, `table*#47`, `elem*#47`}(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) = $funcidx_module(`MODULE`_module{`type*#71`, `import*#71`, `tag*#71`, `global*#83`, `mem*#83`, `table*#83`, `func*#71`, `data*#71`, `elem*#83`, `start?#71`, `export*#71`}([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) + 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*#83` : type*, `import*#83` : import*, `tag*#83` : tag*, `global*#95` : global*, `mem*#95` : mem*, `table*#95` : table*, `func*#83` : func*, `data*#83` : data*, `elem*#95` : elem*, `start?#83` : start?, `export*#83` : export*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `externtype*#148` : externtype*, `xt_I*` : externtype*, `xt_E*` : externtype*, `deftype*#62` : deftype*, `subtype*#12` : subtype*, `tagtype*#13` : tagtype*, `globaltype*#14` : globaltype*, `memtype*#28` : memtype*, `tabletype*#21` : tabletype*, `deftype*#63` : deftype*, `datatype*#13` : datatype*, `elemtype*#13` : elemtype*, `localtype*#16` : localtype*, `resulttype*#24` : resulttype*, `resulttype?#21` : resulttype?, `funcidx*#50` : funcidx*, `dt'*` : deftype*, `datatype*#14*` : datatype**, `deftype*#64*` : deftype**, `deftype*#65*` : deftype**, `elemtype*#14*` : elemtype**, `funcidx*#51*` : funcidx**, `globaltype*#15*` : globaltype**, `localtype*#17*` : localtype**, `memtype*#29*` : memtype**, `resulttype*#25*` : resulttype**, `resulttype?#22*` : resulttype?*, `subtype*#13*` : subtype**, `tabletype*#22*` : tabletype**, `tagtype*#14*` : tagtype**, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `deftype*#66` : deftype*, `subtype*#14` : subtype*, `tagtype*#15` : tagtype*, `jt_I*` : tagtype*, `globaltype*#16` : globaltype*, `memtype*#30` : memtype*, `mt_I*` : memtype*, `tabletype*#23` : tabletype*, `tt_I*` : tabletype*, `deftype*#67` : deftype*, `datatype*#15` : datatype*, `elemtype*#15` : elemtype*, `localtype*#18` : localtype*, `resulttype*#26` : resulttype*, `resulttype?#23` : resulttype?, `funcidx*#52` : funcidx*, `deftype*#68` : deftype*, `subtype*#15` : subtype*, `tagtype*#16` : tagtype*, `globaltype*#17` : globaltype*, `gt_I*` : globaltype*, `memtype*#31` : memtype*, `tabletype*#24` : tabletype*, `deftype*#69` : deftype*, `dt_I*` : deftype*, `datatype*#16` : datatype*, `elemtype*#16` : elemtype*, `localtype*#19` : localtype*, `resulttype*#27` : resulttype*, `resulttype?#24` : resulttype?, `funcidx*#53` : funcidx*, `x*` : idx*, `global*#107` : global*, `mem*#107` : mem*, `table*#107` : table*, `elem*#107` : elem*}: - `|-%:%`(`MODULE`_module{`type*#83`, `import*#83`, `tag*#83`, `global*#95`, `mem*#95`, `table*#95`, `func*#83`, `data*#83`, `elem*#95`, `start?#83`, `export*#83`}(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{`externtype*#148`}(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))) - -- Types_ok: `%|-%:%`({`TYPES`{`deftype*#62`} [], `RECS`{`subtype*#12`} [], `TAGS`{`tagtype*#13`} [], `GLOBALS`{`globaltype*#14`} [], `MEMS`{`memtype*#28`} [], `TABLES`{`tabletype*#21`} [], `FUNCS`{`deftype*#63`} [], `DATAS`{`datatype*#13`} [], `ELEMS`{`elemtype*#13`} [], `LOCALS`{`localtype*#16`} [], `LABELS`{`resulttype*#24`} [], `RETURN`{`resulttype?#21`} ?(), `REFS`{`funcidx*#50`} []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) - -- (Import_ok: `%|-%:%`({`TYPES`{`deftype*#64`} dt'*{dt' <- `dt'*`}, `RECS`{`subtype*#13`} [], `TAGS`{`tagtype*#14`} [], `GLOBALS`{`globaltype*#15`} [], `MEMS`{`memtype*#29`} [], `TABLES`{`tabletype*#22`} [], `FUNCS`{`deftype*#65`} [], `DATAS`{`datatype*#14`} [], `ELEMS`{`elemtype*#14`} [], `LOCALS`{`localtype*#17`} [], `LABELS`{`resulttype*#25`} [], `RETURN`{`resulttype?#22`} ?(), `REFS`{`funcidx*#51`} []}, import, xt_I))*{`datatype*#14` <- `datatype*#14*`, `deftype*#64` <- `deftype*#64*`, `deftype*#65` <- `deftype*#65*`, `elemtype*#14` <- `elemtype*#14*`, `funcidx*#51` <- `funcidx*#51*`, `globaltype*#15` <- `globaltype*#15*`, import <- `import*`, `localtype*#17` <- `localtype*#17*`, `memtype*#29` <- `memtype*#29*`, `resulttype*#25` <- `resulttype*#25*`, `resulttype?#22` <- `resulttype?#22*`, `subtype*#13` <- `subtype*#13*`, `tabletype*#22` <- `tabletype*#22*`, `tagtype*#14` <- `tagtype*#14*`, xt_I <- `xt_I*`} + 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*`} @@ -115823,9 +91074,9 @@ relation Module_ok: `|-%:%`(module, moduletype) -- (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`{`deftype*#66`} [], `RECS`{`subtype*#14`} [], `TAGS`{`tagtype*#15`} jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, `GLOBALS`{`globaltype*#16`} gt*{gt <- `gt*`}, `MEMS`{`memtype*#30`} mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, `TABLES`{`tabletype*#23`} tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, `FUNCS`{`deftype*#67`} [], `DATAS`{`datatype*#15`} ok*{ok <- `ok*`}, `ELEMS`{`elemtype*#15`} rt*{rt <- `rt*`}, `LOCALS`{`localtype*#18`} [], `LABELS`{`resulttype*#26`} [], `RETURN`{`resulttype?#23`} ?(), `REFS`{`funcidx*#52`} []}) - -- if (C' = {`TYPES`{`deftype*#68`} dt'*{dt' <- `dt'*`}, `RECS`{`subtype*#15`} [], `TAGS`{`tagtype*#16`} [], `GLOBALS`{`globaltype*#17`} gt_I*{gt_I <- `gt_I*`}, `MEMS`{`memtype*#31`} [], `TABLES`{`tabletype*#24`} [], `FUNCS`{`deftype*#69`} dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, `DATAS`{`datatype*#16`} [], `ELEMS`{`elemtype*#16`} [], `LOCALS`{`localtype*#19`} [], `LABELS`{`resulttype*#27`} [], `RETURN`{`resulttype?#24`} ?(), `REFS`{`funcidx*#53`} x*{x <- `x*`}}) - -- if (x*{x <- `x*`} = $funcidx_nonfuncs(`%%%%`_nonfuncs{`global*#107`, `mem*#107`, `table*#107`, `elem*#107`}(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}))) + -- 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*`})) @@ -115834,18 +91085,18 @@ relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec syntax relaxed2 = - | `%`{i : nat}(i : nat) + | `%`(i : nat) -- if ((i = 0) \/ (i = 1)) ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec syntax relaxed4 = - | `%`{i : nat}(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#9672 : nat}(i, syntax X, X_1, X_2) = [X_1 X_2][i!`%`_relaxed2{i#9672}.0] + def $relaxed2{i : relaxed2, syntax X, X_1 : X, X_2 : X}(i, syntax X, X_1, X_2) = [X_1 X_2][i!`%`_relaxed2.0] -- if $ND ;; ../../../../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) = [X_1 X_2][0] @@ -115854,7 +91105,7 @@ def $relaxed2(relaxed2 : relaxed2, syntax X, X : X, X : X) : X ;; ../../../../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#9686 : nat}(i, syntax X, X_1, X_2, X_3, X_4) = [X_1 X_2 X_3 X_4][i!`%`_relaxed4{i#9686}.0] + 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) = [X_1 X_2 X_3 X_4][i!`%`_relaxed4.0] -- if $ND ;; ../../../../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) = [X_1 X_2 X_3 X_4][0] @@ -115966,7 +91217,7 @@ def $sx(storagetype : storagetype) : 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, i#9712 : nat}((Jnn : Jnn <: lanetype)) = `%`_lane_{i#9712}(0) + 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))) @@ -116010,13 +91261,13 @@ def $sat_s_(N : N, int : int) : int ;; ../../../../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), i#9728 : nat, i#9726 : nat}(N, i_1) = `%`_iN{i#9728}((((((2 ^ N) : nat <:> int) - (i_1!`%`_iN{i#9726}.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + 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), i#9736 : nat}(N, i_1) = i_1 - -- if ($signed_(N, i_1!`%`_iN{i#9736}.0) >= (0 : nat <:> int)) + def $iabs_{N : N, i_1 : iN(N)}(N, i_1) = i_1 + -- if ($signed_(N, i_1!`%`_iN.0) >= (0 : nat <:> int)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iabs_{N : N, i_1 : iN(N)}(N, i_1) = $ineg_(N, i_1) -- otherwise @@ -116033,62 +91284,62 @@ 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), i#9776 : nat, i#9774 : nat}(N, M, `U`_sx, i) = `%`_iN{i#9776}((i!`%`_iN{i#9774}.0 \ (2 ^ M))) + 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), i#9792 : nat, i#9790 : nat}(N, M, `S`_sx, i) = `%`_iN{i#9792}($inv_signed_(N, $signed_(M, (i!`%`_iN{i#9790}.0 \ (2 ^ M))))) + 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), i#9816 : nat, i#9812 : nat, i#9814 : nat}(N, i_1, i_2) = `%`_iN{i#9816}(((i_1!`%`_iN{i#9812}.0 + i_2!`%`_iN{i#9814}.0) \ (2 ^ N))) + 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), i#9840 : nat, i#9836 : nat, i#9838 : nat}(N, i_1, i_2) = `%`_iN{i#9840}(((((((2 ^ N) + i_1!`%`_iN{i#9836}.0) : nat <:> int) - (i_2!`%`_iN{i#9838}.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + 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), i#9864 : nat, i#9860 : nat, i#9862 : nat}(N, i_1, i_2) = `%`_iN{i#9864}(((i_1!`%`_iN{i#9860}.0 * i_2!`%`_iN{i#9862}.0) \ (2 ^ N))) + 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), i#9878 : nat}(N, `U`_sx, i_1, `%`_iN{i#9878}(0)) = ?() + 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), i#9902 : nat, i#9898 : nat, i#9900 : nat}(N, `U`_sx, i_1, i_2) = ?(`%`_iN{i#9902}(($truncz(((i_1!`%`_iN{i#9898}.0 : nat <:> rat) / (i_2!`%`_iN{i#9900}.0 : nat <:> rat))) : int <:> nat))) + 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), i#9916 : nat}(N, `S`_sx, i_1, `%`_iN{i#9916}(0)) = ?() + 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), i#9930 : nat, i#9932 : nat}(N, `S`_sx, i_1, i_2) = ?() - -- if ((($signed_(N, i_1!`%`_iN{i#9930}.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN{i#9932}.0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) + 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), i#9956 : nat, i#9952 : nat, i#9954 : nat}(N, `S`_sx, i_1, i_2) = ?(`%`_iN{i#9956}($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_iN{i#9952}.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN{i#9954}.0) : int <:> rat)))))) + 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), i#9970 : nat}(N, `U`_sx, i_1, `%`_iN{i#9970}(0)) = ?() + 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), i#9998 : nat, i#9996 : nat, i#9994 : nat, i#9990 : nat, i#9992 : nat}(N, `U`_sx, i_1, i_2) = ?(`%`_iN{i#9998}((((i_1!`%`_iN{i#9996}.0 : nat <:> int) - ((i_2!`%`_iN{i#9994}.0 * ($truncz(((i_1!`%`_iN{i#9990}.0 : nat <:> rat) / (i_2!`%`_iN{i#9992}.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) + 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), i#10012 : nat}(N, `S`_sx, i_1, `%`_iN{i#10012}(0)) = ?() + 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), i#10036 : nat, j_1 : int, j_2 : int, i#10026 : nat, i#10028 : nat}(N, `S`_sx, i_1, i_2) = ?(`%`_iN{i#10036}($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) - -- if ((j_1 = $signed_(N, i_1!`%`_iN{i#10026}.0)) /\ (j_2 = $signed_(N, i_2!`%`_iN{i#10028}.0))) + 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), i#10050 : nat, i#10052 : nat}(N, `U`_sx, i_1, i_2) = i_1 - -- if (i_1!`%`_iN{i#10050}.0 <= i_2!`%`_iN{i#10052}.0) + 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), i#10072 : nat, i#10074 : nat}(N, `U`_sx, i_1, i_2) = i_2 - -- if (i_1!`%`_iN{i#10072}.0 > i_2!`%`_iN{i#10074}.0) + 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), i#10094 : nat, i#10096 : nat}(N, `S`_sx, i_1, i_2) = i_1 - -- if ($signed_(N, i_1!`%`_iN{i#10094}.0) <= $signed_(N, i_2!`%`_iN{i#10096}.0)) + def $imin_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, `S`_sx, i_1, i_2) = i_1 + -- if ($signed_(N, i_1!`%`_iN.0) <= $signed_(N, 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) = i_2 -- otherwise @@ -116096,14 +91347,14 @@ def $imin_(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, 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), i#10134 : nat, i#10136 : nat}(N, `U`_sx, i_1, i_2) = i_1 - -- if (i_1!`%`_iN{i#10134}.0 >= i_2!`%`_iN{i#10136}.0) + 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), i#10156 : nat, i#10158 : nat}(N, `U`_sx, i_1, i_2) = i_2 - -- if (i_1!`%`_iN{i#10156}.0 < i_2!`%`_iN{i#10158}.0) + 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), i#10178 : nat, i#10180 : nat}(N, `S`_sx, i_1, i_2) = i_1 - -- if ($signed_(N, i_1!`%`_iN{i#10178}.0) >= $signed_(N, i_2!`%`_iN{i#10180}.0)) + def $imax_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, `S`_sx, i_1, i_2) = i_1 + -- if ($signed_(N, i_1!`%`_iN.0) >= $signed_(N, 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) = i_2 -- otherwise @@ -116111,16 +91362,16 @@ def $imax_(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, 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), i#10228 : nat, i#10224 : nat, i#10226 : nat}(N, `U`_sx, i_1, i_2) = `%`_iN{i#10228}($sat_u_(N, ((i_1!`%`_iN{i#10224}.0 + i_2!`%`_iN{i#10226}.0) : nat <:> int))) + 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), i#10252 : nat, i#10248 : nat, i#10250 : nat}(N, `S`_sx, i_1, i_2) = `%`_iN{i#10252}($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN{i#10248}.0) + $signed_(N, i_2!`%`_iN{i#10250}.0))))) + 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), i#10276 : nat, i#10272 : nat, i#10274 : nat}(N, `U`_sx, i_1, i_2) = `%`_iN{i#10276}($sat_u_(N, ((i_1!`%`_iN{i#10272}.0 : nat <:> int) - (i_2!`%`_iN{i#10274}.0 : nat <:> int)))) + 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), i#10300 : nat, i#10296 : nat, i#10298 : nat}(N, `S`_sx, i_1, i_2) = `%`_iN{i#10300}($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN{i#10296}.0) - $signed_(N, i_2!`%`_iN{i#10298}.0))))) + 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) @@ -116170,50 +91421,50 @@ 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), i#10328 : nat, i#10318 : nat}(N, i_1) = `%`_u32{i#10328}($bool((i_1!`%`_iN{i#10318}.0 = 0))) + 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), i#10356 : nat, i#10346 : nat}(N, i_1) = `%`_u32{i#10356}($bool((i_1!`%`_iN{i#10346}.0 =/= 0))) + 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), i#10394 : nat}(N, i_1, i_2) = `%`_u32{i#10394}($bool((i_1 = i_2))) + 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), i#10432 : nat}(N, i_1, i_2) = `%`_u32{i#10432}($bool((i_1 =/= i_2))) + 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), i#10468 : nat, i#10456 : nat, i#10458 : nat}(N, `U`_sx, i_1, i_2) = `%`_u32{i#10468}($bool((i_1!`%`_iN{i#10456}.0 < i_2!`%`_iN{i#10458}.0))) + 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), i#10504 : nat, i#10492 : nat, i#10494 : nat}(N, `S`_sx, i_1, i_2) = `%`_u32{i#10504}($bool(($signed_(N, i_1!`%`_iN{i#10492}.0) < $signed_(N, i_2!`%`_iN{i#10494}.0)))) + 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), i#10540 : nat, i#10528 : nat, i#10530 : nat}(N, `U`_sx, i_1, i_2) = `%`_u32{i#10540}($bool((i_1!`%`_iN{i#10528}.0 > i_2!`%`_iN{i#10530}.0))) + 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), i#10576 : nat, i#10564 : nat, i#10566 : nat}(N, `S`_sx, i_1, i_2) = `%`_u32{i#10576}($bool(($signed_(N, i_1!`%`_iN{i#10564}.0) > $signed_(N, i_2!`%`_iN{i#10566}.0)))) + 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), i#10612 : nat, i#10600 : nat, i#10602 : nat}(N, `U`_sx, i_1, i_2) = `%`_u32{i#10612}($bool((i_1!`%`_iN{i#10600}.0 <= i_2!`%`_iN{i#10602}.0))) + 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), i#10648 : nat, i#10636 : nat, i#10638 : nat}(N, `S`_sx, i_1, i_2) = `%`_u32{i#10648}($bool(($signed_(N, i_1!`%`_iN{i#10636}.0) <= $signed_(N, i_2!`%`_iN{i#10638}.0)))) + 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), i#10684 : nat, i#10672 : nat, i#10674 : nat}(N, `U`_sx, i_1, i_2) = `%`_u32{i#10684}($bool((i_1!`%`_iN{i#10672}.0 >= i_2!`%`_iN{i#10674}.0))) + 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), i#10720 : nat, i#10708 : nat, i#10710 : nat}(N, `S`_sx, i_1, i_2) = `%`_u32{i#10720}($bool(($signed_(N, i_1!`%`_iN{i#10708}.0) >= $signed_(N, i_2!`%`_iN{i#10710}.0)))) + 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)* @@ -116360,7 +91611,7 @@ def $unop_(numtype : numtype, unop_ : unop_(numtype), num_ : num_(numtype)) : nu ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : Inn, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `POPCNT`_unop_, i) = [$ipopcnt_($sizenn((Inn : Inn <: numtype)), i)] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Inn : Inn, sz#154 : sz, i#10974 : nat, i#10981 : nat, M : M, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `EXTEND`_unop_{sz#154, i#10974}(`%`_sz{i#10981}(M)), i) = [$iextend_($sizenn((Inn : Inn <: numtype)), M, `S`_sx, i)] + def $unop_{Inn : Inn, M : M, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `EXTEND`_unop_(`%`_sz(M)), i) = [$iextend_($sizenn((Inn : Inn <: 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 @@ -116385,9 +91636,9 @@ def $binop_(numtype : numtype, binop_ : binop_(numtype), num_ : num_(numtype), n ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `MUL`_binop_, i_1, i_2) = [$imul_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, sx#58 : sx, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `DIV`_binop_{sx#58}(sx), i_1, i_2) = lift($idiv_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2)) + def $binop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `DIV`_binop_(sx), i_1, i_2) = lift($idiv_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, sx#60 : sx, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `REM`_binop_{sx#60}(sx), i_1, i_2) = lift($irem_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2)) + def $binop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `REM`_binop_(sx), i_1, i_2) = lift($irem_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `AND`_binop_, i_1, i_2) = [$iand_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -116395,9 +91646,9 @@ def $binop_(numtype : numtype, binop_ : binop_(numtype), num_ : num_(numtype), n ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `XOR`_binop_, i_1, i_2) = [$ixor_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype)), i#11714 : nat, i#11713 : nat}((Inn : Inn <: numtype), `SHL`_binop_, i_1, i_2) = [$ishl_($sizenn((Inn : Inn <: numtype)), i_1, `%`_u32{i#11714}(i_2!`%`_num_{i#11713}.0))] + def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `SHL`_binop_, i_1, i_2) = [$ishl_($sizenn((Inn : Inn <: numtype)), i_1, `%`_u32(i_2!`%`_num_.0))] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, sx#62 : sx, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype)), i#11808 : nat, i#11807 : nat}((Inn : Inn <: numtype), `SHR`_binop_{sx#62}(sx), i_1, i_2) = [$ishr_($sizenn((Inn : Inn <: numtype)), sx, i_1, `%`_u32{i#11808}(i_2!`%`_num_{i#11807}.0))] + def $binop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `SHR`_binop_(sx), i_1, i_2) = [$ishr_($sizenn((Inn : Inn <: 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 : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `ROTL`_binop_, i_1, i_2) = [$irotl_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -116429,13 +91680,13 @@ def $relop_(numtype : numtype, relop_ : relop_(numtype), num_ : num_(numtype), n ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $relop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `NE`_relop_, i_1, i_2) = $ine_($sizenn((Inn : Inn <: numtype)), i_1, i_2) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Inn : Inn, sx#64 : sx, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `LT`_relop_{sx#64}(sx), i_1, i_2) = $ilt_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) + def $relop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `LT`_relop_(sx), i_1, i_2) = $ilt_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Inn : Inn, sx#66 : sx, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `GT`_relop_{sx#66}(sx), i_1, i_2) = $igt_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) + def $relop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `GT`_relop_(sx), i_1, i_2) = $igt_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Inn : Inn, sx#68 : sx, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `LE`_relop_{sx#68}(sx), i_1, i_2) = $ile_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) + def $relop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `LE`_relop_(sx), i_1, i_2) = $ile_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Inn : Inn, sx#70 : sx, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `GE`_relop_{sx#70}(sx), i_1, i_2) = $ige_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) + def $relop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `GE`_relop_(sx), i_1, i_2) = $ige_($sizenn((Inn : Inn <: 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 @@ -116452,15 +91703,15 @@ def $relop_(numtype : numtype, relop_ : relop_(numtype), num_ : num_(numtype), n ;; ../../../../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#72 : sx, sx : sx, i_1 : num_((Inn_1 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Inn_2 : Inn <: numtype), `EXTEND`_cvtop__{sx#72}(sx), i_1) = [$extend__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, i_1)] + def $cvtop__{Inn_1 : Inn, Inn_2 : Inn, sx : sx, i_1 : num_((Inn_1 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Inn_2 : Inn <: numtype), `EXTEND`_cvtop__(sx), i_1) = [$extend__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Inn_2 : Inn <: 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 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Inn_2 : Inn <: numtype), `WRAP`_cvtop__, i_1) = [$wrap__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), i_1)] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{Fnn_1 : Fnn, Inn_2 : Inn, sx#74 : sx, sx : sx, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), `TRUNC`_cvtop__{sx#74}(sx), f_1) = lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, f_1)) + def $cvtop__{Fnn_1 : Fnn, Inn_2 : Inn, sx : sx, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), `TRUNC`_cvtop__(sx), f_1) = lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, f_1)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{Fnn_1 : Fnn, Inn_2 : Inn, sx#76 : sx, sx : sx, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), `TRUNC_SAT`_cvtop__{sx#76}(sx), f_1) = lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, f_1)) + def $cvtop__{Fnn_1 : Fnn, Inn_2 : Inn, sx : sx, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), `TRUNC_SAT`_cvtop__(sx), f_1) = lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, f_1)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{Inn_1 : Inn, Fnn_2 : Fnn, sx#78 : sx, sx : sx, i_1 : num_((Inn_1 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype), `CONVERT`_cvtop__{sx#78}(sx), i_1) = [$convert__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1)] + def $cvtop__{Inn_1 : Inn, Fnn_2 : Fnn, sx : sx, i_1 : num_((Inn_1 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype), `CONVERT`_cvtop__(sx), i_1) = [$convert__($sizenn1((Inn_1 : Inn <: 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 @@ -116481,32 +91732,32 @@ 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{lanetype#801 : lanetype, dim#801 : dim, i#12568 : nat, Jnn_1 : Jnn, i#12575 : nat, M_1 : M, lanetype#813 : lanetype, dim#813 : dim, i#12580 : nat, Jnn_2 : Jnn, i#12587 : nat, M_2 : M, half#1 : half, sx#80 : sx, half : half, sx : sx}(`%X%`_shape{lanetype#801, dim#801, i#12568}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#12575}(M_1)), `%X%`_shape{lanetype#813, dim#813, i#12580}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#12587}(M_2)), `EXTEND`_vcvtop__{half#1, sx#80}(half, sx)) = ?() + 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{lanetype#825 : lanetype, dim#825 : dim, i#12592 : nat, Jnn_1 : Jnn, i#12599 : nat, M_1 : M, lanetype#837 : lanetype, dim#837 : dim, i#12604 : nat, Fnn_2 : Fnn, i#12611 : nat, M_2 : M, `half?#1` : half?, sx#82 : sx, `half?` : half?, sx : sx}(`%X%`_shape{lanetype#825, dim#825, i#12592}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#12599}(M_1)), `%X%`_shape{lanetype#837, dim#837, i#12604}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#12611}(M_2)), `CONVERT`_vcvtop__{`half?#1`, sx#82}(half?{half <- `half?`}, sx)) = ?() + 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{lanetype#864 : lanetype, dim#864 : dim, i#12631 : nat, Fnn_1 : Fnn, i#12638 : nat, M_1 : M, lanetype#876 : lanetype, dim#876 : dim, i#12643 : nat, Jnn_2 : Jnn, i#12650 : nat, M_2 : M, sx#84 : sx, `zero?#1` : zero?, sx : sx, `zero?` : zero?}(`%X%`_shape{lanetype#864, dim#864, i#12631}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#12638}(M_1)), `%X%`_shape{lanetype#876, dim#876, i#12643}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#12650}(M_2)), `TRUNC_SAT`_vcvtop__{sx#84, `zero?#1`}(sx, zero?{zero <- `zero?`})) = zero?{zero <- `zero?`} + 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{lanetype#918 : lanetype, dim#918 : dim, i#12685 : nat, Fnn_1 : Fnn, i#12692 : nat, M_1 : M, lanetype#930 : lanetype, dim#930 : dim, i#12697 : nat, Jnn_2 : Jnn, i#12704 : nat, M_2 : M, sx#86 : sx, `zero?#3` : zero?, sx : sx, `zero?` : zero?}(`%X%`_shape{lanetype#918, dim#918, i#12685}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#12692}(M_1)), `%X%`_shape{lanetype#930, dim#930, i#12697}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#12704}(M_2)), `RELAXED_TRUNC`_vcvtop__{sx#86, `zero?#3`}(sx, zero?{zero <- `zero?`})) = zero?{zero <- `zero?`} + 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{lanetype#972 : lanetype, dim#972 : dim, i#12739 : nat, Fnn_1 : Fnn, i#12746 : nat, M_1 : M, lanetype#984 : lanetype, dim#984 : dim, i#12751 : nat, Fnn_2 : Fnn, i#12758 : nat, M_2 : M, zero#1 : zero, zero : zero}(`%X%`_shape{lanetype#972, dim#972, i#12739}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#12746}(M_1)), `%X%`_shape{lanetype#984, dim#984, i#12751}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#12758}(M_2)), `DEMOTE`_vcvtop__{zero#1}(zero)) = ?(zero) + 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{lanetype#1041 : lanetype, dim#1041 : dim, i#12808 : nat, Fnn_1 : Fnn, i#12815 : nat, M_1 : M, lanetype#1053 : lanetype, dim#1053 : dim, i#12820 : nat, Fnn_2 : Fnn, i#12827 : nat, M_2 : M}(`%X%`_shape{lanetype#1041, dim#1041, i#12808}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#12815}(M_1)), `%X%`_shape{lanetype#1053, dim#1053, i#12820}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#12827}(M_2)), `PROMOTELOW`_vcvtop__) = ?() + 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{lanetype#1122 : lanetype, dim#1122 : dim, i#12881 : nat, Jnn_1 : Jnn, i#12888 : nat, M_1 : M, lanetype#1134 : lanetype, dim#1134 : dim, i#12893 : nat, Jnn_2 : Jnn, i#12900 : nat, M_2 : M, half#3 : half, sx#88 : sx, half : half, sx : sx}(`%X%`_shape{lanetype#1122, dim#1122, i#12881}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#12888}(M_1)), `%X%`_shape{lanetype#1134, dim#1134, i#12893}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#12900}(M_2)), `EXTEND`_vcvtop__{half#3, sx#88}(half, sx)) = ?(half) + 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{lanetype#1146 : lanetype, dim#1146 : dim, i#12905 : nat, Jnn_1 : Jnn, i#12912 : nat, M_1 : M, lanetype#1158 : lanetype, dim#1158 : dim, i#12917 : nat, Fnn_2 : Fnn, i#12924 : nat, M_2 : M, `half?#3` : half?, sx#90 : sx, `half?` : half?, sx : sx}(`%X%`_shape{lanetype#1146, dim#1146, i#12905}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#12912}(M_1)), `%X%`_shape{lanetype#1158, dim#1158, i#12917}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#12924}(M_2)), `CONVERT`_vcvtop__{`half?#3`, sx#90}(half?{half <- `half?`}, sx)) = half?{half <- `half?`} + 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{lanetype#1185 : lanetype, dim#1185 : dim, i#12944 : nat, Fnn_1 : Fnn, i#12951 : nat, M_1 : M, lanetype#1197 : lanetype, dim#1197 : dim, i#12956 : nat, Jnn_2 : Jnn, i#12963 : nat, M_2 : M, sx#92 : sx, `zero?#5` : zero?, sx : sx, `zero?` : zero?}(`%X%`_shape{lanetype#1185, dim#1185, i#12944}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#12951}(M_1)), `%X%`_shape{lanetype#1197, dim#1197, i#12956}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#12963}(M_2)), `TRUNC_SAT`_vcvtop__{sx#92, `zero?#5`}(sx, zero?{zero <- `zero?`})) = ?() + 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{lanetype#1239 : lanetype, dim#1239 : dim, i#12998 : nat, Fnn_1 : Fnn, i#13005 : nat, M_1 : M, lanetype#1251 : lanetype, dim#1251 : dim, i#13010 : nat, Jnn_2 : Jnn, i#13017 : nat, M_2 : M, sx#94 : sx, `zero?#7` : zero?, sx : sx, `zero?` : zero?}(`%X%`_shape{lanetype#1239, dim#1239, i#12998}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#13005}(M_1)), `%X%`_shape{lanetype#1251, dim#1251, i#13010}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#13017}(M_2)), `RELAXED_TRUNC`_vcvtop__{sx#94, `zero?#7`}(sx, zero?{zero <- `zero?`})) = ?() + 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{lanetype#1293 : lanetype, dim#1293 : dim, i#13052 : nat, Fnn_1 : Fnn, i#13059 : nat, M_1 : M, lanetype#1305 : lanetype, dim#1305 : dim, i#13064 : nat, Fnn_2 : Fnn, i#13071 : nat, M_2 : M, zero#3 : zero, zero : zero}(`%X%`_shape{lanetype#1293, dim#1293, i#13052}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#13059}(M_1)), `%X%`_shape{lanetype#1305, dim#1305, i#13064}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#13071}(M_2)), `DEMOTE`_vcvtop__{zero#3}(zero)) = ?() + 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{lanetype#1362 : lanetype, dim#1362 : dim, i#13121 : nat, Fnn_1 : Fnn, i#13128 : nat, M_1 : M, lanetype#1374 : lanetype, dim#1374 : dim, i#13133 : nat, Fnn_2 : Fnn, i#13140 : nat, M_2 : M}(`%X%`_shape{lanetype#1362, dim#1362, i#13121}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#13128}(M_1)), `%X%`_shape{lanetype#1374, dim#1374, i#13133}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#13140}(M_2)), `PROMOTELOW`_vcvtop__) = ?(`LOW`_half) + 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 @@ -116518,149 +91769,149 @@ def $half(half : half, nat : nat, nat : nat) : nat ;; ../../../../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), i#13213 : nat, i#13205 : nat}(N, c*{c <- `c*`}, i) = c*{c <- `c*`}[i!`%`_iN{i#13213}.0] - -- if (i!`%`_iN{i#13205}.0 < |c*{c <- `c*`}|) + def $iswizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = c*{c <- `c*`}[i!`%`_iN.0] + -- if (i!`%`_iN.0 < |c*{c <- `c*`}|) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $iswizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N), i#13239 : nat}(N, c*{c <- `c*`}, i) = `%`_iN{i#13239}(0) + def $iswizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = `%`_iN(0) -- otherwise ;; ../../../../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), i#13267 : nat, i#13259 : nat}(N, c*{c <- `c*`}, i) = c*{c <- `c*`}[i!`%`_iN{i#13267}.0] - -- if (i!`%`_iN{i#13259}.0 < |c*{c <- `c*`}|) + def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = c*{c <- `c*`}[i!`%`_iN.0] + -- if (i!`%`_iN.0 < |c*{c <- `c*`}|) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N), i#13295 : nat, i#13287 : nat}(N, c*{c <- `c*`}, i) = `%`_iN{i#13295}(0) - -- if ($signed_(N, i!`%`_iN{i#13287}.0) < (0 : nat <:> int)) + def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = `%`_iN(0) + -- if ($signed_(N, i!`%`_iN.0) < (0 : nat <:> int)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N), i#13333 : nat, i#13341 : nat}(N, c*{c <- `c*`}, i) = $relaxed2($R_swizzle, syntax iN(N), `%`_iN{i#13333}(0), c*{c <- `c*`}[(i!`%`_iN{i#13341}.0 \ |c*{c <- `c*`}|)]) + def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = $relaxed2($R_swizzle, syntax iN(N), `%`_iN(0), c*{c <- `c*`}[(i!`%`_iN.0 \ |c*{c <- `c*`}|)]) -- otherwise ;; ../../../../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_{lanetype#1431 : lanetype, dim#1431 : dim, i#13346 : nat, Jnn : Jnn, i#13353 : nat, M : M, def $f_(N : N, iN : iN(N)) : iN(N), v_1 : vec_(`V128`_Vnn), lanetype#1469 : lanetype, dim#1469 : dim, i#13506 : nat, i#13513 : nat, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, lanetype#1443 : lanetype, dim#1443 : dim, i#13370 : nat, i#13377 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#1443, dim#1443, i#13370}((Jnn : Jnn <: lanetype), `%`_dim{i#13377}(M))))*}(`%X%`_shape{lanetype#1431, dim#1431, i#13346}((Jnn : Jnn <: lanetype), `%`_dim{i#13353}(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape{lanetype#1469, dim#1469, i#13506}((Jnn : Jnn <: lanetype), `%`_dim{i#13513}(M)), c*{c <- `c*`})] - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#1443, dim#1443, i#13370}((Jnn : Jnn <: lanetype), `%`_dim{i#13377}(M)), v_1)) + 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*`})] + -- 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)), 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(N)) : fN(N)*, vec_ : vec_(`V128`_Vnn)) : vec_(`V128`_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvunop_{lanetype#1493 : lanetype, dim#1493 : dim, i#13579 : nat, Fnn : Fnn, i#13586 : nat, M : M, def $f_(N : N, fN : fN(N)) : fN(N)*, v_1 : vec_(`V128`_Vnn), `c**` : lane_((Fnn : Fnn <: lanetype))**, `dim#1532*` : dim*, `i#13693*` : nat*, `i#13700*` : nat*, `lanetype#1532*` : lanetype*, lanetype#1505 : lanetype, dim#1505 : dim, i#13603 : nat, i#13610 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#1505, dim#1505, i#13603}((Fnn : Fnn <: lanetype), `%`_dim{i#13610}(M))))*}(`%X%`_shape{lanetype#1493, dim#1493, i#13579}((Fnn : Fnn <: lanetype), `%`_dim{i#13586}(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape{lanetype#1532, dim#1532, i#13693}((Fnn : Fnn <: lanetype), `%`_dim{i#13700}(M)), c*{c <- `c*`})*{`c*` <- `c**`, dim#1532 <- `dim#1532*`, i#13693 <- `i#13693*`, i#13700 <- `i#13700*`, lanetype#1532 <- `lanetype#1532*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#1505, dim#1505, i#13603}((Fnn : Fnn <: lanetype), `%`_dim{i#13610}(M)), v_1)) + 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**`} + -- 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)), $f_($sizenn((Fnn : Fnn <: numtype)), 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(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_{lanetype#1555 : lanetype, dim#1555 : dim, i#13738 : nat, Jnn : Jnn, i#13745 : nat, M : M, def $f_(N : N, iN : iN(N), iN : iN(N)) : iN(N), v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#1619 : lanetype, dim#1619 : dim, i#14011 : nat, i#14018 : nat, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, lanetype#1567 : lanetype, dim#1567 : dim, i#13774 : nat, i#13781 : nat, lanetype#1592 : lanetype, dim#1592 : dim, i#13860 : nat, i#13867 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#1567, dim#1567, i#13774}((Jnn : Jnn <: lanetype), `%`_dim{i#13781}(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#1592, dim#1592, i#13860}((Jnn : Jnn <: lanetype), `%`_dim{i#13867}(M))))*}(`%X%`_shape{lanetype#1555, dim#1555, i#13738}((Jnn : Jnn <: lanetype), `%`_dim{i#13745}(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape{lanetype#1619, dim#1619, i#14011}((Jnn : Jnn <: lanetype), `%`_dim{i#14018}(M)), c*{c <- `c*`})] - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#1567, dim#1567, i#13774}((Jnn : Jnn <: lanetype), `%`_dim{i#13781}(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#1592, dim#1592, i#13860}((Jnn : Jnn <: lanetype), `%`_dim{i#13867}(M)), v_2)) + 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*`})] + -- 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)), c_1, 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(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_{lanetype#1643 : lanetype, dim#1643 : dim, i#14084 : nat, Jnn : Jnn, i#14091 : nat, 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), lanetype#1707 : lanetype, dim#1707 : dim, i#14357 : nat, i#14364 : nat, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, lanetype#1655 : lanetype, dim#1655 : dim, i#14120 : nat, i#14127 : nat, lanetype#1680 : lanetype, dim#1680 : dim, i#14206 : nat, i#14213 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#1655, dim#1655, i#14120}((Jnn : Jnn <: lanetype), `%`_dim{i#14127}(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#1680, dim#1680, i#14206}((Jnn : Jnn <: lanetype), `%`_dim{i#14213}(M))))*}(`%X%`_shape{lanetype#1643, dim#1643, i#14084}((Jnn : Jnn <: lanetype), `%`_dim{i#14091}(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape{lanetype#1707, dim#1707, i#14357}((Jnn : Jnn <: lanetype), `%`_dim{i#14364}(M)), c*{c <- `c*`})] - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#1655, dim#1655, i#14120}((Jnn : Jnn <: lanetype), `%`_dim{i#14127}(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#1680, dim#1680, i#14206}((Jnn : Jnn <: lanetype), `%`_dim{i#14213}(M)), v_2)) + 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*`})] + -- 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, c_1, 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(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_{lanetype#1731 : lanetype, dim#1731 : dim, i#14430 : nat, Jnn : Jnn, i#14437 : nat, 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))**, `dim#1803*` : dim*, `i#14919*` : nat*, `i#14926*` : nat*, `lanetype#1803*` : lanetype*, lanetype#1743 : lanetype, dim#1743 : dim, i#14466 : nat, i#14473 : nat, lanetype#1768 : lanetype, dim#1768 : dim, i#14552 : nat, i#14559 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#1743, dim#1743, i#14466}((Jnn : Jnn <: lanetype), `%`_dim{i#14473}(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#1768, dim#1768, i#14552}((Jnn : Jnn <: lanetype), `%`_dim{i#14559}(M))))*}(`%X%`_shape{lanetype#1731, dim#1731, i#14430}((Jnn : Jnn <: lanetype), `%`_dim{i#14437}(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape{lanetype#1803, dim#1803, i#14919}((Jnn : Jnn <: lanetype), `%`_dim{i#14926}(M)), c*{c <- `c*`})*{`c*` <- `c**`, dim#1803 <- `dim#1803*`, i#14919 <- `i#14919*`, i#14926 <- `i#14926*`, lanetype#1803 <- `lanetype#1803*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#1743, dim#1743, i#14466}((Jnn : Jnn <: lanetype), `%`_dim{i#14473}(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#1768, dim#1768, i#14552}((Jnn : Jnn <: lanetype), `%`_dim{i#14559}(M)), v_2)) + 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**`} + -- 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)), $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, 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(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_{lanetype#1827 : lanetype, dim#1827 : dim, i#14990 : nat, Fnn : Fnn, i#14997 : nat, 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))**, `dim#1893*` : dim*, `i#15183*` : nat*, `i#15190*` : nat*, `lanetype#1893*` : lanetype*, lanetype#1839 : lanetype, dim#1839 : dim, i#15026 : nat, i#15033 : nat, lanetype#1863 : lanetype, dim#1863 : dim, i#15084 : nat, i#15091 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#1839, dim#1839, i#15026}((Fnn : Fnn <: lanetype), `%`_dim{i#15033}(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#1863, dim#1863, i#15084}((Fnn : Fnn <: lanetype), `%`_dim{i#15091}(M))))*}(`%X%`_shape{lanetype#1827, dim#1827, i#14990}((Fnn : Fnn <: lanetype), `%`_dim{i#14997}(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape{lanetype#1893, dim#1893, i#15183}((Fnn : Fnn <: lanetype), `%`_dim{i#15190}(M)), c*{c <- `c*`})*{`c*` <- `c**`, dim#1893 <- `dim#1893*`, i#15183 <- `i#15183*`, i#15190 <- `i#15190*`, lanetype#1893 <- `lanetype#1893*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#1839, dim#1839, i#15026}((Fnn : Fnn <: lanetype), `%`_dim{i#15033}(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#1863, dim#1863, i#15084}((Fnn : Fnn <: lanetype), `%`_dim{i#15091}(M)), v_2)) + 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**`} + -- 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)), $f_($sizenn((Fnn : Fnn <: numtype)), c_1, 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(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_{lanetype#1916 : lanetype, dim#1916 : dim, i#15228 : nat, Jnn : Jnn, i#15235 : nat, 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))**, `dim#2018*` : dim*, `i#15890*` : nat*, `i#15897*` : nat*, `lanetype#2018*` : lanetype*, lanetype#1928 : lanetype, dim#1928 : dim, i#15276 : nat, i#15283 : nat, lanetype#1953 : lanetype, dim#1953 : dim, i#15362 : nat, i#15369 : nat, lanetype#1978 : lanetype, dim#1978 : dim, i#15448 : nat, i#15455 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#1928, dim#1928, i#15276}((Jnn : Jnn <: lanetype), `%`_dim{i#15283}(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#1953, dim#1953, i#15362}((Jnn : Jnn <: lanetype), `%`_dim{i#15369}(M))))*, `c_3*` : lane_($lanetype(`%X%`_shape{lanetype#1978, dim#1978, i#15448}((Jnn : Jnn <: lanetype), `%`_dim{i#15455}(M))))*}(`%X%`_shape{lanetype#1916, dim#1916, i#15228}((Jnn : Jnn <: lanetype), `%`_dim{i#15235}(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape{lanetype#2018, dim#2018, i#15890}((Jnn : Jnn <: lanetype), `%`_dim{i#15897}(M)), c*{c <- `c*`})*{`c*` <- `c**`, dim#2018 <- `dim#2018*`, i#15890 <- `i#15890*`, i#15897 <- `i#15897*`, lanetype#2018 <- `lanetype#2018*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#1928, dim#1928, i#15276}((Jnn : Jnn <: lanetype), `%`_dim{i#15283}(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#1953, dim#1953, i#15362}((Jnn : Jnn <: lanetype), `%`_dim{i#15369}(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape{lanetype#1978, dim#1978, i#15448}((Jnn : Jnn <: lanetype), `%`_dim{i#15455}(M)), v_3)) + 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**`} + -- 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)), $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_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(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_{lanetype#2042 : lanetype, dim#2042 : dim, i#15961 : nat, Fnn : Fnn, i#15968 : nat, 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))**, `dim#2135*` : dim*, `i#16233*` : nat*, `i#16240*` : nat*, `lanetype#2135*` : lanetype*, lanetype#2054 : lanetype, dim#2054 : dim, i#16009 : nat, i#16016 : nat, lanetype#2078 : lanetype, dim#2078 : dim, i#16067 : nat, i#16074 : nat, lanetype#2102 : lanetype, dim#2102 : dim, i#16125 : nat, i#16132 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#2054, dim#2054, i#16009}((Fnn : Fnn <: lanetype), `%`_dim{i#16016}(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#2078, dim#2078, i#16067}((Fnn : Fnn <: lanetype), `%`_dim{i#16074}(M))))*, `c_3*` : lane_($lanetype(`%X%`_shape{lanetype#2102, dim#2102, i#16125}((Fnn : Fnn <: lanetype), `%`_dim{i#16132}(M))))*}(`%X%`_shape{lanetype#2042, dim#2042, i#15961}((Fnn : Fnn <: lanetype), `%`_dim{i#15968}(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape{lanetype#2135, dim#2135, i#16233}((Fnn : Fnn <: lanetype), `%`_dim{i#16240}(M)), c*{c <- `c*`})*{`c*` <- `c**`, dim#2135 <- `dim#2135*`, i#16233 <- `i#16233*`, i#16240 <- `i#16240*`, lanetype#2135 <- `lanetype#2135*`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2054, dim#2054, i#16009}((Fnn : Fnn <: lanetype), `%`_dim{i#16016}(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#2078, dim#2078, i#16067}((Fnn : Fnn <: lanetype), `%`_dim{i#16074}(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape{lanetype#2102, dim#2102, i#16125}((Fnn : Fnn <: lanetype), `%`_dim{i#16132}(M)), v_3)) + 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**`} + -- 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)), $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_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 $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_{lanetype#2158 : lanetype, dim#2158 : dim, i#16278 : nat, Jnn : Jnn, i#16285 : nat, M : M, def $f_(N : N, iN : iN(N), iN : iN(N)) : u32, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#2222 : lanetype, dim#2222 : dim, i#16597 : nat, i#16604 : nat, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, lanetype#2170 : lanetype, dim#2170 : dim, i#16314 : nat, i#16321 : nat, lanetype#2195 : lanetype, dim#2195 : dim, i#16400 : nat, i#16407 : nat, `i#16555*` : nat*, `i#16556*` : nat*, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#2170, dim#2170, i#16314}((Jnn : Jnn <: lanetype), `%`_dim{i#16321}(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#2195, dim#2195, i#16400}((Jnn : Jnn <: lanetype), `%`_dim{i#16407}(M))))*}(`%X%`_shape{lanetype#2158, dim#2158, i#16278}((Jnn : Jnn <: lanetype), `%`_dim{i#16285}(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape{lanetype#2222, dim#2222, i#16597}((Jnn : Jnn <: lanetype), `%`_dim{i#16604}(M)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2170, dim#2170, i#16314}((Jnn : Jnn <: lanetype), `%`_dim{i#16321}(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#2195, dim#2195, i#16400}((Jnn : Jnn <: lanetype), `%`_dim{i#16407}(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, `%`_iN{i#16556}($f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)!`%`_u32{i#16555}.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`, i#16555 <- `i#16555*`, i#16556 <- `i#16556*`}) + 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*`}) + -- 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)), c_1, c_2)!`%`_u32.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(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_{lanetype#2246 : lanetype, dim#2246 : dim, i#16670 : nat, Jnn : Jnn, i#16677 : nat, 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), lanetype#2310 : lanetype, dim#2310 : dim, i#16989 : nat, i#16996 : nat, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, lanetype#2258 : lanetype, dim#2258 : dim, i#16706 : nat, i#16713 : nat, lanetype#2283 : lanetype, dim#2283 : dim, i#16792 : nat, i#16799 : nat, `i#16947*` : nat*, `i#16948*` : nat*, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#2258, dim#2258, i#16706}((Jnn : Jnn <: lanetype), `%`_dim{i#16713}(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#2283, dim#2283, i#16792}((Jnn : Jnn <: lanetype), `%`_dim{i#16799}(M))))*}(`%X%`_shape{lanetype#2246, dim#2246, i#16670}((Jnn : Jnn <: lanetype), `%`_dim{i#16677}(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape{lanetype#2310, dim#2310, i#16989}((Jnn : Jnn <: lanetype), `%`_dim{i#16996}(M)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2258, dim#2258, i#16706}((Jnn : Jnn <: lanetype), `%`_dim{i#16713}(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#2283, dim#2283, i#16792}((Jnn : Jnn <: lanetype), `%`_dim{i#16799}(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, `%`_iN{i#16948}($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)!`%`_u32{i#16947}.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`, i#16947 <- `i#16947*`, i#16948 <- `i#16948*`}) + 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*`}) + -- 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, c_1, c_2)!`%`_u32.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(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_{lanetype#2334 : lanetype, dim#2334 : dim, i#17062 : nat, Fnn : Fnn, i#17069 : nat, M : M, def $f_(N : N, fN : fN(N), fN : fN(N)) : u32, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#2396 : lanetype, dim#2396 : dim, i#17301 : nat, Inn : Inn, i#17308 : nat, `c*` : iN($sizenn((Fnn : Fnn <: numtype)))*, `i#17404*` : nat*, `i#17405*` : nat*, lanetype#2346 : lanetype, dim#2346 : dim, i#17098 : nat, i#17105 : nat, lanetype#2370 : lanetype, dim#2370 : dim, i#17156 : nat, i#17163 : nat, `i#17259*` : nat*, `i#17260*` : nat*, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#2346, dim#2346, i#17098}((Fnn : Fnn <: lanetype), `%`_dim{i#17105}(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#2370, dim#2370, i#17156}((Fnn : Fnn <: lanetype), `%`_dim{i#17163}(M))))*}(`%X%`_shape{lanetype#2334, dim#2334, i#17062}((Fnn : Fnn <: lanetype), `%`_dim{i#17069}(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape{lanetype#2396, dim#2396, i#17301}((Inn : Inn <: lanetype), `%`_dim{i#17308}(M)), `%`_lane_{i#17405}(c!`%`_iN{i#17404}.0)*{c <- `c*`, i#17404 <- `i#17404*`, i#17405 <- `i#17405*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2346, dim#2346, i#17098}((Fnn : Fnn <: lanetype), `%`_dim{i#17105}(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#2370, dim#2370, i#17156}((Fnn : Fnn <: lanetype), `%`_dim{i#17163}(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), `S`_sx, `%`_iN{i#17260}($f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)!`%`_u32{i#17259}.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`, i#17259 <- `i#17259*`, i#17260 <- `i#17260*`}) + 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 : Inn <: lanetype), `%`_dim(M)), `%`_lane_(c!`%`_iN.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)), c_1, c_2)!`%`_u32.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(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_{lanetype#2421 : lanetype, dim#2421 : dim, i#17411 : nat, Jnn : Jnn, i#17418 : nat, M : M, def $f_(N : N, iN : iN(N), u32 : u32) : iN(N), v_1 : vec_(`V128`_Vnn), i : u32, lanetype#2459 : lanetype, dim#2459 : dim, i#17593 : nat, i#17600 : nat, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, lanetype#2433 : lanetype, dim#2433 : dim, i#17447 : nat, i#17454 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#2433, dim#2433, i#17447}((Jnn : Jnn <: lanetype), `%`_dim{i#17454}(M))))*}(`%X%`_shape{lanetype#2421, dim#2421, i#17411}((Jnn : Jnn <: lanetype), `%`_dim{i#17418}(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape{lanetype#2459, dim#2459, i#17593}((Jnn : Jnn <: lanetype), `%`_dim{i#17600}(M)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2433, dim#2433, i#17447}((Jnn : Jnn <: lanetype), `%`_dim{i#17454}(M)), v_1)) + 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*`}) + -- 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)), 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(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_{lanetype#2483 : lanetype, dim#2483 : dim, i#17666 : nat, Jnn : Jnn, i#17673 : nat, M : M, def $f_(N : N, sx : sx, iN : iN(N), u32 : u32) : iN(N), sx : sx, v_1 : vec_(`V128`_Vnn), i : u32, lanetype#2521 : lanetype, dim#2521 : dim, i#17848 : nat, i#17855 : nat, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, lanetype#2495 : lanetype, dim#2495 : dim, i#17702 : nat, i#17709 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#2495, dim#2495, i#17702}((Jnn : Jnn <: lanetype), `%`_dim{i#17709}(M))))*}(`%X%`_shape{lanetype#2483, dim#2483, i#17666}((Jnn : Jnn <: lanetype), `%`_dim{i#17673}(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape{lanetype#2521, dim#2521, i#17848}((Jnn : Jnn <: lanetype), `%`_dim{i#17855}(M)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2495, dim#2495, i#17702}((Jnn : Jnn <: lanetype), `%`_dim{i#17709}(M)), v_1)) + 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*`}) + -- 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, c_1, i)*{c_1 <- `c_1*`}) ;; ../../../../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_{lanetype#2545 : lanetype, dim#2545 : dim, i#17921 : nat, Jnn : Jnn, i#17928 : nat, M : M, v_1 : vec_(`V128`_Vnn), c : iN(32), lanetype#2557 : lanetype, dim#2557 : dim, i#17945 : nat, i#17952 : nat, `i#18238*` : nat*, `i#18256*` : nat*, `i#18257*` : nat*, `i#18272*` : nat*, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#2557, dim#2557, i#17945}((Jnn : Jnn <: lanetype), `%`_dim{i#17952}(M))))*}(`%X%`_shape{lanetype#2545, dim#2545, i#17921}((Jnn : Jnn <: lanetype), `%`_dim{i#17928}(M)), v_1) = $irev_(32, c) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2557, dim#2557, i#17945}((Jnn : Jnn <: lanetype), `%`_dim{i#17952}(M)), v_1)) - -- if ($ibits_(32, c) = `%`_bit{i#18257}($ilt_($lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, c_1, `%`_iN{i#18238}(0))!`%`_u32{i#18256}.0)*{c_1 <- `c_1*`, i#18238 <- `i#18238*`, i#18256 <- `i#18256*`, i#18257 <- `i#18257*`} ++ `%`_bit{i#18272}(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){i#18272 <- `i#18272*`}) + 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) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_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_{lanetype#2584 : lanetype, dim#2584 : dim, i#18299 : nat, Jnn : Jnn, i#18306 : nat, M : M, def $f_(N : N, iN(N)*, iN : iN(N)) : iN(N), v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#2648 : lanetype, dim#2648 : dim, i#18585 : nat, i#18592 : nat, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, lanetype#2596 : lanetype, dim#2596 : dim, i#18335 : nat, i#18342 : nat, lanetype#2621 : lanetype, dim#2621 : dim, i#18421 : nat, i#18428 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#2596, dim#2596, i#18335}((Jnn : Jnn <: lanetype), `%`_dim{i#18342}(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#2621, dim#2621, i#18421}((Jnn : Jnn <: lanetype), `%`_dim{i#18428}(M))))*}(`%X%`_shape{lanetype#2584, dim#2584, i#18299}((Jnn : Jnn <: lanetype), `%`_dim{i#18306}(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape{lanetype#2648, dim#2648, i#18585}((Jnn : Jnn <: lanetype), `%`_dim{i#18592}(M)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2596, dim#2596, i#18335}((Jnn : Jnn <: lanetype), `%`_dim{i#18342}(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#2621, dim#2621, i#18421}((Jnn : Jnn <: lanetype), `%`_dim{i#18428}(M)), v_2)) + 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*`}) + -- 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)), c_1*{c_1 <- `c_1*`}, c_2)*{c_2 <- `c_2*`}) ;; ../../../../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_{lanetype#2672 : lanetype, dim#2672 : dim, i#18658 : nat, Jnn : Jnn, i#18665 : nat, M : M, `i*` : laneidx*, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#2760 : lanetype, dim#2760 : dim, i#19037 : nat, i#19044 : nat, lanetype#2684 : lanetype, dim#2684 : dim, i#18719 : nat, i#18726 : nat, lanetype#2709 : lanetype, dim#2709 : dim, i#18805 : nat, i#18812 : nat, `i#18958*` : nat*, `c*` : lane_($lanetype(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M))))*, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#2709, dim#2709, i#18805}((Jnn : Jnn <: lanetype), `%`_dim{i#18812}(M))))*}(`%X%`_shape{lanetype#2672, dim#2672, i#18658}((Jnn : Jnn <: lanetype), `%`_dim{i#18665}(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape{lanetype#2760, dim#2760, i#19037}((Jnn : Jnn <: lanetype), `%`_dim{i#19044}(M)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#2709, dim#2709, i#18805}((Jnn : Jnn <: lanetype), `%`_dim{i#18812}(M)), v_2)) - -- if (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_laneidx{i#18958}.0]*{i <- `i*`, i#18958 <- `i#18958*`}) + 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*`}) + -- 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!`%`_laneidx.0]*{i <- `i*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vvunop_(vectype : vectype, vvunop : vvunop, vec_ : vec_(vectype)) : vec_(vectype)* @@ -116686,199 +91937,199 @@ def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_(vectype), vec ;; ../../../../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_{lanetype#2845 : lanetype, dim#2845 : dim, i#19491 : nat, Fnn : Fnn, i#19498 : nat, M : M, v : vec_(`V128`_Vnn), lanetype#2894 : lanetype, dim#2894 : dim, i#19593 : nat, i#19600 : nat}(`%X%`_shape{lanetype#2845, dim#2845, i#19491}((Fnn : Fnn <: lanetype), `%`_dim{i#19498}(M)), `ABS`_vunop_, v) = $fvunop_(`%X%`_shape{lanetype#2894, dim#2894, i#19593}((Fnn : Fnn <: lanetype), `%`_dim{i#19600}(M)), def $fabs_, v) + 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_{lanetype#2906 : lanetype, dim#2906 : dim, i#19615 : nat, Fnn : Fnn, i#19622 : nat, M : M, v : vec_(`V128`_Vnn), lanetype#2955 : lanetype, dim#2955 : dim, i#19717 : nat, i#19724 : nat}(`%X%`_shape{lanetype#2906, dim#2906, i#19615}((Fnn : Fnn <: lanetype), `%`_dim{i#19622}(M)), `NEG`_vunop_, v) = $fvunop_(`%X%`_shape{lanetype#2955, dim#2955, i#19717}((Fnn : Fnn <: lanetype), `%`_dim{i#19724}(M)), def $fneg_, v) + 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_{lanetype#2967 : lanetype, dim#2967 : dim, i#19739 : nat, Fnn : Fnn, i#19746 : nat, M : M, v : vec_(`V128`_Vnn), lanetype#3016 : lanetype, dim#3016 : dim, i#19841 : nat, i#19848 : nat}(`%X%`_shape{lanetype#2967, dim#2967, i#19739}((Fnn : Fnn <: lanetype), `%`_dim{i#19746}(M)), `SQRT`_vunop_, v) = $fvunop_(`%X%`_shape{lanetype#3016, dim#3016, i#19841}((Fnn : Fnn <: lanetype), `%`_dim{i#19848}(M)), def $fsqrt_, v) + 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_{lanetype#3028 : lanetype, dim#3028 : dim, i#19863 : nat, Fnn : Fnn, i#19870 : nat, M : M, v : vec_(`V128`_Vnn), lanetype#3077 : lanetype, dim#3077 : dim, i#19965 : nat, i#19972 : nat}(`%X%`_shape{lanetype#3028, dim#3028, i#19863}((Fnn : Fnn <: lanetype), `%`_dim{i#19870}(M)), `CEIL`_vunop_, v) = $fvunop_(`%X%`_shape{lanetype#3077, dim#3077, i#19965}((Fnn : Fnn <: lanetype), `%`_dim{i#19972}(M)), def $fceil_, v) + 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_{lanetype#3089 : lanetype, dim#3089 : dim, i#19987 : nat, Fnn : Fnn, i#19994 : nat, M : M, v : vec_(`V128`_Vnn), lanetype#3138 : lanetype, dim#3138 : dim, i#20089 : nat, i#20096 : nat}(`%X%`_shape{lanetype#3089, dim#3089, i#19987}((Fnn : Fnn <: lanetype), `%`_dim{i#19994}(M)), `FLOOR`_vunop_, v) = $fvunop_(`%X%`_shape{lanetype#3138, dim#3138, i#20089}((Fnn : Fnn <: lanetype), `%`_dim{i#20096}(M)), def $ffloor_, v) + 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_{lanetype#3150 : lanetype, dim#3150 : dim, i#20111 : nat, Fnn : Fnn, i#20118 : nat, M : M, v : vec_(`V128`_Vnn), lanetype#3199 : lanetype, dim#3199 : dim, i#20213 : nat, i#20220 : nat}(`%X%`_shape{lanetype#3150, dim#3150, i#20111}((Fnn : Fnn <: lanetype), `%`_dim{i#20118}(M)), `TRUNC`_vunop_, v) = $fvunop_(`%X%`_shape{lanetype#3199, dim#3199, i#20213}((Fnn : Fnn <: lanetype), `%`_dim{i#20220}(M)), def $ftrunc_, v) + 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_{lanetype#3211 : lanetype, dim#3211 : dim, i#20235 : nat, Fnn : Fnn, i#20242 : nat, M : M, v : vec_(`V128`_Vnn), lanetype#3260 : lanetype, dim#3260 : dim, i#20337 : nat, i#20344 : nat}(`%X%`_shape{lanetype#3211, dim#3211, i#20235}((Fnn : Fnn <: lanetype), `%`_dim{i#20242}(M)), `NEAREST`_vunop_, v) = $fvunop_(`%X%`_shape{lanetype#3260, dim#3260, i#20337}((Fnn : Fnn <: lanetype), `%`_dim{i#20344}(M)), def $fnearest_, v) + 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_{lanetype#3272 : lanetype, dim#3272 : dim, i#20359 : nat, Jnn : Jnn, i#20366 : nat, M : M, v : vec_(`V128`_Vnn), lanetype#3308 : lanetype, dim#3308 : dim, i#20448 : nat, i#20455 : nat}(`%X%`_shape{lanetype#3272, dim#3272, i#20359}((Jnn : Jnn <: lanetype), `%`_dim{i#20366}(M)), `ABS`_vunop_, v) = $ivunop_(`%X%`_shape{lanetype#3308, dim#3308, i#20448}((Jnn : Jnn <: lanetype), `%`_dim{i#20455}(M)), def $iabs_, v) + 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_{lanetype#3320 : lanetype, dim#3320 : dim, i#20470 : nat, Jnn : Jnn, i#20477 : nat, M : M, v : vec_(`V128`_Vnn), lanetype#3356 : lanetype, dim#3356 : dim, i#20559 : nat, i#20566 : nat}(`%X%`_shape{lanetype#3320, dim#3320, i#20470}((Jnn : Jnn <: lanetype), `%`_dim{i#20477}(M)), `NEG`_vunop_, v) = $ivunop_(`%X%`_shape{lanetype#3356, dim#3356, i#20559}((Jnn : Jnn <: lanetype), `%`_dim{i#20566}(M)), def $ineg_, v) + 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_{lanetype#3368 : lanetype, dim#3368 : dim, i#20581 : nat, Jnn : Jnn, i#20588 : nat, M : M, v : vec_(`V128`_Vnn), lanetype#3404 : lanetype, dim#3404 : dim, i#20670 : nat, i#20677 : nat}(`%X%`_shape{lanetype#3368, dim#3368, i#20581}((Jnn : Jnn <: lanetype), `%`_dim{i#20588}(M)), `POPCNT`_vunop_, v) = $ivunop_(`%X%`_shape{lanetype#3404, dim#3404, i#20670}((Jnn : Jnn <: lanetype), `%`_dim{i#20677}(M)), def $ipopcnt_, v) + 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_{lanetype#3416 : lanetype, dim#3416 : dim, i#20692 : nat, Jnn : Jnn, i#20699 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#3452 : lanetype, dim#3452 : dim, i#20813 : nat, i#20820 : nat}(`%X%`_shape{lanetype#3416, dim#3416, i#20692}((Jnn : Jnn <: lanetype), `%`_dim{i#20699}(M)), `ADD`_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape{lanetype#3452, dim#3452, i#20813}((Jnn : Jnn <: lanetype), `%`_dim{i#20820}(M)), def $iadd_, v_1, v_2) + 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_{lanetype#3464 : lanetype, dim#3464 : dim, i#20845 : nat, Jnn : Jnn, i#20852 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#3500 : lanetype, dim#3500 : dim, i#20966 : nat, i#20973 : nat}(`%X%`_shape{lanetype#3464, dim#3464, i#20845}((Jnn : Jnn <: lanetype), `%`_dim{i#20852}(M)), `SUB`_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape{lanetype#3500, dim#3500, i#20966}((Jnn : Jnn <: lanetype), `%`_dim{i#20973}(M)), def $isub_, v_1, v_2) + 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_{lanetype#3512 : lanetype, dim#3512 : dim, i#20998 : nat, Jnn : Jnn, i#21005 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#3548 : lanetype, dim#3548 : dim, i#21119 : nat, i#21126 : nat}(`%X%`_shape{lanetype#3512, dim#3512, i#20998}((Jnn : Jnn <: lanetype), `%`_dim{i#21005}(M)), `MUL`_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape{lanetype#3548, dim#3548, i#21119}((Jnn : Jnn <: lanetype), `%`_dim{i#21126}(M)), def $imul_, v_1, v_2) + 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_{lanetype#3560 : lanetype, dim#3560 : dim, i#21151 : nat, Jnn : Jnn, i#21158 : nat, M : M, sx#96 : sx, sx : sx, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#3596 : lanetype, dim#3596 : dim, i#21272 : nat, i#21279 : nat}(`%X%`_shape{lanetype#3560, dim#3560, i#21151}((Jnn : Jnn <: lanetype), `%`_dim{i#21158}(M)), `ADD_SAT`_vbinop_{sx#96}(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape{lanetype#3596, dim#3596, i#21272}((Jnn : Jnn <: lanetype), `%`_dim{i#21279}(M)), def $iadd_sat_, sx, v_1, v_2) + 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_{lanetype#3608 : lanetype, dim#3608 : dim, i#21304 : nat, Jnn : Jnn, i#21311 : nat, M : M, sx#98 : sx, sx : sx, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#3644 : lanetype, dim#3644 : dim, i#21425 : nat, i#21432 : nat}(`%X%`_shape{lanetype#3608, dim#3608, i#21304}((Jnn : Jnn <: lanetype), `%`_dim{i#21311}(M)), `SUB_SAT`_vbinop_{sx#98}(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape{lanetype#3644, dim#3644, i#21425}((Jnn : Jnn <: lanetype), `%`_dim{i#21432}(M)), def $isub_sat_, sx, v_1, v_2) + 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_{lanetype#3656 : lanetype, dim#3656 : dim, i#21457 : nat, Jnn : Jnn, i#21464 : nat, M : M, sx#100 : sx, sx : sx, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#3692 : lanetype, dim#3692 : dim, i#21578 : nat, i#21585 : nat}(`%X%`_shape{lanetype#3656, dim#3656, i#21457}((Jnn : Jnn <: lanetype), `%`_dim{i#21464}(M)), `MIN`_vbinop_{sx#100}(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape{lanetype#3692, dim#3692, i#21578}((Jnn : Jnn <: lanetype), `%`_dim{i#21585}(M)), def $imin_, sx, v_1, v_2) + 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_{lanetype#3704 : lanetype, dim#3704 : dim, i#21610 : nat, Jnn : Jnn, i#21617 : nat, M : M, sx#102 : sx, sx : sx, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#3740 : lanetype, dim#3740 : dim, i#21731 : nat, i#21738 : nat}(`%X%`_shape{lanetype#3704, dim#3704, i#21610}((Jnn : Jnn <: lanetype), `%`_dim{i#21617}(M)), `MAX`_vbinop_{sx#102}(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape{lanetype#3740, dim#3740, i#21731}((Jnn : Jnn <: lanetype), `%`_dim{i#21738}(M)), def $imax_, sx, v_1, v_2) + 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_{lanetype#3752 : lanetype, dim#3752 : dim, i#21763 : nat, Jnn : Jnn, i#21770 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#3788 : lanetype, dim#3788 : dim, i#21884 : nat, i#21891 : nat}(`%X%`_shape{lanetype#3752, dim#3752, i#21763}((Jnn : Jnn <: lanetype), `%`_dim{i#21770}(M)), `AVGRU`_vbinop_, v_1, v_2) = $ivbinopsx_(`%X%`_shape{lanetype#3788, dim#3788, i#21884}((Jnn : Jnn <: lanetype), `%`_dim{i#21891}(M)), def $iavgr_, `U`_sx, v_1, v_2) + 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_{lanetype#3800 : lanetype, dim#3800 : dim, i#21916 : nat, Jnn : Jnn, i#21923 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#3836 : lanetype, dim#3836 : dim, i#22037 : nat, i#22044 : nat}(`%X%`_shape{lanetype#3800, dim#3800, i#21916}((Jnn : Jnn <: lanetype), `%`_dim{i#21923}(M)), `Q15MULR_SATS`_vbinop_, v_1, v_2) = $ivbinopsx_(`%X%`_shape{lanetype#3836, dim#3836, i#22037}((Jnn : Jnn <: lanetype), `%`_dim{i#22044}(M)), def $iq15mulr_sat_, `S`_sx, v_1, v_2) + 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_{lanetype#3848 : lanetype, dim#3848 : dim, i#22069 : nat, Jnn : Jnn, i#22076 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#3884 : lanetype, dim#3884 : dim, i#22190 : nat, i#22197 : nat}(`%X%`_shape{lanetype#3848, dim#3848, i#22069}((Jnn : Jnn <: lanetype), `%`_dim{i#22076}(M)), `RELAXED_Q15MULRS`_vbinop_, v_1, v_2) = $ivbinopsxnd_(`%X%`_shape{lanetype#3884, dim#3884, i#22190}((Jnn : Jnn <: lanetype), `%`_dim{i#22197}(M)), def $irelaxed_q15mulr_, `S`_sx, v_1, v_2) + 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_{lanetype#3896 : lanetype, dim#3896 : dim, i#22222 : nat, Fnn : Fnn, i#22229 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#3945 : lanetype, dim#3945 : dim, i#22356 : nat, i#22363 : nat}(`%X%`_shape{lanetype#3896, dim#3896, i#22222}((Fnn : Fnn <: lanetype), `%`_dim{i#22229}(M)), `ADD`_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape{lanetype#3945, dim#3945, i#22356}((Fnn : Fnn <: lanetype), `%`_dim{i#22363}(M)), def $fadd_, v_1, v_2) + 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_{lanetype#3957 : lanetype, dim#3957 : dim, i#22388 : nat, Fnn : Fnn, i#22395 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4006 : lanetype, dim#4006 : dim, i#22522 : nat, i#22529 : nat}(`%X%`_shape{lanetype#3957, dim#3957, i#22388}((Fnn : Fnn <: lanetype), `%`_dim{i#22395}(M)), `SUB`_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape{lanetype#4006, dim#4006, i#22522}((Fnn : Fnn <: lanetype), `%`_dim{i#22529}(M)), def $fsub_, v_1, v_2) + 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_{lanetype#4018 : lanetype, dim#4018 : dim, i#22554 : nat, Fnn : Fnn, i#22561 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4067 : lanetype, dim#4067 : dim, i#22688 : nat, i#22695 : nat}(`%X%`_shape{lanetype#4018, dim#4018, i#22554}((Fnn : Fnn <: lanetype), `%`_dim{i#22561}(M)), `MUL`_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape{lanetype#4067, dim#4067, i#22688}((Fnn : Fnn <: lanetype), `%`_dim{i#22695}(M)), def $fmul_, v_1, v_2) + 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_{lanetype#4079 : lanetype, dim#4079 : dim, i#22720 : nat, Fnn : Fnn, i#22727 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4128 : lanetype, dim#4128 : dim, i#22854 : nat, i#22861 : nat}(`%X%`_shape{lanetype#4079, dim#4079, i#22720}((Fnn : Fnn <: lanetype), `%`_dim{i#22727}(M)), `DIV`_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape{lanetype#4128, dim#4128, i#22854}((Fnn : Fnn <: lanetype), `%`_dim{i#22861}(M)), def $fdiv_, v_1, v_2) + 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_{lanetype#4140 : lanetype, dim#4140 : dim, i#22886 : nat, Fnn : Fnn, i#22893 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4189 : lanetype, dim#4189 : dim, i#23020 : nat, i#23027 : nat}(`%X%`_shape{lanetype#4140, dim#4140, i#22886}((Fnn : Fnn <: lanetype), `%`_dim{i#22893}(M)), `MIN`_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape{lanetype#4189, dim#4189, i#23020}((Fnn : Fnn <: lanetype), `%`_dim{i#23027}(M)), def $fmin_, v_1, v_2) + 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_{lanetype#4201 : lanetype, dim#4201 : dim, i#23052 : nat, Fnn : Fnn, i#23059 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4250 : lanetype, dim#4250 : dim, i#23186 : nat, i#23193 : nat}(`%X%`_shape{lanetype#4201, dim#4201, i#23052}((Fnn : Fnn <: lanetype), `%`_dim{i#23059}(M)), `MAX`_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape{lanetype#4250, dim#4250, i#23186}((Fnn : Fnn <: lanetype), `%`_dim{i#23193}(M)), def $fmax_, v_1, v_2) + 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_{lanetype#4262 : lanetype, dim#4262 : dim, i#23218 : nat, Fnn : Fnn, i#23225 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4311 : lanetype, dim#4311 : dim, i#23352 : nat, i#23359 : nat}(`%X%`_shape{lanetype#4262, dim#4262, i#23218}((Fnn : Fnn <: lanetype), `%`_dim{i#23225}(M)), `PMIN`_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape{lanetype#4311, dim#4311, i#23352}((Fnn : Fnn <: lanetype), `%`_dim{i#23359}(M)), def $fpmin_, v_1, v_2) + 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_{lanetype#4323 : lanetype, dim#4323 : dim, i#23384 : nat, Fnn : Fnn, i#23391 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4372 : lanetype, dim#4372 : dim, i#23518 : nat, i#23525 : nat}(`%X%`_shape{lanetype#4323, dim#4323, i#23384}((Fnn : Fnn <: lanetype), `%`_dim{i#23391}(M)), `PMAX`_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape{lanetype#4372, dim#4372, i#23518}((Fnn : Fnn <: lanetype), `%`_dim{i#23525}(M)), def $fpmax_, v_1, v_2) + 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_{lanetype#4384 : lanetype, dim#4384 : dim, i#23550 : nat, Fnn : Fnn, i#23557 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4433 : lanetype, dim#4433 : dim, i#23684 : nat, i#23691 : nat}(`%X%`_shape{lanetype#4384, dim#4384, i#23550}((Fnn : Fnn <: lanetype), `%`_dim{i#23557}(M)), `RELAXED_MIN`_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape{lanetype#4433, dim#4433, i#23684}((Fnn : Fnn <: lanetype), `%`_dim{i#23691}(M)), def $frelaxed_min_, v_1, v_2) + 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_{lanetype#4445 : lanetype, dim#4445 : dim, i#23716 : nat, Fnn : Fnn, i#23723 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4494 : lanetype, dim#4494 : dim, i#23850 : nat, i#23857 : nat}(`%X%`_shape{lanetype#4445, dim#4445, i#23716}((Fnn : Fnn <: lanetype), `%`_dim{i#23723}(M)), `RELAXED_MAX`_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape{lanetype#4494, dim#4494, i#23850}((Fnn : Fnn <: lanetype), `%`_dim{i#23857}(M)), def $frelaxed_max_, v_1, v_2) + 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_{lanetype#4506 : lanetype, dim#4506 : dim, i#23882 : nat, Jnn : Jnn, i#23889 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), v_3 : vec_(`V128`_Vnn), lanetype#4542 : lanetype, dim#4542 : dim, i#24035 : nat, i#24042 : nat}(`%X%`_shape{lanetype#4506, dim#4506, i#23882}((Jnn : Jnn <: lanetype), `%`_dim{i#23889}(M)), `RELAXED_LANESELECT`_vternop_, v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape{lanetype#4542, dim#4542, i#24035}((Jnn : Jnn <: lanetype), `%`_dim{i#24042}(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + 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_{lanetype#4554 : lanetype, dim#4554 : dim, i#24077 : nat, Fnn : Fnn, i#24084 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), v_3 : vec_(`V128`_Vnn), lanetype#4603 : lanetype, dim#4603 : dim, i#24243 : nat, i#24250 : nat}(`%X%`_shape{lanetype#4554, dim#4554, i#24077}((Fnn : Fnn <: lanetype), `%`_dim{i#24084}(M)), `RELAXED_MADD`_vternop_, v_1, v_2, v_3) = $fvternop_(`%X%`_shape{lanetype#4603, dim#4603, i#24243}((Fnn : Fnn <: lanetype), `%`_dim{i#24250}(M)), def $frelaxed_madd_, v_1, v_2, v_3) + 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_{lanetype#4615 : lanetype, dim#4615 : dim, i#24285 : nat, Fnn : Fnn, i#24292 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), v_3 : vec_(`V128`_Vnn), lanetype#4664 : lanetype, dim#4664 : dim, i#24451 : nat, i#24458 : nat}(`%X%`_shape{lanetype#4615, dim#4615, i#24285}((Fnn : Fnn <: lanetype), `%`_dim{i#24292}(M)), `RELAXED_NMADD`_vternop_, v_1, v_2, v_3) = $fvternop_(`%X%`_shape{lanetype#4664, dim#4664, i#24451}((Fnn : Fnn <: lanetype), `%`_dim{i#24458}(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) + 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_{lanetype#4676 : lanetype, dim#4676 : dim, i#24493 : nat, Jnn : Jnn, i#24500 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4688 : lanetype, dim#4688 : dim, i#24539 : nat, i#24546 : nat}(`%X%`_shape{lanetype#4676, dim#4676, i#24493}((Jnn : Jnn <: lanetype), `%`_dim{i#24500}(M)), `EQ`_vrelop_, v_1, v_2) = $ivrelop_(`%X%`_shape{lanetype#4688, dim#4688, i#24539}((Jnn : Jnn <: lanetype), `%`_dim{i#24546}(M)), def $ieq_, v_1, v_2) + 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_{lanetype#4700 : lanetype, dim#4700 : dim, i#24571 : nat, Jnn : Jnn, i#24578 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4712 : lanetype, dim#4712 : dim, i#24617 : nat, i#24624 : nat}(`%X%`_shape{lanetype#4700, dim#4700, i#24571}((Jnn : Jnn <: lanetype), `%`_dim{i#24578}(M)), `NE`_vrelop_, v_1, v_2) = $ivrelop_(`%X%`_shape{lanetype#4712, dim#4712, i#24617}((Jnn : Jnn <: lanetype), `%`_dim{i#24624}(M)), def $ine_, v_1, v_2) + 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_{lanetype#4724 : lanetype, dim#4724 : dim, i#24649 : nat, Jnn : Jnn, i#24656 : nat, M : M, sx#104 : sx, sx : sx, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4736 : lanetype, dim#4736 : dim, i#24695 : nat, i#24702 : nat}(`%X%`_shape{lanetype#4724, dim#4724, i#24649}((Jnn : Jnn <: lanetype), `%`_dim{i#24656}(M)), `LT`_vrelop_{sx#104}(sx), v_1, v_2) = $ivrelopsx_(`%X%`_shape{lanetype#4736, dim#4736, i#24695}((Jnn : Jnn <: lanetype), `%`_dim{i#24702}(M)), def $ilt_, sx, v_1, v_2) + 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_{lanetype#4748 : lanetype, dim#4748 : dim, i#24727 : nat, Jnn : Jnn, i#24734 : nat, M : M, sx#106 : sx, sx : sx, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4760 : lanetype, dim#4760 : dim, i#24773 : nat, i#24780 : nat}(`%X%`_shape{lanetype#4748, dim#4748, i#24727}((Jnn : Jnn <: lanetype), `%`_dim{i#24734}(M)), `GT`_vrelop_{sx#106}(sx), v_1, v_2) = $ivrelopsx_(`%X%`_shape{lanetype#4760, dim#4760, i#24773}((Jnn : Jnn <: lanetype), `%`_dim{i#24780}(M)), def $igt_, sx, v_1, v_2) + 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_{lanetype#4772 : lanetype, dim#4772 : dim, i#24805 : nat, Jnn : Jnn, i#24812 : nat, M : M, sx#108 : sx, sx : sx, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4784 : lanetype, dim#4784 : dim, i#24851 : nat, i#24858 : nat}(`%X%`_shape{lanetype#4772, dim#4772, i#24805}((Jnn : Jnn <: lanetype), `%`_dim{i#24812}(M)), `LE`_vrelop_{sx#108}(sx), v_1, v_2) = $ivrelopsx_(`%X%`_shape{lanetype#4784, dim#4784, i#24851}((Jnn : Jnn <: lanetype), `%`_dim{i#24858}(M)), def $ile_, sx, v_1, v_2) + 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_{lanetype#4796 : lanetype, dim#4796 : dim, i#24883 : nat, Jnn : Jnn, i#24890 : nat, M : M, sx#110 : sx, sx : sx, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4808 : lanetype, dim#4808 : dim, i#24929 : nat, i#24936 : nat}(`%X%`_shape{lanetype#4796, dim#4796, i#24883}((Jnn : Jnn <: lanetype), `%`_dim{i#24890}(M)), `GE`_vrelop_{sx#110}(sx), v_1, v_2) = $ivrelopsx_(`%X%`_shape{lanetype#4808, dim#4808, i#24929}((Jnn : Jnn <: lanetype), `%`_dim{i#24936}(M)), def $ige_, sx, v_1, v_2) + 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_{lanetype#4820 : lanetype, dim#4820 : dim, i#24961 : nat, Fnn : Fnn, i#24968 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4845 : lanetype, dim#4845 : dim, i#25020 : nat, i#25027 : nat}(`%X%`_shape{lanetype#4820, dim#4820, i#24961}((Fnn : Fnn <: lanetype), `%`_dim{i#24968}(M)), `EQ`_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape{lanetype#4845, dim#4845, i#25020}((Fnn : Fnn <: lanetype), `%`_dim{i#25027}(M)), def $feq_, v_1, v_2) + 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_{lanetype#4857 : lanetype, dim#4857 : dim, i#25052 : nat, Fnn : Fnn, i#25059 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4882 : lanetype, dim#4882 : dim, i#25111 : nat, i#25118 : nat}(`%X%`_shape{lanetype#4857, dim#4857, i#25052}((Fnn : Fnn <: lanetype), `%`_dim{i#25059}(M)), `NE`_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape{lanetype#4882, dim#4882, i#25111}((Fnn : Fnn <: lanetype), `%`_dim{i#25118}(M)), def $fne_, v_1, v_2) + 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_{lanetype#4894 : lanetype, dim#4894 : dim, i#25143 : nat, Fnn : Fnn, i#25150 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4919 : lanetype, dim#4919 : dim, i#25202 : nat, i#25209 : nat}(`%X%`_shape{lanetype#4894, dim#4894, i#25143}((Fnn : Fnn <: lanetype), `%`_dim{i#25150}(M)), `LT`_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape{lanetype#4919, dim#4919, i#25202}((Fnn : Fnn <: lanetype), `%`_dim{i#25209}(M)), def $flt_, v_1, v_2) + 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_{lanetype#4931 : lanetype, dim#4931 : dim, i#25234 : nat, Fnn : Fnn, i#25241 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4956 : lanetype, dim#4956 : dim, i#25293 : nat, i#25300 : nat}(`%X%`_shape{lanetype#4931, dim#4931, i#25234}((Fnn : Fnn <: lanetype), `%`_dim{i#25241}(M)), `GT`_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape{lanetype#4956, dim#4956, i#25293}((Fnn : Fnn <: lanetype), `%`_dim{i#25300}(M)), def $fgt_, v_1, v_2) + 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_{lanetype#4968 : lanetype, dim#4968 : dim, i#25325 : nat, Fnn : Fnn, i#25332 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#4993 : lanetype, dim#4993 : dim, i#25384 : nat, i#25391 : nat}(`%X%`_shape{lanetype#4968, dim#4968, i#25325}((Fnn : Fnn <: lanetype), `%`_dim{i#25332}(M)), `LE`_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape{lanetype#4993, dim#4993, i#25384}((Fnn : Fnn <: lanetype), `%`_dim{i#25391}(M)), def $fle_, v_1, v_2) + 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_{lanetype#5005 : lanetype, dim#5005 : dim, i#25416 : nat, Fnn : Fnn, i#25423 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#5030 : lanetype, dim#5030 : dim, i#25475 : nat, i#25482 : nat}(`%X%`_shape{lanetype#5005, dim#5005, i#25416}((Fnn : Fnn <: lanetype), `%`_dim{i#25423}(M)), `GE`_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape{lanetype#5030, dim#5030, i#25475}((Fnn : Fnn <: lanetype), `%`_dim{i#25482}(M)), def $fge_, v_1, v_2) + 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__{lanetype#5186 : lanetype, dim#5186 : dim, i#26001 : nat, Jnn_1 : Jnn, i#26008 : nat, M_1 : M, lanetype#5198 : lanetype, dim#5198 : dim, i#26013 : nat, Jnn_2 : Jnn, i#26020 : nat, M_2 : M, half#5 : half, sx#114 : sx, half : half, sx : sx, c_1 : lane_($lanetype(`%X%`_shape{lanetype#5186, dim#5186, i#26001}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#26008}(M_1)))), c : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))}(`%X%`_shape{lanetype#5186, dim#5186, i#26001}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#26008}(M_1)), `%X%`_shape{lanetype#5198, dim#5198, i#26013}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#26020}(M_2)), `EXTEND`_vcvtop__{half#5, sx#114}(half, sx), c_1) = [c] + 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] -- 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__{lanetype#5222 : lanetype, dim#5222 : dim, i#26109 : nat, Jnn_1 : Jnn, i#26116 : nat, M_1 : M, lanetype#5234 : lanetype, dim#5234 : dim, i#26121 : nat, Fnn_2 : Fnn, i#26128 : nat, M_2 : M, `half?#5` : half?, sx#116 : sx, `half?` : half?, sx : sx, c_1 : lane_($lanetype(`%X%`_shape{lanetype#5222, dim#5222, i#26109}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#26116}(M_1)))), c : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))}(`%X%`_shape{lanetype#5222, dim#5222, i#26109}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#26116}(M_1)), `%X%`_shape{lanetype#5234, dim#5234, i#26121}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#26128}(M_2)), `CONVERT`_vcvtop__{`half?#5`, sx#116}(half?{half <- `half?`}, sx), c_1) = [c] + 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] -- 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__{lanetype#5273 : lanetype, dim#5273 : dim, i#26208 : nat, Fnn_1 : Fnn, i#26215 : nat, M_1 : M, lanetype#5285 : lanetype, dim#5285 : dim, i#26220 : nat, Inn_2 : Inn, i#26227 : nat, M_2 : M, sx#148 : sx, `zero?#39` : zero?, sx : sx, `zero?` : zero?, c_1 : lane_($lanetype(`%X%`_shape{lanetype#5273, dim#5273, i#26208}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26215}(M_1)))), `c?` : iN($lsizenn2((Inn_2 : Inn <: lanetype)))?}(`%X%`_shape{lanetype#5273, dim#5273, i#26208}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26215}(M_1)), `%X%`_shape{lanetype#5285, dim#5285, i#26220}((Inn_2 : Inn <: lanetype), `%`_dim{i#26227}(M_2)), `TRUNC_SAT`_vcvtop__{sx#148, `zero?#39`}(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) + 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 : Inn <: lanetype)))?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : Inn <: lanetype), `%`_dim(M_2)), `TRUNC_SAT`_vcvtop__(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : Inn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{lanetype#5361 : lanetype, dim#5361 : dim, i#26384 : nat, Fnn_1 : Fnn, i#26391 : nat, M_1 : M, lanetype#5373 : lanetype, dim#5373 : dim, i#26396 : nat, Inn_2 : Inn, i#26403 : nat, M_2 : M, sx#180 : sx, `zero?#71` : zero?, sx : sx, `zero?` : zero?, c_1 : lane_($lanetype(`%X%`_shape{lanetype#5361, dim#5361, i#26384}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26391}(M_1)))), `c?` : iN($lsizenn2((Inn_2 : Inn <: lanetype)))?}(`%X%`_shape{lanetype#5361, dim#5361, i#26384}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26391}(M_1)), `%X%`_shape{lanetype#5373, dim#5373, i#26396}((Inn_2 : Inn <: lanetype), `%`_dim{i#26403}(M_2)), `RELAXED_TRUNC`_vcvtop__{sx#180, `zero?#71`}(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) + 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 : Inn <: lanetype)))?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : Inn <: lanetype), `%`_dim(M_2)), `RELAXED_TRUNC`_vcvtop__(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : Inn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{lanetype#5449 : lanetype, dim#5449 : dim, i#26560 : nat, Fnn_1 : Fnn, i#26567 : nat, M_1 : M, lanetype#5461 : lanetype, dim#5461 : dim, i#26572 : nat, Fnn_2 : Fnn, i#26579 : nat, M_2 : M, zero#125 : zero, c_1 : lane_($lanetype(`%X%`_shape{lanetype#5449, dim#5449, i#26560}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26567}(M_1)))), `c*` : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))*}(`%X%`_shape{lanetype#5449, dim#5449, i#26560}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26567}(M_1)), `%X%`_shape{lanetype#5461, dim#5461, i#26572}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#26579}(M_2)), `DEMOTE`_vcvtop__{zero#125}(`ZERO`_zero), c_1) = c*{c <- `c*`} + 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*`} -- 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__{lanetype#5536 : lanetype, dim#5536 : dim, i#26683 : nat, Fnn_1 : Fnn, i#26690 : nat, M_1 : M, lanetype#5548 : lanetype, dim#5548 : dim, i#26695 : nat, Fnn_2 : Fnn, i#26702 : nat, M_2 : M, c_1 : lane_($lanetype(`%X%`_shape{lanetype#5536, dim#5536, i#26683}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26690}(M_1)))), `c*` : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))*}(`%X%`_shape{lanetype#5536, dim#5536, i#26683}((Fnn_1 : Fnn <: lanetype), `%`_dim{i#26690}(M_1)), `%X%`_shape{lanetype#5548, dim#5548, i#26695}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#26702}(M_2)), `PROMOTELOW`_vcvtop__, c_1) = c*{c <- `c*`} + 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*`} -- 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__(shape_1, shape_2), vec_ : vec_(`V128`_Vnn)) : vec_(`V128`_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vcvtop__{lanetype#5623 : lanetype, dim#5623 : dim, i#26806 : nat, Lnn_1 : Lnn, i#26813 : nat, M : M, lanetype#5635 : lanetype, dim#5635 : dim, i#26818 : nat, Lnn_2 : Lnn, i#26825 : nat, vcvtop : vcvtop__(`%X%`_shape{lanetype#5623, dim#5623, i#26806}(Lnn_1, `%`_dim{i#26813}(M)), `%X%`_shape{lanetype#5635, dim#5635, i#26818}(Lnn_2, `%`_dim{i#26825}(M))), v_1 : vec_(`V128`_Vnn), v : vec_(`V128`_Vnn), lanetype#5671 : lanetype, dim#5671 : dim, i#26866 : nat, i#26873 : nat, lanetype#5683 : lanetype, dim#5683 : dim, i#26878 : nat, i#26885 : nat, lanetype#5711 : lanetype, dim#5711 : dim, i#26906 : nat, i#26913 : nat, lanetype#5723 : lanetype, dim#5723 : dim, i#26918 : nat, i#26925 : nat, lanetype#5751 : lanetype, dim#5751 : dim, i#26946 : nat, i#26953 : nat, `c**` : lane_(Lnn_2)**, `dim#5867*` : dim*, `dim#5879*` : dim*, `i#27120*` : nat*, `i#27127*` : nat*, `i#27132*` : nat*, `i#27139*` : nat*, `lanetype#5867*` : lanetype*, `lanetype#5879*` : lanetype*, `dim#5914*` : dim*, `i#27181*` : nat*, `i#27188*` : nat*, `lanetype#5914*` : lanetype*, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#5751, dim#5751, i#26946}(Lnn_1, `%`_dim{i#26953}(M))))*}(`%X%`_shape{lanetype#5623, dim#5623, i#26806}(Lnn_1, `%`_dim{i#26813}(M)), `%X%`_shape{lanetype#5635, dim#5635, i#26818}(Lnn_2, `%`_dim{i#26825}(M)), vcvtop, v_1) = v - -- if (($halfop(`%X%`_shape{lanetype#5671, dim#5671, i#26866}(Lnn_1, `%`_dim{i#26873}(M)), `%X%`_shape{lanetype#5683, dim#5683, i#26878}(Lnn_2, `%`_dim{i#26885}(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape{lanetype#5711, dim#5711, i#26906}(Lnn_1, `%`_dim{i#26913}(M)), `%X%`_shape{lanetype#5723, dim#5723, i#26918}(Lnn_2, `%`_dim{i#26925}(M)), vcvtop) = ?())) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#5751, dim#5751, i#26946}(Lnn_1, `%`_dim{i#26953}(M)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape{lanetype#5867, dim#5867, i#27120}(Lnn_1, `%`_dim{i#27127}(M)), `%X%`_shape{lanetype#5879, dim#5879, i#27132}(Lnn_2, `%`_dim{i#27139}(M)), vcvtop, c_1)*{c_1 <- `c_1*`, dim#5867 <- `dim#5867*`, dim#5879 <- `dim#5879*`, i#27120 <- `i#27120*`, i#27127 <- `i#27127*`, i#27132 <- `i#27132*`, i#27139 <- `i#27139*`, lanetype#5867 <- `lanetype#5867*`, lanetype#5879 <- `lanetype#5879*`})) - -- if (v <- $inv_lanes_(`%X%`_shape{lanetype#5914, dim#5914, i#27181}(Lnn_2, `%`_dim{i#27188}(M)), c*{c <- `c*`})*{`c*` <- `c**`, dim#5914 <- `dim#5914*`, i#27181 <- `i#27181*`, i#27188 <- `i#27188*`, lanetype#5914 <- `lanetype#5914*`}) + 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) = ?())) + -- 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*`})) + -- 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__{lanetype#5937 : lanetype, dim#5937 : dim, i#27248 : nat, Lnn_1 : Lnn, i#27255 : nat, M_1 : M, lanetype#5949 : lanetype, dim#5949 : dim, i#27260 : nat, Lnn_2 : Lnn, i#27267 : nat, M_2 : M, vcvtop : vcvtop__(`%X%`_shape{lanetype#5937, dim#5937, i#27248}(Lnn_1, `%`_dim{i#27255}(M_1)), `%X%`_shape{lanetype#5949, dim#5949, i#27260}(Lnn_2, `%`_dim{i#27267}(M_2))), v_1 : vec_(`V128`_Vnn), v : vec_(`V128`_Vnn), lanetype#6025 : lanetype, dim#6025 : dim, i#27348 : nat, i#27355 : nat, lanetype#6037 : lanetype, dim#6037 : dim, i#27360 : nat, i#27367 : nat, half : half, lanetype#6065 : lanetype, dim#6065 : dim, i#27388 : nat, i#27395 : nat, `c**` : lane_(Lnn_2)**, `dim#6181*` : dim*, `dim#6193*` : dim*, `i#27562*` : nat*, `i#27569*` : nat*, `i#27574*` : nat*, `i#27581*` : nat*, `lanetype#6181*` : lanetype*, `lanetype#6193*` : lanetype*, `dim#6228*` : dim*, `i#27623*` : nat*, `i#27630*` : nat*, `lanetype#6228*` : lanetype*, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#6065, dim#6065, i#27388}(Lnn_1, `%`_dim{i#27395}(M_1))))*}(`%X%`_shape{lanetype#5937, dim#5937, i#27248}(Lnn_1, `%`_dim{i#27255}(M_1)), `%X%`_shape{lanetype#5949, dim#5949, i#27260}(Lnn_2, `%`_dim{i#27267}(M_2)), vcvtop, v_1) = v - -- if ($halfop(`%X%`_shape{lanetype#6025, dim#6025, i#27348}(Lnn_1, `%`_dim{i#27355}(M_1)), `%X%`_shape{lanetype#6037, dim#6037, i#27360}(Lnn_2, `%`_dim{i#27367}(M_2)), vcvtop) = ?(half)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#6065, dim#6065, i#27388}(Lnn_1, `%`_dim{i#27395}(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{lanetype#6181, dim#6181, i#27562}(Lnn_1, `%`_dim{i#27569}(M_1)), `%X%`_shape{lanetype#6193, dim#6193, i#27574}(Lnn_2, `%`_dim{i#27581}(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`, dim#6181 <- `dim#6181*`, dim#6193 <- `dim#6193*`, i#27562 <- `i#27562*`, i#27569 <- `i#27569*`, i#27574 <- `i#27574*`, i#27581 <- `i#27581*`, lanetype#6181 <- `lanetype#6181*`, lanetype#6193 <- `lanetype#6193*`})) - -- if (v <- $inv_lanes_(`%X%`_shape{lanetype#6228, dim#6228, i#27623}(Lnn_2, `%`_dim{i#27630}(M_2)), c*{c <- `c*`})*{`c*` <- `c**`, dim#6228 <- `dim#6228*`, i#27623 <- `i#27623*`, i#27630 <- `i#27630*`, lanetype#6228 <- `lanetype#6228*`}) + 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)) + -- 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*`})) + -- 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__{lanetype#6251 : lanetype, dim#6251 : dim, i#27690 : nat, Lnn_1 : Lnn, i#27697 : nat, M_1 : M, lanetype#6263 : lanetype, dim#6263 : dim, i#27702 : nat, Lnn_2 : Lnn, i#27709 : nat, M_2 : M, vcvtop : vcvtop__(`%X%`_shape{lanetype#6251, dim#6251, i#27690}(Lnn_1, `%`_dim{i#27697}(M_1)), `%X%`_shape{lanetype#6263, dim#6263, i#27702}(Lnn_2, `%`_dim{i#27709}(M_2))), v_1 : vec_(`V128`_Vnn), v : vec_(`V128`_Vnn), lanetype#6299 : lanetype, dim#6299 : dim, i#27750 : nat, i#27757 : nat, lanetype#6311 : lanetype, dim#6311 : dim, i#27762 : nat, i#27769 : nat, lanetype#6339 : lanetype, dim#6339 : dim, i#27790 : nat, i#27797 : nat, `c**` : lane_(Lnn_2)**, `dim#6501*` : dim*, `dim#6513*` : dim*, `i#28022*` : nat*, `i#28029*` : nat*, `i#28034*` : nat*, `i#28041*` : nat*, `lanetype#6501*` : lanetype*, `lanetype#6513*` : lanetype*, `dim#6548*` : dim*, `i#28083*` : nat*, `i#28090*` : nat*, `lanetype#6548*` : lanetype*, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#6339, dim#6339, i#27790}(Lnn_1, `%`_dim{i#27797}(M_1))))*}(`%X%`_shape{lanetype#6251, dim#6251, i#27690}(Lnn_1, `%`_dim{i#27697}(M_1)), `%X%`_shape{lanetype#6263, dim#6263, i#27702}(Lnn_2, `%`_dim{i#27709}(M_2)), vcvtop, v_1) = v - -- if ($zeroop(`%X%`_shape{lanetype#6299, dim#6299, i#27750}(Lnn_1, `%`_dim{i#27757}(M_1)), `%X%`_shape{lanetype#6311, dim#6311, i#27762}(Lnn_2, `%`_dim{i#27769}(M_2)), vcvtop) = ?(`ZERO`_zero)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#6339, dim#6339, i#27790}(Lnn_1, `%`_dim{i#27797}(M_1)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape{lanetype#6501, dim#6501, i#28022}(Lnn_1, `%`_dim{i#28029}(M_1)), `%X%`_shape{lanetype#6513, dim#6513, i#28034}(Lnn_2, `%`_dim{i#28041}(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`, dim#6501 <- `dim#6501*`, dim#6513 <- `dim#6513*`, i#28022 <- `i#28022*`, i#28029 <- `i#28029*`, i#28034 <- `i#28034*`, i#28041 <- `i#28041*`, lanetype#6501 <- `lanetype#6501*`, lanetype#6513 <- `lanetype#6513*`} ++ [$zero(Lnn_2)]^M_1{})) - -- if (v <- $inv_lanes_(`%X%`_shape{lanetype#6548, dim#6548, i#28083}(Lnn_2, `%`_dim{i#28090}(M_2)), c*{c <- `c*`})*{`c*` <- `c**`, dim#6548 <- `dim#6548*`, i#28083 <- `i#28083*`, i#28090 <- `i#28090*`, lanetype#6548 <- `lanetype#6548*`}) + 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)) + -- 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{})) + -- 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_{shape#421 : shape, Jnn#119 : Jnn, lanetype#5042 : lanetype, dim#5042 : dim, i#25507 : nat, Jnn : Jnn, i#25514 : nat, M : M, v : vec_(`V128`_Vnn), i : u32, lanetype#5054 : lanetype, dim#5054 : dim, i#25553 : nat, i#25560 : nat}(`%`_ishape{shape#421, Jnn#119}(`%X%`_shape{lanetype#5042, dim#5042, i#25507}((Jnn : Jnn <: lanetype), `%`_dim{i#25514}(M))), `SHL`_vshiftop_, v, i) = $ivshiftop_(`%X%`_shape{lanetype#5054, dim#5054, i#25553}((Jnn : Jnn <: lanetype), `%`_dim{i#25560}(M)), def $ishl_, v, i) + 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_{shape#433 : shape, Jnn#123 : Jnn, lanetype#5066 : lanetype, dim#5066 : dim, i#25585 : nat, Jnn : Jnn, i#25592 : nat, M : M, sx#112 : sx, sx : sx, v : vec_(`V128`_Vnn), i : u32, lanetype#5078 : lanetype, dim#5078 : dim, i#25631 : nat, i#25638 : nat}(`%`_ishape{shape#433, Jnn#123}(`%X%`_shape{lanetype#5066, dim#5066, i#25585}((Jnn : Jnn <: lanetype), `%`_dim{i#25592}(M))), `SHR`_vshiftop_{sx#112}(sx), v, i) = $ivshiftopsx_(`%X%`_shape{lanetype#5078, dim#5078, i#25631}((Jnn : Jnn <: lanetype), `%`_dim{i#25638}(M)), def $ishr_, sx, v, i) + 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_{shape#445 : shape, Jnn#127 : Jnn, lanetype#5090 : lanetype, dim#5090 : dim, i#25663 : nat, Jnn : Jnn, i#25670 : nat, M : M, v : vec_(`V128`_Vnn), lanetype#5102 : lanetype, dim#5102 : dim, i#25697 : nat, i#25704 : nat}(`%`_ishape{shape#445, Jnn#127}(`%X%`_shape{lanetype#5090, dim#5090, i#25663}((Jnn : Jnn <: lanetype), `%`_dim{i#25670}(M))), v) = $ivbitmaskop_(`%X%`_shape{lanetype#5102, dim#5102, i#25697}((Jnn : Jnn <: lanetype), `%`_dim{i#25704}(M)), v) + 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_{shape#457 : shape, lanetype#5114 : lanetype, dim#5114 : dim, i#25719 : nat, i#25726 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#5126 : lanetype, dim#5126 : dim, i#25765 : nat, i#25772 : nat}(`%`_bshape{shape#457}(`%X%`_shape{lanetype#5114, dim#5114, i#25719}(`I8`_lanetype, `%`_dim{i#25726}(M))), `SWIZZLE`_vswizzlop_, v_1, v_2) = $ivswizzlop_(`%X%`_shape{lanetype#5126, dim#5126, i#25765}(`I8`_lanetype, `%`_dim{i#25772}(M)), def $iswizzle_lane_, v_1, v_2) + 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_{shape#469 : shape, lanetype#5138 : lanetype, dim#5138 : dim, i#25797 : nat, i#25804 : nat, M : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#5150 : lanetype, dim#5150 : dim, i#25843 : nat, i#25850 : nat}(`%`_bshape{shape#469}(`%X%`_shape{lanetype#5138, dim#5138, i#25797}(`I8`_lanetype, `%`_dim{i#25804}(M))), `RELAXED_SWIZZLE`_vswizzlop_, v_1, v_2) = $ivswizzlop_(`%X%`_shape{lanetype#5150, dim#5150, i#25843}(`I8`_lanetype, `%`_dim{i#25850}(M)), def $irelaxed_swizzle_lane_, v_1, v_2) + 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_{shape#481 : shape, lanetype#5162 : lanetype, dim#5162 : dim, i#25875 : nat, i#25882 : nat, M : M, `i*` : laneidx*, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#5174 : lanetype, dim#5174 : dim, i#25946 : nat, i#25953 : nat}(`%`_bshape{shape#481}(`%X%`_shape{lanetype#5162, dim#5162, i#25875}(`I8`_lanetype, `%`_dim{i#25882}(M))), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape{lanetype#5174, dim#5174, i#25946}(`I8`_lanetype, `%`_dim{i#25953}(M)), i*{i <- `i*`}, v_1, v_2) + 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__{lanetype#6571 : lanetype, dim#6571 : dim, i#28150 : nat, Jnn_1 : Jnn, i#28157 : nat, M_1 : M, lanetype#6583 : lanetype, dim#6583 : dim, i#28162 : nat, Jnn_2 : Jnn, i#28169 : nat, M_2 : M, sx : sx, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), v : vec_(`V128`_Vnn), lanetype#6595 : lanetype, dim#6595 : dim, i#28198 : nat, i#28205 : nat, lanetype#6620 : lanetype, dim#6620 : dim, i#28284 : nat, i#28291 : nat, `c'_1*` : iN($lsize((Jnn_2 : Jnn <: lanetype)))*, `c'_2*` : iN($lsize((Jnn_2 : Jnn <: lanetype)))*, lanetype#6647 : lanetype, dim#6647 : dim, i#28450 : nat, i#28457 : nat, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#6595, dim#6595, i#28198}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28205}(M_1))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#6620, dim#6620, i#28284}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28291}(M_1))))*}(`%X%`_shape{lanetype#6571, dim#6571, i#28150}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28157}(M_1)), `%X%`_shape{lanetype#6583, dim#6583, i#28162}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28169}(M_2)), sx, v_1, v_2) = v - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#6595, dim#6595, i#28198}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28205}(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#6620, dim#6620, i#28284}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28291}(M_1)), v_2)) + 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 + -- 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, 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, c_2)*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape{lanetype#6647, dim#6647, i#28450}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28457}(M_2)), c'_1*{c'_1 <- `c'_1*`} ++ c'_2*{c'_2 <- `c'_2*`})) + -- if (v = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), c'_1*{c'_1 <- `c'_1*`} ++ c'_2*{c'_2 <- `c'_2*`})) ;; ../../../../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)*, `i#29492*` : nat*, `i#29500*` : nat*, `j_1*` : N*, `j_2*` : N*, `i#29472*` : nat*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN{i#29492}(j_1), `%`_iN{i#29500}(j_2))*{i#29492 <- `i#29492*`, i#29500 <- `i#29500*`, 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{i#29472}.0*{i <- `i*`, i#29472 <- `i#29472*`}) + 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__{lanetype#6690 : lanetype, dim#6690 : dim, i#28642 : nat, Jnn_1 : Jnn, i#28649 : nat, M_1 : M, lanetype#6702 : lanetype, dim#6702 : dim, i#28654 : nat, Jnn_2 : Jnn, i#28661 : nat, M_2 : M, def $f_(N : N, iN(N)*) : iN(N)*, sx : sx, v_1 : vec_(`V128`_Vnn), lanetype#6740 : lanetype, dim#6740 : dim, i#28862 : nat, i#28869 : nat, `c*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, lanetype#6714 : lanetype, dim#6714 : dim, i#28678 : nat, i#28685 : nat, `c'_1*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#6714, dim#6714, i#28678}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28685}(M_1))))*}(`%X%`_shape{lanetype#6690, dim#6690, i#28642}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28649}(M_1)), `%X%`_shape{lanetype#6702, dim#6702, i#28654}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28661}(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape{lanetype#6740, dim#6740, i#28862}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28869}(M_2)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#6714, dim#6714, i#28678}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28685}(M_1)), v_1)) + 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*`}) + -- 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, 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__(ishape_1, ishape_2), vec_ : vec_(`V128`_Vnn)) : vec_(`V128`_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextunop__{shape#493 : shape, Jnn#131 : Jnn, lanetype#6864 : lanetype, dim#6864 : dim, i#29941 : nat, Jnn_1 : Jnn, i#29948 : nat, M_1 : M, shape#505 : shape, Jnn#135 : Jnn, lanetype#6876 : lanetype, dim#6876 : dim, i#29953 : nat, Jnn_2 : Jnn, i#29960 : nat, M_2 : M, sx#182 : sx, sx : sx, v_1 : vec_(`V128`_Vnn), lanetype#6888 : lanetype, dim#6888 : dim, i#29987 : nat, i#29994 : nat, lanetype#6900 : lanetype, dim#6900 : dim, i#29999 : nat, i#30006 : nat}(`%`_ishape{shape#493, Jnn#131}(`%X%`_shape{lanetype#6864, dim#6864, i#29941}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29948}(M_1))), `%`_ishape{shape#505, Jnn#135}(`%X%`_shape{lanetype#6876, dim#6876, i#29953}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#29960}(M_2))), `EXTADD_PAIRWISE`_vextunop__{sx#182}(sx), v_1) = $ivextunop__(`%X%`_shape{lanetype#6888, dim#6888, i#29987}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29994}(M_1)), `%X%`_shape{lanetype#6900, dim#6900, i#29999}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30006}(M_2)), def $ivadd_pairwise_, sx, v_1) + 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)* @@ -116895,9 +92146,9 @@ def $ivdot_sat_(N : N, iN(N)*, iN(N)*) : iN(N)* ;; ../../../../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__{lanetype#6764 : lanetype, dim#6764 : dim, i#28935 : nat, Jnn_1 : Jnn, i#28942 : nat, M_1 : M, lanetype#6776 : lanetype, dim#6776 : dim, i#28947 : nat, Jnn_2 : Jnn, i#28954 : nat, 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), lanetype#6840 : lanetype, dim#6840 : dim, i#29380 : nat, i#29387 : nat, `c*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, lanetype#6788 : lanetype, dim#6788 : dim, i#29007 : nat, i#29014 : nat, i#29034 : nat, i#29044 : nat, lanetype#6813 : lanetype, dim#6813 : dim, i#29113 : nat, i#29120 : nat, i#29140 : nat, i#29150 : nat, `c'_1*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c'_2*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape{lanetype#6788, dim#6788, i#29007}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29014}(M_1))))*, `c_2*` : lane_($lanetype(`%X%`_shape{lanetype#6813, dim#6813, i#29113}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29120}(M_1))))*}(`%X%`_shape{lanetype#6764, dim#6764, i#28935}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28942}(M_1)), `%X%`_shape{lanetype#6776, dim#6776, i#28947}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28954}(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape{lanetype#6840, dim#6840, i#29380}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#29387}(M_2)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape{lanetype#6788, dim#6788, i#29007}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29014}(M_1)), v_1)[i!`%`_laneidx{i#29034}.0 : k!`%`_laneidx{i#29044}.0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape{lanetype#6813, dim#6813, i#29113}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29120}(M_1)), v_2)[i!`%`_laneidx{i#29140}.0 : k!`%`_laneidx{i#29150}.0]) + 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*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)[i!`%`_laneidx.0 : k!`%`_laneidx.0]) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)[i!`%`_laneidx.0 : k!`%`_laneidx.0]) -- if (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*`}) -- if (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*`}) -- if (c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) @@ -116910,45 +92161,45 @@ def $ivmul_(N : N, iN(N)*, iN(N)*) : iN(N)* ;; ../../../../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__{shape#517 : shape, Jnn#139 : Jnn, lanetype#6912 : lanetype, dim#6912 : dim, i#30021 : nat, Jnn_1 : Jnn, i#30028 : nat, M_1 : M, shape#529 : shape, Jnn#143 : Jnn, lanetype#6924 : lanetype, dim#6924 : dim, i#30033 : nat, Jnn_2 : Jnn, i#30040 : nat, M_2 : M, half#7 : half, sx#184 : sx, half : half, sx : sx, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#6936 : lanetype, dim#6936 : dim, i#30079 : nat, i#30086 : nat, lanetype#6948 : lanetype, dim#6948 : dim, i#30091 : nat, i#30098 : nat, i#30118 : nat, i#30140 : nat}(`%`_ishape{shape#517, Jnn#139}(`%X%`_shape{lanetype#6912, dim#6912, i#30021}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30028}(M_1))), `%`_ishape{shape#529, Jnn#143}(`%X%`_shape{lanetype#6924, dim#6924, i#30033}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30040}(M_2))), `EXTMUL`_vextbinop__{half#7, sx#184}(half, sx), v_1, v_2) = $ivextbinop__(`%X%`_shape{lanetype#6936, dim#6936, i#30079}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30086}(M_1)), `%X%`_shape{lanetype#6948, dim#6948, i#30091}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30098}(M_2)), def $ivmul_, sx, sx, `%`_laneidx{i#30118}($half(half, 0, M_2)), `%`_laneidx{i#30140}(M_2), v_1, v_2) + 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__{shape#541 : shape, Jnn#147 : Jnn, lanetype#6960 : lanetype, dim#6960 : dim, i#30165 : nat, Jnn_1 : Jnn, i#30172 : nat, M_1 : M, shape#553 : shape, Jnn#151 : Jnn, lanetype#6972 : lanetype, dim#6972 : dim, i#30177 : nat, Jnn_2 : Jnn, i#30184 : nat, M_2 : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#6984 : lanetype, dim#6984 : dim, i#30223 : nat, i#30230 : nat, lanetype#6996 : lanetype, dim#6996 : dim, i#30235 : nat, i#30242 : nat, i#30262 : nat, i#30284 : nat}(`%`_ishape{shape#541, Jnn#147}(`%X%`_shape{lanetype#6960, dim#6960, i#30165}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30172}(M_1))), `%`_ishape{shape#553, Jnn#151}(`%X%`_shape{lanetype#6972, dim#6972, i#30177}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30184}(M_2))), `DOTS`_vextbinop__, v_1, v_2) = $ivextbinop__(`%X%`_shape{lanetype#6984, dim#6984, i#30223}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30230}(M_1)), `%X%`_shape{lanetype#6996, dim#6996, i#30235}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30242}(M_2)), def $ivdot_, `S`_sx, `S`_sx, `%`_laneidx{i#30262}(0), `%`_laneidx{i#30284}(M_1), v_1, v_2) + 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__{shape#565 : shape, Jnn#155 : Jnn, lanetype#7008 : lanetype, dim#7008 : dim, i#30309 : nat, Jnn_1 : Jnn, i#30316 : nat, M_1 : M, shape#577 : shape, Jnn#159 : Jnn, lanetype#7020 : lanetype, dim#7020 : dim, i#30321 : nat, Jnn_2 : Jnn, i#30328 : nat, M_2 : M, v_1 : vec_(`V128`_Vnn), v_2 : vec_(`V128`_Vnn), lanetype#7032 : lanetype, dim#7032 : dim, i#30367 : nat, i#30374 : nat, lanetype#7044 : lanetype, dim#7044 : dim, i#30379 : nat, i#30386 : nat, i#30412 : nat, i#30434 : nat}(`%`_ishape{shape#565, Jnn#155}(`%X%`_shape{lanetype#7008, dim#7008, i#30309}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30316}(M_1))), `%`_ishape{shape#577, Jnn#159}(`%X%`_shape{lanetype#7020, dim#7020, i#30321}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30328}(M_2))), `RELAXED_DOTS`_vextbinop__, v_1, v_2) = $ivextbinop__(`%X%`_shape{lanetype#7032, dim#7032, i#30367}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30374}(M_1)), `%X%`_shape{lanetype#7044, dim#7044, i#30379}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30386}(M_2)), def $ivdot_sat_, `S`_sx, $relaxed2($R_idot, syntax sx, `S`_sx, `U`_sx), `%`_laneidx{i#30412}(0), `%`_laneidx{i#30434}(M_1), v_1, v_2) + 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__{shape#589 : shape, Jnn#163 : Jnn, lanetype#7056 : lanetype, dim#7056 : dim, i#30459 : nat, Jnn_1 : Jnn, i#30466 : nat, M_1 : M, shape#601 : shape, Jnn#167 : Jnn, lanetype#7068 : lanetype, dim#7068 : dim, i#30471 : nat, Jnn_2 : Jnn, i#30478 : nat, 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), shape#613 : shape, Jnn#171 : Jnn, lanetype#7080 : lanetype, dim#7080 : dim, i#30519 : nat, i#30526 : nat, shape#625 : shape, Jnn#175 : Jnn, lanetype#7092 : lanetype, dim#7092 : dim, i#30531 : nat, i#30538 : nat, c'' : vec_(`V128`_Vnn), shape#652 : shape, Jnn#179 : Jnn, lanetype#7149 : lanetype, dim#7149 : dim, i#30650 : nat, i#30657 : nat, shape#664 : shape, Jnn#183 : Jnn, lanetype#7161 : lanetype, dim#7161 : dim, i#30662 : nat, i#30669 : nat, sx#216 : sx, lanetype#7218 : lanetype, dim#7218 : dim, i#30771 : nat, i#30778 : nat}(`%`_ishape{shape#589, Jnn#163}(`%X%`_shape{lanetype#7056, dim#7056, i#30459}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30466}(M_1))), `%`_ishape{shape#601, Jnn#167}(`%X%`_shape{lanetype#7068, dim#7068, i#30471}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30478}(M_2))), `RELAXED_DOT_ADDS`_vextternop__, c_1, c_2, c_3) = c + 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)))) -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape{shape#613, Jnn#171}(`%X%`_shape{lanetype#7080, dim#7080, i#30519}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#30526}(M_1))), `%`_ishape{shape#625, Jnn#175}(`%X%`_shape{lanetype#7092, dim#7092, i#30531}((Jnn : Jnn <: lanetype), `%`_dim{i#30538}(M))), `RELAXED_DOTS`_vextbinop__, c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape{shape#652, Jnn#179}(`%X%`_shape{lanetype#7149, dim#7149, i#30650}((Jnn : Jnn <: lanetype), `%`_dim{i#30657}(M))), `%`_ishape{shape#664, Jnn#183}(`%X%`_shape{lanetype#7161, dim#7161, i#30662}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30669}(M_2))), `EXTADD_PAIRWISE`_vextunop__{sx#216}(`S`_sx), c')) - -- if (c <- $vbinop_(`%X%`_shape{lanetype#7218, dim#7218, i#30771}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#30778}(M_2)), `ADD`_vbinop_, c'', c_3)) + -- if (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)) + -- if (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')) + -- 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}(numtype : numtype, num_(numtype)) + | `CONST`(numtype : numtype, num_(numtype)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax vec = - | `VCONST`{vectype : vectype}(vectype : vectype, vec_(vectype)) + | `VCONST`(vectype : vectype, 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) + | `REF.I31_NUM`(u31 : u31) + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(addrref : addrref) + | `REF.NULL`(heaptype : heaptype) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax result = - | `_VALS`{`val*` : val*}(`val*` : val*) - | `(REF.EXN_ADDR%)THROW_REF`{exnaddr : exnaddr}(exnaddr : exnaddr) + | `_VALS`(`val*` : val*) + | `(REF.EXN_ADDR%)THROW_REF`(exnaddr : exnaddr) | `TRAP` ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -116957,118 +92208,118 @@ syntax hostfunc = ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax funccode = - | `FUNC`{typeidx : typeidx, `local*` : local*, expr : expr}(typeidx : typeidx, `local*` : local*, expr : expr) + | `FUNC`(typeidx : typeidx, `local*` : local*, expr : expr) | `...` ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax taginst = { - `TYPE`{tagtype : tagtype} tagtype + `TYPE` tagtype } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax globalinst = { - `TYPE`{globaltype : globaltype} globaltype, - `VALUE`{val : val} val + `TYPE` globaltype , + `VALUE` val } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax meminst = { - `TYPE`{memtype : memtype} memtype, - `BYTES`{`byte*` : byte*} byte* + `TYPE` memtype , + `BYTES` byte* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax tableinst = { - `TYPE`{tabletype : tabletype} tabletype, - `REFS`{`ref*` : ref*} ref* + `TYPE` tabletype , + `REFS` ref* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax funcinst = { - `TYPE`{deftype : deftype} deftype, - `MODULE`{moduleinst : moduleinst} moduleinst, - `CODE`{funccode : funccode} funccode + `TYPE` deftype , + `MODULE` moduleinst , + `CODE` funccode } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax datainst = { - `BYTES`{`byte*` : byte*} byte* + `BYTES` byte* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax eleminst = { - `TYPE`{elemtype : elemtype} elemtype, - `REFS`{`ref*` : ref*} ref* + `TYPE` elemtype , + `REFS` ref* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax packval = - | `PACK`{packtype : packtype}(packtype : packtype, iN($psizenn(packtype))) + | `PACK`(packtype : packtype, iN($psizenn(packtype))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax fieldval = - | `CONST`{numtype : numtype}(numtype : numtype, num_(numtype)) - | `VCONST`{vectype : vectype}(vectype : vectype, vec_(vectype)) - | `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) - | `PACK`{packtype : packtype}(packtype : packtype, iN($psizenn(packtype))) + | `CONST`(numtype : numtype, num_(numtype)) + | `VCONST`(vectype : vectype, vec_(vectype)) + | `REF.I31_NUM`(u31 : u31) + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(addrref : addrref) + | `REF.NULL`(heaptype : heaptype) + | `PACK`(packtype : packtype, iN($psizenn(packtype))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax structinst = { - `TYPE`{deftype : deftype} deftype, - `FIELDS`{`fieldval*` : fieldval*} fieldval* + `TYPE` deftype , + `FIELDS` fieldval* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax arrayinst = { - `TYPE`{deftype : deftype} deftype, - `FIELDS`{`fieldval*` : fieldval*} fieldval* + `TYPE` deftype , + `FIELDS` fieldval* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax exninst = { - `TAG`{tagaddr : tagaddr} tagaddr, - `FIELDS`{`val*` : val*} val* + `TAG` tagaddr , + `FIELDS` 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* + `TAGS` taginst* , + `GLOBALS` globalinst* , + `MEMS` meminst* , + `TABLES` tableinst* , + `FUNCS` funcinst* , + `DATAS` datainst* , + `ELEMS` eleminst* , + `STRUCTS` structinst* , + `ARRAYS` arrayinst* , + `EXNS` exninst* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax state = - | `%;%`{store : store, frame : frame}(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*) + | `%;%`(state : state, `instr*` : instr*) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $Ki : nat @@ -117080,14 +92331,14 @@ 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, numtype#33 : numtype, i : num_(`I32`_numtype), packtype#1 : packtype}((packtype : packtype <: storagetype), `CONST`_val{numtype#33}(`I32`_numtype, i)) = `PACK`_fieldval{packtype#1}(packtype, $wrap__(32, $psize(packtype), i)) + 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, packtype#3 : packtype, i : iN($psizenn(packtype)), numtype#35 : numtype}((packtype : packtype <: storagetype), ?(sx), `PACK`_fieldval{packtype#3}(packtype, i)) = `CONST`_val{numtype#35}(`I32`_numtype, $extend__($psize(packtype), 32, sx, i)) + 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 { @@ -117097,7 +92348,7 @@ 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{tagaddr#1 : tagaddr, a : addr, `xa*` : externaddr*}([`TAG`_externaddr{tagaddr#1}(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tagsxa(xa*{xa <- `xa*`}) + 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*`}) -- otherwise @@ -117111,7 +92362,7 @@ 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{globaladdr#1 : globaladdr, a : addr, `xa*` : externaddr*}([`GLOBAL`_externaddr{globaladdr#1}(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $globalsxa(xa*{xa <- `xa*`}) + 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*`}) -- otherwise @@ -117125,7 +92376,7 @@ 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{memaddr#1 : memaddr, a : addr, `xa*` : externaddr*}([`MEM`_externaddr{memaddr#1}(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $memsxa(xa*{xa <- `xa*`}) + 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*`}) -- otherwise @@ -117139,7 +92390,7 @@ 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{tableaddr#1 : tableaddr, a : addr, `xa*` : externaddr*}([`TABLE`_externaddr{tableaddr#1}(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tablesxa(xa*{xa <- `xa*`}) + 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*`}) -- otherwise @@ -117153,7 +92404,7 @@ 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{funcaddr#1 : funcaddr, a : addr, `xa*` : externaddr*}([`FUNC`_externaddr{funcaddr#1}(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $funcsxa(xa*{xa <- `xa*`}) + 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*`}) -- otherwise @@ -117162,212 +92413,212 @@ def $funcsxa(externaddr*) : funcaddr* ;; ../../../../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{store#11 : store, frame#11 : frame, s : store, f : frame}(`%;%`_state{store#11, frame#11}(s, f)) = s + 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{store#23 : store, frame#23 : frame, s : store, f : frame}(`%;%`_state{store#23, frame#23}(s, f)) = f + 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{store#35 : store, frame#35 : frame, s : store, f : frame, moduleinst#2 : moduleinst, `tagaddr*#2` : tagaddr*}(`%;%`_state{store#35, frame#35}(s, f)) = f.`MODULE`_frame{moduleinst#2}.`TAGS`_moduleinst{`tagaddr*#2`} + 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{store#47 : store, frame#47 : frame, s : store, f : frame, moduleinst#3 : moduleinst}(`%;%`_state{store#47, frame#47}(s, f)) = f.`MODULE`_frame{moduleinst#3} + 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{store#59 : store, frame#59 : frame, s : store, f : frame, `taginst*#2` : taginst*}(`%;%`_state{store#59, frame#59}(s, f)) = s.`TAGS`_store{`taginst*#2`} + 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{store#71 : store, frame#71 : frame, s : store, f : frame, `globalinst*#2` : globalinst*}(`%;%`_state{store#71, frame#71}(s, f)) = s.`GLOBALS`_store{`globalinst*#2`} + 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{store#83 : store, frame#83 : frame, s : store, f : frame, `meminst*#2` : meminst*}(`%;%`_state{store#83, frame#83}(s, f)) = s.`MEMS`_store{`meminst*#2`} + 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{store#95 : store, frame#95 : frame, s : store, f : frame, `tableinst*#2` : tableinst*}(`%;%`_state{store#95, frame#95}(s, f)) = s.`TABLES`_store{`tableinst*#2`} + 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{store#107 : store, frame#107 : frame, s : store, f : frame, `funcinst*#2` : funcinst*}(`%;%`_state{store#107, frame#107}(s, f)) = s.`FUNCS`_store{`funcinst*#2`} + 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{store#119 : store, frame#119 : frame, s : store, f : frame, `datainst*#2` : datainst*}(`%;%`_state{store#119, frame#119}(s, f)) = s.`DATAS`_store{`datainst*#2`} + 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{store#131 : store, frame#131 : frame, s : store, f : frame, `eleminst*#2` : eleminst*}(`%;%`_state{store#131, frame#131}(s, f)) = s.`ELEMS`_store{`eleminst*#2`} + 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{store#143 : store, frame#143 : frame, s : store, f : frame, `structinst*#2` : structinst*}(`%;%`_state{store#143, frame#143}(s, f)) = s.`STRUCTS`_store{`structinst*#2`} + 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{store#155 : store, frame#155 : frame, s : store, f : frame, `arrayinst*#2` : arrayinst*}(`%;%`_state{store#155, frame#155}(s, f)) = s.`ARRAYS`_store{`arrayinst*#2`} + 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{store#167 : store, frame#167 : frame, s : store, f : frame, `exninst*#2` : exninst*}(`%;%`_state{store#167, frame#167}(s, f)) = s.`EXNS`_store{`exninst*#2`} + 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{store#179 : store, frame#179 : frame, s : store, f : frame, x : idx, moduleinst#4 : moduleinst, `deftype*#74` : deftype*, i#30957 : nat}(`%;%`_state{store#179, frame#179}(s, f), x) = f.`MODULE`_frame{moduleinst#4}.`TYPES`_moduleinst{`deftype*#74`}[x!`%`_idx{i#30957}.0] + 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{store#191 : store, frame#191 : frame, s : store, f : frame, x : idx, `taginst*#3` : taginst*, moduleinst#5 : moduleinst, `tagaddr*#3` : tagaddr*, i#30979 : nat}(`%;%`_state{store#191, frame#191}(s, f), x) = s.`TAGS`_store{`taginst*#3`}[f.`MODULE`_frame{moduleinst#5}.`TAGS`_moduleinst{`tagaddr*#3`}[x!`%`_idx{i#30979}.0]] + 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{store#203 : store, frame#203 : frame, s : store, f : frame, x : idx, `globalinst*#3` : globalinst*, moduleinst#6 : moduleinst, `globaladdr*#1` : globaladdr*, i#31001 : nat}(`%;%`_state{store#203, frame#203}(s, f), x) = s.`GLOBALS`_store{`globalinst*#3`}[f.`MODULE`_frame{moduleinst#6}.`GLOBALS`_moduleinst{`globaladdr*#1`}[x!`%`_idx{i#31001}.0]] + 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{store#215 : store, frame#215 : frame, s : store, f : frame, x : idx, `meminst*#3` : meminst*, moduleinst#7 : moduleinst, `memaddr*#1` : memaddr*, i#31023 : nat}(`%;%`_state{store#215, frame#215}(s, f), x) = s.`MEMS`_store{`meminst*#3`}[f.`MODULE`_frame{moduleinst#7}.`MEMS`_moduleinst{`memaddr*#1`}[x!`%`_idx{i#31023}.0]] + 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{store#227 : store, frame#227 : frame, s : store, f : frame, x : idx, `tableinst*#3` : tableinst*, moduleinst#8 : moduleinst, `tableaddr*#1` : tableaddr*, i#31045 : nat}(`%;%`_state{store#227, frame#227}(s, f), x) = s.`TABLES`_store{`tableinst*#3`}[f.`MODULE`_frame{moduleinst#8}.`TABLES`_moduleinst{`tableaddr*#1`}[x!`%`_idx{i#31045}.0]] + 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{store#239 : store, frame#239 : frame, s : store, f : frame, x : idx, `funcinst*#3` : funcinst*, moduleinst#9 : moduleinst, `funcaddr*#1` : funcaddr*, i#31067 : nat}(`%;%`_state{store#239, frame#239}(s, f), x) = s.`FUNCS`_store{`funcinst*#3`}[f.`MODULE`_frame{moduleinst#9}.`FUNCS`_moduleinst{`funcaddr*#1`}[x!`%`_idx{i#31067}.0]] + 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{store#251 : store, frame#251 : frame, s : store, f : frame, x : idx, `datainst*#3` : datainst*, moduleinst#10 : moduleinst, `dataaddr*#1` : dataaddr*, i#31089 : nat}(`%;%`_state{store#251, frame#251}(s, f), x) = s.`DATAS`_store{`datainst*#3`}[f.`MODULE`_frame{moduleinst#10}.`DATAS`_moduleinst{`dataaddr*#1`}[x!`%`_idx{i#31089}.0]] + 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{store#263 : store, frame#263 : frame, s : store, f : frame, x : idx, `eleminst*#3` : eleminst*, moduleinst#11 : moduleinst, `elemaddr*#1` : elemaddr*, i#31111 : nat}(`%;%`_state{store#263, frame#263}(s, f), x) = s.`ELEMS`_store{`eleminst*#3`}[f.`MODULE`_frame{moduleinst#11}.`ELEMS`_moduleinst{`elemaddr*#1`}[x!`%`_idx{i#31111}.0]] + 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{store#275 : store, frame#275 : frame, s : store, f : frame, x : idx, `val?*#2` : val?*, i#31143 : nat}(`%;%`_state{store#275, frame#275}(s, f), x) = f.`LOCALS`_frame{`val?*#2`}[x!`%`_idx{i#31143}.0] + 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{store#287 : store, frame#287 : frame, s : store, f : frame, x : idx, v : val, store#299 : store, frame#299 : frame, `val?*#3` : val?*, i#31165 : nat}(`%;%`_state{store#287, frame#287}(s, f), x, v) = `%;%`_state{store#299, frame#299}(s, f[`LOCALS`_frame{`val?*#3`}[x!`%`_idx{i#31165}.0] = ?(v)]) + 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{store#311 : store, frame#311 : frame, s : store, f : frame, x : idx, v : val, store#323 : store, frame#323 : frame, `globalinst*#4` : globalinst*, moduleinst#12 : moduleinst, `globaladdr*#2` : globaladdr*, i#31187 : nat, val#1 : val}(`%;%`_state{store#311, frame#311}(s, f), x, v) = `%;%`_state{store#323, frame#323}(s[`GLOBALS`_store{`globalinst*#4`}[f.`MODULE`_frame{moduleinst#12}.`GLOBALS`_moduleinst{`globaladdr*#2`}[x!`%`_idx{i#31187}.0]].`VALUE`_globalinst{val#1} = v], f) + 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{store#335 : store, frame#335 : frame, s : store, f : frame, x : idx, i : nat, r : ref, store#347 : store, frame#347 : frame, `tableinst*#4` : tableinst*, moduleinst#13 : moduleinst, `tableaddr*#2` : tableaddr*, i#31209 : nat, `ref*#1` : ref*}(`%;%`_state{store#335, frame#335}(s, f), x, i, r) = `%;%`_state{store#347, frame#347}(s[`TABLES`_store{`tableinst*#4`}[f.`MODULE`_frame{moduleinst#13}.`TABLES`_moduleinst{`tableaddr*#2`}[x!`%`_idx{i#31209}.0]].`REFS`_tableinst{`ref*#1`}[i] = r], f) + 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{store#359 : store, frame#359 : frame, s : store, f : frame, x : idx, ti : tableinst, store#371 : store, frame#371 : frame, `tableinst*#5` : tableinst*, moduleinst#14 : moduleinst, `tableaddr*#3` : tableaddr*, i#31231 : nat}(`%;%`_state{store#359, frame#359}(s, f), x, ti) = `%;%`_state{store#371, frame#371}(s[`TABLES`_store{`tableinst*#5`}[f.`MODULE`_frame{moduleinst#14}.`TABLES`_moduleinst{`tableaddr*#3`}[x!`%`_idx{i#31231}.0]] = ti], f) + 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{store#383 : store, frame#383 : frame, s : store, f : frame, x : idx, i : nat, j : nat, `b*` : byte*, store#395 : store, frame#395 : frame, `meminst*#4` : meminst*, moduleinst#15 : moduleinst, `memaddr*#2` : memaddr*, i#31265 : nat, `byte*#1845` : byte*}(`%;%`_state{store#383, frame#383}(s, f), x, i, j, b*{b <- `b*`}) = `%;%`_state{store#395, frame#395}(s[`MEMS`_store{`meminst*#4`}[f.`MODULE`_frame{moduleinst#15}.`MEMS`_moduleinst{`memaddr*#2`}[x!`%`_idx{i#31265}.0]].`BYTES`_meminst{`byte*#1845`}[i : j] = b*{b <- `b*`}], f) + 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{store#407 : store, frame#407 : frame, s : store, f : frame, x : idx, mi : meminst, store#419 : store, frame#419 : frame, `meminst*#5` : meminst*, moduleinst#16 : moduleinst, `memaddr*#3` : memaddr*, i#31299 : nat}(`%;%`_state{store#407, frame#407}(s, f), x, mi) = `%;%`_state{store#419, frame#419}(s[`MEMS`_store{`meminst*#5`}[f.`MODULE`_frame{moduleinst#16}.`MEMS`_moduleinst{`memaddr*#3`}[x!`%`_idx{i#31299}.0]] = mi], f) + 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{store#431 : store, frame#431 : frame, s : store, f : frame, x : idx, `r*` : ref*, store#443 : store, frame#443 : frame, `eleminst*#4` : eleminst*, moduleinst#17 : moduleinst, `elemaddr*#2` : elemaddr*, i#31321 : nat, `ref*#2` : ref*}(`%;%`_state{store#431, frame#431}(s, f), x, r*{r <- `r*`}) = `%;%`_state{store#443, frame#443}(s[`ELEMS`_store{`eleminst*#4`}[f.`MODULE`_frame{moduleinst#17}.`ELEMS`_moduleinst{`elemaddr*#2`}[x!`%`_idx{i#31321}.0]].`REFS`_eleminst{`ref*#2`} = r*{r <- `r*`}], f) + 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{store#455 : store, frame#455 : frame, s : store, f : frame, x : idx, `b*` : byte*, store#467 : store, frame#467 : frame, `datainst*#4` : datainst*, moduleinst#18 : moduleinst, `dataaddr*#2` : dataaddr*, i#31355 : nat, `byte*#1846` : byte*}(`%;%`_state{store#455, frame#455}(s, f), x, b*{b <- `b*`}) = `%;%`_state{store#467, frame#467}(s[`DATAS`_store{`datainst*#4`}[f.`MODULE`_frame{moduleinst#18}.`DATAS`_moduleinst{`dataaddr*#2`}[x!`%`_idx{i#31355}.0]].`BYTES`_datainst{`byte*#1846`} = b*{b <- `b*`}], f) + 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{store#479 : store, frame#479 : frame, s : store, f : frame, a : addr, i : nat, fv : fieldval, store#491 : store, frame#491 : frame, `structinst*#3` : structinst*, `fieldval*#1` : fieldval*}(`%;%`_state{store#479, frame#479}(s, f), a, i, fv) = `%;%`_state{store#491, frame#491}(s[`STRUCTS`_store{`structinst*#3`}[a].`FIELDS`_structinst{`fieldval*#1`}[i] = fv], f) + 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{store#503 : store, frame#503 : frame, s : store, f : frame, a : addr, i : nat, fv : fieldval, store#515 : store, frame#515 : frame, `arrayinst*#3` : arrayinst*, `fieldval*#2` : fieldval*}(`%;%`_state{store#503, frame#503}(s, f), a, i, fv) = `%;%`_state{store#515, frame#515}(s[`ARRAYS`_store{`arrayinst*#3`}[a].`FIELDS`_arrayinst{`fieldval*#2`}[i] = fv], f) + 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{store#527 : store, frame#527 : frame, s : store, f : frame, `si*` : structinst*, store#539 : store, frame#539 : frame, `structinst*#4` : structinst*}(`%;%`_state{store#527, frame#527}(s, f), si*{si <- `si*`}) = `%;%`_state{store#539, frame#539}(s[`STRUCTS`_store{`structinst*#4`} =++ si*{si <- `si*`}], f) + 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{store#551 : store, frame#551 : frame, s : store, f : frame, `ai*` : arrayinst*, store#563 : store, frame#563 : frame, `arrayinst*#4` : arrayinst*}(`%;%`_state{store#551, frame#551}(s, f), ai*{ai <- `ai*`}) = `%;%`_state{store#563, frame#563}(s[`ARRAYS`_store{`arrayinst*#4`} =++ ai*{ai <- `ai*`}], f) + 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{store#575 : store, frame#575 : frame, s : store, f : frame, `exn*` : exninst*, store#587 : store, frame#587 : frame, `exninst*#3` : exninst*}(`%;%`_state{store#575, frame#575}(s, f), exn*{exn <- `exn*`}) = `%;%`_state{store#587, frame#587}(s[`EXNS`_store{`exninst*#3`} =++ exn*{exn <- `exn*`}], f) + 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, tabletype#875 : tabletype, addrtype#1027 : addrtype, limits#1027 : limits, reftype#3401 : reftype, at : addrtype, u64#361 : u64, `u64?#359` : u64?, i : u64, `j?` : u64?, rt : reftype, `ref*#3` : ref*, `r'*` : ref*, tabletype#876 : tabletype, addrtype#1039 : addrtype, limits#1039 : limits, reftype#3413 : reftype, u64#373 : u64, `u64?#371` : u64?, i' : u64, `ref*#4` : ref*, i#31449 : nat, `i#31467?` : nat?, `i#31477?` : nat?}(tableinst, n, r) = tableinst' - -- if (tableinst = {`TYPE`{tabletype#875} `%%%`_tabletype{addrtype#1027, limits#1027, reftype#3401}(at, `[%..%]`_limits{u64#361, `u64?#359`}(i, j?{j <- `j?`}), rt), `REFS`{`ref*#3`} r'*{r' <- `r'*`}}) - -- if (tableinst' = {`TYPE`{tabletype#876} `%%%`_tabletype{addrtype#1039, limits#1039, reftype#3413}(at, `[%..%]`_limits{u64#373, `u64?#371`}(i', j?{j <- `j?`}), rt), `REFS`{`ref*#4`} r'*{r' <- `r'*`} ++ r^n{}}) - -- if (i'!`%`_u64{i#31449}.0 = (|r'*{r' <- `r'*`}| + n)) - -- (if (i'!`%`_u64{i#31467}.0 <= j!`%`_u64{i#31477}.0))?{i#31467 <- `i#31467?`, i#31477 <- `i#31477?`, j <- `j?`} + 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' + -- 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 (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, memtype#525 : memtype, addrtype#1051 : addrtype, limits#1051 : limits, at : addrtype, u64#385 : u64, `u64?#383` : u64?, i : u64, `j?` : u64?, `byte*#1847` : byte*, `b*` : byte*, memtype#526 : memtype, addrtype#1063 : addrtype, limits#1063 : limits, u64#397 : u64, `u64?#395` : u64?, i' : u64, `byte*#1848` : byte*, `i#31599*` : nat*, i#31609 : nat, `i#31627?` : nat?, `i#31637?` : nat?}(meminst, n) = meminst' - -- if (meminst = {`TYPE`{memtype#525} `%%PAGE`_memtype{addrtype#1051, limits#1051}(at, `[%..%]`_limits{u64#385, `u64?#383`}(i, j?{j <- `j?`})), `BYTES`{`byte*#1847`} b*{b <- `b*`}}) - -- if (meminst' = {`TYPE`{memtype#526} `%%PAGE`_memtype{addrtype#1063, limits#1063}(at, `[%..%]`_limits{u64#397, `u64?#395`}(i', j?{j <- `j?`})), `BYTES`{`byte*#1848`} b*{b <- `b*`} ++ `%`_byte{i#31599}(0)^(n * (64 * $Ki)){i#31599 <- `i#31599*`}}) - -- if ((i'!`%`_u64{i#31609}.0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) - -- (if (i'!`%`_u64{i#31627}.0 <= j!`%`_u64{i#31637}.0))?{i#31627 <- `i#31627?`, i#31637 <- `i#31637?`, j <- `j?`} + def $growmem{meminst : meminst, n : n, meminst' : meminst, at : addrtype, i : u64, `j?` : u64?, `b*` : byte*, i' : u64}(meminst, n) = meminst' + -- 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 ((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, numtype#51 : numtype, nt : numtype, c : num_(nt)}: - `%|-%:%`(s, `CONST`_num{numtype#51}(nt, c), nt) + 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, vectype#54 : vectype, vt : vectype, c : vec_(vt)}: - `%|-%:%`(s, `VCONST`_vec{vectype#54}(vt, c), vt) + rule _{s : store, vt : vectype, c : vec_(vt)}: + `%|-%:%`(s, `VCONST`_vec(vt, c), vt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { @@ -117375,48 +92626,48 @@ 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, heaptype#1049 : heaptype, ht : heaptype, `null?#1051` : null?, heaptype#1061 : heaptype, ht' : heaptype, `deftype*#75` : deftype*, `subtype*#18` : subtype*, `tagtype*#19` : tagtype*, `globaltype*#20` : globaltype*, `memtype*#34` : memtype*, `tabletype*#27` : tabletype*, `deftype*#76` : deftype*, `datatype*#19` : datatype*, `elemtype*#19` : elemtype*, `localtype*#22` : localtype*, `resulttype*#30` : resulttype*, `resulttype?#27` : resulttype?, `funcidx*#56` : funcidx*}: - `%|-%:%`(s, `REF.NULL`_ref{heaptype#1049}(ht), `REF`_reftype{`null?#1051`, heaptype#1061}(?(`NULL`_null), ht')) - -- Heaptype_sub: `%|-%<:%`({`TYPES`{`deftype*#75`} [], `RECS`{`subtype*#18`} [], `TAGS`{`tagtype*#19`} [], `GLOBALS`{`globaltype*#20`} [], `MEMS`{`memtype*#34`} [], `TABLES`{`tabletype*#27`} [], `FUNCS`{`deftype*#76`} [], `DATAS`{`datatype*#19`} [], `ELEMS`{`elemtype*#19`} [], `LOCALS`{`localtype*#22`} [], `LABELS`{`resulttype*#30`} [], `RETURN`{`resulttype?#27`} ?(), `REFS`{`funcidx*#56`} []}, ht', ht) + 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 - rule i31{s : store, u31#1 : u31, i : u31, `null?#1063` : null?, heaptype#1073 : heaptype}: - `%|-%:%`(s, `REF.I31_NUM`_ref{u31#1}(i), `REF`_reftype{`null?#1063`, heaptype#1073}(?(), `I31`_heaptype)) + 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 - rule struct{s : store, structaddr#1 : structaddr, a : addr, `null?#1075` : null?, heaptype#1085 : heaptype, dt : deftype, `structinst*#5` : structinst*, deftype#1 : deftype}: - `%|-%:%`(s, `REF.STRUCT_ADDR`_ref{structaddr#1}(a), `REF`_reftype{`null?#1075`, heaptype#1085}(?(), (dt : deftype <: heaptype))) - -- if (s.`STRUCTS`_store{`structinst*#5`}[a].`TYPE`_structinst{deftype#1} = dt) + 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 - rule array{s : store, arrayaddr#1 : arrayaddr, a : addr, `null?#1087` : null?, heaptype#1097 : heaptype, dt : deftype, `arrayinst*#5` : arrayinst*, deftype#2 : deftype}: - `%|-%:%`(s, `REF.ARRAY_ADDR`_ref{arrayaddr#1}(a), `REF`_reftype{`null?#1087`, heaptype#1097}(?(), (dt : deftype <: heaptype))) - -- if (s.`ARRAYS`_store{`arrayinst*#5`}[a].`TYPE`_arrayinst{deftype#2} = dt) + 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 - rule func{s : store, funcaddr#3 : funcaddr, a : addr, `null?#1099` : null?, heaptype#1109 : heaptype, dt : deftype, `funcinst*#4` : funcinst*, deftype#3 : deftype}: - `%|-%:%`(s, `REF.FUNC_ADDR`_ref{funcaddr#3}(a), `REF`_reftype{`null?#1099`, heaptype#1109}(?(), (dt : deftype <: heaptype))) - -- if (s.`FUNCS`_store{`funcinst*#4`}[a].`TYPE`_funcinst{deftype#3} = dt) + 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 - rule exn{s : store, exnaddr#1 : exnaddr, a : addr, `null?#1111` : null?, heaptype#1121 : heaptype, `exninst*#4` : exninst*, exn : exninst}: - `%|-%:%`(s, `REF.EXN_ADDR`_ref{exnaddr#1}(a), `REF`_reftype{`null?#1111`, heaptype#1121}(?(), `EXN`_heaptype)) - -- if (s.`EXNS`_store{`exninst*#4`}[a] = exn) + 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 - rule host{s : store, hostaddr#1 : hostaddr, a : addr, `null?#1123` : null?, heaptype#1133 : heaptype}: - `%|-%:%`(s, `REF.HOST_ADDR`_ref{hostaddr#1}(a), `REF`_reftype{`null?#1123`, heaptype#1133}(?(), `ANY`_heaptype)) + 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 - rule extern{s : store, addrref#1 : addrref, addrref : addrref, `null?#1135` : null?, heaptype#1145 : heaptype, `null?#1147` : null?, heaptype#1157 : heaptype}: - `%|-%:%`(s, `REF.EXTERN`_ref{addrref#1}(addrref), `REF`_reftype{`null?#1135`, heaptype#1145}(?(), `EXTERN`_heaptype)) - -- Ref_ok: `%|-%:%`(s, (addrref : addrref <: ref), `REF`_reftype{`null?#1147`, heaptype#1157}(?(), `ANY`_heaptype)) + 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 - rule sub{s : store, ref : ref, rt : reftype, rt' : reftype, `deftype*#77` : deftype*, `subtype*#19` : subtype*, `tagtype*#20` : tagtype*, `globaltype*#21` : globaltype*, `memtype*#35` : memtype*, `tabletype*#28` : tabletype*, `deftype*#78` : deftype*, `datatype*#20` : datatype*, `elemtype*#20` : elemtype*, `localtype*#23` : localtype*, `resulttype*#31` : resulttype*, `resulttype?#28` : resulttype?, `funcidx*#57` : funcidx*}: + rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: `%|-%:%`(s, ref, rt) -- Ref_ok: `%|-%:%`(s, ref, rt') - -- Reftype_sub: `%|-%<:%`({`TYPES`{`deftype*#77`} [], `RECS`{`subtype*#19`} [], `TAGS`{`tagtype*#20`} [], `GLOBALS`{`globaltype*#21`} [], `MEMS`{`memtype*#35`} [], `TABLES`{`tabletype*#28`} [], `FUNCS`{`deftype*#78`} [], `DATAS`{`datatype*#20`} [], `ELEMS`{`elemtype*#20`} [], `LOCALS`{`localtype*#23`} [], `LABELS`{`resulttype*#31`} [], `RETURN`{`resulttype?#28`} ?(), `REFS`{`funcidx*#57`} []}, rt', 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 @@ -117442,66 +92693,66 @@ 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, tagaddr#3 : tagaddr, a : addr, tagtype#177 : tagtype, taginst : taginst, tagtype#179 : tagtype, `taginst*#4` : taginst*}: - `%|-%:%`(s, `TAG`_externaddr{tagaddr#3}(a), `TAG`_externtype{tagtype#177}(taginst.`TYPE`_taginst{tagtype#179})) - -- if (s.`TAGS`_store{`taginst*#4`}[a] = taginst) + 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 - rule global{s : store, globaladdr#3 : globaladdr, a : addr, globaltype#2085 : globaltype, globalinst : globalinst, globaltype#2087 : globaltype, `globalinst*#5` : globalinst*}: - `%|-%:%`(s, `GLOBAL`_externaddr{globaladdr#3}(a), `GLOBAL`_externtype{globaltype#2085}(globalinst.`TYPE`_globalinst{globaltype#2087})) - -- if (s.`GLOBALS`_store{`globalinst*#5`}[a] = globalinst) + 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 - rule mem{s : store, memaddr#3 : memaddr, a : addr, memtype#527 : memtype, meminst : meminst, memtype#529 : memtype, `meminst*#6` : meminst*}: - `%|-%:%`(s, `MEM`_externaddr{memaddr#3}(a), `MEM`_externtype{memtype#527}(meminst.`TYPE`_meminst{memtype#529})) - -- if (s.`MEMS`_store{`meminst*#6`}[a] = meminst) + 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 - rule table{s : store, tableaddr#3 : tableaddr, a : addr, tabletype#877 : tabletype, tableinst : tableinst, tabletype#879 : tabletype, `tableinst*#6` : tableinst*}: - `%|-%:%`(s, `TABLE`_externaddr{tableaddr#3}(a), `TABLE`_externtype{tabletype#877}(tableinst.`TYPE`_tableinst{tabletype#879})) - -- if (s.`TABLES`_store{`tableinst*#6`}[a] = tableinst) + 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 - rule func{s : store, funcaddr#5 : funcaddr, a : addr, typeuse#33 : typeuse, funcinst : funcinst, deftype#4 : deftype, `funcinst*#5` : funcinst*}: - `%|-%:%`(s, `FUNC`_externaddr{funcaddr#5}(a), `FUNC`_externtype{typeuse#33}((funcinst.`TYPE`_funcinst{deftype#4} : deftype <: typeuse))) - -- if (s.`FUNCS`_store{`funcinst*#5`}[a] = funcinst) + 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 - rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype, `deftype*#79` : deftype*, `subtype*#20` : subtype*, `tagtype*#21` : tagtype*, `globaltype*#22` : globaltype*, `memtype*#36` : memtype*, `tabletype*#29` : tabletype*, `deftype*#80` : deftype*, `datatype*#21` : datatype*, `elemtype*#21` : elemtype*, `localtype*#24` : localtype*, `resulttype*#32` : resulttype*, `resulttype?#29` : resulttype?, `funcidx*#58` : funcidx*}: + rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') - -- Externtype_sub: `%|-%<:%`({`TYPES`{`deftype*#79`} [], `RECS`{`subtype*#20`} [], `TAGS`{`tagtype*#21`} [], `GLOBALS`{`globaltype*#22`} [], `MEMS`{`memtype*#36`} [], `TABLES`{`tabletype*#29`} [], `FUNCS`{`deftype*#80`} [], `DATAS`{`datatype*#21`} [], `ELEMS`{`elemtype*#21`} [], `LOCALS`{`localtype*#24`} [], `LABELS`{`resulttype*#32`} [], `RETURN`{`resulttype?#29`} ?(), `REFS`{`funcidx*#58`} []}, xt', 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*, `deftype*#81` : deftype*}(moduleinst, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.`TYPES`_moduleinst{`deftype*#81`}) + 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*, `deftype*#82` : deftype*}(moduleinst, rt) = $subst_all_reftype(rt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.`TYPES`_moduleinst{`deftype*#82`}) + 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*, `deftype*#83` : deftype*}(moduleinst, gt) = $subst_all_globaltype(gt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.`TYPES`_moduleinst{`deftype*#83`}) + 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*, `deftype*#84` : deftype*}(moduleinst, mt) = $subst_all_memtype(mt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.`TYPES`_moduleinst{`deftype*#84`}) + 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*, `deftype*#85` : deftype*}(moduleinst, tt) = $subst_all_tabletype(tt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.`TYPES`_moduleinst{`deftype*#85`}) + 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: `%~>%`(instr*, instr*) @@ -117518,110 +92769,110 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([(val : val <: instr) `DROP`_instr], []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `select-true`{val_1 : val, val_2 : val, numtype#59 : numtype, c : num_(`I32`_numtype), `valtype*?#7` : valtype*?, `t*?` : valtype*?, i#31733 : nat}: - `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) `CONST`_instr{numtype#59}(`I32`_numtype, c) `SELECT`_instr{`valtype*?#7`}(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_1 : val <: instr)]) - -- if (c!`%`_num_{i#31733}.0 =/= 0) + 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, numtype#61 : numtype, c : num_(`I32`_numtype), `valtype*?#9` : valtype*?, `t*?` : valtype*?, i#31757 : nat}: - `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) `CONST`_instr{numtype#61}(`I32`_numtype, c) `SELECT`_instr{`valtype*?#9`}(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_2 : val <: instr)]) - -- if (c!`%`_num_{i#31757}.0 = 0) + 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`{numtype#63 : numtype, c : num_(`I32`_numtype), blocktype#21 : blocktype, `instr*#363` : instr*, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, blocktype#23 : blocktype, `instr*#366` : instr*, i#31807 : nat}: - `%~>%`([`CONST`_instr{numtype#63}(`I32`_numtype, c) `IF%%ELSE%`_instr{blocktype#21, `instr*#363`}(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [`BLOCK`_instr{blocktype#23, `instr*#366`}(bt, instr_1*{instr_1 <- `instr_1*`})]) - -- if (c!`%`_num_{i#31807}.0 =/= 0) + 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`{numtype#65 : numtype, c : num_(`I32`_numtype), blocktype#25 : blocktype, `instr*#368` : instr*, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, blocktype#27 : blocktype, `instr*#371` : instr*, i#31831 : nat}: - `%~>%`([`CONST`_instr{numtype#65}(`I32`_numtype, c) `IF%%ELSE%`_instr{blocktype#25, `instr*#368`}(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [`BLOCK`_instr{blocktype#27, `instr*#371`}(bt, instr_2*{instr_2 <- `instr_2*`})]) - -- if (c!`%`_num_{i#31831}.0 = 0) + 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#1145 : n, `instr*#373` : instr*, n : n, `instr*` : instr*, `val*` : val*}: - `%~>%`([`LABEL_%{%}%`_instr{n#1145, `instr*#373`}(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) + 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#1147 : n, `instr*#376` : instr*, n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, labelidx#37 : labelidx, l : labelidx, `instr*` : instr*, i#31853 : nat}: - `%~>%`([`LABEL_%{%}%`_instr{n#1147, `instr*#376`}(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`BR`_instr{labelidx#37}(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) - -- if (l!`%`_labelidx{i#31853}.0 = 0) + 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#1149 : n, `instr*#379` : instr*, n : n, `instr'*` : instr*, `val*` : val*, labelidx#39 : labelidx, l : labelidx, `instr*` : instr*, labelidx#41 : labelidx, i#31901 : nat, i#31891 : nat, i#31915 : nat}: - `%~>%`([`LABEL_%{%}%`_instr{n#1149, `instr*#379`}(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr{labelidx#39}(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr{labelidx#41}(`%`_labelidx{i#31901}((((l!`%`_labelidx{i#31891}.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) - -- if (l!`%`_labelidx{i#31915}.0 > 0) + 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#1151 : n, `catch*#1` : catch*, `instr*#382` : instr*, n : n, `catch*` : catch*, `val*` : val*, labelidx#43 : labelidx, l : labelidx, `instr*` : instr*, labelidx#45 : labelidx}: - `%~>%`([`HANDLER_%{%}%`_instr{n#1151, `catch*#1`, `instr*#382`}(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr{labelidx#43}(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr{labelidx#45}(l)]) + 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`{numtype#67 : numtype, c : num_(`I32`_numtype), labelidx#47 : labelidx, l : labelidx, labelidx#49 : labelidx, i#31987 : nat}: - `%~>%`([`CONST`_instr{numtype#67}(`I32`_numtype, c) `BR_IF`_instr{labelidx#47}(l)], [`BR`_instr{labelidx#49}(l)]) - -- if (c!`%`_num_{i#31987}.0 =/= 0) + 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`{numtype#69 : numtype, c : num_(`I32`_numtype), labelidx#51 : labelidx, l : labelidx, i#32023 : nat}: - `%~>%`([`CONST`_instr{numtype#69}(`I32`_numtype, c) `BR_IF`_instr{labelidx#51}(l)], []) - -- if (c!`%`_num_{i#32023}.0 = 0) + 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`{numtype#71 : numtype, i : num_(`I32`_numtype), `labelidx*#50` : labelidx*, labelidx#53 : labelidx, `l*` : labelidx*, l' : labelidx, labelidx#55 : labelidx, i#32131 : nat, i#32145 : nat}: - `%~>%`([`CONST`_instr{numtype#71}(`I32`_numtype, i) `BR_TABLE`_instr{`labelidx*#50`, labelidx#53}(l*{l <- `l*`}, l')], [`BR`_instr{labelidx#55}(l*{l <- `l*`}[i!`%`_num_{i#32131}.0])]) - -- if (i!`%`_num_{i#32145}.0 < |l*{l <- `l*`}|) + 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`{numtype#73 : numtype, i : num_(`I32`_numtype), `labelidx*#52` : labelidx*, labelidx#57 : labelidx, `l*` : labelidx*, l' : labelidx, labelidx#59 : labelidx, i#32257 : nat}: - `%~>%`([`CONST`_instr{numtype#73}(`I32`_numtype, i) `BR_TABLE`_instr{`labelidx*#52`, labelidx#57}(l*{l <- `l*`}, l')], [`BR`_instr{labelidx#59}(l')]) - -- if (i!`%`_num_{i#32257}.0 >= |l*{l <- `l*`}|) + 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, labelidx#61 : labelidx, l : labelidx, labelidx#63 : labelidx, heaptype#1207 : heaptype, ht : heaptype}: - `%~>%`([(val : val <: instr) `BR_ON_NULL`_instr{labelidx#61}(l)], [`BR`_instr{labelidx#63}(l)]) - -- if (val = `REF.NULL`_val{heaptype#1207}(ht)) + 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, labelidx#65 : labelidx, l : labelidx}: - `%~>%`([(val : val <: instr) `BR_ON_NULL`_instr{labelidx#65}(l)], [(val : val <: instr)]) + 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, labelidx#67 : labelidx, l : labelidx, heaptype#1209 : heaptype, ht : heaptype}: - `%~>%`([(val : val <: instr) `BR_ON_NON_NULL`_instr{labelidx#67}(l)], []) - -- if (val = `REF.NULL`_val{heaptype#1209}(ht)) + 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, labelidx#69 : labelidx, l : labelidx, labelidx#71 : labelidx}: - `%~>%`([(val : val <: instr) `BR_ON_NON_NULL`_instr{labelidx#69}(l)], [(val : val <: instr) `BR`_instr{labelidx#71}(l)]) + 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{tableidx#49 : tableidx, typeuse#57 : typeuse, x : idx, yy : typeuse, tableidx#51 : tableidx, reftype#3451 : reftype, `null?#1303` : null?, heaptype#1321 : heaptype, typeuse#59 : typeuse}: - `%~>%`([`CALL_INDIRECT`_instr{tableidx#49, typeuse#57}(x, yy)], [`TABLE.GET`_instr{tableidx#51}(x) `REF.CAST`_instr{reftype#3451}(`REF`_reftype{`null?#1303`, heaptype#1321}(?(`NULL`_null), (yy : typeuse <: heaptype))) `CALL_REF`_instr{typeuse#59}(yy)]) + 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{tableidx#53 : tableidx, typeuse#61 : typeuse, x : idx, yy : typeuse, tableidx#55 : tableidx, reftype#3453 : reftype, `null?#1315` : null?, heaptype#1333 : heaptype, typeuse#63 : typeuse}: - `%~>%`([`RETURN_CALL_INDIRECT`_instr{tableidx#53, typeuse#61}(x, yy)], [`TABLE.GET`_instr{tableidx#55}(x) `REF.CAST`_instr{reftype#3453}(`REF`_reftype{`null?#1315`, heaptype#1333}(?(`NULL`_null), (yy : typeuse <: heaptype))) `RETURN_CALL_REF`_instr{typeuse#63}(yy)]) + 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#1177 : n, frame#947 : frame, `instr*#542` : instr*, n : n, f : frame, `val*` : val*}: - `%~>%`([`FRAME_%{%}%`_instr{n#1177, frame#947, `instr*#542`}(n, f, (val : val <: instr)^n{val <- `val*`})], (val : val <: instr)^n{val <- `val*`}) + 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#1179 : n, frame#949 : frame, `instr*#544` : instr*, n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: - `%~>%`([`FRAME_%{%}%`_instr{n#1179, frame#949, `instr*#544`}(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`RETURN`_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`}) + 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#1181 : n, `instr*#546` : instr*, n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: - `%~>%`([`LABEL_%{%}%`_instr{n#1181, `instr*#546`}(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN`_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [`RETURN`_instr]) + 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#1183 : n, `catch*#5` : catch*, `instr*#549` : instr*, n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: - `%~>%`([`HANDLER_%{%}%`_instr{n#1183, `catch*#5`, `instr*#549`}(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN`_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [`RETURN`_instr]) + 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#1213 : n, `catch*#23` : catch*, `instr*#733` : instr*, n : n, `catch*` : catch*, `val*` : val*}: - `%~>%`([`HANDLER_%{%}%`_instr{n#1213, `catch*#23`, `instr*#733`}(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) + 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*}: @@ -117629,35 +92880,35 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `trap-label`{n#1215 : n, `instr*#735` : instr*, n : n, `instr'*` : instr*}: - `%~>%`([`LABEL_%{%}%`_instr{n#1215, `instr*#735`}(n, instr'*{instr' <- `instr'*`}, [`TRAP`_instr])], [`TRAP`_instr]) + 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#1217 : n, frame#1097 : frame, `instr*#738` : instr*, n : n, f : frame}: - `%~>%`([`FRAME_%{%}%`_instr{n#1217, frame#1097, `instr*#738`}(n, f, [`TRAP`_instr])], [`TRAP`_instr]) + 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, localidx#17 : localidx, x : idx, localidx#19 : localidx}: - `%~>%`([(val : val <: instr) `LOCAL.TEE`_instr{localidx#17}(x)], [(val : val <: instr) (val : val <: instr) `LOCAL.SET`_instr{localidx#19}(x)]) + 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{numtype#351 : numtype, i : num_(`I32`_numtype), u31#3 : u31}: - `%~>%`([`CONST`_instr{numtype#351}(`I32`_numtype, i) `REF.I31`_instr], [`REF.I31_NUM`_instr{u31#3}($wrap__(32, 31, i))]) + 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, numtype#353 : numtype, i#40032 : nat, heaptype#1347 : heaptype, ht : heaptype}: - `%~>%`([(ref : ref <: instr) `REF.IS_NULL`_instr], [`CONST`_instr{numtype#353}(`I32`_numtype, `%`_num_{i#40032}(1))]) - -- if (ref = `REF.NULL`_ref{heaptype#1347}(ht)) + 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, numtype#355 : numtype, i#40054 : nat}: - `%~>%`([(ref : ref <: instr) `REF.IS_NULL`_instr], [`CONST`_instr{numtype#355}(`I32`_numtype, `%`_num_{i#40054}(0))]) + 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, heaptype#1349 : heaptype, ht : heaptype}: + 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{heaptype#1349}(ht)) + -- if (ref = `REF.NULL`_ref(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-addr`{ref : ref}: @@ -117665,771 +92916,771 @@ relation Step_pure: `%~>%`(instr*, instr*) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-null`{ref_1 : ref, ref_2 : ref, numtype#357 : numtype, i#40076 : nat, heaptype#1351 : heaptype, ht_1 : heaptype, heaptype#1353 : heaptype, ht_2 : heaptype}: - `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [`CONST`_instr{numtype#357}(`I32`_numtype, `%`_num_{i#40076}(1))]) - -- if ((ref_1 = `REF.NULL`_ref{heaptype#1351}(ht_1)) /\ (ref_2 = `REF.NULL`_ref{heaptype#1353}(ht_2))) + 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, numtype#359 : numtype, i#40098 : nat}: - `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [`CONST`_instr{numtype#359}(`I32`_numtype, `%`_num_{i#40098}(1))]) + 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, numtype#361 : numtype, i#40120 : nat}: - `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [`CONST`_instr{numtype#361}(`I32`_numtype, `%`_num_{i#40120}(0))]) + 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`{heaptype#1427 : heaptype, ht : heaptype, sx#404 : sx, sx : sx}: - `%~>%`([`REF.NULL`_instr{heaptype#1427}(ht) `I31.GET`_instr{sx#404}(sx)], [`TRAP`_instr]) + 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`{u31#5 : u31, i : u31, sx#406 : sx, sx : sx, numtype#367 : numtype}: - `%~>%`([`REF.I31_NUM`_instr{u31#5}(i) `I31.GET`_instr{sx#406}(sx)], [`CONST`_instr{numtype#367}(`I32`_numtype, $extend__(31, 32, sx, i))]) + 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, numtype#369 : numtype, i#40512 : nat, n : n, typeidx#1571 : typeidx, x : idx, typeidx#1573 : typeidx, u32#25 : u32, i#40564 : nat}: - `%~>%`([(val : val <: instr) `CONST`_instr{numtype#369}(`I32`_numtype, `%`_num_{i#40512}(n)) `ARRAY.NEW`_instr{typeidx#1571}(x)], (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr{typeidx#1573, u32#25}(x, `%`_u32{i#40564}(n))]) + 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`{heaptype#1449 : heaptype, ht : heaptype, heaptype#1451 : heaptype}: - `%~>%`([`REF.NULL`_instr{heaptype#1449}(ht) `EXTERN.CONVERT_ANY`_instr], [`REF.NULL`_instr{heaptype#1451}(`EXTERN`_heaptype)]) + 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#3 : addrref}: - `%~>%`([(addrref : addrref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.EXTERN`_instr{addrref#3}(addrref)]) + 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`{heaptype#1453 : heaptype, ht : heaptype, heaptype#1455 : heaptype}: - `%~>%`([`REF.NULL`_instr{heaptype#1453}(ht) `ANY.CONVERT_EXTERN`_instr], [`REF.NULL`_instr{heaptype#1455}(`ANY`_heaptype)]) + 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#5 : addrref, addrref : addrref}: - `%~>%`([`REF.EXTERN`_instr{addrref#5}(addrref) `ANY.CONVERT_EXTERN`_instr], [(addrref : addrref <: instr)]) + 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`{numtype#563 : numtype, nt : numtype, c_1 : num_(nt), numtype#565 : numtype, unop : unop_(nt), numtype#567 : numtype, c : num_(nt)}: - `%~>%`([`CONST`_instr{numtype#563}(nt, c_1) `UNOP`_instr{numtype#565}(nt, unop)], [`CONST`_instr{numtype#567}(nt, c)]) + 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`{numtype#569 : numtype, nt : numtype, c_1 : num_(nt), numtype#571 : numtype, unop : unop_(nt)}: - `%~>%`([`CONST`_instr{numtype#569}(nt, c_1) `UNOP`_instr{numtype#571}(nt, unop)], [`TRAP`_instr]) + 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`{numtype#573 : numtype, nt : numtype, c_1 : num_(nt), numtype#575 : numtype, c_2 : num_(nt), numtype#577 : numtype, binop : binop_(nt), numtype#579 : numtype, c : num_(nt)}: - `%~>%`([`CONST`_instr{numtype#573}(nt, c_1) `CONST`_instr{numtype#575}(nt, c_2) `BINOP`_instr{numtype#577}(nt, binop)], [`CONST`_instr{numtype#579}(nt, c)]) + 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`{numtype#581 : numtype, nt : numtype, c_1 : num_(nt), numtype#583 : numtype, c_2 : num_(nt), numtype#585 : numtype, binop : binop_(nt)}: - `%~>%`([`CONST`_instr{numtype#581}(nt, c_1) `CONST`_instr{numtype#583}(nt, c_2) `BINOP`_instr{numtype#585}(nt, binop)], [`TRAP`_instr]) + 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{numtype#587 : numtype, nt : numtype, c_1 : num_(nt), numtype#589 : numtype, testop : testop_(nt), numtype#591 : numtype, c : num_(`I32`_numtype)}: - `%~>%`([`CONST`_instr{numtype#587}(nt, c_1) `TESTOP`_instr{numtype#589}(nt, testop)], [`CONST`_instr{numtype#591}(`I32`_numtype, c)]) + 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{numtype#593 : numtype, nt : numtype, c_1 : num_(nt), numtype#595 : numtype, c_2 : num_(nt), numtype#597 : numtype, relop : relop_(nt), numtype#599 : numtype, c : num_(`I32`_numtype)}: - `%~>%`([`CONST`_instr{numtype#593}(nt, c_1) `CONST`_instr{numtype#595}(nt, c_2) `RELOP`_instr{numtype#597}(nt, relop)], [`CONST`_instr{numtype#599}(`I32`_numtype, c)]) + 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`{numtype#601 : numtype, nt_1 : numtype, c_1 : num_(nt_1), numtype_1#5 : numtype, numtype_2#5 : numtype, nt_2 : numtype, cvtop : cvtop__(nt_1, nt_2), numtype#603 : numtype, c : num_(nt_2)}: - `%~>%`([`CONST`_instr{numtype#601}(nt_1, c_1) `CVTOP`_instr{numtype_1#5, numtype_2#5}(nt_2, nt_1, cvtop)], [`CONST`_instr{numtype#603}(nt_2, c)]) + 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`{numtype#605 : numtype, nt_1 : numtype, c_1 : num_(nt_1), numtype_1#7 : numtype, numtype_2#7 : numtype, nt_2 : numtype, cvtop : cvtop__(nt_1, nt_2)}: - `%~>%`([`CONST`_instr{numtype#605}(nt_1, c_1) `CVTOP`_instr{numtype_1#7, numtype_2#7}(nt_2, nt_1, cvtop)], [`TRAP`_instr]) + 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{vectype#104 : vectype, c_1 : vec_(`V128`_Vnn), vectype#106 : vectype, vvunop#5 : vvunop, vvunop : vvunop, vectype#108 : vectype, c : vec_(`V128`_Vnn)}: - `%~>%`([`VCONST`_instr{vectype#104}(`V128`_vectype, c_1) `VVUNOP`_instr{vectype#106, vvunop#5}(`V128`_vectype, vvunop)], [`VCONST`_instr{vectype#108}(`V128`_vectype, c)]) + 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{vectype#110 : vectype, c_1 : vec_(`V128`_Vnn), vectype#112 : vectype, c_2 : vec_(`V128`_Vnn), vectype#114 : vectype, vvbinop#5 : vvbinop, vvbinop : vvbinop, vectype#116 : vectype, c : vec_(`V128`_Vnn)}: - `%~>%`([`VCONST`_instr{vectype#110}(`V128`_vectype, c_1) `VCONST`_instr{vectype#112}(`V128`_vectype, c_2) `VVBINOP`_instr{vectype#114, vvbinop#5}(`V128`_vectype, vvbinop)], [`VCONST`_instr{vectype#116}(`V128`_vectype, c)]) + 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{vectype#118 : vectype, c_1 : vec_(`V128`_Vnn), vectype#120 : vectype, c_2 : vec_(`V128`_Vnn), vectype#122 : vectype, c_3 : vec_(`V128`_Vnn), vectype#124 : vectype, vvternop#5 : vvternop, vvternop : vvternop, vectype#126 : vectype, c : vec_(`V128`_Vnn)}: - `%~>%`([`VCONST`_instr{vectype#118}(`V128`_vectype, c_1) `VCONST`_instr{vectype#120}(`V128`_vectype, c_2) `VCONST`_instr{vectype#122}(`V128`_vectype, c_3) `VVTERNOP`_instr{vectype#124, vvternop#5}(`V128`_vectype, vvternop)], [`VCONST`_instr{vectype#126}(`V128`_vectype, c)]) + 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{vectype#128 : vectype, c_1 : vec_(`V128`_Vnn), vectype#130 : vectype, vvtestop#5 : vvtestop, numtype#607 : numtype, c : num_(`I32`_numtype)}: - `%~>%`([`VCONST`_instr{vectype#128}(`V128`_vectype, c_1) `VVTESTOP`_instr{vectype#130, vvtestop#5}(`V128`_vectype, `ANY_TRUE`_vvtestop)], [`CONST`_instr{numtype#607}(`I32`_numtype, c)]) + 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`{vectype#132 : vectype, c_1 : vec_(`V128`_Vnn), shape#681 : shape, sh : shape, vunop : vunop_(sh), vectype#134 : vectype, c : vec_(`V128`_Vnn)}: - `%~>%`([`VCONST`_instr{vectype#132}(`V128`_vectype, c_1) `VUNOP`_instr{shape#681}(sh, vunop)], [`VCONST`_instr{vectype#134}(`V128`_vectype, c)]) + 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`{vectype#136 : vectype, c_1 : vec_(`V128`_Vnn), shape#683 : shape, sh : shape, vunop : vunop_(sh)}: - `%~>%`([`VCONST`_instr{vectype#136}(`V128`_vectype, c_1) `VUNOP`_instr{shape#683}(sh, vunop)], [`TRAP`_instr]) + 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`{vectype#138 : vectype, c_1 : vec_(`V128`_Vnn), vectype#140 : vectype, c_2 : vec_(`V128`_Vnn), shape#685 : shape, sh : shape, vbinop : vbinop_(sh), vectype#142 : vectype, c : vec_(`V128`_Vnn)}: - `%~>%`([`VCONST`_instr{vectype#138}(`V128`_vectype, c_1) `VCONST`_instr{vectype#140}(`V128`_vectype, c_2) `VBINOP`_instr{shape#685}(sh, vbinop)], [`VCONST`_instr{vectype#142}(`V128`_vectype, c)]) + 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`{vectype#144 : vectype, c_1 : vec_(`V128`_Vnn), vectype#146 : vectype, c_2 : vec_(`V128`_Vnn), shape#687 : shape, sh : shape, vbinop : vbinop_(sh)}: - `%~>%`([`VCONST`_instr{vectype#144}(`V128`_vectype, c_1) `VCONST`_instr{vectype#146}(`V128`_vectype, c_2) `VBINOP`_instr{shape#687}(sh, vbinop)], [`TRAP`_instr]) + 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`{vectype#148 : vectype, c_1 : vec_(`V128`_Vnn), vectype#150 : vectype, c_2 : vec_(`V128`_Vnn), vectype#152 : vectype, c_3 : vec_(`V128`_Vnn), shape#689 : shape, sh : shape, vternop : vternop_(sh), vectype#154 : vectype, c : vec_(`V128`_Vnn)}: - `%~>%`([`VCONST`_instr{vectype#148}(`V128`_vectype, c_1) `VCONST`_instr{vectype#150}(`V128`_vectype, c_2) `VCONST`_instr{vectype#152}(`V128`_vectype, c_3) `VTERNOP`_instr{shape#689}(sh, vternop)], [`VCONST`_instr{vectype#154}(`V128`_vectype, c)]) + 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`{vectype#156 : vectype, c_1 : vec_(`V128`_Vnn), vectype#158 : vectype, c_2 : vec_(`V128`_Vnn), vectype#160 : vectype, c_3 : vec_(`V128`_Vnn), shape#691 : shape, sh : shape, vternop : vternop_(sh)}: - `%~>%`([`VCONST`_instr{vectype#156}(`V128`_vectype, c_1) `VCONST`_instr{vectype#158}(`V128`_vectype, c_2) `VCONST`_instr{vectype#160}(`V128`_vectype, c_3) `VTERNOP`_instr{shape#691}(sh, vternop)], [`TRAP`_instr]) + 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{vectype#162 : vectype, c_1 : vec_(`V128`_Vnn), shape#693 : shape, lanetype#7525 : lanetype, dim#7525 : dim, i#45296 : nat, Jnn : Jnn, i#45303 : nat, M : M, numtype#609 : numtype, c : num_(`I32`_numtype), lanetype#7537 : lanetype, dim#7537 : dim, i#45322 : nat, i#45329 : nat, i#45438 : nat, `i#45428*` : nat*, `i*` : lane_($lanetype(`%X%`_shape{lanetype#7537, dim#7537, i#45322}((Jnn : Jnn <: lanetype), `%`_dim{i#45329}(M))))*}: - `%~>%`([`VCONST`_instr{vectype#162}(`V128`_vectype, c_1) `VTESTOP`_instr{shape#693}(`%X%`_shape{lanetype#7525, dim#7525, i#45296}((Jnn : Jnn <: lanetype), `%`_dim{i#45303}(M)), `ALL_TRUE`_vtestop_)], [`CONST`_instr{numtype#609}(`I32`_numtype, c)]) - -- if (i*{i <- `i*`} = $lanes_(`%X%`_shape{lanetype#7537, dim#7537, i#45322}((Jnn : Jnn <: lanetype), `%`_dim{i#45329}(M)), c_1)) - -- if (c!`%`_num_{i#45438}.0 = $prod($inez_($jsizenn(Jnn), i)!`%`_u32{i#45428}.0*{i <- `i*`, i#45428 <- `i#45428*`})) + 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{vectype#164 : vectype, c_1 : vec_(`V128`_Vnn), vectype#166 : vectype, c_2 : vec_(`V128`_Vnn), shape#695 : shape, sh : shape, vrelop : vrelop_(sh), vectype#168 : vectype, c : vec_(`V128`_Vnn)}: - `%~>%`([`VCONST`_instr{vectype#164}(`V128`_vectype, c_1) `VCONST`_instr{vectype#166}(`V128`_vectype, c_2) `VRELOP`_instr{shape#695}(sh, vrelop)], [`VCONST`_instr{vectype#168}(`V128`_vectype, c)]) + 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{vectype#170 : vectype, c_1 : vec_(`V128`_Vnn), numtype#611 : numtype, i : num_(`I32`_numtype), ishape#9 : ishape, sh : ishape, vshiftop : vshiftop_(sh), vectype#172 : vectype, c : vec_(`V128`_Vnn)}: - `%~>%`([`VCONST`_instr{vectype#170}(`V128`_vectype, c_1) `CONST`_instr{numtype#611}(`I32`_numtype, i) `VSHIFTOP`_instr{ishape#9}(sh, vshiftop)], [`VCONST`_instr{vectype#172}(`V128`_vectype, c)]) + 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{vectype#174 : vectype, c_1 : vec_(`V128`_Vnn), ishape#11 : ishape, sh : ishape, numtype#613 : numtype, c : num_(`I32`_numtype)}: - `%~>%`([`VCONST`_instr{vectype#174}(`V128`_vectype, c_1) `VBITMASK`_instr{ishape#11}(sh)], [`CONST`_instr{numtype#613}(`I32`_numtype, c)]) + 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{vectype#176 : vectype, c_1 : vec_(`V128`_Vnn), vectype#178 : vectype, c_2 : vec_(`V128`_Vnn), bshape#9 : bshape, sh : bshape, swizzlop : vswizzlop_(sh), vectype#180 : vectype, c : vec_(`V128`_Vnn)}: - `%~>%`([`VCONST`_instr{vectype#176}(`V128`_vectype, c_1) `VCONST`_instr{vectype#178}(`V128`_vectype, c_2) `VSWIZZLOP`_instr{bshape#9}(sh, swizzlop)], [`VCONST`_instr{vectype#180}(`V128`_vectype, c)]) + 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{vectype#182 : vectype, c_1 : vec_(`V128`_Vnn), vectype#184 : vectype, c_2 : vec_(`V128`_Vnn), bshape#11 : bshape, `laneidx*#5` : laneidx*, i#45740 : nat, shape#733 : shape, sh : bshape, `i*` : laneidx*, vectype#186 : vectype, c : vec_(`V128`_Vnn)}: - `%~>%`([`VCONST`_instr{vectype#182}(`V128`_vectype, c_1) `VCONST`_instr{vectype#184}(`V128`_vectype, c_2) `VSHUFFLE`_instr{bshape#11, `laneidx*#5`, i#45740, shape#733}(sh, i*{i <- `i*`})], [`VCONST`_instr{vectype#186}(`V128`_vectype, c)]) + 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{numtype#615 : numtype, Lnn : Lnn, c_1 : num_($lunpack(Lnn)), shape#746 : shape, lanetype#7575 : lanetype, dim#7575 : dim, i#45836 : nat, i#45843 : nat, M : M, vectype#188 : vectype, c : vec_(`V128`_Vnn), lanetype#7587 : lanetype, dim#7587 : dim, i#45862 : nat, i#45869 : nat}: - `%~>%`([`CONST`_instr{numtype#615}($lunpack(Lnn), c_1) `VSPLAT`_instr{shape#746}(`%X%`_shape{lanetype#7575, dim#7575, i#45836}(Lnn, `%`_dim{i#45843}(M)))], [`VCONST`_instr{vectype#188}(`V128`_vectype, c)]) - -- if (c = $inv_lanes_(`%X%`_shape{lanetype#7587, dim#7587, i#45862}(Lnn, `%`_dim{i#45869}(M)), $lpacknum_(Lnn, c_1)^M{})) + 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`{vectype#190 : vectype, c_1 : vec_(`V128`_Vnn), shape#748 : shape, `sx?#27` : sx?, laneidx#25 : laneidx, lanetype#7610 : lanetype, dim#7610 : dim, i#45931 : nat, nt : numtype, i#45938 : nat, M : M, i : laneidx, numtype#617 : numtype, c_2 : num_(nt), lanetype#7622 : lanetype, dim#7622 : dim, i#45957 : nat, i#45964 : nat, i#45984 : nat}: - `%~>%`([`VCONST`_instr{vectype#190}(`V128`_vectype, c_1) `VEXTRACT_LANE`_instr{shape#748, `sx?#27`, laneidx#25}(`%X%`_shape{lanetype#7610, dim#7610, i#45931}((nt : numtype <: lanetype), `%`_dim{i#45938}(M)), ?(), i)], [`CONST`_instr{numtype#617}(nt, c_2)]) - -- if (c_2 = $lanes_(`%X%`_shape{lanetype#7622, dim#7622, i#45957}((nt : numtype <: lanetype), `%`_dim{i#45964}(M)), c_1)[i!`%`_laneidx{i#45984}.0]) + 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`{vectype#192 : vectype, c_1 : vec_(`V128`_Vnn), shape#750 : shape, `sx?#29` : sx?, laneidx#27 : laneidx, lanetype#7639 : lanetype, dim#7639 : dim, i#46018 : nat, pt : packtype, i#46025 : nat, M : M, sx : sx, i : laneidx, numtype#619 : numtype, c_2 : num_(`I32`_numtype), lanetype#7651 : lanetype, dim#7651 : dim, i#46122 : nat, i#46129 : nat, i#46149 : nat}: - `%~>%`([`VCONST`_instr{vectype#192}(`V128`_vectype, c_1) `VEXTRACT_LANE`_instr{shape#750, `sx?#29`, laneidx#27}(`%X%`_shape{lanetype#7639, dim#7639, i#46018}((pt : packtype <: lanetype), `%`_dim{i#46025}(M)), ?(sx), i)], [`CONST`_instr{numtype#619}(`I32`_numtype, c_2)]) - -- if (c_2 = $extend__($psize(pt), 32, sx, $lanes_(`%X%`_shape{lanetype#7651, dim#7651, i#46122}((pt : packtype <: lanetype), `%`_dim{i#46129}(M)), c_1)[i!`%`_laneidx{i#46149}.0])) + 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{vectype#194 : vectype, c_1 : vec_(`V128`_Vnn), numtype#621 : numtype, Lnn : Lnn, c_2 : num_($lunpack(Lnn)), shape#752 : shape, laneidx#29 : laneidx, lanetype#7664 : lanetype, dim#7664 : dim, i#46185 : nat, i#46192 : nat, M : M, i : laneidx, vectype#196 : vectype, c : vec_(`V128`_Vnn), lanetype#7676 : lanetype, dim#7676 : dim, i#46225 : nat, i#46232 : nat, lanetype#7730 : lanetype, dim#7730 : dim, i#46335 : nat, i#46342 : nat, i#46368 : nat}: - `%~>%`([`VCONST`_instr{vectype#194}(`V128`_vectype, c_1) `CONST`_instr{numtype#621}($lunpack(Lnn), c_2) `VREPLACE_LANE`_instr{shape#752, laneidx#29}(`%X%`_shape{lanetype#7664, dim#7664, i#46185}(Lnn, `%`_dim{i#46192}(M)), i)], [`VCONST`_instr{vectype#196}(`V128`_vectype, c)]) - -- if (c = $inv_lanes_(`%X%`_shape{lanetype#7676, dim#7676, i#46225}(Lnn, `%`_dim{i#46232}(M)), $lanes_(`%X%`_shape{lanetype#7730, dim#7730, i#46335}(Lnn, `%`_dim{i#46342}(M)), c_1)[[i!`%`_laneidx{i#46368}.0] = $lpacknum_(Lnn, c_2)])) + 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{vectype#198 : vectype, c_1 : vec_(`V128`_Vnn), ishape_1#17 : ishape, ishape_2#17 : ishape, sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__(sh_1, sh_2), vectype#200 : vectype, c : vec_(`V128`_Vnn)}: - `%~>%`([`VCONST`_instr{vectype#198}(`V128`_vectype, c_1) `VEXTUNOP`_instr{ishape_1#17, ishape_2#17}(sh_2, sh_1, vextunop)], [`VCONST`_instr{vectype#200}(`V128`_vectype, c)]) + 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{vectype#202 : vectype, c_1 : vec_(`V128`_Vnn), vectype#204 : vectype, c_2 : vec_(`V128`_Vnn), ishape_1#19 : ishape, ishape_2#19 : ishape, sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__(sh_1, sh_2), vectype#206 : vectype, c : vec_(`V128`_Vnn)}: - `%~>%`([`VCONST`_instr{vectype#202}(`V128`_vectype, c_1) `VCONST`_instr{vectype#204}(`V128`_vectype, c_2) `VEXTBINOP`_instr{ishape_1#19, ishape_2#19}(sh_2, sh_1, vextbinop)], [`VCONST`_instr{vectype#206}(`V128`_vectype, c)]) + 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{vectype#208 : vectype, c_1 : vec_(`V128`_Vnn), vectype#210 : vectype, c_2 : vec_(`V128`_Vnn), vectype#212 : vectype, c_3 : vec_(`V128`_Vnn), ishape_1#21 : ishape, ishape_2#21 : ishape, sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__(sh_1, sh_2), vectype#214 : vectype, c : vec_(`V128`_Vnn)}: - `%~>%`([`VCONST`_instr{vectype#208}(`V128`_vectype, c_1) `VCONST`_instr{vectype#210}(`V128`_vectype, c_2) `VCONST`_instr{vectype#212}(`V128`_vectype, c_3) `VEXTTERNOP`_instr{ishape_1#21, ishape_2#21}(sh_2, sh_1, vextternop)], [`VCONST`_instr{vectype#214}(`V128`_vectype, c)]) + 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{vectype#216 : vectype, c_1 : vec_(`V128`_Vnn), vectype#218 : vectype, c_2 : vec_(`V128`_Vnn), ishape_1#23 : ishape, ishape_2#23 : ishape, sx#408 : sx, shape#826 : shape, Jnn#216 : Jnn, shape#827 : shape, Jnn#217 : Jnn, shape#828 : shape, Jnn#218 : Jnn, sh_2 : ishape, sh_1 : ishape, sx : sx, vectype#220 : vectype, c : vec_(`V128`_Vnn), shape#841 : shape, Jnn#223 : Jnn, shape#843 : shape, Jnn#224 : Jnn}: - `%~>%`([`VCONST`_instr{vectype#216}(`V128`_vectype, c_1) `VCONST`_instr{vectype#218}(`V128`_vectype, c_2) `VNARROW`_instr{ishape_1#23, ishape_2#23, sx#408, shape#826, Jnn#216, shape#827, Jnn#217, shape#828, Jnn#218}(sh_2, sh_1, sx)], [`VCONST`_instr{vectype#220}(`V128`_vectype, c)]) - -- if (c = $vnarrowop__(sh_1!`%`_ishape{shape#841, Jnn#223}.0, sh_2!`%`_ishape{shape#843, Jnn#224}.0, sx, c_1, c_2)) + 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{vectype#222 : vectype, c_1 : vec_(`V128`_Vnn), shape_1#5 : shape, shape_2#5 : shape, sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__(sh_1, sh_2), vectype#224 : vectype, c : vec_(`V128`_Vnn)}: - `%~>%`([`VCONST`_instr{vectype#222}(`V128`_vectype, c_1) `VCVTOP`_instr{shape_1#5, shape_2#5}(sh_2, sh_1, vcvtop)], [`VCONST`_instr{vectype#224}(`V128`_vectype, c)]) + 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, typeidx#1551 : typeidx, x : idx, resulttype#2934 : resulttype, `localidx*#1757` : localidx*, `X*#12241` : valtype*, `t_1*` : valtype*, `X*#12292` : valtype*, `t_2*` : valtype*, resulttype#2914 : resulttype, `X*#12215` : valtype*, `X*#12228` : valtype*}(z, `_IDX`_blocktype{typeidx#1551}(x)) = `%->_%%`_instrtype{resulttype#2934, `localidx*#1757`}(`%`_resulttype{`X*#12241`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#12292`}(t_2*{t_2 <- `t_2*`})) - -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype{resulttype#2914}(`%`_resulttype{`X*#12215`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#12228`}(t_2*{t_2 <- `t_2*`}))) + 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, `valtype?#5` : valtype?, `t?` : valtype?, resulttype#2954 : resulttype, `localidx*#1769` : localidx*, `X*#12313` : valtype*, `X*#12362` : valtype*}(z, `_RESULT`_blocktype{`valtype?#5`}(t?{t <- `t?`})) = `%->_%%`_instrtype{resulttype#2954, `localidx*#1769`}(`%`_resulttype{`X*#12313`}([]), [], `%`_resulttype{`X*#12362`}(lift(t?{t <- `t?`}))) + 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{state#311 : state, `instr*#337` : instr*, z : state, m : m, `val*` : val*, blocktype#15 : blocktype, `instr*#339` : instr*, bt : blocktype, `instr*` : instr*, n#1141 : n, `instr*#341` : instr*, n : n, resulttype#2974 : resulttype, `localidx*#1781` : localidx*, `X*#12373` : valtype*, `t_1*` : valtype*, `X*#12424` : valtype*, `t_2*` : valtype*}: - `%~>%`(`%;%`_config{state#311, `instr*#337`}(z, (val : val <: instr)^m{val <- `val*`} ++ [`BLOCK`_instr{blocktype#15, `instr*#339`}(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr{n#1141, `instr*#341`}(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) - -- if ($blocktype_(z, bt) = `%->_%%`_instrtype{resulttype#2974, `localidx*#1781`}(`%`_resulttype{`X*#12373`}(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#12424`}(t_2^n{t_2 <- `t_2*`}))) + rule block{z : state, m : m, `val*` : val*, 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{state#323 : state, `instr*#354` : instr*, z : state, m : m, `val*` : val*, blocktype#17 : blocktype, `instr*#356` : instr*, bt : blocktype, `instr*` : instr*, n#1143 : n, `instr*#358` : instr*, blocktype#19 : blocktype, `instr*#361` : instr*, resulttype#2994 : resulttype, `localidx*#1793` : localidx*, `X*#12435` : valtype*, `t_1*` : valtype*, `X*#12486` : valtype*, n : n, `t_2*` : valtype*}: - `%~>%`(`%;%`_config{state#323, `instr*#354`}(z, (val : val <: instr)^m{val <- `val*`} ++ [`LOOP`_instr{blocktype#17, `instr*#356`}(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr{n#1143, `instr*#358`}(m, [`LOOP`_instr{blocktype#19, `instr*#361`}(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) - -- if ($blocktype_(z, bt) = `%->_%%`_instrtype{resulttype#2994, `localidx*#1793`}(`%`_resulttype{`X*#12435`}(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#12486`}(t_2^n{t_2 <- `t_2*`}))) + rule loop{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, n : n, `t_2*` : valtype*}: + `%~>%`(`%;%`_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`{state#335 : state, `instr*#394` : instr*, store#815 : store, frame#819 : frame, s : store, f : frame, ref : ref, labelidx#73 : labelidx, reftype#3439 : reftype, l : labelidx, rt_1 : reftype, rt_2 : reftype, labelidx#75 : labelidx, rt : reftype, `deftype*#86` : deftype*, `subtype*#21` : subtype*, `tagtype*#22` : tagtype*, `globaltype*#23` : globaltype*, `memtype*#37` : memtype*, `tabletype*#30` : tabletype*, `deftype*#87` : deftype*, `datatype*#22` : datatype*, `elemtype*#22` : elemtype*, `localtype*#25` : localtype*, `resulttype*#33` : resulttype*, `resulttype?#30` : resulttype?, `funcidx*#59` : funcidx*, moduleinst#19 : moduleinst}: - `%~>%`(`%;%`_config{state#335, `instr*#394`}(`%;%`_state{store#815, frame#819}(s, f), [(ref : ref <: instr) `BR_ON_CAST`_instr{labelidx#73, reftype#3439}(l, rt_1, rt_2)]), [(ref : ref <: instr) `BR`_instr{labelidx#75}(l)]) + 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`{`deftype*#86`} [], `RECS`{`subtype*#21`} [], `TAGS`{`tagtype*#22`} [], `GLOBALS`{`globaltype*#23`} [], `MEMS`{`memtype*#37`} [], `TABLES`{`tabletype*#30`} [], `FUNCS`{`deftype*#87`} [], `DATAS`{`datatype*#22`} [], `ELEMS`{`elemtype*#22`} [], `LOCALS`{`localtype*#25`} [], `LABELS`{`resulttype*#33`} [], `RETURN`{`resulttype?#30`} ?(), `REFS`{`funcidx*#59`} []}, rt, $inst_reftype(f.`MODULE`_frame{moduleinst#19}, rt_2)) + -- 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`{state#347 : state, `instr*#406` : instr*, store#827 : store, frame#831 : frame, s : store, f : frame, ref : ref, labelidx#77 : labelidx, reftype#3442 : reftype, l : labelidx, rt_1 : reftype, rt_2 : reftype}: - `%~>%`(`%;%`_config{state#347, `instr*#406`}(`%;%`_state{store#827, frame#831}(s, f), [(ref : ref <: instr) `BR_ON_CAST`_instr{labelidx#77, reftype#3442}(l, rt_1, rt_2)]), [(ref : ref <: instr)]) + 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`{state#359 : state, `instr*#418` : instr*, store#839 : store, frame#843 : frame, s : store, f : frame, ref : ref, labelidx#79 : labelidx, reftype#3445 : reftype, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype, `deftype*#88` : deftype*, `subtype*#22` : subtype*, `tagtype*#23` : tagtype*, `globaltype*#24` : globaltype*, `memtype*#38` : memtype*, `tabletype*#31` : tabletype*, `deftype*#89` : deftype*, `datatype*#23` : datatype*, `elemtype*#23` : elemtype*, `localtype*#26` : localtype*, `resulttype*#34` : resulttype*, `resulttype?#31` : resulttype?, `funcidx*#60` : funcidx*, moduleinst#20 : moduleinst}: - `%~>%`(`%;%`_config{state#359, `instr*#418`}(`%;%`_state{store#839, frame#843}(s, f), [(ref : ref <: instr) `BR_ON_CAST_FAIL`_instr{labelidx#79, reftype#3445}(l, rt_1, rt_2)]), [(ref : ref <: instr)]) + 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`{`deftype*#88`} [], `RECS`{`subtype*#22`} [], `TAGS`{`tagtype*#23`} [], `GLOBALS`{`globaltype*#24`} [], `MEMS`{`memtype*#38`} [], `TABLES`{`tabletype*#31`} [], `FUNCS`{`deftype*#89`} [], `DATAS`{`datatype*#23`} [], `ELEMS`{`elemtype*#23`} [], `LOCALS`{`localtype*#26`} [], `LABELS`{`resulttype*#34`} [], `RETURN`{`resulttype?#31`} ?(), `REFS`{`funcidx*#60`} []}, rt, $inst_reftype(f.`MODULE`_frame{moduleinst#20}, rt_2)) + -- 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`{state#371 : state, `instr*#430` : instr*, store#851 : store, frame#855 : frame, s : store, f : frame, ref : ref, labelidx#81 : labelidx, reftype#3448 : reftype, l : labelidx, rt_1 : reftype, rt_2 : reftype, labelidx#83 : labelidx}: - `%~>%`(`%;%`_config{state#371, `instr*#430`}(`%;%`_state{store#851, frame#855}(s, f), [(ref : ref <: instr) `BR_ON_CAST_FAIL`_instr{labelidx#81, reftype#3448}(l, rt_1, rt_2)]), [(ref : ref <: instr) `BR`_instr{labelidx#83}(l)]) + 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{state#383 : state, `instr*#442` : instr*, z : state, funcidx#2837 : funcidx, x : idx, funcaddr#7 : funcaddr, a : addr, typeuse#35 : typeuse, deftype#5 : deftype, `funcaddr*#2` : funcaddr*, i#32425 : nat}: - `%~>%`(`%;%`_config{state#383, `instr*#442`}(z, [`CALL`_instr{funcidx#2837}(x)]), [`REF.FUNC_ADDR`_instr{funcaddr#7}(a) `CALL_REF`_instr{typeuse#35}(($funcinst(z)[a].`TYPE`_funcinst{deftype#5} : deftype <: typeuse))]) - -- if ($moduleinst(z).`FUNCS`_moduleinst{`funcaddr*#2`}[x!`%`_idx{i#32425}.0] = a) + 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`{state#395 : state, `instr*#454` : instr*, z : state, heaptype#1307 : heaptype, ht : heaptype, typeuse#37 : typeuse, yy : typeuse}: - `%~>%`(`%;%`_config{state#395, `instr*#454`}(z, [`REF.NULL`_instr{heaptype#1307}(ht) `CALL_REF`_instr{typeuse#37}(yy)]), [`TRAP`_instr]) + 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`{state#407 : state, `instr*#466` : instr*, z : state, n : n, `val*` : val*, funcaddr#9 : funcaddr, a : addr, typeuse#39 : typeuse, yy : typeuse, n#1153 : n, frame#887 : frame, `instr*#468` : instr*, m : m, f : frame, n#1155 : n, `instr*#470` : instr*, `instr*` : instr*, fi : funcinst, deftype#6 : deftype, resulttype#2997 : resulttype, `X*#12499` : valtype*, `t_1*` : valtype*, `X*#12512` : valtype*, `t_2*` : valtype*, funccode#1 : funccode, typeidx#1553 : typeidx, `local*#1221` : local*, expr#4155 : expr, x : idx, `t*` : valtype*, `valtype#755*` : valtype*, `val?*#4` : val?*, moduleinst#22 : moduleinst, moduleinst#21 : moduleinst}: - `%~>%`(`%;%`_config{state#407, `instr*#466`}(z, (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr{funcaddr#9}(a) `CALL_REF`_instr{typeuse#39}(yy)]), [`FRAME_%{%}%`_instr{n#1153, frame#887, `instr*#468`}(m, f, [`LABEL_%{%}%`_instr{n#1155, `instr*#470`}(m, [], instr*{instr <- `instr*`})])]) + rule `call_ref-func`{z : state, n : n, `val*` : val*, 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{deftype#6}, `FUNC%->%`_comptype{resulttype#2997}(`%`_resulttype{`X*#12499`}(t_1^n{t_1 <- `t_1*`}), `%`_resulttype{`X*#12512`}(t_2^m{t_2 <- `t_2*`}))) - -- if (fi.`CODE`_funcinst{funccode#1} = `FUNC`_funccode{typeidx#1553, `local*#1221`, expr#4155}(x, `LOCAL`_local{valtype#755}(t)*{t <- `t*`, valtype#755 <- `valtype#755*`}, instr*{instr <- `instr*`})) - -- if (f = {`LOCALS`{`val?*#4`} ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, `MODULE`{moduleinst#22} fi.`MODULE`_funcinst{moduleinst#21}}) + -- 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{state#419 : state, `instr*#483` : instr*, z : state, funcidx#2839 : funcidx, x : idx, funcaddr#11 : funcaddr, a : addr, typeuse#41 : typeuse, deftype#7 : deftype, `funcaddr*#3` : funcaddr*, i#32463 : nat}: - `%~>%`(`%;%`_config{state#419, `instr*#483`}(z, [`RETURN_CALL`_instr{funcidx#2839}(x)]), [`REF.FUNC_ADDR`_instr{funcaddr#11}(a) `RETURN_CALL_REF`_instr{typeuse#41}(($funcinst(z)[a].`TYPE`_funcinst{deftype#7} : deftype <: typeuse))]) - -- if ($moduleinst(z).`FUNCS`_moduleinst{`funcaddr*#3`}[x!`%`_idx{i#32463}.0] = a) + 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`{state#431 : state, `instr*#495` : instr*, z : state, n#1163 : n, `instr*#497` : instr*, k : n, `instr'*` : instr*, `val*` : val*, typeuse#43 : typeuse, yy : typeuse, `instr*` : instr*, typeuse#45 : typeuse}: - `%~>%`(`%;%`_config{state#431, `instr*#495`}(z, [`LABEL_%{%}%`_instr{n#1163, `instr*#497`}(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr{typeuse#43}(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr{typeuse#45}(yy)]) + 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`{state#443 : state, `instr*#510` : instr*, z : state, n#1165 : n, `catch*#3` : catch*, `instr*#512` : instr*, k : n, `catch*` : catch*, `val*` : val*, typeuse#47 : typeuse, yy : typeuse, `instr*` : instr*, typeuse#49 : typeuse}: - `%~>%`(`%;%`_config{state#443, `instr*#510`}(z, [`HANDLER_%{%}%`_instr{n#1165, `catch*#3`, `instr*#512`}(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr{typeuse#47}(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr{typeuse#49}(yy)]) + 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`{state#455 : state, `instr*#524` : instr*, z : state, n#1167 : n, frame#931 : frame, `instr*#526` : instr*, k : n, f : frame, `val*` : val*, heaptype#1309 : heaptype, ht : heaptype, typeuse#51 : typeuse, yy : typeuse, `instr*` : instr*}: - `%~>%`(`%;%`_config{state#455, `instr*#524`}(z, [`FRAME_%{%}%`_instr{n#1167, frame#931, `instr*#526`}(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL`_instr{heaptype#1309}(ht)] ++ [`RETURN_CALL_REF`_instr{typeuse#51}(yy)] ++ instr*{instr <- `instr*`})]), [`TRAP`_instr]) + 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`{state#467 : state, `instr*#538` : instr*, z : state, n#1169 : n, frame#939 : frame, `instr*#540` : instr*, k : n, f : frame, `val'*` : val*, n : n, `val*` : val*, funcaddr#13 : funcaddr, a : addr, typeuse#53 : typeuse, yy : typeuse, `instr*` : instr*, funcaddr#15 : funcaddr, typeuse#55 : typeuse, deftype#8 : deftype, resulttype#3000 : resulttype, `X*#12527` : valtype*, `t_1*` : valtype*, `X*#12540` : valtype*, m : m, `t_2*` : valtype*}: - `%~>%`(`%;%`_config{state#467, `instr*#538`}(z, [`FRAME_%{%}%`_instr{n#1169, frame#939, `instr*#540`}(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr{funcaddr#13}(a)] ++ [`RETURN_CALL_REF`_instr{typeuse#53}(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr{funcaddr#15}(a) `CALL_REF`_instr{typeuse#55}(yy)]) - -- Expand: `%~~%`($funcinst(z)[a].`TYPE`_funcinst{deftype#8}, `FUNC%->%`_comptype{resulttype#3000}(`%`_resulttype{`X*#12527`}(t_1^n{t_1 <- `t_1*`}), `%`_resulttype{`X*#12540`}(t_2^m{t_2 <- `t_2*`}))) + rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, n : n, `val*` : val*, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, m : m, `t_2*` : valtype*}: + `%~>%`(`%;%`_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`{state#503 : state, `instr*#585` : instr*, z : state, heaptype#1335 : heaptype, ht : heaptype}: - `%~>%`(`%;%`_config{state#503, `instr*#585`}(z, [`REF.NULL`_instr{heaptype#1335}(ht) `THROW_REF`_instr]), [`TRAP`_instr]) + 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`{state#515 : state, `instr*#597` : instr*, z : state, `val*` : val*, exnaddr#5 : exnaddr, a : addr, `instr*` : instr*, exnaddr#7 : exnaddr}: - `%~>%`(`%;%`_config{state#515, `instr*#597`}(z, (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr{exnaddr#5}(a)] ++ [`THROW_REF`_instr] ++ instr*{instr <- `instr*`}), [`REF.EXN_ADDR`_instr{exnaddr#7}(a) `THROW_REF`_instr]) + 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`{state#527 : state, `instr*#609` : instr*, z : state, n#1191 : n, `instr*#611` : instr*, n : n, `instr'*` : instr*, exnaddr#9 : exnaddr, a : addr, exnaddr#11 : exnaddr}: - `%~>%`(`%;%`_config{state#527, `instr*#609`}(z, [`LABEL_%{%}%`_instr{n#1191, `instr*#611`}(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr{exnaddr#9}(a) `THROW_REF`_instr])]), [`REF.EXN_ADDR`_instr{exnaddr#11}(a) `THROW_REF`_instr]) + 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`{state#539 : state, `instr*#624` : instr*, z : state, n#1193 : n, frame#1011 : frame, `instr*#626` : instr*, n : n, f : frame, exnaddr#13 : exnaddr, a : addr, exnaddr#15 : exnaddr}: - `%~>%`(`%;%`_config{state#539, `instr*#624`}(z, [`FRAME_%{%}%`_instr{n#1193, frame#1011, `instr*#626`}(n, f, [`REF.EXN_ADDR`_instr{exnaddr#13}(a) `THROW_REF`_instr])]), [`REF.EXN_ADDR`_instr{exnaddr#15}(a) `THROW_REF`_instr]) + 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`{state#551 : state, `instr*#638` : instr*, z : state, n#1195 : n, `catch*#7` : catch*, `instr*#640` : instr*, n : n, exnaddr#17 : exnaddr, a : addr, exnaddr#19 : exnaddr}: - `%~>%`(`%;%`_config{state#551, `instr*#638`}(z, [`HANDLER_%{%}%`_instr{n#1195, `catch*#7`, `instr*#640`}(n, [], [`REF.EXN_ADDR`_instr{exnaddr#17}(a) `THROW_REF`_instr])]), [`REF.EXN_ADDR`_instr{exnaddr#19}(a) `THROW_REF`_instr]) + 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`{state#563 : state, `instr*#652` : instr*, z : state, n#1197 : n, `catch*#9` : catch*, `instr*#654` : instr*, n : n, tagidx#13 : tagidx, labelidx#85 : labelidx, x : idx, l : labelidx, `catch'*` : catch*, exnaddr#21 : exnaddr, a : addr, `val*` : val*, labelidx#87 : labelidx, tagaddr#6 : tagaddr, i#32603 : nat, `val*#2` : val*}: - `%~>%`(`%;%`_config{state#563, `instr*#652`}(z, [`HANDLER_%{%}%`_instr{n#1197, `catch*#9`, `instr*#654`}(n, [`CATCH`_catch{tagidx#13, labelidx#85}(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#21}(a) `THROW_REF`_instr])]), (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr{labelidx#87}(l)]) - -- if ($exninst(z)[a].`TAG`_exninst{tagaddr#6} = $tagaddr(z)[x!`%`_idx{i#32603}.0]) - -- if (val*{val <- `val*`} = $exninst(z)[a].`FIELDS`_exninst{`val*#2`}) + 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`{state#575 : state, `instr*#666` : instr*, z : state, n#1199 : n, `catch*#11` : catch*, `instr*#668` : instr*, n : n, tagidx#15 : tagidx, labelidx#89 : labelidx, x : idx, l : labelidx, `catch'*` : catch*, exnaddr#23 : exnaddr, a : addr, `val*` : val*, exnaddr#25 : exnaddr, labelidx#91 : labelidx, tagaddr#7 : tagaddr, i#32651 : nat, `val*#3` : val*}: - `%~>%`(`%;%`_config{state#575, `instr*#666`}(z, [`HANDLER_%{%}%`_instr{n#1199, `catch*#11`, `instr*#668`}(n, [`CATCH_REF`_catch{tagidx#15, labelidx#89}(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#23}(a) `THROW_REF`_instr])]), (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr{exnaddr#25}(a) `BR`_instr{labelidx#91}(l)]) - -- if ($exninst(z)[a].`TAG`_exninst{tagaddr#7} = $tagaddr(z)[x!`%`_idx{i#32651}.0]) - -- if (val*{val <- `val*`} = $exninst(z)[a].`FIELDS`_exninst{`val*#3`}) + 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`{state#587 : state, `instr*#680` : instr*, z : state, n#1201 : n, `catch*#13` : catch*, `instr*#682` : instr*, n : n, labelidx#93 : labelidx, l : labelidx, `catch'*` : catch*, exnaddr#27 : exnaddr, a : addr, labelidx#95 : labelidx}: - `%~>%`(`%;%`_config{state#587, `instr*#680`}(z, [`HANDLER_%{%}%`_instr{n#1201, `catch*#13`, `instr*#682`}(n, [`CATCH_ALL`_catch{labelidx#93}(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#27}(a) `THROW_REF`_instr])]), [`BR`_instr{labelidx#95}(l)]) + 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`{state#599 : state, `instr*#694` : instr*, z : state, n#1203 : n, `catch*#15` : catch*, `instr*#696` : instr*, n : n, labelidx#97 : labelidx, l : labelidx, `catch'*` : catch*, exnaddr#29 : exnaddr, a : addr, exnaddr#31 : exnaddr, labelidx#99 : labelidx}: - `%~>%`(`%;%`_config{state#599, `instr*#694`}(z, [`HANDLER_%{%}%`_instr{n#1203, `catch*#15`, `instr*#696`}(n, [`CATCH_ALL_REF`_catch{labelidx#97}(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#29}(a) `THROW_REF`_instr])]), [`REF.EXN_ADDR`_instr{exnaddr#31}(a) `BR`_instr{labelidx#99}(l)]) + 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`{state#611 : state, `instr*#708` : instr*, z : state, n#1205 : n, `catch*#17` : catch*, `instr*#710` : instr*, n : n, catch : catch, `catch'*` : catch*, exnaddr#33 : exnaddr, a : addr, n#1207 : n, `catch*#19` : catch*, `instr*#712` : instr*, exnaddr#35 : exnaddr}: - `%~>%`(`%;%`_config{state#611, `instr*#708`}(z, [`HANDLER_%{%}%`_instr{n#1205, `catch*#17`, `instr*#710`}(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#33}(a) `THROW_REF`_instr])]), [`HANDLER_%{%}%`_instr{n#1207, `catch*#19`, `instr*#712`}(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr{exnaddr#35}(a) `THROW_REF`_instr])]) + 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{state#623 : state, `instr*#724` : instr*, z : state, m : m, `val*` : val*, blocktype#29 : blocktype, `instr*#726` : instr*, bt : blocktype, `X*#12591` : catch*, `catch*` : catch*, `instr*` : instr*, n#1209 : n, `catch*#21` : catch*, `instr*#728` : instr*, n : n, n#1211 : n, `instr*#730` : instr*, resulttype#3023 : resulttype, `localidx*#1805` : localidx*, `X*#12604` : valtype*, `t_1*` : valtype*, `X*#12655` : valtype*, `t_2*` : valtype*}: - `%~>%`(`%;%`_config{state#623, `instr*#724`}(z, (val : val <: instr)^m{val <- `val*`} ++ [`TRY_TABLE`_instr{blocktype#29, `instr*#726`}(bt, `%`_list{`X*#12591`}(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr{n#1209, `catch*#21`, `instr*#728`}(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr{n#1211, `instr*#730`}(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) - -- if ($blocktype_(z, bt) = `%->_%%`_instrtype{resulttype#3023, `localidx*#1805`}(`%`_resulttype{`X*#12604`}(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#12655`}(t_2^n{t_2 <- `t_2*`}))) + rule try_table{z : state, m : m, `val*` : val*, 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{state#635 : state, `instr*#750` : instr*, z : state, localidx#13 : localidx, x : idx, val : val}: - `%~>%`(`%;%`_config{state#635, `instr*#750`}(z, [`LOCAL.GET`_instr{localidx#13}(x)]), [(val : val <: instr)]) + 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{state#671 : state, `instr*#786` : instr*, z : state, globalidx#17 : globalidx, x : idx, val : val, val#2 : val}: - `%~>%`(`%;%`_config{state#671, `instr*#786`}(z, [`GLOBAL.GET`_instr{globalidx#17}(x)]), [(val : val <: instr)]) - -- if ($global(z, x).`VALUE`_globalinst{val#2} = val) + 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`{state#707 : state, `instr*#822` : instr*, z : state, numtype#75 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), tableidx#57 : tableidx, x : idx, i#32897 : nat, `ref*#5` : ref*}: - `%~>%`(`%;%`_config{state#707, `instr*#822`}(z, [`CONST`_instr{numtype#75}((at : addrtype <: numtype), i) `TABLE.GET`_instr{tableidx#57}(x)]), [`TRAP`_instr]) - -- if (i!`%`_num_{i#32897}.0 >= |$table(z, x).`REFS`_tableinst{`ref*#5`}|) + 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`{state#719 : state, `instr*#834` : instr*, z : state, numtype#77 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), tableidx#59 : tableidx, x : idx, `ref*#6` : ref*, i#32947 : nat, i#32973 : nat, `ref*#7` : ref*}: - `%~>%`(`%;%`_config{state#719, `instr*#834`}(z, [`CONST`_instr{numtype#77}((at : addrtype <: numtype), i) `TABLE.GET`_instr{tableidx#59}(x)]), [($table(z, x).`REFS`_tableinst{`ref*#6`}[i!`%`_num_{i#32947}.0] : ref <: instr)]) - -- if (i!`%`_num_{i#32973}.0 < |$table(z, x).`REFS`_tableinst{`ref*#7`}|) + 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{state#779 : state, `instr*#894` : instr*, z : state, tableidx#65 : tableidx, x : idx, numtype#83 : numtype, at : addrtype, i#33141 : nat, n : n, `ref*#10` : ref*, tabletype#880 : tabletype, addrtype#1123 : addrtype, limits#1123 : limits, reftype#3465 : reftype, lim : limits, rt : reftype}: - `%~>%`(`%;%`_config{state#779, `instr*#894`}(z, [`TABLE.SIZE`_instr{tableidx#65}(x)]), [`CONST`_instr{numtype#83}((at : addrtype <: numtype), `%`_num_{i#33141}(n))]) - -- if (|$table(z, x).`REFS`_tableinst{`ref*#10`}| = n) - -- if ($table(z, x).`TYPE`_tableinst{tabletype#880} = `%%%`_tabletype{addrtype#1123, limits#1123, reftype#3465}(at, lim, rt)) + 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`{state#839 : state, `instr*#954` : instr*, z : state, numtype#93 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, numtype#95 : numtype, i#33359 : nat, n : n, tableidx#71 : tableidx, x : idx, i#33387 : nat, `ref*#12` : ref*}: - `%~>%`(`%;%`_config{state#839, `instr*#954`}(z, [`CONST`_instr{numtype#93}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#95}((at : addrtype <: numtype), `%`_num_{i#33359}(n)) `TABLE.FILL`_instr{tableidx#71}(x)]), [`TRAP`_instr]) - -- if ((i!`%`_num_{i#33387}.0 + n) > |$table(z, x).`REFS`_tableinst{`ref*#12`}|) + 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`{state#851 : state, `instr*#966` : instr*, z : state, numtype#97 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, numtype#99 : numtype, i#33437 : nat, n : n, tableidx#73 : tableidx, x : idx}: - `%~>%`(`%;%`_config{state#851, `instr*#966`}(z, [`CONST`_instr{numtype#97}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#99}((at : addrtype <: numtype), `%`_num_{i#33437}(n)) `TABLE.FILL`_instr{tableidx#73}(x)]), []) + 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`{state#863 : state, `instr*#978` : instr*, z : state, numtype#101 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, numtype#103 : numtype, i#33489 : nat, n : n, tableidx#75 : tableidx, x : idx, numtype#105 : numtype, tableidx#77 : tableidx, numtype#107 : numtype, i#33565 : nat, i#33555 : nat, numtype#109 : numtype, i#33587 : nat, tableidx#79 : tableidx}: - `%~>%`(`%;%`_config{state#863, `instr*#978`}(z, [`CONST`_instr{numtype#101}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#103}((at : addrtype <: numtype), `%`_num_{i#33489}(n)) `TABLE.FILL`_instr{tableidx#75}(x)]), [`CONST`_instr{numtype#105}((at : addrtype <: numtype), i) (val : val <: instr) `TABLE.SET`_instr{tableidx#77}(x) `CONST`_instr{numtype#107}((at : addrtype <: numtype), `%`_num_{i#33565}((i!`%`_num_{i#33555}.0 + 1))) (val : val <: instr) `CONST`_instr{numtype#109}((at : addrtype <: numtype), `%`_num_{i#33587}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `TABLE.FILL`_instr{tableidx#79}(x)]) + 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`{state#875 : state, `instr*#990` : instr*, z : state, numtype#111 : numtype, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), numtype#113 : numtype, at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), numtype#115 : numtype, at' : addrtype, i#33653 : nat, n : n, tableidx#81 : tableidx, x_1 : idx, x_2 : idx, i#33695 : nat, `ref*#13` : ref*, i#33721 : nat, `ref*#14` : ref*}: - `%~>%`(`%;%`_config{state#875, `instr*#990`}(z, [`CONST`_instr{numtype#111}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#113}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#115}((at' : addrtype <: numtype), `%`_num_{i#33653}(n)) `TABLE.COPY`_instr{tableidx#81}(x_1, x_2)]), [`TRAP`_instr]) - -- if (((i_1!`%`_num_{i#33695}.0 + n) > |$table(z, x_1).`REFS`_tableinst{`ref*#13`}|) \/ ((i_2!`%`_num_{i#33721}.0 + n) > |$table(z, x_2).`REFS`_tableinst{`ref*#14`}|)) + 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`{state#887 : state, `instr*#1002` : instr*, z : state, numtype#117 : numtype, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), numtype#119 : numtype, at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), numtype#121 : numtype, at' : addrtype, i#33785 : nat, n : n, tableidx#84 : tableidx, x : idx, y : idx}: - `%~>%`(`%;%`_config{state#887, `instr*#1002`}(z, [`CONST`_instr{numtype#117}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#119}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#121}((at' : addrtype <: numtype), `%`_num_{i#33785}(n)) `TABLE.COPY`_instr{tableidx#84}(x, y)]), []) + 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`{state#899 : state, `instr*#1014` : instr*, z : state, numtype#123 : numtype, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), numtype#125 : numtype, at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), numtype#127 : numtype, at' : addrtype, i#33865 : nat, n : n, tableidx#87 : tableidx, x : idx, y : idx, numtype#129 : numtype, numtype#131 : numtype, tableidx#90 : tableidx, tableidx#92 : tableidx, numtype#133 : numtype, i#33981 : nat, i#33971 : nat, numtype#135 : numtype, i#34017 : nat, i#34007 : nat, numtype#137 : numtype, i#34039 : nat, tableidx#94 : tableidx, i#34085 : nat, i#34095 : nat}: - `%~>%`(`%;%`_config{state#899, `instr*#1014`}(z, [`CONST`_instr{numtype#123}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#125}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#127}((at' : addrtype <: numtype), `%`_num_{i#33865}(n)) `TABLE.COPY`_instr{tableidx#87}(x, y)]), [`CONST`_instr{numtype#129}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#131}((at_2 : addrtype <: numtype), i_2) `TABLE.GET`_instr{tableidx#90}(y) `TABLE.SET`_instr{tableidx#92}(x) `CONST`_instr{numtype#133}((at_1 : addrtype <: numtype), `%`_num_{i#33981}((i_1!`%`_num_{i#33971}.0 + 1))) `CONST`_instr{numtype#135}((at_2 : addrtype <: numtype), `%`_num_{i#34017}((i_2!`%`_num_{i#34007}.0 + 1))) `CONST`_instr{numtype#137}((at' : addrtype <: numtype), `%`_num_{i#34039}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `TABLE.COPY`_instr{tableidx#94}(x, y)]) + 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_{i#34085}.0 <= i_2!`%`_num_{i#34095}.0) + -- if (i_1!`%`_num_.0 <= i_2!`%`_num_.0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `table.copy-gt`{state#911 : state, `instr*#1026` : instr*, z : state, numtype#139 : numtype, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), numtype#141 : numtype, at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), numtype#143 : numtype, at' : addrtype, i#34147 : nat, n : n, tableidx#97 : tableidx, x : idx, y : idx, numtype#145 : numtype, i#34211 : nat, i#34201 : nat, numtype#147 : numtype, i#34247 : nat, i#34237 : nat, tableidx#100 : tableidx, tableidx#102 : tableidx, numtype#149 : numtype, numtype#151 : numtype, numtype#153 : numtype, i#34321 : nat, tableidx#104 : tableidx}: - `%~>%`(`%;%`_config{state#911, `instr*#1026`}(z, [`CONST`_instr{numtype#139}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#141}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#143}((at' : addrtype <: numtype), `%`_num_{i#34147}(n)) `TABLE.COPY`_instr{tableidx#97}(x, y)]), [`CONST`_instr{numtype#145}((at_1 : addrtype <: numtype), `%`_num_{i#34211}(((((i_1!`%`_num_{i#34201}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `CONST`_instr{numtype#147}((at_2 : addrtype <: numtype), `%`_num_{i#34247}(((((i_2!`%`_num_{i#34237}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `TABLE.GET`_instr{tableidx#100}(y) `TABLE.SET`_instr{tableidx#102}(x) `CONST`_instr{numtype#149}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#151}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#153}((at' : addrtype <: numtype), `%`_num_{i#34321}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `TABLE.COPY`_instr{tableidx#104}(x, y)]) + 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`{state#923 : state, `instr*#1038` : instr*, z : state, numtype#155 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), numtype#157 : numtype, j : num_(`I32`_numtype), numtype#159 : numtype, i#34401 : nat, n : n, tableidx#107 : tableidx, elemidx#17 : elemidx, x : idx, y : idx, i#34443 : nat, `ref*#15` : ref*, i#34469 : nat, `ref*#16` : ref*}: - `%~>%`(`%;%`_config{state#923, `instr*#1038`}(z, [`CONST`_instr{numtype#155}((at : addrtype <: numtype), i) `CONST`_instr{numtype#157}(`I32`_numtype, j) `CONST`_instr{numtype#159}(`I32`_numtype, `%`_num_{i#34401}(n)) `TABLE.INIT`_instr{tableidx#107, elemidx#17}(x, y)]), [`TRAP`_instr]) - -- if (((i!`%`_num_{i#34443}.0 + n) > |$table(z, x).`REFS`_tableinst{`ref*#15`}|) \/ ((j!`%`_num_{i#34469}.0 + n) > |$elem(z, y).`REFS`_eleminst{`ref*#16`}|)) + 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`{state#935 : state, `instr*#1050` : instr*, z : state, numtype#161 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), numtype#163 : numtype, j : num_(`I32`_numtype), numtype#165 : numtype, i#34533 : nat, n : n, tableidx#109 : tableidx, elemidx#19 : elemidx, x : idx, y : idx}: - `%~>%`(`%;%`_config{state#935, `instr*#1050`}(z, [`CONST`_instr{numtype#161}((at : addrtype <: numtype), i) `CONST`_instr{numtype#163}(`I32`_numtype, j) `CONST`_instr{numtype#165}(`I32`_numtype, `%`_num_{i#34533}(n)) `TABLE.INIT`_instr{tableidx#109, elemidx#19}(x, y)]), []) + 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`{state#947 : state, `instr*#1062` : instr*, z : state, numtype#167 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), numtype#169 : numtype, j : num_(`I32`_numtype), numtype#171 : numtype, i#34613 : nat, n : n, tableidx#111 : tableidx, elemidx#21 : elemidx, x : idx, y : idx, numtype#173 : numtype, `ref*#17` : ref*, i#34675 : nat, tableidx#113 : tableidx, numtype#175 : numtype, i#34725 : nat, i#34715 : nat, numtype#177 : numtype, i#34761 : nat, i#34751 : nat, numtype#179 : numtype, i#34783 : nat, tableidx#115 : tableidx, elemidx#23 : elemidx}: - `%~>%`(`%;%`_config{state#947, `instr*#1062`}(z, [`CONST`_instr{numtype#167}((at : addrtype <: numtype), i) `CONST`_instr{numtype#169}(`I32`_numtype, j) `CONST`_instr{numtype#171}(`I32`_numtype, `%`_num_{i#34613}(n)) `TABLE.INIT`_instr{tableidx#111, elemidx#21}(x, y)]), [`CONST`_instr{numtype#173}((at : addrtype <: numtype), i) ($elem(z, y).`REFS`_eleminst{`ref*#17`}[j!`%`_num_{i#34675}.0] : ref <: instr) `TABLE.SET`_instr{tableidx#113}(x) `CONST`_instr{numtype#175}((at : addrtype <: numtype), `%`_num_{i#34725}((i!`%`_num_{i#34715}.0 + 1))) `CONST`_instr{numtype#177}(`I32`_numtype, `%`_num_{i#34761}((j!`%`_num_{i#34751}.0 + 1))) `CONST`_instr{numtype#179}(`I32`_numtype, `%`_num_{i#34783}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `TABLE.INIT`_instr{tableidx#115, elemidx#23}(x, y)]) + 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`{state#983 : state, `instr*#1098` : instr*, z : state, numtype#181 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), `numtype?#7` : numtype?, memidx#67 : memidx, memarg#35 : memarg, nt : numtype, x : idx, ao : memarg, i#34883 : nat, u64#405 : u64, i#34893 : nat, `byte*#1849` : byte*}: - `%~>%`(`%;%`_config{state#983, `instr*#1098`}(z, [`CONST`_instr{numtype#181}((at : addrtype <: numtype), i) `LOAD`_instr{`numtype?#7`, memidx#67, memarg#35}(nt, ?(), x, ao)]), [`TRAP`_instr]) - -- if (((i!`%`_num_{i#34883}.0 + ao.`OFFSET`_memarg{u64#405}!`%`_u64{i#34893}.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst{`byte*#1849`}|) + 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`{state#995 : state, `instr*#1110` : instr*, z : state, numtype#184 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), `numtype?#8` : numtype?, memidx#69 : memidx, memarg#37 : memarg, nt : numtype, x : idx, ao : memarg, numtype#187 : numtype, c : num_(nt), `byte*#1850` : byte*, i#34963 : nat, u64#406 : u64, i#34973 : nat}: - `%~>%`(`%;%`_config{state#995, `instr*#1110`}(z, [`CONST`_instr{numtype#184}((at : addrtype <: numtype), i) `LOAD`_instr{`numtype?#8`, memidx#69, memarg#37}(nt, ?(), x, ao)]), [`CONST`_instr{numtype#187}(nt, c)]) - -- if ($nbytes_(nt, c) = $mem(z, x).`BYTES`_meminst{`byte*#1850`}[(i!`%`_num_{i#34963}.0 + ao.`OFFSET`_memarg{u64#406}!`%`_u64{i#34973}.0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + 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`{state#1007 : state, `instr*#1122` : instr*, z : state, numtype#189 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), `numtype?#9` : numtype?, memidx#71 : memidx, memarg#39 : memarg, Inn : Inn, sz#156 : sz, sx#270 : sx, i#35021 : nat, i#35028 : nat, n : n, sx : sx, x : idx, ao : memarg, i#35060 : nat, u64#407 : u64, i#35070 : nat, `byte*#1851` : byte*}: - `%~>%`(`%;%`_config{state#1007, `instr*#1122`}(z, [`CONST`_instr{numtype#189}((at : addrtype <: numtype), i) `LOAD`_instr{`numtype?#9`, memidx#71, memarg#39}((Inn : Inn <: numtype), ?(`%_%`_loadop_{sz#156, sx#270, i#35021}(`%`_sz{i#35028}(n), sx)), x, ao)]), [`TRAP`_instr]) - -- if (((i!`%`_num_{i#35060}.0 + ao.`OFFSET`_memarg{u64#407}!`%`_u64{i#35070}.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst{`byte*#1851`}|) + 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 : Inn <: 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`{state#1019 : state, `instr*#1134` : instr*, z : state, numtype#192 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), `numtype?#10` : numtype?, memidx#73 : memidx, memarg#41 : memarg, Inn : Inn, sz#158 : sz, sx#272 : sx, i#35122 : nat, i#35129 : nat, n : n, sx : sx, x : idx, ao : memarg, numtype#195 : numtype, c : iN(n), `byte*#1852` : byte*, i#35199 : nat, u64#408 : u64, i#35209 : nat}: - `%~>%`(`%;%`_config{state#1019, `instr*#1134`}(z, [`CONST`_instr{numtype#192}((at : addrtype <: numtype), i) `LOAD`_instr{`numtype?#10`, memidx#73, memarg#41}((Inn : Inn <: numtype), ?(`%_%`_loadop_{sz#158, sx#272, i#35122}(`%`_sz{i#35129}(n), sx)), x, ao)]), [`CONST`_instr{numtype#195}((Inn : Inn <: numtype), $extend__(n, $size((Inn : Inn <: numtype)), sx, c))]) - -- if ($ibytes_(n, c) = $mem(z, x).`BYTES`_meminst{`byte*#1852`}[(i!`%`_num_{i#35199}.0 + ao.`OFFSET`_memarg{u64#408}!`%`_u64{i#35209}.0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + 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 : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n), sx)), x, ao)]), [`CONST`_instr((Inn : Inn <: numtype), $extend__(n, $size((Inn : Inn <: 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`{state#1031 : state, `instr*#1146` : instr*, z : state, numtype#197 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), `vectype?#6` : vectype?, memidx#75 : memidx, memarg#43 : memarg, x : idx, ao : memarg, i#35293 : nat, u64#409 : u64, i#35303 : nat, `byte*#1853` : byte*}: - `%~>%`(`%;%`_config{state#1031, `instr*#1146`}(z, [`CONST`_instr{numtype#197}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#6`, memidx#75, memarg#43}(`V128`_vectype, ?(), x, ao)]), [`TRAP`_instr]) - -- if (((i!`%`_num_{i#35293}.0 + ao.`OFFSET`_memarg{u64#409}!`%`_u64{i#35303}.0) + ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst{`byte*#1853`}|) + 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`{state#1043 : state, `instr*#1158` : instr*, z : state, numtype#199 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), `vectype?#7` : vectype?, memidx#77 : memidx, memarg#45 : memarg, x : idx, ao : memarg, vectype#64 : vectype, c : vec_(`V128`_Vnn), `byte*#1854` : byte*, i#35387 : nat, u64#410 : u64, i#35397 : nat}: - `%~>%`(`%;%`_config{state#1043, `instr*#1158`}(z, [`CONST`_instr{numtype#199}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#7`, memidx#77, memarg#45}(`V128`_vectype, ?(), x, ao)]), [`VCONST`_instr{vectype#64}(`V128`_vectype, c)]) - -- if ($vbytes_(`V128`_vectype, c) = $mem(z, x).`BYTES`_meminst{`byte*#1854`}[(i!`%`_num_{i#35387}.0 + ao.`OFFSET`_memarg{u64#410}!`%`_u64{i#35397}.0) : ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + 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`{state#1055 : state, `instr*#1170` : instr*, z : state, numtype#201 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), `vectype?#8` : vectype?, memidx#79 : memidx, memarg#47 : memarg, sz#205 : sz, M#63 : M, sx#289 : sx, i#35475 : nat, i#35482 : nat, M : M, K : K, sx : sx, x : idx, ao : memarg, i#35514 : nat, u64#411 : u64, i#35524 : nat, `byte*#1855` : byte*}: - `%~>%`(`%;%`_config{state#1055, `instr*#1170`}(z, [`CONST`_instr{numtype#201}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#8`, memidx#79, memarg#47}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#205, M#63, sx#289, i#35475}(`%`_sz{i#35482}(M), K, sx)), x, ao)]), [`TRAP`_instr]) - -- if (((i!`%`_num_{i#35514}.0 + ao.`OFFSET`_memarg{u64#411}!`%`_u64{i#35524}.0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst{`byte*#1855`}|) + 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`{state#1067 : state, `instr*#1182` : instr*, z : state, numtype#203 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), `vectype?#9` : vectype?, memidx#81 : memidx, memarg#49 : memarg, sz#252 : sz, M#80 : M, sx#306 : sx, i#35576 : nat, i#35583 : nat, M : M, K : K, sx : sx, x : idx, ao : memarg, vectype#68 : vectype, c : vec_(`V128`_Vnn), k : nat, `byte*#1856*` : byte**, `i#35641*` : nat*, `i#35651*` : nat*, `j*` : iN(M)*, `u64#412*` : u64*, lanetype#7243 : lanetype, dim#7243 : dim, i#35700 : nat, Jnn : Jnn, i#35707 : nat}: - `%~>%`(`%;%`_config{state#1067, `instr*#1182`}(z, [`CONST`_instr{numtype#203}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#9`, memidx#81, memarg#49}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#252, M#80, sx#306, i#35576}(`%`_sz{i#35583}(M), K, sx)), x, ao)]), [`VCONST`_instr{vectype#68}(`V128`_vectype, c)]) - -- (if ($ibytes_(M, j) = $mem(z, x).`BYTES`_meminst{`byte*#1856`}[((i!`%`_num_{i#35641}.0 + ao.`OFFSET`_memarg{u64#412}!`%`_u64{i#35651}.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, ?(`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{state#1079, `instr*#1194`}(z, [`CONST`_instr{numtype#205}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#10`, memidx#83, memarg#51}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#299}(`%`_sz{i#35834}(N))), x, ao)]), [`TRAP`_instr]) - -- if (((i!`%`_num_{i#35866}.0 + ao.`OFFSET`_memarg{u64#413}!`%`_u64{i#35876}.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst{`byte*#1857`}|) + rule `vload-splat-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, ?(`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`{state#1091 : state, `instr*#1206` : instr*, z : state, numtype#207 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), `vectype?#11` : vectype?, memidx#85 : memidx, memarg#53 : memarg, sz#346 : sz, i#35934 : nat, N : N, x : idx, ao : memarg, vectype#72 : vectype, c : vec_(`V128`_Vnn), j : iN(N), `byte*#1858` : byte*, i#35992 : nat, u64#414 : u64, i#36002 : nat, Jnn : Jnn, M : M, lanetype#7267 : lanetype, dim#7267 : dim, i#36033 : nat, i#36040 : nat, `i#36120*` : nat*, `i#36121*` : nat*}: - `%~>%`(`%;%`_config{state#1091, `instr*#1206`}(z, [`CONST`_instr{numtype#207}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#11`, memidx#85, memarg#53}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#346}(`%`_sz{i#35934}(N))), x, ao)]), [`VCONST`_instr{vectype#72}(`V128`_vectype, c)]) - -- if ($ibytes_(N, j) = $mem(z, x).`BYTES`_meminst{`byte*#1858`}[(i!`%`_num_{i#35992}.0 + ao.`OFFSET`_memarg{u64#414}!`%`_u64{i#36002}.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + 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{lanetype#7267, dim#7267, i#36033}((Jnn : Jnn <: lanetype), `%`_dim{i#36040}(M)), `%`_lane_{i#36121}(j!`%`_iN{i#36120}.0)^M{i#36120 <- `i#36120*`, i#36121 <- `i#36121*`})) + -- 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`{state#1103 : state, `instr*#1218` : instr*, z : state, numtype#209 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), `vectype?#12` : vectype?, memidx#87 : memidx, memarg#55 : memarg, sz#393 : sz, i#36172 : nat, i#36179 : nat, N : N, x : idx, ao : memarg, i#36211 : nat, u64#415 : u64, i#36221 : nat, `byte*#1859` : byte*}: - `%~>%`(`%;%`_config{state#1103, `instr*#1218`}(z, [`CONST`_instr{numtype#209}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#12`, memidx#87, memarg#55}(`V128`_vectype, ?(`ZERO`_vloadop_{sz#393, i#36172}(`%`_sz{i#36179}(N))), x, ao)]), [`TRAP`_instr]) - -- if (((i!`%`_num_{i#36211}.0 + ao.`OFFSET`_memarg{u64#415}!`%`_u64{i#36221}.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst{`byte*#1859`}|) + 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`{state#1115 : state, `instr*#1230` : instr*, z : state, numtype#211 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), `vectype?#13` : vectype?, memidx#89 : memidx, memarg#57 : memarg, sz#440 : sz, i#36273 : nat, i#36280 : nat, N : N, x : idx, ao : memarg, vectype#76 : vectype, c : vec_(`V128`_Vnn), j : iN(N), `byte*#1860` : byte*, i#36338 : nat, u64#416 : u64, i#36348 : nat}: - `%~>%`(`%;%`_config{state#1115, `instr*#1230`}(z, [`CONST`_instr{numtype#211}((at : addrtype <: numtype), i) `VLOAD`_instr{`vectype?#13`, memidx#89, memarg#57}(`V128`_vectype, ?(`ZERO`_vloadop_{sz#440, i#36273}(`%`_sz{i#36280}(N))), x, ao)]), [`VCONST`_instr{vectype#76}(`V128`_vectype, c)]) - -- if ($ibytes_(N, j) = $mem(z, x).`BYTES`_meminst{`byte*#1860`}[(i!`%`_num_{i#36338}.0 + ao.`OFFSET`_memarg{u64#416}!`%`_u64{i#36348}.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + 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`{state#1127 : state, `instr*#1242` : instr*, z : state, numtype#213 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), vectype#78 : vectype, c_1 : vec_(`V128`_Vnn), vectype#80 : vectype, sz#442 : sz, memidx#91 : memidx, memarg#59 : memarg, laneidx#17 : laneidx, i#36428 : nat, N : N, x : idx, ao : memarg, j : laneidx, i#36474 : nat, u64#417 : u64, i#36484 : nat, `byte*#1861` : byte*}: - `%~>%`(`%;%`_config{state#1127, `instr*#1242`}(z, [`CONST`_instr{numtype#213}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#78}(`V128`_vectype, c_1) `VLOAD_LANE`_instr{vectype#80, sz#442, memidx#91, memarg#59, laneidx#17}(`V128`_vectype, `%`_sz{i#36428}(N), x, ao, j)]), [`TRAP`_instr]) - -- if (((i!`%`_num_{i#36474}.0 + ao.`OFFSET`_memarg{u64#417}!`%`_u64{i#36484}.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst{`byte*#1861`}|) + 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`{state#1139 : state, `instr*#1254` : instr*, z : state, numtype#215 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), vectype#82 : vectype, c_1 : vec_(`V128`_Vnn), vectype#84 : vectype, sz#444 : sz, memidx#93 : memidx, memarg#61 : memarg, laneidx#19 : laneidx, i#36532 : nat, N : N, x : idx, ao : memarg, j : laneidx, vectype#86 : vectype, c : vec_(`V128`_Vnn), k : iN(N), `byte*#1862` : byte*, i#36604 : nat, u64#418 : u64, i#36614 : nat, Jnn : Jnn, M : M, lanetype#7292 : lanetype, dim#7292 : dim, i#36645 : nat, i#36652 : nat, lanetype#7383 : lanetype, dim#7383 : dim, i#36877 : nat, i#36884 : nat, i#36910 : nat, i#36957 : nat, i#36956 : nat}: - `%~>%`(`%;%`_config{state#1139, `instr*#1254`}(z, [`CONST`_instr{numtype#215}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#82}(`V128`_vectype, c_1) `VLOAD_LANE`_instr{vectype#84, sz#444, memidx#93, memarg#61, laneidx#19}(`V128`_vectype, `%`_sz{i#36532}(N), x, ao, j)]), [`VCONST`_instr{vectype#86}(`V128`_vectype, c)]) - -- if ($ibytes_(N, k) = $mem(z, x).`BYTES`_meminst{`byte*#1862`}[(i!`%`_num_{i#36604}.0 + ao.`OFFSET`_memarg{u64#418}!`%`_u64{i#36614}.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + 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{lanetype#7292, dim#7292, i#36645}((Jnn : Jnn <: lanetype), `%`_dim{i#36652}(M)), $lanes_(`%X%`_shape{lanetype#7383, dim#7383, i#36877}((Jnn : Jnn <: lanetype), `%`_dim{i#36884}(M)), c_1)[[j!`%`_laneidx{i#36910}.0] = `%`_lane_{i#36957}(k!`%`_iN{i#36956}.0)])) + -- 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{state#1343 : state, `instr*#1458` : instr*, z : state, memidx#111 : memidx, x : idx, numtype#245 : numtype, at : addrtype, i#37958 : nat, n : n, `byte*#1867` : byte*, memtype#530 : memtype, addrtype#1135 : addrtype, limits#1135 : limits, lim : limits}: - `%~>%`(`%;%`_config{state#1343, `instr*#1458`}(z, [`MEMORY.SIZE`_instr{memidx#111}(x)]), [`CONST`_instr{numtype#245}((at : addrtype <: numtype), `%`_num_{i#37958}(n))]) - -- if ((n * (64 * $Ki)) = |$mem(z, x).`BYTES`_meminst{`byte*#1867`}|) - -- if ($mem(z, x).`TYPE`_meminst{memtype#530} = `%%PAGE`_memtype{addrtype#1135, limits#1135}(at, lim)) + 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`{state#1403 : state, `instr*#1518` : instr*, z : state, numtype#255 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, numtype#257 : numtype, i#38176 : nat, n : n, memidx#117 : memidx, x : idx, i#38204 : nat, `byte*#1869` : byte*}: - `%~>%`(`%;%`_config{state#1403, `instr*#1518`}(z, [`CONST`_instr{numtype#255}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#257}((at : addrtype <: numtype), `%`_num_{i#38176}(n)) `MEMORY.FILL`_instr{memidx#117}(x)]), [`TRAP`_instr]) - -- if ((i!`%`_num_{i#38204}.0 + n) > |$mem(z, x).`BYTES`_meminst{`byte*#1869`}|) + 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`{state#1415 : state, `instr*#1530` : instr*, z : state, numtype#259 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, numtype#261 : numtype, i#38254 : nat, n : n, memidx#119 : memidx, x : idx}: - `%~>%`(`%;%`_config{state#1415, `instr*#1530`}(z, [`CONST`_instr{numtype#259}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#261}((at : addrtype <: numtype), `%`_num_{i#38254}(n)) `MEMORY.FILL`_instr{memidx#119}(x)]), []) + 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`{state#1427 : state, `instr*#1542` : instr*, z : state, numtype#263 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, numtype#265 : numtype, i#38306 : nat, n : n, memidx#121 : memidx, x : idx, numtype#267 : numtype, `numtype?#15` : numtype?, memidx#123 : memidx, memarg#79 : memarg, sz#465 : sz, i#38373 : nat, i#38374 : nat, numtype#270 : numtype, i#38424 : nat, i#38414 : nat, numtype#272 : numtype, i#38446 : nat, memidx#125 : memidx}: - `%~>%`(`%;%`_config{state#1427, `instr*#1542`}(z, [`CONST`_instr{numtype#263}((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr{numtype#265}((at : addrtype <: numtype), `%`_num_{i#38306}(n)) `MEMORY.FILL`_instr{memidx#121}(x)]), [`CONST`_instr{numtype#267}((at : addrtype <: numtype), i) (val : val <: instr) `STORE`_instr{`numtype?#15`, memidx#123, memarg#79}(`I32`_numtype, ?(`%`_storeop_{sz#465, i#38373}(`%`_sz{i#38374}(8))), x, $memarg0) `CONST`_instr{numtype#270}((at : addrtype <: numtype), `%`_num_{i#38424}((i!`%`_num_{i#38414}.0 + 1))) (val : val <: instr) `CONST`_instr{numtype#272}((at : addrtype <: numtype), `%`_num_{i#38446}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `MEMORY.FILL`_instr{memidx#125}(x)]) + 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`{state#1439 : state, `instr*#1554` : instr*, z : state, numtype#274 : numtype, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), numtype#276 : numtype, at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), numtype#278 : numtype, at' : addrtype, i#38512 : nat, n : n, memidx#127 : memidx, x_1 : idx, x_2 : idx, i#38554 : nat, `byte*#1870` : byte*, i#38580 : nat, `byte*#1871` : byte*}: - `%~>%`(`%;%`_config{state#1439, `instr*#1554`}(z, [`CONST`_instr{numtype#274}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#276}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#278}((at' : addrtype <: numtype), `%`_num_{i#38512}(n)) `MEMORY.COPY`_instr{memidx#127}(x_1, x_2)]), [`TRAP`_instr]) - -- if (((i_1!`%`_num_{i#38554}.0 + n) > |$mem(z, x_1).`BYTES`_meminst{`byte*#1870`}|) \/ ((i_2!`%`_num_{i#38580}.0 + n) > |$mem(z, x_2).`BYTES`_meminst{`byte*#1871`}|)) + 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`{state#1451 : state, `instr*#1566` : instr*, z : state, numtype#280 : numtype, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), numtype#282 : numtype, at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), numtype#284 : numtype, at' : addrtype, i#38644 : nat, n : n, memidx#130 : memidx, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config{state#1451, `instr*#1566`}(z, [`CONST`_instr{numtype#280}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#282}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#284}((at' : addrtype <: numtype), `%`_num_{i#38644}(n)) `MEMORY.COPY`_instr{memidx#130}(x_1, x_2)]), []) + 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`{state#1463 : state, `instr*#1578` : instr*, z : state, numtype#286 : numtype, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), numtype#288 : numtype, at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), numtype#290 : numtype, at' : addrtype, i#38724 : nat, n : n, memidx#133 : memidx, x_1 : idx, x_2 : idx, numtype#292 : numtype, numtype#294 : numtype, `numtype?#16` : numtype?, memidx#136 : memidx, memarg#81 : memarg, sz#483 : sz, sx#384 : sx, i#38802 : nat, i#38809 : nat, `numtype?#17` : numtype?, memidx#138 : memidx, memarg#83 : memarg, sz#496 : sz, i#38864 : nat, i#38865 : nat, numtype#298 : numtype, i#38915 : nat, i#38905 : nat, numtype#300 : numtype, i#38951 : nat, i#38941 : nat, numtype#302 : numtype, i#38973 : nat, memidx#140 : memidx, i#39019 : nat, i#39029 : nat}: - `%~>%`(`%;%`_config{state#1463, `instr*#1578`}(z, [`CONST`_instr{numtype#286}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#288}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#290}((at' : addrtype <: numtype), `%`_num_{i#38724}(n)) `MEMORY.COPY`_instr{memidx#133}(x_1, x_2)]), [`CONST`_instr{numtype#292}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#294}((at_2 : addrtype <: numtype), i_2) `LOAD`_instr{`numtype?#16`, memidx#136, memarg#81}(`I32`_numtype, ?(`%_%`_loadop_{sz#483, sx#384, i#38802}(`%`_sz{i#38809}(8), `U`_sx)), x_2, $memarg0) `STORE`_instr{`numtype?#17`, memidx#138, memarg#83}(`I32`_numtype, ?(`%`_storeop_{sz#496, i#38864}(`%`_sz{i#38865}(8))), x_1, $memarg0) `CONST`_instr{numtype#298}((at_1 : addrtype <: numtype), `%`_num_{i#38915}((i_1!`%`_num_{i#38905}.0 + 1))) `CONST`_instr{numtype#300}((at_2 : addrtype <: numtype), `%`_num_{i#38951}((i_2!`%`_num_{i#38941}.0 + 1))) `CONST`_instr{numtype#302}((at' : addrtype <: numtype), `%`_num_{i#38973}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `MEMORY.COPY`_instr{memidx#140}(x_1, x_2)]) + 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_{i#39019}.0 <= i_2!`%`_num_{i#39029}.0) + -- if (i_1!`%`_num_.0 <= i_2!`%`_num_.0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-gt`{state#1475 : state, `instr*#1590` : instr*, z : state, numtype#304 : numtype, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), numtype#306 : numtype, at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), numtype#308 : numtype, at' : addrtype, i#39081 : nat, n : n, memidx#143 : memidx, x_1 : idx, x_2 : idx, numtype#310 : numtype, i#39145 : nat, i#39135 : nat, numtype#312 : numtype, i#39181 : nat, i#39171 : nat, `numtype?#18` : numtype?, memidx#146 : memidx, memarg#85 : memarg, sz#514 : sz, sx#402 : sx, i#39207 : nat, i#39214 : nat, `numtype?#19` : numtype?, memidx#148 : memidx, memarg#87 : memarg, sz#527 : sz, i#39269 : nat, i#39270 : nat, numtype#316 : numtype, numtype#318 : numtype, numtype#320 : numtype, i#39330 : nat, memidx#150 : memidx}: - `%~>%`(`%;%`_config{state#1475, `instr*#1590`}(z, [`CONST`_instr{numtype#304}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#306}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#308}((at' : addrtype <: numtype), `%`_num_{i#39081}(n)) `MEMORY.COPY`_instr{memidx#143}(x_1, x_2)]), [`CONST`_instr{numtype#310}((at_1 : addrtype <: numtype), `%`_num_{i#39145}(((((i_1!`%`_num_{i#39135}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `CONST`_instr{numtype#312}((at_2 : addrtype <: numtype), `%`_num_{i#39181}(((((i_2!`%`_num_{i#39171}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `LOAD`_instr{`numtype?#18`, memidx#146, memarg#85}(`I32`_numtype, ?(`%_%`_loadop_{sz#514, sx#402, i#39207}(`%`_sz{i#39214}(8), `U`_sx)), x_2, $memarg0) `STORE`_instr{`numtype?#19`, memidx#148, memarg#87}(`I32`_numtype, ?(`%`_storeop_{sz#527, i#39269}(`%`_sz{i#39270}(8))), x_1, $memarg0) `CONST`_instr{numtype#316}((at_1 : addrtype <: numtype), i_1) `CONST`_instr{numtype#318}((at_2 : addrtype <: numtype), i_2) `CONST`_instr{numtype#320}((at' : addrtype <: numtype), `%`_num_{i#39330}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `MEMORY.COPY`_instr{memidx#150}(x_1, x_2)]) + 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`{state#1487 : state, `instr*#1602` : instr*, z : state, numtype#322 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), numtype#324 : numtype, j : num_(`I32`_numtype), numtype#326 : numtype, i#39410 : nat, n : n, memidx#153 : memidx, dataidx#17 : dataidx, x : idx, y : idx, i#39452 : nat, `byte*#1872` : byte*, i#39478 : nat, `byte*#1873` : byte*}: - `%~>%`(`%;%`_config{state#1487, `instr*#1602`}(z, [`CONST`_instr{numtype#322}((at : addrtype <: numtype), i) `CONST`_instr{numtype#324}(`I32`_numtype, j) `CONST`_instr{numtype#326}(`I32`_numtype, `%`_num_{i#39410}(n)) `MEMORY.INIT`_instr{memidx#153, dataidx#17}(x, y)]), [`TRAP`_instr]) - -- if (((i!`%`_num_{i#39452}.0 + n) > |$mem(z, x).`BYTES`_meminst{`byte*#1872`}|) \/ ((j!`%`_num_{i#39478}.0 + n) > |$data(z, y).`BYTES`_datainst{`byte*#1873`}|)) + 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`{state#1499 : state, `instr*#1614` : instr*, z : state, numtype#328 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), numtype#330 : numtype, j : num_(`I32`_numtype), numtype#332 : numtype, i#39542 : nat, n : n, memidx#155 : memidx, dataidx#19 : dataidx, x : idx, y : idx}: - `%~>%`(`%;%`_config{state#1499, `instr*#1614`}(z, [`CONST`_instr{numtype#328}((at : addrtype <: numtype), i) `CONST`_instr{numtype#330}(`I32`_numtype, j) `CONST`_instr{numtype#332}(`I32`_numtype, `%`_num_{i#39542}(n)) `MEMORY.INIT`_instr{memidx#155, dataidx#19}(x, y)]), []) + 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`{state#1511 : state, `instr*#1626` : instr*, z : state, numtype#334 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), numtype#336 : numtype, j : num_(`I32`_numtype), numtype#338 : numtype, i#39622 : nat, n : n, memidx#157 : memidx, dataidx#21 : dataidx, x : idx, y : idx, numtype#340 : numtype, numtype#342 : numtype, i#39715 : nat, `byte*#1874` : byte*, i#39696 : nat, i#39714 : nat, `numtype?#20` : numtype?, memidx#159 : memidx, memarg#89 : memarg, sz#540 : sz, i#39757 : nat, i#39758 : nat, numtype#345 : numtype, i#39808 : nat, i#39798 : nat, numtype#347 : numtype, i#39844 : nat, i#39834 : nat, numtype#349 : numtype, i#39866 : nat, memidx#161 : memidx, dataidx#23 : dataidx}: - `%~>%`(`%;%`_config{state#1511, `instr*#1626`}(z, [`CONST`_instr{numtype#334}((at : addrtype <: numtype), i) `CONST`_instr{numtype#336}(`I32`_numtype, j) `CONST`_instr{numtype#338}(`I32`_numtype, `%`_num_{i#39622}(n)) `MEMORY.INIT`_instr{memidx#157, dataidx#21}(x, y)]), [`CONST`_instr{numtype#340}((at : addrtype <: numtype), i) `CONST`_instr{numtype#342}(`I32`_numtype, `%`_num_{i#39715}($data(z, y).`BYTES`_datainst{`byte*#1874`}[j!`%`_num_{i#39696}.0]!`%`_byte{i#39714}.0)) `STORE`_instr{`numtype?#20`, memidx#159, memarg#89}(`I32`_numtype, ?(`%`_storeop_{sz#540, i#39757}(`%`_sz{i#39758}(8))), x, $memarg0) `CONST`_instr{numtype#345}((at : addrtype <: numtype), `%`_num_{i#39808}((i!`%`_num_{i#39798}.0 + 1))) `CONST`_instr{numtype#347}(`I32`_numtype, `%`_num_{i#39844}((j!`%`_num_{i#39834}.0 + 1))) `CONST`_instr{numtype#349}(`I32`_numtype, `%`_num_{i#39866}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `MEMORY.INIT`_instr{memidx#161, dataidx#23}(x, y)]) + 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`{state#1547 : state, `instr*#1662` : instr*, z : state, heaptype#1343 : heaptype, typeidx#1555 : typeidx, x : idx, heaptype#1345 : heaptype}: - `%~>%`(`%;%`_config{state#1547, `instr*#1662`}(z, [`REF.NULL`_instr{heaptype#1343}(`_IDX`_heaptype{typeidx#1555}(x))]), [`REF.NULL`_instr{heaptype#1345}(($type(z, x) : deftype <: heaptype))]) + 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{state#1559 : state, `instr*#1674` : instr*, z : state, funcidx#2841 : funcidx, x : idx, funcaddr#17 : funcaddr, `funcaddr*#4` : funcaddr*, i#39970 : nat}: - `%~>%`(`%;%`_config{state#1559, `instr*#1674`}(z, [`REF.FUNC`_instr{funcidx#2841}(x)]), [`REF.FUNC_ADDR`_instr{funcaddr#17}($moduleinst(z).`FUNCS`_moduleinst{`funcaddr*#4`}[x!`%`_idx{i#39970}.0])]) + 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`{state#1571 : state, `instr*#1686` : instr*, store#1913 : store, frame#1931 : frame, s : store, f : frame, ref : ref, reftype#3467 : reftype, rt : reftype, numtype#363 : numtype, i#40142 : nat, rt' : reftype, `deftype*#90` : deftype*, `subtype*#23` : subtype*, `tagtype*#24` : tagtype*, `globaltype*#25` : globaltype*, `memtype*#39` : memtype*, `tabletype*#32` : tabletype*, `deftype*#91` : deftype*, `datatype*#24` : datatype*, `elemtype*#24` : elemtype*, `localtype*#27` : localtype*, `resulttype*#35` : resulttype*, `resulttype?#32` : resulttype?, `funcidx*#61` : funcidx*, moduleinst#23 : moduleinst}: - `%~>%`(`%;%`_config{state#1571, `instr*#1686`}(`%;%`_state{store#1913, frame#1931}(s, f), [(ref : ref <: instr) `REF.TEST`_instr{reftype#3467}(rt)]), [`CONST`_instr{numtype#363}(`I32`_numtype, `%`_num_{i#40142}(1))]) + 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`{`deftype*#90`} [], `RECS`{`subtype*#23`} [], `TAGS`{`tagtype*#24`} [], `GLOBALS`{`globaltype*#25`} [], `MEMS`{`memtype*#39`} [], `TABLES`{`tabletype*#32`} [], `FUNCS`{`deftype*#91`} [], `DATAS`{`datatype*#24`} [], `ELEMS`{`elemtype*#24`} [], `LOCALS`{`localtype*#27`} [], `LABELS`{`resulttype*#35`} [], `RETURN`{`resulttype?#32`} ?(), `REFS`{`funcidx*#61`} []}, rt', $inst_reftype(f.`MODULE`_frame{moduleinst#23}, 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`{state#1583 : state, `instr*#1698` : instr*, store#1925 : store, frame#1943 : frame, s : store, f : frame, ref : ref, reftype#3469 : reftype, rt : reftype, numtype#365 : numtype, i#40164 : nat}: - `%~>%`(`%;%`_config{state#1583, `instr*#1698`}(`%;%`_state{store#1925, frame#1943}(s, f), [(ref : ref <: instr) `REF.TEST`_instr{reftype#3469}(rt)]), [`CONST`_instr{numtype#365}(`I32`_numtype, `%`_num_{i#40164}(0))]) + 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`{state#1595 : state, `instr*#1710` : instr*, store#1937 : store, frame#1955 : frame, s : store, f : frame, ref : ref, reftype#3471 : reftype, rt : reftype, rt' : reftype, `deftype*#92` : deftype*, `subtype*#24` : subtype*, `tagtype*#25` : tagtype*, `globaltype*#26` : globaltype*, `memtype*#40` : memtype*, `tabletype*#33` : tabletype*, `deftype*#93` : deftype*, `datatype*#25` : datatype*, `elemtype*#25` : elemtype*, `localtype*#28` : localtype*, `resulttype*#36` : resulttype*, `resulttype?#33` : resulttype?, `funcidx*#62` : funcidx*, moduleinst#24 : moduleinst}: - `%~>%`(`%;%`_config{state#1595, `instr*#1710`}(`%;%`_state{store#1937, frame#1955}(s, f), [(ref : ref <: instr) `REF.CAST`_instr{reftype#3471}(rt)]), [(ref : ref <: instr)]) + 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`{`deftype*#92`} [], `RECS`{`subtype*#24`} [], `TAGS`{`tagtype*#25`} [], `GLOBALS`{`globaltype*#26`} [], `MEMS`{`memtype*#40`} [], `TABLES`{`tabletype*#33`} [], `FUNCS`{`deftype*#93`} [], `DATAS`{`datatype*#25`} [], `ELEMS`{`elemtype*#25`} [], `LOCALS`{`localtype*#28`} [], `LABELS`{`resulttype*#36`} [], `RETURN`{`resulttype?#33`} ?(), `REFS`{`funcidx*#62`} []}, rt', $inst_reftype(f.`MODULE`_frame{moduleinst#24}, 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`{state#1607 : state, `instr*#1722` : instr*, store#1949 : store, frame#1967 : frame, s : store, f : frame, ref : ref, reftype#3473 : reftype, rt : reftype}: - `%~>%`(`%;%`_config{state#1607, `instr*#1722`}(`%;%`_state{store#1949, frame#1967}(s, f), [(ref : ref <: instr) `REF.CAST`_instr{reftype#3473}(rt)]), [`TRAP`_instr]) + 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{state#1643 : state, `instr*#1758` : instr*, z : state, typeidx#1559 : typeidx, x : idx, `val*` : val*, typeidx#1561 : typeidx, `X*#12683` : fieldtype*, `mut?*` : mut?*, `mut?#1049*` : mut?*, `storagetype#587*` : storagetype*, `zt*` : storagetype*}: - `%~>%`(`%;%`_config{state#1643, `instr*#1758`}(z, [`STRUCT.NEW_DEFAULT`_instr{typeidx#1559}(x)]), (val : val <: instr)*{val <- `val*`} ++ [`STRUCT.NEW`_instr{typeidx#1561}(x)]) - -- Expand: `%~~%`($type(z, x), `STRUCT`_comptype(`%`_list{`X*#12683`}(`%%`_fieldtype{`mut?#1049`, storagetype#587}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#1049` <- `mut?#1049*`, storagetype#587 <- `storagetype#587*`, zt <- `zt*`}))) + 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`{state#1655 : state, `instr*#1770` : instr*, z : state, heaptype#1429 : heaptype, ht : heaptype, `sx?#13` : sx?, typeidx#1563 : typeidx, u32#17 : u32, `sx?` : sx?, x : idx, i : u32}: - `%~>%`(`%;%`_config{state#1655, `instr*#1770`}(z, [`REF.NULL`_instr{heaptype#1429}(ht) `STRUCT.GET`_instr{`sx?#13`, typeidx#1563, u32#17}(sx?{sx <- `sx?`}, x, i)]), [`TRAP`_instr]) + 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`{state#1667 : state, `instr*#1782` : instr*, z : state, structaddr#5 : structaddr, a : addr, `sx?#15` : sx?, typeidx#1565 : typeidx, u32#19 : u32, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, i#40378 : nat, `fieldval*#4` : fieldval*, i#40388 : nat, `X*#12698` : fieldtype*, `mut?*` : mut?*, `mut?#1067*` : mut?*, `storagetype#605*` : storagetype*}: - `%~>%`(`%;%`_config{state#1667, `instr*#1782`}(z, [`REF.STRUCT_ADDR`_instr{structaddr#5}(a) `STRUCT.GET`_instr{`sx?#15`, typeidx#1565, u32#19}(sx?{sx <- `sx?`}, x, i)]), [($unpackfield_(zt*{zt <- `zt*`}[i!`%`_u32{i#40378}.0], sx?{sx <- `sx?`}, $structinst(z)[a].`FIELDS`_structinst{`fieldval*#4`}[i!`%`_u32{i#40388}.0]) : val <: instr)]) - -- Expand: `%~~%`($type(z, x), `STRUCT`_comptype(`%`_list{`X*#12698`}(`%%`_fieldtype{`mut?#1067`, storagetype#605}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#1067` <- `mut?#1067*`, storagetype#605 <- `storagetype#605*`, zt <- `zt*`}))) + 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{state#1727 : state, `instr*#1842` : instr*, z : state, numtype#371 : numtype, i#40588 : nat, n : n, typeidx#1575 : typeidx, x : idx, val : val, typeidx#1577 : typeidx, u32#27 : u32, i#40640 : nat, fieldtype#39 : fieldtype, `mut?#1097` : mut?, storagetype#635 : storagetype, `mut?` : mut?, zt : storagetype}: - `%~>%`(`%;%`_config{state#1727, `instr*#1842`}(z, [`CONST`_instr{numtype#371}(`I32`_numtype, `%`_num_{i#40588}(n)) `ARRAY.NEW_DEFAULT`_instr{typeidx#1575}(x)]), (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr{typeidx#1577, u32#27}(x, `%`_u32{i#40640}(n))]) - -- Expand: `%~~%`($type(z, x), `ARRAY`_comptype{fieldtype#39}(`%%`_fieldtype{`mut?#1097`, storagetype#635}(mut?{mut <- `mut?`}, zt))) + 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`{state#1763 : state, `instr*#1878` : instr*, z : state, numtype#373 : numtype, i : num_(`I32`_numtype), numtype#375 : numtype, i#40752 : nat, n : n, typeidx#1581 : typeidx, elemidx#27 : elemidx, x : idx, y : idx, i#40794 : nat, `ref*#18` : ref*}: - `%~>%`(`%;%`_config{state#1763, `instr*#1878`}(z, [`CONST`_instr{numtype#373}(`I32`_numtype, i) `CONST`_instr{numtype#375}(`I32`_numtype, `%`_num_{i#40752}(n)) `ARRAY.NEW_ELEM`_instr{typeidx#1581, elemidx#27}(x, y)]), [`TRAP`_instr]) - -- if ((i!`%`_num_{i#40794}.0 + n) > |$elem(z, y).`REFS`_eleminst{`ref*#18`}|) + 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`{state#1775 : state, `instr*#1890` : instr*, z : state, numtype#377 : numtype, i : num_(`I32`_numtype), numtype#379 : numtype, i#40844 : nat, n : n, typeidx#1583 : typeidx, elemidx#29 : elemidx, x : idx, y : idx, `ref*` : ref*, typeidx#1585 : typeidx, u32#31 : u32, i#40910 : nat, `ref*#19` : ref*, i#40932 : nat}: - `%~>%`(`%;%`_config{state#1775, `instr*#1890`}(z, [`CONST`_instr{numtype#377}(`I32`_numtype, i) `CONST`_instr{numtype#379}(`I32`_numtype, `%`_num_{i#40844}(n)) `ARRAY.NEW_ELEM`_instr{typeidx#1583, elemidx#29}(x, y)]), (ref : ref <: instr)^n{ref <- `ref*`} ++ [`ARRAY.NEW_FIXED`_instr{typeidx#1585, u32#31}(x, `%`_u32{i#40910}(n))]) - -- if (ref^n{ref <- `ref*`} = $elem(z, y).`REFS`_eleminst{`ref*#19`}[i!`%`_num_{i#40932}.0 : n]) + 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`{state#1787 : state, `instr*#1902` : instr*, z : state, numtype#381 : numtype, i : num_(`I32`_numtype), numtype#383 : numtype, i#40970 : nat, n : n, typeidx#1587 : typeidx, dataidx#27 : dataidx, x : idx, y : idx, fieldtype#43 : fieldtype, `mut?#1121` : mut?, storagetype#659 : storagetype, `mut?` : mut?, zt : storagetype, i#41024 : nat, `byte*#1875` : byte*}: - `%~>%`(`%;%`_config{state#1787, `instr*#1902`}(z, [`CONST`_instr{numtype#381}(`I32`_numtype, i) `CONST`_instr{numtype#383}(`I32`_numtype, `%`_num_{i#40970}(n)) `ARRAY.NEW_DATA`_instr{typeidx#1587, dataidx#27}(x, y)]), [`TRAP`_instr]) - -- Expand: `%~~%`($type(z, x), `ARRAY`_comptype{fieldtype#43}(`%%`_fieldtype{`mut?#1121`, storagetype#659}(mut?{mut <- `mut?`}, zt))) - -- if ((i!`%`_num_{i#41024}.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).`BYTES`_datainst{`byte*#1875`}|) + 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`{state#1799 : state, `instr*#1914` : instr*, z : state, numtype#385 : numtype, i : num_(`I32`_numtype), numtype#387 : numtype, i#41074 : nat, n : n, typeidx#1589 : typeidx, dataidx#29 : dataidx, x : idx, y : idx, zt : storagetype, `c*` : lit_(zt)*, typeidx#1591 : typeidx, u32#33 : u32, i#41140 : nat, fieldtype#45 : fieldtype, `mut?#1133` : mut?, storagetype#671 : storagetype, `mut?` : mut?, `byte*#1876` : byte*, i#41174 : nat}: - `%~>%`(`%;%`_config{state#1799, `instr*#1914`}(z, [`CONST`_instr{numtype#385}(`I32`_numtype, i) `CONST`_instr{numtype#387}(`I32`_numtype, `%`_num_{i#41074}(n)) `ARRAY.NEW_DATA`_instr{typeidx#1589, dataidx#29}(x, y)]), $const($cunpack(zt), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [`ARRAY.NEW_FIXED`_instr{typeidx#1591, u32#33}(x, `%`_u32{i#41140}(n))]) - -- Expand: `%~~%`($type(z, x), `ARRAY`_comptype{fieldtype#45}(`%%`_fieldtype{`mut?#1133`, storagetype#671}(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{`byte*#1876`}[i!`%`_num_{i#41174}.0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + 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`{state#1811 : state, `instr*#1926` : instr*, z : state, heaptype#1433 : heaptype, ht : heaptype, numtype#389 : numtype, i : num_(`I32`_numtype), `sx?#17` : sx?, typeidx#1593 : typeidx, `sx?` : sx?, x : idx}: - `%~>%`(`%;%`_config{state#1811, `instr*#1926`}(z, [`REF.NULL`_instr{heaptype#1433}(ht) `CONST`_instr{numtype#389}(`I32`_numtype, i) `ARRAY.GET`_instr{`sx?#17`, typeidx#1593}(sx?{sx <- `sx?`}, x)]), [`TRAP`_instr]) + 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`{state#1823 : state, `instr*#1938` : instr*, z : state, arrayaddr#5 : arrayaddr, a : addr, numtype#391 : numtype, i : num_(`I32`_numtype), `sx?#19` : sx?, typeidx#1595 : typeidx, `sx?` : sx?, x : idx, i#41392 : nat, `fieldval*#6` : fieldval*}: - `%~>%`(`%;%`_config{state#1823, `instr*#1938`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#5}(a) `CONST`_instr{numtype#391}(`I32`_numtype, i) `ARRAY.GET`_instr{`sx?#19`, typeidx#1595}(sx?{sx <- `sx?`}, x)]), [`TRAP`_instr]) - -- if (i!`%`_num_{i#41392}.0 >= |$arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#6`}|) + 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`{state#1835 : state, `instr*#1950` : instr*, z : state, arrayaddr#7 : arrayaddr, a : addr, numtype#393 : numtype, i : num_(`I32`_numtype), `sx?#21` : sx?, typeidx#1597 : typeidx, `sx?` : sx?, x : idx, zt : storagetype, `fieldval*#7` : fieldval*, i#41467 : nat, fieldtype#47 : fieldtype, `mut?#1145` : mut?, storagetype#683 : storagetype, `mut?` : mut?}: - `%~>%`(`%;%`_config{state#1835, `instr*#1950`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#7}(a) `CONST`_instr{numtype#393}(`I32`_numtype, i) `ARRAY.GET`_instr{`sx?#21`, typeidx#1597}(sx?{sx <- `sx?`}, x)]), [($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#7`}[i!`%`_num_{i#41467}.0]) : val <: instr)]) - -- Expand: `%~~%`($type(z, x), `ARRAY`_comptype{fieldtype#47}(`%%`_fieldtype{`mut?#1145`, storagetype#683}(mut?{mut <- `mut?`}, zt))) + 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`{state#1919 : state, `instr*#2034` : instr*, z : state, heaptype#1437 : heaptype, ht : heaptype}: - `%~>%`(`%;%`_config{state#1919, `instr*#2034`}(z, [`REF.NULL`_instr{heaptype#1437}(ht) `ARRAY.LEN`_instr]), [`TRAP`_instr]) + 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`{state#1931 : state, `instr*#2046` : instr*, z : state, arrayaddr#13 : arrayaddr, a : addr, numtype#401 : numtype, i#41621 : nat, `fieldval*#9` : fieldval*}: - `%~>%`(`%;%`_config{state#1931, `instr*#2046`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#13}(a) `ARRAY.LEN`_instr]), [`CONST`_instr{numtype#401}(`I32`_numtype, `%`_num_{i#41621}(|$arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#9`}|))]) + 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`{state#1943 : state, `instr*#2058` : instr*, z : state, heaptype#1439 : heaptype, ht : heaptype, numtype#403 : numtype, i : num_(`I32`_numtype), val : val, numtype#405 : numtype, i#41659 : nat, n : n, typeidx#1605 : typeidx, x : idx}: - `%~>%`(`%;%`_config{state#1943, `instr*#2058`}(z, [`REF.NULL`_instr{heaptype#1439}(ht) `CONST`_instr{numtype#403}(`I32`_numtype, i) (val : val <: instr) `CONST`_instr{numtype#405}(`I32`_numtype, `%`_num_{i#41659}(n)) `ARRAY.FILL`_instr{typeidx#1605}(x)]), [`TRAP`_instr]) + 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`{state#1955 : state, `instr*#2070` : instr*, z : state, arrayaddr#15 : arrayaddr, a : addr, numtype#407 : numtype, i : num_(`I32`_numtype), val : val, numtype#409 : numtype, i#41711 : nat, n : n, typeidx#1607 : typeidx, x : idx, i#41739 : nat, `fieldval*#10` : fieldval*}: - `%~>%`(`%;%`_config{state#1955, `instr*#2070`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#15}(a) `CONST`_instr{numtype#407}(`I32`_numtype, i) (val : val <: instr) `CONST`_instr{numtype#409}(`I32`_numtype, `%`_num_{i#41711}(n)) `ARRAY.FILL`_instr{typeidx#1607}(x)]), [`TRAP`_instr]) - -- if ((i!`%`_num_{i#41739}.0 + n) > |$arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#10`}|) + 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`{state#1967 : state, `instr*#2082` : instr*, z : state, arrayaddr#17 : arrayaddr, a : addr, numtype#411 : numtype, i : num_(`I32`_numtype), val : val, numtype#413 : numtype, i#41777 : nat, n : n, typeidx#1609 : typeidx, x : idx}: - `%~>%`(`%;%`_config{state#1967, `instr*#2082`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#17}(a) `CONST`_instr{numtype#411}(`I32`_numtype, i) (val : val <: instr) `CONST`_instr{numtype#413}(`I32`_numtype, `%`_num_{i#41777}(n)) `ARRAY.FILL`_instr{typeidx#1609}(x)]), []) + 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`{state#1979 : state, `instr*#2094` : instr*, z : state, arrayaddr#19 : arrayaddr, a : addr, numtype#415 : numtype, i : num_(`I32`_numtype), val : val, numtype#417 : numtype, i#41829 : nat, n : n, typeidx#1611 : typeidx, x : idx, arrayaddr#21 : arrayaddr, numtype#419 : numtype, typeidx#1613 : typeidx, arrayaddr#23 : arrayaddr, numtype#421 : numtype, i#41905 : nat, i#41895 : nat, numtype#423 : numtype, i#41927 : nat, typeidx#1615 : typeidx}: - `%~>%`(`%;%`_config{state#1979, `instr*#2094`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#19}(a) `CONST`_instr{numtype#415}(`I32`_numtype, i) (val : val <: instr) `CONST`_instr{numtype#417}(`I32`_numtype, `%`_num_{i#41829}(n)) `ARRAY.FILL`_instr{typeidx#1611}(x)]), [`REF.ARRAY_ADDR`_instr{arrayaddr#21}(a) `CONST`_instr{numtype#419}(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr{typeidx#1613}(x) `REF.ARRAY_ADDR`_instr{arrayaddr#23}(a) `CONST`_instr{numtype#421}(`I32`_numtype, `%`_num_{i#41905}((i!`%`_num_{i#41895}.0 + 1))) (val : val <: instr) `CONST`_instr{numtype#423}(`I32`_numtype, `%`_num_{i#41927}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `ARRAY.FILL`_instr{typeidx#1615}(x)]) + 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`{state#1991 : state, `instr*#2106` : instr*, z : state, heaptype#1441 : heaptype, ht_1 : heaptype, numtype#425 : numtype, i_1 : num_(`I32`_numtype), ref : ref, numtype#427 : numtype, i_2 : num_(`I32`_numtype), numtype#429 : numtype, i#41993 : nat, n : n, typeidx#1617 : typeidx, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config{state#1991, `instr*#2106`}(z, [`REF.NULL`_instr{heaptype#1441}(ht_1) `CONST`_instr{numtype#425}(`I32`_numtype, i_1) (ref : ref <: instr) `CONST`_instr{numtype#427}(`I32`_numtype, i_2) `CONST`_instr{numtype#429}(`I32`_numtype, `%`_num_{i#41993}(n)) `ARRAY.COPY`_instr{typeidx#1617}(x_1, x_2)]), [`TRAP`_instr]) + 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`{state#2003 : state, `instr*#2118` : instr*, z : state, ref : ref, numtype#431 : numtype, i_1 : num_(`I32`_numtype), heaptype#1443 : heaptype, ht_2 : heaptype, numtype#433 : numtype, i_2 : num_(`I32`_numtype), numtype#435 : numtype, i#42073 : nat, n : n, typeidx#1620 : typeidx, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config{state#2003, `instr*#2118`}(z, [(ref : ref <: instr) `CONST`_instr{numtype#431}(`I32`_numtype, i_1) `REF.NULL`_instr{heaptype#1443}(ht_2) `CONST`_instr{numtype#433}(`I32`_numtype, i_2) `CONST`_instr{numtype#435}(`I32`_numtype, `%`_num_{i#42073}(n)) `ARRAY.COPY`_instr{typeidx#1620}(x_1, x_2)]), [`TRAP`_instr]) + 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`{state#2015 : state, `instr*#2130` : instr*, z : state, arrayaddr#25 : arrayaddr, a_1 : addr, numtype#437 : numtype, i_1 : num_(`I32`_numtype), arrayaddr#27 : arrayaddr, a_2 : addr, numtype#439 : numtype, i_2 : num_(`I32`_numtype), numtype#441 : numtype, i#42153 : nat, n : n, typeidx#1623 : typeidx, x_1 : idx, x_2 : idx, i#42195 : nat, `fieldval*#11` : fieldval*}: - `%~>%`(`%;%`_config{state#2015, `instr*#2130`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#25}(a_1) `CONST`_instr{numtype#437}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#27}(a_2) `CONST`_instr{numtype#439}(`I32`_numtype, i_2) `CONST`_instr{numtype#441}(`I32`_numtype, `%`_num_{i#42153}(n)) `ARRAY.COPY`_instr{typeidx#1623}(x_1, x_2)]), [`TRAP`_instr]) - -- if ((i_1!`%`_num_{i#42195}.0 + n) > |$arrayinst(z)[a_1].`FIELDS`_arrayinst{`fieldval*#11`}|) + 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`{state#2027 : state, `instr*#2142` : instr*, z : state, arrayaddr#29 : arrayaddr, a_1 : addr, numtype#443 : numtype, i_1 : num_(`I32`_numtype), arrayaddr#31 : arrayaddr, a_2 : addr, numtype#445 : numtype, i_2 : num_(`I32`_numtype), numtype#447 : numtype, i#42247 : nat, n : n, typeidx#1626 : typeidx, x_1 : idx, x_2 : idx, i#42289 : nat, `fieldval*#12` : fieldval*}: - `%~>%`(`%;%`_config{state#2027, `instr*#2142`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#29}(a_1) `CONST`_instr{numtype#443}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#31}(a_2) `CONST`_instr{numtype#445}(`I32`_numtype, i_2) `CONST`_instr{numtype#447}(`I32`_numtype, `%`_num_{i#42247}(n)) `ARRAY.COPY`_instr{typeidx#1626}(x_1, x_2)]), [`TRAP`_instr]) - -- if ((i_2!`%`_num_{i#42289}.0 + n) > |$arrayinst(z)[a_2].`FIELDS`_arrayinst{`fieldval*#12`}|) + 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`{state#2039 : state, `instr*#2154` : instr*, z : state, arrayaddr#33 : arrayaddr, a_1 : addr, numtype#449 : numtype, i_1 : num_(`I32`_numtype), arrayaddr#35 : arrayaddr, a_2 : addr, numtype#451 : numtype, i_2 : num_(`I32`_numtype), numtype#453 : numtype, i#42341 : nat, n : n, typeidx#1629 : typeidx, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config{state#2039, `instr*#2154`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#33}(a_1) `CONST`_instr{numtype#449}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#35}(a_2) `CONST`_instr{numtype#451}(`I32`_numtype, i_2) `CONST`_instr{numtype#453}(`I32`_numtype, `%`_num_{i#42341}(n)) `ARRAY.COPY`_instr{typeidx#1629}(x_1, x_2)]), []) + 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`{state#2051 : state, `instr*#2166` : instr*, z : state, arrayaddr#37 : arrayaddr, a_1 : addr, numtype#455 : numtype, i_1 : num_(`I32`_numtype), arrayaddr#39 : arrayaddr, a_2 : addr, numtype#457 : numtype, i_2 : num_(`I32`_numtype), numtype#459 : numtype, i#42421 : nat, n : n, typeidx#1632 : typeidx, x_1 : idx, x_2 : idx, arrayaddr#41 : arrayaddr, numtype#461 : numtype, arrayaddr#43 : arrayaddr, numtype#463 : numtype, `sx?#23` : sx?, typeidx#1635 : typeidx, `sx?` : sx?, typeidx#1637 : typeidx, arrayaddr#45 : arrayaddr, numtype#465 : numtype, i#42574 : nat, i#42564 : nat, arrayaddr#47 : arrayaddr, numtype#467 : numtype, i#42610 : nat, i#42600 : nat, numtype#469 : numtype, i#42632 : nat, typeidx#1639 : typeidx, fieldtype#51 : fieldtype, `mut?#1169` : mut?, storagetype#707 : storagetype, `mut?` : mut?, zt_2 : storagetype, i#42690 : nat, i#42700 : nat}: - `%~>%`(`%;%`_config{state#2051, `instr*#2166`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#37}(a_1) `CONST`_instr{numtype#455}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#39}(a_2) `CONST`_instr{numtype#457}(`I32`_numtype, i_2) `CONST`_instr{numtype#459}(`I32`_numtype, `%`_num_{i#42421}(n)) `ARRAY.COPY`_instr{typeidx#1632}(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr{arrayaddr#41}(a_1) `CONST`_instr{numtype#461}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#43}(a_2) `CONST`_instr{numtype#463}(`I32`_numtype, i_2) `ARRAY.GET`_instr{`sx?#23`, typeidx#1635}(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr{typeidx#1637}(x_1) `REF.ARRAY_ADDR`_instr{arrayaddr#45}(a_1) `CONST`_instr{numtype#465}(`I32`_numtype, `%`_num_{i#42574}((i_1!`%`_num_{i#42564}.0 + 1))) `REF.ARRAY_ADDR`_instr{arrayaddr#47}(a_2) `CONST`_instr{numtype#467}(`I32`_numtype, `%`_num_{i#42610}((i_2!`%`_num_{i#42600}.0 + 1))) `CONST`_instr{numtype#469}(`I32`_numtype, `%`_num_{i#42632}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `ARRAY.COPY`_instr{typeidx#1639}(x_1, x_2)]) + 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#51}(`%%`_fieldtype{`mut?#1169`, storagetype#707}(mut?{mut <- `mut?`}, zt_2))) - -- if ((i_1!`%`_num_{i#42690}.0 <= i_2!`%`_num_{i#42700}.0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) + -- 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`{state#2063 : state, `instr*#2178` : instr*, z : state, arrayaddr#49 : arrayaddr, a_1 : addr, numtype#471 : numtype, i_1 : num_(`I32`_numtype), arrayaddr#51 : arrayaddr, a_2 : addr, numtype#473 : numtype, i_2 : num_(`I32`_numtype), numtype#475 : numtype, i#42752 : nat, n : n, typeidx#1642 : typeidx, x_1 : idx, x_2 : idx, arrayaddr#53 : arrayaddr, numtype#477 : numtype, i#42816 : nat, i#42806 : nat, arrayaddr#55 : arrayaddr, numtype#479 : numtype, i#42852 : nat, i#42842 : nat, `sx?#25` : sx?, typeidx#1645 : typeidx, `sx?` : sx?, typeidx#1647 : typeidx, arrayaddr#57 : arrayaddr, numtype#481 : numtype, arrayaddr#59 : arrayaddr, numtype#483 : numtype, numtype#485 : numtype, i#42963 : nat, typeidx#1649 : typeidx, fieldtype#53 : fieldtype, `mut?#1181` : mut?, storagetype#719 : storagetype, `mut?` : mut?, zt_2 : storagetype}: - `%~>%`(`%;%`_config{state#2063, `instr*#2178`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#49}(a_1) `CONST`_instr{numtype#471}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#51}(a_2) `CONST`_instr{numtype#473}(`I32`_numtype, i_2) `CONST`_instr{numtype#475}(`I32`_numtype, `%`_num_{i#42752}(n)) `ARRAY.COPY`_instr{typeidx#1642}(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr{arrayaddr#53}(a_1) `CONST`_instr{numtype#477}(`I32`_numtype, `%`_num_{i#42816}(((((i_1!`%`_num_{i#42806}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `REF.ARRAY_ADDR`_instr{arrayaddr#55}(a_2) `CONST`_instr{numtype#479}(`I32`_numtype, `%`_num_{i#42852}(((((i_2!`%`_num_{i#42842}.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `ARRAY.GET`_instr{`sx?#25`, typeidx#1645}(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr{typeidx#1647}(x_1) `REF.ARRAY_ADDR`_instr{arrayaddr#57}(a_1) `CONST`_instr{numtype#481}(`I32`_numtype, i_1) `REF.ARRAY_ADDR`_instr{arrayaddr#59}(a_2) `CONST`_instr{numtype#483}(`I32`_numtype, i_2) `CONST`_instr{numtype#485}(`I32`_numtype, `%`_num_{i#42963}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `ARRAY.COPY`_instr{typeidx#1649}(x_1, x_2)]) + 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#53}(`%%`_fieldtype{`mut?#1181`, storagetype#719}(mut?{mut <- `mut?`}, zt_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`{state#2075 : state, `instr*#2190` : instr*, z : state, heaptype#1445 : heaptype, ht : heaptype, numtype#487 : numtype, i : num_(`I32`_numtype), numtype#489 : numtype, j : num_(`I32`_numtype), numtype#491 : numtype, i#43055 : nat, n : n, typeidx#1652 : typeidx, elemidx#31 : elemidx, x : idx, y : idx}: - `%~>%`(`%;%`_config{state#2075, `instr*#2190`}(z, [`REF.NULL`_instr{heaptype#1445}(ht) `CONST`_instr{numtype#487}(`I32`_numtype, i) `CONST`_instr{numtype#489}(`I32`_numtype, j) `CONST`_instr{numtype#491}(`I32`_numtype, `%`_num_{i#43055}(n)) `ARRAY.INIT_ELEM`_instr{typeidx#1652, elemidx#31}(x, y)]), [`TRAP`_instr]) + 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`{state#2087 : state, `instr*#2202` : instr*, z : state, arrayaddr#61 : arrayaddr, a : addr, numtype#493 : numtype, i : num_(`I32`_numtype), numtype#495 : numtype, j : num_(`I32`_numtype), numtype#497 : numtype, i#43135 : nat, n : n, typeidx#1654 : typeidx, elemidx#33 : elemidx, x : idx, y : idx, i#43177 : nat, `fieldval*#13` : fieldval*}: - `%~>%`(`%;%`_config{state#2087, `instr*#2202`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#61}(a) `CONST`_instr{numtype#493}(`I32`_numtype, i) `CONST`_instr{numtype#495}(`I32`_numtype, j) `CONST`_instr{numtype#497}(`I32`_numtype, `%`_num_{i#43135}(n)) `ARRAY.INIT_ELEM`_instr{typeidx#1654, elemidx#33}(x, y)]), [`TRAP`_instr]) - -- if ((i!`%`_num_{i#43177}.0 + n) > |$arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#13`}|) + 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`{state#2099 : state, `instr*#2214` : instr*, z : state, arrayaddr#63 : arrayaddr, a : addr, numtype#499 : numtype, i : num_(`I32`_numtype), numtype#501 : numtype, j : num_(`I32`_numtype), numtype#503 : numtype, i#43229 : nat, n : n, typeidx#1656 : typeidx, elemidx#35 : elemidx, x : idx, y : idx, i#43271 : nat, `ref*#20` : ref*}: - `%~>%`(`%;%`_config{state#2099, `instr*#2214`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#63}(a) `CONST`_instr{numtype#499}(`I32`_numtype, i) `CONST`_instr{numtype#501}(`I32`_numtype, j) `CONST`_instr{numtype#503}(`I32`_numtype, `%`_num_{i#43229}(n)) `ARRAY.INIT_ELEM`_instr{typeidx#1656, elemidx#35}(x, y)]), [`TRAP`_instr]) - -- if ((j!`%`_num_{i#43271}.0 + n) > |$elem(z, y).`REFS`_eleminst{`ref*#20`}|) + 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`{state#2111 : state, `instr*#2226` : instr*, z : state, arrayaddr#65 : arrayaddr, a : addr, numtype#505 : numtype, i : num_(`I32`_numtype), numtype#507 : numtype, j : num_(`I32`_numtype), numtype#509 : numtype, i#43335 : nat, n : n, typeidx#1658 : typeidx, elemidx#37 : elemidx, x : idx, y : idx}: - `%~>%`(`%;%`_config{state#2111, `instr*#2226`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#65}(a) `CONST`_instr{numtype#505}(`I32`_numtype, i) `CONST`_instr{numtype#507}(`I32`_numtype, j) `CONST`_instr{numtype#509}(`I32`_numtype, `%`_num_{i#43335}(n)) `ARRAY.INIT_ELEM`_instr{typeidx#1658, elemidx#37}(x, y)]), []) + 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`{state#2123 : state, `instr*#2238` : instr*, z : state, arrayaddr#67 : arrayaddr, a : addr, numtype#511 : numtype, i : num_(`I32`_numtype), numtype#513 : numtype, j : num_(`I32`_numtype), numtype#515 : numtype, i#43415 : nat, n : n, typeidx#1660 : typeidx, elemidx#39 : elemidx, x : idx, y : idx, arrayaddr#69 : arrayaddr, numtype#517 : numtype, ref : ref, typeidx#1662 : typeidx, arrayaddr#71 : arrayaddr, numtype#519 : numtype, i#43505 : nat, i#43495 : nat, numtype#521 : numtype, i#43541 : nat, i#43531 : nat, numtype#523 : numtype, i#43563 : nat, typeidx#1664 : typeidx, elemidx#41 : elemidx, `ref*#21` : ref*, i#43613 : nat}: - `%~>%`(`%;%`_config{state#2123, `instr*#2238`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#67}(a) `CONST`_instr{numtype#511}(`I32`_numtype, i) `CONST`_instr{numtype#513}(`I32`_numtype, j) `CONST`_instr{numtype#515}(`I32`_numtype, `%`_num_{i#43415}(n)) `ARRAY.INIT_ELEM`_instr{typeidx#1660, elemidx#39}(x, y)]), [`REF.ARRAY_ADDR`_instr{arrayaddr#69}(a) `CONST`_instr{numtype#517}(`I32`_numtype, i) (ref : ref <: instr) `ARRAY.SET`_instr{typeidx#1662}(x) `REF.ARRAY_ADDR`_instr{arrayaddr#71}(a) `CONST`_instr{numtype#519}(`I32`_numtype, `%`_num_{i#43505}((i!`%`_num_{i#43495}.0 + 1))) `CONST`_instr{numtype#521}(`I32`_numtype, `%`_num_{i#43541}((j!`%`_num_{i#43531}.0 + 1))) `CONST`_instr{numtype#523}(`I32`_numtype, `%`_num_{i#43563}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `ARRAY.INIT_ELEM`_instr{typeidx#1664, elemidx#41}(x, y)]) + 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{`ref*#21`}[j!`%`_num_{i#43613}.0]) + -- if (ref = $elem(z, y).`REFS`_eleminst[j!`%`_num_.0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-null`{state#2135 : state, `instr*#2250` : instr*, z : state, heaptype#1447 : heaptype, ht : heaptype, numtype#525 : numtype, i : num_(`I32`_numtype), numtype#527 : numtype, j : num_(`I32`_numtype), numtype#529 : numtype, i#43665 : nat, n : n, typeidx#1666 : typeidx, dataidx#31 : dataidx, x : idx, y : idx}: - `%~>%`(`%;%`_config{state#2135, `instr*#2250`}(z, [`REF.NULL`_instr{heaptype#1447}(ht) `CONST`_instr{numtype#525}(`I32`_numtype, i) `CONST`_instr{numtype#527}(`I32`_numtype, j) `CONST`_instr{numtype#529}(`I32`_numtype, `%`_num_{i#43665}(n)) `ARRAY.INIT_DATA`_instr{typeidx#1666, dataidx#31}(x, y)]), [`TRAP`_instr]) + 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`{state#2147 : state, `instr*#2262` : instr*, z : state, arrayaddr#73 : arrayaddr, a : addr, numtype#531 : numtype, i : num_(`I32`_numtype), numtype#533 : numtype, j : num_(`I32`_numtype), numtype#535 : numtype, i#43745 : nat, n : n, typeidx#1668 : typeidx, dataidx#33 : dataidx, x : idx, y : idx, i#43787 : nat, `fieldval*#14` : fieldval*}: - `%~>%`(`%;%`_config{state#2147, `instr*#2262`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#73}(a) `CONST`_instr{numtype#531}(`I32`_numtype, i) `CONST`_instr{numtype#533}(`I32`_numtype, j) `CONST`_instr{numtype#535}(`I32`_numtype, `%`_num_{i#43745}(n)) `ARRAY.INIT_DATA`_instr{typeidx#1668, dataidx#33}(x, y)]), [`TRAP`_instr]) - -- if ((i!`%`_num_{i#43787}.0 + n) > |$arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#14`}|) + 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`{state#2159 : state, `instr*#2274` : instr*, z : state, arrayaddr#75 : arrayaddr, a : addr, numtype#537 : numtype, i : num_(`I32`_numtype), numtype#539 : numtype, j : num_(`I32`_numtype), numtype#541 : numtype, i#43839 : nat, n : n, typeidx#1670 : typeidx, dataidx#35 : dataidx, x : idx, y : idx, fieldtype#55 : fieldtype, `mut?#1193` : mut?, storagetype#731 : storagetype, `mut?` : mut?, zt : storagetype, i#43893 : nat, `byte*#1877` : byte*}: - `%~>%`(`%;%`_config{state#2159, `instr*#2274`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#75}(a) `CONST`_instr{numtype#537}(`I32`_numtype, i) `CONST`_instr{numtype#539}(`I32`_numtype, j) `CONST`_instr{numtype#541}(`I32`_numtype, `%`_num_{i#43839}(n)) `ARRAY.INIT_DATA`_instr{typeidx#1670, dataidx#35}(x, y)]), [`TRAP`_instr]) - -- Expand: `%~~%`($type(z, x), `ARRAY`_comptype{fieldtype#55}(`%%`_fieldtype{`mut?#1193`, storagetype#731}(mut?{mut <- `mut?`}, zt))) - -- if ((j!`%`_num_{i#43893}.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).`BYTES`_datainst{`byte*#1877`}|) + 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`{state#2171 : state, `instr*#2286` : instr*, z : state, arrayaddr#77 : arrayaddr, a : addr, numtype#543 : numtype, i : num_(`I32`_numtype), numtype#545 : numtype, j : num_(`I32`_numtype), numtype#547 : numtype, i#43957 : nat, n : n, typeidx#1672 : typeidx, dataidx#37 : dataidx, x : idx, y : idx}: - `%~>%`(`%;%`_config{state#2171, `instr*#2286`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#77}(a) `CONST`_instr{numtype#543}(`I32`_numtype, i) `CONST`_instr{numtype#545}(`I32`_numtype, j) `CONST`_instr{numtype#547}(`I32`_numtype, `%`_num_{i#43957}(n)) `ARRAY.INIT_DATA`_instr{typeidx#1672, dataidx#37}(x, y)]), []) + 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`{state#2183 : state, `instr*#2298` : instr*, z : state, arrayaddr#79 : arrayaddr, a : addr, numtype#549 : numtype, i : num_(`I32`_numtype), numtype#551 : numtype, j : num_(`I32`_numtype), numtype#553 : numtype, i#44037 : nat, n : n, typeidx#1674 : typeidx, dataidx#39 : dataidx, x : idx, y : idx, arrayaddr#81 : arrayaddr, numtype#555 : numtype, zt : storagetype, c : lit_(zt), typeidx#1676 : typeidx, arrayaddr#83 : arrayaddr, numtype#557 : numtype, i#44127 : nat, i#44117 : nat, numtype#559 : numtype, i#44163 : nat, i#44153 : nat, numtype#561 : numtype, i#44185 : nat, typeidx#1678 : typeidx, dataidx#41 : dataidx, fieldtype#57 : fieldtype, `mut?#1205` : mut?, storagetype#743 : storagetype, `mut?` : mut?, `byte*#1878` : byte*, i#44247 : nat}: - `%~>%`(`%;%`_config{state#2183, `instr*#2298`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#79}(a) `CONST`_instr{numtype#549}(`I32`_numtype, i) `CONST`_instr{numtype#551}(`I32`_numtype, j) `CONST`_instr{numtype#553}(`I32`_numtype, `%`_num_{i#44037}(n)) `ARRAY.INIT_DATA`_instr{typeidx#1674, dataidx#39}(x, y)]), [`REF.ARRAY_ADDR`_instr{arrayaddr#81}(a) `CONST`_instr{numtype#555}(`I32`_numtype, i) $const($cunpack(zt), $cunpacknum_(zt, c)) `ARRAY.SET`_instr{typeidx#1676}(x) `REF.ARRAY_ADDR`_instr{arrayaddr#83}(a) `CONST`_instr{numtype#557}(`I32`_numtype, `%`_num_{i#44127}((i!`%`_num_{i#44117}.0 + 1))) `CONST`_instr{numtype#559}(`I32`_numtype, `%`_num_{i#44163}((j!`%`_num_{i#44153}.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))) `CONST`_instr{numtype#561}(`I32`_numtype, `%`_num_{i#44185}((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) `ARRAY.INIT_DATA`_instr{typeidx#1678, dataidx#41}(x, y)]) + 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#57}(`%%`_fieldtype{`mut?#1205`, storagetype#743}(mut?{mut <- `mut?`}, zt))) - -- if ($zbytes_(zt, c) = $data(z, y).`BYTES`_datainst{`byte*#1878`}[j!`%`_num_{i#44247}.0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- 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 { @@ -118437,159 +93688,159 @@ 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{state#11 : state, `instr*#27` : instr*, z : state, `instr*` : instr*, state#23 : state, `instr*#39` : instr*, `instr'*` : instr*}: - `%~>%`(`%;%`_config{state#11, `instr*#27`}(z, instr*{instr <- `instr*`}), `%;%`_config{state#23, `instr*#39`}(z, instr'*{instr' <- `instr'*`})) + 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{state#35 : state, `instr*#51` : instr*, z : state, `instr*` : instr*, state#47 : state, `instr*#63` : instr*, `instr'*` : instr*, state#59 : state, `instr*#75` : instr*}: - `%~>%`(`%;%`_config{state#35, `instr*#51`}(z, instr*{instr <- `instr*`}), `%;%`_config{state#47, `instr*#63`}(z, instr'*{instr' <- `instr'*`})) - -- Step_read: `%~>%`(`%;%`_config{state#59, `instr*#75`}(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) + 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`{state#167 : state, `instr*#183` : instr*, z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, state#179 : state, `instr*#195` : instr*, z' : state, `instr'*` : instr*, state#191 : state, `instr*#207` : instr*, state#203 : state, `instr*#219` : instr*}: - `%~>%`(`%;%`_config{state#167, `instr*#183`}(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config{state#179, `instr*#195`}(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) - -- Step: `%~>%`(`%;%`_config{state#191, `instr*#207`}(z, instr*{instr <- `instr*`}), `%;%`_config{state#203, `instr*#219`}(z', instr'*{instr' <- `instr'*`})) + 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`{state#215 : state, `instr*#231` : instr*, z : state, n#1127 : n, `instr*#233` : instr*, n : n, `instr_0*` : instr*, `instr*` : instr*, state#227 : state, `instr*#246` : instr*, z' : state, n#1129 : n, `instr*#248` : instr*, `instr'*` : instr*, state#239 : state, `instr*#261` : instr*, state#251 : state, `instr*#273` : instr*}: - `%~>%`(`%;%`_config{state#215, `instr*#231`}(z, [`LABEL_%{%}%`_instr{n#1127, `instr*#233`}(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config{state#227, `instr*#246`}(z', [`LABEL_%{%}%`_instr{n#1129, `instr*#248`}(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) - -- Step: `%~>%`(`%;%`_config{state#239, `instr*#261`}(z, instr*{instr <- `instr*`}), `%;%`_config{state#251, `instr*#273`}(z', instr'*{instr' <- `instr'*`})) + 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`{state#263 : state, `instr*#285` : instr*, store#725 : store, frame#725 : frame, s : store, f : frame, n#1131 : n, frame#727 : frame, `instr*#287` : instr*, n : n, f' : frame, `instr*` : instr*, state#275 : state, `instr*#299` : instr*, store#737 : store, frame#739 : frame, s' : store, n#1133 : n, frame#741 : frame, `instr*#301` : instr*, f'' : frame, `instr'*` : instr*, state#287 : state, `instr*#313` : instr*, store#749 : store, frame#753 : frame, state#299 : state, `instr*#325` : instr*, store#761 : store, frame#765 : frame}: - `%~>%`(`%;%`_config{state#263, `instr*#285`}(`%;%`_state{store#725, frame#725}(s, f), [`FRAME_%{%}%`_instr{n#1131, frame#727, `instr*#287`}(n, f', instr*{instr <- `instr*`})]), `%;%`_config{state#275, `instr*#299`}(`%;%`_state{store#737, frame#739}(s', f), [`FRAME_%{%}%`_instr{n#1133, frame#741, `instr*#301`}(n, f'', instr'*{instr' <- `instr'*`})])) - -- Step: `%~>%`(`%;%`_config{state#287, `instr*#313`}(`%;%`_state{store#749, frame#753}(s, f'), instr*{instr <- `instr*`}), `%;%`_config{state#299, `instr*#325`}(`%;%`_state{store#761, frame#765}(s', f''), instr'*{instr' <- `instr'*`})) + 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{state#479 : state, `instr*#561` : instr*, z : state, n : n, `val*` : val*, tagidx#11 : tagidx, x : idx, state#491 : state, `instr*#573` : instr*, exn : exninst, exnaddr#3 : exnaddr, a : addr, tagtype#180 : tagtype, resulttype#3003 : resulttype, `X*#12555` : valtype*, `t*` : valtype*, `X*#12578` : valtype*, tagaddr#5 : tagaddr, i#32555 : nat, `val*#1` : val*}: - `%~>%`(`%;%`_config{state#479, `instr*#561`}(z, (val : val <: instr)^n{val <- `val*`} ++ [`THROW`_instr{tagidx#11}(x)]), `%;%`_config{state#491, `instr*#573`}($add_exninst(z, [exn]), [`REF.EXN_ADDR`_instr{exnaddr#3}(a) `THROW_REF`_instr])) - -- Expand: `%~~%`($as_deftype($tag(z, x).`TYPE`_taginst{tagtype#180}), `FUNC%->%`_comptype{resulttype#3003}(`%`_resulttype{`X*#12555`}(t^n{t <- `t*`}), `%`_resulttype{`X*#12578`}([]))) + rule throw{z : state, n : n, `val*` : val*, 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#5} $tagaddr(z)[x!`%`_idx{i#32555}.0], `FIELDS`{`val*#1`} val^n{val <- `val*`}}) + -- 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{state#647 : state, `instr*#762` : instr*, z : state, val : val, localidx#15 : localidx, x : idx, state#659 : state, `instr*#774` : instr*}: - `%~>%`(`%;%`_config{state#647, `instr*#762`}(z, [(val : val <: instr) `LOCAL.SET`_instr{localidx#15}(x)]), `%;%`_config{state#659, `instr*#774`}($with_local(z, x, val), [])) + 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{state#683 : state, `instr*#798` : instr*, z : state, val : val, globalidx#19 : globalidx, x : idx, state#695 : state, `instr*#810` : instr*}: - `%~>%`(`%;%`_config{state#683, `instr*#798`}(z, [(val : val <: instr) `GLOBAL.SET`_instr{globalidx#19}(x)]), `%;%`_config{state#695, `instr*#810`}($with_global(z, x, val), [])) + 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`{state#731 : state, `instr*#846` : instr*, z : state, numtype#79 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), ref : ref, tableidx#61 : tableidx, x : idx, state#743 : state, `instr*#858` : instr*, i#33027 : nat, `ref*#8` : ref*}: - `%~>%`(`%;%`_config{state#731, `instr*#846`}(z, [`CONST`_instr{numtype#79}((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr{tableidx#61}(x)]), `%;%`_config{state#743, `instr*#858`}(z, [`TRAP`_instr])) - -- if (i!`%`_num_{i#33027}.0 >= |$table(z, x).`REFS`_tableinst{`ref*#8`}|) + 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`{state#755 : state, `instr*#870` : instr*, z : state, numtype#81 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), ref : ref, tableidx#63 : tableidx, x : idx, state#767 : state, `instr*#882` : instr*, i#33077 : nat, i#33103 : nat, `ref*#9` : ref*}: - `%~>%`(`%;%`_config{state#755, `instr*#870`}(z, [`CONST`_instr{numtype#81}((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr{tableidx#63}(x)]), `%;%`_config{state#767, `instr*#882`}($with_table(z, x, i!`%`_num_{i#33077}.0, ref), [])) - -- if (i!`%`_num_{i#33103}.0 < |$table(z, x).`REFS`_tableinst{`ref*#9`}|) + 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`{state#791 : state, `instr*#906` : instr*, z : state, ref : ref, numtype#85 : numtype, at : addrtype, i#33189 : nat, n : n, tableidx#67 : tableidx, x : idx, state#803 : state, `instr*#918` : instr*, ti : tableinst, numtype#87 : numtype, i#33249 : nat, `ref*#11` : ref*}: - `%~>%`(`%;%`_config{state#791, `instr*#906`}(z, [(ref : ref <: instr) `CONST`_instr{numtype#85}((at : addrtype <: numtype), `%`_num_{i#33189}(n)) `TABLE.GROW`_instr{tableidx#67}(x)]), `%;%`_config{state#803, `instr*#918`}($with_tableinst(z, x, ti), [`CONST`_instr{numtype#87}((at : addrtype <: numtype), `%`_num_{i#33249}(|$table(z, x).`REFS`_tableinst{`ref*#11`}|))])) + 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`{state#815 : state, `instr*#930` : instr*, z : state, ref : ref, numtype#89 : numtype, at : addrtype, i#33285 : nat, n : n, tableidx#69 : tableidx, x : idx, state#827 : state, `instr*#942` : instr*, numtype#91 : numtype, i#33321 : nat}: - `%~>%`(`%;%`_config{state#815, `instr*#930`}(z, [(ref : ref <: instr) `CONST`_instr{numtype#89}((at : addrtype <: numtype), `%`_num_{i#33285}(n)) `TABLE.GROW`_instr{tableidx#69}(x)]), `%;%`_config{state#827, `instr*#942`}(z, [`CONST`_instr{numtype#91}((at : addrtype <: numtype), `%`_num_{i#33321}($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))])) + 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{state#959 : state, `instr*#1074` : instr*, z : state, elemidx#25 : elemidx, x : idx, state#971 : state, `instr*#1086` : instr*}: - `%~>%`(`%;%`_config{state#959, `instr*#1074`}(z, [`ELEM.DROP`_instr{elemidx#25}(x)]), `%;%`_config{state#971, `instr*#1086`}($with_elem(z, x, []), [])) + 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`{state#1151 : state, `instr*#1266` : instr*, z : state, numtype#217 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), numtype#219 : numtype, nt : numtype, c : num_(nt), `numtype?#11` : numtype?, memidx#95 : memidx, memarg#63 : memarg, x : idx, ao : memarg, state#1163 : state, `instr*#1278` : instr*, i#37014 : nat, u64#419 : u64, i#37024 : nat, `byte*#1863` : byte*}: - `%~>%`(`%;%`_config{state#1151, `instr*#1266`}(z, [`CONST`_instr{numtype#217}((at : addrtype <: numtype), i) `CONST`_instr{numtype#219}(nt, c) `STORE`_instr{`numtype?#11`, memidx#95, memarg#63}(nt, ?(), x, ao)]), `%;%`_config{state#1163, `instr*#1278`}(z, [`TRAP`_instr])) - -- if (((i!`%`_num_{i#37014}.0 + ao.`OFFSET`_memarg{u64#419}!`%`_u64{i#37024}.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst{`byte*#1863`}|) + 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`{state#1175 : state, `instr*#1290` : instr*, z : state, numtype#222 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), numtype#224 : numtype, nt : numtype, c : num_(nt), `numtype?#12` : numtype?, memidx#97 : memidx, memarg#65 : memarg, x : idx, ao : memarg, state#1187 : state, `instr*#1302` : instr*, i#37094 : nat, u64#420 : u64, i#37104 : nat, `b*` : byte*}: - `%~>%`(`%;%`_config{state#1175, `instr*#1290`}(z, [`CONST`_instr{numtype#222}((at : addrtype <: numtype), i) `CONST`_instr{numtype#224}(nt, c) `STORE`_instr{`numtype?#12`, memidx#97, memarg#65}(nt, ?(), x, ao)]), `%;%`_config{state#1187, `instr*#1302`}($with_mem(z, x, (i!`%`_num_{i#37094}.0 + ao.`OFFSET`_memarg{u64#420}!`%`_u64{i#37104}.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + 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`{state#1199 : state, `instr*#1314` : instr*, z : state, numtype#227 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), numtype#229 : numtype, Inn : Inn, c : num_((Inn : Inn <: numtype)), `numtype?#13` : numtype?, memidx#99 : memidx, memarg#67 : memarg, sz#446 : sz, i#37199 : nat, i#37200 : nat, n : n, x : idx, ao : memarg, state#1211 : state, `instr*#1326` : instr*, i#37232 : nat, u64#421 : u64, i#37242 : nat, `byte*#1864` : byte*}: - `%~>%`(`%;%`_config{state#1199, `instr*#1314`}(z, [`CONST`_instr{numtype#227}((at : addrtype <: numtype), i) `CONST`_instr{numtype#229}((Inn : Inn <: numtype), c) `STORE`_instr{`numtype?#13`, memidx#99, memarg#67}((Inn : Inn <: numtype), ?(`%`_storeop_{sz#446, i#37199}(`%`_sz{i#37200}(n))), x, ao)]), `%;%`_config{state#1211, `instr*#1326`}(z, [`TRAP`_instr])) - -- if (((i!`%`_num_{i#37232}.0 + ao.`OFFSET`_memarg{u64#421}!`%`_u64{i#37242}.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst{`byte*#1864`}|) + rule `store-pack-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), Inn : Inn, c : num_((Inn : Inn <: numtype)), n : n, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr((Inn : Inn <: numtype), c) `STORE`_instr((Inn : Inn <: 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`{state#1223 : state, `instr*#1338` : instr*, z : state, numtype#232 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), numtype#234 : numtype, Inn : Inn, c : num_((Inn : Inn <: numtype)), `numtype?#14` : numtype?, memidx#101 : memidx, memarg#69 : memarg, sz#448 : sz, i#37325 : nat, i#37326 : nat, n : n, x : idx, ao : memarg, state#1235 : state, `instr*#1350` : instr*, i#37370 : nat, u64#422 : u64, i#37380 : nat, `b*` : byte*}: - `%~>%`(`%;%`_config{state#1223, `instr*#1338`}(z, [`CONST`_instr{numtype#232}((at : addrtype <: numtype), i) `CONST`_instr{numtype#234}((Inn : Inn <: numtype), c) `STORE`_instr{`numtype?#14`, memidx#101, memarg#69}((Inn : Inn <: numtype), ?(`%`_storeop_{sz#448, i#37325}(`%`_sz{i#37326}(n))), x, ao)]), `%;%`_config{state#1235, `instr*#1350`}($with_mem(z, x, (i!`%`_num_{i#37370}.0 + ao.`OFFSET`_memarg{u64#422}!`%`_u64{i#37380}.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + rule `store-pack-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), Inn : Inn, c : num_((Inn : Inn <: numtype)), n : n, x : idx, ao : memarg, `b*` : byte*}: + `%~>%`(`%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr((Inn : Inn <: numtype), c) `STORE`_instr((Inn : Inn <: 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 : Inn <: numtype)), n, c))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:516.1-519.63 - rule `vstore-oob`{state#1247 : state, `instr*#1362` : instr*, z : state, numtype#237 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), vectype#88 : vectype, c : vec_(`V128`_Vnn), vectype#90 : vectype, memidx#103 : memidx, memarg#71 : memarg, x : idx, ao : memarg, state#1259 : state, `instr*#1374` : instr*, i#37486 : nat, u64#423 : u64, i#37496 : nat, `byte*#1865` : byte*}: - `%~>%`(`%;%`_config{state#1247, `instr*#1362`}(z, [`CONST`_instr{numtype#237}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#88}(`V128`_vectype, c) `VSTORE`_instr{vectype#90, memidx#103, memarg#71}(`V128`_vectype, x, ao)]), `%;%`_config{state#1259, `instr*#1374`}(z, [`TRAP`_instr])) - -- if (((i!`%`_num_{i#37486}.0 + ao.`OFFSET`_memarg{u64#423}!`%`_u64{i#37496}.0) + ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst{`byte*#1865`}|) + 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`{state#1271 : state, `instr*#1386` : instr*, z : state, numtype#239 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), vectype#92 : vectype, c : vec_(`V128`_Vnn), vectype#94 : vectype, memidx#105 : memidx, memarg#73 : memarg, x : idx, ao : memarg, state#1283 : state, `instr*#1398` : instr*, i#37580 : nat, u64#424 : u64, i#37590 : nat, `b*` : byte*}: - `%~>%`(`%;%`_config{state#1271, `instr*#1386`}(z, [`CONST`_instr{numtype#239}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#92}(`V128`_vectype, c) `VSTORE`_instr{vectype#94, memidx#105, memarg#73}(`V128`_vectype, x, ao)]), `%;%`_config{state#1283, `instr*#1398`}($with_mem(z, x, (i!`%`_num_{i#37580}.0 + ao.`OFFSET`_memarg{u64#424}!`%`_u64{i#37590}.0), ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + 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`{state#1295 : state, `instr*#1410` : instr*, z : state, numtype#241 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), vectype#96 : vectype, c : vec_(`V128`_Vnn), vectype#98 : vectype, sz#450 : sz, memidx#107 : memidx, memarg#75 : memarg, laneidx#21 : laneidx, i#37660 : nat, N : N, x : idx, ao : memarg, j : laneidx, state#1307 : state, `instr*#1422` : instr*, i#37706 : nat, u64#425 : u64, i#37716 : nat, `byte*#1866` : byte*}: - `%~>%`(`%;%`_config{state#1295, `instr*#1410`}(z, [`CONST`_instr{numtype#241}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#96}(`V128`_vectype, c) `VSTORE_LANE`_instr{vectype#98, sz#450, memidx#107, memarg#75, laneidx#21}(`V128`_vectype, `%`_sz{i#37660}(N), x, ao, j)]), `%;%`_config{state#1307, `instr*#1422`}(z, [`TRAP`_instr])) - -- if (((i!`%`_num_{i#37706}.0 + ao.`OFFSET`_memarg{u64#425}!`%`_u64{i#37716}.0) + N) > |$mem(z, x).`BYTES`_meminst{`byte*#1866`}|) + 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`{state#1319 : state, `instr*#1434` : instr*, z : state, numtype#243 : numtype, at : addrtype, i : num_((at : addrtype <: numtype)), vectype#100 : vectype, c : vec_(`V128`_Vnn), vectype#102 : vectype, sz#452 : sz, memidx#109 : memidx, memarg#77 : memarg, laneidx#23 : laneidx, i#37764 : nat, N : N, x : idx, ao : memarg, j : laneidx, state#1331 : state, `instr*#1446` : instr*, i#37822 : nat, u64#426 : u64, i#37832 : nat, `b*` : byte*, Jnn : Jnn, M : M, i#37907 : nat, lanetype#7403 : lanetype, dim#7403 : dim, i#37855 : nat, i#37862 : nat, i#37882 : nat, i#37906 : nat}: - `%~>%`(`%;%`_config{state#1319, `instr*#1434`}(z, [`CONST`_instr{numtype#243}((at : addrtype <: numtype), i) `VCONST`_instr{vectype#100}(`V128`_vectype, c) `VSTORE_LANE`_instr{vectype#102, sz#452, memidx#109, memarg#77, laneidx#23}(`V128`_vectype, `%`_sz{i#37764}(N), x, ao, j)]), `%;%`_config{state#1331, `instr*#1446`}($with_mem(z, x, (i!`%`_num_{i#37822}.0 + ao.`OFFSET`_memarg{u64#426}!`%`_u64{i#37832}.0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + 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{i#37907}($lanes_(`%X%`_shape{lanetype#7403, dim#7403, i#37855}((Jnn : Jnn <: lanetype), `%`_dim{i#37862}(M)), c)[j!`%`_laneidx{i#37882}.0]!`%`_lane_{i#37906}.0))) + -- 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`{state#1355 : state, `instr*#1470` : instr*, z : state, numtype#247 : numtype, at : addrtype, i#38006 : nat, n : n, memidx#113 : memidx, x : idx, state#1367 : state, `instr*#1482` : instr*, mi : meminst, numtype#249 : numtype, i#38066 : nat, `byte*#1868` : byte*}: - `%~>%`(`%;%`_config{state#1355, `instr*#1470`}(z, [`CONST`_instr{numtype#247}((at : addrtype <: numtype), `%`_num_{i#38006}(n)) `MEMORY.GROW`_instr{memidx#113}(x)]), `%;%`_config{state#1367, `instr*#1482`}($with_meminst(z, x, mi), [`CONST`_instr{numtype#249}((at : addrtype <: numtype), `%`_num_{i#38066}((((|$mem(z, x).`BYTES`_meminst{`byte*#1868`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat)))])) + 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`{state#1379 : state, `instr*#1494` : instr*, z : state, numtype#251 : numtype, at : addrtype, i#38102 : nat, n : n, memidx#115 : memidx, x : idx, state#1391 : state, `instr*#1506` : instr*, numtype#253 : numtype, i#38138 : nat}: - `%~>%`(`%;%`_config{state#1379, `instr*#1494`}(z, [`CONST`_instr{numtype#251}((at : addrtype <: numtype), `%`_num_{i#38102}(n)) `MEMORY.GROW`_instr{memidx#115}(x)]), `%;%`_config{state#1391, `instr*#1506`}(z, [`CONST`_instr{numtype#253}((at : addrtype <: numtype), `%`_num_{i#38138}($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))])) + 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{state#1523 : state, `instr*#1638` : instr*, z : state, dataidx#25 : dataidx, x : idx, state#1535 : state, `instr*#1650` : instr*}: - `%~>%`(`%;%`_config{state#1523, `instr*#1638`}(z, [`DATA.DROP`_instr{dataidx#25}(x)]), `%;%`_config{state#1535, `instr*#1650`}($with_data(z, x, []), [])) + 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{state#1619 : state, `instr*#1734` : instr*, z : state, n : n, `val*` : val*, typeidx#1557 : typeidx, x : idx, state#1631 : state, `instr*#1746` : instr*, si : structinst, structaddr#3 : structaddr, a : addr, `X*#12668` : fieldtype*, `mut?*` : mut?*, `mut?#1031*` : mut?*, `storagetype#569*` : storagetype*, `zt*` : storagetype*, deftype#9 : deftype, `fieldval*#3` : fieldval*}: - `%~>%`(`%;%`_config{state#1619, `instr*#1734`}(z, (val : val <: instr)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr{typeidx#1557}(x)]), `%;%`_config{state#1631, `instr*#1746`}($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr{structaddr#3}(a)])) - -- Expand: `%~~%`($type(z, x), `STRUCT`_comptype(`%`_list{`X*#12668`}(`%%`_fieldtype{`mut?#1031`, storagetype#569}(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, `mut?#1031` <- `mut?#1031*`, storagetype#569 <- `storagetype#569*`, zt <- `zt*`}))) + rule struct.new{z : state, n : n, `val*` : val*, 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`{deftype#9} $type(z, x), `FIELDS`{`fieldval*#3`} $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`{state#1679 : state, `instr*#1794` : instr*, z : state, heaptype#1431 : heaptype, ht : heaptype, val : val, typeidx#1567 : typeidx, u32#21 : u32, x : idx, i : u32, state#1691 : state, `instr*#1806` : instr*}: - `%~>%`(`%;%`_config{state#1679, `instr*#1794`}(z, [`REF.NULL`_instr{heaptype#1431}(ht) (val : val <: instr) `STRUCT.SET`_instr{typeidx#1567, u32#21}(x, i)]), `%;%`_config{state#1691, `instr*#1806`}(z, [`TRAP`_instr])) + 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`{state#1703 : state, `instr*#1818` : instr*, z : state, structaddr#7 : structaddr, a : addr, val : val, typeidx#1569 : typeidx, u32#23 : u32, x : idx, i : u32, state#1715 : state, `instr*#1830` : instr*, i#40466 : nat, `zt*` : storagetype*, i#40476 : nat, `X*#12713` : fieldtype*, `mut?*` : mut?*, `mut?#1085*` : mut?*, `storagetype#623*` : storagetype*}: - `%~>%`(`%;%`_config{state#1703, `instr*#1818`}(z, [`REF.STRUCT_ADDR`_instr{structaddr#7}(a) (val : val <: instr) `STRUCT.SET`_instr{typeidx#1569, u32#23}(x, i)]), `%;%`_config{state#1715, `instr*#1830`}($with_struct(z, a, i!`%`_u32{i#40466}.0, $packfield_(zt*{zt <- `zt*`}[i!`%`_u32{i#40476}.0], val)), [])) - -- Expand: `%~~%`($type(z, x), `STRUCT`_comptype(`%`_list{`X*#12713`}(`%%`_fieldtype{`mut?#1085`, storagetype#623}(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, `mut?#1085` <- `mut?#1085*`, storagetype#623 <- `storagetype#623*`, zt <- `zt*`}))) + 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{state#1739 : state, `instr*#1854` : instr*, z : state, n : n, `val*` : val*, typeidx#1579 : typeidx, u32#29 : u32, x : idx, i#40690 : nat, state#1751 : state, `instr*#1866` : instr*, ai : arrayinst, arrayaddr#3 : arrayaddr, a : addr, fieldtype#41 : fieldtype, `mut?#1109` : mut?, storagetype#647 : storagetype, `mut?` : mut?, zt : storagetype, deftype#10 : deftype, `fieldval*#5` : fieldval*}: - `%~>%`(`%;%`_config{state#1739, `instr*#1854`}(z, (val : val <: instr)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr{typeidx#1579, u32#29}(x, `%`_u32{i#40690}(n))]), `%;%`_config{state#1751, `instr*#1866`}($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr{arrayaddr#3}(a)])) - -- Expand: `%~~%`($type(z, x), `ARRAY`_comptype{fieldtype#41}(`%%`_fieldtype{`mut?#1109`, storagetype#647}(mut?{mut <- `mut?`}, zt))) - -- if ((a = |$arrayinst(z)|) /\ (ai = {`TYPE`{deftype#10} $type(z, x), `FIELDS`{`fieldval*#5`} $packfield_(zt, val)^n{val <- `val*`}})) + rule array.new_fixed{z : state, n : n, `val*` : val*, 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`{state#1847 : state, `instr*#1962` : instr*, z : state, heaptype#1435 : heaptype, ht : heaptype, numtype#395 : numtype, i : num_(`I32`_numtype), val : val, typeidx#1599 : typeidx, x : idx, state#1859 : state, `instr*#1974` : instr*}: - `%~>%`(`%;%`_config{state#1847, `instr*#1962`}(z, [`REF.NULL`_instr{heaptype#1435}(ht) `CONST`_instr{numtype#395}(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr{typeidx#1599}(x)]), `%;%`_config{state#1859, `instr*#1974`}(z, [`TRAP`_instr])) + 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`{state#1871 : state, `instr*#1986` : instr*, z : state, arrayaddr#9 : arrayaddr, a : addr, numtype#397 : numtype, i : num_(`I32`_numtype), val : val, typeidx#1601 : typeidx, x : idx, state#1883 : state, `instr*#1998` : instr*, i#41549 : nat, `fieldval*#8` : fieldval*}: - `%~>%`(`%;%`_config{state#1871, `instr*#1986`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#9}(a) `CONST`_instr{numtype#397}(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr{typeidx#1601}(x)]), `%;%`_config{state#1883, `instr*#1998`}(z, [`TRAP`_instr])) - -- if (i!`%`_num_{i#41549}.0 >= |$arrayinst(z)[a].`FIELDS`_arrayinst{`fieldval*#8`}|) + 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`{state#1895 : state, `instr*#2010` : instr*, z : state, arrayaddr#11 : arrayaddr, a : addr, numtype#399 : numtype, i : num_(`I32`_numtype), val : val, typeidx#1603 : typeidx, x : idx, state#1907 : state, `instr*#2022` : instr*, i#41587 : nat, zt : storagetype, fieldtype#49 : fieldtype, `mut?#1157` : mut?, storagetype#695 : storagetype, `mut?` : mut?}: - `%~>%`(`%;%`_config{state#1895, `instr*#2010`}(z, [`REF.ARRAY_ADDR`_instr{arrayaddr#11}(a) `CONST`_instr{numtype#399}(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr{typeidx#1603}(x)]), `%;%`_config{state#1907, `instr*#2022`}($with_array(z, a, i!`%`_num_{i#41587}.0, $packfield_(zt, val)), [])) - -- Expand: `%~~%`($type(z, x), `ARRAY`_comptype{fieldtype#49}(`%%`_fieldtype{`mut?#1157`, storagetype#695}(mut?{mut <- `mut?`}, zt))) + 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 @@ -118598,22 +93849,22 @@ 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{state#71 : state, `instr*#87` : instr*, z : state, `instr*` : instr*, state#83 : state, `instr*#99` : instr*}: - `%~>*%`(`%;%`_config{state#71, `instr*#87`}(z, instr*{instr <- `instr*`}), `%;%`_config{state#83, `instr*#99`}(z, instr*{instr <- `instr*`})) + 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{state#95 : state, `instr*#111` : instr*, z : state, `instr*` : instr*, state#107 : state, `instr*#123` : instr*, z'' : state, `instr''*` : instr*, state#119 : state, `instr*#135` : instr*, state#131 : state, `instr*#147` : instr*, z' : state, `instr'*` : instr*, state#143 : state, `instr*#159` : instr*, state#155 : state, `instr*#171` : instr*}: - `%~>*%`(`%;%`_config{state#95, `instr*#111`}(z, instr*{instr <- `instr*`}), `%;%`_config{state#107, `instr*#123`}(z'', instr''*{instr'' <- `instr''*`})) - -- Step: `%~>%`(`%;%`_config{state#119, `instr*#135`}(z, instr*{instr <- `instr*`}), `%;%`_config{state#131, `instr*#147`}(z', instr'*{instr' <- `instr'*`})) - -- Steps: `%~>*%`(`%;%`_config{state#143, `instr*#159`}(z', instr'*{instr' <- `instr'*`}), `%;%`_config{state#155, `instr*#171`}(z'', instr''*{instr'' <- `instr''*`})) + 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*, state#2195 : state, `instr*#2310` : instr*, state#2207 : state, `instr*#2322` : instr*}: + rule _{z : state, `instr*` : instr*, z' : state, `val*` : val*}: `%;%~>*%;%`(z, instr*{instr <- `instr*`}, z', val*{val <- `val*`}) - -- Steps: `%~>*%`(`%;%`_config{state#2195, `instr*#2310`}(z, instr*{instr <- `instr*`}), `%;%`_config{state#2207, `instr*#2322`}(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 { @@ -118623,18 +93874,18 @@ 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#1449 : rectype, rectype : rectype, x : idx, i#46777 : nat}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} + def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : idx}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} -- if (deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`})) - -- if (type = `TYPE`_type{rectype#1449}(rectype)) + -- if (type = `TYPE`_type(rectype)) -- if (deftype*{deftype <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), (deftype' : deftype <: typeuse)*{deftype' <- `deftype'*`})) - -- if (x!`%`_idx{i#46777}.0 = |deftype'*{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*#5` : taginst*, taginst : taginst, `globalinst*#6` : globalinst*, `meminst*#7` : meminst*, `tableinst*#7` : tableinst*, `funcinst*#6` : funcinst*, `datainst*#5` : datainst*, `eleminst*#5` : eleminst*, `structinst*#6` : structinst*, `arrayinst*#6` : arrayinst*, `exninst*#5` : exninst*, `taginst*#6` : taginst*, tagtype#181 : tagtype}(s, tagtype) = (s +++ {`TAGS`{`taginst*#5`} [taginst], `GLOBALS`{`globalinst*#6`} [], `MEMS`{`meminst*#7`} [], `TABLES`{`tableinst*#7`} [], `FUNCS`{`funcinst*#6`} [], `DATAS`{`datainst*#5`} [], `ELEMS`{`eleminst*#5`} [], `STRUCTS`{`structinst*#6`} [], `ARRAYS`{`arrayinst*#6`} [], `EXNS`{`exninst*#5`} []}, |s.`TAGS`_store{`taginst*#6`}|) - -- if (taginst = {`TYPE`{tagtype#181} tagtype}) + 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 { @@ -118652,8 +93903,8 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) ;; ../../../../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, `taginst*#7` : taginst*, `globalinst*#7` : globalinst*, globalinst : globalinst, `meminst*#8` : meminst*, `tableinst*#8` : tableinst*, `funcinst*#7` : funcinst*, `datainst*#6` : datainst*, `eleminst*#6` : eleminst*, `structinst*#7` : structinst*, `arrayinst*#7` : arrayinst*, `exninst*#6` : exninst*, `globalinst*#8` : globalinst*, globaltype#2088 : globaltype, val#3 : val}(s, globaltype, val) = (s +++ {`TAGS`{`taginst*#7`} [], `GLOBALS`{`globalinst*#7`} [globalinst], `MEMS`{`meminst*#8`} [], `TABLES`{`tableinst*#8`} [], `FUNCS`{`funcinst*#7`} [], `DATAS`{`datainst*#6`} [], `ELEMS`{`eleminst*#6`} [], `STRUCTS`{`structinst*#7`} [], `ARRAYS`{`arrayinst*#7`} [], `EXNS`{`exninst*#6`} []}, |s.`GLOBALS`_store{`globalinst*#8`}|) - -- if (globalinst = {`TYPE`{globaltype#2088} globaltype, `VALUE`{val#3} val}) + 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 { @@ -118671,8 +93922,8 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) ;; ../../../../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, addrtype#1147 : addrtype, limits#1147 : limits, at : addrtype, u64#443 : u64, `u64?#419` : u64?, i : u64, `j?` : u64?, `taginst*#8` : taginst*, `globalinst*#9` : globalinst*, `meminst*#9` : meminst*, meminst : meminst, `tableinst*#9` : tableinst*, `funcinst*#8` : funcinst*, `datainst*#7` : datainst*, `eleminst*#7` : eleminst*, `structinst*#8` : structinst*, `arrayinst*#8` : arrayinst*, `exninst*#7` : exninst*, `meminst*#10` : meminst*, memtype#531 : memtype, addrtype#1159 : addrtype, limits#1159 : limits, u64#455 : u64, `u64?#431` : u64?, `byte*#1879` : byte*, i#46867 : nat, `i#46875*` : nat*}(s, `%%PAGE`_memtype{addrtype#1147, limits#1147}(at, `[%..%]`_limits{u64#443, `u64?#419`}(i, j?{j <- `j?`}))) = (s +++ {`TAGS`{`taginst*#8`} [], `GLOBALS`{`globalinst*#9`} [], `MEMS`{`meminst*#9`} [meminst], `TABLES`{`tableinst*#9`} [], `FUNCS`{`funcinst*#8`} [], `DATAS`{`datainst*#7`} [], `ELEMS`{`eleminst*#7`} [], `STRUCTS`{`structinst*#8`} [], `ARRAYS`{`arrayinst*#8`} [], `EXNS`{`exninst*#7`} []}, |s.`MEMS`_store{`meminst*#10`}|) - -- if (meminst = {`TYPE`{memtype#531} `%%PAGE`_memtype{addrtype#1159, limits#1159}(at, `[%..%]`_limits{u64#455, `u64?#431`}(i, j?{j <- `j?`})), `BYTES`{`byte*#1879`} `%`_byte{i#46875}(0)^(i!`%`_u64{i#46867}.0 * (64 * $Ki)){i#46875 <- `i#46875*`}}) + 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 { @@ -118690,8 +93941,8 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) ;; ../../../../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, addrtype#1219 : addrtype, limits#1219 : limits, reftype#3485 : reftype, at : addrtype, u64#467 : u64, `u64?#443` : u64?, i : u64, `j?` : u64?, rt : reftype, ref : ref, `taginst*#9` : taginst*, `globalinst*#10` : globalinst*, `meminst*#11` : meminst*, `tableinst*#10` : tableinst*, tableinst : tableinst, `funcinst*#9` : funcinst*, `datainst*#8` : datainst*, `eleminst*#8` : eleminst*, `structinst*#9` : structinst*, `arrayinst*#9` : arrayinst*, `exninst*#8` : exninst*, `tableinst*#11` : tableinst*, tabletype#881 : tabletype, addrtype#1231 : addrtype, limits#1231 : limits, reftype#3497 : reftype, u64#479 : u64, `u64?#455` : u64?, `ref*#22` : ref*, i#46955 : nat}(s, `%%%`_tabletype{addrtype#1219, limits#1219, reftype#3485}(at, `[%..%]`_limits{u64#467, `u64?#443`}(i, j?{j <- `j?`}), rt), ref) = (s +++ {`TAGS`{`taginst*#9`} [], `GLOBALS`{`globalinst*#10`} [], `MEMS`{`meminst*#11`} [], `TABLES`{`tableinst*#10`} [tableinst], `FUNCS`{`funcinst*#9`} [], `DATAS`{`datainst*#8`} [], `ELEMS`{`eleminst*#8`} [], `STRUCTS`{`structinst*#9`} [], `ARRAYS`{`arrayinst*#9`} [], `EXNS`{`exninst*#8`} []}, |s.`TABLES`_store{`tableinst*#11`}|) - -- if (tableinst = {`TYPE`{tabletype#881} `%%%`_tabletype{addrtype#1231, limits#1231, reftype#3497}(at, `[%..%]`_limits{u64#479, `u64?#455`}(i, j?{j <- `j?`}), rt), `REFS`{`ref*#22`} ref^i!`%`_u64{i#46955}.0{}}) + 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 { @@ -118709,8 +93960,8 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) ;; ../../../../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, `taginst*#10` : taginst*, `globalinst*#11` : globalinst*, `meminst*#12` : meminst*, `tableinst*#12` : tableinst*, `funcinst*#10` : funcinst*, funcinst : funcinst, `datainst*#9` : datainst*, `eleminst*#9` : eleminst*, `structinst*#10` : structinst*, `arrayinst*#10` : arrayinst*, `exninst*#9` : exninst*, `funcinst*#11` : funcinst*, deftype#11 : deftype, moduleinst#25 : moduleinst, funccode#2 : funccode}(s, deftype, funccode, moduleinst) = (s +++ {`TAGS`{`taginst*#10`} [], `GLOBALS`{`globalinst*#11`} [], `MEMS`{`meminst*#12`} [], `TABLES`{`tableinst*#12`} [], `FUNCS`{`funcinst*#10`} [funcinst], `DATAS`{`datainst*#9`} [], `ELEMS`{`eleminst*#9`} [], `STRUCTS`{`structinst*#10`} [], `ARRAYS`{`arrayinst*#10`} [], `EXNS`{`exninst*#9`} []}, |s.`FUNCS`_store{`funcinst*#11`}|) - -- if (funcinst = {`TYPE`{deftype#11} deftype, `MODULE`{moduleinst#25} moduleinst, `CODE`{funccode#2} funccode}) + 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 { @@ -118728,8 +93979,8 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca ;; ../../../../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*, `taginst*#11` : taginst*, `globalinst*#12` : globalinst*, `meminst*#13` : meminst*, `tableinst*#13` : tableinst*, `funcinst*#12` : funcinst*, `datainst*#10` : datainst*, datainst : datainst, `eleminst*#10` : eleminst*, `structinst*#11` : structinst*, `arrayinst*#11` : arrayinst*, `exninst*#10` : exninst*, `datainst*#11` : datainst*, `byte*#1880` : byte*}(s, `OK`_datatype, byte*{byte <- `byte*`}) = (s +++ {`TAGS`{`taginst*#11`} [], `GLOBALS`{`globalinst*#12`} [], `MEMS`{`meminst*#13`} [], `TABLES`{`tableinst*#13`} [], `FUNCS`{`funcinst*#12`} [], `DATAS`{`datainst*#10`} [datainst], `ELEMS`{`eleminst*#10`} [], `STRUCTS`{`structinst*#11`} [], `ARRAYS`{`arrayinst*#11`} [], `EXNS`{`exninst*#10`} []}, |s.`DATAS`_store{`datainst*#11`}|) - -- if (datainst = {`BYTES`{`byte*#1880`} byte*{byte <- `byte*`}}) + 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 { @@ -118747,8 +93998,8 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) ;; ../../../../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*, `taginst*#12` : taginst*, `globalinst*#13` : globalinst*, `meminst*#14` : meminst*, `tableinst*#14` : tableinst*, `funcinst*#13` : funcinst*, `datainst*#12` : datainst*, `eleminst*#11` : eleminst*, eleminst : eleminst, `structinst*#12` : structinst*, `arrayinst*#12` : arrayinst*, `exninst*#11` : exninst*, `eleminst*#12` : eleminst*, elemtype#1 : elemtype, `ref*#23` : ref*}(s, elemtype, ref*{ref <- `ref*`}) = (s +++ {`TAGS`{`taginst*#12`} [], `GLOBALS`{`globalinst*#13`} [], `MEMS`{`meminst*#14`} [], `TABLES`{`tableinst*#14`} [], `FUNCS`{`funcinst*#13`} [], `DATAS`{`datainst*#12`} [], `ELEMS`{`eleminst*#11`} [eleminst], `STRUCTS`{`structinst*#12`} [], `ARRAYS`{`arrayinst*#12`} [], `EXNS`{`exninst*#11`} []}, |s.`ELEMS`_store{`eleminst*#12`}|) - -- if (eleminst = {`TYPE`{elemtype#1} elemtype, `REFS`{`ref*#23`} ref*{ref <- `ref*`}}) + 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 { @@ -118766,15 +94017,15 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) ;; ../../../../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#5597 : name, externidx#5379 : externidx, name : name, tagidx#17 : tagidx, x : idx, name#5599 : name, externaddr#1 : externaddr, tagaddr#8 : tagaddr, `tagaddr*#4` : tagaddr*, i#47111 : nat}(moduleinst, `EXPORT`_export{name#5597, externidx#5379}(name, `TAG`_externidx{tagidx#17}(x))) = {`NAME`{name#5599} name, `ADDR`{externaddr#1} `TAG`_externaddr{tagaddr#8}(moduleinst.`TAGS`_moduleinst{`tagaddr*#4`}[x!`%`_idx{i#47111}.0])} + 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#5610 : name, externidx#5391 : externidx, name : name, globalidx#21 : globalidx, x : idx, name#5612 : name, externaddr#2 : externaddr, globaladdr#5 : globaladdr, `globaladdr*#3` : globaladdr*, i#47135 : nat}(moduleinst, `EXPORT`_export{name#5610, externidx#5391}(name, `GLOBAL`_externidx{globalidx#21}(x))) = {`NAME`{name#5612} name, `ADDR`{externaddr#2} `GLOBAL`_externaddr{globaladdr#5}(moduleinst.`GLOBALS`_moduleinst{`globaladdr*#3`}[x!`%`_idx{i#47135}.0])} + 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#5623 : name, externidx#5403 : externidx, name : name, memidx#163 : memidx, x : idx, name#5625 : name, externaddr#3 : externaddr, memaddr#5 : memaddr, `memaddr*#4` : memaddr*, i#47159 : nat}(moduleinst, `EXPORT`_export{name#5623, externidx#5403}(name, `MEM`_externidx{memidx#163}(x))) = {`NAME`{name#5625} name, `ADDR`{externaddr#3} `MEM`_externaddr{memaddr#5}(moduleinst.`MEMS`_moduleinst{`memaddr*#4`}[x!`%`_idx{i#47159}.0])} + 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#5636 : name, externidx#5415 : externidx, name : name, tableidx#117 : tableidx, x : idx, name#5638 : name, externaddr#4 : externaddr, tableaddr#5 : tableaddr, `tableaddr*#4` : tableaddr*, i#47183 : nat}(moduleinst, `EXPORT`_export{name#5636, externidx#5415}(name, `TABLE`_externidx{tableidx#117}(x))) = {`NAME`{name#5638} name, `ADDR`{externaddr#4} `TABLE`_externaddr{tableaddr#5}(moduleinst.`TABLES`_moduleinst{`tableaddr*#4`}[x!`%`_idx{i#47183}.0])} + 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#5649 : name, externidx#5427 : externidx, name : name, funcidx#2843 : funcidx, x : idx, name#5651 : name, externaddr#5 : externaddr, funcaddr#19 : funcaddr, `funcaddr*#5` : funcaddr*, i#47207 : nat}(moduleinst, `EXPORT`_export{name#5649, externidx#5427}(name, `FUNC`_externidx{funcidx#2843}(x))) = {`NAME`{name#5651} name, `ADDR`{externaddr#5} `FUNC`_externaddr{funcaddr#19}(moduleinst.`FUNCS`_moduleinst{`funcaddr*#5`}[x!`%`_idx{i#47207}.0])} + 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* @@ -118784,47 +94035,47 @@ def $allocexports(moduleinst : moduleinst, export*) : exportinst* ;; ../../../../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*#101` : type*, `import*#101` : import*, `tag*#101` : tag*, `global*#125` : global*, `mem*#125` : mem*, `table*#125` : table*, `func*#101` : func*, `data*#101` : data*, `elem*#125` : elem*, `start?#101` : start?, `export*#101` : export*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `tagtype#260*` : tagtype*, `expr#4459*` : expr*, `expr_G*` : expr*, `globaltype*` : globaltype*, `globaltype#2179*` : globaltype*, `memtype*` : memtype*, `memtype#634*` : memtype*, `expr#4477*` : expr*, `expr_T*` : expr*, `tabletype*` : tabletype*, `tabletype#998*` : tabletype*, `expr#4495*` : expr*, `expr_F*` : expr*, `local**` : local**, `local*#1351*` : local**, `typeidx#1808*` : typeidx*, `x*` : idx*, `byte**` : byte**, `byte*#2021*` : byte**, `datamode*` : datamode*, `datamode#1985*` : datamode*, `elemmode*` : elemmode*, `elemmode#3087*` : elemmode*, `elemtype*` : elemtype*, `expr*#3087*` : expr**, `expr_E**` : expr**, `reftype#3705*` : reftype*, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, i_F : nat, `funcinst*#14*` : funcinst**, 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*, `i#47295*` : nat*, `expr#4497*` : expr*, `local*#1353*` : local**, `typeidx#1810*` : typeidx*, `xi*` : exportinst*, `deftype*#94` : deftype*, `tagaddr*#5` : tagaddr*, `globaladdr*#4` : globaladdr*, `memaddr*#5` : memaddr*, `tableaddr*#5` : tableaddr*, `funcaddr*#6` : funcaddr*, `dataaddr*#3` : dataaddr*, `elemaddr*#3` : elemaddr*, `exportinst*#1` : exportinst*, `deftype*#95` : deftype*, `tagaddr*#6` : tagaddr*, `globaladdr*#5` : globaladdr*, `memaddr*#6` : memaddr*, `tableaddr*#6` : tableaddr*, `funcaddr*#7` : funcaddr*, `dataaddr*#4` : dataaddr*, `elemaddr*#4` : elemaddr*, `exportinst*#2` : 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*#101`, `import*#101`, `tag*#101`, `global*#125`, `mem*#125`, `table*#125`, `func*#101`, `data*#101`, `elem*#125`, `start?#101`, `export*#101`}(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#260}(tagtype)*{tagtype <- `tagtype*`, tagtype#260 <- `tagtype#260*`}) - -- if (global*{global <- `global*`} = `GLOBAL`_global{globaltype#2179, expr#4459}(globaltype, expr_G)*{expr#4459 <- `expr#4459*`, expr_G <- `expr_G*`, globaltype <- `globaltype*`, globaltype#2179 <- `globaltype#2179*`}) - -- if (mem*{mem <- `mem*`} = `MEMORY`_mem{memtype#634}(memtype)*{memtype <- `memtype*`, memtype#634 <- `memtype#634*`}) - -- if (table*{table <- `table*`} = `TABLE`_table{tabletype#998, expr#4477}(tabletype, expr_T)*{expr#4477 <- `expr#4477*`, expr_T <- `expr_T*`, tabletype <- `tabletype*`, tabletype#998 <- `tabletype#998*`}) - -- if (func*{func <- `func*`} = `FUNC`_func{typeidx#1808, `local*#1351`, expr#4495}(x, local*{local <- `local*`}, expr_F)*{expr#4495 <- `expr#4495*`, expr_F <- `expr_F*`, `local*` <- `local**`, `local*#1351` <- `local*#1351*`, typeidx#1808 <- `typeidx#1808*`, x <- `x*`}) - -- if (data*{data <- `data*`} = `DATA`_data{`byte*#2021`, datamode#1985}(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, `byte*#2021` <- `byte*#2021*`, datamode <- `datamode*`, datamode#1985 <- `datamode#1985*`}) - -- if (elem*{elem <- `elem*`} = `ELEM`_elem{reftype#3705, `expr*#3087`, elemmode#3087}(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemmode#3087 <- `elemmode#3087*`, elemtype <- `elemtype*`, `expr*#3087` <- `expr*#3087*`, `expr_E*` <- `expr_E**`, reftype#3705 <- `reftype#3705*`}) + 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*, `expr_G*` : expr*, `globaltype*` : globaltype*, `memtype*` : memtype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `expr_F*` : expr*, `local**` : local**, `x*` : idx*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `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*`})) - -- if (fa*{fa <- `fa*`} = (|s.`FUNCS`_store{`funcinst*#14`}| + i_F)^(i_F<|func*{func <- `func*`}|){`funcinst*#14` <- `funcinst*#14*`}) + -- if (fa*{fa <- `fa*`} = (|s.`FUNCS`_store| + i_F)^(i_F<|func*{func <- `func*`}|){}) -- 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*`}[x!`%`_idx{i#47295}.0]*{i#47295 <- `i#47295*`, x <- `x*`}, `FUNC`_funccode{typeidx#1810, `local*#1353`, expr#4497}(x, local*{local <- `local*`}, expr_F)*{expr#4497 <- `expr#4497*`, expr_F <- `expr_F*`, `local*` <- `local**`, `local*#1353` <- `local*#1353*`, typeidx#1810 <- `typeidx#1810*`, x <- `x*`}, moduleinst^|func*{func <- `func*`}|{})) - -- if (xi*{xi <- `xi*`} = $allocexports({`TYPES`{`deftype*#94`} [], `TAGS`{`tagaddr*#5`} aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, `GLOBALS`{`globaladdr*#4`} ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, `MEMS`{`memaddr*#5`} ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, `TABLES`{`tableaddr*#5`} ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, `FUNCS`{`funcaddr*#6`} fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, `DATAS`{`dataaddr*#3`} [], `ELEMS`{`elemaddr*#3`} [], `EXPORTS`{`exportinst*#1`} []}, export*{export <- `export*`})) - -- if (moduleinst = {`TYPES`{`deftype*#95`} dt*{dt <- `dt*`}, `TAGS`{`tagaddr*#6`} aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, `GLOBALS`{`globaladdr*#5`} ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, `MEMS`{`memaddr*#6`} ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, `TABLES`{`tableaddr*#6`} ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, `FUNCS`{`funcaddr*#7`} fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, `DATAS`{`dataaddr*#4`} da*{da <- `da*`}, `ELEMS`{`elemaddr*#4`} ea*{ea <- `ea*`}, `EXPORTS`{`exportinst*#2`} xi*{xi <- `xi*`}}) + -- 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, `byte*#2033` : byte*, datamode#1997 : datamode, n : n, `b*` : byte*}(x, `DATA`_data{`byte*#2033`, datamode#1997}(b^n{b <- `b*`}, `PASSIVE`_datamode)) = [] + def $rundata_{x : idx, n : n, `b*` : byte*}(x, `DATA`_data(b^n{b <- `b*`}, `PASSIVE`_datamode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $rundata_{x : idx, `byte*#2045` : byte*, datamode#2009 : datamode, n : n, `b*` : byte*, memidx#165 : memidx, expr#4499 : expr, y : idx, `instr*` : instr*, numtype#623 : numtype, i#47393 : nat, numtype#625 : numtype, i#47417 : nat, memidx#167 : memidx, dataidx#43 : dataidx, dataidx#45 : dataidx}(x, `DATA`_data{`byte*#2045`, datamode#2009}(b^n{b <- `b*`}, `ACTIVE`_datamode{memidx#165, expr#4499}(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [`CONST`_instr{numtype#623}(`I32`_numtype, `%`_num_{i#47393}(0)) `CONST`_instr{numtype#625}(`I32`_numtype, `%`_num_{i#47417}(n)) `MEMORY.INIT`_instr{memidx#167, dataidx#43}(y, x) `DATA.DROP`_instr{dataidx#45}(x)] + def $rundata_{x : idx, n : n, `b*` : byte*, 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, reftype#3735 : reftype, `expr*#3099` : expr*, elemmode#3099 : elemmode, rt : reftype, n : n, `e*` : expr*}(x, `ELEM`_elem{reftype#3735, `expr*#3099`, elemmode#3099}(rt, e^n{e <- `e*`}, `PASSIVE`_elemmode)) = [] + def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*}(x, `ELEM`_elem(rt, e^n{e <- `e*`}, `PASSIVE`_elemmode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : idx, reftype#3747 : reftype, `expr*#3111` : expr*, elemmode#3111 : elemmode, rt : reftype, n : n, `e*` : expr*, elemidx#43 : elemidx}(x, `ELEM`_elem{reftype#3747, `expr*#3111`, elemmode#3111}(rt, e^n{e <- `e*`}, `DECLARE`_elemmode)) = [`ELEM.DROP`_instr{elemidx#43}(x)] + def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*}(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, reftype#3759 : reftype, `expr*#3123` : expr*, elemmode#3123 : elemmode, rt : reftype, n : n, `e*` : expr*, tableidx#119 : tableidx, expr#4501 : expr, y : idx, `instr*` : instr*, numtype#627 : numtype, i#47545 : nat, numtype#629 : numtype, i#47569 : nat, tableidx#121 : tableidx, elemidx#45 : elemidx, elemidx#47 : elemidx}(x, `ELEM`_elem{reftype#3759, `expr*#3123`, elemmode#3123}(rt, e^n{e <- `e*`}, `ACTIVE`_elemmode{tableidx#119, expr#4501}(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [`CONST`_instr{numtype#627}(`I32`_numtype, `%`_num_{i#47545}(0)) `CONST`_instr{numtype#629}(`I32`_numtype, `%`_num_{i#47569}(n)) `TABLE.INIT`_instr{tableidx#121, elemidx#45}(y, x) `ELEM.DROP`_instr{elemidx#47}(x)] + def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*, 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 { @@ -118834,46 +94085,46 @@ 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*, store#2543 : store, frame#2561 : frame, s : store, f : frame, s' : store, a : addr, store#2555 : store, frame#2573 : frame, moduleinst#26 : moduleinst, `globaladdr*#6` : globaladdr*}(z, [gt] ++ gt'*{gt' <- `gt'*`}, [expr] ++ expr'*{expr' <- `expr'*`}) = (z', [val] ++ val'*{val' <- `val'*`}) + 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]) - -- if (z = `%;%`_state{store#2543, frame#2561}(s, f)) + -- if (z = `%;%`_state(s, f)) -- if ((s', a) = $allocglobal(s, gt, val)) - -- if ((z', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state{store#2555, frame#2573}(s', f[`MODULE`_frame{moduleinst#26}.`GLOBALS`_moduleinst{`globaladdr*#6`} =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`})) + -- 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*, state#2219 : state, `instr*#2334` : instr*, store#2627 : store, frame#2645 : frame, s' : store, `val?*#6` : val?*, moduleinst#28 : moduleinst, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `externtype*#168` : externtype*, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*#125` : type*, `import*#125` : import*, `tag*#125` : tag*, `global*#149` : global*, `mem*#149` : mem*, `table*#149` : table*, `func*#125` : func*, `data*#125` : data*, `elem*#149` : elem*, `start?#125` : start?, `export*#125` : export*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `expr#4805*` : expr*, `expr_G*` : expr*, `globaltype*` : globaltype*, `globaltype#2271*` : globaltype*, `expr#4823*` : expr*, `expr_T*` : expr*, `tabletype*` : tabletype*, `tabletype#1116*` : tabletype*, `byte**` : byte**, `byte*#2187*` : byte**, `datamode*` : datamode*, `datamode#2151*` : datamode*, `elemmode*` : elemmode*, `elemmode#3277*` : elemmode*, `expr*#3277*` : expr**, `expr_E**` : expr**, `reftype*` : reftype*, `reftype#3919*` : reftype*, `funcidx#3157?` : funcidx?, `x?` : idx?, moduleinst_0 : moduleinst, `deftype*#96` : deftype*, `tagaddr*#7` : tagaddr*, `globaladdr*#7` : globaladdr*, `memaddr*#7` : memaddr*, `tableaddr*#7` : tableaddr*, `funcaddr*#8` : funcaddr*, i_F : nat, `funcinst*#15*` : funcinst**, `dataaddr*#5` : dataaddr*, `elemaddr*#5` : elemaddr*, `exportinst*#3` : exportinst*, z : state, store#2579 : store, frame#2597 : frame, `val?*#5` : val?*, moduleinst#27 : moduleinst, z' : state, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, i_D : nat, `i#47725*` : nat*, i_E : nat, `i#47785*` : nat*, `funcidx#3159?` : funcidx?}(s, module, externaddr*{externaddr <- `externaddr*`}) = `%;%`_config{state#2219, `instr*#2334`}(`%;%`_state{store#2627, frame#2645}(s', {`LOCALS`{`val?*#6`} [], `MODULE`{moduleinst#28} moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) - -- Module_ok: `|-%:%`(module, `%->%`_moduletype{`externtype*#168`}(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + 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*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `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*#125`, `import*#125`, `tag*#125`, `global*#149`, `mem*#149`, `table*#149`, `func*#125`, `data*#125`, `elem*#149`, `start?#125`, `export*#125`}(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#2271, expr#4805}(globaltype, expr_G)*{expr#4805 <- `expr#4805*`, expr_G <- `expr_G*`, globaltype <- `globaltype*`, globaltype#2271 <- `globaltype#2271*`}) - -- if (table*{table <- `table*`} = `TABLE`_table{tabletype#1116, expr#4823}(tabletype, expr_T)*{expr#4823 <- `expr#4823*`, expr_T <- `expr_T*`, tabletype <- `tabletype*`, tabletype#1116 <- `tabletype#1116*`}) - -- if (data*{data <- `data*`} = `DATA`_data{`byte*#2187`, datamode#2151}(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, `byte*#2187` <- `byte*#2187*`, datamode <- `datamode*`, datamode#2151 <- `datamode#2151*`}) - -- if (elem*{elem <- `elem*`} = `ELEM`_elem{reftype#3919, `expr*#3277`, elemmode#3277}(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemmode#3277 <- `elemmode#3277*`, `expr*#3277` <- `expr*#3277*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`, reftype#3919 <- `reftype#3919*`}) - -- if (start?{start <- `start?`} = `START`_start{funcidx#3157}(x)?{funcidx#3157 <- `funcidx#3157?`, x <- `x?`}) - -- if (moduleinst_0 = {`TYPES`{`deftype*#96`} $alloctypes(type*{type <- `type*`}), `TAGS`{`tagaddr*#7`} [], `GLOBALS`{`globaladdr*#7`} $globalsxa(externaddr*{externaddr <- `externaddr*`}), `MEMS`{`memaddr*#7`} [], `TABLES`{`tableaddr*#7`} [], `FUNCS`{`funcaddr*#8`} $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.`FUNCS`_store{`funcinst*#15`}| + i_F)^(i_F<|func*{func <- `func*`}|){`funcinst*#15` <- `funcinst*#15*`}, `DATAS`{`dataaddr*#5`} [], `ELEMS`{`elemaddr*#5`} [], `EXPORTS`{`exportinst*#3`} []}) - -- if (z = `%;%`_state{store#2579, frame#2597}(s, {`LOCALS`{`val?*#5`} [], `MODULE`{moduleinst#27} moduleinst_0})) + -- 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*`}|){}, `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#47725}(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){i#47725 <- `i#47725*`})) - -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx{i#47785}(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){i#47785 <- `i#47785*`})) - -- if (instr_S?{instr_S <- `instr_S?`} = `CALL`_instr{funcidx#3159}(x)?{funcidx#3159 <- `funcidx#3159?`, x <- `x?`}) + -- if (instr_D*{instr_D <- `instr_D*`} = $concat_(syntax instr, $rundata_(`%`_dataidx(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){})) + -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){})) + -- 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 : funcaddr, `val*` : val*, state#2231 : state, `instr*#2346` : instr*, store#2639 : store, frame#2657 : frame, `val?*#7` : val?*, moduleinst#29 : moduleinst, `deftype*#97` : deftype*, `tagaddr*#8` : tagaddr*, `globaladdr*#8` : globaladdr*, `memaddr*#8` : memaddr*, `tableaddr*#8` : tableaddr*, `funcaddr*#9` : funcaddr*, `dataaddr*#6` : dataaddr*, `elemaddr*#6` : elemaddr*, `exportinst*#4` : exportinst*, funcaddr#21 : funcaddr, typeuse#65 : typeuse, `funcinst*#17` : funcinst*, deftype#13 : deftype, `funcinst*#16` : funcinst*, deftype#12 : deftype, resulttype#3026 : resulttype, `X*#13028` : valtype*, `t_1*` : valtype*, `X*#13041` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config{state#2231, `instr*#2346`}(`%;%`_state{store#2639, frame#2657}(s, {`LOCALS`{`val?*#7`} [], `MODULE`{moduleinst#29} {`TYPES`{`deftype*#97`} [], `TAGS`{`tagaddr*#8`} [], `GLOBALS`{`globaladdr*#8`} [], `MEMS`{`memaddr*#8`} [], `TABLES`{`tableaddr*#8`} [], `FUNCS`{`funcaddr*#9`} [], `DATAS`{`dataaddr*#6`} [], `ELEMS`{`elemaddr*#6`} [], `EXPORTS`{`exportinst*#4`} []}}), (val : val <: instr)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr{funcaddr#21}(funcaddr) `CALL_REF`_instr{typeuse#65}((s.`FUNCS`_store{`funcinst*#17`}[funcaddr].`TYPE`_funcinst{deftype#13} : deftype <: typeuse))]) - -- Expand: `%~~%`(s.`FUNCS`_store{`funcinst*#16`}[funcaddr].`TYPE`_funcinst{deftype#12}, `FUNC%->%`_comptype{resulttype#3026}(`%`_resulttype{`X*#13028`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13041`}(t_2*{t_2 <- `t_2*`}))) + 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*`} ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Bbyte : byte ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{i#47807 : nat, `` : nat} ``:(0x00 | ... | 0xFF) => `%`_byte{i#47807}(``) + prod{`` : nat} ``:(0x00 | ... | 0xFF) => `%`_byte(``) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec rec { @@ -118881,29 +94132,29 @@ 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{i#47823 : nat, n : n, i#47815 : nat} `%`_byte{i#47815}(n):Bbyte => `%`_uN{i#47823}(n) + 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{i#47866 : nat, m : m, n : n, i#47831 : nat, i#47856 : nat} {{`%`_byte{i#47831}(n):Bbyte} {`%`_uN{i#47856}(m):BuN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_uN{i#47866}((((2 ^ 7) * m) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat))) + prod{m : m, n : n} {{`%`_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 grammar BsN(N : N) : sN(N) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{i#47882 : int, n : n, i#47874 : nat} `%`_byte{i#47874}(n):Bbyte => `%`_sN{i#47882}((n : nat <:> int)) + 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 - prod{i#47898 : int, n : n, i#47890 : nat} `%`_byte{i#47890}(n):Bbyte => `%`_sN{i#47898}(((n : nat <:> int) - ((2 ^ 7) : nat <:> int))) + 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 - prod{i#47945 : int, i : uN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat)), i#47943 : nat, n : n, i#47906 : nat} {{`%`_byte{i#47906}(n):Bbyte} {i:BuN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_sN{i#47945}(((((2 ^ 7) * i!`%`_uN{i#47943}.0) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int)) + prod{i : uN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat)), n : n} {{`%`_byte(n):Bbyte} {i:BuN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_sN(((((2 ^ 7) * i!`%`_uN.0) + (((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#47961 : nat, i : sN(N), i#47959 : int} i:BsN(N) => `%`_iN{i#47961}($inv_signed_(N, i!`%`_sN{i#47959}.0)) + 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) @@ -118913,12 +94164,12 @@ grammar BfN(N : N) : fN(N) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Bu32 : u32 ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{i#48033 : nat, n : n, i#48009 : nat} `%`_uN{i#48009}(n):BuN(32) => `%`_u32{i#48033}(n) + prod{n : n} `%`_uN(n):BuN(32) => `%`_u32(n) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Bu64 : u64 ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{i#48081 : nat, n : n, i#48057 : nat} `%`_uN{i#48057}(n):BuN(64) => `%`_u64{i#48081}(n) + prod{n : n} `%`_uN(n):BuN(64) => `%`_u64(n) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Bs33 : s33 @@ -118938,13 +94189,13 @@ grammar Bf64 : f64 ;; ../../../../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*, i#48134 : nat} {{`%`_u32{i#48134}(n):Bu32} {el:BX^n{el <- `el*`}}} => el^n{el <- `el*`} + 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{name : name, `b*` : byte*, `char*#153` : char*} b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte) => name - -- if ($utf8(name!`%`_name{`char*#153`}.0) = b*{b <- `b*`}) + prod{name : name, `b*` : byte*} 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 @@ -118999,15 +94250,15 @@ grammar Blabelidx : labelidx ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Bexternidx : externidx ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{funcidx#3161 : funcidx, x : idx} {{0x00} {x:Bfuncidx}} => `FUNC`_externidx{funcidx#3161}(x) + prod{x : idx} {{0x00} {x:Bfuncidx}} => `FUNC`_externidx(x) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{tableidx#123 : tableidx, x : idx} {{0x01} {x:Btableidx}} => `TABLE`_externidx{tableidx#123}(x) + prod{x : idx} {{0x01} {x:Btableidx}} => `TABLE`_externidx(x) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{memidx#169 : memidx, x : idx} {{0x02} {x:Bmemidx}} => `MEM`_externidx{memidx#169}(x) + prod{x : idx} {{0x02} {x:Bmemidx}} => `MEM`_externidx(x) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{globalidx#23 : globalidx, x : idx} {{0x03} {x:Bglobalidx}} => `GLOBAL`_externidx{globalidx#23}(x) + prod{x : idx} {{0x03} {x:Bglobalidx}} => `GLOBAL`_externidx(x) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{tagidx#19 : tagidx, x : idx} {{0x04} {x:Btagidx}} => `TAG`_externidx{tagidx#19}(x) + prod{x : idx} {{0x04} {x:Btagidx}} => `TAG`_externidx(x) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bnumtype : numtype @@ -119057,17 +94308,17 @@ 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{typeidx#1924 : typeidx, x33 : s33, i#49064 : int} x33:Bs33 => `_IDX`_heaptype{typeidx#1924}($s33_to_u32(x33)) - -- if (x33!`%`_s33{i#49064}.0 >= (0 : nat <:> int)) + 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{`null?#1525` : null?, heaptype#1587 : heaptype, ht : heaptype} {{0x63} {ht:Bheaptype}} => `REF`_reftype{`null?#1525`, heaptype#1587}(?(`NULL`_null), ht) + prod{ht : heaptype} {{0x63} {ht:Bheaptype}} => `REF`_reftype(?(`NULL`_null), ht) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`null?#1537` : null?, heaptype#1599 : heaptype, ht : heaptype} {{0x64} {ht:Bheaptype}} => `REF`_reftype{`null?#1537`, heaptype#1599}(?(), ht) + prod{ht : heaptype} {{0x64} {ht:Bheaptype}} => `REF`_reftype(?(), ht) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`null?#1549` : null?, heaptype#1611 : heaptype, ht : heaptype} ht:Babsheaptype => `REF`_reftype{`null?#1549`, heaptype#1611}(?(`NULL`_null), ht) + prod{ht : heaptype} ht:Babsheaptype => `REF`_reftype(?(`NULL`_null), ht) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bvaltype : valtype @@ -119081,7 +94332,7 @@ grammar Bvaltype : valtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bresulttype : resulttype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`X*#13056` : valtype*, `t*` : valtype*} t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype) => `%`_resulttype{`X*#13056`}(t*{t <- `t*`}) + 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? @@ -119107,76 +94358,76 @@ grammar Bstoragetype : storagetype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bfieldtype : fieldtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`mut?#1417` : mut?, storagetype#755 : storagetype, `mut?` : mut?, zt : storagetype} {{zt:Bstoragetype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_fieldtype{`mut?#1417`, storagetype#755}(mut?{mut <- `mut?`}, zt) + prod{`mut?` : mut?, zt : storagetype} {{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{fieldtype#59 : fieldtype, ft : fieldtype} {{0x5E} {ft:Bfieldtype}} => `ARRAY`_comptype{fieldtype#59}(ft) + prod{ft : fieldtype} {{0x5E} {ft:Bfieldtype}} => `ARRAY`_comptype(ft) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`X*#13071` : fieldtype*, `ft*` : fieldtype*} {{0x5F} {ft*{ft <- `ft*`}:Blist(syntax fieldtype, grammar Bfieldtype)}} => `STRUCT`_comptype(`%`_list{`X*#13071`}(ft*{ft <- `ft*`})) + 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{resulttype#3029 : resulttype, `X*#13122` : valtype*, `t_1*` : valtype*, `X*#13135` : valtype*, `t_2*` : valtype*, `X*#13087` : valtype*, `X*#13105` : valtype*} {{0x60} {`%`_resulttype{`X*#13087`}(t_1*{t_1 <- `t_1*`}):Bresulttype} {`%`_resulttype{`X*#13105`}(t_2*{t_2 <- `t_2*`}):Bresulttype}} => `FUNC%->%`_comptype{resulttype#3029}(`%`_resulttype{`X*#13122`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13135`}(t_2*{t_2 <- `t_2*`})) + 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{`final?#449` : final?, `typeuse*#449` : typeuse*, comptype#449 : comptype, `typeidx#1926*` : typeidx*, `x*` : idx*, ct : comptype} {{0x4F} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => `SUB`_subtype{`final?#449`, `typeuse*#449`, comptype#449}(?(`FINAL`_final), `_IDX`_typeuse{typeidx#1926}(x)*{typeidx#1926 <- `typeidx#1926*`, x <- `x*`}, ct) + 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{`final?#461` : final?, `typeuse*#461` : typeuse*, comptype#461 : comptype, `typeidx#1928*` : typeidx*, `x*` : idx*, ct : comptype} {{0x50} {x*{x <- `x*`}:Blist(syntax typeidx, grammar Btypeidx)} {ct:Bcomptype}} => `SUB`_subtype{`final?#461`, `typeuse*#461`, comptype#461}(?(), `_IDX`_typeuse{typeidx#1928}(x)*{typeidx#1928 <- `typeidx#1928*`, x <- `x*`}, ct) + 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{`final?#473` : final?, `typeuse*#473` : typeuse*, comptype#473 : comptype, ct : comptype} ct:Bcomptype => `SUB`_subtype{`final?#473`, `typeuse*#473`, comptype#473}(?(`FINAL`_final), [], ct) + 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{`X*#13150` : subtype*, `st*` : subtype*} {{0x4E} {st*{st <- `st*`}:Blist(syntax subtype, grammar Bsubtype)}} => `REC`_rectype(`%`_list{`X*#13150`}(st*{st <- `st*`})) + 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{`X*#13165` : subtype*, st : subtype} st:Bsubtype => `REC`_rectype(`%`_list{`X*#13165`}([st])) + 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{u64#491 : u64, `u64?#467` : u64?, i#49191 : nat, n : n, i#49167 : nat} {{0x00} {`%`_u64{i#49167}(n):Bu64}} => (`I32`_addrtype, `[%..%]`_limits{u64#491, `u64?#467`}(`%`_u64{i#49191}(n), ?())) + prod{n : n} {{0x00} {`%`_u64(n):Bu64}} => (`I32`_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{u64#503 : u64, `u64?#479` : u64?, i#49267 : nat, n : n, i#49289 : nat, m : m, i#49216 : nat, i#49243 : nat} {{0x01} {`%`_u64{i#49216}(n):Bu64} {`%`_u64{i#49243}(m):Bu64}} => (`I32`_addrtype, `[%..%]`_limits{u64#503, `u64?#479`}(`%`_u64{i#49267}(n), ?(`%`_u64{i#49289}(m)))) + 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{u64#515 : u64, `u64?#491` : u64?, i#49338 : nat, n : n, i#49314 : nat} {{0x04} {`%`_u64{i#49314}(n):Bu64}} => (`I64`_addrtype, `[%..%]`_limits{u64#515, `u64?#491`}(`%`_u64{i#49338}(n), ?())) + prod{n : n} {{0x04} {`%`_u64(n):Bu64}} => (`I64`_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{u64#527 : u64, `u64?#503` : u64?, i#49414 : nat, n : n, i#49436 : nat, m : m, i#49363 : nat, i#49390 : nat} {{0x05} {`%`_u64{i#49363}(n):Bu64} {`%`_u64{i#49390}(m):Bu64}} => (`I64`_addrtype, `[%..%]`_limits{u64#527, `u64?#503`}(`%`_u64{i#49414}(n), ?(`%`_u64{i#49436}(m)))) + 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{typeidx#1930 : typeidx, x : idx} {{0x00} {x:Btypeidx}} => `_IDX`_tagtype{typeidx#1930}(x) + 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{`mut?#1469` : mut?, valtype#991 : valtype, `mut?` : mut?, t : valtype} {{t:Bvaltype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_globaltype{`mut?#1469`, valtype#991}(mut?{mut <- `mut?`}, t) + prod{`mut?` : mut?, t : valtype} {{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{addrtype#1373 : addrtype, limits#1373 : limits, at : addrtype, lim : limits} (at, lim):Blimits => `%%PAGE`_memtype{addrtype#1373, limits#1373}(at, lim) + 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{addrtype#1385 : addrtype, limits#1385 : limits, reftype#3949 : reftype, at : addrtype, lim : limits, rt : reftype} {{rt:Breftype} {(at, lim):Blimits}} => `%%%`_tabletype{addrtype#1385, limits#1385, reftype#3949}(at, lim, rt) + prod{at : addrtype, lim : limits, rt : reftype} {{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{typeuse#67 : typeuse, typeidx#1932 : typeidx, x : idx} {{0x00} {x:Btypeidx}} => `FUNC`_externtype{typeuse#67}(`_IDX`_typeuse{typeidx#1932}(x)) + prod{x : idx} {{0x00} {x:Btypeidx}} => `FUNC`_externtype(`_IDX`_typeuse(x)) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{tabletype#1118 : tabletype, tt : tabletype} {{0x01} {tt:Btabletype}} => `TABLE`_externtype{tabletype#1118}(tt) + prod{tt : tabletype} {{0x01} {tt:Btabletype}} => `TABLE`_externtype(tt) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{memtype#722 : memtype, mt : memtype} {{0x02} {mt:Bmemtype}} => `MEM`_externtype{memtype#722}(mt) + prod{mt : memtype} {{0x02} {mt:Bmemtype}} => `MEM`_externtype(mt) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{globaltype#2273 : globaltype, gt : globaltype} {{0x03} {gt:Bglobaltype}} => `GLOBAL`_externtype{globaltype#2273}(gt) + prod{gt : globaltype} {{0x03} {gt:Bglobaltype}} => `GLOBAL`_externtype(gt) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{tagtype#324 : tagtype, jt : tagtype} {{0x04} {jt:Btagtype}} => `TAG`_externtype{tagtype#324}(jt) + prod{jt : tagtype} {{0x04} {jt:Btagtype}} => `TAG`_externtype(jt) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec syntax castop = (null?, null?) @@ -119195,23 +94446,23 @@ grammar Bcastop : castop ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec grammar Bblocktype : blocktype ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{`valtype?#7` : valtype?} 0x40 => `_RESULT`_blocktype{`valtype?#7`}(?()) + prod 0x40 => `_RESULT`_blocktype(?()) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{`valtype?#9` : valtype?, t : valtype} t:Bvaltype => `_RESULT`_blocktype{`valtype?#9`}(?(t)) + prod{t : valtype} t:Bvaltype => `_RESULT`_blocktype(?(t)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{typeidx#1934 : typeidx, i#49560 : nat, i : s33, i#49559 : int, i#49575 : int} i:Bs33 => `_IDX`_blocktype{typeidx#1934}(`%`_typeidx{i#49560}((i!`%`_s33{i#49559}.0 : int <:> nat))) - -- if (i!`%`_s33{i#49575}.0 >= (0 : nat <:> int)) + 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{tagidx#23 : tagidx, labelidx#115 : labelidx, x : idx, l : labelidx} {{0x00} {x:Btagidx} {l:Blabelidx}} => `CATCH`_catch{tagidx#23, labelidx#115}(x, l) + prod{x : idx, l : labelidx} {{0x00} {x:Btagidx} {l:Blabelidx}} => `CATCH`_catch(x, l) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{tagidx#25 : tagidx, labelidx#117 : labelidx, x : idx, l : labelidx} {{0x01} {x:Btagidx} {l:Blabelidx}} => `CATCH_REF`_catch{tagidx#25, labelidx#117}(x, l) + 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{labelidx#119 : labelidx, l : labelidx} {{0x02} {l:Blabelidx}} => `CATCH_ALL`_catch{labelidx#119}(l) + prod{l : labelidx} {{0x02} {l:Blabelidx}} => `CATCH_ALL`_catch(l) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{labelidx#121 : labelidx, l : labelidx} {{0x03} {l:Blabelidx}} => `CATCH_ALL_REF`_catch{labelidx#121}(l) + prod{l : labelidx} {{0x03} {l:Blabelidx}} => `CATCH_ALL_REF`_catch(l) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec syntax memidxop = (memidx, memarg) @@ -119219,16 +94470,16 @@ 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{i#51035 : nat, u32#35 : u32, i#51057 : nat, n : n, u64#553 : u64, i#51079 : nat, m : m, i#50986 : nat, i#51013 : nat} {{`%`_u32{i#50986}(n):Bu32} {`%`_u64{i#51013}(m):Bu64}} => (`%`_memidx{i#51035}(0), {`ALIGN`{u32#35} `%`_u32{i#51057}(n), `OFFSET`{u64#553} `%`_u64{i#51079}(m)}) + 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{x : idx, u32#36 : u32, i#51182 : nat, n : n, u64#554 : u64, i#51204 : nat, m : m, i#51104 : nat, i#51148 : nat} {{`%`_u32{i#51104}(n):Bu32} {x:Bmemidx} {`%`_u64{i#51148}(m):Bu64}} => (x, {`ALIGN`{u32#36} `%`_u32{i#51182}((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat)), `OFFSET`{u64#554} `%`_u64{i#51204}(m)}) + prod{x : idx, n : n, 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{i#54944 : nat, l : labelidx, i#54943 : nat, i#54896 : nat, i#54895 : nat} `%`_byte{i#54896}(l!`%`_labelidx{i#54895}.0):Bbyte => `%`_laneidx{i#54944}(l!`%`_labelidx{i#54943}.0) + prod{l : labelidx} `%`_byte(l!`%`_labelidx.0):Bbyte => `%`_laneidx(l!`%`_labelidx.0) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec rec { @@ -119242,995 +94493,995 @@ grammar Binstr : 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{`valtype*?#11` : valtype*?} 0x1B => `SELECT`_instr{`valtype*?#11`}(?()) + prod 0x1B => `SELECT`_instr(?()) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:12.5-12.41 - prod{`valtype*?#13` : valtype*?, `t*` : valtype*} {{0x1C} {t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype)}} => `SELECT`_instr{`valtype*?#13`}(?(t*{t <- `t*`})) + 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{blocktype#31 : blocktype, `instr*#2348` : instr*, bt : blocktype, `in*` : instr*} {{0x02} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => `BLOCK`_instr{blocktype#31, `instr*#2348`}(bt, in*{in <- `in*`}) + 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{blocktype#33 : blocktype, `instr*#2350` : instr*, bt : blocktype, `in*` : instr*} {{0x03} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => `LOOP`_instr{blocktype#33, `instr*#2350`}(bt, in*{in <- `in*`}) + 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{blocktype#35 : blocktype, `instr*#2352` : instr*, bt : blocktype, `in*` : instr*} {{0x04} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => `IF%%ELSE%`_instr{blocktype#35, `instr*#2352`}(bt, in*{in <- `in*`}, []) + 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{blocktype#37 : blocktype, `instr*#2355` : instr*, 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{blocktype#37, `instr*#2355`}(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) + 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{tagidx#21 : tagidx, x : idx} {{0x08} {x:Btagidx}} => `THROW`_instr{tagidx#21}(x) + 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{labelidx#101 : labelidx, l : labelidx} {{0x0C} {l:Blabelidx}} => `BR`_instr{labelidx#101}(l) + prod{l : labelidx} {{0x0C} {l:Blabelidx}} => `BR`_instr(l) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:43.5-43.32 - prod{labelidx#103 : labelidx, l : labelidx} {{0x0D} {l:Blabelidx}} => `BR_IF`_instr{labelidx#103}(l) + prod{l : labelidx} {{0x0D} {l:Blabelidx}} => `BR_IF`_instr(l) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:44.5-44.62 - prod{`labelidx*#54` : labelidx*, labelidx#105 : labelidx, `l*` : labelidx*, l_n : labelidx} {{0x0E} {l*{l <- `l*`}:Blist(syntax labelidx, grammar Blabelidx)} {l_n:Blabelidx}} => `BR_TABLE`_instr{`labelidx*#54`, labelidx#105}(l*{l <- `l*`}, l_n) + 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{funcidx#3163 : funcidx, x : idx} {{0x10} {x:Bfuncidx}} => `CALL`_instr{funcidx#3163}(x) + prod{x : idx} {{0x10} {x:Bfuncidx}} => `CALL`_instr(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:47.5-47.60 - prod{tableidx#125 : tableidx, typeuse#69 : typeuse, x : idx, typeidx#1936 : typeidx, y : idx} {{0x11} {y:Btypeidx} {x:Btableidx}} => `CALL_INDIRECT`_instr{tableidx#125, typeuse#69}(x, `_IDX`_typeuse{typeidx#1936}(y)) + prod{x : idx, y : 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{funcidx#3165 : funcidx, x : idx} {{0x12} {x:Bfuncidx}} => `RETURN_CALL`_instr{funcidx#3165}(x) + prod{x : idx} {{0x12} {x:Bfuncidx}} => `RETURN_CALL`_instr(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:49.5-49.67 - prod{tableidx#127 : tableidx, typeuse#71 : typeuse, x : idx, typeidx#1938 : typeidx, y : idx} {{0x13} {y:Btypeidx} {x:Btableidx}} => `RETURN_CALL_INDIRECT`_instr{tableidx#127, typeuse#71}(x, `_IDX`_typeuse{typeidx#1938}(y)) + prod{x : idx, y : 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{typeuse#73 : typeuse, typeidx#1940 : typeidx, x : idx} {{0x14} {x:Btypeidx}} => `CALL_REF`_instr{typeuse#73}(`_IDX`_typeuse{typeidx#1940}(x)) + 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{typeuse#75 : typeuse, typeidx#1942 : typeidx, x : idx} {{0x15} {x:Btypeidx}} => `RETURN_CALL_REF`_instr{typeuse#75}(`_IDX`_typeuse{typeidx#1942}(x)) + 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{blocktype#39 : blocktype, `instr*#2358` : instr*, bt : blocktype, `X*#13196` : catch*, `c*` : catch*, `in*` : instr*} {{0x1F} {bt:Bblocktype} {c*{c <- `c*`}:Blist(syntax catch, grammar Bcatch)} {in:Binstr*{in <- `in*`}} {0x0B}} => `TRY_TABLE`_instr{blocktype#39, `instr*#2358`}(bt, `%`_list{`X*#13196`}(c*{c <- `c*`}), in*{in <- `in*`}) + 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{labelidx#107 : labelidx, l : labelidx} {{0xD5} {l:Blabelidx}} => `BR_ON_NULL`_instr{labelidx#107}(l) + 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{labelidx#109 : labelidx, l : labelidx} {{0xD6} {l:Blabelidx}} => `BR_ON_NON_NULL`_instr{labelidx#109}(l) + 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{labelidx#111 : labelidx, reftype#3963 : reftype, l : labelidx, `null?#1579` : null?, heaptype#1641 : heaptype, `null_1?` : null?, ht_1 : heaptype, `null?#1591` : null?, heaptype#1653 : heaptype, `null_2?` : null?, ht_2 : heaptype, i#50095 : nat} {{0xFB} {`%`_u32{i#50095}(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{labelidx#111, reftype#3963}(l, `REF`_reftype{`null?#1579`, heaptype#1641}(null_1?{null_1 <- `null_1?`}, ht_1), `REF`_reftype{`null?#1591`, heaptype#1653}(null_2?{null_2 <- `null_2?`}, ht_2)) + prod{l : labelidx, `null_1?` : null?, ht_1 : heaptype, `null_2?` : null?, 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{labelidx#113 : labelidx, reftype#3966 : reftype, l : labelidx, `null?#1603` : null?, heaptype#1665 : heaptype, `null_1?` : null?, ht_1 : heaptype, `null?#1615` : null?, heaptype#1677 : heaptype, `null_2?` : null?, ht_2 : heaptype, i#50147 : nat} {{0xFB} {`%`_u32{i#50147}(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{labelidx#113, reftype#3966}(l, `REF`_reftype{`null?#1603`, heaptype#1665}(null_1?{null_1 <- `null_1?`}, ht_1), `REF`_reftype{`null?#1615`, heaptype#1677}(null_2?{null_2 <- `null_2?`}, ht_2)) + prod{l : labelidx, `null_1?` : null?, ht_1 : heaptype, `null_2?` : null?, 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{localidx#21 : localidx, x : idx} {{0x20} {x:Blocalidx}} => `LOCAL.GET`_instr{localidx#21}(x) + prod{x : idx} {{0x20} {x:Blocalidx}} => `LOCAL.GET`_instr(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:72.5-72.36 - prod{localidx#23 : localidx, x : idx} {{0x21} {x:Blocalidx}} => `LOCAL.SET`_instr{localidx#23}(x) + prod{x : idx} {{0x21} {x:Blocalidx}} => `LOCAL.SET`_instr(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:73.5-73.36 - prod{localidx#25 : localidx, x : idx} {{0x22} {x:Blocalidx}} => `LOCAL.TEE`_instr{localidx#25}(x) + prod{x : idx} {{0x22} {x:Blocalidx}} => `LOCAL.TEE`_instr(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:77.5-77.38 - prod{globalidx#25 : globalidx, x : idx} {{0x23} {x:Bglobalidx}} => `GLOBAL.GET`_instr{globalidx#25}(x) + prod{x : idx} {{0x23} {x:Bglobalidx}} => `GLOBAL.GET`_instr(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:78.5-78.38 - prod{globalidx#27 : globalidx, x : idx} {{0x24} {x:Bglobalidx}} => `GLOBAL.SET`_instr{globalidx#27}(x) + prod{x : idx} {{0x24} {x:Bglobalidx}} => `GLOBAL.SET`_instr(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:85.5-85.36 - prod{tableidx#129 : tableidx, x : idx} {{0x25} {x:Btableidx}} => `TABLE.GET`_instr{tableidx#129}(x) + prod{x : idx} {{0x25} {x:Btableidx}} => `TABLE.GET`_instr(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:86.5-86.36 - prod{tableidx#131 : tableidx, x : idx} {{0x26} {x:Btableidx}} => `TABLE.SET`_instr{tableidx#131}(x) + prod{x : idx} {{0x26} {x:Btableidx}} => `TABLE.SET`_instr(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:87.5-87.58 - prod{tableidx#133 : tableidx, elemidx#49 : elemidx, x : idx, y : idx, i#50586 : nat} {{0xFC} {`%`_u32{i#50586}(12):Bu32} {y:Belemidx} {x:Btableidx}} => `TABLE.INIT`_instr{tableidx#133, elemidx#49}(x, y) + prod{x : idx, y : 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{elemidx#51 : elemidx, x : idx, i#50673 : nat} {{0xFC} {`%`_u32{i#50673}(13):Bu32} {x:Belemidx}} => `ELEM.DROP`_instr{elemidx#51}(x) + 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{tableidx#135 : tableidx, x_1 : idx, x_2 : idx, i#50729 : nat} {{0xFC} {`%`_u32{i#50729}(14):Bu32} {x_1:Btableidx} {x_2:Btableidx}} => `TABLE.COPY`_instr{tableidx#135}(x_1, x_2) + 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{tableidx#138 : tableidx, x : idx, i#50816 : nat} {{0xFC} {`%`_u32{i#50816}(15):Bu32} {x:Btableidx}} => `TABLE.GROW`_instr{tableidx#138}(x) + 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{tableidx#140 : tableidx, x : idx, i#50872 : nat} {{0xFC} {`%`_u32{i#50872}(16):Bu32} {x:Btableidx}} => `TABLE.SIZE`_instr{tableidx#140}(x) + 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{tableidx#142 : tableidx, x : idx, i#50928 : nat} {{0xFC} {`%`_u32{i#50928}(17):Bu32} {x:Btableidx}} => `TABLE.FILL`_instr{tableidx#142}(x) + 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{`numtype?#21` : numtype?, memidx#171 : memidx, memarg#91 : memarg, x : idx, ao : memarg} {{0x28} {(x, ao):Bmemarg}} => `LOAD`_instr{`numtype?#21`, memidx#171, memarg#91}(`I32`_numtype, ?(), x, ao) + 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{`numtype?#22` : numtype?, memidx#173 : memidx, memarg#93 : memarg, x : idx, ao : memarg} {{0x29} {(x, ao):Bmemarg}} => `LOAD`_instr{`numtype?#22`, memidx#173, memarg#93}(`I64`_numtype, ?(), x, ao) + 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{`numtype?#23` : numtype?, memidx#175 : memidx, memarg#95 : memarg, x : idx, ao : memarg} {{0x2A} {(x, ao):Bmemarg}} => `LOAD`_instr{`numtype?#23`, memidx#175, memarg#95}(`F32`_numtype, ?(), x, ao) + 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{`numtype?#24` : numtype?, memidx#177 : memidx, memarg#97 : memarg, x : idx, ao : memarg} {{0x2B} {(x, ao):Bmemarg}} => `LOAD`_instr{`numtype?#24`, memidx#177, memarg#97}(`F64`_numtype, ?(), x, ao) + 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{`numtype?#25` : numtype?, memidx#179 : memidx, memarg#99 : memarg, sz#558 : sz, sx#426 : sx, i#51346 : nat, i#51353 : nat, x : idx, ao : memarg} {{0x2C} {(x, ao):Bmemarg}} => `LOAD`_instr{`numtype?#25`, memidx#179, memarg#99}(`I32`_numtype, ?(`%_%`_loadop_{sz#558, sx#426, i#51346}(`%`_sz{i#51353}(8), `S`_sx)), x, ao) + 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{`numtype?#26` : numtype?, memidx#181 : memidx, memarg#101 : memarg, sz#576 : sz, sx#444 : sx, i#51405 : nat, i#51412 : nat, x : idx, ao : memarg} {{0x2D} {(x, ao):Bmemarg}} => `LOAD`_instr{`numtype?#26`, memidx#181, memarg#101}(`I32`_numtype, ?(`%_%`_loadop_{sz#576, sx#444, i#51405}(`%`_sz{i#51412}(8), `U`_sx)), x, ao) + 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{`numtype?#27` : numtype?, memidx#183 : memidx, memarg#103 : memarg, sz#594 : sz, sx#462 : sx, i#51464 : nat, i#51471 : nat, x : idx, ao : memarg} {{0x2E} {(x, ao):Bmemarg}} => `LOAD`_instr{`numtype?#27`, memidx#183, memarg#103}(`I32`_numtype, ?(`%_%`_loadop_{sz#594, sx#462, i#51464}(`%`_sz{i#51471}(16), `S`_sx)), x, ao) + 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{`numtype?#28` : numtype?, memidx#185 : memidx, memarg#105 : memarg, sz#612 : sz, sx#480 : sx, i#51523 : nat, i#51530 : nat, x : idx, ao : memarg} {{0x2F} {(x, ao):Bmemarg}} => `LOAD`_instr{`numtype?#28`, memidx#185, memarg#105}(`I32`_numtype, ?(`%_%`_loadop_{sz#612, sx#480, i#51523}(`%`_sz{i#51530}(16), `U`_sx)), x, ao) + 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{`numtype?#29` : numtype?, memidx#187 : memidx, memarg#107 : memarg, sz#630 : sz, sx#498 : sx, i#51582 : nat, i#51589 : nat, x : idx, ao : memarg} {{0x30} {(x, ao):Bmemarg}} => `LOAD`_instr{`numtype?#29`, memidx#187, memarg#107}(`I64`_numtype, ?(`%_%`_loadop_{sz#630, sx#498, i#51582}(`%`_sz{i#51589}(8), `S`_sx)), x, ao) + 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{`numtype?#30` : numtype?, memidx#189 : memidx, memarg#109 : memarg, sz#648 : sz, sx#516 : sx, i#51641 : nat, i#51648 : nat, x : idx, ao : memarg} {{0x31} {(x, ao):Bmemarg}} => `LOAD`_instr{`numtype?#30`, memidx#189, memarg#109}(`I64`_numtype, ?(`%_%`_loadop_{sz#648, sx#516, i#51641}(`%`_sz{i#51648}(8), `U`_sx)), x, ao) + 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{`numtype?#31` : numtype?, memidx#191 : memidx, memarg#111 : memarg, sz#666 : sz, sx#534 : sx, i#51700 : nat, i#51707 : nat, x : idx, ao : memarg} {{0x32} {(x, ao):Bmemarg}} => `LOAD`_instr{`numtype?#31`, memidx#191, memarg#111}(`I64`_numtype, ?(`%_%`_loadop_{sz#666, sx#534, i#51700}(`%`_sz{i#51707}(16), `S`_sx)), x, ao) + 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{`numtype?#32` : numtype?, memidx#193 : memidx, memarg#113 : memarg, sz#684 : sz, sx#552 : sx, i#51759 : nat, i#51766 : nat, x : idx, ao : memarg} {{0x33} {(x, ao):Bmemarg}} => `LOAD`_instr{`numtype?#32`, memidx#193, memarg#113}(`I64`_numtype, ?(`%_%`_loadop_{sz#684, sx#552, i#51759}(`%`_sz{i#51766}(16), `U`_sx)), x, ao) + 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{`numtype?#33` : numtype?, memidx#195 : memidx, memarg#115 : memarg, sz#702 : sz, sx#570 : sx, i#51818 : nat, i#51825 : nat, x : idx, ao : memarg} {{0x34} {(x, ao):Bmemarg}} => `LOAD`_instr{`numtype?#33`, memidx#195, memarg#115}(`I64`_numtype, ?(`%_%`_loadop_{sz#702, sx#570, i#51818}(`%`_sz{i#51825}(32), `S`_sx)), x, ao) + 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{`numtype?#34` : numtype?, memidx#197 : memidx, memarg#117 : memarg, sz#720 : sz, sx#588 : sx, i#51877 : nat, i#51884 : nat, x : idx, ao : memarg} {{0x35} {(x, ao):Bmemarg}} => `LOAD`_instr{`numtype?#34`, memidx#197, memarg#117}(`I64`_numtype, ?(`%_%`_loadop_{sz#720, sx#588, i#51877}(`%`_sz{i#51884}(32), `U`_sx)), x, ao) + 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{`numtype?#35` : numtype?, memidx#199 : memidx, memarg#119 : memarg, x : idx, ao : memarg} {{0x36} {(x, ao):Bmemarg}} => `STORE`_instr{`numtype?#35`, memidx#199, memarg#119}(`I32`_numtype, ?(), x, ao) + 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{`numtype?#36` : numtype?, memidx#201 : memidx, memarg#121 : memarg, x : idx, ao : memarg} {{0x37} {(x, ao):Bmemarg}} => `STORE`_instr{`numtype?#36`, memidx#201, memarg#121}(`I64`_numtype, ?(), x, ao) + 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{`numtype?#37` : numtype?, memidx#203 : memidx, memarg#123 : memarg, x : idx, ao : memarg} {{0x38} {(x, ao):Bmemarg}} => `STORE`_instr{`numtype?#37`, memidx#203, memarg#123}(`F32`_numtype, ?(), x, ao) + 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{`numtype?#38` : numtype?, memidx#205 : memidx, memarg#125 : memarg, x : idx, ao : memarg} {{0x39} {(x, ao):Bmemarg}} => `STORE`_instr{`numtype?#38`, memidx#205, memarg#125}(`F64`_numtype, ?(), x, ao) + 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{`numtype?#39` : numtype?, memidx#207 : memidx, memarg#127 : memarg, sz#733 : sz, i#52055 : nat, i#52056 : nat, x : idx, ao : memarg} {{0x3A} {(x, ao):Bmemarg}} => `STORE`_instr{`numtype?#39`, memidx#207, memarg#127}(`I32`_numtype, ?(`%`_storeop_{sz#733, i#52055}(`%`_sz{i#52056}(8))), x, ao) + 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{`numtype?#40` : numtype?, memidx#209 : memidx, memarg#129 : memarg, sz#746 : sz, i#52123 : nat, i#52124 : nat, x : idx, ao : memarg} {{0x3B} {(x, ao):Bmemarg}} => `STORE`_instr{`numtype?#40`, memidx#209, memarg#129}(`I32`_numtype, ?(`%`_storeop_{sz#746, i#52123}(`%`_sz{i#52124}(16))), x, ao) + 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{`numtype?#41` : numtype?, memidx#211 : memidx, memarg#131 : memarg, sz#759 : sz, i#52191 : nat, i#52192 : nat, x : idx, ao : memarg} {{0x3C} {(x, ao):Bmemarg}} => `STORE`_instr{`numtype?#41`, memidx#211, memarg#131}(`I64`_numtype, ?(`%`_storeop_{sz#759, i#52191}(`%`_sz{i#52192}(8))), x, ao) + 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{`numtype?#42` : numtype?, memidx#213 : memidx, memarg#133 : memarg, sz#772 : sz, i#52259 : nat, i#52260 : nat, x : idx, ao : memarg} {{0x3D} {(x, ao):Bmemarg}} => `STORE`_instr{`numtype?#42`, memidx#213, memarg#133}(`I64`_numtype, ?(`%`_storeop_{sz#772, i#52259}(`%`_sz{i#52260}(16))), x, ao) + 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{`numtype?#43` : numtype?, memidx#215 : memidx, memarg#135 : memarg, sz#785 : sz, i#52327 : nat, i#52328 : nat, x : idx, ao : memarg} {{0x3E} {(x, ao):Bmemarg}} => `STORE`_instr{`numtype?#43`, memidx#215, memarg#135}(`I64`_numtype, ?(`%`_storeop_{sz#785, i#52327}(`%`_sz{i#52328}(32))), x, ao) + 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{memidx#217 : memidx, x : idx} {{0x3F} {x:Bmemidx}} => `MEMORY.SIZE`_instr{memidx#217}(x) + prod{x : idx} {{0x3F} {x:Bmemidx}} => `MEMORY.SIZE`_instr(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:129.5-129.36 - prod{memidx#219 : memidx, x : idx} {{0x40} {x:Bmemidx}} => `MEMORY.GROW`_instr{memidx#219}(x) + prod{x : idx} {{0x40} {x:Bmemidx}} => `MEMORY.GROW`_instr(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:130.5-130.56 - prod{memidx#221 : memidx, dataidx#47 : dataidx, x : idx, y : idx, i#52427 : nat} {{0xFC} {`%`_u32{i#52427}(8):Bu32} {y:Bdataidx} {x:Bmemidx}} => `MEMORY.INIT`_instr{memidx#221, dataidx#47}(x, y) + prod{x : idx, y : 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{dataidx#49 : dataidx, x : idx, i#52514 : nat} {{0xFC} {`%`_u32{i#52514}(9):Bu32} {x:Bdataidx}} => `DATA.DROP`_instr{dataidx#49}(x) + 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{memidx#223 : memidx, x_1 : idx, x_2 : idx, i#52570 : nat} {{0xFC} {`%`_u32{i#52570}(10):Bu32} {x_1:Bmemidx} {x_2:Bmemidx}} => `MEMORY.COPY`_instr{memidx#223}(x_1, x_2) + 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{memidx#226 : memidx, x : idx, i#52657 : nat} {{0xFC} {`%`_u32{i#52657}(11):Bu32} {x:Bmemidx}} => `MEMORY.FILL`_instr{memidx#226}(x) + 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{heaptype#1679 : heaptype, ht : heaptype} {{0xD0} {ht:Bheaptype}} => `REF.NULL`_instr{heaptype#1679}(ht) + 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{funcidx#3167 : funcidx, x : idx} {{0xD2} {x:Bfuncidx}} => `REF.FUNC`_instr{funcidx#3167}(x) + 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{reftype#3969 : reftype, `null?#1627` : null?, heaptype#1691 : heaptype, ht : heaptype, i#52744 : nat} {{0xFB} {`%`_u32{i#52744}(20):Bu32} {ht:Bheaptype}} => `REF.TEST`_instr{reftype#3969}(`REF`_reftype{`null?#1627`, heaptype#1691}(?(), ht)) + 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{reftype#3971 : reftype, `null?#1639` : null?, heaptype#1703 : heaptype, ht : heaptype, i#52769 : nat} {{0xFB} {`%`_u32{i#52769}(21):Bu32} {ht:Bheaptype}} => `REF.TEST`_instr{reftype#3971}(`REF`_reftype{`null?#1639`, heaptype#1703}(?(`NULL`_null), ht)) + 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{reftype#3973 : reftype, `null?#1651` : null?, heaptype#1715 : heaptype, ht : heaptype, i#52794 : nat} {{0xFB} {`%`_u32{i#52794}(22):Bu32} {ht:Bheaptype}} => `REF.CAST`_instr{reftype#3973}(`REF`_reftype{`null?#1651`, heaptype#1715}(?(), ht)) + 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{reftype#3975 : reftype, `null?#1663` : null?, heaptype#1727 : heaptype, ht : heaptype, i#52819 : nat} {{0xFB} {`%`_u32{i#52819}(23):Bu32} {ht:Bheaptype}} => `REF.CAST`_instr{reftype#3975}(`REF`_reftype{`null?#1663`, heaptype#1727}(?(`NULL`_null), ht)) + 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{typeidx#1944 : typeidx, x : idx, i#52844 : nat} {{0xFB} {`%`_u32{i#52844}(0):Bu32} {x:Btypeidx}} => `STRUCT.NEW`_instr{typeidx#1944}(x) + 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{typeidx#1946 : typeidx, x : idx, i#52900 : nat} {{0xFB} {`%`_u32{i#52900}(1):Bu32} {x:Btypeidx}} => `STRUCT.NEW_DEFAULT`_instr{typeidx#1946}(x) + 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{`sx?#31` : sx?, typeidx#1948 : typeidx, u32#37 : u32, x : idx, i : u32, i#52956 : nat} {{0xFB} {`%`_u32{i#52956}(2):Bu32} {x:Btypeidx} {i:Bu32}} => `STRUCT.GET`_instr{`sx?#31`, typeidx#1948, u32#37}(?(), x, i) + 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{`sx?#33` : sx?, typeidx#1950 : typeidx, u32#39 : u32, x : idx, i : u32, i#53041 : nat} {{0xFB} {`%`_u32{i#53041}(3):Bu32} {x:Btypeidx} {i:Bu32}} => `STRUCT.GET`_instr{`sx?#33`, typeidx#1950, u32#39}(?(`S`_sx), x, i) + 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{`sx?#35` : sx?, typeidx#1952 : typeidx, u32#41 : u32, x : idx, i : u32, i#53148 : nat} {{0xFB} {`%`_u32{i#53148}(4):Bu32} {x:Btypeidx} {i:Bu32}} => `STRUCT.GET`_instr{`sx?#35`, typeidx#1952, u32#41}(?(`U`_sx), x, i) + 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{typeidx#1954 : typeidx, u32#43 : u32, x : idx, i : u32, i#53255 : nat} {{0xFB} {`%`_u32{i#53255}(5):Bu32} {x:Btypeidx} {i:Bu32}} => `STRUCT.SET`_instr{typeidx#1954, u32#43}(x, i) + 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{typeidx#1956 : typeidx, x : idx, i#53340 : nat} {{0xFB} {`%`_u32{i#53340}(6):Bu32} {x:Btypeidx}} => `ARRAY.NEW`_instr{typeidx#1956}(x) + 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{typeidx#1958 : typeidx, x : idx, i#53396 : nat} {{0xFB} {`%`_u32{i#53396}(7):Bu32} {x:Btypeidx}} => `ARRAY.NEW_DEFAULT`_instr{typeidx#1958}(x) + 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{typeidx#1960 : typeidx, u32#45 : u32, x : idx, i#53536 : nat, n : n, i#53452 : nat, i#53496 : nat} {{0xFB} {`%`_u32{i#53452}(8):Bu32} {x:Btypeidx} {`%`_u32{i#53496}(n):Bu32}} => `ARRAY.NEW_FIXED`_instr{typeidx#1960, u32#45}(x, `%`_u32{i#53536}(n)) + 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{typeidx#1962 : typeidx, dataidx#51 : dataidx, x : idx, y : idx, i#53559 : nat} {{0xFB} {`%`_u32{i#53559}(9):Bu32} {x:Btypeidx} {y:Bdataidx}} => `ARRAY.NEW_DATA`_instr{typeidx#1962, dataidx#51}(x, y) + 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{typeidx#1964 : typeidx, elemidx#53 : elemidx, x : idx, y : idx, i#53646 : nat} {{0xFB} {`%`_u32{i#53646}(10):Bu32} {x:Btypeidx} {y:Belemidx}} => `ARRAY.NEW_ELEM`_instr{typeidx#1964, elemidx#53}(x, y) + 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{`sx?#37` : sx?, typeidx#1966 : typeidx, x : idx, i#53733 : nat} {{0xFB} {`%`_u32{i#53733}(11):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr{`sx?#37`, typeidx#1966}(?(), x) + 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{`sx?#39` : sx?, typeidx#1968 : typeidx, x : idx, i#53789 : nat} {{0xFB} {`%`_u32{i#53789}(12):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr{`sx?#39`, typeidx#1968}(?(`S`_sx), x) + 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{`sx?#41` : sx?, typeidx#1970 : typeidx, x : idx, i#53889 : nat} {{0xFB} {`%`_u32{i#53889}(13):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr{`sx?#41`, typeidx#1970}(?(`U`_sx), x) + 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{typeidx#1972 : typeidx, x : idx, i#53989 : nat} {{0xFB} {`%`_u32{i#53989}(14):Bu32} {x:Btypeidx}} => `ARRAY.SET`_instr{typeidx#1972}(x) + 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{i#54045 : nat} {{0xFB} {`%`_u32{i#54045}(15):Bu32}} => `ARRAY.LEN`_instr + prod {{0xFB} {`%`_u32(15):Bu32}} => `ARRAY.LEN`_instr ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:171.5-171.44 - prod{typeidx#1974 : typeidx, x : idx, i#54070 : nat} {{0xFB} {`%`_u32{i#54070}(16):Bu32} {x:Btypeidx}} => `ARRAY.FILL`_instr{typeidx#1974}(x) + 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{typeidx#1976 : typeidx, x_1 : idx, x_2 : idx, i#54126 : nat} {{0xFB} {`%`_u32{i#54126}(17):Bu32} {x_1:Btypeidx} {x_2:Btypeidx}} => `ARRAY.COPY`_instr{typeidx#1976}(x_1, x_2) + 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{typeidx#1979 : typeidx, dataidx#53 : dataidx, x : idx, y : idx, i#54213 : nat} {{0xFB} {`%`_u32{i#54213}(18):Bu32} {x:Btypeidx} {y:Bdataidx}} => `ARRAY.INIT_DATA`_instr{typeidx#1979, dataidx#53}(x, y) + 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{typeidx#1981 : typeidx, elemidx#55 : elemidx, x : idx, y : idx, i#54300 : nat} {{0xFB} {`%`_u32{i#54300}(19):Bu32} {x:Btypeidx} {y:Belemidx}} => `ARRAY.INIT_ELEM`_instr{typeidx#1981, elemidx#55}(x, y) + 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{i#54387 : nat} {{0xFB} {`%`_u32{i#54387}(26):Bu32}} => `ANY.CONVERT_EXTERN`_instr + prod {{0xFB} {`%`_u32(26):Bu32}} => `ANY.CONVERT_EXTERN`_instr ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:179.5-179.39 - prod{i#54412 : nat} {{0xFB} {`%`_u32{i#54412}(27):Bu32}} => `EXTERN.CONVERT_ANY`_instr + prod {{0xFB} {`%`_u32(27):Bu32}} => `EXTERN.CONVERT_ANY`_instr ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:183.5-183.28 - prod{i#54437 : nat} {{0xFB} {`%`_u32{i#54437}(28):Bu32}} => `REF.I31`_instr + prod {{0xFB} {`%`_u32(28):Bu32}} => `REF.I31`_instr ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:184.5-184.30 - prod{sx#590 : sx, i#54462 : nat} {{0xFB} {`%`_u32{i#54462}(29):Bu32}} => `I31.GET`_instr{sx#590}(`S`_sx) + prod {{0xFB} {`%`_u32(29):Bu32}} => `I31.GET`_instr(`S`_sx) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:185.5-185.30 - prod{sx#592 : sx, i#54487 : nat} {{0xFB} {`%`_u32{i#54487}(30):Bu32}} => `I31.GET`_instr{sx#592}(`U`_sx) + prod {{0xFB} {`%`_u32(30):Bu32}} => `I31.GET`_instr(`U`_sx) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:192.5-192.31 - prod{numtype#654 : numtype, i#54540 : nat, n : n, i#54514 : nat} {{0x41} {`%`_u32{i#54514}(n):Bu32}} => `CONST`_instr{numtype#654}(`I32`_numtype, `%`_num_{i#54540}(n)) + prod{n : n} {{0x41} {`%`_u32(n):Bu32}} => `CONST`_instr(`I32`_numtype, `%`_num_(n)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:193.5-193.31 - prod{numtype#656 : numtype, i#54591 : nat, n : n, i#54565 : nat} {{0x42} {`%`_u64{i#54565}(n):Bu64}} => `CONST`_instr{numtype#656}(`I64`_numtype, `%`_num_{i#54591}(n)) + prod{n : n} {{0x42} {`%`_u64(n):Bu64}} => `CONST`_instr(`I64`_numtype, `%`_num_(n)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:194.5-194.31 - prod{numtype#658 : numtype, p : f32} {{0x43} {p:Bf32}} => `CONST`_instr{numtype#658}(`F32`_numtype, p) + 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{numtype#660 : numtype, p : f64} {{0x44} {p:Bf64}} => `CONST`_instr{numtype#660}(`F64`_numtype, p) + 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{numtype#662 : numtype} 0x45 => `TESTOP`_instr{numtype#662}(`I32`_numtype, `EQZ`_testop_) + prod 0x45 => `TESTOP`_instr(`I32`_numtype, `EQZ`_testop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:203.5-203.25 - prod{numtype#664 : numtype} 0x46 => `RELOP`_instr{numtype#664}(`I32`_numtype, `EQ`_relop_) + prod 0x46 => `RELOP`_instr(`I32`_numtype, `EQ`_relop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:204.5-204.25 - prod{numtype#666 : numtype} 0x47 => `RELOP`_instr{numtype#666}(`I32`_numtype, `NE`_relop_) + prod 0x47 => `RELOP`_instr(`I32`_numtype, `NE`_relop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:205.5-205.27 - prod{numtype#668 : numtype, sx#836 : sx} 0x48 => `RELOP`_instr{numtype#668}(`I32`_numtype, `LT`_relop_{sx#836}(`S`_sx)) + prod 0x48 => `RELOP`_instr(`I32`_numtype, `LT`_relop_(`S`_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:206.5-206.27 - prod{numtype#670 : numtype, sx#960 : sx} 0x49 => `RELOP`_instr{numtype#670}(`I32`_numtype, `LT`_relop_{sx#960}(`U`_sx)) + prod 0x49 => `RELOP`_instr(`I32`_numtype, `LT`_relop_(`U`_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:207.5-207.27 - prod{numtype#672 : numtype, sx#1084 : sx} 0x4A => `RELOP`_instr{numtype#672}(`I32`_numtype, `GT`_relop_{sx#1084}(`S`_sx)) + prod 0x4A => `RELOP`_instr(`I32`_numtype, `GT`_relop_(`S`_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:208.5-208.27 - prod{numtype#674 : numtype, sx#1208 : sx} 0x4B => `RELOP`_instr{numtype#674}(`I32`_numtype, `GT`_relop_{sx#1208}(`U`_sx)) + prod 0x4B => `RELOP`_instr(`I32`_numtype, `GT`_relop_(`U`_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:209.5-209.27 - prod{numtype#676 : numtype, sx#1332 : sx} 0x4C => `RELOP`_instr{numtype#676}(`I32`_numtype, `LE`_relop_{sx#1332}(`S`_sx)) + prod 0x4C => `RELOP`_instr(`I32`_numtype, `LE`_relop_(`S`_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:210.5-210.27 - prod{numtype#678 : numtype, sx#1456 : sx} 0x4D => `RELOP`_instr{numtype#678}(`I32`_numtype, `LE`_relop_{sx#1456}(`U`_sx)) + prod 0x4D => `RELOP`_instr(`I32`_numtype, `LE`_relop_(`U`_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:211.5-211.27 - prod{numtype#680 : numtype, sx#1580 : sx} 0x4E => `RELOP`_instr{numtype#680}(`I32`_numtype, `GE`_relop_{sx#1580}(`S`_sx)) + prod 0x4E => `RELOP`_instr(`I32`_numtype, `GE`_relop_(`S`_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:212.5-212.27 - prod{numtype#682 : numtype, sx#1704 : sx} 0x4F => `RELOP`_instr{numtype#682}(`I32`_numtype, `GE`_relop_{sx#1704}(`U`_sx)) + prod 0x4F => `RELOP`_instr(`I32`_numtype, `GE`_relop_(`U`_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:216.5-216.27 - prod{numtype#684 : numtype} 0x50 => `TESTOP`_instr{numtype#684}(`I64`_numtype, `EQZ`_testop_) + prod 0x50 => `TESTOP`_instr(`I64`_numtype, `EQZ`_testop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:220.5-220.25 - prod{numtype#686 : numtype} 0x51 => `RELOP`_instr{numtype#686}(`I64`_numtype, `EQ`_relop_) + prod 0x51 => `RELOP`_instr(`I64`_numtype, `EQ`_relop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:221.5-221.25 - prod{numtype#688 : numtype} 0x52 => `RELOP`_instr{numtype#688}(`I64`_numtype, `NE`_relop_) + prod 0x52 => `RELOP`_instr(`I64`_numtype, `NE`_relop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:222.5-222.27 - prod{numtype#690 : numtype, sx#1948 : sx} 0x53 => `RELOP`_instr{numtype#690}(`I64`_numtype, `LT`_relop_{sx#1948}(`S`_sx)) + prod 0x53 => `RELOP`_instr(`I64`_numtype, `LT`_relop_(`S`_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:223.5-223.27 - prod{numtype#692 : numtype, sx#2072 : sx} 0x54 => `RELOP`_instr{numtype#692}(`I64`_numtype, `LT`_relop_{sx#2072}(`U`_sx)) + prod 0x54 => `RELOP`_instr(`I64`_numtype, `LT`_relop_(`U`_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:224.5-224.27 - prod{numtype#694 : numtype, sx#2196 : sx} 0x55 => `RELOP`_instr{numtype#694}(`I64`_numtype, `GT`_relop_{sx#2196}(`S`_sx)) + prod 0x55 => `RELOP`_instr(`I64`_numtype, `GT`_relop_(`S`_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:225.5-225.27 - prod{numtype#696 : numtype, sx#2320 : sx} 0x56 => `RELOP`_instr{numtype#696}(`I64`_numtype, `GT`_relop_{sx#2320}(`U`_sx)) + prod 0x56 => `RELOP`_instr(`I64`_numtype, `GT`_relop_(`U`_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:226.5-226.27 - prod{numtype#698 : numtype, sx#2444 : sx} 0x57 => `RELOP`_instr{numtype#698}(`I64`_numtype, `LE`_relop_{sx#2444}(`S`_sx)) + prod 0x57 => `RELOP`_instr(`I64`_numtype, `LE`_relop_(`S`_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:227.5-227.27 - prod{numtype#700 : numtype, sx#2568 : sx} 0x58 => `RELOP`_instr{numtype#700}(`I64`_numtype, `LE`_relop_{sx#2568}(`U`_sx)) + prod 0x58 => `RELOP`_instr(`I64`_numtype, `LE`_relop_(`U`_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:228.5-228.27 - prod{numtype#702 : numtype, sx#2692 : sx} 0x59 => `RELOP`_instr{numtype#702}(`I64`_numtype, `GE`_relop_{sx#2692}(`S`_sx)) + prod 0x59 => `RELOP`_instr(`I64`_numtype, `GE`_relop_(`S`_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:229.5-229.27 - prod{numtype#704 : numtype, sx#2816 : sx} 0x5A => `RELOP`_instr{numtype#704}(`I64`_numtype, `GE`_relop_{sx#2816}(`U`_sx)) + prod 0x5A => `RELOP`_instr(`I64`_numtype, `GE`_relop_(`U`_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:233.5-233.25 - prod{numtype#706 : numtype} 0x5B => `RELOP`_instr{numtype#706}(`F32`_numtype, `EQ`_relop_) + prod 0x5B => `RELOP`_instr(`F32`_numtype, `EQ`_relop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:234.5-234.25 - prod{numtype#708 : numtype} 0x5C => `RELOP`_instr{numtype#708}(`F32`_numtype, `NE`_relop_) + prod 0x5C => `RELOP`_instr(`F32`_numtype, `NE`_relop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:235.5-235.25 - prod{numtype#710 : numtype} 0x5D => `RELOP`_instr{numtype#710}(`F32`_numtype, `LT`_relop_) + prod 0x5D => `RELOP`_instr(`F32`_numtype, `LT`_relop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:236.5-236.25 - prod{numtype#712 : numtype} 0x5E => `RELOP`_instr{numtype#712}(`F32`_numtype, `GT`_relop_) + prod 0x5E => `RELOP`_instr(`F32`_numtype, `GT`_relop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:237.5-237.25 - prod{numtype#714 : numtype} 0x5F => `RELOP`_instr{numtype#714}(`F32`_numtype, `LE`_relop_) + prod 0x5F => `RELOP`_instr(`F32`_numtype, `LE`_relop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:238.5-238.25 - prod{numtype#716 : numtype} 0x60 => `RELOP`_instr{numtype#716}(`F32`_numtype, `GE`_relop_) + prod 0x60 => `RELOP`_instr(`F32`_numtype, `GE`_relop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:242.5-242.25 - prod{numtype#718 : numtype} 0x61 => `RELOP`_instr{numtype#718}(`F64`_numtype, `EQ`_relop_) + prod 0x61 => `RELOP`_instr(`F64`_numtype, `EQ`_relop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:243.5-243.25 - prod{numtype#720 : numtype} 0x62 => `RELOP`_instr{numtype#720}(`F64`_numtype, `NE`_relop_) + prod 0x62 => `RELOP`_instr(`F64`_numtype, `NE`_relop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:244.5-244.25 - prod{numtype#722 : numtype} 0x63 => `RELOP`_instr{numtype#722}(`F64`_numtype, `LT`_relop_) + prod 0x63 => `RELOP`_instr(`F64`_numtype, `LT`_relop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:245.5-245.25 - prod{numtype#724 : numtype} 0x64 => `RELOP`_instr{numtype#724}(`F64`_numtype, `GT`_relop_) + prod 0x64 => `RELOP`_instr(`F64`_numtype, `GT`_relop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:246.5-246.25 - prod{numtype#726 : numtype} 0x65 => `RELOP`_instr{numtype#726}(`F64`_numtype, `LE`_relop_) + prod 0x65 => `RELOP`_instr(`F64`_numtype, `LE`_relop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:247.5-247.25 - prod{numtype#728 : numtype} 0x66 => `RELOP`_instr{numtype#728}(`F64`_numtype, `GE`_relop_) + prod 0x66 => `RELOP`_instr(`F64`_numtype, `GE`_relop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:251.5-251.25 - prod{numtype#730 : numtype} 0x67 => `UNOP`_instr{numtype#730}(`I32`_numtype, `CLZ`_unop_) + prod 0x67 => `UNOP`_instr(`I32`_numtype, `CLZ`_unop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:252.5-252.25 - prod{numtype#732 : numtype} 0x68 => `UNOP`_instr{numtype#732}(`I32`_numtype, `CTZ`_unop_) + prod 0x68 => `UNOP`_instr(`I32`_numtype, `CTZ`_unop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:253.5-253.28 - prod{numtype#734 : numtype} 0x69 => `UNOP`_instr{numtype#734}(`I32`_numtype, `POPCNT`_unop_) + prod 0x69 => `UNOP`_instr(`I32`_numtype, `POPCNT`_unop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:257.5-257.26 - prod{numtype#736 : numtype} 0x6A => `BINOP`_instr{numtype#736}(`I32`_numtype, `ADD`_binop_) + prod 0x6A => `BINOP`_instr(`I32`_numtype, `ADD`_binop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:258.5-258.26 - prod{numtype#738 : numtype} 0x6B => `BINOP`_instr{numtype#738}(`I32`_numtype, `SUB`_binop_) + prod 0x6B => `BINOP`_instr(`I32`_numtype, `SUB`_binop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:259.5-259.26 - prod{numtype#740 : numtype} 0x6C => `BINOP`_instr{numtype#740}(`I32`_numtype, `MUL`_binop_) + prod 0x6C => `BINOP`_instr(`I32`_numtype, `MUL`_binop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:260.5-260.28 - prod{numtype#742 : numtype, sx#3045 : sx} 0x6D => `BINOP`_instr{numtype#742}(`I32`_numtype, `DIV`_binop_{sx#3045}(`S`_sx)) + prod 0x6D => `BINOP`_instr(`I32`_numtype, `DIV`_binop_(`S`_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:261.5-261.28 - prod{numtype#744 : numtype, sx#3139 : sx} 0x6E => `BINOP`_instr{numtype#744}(`I32`_numtype, `DIV`_binop_{sx#3139}(`U`_sx)) + prod 0x6E => `BINOP`_instr(`I32`_numtype, `DIV`_binop_(`U`_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:262.5-262.28 - prod{numtype#746 : numtype, sx#3233 : sx} 0x6F => `BINOP`_instr{numtype#746}(`I32`_numtype, `REM`_binop_{sx#3233}(`S`_sx)) + prod 0x6F => `BINOP`_instr(`I32`_numtype, `REM`_binop_(`S`_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:263.5-263.28 - prod{numtype#748 : numtype, sx#3327 : sx} 0x70 => `BINOP`_instr{numtype#748}(`I32`_numtype, `REM`_binop_{sx#3327}(`U`_sx)) + prod 0x70 => `BINOP`_instr(`I32`_numtype, `REM`_binop_(`U`_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:264.5-264.26 - prod{numtype#750 : numtype} 0x71 => `BINOP`_instr{numtype#750}(`I32`_numtype, `AND`_binop_) + prod 0x71 => `BINOP`_instr(`I32`_numtype, `AND`_binop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:265.5-265.25 - prod{numtype#752 : numtype} 0x72 => `BINOP`_instr{numtype#752}(`I32`_numtype, `OR`_binop_) + prod 0x72 => `BINOP`_instr(`I32`_numtype, `OR`_binop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:266.5-266.26 - prod{numtype#754 : numtype} 0x73 => `BINOP`_instr{numtype#754}(`I32`_numtype, `XOR`_binop_) + prod 0x73 => `BINOP`_instr(`I32`_numtype, `XOR`_binop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:267.5-267.26 - prod{numtype#756 : numtype} 0x74 => `BINOP`_instr{numtype#756}(`I32`_numtype, `SHL`_binop_) + prod 0x74 => `BINOP`_instr(`I32`_numtype, `SHL`_binop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:268.5-268.28 - prod{numtype#758 : numtype, sx#3601 : sx} 0x75 => `BINOP`_instr{numtype#758}(`I32`_numtype, `SHR`_binop_{sx#3601}(`S`_sx)) + prod 0x75 => `BINOP`_instr(`I32`_numtype, `SHR`_binop_(`S`_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:269.5-269.28 - prod{numtype#760 : numtype, sx#3695 : sx} 0x76 => `BINOP`_instr{numtype#760}(`I32`_numtype, `SHR`_binop_{sx#3695}(`U`_sx)) + prod 0x76 => `BINOP`_instr(`I32`_numtype, `SHR`_binop_(`U`_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:270.5-270.27 - prod{numtype#762 : numtype} 0x77 => `BINOP`_instr{numtype#762}(`I32`_numtype, `ROTL`_binop_) + prod 0x77 => `BINOP`_instr(`I32`_numtype, `ROTL`_binop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:271.5-271.27 - prod{numtype#764 : numtype} 0x78 => `BINOP`_instr{numtype#764}(`I32`_numtype, `ROTR`_binop_) + prod 0x78 => `BINOP`_instr(`I32`_numtype, `ROTR`_binop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:275.5-275.25 - prod{numtype#766 : numtype} 0x79 => `UNOP`_instr{numtype#766}(`I64`_numtype, `CLZ`_unop_) + prod 0x79 => `UNOP`_instr(`I64`_numtype, `CLZ`_unop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:276.5-276.25 - prod{numtype#768 : numtype} 0x7A => `UNOP`_instr{numtype#768}(`I64`_numtype, `CTZ`_unop_) + prod 0x7A => `UNOP`_instr(`I64`_numtype, `CTZ`_unop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:277.5-277.28 - prod{numtype#770 : numtype} 0x7B => `UNOP`_instr{numtype#770}(`I64`_numtype, `POPCNT`_unop_) + prod 0x7B => `UNOP`_instr(`I64`_numtype, `POPCNT`_unop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:281.5-281.31 - prod{numtype#772 : numtype, sz#909 : sz, i#54600 : nat, i#54607 : nat} 0xC0 => `UNOP`_instr{numtype#772}(`I32`_numtype, `EXTEND`_unop_{sz#909, i#54600}(`%`_sz{i#54607}(8))) + prod 0xC0 => `UNOP`_instr(`I32`_numtype, `EXTEND`_unop_(`%`_sz(8))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:282.5-282.32 - prod{numtype#774 : numtype, sz#943 : sz, i#54616 : nat, i#54623 : nat} 0xC1 => `UNOP`_instr{numtype#774}(`I32`_numtype, `EXTEND`_unop_{sz#943, i#54616}(`%`_sz{i#54623}(16))) + prod 0xC1 => `UNOP`_instr(`I32`_numtype, `EXTEND`_unop_(`%`_sz(16))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:286.5-286.31 - prod{numtype#776 : numtype, sz#977 : sz, i#54632 : nat, i#54639 : nat} 0xC2 => `UNOP`_instr{numtype#776}(`I64`_numtype, `EXTEND`_unop_{sz#977, i#54632}(`%`_sz{i#54639}(8))) + prod 0xC2 => `UNOP`_instr(`I64`_numtype, `EXTEND`_unop_(`%`_sz(8))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:287.5-287.32 - prod{numtype#778 : numtype, sz#1011 : sz, i#54648 : nat, i#54655 : nat} 0xC3 => `UNOP`_instr{numtype#778}(`I64`_numtype, `EXTEND`_unop_{sz#1011, i#54648}(`%`_sz{i#54655}(16))) + prod 0xC3 => `UNOP`_instr(`I64`_numtype, `EXTEND`_unop_(`%`_sz(16))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:288.5-288.32 - prod{numtype#780 : numtype, sz#1045 : sz, i#54664 : nat, i#54671 : nat} 0xC4 => `UNOP`_instr{numtype#780}(`I64`_numtype, `EXTEND`_unop_{sz#1045, i#54664}(`%`_sz{i#54671}(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{numtype#782 : numtype} 0x7C => `BINOP`_instr{numtype#782}(`I64`_numtype, `ADD`_binop_) + prod 0x7C => `BINOP`_instr(`I64`_numtype, `ADD`_binop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:293.5-293.26 - prod{numtype#784 : numtype} 0x7D => `BINOP`_instr{numtype#784}(`I64`_numtype, `SUB`_binop_) + prod 0x7D => `BINOP`_instr(`I64`_numtype, `SUB`_binop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:294.5-294.26 - prod{numtype#786 : numtype} 0x7E => `BINOP`_instr{numtype#786}(`I64`_numtype, `MUL`_binop_) + prod 0x7E => `BINOP`_instr(`I64`_numtype, `MUL`_binop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:295.5-295.28 - prod{numtype#788 : numtype, sx#4014 : sx} 0x7F => `BINOP`_instr{numtype#788}(`I64`_numtype, `DIV`_binop_{sx#4014}(`S`_sx)) + prod 0x7F => `BINOP`_instr(`I64`_numtype, `DIV`_binop_(`S`_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:296.5-296.28 - prod{numtype#790 : numtype, sx#4108 : sx} 0x80 => `BINOP`_instr{numtype#790}(`I64`_numtype, `DIV`_binop_{sx#4108}(`U`_sx)) + prod 0x80 => `BINOP`_instr(`I64`_numtype, `DIV`_binop_(`U`_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:297.5-297.28 - prod{numtype#792 : numtype, sx#4202 : sx} 0x81 => `BINOP`_instr{numtype#792}(`I64`_numtype, `REM`_binop_{sx#4202}(`S`_sx)) + prod 0x81 => `BINOP`_instr(`I64`_numtype, `REM`_binop_(`S`_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:298.5-298.28 - prod{numtype#794 : numtype, sx#4296 : sx} 0x82 => `BINOP`_instr{numtype#794}(`I64`_numtype, `REM`_binop_{sx#4296}(`U`_sx)) + prod 0x82 => `BINOP`_instr(`I64`_numtype, `REM`_binop_(`U`_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:299.5-299.26 - prod{numtype#796 : numtype} 0x83 => `BINOP`_instr{numtype#796}(`I64`_numtype, `AND`_binop_) + prod 0x83 => `BINOP`_instr(`I64`_numtype, `AND`_binop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:300.5-300.25 - prod{numtype#798 : numtype} 0x84 => `BINOP`_instr{numtype#798}(`I64`_numtype, `OR`_binop_) + prod 0x84 => `BINOP`_instr(`I64`_numtype, `OR`_binop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:301.5-301.26 - prod{numtype#800 : numtype} 0x85 => `BINOP`_instr{numtype#800}(`I64`_numtype, `XOR`_binop_) + prod 0x85 => `BINOP`_instr(`I64`_numtype, `XOR`_binop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:302.5-302.26 - prod{numtype#802 : numtype} 0x86 => `BINOP`_instr{numtype#802}(`I64`_numtype, `SHL`_binop_) + prod 0x86 => `BINOP`_instr(`I64`_numtype, `SHL`_binop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:303.5-303.28 - prod{numtype#804 : numtype, sx#4570 : sx} 0x87 => `BINOP`_instr{numtype#804}(`I64`_numtype, `SHR`_binop_{sx#4570}(`S`_sx)) + prod 0x87 => `BINOP`_instr(`I64`_numtype, `SHR`_binop_(`S`_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:304.5-304.28 - prod{numtype#806 : numtype, sx#4664 : sx} 0x88 => `BINOP`_instr{numtype#806}(`I64`_numtype, `SHR`_binop_{sx#4664}(`U`_sx)) + prod 0x88 => `BINOP`_instr(`I64`_numtype, `SHR`_binop_(`U`_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:305.5-305.27 - prod{numtype#808 : numtype} 0x89 => `BINOP`_instr{numtype#808}(`I64`_numtype, `ROTL`_binop_) + prod 0x89 => `BINOP`_instr(`I64`_numtype, `ROTL`_binop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:306.5-306.27 - prod{numtype#810 : numtype} 0x8A => `BINOP`_instr{numtype#810}(`I64`_numtype, `ROTR`_binop_) + prod 0x8A => `BINOP`_instr(`I64`_numtype, `ROTR`_binop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:310.5-310.25 - prod{numtype#812 : numtype} 0x8B => `UNOP`_instr{numtype#812}(`F32`_numtype, `ABS`_unop_) + prod 0x8B => `UNOP`_instr(`F32`_numtype, `ABS`_unop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:311.5-311.25 - prod{numtype#814 : numtype} 0x8C => `UNOP`_instr{numtype#814}(`F32`_numtype, `NEG`_unop_) + prod 0x8C => `UNOP`_instr(`F32`_numtype, `NEG`_unop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:312.5-312.26 - prod{numtype#816 : numtype} 0x8D => `UNOP`_instr{numtype#816}(`F32`_numtype, `CEIL`_unop_) + prod 0x8D => `UNOP`_instr(`F32`_numtype, `CEIL`_unop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:313.5-313.27 - prod{numtype#818 : numtype} 0x8E => `UNOP`_instr{numtype#818}(`F32`_numtype, `FLOOR`_unop_) + prod 0x8E => `UNOP`_instr(`F32`_numtype, `FLOOR`_unop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:314.5-314.27 - prod{numtype#820 : numtype} 0x8F => `UNOP`_instr{numtype#820}(`F32`_numtype, `TRUNC`_unop_) + prod 0x8F => `UNOP`_instr(`F32`_numtype, `TRUNC`_unop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:315.5-315.29 - prod{numtype#822 : numtype} 0x90 => `UNOP`_instr{numtype#822}(`F32`_numtype, `NEAREST`_unop_) + prod 0x90 => `UNOP`_instr(`F32`_numtype, `NEAREST`_unop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:316.5-316.26 - prod{numtype#824 : numtype} 0x91 => `UNOP`_instr{numtype#824}(`F32`_numtype, `SQRT`_unop_) + prod 0x91 => `UNOP`_instr(`F32`_numtype, `SQRT`_unop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:320.5-320.26 - prod{numtype#826 : numtype} 0x92 => `BINOP`_instr{numtype#826}(`F32`_numtype, `ADD`_binop_) + prod 0x92 => `BINOP`_instr(`F32`_numtype, `ADD`_binop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:321.5-321.26 - prod{numtype#828 : numtype} 0x93 => `BINOP`_instr{numtype#828}(`F32`_numtype, `SUB`_binop_) + prod 0x93 => `BINOP`_instr(`F32`_numtype, `SUB`_binop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:322.5-322.26 - prod{numtype#830 : numtype} 0x94 => `BINOP`_instr{numtype#830}(`F32`_numtype, `MUL`_binop_) + prod 0x94 => `BINOP`_instr(`F32`_numtype, `MUL`_binop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:323.5-323.26 - prod{numtype#832 : numtype} 0x95 => `BINOP`_instr{numtype#832}(`F32`_numtype, `DIV`_binop_) + prod 0x95 => `BINOP`_instr(`F32`_numtype, `DIV`_binop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:324.5-324.26 - prod{numtype#834 : numtype} 0x96 => `BINOP`_instr{numtype#834}(`F32`_numtype, `MIN`_binop_) + prod 0x96 => `BINOP`_instr(`F32`_numtype, `MIN`_binop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:325.5-325.26 - prod{numtype#836 : numtype} 0x97 => `BINOP`_instr{numtype#836}(`F32`_numtype, `MAX`_binop_) + prod 0x97 => `BINOP`_instr(`F32`_numtype, `MAX`_binop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:326.5-326.31 - prod{numtype#838 : numtype} 0x98 => `BINOP`_instr{numtype#838}(`F32`_numtype, `COPYSIGN`_binop_) + prod 0x98 => `BINOP`_instr(`F32`_numtype, `COPYSIGN`_binop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:330.5-330.25 - prod{numtype#840 : numtype} 0x99 => `UNOP`_instr{numtype#840}(`F64`_numtype, `ABS`_unop_) + prod 0x99 => `UNOP`_instr(`F64`_numtype, `ABS`_unop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:331.5-331.25 - prod{numtype#842 : numtype} 0x9A => `UNOP`_instr{numtype#842}(`F64`_numtype, `NEG`_unop_) + prod 0x9A => `UNOP`_instr(`F64`_numtype, `NEG`_unop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:332.5-332.26 - prod{numtype#844 : numtype} 0x9B => `UNOP`_instr{numtype#844}(`F64`_numtype, `CEIL`_unop_) + prod 0x9B => `UNOP`_instr(`F64`_numtype, `CEIL`_unop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:333.5-333.27 - prod{numtype#846 : numtype} 0x9C => `UNOP`_instr{numtype#846}(`F64`_numtype, `FLOOR`_unop_) + prod 0x9C => `UNOP`_instr(`F64`_numtype, `FLOOR`_unop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:334.5-334.27 - prod{numtype#848 : numtype} 0x9D => `UNOP`_instr{numtype#848}(`F64`_numtype, `TRUNC`_unop_) + prod 0x9D => `UNOP`_instr(`F64`_numtype, `TRUNC`_unop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:335.5-335.29 - prod{numtype#850 : numtype} 0x9E => `UNOP`_instr{numtype#850}(`F64`_numtype, `NEAREST`_unop_) + prod 0x9E => `UNOP`_instr(`F64`_numtype, `NEAREST`_unop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:336.5-336.26 - prod{numtype#852 : numtype} 0x9F => `UNOP`_instr{numtype#852}(`F64`_numtype, `SQRT`_unop_) + prod 0x9F => `UNOP`_instr(`F64`_numtype, `SQRT`_unop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:340.5-340.26 - prod{numtype#854 : numtype} 0xA0 => `BINOP`_instr{numtype#854}(`F64`_numtype, `ADD`_binop_) + prod 0xA0 => `BINOP`_instr(`F64`_numtype, `ADD`_binop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:341.5-341.26 - prod{numtype#856 : numtype} 0xA1 => `BINOP`_instr{numtype#856}(`F64`_numtype, `SUB`_binop_) + prod 0xA1 => `BINOP`_instr(`F64`_numtype, `SUB`_binop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:342.5-342.26 - prod{numtype#858 : numtype} 0xA2 => `BINOP`_instr{numtype#858}(`F64`_numtype, `MUL`_binop_) + prod 0xA2 => `BINOP`_instr(`F64`_numtype, `MUL`_binop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:343.5-343.26 - prod{numtype#860 : numtype} 0xA3 => `BINOP`_instr{numtype#860}(`F64`_numtype, `DIV`_binop_) + prod 0xA3 => `BINOP`_instr(`F64`_numtype, `DIV`_binop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:344.5-344.26 - prod{numtype#862 : numtype} 0xA4 => `BINOP`_instr{numtype#862}(`F64`_numtype, `MIN`_binop_) + prod 0xA4 => `BINOP`_instr(`F64`_numtype, `MIN`_binop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:345.5-345.26 - prod{numtype#864 : numtype} 0xA5 => `BINOP`_instr{numtype#864}(`F64`_numtype, `MAX`_binop_) + prod 0xA5 => `BINOP`_instr(`F64`_numtype, `MAX`_binop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:346.5-346.31 - prod{numtype#866 : numtype} 0xA6 => `BINOP`_instr{numtype#866}(`F64`_numtype, `COPYSIGN`_binop_) + prod 0xA6 => `BINOP`_instr(`F64`_numtype, `COPYSIGN`_binop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:351.5-351.31 - prod{numtype_1#9 : numtype, numtype_2#9 : numtype} 0xA7 => `CVTOP`_instr{numtype_1#9, numtype_2#9}(`I32`_numtype, `I64`_numtype, `WRAP`_cvtop__) + prod 0xA7 => `CVTOP`_instr(`I32`_numtype, `I64`_numtype, `WRAP`_cvtop__) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:352.5-352.34 - prod{numtype_1#11 : numtype, numtype_2#11 : numtype, sx#4833 : sx} 0xA8 => `CVTOP`_instr{numtype_1#11, numtype_2#11}(`I32`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#4833}(`S`_sx)) + 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{numtype_1#13 : numtype, numtype_2#13 : numtype, sx#4897 : sx} 0xA9 => `CVTOP`_instr{numtype_1#13, numtype_2#13}(`I32`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#4897}(`U`_sx)) + 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{numtype_1#15 : numtype, numtype_2#15 : numtype, sx#4961 : sx} 0xAA => `CVTOP`_instr{numtype_1#15, numtype_2#15}(`I32`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#4961}(`S`_sx)) + 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{numtype_1#17 : numtype, numtype_2#17 : numtype, sx#5025 : sx} 0xAB => `CVTOP`_instr{numtype_1#17, numtype_2#17}(`I32`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#5025}(`U`_sx)) + 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{numtype_1#19 : numtype, numtype_2#19 : numtype, sx#5059 : sx} 0xAC => `CVTOP`_instr{numtype_1#19, numtype_2#19}(`I64`_numtype, `I32`_numtype, `EXTEND`_cvtop__{sx#5059}(`S`_sx)) + 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{numtype_1#21 : numtype, numtype_2#21 : numtype, sx#5093 : sx} 0xAD => `CVTOP`_instr{numtype_1#21, numtype_2#21}(`I64`_numtype, `I32`_numtype, `EXTEND`_cvtop__{sx#5093}(`U`_sx)) + 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{numtype_1#23 : numtype, numtype_2#23 : numtype, sx#5157 : sx} 0xAE => `CVTOP`_instr{numtype_1#23, numtype_2#23}(`I64`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#5157}(`S`_sx)) + 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{numtype_1#25 : numtype, numtype_2#25 : numtype, sx#5221 : sx} 0xAF => `CVTOP`_instr{numtype_1#25, numtype_2#25}(`I64`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#5221}(`U`_sx)) + 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{numtype_1#27 : numtype, numtype_2#27 : numtype, sx#5285 : sx} 0xB0 => `CVTOP`_instr{numtype_1#27, numtype_2#27}(`I64`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#5285}(`S`_sx)) + 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{numtype_1#29 : numtype, numtype_2#29 : numtype, sx#5349 : sx} 0xB1 => `CVTOP`_instr{numtype_1#29, numtype_2#29}(`I64`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#5349}(`U`_sx)) + 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{numtype_1#31 : numtype, numtype_2#31 : numtype, sx#5383 : sx} 0xB2 => `CVTOP`_instr{numtype_1#31, numtype_2#31}(`F32`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#5383}(`S`_sx)) + 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{numtype_1#33 : numtype, numtype_2#33 : numtype, sx#5417 : sx} 0xB3 => `CVTOP`_instr{numtype_1#33, numtype_2#33}(`F32`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#5417}(`U`_sx)) + 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{numtype_1#35 : numtype, numtype_2#35 : numtype, sx#5451 : sx} 0xB4 => `CVTOP`_instr{numtype_1#35, numtype_2#35}(`F32`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#5451}(`S`_sx)) + 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{numtype_1#37 : numtype, numtype_2#37 : numtype, sx#5485 : sx} 0xB5 => `CVTOP`_instr{numtype_1#37, numtype_2#37}(`F32`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#5485}(`U`_sx)) + 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{numtype_1#39 : numtype, numtype_2#39 : numtype} 0xB6 => `CVTOP`_instr{numtype_1#39, numtype_2#39}(`F32`_numtype, `F64`_numtype, `DEMOTE`_cvtop__) + prod 0xB6 => `CVTOP`_instr(`F32`_numtype, `F64`_numtype, `DEMOTE`_cvtop__) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:367.5-367.36 - prod{numtype_1#41 : numtype, numtype_2#41 : numtype, sx#5519 : sx} 0xB7 => `CVTOP`_instr{numtype_1#41, numtype_2#41}(`F64`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#5519}(`S`_sx)) + 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{numtype_1#43 : numtype, numtype_2#43 : numtype, sx#5553 : sx} 0xB8 => `CVTOP`_instr{numtype_1#43, numtype_2#43}(`F64`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#5553}(`U`_sx)) + 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{numtype_1#45 : numtype, numtype_2#45 : numtype, sx#5587 : sx} 0xB9 => `CVTOP`_instr{numtype_1#45, numtype_2#45}(`F64`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#5587}(`S`_sx)) + 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{numtype_1#47 : numtype, numtype_2#47 : numtype, sx#5621 : sx} 0xBA => `CVTOP`_instr{numtype_1#47, numtype_2#47}(`F64`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#5621}(`U`_sx)) + 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{numtype_1#49 : numtype, numtype_2#49 : numtype} 0xBB => `CVTOP`_instr{numtype_1#49, numtype_2#49}(`F64`_numtype, `F32`_numtype, `PROMOTE`_cvtop__) + prod 0xBB => `CVTOP`_instr(`F64`_numtype, `F32`_numtype, `PROMOTE`_cvtop__) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:372.5-372.38 - prod{numtype_1#51 : numtype, numtype_2#51 : numtype} 0xBC => `CVTOP`_instr{numtype_1#51, numtype_2#51}(`I32`_numtype, `F32`_numtype, `REINTERPRET`_cvtop__) + prod 0xBC => `CVTOP`_instr(`I32`_numtype, `F32`_numtype, `REINTERPRET`_cvtop__) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:373.5-373.38 - prod{numtype_1#53 : numtype, numtype_2#53 : numtype} 0xBD => `CVTOP`_instr{numtype_1#53, numtype_2#53}(`I64`_numtype, `F64`_numtype, `REINTERPRET`_cvtop__) + prod 0xBD => `CVTOP`_instr(`I64`_numtype, `F64`_numtype, `REINTERPRET`_cvtop__) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:374.5-374.38 - prod{numtype_1#55 : numtype, numtype_2#55 : numtype} 0xBE => `CVTOP`_instr{numtype_1#55, numtype_2#55}(`F32`_numtype, `I32`_numtype, `REINTERPRET`_cvtop__) + prod 0xBE => `CVTOP`_instr(`F32`_numtype, `I32`_numtype, `REINTERPRET`_cvtop__) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:375.5-375.38 - prod{numtype_1#57 : numtype, numtype_2#57 : numtype} 0xBF => `CVTOP`_instr{numtype_1#57, numtype_2#57}(`F64`_numtype, `I64`_numtype, `REINTERPRET`_cvtop__) + prod 0xBF => `CVTOP`_instr(`F64`_numtype, `I64`_numtype, `REINTERPRET`_cvtop__) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:379.5-379.45 - prod{numtype_1#59 : numtype, numtype_2#59 : numtype, sx#5775 : sx, i#54694 : nat} {{0xFC} {`%`_u32{i#54694}(0):Bu32}} => `CVTOP`_instr{numtype_1#59, numtype_2#59}(`I32`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#5775}(`S`_sx)) + 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{numtype_1#61 : numtype, numtype_2#61 : numtype, sx#5839 : sx, i#54719 : nat} {{0xFC} {`%`_u32{i#54719}(1):Bu32}} => `CVTOP`_instr{numtype_1#61, numtype_2#61}(`I32`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#5839}(`U`_sx)) + 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{numtype_1#63 : numtype, numtype_2#63 : numtype, sx#5903 : sx, i#54744 : nat} {{0xFC} {`%`_u32{i#54744}(2):Bu32}} => `CVTOP`_instr{numtype_1#63, numtype_2#63}(`I32`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#5903}(`S`_sx)) + 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{numtype_1#65 : numtype, numtype_2#65 : numtype, sx#5967 : sx, i#54769 : nat} {{0xFC} {`%`_u32{i#54769}(3):Bu32}} => `CVTOP`_instr{numtype_1#65, numtype_2#65}(`I32`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#5967}(`U`_sx)) + 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{numtype_1#67 : numtype, numtype_2#67 : numtype, sx#6031 : sx, i#54794 : nat} {{0xFC} {`%`_u32{i#54794}(4):Bu32}} => `CVTOP`_instr{numtype_1#67, numtype_2#67}(`I64`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#6031}(`S`_sx)) + 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{numtype_1#69 : numtype, numtype_2#69 : numtype, sx#6095 : sx, i#54819 : nat} {{0xFC} {`%`_u32{i#54819}(5):Bu32}} => `CVTOP`_instr{numtype_1#69, numtype_2#69}(`I64`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#6095}(`U`_sx)) + 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{numtype_1#71 : numtype, numtype_2#71 : numtype, sx#6159 : sx, i#54844 : nat} {{0xFC} {`%`_u32{i#54844}(6):Bu32}} => `CVTOP`_instr{numtype_1#71, numtype_2#71}(`I64`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#6159}(`S`_sx)) + 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{numtype_1#73 : numtype, numtype_2#73 : numtype, sx#6223 : sx, i#54869 : nat} {{0xFC} {`%`_u32{i#54869}(7):Bu32}} => `CVTOP`_instr{numtype_1#73, numtype_2#73}(`I64`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#6223}(`U`_sx)) + 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{`vectype?#14` : vectype?, memidx#228 : memidx, memarg#137 : memarg, x : idx, ao : memarg, i#54968 : nat} {{0xFD} {`%`_u32{i#54968}(0):Bu32} {(x, ao):Bmemarg}} => `VLOAD`_instr{`vectype?#14`, memidx#228, memarg#137}(`V128`_vectype, ?(), x, ao) + 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{`vectype?#15` : vectype?, memidx#230 : memidx, memarg#139 : memarg, sz#1092 : sz, M#157 : M, sx#6240 : sx, i#55059 : nat, i#55066 : nat, x : idx, ao : memarg, i#55019 : nat} {{0xFD} {`%`_u32{i#55019}(1):Bu32} {(x, ao):Bmemarg}} => `VLOAD`_instr{`vectype?#15`, memidx#230, memarg#139}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1092, M#157, sx#6240, i#55059}(`%`_sz{i#55066}(8), 8, `S`_sx)), x, ao) + 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{`vectype?#16` : vectype?, memidx#232 : memidx, memarg#141 : memarg, sz#1139 : sz, M#174 : M, sx#6257 : sx, i#55143 : nat, i#55150 : nat, x : idx, ao : memarg, i#55103 : nat} {{0xFD} {`%`_u32{i#55103}(2):Bu32} {(x, ao):Bmemarg}} => `VLOAD`_instr{`vectype?#16`, memidx#232, memarg#141}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1139, M#174, sx#6257, i#55143}(`%`_sz{i#55150}(8), 8, `U`_sx)), x, ao) + 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{`vectype?#17` : vectype?, memidx#234 : memidx, memarg#143 : memarg, sz#1186 : sz, M#191 : M, sx#6274 : sx, i#55227 : nat, i#55234 : nat, x : idx, ao : memarg, i#55187 : nat} {{0xFD} {`%`_u32{i#55187}(3):Bu32} {(x, ao):Bmemarg}} => `VLOAD`_instr{`vectype?#17`, memidx#234, memarg#143}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1186, M#191, sx#6274, i#55227}(`%`_sz{i#55234}(16), 4, `S`_sx)), x, ao) + 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{`vectype?#18` : vectype?, memidx#236 : memidx, memarg#145 : memarg, sz#1233 : sz, M#208 : M, sx#6291 : sx, i#55311 : nat, i#55318 : nat, x : idx, ao : memarg, i#55271 : nat} {{0xFD} {`%`_u32{i#55271}(4):Bu32} {(x, ao):Bmemarg}} => `VLOAD`_instr{`vectype?#18`, memidx#236, memarg#145}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1233, M#208, sx#6291, i#55311}(`%`_sz{i#55318}(16), 4, `U`_sx)), x, ao) + 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{`vectype?#19` : vectype?, memidx#238 : memidx, memarg#147 : memarg, sz#1280 : sz, M#225 : M, sx#6308 : sx, i#55395 : nat, i#55402 : nat, x : idx, ao : memarg, i#55355 : nat} {{0xFD} {`%`_u32{i#55355}(5):Bu32} {(x, ao):Bmemarg}} => `VLOAD`_instr{`vectype?#19`, memidx#238, memarg#147}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1280, M#225, sx#6308, i#55395}(`%`_sz{i#55402}(32), 2, `S`_sx)), x, ao) + 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{`vectype?#20` : vectype?, memidx#240 : memidx, memarg#149 : memarg, sz#1327 : sz, M#242 : M, sx#6325 : sx, i#55479 : nat, i#55486 : nat, x : idx, ao : memarg, i#55439 : nat} {{0xFD} {`%`_u32{i#55439}(6):Bu32} {(x, ao):Bmemarg}} => `VLOAD`_instr{`vectype?#20`, memidx#240, memarg#149}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1327, M#242, sx#6325, i#55479}(`%`_sz{i#55486}(32), 2, `U`_sx)), x, ao) + 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{`vectype?#21` : vectype?, memidx#242 : memidx, memarg#151 : memarg, sz#1374 : sz, i#55569 : nat, x : idx, ao : memarg, i#55523 : nat} {{0xFD} {`%`_u32{i#55523}(7):Bu32} {(x, ao):Bmemarg}} => `VLOAD`_instr{`vectype?#21`, memidx#242, memarg#151}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#1374}(`%`_sz{i#55569}(8))), x, ao) + 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{`vectype?#22` : vectype?, memidx#244 : memidx, memarg#153 : memarg, sz#1421 : sz, i#55652 : nat, x : idx, ao : memarg, i#55606 : nat} {{0xFD} {`%`_u32{i#55606}(8):Bu32} {(x, ao):Bmemarg}} => `VLOAD`_instr{`vectype?#22`, memidx#244, memarg#153}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#1421}(`%`_sz{i#55652}(16))), x, ao) + 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{`vectype?#23` : vectype?, memidx#246 : memidx, memarg#155 : memarg, sz#1468 : sz, i#55735 : nat, x : idx, ao : memarg, i#55689 : nat} {{0xFD} {`%`_u32{i#55689}(9):Bu32} {(x, ao):Bmemarg}} => `VLOAD`_instr{`vectype?#23`, memidx#246, memarg#155}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#1468}(`%`_sz{i#55735}(32))), x, ao) + 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{`vectype?#24` : vectype?, memidx#248 : memidx, memarg#157 : memarg, sz#1515 : sz, i#55818 : nat, x : idx, ao : memarg, i#55772 : nat} {{0xFD} {`%`_u32{i#55772}(10):Bu32} {(x, ao):Bmemarg}} => `VLOAD`_instr{`vectype?#24`, memidx#248, memarg#157}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#1515}(`%`_sz{i#55818}(64))), x, ao) + 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{vectype#237 : vectype, memidx#250 : memidx, memarg#159 : memarg, x : idx, ao : memarg, i#55855 : nat} {{0xFD} {`%`_u32{i#55855}(11):Bu32} {(x, ao):Bmemarg}} => `VSTORE`_instr{vectype#237, memidx#250, memarg#159}(`V128`_vectype, x, ao) + 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{vectype#239 : vectype, sz#1517 : sz, memidx#252 : memidx, memarg#161 : memarg, laneidx#31 : laneidx, i#55945 : nat, x : idx, ao : memarg, i : laneidx, i#55906 : nat} {{0xFD} {`%`_u32{i#55906}(84):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => `VLOAD_LANE`_instr{vectype#239, sz#1517, memidx#252, memarg#161, laneidx#31}(`V128`_vectype, `%`_sz{i#55945}(8), x, ao, i) + 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{vectype#241 : vectype, sz#1519 : sz, memidx#254 : memidx, memarg#163 : memarg, laneidx#33 : laneidx, i#56033 : nat, x : idx, ao : memarg, i : laneidx, i#55994 : nat} {{0xFD} {`%`_u32{i#55994}(85):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => `VLOAD_LANE`_instr{vectype#241, sz#1519, memidx#254, memarg#163, laneidx#33}(`V128`_vectype, `%`_sz{i#56033}(16), x, ao, i) + 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{vectype#243 : vectype, sz#1521 : sz, memidx#256 : memidx, memarg#165 : memarg, laneidx#35 : laneidx, i#56121 : nat, x : idx, ao : memarg, i : laneidx, i#56082 : nat} {{0xFD} {`%`_u32{i#56082}(86):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => `VLOAD_LANE`_instr{vectype#243, sz#1521, memidx#256, memarg#165, laneidx#35}(`V128`_vectype, `%`_sz{i#56121}(32), x, ao, i) + 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{vectype#245 : vectype, sz#1523 : sz, memidx#258 : memidx, memarg#167 : memarg, laneidx#37 : laneidx, i#56209 : nat, x : idx, ao : memarg, i : laneidx, i#56170 : nat} {{0xFD} {`%`_u32{i#56170}(87):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => `VLOAD_LANE`_instr{vectype#245, sz#1523, memidx#258, memarg#167, laneidx#37}(`V128`_vectype, `%`_sz{i#56209}(64), x, ao, i) + 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{vectype#247 : vectype, sz#1525 : sz, memidx#260 : memidx, memarg#169 : memarg, laneidx#39 : laneidx, i#56297 : nat, x : idx, ao : memarg, i : laneidx, i#56258 : nat} {{0xFD} {`%`_u32{i#56258}(88):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => `VSTORE_LANE`_instr{vectype#247, sz#1525, memidx#260, memarg#169, laneidx#39}(`V128`_vectype, `%`_sz{i#56297}(8), x, ao, i) + 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{vectype#249 : vectype, sz#1527 : sz, memidx#262 : memidx, memarg#171 : memarg, laneidx#41 : laneidx, i#56385 : nat, x : idx, ao : memarg, i : laneidx, i#56346 : nat} {{0xFD} {`%`_u32{i#56346}(89):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => `VSTORE_LANE`_instr{vectype#249, sz#1527, memidx#262, memarg#171, laneidx#41}(`V128`_vectype, `%`_sz{i#56385}(16), x, ao, i) + 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{vectype#251 : vectype, sz#1529 : sz, memidx#264 : memidx, memarg#173 : memarg, laneidx#43 : laneidx, i#56473 : nat, x : idx, ao : memarg, i : laneidx, i#56434 : nat} {{0xFD} {`%`_u32{i#56434}(90):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => `VSTORE_LANE`_instr{vectype#251, sz#1529, memidx#264, memarg#173, laneidx#43}(`V128`_vectype, `%`_sz{i#56473}(32), x, ao, i) + 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{vectype#253 : vectype, sz#1531 : sz, memidx#266 : memidx, memarg#175 : memarg, laneidx#45 : laneidx, i#56561 : nat, x : idx, ao : memarg, i : laneidx, i#56522 : nat} {{0xFD} {`%`_u32{i#56522}(91):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => `VSTORE_LANE`_instr{vectype#253, sz#1531, memidx#266, memarg#175, laneidx#45}(`V128`_vectype, `%`_sz{i#56561}(64), x, ao, i) + 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{`vectype?#25` : vectype?, memidx#268 : memidx, memarg#177 : memarg, sz#1578 : sz, i#56650 : nat, i#56657 : nat, x : idx, ao : memarg, i#56610 : nat} {{0xFD} {`%`_u32{i#56610}(92):Bu32} {(x, ao):Bmemarg}} => `VLOAD`_instr{`vectype?#25`, memidx#268, memarg#177}(`V128`_vectype, ?(`ZERO`_vloadop_{sz#1578, i#56650}(`%`_sz{i#56657}(32))), x, ao) + 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{`vectype?#26` : vectype?, memidx#270 : memidx, memarg#179 : memarg, sz#1625 : sz, i#56734 : nat, i#56741 : nat, x : idx, ao : memarg, i#56694 : nat} {{0xFD} {`%`_u32{i#56694}(93):Bu32} {(x, ao):Bmemarg}} => `VLOAD`_instr{`vectype?#26`, memidx#270, memarg#179}(`V128`_vectype, ?(`ZERO`_vloadop_{sz#1625, i#56734}(`%`_sz{i#56741}(64))), x, ao) + 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{vectype#257 : vectype, `b*` : byte*, i#56778 : nat} {{0xFD} {`%`_u32{i#56778}(12):Bu32} {b:Bbyte^16{b <- `b*`}}} => `VCONST`_instr{vectype#257}(`V128`_vectype, $inv_ibytes_(128, b^16{b <- `b*`})) + 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{bshape#13 : bshape, `laneidx*#7` : laneidx*, i#56888 : nat, shape#845 : shape, shape#856 : shape, lanetype#7789 : lanetype, dim#7789 : dim, i#56892 : nat, i#56899 : nat, `i#56956*` : nat*, `i#56957*` : nat*, `l*` : labelidx*, i#56835 : nat, `i#56884*` : nat*, `i#56885*` : nat*} {{0xFD} {`%`_u32{i#56835}(13):Bu32} {`%`_laneidx{i#56885}(l!`%`_labelidx{i#56884}.0):Blaneidx^16{i#56884 <- `i#56884*`, i#56885 <- `i#56885*`, l <- `l*`}}} => `VSHUFFLE`_instr{bshape#13, `laneidx*#7`, i#56888, shape#845}(`%`_bshape{shape#856}(`%X%`_shape{lanetype#7789, dim#7789, i#56892}(`I8`_lanetype, `%`_dim{i#56899}(16))), `%`_laneidx{i#56957}(l!`%`_labelidx{i#56956}.0)^16{i#56956 <- `i#56956*`, i#56957 <- `i#56957*`, l <- `l*`}) + 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{bshape#15 : bshape, shape#868 : shape, lanetype#7801 : lanetype, dim#7801 : dim, i#56988 : nat, i#56995 : nat, i#56981 : nat} {{0xFD} {`%`_u32{i#56981}(14):Bu32}} => `VSWIZZLOP`_instr{bshape#15}(`%`_bshape{shape#868}(`%X%`_shape{lanetype#7801, dim#7801, i#56988}(`I8`_lanetype, `%`_dim{i#56995}(16))), `SWIZZLE`_vswizzlop_) + 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{bshape#17 : bshape, shape#895 : shape, lanetype#7858 : lanetype, dim#7858 : dim, i#57100 : nat, i#57107 : nat, i#57093 : nat} {{0xFD} {`%`_u32{i#57093}(256):Bu32}} => `VSWIZZLOP`_instr{bshape#17}(`%`_bshape{shape#895}(`%X%`_shape{lanetype#7858, dim#7858, i#57100}(`I8`_lanetype, `%`_dim{i#57107}(16))), `RELAXED_SWIZZLE`_vswizzlop_) + 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{shape#912 : shape, lanetype#7915 : lanetype, dim#7915 : dim, i#57212 : nat, i#57219 : nat, i#57205 : nat} {{0xFD} {`%`_u32{i#57205}(15):Bu32}} => `VSPLAT`_instr{shape#912}(`%X%`_shape{lanetype#7915, dim#7915, i#57212}(`I8`_lanetype, `%`_dim{i#57219}(16))) + 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{shape#914 : shape, lanetype#7927 : lanetype, dim#7927 : dim, i#57249 : nat, i#57256 : nat, i#57242 : nat} {{0xFD} {`%`_u32{i#57242}(16):Bu32}} => `VSPLAT`_instr{shape#914}(`%X%`_shape{lanetype#7927, dim#7927, i#57249}(`I16`_lanetype, `%`_dim{i#57256}(8))) + 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{shape#916 : shape, lanetype#7939 : lanetype, dim#7939 : dim, i#57286 : nat, i#57293 : nat, i#57279 : nat} {{0xFD} {`%`_u32{i#57279}(17):Bu32}} => `VSPLAT`_instr{shape#916}(`%X%`_shape{lanetype#7939, dim#7939, i#57286}(`I32`_lanetype, `%`_dim{i#57293}(4))) + 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{shape#918 : shape, lanetype#7951 : lanetype, dim#7951 : dim, i#57323 : nat, i#57330 : nat, i#57316 : nat} {{0xFD} {`%`_u32{i#57316}(18):Bu32}} => `VSPLAT`_instr{shape#918}(`%X%`_shape{lanetype#7951, dim#7951, i#57323}(`I64`_lanetype, `%`_dim{i#57330}(2))) + 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{shape#920 : shape, lanetype#7963 : lanetype, dim#7963 : dim, i#57360 : nat, i#57367 : nat, i#57353 : nat} {{0xFD} {`%`_u32{i#57353}(19):Bu32}} => `VSPLAT`_instr{shape#920}(`%X%`_shape{lanetype#7963, dim#7963, i#57360}(`F32`_lanetype, `%`_dim{i#57367}(4))) + 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{shape#922 : shape, lanetype#7975 : lanetype, dim#7975 : dim, i#57397 : nat, i#57404 : nat, i#57390 : nat} {{0xFD} {`%`_u32{i#57390}(20):Bu32}} => `VSPLAT`_instr{shape#922}(`%X%`_shape{lanetype#7975, dim#7975, i#57397}(`F64`_lanetype, `%`_dim{i#57404}(2))) + 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{shape#924 : shape, `sx?#43` : sx?, laneidx#47 : laneidx, lanetype#7987 : lanetype, dim#7987 : dim, i#57485 : nat, i#57492 : nat, i#57583 : nat, l : labelidx, i#57582 : nat, i#57427 : nat, i#57477 : nat, i#57476 : nat} {{0xFD} {`%`_u32{i#57427}(21):Bu32} {`%`_laneidx{i#57477}(l!`%`_labelidx{i#57476}.0):Blaneidx}} => `VEXTRACT_LANE`_instr{shape#924, `sx?#43`, laneidx#47}(`%X%`_shape{lanetype#7987, dim#7987, i#57485}(`I8`_lanetype, `%`_dim{i#57492}(16)), ?(`S`_sx), `%`_laneidx{i#57583}(l!`%`_labelidx{i#57582}.0)) + 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{shape#926 : shape, `sx?#45` : sx?, laneidx#49 : laneidx, lanetype#7999 : lanetype, dim#7999 : dim, i#57665 : nat, i#57672 : nat, i#57763 : nat, l : labelidx, i#57762 : nat, i#57607 : nat, i#57657 : nat, i#57656 : nat} {{0xFD} {`%`_u32{i#57607}(22):Bu32} {`%`_laneidx{i#57657}(l!`%`_labelidx{i#57656}.0):Blaneidx}} => `VEXTRACT_LANE`_instr{shape#926, `sx?#45`, laneidx#49}(`%X%`_shape{lanetype#7999, dim#7999, i#57665}(`I8`_lanetype, `%`_dim{i#57672}(16)), ?(`U`_sx), `%`_laneidx{i#57763}(l!`%`_labelidx{i#57762}.0)) + 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{shape#928 : shape, laneidx#51 : laneidx, lanetype#8011 : lanetype, dim#8011 : dim, i#57845 : nat, i#57852 : nat, i#57899 : nat, l : labelidx, i#57898 : nat, i#57787 : nat, i#57837 : nat, i#57836 : nat} {{0xFD} {`%`_u32{i#57787}(23):Bu32} {`%`_laneidx{i#57837}(l!`%`_labelidx{i#57836}.0):Blaneidx}} => `VREPLACE_LANE`_instr{shape#928, laneidx#51}(`%X%`_shape{lanetype#8011, dim#8011, i#57845}(`I8`_lanetype, `%`_dim{i#57852}(16)), `%`_laneidx{i#57899}(l!`%`_labelidx{i#57898}.0)) + 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{shape#930 : shape, `sx?#47` : sx?, laneidx#53 : laneidx, lanetype#8023 : lanetype, dim#8023 : dim, i#57981 : nat, i#57988 : nat, i#58079 : nat, l : labelidx, i#58078 : nat, i#57923 : nat, i#57973 : nat, i#57972 : nat} {{0xFD} {`%`_u32{i#57923}(24):Bu32} {`%`_laneidx{i#57973}(l!`%`_labelidx{i#57972}.0):Blaneidx}} => `VEXTRACT_LANE`_instr{shape#930, `sx?#47`, laneidx#53}(`%X%`_shape{lanetype#8023, dim#8023, i#57981}(`I16`_lanetype, `%`_dim{i#57988}(8)), ?(`S`_sx), `%`_laneidx{i#58079}(l!`%`_labelidx{i#58078}.0)) + 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{shape#932 : shape, `sx?#49` : sx?, laneidx#55 : laneidx, lanetype#8035 : lanetype, dim#8035 : dim, i#58161 : nat, i#58168 : nat, i#58259 : nat, l : labelidx, i#58258 : nat, i#58103 : nat, i#58153 : nat, i#58152 : nat} {{0xFD} {`%`_u32{i#58103}(25):Bu32} {`%`_laneidx{i#58153}(l!`%`_labelidx{i#58152}.0):Blaneidx}} => `VEXTRACT_LANE`_instr{shape#932, `sx?#49`, laneidx#55}(`%X%`_shape{lanetype#8035, dim#8035, i#58161}(`I16`_lanetype, `%`_dim{i#58168}(8)), ?(`U`_sx), `%`_laneidx{i#58259}(l!`%`_labelidx{i#58258}.0)) + 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{shape#934 : shape, laneidx#57 : laneidx, lanetype#8047 : lanetype, dim#8047 : dim, i#58341 : nat, i#58348 : nat, i#58395 : nat, l : labelidx, i#58394 : nat, i#58283 : nat, i#58333 : nat, i#58332 : nat} {{0xFD} {`%`_u32{i#58283}(26):Bu32} {`%`_laneidx{i#58333}(l!`%`_labelidx{i#58332}.0):Blaneidx}} => `VREPLACE_LANE`_instr{shape#934, laneidx#57}(`%X%`_shape{lanetype#8047, dim#8047, i#58341}(`I16`_lanetype, `%`_dim{i#58348}(8)), `%`_laneidx{i#58395}(l!`%`_labelidx{i#58394}.0)) + 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{shape#936 : shape, `sx?#51` : sx?, laneidx#59 : laneidx, lanetype#8059 : lanetype, dim#8059 : dim, i#58477 : nat, i#58484 : nat, i#58531 : nat, l : labelidx, i#58530 : nat, i#58419 : nat, i#58469 : nat, i#58468 : nat} {{0xFD} {`%`_u32{i#58419}(27):Bu32} {`%`_laneidx{i#58469}(l!`%`_labelidx{i#58468}.0):Blaneidx}} => `VEXTRACT_LANE`_instr{shape#936, `sx?#51`, laneidx#59}(`%X%`_shape{lanetype#8059, dim#8059, i#58477}(`I32`_lanetype, `%`_dim{i#58484}(4)), ?(), `%`_laneidx{i#58531}(l!`%`_labelidx{i#58530}.0)) + 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{shape#938 : shape, laneidx#61 : laneidx, lanetype#8071 : lanetype, dim#8071 : dim, i#58613 : nat, i#58620 : nat, i#58667 : nat, l : labelidx, i#58666 : nat, i#58555 : nat, i#58605 : nat, i#58604 : nat} {{0xFD} {`%`_u32{i#58555}(28):Bu32} {`%`_laneidx{i#58605}(l!`%`_labelidx{i#58604}.0):Blaneidx}} => `VREPLACE_LANE`_instr{shape#938, laneidx#61}(`%X%`_shape{lanetype#8071, dim#8071, i#58613}(`I32`_lanetype, `%`_dim{i#58620}(4)), `%`_laneidx{i#58667}(l!`%`_labelidx{i#58666}.0)) + 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{shape#940 : shape, `sx?#53` : sx?, laneidx#63 : laneidx, lanetype#8083 : lanetype, dim#8083 : dim, i#58749 : nat, i#58756 : nat, i#58803 : nat, l : labelidx, i#58802 : nat, i#58691 : nat, i#58741 : nat, i#58740 : nat} {{0xFD} {`%`_u32{i#58691}(29):Bu32} {`%`_laneidx{i#58741}(l!`%`_labelidx{i#58740}.0):Blaneidx}} => `VEXTRACT_LANE`_instr{shape#940, `sx?#53`, laneidx#63}(`%X%`_shape{lanetype#8083, dim#8083, i#58749}(`I64`_lanetype, `%`_dim{i#58756}(2)), ?(), `%`_laneidx{i#58803}(l!`%`_labelidx{i#58802}.0)) + 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{shape#942 : shape, laneidx#65 : laneidx, lanetype#8095 : lanetype, dim#8095 : dim, i#58885 : nat, i#58892 : nat, i#58939 : nat, l : labelidx, i#58938 : nat, i#58827 : nat, i#58877 : nat, i#58876 : nat} {{0xFD} {`%`_u32{i#58827}(30):Bu32} {`%`_laneidx{i#58877}(l!`%`_labelidx{i#58876}.0):Blaneidx}} => `VREPLACE_LANE`_instr{shape#942, laneidx#65}(`%X%`_shape{lanetype#8095, dim#8095, i#58885}(`I64`_lanetype, `%`_dim{i#58892}(2)), `%`_laneidx{i#58939}(l!`%`_labelidx{i#58938}.0)) + 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{shape#944 : shape, `sx?#55` : sx?, laneidx#67 : laneidx, lanetype#8107 : lanetype, dim#8107 : dim, i#59021 : nat, i#59028 : nat, i#59075 : nat, l : labelidx, i#59074 : nat, i#58963 : nat, i#59013 : nat, i#59012 : nat} {{0xFD} {`%`_u32{i#58963}(31):Bu32} {`%`_laneidx{i#59013}(l!`%`_labelidx{i#59012}.0):Blaneidx}} => `VEXTRACT_LANE`_instr{shape#944, `sx?#55`, laneidx#67}(`%X%`_shape{lanetype#8107, dim#8107, i#59021}(`F32`_lanetype, `%`_dim{i#59028}(4)), ?(), `%`_laneidx{i#59075}(l!`%`_labelidx{i#59074}.0)) + 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{shape#946 : shape, laneidx#69 : laneidx, lanetype#8119 : lanetype, dim#8119 : dim, i#59157 : nat, i#59164 : nat, i#59211 : nat, l : labelidx, i#59210 : nat, i#59099 : nat, i#59149 : nat, i#59148 : nat} {{0xFD} {`%`_u32{i#59099}(32):Bu32} {`%`_laneidx{i#59149}(l!`%`_labelidx{i#59148}.0):Blaneidx}} => `VREPLACE_LANE`_instr{shape#946, laneidx#69}(`%X%`_shape{lanetype#8119, dim#8119, i#59157}(`F32`_lanetype, `%`_dim{i#59164}(4)), `%`_laneidx{i#59211}(l!`%`_labelidx{i#59210}.0)) + 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{shape#948 : shape, `sx?#57` : sx?, laneidx#71 : laneidx, lanetype#8131 : lanetype, dim#8131 : dim, i#59293 : nat, i#59300 : nat, i#59347 : nat, l : labelidx, i#59346 : nat, i#59235 : nat, i#59285 : nat, i#59284 : nat} {{0xFD} {`%`_u32{i#59235}(33):Bu32} {`%`_laneidx{i#59285}(l!`%`_labelidx{i#59284}.0):Blaneidx}} => `VEXTRACT_LANE`_instr{shape#948, `sx?#57`, laneidx#71}(`%X%`_shape{lanetype#8131, dim#8131, i#59293}(`F64`_lanetype, `%`_dim{i#59300}(2)), ?(), `%`_laneidx{i#59347}(l!`%`_labelidx{i#59346}.0)) + 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{shape#950 : shape, laneidx#73 : laneidx, lanetype#8143 : lanetype, dim#8143 : dim, i#59429 : nat, i#59436 : nat, i#59483 : nat, l : labelidx, i#59482 : nat, i#59371 : nat, i#59421 : nat, i#59420 : nat} {{0xFD} {`%`_u32{i#59371}(34):Bu32} {`%`_laneidx{i#59421}(l!`%`_labelidx{i#59420}.0):Blaneidx}} => `VREPLACE_LANE`_instr{shape#950, laneidx#73}(`%X%`_shape{lanetype#8143, dim#8143, i#59429}(`F64`_lanetype, `%`_dim{i#59436}(2)), `%`_laneidx{i#59483}(l!`%`_labelidx{i#59482}.0)) + 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{shape#952 : shape, lanetype#8155 : lanetype, dim#8155 : dim, i#59514 : nat, i#59521 : nat, i#59507 : nat} {{0xFD} {`%`_u32{i#59507}(35):Bu32}} => `VRELOP`_instr{shape#952}(`%X%`_shape{lanetype#8155, dim#8155, i#59514}(`I8`_lanetype, `%`_dim{i#59521}(16)), `EQ`_vrelop_) + 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{shape#954 : shape, lanetype#8182 : lanetype, dim#8182 : dim, i#59596 : nat, i#59603 : nat, i#59589 : nat} {{0xFD} {`%`_u32{i#59589}(36):Bu32}} => `VRELOP`_instr{shape#954}(`%X%`_shape{lanetype#8182, dim#8182, i#59596}(`I8`_lanetype, `%`_dim{i#59603}(16)), `NE`_vrelop_) + 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{shape#956 : shape, lanetype#8209 : lanetype, dim#8209 : dim, i#59678 : nat, i#59685 : nat, sx#6659 : sx, i#59671 : nat} {{0xFD} {`%`_u32{i#59671}(37):Bu32}} => `VRELOP`_instr{shape#956}(`%X%`_shape{lanetype#8209, dim#8209, i#59678}(`I8`_lanetype, `%`_dim{i#59685}(16)), `LT`_vrelop_{sx#6659}(`S`_sx)) + 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{shape#958 : shape, lanetype#8251 : lanetype, dim#8251 : dim, i#59805 : nat, i#59812 : nat, sx#6783 : sx, i#59798 : nat} {{0xFD} {`%`_u32{i#59798}(38):Bu32}} => `VRELOP`_instr{shape#958}(`%X%`_shape{lanetype#8251, dim#8251, i#59805}(`I8`_lanetype, `%`_dim{i#59812}(16)), `LT`_vrelop_{sx#6783}(`U`_sx)) + 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{shape#960 : shape, lanetype#8293 : lanetype, dim#8293 : dim, i#59932 : nat, i#59939 : nat, sx#6907 : sx, i#59925 : nat} {{0xFD} {`%`_u32{i#59925}(39):Bu32}} => `VRELOP`_instr{shape#960}(`%X%`_shape{lanetype#8293, dim#8293, i#59932}(`I8`_lanetype, `%`_dim{i#59939}(16)), `GT`_vrelop_{sx#6907}(`S`_sx)) + 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{shape#962 : shape, lanetype#8335 : lanetype, dim#8335 : dim, i#60059 : nat, i#60066 : nat, sx#7031 : sx, i#60052 : nat} {{0xFD} {`%`_u32{i#60052}(40):Bu32}} => `VRELOP`_instr{shape#962}(`%X%`_shape{lanetype#8335, dim#8335, i#60059}(`I8`_lanetype, `%`_dim{i#60066}(16)), `GT`_vrelop_{sx#7031}(`U`_sx)) + 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{shape#964 : shape, lanetype#8377 : lanetype, dim#8377 : dim, i#60186 : nat, i#60193 : nat, sx#7155 : sx, i#60179 : nat} {{0xFD} {`%`_u32{i#60179}(41):Bu32}} => `VRELOP`_instr{shape#964}(`%X%`_shape{lanetype#8377, dim#8377, i#60186}(`I8`_lanetype, `%`_dim{i#60193}(16)), `LE`_vrelop_{sx#7155}(`S`_sx)) + 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{shape#966 : shape, lanetype#8419 : lanetype, dim#8419 : dim, i#60313 : nat, i#60320 : nat, sx#7279 : sx, i#60306 : nat} {{0xFD} {`%`_u32{i#60306}(42):Bu32}} => `VRELOP`_instr{shape#966}(`%X%`_shape{lanetype#8419, dim#8419, i#60313}(`I8`_lanetype, `%`_dim{i#60320}(16)), `LE`_vrelop_{sx#7279}(`U`_sx)) + 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{shape#968 : shape, lanetype#8461 : lanetype, dim#8461 : dim, i#60440 : nat, i#60447 : nat, sx#7403 : sx, i#60433 : nat} {{0xFD} {`%`_u32{i#60433}(43):Bu32}} => `VRELOP`_instr{shape#968}(`%X%`_shape{lanetype#8461, dim#8461, i#60440}(`I8`_lanetype, `%`_dim{i#60447}(16)), `GE`_vrelop_{sx#7403}(`S`_sx)) + 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{shape#970 : shape, lanetype#8503 : lanetype, dim#8503 : dim, i#60567 : nat, i#60574 : nat, sx#7527 : sx, i#60560 : nat} {{0xFD} {`%`_u32{i#60560}(44):Bu32}} => `VRELOP`_instr{shape#970}(`%X%`_shape{lanetype#8503, dim#8503, i#60567}(`I8`_lanetype, `%`_dim{i#60574}(16)), `GE`_vrelop_{sx#7527}(`U`_sx)) + 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{shape#972 : shape, lanetype#8545 : lanetype, dim#8545 : dim, i#60694 : nat, i#60701 : nat, i#60687 : nat} {{0xFD} {`%`_u32{i#60687}(45):Bu32}} => `VRELOP`_instr{shape#972}(`%X%`_shape{lanetype#8545, dim#8545, i#60694}(`I16`_lanetype, `%`_dim{i#60701}(8)), `EQ`_vrelop_) + 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{shape#974 : shape, lanetype#8572 : lanetype, dim#8572 : dim, i#60776 : nat, i#60783 : nat, i#60769 : nat} {{0xFD} {`%`_u32{i#60769}(46):Bu32}} => `VRELOP`_instr{shape#974}(`%X%`_shape{lanetype#8572, dim#8572, i#60776}(`I16`_lanetype, `%`_dim{i#60783}(8)), `NE`_vrelop_) + 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{shape#976 : shape, lanetype#8599 : lanetype, dim#8599 : dim, i#60858 : nat, i#60865 : nat, sx#7771 : sx, i#60851 : nat} {{0xFD} {`%`_u32{i#60851}(47):Bu32}} => `VRELOP`_instr{shape#976}(`%X%`_shape{lanetype#8599, dim#8599, i#60858}(`I16`_lanetype, `%`_dim{i#60865}(8)), `LT`_vrelop_{sx#7771}(`S`_sx)) + 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{shape#978 : shape, lanetype#8641 : lanetype, dim#8641 : dim, i#60985 : nat, i#60992 : nat, sx#7895 : sx, i#60978 : nat} {{0xFD} {`%`_u32{i#60978}(48):Bu32}} => `VRELOP`_instr{shape#978}(`%X%`_shape{lanetype#8641, dim#8641, i#60985}(`I16`_lanetype, `%`_dim{i#60992}(8)), `LT`_vrelop_{sx#7895}(`U`_sx)) + 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{shape#980 : shape, lanetype#8683 : lanetype, dim#8683 : dim, i#61112 : nat, i#61119 : nat, sx#8019 : sx, i#61105 : nat} {{0xFD} {`%`_u32{i#61105}(49):Bu32}} => `VRELOP`_instr{shape#980}(`%X%`_shape{lanetype#8683, dim#8683, i#61112}(`I16`_lanetype, `%`_dim{i#61119}(8)), `GT`_vrelop_{sx#8019}(`S`_sx)) + 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{shape#982 : shape, lanetype#8725 : lanetype, dim#8725 : dim, i#61239 : nat, i#61246 : nat, sx#8143 : sx, i#61232 : nat} {{0xFD} {`%`_u32{i#61232}(50):Bu32}} => `VRELOP`_instr{shape#982}(`%X%`_shape{lanetype#8725, dim#8725, i#61239}(`I16`_lanetype, `%`_dim{i#61246}(8)), `GT`_vrelop_{sx#8143}(`U`_sx)) + 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{shape#984 : shape, lanetype#8767 : lanetype, dim#8767 : dim, i#61366 : nat, i#61373 : nat, sx#8267 : sx, i#61359 : nat} {{0xFD} {`%`_u32{i#61359}(51):Bu32}} => `VRELOP`_instr{shape#984}(`%X%`_shape{lanetype#8767, dim#8767, i#61366}(`I16`_lanetype, `%`_dim{i#61373}(8)), `LE`_vrelop_{sx#8267}(`S`_sx)) + 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{shape#986 : shape, lanetype#8809 : lanetype, dim#8809 : dim, i#61493 : nat, i#61500 : nat, sx#8391 : sx, i#61486 : nat} {{0xFD} {`%`_u32{i#61486}(52):Bu32}} => `VRELOP`_instr{shape#986}(`%X%`_shape{lanetype#8809, dim#8809, i#61493}(`I16`_lanetype, `%`_dim{i#61500}(8)), `LE`_vrelop_{sx#8391}(`U`_sx)) + 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{shape#988 : shape, lanetype#8851 : lanetype, dim#8851 : dim, i#61620 : nat, i#61627 : nat, sx#8515 : sx, i#61613 : nat} {{0xFD} {`%`_u32{i#61613}(53):Bu32}} => `VRELOP`_instr{shape#988}(`%X%`_shape{lanetype#8851, dim#8851, i#61620}(`I16`_lanetype, `%`_dim{i#61627}(8)), `GE`_vrelop_{sx#8515}(`S`_sx)) + 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{shape#990 : shape, lanetype#8893 : lanetype, dim#8893 : dim, i#61747 : nat, i#61754 : nat, sx#8639 : sx, i#61740 : nat} {{0xFD} {`%`_u32{i#61740}(54):Bu32}} => `VRELOP`_instr{shape#990}(`%X%`_shape{lanetype#8893, dim#8893, i#61747}(`I16`_lanetype, `%`_dim{i#61754}(8)), `GE`_vrelop_{sx#8639}(`U`_sx)) + 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{shape#992 : shape, lanetype#8935 : lanetype, dim#8935 : dim, i#61874 : nat, i#61881 : nat, i#61867 : nat} {{0xFD} {`%`_u32{i#61867}(55):Bu32}} => `VRELOP`_instr{shape#992}(`%X%`_shape{lanetype#8935, dim#8935, i#61874}(`I32`_lanetype, `%`_dim{i#61881}(4)), `EQ`_vrelop_) + 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{shape#994 : shape, lanetype#8962 : lanetype, dim#8962 : dim, i#61956 : nat, i#61963 : nat, i#61949 : nat} {{0xFD} {`%`_u32{i#61949}(56):Bu32}} => `VRELOP`_instr{shape#994}(`%X%`_shape{lanetype#8962, dim#8962, i#61956}(`I32`_lanetype, `%`_dim{i#61963}(4)), `NE`_vrelop_) + 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{shape#996 : shape, lanetype#8989 : lanetype, dim#8989 : dim, i#62038 : nat, i#62045 : nat, sx#8883 : sx, i#62031 : nat} {{0xFD} {`%`_u32{i#62031}(57):Bu32}} => `VRELOP`_instr{shape#996}(`%X%`_shape{lanetype#8989, dim#8989, i#62038}(`I32`_lanetype, `%`_dim{i#62045}(4)), `LT`_vrelop_{sx#8883}(`S`_sx)) + 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{shape#998 : shape, lanetype#9031 : lanetype, dim#9031 : dim, i#62165 : nat, i#62172 : nat, sx#9007 : sx, i#62158 : nat} {{0xFD} {`%`_u32{i#62158}(58):Bu32}} => `VRELOP`_instr{shape#998}(`%X%`_shape{lanetype#9031, dim#9031, i#62165}(`I32`_lanetype, `%`_dim{i#62172}(4)), `LT`_vrelop_{sx#9007}(`U`_sx)) + 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{shape#1000 : shape, lanetype#9073 : lanetype, dim#9073 : dim, i#62292 : nat, i#62299 : nat, sx#9131 : sx, i#62285 : nat} {{0xFD} {`%`_u32{i#62285}(59):Bu32}} => `VRELOP`_instr{shape#1000}(`%X%`_shape{lanetype#9073, dim#9073, i#62292}(`I32`_lanetype, `%`_dim{i#62299}(4)), `GT`_vrelop_{sx#9131}(`S`_sx)) + 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{shape#1002 : shape, lanetype#9115 : lanetype, dim#9115 : dim, i#62419 : nat, i#62426 : nat, sx#9255 : sx, i#62412 : nat} {{0xFD} {`%`_u32{i#62412}(60):Bu32}} => `VRELOP`_instr{shape#1002}(`%X%`_shape{lanetype#9115, dim#9115, i#62419}(`I32`_lanetype, `%`_dim{i#62426}(4)), `GT`_vrelop_{sx#9255}(`U`_sx)) + 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{shape#1004 : shape, lanetype#9157 : lanetype, dim#9157 : dim, i#62546 : nat, i#62553 : nat, sx#9379 : sx, i#62539 : nat} {{0xFD} {`%`_u32{i#62539}(61):Bu32}} => `VRELOP`_instr{shape#1004}(`%X%`_shape{lanetype#9157, dim#9157, i#62546}(`I32`_lanetype, `%`_dim{i#62553}(4)), `LE`_vrelop_{sx#9379}(`S`_sx)) + 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{shape#1006 : shape, lanetype#9199 : lanetype, dim#9199 : dim, i#62673 : nat, i#62680 : nat, sx#9503 : sx, i#62666 : nat} {{0xFD} {`%`_u32{i#62666}(62):Bu32}} => `VRELOP`_instr{shape#1006}(`%X%`_shape{lanetype#9199, dim#9199, i#62673}(`I32`_lanetype, `%`_dim{i#62680}(4)), `LE`_vrelop_{sx#9503}(`U`_sx)) + 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{shape#1008 : shape, lanetype#9241 : lanetype, dim#9241 : dim, i#62800 : nat, i#62807 : nat, sx#9627 : sx, i#62793 : nat} {{0xFD} {`%`_u32{i#62793}(63):Bu32}} => `VRELOP`_instr{shape#1008}(`%X%`_shape{lanetype#9241, dim#9241, i#62800}(`I32`_lanetype, `%`_dim{i#62807}(4)), `GE`_vrelop_{sx#9627}(`S`_sx)) + 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{shape#1010 : shape, lanetype#9283 : lanetype, dim#9283 : dim, i#62927 : nat, i#62934 : nat, sx#9751 : sx, i#62920 : nat} {{0xFD} {`%`_u32{i#62920}(64):Bu32}} => `VRELOP`_instr{shape#1010}(`%X%`_shape{lanetype#9283, dim#9283, i#62927}(`I32`_lanetype, `%`_dim{i#62934}(4)), `GE`_vrelop_{sx#9751}(`U`_sx)) + 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{shape#1012 : shape, lanetype#9325 : lanetype, dim#9325 : dim, i#63054 : nat, i#63061 : nat, i#63047 : nat} {{0xFD} {`%`_u32{i#63047}(65):Bu32}} => `VRELOP`_instr{shape#1012}(`%X%`_shape{lanetype#9325, dim#9325, i#63054}(`F32`_lanetype, `%`_dim{i#63061}(4)), `EQ`_vrelop_) + 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{shape#1014 : shape, lanetype#9367 : lanetype, dim#9367 : dim, i#63151 : nat, i#63158 : nat, i#63144 : nat} {{0xFD} {`%`_u32{i#63144}(66):Bu32}} => `VRELOP`_instr{shape#1014}(`%X%`_shape{lanetype#9367, dim#9367, i#63151}(`F32`_lanetype, `%`_dim{i#63158}(4)), `NE`_vrelop_) + 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{shape#1016 : shape, lanetype#9409 : lanetype, dim#9409 : dim, i#63248 : nat, i#63255 : nat, i#63241 : nat} {{0xFD} {`%`_u32{i#63241}(67):Bu32}} => `VRELOP`_instr{shape#1016}(`%X%`_shape{lanetype#9409, dim#9409, i#63248}(`F32`_lanetype, `%`_dim{i#63255}(4)), `LT`_vrelop_) + 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{shape#1018 : shape, lanetype#9451 : lanetype, dim#9451 : dim, i#63345 : nat, i#63352 : nat, i#63338 : nat} {{0xFD} {`%`_u32{i#63338}(68):Bu32}} => `VRELOP`_instr{shape#1018}(`%X%`_shape{lanetype#9451, dim#9451, i#63345}(`F32`_lanetype, `%`_dim{i#63352}(4)), `GT`_vrelop_) + 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{shape#1020 : shape, lanetype#9493 : lanetype, dim#9493 : dim, i#63442 : nat, i#63449 : nat, i#63435 : nat} {{0xFD} {`%`_u32{i#63435}(69):Bu32}} => `VRELOP`_instr{shape#1020}(`%X%`_shape{lanetype#9493, dim#9493, i#63442}(`F32`_lanetype, `%`_dim{i#63449}(4)), `LE`_vrelop_) + 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{shape#1022 : shape, lanetype#9535 : lanetype, dim#9535 : dim, i#63539 : nat, i#63546 : nat, i#63532 : nat} {{0xFD} {`%`_u32{i#63532}(70):Bu32}} => `VRELOP`_instr{shape#1022}(`%X%`_shape{lanetype#9535, dim#9535, i#63539}(`F32`_lanetype, `%`_dim{i#63546}(4)), `GE`_vrelop_) + 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{shape#1024 : shape, lanetype#9577 : lanetype, dim#9577 : dim, i#63636 : nat, i#63643 : nat, i#63629 : nat} {{0xFD} {`%`_u32{i#63629}(71):Bu32}} => `VRELOP`_instr{shape#1024}(`%X%`_shape{lanetype#9577, dim#9577, i#63636}(`F64`_lanetype, `%`_dim{i#63643}(2)), `EQ`_vrelop_) + 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{shape#1026 : shape, lanetype#9619 : lanetype, dim#9619 : dim, i#63733 : nat, i#63740 : nat, i#63726 : nat} {{0xFD} {`%`_u32{i#63726}(72):Bu32}} => `VRELOP`_instr{shape#1026}(`%X%`_shape{lanetype#9619, dim#9619, i#63733}(`F64`_lanetype, `%`_dim{i#63740}(2)), `NE`_vrelop_) + 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{shape#1028 : shape, lanetype#9661 : lanetype, dim#9661 : dim, i#63830 : nat, i#63837 : nat, i#63823 : nat} {{0xFD} {`%`_u32{i#63823}(73):Bu32}} => `VRELOP`_instr{shape#1028}(`%X%`_shape{lanetype#9661, dim#9661, i#63830}(`F64`_lanetype, `%`_dim{i#63837}(2)), `LT`_vrelop_) + 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{shape#1030 : shape, lanetype#9703 : lanetype, dim#9703 : dim, i#63927 : nat, i#63934 : nat, i#63920 : nat} {{0xFD} {`%`_u32{i#63920}(74):Bu32}} => `VRELOP`_instr{shape#1030}(`%X%`_shape{lanetype#9703, dim#9703, i#63927}(`F64`_lanetype, `%`_dim{i#63934}(2)), `GT`_vrelop_) + 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{shape#1032 : shape, lanetype#9745 : lanetype, dim#9745 : dim, i#64024 : nat, i#64031 : nat, i#64017 : nat} {{0xFD} {`%`_u32{i#64017}(75):Bu32}} => `VRELOP`_instr{shape#1032}(`%X%`_shape{lanetype#9745, dim#9745, i#64024}(`F64`_lanetype, `%`_dim{i#64031}(2)), `LE`_vrelop_) + 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{shape#1034 : shape, lanetype#9787 : lanetype, dim#9787 : dim, i#64121 : nat, i#64128 : nat, i#64114 : nat} {{0xFD} {`%`_u32{i#64114}(76):Bu32}} => `VRELOP`_instr{shape#1034}(`%X%`_shape{lanetype#9787, dim#9787, i#64121}(`F64`_lanetype, `%`_dim{i#64128}(2)), `GE`_vrelop_) + 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{vectype#259 : vectype, vvunop#7 : vvunop, i#64211 : nat} {{0xFD} {`%`_u32{i#64211}(77):Bu32}} => `VVUNOP`_instr{vectype#259, vvunop#7}(`V128`_vectype, `NOT`_vvunop) + 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{vectype#261 : vectype, vvbinop#7 : vvbinop, i#64236 : nat} {{0xFD} {`%`_u32{i#64236}(78):Bu32}} => `VVBINOP`_instr{vectype#261, vvbinop#7}(`V128`_vectype, `AND`_vvbinop) + 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{vectype#263 : vectype, vvbinop#9 : vvbinop, i#64261 : nat} {{0xFD} {`%`_u32{i#64261}(79):Bu32}} => `VVBINOP`_instr{vectype#263, vvbinop#9}(`V128`_vectype, `ANDNOT`_vvbinop) + 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{vectype#265 : vectype, vvbinop#11 : vvbinop, i#64286 : nat} {{0xFD} {`%`_u32{i#64286}(80):Bu32}} => `VVBINOP`_instr{vectype#265, vvbinop#11}(`V128`_vectype, `OR`_vvbinop) + 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{vectype#267 : vectype, vvbinop#13 : vvbinop, i#64311 : nat} {{0xFD} {`%`_u32{i#64311}(81):Bu32}} => `VVBINOP`_instr{vectype#267, vvbinop#13}(`V128`_vectype, `XOR`_vvbinop) + 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{vectype#269 : vectype, vvternop#7 : vvternop, i#64336 : nat} {{0xFD} {`%`_u32{i#64336}(82):Bu32}} => `VVTERNOP`_instr{vectype#269, vvternop#7}(`V128`_vectype, `BITSELECT`_vvternop) + 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{vectype#271 : vectype, vvtestop#7 : vvtestop, i#64361 : nat} {{0xFD} {`%`_u32{i#64361}(83):Bu32}} => `VVTESTOP`_instr{vectype#271, vvtestop#7}(`V128`_vectype, `ANY_TRUE`_vvtestop) + 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{shape#1036 : shape, lanetype#9829 : lanetype, dim#9829 : dim, i#64393 : nat, i#64400 : nat, i#64386 : nat} {{0xFD} {`%`_u32{i#64386}(96):Bu32}} => `VUNOP`_instr{shape#1036}(`%X%`_shape{lanetype#9829, dim#9829, i#64393}(`I8`_lanetype, `%`_dim{i#64400}(16)), `ABS`_vunop_) + 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{shape#1038 : shape, lanetype#9856 : lanetype, dim#9856 : dim, i#64475 : nat, i#64482 : nat, i#64468 : nat} {{0xFD} {`%`_u32{i#64468}(97):Bu32}} => `VUNOP`_instr{shape#1038}(`%X%`_shape{lanetype#9856, dim#9856, i#64475}(`I8`_lanetype, `%`_dim{i#64482}(16)), `NEG`_vunop_) + 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{shape#1040 : shape, lanetype#9883 : lanetype, dim#9883 : dim, i#64557 : nat, i#64564 : nat, i#64550 : nat} {{0xFD} {`%`_u32{i#64550}(98):Bu32}} => `VUNOP`_instr{shape#1040}(`%X%`_shape{lanetype#9883, dim#9883, i#64557}(`I8`_lanetype, `%`_dim{i#64564}(16)), `POPCNT`_vunop_) + 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{shape#1042 : shape, lanetype#9910 : lanetype, dim#9910 : dim, i#64639 : nat, i#64646 : nat, i#64632 : nat} {{0xFD} {`%`_u32{i#64632}(99):Bu32}} => `VTESTOP`_instr{shape#1042}(`%X%`_shape{lanetype#9910, dim#9910, i#64639}(`I8`_lanetype, `%`_dim{i#64646}(16)), `ALL_TRUE`_vtestop_) + 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{ishape#13 : ishape, shape#1054 : shape, Jnn#228 : Jnn, lanetype#9937 : lanetype, dim#9937 : dim, i#64721 : nat, i#64728 : nat, i#64714 : nat} {{0xFD} {`%`_u32{i#64714}(100):Bu32}} => `VBITMASK`_instr{ishape#13}(`%`_ishape{shape#1054, Jnn#228}(`%X%`_shape{lanetype#9937, dim#9937, i#64721}(`I8`_lanetype, `%`_dim{i#64728}(16)))) + 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{ishape_1#25 : ishape, ishape_2#25 : ishape, sx#9753 : sx, shape#1056 : shape, Jnn#229 : Jnn, shape#1057 : shape, Jnn#230 : Jnn, shape#1058 : shape, Jnn#231 : Jnn, shape#1069 : shape, Jnn#235 : Jnn, lanetype#9949 : lanetype, dim#9949 : dim, i#64758 : nat, i#64765 : nat, shape#1081 : shape, Jnn#239 : Jnn, lanetype#9961 : lanetype, dim#9961 : dim, i#64770 : nat, i#64777 : nat, i#64751 : nat} {{0xFD} {`%`_u32{i#64751}(101):Bu32}} => `VNARROW`_instr{ishape_1#25, ishape_2#25, sx#9753, shape#1056, Jnn#229, shape#1057, Jnn#230, shape#1058, Jnn#231}(`%`_ishape{shape#1069, Jnn#235}(`%X%`_shape{lanetype#9949, dim#9949, i#64758}(`I8`_lanetype, `%`_dim{i#64765}(16))), `%`_ishape{shape#1081, Jnn#239}(`%X%`_shape{lanetype#9961, dim#9961, i#64770}(`I16`_lanetype, `%`_dim{i#64777}(8))), `S`_sx) + 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{ishape_1#27 : ishape, ishape_2#27 : ishape, sx#9755 : sx, shape#1083 : shape, Jnn#240 : Jnn, shape#1084 : shape, Jnn#241 : Jnn, shape#1085 : shape, Jnn#242 : Jnn, shape#1096 : shape, Jnn#246 : Jnn, lanetype#9973 : lanetype, dim#9973 : dim, i#64807 : nat, i#64814 : nat, shape#1108 : shape, Jnn#250 : Jnn, lanetype#9985 : lanetype, dim#9985 : dim, i#64819 : nat, i#64826 : nat, i#64800 : nat} {{0xFD} {`%`_u32{i#64800}(102):Bu32}} => `VNARROW`_instr{ishape_1#27, ishape_2#27, sx#9755, shape#1083, Jnn#240, shape#1084, Jnn#241, shape#1085, Jnn#242}(`%`_ishape{shape#1096, Jnn#246}(`%X%`_shape{lanetype#9973, dim#9973, i#64807}(`I8`_lanetype, `%`_dim{i#64814}(16))), `%`_ishape{shape#1108, Jnn#250}(`%X%`_shape{lanetype#9985, dim#9985, i#64819}(`I16`_lanetype, `%`_dim{i#64826}(8))), `U`_sx) + 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{ishape#15 : ishape, shape#1120 : shape, Jnn#254 : Jnn, lanetype#9997 : lanetype, dim#9997 : dim, i#64856 : nat, i#64863 : nat, i#64849 : nat} {{0xFD} {`%`_u32{i#64849}(107):Bu32}} => `VSHIFTOP`_instr{ishape#15}(`%`_ishape{shape#1120, Jnn#254}(`%X%`_shape{lanetype#9997, dim#9997, i#64856}(`I8`_lanetype, `%`_dim{i#64863}(16))), `SHL`_vshiftop_) + 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{ishape#17 : ishape, shape#1147 : shape, Jnn#258 : Jnn, lanetype#10054 : lanetype, dim#10054 : dim, i#64968 : nat, i#64975 : nat, sx#9804 : sx, i#64961 : nat} {{0xFD} {`%`_u32{i#64961}(108):Bu32}} => `VSHIFTOP`_instr{ishape#17}(`%`_ishape{shape#1147, Jnn#258}(`%X%`_shape{lanetype#10054, dim#10054, i#64968}(`I8`_lanetype, `%`_dim{i#64975}(16))), `SHR`_vshiftop_{sx#9804}(`S`_sx)) + 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{ishape#19 : ishape, shape#1189 : shape, Jnn#262 : Jnn, lanetype#10156 : lanetype, dim#10156 : dim, i#65155 : nat, i#65162 : nat, sx#9838 : sx, i#65148 : nat} {{0xFD} {`%`_u32{i#65148}(109):Bu32}} => `VSHIFTOP`_instr{ishape#19}(`%`_ishape{shape#1189, Jnn#262}(`%X%`_shape{lanetype#10156, dim#10156, i#65155}(`I8`_lanetype, `%`_dim{i#65162}(16))), `SHR`_vshiftop_{sx#9838}(`U`_sx)) + 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{shape#1221 : shape, lanetype#10258 : lanetype, dim#10258 : dim, i#65342 : nat, i#65349 : nat, i#65335 : nat} {{0xFD} {`%`_u32{i#65335}(110):Bu32}} => `VBINOP`_instr{shape#1221}(`%X%`_shape{lanetype#10258, dim#10258, i#65342}(`I8`_lanetype, `%`_dim{i#65349}(16)), `ADD`_vbinop_) + 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{shape#1223 : shape, lanetype#10285 : lanetype, dim#10285 : dim, i#65424 : nat, i#65431 : nat, sx#10022 : sx, i#65417 : nat} {{0xFD} {`%`_u32{i#65417}(111):Bu32}} => `VBINOP`_instr{shape#1223}(`%X%`_shape{lanetype#10285, dim#10285, i#65424}(`I8`_lanetype, `%`_dim{i#65431}(16)), `ADD_SAT`_vbinop_{sx#10022}(`S`_sx)) + 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{shape#1225 : shape, lanetype#10327 : lanetype, dim#10327 : dim, i#65551 : nat, i#65558 : nat, sx#10146 : sx, i#65544 : nat} {{0xFD} {`%`_u32{i#65544}(112):Bu32}} => `VBINOP`_instr{shape#1225}(`%X%`_shape{lanetype#10327, dim#10327, i#65551}(`I8`_lanetype, `%`_dim{i#65558}(16)), `ADD_SAT`_vbinop_{sx#10146}(`U`_sx)) + 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{shape#1227 : shape, lanetype#10369 : lanetype, dim#10369 : dim, i#65678 : nat, i#65685 : nat, i#65671 : nat} {{0xFD} {`%`_u32{i#65671}(113):Bu32}} => `VBINOP`_instr{shape#1227}(`%X%`_shape{lanetype#10369, dim#10369, i#65678}(`I8`_lanetype, `%`_dim{i#65685}(16)), `SUB`_vbinop_) + 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{shape#1229 : shape, lanetype#10396 : lanetype, dim#10396 : dim, i#65760 : nat, i#65767 : nat, sx#10330 : sx, i#65753 : nat} {{0xFD} {`%`_u32{i#65753}(114):Bu32}} => `VBINOP`_instr{shape#1229}(`%X%`_shape{lanetype#10396, dim#10396, i#65760}(`I8`_lanetype, `%`_dim{i#65767}(16)), `SUB_SAT`_vbinop_{sx#10330}(`S`_sx)) + 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{shape#1231 : shape, lanetype#10438 : lanetype, dim#10438 : dim, i#65887 : nat, i#65894 : nat, sx#10454 : sx, i#65880 : nat} {{0xFD} {`%`_u32{i#65880}(115):Bu32}} => `VBINOP`_instr{shape#1231}(`%X%`_shape{lanetype#10438, dim#10438, i#65887}(`I8`_lanetype, `%`_dim{i#65894}(16)), `SUB_SAT`_vbinop_{sx#10454}(`U`_sx)) + 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{shape#1233 : shape, lanetype#10480 : lanetype, dim#10480 : dim, i#66014 : nat, i#66021 : nat, sx#10578 : sx, i#66007 : nat} {{0xFD} {`%`_u32{i#66007}(118):Bu32}} => `VBINOP`_instr{shape#1233}(`%X%`_shape{lanetype#10480, dim#10480, i#66014}(`I8`_lanetype, `%`_dim{i#66021}(16)), `MIN`_vbinop_{sx#10578}(`S`_sx)) + 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{shape#1235 : shape, lanetype#10522 : lanetype, dim#10522 : dim, i#66141 : nat, i#66148 : nat, sx#10702 : sx, i#66134 : nat} {{0xFD} {`%`_u32{i#66134}(119):Bu32}} => `VBINOP`_instr{shape#1235}(`%X%`_shape{lanetype#10522, dim#10522, i#66141}(`I8`_lanetype, `%`_dim{i#66148}(16)), `MIN`_vbinop_{sx#10702}(`U`_sx)) + 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{shape#1237 : shape, lanetype#10564 : lanetype, dim#10564 : dim, i#66268 : nat, i#66275 : nat, sx#10826 : sx, i#66261 : nat} {{0xFD} {`%`_u32{i#66261}(120):Bu32}} => `VBINOP`_instr{shape#1237}(`%X%`_shape{lanetype#10564, dim#10564, i#66268}(`I8`_lanetype, `%`_dim{i#66275}(16)), `MAX`_vbinop_{sx#10826}(`S`_sx)) + 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{shape#1239 : shape, lanetype#10606 : lanetype, dim#10606 : dim, i#66395 : nat, i#66402 : nat, sx#10950 : sx, i#66388 : nat} {{0xFD} {`%`_u32{i#66388}(121):Bu32}} => `VBINOP`_instr{shape#1239}(`%X%`_shape{lanetype#10606, dim#10606, i#66395}(`I8`_lanetype, `%`_dim{i#66402}(16)), `MAX`_vbinop_{sx#10950}(`U`_sx)) + 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{shape#1241 : shape, lanetype#10648 : lanetype, dim#10648 : dim, i#66522 : nat, i#66529 : nat, i#66515 : nat} {{0xFD} {`%`_u32{i#66515}(123):Bu32}} => `VBINOP`_instr{shape#1241}(`%X%`_shape{lanetype#10648, dim#10648, i#66522}(`I8`_lanetype, `%`_dim{i#66529}(16)), `AVGRU`_vbinop_) + 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{ishape_1#29 : ishape, ishape_2#29 : ishape, shape#1253 : shape, Jnn#266 : Jnn, lanetype#10690 : lanetype, dim#10690 : dim, i#66649 : nat, i#66656 : nat, shape#1265 : shape, Jnn#270 : Jnn, lanetype#10702 : lanetype, dim#10702 : dim, i#66661 : nat, i#66668 : nat, sx#11104 : sx, i#66642 : nat} {{0xFD} {`%`_u32{i#66642}(124):Bu32}} => `VEXTUNOP`_instr{ishape_1#29, ishape_2#29}(`%`_ishape{shape#1253, Jnn#266}(`%X%`_shape{lanetype#10690, dim#10690, i#66649}(`I16`_lanetype, `%`_dim{i#66656}(8))), `%`_ishape{shape#1265, Jnn#270}(`%X%`_shape{lanetype#10702, dim#10702, i#66661}(`I8`_lanetype, `%`_dim{i#66668}(16))), `EXTADD_PAIRWISE`_vextunop__{sx#11104}(`S`_sx)) + 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{ishape_1#31 : ishape, ishape_2#31 : ishape, shape#1368 : shape, Jnn#274 : Jnn, lanetype#10925 : lanetype, dim#10925 : dim, i#67029 : nat, i#67036 : nat, shape#1380 : shape, Jnn#278 : Jnn, lanetype#10937 : lanetype, dim#10937 : dim, i#67041 : nat, i#67048 : nat, sx#11138 : sx, i#67022 : nat} {{0xFD} {`%`_u32{i#67022}(125):Bu32}} => `VEXTUNOP`_instr{ishape_1#31, ishape_2#31}(`%`_ishape{shape#1368, Jnn#274}(`%X%`_shape{lanetype#10925, dim#10925, i#67029}(`I16`_lanetype, `%`_dim{i#67036}(8))), `%`_ishape{shape#1380, Jnn#278}(`%X%`_shape{lanetype#10937, dim#10937, i#67041}(`I8`_lanetype, `%`_dim{i#67048}(16))), `EXTADD_PAIRWISE`_vextunop__{sx#11138}(`U`_sx)) + 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{shape#1473 : shape, lanetype#11160 : lanetype, dim#11160 : dim, i#67409 : nat, i#67416 : nat, i#67402 : nat} {{0xFD} {`%`_u32{i#67402}(128):Bu32}} => `VUNOP`_instr{shape#1473}(`%X%`_shape{lanetype#11160, dim#11160, i#67409}(`I16`_lanetype, `%`_dim{i#67416}(8)), `ABS`_vunop_) + 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{shape#1475 : shape, lanetype#11187 : lanetype, dim#11187 : dim, i#67491 : nat, i#67498 : nat, i#67484 : nat} {{0xFD} {`%`_u32{i#67484}(129):Bu32}} => `VUNOP`_instr{shape#1475}(`%X%`_shape{lanetype#11187, dim#11187, i#67491}(`I16`_lanetype, `%`_dim{i#67498}(8)), `NEG`_vunop_) + 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{shape#1477 : shape, lanetype#11214 : lanetype, dim#11214 : dim, i#67573 : nat, i#67580 : nat, i#67566 : nat} {{0xFD} {`%`_u32{i#67566}(130):Bu32}} => `VBINOP`_instr{shape#1477}(`%X%`_shape{lanetype#11214, dim#11214, i#67573}(`I16`_lanetype, `%`_dim{i#67580}(8)), `Q15MULR_SATS`_vbinop_) + 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{shape#1479 : shape, lanetype#11256 : lanetype, dim#11256 : dim, i#67700 : nat, i#67707 : nat, i#67693 : nat} {{0xFD} {`%`_u32{i#67693}(142):Bu32}} => `VBINOP`_instr{shape#1479}(`%X%`_shape{lanetype#11256, dim#11256, i#67700}(`I16`_lanetype, `%`_dim{i#67707}(8)), `ADD`_vbinop_) + 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{shape#1481 : shape, lanetype#11283 : lanetype, dim#11283 : dim, i#67782 : nat, i#67789 : nat, sx#11442 : sx, i#67775 : nat} {{0xFD} {`%`_u32{i#67775}(143):Bu32}} => `VBINOP`_instr{shape#1481}(`%X%`_shape{lanetype#11283, dim#11283, i#67782}(`I16`_lanetype, `%`_dim{i#67789}(8)), `ADD_SAT`_vbinop_{sx#11442}(`S`_sx)) + 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{shape#1483 : shape, lanetype#11325 : lanetype, dim#11325 : dim, i#67909 : nat, i#67916 : nat, sx#11566 : sx, i#67902 : nat} {{0xFD} {`%`_u32{i#67902}(144):Bu32}} => `VBINOP`_instr{shape#1483}(`%X%`_shape{lanetype#11325, dim#11325, i#67909}(`I16`_lanetype, `%`_dim{i#67916}(8)), `ADD_SAT`_vbinop_{sx#11566}(`U`_sx)) + 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{shape#1485 : shape, lanetype#11367 : lanetype, dim#11367 : dim, i#68036 : nat, i#68043 : nat, i#68029 : nat} {{0xFD} {`%`_u32{i#68029}(145):Bu32}} => `VBINOP`_instr{shape#1485}(`%X%`_shape{lanetype#11367, dim#11367, i#68036}(`I16`_lanetype, `%`_dim{i#68043}(8)), `SUB`_vbinop_) + 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{shape#1487 : shape, lanetype#11394 : lanetype, dim#11394 : dim, i#68118 : nat, i#68125 : nat, sx#11750 : sx, i#68111 : nat} {{0xFD} {`%`_u32{i#68111}(146):Bu32}} => `VBINOP`_instr{shape#1487}(`%X%`_shape{lanetype#11394, dim#11394, i#68118}(`I16`_lanetype, `%`_dim{i#68125}(8)), `SUB_SAT`_vbinop_{sx#11750}(`S`_sx)) + 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{shape#1489 : shape, lanetype#11436 : lanetype, dim#11436 : dim, i#68245 : nat, i#68252 : nat, sx#11874 : sx, i#68238 : nat} {{0xFD} {`%`_u32{i#68238}(147):Bu32}} => `VBINOP`_instr{shape#1489}(`%X%`_shape{lanetype#11436, dim#11436, i#68245}(`I16`_lanetype, `%`_dim{i#68252}(8)), `SUB_SAT`_vbinop_{sx#11874}(`U`_sx)) + 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{shape#1491 : shape, lanetype#11478 : lanetype, dim#11478 : dim, i#68372 : nat, i#68379 : nat, i#68365 : nat} {{0xFD} {`%`_u32{i#68365}(149):Bu32}} => `VBINOP`_instr{shape#1491}(`%X%`_shape{lanetype#11478, dim#11478, i#68372}(`I16`_lanetype, `%`_dim{i#68379}(8)), `MUL`_vbinop_) + 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{shape#1493 : shape, lanetype#11505 : lanetype, dim#11505 : dim, i#68454 : nat, i#68461 : nat, sx#12058 : sx, i#68447 : nat} {{0xFD} {`%`_u32{i#68447}(150):Bu32}} => `VBINOP`_instr{shape#1493}(`%X%`_shape{lanetype#11505, dim#11505, i#68454}(`I16`_lanetype, `%`_dim{i#68461}(8)), `MIN`_vbinop_{sx#12058}(`S`_sx)) + 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{shape#1495 : shape, lanetype#11547 : lanetype, dim#11547 : dim, i#68581 : nat, i#68588 : nat, sx#12182 : sx, i#68574 : nat} {{0xFD} {`%`_u32{i#68574}(151):Bu32}} => `VBINOP`_instr{shape#1495}(`%X%`_shape{lanetype#11547, dim#11547, i#68581}(`I16`_lanetype, `%`_dim{i#68588}(8)), `MIN`_vbinop_{sx#12182}(`U`_sx)) + 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{shape#1497 : shape, lanetype#11589 : lanetype, dim#11589 : dim, i#68708 : nat, i#68715 : nat, sx#12306 : sx, i#68701 : nat} {{0xFD} {`%`_u32{i#68701}(152):Bu32}} => `VBINOP`_instr{shape#1497}(`%X%`_shape{lanetype#11589, dim#11589, i#68708}(`I16`_lanetype, `%`_dim{i#68715}(8)), `MAX`_vbinop_{sx#12306}(`S`_sx)) + 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{shape#1499 : shape, lanetype#11631 : lanetype, dim#11631 : dim, i#68835 : nat, i#68842 : nat, sx#12430 : sx, i#68828 : nat} {{0xFD} {`%`_u32{i#68828}(153):Bu32}} => `VBINOP`_instr{shape#1499}(`%X%`_shape{lanetype#11631, dim#11631, i#68835}(`I16`_lanetype, `%`_dim{i#68842}(8)), `MAX`_vbinop_{sx#12430}(`U`_sx)) + 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{shape#1501 : shape, lanetype#11673 : lanetype, dim#11673 : dim, i#68962 : nat, i#68969 : nat, i#68955 : nat} {{0xFD} {`%`_u32{i#68955}(155):Bu32}} => `VBINOP`_instr{shape#1501}(`%X%`_shape{lanetype#11673, dim#11673, i#68962}(`I16`_lanetype, `%`_dim{i#68969}(8)), `AVGRU`_vbinop_) + 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{shape#1503 : shape, lanetype#11715 : lanetype, dim#11715 : dim, i#69089 : nat, i#69096 : nat, i#69082 : nat} {{0xFD} {`%`_u32{i#69082}(273):Bu32}} => `VBINOP`_instr{shape#1503}(`%X%`_shape{lanetype#11715, dim#11715, i#69089}(`I16`_lanetype, `%`_dim{i#69096}(8)), `RELAXED_Q15MULRS`_vbinop_) + 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{shape#1505 : shape, lanetype#11757 : lanetype, dim#11757 : dim, i#69216 : nat, i#69223 : nat, i#69209 : nat} {{0xFD} {`%`_u32{i#69209}(131):Bu32}} => `VTESTOP`_instr{shape#1505}(`%X%`_shape{lanetype#11757, dim#11757, i#69216}(`I16`_lanetype, `%`_dim{i#69223}(8)), `ALL_TRUE`_vtestop_) + 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{ishape#21 : ishape, shape#1517 : shape, Jnn#282 : Jnn, lanetype#11784 : lanetype, dim#11784 : dim, i#69298 : nat, i#69305 : nat, i#69291 : nat} {{0xFD} {`%`_u32{i#69291}(132):Bu32}} => `VBITMASK`_instr{ishape#21}(`%`_ishape{shape#1517, Jnn#282}(`%X%`_shape{lanetype#11784, dim#11784, i#69298}(`I16`_lanetype, `%`_dim{i#69305}(8)))) + 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{ishape_1#33 : ishape, ishape_2#33 : ishape, sx#12672 : sx, shape#1519 : shape, Jnn#283 : Jnn, shape#1520 : shape, Jnn#284 : Jnn, shape#1521 : shape, Jnn#285 : Jnn, shape#1532 : shape, Jnn#289 : Jnn, lanetype#11796 : lanetype, dim#11796 : dim, i#69335 : nat, i#69342 : nat, shape#1544 : shape, Jnn#293 : Jnn, lanetype#11808 : lanetype, dim#11808 : dim, i#69347 : nat, i#69354 : nat, i#69328 : nat} {{0xFD} {`%`_u32{i#69328}(133):Bu32}} => `VNARROW`_instr{ishape_1#33, ishape_2#33, sx#12672, shape#1519, Jnn#283, shape#1520, Jnn#284, shape#1521, Jnn#285}(`%`_ishape{shape#1532, Jnn#289}(`%X%`_shape{lanetype#11796, dim#11796, i#69335}(`I16`_lanetype, `%`_dim{i#69342}(8))), `%`_ishape{shape#1544, Jnn#293}(`%X%`_shape{lanetype#11808, dim#11808, i#69347}(`I32`_lanetype, `%`_dim{i#69354}(4))), `S`_sx) + 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{ishape_1#35 : ishape, ishape_2#35 : ishape, sx#12674 : sx, shape#1546 : shape, Jnn#294 : Jnn, shape#1547 : shape, Jnn#295 : Jnn, shape#1548 : shape, Jnn#296 : Jnn, shape#1559 : shape, Jnn#300 : Jnn, lanetype#11820 : lanetype, dim#11820 : dim, i#69384 : nat, i#69391 : nat, shape#1571 : shape, Jnn#304 : Jnn, lanetype#11832 : lanetype, dim#11832 : dim, i#69396 : nat, i#69403 : nat, i#69377 : nat} {{0xFD} {`%`_u32{i#69377}(134):Bu32}} => `VNARROW`_instr{ishape_1#35, ishape_2#35, sx#12674, shape#1546, Jnn#294, shape#1547, Jnn#295, shape#1548, Jnn#296}(`%`_ishape{shape#1559, Jnn#300}(`%X%`_shape{lanetype#11820, dim#11820, i#69384}(`I16`_lanetype, `%`_dim{i#69391}(8))), `%`_ishape{shape#1571, Jnn#304}(`%X%`_shape{lanetype#11832, dim#11832, i#69396}(`I32`_lanetype, `%`_dim{i#69403}(4))), `U`_sx) + 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{shape_1#7 : shape, shape_2#7 : shape, lanetype#11844 : lanetype, dim#11844 : dim, i#69433 : nat, i#69440 : nat, lanetype#11856 : lanetype, dim#11856 : dim, i#69445 : nat, i#69452 : nat, half#56 : half, sx#12708 : sx, i#69426 : nat} {{0xFD} {`%`_u32{i#69426}(135):Bu32}} => `VCVTOP`_instr{shape_1#7, shape_2#7}(`%X%`_shape{lanetype#11844, dim#11844, i#69433}(`I16`_lanetype, `%`_dim{i#69440}(8)), `%X%`_shape{lanetype#11856, dim#11856, i#69445}(`I8`_lanetype, `%`_dim{i#69452}(16)), `EXTEND`_vcvtop__{half#56, sx#12708}(`LOW`_half, `S`_sx)) + 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{shape_1#9 : shape, shape_2#9 : shape, lanetype#11959 : lanetype, dim#11959 : dim, i#69693 : nat, i#69700 : nat, lanetype#11971 : lanetype, dim#11971 : dim, i#69705 : nat, i#69712 : nat, half#90 : half, sx#12742 : sx, i#69686 : nat} {{0xFD} {`%`_u32{i#69686}(136):Bu32}} => `VCVTOP`_instr{shape_1#9, shape_2#9}(`%X%`_shape{lanetype#11959, dim#11959, i#69693}(`I16`_lanetype, `%`_dim{i#69700}(8)), `%X%`_shape{lanetype#11971, dim#11971, i#69705}(`I8`_lanetype, `%`_dim{i#69712}(16)), `EXTEND`_vcvtop__{half#90, sx#12742}(`HIGH`_half, `S`_sx)) + 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{shape_1#11 : shape, shape_2#11 : shape, lanetype#12074 : lanetype, dim#12074 : dim, i#69953 : nat, i#69960 : nat, lanetype#12086 : lanetype, dim#12086 : dim, i#69965 : nat, i#69972 : nat, half#124 : half, sx#12776 : sx, i#69946 : nat} {{0xFD} {`%`_u32{i#69946}(137):Bu32}} => `VCVTOP`_instr{shape_1#11, shape_2#11}(`%X%`_shape{lanetype#12074, dim#12074, i#69953}(`I16`_lanetype, `%`_dim{i#69960}(8)), `%X%`_shape{lanetype#12086, dim#12086, i#69965}(`I8`_lanetype, `%`_dim{i#69972}(16)), `EXTEND`_vcvtop__{half#124, sx#12776}(`LOW`_half, `U`_sx)) + 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{shape_1#13 : shape, shape_2#13 : shape, lanetype#12189 : lanetype, dim#12189 : dim, i#70213 : nat, i#70220 : nat, lanetype#12201 : lanetype, dim#12201 : dim, i#70225 : nat, i#70232 : nat, half#158 : half, sx#12810 : sx, i#70206 : nat} {{0xFD} {`%`_u32{i#70206}(138):Bu32}} => `VCVTOP`_instr{shape_1#13, shape_2#13}(`%X%`_shape{lanetype#12189, dim#12189, i#70213}(`I16`_lanetype, `%`_dim{i#70220}(8)), `%X%`_shape{lanetype#12201, dim#12201, i#70225}(`I8`_lanetype, `%`_dim{i#70232}(16)), `EXTEND`_vcvtop__{half#158, sx#12810}(`HIGH`_half, `U`_sx)) + 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{ishape#23 : ishape, shape#1583 : shape, Jnn#308 : Jnn, lanetype#12304 : lanetype, dim#12304 : dim, i#70473 : nat, i#70480 : nat, i#70466 : nat} {{0xFD} {`%`_u32{i#70466}(139):Bu32}} => `VSHIFTOP`_instr{ishape#23}(`%`_ishape{shape#1583, Jnn#308}(`%X%`_shape{lanetype#12304, dim#12304, i#70473}(`I16`_lanetype, `%`_dim{i#70480}(8))), `SHL`_vshiftop_) + 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{ishape#25 : ishape, shape#1610 : shape, Jnn#312 : Jnn, lanetype#12361 : lanetype, dim#12361 : dim, i#70585 : nat, i#70592 : nat, sx#12859 : sx, i#70578 : nat} {{0xFD} {`%`_u32{i#70578}(140):Bu32}} => `VSHIFTOP`_instr{ishape#25}(`%`_ishape{shape#1610, Jnn#312}(`%X%`_shape{lanetype#12361, dim#12361, i#70585}(`I16`_lanetype, `%`_dim{i#70592}(8))), `SHR`_vshiftop_{sx#12859}(`S`_sx)) + 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{ishape#27 : ishape, shape#1652 : shape, Jnn#316 : Jnn, lanetype#12463 : lanetype, dim#12463 : dim, i#70772 : nat, i#70779 : nat, sx#12893 : sx, i#70765 : nat} {{0xFD} {`%`_u32{i#70765}(141):Bu32}} => `VSHIFTOP`_instr{ishape#27}(`%`_ishape{shape#1652, Jnn#316}(`%X%`_shape{lanetype#12463, dim#12463, i#70772}(`I16`_lanetype, `%`_dim{i#70779}(8))), `SHR`_vshiftop_{sx#12893}(`U`_sx)) + 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{ishape_1#37 : ishape, ishape_2#37 : ishape, shape#1694 : shape, Jnn#320 : Jnn, lanetype#12565 : lanetype, dim#12565 : dim, i#70959 : nat, i#70966 : nat, shape#1706 : shape, Jnn#324 : Jnn, lanetype#12577 : lanetype, dim#12577 : dim, i#70971 : nat, i#70978 : nat, half#192 : half, sx#12927 : sx, i#70952 : nat} {{0xFD} {`%`_u32{i#70952}(156):Bu32}} => `VEXTBINOP`_instr{ishape_1#37, ishape_2#37}(`%`_ishape{shape#1694, Jnn#320}(`%X%`_shape{lanetype#12565, dim#12565, i#70959}(`I16`_lanetype, `%`_dim{i#70966}(8))), `%`_ishape{shape#1706, Jnn#324}(`%X%`_shape{lanetype#12577, dim#12577, i#70971}(`I8`_lanetype, `%`_dim{i#70978}(16))), `EXTMUL`_vextbinop__{half#192, sx#12927}(`LOW`_half, `S`_sx)) + 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{ishape_1#39 : ishape, ishape_2#39 : ishape, shape#1809 : shape, Jnn#328 : Jnn, lanetype#12800 : lanetype, dim#12800 : dim, i#71339 : nat, i#71346 : nat, shape#1821 : shape, Jnn#332 : Jnn, lanetype#12812 : lanetype, dim#12812 : dim, i#71351 : nat, i#71358 : nat, half#226 : half, sx#12961 : sx, i#71332 : nat} {{0xFD} {`%`_u32{i#71332}(157):Bu32}} => `VEXTBINOP`_instr{ishape_1#39, ishape_2#39}(`%`_ishape{shape#1809, Jnn#328}(`%X%`_shape{lanetype#12800, dim#12800, i#71339}(`I16`_lanetype, `%`_dim{i#71346}(8))), `%`_ishape{shape#1821, Jnn#332}(`%X%`_shape{lanetype#12812, dim#12812, i#71351}(`I8`_lanetype, `%`_dim{i#71358}(16))), `EXTMUL`_vextbinop__{half#226, sx#12961}(`HIGH`_half, `S`_sx)) + 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{ishape_1#41 : ishape, ishape_2#41 : ishape, shape#1924 : shape, Jnn#336 : Jnn, lanetype#13035 : lanetype, dim#13035 : dim, i#71719 : nat, i#71726 : nat, shape#1936 : shape, Jnn#340 : Jnn, lanetype#13047 : lanetype, dim#13047 : dim, i#71731 : nat, i#71738 : nat, half#260 : half, sx#12995 : sx, i#71712 : nat} {{0xFD} {`%`_u32{i#71712}(158):Bu32}} => `VEXTBINOP`_instr{ishape_1#41, ishape_2#41}(`%`_ishape{shape#1924, Jnn#336}(`%X%`_shape{lanetype#13035, dim#13035, i#71719}(`I16`_lanetype, `%`_dim{i#71726}(8))), `%`_ishape{shape#1936, Jnn#340}(`%X%`_shape{lanetype#13047, dim#13047, i#71731}(`I8`_lanetype, `%`_dim{i#71738}(16))), `EXTMUL`_vextbinop__{half#260, sx#12995}(`LOW`_half, `U`_sx)) + 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{ishape_1#43 : ishape, ishape_2#43 : ishape, shape#2039 : shape, Jnn#344 : Jnn, lanetype#13270 : lanetype, dim#13270 : dim, i#72099 : nat, i#72106 : nat, shape#2051 : shape, Jnn#348 : Jnn, lanetype#13282 : lanetype, dim#13282 : dim, i#72111 : nat, i#72118 : nat, half#294 : half, sx#13029 : sx, i#72092 : nat} {{0xFD} {`%`_u32{i#72092}(159):Bu32}} => `VEXTBINOP`_instr{ishape_1#43, ishape_2#43}(`%`_ishape{shape#2039, Jnn#344}(`%X%`_shape{lanetype#13270, dim#13270, i#72099}(`I16`_lanetype, `%`_dim{i#72106}(8))), `%`_ishape{shape#2051, Jnn#348}(`%X%`_shape{lanetype#13282, dim#13282, i#72111}(`I8`_lanetype, `%`_dim{i#72118}(16))), `EXTMUL`_vextbinop__{half#294, sx#13029}(`HIGH`_half, `U`_sx)) + 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{ishape_1#45 : ishape, ishape_2#45 : ishape, shape#2154 : shape, Jnn#352 : Jnn, lanetype#13505 : lanetype, dim#13505 : dim, i#72479 : nat, i#72486 : nat, shape#2166 : shape, Jnn#356 : Jnn, lanetype#13517 : lanetype, dim#13517 : dim, i#72491 : nat, i#72498 : nat, i#72472 : nat} {{0xFD} {`%`_u32{i#72472}(274):Bu32}} => `VEXTBINOP`_instr{ishape_1#45, ishape_2#45}(`%`_ishape{shape#2154, Jnn#352}(`%X%`_shape{lanetype#13505, dim#13505, i#72479}(`I16`_lanetype, `%`_dim{i#72486}(8))), `%`_ishape{shape#2166, Jnn#356}(`%X%`_shape{lanetype#13517, dim#13517, i#72491}(`I8`_lanetype, `%`_dim{i#72498}(16))), `RELAXED_DOTS`_vextbinop__) + 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{ishape_1#47 : ishape, ishape_2#47 : ishape, shape#2269 : shape, Jnn#360 : Jnn, lanetype#13740 : lanetype, dim#13740 : dim, i#72859 : nat, i#72866 : nat, shape#2281 : shape, Jnn#364 : Jnn, lanetype#13752 : lanetype, dim#13752 : dim, i#72871 : nat, i#72878 : nat, sx#13093 : sx, i#72852 : nat} {{0xFD} {`%`_u32{i#72852}(126):Bu32}} => `VEXTUNOP`_instr{ishape_1#47, ishape_2#47}(`%`_ishape{shape#2269, Jnn#360}(`%X%`_shape{lanetype#13740, dim#13740, i#72859}(`I32`_lanetype, `%`_dim{i#72866}(4))), `%`_ishape{shape#2281, Jnn#364}(`%X%`_shape{lanetype#13752, dim#13752, i#72871}(`I16`_lanetype, `%`_dim{i#72878}(8))), `EXTADD_PAIRWISE`_vextunop__{sx#13093}(`S`_sx)) + 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{ishape_1#49 : ishape, ishape_2#49 : ishape, shape#2384 : shape, Jnn#368 : Jnn, lanetype#13975 : lanetype, dim#13975 : dim, i#73239 : nat, i#73246 : nat, shape#2396 : shape, Jnn#372 : Jnn, lanetype#13987 : lanetype, dim#13987 : dim, i#73251 : nat, i#73258 : nat, sx#13127 : sx, i#73232 : nat} {{0xFD} {`%`_u32{i#73232}(127):Bu32}} => `VEXTUNOP`_instr{ishape_1#49, ishape_2#49}(`%`_ishape{shape#2384, Jnn#368}(`%X%`_shape{lanetype#13975, dim#13975, i#73239}(`I32`_lanetype, `%`_dim{i#73246}(4))), `%`_ishape{shape#2396, Jnn#372}(`%X%`_shape{lanetype#13987, dim#13987, i#73251}(`I16`_lanetype, `%`_dim{i#73258}(8))), `EXTADD_PAIRWISE`_vextunop__{sx#13127}(`U`_sx)) + 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{shape#2489 : shape, lanetype#14210 : lanetype, dim#14210 : dim, i#73619 : nat, i#73626 : nat, i#73612 : nat} {{0xFD} {`%`_u32{i#73612}(160):Bu32}} => `VUNOP`_instr{shape#2489}(`%X%`_shape{lanetype#14210, dim#14210, i#73619}(`I32`_lanetype, `%`_dim{i#73626}(4)), `ABS`_vunop_) + 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{shape#2491 : shape, lanetype#14237 : lanetype, dim#14237 : dim, i#73701 : nat, i#73708 : nat, i#73694 : nat} {{0xFD} {`%`_u32{i#73694}(161):Bu32}} => `VUNOP`_instr{shape#2491}(`%X%`_shape{lanetype#14237, dim#14237, i#73701}(`I32`_lanetype, `%`_dim{i#73708}(4)), `NEG`_vunop_) + 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{shape#2493 : shape, lanetype#14264 : lanetype, dim#14264 : dim, i#73783 : nat, i#73790 : nat, i#73776 : nat} {{0xFD} {`%`_u32{i#73776}(163):Bu32}} => `VTESTOP`_instr{shape#2493}(`%X%`_shape{lanetype#14264, dim#14264, i#73783}(`I32`_lanetype, `%`_dim{i#73790}(4)), `ALL_TRUE`_vtestop_) + 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{ishape#29 : ishape, shape#2505 : shape, Jnn#376 : Jnn, lanetype#14291 : lanetype, dim#14291 : dim, i#73865 : nat, i#73872 : nat, i#73858 : nat} {{0xFD} {`%`_u32{i#73858}(164):Bu32}} => `VBITMASK`_instr{ishape#29}(`%`_ishape{shape#2505, Jnn#376}(`%X%`_shape{lanetype#14291, dim#14291, i#73865}(`I32`_lanetype, `%`_dim{i#73872}(4)))) + 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{shape_1#15 : shape, shape_2#15 : shape, lanetype#14303 : lanetype, dim#14303 : dim, i#73902 : nat, i#73909 : nat, lanetype#14315 : lanetype, dim#14315 : dim, i#73914 : nat, i#73921 : nat, half#358 : half, sx#13161 : sx, i#73895 : nat} {{0xFD} {`%`_u32{i#73895}(167):Bu32}} => `VCVTOP`_instr{shape_1#15, shape_2#15}(`%X%`_shape{lanetype#14303, dim#14303, i#73902}(`I32`_lanetype, `%`_dim{i#73909}(4)), `%X%`_shape{lanetype#14315, dim#14315, i#73914}(`I16`_lanetype, `%`_dim{i#73921}(8)), `EXTEND`_vcvtop__{half#358, sx#13161}(`LOW`_half, `S`_sx)) + 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{shape_1#17 : shape, shape_2#17 : shape, lanetype#14418 : lanetype, dim#14418 : dim, i#74162 : nat, i#74169 : nat, lanetype#14430 : lanetype, dim#14430 : dim, i#74174 : nat, i#74181 : nat, half#392 : half, sx#13195 : sx, i#74155 : nat} {{0xFD} {`%`_u32{i#74155}(168):Bu32}} => `VCVTOP`_instr{shape_1#17, shape_2#17}(`%X%`_shape{lanetype#14418, dim#14418, i#74162}(`I32`_lanetype, `%`_dim{i#74169}(4)), `%X%`_shape{lanetype#14430, dim#14430, i#74174}(`I16`_lanetype, `%`_dim{i#74181}(8)), `EXTEND`_vcvtop__{half#392, sx#13195}(`HIGH`_half, `S`_sx)) + 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{shape_1#19 : shape, shape_2#19 : shape, lanetype#14533 : lanetype, dim#14533 : dim, i#74422 : nat, i#74429 : nat, lanetype#14545 : lanetype, dim#14545 : dim, i#74434 : nat, i#74441 : nat, half#426 : half, sx#13229 : sx, i#74415 : nat} {{0xFD} {`%`_u32{i#74415}(169):Bu32}} => `VCVTOP`_instr{shape_1#19, shape_2#19}(`%X%`_shape{lanetype#14533, dim#14533, i#74422}(`I32`_lanetype, `%`_dim{i#74429}(4)), `%X%`_shape{lanetype#14545, dim#14545, i#74434}(`I16`_lanetype, `%`_dim{i#74441}(8)), `EXTEND`_vcvtop__{half#426, sx#13229}(`LOW`_half, `U`_sx)) + 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{shape_1#21 : shape, shape_2#21 : shape, lanetype#14648 : lanetype, dim#14648 : dim, i#74682 : nat, i#74689 : nat, lanetype#14660 : lanetype, dim#14660 : dim, i#74694 : nat, i#74701 : nat, half#460 : half, sx#13263 : sx, i#74675 : nat} {{0xFD} {`%`_u32{i#74675}(170):Bu32}} => `VCVTOP`_instr{shape_1#21, shape_2#21}(`%X%`_shape{lanetype#14648, dim#14648, i#74682}(`I32`_lanetype, `%`_dim{i#74689}(4)), `%X%`_shape{lanetype#14660, dim#14660, i#74694}(`I16`_lanetype, `%`_dim{i#74701}(8)), `EXTEND`_vcvtop__{half#460, sx#13263}(`HIGH`_half, `U`_sx)) + 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{ishape#31 : ishape, shape#2517 : shape, Jnn#380 : Jnn, lanetype#14763 : lanetype, dim#14763 : dim, i#74942 : nat, i#74949 : nat, i#74935 : nat} {{0xFD} {`%`_u32{i#74935}(171):Bu32}} => `VSHIFTOP`_instr{ishape#31}(`%`_ishape{shape#2517, Jnn#380}(`%X%`_shape{lanetype#14763, dim#14763, i#74942}(`I32`_lanetype, `%`_dim{i#74949}(4))), `SHL`_vshiftop_) + 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{ishape#33 : ishape, shape#2544 : shape, Jnn#384 : Jnn, lanetype#14820 : lanetype, dim#14820 : dim, i#75054 : nat, i#75061 : nat, sx#13297 : sx, i#75047 : nat} {{0xFD} {`%`_u32{i#75047}(172):Bu32}} => `VSHIFTOP`_instr{ishape#33}(`%`_ishape{shape#2544, Jnn#384}(`%X%`_shape{lanetype#14820, dim#14820, i#75054}(`I32`_lanetype, `%`_dim{i#75061}(4))), `SHR`_vshiftop_{sx#13297}(`S`_sx)) + 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{ishape#35 : ishape, shape#2573 : shape, Jnn#388 : Jnn, lanetype#14883 : lanetype, dim#14883 : dim, i#75176 : nat, i#75183 : nat, sx#13316 : sx, i#75169 : nat} {{0xFD} {`%`_u32{i#75169}(173):Bu32}} => `VSHIFTOP`_instr{ishape#35}(`%`_ishape{shape#2573, Jnn#388}(`%X%`_shape{lanetype#14883, dim#14883, i#75176}(`I32`_lanetype, `%`_dim{i#75183}(4))), `SHR`_vshiftop_{sx#13316}(`U`_sx)) + 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{shape#2592 : shape, lanetype#14946 : lanetype, dim#14946 : dim, i#75298 : nat, i#75305 : nat, i#75291 : nat} {{0xFD} {`%`_u32{i#75291}(174):Bu32}} => `VBINOP`_instr{shape#2592}(`%X%`_shape{lanetype#14946, dim#14946, i#75298}(`I32`_lanetype, `%`_dim{i#75305}(4)), `ADD`_vbinop_) + 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{shape#2594 : shape, lanetype#14973 : lanetype, dim#14973 : dim, i#75380 : nat, i#75387 : nat, i#75373 : nat} {{0xFD} {`%`_u32{i#75373}(177):Bu32}} => `VBINOP`_instr{shape#2594}(`%X%`_shape{lanetype#14973, dim#14973, i#75380}(`I32`_lanetype, `%`_dim{i#75387}(4)), `SUB`_vbinop_) + 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{shape#2596 : shape, lanetype#15000 : lanetype, dim#15000 : dim, i#75462 : nat, i#75469 : nat, i#75455 : nat} {{0xFD} {`%`_u32{i#75455}(181):Bu32}} => `VBINOP`_instr{shape#2596}(`%X%`_shape{lanetype#15000, dim#15000, i#75462}(`I32`_lanetype, `%`_dim{i#75469}(4)), `MUL`_vbinop_) + 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{shape#2598 : shape, lanetype#15027 : lanetype, dim#15027 : dim, i#75544 : nat, i#75551 : nat, sx#13620 : sx, i#75537 : nat} {{0xFD} {`%`_u32{i#75537}(182):Bu32}} => `VBINOP`_instr{shape#2598}(`%X%`_shape{lanetype#15027, dim#15027, i#75544}(`I32`_lanetype, `%`_dim{i#75551}(4)), `MIN`_vbinop_{sx#13620}(`S`_sx)) + 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{shape#2600 : shape, lanetype#15069 : lanetype, dim#15069 : dim, i#75671 : nat, i#75678 : nat, sx#13744 : sx, i#75664 : nat} {{0xFD} {`%`_u32{i#75664}(183):Bu32}} => `VBINOP`_instr{shape#2600}(`%X%`_shape{lanetype#15069, dim#15069, i#75671}(`I32`_lanetype, `%`_dim{i#75678}(4)), `MIN`_vbinop_{sx#13744}(`U`_sx)) + 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{shape#2602 : shape, lanetype#15111 : lanetype, dim#15111 : dim, i#75798 : nat, i#75805 : nat, sx#13868 : sx, i#75791 : nat} {{0xFD} {`%`_u32{i#75791}(184):Bu32}} => `VBINOP`_instr{shape#2602}(`%X%`_shape{lanetype#15111, dim#15111, i#75798}(`I32`_lanetype, `%`_dim{i#75805}(4)), `MAX`_vbinop_{sx#13868}(`S`_sx)) + 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{shape#2604 : shape, lanetype#15153 : lanetype, dim#15153 : dim, i#75925 : nat, i#75932 : nat, sx#13992 : sx, i#75918 : nat} {{0xFD} {`%`_u32{i#75918}(185):Bu32}} => `VBINOP`_instr{shape#2604}(`%X%`_shape{lanetype#15153, dim#15153, i#75925}(`I32`_lanetype, `%`_dim{i#75932}(4)), `MAX`_vbinop_{sx#13992}(`U`_sx)) + 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{ishape_1#51 : ishape, ishape_2#51 : ishape, shape#2616 : shape, Jnn#392 : Jnn, lanetype#15195 : lanetype, dim#15195 : dim, i#76052 : nat, i#76059 : nat, shape#2628 : shape, Jnn#396 : Jnn, lanetype#15207 : lanetype, dim#15207 : dim, i#76064 : nat, i#76071 : nat, i#76045 : nat} {{0xFD} {`%`_u32{i#76045}(186):Bu32}} => `VEXTBINOP`_instr{ishape_1#51, ishape_2#51}(`%`_ishape{shape#2616, Jnn#392}(`%X%`_shape{lanetype#15195, dim#15195, i#76052}(`I32`_lanetype, `%`_dim{i#76059}(4))), `%`_ishape{shape#2628, Jnn#396}(`%X%`_shape{lanetype#15207, dim#15207, i#76064}(`I16`_lanetype, `%`_dim{i#76071}(8))), `DOTS`_vextbinop__) + 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{ishape_1#53 : ishape, ishape_2#53 : ishape, shape#2731 : shape, Jnn#400 : Jnn, lanetype#15430 : lanetype, dim#15430 : dim, i#76432 : nat, i#76439 : nat, shape#2743 : shape, Jnn#404 : Jnn, lanetype#15442 : lanetype, dim#15442 : dim, i#76444 : nat, i#76451 : nat, half#524 : half, sx#14056 : sx, i#76425 : nat} {{0xFD} {`%`_u32{i#76425}(188):Bu32}} => `VEXTBINOP`_instr{ishape_1#53, ishape_2#53}(`%`_ishape{shape#2731, Jnn#400}(`%X%`_shape{lanetype#15430, dim#15430, i#76432}(`I32`_lanetype, `%`_dim{i#76439}(4))), `%`_ishape{shape#2743, Jnn#404}(`%X%`_shape{lanetype#15442, dim#15442, i#76444}(`I16`_lanetype, `%`_dim{i#76451}(8))), `EXTMUL`_vextbinop__{half#524, sx#14056}(`LOW`_half, `S`_sx)) + 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{ishape_1#55 : ishape, ishape_2#55 : ishape, shape#2846 : shape, Jnn#408 : Jnn, lanetype#15665 : lanetype, dim#15665 : dim, i#76812 : nat, i#76819 : nat, shape#2858 : shape, Jnn#412 : Jnn, lanetype#15677 : lanetype, dim#15677 : dim, i#76824 : nat, i#76831 : nat, half#558 : half, sx#14090 : sx, i#76805 : nat} {{0xFD} {`%`_u32{i#76805}(189):Bu32}} => `VEXTBINOP`_instr{ishape_1#55, ishape_2#55}(`%`_ishape{shape#2846, Jnn#408}(`%X%`_shape{lanetype#15665, dim#15665, i#76812}(`I32`_lanetype, `%`_dim{i#76819}(4))), `%`_ishape{shape#2858, Jnn#412}(`%X%`_shape{lanetype#15677, dim#15677, i#76824}(`I16`_lanetype, `%`_dim{i#76831}(8))), `EXTMUL`_vextbinop__{half#558, sx#14090}(`HIGH`_half, `S`_sx)) + 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{ishape_1#57 : ishape, ishape_2#57 : ishape, shape#2961 : shape, Jnn#416 : Jnn, lanetype#15900 : lanetype, dim#15900 : dim, i#77192 : nat, i#77199 : nat, shape#2973 : shape, Jnn#420 : Jnn, lanetype#15912 : lanetype, dim#15912 : dim, i#77204 : nat, i#77211 : nat, half#592 : half, sx#14124 : sx, i#77185 : nat} {{0xFD} {`%`_u32{i#77185}(190):Bu32}} => `VEXTBINOP`_instr{ishape_1#57, ishape_2#57}(`%`_ishape{shape#2961, Jnn#416}(`%X%`_shape{lanetype#15900, dim#15900, i#77192}(`I32`_lanetype, `%`_dim{i#77199}(4))), `%`_ishape{shape#2973, Jnn#420}(`%X%`_shape{lanetype#15912, dim#15912, i#77204}(`I16`_lanetype, `%`_dim{i#77211}(8))), `EXTMUL`_vextbinop__{half#592, sx#14124}(`LOW`_half, `U`_sx)) + 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{ishape_1#59 : ishape, ishape_2#59 : ishape, shape#3076 : shape, Jnn#424 : Jnn, lanetype#16135 : lanetype, dim#16135 : dim, i#77572 : nat, i#77579 : nat, shape#3088 : shape, Jnn#428 : Jnn, lanetype#16147 : lanetype, dim#16147 : dim, i#77584 : nat, i#77591 : nat, half#626 : half, sx#14158 : sx, i#77565 : nat} {{0xFD} {`%`_u32{i#77565}(191):Bu32}} => `VEXTBINOP`_instr{ishape_1#59, ishape_2#59}(`%`_ishape{shape#3076, Jnn#424}(`%X%`_shape{lanetype#16135, dim#16135, i#77572}(`I32`_lanetype, `%`_dim{i#77579}(4))), `%`_ishape{shape#3088, Jnn#428}(`%X%`_shape{lanetype#16147, dim#16147, i#77584}(`I16`_lanetype, `%`_dim{i#77591}(8))), `EXTMUL`_vextbinop__{half#626, sx#14158}(`HIGH`_half, `U`_sx)) + 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{ishape_1#61 : ishape, ishape_2#61 : ishape, shape#3191 : shape, Jnn#432 : Jnn, lanetype#16370 : lanetype, dim#16370 : dim, i#77952 : nat, i#77959 : nat, shape#3203 : shape, Jnn#436 : Jnn, lanetype#16382 : lanetype, dim#16382 : dim, i#77964 : nat, i#77971 : nat, i#77945 : nat} {{0xFD} {`%`_u32{i#77945}(275):Bu32}} => `VEXTTERNOP`_instr{ishape_1#61, ishape_2#61}(`%`_ishape{shape#3191, Jnn#432}(`%X%`_shape{lanetype#16370, dim#16370, i#77952}(`I32`_lanetype, `%`_dim{i#77959}(4))), `%`_ishape{shape#3203, Jnn#436}(`%X%`_shape{lanetype#16382, dim#16382, i#77964}(`I16`_lanetype, `%`_dim{i#77971}(8))), `RELAXED_DOT_ADDS`_vextternop__) + 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{shape#3296 : shape, lanetype#16605 : lanetype, dim#16605 : dim, i#78332 : nat, i#78339 : nat, i#78325 : nat} {{0xFD} {`%`_u32{i#78325}(192):Bu32}} => `VUNOP`_instr{shape#3296}(`%X%`_shape{lanetype#16605, dim#16605, i#78332}(`I64`_lanetype, `%`_dim{i#78339}(2)), `ABS`_vunop_) + 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{shape#3298 : shape, lanetype#16632 : lanetype, dim#16632 : dim, i#78414 : nat, i#78421 : nat, i#78407 : nat} {{0xFD} {`%`_u32{i#78407}(193):Bu32}} => `VUNOP`_instr{shape#3298}(`%X%`_shape{lanetype#16632, dim#16632, i#78414}(`I64`_lanetype, `%`_dim{i#78421}(2)), `NEG`_vunop_) + 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{shape#3300 : shape, lanetype#16659 : lanetype, dim#16659 : dim, i#78496 : nat, i#78503 : nat, i#78489 : nat} {{0xFD} {`%`_u32{i#78489}(195):Bu32}} => `VTESTOP`_instr{shape#3300}(`%X%`_shape{lanetype#16659, dim#16659, i#78496}(`I64`_lanetype, `%`_dim{i#78503}(2)), `ALL_TRUE`_vtestop_) + 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{ishape#37 : ishape, shape#3312 : shape, Jnn#440 : Jnn, lanetype#16686 : lanetype, dim#16686 : dim, i#78578 : nat, i#78585 : nat, i#78571 : nat} {{0xFD} {`%`_u32{i#78571}(196):Bu32}} => `VBITMASK`_instr{ishape#37}(`%`_ishape{shape#3312, Jnn#440}(`%X%`_shape{lanetype#16686, dim#16686, i#78578}(`I64`_lanetype, `%`_dim{i#78585}(2)))) + 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{shape_1#23 : shape, shape_2#23 : shape, lanetype#16698 : lanetype, dim#16698 : dim, i#78615 : nat, i#78622 : nat, lanetype#16710 : lanetype, dim#16710 : dim, i#78627 : nat, i#78634 : nat, half#660 : half, sx#14192 : sx, i#78608 : nat} {{0xFD} {`%`_u32{i#78608}(199):Bu32}} => `VCVTOP`_instr{shape_1#23, shape_2#23}(`%X%`_shape{lanetype#16698, dim#16698, i#78615}(`I64`_lanetype, `%`_dim{i#78622}(2)), `%X%`_shape{lanetype#16710, dim#16710, i#78627}(`I32`_lanetype, `%`_dim{i#78634}(4)), `EXTEND`_vcvtop__{half#660, sx#14192}(`LOW`_half, `S`_sx)) + 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{shape_1#25 : shape, shape_2#25 : shape, lanetype#16813 : lanetype, dim#16813 : dim, i#78875 : nat, i#78882 : nat, lanetype#16825 : lanetype, dim#16825 : dim, i#78887 : nat, i#78894 : nat, half#694 : half, sx#14226 : sx, i#78868 : nat} {{0xFD} {`%`_u32{i#78868}(200):Bu32}} => `VCVTOP`_instr{shape_1#25, shape_2#25}(`%X%`_shape{lanetype#16813, dim#16813, i#78875}(`I64`_lanetype, `%`_dim{i#78882}(2)), `%X%`_shape{lanetype#16825, dim#16825, i#78887}(`I32`_lanetype, `%`_dim{i#78894}(4)), `EXTEND`_vcvtop__{half#694, sx#14226}(`HIGH`_half, `S`_sx)) + 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{shape_1#27 : shape, shape_2#27 : shape, lanetype#16928 : lanetype, dim#16928 : dim, i#79135 : nat, i#79142 : nat, lanetype#16940 : lanetype, dim#16940 : dim, i#79147 : nat, i#79154 : nat, half#728 : half, sx#14260 : sx, i#79128 : nat} {{0xFD} {`%`_u32{i#79128}(201):Bu32}} => `VCVTOP`_instr{shape_1#27, shape_2#27}(`%X%`_shape{lanetype#16928, dim#16928, i#79135}(`I64`_lanetype, `%`_dim{i#79142}(2)), `%X%`_shape{lanetype#16940, dim#16940, i#79147}(`I32`_lanetype, `%`_dim{i#79154}(4)), `EXTEND`_vcvtop__{half#728, sx#14260}(`LOW`_half, `U`_sx)) + 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{shape_1#29 : shape, shape_2#29 : shape, lanetype#17043 : lanetype, dim#17043 : dim, i#79395 : nat, i#79402 : nat, lanetype#17055 : lanetype, dim#17055 : dim, i#79407 : nat, i#79414 : nat, half#762 : half, sx#14294 : sx, i#79388 : nat} {{0xFD} {`%`_u32{i#79388}(202):Bu32}} => `VCVTOP`_instr{shape_1#29, shape_2#29}(`%X%`_shape{lanetype#17043, dim#17043, i#79395}(`I64`_lanetype, `%`_dim{i#79402}(2)), `%X%`_shape{lanetype#17055, dim#17055, i#79407}(`I32`_lanetype, `%`_dim{i#79414}(4)), `EXTEND`_vcvtop__{half#762, sx#14294}(`HIGH`_half, `U`_sx)) + 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{ishape#39 : ishape, shape#3324 : shape, Jnn#444 : Jnn, lanetype#17158 : lanetype, dim#17158 : dim, i#79655 : nat, i#79662 : nat, i#79648 : nat} {{0xFD} {`%`_u32{i#79648}(203):Bu32}} => `VSHIFTOP`_instr{ishape#39}(`%`_ishape{shape#3324, Jnn#444}(`%X%`_shape{lanetype#17158, dim#17158, i#79655}(`I64`_lanetype, `%`_dim{i#79662}(2))), `SHL`_vshiftop_) + 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{ishape#41 : ishape, shape#3351 : shape, Jnn#448 : Jnn, lanetype#17215 : lanetype, dim#17215 : dim, i#79767 : nat, i#79774 : nat, sx#14328 : sx, i#79760 : nat} {{0xFD} {`%`_u32{i#79760}(204):Bu32}} => `VSHIFTOP`_instr{ishape#41}(`%`_ishape{shape#3351, Jnn#448}(`%X%`_shape{lanetype#17215, dim#17215, i#79767}(`I64`_lanetype, `%`_dim{i#79774}(2))), `SHR`_vshiftop_{sx#14328}(`S`_sx)) + 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{ishape#43 : ishape, shape#3380 : shape, Jnn#452 : Jnn, lanetype#17278 : lanetype, dim#17278 : dim, i#79889 : nat, i#79896 : nat, sx#14347 : sx, i#79882 : nat} {{0xFD} {`%`_u32{i#79882}(205):Bu32}} => `VSHIFTOP`_instr{ishape#43}(`%`_ishape{shape#3380, Jnn#452}(`%X%`_shape{lanetype#17278, dim#17278, i#79889}(`I64`_lanetype, `%`_dim{i#79896}(2))), `SHR`_vshiftop_{sx#14347}(`U`_sx)) + 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{shape#3399 : shape, lanetype#17341 : lanetype, dim#17341 : dim, i#80011 : nat, i#80018 : nat, i#80004 : nat} {{0xFD} {`%`_u32{i#80004}(206):Bu32}} => `VBINOP`_instr{shape#3399}(`%X%`_shape{lanetype#17341, dim#17341, i#80011}(`I64`_lanetype, `%`_dim{i#80018}(2)), `ADD`_vbinop_) + 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{shape#3401 : shape, lanetype#17368 : lanetype, dim#17368 : dim, i#80093 : nat, i#80100 : nat, i#80086 : nat} {{0xFD} {`%`_u32{i#80086}(209):Bu32}} => `VBINOP`_instr{shape#3401}(`%X%`_shape{lanetype#17368, dim#17368, i#80093}(`I64`_lanetype, `%`_dim{i#80100}(2)), `SUB`_vbinop_) + 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{shape#3403 : shape, lanetype#17395 : lanetype, dim#17395 : dim, i#80175 : nat, i#80182 : nat, i#80168 : nat} {{0xFD} {`%`_u32{i#80168}(213):Bu32}} => `VBINOP`_instr{shape#3403}(`%X%`_shape{lanetype#17395, dim#17395, i#80175}(`I64`_lanetype, `%`_dim{i#80182}(2)), `MUL`_vbinop_) + 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{shape#3405 : shape, lanetype#17422 : lanetype, dim#17422 : dim, i#80257 : nat, i#80264 : nat, i#80250 : nat} {{0xFD} {`%`_u32{i#80250}(214):Bu32}} => `VRELOP`_instr{shape#3405}(`%X%`_shape{lanetype#17422, dim#17422, i#80257}(`I64`_lanetype, `%`_dim{i#80264}(2)), `EQ`_vrelop_) + 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{shape#3407 : shape, lanetype#17449 : lanetype, dim#17449 : dim, i#80339 : nat, i#80346 : nat, i#80332 : nat} {{0xFD} {`%`_u32{i#80332}(215):Bu32}} => `VRELOP`_instr{shape#3407}(`%X%`_shape{lanetype#17449, dim#17449, i#80339}(`I64`_lanetype, `%`_dim{i#80346}(2)), `NE`_vrelop_) + 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{shape#3409 : shape, lanetype#17476 : lanetype, dim#17476 : dim, i#80421 : nat, i#80428 : nat, sx#14717 : sx, i#80414 : nat} {{0xFD} {`%`_u32{i#80414}(216):Bu32}} => `VRELOP`_instr{shape#3409}(`%X%`_shape{lanetype#17476, dim#17476, i#80421}(`I64`_lanetype, `%`_dim{i#80428}(2)), `LT`_vrelop_{sx#14717}(`S`_sx)) + 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{shape#3411 : shape, lanetype#17505 : lanetype, dim#17505 : dim, i#80509 : nat, i#80516 : nat, sx#14787 : sx, i#80502 : nat} {{0xFD} {`%`_u32{i#80502}(217):Bu32}} => `VRELOP`_instr{shape#3411}(`%X%`_shape{lanetype#17505, dim#17505, i#80509}(`I64`_lanetype, `%`_dim{i#80516}(2)), `GT`_vrelop_{sx#14787}(`S`_sx)) + 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{shape#3413 : shape, lanetype#17534 : lanetype, dim#17534 : dim, i#80597 : nat, i#80604 : nat, sx#14857 : sx, i#80590 : nat} {{0xFD} {`%`_u32{i#80590}(218):Bu32}} => `VRELOP`_instr{shape#3413}(`%X%`_shape{lanetype#17534, dim#17534, i#80597}(`I64`_lanetype, `%`_dim{i#80604}(2)), `LE`_vrelop_{sx#14857}(`S`_sx)) + 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{shape#3415 : shape, lanetype#17563 : lanetype, dim#17563 : dim, i#80685 : nat, i#80692 : nat, sx#14927 : sx, i#80678 : nat} {{0xFD} {`%`_u32{i#80678}(219):Bu32}} => `VRELOP`_instr{shape#3415}(`%X%`_shape{lanetype#17563, dim#17563, i#80685}(`I64`_lanetype, `%`_dim{i#80692}(2)), `GE`_vrelop_{sx#14927}(`S`_sx)) + 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{ishape_1#63 : ishape, ishape_2#63 : ishape, shape#3427 : shape, Jnn#456 : Jnn, lanetype#17592 : lanetype, dim#17592 : dim, i#80773 : nat, i#80780 : nat, shape#3439 : shape, Jnn#460 : Jnn, lanetype#17604 : lanetype, dim#17604 : dim, i#80785 : nat, i#80792 : nat, half#796 : half, sx#14961 : sx, i#80766 : nat} {{0xFD} {`%`_u32{i#80766}(220):Bu32}} => `VEXTBINOP`_instr{ishape_1#63, ishape_2#63}(`%`_ishape{shape#3427, Jnn#456}(`%X%`_shape{lanetype#17592, dim#17592, i#80773}(`I64`_lanetype, `%`_dim{i#80780}(2))), `%`_ishape{shape#3439, Jnn#460}(`%X%`_shape{lanetype#17604, dim#17604, i#80785}(`I32`_lanetype, `%`_dim{i#80792}(4))), `EXTMUL`_vextbinop__{half#796, sx#14961}(`LOW`_half, `S`_sx)) + 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{ishape_1#65 : ishape, ishape_2#65 : ishape, shape#3542 : shape, Jnn#464 : Jnn, lanetype#17827 : lanetype, dim#17827 : dim, i#81153 : nat, i#81160 : nat, shape#3554 : shape, Jnn#468 : Jnn, lanetype#17839 : lanetype, dim#17839 : dim, i#81165 : nat, i#81172 : nat, half#830 : half, sx#14995 : sx, i#81146 : nat} {{0xFD} {`%`_u32{i#81146}(221):Bu32}} => `VEXTBINOP`_instr{ishape_1#65, ishape_2#65}(`%`_ishape{shape#3542, Jnn#464}(`%X%`_shape{lanetype#17827, dim#17827, i#81153}(`I64`_lanetype, `%`_dim{i#81160}(2))), `%`_ishape{shape#3554, Jnn#468}(`%X%`_shape{lanetype#17839, dim#17839, i#81165}(`I32`_lanetype, `%`_dim{i#81172}(4))), `EXTMUL`_vextbinop__{half#830, sx#14995}(`HIGH`_half, `S`_sx)) + 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{ishape_1#67 : ishape, ishape_2#67 : ishape, shape#3657 : shape, Jnn#472 : Jnn, lanetype#18062 : lanetype, dim#18062 : dim, i#81533 : nat, i#81540 : nat, shape#3669 : shape, Jnn#476 : Jnn, lanetype#18074 : lanetype, dim#18074 : dim, i#81545 : nat, i#81552 : nat, half#864 : half, sx#15029 : sx, i#81526 : nat} {{0xFD} {`%`_u32{i#81526}(222):Bu32}} => `VEXTBINOP`_instr{ishape_1#67, ishape_2#67}(`%`_ishape{shape#3657, Jnn#472}(`%X%`_shape{lanetype#18062, dim#18062, i#81533}(`I64`_lanetype, `%`_dim{i#81540}(2))), `%`_ishape{shape#3669, Jnn#476}(`%X%`_shape{lanetype#18074, dim#18074, i#81545}(`I32`_lanetype, `%`_dim{i#81552}(4))), `EXTMUL`_vextbinop__{half#864, sx#15029}(`LOW`_half, `U`_sx)) + 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{ishape_1#69 : ishape, ishape_2#69 : ishape, shape#3772 : shape, Jnn#480 : Jnn, lanetype#18297 : lanetype, dim#18297 : dim, i#81913 : nat, i#81920 : nat, shape#3784 : shape, Jnn#484 : Jnn, lanetype#18309 : lanetype, dim#18309 : dim, i#81925 : nat, i#81932 : nat, half#898 : half, sx#15063 : sx, i#81906 : nat} {{0xFD} {`%`_u32{i#81906}(223):Bu32}} => `VEXTBINOP`_instr{ishape_1#69, ishape_2#69}(`%`_ishape{shape#3772, Jnn#480}(`%X%`_shape{lanetype#18297, dim#18297, i#81913}(`I64`_lanetype, `%`_dim{i#81920}(2))), `%`_ishape{shape#3784, Jnn#484}(`%X%`_shape{lanetype#18309, dim#18309, i#81925}(`I32`_lanetype, `%`_dim{i#81932}(4))), `EXTMUL`_vextbinop__{half#898, sx#15063}(`HIGH`_half, `U`_sx)) + 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{shape#3877 : shape, lanetype#18532 : lanetype, dim#18532 : dim, i#82293 : nat, i#82300 : nat, i#82286 : nat} {{0xFD} {`%`_u32{i#82286}(103):Bu32}} => `VUNOP`_instr{shape#3877}(`%X%`_shape{lanetype#18532, dim#18532, i#82293}(`F32`_lanetype, `%`_dim{i#82300}(4)), `CEIL`_vunop_) + 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{shape#3879 : shape, lanetype#18574 : lanetype, dim#18574 : dim, i#82390 : nat, i#82397 : nat, i#82383 : nat} {{0xFD} {`%`_u32{i#82383}(104):Bu32}} => `VUNOP`_instr{shape#3879}(`%X%`_shape{lanetype#18574, dim#18574, i#82390}(`F32`_lanetype, `%`_dim{i#82397}(4)), `FLOOR`_vunop_) + 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{shape#3881 : shape, lanetype#18616 : lanetype, dim#18616 : dim, i#82487 : nat, i#82494 : nat, i#82480 : nat} {{0xFD} {`%`_u32{i#82480}(105):Bu32}} => `VUNOP`_instr{shape#3881}(`%X%`_shape{lanetype#18616, dim#18616, i#82487}(`F32`_lanetype, `%`_dim{i#82494}(4)), `TRUNC`_vunop_) + 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{shape#3883 : shape, lanetype#18658 : lanetype, dim#18658 : dim, i#82584 : nat, i#82591 : nat, i#82577 : nat} {{0xFD} {`%`_u32{i#82577}(106):Bu32}} => `VUNOP`_instr{shape#3883}(`%X%`_shape{lanetype#18658, dim#18658, i#82584}(`F32`_lanetype, `%`_dim{i#82591}(4)), `NEAREST`_vunop_) + 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{shape#3885 : shape, lanetype#18700 : lanetype, dim#18700 : dim, i#82681 : nat, i#82688 : nat, i#82674 : nat} {{0xFD} {`%`_u32{i#82674}(224):Bu32}} => `VUNOP`_instr{shape#3885}(`%X%`_shape{lanetype#18700, dim#18700, i#82681}(`F32`_lanetype, `%`_dim{i#82688}(4)), `ABS`_vunop_) + 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{shape#3887 : shape, lanetype#18742 : lanetype, dim#18742 : dim, i#82778 : nat, i#82785 : nat, i#82771 : nat} {{0xFD} {`%`_u32{i#82771}(225):Bu32}} => `VUNOP`_instr{shape#3887}(`%X%`_shape{lanetype#18742, dim#18742, i#82778}(`F32`_lanetype, `%`_dim{i#82785}(4)), `NEG`_vunop_) + 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{shape#3889 : shape, lanetype#18784 : lanetype, dim#18784 : dim, i#82875 : nat, i#82882 : nat, i#82868 : nat} {{0xFD} {`%`_u32{i#82868}(227):Bu32}} => `VUNOP`_instr{shape#3889}(`%X%`_shape{lanetype#18784, dim#18784, i#82875}(`F32`_lanetype, `%`_dim{i#82882}(4)), `SQRT`_vunop_) + 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{shape#3891 : shape, lanetype#18826 : lanetype, dim#18826 : dim, i#82972 : nat, i#82979 : nat, i#82965 : nat} {{0xFD} {`%`_u32{i#82965}(228):Bu32}} => `VBINOP`_instr{shape#3891}(`%X%`_shape{lanetype#18826, dim#18826, i#82972}(`F32`_lanetype, `%`_dim{i#82979}(4)), `ADD`_vbinop_) + 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{shape#3893 : shape, lanetype#18868 : lanetype, dim#18868 : dim, i#83069 : nat, i#83076 : nat, i#83062 : nat} {{0xFD} {`%`_u32{i#83062}(229):Bu32}} => `VBINOP`_instr{shape#3893}(`%X%`_shape{lanetype#18868, dim#18868, i#83069}(`F32`_lanetype, `%`_dim{i#83076}(4)), `SUB`_vbinop_) + 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{shape#3895 : shape, lanetype#18910 : lanetype, dim#18910 : dim, i#83166 : nat, i#83173 : nat, i#83159 : nat} {{0xFD} {`%`_u32{i#83159}(230):Bu32}} => `VBINOP`_instr{shape#3895}(`%X%`_shape{lanetype#18910, dim#18910, i#83166}(`F32`_lanetype, `%`_dim{i#83173}(4)), `MUL`_vbinop_) + 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{shape#3897 : shape, lanetype#18952 : lanetype, dim#18952 : dim, i#83263 : nat, i#83270 : nat, i#83256 : nat} {{0xFD} {`%`_u32{i#83256}(231):Bu32}} => `VBINOP`_instr{shape#3897}(`%X%`_shape{lanetype#18952, dim#18952, i#83263}(`F32`_lanetype, `%`_dim{i#83270}(4)), `DIV`_vbinop_) + 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{shape#3899 : shape, lanetype#18994 : lanetype, dim#18994 : dim, i#83360 : nat, i#83367 : nat, i#83353 : nat} {{0xFD} {`%`_u32{i#83353}(232):Bu32}} => `VBINOP`_instr{shape#3899}(`%X%`_shape{lanetype#18994, dim#18994, i#83360}(`F32`_lanetype, `%`_dim{i#83367}(4)), `MIN`_vbinop_) + 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{shape#3901 : shape, lanetype#19036 : lanetype, dim#19036 : dim, i#83457 : nat, i#83464 : nat, i#83450 : nat} {{0xFD} {`%`_u32{i#83450}(233):Bu32}} => `VBINOP`_instr{shape#3901}(`%X%`_shape{lanetype#19036, dim#19036, i#83457}(`F32`_lanetype, `%`_dim{i#83464}(4)), `MAX`_vbinop_) + 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{shape#3903 : shape, lanetype#19078 : lanetype, dim#19078 : dim, i#83554 : nat, i#83561 : nat, i#83547 : nat} {{0xFD} {`%`_u32{i#83547}(234):Bu32}} => `VBINOP`_instr{shape#3903}(`%X%`_shape{lanetype#19078, dim#19078, i#83554}(`F32`_lanetype, `%`_dim{i#83561}(4)), `PMIN`_vbinop_) + 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{shape#3905 : shape, lanetype#19120 : lanetype, dim#19120 : dim, i#83651 : nat, i#83658 : nat, i#83644 : nat} {{0xFD} {`%`_u32{i#83644}(235):Bu32}} => `VBINOP`_instr{shape#3905}(`%X%`_shape{lanetype#19120, dim#19120, i#83651}(`F32`_lanetype, `%`_dim{i#83658}(4)), `PMAX`_vbinop_) + 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{shape#3907 : shape, lanetype#19162 : lanetype, dim#19162 : dim, i#83748 : nat, i#83755 : nat, i#83741 : nat} {{0xFD} {`%`_u32{i#83741}(269):Bu32}} => `VBINOP`_instr{shape#3907}(`%X%`_shape{lanetype#19162, dim#19162, i#83748}(`F32`_lanetype, `%`_dim{i#83755}(4)), `RELAXED_MIN`_vbinop_) + 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{shape#3909 : shape, lanetype#19204 : lanetype, dim#19204 : dim, i#83845 : nat, i#83852 : nat, i#83838 : nat} {{0xFD} {`%`_u32{i#83838}(270):Bu32}} => `VBINOP`_instr{shape#3909}(`%X%`_shape{lanetype#19204, dim#19204, i#83845}(`F32`_lanetype, `%`_dim{i#83852}(4)), `RELAXED_MAX`_vbinop_) + 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{shape#3911 : shape, lanetype#19246 : lanetype, dim#19246 : dim, i#83942 : nat, i#83949 : nat, i#83935 : nat} {{0xFD} {`%`_u32{i#83935}(261):Bu32}} => `VTERNOP`_instr{shape#3911}(`%X%`_shape{lanetype#19246, dim#19246, i#83942}(`F32`_lanetype, `%`_dim{i#83949}(4)), `RELAXED_MADD`_vternop_) + 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{shape#3913 : shape, lanetype#19288 : lanetype, dim#19288 : dim, i#84039 : nat, i#84046 : nat, i#84032 : nat} {{0xFD} {`%`_u32{i#84032}(262):Bu32}} => `VTERNOP`_instr{shape#3913}(`%X%`_shape{lanetype#19288, dim#19288, i#84039}(`F32`_lanetype, `%`_dim{i#84046}(4)), `RELAXED_NMADD`_vternop_) + 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{shape#3915 : shape, lanetype#19330 : lanetype, dim#19330 : dim, i#84136 : nat, i#84143 : nat, i#84129 : nat} {{0xFD} {`%`_u32{i#84129}(116):Bu32}} => `VUNOP`_instr{shape#3915}(`%X%`_shape{lanetype#19330, dim#19330, i#84136}(`F64`_lanetype, `%`_dim{i#84143}(2)), `CEIL`_vunop_) + 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{shape#3917 : shape, lanetype#19372 : lanetype, dim#19372 : dim, i#84233 : nat, i#84240 : nat, i#84226 : nat} {{0xFD} {`%`_u32{i#84226}(117):Bu32}} => `VUNOP`_instr{shape#3917}(`%X%`_shape{lanetype#19372, dim#19372, i#84233}(`F64`_lanetype, `%`_dim{i#84240}(2)), `FLOOR`_vunop_) + 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{shape#3919 : shape, lanetype#19414 : lanetype, dim#19414 : dim, i#84330 : nat, i#84337 : nat, i#84323 : nat} {{0xFD} {`%`_u32{i#84323}(122):Bu32}} => `VUNOP`_instr{shape#3919}(`%X%`_shape{lanetype#19414, dim#19414, i#84330}(`F64`_lanetype, `%`_dim{i#84337}(2)), `TRUNC`_vunop_) + 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{shape#3921 : shape, lanetype#19456 : lanetype, dim#19456 : dim, i#84427 : nat, i#84434 : nat, i#84420 : nat} {{0xFD} {`%`_u32{i#84420}(148):Bu32}} => `VUNOP`_instr{shape#3921}(`%X%`_shape{lanetype#19456, dim#19456, i#84427}(`F64`_lanetype, `%`_dim{i#84434}(2)), `NEAREST`_vunop_) + 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{shape#3923 : shape, lanetype#19498 : lanetype, dim#19498 : dim, i#84524 : nat, i#84531 : nat, i#84517 : nat} {{0xFD} {`%`_u32{i#84517}(236):Bu32}} => `VUNOP`_instr{shape#3923}(`%X%`_shape{lanetype#19498, dim#19498, i#84524}(`F64`_lanetype, `%`_dim{i#84531}(2)), `ABS`_vunop_) + 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{shape#3925 : shape, lanetype#19540 : lanetype, dim#19540 : dim, i#84621 : nat, i#84628 : nat, i#84614 : nat} {{0xFD} {`%`_u32{i#84614}(237):Bu32}} => `VUNOP`_instr{shape#3925}(`%X%`_shape{lanetype#19540, dim#19540, i#84621}(`F64`_lanetype, `%`_dim{i#84628}(2)), `NEG`_vunop_) + 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{shape#3927 : shape, lanetype#19582 : lanetype, dim#19582 : dim, i#84718 : nat, i#84725 : nat, i#84711 : nat} {{0xFD} {`%`_u32{i#84711}(239):Bu32}} => `VUNOP`_instr{shape#3927}(`%X%`_shape{lanetype#19582, dim#19582, i#84718}(`F64`_lanetype, `%`_dim{i#84725}(2)), `SQRT`_vunop_) + 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{shape#3929 : shape, lanetype#19624 : lanetype, dim#19624 : dim, i#84815 : nat, i#84822 : nat, i#84808 : nat} {{0xFD} {`%`_u32{i#84808}(240):Bu32}} => `VBINOP`_instr{shape#3929}(`%X%`_shape{lanetype#19624, dim#19624, i#84815}(`F64`_lanetype, `%`_dim{i#84822}(2)), `ADD`_vbinop_) + 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{shape#3931 : shape, lanetype#19666 : lanetype, dim#19666 : dim, i#84912 : nat, i#84919 : nat, i#84905 : nat} {{0xFD} {`%`_u32{i#84905}(241):Bu32}} => `VBINOP`_instr{shape#3931}(`%X%`_shape{lanetype#19666, dim#19666, i#84912}(`F64`_lanetype, `%`_dim{i#84919}(2)), `SUB`_vbinop_) + 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{shape#3933 : shape, lanetype#19708 : lanetype, dim#19708 : dim, i#85009 : nat, i#85016 : nat, i#85002 : nat} {{0xFD} {`%`_u32{i#85002}(242):Bu32}} => `VBINOP`_instr{shape#3933}(`%X%`_shape{lanetype#19708, dim#19708, i#85009}(`F64`_lanetype, `%`_dim{i#85016}(2)), `MUL`_vbinop_) + 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{shape#3935 : shape, lanetype#19750 : lanetype, dim#19750 : dim, i#85106 : nat, i#85113 : nat, i#85099 : nat} {{0xFD} {`%`_u32{i#85099}(243):Bu32}} => `VBINOP`_instr{shape#3935}(`%X%`_shape{lanetype#19750, dim#19750, i#85106}(`F64`_lanetype, `%`_dim{i#85113}(2)), `DIV`_vbinop_) + 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{shape#3937 : shape, lanetype#19792 : lanetype, dim#19792 : dim, i#85203 : nat, i#85210 : nat, i#85196 : nat} {{0xFD} {`%`_u32{i#85196}(244):Bu32}} => `VBINOP`_instr{shape#3937}(`%X%`_shape{lanetype#19792, dim#19792, i#85203}(`F64`_lanetype, `%`_dim{i#85210}(2)), `MIN`_vbinop_) + 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{shape#3939 : shape, lanetype#19834 : lanetype, dim#19834 : dim, i#85300 : nat, i#85307 : nat, i#85293 : nat} {{0xFD} {`%`_u32{i#85293}(245):Bu32}} => `VBINOP`_instr{shape#3939}(`%X%`_shape{lanetype#19834, dim#19834, i#85300}(`F64`_lanetype, `%`_dim{i#85307}(2)), `MAX`_vbinop_) + 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{shape#3941 : shape, lanetype#19876 : lanetype, dim#19876 : dim, i#85397 : nat, i#85404 : nat, i#85390 : nat} {{0xFD} {`%`_u32{i#85390}(246):Bu32}} => `VBINOP`_instr{shape#3941}(`%X%`_shape{lanetype#19876, dim#19876, i#85397}(`F64`_lanetype, `%`_dim{i#85404}(2)), `PMIN`_vbinop_) + 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{shape#3943 : shape, lanetype#19918 : lanetype, dim#19918 : dim, i#85494 : nat, i#85501 : nat, i#85487 : nat} {{0xFD} {`%`_u32{i#85487}(247):Bu32}} => `VBINOP`_instr{shape#3943}(`%X%`_shape{lanetype#19918, dim#19918, i#85494}(`F64`_lanetype, `%`_dim{i#85501}(2)), `PMAX`_vbinop_) + 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{shape#3945 : shape, lanetype#19960 : lanetype, dim#19960 : dim, i#85591 : nat, i#85598 : nat, i#85584 : nat} {{0xFD} {`%`_u32{i#85584}(271):Bu32}} => `VBINOP`_instr{shape#3945}(`%X%`_shape{lanetype#19960, dim#19960, i#85591}(`F64`_lanetype, `%`_dim{i#85598}(2)), `RELAXED_MIN`_vbinop_) + 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{shape#3947 : shape, lanetype#20002 : lanetype, dim#20002 : dim, i#85688 : nat, i#85695 : nat, i#85681 : nat} {{0xFD} {`%`_u32{i#85681}(272):Bu32}} => `VBINOP`_instr{shape#3947}(`%X%`_shape{lanetype#20002, dim#20002, i#85688}(`F64`_lanetype, `%`_dim{i#85695}(2)), `RELAXED_MAX`_vbinop_) + 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{shape#3949 : shape, lanetype#20044 : lanetype, dim#20044 : dim, i#85785 : nat, i#85792 : nat, i#85778 : nat} {{0xFD} {`%`_u32{i#85778}(263):Bu32}} => `VTERNOP`_instr{shape#3949}(`%X%`_shape{lanetype#20044, dim#20044, i#85785}(`F64`_lanetype, `%`_dim{i#85792}(2)), `RELAXED_MADD`_vternop_) + 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{shape#3951 : shape, lanetype#20086 : lanetype, dim#20086 : dim, i#85882 : nat, i#85889 : nat, i#85875 : nat} {{0xFD} {`%`_u32{i#85875}(264):Bu32}} => `VTERNOP`_instr{shape#3951}(`%X%`_shape{lanetype#20086, dim#20086, i#85882}(`F64`_lanetype, `%`_dim{i#85889}(2)), `RELAXED_NMADD`_vternop_) + 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{shape#3953 : shape, lanetype#20128 : lanetype, dim#20128 : dim, i#85979 : nat, i#85986 : nat, i#85972 : nat} {{0xFD} {`%`_u32{i#85972}(265):Bu32}} => `VTERNOP`_instr{shape#3953}(`%X%`_shape{lanetype#20128, dim#20128, i#85979}(`I8`_lanetype, `%`_dim{i#85986}(16)), `RELAXED_LANESELECT`_vternop_) + 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{shape#3955 : shape, lanetype#20155 : lanetype, dim#20155 : dim, i#86061 : nat, i#86068 : nat, i#86054 : nat} {{0xFD} {`%`_u32{i#86054}(266):Bu32}} => `VTERNOP`_instr{shape#3955}(`%X%`_shape{lanetype#20155, dim#20155, i#86061}(`I16`_lanetype, `%`_dim{i#86068}(8)), `RELAXED_LANESELECT`_vternop_) + 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{shape#3957 : shape, lanetype#20182 : lanetype, dim#20182 : dim, i#86143 : nat, i#86150 : nat, i#86136 : nat} {{0xFD} {`%`_u32{i#86136}(267):Bu32}} => `VTERNOP`_instr{shape#3957}(`%X%`_shape{lanetype#20182, dim#20182, i#86143}(`I32`_lanetype, `%`_dim{i#86150}(4)), `RELAXED_LANESELECT`_vternop_) + 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{shape#3959 : shape, lanetype#20209 : lanetype, dim#20209 : dim, i#86225 : nat, i#86232 : nat, i#86218 : nat} {{0xFD} {`%`_u32{i#86218}(268):Bu32}} => `VTERNOP`_instr{shape#3959}(`%X%`_shape{lanetype#20209, dim#20209, i#86225}(`I64`_lanetype, `%`_dim{i#86232}(2)), `RELAXED_LANESELECT`_vternop_) + 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{shape_1#31 : shape, shape_2#31 : shape, lanetype#20236 : lanetype, dim#20236 : dim, i#86307 : nat, i#86314 : nat, lanetype#20248 : lanetype, dim#20248 : dim, i#86319 : nat, i#86326 : nat, zero#159 : zero, i#86300 : nat} {{0xFD} {`%`_u32{i#86300}(94):Bu32}} => `VCVTOP`_instr{shape_1#31, shape_2#31}(`%X%`_shape{lanetype#20236, dim#20236, i#86307}(`F32`_lanetype, `%`_dim{i#86314}(4)), `%X%`_shape{lanetype#20248, dim#20248, i#86319}(`F64`_lanetype, `%`_dim{i#86326}(2)), `DEMOTE`_vcvtop__{zero#159}(`ZERO`_zero)) + 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{shape_1#33 : shape, shape_2#33 : shape, lanetype#20501 : lanetype, dim#20501 : dim, i#86777 : nat, i#86784 : nat, lanetype#20513 : lanetype, dim#20513 : dim, i#86789 : nat, i#86796 : nat, i#86770 : nat} {{0xFD} {`%`_u32{i#86770}(95):Bu32}} => `VCVTOP`_instr{shape_1#33, shape_2#33}(`%X%`_shape{lanetype#20501, dim#20501, i#86777}(`F64`_lanetype, `%`_dim{i#86784}(2)), `%X%`_shape{lanetype#20513, dim#20513, i#86789}(`F32`_lanetype, `%`_dim{i#86796}(4)), `PROMOTELOW`_vcvtop__) + 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{shape_1#35 : shape, shape_2#35 : shape, lanetype#20766 : lanetype, dim#20766 : dim, i#87247 : nat, i#87254 : nat, lanetype#20778 : lanetype, dim#20778 : dim, i#87259 : nat, i#87266 : nat, sx#15127 : sx, `zero?#135` : zero?, i#87240 : nat} {{0xFD} {`%`_u32{i#87240}(248):Bu32}} => `VCVTOP`_instr{shape_1#35, shape_2#35}(`%X%`_shape{lanetype#20766, dim#20766, i#87247}(`I32`_lanetype, `%`_dim{i#87254}(4)), `%X%`_shape{lanetype#20778, dim#20778, i#87259}(`F32`_lanetype, `%`_dim{i#87266}(4)), `TRUNC_SAT`_vcvtop__{sx#15127, `zero?#135`}(`S`_sx, ?())) + 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{shape_1#37 : shape, shape_2#37 : shape, lanetype#20941 : lanetype, dim#20941 : dim, i#87567 : nat, i#87574 : nat, lanetype#20953 : lanetype, dim#20953 : dim, i#87579 : nat, i#87586 : nat, sx#15191 : sx, `zero?#199` : zero?, i#87560 : nat} {{0xFD} {`%`_u32{i#87560}(249):Bu32}} => `VCVTOP`_instr{shape_1#37, shape_2#37}(`%X%`_shape{lanetype#20941, dim#20941, i#87567}(`I32`_lanetype, `%`_dim{i#87574}(4)), `%X%`_shape{lanetype#20953, dim#20953, i#87579}(`F32`_lanetype, `%`_dim{i#87586}(4)), `TRUNC_SAT`_vcvtop__{sx#15191, `zero?#199`}(`U`_sx, ?())) + 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{shape_1#39 : shape, shape_2#39 : shape, lanetype#21116 : lanetype, dim#21116 : dim, i#87887 : nat, i#87894 : nat, lanetype#21128 : lanetype, dim#21128 : dim, i#87899 : nat, i#87906 : nat, `half?#39` : half?, sx#15225 : sx, i#87880 : nat} {{0xFD} {`%`_u32{i#87880}(250):Bu32}} => `VCVTOP`_instr{shape_1#39, shape_2#39}(`%X%`_shape{lanetype#21116, dim#21116, i#87887}(`F32`_lanetype, `%`_dim{i#87894}(4)), `%X%`_shape{lanetype#21128, dim#21128, i#87899}(`I32`_lanetype, `%`_dim{i#87906}(4)), `CONVERT`_vcvtop__{`half?#39`, sx#15225}(?(), `S`_sx)) + 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{shape_1#41 : shape, shape_2#41 : shape, lanetype#21321 : lanetype, dim#21321 : dim, i#88297 : nat, i#88304 : nat, lanetype#21333 : lanetype, dim#21333 : dim, i#88309 : nat, i#88316 : nat, `half?#73` : half?, sx#15259 : sx, i#88290 : nat} {{0xFD} {`%`_u32{i#88290}(251):Bu32}} => `VCVTOP`_instr{shape_1#41, shape_2#41}(`%X%`_shape{lanetype#21321, dim#21321, i#88297}(`F32`_lanetype, `%`_dim{i#88304}(4)), `%X%`_shape{lanetype#21333, dim#21333, i#88309}(`I32`_lanetype, `%`_dim{i#88316}(4)), `CONVERT`_vcvtop__{`half?#73`, sx#15259}(?(), `U`_sx)) + 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{shape_1#43 : shape, shape_2#43 : shape, lanetype#21526 : lanetype, dim#21526 : dim, i#88707 : nat, i#88714 : nat, lanetype#21538 : lanetype, dim#21538 : dim, i#88719 : nat, i#88726 : nat, sx#15323 : sx, `zero?#263` : zero?, i#88700 : nat} {{0xFD} {`%`_u32{i#88700}(252):Bu32}} => `VCVTOP`_instr{shape_1#43, shape_2#43}(`%X%`_shape{lanetype#21526, dim#21526, i#88707}(`I32`_lanetype, `%`_dim{i#88714}(4)), `%X%`_shape{lanetype#21538, dim#21538, i#88719}(`F64`_lanetype, `%`_dim{i#88726}(2)), `TRUNC_SAT`_vcvtop__{sx#15323, `zero?#263`}(`S`_sx, ?(`ZERO`_zero))) + 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{shape_1#45 : shape, shape_2#45 : shape, lanetype#21701 : lanetype, dim#21701 : dim, i#89027 : nat, i#89034 : nat, lanetype#21713 : lanetype, dim#21713 : dim, i#89039 : nat, i#89046 : nat, sx#15387 : sx, `zero?#327` : zero?, i#89020 : nat} {{0xFD} {`%`_u32{i#89020}(253):Bu32}} => `VCVTOP`_instr{shape_1#45, shape_2#45}(`%X%`_shape{lanetype#21701, dim#21701, i#89027}(`I32`_lanetype, `%`_dim{i#89034}(4)), `%X%`_shape{lanetype#21713, dim#21713, i#89039}(`F64`_lanetype, `%`_dim{i#89046}(2)), `TRUNC_SAT`_vcvtop__{sx#15387, `zero?#327`}(`U`_sx, ?(`ZERO`_zero))) + 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{shape_1#47 : shape, shape_2#47 : shape, lanetype#21876 : lanetype, dim#21876 : dim, i#89347 : nat, i#89354 : nat, lanetype#21888 : lanetype, dim#21888 : dim, i#89359 : nat, i#89366 : nat, `half?#107` : half?, sx#15421 : sx, i#89340 : nat} {{0xFD} {`%`_u32{i#89340}(254):Bu32}} => `VCVTOP`_instr{shape_1#47, shape_2#47}(`%X%`_shape{lanetype#21876, dim#21876, i#89347}(`F64`_lanetype, `%`_dim{i#89354}(2)), `%X%`_shape{lanetype#21888, dim#21888, i#89359}(`I32`_lanetype, `%`_dim{i#89366}(4)), `CONVERT`_vcvtop__{`half?#107`, sx#15421}(?(`LOW`_half), `S`_sx)) + 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{shape_1#49 : shape, shape_2#49 : shape, lanetype#22081 : lanetype, dim#22081 : dim, i#89757 : nat, i#89764 : nat, lanetype#22093 : lanetype, dim#22093 : dim, i#89769 : nat, i#89776 : nat, `half?#141` : half?, sx#15455 : sx, i#89750 : nat} {{0xFD} {`%`_u32{i#89750}(255):Bu32}} => `VCVTOP`_instr{shape_1#49, shape_2#49}(`%X%`_shape{lanetype#22081, dim#22081, i#89757}(`F64`_lanetype, `%`_dim{i#89764}(2)), `%X%`_shape{lanetype#22093, dim#22093, i#89769}(`I32`_lanetype, `%`_dim{i#89776}(4)), `CONVERT`_vcvtop__{`half?#141`, sx#15455}(?(`LOW`_half), `U`_sx)) + 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{shape_1#51 : shape, shape_2#51 : shape, lanetype#22286 : lanetype, dim#22286 : dim, i#90167 : nat, i#90174 : nat, lanetype#22298 : lanetype, dim#22298 : dim, i#90179 : nat, i#90186 : nat, sx#15519 : sx, `zero?#391` : zero?, i#90160 : nat} {{0xFD} {`%`_u32{i#90160}(257):Bu32}} => `VCVTOP`_instr{shape_1#51, shape_2#51}(`%X%`_shape{lanetype#22286, dim#22286, i#90167}(`I32`_lanetype, `%`_dim{i#90174}(4)), `%X%`_shape{lanetype#22298, dim#22298, i#90179}(`F32`_lanetype, `%`_dim{i#90186}(4)), `RELAXED_TRUNC`_vcvtop__{sx#15519, `zero?#391`}(`S`_sx, ?())) + 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{shape_1#53 : shape, shape_2#53 : shape, lanetype#22461 : lanetype, dim#22461 : dim, i#90487 : nat, i#90494 : nat, lanetype#22473 : lanetype, dim#22473 : dim, i#90499 : nat, i#90506 : nat, sx#15583 : sx, `zero?#455` : zero?, i#90480 : nat} {{0xFD} {`%`_u32{i#90480}(258):Bu32}} => `VCVTOP`_instr{shape_1#53, shape_2#53}(`%X%`_shape{lanetype#22461, dim#22461, i#90487}(`I32`_lanetype, `%`_dim{i#90494}(4)), `%X%`_shape{lanetype#22473, dim#22473, i#90499}(`F32`_lanetype, `%`_dim{i#90506}(4)), `RELAXED_TRUNC`_vcvtop__{sx#15583, `zero?#455`}(`U`_sx, ?())) + 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{shape_1#55 : shape, shape_2#55 : shape, lanetype#22636 : lanetype, dim#22636 : dim, i#90807 : nat, i#90814 : nat, lanetype#22648 : lanetype, dim#22648 : dim, i#90819 : nat, i#90826 : nat, sx#15647 : sx, `zero?#519` : zero?, i#90800 : nat} {{0xFD} {`%`_u32{i#90800}(259):Bu32}} => `VCVTOP`_instr{shape_1#55, shape_2#55}(`%X%`_shape{lanetype#22636, dim#22636, i#90807}(`I32`_lanetype, `%`_dim{i#90814}(4)), `%X%`_shape{lanetype#22648, dim#22648, i#90819}(`F64`_lanetype, `%`_dim{i#90826}(2)), `RELAXED_TRUNC`_vcvtop__{sx#15647, `zero?#519`}(`S`_sx, ?(`ZERO`_zero))) + 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{shape_1#57 : shape, shape_2#57 : shape, lanetype#22811 : lanetype, dim#22811 : dim, i#91127 : nat, i#91134 : nat, lanetype#22823 : lanetype, dim#22823 : dim, i#91139 : nat, i#91146 : nat, sx#15711 : sx, `zero?#583` : zero?, i#91120 : nat} {{0xFD} {`%`_u32{i#91120}(260):Bu32}} => `VCVTOP`_instr{shape_1#57, shape_2#57}(`%X%`_shape{lanetype#22811, dim#22811, i#91127}(`I32`_lanetype, `%`_dim{i#91134}(4)), `%X%`_shape{lanetype#22823, dim#22823, i#91139}(`F64`_lanetype, `%`_dim{i#91146}(2)), `RELAXED_TRUNC`_vcvtop__{sx#15711, `zero?#583`}(`U`_sx, ?(`ZERO`_zero))) + 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 @@ -120241,7 +95492,7 @@ grammar Bexpr : expr ;; ../../../../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{`en*` : en*, i#91425 : nat, i#91448 : nat, len : nat} {{`%`_byte{i#91425}(N):Bbyte} {`%`_u32{i#91448}(len):Bu32} {en*{en <- `en*`}:BX}} => en*{en <- `en*`} + prod{`en*` : en*, len : nat} {{`%`_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 => [] @@ -120259,7 +95510,7 @@ grammar Bcustomsec : () ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Btype : type ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rectype#1727 : rectype, qt : rectype} qt:Brectype => `TYPE`_type{rectype#1727}(qt) + prod{qt : rectype} qt:Brectype => `TYPE`_type(qt) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Btypesec : type* @@ -120269,7 +95520,7 @@ grammar Btypesec : type* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bimport : import ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{name#6185 : name, externtype#247 : externtype, nm_1 : name, nm_2 : name, xt : externtype} {{nm_1:Bname} {nm_2:Bname} {xt:Bexterntype}} => `IMPORT`_import{name#6185, externtype#247}(nm_1, nm_2, xt) + 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* @@ -120284,10 +95535,10 @@ grammar Bfuncsec : typeidx* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Btable : table ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{tabletype#1130 : tabletype, expr#4835 : expr, tt : tabletype, heaptype#1729 : heaptype, ht : heaptype, addrtype#1433 : addrtype, limits#1433 : limits, reftype#3999 : reftype, at : addrtype, lim : limits, `null?#1675` : null?, heaptype#1741 : heaptype} tt:Btabletype => `TABLE`_table{tabletype#1130, expr#4835}(tt, [`REF.NULL`_instr{heaptype#1729}(ht)]) - -- if (tt = `%%%`_tabletype{addrtype#1433, limits#1433, reftype#3999}(at, lim, `REF`_reftype{`null?#1675`, heaptype#1741}(`NULL`_null?{}, ht))) + 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{tabletype#1142 : tabletype, expr#4847 : expr, tt : tabletype, e : expr} {{0x40} {0x00} {tt:Btabletype} {e:Bexpr}} => `TABLE`_table{tabletype#1142, expr#4847}(tt, e) + 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* @@ -120297,7 +95548,7 @@ grammar Btablesec : table* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bmem : mem ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{memtype#734 : memtype, mt : memtype} mt:Bmemtype => `MEMORY`_mem{memtype#734}(mt) + prod{mt : memtype} mt:Bmemtype => `MEMORY`_mem(mt) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bmemsec : mem* @@ -120307,7 +95558,7 @@ grammar Bmemsec : mem* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bglobal : global ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{globaltype#2285 : globaltype, expr#4883 : expr, gt : globaltype, e : expr} {{gt:Bglobaltype} {e:Bexpr}} => `GLOBAL`_global{globaltype#2285, expr#4883}(gt, e) + 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* @@ -120317,7 +95568,7 @@ grammar Bglobalsec : global* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bexport : export ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{name#6238 : name, externidx#5797 : externidx, nm : name, xx : externidx} {{nm:Bname} {xx:Bexternidx}} => `EXPORT`_export{name#6238, externidx#5797}(nm, xx) + 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* @@ -120327,7 +95578,7 @@ grammar Bexportsec : export* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bstart : start* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{funcidx#3179 : funcidx, x : idx} x:Bfuncidx => [`START`_start{funcidx#3179}(x)] + prod{x : idx} x:Bfuncidx => [`START`_start(x)] ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec syntax startopt = start* @@ -120340,26 +95591,26 @@ grammar Bstartsec : start? ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Belemkind : reftype ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`null?#1687` : null?, heaptype#1753 : heaptype} 0x00 => `REF`_reftype{`null?#1687`, heaptype#1753}(?(`NULL`_null), `FUNC`_heaptype) + 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{reftype#4023 : reftype, `expr*#3307` : expr*, elemmode#3307 : elemmode, `null?#1699` : null?, heaptype#1765 : heaptype, `funcidx#3213*` : funcidx*, `y*` : idx*, tableidx#144 : tableidx, expr#4909 : expr, i#91655 : nat, e_o : expr, i#91592 : nat} {{`%`_u32{i#91592}(0):Bu32} {e_o:Bexpr} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => `ELEM`_elem{reftype#4023, `expr*#3307`, elemmode#3307}(`REF`_reftype{`null?#1699`, heaptype#1765}(?(), `FUNC`_heaptype), [`REF.FUNC`_instr{funcidx#3213}(y)*{funcidx#3213 <- `funcidx#3213*`, y <- `y*`}], `ACTIVE`_elemmode{tableidx#144, expr#4909}(`%`_tableidx{i#91655}(0), e_o)) + prod{`y*` : idx*, e_o : expr} {{`%`_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{reftype#4035 : reftype, `expr*#3319` : expr*, elemmode#3319 : elemmode, rt : reftype, `funcidx#3215*` : funcidx*, `y*` : idx*, i#91678 : nat} {{`%`_u32{i#91678}(1):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => `ELEM`_elem{reftype#4035, `expr*#3319`, elemmode#3319}(rt, [`REF.FUNC`_instr{funcidx#3215}(y)*{funcidx#3215 <- `funcidx#3215*`, y <- `y*`}], `PASSIVE`_elemmode) + 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{reftype#4047 : reftype, `expr*#3331` : expr*, elemmode#3331 : elemmode, rt : reftype, `funcidx#3217*` : funcidx*, `y*` : idx*, tableidx#146 : tableidx, expr#4911 : expr, x : idx, e : expr, i#91742 : nat} {{`%`_u32{i#91742}(2):Bu32} {x:Btableidx} {e:Bexpr} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => `ELEM`_elem{reftype#4047, `expr*#3331`, elemmode#3331}(rt, [`REF.FUNC`_instr{funcidx#3217}(y)*{funcidx#3217 <- `funcidx#3217*`, y <- `y*`}], `ACTIVE`_elemmode{tableidx#146, expr#4911}(x, e)) + prod{rt : reftype, `y*` : idx*, x : idx, e : expr} {{`%`_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{reftype#4059 : reftype, `expr*#3343` : expr*, elemmode#3343 : elemmode, rt : reftype, `funcidx#3219*` : funcidx*, `y*` : idx*, i#91837 : nat} {{`%`_u32{i#91837}(3):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => `ELEM`_elem{reftype#4059, `expr*#3343`, elemmode#3343}(rt, [`REF.FUNC`_instr{funcidx#3219}(y)*{funcidx#3219 <- `funcidx#3219*`, y <- `y*`}], `DECLARE`_elemmode) + 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{reftype#4071 : reftype, `expr*#3355` : expr*, elemmode#3355 : elemmode, `null?#1747` : null?, heaptype#1813 : heaptype, `e*` : expr*, tableidx#148 : tableidx, expr#4913 : expr, i#91925 : nat, e_O : expr, i#91901 : nat} {{`%`_u32{i#91901}(4):Bu32} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => `ELEM`_elem{reftype#4071, `expr*#3355`, elemmode#3355}(`REF`_reftype{`null?#1747`, heaptype#1813}(?(`NULL`_null), `FUNC`_heaptype), e*{e <- `e*`}, `ACTIVE`_elemmode{tableidx#148, expr#4913}(`%`_tableidx{i#91925}(0), e_O)) + prod{`e*` : expr*, e_O : 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{reftype#4083 : reftype, `expr*#3367` : expr*, elemmode#3367 : elemmode, rt : reftype, `e*` : expr*, i#91948 : nat} {{`%`_u32{i#91948}(5):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => `ELEM`_elem{reftype#4083, `expr*#3367`, elemmode#3367}(rt, e*{e <- `e*`}, `PASSIVE`_elemmode) + 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{reftype#4095 : reftype, `expr*#3379` : expr*, elemmode#3379 : elemmode, `null?#1771` : null?, heaptype#1837 : heaptype, `e*` : expr*, tableidx#150 : tableidx, expr#4915 : expr, x : idx, e_O : expr, i#91973 : nat} {{`%`_u32{i#91973}(6):Bu32} {x:Btableidx} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => `ELEM`_elem{reftype#4095, `expr*#3379`, elemmode#3379}(`REF`_reftype{`null?#1771`, heaptype#1837}(?(`NULL`_null), `FUNC`_heaptype), e*{e <- `e*`}, `ACTIVE`_elemmode{tableidx#150, expr#4915}(x, e_O)) + prod{`e*` : expr*, x : idx, e_O : 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{reftype#4107 : reftype, `expr*#3391` : expr*, elemmode#3391 : elemmode, rt : reftype, `e*` : expr*, i#92029 : nat} {{`%`_u32{i#92029}(7):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => `ELEM`_elem{reftype#4107, `expr*#3391`, elemmode#3391}(rt, e*{e <- `e*`}, `DECLARE`_elemmode) + 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* @@ -120372,7 +95623,7 @@ 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{t : valtype, n : n, `valtype#1033*` : valtype*, i#92056 : nat} {{`%`_u32{i#92056}(n):Bu32} {t:Bvaltype}} => `LOCAL`_local{valtype#1033}(t)^n{valtype#1033 <- `valtype#1033*`} + prod{t : valtype, n : n} {{`%`_u32(n):Bu32} {t:Bvaltype}} => `LOCAL`_local(t)^n{} ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bfunc : code @@ -120383,7 +95634,7 @@ grammar Bfunc : code ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bcode : code ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{code : code, i#92081 : nat, len : nat} {{`%`_u32{i#92081}(len):Bu32} {code:Bfunc}} => code + prod{code : code, len : nat} {{`%`_u32(len):Bu32} {code:Bfunc}} => code -- if (len = 0) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec @@ -120394,11 +95645,11 @@ grammar Bcodesec : code* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bdata : data ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`byte*#2217` : byte*, datamode#2181 : datamode, `b*` : byte*, memidx#272 : memidx, expr#4917 : expr, i#92154 : nat, e : expr, i#92106 : nat} {{`%`_u32{i#92106}(0):Bu32} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => `DATA`_data{`byte*#2217`, datamode#2181}(b*{b <- `b*`}, `ACTIVE`_datamode{memidx#272, expr#4917}(`%`_memidx{i#92154}(0), e)) + prod{`b*` : byte*, e : expr} {{`%`_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{`byte*#2229` : byte*, datamode#2193 : datamode, `b*` : byte*, i#92177 : nat} {{`%`_u32{i#92177}(1):Bu32} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => `DATA`_data{`byte*#2229`, datamode#2193}(b*{b <- `b*`}, `PASSIVE`_datamode) + 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{`byte*#2241` : byte*, datamode#2205 : datamode, `b*` : byte*, memidx#274 : memidx, expr#4919 : expr, x : idx, e : expr, i#92226 : nat} {{`%`_u32{i#92226}(2):Bu32} {x:Bmemidx} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => `DATA`_data{`byte*#2241`, datamode#2205}(b*{b <- `b*`}, `ACTIVE`_datamode{memidx#274, expr#4919}(x, e)) + prod{`b*` : byte*, x : idx, e : expr} {{`%`_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* @@ -120408,7 +95659,7 @@ grammar Bdatasec : data* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bdatacnt : u32* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{i#92330 : nat, n : n, i#92308 : nat} `%`_u32{i#92308}(n):Bu32 => [`%`_u32{i#92330}(n)] + prod{n : n} `%`_u32(n):Bu32 => [`%`_u32(n)] ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec syntax nopt = u32* @@ -120421,7 +95672,7 @@ grammar Bdatacntsec : u32? ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Btag : tag ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{tagtype#336 : tagtype, jt : tagtype} jt:Btagtype => `TAG`_tag{tagtype#336}(jt) + prod{jt : tagtype} jt:Btagtype => `TAG`_tag(jt) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Btagsec : tag* @@ -120441,17 +95692,17 @@ grammar Bversion : () ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bmodule : module ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`type*#143` : type*, `import*#143` : import*, `tag*#143` : tag*, `global*#167` : global*, `mem*#167` : mem*, `table*#167` : table*, `func*#143` : func*, `data*#143` : data*, `elem*#167` : elem*, `start?#143` : start?, `export*#143` : export*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `typeidx*` : typeidx*, `i#92509?` : nat?, `n?` : n?, `expr*` : expr*, `local**` : local**, `expr#5253*` : expr*, `local*#1601*` : local**, `typeidx#2117*` : typeidx*} {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{i#92509}(n)?{i#92509 <- `i#92509?`, n <- `n?`}:Bdatacntsec} {Bcustomsec*{}} {(local*{local <- `local*`}, expr)*{expr <- `expr*`, `local*` <- `local**`}:Bcodesec} {Bcustomsec*{}} {data*{data <- `data*`}:Bdatasec} {Bcustomsec*{}}} => `MODULE`_module{`type*#143`, `import*#143`, `tag*#143`, `global*#167`, `mem*#167`, `table*#167`, `func*#143`, `data*#143`, `elem*#167`, `start?#143`, `export*#143`}(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*`}) + prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `typeidx*` : typeidx*, `n?` : n?, `expr*` : expr*, `local**` : local**} {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#2117, `local*#1601`, expr#5253}(typeidx, local*{local <- `local*`}, expr)))*{expr <- `expr*`, expr#5253 <- `expr#5253*`, func <- `func*`, `local*` <- `local**`, `local*#1601` <- `local*#1601*`, typeidx <- `typeidx*`, typeidx#2117 <- `typeidx#2117*`} + -- (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{i#92557 : nat, `` : nat} ``:(0x00 | ... | 0xD7FF) => `%`_char{i#92557}(``) + prod{`` : nat} ``:(0x00 | ... | 0xD7FF) => `%`_char(``) ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{i#92565 : nat, `` : nat} ``:(0xE000 | ... | 0x10FFFF) => `%`_char{i#92565}(``) + prod{`` : nat} ``:(0xE000 | ... | 0x10FFFF) => `%`_char(``) ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec grammar Tsource : () @@ -120476,57 +95727,57 @@ grammar TfNplain : () ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tidchar : char ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i#93304 : nat, `` : nat} ``:(0x30 | ... | 0x39) => `%`_char{i#93304}(``) + prod{`` : nat} ``:(0x30 | ... | 0x39) => `%`_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i#93312 : nat, `` : nat} ``:(0x41 | ... | 0x5A) => `%`_char{i#93312}(``) + prod{`` : nat} ``:(0x41 | ... | 0x5A) => `%`_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i#93320 : nat, `` : nat} ``:(0x61 | ... | 0x7A) => `%`_char{i#93320}(``) + prod{`` : nat} ``:(0x61 | ... | 0x7A) => `%`_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i#93328 : nat, `` : nat} ``:0x21 => `%`_char{i#93328}(``) + prod{`` : nat} ``:0x21 => `%`_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i#93336 : nat, `` : nat} ``:0x23 => `%`_char{i#93336}(``) + prod{`` : nat} ``:0x23 => `%`_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i#93344 : nat, `` : nat} ``:0x24 => `%`_char{i#93344}(``) + prod{`` : nat} ``:0x24 => `%`_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i#93352 : nat, `` : nat} ``:0x25 => `%`_char{i#93352}(``) + prod{`` : nat} ``:0x25 => `%`_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i#93360 : nat, `` : nat} ``:0x26 => `%`_char{i#93360}(``) + prod{`` : nat} ``:0x26 => `%`_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i#93368 : nat, `` : nat} ``:0x27 => `%`_char{i#93368}(``) + prod{`` : nat} ``:0x27 => `%`_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i#93376 : nat, `` : nat} ``:0x2A => `%`_char{i#93376}(``) + prod{`` : nat} ``:0x2A => `%`_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i#93384 : nat, `` : nat} ``:0x2B => `%`_char{i#93384}(``) + prod{`` : nat} ``:0x2B => `%`_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i#93392 : nat, `` : nat} ``:0x2D => `%`_char{i#93392}(``) + prod{`` : nat} ``:0x2D => `%`_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i#93400 : nat, `` : nat} ``:0x2E => `%`_char{i#93400}(``) + prod{`` : nat} ``:0x2E => `%`_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i#93408 : nat, `` : nat} ``:0x2F => `%`_char{i#93408}(``) + prod{`` : nat} ``:0x2F => `%`_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i#93416 : nat, `` : nat} ``:0x3A => `%`_char{i#93416}(``) + prod{`` : nat} ``:0x3A => `%`_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i#93424 : nat, `` : nat} ``:0x3C => `%`_char{i#93424}(``) + prod{`` : nat} ``:0x3C => `%`_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i#93432 : nat, `` : nat} ``:0x3D => `%`_char{i#93432}(``) + prod{`` : nat} ``:0x3D => `%`_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i#93440 : nat, `` : nat} ``:0x3E => `%`_char{i#93440}(``) + prod{`` : nat} ``:0x3E => `%`_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i#93448 : nat, `` : nat} ``:0x3F => `%`_char{i#93448}(``) + prod{`` : nat} ``:0x3F => `%`_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i#93456 : nat, `` : nat} ``:0x40 => `%`_char{i#93456}(``) + prod{`` : nat} ``:0x40 => `%`_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i#93464 : nat, `` : nat} ``:0x5C => `%`_char{i#93464}(``) + prod{`` : nat} ``:0x5C => `%`_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i#93472 : nat, `` : nat} ``:0x5E => `%`_char{i#93472}(``) + prod{`` : nat} ``:0x5E => `%`_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i#93480 : nat, `` : nat} ``:0x5F => `%`_char{i#93480}(``) + prod{`` : nat} ``:0x5F => `%`_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i#93488 : nat, `` : nat} ``:0x60 => `%`_char{i#93488}(``) + prod{`` : nat} ``:0x60 => `%`_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i#93496 : nat, `` : nat} ``:0x7C => `%`_char{i#93496}(``) + prod{`` : nat} ``:0x7C => `%`_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i#93504 : nat, `` : nat} ``:0x7E => `%`_char{i#93504}(``) + prod{`` : nat} ``:0x7E => `%`_char(``) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tdigit : nat @@ -120594,22 +95845,22 @@ grammar Thexnum : nat ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tstringchar : char ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{c : char, i#93014 : nat, i#93016 : nat, i#93024 : nat, i#93034 : nat} c:Tchar => c - -- if ((((c!`%`_char{i#93014}.0 >= 32) /\ (c!`%`_char{i#93016}.0 =/= 127)) /\ (c =/= `%`_char{i#93024}(34))) /\ (c =/= `%`_char{i#93034}(92))) + 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{i#93044 : nat} "\\t" => `%`_char{i#93044}(9) + prod "\\t" => `%`_char(9) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i#93052 : nat} "\\n" => `%`_char{i#93052}(10) + prod "\\n" => `%`_char(10) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i#93060 : nat} "\\r" => `%`_char{i#93060}(13) + prod "\\r" => `%`_char(13) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i#93068 : nat} "\\\"" => `%`_char{i#93068}(34) + prod "\\\"" => `%`_char(34) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i#93076 : nat} "\\'" => `%`_char{i#93076}(39) + prod "\\'" => `%`_char(39) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i#93084 : nat} "\\\\" => `%`_char{i#93084}(92) + prod "\\\\" => `%`_char(92) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i#93092 : nat, n : n} {{"\\u{"} {n:Thexnum} {"}"}} => `%`_char{i#93092}(n) + prod{n : n} {{"\\u{"} {n:Thexnum} {"}"}} => `%`_char(n) -- if ((n < 55296) \/ ((59392 <= n) /\ (n < 1114112))) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -120617,7 +95868,7 @@ 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{i#93132 : nat, h_1 : nat, h_2 : nat} {{"\\"} {h_1:Thexdigit} {h_2:Thexdigit}} => [`%`_byte{i#93132}(((16 * h_1) + h_2))] + 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* @@ -120628,15 +95879,15 @@ grammar Tstring : byte* ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tname : name ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`char*#207` : char*, `c*` : char*, `b*` : byte*} b*{b <- `b*`}:Tstring => `%`_name{`char*#207`}(c*{c <- `c*`}) + prod{`c*` : char*, `b*` : byte*} 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{`char*#213` : char*, `c*` : char*} {{"$"} {c*{c <- `c*`}:Tidchar+{}}} => `%`_name{`char*#213`}(c*{c <- `c*`}) + prod{`c*` : char*} {{"$"} {c*{c <- `c*`}:Tidchar+{}}} => `%`_name(c*{c <- `c*`}) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`char*#225` : char*, `c*` : char*, `char*#219` : char*} {{"$"} {`%`_name{`char*#219`}(c*{c <- `c*`}):Tname}} => `%`_name{`char*#225`}(c*{c <- `c*`}) + 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 @@ -120688,14 +95939,14 @@ grammar Tblockcomment : () ;; ../../../../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, i#92625 : nat, i#92635 : nat} ``:c:Tchar => (``, ()).1 - -- if ((c =/= `%`_char{i#92625}(59)) /\ (c =/= `%`_char{i#92635}(40))) + 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, i#92657 : nat, i#92667 : nat} ``:{{";"+{}} {c:Tchar}} => (``, ()).1 - -- if ((c =/= `%`_char{i#92657}(59)) /\ (c =/= `%`_char{i#92667}(41))) + 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, i#92689 : nat, i#92699 : nat} ``:{{"("+{}} {c:Tchar}} => (``, ()).1 - -- if ((c =/= `%`_char{i#92689}(59)) /\ (c =/= `%`_char{i#92699}(40))) + 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 } @@ -120708,8 +95959,8 @@ grammar Teof : () ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec grammar Tlinechar : () ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : char, c : char, i#92597 : nat, i#92599 : nat} ``:c:Tchar => (``, ()).1 - -- if ((c!`%`_char{i#92597}.0 =/= 10) /\ (c!`%`_char{i#92599}.0 =/= 13)) + 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 : () @@ -120776,24 +96027,24 @@ grammar Tnum : nat ;; ../../../../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{i#92715 : nat, n : n} n:Tnum => `%`_uN{i#92715}(n) + prod{n : n} n:Tnum => `%`_uN(n) -- if (n < (2 ^ N)) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i#92723 : nat, n : n} {{"0x"} {n:Thexnum}} => `%`_uN{i#92723}(n) + 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{i#92739 : int, s : int, n : n, i#92731 : nat} {{s:Tsign} {`%`_uN{i#92731}(n):TuN(N)}} => `%`_sN{i#92739}((s * (n : nat <:> int))) + 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{i#92755 : nat, n : n, i#92747 : nat} `%`_uN{i#92747}(n):TuN(N) => `%`_iN{i#92755}(n) + prod{n : n} `%`_uN(n):TuN(N) => `%`_iN(n) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i#92771 : nat, i : sN(N), i#92769 : int} i:TsN(N) => `%`_iN{i#92771}($inv_signed_(N, i!`%`_sN{i#92769}.0)) + prod{i : sN(N)} i:TsN(N) => `%`_iN($inv_signed_(N, i!`%`_sN.0)) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec rec { @@ -120855,9 +96106,9 @@ grammar TfNmag(N : N) : fNmag(N) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec prod "inf" => `INF`_fNmag ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{m#7 : m} "nan" => `NAN`_fNmag{m#7}($canon_(N)) + prod "nan" => `NAN`_fNmag($canon_(N)) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{m#9 : m, n : n} {{"nan:0x"} {n:Thexnum}} => `NAN`_fNmag{m#9}(n) + 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 @@ -120926,18 +96177,18 @@ grammar Tlist(syntax el, grammar TX : el) : el* ;; ../../../../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?* + `TYPES` name?* , + `TAGS` name?* , + `GLOBALS` name?* , + `MEMS` name?* , + `TABLES` name?* , + `FUNCS` name?* , + `DATAS` name?* , + `ELEMS` name?* , + `LOCALS` name?* , + `LABELS` name?* , + `FIELDS` name?** , + `TYPEDEFS` deftype?* } ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -120949,7 +96200,7 @@ rec { ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.1-155.56 def $concat_idctxt(idctxt*) : idctxt ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.29 - def $concat_idctxt{`name?*#1` : name?*, `name?*#2` : name?*, `name?*#3` : name?*, `name?*#4` : name?*, `name?*#5` : name?*, `name?*#6` : name?*, `name?*#7` : name?*, `name?*#8` : name?*, `name?*#9` : name?*, `name?*#10` : name?*, `name?**#1` : name?**, `deftype?*#1` : deftype?*}([]) = {`TYPES`{`name?*#1`} [], `TAGS`{`name?*#2`} [], `GLOBALS`{`name?*#3`} [], `MEMS`{`name?*#4`} [], `TABLES`{`name?*#5`} [], `FUNCS`{`name?*#6`} [], `DATAS`{`name?*#7`} [], `ELEMS`{`name?*#8`} [], `LOCALS`{`name?*#9`} [], `LABELS`{`name?*#10`} [], `FIELDS`{`name?**#1`} [], `TYPEDEFS`{`deftype?*#1`} []} + def $concat_idctxt([]) = {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [], `TYPEDEFS` []} ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:157.1-157.53 def $concat_idctxt{I : I, `I'*` : I*}([I] ++ I'*{I' <- `I'*`}) = I +++ $concat_idctxt(I'*{I' <- `I'*`}) } @@ -120957,96 +96208,96 @@ def $concat_idctxt(idctxt*) : idctxt ;; ../../../../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, `name?*#40` : name?*, `name?*#70` : name?*, `name?*#100` : name?*, `name?*#130` : name?*, `name?*#160` : name?*, `name?*#190` : name?*, `name?*#220` : name?*, `name?*#250` : name?*, `name?*#280` : name?*, `name?*#310` : name?*, `char*#743*` : char**, `field**` : char**, `char*#761*` : char**, `name?**#2` : name?**}: + rule _{I : I, `field**` : char**}: `|-%:OK`(I) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.`TYPES`_I{`name?*#40`})) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.`TAGS`_I{`name?*#70`})) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.`GLOBALS`_I{`name?*#100`})) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.`MEMS`_I{`name?*#130`})) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.`TABLES`_I{`name?*#160`})) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.`FUNCS`_I{`name?*#190`})) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.`DATAS`_I{`name?*#220`})) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.`ELEMS`_I{`name?*#250`})) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.`LOCALS`_I{`name?*#280`})) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.`LABELS`_I{`name?*#310`})) - -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name{`char*#743`}(field*{field <- `field*`}))])))*{`char*#743` <- `char*#743*`, `field*` <- `field**`} - -- if ([?(`%`_name{`char*#761`}(field*{field <- `field*`}))*{`char*#761` <- `char*#761*`, `field*` <- `field**`}] = I.`FIELDS`_I{`name?**#2`}) + -- 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{x : idx, id : name, i#94485 : nat} id:Tid => x - -- if (ids[x!`%`_idx{i#94485}.0] = ?(id)) + prod{x : idx, id : name} 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, `name?*#322` : name?*} ``:Tidx_(I.`TYPES`_I{`name?*#322`}) => `` + 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, `name?*#334` : name?*} ``:Tidx_(I.`TAGS`_I{`name?*#334`}) => `` + 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, `name?*#346` : name?*} ``:Tidx_(I.`GLOBALS`_I{`name?*#346`}) => `` + 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, `name?*#358` : name?*} ``:Tidx_(I.`MEMS`_I{`name?*#358`}) => `` + 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, `name?*#370` : name?*} ``:Tidx_(I.`TABLES`_I{`name?*#370`}) => `` + 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, `name?*#382` : name?*} ``:Tidx_(I.`FUNCS`_I{`name?*#382`}) => `` + 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, `name?*#394` : name?*} ``:Tidx_(I.`DATAS`_I{`name?*#394`}) => `` + 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, `name?*#406` : name?*} ``:Tidx_(I.`ELEMS`_I{`name?*#406`}) => `` + 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, `name?*#418` : name?*} ``:Tidx_(I.`LOCALS`_I{`name?*#418`}) => `` + 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, `name?*#430` : name?*} ``:Tidx_(I.`LABELS`_I{`name?*#430`}) => `` + 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, `name?**#14` : name?**, i#95162 : nat} ``:Tidx_(I.`FIELDS`_I{`name?**#14`}[x!`%`_idx{i#95162}.0]) => `` + 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{tagidx#27 : tagidx, x : idx} {{"("} {"tag"} {x:Ttagidx_(I)} {")"}} => `TAG`_externidx{tagidx#27}(x) + prod{x : idx} {{"("} {"tag"} {x:Ttagidx_(I)} {")"}} => `TAG`_externidx(x) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{globalidx#29 : globalidx, x : idx} {{"("} {"global"} {x:Tglobalidx_(I)} {")"}} => `GLOBAL`_externidx{globalidx#29}(x) + prod{x : idx} {{"("} {"global"} {x:Tglobalidx_(I)} {")"}} => `GLOBAL`_externidx(x) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{memidx#276 : memidx, x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => `MEM`_externidx{memidx#276}(x) + prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => `MEM`_externidx(x) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{tableidx#152 : tableidx, x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => `TABLE`_externidx{tableidx#152}(x) + prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => `TABLE`_externidx(x) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{funcidx#3381 : funcidx, x : idx} {{"("} {"func"} {x:Tfuncidx_(I)} {")"}} => `FUNC`_externidx{funcidx#3381}(x) + prod{x : idx} {{"("} {"func"} {x:Tfuncidx_(I)} {")"}} => `FUNC`_externidx(x) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tnumtype : numtype @@ -121096,7 +96347,7 @@ 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{typeidx#2119 : typeidx, x : idx} x:Ttypeidx_(I) => `_IDX`_heaptype{typeidx#2119}(x) + prod{x : idx} x:Ttypeidx_(I) => `_IDX`_heaptype(x) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tnull : null @@ -121106,7 +96357,7 @@ grammar Tnull : 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?#1795` : null?, heaptype#1861 : heaptype, `null?` : null?, ht : heaptype} {{"("} {"ref"} {null?{null <- `null?`}:Tnull?{}} {ht:Theaptype_(I)} {")"}} => `REF`_reftype{`null?#1795`, heaptype#1861}(null?{null <- `null?`}, ht) + 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 @@ -121134,19 +96385,19 @@ grammar Tstoragetype_(I : I) : 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{`mut?#1499` : mut?, storagetype#801 : storagetype, zt : storagetype} zt:Tstoragetype_(I) => `%%`_fieldtype{`mut?#1499`, storagetype#801}(?(), zt) + prod{zt : storagetype} zt:Tstoragetype_(I) => `%%`_fieldtype(?(), zt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`mut?#1511` : mut?, storagetype#813 : storagetype, zt : storagetype} {{"("} {"mut"} {zt:Tstoragetype_(I)} {")"}} => `%%`_fieldtype{`mut?#1511`, storagetype#813}(?(`MUT`_mut), zt) + 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{ft : fieldtype, `char*#969` : char*, `id?` : char?, `char*#963` : char*} {{"("} {"field"} {?(`%`_name{`char*#963`}(lift(id?{id <- `id?`}))):Tid?{}} {ft:Tfieldtype_(I)} {")"}} => (ft, ?(`%`_name{`char*#969`}(lift(id?{id <- `id?`})))) + prod{ft : fieldtype, `id?` : char?} {{"("} {"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{t : valtype, `char*#981` : char*, `id?` : char?, `char*#975` : char*} {{"("} {"param"} {?(`%`_name{`char*#975`}(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => (t, ?(`%`_name{`char*#981`}(lift(id?{id <- `id?`})))) + prod{t : valtype, `id?` : char?} {{"("} {"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 @@ -121156,11 +96407,11 @@ grammar Tresult_(I : I) : valtype ;; ../../../../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{`X*#13361` : fieldtype*, `ft*` : fieldtype*, `name?*#431` : name?*, `name?*#432` : name?*, `name?*#433` : name?*, `name?*#434` : name?*, `name?*#435` : name?*, `name?*#436` : name?*, `name?*#437` : name?*, `name?*#438` : name?*, `name?*#439` : name?*, `name?*#440` : name?*, `name?**#15` : name?**, `char*#1005*` : char**, `id?*` : char?*, `deftype?*#2` : deftype?*, `char*#987*` : char**} {{"("} {"struct"} {(ft, ?(`%`_name{`char*#987`}(lift(id?{id <- `id?`}))))*{`char*#987` <- `char*#987*`, ft <- `ft*`, `id?` <- `id?*`}:Tlist(syntax (fieldtype, name?), grammar Tfield_(I))} {")"}} => (`STRUCT`_comptype(`%`_list{`X*#13361`}(ft*{ft <- `ft*`})), {`TYPES`{`name?*#431`} [], `TAGS`{`name?*#432`} [], `GLOBALS`{`name?*#433`} [], `MEMS`{`name?*#434`} [], `TABLES`{`name?*#435`} [], `FUNCS`{`name?*#436`} [], `DATAS`{`name?*#437`} [], `ELEMS`{`name?*#438`} [], `LOCALS`{`name?*#439`} [], `LABELS`{`name?*#440`} [], `FIELDS`{`name?**#15`} [?(`%`_name{`char*#1005`}(lift(id?{id <- `id?`})))*{`char*#1005` <- `char*#1005*`, `id?` <- `id?*`}], `TYPEDEFS`{`deftype?*#2`} []}) + 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{fieldtype#61 : fieldtype, ft : fieldtype, `name?*#441` : name?*, `name?*#442` : name?*, `name?*#443` : name?*, `name?*#444` : name?*, `name?*#445` : name?*, `name?*#446` : name?*, `name?*#447` : name?*, `name?*#448` : name?*, `name?*#449` : name?*, `name?*#450` : name?*, `name?**#16` : name?**, `deftype?*#3` : deftype?*} {{"("} {"array"} {ft:Tfieldtype_(I)} {")"}} => (`ARRAY`_comptype{fieldtype#61}(ft), {`TYPES`{`name?*#441`} [], `TAGS`{`name?*#442`} [], `GLOBALS`{`name?*#443`} [], `MEMS`{`name?*#444`} [], `TABLES`{`name?*#445`} [], `FUNCS`{`name?*#446`} [], `DATAS`{`name?*#447`} [], `ELEMS`{`name?*#448`} [], `LOCALS`{`name?*#449`} [], `LABELS`{`name?*#450`} [], `FIELDS`{`name?**#16`} [], `TYPEDEFS`{`deftype?*#3`} []}) + 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{resulttype#3032 : resulttype, `X*#13376` : valtype*, `t_1*` : valtype*, `X*#13389` : valtype*, `t_2*` : valtype*, `name?*#451` : name?*, `name?*#452` : name?*, `name?*#453` : name?*, `name?*#454` : name?*, `name?*#455` : name?*, `name?*#456` : name?*, `name?*#457` : name?*, `name?*#458` : name?*, `name?*#459` : name?*, `name?*#460` : name?*, `name?**#17` : name?**, `deftype?*#4` : deftype?*, `char*#1011*` : char**, `id?*` : char?*} {{"("} {"func"} {(t_1, ?(`%`_name{`char*#1011`}(lift(id?{id <- `id?`}))))*{`char*#1011` <- `char*#1011*`, `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#3032}(`%`_resulttype{`X*#13376`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13389`}(t_2*{t_2 <- `t_2*`})), {`TYPES`{`name?*#451`} [], `TAGS`{`name?*#452`} [], `GLOBALS`{`name?*#453`} [], `MEMS`{`name?*#454`} [], `TABLES`{`name?*#455`} [], `FUNCS`{`name?*#456`} [], `DATAS`{`name?*#457`} [], `ELEMS`{`name?*#458`} [], `LOCALS`{`name?*#459`} [], `LABELS`{`name?*#460`} [], `FIELDS`{`name?**#17`} [], `TYPEDEFS`{`deftype?*#4`} []}) + prod{`t_1*` : valtype*, `t_2*` : valtype*, `id?*` : char?*} {{"("} {"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 @@ -121170,17 +96421,17 @@ grammar Tfinal : 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{`final?#523` : final?, `typeuse*#523` : typeuse*, comptype#523 : comptype, `fin?` : final?, `typeidx#2121*` : typeidx*, `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{`final?#523`, `typeuse*#523`, comptype#523}(fin?{fin <- `fin?`}, `_IDX`_typeuse{typeidx#2121}(x)*{typeidx#2121 <- `typeidx#2121*`, x <- `x*`}, ct), I') + 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{st : subtype, I' : I, `name?*#461` : name?*, `char*#1023` : char*, `id?` : char?, `name?*#462` : name?*, `name?*#463` : name?*, `name?*#464` : name?*, `name?*#465` : name?*, `name?*#466` : name?*, `name?*#467` : name?*, `name?*#468` : name?*, `name?*#469` : name?*, `name?*#470` : name?*, `name?**#18` : name?**, `deftype?*#5` : deftype?*, `char*#1017` : char*} {{"("} {"type"} {?(`%`_name{`char*#1017`}(lift(id?{id <- `id?`}))):Tid?{}} {(st, I'):Tsubtype_(I)} {")"}} => (st, I' +++ {`TYPES`{`name?*#461`} [?(`%`_name{`char*#1023`}(lift(id?{id <- `id?`})))], `TAGS`{`name?*#462`} [], `GLOBALS`{`name?*#463`} [], `MEMS`{`name?*#464`} [], `TABLES`{`name?*#465`} [], `FUNCS`{`name?*#466`} [], `DATAS`{`name?*#467`} [], `ELEMS`{`name?*#468`} [], `LOCALS`{`name?*#469`} [], `LABELS`{`name?*#470`} [], `FIELDS`{`name?**#18`} [], `TYPEDEFS`{`deftype?*#5`} []}) + prod{st : subtype, I' : I, `id?` : char?} {{"("} {"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{`X*#13404` : subtype*, `st*` : subtype*, `I'*` : I*} {{"("} {"rec"} {(st, I')*{I' <- `I'*`, st <- `st*`}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(I))} {")"}} => (`REC`_rectype(`%`_list{`X*#13404`}(st*{st <- `st*`})), $concat_idctxt(I'*{I' <- `I'*`})) + 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 @@ -121192,88 +96443,88 @@ grammar Taddrtype : addrtype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tlimits : limits ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{u64#571 : u64, `u64?#545` : u64?, i#95590 : nat, n : n, i#95568 : nat} `%`_u64{i#95568}(n):Tu64 => `[%..%]`_limits{u64#571, `u64?#545`}(`%`_u64{i#95590}(n), ?()) + prod{n : n} `%`_u64(n):Tu64 => `[%..%]`_limits(`%`_u64(n), ?()) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{u64#583 : u64, `u64?#557` : u64?, i#95666 : nat, n : n, i#95688 : nat, m : m, i#95615 : nat, i#95642 : nat} {{`%`_u64{i#95615}(n):Tu64} {`%`_u64{i#95642}(m):Tu64}} => `[%..%]`_limits{u64#583, `u64?#557`}(`%`_u64{i#95666}(n), ?(`%`_u64{i#95688}(m))) + 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, `deftype?*#11` : deftype?*, i#95899 : nat, rectype#1807 : rectype, n#1503 : n, `X*#13419` : subtype*, `st*` : subtype*, i : n, `final?#577` : final?, `typeuse*#577` : typeuse*, comptype#577 : comptype, resulttype#3035 : resulttype, `X*#13434` : valtype*, `t_1*` : valtype*, `X*#13447` : valtype*, `t_2*` : valtype*, `name?*#521` : name?*, `name?*#522` : name?*, `name?*#523` : name?*, `name?*#524` : name?*, `name?*#525` : name?*, `name?*#526` : name?*, `name?*#527` : name?*, `name?*#528` : name?*, `name?*#529` : name?*, `char*#1113*` : char**, `name?*#530` : name?*, `name?**#24` : name?**, `deftype?*#12` : deftype?*} {{"("} {"type"} {x:Ttypeidx_(I)} {")"}} => (x, I') - -- if (I.`TYPEDEFS`_I{`deftype?*#11`}[x!`%`_idx{i#95899}.0] = ?(`_DEF`_deftype{rectype#1807, n#1503}(`REC`_rectype(`%`_list{`X*#13419`}(st*{st <- `st*`})), i))) - -- if (st*{st <- `st*`}[i] = `SUB`_subtype{`final?#577`, `typeuse*#577`, comptype#577}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3035}(`%`_resulttype{`X*#13434`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13447`}(t_2*{t_2 <- `t_2*`})))) - -- if (I' = {`TYPES`{`name?*#521`} [], `TAGS`{`name?*#522`} [], `GLOBALS`{`name?*#523`} [], `MEMS`{`name?*#524`} [], `TABLES`{`name?*#525`} [], `FUNCS`{`name?*#526`} [], `DATAS`{`name?*#527`} [], `ELEMS`{`name?*#528`} [], `LOCALS`{`name?*#529`} ?(`%`_name{`char*#1113`}([]))^|t_1*{t_1 <- `t_1*`}|{`char*#1113` <- `char*#1113*`}, `LABELS`{`name?*#530`} [], `FIELDS`{`name?**#24`} [], `TYPEDEFS`{`deftype?*#12`} []}) + 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, I' : I, `char*#1119*` : char**, `id?*` : char?*, `t_1*` : valtype*, `t_2*` : valtype*, `deftype?*#13` : deftype?*, i#95968 : nat, rectype#1819 : rectype, n#1515 : n, `X*#13462` : subtype*, `st*` : subtype*, i : n, `final?#601` : final?, `typeuse*#601` : typeuse*, comptype#601 : comptype, resulttype#3038 : resulttype, `X*#13477` : valtype*, `X*#13490` : valtype*, `name?*#531` : name?*, `name?*#532` : name?*, `name?*#533` : name?*, `name?*#534` : name?*, `name?*#535` : name?*, `name?*#536` : name?*, `name?*#537` : name?*, `name?*#538` : name?*, `name?*#539` : name?*, `char*#1137*` : char**, `name?*#540` : name?*, `name?**#25` : name?**, `deftype?*#14` : deftype?*} {{"("} {"type"} {x:Ttypeidx_(I)} {")"} {(t_1, ?(`%`_name{`char*#1119`}(lift(id?{id <- `id?`}))))*{`char*#1119` <- `char*#1119*`, `id?` <- `id?*`, t_1 <- `t_1*`}:Tparam_(I)*{}} {t_2*{t_2 <- `t_2*`}:Tresult_(I)*{}}} => (x, I') - -- if (I.`TYPEDEFS`_I{`deftype?*#13`}[x!`%`_idx{i#95968}.0] = ?(`_DEF`_deftype{rectype#1819, n#1515}(`REC`_rectype(`%`_list{`X*#13462`}(st*{st <- `st*`})), i))) - -- if (st*{st <- `st*`}[i] = `SUB`_subtype{`final?#601`, `typeuse*#601`, comptype#601}(?(`FINAL`_final), [], `FUNC%->%`_comptype{resulttype#3038}(`%`_resulttype{`X*#13477`}(t_1*{t_1 <- `t_1*`}), `%`_resulttype{`X*#13490`}(t_2*{t_2 <- `t_2*`})))) - -- if (I' = {`TYPES`{`name?*#531`} [], `TAGS`{`name?*#532`} [], `GLOBALS`{`name?*#533`} [], `MEMS`{`name?*#534`} [], `TABLES`{`name?*#535`} [], `FUNCS`{`name?*#536`} [], `DATAS`{`name?*#537`} [], `ELEMS`{`name?*#538`} [], `LOCALS`{`name?*#539`} ?(`%`_name{`char*#1137`}(lift(id?{id <- `id?`})))*{`char*#1137` <- `char*#1137*`, `id?` <- `id?*`}, `LABELS`{`name?*#540`} [], `FIELDS`{`name?**#25`} [], `TYPEDEFS`{`deftype?*#14`} []}) + prod{x : idx, I' : I, `id?*` : char?*, `t_1*` : valtype*, `t_2*` : valtype*, `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{typeidx#2123 : typeidx, x : idx, I' : I} (x, I'):Ttypeuse_(I) => `_IDX`_tagtype{typeidx#2123}(x) + 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{`mut?#1561` : mut?, valtype#1167 : valtype, t : valtype} t:Tvaltype_(I) => `%%`_globaltype{`mut?#1561`, valtype#1167}(?(), t) + prod{t : valtype} t:Tvaltype_(I) => `%%`_globaltype(?(), t) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`mut?#1573` : mut?, valtype#1179 : valtype, t : valtype} {{"("} {"mut"} {t:Tvaltype_(I)} {")"}} => `%%`_globaltype{`mut?#1573`, valtype#1179}(?(`MUT`_mut), t) + 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{addrtype#1483 : addrtype, limits#1483 : limits, at : addrtype, lim : limits} {{at:Taddrtype} {lim:Tlimits}} => `%%PAGE`_memtype{addrtype#1483, limits#1483}(at, lim) + 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{addrtype#1495 : addrtype, limits#1495 : limits, reftype#4291 : reftype, at : addrtype, lim : limits, rt : reftype} {{at:Taddrtype} {lim:Tlimits} {rt:Treftype_(I)}} => `%%%`_tabletype{addrtype#1495, limits#1495, reftype#4291}(at, lim, rt) + 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{tagtype#436 : tagtype, jt : tagtype, `name?*#471` : name?*, `name?*#472` : name?*, `char*#1035` : char*, `id?` : char?, `name?*#473` : name?*, `name?*#474` : name?*, `name?*#475` : name?*, `name?*#476` : name?*, `name?*#477` : name?*, `name?*#478` : name?*, `name?*#479` : name?*, `name?*#480` : name?*, `name?**#19` : name?**, `deftype?*#6` : deftype?*, `char*#1029` : char*} {{"("} {"tag"} {?(`%`_name{`char*#1029`}(lift(id?{id <- `id?`}))):Tid?{}} {jt:Ttagtype_(I)} {")"}} => (`TAG`_externtype{tagtype#436}(jt), {`TYPES`{`name?*#471`} [], `TAGS`{`name?*#472`} [?(`%`_name{`char*#1035`}(lift(id?{id <- `id?`})))], `GLOBALS`{`name?*#473`} [], `MEMS`{`name?*#474`} [], `TABLES`{`name?*#475`} [], `FUNCS`{`name?*#476`} [], `DATAS`{`name?*#477`} [], `ELEMS`{`name?*#478`} [], `LOCALS`{`name?*#479`} [], `LABELS`{`name?*#480`} [], `FIELDS`{`name?**#19`} [], `TYPEDEFS`{`deftype?*#6`} []}) + prod{jt : tagtype, `id?` : char?} {{"("} {"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{globaltype#2397 : globaltype, gt : globaltype, `name?*#481` : name?*, `name?*#482` : name?*, `name?*#483` : name?*, `char*#1047` : char*, `id?` : char?, `name?*#484` : name?*, `name?*#485` : name?*, `name?*#486` : name?*, `name?*#487` : name?*, `name?*#488` : name?*, `name?*#489` : name?*, `name?*#490` : name?*, `name?**#20` : name?**, `deftype?*#7` : deftype?*, `char*#1041` : char*} {{"("} {"global"} {?(`%`_name{`char*#1041`}(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {")"}} => (`GLOBAL`_externtype{globaltype#2397}(gt), {`TYPES`{`name?*#481`} [], `TAGS`{`name?*#482`} [], `GLOBALS`{`name?*#483`} [?(`%`_name{`char*#1047`}(lift(id?{id <- `id?`})))], `MEMS`{`name?*#484`} [], `TABLES`{`name?*#485`} [], `FUNCS`{`name?*#486`} [], `DATAS`{`name?*#487`} [], `ELEMS`{`name?*#488`} [], `LOCALS`{`name?*#489`} [], `LABELS`{`name?*#490`} [], `FIELDS`{`name?**#20`} [], `TYPEDEFS`{`deftype?*#7`} []}) + prod{gt : globaltype, `id?` : char?} {{"("} {"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{memtype#858 : memtype, mt : memtype, `name?*#491` : name?*, `name?*#492` : name?*, `name?*#493` : name?*, `name?*#494` : name?*, `char*#1059` : char*, `id?` : char?, `name?*#495` : name?*, `name?*#496` : name?*, `name?*#497` : name?*, `name?*#498` : name?*, `name?*#499` : name?*, `name?*#500` : name?*, `name?**#21` : name?**, `deftype?*#8` : deftype?*, `char*#1053` : char*} {{"("} {"memory"} {?(`%`_name{`char*#1053`}(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (`MEM`_externtype{memtype#858}(mt), {`TYPES`{`name?*#491`} [], `TAGS`{`name?*#492`} [], `GLOBALS`{`name?*#493`} [], `MEMS`{`name?*#494`} [?(`%`_name{`char*#1059`}(lift(id?{id <- `id?`})))], `TABLES`{`name?*#495`} [], `FUNCS`{`name?*#496`} [], `DATAS`{`name?*#497`} [], `ELEMS`{`name?*#498`} [], `LOCALS`{`name?*#499`} [], `LABELS`{`name?*#500`} [], `FIELDS`{`name?**#21`} [], `TYPEDEFS`{`deftype?*#8`} []}) + prod{mt : memtype, `id?` : char?} {{"("} {"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{tabletype#1280 : tabletype, tt : tabletype, `name?*#501` : name?*, `name?*#502` : name?*, `name?*#503` : name?*, `name?*#504` : name?*, `name?*#505` : name?*, `char*#1071` : char*, `id?` : char?, `name?*#506` : name?*, `name?*#507` : name?*, `name?*#508` : name?*, `name?*#509` : name?*, `name?*#510` : name?*, `name?**#22` : name?**, `deftype?*#9` : deftype?*, `char*#1065` : char*} {{"("} {"table"} {?(`%`_name{`char*#1065`}(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {")"}} => (`TABLE`_externtype{tabletype#1280}(tt), {`TYPES`{`name?*#501`} [], `TAGS`{`name?*#502`} [], `GLOBALS`{`name?*#503`} [], `MEMS`{`name?*#504`} [], `TABLES`{`name?*#505`} [?(`%`_name{`char*#1071`}(lift(id?{id <- `id?`})))], `FUNCS`{`name?*#506`} [], `DATAS`{`name?*#507`} [], `ELEMS`{`name?*#508`} [], `LOCALS`{`name?*#509`} [], `LABELS`{`name?*#510`} [], `FIELDS`{`name?**#22`} [], `TYPEDEFS`{`deftype?*#9`} []}) + prod{tt : tabletype, `id?` : char?} {{"("} {"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{typeuse#77 : typeuse, typeidx#2125 : typeidx, x : idx, `name?*#511` : name?*, `name?*#512` : name?*, `name?*#513` : name?*, `name?*#514` : name?*, `name?*#515` : name?*, `name?*#516` : name?*, `char*#1083` : char*, `id?` : char?, `name?*#517` : name?*, `name?*#518` : name?*, `name?*#519` : name?*, `name?*#520` : name?*, `name?**#23` : name?**, `deftype?*#10` : deftype?*, `char*#1077` : char*, I' : I} {{"("} {"func"} {?(`%`_name{`char*#1077`}(lift(id?{id <- `id?`}))):Tid?{}} {(x, I'):Ttypeuse_(I)} {")"}} => (`FUNC`_externtype{typeuse#77}(`_IDX`_typeuse{typeidx#2125}(x)), {`TYPES`{`name?*#511`} [], `TAGS`{`name?*#512`} [], `GLOBALS`{`name?*#513`} [], `MEMS`{`name?*#514`} [], `TABLES`{`name?*#515`} [], `FUNCS`{`name?*#516`} [?(`%`_name{`char*#1083`}(lift(id?{id <- `id?`})))], `DATAS`{`name?*#517`} [], `ELEMS`{`name?*#518`} [], `LOCALS`{`name?*#519`} [], `LABELS`{`name?*#520`} [], `FIELDS`{`name?**#23`} [], `TYPEDEFS`{`deftype?*#10`} []}) + prod{x : idx, `id?` : char?, 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{`name?*#541` : name?*, `name?*#542` : name?*, `name?*#543` : name?*, `name?*#544` : name?*, `name?*#545` : name?*, `name?*#546` : name?*, `name?*#547` : name?*, `name?*#548` : name?*, `name?*#549` : name?*, `name?*#550` : name?*, `name?**#26` : name?**, `deftype?*#17` : deftype?*} eps => (?(), {`TYPES`{`name?*#541`} [], `TAGS`{`name?*#542`} [], `GLOBALS`{`name?*#543`} [], `MEMS`{`name?*#544`} [], `TABLES`{`name?*#545`} [], `FUNCS`{`name?*#546`} [], `DATAS`{`name?*#547`} [], `ELEMS`{`name?*#548`} [], `LOCALS`{`name?*#549`} [], `LABELS`{`name?*#550`} [], `FIELDS`{`name?**#26`} [], `TYPEDEFS`{`deftype?*#17`} []} +++ I) + 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, `name?*#551` : name?*, `name?*#552` : name?*, `name?*#553` : name?*, `name?*#554` : name?*, `name?*#555` : name?*, `name?*#556` : name?*, `name?*#557` : name?*, `name?*#558` : name?*, `name?*#559` : name?*, `name?*#560` : name?*, `name?**#27` : name?**, `deftype?*#18` : deftype?*, `name?*#566` : name?*} id:Tid => (?(id), {`TYPES`{`name?*#551`} [], `TAGS`{`name?*#552`} [], `GLOBALS`{`name?*#553`} [], `MEMS`{`name?*#554`} [], `TABLES`{`name?*#555`} [], `FUNCS`{`name?*#556`} [], `DATAS`{`name?*#557`} [], `ELEMS`{`name?*#558`} [], `LOCALS`{`name?*#559`} [], `LABELS`{`name?*#560`} [?(id)], `FIELDS`{`name?**#27`} [], `TYPEDEFS`{`deftype?*#18`} []} +++ I) - -- if ~ (?(id) <- I.`LABELS`_I{`name?*#566`}) + 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, `name?*#567` : name?*, `name?*#568` : name?*, `name?*#569` : name?*, `name?*#570` : name?*, `name?*#571` : name?*, `name?*#572` : name?*, `name?*#573` : name?*, `name?*#574` : name?*, `name?*#575` : name?*, `name?*#576` : name?*, `name?**#28` : name?**, `deftype?*#19` : deftype?*, `name?*#577` : name?*, x : idx, i#96077 : nat, `name?*#578` : name?*, i#96087 : nat} id:Tid => (?(id), {`TYPES`{`name?*#567`} [], `TAGS`{`name?*#568`} [], `GLOBALS`{`name?*#569`} [], `MEMS`{`name?*#570`} [], `TABLES`{`name?*#571`} [], `FUNCS`{`name?*#572`} [], `DATAS`{`name?*#573`} [], `ELEMS`{`name?*#574`} [], `LOCALS`{`name?*#575`} [], `LABELS`{`name?*#576`} [?(id)], `FIELDS`{`name?**#28`} [], `TYPEDEFS`{`deftype?*#19`} []} +++ I[`LABELS`_I{`name?*#577`}[x!`%`_idx{i#96077}.0] = ?()]) - -- if (?(id) = I.`LABELS`_I{`name?*#578`}[x!`%`_idx{i#96087}.0]) + 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{`valtype?#11` : valtype?, `t?` : valtype?} t?{t <- `t?`}:Tresult_(I)?{} => `_RESULT`_blocktype{`valtype?#11`}(t?{t <- `t?`}) + prod{`t?` : valtype?} t?{t <- `t?`}:Tresult_(I)?{} => `_RESULT`_blocktype(t?{t <- `t?`}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{typeidx#2127 : typeidx, x : idx, I' : I, `name?*#579` : name?*, `name?*#580` : name?*, `name?*#581` : name?*, `name?*#582` : name?*, `name?*#583` : name?*, `name?*#584` : name?*, `name?*#585` : name?*, `name?*#586` : name?*, `name?*#587` : name?*, `char*#1231*` : char**, `name?*#588` : name?*, `name?**#29` : name?**, `deftype?*#20` : deftype?*} (x, I'):Ttypeuse_(I) => `_IDX`_blocktype{typeidx#2127}(x) - -- if (I' = {`TYPES`{`name?*#579`} [], `TAGS`{`name?*#580`} [], `GLOBALS`{`name?*#581`} [], `MEMS`{`name?*#582`} [], `TABLES`{`name?*#583`} [], `FUNCS`{`name?*#584`} [], `DATAS`{`name?*#585`} [], `ELEMS`{`name?*#586`} [], `LOCALS`{`name?*#587`} ?(`%`_name{`char*#1231`}([]))*{`char*#1231` <- `char*#1231*`}, `LABELS`{`name?*#588`} [], `FIELDS`{`name?**#29`} [], `TYPEDEFS`{`deftype?*#20`} []}) + 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{tagidx#29 : tagidx, labelidx#123 : labelidx, x : idx, l : labelidx} {{"("} {"catch"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => `CATCH`_catch{tagidx#29, labelidx#123}(x, l) + 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{tagidx#31 : tagidx, labelidx#125 : labelidx, x : idx, l : labelidx} {{"("} {"catch_ref"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => `CATCH_REF`_catch{tagidx#31, labelidx#125}(x, l) + 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{labelidx#127 : labelidx, l : labelidx} {{"("} {"catch_all"} {l:Tlabelidx_(I)} {")"}} => `CATCH_ALL`_catch{labelidx#127}(l) + prod{l : labelidx} {{"("} {"catch_all"} {l:Tlabelidx_(I)} {")"}} => `CATCH_ALL`_catch(l) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{labelidx#129 : labelidx, l : labelidx} {{"("} {"catch_all_ref"} {l:Tlabelidx_(I)} {")"}} => `CATCH_ALL_REF`_catch{labelidx#129}(l) + 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* @@ -121286,22 +96537,22 @@ grammar Tlaneidx : laneidx ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec grammar Talign_(N : N) : u64 ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i#97737 : nat, m : m, i#97711 : nat, n : n} {{"align="} {`%`_u64{i#97711}(m):Tu64}} => `%`_u64{i#97737}(m) + 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{i#97761 : nat} eps => `%`_u64{i#97761}(N) + 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{i#97664 : nat, n : n, i#97638 : nat} {{"offset="} {`%`_u64{i#97638}(n):Tu64}} => `%`_u64{i#97664}(n) + prod{n : n} {{"offset="} {`%`_u64(n):Tu64}} => `%`_u64(n) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{i#97686 : nat} eps => `%`_u64{i#97686}(0) + 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{u32#47 : u32, i#97591 : nat, n : n, u64#609 : u64, i#97613 : nat, m : m, i#97540 : nat, i#97567 : nat} {{`%`_u64{i#97540}(n):Toffset} {`%`_u64{i#97567}(m):Talign_(N)}} => {`ALIGN`{u32#47} `%`_u32{i#97591}(n), `OFFSET`{u64#609} `%`_u64{i#97613}(m)} + 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 @@ -121312,173 +96563,173 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "drop" => `DROP`_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`valtype*?#15` : valtype*?, `t*?` : valtype*?} {{"select"} {t*{t <- `t*`}:Tresult_(I)*{}?{`t*` <- `t*?`}}} => `SELECT`_instr{`valtype*?#15`}(t*{t <- `t*`}?{`t*` <- `t*?`}) + 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{labelidx#131 : labelidx, l : labelidx} {{"br"} {l:Tlabelidx_(I)}} => `BR`_instr{labelidx#131}(l) + prod{l : labelidx} {{"br"} {l:Tlabelidx_(I)}} => `BR`_instr(l) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{labelidx#133 : labelidx, l : labelidx} {{"br_if"} {l:Tlabelidx_(I)}} => `BR_IF`_instr{labelidx#133}(l) + prod{l : labelidx} {{"br_if"} {l:Tlabelidx_(I)}} => `BR_IF`_instr(l) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`labelidx*#56` : labelidx*, labelidx#135 : labelidx, `l*` : labelidx*, l' : labelidx} {{"br_table"} {l*{l <- `l*`}:Tlabelidx_(I)*{}} {l':Tlabelidx_(I)}} => `BR_TABLE`_instr{`labelidx*#56`, labelidx#135}(l*{l <- `l*`}, l') + 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{labelidx#137 : labelidx, l : labelidx} {{"br_on_null"} {l:Tlabelidx_(I)}} => `BR_ON_NULL`_instr{labelidx#137}(l) + prod{l : labelidx} {{"br_on_null"} {l:Tlabelidx_(I)}} => `BR_ON_NULL`_instr(l) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{labelidx#139 : labelidx, l : labelidx} {{"br_on_non_null"} {l:Tlabelidx_(I)}} => `BR_ON_NON_NULL`_instr{labelidx#139}(l) + 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{labelidx#141 : labelidx, reftype#4305 : reftype, 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{labelidx#141, reftype#4305}(l, rt_1, rt_2) + 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{labelidx#143 : labelidx, reftype#4308 : reftype, 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{labelidx#143, reftype#4308}(l, rt_1, rt_2) + 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{funcidx#3383 : funcidx, x : idx} {{"call"} {x:Tfuncidx_(I)}} => `CALL`_instr{funcidx#3383}(x) + prod{x : idx} {{"call"} {x:Tfuncidx_(I)}} => `CALL`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{typeuse#79 : typeuse, typeidx#2129 : typeidx, x : idx} {{"call_ref"} {x:Ttypeidx_(I)}} => `CALL_REF`_instr{typeuse#79}(`_IDX`_typeuse{typeidx#2129}(x)) + prod{x : idx} {{"call_ref"} {x:Ttypeidx_(I)}} => `CALL_REF`_instr(`_IDX`_typeuse(x)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{tableidx#154 : tableidx, typeuse#81 : typeuse, x : idx, typeidx#2131 : typeidx, y : idx, I' : I, `name?*#589` : name?*, `name?*#590` : name?*, `name?*#591` : name?*, `name?*#592` : name?*, `name?*#593` : name?*, `name?*#594` : name?*, `name?*#595` : name?*, `name?*#596` : name?*, `name?*#597` : name?*, `char*#1315*` : char**, `name?*#598` : name?*, `name?**#30` : name?**, `deftype?*#21` : deftype?*} {{"call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => `CALL_INDIRECT`_instr{tableidx#154, typeuse#81}(x, `_IDX`_typeuse{typeidx#2131}(y)) - -- if (I' = {`TYPES`{`name?*#589`} [], `TAGS`{`name?*#590`} [], `GLOBALS`{`name?*#591`} [], `MEMS`{`name?*#592`} [], `TABLES`{`name?*#593`} [], `FUNCS`{`name?*#594`} [], `DATAS`{`name?*#595`} [], `ELEMS`{`name?*#596`} [], `LOCALS`{`name?*#597`} ?(`%`_name{`char*#1315`}([]))*{`char*#1315` <- `char*#1315*`}, `LABELS`{`name?*#598`} [], `FIELDS`{`name?**#30`} [], `TYPEDEFS`{`deftype?*#21`} []}) + 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{funcidx#3385 : funcidx, x : idx} {{"return_call"} {x:Tfuncidx_(I)}} => `RETURN_CALL`_instr{funcidx#3385}(x) + prod{x : idx} {{"return_call"} {x:Tfuncidx_(I)}} => `RETURN_CALL`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{typeuse#83 : typeuse, typeidx#2133 : typeidx, x : idx} {{"return_call_ref"} {x:Ttypeidx_(I)}} => `RETURN_CALL_REF`_instr{typeuse#83}(`_IDX`_typeuse{typeidx#2133}(x)) + 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{tableidx#156 : tableidx, typeuse#85 : typeuse, x : idx, typeidx#2135 : typeidx, y : idx, I' : I, `name?*#599` : name?*, `name?*#600` : name?*, `name?*#601` : name?*, `name?*#602` : name?*, `name?*#603` : name?*, `name?*#604` : name?*, `name?*#605` : name?*, `name?*#606` : name?*, `name?*#607` : name?*, `char*#1345*` : char**, `name?*#608` : name?*, `name?**#31` : name?**, `deftype?*#22` : deftype?*} {{"return_call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => `RETURN_CALL_INDIRECT`_instr{tableidx#156, typeuse#85}(x, `_IDX`_typeuse{typeidx#2135}(y)) - -- if (I' = {`TYPES`{`name?*#599`} [], `TAGS`{`name?*#600`} [], `GLOBALS`{`name?*#601`} [], `MEMS`{`name?*#602`} [], `TABLES`{`name?*#603`} [], `FUNCS`{`name?*#604`} [], `DATAS`{`name?*#605`} [], `ELEMS`{`name?*#606`} [], `LOCALS`{`name?*#607`} ?(`%`_name{`char*#1345`}([]))*{`char*#1345` <- `char*#1345*`}, `LABELS`{`name?*#608`} [], `FIELDS`{`name?**#31`} [], `TYPEDEFS`{`deftype?*#22`} []}) + 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{tagidx#33 : tagidx, x : idx} {{"throw"} {x:Ttagidx_(I)}} => `THROW`_instr{tagidx#33}(x) + 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{localidx#27 : localidx, x : idx} {{"local.get"} {x:Tlocalidx_(I)}} => `LOCAL.GET`_instr{localidx#27}(x) + prod{x : idx} {{"local.get"} {x:Tlocalidx_(I)}} => `LOCAL.GET`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{localidx#29 : localidx, x : idx} {{"local.set"} {x:Tlocalidx_(I)}} => `LOCAL.SET`_instr{localidx#29}(x) + prod{x : idx} {{"local.set"} {x:Tlocalidx_(I)}} => `LOCAL.SET`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{localidx#31 : localidx, x : idx} {{"local.tee"} {x:Tlocalidx_(I)}} => `LOCAL.TEE`_instr{localidx#31}(x) + prod{x : idx} {{"local.tee"} {x:Tlocalidx_(I)}} => `LOCAL.TEE`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{globalidx#31 : globalidx, x : idx} {{"global.get"} {x:Tglobalidx_(I)}} => `GLOBAL.GET`_instr{globalidx#31}(x) + prod{x : idx} {{"global.get"} {x:Tglobalidx_(I)}} => `GLOBAL.GET`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{globalidx#33 : globalidx, x : idx} {{"global.set"} {x:Tglobalidx_(I)}} => `GLOBAL.SET`_instr{globalidx#33}(x) + prod{x : idx} {{"global.set"} {x:Tglobalidx_(I)}} => `GLOBAL.SET`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{tableidx#158 : tableidx, x : idx} {{"table.get"} {x:Ttableidx_(I)}} => `TABLE.GET`_instr{tableidx#158}(x) + prod{x : idx} {{"table.get"} {x:Ttableidx_(I)}} => `TABLE.GET`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{tableidx#160 : tableidx, x : idx} {{"table.set"} {x:Ttableidx_(I)}} => `TABLE.SET`_instr{tableidx#160}(x) + prod{x : idx} {{"table.set"} {x:Ttableidx_(I)}} => `TABLE.SET`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{tableidx#162 : tableidx, x : idx} {{"table.size"} {x:Ttableidx_(I)}} => `TABLE.SIZE`_instr{tableidx#162}(x) + prod{x : idx} {{"table.size"} {x:Ttableidx_(I)}} => `TABLE.SIZE`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{tableidx#164 : tableidx, x : idx} {{"table.grow"} {x:Ttableidx_(I)}} => `TABLE.GROW`_instr{tableidx#164}(x) + prod{x : idx} {{"table.grow"} {x:Ttableidx_(I)}} => `TABLE.GROW`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{tableidx#166 : tableidx, x : idx} {{"table.fill"} {x:Ttableidx_(I)}} => `TABLE.FILL`_instr{tableidx#166}(x) + prod{x : idx} {{"table.fill"} {x:Ttableidx_(I)}} => `TABLE.FILL`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{tableidx#168 : tableidx, x_1 : idx, x_2 : idx} {{"table.copy"} {x_1:Ttableidx_(I)} {x_2:Ttableidx_(I)}} => `TABLE.COPY`_instr{tableidx#168}(x_1, x_2) + 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{tableidx#171 : tableidx, elemidx#57 : elemidx, x : idx, y : idx} {{"table.init"} {x:Ttableidx_(I)} {y:Telemidx_(I)}} => `TABLE.INIT`_instr{tableidx#171, elemidx#57}(x, y) + 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{elemidx#59 : elemidx, x : idx} {{"elem.drop"} {x:Telemidx_(I)}} => `ELEM.DROP`_instr{elemidx#59}(x) + prod{x : idx} {{"elem.drop"} {x:Telemidx_(I)}} => `ELEM.DROP`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`numtype?#44` : numtype?, memidx#278 : memidx, memarg#181 : memarg, x : idx, ao : memarg} {{"i32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => `LOAD`_instr{`numtype?#44`, memidx#278, memarg#181}(`I32`_numtype, ?(), x, ao) + 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{`numtype?#45` : numtype?, memidx#280 : memidx, memarg#183 : memarg, x : idx, ao : memarg} {{"i64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => `LOAD`_instr{`numtype?#45`, memidx#280, memarg#183}(`I64`_numtype, ?(), x, ao) + 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{`numtype?#46` : numtype?, memidx#282 : memidx, memarg#185 : memarg, x : idx, ao : memarg} {{"f32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => `LOAD`_instr{`numtype?#46`, memidx#282, memarg#185}(`F32`_numtype, ?(), x, ao) + 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{`numtype?#47` : numtype?, memidx#284 : memidx, memarg#187 : memarg, x : idx, ao : memarg} {{"f64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => `LOAD`_instr{`numtype?#47`, memidx#284, memarg#187}(`F64`_numtype, ?(), x, ao) + 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{`numtype?#48` : numtype?, memidx#286 : memidx, memarg#189 : memarg, sz#1643 : sz, sx#15729 : sx, i#97957 : nat, i#97964 : nat, x : idx, ao : memarg} {{"i32.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => `LOAD`_instr{`numtype?#48`, memidx#286, memarg#189}(`I32`_numtype, ?(`%_%`_loadop_{sz#1643, sx#15729, i#97957}(`%`_sz{i#97964}(8), `S`_sx)), x, ao) + 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{`numtype?#49` : numtype?, memidx#288 : memidx, memarg#191 : memarg, sz#1661 : sz, sx#15747 : sx, i#98021 : nat, i#98028 : nat, x : idx, ao : memarg} {{"i32.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => `LOAD`_instr{`numtype?#49`, memidx#288, memarg#191}(`I32`_numtype, ?(`%_%`_loadop_{sz#1661, sx#15747, i#98021}(`%`_sz{i#98028}(8), `U`_sx)), x, ao) + 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{`numtype?#50` : numtype?, memidx#290 : memidx, memarg#193 : memarg, sz#1679 : sz, sx#15765 : sx, i#98085 : nat, i#98092 : nat, x : idx, ao : memarg} {{"i32.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => `LOAD`_instr{`numtype?#50`, memidx#290, memarg#193}(`I32`_numtype, ?(`%_%`_loadop_{sz#1679, sx#15765, i#98085}(`%`_sz{i#98092}(16), `S`_sx)), x, ao) + 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{`numtype?#51` : numtype?, memidx#292 : memidx, memarg#195 : memarg, sz#1697 : sz, sx#15783 : sx, i#98149 : nat, i#98156 : nat, x : idx, ao : memarg} {{"i32.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => `LOAD`_instr{`numtype?#51`, memidx#292, memarg#195}(`I32`_numtype, ?(`%_%`_loadop_{sz#1697, sx#15783, i#98149}(`%`_sz{i#98156}(16), `U`_sx)), x, ao) + 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{`numtype?#52` : numtype?, memidx#294 : memidx, memarg#197 : memarg, sz#1715 : sz, sx#15801 : sx, i#98213 : nat, i#98220 : nat, x : idx, ao : memarg} {{"i64.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => `LOAD`_instr{`numtype?#52`, memidx#294, memarg#197}(`I64`_numtype, ?(`%_%`_loadop_{sz#1715, sx#15801, i#98213}(`%`_sz{i#98220}(8), `S`_sx)), x, ao) + 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{`numtype?#53` : numtype?, memidx#296 : memidx, memarg#199 : memarg, sz#1733 : sz, sx#15819 : sx, i#98277 : nat, i#98284 : nat, x : idx, ao : memarg} {{"i64.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => `LOAD`_instr{`numtype?#53`, memidx#296, memarg#199}(`I64`_numtype, ?(`%_%`_loadop_{sz#1733, sx#15819, i#98277}(`%`_sz{i#98284}(8), `U`_sx)), x, ao) + 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{`numtype?#54` : numtype?, memidx#298 : memidx, memarg#201 : memarg, sz#1751 : sz, sx#15837 : sx, i#98341 : nat, i#98348 : nat, x : idx, ao : memarg} {{"i64.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => `LOAD`_instr{`numtype?#54`, memidx#298, memarg#201}(`I64`_numtype, ?(`%_%`_loadop_{sz#1751, sx#15837, i#98341}(`%`_sz{i#98348}(16), `S`_sx)), x, ao) + 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{`numtype?#55` : numtype?, memidx#300 : memidx, memarg#203 : memarg, sz#1769 : sz, sx#15855 : sx, i#98405 : nat, i#98412 : nat, x : idx, ao : memarg} {{"i64.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => `LOAD`_instr{`numtype?#55`, memidx#300, memarg#203}(`I64`_numtype, ?(`%_%`_loadop_{sz#1769, sx#15855, i#98405}(`%`_sz{i#98412}(16), `U`_sx)), x, ao) + 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{`numtype?#56` : numtype?, memidx#302 : memidx, memarg#205 : memarg, sz#1787 : sz, sx#15873 : sx, i#98469 : nat, i#98476 : nat, x : idx, ao : memarg} {{"i64.load32_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => `LOAD`_instr{`numtype?#56`, memidx#302, memarg#205}(`I64`_numtype, ?(`%_%`_loadop_{sz#1787, sx#15873, i#98469}(`%`_sz{i#98476}(32), `S`_sx)), x, ao) + 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{`numtype?#57` : numtype?, memidx#304 : memidx, memarg#207 : memarg, sz#1805 : sz, sx#15891 : sx, i#98533 : nat, i#98540 : nat, x : idx, ao : memarg} {{"i64.load32_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => `LOAD`_instr{`numtype?#57`, memidx#304, memarg#207}(`I64`_numtype, ?(`%_%`_loadop_{sz#1805, sx#15891, i#98533}(`%`_sz{i#98540}(32), `U`_sx)), x, ao) + 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{`vectype?#27` : vectype?, memidx#306 : memidx, memarg#209 : memarg, x : idx, ao : memarg} {{"v128.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => `VLOAD`_instr{`vectype?#27`, memidx#306, memarg#209}(`V128`_vectype, ?(), x, ao) + 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{`vectype?#28` : vectype?, memidx#308 : memidx, memarg#211 : memarg, sz#1852 : sz, M#349 : M, sx#15908 : sx, i#98628 : nat, i#98635 : nat, x : idx, ao : memarg} {{"v128.load8x8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => `VLOAD`_instr{`vectype?#28`, memidx#308, memarg#211}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1852, M#349, sx#15908, i#98628}(`%`_sz{i#98635}(8), 8, `S`_sx)), x, ao) + 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{`vectype?#29` : vectype?, memidx#310 : memidx, memarg#213 : memarg, sz#1899 : sz, M#366 : M, sx#15925 : sx, i#98692 : nat, i#98699 : nat, x : idx, ao : memarg} {{"v128.load8x8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => `VLOAD`_instr{`vectype?#29`, memidx#310, memarg#213}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1899, M#366, sx#15925, i#98692}(`%`_sz{i#98699}(8), 8, `U`_sx)), x, ao) + 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{`vectype?#30` : vectype?, memidx#312 : memidx, memarg#215 : memarg, sz#1946 : sz, M#383 : M, sx#15942 : sx, i#98756 : nat, i#98763 : nat, x : idx, ao : memarg} {{"v128.load16x4_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => `VLOAD`_instr{`vectype?#30`, memidx#312, memarg#215}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1946, M#383, sx#15942, i#98756}(`%`_sz{i#98763}(16), 4, `S`_sx)), x, ao) + 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{`vectype?#31` : vectype?, memidx#314 : memidx, memarg#217 : memarg, sz#1993 : sz, M#400 : M, sx#15959 : sx, i#98820 : nat, i#98827 : nat, x : idx, ao : memarg} {{"v128.load16x4_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => `VLOAD`_instr{`vectype?#31`, memidx#314, memarg#217}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#1993, M#400, sx#15959, i#98820}(`%`_sz{i#98827}(16), 4, `U`_sx)), x, ao) + 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{`vectype?#32` : vectype?, memidx#316 : memidx, memarg#219 : memarg, sz#2040 : sz, M#417 : M, sx#15976 : sx, i#98884 : nat, i#98891 : nat, x : idx, ao : memarg} {{"v128.load32x2_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => `VLOAD`_instr{`vectype?#32`, memidx#316, memarg#219}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#2040, M#417, sx#15976, i#98884}(`%`_sz{i#98891}(32), 2, `S`_sx)), x, ao) + 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{`vectype?#33` : vectype?, memidx#318 : memidx, memarg#221 : memarg, sz#2087 : sz, M#434 : M, sx#15993 : sx, i#98948 : nat, i#98955 : nat, x : idx, ao : memarg} {{"v128.load32x2_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => `VLOAD`_instr{`vectype?#33`, memidx#318, memarg#221}(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_{sz#2087, M#434, sx#15993, i#98948}(`%`_sz{i#98955}(32), 2, `U`_sx)), x, ao) + 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{`vectype?#34` : vectype?, memidx#320 : memidx, memarg#223 : memarg, sz#2134 : sz, i#99018 : nat, x : idx, ao : memarg} {{"v128.load8_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => `VLOAD`_instr{`vectype?#34`, memidx#320, memarg#223}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#2134}(`%`_sz{i#99018}(8))), x, ao) + 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{`vectype?#35` : vectype?, memidx#322 : memidx, memarg#225 : memarg, sz#2181 : sz, i#99081 : nat, x : idx, ao : memarg} {{"v128.load16_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => `VLOAD`_instr{`vectype?#35`, memidx#322, memarg#225}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#2181}(`%`_sz{i#99081}(16))), x, ao) + 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{`vectype?#36` : vectype?, memidx#324 : memidx, memarg#227 : memarg, sz#2228 : sz, i#99144 : nat, x : idx, ao : memarg} {{"v128.load32_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => `VLOAD`_instr{`vectype?#36`, memidx#324, memarg#227}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#2228}(`%`_sz{i#99144}(32))), x, ao) + 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{`vectype?#37` : vectype?, memidx#326 : memidx, memarg#229 : memarg, sz#2275 : sz, i#99207 : nat, x : idx, ao : memarg} {{"v128.load64_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => `VLOAD`_instr{`vectype?#37`, memidx#326, memarg#229}(`V128`_vectype, ?(`SPLAT`_vloadop_{sz#2275}(`%`_sz{i#99207}(64))), x, ao) + 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{`vectype?#38` : vectype?, memidx#328 : memidx, memarg#231 : memarg, sz#2322 : sz, i#99264 : nat, i#99271 : nat, x : idx, ao : memarg} {{"v128.load32_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => `VLOAD`_instr{`vectype?#38`, memidx#328, memarg#231}(`V128`_vectype, ?(`ZERO`_vloadop_{sz#2322, i#99264}(`%`_sz{i#99271}(32))), x, ao) + 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{`vectype?#39` : vectype?, memidx#330 : memidx, memarg#233 : memarg, sz#2369 : sz, i#99328 : nat, i#99335 : nat, x : idx, ao : memarg} {{"v128.load64_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => `VLOAD`_instr{`vectype?#39`, memidx#330, memarg#233}(`V128`_vectype, ?(`ZERO`_vloadop_{sz#2369, i#99328}(`%`_sz{i#99335}(64))), x, ao) + 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{vectype#286 : vectype, sz#2371 : sz, memidx#332 : memidx, memarg#235 : memarg, laneidx#75 : laneidx, i#99391 : nat, x : idx, ao : memarg, i : laneidx} {{"v128.load8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => `VLOAD_LANE`_instr{vectype#286, sz#2371, memidx#332, memarg#235, laneidx#75}(`V128`_vectype, `%`_sz{i#99391}(8), x, ao, i) + 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{vectype#288 : vectype, sz#2373 : sz, memidx#334 : memidx, memarg#237 : memarg, laneidx#77 : laneidx, i#99459 : nat, x : idx, ao : memarg, i : laneidx} {{"v128.load16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => `VLOAD_LANE`_instr{vectype#288, sz#2373, memidx#334, memarg#237, laneidx#77}(`V128`_vectype, `%`_sz{i#99459}(16), x, ao, i) + 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{vectype#290 : vectype, sz#2375 : sz, memidx#336 : memidx, memarg#239 : memarg, laneidx#79 : laneidx, i#99527 : nat, x : idx, ao : memarg, i : laneidx} {{"v128.load32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => `VLOAD_LANE`_instr{vectype#290, sz#2375, memidx#336, memarg#239, laneidx#79}(`V128`_vectype, `%`_sz{i#99527}(32), x, ao, i) + 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{vectype#292 : vectype, sz#2377 : sz, memidx#338 : memidx, memarg#241 : memarg, laneidx#81 : laneidx, i#99595 : nat, x : idx, ao : memarg, i : laneidx} {{"v128.load64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => `VLOAD_LANE`_instr{vectype#292, sz#2377, memidx#338, memarg#241, laneidx#81}(`V128`_vectype, `%`_sz{i#99595}(64), x, ao, i) + 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{`numtype?#58` : numtype?, memidx#340 : memidx, memarg#243 : memarg, x : idx, ao : memarg} {{"i32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => `STORE`_instr{`numtype?#58`, memidx#340, memarg#243}(`I32`_numtype, ?(), x, ao) + 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{`numtype?#59` : numtype?, memidx#342 : memidx, memarg#245 : memarg, x : idx, ao : memarg} {{"i64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => `STORE`_instr{`numtype?#59`, memidx#342, memarg#245}(`I64`_numtype, ?(), x, ao) + 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{`numtype?#60` : numtype?, memidx#344 : memidx, memarg#247 : memarg, x : idx, ao : memarg} {{"f32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => `STORE`_instr{`numtype?#60`, memidx#344, memarg#247}(`F32`_numtype, ?(), x, ao) + 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{`numtype?#61` : numtype?, memidx#346 : memidx, memarg#249 : memarg, x : idx, ao : memarg} {{"f64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => `STORE`_instr{`numtype?#61`, memidx#346, memarg#249}(`F64`_numtype, ?(), x, ao) + 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{`numtype?#62` : numtype?, memidx#348 : memidx, memarg#251 : memarg, sz#2390 : sz, i#99803 : nat, i#99804 : nat, x : idx, ao : memarg} {{"i32.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => `STORE`_instr{`numtype?#62`, memidx#348, memarg#251}(`I32`_numtype, ?(`%`_storeop_{sz#2390, i#99803}(`%`_sz{i#99804}(8))), x, ao) + 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{`numtype?#63` : numtype?, memidx#350 : memidx, memarg#253 : memarg, sz#2403 : sz, i#99876 : nat, i#99877 : nat, x : idx, ao : memarg} {{"i32.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => `STORE`_instr{`numtype?#63`, memidx#350, memarg#253}(`I32`_numtype, ?(`%`_storeop_{sz#2403, i#99876}(`%`_sz{i#99877}(16))), x, ao) + 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{`numtype?#64` : numtype?, memidx#352 : memidx, memarg#255 : memarg, sz#2416 : sz, i#99949 : nat, i#99950 : nat, x : idx, ao : memarg} {{"i64.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => `STORE`_instr{`numtype?#64`, memidx#352, memarg#255}(`I64`_numtype, ?(`%`_storeop_{sz#2416, i#99949}(`%`_sz{i#99950}(8))), x, ao) + 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{`numtype?#65` : numtype?, memidx#354 : memidx, memarg#257 : memarg, sz#2429 : sz, i#100022 : nat, i#100023 : nat, x : idx, ao : memarg} {{"i64.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => `STORE`_instr{`numtype?#65`, memidx#354, memarg#257}(`I64`_numtype, ?(`%`_storeop_{sz#2429, i#100022}(`%`_sz{i#100023}(16))), x, ao) + 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{`numtype?#66` : numtype?, memidx#356 : memidx, memarg#259 : memarg, sz#2442 : sz, i#100095 : nat, i#100096 : nat, x : idx, ao : memarg} {{"i64.store32"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => `STORE`_instr{`numtype?#66`, memidx#356, memarg#259}(`I64`_numtype, ?(`%`_storeop_{sz#2442, i#100095}(`%`_sz{i#100096}(32))), x, ao) + 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{vectype#294 : vectype, memidx#358 : memidx, memarg#261 : memarg, x : idx, ao : memarg} {{"v128.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => `VSTORE`_instr{vectype#294, memidx#358, memarg#261}(`V128`_vectype, x, ao) + 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{vectype#296 : vectype, sz#2444 : sz, memidx#360 : memidx, memarg#263 : memarg, laneidx#83 : laneidx, i#100183 : nat, x : idx, ao : memarg, i : laneidx} {{"v128.store8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => `VSTORE_LANE`_instr{vectype#296, sz#2444, memidx#360, memarg#263, laneidx#83}(`V128`_vectype, `%`_sz{i#100183}(8), x, ao, i) + 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{vectype#298 : vectype, sz#2446 : sz, memidx#362 : memidx, memarg#265 : memarg, laneidx#85 : laneidx, i#100251 : nat, x : idx, ao : memarg, i : laneidx} {{"v128.store16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => `VSTORE_LANE`_instr{vectype#298, sz#2446, memidx#362, memarg#265, laneidx#85}(`V128`_vectype, `%`_sz{i#100251}(16), x, ao, i) + 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{vectype#300 : vectype, sz#2448 : sz, memidx#364 : memidx, memarg#267 : memarg, laneidx#87 : laneidx, i#100319 : nat, x : idx, ao : memarg, i : laneidx} {{"v128.store32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => `VSTORE_LANE`_instr{vectype#300, sz#2448, memidx#364, memarg#267, laneidx#87}(`V128`_vectype, `%`_sz{i#100319}(32), x, ao, i) + 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{vectype#302 : vectype, sz#2450 : sz, memidx#366 : memidx, memarg#269 : memarg, laneidx#89 : laneidx, i#100387 : nat, x : idx, ao : memarg, i : laneidx} {{"v128.store64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => `VSTORE_LANE`_instr{vectype#302, sz#2450, memidx#366, memarg#269, laneidx#89}(`V128`_vectype, `%`_sz{i#100387}(64), x, ao, i) + 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{memidx#368 : memidx, x : idx} {{"memory.size"} {x:Tmemidx_(I)}} => `MEMORY.SIZE`_instr{memidx#368}(x) + prod{x : idx} {{"memory.size"} {x:Tmemidx_(I)}} => `MEMORY.SIZE`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{memidx#370 : memidx, x : idx} {{"memory.grow"} {x:Tmemidx_(I)}} => `MEMORY.GROW`_instr{memidx#370}(x) + prod{x : idx} {{"memory.grow"} {x:Tmemidx_(I)}} => `MEMORY.GROW`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{memidx#372 : memidx, x : idx} {{"memory.fill"} {x:Tmemidx_(I)}} => `MEMORY.FILL`_instr{memidx#372}(x) + prod{x : idx} {{"memory.fill"} {x:Tmemidx_(I)}} => `MEMORY.FILL`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{memidx#374 : memidx, x_1 : idx, x_2 : idx} {{"memory.copy"} {x_1:Tmemidx_(I)} {x_2:Tmemidx_(I)}} => `MEMORY.COPY`_instr{memidx#374}(x_1, x_2) + 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{memidx#377 : memidx, dataidx#55 : dataidx, x : idx, y : idx} {{"memory.init"} {x:Tmemidx_(I)} {y:Tdataidx_(I)}} => `MEMORY.INIT`_instr{memidx#377, dataidx#55}(x, y) + 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{dataidx#57 : dataidx, x : idx} {{"data.drop"} {x:Tdataidx_(I)}} => `DATA.DROP`_instr{dataidx#57}(x) + prod{x : idx} {{"data.drop"} {x:Tdataidx_(I)}} => `DATA.DROP`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{heaptype#1929 : heaptype, ht : heaptype} {{"ref.null"} {ht:Theaptype_(I)}} => `REF.NULL`_instr{heaptype#1929}(ht) + prod{ht : heaptype} {{"ref.null"} {ht:Theaptype_(I)}} => `REF.NULL`_instr(ht) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{funcidx#3387 : funcidx, x : idx} {{"ref.func"} {x:Tfuncidx_(I)}} => `REF.FUNC`_instr{funcidx#3387}(x) + 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 @@ -121486,813 +96737,813 @@ grammar Tplaininstr_(I : I) : 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{reftype#4311 : reftype, rt : reftype} {{"ref.test"} {rt:Treftype_(I)}} => `REF.TEST`_instr{reftype#4311}(rt) + prod{rt : reftype} {{"ref.test"} {rt:Treftype_(I)}} => `REF.TEST`_instr(rt) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{reftype#4313 : reftype, rt : reftype} {{"ref.cast"} {rt:Treftype_(I)}} => `REF.CAST`_instr{reftype#4313}(rt) + 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{sx#16085 : sx} "i31.get_s" => `I31.GET`_instr{sx#16085}(`S`_sx) + prod "i31.get_s" => `I31.GET`_instr(`S`_sx) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{sx#16087 : sx} "i31.get_u" => `I31.GET`_instr{sx#16087}(`U`_sx) + prod "i31.get_u" => `I31.GET`_instr(`U`_sx) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{typeidx#2137 : typeidx, x : idx} {{"struct.new"} {x:Ttypeidx_(I)}} => `STRUCT.NEW`_instr{typeidx#2137}(x) + prod{x : idx} {{"struct.new"} {x:Ttypeidx_(I)}} => `STRUCT.NEW`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{typeidx#2139 : typeidx, x : idx} {{"struct.new_default"} {x:Ttypeidx_(I)}} => `STRUCT.NEW_DEFAULT`_instr{typeidx#2139}(x) + prod{x : idx} {{"struct.new_default"} {x:Ttypeidx_(I)}} => `STRUCT.NEW_DEFAULT`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`sx?#59` : sx?, typeidx#2141 : typeidx, u32#48 : u32, x : idx, i : fieldidx} {{"struct.get"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.GET`_instr{`sx?#59`, typeidx#2141, u32#48}(?(), x, i) + 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{`sx?#61` : sx?, typeidx#2143 : typeidx, u32#50 : u32, x : idx, i : fieldidx} {{"struct.get_s"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.GET`_instr{`sx?#61`, typeidx#2143, u32#50}(?(`S`_sx), x, i) + 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{`sx?#63` : sx?, typeidx#2145 : typeidx, u32#52 : u32, x : idx, i : fieldidx} {{"struct.get_u"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.GET`_instr{`sx?#63`, typeidx#2145, u32#52}(?(`U`_sx), x, i) + 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{typeidx#2147 : typeidx, u32#54 : u32, x : idx, i : fieldidx} {{"struct.set"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.SET`_instr{typeidx#2147, u32#54}(x, i) + 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{typeidx#2149 : typeidx, x : idx} {{"array.new"} {x:Ttypeidx_(I)}} => `ARRAY.NEW`_instr{typeidx#2149}(x) + prod{x : idx} {{"array.new"} {x:Ttypeidx_(I)}} => `ARRAY.NEW`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{typeidx#2151 : typeidx, x : idx} {{"array.new_default"} {x:Ttypeidx_(I)}} => `ARRAY.NEW_DEFAULT`_instr{typeidx#2151}(x) + prod{x : idx} {{"array.new_default"} {x:Ttypeidx_(I)}} => `ARRAY.NEW_DEFAULT`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{typeidx#2153 : typeidx, u32#56 : u32, x : idx, i#101306 : nat, n : n, i#101266 : nat} {{"array.new_fixed"} {x:Ttypeidx_(I)} {`%`_u32{i#101266}(n):Tu32}} => `ARRAY.NEW_FIXED`_instr{typeidx#2153, u32#56}(x, `%`_u32{i#101306}(n)) + 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{typeidx#2155 : typeidx, dataidx#59 : dataidx, x : idx, y : idx} {{"array.new_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => `ARRAY.NEW_DATA`_instr{typeidx#2155, dataidx#59}(x, y) + 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{typeidx#2157 : typeidx, elemidx#61 : elemidx, x : idx, y : idx} {{"array.new_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => `ARRAY.NEW_ELEM`_instr{typeidx#2157, elemidx#61}(x, y) + 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{`sx?#65` : sx?, typeidx#2159 : typeidx, x : idx} {{"array.get"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr{`sx?#65`, typeidx#2159}(?(), x) + prod{x : idx} {{"array.get"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(), x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`sx?#67` : sx?, typeidx#2161 : typeidx, x : idx} {{"array.get_s"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr{`sx?#67`, typeidx#2161}(?(`S`_sx), x) + 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{`sx?#69` : sx?, typeidx#2163 : typeidx, x : idx} {{"array.get_u"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr{`sx?#69`, typeidx#2163}(?(`U`_sx), x) + 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{typeidx#2165 : typeidx, x : idx} {{"array.set"} {x:Ttypeidx_(I)}} => `ARRAY.SET`_instr{typeidx#2165}(x) + 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{typeidx#2167 : typeidx, x : idx} {{"array.fill"} {x:Ttypeidx_(I)}} => `ARRAY.FILL`_instr{typeidx#2167}(x) + prod{x : idx} {{"array.fill"} {x:Ttypeidx_(I)}} => `ARRAY.FILL`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{typeidx#2169 : typeidx, x_1 : idx, x_2 : idx} {{"array.copy"} {x_1:Ttypeidx_(I)} {x_2:Ttypeidx_(I)}} => `ARRAY.COPY`_instr{typeidx#2169}(x_1, x_2) + 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{typeidx#2172 : typeidx, dataidx#61 : dataidx, x : idx, y : idx} {{"array.init_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => `ARRAY.INIT_DATA`_instr{typeidx#2172, dataidx#61}(x, y) + 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{typeidx#2174 : typeidx, elemidx#63 : elemidx, x : idx, y : idx} {{"array.init_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => `ARRAY.INIT_ELEM`_instr{typeidx#2174, elemidx#63}(x, y) + 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{numtype#891 : numtype, c : u32} {{"i32.const"} {c:Ti32}} => `CONST`_instr{numtype#891}(`I32`_numtype, c) + prod{c : u32} {{"i32.const"} {c:Ti32}} => `CONST`_instr(`I32`_numtype, c) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#893 : numtype, c : u64} {{"i64.const"} {c:Ti64}} => `CONST`_instr{numtype#893}(`I64`_numtype, c) + prod{c : u64} {{"i64.const"} {c:Ti64}} => `CONST`_instr(`I64`_numtype, c) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#895 : numtype, c : f32} {{"f32.const"} {c:Tf32}} => `CONST`_instr{numtype#895}(`F32`_numtype, c) + prod{c : f32} {{"f32.const"} {c:Tf32}} => `CONST`_instr(`F32`_numtype, c) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#897 : numtype, c : f64} {{"f64.const"} {c:Tf64}} => `CONST`_instr{numtype#897}(`F64`_numtype, c) + prod{c : f64} {{"f64.const"} {c:Tf64}} => `CONST`_instr(`F64`_numtype, c) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#899 : numtype} "i32.eqz" => `TESTOP`_instr{numtype#899}(`I32`_numtype, `EQZ`_testop_) + prod "i32.eqz" => `TESTOP`_instr(`I32`_numtype, `EQZ`_testop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#901 : numtype} "i64.eqz" => `TESTOP`_instr{numtype#901}(`I64`_numtype, `EQZ`_testop_) + prod "i64.eqz" => `TESTOP`_instr(`I64`_numtype, `EQZ`_testop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#903 : numtype} "i32.eq" => `RELOP`_instr{numtype#903}(`I32`_numtype, `EQ`_relop_) + prod "i32.eq" => `RELOP`_instr(`I32`_numtype, `EQ`_relop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#905 : numtype} "i32.ne" => `RELOP`_instr{numtype#905}(`I32`_numtype, `NE`_relop_) + prod "i32.ne" => `RELOP`_instr(`I32`_numtype, `NE`_relop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#907 : numtype, sx#16331 : sx} "i32.lt_s" => `RELOP`_instr{numtype#907}(`I32`_numtype, `LT`_relop_{sx#16331}(`S`_sx)) + prod "i32.lt_s" => `RELOP`_instr(`I32`_numtype, `LT`_relop_(`S`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#909 : numtype, sx#16455 : sx} "i32.lt_u" => `RELOP`_instr{numtype#909}(`I32`_numtype, `LT`_relop_{sx#16455}(`U`_sx)) + prod "i32.lt_u" => `RELOP`_instr(`I32`_numtype, `LT`_relop_(`U`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#911 : numtype, sx#16579 : sx} "i32.gt_s" => `RELOP`_instr{numtype#911}(`I32`_numtype, `GT`_relop_{sx#16579}(`S`_sx)) + prod "i32.gt_s" => `RELOP`_instr(`I32`_numtype, `GT`_relop_(`S`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#913 : numtype, sx#16703 : sx} "i32.gt_u" => `RELOP`_instr{numtype#913}(`I32`_numtype, `GT`_relop_{sx#16703}(`U`_sx)) + prod "i32.gt_u" => `RELOP`_instr(`I32`_numtype, `GT`_relop_(`U`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#915 : numtype, sx#16827 : sx} "i32.le_s" => `RELOP`_instr{numtype#915}(`I32`_numtype, `LE`_relop_{sx#16827}(`S`_sx)) + prod "i32.le_s" => `RELOP`_instr(`I32`_numtype, `LE`_relop_(`S`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#917 : numtype, sx#16951 : sx} "i32.le_u" => `RELOP`_instr{numtype#917}(`I32`_numtype, `LE`_relop_{sx#16951}(`U`_sx)) + prod "i32.le_u" => `RELOP`_instr(`I32`_numtype, `LE`_relop_(`U`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#919 : numtype, sx#17075 : sx} "i32.ge_s" => `RELOP`_instr{numtype#919}(`I32`_numtype, `GE`_relop_{sx#17075}(`S`_sx)) + prod "i32.ge_s" => `RELOP`_instr(`I32`_numtype, `GE`_relop_(`S`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#921 : numtype, sx#17199 : sx} "i32.ge_u" => `RELOP`_instr{numtype#921}(`I32`_numtype, `GE`_relop_{sx#17199}(`U`_sx)) + prod "i32.ge_u" => `RELOP`_instr(`I32`_numtype, `GE`_relop_(`U`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#923 : numtype} "i64.eq" => `RELOP`_instr{numtype#923}(`I64`_numtype, `EQ`_relop_) + prod "i64.eq" => `RELOP`_instr(`I64`_numtype, `EQ`_relop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#925 : numtype} "i64.ne" => `RELOP`_instr{numtype#925}(`I64`_numtype, `NE`_relop_) + prod "i64.ne" => `RELOP`_instr(`I64`_numtype, `NE`_relop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#927 : numtype, sx#17443 : sx} "i64.lt_s" => `RELOP`_instr{numtype#927}(`I64`_numtype, `LT`_relop_{sx#17443}(`S`_sx)) + prod "i64.lt_s" => `RELOP`_instr(`I64`_numtype, `LT`_relop_(`S`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#929 : numtype, sx#17567 : sx} "i64.lt_u" => `RELOP`_instr{numtype#929}(`I64`_numtype, `LT`_relop_{sx#17567}(`U`_sx)) + prod "i64.lt_u" => `RELOP`_instr(`I64`_numtype, `LT`_relop_(`U`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#931 : numtype, sx#17691 : sx} "i64.gt_s" => `RELOP`_instr{numtype#931}(`I64`_numtype, `GT`_relop_{sx#17691}(`S`_sx)) + prod "i64.gt_s" => `RELOP`_instr(`I64`_numtype, `GT`_relop_(`S`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#933 : numtype, sx#17815 : sx} "i64.gt_u" => `RELOP`_instr{numtype#933}(`I64`_numtype, `GT`_relop_{sx#17815}(`U`_sx)) + prod "i64.gt_u" => `RELOP`_instr(`I64`_numtype, `GT`_relop_(`U`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#935 : numtype, sx#17939 : sx} "i64.le_s" => `RELOP`_instr{numtype#935}(`I64`_numtype, `LE`_relop_{sx#17939}(`S`_sx)) + prod "i64.le_s" => `RELOP`_instr(`I64`_numtype, `LE`_relop_(`S`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#937 : numtype, sx#18063 : sx} "i64.le_u" => `RELOP`_instr{numtype#937}(`I64`_numtype, `LE`_relop_{sx#18063}(`U`_sx)) + prod "i64.le_u" => `RELOP`_instr(`I64`_numtype, `LE`_relop_(`U`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#939 : numtype, sx#18187 : sx} "i64.ge_s" => `RELOP`_instr{numtype#939}(`I64`_numtype, `GE`_relop_{sx#18187}(`S`_sx)) + prod "i64.ge_s" => `RELOP`_instr(`I64`_numtype, `GE`_relop_(`S`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#941 : numtype, sx#18311 : sx} "i64.ge_u" => `RELOP`_instr{numtype#941}(`I64`_numtype, `GE`_relop_{sx#18311}(`U`_sx)) + prod "i64.ge_u" => `RELOP`_instr(`I64`_numtype, `GE`_relop_(`U`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#943 : numtype} "f32.eq" => `RELOP`_instr{numtype#943}(`F32`_numtype, `EQ`_relop_) + prod "f32.eq" => `RELOP`_instr(`F32`_numtype, `EQ`_relop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#945 : numtype} "f32.ne" => `RELOP`_instr{numtype#945}(`F32`_numtype, `NE`_relop_) + prod "f32.ne" => `RELOP`_instr(`F32`_numtype, `NE`_relop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#947 : numtype} "f32.lt" => `RELOP`_instr{numtype#947}(`F32`_numtype, `LT`_relop_) + prod "f32.lt" => `RELOP`_instr(`F32`_numtype, `LT`_relop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#949 : numtype} "f32.gt" => `RELOP`_instr{numtype#949}(`F32`_numtype, `GT`_relop_) + prod "f32.gt" => `RELOP`_instr(`F32`_numtype, `GT`_relop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#951 : numtype} "f32.le" => `RELOP`_instr{numtype#951}(`F32`_numtype, `LE`_relop_) + prod "f32.le" => `RELOP`_instr(`F32`_numtype, `LE`_relop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#953 : numtype} "f32.ge" => `RELOP`_instr{numtype#953}(`F32`_numtype, `GE`_relop_) + prod "f32.ge" => `RELOP`_instr(`F32`_numtype, `GE`_relop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#955 : numtype} "f64.eq" => `RELOP`_instr{numtype#955}(`F64`_numtype, `EQ`_relop_) + prod "f64.eq" => `RELOP`_instr(`F64`_numtype, `EQ`_relop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#957 : numtype} "f64.ne" => `RELOP`_instr{numtype#957}(`F64`_numtype, `NE`_relop_) + prod "f64.ne" => `RELOP`_instr(`F64`_numtype, `NE`_relop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#959 : numtype} "f64.lt" => `RELOP`_instr{numtype#959}(`F64`_numtype, `LT`_relop_) + prod "f64.lt" => `RELOP`_instr(`F64`_numtype, `LT`_relop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#961 : numtype} "f64.gt" => `RELOP`_instr{numtype#961}(`F64`_numtype, `GT`_relop_) + prod "f64.gt" => `RELOP`_instr(`F64`_numtype, `GT`_relop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#963 : numtype} "f64.le" => `RELOP`_instr{numtype#963}(`F64`_numtype, `LE`_relop_) + prod "f64.le" => `RELOP`_instr(`F64`_numtype, `LE`_relop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#965 : numtype} "f64.ge" => `RELOP`_instr{numtype#965}(`F64`_numtype, `GE`_relop_) + prod "f64.ge" => `RELOP`_instr(`F64`_numtype, `GE`_relop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#967 : numtype} "i32.clz" => `UNOP`_instr{numtype#967}(`I32`_numtype, `CLZ`_unop_) + prod "i32.clz" => `UNOP`_instr(`I32`_numtype, `CLZ`_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#969 : numtype} "i32.ctz" => `UNOP`_instr{numtype#969}(`I32`_numtype, `CTZ`_unop_) + prod "i32.ctz" => `UNOP`_instr(`I32`_numtype, `CTZ`_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#971 : numtype} "i32.popcnt" => `UNOP`_instr{numtype#971}(`I32`_numtype, `POPCNT`_unop_) + prod "i32.popcnt" => `UNOP`_instr(`I32`_numtype, `POPCNT`_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#973 : numtype, sz#2529 : sz, i#101930 : nat, i#101937 : nat} "i32.extend8_s" => `UNOP`_instr{numtype#973}(`I32`_numtype, `EXTEND`_unop_{sz#2529, i#101930}(`%`_sz{i#101937}(8))) + prod "i32.extend8_s" => `UNOP`_instr(`I32`_numtype, `EXTEND`_unop_(`%`_sz(8))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#975 : numtype, sz#2563 : sz, i#101946 : nat, i#101953 : nat} "i32.extend16_s" => `UNOP`_instr{numtype#975}(`I32`_numtype, `EXTEND`_unop_{sz#2563, i#101946}(`%`_sz{i#101953}(16))) + prod "i32.extend16_s" => `UNOP`_instr(`I32`_numtype, `EXTEND`_unop_(`%`_sz(16))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#977 : numtype} "i64.clz" => `UNOP`_instr{numtype#977}(`I64`_numtype, `CLZ`_unop_) + prod "i64.clz" => `UNOP`_instr(`I64`_numtype, `CLZ`_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#979 : numtype} "i64.ctz" => `UNOP`_instr{numtype#979}(`I64`_numtype, `CTZ`_unop_) + prod "i64.ctz" => `UNOP`_instr(`I64`_numtype, `CTZ`_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#981 : numtype} "i64.popcnt" => `UNOP`_instr{numtype#981}(`I64`_numtype, `POPCNT`_unop_) + prod "i64.popcnt" => `UNOP`_instr(`I64`_numtype, `POPCNT`_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#983 : numtype, sz#2642 : sz, i#101962 : nat, i#101969 : nat} "i64.extend8_s" => `UNOP`_instr{numtype#983}(`I64`_numtype, `EXTEND`_unop_{sz#2642, i#101962}(`%`_sz{i#101969}(8))) + prod "i64.extend8_s" => `UNOP`_instr(`I64`_numtype, `EXTEND`_unop_(`%`_sz(8))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#985 : numtype, sz#2676 : sz, i#101978 : nat, i#101985 : nat} "i64.extend16_s" => `UNOP`_instr{numtype#985}(`I64`_numtype, `EXTEND`_unop_{sz#2676, i#101978}(`%`_sz{i#101985}(16))) + prod "i64.extend16_s" => `UNOP`_instr(`I64`_numtype, `EXTEND`_unop_(`%`_sz(16))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#987 : numtype, sz#2710 : sz, i#101994 : nat, i#102001 : nat} "i64.extend32_s" => `UNOP`_instr{numtype#987}(`I64`_numtype, `EXTEND`_unop_{sz#2710, i#101994}(`%`_sz{i#102001}(32))) + prod "i64.extend32_s" => `UNOP`_instr(`I64`_numtype, `EXTEND`_unop_(`%`_sz(32))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#989 : numtype} "f32.abs" => `UNOP`_instr{numtype#989}(`F32`_numtype, `ABS`_unop_) + prod "f32.abs" => `UNOP`_instr(`F32`_numtype, `ABS`_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#991 : numtype} "f32.neg" => `UNOP`_instr{numtype#991}(`F32`_numtype, `NEG`_unop_) + prod "f32.neg" => `UNOP`_instr(`F32`_numtype, `NEG`_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#993 : numtype} "f32.sqrt" => `UNOP`_instr{numtype#993}(`F32`_numtype, `SQRT`_unop_) + prod "f32.sqrt" => `UNOP`_instr(`F32`_numtype, `SQRT`_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#995 : numtype} "f32.ceil" => `UNOP`_instr{numtype#995}(`F32`_numtype, `CEIL`_unop_) + prod "f32.ceil" => `UNOP`_instr(`F32`_numtype, `CEIL`_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#997 : numtype} "f32.floor" => `UNOP`_instr{numtype#997}(`F32`_numtype, `FLOOR`_unop_) + prod "f32.floor" => `UNOP`_instr(`F32`_numtype, `FLOOR`_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#999 : numtype} "f32.trunc" => `UNOP`_instr{numtype#999}(`F32`_numtype, `TRUNC`_unop_) + prod "f32.trunc" => `UNOP`_instr(`F32`_numtype, `TRUNC`_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1001 : numtype} "f32.nearest" => `UNOP`_instr{numtype#1001}(`F32`_numtype, `NEAREST`_unop_) + prod "f32.nearest" => `UNOP`_instr(`F32`_numtype, `NEAREST`_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1003 : numtype} "f64.abs" => `UNOP`_instr{numtype#1003}(`F64`_numtype, `ABS`_unop_) + prod "f64.abs" => `UNOP`_instr(`F64`_numtype, `ABS`_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1005 : numtype} "f64.neg" => `UNOP`_instr{numtype#1005}(`F64`_numtype, `NEG`_unop_) + prod "f64.neg" => `UNOP`_instr(`F64`_numtype, `NEG`_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1007 : numtype} "f64.sqrt" => `UNOP`_instr{numtype#1007}(`F64`_numtype, `SQRT`_unop_) + prod "f64.sqrt" => `UNOP`_instr(`F64`_numtype, `SQRT`_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1009 : numtype} "f64.ceil" => `UNOP`_instr{numtype#1009}(`F64`_numtype, `CEIL`_unop_) + prod "f64.ceil" => `UNOP`_instr(`F64`_numtype, `CEIL`_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1011 : numtype} "f64.floor" => `UNOP`_instr{numtype#1011}(`F64`_numtype, `FLOOR`_unop_) + prod "f64.floor" => `UNOP`_instr(`F64`_numtype, `FLOOR`_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1013 : numtype} "f64.trunc" => `UNOP`_instr{numtype#1013}(`F64`_numtype, `TRUNC`_unop_) + prod "f64.trunc" => `UNOP`_instr(`F64`_numtype, `TRUNC`_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1015 : numtype} "f64.nearest" => `UNOP`_instr{numtype#1015}(`F64`_numtype, `NEAREST`_unop_) + prod "f64.nearest" => `UNOP`_instr(`F64`_numtype, `NEAREST`_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1017 : numtype} "i32.add" => `BINOP`_instr{numtype#1017}(`I32`_numtype, `ADD`_binop_) + prod "i32.add" => `BINOP`_instr(`I32`_numtype, `ADD`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1019 : numtype} "i32.sub" => `BINOP`_instr{numtype#1019}(`I32`_numtype, `SUB`_binop_) + prod "i32.sub" => `BINOP`_instr(`I32`_numtype, `SUB`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1021 : numtype} "i32.mul" => `BINOP`_instr{numtype#1021}(`I32`_numtype, `MUL`_binop_) + prod "i32.mul" => `BINOP`_instr(`I32`_numtype, `MUL`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1023 : numtype, sx#18540 : sx} "i32.div_s" => `BINOP`_instr{numtype#1023}(`I32`_numtype, `DIV`_binop_{sx#18540}(`S`_sx)) + prod "i32.div_s" => `BINOP`_instr(`I32`_numtype, `DIV`_binop_(`S`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1025 : numtype, sx#18634 : sx} "i32.div_u" => `BINOP`_instr{numtype#1025}(`I32`_numtype, `DIV`_binop_{sx#18634}(`U`_sx)) + prod "i32.div_u" => `BINOP`_instr(`I32`_numtype, `DIV`_binop_(`U`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1027 : numtype, sx#18728 : sx} "i32.rem_s" => `BINOP`_instr{numtype#1027}(`I32`_numtype, `REM`_binop_{sx#18728}(`S`_sx)) + prod "i32.rem_s" => `BINOP`_instr(`I32`_numtype, `REM`_binop_(`S`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1029 : numtype, sx#18822 : sx} "i32.rem_u" => `BINOP`_instr{numtype#1029}(`I32`_numtype, `REM`_binop_{sx#18822}(`U`_sx)) + prod "i32.rem_u" => `BINOP`_instr(`I32`_numtype, `REM`_binop_(`U`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1031 : numtype} "i32.and" => `BINOP`_instr{numtype#1031}(`I32`_numtype, `AND`_binop_) + prod "i32.and" => `BINOP`_instr(`I32`_numtype, `AND`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1033 : numtype} "i32.or" => `BINOP`_instr{numtype#1033}(`I32`_numtype, `OR`_binop_) + prod "i32.or" => `BINOP`_instr(`I32`_numtype, `OR`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1035 : numtype} "i32.xor" => `BINOP`_instr{numtype#1035}(`I32`_numtype, `XOR`_binop_) + prod "i32.xor" => `BINOP`_instr(`I32`_numtype, `XOR`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1037 : numtype} "i32.shl" => `BINOP`_instr{numtype#1037}(`I32`_numtype, `SHL`_binop_) + prod "i32.shl" => `BINOP`_instr(`I32`_numtype, `SHL`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1039 : numtype, sx#19096 : sx} "i32.shr_s" => `BINOP`_instr{numtype#1039}(`I32`_numtype, `SHR`_binop_{sx#19096}(`S`_sx)) + prod "i32.shr_s" => `BINOP`_instr(`I32`_numtype, `SHR`_binop_(`S`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1041 : numtype, sx#19190 : sx} "i32.shr_u" => `BINOP`_instr{numtype#1041}(`I32`_numtype, `SHR`_binop_{sx#19190}(`U`_sx)) + prod "i32.shr_u" => `BINOP`_instr(`I32`_numtype, `SHR`_binop_(`U`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1043 : numtype} "i32.rotl" => `BINOP`_instr{numtype#1043}(`I32`_numtype, `ROTL`_binop_) + prod "i32.rotl" => `BINOP`_instr(`I32`_numtype, `ROTL`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1045 : numtype} "i32.rotr" => `BINOP`_instr{numtype#1045}(`I32`_numtype, `ROTR`_binop_) + prod "i32.rotr" => `BINOP`_instr(`I32`_numtype, `ROTR`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1047 : numtype} "i64.add" => `BINOP`_instr{numtype#1047}(`I64`_numtype, `ADD`_binop_) + prod "i64.add" => `BINOP`_instr(`I64`_numtype, `ADD`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1049 : numtype} "i64.sub" => `BINOP`_instr{numtype#1049}(`I64`_numtype, `SUB`_binop_) + prod "i64.sub" => `BINOP`_instr(`I64`_numtype, `SUB`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1051 : numtype} "i64.mul" => `BINOP`_instr{numtype#1051}(`I64`_numtype, `MUL`_binop_) + prod "i64.mul" => `BINOP`_instr(`I64`_numtype, `MUL`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1053 : numtype, sx#19509 : sx} "i64.div_s" => `BINOP`_instr{numtype#1053}(`I64`_numtype, `DIV`_binop_{sx#19509}(`S`_sx)) + prod "i64.div_s" => `BINOP`_instr(`I64`_numtype, `DIV`_binop_(`S`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1055 : numtype, sx#19603 : sx} "i64.div_u" => `BINOP`_instr{numtype#1055}(`I64`_numtype, `DIV`_binop_{sx#19603}(`U`_sx)) + prod "i64.div_u" => `BINOP`_instr(`I64`_numtype, `DIV`_binop_(`U`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1057 : numtype, sx#19697 : sx} "i64.rem_s" => `BINOP`_instr{numtype#1057}(`I64`_numtype, `REM`_binop_{sx#19697}(`S`_sx)) + prod "i64.rem_s" => `BINOP`_instr(`I64`_numtype, `REM`_binop_(`S`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1059 : numtype, sx#19791 : sx} "i64.rem_u" => `BINOP`_instr{numtype#1059}(`I64`_numtype, `REM`_binop_{sx#19791}(`U`_sx)) + prod "i64.rem_u" => `BINOP`_instr(`I64`_numtype, `REM`_binop_(`U`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1061 : numtype} "i64.and" => `BINOP`_instr{numtype#1061}(`I64`_numtype, `AND`_binop_) + prod "i64.and" => `BINOP`_instr(`I64`_numtype, `AND`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1063 : numtype} "i64.or" => `BINOP`_instr{numtype#1063}(`I64`_numtype, `OR`_binop_) + prod "i64.or" => `BINOP`_instr(`I64`_numtype, `OR`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1065 : numtype} "i64.xor" => `BINOP`_instr{numtype#1065}(`I64`_numtype, `XOR`_binop_) + prod "i64.xor" => `BINOP`_instr(`I64`_numtype, `XOR`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1067 : numtype} "i64.shl" => `BINOP`_instr{numtype#1067}(`I64`_numtype, `SHL`_binop_) + prod "i64.shl" => `BINOP`_instr(`I64`_numtype, `SHL`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1069 : numtype, sx#20065 : sx} "i64.shr_s" => `BINOP`_instr{numtype#1069}(`I64`_numtype, `SHR`_binop_{sx#20065}(`S`_sx)) + prod "i64.shr_s" => `BINOP`_instr(`I64`_numtype, `SHR`_binop_(`S`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1071 : numtype, sx#20159 : sx} "i64.shr_u" => `BINOP`_instr{numtype#1071}(`I64`_numtype, `SHR`_binop_{sx#20159}(`U`_sx)) + prod "i64.shr_u" => `BINOP`_instr(`I64`_numtype, `SHR`_binop_(`U`_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1073 : numtype} "i64.rotl" => `BINOP`_instr{numtype#1073}(`I64`_numtype, `ROTL`_binop_) + prod "i64.rotl" => `BINOP`_instr(`I64`_numtype, `ROTL`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1075 : numtype} "i64.rotr" => `BINOP`_instr{numtype#1075}(`I64`_numtype, `ROTR`_binop_) + prod "i64.rotr" => `BINOP`_instr(`I64`_numtype, `ROTR`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1077 : numtype} "f32.add" => `BINOP`_instr{numtype#1077}(`F32`_numtype, `ADD`_binop_) + prod "f32.add" => `BINOP`_instr(`F32`_numtype, `ADD`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1079 : numtype} "f32.sub" => `BINOP`_instr{numtype#1079}(`F32`_numtype, `SUB`_binop_) + prod "f32.sub" => `BINOP`_instr(`F32`_numtype, `SUB`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1081 : numtype} "f32.mul" => `BINOP`_instr{numtype#1081}(`F32`_numtype, `MUL`_binop_) + prod "f32.mul" => `BINOP`_instr(`F32`_numtype, `MUL`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1083 : numtype} "f32.div" => `BINOP`_instr{numtype#1083}(`F32`_numtype, `DIV`_binop_) + prod "f32.div" => `BINOP`_instr(`F32`_numtype, `DIV`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1085 : numtype} "f32.min" => `BINOP`_instr{numtype#1085}(`F32`_numtype, `MIN`_binop_) + prod "f32.min" => `BINOP`_instr(`F32`_numtype, `MIN`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1087 : numtype} "f32.max" => `BINOP`_instr{numtype#1087}(`F32`_numtype, `MAX`_binop_) + prod "f32.max" => `BINOP`_instr(`F32`_numtype, `MAX`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1089 : numtype} "f32.copysign" => `BINOP`_instr{numtype#1089}(`F32`_numtype, `COPYSIGN`_binop_) + prod "f32.copysign" => `BINOP`_instr(`F32`_numtype, `COPYSIGN`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1091 : numtype} "f64.add" => `BINOP`_instr{numtype#1091}(`F64`_numtype, `ADD`_binop_) + prod "f64.add" => `BINOP`_instr(`F64`_numtype, `ADD`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1093 : numtype} "f64.sub" => `BINOP`_instr{numtype#1093}(`F64`_numtype, `SUB`_binop_) + prod "f64.sub" => `BINOP`_instr(`F64`_numtype, `SUB`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1095 : numtype} "f64.mul" => `BINOP`_instr{numtype#1095}(`F64`_numtype, `MUL`_binop_) + prod "f64.mul" => `BINOP`_instr(`F64`_numtype, `MUL`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1097 : numtype} "f64.div" => `BINOP`_instr{numtype#1097}(`F64`_numtype, `DIV`_binop_) + prod "f64.div" => `BINOP`_instr(`F64`_numtype, `DIV`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1099 : numtype} "f64.min" => `BINOP`_instr{numtype#1099}(`F64`_numtype, `MIN`_binop_) + prod "f64.min" => `BINOP`_instr(`F64`_numtype, `MIN`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1101 : numtype} "f64.max" => `BINOP`_instr{numtype#1101}(`F64`_numtype, `MAX`_binop_) + prod "f64.max" => `BINOP`_instr(`F64`_numtype, `MAX`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype#1103 : numtype} "f64.copysign" => `BINOP`_instr{numtype#1103}(`F64`_numtype, `COPYSIGN`_binop_) + prod "f64.copysign" => `BINOP`_instr(`F64`_numtype, `COPYSIGN`_binop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype_1#75 : numtype, numtype_2#75 : numtype} "i32.wrap_i64" => `CVTOP`_instr{numtype_1#75, numtype_2#75}(`I32`_numtype, `I64`_numtype, `WRAP`_cvtop__) + prod "i32.wrap_i64" => `CVTOP`_instr(`I32`_numtype, `I64`_numtype, `WRAP`_cvtop__) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype_1#77 : numtype, numtype_2#77 : numtype, sx#20328 : sx} "i32.trunc_f32_s" => `CVTOP`_instr{numtype_1#77, numtype_2#77}(`I32`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#20328}(`S`_sx)) + 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{numtype_1#79 : numtype, numtype_2#79 : numtype, sx#20392 : sx} "i32.trunc_f32_u" => `CVTOP`_instr{numtype_1#79, numtype_2#79}(`I32`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#20392}(`U`_sx)) + 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{numtype_1#81 : numtype, numtype_2#81 : numtype, sx#20456 : sx} "i32.trunc_f64_s" => `CVTOP`_instr{numtype_1#81, numtype_2#81}(`I32`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#20456}(`S`_sx)) + 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{numtype_1#83 : numtype, numtype_2#83 : numtype, sx#20520 : sx} "i32.trunc_f64_u" => `CVTOP`_instr{numtype_1#83, numtype_2#83}(`I32`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#20520}(`U`_sx)) + 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{numtype_1#85 : numtype, numtype_2#85 : numtype, sx#20584 : sx} "i32.trunc_sat_f32_s" => `CVTOP`_instr{numtype_1#85, numtype_2#85}(`I32`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#20584}(`S`_sx)) + 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{numtype_1#87 : numtype, numtype_2#87 : numtype, sx#20648 : sx} "i32.trunc_sat_f32_u" => `CVTOP`_instr{numtype_1#87, numtype_2#87}(`I32`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#20648}(`U`_sx)) + 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{numtype_1#89 : numtype, numtype_2#89 : numtype, sx#20712 : sx} "i32.trunc_sat_f64_s" => `CVTOP`_instr{numtype_1#89, numtype_2#89}(`I32`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#20712}(`S`_sx)) + 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{numtype_1#91 : numtype, numtype_2#91 : numtype, sx#20776 : sx} "i32.trunc_sat_f64_u" => `CVTOP`_instr{numtype_1#91, numtype_2#91}(`I32`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#20776}(`U`_sx)) + 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{numtype_1#93 : numtype, numtype_2#93 : numtype, sx#20810 : sx} "i64.extend_i64_s" => `CVTOP`_instr{numtype_1#93, numtype_2#93}(`I64`_numtype, `I64`_numtype, `EXTEND`_cvtop__{sx#20810}(`S`_sx)) + 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{numtype_1#95 : numtype, numtype_2#95 : numtype, sx#20844 : sx} "i64.extend_i64_u" => `CVTOP`_instr{numtype_1#95, numtype_2#95}(`I64`_numtype, `I64`_numtype, `EXTEND`_cvtop__{sx#20844}(`U`_sx)) + 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{numtype_1#97 : numtype, numtype_2#97 : numtype, sx#20908 : sx} "i64.trunc_f32_s" => `CVTOP`_instr{numtype_1#97, numtype_2#97}(`I64`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#20908}(`S`_sx)) + 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{numtype_1#99 : numtype, numtype_2#99 : numtype, sx#20972 : sx} "i64.trunc_f32_u" => `CVTOP`_instr{numtype_1#99, numtype_2#99}(`I64`_numtype, `F32`_numtype, `TRUNC`_cvtop__{sx#20972}(`U`_sx)) + 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{numtype_1#101 : numtype, numtype_2#101 : numtype, sx#21036 : sx} "i64.trunc_f64_s" => `CVTOP`_instr{numtype_1#101, numtype_2#101}(`I64`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#21036}(`S`_sx)) + 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{numtype_1#103 : numtype, numtype_2#103 : numtype, sx#21100 : sx} "i64.trunc_f64_u" => `CVTOP`_instr{numtype_1#103, numtype_2#103}(`I64`_numtype, `F64`_numtype, `TRUNC`_cvtop__{sx#21100}(`U`_sx)) + 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{numtype_1#105 : numtype, numtype_2#105 : numtype, sx#21164 : sx} "i64.trunc_sat_f32_s" => `CVTOP`_instr{numtype_1#105, numtype_2#105}(`I64`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#21164}(`S`_sx)) + 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{numtype_1#107 : numtype, numtype_2#107 : numtype, sx#21228 : sx} "i64.trunc_sat_f32_u" => `CVTOP`_instr{numtype_1#107, numtype_2#107}(`I64`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__{sx#21228}(`U`_sx)) + 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{numtype_1#109 : numtype, numtype_2#109 : numtype, sx#21292 : sx} "i64.trunc_sat_f64_s" => `CVTOP`_instr{numtype_1#109, numtype_2#109}(`I64`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#21292}(`S`_sx)) + 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{numtype_1#111 : numtype, numtype_2#111 : numtype, sx#21356 : sx} "i64.trunc_sat_f64_u" => `CVTOP`_instr{numtype_1#111, numtype_2#111}(`I64`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__{sx#21356}(`U`_sx)) + 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{numtype_1#113 : numtype, numtype_2#113 : numtype} "f32.demote_f64" => `CVTOP`_instr{numtype_1#113, numtype_2#113}(`F32`_numtype, `F64`_numtype, `DEMOTE`_cvtop__) + prod "f32.demote_f64" => `CVTOP`_instr(`F32`_numtype, `F64`_numtype, `DEMOTE`_cvtop__) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype_1#115 : numtype, numtype_2#115 : numtype, sx#21390 : sx} "f32.convert_i32_s" => `CVTOP`_instr{numtype_1#115, numtype_2#115}(`F32`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#21390}(`S`_sx)) + 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{numtype_1#117 : numtype, numtype_2#117 : numtype, sx#21424 : sx} "f32.convert_i32_u" => `CVTOP`_instr{numtype_1#117, numtype_2#117}(`F32`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#21424}(`U`_sx)) + 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{numtype_1#119 : numtype, numtype_2#119 : numtype, sx#21458 : sx} "f32.convert_i64_s" => `CVTOP`_instr{numtype_1#119, numtype_2#119}(`F32`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#21458}(`S`_sx)) + 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{numtype_1#121 : numtype, numtype_2#121 : numtype, sx#21492 : sx} "f32.convert_i64_u" => `CVTOP`_instr{numtype_1#121, numtype_2#121}(`F32`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#21492}(`U`_sx)) + 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{numtype_1#123 : numtype, numtype_2#123 : numtype} "f64.promote_f32" => `CVTOP`_instr{numtype_1#123, numtype_2#123}(`F64`_numtype, `F32`_numtype, `PROMOTE`_cvtop__) + prod "f64.promote_f32" => `CVTOP`_instr(`F64`_numtype, `F32`_numtype, `PROMOTE`_cvtop__) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype_1#125 : numtype, numtype_2#125 : numtype, sx#21526 : sx} "f64.convert_i32_s" => `CVTOP`_instr{numtype_1#125, numtype_2#125}(`F64`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#21526}(`S`_sx)) + 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{numtype_1#127 : numtype, numtype_2#127 : numtype, sx#21560 : sx} "f64.convert_i32_u" => `CVTOP`_instr{numtype_1#127, numtype_2#127}(`F64`_numtype, `I32`_numtype, `CONVERT`_cvtop__{sx#21560}(`U`_sx)) + 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{numtype_1#129 : numtype, numtype_2#129 : numtype, sx#21594 : sx} "f64.convert_i64_s" => `CVTOP`_instr{numtype_1#129, numtype_2#129}(`F64`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#21594}(`S`_sx)) + 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{numtype_1#131 : numtype, numtype_2#131 : numtype, sx#21628 : sx} "f64.convert_i64_u" => `CVTOP`_instr{numtype_1#131, numtype_2#131}(`F64`_numtype, `I64`_numtype, `CONVERT`_cvtop__{sx#21628}(`U`_sx)) + 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{numtype_1#133 : numtype, numtype_2#133 : numtype} "i32.reinterpret_f32" => `CVTOP`_instr{numtype_1#133, numtype_2#133}(`I32`_numtype, `F32`_numtype, `REINTERPRET`_cvtop__) + prod "i32.reinterpret_f32" => `CVTOP`_instr(`I32`_numtype, `F32`_numtype, `REINTERPRET`_cvtop__) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype_1#135 : numtype, numtype_2#135 : numtype} "i64.reinterpret_f64" => `CVTOP`_instr{numtype_1#135, numtype_2#135}(`I64`_numtype, `F64`_numtype, `REINTERPRET`_cvtop__) + prod "i64.reinterpret_f64" => `CVTOP`_instr(`I64`_numtype, `F64`_numtype, `REINTERPRET`_cvtop__) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype_1#137 : numtype, numtype_2#137 : numtype} "f32.reinterpret_i32" => `CVTOP`_instr{numtype_1#137, numtype_2#137}(`F32`_numtype, `I32`_numtype, `REINTERPRET`_cvtop__) + prod "f32.reinterpret_i32" => `CVTOP`_instr(`F32`_numtype, `I32`_numtype, `REINTERPRET`_cvtop__) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{numtype_1#139 : numtype, numtype_2#139 : numtype} "f64.reinterpret_i64" => `CVTOP`_instr{numtype_1#139, numtype_2#139}(`F64`_numtype, `I64`_numtype, `REINTERPRET`_cvtop__) + prod "f64.reinterpret_i64" => `CVTOP`_instr(`F64`_numtype, `I64`_numtype, `REINTERPRET`_cvtop__) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{vectype#304 : vectype, `c*` : u8*} {{"v128.const"} {"i8x16"} {c*{c <- `c*`}:Ti8^16{}}} => `VCONST`_instr{vectype#304}(`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(8, c)*{c <- `c*`}))) + 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{vectype#306 : vectype, `c*` : u16*} {{"v128.const"} {"i16x8"} {c*{c <- `c*`}:Ti16^8{}}} => `VCONST`_instr{vectype#306}(`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(16, c)*{c <- `c*`}))) + 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{vectype#308 : vectype, `c*` : u32*} {{"v128.const"} {"i32x4"} {c*{c <- `c*`}:Ti32^4{}}} => `VCONST`_instr{vectype#308}(`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(32, c)*{c <- `c*`}))) + 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{vectype#310 : vectype, `c*` : u64*} {{"v128.const"} {"i64x2"} {c*{c <- `c*`}:Ti64^2{}}} => `VCONST`_instr{vectype#310}(`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(64, c)*{c <- `c*`}))) + 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{vectype#312 : vectype, `c*` : f32*} {{"v128.const"} {"f32x4"} {c*{c <- `c*`}:Tf32^4{}}} => `VCONST`_instr{vectype#312}(`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(32, c)*{c <- `c*`}))) + 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{vectype#314 : vectype, `c*` : f64*} {{"v128.const"} {"f64x2"} {c*{c <- `c*`}:Tf64^2{}}} => `VCONST`_instr{vectype#314}(`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(64, c)*{c <- `c*`}))) + 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{bshape#19 : bshape, `laneidx*#9` : laneidx*, i#103376 : nat, shape#3961 : shape, shape#3972 : shape, lanetype#22986 : lanetype, dim#22986 : dim, i#103380 : nat, i#103387 : nat, `i*` : laneidx*} {{"i8x16.shuffle"} {i*{i <- `i*`}:Tlaneidx^16{}}} => `VSHUFFLE`_instr{bshape#19, `laneidx*#9`, i#103376, shape#3961}(`%`_bshape{shape#3972}(`%X%`_shape{lanetype#22986, dim#22986, i#103380}(`I8`_lanetype, `%`_dim{i#103387}(16))), i*{i <- `i*`}) + 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{bshape#21 : bshape, shape#3984 : shape, lanetype#22998 : lanetype, dim#22998 : dim, i#103415 : nat, i#103422 : nat} "i8x16.swizzle" => `VSWIZZLOP`_instr{bshape#21}(`%`_bshape{shape#3984}(`%X%`_shape{lanetype#22998, dim#22998, i#103415}(`I8`_lanetype, `%`_dim{i#103422}(16))), `SWIZZLE`_vswizzlop_) + prod "i8x16.swizzle" => `VSWIZZLOP`_instr(`%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `SWIZZLE`_vswizzlop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{bshape#23 : bshape, shape#4011 : shape, lanetype#23055 : lanetype, dim#23055 : dim, i#103502 : nat, i#103509 : nat} "i8x16.relaxed_swizzle" => `VSWIZZLOP`_instr{bshape#23}(`%`_bshape{shape#4011}(`%X%`_shape{lanetype#23055, dim#23055, i#103502}(`I8`_lanetype, `%`_dim{i#103509}(16))), `RELAXED_SWIZZLE`_vswizzlop_) + 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{shape#4028 : shape, lanetype#23112 : lanetype, dim#23112 : dim, i#103589 : nat, i#103596 : nat} "i8x16.splat" => `VSPLAT`_instr{shape#4028}(`%X%`_shape{lanetype#23112, dim#23112, i#103589}(`I8`_lanetype, `%`_dim{i#103596}(16))) + prod "i8x16.splat" => `VSPLAT`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4030 : shape, lanetype#23124 : lanetype, dim#23124 : dim, i#103601 : nat, i#103608 : nat} "i16x8.splat" => `VSPLAT`_instr{shape#4030}(`%X%`_shape{lanetype#23124, dim#23124, i#103601}(`I16`_lanetype, `%`_dim{i#103608}(8))) + prod "i16x8.splat" => `VSPLAT`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4032 : shape, lanetype#23136 : lanetype, dim#23136 : dim, i#103613 : nat, i#103620 : nat} "i32x4.splat" => `VSPLAT`_instr{shape#4032}(`%X%`_shape{lanetype#23136, dim#23136, i#103613}(`I32`_lanetype, `%`_dim{i#103620}(4))) + prod "i32x4.splat" => `VSPLAT`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4034 : shape, lanetype#23148 : lanetype, dim#23148 : dim, i#103625 : nat, i#103632 : nat} "i64x2.splat" => `VSPLAT`_instr{shape#4034}(`%X%`_shape{lanetype#23148, dim#23148, i#103625}(`I64`_lanetype, `%`_dim{i#103632}(2))) + prod "i64x2.splat" => `VSPLAT`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4036 : shape, lanetype#23160 : lanetype, dim#23160 : dim, i#103637 : nat, i#103644 : nat} "f32x4.splat" => `VSPLAT`_instr{shape#4036}(`%X%`_shape{lanetype#23160, dim#23160, i#103637}(`F32`_lanetype, `%`_dim{i#103644}(4))) + prod "f32x4.splat" => `VSPLAT`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4038 : shape, lanetype#23172 : lanetype, dim#23172 : dim, i#103649 : nat, i#103656 : nat} "f64x2.splat" => `VSPLAT`_instr{shape#4038}(`%X%`_shape{lanetype#23172, dim#23172, i#103649}(`F64`_lanetype, `%`_dim{i#103656}(2))) + prod "f64x2.splat" => `VSPLAT`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4040 : shape, `sx?#71` : sx?, laneidx#91 : laneidx, lanetype#23184 : lanetype, dim#23184 : dim, i#103678 : nat, i#103685 : nat, i : laneidx} {{"i8x16.extract_lane_s"} {i:Tlaneidx}} => `VEXTRACT_LANE`_instr{shape#4040, `sx?#71`, laneidx#91}(`%X%`_shape{lanetype#23184, dim#23184, i#103678}(`I8`_lanetype, `%`_dim{i#103685}(16)), ?(`S`_sx), i) + 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{shape#4042 : shape, `sx?#73` : sx?, laneidx#93 : laneidx, lanetype#23196 : lanetype, dim#23196 : dim, i#103763 : nat, i#103770 : nat, i : laneidx} {{"i8x16.extract_lane_u"} {i:Tlaneidx}} => `VEXTRACT_LANE`_instr{shape#4042, `sx?#73`, laneidx#93}(`%X%`_shape{lanetype#23196, dim#23196, i#103763}(`I8`_lanetype, `%`_dim{i#103770}(16)), ?(`U`_sx), i) + 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{shape#4044 : shape, `sx?#75` : sx?, laneidx#95 : laneidx, lanetype#23208 : lanetype, dim#23208 : dim, i#103848 : nat, i#103855 : nat, i : laneidx} {{"i16x8.extract_lane_s"} {i:Tlaneidx}} => `VEXTRACT_LANE`_instr{shape#4044, `sx?#75`, laneidx#95}(`%X%`_shape{lanetype#23208, dim#23208, i#103848}(`I16`_lanetype, `%`_dim{i#103855}(8)), ?(`S`_sx), i) + 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{shape#4046 : shape, `sx?#77` : sx?, laneidx#97 : laneidx, lanetype#23220 : lanetype, dim#23220 : dim, i#103933 : nat, i#103940 : nat, i : laneidx} {{"i16x8.extract_lane_u"} {i:Tlaneidx}} => `VEXTRACT_LANE`_instr{shape#4046, `sx?#77`, laneidx#97}(`%X%`_shape{lanetype#23220, dim#23220, i#103933}(`I16`_lanetype, `%`_dim{i#103940}(8)), ?(`U`_sx), i) + 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{shape#4048 : shape, `sx?#79` : sx?, laneidx#99 : laneidx, lanetype#23232 : lanetype, dim#23232 : dim, i#104018 : nat, i#104025 : nat, i : laneidx} {{"i32x4.extract_lane"} {i:Tlaneidx}} => `VEXTRACT_LANE`_instr{shape#4048, `sx?#79`, laneidx#99}(`%X%`_shape{lanetype#23232, dim#23232, i#104018}(`I32`_lanetype, `%`_dim{i#104025}(4)), ?(), i) + 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{shape#4050 : shape, `sx?#81` : sx?, laneidx#101 : laneidx, lanetype#23244 : lanetype, dim#23244 : dim, i#104059 : nat, i#104066 : nat, i : laneidx} {{"i64x2.extract_lane"} {i:Tlaneidx}} => `VEXTRACT_LANE`_instr{shape#4050, `sx?#81`, laneidx#101}(`%X%`_shape{lanetype#23244, dim#23244, i#104059}(`I64`_lanetype, `%`_dim{i#104066}(2)), ?(), i) + 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{shape#4052 : shape, `sx?#83` : sx?, laneidx#103 : laneidx, lanetype#23256 : lanetype, dim#23256 : dim, i#104100 : nat, i#104107 : nat, i : laneidx} {{"f32x4.extract_lane"} {i:Tlaneidx}} => `VEXTRACT_LANE`_instr{shape#4052, `sx?#83`, laneidx#103}(`%X%`_shape{lanetype#23256, dim#23256, i#104100}(`F32`_lanetype, `%`_dim{i#104107}(4)), ?(), i) + 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{shape#4054 : shape, `sx?#85` : sx?, laneidx#105 : laneidx, lanetype#23268 : lanetype, dim#23268 : dim, i#104141 : nat, i#104148 : nat, i : laneidx} {{"f64x2.extract_lane"} {i:Tlaneidx}} => `VEXTRACT_LANE`_instr{shape#4054, `sx?#85`, laneidx#105}(`%X%`_shape{lanetype#23268, dim#23268, i#104141}(`F64`_lanetype, `%`_dim{i#104148}(2)), ?(), i) + 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{shape#4056 : shape, laneidx#107 : laneidx, lanetype#23280 : lanetype, dim#23280 : dim, i#104182 : nat, i#104189 : nat, i : laneidx} {{"i8x16.replace_lane"} {i:Tlaneidx}} => `VREPLACE_LANE`_instr{shape#4056, laneidx#107}(`%X%`_shape{lanetype#23280, dim#23280, i#104182}(`I8`_lanetype, `%`_dim{i#104189}(16)), i) + 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{shape#4058 : shape, laneidx#109 : laneidx, lanetype#23292 : lanetype, dim#23292 : dim, i#104223 : nat, i#104230 : nat, i : laneidx} {{"i16x8.replace_lane"} {i:Tlaneidx}} => `VREPLACE_LANE`_instr{shape#4058, laneidx#109}(`%X%`_shape{lanetype#23292, dim#23292, i#104223}(`I16`_lanetype, `%`_dim{i#104230}(8)), i) + 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{shape#4060 : shape, laneidx#111 : laneidx, lanetype#23304 : lanetype, dim#23304 : dim, i#104264 : nat, i#104271 : nat, i : laneidx} {{"i32x4.replace_lane"} {i:Tlaneidx}} => `VREPLACE_LANE`_instr{shape#4060, laneidx#111}(`%X%`_shape{lanetype#23304, dim#23304, i#104264}(`I32`_lanetype, `%`_dim{i#104271}(4)), i) + 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{shape#4062 : shape, laneidx#113 : laneidx, lanetype#23316 : lanetype, dim#23316 : dim, i#104305 : nat, i#104312 : nat, i : laneidx} {{"i64x2.replace_lane"} {i:Tlaneidx}} => `VREPLACE_LANE`_instr{shape#4062, laneidx#113}(`%X%`_shape{lanetype#23316, dim#23316, i#104305}(`I64`_lanetype, `%`_dim{i#104312}(2)), i) + 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{shape#4064 : shape, laneidx#115 : laneidx, lanetype#23328 : lanetype, dim#23328 : dim, i#104346 : nat, i#104353 : nat, i : laneidx} {{"f32x4.replace_lane"} {i:Tlaneidx}} => `VREPLACE_LANE`_instr{shape#4064, laneidx#115}(`%X%`_shape{lanetype#23328, dim#23328, i#104346}(`F32`_lanetype, `%`_dim{i#104353}(4)), i) + 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{shape#4066 : shape, laneidx#117 : laneidx, lanetype#23340 : lanetype, dim#23340 : dim, i#104387 : nat, i#104394 : nat, i : laneidx} {{"f64x2.replace_lane"} {i:Tlaneidx}} => `VREPLACE_LANE`_instr{shape#4066, laneidx#117}(`%X%`_shape{lanetype#23340, dim#23340, i#104387}(`F64`_lanetype, `%`_dim{i#104394}(2)), i) + 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{vectype#316 : vectype, vvtestop#9 : vvtestop} "v128.any_true" => `VVTESTOP`_instr{vectype#316, vvtestop#9}(`V128`_vectype, `ANY_TRUE`_vvtestop) + prod "v128.any_true" => `VVTESTOP`_instr(`V128`_vectype, `ANY_TRUE`_vvtestop) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4068 : shape, lanetype#23352 : lanetype, dim#23352 : dim, i#104411 : nat, i#104418 : nat} "i8x16.all_true" => `VTESTOP`_instr{shape#4068}(`%X%`_shape{lanetype#23352, dim#23352, i#104411}(`I8`_lanetype, `%`_dim{i#104418}(16)), `ALL_TRUE`_vtestop_) + 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{shape#4070 : shape, lanetype#23379 : lanetype, dim#23379 : dim, i#104468 : nat, i#104475 : nat} "i16x8.all_true" => `VTESTOP`_instr{shape#4070}(`%X%`_shape{lanetype#23379, dim#23379, i#104468}(`I16`_lanetype, `%`_dim{i#104475}(8)), `ALL_TRUE`_vtestop_) + 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{shape#4072 : shape, lanetype#23406 : lanetype, dim#23406 : dim, i#104525 : nat, i#104532 : nat} "i32x4.all_true" => `VTESTOP`_instr{shape#4072}(`%X%`_shape{lanetype#23406, dim#23406, i#104525}(`I32`_lanetype, `%`_dim{i#104532}(4)), `ALL_TRUE`_vtestop_) + 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{shape#4074 : shape, lanetype#23433 : lanetype, dim#23433 : dim, i#104582 : nat, i#104589 : nat} "i64x2.all_true" => `VTESTOP`_instr{shape#4074}(`%X%`_shape{lanetype#23433, dim#23433, i#104582}(`I64`_lanetype, `%`_dim{i#104589}(2)), `ALL_TRUE`_vtestop_) + 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{shape#4076 : shape, lanetype#23460 : lanetype, dim#23460 : dim, i#104639 : nat, i#104646 : nat} "i8x16.eq" => `VRELOP`_instr{shape#4076}(`%X%`_shape{lanetype#23460, dim#23460, i#104639}(`I8`_lanetype, `%`_dim{i#104646}(16)), `EQ`_vrelop_) + prod "i8x16.eq" => `VRELOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `EQ`_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4078 : shape, lanetype#23487 : lanetype, dim#23487 : dim, i#104696 : nat, i#104703 : nat} "i8x16.ne" => `VRELOP`_instr{shape#4078}(`%X%`_shape{lanetype#23487, dim#23487, i#104696}(`I8`_lanetype, `%`_dim{i#104703}(16)), `NE`_vrelop_) + prod "i8x16.ne" => `VRELOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `NE`_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4080 : shape, lanetype#23514 : lanetype, dim#23514 : dim, i#104753 : nat, i#104760 : nat, sx#21962 : sx} "i8x16.lt_s" => `VRELOP`_instr{shape#4080}(`%X%`_shape{lanetype#23514, dim#23514, i#104753}(`I8`_lanetype, `%`_dim{i#104760}(16)), `LT`_vrelop_{sx#21962}(`S`_sx)) + 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{shape#4082 : shape, lanetype#23556 : lanetype, dim#23556 : dim, i#104855 : nat, i#104862 : nat, sx#22086 : sx} "i8x16.lt_u" => `VRELOP`_instr{shape#4082}(`%X%`_shape{lanetype#23556, dim#23556, i#104855}(`I8`_lanetype, `%`_dim{i#104862}(16)), `LT`_vrelop_{sx#22086}(`U`_sx)) + 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{shape#4084 : shape, lanetype#23598 : lanetype, dim#23598 : dim, i#104957 : nat, i#104964 : nat, sx#22210 : sx} "i8x16.gt_s" => `VRELOP`_instr{shape#4084}(`%X%`_shape{lanetype#23598, dim#23598, i#104957}(`I8`_lanetype, `%`_dim{i#104964}(16)), `GT`_vrelop_{sx#22210}(`S`_sx)) + 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{shape#4086 : shape, lanetype#23640 : lanetype, dim#23640 : dim, i#105059 : nat, i#105066 : nat, sx#22334 : sx} "i8x16.gt_u" => `VRELOP`_instr{shape#4086}(`%X%`_shape{lanetype#23640, dim#23640, i#105059}(`I8`_lanetype, `%`_dim{i#105066}(16)), `GT`_vrelop_{sx#22334}(`U`_sx)) + 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{shape#4088 : shape, lanetype#23682 : lanetype, dim#23682 : dim, i#105161 : nat, i#105168 : nat, sx#22458 : sx} "i8x16.le_s" => `VRELOP`_instr{shape#4088}(`%X%`_shape{lanetype#23682, dim#23682, i#105161}(`I8`_lanetype, `%`_dim{i#105168}(16)), `LE`_vrelop_{sx#22458}(`S`_sx)) + 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{shape#4090 : shape, lanetype#23724 : lanetype, dim#23724 : dim, i#105263 : nat, i#105270 : nat, sx#22582 : sx} "i8x16.le_u" => `VRELOP`_instr{shape#4090}(`%X%`_shape{lanetype#23724, dim#23724, i#105263}(`I8`_lanetype, `%`_dim{i#105270}(16)), `LE`_vrelop_{sx#22582}(`U`_sx)) + 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{shape#4092 : shape, lanetype#23766 : lanetype, dim#23766 : dim, i#105365 : nat, i#105372 : nat, sx#22706 : sx} "i8x16.ge_s" => `VRELOP`_instr{shape#4092}(`%X%`_shape{lanetype#23766, dim#23766, i#105365}(`I8`_lanetype, `%`_dim{i#105372}(16)), `GE`_vrelop_{sx#22706}(`S`_sx)) + 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{shape#4094 : shape, lanetype#23808 : lanetype, dim#23808 : dim, i#105467 : nat, i#105474 : nat, sx#22830 : sx} "i8x16.ge_u" => `VRELOP`_instr{shape#4094}(`%X%`_shape{lanetype#23808, dim#23808, i#105467}(`I8`_lanetype, `%`_dim{i#105474}(16)), `GE`_vrelop_{sx#22830}(`U`_sx)) + 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{shape#4096 : shape, lanetype#23850 : lanetype, dim#23850 : dim, i#105569 : nat, i#105576 : nat} "i16x8.eq" => `VRELOP`_instr{shape#4096}(`%X%`_shape{lanetype#23850, dim#23850, i#105569}(`I16`_lanetype, `%`_dim{i#105576}(8)), `EQ`_vrelop_) + prod "i16x8.eq" => `VRELOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `EQ`_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4098 : shape, lanetype#23877 : lanetype, dim#23877 : dim, i#105626 : nat, i#105633 : nat} "i16x8.ne" => `VRELOP`_instr{shape#4098}(`%X%`_shape{lanetype#23877, dim#23877, i#105626}(`I16`_lanetype, `%`_dim{i#105633}(8)), `NE`_vrelop_) + prod "i16x8.ne" => `VRELOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `NE`_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4100 : shape, lanetype#23904 : lanetype, dim#23904 : dim, i#105683 : nat, i#105690 : nat, sx#23074 : sx} "i16x8.lt_s" => `VRELOP`_instr{shape#4100}(`%X%`_shape{lanetype#23904, dim#23904, i#105683}(`I16`_lanetype, `%`_dim{i#105690}(8)), `LT`_vrelop_{sx#23074}(`S`_sx)) + 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{shape#4102 : shape, lanetype#23946 : lanetype, dim#23946 : dim, i#105785 : nat, i#105792 : nat, sx#23198 : sx} "i16x8.lt_u" => `VRELOP`_instr{shape#4102}(`%X%`_shape{lanetype#23946, dim#23946, i#105785}(`I16`_lanetype, `%`_dim{i#105792}(8)), `LT`_vrelop_{sx#23198}(`U`_sx)) + 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{shape#4104 : shape, lanetype#23988 : lanetype, dim#23988 : dim, i#105887 : nat, i#105894 : nat, sx#23322 : sx} "i16x8.gt_s" => `VRELOP`_instr{shape#4104}(`%X%`_shape{lanetype#23988, dim#23988, i#105887}(`I16`_lanetype, `%`_dim{i#105894}(8)), `GT`_vrelop_{sx#23322}(`S`_sx)) + 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{shape#4106 : shape, lanetype#24030 : lanetype, dim#24030 : dim, i#105989 : nat, i#105996 : nat, sx#23446 : sx} "i16x8.gt_u" => `VRELOP`_instr{shape#4106}(`%X%`_shape{lanetype#24030, dim#24030, i#105989}(`I16`_lanetype, `%`_dim{i#105996}(8)), `GT`_vrelop_{sx#23446}(`U`_sx)) + 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{shape#4108 : shape, lanetype#24072 : lanetype, dim#24072 : dim, i#106091 : nat, i#106098 : nat, sx#23570 : sx} "i16x8.le_s" => `VRELOP`_instr{shape#4108}(`%X%`_shape{lanetype#24072, dim#24072, i#106091}(`I16`_lanetype, `%`_dim{i#106098}(8)), `LE`_vrelop_{sx#23570}(`S`_sx)) + 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{shape#4110 : shape, lanetype#24114 : lanetype, dim#24114 : dim, i#106193 : nat, i#106200 : nat, sx#23694 : sx} "i16x8.le_u" => `VRELOP`_instr{shape#4110}(`%X%`_shape{lanetype#24114, dim#24114, i#106193}(`I16`_lanetype, `%`_dim{i#106200}(8)), `LE`_vrelop_{sx#23694}(`U`_sx)) + 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{shape#4112 : shape, lanetype#24156 : lanetype, dim#24156 : dim, i#106295 : nat, i#106302 : nat, sx#23818 : sx} "i16x8.ge_s" => `VRELOP`_instr{shape#4112}(`%X%`_shape{lanetype#24156, dim#24156, i#106295}(`I16`_lanetype, `%`_dim{i#106302}(8)), `GE`_vrelop_{sx#23818}(`S`_sx)) + 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{shape#4114 : shape, lanetype#24198 : lanetype, dim#24198 : dim, i#106397 : nat, i#106404 : nat, sx#23942 : sx} "i16x8.ge_u" => `VRELOP`_instr{shape#4114}(`%X%`_shape{lanetype#24198, dim#24198, i#106397}(`I16`_lanetype, `%`_dim{i#106404}(8)), `GE`_vrelop_{sx#23942}(`U`_sx)) + 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{shape#4116 : shape, lanetype#24240 : lanetype, dim#24240 : dim, i#106499 : nat, i#106506 : nat} "i32x4.eq" => `VRELOP`_instr{shape#4116}(`%X%`_shape{lanetype#24240, dim#24240, i#106499}(`I32`_lanetype, `%`_dim{i#106506}(4)), `EQ`_vrelop_) + prod "i32x4.eq" => `VRELOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `EQ`_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4118 : shape, lanetype#24267 : lanetype, dim#24267 : dim, i#106556 : nat, i#106563 : nat} "i32x4.ne" => `VRELOP`_instr{shape#4118}(`%X%`_shape{lanetype#24267, dim#24267, i#106556}(`I32`_lanetype, `%`_dim{i#106563}(4)), `NE`_vrelop_) + prod "i32x4.ne" => `VRELOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `NE`_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4120 : shape, lanetype#24294 : lanetype, dim#24294 : dim, i#106613 : nat, i#106620 : nat, sx#24186 : sx} "i32x4.lt_s" => `VRELOP`_instr{shape#4120}(`%X%`_shape{lanetype#24294, dim#24294, i#106613}(`I32`_lanetype, `%`_dim{i#106620}(4)), `LT`_vrelop_{sx#24186}(`S`_sx)) + 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{shape#4122 : shape, lanetype#24336 : lanetype, dim#24336 : dim, i#106715 : nat, i#106722 : nat, sx#24310 : sx} "i32x4.lt_u" => `VRELOP`_instr{shape#4122}(`%X%`_shape{lanetype#24336, dim#24336, i#106715}(`I32`_lanetype, `%`_dim{i#106722}(4)), `LT`_vrelop_{sx#24310}(`U`_sx)) + 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{shape#4124 : shape, lanetype#24378 : lanetype, dim#24378 : dim, i#106817 : nat, i#106824 : nat, sx#24434 : sx} "i32x4.gt_s" => `VRELOP`_instr{shape#4124}(`%X%`_shape{lanetype#24378, dim#24378, i#106817}(`I32`_lanetype, `%`_dim{i#106824}(4)), `GT`_vrelop_{sx#24434}(`S`_sx)) + 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{shape#4126 : shape, lanetype#24420 : lanetype, dim#24420 : dim, i#106919 : nat, i#106926 : nat, sx#24558 : sx} "i32x4.gt_u" => `VRELOP`_instr{shape#4126}(`%X%`_shape{lanetype#24420, dim#24420, i#106919}(`I32`_lanetype, `%`_dim{i#106926}(4)), `GT`_vrelop_{sx#24558}(`U`_sx)) + 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{shape#4128 : shape, lanetype#24462 : lanetype, dim#24462 : dim, i#107021 : nat, i#107028 : nat, sx#24682 : sx} "i32x4.le_s" => `VRELOP`_instr{shape#4128}(`%X%`_shape{lanetype#24462, dim#24462, i#107021}(`I32`_lanetype, `%`_dim{i#107028}(4)), `LE`_vrelop_{sx#24682}(`S`_sx)) + 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{shape#4130 : shape, lanetype#24504 : lanetype, dim#24504 : dim, i#107123 : nat, i#107130 : nat, sx#24806 : sx} "i32x4.le_u" => `VRELOP`_instr{shape#4130}(`%X%`_shape{lanetype#24504, dim#24504, i#107123}(`I32`_lanetype, `%`_dim{i#107130}(4)), `LE`_vrelop_{sx#24806}(`U`_sx)) + 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{shape#4132 : shape, lanetype#24546 : lanetype, dim#24546 : dim, i#107225 : nat, i#107232 : nat, sx#24930 : sx} "i32x4.ge_s" => `VRELOP`_instr{shape#4132}(`%X%`_shape{lanetype#24546, dim#24546, i#107225}(`I32`_lanetype, `%`_dim{i#107232}(4)), `GE`_vrelop_{sx#24930}(`S`_sx)) + 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{shape#4134 : shape, lanetype#24588 : lanetype, dim#24588 : dim, i#107327 : nat, i#107334 : nat, sx#25054 : sx} "i32x4.ge_u" => `VRELOP`_instr{shape#4134}(`%X%`_shape{lanetype#24588, dim#24588, i#107327}(`I32`_lanetype, `%`_dim{i#107334}(4)), `GE`_vrelop_{sx#25054}(`U`_sx)) + 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{shape#4136 : shape, lanetype#24630 : lanetype, dim#24630 : dim, i#107429 : nat, i#107436 : nat} "i64x2.eq" => `VRELOP`_instr{shape#4136}(`%X%`_shape{lanetype#24630, dim#24630, i#107429}(`I64`_lanetype, `%`_dim{i#107436}(2)), `EQ`_vrelop_) + prod "i64x2.eq" => `VRELOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `EQ`_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4138 : shape, lanetype#24657 : lanetype, dim#24657 : dim, i#107486 : nat, i#107493 : nat} "i64x2.ne" => `VRELOP`_instr{shape#4138}(`%X%`_shape{lanetype#24657, dim#24657, i#107486}(`I64`_lanetype, `%`_dim{i#107493}(2)), `NE`_vrelop_) + prod "i64x2.ne" => `VRELOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `NE`_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4140 : shape, lanetype#24684 : lanetype, dim#24684 : dim, i#107543 : nat, i#107550 : nat, sx#25298 : sx} "i64x2.lt_s" => `VRELOP`_instr{shape#4140}(`%X%`_shape{lanetype#24684, dim#24684, i#107543}(`I64`_lanetype, `%`_dim{i#107550}(2)), `LT`_vrelop_{sx#25298}(`S`_sx)) + 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{shape#4142 : shape, lanetype#24726 : lanetype, dim#24726 : dim, i#107645 : nat, i#107652 : nat, sx#25422 : sx} "i64x2.gt_s" => `VRELOP`_instr{shape#4142}(`%X%`_shape{lanetype#24726, dim#24726, i#107645}(`I64`_lanetype, `%`_dim{i#107652}(2)), `GT`_vrelop_{sx#25422}(`S`_sx)) + 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{shape#4144 : shape, lanetype#24768 : lanetype, dim#24768 : dim, i#107747 : nat, i#107754 : nat, sx#25546 : sx} "i64x2.le_s" => `VRELOP`_instr{shape#4144}(`%X%`_shape{lanetype#24768, dim#24768, i#107747}(`I64`_lanetype, `%`_dim{i#107754}(2)), `LE`_vrelop_{sx#25546}(`S`_sx)) + 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{shape#4146 : shape, lanetype#24810 : lanetype, dim#24810 : dim, i#107849 : nat, i#107856 : nat, sx#25670 : sx} "i64x2.ge_s" => `VRELOP`_instr{shape#4146}(`%X%`_shape{lanetype#24810, dim#24810, i#107849}(`I64`_lanetype, `%`_dim{i#107856}(2)), `GE`_vrelop_{sx#25670}(`S`_sx)) + 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{shape#4148 : shape, lanetype#24852 : lanetype, dim#24852 : dim, i#107951 : nat, i#107958 : nat} "f32x4.eq" => `VRELOP`_instr{shape#4148}(`%X%`_shape{lanetype#24852, dim#24852, i#107951}(`F32`_lanetype, `%`_dim{i#107958}(4)), `EQ`_vrelop_) + prod "f32x4.eq" => `VRELOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `EQ`_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4150 : shape, lanetype#24894 : lanetype, dim#24894 : dim, i#108023 : nat, i#108030 : nat} "f32x4.ne" => `VRELOP`_instr{shape#4150}(`%X%`_shape{lanetype#24894, dim#24894, i#108023}(`F32`_lanetype, `%`_dim{i#108030}(4)), `NE`_vrelop_) + prod "f32x4.ne" => `VRELOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `NE`_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4152 : shape, lanetype#24936 : lanetype, dim#24936 : dim, i#108095 : nat, i#108102 : nat} "f32x4.lt" => `VRELOP`_instr{shape#4152}(`%X%`_shape{lanetype#24936, dim#24936, i#108095}(`F32`_lanetype, `%`_dim{i#108102}(4)), `LT`_vrelop_) + prod "f32x4.lt" => `VRELOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `LT`_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4154 : shape, lanetype#24978 : lanetype, dim#24978 : dim, i#108167 : nat, i#108174 : nat} "f32x4.gt" => `VRELOP`_instr{shape#4154}(`%X%`_shape{lanetype#24978, dim#24978, i#108167}(`F32`_lanetype, `%`_dim{i#108174}(4)), `GT`_vrelop_) + prod "f32x4.gt" => `VRELOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `GT`_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4156 : shape, lanetype#25020 : lanetype, dim#25020 : dim, i#108239 : nat, i#108246 : nat} "f32x4.le" => `VRELOP`_instr{shape#4156}(`%X%`_shape{lanetype#25020, dim#25020, i#108239}(`F32`_lanetype, `%`_dim{i#108246}(4)), `LE`_vrelop_) + prod "f32x4.le" => `VRELOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `LE`_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4158 : shape, lanetype#25062 : lanetype, dim#25062 : dim, i#108311 : nat, i#108318 : nat} "f32x4.ge" => `VRELOP`_instr{shape#4158}(`%X%`_shape{lanetype#25062, dim#25062, i#108311}(`F32`_lanetype, `%`_dim{i#108318}(4)), `GE`_vrelop_) + prod "f32x4.ge" => `VRELOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `GE`_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4160 : shape, lanetype#25104 : lanetype, dim#25104 : dim, i#108383 : nat, i#108390 : nat} "f64x2.eq" => `VRELOP`_instr{shape#4160}(`%X%`_shape{lanetype#25104, dim#25104, i#108383}(`F64`_lanetype, `%`_dim{i#108390}(2)), `EQ`_vrelop_) + prod "f64x2.eq" => `VRELOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `EQ`_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4162 : shape, lanetype#25146 : lanetype, dim#25146 : dim, i#108455 : nat, i#108462 : nat} "f64x2.ne" => `VRELOP`_instr{shape#4162}(`%X%`_shape{lanetype#25146, dim#25146, i#108455}(`F64`_lanetype, `%`_dim{i#108462}(2)), `NE`_vrelop_) + prod "f64x2.ne" => `VRELOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `NE`_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4164 : shape, lanetype#25188 : lanetype, dim#25188 : dim, i#108527 : nat, i#108534 : nat} "f64x2.lt" => `VRELOP`_instr{shape#4164}(`%X%`_shape{lanetype#25188, dim#25188, i#108527}(`F64`_lanetype, `%`_dim{i#108534}(2)), `LT`_vrelop_) + prod "f64x2.lt" => `VRELOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `LT`_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4166 : shape, lanetype#25230 : lanetype, dim#25230 : dim, i#108599 : nat, i#108606 : nat} "f64x2.gt" => `VRELOP`_instr{shape#4166}(`%X%`_shape{lanetype#25230, dim#25230, i#108599}(`F64`_lanetype, `%`_dim{i#108606}(2)), `GT`_vrelop_) + prod "f64x2.gt" => `VRELOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `GT`_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4168 : shape, lanetype#25272 : lanetype, dim#25272 : dim, i#108671 : nat, i#108678 : nat} "f64x2.le" => `VRELOP`_instr{shape#4168}(`%X%`_shape{lanetype#25272, dim#25272, i#108671}(`F64`_lanetype, `%`_dim{i#108678}(2)), `LE`_vrelop_) + prod "f64x2.le" => `VRELOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `LE`_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4170 : shape, lanetype#25314 : lanetype, dim#25314 : dim, i#108743 : nat, i#108750 : nat} "f64x2.ge" => `VRELOP`_instr{shape#4170}(`%X%`_shape{lanetype#25314, dim#25314, i#108743}(`F64`_lanetype, `%`_dim{i#108750}(2)), `GE`_vrelop_) + prod "f64x2.ge" => `VRELOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `GE`_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{vectype#318 : vectype, vvunop#9 : vvunop} "v128.not" => `VVUNOP`_instr{vectype#318, vvunop#9}(`V128`_vectype, `NOT`_vvunop) + prod "v128.not" => `VVUNOP`_instr(`V128`_vectype, `NOT`_vvunop) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4172 : shape, lanetype#25356 : lanetype, dim#25356 : dim, i#108815 : nat, i#108822 : nat} "i8x16.abs" => `VUNOP`_instr{shape#4172}(`%X%`_shape{lanetype#25356, dim#25356, i#108815}(`I8`_lanetype, `%`_dim{i#108822}(16)), `ABS`_vunop_) + prod "i8x16.abs" => `VUNOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `ABS`_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4174 : shape, lanetype#25383 : lanetype, dim#25383 : dim, i#108872 : nat, i#108879 : nat} "i8x16.neg" => `VUNOP`_instr{shape#4174}(`%X%`_shape{lanetype#25383, dim#25383, i#108872}(`I8`_lanetype, `%`_dim{i#108879}(16)), `NEG`_vunop_) + prod "i8x16.neg" => `VUNOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `NEG`_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4176 : shape, lanetype#25410 : lanetype, dim#25410 : dim, i#108929 : nat, i#108936 : nat} "i8x16.popcnt" => `VUNOP`_instr{shape#4176}(`%X%`_shape{lanetype#25410, dim#25410, i#108929}(`I8`_lanetype, `%`_dim{i#108936}(16)), `POPCNT`_vunop_) + prod "i8x16.popcnt" => `VUNOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `POPCNT`_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4178 : shape, lanetype#25437 : lanetype, dim#25437 : dim, i#108986 : nat, i#108993 : nat} "i16x8.abs" => `VUNOP`_instr{shape#4178}(`%X%`_shape{lanetype#25437, dim#25437, i#108986}(`I16`_lanetype, `%`_dim{i#108993}(8)), `ABS`_vunop_) + prod "i16x8.abs" => `VUNOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `ABS`_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4180 : shape, lanetype#25464 : lanetype, dim#25464 : dim, i#109043 : nat, i#109050 : nat} "i16x8.neg" => `VUNOP`_instr{shape#4180}(`%X%`_shape{lanetype#25464, dim#25464, i#109043}(`I16`_lanetype, `%`_dim{i#109050}(8)), `NEG`_vunop_) + prod "i16x8.neg" => `VUNOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `NEG`_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4182 : shape, lanetype#25491 : lanetype, dim#25491 : dim, i#109100 : nat, i#109107 : nat} "i32x4.abs" => `VUNOP`_instr{shape#4182}(`%X%`_shape{lanetype#25491, dim#25491, i#109100}(`I32`_lanetype, `%`_dim{i#109107}(4)), `ABS`_vunop_) + prod "i32x4.abs" => `VUNOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `ABS`_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4184 : shape, lanetype#25518 : lanetype, dim#25518 : dim, i#109157 : nat, i#109164 : nat} "i32x4.neg" => `VUNOP`_instr{shape#4184}(`%X%`_shape{lanetype#25518, dim#25518, i#109157}(`I32`_lanetype, `%`_dim{i#109164}(4)), `NEG`_vunop_) + prod "i32x4.neg" => `VUNOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `NEG`_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4186 : shape, lanetype#25545 : lanetype, dim#25545 : dim, i#109214 : nat, i#109221 : nat} "i64x2.abs" => `VUNOP`_instr{shape#4186}(`%X%`_shape{lanetype#25545, dim#25545, i#109214}(`I64`_lanetype, `%`_dim{i#109221}(2)), `ABS`_vunop_) + prod "i64x2.abs" => `VUNOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `ABS`_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4188 : shape, lanetype#25572 : lanetype, dim#25572 : dim, i#109271 : nat, i#109278 : nat} "i64x2.neg" => `VUNOP`_instr{shape#4188}(`%X%`_shape{lanetype#25572, dim#25572, i#109271}(`I64`_lanetype, `%`_dim{i#109278}(2)), `NEG`_vunop_) + prod "i64x2.neg" => `VUNOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `NEG`_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4190 : shape, lanetype#25599 : lanetype, dim#25599 : dim, i#109328 : nat, i#109335 : nat} "f32x4.abs" => `VUNOP`_instr{shape#4190}(`%X%`_shape{lanetype#25599, dim#25599, i#109328}(`F32`_lanetype, `%`_dim{i#109335}(4)), `ABS`_vunop_) + prod "f32x4.abs" => `VUNOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `ABS`_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4192 : shape, lanetype#25641 : lanetype, dim#25641 : dim, i#109400 : nat, i#109407 : nat} "f32x4.neg" => `VUNOP`_instr{shape#4192}(`%X%`_shape{lanetype#25641, dim#25641, i#109400}(`F32`_lanetype, `%`_dim{i#109407}(4)), `NEG`_vunop_) + prod "f32x4.neg" => `VUNOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `NEG`_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4194 : shape, lanetype#25683 : lanetype, dim#25683 : dim, i#109472 : nat, i#109479 : nat} "f32x4.sqrt" => `VUNOP`_instr{shape#4194}(`%X%`_shape{lanetype#25683, dim#25683, i#109472}(`F32`_lanetype, `%`_dim{i#109479}(4)), `SQRT`_vunop_) + prod "f32x4.sqrt" => `VUNOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `SQRT`_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4196 : shape, lanetype#25725 : lanetype, dim#25725 : dim, i#109544 : nat, i#109551 : nat} "f32x4.ceil" => `VUNOP`_instr{shape#4196}(`%X%`_shape{lanetype#25725, dim#25725, i#109544}(`F32`_lanetype, `%`_dim{i#109551}(4)), `CEIL`_vunop_) + prod "f32x4.ceil" => `VUNOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `CEIL`_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4198 : shape, lanetype#25767 : lanetype, dim#25767 : dim, i#109616 : nat, i#109623 : nat} "f32x4.floor" => `VUNOP`_instr{shape#4198}(`%X%`_shape{lanetype#25767, dim#25767, i#109616}(`F32`_lanetype, `%`_dim{i#109623}(4)), `FLOOR`_vunop_) + prod "f32x4.floor" => `VUNOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `FLOOR`_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4200 : shape, lanetype#25809 : lanetype, dim#25809 : dim, i#109688 : nat, i#109695 : nat} "f32x4.trunc" => `VUNOP`_instr{shape#4200}(`%X%`_shape{lanetype#25809, dim#25809, i#109688}(`F32`_lanetype, `%`_dim{i#109695}(4)), `TRUNC`_vunop_) + prod "f32x4.trunc" => `VUNOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `TRUNC`_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4202 : shape, lanetype#25851 : lanetype, dim#25851 : dim, i#109760 : nat, i#109767 : nat} "f32x4.nearest" => `VUNOP`_instr{shape#4202}(`%X%`_shape{lanetype#25851, dim#25851, i#109760}(`F32`_lanetype, `%`_dim{i#109767}(4)), `NEAREST`_vunop_) + prod "f32x4.nearest" => `VUNOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `NEAREST`_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4204 : shape, lanetype#25893 : lanetype, dim#25893 : dim, i#109832 : nat, i#109839 : nat} "f64x2.abs" => `VUNOP`_instr{shape#4204}(`%X%`_shape{lanetype#25893, dim#25893, i#109832}(`F64`_lanetype, `%`_dim{i#109839}(2)), `ABS`_vunop_) + prod "f64x2.abs" => `VUNOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `ABS`_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4206 : shape, lanetype#25935 : lanetype, dim#25935 : dim, i#109904 : nat, i#109911 : nat} "f64x2.neg" => `VUNOP`_instr{shape#4206}(`%X%`_shape{lanetype#25935, dim#25935, i#109904}(`F64`_lanetype, `%`_dim{i#109911}(2)), `NEG`_vunop_) + prod "f64x2.neg" => `VUNOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `NEG`_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4208 : shape, lanetype#25977 : lanetype, dim#25977 : dim, i#109976 : nat, i#109983 : nat} "f64x2.sqrt" => `VUNOP`_instr{shape#4208}(`%X%`_shape{lanetype#25977, dim#25977, i#109976}(`F64`_lanetype, `%`_dim{i#109983}(2)), `SQRT`_vunop_) + prod "f64x2.sqrt" => `VUNOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `SQRT`_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4210 : shape, lanetype#26019 : lanetype, dim#26019 : dim, i#110048 : nat, i#110055 : nat} "f64x2.ceil" => `VUNOP`_instr{shape#4210}(`%X%`_shape{lanetype#26019, dim#26019, i#110048}(`F64`_lanetype, `%`_dim{i#110055}(2)), `CEIL`_vunop_) + prod "f64x2.ceil" => `VUNOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `CEIL`_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4212 : shape, lanetype#26061 : lanetype, dim#26061 : dim, i#110120 : nat, i#110127 : nat} "f64x2.floor" => `VUNOP`_instr{shape#4212}(`%X%`_shape{lanetype#26061, dim#26061, i#110120}(`F64`_lanetype, `%`_dim{i#110127}(2)), `FLOOR`_vunop_) + prod "f64x2.floor" => `VUNOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `FLOOR`_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4214 : shape, lanetype#26103 : lanetype, dim#26103 : dim, i#110192 : nat, i#110199 : nat} "f64x2.trunc" => `VUNOP`_instr{shape#4214}(`%X%`_shape{lanetype#26103, dim#26103, i#110192}(`F64`_lanetype, `%`_dim{i#110199}(2)), `TRUNC`_vunop_) + prod "f64x2.trunc" => `VUNOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `TRUNC`_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4216 : shape, lanetype#26145 : lanetype, dim#26145 : dim, i#110264 : nat, i#110271 : nat} "f64x2.nearest" => `VUNOP`_instr{shape#4216}(`%X%`_shape{lanetype#26145, dim#26145, i#110264}(`F64`_lanetype, `%`_dim{i#110271}(2)), `NEAREST`_vunop_) + prod "f64x2.nearest" => `VUNOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `NEAREST`_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{vectype#320 : vectype, vvbinop#15 : vvbinop} "v128.and" => `VVBINOP`_instr{vectype#320, vvbinop#15}(`V128`_vectype, `AND`_vvbinop) + prod "v128.and" => `VVBINOP`_instr(`V128`_vectype, `AND`_vvbinop) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{vectype#322 : vectype, vvbinop#17 : vvbinop} "v128.andnot" => `VVBINOP`_instr{vectype#322, vvbinop#17}(`V128`_vectype, `ANDNOT`_vvbinop) + prod "v128.andnot" => `VVBINOP`_instr(`V128`_vectype, `ANDNOT`_vvbinop) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{vectype#324 : vectype, vvbinop#19 : vvbinop} "v128.or" => `VVBINOP`_instr{vectype#324, vvbinop#19}(`V128`_vectype, `OR`_vvbinop) + prod "v128.or" => `VVBINOP`_instr(`V128`_vectype, `OR`_vvbinop) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{vectype#326 : vectype, vvbinop#21 : vvbinop} "v128.xor" => `VVBINOP`_instr{vectype#326, vvbinop#21}(`V128`_vectype, `XOR`_vvbinop) + prod "v128.xor" => `VVBINOP`_instr(`V128`_vectype, `XOR`_vvbinop) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4218 : shape, lanetype#26187 : lanetype, dim#26187 : dim, i#110336 : nat, i#110343 : nat} "i8x16.add" => `VBINOP`_instr{shape#4218}(`%X%`_shape{lanetype#26187, dim#26187, i#110336}(`I8`_lanetype, `%`_dim{i#110343}(16)), `ADD`_vbinop_) + prod "i8x16.add" => `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `ADD`_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4220 : shape, lanetype#26214 : lanetype, dim#26214 : dim, i#110393 : nat, i#110400 : nat, sx#25854 : sx} "i8x16.add_sat_s" => `VBINOP`_instr{shape#4220}(`%X%`_shape{lanetype#26214, dim#26214, i#110393}(`I8`_lanetype, `%`_dim{i#110400}(16)), `ADD_SAT`_vbinop_{sx#25854}(`S`_sx)) + 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{shape#4222 : shape, lanetype#26256 : lanetype, dim#26256 : dim, i#110495 : nat, i#110502 : nat, sx#25978 : sx} "i8x16.add_sat_u" => `VBINOP`_instr{shape#4222}(`%X%`_shape{lanetype#26256, dim#26256, i#110495}(`I8`_lanetype, `%`_dim{i#110502}(16)), `ADD_SAT`_vbinop_{sx#25978}(`U`_sx)) + 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{shape#4224 : shape, lanetype#26298 : lanetype, dim#26298 : dim, i#110597 : nat, i#110604 : nat} "i8x16.sub" => `VBINOP`_instr{shape#4224}(`%X%`_shape{lanetype#26298, dim#26298, i#110597}(`I8`_lanetype, `%`_dim{i#110604}(16)), `SUB`_vbinop_) + prod "i8x16.sub" => `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `SUB`_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4226 : shape, lanetype#26325 : lanetype, dim#26325 : dim, i#110654 : nat, i#110661 : nat, sx#26162 : sx} "i8x16.sub_sat_s" => `VBINOP`_instr{shape#4226}(`%X%`_shape{lanetype#26325, dim#26325, i#110654}(`I8`_lanetype, `%`_dim{i#110661}(16)), `SUB_SAT`_vbinop_{sx#26162}(`S`_sx)) + 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{shape#4228 : shape, lanetype#26367 : lanetype, dim#26367 : dim, i#110756 : nat, i#110763 : nat, sx#26286 : sx} "i8x16.sub_sat_u" => `VBINOP`_instr{shape#4228}(`%X%`_shape{lanetype#26367, dim#26367, i#110756}(`I8`_lanetype, `%`_dim{i#110763}(16)), `SUB_SAT`_vbinop_{sx#26286}(`U`_sx)) + 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{shape#4230 : shape, lanetype#26409 : lanetype, dim#26409 : dim, i#110858 : nat, i#110865 : nat, sx#26410 : sx} "i8x16.min_s" => `VBINOP`_instr{shape#4230}(`%X%`_shape{lanetype#26409, dim#26409, i#110858}(`I8`_lanetype, `%`_dim{i#110865}(16)), `MIN`_vbinop_{sx#26410}(`S`_sx)) + 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{shape#4232 : shape, lanetype#26451 : lanetype, dim#26451 : dim, i#110960 : nat, i#110967 : nat, sx#26534 : sx} "i8x16.min_u" => `VBINOP`_instr{shape#4232}(`%X%`_shape{lanetype#26451, dim#26451, i#110960}(`I8`_lanetype, `%`_dim{i#110967}(16)), `MIN`_vbinop_{sx#26534}(`U`_sx)) + 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{shape#4234 : shape, lanetype#26493 : lanetype, dim#26493 : dim, i#111062 : nat, i#111069 : nat, sx#26658 : sx} "i8x16.max_s" => `VBINOP`_instr{shape#4234}(`%X%`_shape{lanetype#26493, dim#26493, i#111062}(`I8`_lanetype, `%`_dim{i#111069}(16)), `MAX`_vbinop_{sx#26658}(`S`_sx)) + 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{shape#4236 : shape, lanetype#26535 : lanetype, dim#26535 : dim, i#111164 : nat, i#111171 : nat, sx#26782 : sx} "i8x16.max_u" => `VBINOP`_instr{shape#4236}(`%X%`_shape{lanetype#26535, dim#26535, i#111164}(`I8`_lanetype, `%`_dim{i#111171}(16)), `MAX`_vbinop_{sx#26782}(`U`_sx)) + 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{shape#4238 : shape, lanetype#26577 : lanetype, dim#26577 : dim, i#111266 : nat, i#111273 : nat} "i8x16.avgr_u" => `VBINOP`_instr{shape#4238}(`%X%`_shape{lanetype#26577, dim#26577, i#111266}(`I8`_lanetype, `%`_dim{i#111273}(16)), `AVGRU`_vbinop_) + prod "i8x16.avgr_u" => `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `AVGRU`_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4240 : shape, lanetype#26619 : lanetype, dim#26619 : dim, i#111368 : nat, i#111375 : nat} "i16x8.add" => `VBINOP`_instr{shape#4240}(`%X%`_shape{lanetype#26619, dim#26619, i#111368}(`I16`_lanetype, `%`_dim{i#111375}(8)), `ADD`_vbinop_) + prod "i16x8.add" => `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `ADD`_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4242 : shape, lanetype#26646 : lanetype, dim#26646 : dim, i#111425 : nat, i#111432 : nat, sx#27086 : sx} "i16x8.add_sat_s" => `VBINOP`_instr{shape#4242}(`%X%`_shape{lanetype#26646, dim#26646, i#111425}(`I16`_lanetype, `%`_dim{i#111432}(8)), `ADD_SAT`_vbinop_{sx#27086}(`S`_sx)) + 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{shape#4244 : shape, lanetype#26688 : lanetype, dim#26688 : dim, i#111527 : nat, i#111534 : nat, sx#27210 : sx} "i16x8.add_sat_u" => `VBINOP`_instr{shape#4244}(`%X%`_shape{lanetype#26688, dim#26688, i#111527}(`I16`_lanetype, `%`_dim{i#111534}(8)), `ADD_SAT`_vbinop_{sx#27210}(`U`_sx)) + 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{shape#4246 : shape, lanetype#26730 : lanetype, dim#26730 : dim, i#111629 : nat, i#111636 : nat} "i16x8.sub" => `VBINOP`_instr{shape#4246}(`%X%`_shape{lanetype#26730, dim#26730, i#111629}(`I16`_lanetype, `%`_dim{i#111636}(8)), `SUB`_vbinop_) + prod "i16x8.sub" => `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `SUB`_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4248 : shape, lanetype#26757 : lanetype, dim#26757 : dim, i#111686 : nat, i#111693 : nat, sx#27394 : sx} "i16x8.sub_sat_s" => `VBINOP`_instr{shape#4248}(`%X%`_shape{lanetype#26757, dim#26757, i#111686}(`I16`_lanetype, `%`_dim{i#111693}(8)), `SUB_SAT`_vbinop_{sx#27394}(`S`_sx)) + 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{shape#4250 : shape, lanetype#26799 : lanetype, dim#26799 : dim, i#111788 : nat, i#111795 : nat, sx#27518 : sx} "i16x8.sub_sat_u" => `VBINOP`_instr{shape#4250}(`%X%`_shape{lanetype#26799, dim#26799, i#111788}(`I16`_lanetype, `%`_dim{i#111795}(8)), `SUB_SAT`_vbinop_{sx#27518}(`U`_sx)) + 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{shape#4252 : shape, lanetype#26841 : lanetype, dim#26841 : dim, i#111890 : nat, i#111897 : nat} "i16x8.mul" => `VBINOP`_instr{shape#4252}(`%X%`_shape{lanetype#26841, dim#26841, i#111890}(`I16`_lanetype, `%`_dim{i#111897}(8)), `MUL`_vbinop_) + prod "i16x8.mul" => `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `MUL`_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4254 : shape, lanetype#26868 : lanetype, dim#26868 : dim, i#111947 : nat, i#111954 : nat, sx#27702 : sx} "i16x8.min_s" => `VBINOP`_instr{shape#4254}(`%X%`_shape{lanetype#26868, dim#26868, i#111947}(`I16`_lanetype, `%`_dim{i#111954}(8)), `MIN`_vbinop_{sx#27702}(`S`_sx)) + 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{shape#4256 : shape, lanetype#26910 : lanetype, dim#26910 : dim, i#112049 : nat, i#112056 : nat, sx#27826 : sx} "i16x8.min_u" => `VBINOP`_instr{shape#4256}(`%X%`_shape{lanetype#26910, dim#26910, i#112049}(`I16`_lanetype, `%`_dim{i#112056}(8)), `MIN`_vbinop_{sx#27826}(`U`_sx)) + 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{shape#4258 : shape, lanetype#26952 : lanetype, dim#26952 : dim, i#112151 : nat, i#112158 : nat, sx#27950 : sx} "i16x8.max_s" => `VBINOP`_instr{shape#4258}(`%X%`_shape{lanetype#26952, dim#26952, i#112151}(`I16`_lanetype, `%`_dim{i#112158}(8)), `MAX`_vbinop_{sx#27950}(`S`_sx)) + 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{shape#4260 : shape, lanetype#26994 : lanetype, dim#26994 : dim, i#112253 : nat, i#112260 : nat, sx#28074 : sx} "i16x8.max_u" => `VBINOP`_instr{shape#4260}(`%X%`_shape{lanetype#26994, dim#26994, i#112253}(`I16`_lanetype, `%`_dim{i#112260}(8)), `MAX`_vbinop_{sx#28074}(`U`_sx)) + 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{shape#4262 : shape, lanetype#27036 : lanetype, dim#27036 : dim, i#112355 : nat, i#112362 : nat} "i16x8.avgr_u" => `VBINOP`_instr{shape#4262}(`%X%`_shape{lanetype#27036, dim#27036, i#112355}(`I16`_lanetype, `%`_dim{i#112362}(8)), `AVGRU`_vbinop_) + prod "i16x8.avgr_u" => `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `AVGRU`_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4264 : shape, lanetype#27078 : lanetype, dim#27078 : dim, i#112457 : nat, i#112464 : nat} "i16x8.q15mulr_sat_s" => `VBINOP`_instr{shape#4264}(`%X%`_shape{lanetype#27078, dim#27078, i#112457}(`I16`_lanetype, `%`_dim{i#112464}(8)), `Q15MULR_SATS`_vbinop_) + 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{shape#4266 : shape, lanetype#27120 : lanetype, dim#27120 : dim, i#112559 : nat, i#112566 : nat} "i16x8.relaxed_q15mulr_s" => `VBINOP`_instr{shape#4266}(`%X%`_shape{lanetype#27120, dim#27120, i#112559}(`I16`_lanetype, `%`_dim{i#112566}(8)), `RELAXED_Q15MULRS`_vbinop_) + 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{shape#4268 : shape, lanetype#27162 : lanetype, dim#27162 : dim, i#112661 : nat, i#112668 : nat} "i32x4.add" => `VBINOP`_instr{shape#4268}(`%X%`_shape{lanetype#27162, dim#27162, i#112661}(`I32`_lanetype, `%`_dim{i#112668}(4)), `ADD`_vbinop_) + prod "i32x4.add" => `VBINOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `ADD`_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4270 : shape, lanetype#27189 : lanetype, dim#27189 : dim, i#112718 : nat, i#112725 : nat} "i32x4.sub" => `VBINOP`_instr{shape#4270}(`%X%`_shape{lanetype#27189, dim#27189, i#112718}(`I32`_lanetype, `%`_dim{i#112725}(4)), `SUB`_vbinop_) + prod "i32x4.sub" => `VBINOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `SUB`_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4272 : shape, lanetype#27216 : lanetype, dim#27216 : dim, i#112775 : nat, i#112782 : nat} "i32x4.mul" => `VBINOP`_instr{shape#4272}(`%X%`_shape{lanetype#27216, dim#27216, i#112775}(`I32`_lanetype, `%`_dim{i#112782}(4)), `MUL`_vbinop_) + prod "i32x4.mul" => `VBINOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `MUL`_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4274 : shape, lanetype#27243 : lanetype, dim#27243 : dim, i#112832 : nat, i#112839 : nat, sx#28738 : sx} "i32x4.min_s" => `VBINOP`_instr{shape#4274}(`%X%`_shape{lanetype#27243, dim#27243, i#112832}(`I32`_lanetype, `%`_dim{i#112839}(4)), `MIN`_vbinop_{sx#28738}(`S`_sx)) + 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{shape#4276 : shape, lanetype#27285 : lanetype, dim#27285 : dim, i#112934 : nat, i#112941 : nat, sx#28862 : sx} "i32x4.min_u" => `VBINOP`_instr{shape#4276}(`%X%`_shape{lanetype#27285, dim#27285, i#112934}(`I32`_lanetype, `%`_dim{i#112941}(4)), `MIN`_vbinop_{sx#28862}(`U`_sx)) + 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{shape#4278 : shape, lanetype#27327 : lanetype, dim#27327 : dim, i#113036 : nat, i#113043 : nat, sx#28986 : sx} "i32x4.max_s" => `VBINOP`_instr{shape#4278}(`%X%`_shape{lanetype#27327, dim#27327, i#113036}(`I32`_lanetype, `%`_dim{i#113043}(4)), `MAX`_vbinop_{sx#28986}(`S`_sx)) + 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{shape#4280 : shape, lanetype#27369 : lanetype, dim#27369 : dim, i#113138 : nat, i#113145 : nat, sx#29110 : sx} "i32x4.max_u" => `VBINOP`_instr{shape#4280}(`%X%`_shape{lanetype#27369, dim#27369, i#113138}(`I32`_lanetype, `%`_dim{i#113145}(4)), `MAX`_vbinop_{sx#29110}(`U`_sx)) + 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{shape#4282 : shape, lanetype#27411 : lanetype, dim#27411 : dim, i#113240 : nat, i#113247 : nat} "i64x2.add" => `VBINOP`_instr{shape#4282}(`%X%`_shape{lanetype#27411, dim#27411, i#113240}(`I64`_lanetype, `%`_dim{i#113247}(2)), `ADD`_vbinop_) + prod "i64x2.add" => `VBINOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `ADD`_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4284 : shape, lanetype#27438 : lanetype, dim#27438 : dim, i#113297 : nat, i#113304 : nat} "i64x2.sub" => `VBINOP`_instr{shape#4284}(`%X%`_shape{lanetype#27438, dim#27438, i#113297}(`I64`_lanetype, `%`_dim{i#113304}(2)), `SUB`_vbinop_) + prod "i64x2.sub" => `VBINOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `SUB`_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4286 : shape, lanetype#27465 : lanetype, dim#27465 : dim, i#113354 : nat, i#113361 : nat} "i64x2.mul" => `VBINOP`_instr{shape#4286}(`%X%`_shape{lanetype#27465, dim#27465, i#113354}(`I64`_lanetype, `%`_dim{i#113361}(2)), `MUL`_vbinop_) + prod "i64x2.mul" => `VBINOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `MUL`_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4288 : shape, lanetype#27492 : lanetype, dim#27492 : dim, i#113411 : nat, i#113418 : nat} "f32x4.add" => `VBINOP`_instr{shape#4288}(`%X%`_shape{lanetype#27492, dim#27492, i#113411}(`F32`_lanetype, `%`_dim{i#113418}(4)), `ADD`_vbinop_) + prod "f32x4.add" => `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `ADD`_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4290 : shape, lanetype#27534 : lanetype, dim#27534 : dim, i#113483 : nat, i#113490 : nat} "f32x4.sub" => `VBINOP`_instr{shape#4290}(`%X%`_shape{lanetype#27534, dim#27534, i#113483}(`F32`_lanetype, `%`_dim{i#113490}(4)), `SUB`_vbinop_) + prod "f32x4.sub" => `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `SUB`_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4292 : shape, lanetype#27576 : lanetype, dim#27576 : dim, i#113555 : nat, i#113562 : nat} "f32x4.mul" => `VBINOP`_instr{shape#4292}(`%X%`_shape{lanetype#27576, dim#27576, i#113555}(`F32`_lanetype, `%`_dim{i#113562}(4)), `MUL`_vbinop_) + prod "f32x4.mul" => `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `MUL`_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4294 : shape, lanetype#27618 : lanetype, dim#27618 : dim, i#113627 : nat, i#113634 : nat} "f32x4.div" => `VBINOP`_instr{shape#4294}(`%X%`_shape{lanetype#27618, dim#27618, i#113627}(`F32`_lanetype, `%`_dim{i#113634}(4)), `DIV`_vbinop_) + prod "f32x4.div" => `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `DIV`_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4296 : shape, lanetype#27660 : lanetype, dim#27660 : dim, i#113699 : nat, i#113706 : nat} "f32x4.min" => `VBINOP`_instr{shape#4296}(`%X%`_shape{lanetype#27660, dim#27660, i#113699}(`F32`_lanetype, `%`_dim{i#113706}(4)), `MIN`_vbinop_) + prod "f32x4.min" => `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `MIN`_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4298 : shape, lanetype#27702 : lanetype, dim#27702 : dim, i#113771 : nat, i#113778 : nat} "f32x4.max" => `VBINOP`_instr{shape#4298}(`%X%`_shape{lanetype#27702, dim#27702, i#113771}(`F32`_lanetype, `%`_dim{i#113778}(4)), `MAX`_vbinop_) + prod "f32x4.max" => `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `MAX`_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4300 : shape, lanetype#27744 : lanetype, dim#27744 : dim, i#113843 : nat, i#113850 : nat} "f32x4.pmin" => `VBINOP`_instr{shape#4300}(`%X%`_shape{lanetype#27744, dim#27744, i#113843}(`F32`_lanetype, `%`_dim{i#113850}(4)), `PMIN`_vbinop_) + prod "f32x4.pmin" => `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `PMIN`_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4302 : shape, lanetype#27786 : lanetype, dim#27786 : dim, i#113915 : nat, i#113922 : nat} "f32x4.pmax" => `VBINOP`_instr{shape#4302}(`%X%`_shape{lanetype#27786, dim#27786, i#113915}(`F32`_lanetype, `%`_dim{i#113922}(4)), `PMAX`_vbinop_) + prod "f32x4.pmax" => `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `PMAX`_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4304 : shape, lanetype#27828 : lanetype, dim#27828 : dim, i#113987 : nat, i#113994 : nat} "f32x4.relaxed_min" => `VBINOP`_instr{shape#4304}(`%X%`_shape{lanetype#27828, dim#27828, i#113987}(`F32`_lanetype, `%`_dim{i#113994}(4)), `RELAXED_MIN`_vbinop_) + 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{shape#4306 : shape, lanetype#27870 : lanetype, dim#27870 : dim, i#114059 : nat, i#114066 : nat} "f32x4.relaxed_max" => `VBINOP`_instr{shape#4306}(`%X%`_shape{lanetype#27870, dim#27870, i#114059}(`F32`_lanetype, `%`_dim{i#114066}(4)), `RELAXED_MAX`_vbinop_) + 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{shape#4308 : shape, lanetype#27912 : lanetype, dim#27912 : dim, i#114131 : nat, i#114138 : nat} "f64x2.add" => `VBINOP`_instr{shape#4308}(`%X%`_shape{lanetype#27912, dim#27912, i#114131}(`F64`_lanetype, `%`_dim{i#114138}(2)), `ADD`_vbinop_) + prod "f64x2.add" => `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `ADD`_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4310 : shape, lanetype#27954 : lanetype, dim#27954 : dim, i#114203 : nat, i#114210 : nat} "f64x2.sub" => `VBINOP`_instr{shape#4310}(`%X%`_shape{lanetype#27954, dim#27954, i#114203}(`F64`_lanetype, `%`_dim{i#114210}(2)), `SUB`_vbinop_) + prod "f64x2.sub" => `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `SUB`_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4312 : shape, lanetype#27996 : lanetype, dim#27996 : dim, i#114275 : nat, i#114282 : nat} "f64x2.mul" => `VBINOP`_instr{shape#4312}(`%X%`_shape{lanetype#27996, dim#27996, i#114275}(`F64`_lanetype, `%`_dim{i#114282}(2)), `MUL`_vbinop_) + prod "f64x2.mul" => `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `MUL`_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4314 : shape, lanetype#28038 : lanetype, dim#28038 : dim, i#114347 : nat, i#114354 : nat} "f64x2.div" => `VBINOP`_instr{shape#4314}(`%X%`_shape{lanetype#28038, dim#28038, i#114347}(`F64`_lanetype, `%`_dim{i#114354}(2)), `DIV`_vbinop_) + prod "f64x2.div" => `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `DIV`_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4316 : shape, lanetype#28080 : lanetype, dim#28080 : dim, i#114419 : nat, i#114426 : nat} "f64x2.min" => `VBINOP`_instr{shape#4316}(`%X%`_shape{lanetype#28080, dim#28080, i#114419}(`F64`_lanetype, `%`_dim{i#114426}(2)), `MIN`_vbinop_) + prod "f64x2.min" => `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `MIN`_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4318 : shape, lanetype#28122 : lanetype, dim#28122 : dim, i#114491 : nat, i#114498 : nat} "f64x2.max" => `VBINOP`_instr{shape#4318}(`%X%`_shape{lanetype#28122, dim#28122, i#114491}(`F64`_lanetype, `%`_dim{i#114498}(2)), `MAX`_vbinop_) + prod "f64x2.max" => `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `MAX`_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4320 : shape, lanetype#28164 : lanetype, dim#28164 : dim, i#114563 : nat, i#114570 : nat} "f64x2.pmin" => `VBINOP`_instr{shape#4320}(`%X%`_shape{lanetype#28164, dim#28164, i#114563}(`F64`_lanetype, `%`_dim{i#114570}(2)), `PMIN`_vbinop_) + prod "f64x2.pmin" => `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `PMIN`_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4322 : shape, lanetype#28206 : lanetype, dim#28206 : dim, i#114635 : nat, i#114642 : nat} "f64x2.pmax" => `VBINOP`_instr{shape#4322}(`%X%`_shape{lanetype#28206, dim#28206, i#114635}(`F64`_lanetype, `%`_dim{i#114642}(2)), `PMAX`_vbinop_) + prod "f64x2.pmax" => `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `PMAX`_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4324 : shape, lanetype#28248 : lanetype, dim#28248 : dim, i#114707 : nat, i#114714 : nat} "f64x2.relaxed_min" => `VBINOP`_instr{shape#4324}(`%X%`_shape{lanetype#28248, dim#28248, i#114707}(`F64`_lanetype, `%`_dim{i#114714}(2)), `RELAXED_MIN`_vbinop_) + 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{shape#4326 : shape, lanetype#28290 : lanetype, dim#28290 : dim, i#114779 : nat, i#114786 : nat} "f64x2.relaxed_max" => `VBINOP`_instr{shape#4326}(`%X%`_shape{lanetype#28290, dim#28290, i#114779}(`F64`_lanetype, `%`_dim{i#114786}(2)), `RELAXED_MAX`_vbinop_) + 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{vectype#328 : vectype, vvternop#9 : vvternop} "v128.bitselect" => `VVTERNOP`_instr{vectype#328, vvternop#9}(`V128`_vectype, `BITSELECT`_vvternop) + prod "v128.bitselect" => `VVTERNOP`_instr(`V128`_vectype, `BITSELECT`_vvternop) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{shape#4328 : shape, lanetype#28332 : lanetype, dim#28332 : dim, i#114851 : nat, i#114858 : nat} "i8x16.relaxed_laneselect" => `VTERNOP`_instr{shape#4328}(`%X%`_shape{lanetype#28332, dim#28332, i#114851}(`I8`_lanetype, `%`_dim{i#114858}(16)), `RELAXED_LANESELECT`_vternop_) + 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{shape#4330 : shape, lanetype#28359 : lanetype, dim#28359 : dim, i#114908 : nat, i#114915 : nat} "i16x8.relaxed_laneselect" => `VTERNOP`_instr{shape#4330}(`%X%`_shape{lanetype#28359, dim#28359, i#114908}(`I16`_lanetype, `%`_dim{i#114915}(8)), `RELAXED_LANESELECT`_vternop_) + 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{shape#4332 : shape, lanetype#28386 : lanetype, dim#28386 : dim, i#114965 : nat, i#114972 : nat} "i32x4.relaxed_laneselect" => `VTERNOP`_instr{shape#4332}(`%X%`_shape{lanetype#28386, dim#28386, i#114965}(`I32`_lanetype, `%`_dim{i#114972}(4)), `RELAXED_LANESELECT`_vternop_) + 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{shape#4334 : shape, lanetype#28413 : lanetype, dim#28413 : dim, i#115022 : nat, i#115029 : nat} "i64x2.relaxed_laneselect" => `VTERNOP`_instr{shape#4334}(`%X%`_shape{lanetype#28413, dim#28413, i#115022}(`I64`_lanetype, `%`_dim{i#115029}(2)), `RELAXED_LANESELECT`_vternop_) + 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{shape#4336 : shape, lanetype#28440 : lanetype, dim#28440 : dim, i#115079 : nat, i#115086 : nat} "f32x4.relaxed_madd" => `VTERNOP`_instr{shape#4336}(`%X%`_shape{lanetype#28440, dim#28440, i#115079}(`F32`_lanetype, `%`_dim{i#115086}(4)), `RELAXED_MADD`_vternop_) + 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{shape#4338 : shape, lanetype#28482 : lanetype, dim#28482 : dim, i#115151 : nat, i#115158 : nat} "f32x4.relaxed_nmadd" => `VTERNOP`_instr{shape#4338}(`%X%`_shape{lanetype#28482, dim#28482, i#115151}(`F32`_lanetype, `%`_dim{i#115158}(4)), `RELAXED_NMADD`_vternop_) + 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{shape#4340 : shape, lanetype#28524 : lanetype, dim#28524 : dim, i#115223 : nat, i#115230 : nat} "f64x2.relaxed_madd" => `VTERNOP`_instr{shape#4340}(`%X%`_shape{lanetype#28524, dim#28524, i#115223}(`F64`_lanetype, `%`_dim{i#115230}(2)), `RELAXED_MADD`_vternop_) + 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{shape#4342 : shape, lanetype#28566 : lanetype, dim#28566 : dim, i#115295 : nat, i#115302 : nat} "f64x2.relaxed_nmadd" => `VTERNOP`_instr{shape#4342}(`%X%`_shape{lanetype#28566, dim#28566, i#115295}(`F64`_lanetype, `%`_dim{i#115302}(2)), `RELAXED_NMADD`_vternop_) + 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{ishape#45 : ishape, shape#4354 : shape, Jnn#488 : Jnn, lanetype#28608 : lanetype, dim#28608 : dim, i#115367 : nat, i#115374 : nat} "i8x16.shl" => `VSHIFTOP`_instr{ishape#45}(`%`_ishape{shape#4354, Jnn#488}(`%X%`_shape{lanetype#28608, dim#28608, i#115367}(`I8`_lanetype, `%`_dim{i#115374}(16))), `SHL`_vshiftop_) + prod "i8x16.shl" => `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `SHL`_vshiftop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{ishape#47 : ishape, shape#4381 : shape, Jnn#492 : Jnn, lanetype#28665 : lanetype, dim#28665 : dim, i#115454 : nat, i#115461 : nat, sx#29339 : sx} "i8x16.shr_s" => `VSHIFTOP`_instr{ishape#47}(`%`_ishape{shape#4381, Jnn#492}(`%X%`_shape{lanetype#28665, dim#28665, i#115454}(`I8`_lanetype, `%`_dim{i#115461}(16))), `SHR`_vshiftop_{sx#29339}(`S`_sx)) + 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{ishape#49 : ishape, shape#4423 : shape, Jnn#496 : Jnn, lanetype#28767 : lanetype, dim#28767 : dim, i#115616 : nat, i#115623 : nat, sx#29373 : sx} "i8x16.shr_u" => `VSHIFTOP`_instr{ishape#49}(`%`_ishape{shape#4423, Jnn#496}(`%X%`_shape{lanetype#28767, dim#28767, i#115616}(`I8`_lanetype, `%`_dim{i#115623}(16))), `SHR`_vshiftop_{sx#29373}(`U`_sx)) + 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{ishape#51 : ishape, shape#4465 : shape, Jnn#500 : Jnn, lanetype#28869 : lanetype, dim#28869 : dim, i#115778 : nat, i#115785 : nat} "i16x8.shl" => `VSHIFTOP`_instr{ishape#51}(`%`_ishape{shape#4465, Jnn#500}(`%X%`_shape{lanetype#28869, dim#28869, i#115778}(`I16`_lanetype, `%`_dim{i#115785}(8))), `SHL`_vshiftop_) + prod "i16x8.shl" => `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `SHL`_vshiftop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{ishape#53 : ishape, shape#4492 : shape, Jnn#504 : Jnn, lanetype#28926 : lanetype, dim#28926 : dim, i#115865 : nat, i#115872 : nat, sx#29422 : sx} "i16x8.shr_s" => `VSHIFTOP`_instr{ishape#53}(`%`_ishape{shape#4492, Jnn#504}(`%X%`_shape{lanetype#28926, dim#28926, i#115865}(`I16`_lanetype, `%`_dim{i#115872}(8))), `SHR`_vshiftop_{sx#29422}(`S`_sx)) + 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{ishape#55 : ishape, shape#4534 : shape, Jnn#508 : Jnn, lanetype#29028 : lanetype, dim#29028 : dim, i#116027 : nat, i#116034 : nat, sx#29456 : sx} "i16x8.shr_u" => `VSHIFTOP`_instr{ishape#55}(`%`_ishape{shape#4534, Jnn#508}(`%X%`_shape{lanetype#29028, dim#29028, i#116027}(`I16`_lanetype, `%`_dim{i#116034}(8))), `SHR`_vshiftop_{sx#29456}(`U`_sx)) + 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{ishape#57 : ishape, shape#4576 : shape, Jnn#512 : Jnn, lanetype#29130 : lanetype, dim#29130 : dim, i#116189 : nat, i#116196 : nat} "i32x4.shl" => `VSHIFTOP`_instr{ishape#57}(`%`_ishape{shape#4576, Jnn#512}(`%X%`_shape{lanetype#29130, dim#29130, i#116189}(`I32`_lanetype, `%`_dim{i#116196}(4))), `SHL`_vshiftop_) + prod "i32x4.shl" => `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `SHL`_vshiftop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{ishape#59 : ishape, shape#4603 : shape, Jnn#516 : Jnn, lanetype#29187 : lanetype, dim#29187 : dim, i#116276 : nat, i#116283 : nat, sx#29505 : sx} "i32x4.shr_s" => `VSHIFTOP`_instr{ishape#59}(`%`_ishape{shape#4603, Jnn#516}(`%X%`_shape{lanetype#29187, dim#29187, i#116276}(`I32`_lanetype, `%`_dim{i#116283}(4))), `SHR`_vshiftop_{sx#29505}(`S`_sx)) + 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{ishape#61 : ishape, shape#4645 : shape, Jnn#520 : Jnn, lanetype#29289 : lanetype, dim#29289 : dim, i#116438 : nat, i#116445 : nat, sx#29539 : sx} "i32x4.shr_u" => `VSHIFTOP`_instr{ishape#61}(`%`_ishape{shape#4645, Jnn#520}(`%X%`_shape{lanetype#29289, dim#29289, i#116438}(`I32`_lanetype, `%`_dim{i#116445}(4))), `SHR`_vshiftop_{sx#29539}(`U`_sx)) + 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{ishape#63 : ishape, shape#4687 : shape, Jnn#524 : Jnn, lanetype#29391 : lanetype, dim#29391 : dim, i#116600 : nat, i#116607 : nat} "i64x2.shl" => `VSHIFTOP`_instr{ishape#63}(`%`_ishape{shape#4687, Jnn#524}(`%X%`_shape{lanetype#29391, dim#29391, i#116600}(`I64`_lanetype, `%`_dim{i#116607}(2))), `SHL`_vshiftop_) + prod "i64x2.shl" => `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `SHL`_vshiftop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{ishape#65 : ishape, shape#4714 : shape, Jnn#528 : Jnn, lanetype#29448 : lanetype, dim#29448 : dim, i#116687 : nat, i#116694 : nat, sx#29588 : sx} "i64x2.shr_s" => `VSHIFTOP`_instr{ishape#65}(`%`_ishape{shape#4714, Jnn#528}(`%X%`_shape{lanetype#29448, dim#29448, i#116687}(`I64`_lanetype, `%`_dim{i#116694}(2))), `SHR`_vshiftop_{sx#29588}(`S`_sx)) + 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{ishape#67 : ishape, shape#4756 : shape, Jnn#532 : Jnn, lanetype#29550 : lanetype, dim#29550 : dim, i#116849 : nat, i#116856 : nat, sx#29622 : sx} "i64x2.shr_u" => `VSHIFTOP`_instr{ishape#67}(`%`_ishape{shape#4756, Jnn#532}(`%X%`_shape{lanetype#29550, dim#29550, i#116849}(`I64`_lanetype, `%`_dim{i#116856}(2))), `SHR`_vshiftop_{sx#29622}(`U`_sx)) + 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{ishape#69 : ishape, shape#4798 : shape, Jnn#536 : Jnn, lanetype#29652 : lanetype, dim#29652 : dim, i#117011 : nat, i#117018 : nat} "i8x16.bitmask" => `VBITMASK`_instr{ishape#69}(`%`_ishape{shape#4798, Jnn#536}(`%X%`_shape{lanetype#29652, dim#29652, i#117011}(`I8`_lanetype, `%`_dim{i#117018}(16)))) + prod "i8x16.bitmask" => `VBITMASK`_instr(`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{ishape#71 : ishape, shape#4810 : shape, Jnn#540 : Jnn, lanetype#29664 : lanetype, dim#29664 : dim, i#117023 : nat, i#117030 : nat} "i16x8.bitmask" => `VBITMASK`_instr{ishape#71}(`%`_ishape{shape#4810, Jnn#540}(`%X%`_shape{lanetype#29664, dim#29664, i#117023}(`I16`_lanetype, `%`_dim{i#117030}(8)))) + prod "i16x8.bitmask" => `VBITMASK`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{ishape#73 : ishape, shape#4822 : shape, Jnn#544 : Jnn, lanetype#29676 : lanetype, dim#29676 : dim, i#117035 : nat, i#117042 : nat} "i32x4.bitmask" => `VBITMASK`_instr{ishape#73}(`%`_ishape{shape#4822, Jnn#544}(`%X%`_shape{lanetype#29676, dim#29676, i#117035}(`I32`_lanetype, `%`_dim{i#117042}(4)))) + prod "i32x4.bitmask" => `VBITMASK`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{ishape#75 : ishape, shape#4834 : shape, Jnn#548 : Jnn, lanetype#29688 : lanetype, dim#29688 : dim, i#117047 : nat, i#117054 : nat} "i64x2.bitmask" => `VBITMASK`_instr{ishape#75}(`%`_ishape{shape#4834, Jnn#548}(`%X%`_shape{lanetype#29688, dim#29688, i#117047}(`I64`_lanetype, `%`_dim{i#117054}(2)))) + prod "i64x2.bitmask" => `VBITMASK`_instr(`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2)))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{ishape_1#71 : ishape, ishape_2#71 : ishape, sx#29624 : sx, shape#4836 : shape, Jnn#549 : Jnn, shape#4837 : shape, Jnn#550 : Jnn, shape#4838 : shape, Jnn#551 : Jnn, shape#4849 : shape, Jnn#555 : Jnn, lanetype#29700 : lanetype, dim#29700 : dim, i#117059 : nat, i#117066 : nat, shape#4861 : shape, Jnn#559 : Jnn, lanetype#29712 : lanetype, dim#29712 : dim, i#117071 : nat, i#117078 : nat} "i8x16.narrow_i16x8_s" => `VNARROW`_instr{ishape_1#71, ishape_2#71, sx#29624, shape#4836, Jnn#549, shape#4837, Jnn#550, shape#4838, Jnn#551}(`%`_ishape{shape#4849, Jnn#555}(`%X%`_shape{lanetype#29700, dim#29700, i#117059}(`I8`_lanetype, `%`_dim{i#117066}(16))), `%`_ishape{shape#4861, Jnn#559}(`%X%`_shape{lanetype#29712, dim#29712, i#117071}(`I16`_lanetype, `%`_dim{i#117078}(8))), `S`_sx) + 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{ishape_1#73 : ishape, ishape_2#73 : ishape, sx#29626 : sx, shape#4863 : shape, Jnn#560 : Jnn, shape#4864 : shape, Jnn#561 : Jnn, shape#4865 : shape, Jnn#562 : Jnn, shape#4876 : shape, Jnn#566 : Jnn, lanetype#29724 : lanetype, dim#29724 : dim, i#117083 : nat, i#117090 : nat, shape#4888 : shape, Jnn#570 : Jnn, lanetype#29736 : lanetype, dim#29736 : dim, i#117095 : nat, i#117102 : nat} "i8x16.narrow_i16x8_u" => `VNARROW`_instr{ishape_1#73, ishape_2#73, sx#29626, shape#4863, Jnn#560, shape#4864, Jnn#561, shape#4865, Jnn#562}(`%`_ishape{shape#4876, Jnn#566}(`%X%`_shape{lanetype#29724, dim#29724, i#117083}(`I8`_lanetype, `%`_dim{i#117090}(16))), `%`_ishape{shape#4888, Jnn#570}(`%X%`_shape{lanetype#29736, dim#29736, i#117095}(`I16`_lanetype, `%`_dim{i#117102}(8))), `U`_sx) + 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{ishape_1#75 : ishape, ishape_2#75 : ishape, sx#29628 : sx, shape#4890 : shape, Jnn#571 : Jnn, shape#4891 : shape, Jnn#572 : Jnn, shape#4892 : shape, Jnn#573 : Jnn, shape#4903 : shape, Jnn#577 : Jnn, lanetype#29748 : lanetype, dim#29748 : dim, i#117107 : nat, i#117114 : nat, shape#4915 : shape, Jnn#581 : Jnn, lanetype#29760 : lanetype, dim#29760 : dim, i#117119 : nat, i#117126 : nat} "i16x8.narrow_i32x4_s" => `VNARROW`_instr{ishape_1#75, ishape_2#75, sx#29628, shape#4890, Jnn#571, shape#4891, Jnn#572, shape#4892, Jnn#573}(`%`_ishape{shape#4903, Jnn#577}(`%X%`_shape{lanetype#29748, dim#29748, i#117107}(`I16`_lanetype, `%`_dim{i#117114}(8))), `%`_ishape{shape#4915, Jnn#581}(`%X%`_shape{lanetype#29760, dim#29760, i#117119}(`I32`_lanetype, `%`_dim{i#117126}(4))), `S`_sx) + 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{ishape_1#77 : ishape, ishape_2#77 : ishape, sx#29630 : sx, shape#4917 : shape, Jnn#582 : Jnn, shape#4918 : shape, Jnn#583 : Jnn, shape#4919 : shape, Jnn#584 : Jnn, shape#4930 : shape, Jnn#588 : Jnn, lanetype#29772 : lanetype, dim#29772 : dim, i#117131 : nat, i#117138 : nat, shape#4942 : shape, Jnn#592 : Jnn, lanetype#29784 : lanetype, dim#29784 : dim, i#117143 : nat, i#117150 : nat} "i16x8.narrow_i32x4_u" => `VNARROW`_instr{ishape_1#77, ishape_2#77, sx#29630, shape#4917, Jnn#582, shape#4918, Jnn#583, shape#4919, Jnn#584}(`%`_ishape{shape#4930, Jnn#588}(`%X%`_shape{lanetype#29772, dim#29772, i#117131}(`I16`_lanetype, `%`_dim{i#117138}(8))), `%`_ishape{shape#4942, Jnn#592}(`%X%`_shape{lanetype#29784, dim#29784, i#117143}(`I32`_lanetype, `%`_dim{i#117150}(4))), `U`_sx) + 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{shape_1#59 : shape, shape_2#59 : shape, lanetype#29796 : lanetype, dim#29796 : dim, i#117155 : nat, i#117162 : nat, lanetype#29808 : lanetype, dim#29808 : dim, i#117167 : nat, i#117174 : nat, half#1172 : half, sx#29664 : sx} "i16x8.extend_low_i8x16_s" => `VCVTOP`_instr{shape_1#59, shape_2#59}(`%X%`_shape{lanetype#29796, dim#29796, i#117155}(`I16`_lanetype, `%`_dim{i#117162}(8)), `%X%`_shape{lanetype#29808, dim#29808, i#117167}(`I8`_lanetype, `%`_dim{i#117174}(16)), `EXTEND`_vcvtop__{half#1172, sx#29664}(`LOW`_half, `S`_sx)) + 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{shape_1#61 : shape, shape_2#61 : shape, lanetype#29911 : lanetype, dim#29911 : dim, i#117390 : nat, i#117397 : nat, lanetype#29923 : lanetype, dim#29923 : dim, i#117402 : nat, i#117409 : nat, half#1206 : half, sx#29698 : sx} "i16x8.extend_low_i8x16_u" => `VCVTOP`_instr{shape_1#61, shape_2#61}(`%X%`_shape{lanetype#29911, dim#29911, i#117390}(`I16`_lanetype, `%`_dim{i#117397}(8)), `%X%`_shape{lanetype#29923, dim#29923, i#117402}(`I8`_lanetype, `%`_dim{i#117409}(16)), `EXTEND`_vcvtop__{half#1206, sx#29698}(`LOW`_half, `U`_sx)) + 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{shape_1#63 : shape, shape_2#63 : shape, lanetype#30026 : lanetype, dim#30026 : dim, i#117625 : nat, i#117632 : nat, lanetype#30038 : lanetype, dim#30038 : dim, i#117637 : nat, i#117644 : nat, half#1240 : half, sx#29732 : sx} "i16x8.extend_high_i8x16_s" => `VCVTOP`_instr{shape_1#63, shape_2#63}(`%X%`_shape{lanetype#30026, dim#30026, i#117625}(`I16`_lanetype, `%`_dim{i#117632}(8)), `%X%`_shape{lanetype#30038, dim#30038, i#117637}(`I8`_lanetype, `%`_dim{i#117644}(16)), `EXTEND`_vcvtop__{half#1240, sx#29732}(`HIGH`_half, `S`_sx)) + 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{shape_1#65 : shape, shape_2#65 : shape, lanetype#30141 : lanetype, dim#30141 : dim, i#117860 : nat, i#117867 : nat, lanetype#30153 : lanetype, dim#30153 : dim, i#117872 : nat, i#117879 : nat, half#1274 : half, sx#29766 : sx} "i16x8.extend_high_i8x16_u" => `VCVTOP`_instr{shape_1#65, shape_2#65}(`%X%`_shape{lanetype#30141, dim#30141, i#117860}(`I16`_lanetype, `%`_dim{i#117867}(8)), `%X%`_shape{lanetype#30153, dim#30153, i#117872}(`I8`_lanetype, `%`_dim{i#117879}(16)), `EXTEND`_vcvtop__{half#1274, sx#29766}(`HIGH`_half, `U`_sx)) + 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{shape_1#67 : shape, shape_2#67 : shape, lanetype#30256 : lanetype, dim#30256 : dim, i#118095 : nat, i#118102 : nat, lanetype#30268 : lanetype, dim#30268 : dim, i#118107 : nat, i#118114 : nat, half#1308 : half, sx#29800 : sx} "i32x4.extend_low_i16x8_s" => `VCVTOP`_instr{shape_1#67, shape_2#67}(`%X%`_shape{lanetype#30256, dim#30256, i#118095}(`I32`_lanetype, `%`_dim{i#118102}(4)), `%X%`_shape{lanetype#30268, dim#30268, i#118107}(`I16`_lanetype, `%`_dim{i#118114}(8)), `EXTEND`_vcvtop__{half#1308, sx#29800}(`LOW`_half, `S`_sx)) + 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{shape_1#69 : shape, shape_2#69 : shape, lanetype#30371 : lanetype, dim#30371 : dim, i#118330 : nat, i#118337 : nat, lanetype#30383 : lanetype, dim#30383 : dim, i#118342 : nat, i#118349 : nat, half#1342 : half, sx#29834 : sx} "i32x4.extend_low_i16x8_u" => `VCVTOP`_instr{shape_1#69, shape_2#69}(`%X%`_shape{lanetype#30371, dim#30371, i#118330}(`I32`_lanetype, `%`_dim{i#118337}(4)), `%X%`_shape{lanetype#30383, dim#30383, i#118342}(`I16`_lanetype, `%`_dim{i#118349}(8)), `EXTEND`_vcvtop__{half#1342, sx#29834}(`LOW`_half, `U`_sx)) + 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{shape_1#71 : shape, shape_2#71 : shape, lanetype#30486 : lanetype, dim#30486 : dim, i#118565 : nat, i#118572 : nat, lanetype#30498 : lanetype, dim#30498 : dim, i#118577 : nat, i#118584 : nat, half#1376 : half, sx#29868 : sx} "i32x4.extend_high_i16x8_s" => `VCVTOP`_instr{shape_1#71, shape_2#71}(`%X%`_shape{lanetype#30486, dim#30486, i#118565}(`I32`_lanetype, `%`_dim{i#118572}(4)), `%X%`_shape{lanetype#30498, dim#30498, i#118577}(`I16`_lanetype, `%`_dim{i#118584}(8)), `EXTEND`_vcvtop__{half#1376, sx#29868}(`HIGH`_half, `S`_sx)) + 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{shape_1#73 : shape, shape_2#73 : shape, lanetype#30601 : lanetype, dim#30601 : dim, i#118800 : nat, i#118807 : nat, lanetype#30613 : lanetype, dim#30613 : dim, i#118812 : nat, i#118819 : nat, half#1410 : half, sx#29902 : sx} "i32x4.extend_high_i16x8_u" => `VCVTOP`_instr{shape_1#73, shape_2#73}(`%X%`_shape{lanetype#30601, dim#30601, i#118800}(`I32`_lanetype, `%`_dim{i#118807}(4)), `%X%`_shape{lanetype#30613, dim#30613, i#118812}(`I16`_lanetype, `%`_dim{i#118819}(8)), `EXTEND`_vcvtop__{half#1410, sx#29902}(`HIGH`_half, `U`_sx)) + 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{shape_1#75 : shape, shape_2#75 : shape, lanetype#30716 : lanetype, dim#30716 : dim, i#119035 : nat, i#119042 : nat, lanetype#30728 : lanetype, dim#30728 : dim, i#119047 : nat, i#119054 : nat, sx#29966 : sx, `zero?#647` : zero?} "i32x4.trunc_sat_f32x4_s" => `VCVTOP`_instr{shape_1#75, shape_2#75}(`%X%`_shape{lanetype#30716, dim#30716, i#119035}(`I32`_lanetype, `%`_dim{i#119042}(4)), `%X%`_shape{lanetype#30728, dim#30728, i#119047}(`F32`_lanetype, `%`_dim{i#119054}(4)), `TRUNC_SAT`_vcvtop__{sx#29966, `zero?#647`}(`S`_sx, ?())) + 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{shape_1#77 : shape, shape_2#77 : shape, lanetype#30891 : lanetype, dim#30891 : dim, i#119330 : nat, i#119337 : nat, lanetype#30903 : lanetype, dim#30903 : dim, i#119342 : nat, i#119349 : nat, sx#30030 : sx, `zero?#711` : zero?} "i32x4.trunc_sat_f32x4_u" => `VCVTOP`_instr{shape_1#77, shape_2#77}(`%X%`_shape{lanetype#30891, dim#30891, i#119330}(`I32`_lanetype, `%`_dim{i#119337}(4)), `%X%`_shape{lanetype#30903, dim#30903, i#119342}(`F32`_lanetype, `%`_dim{i#119349}(4)), `TRUNC_SAT`_vcvtop__{sx#30030, `zero?#711`}(`U`_sx, ?())) + 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{shape_1#79 : shape, shape_2#79 : shape, lanetype#31066 : lanetype, dim#31066 : dim, i#119625 : nat, i#119632 : nat, lanetype#31078 : lanetype, dim#31078 : dim, i#119637 : nat, i#119644 : nat, sx#30094 : sx, `zero?#775` : zero?} "i32x4.trunc_sat_f64x2_s_zero" => `VCVTOP`_instr{shape_1#79, shape_2#79}(`%X%`_shape{lanetype#31066, dim#31066, i#119625}(`I32`_lanetype, `%`_dim{i#119632}(4)), `%X%`_shape{lanetype#31078, dim#31078, i#119637}(`F64`_lanetype, `%`_dim{i#119644}(2)), `TRUNC_SAT`_vcvtop__{sx#30094, `zero?#775`}(`S`_sx, ?(`ZERO`_zero))) + 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{shape_1#81 : shape, shape_2#81 : shape, lanetype#31241 : lanetype, dim#31241 : dim, i#119920 : nat, i#119927 : nat, lanetype#31253 : lanetype, dim#31253 : dim, i#119932 : nat, i#119939 : nat, sx#30158 : sx, `zero?#839` : zero?} "i32x4.trunc_sat_f64x2_u_zero" => `VCVTOP`_instr{shape_1#81, shape_2#81}(`%X%`_shape{lanetype#31241, dim#31241, i#119920}(`I32`_lanetype, `%`_dim{i#119927}(4)), `%X%`_shape{lanetype#31253, dim#31253, i#119932}(`F64`_lanetype, `%`_dim{i#119939}(2)), `TRUNC_SAT`_vcvtop__{sx#30158, `zero?#839`}(`U`_sx, ?(`ZERO`_zero))) + 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{shape_1#83 : shape, shape_2#83 : shape, lanetype#31416 : lanetype, dim#31416 : dim, i#120215 : nat, i#120222 : nat, lanetype#31428 : lanetype, dim#31428 : dim, i#120227 : nat, i#120234 : nat, sx#30222 : sx, `zero?#903` : zero?} "i32x4.relaxed_trunc_f32x4_s" => `VCVTOP`_instr{shape_1#83, shape_2#83}(`%X%`_shape{lanetype#31416, dim#31416, i#120215}(`I32`_lanetype, `%`_dim{i#120222}(4)), `%X%`_shape{lanetype#31428, dim#31428, i#120227}(`F32`_lanetype, `%`_dim{i#120234}(4)), `RELAXED_TRUNC`_vcvtop__{sx#30222, `zero?#903`}(`S`_sx, ?())) + 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{shape_1#85 : shape, shape_2#85 : shape, lanetype#31591 : lanetype, dim#31591 : dim, i#120510 : nat, i#120517 : nat, lanetype#31603 : lanetype, dim#31603 : dim, i#120522 : nat, i#120529 : nat, sx#30286 : sx, `zero?#967` : zero?} "i32x4.relaxed_trunc_f32x4_u" => `VCVTOP`_instr{shape_1#85, shape_2#85}(`%X%`_shape{lanetype#31591, dim#31591, i#120510}(`I32`_lanetype, `%`_dim{i#120517}(4)), `%X%`_shape{lanetype#31603, dim#31603, i#120522}(`F32`_lanetype, `%`_dim{i#120529}(4)), `RELAXED_TRUNC`_vcvtop__{sx#30286, `zero?#967`}(`U`_sx, ?())) + 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{shape_1#87 : shape, shape_2#87 : shape, lanetype#31766 : lanetype, dim#31766 : dim, i#120805 : nat, i#120812 : nat, lanetype#31778 : lanetype, dim#31778 : dim, i#120817 : nat, i#120824 : nat, sx#30350 : sx, `zero?#1031` : zero?} "i32x4.relaxed_trunc_f64x2_s_zero" => `VCVTOP`_instr{shape_1#87, shape_2#87}(`%X%`_shape{lanetype#31766, dim#31766, i#120805}(`I32`_lanetype, `%`_dim{i#120812}(4)), `%X%`_shape{lanetype#31778, dim#31778, i#120817}(`F64`_lanetype, `%`_dim{i#120824}(2)), `RELAXED_TRUNC`_vcvtop__{sx#30350, `zero?#1031`}(`S`_sx, ?(`ZERO`_zero))) + 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{shape_1#89 : shape, shape_2#89 : shape, lanetype#31941 : lanetype, dim#31941 : dim, i#121100 : nat, i#121107 : nat, lanetype#31953 : lanetype, dim#31953 : dim, i#121112 : nat, i#121119 : nat, sx#30414 : sx, `zero?#1095` : zero?} "i32x4.relaxed_trunc_f64x2_u_zero" => `VCVTOP`_instr{shape_1#89, shape_2#89}(`%X%`_shape{lanetype#31941, dim#31941, i#121100}(`I32`_lanetype, `%`_dim{i#121107}(4)), `%X%`_shape{lanetype#31953, dim#31953, i#121112}(`F64`_lanetype, `%`_dim{i#121119}(2)), `RELAXED_TRUNC`_vcvtop__{sx#30414, `zero?#1095`}(`U`_sx, ?(`ZERO`_zero))) + 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{shape_1#91 : shape, shape_2#91 : shape, lanetype#32116 : lanetype, dim#32116 : dim, i#121395 : nat, i#121402 : nat, lanetype#32128 : lanetype, dim#32128 : dim, i#121407 : nat, i#121414 : nat, half#1444 : half, sx#30448 : sx} "i64x2.extend_low_i32x4_s" => `VCVTOP`_instr{shape_1#91, shape_2#91}(`%X%`_shape{lanetype#32116, dim#32116, i#121395}(`I64`_lanetype, `%`_dim{i#121402}(2)), `%X%`_shape{lanetype#32128, dim#32128, i#121407}(`I32`_lanetype, `%`_dim{i#121414}(4)), `EXTEND`_vcvtop__{half#1444, sx#30448}(`LOW`_half, `S`_sx)) + 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{shape_1#93 : shape, shape_2#93 : shape, lanetype#32231 : lanetype, dim#32231 : dim, i#121630 : nat, i#121637 : nat, lanetype#32243 : lanetype, dim#32243 : dim, i#121642 : nat, i#121649 : nat, half#1478 : half, sx#30482 : sx} "i64x2.extend_low_i32x4_u" => `VCVTOP`_instr{shape_1#93, shape_2#93}(`%X%`_shape{lanetype#32231, dim#32231, i#121630}(`I64`_lanetype, `%`_dim{i#121637}(2)), `%X%`_shape{lanetype#32243, dim#32243, i#121642}(`I32`_lanetype, `%`_dim{i#121649}(4)), `EXTEND`_vcvtop__{half#1478, sx#30482}(`LOW`_half, `U`_sx)) + 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{shape_1#95 : shape, shape_2#95 : shape, lanetype#32346 : lanetype, dim#32346 : dim, i#121865 : nat, i#121872 : nat, lanetype#32358 : lanetype, dim#32358 : dim, i#121877 : nat, i#121884 : nat, half#1512 : half, sx#30516 : sx} "i64x2.extend_high_i32x4_s" => `VCVTOP`_instr{shape_1#95, shape_2#95}(`%X%`_shape{lanetype#32346, dim#32346, i#121865}(`I64`_lanetype, `%`_dim{i#121872}(2)), `%X%`_shape{lanetype#32358, dim#32358, i#121877}(`I32`_lanetype, `%`_dim{i#121884}(4)), `EXTEND`_vcvtop__{half#1512, sx#30516}(`HIGH`_half, `S`_sx)) + 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{shape_1#97 : shape, shape_2#97 : shape, lanetype#32461 : lanetype, dim#32461 : dim, i#122100 : nat, i#122107 : nat, lanetype#32473 : lanetype, dim#32473 : dim, i#122112 : nat, i#122119 : nat, half#1546 : half, sx#30550 : sx} "i64x2.extend_high_i32x4_u" => `VCVTOP`_instr{shape_1#97, shape_2#97}(`%X%`_shape{lanetype#32461, dim#32461, i#122100}(`I64`_lanetype, `%`_dim{i#122107}(2)), `%X%`_shape{lanetype#32473, dim#32473, i#122112}(`I32`_lanetype, `%`_dim{i#122119}(4)), `EXTEND`_vcvtop__{half#1546, sx#30550}(`HIGH`_half, `U`_sx)) + 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{shape_1#99 : shape, shape_2#99 : shape, lanetype#32576 : lanetype, dim#32576 : dim, i#122335 : nat, i#122342 : nat, lanetype#32588 : lanetype, dim#32588 : dim, i#122347 : nat, i#122354 : nat, zero#2143 : zero} "f32x4.demote_f64x2_zero" => `VCVTOP`_instr{shape_1#99, shape_2#99}(`%X%`_shape{lanetype#32576, dim#32576, i#122335}(`F32`_lanetype, `%`_dim{i#122342}(4)), `%X%`_shape{lanetype#32588, dim#32588, i#122347}(`F64`_lanetype, `%`_dim{i#122354}(2)), `DEMOTE`_vcvtop__{zero#2143}(`ZERO`_zero)) + 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{shape_1#101 : shape, shape_2#101 : shape, lanetype#32841 : lanetype, dim#32841 : dim, i#122780 : nat, i#122787 : nat, lanetype#32853 : lanetype, dim#32853 : dim, i#122792 : nat, i#122799 : nat, `half?#175` : half?, sx#30584 : sx} "f32x4.convert_i32x4_s" => `VCVTOP`_instr{shape_1#101, shape_2#101}(`%X%`_shape{lanetype#32841, dim#32841, i#122780}(`F32`_lanetype, `%`_dim{i#122787}(4)), `%X%`_shape{lanetype#32853, dim#32853, i#122792}(`I32`_lanetype, `%`_dim{i#122799}(4)), `CONVERT`_vcvtop__{`half?#175`, sx#30584}(?(), `S`_sx)) + 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{shape_1#103 : shape, shape_2#103 : shape, lanetype#33046 : lanetype, dim#33046 : dim, i#123165 : nat, i#123172 : nat, lanetype#33058 : lanetype, dim#33058 : dim, i#123177 : nat, i#123184 : nat, `half?#209` : half?, sx#30618 : sx} "f32x4.convert_i32x4_u" => `VCVTOP`_instr{shape_1#103, shape_2#103}(`%X%`_shape{lanetype#33046, dim#33046, i#123165}(`F32`_lanetype, `%`_dim{i#123172}(4)), `%X%`_shape{lanetype#33058, dim#33058, i#123177}(`I32`_lanetype, `%`_dim{i#123184}(4)), `CONVERT`_vcvtop__{`half?#209`, sx#30618}(?(), `U`_sx)) + 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{shape_1#105 : shape, shape_2#105 : shape, lanetype#33251 : lanetype, dim#33251 : dim, i#123550 : nat, i#123557 : nat, lanetype#33263 : lanetype, dim#33263 : dim, i#123562 : nat, i#123569 : nat} "f64x2.promote_low_f32x4" => `VCVTOP`_instr{shape_1#105, shape_2#105}(`%X%`_shape{lanetype#33251, dim#33251, i#123550}(`F64`_lanetype, `%`_dim{i#123557}(2)), `%X%`_shape{lanetype#33263, dim#33263, i#123562}(`F32`_lanetype, `%`_dim{i#123569}(4)), `PROMOTELOW`_vcvtop__) + 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{shape_1#107 : shape, shape_2#107 : shape, lanetype#33516 : lanetype, dim#33516 : dim, i#123995 : nat, i#124002 : nat, lanetype#33528 : lanetype, dim#33528 : dim, i#124007 : nat, i#124014 : nat, `half?#243` : half?, sx#30652 : sx} "f64x2.convert_low_i32x4_s" => `VCVTOP`_instr{shape_1#107, shape_2#107}(`%X%`_shape{lanetype#33516, dim#33516, i#123995}(`F64`_lanetype, `%`_dim{i#124002}(2)), `%X%`_shape{lanetype#33528, dim#33528, i#124007}(`I32`_lanetype, `%`_dim{i#124014}(4)), `CONVERT`_vcvtop__{`half?#243`, sx#30652}(?(`LOW`_half), `S`_sx)) + 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{shape_1#109 : shape, shape_2#109 : shape, lanetype#33721 : lanetype, dim#33721 : dim, i#124380 : nat, i#124387 : nat, lanetype#33733 : lanetype, dim#33733 : dim, i#124392 : nat, i#124399 : nat, `half?#277` : half?, sx#30686 : sx} "f64x2.convert_low_i32x4_u" => `VCVTOP`_instr{shape_1#109, shape_2#109}(`%X%`_shape{lanetype#33721, dim#33721, i#124380}(`F64`_lanetype, `%`_dim{i#124387}(2)), `%X%`_shape{lanetype#33733, dim#33733, i#124392}(`I32`_lanetype, `%`_dim{i#124399}(4)), `CONVERT`_vcvtop__{`half?#277`, sx#30686}(?(`LOW`_half), `U`_sx)) + 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{ishape_1#79 : ishape, ishape_2#79 : ishape, shape#4954 : shape, Jnn#596 : Jnn, lanetype#33926 : lanetype, dim#33926 : dim, i#124765 : nat, i#124772 : nat, shape#4966 : shape, Jnn#600 : Jnn, lanetype#33938 : lanetype, dim#33938 : dim, i#124777 : nat, i#124784 : nat, sx#30720 : sx} "i16x8.extadd_pairwise_i8x16_s" => `VEXTUNOP`_instr{ishape_1#79, ishape_2#79}(`%`_ishape{shape#4954, Jnn#596}(`%X%`_shape{lanetype#33926, dim#33926, i#124765}(`I16`_lanetype, `%`_dim{i#124772}(8))), `%`_ishape{shape#4966, Jnn#600}(`%X%`_shape{lanetype#33938, dim#33938, i#124777}(`I8`_lanetype, `%`_dim{i#124784}(16))), `EXTADD_PAIRWISE`_vextunop__{sx#30720}(`S`_sx)) + 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{ishape_1#81 : ishape, ishape_2#81 : ishape, shape#5069 : shape, Jnn#604 : Jnn, lanetype#34161 : lanetype, dim#34161 : dim, i#125120 : nat, i#125127 : nat, shape#5081 : shape, Jnn#608 : Jnn, lanetype#34173 : lanetype, dim#34173 : dim, i#125132 : nat, i#125139 : nat, sx#30754 : sx} "i16x8.extadd_pairwise_i8x16_u" => `VEXTUNOP`_instr{ishape_1#81, ishape_2#81}(`%`_ishape{shape#5069, Jnn#604}(`%X%`_shape{lanetype#34161, dim#34161, i#125120}(`I16`_lanetype, `%`_dim{i#125127}(8))), `%`_ishape{shape#5081, Jnn#608}(`%X%`_shape{lanetype#34173, dim#34173, i#125132}(`I8`_lanetype, `%`_dim{i#125139}(16))), `EXTADD_PAIRWISE`_vextunop__{sx#30754}(`U`_sx)) + 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{ishape_1#83 : ishape, ishape_2#83 : ishape, shape#5184 : shape, Jnn#612 : Jnn, lanetype#34396 : lanetype, dim#34396 : dim, i#125475 : nat, i#125482 : nat, shape#5196 : shape, Jnn#616 : Jnn, lanetype#34408 : lanetype, dim#34408 : dim, i#125487 : nat, i#125494 : nat, sx#30788 : sx} "i32x4.extadd_pairwise_i16x8_s" => `VEXTUNOP`_instr{ishape_1#83, ishape_2#83}(`%`_ishape{shape#5184, Jnn#612}(`%X%`_shape{lanetype#34396, dim#34396, i#125475}(`I32`_lanetype, `%`_dim{i#125482}(4))), `%`_ishape{shape#5196, Jnn#616}(`%X%`_shape{lanetype#34408, dim#34408, i#125487}(`I16`_lanetype, `%`_dim{i#125494}(8))), `EXTADD_PAIRWISE`_vextunop__{sx#30788}(`S`_sx)) + 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{ishape_1#85 : ishape, ishape_2#85 : ishape, shape#5299 : shape, Jnn#620 : Jnn, lanetype#34631 : lanetype, dim#34631 : dim, i#125830 : nat, i#125837 : nat, shape#5311 : shape, Jnn#624 : Jnn, lanetype#34643 : lanetype, dim#34643 : dim, i#125842 : nat, i#125849 : nat, sx#30822 : sx} "i32x4.extadd_pairwise_i16x8_u" => `VEXTUNOP`_instr{ishape_1#85, ishape_2#85}(`%`_ishape{shape#5299, Jnn#620}(`%X%`_shape{lanetype#34631, dim#34631, i#125830}(`I32`_lanetype, `%`_dim{i#125837}(4))), `%`_ishape{shape#5311, Jnn#624}(`%X%`_shape{lanetype#34643, dim#34643, i#125842}(`I16`_lanetype, `%`_dim{i#125849}(8))), `EXTADD_PAIRWISE`_vextunop__{sx#30822}(`U`_sx)) + 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{ishape_1#87 : ishape, ishape_2#87 : ishape, shape#5414 : shape, Jnn#628 : Jnn, lanetype#34866 : lanetype, dim#34866 : dim, i#126185 : nat, i#126192 : nat, shape#5426 : shape, Jnn#632 : Jnn, lanetype#34878 : lanetype, dim#34878 : dim, i#126197 : nat, i#126204 : nat, half#1820 : half, sx#30856 : sx} "i16x8.extmul_low_i8x16_s" => `VEXTBINOP`_instr{ishape_1#87, ishape_2#87}(`%`_ishape{shape#5414, Jnn#628}(`%X%`_shape{lanetype#34866, dim#34866, i#126185}(`I16`_lanetype, `%`_dim{i#126192}(8))), `%`_ishape{shape#5426, Jnn#632}(`%X%`_shape{lanetype#34878, dim#34878, i#126197}(`I8`_lanetype, `%`_dim{i#126204}(16))), `EXTMUL`_vextbinop__{half#1820, sx#30856}(`LOW`_half, `S`_sx)) + 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{ishape_1#89 : ishape, ishape_2#89 : ishape, shape#5529 : shape, Jnn#636 : Jnn, lanetype#35101 : lanetype, dim#35101 : dim, i#126540 : nat, i#126547 : nat, shape#5541 : shape, Jnn#640 : Jnn, lanetype#35113 : lanetype, dim#35113 : dim, i#126552 : nat, i#126559 : nat, half#1854 : half, sx#30890 : sx} "i16x8.extmul_low_i8x16_u" => `VEXTBINOP`_instr{ishape_1#89, ishape_2#89}(`%`_ishape{shape#5529, Jnn#636}(`%X%`_shape{lanetype#35101, dim#35101, i#126540}(`I16`_lanetype, `%`_dim{i#126547}(8))), `%`_ishape{shape#5541, Jnn#640}(`%X%`_shape{lanetype#35113, dim#35113, i#126552}(`I8`_lanetype, `%`_dim{i#126559}(16))), `EXTMUL`_vextbinop__{half#1854, sx#30890}(`LOW`_half, `U`_sx)) + 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{ishape_1#91 : ishape, ishape_2#91 : ishape, shape#5644 : shape, Jnn#644 : Jnn, lanetype#35336 : lanetype, dim#35336 : dim, i#126895 : nat, i#126902 : nat, shape#5656 : shape, Jnn#648 : Jnn, lanetype#35348 : lanetype, dim#35348 : dim, i#126907 : nat, i#126914 : nat, half#1888 : half, sx#30924 : sx} "i16x8.extmul_high_i8x16_s" => `VEXTBINOP`_instr{ishape_1#91, ishape_2#91}(`%`_ishape{shape#5644, Jnn#644}(`%X%`_shape{lanetype#35336, dim#35336, i#126895}(`I16`_lanetype, `%`_dim{i#126902}(8))), `%`_ishape{shape#5656, Jnn#648}(`%X%`_shape{lanetype#35348, dim#35348, i#126907}(`I8`_lanetype, `%`_dim{i#126914}(16))), `EXTMUL`_vextbinop__{half#1888, sx#30924}(`HIGH`_half, `S`_sx)) + 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{ishape_1#93 : ishape, ishape_2#93 : ishape, shape#5759 : shape, Jnn#652 : Jnn, lanetype#35571 : lanetype, dim#35571 : dim, i#127250 : nat, i#127257 : nat, shape#5771 : shape, Jnn#656 : Jnn, lanetype#35583 : lanetype, dim#35583 : dim, i#127262 : nat, i#127269 : nat, half#1922 : half, sx#30958 : sx} "i16x8.extmul_high_i8x16_u" => `VEXTBINOP`_instr{ishape_1#93, ishape_2#93}(`%`_ishape{shape#5759, Jnn#652}(`%X%`_shape{lanetype#35571, dim#35571, i#127250}(`I16`_lanetype, `%`_dim{i#127257}(8))), `%`_ishape{shape#5771, Jnn#656}(`%X%`_shape{lanetype#35583, dim#35583, i#127262}(`I8`_lanetype, `%`_dim{i#127269}(16))), `EXTMUL`_vextbinop__{half#1922, sx#30958}(`HIGH`_half, `U`_sx)) + 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{ishape_1#95 : ishape, ishape_2#95 : ishape, shape#5874 : shape, Jnn#660 : Jnn, lanetype#35806 : lanetype, dim#35806 : dim, i#127605 : nat, i#127612 : nat, shape#5886 : shape, Jnn#664 : Jnn, lanetype#35818 : lanetype, dim#35818 : dim, i#127617 : nat, i#127624 : nat, half#1956 : half, sx#30992 : sx} "i32x4.extmul_low_i16x8_s" => `VEXTBINOP`_instr{ishape_1#95, ishape_2#95}(`%`_ishape{shape#5874, Jnn#660}(`%X%`_shape{lanetype#35806, dim#35806, i#127605}(`I32`_lanetype, `%`_dim{i#127612}(4))), `%`_ishape{shape#5886, Jnn#664}(`%X%`_shape{lanetype#35818, dim#35818, i#127617}(`I16`_lanetype, `%`_dim{i#127624}(8))), `EXTMUL`_vextbinop__{half#1956, sx#30992}(`LOW`_half, `S`_sx)) + 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{ishape_1#97 : ishape, ishape_2#97 : ishape, shape#5989 : shape, Jnn#668 : Jnn, lanetype#36041 : lanetype, dim#36041 : dim, i#127960 : nat, i#127967 : nat, shape#6001 : shape, Jnn#672 : Jnn, lanetype#36053 : lanetype, dim#36053 : dim, i#127972 : nat, i#127979 : nat, half#1990 : half, sx#31026 : sx} "i32x4.extmul_low_i16x8_u" => `VEXTBINOP`_instr{ishape_1#97, ishape_2#97}(`%`_ishape{shape#5989, Jnn#668}(`%X%`_shape{lanetype#36041, dim#36041, i#127960}(`I32`_lanetype, `%`_dim{i#127967}(4))), `%`_ishape{shape#6001, Jnn#672}(`%X%`_shape{lanetype#36053, dim#36053, i#127972}(`I16`_lanetype, `%`_dim{i#127979}(8))), `EXTMUL`_vextbinop__{half#1990, sx#31026}(`LOW`_half, `U`_sx)) + 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{ishape_1#99 : ishape, ishape_2#99 : ishape, shape#6104 : shape, Jnn#676 : Jnn, lanetype#36276 : lanetype, dim#36276 : dim, i#128315 : nat, i#128322 : nat, shape#6116 : shape, Jnn#680 : Jnn, lanetype#36288 : lanetype, dim#36288 : dim, i#128327 : nat, i#128334 : nat, half#2024 : half, sx#31060 : sx} "i32x4.extmul_high_i16x8_s" => `VEXTBINOP`_instr{ishape_1#99, ishape_2#99}(`%`_ishape{shape#6104, Jnn#676}(`%X%`_shape{lanetype#36276, dim#36276, i#128315}(`I32`_lanetype, `%`_dim{i#128322}(4))), `%`_ishape{shape#6116, Jnn#680}(`%X%`_shape{lanetype#36288, dim#36288, i#128327}(`I16`_lanetype, `%`_dim{i#128334}(8))), `EXTMUL`_vextbinop__{half#2024, sx#31060}(`HIGH`_half, `S`_sx)) + 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{ishape_1#101 : ishape, ishape_2#101 : ishape, shape#6219 : shape, Jnn#684 : Jnn, lanetype#36511 : lanetype, dim#36511 : dim, i#128670 : nat, i#128677 : nat, shape#6231 : shape, Jnn#688 : Jnn, lanetype#36523 : lanetype, dim#36523 : dim, i#128682 : nat, i#128689 : nat, half#2058 : half, sx#31094 : sx} "i32x4.extmul_high_i16x8_u" => `VEXTBINOP`_instr{ishape_1#101, ishape_2#101}(`%`_ishape{shape#6219, Jnn#684}(`%X%`_shape{lanetype#36511, dim#36511, i#128670}(`I32`_lanetype, `%`_dim{i#128677}(4))), `%`_ishape{shape#6231, Jnn#688}(`%X%`_shape{lanetype#36523, dim#36523, i#128682}(`I16`_lanetype, `%`_dim{i#128689}(8))), `EXTMUL`_vextbinop__{half#2058, sx#31094}(`HIGH`_half, `U`_sx)) + 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{ishape_1#103 : ishape, ishape_2#103 : ishape, shape#6334 : shape, Jnn#692 : Jnn, lanetype#36746 : lanetype, dim#36746 : dim, i#129025 : nat, i#129032 : nat, shape#6346 : shape, Jnn#696 : Jnn, lanetype#36758 : lanetype, dim#36758 : dim, i#129037 : nat, i#129044 : nat} "i32x4.dot_i16x8_s" => `VEXTBINOP`_instr{ishape_1#103, ishape_2#103}(`%`_ishape{shape#6334, Jnn#692}(`%X%`_shape{lanetype#36746, dim#36746, i#129025}(`I32`_lanetype, `%`_dim{i#129032}(4))), `%`_ishape{shape#6346, Jnn#696}(`%X%`_shape{lanetype#36758, dim#36758, i#129037}(`I16`_lanetype, `%`_dim{i#129044}(8))), `DOTS`_vextbinop__) + 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{ishape_1#105 : ishape, ishape_2#105 : ishape, shape#6449 : shape, Jnn#700 : Jnn, lanetype#36981 : lanetype, dim#36981 : dim, i#129380 : nat, i#129387 : nat, shape#6461 : shape, Jnn#704 : Jnn, lanetype#36993 : lanetype, dim#36993 : dim, i#129392 : nat, i#129399 : nat, half#2122 : half, sx#31158 : sx} "i64x2.extmul_low_i32x4_s" => `VEXTBINOP`_instr{ishape_1#105, ishape_2#105}(`%`_ishape{shape#6449, Jnn#700}(`%X%`_shape{lanetype#36981, dim#36981, i#129380}(`I64`_lanetype, `%`_dim{i#129387}(2))), `%`_ishape{shape#6461, Jnn#704}(`%X%`_shape{lanetype#36993, dim#36993, i#129392}(`I32`_lanetype, `%`_dim{i#129399}(4))), `EXTMUL`_vextbinop__{half#2122, sx#31158}(`LOW`_half, `S`_sx)) + 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{ishape_1#107 : ishape, ishape_2#107 : ishape, shape#6564 : shape, Jnn#708 : Jnn, lanetype#37216 : lanetype, dim#37216 : dim, i#129735 : nat, i#129742 : nat, shape#6576 : shape, Jnn#712 : Jnn, lanetype#37228 : lanetype, dim#37228 : dim, i#129747 : nat, i#129754 : nat, half#2156 : half, sx#31192 : sx} "i64x2.extmul_low_i32x4_u" => `VEXTBINOP`_instr{ishape_1#107, ishape_2#107}(`%`_ishape{shape#6564, Jnn#708}(`%X%`_shape{lanetype#37216, dim#37216, i#129735}(`I64`_lanetype, `%`_dim{i#129742}(2))), `%`_ishape{shape#6576, Jnn#712}(`%X%`_shape{lanetype#37228, dim#37228, i#129747}(`I32`_lanetype, `%`_dim{i#129754}(4))), `EXTMUL`_vextbinop__{half#2156, sx#31192}(`LOW`_half, `U`_sx)) + 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{ishape_1#109 : ishape, ishape_2#109 : ishape, shape#6679 : shape, Jnn#716 : Jnn, lanetype#37451 : lanetype, dim#37451 : dim, i#130090 : nat, i#130097 : nat, shape#6691 : shape, Jnn#720 : Jnn, lanetype#37463 : lanetype, dim#37463 : dim, i#130102 : nat, i#130109 : nat, half#2190 : half, sx#31226 : sx} "i64x2.extmul_high_i32x4_s" => `VEXTBINOP`_instr{ishape_1#109, ishape_2#109}(`%`_ishape{shape#6679, Jnn#716}(`%X%`_shape{lanetype#37451, dim#37451, i#130090}(`I64`_lanetype, `%`_dim{i#130097}(2))), `%`_ishape{shape#6691, Jnn#720}(`%X%`_shape{lanetype#37463, dim#37463, i#130102}(`I32`_lanetype, `%`_dim{i#130109}(4))), `EXTMUL`_vextbinop__{half#2190, sx#31226}(`HIGH`_half, `S`_sx)) + 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{ishape_1#111 : ishape, ishape_2#111 : ishape, shape#6794 : shape, Jnn#724 : Jnn, lanetype#37686 : lanetype, dim#37686 : dim, i#130445 : nat, i#130452 : nat, shape#6806 : shape, Jnn#728 : Jnn, lanetype#37698 : lanetype, dim#37698 : dim, i#130457 : nat, i#130464 : nat, half#2224 : half, sx#31260 : sx} "i64x2.extmul_high_i32x4_u" => `VEXTBINOP`_instr{ishape_1#111, ishape_2#111}(`%`_ishape{shape#6794, Jnn#724}(`%X%`_shape{lanetype#37686, dim#37686, i#130445}(`I64`_lanetype, `%`_dim{i#130452}(2))), `%`_ishape{shape#6806, Jnn#728}(`%X%`_shape{lanetype#37698, dim#37698, i#130457}(`I32`_lanetype, `%`_dim{i#130464}(4))), `EXTMUL`_vextbinop__{half#2224, sx#31260}(`HIGH`_half, `U`_sx)) + 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 { @@ -122314,16 +97565,16 @@ grammar Tinstrs_(I : I) : instr* ;; ../../../../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{blocktype#41 : blocktype, `instr*#2360` : instr*, bt : blocktype, `in*` : instr*, `char*#1237` : char*, `id?` : char?, I' : I, `char*#1243` : char*, `id'?` : char?} {{"block"} {(?(`%`_name{`char*#1237`}(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name{`char*#1243`}(lift(id'?{id' <- `id'?`}))):Tid?{}}} => `BLOCK`_instr{blocktype#41, `instr*#2360`}(bt, in*{in <- `in*`}) + prod{bt : blocktype, `in*` : instr*, `id?` : char?, I' : I, `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{blocktype#43 : blocktype, `instr*#2362` : instr*, bt : blocktype, `in*` : instr*, `char*#1249` : char*, `id?` : char?, I' : I, `char*#1255` : char*, `id'?` : char?} {{"loop"} {(?(`%`_name{`char*#1249`}(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name{`char*#1255`}(lift(id'?{id' <- `id'?`}))):Tid?{}}} => `LOOP`_instr{blocktype#43, `instr*#2362`}(bt, in*{in <- `in*`}) + prod{bt : blocktype, `in*` : instr*, `id?` : char?, I' : I, `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{blocktype#45 : blocktype, `instr*#2364` : instr*, bt : blocktype, `in_1*` : instr*, `in_2*` : instr*, `char*#1261` : char*, `id?` : char?, I' : I, `char*#1267` : char*, `id_1?` : char?, `char*#1273` : char*, `id_2?` : char?} {{"if"} {(?(`%`_name{`char*#1261`}(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in_1*{in_1 <- `in_1*`}:Tinstrs_(I')} {"else"} {?(`%`_name{`char*#1267`}(lift(id_1?{id_1 <- `id_1?`}))):Tid?{}} {in_2*{in_2 <- `in_2*`}:Tinstrs_(I')} {"end"} {?(`%`_name{`char*#1273`}(lift(id_2?{id_2 <- `id_2?`}))):Tid?{}}} => `IF%%ELSE%`_instr{blocktype#45, `instr*#2364`}(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) + prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*, `id?` : char?, I' : I, `id_1?` : char?, `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{blocktype#47 : blocktype, `instr*#2367` : instr*, bt : blocktype, `X*#13607` : catch*, `c*` : catch*, `in*` : instr*, `char*#1279` : char*, `id?` : char?, I' : I, `char*#1285` : char*, `id'?` : char?} {{"try_table"} {(?(`%`_name{`char*#1279`}(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {c*{c <- `c*`}:Tcatch_(I)*{}} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name{`char*#1285`}(lift(id'?{id' <- `id'?`}))):Tid?{}}} => `TRY_TABLE`_instr{blocktype#47, `instr*#2367`}(bt, `%`_list{`X*#13607`}(c*{c <- `c*`}), in*{in <- `in*`}) + prod{bt : blocktype, `c*` : catch*, `in*` : instr*, `id?` : char?, I' : I, `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?`})) } @@ -122332,384 +97583,384 @@ 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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Ttype_(I : I) : (type, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{rectype#1855 : rectype, qt : rectype, I' : I, I'' : I, `X*#13622` : subtype*, n : n, `st*` : subtype*, `name?*#609` : name?*, `name?*#610` : name?*, `name?*#611` : name?*, `name?*#612` : name?*, `name?*#613` : name?*, `name?*#614` : name?*, `name?*#615` : name?*, `name?*#616` : name?*, `name?*#617` : name?*, `name?*#618` : name?*, `name?**#32` : name?**, `deftype?*#23` : deftype?*, i : nat, `n#1569*` : n*, `rectype#1885*` : rectype*} (qt, I'):Trectype_(I) => (`TYPE`_type{rectype#1855}(qt), I' +++ I'') - -- if (qt = `REC`_rectype(`%`_list{`X*#13622`}(st^n{st <- `st*`}))) - -- if (I'' = {`TYPES`{`name?*#609`} [], `TAGS`{`name?*#610`} [], `GLOBALS`{`name?*#611`} [], `MEMS`{`name?*#612`} [], `TABLES`{`name?*#613`} [], `FUNCS`{`name?*#614`} [], `DATAS`{`name?*#615`} [], `ELEMS`{`name?*#616`} [], `LOCALS`{`name?*#617`} [], `LABELS`{`name?*#618`} [], `FIELDS`{`name?**#32`} [], `TYPEDEFS`{`deftype?*#23`} ?(`_DEF`_deftype{rectype#1885, n#1569}(qt, i))^(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{tagtype#448}(jt), {`TYPES`{`name?*#619`} [], `TAGS`{`name?*#620`} [?(`%`_name{`char*#1357`}(lift(id?{id <- `id?`})))], `GLOBALS`{`name?*#621`} [], `MEMS`{`name?*#622`} [], `TABLES`{`name?*#623`} [], `FUNCS`{`name?*#624`} [], `DATAS`{`name?*#625`} [], `ELEMS`{`name?*#626`} [], `LOCALS`{`name?*#627`} [], `LABELS`{`name?*#628`} [], `FIELDS`{`name?**#33`} [], `TYPEDEFS`{`deftype?*#24`} []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{jt : tagtype, `id?` : char?} {{"("} {"tag"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {jt:Ttagtype_(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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tglobal_(I : I) : (global, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{globaltype#2409 : globaltype, expr#5265 : expr, gt : globaltype, e : expr, `name?*#629` : name?*, `name?*#630` : name?*, `name?*#631` : name?*, `char*#1369` : char*, `id?` : char?, `name?*#632` : name?*, `name?*#633` : name?*, `name?*#634` : name?*, `name?*#635` : name?*, `name?*#636` : name?*, `name?*#637` : name?*, `name?*#638` : name?*, `name?**#34` : name?**, `deftype?*#25` : deftype?*, `char*#1363` : char*} {{"("} {"global"} {?(`%`_name{`char*#1363`}(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {e:Texpr_(I)} {")"}} => (`GLOBAL`_global{globaltype#2409, expr#5265}(gt, e), {`TYPES`{`name?*#629`} [], `TAGS`{`name?*#630`} [], `GLOBALS`{`name?*#631`} [?(`%`_name{`char*#1369`}(lift(id?{id <- `id?`})))], `MEMS`{`name?*#632`} [], `TABLES`{`name?*#633`} [], `FUNCS`{`name?*#634`} [], `DATAS`{`name?*#635`} [], `ELEMS`{`name?*#636`} [], `LOCALS`{`name?*#637`} [], `LABELS`{`name?*#638`} [], `FIELDS`{`name?**#34`} [], `TYPEDEFS`{`deftype?*#25`} []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{gt : globaltype, e : expr, `id?` : char?} {{"("} {"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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tmem_(I : I) : (mem, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{memtype#870 : memtype, mt : memtype, `name?*#639` : name?*, `name?*#640` : name?*, `name?*#641` : name?*, `name?*#642` : name?*, `char*#1381` : char*, `id?` : char?, `name?*#643` : name?*, `name?*#644` : name?*, `name?*#645` : name?*, `name?*#646` : name?*, `name?*#647` : name?*, `name?*#648` : name?*, `name?**#35` : name?**, `deftype?*#26` : deftype?*, `char*#1375` : char*} {{"("} {"memory"} {?(`%`_name{`char*#1375`}(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (`MEMORY`_mem{memtype#870}(mt), {`TYPES`{`name?*#639`} [], `TAGS`{`name?*#640`} [], `GLOBALS`{`name?*#641`} [], `MEMS`{`name?*#642`} [?(`%`_name{`char*#1381`}(lift(id?{id <- `id?`})))], `TABLES`{`name?*#643`} [], `FUNCS`{`name?*#644`} [], `DATAS`{`name?*#645`} [], `ELEMS`{`name?*#646`} [], `LOCALS`{`name?*#647`} [], `LABELS`{`name?*#648`} [], `FIELDS`{`name?**#35`} [], `TYPEDEFS`{`deftype?*#26`} []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{mt : memtype, `id?` : char?} {{"("} {"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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Ttable_(I : I) : (table, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{tabletype#1292 : tabletype, expr#5277 : expr, tt : tabletype, e : expr, `name?*#649` : name?*, `name?*#650` : name?*, `name?*#651` : name?*, `name?*#652` : name?*, `name?*#653` : name?*, `char*#1393` : char*, `id?` : char?, `name?*#654` : name?*, `name?*#655` : name?*, `name?*#656` : name?*, `name?*#657` : name?*, `name?*#658` : name?*, `name?**#36` : name?**, `deftype?*#27` : deftype?*, `char*#1387` : char*} {{"("} {"table"} {?(`%`_name{`char*#1387`}(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {e:Texpr_(I)} {")"}} => (`TABLE`_table{tabletype#1292, expr#5277}(tt, e), {`TYPES`{`name?*#649`} [], `TAGS`{`name?*#650`} [], `GLOBALS`{`name?*#651`} [], `MEMS`{`name?*#652`} [], `TABLES`{`name?*#653`} [?(`%`_name{`char*#1393`}(lift(id?{id <- `id?`})))], `FUNCS`{`name?*#654`} [], `DATAS`{`name?*#655`} [], `ELEMS`{`name?*#656`} [], `LOCALS`{`name?*#657`} [], `LABELS`{`name?*#658`} [], `FIELDS`{`name?**#36`} [], `TYPEDEFS`{`deftype?*#27`} []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{tt : tabletype, e : expr, `id?` : char?} {{"("} {"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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tlocal_(I : I) : (local*, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{valtype#1331 : valtype, t : valtype, `name?*#669` : name?*, `name?*#670` : name?*, `name?*#671` : name?*, `name?*#672` : name?*, `name?*#673` : name?*, `name?*#674` : name?*, `name?*#675` : name?*, `name?*#676` : name?*, `name?*#677` : name?*, `char*#1417` : char*, `id?` : char?, `name?*#678` : name?*, `name?**#38` : name?**, `deftype?*#29` : deftype?*, `char*#1411` : char*} {{"("} {"local"} {?(`%`_name{`char*#1411`}(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => ([`LOCAL`_local{valtype#1331}(t)], {`TYPES`{`name?*#669`} [], `TAGS`{`name?*#670`} [], `GLOBALS`{`name?*#671`} [], `MEMS`{`name?*#672`} [], `TABLES`{`name?*#673`} [], `FUNCS`{`name?*#674`} [], `DATAS`{`name?*#675`} [], `ELEMS`{`name?*#676`} [], `LOCALS`{`name?*#677`} [?(`%`_name{`char*#1417`}(lift(id?{id <- `id?`})))], `LABELS`{`name?*#678`} [], `FIELDS`{`name?**#38`} [], `TYPEDEFS`{`deftype?*#29`} []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{t : valtype, `id?` : char?} {{"("} {"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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tfunc_(I : I) : (func, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{typeidx#2186 : typeidx, `local*#1613` : local*, expr#5289 : expr, x : idx, `loc**` : local**, e : expr, `name?*#659` : name?*, `name?*#660` : name?*, `name?*#661` : name?*, `name?*#662` : name?*, `name?*#663` : name?*, `name?*#664` : name?*, `char*#1405` : char*, `id?` : char?, `name?*#665` : name?*, `name?*#666` : name?*, `name?*#667` : name?*, `name?*#668` : name?*, `name?**#37` : name?**, `deftype?*#28` : deftype?*, `char*#1399` : char*, I_1 : I, `I_2*` : I*, I' : I} {{"("} {"func"} {?(`%`_name{`char*#1399`}(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{typeidx#2186, `local*#1613`, expr#5289}(x, $concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e), {`TYPES`{`name?*#659`} [], `TAGS`{`name?*#660`} [], `GLOBALS`{`name?*#661`} [], `MEMS`{`name?*#662`} [], `TABLES`{`name?*#663`} [], `FUNCS`{`name?*#664`} [?(`%`_name{`char*#1405`}(lift(id?{id <- `id?`})))], `DATAS`{`name?*#665`} [], `ELEMS`{`name?*#666`} [], `LOCALS`{`name?*#667`} [], `LABELS`{`name?*#668`} [], `FIELDS`{`name?**#37`} [], `TYPEDEFS`{`deftype?*#28`} []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{x : idx, `loc**` : local**, e : expr, `id?` : char?, I_1 : I, `I_2*` : I*, 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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tdatastring : byte* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tmemuse_(I : I) : memidx - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => x -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Toffset_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{e : expr} {{"("} {"offset"} {e:Texpr_(I)} {")"}} => e -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tdata_(I : I) : (data, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`byte*#2413` : byte*, datamode#2377 : datamode, `b*` : byte*, `name?*#679` : name?*, `name?*#680` : name?*, `name?*#681` : name?*, `name?*#682` : name?*, `name?*#683` : name?*, `name?*#684` : name?*, `name?*#685` : name?*, `char*#1429` : char*, `id?` : char?, `name?*#686` : name?*, `name?*#687` : name?*, `name?*#688` : name?*, `name?**#39` : name?**, `deftype?*#30` : deftype?*, `char*#1423` : char*} {{"("} {"data"} {?(`%`_name{`char*#1423`}(lift(id?{id <- `id?`}))):Tid?{}} {b*{b <- `b*`}:Tdatastring} {")"}} => (`DATA`_data{`byte*#2413`, datamode#2377}(b*{b <- `b*`}, `PASSIVE`_datamode), {`TYPES`{`name?*#679`} [], `TAGS`{`name?*#680`} [], `GLOBALS`{`name?*#681`} [], `MEMS`{`name?*#682`} [], `TABLES`{`name?*#683`} [], `FUNCS`{`name?*#684`} [], `DATAS`{`name?*#685`} [?(`%`_name{`char*#1429`}(lift(id?{id <- `id?`})))], `ELEMS`{`name?*#686`} [], `LOCALS`{`name?*#687`} [], `LABELS`{`name?*#688`} [], `FIELDS`{`name?**#39`} [], `TYPEDEFS`{`deftype?*#30`} []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`byte*#2425` : byte*, datamode#2389 : datamode, `b*` : byte*, memidx#379 : memidx, expr#5291 : expr, x : idx, e : expr, `name?*#689` : name?*, `name?*#690` : name?*, `name?*#691` : name?*, `name?*#692` : name?*, `name?*#693` : name?*, `name?*#694` : name?*, `name?*#695` : name?*, `char*#1441` : char*, `id?` : char?, `name?*#696` : name?*, `name?*#697` : name?*, `name?*#698` : name?*, `name?**#40` : name?**, `deftype?*#31` : deftype?*, `char*#1435` : char*} {{"("} {"data"} {?(`%`_name{`char*#1435`}(lift(id?{id <- `id?`}))):Tid?{}} {x:Tmemuse_(I)} {e:Toffset_(I)} {b*{b <- `b*`}:Tdatastring} {")"}} => (`DATA`_data{`byte*#2425`, datamode#2389}(b*{b <- `b*`}, `ACTIVE`_datamode{memidx#379, expr#5291}(x, e)), {`TYPES`{`name?*#689`} [], `TAGS`{`name?*#690`} [], `GLOBALS`{`name?*#691`} [], `MEMS`{`name?*#692`} [], `TABLES`{`name?*#693`} [], `FUNCS`{`name?*#694`} [], `DATAS`{`name?*#695`} [?(`%`_name{`char*#1441`}(lift(id?{id <- `id?`})))], `ELEMS`{`name?*#696`} [], `LOCALS`{`name?*#697`} [], `LABELS`{`name?*#698`} [], `FIELDS`{`name?**#40`} [], `TYPEDEFS`{`deftype?*#31`} []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`b*` : byte*, `id?` : char?} {{"("} {"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.4-text.modules.spectec + prod{`b*` : byte*, x : idx, e : expr, `id?` : char?} {{"("} {"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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Telemlist_(I : I) : (reftype, expr*) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Ttableuse_(I : I) : tableidx - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => x -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Telem_(I : I) : (elem, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{reftype#4361 : reftype, `expr*#3575` : expr*, elemmode#3575 : elemmode, rt : reftype, `e*` : expr*, `name?*#699` : name?*, `name?*#700` : name?*, `name?*#701` : name?*, `name?*#702` : name?*, `name?*#703` : name?*, `name?*#704` : name?*, `name?*#705` : name?*, `name?*#706` : name?*, `char*#1453` : char*, `id?` : char?, `name?*#707` : name?*, `name?*#708` : name?*, `name?**#41` : name?**, `deftype?*#32` : deftype?*, `char*#1447` : char*} {{"("} {"elem"} {?(`%`_name{`char*#1447`}(lift(id?{id <- `id?`}))):Tid?{}} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (`ELEM`_elem{reftype#4361, `expr*#3575`, elemmode#3575}(rt, e*{e <- `e*`}, `PASSIVE`_elemmode), {`TYPES`{`name?*#699`} [], `TAGS`{`name?*#700`} [], `GLOBALS`{`name?*#701`} [], `MEMS`{`name?*#702`} [], `TABLES`{`name?*#703`} [], `FUNCS`{`name?*#704`} [], `DATAS`{`name?*#705`} [], `ELEMS`{`name?*#706`} [?(`%`_name{`char*#1453`}(lift(id?{id <- `id?`})))], `LOCALS`{`name?*#707`} [], `LABELS`{`name?*#708`} [], `FIELDS`{`name?**#41`} [], `TYPEDEFS`{`deftype?*#32`} []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{reftype#4373 : reftype, `expr*#3587` : expr*, elemmode#3587 : elemmode, rt : reftype, `e*` : expr*, tableidx#173 : tableidx, expr#5293 : expr, x : idx, e' : expr, `name?*#709` : name?*, `name?*#710` : name?*, `name?*#711` : name?*, `name?*#712` : name?*, `name?*#713` : name?*, `name?*#714` : name?*, `name?*#715` : name?*, `name?*#716` : name?*, `char*#1465` : char*, `id?` : char?, `name?*#717` : name?*, `name?*#718` : name?*, `name?**#42` : name?**, `deftype?*#33` : deftype?*, `char*#1459` : char*} {{"("} {"elem"} {?(`%`_name{`char*#1459`}(lift(id?{id <- `id?`}))):Tid?{}} {x:Ttableuse_(I)} {e':Toffset_(I)} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (`ELEM`_elem{reftype#4373, `expr*#3587`, elemmode#3587}(rt, e*{e <- `e*`}, `ACTIVE`_elemmode{tableidx#173, expr#5293}(x, e')), {`TYPES`{`name?*#709`} [], `TAGS`{`name?*#710`} [], `GLOBALS`{`name?*#711`} [], `MEMS`{`name?*#712`} [], `TABLES`{`name?*#713`} [], `FUNCS`{`name?*#714`} [], `DATAS`{`name?*#715`} [], `ELEMS`{`name?*#716`} [?(`%`_name{`char*#1465`}(lift(id?{id <- `id?`})))], `LOCALS`{`name?*#717`} [], `LABELS`{`name?*#718`} [], `FIELDS`{`name?**#42`} [], `TYPEDEFS`{`deftype?*#33`} []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{reftype#4385 : reftype, `expr*#3599` : expr*, elemmode#3599 : elemmode, rt : reftype, `e*` : expr*, `name?*#719` : name?*, `name?*#720` : name?*, `name?*#721` : name?*, `name?*#722` : name?*, `name?*#723` : name?*, `name?*#724` : name?*, `name?*#725` : name?*, `name?*#726` : name?*, `char*#1477` : char*, `id?` : char?, `name?*#727` : name?*, `name?*#728` : name?*, `name?**#43` : name?**, `deftype?*#34` : deftype?*, `char*#1471` : char*} {{"("} {"elem"} {?(`%`_name{`char*#1471`}(lift(id?{id <- `id?`}))):Tid?{}} {"declare"} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (`ELEM`_elem{reftype#4385, `expr*#3599`, elemmode#3599}(rt, e*{e <- `e*`}, `DECLARE`_elemmode), {`TYPES`{`name?*#719`} [], `TAGS`{`name?*#720`} [], `GLOBALS`{`name?*#721`} [], `MEMS`{`name?*#722`} [], `TABLES`{`name?*#723`} [], `FUNCS`{`name?*#724`} [], `DATAS`{`name?*#725`} [], `ELEMS`{`name?*#726`} [?(`%`_name{`char*#1477`}(lift(id?{id <- `id?`})))], `LOCALS`{`name?*#727`} [], `LABELS`{`name?*#728`} [], `FIELDS`{`name?**#43`} [], `TYPEDEFS`{`deftype?*#34`} []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"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.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, x : idx, e' : expr, `id?` : char?} {{"("} {"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.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"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.4-text.modules.spectec grammar Telemexpr_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{e : expr} {{"("} {"item"} {e:Texpr_(I)} {")"}} => e -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tstart_(I : I) : (start, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{funcidx#3399 : funcidx, x : idx, `name?*#729` : name?*, `name?*#730` : name?*, `name?*#731` : name?*, `name?*#732` : name?*, `name?*#733` : name?*, `name?*#734` : name?*, `name?*#735` : name?*, `name?*#736` : name?*, `name?*#737` : name?*, `name?*#738` : name?*, `name?**#44` : name?**, `deftype?*#35` : deftype?*} {{"("} {"start"} {x:Tfuncidx_(I)} {")"}} => (`START`_start{funcidx#3399}(x), {`TYPES`{`name?*#729`} [], `TAGS`{`name?*#730`} [], `GLOBALS`{`name?*#731`} [], `MEMS`{`name?*#732`} [], `TABLES`{`name?*#733`} [], `FUNCS`{`name?*#734`} [], `DATAS`{`name?*#735`} [], `ELEMS`{`name?*#736`} [], `LOCALS`{`name?*#737`} [], `LABELS`{`name?*#738`} [], `FIELDS`{`name?**#44`} [], `TYPEDEFS`{`deftype?*#35`} []}) + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Timport_(I : I) : (import, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{name#6556 : name, externtype#345 : externtype, nm_1 : name, nm_2 : name, xt : externtype, I' : I} {{"("} {"import"} {nm_1:Tname} {nm_2:Tname} {(xt, I'):Texterntype_(I)} {")"}} => (`IMPORT`_import{name#6556, externtype#345}(nm_1, nm_2, xt), I') + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texport_(I : I) : (export, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{name#6569 : name, externidx#6009 : externidx, nm : name, xx : externidx, `name?*#739` : name?*, `name?*#740` : name?*, `name?*#741` : name?*, `name?*#742` : name?*, `name?*#743` : name?*, `name?*#744` : name?*, `name?*#745` : name?*, `name?*#746` : name?*, `name?*#747` : name?*, `name?*#748` : name?*, `name?**#45` : name?**, `deftype?*#36` : deftype?*} {{"("} {"export"} {nm:Tname} {xx:Texternidx_(I)} {")"}} => (`EXPORT`_export{name#6569, externidx#6009}(nm, xx), {`TYPES`{`name?*#739`} [], `TAGS`{`name?*#740`} [], `GLOBALS`{`name?*#741`} [], `MEMS`{`name?*#742`} [], `TABLES`{`name?*#743`} [], `FUNCS`{`name?*#744`} [], `DATAS`{`name?*#745`} [], `ELEMS`{`name?*#746`} [], `LOCALS`{`name?*#747`} [], `LABELS`{`name?*#748`} [], `FIELDS`{`name?**#45`} [], `TYPEDEFS`{`deftype?*#36`} []}) + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texportdots : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{"("} {"export"} {Tname} {")"}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Timportdots : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{"("} {"import"} {Tname} {Tname} {")"}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $dots : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texporttagdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Ttagtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttagtype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texportglobaldots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Tglobaltype_(I)} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tglobaltype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texportmemdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Tmemtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {"("} {"data"} {Tdatastring} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tmemtype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texporttabledots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Ttabletype_(I)} {Texpr_(I)?{}}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {Treftype_(I)} {"("} {"elem"} {Telemlist_(I)} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttabletype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texportfuncdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Ttypeuse_(I)} {Tlocal_(I)*{}} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttypeuse_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texporttag_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texportglobal_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texportmem_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texporttable_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texportfunc_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tdatamem_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Telemtable_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec syntax decl = - | `TYPE`{rectype : rectype}(rectype : rectype) - | `IMPORT`{name : name, externtype : externtype}(name : 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*, expr : expr) - | `DATA`{`byte*` : byte*, datamode : datamode}(`byte*` : byte*, datamode : datamode) - | `ELEM`{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(reftype : reftype, `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 + | `TYPE`(rectype : rectype) + | `IMPORT`(name : name, name : name, externtype : externtype) + | `TAG`(tagtype : tagtype) + | `GLOBAL`(globaltype : globaltype, expr : expr) + | `MEMORY`(memtype : memtype) + | `TABLE`(tabletype : tabletype, expr : expr) + | `FUNC`(typeidx : typeidx, `local*` : local*, expr : expr) + | `DATA`(`byte*` : byte*, datamode : datamode) + | `ELEM`(reftype : reftype, `expr*` : expr*, elemmode : elemmode) + | `START`(funcidx : funcidx) + | `EXPORT`(name : name, externidx : externidx) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:258.1-258.76 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.1-258.76 def $typesd(decl*) : type* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:270.1-270.23 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:270.1-270.23 def $typesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:271.1-271.48 + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:259.1-259.78 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.1-259.78 def $importsd(decl*) : import* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:274.1-274.25 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:274.1-274.25 def $importsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:275.1-275.56 + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:260.1-260.75 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.1-260.75 def $tagsd(decl*) : tag* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:278.1-278.22 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:278.1-278.22 def $tagsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:279.1-279.44 + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:261.1-261.78 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.1-261.78 def $globalsd(decl*) : global* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:282.1-282.25 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:282.1-282.25 def $globalsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:283.1-283.56 + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:262.1-262.75 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.1-262.75 def $memsd(decl*) : mem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:286.1-286.22 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:286.1-286.22 def $memsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:287.1-287.44 + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:263.1-263.77 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.1-263.77 def $tablesd(decl*) : table* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:290.1-290.24 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:290.1-290.24 def $tablesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:291.1-291.52 + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:264.1-264.76 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.1-264.76 def $funcsd(decl*) : func* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:294.1-294.23 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:294.1-294.23 def $funcsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:295.1-295.48 + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:265.1-265.76 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.1-265.76 def $datasd(decl*) : data* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:298.1-298.23 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:298.1-298.23 def $datasd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:299.1-299.48 + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:266.1-266.76 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.1-266.76 def $elemsd(decl*) : elem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:302.1-302.23 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:302.1-302.23 def $elemsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:303.1-303.48 + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:267.1-267.77 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.1-267.77 def $startsd(decl*) : start* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:306.1-306.24 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:306.1-306.24 def $startsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:307.1-307.52 + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:268.1-268.78 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.1-268.78 def $exportsd(decl*) : export* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:310.1-310.25 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:310.1-310.25 def $exportsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:311.1-311.56 + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $ordered(decl*) : bool - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tdecl_(I : I) : (decl, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (type, idctxt)} ``:Ttype_(I) => (`` : (type, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (import, idctxt)} ``:Timport_(I) => (`` : (import, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (tag, idctxt)} ``:Ttag_(I) => (`` : (tag, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (global, idctxt)} ``:Tglobal_(I) => (`` : (global, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (mem, idctxt)} ``:Tmem_(I) => (`` : (mem, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (table, idctxt)} ``:Ttable_(I) => (`` : (table, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (func, idctxt)} ``:Tfunc_(I) => (`` : (func, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (data, idctxt)} ``:Tdata_(I) => (`` : (data, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (elem, idctxt)} ``:Telem_(I) => (`` : (elem, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (start, idctxt)} ``:Tstart_(I) => (`` : (start, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (export, idctxt)} ``:Texport_(I) => (`` : (export, idctxt) <: (decl, idctxt)) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tmodule : module - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`type*#155` : type*, `import*#155` : import*, `tag*#155` : tag*, `global*#179` : global*, `mem*#179` : mem*, `table*#179` : table*, `func*#155` : func*, `data*#155` : data*, `elem*#179` : elem*, `start?#155` : start?, `export*#155` : export*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `I*` : I*, `decl*` : decl*, I' : I} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => `MODULE`_module{`type*#155`, `import*#155`, `tag*#155`, `global*#179`, `mem*#179`, `table*#179`, `func*#155`, `data*#155`, `elem*#179`, `start?#155`, `export*#155`}(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*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `I*` : I*, `decl*` : decl*, I' : I} {{"("} {"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*`})) @@ -122725,9 +97976,9 @@ grammar Tmodule : module -- if (export*{export <- `export*`} = $exportsd(decl*{decl <- `decl*`})) -- if $ordered(decl*{decl <- `decl*`}) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tdecldots_(I : I) : (decl, idctxt)* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (decl, idctxt)} [``]:Tdecl_(I)*{} => [``] ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec @@ -122738,14 +97989,14 @@ syntax B = nat ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec syntax sym = - | `_FIRST`{A_1 : A}(A_1 : A) + | `_FIRST`(A_1 : A) | `_DOTS` - | `_LAST`{A_n : A}(A_n : A) + | `_LAST`(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) + | `_FIRST`(A_1 : A) + | `_LAST`(A_2 : A) ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec syntax recorddots = () @@ -122753,9 +98004,9 @@ 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 + `FIELD_1` A , + `FIELD_2` A , + `...` recorddots } ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec @@ -122787,45 +98038,45 @@ 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, numtype#1105 : numtype, resulttype#3064 : resulttype, `localidx*#1817` : localidx*, `X*#13813` : valtype*, `X*#13862` : valtype*}: - `%|-%:%`(C, [`BINOP`_instr{numtype#1105}(`I32`_numtype, `ADD`_binop_)], `%->_%%`_instrtype{resulttype#3064, `localidx*#1817`}(`%`_resulttype{`X*#13813`}([`I32`_valtype `I32`_valtype]), [], `%`_resulttype{`X*#13862`}([`I32`_valtype]))) + 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, globalidx#35 : globalidx, x : idx, resulttype#3084 : resulttype, `localidx*#1829` : localidx*, `X*#13883` : valtype*, `X*#13932` : valtype*, t : valtype, `globaltype*#27` : globaltype*, i#131877 : nat, `mut?#1609` : mut?, valtype#1343 : valtype, mut : mut}: - `%|-%:%`(C, [`GLOBAL.GET`_instr{globalidx#35}(x)], `%->_%%`_instrtype{resulttype#3084, `localidx*#1829`}(`%`_resulttype{`X*#13883`}([]), [], `%`_resulttype{`X*#13932`}([t]))) - -- if (C.`GLOBALS`_context{`globaltype*#27`}[x!`%`_idx{i#131877}.0] = `%%`_globaltype{`mut?#1609`, valtype#1343}(?(mut), t)) + 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#49 : blocktype, `instr*#2369` : instr*, blocktype : blocktype, `instr*` : instr*, resulttype#3104 : resulttype, `localidx*#1841` : localidx*, `X*#13943` : valtype*, `t_1*` : valtype*, `X*#13994` : valtype*, `t_2*` : valtype*, resulttype#3124 : resulttype, `localidx*#1853` : localidx*, `X*#14005` : valtype*, `X*#14056` : valtype*, `deftype*#98` : deftype*, `subtype*#25` : subtype*, `tagtype*#26` : tagtype*, `globaltype*#28` : globaltype*, `memtype*#41` : memtype*, `tabletype*#34` : tabletype*, `deftype*#99` : deftype*, `datatype*#26` : datatype*, `elemtype*#26` : elemtype*, `localtype*#29` : localtype*, `resulttype*#37` : resulttype*, `X*#14067` : valtype*, `resulttype?#34` : resulttype?, `funcidx*#63` : funcidx*, resulttype#3144 : resulttype, `localidx*#1865` : localidx*, `X*#14080` : valtype*, `X*#14131` : valtype*}: - `%|-%:%`(C, [`BLOCK`_instr{blocktype#49, `instr*#2369`}(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype{resulttype#3104, `localidx*#1841`}(`%`_resulttype{`X*#13943`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#13994`}(t_2*{t_2 <- `t_2*`}))) - -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype{resulttype#3124, `localidx*#1853`}(`%`_resulttype{`X*#14005`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#14056`}(t_2*{t_2 <- `t_2*`}))) - -- NotationTypingInstrScheme: `%|-%:%`({`TYPES`{`deftype*#98`} [], `RECS`{`subtype*#25`} [], `TAGS`{`tagtype*#26`} [], `GLOBALS`{`globaltype*#28`} [], `MEMS`{`memtype*#41`} [], `TABLES`{`tabletype*#34`} [], `FUNCS`{`deftype*#99`} [], `DATAS`{`datatype*#26`} [], `ELEMS`{`elemtype*#26`} [], `LOCALS`{`localtype*#29`} [], `LABELS`{`resulttype*#37`} [`%`_resulttype{`X*#14067`}(t_2*{t_2 <- `t_2*`})], `RETURN`{`resulttype?#34`} ?(), `REFS`{`funcidx*#63`} []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype{resulttype#3144, `localidx*#1865`}(`%`_resulttype{`X*#14080`}(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype{`X*#14131`}(t_2*{t_2 <- `t_2*`}))) + 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{numtype#1107 : numtype, q_1 : num_(`F64`_numtype), numtype#1109 : numtype, q_4 : num_(`F64`_numtype), numtype#1111 : numtype, q_3 : num_(`F64`_numtype), numtype#1113 : numtype, numtype#1115 : numtype}: - `~>%`([`CONST`_instr{numtype#1107}(`F64`_numtype, q_1) `CONST`_instr{numtype#1109}(`F64`_numtype, q_4) `CONST`_instr{numtype#1111}(`F64`_numtype, q_3) `BINOP`_instr{numtype#1113}(`F64`_numtype, `ADD`_binop_) `BINOP`_instr{numtype#1115}(`F64`_numtype, `MUL`_binop_)]) + 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{numtype#1117 : numtype, q_1 : num_(`F64`_numtype), numtype#1119 : numtype, q_5 : num_(`F64`_numtype), numtype#1121 : numtype}: - `~>%`([`CONST`_instr{numtype#1117}(`F64`_numtype, q_1) `CONST`_instr{numtype#1119}(`F64`_numtype, q_5) `BINOP`_instr{numtype#1121}(`F64`_numtype, `MUL`_binop_)]) + 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{numtype#1123 : numtype, q_6 : num_(`F64`_numtype)}: - `~>%`([`CONST`_instr{numtype#1123}(`F64`_numtype, q_6)]) + 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*) + | `LABEL_%{%}`(n : n, `instr*` : instr*) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec syntax callframe = - | `FRAME_%{%}`{n : n, frame : frame}(n : n, frame : 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) @@ -122845,7 +98096,7 @@ def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec syntax symdots = - | `%`{i : nat}(i : nat) + | `%`(i : nat) -- if (i = 0) ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec @@ -123185,40 +98436,22 @@ grammar Tabbrev : () [] typevar* typevar* [] typeuse* typeuse* [] typeuse* typeuse^n -[] nat* nat^n -[] typeidx* typeidx^n [] typeuse* typeuse^n [] typeuse* typeuse^n -[] nat* nat^n -[] typeidx* typeidx^n [] typeuse* typeuse^n [] typeuse* typeuse^n -[] nat* nat^n -[] typeidx* typeidx^n [] typeuse* typeuse^n [] typeuse* typeuse^n -[] nat* nat^n -[] typeidx* typeidx^n [] typeuse* typeuse^n [] typeuse* typeuse^n -[] nat* nat^n -[] typeidx* typeidx^n [] typeuse* typeuse^n [] typeuse* typeuse^n -[] nat* nat^n -[] typeidx* typeidx^n [] typeuse* typeuse^n [] typeuse* typeuse^n -[] nat* nat^n -[] typeidx* typeidx^n [] typeuse* typeuse^n [] typeuse* typeuse^n -[] nat* nat^n -[] typeidx* typeidx^n [] typeuse* typeuse^n [] typeuse* typeuse^n -[] nat* nat^n -[] typeidx* typeidx^n [] typeuse* typeuse^n [] typeuse* typeuse* [] deftype* deftype* @@ -123226,27 +98459,10 @@ grammar Tabbrev : () [] typeuse* typeuse* [] deftype* deftype* [] typeuse* typeuse* -[] nat** nat^n^n -[] nat** nat^n^n -[] n** n^n^n [] subtype* subtype^n -[] typeidx** typeidx^n^n -[] nat* nat^n -[] nat* nat^n -[] typeidx* typeidx^n -[] n* n^n [] subtype* subtype^n -[] n** n^n^n -[] n** n^n^n -[] rectype** rectype^n^n [] subtype* subtype^n -[] n* n^n -[] n* n^n -[] rectype* rectype^n [] subtype* subtype^n -[] subtype** subtype*^n -[] n* n^n -[] rectype* rectype^n [] subtype* subtype^n [] subtype* subtype^n [] subtype* subtype* @@ -123380,23 +98596,13 @@ grammar Tabbrev : () [] valtype* valtype* [] valtype* valtype* [] valtype* valtype* -[] typeidx* typeidx* [] idx* typeidx* [] idx* idx* [] idx* idx* -[] nat* nat* -[] nat* nat* [] idx* idx* [] comptype* comptype* -[] comptype* comptype* -[] deftype** deftype** -[] final?* final?* -[] nat* nat* -[] typeidx** typeidx** -[] typeuse** typeuse** [] idx* idx* [] idx** typeidx** -[] typeidx* typeidx* [] idx* typeidx* [] comptype* comptype* [] subtype* subtype* @@ -123409,11 +98615,8 @@ grammar Tabbrev : () [] typeuse* typeuse* [] typeuse* typeuse* [] comptype* comptype* -[] comptype* comptype* -[] final?* final?* [] typeuse* typeuse* [] typeuse** typeuse** -[] typeuse** typeuse** [] typeuse* typeuse* [] comptype* comptype* [] subtype* subtype* @@ -123452,11 +98655,8 @@ grammar Tabbrev : () [] valtype* valtype* [] valtype* valtype* [] valtype* valtype* -[] nat* nat* [] localtype* localtype* -[] localtype** localtype** [] idx* idx* -[] nat? nat? [] m? nat? [] m? nat? [] valtype* valtype* @@ -123477,13 +98677,8 @@ grammar Tabbrev : () [] idx* localidx* [] idx* localidx* [] idx* localidx* -[] nat* nat* -[] init* init* -[] localtype** localtype** -[] valtype* valtype* [] valtype* valtype* [] idx* idx* -[] nat? nat? [] m? nat? [] m? nat? [] valtype? valtype? @@ -123550,10 +98745,7 @@ grammar Tabbrev : () [] valtype* valtype* [] valtype* valtype* [] valtype* valtype* -[] valtype** valtype** -[] nat* nat* [] labelidx* labelidx* -[] resulttype** resulttype** [] valtype* valtype* [] valtype* valtype* [] valtype* valtype* @@ -123643,13 +98835,9 @@ grammar Tabbrev : () [] catch* catch* [] storagetype* storagetype* [] mut?* mut?* -[] mut?* mut?* -[] storagetype* storagetype* [] storagetype* storagetype* [] mut? mut? [] mut?* mut?* -[] mut?* mut?* -[] storagetype* storagetype* [] storagetype* storagetype* [] mut? mut? [] storagetype* storagetype* @@ -123688,9 +98876,6 @@ grammar Tabbrev : () [] mut? mut? [] laneidx* laneidx* [] laneidx* laneidx* -[] nat* nat* -[] nat* nat* -[] shape* shape* [] sx? sx? [] instr* instr* [] valtype* valtype* @@ -123700,16 +98885,10 @@ grammar Tabbrev : () [] valtype* valtype* [] idx* localidx* [] valtype* valtype* -[] nat* nat* [] init* init* -[] init* init* -[] localtype** localtype** -[] valtype* valtype* [] valtype* valtype* [] idx* idx* [] idx* localidx* -[] init* init* -[] valtype* valtype* [] valtype* valtype* [] instr* instr* [] valtype* valtype* @@ -123743,8 +98922,6 @@ grammar Tabbrev : () [] valtype* valtype* [] localtype* localtype* [] local* local* -[] init* init* -[] valtype* valtype* [] valtype* valtype* [] localtype* localtype* [] valtype* valtype* @@ -123787,20 +98964,7 @@ grammar Tabbrev : () [] externtype* externtype* [] type* type* [] deftype* deftype* -[] datatype** datatype** -[] deftype** deftype** -[] deftype** deftype** -[] elemtype** elemtype** -[] funcidx** funcidx** -[] globaltype** globaltype** [] import* import* -[] localtype** localtype** -[] memtype** memtype** -[] resulttype** resulttype** -[] resulttype?* resulttype?* -[] subtype** subtype** -[] tabletype** tabletype** -[] tagtype** tagtype** [] externtype* externtype* [] deftype* deftype* [] tagtype* tagtype* @@ -123883,303 +99047,220 @@ grammar Tabbrev : () [] iN(N)* iN(N)* [] iN(N)* iN(N)* [] iN(N)* iN(N)* -[] iN($lsizenn((Jnn : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape{lanetype#1469, dim#1469, i#13506}((Jnn : Jnn <: lanetype), `%`_dim{i#13513}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#1443, dim#1443, i#13370}((Jnn : Jnn <: lanetype), `%`_dim{i#13377}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1443, dim#1443, i#13370}((Jnn : Jnn <: lanetype), `%`_dim{i#13377}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#1443, dim#1443, i#13370}((Jnn : Jnn <: lanetype), `%`_dim{i#13377}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1443, dim#1443, i#13370}((Jnn : Jnn <: lanetype), `%`_dim{i#13377}(M))))* +[] iN($lsizenn((Jnn : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* [] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* [] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape{lanetype#1443, dim#1443, i#13370}((Jnn : Jnn <: lanetype), `%`_dim{i#13377}(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] lane_((Fnn : Fnn <: lanetype))** lane_($lanetype(`%X%`_shape{lanetype#1532, dim#1532, i#13693}((Fnn : Fnn <: lanetype), `%`_dim{i#13700}(M))))** -[] dim* dim* -[] nat* nat* -[] nat* nat* -[] lanetype* lanetype* -[] lane_((Fnn : Fnn <: lanetype))* lane_($lanetype(`%X%`_shape{lanetype#1532, dim#1532, i#13693}((Fnn : Fnn <: lanetype), `%`_dim{i#13700}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#1505, dim#1505, i#13603}((Fnn : Fnn <: lanetype), `%`_dim{i#13610}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1505, dim#1505, i#13603}((Fnn : Fnn <: lanetype), `%`_dim{i#13610}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#1505, dim#1505, i#13603}((Fnn : Fnn <: lanetype), `%`_dim{i#13610}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1505, dim#1505, i#13603}((Fnn : Fnn <: lanetype), `%`_dim{i#13610}(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] lane_((Fnn : Fnn <: lanetype))** lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))** +[] lane_((Fnn : Fnn <: lanetype))* lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* [] lane_((Fnn : Fnn <: lanetype))** lane_((Fnn : Fnn <: lanetype))** [] lane_((Fnn : Fnn <: lanetype))* lane_((Fnn : Fnn <: lanetype))* [] lane_((Fnn : Fnn <: lanetype))** lane_((Fnn : Fnn <: lanetype))** [] lane_((Fnn : Fnn <: lanetype))* lane_((Fnn : Fnn <: lanetype))* -[] lane_($lanetype(`%X%`_shape{lanetype#1505, dim#1505, i#13603}((Fnn : Fnn <: lanetype), `%`_dim{i#13610}(M))))* fN($sizenn((Fnn : Fnn <: numtype)))* -[] iN($lsizenn((Jnn : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape{lanetype#1619, dim#1619, i#14011}((Jnn : Jnn <: lanetype), `%`_dim{i#14018}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#1567, dim#1567, i#13774}((Jnn : Jnn <: lanetype), `%`_dim{i#13781}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1567, dim#1567, i#13774}((Jnn : Jnn <: lanetype), `%`_dim{i#13781}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#1567, dim#1567, i#13774}((Jnn : Jnn <: lanetype), `%`_dim{i#13781}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1567, dim#1567, i#13774}((Jnn : Jnn <: lanetype), `%`_dim{i#13781}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#1592, dim#1592, i#13860}((Jnn : Jnn <: lanetype), `%`_dim{i#13867}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1592, dim#1592, i#13860}((Jnn : Jnn <: lanetype), `%`_dim{i#13867}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#1592, dim#1592, i#13860}((Jnn : Jnn <: lanetype), `%`_dim{i#13867}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1592, dim#1592, i#13860}((Jnn : Jnn <: lanetype), `%`_dim{i#13867}(M))))* +[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* fN($sizenn((Fnn : Fnn <: numtype)))* +[] iN($lsizenn((Jnn : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* [] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* [] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape{lanetype#1567, dim#1567, i#13774}((Jnn : Jnn <: lanetype), `%`_dim{i#13781}(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape{lanetype#1592, dim#1592, i#13860}((Jnn : Jnn <: lanetype), `%`_dim{i#13867}(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] iN($lsizenn((Jnn : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape{lanetype#1707, dim#1707, i#14357}((Jnn : Jnn <: lanetype), `%`_dim{i#14364}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#1655, dim#1655, i#14120}((Jnn : Jnn <: lanetype), `%`_dim{i#14127}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1655, dim#1655, i#14120}((Jnn : Jnn <: lanetype), `%`_dim{i#14127}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#1655, dim#1655, i#14120}((Jnn : Jnn <: lanetype), `%`_dim{i#14127}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1655, dim#1655, i#14120}((Jnn : Jnn <: lanetype), `%`_dim{i#14127}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#1680, dim#1680, i#14206}((Jnn : Jnn <: lanetype), `%`_dim{i#14213}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1680, dim#1680, i#14206}((Jnn : Jnn <: lanetype), `%`_dim{i#14213}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#1680, dim#1680, i#14206}((Jnn : Jnn <: lanetype), `%`_dim{i#14213}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1680, dim#1680, i#14206}((Jnn : Jnn <: lanetype), `%`_dim{i#14213}(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] iN($lsizenn((Jnn : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* [] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* [] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape{lanetype#1655, dim#1655, i#14120}((Jnn : Jnn <: lanetype), `%`_dim{i#14127}(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape{lanetype#1680, dim#1680, i#14206}((Jnn : Jnn <: lanetype), `%`_dim{i#14213}(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] lane_((Jnn : Jnn <: lanetype))** lane_($lanetype(`%X%`_shape{lanetype#1803, dim#1803, i#14919}((Jnn : Jnn <: lanetype), `%`_dim{i#14926}(M))))** -[] dim* dim* -[] nat* nat* -[] nat* nat* -[] lanetype* lanetype* -[] lane_((Jnn : Jnn <: lanetype))* lane_($lanetype(`%X%`_shape{lanetype#1803, dim#1803, i#14919}((Jnn : Jnn <: lanetype), `%`_dim{i#14926}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#1743, dim#1743, i#14466}((Jnn : Jnn <: lanetype), `%`_dim{i#14473}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1743, dim#1743, i#14466}((Jnn : Jnn <: lanetype), `%`_dim{i#14473}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#1743, dim#1743, i#14466}((Jnn : Jnn <: lanetype), `%`_dim{i#14473}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1743, dim#1743, i#14466}((Jnn : Jnn <: lanetype), `%`_dim{i#14473}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#1768, dim#1768, i#14552}((Jnn : Jnn <: lanetype), `%`_dim{i#14559}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1768, dim#1768, i#14552}((Jnn : Jnn <: lanetype), `%`_dim{i#14559}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#1768, dim#1768, i#14552}((Jnn : Jnn <: lanetype), `%`_dim{i#14559}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1768, dim#1768, i#14552}((Jnn : Jnn <: lanetype), `%`_dim{i#14559}(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] lane_((Jnn : Jnn <: lanetype))** lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))** +[] lane_((Jnn : Jnn <: lanetype))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* [] lane_((Jnn : Jnn <: lanetype))** lane_((Jnn : Jnn <: lanetype))** [] lane_((Jnn : Jnn <: lanetype))* lane_((Jnn : Jnn <: lanetype))* [] lane_((Jnn : Jnn <: lanetype))** lane_((Jnn : Jnn <: lanetype))** [] lane_((Jnn : Jnn <: lanetype))* lane_((Jnn : Jnn <: lanetype))* -[] lane_($lanetype(`%X%`_shape{lanetype#1743, dim#1743, i#14466}((Jnn : Jnn <: lanetype), `%`_dim{i#14473}(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape{lanetype#1768, dim#1768, i#14552}((Jnn : Jnn <: lanetype), `%`_dim{i#14559}(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] lane_((Fnn : Fnn <: lanetype))** lane_($lanetype(`%X%`_shape{lanetype#1893, dim#1893, i#15183}((Fnn : Fnn <: lanetype), `%`_dim{i#15190}(M))))** -[] dim* dim* -[] nat* nat* -[] nat* nat* -[] lanetype* lanetype* -[] lane_((Fnn : Fnn <: lanetype))* lane_($lanetype(`%X%`_shape{lanetype#1893, dim#1893, i#15183}((Fnn : Fnn <: lanetype), `%`_dim{i#15190}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#1839, dim#1839, i#15026}((Fnn : Fnn <: lanetype), `%`_dim{i#15033}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1839, dim#1839, i#15026}((Fnn : Fnn <: lanetype), `%`_dim{i#15033}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#1839, dim#1839, i#15026}((Fnn : Fnn <: lanetype), `%`_dim{i#15033}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1839, dim#1839, i#15026}((Fnn : Fnn <: lanetype), `%`_dim{i#15033}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#1863, dim#1863, i#15084}((Fnn : Fnn <: lanetype), `%`_dim{i#15091}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1863, dim#1863, i#15084}((Fnn : Fnn <: lanetype), `%`_dim{i#15091}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#1863, dim#1863, i#15084}((Fnn : Fnn <: lanetype), `%`_dim{i#15091}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1863, dim#1863, i#15084}((Fnn : Fnn <: lanetype), `%`_dim{i#15091}(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] lane_((Fnn : Fnn <: lanetype))** lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))** +[] lane_((Fnn : Fnn <: lanetype))* lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* [] lane_((Fnn : Fnn <: lanetype))** lane_((Fnn : Fnn <: lanetype))** [] lane_((Fnn : Fnn <: lanetype))* lane_((Fnn : Fnn <: lanetype))* [] lane_((Fnn : Fnn <: lanetype))** lane_((Fnn : Fnn <: lanetype))** [] lane_((Fnn : Fnn <: lanetype))* lane_((Fnn : Fnn <: lanetype))* -[] lane_($lanetype(`%X%`_shape{lanetype#1839, dim#1839, i#15026}((Fnn : Fnn <: lanetype), `%`_dim{i#15033}(M))))* fN($sizenn((Fnn : Fnn <: numtype)))* -[] lane_($lanetype(`%X%`_shape{lanetype#1863, dim#1863, i#15084}((Fnn : Fnn <: lanetype), `%`_dim{i#15091}(M))))* fN($sizenn((Fnn : Fnn <: numtype)))* -[] lane_((Jnn : Jnn <: lanetype))** lane_($lanetype(`%X%`_shape{lanetype#2018, dim#2018, i#15890}((Jnn : Jnn <: lanetype), `%`_dim{i#15897}(M))))** -[] dim* dim* -[] nat* nat* -[] nat* nat* -[] lanetype* lanetype* -[] lane_((Jnn : Jnn <: lanetype))* lane_($lanetype(`%X%`_shape{lanetype#2018, dim#2018, i#15890}((Jnn : Jnn <: lanetype), `%`_dim{i#15897}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#1928, dim#1928, i#15276}((Jnn : Jnn <: lanetype), `%`_dim{i#15283}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1928, dim#1928, i#15276}((Jnn : Jnn <: lanetype), `%`_dim{i#15283}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#1928, dim#1928, i#15276}((Jnn : Jnn <: lanetype), `%`_dim{i#15283}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1928, dim#1928, i#15276}((Jnn : Jnn <: lanetype), `%`_dim{i#15283}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#1953, dim#1953, i#15362}((Jnn : Jnn <: lanetype), `%`_dim{i#15369}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1953, dim#1953, i#15362}((Jnn : Jnn <: lanetype), `%`_dim{i#15369}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#1953, dim#1953, i#15362}((Jnn : Jnn <: lanetype), `%`_dim{i#15369}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1953, dim#1953, i#15362}((Jnn : Jnn <: lanetype), `%`_dim{i#15369}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#1978, dim#1978, i#15448}((Jnn : Jnn <: lanetype), `%`_dim{i#15455}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1978, dim#1978, i#15448}((Jnn : Jnn <: lanetype), `%`_dim{i#15455}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#1978, dim#1978, i#15448}((Jnn : Jnn <: lanetype), `%`_dim{i#15455}(M))))* lane_($lanetype(`%X%`_shape{lanetype#1978, dim#1978, i#15448}((Jnn : Jnn <: lanetype), `%`_dim{i#15455}(M))))* +[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* fN($sizenn((Fnn : Fnn <: numtype)))* +[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* fN($sizenn((Fnn : Fnn <: numtype)))* +[] lane_((Jnn : Jnn <: lanetype))** lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))** +[] lane_((Jnn : Jnn <: lanetype))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* [] lane_((Jnn : Jnn <: lanetype))** lane_((Jnn : Jnn <: lanetype))** [] lane_((Jnn : Jnn <: lanetype))* lane_((Jnn : Jnn <: lanetype))* [] lane_((Jnn : Jnn <: lanetype))** lane_((Jnn : Jnn <: lanetype))** [] lane_((Jnn : Jnn <: lanetype))* lane_((Jnn : Jnn <: lanetype))* -[] lane_($lanetype(`%X%`_shape{lanetype#1928, dim#1928, i#15276}((Jnn : Jnn <: lanetype), `%`_dim{i#15283}(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape{lanetype#1953, dim#1953, i#15362}((Jnn : Jnn <: lanetype), `%`_dim{i#15369}(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape{lanetype#1978, dim#1978, i#15448}((Jnn : Jnn <: lanetype), `%`_dim{i#15455}(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] lane_((Fnn : Fnn <: lanetype))** lane_($lanetype(`%X%`_shape{lanetype#2135, dim#2135, i#16233}((Fnn : Fnn <: lanetype), `%`_dim{i#16240}(M))))** -[] dim* dim* -[] nat* nat* -[] nat* nat* -[] lanetype* lanetype* -[] lane_((Fnn : Fnn <: lanetype))* lane_($lanetype(`%X%`_shape{lanetype#2135, dim#2135, i#16233}((Fnn : Fnn <: lanetype), `%`_dim{i#16240}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#2054, dim#2054, i#16009}((Fnn : Fnn <: lanetype), `%`_dim{i#16016}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2054, dim#2054, i#16009}((Fnn : Fnn <: lanetype), `%`_dim{i#16016}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#2054, dim#2054, i#16009}((Fnn : Fnn <: lanetype), `%`_dim{i#16016}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2054, dim#2054, i#16009}((Fnn : Fnn <: lanetype), `%`_dim{i#16016}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#2078, dim#2078, i#16067}((Fnn : Fnn <: lanetype), `%`_dim{i#16074}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2078, dim#2078, i#16067}((Fnn : Fnn <: lanetype), `%`_dim{i#16074}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#2078, dim#2078, i#16067}((Fnn : Fnn <: lanetype), `%`_dim{i#16074}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2078, dim#2078, i#16067}((Fnn : Fnn <: lanetype), `%`_dim{i#16074}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#2102, dim#2102, i#16125}((Fnn : Fnn <: lanetype), `%`_dim{i#16132}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2102, dim#2102, i#16125}((Fnn : Fnn <: lanetype), `%`_dim{i#16132}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#2102, dim#2102, i#16125}((Fnn : Fnn <: lanetype), `%`_dim{i#16132}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2102, dim#2102, i#16125}((Fnn : Fnn <: lanetype), `%`_dim{i#16132}(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] lane_((Fnn : Fnn <: lanetype))** lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))** +[] lane_((Fnn : Fnn <: lanetype))* lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* [] lane_((Fnn : Fnn <: lanetype))** lane_((Fnn : Fnn <: lanetype))** [] lane_((Fnn : Fnn <: lanetype))* lane_((Fnn : Fnn <: lanetype))* [] lane_((Fnn : Fnn <: lanetype))** lane_((Fnn : Fnn <: lanetype))** [] lane_((Fnn : Fnn <: lanetype))* lane_((Fnn : Fnn <: lanetype))* -[] lane_($lanetype(`%X%`_shape{lanetype#2054, dim#2054, i#16009}((Fnn : Fnn <: lanetype), `%`_dim{i#16016}(M))))* fN($sizenn((Fnn : Fnn <: numtype)))* -[] lane_($lanetype(`%X%`_shape{lanetype#2078, dim#2078, i#16067}((Fnn : Fnn <: lanetype), `%`_dim{i#16074}(M))))* fN($sizenn((Fnn : Fnn <: numtype)))* -[] lane_($lanetype(`%X%`_shape{lanetype#2102, dim#2102, i#16125}((Fnn : Fnn <: lanetype), `%`_dim{i#16132}(M))))* fN($sizenn((Fnn : Fnn <: numtype)))* -[] iN($lsizenn((Jnn : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape{lanetype#2222, dim#2222, i#16597}((Jnn : Jnn <: lanetype), `%`_dim{i#16604}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#2170, dim#2170, i#16314}((Jnn : Jnn <: lanetype), `%`_dim{i#16321}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2170, dim#2170, i#16314}((Jnn : Jnn <: lanetype), `%`_dim{i#16321}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#2170, dim#2170, i#16314}((Jnn : Jnn <: lanetype), `%`_dim{i#16321}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2170, dim#2170, i#16314}((Jnn : Jnn <: lanetype), `%`_dim{i#16321}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#2195, dim#2195, i#16400}((Jnn : Jnn <: lanetype), `%`_dim{i#16407}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2195, dim#2195, i#16400}((Jnn : Jnn <: lanetype), `%`_dim{i#16407}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#2195, dim#2195, i#16400}((Jnn : Jnn <: lanetype), `%`_dim{i#16407}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2195, dim#2195, i#16400}((Jnn : Jnn <: lanetype), `%`_dim{i#16407}(M))))* +[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* fN($sizenn((Fnn : Fnn <: numtype)))* +[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* fN($sizenn((Fnn : Fnn <: numtype)))* +[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* fN($sizenn((Fnn : Fnn <: numtype)))* +[] iN($lsizenn((Jnn : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* [] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* [] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape{lanetype#2170, dim#2170, i#16314}((Jnn : Jnn <: lanetype), `%`_dim{i#16321}(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape{lanetype#2195, dim#2195, i#16400}((Jnn : Jnn <: lanetype), `%`_dim{i#16407}(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] nat* nat* -[] nat* nat* -[] iN($lsizenn((Jnn : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape{lanetype#2310, dim#2310, i#16989}((Jnn : Jnn <: lanetype), `%`_dim{i#16996}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#2258, dim#2258, i#16706}((Jnn : Jnn <: lanetype), `%`_dim{i#16713}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2258, dim#2258, i#16706}((Jnn : Jnn <: lanetype), `%`_dim{i#16713}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#2258, dim#2258, i#16706}((Jnn : Jnn <: lanetype), `%`_dim{i#16713}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2258, dim#2258, i#16706}((Jnn : Jnn <: lanetype), `%`_dim{i#16713}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#2283, dim#2283, i#16792}((Jnn : Jnn <: lanetype), `%`_dim{i#16799}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2283, dim#2283, i#16792}((Jnn : Jnn <: lanetype), `%`_dim{i#16799}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#2283, dim#2283, i#16792}((Jnn : Jnn <: lanetype), `%`_dim{i#16799}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2283, dim#2283, i#16792}((Jnn : Jnn <: lanetype), `%`_dim{i#16799}(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] iN($lsizenn((Jnn : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* [] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* [] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape{lanetype#2258, dim#2258, i#16706}((Jnn : Jnn <: lanetype), `%`_dim{i#16713}(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape{lanetype#2283, dim#2283, i#16792}((Jnn : Jnn <: lanetype), `%`_dim{i#16799}(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] nat* nat* -[] nat* nat* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* [] iN($sizenn((Fnn : Fnn <: numtype)))* iN($sizenn((Fnn : Fnn <: numtype)))* -[] nat* nat* -[] nat* nat* -[] lane_($lanetype(`%X%`_shape{lanetype#2346, dim#2346, i#17098}((Fnn : Fnn <: lanetype), `%`_dim{i#17105}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2346, dim#2346, i#17098}((Fnn : Fnn <: lanetype), `%`_dim{i#17105}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#2346, dim#2346, i#17098}((Fnn : Fnn <: lanetype), `%`_dim{i#17105}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2346, dim#2346, i#17098}((Fnn : Fnn <: lanetype), `%`_dim{i#17105}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#2370, dim#2370, i#17156}((Fnn : Fnn <: lanetype), `%`_dim{i#17163}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2370, dim#2370, i#17156}((Fnn : Fnn <: lanetype), `%`_dim{i#17163}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#2370, dim#2370, i#17156}((Fnn : Fnn <: lanetype), `%`_dim{i#17163}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2370, dim#2370, i#17156}((Fnn : Fnn <: lanetype), `%`_dim{i#17163}(M))))* +[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* [] iN($sizenn((Fnn : Fnn <: numtype)))* iN($sizenn((Fnn : Fnn <: numtype)))* [] iN($sizenn((Fnn : Fnn <: numtype)))* iN($sizenn((Fnn : Fnn <: numtype)))* -[] lane_($lanetype(`%X%`_shape{lanetype#2346, dim#2346, i#17098}((Fnn : Fnn <: lanetype), `%`_dim{i#17105}(M))))* fN($sizenn((Fnn : Fnn <: numtype)))* -[] lane_($lanetype(`%X%`_shape{lanetype#2370, dim#2370, i#17156}((Fnn : Fnn <: lanetype), `%`_dim{i#17163}(M))))* fN($sizenn((Fnn : Fnn <: numtype)))* -[] nat* nat* -[] nat* nat* -[] iN($lsizenn((Jnn : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape{lanetype#2459, dim#2459, i#17593}((Jnn : Jnn <: lanetype), `%`_dim{i#17600}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#2433, dim#2433, i#17447}((Jnn : Jnn <: lanetype), `%`_dim{i#17454}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2433, dim#2433, i#17447}((Jnn : Jnn <: lanetype), `%`_dim{i#17454}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#2433, dim#2433, i#17447}((Jnn : Jnn <: lanetype), `%`_dim{i#17454}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2433, dim#2433, i#17447}((Jnn : Jnn <: lanetype), `%`_dim{i#17454}(M))))* +[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* fN($sizenn((Fnn : Fnn <: numtype)))* +[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* fN($sizenn((Fnn : Fnn <: numtype)))* +[] iN($lsizenn((Jnn : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* [] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* [] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape{lanetype#2433, dim#2433, i#17447}((Jnn : Jnn <: lanetype), `%`_dim{i#17454}(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] iN($lsizenn((Jnn : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape{lanetype#2521, dim#2521, i#17848}((Jnn : Jnn <: lanetype), `%`_dim{i#17855}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#2495, dim#2495, i#17702}((Jnn : Jnn <: lanetype), `%`_dim{i#17709}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2495, dim#2495, i#17702}((Jnn : Jnn <: lanetype), `%`_dim{i#17709}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#2495, dim#2495, i#17702}((Jnn : Jnn <: lanetype), `%`_dim{i#17709}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2495, dim#2495, i#17702}((Jnn : Jnn <: lanetype), `%`_dim{i#17709}(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] iN($lsizenn((Jnn : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* [] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* [] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape{lanetype#2495, dim#2495, i#17702}((Jnn : Jnn <: lanetype), `%`_dim{i#17709}(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape{lanetype#2557, dim#2557, i#17945}((Jnn : Jnn <: lanetype), `%`_dim{i#17952}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2557, dim#2557, i#17945}((Jnn : Jnn <: lanetype), `%`_dim{i#17952}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#2557, dim#2557, i#17945}((Jnn : Jnn <: lanetype), `%`_dim{i#17952}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2557, dim#2557, i#17945}((Jnn : Jnn <: lanetype), `%`_dim{i#17952}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#2557, dim#2557, i#17945}((Jnn : Jnn <: lanetype), `%`_dim{i#17952}(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] nat* nat* -[] nat* nat* -[] nat* nat* -[] nat* nat^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat) -[] iN($lsizenn((Jnn : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape{lanetype#2648, dim#2648, i#18585}((Jnn : Jnn <: lanetype), `%`_dim{i#18592}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#2596, dim#2596, i#18335}((Jnn : Jnn <: lanetype), `%`_dim{i#18342}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2596, dim#2596, i#18335}((Jnn : Jnn <: lanetype), `%`_dim{i#18342}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#2596, dim#2596, i#18335}((Jnn : Jnn <: lanetype), `%`_dim{i#18342}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2596, dim#2596, i#18335}((Jnn : Jnn <: lanetype), `%`_dim{i#18342}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#2621, dim#2621, i#18421}((Jnn : Jnn <: lanetype), `%`_dim{i#18428}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2621, dim#2621, i#18421}((Jnn : Jnn <: lanetype), `%`_dim{i#18428}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#2621, dim#2621, i#18421}((Jnn : Jnn <: lanetype), `%`_dim{i#18428}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2621, dim#2621, i#18421}((Jnn : Jnn <: lanetype), `%`_dim{i#18428}(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] iN($lsizenn((Jnn : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* [] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* [] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape{lanetype#2621, dim#2621, i#18421}((Jnn : Jnn <: lanetype), `%`_dim{i#18428}(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape{lanetype#2596, dim#2596, i#18335}((Jnn : Jnn <: lanetype), `%`_dim{i#18342}(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* [] laneidx* laneidx* -[] lane_($lanetype(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2760, dim#2760, i#19037}((Jnn : Jnn <: lanetype), `%`_dim{i#19044}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#2709, dim#2709, i#18805}((Jnn : Jnn <: lanetype), `%`_dim{i#18812}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2709, dim#2709, i#18805}((Jnn : Jnn <: lanetype), `%`_dim{i#18812}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#2709, dim#2709, i#18805}((Jnn : Jnn <: lanetype), `%`_dim{i#18812}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2709, dim#2709, i#18805}((Jnn : Jnn <: lanetype), `%`_dim{i#18812}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* [] laneidx* laneidx* -[] nat* nat* -[] lane_($lanetype(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#2709, dim#2709, i#18805}((Jnn : Jnn <: lanetype), `%`_dim{i#18812}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#2709, dim#2709, i#18805}((Jnn : Jnn <: lanetype), `%`_dim{i#18812}(M))))* lane_($lanetype(`%X%`_shape{lanetype#2684, dim#2684, i#18719}((Jnn : Jnn <: lanetype), `%`_dim{i#18726}(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* [] half? half? [] zero? zero? -[] iN($lsizenn2((Inn_2 : Inn <: lanetype)))? lane_($lanetype(`%X%`_shape{lanetype#5285, dim#5285, i#26220}((Inn_2 : Inn <: lanetype), `%`_dim{i#26227}(M_2))))? +[] iN($lsizenn2((Inn_2 : Inn <: lanetype)))? lane_($lanetype(`%X%`_shape((Inn_2 : Inn <: lanetype), `%`_dim(M_2))))? [] iN($lsizenn2((Inn_2 : Inn <: lanetype)))? iN($lsizenn2((Inn_2 : Inn <: lanetype)))? [] iN($lsizenn2((Inn_2 : Inn <: lanetype)))? iN($lsizenn2((Inn_2 : Inn <: lanetype)))? [] zero? zero? -[] iN($lsizenn2((Inn_2 : Inn <: lanetype)))? lane_($lanetype(`%X%`_shape{lanetype#5373, dim#5373, i#26396}((Inn_2 : Inn <: lanetype), `%`_dim{i#26403}(M_2))))? +[] iN($lsizenn2((Inn_2 : Inn <: lanetype)))? lane_($lanetype(`%X%`_shape((Inn_2 : Inn <: lanetype), `%`_dim(M_2))))? [] iN($lsizenn2((Inn_2 : Inn <: lanetype)))? iN($lsizenn2((Inn_2 : Inn <: lanetype)))? [] iN($lsizenn2((Inn_2 : Inn <: lanetype)))? iN($lsizenn2((Inn_2 : Inn <: lanetype)))? -[] fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))* lane_($lanetype(`%X%`_shape{lanetype#5461, dim#5461, i#26572}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#26579}(M_2))))* +[] fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))* lane_($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))))* [] fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))* fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))* [] fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))* fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))* -[] fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))* lane_($lanetype(`%X%`_shape{lanetype#5548, dim#5548, i#26695}((Fnn_2 : Fnn <: lanetype), `%`_dim{i#26702}(M_2))))* +[] fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))* lane_($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))))* [] fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))* fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))* [] fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))* fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape{lanetype#5751, dim#5751, i#26946}(Lnn_1, `%`_dim{i#26953}(M))))* lane_($lanetype(`%X%`_shape{lanetype#5751, dim#5751, i#26946}(Lnn_1, `%`_dim{i#26953}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#5751, dim#5751, i#26946}(Lnn_1, `%`_dim{i#26953}(M))))* lane_($lanetype(`%X%`_shape{lanetype#5751, dim#5751, i#26946}(Lnn_1, `%`_dim{i#26953}(M))))* +[] lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))))* lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))))* lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))))* [] lane_(Lnn_2)** lane_(Lnn_2)** [] lane_(Lnn_2)* lane_(Lnn_2)* [] lane_(Lnn_2)** lane_(Lnn_2)** [] lane_(Lnn_2)* lane_(Lnn_2)* -[] lane_($lanetype(`%X%`_shape{lanetype#5751, dim#5751, i#26946}(Lnn_1, `%`_dim{i#26953}(M))))* lane_($lanetype(`%X%`_shape{lanetype#5867, dim#5867, i#27120}(Lnn_1, `%`_dim{i#27127}(M))))* -[] dim* dim* -[] dim* dim* -[] nat* nat* -[] nat* nat* -[] nat* nat* -[] nat* nat* -[] lanetype* lanetype* -[] lanetype* lanetype* -[] lane_(Lnn_2)** lane_($lanetype(`%X%`_shape{lanetype#5914, dim#5914, i#27181}(Lnn_2, `%`_dim{i#27188}(M))))** -[] dim* dim* -[] nat* nat* -[] nat* nat* -[] lanetype* lanetype* -[] lane_(Lnn_2)* lane_($lanetype(`%X%`_shape{lanetype#5914, dim#5914, i#27181}(Lnn_2, `%`_dim{i#27188}(M))))* -[] lane_(Lnn_2)** lane_($lanetype(`%X%`_shape{lanetype#5914, dim#5914, i#27181}(Lnn_2, `%`_dim{i#27188}(M))))** -[] dim* dim* -[] nat* nat* -[] nat* nat* -[] lanetype* lanetype* -[] lane_(Lnn_2)* lane_($lanetype(`%X%`_shape{lanetype#5914, dim#5914, i#27181}(Lnn_2, `%`_dim{i#27188}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#6065, dim#6065, i#27388}(Lnn_1, `%`_dim{i#27395}(M_1))))* lane_($lanetype(`%X%`_shape{lanetype#6065, dim#6065, i#27388}(Lnn_1, `%`_dim{i#27395}(M_1))))* -[] lane_($lanetype(`%X%`_shape{lanetype#6065, dim#6065, i#27388}(Lnn_1, `%`_dim{i#27395}(M_1))))* lane_($lanetype(`%X%`_shape{lanetype#6065, dim#6065, i#27388}(Lnn_1, `%`_dim{i#27395}(M_1))))* +[] lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))))* lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))))* +[] lane_(Lnn_2)** lane_($lanetype(`%X%`_shape(Lnn_2, `%`_dim(M))))** +[] lane_(Lnn_2)* lane_($lanetype(`%X%`_shape(Lnn_2, `%`_dim(M))))* +[] lane_(Lnn_2)** lane_($lanetype(`%X%`_shape(Lnn_2, `%`_dim(M))))** +[] lane_(Lnn_2)* lane_($lanetype(`%X%`_shape(Lnn_2, `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))))* lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))))* +[] lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))))* lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))))* [] lane_(Lnn_2)** lane_(Lnn_2)** [] lane_(Lnn_2)* lane_(Lnn_2)* [] lane_(Lnn_2)** lane_(Lnn_2)** [] lane_(Lnn_2)* lane_(Lnn_2)* -[] lane_($lanetype(`%X%`_shape{lanetype#6065, dim#6065, i#27388}(Lnn_1, `%`_dim{i#27395}(M_1))))* lane_($lanetype(`%X%`_shape{lanetype#6181, dim#6181, i#27562}(Lnn_1, `%`_dim{i#27569}(M_1))))* -[] dim* dim* -[] dim* dim* -[] nat* nat* -[] nat* nat* -[] nat* nat* -[] nat* nat* -[] lanetype* lanetype* -[] lanetype* lanetype* -[] lane_(Lnn_2)** lane_($lanetype(`%X%`_shape{lanetype#6228, dim#6228, i#27623}(Lnn_2, `%`_dim{i#27630}(M_2))))** -[] dim* dim* -[] nat* nat* -[] nat* nat* -[] lanetype* lanetype* -[] lane_(Lnn_2)* lane_($lanetype(`%X%`_shape{lanetype#6228, dim#6228, i#27623}(Lnn_2, `%`_dim{i#27630}(M_2))))* -[] lane_(Lnn_2)** lane_($lanetype(`%X%`_shape{lanetype#6228, dim#6228, i#27623}(Lnn_2, `%`_dim{i#27630}(M_2))))** -[] dim* dim* -[] nat* nat* -[] nat* nat* -[] lanetype* lanetype* -[] lane_(Lnn_2)* lane_($lanetype(`%X%`_shape{lanetype#6228, dim#6228, i#27623}(Lnn_2, `%`_dim{i#27630}(M_2))))* -[] lane_($lanetype(`%X%`_shape{lanetype#6339, dim#6339, i#27790}(Lnn_1, `%`_dim{i#27797}(M_1))))* lane_($lanetype(`%X%`_shape{lanetype#6339, dim#6339, i#27790}(Lnn_1, `%`_dim{i#27797}(M_1))))* -[] lane_($lanetype(`%X%`_shape{lanetype#6339, dim#6339, i#27790}(Lnn_1, `%`_dim{i#27797}(M_1))))* lane_($lanetype(`%X%`_shape{lanetype#6339, dim#6339, i#27790}(Lnn_1, `%`_dim{i#27797}(M_1))))* +[] lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))))* lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))))* +[] lane_(Lnn_2)** lane_($lanetype(`%X%`_shape(Lnn_2, `%`_dim(M_2))))** +[] lane_(Lnn_2)* lane_($lanetype(`%X%`_shape(Lnn_2, `%`_dim(M_2))))* +[] lane_(Lnn_2)** lane_($lanetype(`%X%`_shape(Lnn_2, `%`_dim(M_2))))** +[] lane_(Lnn_2)* lane_($lanetype(`%X%`_shape(Lnn_2, `%`_dim(M_2))))* +[] lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))))* lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))))* +[] lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))))* lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))))* [] lane_(Lnn_2)** lane_(Lnn_2)** [] lane_(Lnn_2)* lane_(Lnn_2)* [] lane_(Lnn_2)** lane_(Lnn_2)** [] lane_(Lnn_2)* lane_(Lnn_2)* -[] lane_($lanetype(`%X%`_shape{lanetype#6339, dim#6339, i#27790}(Lnn_1, `%`_dim{i#27797}(M_1))))* lane_($lanetype(`%X%`_shape{lanetype#6501, dim#6501, i#28022}(Lnn_1, `%`_dim{i#28029}(M_1))))* -[] dim* dim* -[] dim* dim* -[] nat* nat* -[] nat* nat* -[] nat* nat* -[] nat* nat* -[] lanetype* lanetype* -[] lanetype* lanetype* -[] lane_(Lnn_2)** lane_($lanetype(`%X%`_shape{lanetype#6548, dim#6548, i#28083}(Lnn_2, `%`_dim{i#28090}(M_2))))** -[] dim* dim* -[] nat* nat* -[] nat* nat* -[] lanetype* lanetype* -[] lane_(Lnn_2)* lane_($lanetype(`%X%`_shape{lanetype#6548, dim#6548, i#28083}(Lnn_2, `%`_dim{i#28090}(M_2))))* -[] lane_(Lnn_2)** lane_($lanetype(`%X%`_shape{lanetype#6548, dim#6548, i#28083}(Lnn_2, `%`_dim{i#28090}(M_2))))** -[] dim* dim* -[] nat* nat* -[] nat* nat* -[] lanetype* lanetype* -[] lane_(Lnn_2)* lane_($lanetype(`%X%`_shape{lanetype#6548, dim#6548, i#28083}(Lnn_2, `%`_dim{i#28090}(M_2))))* +[] lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))))* lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))))* +[] lane_(Lnn_2)** lane_($lanetype(`%X%`_shape(Lnn_2, `%`_dim(M_2))))** +[] lane_(Lnn_2)* lane_($lanetype(`%X%`_shape(Lnn_2, `%`_dim(M_2))))* +[] lane_(Lnn_2)** lane_($lanetype(`%X%`_shape(Lnn_2, `%`_dim(M_2))))** +[] lane_(Lnn_2)* lane_($lanetype(`%X%`_shape(Lnn_2, `%`_dim(M_2))))* [] laneidx* laneidx* [] laneidx* laneidx* -[] lane_($lanetype(`%X%`_shape{lanetype#6595, dim#6595, i#28198}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28205}(M_1))))* lane_($lanetype(`%X%`_shape{lanetype#6595, dim#6595, i#28198}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28205}(M_1))))* -[] lane_($lanetype(`%X%`_shape{lanetype#6595, dim#6595, i#28198}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28205}(M_1))))* lane_($lanetype(`%X%`_shape{lanetype#6595, dim#6595, i#28198}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28205}(M_1))))* -[] lane_($lanetype(`%X%`_shape{lanetype#6620, dim#6620, i#28284}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28291}(M_1))))* lane_($lanetype(`%X%`_shape{lanetype#6620, dim#6620, i#28284}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28291}(M_1))))* -[] lane_($lanetype(`%X%`_shape{lanetype#6620, dim#6620, i#28284}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28291}(M_1))))* lane_($lanetype(`%X%`_shape{lanetype#6620, dim#6620, i#28284}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28291}(M_1))))* +[] lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* +[] lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* +[] lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* +[] lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* [] iN($lsize((Jnn_2 : Jnn <: lanetype)))* iN($lsize((Jnn_2 : Jnn <: lanetype)))* [] iN($lsize((Jnn_2 : Jnn <: lanetype)))* iN($lsize((Jnn_2 : Jnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape{lanetype#6595, dim#6595, i#28198}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28205}(M_1))))* iN($lsize((Jnn_1 : Jnn <: lanetype)))* +[] lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* iN($lsize((Jnn_1 : Jnn <: lanetype)))* [] iN($lsize((Jnn_2 : Jnn <: lanetype)))* iN($lsize((Jnn_2 : Jnn <: lanetype)))* [] iN($lsize((Jnn_2 : Jnn <: lanetype)))* iN($lsize((Jnn_2 : Jnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape{lanetype#6620, dim#6620, i#28284}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28291}(M_1))))* iN($lsize((Jnn_1 : Jnn <: lanetype)))* -[] iN($lsize((Jnn_2 : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape{lanetype#6647, dim#6647, i#28450}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28457}(M_2))))* -[] iN($lsize((Jnn_2 : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape{lanetype#6647, dim#6647, i#28450}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28457}(M_2))))* +[] lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* iN($lsize((Jnn_1 : Jnn <: lanetype)))* +[] iN($lsize((Jnn_2 : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))))* +[] iN($lsize((Jnn_2 : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))))* [] iN(N)* iN(N)* -[] nat* nat* -[] nat* nat* [] N* nat* [] N* nat* [] N* N* @@ -124187,13 +99268,12 @@ grammar Tabbrev : () [] N* N* [] N* N* [] iN(N)* iN(N)* -[] nat* nat* -[] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape{lanetype#6740, dim#6740, i#28862}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#28869}(M_2))))* -[] lane_($lanetype(`%X%`_shape{lanetype#6714, dim#6714, i#28678}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28685}(M_1))))* lane_($lanetype(`%X%`_shape{lanetype#6714, dim#6714, i#28678}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28685}(M_1))))* -[] lane_($lanetype(`%X%`_shape{lanetype#6714, dim#6714, i#28678}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28685}(M_1))))* lane_($lanetype(`%X%`_shape{lanetype#6714, dim#6714, i#28678}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28685}(M_1))))* +[] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))))* +[] lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* +[] lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* [] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* [] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape{lanetype#6714, dim#6714, i#28678}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#28685}(M_1))))* iN($lsizenn1((Jnn_1 : Jnn <: lanetype)))* +[] lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* iN($lsizenn1((Jnn_1 : Jnn <: lanetype)))* [] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* [] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* [] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* @@ -124217,17 +99297,17 @@ grammar Tabbrev : () [] iN(N)* iN(N)* [] iN(N)* iN(N)* [] iN(N)* iN(N)* -[] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape{lanetype#6840, dim#6840, i#29380}((Jnn_2 : Jnn <: lanetype), `%`_dim{i#29387}(M_2))))* -[] lane_($lanetype(`%X%`_shape{lanetype#6788, dim#6788, i#29007}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29014}(M_1))))* lane_($lanetype(`%X%`_shape{lanetype#6788, dim#6788, i#29007}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29014}(M_1))))* -[] lane_($lanetype(`%X%`_shape{lanetype#6788, dim#6788, i#29007}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29014}(M_1))))* lane_($lanetype(`%X%`_shape{lanetype#6788, dim#6788, i#29007}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29014}(M_1))))* -[] lane_($lanetype(`%X%`_shape{lanetype#6813, dim#6813, i#29113}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29120}(M_1))))* lane_($lanetype(`%X%`_shape{lanetype#6813, dim#6813, i#29113}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29120}(M_1))))* -[] lane_($lanetype(`%X%`_shape{lanetype#6813, dim#6813, i#29113}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29120}(M_1))))* lane_($lanetype(`%X%`_shape{lanetype#6813, dim#6813, i#29113}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29120}(M_1))))* +[] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))))* +[] lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* +[] lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* +[] lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* +[] lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* [] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* [] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape{lanetype#6788, dim#6788, i#29007}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29014}(M_1))))* iN($lsizenn1((Jnn_1 : Jnn <: lanetype)))* +[] lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* iN($lsizenn1((Jnn_1 : Jnn <: lanetype)))* [] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* [] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape{lanetype#6813, dim#6813, i#29113}((Jnn_1 : Jnn <: lanetype), `%`_dim{i#29120}(M_1))))* iN($lsizenn1((Jnn_1 : Jnn <: lanetype)))* +[] lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* iN($lsizenn1((Jnn_1 : Jnn <: lanetype)))* [] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* [] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* [] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* @@ -124274,18 +99354,13 @@ grammar Tabbrev : () [] ref* ref* [] ref* ref* [] ref* ref* -[] nat? nat? -[] nat? nat? [] u64? u64? [] u64? u64? [] byte* byte* [] u64? u64? [] byte* byte* -[] nat* nat^(n * (64 * $Ki)) [] byte* byte* [] byte* byte* -[] nat? nat? -[] nat? nat? [] u64? u64? [] deftype* deftype* [] deftype* deftype* @@ -124361,10 +99436,9 @@ grammar Tabbrev : () [] instr* instr* [] instr* instr* [] instr* instr* -[] lane_($lanetype(`%X%`_shape{lanetype#7537, dim#7537, i#45322}((Jnn : Jnn <: lanetype), `%`_dim{i#45329}(M))))* lane_($lanetype(`%X%`_shape{lanetype#7537, dim#7537, i#45322}((Jnn : Jnn <: lanetype), `%`_dim{i#45329}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#7537, dim#7537, i#45322}((Jnn : Jnn <: lanetype), `%`_dim{i#45329}(M))))* lane_($lanetype(`%X%`_shape{lanetype#7537, dim#7537, i#45322}((Jnn : Jnn <: lanetype), `%`_dim{i#45329}(M))))* -[] lane_($lanetype(`%X%`_shape{lanetype#7537, dim#7537, i#45322}((Jnn : Jnn <: lanetype), `%`_dim{i#45329}(M))))* iN($jsizenn(Jnn))* -[] nat* nat* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* +[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* iN($jsizenn(Jnn))* [] laneidx* laneidx* [] laneidx* laneidx* [] valtype* valtype* @@ -124391,7 +99465,6 @@ grammar Tabbrev : () [] valtype* valtype^n [] valtype* valtype^m [] valtype* valtype* -[] valtype* valtype* [] instr* instr* [] val* val^n [] valtype* valtype* @@ -124438,18 +99511,10 @@ grammar Tabbrev : () [] instr* instr* [] valtype* valtype^m [] valtype* valtype^n -[] byte** byte*^K -[] nat* nat^K -[] nat* nat^K [] iN(M)* iN(M)^K -[] u64* u64^K [] iN(M)* iN(M)^K -[] nat* nat^M -[] nat* nat^M [] val* val* [] mut?* mut?* -[] mut?* mut?* -[] storagetype* storagetype* [] storagetype* storagetype* [] mut? mut? [] val* val* @@ -124460,8 +99525,6 @@ grammar Tabbrev : () [] storagetype* storagetype* [] sx? sx? [] mut?* mut?* -[] mut?* mut?* -[] storagetype* storagetype* [] storagetype* storagetype* [] mut? mut? [] mut? mut? @@ -124535,8 +99598,6 @@ grammar Tabbrev : () [] byte* byte* [] val* val^n [] mut?* mut?^n -[] mut?* mut?^n -[] storagetype* storagetype^n [] storagetype* storagetype^n [] mut? mut? [] val* val^n @@ -124544,8 +99605,6 @@ grammar Tabbrev : () [] storagetype* storagetype* [] storagetype* storagetype* [] mut?* mut?* -[] mut?* mut?* -[] storagetype* storagetype* [] storagetype* storagetype* [] mut? mut? [] val* val^n @@ -124589,7 +99648,6 @@ grammar Tabbrev : () [] val* val* [] u64? u64? [] u64? u64? -[] nat* nat^(i!`%`_u64{i#46867}.0 * (64 * $Ki)) [] memtype* memtype* [] memaddr* memaddr* [] memaddr* memaddr* @@ -124660,47 +99718,33 @@ grammar Tabbrev : () [] tag* tag* [] tag* tag* [] tagtype* tagtype* -[] tagtype* tagtype* [] global* global* [] global* global* [] expr* expr* -[] expr* expr* -[] globaltype* globaltype* [] globaltype* globaltype* [] mem* mem* [] mem* mem* [] memtype* memtype* -[] memtype* memtype* [] table* table* [] table* table* [] expr* expr* -[] expr* expr* -[] tabletype* tabletype* [] tabletype* tabletype* [] func* func* [] func* func* [] expr* expr* -[] expr* expr* [] local** local** -[] local** local** -[] typeidx* typeidx* [] idx* typeidx* [] local* local* [] data* data* [] data* data* [] byte** byte** -[] byte** byte** -[] datamode* datamode* [] datamode* datamode* [] byte* byte* [] elem* elem* [] elem* elem* [] elemmode* elemmode* -[] elemmode* elemmode* [] elemtype* reftype* [] expr** expr** -[] expr** expr** -[] reftype* reftype* [] expr* expr* [] tagaddr* tagaddr* [] tagaddr* tagaddr* @@ -124724,7 +99768,6 @@ grammar Tabbrev : () [] nat* nat* [] func* func* [] func* func* -[] funcinst** funcinst*^|func*{}| [] tagaddr* tagaddr* [] tagaddr* tagaddr* [] tagtype* tagtype* @@ -124757,15 +99800,11 @@ grammar Tabbrev : () [] ref* ref* [] nat* funcaddr* [] nat* funcaddr* -[] nat* nat* [] idx* idx* [] deftype* deftype* [] deftype* deftype* [] expr* expr* -[] expr* expr* -[] local** local** [] local** local** -[] typeidx* typeidx* [] idx* typeidx* [] local* local* [] func* func* @@ -124835,41 +99874,30 @@ grammar Tabbrev : () [] global* global* [] global* global* [] expr* expr* -[] expr* expr* -[] globaltype* globaltype* [] globaltype* globaltype* [] table* table* [] table* table* [] expr* expr* -[] expr* expr* -[] tabletype* tabletype* [] tabletype* tabletype* [] data* data* [] data* data* [] byte** byte** -[] byte** byte** -[] datamode* datamode* [] datamode* datamode* [] byte* byte* [] elem* elem* [] elem* elem* [] elemmode* elemmode* -[] elemmode* elemmode* [] expr** expr** -[] expr** expr** -[] reftype* reftype* [] reftype* reftype* [] expr* expr* [] start? start? [] start? start? -[] funcidx? funcidx? [] idx? funcidx? [] type* type* [] externaddr* externaddr* [] externaddr* externaddr* [] func* func* [] func* func* -[] funcinst** funcinst*^|func*{}| [] val* val* [] val* val* [] globaltype* globaltype* @@ -124889,19 +99917,16 @@ grammar Tabbrev : () [] instr* instr* [] data* data* [] data* data* -[] nat* nat^|data*{}| [] data* data* [] data* data* [] instr* instr* [] instr* instr* [] elem* elem* [] elem* elem* -[] nat* nat^|elem*{}| [] elem* elem* [] elem* elem* [] instr? instr? [] instr? instr? -[] funcidx? funcidx? [] idx? funcidx? [] val* val* [] val* val* @@ -124926,10 +99951,8 @@ grammar Tabbrev : () [] valtype* valtype* [] valtype* valtype* [] idx* typeidx* -[] typeidx* typeidx* [] idx* typeidx* [] idx* typeidx* -[] typeidx* typeidx* [] idx* typeidx* [] subtype* subtype* [] subtype* subtype* @@ -124963,11 +99986,7 @@ grammar Tabbrev : () [] null? null? [] byte* byte^16 [] byte* byte^16 -[] nat* nat^16 -[] nat* nat^16 [] labelidx* labelidx^16 -[] nat* nat^16 -[] nat* nat^16 [] labelidx* labelidx^16 [] instr* instr* [] instr* instr* @@ -124988,16 +100007,12 @@ grammar Tabbrev : () [] export* export* [] export* export* [] idx* funcidx* -[] funcidx* funcidx* [] idx* funcidx* [] idx* funcidx* -[] funcidx* funcidx* [] idx* funcidx* [] idx* funcidx* -[] funcidx* funcidx* [] idx* funcidx* [] idx* funcidx* -[] funcidx* funcidx* [] idx* funcidx* [] expr* expr* [] expr* expr* @@ -125009,7 +100024,6 @@ grammar Tabbrev : () [] expr* expr* [] elem* elem* [] elem* elem* -[] valtype* valtype^n [] local** local** [] local* local* [] local** local** @@ -125040,7 +100054,6 @@ grammar Tabbrev : () [] export* export* [] start? start? [] elem* elem* -[] nat? nat? [] n? nat? [] expr* expr* [] local** local** @@ -125065,11 +100078,8 @@ grammar Tabbrev : () [] func* func* [] func* func* [] expr* expr* -[] expr* expr* [] func* func* [] local** local** -[] local** local** -[] typeidx* typeidx* [] typeidx* typeidx* [] local* local* [] byte** byte** @@ -125098,12 +100108,9 @@ grammar Tabbrev : () [] I* idctxt* [] I* idctxt* [] char** char** -[] char** char** [] char* char* [] char** char** [] char** char** -[] char** char** -[] char** char** [] char* char* [] null? null? [] null? null? @@ -125111,15 +100118,12 @@ grammar Tabbrev : () [] char? char? [] char? char? [] char? char? -[] char** char** [] fieldtype* fieldtype* [] char?* char?* [] char? char? [] fieldtype* fieldtype* -[] char** char** [] char?* char?* [] char? char? -[] char** char** [] char?* char?* [] valtype* valtype* [] char? char? @@ -125129,7 +100133,6 @@ grammar Tabbrev : () [] final? final? [] idx* typeidx* [] final? final? -[] typeidx* typeidx* [] idx* typeidx* [] char? char? [] char? char? @@ -125145,8 +100148,6 @@ grammar Tabbrev : () [] valtype* valtype* [] valtype* valtype* [] valtype* valtype* -[] char** char*^|t_1*{}| -[] char** char** [] char?* char?* [] valtype* valtype* [] char? char? @@ -125157,7 +100158,6 @@ grammar Tabbrev : () [] subtype* subtype* [] valtype* valtype* [] valtype* valtype* -[] char** char** [] char?* char?* [] char? char? [] char? char? @@ -125172,15 +100172,12 @@ grammar Tabbrev : () [] char? char? [] valtype? valtype? [] valtype? valtype? -[] char** char** [] valtype*? valtype*? [] valtype* valtype* [] valtype*? valtype*? [] valtype* valtype* [] labelidx* labelidx* [] labelidx* labelidx* -[] char** char** -[] char** char** [] u8* u8* [] u8* iN(8)* [] u16* u16* @@ -125250,8 +100247,6 @@ grammar Tabbrev : () [] instr* instr* [] instr* instr* [] subtype* subtype^n -[] n* n^n -[] rectype* rectype^n [] char? char? [] char? char? [] char? char? From 4de78cb5d2aec45a5414cc84f1fb595c2fd91b28 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Tue, 20 Jan 2026 14:04:44 +0100 Subject: [PATCH 017/235] Cleanup --- spectec/src/frontend/det.ml | 6 +- spectec/src/frontend/dim.ml | 12 +- spectec/src/frontend/elab.ml | 585 +- spectec/src/frontend/eval.ml | 5 - spectec/src/il/debug.ml | 1 + spectec/src/il/free.mli | 1 + spectec/src/il/print.ml | 28 +- spectec/src/il/print.mli | 1 + spectec/src/il/subst.ml | 10 +- spectec/src/il/valid.ml | 21 +- spectec/test-frontend/TEST.md | 94919 +------------------------------- 11 files changed, 2985 insertions(+), 92604 deletions(-) diff --git a/spectec/src/frontend/det.ml b/spectec/src/frontend/det.ml index 509cee111..c48903e05 100644 --- a/spectec/src/frontend/det.ml +++ b/spectec/src/frontend/det.ml @@ -13,7 +13,7 @@ let det_list_dep = free_list_dep let rec det_iter iter = match iter with | Opt | List | List1 -> empty - | ListN (e, x_opt) -> det_exp e ++ free_opt bound_varid x_opt + | ListN (e, _xo) -> det_exp e (* Types *) @@ -64,7 +64,7 @@ and det_exp e = and det_expfield (_, e) = det_exp e and det_iterexp s1 (it, xes) = - s1 -- free_list bound_varid (List.map fst xes) ++ + s1 -- bound_iter it -- free_list bound_varid (List.map fst xes) ++ det_iter it ++ det_list det_exp (List.filter_map (fun (x, e) -> if Set.mem x.it s1.varid then Some e else None) xes) @@ -143,7 +143,7 @@ and det_quant_expfield (_, e) = det_quant_exp e and det_quant_iterexp s1 (it, xes) = - s1 -- free_list bound_varid (List.map fst xes) ++ + s1 -- bound_iter it -- free_list bound_varid (List.map fst xes) ++ det_quant_iter it ++ det_list det_exp (List.filter_map (fun (x, e) -> if Set.mem x.it s1.varid then Some e else None) xes) diff --git a/spectec/src/frontend/dim.ml b/spectec/src/frontend/dim.ml index ff031e534..039eb0941 100644 --- a/spectec/src/frontend/dim.ml +++ b/spectec/src/frontend/dim.ml @@ -79,7 +79,6 @@ let check_ctxs id ctxs : region * ctx = at, ctx let check_dims (dims : rdims ref) : dims = -Printf.printf "[check_dims] %s\n%!" (Debug.domain !dims); Map.mapi check_ctxs !dims @@ -96,12 +95,7 @@ let check_varid dims ctx mode id = dims := Map.add_to_list id.it (id.at, ctx, mode) !dims let uncheck_varid dims id = - let ctxs' = List.tl (Map.find id.it !dims) in - dims := - if ctxs' = [] then - Map.remove id.it !dims - else - Map.add id.it ctxs' !dims + dims := Map.remove id.it !dims let rec check_iter dims ctx it = match it with @@ -112,6 +106,10 @@ let rec check_iter dims ctx it = and check_iterexp : 'a. _ -> _ -> (_ -> _ -> 'a -> unit) -> 'a -> _ -> unit = fun dims ctx f body (it, xes) -> + Debug.(log "il.check_iterexp" + (fun _ -> fmt "%s |- %s" (domain !dims) (il_iterexp (it, xes))) + (fun _ -> domain !dims) + ) @@ fun _ -> check_iter dims ctx it; List.iter (fun (x, e) -> check_varid dims [] `Expl x; check_exp dims ctx e) xes; (* Only check body if iteration isn't annotated already. diff --git a/spectec/src/frontend/elab.ml b/spectec/src/frontend/elab.ml index dea6feaaf..eeba3f436 100644 --- a/spectec/src/frontend/elab.ml +++ b/spectec/src/frontend/elab.ml @@ -59,132 +59,6 @@ let tup_typ' ts' at = | [t'] -> t' | _ -> Il.TupT (List.map (fun t' -> "_" $ t'.at, t') ts') $ at -(* -let tup_typ_bind' xts' at = -(* - in - let expify' t = function - | Some e -> e - | None -> Il.VarE ("_" $ t.at) $$ t.at % t - in - let rec pat'_of_typ' s t : Il.exp option = - let (let* ) = Option.bind in - let module Il = Il.Ast in - match t.it with - | Il.VarT (id, _args) -> - if Set.mem id.it !s then None else - ( - (* Suppress duplicates. *) - s := Set.add id.it !s; - Some (Il.VarE id $$ t.at % t) - ) - | Il.BoolT | Il.NumT _ | Il.TextT -> - let id = varid_of_typ' t in - if Set.mem id.it !s then None else - ( - (* Suppress duplicates. *) - s := Set.add id.it !s; - Some (Il.VarE id $$ t.at % t) - ) - | Il.TupT xts -> - let* es = pats'_of_typs' s (List.map snd xts) in - Some (Il.TupE es $$ t.at % t) - | Il.IterT (t1, iter) -> - let* e1 = pat'_of_typ' s t1 in - Some (Il.IterE (e1, (iter, [])) $$ t.at % t) - - and pats'_of_typs' s ts : Il.exp list option = - let eos = List.map (pat'_of_typ' s) ts in - if List.for_all ((=) None) eos then None else - Some (List.map2 expify' ts eos) - - and pats'_of_typs ts = - List.map2 expify' ts (List.map (pat'_of_typ' (ref Set.empty)) ts) - in - (* Translate a pattern into suitable path expressions on a variable *) - let rec decompose e' p' s = - match e'.it with - | Il.VarE x -> Il.Subst.add_varid s x p' - | Il.TupE es' -> - List.fold_left (fun (s', i) eI' -> - decompose eI' (Il.ProjE (p', i) $$ eI'.at % eI'.note) s', i + 1 - ) (s, 0) es' |> fst - | Il.IterE _ -> - (match decompose_iter e' with - | Some (x, ctx) -> - | None -> s - ) - | _ -> assert false - and decompose_iter e' ctx = - match e'.it with - | Il.VarE x -> Some (x, ctx) - | Il.IterE (e1', Il.(Opt | List) as iter) -> decompose_iter e1' (iter::ctx) - | _ -> None - and combine es' ts' s = - match es', ts' with - | [], [] -> [] - | e'::es', t'::ts' -> - let x', s' = - match e'.it with - | Il.VarE x -> x, s - | _ -> - let x' = Il.Fresh.fresh_varid "pat" $ e'.at in - let s' = decompose e' (Il.VarE x' $$ e'.at % e'.note) Il.Subst.empty in - if s' = Il.Subst.empty then - "_" $ e'.at, s - else - x', Il.Subst.union s s' - in - let xts'' = combine es' ts' s' in - (x', Il.Subst.subst_typ s t')::xts'' - | _, _ -> assert false -*) - let rec decompose t' p' s = - match t'.it with - | Il.VarT (x, []) -> Il.Subst.add_varid s x p' - | Il.TupT xts' -> - List.fold_left (fun (s', i) (_xI', tI') -> - decompose tI' (Il.ProjE (p', i) $$ tI'.at % Il.Subst.subst_typ s' tI') s', i + 1 - ) (s, 0) xts' |> fst - | Il.IterT _ -> - (match decompose_iter t' [] with - | None -> s - | Some x -> Il.Subst.add_varid s x p' - ) - | _ -> s - and decompose_iter t' ctx = - match t'.it with - | Il.VarT (x, []) -> Some (Dim.annot_varid x ctx) - | Il.IterT (t1', iter) -> decompose_iter t1' (iter::ctx) - | _ -> None - and bind_var s x t' = - (* Suppress duplicates to handle non-linear patterns *) - if Il.Subst.mem_varid s x then s else - Il.Subst.add_varid s x (Il.VarE x $$ x.at % t') - and to_bind s = function - | [] -> [] - | t'::ts' -> - let t' = Il.Subst.subst_typ s t' in - let x', s' = - match t'.it with - | Il.VarT (_, []) | Il.BoolT | Il.NumT _ | Il.TextT -> - let x = varid_of_typ' t' in - x, bind_var s x t' - | Il.IterT _ -> - (match decompose_iter t' [] with - | None -> "_" $ t'.at, s - | Some x -> x, bind_var s x t' - ) - | _ -> - let x' = Il.Fresh.fresh_varid "pat" $ t'.at in - let s' = decompose t' (Il.VarE x' $$ t'.at % t') Il.Subst.empty in - (if s' = Il.Subst.empty then "_" $ t'.at else x'), Il.Subst.union s s' - in - (x', t') :: to_bind s' ts' - in - Il.TupT (to_bind Il.Subst.empty ts') $ at -*) - let tup_exp' es' at = Il.TupE es' $$ (at, tup_typ' (List.map note es') at) @@ -319,12 +193,6 @@ let bound_env env = } -(* -let vars env outer_dims = - Map.union (fun _ _ y -> Some y) - (Map.map (fun (at, _) -> (at, [])) env.vars) outer_dims -*) - let il_arg_of_param p = (match p.it with | Il.ExpP (id, t) -> Il.ExpA (Il.VarE id $$ id.at % t) @@ -392,13 +260,11 @@ let make_quants_iter_arg env (free : Il.Free.sets) dims : Il.quant list ref * (m let acc = ref [] (* quantifiers introduced so far *) let scope_enter x t = -Printf.printf "[scope_enter %s]\n%!" x.it; let varenv = env.vars in if x.it <> "_" then env.vars <- Map.add x.it (x.at, t) env.vars; varenv - let scope_exit x varenv = -Printf.printf "[scope_exit %s]\n%!" x.it; + let scope_exit _x varenv = env.vars <- varenv let visit_typid id = @@ -407,28 +273,12 @@ Printf.printf "[scope_exit %s]\n%!" x.it; left := Il.Free.{!left with typid = Set.remove id.it !left.typid}; ) -let visit_exp e = -Printf.printf "[visit_exp %s]\n%!" (Il.Debug.il_exp e) - let visit_varid id = -if not Il.Free.(Set.mem id.it !left.varid) then Printf.printf "[visit_id %s] not free\n%!" id.it; -if not (Map.mem id.it dims) then Printf.printf "[visit_id %s] no dims\n%!" id.it; if Il.Free.(Set.mem id.it !left.varid) then ( -Printf.printf "[visit_id %s]\n%!" id.it; let t = try find "variable" env.vars id with Error _ -> find "variable" env.gvars (strip_var_suffix id) in -(* - (* Check that quantifier will not depend on later ones *) - let fwd = Il.Free.(inter (free_typ t) !left) in - if fwd <> Il.Free.empty then - error id.at ("the type of `" ^ id.it ^ "` depends on " ^ - ( Il.Free.Set.(elements fwd.typid @ elements fwd.gramid @ elements fwd.varid @ elements fwd.defid) |> - List.map (fun id -> "`" ^ id ^ "`") |> - String.concat ", " ) ^ - ", which only occur(s) to its right; try to reorder parameters or premises"); -*) (* Raise variable type to its inferred dimension *) let ctx' = match Map.find_opt id.it dims with @@ -444,17 +294,6 @@ Printf.printf "[visit_id %s]\n%!" id.it; let visit_gramid id = if Il.Free.(Set.mem id.it !left.gramid) then ( let ps, t, _gram, _prods' = find "grammar" env.grams id in -(* - (* Check that quantifier will not depend on later ones *) - let free' = Il.Free.(free_params ps ++ (free_typ t -- bound_params ps)) in - let fwd = Il.Free.(inter free' !left) in - if fwd <> Il.Free.empty then - error id.at ("the type of `" ^ id.it ^ "` depends on " ^ - ( Il.Free.Set.(elements fwd.typid @ elements fwd.gramid @ elements fwd.varid @ elements fwd.defid) |> - List.map (fun id -> "`" ^ id ^ "`") |> - String.concat ", " ) ^ - ", which only occur(s) to its right; try to reorder parameters or premises"); -*) acc := !acc @ [Il.GramP (id, ps, t) $ id.at]; left := Free.{!left with varid = Set.remove id.it !left.gramid}; ) @@ -462,17 +301,6 @@ Printf.printf "[visit_id %s]\n%!" id.it; let visit_defid id = if Il.Free.Set.mem id.it !left.defid then ( let ps, t, _ = find "definition" env.defs id in -(* - (* Check that quantifier will not depend on later ones *) - let free' = Il.Free.(free_params ps ++ (free_typ t -- bound_params ps)) in - let fwd = Il.Free.(inter free' !left) in - if fwd <> Il.Free.empty then - error id.at ("the type of `" ^ (spaceid "definition" id).it ^ "` depends on " ^ - ( Il.Free.Set.(elements fwd.typid @ elements fwd.gramid @ elements fwd.varid @ elements fwd.defid) |> - List.map (fun id -> "`" ^ id ^ "`") |> - String.concat ", " ) ^ - ", which only occur(s) to its right; try to reorder parameters or premises"); -*) acc := !acc @ [Il.DefP (id, ps, t) $ id.at]; left := Il.Free.{!left with defid = Set.remove id.it !left.defid}; ) @@ -483,12 +311,12 @@ let infer_quants env env' dims det ps' as' ts' es' gs' prs' at : Il.quant list = let env' = annot_env env' dims in Debug.(log_at "il.infer_quants" at (fun _ -> -Printf.sprintf "\n ps'=[%s]" Il.Debug.(list il_param ps') ^ -Printf.sprintf "\n as'=[%s]" Il.Debug.(list il_arg as') ^ -Printf.sprintf "\n ts'=[%s]" Il.Debug.(list il_typ ts') ^ -Printf.sprintf "\n es'=[%s]" Il.Debug.(list il_exp es') ^ -Printf.sprintf "\n gs'=[%s]" Il.Debug.(list il_sym gs') ^ -Printf.sprintf "\n prs'=[%s]" Il.Debug.(list il_prem prs') ^ + "\n ps'=[" ^ list il_param ps' ^ "]" ^ + "\n as'=[" ^ list il_arg as' ^ "]" ^ + "\n ts'=[" ^ list il_typ ts' ^ "]" ^ + "\n es'=[" ^ list il_exp es' ^ "]" ^ + "\n gs'=[" ^ list il_sym gs' ^ "]" ^ + "\n prs'=[" ^ list il_prem prs' ^ "]" ^ "\n locals=" ^ (Map.fold (fun id _ ids -> if Map.mem id env.vars then ids else id::ids @@ -684,60 +512,6 @@ let fail_dir_typ env at phrase dir t expected = (* Type Accessors *) -(* -let rec arg_subst s ps args = - match ps, args with - | [], [] -> s - | p::ps', a::as' -> - let s' = - match p.it, !((Subst.subst_arg s a).it) with - | ExpP (id, _), ExpA e -> Subst.add_varid s id e - | TypP id, TypA t -> Subst.add_typid s id t - | GramP (id, _, _), GramA g -> Subst.add_gramid s id g - | DefP (id, _, _), DefA id' -> Subst.add_defid s id id' - | _, _ -> assert false - in arg_subst s' ps' as' - | _, _ -> assert false - -(* TODO(4, rossberg): eliminate, replace expansion with reduction *) -let aliased dt' = - match dt'.it with - | Il.AliasT _ -> `Alias - | _ -> `NoAlias -let aliased_inst inst' = - let Il.InstD (_, _, dt') = inst'.it in - aliased dt' - -(* TODO(4, rossberg): replace with reduce_typ *) -let as_defined_typid' env x as' at : Il.deftyp' = - match find "syntax type" env.typs (strip_var_suffix id) with - | ps, Defined (t, _ids, dt') -> - let t' = if ps = [] then t else (* optimization *) - Subst.subst_typ (arg_subst Subst.empty ps args) t in - t'.it, aliased dt' - | _ps, Opaque -> VarT (id, args), `NoAlias - | _ps, Transp -> - error_id (id.it $ at) "invalid forward use of syntax type" - | _ps, Family insts -> - let env' = to_eval_env env in - let args = List.map (Eval.reduce_arg env') args in - let rec lookup = function - | [] -> error_id (id.it $ at) "undefined or undetermined case of syntax type family" - | (args', t, inst')::insts' -> - Debug.(log "el.lookup" - (fun _ -> fmt "%s(%s) =: %s(%s)" id.it (el_args args) id.it (el_args args')) - (fun (r, _) -> fmt "%s" (el_typ (r $ no_region ))) - ) @@ fun _ -> - if args' = [] && args = [] then t.it, aliased_inst inst' else (* optimisation *) - match Eval.(match_list match_arg env' Subst.empty args args') with - | None -> lookup insts' - | Some s -> (Subst.subst_typ s t).it, aliased_inst inst' - | exception _ -> lookup insts' (* assume coherent matches *) - (* error at "cannot reduce type family application" *) - in lookup insts -*) - - (* TODO(2, rossberg): avoid repeated env conversion *) let reduce env t : Il.typ = Il.Eval.reduce_typ (to_il_env env) t let expand env t : Il.typ' = (reduce env t).it @@ -773,58 +547,6 @@ let expand_id env t = | _ -> "" $ no_region -(* -(* Expand all but the last alias. TODO(4, rossberg): remove *) -exception Last -let rec expand_nondef' env t = - match t.it with - | VarT (id, args) -> - (match as_defined_typid' env id args id.at with - | t1', `Alias -> (try expand_nondef' env (t1' $ t.at) with Last -> t) - | _, `NoAlias -> t - | exception Error _ -> t - ) - | ParenT t1 -> expand_nondef' env t1 - | _ -> raise Last - -let expand_nondef env t = try expand_nondef' env t with Last -> t - -(* Expand definitions *) -let expand_def env t = - match (Il.reduce_typ (to_il_env env) t).it with - | Il.VarT (x, as_) as t' -> - (match as_defined_typid' env id args id.at with - | t1', _ -> t1' - | exception Error _ -> t' - ) - | t' -> t' - -let rec expand_notation env t = - match expand env t with - | Il.VarT (x, as') as t' -> - (match as_defined_typid' env id args t.at with - | ConT ((t1, _), _), _ -> expand_notation env t1 - | RangeT _ as t', _ -> t' - | _ -> t' - | exception Error _ -> t' - ) - | ConT ((t1, _), _) -> expand_notation env t1 - | t' -> t' - -let rec expand_iter_notation env t = - match expand env t with - | VarT (id, args) as t' -> - (match as_defined_typid' env id args t.at with - | IterT _ as t'', _ -> t'' - | ConT ((t1, _), _), _ -> expand_iter_notation env t1 - | _ -> t' - | exception Error _ -> t' - ) - | ConT ((t1, _), _) -> expand_iter_notation env t1 - | t' -> t' -*) - - let as_nat_typ_opt env t : unit option = match expand env t with | Il.NumT `NatT -> Some () @@ -850,12 +572,6 @@ let as_tup_typ_opt env t : (Il.id * Il.typ) list option = | Il.TupT xts -> Some xts | _ -> None -(* -let as_iter_notation_typ_opt env t : (typ * iter) option = - match expand_iter_notation env t with - | Il.IterT (t1, iter) -> Some (t1, iter) | _ -> None -*) - let as_empty_notation_typ_opt env t : unit option = match expand_notation env t with | Some (_, _, Seq []) -> Some () @@ -877,10 +593,6 @@ let as_list_typ phrase env dir t at = as_x_typ as_list_typ_opt phrase env dir t at "(_)*" let as_tup_typ phrase env dir t at = as_x_typ as_tup_typ_opt phrase env dir t at "(_,...,_)" -(* -let as_iter_notation_typ phrase env dir t at = - as_x_typ as_iter_notation_typ_opt phrase env dir t at "(_)*" -*) let as_empty_notation_typ phrase env dir t at = as_x_typ as_empty_notation_typ_opt phrase env dir t at "()" @@ -917,9 +629,6 @@ let is_x_typ as_x_typ env t = let is_nat_typ = is_x_typ as_nat_typ let is_iter_typ = is_x_typ as_iter_typ -(* -let is_iter_notation_typ = is_x_typ as_iter_notation_typ -*) let is_variant_typ = is_x_typ as_variant_typ let is_notation_typ = is_x_typ as_notation_typ let is_empty_notation_typ = is_x_typ as_empty_notation_typ @@ -973,12 +682,6 @@ let new_typcase (mixop, t_prs, hints) = (new_mixop mixop, t_prs, hints) let elab_atom atom tid = assert (valid_tid tid); -(* -if atom.note.Atom.def <> "" && atom.note.Atom.def <> tid.it then -Printf.eprintf "[elab_atom %s @ %s] def=%s/%s\n%!" -(Atom.string_of_atom atom) (Source.string_of_region atom.at) tid.it atom.note.Atom.def; - assert (atom.note.Atom.def = "" || atom.note.Atom.def = tid.it); -*) atom.note.Atom.def <- tid.it; atom @@ -1296,62 +999,11 @@ and elab_typ_notation env outer_dims tid at (t : typ) (prems : prem nl_list) : let env2 = local_env env1 in let prems' = List.concat (map_filter_nl_list (elab_prem env2) prems) in -Printf.printf "--- 1 ---\n%!"; let dims2 = Dim.check (Dim.union outer_dims dims1) [] [] [] [] [] prems' in -Printf.printf "--- 2 ---\n%!"; let prems' = List.map (Dim.annot_prem dims2) prems' in -Printf.printf "--- 3 ---\n%!"; let det2 = Det.(det_list det_prem prems') in -Printf.printf "--- 4 ---\n%!"; let qs = infer_quants env1 env2 dims2 det2 [] [] [] [] [] prems' at in mixop, t', qs, prems' -(* - Debug.(log_in_at "il.infer_quants" at - (fun _ -> - "local: " ^ - (Map.fold (fun id _ ids -> - if Map.mem id env.vars then ids else id::ids - ) env'.vars [] |> List.rev |> String.concat " ") ^ - " dims: " ^ - (Map.fold (fun id (_, ctx) ids -> - (id ^ ":" ^ String.concat "" (List.map Il.Print.string_of_iter ctx)) :: ids - ) dims [] |> List.rev |> String.concat " ") ^ - " det: " ^ - (Set.elements det.Det.varid |> String.concat " ") - ) - ); - let env' = annot_env env' dims in - let acc_qs, (module Arg : Il.Iter.Arg) = make_quants_iter_arg env' det dims in -Printf.printf "--- 5 ---\n%!"; - let module Acc = Il.Iter.Make(Arg) in - Acc.typ t'; - Acc.prems prems'; -Printf.printf "--- 6 ---\n%!"; - let free = - Il.Free.( - free_prems prems' - -- bound_env env -- bound_params (!acc_qs @ List.concat qss) -- det - ) - in - if free <> Free.empty then -(Printf.printf "[notation] t = %s\n%!" (Debug.el_typ t); -List.iteri (fun i t -> Printf.printf "[notation] t%d' = %s\n%!" (i+1) (Il.Print.string_of_typ t)) ts'; -List.iteri (fun i pr -> Printf.printf "[notation] pr%d' = %s\n%!" (i+1) (Il.Print.string_of_prem pr)) prems'; -Printf.printf "X in env = %b\n%!" (Map.mem "X" env.vars); -Printf.printf "X* in env = %b\n%!" (Map.mem "X*" env.vars); -let frt = Il.Free.free_typ t' in -let frp = Il.Free.free_prems prems' in -let detp = Det.(det_list det_prem prems') in -let bp = Il.Free.bound_params (!acc_qs @ List.concat qss) in -Printf.printf "free(t') = %s\n%!" (String.concat ", " (List.map quote (Free.Set.elements frt.varid))); -Printf.printf "free(prs') = %s\n%!" (String.concat ", " (List.map quote (Free.Set.elements frp.varid))); -Printf.printf "det(prs') = %s\n%!" (String.concat ", " (List.map quote (Free.Set.elements detp.varid))); -Printf.printf "bound(qs') = %s\n%!" (String.concat ", " (List.map quote (Free.Set.elements bp.varid))); - error at ("premise contains indeterminate variable(s) " ^ - String.concat ", " (List.map quote (Free.Set.elements free.varid))); -); - mixop, !acc_qs @ List.concat qss, t', prems' -*) and elab_typ_notation' env tid (t : typ) : Il.mixop * (Il.id * Il.typ) list = Debug.(log_at "el.elab_typ_notation" t.at @@ -1865,10 +1517,12 @@ and elab_exp_notation' env tid (e : exp) not : (Il.exp list * Il.Subst.t) attemp if atom.it <> atom'.it then fail_not env e.at "atom" not else let _ = elab_atom atom tid in Ok ([], Il.Subst.empty) + | InfixE (e1, atom, e2), Infix (_, atom', _) when Atom.sub atom' atom -> let e21 = ParenE (SeqE [] $ e2.at) $ e2.at in elab_exp_notation' env tid (InfixE (e1, atom', SeqE [e21; e2] $ e2.at) $ e.at) not + | InfixE (e1, atom, e2), Infix (not1, atom', not2) -> if atom.it <> atom'.it then fail_not env e.at "infix expression" not else let* es1', s1 = elab_exp_notation' env tid e1 not1 in @@ -1876,6 +1530,7 @@ and elab_exp_notation' env tid (e : exp) not : (Il.exp list * Il.Subst.t) attemp let* es2', s2 = elab_exp_notation' env tid e2 not2' in let _ = elab_atom atom tid in Ok (es1' @ es2', Il.Subst.union s1 s2) + | BrackE (l, e1, r), Brack (l', not1, r') -> if (l.it, r.it) <> (l'.it, r'.it) then fail_not env e.at "bracket expression" not else let _ = elab_atom l tid in @@ -1884,13 +1539,16 @@ and elab_exp_notation' env tid (e : exp) not : (Il.exp list * Il.Subst.t) attemp | SeqE [], Seq [] -> Ok ([], Il.Subst.empty) + | _, Seq ((Arg (x1, t1))::nots2) when is_iter_typ env t1 -> let* t11, iter = as_iter_typ "iteration" env Check t1 e.at in elab_exp_notation_iter env tid (unseq_exp e) (t11, iter) x1 t1 nots2 e.at + | SeqE ({it = AtomE atom; at; _}::es2), Seq ((Atom atom')::_) when Atom.sub atom' atom -> let e21 = ParenE (SeqE [] $ at) $ at in elab_exp_notation' env tid (SeqE ((AtomE atom' $ at) :: e21 :: es2) $ e.at) not + (* Trailing notation can be flattened *) | SeqE (e1::es2), Seq [Arg (x1, t1) as not1] -> choice env [ @@ -1905,6 +1563,7 @@ and elab_exp_notation' env tid (e : exp) not : (Il.exp list * Il.Subst.t) attemp Ok ([e'], Il.Subst.add_varid Il.Subst.empty x1 e') ) ] + | SeqE (e1::es2), Seq (not1::nots2) -> let* es1', s1 = elab_exp_notation' env tid (unparen_exp e1) not1 in let e2 = SeqE es2 $ Source.over_region (after_region e1.at :: List.map Source.at es2) in @@ -1912,6 +1571,7 @@ and elab_exp_notation' env tid (e : exp) not : (Il.exp list * Il.Subst.t) attemp let not2' = Mixop.map (fun (x, t) -> x, Il.Subst.subst_typ s1 t) not2 in let* es2', s2 = elab_exp_notation' env tid e2 not2' in Ok (es1' @ es2', Il.Subst.union s1 s2) + (* Trailing elements can be omitted if they can be eps *) | SeqE [], Seq ((Arg (x1, t1))::nots2) -> let* e1' = cast_empty "omitted sequence tail" env t1 e.at in @@ -1920,18 +1580,14 @@ and elab_exp_notation' env tid (e : exp) not : (Il.exp list * Il.Subst.t) attemp let not2' = Mixop.map (fun (x, t) -> x, Il.Subst.subst_typ s1 t) not2 in let* es2', s2 = elab_exp_notation' env tid e not2' in Ok (e1' :: es2', Il.Subst.union s1 s2) + | SeqE (e1::_), Seq [] -> fail e1.at "expression is not empty" + (* Since trailing elements can be omitted, a singleton may match a sequence *) | _, Seq _ -> elab_exp_notation' env tid (SeqE [e] $ e.at) not -(* - | ParenE e1, _ - | ArithE e1, _ -> - elab_exp_notation' env tid e1 not -*) - | _, Arg (x, t) -> let* e' = elab_exp env e t in Ok ([e'], Il.Subst.add_varid Il.Subst.empty x e') @@ -1961,6 +1617,7 @@ and elab_exp_notation_iter' env tid (es : exp list) (t1, iter) x t eo' nots at let not' = Mixop.map (fun (x, t) -> x, Il.Subst.subst_typ s0 t) not in let* es', s = elab_exp_notation' env tid (SeqE [] $ at) not' in Ok (e0', es', Il.Subst.union s0 s) + | e1::es2, Il.Opt -> assert (eo' = None); choice env [ @@ -1997,6 +1654,7 @@ and elab_exp_notation_iter' env tid (es : exp list) (t1, iter) x t eo' nots at let not' = Mixop.map (fun (x, t) -> x, Il.Subst.subst_typ s1 t) not in let* es', s2 = elab_exp_notation' env tid (SeqE [] $ at) not' in Ok (e', es', Il.Subst.union s1 s2) + | e1::es2, Il.List -> choice env [ (fun env -> @@ -2101,18 +1759,6 @@ and cast_empty phrase env (t : Il.typ) at : Il.exp attempt = | Some (_, _, Mixop.Seq []) -> Ok (Il.ListE [] $$ at % t) | _ -> fail_typ env at phrase t ) -(* - | VarT _ when is_iter_notation_typ env t -> - (match expand_iter_notation env t with - | IterT (_, iter) as t1 -> -(*TODO*) - let mixop, ts', _ts = elab_typ_notation' env (expand_id env t) (t1 $ t.at) in - assert (List.length ts' = 1); - let e1' = if iter = Opt then Il.OptE None else Il.ListE [] in - Ok ([], Il.CaseE (mixop, tup_exp' [e1' $$ at % List.hd ts'] at) $$ at % t') - | _ -> fail_typ env at phrase t - ) -*) | _ -> fail_typ env at phrase t ) @@ -2274,177 +1920,6 @@ and cast_exp' phrase env (e' : Il.exp) t1 t2 : Il.exp' attempt = | _, _ -> fail_typ2 env e'.at phrase t1 t2 "" -(* - | ConT ((t11, _), _), ConT ((t21, _), _) -> - choice env [ - (fun env -> - (* Two ConT's with the same operator can be cast pointwise *) - let mixop1, qs1, t1', _prems1', ts1 = elab_typ_notation env (expand_id env t1) t1.at t11 [] in - let mixop2, qs2, _t2', _prems2', ts2 = elab_typ_notation env (expand_id env t2) t2.at t21 [] in -(* - let mixop1, ts1', ts1 = elab_typ_notation' env (expand_id env t1) t11 in - let mixop2, _ts2', ts2 = elab_typ_notation' env (expand_id env t2) t21 in -*) - if mixop1 <> mixop2 then - fail_typ2 env e'.at phrase t1 t2 "" else - let e'' = Il.UncaseE (e', mixop1) $$ e'.at % t1' in - let ts1' = match t1'.it with Il.TupT xts -> List.map snd xts | _ -> [t1'] in - let es' = List.mapi (fun i t1I' -> Il.ProjE (e'', i) $$ e''.at % t1I') ts1' in - let* qss_es'' = map2_attempt (fun eI' (t1I, t2I) -> - cast_exp phrase env eI' t1I t2I) es' (List.combine ts1 ts2) in - let qss, es'' = List.split qss_es'' in - Ok (qs1 @ qs2 @ List.concat qss, Il.CaseE (mixop2, tup_exp' es'' e'.at)) - ); - (fun env -> - (* Two unary ConT's can be cast transitively *) - Debug.(log_in_at "el.cast_exp" e'.at - (fun _ -> fmt "%s <: %s >> (%s) <: (%s) = (%s) # backtrack 1" (el_typ t1) (el_typ t2) - (el_typ (expand_def env t1 $ t1.at)) (el_typ (expand_def env t2 $ t2.at)) - (el_typ (expand_nondef env t2)) - ) - ); - let mixop, qs, t1', _prems', ts = elab_typ_notation env (expand_id env t1) t1.at t11 [] in -(* - let mixop, ts', ts = elab_typ_notation' env (expand_id env t1) t11 in -*) - let* t111, t111' = match ts, t1'.it with [t111], Il.TupT [_, t111'] -> Ok (t111, t111') | _ -> - fail_typ2 env e'.at phrase t1 t2 "" in - let e'' = Il.UncaseE (e', mixop) $$ e'.at % t1' in - let* qs, e''' = cast_exp' phrase env (Il.ProjE (e'', 0) $$ e'.at % t111') t111 t2 in - Ok (qs @ qs, e''') - ); - ] - | ConT ((t11, _), _), t2' -> - choice env [ - (fun env -> - let* qs, e'' = - match t2' with - | IterT (t21, iter) -> - let* qs1, e1' = cast_exp phrase env e' t1 t21 in - (match iter with - | Opt -> Ok (qs1, Il.OptE (Some e1')) - | List -> Ok (qs1, Il.ListE [e1']) - | _ -> assert false - ) - | _ -> fail_silent - in - Ok (qs, e'') - ); - (fun env -> - (* A ConT can be cast to its payload *) - Debug.(log_in_at "el.cast_exp" e'.at - (fun _ -> fmt "%s <: %s >> (%s) <: (%s) = (%s) # backtrack 2" (el_typ t1) (el_typ t2) - (el_typ (expand_def env t1 $ t1.at)) (el_typ (expand_def env t2 $ t2.at)) - (el_typ (expand_nondef env t2)) - ) - ); - let mixop, qs, t1', _prems', ts = elab_typ_notation env (expand_id env t1) t1.at t11 [] in -(* - let mixop, ts', ts = elab_typ_notation' env (expand_id env t1) t11 in -*) - let* t111, t111' = match ts, t1'.it with [t111], Il.TupT [_, t111'] -> Ok (t111, t111') | _ -> - fail_typ2 env e'.at phrase t1 t2 "" in -Printf.printf "[3] %s => %s\n%!" (Debug.el_typ t1) (Debug.il_typ t1'); - let e'' = Il.UncaseE (e', mixop) $$ e'.at % t1' in - let* qs, e''' = cast_exp' phrase env (Il.ProjE (e'', 0) $$ e'.at % t111') t111 t2 in - Ok (qs @ qs, e''') - ); - ] - | _, ConT ((t21, _), _) -> - (* A ConT payload can be cast to the ConT *) - let mixop, qs, t', _prems', ts = elab_typ_notation env (expand_id env t2) t2.at t21 [] in -(* - let mixop, _ts', ts = elab_typ_notation' env (expand_id env t2) t21 in -*) - let* t211 = match ts with [t211] -> Ok t211 | _ -> - fail_typ2 env e'.at phrase t1 t2 "" in - let* qs1, e1' = cast_exp phrase env e' t1 t211 in - Ok (qs @ qs1, Il.CaseE (mixop, Il.TupE [e1'] $$ e'.at % t')) - | RangeT _, t2' -> - choice env [ - (fun env -> - let* qs, e'' = - match t2' with - | IterT (t21, iter) -> - let* qs1, e1' = cast_exp phrase env e' t1 t21 in - (match iter with - | Opt -> Ok (qs1, Il.OptE (Some e1')) - | List -> Ok (qs1, Il.ListE [e1']) - | _ -> assert false - ) - | _ -> fail_silent - in - Ok (qs, e'') - ); - (fun env -> - (* A RangeT can be cast to its carrier type *) - Debug.(log_in_at "el.cast_exp" e'.at - (fun _ -> fmt "%s <: %s >> (%s) <: (%s) = (%s) # backtrack 3" (el_typ t1) (el_typ t2) - (el_typ (expand_def env t1 $ t1.at)) (el_typ (expand_def env t2 $ t2.at)) - (el_typ (expand_nondef env t2)) - ) - ); - let t11 = typ_rep env t1 in - let t11' = elab_typ env t11 in -Printf.printf "[4] %s => %s\n%!" (Debug.el_typ t11) (Debug.il_typ t11'); - let e'' = Il.UncaseE (e', [[]; []]) $$ e'.at % t11' in - let e''' = Il.ProjE (e'', 0) $$ e'.at % t11' in - cast_exp' phrase env e''' t11 t2 - ); - ] - | _, RangeT _ -> - (* A respective carrier type can be cast to RangeT *) - let t21 = typ_rep env t2 in - let* qs, e'' = cast_exp phrase env e' t1 t21 in - Ok (qs, Il.CaseE ([[]; []], Il.TupE [e''] $$ e'.at % elab_typ env t21)) - | _, IterT (t21, Opt) -> - let* qs, e'' = cast_exp phrase env e' t1 t21 in - Ok (qs, Il.OptE (Some e'')) -(* TODO(3, rossberg): enable; violates invariant that all iterexps are initially empty - | IterT (t11, List), IterT (t21, List) -> - choice env [ - (fun env -> - let id = x $ e'.at in - let t11' = elab_typ env t11 in - let* qs, e'' = cast_exp phrase env (Il.VarE id $$ e'.at % t11') t11 t21 in - Ok (qs, Il.IterE (e'', (List, [x, e']))) - ); - (fun env -> - let* qs, e'' = cast_exp phrase env e' t1 t21 in - Ok (qs, Il.ListE [e'']) - ); - ] -*) - - | _, _ when is_variant_typ env t1 && is_variant_typ env t2 && not (is_iter_typ env t1) -> - let cases1, dots1 = checkpoint (as_variant_typ "" env Check t1 e'.at) in - let cases2, _dots2 = checkpoint (as_variant_typ "" env Check t2 e'.at) in - if dots1 = Dots then - error e'.at "used variant type is only partially defined at this point"; - let* _ = - match - iter_attempt (fun (atom, (t1', _prems1), _) -> - let* t2', _prems2 = attempt (find_case cases2 atom t1.at) t2 in - (* Shallow subtyping on variants *) - let env' = to_eval_env env in - if Eq.eq_typ (Eval.reduce_typ env' t1') (Eval.reduce_typ env' t2') then Ok () else - fail_atom e'.at atom t1 "type mismatch for case" - ) cases1 - with - | Ok () -> Ok () - | Fail (Trace (_, msg, _) :: _) -> fail_typ2 env e'.at phrase t1 t2 (", " ^ msg) - | Fail [] -> assert false - in - let t11 = expand env t1 $ t1.at in - let t21 = expand env t2 $ t2.at in - let t11' = elab_typ env (expand_nondef env t1) in - let t21' = elab_typ env (expand_nondef env t2) in - let* qs1, e'' = cast_exp phrase env e' t1 t11 in - let e''' = Il.SubE (e'', t11', t21') in - let* qs2, e'''' = cast_exp' phrase env (e''' $$ e'.at % t21') t21 t2 in - Ok (qs1 @ qs2, e'''') -*) - (* Premises *) @@ -2649,7 +2124,6 @@ and elab_prod env outer_dims (prod : prod) (t : Il.typ) : Il.prod list = in let prems' = List.concat (map_filter_nl_list (elab_prem env') prems) in let dims = Dim.check outer_dims [] [] [] [e'] [g'] prems' in -Printf.printf "dims \\ %s = %s\n%!" (Debug.domain outer_dims) (Debug.(list Fun.id (List.map fst (Map.bindings dims)))); let g' = Dim.annot_sym dims g' in let e' = Dim.annot_exp dims e' in let prems' = List.map (Dim.annot_prem dims) prems' in @@ -2665,6 +2139,7 @@ Printf.printf "dims \\ %s = %s\n%!" (Debug.domain outer_dims) (Debug.(list Fun.i else prod' :: elab_prod env outer_dims Subst.(subst_prod pm_snd (Iter.clone_prod prod)) t + | RangeP (g1, e1, g2, e2) -> let t = Il.NumT `NatT $ prod.at in let g1' = checkpoint (elab_sym env g1 t) in @@ -2708,6 +2183,7 @@ Printf.printf "dims \\ %s = %s\n%!" (Debug.domain outer_dims) (Debug.(list Fun.i let e' = {(if i = 0 then e1' else e2') with it = Il.NumE n} in Il.ProdD ([], g', e', []) $ prod.at ) + | EquivP (g1, g2, prems) -> let env' = local_env env in env'.pm <- false; @@ -2978,9 +2454,6 @@ let infer_typdef env (d : def) : def = let infer_gramdef env (d : def) = match d.it with | GramD (x1, _x2, ps, t, _gram, _hints) -> - (* - Printf.eprintf "[el.infer_gramdef %s]\n%!" (string_of_region d.at); - *) if not (bound env.grams x1) then ( let env' = local_env env in let ps' = elab_params env' ps in @@ -3022,6 +2495,7 @@ let rec elab_def env (d : def) : Il.def list = env.typs <- rebind "syntax type" env.typs x (ps', Family []); [Il.TypD (x, ps', []) $ d.at] @ elab_hintdef env (TypH (x, "" $ x.at, hints) $ d.at) + | TypD (x1, x2, as_, t, hints) -> let ps', k = find "syntax type" env.typs x1 in let as', _s = elab_args `Lhs env' as_ ps' d.at in @@ -3049,18 +2523,14 @@ let rec elab_def env (d : def) : Il.def list = error_id x1 "syntax type family cases are not extensible"; Family (insts @ [inst']), false in - (* - Printf.eprintf "[syntax %s] %s ~> %s\n%!" id1.it - (string_of_typ t) (Il.Print.string_of_deftyp dt'); - *) env.typs <- rebind "syntax type" env.typs x1 (ps', k'); (if not last then [] else [Il.TypD (x1, ps', [inst']) $ d.at]) @ elab_hintdef env (TypH (x1, x2, hints) $ d.at) @ (if not env'.pm then [] else elab_def env Subst.(subst_def pm_snd (Iter.clone_def d))) + | GramD (x1, x2, ps, t, gram, hints) -> let ps' = elab_params env' ps in let t' = elab_typ env' t in -Printf.printf "ps' = %s\n%!" (Debug.il_params ps'); let dims = Dim.check Map.empty ps' [] [t'] [] [] [] in let outer_dims = Dim.restrict dims (Il.Free.bound_params ps') in let prods' = elab_gram env' outer_dims gram t' in @@ -3092,6 +2562,7 @@ Printf.printf "ps' = %s\n%!" (Debug.il_params ps'); (* Only add last fragment to IL defs, so that populate finds it only once *) (if dots2 = Dots then [] else [Il.GramD (x1, ps', t', []) $ d.at]) @ elab_hintdef env (GramH (x1, x2, hints) $ d.at) + | RelD (x, t, hints) -> let mixop, xts' = elab_typ_notation' env' x t in let ts' = List.map snd xts' in @@ -3104,6 +2575,7 @@ Printf.printf "ps' = %s\n%!" (Debug.il_params ps'); env.rels <- bind "relation" env.rels x (mixop, not, t', []); [Il.RelD (x, mixop, t', []) $ d.at] @ elab_hintdef env (RelH (x, hints) $ d.at) + | RuleD (x1, x2, e, prems) -> let mixop, not', t', rules' = find "relation" env.rels x1 in if List.exists (fun (x, _) -> x.it = x2.it) rules' then @@ -3120,6 +2592,7 @@ Printf.printf "ps' = %s\n%!" (Debug.il_params ps'); let rule' = Il.RuleD (x2, qs, mixop, e', prems') $ d.at in env.rels <- rebind "relation" env.rels x1 (mixop, not', t', rules' @ [x2, rule']); if not env'.pm then [] else elab_def env Subst.(subst_def pm_snd (Iter.clone_def d)) + | VarD (x, t, _hints) -> let t' = elab_typ env' t in if env'.pm then @@ -3129,6 +2602,7 @@ Printf.printf "ps' = %s\n%!" (Debug.il_params ps'); infer_no_quants env' dims Det.empty [] [] [t'] [] [] [] d.at; env.gvars <- rebind "variable" env.gvars x t'; [] + | DecD (x, ps, t, hints) -> let ps' = elab_params env' ps in let t' = elab_typ env' t in @@ -3136,10 +2610,10 @@ Printf.printf "ps' = %s\n%!" (Debug.il_params ps'); let d' = Il.DecD (x, ps', t', []) $ d.at in let dims = Dim.check Map.empty ps' [] [t'] [] [] [] in let t' = Dim.annot_typ dims t' in -Printf.printf "DecD %s%s : %s\n%!" x.it (Il.Print.string_of_params ps') (Il.Print.string_of_typ t'); infer_no_quants env dims Det.empty ps' [] [t'] [] [] [] d.at; env.defs <- bind "definition" env.defs x (ps', t', []); [d'] @ elab_hintdef env (DecH (x, hints) $ d.at) + | DefD (x, as_, e, prems) -> let ps', t', clauses' = find "definition" env.defs x in let as', s = elab_args `Lhs env' as_ ps' d.at in @@ -3153,11 +2627,12 @@ Printf.printf "DecD %s%s : %s\n%!" x.it (Il.Print.string_of_params ps') (Il.Prin let det = Det.(det_list det_arg as' ++ det_exp e' ++ det_list det_prem prems') in let qs = infer_quants env env' dims det [] as' [] [e'] [] prems' d.at in let clause' = Il.DefD (qs, as', e', prems') $ d.at in -Printf.printf "=> %s\n%!" (Il.Print.string_of_clause ~suppress_pos: true x clause'); env.defs <- rebind "definition" env.defs x (ps', t', clauses' @ [(d, clause')]); if not env'.pm then [] else elab_def env Subst.(subst_def pm_snd (Iter.clone_def d)) + | SepD -> [] + | HintD hd -> elab_hintdef env' hd diff --git a/spectec/src/frontend/eval.ml b/spectec/src/frontend/eval.ml index 0d8cb290e..ff76a99aa 100644 --- a/spectec/src/frontend/eval.ml +++ b/spectec/src/frontend/eval.ml @@ -719,11 +719,6 @@ and equiv_arg env a1 a2 = Debug.(log "el.equiv_arg" (fun _ -> fmt "%s == %s" (el_arg a1) (el_arg a2)) Bool.to_string ) @@ fun _ -> - (* - Printf.eprintf "[el.equiv_arg] %s == %s\n%!" - (Print.string_of_arg a1) - (Print.string_of_arg a2); - *) match !(a1.it), !(a2.it) with | ExpA e1, ExpA e2 -> equiv_exp env e1 e2 | TypA t1, TypA t2 -> equiv_typ env t1 t2 diff --git a/spectec/src/il/debug.ml b/spectec/src/il/debug.ml index f35055942..111d7f5e3 100644 --- a/spectec/src/il/debug.ml +++ b/spectec/src/il/debug.ml @@ -7,6 +7,7 @@ let il_id = Util.Source.it let il_atom = string_of_atom let il_mixop = string_of_mixop let il_iter = string_of_iter +let il_iterexp = string_of_iterexp let il_typ = string_of_typ let il_typbind (x, t) = "(" ^ il_id x ^ ":" ^ il_typ t ^ ")" let il_typfield = string_of_typfield ~layout: `H diff --git a/spectec/src/il/free.mli b/spectec/src/il/free.mli index 00acbfc4c..1b962475c 100644 --- a/spectec/src/il/free.mli +++ b/spectec/src/il/free.mli @@ -22,6 +22,7 @@ val free_args : arg list -> sets val free_quants : param list -> sets val free_params : param list -> sets +val bound_iter : iter -> sets val bound_iterexp : iterexp -> sets val bound_quant : quant -> sets val bound_param : param -> sets diff --git a/spectec/src/il/print.ml b/spectec/src/il/print.ml index a85fde43a..9657e871b 100644 --- a/spectec/src/il/print.ml +++ b/spectec/src/il/print.ml @@ -19,13 +19,11 @@ let is_alphanum = function | '0'..'9' | 'A'..'Z' | 'a'..'z' - | '_' | '.' | '\'' | '#' -> true + | '_' | '\'' | '#' -> true | _ -> false let string_of_id x = - if String.for_all is_alphanum x.it - then x.it - else "`" ^ x.it ^ "`" + if String.for_all is_alphanum x.it then x.it else "`" ^ x.it ^ "`" (* Operators *) @@ -43,7 +41,9 @@ let string_of_cmpop = function | #Num.cmpop as op -> Num.string_of_cmpop op let string_of_atom = Atom.to_string -let string_of_mixop mixop = "`" ^ Mixop.to_string mixop ^ "`" +let string_of_mixop mixop = + let s = Mixop.to_string mixop in + if String.for_all is_alphanum s then s else "`" ^ s ^ "`" (* Types *) @@ -97,15 +97,17 @@ and string_of_deftyp ?(layout = `H) dt = and string_of_typfield ?(layout = `H) (atom, (t, qs, prems), _hints) = string_of_mixop (Mixop.Atom atom) ^ " " ^ string_of_typ t ^ - if layout = `H && prems <> [] then " -- .." else - string_of_quants qs ^ " " ^ - concat "" (List.map (prefix "\n -- " string_of_prem) prems) + if prems = [] then "" else + if layout = `H then " -- .." else + (if qs = [] then "" else " " ^ string_of_quants qs) ^ + concat "" (List.map (prefix "\n -- " string_of_prem) prems) and string_of_typcase ?(layout = `H) (op, (t, qs, prems), _hints) = string_of_mixop op ^ string_of_typ_args t ^ - if layout = `H && prems <> [] then " -- .." else - string_of_quants qs ^ " " ^ - concat "" (List.map (prefix "\n -- " string_of_prem) prems) + if prems = [] then "" else + if layout = `H then " -- .." else + (if qs = [] then "" else " " ^ string_of_quants qs) ^ + concat "" (List.map (prefix "\n -- " string_of_prem) prems) (* Expressions *) @@ -301,8 +303,8 @@ let string_of_prod ?(suppress_pos = false) prod = let rec string_of_def ?(suppress_pos = false) d = let pre = "\n" ^ region_comment ~suppress_pos "" d.at in match d.it with - | TypD (x, _ps, [{it = InstD (ps, as_, dt); _}]) -> - pre ^ "syntax " ^ string_of_id x ^ string_of_params ps ^ string_of_args as_ ^ " = " ^ + | TypD (x, _ps, [{it = InstD (qs, as_, dt); _}]) -> + pre ^ "syntax " ^ string_of_id x ^ string_of_quants qs ^ string_of_args as_ ^ " = " ^ string_of_deftyp ~layout: `V dt ^ "\n" | TypD (x, ps, insts) -> pre ^ "syntax " ^ string_of_id x ^ string_of_params ps ^ diff --git a/spectec/src/il/print.mli b/spectec/src/il/print.mli index c7289a6da..0002db4db 100644 --- a/spectec/src/il/print.mli +++ b/spectec/src/il/print.mli @@ -7,6 +7,7 @@ val string_of_binop : binop -> string val string_of_cmpop : cmpop -> string val string_of_mixop : mixop -> string val string_of_iter : iter -> string +val string_of_iterexp : iterexp -> string val string_of_numtyp : numtyp -> string val string_of_typ : typ -> string val string_of_typ_name : typ -> string diff --git a/spectec/src/il/subst.ml b/spectec/src/il/subst.ml index 475c377f6..d2707a920 100644 --- a/spectec/src/il/subst.ml +++ b/spectec/src/il/subst.ml @@ -63,14 +63,6 @@ let rec subst_list_dep subst_x bound_x s = function (* Identifiers *) -let subst_varid s x = - match Map.find_opt x.it s.varid with - | None -> x - | Some {it = VarE x'; _} -> x' - | Some e -> -Printf.printf "!!!! e = %s\n%!" (Print.string_of_exp e); - raise (Invalid_argument "subst_varid") - let subst_defid s x = match Map.find_opt x.it s.defid with | None -> x @@ -88,7 +80,7 @@ let subst_gramid s x = let rec subst_iter s iter = match iter with | Opt | List | List1 -> iter - | ListN (e, xo) -> ListN (subst_exp s e, subst_opt subst_varid s xo) + | ListN (e, xo) -> ListN (subst_exp s e, xo) and subst_iterexp : 'a. subst -> (subst -> 'a -> 'a) -> 'a -> _ -> 'a * _ = fun s f body (it, xes) -> diff --git a/spectec/src/il/valid.ml b/spectec/src/il/valid.ml index a564f088f..6f057560a 100644 --- a/spectec/src/il/valid.ml +++ b/spectec/src/il/valid.ml @@ -201,7 +201,6 @@ and valid_iterexp ?(side = `Rhs) env (it, xes) at : iter * Env.t = it', List.fold_left (fun env' (x, e) -> let t = infer_exp env e in -Printf.printf "[] %s %s\n%!" (Debug.il_typ t) (Debug.il_typ e.note); valid_exp ~side env e t; let t1 = as_iter_typ it' "iterator" env Check t e.at in Env.bind_var env' x t1 @@ -348,14 +347,7 @@ and valid_exp ?(side = `Rhs) env e t = (fun _ -> fmt "%s :%s %s == %s" (il_exp e) (il_side side) (il_typ e.note) (il_typ t)) (Fun.const "ok") ) @@ fun _ -> -try - (try - valid_typ env t - with exn -> - let bt = Printexc.get_raw_backtrace () in - Printf.eprintf "[valid_exp] %s : %s\n%!" (Debug.il_exp e) (Debug.il_typ t); - Printexc.raise_with_backtrace exn bt - ); + valid_typ env t; match e.it with | VarE x when x.it = "_" && side = `Lhs -> () | VarE x -> @@ -502,10 +494,6 @@ try valid_exp ~side env e1 t1; equiv_typ env t2 t e.at; sub_typ env t1 t2 e.at -with exn -> - let bt = Printexc.get_raw_backtrace () in - Printf.eprintf "[valid_exp] %s\n%!" (Debug.il_exp e); - Printexc.raise_with_backtrace exn bt and valid_expmix ?(side = `Rhs) env mixop e (mixop', t) at = @@ -706,19 +694,14 @@ let valid_rule env mixop t rule = let valid_clause env x ps t clause = Debug.(log_in "il.valid_clause" line); Debug.(log_in_at "il.valid_clause" clause.at - (fun _ -> fmt ": (%s) -> %s" (il_params ps) (il_typ t)) + (fun _ -> fmt "%s : (%s) -> %s" (il_id x) (il_params ps) (il_typ t)) ); -try match clause.it with | DefD (qs, as_, e, prems) -> let env' = valid_quants env qs in let s = valid_args env' as_ ps Subst.empty clause.at in valid_exp env' e (Subst.subst_typ s t); List.iter (valid_prem env') prems -with exn -> - let bt = Printexc.get_raw_backtrace () in - Printf.eprintf "[valid_clause] %s\n%!" (Debug.il_clause x clause); - Printexc.raise_with_backtrace exn bt let valid_prod env ps t prod = Debug.(log_in "il.valid_prod" line); diff --git a/spectec/test-frontend/TEST.md b/spectec/test-frontend/TEST.md index 67a5b76da..3ce2962b9 100644 --- a/spectec/test-frontend/TEST.md +++ b/spectec/test-frontend/TEST.md @@ -2,3539 +2,6 @@ ```sh $ (../src/exe-spectec/main.exe test.spectec -o test.tex && cat test.tex) -[check_dims] -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit _] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] testmixfix -DecD testmixfix(testmixfix : testmixfix) : nat* -[visit_id testmixfix] not free -[check_dims] nat -[visit_exp `{%}`_testmixfix(nat*{nat <- `nat*`})] -[visit_exp (nat*{nat <- `nat*`})] -[visit_exp nat*{nat <- `nat*`}] -[scope_enter nat] -[visit_exp nat] -[visit_id nat] not free -[visit_id nat] not free -[scope_exit nat] -[visit_exp `nat*`] -[visit_id nat*] no dims -[visit_id nat*] -[visit_exp nat*{nat <- `nat*`}] -[scope_enter nat] -[visit_exp nat] -[visit_id nat] not free -[visit_id nat] not free -[scope_exit nat] -[visit_exp `nat*`] -[visit_id nat*] not free -[visit_id nat*] no dims -=> - ;; test.spectec - def $testmixfix{`nat*` : nat*}(`{%}`_testmixfix(nat*{nat <- `nat*`})) = nat*{nat <- `nat*`} -[check_dims] nat -[visit_exp `[%]`_testmixfix(nat*{nat <- `nat*`})] -[visit_exp (nat*{nat <- `nat*`})] -[visit_exp nat*{nat <- `nat*`}] -[scope_enter nat] -[visit_exp nat] -[visit_id nat] not free -[visit_id nat] not free -[scope_exit nat] -[visit_exp `nat*`] -[visit_id nat*] no dims -[visit_id nat*] -[visit_exp nat*{nat <- `nat*`}] -[scope_enter nat] -[visit_exp nat] -[visit_id nat] not free -[visit_id nat] not free -[scope_exit nat] -[visit_exp `nat*`] -[visit_id nat*] not free -[visit_id nat*] no dims -=> - ;; test.spectec - def $testmixfix{`nat*` : nat*}(`[%]`_testmixfix(nat*{nat <- `nat*`})) = nat*{nat <- `nat*`} -[check_dims] nat_1 nat_2 -[visit_exp `%->%`_testmixfix(nat_1, nat_2)] -[visit_exp (nat_1, nat_2)] -[visit_exp nat_1] -[visit_id nat_1] -[visit_exp nat_2] -[visit_id nat_2] -[visit_exp [nat_1 nat_2]] -[visit_exp nat_1] -[visit_id nat_1] not free -[visit_exp nat_2] -[visit_id nat_2] not free -=> - ;; test.spectec - def $testmixfix{nat_1 : nat, nat_2 : nat}(`%->%`_testmixfix(nat_1, nat_2)) = [nat_1 nat_2] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[scope_enter opt] -[visit_id opt] not free -[visit_id opt] no dims -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit opt] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter O?] -[visit_id O?] not free -[visit_id O?] no dims -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit O?] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit _] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter list] -[visit_id list] not free -[visit_id list] no dims -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit list] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter L*] -[visit_id L*] not free -[visit_id L*] no dims -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit L*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit _] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter opt] -[visit_id opt] not free -[visit_id opt] no dims -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit opt] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter O?] -[visit_id O?] not free -[visit_id O?] no dims -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit O?] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit _] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter list] -[visit_id list] not free -[visit_id list] no dims -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit list] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter L*] -[visit_id L*] not free -[visit_id L*] no dims -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit L*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit _] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] variant -DecD testemptyv1(variant : variant) : nat -[visit_id variant] not free -[check_dims] opt -[visit_exp `V1`_variant(opt, 0)] -[visit_exp (opt, 0)] -[visit_exp opt] -[visit_id opt] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyv1{opt : opt}(`V1`_variant(opt, 0)) = 0 -[check_dims] -[visit_exp `V1`_variant(?(), 0)] -[visit_exp (?(), 0)] -[visit_exp ?()] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyv1(`V1`_variant(?(), 0)) = 0 -[check_dims] -[visit_exp `V1`_variant(?(), 0)] -[visit_exp (?(), 0)] -[visit_exp ?()] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyv1(`V1`_variant(?(), 0)) = 0 -[check_dims] -[visit_exp `V1`_variant(?(`O`_O), 0)] -[visit_exp (?(`O`_O), 0)] -[visit_exp ?(`O`_O)] -[visit_exp `O`_O] -[visit_exp ()] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyv1(`V1`_variant(?(`O`_O), 0)) = 0 -[check_dims] variant -DecD testemptyv2(variant : variant) : nat -[visit_id variant] not free -[check_dims] -[visit_exp `V2`_variant(?(), 0)] -[visit_exp (?(), 0)] -[visit_exp ?()] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyv2(`V2`_variant(?(), 0)) = 0 -[check_dims] -[visit_exp `V2`_variant(?(), 0)] -[visit_exp (?(), 0)] -[visit_exp ?()] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyv2(`V2`_variant(?(), 0)) = 0 -[check_dims] -[visit_exp `V2`_variant(?(`O`_O), 0)] -[visit_exp (?(`O`_O), 0)] -[visit_exp ?(`O`_O)] -[visit_exp `O`_O] -[visit_exp ()] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyv2(`V2`_variant(?(`O`_O), 0)) = 0 -[check_dims] variant -DecD testemptyv3(variant : variant) : nat -[visit_id variant] not free -[check_dims] -[visit_exp `V3`_variant(?(), 0)] -[visit_exp (?(), 0)] -[visit_exp ?()] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyv3(`V3`_variant(?(), 0)) = 0 -[check_dims] -[visit_exp `V3`_variant(?(), 0)] -[visit_exp (?(), 0)] -[visit_exp ?()] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyv3(`V3`_variant(?(), 0)) = 0 -[check_dims] -[visit_exp `V3`_variant(?(""), 0)] -[visit_exp (?(""), 0)] -[visit_exp ?("")] -[visit_exp ""] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyv3(`V3`_variant(?(""), 0)) = 0 -[check_dims] variant -DecD testemptyv4(variant : variant) : nat -[visit_id variant] not free -[check_dims] list -[visit_exp `V4`_variant(list, 0)] -[visit_exp (list, 0)] -[visit_exp list] -[visit_id list] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyv4{list : list}(`V4`_variant(list, 0)) = 0 -[check_dims] -[visit_exp `V4`_variant([], 0)] -[visit_exp ([], 0)] -[visit_exp []] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyv4(`V4`_variant([], 0)) = 0 -[check_dims] -[visit_exp `V4`_variant([], 0)] -[visit_exp ([], 0)] -[visit_exp []] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyv4(`V4`_variant([], 0)) = 0 -[check_dims] -[visit_exp `V4`_variant([`L`_L], 0)] -[visit_exp ([`L`_L], 0)] -[visit_exp [`L`_L]] -[visit_exp `L`_L] -[visit_exp ()] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyv4(`V4`_variant([`L`_L], 0)) = 0 -[check_dims] -[visit_exp `V4`_variant([`L`_L `L`_L `L`_L], 0)] -[visit_exp ([`L`_L `L`_L `L`_L], 0)] -[visit_exp [`L`_L `L`_L `L`_L]] -[visit_exp `L`_L] -[visit_exp ()] -[visit_exp `L`_L] -[visit_exp ()] -[visit_exp `L`_L] -[visit_exp ()] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyv4(`V4`_variant([`L`_L `L`_L `L`_L], 0)) = 0 -[check_dims] -[visit_exp `V4`_variant([], 0)] -[visit_exp ([], 0)] -[visit_exp []] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyv4(`V4`_variant([], 0)) = 0 -[check_dims] -[visit_exp `V4`_variant([`L`_L], 0)] -[visit_exp ([`L`_L], 0)] -[visit_exp [`L`_L]] -[visit_exp `L`_L] -[visit_exp ()] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyv4(`V4`_variant([`L`_L], 0)) = 0 -[check_dims] -[visit_exp `V4`_variant([`L`_L `L`_L `L`_L], 0)] -[visit_exp ([`L`_L `L`_L `L`_L], 0)] -[visit_exp [`L`_L `L`_L `L`_L]] -[visit_exp `L`_L] -[visit_exp ()] -[visit_exp `L`_L] -[visit_exp ()] -[visit_exp `L`_L] -[visit_exp ()] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyv4(`V4`_variant([`L`_L `L`_L `L`_L], 0)) = 0 -[check_dims] variant -DecD testemptyv5(variant : variant) : nat -[visit_id variant] not free -[check_dims] -[visit_exp `V5`_variant([], 0)] -[visit_exp ([], 0)] -[visit_exp []] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyv5(`V5`_variant([], 0)) = 0 -[check_dims] -[visit_exp `V5`_variant([], 0)] -[visit_exp ([], 0)] -[visit_exp []] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyv5(`V5`_variant([], 0)) = 0 -[check_dims] -[visit_exp `V5`_variant([`L`_L], 0)] -[visit_exp ([`L`_L], 0)] -[visit_exp [`L`_L]] -[visit_exp `L`_L] -[visit_exp ()] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyv5(`V5`_variant([`L`_L], 0)) = 0 -[check_dims] -[visit_exp `V5`_variant([`L`_L `L`_L `L`_L], 0)] -[visit_exp ([`L`_L `L`_L `L`_L], 0)] -[visit_exp [`L`_L `L`_L `L`_L]] -[visit_exp `L`_L] -[visit_exp ()] -[visit_exp `L`_L] -[visit_exp ()] -[visit_exp `L`_L] -[visit_exp ()] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyv5(`V5`_variant([`L`_L `L`_L `L`_L], 0)) = 0 -[check_dims] -[visit_exp `V5`_variant([], 0)] -[visit_exp ([], 0)] -[visit_exp []] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyv5(`V5`_variant([], 0)) = 0 -[check_dims] -[visit_exp `V5`_variant([`L`_L], 0)] -[visit_exp ([`L`_L], 0)] -[visit_exp [`L`_L]] -[visit_exp `L`_L] -[visit_exp ()] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyv5(`V5`_variant([`L`_L], 0)) = 0 -[check_dims] -[visit_exp `V5`_variant([`L`_L `L`_L `L`_L], 0)] -[visit_exp ([`L`_L `L`_L `L`_L], 0)] -[visit_exp [`L`_L `L`_L `L`_L]] -[visit_exp `L`_L] -[visit_exp ()] -[visit_exp `L`_L] -[visit_exp ()] -[visit_exp `L`_L] -[visit_exp ()] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyv5(`V5`_variant([`L`_L `L`_L `L`_L], 0)) = 0 -[check_dims] variant -DecD testemptyv6(variant : variant) : nat -[visit_id variant] not free -[check_dims] -[visit_exp `V6`_variant([], 0)] -[visit_exp ([], 0)] -[visit_exp []] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyv6(`V6`_variant([], 0)) = 0 -[check_dims] -[visit_exp `V6`_variant([], 0)] -[visit_exp ([], 0)] -[visit_exp []] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyv6(`V6`_variant([], 0)) = 0 -[check_dims] -[visit_exp `V6`_variant([""], 0)] -[visit_exp ([""], 0)] -[visit_exp [""]] -[visit_exp ""] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyv6(`V6`_variant([""], 0)) = 0 -[check_dims] -[visit_exp `V6`_variant(["" ""], 0)] -[visit_exp (["" ""], 0)] -[visit_exp ["" ""]] -[visit_exp ""] -[visit_exp ""] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyv6(`V6`_variant(["" ""], 0)) = 0 -[check_dims] -[visit_exp `V6`_variant([], 0)] -[visit_exp ([], 0)] -[visit_exp []] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyv6(`V6`_variant([], 0)) = 0 -[check_dims] -[visit_exp `V6`_variant([""], 0)] -[visit_exp ([""], 0)] -[visit_exp [""]] -[visit_exp ""] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyv6(`V6`_variant([""], 0)) = 0 -[check_dims] -[visit_exp `V6`_variant(["" ""], 0)] -[visit_exp (["" ""], 0)] -[visit_exp ["" ""]] -[visit_exp ""] -[visit_exp ""] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyv6(`V6`_variant(["" ""], 0)) = 0 -[check_dims] notation1 -DecD testemptyn1(notation1 : notation1) : nat -[visit_id notation1] not free -[check_dims] opt -[visit_exp `%%`_notation1(opt, 0)] -[visit_exp (opt, 0)] -[visit_exp opt] -[visit_id opt] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyn1{opt : opt}(`%%`_notation1(opt, 0)) = 0 -[check_dims] -[visit_exp `%%`_notation1(?(), 0)] -[visit_exp (?(), 0)] -[visit_exp ?()] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyn1(`%%`_notation1(?(), 0)) = 0 -[check_dims] -[visit_exp `%%`_notation1(?(), 0)] -[visit_exp (?(), 0)] -[visit_exp ?()] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyn1(`%%`_notation1(?(), 0)) = 0 -[check_dims] -[visit_exp `%%`_notation1(?(`O`_O), 0)] -[visit_exp (?(`O`_O), 0)] -[visit_exp ?(`O`_O)] -[visit_exp `O`_O] -[visit_exp ()] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyn1(`%%`_notation1(?(`O`_O), 0)) = 0 -[check_dims] notation2 -DecD testemptyn2(notation2 : notation2) : nat -[visit_id notation2] not free -[check_dims] -[visit_exp `%%`_notation2(?(), 0)] -[visit_exp (?(), 0)] -[visit_exp ?()] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyn2(`%%`_notation2(?(), 0)) = 0 -[check_dims] -[visit_exp `%%`_notation2(?(), 0)] -[visit_exp (?(), 0)] -[visit_exp ?()] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyn2(`%%`_notation2(?(), 0)) = 0 -[check_dims] -[visit_exp `%%`_notation2(?(`O`_O), 0)] -[visit_exp (?(`O`_O), 0)] -[visit_exp ?(`O`_O)] -[visit_exp `O`_O] -[visit_exp ()] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyn2(`%%`_notation2(?(`O`_O), 0)) = 0 -[check_dims] notation3 -DecD testemptyn3(notation3 : notation3) : nat -[visit_id notation3] not free -[check_dims] -[visit_exp `%%`_notation3(?(), 0)] -[visit_exp (?(), 0)] -[visit_exp ?()] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyn3(`%%`_notation3(?(), 0)) = 0 -[check_dims] -[visit_exp `%%`_notation3(?(), 0)] -[visit_exp (?(), 0)] -[visit_exp ?()] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyn3(`%%`_notation3(?(), 0)) = 0 -[check_dims] -[visit_exp `%%`_notation3(?(""), 0)] -[visit_exp (?(""), 0)] -[visit_exp ?("")] -[visit_exp ""] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyn3(`%%`_notation3(?(""), 0)) = 0 -[check_dims] notation4 -DecD testemptyn4(notation4 : notation4) : nat -[visit_id notation4] not free -[check_dims] list -[visit_exp `%%`_notation4(list, 0)] -[visit_exp (list, 0)] -[visit_exp list] -[visit_id list] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyn4{list : list}(`%%`_notation4(list, 0)) = 0 -[check_dims] -[visit_exp `%%`_notation4([], 0)] -[visit_exp ([], 0)] -[visit_exp []] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyn4(`%%`_notation4([], 0)) = 0 -[check_dims] -[visit_exp `%%`_notation4([], 0)] -[visit_exp ([], 0)] -[visit_exp []] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyn4(`%%`_notation4([], 0)) = 0 -[check_dims] -[visit_exp `%%`_notation4([`L`_L], 0)] -[visit_exp ([`L`_L], 0)] -[visit_exp [`L`_L]] -[visit_exp `L`_L] -[visit_exp ()] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyn4(`%%`_notation4([`L`_L], 0)) = 0 -[check_dims] -[visit_exp `%%`_notation4([`L`_L `L`_L `L`_L], 0)] -[visit_exp ([`L`_L `L`_L `L`_L], 0)] -[visit_exp [`L`_L `L`_L `L`_L]] -[visit_exp `L`_L] -[visit_exp ()] -[visit_exp `L`_L] -[visit_exp ()] -[visit_exp `L`_L] -[visit_exp ()] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyn4(`%%`_notation4([`L`_L `L`_L `L`_L], 0)) = 0 -[check_dims] -[visit_exp `%%`_notation4([], 0)] -[visit_exp ([], 0)] -[visit_exp []] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyn4(`%%`_notation4([], 0)) = 0 -[check_dims] -[visit_exp `%%`_notation4([`L`_L], 0)] -[visit_exp ([`L`_L], 0)] -[visit_exp [`L`_L]] -[visit_exp `L`_L] -[visit_exp ()] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyn4(`%%`_notation4([`L`_L], 0)) = 0 -[check_dims] -[visit_exp `%%`_notation4([`L`_L `L`_L `L`_L], 0)] -[visit_exp ([`L`_L `L`_L `L`_L], 0)] -[visit_exp [`L`_L `L`_L `L`_L]] -[visit_exp `L`_L] -[visit_exp ()] -[visit_exp `L`_L] -[visit_exp ()] -[visit_exp `L`_L] -[visit_exp ()] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyn4(`%%`_notation4([`L`_L `L`_L `L`_L], 0)) = 0 -[check_dims] notation5 -DecD testemptyn5(notation5 : notation5) : nat -[visit_id notation5] not free -[check_dims] -[visit_exp `%%`_notation5([], 0)] -[visit_exp ([], 0)] -[visit_exp []] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyn5(`%%`_notation5([], 0)) = 0 -[check_dims] -[visit_exp `%%`_notation5([], 0)] -[visit_exp ([], 0)] -[visit_exp []] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyn5(`%%`_notation5([], 0)) = 0 -[check_dims] -[visit_exp `%%`_notation5([`L`_L], 0)] -[visit_exp ([`L`_L], 0)] -[visit_exp [`L`_L]] -[visit_exp `L`_L] -[visit_exp ()] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyn5(`%%`_notation5([`L`_L], 0)) = 0 -[check_dims] -[visit_exp `%%`_notation5([`L`_L `L`_L `L`_L], 0)] -[visit_exp ([`L`_L `L`_L `L`_L], 0)] -[visit_exp [`L`_L `L`_L `L`_L]] -[visit_exp `L`_L] -[visit_exp ()] -[visit_exp `L`_L] -[visit_exp ()] -[visit_exp `L`_L] -[visit_exp ()] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyn5(`%%`_notation5([`L`_L `L`_L `L`_L], 0)) = 0 -[check_dims] -[visit_exp `%%`_notation5([], 0)] -[visit_exp ([], 0)] -[visit_exp []] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyn5(`%%`_notation5([], 0)) = 0 -[check_dims] -[visit_exp `%%`_notation5([`L`_L], 0)] -[visit_exp ([`L`_L], 0)] -[visit_exp [`L`_L]] -[visit_exp `L`_L] -[visit_exp ()] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyn5(`%%`_notation5([`L`_L], 0)) = 0 -[check_dims] -[visit_exp `%%`_notation5([`L`_L `L`_L `L`_L], 0)] -[visit_exp ([`L`_L `L`_L `L`_L], 0)] -[visit_exp [`L`_L `L`_L `L`_L]] -[visit_exp `L`_L] -[visit_exp ()] -[visit_exp `L`_L] -[visit_exp ()] -[visit_exp `L`_L] -[visit_exp ()] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyn5(`%%`_notation5([`L`_L `L`_L `L`_L], 0)) = 0 -[check_dims] notation6 -DecD testemptyn6(notation6 : notation6) : nat -[visit_id notation6] not free -[check_dims] -[visit_exp `%%`_notation6([], 0)] -[visit_exp ([], 0)] -[visit_exp []] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyn6(`%%`_notation6([], 0)) = 0 -[check_dims] -[visit_exp `%%`_notation6([], 0)] -[visit_exp ([], 0)] -[visit_exp []] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyn6(`%%`_notation6([], 0)) = 0 -[check_dims] -[visit_exp `%%`_notation6([""], 0)] -[visit_exp ([""], 0)] -[visit_exp [""]] -[visit_exp ""] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyn6(`%%`_notation6([""], 0)) = 0 -[check_dims] -[visit_exp `%%`_notation6(["" "" ""], 0)] -[visit_exp (["" "" ""], 0)] -[visit_exp ["" "" ""]] -[visit_exp ""] -[visit_exp ""] -[visit_exp ""] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyn6(`%%`_notation6(["" "" ""], 0)) = 0 -[check_dims] -[visit_exp `%%`_notation6([], 0)] -[visit_exp ([], 0)] -[visit_exp []] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyn6(`%%`_notation6([], 0)) = 0 -[check_dims] -[visit_exp `%%`_notation6([""], 0)] -[visit_exp ([""], 0)] -[visit_exp [""]] -[visit_exp ""] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyn6(`%%`_notation6([""], 0)) = 0 -[check_dims] -[visit_exp `%%`_notation6(["" "" ""], 0)] -[visit_exp (["" "" ""], 0)] -[visit_exp ["" "" ""]] -[visit_exp ""] -[visit_exp ""] -[visit_exp ""] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyn6(`%%`_notation6(["" "" ""], 0)) = 0 -[check_dims] -[visit_exp `%%`_notation6([], 0)] -[visit_exp ([], 0)] -[visit_exp []] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyn6(`%%`_notation6([], 0)) = 0 -[check_dims] -[visit_exp `%%`_notation6([""], 0)] -[visit_exp ([""], 0)] -[visit_exp [""]] -[visit_exp ""] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyn6(`%%`_notation6([""], 0)) = 0 -[check_dims] -[visit_exp `%%`_notation6(["" "" ""], 0)] -[visit_exp (["" "" ""], 0)] -[visit_exp ["" "" ""]] -[visit_exp ""] -[visit_exp ""] -[visit_exp ""] -[visit_exp 0] -[visit_exp 0] -=> - ;; test.spectec - def $testemptyn6(`%%`_notation6(["" "" ""], 0)) = 0 -[check_dims] _ -DecD fnest(nat**) : nat* -[visit_id _] not free -[check_dims] j k l n -[visit_exp n^(i - ;; test.spectec - def $fnest{i : nat, j : nat, `k*` : nat*, `n**` : nat**, `l*` : nat*}(n^(i - ;; test.spectec - def $f{syntax X, x : X}(syntax X, x) = x -[check_dims] X Y -DecD g(def $h(syntax X, X : X) : X, syntax Y, Y : Y) : Y -[visit_id X] not free -[visit_id Y] not free -[check_dims] y -[visit_exp y] -[visit_id y] -[visit_exp $h(syntax Y, y)] -[visit_exp y] -[visit_id y] not free -=> - ;; test.spectec - def $g{def $h(syntax X, X : X) : X, syntax Y, y : Y}(def $h, syntax Y, y) = $h(syntax Y, y) -[check_dims] -DecD x : nat -[check_dims] -[visit_exp ($g(def $f, syntax nat, 1) + $g(def $f, syntax nat, 2))] -[visit_exp $g(def $f, syntax nat, 1)] -[visit_exp 1] -[visit_exp $g(def $f, syntax nat, 2)] -[visit_exp 2] -=> - ;; test.spectec - def $x = ($g(def $f, syntax nat, 1) + $g(def $f, syntax nat, 2)) -[check_dims] -[check_dims] -[check_dims] int -DecD pppp(int : int, int : int) : int -[visit_id int] not free -[visit_id int] not free -[check_dims] int -DecD pppm(int : int, int : int) : int -[visit_id int] not free -[visit_id int] not free -[check_dims] int -DecD ppmp(int : int, int : int) : int -[visit_id int] not free -[visit_id int] not free -[check_dims] int -DecD ppmm(int : int, int : int) : int -[visit_id int] not free -[visit_id int] not free -[check_dims] int -DecD pmpp(int : int, int : int) : int -[visit_id int] not free -[visit_id int] not free -[check_dims] int -DecD pmpm(int : int, int : int) : int -[visit_id int] not free -[visit_id int] not free -[check_dims] int -DecD pmmp(int : int, int : int) : int -[visit_id int] not free -[visit_id int] not free -[check_dims] int -DecD pmmm(int : int, int : int) : int -[visit_id int] not free -[visit_id int] not free -[check_dims] int -DecD mppp(int : int, int : int) : int -[visit_id int] not free -[visit_id int] not free -[check_dims] int -DecD mppm(int : int, int : int) : int -[visit_id int] not free -[visit_id int] not free -[check_dims] int -DecD mpmp(int : int, int : int) : int -[visit_id int] not free -[visit_id int] not free -[check_dims] int -DecD mpmm(int : int, int : int) : int -[visit_id int] not free -[visit_id int] not free -[check_dims] int -DecD mmpp(int : int, int : int) : int -[visit_id int] not free -[visit_id int] not free -[check_dims] int -DecD mmpm(int : int, int : int) : int -[visit_id int] not free -[visit_id int] not free -[check_dims] int -DecD mmmp(int : int, int : int) : int -[visit_id int] not free -[visit_id int] not free -[check_dims] int -DecD mmmm(int : int, int : int) : int -[visit_id int] not free -[visit_id int] not free -[check_dims] m n -[visit_exp + (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] -[visit_exp + (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] -[visit_exp (+ (n : nat <:> int) + + (m : nat <:> int))] -[visit_exp + (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp + (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] not free -=> - ;; test.spectec - def $pppp{n : nat, m : nat}(+ (n : nat <:> int), + (m : nat <:> int)) = (+ (n : nat <:> int) + + (m : nat <:> int)) -[check_dims] m n -[visit_exp - (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] -[visit_exp - (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] -[visit_exp (- (n : nat <:> int) + - (m : nat <:> int))] -[visit_exp - (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp - (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] not free -=> - ;; test.spectec - def $pppp{n : nat, m : nat}(- (n : nat <:> int), - (m : nat <:> int)) = (- (n : nat <:> int) + - (m : nat <:> int)) -[check_dims] m n -[visit_exp + (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] -[visit_exp + (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] -[visit_exp (+ (n : nat <:> int) + - (m : nat <:> int))] -[visit_exp + (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp - (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] not free -=> - ;; test.spectec - def $pppm{n : nat, m : nat}(+ (n : nat <:> int), + (m : nat <:> int)) = (+ (n : nat <:> int) + - (m : nat <:> int)) -[check_dims] m n -[visit_exp - (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] -[visit_exp - (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] -[visit_exp (- (n : nat <:> int) + + (m : nat <:> int))] -[visit_exp - (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp + (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] not free -=> - ;; test.spectec - def $pppm{n : nat, m : nat}(- (n : nat <:> int), - (m : nat <:> int)) = (- (n : nat <:> int) + + (m : nat <:> int)) -[check_dims] m n -[visit_exp + (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] -[visit_exp + (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] -[visit_exp (- (n : nat <:> int) + + (m : nat <:> int))] -[visit_exp - (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp + (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] not free -=> - ;; test.spectec - def $ppmp{n : nat, m : nat}(+ (n : nat <:> int), + (m : nat <:> int)) = (- (n : nat <:> int) + + (m : nat <:> int)) -[check_dims] m n -[visit_exp - (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] -[visit_exp - (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] -[visit_exp (+ (n : nat <:> int) + - (m : nat <:> int))] -[visit_exp + (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp - (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] not free -=> - ;; test.spectec - def $ppmp{n : nat, m : nat}(- (n : nat <:> int), - (m : nat <:> int)) = (+ (n : nat <:> int) + - (m : nat <:> int)) -[check_dims] m n -[visit_exp + (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] -[visit_exp + (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] -[visit_exp (- (n : nat <:> int) + - (m : nat <:> int))] -[visit_exp - (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp - (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] not free -=> - ;; test.spectec - def $ppmm{n : nat, m : nat}(+ (n : nat <:> int), + (m : nat <:> int)) = (- (n : nat <:> int) + - (m : nat <:> int)) -[check_dims] m n -[visit_exp - (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] -[visit_exp - (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] -[visit_exp (+ (n : nat <:> int) + + (m : nat <:> int))] -[visit_exp + (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp + (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] not free -=> - ;; test.spectec - def $ppmm{n : nat, m : nat}(- (n : nat <:> int), - (m : nat <:> int)) = (+ (n : nat <:> int) + + (m : nat <:> int)) -[check_dims] m n -[visit_exp + (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] -[visit_exp - (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] -[visit_exp (+ (n : nat <:> int) + + (m : nat <:> int))] -[visit_exp + (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp + (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] not free -=> - ;; test.spectec - def $pmpp{n : nat, m : nat}(+ (n : nat <:> int), - (m : nat <:> int)) = (+ (n : nat <:> int) + + (m : nat <:> int)) -[check_dims] m n -[visit_exp - (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] -[visit_exp + (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] -[visit_exp (- (n : nat <:> int) + - (m : nat <:> int))] -[visit_exp - (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp - (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] not free -=> - ;; test.spectec - def $pmpp{n : nat, m : nat}(- (n : nat <:> int), + (m : nat <:> int)) = (- (n : nat <:> int) + - (m : nat <:> int)) -[check_dims] m n -[visit_exp + (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] -[visit_exp - (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] -[visit_exp (+ (n : nat <:> int) + - (m : nat <:> int))] -[visit_exp + (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp - (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] not free -=> - ;; test.spectec - def $pmpm{n : nat, m : nat}(+ (n : nat <:> int), - (m : nat <:> int)) = (+ (n : nat <:> int) + - (m : nat <:> int)) -[check_dims] m n -[visit_exp - (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] -[visit_exp + (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] -[visit_exp (- (n : nat <:> int) + + (m : nat <:> int))] -[visit_exp - (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp + (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] not free -=> - ;; test.spectec - def $pmpm{n : nat, m : nat}(- (n : nat <:> int), + (m : nat <:> int)) = (- (n : nat <:> int) + + (m : nat <:> int)) -[check_dims] m n -[visit_exp + (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] -[visit_exp - (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] -[visit_exp (- (n : nat <:> int) + + (m : nat <:> int))] -[visit_exp - (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp + (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] not free -=> - ;; test.spectec - def $pmmp{n : nat, m : nat}(+ (n : nat <:> int), - (m : nat <:> int)) = (- (n : nat <:> int) + + (m : nat <:> int)) -[check_dims] m n -[visit_exp - (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] -[visit_exp + (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] -[visit_exp (+ (n : nat <:> int) + - (m : nat <:> int))] -[visit_exp + (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp - (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] not free -=> - ;; test.spectec - def $pmmp{n : nat, m : nat}(- (n : nat <:> int), + (m : nat <:> int)) = (+ (n : nat <:> int) + - (m : nat <:> int)) -[check_dims] m n -[visit_exp + (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] -[visit_exp - (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] -[visit_exp (- (n : nat <:> int) + - (m : nat <:> int))] -[visit_exp - (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp - (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] not free -=> - ;; test.spectec - def $pmmm{n : nat, m : nat}(+ (n : nat <:> int), - (m : nat <:> int)) = (- (n : nat <:> int) + - (m : nat <:> int)) -[check_dims] m n -[visit_exp - (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] -[visit_exp + (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] -[visit_exp (+ (n : nat <:> int) + + (m : nat <:> int))] -[visit_exp + (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp + (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] not free -=> - ;; test.spectec - def $pmmm{n : nat, m : nat}(- (n : nat <:> int), + (m : nat <:> int)) = (+ (n : nat <:> int) + + (m : nat <:> int)) -[check_dims] m n -[visit_exp - (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] -[visit_exp + (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] -[visit_exp (+ (n : nat <:> int) + + (m : nat <:> int))] -[visit_exp + (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp + (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] not free -=> - ;; test.spectec - def $mppp{n : nat, m : nat}(- (n : nat <:> int), + (m : nat <:> int)) = (+ (n : nat <:> int) + + (m : nat <:> int)) -[check_dims] m n -[visit_exp + (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] -[visit_exp - (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] -[visit_exp (- (n : nat <:> int) + - (m : nat <:> int))] -[visit_exp - (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp - (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] not free -=> - ;; test.spectec - def $mppp{n : nat, m : nat}(+ (n : nat <:> int), - (m : nat <:> int)) = (- (n : nat <:> int) + - (m : nat <:> int)) -[check_dims] m n -[visit_exp - (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] -[visit_exp + (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] -[visit_exp (+ (n : nat <:> int) + - (m : nat <:> int))] -[visit_exp + (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp - (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] not free -=> - ;; test.spectec - def $mppm{n : nat, m : nat}(- (n : nat <:> int), + (m : nat <:> int)) = (+ (n : nat <:> int) + - (m : nat <:> int)) -[check_dims] m n -[visit_exp + (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] -[visit_exp - (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] -[visit_exp (- (n : nat <:> int) + + (m : nat <:> int))] -[visit_exp - (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp + (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] not free -=> - ;; test.spectec - def $mppm{n : nat, m : nat}(+ (n : nat <:> int), - (m : nat <:> int)) = (- (n : nat <:> int) + + (m : nat <:> int)) -[check_dims] m n -[visit_exp - (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] -[visit_exp + (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] -[visit_exp (- (n : nat <:> int) + + (m : nat <:> int))] -[visit_exp - (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp + (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] not free -=> - ;; test.spectec - def $mpmp{n : nat, m : nat}(- (n : nat <:> int), + (m : nat <:> int)) = (- (n : nat <:> int) + + (m : nat <:> int)) -[check_dims] m n -[visit_exp + (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] -[visit_exp - (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] -[visit_exp (+ (n : nat <:> int) + - (m : nat <:> int))] -[visit_exp + (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp - (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] not free -=> - ;; test.spectec - def $mpmp{n : nat, m : nat}(+ (n : nat <:> int), - (m : nat <:> int)) = (+ (n : nat <:> int) + - (m : nat <:> int)) -[check_dims] m n -[visit_exp - (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] -[visit_exp + (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] -[visit_exp (- (n : nat <:> int) + - (m : nat <:> int))] -[visit_exp - (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp - (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] not free -=> - ;; test.spectec - def $mpmm{n : nat, m : nat}(- (n : nat <:> int), + (m : nat <:> int)) = (- (n : nat <:> int) + - (m : nat <:> int)) -[check_dims] m n -[visit_exp + (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] -[visit_exp - (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] -[visit_exp (+ (n : nat <:> int) + + (m : nat <:> int))] -[visit_exp + (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp + (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] not free -=> - ;; test.spectec - def $mpmm{n : nat, m : nat}(+ (n : nat <:> int), - (m : nat <:> int)) = (+ (n : nat <:> int) + + (m : nat <:> int)) -[check_dims] m n -[visit_exp - (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] -[visit_exp - (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] -[visit_exp (+ (n : nat <:> int) + + (m : nat <:> int))] -[visit_exp + (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp + (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] not free -=> - ;; test.spectec - def $mmpp{n : nat, m : nat}(- (n : nat <:> int), - (m : nat <:> int)) = (+ (n : nat <:> int) + + (m : nat <:> int)) -[check_dims] m n -[visit_exp + (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] -[visit_exp + (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] -[visit_exp (- (n : nat <:> int) + - (m : nat <:> int))] -[visit_exp - (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp - (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] not free -=> - ;; test.spectec - def $mmpp{n : nat, m : nat}(+ (n : nat <:> int), + (m : nat <:> int)) = (- (n : nat <:> int) + - (m : nat <:> int)) -[check_dims] m n -[visit_exp - (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] -[visit_exp - (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] -[visit_exp (+ (n : nat <:> int) + - (m : nat <:> int))] -[visit_exp + (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp - (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] not free -=> - ;; test.spectec - def $mmpm{n : nat, m : nat}(- (n : nat <:> int), - (m : nat <:> int)) = (+ (n : nat <:> int) + - (m : nat <:> int)) -[check_dims] m n -[visit_exp + (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] -[visit_exp + (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] -[visit_exp (- (n : nat <:> int) + + (m : nat <:> int))] -[visit_exp - (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp + (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] not free -=> - ;; test.spectec - def $mmpm{n : nat, m : nat}(+ (n : nat <:> int), + (m : nat <:> int)) = (- (n : nat <:> int) + + (m : nat <:> int)) -[check_dims] m n -[visit_exp - (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] -[visit_exp - (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] -[visit_exp (- (n : nat <:> int) + + (m : nat <:> int))] -[visit_exp - (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp + (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] not free -=> - ;; test.spectec - def $mmmp{n : nat, m : nat}(- (n : nat <:> int), - (m : nat <:> int)) = (- (n : nat <:> int) + + (m : nat <:> int)) -[check_dims] m n -[visit_exp + (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] -[visit_exp + (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] -[visit_exp (+ (n : nat <:> int) + - (m : nat <:> int))] -[visit_exp + (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp - (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] not free -=> - ;; test.spectec - def $mmmp{n : nat, m : nat}(+ (n : nat <:> int), + (m : nat <:> int)) = (+ (n : nat <:> int) + - (m : nat <:> int)) -[check_dims] m n -[visit_exp - (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] -[visit_exp - (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] -[visit_exp (- (n : nat <:> int) + - (m : nat <:> int))] -[visit_exp - (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp - (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] not free -=> - ;; test.spectec - def $mmmm{n : nat, m : nat}(- (n : nat <:> int), - (m : nat <:> int)) = (- (n : nat <:> int) + - (m : nat <:> int)) -[check_dims] m n -[visit_exp + (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] -[visit_exp + (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] -[visit_exp (+ (n : nat <:> int) + + (m : nat <:> int))] -[visit_exp + (n : nat <:> int)] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp + (m : nat <:> int)] -[visit_exp (m : nat <:> int)] -[visit_exp m] -[visit_id m] not free -=> - ;; test.spectec - def $mmmm{n : nat, m : nat}(+ (n : nat <:> int), + (m : nat <:> int)) = (+ (n : nat <:> int) + + (m : nat <:> int)) -[check_dims] int -[visit_id int] not free -[check_dims] -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp + (1 : nat <:> int)] -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[check_dims] -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp + (7 : nat <:> int)] -[visit_exp (7 : nat <:> int)] -[visit_exp 7] -[check_dims] -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp - (1 : nat <:> int)] -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[check_dims] -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp - (7 : nat <:> int)] -[visit_exp (7 : nat <:> int)] -[visit_exp 7] -[check_dims] int_1 int_2 val -DecD eq(int_1 : int, int_2 : int, val : val(int_1)) : val(int_2) -[visit_id int_1] not free -[visit_id int_2] not free -[visit_id val] not free -[visit_exp int_1] -[visit_id int_1] not free -[visit_exp int_2] -[visit_id int_2] not free -[check_dims] x -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -=> - ;; test.spectec - def $eq{x : val((1 : nat <:> int))}((1 : nat <:> int), (1 : nat <:> int), x) = x -[check_dims] x -[visit_exp $pppp((3 : nat <:> int), (4 : nat <:> int))] -[visit_exp (3 : nat <:> int)] -[visit_exp 3] -[visit_exp (4 : nat <:> int)] -[visit_exp 4] -[visit_exp (7 : nat <:> int)] -[visit_exp 7] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -=> - ;; test.spectec - def $eq{x : val($pppp((3 : nat <:> int), (4 : nat <:> int)))}($pppp((3 : nat <:> int), (4 : nat <:> int)), (7 : nat <:> int), x) = x -[check_dims] x -[visit_exp $pppp(- (3 : nat <:> int), - (4 : nat <:> int))] -[visit_exp - (3 : nat <:> int)] -[visit_exp (3 : nat <:> int)] -[visit_exp 3] -[visit_exp - (4 : nat <:> int)] -[visit_exp (4 : nat <:> int)] -[visit_exp 4] -[visit_exp - (7 : nat <:> int)] -[visit_exp (7 : nat <:> int)] -[visit_exp 7] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -=> - ;; test.spectec - def $eq{x : val($pppp(- (3 : nat <:> int), - (4 : nat <:> int)))}($pppp(- (3 : nat <:> int), - (4 : nat <:> int)), - (7 : nat <:> int), x) = x -[check_dims] x -[visit_exp $pppm((3 : nat <:> int), (4 : nat <:> int))] -[visit_exp (3 : nat <:> int)] -[visit_exp 3] -[visit_exp (4 : nat <:> int)] -[visit_exp 4] -[visit_exp - (1 : nat <:> int)] -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -=> - ;; test.spectec - def $eq{x : val($pppm((3 : nat <:> int), (4 : nat <:> int)))}($pppm((3 : nat <:> int), (4 : nat <:> int)), - (1 : nat <:> int), x) = x -[check_dims] x -[visit_exp $pppm(- (3 : nat <:> int), - (4 : nat <:> int))] -[visit_exp - (3 : nat <:> int)] -[visit_exp (3 : nat <:> int)] -[visit_exp 3] -[visit_exp - (4 : nat <:> int)] -[visit_exp (4 : nat <:> int)] -[visit_exp 4] -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -=> - ;; test.spectec - def $eq{x : val($pppm(- (3 : nat <:> int), - (4 : nat <:> int)))}($pppm(- (3 : nat <:> int), - (4 : nat <:> int)), (1 : nat <:> int), x) = x -[check_dims] x -[visit_exp $ppmp((3 : nat <:> int), (4 : nat <:> int))] -[visit_exp (3 : nat <:> int)] -[visit_exp 3] -[visit_exp (4 : nat <:> int)] -[visit_exp 4] -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -=> - ;; test.spectec - def $eq{x : val($ppmp((3 : nat <:> int), (4 : nat <:> int)))}($ppmp((3 : nat <:> int), (4 : nat <:> int)), (1 : nat <:> int), x) = x -[check_dims] x -[visit_exp $ppmp(- (3 : nat <:> int), - (4 : nat <:> int))] -[visit_exp - (3 : nat <:> int)] -[visit_exp (3 : nat <:> int)] -[visit_exp 3] -[visit_exp - (4 : nat <:> int)] -[visit_exp (4 : nat <:> int)] -[visit_exp 4] -[visit_exp - (1 : nat <:> int)] -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -=> - ;; test.spectec - def $eq{x : val($ppmp(- (3 : nat <:> int), - (4 : nat <:> int)))}($ppmp(- (3 : nat <:> int), - (4 : nat <:> int)), - (1 : nat <:> int), x) = x -[check_dims] x -[visit_exp $ppmm((3 : nat <:> int), (4 : nat <:> int))] -[visit_exp (3 : nat <:> int)] -[visit_exp 3] -[visit_exp (4 : nat <:> int)] -[visit_exp 4] -[visit_exp - (7 : nat <:> int)] -[visit_exp (7 : nat <:> int)] -[visit_exp 7] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -=> - ;; test.spectec - def $eq{x : val($ppmm((3 : nat <:> int), (4 : nat <:> int)))}($ppmm((3 : nat <:> int), (4 : nat <:> int)), - (7 : nat <:> int), x) = x -[check_dims] x -[visit_exp $ppmm(- (3 : nat <:> int), - (4 : nat <:> int))] -[visit_exp - (3 : nat <:> int)] -[visit_exp (3 : nat <:> int)] -[visit_exp 3] -[visit_exp - (4 : nat <:> int)] -[visit_exp (4 : nat <:> int)] -[visit_exp 4] -[visit_exp (7 : nat <:> int)] -[visit_exp 7] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -=> - ;; test.spectec - def $eq{x : val($ppmm(- (3 : nat <:> int), - (4 : nat <:> int)))}($ppmm(- (3 : nat <:> int), - (4 : nat <:> int)), (7 : nat <:> int), x) = x -[check_dims] x -[visit_exp $pmpp((3 : nat <:> int), - (4 : nat <:> int))] -[visit_exp (3 : nat <:> int)] -[visit_exp 3] -[visit_exp - (4 : nat <:> int)] -[visit_exp (4 : nat <:> int)] -[visit_exp 4] -[visit_exp (7 : nat <:> int)] -[visit_exp 7] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -=> - ;; test.spectec - def $eq{x : val($pmpp((3 : nat <:> int), - (4 : nat <:> int)))}($pmpp((3 : nat <:> int), - (4 : nat <:> int)), (7 : nat <:> int), x) = x -[check_dims] x -[visit_exp $pmpp(- (3 : nat <:> int), (4 : nat <:> int))] -[visit_exp - (3 : nat <:> int)] -[visit_exp (3 : nat <:> int)] -[visit_exp 3] -[visit_exp (4 : nat <:> int)] -[visit_exp 4] -[visit_exp - (7 : nat <:> int)] -[visit_exp (7 : nat <:> int)] -[visit_exp 7] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -=> - ;; test.spectec - def $eq{x : val($pmpp(- (3 : nat <:> int), (4 : nat <:> int)))}($pmpp(- (3 : nat <:> int), (4 : nat <:> int)), - (7 : nat <:> int), x) = x -[check_dims] x -[visit_exp $pmpm((3 : nat <:> int), - (4 : nat <:> int))] -[visit_exp (3 : nat <:> int)] -[visit_exp 3] -[visit_exp - (4 : nat <:> int)] -[visit_exp (4 : nat <:> int)] -[visit_exp 4] -[visit_exp - (1 : nat <:> int)] -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -=> - ;; test.spectec - def $eq{x : val($pmpm((3 : nat <:> int), - (4 : nat <:> int)))}($pmpm((3 : nat <:> int), - (4 : nat <:> int)), - (1 : nat <:> int), x) = x -[check_dims] x -[visit_exp $pmpm(- (3 : nat <:> int), (4 : nat <:> int))] -[visit_exp - (3 : nat <:> int)] -[visit_exp (3 : nat <:> int)] -[visit_exp 3] -[visit_exp (4 : nat <:> int)] -[visit_exp 4] -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -=> - ;; test.spectec - def $eq{x : val($pmpm(- (3 : nat <:> int), (4 : nat <:> int)))}($pmpm(- (3 : nat <:> int), (4 : nat <:> int)), (1 : nat <:> int), x) = x -[check_dims] x -[visit_exp $pmmp((3 : nat <:> int), - (4 : nat <:> int))] -[visit_exp (3 : nat <:> int)] -[visit_exp 3] -[visit_exp - (4 : nat <:> int)] -[visit_exp (4 : nat <:> int)] -[visit_exp 4] -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -=> - ;; test.spectec - def $eq{x : val($pmmp((3 : nat <:> int), - (4 : nat <:> int)))}($pmmp((3 : nat <:> int), - (4 : nat <:> int)), (1 : nat <:> int), x) = x -[check_dims] x -[visit_exp $pmmp(- (3 : nat <:> int), (4 : nat <:> int))] -[visit_exp - (3 : nat <:> int)] -[visit_exp (3 : nat <:> int)] -[visit_exp 3] -[visit_exp (4 : nat <:> int)] -[visit_exp 4] -[visit_exp - (1 : nat <:> int)] -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -=> - ;; test.spectec - def $eq{x : val($pmmp(- (3 : nat <:> int), (4 : nat <:> int)))}($pmmp(- (3 : nat <:> int), (4 : nat <:> int)), - (1 : nat <:> int), x) = x -[check_dims] x -[visit_exp $pmmm((3 : nat <:> int), - (4 : nat <:> int))] -[visit_exp (3 : nat <:> int)] -[visit_exp 3] -[visit_exp - (4 : nat <:> int)] -[visit_exp (4 : nat <:> int)] -[visit_exp 4] -[visit_exp - (7 : nat <:> int)] -[visit_exp (7 : nat <:> int)] -[visit_exp 7] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -=> - ;; test.spectec - def $eq{x : val($pmmm((3 : nat <:> int), - (4 : nat <:> int)))}($pmmm((3 : nat <:> int), - (4 : nat <:> int)), - (7 : nat <:> int), x) = x -[check_dims] x -[visit_exp $pmmm(- (3 : nat <:> int), (4 : nat <:> int))] -[visit_exp - (3 : nat <:> int)] -[visit_exp (3 : nat <:> int)] -[visit_exp 3] -[visit_exp (4 : nat <:> int)] -[visit_exp 4] -[visit_exp (7 : nat <:> int)] -[visit_exp 7] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -=> - ;; test.spectec - def $eq{x : val($pmmm(- (3 : nat <:> int), (4 : nat <:> int)))}($pmmm(- (3 : nat <:> int), (4 : nat <:> int)), (7 : nat <:> int), x) = x -[check_dims] x -[visit_exp $mppp((3 : nat <:> int), - (4 : nat <:> int))] -[visit_exp (3 : nat <:> int)] -[visit_exp 3] -[visit_exp - (4 : nat <:> int)] -[visit_exp (4 : nat <:> int)] -[visit_exp 4] -[visit_exp - (7 : nat <:> int)] -[visit_exp (7 : nat <:> int)] -[visit_exp 7] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -=> - ;; test.spectec - def $eq{x : val($mppp((3 : nat <:> int), - (4 : nat <:> int)))}($mppp((3 : nat <:> int), - (4 : nat <:> int)), - (7 : nat <:> int), x) = x -[check_dims] x -[visit_exp $mppp(- (3 : nat <:> int), (4 : nat <:> int))] -[visit_exp - (3 : nat <:> int)] -[visit_exp (3 : nat <:> int)] -[visit_exp 3] -[visit_exp (4 : nat <:> int)] -[visit_exp 4] -[visit_exp (7 : nat <:> int)] -[visit_exp 7] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -=> - ;; test.spectec - def $eq{x : val($mppp(- (3 : nat <:> int), (4 : nat <:> int)))}($mppp(- (3 : nat <:> int), (4 : nat <:> int)), (7 : nat <:> int), x) = x -[check_dims] x -[visit_exp $mppm((3 : nat <:> int), - (4 : nat <:> int))] -[visit_exp (3 : nat <:> int)] -[visit_exp 3] -[visit_exp - (4 : nat <:> int)] -[visit_exp (4 : nat <:> int)] -[visit_exp 4] -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -=> - ;; test.spectec - def $eq{x : val($mppm((3 : nat <:> int), - (4 : nat <:> int)))}($mppm((3 : nat <:> int), - (4 : nat <:> int)), (1 : nat <:> int), x) = x -[check_dims] x -[visit_exp $mppm(- (3 : nat <:> int), (4 : nat <:> int))] -[visit_exp - (3 : nat <:> int)] -[visit_exp (3 : nat <:> int)] -[visit_exp 3] -[visit_exp (4 : nat <:> int)] -[visit_exp 4] -[visit_exp - (1 : nat <:> int)] -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -=> - ;; test.spectec - def $eq{x : val($mppm(- (3 : nat <:> int), (4 : nat <:> int)))}($mppm(- (3 : nat <:> int), (4 : nat <:> int)), - (1 : nat <:> int), x) = x -[check_dims] x -[visit_exp $mpmp((3 : nat <:> int), - (4 : nat <:> int))] -[visit_exp (3 : nat <:> int)] -[visit_exp 3] -[visit_exp - (4 : nat <:> int)] -[visit_exp (4 : nat <:> int)] -[visit_exp 4] -[visit_exp - (1 : nat <:> int)] -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -=> - ;; test.spectec - def $eq{x : val($mpmp((3 : nat <:> int), - (4 : nat <:> int)))}($mpmp((3 : nat <:> int), - (4 : nat <:> int)), - (1 : nat <:> int), x) = x -[check_dims] x -[visit_exp $mpmp(- (3 : nat <:> int), (4 : nat <:> int))] -[visit_exp - (3 : nat <:> int)] -[visit_exp (3 : nat <:> int)] -[visit_exp 3] -[visit_exp (4 : nat <:> int)] -[visit_exp 4] -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -=> - ;; test.spectec - def $eq{x : val($mpmp(- (3 : nat <:> int), (4 : nat <:> int)))}($mpmp(- (3 : nat <:> int), (4 : nat <:> int)), (1 : nat <:> int), x) = x -[check_dims] x -[visit_exp $mpmm((3 : nat <:> int), - (4 : nat <:> int))] -[visit_exp (3 : nat <:> int)] -[visit_exp 3] -[visit_exp - (4 : nat <:> int)] -[visit_exp (4 : nat <:> int)] -[visit_exp 4] -[visit_exp (7 : nat <:> int)] -[visit_exp 7] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -=> - ;; test.spectec - def $eq{x : val($mpmm((3 : nat <:> int), - (4 : nat <:> int)))}($mpmm((3 : nat <:> int), - (4 : nat <:> int)), (7 : nat <:> int), x) = x -[check_dims] x -[visit_exp $mpmm(- (3 : nat <:> int), (4 : nat <:> int))] -[visit_exp - (3 : nat <:> int)] -[visit_exp (3 : nat <:> int)] -[visit_exp 3] -[visit_exp (4 : nat <:> int)] -[visit_exp 4] -[visit_exp - (7 : nat <:> int)] -[visit_exp (7 : nat <:> int)] -[visit_exp 7] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -=> - ;; test.spectec - def $eq{x : val($mpmm(- (3 : nat <:> int), (4 : nat <:> int)))}($mpmm(- (3 : nat <:> int), (4 : nat <:> int)), - (7 : nat <:> int), x) = x -[check_dims] x -[visit_exp $mmpp((3 : nat <:> int), (4 : nat <:> int))] -[visit_exp (3 : nat <:> int)] -[visit_exp 3] -[visit_exp (4 : nat <:> int)] -[visit_exp 4] -[visit_exp - (7 : nat <:> int)] -[visit_exp (7 : nat <:> int)] -[visit_exp 7] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -=> - ;; test.spectec - def $eq{x : val($mmpp((3 : nat <:> int), (4 : nat <:> int)))}($mmpp((3 : nat <:> int), (4 : nat <:> int)), - (7 : nat <:> int), x) = x -[check_dims] x -[visit_exp $mmpp(- (3 : nat <:> int), - (4 : nat <:> int))] -[visit_exp - (3 : nat <:> int)] -[visit_exp (3 : nat <:> int)] -[visit_exp 3] -[visit_exp - (4 : nat <:> int)] -[visit_exp (4 : nat <:> int)] -[visit_exp 4] -[visit_exp (7 : nat <:> int)] -[visit_exp 7] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -=> - ;; test.spectec - def $eq{x : val($mmpp(- (3 : nat <:> int), - (4 : nat <:> int)))}($mmpp(- (3 : nat <:> int), - (4 : nat <:> int)), (7 : nat <:> int), x) = x -[check_dims] x -[visit_exp $mmpm((3 : nat <:> int), (4 : nat <:> int))] -[visit_exp (3 : nat <:> int)] -[visit_exp 3] -[visit_exp (4 : nat <:> int)] -[visit_exp 4] -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -=> - ;; test.spectec - def $eq{x : val($mmpm((3 : nat <:> int), (4 : nat <:> int)))}($mmpm((3 : nat <:> int), (4 : nat <:> int)), (1 : nat <:> int), x) = x -[check_dims] x -[visit_exp $mmpm(- (3 : nat <:> int), - (4 : nat <:> int))] -[visit_exp - (3 : nat <:> int)] -[visit_exp (3 : nat <:> int)] -[visit_exp 3] -[visit_exp - (4 : nat <:> int)] -[visit_exp (4 : nat <:> int)] -[visit_exp 4] -[visit_exp - (1 : nat <:> int)] -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -=> - ;; test.spectec - def $eq{x : val($mmpm(- (3 : nat <:> int), - (4 : nat <:> int)))}($mmpm(- (3 : nat <:> int), - (4 : nat <:> int)), - (1 : nat <:> int), x) = x -[check_dims] x -[visit_exp $mmmp((3 : nat <:> int), (4 : nat <:> int))] -[visit_exp (3 : nat <:> int)] -[visit_exp 3] -[visit_exp (4 : nat <:> int)] -[visit_exp 4] -[visit_exp - (1 : nat <:> int)] -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -=> - ;; test.spectec - def $eq{x : val($mmmp((3 : nat <:> int), (4 : nat <:> int)))}($mmmp((3 : nat <:> int), (4 : nat <:> int)), - (1 : nat <:> int), x) = x -[check_dims] x -[visit_exp $mmmp(- (3 : nat <:> int), - (4 : nat <:> int))] -[visit_exp - (3 : nat <:> int)] -[visit_exp (3 : nat <:> int)] -[visit_exp 3] -[visit_exp - (4 : nat <:> int)] -[visit_exp (4 : nat <:> int)] -[visit_exp 4] -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -=> - ;; test.spectec - def $eq{x : val($mmmp(- (3 : nat <:> int), - (4 : nat <:> int)))}($mmmp(- (3 : nat <:> int), - (4 : nat <:> int)), (1 : nat <:> int), x) = x -[check_dims] x -[visit_exp $mmmm((3 : nat <:> int), (4 : nat <:> int))] -[visit_exp (3 : nat <:> int)] -[visit_exp 3] -[visit_exp (4 : nat <:> int)] -[visit_exp 4] -[visit_exp (7 : nat <:> int)] -[visit_exp 7] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -=> - ;; test.spectec - def $eq{x : val($mmmm((3 : nat <:> int), (4 : nat <:> int)))}($mmmm((3 : nat <:> int), (4 : nat <:> int)), (7 : nat <:> int), x) = x -[check_dims] x -[visit_exp $mmmm(- (3 : nat <:> int), - (4 : nat <:> int))] -[visit_exp - (3 : nat <:> int)] -[visit_exp (3 : nat <:> int)] -[visit_exp 3] -[visit_exp - (4 : nat <:> int)] -[visit_exp (4 : nat <:> int)] -[visit_exp 4] -[visit_exp - (7 : nat <:> int)] -[visit_exp (7 : nat <:> int)] -[visit_exp 7] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -=> - ;; test.spectec - def $eq{x : val($mmmm(- (3 : nat <:> int), - (4 : nat <:> int)))}($mmmm(- (3 : nat <:> int), - (4 : nat <:> int)), - (7 : nat <:> int), x) = x -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp 0] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp 0] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp 0] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp 0] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp 0] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp 0] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp 0] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp 0] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp 0] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp 0] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp 0] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp 0] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp 0] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp 0] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp 0] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp 0] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp 0] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp 0] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp 0] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp 0] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp 0] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp 0] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp 0] -[check_dims] -dims \ = -[visit_exp 1] -[check_dims] -dims \ = -[visit_exp 2] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp 0] -[check_dims] -dims \ = -[visit_exp 1] -[check_dims] -dims \ = -[visit_exp 2] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp 0] -[check_dims] -dims \ = -[visit_exp 1] -[check_dims] -dims \ = -[visit_exp 2] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp 0] -[check_dims] -dims \ = -[visit_exp 1] -[check_dims] -dims \ = -[visit_exp 2] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp 0] -[check_dims] -dims \ = -[visit_exp 1] -[check_dims] -dims \ = -[visit_exp 2] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp 0] -[check_dims] -dims \ = -[visit_exp 1] -[check_dims] -dims \ = -[visit_exp 2] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp 0] -[check_dims] -dims \ = -[visit_exp 1] -[check_dims] -dims \ = -[visit_exp 2] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp 0] -[check_dims] -dims \ = -[visit_exp 1] -[check_dims] -dims \ = -[visit_exp 2] -ps' = -[check_dims] -[check_dims] -[visit_exp 0] -[visit_exp 255] -ps' = -[check_dims] -[check_dims] -[visit_exp 0] -[visit_exp 255] -ps' = -[check_dims] -[check_dims] -[visit_exp 1] -[visit_exp 26] -ps' = -[check_dims] -[check_dims] -[visit_exp 0] -[visit_exp 65] -ps' = -[check_dims] -[check_dims] -[visit_exp 65] -[visit_exp 255] -ps' = -[check_dims] -[check_dims] -[visit_exp 0] -[visit_exp 255] -ps' = -[check_dims] -[check_dims] -[visit_exp 0] -[visit_exp 255] -ps' = -[check_dims] -[check_dims] -[visit_exp 1] -[visit_exp 26] -ps' = -[check_dims] -[check_dims] -[visit_exp 0] -[visit_exp 127] -[check_dims] -dims \ = -[visit_exp 255] -ps' = -[check_dims] -[check_dims] -[visit_exp 0] -[visit_exp 127] -[check_dims] -dims \ = -[visit_exp 255] -ps' = -[check_dims] -[check_dims] -[visit_exp 0] -[visit_exp 5] -[check_dims] -dims \ = -[visit_exp 10] -ps' = -[check_dims] -[check_dims] -[visit_exp 0] -[visit_exp 127] -[check_dims] -dims \ = -[visit_exp 255] -ps' = -[check_dims] -[check_dims] -[visit_exp 0] -[visit_exp 127] -[check_dims] -dims \ = -[visit_exp 255] -ps' = -[check_dims] -[check_dims] -[visit_exp 0] -[visit_exp 5] -[check_dims] -dims \ = -[visit_exp 10] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp 255] -[check_dims] -[visit_exp 0] -[visit_exp 127] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp 255] -[check_dims] -[visit_exp 0] -[visit_exp 127] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp 10] -[check_dims] -[visit_exp 0] -[visit_exp 5] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp 255] -[check_dims] -[visit_exp 0] -[visit_exp 127] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp 255] -[check_dims] -[visit_exp 0] -[visit_exp 127] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp 10] -[check_dims] -[visit_exp 0] -[visit_exp 5] -ps' = -[check_dims] -[check_dims] -[visit_exp 0] -[visit_exp 31] -[check_dims] -[visit_exp 128] -[visit_exp 143] -ps' = -[check_dims] -[check_dims] -[visit_exp 0] -[visit_exp 31] -[check_dims] -[visit_exp 128] -[visit_exp 143] -ps' = -[check_dims] -[check_dims] -[visit_exp 0] -[visit_exp 5] -[check_dims] -[visit_exp 0] -[visit_exp 5] -ps' = -[check_dims] -[check_dims] -[visit_exp 0] -[visit_exp 31] -[check_dims] -[visit_exp 128] -[visit_exp 143] -ps' = -[check_dims] -[check_dims] -[visit_exp 0] -[visit_exp 31] -[check_dims] -[visit_exp 128] -[visit_exp 143] -ps' = -[check_dims] -[check_dims] -[visit_exp 0] -[visit_exp 5] -[check_dims] -[visit_exp 0] -[visit_exp 5] -ps' = -[check_dims] -[check_dims] -[visit_exp 0] -[visit_exp 31] -[check_dims] -dims \ = -[visit_exp 0] -[check_dims] -[visit_exp 127] -[visit_exp 143] -ps' = -[check_dims] -[check_dims] -[visit_exp 0] -[visit_exp 31] -[check_dims] -dims \ = -[visit_exp 0] -[check_dims] -[visit_exp 90] -[visit_exp 143] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp 0] -[check_dims] -dims \ = -[visit_exp 1] -[check_dims] -[visit_exp 0] -[visit_exp 9] -[check_dims] -[visit_exp 10] -[visit_exp 35] -[check_dims] -dims \ = -[visit_exp 0] -[check_dims] -dims \ = -[visit_exp 0] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp 0] -[check_dims] -[visit_exp 0] -[visit_exp 9] -[check_dims] -[visit_exp 10] -[visit_exp 35] -[check_dims] -dims \ = -[visit_exp 0] -[check_dims] -dims \ = -[visit_exp 0] -[] nat* nat* -[] nat* nat* -[] nat* nat* -[] nat* nat* -[] nat* nat^j -[] nat** nat^k^j -[] nat* nat^k -[] nat* nat^j -[] nat* nat^j -[] nat* nat^j -[] nat** nat^k^j -[] nat* nat^k -[] nat* nat^k cat: test.tex: No such file or directory [1] ``` @@ -3547,83279 +14,6 @@ $ (../src/exe-spectec/main.exe ../../../../specification/wasm-3.0/*.spectec -v - spectec 0.5 generator == Parsing... == Elaboration... -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] nat -DecD min(nat : nat, nat : nat) : nat -[visit_id nat] not free -[visit_id nat] not free -[check_dims] i j -[visit_exp i] -[visit_id i] -[visit_exp j] -[visit_id j] -[visit_exp i] -[visit_id i] not free -[visit_exp (i <= j)] -[visit_exp i] -[visit_id i] not free -[visit_exp j] -[visit_id j] not free -=> - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec - def $min{i : nat, j : nat}(i, j) = i - -- if (i <= j) -[check_dims] i j -[visit_exp i] -[visit_id i] -[visit_exp j] -[visit_id j] -[visit_exp j] -[visit_id j] not free -=> - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec - def $min{i : nat, j : nat}(i, j) = j - -- otherwise -[check_dims] _ -DecD sum(nat*) : nat -[visit_id _] not free -[check_dims] -[visit_exp []] -[visit_exp 0] -=> - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec - def $sum([]) = 0 -[check_dims] n n' -[visit_exp [n] ++ n'*{n' <- `n'*`}] -[visit_exp [n]] -[visit_exp n] -[visit_id n] -[visit_exp n'*{n' <- `n'*`}] -[scope_enter n'] -[visit_exp n'] -[visit_id n'] not free -[visit_id n'] not free -[scope_exit n'] -[visit_exp `n'*`] -[visit_id n'*] no dims -[visit_id n'*] -[visit_exp (n + $sum(n'*{n' <- `n'*`}))] -[visit_exp n] -[visit_id n] not free -[visit_exp $sum(n'*{n' <- `n'*`})] -[visit_exp n'*{n' <- `n'*`}] -[scope_enter n'] -[visit_exp n'] -[visit_id n'] not free -[visit_id n'] not free -[scope_exit n'] -[visit_exp `n'*`] -[visit_id n'*] not free -[visit_id n'*] no dims -=> - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec - def $sum{n : n, `n'*` : n*}([n] ++ n'*{n' <- `n'*`}) = (n + $sum(n'*{n' <- `n'*`})) -[check_dims] _ -DecD prod(nat*) : nat -[visit_id _] not free -[check_dims] -[visit_exp []] -[visit_exp 1] -=> - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec - def $prod([]) = 1 -[check_dims] n n' -[visit_exp [n] ++ n'*{n' <- `n'*`}] -[visit_exp [n]] -[visit_exp n] -[visit_id n] -[visit_exp n'*{n' <- `n'*`}] -[scope_enter n'] -[visit_exp n'] -[visit_id n'] not free -[visit_id n'] not free -[scope_exit n'] -[visit_exp `n'*`] -[visit_id n'*] no dims -[visit_id n'*] -[visit_exp (n * $prod(n'*{n' <- `n'*`}))] -[visit_exp n] -[visit_id n] not free -[visit_exp $prod(n'*{n' <- `n'*`})] -[visit_exp n'*{n' <- `n'*`}] -[scope_enter n'] -[visit_exp n'] -[visit_id n'] not free -[visit_id n'] not free -[scope_exit n'] -[visit_exp `n'*`] -[visit_id n'*] not free -[visit_id n'*] no dims -=> - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec - def $prod{n : n, `n'*` : n*}([n] ++ n'*{n' <- `n'*`}) = (n * $prod(n'*{n' <- `n'*`})) -[check_dims] X _ -DecD opt_(syntax X, X*) : X? -[visit_id _] not free -[check_dims] -[visit_exp []] -[visit_exp ?()] -=> - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec - def $opt_{syntax X}(syntax X, []) = ?() -[check_dims] w -[visit_exp [w]] -[visit_exp w] -[visit_id w] -[visit_exp ?(w)] -[visit_exp w] -[visit_id w] not free -=> - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec - def $opt_{syntax X, w : X}(syntax X, [w]) = ?(w) -[check_dims] X _ -DecD concat_(syntax X, X**) : X* -[visit_id _] not free -[check_dims] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec - def $concat_{syntax X}(syntax X, []) = [] -[check_dims] w w' -[visit_exp [w*{w <- `w*`}] ++ w'*{w' <- `w'*`}*{`w'*` <- `w'**`}] -[visit_exp [w*{w <- `w*`}]] -[visit_exp w*{w <- `w*`}] -[scope_enter w] -[visit_exp w] -[visit_id w] not free -[visit_id w] not free -[scope_exit w] -[visit_exp `w*`] -[visit_id w*] no dims -[visit_id w*] -[visit_exp w'*{w' <- `w'*`}*{`w'*` <- `w'**`}] -[scope_enter w'*] -[visit_exp w'*{w' <- `w'*`}] -[scope_enter w'] -[visit_exp w'] -[visit_id w'] not free -[visit_id w'] not free -[scope_exit w'] -[visit_exp `w'*`] -[visit_id w'*] not free -[visit_id w'*] no dims -[visit_id w'*] not free -[visit_id w'*] no dims -[scope_exit w'*] -[visit_exp `w'**`] -[visit_id w'**] no dims -[visit_id w'**] -[visit_exp w*{w <- `w*`} ++ $concat_(syntax X, w'*{w' <- `w'*`}*{`w'*` <- `w'**`})] -[visit_exp w*{w <- `w*`}] -[scope_enter w] -[visit_exp w] -[visit_id w] not free -[visit_id w] not free -[scope_exit w] -[visit_exp `w*`] -[visit_id w*] not free -[visit_id w*] no dims -[visit_exp $concat_(syntax X, w'*{w' <- `w'*`}*{`w'*` <- `w'**`})] -[visit_exp w'*{w' <- `w'*`}*{`w'*` <- `w'**`}] -[scope_enter w'*] -[visit_exp w'*{w' <- `w'*`}] -[scope_enter w'] -[visit_exp w'] -[visit_id w'] not free -[visit_id w'] not free -[scope_exit w'] -[visit_exp `w'*`] -[visit_id w'*] not free -[visit_id w'*] no dims -[visit_id w'*] not free -[visit_id w'*] no dims -[scope_exit w'*] -[visit_exp `w'**`] -[visit_id w'**] not free -[visit_id w'**] no dims -=> - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec - 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'**`}) -[check_dims] X _ nat -DecD concatn_(syntax X, X**, nat : nat) : X* -[visit_id _] not free -[visit_id nat] not free -[check_dims] n -[visit_exp []] -[visit_exp n] -[visit_id n] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec - def $concatn_{syntax X, n : n}(syntax X, [], n) = [] -[check_dims] n w w' -[visit_exp [w^n{w <- `w*`}] ++ w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}] -[visit_exp [w^n{w <- `w*`}]] -[visit_exp w^n{w <- `w*`}] -[scope_enter w] -[visit_exp w] -[visit_id w] not free -[visit_id w] not free -[scope_exit w] -[visit_exp n] -[visit_id n] -[visit_exp `w*`] -[visit_id w*] no dims -[visit_id w*] -[visit_exp w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}] -[scope_enter w'*] -[visit_exp w'^n{w' <- `w'*`}] -[scope_enter w'] -[visit_exp w'] -[visit_id w'] not free -[visit_id w'] not free -[scope_exit w'] -[visit_exp n] -[visit_id n] not free -[visit_exp `w'*`] -[visit_id w'*] not free -[visit_id w'*] no dims -[visit_id w'*] not free -[visit_id w'*] no dims -[scope_exit w'*] -[visit_exp `w'**`] -[visit_id w'**] no dims -[visit_id w'**] -[visit_exp n] -[visit_id n] not free -[visit_exp w^n{w <- `w*`} ++ $concatn_(syntax X, w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}, n)] -[visit_exp w^n{w <- `w*`}] -[scope_enter w] -[visit_exp w] -[visit_id w] not free -[visit_id w] not free -[scope_exit w] -[visit_exp n] -[visit_id n] not free -[visit_exp `w*`] -[visit_id w*] not free -[visit_id w*] no dims -[visit_exp $concatn_(syntax X, w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}, n)] -[visit_exp w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}] -[scope_enter w'*] -[visit_exp w'^n{w' <- `w'*`}] -[scope_enter w'] -[visit_exp w'] -[visit_id w'] not free -[visit_id w'] not free -[scope_exit w'] -[visit_exp n] -[visit_id n] not free -[visit_exp `w'*`] -[visit_id w'*] not free -[visit_id w'*] no dims -[visit_id w'*] not free -[visit_id w'*] no dims -[scope_exit w'*] -[visit_exp `w'**`] -[visit_id w'**] not free -[visit_id w'**] no dims -[visit_exp n] -[visit_id n] not free -=> - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec - def $concatn_{syntax X, n : n, `w*` : X*, `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) -[check_dims] X _ -DecD concatopt_(syntax X, X?*) : X* -[visit_id _] not free -[check_dims] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec - def $concatopt_{syntax X}(syntax X, []) = [] -[check_dims] w w' -[visit_exp [w?{w <- `w?`}] ++ w'?{w' <- `w'?`}*{`w'?` <- `w'?*`}] -[visit_exp [w?{w <- `w?`}]] -[visit_exp w?{w <- `w?`}] -[scope_enter w] -[visit_exp w] -[visit_id w] not free -[visit_id w] not free -[scope_exit w] -[visit_exp `w?`] -[visit_id w?] no dims -[visit_id w?] -[visit_exp w'?{w' <- `w'?`}*{`w'?` <- `w'?*`}] -[scope_enter w'?] -[visit_exp w'?{w' <- `w'?`}] -[scope_enter w'] -[visit_exp w'] -[visit_id w'] not free -[visit_id w'] not free -[scope_exit w'] -[visit_exp `w'?`] -[visit_id w'?] not free -[visit_id w'?] no dims -[visit_id w'?] not free -[visit_id w'?] no dims -[scope_exit w'?] -[visit_exp `w'?*`] -[visit_id w'?*] no dims -[visit_id w'?*] -[visit_exp lift(w?{w <- `w?`}) ++ $concat_(syntax X, lift(w'?{w' <- `w'?`})*{`w'?` <- `w'?*`})] -[visit_exp lift(w?{w <- `w?`})] -[visit_exp w?{w <- `w?`}] -[scope_enter w] -[visit_exp w] -[visit_id w] not free -[visit_id w] not free -[scope_exit w] -[visit_exp `w?`] -[visit_id w?] not free -[visit_id w?] no dims -[visit_exp $concat_(syntax X, lift(w'?{w' <- `w'?`})*{`w'?` <- `w'?*`})] -[visit_exp lift(w'?{w' <- `w'?`})*{`w'?` <- `w'?*`}] -[scope_enter w'?] -[visit_exp lift(w'?{w' <- `w'?`})] -[visit_exp w'?{w' <- `w'?`}] -[scope_enter w'] -[visit_exp w'] -[visit_id w'] not free -[visit_id w'] not free -[scope_exit w'] -[visit_exp `w'?`] -[visit_id w'?] not free -[visit_id w'?] no dims -[visit_id w'?] not free -[visit_id w'?] no dims -[scope_exit w'?] -[visit_exp `w'?*`] -[visit_id w'?*] not free -[visit_id w'?*] no dims -=> - ;; ../../../../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'?*`}) -[check_dims] X _ -DecD inv_concat_(syntax X, X*) : X** -[visit_id _] not free -[check_dims] X _ nat -DecD inv_concatn_(syntax X, nat : nat, X*) : X** -[visit_id nat] not free -[visit_id _] not free -[check_dims] X _ -DecD disjoint_(syntax X, X*) : bool -[visit_id _] not free -[check_dims] -[visit_exp []] -[visit_exp true] -=> - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec - def $disjoint_{syntax X}(syntax X, []) = true -[check_dims] w w' -[visit_exp [w] ++ w'*{w' <- `w'*`}] -[visit_exp [w]] -[visit_exp w] -[visit_id w] -[visit_exp w'*{w' <- `w'*`}] -[scope_enter w'] -[visit_exp w'] -[visit_id w'] not free -[visit_id w'] not free -[scope_exit w'] -[visit_exp `w'*`] -[visit_id w'*] no dims -[visit_id w'*] -[visit_exp (~ (w <- w'*{w' <- `w'*`}) /\ $disjoint_(syntax X, w'*{w' <- `w'*`}))] -[visit_exp ~ (w <- w'*{w' <- `w'*`})] -[visit_exp (w <- w'*{w' <- `w'*`})] -[visit_exp w] -[visit_id w] not free -[visit_exp w'*{w' <- `w'*`}] -[scope_enter w'] -[visit_exp w'] -[visit_id w'] not free -[visit_id w'] not free -[scope_exit w'] -[visit_exp `w'*`] -[visit_id w'*] not free -[visit_id w'*] no dims -[visit_exp $disjoint_(syntax X, w'*{w' <- `w'*`})] -[visit_exp w'*{w' <- `w'*`}] -[scope_enter w'] -[visit_exp w'] -[visit_id w'] not free -[visit_id w'] not free -[scope_exit w'] -[visit_exp `w'*`] -[visit_id w'*] not free -[visit_id w'*] no dims -=> - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec - def $disjoint_{syntax X, w : X, `w'*` : X*}(syntax X, [w] ++ w'*{w' <- `w'*`}) = (~ (w <- w'*{w' <- `w'*`}) /\ $disjoint_(syntax X, w'*{w' <- `w'*`})) -[check_dims] X _ -DecD setminus_(syntax X, X*, X*) : X* -[visit_id _] not free -[visit_id _] not free -[check_dims] X _ -DecD setminus1_(syntax X, X : X, X*) : X* -[visit_id X] not free -[visit_id _] not free -[check_dims] w -[visit_exp []] -[visit_exp w*{w <- `w*`}] -[scope_enter w] -[visit_exp w] -[visit_id w] not free -[visit_id w] not free -[scope_exit w] -[visit_exp `w*`] -[visit_id w*] no dims -[visit_id w*] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec - def $setminus_{syntax X, `w*` : X*}(syntax X, [], w*{w <- `w*`}) = [] -[check_dims] w w' w_1 -[visit_exp [w_1] ++ w'*{w' <- `w'*`}] -[visit_exp [w_1]] -[visit_exp w_1] -[visit_id w_1] -[visit_exp w'*{w' <- `w'*`}] -[scope_enter w'] -[visit_exp w'] -[visit_id w'] not free -[visit_id w'] not free -[scope_exit w'] -[visit_exp `w'*`] -[visit_id w'*] no dims -[visit_id w'*] -[visit_exp w*{w <- `w*`}] -[scope_enter w] -[visit_exp w] -[visit_id w] not free -[visit_id w] not free -[scope_exit w] -[visit_exp `w*`] -[visit_id w*] no dims -[visit_id w*] -[visit_exp $setminus1_(syntax X, w_1, w*{w <- `w*`}) ++ $setminus_(syntax X, w'*{w' <- `w'*`}, w*{w <- `w*`})] -[visit_exp $setminus1_(syntax X, w_1, w*{w <- `w*`})] -[visit_exp w_1] -[visit_id w_1] not free -[visit_exp w*{w <- `w*`}] -[scope_enter w] -[visit_exp w] -[visit_id w] not free -[visit_id w] not free -[scope_exit w] -[visit_exp `w*`] -[visit_id w*] not free -[visit_id w*] no dims -[visit_exp $setminus_(syntax X, w'*{w' <- `w'*`}, w*{w <- `w*`})] -[visit_exp w'*{w' <- `w'*`}] -[scope_enter w'] -[visit_exp w'] -[visit_id w'] not free -[visit_id w'] not free -[scope_exit w'] -[visit_exp `w'*`] -[visit_id w'*] not free -[visit_id w'*] no dims -[visit_exp w*{w <- `w*`}] -[scope_enter w] -[visit_exp w] -[visit_id w] not free -[visit_id w] not free -[scope_exit w] -[visit_exp `w*`] -[visit_id w*] not free -[visit_id w*] no dims -=> - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec - 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*`}) -[check_dims] w -[visit_exp w] -[visit_id w] -[visit_exp []] -[visit_exp [w]] -[visit_exp w] -[visit_id w] not free -=> - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec - def $setminus1_{syntax X, w : X}(syntax X, w, []) = [w] -[check_dims] w w' w_1 -[visit_exp w] -[visit_id w] -[visit_exp [w_1] ++ w'*{w' <- `w'*`}] -[visit_exp [w_1]] -[visit_exp w_1] -[visit_id w_1] -[visit_exp w'*{w' <- `w'*`}] -[scope_enter w'] -[visit_exp w'] -[visit_id w'] not free -[visit_id w'] not free -[scope_exit w'] -[visit_exp `w'*`] -[visit_id w'*] no dims -[visit_id w'*] -[visit_exp []] -[visit_exp (w = w_1)] -[visit_exp w] -[visit_id w] not free -[visit_exp w_1] -[visit_id w_1] not free -=> - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec - def $setminus1_{syntax X, w : X, w_1 : X, `w'*` : X*}(syntax X, w, [w_1] ++ w'*{w' <- `w'*`}) = [] - -- if (w = w_1) -[check_dims] w w' w_1 -[visit_exp w] -[visit_id w] -[visit_exp [w_1] ++ w'*{w' <- `w'*`}] -[visit_exp [w_1]] -[visit_exp w_1] -[visit_id w_1] -[visit_exp w'*{w' <- `w'*`}] -[scope_enter w'] -[visit_exp w'] -[visit_id w'] not free -[visit_id w'] not free -[scope_exit w'] -[visit_exp `w'*`] -[visit_id w'*] no dims -[visit_id w'*] -[visit_exp $setminus1_(syntax X, w, w'*{w' <- `w'*`})] -[visit_exp w] -[visit_id w] not free -[visit_exp w'*{w' <- `w'*`}] -[scope_enter w'] -[visit_exp w'] -[visit_id w'] not free -[visit_id w'] not free -[scope_exit w'] -[visit_exp `w'*`] -[visit_id w'*] not free -[visit_id w'*] no dims -=> - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec - def $setminus1_{syntax X, w : X, w_1 : X, `w'*` : X*}(syntax X, w, [w_1] ++ w'*{w' <- `w'*`}) = $setminus1_(syntax X, w, w'*{w' <- `w'*`}) - -- otherwise -[check_dims] X _ -DecD setproduct_(syntax X, X**) : X** -[visit_id _] not free -[check_dims] X _ -DecD setproduct1_(syntax X, X*, X**) : X** -[visit_id _] not free -[visit_id _] not free -[check_dims] X _ -DecD setproduct2_(syntax X, X : X, X**) : X** -[visit_id X] not free -[visit_id _] not free -[check_dims] -[visit_exp []] -[visit_exp [[]]] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec - def $setproduct_{syntax X}(syntax X, []) = [[]] -[check_dims] w w_1 -[visit_exp [w_1*{w_1 <- `w_1*`}] ++ w*{w <- `w*`}*{`w*` <- `w**`}] -[visit_exp [w_1*{w_1 <- `w_1*`}]] -[visit_exp w_1*{w_1 <- `w_1*`}] -[scope_enter w_1] -[visit_exp w_1] -[visit_id w_1] not free -[visit_id w_1] not free -[scope_exit w_1] -[visit_exp `w_1*`] -[visit_id w_1*] no dims -[visit_id w_1*] -[visit_exp w*{w <- `w*`}*{`w*` <- `w**`}] -[scope_enter w*] -[visit_exp w*{w <- `w*`}] -[scope_enter w] -[visit_exp w] -[visit_id w] not free -[visit_id w] not free -[scope_exit w] -[visit_exp `w*`] -[visit_id w*] not free -[visit_id w*] no dims -[visit_id w*] not free -[visit_id w*] no dims -[scope_exit w*] -[visit_exp `w**`] -[visit_id w**] no dims -[visit_id w**] -[visit_exp $setproduct1_(syntax X, w_1*{w_1 <- `w_1*`}, $setproduct_(syntax X, w*{w <- `w*`}*{`w*` <- `w**`}))] -[visit_exp w_1*{w_1 <- `w_1*`}] -[scope_enter w_1] -[visit_exp w_1] -[visit_id w_1] not free -[visit_id w_1] not free -[scope_exit w_1] -[visit_exp `w_1*`] -[visit_id w_1*] not free -[visit_id w_1*] no dims -[visit_exp $setproduct_(syntax X, w*{w <- `w*`}*{`w*` <- `w**`})] -[visit_exp w*{w <- `w*`}*{`w*` <- `w**`}] -[scope_enter w*] -[visit_exp w*{w <- `w*`}] -[scope_enter w] -[visit_exp w] -[visit_id w] not free -[visit_id w] not free -[scope_exit w] -[visit_exp `w*`] -[visit_id w*] not free -[visit_id w*] no dims -[visit_id w*] not free -[visit_id w*] no dims -[scope_exit w*] -[visit_exp `w**`] -[visit_id w**] not free -[visit_id w**] no dims -=> - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec - 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**`})) -[check_dims] w -[visit_exp []] -[visit_exp w*{w <- `w*`}*{`w*` <- `w**`}] -[scope_enter w*] -[visit_exp w*{w <- `w*`}] -[scope_enter w] -[visit_exp w] -[visit_id w] not free -[visit_id w] not free -[scope_exit w] -[visit_exp `w*`] -[visit_id w*] not free -[visit_id w*] no dims -[visit_id w*] not free -[visit_id w*] no dims -[scope_exit w*] -[visit_exp `w**`] -[visit_id w**] no dims -[visit_id w**] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec - def $setproduct1_{syntax X, `w**` : X**}(syntax X, [], w*{w <- `w*`}*{`w*` <- `w**`}) = [] -[check_dims] w w' w_1 -[visit_exp [w_1] ++ w'*{w' <- `w'*`}] -[visit_exp [w_1]] -[visit_exp w_1] -[visit_id w_1] -[visit_exp w'*{w' <- `w'*`}] -[scope_enter w'] -[visit_exp w'] -[visit_id w'] not free -[visit_id w'] not free -[scope_exit w'] -[visit_exp `w'*`] -[visit_id w'*] no dims -[visit_id w'*] -[visit_exp w*{w <- `w*`}*{`w*` <- `w**`}] -[scope_enter w*] -[visit_exp w*{w <- `w*`}] -[scope_enter w] -[visit_exp w] -[visit_id w] not free -[visit_id w] not free -[scope_exit w] -[visit_exp `w*`] -[visit_id w*] not free -[visit_id w*] no dims -[visit_id w*] not free -[visit_id w*] no dims -[scope_exit w*] -[visit_exp `w**`] -[visit_id w**] no dims -[visit_id w**] -[visit_exp $setproduct2_(syntax X, w_1, w*{w <- `w*`}*{`w*` <- `w**`}) ++ $setproduct1_(syntax X, w'*{w' <- `w'*`}, w*{w <- `w*`}*{`w*` <- `w**`})] -[visit_exp $setproduct2_(syntax X, w_1, w*{w <- `w*`}*{`w*` <- `w**`})] -[visit_exp w_1] -[visit_id w_1] not free -[visit_exp w*{w <- `w*`}*{`w*` <- `w**`}] -[scope_enter w*] -[visit_exp w*{w <- `w*`}] -[scope_enter w] -[visit_exp w] -[visit_id w] not free -[visit_id w] not free -[scope_exit w] -[visit_exp `w*`] -[visit_id w*] not free -[visit_id w*] no dims -[visit_id w*] not free -[visit_id w*] no dims -[scope_exit w*] -[visit_exp `w**`] -[visit_id w**] not free -[visit_id w**] no dims -[visit_exp $setproduct1_(syntax X, w'*{w' <- `w'*`}, w*{w <- `w*`}*{`w*` <- `w**`})] -[visit_exp w'*{w' <- `w'*`}] -[scope_enter w'] -[visit_exp w'] -[visit_id w'] not free -[visit_id w'] not free -[scope_exit w'] -[visit_exp `w'*`] -[visit_id w'*] not free -[visit_id w'*] no dims -[visit_exp w*{w <- `w*`}*{`w*` <- `w**`}] -[scope_enter w*] -[visit_exp w*{w <- `w*`}] -[scope_enter w] -[visit_exp w] -[visit_id w] not free -[visit_id w] not free -[scope_exit w] -[visit_exp `w*`] -[visit_id w*] not free -[visit_id w*] no dims -[visit_id w*] not free -[visit_id w*] no dims -[scope_exit w*] -[visit_exp `w**`] -[visit_id w**] not free -[visit_id w**] no dims -=> - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec - 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**`}) -[check_dims] w_1 -[visit_exp w_1] -[visit_id w_1] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec - def $setproduct2_{syntax X, w_1 : X}(syntax X, w_1, []) = [] -[check_dims] w w' w_1 -[visit_exp w_1] -[visit_id w_1] -[visit_exp [w'*{w' <- `w'*`}] ++ w*{w <- `w*`}*{`w*` <- `w**`}] -[visit_exp [w'*{w' <- `w'*`}]] -[visit_exp w'*{w' <- `w'*`}] -[scope_enter w'] -[visit_exp w'] -[visit_id w'] not free -[visit_id w'] not free -[scope_exit w'] -[visit_exp `w'*`] -[visit_id w'*] no dims -[visit_id w'*] -[visit_exp w*{w <- `w*`}*{`w*` <- `w**`}] -[scope_enter w*] -[visit_exp w*{w <- `w*`}] -[scope_enter w] -[visit_exp w] -[visit_id w] not free -[visit_id w] not free -[scope_exit w] -[visit_exp `w*`] -[visit_id w*] not free -[visit_id w*] no dims -[visit_id w*] not free -[visit_id w*] no dims -[scope_exit w*] -[visit_exp `w**`] -[visit_id w**] no dims -[visit_id w**] -[visit_exp [[w_1] ++ w'*{w' <- `w'*`}] ++ $setproduct2_(syntax X, w_1, w*{w <- `w*`}*{`w*` <- `w**`})] -[visit_exp [[w_1] ++ w'*{w' <- `w'*`}]] -[visit_exp [w_1] ++ w'*{w' <- `w'*`}] -[visit_exp [w_1]] -[visit_exp w_1] -[visit_id w_1] not free -[visit_exp w'*{w' <- `w'*`}] -[scope_enter w'] -[visit_exp w'] -[visit_id w'] not free -[visit_id w'] not free -[scope_exit w'] -[visit_exp `w'*`] -[visit_id w'*] not free -[visit_id w'*] no dims -[visit_exp $setproduct2_(syntax X, w_1, w*{w <- `w*`}*{`w*` <- `w**`})] -[visit_exp w_1] -[visit_id w_1] not free -[visit_exp w*{w <- `w*`}*{`w*` <- `w**`}] -[scope_enter w*] -[visit_exp w*{w <- `w*`}] -[scope_enter w] -[visit_exp w] -[visit_id w] not free -[visit_id w] not free -[scope_exit w] -[visit_exp `w*`] -[visit_id w*] not free -[visit_id w*] no dims -[visit_id w*] not free -[visit_id w*] no dims -[scope_exit w*] -[visit_exp `w**`] -[visit_id w**] not free -[visit_id w**] no dims -=> - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec - 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**`}) -[check_dims] -DecD ND : bool -[check_dims] -[check_dims] -[visit_exp 0] -[check_dims] -[visit_exp 1] -[check_dims] -[check_dims] -[visit_exp 0] -[visit_exp 255] -[check_dims] N -[check_dims] N -[visit_exp 0] -[visit_exp ((((2 ^ N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp (((2 ^ N) : nat <:> int) - (1 : nat <:> int))] -[visit_exp ((2 ^ N) : nat <:> int)] -[visit_exp (2 ^ N)] -[visit_exp 2] -[visit_exp N] -[visit_id N] not free -[visit_id N] no dims -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp N] -[visit_id N] -[check_dims] N -[check_dims] N -[visit_exp - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)] -[visit_exp ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)] -[visit_exp (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp 2] -[visit_exp (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp ((N : nat <:> int) - (1 : nat <:> int))] -[visit_exp (N : nat <:> int)] -[visit_exp N] -[visit_id N] not free -[visit_id N] no dims -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp - (1 : nat <:> int)] -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[check_dims] N -[visit_exp (0 : nat <:> int)] -[visit_exp 0] -[check_dims] N -[visit_exp + (1 : nat <:> int)] -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp (+ ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))] -[visit_exp + ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)] -[visit_exp ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)] -[visit_exp (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp 2] -[visit_exp (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp ((N : nat <:> int) - (1 : nat <:> int))] -[visit_exp (N : nat <:> int)] -[visit_exp N] -[visit_id N] not free -[visit_id N] no dims -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp N] -[visit_id N] -[check_dims] N -[visit_exp N] -[visit_id N] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] N -DecD signif(N : N) : nat -[visit_id N] not free -[check_dims] -[visit_exp 32] -[visit_exp 23] -=> - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $signif(32) = 23 -[check_dims] -[visit_exp 64] -[visit_exp 52] -=> - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $signif(64) = 52 -[check_dims] N -DecD expon(N : N) : nat -[visit_id N] not free -[check_dims] -[visit_exp 32] -[visit_exp 8] -=> - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $expon(32) = 8 -[check_dims] -[visit_exp 64] -[visit_exp 11] -=> - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $expon(64) = 11 -[check_dims] N -DecD M(N : N) : nat -[visit_id N] not free -[check_dims] N -[visit_exp N] -[visit_id N] -[visit_exp $signif(N)] -[visit_exp N] -[visit_id N] not free -=> - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $M{N : N}(N) = $signif(N) -[check_dims] N -DecD E(N : N) : nat -[visit_id N] not free -[check_dims] N -[visit_exp N] -[visit_id N] -[visit_exp $expon(N)] -[visit_exp N] -[visit_id N] not free -=> - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $E{N : N}(N) = $expon(N) -[check_dims] N -[check_dims] N -[visit_exp N] -[visit_id N] not free -[visit_id N] no dims -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] ---- 1 --- -[check_dims] N ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] N -[visit_exp N] -[visit_id N] not free -[visit_id N] no dims -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] ---- 1 --- -[check_dims] N ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp N] -[visit_id N] -[check_dims] -[check_dims] N -[check_dims] N -[scope_enter m] -[visit_id m] not free -[visit_id m] no dims -[scope_enter exp] -[visit_id exp] not free -[visit_id exp] no dims -[scope_exit exp] -[scope_exit m] ---- 1 --- -[check_dims] N exp m ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp ((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)))))] -[visit_exp (m < (2 ^ $M(N)))] -[visit_exp m] -[visit_id m] not free -[visit_exp (2 ^ $M(N))] -[visit_exp 2] -[visit_exp $M(N)] -[visit_exp N] -[visit_id N] not free -[visit_id N] no dims -[visit_exp ((((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))))] -[visit_exp (((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) <= exp)] -[visit_exp ((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))] -[visit_exp (2 : nat <:> int)] -[visit_exp 2] -[visit_exp ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)] -[visit_exp (2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp 2] -[visit_exp ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp (($E(N) : nat <:> int) - (1 : nat <:> int))] -[visit_exp ($E(N) : nat <:> int)] -[visit_exp $E(N)] -[visit_exp N] -[visit_id N] not free -[visit_id N] no dims -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp exp] -[visit_id exp] not free -[visit_exp (exp <= (((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int)))] -[visit_exp exp] -[visit_id exp] not free -[visit_exp (((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))] -[visit_exp ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)] -[visit_exp (2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp 2] -[visit_exp ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp (($E(N) : nat <:> int) - (1 : nat <:> int))] -[visit_exp ($E(N) : nat <:> int)] -[visit_exp $E(N)] -[visit_exp N] -[visit_id N] not free -[visit_id N] no dims -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[check_dims] N -[scope_enter m] -[visit_id m] not free -[visit_id m] no dims -[scope_exit m] ---- 1 --- -[check_dims] N exp m ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp ((m < (2 ^ $M(N))) /\ (((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) = exp))] -[visit_exp (m < (2 ^ $M(N)))] -[visit_exp m] -[visit_id m] not free -[visit_exp (2 ^ $M(N))] -[visit_exp 2] -[visit_exp $M(N)] -[visit_exp N] -[visit_id N] not free -[visit_id N] no dims -[visit_exp (((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) = exp)] -[visit_exp ((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))] -[visit_exp (2 : nat <:> int)] -[visit_exp 2] -[visit_exp ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)] -[visit_exp (2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp 2] -[visit_exp ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp (($E(N) : nat <:> int) - (1 : nat <:> int))] -[visit_exp ($E(N) : nat <:> int)] -[visit_exp $E(N)] -[visit_exp N] -[visit_id N] not free -[visit_id N] no dims -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp exp] -[visit_id exp] -[check_dims] N ---- 1 --- -[check_dims] N ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] N -[scope_enter m] -[visit_id m] not free -[visit_id m] no dims -[scope_exit m] ---- 1 --- -[check_dims] N m ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp ((1 <= m) /\ (m < (2 ^ $M(N))))] -[visit_exp (1 <= m)] -[visit_exp 1] -[visit_exp m] -[visit_id m] not free -[visit_exp (m < (2 ^ $M(N)))] -[visit_exp m] -[visit_id m] not free -[visit_exp (2 ^ $M(N))] -[visit_exp 2] -[visit_exp $M(N)] -[visit_exp N] -[visit_id N] not free -[visit_id N] no dims -[visit_exp N] -[visit_id N] -[check_dims] -[check_dims] -[check_dims] N -DecD fzero(N : N) : fN(N) -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N -[visit_exp N] -[visit_id N] -[visit_exp `POS`_fN(`SUBNORM`_fNmag(0))] -[visit_exp (`SUBNORM`_fNmag(0))] -[visit_exp `SUBNORM`_fNmag(0)] -[visit_exp (0)] -[visit_exp 0] -=> - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $fzero{N : N}(N) = `POS`_fN(`SUBNORM`_fNmag(0)) -[check_dims] N nat -DecD fnat(N : N, nat : nat) : fN(N) -[visit_id N] not free -[visit_id nat] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N n -[visit_exp N] -[visit_id N] -[visit_exp n] -[visit_id n] -[visit_exp `POS`_fN(`NORM`_fNmag(n, (0 : nat <:> int)))] -[visit_exp (`NORM`_fNmag(n, (0 : nat <:> int)))] -[visit_exp `NORM`_fNmag(n, (0 : nat <:> int))] -[visit_exp (n, (0 : nat <:> int))] -[visit_exp n] -[visit_id n] not free -[visit_exp (0 : nat <:> int)] -[visit_exp 0] -=> - ;; ../../../../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))) -[check_dims] N -DecD fone(N : N) : fN(N) -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N -[visit_exp N] -[visit_id N] -[visit_exp `POS`_fN(`NORM`_fNmag(1, (0 : nat <:> int)))] -[visit_exp (`NORM`_fNmag(1, (0 : nat <:> int)))] -[visit_exp `NORM`_fNmag(1, (0 : nat <:> int))] -[visit_exp (1, (0 : nat <:> int))] -[visit_exp 1] -[visit_exp (0 : nat <:> int)] -[visit_exp 0] -=> - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $fone{N : N}(N) = `POS`_fN(`NORM`_fNmag(1, (0 : nat <:> int))) -[check_dims] N -DecD canon_(N : N) : nat -[visit_id N] not free -[check_dims] N -[visit_exp N] -[visit_id N] -[visit_exp (2 ^ ((($signif(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp 2] -[visit_exp ((($signif(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp (($signif(N) : nat <:> int) - (1 : nat <:> int))] -[visit_exp ($signif(N) : nat <:> int)] -[visit_exp $signif(N)] -[visit_exp N] -[visit_id N] not free -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -=> - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $canon_{N : N}(N) = (2 ^ ((($signif(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) -[check_dims] N -[visit_exp N] -[visit_id N] -[check_dims] -[check_dims] -[check_dims] -[scope_enter X*] -[visit_id X*] not free -[visit_id X*] no dims -[scope_exit X*] ---- 1 --- -[check_dims] X ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp (|X*{X <- `X*`}| < (2 ^ 32))] -[visit_exp |X*{X <- `X*`}|] -[visit_exp X*{X <- `X*`}] -[scope_enter X] -[visit_exp X] -[visit_id X] not free -[visit_id X] not free -[scope_exit X] -[visit_exp `X*`] -[visit_id X*] not free -[visit_id X*] no dims -[visit_exp (2 ^ 32)] -[visit_exp 2] -[visit_exp 32] -[check_dims] -[check_dims] -[visit_exp 0] -[visit_exp 55295] -[check_dims] -[visit_exp 57344] -[visit_exp 1114111] -[check_dims] _ -DecD utf8(char*) : byte* -[visit_id _] not free -[check_dims] -[check_dims] -[scope_enter char*] -[visit_id char*] not free -[visit_id char*] no dims -[scope_exit char*] ---- 1 --- -[check_dims] char ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp (|$utf8(char*{char <- `char*`})| < (2 ^ 32))] -[visit_exp |$utf8(char*{char <- `char*`})|] -[visit_exp $utf8(char*{char <- `char*`})] -[visit_exp char*{char <- `char*`}] -[scope_enter char] -[visit_exp char] -[visit_id char] not free -[visit_id char] not free -[scope_exit char] -[visit_exp `char*`] -[visit_id char*] not free -[visit_id char*] no dims -[visit_exp (2 ^ 32)] -[visit_exp 2] -[visit_exp 32] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[scope_enter funcidx] -[visit_id funcidx] not free -[visit_id funcidx] no dims -[scope_exit funcidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter globalidx] -[visit_id globalidx] not free -[visit_id globalidx] no dims -[scope_exit globalidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter tableidx] -[visit_id tableidx] not free -[visit_id tableidx] no dims -[scope_exit tableidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter memidx] -[visit_id memidx] not free -[visit_id memidx] no dims -[scope_exit memidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter tagidx] -[visit_id tagidx] not free -[visit_id tagidx] no dims -[scope_exit tagidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] _ -DecD funcsxx(externidx*) : typeidx* -[visit_id _] not free -[check_dims] _ -DecD globalsxx(externidx*) : globalidx* -[visit_id _] not free -[check_dims] _ -DecD tablesxx(externidx*) : tableidx* -[visit_id _] not free -[check_dims] _ -DecD memsxx(externidx*) : memidx* -[visit_id _] not free -[check_dims] _ -DecD tagsxx(externidx*) : tagidx* -[visit_id _] not free -[check_dims] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $funcsxx([]) = [] -[check_dims] x xx -[visit_exp [`FUNC`_externidx(x)] ++ xx*{xx <- `xx*`}] -[visit_exp [`FUNC`_externidx(x)]] -[visit_exp `FUNC`_externidx(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp xx*{xx <- `xx*`}] -[scope_enter xx] -[visit_exp xx] -[visit_id xx] not free -[visit_id xx] not free -[scope_exit xx] -[visit_exp `xx*`] -[visit_id xx*] no dims -[visit_id xx*] -[visit_exp [x] ++ $funcsxx(xx*{xx <- `xx*`})] -[visit_exp [x]] -[visit_exp x] -[visit_id x] not free -[visit_exp $funcsxx(xx*{xx <- `xx*`})] -[visit_exp xx*{xx <- `xx*`}] -[scope_enter xx] -[visit_exp xx] -[visit_id xx] not free -[visit_id xx] not free -[scope_exit xx] -[visit_exp `xx*`] -[visit_id xx*] not free -[visit_id xx*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $funcsxx{x : idx, `xx*` : externidx*}([`FUNC`_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $funcsxx(xx*{xx <- `xx*`}) -[check_dims] externidx xx -[visit_exp [externidx] ++ xx*{xx <- `xx*`}] -[visit_exp [externidx]] -[visit_exp externidx] -[visit_id externidx] -[visit_exp xx*{xx <- `xx*`}] -[scope_enter xx] -[visit_exp xx] -[visit_id xx] not free -[visit_id xx] not free -[scope_exit xx] -[visit_exp `xx*`] -[visit_id xx*] no dims -[visit_id xx*] -[visit_exp $funcsxx(xx*{xx <- `xx*`})] -[visit_exp xx*{xx <- `xx*`}] -[scope_enter xx] -[visit_exp xx] -[visit_id xx] not free -[visit_id xx] not free -[scope_exit xx] -[visit_exp `xx*`] -[visit_id xx*] not free -[visit_id xx*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $funcsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $funcsxx(xx*{xx <- `xx*`}) - -- otherwise -[check_dims] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $globalsxx([]) = [] -[check_dims] x xx -[visit_exp [`GLOBAL`_externidx(x)] ++ xx*{xx <- `xx*`}] -[visit_exp [`GLOBAL`_externidx(x)]] -[visit_exp `GLOBAL`_externidx(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp xx*{xx <- `xx*`}] -[scope_enter xx] -[visit_exp xx] -[visit_id xx] not free -[visit_id xx] not free -[scope_exit xx] -[visit_exp `xx*`] -[visit_id xx*] no dims -[visit_id xx*] -[visit_exp [x] ++ $globalsxx(xx*{xx <- `xx*`})] -[visit_exp [x]] -[visit_exp x] -[visit_id x] not free -[visit_exp $globalsxx(xx*{xx <- `xx*`})] -[visit_exp xx*{xx <- `xx*`}] -[scope_enter xx] -[visit_exp xx] -[visit_id xx] not free -[visit_id xx] not free -[scope_exit xx] -[visit_exp `xx*`] -[visit_id xx*] not free -[visit_id xx*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $globalsxx{x : idx, `xx*` : externidx*}([`GLOBAL`_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $globalsxx(xx*{xx <- `xx*`}) -[check_dims] externidx xx -[visit_exp [externidx] ++ xx*{xx <- `xx*`}] -[visit_exp [externidx]] -[visit_exp externidx] -[visit_id externidx] -[visit_exp xx*{xx <- `xx*`}] -[scope_enter xx] -[visit_exp xx] -[visit_id xx] not free -[visit_id xx] not free -[scope_exit xx] -[visit_exp `xx*`] -[visit_id xx*] no dims -[visit_id xx*] -[visit_exp $globalsxx(xx*{xx <- `xx*`})] -[visit_exp xx*{xx <- `xx*`}] -[scope_enter xx] -[visit_exp xx] -[visit_id xx] not free -[visit_id xx] not free -[scope_exit xx] -[visit_exp `xx*`] -[visit_id xx*] not free -[visit_id xx*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $globalsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $globalsxx(xx*{xx <- `xx*`}) - -- otherwise -[check_dims] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $tablesxx([]) = [] -[check_dims] x xx -[visit_exp [`TABLE`_externidx(x)] ++ xx*{xx <- `xx*`}] -[visit_exp [`TABLE`_externidx(x)]] -[visit_exp `TABLE`_externidx(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp xx*{xx <- `xx*`}] -[scope_enter xx] -[visit_exp xx] -[visit_id xx] not free -[visit_id xx] not free -[scope_exit xx] -[visit_exp `xx*`] -[visit_id xx*] no dims -[visit_id xx*] -[visit_exp [x] ++ $tablesxx(xx*{xx <- `xx*`})] -[visit_exp [x]] -[visit_exp x] -[visit_id x] not free -[visit_exp $tablesxx(xx*{xx <- `xx*`})] -[visit_exp xx*{xx <- `xx*`}] -[scope_enter xx] -[visit_exp xx] -[visit_id xx] not free -[visit_id xx] not free -[scope_exit xx] -[visit_exp `xx*`] -[visit_id xx*] not free -[visit_id xx*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $tablesxx{x : idx, `xx*` : externidx*}([`TABLE`_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $tablesxx(xx*{xx <- `xx*`}) -[check_dims] externidx xx -[visit_exp [externidx] ++ xx*{xx <- `xx*`}] -[visit_exp [externidx]] -[visit_exp externidx] -[visit_id externidx] -[visit_exp xx*{xx <- `xx*`}] -[scope_enter xx] -[visit_exp xx] -[visit_id xx] not free -[visit_id xx] not free -[scope_exit xx] -[visit_exp `xx*`] -[visit_id xx*] no dims -[visit_id xx*] -[visit_exp $tablesxx(xx*{xx <- `xx*`})] -[visit_exp xx*{xx <- `xx*`}] -[scope_enter xx] -[visit_exp xx] -[visit_id xx] not free -[visit_id xx] not free -[scope_exit xx] -[visit_exp `xx*`] -[visit_id xx*] not free -[visit_id xx*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $tablesxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $tablesxx(xx*{xx <- `xx*`}) - -- otherwise -[check_dims] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $memsxx([]) = [] -[check_dims] x xx -[visit_exp [`MEM`_externidx(x)] ++ xx*{xx <- `xx*`}] -[visit_exp [`MEM`_externidx(x)]] -[visit_exp `MEM`_externidx(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp xx*{xx <- `xx*`}] -[scope_enter xx] -[visit_exp xx] -[visit_id xx] not free -[visit_id xx] not free -[scope_exit xx] -[visit_exp `xx*`] -[visit_id xx*] no dims -[visit_id xx*] -[visit_exp [x] ++ $memsxx(xx*{xx <- `xx*`})] -[visit_exp [x]] -[visit_exp x] -[visit_id x] not free -[visit_exp $memsxx(xx*{xx <- `xx*`})] -[visit_exp xx*{xx <- `xx*`}] -[scope_enter xx] -[visit_exp xx] -[visit_id xx] not free -[visit_id xx] not free -[scope_exit xx] -[visit_exp `xx*`] -[visit_id xx*] not free -[visit_id xx*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $memsxx{x : idx, `xx*` : externidx*}([`MEM`_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $memsxx(xx*{xx <- `xx*`}) -[check_dims] externidx xx -[visit_exp [externidx] ++ xx*{xx <- `xx*`}] -[visit_exp [externidx]] -[visit_exp externidx] -[visit_id externidx] -[visit_exp xx*{xx <- `xx*`}] -[scope_enter xx] -[visit_exp xx] -[visit_id xx] not free -[visit_id xx] not free -[scope_exit xx] -[visit_exp `xx*`] -[visit_id xx*] no dims -[visit_id xx*] -[visit_exp $memsxx(xx*{xx <- `xx*`})] -[visit_exp xx*{xx <- `xx*`}] -[scope_enter xx] -[visit_exp xx] -[visit_id xx] not free -[visit_id xx] not free -[scope_exit xx] -[visit_exp `xx*`] -[visit_id xx*] not free -[visit_id xx*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $memsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $memsxx(xx*{xx <- `xx*`}) - -- otherwise -[check_dims] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $tagsxx([]) = [] -[check_dims] x xx -[visit_exp [`TAG`_externidx(x)] ++ xx*{xx <- `xx*`}] -[visit_exp [`TAG`_externidx(x)]] -[visit_exp `TAG`_externidx(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp xx*{xx <- `xx*`}] -[scope_enter xx] -[visit_exp xx] -[visit_id xx] not free -[visit_id xx] not free -[scope_exit xx] -[visit_exp `xx*`] -[visit_id xx*] no dims -[visit_id xx*] -[visit_exp [x] ++ $tagsxx(xx*{xx <- `xx*`})] -[visit_exp [x]] -[visit_exp x] -[visit_id x] not free -[visit_exp $tagsxx(xx*{xx <- `xx*`})] -[visit_exp xx*{xx <- `xx*`}] -[scope_enter xx] -[visit_exp xx] -[visit_id xx] not free -[visit_id xx] not free -[scope_exit xx] -[visit_exp `xx*`] -[visit_id xx*] not free -[visit_id xx*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $tagsxx{x : idx, `xx*` : externidx*}([`TAG`_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $tagsxx(xx*{xx <- `xx*`}) -[check_dims] externidx xx -[visit_exp [externidx] ++ xx*{xx <- `xx*`}] -[visit_exp [externidx]] -[visit_exp externidx] -[visit_id externidx] -[visit_exp xx*{xx <- `xx*`}] -[scope_enter xx] -[visit_exp xx] -[visit_id xx] not free -[visit_id xx] not free -[scope_exit xx] -[visit_exp `xx*`] -[visit_id xx*] no dims -[visit_id xx*] -[visit_exp $tagsxx(xx*{xx <- `xx*`})] -[visit_exp xx*{xx <- `xx*`}] -[scope_enter xx] -[visit_exp xx] -[visit_id xx] not free -[visit_id xx] not free -[scope_exit xx] -[visit_exp `xx*`] -[visit_id xx*] not free -[visit_id xx*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $tagsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $tagsxx(xx*{xx <- `xx*`}) - -- otherwise -[check_dims] -[check_dims] -[scope_enter typeidx*] -[visit_id typeidx*] not free -[visit_id typeidx*] no dims -[scope_exit typeidx*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter funcidx*] -[visit_id funcidx*] not free -[visit_id funcidx*] no dims -[scope_exit funcidx*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter globalidx*] -[visit_id globalidx*] not free -[visit_id globalidx*] no dims -[scope_exit globalidx*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter tableidx*] -[visit_id tableidx*] not free -[visit_id tableidx*] no dims -[scope_exit tableidx*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter memidx*] -[visit_id memidx*] not free -[visit_id memidx*] no dims -[scope_exit memidx*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter elemidx*] -[visit_id elemidx*] not free -[visit_id elemidx*] no dims -[scope_exit elemidx*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter dataidx*] -[visit_id dataidx*] not free -[visit_id dataidx*] no dims -[scope_exit dataidx*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter localidx*] -[visit_id localidx*] not free -[visit_id localidx*] no dims -[scope_exit localidx*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter labelidx*] -[visit_id labelidx*] not free -[visit_id labelidx*] no dims -[scope_exit labelidx*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] _ -DecD free_opt(free?) : free -[visit_id _] not free -[check_dims] _ -DecD free_list(free*) : free -[visit_id _] not free -[check_dims] -[visit_exp ?()] -[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_opt(?()) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} -[check_dims] free -[visit_exp ?(free)] -[visit_exp free] -[visit_id free] -[visit_exp free] -[visit_id free] not free -=> - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_opt{free : free}(?(free)) = free -[check_dims] -[visit_exp []] -[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_list([]) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} -[check_dims] free free' -[visit_exp [free] ++ free'*{free' <- `free'*`}] -[visit_exp [free]] -[visit_exp free] -[visit_id free] -[visit_exp free'*{free' <- `free'*`}] -[scope_enter free'] -[visit_exp free'] -[visit_id free'] not free -[visit_id free'] not free -[scope_exit free'] -[visit_exp `free'*`] -[visit_id free'*] no dims -[visit_id free'*] -[visit_exp free +++ $free_list(free'*{free' <- `free'*`})] -[visit_exp free] -[visit_id free] not free -[visit_exp $free_list(free'*{free' <- `free'*`})] -[visit_exp free'*{free' <- `free'*`}] -[scope_enter free'] -[visit_exp free'] -[visit_id free'] not free -[visit_id free'] not free -[scope_exit free'] -[visit_exp `free'*`] -[visit_id free'*] not free -[visit_id free'*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) -[check_dims] typeidx -DecD free_typeidx(typeidx : typeidx) : free -[visit_id typeidx] not free -[check_dims] funcidx -DecD free_funcidx(funcidx : funcidx) : free -[visit_id funcidx] not free -[check_dims] globalidx -DecD free_globalidx(globalidx : globalidx) : free -[visit_id globalidx] not free -[check_dims] tableidx -DecD free_tableidx(tableidx : tableidx) : free -[visit_id tableidx] not free -[check_dims] memidx -DecD free_memidx(memidx : memidx) : free -[visit_id memidx] not free -[check_dims] elemidx -DecD free_elemidx(elemidx : elemidx) : free -[visit_id elemidx] not free -[check_dims] dataidx -DecD free_dataidx(dataidx : dataidx) : free -[visit_id dataidx] not free -[check_dims] localidx -DecD free_localidx(localidx : localidx) : free -[visit_id localidx] not free -[check_dims] labelidx -DecD free_labelidx(labelidx : labelidx) : free -[visit_id labelidx] not free -[check_dims] externidx -DecD free_externidx(externidx : externidx) : free -[visit_id externidx] not free -[check_dims] typeidx -[visit_exp typeidx] -[visit_id typeidx] -[visit_exp {`TYPES` [typeidx], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] -[visit_exp [typeidx]] -[visit_exp typeidx] -[visit_id typeidx] not free -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../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` []} -[check_dims] funcidx -[visit_exp funcidx] -[visit_id funcidx] -[visit_exp {`TYPES` [], `FUNCS` [funcidx], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] -[visit_exp []] -[visit_exp [funcidx]] -[visit_exp funcidx] -[visit_id funcidx] not free -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../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` []} -[check_dims] globalidx -[visit_exp globalidx] -[visit_id globalidx] -[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [globalidx], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp [globalidx]] -[visit_exp globalidx] -[visit_id globalidx] not free -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../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` []} -[check_dims] tableidx -[visit_exp tableidx] -[visit_id tableidx] -[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [tableidx], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp [tableidx]] -[visit_exp tableidx] -[visit_id tableidx] not free -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../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` []} -[check_dims] memidx -[visit_exp memidx] -[visit_id memidx] -[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [memidx], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp [memidx]] -[visit_exp memidx] -[visit_id memidx] not free -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../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` []} -[check_dims] elemidx -[visit_exp elemidx] -[visit_id elemidx] -[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [elemidx], `DATAS` [], `LOCALS` [], `LABELS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp [elemidx]] -[visit_exp elemidx] -[visit_id elemidx] not free -[visit_exp []] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../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` []} -[check_dims] dataidx -[visit_exp dataidx] -[visit_id dataidx] -[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [dataidx], `LOCALS` [], `LABELS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp [dataidx]] -[visit_exp dataidx] -[visit_id dataidx] not free -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../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` []} -[check_dims] localidx -[visit_exp localidx] -[visit_id localidx] -[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [localidx], `LABELS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp [localidx]] -[visit_exp localidx] -[visit_id localidx] not free -[visit_exp []] -=> - ;; ../../../../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` []} -[check_dims] labelidx -[visit_exp labelidx] -[visit_id labelidx] -[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` [labelidx]}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp [labelidx]] -[visit_exp labelidx] -[visit_id labelidx] not 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]} -[check_dims] funcidx -[visit_exp `FUNC`_externidx(funcidx)] -[visit_exp (funcidx)] -[visit_exp funcidx] -[visit_id funcidx] -[visit_exp $free_funcidx(funcidx)] -[visit_exp funcidx] -[visit_id funcidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{funcidx : funcidx}(`FUNC`_externidx(funcidx)) = $free_funcidx(funcidx) -[check_dims] globalidx -[visit_exp `GLOBAL`_externidx(globalidx)] -[visit_exp (globalidx)] -[visit_exp globalidx] -[visit_id globalidx] -[visit_exp $free_globalidx(globalidx)] -[visit_exp globalidx] -[visit_id globalidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{globalidx : globalidx}(`GLOBAL`_externidx(globalidx)) = $free_globalidx(globalidx) -[check_dims] tableidx -[visit_exp `TABLE`_externidx(tableidx)] -[visit_exp (tableidx)] -[visit_exp tableidx] -[visit_id tableidx] -[visit_exp $free_tableidx(tableidx)] -[visit_exp tableidx] -[visit_id tableidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{tableidx : tableidx}(`TABLE`_externidx(tableidx)) = $free_tableidx(tableidx) -[check_dims] memidx -[visit_exp `MEM`_externidx(memidx)] -[visit_exp (memidx)] -[visit_exp memidx] -[visit_id memidx] -[visit_exp $free_memidx(memidx)] -[visit_exp memidx] -[visit_id memidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_externidx{memidx : memidx}(`MEM`_externidx(memidx)) = $free_memidx(memidx) -[check_dims] -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter rectype] -[visit_id rectype] not free -[visit_id rectype] no dims -[scope_enter n] -[visit_id n] not free -[visit_id n] no dims -[scope_exit n] -[scope_exit rectype] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter typeidx] -[visit_id typeidx] not free -[visit_id typeidx] no dims -[scope_exit typeidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter n] -[visit_id n] not free -[visit_id n] no dims -[scope_exit n] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter typeidx] -[visit_id typeidx] not free -[visit_id typeidx] no dims -[scope_exit typeidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter n] -[visit_id n] not free -[visit_id n] no dims -[scope_exit n] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[check_dims] -[scope_enter null?] -[visit_id null?] not free -[visit_id null?] no dims -[scope_enter heaptype] -[visit_id heaptype] not free -[visit_id heaptype] no dims -[scope_exit heaptype] -[scope_exit null?] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -DecD ANYREF : reftype -[check_dims] -DecD EQREF : reftype -[check_dims] -DecD I31REF : reftype -[check_dims] -DecD STRUCTREF : reftype -[check_dims] -DecD ARRAYREF : reftype -[check_dims] -DecD FUNCREF : reftype -[check_dims] -DecD EXNREF : reftype -[check_dims] -DecD EXTERNREF : reftype -[check_dims] -DecD NULLREF : reftype -[check_dims] -DecD NULLFUNCREF : reftype -[check_dims] -DecD NULLEXNREF : reftype -[check_dims] -DecD NULLEXTERNREF : reftype -[check_dims] -[visit_exp `REF`_reftype(?(`NULL`_null), `ANY`_heaptype)] -[visit_exp (?(`NULL`_null), `ANY`_heaptype)] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp `ANY`_heaptype] -[visit_exp ()] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $ANYREF = `REF`_reftype(?(`NULL`_null), `ANY`_heaptype) -[check_dims] -[visit_exp `REF`_reftype(?(`NULL`_null), `EQ`_heaptype)] -[visit_exp (?(`NULL`_null), `EQ`_heaptype)] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp `EQ`_heaptype] -[visit_exp ()] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $EQREF = `REF`_reftype(?(`NULL`_null), `EQ`_heaptype) -[check_dims] -[visit_exp `REF`_reftype(?(`NULL`_null), `I31`_heaptype)] -[visit_exp (?(`NULL`_null), `I31`_heaptype)] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp `I31`_heaptype] -[visit_exp ()] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $I31REF = `REF`_reftype(?(`NULL`_null), `I31`_heaptype) -[check_dims] -[visit_exp `REF`_reftype(?(`NULL`_null), `STRUCT`_heaptype)] -[visit_exp (?(`NULL`_null), `STRUCT`_heaptype)] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp `STRUCT`_heaptype] -[visit_exp ()] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $STRUCTREF = `REF`_reftype(?(`NULL`_null), `STRUCT`_heaptype) -[check_dims] -[visit_exp `REF`_reftype(?(`NULL`_null), `ARRAY`_heaptype)] -[visit_exp (?(`NULL`_null), `ARRAY`_heaptype)] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp `ARRAY`_heaptype] -[visit_exp ()] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $ARRAYREF = `REF`_reftype(?(`NULL`_null), `ARRAY`_heaptype) -[check_dims] -[visit_exp `REF`_reftype(?(`NULL`_null), `FUNC`_heaptype)] -[visit_exp (?(`NULL`_null), `FUNC`_heaptype)] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp `FUNC`_heaptype] -[visit_exp ()] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $FUNCREF = `REF`_reftype(?(`NULL`_null), `FUNC`_heaptype) -[check_dims] -[visit_exp `REF`_reftype(?(`NULL`_null), `EXN`_heaptype)] -[visit_exp (?(`NULL`_null), `EXN`_heaptype)] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp `EXN`_heaptype] -[visit_exp ()] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $EXNREF = `REF`_reftype(?(`NULL`_null), `EXN`_heaptype) -[check_dims] -[visit_exp `REF`_reftype(?(`NULL`_null), `EXTERN`_heaptype)] -[visit_exp (?(`NULL`_null), `EXTERN`_heaptype)] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp `EXTERN`_heaptype] -[visit_exp ()] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $EXTERNREF = `REF`_reftype(?(`NULL`_null), `EXTERN`_heaptype) -[check_dims] -[visit_exp `REF`_reftype(?(`NULL`_null), `NONE`_heaptype)] -[visit_exp (?(`NULL`_null), `NONE`_heaptype)] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp `NONE`_heaptype] -[visit_exp ()] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $NULLREF = `REF`_reftype(?(`NULL`_null), `NONE`_heaptype) -[check_dims] -[visit_exp `REF`_reftype(?(`NULL`_null), `NOFUNC`_heaptype)] -[visit_exp (?(`NULL`_null), `NOFUNC`_heaptype)] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp `NOFUNC`_heaptype] -[visit_exp ()] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $NULLFUNCREF = `REF`_reftype(?(`NULL`_null), `NOFUNC`_heaptype) -[check_dims] -[visit_exp `REF`_reftype(?(`NULL`_null), `NOEXN`_heaptype)] -[visit_exp (?(`NULL`_null), `NOEXN`_heaptype)] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp `NOEXN`_heaptype] -[visit_exp ()] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $NULLEXNREF = `REF`_reftype(?(`NULL`_null), `NOEXN`_heaptype) -[check_dims] -[visit_exp `REF`_reftype(?(`NULL`_null), `NOEXTERN`_heaptype)] -[visit_exp (?(`NULL`_null), `NOEXTERN`_heaptype)] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp `NOEXTERN`_heaptype] -[visit_exp ()] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $NULLEXTERNREF = `REF`_reftype(?(`NULL`_null), `NOEXTERN`_heaptype) -[check_dims] -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter mut?] -[visit_id mut?] not free -[visit_id mut?] no dims -[scope_enter storagetype] -[visit_id storagetype] not free -[visit_id storagetype] no dims -[scope_exit storagetype] -[scope_exit mut?] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter fieldtype] -[visit_id fieldtype] not free -[visit_id fieldtype] no dims -[scope_exit fieldtype] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter resulttype] -[visit_id resulttype] not free -[visit_id resulttype] no dims -[scope_enter resulttype] -[visit_id resulttype] not free -[visit_id resulttype] no dims -[scope_exit resulttype] -[scope_exit resulttype] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter final?] -[visit_id final?] not free -[visit_id final?] no dims -[scope_enter typeuse*] -[visit_id typeuse*] not free -[visit_id typeuse*] no dims -[scope_enter comptype] -[visit_id comptype] not free -[visit_id comptype] no dims -[scope_exit comptype] -[scope_exit typeuse*] -[scope_exit final?] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter u64] -[visit_id u64] not free -[visit_id u64] no dims -[scope_enter u64?] -[visit_id u64?] not free -[visit_id u64?] no dims -[scope_exit u64?] -[scope_exit u64] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[check_dims] -[scope_enter mut?] -[visit_id mut?] not free -[visit_id mut?] no dims -[scope_enter valtype] -[visit_id valtype] not free -[visit_id valtype] no dims -[scope_exit valtype] -[scope_exit mut?] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter addrtype] -[visit_id addrtype] not free -[visit_id addrtype] no dims -[scope_enter limits] -[visit_id limits] not free -[visit_id limits] no dims -[scope_exit limits] -[scope_exit addrtype] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter addrtype] -[visit_id addrtype] not free -[visit_id addrtype] no dims -[scope_enter limits] -[visit_id limits] not free -[visit_id limits] no dims -[scope_enter reftype] -[visit_id reftype] not free -[visit_id reftype] no dims -[scope_exit reftype] -[scope_exit limits] -[scope_exit addrtype] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[check_dims] -[scope_enter tagtype] -[visit_id tagtype] not free -[visit_id tagtype] no dims -[scope_exit tagtype] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter globaltype] -[visit_id globaltype] not free -[visit_id globaltype] no dims -[scope_exit globaltype] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter memtype] -[visit_id memtype] not free -[visit_id memtype] no dims -[scope_exit memtype] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter tabletype] -[visit_id tabletype] not free -[visit_id tabletype] no dims -[scope_exit tabletype] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter typeuse] -[visit_id typeuse] not free -[visit_id typeuse] no dims -[scope_exit typeuse] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter externtype*] -[visit_id externtype*] not free -[visit_id externtype*] no dims -[scope_enter externtype*] -[visit_id externtype*] not free -[visit_id externtype*] no dims -[scope_exit externtype*] -[scope_exit externtype*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] N -DecD IN(N : N) : Inn -[visit_id N] not free -[check_dims] -[visit_exp 32] -[visit_exp `I32`_Inn] -[visit_exp ()] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $IN(32) = `I32`_Inn -[check_dims] -[visit_exp 64] -[visit_exp `I64`_Inn] -[visit_exp ()] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $IN(64) = `I64`_Inn -[check_dims] N -DecD FN(N : N) : Fnn -[visit_id N] not free -[check_dims] -[visit_exp 32] -[visit_exp `F32`_Fnn] -[visit_exp ()] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $FN(32) = `F32`_Fnn -[check_dims] -[visit_exp 64] -[visit_exp `F64`_Fnn] -[visit_exp ()] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $FN(64) = `F64`_Fnn -[check_dims] N -DecD JN(N : N) : Jnn -[visit_id N] not free -[check_dims] -[visit_exp 8] -[visit_exp `I8`_Jnn] -[visit_exp ()] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(8) = `I8`_Jnn -[check_dims] -[visit_exp 16] -[visit_exp `I16`_Jnn] -[visit_exp ()] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(16) = `I16`_Jnn -[check_dims] -[visit_exp 32] -[visit_exp `I32`_Jnn] -[visit_exp ()] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(32) = `I32`_Jnn -[check_dims] -[visit_exp 64] -[visit_exp `I64`_Jnn] -[visit_exp ()] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $JN(64) = `I64`_Jnn -[check_dims] numtype -DecD size(numtype : numtype) : nat -[visit_id numtype] not free -[check_dims] vectype -DecD vsize(vectype : vectype) : nat -[visit_id vectype] not free -[check_dims] packtype -DecD psize(packtype : packtype) : nat -[visit_id packtype] not free -[check_dims] lanetype -DecD lsize(lanetype : lanetype) : nat -[visit_id lanetype] not free -[check_dims] storagetype -DecD zsize(storagetype : storagetype) : nat -[visit_id storagetype] not free -[check_dims] Inn -DecD isize(Inn : Inn) : nat -[visit_id Inn] not free -[check_dims] Jnn -DecD jsize(Jnn : Jnn) : nat -[visit_id Jnn] not free -[check_dims] Fnn -DecD fsize(Fnn : Fnn) : nat -[visit_id Fnn] not free -[check_dims] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp 32] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $size(`I32`_numtype) = 32 -[check_dims] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp 64] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $size(`I64`_numtype) = 64 -[check_dims] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp 32] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $size(`F32`_numtype) = 32 -[check_dims] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp 64] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $size(`F64`_numtype) = 64 -[check_dims] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp 128] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $vsize(`V128`_vectype) = 128 -[check_dims] -[visit_exp `I8`_packtype] -[visit_exp ()] -[visit_exp 8] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $psize(`I8`_packtype) = 8 -[check_dims] -[visit_exp `I16`_packtype] -[visit_exp ()] -[visit_exp 16] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $psize(`I16`_packtype) = 16 -[check_dims] numtype -[visit_exp (numtype : numtype <: lanetype)] -[visit_exp numtype] -[visit_id numtype] -[visit_exp $size(numtype)] -[visit_exp numtype] -[visit_id numtype] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $lsize{numtype : numtype}((numtype : numtype <: lanetype)) = $size(numtype) -[check_dims] packtype -[visit_exp (packtype : packtype <: lanetype)] -[visit_exp packtype] -[visit_id packtype] -[visit_exp $psize(packtype)] -[visit_exp packtype] -[visit_id packtype] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $lsize{packtype : packtype}((packtype : packtype <: lanetype)) = $psize(packtype) -[check_dims] numtype -[visit_exp (numtype : numtype <: storagetype)] -[visit_exp numtype] -[visit_id numtype] -[visit_exp $size(numtype)] -[visit_exp numtype] -[visit_id numtype] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize{numtype : numtype}((numtype : numtype <: storagetype)) = $size(numtype) -[check_dims] vectype -[visit_exp (vectype : vectype <: storagetype)] -[visit_exp vectype] -[visit_id vectype] -[visit_exp $vsize(vectype)] -[visit_exp vectype] -[visit_id vectype] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize{vectype : vectype}((vectype : vectype <: storagetype)) = $vsize(vectype) -[check_dims] packtype -[visit_exp (packtype : packtype <: storagetype)] -[visit_exp packtype] -[visit_id packtype] -[visit_exp $psize(packtype)] -[visit_exp packtype] -[visit_id packtype] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $zsize{packtype : packtype}((packtype : packtype <: storagetype)) = $psize(packtype) -[check_dims] Inn -[visit_exp Inn] -[visit_id Inn] -[visit_exp $size((Inn : Inn <: numtype))] -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $isize{Inn : Inn}(Inn) = $size((Inn : Inn <: numtype)) -[check_dims] Fnn -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp $size((Fnn : Fnn <: numtype))] -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $fsize{Fnn : Fnn}(Fnn) = $size((Fnn : Fnn <: numtype)) -[check_dims] Jnn -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp $lsize((Jnn : Jnn <: lanetype))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $jsize{Jnn : Jnn}(Jnn) = $lsize((Jnn : Jnn <: lanetype)) -[check_dims] nat -DecD inv_isize(nat : nat) : Inn -[visit_id nat] not free -[check_dims] nat -DecD inv_jsize(nat : nat) : Jnn -[visit_id nat] not free -[check_dims] nat -DecD inv_fsize(nat : nat) : Fnn -[visit_id nat] not free -[check_dims] -[visit_exp 32] -[visit_exp `I32`_Inn] -[visit_exp ()] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_isize(32) = `I32`_Inn -[check_dims] -[visit_exp 64] -[visit_exp `I64`_Inn] -[visit_exp ()] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_isize(64) = `I64`_Inn -[check_dims] -[visit_exp 32] -[visit_exp `F32`_Fnn] -[visit_exp ()] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_fsize(32) = `F32`_Fnn -[check_dims] -[visit_exp 64] -[visit_exp `F64`_Fnn] -[visit_exp ()] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_fsize(64) = `F64`_Fnn -[check_dims] -[visit_exp 8] -[visit_exp `I8`_Jnn] -[visit_exp ()] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsize(8) = `I8`_Jnn -[check_dims] -[visit_exp 16] -[visit_exp `I16`_Jnn] -[visit_exp ()] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsize(16) = `I16`_Jnn -[check_dims] n -[visit_exp n] -[visit_id n] -[visit_exp ($inv_isize(n) : Inn <: Jnn)] -[visit_exp $inv_isize(n)] -[visit_exp n] -[visit_id n] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsize{n : n}(n) = ($inv_isize(n) : Inn <: Jnn) -[check_dims] numtype -DecD sizenn(numtype : numtype) : nat -[visit_id numtype] not free -[check_dims] numtype -DecD sizenn1(numtype : numtype) : nat -[visit_id numtype] not free -[check_dims] numtype -DecD sizenn2(numtype : numtype) : nat -[visit_id numtype] not free -[check_dims] nt -[visit_exp nt] -[visit_id nt] -[visit_exp $size(nt)] -[visit_exp nt] -[visit_id nt] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $sizenn{nt : numtype}(nt) = $size(nt) -[check_dims] nt -[visit_exp nt] -[visit_id nt] -[visit_exp $size(nt)] -[visit_exp nt] -[visit_id nt] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $sizenn1{nt : numtype}(nt) = $size(nt) -[check_dims] nt -[visit_exp nt] -[visit_id nt] -[visit_exp $size(nt)] -[visit_exp nt] -[visit_id nt] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $sizenn2{nt : numtype}(nt) = $size(nt) -[check_dims] vectype -DecD vsizenn(vectype : vectype) : nat -[visit_id vectype] not free -[check_dims] vt -[visit_exp vt] -[visit_id vt] -[visit_exp $vsize(vt)] -[visit_exp vt] -[visit_id vt] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $vsizenn{vt : vectype}(vt) = $vsize(vt) -[check_dims] packtype -DecD psizenn(packtype : packtype) : nat -[visit_id packtype] not free -[check_dims] pt -[visit_exp pt] -[visit_id pt] -[visit_exp $psize(pt)] -[visit_exp pt] -[visit_id pt] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $psizenn{pt : packtype}(pt) = $psize(pt) -[check_dims] lanetype -DecD lsizenn(lanetype : lanetype) : nat -[visit_id lanetype] not free -[check_dims] lanetype -DecD lsizenn1(lanetype : lanetype) : nat -[visit_id lanetype] not free -[check_dims] lanetype -DecD lsizenn2(lanetype : lanetype) : nat -[visit_id lanetype] not free -[check_dims] lt -[visit_exp lt] -[visit_id lt] -[visit_exp $lsize(lt)] -[visit_exp lt] -[visit_id lt] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $lsizenn{lt : lanetype}(lt) = $lsize(lt) -[check_dims] lt -[visit_exp lt] -[visit_id lt] -[visit_exp $lsize(lt)] -[visit_exp lt] -[visit_id lt] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $lsizenn1{lt : lanetype}(lt) = $lsize(lt) -[check_dims] lt -[visit_exp lt] -[visit_id lt] -[visit_exp $lsize(lt)] -[visit_exp lt] -[visit_id lt] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $lsizenn2{lt : lanetype}(lt) = $lsize(lt) -[check_dims] Jnn -DecD jsizenn(Jnn : Jnn) : nat -[visit_id Jnn] not free -[check_dims] Jnn -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp $lsize((Jnn : Jnn <: lanetype))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $jsizenn{Jnn : Jnn}(Jnn) = $lsize((Jnn : Jnn <: lanetype)) -[check_dims] nat -DecD inv_jsizenn(nat : nat) : Jnn -[visit_id nat] not free -[check_dims] n -[visit_exp n] -[visit_id n] -[visit_exp $inv_jsize(n)] -[visit_exp n] -[visit_id n] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsizenn{n : n}(n) = $inv_jsize(n) -[check_dims] lanetype -DecD lunpack(lanetype : lanetype) : numtype -[visit_id lanetype] not free -[check_dims] numtype -[visit_exp (numtype : numtype <: lanetype)] -[visit_exp numtype] -[visit_id numtype] -[visit_exp numtype] -[visit_id numtype] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $lunpack{numtype : numtype}((numtype : numtype <: lanetype)) = numtype -[check_dims] packtype -[visit_exp (packtype : packtype <: lanetype)] -[visit_exp packtype] -[visit_id packtype] -[visit_exp `I32`_numtype] -[visit_exp ()] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $lunpack{packtype : packtype}((packtype : packtype <: lanetype)) = `I32`_numtype -[check_dims] storagetype -DecD unpack(storagetype : storagetype) : valtype -[visit_id storagetype] not free -[check_dims] valtype -[visit_exp (valtype : valtype <: storagetype)] -[visit_exp valtype] -[visit_id valtype] -[visit_exp valtype] -[visit_id valtype] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unpack{valtype : valtype}((valtype : valtype <: storagetype)) = valtype -[check_dims] packtype -[visit_exp (packtype : packtype <: storagetype)] -[visit_exp packtype] -[visit_id packtype] -[visit_exp `I32`_valtype] -[visit_exp ()] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unpack{packtype : packtype}((packtype : packtype <: storagetype)) = `I32`_valtype -[check_dims] storagetype -DecD nunpack(storagetype : storagetype) : numtype -[visit_id storagetype] not free -[check_dims] numtype -[visit_exp (numtype : numtype <: storagetype)] -[visit_exp numtype] -[visit_id numtype] -[visit_exp numtype] -[visit_id numtype] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $nunpack{numtype : numtype}((numtype : numtype <: storagetype)) = numtype -[check_dims] packtype -[visit_exp (packtype : packtype <: storagetype)] -[visit_exp packtype] -[visit_id packtype] -[visit_exp `I32`_numtype] -[visit_exp ()] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $nunpack{packtype : packtype}((packtype : packtype <: storagetype)) = `I32`_numtype -[check_dims] storagetype -DecD vunpack(storagetype : storagetype) : vectype -[visit_id storagetype] not free -[check_dims] vectype -[visit_exp (vectype : vectype <: storagetype)] -[visit_exp vectype] -[visit_id vectype] -[visit_exp vectype] -[visit_id vectype] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $vunpack{vectype : vectype}((vectype : vectype <: storagetype)) = vectype -[check_dims] storagetype -DecD cunpack(storagetype : storagetype) : consttype -[visit_id storagetype] not free -[check_dims] consttype -[visit_exp (consttype : consttype <: storagetype)] -[visit_exp consttype] -[visit_id consttype] -[visit_exp consttype] -[visit_id consttype] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $cunpack{consttype : consttype}((consttype : consttype <: storagetype)) = consttype -[check_dims] packtype -[visit_exp (packtype : packtype <: storagetype)] -[visit_exp packtype] -[visit_id packtype] -[visit_exp `I32`_consttype] -[visit_exp ()] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $cunpack{packtype : packtype}((packtype : packtype <: storagetype)) = `I32`_consttype -[check_dims] lanetype -[visit_exp (lanetype : lanetype <: storagetype)] -[visit_exp lanetype] -[visit_id lanetype] -[visit_exp ($lunpack(lanetype) : numtype <: consttype)] -[visit_exp $lunpack(lanetype)] -[visit_exp lanetype] -[visit_id lanetype] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $cunpack{lanetype : lanetype}((lanetype : lanetype <: storagetype)) = ($lunpack(lanetype) : numtype <: consttype) -[check_dims] addrtype -DecD minat(addrtype : addrtype, addrtype : addrtype) : addrtype -[visit_id addrtype] not free -[visit_id addrtype] not free -[check_dims] at_1 at_2 -[visit_exp at_1] -[visit_id at_1] -[visit_exp at_2] -[visit_id at_2] -[visit_exp at_1] -[visit_id at_1] not free -[visit_exp ($size((at_1 : addrtype <: numtype)) <= $size((at_2 : addrtype <: numtype)))] -[visit_exp $size((at_1 : addrtype <: numtype))] -[visit_exp (at_1 : addrtype <: numtype)] -[visit_exp at_1] -[visit_id at_1] not free -[visit_exp $size((at_2 : addrtype <: numtype))] -[visit_exp (at_2 : addrtype <: numtype)] -[visit_exp at_2] -[visit_id at_2] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $minat{at_1 : addrtype, at_2 : addrtype}(at_1, at_2) = at_1 - -- if ($size((at_1 : addrtype <: numtype)) <= $size((at_2 : addrtype <: numtype))) -[check_dims] at_1 at_2 -[visit_exp at_1] -[visit_id at_1] -[visit_exp at_2] -[visit_id at_2] -[visit_exp at_2] -[visit_id at_2] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $minat{at_1 : addrtype, at_2 : addrtype}(at_1, at_2) = at_2 - -- otherwise -[check_dims] reftype -DecD diffrt(reftype : reftype, reftype : reftype) : reftype -[visit_id reftype] not free -[visit_id reftype] not free -[check_dims] ht_1 ht_2 null_1 -[visit_exp `REF`_reftype(null_1?{null_1 <- `null_1?`}, ht_1)] -[visit_exp (null_1?{null_1 <- `null_1?`}, ht_1)] -[visit_exp null_1?{null_1 <- `null_1?`}] -[scope_enter null_1] -[visit_exp null_1] -[visit_id null_1] not free -[visit_id null_1] not free -[scope_exit null_1] -[visit_exp `null_1?`] -[visit_id null_1?] no dims -[visit_id null_1?] -[visit_exp ht_1] -[visit_id ht_1] -[visit_exp `REF`_reftype(?(`NULL`_null), ht_2)] -[visit_exp (?(`NULL`_null), ht_2)] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp ht_2] -[visit_id ht_2] -[visit_exp `REF`_reftype(?(), ht_1)] -[visit_exp (?(), ht_1)] -[visit_exp ?()] -[visit_exp ht_1] -[visit_id ht_1] not free -=> - ;; ../../../../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) -[check_dims] ht_1 ht_2 null_1 -[visit_exp `REF`_reftype(null_1?{null_1 <- `null_1?`}, ht_1)] -[visit_exp (null_1?{null_1 <- `null_1?`}, ht_1)] -[visit_exp null_1?{null_1 <- `null_1?`}] -[scope_enter null_1] -[visit_exp null_1] -[visit_id null_1] not free -[visit_id null_1] not free -[scope_exit null_1] -[visit_exp `null_1?`] -[visit_id null_1?] no dims -[visit_id null_1?] -[visit_exp ht_1] -[visit_id ht_1] -[visit_exp `REF`_reftype(?(), ht_2)] -[visit_exp (?(), ht_2)] -[visit_exp ?()] -[visit_exp ht_2] -[visit_id ht_2] -[visit_exp `REF`_reftype(null_1?{null_1 <- `null_1?`}, ht_1)] -[visit_exp (null_1?{null_1 <- `null_1?`}, ht_1)] -[visit_exp null_1?{null_1 <- `null_1?`}] -[scope_enter null_1] -[visit_exp null_1] -[visit_id null_1] not free -[visit_id null_1] not free -[scope_exit null_1] -[visit_exp `null_1?`] -[visit_id null_1?] not free -[visit_id null_1?] no dims -[visit_exp ht_1] -[visit_id ht_1] not free -=> - ;; ../../../../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) -[check_dims] typeuse -DecD as_deftype(typeuse : typeuse) : deftype -[visit_id typeuse] not free -[check_dims] dt -[visit_exp (dt : deftype <: typeuse)] -[visit_exp dt] -[visit_id dt] -[visit_exp dt] -[visit_id dt] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $as_deftype{dt : deftype}((dt : deftype <: typeuse)) = dt -[check_dims] _ -DecD tagsxt(externtype*) : tagtype* -[visit_id _] not free -[check_dims] _ -DecD globalsxt(externtype*) : globaltype* -[visit_id _] not free -[check_dims] _ -DecD memsxt(externtype*) : memtype* -[visit_id _] not free -[check_dims] _ -DecD tablesxt(externtype*) : tabletype* -[visit_id _] not free -[check_dims] _ -DecD funcsxt(externtype*) : deftype* -[visit_id _] not free -[check_dims] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $tagsxt([]) = [] -[check_dims] jt xt -[visit_exp [`TAG`_externtype(jt)] ++ xt*{xt <- `xt*`}] -[visit_exp [`TAG`_externtype(jt)]] -[visit_exp `TAG`_externtype(jt)] -[visit_exp (jt)] -[visit_exp jt] -[visit_id jt] -[visit_exp xt*{xt <- `xt*`}] -[scope_enter xt] -[visit_exp xt] -[visit_id xt] not free -[visit_id xt] not free -[scope_exit xt] -[visit_exp `xt*`] -[visit_id xt*] no dims -[visit_id xt*] -[visit_exp [jt] ++ $tagsxt(xt*{xt <- `xt*`})] -[visit_exp [jt]] -[visit_exp jt] -[visit_id jt] not free -[visit_exp $tagsxt(xt*{xt <- `xt*`})] -[visit_exp xt*{xt <- `xt*`}] -[scope_enter xt] -[visit_exp xt] -[visit_id xt] not free -[visit_id xt] not free -[scope_exit xt] -[visit_exp `xt*`] -[visit_id xt*] not free -[visit_id xt*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $tagsxt{jt : tagtype, `xt*` : externtype*}([`TAG`_externtype(jt)] ++ xt*{xt <- `xt*`}) = [jt] ++ $tagsxt(xt*{xt <- `xt*`}) -[check_dims] externtype xt -[visit_exp [externtype] ++ xt*{xt <- `xt*`}] -[visit_exp [externtype]] -[visit_exp externtype] -[visit_id externtype] -[visit_exp xt*{xt <- `xt*`}] -[scope_enter xt] -[visit_exp xt] -[visit_id xt] not free -[visit_id xt] not free -[scope_exit xt] -[visit_exp `xt*`] -[visit_id xt*] no dims -[visit_id xt*] -[visit_exp $tagsxt(xt*{xt <- `xt*`})] -[visit_exp xt*{xt <- `xt*`}] -[scope_enter xt] -[visit_exp xt] -[visit_id xt] not free -[visit_id xt] not free -[scope_exit xt] -[visit_exp `xt*`] -[visit_id xt*] not free -[visit_id xt*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $tagsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tagsxt(xt*{xt <- `xt*`}) - -- otherwise -[check_dims] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $globalsxt([]) = [] -[check_dims] gt xt -[visit_exp [`GLOBAL`_externtype(gt)] ++ xt*{xt <- `xt*`}] -[visit_exp [`GLOBAL`_externtype(gt)]] -[visit_exp `GLOBAL`_externtype(gt)] -[visit_exp (gt)] -[visit_exp gt] -[visit_id gt] -[visit_exp xt*{xt <- `xt*`}] -[scope_enter xt] -[visit_exp xt] -[visit_id xt] not free -[visit_id xt] not free -[scope_exit xt] -[visit_exp `xt*`] -[visit_id xt*] no dims -[visit_id xt*] -[visit_exp [gt] ++ $globalsxt(xt*{xt <- `xt*`})] -[visit_exp [gt]] -[visit_exp gt] -[visit_id gt] not free -[visit_exp $globalsxt(xt*{xt <- `xt*`})] -[visit_exp xt*{xt <- `xt*`}] -[scope_enter xt] -[visit_exp xt] -[visit_id xt] not free -[visit_id xt] not free -[scope_exit xt] -[visit_exp `xt*`] -[visit_id xt*] not free -[visit_id xt*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $globalsxt{gt : globaltype, `xt*` : externtype*}([`GLOBAL`_externtype(gt)] ++ xt*{xt <- `xt*`}) = [gt] ++ $globalsxt(xt*{xt <- `xt*`}) -[check_dims] externtype xt -[visit_exp [externtype] ++ xt*{xt <- `xt*`}] -[visit_exp [externtype]] -[visit_exp externtype] -[visit_id externtype] -[visit_exp xt*{xt <- `xt*`}] -[scope_enter xt] -[visit_exp xt] -[visit_id xt] not free -[visit_id xt] not free -[scope_exit xt] -[visit_exp `xt*`] -[visit_id xt*] no dims -[visit_id xt*] -[visit_exp $globalsxt(xt*{xt <- `xt*`})] -[visit_exp xt*{xt <- `xt*`}] -[scope_enter xt] -[visit_exp xt] -[visit_id xt] not free -[visit_id xt] not free -[scope_exit xt] -[visit_exp `xt*`] -[visit_id xt*] not free -[visit_id xt*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $globalsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $globalsxt(xt*{xt <- `xt*`}) - -- otherwise -[check_dims] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $memsxt([]) = [] -[check_dims] mt xt -[visit_exp [`MEM`_externtype(mt)] ++ xt*{xt <- `xt*`}] -[visit_exp [`MEM`_externtype(mt)]] -[visit_exp `MEM`_externtype(mt)] -[visit_exp (mt)] -[visit_exp mt] -[visit_id mt] -[visit_exp xt*{xt <- `xt*`}] -[scope_enter xt] -[visit_exp xt] -[visit_id xt] not free -[visit_id xt] not free -[scope_exit xt] -[visit_exp `xt*`] -[visit_id xt*] no dims -[visit_id xt*] -[visit_exp [mt] ++ $memsxt(xt*{xt <- `xt*`})] -[visit_exp [mt]] -[visit_exp mt] -[visit_id mt] not free -[visit_exp $memsxt(xt*{xt <- `xt*`})] -[visit_exp xt*{xt <- `xt*`}] -[scope_enter xt] -[visit_exp xt] -[visit_id xt] not free -[visit_id xt] not free -[scope_exit xt] -[visit_exp `xt*`] -[visit_id xt*] not free -[visit_id xt*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $memsxt{mt : memtype, `xt*` : externtype*}([`MEM`_externtype(mt)] ++ xt*{xt <- `xt*`}) = [mt] ++ $memsxt(xt*{xt <- `xt*`}) -[check_dims] externtype xt -[visit_exp [externtype] ++ xt*{xt <- `xt*`}] -[visit_exp [externtype]] -[visit_exp externtype] -[visit_id externtype] -[visit_exp xt*{xt <- `xt*`}] -[scope_enter xt] -[visit_exp xt] -[visit_id xt] not free -[visit_id xt] not free -[scope_exit xt] -[visit_exp `xt*`] -[visit_id xt*] no dims -[visit_id xt*] -[visit_exp $memsxt(xt*{xt <- `xt*`})] -[visit_exp xt*{xt <- `xt*`}] -[scope_enter xt] -[visit_exp xt] -[visit_id xt] not free -[visit_id xt] not free -[scope_exit xt] -[visit_exp `xt*`] -[visit_id xt*] not free -[visit_id xt*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $memsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $memsxt(xt*{xt <- `xt*`}) - -- otherwise -[check_dims] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $tablesxt([]) = [] -[check_dims] tt xt -[visit_exp [`TABLE`_externtype(tt)] ++ xt*{xt <- `xt*`}] -[visit_exp [`TABLE`_externtype(tt)]] -[visit_exp `TABLE`_externtype(tt)] -[visit_exp (tt)] -[visit_exp tt] -[visit_id tt] -[visit_exp xt*{xt <- `xt*`}] -[scope_enter xt] -[visit_exp xt] -[visit_id xt] not free -[visit_id xt] not free -[scope_exit xt] -[visit_exp `xt*`] -[visit_id xt*] no dims -[visit_id xt*] -[visit_exp [tt] ++ $tablesxt(xt*{xt <- `xt*`})] -[visit_exp [tt]] -[visit_exp tt] -[visit_id tt] not free -[visit_exp $tablesxt(xt*{xt <- `xt*`})] -[visit_exp xt*{xt <- `xt*`}] -[scope_enter xt] -[visit_exp xt] -[visit_id xt] not free -[visit_id xt] not free -[scope_exit xt] -[visit_exp `xt*`] -[visit_id xt*] not free -[visit_id xt*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $tablesxt{tt : tabletype, `xt*` : externtype*}([`TABLE`_externtype(tt)] ++ xt*{xt <- `xt*`}) = [tt] ++ $tablesxt(xt*{xt <- `xt*`}) -[check_dims] externtype xt -[visit_exp [externtype] ++ xt*{xt <- `xt*`}] -[visit_exp [externtype]] -[visit_exp externtype] -[visit_id externtype] -[visit_exp xt*{xt <- `xt*`}] -[scope_enter xt] -[visit_exp xt] -[visit_id xt] not free -[visit_id xt] not free -[scope_exit xt] -[visit_exp `xt*`] -[visit_id xt*] no dims -[visit_id xt*] -[visit_exp $tablesxt(xt*{xt <- `xt*`})] -[visit_exp xt*{xt <- `xt*`}] -[scope_enter xt] -[visit_exp xt] -[visit_id xt] not free -[visit_id xt] not free -[scope_exit xt] -[visit_exp `xt*`] -[visit_id xt*] not free -[visit_id xt*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $tablesxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tablesxt(xt*{xt <- `xt*`}) - -- otherwise -[check_dims] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $funcsxt([]) = [] -[check_dims] dt xt -[visit_exp [`FUNC`_externtype((dt : deftype <: typeuse))] ++ xt*{xt <- `xt*`}] -[visit_exp [`FUNC`_externtype((dt : deftype <: typeuse))]] -[visit_exp `FUNC`_externtype((dt : deftype <: typeuse))] -[visit_exp ((dt : deftype <: typeuse))] -[visit_exp (dt : deftype <: typeuse)] -[visit_exp dt] -[visit_id dt] -[visit_exp xt*{xt <- `xt*`}] -[scope_enter xt] -[visit_exp xt] -[visit_id xt] not free -[visit_id xt] not free -[scope_exit xt] -[visit_exp `xt*`] -[visit_id xt*] no dims -[visit_id xt*] -[visit_exp [dt] ++ $funcsxt(xt*{xt <- `xt*`})] -[visit_exp [dt]] -[visit_exp dt] -[visit_id dt] not free -[visit_exp $funcsxt(xt*{xt <- `xt*`})] -[visit_exp xt*{xt <- `xt*`}] -[scope_enter xt] -[visit_exp xt] -[visit_id xt] not free -[visit_id xt] not free -[scope_exit xt] -[visit_exp `xt*`] -[visit_id xt*] not free -[visit_id xt*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $funcsxt{dt : deftype, `xt*` : externtype*}([`FUNC`_externtype((dt : deftype <: typeuse))] ++ xt*{xt <- `xt*`}) = [dt] ++ $funcsxt(xt*{xt <- `xt*`}) -[check_dims] externtype xt -[visit_exp [externtype] ++ xt*{xt <- `xt*`}] -[visit_exp [externtype]] -[visit_exp externtype] -[visit_id externtype] -[visit_exp xt*{xt <- `xt*`}] -[scope_enter xt] -[visit_exp xt] -[visit_id xt] not free -[visit_id xt] not free -[scope_exit xt] -[visit_exp `xt*`] -[visit_id xt*] no dims -[visit_id xt*] -[visit_exp $funcsxt(xt*{xt <- `xt*`})] -[visit_exp xt*{xt <- `xt*`}] -[scope_enter xt] -[visit_exp xt] -[visit_id xt] not free -[visit_id xt] not free -[scope_exit xt] -[visit_exp `xt*`] -[visit_id xt*] not free -[visit_id xt*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $funcsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $funcsxt(xt*{xt <- `xt*`}) - -- otherwise -[check_dims] _ typevar -DecD subst_typevar(typevar : typevar, typevar*, typeuse*) : typeuse -[visit_id typevar] not free -[visit_id _] not free -[visit_id _] not free -[check_dims] _ typeuse -DecD subst_typeuse(typeuse : typeuse, typevar*, typeuse*) : typeuse -[visit_id typeuse] not free -[visit_id _] not free -[visit_id _] not free -[check_dims] _ addrtype -DecD subst_addrtype(addrtype : addrtype, typevar*, typeuse*) : addrtype -[visit_id addrtype] not free -[visit_id _] not free -[visit_id _] not free -[check_dims] _ numtype -DecD subst_numtype(numtype : numtype, typevar*, typeuse*) : numtype -[visit_id numtype] not free -[visit_id _] not free -[visit_id _] not free -[check_dims] _ vectype -DecD subst_vectype(vectype : vectype, typevar*, typeuse*) : vectype -[visit_id vectype] not free -[visit_id _] not free -[visit_id _] not free -[check_dims] _ heaptype -DecD subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype -[visit_id heaptype] not free -[visit_id _] not free -[visit_id _] not free -[check_dims] _ reftype -DecD subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype -[visit_id reftype] not free -[visit_id _] not free -[visit_id _] not free -[check_dims] _ valtype -DecD subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype -[visit_id valtype] not free -[visit_id _] not free -[visit_id _] not free -[check_dims] _ packtype -DecD subst_packtype(packtype : packtype, typevar*, typeuse*) : packtype -[visit_id packtype] not free -[visit_id _] not free -[visit_id _] not free -[check_dims] _ storagetype -DecD subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype -[visit_id storagetype] not free -[visit_id _] not free -[visit_id _] not free -[check_dims] _ fieldtype -DecD subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype -[visit_id fieldtype] not free -[visit_id _] not free -[visit_id _] not free -[check_dims] _ comptype -DecD subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype -[visit_id comptype] not free -[visit_id _] not free -[visit_id _] not free -[check_dims] _ subtype -DecD subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype -[visit_id subtype] not free -[visit_id _] not free -[visit_id _] not free -[check_dims] _ rectype -DecD subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype -[visit_id rectype] not free -[visit_id _] not free -[visit_id _] not free -[check_dims] _ deftype -DecD subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype -[visit_id deftype] not free -[visit_id _] not free -[visit_id _] not free -[check_dims] _ tagtype -DecD subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype -[visit_id tagtype] not free -[visit_id _] not free -[visit_id _] not free -[check_dims] _ globaltype -DecD subst_globaltype(globaltype : globaltype, typevar*, typeuse*) : globaltype -[visit_id globaltype] not free -[visit_id _] not free -[visit_id _] not free -[check_dims] _ memtype -DecD subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype -[visit_id memtype] not free -[visit_id _] not free -[visit_id _] not free -[check_dims] _ tabletype -DecD subst_tabletype(tabletype : tabletype, typevar*, typeuse*) : tabletype -[visit_id tabletype] not free -[visit_id _] not free -[visit_id _] not free -[check_dims] _ externtype -DecD subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype -[visit_id externtype] not free -[visit_id _] not free -[visit_id _] not free -[check_dims] _ moduletype -DecD subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype -[visit_id moduletype] not free -[visit_id _] not free -[visit_id _] not free -[check_dims] tv -[visit_exp tv] -[visit_id tv] -[visit_exp []] -[visit_exp []] -[visit_exp (tv : typevar <: typeuse)] -[visit_exp tv] -[visit_id tv] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_typevar{tv : typevar}(tv, [], []) = (tv : typevar <: typeuse) -[check_dims] tu' tu_1 tv tv' tv_1 -[visit_exp tv] -[visit_id tv] -[visit_exp [tv_1] ++ tv'*{tv' <- `tv'*`}] -[visit_exp [tv_1]] -[visit_exp tv_1] -[visit_id tv_1] -[visit_exp tv'*{tv' <- `tv'*`}] -[scope_enter tv'] -[visit_exp tv'] -[visit_id tv'] not free -[visit_id tv'] not free -[scope_exit tv'] -[visit_exp `tv'*`] -[visit_id tv'*] no dims -[visit_id tv'*] -[visit_exp [tu_1] ++ tu'*{tu' <- `tu'*`}] -[visit_exp [tu_1]] -[visit_exp tu_1] -[visit_id tu_1] -[visit_exp tu'*{tu' <- `tu'*`}] -[scope_enter tu'] -[visit_exp tu'] -[visit_id tu'] not free -[visit_id tu'] not free -[scope_exit tu'] -[visit_exp `tu'*`] -[visit_id tu'*] no dims -[visit_id tu'*] -[visit_exp tu_1] -[visit_id tu_1] not free -[visit_exp (tv = tv_1)] -[visit_exp tv] -[visit_id tv] not free -[visit_exp tv_1] -[visit_id tv_1] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - 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) -[check_dims] tu' tu_1 tv tv' tv_1 -[visit_exp tv] -[visit_id tv] -[visit_exp [tv_1] ++ tv'*{tv' <- `tv'*`}] -[visit_exp [tv_1]] -[visit_exp tv_1] -[visit_id tv_1] -[visit_exp tv'*{tv' <- `tv'*`}] -[scope_enter tv'] -[visit_exp tv'] -[visit_id tv'] not free -[visit_id tv'] not free -[scope_exit tv'] -[visit_exp `tv'*`] -[visit_id tv'*] no dims -[visit_id tv'*] -[visit_exp [tu_1] ++ tu'*{tu' <- `tu'*`}] -[visit_exp [tu_1]] -[visit_exp tu_1] -[visit_id tu_1] -[visit_exp tu'*{tu' <- `tu'*`}] -[scope_enter tu'] -[visit_exp tu'] -[visit_id tu'] not free -[visit_id tu'] not free -[scope_exit tu'] -[visit_exp `tu'*`] -[visit_id tu'*] no dims -[visit_id tu'*] -[visit_exp $subst_typevar(tv, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})] -[visit_exp tv] -[visit_id tv] not free -[visit_exp tv'*{tv' <- `tv'*`}] -[scope_enter tv'] -[visit_exp tv'] -[visit_id tv'] not free -[visit_id tv'] not free -[scope_exit tv'] -[visit_exp `tv'*`] -[visit_id tv'*] not free -[visit_id tv'*] no dims -[visit_exp tu'*{tu' <- `tu'*`}] -[scope_enter tu'] -[visit_exp tu'] -[visit_id tu'] not free -[visit_id tu'] not free -[scope_exit tu'] -[visit_exp `tu'*`] -[visit_id tu'*] not free -[visit_id tu'*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - 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 -[check_dims] tu tv tv' -[visit_exp (tv' : typevar <: typeuse)] -[visit_exp tv'] -[visit_id tv'] -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] no dims -[visit_id tv*] -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] no dims -[visit_id tu*] -[visit_exp $subst_typevar(tv', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] -[visit_exp tv'] -[visit_id tv'] not free -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] not free -[visit_id tv*] no dims -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] not free -[visit_id tu*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - 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*`}) -[check_dims] dt tu tv -[visit_exp (dt : deftype <: typeuse)] -[visit_exp dt] -[visit_id dt] -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] no dims -[visit_id tv*] -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] no dims -[visit_id tu*] -[visit_exp ($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse)] -[visit_exp $subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] -[visit_exp dt] -[visit_id dt] not free -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] not free -[visit_id tv*] no dims -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] not free -[visit_id tu*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - 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) -[check_dims] at tu tv -[visit_exp at] -[visit_id at] -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] no dims -[visit_id tv*] -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] no dims -[visit_id tu*] -[visit_exp at] -[visit_id at] not free -=> - ;; ../../../../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 -[check_dims] nt tu tv -[visit_exp nt] -[visit_id nt] -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] no dims -[visit_id tv*] -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] no dims -[visit_id tu*] -[visit_exp nt] -[visit_id nt] not free -=> - ;; ../../../../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 -[check_dims] tu tv vt -[visit_exp vt] -[visit_id vt] -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] no dims -[visit_id tv*] -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] no dims -[visit_id tu*] -[visit_exp vt] -[visit_id vt] not free -=> - ;; ../../../../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 -[check_dims] tu tv tv' -[visit_exp (tv' : typevar <: heaptype)] -[visit_exp tv'] -[visit_id tv'] -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] no dims -[visit_id tv*] -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] no dims -[visit_id tu*] -[visit_exp ($subst_typevar(tv', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : typeuse <: heaptype)] -[visit_exp $subst_typevar(tv', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] -[visit_exp tv'] -[visit_id tv'] not free -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] not free -[visit_id tv*] no dims -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] not free -[visit_id tu*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - 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) -[check_dims] dt tu tv -[visit_exp (dt : deftype <: heaptype)] -[visit_exp dt] -[visit_id dt] -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] no dims -[visit_id tv*] -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] no dims -[visit_id tu*] -[visit_exp ($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: heaptype)] -[visit_exp $subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] -[visit_exp dt] -[visit_id dt] not free -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] not free -[visit_id tv*] no dims -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] not free -[visit_id tu*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - 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) -[check_dims] ht tu tv -[visit_exp ht] -[visit_id ht] -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] no dims -[visit_id tv*] -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] no dims -[visit_id tu*] -[visit_exp ht] -[visit_id ht] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_heaptype{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ht - -- otherwise -[check_dims] ht null tu tv -[visit_exp `REF`_reftype(null?{null <- `null?`}, ht)] -[visit_exp (null?{null <- `null?`}, ht)] -[visit_exp null?{null <- `null?`}] -[scope_enter null] -[visit_exp null] -[visit_id null] not free -[visit_id null] not free -[scope_exit null] -[visit_exp `null?`] -[visit_id null?] no dims -[visit_id null?] -[visit_exp ht] -[visit_id ht] -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] no dims -[visit_id tv*] -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] no dims -[visit_id tu*] -[visit_exp `REF`_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] -[visit_exp (null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] -[visit_exp null?{null <- `null?`}] -[scope_enter null] -[visit_exp null] -[visit_id null] not free -[visit_id null] not free -[scope_exit null] -[visit_exp `null?`] -[visit_id null?] not free -[visit_id null?] no dims -[visit_exp $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] -[visit_exp ht] -[visit_id ht] not free -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] not free -[visit_id tv*] no dims -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] not free -[visit_id tu*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - 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*`})) -[check_dims] nt tu tv -[visit_exp (nt : numtype <: valtype)] -[visit_exp nt] -[visit_id nt] -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] no dims -[visit_id tv*] -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] no dims -[visit_id tu*] -[visit_exp ($subst_numtype(nt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : numtype <: valtype)] -[visit_exp $subst_numtype(nt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] -[visit_exp nt] -[visit_id nt] not free -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] not free -[visit_id tv*] no dims -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] not free -[visit_id tu*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - 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) -[check_dims] tu tv vt -[visit_exp (vt : vectype <: valtype)] -[visit_exp vt] -[visit_id vt] -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] no dims -[visit_id tv*] -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] no dims -[visit_id tu*] -[visit_exp ($subst_vectype(vt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : vectype <: valtype)] -[visit_exp $subst_vectype(vt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] -[visit_exp vt] -[visit_id vt] not free -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] not free -[visit_id tv*] no dims -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] not free -[visit_id tu*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - 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) -[check_dims] rt tu tv -[visit_exp (rt : reftype <: valtype)] -[visit_exp rt] -[visit_id rt] -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] no dims -[visit_id tv*] -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] no dims -[visit_id tu*] -[visit_exp ($subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : reftype <: valtype)] -[visit_exp $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] -[visit_exp rt] -[visit_id rt] not free -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] not free -[visit_id tv*] no dims -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] not free -[visit_id tu*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - 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) -[check_dims] tu tv -[visit_exp `BOT`_valtype] -[visit_exp ()] -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] no dims -[visit_id tv*] -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] no dims -[visit_id tu*] -[visit_exp `BOT`_valtype] -[visit_exp ()] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(`BOT`_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `BOT`_valtype -[check_dims] pt tu tv -[visit_exp pt] -[visit_id pt] -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] no dims -[visit_id tv*] -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] no dims -[visit_id tu*] -[visit_exp pt] -[visit_id pt] not free -=> - ;; ../../../../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 -[check_dims] t tu tv -[visit_exp (t : valtype <: storagetype)] -[visit_exp t] -[visit_id t] -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] no dims -[visit_id tv*] -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] no dims -[visit_id tu*] -[visit_exp ($subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : valtype <: storagetype)] -[visit_exp $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] -[visit_exp t] -[visit_id t] not free -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] not free -[visit_id tv*] no dims -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] not free -[visit_id tu*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - 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) -[check_dims] pt tu tv -[visit_exp (pt : packtype <: storagetype)] -[visit_exp pt] -[visit_id pt] -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] no dims -[visit_id tv*] -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] no dims -[visit_id tu*] -[visit_exp ($subst_packtype(pt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : packtype <: storagetype)] -[visit_exp $subst_packtype(pt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] -[visit_exp pt] -[visit_id pt] not free -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] not free -[visit_id tv*] no dims -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] not free -[visit_id tu*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - 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) -[check_dims] mut tu tv zt -[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)] -[visit_exp (mut?{mut <- `mut?`}, zt)] -[visit_exp mut?{mut <- `mut?`}] -[scope_enter mut] -[visit_exp mut] -[visit_id mut] not free -[visit_id mut] not free -[scope_exit mut] -[visit_exp `mut?`] -[visit_id mut?] no dims -[visit_id mut?] -[visit_exp zt] -[visit_id zt] -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] no dims -[visit_id tv*] -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] no dims -[visit_id tu*] -[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] -[visit_exp (mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] -[visit_exp mut?{mut <- `mut?`}] -[scope_enter mut] -[visit_exp mut] -[visit_id mut] not free -[visit_id mut] not free -[scope_exit mut] -[visit_exp `mut?`] -[visit_id mut?] not free -[visit_id mut?] no dims -[visit_exp $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] -[visit_exp zt] -[visit_id zt] not free -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] not free -[visit_id tv*] no dims -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] not free -[visit_id tu*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - 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*`})) -[check_dims] ft tu tv -[visit_exp `STRUCT`_comptype(`%`_list(ft*{ft <- `ft*`}))] -[visit_exp (`%`_list(ft*{ft <- `ft*`}))] -[visit_exp `%`_list(ft*{ft <- `ft*`})] -[visit_exp (ft*{ft <- `ft*`})] -[visit_exp ft*{ft <- `ft*`}] -[scope_enter ft] -[visit_exp ft] -[visit_id ft] not free -[visit_id ft] not free -[scope_exit ft] -[visit_exp `ft*`] -[visit_id ft*] no dims -[visit_id ft*] -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] no dims -[visit_id tv*] -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] no dims -[visit_id tu*] -[visit_exp `STRUCT`_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}))] -[visit_exp (`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}))] -[visit_exp `%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})] -[visit_exp ($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})] -[visit_exp $subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`}] -[scope_enter ft] -[visit_exp $subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] -[visit_exp ft] -[visit_id ft] not free -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] not free -[visit_id tv*] no dims -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] not free -[visit_id tu*] no dims -[visit_id ft] not free -[scope_exit ft] -[visit_exp `ft*`] -[visit_id ft*] not free -[visit_id ft*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - 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*`})) -[check_dims] ft tu tv -[visit_exp `ARRAY`_comptype(ft)] -[visit_exp (ft)] -[visit_exp ft] -[visit_id ft] -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] no dims -[visit_id tv*] -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] no dims -[visit_id tu*] -[visit_exp `ARRAY`_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] -[visit_exp ($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] -[visit_exp $subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] -[visit_exp ft] -[visit_id ft] not free -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] not free -[visit_id tv*] no dims -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] not free -[visit_id tu*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - 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*`})) -[check_dims] t_1 t_2 tu tv -[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] no dims -[visit_id t_1*] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] no dims -[visit_id t_2*] -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] no dims -[visit_id tv*] -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] no dims -[visit_id tu*] -[visit_exp `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*`}))] -[visit_exp (`%`_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*`}))] -[visit_exp `%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`})] -[visit_exp ($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`})] -[visit_exp $subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp $subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] -[visit_exp t_1] -[visit_id t_1] not free -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] not free -[visit_id tv*] no dims -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] not free -[visit_id tu*] no dims -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] not free -[visit_id t_1*] no dims -[visit_exp `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})] -[visit_exp ($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})] -[visit_exp $subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp $subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] -[visit_exp t_2] -[visit_id t_2] not free -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] not free -[visit_id tv*] no dims -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] not free -[visit_id tu*] no dims -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] not free -[visit_id t_2*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - 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*`})) -[check_dims] ct final tu tu' tv -[visit_exp `SUB`_subtype(final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct)] -[visit_exp (final?{final <- `final?`}, tu'*{tu' <- `tu'*`}, ct)] -[visit_exp final?{final <- `final?`}] -[scope_enter final] -[visit_exp final] -[visit_id final] not free -[visit_id final] not free -[scope_exit final] -[visit_exp `final?`] -[visit_id final?] no dims -[visit_id final?] -[visit_exp tu'*{tu' <- `tu'*`}] -[scope_enter tu'] -[visit_exp tu'] -[visit_id tu'] not free -[visit_id tu'] not free -[scope_exit tu'] -[visit_exp `tu'*`] -[visit_id tu'*] no dims -[visit_id tu'*] -[visit_exp ct] -[visit_id ct] -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] no dims -[visit_id tv*] -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] no dims -[visit_id tu*] -[visit_exp `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*`}))] -[visit_exp (final?{final <- `final?`}, $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}, $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] -[visit_exp final?{final <- `final?`}] -[scope_enter final] -[visit_exp final] -[visit_id final] not free -[visit_id final] not free -[scope_exit final] -[visit_exp `final?`] -[visit_id final?] not free -[visit_id final?] no dims -[visit_exp $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{tu' <- `tu'*`}] -[scope_enter tu'] -[visit_exp $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] -[visit_exp tu'] -[visit_id tu'] not free -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] not free -[visit_id tv*] no dims -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] not free -[visit_id tu*] no dims -[visit_id tu'] not free -[scope_exit tu'] -[visit_exp `tu'*`] -[visit_id tu'*] not free -[visit_id tu'*] no dims -[visit_exp $subst_comptype(ct, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] -[visit_exp ct] -[visit_id ct] not free -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] not free -[visit_id tv*] no dims -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] not free -[visit_id tu*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - 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*`})) -[check_dims] _ -DecD minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) -[visit_id _] not free -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_exit _] -[scope_exit _] -[check_dims] -[visit_exp []] -[visit_exp []] -[visit_exp ([], [])] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $minus_recs([], []) = ([], []) -[check_dims] n tu tu_1 tv -[visit_exp [`REC`_typevar(n)] ++ tv*{tv <- `tv*`}] -[visit_exp [`REC`_typevar(n)]] -[visit_exp `REC`_typevar(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] no dims -[visit_id tv*] -[visit_exp [tu_1] ++ tu*{tu <- `tu*`}] -[visit_exp [tu_1]] -[visit_exp tu_1] -[visit_id tu_1] -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] no dims -[visit_id tu*] -[visit_exp $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] not free -[visit_id tv*] no dims -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] not free -[visit_id tu*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - 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*`}) -[check_dims] tu tu' tu_1 tv tv' x -[visit_exp [`_IDX`_typevar(x)] ++ tv*{tv <- `tv*`}] -[visit_exp [`_IDX`_typevar(x)]] -[visit_exp `_IDX`_typevar(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] no dims -[visit_id tv*] -[visit_exp [tu_1] ++ tu*{tu <- `tu*`}] -[visit_exp [tu_1]] -[visit_exp tu_1] -[visit_id tu_1] -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] no dims -[visit_id tu*] -[visit_exp ([`_IDX`_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`})] -[visit_exp [`_IDX`_typevar(x)] ++ tv'*{tv' <- `tv'*`}] -[visit_exp [`_IDX`_typevar(x)]] -[visit_exp `_IDX`_typevar(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] not free -[visit_exp tv'*{tv' <- `tv'*`}] -[scope_enter tv'] -[visit_exp tv'] -[visit_id tv'] not free -[visit_id tv'] not free -[scope_exit tv'] -[visit_exp `tv'*`] -[visit_id tv'*] no dims -[visit_id tv'*] -[visit_exp [tu_1] ++ tu'*{tu' <- `tu'*`}] -[visit_exp [tu_1]] -[visit_exp tu_1] -[visit_id tu_1] not free -[visit_exp tu'*{tu' <- `tu'*`}] -[scope_enter tu'] -[visit_exp tu'] -[visit_id tu'] not free -[visit_id tu'] not free -[scope_exit tu'] -[visit_exp `tu'*`] -[visit_id tu'*] no dims -[visit_id tu'*] -[visit_exp ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] -[visit_exp (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})] -[visit_exp tv'*{tv' <- `tv'*`}] -[scope_enter tv'] -[visit_exp tv'] -[visit_id tv'] not free -[visit_id tv'] not free -[scope_exit tv'] -[visit_exp `tv'*`] -[visit_id tv'*] not free -[visit_id tv'*] no dims -[visit_exp tu'*{tu' <- `tu'*`}] -[scope_enter tu'] -[visit_exp tu'] -[visit_id tu'] not free -[visit_id tu'] not free -[scope_exit tu'] -[visit_exp `tu'*`] -[visit_id tu'*] not free -[visit_id tu'*] no dims -[visit_exp $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] not free -[visit_id tv*] no dims -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] not free -[visit_id tu*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - 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*`})) -[check_dims] st tu tu' tv tv' -[visit_exp `REC`_rectype(`%`_list(st*{st <- `st*`}))] -[visit_exp (`%`_list(st*{st <- `st*`}))] -[visit_exp `%`_list(st*{st <- `st*`})] -[visit_exp (st*{st <- `st*`})] -[visit_exp st*{st <- `st*`}] -[scope_enter st] -[visit_exp st] -[visit_id st] not free -[visit_id st] not free -[scope_exit st] -[visit_exp `st*`] -[visit_id st*] no dims -[visit_id st*] -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] no dims -[visit_id tv*] -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] no dims -[visit_id tu*] -[visit_exp `REC`_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`}))] -[visit_exp (`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`}))] -[visit_exp `%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})] -[visit_exp ($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})] -[visit_exp $subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`}] -[scope_enter st] -[visit_exp $subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})] -[visit_exp st] -[visit_id st] not free -[visit_exp tv'*{tv' <- `tv'*`}] -[scope_enter tv'] -[visit_exp tv'] -[visit_id tv'] not free -[visit_id tv'] not free -[scope_exit tv'] -[visit_exp `tv'*`] -[visit_id tv'*] no dims -[visit_id tv'*] -[visit_exp tu'*{tu' <- `tu'*`}] -[scope_enter tu'] -[visit_exp tu'] -[visit_id tu'] not free -[visit_id tu'] not free -[scope_exit tu'] -[visit_exp `tu'*`] -[visit_id tu'*] no dims -[visit_id tu'*] -[visit_id st] not free -[scope_exit st] -[visit_exp `st*`] -[visit_id st*] not free -[visit_id st*] no dims -[visit_exp ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] -[visit_exp (tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})] -[visit_exp tv'*{tv' <- `tv'*`}] -[scope_enter tv'] -[visit_exp tv'] -[visit_id tv'] not free -[visit_id tv'] not free -[scope_exit tv'] -[visit_exp `tv'*`] -[visit_id tv'*] not free -[visit_id tv'*] no dims -[visit_exp tu'*{tu' <- `tu'*`}] -[scope_enter tu'] -[visit_exp tu'] -[visit_id tu'] not free -[visit_id tu'] not free -[scope_exit tu'] -[visit_exp `tu'*`] -[visit_id tu'*] not free -[visit_id tu'*] no dims -[visit_exp $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] not free -[visit_id tv*] no dims -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] not free -[visit_id tu*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - 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*`})) -[check_dims] i qt tu tv -[visit_exp `_DEF`_deftype(qt, i)] -[visit_exp (qt, i)] -[visit_exp qt] -[visit_id qt] -[visit_exp i] -[visit_id i] -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] no dims -[visit_id tv*] -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] no dims -[visit_id tu*] -[visit_exp `_DEF`_deftype($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i)] -[visit_exp ($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i)] -[visit_exp $subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] -[visit_exp qt] -[visit_id qt] not free -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] not free -[visit_id tv*] no dims -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] not free -[visit_id tu*] no dims -[visit_exp i] -[visit_id i] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - 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) -[check_dims] tu tu' tv -[visit_exp tu'] -[visit_id tu'] -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] no dims -[visit_id tv*] -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] no dims -[visit_id tu*] -[visit_exp $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] -[visit_exp tu'] -[visit_id tu'] not free -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] not free -[visit_id tv*] no dims -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] not free -[visit_id tu*] no dims -=> - ;; ../../../../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*`}) -[check_dims] mut t tu tv -[visit_exp `%%`_globaltype(mut?{mut <- `mut?`}, t)] -[visit_exp (mut?{mut <- `mut?`}, t)] -[visit_exp mut?{mut <- `mut?`}] -[scope_enter mut] -[visit_exp mut] -[visit_id mut] not free -[visit_id mut] not free -[scope_exit mut] -[visit_exp `mut?`] -[visit_id mut?] no dims -[visit_id mut?] -[visit_exp t] -[visit_id t] -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] no dims -[visit_id tv*] -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] no dims -[visit_id tu*] -[visit_exp `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] -[visit_exp (mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] -[visit_exp mut?{mut <- `mut?`}] -[scope_enter mut] -[visit_exp mut] -[visit_id mut] not free -[visit_id mut] not free -[scope_exit mut] -[visit_exp `mut?`] -[visit_id mut?] not free -[visit_id mut?] no dims -[visit_exp $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] -[visit_exp t] -[visit_id t] not free -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] not free -[visit_id tv*] no dims -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] not free -[visit_id tu*] no dims -=> - ;; ../../../../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*`})) -[check_dims] at lim tu tv -[visit_exp `%%PAGE`_memtype(at, lim)] -[visit_exp (at, lim)] -[visit_exp at] -[visit_id at] -[visit_exp lim] -[visit_id lim] -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] no dims -[visit_id tv*] -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] no dims -[visit_id tu*] -[visit_exp `%%PAGE`_memtype(at, lim)] -[visit_exp (at, lim)] -[visit_exp at] -[visit_id at] not free -[visit_exp lim] -[visit_id lim] not free -=> - ;; ../../../../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) -[check_dims] at lim rt tu tv -[visit_exp `%%%`_tabletype(at, lim, rt)] -[visit_exp (at, lim, rt)] -[visit_exp at] -[visit_id at] -[visit_exp lim] -[visit_id lim] -[visit_exp rt] -[visit_id rt] -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] no dims -[visit_id tv*] -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] no dims -[visit_id tu*] -[visit_exp `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] -[visit_exp (at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] -[visit_exp at] -[visit_id at] not free -[visit_exp lim] -[visit_id lim] not free -[visit_exp $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] -[visit_exp rt] -[visit_id rt] not free -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] not free -[visit_id tv*] no dims -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] not free -[visit_id tu*] no dims -=> - ;; ../../../../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*`})) -[check_dims] jt tu tv -[visit_exp `TAG`_externtype(jt)] -[visit_exp (jt)] -[visit_exp jt] -[visit_id jt] -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] no dims -[visit_id tv*] -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] no dims -[visit_id tu*] -[visit_exp `TAG`_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] -[visit_exp ($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] -[visit_exp $subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] -[visit_exp jt] -[visit_id jt] not free -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] not free -[visit_id tv*] no dims -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] not free -[visit_id tu*] no dims -=> - ;; ../../../../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*`})) -[check_dims] gt tu tv -[visit_exp `GLOBAL`_externtype(gt)] -[visit_exp (gt)] -[visit_exp gt] -[visit_id gt] -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] no dims -[visit_id tv*] -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] no dims -[visit_id tu*] -[visit_exp `GLOBAL`_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] -[visit_exp ($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] -[visit_exp $subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] -[visit_exp gt] -[visit_id gt] not free -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] not free -[visit_id tv*] no dims -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] not free -[visit_id tu*] no dims -=> - ;; ../../../../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*`})) -[check_dims] tt tu tv -[visit_exp `TABLE`_externtype(tt)] -[visit_exp (tt)] -[visit_exp tt] -[visit_id tt] -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] no dims -[visit_id tv*] -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] no dims -[visit_id tu*] -[visit_exp `TABLE`_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] -[visit_exp ($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] -[visit_exp $subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] -[visit_exp tt] -[visit_id tt] not free -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] not free -[visit_id tv*] no dims -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] not free -[visit_id tu*] no dims -=> - ;; ../../../../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*`})) -[check_dims] mt tu tv -[visit_exp `MEM`_externtype(mt)] -[visit_exp (mt)] -[visit_exp mt] -[visit_id mt] -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] no dims -[visit_id tv*] -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] no dims -[visit_id tu*] -[visit_exp `MEM`_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] -[visit_exp ($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}))] -[visit_exp $subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] -[visit_exp mt] -[visit_id mt] not free -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] not free -[visit_id tv*] no dims -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] not free -[visit_id tu*] no dims -=> - ;; ../../../../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*`})) -[check_dims] dt tu tv -[visit_exp `FUNC`_externtype((dt : deftype <: typeuse))] -[visit_exp ((dt : deftype <: typeuse))] -[visit_exp (dt : deftype <: typeuse)] -[visit_exp dt] -[visit_id dt] -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] no dims -[visit_id tv*] -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] no dims -[visit_id tu*] -[visit_exp `FUNC`_externtype(($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse))] -[visit_exp (($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse))] -[visit_exp ($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse)] -[visit_exp $subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] -[visit_exp dt] -[visit_id dt] not free -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] not free -[visit_id tv*] no dims -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] not free -[visit_id tu*] no dims -=> - ;; ../../../../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)) -[check_dims] tu tv xt_1 xt_2 -[visit_exp `%->%`_moduletype(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`})] -[visit_exp (xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`})] -[visit_exp xt_1*{xt_1 <- `xt_1*`}] -[scope_enter xt_1] -[visit_exp xt_1] -[visit_id xt_1] not free -[visit_id xt_1] not free -[scope_exit xt_1] -[visit_exp `xt_1*`] -[visit_id xt_1*] no dims -[visit_id xt_1*] -[visit_exp xt_2*{xt_2 <- `xt_2*`}] -[scope_enter xt_2] -[visit_exp xt_2] -[visit_id xt_2] not free -[visit_id xt_2] not free -[scope_exit xt_2] -[visit_exp `xt_2*`] -[visit_id xt_2*] no dims -[visit_id xt_2*] -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] no dims -[visit_id tv*] -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] no dims -[visit_id tu*] -[visit_exp `%->%`_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*`})] -[visit_exp ($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*`})] -[visit_exp $subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}] -[scope_enter xt_1] -[visit_exp $subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] -[visit_exp xt_1] -[visit_id xt_1] not free -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] not free -[visit_id tv*] no dims -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] not free -[visit_id tu*] no dims -[visit_id xt_1] not free -[scope_exit xt_1] -[visit_exp `xt_1*`] -[visit_id xt_1*] not free -[visit_id xt_1*] no dims -[visit_exp $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}] -[scope_enter xt_2] -[visit_exp $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})] -[visit_exp xt_2] -[visit_id xt_2] not free -[visit_exp tv*{tv <- `tv*`}] -[scope_enter tv] -[visit_exp tv] -[visit_id tv] not free -[visit_id tv] not free -[scope_exit tv] -[visit_exp `tv*`] -[visit_id tv*] not free -[visit_id tv*] no dims -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] not free -[visit_id tu*] no dims -[visit_id xt_2] not free -[scope_exit xt_2] -[visit_exp `xt_2*`] -[visit_id xt_2*] not free -[visit_id xt_2*] no dims -=> - ;; ../../../../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*`}) -[check_dims] _ valtype -DecD subst_all_valtype(valtype : valtype, typeuse*) : valtype -[visit_id valtype] not free -[visit_id _] not free -[check_dims] _ reftype -DecD subst_all_reftype(reftype : reftype, typeuse*) : reftype -[visit_id reftype] not free -[visit_id _] not free -[check_dims] _ deftype -DecD subst_all_deftype(deftype : deftype, typeuse*) : deftype -[visit_id deftype] not free -[visit_id _] not free -[check_dims] _ tagtype -DecD subst_all_tagtype(tagtype : tagtype, typeuse*) : tagtype -[visit_id tagtype] not free -[visit_id _] not free -[check_dims] _ globaltype -DecD subst_all_globaltype(globaltype : globaltype, typeuse*) : globaltype -[visit_id globaltype] not free -[visit_id _] not free -[check_dims] _ memtype -DecD subst_all_memtype(memtype : memtype, typeuse*) : memtype -[visit_id memtype] not free -[visit_id _] not free -[check_dims] _ tabletype -DecD subst_all_tabletype(tabletype : tabletype, typeuse*) : tabletype -[visit_id tabletype] not free -[visit_id _] not free -[check_dims] _ externtype -DecD subst_all_externtype(externtype : externtype, typeuse*) : externtype -[visit_id externtype] not free -[visit_id _] not free -[check_dims] _ moduletype -DecD subst_all_moduletype(moduletype : moduletype, typeuse*) : moduletype -[visit_id moduletype] not free -[visit_id _] not free -[check_dims] i n t tu -[visit_exp t] -[visit_id t] -[visit_exp tu^n{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp n] -[visit_id n] -[visit_exp `tu*`] -[visit_id tu*] no dims -[visit_id tu*] -[visit_exp $subst_valtype(t, `_IDX`_typevar(`%`_typeidx(i))^(i - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_all_valtype{t : valtype, n : n, `tu*` : typeuse*, i : nat}(t, tu^n{tu <- `tu*`}) = $subst_valtype(t, `_IDX`_typevar(`%`_typeidx(i))^(i - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_all_reftype{rt : reftype, n : n, `tu*` : typeuse*, i : nat}(rt, tu^n{tu <- `tu*`}) = $subst_reftype(rt, `_IDX`_typevar(`%`_typeidx(i))^(i - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_all_deftype{dt : deftype, n : n, `tu*` : typeuse*, i : nat}(dt, tu^n{tu <- `tu*`}) = $subst_deftype(dt, `_IDX`_typevar(`%`_typeidx(i))^(i - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_all_tagtype{jt : tagtype, n : n, `tu*` : typeuse*, i : nat}(jt, tu^n{tu <- `tu*`}) = $subst_tagtype(jt, `_IDX`_typevar(`%`_typeidx(i))^(i - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_all_globaltype{gt : globaltype, n : n, `tu*` : typeuse*, i : nat}(gt, tu^n{tu <- `tu*`}) = $subst_globaltype(gt, `_IDX`_typevar(`%`_typeidx(i))^(i - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_all_memtype{mt : memtype, n : n, `tu*` : typeuse*, i : nat}(mt, tu^n{tu <- `tu*`}) = $subst_memtype(mt, `_IDX`_typevar(`%`_typeidx(i))^(i - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_all_tabletype{tt : tabletype, n : n, `tu*` : typeuse*, i : nat}(tt, tu^n{tu <- `tu*`}) = $subst_tabletype(tt, `_IDX`_typevar(`%`_typeidx(i))^(i - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_all_externtype{xt : externtype, n : n, `tu*` : typeuse*, i : nat}(xt, tu^n{tu <- `tu*`}) = $subst_externtype(xt, `_IDX`_typevar(`%`_typeidx(i))^(i - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_all_moduletype{mmt : moduletype, n : n, `tu*` : typeuse*, i : nat}(mmt, tu^n{tu <- `tu*`}) = $subst_moduletype(mmt, `_IDX`_typevar(`%`_typeidx(i))^(i - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_all_deftypes{`tu*` : typeuse*}([], tu*{tu <- `tu*`}) = [] -[check_dims] dt dt_1 tu -[visit_exp [dt_1] ++ dt*{dt <- `dt*`}] -[visit_exp [dt_1]] -[visit_exp dt_1] -[visit_id dt_1] -[visit_exp dt*{dt <- `dt*`}] -[scope_enter dt] -[visit_exp dt] -[visit_id dt] not free -[visit_id dt] not free -[scope_exit dt] -[visit_exp `dt*`] -[visit_id dt*] no dims -[visit_id dt*] -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] no dims -[visit_id tu*] -[visit_exp [$subst_all_deftype(dt_1, tu*{tu <- `tu*`})] ++ $subst_all_deftypes(dt*{dt <- `dt*`}, tu*{tu <- `tu*`})] -[visit_exp [$subst_all_deftype(dt_1, tu*{tu <- `tu*`})]] -[visit_exp $subst_all_deftype(dt_1, tu*{tu <- `tu*`})] -[visit_exp dt_1] -[visit_id dt_1] not free -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] not free -[visit_id tu*] no dims -[visit_exp $subst_all_deftypes(dt*{dt <- `dt*`}, tu*{tu <- `tu*`})] -[visit_exp dt*{dt <- `dt*`}] -[scope_enter dt] -[visit_exp dt] -[visit_id dt] not free -[visit_id dt] not free -[scope_exit dt] -[visit_exp `dt*`] -[visit_id dt*] not free -[visit_id dt*] no dims -[visit_exp tu*{tu <- `tu*`}] -[scope_enter tu] -[visit_exp tu] -[visit_id tu] not free -[visit_id tu] not free -[scope_exit tu] -[visit_exp `tu*`] -[visit_id tu*] not free -[visit_id tu*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - 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*`}) -[check_dims] rectype typeidx -DecD rollrt(typeidx : typeidx, rectype : rectype) : rectype -[visit_id typeidx] not free -[visit_id rectype] not free -[check_dims] rectype -DecD unrollrt(rectype : rectype) : rectype -[visit_id rectype] not free -[check_dims] rectype typeidx -DecD rolldt(typeidx : typeidx, rectype : rectype) : deftype* -[visit_id typeidx] not free -[visit_id rectype] not free -[check_dims] deftype -DecD unrolldt(deftype : deftype) : subtype -[visit_id deftype] not free -[check_dims] deftype -DecD expanddt(deftype : deftype) : comptype -[visit_id deftype] not free -[check_dims] i n rectype subtype x -[visit_exp x] -[visit_id x] -[visit_exp rectype] -[visit_id rectype] -[visit_exp `REC`_rectype(`%`_list($subst_subtype(subtype, `_IDX`_typevar(`%`_typeidx((x!`%`_idx.0 + i)))^(i - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $rollrt{x : idx, rectype : rectype, i : nat, n : n, `subtype*` : subtype*}(x, rectype) = `REC`_rectype(`%`_list($subst_subtype(subtype, `_IDX`_typevar(`%`_typeidx((x!`%`_idx.0 + i)))^(i - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unrollrt{rectype : rectype, i : nat, n : n, `subtype*` : subtype*}(rectype) = `REC`_rectype(`%`_list($subst_subtype(subtype, `REC`_typevar(i)^(i - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $rolldt{x : idx, rectype : rectype, n : n, `subtype*` : subtype*, i : nat}(x, rectype) = `_DEF`_deftype(`REC`_rectype(`%`_list(subtype^n{subtype <- `subtype*`})), i)^(i - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $unrolldt{rectype : rectype, i : n, `subtype*` : subtype*}(`_DEF`_deftype(rectype, i)) = subtype*{subtype <- `subtype*`}[i] - -- if ($unrollrt(rectype) = `REC`_rectype(`%`_list(subtype*{subtype <- `subtype*`}))) -[check_dims] comptype deftype final typeuse -[visit_exp deftype] -[visit_id deftype] -[visit_exp comptype] -[visit_id comptype] -[visit_exp ($unrolldt(deftype) = `SUB`_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype))] -[visit_exp $unrolldt(deftype)] -[visit_exp deftype] -[visit_id deftype] not free -[visit_exp `SUB`_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)] -[visit_exp (final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)] -[visit_exp final?{final <- `final?`}] -[scope_enter final] -[visit_exp final] -[visit_id final] not free -[visit_id final] not free -[scope_exit final] -[visit_exp `final?`] -[visit_id final?] no dims -[visit_id final?] -[visit_exp typeuse*{typeuse <- `typeuse*`}] -[scope_enter typeuse] -[visit_exp typeuse] -[visit_id typeuse] not free -[visit_id typeuse] not free -[scope_exit typeuse] -[visit_exp `typeuse*`] -[visit_id typeuse*] no dims -[visit_id typeuse*] -[visit_exp comptype] -[visit_id comptype] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $expanddt{deftype : deftype, comptype : comptype, `final?` : final?, `typeuse*` : typeuse*}(deftype) = comptype - -- if ($unrolldt(deftype) = `SUB`_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) -[check_dims] numtype -DecD free_addrtype(numtype : numtype) : free -[visit_id numtype] not free -[check_dims] numtype -DecD free_numtype(numtype : numtype) : free -[visit_id numtype] not free -[check_dims] packtype -DecD free_packtype(packtype : packtype) : free -[visit_id packtype] not free -[check_dims] lanetype -DecD free_lanetype(lanetype : lanetype) : free -[visit_id lanetype] not free -[check_dims] vectype -DecD free_vectype(vectype : vectype) : free -[visit_id vectype] not free -[check_dims] consttype -DecD free_consttype(consttype : consttype) : free -[visit_id consttype] not free -[check_dims] absheaptype -DecD free_absheaptype(absheaptype : absheaptype) : free -[visit_id absheaptype] not free -[check_dims] heaptype -DecD free_heaptype(heaptype : heaptype) : free -[visit_id heaptype] not free -[check_dims] reftype -DecD free_reftype(reftype : reftype) : free -[visit_id reftype] not free -[check_dims] typevar -DecD free_typevar(typevar : typevar) : free -[visit_id typevar] not free -[check_dims] typeuse -DecD free_typeuse(typeuse : typeuse) : free -[visit_id typeuse] not free -[check_dims] valtype -DecD free_valtype(valtype : valtype) : free -[visit_id valtype] not free -[check_dims] resulttype -DecD free_resulttype(resulttype : resulttype) : free -[visit_id resulttype] not free -[check_dims] storagetype -DecD free_storagetype(storagetype : storagetype) : free -[visit_id storagetype] not free -[check_dims] fieldtype -DecD free_fieldtype(fieldtype : fieldtype) : free -[visit_id fieldtype] not free -[check_dims] comptype -DecD free_comptype(comptype : comptype) : free -[visit_id comptype] not free -[check_dims] subtype -DecD free_subtype(subtype : subtype) : free -[visit_id subtype] not free -[check_dims] rectype -DecD free_rectype(rectype : rectype) : free -[visit_id rectype] not free -[check_dims] tagtype -DecD free_tagtype(tagtype : tagtype) : free -[visit_id tagtype] not free -[check_dims] globaltype -DecD free_globaltype(globaltype : globaltype) : free -[visit_id globaltype] not free -[check_dims] memtype -DecD free_memtype(memtype : memtype) : free -[visit_id memtype] not free -[check_dims] tabletype -DecD free_tabletype(tabletype : tabletype) : free -[visit_id tabletype] not free -[check_dims] datatype -DecD free_datatype(datatype : datatype) : free -[visit_id datatype] not free -[check_dims] elemtype -DecD free_elemtype(elemtype : elemtype) : free -[visit_id elemtype] not free -[check_dims] externtype -DecD free_externtype(externtype : externtype) : free -[visit_id externtype] not free -[check_dims] moduletype -DecD free_moduletype(moduletype : moduletype) : free -[visit_id moduletype] not free -[check_dims] addrtype -[visit_exp (addrtype : addrtype <: numtype)] -[visit_exp addrtype] -[visit_id addrtype] -[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../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` []} -[check_dims] numtype -[visit_exp numtype] -[visit_id numtype] -[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_numtype{numtype : numtype}(numtype) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} -[check_dims] packtype -[visit_exp packtype] -[visit_id packtype] -[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_packtype{packtype : packtype}(packtype) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} -[check_dims] numtype -[visit_exp (numtype : numtype <: lanetype)] -[visit_exp numtype] -[visit_id numtype] -[visit_exp $free_numtype(numtype)] -[visit_exp numtype] -[visit_id numtype] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_lanetype{numtype : numtype}((numtype : numtype <: lanetype)) = $free_numtype(numtype) -[check_dims] packtype -[visit_exp (packtype : packtype <: lanetype)] -[visit_exp packtype] -[visit_id packtype] -[visit_exp $free_packtype(packtype)] -[visit_exp packtype] -[visit_id packtype] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_lanetype{packtype : packtype}((packtype : packtype <: lanetype)) = $free_packtype(packtype) -[check_dims] vectype -[visit_exp vectype] -[visit_id vectype] -[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_vectype{vectype : vectype}(vectype) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} -[check_dims] numtype -[visit_exp (numtype : numtype <: consttype)] -[visit_exp numtype] -[visit_id numtype] -[visit_exp $free_numtype(numtype)] -[visit_exp numtype] -[visit_id numtype] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_consttype{numtype : numtype}((numtype : numtype <: consttype)) = $free_numtype(numtype) -[check_dims] vectype -[visit_exp (vectype : vectype <: consttype)] -[visit_exp vectype] -[visit_id vectype] -[visit_exp $free_vectype(vectype)] -[visit_exp vectype] -[visit_id vectype] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_consttype{vectype : vectype}((vectype : vectype <: consttype)) = $free_vectype(vectype) -[check_dims] absheaptype -[visit_exp absheaptype] -[visit_id absheaptype] -[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_absheaptype{absheaptype : absheaptype}(absheaptype) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} -[check_dims] deftype -DecD free_deftype(deftype : deftype) : free -[visit_id deftype] not free -[check_dims] n rectype -[visit_exp `_DEF`_deftype(rectype, n)] -[visit_exp (rectype, n)] -[visit_exp rectype] -[visit_id rectype] -[visit_exp n] -[visit_id n] -[visit_exp $free_rectype(rectype)] -[visit_exp rectype] -[visit_id rectype] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_deftype{rectype : rectype, n : n}(`_DEF`_deftype(rectype, n)) = $free_rectype(rectype) -[check_dims] typeidx -[visit_exp `_IDX`_typevar(typeidx)] -[visit_exp (typeidx)] -[visit_exp typeidx] -[visit_id typeidx] -[visit_exp $free_typeidx(typeidx)] -[visit_exp typeidx] -[visit_id typeidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_typevar{typeidx : typeidx}(`_IDX`_typevar(typeidx)) = $free_typeidx(typeidx) -[check_dims] n -[visit_exp `REC`_typevar(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_typevar{n : n}(`REC`_typevar(n)) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} -[check_dims] typevar -[visit_exp (typevar : typevar <: typeuse)] -[visit_exp typevar] -[visit_id typevar] -[visit_exp $free_typevar(typevar)] -[visit_exp typevar] -[visit_id typevar] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_typeuse{typevar : typevar}((typevar : typevar <: typeuse)) = $free_typevar(typevar) -[check_dims] deftype -[visit_exp (deftype : deftype <: typeuse)] -[visit_exp deftype] -[visit_id deftype] -[visit_exp $free_deftype(deftype)] -[visit_exp deftype] -[visit_id deftype] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_typeuse{deftype : deftype}((deftype : deftype <: typeuse)) = $free_deftype(deftype) -[check_dims] absheaptype -[visit_exp (absheaptype : absheaptype <: heaptype)] -[visit_exp absheaptype] -[visit_id absheaptype] -[visit_exp $free_absheaptype(absheaptype)] -[visit_exp absheaptype] -[visit_id absheaptype] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_heaptype{absheaptype : absheaptype}((absheaptype : absheaptype <: heaptype)) = $free_absheaptype(absheaptype) -[check_dims] typeuse -[visit_exp (typeuse : typeuse <: heaptype)] -[visit_exp typeuse] -[visit_id typeuse] -[visit_exp $free_typeuse(typeuse)] -[visit_exp typeuse] -[visit_id typeuse] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_heaptype{typeuse : typeuse}((typeuse : typeuse <: heaptype)) = $free_typeuse(typeuse) -[check_dims] heaptype null -[visit_exp `REF`_reftype(null?{null <- `null?`}, heaptype)] -[visit_exp (null?{null <- `null?`}, heaptype)] -[visit_exp null?{null <- `null?`}] -[scope_enter null] -[visit_exp null] -[visit_id null] not free -[visit_id null] not free -[scope_exit null] -[visit_exp `null?`] -[visit_id null?] no dims -[visit_id null?] -[visit_exp heaptype] -[visit_id heaptype] -[visit_exp $free_heaptype(heaptype)] -[visit_exp heaptype] -[visit_id heaptype] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_reftype{`null?` : null?, heaptype : heaptype}(`REF`_reftype(null?{null <- `null?`}, heaptype)) = $free_heaptype(heaptype) -[check_dims] numtype -[visit_exp (numtype : numtype <: valtype)] -[visit_exp numtype] -[visit_id numtype] -[visit_exp $free_numtype(numtype)] -[visit_exp numtype] -[visit_id numtype] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_valtype{numtype : numtype}((numtype : numtype <: valtype)) = $free_numtype(numtype) -[check_dims] vectype -[visit_exp (vectype : vectype <: valtype)] -[visit_exp vectype] -[visit_id vectype] -[visit_exp $free_vectype(vectype)] -[visit_exp vectype] -[visit_id vectype] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_valtype{vectype : vectype}((vectype : vectype <: valtype)) = $free_vectype(vectype) -[check_dims] reftype -[visit_exp (reftype : reftype <: valtype)] -[visit_exp reftype] -[visit_id reftype] -[visit_exp $free_reftype(reftype)] -[visit_exp reftype] -[visit_id reftype] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_valtype{reftype : reftype}((reftype : reftype <: valtype)) = $free_reftype(reftype) -[check_dims] -[visit_exp `BOT`_valtype] -[visit_exp ()] -[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_valtype(`BOT`_valtype) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} -[check_dims] valtype -[visit_exp `%`_resulttype(valtype*{valtype <- `valtype*`})] -[visit_exp (valtype*{valtype <- `valtype*`})] -[visit_exp valtype*{valtype <- `valtype*`}] -[scope_enter valtype] -[visit_exp valtype] -[visit_id valtype] not free -[visit_id valtype] not free -[scope_exit valtype] -[visit_exp `valtype*`] -[visit_id valtype*] no dims -[visit_id valtype*] -[visit_exp $free_list($free_valtype(valtype)*{valtype <- `valtype*`})] -[visit_exp $free_valtype(valtype)*{valtype <- `valtype*`}] -[scope_enter valtype] -[visit_exp $free_valtype(valtype)] -[visit_exp valtype] -[visit_id valtype] not free -[visit_id valtype] not free -[scope_exit valtype] -[visit_exp `valtype*`] -[visit_id valtype*] not free -[visit_id valtype*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_resulttype{`valtype*` : valtype*}(`%`_resulttype(valtype*{valtype <- `valtype*`})) = $free_list($free_valtype(valtype)*{valtype <- `valtype*`}) -[check_dims] valtype -[visit_exp (valtype : valtype <: storagetype)] -[visit_exp valtype] -[visit_id valtype] -[visit_exp $free_valtype(valtype)] -[visit_exp valtype] -[visit_id valtype] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_storagetype{valtype : valtype}((valtype : valtype <: storagetype)) = $free_valtype(valtype) -[check_dims] packtype -[visit_exp (packtype : packtype <: storagetype)] -[visit_exp packtype] -[visit_id packtype] -[visit_exp $free_packtype(packtype)] -[visit_exp packtype] -[visit_id packtype] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_storagetype{packtype : packtype}((packtype : packtype <: storagetype)) = $free_packtype(packtype) -[check_dims] mut storagetype -[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, storagetype)] -[visit_exp (mut?{mut <- `mut?`}, storagetype)] -[visit_exp mut?{mut <- `mut?`}] -[scope_enter mut] -[visit_exp mut] -[visit_id mut] not free -[visit_id mut] not free -[scope_exit mut] -[visit_exp `mut?`] -[visit_id mut?] no dims -[visit_id mut?] -[visit_exp storagetype] -[visit_id storagetype] -[visit_exp $free_storagetype(storagetype)] -[visit_exp storagetype] -[visit_id storagetype] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_fieldtype{`mut?` : mut?, storagetype : storagetype}(`%%`_fieldtype(mut?{mut <- `mut?`}, storagetype)) = $free_storagetype(storagetype) -[check_dims] fieldtype -[visit_exp `STRUCT`_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))] -[visit_exp (`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))] -[visit_exp `%`_list(fieldtype*{fieldtype <- `fieldtype*`})] -[visit_exp (fieldtype*{fieldtype <- `fieldtype*`})] -[visit_exp fieldtype*{fieldtype <- `fieldtype*`}] -[scope_enter fieldtype] -[visit_exp fieldtype] -[visit_id fieldtype] not free -[visit_id fieldtype] not free -[scope_exit fieldtype] -[visit_exp `fieldtype*`] -[visit_id fieldtype*] no dims -[visit_id fieldtype*] -[visit_exp $free_list($free_fieldtype(fieldtype)*{fieldtype <- `fieldtype*`})] -[visit_exp $free_fieldtype(fieldtype)*{fieldtype <- `fieldtype*`}] -[scope_enter fieldtype] -[visit_exp $free_fieldtype(fieldtype)] -[visit_exp fieldtype] -[visit_id fieldtype] not free -[visit_id fieldtype] not free -[scope_exit fieldtype] -[visit_exp `fieldtype*`] -[visit_id fieldtype*] not free -[visit_id fieldtype*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_comptype{`fieldtype*` : fieldtype*}(`STRUCT`_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) = $free_list($free_fieldtype(fieldtype)*{fieldtype <- `fieldtype*`}) -[check_dims] fieldtype -[visit_exp `ARRAY`_comptype(fieldtype)] -[visit_exp (fieldtype)] -[visit_exp fieldtype] -[visit_id fieldtype] -[visit_exp $free_fieldtype(fieldtype)] -[visit_exp fieldtype] -[visit_id fieldtype] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_comptype{fieldtype : fieldtype}(`ARRAY`_comptype(fieldtype)) = $free_fieldtype(fieldtype) -[check_dims] resulttype_1 resulttype_2 -[visit_exp `FUNC%->%`_comptype(resulttype_1, resulttype_2)] -[visit_exp (resulttype_1, resulttype_2)] -[visit_exp resulttype_1] -[visit_id resulttype_1] -[visit_exp resulttype_2] -[visit_id resulttype_2] -[visit_exp $free_resulttype(resulttype_1) +++ $free_resulttype(resulttype_2)] -[visit_exp $free_resulttype(resulttype_1)] -[visit_exp resulttype_1] -[visit_id resulttype_1] not free -[visit_exp $free_resulttype(resulttype_2)] -[visit_exp resulttype_2] -[visit_id resulttype_2] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_comptype{resulttype_1 : resulttype, resulttype_2 : resulttype}(`FUNC%->%`_comptype(resulttype_1, resulttype_2)) = $free_resulttype(resulttype_1) +++ $free_resulttype(resulttype_2) -[check_dims] comptype final typeuse -[visit_exp `SUB`_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)] -[visit_exp (final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)] -[visit_exp final?{final <- `final?`}] -[scope_enter final] -[visit_exp final] -[visit_id final] not free -[visit_id final] not free -[scope_exit final] -[visit_exp `final?`] -[visit_id final?] no dims -[visit_id final?] -[visit_exp typeuse*{typeuse <- `typeuse*`}] -[scope_enter typeuse] -[visit_exp typeuse] -[visit_id typeuse] not free -[visit_id typeuse] not free -[scope_exit typeuse] -[visit_exp `typeuse*`] -[visit_id typeuse*] no dims -[visit_id typeuse*] -[visit_exp comptype] -[visit_id comptype] -[visit_exp $free_list($free_typeuse(typeuse)*{typeuse <- `typeuse*`}) +++ $free_comptype(comptype)] -[visit_exp $free_list($free_typeuse(typeuse)*{typeuse <- `typeuse*`})] -[visit_exp $free_typeuse(typeuse)*{typeuse <- `typeuse*`}] -[scope_enter typeuse] -[visit_exp $free_typeuse(typeuse)] -[visit_exp typeuse] -[visit_id typeuse] not free -[visit_id typeuse] not free -[scope_exit typeuse] -[visit_exp `typeuse*`] -[visit_id typeuse*] not free -[visit_id typeuse*] no dims -[visit_exp $free_comptype(comptype)] -[visit_exp comptype] -[visit_id comptype] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - 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) -[check_dims] subtype -[visit_exp `REC`_rectype(`%`_list(subtype*{subtype <- `subtype*`}))] -[visit_exp (`%`_list(subtype*{subtype <- `subtype*`}))] -[visit_exp `%`_list(subtype*{subtype <- `subtype*`})] -[visit_exp (subtype*{subtype <- `subtype*`})] -[visit_exp subtype*{subtype <- `subtype*`}] -[scope_enter subtype] -[visit_exp subtype] -[visit_id subtype] not free -[visit_id subtype] not free -[scope_exit subtype] -[visit_exp `subtype*`] -[visit_id subtype*] no dims -[visit_id subtype*] -[visit_exp $free_list($free_subtype(subtype)*{subtype <- `subtype*`})] -[visit_exp $free_subtype(subtype)*{subtype <- `subtype*`}] -[scope_enter subtype] -[visit_exp $free_subtype(subtype)] -[visit_exp subtype] -[visit_id subtype] not free -[visit_id subtype] not free -[scope_exit subtype] -[visit_exp `subtype*`] -[visit_id subtype*] not free -[visit_id subtype*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_rectype{`subtype*` : subtype*}(`REC`_rectype(`%`_list(subtype*{subtype <- `subtype*`}))) = $free_list($free_subtype(subtype)*{subtype <- `subtype*`}) -[check_dims] deftype -[visit_exp (deftype : deftype <: typeuse)] -[visit_exp deftype] -[visit_id deftype] -[visit_exp $free_deftype(deftype)] -[visit_exp deftype] -[visit_id deftype] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_tagtype{deftype : deftype}((deftype : deftype <: typeuse)) = $free_deftype(deftype) -[check_dims] mut valtype -[visit_exp `%%`_globaltype(mut?{mut <- `mut?`}, valtype)] -[visit_exp (mut?{mut <- `mut?`}, valtype)] -[visit_exp mut?{mut <- `mut?`}] -[scope_enter mut] -[visit_exp mut] -[visit_id mut] not free -[visit_id mut] not free -[scope_exit mut] -[visit_exp `mut?`] -[visit_id mut?] no dims -[visit_id mut?] -[visit_exp valtype] -[visit_id valtype] -[visit_exp $free_valtype(valtype)] -[visit_exp valtype] -[visit_id valtype] not 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) -[check_dims] addrtype limits -[visit_exp `%%PAGE`_memtype(addrtype, limits)] -[visit_exp (addrtype, limits)] -[visit_exp addrtype] -[visit_id addrtype] -[visit_exp limits] -[visit_id limits] -[visit_exp $free_addrtype((addrtype : addrtype <: numtype))] -[visit_exp (addrtype : addrtype <: numtype)] -[visit_exp addrtype] -[visit_id addrtype] not 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)) -[check_dims] addrtype limits reftype -[visit_exp `%%%`_tabletype(addrtype, limits, reftype)] -[visit_exp (addrtype, limits, reftype)] -[visit_exp addrtype] -[visit_id addrtype] -[visit_exp limits] -[visit_id limits] -[visit_exp reftype] -[visit_id reftype] -[visit_exp $free_addrtype((addrtype : addrtype <: numtype)) +++ $free_reftype(reftype)] -[visit_exp $free_addrtype((addrtype : addrtype <: numtype))] -[visit_exp (addrtype : addrtype <: numtype)] -[visit_exp addrtype] -[visit_id addrtype] not free -[visit_exp $free_reftype(reftype)] -[visit_exp reftype] -[visit_id reftype] not 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) -[check_dims] -[visit_exp `OK`_datatype] -[visit_exp ()] -[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_datatype(`OK`_datatype) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} -[check_dims] reftype -[visit_exp reftype] -[visit_id reftype] -[visit_exp $free_reftype(reftype)] -[visit_exp reftype] -[visit_id reftype] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_elemtype{reftype : reftype}(reftype) = $free_reftype(reftype) -[check_dims] tagtype -[visit_exp `TAG`_externtype(tagtype)] -[visit_exp (tagtype)] -[visit_exp tagtype] -[visit_id tagtype] -[visit_exp $free_tagtype(tagtype)] -[visit_exp tagtype] -[visit_id tagtype] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{tagtype : tagtype}(`TAG`_externtype(tagtype)) = $free_tagtype(tagtype) -[check_dims] globaltype -[visit_exp `GLOBAL`_externtype(globaltype)] -[visit_exp (globaltype)] -[visit_exp globaltype] -[visit_id globaltype] -[visit_exp $free_globaltype(globaltype)] -[visit_exp globaltype] -[visit_id globaltype] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{globaltype : globaltype}(`GLOBAL`_externtype(globaltype)) = $free_globaltype(globaltype) -[check_dims] memtype -[visit_exp `MEM`_externtype(memtype)] -[visit_exp (memtype)] -[visit_exp memtype] -[visit_id memtype] -[visit_exp $free_memtype(memtype)] -[visit_exp memtype] -[visit_id memtype] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{memtype : memtype}(`MEM`_externtype(memtype)) = $free_memtype(memtype) -[check_dims] tabletype -[visit_exp `TABLE`_externtype(tabletype)] -[visit_exp (tabletype)] -[visit_exp tabletype] -[visit_id tabletype] -[visit_exp $free_tabletype(tabletype)] -[visit_exp tabletype] -[visit_id tabletype] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{tabletype : tabletype}(`TABLE`_externtype(tabletype)) = $free_tabletype(tabletype) -[check_dims] typeuse -[visit_exp `FUNC`_externtype(typeuse)] -[visit_exp (typeuse)] -[visit_exp typeuse] -[visit_id typeuse] -[visit_exp $free_typeuse(typeuse)] -[visit_exp typeuse] -[visit_id typeuse] not free -=> - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_externtype{typeuse : typeuse}(`FUNC`_externtype(typeuse)) = $free_typeuse(typeuse) -[check_dims] externtype_1 externtype_2 -[visit_exp `%->%`_moduletype(externtype_1*{externtype_1 <- `externtype_1*`}, externtype_2*{externtype_2 <- `externtype_2*`})] -[visit_exp (externtype_1*{externtype_1 <- `externtype_1*`}, externtype_2*{externtype_2 <- `externtype_2*`})] -[visit_exp externtype_1*{externtype_1 <- `externtype_1*`}] -[scope_enter externtype_1] -[visit_exp externtype_1] -[visit_id externtype_1] not free -[visit_id externtype_1] not free -[scope_exit externtype_1] -[visit_exp `externtype_1*`] -[visit_id externtype_1*] no dims -[visit_id externtype_1*] -[visit_exp externtype_2*{externtype_2 <- `externtype_2*`}] -[scope_enter externtype_2] -[visit_exp externtype_2] -[visit_id externtype_2] not free -[visit_id externtype_2] not free -[scope_exit externtype_2] -[visit_exp `externtype_2*`] -[visit_id externtype_2*] no dims -[visit_id externtype_2*] -[visit_exp $free_list($free_externtype(externtype_1)*{externtype_1 <- `externtype_1*`}) +++ $free_list($free_externtype(externtype_2)*{externtype_2 <- `externtype_2*`})] -[visit_exp $free_list($free_externtype(externtype_1)*{externtype_1 <- `externtype_1*`})] -[visit_exp $free_externtype(externtype_1)*{externtype_1 <- `externtype_1*`}] -[scope_enter externtype_1] -[visit_exp $free_externtype(externtype_1)] -[visit_exp externtype_1] -[visit_id externtype_1] not free -[visit_id externtype_1] not free -[scope_exit externtype_1] -[visit_exp `externtype_1*`] -[visit_id externtype_1*] not free -[visit_id externtype_1*] no dims -[visit_exp $free_list($free_externtype(externtype_2)*{externtype_2 <- `externtype_2*`})] -[visit_exp $free_externtype(externtype_2)*{externtype_2 <- `externtype_2*`}] -[scope_enter externtype_2] -[visit_exp $free_externtype(externtype_2)] -[visit_exp externtype_2] -[visit_id externtype_2] not free -[visit_id externtype_2] not free -[scope_exit externtype_2] -[visit_exp `externtype_2*`] -[visit_id externtype_2*] not free -[visit_id externtype_2*] no dims -=> - ;; ../../../../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*`}) -[check_dims] numtype -[visit_id numtype] not free -[check_dims] Inn -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] -[check_dims] Fnn -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] -[check_dims] Pnn -[visit_exp Pnn] -[visit_id Pnn] -[check_dims] lanetype -[visit_id lanetype] not free -[check_dims] numtype -[visit_exp (numtype : numtype <: lanetype)] -[visit_exp numtype] -[visit_id numtype] -[check_dims] packtype -[visit_exp (packtype : packtype <: lanetype)] -[visit_exp packtype] -[visit_id packtype] -[check_dims] Jnn -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[check_dims] Vnn -[visit_exp Vnn] -[visit_id Vnn] -[check_dims] storagetype -[visit_id storagetype] not free -[check_dims] numtype -[visit_exp (numtype : numtype <: storagetype)] -[visit_exp numtype] -[visit_id numtype] -[check_dims] vectype -[visit_exp (vectype : vectype <: storagetype)] -[visit_exp vectype] -[visit_id vectype] -[check_dims] packtype -[visit_exp (packtype : packtype <: storagetype)] -[visit_exp packtype] -[visit_id packtype] -[check_dims] -[check_dims] -[visit_exp 8] -[check_dims] -[visit_exp 16] -[check_dims] -[visit_exp 32] -[check_dims] -[visit_exp 64] -[check_dims] -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] numtype -[visit_id numtype] not free -[check_dims] Inn -[check_dims] Inn ---- 1 --- -[check_dims] Inn ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Inn ---- 1 --- -[check_dims] Inn ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Inn ---- 1 --- -[check_dims] Inn ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Inn -[scope_enter sz] -[visit_id sz] not free -[visit_id sz] no dims -[scope_exit sz] ---- 1 --- -[check_dims] Inn sz ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp (sz!`%`_sz.0 < $sizenn((Inn : Inn <: numtype)))] -[visit_exp sz!`%`_sz.0] -[visit_exp sz!`%`_sz] -[visit_exp sz] -[visit_id sz] not free -[visit_exp $sizenn((Inn : Inn <: numtype))] -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] not free -[visit_id Inn] no dims -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] -[check_dims] Fnn -[check_dims] Fnn ---- 1 --- -[check_dims] Fnn ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Fnn ---- 1 --- -[check_dims] Fnn ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Fnn ---- 1 --- -[check_dims] Fnn ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Fnn ---- 1 --- -[check_dims] Fnn ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Fnn ---- 1 --- -[check_dims] Fnn ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Fnn ---- 1 --- -[check_dims] Fnn ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Fnn ---- 1 --- -[check_dims] Fnn ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] -[check_dims] numtype -[visit_id numtype] not free -[check_dims] Inn -[check_dims] Inn ---- 1 --- -[check_dims] Inn ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Inn ---- 1 --- -[check_dims] Inn ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Inn ---- 1 --- -[check_dims] Inn ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Inn -[scope_enter sx] -[visit_id sx] not free -[visit_id sx] no dims -[scope_exit sx] ---- 1 --- -[check_dims] Inn ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Inn -[scope_enter sx] -[visit_id sx] not free -[visit_id sx] no dims -[scope_exit sx] ---- 1 --- -[check_dims] Inn ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Inn ---- 1 --- -[check_dims] Inn ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Inn ---- 1 --- -[check_dims] Inn ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Inn ---- 1 --- -[check_dims] Inn ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Inn ---- 1 --- -[check_dims] Inn ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Inn -[scope_enter sx] -[visit_id sx] not free -[visit_id sx] no dims -[scope_exit sx] ---- 1 --- -[check_dims] Inn ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Inn ---- 1 --- -[check_dims] Inn ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Inn ---- 1 --- -[check_dims] Inn ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] -[check_dims] Fnn -[check_dims] Fnn ---- 1 --- -[check_dims] Fnn ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Fnn ---- 1 --- -[check_dims] Fnn ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Fnn ---- 1 --- -[check_dims] Fnn ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Fnn ---- 1 --- -[check_dims] Fnn ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Fnn ---- 1 --- -[check_dims] Fnn ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Fnn ---- 1 --- -[check_dims] Fnn ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Fnn ---- 1 --- -[check_dims] Fnn ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] -[check_dims] numtype -[visit_id numtype] not free -[check_dims] Inn -[check_dims] Inn ---- 1 --- -[check_dims] Inn ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] -[check_dims] numtype -[visit_id numtype] not free -[check_dims] Inn -[check_dims] Inn ---- 1 --- -[check_dims] Inn ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Inn ---- 1 --- -[check_dims] Inn ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Inn -[scope_enter sx] -[visit_id sx] not free -[visit_id sx] no dims -[scope_exit sx] ---- 1 --- -[check_dims] Inn ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Inn -[scope_enter sx] -[visit_id sx] not free -[visit_id sx] no dims -[scope_exit sx] ---- 1 --- -[check_dims] Inn ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Inn -[scope_enter sx] -[visit_id sx] not free -[visit_id sx] no dims -[scope_exit sx] ---- 1 --- -[check_dims] Inn ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Inn -[scope_enter sx] -[visit_id sx] not free -[visit_id sx] no dims -[scope_exit sx] ---- 1 --- -[check_dims] Inn ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] -[check_dims] Fnn -[check_dims] Fnn ---- 1 --- -[check_dims] Fnn ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Fnn ---- 1 --- -[check_dims] Fnn ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Fnn ---- 1 --- -[check_dims] Fnn ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Fnn ---- 1 --- -[check_dims] Fnn ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Fnn ---- 1 --- -[check_dims] Fnn ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Fnn ---- 1 --- -[check_dims] Fnn ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] -[check_dims] numtype_1 numtype_2 -[visit_id numtype_1] not free -[visit_id numtype_2] not free -[check_dims] Inn_1 Inn_2 -[check_dims] Inn_1 Inn_2 -[scope_enter sx] -[visit_id sx] not free -[visit_id sx] no dims -[scope_exit sx] ---- 1 --- -[check_dims] Inn_1 Inn_2 ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp ($sizenn1((Inn_1 : Inn <: numtype)) < $sizenn2((Inn_2 : Inn <: numtype)))] -[visit_exp $sizenn1((Inn_1 : Inn <: numtype))] -[visit_exp (Inn_1 : Inn <: numtype)] -[visit_exp Inn_1] -[visit_id Inn_1] not free -[visit_id Inn_1] no dims -[visit_exp $sizenn2((Inn_2 : Inn <: numtype))] -[visit_exp (Inn_2 : Inn <: numtype)] -[visit_exp Inn_2] -[visit_id Inn_2] not free -[visit_id Inn_2] no dims -[check_dims] Inn_1 Inn_2 ---- 1 --- -[check_dims] Inn_1 Inn_2 ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp ($sizenn1((Inn_1 : Inn <: numtype)) > $sizenn2((Inn_2 : Inn <: numtype)))] -[visit_exp $sizenn1((Inn_1 : Inn <: numtype))] -[visit_exp (Inn_1 : Inn <: numtype)] -[visit_exp Inn_1] -[visit_id Inn_1] not free -[visit_id Inn_1] no dims -[visit_exp $sizenn2((Inn_2 : Inn <: numtype))] -[visit_exp (Inn_2 : Inn <: numtype)] -[visit_exp Inn_2] -[visit_id Inn_2] not free -[visit_id Inn_2] no dims -[visit_exp (Inn_1 : Inn <: numtype)] -[visit_exp Inn_1] -[visit_id Inn_1] -[visit_exp (Inn_2 : Inn <: numtype)] -[visit_exp Inn_2] -[visit_id Inn_2] -[check_dims] Fnn_2 Inn_1 -[check_dims] Fnn_2 Inn_1 -[scope_enter sx] -[visit_id sx] not free -[visit_id sx] no dims -[scope_exit sx] ---- 1 --- -[check_dims] Fnn_2 Inn_1 ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Fnn_2 Inn_1 ---- 1 --- -[check_dims] Fnn_2 Inn_1 ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp ($sizenn1((Inn_1 : Inn <: numtype)) = $sizenn2((Fnn_2 : Fnn <: numtype)))] -[visit_exp $sizenn1((Inn_1 : Inn <: numtype))] -[visit_exp (Inn_1 : Inn <: numtype)] -[visit_exp Inn_1] -[visit_id Inn_1] not free -[visit_id Inn_1] no dims -[visit_exp $sizenn2((Fnn_2 : Fnn <: numtype))] -[visit_exp (Fnn_2 : Fnn <: numtype)] -[visit_exp Fnn_2] -[visit_id Fnn_2] not free -[visit_id Fnn_2] no dims -[visit_exp (Inn_1 : Inn <: numtype)] -[visit_exp Inn_1] -[visit_id Inn_1] -[visit_exp (Fnn_2 : Fnn <: numtype)] -[visit_exp Fnn_2] -[visit_id Fnn_2] -[check_dims] Fnn_1 Inn_2 -[check_dims] Fnn_1 Inn_2 -[scope_enter sx] -[visit_id sx] not free -[visit_id sx] no dims -[scope_exit sx] ---- 1 --- -[check_dims] Fnn_1 Inn_2 ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Fnn_1 Inn_2 -[scope_enter sx] -[visit_id sx] not free -[visit_id sx] no dims -[scope_exit sx] ---- 1 --- -[check_dims] Fnn_1 Inn_2 ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Fnn_1 Inn_2 ---- 1 --- -[check_dims] Fnn_1 Inn_2 ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp ($sizenn1((Fnn_1 : Fnn <: numtype)) = $sizenn2((Inn_2 : Inn <: numtype)))] -[visit_exp $sizenn1((Fnn_1 : Fnn <: numtype))] -[visit_exp (Fnn_1 : Fnn <: numtype)] -[visit_exp Fnn_1] -[visit_id Fnn_1] not free -[visit_id Fnn_1] no dims -[visit_exp $sizenn2((Inn_2 : Inn <: numtype))] -[visit_exp (Inn_2 : Inn <: numtype)] -[visit_exp Inn_2] -[visit_id Inn_2] not free -[visit_id Inn_2] no dims -[visit_exp (Fnn_1 : Fnn <: numtype)] -[visit_exp Fnn_1] -[visit_id Fnn_1] -[visit_exp (Inn_2 : Inn <: numtype)] -[visit_exp Inn_2] -[visit_id Inn_2] -[check_dims] Fnn_1 Fnn_2 -[check_dims] Fnn_1 Fnn_2 ---- 1 --- -[check_dims] Fnn_1 Fnn_2 ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp ($sizenn1((Fnn_1 : Fnn <: numtype)) < $sizenn2((Fnn_2 : Fnn <: numtype)))] -[visit_exp $sizenn1((Fnn_1 : Fnn <: numtype))] -[visit_exp (Fnn_1 : Fnn <: numtype)] -[visit_exp Fnn_1] -[visit_id Fnn_1] not free -[visit_id Fnn_1] no dims -[visit_exp $sizenn2((Fnn_2 : Fnn <: numtype))] -[visit_exp (Fnn_2 : Fnn <: numtype)] -[visit_exp Fnn_2] -[visit_id Fnn_2] not free -[visit_id Fnn_2] no dims -[check_dims] Fnn_1 Fnn_2 ---- 1 --- -[check_dims] Fnn_1 Fnn_2 ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp ($sizenn1((Fnn_1 : Fnn <: numtype)) > $sizenn2((Fnn_2 : Fnn <: numtype)))] -[visit_exp $sizenn1((Fnn_1 : Fnn <: numtype))] -[visit_exp (Fnn_1 : Fnn <: numtype)] -[visit_exp Fnn_1] -[visit_id Fnn_1] not free -[visit_id Fnn_1] no dims -[visit_exp $sizenn2((Fnn_2 : Fnn <: numtype))] -[visit_exp (Fnn_2 : Fnn <: numtype)] -[visit_exp Fnn_2] -[visit_id Fnn_2] not free -[visit_id Fnn_2] no dims -[visit_exp (Fnn_1 : Fnn <: numtype)] -[visit_exp Fnn_1] -[visit_id Fnn_1] -[visit_exp (Fnn_2 : Fnn <: numtype)] -[visit_exp Fnn_2] -[visit_id Fnn_2] -[check_dims] -[check_dims] -[visit_exp 1] -[check_dims] -[visit_exp 2] -[check_dims] -[visit_exp 4] -[check_dims] -[visit_exp 8] -[check_dims] -[visit_exp 16] -[check_dims] -[check_dims] -[scope_enter lanetype] -[visit_id lanetype] not free -[visit_id lanetype] no dims -[scope_enter dim] -[visit_id dim] not free -[visit_id dim] no dims -[scope_exit dim] -[scope_exit lanetype] ---- 1 --- -[check_dims] dim lanetype ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp (($lsize(lanetype) * dim!`%`_dim.0) = 128)] -[visit_exp ($lsize(lanetype) * dim!`%`_dim.0)] -[visit_exp $lsize(lanetype)] -[visit_exp lanetype] -[visit_id lanetype] not free -[visit_exp dim!`%`_dim.0] -[visit_exp dim!`%`_dim] -[visit_exp dim] -[visit_id dim] not free -[visit_exp 128] -[check_dims] shape -DecD dim(shape : shape) : dim -[visit_id shape] not free -[check_dims] Lnn N -[visit_exp `%X%`_shape(Lnn, `%`_dim(N))] -[visit_exp (Lnn, `%`_dim(N))] -[visit_exp Lnn] -[visit_id Lnn] -[visit_exp `%`_dim(N)] -[visit_exp (N)] -[visit_exp N] -[visit_id N] -[visit_exp `%`_dim(N)] -[visit_exp (N)] -[visit_exp N] -[visit_id N] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $dim{Lnn : Lnn, N : N}(`%X%`_shape(Lnn, `%`_dim(N))) = `%`_dim(N) -[check_dims] shape -DecD lanetype(shape : shape) : lanetype -[visit_id shape] not free -[check_dims] Lnn N -[visit_exp `%X%`_shape(Lnn, `%`_dim(N))] -[visit_exp (Lnn, `%`_dim(N))] -[visit_exp Lnn] -[visit_id Lnn] -[visit_exp `%`_dim(N)] -[visit_exp (N)] -[visit_exp N] -[visit_id N] -[visit_exp Lnn] -[visit_id Lnn] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $lanetype{Lnn : Lnn, N : N}(`%X%`_shape(Lnn, `%`_dim(N))) = Lnn -[check_dims] shape -DecD unpackshape(shape : shape) : numtype -[visit_id shape] not free -[check_dims] Lnn N -[visit_exp `%X%`_shape(Lnn, `%`_dim(N))] -[visit_exp (Lnn, `%`_dim(N))] -[visit_exp Lnn] -[visit_id Lnn] -[visit_exp `%`_dim(N)] -[visit_exp (N)] -[visit_exp N] -[visit_id N] -[visit_exp $lunpack(Lnn)] -[visit_exp Lnn] -[visit_id Lnn] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $unpackshape{Lnn : Lnn, N : N}(`%X%`_shape(Lnn, `%`_dim(N))) = $lunpack(Lnn) -[check_dims] -[check_dims] -[scope_enter shape] -[visit_id shape] not free -[visit_id shape] no dims -[scope_exit shape] ---- 1 --- -[check_dims] Jnn shape ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp ($lanetype(shape) = (Jnn : Jnn <: lanetype))] -[visit_exp $lanetype(shape)] -[visit_exp shape] -[visit_id shape] not free -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[check_dims] -[check_dims] -[scope_enter shape] -[visit_id shape] not free -[visit_id shape] no dims -[scope_exit shape] ---- 1 --- -[check_dims] shape ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp ($lanetype(shape) = `I8`_lanetype)] -[visit_exp $lanetype(shape)] -[visit_exp shape] -[visit_id shape] not free -[visit_exp `I8`_lanetype] -[visit_exp ()] -[check_dims] -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] shape -[visit_id shape] not free -[check_dims] Jnn M -[check_dims] Jnn M ---- 1 --- -[check_dims] Jnn M ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Jnn M ---- 1 --- -[check_dims] Jnn M ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Jnn M ---- 1 --- -[check_dims] Jnn M ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp ($lsizenn((Jnn : Jnn <: lanetype)) = 8)] -[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_id Jnn] no dims -[visit_exp 8] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[check_dims] Fnn M -[check_dims] Fnn M ---- 1 --- -[check_dims] Fnn M ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Fnn M ---- 1 --- -[check_dims] Fnn M ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Fnn M ---- 1 --- -[check_dims] Fnn M ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Fnn M ---- 1 --- -[check_dims] Fnn M ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Fnn M ---- 1 --- -[check_dims] Fnn M ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Fnn M ---- 1 --- -[check_dims] Fnn M ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Fnn M ---- 1 --- -[check_dims] Fnn M ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[check_dims] shape -[visit_id shape] not free -[check_dims] Jnn M -[check_dims] Jnn M ---- 1 --- -[check_dims] Jnn M ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Jnn M ---- 1 --- -[check_dims] Jnn M ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Jnn M -[scope_enter sx] -[visit_id sx] not free -[visit_id sx] no dims -[scope_exit sx] ---- 1 --- -[check_dims] Jnn M ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp ($lsizenn((Jnn : Jnn <: lanetype)) <= 16)] -[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_id Jnn] no dims -[visit_exp 16] -[check_dims] Jnn M -[scope_enter sx] -[visit_id sx] not free -[visit_id sx] no dims -[scope_exit sx] ---- 1 --- -[check_dims] Jnn M ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp ($lsizenn((Jnn : Jnn <: lanetype)) <= 16)] -[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_id Jnn] no dims -[visit_exp 16] -[check_dims] Jnn M ---- 1 --- -[check_dims] Jnn M ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp ($lsizenn((Jnn : Jnn <: lanetype)) >= 16)] -[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_id Jnn] no dims -[visit_exp 16] -[check_dims] Jnn M ---- 1 --- -[check_dims] Jnn M ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp ($lsizenn((Jnn : Jnn <: lanetype)) <= 16)] -[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_id Jnn] no dims -[visit_exp 16] -[check_dims] Jnn M ---- 1 --- -[check_dims] Jnn M ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp ($lsizenn((Jnn : Jnn <: lanetype)) = 16)] -[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_id Jnn] no dims -[visit_exp 16] -[check_dims] Jnn M ---- 1 --- -[check_dims] Jnn M ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp ($lsizenn((Jnn : Jnn <: lanetype)) = 16)] -[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_id Jnn] no dims -[visit_exp 16] -[check_dims] Jnn M -[scope_enter sx] -[visit_id sx] not free -[visit_id sx] no dims -[scope_exit sx] ---- 1 --- -[check_dims] Jnn M ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp ($lsizenn((Jnn : Jnn <: lanetype)) <= 32)] -[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_id Jnn] no dims -[visit_exp 32] -[check_dims] Jnn M -[scope_enter sx] -[visit_id sx] not free -[visit_id sx] no dims -[scope_exit sx] ---- 1 --- -[check_dims] Jnn M ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp ($lsizenn((Jnn : Jnn <: lanetype)) <= 32)] -[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_id Jnn] no dims -[visit_exp 32] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[check_dims] Fnn M -[check_dims] Fnn M ---- 1 --- -[check_dims] Fnn M ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Fnn M ---- 1 --- -[check_dims] Fnn M ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Fnn M ---- 1 --- -[check_dims] Fnn M ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Fnn M ---- 1 --- -[check_dims] Fnn M ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Fnn M ---- 1 --- -[check_dims] Fnn M ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Fnn M ---- 1 --- -[check_dims] Fnn M ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Fnn M ---- 1 --- -[check_dims] Fnn M ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Fnn M ---- 1 --- -[check_dims] Fnn M ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Fnn M ---- 1 --- -[check_dims] Fnn M ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Fnn M ---- 1 --- -[check_dims] Fnn M ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[check_dims] shape -[visit_id shape] not free -[check_dims] Jnn M -[check_dims] Jnn M ---- 1 --- -[check_dims] Jnn M ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[check_dims] Fnn M -[check_dims] Fnn M ---- 1 --- -[check_dims] Fnn M ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Fnn M ---- 1 --- -[check_dims] Fnn M ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[check_dims] shape -[visit_id shape] not free -[check_dims] Jnn M -[check_dims] Jnn M ---- 1 --- -[check_dims] Jnn M ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[check_dims] shape -[visit_id shape] not free -[check_dims] Jnn M -[check_dims] Jnn M ---- 1 --- -[check_dims] Jnn M ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Jnn M ---- 1 --- -[check_dims] Jnn M ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Jnn M -[scope_enter sx] -[visit_id sx] not free -[visit_id sx] no dims -[scope_exit sx] ---- 1 --- -[check_dims] Jnn M sx ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = `S`_sx))] -[visit_exp ($lsizenn((Jnn : Jnn <: lanetype)) =/= 64)] -[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_id Jnn] no dims -[visit_exp 64] -[visit_exp (sx = `S`_sx)] -[visit_exp sx] -[visit_id sx] not free -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] Jnn M -[scope_enter sx] -[visit_id sx] not free -[visit_id sx] no dims -[scope_exit sx] ---- 1 --- -[check_dims] Jnn M sx ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = `S`_sx))] -[visit_exp ($lsizenn((Jnn : Jnn <: lanetype)) =/= 64)] -[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_id Jnn] no dims -[visit_exp 64] -[visit_exp (sx = `S`_sx)] -[visit_exp sx] -[visit_id sx] not free -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] Jnn M -[scope_enter sx] -[visit_id sx] not free -[visit_id sx] no dims -[scope_exit sx] ---- 1 --- -[check_dims] Jnn M sx ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = `S`_sx))] -[visit_exp ($lsizenn((Jnn : Jnn <: lanetype)) =/= 64)] -[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_id Jnn] no dims -[visit_exp 64] -[visit_exp (sx = `S`_sx)] -[visit_exp sx] -[visit_id sx] not free -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] Jnn M -[scope_enter sx] -[visit_id sx] not free -[visit_id sx] no dims -[scope_exit sx] ---- 1 --- -[check_dims] Jnn M sx ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = `S`_sx))] -[visit_exp ($lsizenn((Jnn : Jnn <: lanetype)) =/= 64)] -[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_id Jnn] no dims -[visit_exp 64] -[visit_exp (sx = `S`_sx)] -[visit_exp sx] -[visit_id sx] not free -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[check_dims] Fnn M -[check_dims] Fnn M ---- 1 --- -[check_dims] Fnn M ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Fnn M ---- 1 --- -[check_dims] Fnn M ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Fnn M ---- 1 --- -[check_dims] Fnn M ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Fnn M ---- 1 --- -[check_dims] Fnn M ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Fnn M ---- 1 --- -[check_dims] Fnn M ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Fnn M ---- 1 --- -[check_dims] Fnn M ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[check_dims] ishape -[visit_id ishape] not free -[check_dims] Jnn M -[check_dims] Jnn M ---- 1 --- -[check_dims] Jnn M ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] Jnn M -[scope_enter sx] -[visit_id sx] not free -[visit_id sx] no dims -[scope_exit sx] ---- 1 --- -[check_dims] Jnn M ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))] -[visit_exp (`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[check_dims] bshape -[visit_id bshape] not free -[check_dims] M -[check_dims] M ---- 1 --- -[check_dims] M ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] M ---- 1 --- -[check_dims] M ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp `%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(M)))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(M)))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(M))] -[visit_exp (`I8`_lanetype, `%`_dim(M))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[check_dims] ishape_1 ishape_2 -[visit_id ishape_1] not free -[visit_id ishape_2] not free -[check_dims] Jnn_1 Jnn_2 M_1 M_2 -[check_dims] Jnn_1 Jnn_2 M_1 M_2 -[scope_enter sx] -[visit_id sx] not free -[visit_id sx] no dims -[scope_exit sx] ---- 1 --- -[check_dims] Jnn_1 Jnn_2 M_1 M_2 ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp ((16 <= (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) /\ (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) <= 32)))] -[visit_exp (16 <= (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))))] -[visit_exp 16] -[visit_exp (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))] -[visit_exp 2] -[visit_exp $lsizenn1((Jnn_1 : Jnn <: lanetype))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] not free -[visit_id Jnn_1] no dims -[visit_exp (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) <= 32))] -[visit_exp ((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype)))] -[visit_exp (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))] -[visit_exp 2] -[visit_exp $lsizenn1((Jnn_1 : Jnn <: lanetype))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] not free -[visit_id Jnn_1] no dims -[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] not free -[visit_id Jnn_2] no dims -[visit_exp ($lsizenn2((Jnn_2 : Jnn <: lanetype)) <= 32)] -[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] not free -[visit_id Jnn_2] no dims -[visit_exp 32] -[visit_exp `%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))] -[visit_exp (`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))] -[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] -[visit_exp `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))] -[visit_exp (`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))] -[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] -[check_dims] ishape_1 ishape_2 -[visit_id ishape_1] not free -[visit_id ishape_2] not free -[check_dims] Jnn_1 Jnn_2 M_1 M_2 -[check_dims] Jnn_1 Jnn_2 M_1 M_2 -[scope_enter half] -[visit_id half] not free -[visit_id half] no dims -[scope_enter sx] -[visit_id sx] not free -[visit_id sx] no dims -[scope_exit sx] -[scope_exit half] ---- 1 --- -[check_dims] Jnn_1 Jnn_2 M_1 M_2 ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) >= 16))] -[visit_exp ((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype)))] -[visit_exp (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))] -[visit_exp 2] -[visit_exp $lsizenn1((Jnn_1 : Jnn <: lanetype))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] not free -[visit_id Jnn_1] no dims -[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] not free -[visit_id Jnn_2] no dims -[visit_exp ($lsizenn2((Jnn_2 : Jnn <: lanetype)) >= 16)] -[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] not free -[visit_id Jnn_2] no dims -[visit_exp 16] -[check_dims] Jnn_1 Jnn_2 M_1 M_2 ---- 1 --- -[check_dims] Jnn_1 Jnn_2 M_1 M_2 ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32))] -[visit_exp ((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype)))] -[visit_exp (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))] -[visit_exp 2] -[visit_exp $lsizenn1((Jnn_1 : Jnn <: lanetype))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] not free -[visit_id Jnn_1] no dims -[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] not free -[visit_id Jnn_2] no dims -[visit_exp ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)] -[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] not free -[visit_id Jnn_2] no dims -[visit_exp 32] -[check_dims] Jnn_1 Jnn_2 M_1 M_2 ---- 1 --- -[check_dims] Jnn_1 Jnn_2 M_1 M_2 ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 16))] -[visit_exp ((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype)))] -[visit_exp (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))] -[visit_exp 2] -[visit_exp $lsizenn1((Jnn_1 : Jnn <: lanetype))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] not free -[visit_id Jnn_1] no dims -[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] not free -[visit_id Jnn_2] no dims -[visit_exp ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 16)] -[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] not free -[visit_id Jnn_2] no dims -[visit_exp 16] -[visit_exp `%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))] -[visit_exp (`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))] -[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] -[visit_exp `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))] -[visit_exp (`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))] -[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] -[check_dims] ishape_1 ishape_2 -[visit_id ishape_1] not free -[visit_id ishape_2] not free -[check_dims] Jnn_1 Jnn_2 M_1 M_2 -[check_dims] Jnn_1 Jnn_2 M_1 M_2 ---- 1 --- -[check_dims] Jnn_1 Jnn_2 M_1 M_2 ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp (((4 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32))] -[visit_exp ((4 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype)))] -[visit_exp (4 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))] -[visit_exp 4] -[visit_exp $lsizenn1((Jnn_1 : Jnn <: lanetype))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] not free -[visit_id Jnn_1] no dims -[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] not free -[visit_id Jnn_2] no dims -[visit_exp ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)] -[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] not free -[visit_id Jnn_2] no dims -[visit_exp 32] -[visit_exp `%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))] -[visit_exp (`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))] -[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] -[visit_exp `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))] -[visit_exp (`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))] -[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] -[check_dims] shape_1 shape_2 -[visit_id shape_1] not free -[visit_id shape_2] not free -[check_dims] Jnn_1 Jnn_2 M_1 M_2 -[check_dims] Jnn_1 Jnn_2 M_1 M_2 -[scope_enter half] -[visit_id half] not free -[visit_id half] no dims -[scope_enter sx] -[visit_id sx] not free -[visit_id sx] no dims -[scope_exit sx] -[scope_exit half] ---- 1 --- -[check_dims] Jnn_1 Jnn_2 M_1 M_2 ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))))] -[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] not free -[visit_id Jnn_2] no dims -[visit_exp (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))] -[visit_exp 2] -[visit_exp $lsizenn1((Jnn_1 : Jnn <: lanetype))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] not free -[visit_id Jnn_1] no dims -[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] -[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] -[check_dims] Fnn_2 Jnn_1 M_1 M_2 -[check_dims] Fnn_2 Jnn_1 M_1 M_2 -[scope_enter half?] -[visit_id half?] not free -[visit_id half?] no dims -[scope_enter sx] -[visit_id sx] not free -[visit_id sx] no dims -[scope_exit sx] -[scope_exit half?] ---- 1 --- -[check_dims] Fnn_2 Jnn_1 M_1 M_2 half ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp (((($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))))] -[visit_exp ((($sizenn2((Fnn_2 : Fnn <: numtype)) = $lsizenn1((Jnn_1 : Jnn <: lanetype))) /\ ($lsizenn1((Jnn_1 : Jnn <: lanetype)) = 32)) /\ (half?{half <- `half?`} = ?()))] -[visit_exp (($sizenn2((Fnn_2 : Fnn <: numtype)) = $lsizenn1((Jnn_1 : Jnn <: lanetype))) /\ ($lsizenn1((Jnn_1 : Jnn <: lanetype)) = 32))] -[visit_exp ($sizenn2((Fnn_2 : Fnn <: numtype)) = $lsizenn1((Jnn_1 : Jnn <: lanetype)))] -[visit_exp $sizenn2((Fnn_2 : Fnn <: numtype))] -[visit_exp (Fnn_2 : Fnn <: numtype)] -[visit_exp Fnn_2] -[visit_id Fnn_2] not free -[visit_id Fnn_2] no dims -[visit_exp $lsizenn1((Jnn_1 : Jnn <: lanetype))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] not free -[visit_id Jnn_1] no dims -[visit_exp ($lsizenn1((Jnn_1 : Jnn <: lanetype)) = 32)] -[visit_exp $lsizenn1((Jnn_1 : Jnn <: lanetype))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] not free -[visit_id Jnn_1] no dims -[visit_exp 32] -[visit_exp (half?{half <- `half?`} = ?())] -[visit_exp half?{half <- `half?`}] -[scope_enter half] -[visit_exp half] -[visit_id half] not free -[visit_id half] not free -[scope_exit half] -[visit_exp `half?`] -[visit_id half?] not free -[visit_id half?] no dims -[visit_exp ?()] -[visit_exp (($sizenn2((Fnn_2 : Fnn <: numtype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) /\ (half?{half <- `half?`} = ?(`LOW`_half)))] -[visit_exp ($sizenn2((Fnn_2 : Fnn <: numtype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))))] -[visit_exp $sizenn2((Fnn_2 : Fnn <: numtype))] -[visit_exp (Fnn_2 : Fnn <: numtype)] -[visit_exp Fnn_2] -[visit_id Fnn_2] not free -[visit_id Fnn_2] no dims -[visit_exp (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))] -[visit_exp 2] -[visit_exp $lsizenn1((Jnn_1 : Jnn <: lanetype))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] not free -[visit_id Jnn_1] no dims -[visit_exp (half?{half <- `half?`} = ?(`LOW`_half))] -[visit_exp half?{half <- `half?`}] -[scope_enter half] -[visit_exp half] -[visit_id half] not free -[visit_id half] not free -[scope_exit half] -[visit_exp `half?`] -[visit_id half?] not free -[visit_id half?] no dims -[visit_exp ?(`LOW`_half)] -[visit_exp `LOW`_half] -[visit_exp ()] -[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] -[visit_exp `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))] -[visit_exp ((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))] -[visit_exp (Fnn_2 : Fnn <: lanetype)] -[visit_exp Fnn_2] -[visit_id Fnn_2] -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] -[check_dims] Fnn_1 Jnn_2 M_1 M_2 -[check_dims] Fnn_1 Jnn_2 M_1 M_2 -[scope_enter sx] -[visit_id sx] not free -[visit_id sx] no dims -[scope_enter zero?] -[visit_id zero?] not free -[visit_id zero?] no dims -[scope_exit zero?] -[scope_exit sx] ---- 1 --- -[check_dims] Fnn_1 Jnn_2 M_1 M_2 zero ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp (((($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))))] -[visit_exp ((($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) /\ (zero?{zero <- `zero?`} = ?()))] -[visit_exp (($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32))] -[visit_exp ($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype)))] -[visit_exp $sizenn1((Fnn_1 : Fnn <: numtype))] -[visit_exp (Fnn_1 : Fnn <: numtype)] -[visit_exp Fnn_1] -[visit_id Fnn_1] not free -[visit_id Fnn_1] no dims -[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] not free -[visit_id Jnn_2] no dims -[visit_exp ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)] -[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] not free -[visit_id Jnn_2] no dims -[visit_exp 32] -[visit_exp (zero?{zero <- `zero?`} = ?())] -[visit_exp zero?{zero <- `zero?`}] -[scope_enter zero] -[visit_exp zero] -[visit_id zero] not free -[visit_id zero] not free -[scope_exit zero] -[visit_exp `zero?`] -[visit_id zero?] not free -[visit_id zero?] no dims -[visit_exp ?()] -[visit_exp (($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $lsizenn2((Jnn_2 : Jnn <: lanetype)))) /\ (zero?{zero <- `zero?`} = ?(`ZERO`_zero)))] -[visit_exp ($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $lsizenn2((Jnn_2 : Jnn <: lanetype))))] -[visit_exp $sizenn1((Fnn_1 : Fnn <: numtype))] -[visit_exp (Fnn_1 : Fnn <: numtype)] -[visit_exp Fnn_1] -[visit_id Fnn_1] not free -[visit_id Fnn_1] no dims -[visit_exp (2 * $lsizenn2((Jnn_2 : Jnn <: lanetype)))] -[visit_exp 2] -[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] not free -[visit_id Jnn_2] no dims -[visit_exp (zero?{zero <- `zero?`} = ?(`ZERO`_zero))] -[visit_exp zero?{zero <- `zero?`}] -[scope_enter zero] -[visit_exp zero] -[visit_id zero] not free -[visit_id zero] not free -[scope_exit zero] -[visit_exp `zero?`] -[visit_id zero?] not free -[visit_id zero?] no dims -[visit_exp ?(`ZERO`_zero)] -[visit_exp `ZERO`_zero] -[visit_exp ()] -[check_dims] Fnn_1 Jnn_2 M_1 M_2 -[scope_enter sx] -[visit_id sx] not free -[visit_id sx] no dims -[scope_enter zero?] -[visit_id zero?] not free -[visit_id zero?] no dims -[scope_exit zero?] -[scope_exit sx] ---- 1 --- -[check_dims] Fnn_1 Jnn_2 M_1 M_2 zero ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp (((($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))))] -[visit_exp ((($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) /\ (zero?{zero <- `zero?`} = ?()))] -[visit_exp (($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32))] -[visit_exp ($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype)))] -[visit_exp $sizenn1((Fnn_1 : Fnn <: numtype))] -[visit_exp (Fnn_1 : Fnn <: numtype)] -[visit_exp Fnn_1] -[visit_id Fnn_1] not free -[visit_id Fnn_1] no dims -[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] not free -[visit_id Jnn_2] no dims -[visit_exp ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)] -[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] not free -[visit_id Jnn_2] no dims -[visit_exp 32] -[visit_exp (zero?{zero <- `zero?`} = ?())] -[visit_exp zero?{zero <- `zero?`}] -[scope_enter zero] -[visit_exp zero] -[visit_id zero] not free -[visit_id zero] not free -[scope_exit zero] -[visit_exp `zero?`] -[visit_id zero?] not free -[visit_id zero?] no dims -[visit_exp ?()] -[visit_exp (($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $lsizenn2((Jnn_2 : Jnn <: lanetype)))) /\ (zero?{zero <- `zero?`} = ?(`ZERO`_zero)))] -[visit_exp ($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $lsizenn2((Jnn_2 : Jnn <: lanetype))))] -[visit_exp $sizenn1((Fnn_1 : Fnn <: numtype))] -[visit_exp (Fnn_1 : Fnn <: numtype)] -[visit_exp Fnn_1] -[visit_id Fnn_1] not free -[visit_id Fnn_1] no dims -[visit_exp (2 * $lsizenn2((Jnn_2 : Jnn <: lanetype)))] -[visit_exp 2] -[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] not free -[visit_id Jnn_2] no dims -[visit_exp (zero?{zero <- `zero?`} = ?(`ZERO`_zero))] -[visit_exp zero?{zero <- `zero?`}] -[scope_enter zero] -[visit_exp zero] -[visit_id zero] not free -[visit_id zero] not free -[scope_exit zero] -[visit_exp `zero?`] -[visit_id zero?] not free -[visit_id zero?] no dims -[visit_exp ?(`ZERO`_zero)] -[visit_exp `ZERO`_zero] -[visit_exp ()] -[visit_exp `%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] -[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] -[visit_exp (Fnn_1 : Fnn <: lanetype)] -[visit_exp Fnn_1] -[visit_id Fnn_1] -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] -[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] -[check_dims] Fnn_1 Fnn_2 M_1 M_2 -[check_dims] Fnn_1 Fnn_2 M_1 M_2 -[scope_enter zero] -[visit_id zero] not free -[visit_id zero] no dims -[scope_exit zero] ---- 1 --- -[check_dims] Fnn_1 Fnn_2 M_1 M_2 ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp ($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $sizenn2((Fnn_2 : Fnn <: numtype))))] -[visit_exp $sizenn1((Fnn_1 : Fnn <: numtype))] -[visit_exp (Fnn_1 : Fnn <: numtype)] -[visit_exp Fnn_1] -[visit_id Fnn_1] not free -[visit_id Fnn_1] no dims -[visit_exp (2 * $sizenn2((Fnn_2 : Fnn <: numtype)))] -[visit_exp 2] -[visit_exp $sizenn2((Fnn_2 : Fnn <: numtype))] -[visit_exp (Fnn_2 : Fnn <: numtype)] -[visit_exp Fnn_2] -[visit_id Fnn_2] not free -[visit_id Fnn_2] no dims -[check_dims] Fnn_1 Fnn_2 M_1 M_2 ---- 1 --- -[check_dims] Fnn_1 Fnn_2 M_1 M_2 ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp ((2 * $sizenn1((Fnn_1 : Fnn <: numtype))) = $sizenn2((Fnn_2 : Fnn <: numtype)))] -[visit_exp (2 * $sizenn1((Fnn_1 : Fnn <: numtype)))] -[visit_exp 2] -[visit_exp $sizenn1((Fnn_1 : Fnn <: numtype))] -[visit_exp (Fnn_1 : Fnn <: numtype)] -[visit_exp Fnn_1] -[visit_id Fnn_1] not free -[visit_id Fnn_1] no dims -[visit_exp $sizenn2((Fnn_2 : Fnn <: numtype))] -[visit_exp (Fnn_2 : Fnn <: numtype)] -[visit_exp Fnn_2] -[visit_id Fnn_2] not free -[visit_id Fnn_2] no dims -[visit_exp `%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] -[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] -[visit_exp (Fnn_1 : Fnn <: lanetype)] -[visit_exp Fnn_1] -[visit_id Fnn_1] -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] -[visit_exp `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))] -[visit_exp ((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))] -[visit_exp (Fnn_2 : Fnn <: lanetype)] -[visit_exp Fnn_2] -[visit_id Fnn_2] -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] -[check_dims] -[check_dims] -[scope_enter u32] -[visit_id u32] not free -[visit_id u32] no dims -[scope_exit u32] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter u64] -[visit_id u64] not free -[visit_id u64] no dims -[scope_exit u64] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] numtype -[visit_id numtype] not free -[check_dims] Inn -[check_dims] Inn -[scope_enter sz] -[visit_id sz] not free -[visit_id sz] no dims -[scope_enter sx] -[visit_id sx] not free -[visit_id sx] no dims -[scope_exit sx] -[scope_exit sz] ---- 1 --- -[check_dims] Inn sz ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp (sz!`%`_sz.0 < $sizenn((Inn : Inn <: numtype)))] -[visit_exp sz!`%`_sz.0] -[visit_exp sz!`%`_sz] -[visit_exp sz] -[visit_id sz] not free -[visit_exp $sizenn((Inn : Inn <: numtype))] -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] not free -[visit_id Inn] no dims -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] -[check_dims] numtype -[visit_id numtype] not free -[check_dims] Inn -[check_dims] Inn -[scope_enter sz] -[visit_id sz] not free -[visit_id sz] no dims -[scope_exit sz] ---- 1 --- -[check_dims] Inn sz ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp (sz!`%`_sz.0 < $sizenn((Inn : Inn <: numtype)))] -[visit_exp sz!`%`_sz.0] -[visit_exp sz!`%`_sz] -[visit_exp sz] -[visit_id sz] not free -[visit_exp $sizenn((Inn : Inn <: numtype))] -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] not free -[visit_id Inn] no dims -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] -[check_dims] vectype -[check_dims] vectype -[scope_enter sz] -[visit_id sz] not free -[visit_id sz] no dims -[scope_enter M] -[visit_id M] not free -[visit_id M] no dims -[scope_enter sx] -[visit_id sx] not free -[visit_id sx] no dims -[scope_exit sx] -[scope_exit M] -[scope_exit sz] ---- 1 --- -[check_dims] M sz vectype ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp (((sz!`%`_sz.0 * M) : nat <:> rat) = (($vsize(vectype) : nat <:> rat) / (2 : nat <:> rat)))] -[visit_exp ((sz!`%`_sz.0 * M) : nat <:> rat)] -[visit_exp (sz!`%`_sz.0 * M)] -[visit_exp sz!`%`_sz.0] -[visit_exp sz!`%`_sz] -[visit_exp sz] -[visit_id sz] not free -[visit_exp M] -[visit_id M] not free -[visit_exp (($vsize(vectype) : nat <:> rat) / (2 : nat <:> rat))] -[visit_exp ($vsize(vectype) : nat <:> rat)] -[visit_exp $vsize(vectype)] -[visit_exp vectype] -[visit_id vectype] not free -[visit_id vectype] no dims -[visit_exp (2 : nat <:> rat)] -[visit_exp 2] -[check_dims] vectype -[scope_enter sz] -[visit_id sz] not free -[visit_id sz] no dims -[scope_exit sz] ---- 1 --- -[check_dims] vectype ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] vectype -[scope_enter sz] -[visit_id sz] not free -[visit_id sz] no dims -[scope_exit sz] ---- 1 --- -[check_dims] sz vectype ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp (sz!`%`_sz.0 >= 32)] -[visit_exp sz!`%`_sz.0] -[visit_exp sz!`%`_sz] -[visit_exp sz] -[visit_id sz] not free -[visit_exp 32] -[visit_exp vectype] -[visit_id vectype] -[check_dims] -[check_dims] -[scope_enter valtype?] -[visit_id valtype?] not free -[visit_id valtype?] no dims -[scope_exit valtype?] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter typeidx] -[visit_id typeidx] not free -[visit_id typeidx] no dims -[scope_exit typeidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter valtype*?] -[visit_id valtype*?] not free -[visit_id valtype*?] no dims -[scope_exit valtype*?] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter blocktype] -[visit_id blocktype] not free -[visit_id blocktype] no dims -[scope_enter instr*] -[visit_id instr*] not free -[visit_id instr*] no dims -[scope_exit instr*] -[scope_exit blocktype] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter blocktype] -[visit_id blocktype] not free -[visit_id blocktype] no dims -[scope_enter instr*] -[visit_id instr*] not free -[visit_id instr*] no dims -[scope_exit instr*] -[scope_exit blocktype] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter blocktype] -[visit_id blocktype] not free -[visit_id blocktype] no dims -[scope_enter instr*] -[visit_id instr*] not free -[visit_id instr*] no dims -[scope_enter instr*] -[visit_id instr*] not free -[visit_id instr*] no dims -[scope_exit instr*] -[scope_exit instr*] -[scope_exit blocktype] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter labelidx] -[visit_id labelidx] not free -[visit_id labelidx] no dims -[scope_exit labelidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter labelidx] -[visit_id labelidx] not free -[visit_id labelidx] no dims -[scope_exit labelidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter labelidx*] -[visit_id labelidx*] not free -[visit_id labelidx*] no dims -[scope_enter labelidx] -[visit_id labelidx] not free -[visit_id labelidx] no dims -[scope_exit labelidx] -[scope_exit labelidx*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter labelidx] -[visit_id labelidx] not free -[visit_id labelidx] no dims -[scope_exit labelidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter labelidx] -[visit_id labelidx] not free -[visit_id labelidx] no dims -[scope_exit labelidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter labelidx] -[visit_id labelidx] not free -[visit_id labelidx] no dims -[scope_enter reftype] -[visit_id reftype] not free -[visit_id reftype] no dims -[scope_enter reftype] -[visit_id reftype] not free -[visit_id reftype] no dims -[scope_exit reftype] -[scope_exit reftype] -[scope_exit labelidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter labelidx] -[visit_id labelidx] not free -[visit_id labelidx] no dims -[scope_enter reftype] -[visit_id reftype] not free -[visit_id reftype] no dims -[scope_enter reftype] -[visit_id reftype] not free -[visit_id reftype] no dims -[scope_exit reftype] -[scope_exit reftype] -[scope_exit labelidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter funcidx] -[visit_id funcidx] not free -[visit_id funcidx] no dims -[scope_exit funcidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter typeuse] -[visit_id typeuse] not free -[visit_id typeuse] no dims -[scope_exit typeuse] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter tableidx] -[visit_id tableidx] not free -[visit_id tableidx] no dims -[scope_enter typeuse] -[visit_id typeuse] not free -[visit_id typeuse] no dims -[scope_exit typeuse] -[scope_exit tableidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter funcidx] -[visit_id funcidx] not free -[visit_id funcidx] no dims -[scope_exit funcidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter typeuse] -[visit_id typeuse] not free -[visit_id typeuse] no dims -[scope_exit typeuse] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter tableidx] -[visit_id tableidx] not free -[visit_id tableidx] no dims -[scope_enter typeuse] -[visit_id typeuse] not free -[visit_id typeuse] no dims -[scope_exit typeuse] -[scope_exit tableidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter tagidx] -[visit_id tagidx] not free -[visit_id tagidx] no dims -[scope_exit tagidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter blocktype] -[visit_id blocktype] not free -[visit_id blocktype] no dims -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_enter instr*] -[visit_id instr*] not free -[visit_id instr*] no dims -[scope_exit instr*] -[scope_exit _] -[scope_exit blocktype] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter tagidx] -[visit_id tagidx] not free -[visit_id tagidx] no dims -[scope_enter labelidx] -[visit_id labelidx] not free -[visit_id labelidx] no dims -[scope_exit labelidx] -[scope_exit tagidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter tagidx] -[visit_id tagidx] not free -[visit_id tagidx] no dims -[scope_enter labelidx] -[visit_id labelidx] not free -[visit_id labelidx] no dims -[scope_exit labelidx] -[scope_exit tagidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter labelidx] -[visit_id labelidx] not free -[visit_id labelidx] no dims -[scope_exit labelidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter labelidx] -[visit_id labelidx] not free -[visit_id labelidx] no dims -[scope_exit labelidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter localidx] -[visit_id localidx] not free -[visit_id localidx] no dims -[scope_exit localidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter localidx] -[visit_id localidx] not free -[visit_id localidx] no dims -[scope_exit localidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter localidx] -[visit_id localidx] not free -[visit_id localidx] no dims -[scope_exit localidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter globalidx] -[visit_id globalidx] not free -[visit_id globalidx] no dims -[scope_exit globalidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter globalidx] -[visit_id globalidx] not free -[visit_id globalidx] no dims -[scope_exit globalidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter tableidx] -[visit_id tableidx] not free -[visit_id tableidx] no dims -[scope_exit tableidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter tableidx] -[visit_id tableidx] not free -[visit_id tableidx] no dims -[scope_exit tableidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter tableidx] -[visit_id tableidx] not free -[visit_id tableidx] no dims -[scope_exit tableidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter tableidx] -[visit_id tableidx] not free -[visit_id tableidx] no dims -[scope_exit tableidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter tableidx] -[visit_id tableidx] not free -[visit_id tableidx] no dims -[scope_exit tableidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter tableidx] -[visit_id tableidx] not free -[visit_id tableidx] no dims -[scope_enter tableidx] -[visit_id tableidx] not free -[visit_id tableidx] no dims -[scope_exit tableidx] -[scope_exit tableidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter tableidx] -[visit_id tableidx] not free -[visit_id tableidx] no dims -[scope_enter elemidx] -[visit_id elemidx] not free -[visit_id elemidx] no dims -[scope_exit elemidx] -[scope_exit tableidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter elemidx] -[visit_id elemidx] not free -[visit_id elemidx] no dims -[scope_exit elemidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] numtype -[scope_enter numtype] -[visit_id numtype] not free -[visit_exp numtype] -[visit_id numtype] not free -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_enter memidx] -[visit_id memidx] not free -[visit_id memidx] no dims -[scope_enter memarg] -[visit_id memarg] not free -[visit_id memarg] no dims -[scope_exit memarg] -[scope_exit memidx] -[scope_exit _] -[scope_exit numtype] ---- 1 --- -[check_dims] numtype ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] numtype -[scope_enter numtype] -[visit_id numtype] not free -[visit_exp numtype] -[visit_id numtype] not free -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_enter memidx] -[visit_id memidx] not free -[visit_id memidx] no dims -[scope_enter memarg] -[visit_id memarg] not free -[visit_id memarg] no dims -[scope_exit memarg] -[scope_exit memidx] -[scope_exit _] -[scope_exit numtype] ---- 1 --- -[check_dims] numtype ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] vectype -[scope_enter vectype] -[visit_id vectype] not free -[visit_exp vectype] -[visit_id vectype] not free -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_enter memidx] -[visit_id memidx] not free -[visit_id memidx] no dims -[scope_enter memarg] -[visit_id memarg] not free -[visit_id memarg] no dims -[scope_exit memarg] -[scope_exit memidx] -[scope_exit _] -[scope_exit vectype] ---- 1 --- -[check_dims] vectype ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter vectype] -[visit_id vectype] not free -[visit_id vectype] no dims -[scope_enter sz] -[visit_id sz] not free -[visit_id sz] no dims -[scope_enter memidx] -[visit_id memidx] not free -[visit_id memidx] no dims -[scope_enter memarg] -[visit_id memarg] not free -[visit_id memarg] no dims -[scope_enter laneidx] -[visit_id laneidx] not free -[visit_id laneidx] no dims -[scope_exit laneidx] -[scope_exit memarg] -[scope_exit memidx] -[scope_exit sz] -[scope_exit vectype] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter vectype] -[visit_id vectype] not free -[visit_id vectype] no dims -[scope_enter memidx] -[visit_id memidx] not free -[visit_id memidx] no dims -[scope_enter memarg] -[visit_id memarg] not free -[visit_id memarg] no dims -[scope_exit memarg] -[scope_exit memidx] -[scope_exit vectype] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter vectype] -[visit_id vectype] not free -[visit_id vectype] no dims -[scope_enter sz] -[visit_id sz] not free -[visit_id sz] no dims -[scope_enter memidx] -[visit_id memidx] not free -[visit_id memidx] no dims -[scope_enter memarg] -[visit_id memarg] not free -[visit_id memarg] no dims -[scope_enter laneidx] -[visit_id laneidx] not free -[visit_id laneidx] no dims -[scope_exit laneidx] -[scope_exit memarg] -[scope_exit memidx] -[scope_exit sz] -[scope_exit vectype] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter memidx] -[visit_id memidx] not free -[visit_id memidx] no dims -[scope_exit memidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter memidx] -[visit_id memidx] not free -[visit_id memidx] no dims -[scope_exit memidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter memidx] -[visit_id memidx] not free -[visit_id memidx] no dims -[scope_exit memidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter memidx] -[visit_id memidx] not free -[visit_id memidx] no dims -[scope_enter memidx] -[visit_id memidx] not free -[visit_id memidx] no dims -[scope_exit memidx] -[scope_exit memidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter memidx] -[visit_id memidx] not free -[visit_id memidx] no dims -[scope_enter dataidx] -[visit_id dataidx] not free -[visit_id dataidx] no dims -[scope_exit dataidx] -[scope_exit memidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter dataidx] -[visit_id dataidx] not free -[visit_id dataidx] no dims -[scope_exit dataidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter heaptype] -[visit_id heaptype] not free -[visit_id heaptype] no dims -[scope_exit heaptype] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter reftype] -[visit_id reftype] not free -[visit_id reftype] no dims -[scope_exit reftype] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter reftype] -[visit_id reftype] not free -[visit_id reftype] no dims -[scope_exit reftype] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter funcidx] -[visit_id funcidx] not free -[visit_id funcidx] no dims -[scope_exit funcidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter sx] -[visit_id sx] not free -[visit_id sx] no dims -[scope_exit sx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter typeidx] -[visit_id typeidx] not free -[visit_id typeidx] no dims -[scope_exit typeidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter typeidx] -[visit_id typeidx] not free -[visit_id typeidx] no dims -[scope_exit typeidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter sx?] -[visit_id sx?] not free -[visit_id sx?] no dims -[scope_enter typeidx] -[visit_id typeidx] not free -[visit_id typeidx] no dims -[scope_enter u32] -[visit_id u32] not free -[visit_id u32] no dims -[scope_exit u32] -[scope_exit typeidx] -[scope_exit sx?] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter typeidx] -[visit_id typeidx] not free -[visit_id typeidx] no dims -[scope_enter u32] -[visit_id u32] not free -[visit_id u32] no dims -[scope_exit u32] -[scope_exit typeidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter typeidx] -[visit_id typeidx] not free -[visit_id typeidx] no dims -[scope_exit typeidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter typeidx] -[visit_id typeidx] not free -[visit_id typeidx] no dims -[scope_exit typeidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter typeidx] -[visit_id typeidx] not free -[visit_id typeidx] no dims -[scope_enter u32] -[visit_id u32] not free -[visit_id u32] no dims -[scope_exit u32] -[scope_exit typeidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter typeidx] -[visit_id typeidx] not free -[visit_id typeidx] no dims -[scope_enter dataidx] -[visit_id dataidx] not free -[visit_id dataidx] no dims -[scope_exit dataidx] -[scope_exit typeidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter typeidx] -[visit_id typeidx] not free -[visit_id typeidx] no dims -[scope_enter elemidx] -[visit_id elemidx] not free -[visit_id elemidx] no dims -[scope_exit elemidx] -[scope_exit typeidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter sx?] -[visit_id sx?] not free -[visit_id sx?] no dims -[scope_enter typeidx] -[visit_id typeidx] not free -[visit_id typeidx] no dims -[scope_exit typeidx] -[scope_exit sx?] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter typeidx] -[visit_id typeidx] not free -[visit_id typeidx] no dims -[scope_exit typeidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter typeidx] -[visit_id typeidx] not free -[visit_id typeidx] no dims -[scope_exit typeidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter typeidx] -[visit_id typeidx] not free -[visit_id typeidx] no dims -[scope_enter typeidx] -[visit_id typeidx] not free -[visit_id typeidx] no dims -[scope_exit typeidx] -[scope_exit typeidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter typeidx] -[visit_id typeidx] not free -[visit_id typeidx] no dims -[scope_enter dataidx] -[visit_id dataidx] not free -[visit_id dataidx] no dims -[scope_exit dataidx] -[scope_exit typeidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter typeidx] -[visit_id typeidx] not free -[visit_id typeidx] no dims -[scope_enter elemidx] -[visit_id elemidx] not free -[visit_id elemidx] no dims -[scope_exit elemidx] -[scope_exit typeidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] numtype -[scope_enter numtype] -[visit_id numtype] not free -[visit_exp numtype] -[visit_id numtype] not free -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit numtype] ---- 1 --- -[check_dims] numtype ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] numtype -[scope_enter numtype] -[visit_id numtype] not free -[visit_exp numtype] -[visit_id numtype] not free -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit numtype] ---- 1 --- -[check_dims] numtype ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] numtype -[scope_enter numtype] -[visit_id numtype] not free -[visit_exp numtype] -[visit_id numtype] not free -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit numtype] ---- 1 --- -[check_dims] numtype ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] numtype -[scope_enter numtype] -[visit_id numtype] not free -[visit_exp numtype] -[visit_id numtype] not free -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit numtype] ---- 1 --- -[check_dims] numtype ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] numtype -[scope_enter numtype] -[visit_id numtype] not free -[visit_exp numtype] -[visit_id numtype] not free -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit numtype] ---- 1 --- -[check_dims] numtype ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] numtype_1 numtype_2 -[scope_enter numtype_1] -[visit_id numtype_1] not free -[scope_enter numtype_2] -[visit_id numtype_2] not free -[visit_exp numtype_2] -[visit_id numtype_2] not free -[visit_exp numtype_1] -[visit_id numtype_1] not free -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit numtype_2] -[scope_exit numtype_1] ---- 1 --- -[check_dims] numtype_1 numtype_2 ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] vectype -[scope_enter vectype] -[visit_id vectype] not free -[visit_exp vectype] -[visit_id vectype] not free -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit vectype] ---- 1 --- -[check_dims] vectype ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter vectype] -[visit_id vectype] not free -[visit_id vectype] no dims -[scope_enter vvunop] -[visit_id vvunop] not free -[visit_id vvunop] no dims -[scope_exit vvunop] -[scope_exit vectype] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter vectype] -[visit_id vectype] not free -[visit_id vectype] no dims -[scope_enter vvbinop] -[visit_id vvbinop] not free -[visit_id vvbinop] no dims -[scope_exit vvbinop] -[scope_exit vectype] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter vectype] -[visit_id vectype] not free -[visit_id vectype] no dims -[scope_enter vvternop] -[visit_id vvternop] not free -[visit_id vvternop] no dims -[scope_exit vvternop] -[scope_exit vectype] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter vectype] -[visit_id vectype] not free -[visit_id vectype] no dims -[scope_enter vvtestop] -[visit_id vvtestop] not free -[visit_id vvtestop] no dims -[scope_exit vvtestop] -[scope_exit vectype] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] shape -[scope_enter shape] -[visit_id shape] not free -[visit_exp shape] -[visit_id shape] not free -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit shape] ---- 1 --- -[check_dims] shape ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] shape -[scope_enter shape] -[visit_id shape] not free -[visit_exp shape] -[visit_id shape] not free -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit shape] ---- 1 --- -[check_dims] shape ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] shape -[scope_enter shape] -[visit_id shape] not free -[visit_exp shape] -[visit_id shape] not free -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit shape] ---- 1 --- -[check_dims] shape ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] shape -[scope_enter shape] -[visit_id shape] not free -[visit_exp shape] -[visit_id shape] not free -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit shape] ---- 1 --- -[check_dims] shape ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] shape -[scope_enter shape] -[visit_id shape] not free -[visit_exp shape] -[visit_id shape] not free -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit shape] ---- 1 --- -[check_dims] shape ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] ishape -[scope_enter ishape] -[visit_id ishape] not free -[visit_exp ishape] -[visit_id ishape] not free -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit ishape] ---- 1 --- -[check_dims] ishape ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter ishape] -[visit_id ishape] not free -[visit_id ishape] no dims -[scope_exit ishape] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] bshape -[scope_enter bshape] -[visit_id bshape] not free -[visit_exp bshape] -[visit_id bshape] not free -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit bshape] ---- 1 --- -[check_dims] bshape ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter bshape] -[visit_id bshape] not free -[visit_id bshape] no dims -[scope_enter laneidx*] -[visit_id laneidx*] not free -[visit_id laneidx*] no dims -[scope_exit laneidx*] -[scope_exit bshape] ---- 1 --- -[check_dims] bshape laneidx ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp (`%`_dim(|laneidx*{laneidx <- `laneidx*`}|) = $dim(bshape!`%`_bshape.0))] -[visit_exp `%`_dim(|laneidx*{laneidx <- `laneidx*`}|)] -[visit_exp (|laneidx*{laneidx <- `laneidx*`}|)] -[visit_exp |laneidx*{laneidx <- `laneidx*`}|] -[visit_exp laneidx*{laneidx <- `laneidx*`}] -[scope_enter laneidx] -[visit_exp laneidx] -[visit_id laneidx] not free -[visit_id laneidx] not free -[scope_exit laneidx] -[visit_exp `laneidx*`] -[visit_id laneidx*] not free -[visit_id laneidx*] no dims -[visit_exp $dim(bshape!`%`_bshape.0)] -[visit_exp bshape!`%`_bshape.0] -[visit_exp bshape!`%`_bshape] -[visit_exp bshape] -[visit_id bshape] not free -[check_dims] ishape_1 ishape_2 -[scope_enter ishape_1] -[visit_id ishape_1] not free -[scope_enter ishape_2] -[visit_id ishape_2] not free -[visit_exp ishape_2] -[visit_id ishape_2] not free -[visit_exp ishape_1] -[visit_id ishape_1] not free -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit ishape_2] -[scope_exit ishape_1] ---- 1 --- -[check_dims] ishape_1 ishape_2 ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] ishape_1 ishape_2 -[scope_enter ishape_1] -[visit_id ishape_1] not free -[scope_enter ishape_2] -[visit_id ishape_2] not free -[visit_exp ishape_2] -[visit_id ishape_2] not free -[visit_exp ishape_1] -[visit_id ishape_1] not free -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit ishape_2] -[scope_exit ishape_1] ---- 1 --- -[check_dims] ishape_1 ishape_2 ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] ishape_1 ishape_2 -[scope_enter ishape_1] -[visit_id ishape_1] not free -[scope_enter ishape_2] -[visit_id ishape_2] not free -[visit_exp ishape_2] -[visit_id ishape_2] not free -[visit_exp ishape_1] -[visit_id ishape_1] not free -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit ishape_2] -[scope_exit ishape_1] ---- 1 --- -[check_dims] ishape_1 ishape_2 ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter ishape_1] -[visit_id ishape_1] not free -[visit_id ishape_1] no dims -[scope_enter ishape_2] -[visit_id ishape_2] not free -[visit_id ishape_2] no dims -[scope_enter sx] -[visit_id sx] not free -[visit_id sx] no dims -[scope_exit sx] -[scope_exit ishape_2] -[scope_exit ishape_1] ---- 1 --- -[check_dims] ishape_1 ishape_2 ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp (($lsize($lanetype(ishape_2!`%`_ishape.0)) = (2 * $lsize($lanetype(ishape_1!`%`_ishape.0)))) /\ ((2 * $lsize($lanetype(ishape_1!`%`_ishape.0))) <= 32))] -[visit_exp ($lsize($lanetype(ishape_2!`%`_ishape.0)) = (2 * $lsize($lanetype(ishape_1!`%`_ishape.0))))] -[visit_exp $lsize($lanetype(ishape_2!`%`_ishape.0))] -[visit_exp $lanetype(ishape_2!`%`_ishape.0)] -[visit_exp ishape_2!`%`_ishape.0] -[visit_exp ishape_2!`%`_ishape] -[visit_exp ishape_2] -[visit_id ishape_2] not free -[visit_exp (2 * $lsize($lanetype(ishape_1!`%`_ishape.0)))] -[visit_exp 2] -[visit_exp $lsize($lanetype(ishape_1!`%`_ishape.0))] -[visit_exp $lanetype(ishape_1!`%`_ishape.0)] -[visit_exp ishape_1!`%`_ishape.0] -[visit_exp ishape_1!`%`_ishape] -[visit_exp ishape_1] -[visit_id ishape_1] not free -[visit_exp ((2 * $lsize($lanetype(ishape_1!`%`_ishape.0))) <= 32)] -[visit_exp (2 * $lsize($lanetype(ishape_1!`%`_ishape.0)))] -[visit_exp 2] -[visit_exp $lsize($lanetype(ishape_1!`%`_ishape.0))] -[visit_exp $lanetype(ishape_1!`%`_ishape.0)] -[visit_exp ishape_1!`%`_ishape.0] -[visit_exp ishape_1!`%`_ishape] -[visit_exp ishape_1] -[visit_id ishape_1] not free -[visit_exp 32] -[check_dims] shape_1 shape_2 -[scope_enter shape_1] -[visit_id shape_1] not free -[scope_enter shape_2] -[visit_id shape_2] not free -[visit_exp shape_2] -[visit_id shape_2] not free -[visit_exp shape_1] -[visit_id shape_1] not free -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit shape_2] -[scope_exit shape_1] ---- 1 --- -[check_dims] shape_1 shape_2 ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter shape] -[visit_id shape] not free -[visit_id shape] no dims -[scope_exit shape] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter shape] -[visit_id shape] not free -[visit_id shape] no dims -[scope_enter sx?] -[visit_id sx?] not free -[visit_id sx?] no dims -[scope_enter laneidx] -[visit_id laneidx] not free -[visit_id laneidx] no dims -[scope_exit laneidx] -[scope_exit sx?] -[scope_exit shape] ---- 1 --- -[check_dims] shape sx ---- 2 --- ---- 3 --- ---- 4 --- -[visit_exp ((sx?{sx <- `sx?`} = ?()) <=> ($lanetype(shape) <- [`I32`_lanetype `I64`_lanetype `F32`_lanetype `F64`_lanetype]))] -[visit_exp (sx?{sx <- `sx?`} = ?())] -[visit_exp sx?{sx <- `sx?`}] -[scope_enter sx] -[visit_exp sx] -[visit_id sx] not free -[visit_id sx] not free -[scope_exit sx] -[visit_exp `sx?`] -[visit_id sx?] not free -[visit_id sx?] no dims -[visit_exp ?()] -[visit_exp ($lanetype(shape) <- [`I32`_lanetype `I64`_lanetype `F32`_lanetype `F64`_lanetype])] -[visit_exp $lanetype(shape)] -[visit_exp shape] -[visit_id shape] not free -[visit_exp [`I32`_lanetype `I64`_lanetype `F32`_lanetype `F64`_lanetype]] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[check_dims] -[scope_enter shape] -[visit_id shape] not free -[visit_id shape] no dims -[scope_enter laneidx] -[visit_id laneidx] not free -[visit_id laneidx] no dims -[scope_exit laneidx] -[scope_exit shape] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[check_dims] -[check_dims] -DecD memarg0 : memarg -[check_dims] -[visit_exp {`ALIGN` `%`_u32(0), `OFFSET` `%`_u64(0)}] -[visit_exp `%`_u32(0)] -[visit_exp (0)] -[visit_exp 0] -[visit_exp `%`_u64(0)] -[visit_exp (0)] -[visit_exp 0] -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $memarg0 = {`ALIGN` `%`_u32(0), `OFFSET` `%`_u64(0)} -[check_dims] consttype lit_ -DecD const(consttype : consttype, lit_ : lit_((consttype : consttype <: storagetype))) : instr -[visit_id consttype] not free -[visit_id lit_] not free -[visit_exp (consttype : consttype <: storagetype)] -[visit_exp consttype] -[visit_id consttype] not free -[check_dims] c numtype -[visit_exp (numtype : numtype <: consttype)] -[visit_exp numtype] -[visit_id numtype] -[visit_exp c] -[visit_id c] -[visit_exp `CONST`_instr(numtype, c)] -[visit_exp (numtype, c)] -[visit_exp numtype] -[visit_id numtype] not free -[visit_exp c] -[visit_id c] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $const{numtype : numtype, c : lit_(((numtype : numtype <: consttype) : consttype <: storagetype))}((numtype : numtype <: consttype), c) = `CONST`_instr(numtype, c) -[check_dims] c vectype -[visit_exp (vectype : vectype <: consttype)] -[visit_exp vectype] -[visit_id vectype] -[visit_exp c] -[visit_id c] -[visit_exp `VCONST`_instr(vectype, c)] -[visit_exp (vectype, c)] -[visit_exp vectype] -[visit_id vectype] not free -[visit_exp c] -[visit_id c] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $const{vectype : vectype, c : lit_(((vectype : vectype <: consttype) : consttype <: storagetype))}((vectype : vectype <: consttype), c) = `VCONST`_instr(vectype, c) -[check_dims] shape -DecD free_shape(shape : shape) : free -[visit_id shape] not free -[check_dims] blocktype -DecD free_blocktype(blocktype : blocktype) : free -[visit_id blocktype] not free -[check_dims] instr -DecD free_instr(instr : instr) : free -[visit_id instr] not free -[check_dims] _ -DecD free_block(instr*) : free -[visit_id _] not free -[check_dims] expr -DecD free_expr(expr : expr) : free -[visit_id expr] not free -[check_dims] dim lanetype -[visit_exp `%X%`_shape(lanetype, dim)] -[visit_exp (lanetype, dim)] -[visit_exp lanetype] -[visit_id lanetype] -[visit_exp dim] -[visit_id dim] -[visit_exp $free_lanetype(lanetype)] -[visit_exp lanetype] -[visit_id lanetype] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_shape{lanetype : lanetype, dim : dim}(`%X%`_shape(lanetype, dim)) = $free_lanetype(lanetype) -[check_dims] valtype -[visit_exp `_RESULT`_blocktype(valtype?{valtype <- `valtype?`})] -[visit_exp (valtype?{valtype <- `valtype?`})] -[visit_exp valtype?{valtype <- `valtype?`}] -[scope_enter valtype] -[visit_exp valtype] -[visit_id valtype] not free -[visit_id valtype] not free -[scope_exit valtype] -[visit_exp `valtype?`] -[visit_id valtype?] no dims -[visit_id valtype?] -[visit_exp $free_opt($free_valtype(valtype)?{valtype <- `valtype?`})] -[visit_exp $free_valtype(valtype)?{valtype <- `valtype?`}] -[scope_enter valtype] -[visit_exp $free_valtype(valtype)] -[visit_exp valtype] -[visit_id valtype] not free -[visit_id valtype] not free -[scope_exit valtype] -[visit_exp `valtype?`] -[visit_id valtype?] not free -[visit_id valtype?] no dims -=> - ;; ../../../../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?`}) -[check_dims] typeidx -[visit_exp `_IDX`_blocktype(typeidx)] -[visit_exp (typeidx)] -[visit_exp typeidx] -[visit_id typeidx] -[visit_exp $free_typeidx(typeidx)] -[visit_exp typeidx] -[visit_id typeidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_blocktype{typeidx : typeidx}(`_IDX`_blocktype(typeidx)) = $free_typeidx(typeidx) -[check_dims] -[visit_exp `NOP`_instr] -[visit_exp ()] -[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr(`NOP`_instr) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} -[check_dims] -[visit_exp `UNREACHABLE`_instr] -[visit_exp ()] -[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr(`UNREACHABLE`_instr) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} -[check_dims] -[visit_exp `DROP`_instr] -[visit_exp ()] -[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr(`DROP`_instr) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} -[check_dims] valtype -[visit_exp `SELECT`_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})] -[visit_exp (valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})] -[visit_exp valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`}] -[scope_enter valtype*] -[visit_exp valtype*{valtype <- `valtype*`}] -[scope_enter valtype] -[visit_exp valtype] -[visit_id valtype] not free -[visit_id valtype] not free -[scope_exit valtype] -[visit_exp `valtype*`] -[visit_id valtype*] not free -[visit_id valtype*] no dims -[visit_id valtype*] not free -[visit_id valtype*] no dims -[scope_exit valtype*] -[visit_exp `valtype*?`] -[visit_id valtype*?] no dims -[visit_id valtype*?] -[visit_exp $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`})] -[visit_exp $free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}] -[scope_enter valtype*] -[visit_exp $free_list($free_valtype(valtype)*{valtype <- `valtype*`})] -[visit_exp $free_valtype(valtype)*{valtype <- `valtype*`}] -[scope_enter valtype] -[visit_exp $free_valtype(valtype)] -[visit_exp valtype] -[visit_id valtype] not free -[visit_id valtype] not free -[scope_exit valtype] -[visit_exp `valtype*`] -[visit_id valtype*] not free -[visit_id valtype*] no dims -[visit_id valtype*] not free -[visit_id valtype*] no dims -[scope_exit valtype*] -[visit_exp `valtype*?`] -[visit_id valtype*?] not free -[visit_id valtype*?] no dims -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{`valtype*?` : valtype*?}(`SELECT`_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) -[check_dims] blocktype instr -[visit_exp `BLOCK`_instr(blocktype, instr*{instr <- `instr*`})] -[visit_exp (blocktype, instr*{instr <- `instr*`})] -[visit_exp blocktype] -[visit_id blocktype] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] no dims -[visit_id instr*] -[visit_exp $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`})] -[visit_exp $free_blocktype(blocktype)] -[visit_exp blocktype] -[visit_id blocktype] not free -[visit_exp $free_block(instr*{instr <- `instr*`})] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] not free -[visit_id instr*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{blocktype : blocktype, `instr*` : instr*}(`BLOCK`_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) -[check_dims] blocktype instr -[visit_exp `LOOP`_instr(blocktype, instr*{instr <- `instr*`})] -[visit_exp (blocktype, instr*{instr <- `instr*`})] -[visit_exp blocktype] -[visit_id blocktype] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] no dims -[visit_id instr*] -[visit_exp $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`})] -[visit_exp $free_blocktype(blocktype)] -[visit_exp blocktype] -[visit_id blocktype] not free -[visit_exp $free_block(instr*{instr <- `instr*`})] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] not free -[visit_id instr*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{blocktype : blocktype, `instr*` : instr*}(`LOOP`_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) -[check_dims] blocktype instr_1 instr_2 -[visit_exp `IF%%ELSE%`_instr(blocktype, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})] -[visit_exp (blocktype, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})] -[visit_exp blocktype] -[visit_id blocktype] -[visit_exp instr_1*{instr_1 <- `instr_1*`}] -[scope_enter instr_1] -[visit_exp instr_1] -[visit_id instr_1] not free -[visit_id instr_1] not free -[scope_exit instr_1] -[visit_exp `instr_1*`] -[visit_id instr_1*] no dims -[visit_id instr_1*] -[visit_exp instr_2*{instr_2 <- `instr_2*`}] -[scope_enter instr_2] -[visit_exp instr_2] -[visit_id instr_2] not free -[visit_id instr_2] not free -[scope_exit instr_2] -[visit_exp `instr_2*`] -[visit_id instr_2*] no dims -[visit_id instr_2*] -[visit_exp $free_blocktype(blocktype) +++ $free_block(instr_1*{instr_1 <- `instr_1*`}) +++ $free_block(instr_2*{instr_2 <- `instr_2*`})] -[visit_exp $free_blocktype(blocktype) +++ $free_block(instr_1*{instr_1 <- `instr_1*`})] -[visit_exp $free_blocktype(blocktype)] -[visit_exp blocktype] -[visit_id blocktype] not free -[visit_exp $free_block(instr_1*{instr_1 <- `instr_1*`})] -[visit_exp instr_1*{instr_1 <- `instr_1*`}] -[scope_enter instr_1] -[visit_exp instr_1] -[visit_id instr_1] not free -[visit_id instr_1] not free -[scope_exit instr_1] -[visit_exp `instr_1*`] -[visit_id instr_1*] not free -[visit_id instr_1*] no dims -[visit_exp $free_block(instr_2*{instr_2 <- `instr_2*`})] -[visit_exp instr_2*{instr_2 <- `instr_2*`}] -[scope_enter instr_2] -[visit_exp instr_2] -[visit_id instr_2] not free -[visit_id instr_2] not free -[scope_exit instr_2] -[visit_exp `instr_2*`] -[visit_id instr_2*] not free -[visit_id instr_2*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - 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*`}) -[check_dims] labelidx -[visit_exp `BR`_instr(labelidx)] -[visit_exp (labelidx)] -[visit_exp labelidx] -[visit_id labelidx] -[visit_exp $free_labelidx(labelidx)] -[visit_exp labelidx] -[visit_id labelidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{labelidx : labelidx}(`BR`_instr(labelidx)) = $free_labelidx(labelidx) -[check_dims] labelidx -[visit_exp `BR_IF`_instr(labelidx)] -[visit_exp (labelidx)] -[visit_exp labelidx] -[visit_id labelidx] -[visit_exp $free_labelidx(labelidx)] -[visit_exp labelidx] -[visit_id labelidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{labelidx : labelidx}(`BR_IF`_instr(labelidx)) = $free_labelidx(labelidx) -[check_dims] labelidx labelidx' -[visit_exp `BR_TABLE`_instr(labelidx*{labelidx <- `labelidx*`}, labelidx')] -[visit_exp (labelidx*{labelidx <- `labelidx*`}, labelidx')] -[visit_exp labelidx*{labelidx <- `labelidx*`}] -[scope_enter labelidx] -[visit_exp labelidx] -[visit_id labelidx] not free -[visit_id labelidx] not free -[scope_exit labelidx] -[visit_exp `labelidx*`] -[visit_id labelidx*] no dims -[visit_id labelidx*] -[visit_exp labelidx'] -[visit_id labelidx'] -[visit_exp $free_list($free_labelidx(labelidx)*{labelidx <- `labelidx*`}) +++ $free_labelidx(labelidx')] -[visit_exp $free_list($free_labelidx(labelidx)*{labelidx <- `labelidx*`})] -[visit_exp $free_labelidx(labelidx)*{labelidx <- `labelidx*`}] -[scope_enter labelidx] -[visit_exp $free_labelidx(labelidx)] -[visit_exp labelidx] -[visit_id labelidx] not free -[visit_id labelidx] not free -[scope_exit labelidx] -[visit_exp `labelidx*`] -[visit_id labelidx*] not free -[visit_id labelidx*] no dims -[visit_exp $free_labelidx(labelidx')] -[visit_exp labelidx'] -[visit_id labelidx'] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{`labelidx*` : labelidx*, labelidx' : labelidx}(`BR_TABLE`_instr(labelidx*{labelidx <- `labelidx*`}, labelidx')) = $free_list($free_labelidx(labelidx)*{labelidx <- `labelidx*`}) +++ $free_labelidx(labelidx') -[check_dims] labelidx -[visit_exp `BR_ON_NULL`_instr(labelidx)] -[visit_exp (labelidx)] -[visit_exp labelidx] -[visit_id labelidx] -[visit_exp $free_labelidx(labelidx)] -[visit_exp labelidx] -[visit_id labelidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{labelidx : labelidx}(`BR_ON_NULL`_instr(labelidx)) = $free_labelidx(labelidx) -[check_dims] labelidx -[visit_exp `BR_ON_NON_NULL`_instr(labelidx)] -[visit_exp (labelidx)] -[visit_exp labelidx] -[visit_id labelidx] -[visit_exp $free_labelidx(labelidx)] -[visit_exp labelidx] -[visit_id labelidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{labelidx : labelidx}(`BR_ON_NON_NULL`_instr(labelidx)) = $free_labelidx(labelidx) -[check_dims] labelidx reftype_1 reftype_2 -[visit_exp `BR_ON_CAST`_instr(labelidx, reftype_1, reftype_2)] -[visit_exp (labelidx, reftype_1, reftype_2)] -[visit_exp labelidx] -[visit_id labelidx] -[visit_exp reftype_1] -[visit_id reftype_1] -[visit_exp reftype_2] -[visit_id reftype_2] -[visit_exp $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2)] -[visit_exp $free_labelidx(labelidx) +++ $free_reftype(reftype_1)] -[visit_exp $free_labelidx(labelidx)] -[visit_exp labelidx] -[visit_id labelidx] not free -[visit_exp $free_reftype(reftype_1)] -[visit_exp reftype_1] -[visit_id reftype_1] not free -[visit_exp $free_reftype(reftype_2)] -[visit_exp reftype_2] -[visit_id reftype_2] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - 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) -[check_dims] labelidx reftype_1 reftype_2 -[visit_exp `BR_ON_CAST_FAIL`_instr(labelidx, reftype_1, reftype_2)] -[visit_exp (labelidx, reftype_1, reftype_2)] -[visit_exp labelidx] -[visit_id labelidx] -[visit_exp reftype_1] -[visit_id reftype_1] -[visit_exp reftype_2] -[visit_id reftype_2] -[visit_exp $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2)] -[visit_exp $free_labelidx(labelidx) +++ $free_reftype(reftype_1)] -[visit_exp $free_labelidx(labelidx)] -[visit_exp labelidx] -[visit_id labelidx] not free -[visit_exp $free_reftype(reftype_1)] -[visit_exp reftype_1] -[visit_id reftype_1] not free -[visit_exp $free_reftype(reftype_2)] -[visit_exp reftype_2] -[visit_id reftype_2] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - 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) -[check_dims] funcidx -[visit_exp `CALL`_instr(funcidx)] -[visit_exp (funcidx)] -[visit_exp funcidx] -[visit_id funcidx] -[visit_exp $free_funcidx(funcidx)] -[visit_exp funcidx] -[visit_id funcidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{funcidx : funcidx}(`CALL`_instr(funcidx)) = $free_funcidx(funcidx) -[check_dims] typeuse -[visit_exp `CALL_REF`_instr(typeuse)] -[visit_exp (typeuse)] -[visit_exp typeuse] -[visit_id typeuse] -[visit_exp $free_typeuse(typeuse)] -[visit_exp typeuse] -[visit_id typeuse] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{typeuse : typeuse}(`CALL_REF`_instr(typeuse)) = $free_typeuse(typeuse) -[check_dims] tableidx typeuse -[visit_exp `CALL_INDIRECT`_instr(tableidx, typeuse)] -[visit_exp (tableidx, typeuse)] -[visit_exp tableidx] -[visit_id tableidx] -[visit_exp typeuse] -[visit_id typeuse] -[visit_exp $free_tableidx(tableidx) +++ $free_typeuse(typeuse)] -[visit_exp $free_tableidx(tableidx)] -[visit_exp tableidx] -[visit_id tableidx] not free -[visit_exp $free_typeuse(typeuse)] -[visit_exp typeuse] -[visit_id typeuse] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{tableidx : tableidx, typeuse : typeuse}(`CALL_INDIRECT`_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) -[check_dims] -[visit_exp `RETURN`_instr] -[visit_exp ()] -[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr(`RETURN`_instr) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} -[check_dims] funcidx -[visit_exp `RETURN_CALL`_instr(funcidx)] -[visit_exp (funcidx)] -[visit_exp funcidx] -[visit_id funcidx] -[visit_exp $free_funcidx(funcidx)] -[visit_exp funcidx] -[visit_id funcidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{funcidx : funcidx}(`RETURN_CALL`_instr(funcidx)) = $free_funcidx(funcidx) -[check_dims] typeuse -[visit_exp `RETURN_CALL_REF`_instr(typeuse)] -[visit_exp (typeuse)] -[visit_exp typeuse] -[visit_id typeuse] -[visit_exp $free_typeuse(typeuse)] -[visit_exp typeuse] -[visit_id typeuse] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{typeuse : typeuse}(`RETURN_CALL_REF`_instr(typeuse)) = $free_typeuse(typeuse) -[check_dims] tableidx typeuse -[visit_exp `RETURN_CALL_INDIRECT`_instr(tableidx, typeuse)] -[visit_exp (tableidx, typeuse)] -[visit_exp tableidx] -[visit_id tableidx] -[visit_exp typeuse] -[visit_id typeuse] -[visit_exp $free_tableidx(tableidx) +++ $free_typeuse(typeuse)] -[visit_exp $free_tableidx(tableidx)] -[visit_exp tableidx] -[visit_id tableidx] not free -[visit_exp $free_typeuse(typeuse)] -[visit_exp typeuse] -[visit_id typeuse] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{tableidx : tableidx, typeuse : typeuse}(`RETURN_CALL_INDIRECT`_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) -[check_dims] numlit numtype -[visit_exp `CONST`_instr(numtype, numlit)] -[visit_exp (numtype, numlit)] -[visit_exp numtype] -[visit_id numtype] -[visit_exp numlit] -[visit_id numlit] -[visit_exp $free_numtype(numtype)] -[visit_exp numtype] -[visit_id numtype] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{numtype : numtype, numlit : num_(numtype)}(`CONST`_instr(numtype, numlit)) = $free_numtype(numtype) -[check_dims] numtype unop -[visit_exp `UNOP`_instr(numtype, unop)] -[visit_exp (numtype, unop)] -[visit_exp numtype] -[visit_id numtype] -[visit_exp unop] -[visit_id unop] -[visit_exp $free_numtype(numtype)] -[visit_exp numtype] -[visit_id numtype] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{numtype : numtype, unop : unop_(numtype)}(`UNOP`_instr(numtype, unop)) = $free_numtype(numtype) -[check_dims] binop numtype -[visit_exp `BINOP`_instr(numtype, binop)] -[visit_exp (numtype, binop)] -[visit_exp numtype] -[visit_id numtype] -[visit_exp binop] -[visit_id binop] -[visit_exp $free_numtype(numtype)] -[visit_exp numtype] -[visit_id numtype] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{numtype : numtype, binop : binop_(numtype)}(`BINOP`_instr(numtype, binop)) = $free_numtype(numtype) -[check_dims] numtype testop -[visit_exp `TESTOP`_instr(numtype, testop)] -[visit_exp (numtype, testop)] -[visit_exp numtype] -[visit_id numtype] -[visit_exp testop] -[visit_id testop] -[visit_exp $free_numtype(numtype)] -[visit_exp numtype] -[visit_id numtype] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{numtype : numtype, testop : testop_(numtype)}(`TESTOP`_instr(numtype, testop)) = $free_numtype(numtype) -[check_dims] numtype relop -[visit_exp `RELOP`_instr(numtype, relop)] -[visit_exp (numtype, relop)] -[visit_exp numtype] -[visit_id numtype] -[visit_exp relop] -[visit_id relop] -[visit_exp $free_numtype(numtype)] -[visit_exp numtype] -[visit_id numtype] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{numtype : numtype, relop : relop_(numtype)}(`RELOP`_instr(numtype, relop)) = $free_numtype(numtype) -[check_dims] cvtop numtype_1 numtype_2 -[visit_exp `CVTOP`_instr(numtype_1, numtype_2, cvtop)] -[visit_exp (numtype_1, numtype_2, cvtop)] -[visit_exp numtype_1] -[visit_id numtype_1] -[visit_exp numtype_2] -[visit_id numtype_2] -[visit_exp cvtop] -[visit_id cvtop] -[visit_exp $free_numtype(numtype_1) +++ $free_numtype(numtype_2)] -[visit_exp $free_numtype(numtype_1)] -[visit_exp numtype_1] -[visit_id numtype_1] not free -[visit_exp $free_numtype(numtype_2)] -[visit_exp numtype_2] -[visit_id numtype_2] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - 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) -[check_dims] veclit vectype -[visit_exp `VCONST`_instr(vectype, veclit)] -[visit_exp (vectype, veclit)] -[visit_exp vectype] -[visit_id vectype] -[visit_exp veclit] -[visit_id veclit] -[visit_exp $free_vectype(vectype)] -[visit_exp vectype] -[visit_id vectype] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{vectype : vectype, veclit : vec_(vectype)}(`VCONST`_instr(vectype, veclit)) = $free_vectype(vectype) -[check_dims] vectype vvunop -[visit_exp `VVUNOP`_instr(vectype, vvunop)] -[visit_exp (vectype, vvunop)] -[visit_exp vectype] -[visit_id vectype] -[visit_exp vvunop] -[visit_id vvunop] -[visit_exp $free_vectype(vectype)] -[visit_exp vectype] -[visit_id vectype] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{vectype : vectype, vvunop : vvunop}(`VVUNOP`_instr(vectype, vvunop)) = $free_vectype(vectype) -[check_dims] vectype vvbinop -[visit_exp `VVBINOP`_instr(vectype, vvbinop)] -[visit_exp (vectype, vvbinop)] -[visit_exp vectype] -[visit_id vectype] -[visit_exp vvbinop] -[visit_id vvbinop] -[visit_exp $free_vectype(vectype)] -[visit_exp vectype] -[visit_id vectype] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{vectype : vectype, vvbinop : vvbinop}(`VVBINOP`_instr(vectype, vvbinop)) = $free_vectype(vectype) -[check_dims] vectype vvternop -[visit_exp `VVTERNOP`_instr(vectype, vvternop)] -[visit_exp (vectype, vvternop)] -[visit_exp vectype] -[visit_id vectype] -[visit_exp vvternop] -[visit_id vvternop] -[visit_exp $free_vectype(vectype)] -[visit_exp vectype] -[visit_id vectype] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{vectype : vectype, vvternop : vvternop}(`VVTERNOP`_instr(vectype, vvternop)) = $free_vectype(vectype) -[check_dims] vectype vvtestop -[visit_exp `VVTESTOP`_instr(vectype, vvtestop)] -[visit_exp (vectype, vvtestop)] -[visit_exp vectype] -[visit_id vectype] -[visit_exp vvtestop] -[visit_id vvtestop] -[visit_exp $free_vectype(vectype)] -[visit_exp vectype] -[visit_id vectype] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{vectype : vectype, vvtestop : vvtestop}(`VVTESTOP`_instr(vectype, vvtestop)) = $free_vectype(vectype) -[check_dims] shape vunop -[visit_exp `VUNOP`_instr(shape, vunop)] -[visit_exp (shape, vunop)] -[visit_exp shape] -[visit_id shape] -[visit_exp vunop] -[visit_id vunop] -[visit_exp $free_shape(shape)] -[visit_exp shape] -[visit_id shape] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{shape : shape, vunop : vunop_(shape)}(`VUNOP`_instr(shape, vunop)) = $free_shape(shape) -[check_dims] shape vbinop -[visit_exp `VBINOP`_instr(shape, vbinop)] -[visit_exp (shape, vbinop)] -[visit_exp shape] -[visit_id shape] -[visit_exp vbinop] -[visit_id vbinop] -[visit_exp $free_shape(shape)] -[visit_exp shape] -[visit_id shape] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{shape : shape, vbinop : vbinop_(shape)}(`VBINOP`_instr(shape, vbinop)) = $free_shape(shape) -[check_dims] shape vternop -[visit_exp `VTERNOP`_instr(shape, vternop)] -[visit_exp (shape, vternop)] -[visit_exp shape] -[visit_id shape] -[visit_exp vternop] -[visit_id vternop] -[visit_exp $free_shape(shape)] -[visit_exp shape] -[visit_id shape] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{shape : shape, vternop : vternop_(shape)}(`VTERNOP`_instr(shape, vternop)) = $free_shape(shape) -[check_dims] shape vtestop -[visit_exp `VTESTOP`_instr(shape, vtestop)] -[visit_exp (shape, vtestop)] -[visit_exp shape] -[visit_id shape] -[visit_exp vtestop] -[visit_id vtestop] -[visit_exp $free_shape(shape)] -[visit_exp shape] -[visit_id shape] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{shape : shape, vtestop : vtestop_(shape)}(`VTESTOP`_instr(shape, vtestop)) = $free_shape(shape) -[check_dims] shape vrelop -[visit_exp `VRELOP`_instr(shape, vrelop)] -[visit_exp (shape, vrelop)] -[visit_exp shape] -[visit_id shape] -[visit_exp vrelop] -[visit_id vrelop] -[visit_exp $free_shape(shape)] -[visit_exp shape] -[visit_id shape] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{shape : shape, vrelop : vrelop_(shape)}(`VRELOP`_instr(shape, vrelop)) = $free_shape(shape) -[check_dims] ishape vshiftop -[visit_exp `VSHIFTOP`_instr(ishape, vshiftop)] -[visit_exp (ishape, vshiftop)] -[visit_exp ishape] -[visit_id ishape] -[visit_exp vshiftop] -[visit_id vshiftop] -[visit_exp $free_shape(ishape!`%`_ishape.0)] -[visit_exp ishape!`%`_ishape.0] -[visit_exp ishape!`%`_ishape] -[visit_exp ishape] -[visit_id ishape] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{ishape : ishape, vshiftop : vshiftop_(ishape)}(`VSHIFTOP`_instr(ishape, vshiftop)) = $free_shape(ishape!`%`_ishape.0) -[check_dims] ishape -[visit_exp `VBITMASK`_instr(ishape)] -[visit_exp (ishape)] -[visit_exp ishape] -[visit_id ishape] -[visit_exp $free_shape(ishape!`%`_ishape.0)] -[visit_exp ishape!`%`_ishape.0] -[visit_exp ishape!`%`_ishape] -[visit_exp ishape] -[visit_id ishape] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{ishape : ishape}(`VBITMASK`_instr(ishape)) = $free_shape(ishape!`%`_ishape.0) -[check_dims] bshape vswizzlop -[visit_exp `VSWIZZLOP`_instr(bshape, vswizzlop)] -[visit_exp (bshape, vswizzlop)] -[visit_exp bshape] -[visit_id bshape] -[visit_exp vswizzlop] -[visit_id vswizzlop] -[visit_exp $free_shape(bshape!`%`_bshape.0)] -[visit_exp bshape!`%`_bshape.0] -[visit_exp bshape!`%`_bshape] -[visit_exp bshape] -[visit_id bshape] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{bshape : bshape, vswizzlop : vswizzlop_(bshape)}(`VSWIZZLOP`_instr(bshape, vswizzlop)) = $free_shape(bshape!`%`_bshape.0) -[check_dims] bshape laneidx -[visit_exp `VSHUFFLE`_instr(bshape, laneidx*{laneidx <- `laneidx*`})] -[visit_exp (bshape, laneidx*{laneidx <- `laneidx*`})] -[visit_exp bshape] -[visit_id bshape] -[visit_exp laneidx*{laneidx <- `laneidx*`}] -[scope_enter laneidx] -[visit_exp laneidx] -[visit_id laneidx] not free -[visit_id laneidx] not free -[scope_exit laneidx] -[visit_exp `laneidx*`] -[visit_id laneidx*] no dims -[visit_id laneidx*] -[visit_exp $free_shape(bshape!`%`_bshape.0)] -[visit_exp bshape!`%`_bshape.0] -[visit_exp bshape!`%`_bshape] -[visit_exp bshape] -[visit_id bshape] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{bshape : bshape, `laneidx*` : laneidx*}(`VSHUFFLE`_instr(bshape, laneidx*{laneidx <- `laneidx*`})) = $free_shape(bshape!`%`_bshape.0) -[check_dims] ishape_1 ishape_2 vextunop -[visit_exp `VEXTUNOP`_instr(ishape_1, ishape_2, vextunop)] -[visit_exp (ishape_1, ishape_2, vextunop)] -[visit_exp ishape_1] -[visit_id ishape_1] -[visit_exp ishape_2] -[visit_id ishape_2] -[visit_exp vextunop] -[visit_id vextunop] -[visit_exp $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0)] -[visit_exp $free_shape(ishape_1!`%`_ishape.0)] -[visit_exp ishape_1!`%`_ishape.0] -[visit_exp ishape_1!`%`_ishape] -[visit_exp ishape_1] -[visit_id ishape_1] not free -[visit_exp $free_shape(ishape_2!`%`_ishape.0)] -[visit_exp ishape_2!`%`_ishape.0] -[visit_exp ishape_2!`%`_ishape] -[visit_exp ishape_2] -[visit_id ishape_2] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - 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) -[check_dims] ishape_1 ishape_2 vextbinop -[visit_exp `VEXTBINOP`_instr(ishape_1, ishape_2, vextbinop)] -[visit_exp (ishape_1, ishape_2, vextbinop)] -[visit_exp ishape_1] -[visit_id ishape_1] -[visit_exp ishape_2] -[visit_id ishape_2] -[visit_exp vextbinop] -[visit_id vextbinop] -[visit_exp $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0)] -[visit_exp $free_shape(ishape_1!`%`_ishape.0)] -[visit_exp ishape_1!`%`_ishape.0] -[visit_exp ishape_1!`%`_ishape] -[visit_exp ishape_1] -[visit_id ishape_1] not free -[visit_exp $free_shape(ishape_2!`%`_ishape.0)] -[visit_exp ishape_2!`%`_ishape.0] -[visit_exp ishape_2!`%`_ishape] -[visit_exp ishape_2] -[visit_id ishape_2] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - 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) -[check_dims] ishape_1 ishape_2 vextternop -[visit_exp `VEXTTERNOP`_instr(ishape_1, ishape_2, vextternop)] -[visit_exp (ishape_1, ishape_2, vextternop)] -[visit_exp ishape_1] -[visit_id ishape_1] -[visit_exp ishape_2] -[visit_id ishape_2] -[visit_exp vextternop] -[visit_id vextternop] -[visit_exp $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0)] -[visit_exp $free_shape(ishape_1!`%`_ishape.0)] -[visit_exp ishape_1!`%`_ishape.0] -[visit_exp ishape_1!`%`_ishape] -[visit_exp ishape_1] -[visit_id ishape_1] not free -[visit_exp $free_shape(ishape_2!`%`_ishape.0)] -[visit_exp ishape_2!`%`_ishape.0] -[visit_exp ishape_2!`%`_ishape] -[visit_exp ishape_2] -[visit_id ishape_2] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - 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) -[check_dims] ishape_1 ishape_2 sx -[visit_exp `VNARROW`_instr(ishape_1, ishape_2, sx)] -[visit_exp (ishape_1, ishape_2, sx)] -[visit_exp ishape_1] -[visit_id ishape_1] -[visit_exp ishape_2] -[visit_id ishape_2] -[visit_exp sx] -[visit_id sx] -[visit_exp $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0)] -[visit_exp $free_shape(ishape_1!`%`_ishape.0)] -[visit_exp ishape_1!`%`_ishape.0] -[visit_exp ishape_1!`%`_ishape] -[visit_exp ishape_1] -[visit_id ishape_1] not free -[visit_exp $free_shape(ishape_2!`%`_ishape.0)] -[visit_exp ishape_2!`%`_ishape.0] -[visit_exp ishape_2!`%`_ishape] -[visit_exp ishape_2] -[visit_id ishape_2] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - 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) -[check_dims] shape_1 shape_2 vcvtop -[visit_exp `VCVTOP`_instr(shape_1, shape_2, vcvtop)] -[visit_exp (shape_1, shape_2, vcvtop)] -[visit_exp shape_1] -[visit_id shape_1] -[visit_exp shape_2] -[visit_id shape_2] -[visit_exp vcvtop] -[visit_id vcvtop] -[visit_exp $free_shape(shape_1) +++ $free_shape(shape_2)] -[visit_exp $free_shape(shape_1)] -[visit_exp shape_1] -[visit_id shape_1] not free -[visit_exp $free_shape(shape_2)] -[visit_exp shape_2] -[visit_id shape_2] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - 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) -[check_dims] shape -[visit_exp `VSPLAT`_instr(shape)] -[visit_exp (shape)] -[visit_exp shape] -[visit_id shape] -[visit_exp $free_shape(shape)] -[visit_exp shape] -[visit_id shape] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{shape : shape}(`VSPLAT`_instr(shape)) = $free_shape(shape) -[check_dims] laneidx shape sx -[visit_exp `VEXTRACT_LANE`_instr(shape, sx?{sx <- `sx?`}, laneidx)] -[visit_exp (shape, sx?{sx <- `sx?`}, laneidx)] -[visit_exp shape] -[visit_id shape] -[visit_exp sx?{sx <- `sx?`}] -[scope_enter sx] -[visit_exp sx] -[visit_id sx] not free -[visit_id sx] not free -[scope_exit sx] -[visit_exp `sx?`] -[visit_id sx?] no dims -[visit_id sx?] -[visit_exp laneidx] -[visit_id laneidx] -[visit_exp $free_shape(shape)] -[visit_exp shape] -[visit_id shape] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{shape : shape, `sx?` : sx?, laneidx : laneidx}(`VEXTRACT_LANE`_instr(shape, sx?{sx <- `sx?`}, laneidx)) = $free_shape(shape) -[check_dims] laneidx shape -[visit_exp `VREPLACE_LANE`_instr(shape, laneidx)] -[visit_exp (shape, laneidx)] -[visit_exp shape] -[visit_id shape] -[visit_exp laneidx] -[visit_id laneidx] -[visit_exp $free_shape(shape)] -[visit_exp shape] -[visit_id shape] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{shape : shape, laneidx : laneidx}(`VREPLACE_LANE`_instr(shape, laneidx)) = $free_shape(shape) -[check_dims] heaptype -[visit_exp `REF.NULL`_instr(heaptype)] -[visit_exp (heaptype)] -[visit_exp heaptype] -[visit_id heaptype] -[visit_exp $free_heaptype(heaptype)] -[visit_exp heaptype] -[visit_id heaptype] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{heaptype : heaptype}(`REF.NULL`_instr(heaptype)) = $free_heaptype(heaptype) -[check_dims] -[visit_exp `REF.IS_NULL`_instr] -[visit_exp ()] -[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr(`REF.IS_NULL`_instr) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} -[check_dims] -[visit_exp `REF.AS_NON_NULL`_instr] -[visit_exp ()] -[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr(`REF.AS_NON_NULL`_instr) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} -[check_dims] -[visit_exp `REF.EQ`_instr] -[visit_exp ()] -[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr(`REF.EQ`_instr) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} -[check_dims] reftype -[visit_exp `REF.TEST`_instr(reftype)] -[visit_exp (reftype)] -[visit_exp reftype] -[visit_id reftype] -[visit_exp $free_reftype(reftype)] -[visit_exp reftype] -[visit_id reftype] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{reftype : reftype}(`REF.TEST`_instr(reftype)) = $free_reftype(reftype) -[check_dims] reftype -[visit_exp `REF.CAST`_instr(reftype)] -[visit_exp (reftype)] -[visit_exp reftype] -[visit_id reftype] -[visit_exp $free_reftype(reftype)] -[visit_exp reftype] -[visit_id reftype] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{reftype : reftype}(`REF.CAST`_instr(reftype)) = $free_reftype(reftype) -[check_dims] funcidx -[visit_exp `REF.FUNC`_instr(funcidx)] -[visit_exp (funcidx)] -[visit_exp funcidx] -[visit_id funcidx] -[visit_exp $free_funcidx(funcidx)] -[visit_exp funcidx] -[visit_id funcidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{funcidx : funcidx}(`REF.FUNC`_instr(funcidx)) = $free_funcidx(funcidx) -[check_dims] -[visit_exp `REF.I31`_instr] -[visit_exp ()] -[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr(`REF.I31`_instr) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} -[check_dims] sx -[visit_exp `I31.GET`_instr(sx)] -[visit_exp (sx)] -[visit_exp sx] -[visit_id sx] -[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{sx : sx}(`I31.GET`_instr(sx)) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} -[check_dims] typeidx -[visit_exp `STRUCT.NEW`_instr(typeidx)] -[visit_exp (typeidx)] -[visit_exp typeidx] -[visit_id typeidx] -[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{typeidx : typeidx}(`STRUCT.NEW`_instr(typeidx)) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} -[check_dims] typeidx -[visit_exp `STRUCT.NEW_DEFAULT`_instr(typeidx)] -[visit_exp (typeidx)] -[visit_exp typeidx] -[visit_id typeidx] -[visit_exp $free_typeidx(typeidx)] -[visit_exp typeidx] -[visit_id typeidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{typeidx : typeidx}(`STRUCT.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) -[check_dims] sx typeidx u32 -[visit_exp `STRUCT.GET`_instr(sx?{sx <- `sx?`}, typeidx, u32)] -[visit_exp (sx?{sx <- `sx?`}, typeidx, u32)] -[visit_exp sx?{sx <- `sx?`}] -[scope_enter sx] -[visit_exp sx] -[visit_id sx] not free -[visit_id sx] not free -[scope_exit sx] -[visit_exp `sx?`] -[visit_id sx?] no dims -[visit_id sx?] -[visit_exp typeidx] -[visit_id typeidx] -[visit_exp u32] -[visit_id u32] -[visit_exp $free_typeidx(typeidx)] -[visit_exp typeidx] -[visit_id typeidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{`sx?` : sx?, typeidx : typeidx, u32 : u32}(`STRUCT.GET`_instr(sx?{sx <- `sx?`}, typeidx, u32)) = $free_typeidx(typeidx) -[check_dims] typeidx u32 -[visit_exp `STRUCT.SET`_instr(typeidx, u32)] -[visit_exp (typeidx, u32)] -[visit_exp typeidx] -[visit_id typeidx] -[visit_exp u32] -[visit_id u32] -[visit_exp $free_typeidx(typeidx)] -[visit_exp typeidx] -[visit_id typeidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{typeidx : typeidx, u32 : u32}(`STRUCT.SET`_instr(typeidx, u32)) = $free_typeidx(typeidx) -[check_dims] typeidx -[visit_exp `ARRAY.NEW`_instr(typeidx)] -[visit_exp (typeidx)] -[visit_exp typeidx] -[visit_id typeidx] -[visit_exp $free_typeidx(typeidx)] -[visit_exp typeidx] -[visit_id typeidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{typeidx : typeidx}(`ARRAY.NEW`_instr(typeidx)) = $free_typeidx(typeidx) -[check_dims] typeidx -[visit_exp `ARRAY.NEW_DEFAULT`_instr(typeidx)] -[visit_exp (typeidx)] -[visit_exp typeidx] -[visit_id typeidx] -[visit_exp $free_typeidx(typeidx)] -[visit_exp typeidx] -[visit_id typeidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{typeidx : typeidx}(`ARRAY.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) -[check_dims] typeidx u32 -[visit_exp `ARRAY.NEW_FIXED`_instr(typeidx, u32)] -[visit_exp (typeidx, u32)] -[visit_exp typeidx] -[visit_id typeidx] -[visit_exp u32] -[visit_id u32] -[visit_exp $free_typeidx(typeidx)] -[visit_exp typeidx] -[visit_id typeidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{typeidx : typeidx, u32 : u32}(`ARRAY.NEW_FIXED`_instr(typeidx, u32)) = $free_typeidx(typeidx) -[check_dims] dataidx typeidx -[visit_exp `ARRAY.NEW_DATA`_instr(typeidx, dataidx)] -[visit_exp (typeidx, dataidx)] -[visit_exp typeidx] -[visit_id typeidx] -[visit_exp dataidx] -[visit_id dataidx] -[visit_exp $free_typeidx(typeidx) +++ $free_dataidx(dataidx)] -[visit_exp $free_typeidx(typeidx)] -[visit_exp typeidx] -[visit_id typeidx] not free -[visit_exp $free_dataidx(dataidx)] -[visit_exp dataidx] -[visit_id dataidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{typeidx : typeidx, dataidx : dataidx}(`ARRAY.NEW_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) -[check_dims] elemidx typeidx -[visit_exp `ARRAY.NEW_ELEM`_instr(typeidx, elemidx)] -[visit_exp (typeidx, elemidx)] -[visit_exp typeidx] -[visit_id typeidx] -[visit_exp elemidx] -[visit_id elemidx] -[visit_exp $free_typeidx(typeidx) +++ $free_elemidx(elemidx)] -[visit_exp $free_typeidx(typeidx)] -[visit_exp typeidx] -[visit_id typeidx] not free -[visit_exp $free_elemidx(elemidx)] -[visit_exp elemidx] -[visit_id elemidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{typeidx : typeidx, elemidx : elemidx}(`ARRAY.NEW_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) -[check_dims] sx typeidx -[visit_exp `ARRAY.GET`_instr(sx?{sx <- `sx?`}, typeidx)] -[visit_exp (sx?{sx <- `sx?`}, typeidx)] -[visit_exp sx?{sx <- `sx?`}] -[scope_enter sx] -[visit_exp sx] -[visit_id sx] not free -[visit_id sx] not free -[scope_exit sx] -[visit_exp `sx?`] -[visit_id sx?] no dims -[visit_id sx?] -[visit_exp typeidx] -[visit_id typeidx] -[visit_exp $free_typeidx(typeidx)] -[visit_exp typeidx] -[visit_id typeidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{`sx?` : sx?, typeidx : typeidx}(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, typeidx)) = $free_typeidx(typeidx) -[check_dims] typeidx -[visit_exp `ARRAY.SET`_instr(typeidx)] -[visit_exp (typeidx)] -[visit_exp typeidx] -[visit_id typeidx] -[visit_exp $free_typeidx(typeidx)] -[visit_exp typeidx] -[visit_id typeidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{typeidx : typeidx}(`ARRAY.SET`_instr(typeidx)) = $free_typeidx(typeidx) -[check_dims] -[visit_exp `ARRAY.LEN`_instr] -[visit_exp ()] -[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr(`ARRAY.LEN`_instr) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} -[check_dims] typeidx -[visit_exp `ARRAY.FILL`_instr(typeidx)] -[visit_exp (typeidx)] -[visit_exp typeidx] -[visit_id typeidx] -[visit_exp $free_typeidx(typeidx)] -[visit_exp typeidx] -[visit_id typeidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{typeidx : typeidx}(`ARRAY.FILL`_instr(typeidx)) = $free_typeidx(typeidx) -[check_dims] typeidx_1 typeidx_2 -[visit_exp `ARRAY.COPY`_instr(typeidx_1, typeidx_2)] -[visit_exp (typeidx_1, typeidx_2)] -[visit_exp typeidx_1] -[visit_id typeidx_1] -[visit_exp typeidx_2] -[visit_id typeidx_2] -[visit_exp $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2)] -[visit_exp $free_typeidx(typeidx_1)] -[visit_exp typeidx_1] -[visit_id typeidx_1] not free -[visit_exp $free_typeidx(typeidx_2)] -[visit_exp typeidx_2] -[visit_id typeidx_2] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{typeidx_1 : typeidx, typeidx_2 : typeidx}(`ARRAY.COPY`_instr(typeidx_1, typeidx_2)) = $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2) -[check_dims] dataidx typeidx -[visit_exp `ARRAY.INIT_DATA`_instr(typeidx, dataidx)] -[visit_exp (typeidx, dataidx)] -[visit_exp typeidx] -[visit_id typeidx] -[visit_exp dataidx] -[visit_id dataidx] -[visit_exp $free_typeidx(typeidx) +++ $free_dataidx(dataidx)] -[visit_exp $free_typeidx(typeidx)] -[visit_exp typeidx] -[visit_id typeidx] not free -[visit_exp $free_dataidx(dataidx)] -[visit_exp dataidx] -[visit_id dataidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{typeidx : typeidx, dataidx : dataidx}(`ARRAY.INIT_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) -[check_dims] elemidx typeidx -[visit_exp `ARRAY.INIT_ELEM`_instr(typeidx, elemidx)] -[visit_exp (typeidx, elemidx)] -[visit_exp typeidx] -[visit_id typeidx] -[visit_exp elemidx] -[visit_id elemidx] -[visit_exp $free_typeidx(typeidx) +++ $free_elemidx(elemidx)] -[visit_exp $free_typeidx(typeidx)] -[visit_exp typeidx] -[visit_id typeidx] not free -[visit_exp $free_elemidx(elemidx)] -[visit_exp elemidx] -[visit_id elemidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{typeidx : typeidx, elemidx : elemidx}(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) -[check_dims] -[visit_exp `EXTERN.CONVERT_ANY`_instr] -[visit_exp ()] -[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr(`EXTERN.CONVERT_ANY`_instr) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} -[check_dims] -[visit_exp `ANY.CONVERT_EXTERN`_instr] -[visit_exp ()] -[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr(`ANY.CONVERT_EXTERN`_instr) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} -[check_dims] localidx -[visit_exp `LOCAL.GET`_instr(localidx)] -[visit_exp (localidx)] -[visit_exp localidx] -[visit_id localidx] -[visit_exp $free_localidx(localidx)] -[visit_exp localidx] -[visit_id localidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{localidx : localidx}(`LOCAL.GET`_instr(localidx)) = $free_localidx(localidx) -[check_dims] localidx -[visit_exp `LOCAL.SET`_instr(localidx)] -[visit_exp (localidx)] -[visit_exp localidx] -[visit_id localidx] -[visit_exp $free_localidx(localidx)] -[visit_exp localidx] -[visit_id localidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{localidx : localidx}(`LOCAL.SET`_instr(localidx)) = $free_localidx(localidx) -[check_dims] localidx -[visit_exp `LOCAL.TEE`_instr(localidx)] -[visit_exp (localidx)] -[visit_exp localidx] -[visit_id localidx] -[visit_exp $free_localidx(localidx)] -[visit_exp localidx] -[visit_id localidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{localidx : localidx}(`LOCAL.TEE`_instr(localidx)) = $free_localidx(localidx) -[check_dims] globalidx -[visit_exp `GLOBAL.GET`_instr(globalidx)] -[visit_exp (globalidx)] -[visit_exp globalidx] -[visit_id globalidx] -[visit_exp $free_globalidx(globalidx)] -[visit_exp globalidx] -[visit_id globalidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{globalidx : globalidx}(`GLOBAL.GET`_instr(globalidx)) = $free_globalidx(globalidx) -[check_dims] globalidx -[visit_exp `GLOBAL.SET`_instr(globalidx)] -[visit_exp (globalidx)] -[visit_exp globalidx] -[visit_id globalidx] -[visit_exp $free_globalidx(globalidx)] -[visit_exp globalidx] -[visit_id globalidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{globalidx : globalidx}(`GLOBAL.SET`_instr(globalidx)) = $free_globalidx(globalidx) -[check_dims] tableidx -[visit_exp `TABLE.GET`_instr(tableidx)] -[visit_exp (tableidx)] -[visit_exp tableidx] -[visit_id tableidx] -[visit_exp $free_tableidx(tableidx)] -[visit_exp tableidx] -[visit_id tableidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{tableidx : tableidx}(`TABLE.GET`_instr(tableidx)) = $free_tableidx(tableidx) -[check_dims] tableidx -[visit_exp `TABLE.SET`_instr(tableidx)] -[visit_exp (tableidx)] -[visit_exp tableidx] -[visit_id tableidx] -[visit_exp $free_tableidx(tableidx)] -[visit_exp tableidx] -[visit_id tableidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{tableidx : tableidx}(`TABLE.SET`_instr(tableidx)) = $free_tableidx(tableidx) -[check_dims] tableidx -[visit_exp `TABLE.SIZE`_instr(tableidx)] -[visit_exp (tableidx)] -[visit_exp tableidx] -[visit_id tableidx] -[visit_exp $free_tableidx(tableidx)] -[visit_exp tableidx] -[visit_id tableidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{tableidx : tableidx}(`TABLE.SIZE`_instr(tableidx)) = $free_tableidx(tableidx) -[check_dims] tableidx -[visit_exp `TABLE.GROW`_instr(tableidx)] -[visit_exp (tableidx)] -[visit_exp tableidx] -[visit_id tableidx] -[visit_exp $free_tableidx(tableidx)] -[visit_exp tableidx] -[visit_id tableidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{tableidx : tableidx}(`TABLE.GROW`_instr(tableidx)) = $free_tableidx(tableidx) -[check_dims] tableidx -[visit_exp `TABLE.FILL`_instr(tableidx)] -[visit_exp (tableidx)] -[visit_exp tableidx] -[visit_id tableidx] -[visit_exp $free_tableidx(tableidx)] -[visit_exp tableidx] -[visit_id tableidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{tableidx : tableidx}(`TABLE.FILL`_instr(tableidx)) = $free_tableidx(tableidx) -[check_dims] tableidx_1 tableidx_2 -[visit_exp `TABLE.COPY`_instr(tableidx_1, tableidx_2)] -[visit_exp (tableidx_1, tableidx_2)] -[visit_exp tableidx_1] -[visit_id tableidx_1] -[visit_exp tableidx_2] -[visit_id tableidx_2] -[visit_exp $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2)] -[visit_exp $free_tableidx(tableidx_1)] -[visit_exp tableidx_1] -[visit_id tableidx_1] not free -[visit_exp $free_tableidx(tableidx_2)] -[visit_exp tableidx_2] -[visit_id tableidx_2] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{tableidx_1 : tableidx, tableidx_2 : tableidx}(`TABLE.COPY`_instr(tableidx_1, tableidx_2)) = $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2) -[check_dims] elemidx tableidx -[visit_exp `TABLE.INIT`_instr(tableidx, elemidx)] -[visit_exp (tableidx, elemidx)] -[visit_exp tableidx] -[visit_id tableidx] -[visit_exp elemidx] -[visit_id elemidx] -[visit_exp $free_tableidx(tableidx) +++ $free_elemidx(elemidx)] -[visit_exp $free_tableidx(tableidx)] -[visit_exp tableidx] -[visit_id tableidx] not free -[visit_exp $free_elemidx(elemidx)] -[visit_exp elemidx] -[visit_id elemidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{tableidx : tableidx, elemidx : elemidx}(`TABLE.INIT`_instr(tableidx, elemidx)) = $free_tableidx(tableidx) +++ $free_elemidx(elemidx) -[check_dims] elemidx -[visit_exp `ELEM.DROP`_instr(elemidx)] -[visit_exp (elemidx)] -[visit_exp elemidx] -[visit_id elemidx] -[visit_exp $free_elemidx(elemidx)] -[visit_exp elemidx] -[visit_id elemidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{elemidx : elemidx}(`ELEM.DROP`_instr(elemidx)) = $free_elemidx(elemidx) -[check_dims] loadop memarg memidx numtype -[visit_exp `LOAD`_instr(numtype, loadop?{loadop <- `loadop?`}, memidx, memarg)] -[visit_exp (numtype, loadop?{loadop <- `loadop?`}, memidx, memarg)] -[visit_exp numtype] -[visit_id numtype] -[visit_exp loadop?{loadop <- `loadop?`}] -[scope_enter loadop] -[visit_exp loadop] -[visit_id loadop] not free -[visit_id loadop] not free -[scope_exit loadop] -[visit_exp `loadop?`] -[visit_id loadop?] no dims -[visit_id loadop?] -[visit_exp memidx] -[visit_id memidx] -[visit_exp memarg] -[visit_id memarg] -[visit_exp $free_numtype(numtype) +++ $free_memidx(memidx)] -[visit_exp $free_numtype(numtype)] -[visit_exp numtype] -[visit_id numtype] not free -[visit_exp $free_memidx(memidx)] -[visit_exp memidx] -[visit_id memidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - 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) -[check_dims] memarg memidx numtype storeop -[visit_exp `STORE`_instr(numtype, storeop?{storeop <- `storeop?`}, memidx, memarg)] -[visit_exp (numtype, storeop?{storeop <- `storeop?`}, memidx, memarg)] -[visit_exp numtype] -[visit_id numtype] -[visit_exp storeop?{storeop <- `storeop?`}] -[scope_enter storeop] -[visit_exp storeop] -[visit_id storeop] not free -[visit_id storeop] not free -[scope_exit storeop] -[visit_exp `storeop?`] -[visit_id storeop?] no dims -[visit_id storeop?] -[visit_exp memidx] -[visit_id memidx] -[visit_exp memarg] -[visit_id memarg] -[visit_exp $free_numtype(numtype) +++ $free_memidx(memidx)] -[visit_exp $free_numtype(numtype)] -[visit_exp numtype] -[visit_id numtype] not free -[visit_exp $free_memidx(memidx)] -[visit_exp memidx] -[visit_id memidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - 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) -[check_dims] memarg memidx vectype vloadop -[visit_exp `VLOAD`_instr(vectype, vloadop?{vloadop <- `vloadop?`}, memidx, memarg)] -[visit_exp (vectype, vloadop?{vloadop <- `vloadop?`}, memidx, memarg)] -[visit_exp vectype] -[visit_id vectype] -[visit_exp vloadop?{vloadop <- `vloadop?`}] -[scope_enter vloadop] -[visit_exp vloadop] -[visit_id vloadop] not free -[visit_id vloadop] not free -[scope_exit vloadop] -[visit_exp `vloadop?`] -[visit_id vloadop?] no dims -[visit_id vloadop?] -[visit_exp memidx] -[visit_id memidx] -[visit_exp memarg] -[visit_id memarg] -[visit_exp $free_vectype(vectype) +++ $free_memidx(memidx)] -[visit_exp $free_vectype(vectype)] -[visit_exp vectype] -[visit_id vectype] not free -[visit_exp $free_memidx(memidx)] -[visit_exp memidx] -[visit_id memidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - 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) -[check_dims] laneidx memarg memidx sz vectype -[visit_exp `VLOAD_LANE`_instr(vectype, sz, memidx, memarg, laneidx)] -[visit_exp (vectype, sz, memidx, memarg, laneidx)] -[visit_exp vectype] -[visit_id vectype] -[visit_exp sz] -[visit_id sz] -[visit_exp memidx] -[visit_id memidx] -[visit_exp memarg] -[visit_id memarg] -[visit_exp laneidx] -[visit_id laneidx] -[visit_exp $free_vectype(vectype) +++ $free_memidx(memidx)] -[visit_exp $free_vectype(vectype)] -[visit_exp vectype] -[visit_id vectype] not free -[visit_exp $free_memidx(memidx)] -[visit_exp memidx] -[visit_id memidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - 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) -[check_dims] memarg memidx vectype -[visit_exp `VSTORE`_instr(vectype, memidx, memarg)] -[visit_exp (vectype, memidx, memarg)] -[visit_exp vectype] -[visit_id vectype] -[visit_exp memidx] -[visit_id memidx] -[visit_exp memarg] -[visit_id memarg] -[visit_exp $free_vectype(vectype) +++ $free_memidx(memidx)] -[visit_exp $free_vectype(vectype)] -[visit_exp vectype] -[visit_id vectype] not free -[visit_exp $free_memidx(memidx)] -[visit_exp memidx] -[visit_id memidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{vectype : vectype, memidx : memidx, memarg : memarg}(`VSTORE`_instr(vectype, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) -[check_dims] laneidx memarg memidx sz vectype -[visit_exp `VSTORE_LANE`_instr(vectype, sz, memidx, memarg, laneidx)] -[visit_exp (vectype, sz, memidx, memarg, laneidx)] -[visit_exp vectype] -[visit_id vectype] -[visit_exp sz] -[visit_id sz] -[visit_exp memidx] -[visit_id memidx] -[visit_exp memarg] -[visit_id memarg] -[visit_exp laneidx] -[visit_id laneidx] -[visit_exp $free_vectype(vectype) +++ $free_memidx(memidx)] -[visit_exp $free_vectype(vectype)] -[visit_exp vectype] -[visit_id vectype] not free -[visit_exp $free_memidx(memidx)] -[visit_exp memidx] -[visit_id memidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - 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) -[check_dims] memidx -[visit_exp `MEMORY.SIZE`_instr(memidx)] -[visit_exp (memidx)] -[visit_exp memidx] -[visit_id memidx] -[visit_exp $free_memidx(memidx)] -[visit_exp memidx] -[visit_id memidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{memidx : memidx}(`MEMORY.SIZE`_instr(memidx)) = $free_memidx(memidx) -[check_dims] memidx -[visit_exp `MEMORY.GROW`_instr(memidx)] -[visit_exp (memidx)] -[visit_exp memidx] -[visit_id memidx] -[visit_exp $free_memidx(memidx)] -[visit_exp memidx] -[visit_id memidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{memidx : memidx}(`MEMORY.GROW`_instr(memidx)) = $free_memidx(memidx) -[check_dims] memidx -[visit_exp `MEMORY.FILL`_instr(memidx)] -[visit_exp (memidx)] -[visit_exp memidx] -[visit_id memidx] -[visit_exp $free_memidx(memidx)] -[visit_exp memidx] -[visit_id memidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{memidx : memidx}(`MEMORY.FILL`_instr(memidx)) = $free_memidx(memidx) -[check_dims] memidx_1 memidx_2 -[visit_exp `MEMORY.COPY`_instr(memidx_1, memidx_2)] -[visit_exp (memidx_1, memidx_2)] -[visit_exp memidx_1] -[visit_id memidx_1] -[visit_exp memidx_2] -[visit_id memidx_2] -[visit_exp $free_memidx(memidx_1) +++ $free_memidx(memidx_2)] -[visit_exp $free_memidx(memidx_1)] -[visit_exp memidx_1] -[visit_id memidx_1] not free -[visit_exp $free_memidx(memidx_2)] -[visit_exp memidx_2] -[visit_id memidx_2] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{memidx_1 : memidx, memidx_2 : memidx}(`MEMORY.COPY`_instr(memidx_1, memidx_2)) = $free_memidx(memidx_1) +++ $free_memidx(memidx_2) -[check_dims] dataidx memidx -[visit_exp `MEMORY.INIT`_instr(memidx, dataidx)] -[visit_exp (memidx, dataidx)] -[visit_exp memidx] -[visit_id memidx] -[visit_exp dataidx] -[visit_id dataidx] -[visit_exp $free_memidx(memidx) +++ $free_dataidx(dataidx)] -[visit_exp $free_memidx(memidx)] -[visit_exp memidx] -[visit_id memidx] not free -[visit_exp $free_dataidx(dataidx)] -[visit_exp dataidx] -[visit_id dataidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{memidx : memidx, dataidx : dataidx}(`MEMORY.INIT`_instr(memidx, dataidx)) = $free_memidx(memidx) +++ $free_dataidx(dataidx) -[check_dims] dataidx -[visit_exp `DATA.DROP`_instr(dataidx)] -[visit_exp (dataidx)] -[visit_exp dataidx] -[visit_id dataidx] -[visit_exp $free_dataidx(dataidx)] -[visit_exp dataidx] -[visit_id dataidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_instr{dataidx : dataidx}(`DATA.DROP`_instr(dataidx)) = $free_dataidx(dataidx) -[check_dims] _ -DecD shift_labelidxs(labelidx*) : labelidx* -[visit_id _] not free -[check_dims] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $shift_labelidxs([]) = [] -[check_dims] labelidx' -[visit_exp [`%`_labelidx(0)] ++ labelidx'*{labelidx' <- `labelidx'*`}] -[visit_exp [`%`_labelidx(0)]] -[visit_exp `%`_labelidx(0)] -[visit_exp (0)] -[visit_exp 0] -[visit_exp labelidx'*{labelidx' <- `labelidx'*`}] -[scope_enter labelidx'] -[visit_exp labelidx'] -[visit_id labelidx'] not free -[visit_id labelidx'] not free -[scope_exit labelidx'] -[visit_exp `labelidx'*`] -[visit_id labelidx'*] no dims -[visit_id labelidx'*] -[visit_exp $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`})] -[visit_exp labelidx'*{labelidx' <- `labelidx'*`}] -[scope_enter labelidx'] -[visit_exp labelidx'] -[visit_id labelidx'] not free -[visit_id labelidx'] not free -[scope_exit labelidx'] -[visit_exp `labelidx'*`] -[visit_id labelidx'*] not free -[visit_id labelidx'*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) -[check_dims] labelidx labelidx' -[visit_exp [labelidx] ++ labelidx'*{labelidx' <- `labelidx'*`}] -[visit_exp [labelidx]] -[visit_exp labelidx] -[visit_id labelidx] -[visit_exp labelidx'*{labelidx' <- `labelidx'*`}] -[scope_enter labelidx'] -[visit_exp labelidx'] -[visit_id labelidx'] not free -[visit_id labelidx'] not free -[scope_exit labelidx'] -[visit_exp `labelidx'*`] -[visit_id labelidx'*] no dims -[visit_id labelidx'*] -[visit_exp [`%`_labelidx((((labelidx!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`})] -[visit_exp [`%`_labelidx((((labelidx!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))]] -[visit_exp `%`_labelidx((((labelidx!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp ((((labelidx!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp (((labelidx!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp ((labelidx!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int))] -[visit_exp (labelidx!`%`_labelidx.0 : nat <:> int)] -[visit_exp labelidx!`%`_labelidx.0] -[visit_exp labelidx!`%`_labelidx] -[visit_exp labelidx] -[visit_id labelidx] not free -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`})] -[visit_exp labelidx'*{labelidx' <- `labelidx'*`}] -[scope_enter labelidx'] -[visit_exp labelidx'] -[visit_id labelidx'] not free -[visit_id labelidx'] not free -[scope_exit labelidx'] -[visit_exp `labelidx'*`] -[visit_id labelidx'*] not free -[visit_id labelidx'*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - 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'*`}) -[check_dims] free instr -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] no dims -[visit_id instr*] -[visit_exp free[`LABELS`_free = $shift_labelidxs(free.`LABELS`_free)]] -[visit_exp free] -[visit_id free] -[visit_exp $shift_labelidxs(free.`LABELS`_free)] -[visit_exp free.`LABELS`_free] -[visit_exp free] -[visit_id free] not free -[visit_exp (free = $free_list($free_instr(instr)*{instr <- `instr*`}))] -[visit_exp free] -[visit_id free] not free -[visit_exp $free_list($free_instr(instr)*{instr <- `instr*`})] -[visit_exp $free_instr(instr)*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp $free_instr(instr)] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] not free -[visit_id instr*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - 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*`})) -[check_dims] instr -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] no dims -[visit_id instr*] -[visit_exp $free_list($free_instr(instr)*{instr <- `instr*`})] -[visit_exp $free_instr(instr)*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp $free_instr(instr)] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] not free -[visit_id instr*] no dims -=> - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_expr{`instr*` : instr*}(instr*{instr <- `instr*`}) = $free_list($free_instr(instr)*{instr <- `instr*`}) -[check_dims] -[check_dims] -[scope_enter tableidx] -[visit_id tableidx] not free -[visit_id tableidx] no dims -[scope_enter expr] -[visit_id expr] not free -[visit_id expr] no dims -[scope_exit expr] -[scope_exit tableidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter memidx] -[visit_id memidx] not free -[visit_id memidx] no dims -[scope_enter expr] -[visit_id expr] not free -[visit_id expr] no dims -[scope_exit expr] -[scope_exit memidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter rectype] -[visit_id rectype] not free -[visit_id rectype] no dims -[scope_exit rectype] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter tagtype] -[visit_id tagtype] not free -[visit_id tagtype] no dims -[scope_exit tagtype] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter globaltype] -[visit_id globaltype] not free -[visit_id globaltype] no dims -[scope_enter expr] -[visit_id expr] not free -[visit_id expr] no dims -[scope_exit expr] -[scope_exit globaltype] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter memtype] -[visit_id memtype] not free -[visit_id memtype] no dims -[scope_exit memtype] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter tabletype] -[visit_id tabletype] not free -[visit_id tabletype] no dims -[scope_enter expr] -[visit_id expr] not free -[visit_id expr] no dims -[scope_exit expr] -[scope_exit tabletype] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter byte*] -[visit_id byte*] not free -[visit_id byte*] no dims -[scope_enter datamode] -[visit_id datamode] not free -[visit_id datamode] no dims -[scope_exit datamode] -[scope_exit byte*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter valtype] -[visit_id valtype] not free -[visit_id valtype] no dims -[scope_exit valtype] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter typeidx] -[visit_id typeidx] not free -[visit_id typeidx] no dims -[scope_enter local*] -[visit_id local*] not free -[visit_id local*] no dims -[scope_enter expr] -[visit_id expr] not free -[visit_id expr] no dims -[scope_exit expr] -[scope_exit local*] -[scope_exit typeidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter reftype] -[visit_id reftype] not free -[visit_id reftype] no dims -[scope_enter expr*] -[visit_id expr*] not free -[visit_id expr*] no dims -[scope_enter elemmode] -[visit_id elemmode] not free -[visit_id elemmode] no dims -[scope_exit elemmode] -[scope_exit expr*] -[scope_exit reftype] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter funcidx] -[visit_id funcidx] not free -[visit_id funcidx] no dims -[scope_exit funcidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter name] -[visit_id name] not free -[visit_id name] no dims -[scope_enter name] -[visit_id name] not free -[visit_id name] no dims -[scope_enter externtype] -[visit_id externtype] not free -[visit_id externtype] no dims -[scope_exit externtype] -[scope_exit name] -[scope_exit name] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter name] -[visit_id name] not free -[visit_id name] no dims -[scope_enter externidx] -[visit_id externidx] not free -[visit_id externidx] no dims -[scope_exit externidx] -[scope_exit name] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter type*] -[visit_id type*] not free -[visit_id type*] no dims -[scope_enter import*] -[visit_id import*] not free -[visit_id import*] no dims -[scope_enter tag*] -[visit_id tag*] not free -[visit_id tag*] no dims -[scope_enter global*] -[visit_id global*] not free -[visit_id global*] no dims -[scope_enter mem*] -[visit_id mem*] not free -[visit_id mem*] no dims -[scope_enter table*] -[visit_id table*] not free -[visit_id table*] no dims -[scope_enter func*] -[visit_id func*] not free -[visit_id func*] no dims -[scope_enter data*] -[visit_id data*] not free -[visit_id data*] no dims -[scope_enter elem*] -[visit_id elem*] not free -[visit_id elem*] no dims -[scope_enter start?] -[visit_id start?] not free -[visit_id start?] no dims -[scope_enter export*] -[visit_id export*] not free -[visit_id export*] no dims -[scope_exit export*] -[scope_exit start?] -[scope_exit elem*] -[scope_exit data*] -[scope_exit func*] -[scope_exit table*] -[scope_exit mem*] -[scope_exit global*] -[scope_exit tag*] -[scope_exit import*] -[scope_exit type*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] type -DecD free_type(type : type) : free -[visit_id type] not free -[check_dims] tag -DecD free_tag(tag : tag) : free -[visit_id tag] not free -[check_dims] global -DecD free_global(global : global) : free -[visit_id global] not free -[check_dims] mem -DecD free_mem(mem : mem) : free -[visit_id mem] not free -[check_dims] table -DecD free_table(table : table) : free -[visit_id table] not free -[check_dims] local -DecD free_local(local : local) : free -[visit_id local] not free -[check_dims] func -DecD free_func(func : func) : free -[visit_id func] not free -[check_dims] data -DecD free_data(data : data) : free -[visit_id data] not free -[check_dims] elem -DecD free_elem(elem : elem) : free -[visit_id elem] not free -[check_dims] datamode -DecD free_datamode(datamode : datamode) : free -[visit_id datamode] not free -[check_dims] elemmode -DecD free_elemmode(elemmode : elemmode) : free -[visit_id elemmode] not free -[check_dims] start -DecD free_start(start : start) : free -[visit_id start] not free -[check_dims] import -DecD free_import(import : import) : free -[visit_id import] not free -[check_dims] export -DecD free_export(export : export) : free -[visit_id export] not free -[check_dims] module -DecD free_module(module : module) : free -[visit_id module] not free -[check_dims] rectype -[visit_exp `TYPE`_type(rectype)] -[visit_exp (rectype)] -[visit_exp rectype] -[visit_id rectype] -[visit_exp $free_rectype(rectype)] -[visit_exp rectype] -[visit_id rectype] not free -=> - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_type{rectype : rectype}(`TYPE`_type(rectype)) = $free_rectype(rectype) -[check_dims] tagtype -[visit_exp `TAG`_tag(tagtype)] -[visit_exp (tagtype)] -[visit_exp tagtype] -[visit_id tagtype] -[visit_exp $free_tagtype(tagtype)] -[visit_exp tagtype] -[visit_id tagtype] not free -=> - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_tag{tagtype : tagtype}(`TAG`_tag(tagtype)) = $free_tagtype(tagtype) -[check_dims] expr globaltype -[visit_exp `GLOBAL`_global(globaltype, expr)] -[visit_exp (globaltype, expr)] -[visit_exp globaltype] -[visit_id globaltype] -[visit_exp expr] -[visit_id expr] -[visit_exp $free_globaltype(globaltype) +++ $free_expr(expr)] -[visit_exp $free_globaltype(globaltype)] -[visit_exp globaltype] -[visit_id globaltype] not free -[visit_exp $free_expr(expr)] -[visit_exp expr] -[visit_id expr] not 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) -[check_dims] memtype -[visit_exp `MEMORY`_mem(memtype)] -[visit_exp (memtype)] -[visit_exp memtype] -[visit_id memtype] -[visit_exp $free_memtype(memtype)] -[visit_exp memtype] -[visit_id memtype] not free -=> - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_mem{memtype : memtype}(`MEMORY`_mem(memtype)) = $free_memtype(memtype) -[check_dims] expr tabletype -[visit_exp `TABLE`_table(tabletype, expr)] -[visit_exp (tabletype, expr)] -[visit_exp tabletype] -[visit_id tabletype] -[visit_exp expr] -[visit_id expr] -[visit_exp $free_tabletype(tabletype) +++ $free_expr(expr)] -[visit_exp $free_tabletype(tabletype)] -[visit_exp tabletype] -[visit_id tabletype] not free -[visit_exp $free_expr(expr)] -[visit_exp expr] -[visit_id expr] not 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) -[check_dims] t -[visit_exp `LOCAL`_local(t)] -[visit_exp (t)] -[visit_exp t] -[visit_id t] -[visit_exp $free_valtype(t)] -[visit_exp t] -[visit_id t] not free -=> - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_local{t : valtype}(`LOCAL`_local(t)) = $free_valtype(t) -[check_dims] expr local typeidx -[visit_exp `FUNC`_func(typeidx, local*{local <- `local*`}, expr)] -[visit_exp (typeidx, local*{local <- `local*`}, expr)] -[visit_exp typeidx] -[visit_id typeidx] -[visit_exp local*{local <- `local*`}] -[scope_enter local] -[visit_exp local] -[visit_id local] not free -[visit_id local] not free -[scope_exit local] -[visit_exp `local*`] -[visit_id local*] no dims -[visit_id local*] -[visit_exp expr] -[visit_id expr] -[visit_exp $free_typeidx(typeidx) +++ $free_list($free_local(local)*{local <- `local*`}) +++ $free_block(expr)[`LOCALS`_free = []]] -[visit_exp $free_typeidx(typeidx) +++ $free_list($free_local(local)*{local <- `local*`})] -[visit_exp $free_typeidx(typeidx)] -[visit_exp typeidx] -[visit_id typeidx] not free -[visit_exp $free_list($free_local(local)*{local <- `local*`})] -[visit_exp $free_local(local)*{local <- `local*`}] -[scope_enter local] -[visit_exp $free_local(local)] -[visit_exp local] -[visit_id local] not free -[visit_id local] not free -[scope_exit local] -[visit_exp `local*`] -[visit_id local*] not free -[visit_id local*] no dims -[visit_exp $free_block(expr)[`LOCALS`_free = []]] -[visit_exp $free_block(expr)] -[visit_exp expr] -[visit_id expr] not free -[visit_exp []] -=> - ;; ../../../../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 = []] -[check_dims] byte datamode -[visit_exp `DATA`_data(byte*{byte <- `byte*`}, datamode)] -[visit_exp (byte*{byte <- `byte*`}, datamode)] -[visit_exp byte*{byte <- `byte*`}] -[scope_enter byte] -[visit_exp byte] -[visit_id byte] not free -[visit_id byte] not free -[scope_exit byte] -[visit_exp `byte*`] -[visit_id byte*] no dims -[visit_id byte*] -[visit_exp datamode] -[visit_id datamode] -[visit_exp $free_datamode(datamode)] -[visit_exp datamode] -[visit_id datamode] not 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) -[check_dims] elemmode expr reftype -[visit_exp `ELEM`_elem(reftype, expr*{expr <- `expr*`}, elemmode)] -[visit_exp (reftype, expr*{expr <- `expr*`}, elemmode)] -[visit_exp reftype] -[visit_id reftype] -[visit_exp expr*{expr <- `expr*`}] -[scope_enter expr] -[visit_exp expr] -[visit_id expr] not free -[visit_id expr] not free -[scope_exit expr] -[visit_exp `expr*`] -[visit_id expr*] no dims -[visit_id expr*] -[visit_exp elemmode] -[visit_id elemmode] -[visit_exp $free_reftype(reftype) +++ $free_list($free_expr(expr)*{expr <- `expr*`}) +++ $free_elemmode(elemmode)] -[visit_exp $free_reftype(reftype) +++ $free_list($free_expr(expr)*{expr <- `expr*`})] -[visit_exp $free_reftype(reftype)] -[visit_exp reftype] -[visit_id reftype] not free -[visit_exp $free_list($free_expr(expr)*{expr <- `expr*`})] -[visit_exp $free_expr(expr)*{expr <- `expr*`}] -[scope_enter expr] -[visit_exp $free_expr(expr)] -[visit_exp expr] -[visit_id expr] not free -[visit_id expr] not free -[scope_exit expr] -[visit_exp `expr*`] -[visit_id expr*] not free -[visit_id expr*] no dims -[visit_exp $free_elemmode(elemmode)] -[visit_exp elemmode] -[visit_id elemmode] not 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) -[check_dims] expr tableidx -[visit_exp `ACTIVE`_elemmode(tableidx, expr)] -[visit_exp (tableidx, expr)] -[visit_exp tableidx] -[visit_id tableidx] -[visit_exp expr] -[visit_id expr] -[visit_exp $free_tableidx(tableidx) +++ $free_expr(expr)] -[visit_exp $free_tableidx(tableidx)] -[visit_exp tableidx] -[visit_id tableidx] not free -[visit_exp $free_expr(expr)] -[visit_exp expr] -[visit_id expr] not 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) -[check_dims] -[visit_exp `PASSIVE`_elemmode] -[visit_exp ()] -[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_elemmode(`PASSIVE`_elemmode) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} -[check_dims] -[visit_exp `DECLARE`_elemmode] -[visit_exp ()] -[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_elemmode(`DECLARE`_elemmode) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} -[check_dims] expr memidx -[visit_exp `ACTIVE`_datamode(memidx, expr)] -[visit_exp (memidx, expr)] -[visit_exp memidx] -[visit_id memidx] -[visit_exp expr] -[visit_id expr] -[visit_exp $free_memidx(memidx) +++ $free_expr(expr)] -[visit_exp $free_memidx(memidx)] -[visit_exp memidx] -[visit_id memidx] not free -[visit_exp $free_expr(expr)] -[visit_exp expr] -[visit_id expr] not 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) -[check_dims] -[visit_exp `PASSIVE`_datamode] -[visit_exp ()] -[visit_exp {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_datamode(`PASSIVE`_datamode) = {`TYPES` [], `FUNCS` [], `GLOBALS` [], `TABLES` [], `MEMS` [], `ELEMS` [], `DATAS` [], `LOCALS` [], `LABELS` []} -[check_dims] funcidx -[visit_exp `START`_start(funcidx)] -[visit_exp (funcidx)] -[visit_exp funcidx] -[visit_id funcidx] -[visit_exp $free_funcidx(funcidx)] -[visit_exp funcidx] -[visit_id funcidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_start{funcidx : funcidx}(`START`_start(funcidx)) = $free_funcidx(funcidx) -[check_dims] externtype name_1 name_2 -[visit_exp `IMPORT`_import(name_1, name_2, externtype)] -[visit_exp (name_1, name_2, externtype)] -[visit_exp name_1] -[visit_id name_1] -[visit_exp name_2] -[visit_id name_2] -[visit_exp externtype] -[visit_id externtype] -[visit_exp $free_externtype(externtype)] -[visit_exp externtype] -[visit_id externtype] not 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) -[check_dims] externidx name -[visit_exp `EXPORT`_export(name, externidx)] -[visit_exp (name, externidx)] -[visit_exp name] -[visit_id name] -[visit_exp externidx] -[visit_id externidx] -[visit_exp $free_externidx(externidx)] -[visit_exp externidx] -[visit_id externidx] not free -=> - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_export{name : name, externidx : externidx}(`EXPORT`_export(name, externidx)) = $free_externidx(externidx) -[check_dims] data elem export func global import mem start table tag type -[visit_exp `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*`})] -[visit_exp (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*`})] -[visit_exp type*{type <- `type*`}] -[scope_enter type] -[visit_exp type] -[visit_id type] not free -[visit_id type] not free -[scope_exit type] -[visit_exp `type*`] -[visit_id type*] no dims -[visit_id type*] -[visit_exp import*{import <- `import*`}] -[scope_enter import] -[visit_exp import] -[visit_id import] not free -[visit_id import] not free -[scope_exit import] -[visit_exp `import*`] -[visit_id import*] no dims -[visit_id import*] -[visit_exp tag*{tag <- `tag*`}] -[scope_enter tag] -[visit_exp tag] -[visit_id tag] not free -[visit_id tag] not free -[scope_exit tag] -[visit_exp `tag*`] -[visit_id tag*] no dims -[visit_id tag*] -[visit_exp global*{global <- `global*`}] -[scope_enter global] -[visit_exp global] -[visit_id global] not free -[visit_id global] not free -[scope_exit global] -[visit_exp `global*`] -[visit_id global*] no dims -[visit_id global*] -[visit_exp mem*{mem <- `mem*`}] -[scope_enter mem] -[visit_exp mem] -[visit_id mem] not free -[visit_id mem] not free -[scope_exit mem] -[visit_exp `mem*`] -[visit_id mem*] no dims -[visit_id mem*] -[visit_exp table*{table <- `table*`}] -[scope_enter table] -[visit_exp table] -[visit_id table] not free -[visit_id table] not free -[scope_exit table] -[visit_exp `table*`] -[visit_id table*] no dims -[visit_id table*] -[visit_exp func*{func <- `func*`}] -[scope_enter func] -[visit_exp func] -[visit_id func] not free -[visit_id func] not free -[scope_exit func] -[visit_exp `func*`] -[visit_id func*] no dims -[visit_id func*] -[visit_exp data*{data <- `data*`}] -[scope_enter data] -[visit_exp data] -[visit_id data] not free -[visit_id data] not free -[scope_exit data] -[visit_exp `data*`] -[visit_id data*] no dims -[visit_id data*] -[visit_exp elem*{elem <- `elem*`}] -[scope_enter elem] -[visit_exp elem] -[visit_id elem] not free -[visit_id elem] not free -[scope_exit elem] -[visit_exp `elem*`] -[visit_id elem*] no dims -[visit_id elem*] -[visit_exp start?{start <- `start?`}] -[scope_enter start] -[visit_exp start] -[visit_id start] not free -[visit_id start] not free -[scope_exit start] -[visit_exp `start?`] -[visit_id start?] no dims -[visit_id start?] -[visit_exp export*{export <- `export*`}] -[scope_enter export] -[visit_exp export] -[visit_id export] not free -[visit_id export] not free -[scope_exit export] -[visit_exp `export*`] -[visit_id export*] no dims -[visit_id export*] -[visit_exp $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*`})] -[visit_exp $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*`})] -[visit_exp $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?`})] -[visit_exp $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*`})] -[visit_exp $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*`})] -[visit_exp $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*`})] -[visit_exp $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*`})] -[visit_exp $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*`})] -[visit_exp $free_list($free_type(type)*{type <- `type*`}) +++ $free_list($free_tag(tag)*{tag <- `tag*`}) +++ $free_list($free_global(global)*{global <- `global*`})] -[visit_exp $free_list($free_type(type)*{type <- `type*`}) +++ $free_list($free_tag(tag)*{tag <- `tag*`})] -[visit_exp $free_list($free_type(type)*{type <- `type*`})] -[visit_exp $free_type(type)*{type <- `type*`}] -[scope_enter type] -[visit_exp $free_type(type)] -[visit_exp type] -[visit_id type] not free -[visit_id type] not free -[scope_exit type] -[visit_exp `type*`] -[visit_id type*] not free -[visit_id type*] no dims -[visit_exp $free_list($free_tag(tag)*{tag <- `tag*`})] -[visit_exp $free_tag(tag)*{tag <- `tag*`}] -[scope_enter tag] -[visit_exp $free_tag(tag)] -[visit_exp tag] -[visit_id tag] not free -[visit_id tag] not free -[scope_exit tag] -[visit_exp `tag*`] -[visit_id tag*] not free -[visit_id tag*] no dims -[visit_exp $free_list($free_global(global)*{global <- `global*`})] -[visit_exp $free_global(global)*{global <- `global*`}] -[scope_enter global] -[visit_exp $free_global(global)] -[visit_exp global] -[visit_id global] not free -[visit_id global] not free -[scope_exit global] -[visit_exp `global*`] -[visit_id global*] not free -[visit_id global*] no dims -[visit_exp $free_list($free_mem(mem)*{mem <- `mem*`})] -[visit_exp $free_mem(mem)*{mem <- `mem*`}] -[scope_enter mem] -[visit_exp $free_mem(mem)] -[visit_exp mem] -[visit_id mem] not free -[visit_id mem] not free -[scope_exit mem] -[visit_exp `mem*`] -[visit_id mem*] not free -[visit_id mem*] no dims -[visit_exp $free_list($free_table(table)*{table <- `table*`})] -[visit_exp $free_table(table)*{table <- `table*`}] -[scope_enter table] -[visit_exp $free_table(table)] -[visit_exp table] -[visit_id table] not free -[visit_id table] not free -[scope_exit table] -[visit_exp `table*`] -[visit_id table*] not free -[visit_id table*] no dims -[visit_exp $free_list($free_func(func)*{func <- `func*`})] -[visit_exp $free_func(func)*{func <- `func*`}] -[scope_enter func] -[visit_exp $free_func(func)] -[visit_exp func] -[visit_id func] not free -[visit_id func] not free -[scope_exit func] -[visit_exp `func*`] -[visit_id func*] not free -[visit_id func*] no dims -[visit_exp $free_list($free_data(data)*{data <- `data*`})] -[visit_exp $free_data(data)*{data <- `data*`}] -[scope_enter data] -[visit_exp $free_data(data)] -[visit_exp data] -[visit_id data] not free -[visit_id data] not free -[scope_exit data] -[visit_exp `data*`] -[visit_id data*] not free -[visit_id data*] no dims -[visit_exp $free_list($free_elem(elem)*{elem <- `elem*`})] -[visit_exp $free_elem(elem)*{elem <- `elem*`}] -[scope_enter elem] -[visit_exp $free_elem(elem)] -[visit_exp elem] -[visit_id elem] not free -[visit_id elem] not free -[scope_exit elem] -[visit_exp `elem*`] -[visit_id elem*] not free -[visit_id elem*] no dims -[visit_exp $free_opt($free_start(start)?{start <- `start?`})] -[visit_exp $free_start(start)?{start <- `start?`}] -[scope_enter start] -[visit_exp $free_start(start)] -[visit_exp start] -[visit_id start] not free -[visit_id start] not free -[scope_exit start] -[visit_exp `start?`] -[visit_id start?] not free -[visit_id start?] no dims -[visit_exp $free_list($free_import(import)*{import <- `import*`})] -[visit_exp $free_import(import)*{import <- `import*`}] -[scope_enter import] -[visit_exp $free_import(import)] -[visit_exp import] -[visit_id import] not free -[visit_id import] not free -[scope_exit import] -[visit_exp `import*`] -[visit_id import*] not free -[visit_id import*] no dims -[visit_exp $free_list($free_export(export)*{export <- `export*`})] -[visit_exp $free_export(export)*{export <- `export*`}] -[scope_enter export] -[visit_exp $free_export(export)] -[visit_exp export] -[visit_id export] not free -[visit_id export] not free -[scope_exit export] -[visit_exp `export*`] -[visit_id export*] not free -[visit_id export*] no dims -=> - ;; ../../../../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*`}) -[check_dims] module -DecD funcidx_module(module : module) : funcidx* -[visit_id module] not free -[check_dims] module -[visit_exp module] -[visit_id module] -[visit_exp $free_module(module).`FUNCS`_free] -[visit_exp $free_module(module)] -[visit_exp module] -[visit_id module] not free -=> - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $funcidx_module{module : module}(module) = $free_module(module).`FUNCS`_free -[check_dims] _ -DecD dataidx_funcs(func*) : dataidx* -[visit_id _] not free -[check_dims] func -[visit_exp func*{func <- `func*`}] -[scope_enter func] -[visit_exp func] -[visit_id func] not free -[visit_id func] not free -[scope_exit func] -[visit_exp `func*`] -[visit_id func*] no dims -[visit_id func*] -[visit_exp $free_list($free_func(func)*{func <- `func*`}).`DATAS`_free] -[visit_exp $free_list($free_func(func)*{func <- `func*`})] -[visit_exp $free_func(func)*{func <- `func*`}] -[scope_enter func] -[visit_exp $free_func(func)] -[visit_exp func] -[visit_id func] not free -[visit_id func] not free -[scope_exit func] -[visit_exp `func*`] -[visit_id func*] not free -[visit_id func*] no dims -=> - ;; ../../../../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 -[check_dims] -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter init] -[visit_id init] not free -[visit_id init] no dims -[scope_enter valtype] -[visit_id valtype] not free -[visit_id valtype] no dims -[scope_exit valtype] -[scope_exit init] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter resulttype] -[visit_id resulttype] not free -[visit_id resulttype] no dims -[scope_enter localidx*] -[visit_id localidx*] not free -[visit_id localidx*] no dims -[scope_enter resulttype] -[visit_id resulttype] not free -[visit_id resulttype] no dims -[scope_exit resulttype] -[scope_exit localidx*] -[scope_exit resulttype] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[scope_enter deftype*] -[visit_id deftype*] not free -[visit_id deftype*] no dims -[scope_exit deftype*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter subtype*] -[visit_id subtype*] not free -[visit_id subtype*] no dims -[scope_exit subtype*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter tagtype*] -[visit_id tagtype*] not free -[visit_id tagtype*] no dims -[scope_exit tagtype*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter globaltype*] -[visit_id globaltype*] not free -[visit_id globaltype*] no dims -[scope_exit globaltype*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter memtype*] -[visit_id memtype*] not free -[visit_id memtype*] no dims -[scope_exit memtype*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter tabletype*] -[visit_id tabletype*] not free -[visit_id tabletype*] no dims -[scope_exit tabletype*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter deftype*] -[visit_id deftype*] not free -[visit_id deftype*] no dims -[scope_exit deftype*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter datatype*] -[visit_id datatype*] not free -[visit_id datatype*] no dims -[scope_exit datatype*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter elemtype*] -[visit_id elemtype*] not free -[visit_id elemtype*] no dims -[scope_exit elemtype*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter localtype*] -[visit_id localtype*] not free -[visit_id localtype*] no dims -[scope_exit localtype*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter resulttype*] -[visit_id resulttype*] not free -[visit_id resulttype*] no dims -[scope_exit resulttype*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter resulttype?] -[visit_id resulttype?] not free -[visit_id resulttype?] no dims -[scope_exit resulttype?] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter funcidx*] -[visit_id funcidx*] not free -[visit_id funcidx*] no dims -[scope_exit funcidx*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] _ context -DecD with_locals(context : context, localidx*, localtype*) : context -[visit_id context] not free -[visit_id _] not free -[visit_id _] not free -[check_dims] C -[visit_exp C] -[visit_id C] -[visit_exp []] -[visit_exp []] -[visit_exp C] -[visit_id C] not free -=> - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - def $with_locals{C : context}(C, [], []) = C -[check_dims] C lct lct_1 x x_1 -[visit_exp C] -[visit_id C] -[visit_exp [x_1] ++ x*{x <- `x*`}] -[visit_exp [x_1]] -[visit_exp x_1] -[visit_id x_1] -[visit_exp x*{x <- `x*`}] -[scope_enter x] -[visit_exp x] -[visit_id x] not free -[visit_id x] not free -[scope_exit x] -[visit_exp `x*`] -[visit_id x*] no dims -[visit_id x*] -[visit_exp [lct_1] ++ lct*{lct <- `lct*`}] -[visit_exp [lct_1]] -[visit_exp lct_1] -[visit_id lct_1] -[visit_exp lct*{lct <- `lct*`}] -[scope_enter lct] -[visit_exp lct] -[visit_id lct] not free -[visit_id lct] not free -[scope_exit lct] -[visit_exp `lct*`] -[visit_id lct*] no dims -[visit_id lct*] -[visit_exp $with_locals(C[`LOCALS`_context[x_1!`%`_idx.0] = lct_1], x*{x <- `x*`}, lct*{lct <- `lct*`})] -[visit_exp C[`LOCALS`_context[x_1!`%`_idx.0] = lct_1]] -[visit_exp C] -[visit_id C] not free -[visit_exp x_1!`%`_idx.0] -[visit_exp x_1!`%`_idx] -[visit_exp x_1] -[visit_id x_1] not free -[visit_exp lct_1] -[visit_id lct_1] not free -[visit_exp x*{x <- `x*`}] -[scope_enter x] -[visit_exp x] -[visit_id x] not free -[visit_id x] not free -[scope_exit x] -[visit_exp `x*`] -[visit_id x*] not free -[visit_id x*] no dims -[visit_exp lct*{lct <- `lct*`}] -[scope_enter lct] -[visit_exp lct] -[visit_id lct] not free -[visit_id lct] not free -[scope_exit lct] -[visit_exp `lct*`] -[visit_id lct*] not free -[visit_id lct*] no dims -=> - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - 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*`}) -[check_dims] context valtype -DecD clos_valtype(context : context, valtype : valtype) : valtype -[visit_id context] not free -[visit_id valtype] not free -[check_dims] context deftype -DecD clos_deftype(context : context, deftype : deftype) : deftype -[visit_id context] not free -[visit_id deftype] not free -[check_dims] context tagtype -DecD clos_tagtype(context : context, tagtype : tagtype) : tagtype -[visit_id context] not free -[visit_id tagtype] not free -[check_dims] context externtype -DecD clos_externtype(context : context, externtype : externtype) : externtype -[visit_id context] not free -[visit_id externtype] not free -[check_dims] context moduletype -DecD clos_moduletype(context : context, moduletype : moduletype) : moduletype -[visit_id context] not free -[visit_id moduletype] not free -[check_dims] _ -DecD clos_deftypes(deftype*) : deftype* -[visit_id _] not free -[check_dims] C dt t -[visit_exp C] -[visit_id C] -[visit_exp t] -[visit_id t] -[visit_exp $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`})] -[visit_exp t] -[visit_id t] not free -[visit_exp (dt : deftype <: typeuse)*{dt <- `dt*`}] -[scope_enter dt] -[visit_exp (dt : deftype <: typeuse)] -[visit_exp dt] -[visit_id dt] not free -[visit_id dt] not free -[scope_exit dt] -[visit_exp `dt*`] -[visit_id dt*] no dims -[visit_id dt*] -[visit_exp (dt*{dt <- `dt*`} = $clos_deftypes(C.`TYPES`_context))] -[visit_exp dt*{dt <- `dt*`}] -[scope_enter dt] -[visit_exp dt] -[visit_id dt] not free -[visit_id dt] not free -[scope_exit dt] -[visit_exp `dt*`] -[visit_id dt*] not free -[visit_id dt*] no dims -[visit_exp $clos_deftypes(C.`TYPES`_context)] -[visit_exp C.`TYPES`_context] -[visit_exp C] -[visit_id C] not free -=> - ;; ../../../../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)) -[check_dims] C dt dt' -[visit_exp C] -[visit_id C] -[visit_exp dt] -[visit_id dt] -[visit_exp $subst_all_deftype(dt, (dt' : deftype <: typeuse)*{dt' <- `dt'*`})] -[visit_exp dt] -[visit_id dt] not free -[visit_exp (dt' : deftype <: typeuse)*{dt' <- `dt'*`}] -[scope_enter dt'] -[visit_exp (dt' : deftype <: typeuse)] -[visit_exp dt'] -[visit_id dt'] not free -[visit_id dt'] not free -[scope_exit dt'] -[visit_exp `dt'*`] -[visit_id dt'*] no dims -[visit_id dt'*] -[visit_exp (dt'*{dt' <- `dt'*`} = $clos_deftypes(C.`TYPES`_context))] -[visit_exp dt'*{dt' <- `dt'*`}] -[scope_enter dt'] -[visit_exp dt'] -[visit_id dt'] not free -[visit_id dt'] not free -[scope_exit dt'] -[visit_exp `dt'*`] -[visit_id dt'*] not free -[visit_id dt'*] no dims -[visit_exp $clos_deftypes(C.`TYPES`_context)] -[visit_exp C.`TYPES`_context] -[visit_exp C] -[visit_id C] not free -=> - ;; ../../../../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)) -[check_dims] C dt jt -[visit_exp C] -[visit_id C] -[visit_exp jt] -[visit_id jt] -[visit_exp $subst_all_tagtype(jt, (dt : deftype <: typeuse)*{dt <- `dt*`})] -[visit_exp jt] -[visit_id jt] not free -[visit_exp (dt : deftype <: typeuse)*{dt <- `dt*`}] -[scope_enter dt] -[visit_exp (dt : deftype <: typeuse)] -[visit_exp dt] -[visit_id dt] not free -[visit_id dt] not free -[scope_exit dt] -[visit_exp `dt*`] -[visit_id dt*] no dims -[visit_id dt*] -[visit_exp (dt*{dt <- `dt*`} = $clos_deftypes(C.`TYPES`_context))] -[visit_exp dt*{dt <- `dt*`}] -[scope_enter dt] -[visit_exp dt] -[visit_id dt] not free -[visit_id dt] not free -[scope_exit dt] -[visit_exp `dt*`] -[visit_id dt*] not free -[visit_id dt*] no dims -[visit_exp $clos_deftypes(C.`TYPES`_context)] -[visit_exp C.`TYPES`_context] -[visit_exp C] -[visit_id C] not free -=> - ;; ../../../../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*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.`TYPES`_context)) -[check_dims] C dt xt -[visit_exp C] -[visit_id C] -[visit_exp xt] -[visit_id xt] -[visit_exp $subst_all_externtype(xt, (dt : deftype <: typeuse)*{dt <- `dt*`})] -[visit_exp xt] -[visit_id xt] not free -[visit_exp (dt : deftype <: typeuse)*{dt <- `dt*`}] -[scope_enter dt] -[visit_exp (dt : deftype <: typeuse)] -[visit_exp dt] -[visit_id dt] not free -[visit_id dt] not free -[scope_exit dt] -[visit_exp `dt*`] -[visit_id dt*] no dims -[visit_id dt*] -[visit_exp (dt*{dt <- `dt*`} = $clos_deftypes(C.`TYPES`_context))] -[visit_exp dt*{dt <- `dt*`}] -[scope_enter dt] -[visit_exp dt] -[visit_id dt] not free -[visit_id dt] not free -[scope_exit dt] -[visit_exp `dt*`] -[visit_id dt*] not free -[visit_id dt*] no dims -[visit_exp $clos_deftypes(C.`TYPES`_context)] -[visit_exp C.`TYPES`_context] -[visit_exp C] -[visit_id C] not free -=> - ;; ../../../../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)) -[check_dims] C dt mmt -[visit_exp C] -[visit_id C] -[visit_exp mmt] -[visit_id mmt] -[visit_exp $subst_all_moduletype(mmt, (dt : deftype <: typeuse)*{dt <- `dt*`})] -[visit_exp mmt] -[visit_id mmt] not free -[visit_exp (dt : deftype <: typeuse)*{dt <- `dt*`}] -[scope_enter dt] -[visit_exp (dt : deftype <: typeuse)] -[visit_exp dt] -[visit_id dt] not free -[visit_id dt] not free -[scope_exit dt] -[visit_exp `dt*`] -[visit_id dt*] no dims -[visit_id dt*] -[visit_exp (dt*{dt <- `dt*`} = $clos_deftypes(C.`TYPES`_context))] -[visit_exp dt*{dt <- `dt*`}] -[scope_enter dt] -[visit_exp dt] -[visit_id dt] not free -[visit_id dt] not free -[scope_exit dt] -[visit_exp `dt*`] -[visit_id dt*] not free -[visit_id dt*] no dims -[visit_exp $clos_deftypes(C.`TYPES`_context)] -[visit_exp C.`TYPES`_context] -[visit_exp C] -[visit_id C] not free -=> - ;; ../../../../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)) -[check_dims] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - def $clos_deftypes([]) = [] -[check_dims] dt dt' dt_n -[visit_exp dt*{dt <- `dt*`} ++ [dt_n]] -[visit_exp dt*{dt <- `dt*`}] -[scope_enter dt] -[visit_exp dt] -[visit_id dt] not free -[visit_id dt] not free -[scope_exit dt] -[visit_exp `dt*`] -[visit_id dt*] no dims -[visit_id dt*] -[visit_exp [dt_n]] -[visit_exp dt_n] -[visit_id dt_n] -[visit_exp dt'*{dt' <- `dt'*`} ++ [$subst_all_deftype(dt_n, (dt' : deftype <: typeuse)*{dt' <- `dt'*`})]] -[visit_exp dt'*{dt' <- `dt'*`}] -[scope_enter dt'] -[visit_exp dt'] -[visit_id dt'] not free -[visit_id dt'] not free -[scope_exit dt'] -[visit_exp `dt'*`] -[visit_id dt'*] no dims -[visit_id dt'*] -[visit_exp [$subst_all_deftype(dt_n, (dt' : deftype <: typeuse)*{dt' <- `dt'*`})]] -[visit_exp $subst_all_deftype(dt_n, (dt' : deftype <: typeuse)*{dt' <- `dt'*`})] -[visit_exp dt_n] -[visit_id dt_n] not free -[visit_exp (dt' : deftype <: typeuse)*{dt' <- `dt'*`}] -[scope_enter dt'] -[visit_exp (dt' : deftype <: typeuse)] -[visit_exp dt'] -[visit_id dt'] not free -[visit_id dt'] not free -[scope_exit dt'] -[visit_exp `dt'*`] -[visit_id dt'*] not free -[visit_id dt'*] no dims -[visit_exp (dt'*{dt' <- `dt'*`} = $clos_deftypes(dt*{dt <- `dt*`}))] -[visit_exp dt'*{dt' <- `dt'*`}] -[scope_enter dt'] -[visit_exp dt'] -[visit_id dt'] not free -[visit_id dt'] not free -[scope_exit dt'] -[visit_exp `dt'*`] -[visit_id dt'*] not free -[visit_id dt'*] no dims -[visit_exp $clos_deftypes(dt*{dt <- `dt*`})] -[visit_exp dt*{dt <- `dt*`}] -[scope_enter dt] -[visit_exp dt] -[visit_id dt] not free -[visit_id dt] not free -[scope_exit dt] -[visit_exp `dt*`] -[visit_id dt*] not free -[visit_id dt*] no dims -=> - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec - 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*`})) -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] C numtype -[visit_exp C] -[visit_id C] -[visit_exp numtype] -[visit_id numtype] -[check_dims] C vectype -[visit_exp C] -[visit_id C] -[visit_exp vectype] -[visit_id vectype] -[check_dims] C absheaptype -[visit_exp C] -[visit_id C] -[visit_exp (absheaptype : absheaptype <: heaptype)] -[visit_exp absheaptype] -[visit_id absheaptype] -[check_dims] C typeuse -[visit_exp C] -[visit_id C] -[visit_exp (typeuse : typeuse <: heaptype)] -[visit_exp typeuse] -[visit_id typeuse] -[visit_exp (C, typeuse)] -[visit_exp C] -[visit_id C] not free -[visit_exp typeuse] -[visit_id typeuse] not free -[check_dims] C heaptype -[visit_exp C] -[visit_id C] -[visit_exp `REF`_reftype(`NULL`_null?{}, heaptype)] -[visit_exp (`NULL`_null?{}, heaptype)] -[visit_exp `NULL`_null?{}] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp heaptype] -[visit_id heaptype] -[visit_exp (C, heaptype)] -[visit_exp C] -[visit_id C] not free -[visit_exp heaptype] -[visit_id heaptype] not free -[check_dims] C numtype -[visit_exp C] -[visit_id C] -[visit_exp (numtype : numtype <: valtype)] -[visit_exp numtype] -[visit_id numtype] -[visit_exp (C, numtype)] -[visit_exp C] -[visit_id C] not free -[visit_exp numtype] -[visit_id numtype] not free -[check_dims] C vectype -[visit_exp C] -[visit_id C] -[visit_exp (vectype : vectype <: valtype)] -[visit_exp vectype] -[visit_id vectype] -[visit_exp (C, vectype)] -[visit_exp C] -[visit_id C] not free -[visit_exp vectype] -[visit_id vectype] not free -[check_dims] C reftype -[visit_exp C] -[visit_id C] -[visit_exp (reftype : reftype <: valtype)] -[visit_exp reftype] -[visit_id reftype] -[visit_exp (C, reftype)] -[visit_exp C] -[visit_id C] not free -[visit_exp reftype] -[visit_id reftype] not free -[check_dims] C -[visit_exp C] -[visit_id C] -[visit_exp `BOT`_valtype] -[visit_exp ()] -[check_dims] -[check_dims] -[check_dims] C t -[visit_exp C] -[visit_id C] -[visit_exp `%`_resulttype(t*{t <- `t*`})] -[visit_exp (t*{t <- `t*`})] -[visit_exp t*{t <- `t*`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] no dims -[visit_id t*] -[scope_enter t] -[visit_exp (C, t)] -[visit_exp C] -[visit_id C] not free -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] not free -[visit_id t*] no dims -[check_dims] C lct t_1 t_2 x -[visit_exp C] -[visit_id C] -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] no dims -[visit_id t_1*] -[visit_exp x*{x <- `x*`}] -[scope_enter x] -[visit_exp x] -[visit_id x] not free -[visit_id x] not free -[scope_exit x] -[visit_exp `x*`] -[visit_id x*] no dims -[visit_id x*] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] no dims -[visit_id t_2*] -[visit_exp (C, `%`_resulttype(t_1*{t_1 <- `t_1*`}))] -[visit_exp C] -[visit_id C] not free -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] not free -[visit_id t_1*] no dims -[visit_exp (C, `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp C] -[visit_id C] not free -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] not free -[visit_id t_2*] no dims -[scope_enter lct] -[scope_enter x] -[visit_exp (C.`LOCALS`_context[x!`%`_idx.0] = lct)] -[visit_exp C.`LOCALS`_context[x!`%`_idx.0]] -[visit_exp C.`LOCALS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp lct] -[visit_id lct] not free -[visit_id lct] not free -[visit_id x] not free -[scope_exit x] -[scope_exit lct] -[visit_exp `lct*`] -[visit_id lct*] no dims -[visit_id lct*] -[visit_exp `x*`] -[visit_id x*] not free -[visit_id x*] no dims -[check_dims] -[check_dims] -[check_dims] comptype deftype -[visit_exp deftype] -[visit_id deftype] -[visit_exp comptype] -[visit_id comptype] -[visit_exp ($expanddt(deftype) = comptype)] -[visit_exp $expanddt(deftype)] -[visit_exp deftype] -[visit_id deftype] not free -[visit_exp comptype] -[visit_id comptype] not free -[check_dims] C comptype deftype -[visit_exp (deftype : deftype <: typeuse)] -[visit_exp deftype] -[visit_id deftype] -[visit_exp C] -[visit_id C] -[visit_exp comptype] -[visit_id comptype] -[visit_exp (deftype, comptype)] -[visit_exp deftype] -[visit_id deftype] not free -[visit_exp comptype] -[visit_id comptype] not free -[check_dims] C comptype typeidx -[visit_exp `_IDX`_typeuse(typeidx)] -[visit_exp (typeidx)] -[visit_exp typeidx] -[visit_id typeidx] -[visit_exp C] -[visit_id C] -[visit_exp comptype] -[visit_id comptype] -[visit_exp (C.`TYPES`_context[typeidx!`%`_typeidx.0], comptype)] -[visit_exp C.`TYPES`_context[typeidx!`%`_typeidx.0]] -[visit_exp C.`TYPES`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp typeidx!`%`_typeidx.0] -[visit_exp typeidx!`%`_typeidx] -[visit_exp typeidx] -[visit_id typeidx] not free -[visit_exp comptype] -[visit_id comptype] not free -[check_dims] -[check_dims] -[scope_enter typeidx] -[visit_id typeidx] not free -[visit_id typeidx] no dims -[scope_exit typeidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter typeidx] -[visit_id typeidx] not free -[visit_id typeidx] no dims -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit typeidx] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] C dt typeidx -[visit_exp C] -[visit_id C] -[visit_exp `_IDX`_typeuse(typeidx)] -[visit_exp (typeidx)] -[visit_exp typeidx] -[visit_id typeidx] -[visit_exp (C.`TYPES`_context[typeidx!`%`_typeidx.0] = dt)] -[visit_exp C.`TYPES`_context[typeidx!`%`_typeidx.0]] -[visit_exp C.`TYPES`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp typeidx!`%`_typeidx.0] -[visit_exp typeidx!`%`_typeidx] -[visit_exp typeidx] -[visit_id typeidx] not free -[visit_exp dt] -[visit_id dt] -[check_dims] C i st -[visit_exp C] -[visit_id C] -[visit_exp `REC`_typeuse(i)] -[visit_exp (i)] -[visit_exp i] -[visit_id i] -[visit_exp (C.`RECS`_context[i] = st)] -[visit_exp C.`RECS`_context[i]] -[visit_exp C.`RECS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp i] -[visit_id i] not free -[visit_exp st] -[visit_id st] -[check_dims] C deftype -[visit_exp C] -[visit_id C] -[visit_exp (deftype : deftype <: typeuse)] -[visit_exp deftype] -[visit_id deftype] -[visit_exp (C, deftype)] -[visit_exp C] -[visit_id C] not free -[visit_exp deftype] -[visit_id deftype] not free -[check_dims] C packtype -[visit_exp C] -[visit_id C] -[visit_exp packtype] -[visit_id packtype] -[check_dims] C valtype -[visit_exp C] -[visit_id C] -[visit_exp (valtype : valtype <: storagetype)] -[visit_exp valtype] -[visit_id valtype] -[visit_exp (C, valtype)] -[visit_exp C] -[visit_id C] not free -[visit_exp valtype] -[visit_id valtype] not free -[check_dims] C packtype -[visit_exp C] -[visit_id C] -[visit_exp (packtype : packtype <: storagetype)] -[visit_exp packtype] -[visit_id packtype] -[visit_exp (C, packtype)] -[visit_exp C] -[visit_id C] not free -[visit_exp packtype] -[visit_id packtype] not free -[check_dims] C storagetype -[visit_exp C] -[visit_id C] -[visit_exp `%%`_fieldtype(`MUT`_mut?{}, storagetype)] -[visit_exp (`MUT`_mut?{}, storagetype)] -[visit_exp `MUT`_mut?{}] -[visit_exp `MUT`_mut] -[visit_exp ()] -[visit_exp storagetype] -[visit_id storagetype] -[visit_exp (C, storagetype)] -[visit_exp C] -[visit_id C] not free -[visit_exp storagetype] -[visit_id storagetype] not free -[check_dims] C fieldtype -[visit_exp C] -[visit_id C] -[visit_exp `STRUCT`_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))] -[visit_exp (`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))] -[visit_exp `%`_list(fieldtype*{fieldtype <- `fieldtype*`})] -[visit_exp (fieldtype*{fieldtype <- `fieldtype*`})] -[visit_exp fieldtype*{fieldtype <- `fieldtype*`}] -[scope_enter fieldtype] -[visit_exp fieldtype] -[visit_id fieldtype] not free -[visit_id fieldtype] not free -[scope_exit fieldtype] -[visit_exp `fieldtype*`] -[visit_id fieldtype*] no dims -[visit_id fieldtype*] -[scope_enter fieldtype] -[visit_exp (C, fieldtype)] -[visit_exp C] -[visit_id C] not free -[visit_exp fieldtype] -[visit_id fieldtype] not free -[visit_id fieldtype] not free -[scope_exit fieldtype] -[visit_exp `fieldtype*`] -[visit_id fieldtype*] not free -[visit_id fieldtype*] no dims -[check_dims] C fieldtype -[visit_exp C] -[visit_id C] -[visit_exp `ARRAY`_comptype(fieldtype)] -[visit_exp (fieldtype)] -[visit_exp fieldtype] -[visit_id fieldtype] -[visit_exp (C, fieldtype)] -[visit_exp C] -[visit_id C] not free -[visit_exp fieldtype] -[visit_id fieldtype] not free -[check_dims] C t_1 t_2 -[visit_exp C] -[visit_id C] -[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] no dims -[visit_id t_1*] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] no dims -[visit_id t_2*] -[visit_exp (C, `%`_resulttype(t_1*{t_1 <- `t_1*`}))] -[visit_exp C] -[visit_id C] not free -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] not free -[visit_id t_1*] no dims -[visit_exp (C, `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp C] -[visit_id C] not free -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] not free -[visit_id t_2*] no dims -[check_dims] C comptype comptype' x x' x_0 -[visit_exp C] -[visit_id C] -[visit_exp `SUB`_subtype(`FINAL`_final?{}, `_IDX`_typeuse(x)*{x <- `x*`}, comptype)] -[visit_exp (`FINAL`_final?{}, `_IDX`_typeuse(x)*{x <- `x*`}, comptype)] -[visit_exp `FINAL`_final?{}] -[visit_exp `FINAL`_final] -[visit_exp ()] -[visit_exp `_IDX`_typeuse(x)*{x <- `x*`}] -[scope_enter x] -[visit_exp `_IDX`_typeuse(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] not free -[visit_id x] not free -[scope_exit x] -[visit_exp `x*`] -[visit_id x*] no dims -[visit_id x*] -[visit_exp comptype] -[visit_id comptype] -[visit_exp `OK`_oktypeidx(x_0)] -[visit_exp (x_0)] -[visit_exp x_0] -[visit_id x_0] -[visit_exp (|x*{x <- `x*`}| <= 1)] -[visit_exp |x*{x <- `x*`}|] -[visit_exp x*{x <- `x*`}] -[scope_enter x] -[visit_exp x] -[visit_id x] not free -[visit_id x] not free -[scope_exit x] -[visit_exp `x*`] -[visit_id x*] not free -[visit_id x*] no dims -[visit_exp 1] -[scope_enter x] -[visit_exp (x!`%`_idx.0 < x_0!`%`_idx.0)] -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp x_0!`%`_idx.0] -[visit_exp x_0!`%`_idx] -[visit_exp x_0] -[visit_id x_0] not free -[visit_id x] not free -[scope_exit x] -[visit_exp `x*`] -[visit_id x*] not free -[visit_id x*] no dims -[scope_enter comptype'] -[scope_enter x] -[scope_enter x'*] -[visit_exp ($unrolldt(C.`TYPES`_context[x!`%`_idx.0]) = `SUB`_subtype(?(), `_IDX`_typeuse(x')*{x' <- `x'*`}, comptype'))] -[visit_exp $unrolldt(C.`TYPES`_context[x!`%`_idx.0])] -[visit_exp C.`TYPES`_context[x!`%`_idx.0]] -[visit_exp C.`TYPES`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `SUB`_subtype(?(), `_IDX`_typeuse(x')*{x' <- `x'*`}, comptype')] -[visit_exp (?(), `_IDX`_typeuse(x')*{x' <- `x'*`}, comptype')] -[visit_exp ?()] -[visit_exp `_IDX`_typeuse(x')*{x' <- `x'*`}] -[scope_enter x'] -[visit_exp `_IDX`_typeuse(x')] -[visit_exp (x')] -[visit_exp x'] -[visit_id x'] not free -[visit_id x'] not free -[scope_exit x'] -[visit_exp `x'*`] -[visit_id x'*] not free -[visit_id x'*] no dims -[visit_exp comptype'] -[visit_id comptype'] not free -[visit_id comptype'] not free -[visit_id x] not free -[visit_id x'*] not free -[visit_id x'*] no dims -[scope_exit x'*] -[scope_exit x] -[scope_exit comptype'] -[visit_exp `comptype'*`] -[visit_id comptype'*] no dims -[visit_id comptype'*] -[visit_exp `x*`] -[visit_id x*] not free -[visit_id x*] no dims -[visit_exp `x'**`] -[visit_id x'**] no dims -[visit_id x'**] -[visit_exp (C, comptype)] -[visit_exp C] -[visit_id C] not free -[visit_exp comptype] -[visit_id comptype] not free -[scope_enter comptype'] -[visit_exp (C, comptype, comptype')] -[visit_exp C] -[visit_id C] not free -[visit_exp comptype] -[visit_id comptype] not free -[visit_exp comptype'] -[visit_id comptype'] not free -[visit_id comptype'] not free -[scope_exit comptype'] -[visit_exp `comptype'*`] -[visit_id comptype'*] not free -[visit_id comptype'*] no dims -[check_dims] nat typeidx typeuse -DecD before(typeuse : typeuse, typeidx : typeidx, nat : nat) : bool -[visit_id typeuse] not free -[visit_id typeidx] not free -[visit_id nat] not free -[check_dims] deftype i x -[visit_exp (deftype : deftype <: typeuse)] -[visit_exp deftype] -[visit_id deftype] -[visit_exp x] -[visit_id x] -[visit_exp i] -[visit_id i] -[visit_exp true] -=> - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $before{deftype : deftype, x : idx, i : nat}((deftype : deftype <: typeuse), x, i) = true -[check_dims] i typeidx x -[visit_exp `_IDX`_typeuse(typeidx)] -[visit_exp (typeidx)] -[visit_exp typeidx] -[visit_id typeidx] -[visit_exp x] -[visit_id x] -[visit_exp i] -[visit_id i] -[visit_exp (typeidx!`%`_typeidx.0 < x!`%`_idx.0)] -[visit_exp typeidx!`%`_typeidx.0] -[visit_exp typeidx!`%`_typeidx] -[visit_exp typeidx] -[visit_id typeidx] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -=> - ;; ../../../../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) -[check_dims] i j x -[visit_exp `REC`_typeuse(j)] -[visit_exp (j)] -[visit_exp j] -[visit_id j] -[visit_exp x] -[visit_id x] -[visit_exp i] -[visit_id i] -[visit_exp (j < i)] -[visit_exp j] -[visit_id j] not free -[visit_exp i] -[visit_id i] not free -=> - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $before{j : n, x : idx, i : nat}(`REC`_typeuse(j), x, i) = (j < i) -[check_dims] context heaptype -DecD unrollht(context : context, heaptype : heaptype) : subtype -[visit_id context] not free -[visit_id heaptype] not free -[check_dims] C deftype -[visit_exp C] -[visit_id C] -[visit_exp (deftype : deftype <: heaptype)] -[visit_exp deftype] -[visit_id deftype] -[visit_exp $unrolldt(deftype)] -[visit_exp deftype] -[visit_id deftype] not free -=> - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $unrollht{C : context, deftype : deftype}(C, (deftype : deftype <: heaptype)) = $unrolldt(deftype) -[check_dims] C typeidx -[visit_exp C] -[visit_id C] -[visit_exp `_IDX`_heaptype(typeidx)] -[visit_exp (typeidx)] -[visit_exp typeidx] -[visit_id typeidx] -[visit_exp $unrolldt(C.`TYPES`_context[typeidx!`%`_typeidx.0])] -[visit_exp C.`TYPES`_context[typeidx!`%`_typeidx.0]] -[visit_exp C.`TYPES`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp typeidx!`%`_typeidx.0] -[visit_exp typeidx!`%`_typeidx] -[visit_exp typeidx] -[visit_id typeidx] not free -=> - ;; ../../../../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]) -[check_dims] C i -[visit_exp C] -[visit_id C] -[visit_exp `REC`_heaptype(i)] -[visit_exp (i)] -[visit_exp i] -[visit_id i] -[visit_exp C.`RECS`_context[i]] -[visit_exp C.`RECS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp i] -[visit_id i] not free -=> - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $unrollht{C : context, i : n}(C, `REC`_heaptype(i)) = C.`RECS`_context[i] -[check_dims] C compttype comptype comptype' i typeuse typeuse' x -[visit_exp C] -[visit_id C] -[visit_exp `SUB`_subtype(`FINAL`_final?{}, typeuse*{typeuse <- `typeuse*`}, compttype)] -[visit_exp (`FINAL`_final?{}, typeuse*{typeuse <- `typeuse*`}, compttype)] -[visit_exp `FINAL`_final?{}] -[visit_exp `FINAL`_final] -[visit_exp ()] -[visit_exp typeuse*{typeuse <- `typeuse*`}] -[scope_enter typeuse] -[visit_exp typeuse] -[visit_id typeuse] not free -[visit_id typeuse] not free -[scope_exit typeuse] -[visit_exp `typeuse*`] -[visit_id typeuse*] no dims -[visit_id typeuse*] -[visit_exp compttype] -[visit_id compttype] -[visit_exp `OK`_oktypeidxnat(x, i)] -[visit_exp (x, i)] -[visit_exp x] -[visit_id x] -[visit_exp i] -[visit_id i] -[visit_exp (|typeuse*{typeuse <- `typeuse*`}| <= 1)] -[visit_exp |typeuse*{typeuse <- `typeuse*`}|] -[visit_exp typeuse*{typeuse <- `typeuse*`}] -[scope_enter typeuse] -[visit_exp typeuse] -[visit_id typeuse] not free -[visit_id typeuse] not free -[scope_exit typeuse] -[visit_exp `typeuse*`] -[visit_id typeuse*] not free -[visit_id typeuse*] no dims -[visit_exp 1] -[scope_enter typeuse] -[visit_exp $before(typeuse, x, i)] -[visit_exp typeuse] -[visit_id typeuse] not free -[visit_exp x] -[visit_id x] not free -[visit_exp i] -[visit_id i] not free -[visit_id typeuse] not free -[scope_exit typeuse] -[visit_exp `typeuse*`] -[visit_id typeuse*] not free -[visit_id typeuse*] no dims -[scope_enter comptype'] -[scope_enter typeuse] -[scope_enter typeuse'*] -[visit_exp ($unrollht(C, (typeuse : typeuse <: heaptype)) = `SUB`_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype'))] -[visit_exp $unrollht(C, (typeuse : typeuse <: heaptype))] -[visit_exp C] -[visit_id C] not free -[visit_exp (typeuse : typeuse <: heaptype)] -[visit_exp typeuse] -[visit_id typeuse] not free -[visit_exp `SUB`_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')] -[visit_exp (?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')] -[visit_exp ?()] -[visit_exp typeuse'*{typeuse' <- `typeuse'*`}] -[scope_enter typeuse'] -[visit_exp typeuse'] -[visit_id typeuse'] not free -[visit_id typeuse'] not free -[scope_exit typeuse'] -[visit_exp `typeuse'*`] -[visit_id typeuse'*] not free -[visit_id typeuse'*] no dims -[visit_exp comptype'] -[visit_id comptype'] not free -[visit_id comptype'] not free -[visit_id typeuse] not free -[visit_id typeuse'*] not free -[visit_id typeuse'*] no dims -[scope_exit typeuse'*] -[scope_exit typeuse] -[scope_exit comptype'] -[visit_exp `comptype'*`] -[visit_id comptype'*] no dims -[visit_id comptype'*] -[visit_exp `typeuse*`] -[visit_id typeuse*] not free -[visit_id typeuse*] no dims -[visit_exp `typeuse'**`] -[visit_id typeuse'**] no dims -[visit_id typeuse'**] -[visit_exp (C, comptype)] -[visit_exp C] -[visit_id C] not free -[visit_exp comptype] -[visit_id comptype] -[scope_enter comptype'] -[visit_exp (C, comptype, comptype')] -[visit_exp C] -[visit_id C] not free -[visit_exp comptype] -[visit_id comptype] not free -[visit_exp comptype'] -[visit_id comptype'] not free -[visit_id comptype'] not free -[scope_exit comptype'] -[visit_exp `comptype'*`] -[visit_id comptype'*] not free -[visit_id comptype'*] no dims -[check_dims] C x -[visit_exp C] -[visit_id C] -[visit_exp `REC`_rectype(`%`_list([]))] -[visit_exp (`%`_list([]))] -[visit_exp `%`_list([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp `OK`_oktypeidx(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[check_dims] C subtype subtype_1 x -[visit_exp C] -[visit_id C] -[visit_exp `REC`_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`}))] -[visit_exp (`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`}))] -[visit_exp `%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})] -[visit_exp ([subtype_1] ++ subtype*{subtype <- `subtype*`})] -[visit_exp [subtype_1] ++ subtype*{subtype <- `subtype*`}] -[visit_exp [subtype_1]] -[visit_exp subtype_1] -[visit_id subtype_1] -[visit_exp subtype*{subtype <- `subtype*`}] -[scope_enter subtype] -[visit_exp subtype] -[visit_id subtype] not free -[visit_id subtype] not free -[scope_exit subtype] -[visit_exp `subtype*`] -[visit_id subtype*] no dims -[visit_id subtype*] -[visit_exp `OK`_oktypeidx(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp (C, subtype_1, `OK`_oktypeidx(x))] -[visit_exp C] -[visit_id C] not free -[visit_exp subtype_1] -[visit_id subtype_1] not free -[visit_exp `OK`_oktypeidx(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] not free -[visit_exp (C, `REC`_rectype(`%`_list(subtype*{subtype <- `subtype*`})), `OK`_oktypeidx(`%`_typeidx((x!`%`_idx.0 + 1))))] -[visit_exp C] -[visit_id C] not free -[visit_exp `REC`_rectype(`%`_list(subtype*{subtype <- `subtype*`}))] -[visit_exp (`%`_list(subtype*{subtype <- `subtype*`}))] -[visit_exp `%`_list(subtype*{subtype <- `subtype*`})] -[visit_exp (subtype*{subtype <- `subtype*`})] -[visit_exp subtype*{subtype <- `subtype*`}] -[scope_enter subtype] -[visit_exp subtype] -[visit_id subtype] not free -[visit_id subtype] not free -[scope_exit subtype] -[visit_exp `subtype*`] -[visit_id subtype*] not free -[visit_id subtype*] no dims -[visit_exp `OK`_oktypeidx(`%`_typeidx((x!`%`_idx.0 + 1)))] -[visit_exp (`%`_typeidx((x!`%`_idx.0 + 1)))] -[visit_exp `%`_typeidx((x!`%`_idx.0 + 1))] -[visit_exp ((x!`%`_idx.0 + 1))] -[visit_exp (x!`%`_idx.0 + 1)] -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp 1] -[check_dims] C subtype x -[visit_exp C] -[visit_id C] -[visit_exp `REC`_rectype(`%`_list(subtype*{subtype <- `subtype*`}))] -[visit_exp (`%`_list(subtype*{subtype <- `subtype*`}))] -[visit_exp `%`_list(subtype*{subtype <- `subtype*`})] -[visit_exp (subtype*{subtype <- `subtype*`})] -[visit_exp subtype*{subtype <- `subtype*`}] -[scope_enter subtype] -[visit_exp subtype] -[visit_id subtype] not free -[visit_id subtype] not free -[scope_exit subtype] -[visit_exp `subtype*`] -[visit_id subtype*] no dims -[visit_id subtype*] -[visit_exp `OK`_oktypeidx(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp ({`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))] -[visit_exp {`TYPES` [], `RECS` subtype*{subtype <- `subtype*`}, `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []} +++ C] -[visit_exp {`TYPES` [], `RECS` subtype*{subtype <- `subtype*`}, `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}] -[visit_exp []] -[visit_exp subtype*{subtype <- `subtype*`}] -[scope_enter subtype] -[visit_exp subtype] -[visit_id subtype] not free -[visit_id subtype] not free -[scope_exit subtype] -[visit_exp `subtype*`] -[visit_id subtype*] not free -[visit_id subtype*] no dims -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp ?()] -[visit_exp []] -[visit_exp C] -[visit_id C] not free -[visit_exp `REC`_rectype(`%`_list(subtype*{subtype <- `subtype*`}))] -[visit_exp (`%`_list(subtype*{subtype <- `subtype*`}))] -[visit_exp `%`_list(subtype*{subtype <- `subtype*`})] -[visit_exp (subtype*{subtype <- `subtype*`})] -[visit_exp subtype*{subtype <- `subtype*`}] -[scope_enter subtype] -[visit_exp subtype] -[visit_id subtype] not free -[visit_id subtype] not free -[scope_exit subtype] -[visit_exp `subtype*`] -[visit_id subtype*] not free -[visit_id subtype*] no dims -[visit_exp `OK`_oktypeidxnat(x, 0)] -[visit_exp (x, 0)] -[visit_exp x] -[visit_id x] not free -[visit_exp 0] -[check_dims] C i x -[visit_exp C] -[visit_id C] -[visit_exp `REC`_rectype(`%`_list([]))] -[visit_exp (`%`_list([]))] -[visit_exp `%`_list([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp `OK`_oktypeidxnat(x, i)] -[visit_exp (x, i)] -[visit_exp x] -[visit_id x] -[visit_exp i] -[visit_id i] -[check_dims] C i subtype subtype_1 x -[visit_exp C] -[visit_id C] -[visit_exp `REC`_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`}))] -[visit_exp (`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`}))] -[visit_exp `%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})] -[visit_exp ([subtype_1] ++ subtype*{subtype <- `subtype*`})] -[visit_exp [subtype_1] ++ subtype*{subtype <- `subtype*`}] -[visit_exp [subtype_1]] -[visit_exp subtype_1] -[visit_id subtype_1] -[visit_exp subtype*{subtype <- `subtype*`}] -[scope_enter subtype] -[visit_exp subtype] -[visit_id subtype] not free -[visit_id subtype] not free -[scope_exit subtype] -[visit_exp `subtype*`] -[visit_id subtype*] no dims -[visit_id subtype*] -[visit_exp `OK`_oktypeidxnat(x, i)] -[visit_exp (x, i)] -[visit_exp x] -[visit_id x] -[visit_exp i] -[visit_id i] -[visit_exp (C, subtype_1, `OK`_oktypeidxnat(x, i))] -[visit_exp C] -[visit_id C] not free -[visit_exp subtype_1] -[visit_id subtype_1] not free -[visit_exp `OK`_oktypeidxnat(x, i)] -[visit_exp (x, i)] -[visit_exp x] -[visit_id x] not free -[visit_exp i] -[visit_id i] not free -[visit_exp (C, `REC`_rectype(`%`_list(subtype*{subtype <- `subtype*`})), `OK`_oktypeidxnat(`%`_typeidx((x!`%`_idx.0 + 1)), (i + 1)))] -[visit_exp C] -[visit_id C] not free -[visit_exp `REC`_rectype(`%`_list(subtype*{subtype <- `subtype*`}))] -[visit_exp (`%`_list(subtype*{subtype <- `subtype*`}))] -[visit_exp `%`_list(subtype*{subtype <- `subtype*`})] -[visit_exp (subtype*{subtype <- `subtype*`})] -[visit_exp subtype*{subtype <- `subtype*`}] -[scope_enter subtype] -[visit_exp subtype] -[visit_id subtype] not free -[visit_id subtype] not free -[scope_exit subtype] -[visit_exp `subtype*`] -[visit_id subtype*] not free -[visit_id subtype*] no dims -[visit_exp `OK`_oktypeidxnat(`%`_typeidx((x!`%`_idx.0 + 1)), (i + 1))] -[visit_exp (`%`_typeidx((x!`%`_idx.0 + 1)), (i + 1))] -[visit_exp `%`_typeidx((x!`%`_idx.0 + 1))] -[visit_exp ((x!`%`_idx.0 + 1))] -[visit_exp (x!`%`_idx.0 + 1)] -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp 1] -[visit_exp (i + 1)] -[visit_exp i] -[visit_id i] not free -[visit_exp 1] -[check_dims] C i n rectype subtype x -[visit_exp C] -[visit_id C] -[visit_exp `_DEF`_deftype(rectype, i)] -[visit_exp (rectype, i)] -[visit_exp rectype] -[visit_id rectype] -[visit_exp i] -[visit_id i] -[visit_exp (C, rectype, `OK`_oktypeidx(x))] -[visit_exp C] -[visit_id C] not free -[visit_exp rectype] -[visit_id rectype] not free -[visit_exp `OK`_oktypeidx(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp (rectype = `REC`_rectype(`%`_list(subtype^n{subtype <- `subtype*`})))] -[visit_exp rectype] -[visit_id rectype] not free -[visit_exp `REC`_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))] -[visit_exp (`%`_list(subtype^n{subtype <- `subtype*`}))] -[visit_exp `%`_list(subtype^n{subtype <- `subtype*`})] -[visit_exp (subtype^n{subtype <- `subtype*`})] -[visit_exp subtype^n{subtype <- `subtype*`}] -[scope_enter subtype] -[visit_exp subtype] -[visit_id subtype] not free -[visit_id subtype] not free -[scope_exit subtype] -[visit_exp n] -[visit_id n] -[visit_exp `subtype*`] -[visit_id subtype*] no dims -[visit_id subtype*] -[visit_exp (i < n)] -[visit_exp i] -[visit_id i] not free -[visit_exp n] -[visit_id n] not free -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] C k m n -[visit_exp C] -[visit_id C] -[visit_exp `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`})] -[visit_exp (`%`_u64(n), `%`_u64(m)?{m <- `m?`})] -[visit_exp `%`_u64(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `%`_u64(m)?{m <- `m?`}] -[scope_enter m] -[visit_exp `%`_u64(m)] -[visit_exp (m)] -[visit_exp m] -[visit_id m] not free -[visit_id m] not free -[scope_exit m] -[visit_exp `m?`] -[visit_id m?] no dims -[visit_id m?] -[visit_exp k] -[visit_id k] -[visit_exp (n <= k)] -[visit_exp n] -[visit_id n] not free -[visit_exp k] -[visit_id k] not free -[scope_enter m] -[visit_exp ((n <= m) /\ (m <= k))] -[visit_exp (n <= m)] -[visit_exp n] -[visit_id n] not free -[visit_exp m] -[visit_id m] not free -[visit_exp (m <= k)] -[visit_exp m] -[visit_id m] not free -[visit_exp k] -[visit_id k] not free -[visit_id m] not free -[scope_exit m] -[visit_exp `m?`] -[visit_id m?] not free -[visit_id m?] no dims -[check_dims] C t_1 t_2 typeuse -[visit_exp C] -[visit_id C] -[visit_exp typeuse] -[visit_id typeuse] -[visit_exp (C, typeuse)] -[visit_exp C] -[visit_id C] not free -[visit_exp typeuse] -[visit_id typeuse] not free -[visit_exp (typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))] -[visit_exp typeuse] -[visit_id typeuse] not free -[visit_exp C] -[visit_id C] not free -[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] no dims -[visit_id t_1*] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] no dims -[visit_id t_2*] -[check_dims] C t -[visit_exp C] -[visit_id C] -[visit_exp `%%`_globaltype(`MUT`_mut?{}, t)] -[visit_exp (`MUT`_mut?{}, t)] -[visit_exp `MUT`_mut?{}] -[visit_exp `MUT`_mut] -[visit_exp ()] -[visit_exp t] -[visit_id t] -[visit_exp (C, t)] -[visit_exp C] -[visit_id C] not free -[visit_exp t] -[visit_id t] not free -[check_dims] C addrtype limits -[visit_exp C] -[visit_id C] -[visit_exp `%%PAGE`_memtype(addrtype, limits)] -[visit_exp (addrtype, limits)] -[visit_exp addrtype] -[visit_id addrtype] -[visit_exp limits] -[visit_id limits] -[visit_exp (C, limits, (2 ^ 16))] -[visit_exp C] -[visit_id C] not free -[visit_exp limits] -[visit_id limits] not free -[visit_exp (2 ^ 16)] -[visit_exp 2] -[visit_exp 16] -[check_dims] C addrtype limits reftype -[visit_exp C] -[visit_id C] -[visit_exp `%%%`_tabletype(addrtype, limits, reftype)] -[visit_exp (addrtype, limits, reftype)] -[visit_exp addrtype] -[visit_id addrtype] -[visit_exp limits] -[visit_id limits] -[visit_exp reftype] -[visit_id reftype] -[visit_exp (C, limits, ((((2 ^ 32) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp C] -[visit_id C] not free -[visit_exp limits] -[visit_id limits] not free -[visit_exp ((((2 ^ 32) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp (((2 ^ 32) : nat <:> int) - (1 : nat <:> int))] -[visit_exp ((2 ^ 32) : nat <:> int)] -[visit_exp (2 ^ 32)] -[visit_exp 2] -[visit_exp 32] -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp (C, reftype)] -[visit_exp C] -[visit_id C] not free -[visit_exp reftype] -[visit_id reftype] not free -[check_dims] C tagtype -[visit_exp C] -[visit_id C] -[visit_exp `TAG`_externtype(tagtype)] -[visit_exp (tagtype)] -[visit_exp tagtype] -[visit_id tagtype] -[visit_exp (C, tagtype)] -[visit_exp C] -[visit_id C] not free -[visit_exp tagtype] -[visit_id tagtype] not free -[check_dims] C globaltype -[visit_exp C] -[visit_id C] -[visit_exp `GLOBAL`_externtype(globaltype)] -[visit_exp (globaltype)] -[visit_exp globaltype] -[visit_id globaltype] -[visit_exp (C, globaltype)] -[visit_exp C] -[visit_id C] not free -[visit_exp globaltype] -[visit_id globaltype] not free -[check_dims] C memtype -[visit_exp C] -[visit_id C] -[visit_exp `MEM`_externtype(memtype)] -[visit_exp (memtype)] -[visit_exp memtype] -[visit_id memtype] -[visit_exp (C, memtype)] -[visit_exp C] -[visit_id C] not free -[visit_exp memtype] -[visit_id memtype] not free -[check_dims] C tabletype -[visit_exp C] -[visit_id C] -[visit_exp `TABLE`_externtype(tabletype)] -[visit_exp (tabletype)] -[visit_exp tabletype] -[visit_id tabletype] -[visit_exp (C, tabletype)] -[visit_exp C] -[visit_id C] not free -[visit_exp tabletype] -[visit_id tabletype] not free -[check_dims] C t_1 t_2 typeuse -[visit_exp C] -[visit_id C] -[visit_exp `FUNC`_externtype(typeuse)] -[visit_exp (typeuse)] -[visit_exp typeuse] -[visit_id typeuse] -[visit_exp (C, typeuse)] -[visit_exp C] -[visit_id C] not free -[visit_exp typeuse] -[visit_id typeuse] not free -[visit_exp (typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))] -[visit_exp typeuse] -[visit_id typeuse] not free -[visit_exp C] -[visit_id C] not free -[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] no dims -[visit_id t_1*] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] no dims -[visit_id t_2*] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] C numtype -[visit_exp C] -[visit_id C] -[visit_exp numtype] -[visit_id numtype] -[visit_exp numtype] -[visit_id numtype] not free -[check_dims] C vectype -[visit_exp C] -[visit_id C] -[visit_exp vectype] -[visit_id vectype] -[visit_exp vectype] -[visit_id vectype] not free -[check_dims] C heaptype -[visit_exp C] -[visit_id C] -[visit_exp heaptype] -[visit_id heaptype] -[visit_exp heaptype] -[visit_id heaptype] not free -[check_dims] C heaptype' heaptype_1 heaptype_2 -[visit_exp C] -[visit_id C] -[visit_exp heaptype_1] -[visit_id heaptype_1] -[visit_exp heaptype_2] -[visit_id heaptype_2] -[visit_exp (C, heaptype')] -[visit_exp C] -[visit_id C] not free -[visit_exp heaptype'] -[visit_id heaptype'] -[visit_exp (C, heaptype_1, heaptype')] -[visit_exp C] -[visit_id C] not free -[visit_exp heaptype_1] -[visit_id heaptype_1] not free -[visit_exp heaptype'] -[visit_id heaptype'] not free -[visit_exp (C, heaptype', heaptype_2)] -[visit_exp C] -[visit_id C] not free -[visit_exp heaptype'] -[visit_id heaptype'] not free -[visit_exp heaptype_2] -[visit_id heaptype_2] not free -[check_dims] C -[visit_exp C] -[visit_id C] -[visit_exp `EQ`_heaptype] -[visit_exp ()] -[visit_exp `ANY`_heaptype] -[visit_exp ()] -[check_dims] C -[visit_exp C] -[visit_id C] -[visit_exp `I31`_heaptype] -[visit_exp ()] -[visit_exp `EQ`_heaptype] -[visit_exp ()] -[check_dims] C -[visit_exp C] -[visit_id C] -[visit_exp `STRUCT`_heaptype] -[visit_exp ()] -[visit_exp `EQ`_heaptype] -[visit_exp ()] -[check_dims] C -[visit_exp C] -[visit_id C] -[visit_exp `ARRAY`_heaptype] -[visit_exp ()] -[visit_exp `EQ`_heaptype] -[visit_exp ()] -[check_dims] C deftype fieldtype -[visit_exp C] -[visit_id C] -[visit_exp (deftype : deftype <: heaptype)] -[visit_exp deftype] -[visit_id deftype] -[visit_exp `STRUCT`_heaptype] -[visit_exp ()] -[visit_exp (deftype, `STRUCT`_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`})))] -[visit_exp deftype] -[visit_id deftype] not free -[visit_exp `STRUCT`_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))] -[visit_exp (`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))] -[visit_exp `%`_list(fieldtype*{fieldtype <- `fieldtype*`})] -[visit_exp (fieldtype*{fieldtype <- `fieldtype*`})] -[visit_exp fieldtype*{fieldtype <- `fieldtype*`}] -[scope_enter fieldtype] -[visit_exp fieldtype] -[visit_id fieldtype] not free -[visit_id fieldtype] not free -[scope_exit fieldtype] -[visit_exp `fieldtype*`] -[visit_id fieldtype*] no dims -[visit_id fieldtype*] -[check_dims] C deftype fieldtype -[visit_exp C] -[visit_id C] -[visit_exp (deftype : deftype <: heaptype)] -[visit_exp deftype] -[visit_id deftype] -[visit_exp `ARRAY`_heaptype] -[visit_exp ()] -[visit_exp (deftype, `ARRAY`_comptype(fieldtype))] -[visit_exp deftype] -[visit_id deftype] not free -[visit_exp `ARRAY`_comptype(fieldtype)] -[visit_exp (fieldtype)] -[visit_exp fieldtype] -[visit_id fieldtype] -[check_dims] C deftype t_1 t_2 -[visit_exp C] -[visit_id C] -[visit_exp (deftype : deftype <: heaptype)] -[visit_exp deftype] -[visit_id deftype] -[visit_exp `FUNC`_heaptype] -[visit_exp ()] -[visit_exp (deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))] -[visit_exp deftype] -[visit_id deftype] not free -[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] no dims -[visit_id t_1*] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] no dims -[visit_id t_2*] -[check_dims] C deftype_1 deftype_2 -[visit_exp C] -[visit_id C] -[visit_exp (deftype_1 : deftype <: heaptype)] -[visit_exp deftype_1] -[visit_id deftype_1] -[visit_exp (deftype_2 : deftype <: heaptype)] -[visit_exp deftype_2] -[visit_id deftype_2] -[visit_exp (C, deftype_1, deftype_2)] -[visit_exp C] -[visit_id C] not free -[visit_exp deftype_1] -[visit_id deftype_1] not free -[visit_exp deftype_2] -[visit_id deftype_2] not free -[check_dims] C heaptype typeidx -[visit_exp C] -[visit_id C] -[visit_exp `_IDX`_heaptype(typeidx)] -[visit_exp (typeidx)] -[visit_exp typeidx] -[visit_id typeidx] -[visit_exp heaptype] -[visit_id heaptype] -[visit_exp (C, (C.`TYPES`_context[typeidx!`%`_typeidx.0] : deftype <: heaptype), heaptype)] -[visit_exp C] -[visit_id C] not free -[visit_exp (C.`TYPES`_context[typeidx!`%`_typeidx.0] : deftype <: heaptype)] -[visit_exp C.`TYPES`_context[typeidx!`%`_typeidx.0]] -[visit_exp C.`TYPES`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp typeidx!`%`_typeidx.0] -[visit_exp typeidx!`%`_typeidx] -[visit_exp typeidx] -[visit_id typeidx] not free -[visit_exp heaptype] -[visit_id heaptype] not free -[check_dims] C heaptype typeidx -[visit_exp C] -[visit_id C] -[visit_exp heaptype] -[visit_id heaptype] -[visit_exp `_IDX`_heaptype(typeidx)] -[visit_exp (typeidx)] -[visit_exp typeidx] -[visit_id typeidx] -[visit_exp (C, heaptype, (C.`TYPES`_context[typeidx!`%`_typeidx.0] : deftype <: heaptype))] -[visit_exp C] -[visit_id C] not free -[visit_exp heaptype] -[visit_id heaptype] not free -[visit_exp (C.`TYPES`_context[typeidx!`%`_typeidx.0] : deftype <: heaptype)] -[visit_exp C.`TYPES`_context[typeidx!`%`_typeidx.0]] -[visit_exp C.`TYPES`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp typeidx!`%`_typeidx.0] -[visit_exp typeidx!`%`_typeidx] -[visit_exp typeidx] -[visit_id typeidx] not free -[check_dims] C ct final i j typeuse -[visit_exp C] -[visit_id C] -[visit_exp `REC`_heaptype(i)] -[visit_exp (i)] -[visit_exp i] -[visit_id i] -[visit_exp (typeuse*{typeuse <- `typeuse*`}[j] : typeuse <: heaptype)] -[visit_exp typeuse*{typeuse <- `typeuse*`}[j]] -[visit_exp typeuse*{typeuse <- `typeuse*`}] -[scope_enter typeuse] -[visit_exp typeuse] -[visit_id typeuse] not free -[visit_id typeuse] not free -[scope_exit typeuse] -[visit_exp `typeuse*`] -[visit_id typeuse*] no dims -[visit_id typeuse*] -[visit_exp j] -[visit_id j] -[visit_exp (C.`RECS`_context[i] = `SUB`_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct))] -[visit_exp C.`RECS`_context[i]] -[visit_exp C.`RECS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp i] -[visit_id i] not free -[visit_exp `SUB`_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)] -[visit_exp (final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)] -[visit_exp final?{final <- `final?`}] -[scope_enter final] -[visit_exp final] -[visit_id final] not free -[visit_id final] not free -[scope_exit final] -[visit_exp `final?`] -[visit_id final?] no dims -[visit_id final?] -[visit_exp typeuse*{typeuse <- `typeuse*`}] -[scope_enter typeuse] -[visit_exp typeuse] -[visit_id typeuse] not free -[visit_id typeuse] not free -[scope_exit typeuse] -[visit_exp `typeuse*`] -[visit_id typeuse*] not free -[visit_id typeuse*] no dims -[visit_exp ct] -[visit_id ct] -[check_dims] C heaptype -[visit_exp C] -[visit_id C] -[visit_exp `NONE`_heaptype] -[visit_exp ()] -[visit_exp heaptype] -[visit_id heaptype] -[visit_exp (C, heaptype, `ANY`_heaptype)] -[visit_exp C] -[visit_id C] not free -[visit_exp heaptype] -[visit_id heaptype] not free -[visit_exp `ANY`_heaptype] -[visit_exp ()] -[check_dims] C heaptype -[visit_exp C] -[visit_id C] -[visit_exp `NOFUNC`_heaptype] -[visit_exp ()] -[visit_exp heaptype] -[visit_id heaptype] -[visit_exp (C, heaptype, `FUNC`_heaptype)] -[visit_exp C] -[visit_id C] not free -[visit_exp heaptype] -[visit_id heaptype] not free -[visit_exp `FUNC`_heaptype] -[visit_exp ()] -[check_dims] C heaptype -[visit_exp C] -[visit_id C] -[visit_exp `NOEXN`_heaptype] -[visit_exp ()] -[visit_exp heaptype] -[visit_id heaptype] -[visit_exp (C, heaptype, `EXN`_heaptype)] -[visit_exp C] -[visit_id C] not free -[visit_exp heaptype] -[visit_id heaptype] not free -[visit_exp `EXN`_heaptype] -[visit_exp ()] -[check_dims] C heaptype -[visit_exp C] -[visit_id C] -[visit_exp `NOEXTERN`_heaptype] -[visit_exp ()] -[visit_exp heaptype] -[visit_id heaptype] -[visit_exp (C, heaptype, `EXTERN`_heaptype)] -[visit_exp C] -[visit_id C] not free -[visit_exp heaptype] -[visit_id heaptype] not free -[visit_exp `EXTERN`_heaptype] -[visit_exp ()] -[check_dims] C heaptype -[visit_exp C] -[visit_id C] -[visit_exp `BOT`_heaptype] -[visit_exp ()] -[visit_exp heaptype] -[visit_id heaptype] -[check_dims] C ht_1 ht_2 -[visit_exp C] -[visit_id C] -[visit_exp `REF`_reftype(?(), ht_1)] -[visit_exp (?(), ht_1)] -[visit_exp ?()] -[visit_exp ht_1] -[visit_id ht_1] -[visit_exp `REF`_reftype(?(), ht_2)] -[visit_exp (?(), ht_2)] -[visit_exp ?()] -[visit_exp ht_2] -[visit_id ht_2] -[visit_exp (C, ht_1, ht_2)] -[visit_exp C] -[visit_id C] not free -[visit_exp ht_1] -[visit_id ht_1] not free -[visit_exp ht_2] -[visit_id ht_2] not free -[check_dims] C ht_1 ht_2 -[visit_exp C] -[visit_id C] -[visit_exp `REF`_reftype(`NULL`_null?{}, ht_1)] -[visit_exp (`NULL`_null?{}, ht_1)] -[visit_exp `NULL`_null?{}] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp ht_1] -[visit_id ht_1] -[visit_exp `REF`_reftype(?(`NULL`_null), ht_2)] -[visit_exp (?(`NULL`_null), ht_2)] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp ht_2] -[visit_id ht_2] -[visit_exp (C, ht_1, ht_2)] -[visit_exp C] -[visit_id C] not free -[visit_exp ht_1] -[visit_id ht_1] not free -[visit_exp ht_2] -[visit_id ht_2] not free -[check_dims] C numtype_1 numtype_2 -[visit_exp C] -[visit_id C] -[visit_exp (numtype_1 : numtype <: valtype)] -[visit_exp numtype_1] -[visit_id numtype_1] -[visit_exp (numtype_2 : numtype <: valtype)] -[visit_exp numtype_2] -[visit_id numtype_2] -[visit_exp (C, numtype_1, numtype_2)] -[visit_exp C] -[visit_id C] not free -[visit_exp numtype_1] -[visit_id numtype_1] not free -[visit_exp numtype_2] -[visit_id numtype_2] not free -[check_dims] C vectype_1 vectype_2 -[visit_exp C] -[visit_id C] -[visit_exp (vectype_1 : vectype <: valtype)] -[visit_exp vectype_1] -[visit_id vectype_1] -[visit_exp (vectype_2 : vectype <: valtype)] -[visit_exp vectype_2] -[visit_id vectype_2] -[visit_exp (C, vectype_1, vectype_2)] -[visit_exp C] -[visit_id C] not free -[visit_exp vectype_1] -[visit_id vectype_1] not free -[visit_exp vectype_2] -[visit_id vectype_2] not free -[check_dims] C reftype_1 reftype_2 -[visit_exp C] -[visit_id C] -[visit_exp (reftype_1 : reftype <: valtype)] -[visit_exp reftype_1] -[visit_id reftype_1] -[visit_exp (reftype_2 : reftype <: valtype)] -[visit_exp reftype_2] -[visit_id reftype_2] -[visit_exp (C, reftype_1, reftype_2)] -[visit_exp C] -[visit_id C] not free -[visit_exp reftype_1] -[visit_id reftype_1] not free -[visit_exp reftype_2] -[visit_id reftype_2] not free -[check_dims] C valtype -[visit_exp C] -[visit_id C] -[visit_exp `BOT`_valtype] -[visit_exp ()] -[visit_exp valtype] -[visit_id valtype] -[check_dims] -[check_dims] -[check_dims] C t_1 t_2 -[visit_exp C] -[visit_id C] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] no dims -[visit_id t_1*] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] no dims -[visit_id t_2*] -[scope_enter t_1] -[scope_enter t_2] -[visit_exp (C, t_1, t_2)] -[visit_exp C] -[visit_id C] not free -[visit_exp t_1] -[visit_id t_1] not free -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_1] not free -[visit_id t_2] not free -[scope_exit t_2] -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] not free -[visit_id t_1*] no dims -[visit_exp `t_2*`] -[visit_id t_2*] not free -[visit_id t_2*] no dims -[check_dims] C t t_11 t_12 t_21 t_22 x x_1 x_2 -[visit_exp C] -[visit_id C] -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`}))] -[visit_exp (`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`}))] -[visit_exp `%`_resulttype(t_11*{t_11 <- `t_11*`})] -[visit_exp (t_11*{t_11 <- `t_11*`})] -[visit_exp t_11*{t_11 <- `t_11*`}] -[scope_enter t_11] -[visit_exp t_11] -[visit_id t_11] not free -[visit_id t_11] not free -[scope_exit t_11] -[visit_exp `t_11*`] -[visit_id t_11*] no dims -[visit_id t_11*] -[visit_exp x_1*{x_1 <- `x_1*`}] -[scope_enter x_1] -[visit_exp x_1] -[visit_id x_1] not free -[visit_id x_1] not free -[scope_exit x_1] -[visit_exp `x_1*`] -[visit_id x_1*] no dims -[visit_id x_1*] -[visit_exp `%`_resulttype(t_12*{t_12 <- `t_12*`})] -[visit_exp (t_12*{t_12 <- `t_12*`})] -[visit_exp t_12*{t_12 <- `t_12*`}] -[scope_enter t_12] -[visit_exp t_12] -[visit_id t_12] not free -[visit_id t_12] not free -[scope_exit t_12] -[visit_exp `t_12*`] -[visit_id t_12*] no dims -[visit_id t_12*] -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))] -[visit_exp (`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))] -[visit_exp `%`_resulttype(t_21*{t_21 <- `t_21*`})] -[visit_exp (t_21*{t_21 <- `t_21*`})] -[visit_exp t_21*{t_21 <- `t_21*`}] -[scope_enter t_21] -[visit_exp t_21] -[visit_id t_21] not free -[visit_id t_21] not free -[scope_exit t_21] -[visit_exp `t_21*`] -[visit_id t_21*] no dims -[visit_id t_21*] -[visit_exp x_2*{x_2 <- `x_2*`}] -[scope_enter x_2] -[visit_exp x_2] -[visit_id x_2] not free -[visit_id x_2] not free -[scope_exit x_2] -[visit_exp `x_2*`] -[visit_id x_2*] no dims -[visit_id x_2*] -[visit_exp `%`_resulttype(t_22*{t_22 <- `t_22*`})] -[visit_exp (t_22*{t_22 <- `t_22*`})] -[visit_exp t_22*{t_22 <- `t_22*`}] -[scope_enter t_22] -[visit_exp t_22] -[visit_id t_22] not free -[visit_id t_22] not free -[scope_exit t_22] -[visit_exp `t_22*`] -[visit_id t_22*] no dims -[visit_id t_22*] -[visit_exp (C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`}))] -[visit_exp C] -[visit_id C] not free -[visit_exp `%`_resulttype(t_21*{t_21 <- `t_21*`})] -[visit_exp (t_21*{t_21 <- `t_21*`})] -[visit_exp t_21*{t_21 <- `t_21*`}] -[scope_enter t_21] -[visit_exp t_21] -[visit_id t_21] not free -[visit_id t_21] not free -[scope_exit t_21] -[visit_exp `t_21*`] -[visit_id t_21*] not free -[visit_id t_21*] no dims -[visit_exp `%`_resulttype(t_11*{t_11 <- `t_11*`})] -[visit_exp (t_11*{t_11 <- `t_11*`})] -[visit_exp t_11*{t_11 <- `t_11*`}] -[scope_enter t_11] -[visit_exp t_11] -[visit_id t_11] not free -[visit_id t_11] not free -[scope_exit t_11] -[visit_exp `t_11*`] -[visit_id t_11*] not free -[visit_id t_11*] no dims -[visit_exp (C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))] -[visit_exp C] -[visit_id C] not free -[visit_exp `%`_resulttype(t_12*{t_12 <- `t_12*`})] -[visit_exp (t_12*{t_12 <- `t_12*`})] -[visit_exp t_12*{t_12 <- `t_12*`}] -[scope_enter t_12] -[visit_exp t_12] -[visit_id t_12] not free -[visit_id t_12] not free -[scope_exit t_12] -[visit_exp `t_12*`] -[visit_id t_12*] not free -[visit_id t_12*] no dims -[visit_exp `%`_resulttype(t_22*{t_22 <- `t_22*`})] -[visit_exp (t_22*{t_22 <- `t_22*`})] -[visit_exp t_22*{t_22 <- `t_22*`}] -[scope_enter t_22] -[visit_exp t_22] -[visit_id t_22] not free -[visit_id t_22] not free -[scope_exit t_22] -[visit_exp `t_22*`] -[visit_id t_22*] not free -[visit_id t_22*] no dims -[visit_exp (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`}))] -[visit_exp x*{x <- `x*`}] -[scope_enter x] -[visit_exp x] -[visit_id x] not free -[visit_id x] not free -[scope_exit x] -[visit_exp `x*`] -[visit_id x*] no dims -[visit_id x*] -[visit_exp $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})] -[visit_exp x_2*{x_2 <- `x_2*`}] -[scope_enter x_2] -[visit_exp x_2] -[visit_id x_2] not free -[visit_id x_2] not free -[scope_exit x_2] -[visit_exp `x_2*`] -[visit_id x_2*] not free -[visit_id x_2*] no dims -[visit_exp x_1*{x_1 <- `x_1*`}] -[scope_enter x_1] -[visit_exp x_1] -[visit_id x_1] not free -[visit_id x_1] not free -[scope_exit x_1] -[visit_exp `x_1*`] -[visit_id x_1*] not free -[visit_id x_1*] no dims -[scope_enter t] -[scope_enter x] -[visit_exp (C.`LOCALS`_context[x!`%`_idx.0] = `%%`_localtype(`SET`_init, t))] -[visit_exp C.`LOCALS`_context[x!`%`_idx.0]] -[visit_exp C.`LOCALS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `%%`_localtype(`SET`_init, t)] -[visit_exp (`SET`_init, t)] -[visit_exp `SET`_init] -[visit_exp ()] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[visit_id x] not free -[scope_exit x] -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] no dims -[visit_id t*] -[visit_exp `x*`] -[visit_id x*] not free -[visit_id x*] no dims -[check_dims] -[check_dims] -[check_dims] -[check_dims] C packtype -[visit_exp C] -[visit_id C] -[visit_exp packtype] -[visit_id packtype] -[visit_exp packtype] -[visit_id packtype] not free -[check_dims] C valtype_1 valtype_2 -[visit_exp C] -[visit_id C] -[visit_exp (valtype_1 : valtype <: storagetype)] -[visit_exp valtype_1] -[visit_id valtype_1] -[visit_exp (valtype_2 : valtype <: storagetype)] -[visit_exp valtype_2] -[visit_id valtype_2] -[visit_exp (C, valtype_1, valtype_2)] -[visit_exp C] -[visit_id C] not free -[visit_exp valtype_1] -[visit_id valtype_1] not free -[visit_exp valtype_2] -[visit_id valtype_2] not free -[check_dims] C packtype_1 packtype_2 -[visit_exp C] -[visit_id C] -[visit_exp (packtype_1 : packtype <: storagetype)] -[visit_exp packtype_1] -[visit_id packtype_1] -[visit_exp (packtype_2 : packtype <: storagetype)] -[visit_exp packtype_2] -[visit_id packtype_2] -[visit_exp (C, packtype_1, packtype_2)] -[visit_exp C] -[visit_id C] not free -[visit_exp packtype_1] -[visit_id packtype_1] not free -[visit_exp packtype_2] -[visit_id packtype_2] not free -[check_dims] C zt_1 zt_2 -[visit_exp C] -[visit_id C] -[visit_exp `%%`_fieldtype(?(), zt_1)] -[visit_exp (?(), zt_1)] -[visit_exp ?()] -[visit_exp zt_1] -[visit_id zt_1] -[visit_exp `%%`_fieldtype(?(), zt_2)] -[visit_exp (?(), zt_2)] -[visit_exp ?()] -[visit_exp zt_2] -[visit_id zt_2] -[visit_exp (C, zt_1, zt_2)] -[visit_exp C] -[visit_id C] not free -[visit_exp zt_1] -[visit_id zt_1] not free -[visit_exp zt_2] -[visit_id zt_2] not free -[check_dims] C zt_1 zt_2 -[visit_exp C] -[visit_id C] -[visit_exp `%%`_fieldtype(?(`MUT`_mut), zt_1)] -[visit_exp (?(`MUT`_mut), zt_1)] -[visit_exp ?(`MUT`_mut)] -[visit_exp `MUT`_mut] -[visit_exp ()] -[visit_exp zt_1] -[visit_id zt_1] -[visit_exp `%%`_fieldtype(?(`MUT`_mut), zt_2)] -[visit_exp (?(`MUT`_mut), zt_2)] -[visit_exp ?(`MUT`_mut)] -[visit_exp `MUT`_mut] -[visit_exp ()] -[visit_exp zt_2] -[visit_id zt_2] -[visit_exp (C, zt_1, zt_2)] -[visit_exp C] -[visit_id C] not free -[visit_exp zt_1] -[visit_id zt_1] not free -[visit_exp zt_2] -[visit_id zt_2] not free -[visit_exp (C, zt_2, zt_1)] -[visit_exp C] -[visit_id C] not free -[visit_exp zt_2] -[visit_id zt_2] not free -[visit_exp zt_1] -[visit_id zt_1] not free -[check_dims] C ft'_1 ft_1 ft_2 -[visit_exp C] -[visit_id C] -[visit_exp `STRUCT`_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))] -[visit_exp (`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}))] -[visit_exp `%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})] -[visit_exp (ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})] -[visit_exp ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`}] -[visit_exp ft_1*{ft_1 <- `ft_1*`}] -[scope_enter ft_1] -[visit_exp ft_1] -[visit_id ft_1] not free -[visit_id ft_1] not free -[scope_exit ft_1] -[visit_exp `ft_1*`] -[visit_id ft_1*] no dims -[visit_id ft_1*] -[visit_exp ft'_1*{ft'_1 <- `ft'_1*`}] -[scope_enter ft'_1] -[visit_exp ft'_1] -[visit_id ft'_1] not free -[visit_id ft'_1] not free -[scope_exit ft'_1] -[visit_exp `ft'_1*`] -[visit_id ft'_1*] no dims -[visit_id ft'_1*] -[visit_exp `STRUCT`_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))] -[visit_exp (`%`_list(ft_2*{ft_2 <- `ft_2*`}))] -[visit_exp `%`_list(ft_2*{ft_2 <- `ft_2*`})] -[visit_exp (ft_2*{ft_2 <- `ft_2*`})] -[visit_exp ft_2*{ft_2 <- `ft_2*`}] -[scope_enter ft_2] -[visit_exp ft_2] -[visit_id ft_2] not free -[visit_id ft_2] not free -[scope_exit ft_2] -[visit_exp `ft_2*`] -[visit_id ft_2*] no dims -[visit_id ft_2*] -[scope_enter ft_1] -[scope_enter ft_2] -[visit_exp (C, ft_1, ft_2)] -[visit_exp C] -[visit_id C] not free -[visit_exp ft_1] -[visit_id ft_1] not free -[visit_exp ft_2] -[visit_id ft_2] not free -[visit_id ft_1] not free -[visit_id ft_2] not free -[scope_exit ft_2] -[scope_exit ft_1] -[visit_exp `ft_1*`] -[visit_id ft_1*] not free -[visit_id ft_1*] no dims -[visit_exp `ft_2*`] -[visit_id ft_2*] not free -[visit_id ft_2*] no dims -[check_dims] C ft_1 ft_2 -[visit_exp C] -[visit_id C] -[visit_exp `ARRAY`_comptype(ft_1)] -[visit_exp (ft_1)] -[visit_exp ft_1] -[visit_id ft_1] -[visit_exp `ARRAY`_comptype(ft_2)] -[visit_exp (ft_2)] -[visit_exp ft_2] -[visit_id ft_2] -[visit_exp (C, ft_1, ft_2)] -[visit_exp C] -[visit_id C] not free -[visit_exp ft_1] -[visit_id ft_1] not free -[visit_exp ft_2] -[visit_id ft_2] not free -[check_dims] C t_11 t_12 t_21 t_22 -[visit_exp C] -[visit_id C] -[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`}))] -[visit_exp (`%`_resulttype(t_11*{t_11 <- `t_11*`}), `%`_resulttype(t_12*{t_12 <- `t_12*`}))] -[visit_exp `%`_resulttype(t_11*{t_11 <- `t_11*`})] -[visit_exp (t_11*{t_11 <- `t_11*`})] -[visit_exp t_11*{t_11 <- `t_11*`}] -[scope_enter t_11] -[visit_exp t_11] -[visit_id t_11] not free -[visit_id t_11] not free -[scope_exit t_11] -[visit_exp `t_11*`] -[visit_id t_11*] no dims -[visit_id t_11*] -[visit_exp `%`_resulttype(t_12*{t_12 <- `t_12*`})] -[visit_exp (t_12*{t_12 <- `t_12*`})] -[visit_exp t_12*{t_12 <- `t_12*`}] -[scope_enter t_12] -[visit_exp t_12] -[visit_id t_12] not free -[visit_id t_12] not free -[scope_exit t_12] -[visit_exp `t_12*`] -[visit_id t_12*] no dims -[visit_id t_12*] -[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))] -[visit_exp (`%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))] -[visit_exp `%`_resulttype(t_21*{t_21 <- `t_21*`})] -[visit_exp (t_21*{t_21 <- `t_21*`})] -[visit_exp t_21*{t_21 <- `t_21*`}] -[scope_enter t_21] -[visit_exp t_21] -[visit_id t_21] not free -[visit_id t_21] not free -[scope_exit t_21] -[visit_exp `t_21*`] -[visit_id t_21*] no dims -[visit_id t_21*] -[visit_exp `%`_resulttype(t_22*{t_22 <- `t_22*`})] -[visit_exp (t_22*{t_22 <- `t_22*`})] -[visit_exp t_22*{t_22 <- `t_22*`}] -[scope_enter t_22] -[visit_exp t_22] -[visit_id t_22] not free -[visit_id t_22] not free -[scope_exit t_22] -[visit_exp `t_22*`] -[visit_id t_22*] no dims -[visit_id t_22*] -[visit_exp (C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`}))] -[visit_exp C] -[visit_id C] not free -[visit_exp `%`_resulttype(t_21*{t_21 <- `t_21*`})] -[visit_exp (t_21*{t_21 <- `t_21*`})] -[visit_exp t_21*{t_21 <- `t_21*`}] -[scope_enter t_21] -[visit_exp t_21] -[visit_id t_21] not free -[visit_id t_21] not free -[scope_exit t_21] -[visit_exp `t_21*`] -[visit_id t_21*] not free -[visit_id t_21*] no dims -[visit_exp `%`_resulttype(t_11*{t_11 <- `t_11*`})] -[visit_exp (t_11*{t_11 <- `t_11*`})] -[visit_exp t_11*{t_11 <- `t_11*`}] -[scope_enter t_11] -[visit_exp t_11] -[visit_id t_11] not free -[visit_id t_11] not free -[scope_exit t_11] -[visit_exp `t_11*`] -[visit_id t_11*] not free -[visit_id t_11*] no dims -[visit_exp (C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`}))] -[visit_exp C] -[visit_id C] not free -[visit_exp `%`_resulttype(t_12*{t_12 <- `t_12*`})] -[visit_exp (t_12*{t_12 <- `t_12*`})] -[visit_exp t_12*{t_12 <- `t_12*`}] -[scope_enter t_12] -[visit_exp t_12] -[visit_id t_12] not free -[visit_id t_12] not free -[scope_exit t_12] -[visit_exp `t_12*`] -[visit_id t_12*] not free -[visit_id t_12*] no dims -[visit_exp `%`_resulttype(t_22*{t_22 <- `t_22*`})] -[visit_exp (t_22*{t_22 <- `t_22*`})] -[visit_exp t_22*{t_22 <- `t_22*`}] -[scope_enter t_22] -[visit_exp t_22] -[visit_id t_22] not free -[visit_id t_22] not free -[scope_exit t_22] -[visit_exp `t_22*`] -[visit_id t_22*] not free -[visit_id t_22*] no dims -[check_dims] C deftype_1 deftype_2 -[visit_exp C] -[visit_id C] -[visit_exp deftype_1] -[visit_id deftype_1] -[visit_exp deftype_2] -[visit_id deftype_2] -[visit_exp ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2))] -[visit_exp $clos_deftype(C, deftype_1)] -[visit_exp C] -[visit_id C] not free -[visit_exp deftype_1] -[visit_id deftype_1] not free -[visit_exp $clos_deftype(C, deftype_2)] -[visit_exp C] -[visit_id C] not free -[visit_exp deftype_2] -[visit_id deftype_2] not free -[check_dims] C ct deftype_1 deftype_2 final i typeuse -[visit_exp C] -[visit_id C] -[visit_exp deftype_1] -[visit_id deftype_1] -[visit_exp deftype_2] -[visit_id deftype_2] -[visit_exp ($unrolldt(deftype_1) = `SUB`_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct))] -[visit_exp $unrolldt(deftype_1)] -[visit_exp deftype_1] -[visit_id deftype_1] not free -[visit_exp `SUB`_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)] -[visit_exp (final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)] -[visit_exp final?{final <- `final?`}] -[scope_enter final] -[visit_exp final] -[visit_id final] not free -[visit_id final] not free -[scope_exit final] -[visit_exp `final?`] -[visit_id final?] no dims -[visit_id final?] -[visit_exp typeuse*{typeuse <- `typeuse*`}] -[scope_enter typeuse] -[visit_exp typeuse] -[visit_id typeuse] not free -[visit_id typeuse] not free -[scope_exit typeuse] -[visit_exp `typeuse*`] -[visit_id typeuse*] no dims -[visit_id typeuse*] -[visit_exp ct] -[visit_id ct] -[visit_exp (C, (typeuse*{typeuse <- `typeuse*`}[i] : typeuse <: heaptype), (deftype_2 : deftype <: heaptype))] -[visit_exp C] -[visit_id C] not free -[visit_exp (typeuse*{typeuse <- `typeuse*`}[i] : typeuse <: heaptype)] -[visit_exp typeuse*{typeuse <- `typeuse*`}[i]] -[visit_exp typeuse*{typeuse <- `typeuse*`}] -[scope_enter typeuse] -[visit_exp typeuse] -[visit_id typeuse] not free -[visit_id typeuse] not free -[scope_exit typeuse] -[visit_exp `typeuse*`] -[visit_id typeuse*] not free -[visit_id typeuse*] no dims -[visit_exp i] -[visit_id i] -[visit_exp (deftype_2 : deftype <: heaptype)] -[visit_exp deftype_2] -[visit_id deftype_2] not free -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] C m_1 m_2 n_1 n_2 -[visit_exp C] -[visit_id C] -[visit_exp `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1)))] -[visit_exp (`%`_u64(n_1), ?(`%`_u64(m_1)))] -[visit_exp `%`_u64(n_1)] -[visit_exp (n_1)] -[visit_exp n_1] -[visit_id n_1] -[visit_exp ?(`%`_u64(m_1))] -[visit_exp `%`_u64(m_1)] -[visit_exp (m_1)] -[visit_exp m_1] -[visit_id m_1] -[visit_exp `[%..%]`_limits(`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})] -[visit_exp (`%`_u64(n_2), `%`_u64(m_2)?{m_2 <- `m_2?`})] -[visit_exp `%`_u64(n_2)] -[visit_exp (n_2)] -[visit_exp n_2] -[visit_id n_2] -[visit_exp `%`_u64(m_2)?{m_2 <- `m_2?`}] -[scope_enter m_2] -[visit_exp `%`_u64(m_2)] -[visit_exp (m_2)] -[visit_exp m_2] -[visit_id m_2] not free -[visit_id m_2] not free -[scope_exit m_2] -[visit_exp `m_2?`] -[visit_id m_2?] no dims -[visit_id m_2?] -[visit_exp (n_1 >= n_2)] -[visit_exp n_1] -[visit_id n_1] not free -[visit_exp n_2] -[visit_id n_2] not free -[scope_enter m_2] -[visit_exp (m_1 <= m_2)] -[visit_exp m_1] -[visit_id m_1] not free -[visit_exp m_2] -[visit_id m_2] not free -[visit_id m_2] not free -[scope_exit m_2] -[visit_exp `m_2?`] -[visit_id m_2?] not free -[visit_id m_2?] no dims -[check_dims] C n_1 n_2 -[visit_exp C] -[visit_id C] -[visit_exp `[%..%]`_limits(`%`_u64(n_1), ?())] -[visit_exp (`%`_u64(n_1), ?())] -[visit_exp `%`_u64(n_1)] -[visit_exp (n_1)] -[visit_exp n_1] -[visit_id n_1] -[visit_exp ?()] -[visit_exp `[%..%]`_limits(`%`_u64(n_2), ?())] -[visit_exp (`%`_u64(n_2), ?())] -[visit_exp `%`_u64(n_2)] -[visit_exp (n_2)] -[visit_exp n_2] -[visit_id n_2] -[visit_exp ?()] -[visit_exp (n_1 >= n_2)] -[visit_exp n_1] -[visit_id n_1] not free -[visit_exp n_2] -[visit_id n_2] not free -[check_dims] C deftype_1 deftype_2 -[visit_exp C] -[visit_id C] -[visit_exp (deftype_1 : deftype <: typeuse)] -[visit_exp deftype_1] -[visit_id deftype_1] -[visit_exp (deftype_2 : deftype <: typeuse)] -[visit_exp deftype_2] -[visit_id deftype_2] -[visit_exp (C, deftype_1, deftype_2)] -[visit_exp C] -[visit_id C] not free -[visit_exp deftype_1] -[visit_id deftype_1] not free -[visit_exp deftype_2] -[visit_id deftype_2] not free -[visit_exp (C, deftype_2, deftype_1)] -[visit_exp C] -[visit_id C] not free -[visit_exp deftype_2] -[visit_id deftype_2] not free -[visit_exp deftype_1] -[visit_id deftype_1] not free -[check_dims] C valtype_1 valtype_2 -[visit_exp C] -[visit_id C] -[visit_exp `%%`_globaltype(?(), valtype_1)] -[visit_exp (?(), valtype_1)] -[visit_exp ?()] -[visit_exp valtype_1] -[visit_id valtype_1] -[visit_exp `%%`_globaltype(?(), valtype_2)] -[visit_exp (?(), valtype_2)] -[visit_exp ?()] -[visit_exp valtype_2] -[visit_id valtype_2] -[visit_exp (C, valtype_1, valtype_2)] -[visit_exp C] -[visit_id C] not free -[visit_exp valtype_1] -[visit_id valtype_1] not free -[visit_exp valtype_2] -[visit_id valtype_2] not free -[check_dims] C valtype_1 valtype_2 -[visit_exp C] -[visit_id C] -[visit_exp `%%`_globaltype(?(`MUT`_mut), valtype_1)] -[visit_exp (?(`MUT`_mut), valtype_1)] -[visit_exp ?(`MUT`_mut)] -[visit_exp `MUT`_mut] -[visit_exp ()] -[visit_exp valtype_1] -[visit_id valtype_1] -[visit_exp `%%`_globaltype(?(`MUT`_mut), valtype_2)] -[visit_exp (?(`MUT`_mut), valtype_2)] -[visit_exp ?(`MUT`_mut)] -[visit_exp `MUT`_mut] -[visit_exp ()] -[visit_exp valtype_2] -[visit_id valtype_2] -[visit_exp (C, valtype_1, valtype_2)] -[visit_exp C] -[visit_id C] not free -[visit_exp valtype_1] -[visit_id valtype_1] not free -[visit_exp valtype_2] -[visit_id valtype_2] not free -[visit_exp (C, valtype_2, valtype_1)] -[visit_exp C] -[visit_id C] not free -[visit_exp valtype_2] -[visit_id valtype_2] not free -[visit_exp valtype_1] -[visit_id valtype_1] not free -[check_dims] C addrtype limits_1 limits_2 -[visit_exp C] -[visit_id C] -[visit_exp `%%PAGE`_memtype(addrtype, limits_1)] -[visit_exp (addrtype, limits_1)] -[visit_exp addrtype] -[visit_id addrtype] -[visit_exp limits_1] -[visit_id limits_1] -[visit_exp `%%PAGE`_memtype(addrtype, limits_2)] -[visit_exp (addrtype, limits_2)] -[visit_exp addrtype] -[visit_id addrtype] not free -[visit_exp limits_2] -[visit_id limits_2] -[visit_exp (C, limits_1, limits_2)] -[visit_exp C] -[visit_id C] not free -[visit_exp limits_1] -[visit_id limits_1] not free -[visit_exp limits_2] -[visit_id limits_2] not free -[check_dims] C addrtype limits_1 limits_2 reftype_1 reftype_2 -[visit_exp C] -[visit_id C] -[visit_exp `%%%`_tabletype(addrtype, limits_1, reftype_1)] -[visit_exp (addrtype, limits_1, reftype_1)] -[visit_exp addrtype] -[visit_id addrtype] -[visit_exp limits_1] -[visit_id limits_1] -[visit_exp reftype_1] -[visit_id reftype_1] -[visit_exp `%%%`_tabletype(addrtype, limits_2, reftype_2)] -[visit_exp (addrtype, limits_2, reftype_2)] -[visit_exp addrtype] -[visit_id addrtype] not free -[visit_exp limits_2] -[visit_id limits_2] -[visit_exp reftype_2] -[visit_id reftype_2] -[visit_exp (C, limits_1, limits_2)] -[visit_exp C] -[visit_id C] not free -[visit_exp limits_1] -[visit_id limits_1] not free -[visit_exp limits_2] -[visit_id limits_2] not free -[visit_exp (C, reftype_1, reftype_2)] -[visit_exp C] -[visit_id C] not free -[visit_exp reftype_1] -[visit_id reftype_1] not free -[visit_exp reftype_2] -[visit_id reftype_2] not free -[visit_exp (C, reftype_2, reftype_1)] -[visit_exp C] -[visit_id C] not free -[visit_exp reftype_2] -[visit_id reftype_2] not free -[visit_exp reftype_1] -[visit_id reftype_1] not free -[check_dims] C tagtype_1 tagtype_2 -[visit_exp C] -[visit_id C] -[visit_exp `TAG`_externtype(tagtype_1)] -[visit_exp (tagtype_1)] -[visit_exp tagtype_1] -[visit_id tagtype_1] -[visit_exp `TAG`_externtype(tagtype_2)] -[visit_exp (tagtype_2)] -[visit_exp tagtype_2] -[visit_id tagtype_2] -[visit_exp (C, tagtype_1, tagtype_2)] -[visit_exp C] -[visit_id C] not free -[visit_exp tagtype_1] -[visit_id tagtype_1] not free -[visit_exp tagtype_2] -[visit_id tagtype_2] not free -[check_dims] C globaltype_1 globaltype_2 -[visit_exp C] -[visit_id C] -[visit_exp `GLOBAL`_externtype(globaltype_1)] -[visit_exp (globaltype_1)] -[visit_exp globaltype_1] -[visit_id globaltype_1] -[visit_exp `GLOBAL`_externtype(globaltype_2)] -[visit_exp (globaltype_2)] -[visit_exp globaltype_2] -[visit_id globaltype_2] -[visit_exp (C, globaltype_1, globaltype_2)] -[visit_exp C] -[visit_id C] not free -[visit_exp globaltype_1] -[visit_id globaltype_1] not free -[visit_exp globaltype_2] -[visit_id globaltype_2] not free -[check_dims] C memtype_1 memtype_2 -[visit_exp C] -[visit_id C] -[visit_exp `MEM`_externtype(memtype_1)] -[visit_exp (memtype_1)] -[visit_exp memtype_1] -[visit_id memtype_1] -[visit_exp `MEM`_externtype(memtype_2)] -[visit_exp (memtype_2)] -[visit_exp memtype_2] -[visit_id memtype_2] -[visit_exp (C, memtype_1, memtype_2)] -[visit_exp C] -[visit_id C] not free -[visit_exp memtype_1] -[visit_id memtype_1] not free -[visit_exp memtype_2] -[visit_id memtype_2] not free -[check_dims] C tabletype_1 tabletype_2 -[visit_exp C] -[visit_id C] -[visit_exp `TABLE`_externtype(tabletype_1)] -[visit_exp (tabletype_1)] -[visit_exp tabletype_1] -[visit_id tabletype_1] -[visit_exp `TABLE`_externtype(tabletype_2)] -[visit_exp (tabletype_2)] -[visit_exp tabletype_2] -[visit_id tabletype_2] -[visit_exp (C, tabletype_1, tabletype_2)] -[visit_exp C] -[visit_id C] not free -[visit_exp tabletype_1] -[visit_id tabletype_1] not free -[visit_exp tabletype_2] -[visit_id tabletype_2] not free -[check_dims] C deftype_1 deftype_2 -[visit_exp C] -[visit_id C] -[visit_exp `FUNC`_externtype((deftype_1 : deftype <: typeuse))] -[visit_exp ((deftype_1 : deftype <: typeuse))] -[visit_exp (deftype_1 : deftype <: typeuse)] -[visit_exp deftype_1] -[visit_id deftype_1] -[visit_exp `FUNC`_externtype((deftype_2 : deftype <: typeuse))] -[visit_exp ((deftype_2 : deftype <: typeuse))] -[visit_exp (deftype_2 : deftype <: typeuse)] -[visit_exp deftype_2] -[visit_id deftype_2] -[visit_exp (C, deftype_1, deftype_2)] -[visit_exp C] -[visit_id C] not free -[visit_exp deftype_1] -[visit_id deftype_1] not free -[visit_exp deftype_2] -[visit_id deftype_2] not free -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] C -[visit_exp C] -[visit_id C] -[visit_exp `NOP`_instr] -[visit_exp ()] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))] -[visit_exp (`%`_resulttype([]), [], `%`_resulttype([]))] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp []] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[check_dims] C t_1 t_2 -[visit_exp C] -[visit_id C] -[visit_exp `UNREACHABLE`_instr] -[visit_exp ()] -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] no dims -[visit_id t_1*] -[visit_exp []] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] no dims -[visit_id t_2*] -[visit_exp (C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})))] -[visit_exp C] -[visit_id C] not free -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] not free -[visit_id t_1*] no dims -[visit_exp []] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] not free -[visit_id t_2*] no dims -[check_dims] C t -[visit_exp C] -[visit_id C] -[visit_exp `DROP`_instr] -[visit_exp ()] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))] -[visit_exp (`%`_resulttype([t]), [], `%`_resulttype([]))] -[visit_exp `%`_resulttype([t])] -[visit_exp ([t])] -[visit_exp [t]] -[visit_exp t] -[visit_id t] -[visit_exp []] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp (C, t)] -[visit_exp C] -[visit_id C] not free -[visit_exp t] -[visit_id t] not free -[check_dims] C t -[visit_exp C] -[visit_id C] -[visit_exp `SELECT`_instr(?([t]))] -[visit_exp (?([t]))] -[visit_exp ?([t])] -[visit_exp [t]] -[visit_exp t] -[visit_id t] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([t t `I32`_valtype]), [], `%`_resulttype([t]))] -[visit_exp (`%`_resulttype([t t `I32`_valtype]), [], `%`_resulttype([t]))] -[visit_exp `%`_resulttype([t t `I32`_valtype])] -[visit_exp ([t t `I32`_valtype])] -[visit_exp [t t `I32`_valtype]] -[visit_exp t] -[visit_id t] not free -[visit_exp t] -[visit_id t] not free -[visit_exp `I32`_valtype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype([t])] -[visit_exp ([t])] -[visit_exp [t]] -[visit_exp t] -[visit_id t] not free -[visit_exp (C, t)] -[visit_exp C] -[visit_id C] not free -[visit_exp t] -[visit_id t] not free -[check_dims] C numtype t t' vectype -[visit_exp C] -[visit_id C] -[visit_exp `SELECT`_instr(?())] -[visit_exp (?())] -[visit_exp ?()] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([t t `I32`_valtype]), [], `%`_resulttype([t]))] -[visit_exp (`%`_resulttype([t t `I32`_valtype]), [], `%`_resulttype([t]))] -[visit_exp `%`_resulttype([t t `I32`_valtype])] -[visit_exp ([t t `I32`_valtype])] -[visit_exp [t t `I32`_valtype]] -[visit_exp t] -[visit_id t] -[visit_exp t] -[visit_id t] not free -[visit_exp `I32`_valtype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype([t])] -[visit_exp ([t])] -[visit_exp [t]] -[visit_exp t] -[visit_id t] not free -[visit_exp (C, t)] -[visit_exp C] -[visit_id C] not free -[visit_exp t] -[visit_id t] not free -[visit_exp (C, t, t')] -[visit_exp C] -[visit_id C] not free -[visit_exp t] -[visit_id t] not free -[visit_exp t'] -[visit_id t'] -[visit_exp ((t' = (numtype : numtype <: valtype)) \/ (t' = (vectype : vectype <: valtype)))] -[visit_exp (t' = (numtype : numtype <: valtype))] -[visit_exp t'] -[visit_id t'] not free -[visit_exp (numtype : numtype <: valtype)] -[visit_exp numtype] -[visit_id numtype] -[visit_exp (t' = (vectype : vectype <: valtype))] -[visit_exp t'] -[visit_id t'] not free -[visit_exp (vectype : vectype <: valtype)] -[visit_exp vectype] -[visit_id vectype] -[check_dims] -[check_dims] C valtype -[visit_exp C] -[visit_id C] -[visit_exp `_RESULT`_blocktype(valtype?{valtype <- `valtype?`})] -[visit_exp (valtype?{valtype <- `valtype?`})] -[visit_exp valtype?{valtype <- `valtype?`}] -[scope_enter valtype] -[visit_exp valtype] -[visit_id valtype] not free -[visit_id valtype] not free -[scope_exit valtype] -[visit_exp `valtype?`] -[visit_id valtype?] no dims -[visit_id valtype?] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))] -[visit_exp (`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp []] -[visit_exp `%`_resulttype(lift(valtype?{valtype <- `valtype?`}))] -[visit_exp (lift(valtype?{valtype <- `valtype?`}))] -[visit_exp lift(valtype?{valtype <- `valtype?`})] -[visit_exp valtype?{valtype <- `valtype?`}] -[scope_enter valtype] -[visit_exp valtype] -[visit_id valtype] not free -[visit_id valtype] not free -[scope_exit valtype] -[visit_exp `valtype?`] -[visit_id valtype?] not free -[visit_id valtype?] no dims -[scope_enter valtype] -[visit_exp (C, valtype)] -[visit_exp C] -[visit_id C] not free -[visit_exp valtype] -[visit_id valtype] not free -[visit_id valtype] not free -[scope_exit valtype] -[visit_exp `valtype?`] -[visit_id valtype?] not free -[visit_id valtype?] no dims -[check_dims] C t_1 t_2 typeidx -[visit_exp C] -[visit_id C] -[visit_exp `_IDX`_blocktype(typeidx)] -[visit_exp (typeidx)] -[visit_exp typeidx] -[visit_id typeidx] -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] no dims -[visit_id t_1*] -[visit_exp []] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] no dims -[visit_id t_2*] -[visit_exp (C.`TYPES`_context[typeidx!`%`_typeidx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))] -[visit_exp C.`TYPES`_context[typeidx!`%`_typeidx.0]] -[visit_exp C.`TYPES`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp typeidx!`%`_typeidx.0] -[visit_exp typeidx!`%`_typeidx] -[visit_exp typeidx] -[visit_id typeidx] not free -[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] not free -[visit_id t_1*] no dims -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] not free -[visit_id t_2*] no dims -[check_dims] C bt instr t_1 t_2 x -[visit_exp C] -[visit_id C] -[visit_exp `BLOCK`_instr(bt, instr*{instr <- `instr*`})] -[visit_exp (bt, instr*{instr <- `instr*`})] -[visit_exp bt] -[visit_id bt] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] no dims -[visit_id instr*] -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] no dims -[visit_id t_1*] -[visit_exp []] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] no dims -[visit_id t_2*] -[visit_exp (C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})))] -[visit_exp C] -[visit_id C] not free -[visit_exp bt] -[visit_id bt] not free -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] not free -[visit_id t_1*] no dims -[visit_exp []] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] not free -[visit_id t_2*] no dims -[visit_exp ({`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*`})))] -[visit_exp {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [`%`_resulttype(t_2*{t_2 <- `t_2*`})], `RETURN` ?(), `REFS` []} +++ C] -[visit_exp {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [`%`_resulttype(t_2*{t_2 <- `t_2*`})], `RETURN` ?(), `REFS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp [`%`_resulttype(t_2*{t_2 <- `t_2*`})]] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] not free -[visit_id t_2*] no dims -[visit_exp ?()] -[visit_exp []] -[visit_exp C] -[visit_id C] not free -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] not free -[visit_id instr*] no dims -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] not free -[visit_id t_1*] no dims -[visit_exp x*{x <- `x*`}] -[scope_enter x] -[visit_exp x] -[visit_id x] not free -[visit_id x] not free -[scope_exit x] -[visit_exp `x*`] -[visit_id x*] no dims -[visit_id x*] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] not free -[visit_id t_2*] no dims -[check_dims] C bt instr t_1 t_2 x -[visit_exp C] -[visit_id C] -[visit_exp `LOOP`_instr(bt, instr*{instr <- `instr*`})] -[visit_exp (bt, instr*{instr <- `instr*`})] -[visit_exp bt] -[visit_id bt] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] no dims -[visit_id instr*] -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] no dims -[visit_id t_1*] -[visit_exp []] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] no dims -[visit_id t_2*] -[visit_exp (C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})))] -[visit_exp C] -[visit_id C] not free -[visit_exp bt] -[visit_id bt] not free -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] not free -[visit_id t_1*] no dims -[visit_exp []] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] not free -[visit_id t_2*] no dims -[visit_exp ({`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*`})))] -[visit_exp {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [`%`_resulttype(t_1*{t_1 <- `t_1*`})], `RETURN` ?(), `REFS` []} +++ C] -[visit_exp {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [`%`_resulttype(t_1*{t_1 <- `t_1*`})], `RETURN` ?(), `REFS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp [`%`_resulttype(t_1*{t_1 <- `t_1*`})]] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] not free -[visit_id t_1*] no dims -[visit_exp ?()] -[visit_exp []] -[visit_exp C] -[visit_id C] not free -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] not free -[visit_id instr*] no dims -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] not free -[visit_id t_1*] no dims -[visit_exp x*{x <- `x*`}] -[scope_enter x] -[visit_exp x] -[visit_id x] not free -[visit_id x] not free -[scope_exit x] -[visit_exp `x*`] -[visit_id x*] no dims -[visit_id x*] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] not free -[visit_id t_2*] no dims -[check_dims] C bt instr_1 instr_2 t_1 t_2 x_1 x_2 -[visit_exp C] -[visit_id C] -[visit_exp `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})] -[visit_exp (bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})] -[visit_exp bt] -[visit_id bt] -[visit_exp instr_1*{instr_1 <- `instr_1*`}] -[scope_enter instr_1] -[visit_exp instr_1] -[visit_id instr_1] not free -[visit_id instr_1] not free -[scope_exit instr_1] -[visit_exp `instr_1*`] -[visit_id instr_1*] no dims -[visit_id instr_1*] -[visit_exp instr_2*{instr_2 <- `instr_2*`}] -[scope_enter instr_2] -[visit_exp instr_2] -[visit_id instr_2] not free -[visit_id instr_2] not free -[scope_exit instr_2] -[visit_exp `instr_2*`] -[visit_id instr_2*] no dims -[visit_id instr_2*] -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [`I32`_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [`I32`_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [`I32`_valtype])] -[visit_exp (t_1*{t_1 <- `t_1*`} ++ [`I32`_valtype])] -[visit_exp t_1*{t_1 <- `t_1*`} ++ [`I32`_valtype]] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] no dims -[visit_id t_1*] -[visit_exp [`I32`_valtype]] -[visit_exp `I32`_valtype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] no dims -[visit_id t_2*] -[visit_exp (C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})))] -[visit_exp C] -[visit_id C] not free -[visit_exp bt] -[visit_id bt] not free -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] not free -[visit_id t_1*] no dims -[visit_exp []] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] not free -[visit_id t_2*] no dims -[visit_exp ({`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*`})))] -[visit_exp {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [`%`_resulttype(t_2*{t_2 <- `t_2*`})], `RETURN` ?(), `REFS` []} +++ C] -[visit_exp {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [`%`_resulttype(t_2*{t_2 <- `t_2*`})], `RETURN` ?(), `REFS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp [`%`_resulttype(t_2*{t_2 <- `t_2*`})]] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] not free -[visit_id t_2*] no dims -[visit_exp ?()] -[visit_exp []] -[visit_exp C] -[visit_id C] not free -[visit_exp instr_1*{instr_1 <- `instr_1*`}] -[scope_enter instr_1] -[visit_exp instr_1] -[visit_id instr_1] not free -[visit_id instr_1] not free -[scope_exit instr_1] -[visit_exp `instr_1*`] -[visit_id instr_1*] not free -[visit_id instr_1*] no dims -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] not free -[visit_id t_1*] no dims -[visit_exp x_1*{x_1 <- `x_1*`}] -[scope_enter x_1] -[visit_exp x_1] -[visit_id x_1] not free -[visit_id x_1] not free -[scope_exit x_1] -[visit_exp `x_1*`] -[visit_id x_1*] no dims -[visit_id x_1*] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] not free -[visit_id t_2*] no dims -[visit_exp ({`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*`})))] -[visit_exp {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [`%`_resulttype(t_2*{t_2 <- `t_2*`})], `RETURN` ?(), `REFS` []} +++ C] -[visit_exp {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [`%`_resulttype(t_2*{t_2 <- `t_2*`})], `RETURN` ?(), `REFS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp [`%`_resulttype(t_2*{t_2 <- `t_2*`})]] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] not free -[visit_id t_2*] no dims -[visit_exp ?()] -[visit_exp []] -[visit_exp C] -[visit_id C] not free -[visit_exp instr_2*{instr_2 <- `instr_2*`}] -[scope_enter instr_2] -[visit_exp instr_2] -[visit_id instr_2] not free -[visit_id instr_2] not free -[scope_exit instr_2] -[visit_exp `instr_2*`] -[visit_id instr_2*] not free -[visit_id instr_2*] no dims -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] not free -[visit_id t_1*] no dims -[visit_exp x_2*{x_2 <- `x_2*`}] -[scope_enter x_2] -[visit_exp x_2] -[visit_id x_2] not free -[visit_id x_2] not free -[scope_exit x_2] -[visit_exp `x_2*`] -[visit_id x_2*] no dims -[visit_id x_2*] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] not free -[visit_id t_2*] no dims -[check_dims] C l t t_1 t_2 -[visit_exp C] -[visit_id C] -[visit_exp `BR`_instr(l)] -[visit_exp (l)] -[visit_exp l] -[visit_id l] -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`})] -[visit_exp (t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`})] -[visit_exp t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] no dims -[visit_id t_1*] -[visit_exp t*{t <- `t*`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] no dims -[visit_id t*] -[visit_exp []] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] no dims -[visit_id t_2*] -[visit_exp (C.`LABELS`_context[l!`%`_labelidx.0]!`%`_resulttype.0 = t*{t <- `t*`})] -[visit_exp C.`LABELS`_context[l!`%`_labelidx.0]!`%`_resulttype.0] -[visit_exp C.`LABELS`_context[l!`%`_labelidx.0]!`%`_resulttype] -[visit_exp C.`LABELS`_context[l!`%`_labelidx.0]] -[visit_exp C.`LABELS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] not free -[visit_exp t*{t <- `t*`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] not free -[visit_id t*] no dims -[visit_exp (C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})))] -[visit_exp C] -[visit_id C] not free -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] not free -[visit_id t_1*] no dims -[visit_exp []] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] not free -[visit_id t_2*] no dims -[check_dims] C l t -[visit_exp C] -[visit_id C] -[visit_exp `BR_IF`_instr(l)] -[visit_exp (l)] -[visit_exp l] -[visit_id l] -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [`I32`_valtype]), [], `%`_resulttype(t*{t <- `t*`}))] -[visit_exp (`%`_resulttype(t*{t <- `t*`} ++ [`I32`_valtype]), [], `%`_resulttype(t*{t <- `t*`}))] -[visit_exp `%`_resulttype(t*{t <- `t*`} ++ [`I32`_valtype])] -[visit_exp (t*{t <- `t*`} ++ [`I32`_valtype])] -[visit_exp t*{t <- `t*`} ++ [`I32`_valtype]] -[visit_exp t*{t <- `t*`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] no dims -[visit_id t*] -[visit_exp [`I32`_valtype]] -[visit_exp `I32`_valtype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype(t*{t <- `t*`})] -[visit_exp (t*{t <- `t*`})] -[visit_exp t*{t <- `t*`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] not free -[visit_id t*] no dims -[visit_exp (C.`LABELS`_context[l!`%`_labelidx.0]!`%`_resulttype.0 = t*{t <- `t*`})] -[visit_exp C.`LABELS`_context[l!`%`_labelidx.0]!`%`_resulttype.0] -[visit_exp C.`LABELS`_context[l!`%`_labelidx.0]!`%`_resulttype] -[visit_exp C.`LABELS`_context[l!`%`_labelidx.0]] -[visit_exp C.`LABELS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] not free -[visit_exp t*{t <- `t*`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] not free -[visit_id t*] no dims -[check_dims] C l l' t t_1 t_2 -[visit_exp C] -[visit_id C] -[visit_exp `BR_TABLE`_instr(l*{l <- `l*`}, l')] -[visit_exp (l*{l <- `l*`}, l')] -[visit_exp l*{l <- `l*`}] -[scope_enter l] -[visit_exp l] -[visit_id l] not free -[visit_id l] not free -[scope_exit l] -[visit_exp `l*`] -[visit_id l*] no dims -[visit_id l*] -[visit_exp l'] -[visit_id l'] -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [`I32`_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [`I32`_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [`I32`_valtype])] -[visit_exp (t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [`I32`_valtype])] -[visit_exp t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [`I32`_valtype]] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] no dims -[visit_id t_1*] -[visit_exp t*{t <- `t*`} ++ [`I32`_valtype]] -[visit_exp t*{t <- `t*`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] no dims -[visit_id t*] -[visit_exp [`I32`_valtype]] -[visit_exp `I32`_valtype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] no dims -[visit_id t_2*] -[scope_enter l] -[visit_exp (C, `%`_resulttype(t*{t <- `t*`}), C.`LABELS`_context[l!`%`_labelidx.0])] -[visit_exp C] -[visit_id C] not free -[visit_exp `%`_resulttype(t*{t <- `t*`})] -[visit_exp (t*{t <- `t*`})] -[visit_exp t*{t <- `t*`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] not free -[visit_id t*] no dims -[visit_exp C.`LABELS`_context[l!`%`_labelidx.0]] -[visit_exp C.`LABELS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] not free -[visit_id l] not free -[scope_exit l] -[visit_exp `l*`] -[visit_id l*] not free -[visit_id l*] no dims -[visit_exp (C, `%`_resulttype(t*{t <- `t*`}), C.`LABELS`_context[l'!`%`_labelidx.0])] -[visit_exp C] -[visit_id C] not free -[visit_exp `%`_resulttype(t*{t <- `t*`})] -[visit_exp (t*{t <- `t*`})] -[visit_exp t*{t <- `t*`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] not free -[visit_id t*] no dims -[visit_exp C.`LABELS`_context[l'!`%`_labelidx.0]] -[visit_exp C.`LABELS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp l'!`%`_labelidx.0] -[visit_exp l'!`%`_labelidx] -[visit_exp l'] -[visit_id l'] not free -[visit_exp (C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [`I32`_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})))] -[visit_exp C] -[visit_id C] not free -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [`I32`_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [`I32`_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [`I32`_valtype])] -[visit_exp (t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [`I32`_valtype])] -[visit_exp t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [`I32`_valtype]] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] not free -[visit_id t_1*] no dims -[visit_exp t*{t <- `t*`} ++ [`I32`_valtype]] -[visit_exp t*{t <- `t*`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] not free -[visit_id t*] no dims -[visit_exp [`I32`_valtype]] -[visit_exp `I32`_valtype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] not free -[visit_id t_2*] no dims -[check_dims] C ht l t -[visit_exp C] -[visit_id C] -[visit_exp `BR_ON_NULL`_instr(l)] -[visit_exp (l)] -[visit_exp l] -[visit_id l] -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [`REF`_valtype(?(`NULL`_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [`REF`_valtype(?(), ht)]))] -[visit_exp (`%`_resulttype(t*{t <- `t*`} ++ [`REF`_valtype(?(`NULL`_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [`REF`_valtype(?(), ht)]))] -[visit_exp `%`_resulttype(t*{t <- `t*`} ++ [`REF`_valtype(?(`NULL`_null), ht)])] -[visit_exp (t*{t <- `t*`} ++ [`REF`_valtype(?(`NULL`_null), ht)])] -[visit_exp t*{t <- `t*`} ++ [`REF`_valtype(?(`NULL`_null), ht)]] -[visit_exp t*{t <- `t*`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] no dims -[visit_id t*] -[visit_exp [`REF`_valtype(?(`NULL`_null), ht)]] -[visit_exp `REF`_valtype(?(`NULL`_null), ht)] -[visit_exp (?(`NULL`_null), ht)] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp ht] -[visit_id ht] -[visit_exp []] -[visit_exp `%`_resulttype(t*{t <- `t*`} ++ [`REF`_valtype(?(), ht)])] -[visit_exp (t*{t <- `t*`} ++ [`REF`_valtype(?(), ht)])] -[visit_exp t*{t <- `t*`} ++ [`REF`_valtype(?(), ht)]] -[visit_exp t*{t <- `t*`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] not free -[visit_id t*] no dims -[visit_exp [`REF`_valtype(?(), ht)]] -[visit_exp `REF`_valtype(?(), ht)] -[visit_exp (?(), ht)] -[visit_exp ?()] -[visit_exp ht] -[visit_id ht] not free -[visit_exp (C.`LABELS`_context[l!`%`_labelidx.0]!`%`_resulttype.0 = t*{t <- `t*`})] -[visit_exp C.`LABELS`_context[l!`%`_labelidx.0]!`%`_resulttype.0] -[visit_exp C.`LABELS`_context[l!`%`_labelidx.0]!`%`_resulttype] -[visit_exp C.`LABELS`_context[l!`%`_labelidx.0]] -[visit_exp C.`LABELS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] not free -[visit_exp t*{t <- `t*`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] not free -[visit_id t*] no dims -[visit_exp (C, ht)] -[visit_exp C] -[visit_id C] not free -[visit_exp ht] -[visit_id ht] not free -[check_dims] C ht l t -[visit_exp C] -[visit_id C] -[visit_exp `BR_ON_NON_NULL`_instr(l)] -[visit_exp (l)] -[visit_exp l] -[visit_id l] -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [`REF`_valtype(?(`NULL`_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))] -[visit_exp (`%`_resulttype(t*{t <- `t*`} ++ [`REF`_valtype(?(`NULL`_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))] -[visit_exp `%`_resulttype(t*{t <- `t*`} ++ [`REF`_valtype(?(`NULL`_null), ht)])] -[visit_exp (t*{t <- `t*`} ++ [`REF`_valtype(?(`NULL`_null), ht)])] -[visit_exp t*{t <- `t*`} ++ [`REF`_valtype(?(`NULL`_null), ht)]] -[visit_exp t*{t <- `t*`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] no dims -[visit_id t*] -[visit_exp [`REF`_valtype(?(`NULL`_null), ht)]] -[visit_exp `REF`_valtype(?(`NULL`_null), ht)] -[visit_exp (?(`NULL`_null), ht)] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp ht] -[visit_id ht] -[visit_exp []] -[visit_exp `%`_resulttype(t*{t <- `t*`})] -[visit_exp (t*{t <- `t*`})] -[visit_exp t*{t <- `t*`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] not free -[visit_id t*] no dims -[visit_exp (C.`LABELS`_context[l!`%`_labelidx.0] = `%`_resulttype(t*{t <- `t*`} ++ [`REF`_valtype(`NULL`_null?{}, ht)]))] -[visit_exp C.`LABELS`_context[l!`%`_labelidx.0]] -[visit_exp C.`LABELS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] not free -[visit_exp `%`_resulttype(t*{t <- `t*`} ++ [`REF`_valtype(`NULL`_null?{}, ht)])] -[visit_exp (t*{t <- `t*`} ++ [`REF`_valtype(`NULL`_null?{}, ht)])] -[visit_exp t*{t <- `t*`} ++ [`REF`_valtype(`NULL`_null?{}, ht)]] -[visit_exp t*{t <- `t*`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] not free -[visit_id t*] no dims -[visit_exp [`REF`_valtype(`NULL`_null?{}, ht)]] -[visit_exp `REF`_valtype(`NULL`_null?{}, ht)] -[visit_exp (`NULL`_null?{}, ht)] -[visit_exp `NULL`_null?{}] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp ht] -[visit_id ht] not free -[check_dims] C l rt rt_1 rt_2 t -[visit_exp C] -[visit_id C] -[visit_exp `BR_ON_CAST`_instr(l, rt_1, rt_2)] -[visit_exp (l, rt_1, rt_2)] -[visit_exp l] -[visit_id l] -[visit_exp rt_1] -[visit_id rt_1] -[visit_exp rt_2] -[visit_id rt_2] -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))] -[visit_exp (`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))] -[visit_exp `%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)])] -[visit_exp (t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)])] -[visit_exp t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]] -[visit_exp t*{t <- `t*`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] no dims -[visit_id t*] -[visit_exp [(rt_1 : reftype <: valtype)]] -[visit_exp (rt_1 : reftype <: valtype)] -[visit_exp rt_1] -[visit_id rt_1] not free -[visit_exp []] -[visit_exp `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)])] -[visit_exp (t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)])] -[visit_exp t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]] -[visit_exp t*{t <- `t*`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] not free -[visit_id t*] no dims -[visit_exp [($diffrt(rt_1, rt_2) : reftype <: valtype)]] -[visit_exp ($diffrt(rt_1, rt_2) : reftype <: valtype)] -[visit_exp $diffrt(rt_1, rt_2)] -[visit_exp rt_1] -[visit_id rt_1] not free -[visit_exp rt_2] -[visit_id rt_2] not free -[visit_exp (C.`LABELS`_context[l!`%`_labelidx.0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)]))] -[visit_exp C.`LABELS`_context[l!`%`_labelidx.0]] -[visit_exp C.`LABELS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] not free -[visit_exp `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])] -[visit_exp (t*{t <- `t*`} ++ [(rt : reftype <: valtype)])] -[visit_exp t*{t <- `t*`} ++ [(rt : reftype <: valtype)]] -[visit_exp t*{t <- `t*`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] not free -[visit_id t*] no dims -[visit_exp [(rt : reftype <: valtype)]] -[visit_exp (rt : reftype <: valtype)] -[visit_exp rt] -[visit_id rt] -[visit_exp (C, rt_1)] -[visit_exp C] -[visit_id C] not free -[visit_exp rt_1] -[visit_id rt_1] not free -[visit_exp (C, rt_2)] -[visit_exp C] -[visit_id C] not free -[visit_exp rt_2] -[visit_id rt_2] not free -[visit_exp (C, rt_2, rt_1)] -[visit_exp C] -[visit_id C] not free -[visit_exp rt_2] -[visit_id rt_2] not free -[visit_exp rt_1] -[visit_id rt_1] not free -[visit_exp (C, rt_2, rt)] -[visit_exp C] -[visit_id C] not free -[visit_exp rt_2] -[visit_id rt_2] not free -[visit_exp rt] -[visit_id rt] not free -[check_dims] C l rt rt_1 rt_2 t -[visit_exp C] -[visit_id C] -[visit_exp `BR_ON_CAST_FAIL`_instr(l, rt_1, rt_2)] -[visit_exp (l, rt_1, rt_2)] -[visit_exp l] -[visit_id l] -[visit_exp rt_1] -[visit_id rt_1] -[visit_exp rt_2] -[visit_id rt_2] -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))] -[visit_exp (`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))] -[visit_exp `%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)])] -[visit_exp (t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)])] -[visit_exp t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]] -[visit_exp t*{t <- `t*`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] no dims -[visit_id t*] -[visit_exp [(rt_1 : reftype <: valtype)]] -[visit_exp (rt_1 : reftype <: valtype)] -[visit_exp rt_1] -[visit_id rt_1] not free -[visit_exp []] -[visit_exp `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)])] -[visit_exp (t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)])] -[visit_exp t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]] -[visit_exp t*{t <- `t*`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] not free -[visit_id t*] no dims -[visit_exp [(rt_2 : reftype <: valtype)]] -[visit_exp (rt_2 : reftype <: valtype)] -[visit_exp rt_2] -[visit_id rt_2] not free -[visit_exp (C.`LABELS`_context[l!`%`_labelidx.0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)]))] -[visit_exp C.`LABELS`_context[l!`%`_labelidx.0]] -[visit_exp C.`LABELS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] not free -[visit_exp `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])] -[visit_exp (t*{t <- `t*`} ++ [(rt : reftype <: valtype)])] -[visit_exp t*{t <- `t*`} ++ [(rt : reftype <: valtype)]] -[visit_exp t*{t <- `t*`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] not free -[visit_id t*] no dims -[visit_exp [(rt : reftype <: valtype)]] -[visit_exp (rt : reftype <: valtype)] -[visit_exp rt] -[visit_id rt] -[visit_exp (C, rt_1)] -[visit_exp C] -[visit_id C] not free -[visit_exp rt_1] -[visit_id rt_1] not free -[visit_exp (C, rt_2)] -[visit_exp C] -[visit_id C] not free -[visit_exp rt_2] -[visit_id rt_2] not free -[visit_exp (C, rt_2, rt_1)] -[visit_exp C] -[visit_id C] not free -[visit_exp rt_2] -[visit_id rt_2] not free -[visit_exp rt_1] -[visit_id rt_1] not free -[visit_exp (C, $diffrt(rt_1, rt_2), rt)] -[visit_exp C] -[visit_id C] not free -[visit_exp $diffrt(rt_1, rt_2)] -[visit_exp rt_1] -[visit_id rt_1] not free -[visit_exp rt_2] -[visit_id rt_2] not free -[visit_exp rt] -[visit_id rt] not free -[check_dims] C t_1 t_2 x -[visit_exp C] -[visit_id C] -[visit_exp `CALL`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] no dims -[visit_id t_1*] -[visit_exp []] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] no dims -[visit_id t_2*] -[visit_exp (C.`FUNCS`_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))] -[visit_exp C.`FUNCS`_context[x!`%`_idx.0]] -[visit_exp C.`FUNCS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] not free -[visit_id t_1*] no dims -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] not free -[visit_id t_2*] no dims -[check_dims] C t_1 t_2 x -[visit_exp C] -[visit_id C] -[visit_exp `CALL_REF`_instr(`_IDX`_typeuse(x))] -[visit_exp (`_IDX`_typeuse(x))] -[visit_exp `_IDX`_typeuse(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))])] -[visit_exp (t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))])] -[visit_exp t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))]] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] no dims -[visit_id t_1*] -[visit_exp [`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))]] -[visit_exp `REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))] -[visit_exp (?(`NULL`_null), `_IDX`_heaptype(x))] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp `_IDX`_heaptype(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] not free -[visit_exp []] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] no dims -[visit_id t_2*] -[visit_exp (C.`TYPES`_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))] -[visit_exp C.`TYPES`_context[x!`%`_idx.0]] -[visit_exp C.`TYPES`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] not free -[visit_id t_1*] no dims -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] not free -[visit_id t_2*] no dims -[check_dims] C at lim rt t_1 t_2 x y -[visit_exp C] -[visit_id C] -[visit_exp `CALL_INDIRECT`_instr(x, `_IDX`_typeuse(y))] -[visit_exp (x, `_IDX`_typeuse(y))] -[visit_exp x] -[visit_id x] -[visit_exp `_IDX`_typeuse(y)] -[visit_exp (y)] -[visit_exp y] -[visit_id y] -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)])] -[visit_exp (t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)])] -[visit_exp t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] no dims -[visit_id t_1*] -[visit_exp [(at : addrtype <: valtype)]] -[visit_exp (at : addrtype <: valtype)] -[visit_exp at] -[visit_id at] -[visit_exp []] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] no dims -[visit_id t_2*] -[visit_exp (C.`TABLES`_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt))] -[visit_exp C.`TABLES`_context[x!`%`_idx.0]] -[visit_exp C.`TABLES`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `%%%`_tabletype(at, lim, rt)] -[visit_exp (at, lim, rt)] -[visit_exp at] -[visit_id at] not free -[visit_exp lim] -[visit_id lim] -[visit_exp rt] -[visit_id rt] -[visit_exp (C, rt, `REF`_reftype(?(`NULL`_null), `FUNC`_heaptype))] -[visit_exp C] -[visit_id C] not free -[visit_exp rt] -[visit_id rt] not free -[visit_exp `REF`_reftype(?(`NULL`_null), `FUNC`_heaptype)] -[visit_exp (?(`NULL`_null), `FUNC`_heaptype)] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp `FUNC`_heaptype] -[visit_exp ()] -[visit_exp (C.`TYPES`_context[y!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))] -[visit_exp C.`TYPES`_context[y!`%`_idx.0]] -[visit_exp C.`TYPES`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp y!`%`_idx.0] -[visit_exp y!`%`_idx] -[visit_exp y] -[visit_id y] not free -[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] not free -[visit_id t_1*] no dims -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] not free -[visit_id t_2*] no dims -[check_dims] C t t_1 t_2 -[visit_exp C] -[visit_id C] -[visit_exp `RETURN`_instr] -[visit_exp ()] -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`})] -[visit_exp (t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`})] -[visit_exp t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] no dims -[visit_id t_1*] -[visit_exp t*{t <- `t*`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] no dims -[visit_id t*] -[visit_exp []] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] no dims -[visit_id t_2*] -[visit_exp (C.`RETURN`_context = ?(`%`_resulttype(t*{t <- `t*`})))] -[visit_exp C.`RETURN`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp ?(`%`_resulttype(t*{t <- `t*`}))] -[visit_exp `%`_resulttype(t*{t <- `t*`})] -[visit_exp (t*{t <- `t*`})] -[visit_exp t*{t <- `t*`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] not free -[visit_id t*] no dims -[visit_exp (C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})))] -[visit_exp C] -[visit_id C] not free -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] not free -[visit_id t_1*] no dims -[visit_exp []] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] not free -[visit_id t_2*] no dims -[check_dims] C t'_2 t_1 t_2 t_3 t_4 x -[visit_exp C] -[visit_id C] -[visit_exp `RETURN_CALL`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))] -[visit_exp (`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))] -[visit_exp `%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`})] -[visit_exp (t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`})] -[visit_exp t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}] -[visit_exp t_3*{t_3 <- `t_3*`}] -[scope_enter t_3] -[visit_exp t_3] -[visit_id t_3] not free -[visit_id t_3] not free -[scope_exit t_3] -[visit_exp `t_3*`] -[visit_id t_3*] no dims -[visit_id t_3*] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] no dims -[visit_id t_1*] -[visit_exp []] -[visit_exp `%`_resulttype(t_4*{t_4 <- `t_4*`})] -[visit_exp (t_4*{t_4 <- `t_4*`})] -[visit_exp t_4*{t_4 <- `t_4*`}] -[scope_enter t_4] -[visit_exp t_4] -[visit_id t_4] not free -[visit_id t_4] not free -[scope_exit t_4] -[visit_exp `t_4*`] -[visit_id t_4*] no dims -[visit_id t_4*] -[visit_exp (C.`FUNCS`_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))] -[visit_exp C.`FUNCS`_context[x!`%`_idx.0]] -[visit_exp C.`FUNCS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] not free -[visit_id t_1*] no dims -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] no dims -[visit_id t_2*] -[visit_exp (C.`RETURN`_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`})))] -[visit_exp C.`RETURN`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))] -[visit_exp `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})] -[visit_exp (t'_2*{t'_2 <- `t'_2*`})] -[visit_exp t'_2*{t'_2 <- `t'_2*`}] -[scope_enter t'_2] -[visit_exp t'_2] -[visit_id t'_2] not free -[visit_id t'_2] not free -[scope_exit t'_2] -[visit_exp `t'_2*`] -[visit_id t'_2*] no dims -[visit_id t'_2*] -[visit_exp (C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))] -[visit_exp C] -[visit_id C] not free -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] not free -[visit_id t_2*] no dims -[visit_exp `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})] -[visit_exp (t'_2*{t'_2 <- `t'_2*`})] -[visit_exp t'_2*{t'_2 <- `t'_2*`}] -[scope_enter t'_2] -[visit_exp t'_2] -[visit_id t'_2] not free -[visit_id t'_2] not free -[scope_exit t'_2] -[visit_exp `t'_2*`] -[visit_id t'_2*] not free -[visit_id t'_2*] no dims -[visit_exp (C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`})))] -[visit_exp C] -[visit_id C] not free -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))] -[visit_exp (`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))] -[visit_exp `%`_resulttype(t_3*{t_3 <- `t_3*`})] -[visit_exp (t_3*{t_3 <- `t_3*`})] -[visit_exp t_3*{t_3 <- `t_3*`}] -[scope_enter t_3] -[visit_exp t_3] -[visit_id t_3] not free -[visit_id t_3] not free -[scope_exit t_3] -[visit_exp `t_3*`] -[visit_id t_3*] not free -[visit_id t_3*] no dims -[visit_exp []] -[visit_exp `%`_resulttype(t_4*{t_4 <- `t_4*`})] -[visit_exp (t_4*{t_4 <- `t_4*`})] -[visit_exp t_4*{t_4 <- `t_4*`}] -[scope_enter t_4] -[visit_exp t_4] -[visit_id t_4] not free -[visit_id t_4] not free -[scope_exit t_4] -[visit_exp `t_4*`] -[visit_id t_4*] not free -[visit_id t_4*] no dims -[check_dims] C t'_2 t_1 t_2 t_3 t_4 x -[visit_exp C] -[visit_id C] -[visit_exp `RETURN_CALL_REF`_instr(`_IDX`_typeuse(x))] -[visit_exp (`_IDX`_typeuse(x))] -[visit_exp `_IDX`_typeuse(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%->_%%`_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*`}))] -[visit_exp (`%`_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*`}))] -[visit_exp `%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))])] -[visit_exp (t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))])] -[visit_exp t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))]] -[visit_exp t_3*{t_3 <- `t_3*`}] -[scope_enter t_3] -[visit_exp t_3] -[visit_id t_3] not free -[visit_id t_3] not free -[scope_exit t_3] -[visit_exp `t_3*`] -[visit_id t_3*] no dims -[visit_id t_3*] -[visit_exp t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))]] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] no dims -[visit_id t_1*] -[visit_exp [`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))]] -[visit_exp `REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))] -[visit_exp (?(`NULL`_null), `_IDX`_heaptype(x))] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp `_IDX`_heaptype(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] not free -[visit_exp []] -[visit_exp `%`_resulttype(t_4*{t_4 <- `t_4*`})] -[visit_exp (t_4*{t_4 <- `t_4*`})] -[visit_exp t_4*{t_4 <- `t_4*`}] -[scope_enter t_4] -[visit_exp t_4] -[visit_id t_4] not free -[visit_id t_4] not free -[scope_exit t_4] -[visit_exp `t_4*`] -[visit_id t_4*] no dims -[visit_id t_4*] -[visit_exp (C.`TYPES`_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))] -[visit_exp C.`TYPES`_context[x!`%`_idx.0]] -[visit_exp C.`TYPES`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] not free -[visit_id t_1*] no dims -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] no dims -[visit_id t_2*] -[visit_exp (C.`RETURN`_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`})))] -[visit_exp C.`RETURN`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))] -[visit_exp `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})] -[visit_exp (t'_2*{t'_2 <- `t'_2*`})] -[visit_exp t'_2*{t'_2 <- `t'_2*`}] -[scope_enter t'_2] -[visit_exp t'_2] -[visit_id t'_2] not free -[visit_id t'_2] not free -[scope_exit t'_2] -[visit_exp `t'_2*`] -[visit_id t'_2*] no dims -[visit_id t'_2*] -[visit_exp (C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))] -[visit_exp C] -[visit_id C] not free -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] not free -[visit_id t_2*] no dims -[visit_exp `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})] -[visit_exp (t'_2*{t'_2 <- `t'_2*`})] -[visit_exp t'_2*{t'_2 <- `t'_2*`}] -[scope_enter t'_2] -[visit_exp t'_2] -[visit_id t'_2] not free -[visit_id t'_2] not free -[scope_exit t'_2] -[visit_exp `t'_2*`] -[visit_id t'_2*] not free -[visit_id t'_2*] no dims -[visit_exp (C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`})))] -[visit_exp C] -[visit_id C] not free -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))] -[visit_exp (`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))] -[visit_exp `%`_resulttype(t_3*{t_3 <- `t_3*`})] -[visit_exp (t_3*{t_3 <- `t_3*`})] -[visit_exp t_3*{t_3 <- `t_3*`}] -[scope_enter t_3] -[visit_exp t_3] -[visit_id t_3] not free -[visit_id t_3] not free -[scope_exit t_3] -[visit_exp `t_3*`] -[visit_id t_3*] not free -[visit_id t_3*] no dims -[visit_exp []] -[visit_exp `%`_resulttype(t_4*{t_4 <- `t_4*`})] -[visit_exp (t_4*{t_4 <- `t_4*`})] -[visit_exp t_4*{t_4 <- `t_4*`}] -[scope_enter t_4] -[visit_exp t_4] -[visit_id t_4] not free -[visit_id t_4] not free -[scope_exit t_4] -[visit_exp `t_4*`] -[visit_id t_4*] not free -[visit_id t_4*] no dims -[check_dims] C at lim rt t'_2 t_1 t_2 t_3 t_4 x y -[visit_exp C] -[visit_id C] -[visit_exp `RETURN_CALL_INDIRECT`_instr(x, `_IDX`_typeuse(y))] -[visit_exp (x, `_IDX`_typeuse(y))] -[visit_exp x] -[visit_id x] -[visit_exp `_IDX`_typeuse(y)] -[visit_exp (y)] -[visit_exp y] -[visit_id y] -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))] -[visit_exp (`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))] -[visit_exp `%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)])] -[visit_exp (t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)])] -[visit_exp t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]] -[visit_exp t_3*{t_3 <- `t_3*`}] -[scope_enter t_3] -[visit_exp t_3] -[visit_id t_3] not free -[visit_id t_3] not free -[scope_exit t_3] -[visit_exp `t_3*`] -[visit_id t_3*] no dims -[visit_id t_3*] -[visit_exp t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] no dims -[visit_id t_1*] -[visit_exp [(at : addrtype <: valtype)]] -[visit_exp (at : addrtype <: valtype)] -[visit_exp at] -[visit_id at] -[visit_exp []] -[visit_exp `%`_resulttype(t_4*{t_4 <- `t_4*`})] -[visit_exp (t_4*{t_4 <- `t_4*`})] -[visit_exp t_4*{t_4 <- `t_4*`}] -[scope_enter t_4] -[visit_exp t_4] -[visit_id t_4] not free -[visit_id t_4] not free -[scope_exit t_4] -[visit_exp `t_4*`] -[visit_id t_4*] no dims -[visit_id t_4*] -[visit_exp (C.`TABLES`_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt))] -[visit_exp C.`TABLES`_context[x!`%`_idx.0]] -[visit_exp C.`TABLES`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `%%%`_tabletype(at, lim, rt)] -[visit_exp (at, lim, rt)] -[visit_exp at] -[visit_id at] not free -[visit_exp lim] -[visit_id lim] -[visit_exp rt] -[visit_id rt] -[visit_exp (C, rt, `REF`_reftype(?(`NULL`_null), `FUNC`_heaptype))] -[visit_exp C] -[visit_id C] not free -[visit_exp rt] -[visit_id rt] not free -[visit_exp `REF`_reftype(?(`NULL`_null), `FUNC`_heaptype)] -[visit_exp (?(`NULL`_null), `FUNC`_heaptype)] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp `FUNC`_heaptype] -[visit_exp ()] -[visit_exp (C.`TYPES`_context[y!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))] -[visit_exp C.`TYPES`_context[y!`%`_idx.0]] -[visit_exp C.`TYPES`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp y!`%`_idx.0] -[visit_exp y!`%`_idx] -[visit_exp y] -[visit_id y] not free -[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] not free -[visit_id t_1*] no dims -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] no dims -[visit_id t_2*] -[visit_exp (C.`RETURN`_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`})))] -[visit_exp C.`RETURN`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))] -[visit_exp `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})] -[visit_exp (t'_2*{t'_2 <- `t'_2*`})] -[visit_exp t'_2*{t'_2 <- `t'_2*`}] -[scope_enter t'_2] -[visit_exp t'_2] -[visit_id t'_2] not free -[visit_id t'_2] not free -[scope_exit t'_2] -[visit_exp `t'_2*`] -[visit_id t'_2*] no dims -[visit_id t'_2*] -[visit_exp (C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))] -[visit_exp C] -[visit_id C] not free -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] not free -[visit_id t_2*] no dims -[visit_exp `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})] -[visit_exp (t'_2*{t'_2 <- `t'_2*`})] -[visit_exp t'_2*{t'_2 <- `t'_2*`}] -[scope_enter t'_2] -[visit_exp t'_2] -[visit_id t'_2] not free -[visit_id t'_2] not free -[scope_exit t'_2] -[visit_exp `t'_2*`] -[visit_id t'_2*] not free -[visit_id t'_2*] no dims -[visit_exp (C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`})))] -[visit_exp C] -[visit_id C] not free -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))] -[visit_exp (`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))] -[visit_exp `%`_resulttype(t_3*{t_3 <- `t_3*`})] -[visit_exp (t_3*{t_3 <- `t_3*`})] -[visit_exp t_3*{t_3 <- `t_3*`}] -[scope_enter t_3] -[visit_exp t_3] -[visit_id t_3] not free -[visit_id t_3] not free -[scope_exit t_3] -[visit_exp `t_3*`] -[visit_id t_3*] not free -[visit_id t_3*] no dims -[visit_exp []] -[visit_exp `%`_resulttype(t_4*{t_4 <- `t_4*`})] -[visit_exp (t_4*{t_4 <- `t_4*`})] -[visit_exp t_4*{t_4 <- `t_4*`}] -[scope_enter t_4] -[visit_exp t_4] -[visit_id t_4] not free -[visit_id t_4] not free -[scope_exit t_4] -[visit_exp `t_4*`] -[visit_id t_4*] not free -[visit_id t_4*] no dims -[check_dims] -[check_dims] C t t_1 t_2 x -[visit_exp C] -[visit_id C] -[visit_exp `THROW`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`})] -[visit_exp (t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`})] -[visit_exp t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] no dims -[visit_id t_1*] -[visit_exp t*{t <- `t*`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] no dims -[visit_id t*] -[visit_exp []] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] no dims -[visit_id t_2*] -[visit_exp ($as_deftype(C.`TAGS`_context[x!`%`_idx.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([])))] -[visit_exp $as_deftype(C.`TAGS`_context[x!`%`_idx.0])] -[visit_exp C.`TAGS`_context[x!`%`_idx.0]] -[visit_exp C.`TAGS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))] -[visit_exp (`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))] -[visit_exp `%`_resulttype(t*{t <- `t*`})] -[visit_exp (t*{t <- `t*`})] -[visit_exp t*{t <- `t*`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] not free -[visit_id t*] no dims -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp (C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})))] -[visit_exp C] -[visit_id C] not free -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] not free -[visit_id t_1*] no dims -[visit_exp []] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] not free -[visit_id t_2*] no dims -[check_dims] C t_1 t_2 -[visit_exp C] -[visit_id C] -[visit_exp `THROW_REF`_instr] -[visit_exp ()] -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype(?(`NULL`_null), `EXN`_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype(?(`NULL`_null), `EXN`_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype(?(`NULL`_null), `EXN`_heaptype)])] -[visit_exp (t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype(?(`NULL`_null), `EXN`_heaptype)])] -[visit_exp t_1*{t_1 <- `t_1*`} ++ [`REF`_valtype(?(`NULL`_null), `EXN`_heaptype)]] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] no dims -[visit_id t_1*] -[visit_exp [`REF`_valtype(?(`NULL`_null), `EXN`_heaptype)]] -[visit_exp `REF`_valtype(?(`NULL`_null), `EXN`_heaptype)] -[visit_exp (?(`NULL`_null), `EXN`_heaptype)] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp `EXN`_heaptype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] no dims -[visit_id t_2*] -[visit_exp (C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})))] -[visit_exp C] -[visit_id C] not free -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] not free -[visit_id t_1*] no dims -[visit_exp []] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] not free -[visit_id t_2*] no dims -[check_dims] C bt catch instr t_1 t_2 x -[visit_exp C] -[visit_id C] -[visit_exp `TRY_TABLE`_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})] -[visit_exp (bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})] -[visit_exp bt] -[visit_id bt] -[visit_exp `%`_list(catch*{catch <- `catch*`})] -[visit_exp (catch*{catch <- `catch*`})] -[visit_exp catch*{catch <- `catch*`}] -[scope_enter catch] -[visit_exp catch] -[visit_id catch] not free -[visit_id catch] not free -[scope_exit catch] -[visit_exp `catch*`] -[visit_id catch*] no dims -[visit_id catch*] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] no dims -[visit_id instr*] -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] no dims -[visit_id t_1*] -[visit_exp []] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] no dims -[visit_id t_2*] -[visit_exp (C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})))] -[visit_exp C] -[visit_id C] not free -[visit_exp bt] -[visit_id bt] not free -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] not free -[visit_id t_1*] no dims -[visit_exp []] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] not free -[visit_id t_2*] no dims -[visit_exp ({`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*`})))] -[visit_exp {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [`%`_resulttype(t_2*{t_2 <- `t_2*`})], `RETURN` ?(), `REFS` []} +++ C] -[visit_exp {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [`%`_resulttype(t_2*{t_2 <- `t_2*`})], `RETURN` ?(), `REFS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp [`%`_resulttype(t_2*{t_2 <- `t_2*`})]] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] not free -[visit_id t_2*] no dims -[visit_exp ?()] -[visit_exp []] -[visit_exp C] -[visit_id C] not free -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] not free -[visit_id instr*] no dims -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] not free -[visit_id t_1*] no dims -[visit_exp x*{x <- `x*`}] -[scope_enter x] -[visit_exp x] -[visit_id x] not free -[visit_id x] not free -[scope_exit x] -[visit_exp `x*`] -[visit_id x*] no dims -[visit_id x*] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] not free -[visit_id t_2*] no dims -[scope_enter catch] -[visit_exp (C, catch)] -[visit_exp C] -[visit_id C] not free -[visit_exp catch] -[visit_id catch] not free -[visit_id catch] not free -[scope_exit catch] -[visit_exp `catch*`] -[visit_id catch*] not free -[visit_id catch*] no dims -[check_dims] C l t x -[visit_exp C] -[visit_id C] -[visit_exp `CATCH`_catch(x, l)] -[visit_exp (x, l)] -[visit_exp x] -[visit_id x] -[visit_exp l] -[visit_id l] -[visit_exp ($as_deftype(C.`TAGS`_context[x!`%`_idx.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([])))] -[visit_exp $as_deftype(C.`TAGS`_context[x!`%`_idx.0])] -[visit_exp C.`TAGS`_context[x!`%`_idx.0]] -[visit_exp C.`TAGS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))] -[visit_exp (`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))] -[visit_exp `%`_resulttype(t*{t <- `t*`})] -[visit_exp (t*{t <- `t*`})] -[visit_exp t*{t <- `t*`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] no dims -[visit_id t*] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp (C, `%`_resulttype(t*{t <- `t*`}), C.`LABELS`_context[l!`%`_labelidx.0])] -[visit_exp C] -[visit_id C] not free -[visit_exp `%`_resulttype(t*{t <- `t*`})] -[visit_exp (t*{t <- `t*`})] -[visit_exp t*{t <- `t*`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] not free -[visit_id t*] no dims -[visit_exp C.`LABELS`_context[l!`%`_labelidx.0]] -[visit_exp C.`LABELS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] not free -[check_dims] C l t x -[visit_exp C] -[visit_id C] -[visit_exp `CATCH_REF`_catch(x, l)] -[visit_exp (x, l)] -[visit_exp x] -[visit_id x] -[visit_exp l] -[visit_id l] -[visit_exp ($as_deftype(C.`TAGS`_context[x!`%`_idx.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([])))] -[visit_exp $as_deftype(C.`TAGS`_context[x!`%`_idx.0])] -[visit_exp C.`TAGS`_context[x!`%`_idx.0]] -[visit_exp C.`TAGS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))] -[visit_exp (`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))] -[visit_exp `%`_resulttype(t*{t <- `t*`})] -[visit_exp (t*{t <- `t*`})] -[visit_exp t*{t <- `t*`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] no dims -[visit_id t*] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp (C, `%`_resulttype(t*{t <- `t*`} ++ [`REF`_valtype(?(), `EXN`_heaptype)]), C.`LABELS`_context[l!`%`_labelidx.0])] -[visit_exp C] -[visit_id C] not free -[visit_exp `%`_resulttype(t*{t <- `t*`} ++ [`REF`_valtype(?(), `EXN`_heaptype)])] -[visit_exp (t*{t <- `t*`} ++ [`REF`_valtype(?(), `EXN`_heaptype)])] -[visit_exp t*{t <- `t*`} ++ [`REF`_valtype(?(), `EXN`_heaptype)]] -[visit_exp t*{t <- `t*`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] not free -[visit_id t*] no dims -[visit_exp [`REF`_valtype(?(), `EXN`_heaptype)]] -[visit_exp `REF`_valtype(?(), `EXN`_heaptype)] -[visit_exp (?(), `EXN`_heaptype)] -[visit_exp ?()] -[visit_exp `EXN`_heaptype] -[visit_exp ()] -[visit_exp C.`LABELS`_context[l!`%`_labelidx.0]] -[visit_exp C.`LABELS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] not free -[check_dims] C l -[visit_exp C] -[visit_id C] -[visit_exp `CATCH_ALL`_catch(l)] -[visit_exp (l)] -[visit_exp l] -[visit_id l] -[visit_exp (C, `%`_resulttype([]), C.`LABELS`_context[l!`%`_labelidx.0])] -[visit_exp C] -[visit_id C] not free -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp C.`LABELS`_context[l!`%`_labelidx.0]] -[visit_exp C.`LABELS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] not free -[check_dims] C l -[visit_exp C] -[visit_id C] -[visit_exp `CATCH_ALL_REF`_catch(l)] -[visit_exp (l)] -[visit_exp l] -[visit_id l] -[visit_exp (C, `%`_resulttype([`REF`_valtype(?(), `EXN`_heaptype)]), C.`LABELS`_context[l!`%`_labelidx.0])] -[visit_exp C] -[visit_id C] not free -[visit_exp `%`_resulttype([`REF`_valtype(?(), `EXN`_heaptype)])] -[visit_exp ([`REF`_valtype(?(), `EXN`_heaptype)])] -[visit_exp [`REF`_valtype(?(), `EXN`_heaptype)]] -[visit_exp `REF`_valtype(?(), `EXN`_heaptype)] -[visit_exp (?(), `EXN`_heaptype)] -[visit_exp ?()] -[visit_exp `EXN`_heaptype] -[visit_exp ()] -[visit_exp C.`LABELS`_context[l!`%`_labelidx.0]] -[visit_exp C.`LABELS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] not free -[check_dims] C ht -[visit_exp C] -[visit_id C] -[visit_exp `REF.NULL`_instr(ht)] -[visit_exp (ht)] -[visit_exp ht] -[visit_id ht] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([`REF`_valtype(?(`NULL`_null), ht)]))] -[visit_exp (`%`_resulttype([]), [], `%`_resulttype([`REF`_valtype(?(`NULL`_null), ht)]))] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp []] -[visit_exp `%`_resulttype([`REF`_valtype(?(`NULL`_null), ht)])] -[visit_exp ([`REF`_valtype(?(`NULL`_null), ht)])] -[visit_exp [`REF`_valtype(?(`NULL`_null), ht)]] -[visit_exp `REF`_valtype(?(`NULL`_null), ht)] -[visit_exp (?(`NULL`_null), ht)] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp ht] -[visit_id ht] not free -[visit_exp (C, ht)] -[visit_exp C] -[visit_id C] not free -[visit_exp ht] -[visit_id ht] not free -[check_dims] C dt x -[visit_exp C] -[visit_id C] -[visit_exp `REF.FUNC`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([`REF`_valtype(?(), (dt : deftype <: heaptype))]))] -[visit_exp (`%`_resulttype([]), [], `%`_resulttype([`REF`_valtype(?(), (dt : deftype <: heaptype))]))] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp []] -[visit_exp `%`_resulttype([`REF`_valtype(?(), (dt : deftype <: heaptype))])] -[visit_exp ([`REF`_valtype(?(), (dt : deftype <: heaptype))])] -[visit_exp [`REF`_valtype(?(), (dt : deftype <: heaptype))]] -[visit_exp `REF`_valtype(?(), (dt : deftype <: heaptype))] -[visit_exp (?(), (dt : deftype <: heaptype))] -[visit_exp ?()] -[visit_exp (dt : deftype <: heaptype)] -[visit_exp dt] -[visit_id dt] -[visit_exp (C.`FUNCS`_context[x!`%`_idx.0] = dt)] -[visit_exp C.`FUNCS`_context[x!`%`_idx.0]] -[visit_exp C.`FUNCS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp dt] -[visit_id dt] not free -[visit_exp (x <- C.`REFS`_context)] -[visit_exp x] -[visit_id x] not free -[visit_exp C.`REFS`_context] -[visit_exp C] -[visit_id C] not free -[check_dims] C -[visit_exp C] -[visit_id C] -[visit_exp `REF.I31`_instr] -[visit_exp ()] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([`I32`_valtype]), [], `%`_resulttype([`REF`_valtype(?(), `I31`_heaptype)]))] -[visit_exp (`%`_resulttype([`I32`_valtype]), [], `%`_resulttype([`REF`_valtype(?(), `I31`_heaptype)]))] -[visit_exp `%`_resulttype([`I32`_valtype])] -[visit_exp ([`I32`_valtype])] -[visit_exp [`I32`_valtype]] -[visit_exp `I32`_valtype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype([`REF`_valtype(?(), `I31`_heaptype)])] -[visit_exp ([`REF`_valtype(?(), `I31`_heaptype)])] -[visit_exp [`REF`_valtype(?(), `I31`_heaptype)]] -[visit_exp `REF`_valtype(?(), `I31`_heaptype)] -[visit_exp (?(), `I31`_heaptype)] -[visit_exp ?()] -[visit_exp `I31`_heaptype] -[visit_exp ()] -[check_dims] C ht -[visit_exp C] -[visit_id C] -[visit_exp `REF.IS_NULL`_instr] -[visit_exp ()] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([`REF`_valtype(?(`NULL`_null), ht)]), [], `%`_resulttype([`I32`_valtype]))] -[visit_exp (`%`_resulttype([`REF`_valtype(?(`NULL`_null), ht)]), [], `%`_resulttype([`I32`_valtype]))] -[visit_exp `%`_resulttype([`REF`_valtype(?(`NULL`_null), ht)])] -[visit_exp ([`REF`_valtype(?(`NULL`_null), ht)])] -[visit_exp [`REF`_valtype(?(`NULL`_null), ht)]] -[visit_exp `REF`_valtype(?(`NULL`_null), ht)] -[visit_exp (?(`NULL`_null), ht)] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp ht] -[visit_id ht] -[visit_exp []] -[visit_exp `%`_resulttype([`I32`_valtype])] -[visit_exp ([`I32`_valtype])] -[visit_exp [`I32`_valtype]] -[visit_exp `I32`_valtype] -[visit_exp ()] -[visit_exp (C, ht)] -[visit_exp C] -[visit_id C] not free -[visit_exp ht] -[visit_id ht] not free -[check_dims] C ht -[visit_exp C] -[visit_id C] -[visit_exp `REF.AS_NON_NULL`_instr] -[visit_exp ()] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([`REF`_valtype(?(`NULL`_null), ht)]), [], `%`_resulttype([`REF`_valtype(?(), ht)]))] -[visit_exp (`%`_resulttype([`REF`_valtype(?(`NULL`_null), ht)]), [], `%`_resulttype([`REF`_valtype(?(), ht)]))] -[visit_exp `%`_resulttype([`REF`_valtype(?(`NULL`_null), ht)])] -[visit_exp ([`REF`_valtype(?(`NULL`_null), ht)])] -[visit_exp [`REF`_valtype(?(`NULL`_null), ht)]] -[visit_exp `REF`_valtype(?(`NULL`_null), ht)] -[visit_exp (?(`NULL`_null), ht)] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp ht] -[visit_id ht] -[visit_exp []] -[visit_exp `%`_resulttype([`REF`_valtype(?(), ht)])] -[visit_exp ([`REF`_valtype(?(), ht)])] -[visit_exp [`REF`_valtype(?(), ht)]] -[visit_exp `REF`_valtype(?(), ht)] -[visit_exp (?(), ht)] -[visit_exp ?()] -[visit_exp ht] -[visit_id ht] not free -[visit_exp (C, ht)] -[visit_exp C] -[visit_id C] not free -[visit_exp ht] -[visit_id ht] not free -[check_dims] C -[visit_exp C] -[visit_id C] -[visit_exp `REF.EQ`_instr] -[visit_exp ()] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([`REF`_valtype(?(`NULL`_null), `EQ`_heaptype) `REF`_valtype(?(`NULL`_null), `EQ`_heaptype)]), [], `%`_resulttype([`I32`_valtype]))] -[visit_exp (`%`_resulttype([`REF`_valtype(?(`NULL`_null), `EQ`_heaptype) `REF`_valtype(?(`NULL`_null), `EQ`_heaptype)]), [], `%`_resulttype([`I32`_valtype]))] -[visit_exp `%`_resulttype([`REF`_valtype(?(`NULL`_null), `EQ`_heaptype) `REF`_valtype(?(`NULL`_null), `EQ`_heaptype)])] -[visit_exp ([`REF`_valtype(?(`NULL`_null), `EQ`_heaptype) `REF`_valtype(?(`NULL`_null), `EQ`_heaptype)])] -[visit_exp [`REF`_valtype(?(`NULL`_null), `EQ`_heaptype) `REF`_valtype(?(`NULL`_null), `EQ`_heaptype)]] -[visit_exp `REF`_valtype(?(`NULL`_null), `EQ`_heaptype)] -[visit_exp (?(`NULL`_null), `EQ`_heaptype)] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp `EQ`_heaptype] -[visit_exp ()] -[visit_exp `REF`_valtype(?(`NULL`_null), `EQ`_heaptype)] -[visit_exp (?(`NULL`_null), `EQ`_heaptype)] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp `EQ`_heaptype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype([`I32`_valtype])] -[visit_exp ([`I32`_valtype])] -[visit_exp [`I32`_valtype]] -[visit_exp `I32`_valtype] -[visit_exp ()] -[check_dims] C rt rt' -[visit_exp C] -[visit_id C] -[visit_exp `REF.TEST`_instr(rt)] -[visit_exp (rt)] -[visit_exp rt] -[visit_id rt] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([`I32`_valtype]))] -[visit_exp (`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([`I32`_valtype]))] -[visit_exp `%`_resulttype([(rt' : reftype <: valtype)])] -[visit_exp ([(rt' : reftype <: valtype)])] -[visit_exp [(rt' : reftype <: valtype)]] -[visit_exp (rt' : reftype <: valtype)] -[visit_exp rt'] -[visit_id rt'] -[visit_exp []] -[visit_exp `%`_resulttype([`I32`_valtype])] -[visit_exp ([`I32`_valtype])] -[visit_exp [`I32`_valtype]] -[visit_exp `I32`_valtype] -[visit_exp ()] -[visit_exp (C, rt)] -[visit_exp C] -[visit_id C] not free -[visit_exp rt] -[visit_id rt] not free -[visit_exp (C, rt')] -[visit_exp C] -[visit_id C] not free -[visit_exp rt'] -[visit_id rt'] not free -[visit_exp (C, rt, rt')] -[visit_exp C] -[visit_id C] not free -[visit_exp rt] -[visit_id rt] not free -[visit_exp rt'] -[visit_id rt'] not free -[check_dims] C rt rt' -[visit_exp C] -[visit_id C] -[visit_exp `REF.CAST`_instr(rt)] -[visit_exp (rt)] -[visit_exp rt] -[visit_id rt] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))] -[visit_exp (`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))] -[visit_exp `%`_resulttype([(rt' : reftype <: valtype)])] -[visit_exp ([(rt' : reftype <: valtype)])] -[visit_exp [(rt' : reftype <: valtype)]] -[visit_exp (rt' : reftype <: valtype)] -[visit_exp rt'] -[visit_id rt'] -[visit_exp []] -[visit_exp `%`_resulttype([(rt : reftype <: valtype)])] -[visit_exp ([(rt : reftype <: valtype)])] -[visit_exp [(rt : reftype <: valtype)]] -[visit_exp (rt : reftype <: valtype)] -[visit_exp rt] -[visit_id rt] not free -[visit_exp (C, rt)] -[visit_exp C] -[visit_id C] not free -[visit_exp rt] -[visit_id rt] not free -[visit_exp (C, rt')] -[visit_exp C] -[visit_id C] not free -[visit_exp rt'] -[visit_id rt'] not free -[visit_exp (C, rt, rt')] -[visit_exp C] -[visit_id C] not free -[visit_exp rt] -[visit_id rt] not free -[visit_exp rt'] -[visit_id rt'] not free -[check_dims] C sx -[visit_exp C] -[visit_id C] -[visit_exp `I31.GET`_instr(sx)] -[visit_exp (sx)] -[visit_exp sx] -[visit_id sx] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([`REF`_valtype(?(`NULL`_null), `I31`_heaptype)]), [], `%`_resulttype([`I32`_valtype]))] -[visit_exp (`%`_resulttype([`REF`_valtype(?(`NULL`_null), `I31`_heaptype)]), [], `%`_resulttype([`I32`_valtype]))] -[visit_exp `%`_resulttype([`REF`_valtype(?(`NULL`_null), `I31`_heaptype)])] -[visit_exp ([`REF`_valtype(?(`NULL`_null), `I31`_heaptype)])] -[visit_exp [`REF`_valtype(?(`NULL`_null), `I31`_heaptype)]] -[visit_exp `REF`_valtype(?(`NULL`_null), `I31`_heaptype)] -[visit_exp (?(`NULL`_null), `I31`_heaptype)] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp `I31`_heaptype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype([`I32`_valtype])] -[visit_exp ([`I32`_valtype])] -[visit_exp [`I32`_valtype]] -[visit_exp `I32`_valtype] -[visit_exp ()] -[check_dims] C mut x zt -[visit_exp C] -[visit_id C] -[visit_exp `STRUCT.NEW`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([`REF`_valtype(?(), `_IDX`_heaptype(x))]))] -[visit_exp (`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([`REF`_valtype(?(), `_IDX`_heaptype(x))]))] -[visit_exp `%`_resulttype($unpack(zt)*{zt <- `zt*`})] -[visit_exp ($unpack(zt)*{zt <- `zt*`})] -[visit_exp $unpack(zt)*{zt <- `zt*`}] -[scope_enter zt] -[visit_exp $unpack(zt)] -[visit_exp zt] -[visit_id zt] not free -[visit_id zt] not free -[scope_exit zt] -[visit_exp `zt*`] -[visit_id zt*] no dims -[visit_id zt*] -[visit_exp []] -[visit_exp `%`_resulttype([`REF`_valtype(?(), `_IDX`_heaptype(x))])] -[visit_exp ([`REF`_valtype(?(), `_IDX`_heaptype(x))])] -[visit_exp [`REF`_valtype(?(), `_IDX`_heaptype(x))]] -[visit_exp `REF`_valtype(?(), `_IDX`_heaptype(x))] -[visit_exp (?(), `_IDX`_heaptype(x))] -[visit_exp ?()] -[visit_exp `_IDX`_heaptype(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] not free -[visit_exp (C.`TYPES`_context[x!`%`_idx.0], `STRUCT`_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`})))] -[visit_exp C.`TYPES`_context[x!`%`_idx.0]] -[visit_exp C.`TYPES`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `STRUCT`_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))] -[visit_exp (`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))] -[visit_exp `%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`})] -[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`})] -[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}] -[scope_enter mut?] -[scope_enter zt] -[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)] -[visit_exp (mut?{mut <- `mut?`}, zt)] -[visit_exp mut?{mut <- `mut?`}] -[scope_enter mut] -[visit_exp mut] -[visit_id mut] not free -[visit_id mut] not free -[scope_exit mut] -[visit_exp `mut?`] -[visit_id mut?] not free -[visit_id mut?] no dims -[visit_exp zt] -[visit_id zt] not free -[visit_id mut?] not free -[visit_id mut?] no dims -[visit_id zt] not free -[scope_exit zt] -[scope_exit mut?] -[visit_exp `mut?*`] -[visit_id mut?*] no dims -[visit_id mut?*] -[visit_exp `zt*`] -[visit_id zt*] not free -[visit_id zt*] no dims -[check_dims] C mut x zt -[visit_exp C] -[visit_id C] -[visit_exp `STRUCT.NEW_DEFAULT`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([`REF`_valtype(?(), `_IDX`_heaptype(x))]))] -[visit_exp (`%`_resulttype([]), [], `%`_resulttype([`REF`_valtype(?(), `_IDX`_heaptype(x))]))] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp []] -[visit_exp `%`_resulttype([`REF`_valtype(?(), `_IDX`_heaptype(x))])] -[visit_exp ([`REF`_valtype(?(), `_IDX`_heaptype(x))])] -[visit_exp [`REF`_valtype(?(), `_IDX`_heaptype(x))]] -[visit_exp `REF`_valtype(?(), `_IDX`_heaptype(x))] -[visit_exp (?(), `_IDX`_heaptype(x))] -[visit_exp ?()] -[visit_exp `_IDX`_heaptype(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] not free -[visit_exp (C.`TYPES`_context[x!`%`_idx.0], `STRUCT`_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`})))] -[visit_exp C.`TYPES`_context[x!`%`_idx.0]] -[visit_exp C.`TYPES`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `STRUCT`_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))] -[visit_exp (`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))] -[visit_exp `%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`})] -[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`})] -[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}] -[scope_enter mut?] -[scope_enter zt] -[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)] -[visit_exp (mut?{mut <- `mut?`}, zt)] -[visit_exp mut?{mut <- `mut?`}] -[scope_enter mut] -[visit_exp mut] -[visit_id mut] not free -[visit_id mut] not free -[scope_exit mut] -[visit_exp `mut?`] -[visit_id mut?] not free -[visit_id mut?] no dims -[visit_exp zt] -[visit_id zt] not free -[visit_id mut?] not free -[visit_id mut?] no dims -[visit_id zt] not free -[scope_exit zt] -[scope_exit mut?] -[visit_exp `mut?*`] -[visit_id mut?*] no dims -[visit_id mut?*] -[visit_exp `zt*`] -[visit_id zt*] no dims -[visit_id zt*] -[scope_enter zt] -[visit_exp $unpack(zt)] -[visit_exp zt] -[visit_id zt] not free -[visit_id zt] not free -[scope_exit zt] -[visit_exp `zt*`] -[visit_id zt*] not free -[visit_id zt*] no dims -[check_dims] storagetype -DecD is_packtype(storagetype : storagetype) : bool -[visit_id storagetype] not free -[check_dims] zt -[visit_exp zt] -[visit_id zt] -[visit_exp (zt = ($unpack(zt) : valtype <: storagetype))] -[visit_exp zt] -[visit_id zt] not free -[visit_exp ($unpack(zt) : valtype <: storagetype)] -[visit_exp $unpack(zt)] -[visit_exp zt] -[visit_id zt] not free -=> - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - def $is_packtype{zt : storagetype}(zt) = (zt = ($unpack(zt) : valtype <: storagetype)) -[check_dims] C ft i mut sx x zt -[visit_exp C] -[visit_id C] -[visit_exp `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)] -[visit_exp (sx?{sx <- `sx?`}, x, i)] -[visit_exp sx?{sx <- `sx?`}] -[scope_enter sx] -[visit_exp sx] -[visit_id sx] not free -[visit_id sx] not free -[scope_exit sx] -[visit_exp `sx?`] -[visit_id sx?] no dims -[visit_id sx?] -[visit_exp x] -[visit_id x] -[visit_exp i] -[visit_id i] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))] -[visit_exp (`%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))] -[visit_exp `%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))])] -[visit_exp ([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))])] -[visit_exp [`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))]] -[visit_exp `REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))] -[visit_exp (?(`NULL`_null), `_IDX`_heaptype(x))] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp `_IDX`_heaptype(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] not free -[visit_exp []] -[visit_exp `%`_resulttype([$unpack(zt)])] -[visit_exp ([$unpack(zt)])] -[visit_exp [$unpack(zt)]] -[visit_exp $unpack(zt)] -[visit_exp zt] -[visit_id zt] -[visit_exp (C.`TYPES`_context[x!`%`_idx.0], `STRUCT`_comptype(`%`_list(ft*{ft <- `ft*`})))] -[visit_exp C.`TYPES`_context[x!`%`_idx.0]] -[visit_exp C.`TYPES`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `STRUCT`_comptype(`%`_list(ft*{ft <- `ft*`}))] -[visit_exp (`%`_list(ft*{ft <- `ft*`}))] -[visit_exp `%`_list(ft*{ft <- `ft*`})] -[visit_exp (ft*{ft <- `ft*`})] -[visit_exp ft*{ft <- `ft*`}] -[scope_enter ft] -[visit_exp ft] -[visit_id ft] not free -[visit_id ft] not free -[scope_exit ft] -[visit_exp `ft*`] -[visit_id ft*] no dims -[visit_id ft*] -[visit_exp (ft*{ft <- `ft*`}[i!`%`_u32.0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt))] -[visit_exp ft*{ft <- `ft*`}[i!`%`_u32.0]] -[visit_exp ft*{ft <- `ft*`}] -[scope_enter ft] -[visit_exp ft] -[visit_id ft] not free -[visit_id ft] not free -[scope_exit ft] -[visit_exp `ft*`] -[visit_id ft*] not free -[visit_id ft*] no dims -[visit_exp i!`%`_u32.0] -[visit_exp i!`%`_u32] -[visit_exp i] -[visit_id i] not free -[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)] -[visit_exp (mut?{mut <- `mut?`}, zt)] -[visit_exp mut?{mut <- `mut?`}] -[scope_enter mut] -[visit_exp mut] -[visit_id mut] not free -[visit_id mut] not free -[scope_exit mut] -[visit_exp `mut?`] -[visit_id mut?] no dims -[visit_id mut?] -[visit_exp zt] -[visit_id zt] not free -[visit_exp ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt))] -[visit_exp (sx?{sx <- `sx?`} = ?())] -[visit_exp sx?{sx <- `sx?`}] -[scope_enter sx] -[visit_exp sx] -[visit_id sx] not free -[visit_id sx] not free -[scope_exit sx] -[visit_exp `sx?`] -[visit_id sx?] not free -[visit_id sx?] no dims -[visit_exp ?()] -[visit_exp $is_packtype(zt)] -[visit_exp zt] -[visit_id zt] not free -[check_dims] C ft i x zt -[visit_exp C] -[visit_id C] -[visit_exp `STRUCT.SET`_instr(x, i)] -[visit_exp (x, i)] -[visit_exp x] -[visit_id x] -[visit_exp i] -[visit_id i] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))] -[visit_exp (`%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))] -[visit_exp `%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) $unpack(zt)])] -[visit_exp ([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) $unpack(zt)])] -[visit_exp [`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) $unpack(zt)]] -[visit_exp `REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))] -[visit_exp (?(`NULL`_null), `_IDX`_heaptype(x))] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp `_IDX`_heaptype(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] not free -[visit_exp $unpack(zt)] -[visit_exp zt] -[visit_id zt] -[visit_exp []] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp (C.`TYPES`_context[x!`%`_idx.0], `STRUCT`_comptype(`%`_list(ft*{ft <- `ft*`})))] -[visit_exp C.`TYPES`_context[x!`%`_idx.0]] -[visit_exp C.`TYPES`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `STRUCT`_comptype(`%`_list(ft*{ft <- `ft*`}))] -[visit_exp (`%`_list(ft*{ft <- `ft*`}))] -[visit_exp `%`_list(ft*{ft <- `ft*`})] -[visit_exp (ft*{ft <- `ft*`})] -[visit_exp ft*{ft <- `ft*`}] -[scope_enter ft] -[visit_exp ft] -[visit_id ft] not free -[visit_id ft] not free -[scope_exit ft] -[visit_exp `ft*`] -[visit_id ft*] no dims -[visit_id ft*] -[visit_exp (ft*{ft <- `ft*`}[i!`%`_u32.0] = `%%`_fieldtype(?(`MUT`_mut), zt))] -[visit_exp ft*{ft <- `ft*`}[i!`%`_u32.0]] -[visit_exp ft*{ft <- `ft*`}] -[scope_enter ft] -[visit_exp ft] -[visit_id ft] not free -[visit_id ft] not free -[scope_exit ft] -[visit_exp `ft*`] -[visit_id ft*] not free -[visit_id ft*] no dims -[visit_exp i!`%`_u32.0] -[visit_exp i!`%`_u32] -[visit_exp i] -[visit_id i] not free -[visit_exp `%%`_fieldtype(?(`MUT`_mut), zt)] -[visit_exp (?(`MUT`_mut), zt)] -[visit_exp ?(`MUT`_mut)] -[visit_exp `MUT`_mut] -[visit_exp ()] -[visit_exp zt] -[visit_id zt] not free -[check_dims] C mut x zt -[visit_exp C] -[visit_id C] -[visit_exp `ARRAY.NEW`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) `I32`_valtype]), [], `%`_resulttype([`REF`_valtype(?(), `_IDX`_heaptype(x))]))] -[visit_exp (`%`_resulttype([$unpack(zt) `I32`_valtype]), [], `%`_resulttype([`REF`_valtype(?(), `_IDX`_heaptype(x))]))] -[visit_exp `%`_resulttype([$unpack(zt) `I32`_valtype])] -[visit_exp ([$unpack(zt) `I32`_valtype])] -[visit_exp [$unpack(zt) `I32`_valtype]] -[visit_exp $unpack(zt)] -[visit_exp zt] -[visit_id zt] -[visit_exp `I32`_valtype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype([`REF`_valtype(?(), `_IDX`_heaptype(x))])] -[visit_exp ([`REF`_valtype(?(), `_IDX`_heaptype(x))])] -[visit_exp [`REF`_valtype(?(), `_IDX`_heaptype(x))]] -[visit_exp `REF`_valtype(?(), `_IDX`_heaptype(x))] -[visit_exp (?(), `_IDX`_heaptype(x))] -[visit_exp ?()] -[visit_exp `_IDX`_heaptype(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] not free -[visit_exp (C.`TYPES`_context[x!`%`_idx.0], `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)))] -[visit_exp C.`TYPES`_context[x!`%`_idx.0]] -[visit_exp C.`TYPES`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] -[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] -[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)] -[visit_exp (mut?{mut <- `mut?`}, zt)] -[visit_exp mut?{mut <- `mut?`}] -[scope_enter mut] -[visit_exp mut] -[visit_id mut] not free -[visit_id mut] not free -[scope_exit mut] -[visit_exp `mut?`] -[visit_id mut?] no dims -[visit_id mut?] -[visit_exp zt] -[visit_id zt] not free -[check_dims] C mut x zt -[visit_exp C] -[visit_id C] -[visit_exp `ARRAY.NEW_DEFAULT`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([`I32`_valtype]), [], `%`_resulttype([`REF`_valtype(?(), `_IDX`_heaptype(x))]))] -[visit_exp (`%`_resulttype([`I32`_valtype]), [], `%`_resulttype([`REF`_valtype(?(), `_IDX`_heaptype(x))]))] -[visit_exp `%`_resulttype([`I32`_valtype])] -[visit_exp ([`I32`_valtype])] -[visit_exp [`I32`_valtype]] -[visit_exp `I32`_valtype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype([`REF`_valtype(?(), `_IDX`_heaptype(x))])] -[visit_exp ([`REF`_valtype(?(), `_IDX`_heaptype(x))])] -[visit_exp [`REF`_valtype(?(), `_IDX`_heaptype(x))]] -[visit_exp `REF`_valtype(?(), `_IDX`_heaptype(x))] -[visit_exp (?(), `_IDX`_heaptype(x))] -[visit_exp ?()] -[visit_exp `_IDX`_heaptype(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] not free -[visit_exp (C.`TYPES`_context[x!`%`_idx.0], `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)))] -[visit_exp C.`TYPES`_context[x!`%`_idx.0]] -[visit_exp C.`TYPES`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] -[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] -[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)] -[visit_exp (mut?{mut <- `mut?`}, zt)] -[visit_exp mut?{mut <- `mut?`}] -[scope_enter mut] -[visit_exp mut] -[visit_id mut] not free -[visit_id mut] not free -[scope_exit mut] -[visit_exp `mut?`] -[visit_id mut?] no dims -[visit_id mut?] -[visit_exp zt] -[visit_id zt] -[visit_exp $unpack(zt)] -[visit_exp zt] -[visit_id zt] not free -[check_dims] C mut n x zt -[visit_exp C] -[visit_id C] -[visit_exp `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))] -[visit_exp (x, `%`_u32(n))] -[visit_exp x] -[visit_id x] -[visit_exp `%`_u32(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([`REF`_valtype(?(), `_IDX`_heaptype(x))]))] -[visit_exp (`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([`REF`_valtype(?(), `_IDX`_heaptype(x))]))] -[visit_exp `%`_resulttype($unpack(zt)^n{})] -[visit_exp ($unpack(zt)^n{})] -[visit_exp $unpack(zt)^n{}] -[visit_exp $unpack(zt)] -[visit_exp zt] -[visit_id zt] -[visit_exp n] -[visit_id n] not free -[visit_exp []] -[visit_exp `%`_resulttype([`REF`_valtype(?(), `_IDX`_heaptype(x))])] -[visit_exp ([`REF`_valtype(?(), `_IDX`_heaptype(x))])] -[visit_exp [`REF`_valtype(?(), `_IDX`_heaptype(x))]] -[visit_exp `REF`_valtype(?(), `_IDX`_heaptype(x))] -[visit_exp (?(), `_IDX`_heaptype(x))] -[visit_exp ?()] -[visit_exp `_IDX`_heaptype(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] not free -[visit_exp (C.`TYPES`_context[x!`%`_idx.0], `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)))] -[visit_exp C.`TYPES`_context[x!`%`_idx.0]] -[visit_exp C.`TYPES`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] -[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] -[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)] -[visit_exp (mut?{mut <- `mut?`}, zt)] -[visit_exp mut?{mut <- `mut?`}] -[scope_enter mut] -[visit_exp mut] -[visit_id mut] not free -[visit_id mut] not free -[scope_exit mut] -[visit_exp `mut?`] -[visit_id mut?] no dims -[visit_id mut?] -[visit_exp zt] -[visit_id zt] not free -[check_dims] C mut rt x y -[visit_exp C] -[visit_id C] -[visit_exp `ARRAY.NEW_ELEM`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] -[visit_exp y] -[visit_id y] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([`I32`_valtype `I32`_valtype]), [], `%`_resulttype([`REF`_valtype(?(), `_IDX`_heaptype(x))]))] -[visit_exp (`%`_resulttype([`I32`_valtype `I32`_valtype]), [], `%`_resulttype([`REF`_valtype(?(), `_IDX`_heaptype(x))]))] -[visit_exp `%`_resulttype([`I32`_valtype `I32`_valtype])] -[visit_exp ([`I32`_valtype `I32`_valtype])] -[visit_exp [`I32`_valtype `I32`_valtype]] -[visit_exp `I32`_valtype] -[visit_exp ()] -[visit_exp `I32`_valtype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype([`REF`_valtype(?(), `_IDX`_heaptype(x))])] -[visit_exp ([`REF`_valtype(?(), `_IDX`_heaptype(x))])] -[visit_exp [`REF`_valtype(?(), `_IDX`_heaptype(x))]] -[visit_exp `REF`_valtype(?(), `_IDX`_heaptype(x))] -[visit_exp (?(), `_IDX`_heaptype(x))] -[visit_exp ?()] -[visit_exp `_IDX`_heaptype(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] not free -[visit_exp (C.`TYPES`_context[x!`%`_idx.0], `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype))))] -[visit_exp C.`TYPES`_context[x!`%`_idx.0]] -[visit_exp C.`TYPES`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))] -[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))] -[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype))] -[visit_exp (mut?{mut <- `mut?`}, (rt : reftype <: storagetype))] -[visit_exp mut?{mut <- `mut?`}] -[scope_enter mut] -[visit_exp mut] -[visit_id mut] not free -[visit_id mut] not free -[scope_exit mut] -[visit_exp `mut?`] -[visit_id mut?] no dims -[visit_id mut?] -[visit_exp (rt : reftype <: storagetype)] -[visit_exp rt] -[visit_id rt] -[visit_exp (C, C.`ELEMS`_context[y!`%`_idx.0], rt)] -[visit_exp C] -[visit_id C] not free -[visit_exp C.`ELEMS`_context[y!`%`_idx.0]] -[visit_exp C.`ELEMS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp y!`%`_idx.0] -[visit_exp y!`%`_idx] -[visit_exp y] -[visit_id y] not free -[visit_exp rt] -[visit_id rt] not free -[check_dims] C mut numtype vectype x y zt -[visit_exp C] -[visit_id C] -[visit_exp `ARRAY.NEW_DATA`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] -[visit_exp y] -[visit_id y] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([`I32`_valtype `I32`_valtype]), [], `%`_resulttype([`REF`_valtype(?(), `_IDX`_heaptype(x))]))] -[visit_exp (`%`_resulttype([`I32`_valtype `I32`_valtype]), [], `%`_resulttype([`REF`_valtype(?(), `_IDX`_heaptype(x))]))] -[visit_exp `%`_resulttype([`I32`_valtype `I32`_valtype])] -[visit_exp ([`I32`_valtype `I32`_valtype])] -[visit_exp [`I32`_valtype `I32`_valtype]] -[visit_exp `I32`_valtype] -[visit_exp ()] -[visit_exp `I32`_valtype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype([`REF`_valtype(?(), `_IDX`_heaptype(x))])] -[visit_exp ([`REF`_valtype(?(), `_IDX`_heaptype(x))])] -[visit_exp [`REF`_valtype(?(), `_IDX`_heaptype(x))]] -[visit_exp `REF`_valtype(?(), `_IDX`_heaptype(x))] -[visit_exp (?(), `_IDX`_heaptype(x))] -[visit_exp ?()] -[visit_exp `_IDX`_heaptype(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] not free -[visit_exp (C.`TYPES`_context[x!`%`_idx.0], `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)))] -[visit_exp C.`TYPES`_context[x!`%`_idx.0]] -[visit_exp C.`TYPES`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] -[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] -[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)] -[visit_exp (mut?{mut <- `mut?`}, zt)] -[visit_exp mut?{mut <- `mut?`}] -[scope_enter mut] -[visit_exp mut] -[visit_id mut] not free -[visit_id mut] not free -[scope_exit mut] -[visit_exp `mut?`] -[visit_id mut?] no dims -[visit_id mut?] -[visit_exp zt] -[visit_id zt] -[visit_exp (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype)))] -[visit_exp ($unpack(zt) = (numtype : numtype <: valtype))] -[visit_exp $unpack(zt)] -[visit_exp zt] -[visit_id zt] not free -[visit_exp (numtype : numtype <: valtype)] -[visit_exp numtype] -[visit_id numtype] -[visit_exp ($unpack(zt) = (vectype : vectype <: valtype))] -[visit_exp $unpack(zt)] -[visit_exp zt] -[visit_id zt] not free -[visit_exp (vectype : vectype <: valtype)] -[visit_exp vectype] -[visit_id vectype] -[visit_exp (C.`DATAS`_context[y!`%`_idx.0] = `OK`_datatype)] -[visit_exp C.`DATAS`_context[y!`%`_idx.0]] -[visit_exp C.`DATAS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp y!`%`_idx.0] -[visit_exp y!`%`_idx] -[visit_exp y] -[visit_id y] not free -[visit_exp `OK`_datatype] -[visit_exp ()] -[check_dims] C mut sx x zt -[visit_exp C] -[visit_id C] -[visit_exp `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)] -[visit_exp (sx?{sx <- `sx?`}, x)] -[visit_exp sx?{sx <- `sx?`}] -[scope_enter sx] -[visit_exp sx] -[visit_id sx] not free -[visit_id sx] not free -[scope_exit sx] -[visit_exp `sx?`] -[visit_id sx?] no dims -[visit_id sx?] -[visit_exp x] -[visit_id x] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype]), [], `%`_resulttype([$unpack(zt)]))] -[visit_exp (`%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype]), [], `%`_resulttype([$unpack(zt)]))] -[visit_exp `%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype])] -[visit_exp ([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype])] -[visit_exp [`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype]] -[visit_exp `REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))] -[visit_exp (?(`NULL`_null), `_IDX`_heaptype(x))] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp `_IDX`_heaptype(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] not free -[visit_exp `I32`_valtype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype([$unpack(zt)])] -[visit_exp ([$unpack(zt)])] -[visit_exp [$unpack(zt)]] -[visit_exp $unpack(zt)] -[visit_exp zt] -[visit_id zt] -[visit_exp (C.`TYPES`_context[x!`%`_idx.0], `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)))] -[visit_exp C.`TYPES`_context[x!`%`_idx.0]] -[visit_exp C.`TYPES`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] -[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] -[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)] -[visit_exp (mut?{mut <- `mut?`}, zt)] -[visit_exp mut?{mut <- `mut?`}] -[scope_enter mut] -[visit_exp mut] -[visit_id mut] not free -[visit_id mut] not free -[scope_exit mut] -[visit_exp `mut?`] -[visit_id mut?] no dims -[visit_id mut?] -[visit_exp zt] -[visit_id zt] not free -[visit_exp ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt))] -[visit_exp (sx?{sx <- `sx?`} = ?())] -[visit_exp sx?{sx <- `sx?`}] -[scope_enter sx] -[visit_exp sx] -[visit_id sx] not free -[visit_id sx] not free -[scope_exit sx] -[visit_exp `sx?`] -[visit_id sx?] not free -[visit_id sx?] no dims -[visit_exp ?()] -[visit_exp $is_packtype(zt)] -[visit_exp zt] -[visit_id zt] not free -[check_dims] C x zt -[visit_exp C] -[visit_id C] -[visit_exp `ARRAY.SET`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype $unpack(zt)]), [], `%`_resulttype([]))] -[visit_exp (`%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype $unpack(zt)]), [], `%`_resulttype([]))] -[visit_exp `%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype $unpack(zt)])] -[visit_exp ([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype $unpack(zt)])] -[visit_exp [`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype $unpack(zt)]] -[visit_exp `REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))] -[visit_exp (?(`NULL`_null), `_IDX`_heaptype(x))] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp `_IDX`_heaptype(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] not free -[visit_exp `I32`_valtype] -[visit_exp ()] -[visit_exp $unpack(zt)] -[visit_exp zt] -[visit_id zt] -[visit_exp []] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp (C.`TYPES`_context[x!`%`_idx.0], `ARRAY`_comptype(`%%`_fieldtype(?(`MUT`_mut), zt)))] -[visit_exp C.`TYPES`_context[x!`%`_idx.0]] -[visit_exp C.`TYPES`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `ARRAY`_comptype(`%%`_fieldtype(?(`MUT`_mut), zt))] -[visit_exp (`%%`_fieldtype(?(`MUT`_mut), zt))] -[visit_exp `%%`_fieldtype(?(`MUT`_mut), zt)] -[visit_exp (?(`MUT`_mut), zt)] -[visit_exp ?(`MUT`_mut)] -[visit_exp `MUT`_mut] -[visit_exp ()] -[visit_exp zt] -[visit_id zt] not free -[check_dims] C -[visit_exp C] -[visit_id C] -[visit_exp `ARRAY.LEN`_instr] -[visit_exp ()] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([`REF`_valtype(?(`NULL`_null), `ARRAY`_heaptype)]), [], `%`_resulttype([`I32`_valtype]))] -[visit_exp (`%`_resulttype([`REF`_valtype(?(`NULL`_null), `ARRAY`_heaptype)]), [], `%`_resulttype([`I32`_valtype]))] -[visit_exp `%`_resulttype([`REF`_valtype(?(`NULL`_null), `ARRAY`_heaptype)])] -[visit_exp ([`REF`_valtype(?(`NULL`_null), `ARRAY`_heaptype)])] -[visit_exp [`REF`_valtype(?(`NULL`_null), `ARRAY`_heaptype)]] -[visit_exp `REF`_valtype(?(`NULL`_null), `ARRAY`_heaptype)] -[visit_exp (?(`NULL`_null), `ARRAY`_heaptype)] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp `ARRAY`_heaptype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype([`I32`_valtype])] -[visit_exp ([`I32`_valtype])] -[visit_exp [`I32`_valtype]] -[visit_exp `I32`_valtype] -[visit_exp ()] -[check_dims] C x zt -[visit_exp C] -[visit_id C] -[visit_exp `ARRAY.FILL`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype $unpack(zt) `I32`_valtype]), [], `%`_resulttype([]))] -[visit_exp (`%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype $unpack(zt) `I32`_valtype]), [], `%`_resulttype([]))] -[visit_exp `%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype $unpack(zt) `I32`_valtype])] -[visit_exp ([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype $unpack(zt) `I32`_valtype])] -[visit_exp [`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype $unpack(zt) `I32`_valtype]] -[visit_exp `REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))] -[visit_exp (?(`NULL`_null), `_IDX`_heaptype(x))] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp `_IDX`_heaptype(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] not free -[visit_exp `I32`_valtype] -[visit_exp ()] -[visit_exp $unpack(zt)] -[visit_exp zt] -[visit_id zt] -[visit_exp `I32`_valtype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp (C.`TYPES`_context[x!`%`_idx.0], `ARRAY`_comptype(`%%`_fieldtype(?(`MUT`_mut), zt)))] -[visit_exp C.`TYPES`_context[x!`%`_idx.0]] -[visit_exp C.`TYPES`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `ARRAY`_comptype(`%%`_fieldtype(?(`MUT`_mut), zt))] -[visit_exp (`%%`_fieldtype(?(`MUT`_mut), zt))] -[visit_exp `%%`_fieldtype(?(`MUT`_mut), zt)] -[visit_exp (?(`MUT`_mut), zt)] -[visit_exp ?(`MUT`_mut)] -[visit_exp `MUT`_mut] -[visit_exp ()] -[visit_exp zt] -[visit_id zt] not free -[check_dims] C mut x_1 x_2 zt_1 zt_2 -[visit_exp C] -[visit_id C] -[visit_exp `ARRAY.COPY`_instr(x_1, x_2)] -[visit_exp (x_1, x_2)] -[visit_exp x_1] -[visit_id x_1] -[visit_exp x_2] -[visit_id x_2] -[visit_exp `%->_%%`_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([]))] -[visit_exp (`%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x_1)) `I32`_valtype `REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x_2)) `I32`_valtype `I32`_valtype]), [], `%`_resulttype([]))] -[visit_exp `%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x_1)) `I32`_valtype `REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x_2)) `I32`_valtype `I32`_valtype])] -[visit_exp ([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x_1)) `I32`_valtype `REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x_2)) `I32`_valtype `I32`_valtype])] -[visit_exp [`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x_1)) `I32`_valtype `REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x_2)) `I32`_valtype `I32`_valtype]] -[visit_exp `REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x_1))] -[visit_exp (?(`NULL`_null), `_IDX`_heaptype(x_1))] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp `_IDX`_heaptype(x_1)] -[visit_exp (x_1)] -[visit_exp x_1] -[visit_id x_1] not free -[visit_exp `I32`_valtype] -[visit_exp ()] -[visit_exp `REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x_2))] -[visit_exp (?(`NULL`_null), `_IDX`_heaptype(x_2))] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp `_IDX`_heaptype(x_2)] -[visit_exp (x_2)] -[visit_exp x_2] -[visit_id x_2] not free -[visit_exp `I32`_valtype] -[visit_exp ()] -[visit_exp `I32`_valtype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp (C.`TYPES`_context[x_1!`%`_idx.0], `ARRAY`_comptype(`%%`_fieldtype(?(`MUT`_mut), zt_1)))] -[visit_exp C.`TYPES`_context[x_1!`%`_idx.0]] -[visit_exp C.`TYPES`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x_1!`%`_idx.0] -[visit_exp x_1!`%`_idx] -[visit_exp x_1] -[visit_id x_1] not free -[visit_exp `ARRAY`_comptype(`%%`_fieldtype(?(`MUT`_mut), zt_1))] -[visit_exp (`%%`_fieldtype(?(`MUT`_mut), zt_1))] -[visit_exp `%%`_fieldtype(?(`MUT`_mut), zt_1)] -[visit_exp (?(`MUT`_mut), zt_1)] -[visit_exp ?(`MUT`_mut)] -[visit_exp `MUT`_mut] -[visit_exp ()] -[visit_exp zt_1] -[visit_id zt_1] -[visit_exp (C.`TYPES`_context[x_2!`%`_idx.0], `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2)))] -[visit_exp C.`TYPES`_context[x_2!`%`_idx.0]] -[visit_exp C.`TYPES`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x_2!`%`_idx.0] -[visit_exp x_2!`%`_idx] -[visit_exp x_2] -[visit_id x_2] not free -[visit_exp `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))] -[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))] -[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt_2)] -[visit_exp (mut?{mut <- `mut?`}, zt_2)] -[visit_exp mut?{mut <- `mut?`}] -[scope_enter mut] -[visit_exp mut] -[visit_id mut] not free -[visit_id mut] not free -[scope_exit mut] -[visit_exp `mut?`] -[visit_id mut?] no dims -[visit_id mut?] -[visit_exp zt_2] -[visit_id zt_2] -[visit_exp (C, zt_2, zt_1)] -[visit_exp C] -[visit_id C] not free -[visit_exp zt_2] -[visit_id zt_2] not free -[visit_exp zt_1] -[visit_id zt_1] not free -[check_dims] C x y zt -[visit_exp C] -[visit_id C] -[visit_exp `ARRAY.INIT_ELEM`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] -[visit_exp y] -[visit_id y] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype `I32`_valtype `I32`_valtype]), [], `%`_resulttype([]))] -[visit_exp (`%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype `I32`_valtype `I32`_valtype]), [], `%`_resulttype([]))] -[visit_exp `%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype `I32`_valtype `I32`_valtype])] -[visit_exp ([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype `I32`_valtype `I32`_valtype])] -[visit_exp [`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype `I32`_valtype `I32`_valtype]] -[visit_exp `REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))] -[visit_exp (?(`NULL`_null), `_IDX`_heaptype(x))] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp `_IDX`_heaptype(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] not free -[visit_exp `I32`_valtype] -[visit_exp ()] -[visit_exp `I32`_valtype] -[visit_exp ()] -[visit_exp `I32`_valtype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp (C.`TYPES`_context[x!`%`_idx.0], `ARRAY`_comptype(`%%`_fieldtype(?(`MUT`_mut), zt)))] -[visit_exp C.`TYPES`_context[x!`%`_idx.0]] -[visit_exp C.`TYPES`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `ARRAY`_comptype(`%%`_fieldtype(?(`MUT`_mut), zt))] -[visit_exp (`%%`_fieldtype(?(`MUT`_mut), zt))] -[visit_exp `%%`_fieldtype(?(`MUT`_mut), zt)] -[visit_exp (?(`MUT`_mut), zt)] -[visit_exp ?(`MUT`_mut)] -[visit_exp `MUT`_mut] -[visit_exp ()] -[visit_exp zt] -[visit_id zt] -[visit_exp (C, (C.`ELEMS`_context[y!`%`_idx.0] : reftype <: storagetype), zt)] -[visit_exp C] -[visit_id C] not free -[visit_exp (C.`ELEMS`_context[y!`%`_idx.0] : reftype <: storagetype)] -[visit_exp C.`ELEMS`_context[y!`%`_idx.0]] -[visit_exp C.`ELEMS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp y!`%`_idx.0] -[visit_exp y!`%`_idx] -[visit_exp y] -[visit_id y] not free -[visit_exp zt] -[visit_id zt] not free -[check_dims] C numtype vectype x y zt -[visit_exp C] -[visit_id C] -[visit_exp `ARRAY.INIT_DATA`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] -[visit_exp y] -[visit_id y] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype `I32`_valtype `I32`_valtype]), [], `%`_resulttype([]))] -[visit_exp (`%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype `I32`_valtype `I32`_valtype]), [], `%`_resulttype([]))] -[visit_exp `%`_resulttype([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype `I32`_valtype `I32`_valtype])] -[visit_exp ([`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype `I32`_valtype `I32`_valtype])] -[visit_exp [`REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x)) `I32`_valtype `I32`_valtype `I32`_valtype]] -[visit_exp `REF`_valtype(?(`NULL`_null), `_IDX`_heaptype(x))] -[visit_exp (?(`NULL`_null), `_IDX`_heaptype(x))] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp `_IDX`_heaptype(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] not free -[visit_exp `I32`_valtype] -[visit_exp ()] -[visit_exp `I32`_valtype] -[visit_exp ()] -[visit_exp `I32`_valtype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp (C.`TYPES`_context[x!`%`_idx.0], `ARRAY`_comptype(`%%`_fieldtype(?(`MUT`_mut), zt)))] -[visit_exp C.`TYPES`_context[x!`%`_idx.0]] -[visit_exp C.`TYPES`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `ARRAY`_comptype(`%%`_fieldtype(?(`MUT`_mut), zt))] -[visit_exp (`%%`_fieldtype(?(`MUT`_mut), zt))] -[visit_exp `%%`_fieldtype(?(`MUT`_mut), zt)] -[visit_exp (?(`MUT`_mut), zt)] -[visit_exp ?(`MUT`_mut)] -[visit_exp `MUT`_mut] -[visit_exp ()] -[visit_exp zt] -[visit_id zt] -[visit_exp (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype)))] -[visit_exp ($unpack(zt) = (numtype : numtype <: valtype))] -[visit_exp $unpack(zt)] -[visit_exp zt] -[visit_id zt] not free -[visit_exp (numtype : numtype <: valtype)] -[visit_exp numtype] -[visit_id numtype] -[visit_exp ($unpack(zt) = (vectype : vectype <: valtype))] -[visit_exp $unpack(zt)] -[visit_exp zt] -[visit_id zt] not free -[visit_exp (vectype : vectype <: valtype)] -[visit_exp vectype] -[visit_id vectype] -[visit_exp (C.`DATAS`_context[y!`%`_idx.0] = `OK`_datatype)] -[visit_exp C.`DATAS`_context[y!`%`_idx.0]] -[visit_exp C.`DATAS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp y!`%`_idx.0] -[visit_exp y!`%`_idx] -[visit_exp y] -[visit_id y] not free -[visit_exp `OK`_datatype] -[visit_exp ()] -[check_dims] C null_1 null_2 -[visit_exp C] -[visit_id C] -[visit_exp `EXTERN.CONVERT_ANY`_instr] -[visit_exp ()] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([`REF`_valtype(null_1?{null_1 <- `null_1?`}, `ANY`_heaptype)]), [], `%`_resulttype([`REF`_valtype(null_2?{null_2 <- `null_2?`}, `EXTERN`_heaptype)]))] -[visit_exp (`%`_resulttype([`REF`_valtype(null_1?{null_1 <- `null_1?`}, `ANY`_heaptype)]), [], `%`_resulttype([`REF`_valtype(null_2?{null_2 <- `null_2?`}, `EXTERN`_heaptype)]))] -[visit_exp `%`_resulttype([`REF`_valtype(null_1?{null_1 <- `null_1?`}, `ANY`_heaptype)])] -[visit_exp ([`REF`_valtype(null_1?{null_1 <- `null_1?`}, `ANY`_heaptype)])] -[visit_exp [`REF`_valtype(null_1?{null_1 <- `null_1?`}, `ANY`_heaptype)]] -[visit_exp `REF`_valtype(null_1?{null_1 <- `null_1?`}, `ANY`_heaptype)] -[visit_exp (null_1?{null_1 <- `null_1?`}, `ANY`_heaptype)] -[visit_exp null_1?{null_1 <- `null_1?`}] -[scope_enter null_1] -[visit_exp null_1] -[visit_id null_1] not free -[visit_id null_1] not free -[scope_exit null_1] -[visit_exp `null_1?`] -[visit_id null_1?] no dims -[visit_id null_1?] -[visit_exp `ANY`_heaptype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype([`REF`_valtype(null_2?{null_2 <- `null_2?`}, `EXTERN`_heaptype)])] -[visit_exp ([`REF`_valtype(null_2?{null_2 <- `null_2?`}, `EXTERN`_heaptype)])] -[visit_exp [`REF`_valtype(null_2?{null_2 <- `null_2?`}, `EXTERN`_heaptype)]] -[visit_exp `REF`_valtype(null_2?{null_2 <- `null_2?`}, `EXTERN`_heaptype)] -[visit_exp (null_2?{null_2 <- `null_2?`}, `EXTERN`_heaptype)] -[visit_exp null_2?{null_2 <- `null_2?`}] -[scope_enter null_2] -[visit_exp null_2] -[visit_id null_2] not free -[visit_id null_2] not free -[scope_exit null_2] -[visit_exp `null_2?`] -[visit_id null_2?] no dims -[visit_id null_2?] -[visit_exp `EXTERN`_heaptype] -[visit_exp ()] -[visit_exp (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`})] -[visit_exp null_1?{null_1 <- `null_1?`}] -[scope_enter null_1] -[visit_exp null_1] -[visit_id null_1] not free -[visit_id null_1] not free -[scope_exit null_1] -[visit_exp `null_1?`] -[visit_id null_1?] not free -[visit_id null_1?] no dims -[visit_exp null_2?{null_2 <- `null_2?`}] -[scope_enter null_2] -[visit_exp null_2] -[visit_id null_2] not free -[visit_id null_2] not free -[scope_exit null_2] -[visit_exp `null_2?`] -[visit_id null_2?] not free -[visit_id null_2?] no dims -[check_dims] C null_1 null_2 -[visit_exp C] -[visit_id C] -[visit_exp `ANY.CONVERT_EXTERN`_instr] -[visit_exp ()] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([`REF`_valtype(null_1?{null_1 <- `null_1?`}, `EXTERN`_heaptype)]), [], `%`_resulttype([`REF`_valtype(null_2?{null_2 <- `null_2?`}, `ANY`_heaptype)]))] -[visit_exp (`%`_resulttype([`REF`_valtype(null_1?{null_1 <- `null_1?`}, `EXTERN`_heaptype)]), [], `%`_resulttype([`REF`_valtype(null_2?{null_2 <- `null_2?`}, `ANY`_heaptype)]))] -[visit_exp `%`_resulttype([`REF`_valtype(null_1?{null_1 <- `null_1?`}, `EXTERN`_heaptype)])] -[visit_exp ([`REF`_valtype(null_1?{null_1 <- `null_1?`}, `EXTERN`_heaptype)])] -[visit_exp [`REF`_valtype(null_1?{null_1 <- `null_1?`}, `EXTERN`_heaptype)]] -[visit_exp `REF`_valtype(null_1?{null_1 <- `null_1?`}, `EXTERN`_heaptype)] -[visit_exp (null_1?{null_1 <- `null_1?`}, `EXTERN`_heaptype)] -[visit_exp null_1?{null_1 <- `null_1?`}] -[scope_enter null_1] -[visit_exp null_1] -[visit_id null_1] not free -[visit_id null_1] not free -[scope_exit null_1] -[visit_exp `null_1?`] -[visit_id null_1?] no dims -[visit_id null_1?] -[visit_exp `EXTERN`_heaptype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype([`REF`_valtype(null_2?{null_2 <- `null_2?`}, `ANY`_heaptype)])] -[visit_exp ([`REF`_valtype(null_2?{null_2 <- `null_2?`}, `ANY`_heaptype)])] -[visit_exp [`REF`_valtype(null_2?{null_2 <- `null_2?`}, `ANY`_heaptype)]] -[visit_exp `REF`_valtype(null_2?{null_2 <- `null_2?`}, `ANY`_heaptype)] -[visit_exp (null_2?{null_2 <- `null_2?`}, `ANY`_heaptype)] -[visit_exp null_2?{null_2 <- `null_2?`}] -[scope_enter null_2] -[visit_exp null_2] -[visit_id null_2] not free -[visit_id null_2] not free -[scope_exit null_2] -[visit_exp `null_2?`] -[visit_id null_2?] no dims -[visit_id null_2?] -[visit_exp `ANY`_heaptype] -[visit_exp ()] -[visit_exp (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`})] -[visit_exp null_1?{null_1 <- `null_1?`}] -[scope_enter null_1] -[visit_exp null_1] -[visit_id null_1] not free -[visit_id null_1] not free -[scope_exit null_1] -[visit_exp `null_1?`] -[visit_id null_1?] not free -[visit_id null_1?] no dims -[visit_exp null_2?{null_2 <- `null_2?`}] -[scope_enter null_2] -[visit_exp null_2] -[visit_id null_2] not free -[visit_id null_2] not free -[scope_exit null_2] -[visit_exp `null_2?`] -[visit_id null_2?] not free -[visit_id null_2?] no dims -[check_dims] C t x -[visit_exp C] -[visit_id C] -[visit_exp `LOCAL.GET`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))] -[visit_exp (`%`_resulttype([]), [], `%`_resulttype([t]))] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp []] -[visit_exp `%`_resulttype([t])] -[visit_exp ([t])] -[visit_exp [t]] -[visit_exp t] -[visit_id t] -[visit_exp (C.`LOCALS`_context[x!`%`_idx.0] = `%%`_localtype(`SET`_init, t))] -[visit_exp C.`LOCALS`_context[x!`%`_idx.0]] -[visit_exp C.`LOCALS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `%%`_localtype(`SET`_init, t)] -[visit_exp (`SET`_init, t)] -[visit_exp `SET`_init] -[visit_exp ()] -[visit_exp t] -[visit_id t] not free -[check_dims] C init t x -[visit_exp C] -[visit_id C] -[visit_exp `LOCAL.SET`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))] -[visit_exp (`%`_resulttype([t]), [x], `%`_resulttype([]))] -[visit_exp `%`_resulttype([t])] -[visit_exp ([t])] -[visit_exp [t]] -[visit_exp t] -[visit_id t] -[visit_exp [x]] -[visit_exp x] -[visit_id x] not free -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp (C.`LOCALS`_context[x!`%`_idx.0] = `%%`_localtype(init, t))] -[visit_exp C.`LOCALS`_context[x!`%`_idx.0]] -[visit_exp C.`LOCALS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `%%`_localtype(init, t)] -[visit_exp (init, t)] -[visit_exp init] -[visit_id init] -[visit_exp t] -[visit_id t] not free -[check_dims] C init t x -[visit_exp C] -[visit_id C] -[visit_exp `LOCAL.TEE`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))] -[visit_exp (`%`_resulttype([t]), [x], `%`_resulttype([t]))] -[visit_exp `%`_resulttype([t])] -[visit_exp ([t])] -[visit_exp [t]] -[visit_exp t] -[visit_id t] -[visit_exp [x]] -[visit_exp x] -[visit_id x] not free -[visit_exp `%`_resulttype([t])] -[visit_exp ([t])] -[visit_exp [t]] -[visit_exp t] -[visit_id t] not free -[visit_exp (C.`LOCALS`_context[x!`%`_idx.0] = `%%`_localtype(init, t))] -[visit_exp C.`LOCALS`_context[x!`%`_idx.0]] -[visit_exp C.`LOCALS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `%%`_localtype(init, t)] -[visit_exp (init, t)] -[visit_exp init] -[visit_id init] -[visit_exp t] -[visit_id t] not free -[check_dims] C mut t x -[visit_exp C] -[visit_id C] -[visit_exp `GLOBAL.GET`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))] -[visit_exp (`%`_resulttype([]), [], `%`_resulttype([t]))] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp []] -[visit_exp `%`_resulttype([t])] -[visit_exp ([t])] -[visit_exp [t]] -[visit_exp t] -[visit_id t] -[visit_exp (C.`GLOBALS`_context[x!`%`_idx.0] = `%%`_globaltype(mut?{mut <- `mut?`}, t))] -[visit_exp C.`GLOBALS`_context[x!`%`_idx.0]] -[visit_exp C.`GLOBALS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `%%`_globaltype(mut?{mut <- `mut?`}, t)] -[visit_exp (mut?{mut <- `mut?`}, t)] -[visit_exp mut?{mut <- `mut?`}] -[scope_enter mut] -[visit_exp mut] -[visit_id mut] not free -[visit_id mut] not free -[scope_exit mut] -[visit_exp `mut?`] -[visit_id mut?] no dims -[visit_id mut?] -[visit_exp t] -[visit_id t] not free -[check_dims] C t x -[visit_exp C] -[visit_id C] -[visit_exp `GLOBAL.SET`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))] -[visit_exp (`%`_resulttype([t]), [], `%`_resulttype([]))] -[visit_exp `%`_resulttype([t])] -[visit_exp ([t])] -[visit_exp [t]] -[visit_exp t] -[visit_id t] -[visit_exp []] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp (C.`GLOBALS`_context[x!`%`_idx.0] = `%%`_globaltype(?(`MUT`_mut), t))] -[visit_exp C.`GLOBALS`_context[x!`%`_idx.0]] -[visit_exp C.`GLOBALS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `%%`_globaltype(?(`MUT`_mut), t)] -[visit_exp (?(`MUT`_mut), t)] -[visit_exp ?(`MUT`_mut)] -[visit_exp `MUT`_mut] -[visit_exp ()] -[visit_exp t] -[visit_id t] not free -[check_dims] C at lim rt x -[visit_exp C] -[visit_id C] -[visit_exp `TABLE.GET`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))] -[visit_exp (`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))] -[visit_exp `%`_resulttype([(at : addrtype <: valtype)])] -[visit_exp ([(at : addrtype <: valtype)])] -[visit_exp [(at : addrtype <: valtype)]] -[visit_exp (at : addrtype <: valtype)] -[visit_exp at] -[visit_id at] -[visit_exp []] -[visit_exp `%`_resulttype([(rt : reftype <: valtype)])] -[visit_exp ([(rt : reftype <: valtype)])] -[visit_exp [(rt : reftype <: valtype)]] -[visit_exp (rt : reftype <: valtype)] -[visit_exp rt] -[visit_id rt] -[visit_exp (C.`TABLES`_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt))] -[visit_exp C.`TABLES`_context[x!`%`_idx.0]] -[visit_exp C.`TABLES`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `%%%`_tabletype(at, lim, rt)] -[visit_exp (at, lim, rt)] -[visit_exp at] -[visit_id at] not free -[visit_exp lim] -[visit_id lim] -[visit_exp rt] -[visit_id rt] not free -[check_dims] C at lim rt x -[visit_exp C] -[visit_id C] -[visit_exp `TABLE.SET`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))] -[visit_exp (`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))] -[visit_exp `%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)])] -[visit_exp ([(at : addrtype <: valtype) (rt : reftype <: valtype)])] -[visit_exp [(at : addrtype <: valtype) (rt : reftype <: valtype)]] -[visit_exp (at : addrtype <: valtype)] -[visit_exp at] -[visit_id at] -[visit_exp (rt : reftype <: valtype)] -[visit_exp rt] -[visit_id rt] -[visit_exp []] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp (C.`TABLES`_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt))] -[visit_exp C.`TABLES`_context[x!`%`_idx.0]] -[visit_exp C.`TABLES`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `%%%`_tabletype(at, lim, rt)] -[visit_exp (at, lim, rt)] -[visit_exp at] -[visit_id at] not free -[visit_exp lim] -[visit_id lim] -[visit_exp rt] -[visit_id rt] not free -[check_dims] C at lim rt x -[visit_exp C] -[visit_id C] -[visit_exp `TABLE.SIZE`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))] -[visit_exp (`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp []] -[visit_exp `%`_resulttype([(at : addrtype <: valtype)])] -[visit_exp ([(at : addrtype <: valtype)])] -[visit_exp [(at : addrtype <: valtype)]] -[visit_exp (at : addrtype <: valtype)] -[visit_exp at] -[visit_id at] -[visit_exp (C.`TABLES`_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt))] -[visit_exp C.`TABLES`_context[x!`%`_idx.0]] -[visit_exp C.`TABLES`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `%%%`_tabletype(at, lim, rt)] -[visit_exp (at, lim, rt)] -[visit_exp at] -[visit_id at] not free -[visit_exp lim] -[visit_id lim] -[visit_exp rt] -[visit_id rt] -[check_dims] C at lim rt x -[visit_exp C] -[visit_id C] -[visit_exp `TABLE.GROW`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([`I32`_valtype]))] -[visit_exp (`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([`I32`_valtype]))] -[visit_exp `%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)])] -[visit_exp ([(rt : reftype <: valtype) (at : addrtype <: valtype)])] -[visit_exp [(rt : reftype <: valtype) (at : addrtype <: valtype)]] -[visit_exp (rt : reftype <: valtype)] -[visit_exp rt] -[visit_id rt] -[visit_exp (at : addrtype <: valtype)] -[visit_exp at] -[visit_id at] -[visit_exp []] -[visit_exp `%`_resulttype([`I32`_valtype])] -[visit_exp ([`I32`_valtype])] -[visit_exp [`I32`_valtype]] -[visit_exp `I32`_valtype] -[visit_exp ()] -[visit_exp (C.`TABLES`_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt))] -[visit_exp C.`TABLES`_context[x!`%`_idx.0]] -[visit_exp C.`TABLES`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `%%%`_tabletype(at, lim, rt)] -[visit_exp (at, lim, rt)] -[visit_exp at] -[visit_id at] not free -[visit_exp lim] -[visit_id lim] -[visit_exp rt] -[visit_id rt] not free -[check_dims] C at lim rt x -[visit_exp C] -[visit_id C] -[visit_exp `TABLE.FILL`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))] -[visit_exp (`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))] -[visit_exp `%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)])] -[visit_exp ([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)])] -[visit_exp [(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]] -[visit_exp (at : addrtype <: valtype)] -[visit_exp at] -[visit_id at] -[visit_exp (rt : reftype <: valtype)] -[visit_exp rt] -[visit_id rt] -[visit_exp (at : addrtype <: valtype)] -[visit_exp at] -[visit_id at] not free -[visit_exp []] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp (C.`TABLES`_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt))] -[visit_exp C.`TABLES`_context[x!`%`_idx.0]] -[visit_exp C.`TABLES`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `%%%`_tabletype(at, lim, rt)] -[visit_exp (at, lim, rt)] -[visit_exp at] -[visit_id at] not free -[visit_exp lim] -[visit_id lim] -[visit_exp rt] -[visit_id rt] not free -[check_dims] C at_1 at_2 lim_1 lim_2 rt_1 rt_2 x_1 x_2 -[visit_exp C] -[visit_id C] -[visit_exp `TABLE.COPY`_instr(x_1, x_2)] -[visit_exp (x_1, x_2)] -[visit_exp x_1] -[visit_id x_1] -[visit_exp x_2] -[visit_id x_2] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))] -[visit_exp (`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))] -[visit_exp `%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)])] -[visit_exp ([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)])] -[visit_exp [(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]] -[visit_exp (at_1 : addrtype <: valtype)] -[visit_exp at_1] -[visit_id at_1] -[visit_exp (at_2 : addrtype <: valtype)] -[visit_exp at_2] -[visit_id at_2] -[visit_exp ($minat(at_1, at_2) : addrtype <: valtype)] -[visit_exp $minat(at_1, at_2)] -[visit_exp at_1] -[visit_id at_1] not free -[visit_exp at_2] -[visit_id at_2] not free -[visit_exp []] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp (C.`TABLES`_context[x_1!`%`_idx.0] = `%%%`_tabletype(at_1, lim_1, rt_1))] -[visit_exp C.`TABLES`_context[x_1!`%`_idx.0]] -[visit_exp C.`TABLES`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x_1!`%`_idx.0] -[visit_exp x_1!`%`_idx] -[visit_exp x_1] -[visit_id x_1] not free -[visit_exp `%%%`_tabletype(at_1, lim_1, rt_1)] -[visit_exp (at_1, lim_1, rt_1)] -[visit_exp at_1] -[visit_id at_1] not free -[visit_exp lim_1] -[visit_id lim_1] -[visit_exp rt_1] -[visit_id rt_1] -[visit_exp (C.`TABLES`_context[x_2!`%`_idx.0] = `%%%`_tabletype(at_2, lim_2, rt_2))] -[visit_exp C.`TABLES`_context[x_2!`%`_idx.0]] -[visit_exp C.`TABLES`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x_2!`%`_idx.0] -[visit_exp x_2!`%`_idx] -[visit_exp x_2] -[visit_id x_2] not free -[visit_exp `%%%`_tabletype(at_2, lim_2, rt_2)] -[visit_exp (at_2, lim_2, rt_2)] -[visit_exp at_2] -[visit_id at_2] not free -[visit_exp lim_2] -[visit_id lim_2] -[visit_exp rt_2] -[visit_id rt_2] -[visit_exp (C, rt_2, rt_1)] -[visit_exp C] -[visit_id C] not free -[visit_exp rt_2] -[visit_id rt_2] not free -[visit_exp rt_1] -[visit_id rt_1] not free -[check_dims] C at lim rt_1 rt_2 x y -[visit_exp C] -[visit_id C] -[visit_exp `TABLE.INIT`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] -[visit_exp y] -[visit_id y] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) `I32`_valtype `I32`_valtype]), [], `%`_resulttype([]))] -[visit_exp (`%`_resulttype([(at : addrtype <: valtype) `I32`_valtype `I32`_valtype]), [], `%`_resulttype([]))] -[visit_exp `%`_resulttype([(at : addrtype <: valtype) `I32`_valtype `I32`_valtype])] -[visit_exp ([(at : addrtype <: valtype) `I32`_valtype `I32`_valtype])] -[visit_exp [(at : addrtype <: valtype) `I32`_valtype `I32`_valtype]] -[visit_exp (at : addrtype <: valtype)] -[visit_exp at] -[visit_id at] -[visit_exp `I32`_valtype] -[visit_exp ()] -[visit_exp `I32`_valtype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp (C.`TABLES`_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt_1))] -[visit_exp C.`TABLES`_context[x!`%`_idx.0]] -[visit_exp C.`TABLES`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `%%%`_tabletype(at, lim, rt_1)] -[visit_exp (at, lim, rt_1)] -[visit_exp at] -[visit_id at] not free -[visit_exp lim] -[visit_id lim] -[visit_exp rt_1] -[visit_id rt_1] -[visit_exp (C.`ELEMS`_context[y!`%`_idx.0] = rt_2)] -[visit_exp C.`ELEMS`_context[y!`%`_idx.0]] -[visit_exp C.`ELEMS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp y!`%`_idx.0] -[visit_exp y!`%`_idx] -[visit_exp y] -[visit_id y] not free -[visit_exp rt_2] -[visit_id rt_2] -[visit_exp (C, rt_2, rt_1)] -[visit_exp C] -[visit_id C] not free -[visit_exp rt_2] -[visit_id rt_2] not free -[visit_exp rt_1] -[visit_id rt_1] not free -[check_dims] C rt x -[visit_exp C] -[visit_id C] -[visit_exp `ELEM.DROP`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))] -[visit_exp (`%`_resulttype([]), [], `%`_resulttype([]))] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp []] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp (C.`ELEMS`_context[x!`%`_idx.0] = rt)] -[visit_exp C.`ELEMS`_context[x!`%`_idx.0]] -[visit_exp C.`ELEMS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp rt] -[visit_id rt] -[check_dims] -[check_dims] N at m n -[visit_exp {`ALIGN` `%`_u32(n), `OFFSET` `%`_u64(m)}] -[visit_exp `%`_u32(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `%`_u64(m)] -[visit_exp (m)] -[visit_exp m] -[visit_id m] -[visit_exp at] -[visit_id at] -[visit_exp N] -[visit_id N] -[visit_exp (((2 ^ n) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat)))] -[visit_exp ((2 ^ n) : nat <:> rat)] -[visit_exp (2 ^ n)] -[visit_exp 2] -[visit_exp n] -[visit_id n] not free -[visit_exp ((N : nat <:> rat) / (8 : nat <:> rat))] -[visit_exp (N : nat <:> rat)] -[visit_exp N] -[visit_id N] not free -[visit_exp (8 : nat <:> rat)] -[visit_exp 8] -[visit_exp (m < (2 ^ $size((at : addrtype <: numtype))))] -[visit_exp m] -[visit_id m] not free -[visit_exp (2 ^ $size((at : addrtype <: numtype)))] -[visit_exp 2] -[visit_exp $size((at : addrtype <: numtype))] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] not free -[check_dims] C at lim x -[visit_exp C] -[visit_id C] -[visit_exp `MEMORY.SIZE`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))] -[visit_exp (`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp []] -[visit_exp `%`_resulttype([(at : addrtype <: valtype)])] -[visit_exp ([(at : addrtype <: valtype)])] -[visit_exp [(at : addrtype <: valtype)]] -[visit_exp (at : addrtype <: valtype)] -[visit_exp at] -[visit_id at] -[visit_exp (C.`MEMS`_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim))] -[visit_exp C.`MEMS`_context[x!`%`_idx.0]] -[visit_exp C.`MEMS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `%%PAGE`_memtype(at, lim)] -[visit_exp (at, lim)] -[visit_exp at] -[visit_id at] not free -[visit_exp lim] -[visit_id lim] -[check_dims] C at lim x -[visit_exp C] -[visit_id C] -[visit_exp `MEMORY.GROW`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))] -[visit_exp (`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))] -[visit_exp `%`_resulttype([(at : addrtype <: valtype)])] -[visit_exp ([(at : addrtype <: valtype)])] -[visit_exp [(at : addrtype <: valtype)]] -[visit_exp (at : addrtype <: valtype)] -[visit_exp at] -[visit_id at] -[visit_exp []] -[visit_exp `%`_resulttype([(at : addrtype <: valtype)])] -[visit_exp ([(at : addrtype <: valtype)])] -[visit_exp [(at : addrtype <: valtype)]] -[visit_exp (at : addrtype <: valtype)] -[visit_exp at] -[visit_id at] not free -[visit_exp (C.`MEMS`_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim))] -[visit_exp C.`MEMS`_context[x!`%`_idx.0]] -[visit_exp C.`MEMS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `%%PAGE`_memtype(at, lim)] -[visit_exp (at, lim)] -[visit_exp at] -[visit_id at] not free -[visit_exp lim] -[visit_id lim] -[check_dims] C at lim x -[visit_exp C] -[visit_id C] -[visit_exp `MEMORY.FILL`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) `I32`_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))] -[visit_exp (`%`_resulttype([(at : addrtype <: valtype) `I32`_valtype (at : addrtype <: valtype)]), [], `%`_resulttype([]))] -[visit_exp `%`_resulttype([(at : addrtype <: valtype) `I32`_valtype (at : addrtype <: valtype)])] -[visit_exp ([(at : addrtype <: valtype) `I32`_valtype (at : addrtype <: valtype)])] -[visit_exp [(at : addrtype <: valtype) `I32`_valtype (at : addrtype <: valtype)]] -[visit_exp (at : addrtype <: valtype)] -[visit_exp at] -[visit_id at] -[visit_exp `I32`_valtype] -[visit_exp ()] -[visit_exp (at : addrtype <: valtype)] -[visit_exp at] -[visit_id at] not free -[visit_exp []] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp (C.`MEMS`_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim))] -[visit_exp C.`MEMS`_context[x!`%`_idx.0]] -[visit_exp C.`MEMS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `%%PAGE`_memtype(at, lim)] -[visit_exp (at, lim)] -[visit_exp at] -[visit_id at] not free -[visit_exp lim] -[visit_id lim] -[check_dims] C at_1 at_2 lim_1 lim_2 x_1 x_2 -[visit_exp C] -[visit_id C] -[visit_exp `MEMORY.COPY`_instr(x_1, x_2)] -[visit_exp (x_1, x_2)] -[visit_exp x_1] -[visit_id x_1] -[visit_exp x_2] -[visit_id x_2] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))] -[visit_exp (`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))] -[visit_exp `%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)])] -[visit_exp ([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)])] -[visit_exp [(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]] -[visit_exp (at_1 : addrtype <: valtype)] -[visit_exp at_1] -[visit_id at_1] -[visit_exp (at_2 : addrtype <: valtype)] -[visit_exp at_2] -[visit_id at_2] -[visit_exp ($minat(at_1, at_2) : addrtype <: valtype)] -[visit_exp $minat(at_1, at_2)] -[visit_exp at_1] -[visit_id at_1] not free -[visit_exp at_2] -[visit_id at_2] not free -[visit_exp []] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp (C.`MEMS`_context[x_1!`%`_idx.0] = `%%PAGE`_memtype(at_1, lim_1))] -[visit_exp C.`MEMS`_context[x_1!`%`_idx.0]] -[visit_exp C.`MEMS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x_1!`%`_idx.0] -[visit_exp x_1!`%`_idx] -[visit_exp x_1] -[visit_id x_1] not free -[visit_exp `%%PAGE`_memtype(at_1, lim_1)] -[visit_exp (at_1, lim_1)] -[visit_exp at_1] -[visit_id at_1] not free -[visit_exp lim_1] -[visit_id lim_1] -[visit_exp (C.`MEMS`_context[x_2!`%`_idx.0] = `%%PAGE`_memtype(at_2, lim_2))] -[visit_exp C.`MEMS`_context[x_2!`%`_idx.0]] -[visit_exp C.`MEMS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x_2!`%`_idx.0] -[visit_exp x_2!`%`_idx] -[visit_exp x_2] -[visit_id x_2] not free -[visit_exp `%%PAGE`_memtype(at_2, lim_2)] -[visit_exp (at_2, lim_2)] -[visit_exp at_2] -[visit_id at_2] not free -[visit_exp lim_2] -[visit_id lim_2] -[check_dims] C at lim x y -[visit_exp C] -[visit_id C] -[visit_exp `MEMORY.INIT`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] -[visit_exp y] -[visit_id y] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) `I32`_valtype `I32`_valtype]), [], `%`_resulttype([]))] -[visit_exp (`%`_resulttype([(at : addrtype <: valtype) `I32`_valtype `I32`_valtype]), [], `%`_resulttype([]))] -[visit_exp `%`_resulttype([(at : addrtype <: valtype) `I32`_valtype `I32`_valtype])] -[visit_exp ([(at : addrtype <: valtype) `I32`_valtype `I32`_valtype])] -[visit_exp [(at : addrtype <: valtype) `I32`_valtype `I32`_valtype]] -[visit_exp (at : addrtype <: valtype)] -[visit_exp at] -[visit_id at] -[visit_exp `I32`_valtype] -[visit_exp ()] -[visit_exp `I32`_valtype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp (C.`MEMS`_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim))] -[visit_exp C.`MEMS`_context[x!`%`_idx.0]] -[visit_exp C.`MEMS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `%%PAGE`_memtype(at, lim)] -[visit_exp (at, lim)] -[visit_exp at] -[visit_id at] not free -[visit_exp lim] -[visit_id lim] -[visit_exp (C.`DATAS`_context[y!`%`_idx.0] = `OK`_datatype)] -[visit_exp C.`DATAS`_context[y!`%`_idx.0]] -[visit_exp C.`DATAS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp y!`%`_idx.0] -[visit_exp y!`%`_idx] -[visit_exp y] -[visit_id y] not free -[visit_exp `OK`_datatype] -[visit_exp ()] -[check_dims] C x -[visit_exp C] -[visit_id C] -[visit_exp `DATA.DROP`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))] -[visit_exp (`%`_resulttype([]), [], `%`_resulttype([]))] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp []] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp (C.`DATAS`_context[x!`%`_idx.0] = `OK`_datatype)] -[visit_exp C.`DATAS`_context[x!`%`_idx.0]] -[visit_exp C.`DATAS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `OK`_datatype] -[visit_exp ()] -[check_dims] C at lim memarg nt x -[visit_exp C] -[visit_id C] -[visit_exp `LOAD`_instr(nt, ?(), x, memarg)] -[visit_exp (nt, ?(), x, memarg)] -[visit_exp nt] -[visit_id nt] -[visit_exp ?()] -[visit_exp x] -[visit_id x] -[visit_exp memarg] -[visit_id memarg] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))] -[visit_exp (`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))] -[visit_exp `%`_resulttype([(at : addrtype <: valtype)])] -[visit_exp ([(at : addrtype <: valtype)])] -[visit_exp [(at : addrtype <: valtype)]] -[visit_exp (at : addrtype <: valtype)] -[visit_exp at] -[visit_id at] -[visit_exp []] -[visit_exp `%`_resulttype([(nt : numtype <: valtype)])] -[visit_exp ([(nt : numtype <: valtype)])] -[visit_exp [(nt : numtype <: valtype)]] -[visit_exp (nt : numtype <: valtype)] -[visit_exp nt] -[visit_id nt] not free -[visit_exp (C.`MEMS`_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim))] -[visit_exp C.`MEMS`_context[x!`%`_idx.0]] -[visit_exp C.`MEMS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `%%PAGE`_memtype(at, lim)] -[visit_exp (at, lim)] -[visit_exp at] -[visit_id at] not free -[visit_exp lim] -[visit_id lim] -[visit_exp (memarg, at, $size(nt))] -[visit_exp memarg] -[visit_id memarg] not free -[visit_exp at] -[visit_id at] not free -[visit_exp $size(nt)] -[visit_exp nt] -[visit_id nt] not free -[check_dims] C Inn M at lim memarg sx x -[visit_exp C] -[visit_id C] -[visit_exp `LOAD`_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(M), sx)), x, memarg)] -[visit_exp ((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(M), sx)), x, memarg)] -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] -[visit_exp ?(`%_%`_loadop_(`%`_sz(M), sx))] -[visit_exp `%_%`_loadop_(`%`_sz(M), sx)] -[visit_exp (`%`_sz(M), sx)] -[visit_exp `%`_sz(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp sx] -[visit_id sx] -[visit_exp x] -[visit_id x] -[visit_exp memarg] -[visit_id memarg] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : Inn <: valtype)]))] -[visit_exp (`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : Inn <: valtype)]))] -[visit_exp `%`_resulttype([(at : addrtype <: valtype)])] -[visit_exp ([(at : addrtype <: valtype)])] -[visit_exp [(at : addrtype <: valtype)]] -[visit_exp (at : addrtype <: valtype)] -[visit_exp at] -[visit_id at] -[visit_exp []] -[visit_exp `%`_resulttype([(Inn : Inn <: valtype)])] -[visit_exp ([(Inn : Inn <: valtype)])] -[visit_exp [(Inn : Inn <: valtype)]] -[visit_exp (Inn : Inn <: valtype)] -[visit_exp Inn] -[visit_id Inn] not free -[visit_exp (C.`MEMS`_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim))] -[visit_exp C.`MEMS`_context[x!`%`_idx.0]] -[visit_exp C.`MEMS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `%%PAGE`_memtype(at, lim)] -[visit_exp (at, lim)] -[visit_exp at] -[visit_id at] not free -[visit_exp lim] -[visit_id lim] -[visit_exp (memarg, at, M)] -[visit_exp memarg] -[visit_id memarg] not free -[visit_exp at] -[visit_id at] not free -[visit_exp M] -[visit_id M] not free -[check_dims] C at lim memarg nt x -[visit_exp C] -[visit_id C] -[visit_exp `STORE`_instr(nt, ?(), x, memarg)] -[visit_exp (nt, ?(), x, memarg)] -[visit_exp nt] -[visit_id nt] -[visit_exp ?()] -[visit_exp x] -[visit_id x] -[visit_exp memarg] -[visit_id memarg] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))] -[visit_exp (`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))] -[visit_exp `%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)])] -[visit_exp ([(at : addrtype <: valtype) (nt : numtype <: valtype)])] -[visit_exp [(at : addrtype <: valtype) (nt : numtype <: valtype)]] -[visit_exp (at : addrtype <: valtype)] -[visit_exp at] -[visit_id at] -[visit_exp (nt : numtype <: valtype)] -[visit_exp nt] -[visit_id nt] not free -[visit_exp []] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp (C.`MEMS`_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim))] -[visit_exp C.`MEMS`_context[x!`%`_idx.0]] -[visit_exp C.`MEMS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `%%PAGE`_memtype(at, lim)] -[visit_exp (at, lim)] -[visit_exp at] -[visit_id at] not free -[visit_exp lim] -[visit_id lim] -[visit_exp (memarg, at, $size(nt))] -[visit_exp memarg] -[visit_id memarg] not free -[visit_exp at] -[visit_id at] not free -[visit_exp $size(nt)] -[visit_exp nt] -[visit_id nt] not free -[check_dims] C Inn M at lim memarg x -[visit_exp C] -[visit_id C] -[visit_exp `STORE`_instr((Inn : Inn <: numtype), ?(`%`_storeop_(`%`_sz(M))), x, memarg)] -[visit_exp ((Inn : Inn <: numtype), ?(`%`_storeop_(`%`_sz(M))), x, memarg)] -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] -[visit_exp ?(`%`_storeop_(`%`_sz(M)))] -[visit_exp `%`_storeop_(`%`_sz(M))] -[visit_exp (`%`_sz(M))] -[visit_exp `%`_sz(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp x] -[visit_id x] -[visit_exp memarg] -[visit_id memarg] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : Inn <: valtype)]), [], `%`_resulttype([]))] -[visit_exp (`%`_resulttype([(at : addrtype <: valtype) (Inn : Inn <: valtype)]), [], `%`_resulttype([]))] -[visit_exp `%`_resulttype([(at : addrtype <: valtype) (Inn : Inn <: valtype)])] -[visit_exp ([(at : addrtype <: valtype) (Inn : Inn <: valtype)])] -[visit_exp [(at : addrtype <: valtype) (Inn : Inn <: valtype)]] -[visit_exp (at : addrtype <: valtype)] -[visit_exp at] -[visit_id at] -[visit_exp (Inn : Inn <: valtype)] -[visit_exp Inn] -[visit_id Inn] not free -[visit_exp []] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp (C.`MEMS`_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim))] -[visit_exp C.`MEMS`_context[x!`%`_idx.0]] -[visit_exp C.`MEMS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `%%PAGE`_memtype(at, lim)] -[visit_exp (at, lim)] -[visit_exp at] -[visit_id at] not free -[visit_exp lim] -[visit_id lim] -[visit_exp (memarg, at, M)] -[visit_exp memarg] -[visit_id memarg] not free -[visit_exp at] -[visit_id at] not free -[visit_exp M] -[visit_id M] not free -[check_dims] C at lim memarg x -[visit_exp C] -[visit_id C] -[visit_exp `VLOAD`_instr(`V128`_vectype, ?(), x, memarg)] -[visit_exp (`V128`_vectype, ?(), x, memarg)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp ?()] -[visit_exp x] -[visit_id x] -[visit_exp memarg] -[visit_id memarg] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp (`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp `%`_resulttype([(at : addrtype <: valtype)])] -[visit_exp ([(at : addrtype <: valtype)])] -[visit_exp [(at : addrtype <: valtype)]] -[visit_exp (at : addrtype <: valtype)] -[visit_exp at] -[visit_id at] -[visit_exp []] -[visit_exp `%`_resulttype([`V128`_valtype])] -[visit_exp ([`V128`_valtype])] -[visit_exp [`V128`_valtype]] -[visit_exp `V128`_valtype] -[visit_exp ()] -[visit_exp (C.`MEMS`_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim))] -[visit_exp C.`MEMS`_context[x!`%`_idx.0]] -[visit_exp C.`MEMS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `%%PAGE`_memtype(at, lim)] -[visit_exp (at, lim)] -[visit_exp at] -[visit_id at] not free -[visit_exp lim] -[visit_id lim] -[visit_exp (memarg, at, $vsize(`V128`_vectype))] -[visit_exp memarg] -[visit_id memarg] not free -[visit_exp at] -[visit_id at] not free -[visit_exp $vsize(`V128`_vectype)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[check_dims] C M N at lim memarg sx x -[visit_exp C] -[visit_id C] -[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)] -[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx))] -[visit_exp `SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)] -[visit_exp (`%`_sz(M), N, sx)] -[visit_exp `%`_sz(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp N] -[visit_id N] -[visit_exp sx] -[visit_id sx] -[visit_exp x] -[visit_id x] -[visit_exp memarg] -[visit_id memarg] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp (`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp `%`_resulttype([(at : addrtype <: valtype)])] -[visit_exp ([(at : addrtype <: valtype)])] -[visit_exp [(at : addrtype <: valtype)]] -[visit_exp (at : addrtype <: valtype)] -[visit_exp at] -[visit_id at] -[visit_exp []] -[visit_exp `%`_resulttype([`V128`_valtype])] -[visit_exp ([`V128`_valtype])] -[visit_exp [`V128`_valtype]] -[visit_exp `V128`_valtype] -[visit_exp ()] -[visit_exp (C.`MEMS`_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim))] -[visit_exp C.`MEMS`_context[x!`%`_idx.0]] -[visit_exp C.`MEMS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `%%PAGE`_memtype(at, lim)] -[visit_exp (at, lim)] -[visit_exp at] -[visit_id at] not free -[visit_exp lim] -[visit_id lim] -[visit_exp (memarg, at, (M * N))] -[visit_exp memarg] -[visit_id memarg] not free -[visit_exp at] -[visit_id at] not free -[visit_exp (M * N)] -[visit_exp M] -[visit_id M] not free -[visit_exp N] -[visit_id N] not free -[check_dims] C N at lim memarg x -[visit_exp C] -[visit_id C] -[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(N))), x, memarg)] -[visit_exp (`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(N))), x, memarg)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp ?(`SPLAT`_vloadop_(`%`_sz(N)))] -[visit_exp `SPLAT`_vloadop_(`%`_sz(N))] -[visit_exp (`%`_sz(N))] -[visit_exp `%`_sz(N)] -[visit_exp (N)] -[visit_exp N] -[visit_id N] -[visit_exp x] -[visit_id x] -[visit_exp memarg] -[visit_id memarg] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp (`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp `%`_resulttype([(at : addrtype <: valtype)])] -[visit_exp ([(at : addrtype <: valtype)])] -[visit_exp [(at : addrtype <: valtype)]] -[visit_exp (at : addrtype <: valtype)] -[visit_exp at] -[visit_id at] -[visit_exp []] -[visit_exp `%`_resulttype([`V128`_valtype])] -[visit_exp ([`V128`_valtype])] -[visit_exp [`V128`_valtype]] -[visit_exp `V128`_valtype] -[visit_exp ()] -[visit_exp (C.`MEMS`_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim))] -[visit_exp C.`MEMS`_context[x!`%`_idx.0]] -[visit_exp C.`MEMS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `%%PAGE`_memtype(at, lim)] -[visit_exp (at, lim)] -[visit_exp at] -[visit_id at] not free -[visit_exp lim] -[visit_id lim] -[visit_exp (memarg, at, N)] -[visit_exp memarg] -[visit_id memarg] not free -[visit_exp at] -[visit_id at] not free -[visit_exp N] -[visit_id N] not free -[check_dims] C N at lim memarg x -[visit_exp C] -[visit_id C] -[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`ZERO`_vloadop_(`%`_sz(N))), x, memarg)] -[visit_exp (`V128`_vectype, ?(`ZERO`_vloadop_(`%`_sz(N))), x, memarg)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp ?(`ZERO`_vloadop_(`%`_sz(N)))] -[visit_exp `ZERO`_vloadop_(`%`_sz(N))] -[visit_exp (`%`_sz(N))] -[visit_exp `%`_sz(N)] -[visit_exp (N)] -[visit_exp N] -[visit_id N] -[visit_exp x] -[visit_id x] -[visit_exp memarg] -[visit_id memarg] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp (`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp `%`_resulttype([(at : addrtype <: valtype)])] -[visit_exp ([(at : addrtype <: valtype)])] -[visit_exp [(at : addrtype <: valtype)]] -[visit_exp (at : addrtype <: valtype)] -[visit_exp at] -[visit_id at] -[visit_exp []] -[visit_exp `%`_resulttype([`V128`_valtype])] -[visit_exp ([`V128`_valtype])] -[visit_exp [`V128`_valtype]] -[visit_exp `V128`_valtype] -[visit_exp ()] -[visit_exp (C.`MEMS`_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim))] -[visit_exp C.`MEMS`_context[x!`%`_idx.0]] -[visit_exp C.`MEMS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `%%PAGE`_memtype(at, lim)] -[visit_exp (at, lim)] -[visit_exp at] -[visit_id at] not free -[visit_exp lim] -[visit_id lim] -[visit_exp (memarg, at, N)] -[visit_exp memarg] -[visit_id memarg] not free -[visit_exp at] -[visit_id at] not free -[visit_exp N] -[visit_id N] not free -[check_dims] C N at i lim memarg x -[visit_exp C] -[visit_id C] -[visit_exp `VLOAD_LANE`_instr(`V128`_vectype, `%`_sz(N), x, memarg, i)] -[visit_exp (`V128`_vectype, `%`_sz(N), x, memarg, i)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp `%`_sz(N)] -[visit_exp (N)] -[visit_exp N] -[visit_id N] -[visit_exp x] -[visit_id x] -[visit_exp memarg] -[visit_id memarg] -[visit_exp i] -[visit_id i] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) `V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp (`%`_resulttype([(at : addrtype <: valtype) `V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp `%`_resulttype([(at : addrtype <: valtype) `V128`_valtype])] -[visit_exp ([(at : addrtype <: valtype) `V128`_valtype])] -[visit_exp [(at : addrtype <: valtype) `V128`_valtype]] -[visit_exp (at : addrtype <: valtype)] -[visit_exp at] -[visit_id at] -[visit_exp `V128`_valtype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype([`V128`_valtype])] -[visit_exp ([`V128`_valtype])] -[visit_exp [`V128`_valtype]] -[visit_exp `V128`_valtype] -[visit_exp ()] -[visit_exp (C.`MEMS`_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim))] -[visit_exp C.`MEMS`_context[x!`%`_idx.0]] -[visit_exp C.`MEMS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `%%PAGE`_memtype(at, lim)] -[visit_exp (at, lim)] -[visit_exp at] -[visit_id at] not free -[visit_exp lim] -[visit_id lim] -[visit_exp (memarg, at, N)] -[visit_exp memarg] -[visit_id memarg] not free -[visit_exp at] -[visit_id at] not free -[visit_exp N] -[visit_id N] not free -[visit_exp ((i!`%`_laneidx.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat)))] -[visit_exp (i!`%`_laneidx.0 : nat <:> rat)] -[visit_exp i!`%`_laneidx.0] -[visit_exp i!`%`_laneidx] -[visit_exp i] -[visit_id i] not free -[visit_exp ((128 : nat <:> rat) / (N : nat <:> rat))] -[visit_exp (128 : nat <:> rat)] -[visit_exp 128] -[visit_exp (N : nat <:> rat)] -[visit_exp N] -[visit_id N] not free -[check_dims] C at lim memarg x -[visit_exp C] -[visit_id C] -[visit_exp `VSTORE`_instr(`V128`_vectype, x, memarg)] -[visit_exp (`V128`_vectype, x, memarg)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp memarg] -[visit_id memarg] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) `V128`_valtype]), [], `%`_resulttype([]))] -[visit_exp (`%`_resulttype([(at : addrtype <: valtype) `V128`_valtype]), [], `%`_resulttype([]))] -[visit_exp `%`_resulttype([(at : addrtype <: valtype) `V128`_valtype])] -[visit_exp ([(at : addrtype <: valtype) `V128`_valtype])] -[visit_exp [(at : addrtype <: valtype) `V128`_valtype]] -[visit_exp (at : addrtype <: valtype)] -[visit_exp at] -[visit_id at] -[visit_exp `V128`_valtype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp (C.`MEMS`_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim))] -[visit_exp C.`MEMS`_context[x!`%`_idx.0]] -[visit_exp C.`MEMS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `%%PAGE`_memtype(at, lim)] -[visit_exp (at, lim)] -[visit_exp at] -[visit_id at] not free -[visit_exp lim] -[visit_id lim] -[visit_exp (memarg, at, $vsize(`V128`_vectype))] -[visit_exp memarg] -[visit_id memarg] not free -[visit_exp at] -[visit_id at] not free -[visit_exp $vsize(`V128`_vectype)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[check_dims] C N at i lim memarg x -[visit_exp C] -[visit_id C] -[visit_exp `VSTORE_LANE`_instr(`V128`_vectype, `%`_sz(N), x, memarg, i)] -[visit_exp (`V128`_vectype, `%`_sz(N), x, memarg, i)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp `%`_sz(N)] -[visit_exp (N)] -[visit_exp N] -[visit_id N] -[visit_exp x] -[visit_id x] -[visit_exp memarg] -[visit_id memarg] -[visit_exp i] -[visit_id i] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) `V128`_valtype]), [], `%`_resulttype([]))] -[visit_exp (`%`_resulttype([(at : addrtype <: valtype) `V128`_valtype]), [], `%`_resulttype([]))] -[visit_exp `%`_resulttype([(at : addrtype <: valtype) `V128`_valtype])] -[visit_exp ([(at : addrtype <: valtype) `V128`_valtype])] -[visit_exp [(at : addrtype <: valtype) `V128`_valtype]] -[visit_exp (at : addrtype <: valtype)] -[visit_exp at] -[visit_id at] -[visit_exp `V128`_valtype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp (C.`MEMS`_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim))] -[visit_exp C.`MEMS`_context[x!`%`_idx.0]] -[visit_exp C.`MEMS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `%%PAGE`_memtype(at, lim)] -[visit_exp (at, lim)] -[visit_exp at] -[visit_id at] not free -[visit_exp lim] -[visit_id lim] -[visit_exp (memarg, at, N)] -[visit_exp memarg] -[visit_id memarg] not free -[visit_exp at] -[visit_id at] not free -[visit_exp N] -[visit_id N] not free -[visit_exp ((i!`%`_laneidx.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat)))] -[visit_exp (i!`%`_laneidx.0 : nat <:> rat)] -[visit_exp i!`%`_laneidx.0] -[visit_exp i!`%`_laneidx] -[visit_exp i] -[visit_id i] not free -[visit_exp ((128 : nat <:> rat) / (N : nat <:> rat))] -[visit_exp (128 : nat <:> rat)] -[visit_exp 128] -[visit_exp (N : nat <:> rat)] -[visit_exp N] -[visit_id N] not free -[check_dims] C c_nt nt -[visit_exp C] -[visit_id C] -[visit_exp `CONST`_instr(nt, c_nt)] -[visit_exp (nt, c_nt)] -[visit_exp nt] -[visit_id nt] -[visit_exp c_nt] -[visit_id c_nt] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))] -[visit_exp (`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp []] -[visit_exp `%`_resulttype([(nt : numtype <: valtype)])] -[visit_exp ([(nt : numtype <: valtype)])] -[visit_exp [(nt : numtype <: valtype)]] -[visit_exp (nt : numtype <: valtype)] -[visit_exp nt] -[visit_id nt] not free -[check_dims] C nt unop_nt -[visit_exp C] -[visit_id C] -[visit_exp `UNOP`_instr(nt, unop_nt)] -[visit_exp (nt, unop_nt)] -[visit_exp nt] -[visit_id nt] -[visit_exp unop_nt] -[visit_id unop_nt] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))] -[visit_exp (`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))] -[visit_exp `%`_resulttype([(nt : numtype <: valtype)])] -[visit_exp ([(nt : numtype <: valtype)])] -[visit_exp [(nt : numtype <: valtype)]] -[visit_exp (nt : numtype <: valtype)] -[visit_exp nt] -[visit_id nt] not free -[visit_exp []] -[visit_exp `%`_resulttype([(nt : numtype <: valtype)])] -[visit_exp ([(nt : numtype <: valtype)])] -[visit_exp [(nt : numtype <: valtype)]] -[visit_exp (nt : numtype <: valtype)] -[visit_exp nt] -[visit_id nt] not free -[check_dims] C binop_nt nt -[visit_exp C] -[visit_id C] -[visit_exp `BINOP`_instr(nt, binop_nt)] -[visit_exp (nt, binop_nt)] -[visit_exp nt] -[visit_id nt] -[visit_exp binop_nt] -[visit_id binop_nt] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))] -[visit_exp (`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))] -[visit_exp `%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)])] -[visit_exp ([(nt : numtype <: valtype) (nt : numtype <: valtype)])] -[visit_exp [(nt : numtype <: valtype) (nt : numtype <: valtype)]] -[visit_exp (nt : numtype <: valtype)] -[visit_exp nt] -[visit_id nt] not free -[visit_exp (nt : numtype <: valtype)] -[visit_exp nt] -[visit_id nt] not free -[visit_exp []] -[visit_exp `%`_resulttype([(nt : numtype <: valtype)])] -[visit_exp ([(nt : numtype <: valtype)])] -[visit_exp [(nt : numtype <: valtype)]] -[visit_exp (nt : numtype <: valtype)] -[visit_exp nt] -[visit_id nt] not free -[check_dims] C nt testop_nt -[visit_exp C] -[visit_id C] -[visit_exp `TESTOP`_instr(nt, testop_nt)] -[visit_exp (nt, testop_nt)] -[visit_exp nt] -[visit_id nt] -[visit_exp testop_nt] -[visit_id testop_nt] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([`I32`_valtype]))] -[visit_exp (`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([`I32`_valtype]))] -[visit_exp `%`_resulttype([(nt : numtype <: valtype)])] -[visit_exp ([(nt : numtype <: valtype)])] -[visit_exp [(nt : numtype <: valtype)]] -[visit_exp (nt : numtype <: valtype)] -[visit_exp nt] -[visit_id nt] not free -[visit_exp []] -[visit_exp `%`_resulttype([`I32`_valtype])] -[visit_exp ([`I32`_valtype])] -[visit_exp [`I32`_valtype]] -[visit_exp `I32`_valtype] -[visit_exp ()] -[check_dims] C nt relop_nt -[visit_exp C] -[visit_id C] -[visit_exp `RELOP`_instr(nt, relop_nt)] -[visit_exp (nt, relop_nt)] -[visit_exp nt] -[visit_id nt] -[visit_exp relop_nt] -[visit_id relop_nt] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([`I32`_valtype]))] -[visit_exp (`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([`I32`_valtype]))] -[visit_exp `%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)])] -[visit_exp ([(nt : numtype <: valtype) (nt : numtype <: valtype)])] -[visit_exp [(nt : numtype <: valtype) (nt : numtype <: valtype)]] -[visit_exp (nt : numtype <: valtype)] -[visit_exp nt] -[visit_id nt] not free -[visit_exp (nt : numtype <: valtype)] -[visit_exp nt] -[visit_id nt] not free -[visit_exp []] -[visit_exp `%`_resulttype([`I32`_valtype])] -[visit_exp ([`I32`_valtype])] -[visit_exp [`I32`_valtype]] -[visit_exp `I32`_valtype] -[visit_exp ()] -[check_dims] C cvtop nt_1 nt_2 -[visit_exp C] -[visit_id C] -[visit_exp `CVTOP`_instr(nt_1, nt_2, cvtop)] -[visit_exp (nt_1, nt_2, cvtop)] -[visit_exp nt_1] -[visit_id nt_1] -[visit_exp nt_2] -[visit_id nt_2] -[visit_exp cvtop] -[visit_id cvtop] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))] -[visit_exp (`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))] -[visit_exp `%`_resulttype([(nt_2 : numtype <: valtype)])] -[visit_exp ([(nt_2 : numtype <: valtype)])] -[visit_exp [(nt_2 : numtype <: valtype)]] -[visit_exp (nt_2 : numtype <: valtype)] -[visit_exp nt_2] -[visit_id nt_2] not free -[visit_exp []] -[visit_exp `%`_resulttype([(nt_1 : numtype <: valtype)])] -[visit_exp ([(nt_1 : numtype <: valtype)])] -[visit_exp [(nt_1 : numtype <: valtype)]] -[visit_exp (nt_1 : numtype <: valtype)] -[visit_exp nt_1] -[visit_id nt_1] not free -[check_dims] C c -[visit_exp C] -[visit_id C] -[visit_exp `VCONST`_instr(`V128`_vectype, c)] -[visit_exp (`V128`_vectype, c)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c] -[visit_id c] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp (`%`_resulttype([]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp []] -[visit_exp `%`_resulttype([`V128`_valtype])] -[visit_exp ([`V128`_valtype])] -[visit_exp [`V128`_valtype]] -[visit_exp `V128`_valtype] -[visit_exp ()] -[check_dims] C vvunop -[visit_exp C] -[visit_id C] -[visit_exp `VVUNOP`_instr(`V128`_vectype, vvunop)] -[visit_exp (`V128`_vectype, vvunop)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp vvunop] -[visit_id vvunop] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([`V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp (`%`_resulttype([`V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp `%`_resulttype([`V128`_valtype])] -[visit_exp ([`V128`_valtype])] -[visit_exp [`V128`_valtype]] -[visit_exp `V128`_valtype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype([`V128`_valtype])] -[visit_exp ([`V128`_valtype])] -[visit_exp [`V128`_valtype]] -[visit_exp `V128`_valtype] -[visit_exp ()] -[check_dims] C vvbinop -[visit_exp C] -[visit_id C] -[visit_exp `VVBINOP`_instr(`V128`_vectype, vvbinop)] -[visit_exp (`V128`_vectype, vvbinop)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp vvbinop] -[visit_id vvbinop] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([`V128`_valtype `V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp (`%`_resulttype([`V128`_valtype `V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp `%`_resulttype([`V128`_valtype `V128`_valtype])] -[visit_exp ([`V128`_valtype `V128`_valtype])] -[visit_exp [`V128`_valtype `V128`_valtype]] -[visit_exp `V128`_valtype] -[visit_exp ()] -[visit_exp `V128`_valtype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype([`V128`_valtype])] -[visit_exp ([`V128`_valtype])] -[visit_exp [`V128`_valtype]] -[visit_exp `V128`_valtype] -[visit_exp ()] -[check_dims] C vvternop -[visit_exp C] -[visit_id C] -[visit_exp `VVTERNOP`_instr(`V128`_vectype, vvternop)] -[visit_exp (`V128`_vectype, vvternop)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp vvternop] -[visit_id vvternop] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([`V128`_valtype `V128`_valtype `V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp (`%`_resulttype([`V128`_valtype `V128`_valtype `V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp `%`_resulttype([`V128`_valtype `V128`_valtype `V128`_valtype])] -[visit_exp ([`V128`_valtype `V128`_valtype `V128`_valtype])] -[visit_exp [`V128`_valtype `V128`_valtype `V128`_valtype]] -[visit_exp `V128`_valtype] -[visit_exp ()] -[visit_exp `V128`_valtype] -[visit_exp ()] -[visit_exp `V128`_valtype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype([`V128`_valtype])] -[visit_exp ([`V128`_valtype])] -[visit_exp [`V128`_valtype]] -[visit_exp `V128`_valtype] -[visit_exp ()] -[check_dims] C vvtestop -[visit_exp C] -[visit_id C] -[visit_exp `VVTESTOP`_instr(`V128`_vectype, vvtestop)] -[visit_exp (`V128`_vectype, vvtestop)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp vvtestop] -[visit_id vvtestop] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([`V128`_valtype]), [], `%`_resulttype([`I32`_valtype]))] -[visit_exp (`%`_resulttype([`V128`_valtype]), [], `%`_resulttype([`I32`_valtype]))] -[visit_exp `%`_resulttype([`V128`_valtype])] -[visit_exp ([`V128`_valtype])] -[visit_exp [`V128`_valtype]] -[visit_exp `V128`_valtype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype([`I32`_valtype])] -[visit_exp ([`I32`_valtype])] -[visit_exp [`I32`_valtype]] -[visit_exp `I32`_valtype] -[visit_exp ()] -[check_dims] C sh vunop -[visit_exp C] -[visit_id C] -[visit_exp `VUNOP`_instr(sh, vunop)] -[visit_exp (sh, vunop)] -[visit_exp sh] -[visit_id sh] -[visit_exp vunop] -[visit_id vunop] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([`V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp (`%`_resulttype([`V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp `%`_resulttype([`V128`_valtype])] -[visit_exp ([`V128`_valtype])] -[visit_exp [`V128`_valtype]] -[visit_exp `V128`_valtype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype([`V128`_valtype])] -[visit_exp ([`V128`_valtype])] -[visit_exp [`V128`_valtype]] -[visit_exp `V128`_valtype] -[visit_exp ()] -[check_dims] C sh vbinop -[visit_exp C] -[visit_id C] -[visit_exp `VBINOP`_instr(sh, vbinop)] -[visit_exp (sh, vbinop)] -[visit_exp sh] -[visit_id sh] -[visit_exp vbinop] -[visit_id vbinop] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([`V128`_valtype `V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp (`%`_resulttype([`V128`_valtype `V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp `%`_resulttype([`V128`_valtype `V128`_valtype])] -[visit_exp ([`V128`_valtype `V128`_valtype])] -[visit_exp [`V128`_valtype `V128`_valtype]] -[visit_exp `V128`_valtype] -[visit_exp ()] -[visit_exp `V128`_valtype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype([`V128`_valtype])] -[visit_exp ([`V128`_valtype])] -[visit_exp [`V128`_valtype]] -[visit_exp `V128`_valtype] -[visit_exp ()] -[check_dims] C sh vternop -[visit_exp C] -[visit_id C] -[visit_exp `VTERNOP`_instr(sh, vternop)] -[visit_exp (sh, vternop)] -[visit_exp sh] -[visit_id sh] -[visit_exp vternop] -[visit_id vternop] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([`V128`_valtype `V128`_valtype `V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp (`%`_resulttype([`V128`_valtype `V128`_valtype `V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp `%`_resulttype([`V128`_valtype `V128`_valtype `V128`_valtype])] -[visit_exp ([`V128`_valtype `V128`_valtype `V128`_valtype])] -[visit_exp [`V128`_valtype `V128`_valtype `V128`_valtype]] -[visit_exp `V128`_valtype] -[visit_exp ()] -[visit_exp `V128`_valtype] -[visit_exp ()] -[visit_exp `V128`_valtype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype([`V128`_valtype])] -[visit_exp ([`V128`_valtype])] -[visit_exp [`V128`_valtype]] -[visit_exp `V128`_valtype] -[visit_exp ()] -[check_dims] C sh vtestop -[visit_exp C] -[visit_id C] -[visit_exp `VTESTOP`_instr(sh, vtestop)] -[visit_exp (sh, vtestop)] -[visit_exp sh] -[visit_id sh] -[visit_exp vtestop] -[visit_id vtestop] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([`V128`_valtype]), [], `%`_resulttype([`I32`_valtype]))] -[visit_exp (`%`_resulttype([`V128`_valtype]), [], `%`_resulttype([`I32`_valtype]))] -[visit_exp `%`_resulttype([`V128`_valtype])] -[visit_exp ([`V128`_valtype])] -[visit_exp [`V128`_valtype]] -[visit_exp `V128`_valtype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype([`I32`_valtype])] -[visit_exp ([`I32`_valtype])] -[visit_exp [`I32`_valtype]] -[visit_exp `I32`_valtype] -[visit_exp ()] -[check_dims] C sh vrelop -[visit_exp C] -[visit_id C] -[visit_exp `VRELOP`_instr(sh, vrelop)] -[visit_exp (sh, vrelop)] -[visit_exp sh] -[visit_id sh] -[visit_exp vrelop] -[visit_id vrelop] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([`V128`_valtype `V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp (`%`_resulttype([`V128`_valtype `V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp `%`_resulttype([`V128`_valtype `V128`_valtype])] -[visit_exp ([`V128`_valtype `V128`_valtype])] -[visit_exp [`V128`_valtype `V128`_valtype]] -[visit_exp `V128`_valtype] -[visit_exp ()] -[visit_exp `V128`_valtype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype([`V128`_valtype])] -[visit_exp ([`V128`_valtype])] -[visit_exp [`V128`_valtype]] -[visit_exp `V128`_valtype] -[visit_exp ()] -[check_dims] C sh vshiftop -[visit_exp C] -[visit_id C] -[visit_exp `VSHIFTOP`_instr(sh, vshiftop)] -[visit_exp (sh, vshiftop)] -[visit_exp sh] -[visit_id sh] -[visit_exp vshiftop] -[visit_id vshiftop] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([`V128`_valtype `I32`_valtype]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp (`%`_resulttype([`V128`_valtype `I32`_valtype]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp `%`_resulttype([`V128`_valtype `I32`_valtype])] -[visit_exp ([`V128`_valtype `I32`_valtype])] -[visit_exp [`V128`_valtype `I32`_valtype]] -[visit_exp `V128`_valtype] -[visit_exp ()] -[visit_exp `I32`_valtype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype([`V128`_valtype])] -[visit_exp ([`V128`_valtype])] -[visit_exp [`V128`_valtype]] -[visit_exp `V128`_valtype] -[visit_exp ()] -[check_dims] C sh -[visit_exp C] -[visit_id C] -[visit_exp `VBITMASK`_instr(sh)] -[visit_exp (sh)] -[visit_exp sh] -[visit_id sh] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([`V128`_valtype]), [], `%`_resulttype([`I32`_valtype]))] -[visit_exp (`%`_resulttype([`V128`_valtype]), [], `%`_resulttype([`I32`_valtype]))] -[visit_exp `%`_resulttype([`V128`_valtype])] -[visit_exp ([`V128`_valtype])] -[visit_exp [`V128`_valtype]] -[visit_exp `V128`_valtype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype([`I32`_valtype])] -[visit_exp ([`I32`_valtype])] -[visit_exp [`I32`_valtype]] -[visit_exp `I32`_valtype] -[visit_exp ()] -[check_dims] C sh vswizzlop -[visit_exp C] -[visit_id C] -[visit_exp `VSWIZZLOP`_instr(sh, vswizzlop)] -[visit_exp (sh, vswizzlop)] -[visit_exp sh] -[visit_id sh] -[visit_exp vswizzlop] -[visit_id vswizzlop] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([`V128`_valtype `V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp (`%`_resulttype([`V128`_valtype `V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp `%`_resulttype([`V128`_valtype `V128`_valtype])] -[visit_exp ([`V128`_valtype `V128`_valtype])] -[visit_exp [`V128`_valtype `V128`_valtype]] -[visit_exp `V128`_valtype] -[visit_exp ()] -[visit_exp `V128`_valtype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype([`V128`_valtype])] -[visit_exp ([`V128`_valtype])] -[visit_exp [`V128`_valtype]] -[visit_exp `V128`_valtype] -[visit_exp ()] -[check_dims] C i sh -[visit_exp C] -[visit_id C] -[visit_exp `VSHUFFLE`_instr(sh, i*{i <- `i*`})] -[visit_exp (sh, i*{i <- `i*`})] -[visit_exp sh] -[visit_id sh] -[visit_exp i*{i <- `i*`}] -[scope_enter i] -[visit_exp i] -[visit_id i] not free -[visit_id i] not free -[scope_exit i] -[visit_exp `i*`] -[visit_id i*] no dims -[visit_id i*] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([`V128`_valtype `V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp (`%`_resulttype([`V128`_valtype `V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp `%`_resulttype([`V128`_valtype `V128`_valtype])] -[visit_exp ([`V128`_valtype `V128`_valtype])] -[visit_exp [`V128`_valtype `V128`_valtype]] -[visit_exp `V128`_valtype] -[visit_exp ()] -[visit_exp `V128`_valtype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype([`V128`_valtype])] -[visit_exp ([`V128`_valtype])] -[visit_exp [`V128`_valtype]] -[visit_exp `V128`_valtype] -[visit_exp ()] -[scope_enter i] -[visit_exp (i!`%`_laneidx.0 < (2 * $dim(sh!`%`_bshape.0)!`%`_dim.0))] -[visit_exp i!`%`_laneidx.0] -[visit_exp i!`%`_laneidx] -[visit_exp i] -[visit_id i] not free -[visit_exp (2 * $dim(sh!`%`_bshape.0)!`%`_dim.0)] -[visit_exp 2] -[visit_exp $dim(sh!`%`_bshape.0)!`%`_dim.0] -[visit_exp $dim(sh!`%`_bshape.0)!`%`_dim] -[visit_exp $dim(sh!`%`_bshape.0)] -[visit_exp sh!`%`_bshape.0] -[visit_exp sh!`%`_bshape] -[visit_exp sh] -[visit_id sh] not free -[visit_id i] not free -[scope_exit i] -[visit_exp `i*`] -[visit_id i*] not free -[visit_id i*] no dims -[check_dims] C sh -[visit_exp C] -[visit_id C] -[visit_exp `VSPLAT`_instr(sh)] -[visit_exp (sh)] -[visit_exp sh] -[visit_id sh] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp (`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp `%`_resulttype([($unpackshape(sh) : numtype <: valtype)])] -[visit_exp ([($unpackshape(sh) : numtype <: valtype)])] -[visit_exp [($unpackshape(sh) : numtype <: valtype)]] -[visit_exp ($unpackshape(sh) : numtype <: valtype)] -[visit_exp $unpackshape(sh)] -[visit_exp sh] -[visit_id sh] not free -[visit_exp []] -[visit_exp `%`_resulttype([`V128`_valtype])] -[visit_exp ([`V128`_valtype])] -[visit_exp [`V128`_valtype]] -[visit_exp `V128`_valtype] -[visit_exp ()] -[check_dims] C i sh sx -[visit_exp C] -[visit_id C] -[visit_exp `VEXTRACT_LANE`_instr(sh, sx?{sx <- `sx?`}, i)] -[visit_exp (sh, sx?{sx <- `sx?`}, i)] -[visit_exp sh] -[visit_id sh] -[visit_exp sx?{sx <- `sx?`}] -[scope_enter sx] -[visit_exp sx] -[visit_id sx] not free -[visit_id sx] not free -[scope_exit sx] -[visit_exp `sx?`] -[visit_id sx?] no dims -[visit_id sx?] -[visit_exp i] -[visit_id i] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([`V128`_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))] -[visit_exp (`%`_resulttype([`V128`_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))] -[visit_exp `%`_resulttype([`V128`_valtype])] -[visit_exp ([`V128`_valtype])] -[visit_exp [`V128`_valtype]] -[visit_exp `V128`_valtype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype([($unpackshape(sh) : numtype <: valtype)])] -[visit_exp ([($unpackshape(sh) : numtype <: valtype)])] -[visit_exp [($unpackshape(sh) : numtype <: valtype)]] -[visit_exp ($unpackshape(sh) : numtype <: valtype)] -[visit_exp $unpackshape(sh)] -[visit_exp sh] -[visit_id sh] not free -[visit_exp (i!`%`_laneidx.0 < $dim(sh)!`%`_dim.0)] -[visit_exp i!`%`_laneidx.0] -[visit_exp i!`%`_laneidx] -[visit_exp i] -[visit_id i] not free -[visit_exp $dim(sh)!`%`_dim.0] -[visit_exp $dim(sh)!`%`_dim] -[visit_exp $dim(sh)] -[visit_exp sh] -[visit_id sh] not free -[check_dims] C i sh -[visit_exp C] -[visit_id C] -[visit_exp `VREPLACE_LANE`_instr(sh, i)] -[visit_exp (sh, i)] -[visit_exp sh] -[visit_id sh] -[visit_exp i] -[visit_id i] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([`V128`_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp (`%`_resulttype([`V128`_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp `%`_resulttype([`V128`_valtype ($unpackshape(sh) : numtype <: valtype)])] -[visit_exp ([`V128`_valtype ($unpackshape(sh) : numtype <: valtype)])] -[visit_exp [`V128`_valtype ($unpackshape(sh) : numtype <: valtype)]] -[visit_exp `V128`_valtype] -[visit_exp ()] -[visit_exp ($unpackshape(sh) : numtype <: valtype)] -[visit_exp $unpackshape(sh)] -[visit_exp sh] -[visit_id sh] not free -[visit_exp []] -[visit_exp `%`_resulttype([`V128`_valtype])] -[visit_exp ([`V128`_valtype])] -[visit_exp [`V128`_valtype]] -[visit_exp `V128`_valtype] -[visit_exp ()] -[visit_exp (i!`%`_laneidx.0 < $dim(sh)!`%`_dim.0)] -[visit_exp i!`%`_laneidx.0] -[visit_exp i!`%`_laneidx] -[visit_exp i] -[visit_id i] not free -[visit_exp $dim(sh)!`%`_dim.0] -[visit_exp $dim(sh)!`%`_dim] -[visit_exp $dim(sh)] -[visit_exp sh] -[visit_id sh] not free -[check_dims] C sh_1 sh_2 vextunop -[visit_exp C] -[visit_id C] -[visit_exp `VEXTUNOP`_instr(sh_1, sh_2, vextunop)] -[visit_exp (sh_1, sh_2, vextunop)] -[visit_exp sh_1] -[visit_id sh_1] -[visit_exp sh_2] -[visit_id sh_2] -[visit_exp vextunop] -[visit_id vextunop] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([`V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp (`%`_resulttype([`V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp `%`_resulttype([`V128`_valtype])] -[visit_exp ([`V128`_valtype])] -[visit_exp [`V128`_valtype]] -[visit_exp `V128`_valtype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype([`V128`_valtype])] -[visit_exp ([`V128`_valtype])] -[visit_exp [`V128`_valtype]] -[visit_exp `V128`_valtype] -[visit_exp ()] -[check_dims] C sh_1 sh_2 vextbinop -[visit_exp C] -[visit_id C] -[visit_exp `VEXTBINOP`_instr(sh_1, sh_2, vextbinop)] -[visit_exp (sh_1, sh_2, vextbinop)] -[visit_exp sh_1] -[visit_id sh_1] -[visit_exp sh_2] -[visit_id sh_2] -[visit_exp vextbinop] -[visit_id vextbinop] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([`V128`_valtype `V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp (`%`_resulttype([`V128`_valtype `V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp `%`_resulttype([`V128`_valtype `V128`_valtype])] -[visit_exp ([`V128`_valtype `V128`_valtype])] -[visit_exp [`V128`_valtype `V128`_valtype]] -[visit_exp `V128`_valtype] -[visit_exp ()] -[visit_exp `V128`_valtype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype([`V128`_valtype])] -[visit_exp ([`V128`_valtype])] -[visit_exp [`V128`_valtype]] -[visit_exp `V128`_valtype] -[visit_exp ()] -[check_dims] C sh_1 sh_2 vextternop -[visit_exp C] -[visit_id C] -[visit_exp `VEXTTERNOP`_instr(sh_1, sh_2, vextternop)] -[visit_exp (sh_1, sh_2, vextternop)] -[visit_exp sh_1] -[visit_id sh_1] -[visit_exp sh_2] -[visit_id sh_2] -[visit_exp vextternop] -[visit_id vextternop] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([`V128`_valtype `V128`_valtype `V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp (`%`_resulttype([`V128`_valtype `V128`_valtype `V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp `%`_resulttype([`V128`_valtype `V128`_valtype `V128`_valtype])] -[visit_exp ([`V128`_valtype `V128`_valtype `V128`_valtype])] -[visit_exp [`V128`_valtype `V128`_valtype `V128`_valtype]] -[visit_exp `V128`_valtype] -[visit_exp ()] -[visit_exp `V128`_valtype] -[visit_exp ()] -[visit_exp `V128`_valtype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype([`V128`_valtype])] -[visit_exp ([`V128`_valtype])] -[visit_exp [`V128`_valtype]] -[visit_exp `V128`_valtype] -[visit_exp ()] -[check_dims] C sh_1 sh_2 sx -[visit_exp C] -[visit_id C] -[visit_exp `VNARROW`_instr(sh_1, sh_2, sx)] -[visit_exp (sh_1, sh_2, sx)] -[visit_exp sh_1] -[visit_id sh_1] -[visit_exp sh_2] -[visit_id sh_2] -[visit_exp sx] -[visit_id sx] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([`V128`_valtype `V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp (`%`_resulttype([`V128`_valtype `V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp `%`_resulttype([`V128`_valtype `V128`_valtype])] -[visit_exp ([`V128`_valtype `V128`_valtype])] -[visit_exp [`V128`_valtype `V128`_valtype]] -[visit_exp `V128`_valtype] -[visit_exp ()] -[visit_exp `V128`_valtype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype([`V128`_valtype])] -[visit_exp ([`V128`_valtype])] -[visit_exp [`V128`_valtype]] -[visit_exp `V128`_valtype] -[visit_exp ()] -[check_dims] C sh_1 sh_2 vcvtop -[visit_exp C] -[visit_id C] -[visit_exp `VCVTOP`_instr(sh_1, sh_2, vcvtop)] -[visit_exp (sh_1, sh_2, vcvtop)] -[visit_exp sh_1] -[visit_id sh_1] -[visit_exp sh_2] -[visit_id sh_2] -[visit_exp vcvtop] -[visit_id vcvtop] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([`V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp (`%`_resulttype([`V128`_valtype]), [], `%`_resulttype([`V128`_valtype]))] -[visit_exp `%`_resulttype([`V128`_valtype])] -[visit_exp ([`V128`_valtype])] -[visit_exp [`V128`_valtype]] -[visit_exp `V128`_valtype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype([`V128`_valtype])] -[visit_exp ([`V128`_valtype])] -[visit_exp [`V128`_valtype]] -[visit_exp `V128`_valtype] -[visit_exp ()] -[check_dims] C -[visit_exp C] -[visit_id C] -[visit_exp []] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))] -[visit_exp (`%`_resulttype([]), [], `%`_resulttype([]))] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp []] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[check_dims] C init instr_1 instr_2 t t_1 t_2 t_3 x_1 x_2 -[visit_exp C] -[visit_id C] -[visit_exp [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}] -[visit_exp [instr_1]] -[visit_exp instr_1] -[visit_id instr_1] -[visit_exp instr_2*{instr_2 <- `instr_2*`}] -[scope_enter instr_2] -[visit_exp instr_2] -[visit_id instr_2] not free -[visit_id instr_2] not free -[scope_exit instr_2] -[visit_exp `instr_2*`] -[visit_id instr_2*] no dims -[visit_id instr_2*] -[visit_exp `%->_%%`_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*`}))] -[visit_exp (`%`_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*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] no dims -[visit_id t_1*] -[visit_exp x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}] -[visit_exp x_1*{x_1 <- `x_1*`}] -[scope_enter x_1] -[visit_exp x_1] -[visit_id x_1] not free -[visit_id x_1] not free -[scope_exit x_1] -[visit_exp `x_1*`] -[visit_id x_1*] no dims -[visit_id x_1*] -[visit_exp x_2*{x_2 <- `x_2*`}] -[scope_enter x_2] -[visit_exp x_2] -[visit_id x_2] not free -[visit_id x_2] not free -[scope_exit x_2] -[visit_exp `x_2*`] -[visit_id x_2*] no dims -[visit_id x_2*] -[visit_exp `%`_resulttype(t_3*{t_3 <- `t_3*`})] -[visit_exp (t_3*{t_3 <- `t_3*`})] -[visit_exp t_3*{t_3 <- `t_3*`}] -[scope_enter t_3] -[visit_exp t_3] -[visit_id t_3] not free -[visit_id t_3] not free -[scope_exit t_3] -[visit_exp `t_3*`] -[visit_id t_3*] no dims -[visit_id t_3*] -[visit_exp (C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`})))] -[visit_exp C] -[visit_id C] not free -[visit_exp instr_1] -[visit_id instr_1] not free -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] not free -[visit_id t_1*] no dims -[visit_exp x_1*{x_1 <- `x_1*`}] -[scope_enter x_1] -[visit_exp x_1] -[visit_id x_1] not free -[visit_id x_1] not free -[scope_exit x_1] -[visit_exp `x_1*`] -[visit_id x_1*] not free -[visit_id x_1*] no dims -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] no dims -[visit_id t_2*] -[scope_enter init] -[scope_enter t] -[scope_enter x_1] -[visit_exp (C.`LOCALS`_context[x_1!`%`_idx.0] = `%%`_localtype(init, t))] -[visit_exp C.`LOCALS`_context[x_1!`%`_idx.0]] -[visit_exp C.`LOCALS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x_1!`%`_idx.0] -[visit_exp x_1!`%`_idx] -[visit_exp x_1] -[visit_id x_1] not free -[visit_exp `%%`_localtype(init, t)] -[visit_exp (init, t)] -[visit_exp init] -[visit_id init] not free -[visit_exp t] -[visit_id t] not free -[visit_id init] not free -[visit_id t] not free -[visit_id x_1] not free -[scope_exit x_1] -[scope_exit t] -[scope_exit init] -[visit_exp `init*`] -[visit_id init*] no dims -[visit_id init*] -[visit_exp `t*`] -[visit_id t*] no dims -[visit_id t*] -[visit_exp `x_1*`] -[visit_id x_1*] not free -[visit_id x_1*] no dims -[visit_exp ($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*`})))] -[visit_exp $with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(`SET`_init, t)*{t <- `t*`})] -[visit_exp C] -[visit_id C] not free -[visit_exp x_1*{x_1 <- `x_1*`}] -[scope_enter x_1] -[visit_exp x_1] -[visit_id x_1] not free -[visit_id x_1] not free -[scope_exit x_1] -[visit_exp `x_1*`] -[visit_id x_1*] not free -[visit_id x_1*] no dims -[visit_exp `%%`_localtype(`SET`_init, t)*{t <- `t*`}] -[scope_enter t] -[visit_exp `%%`_localtype(`SET`_init, t)] -[visit_exp (`SET`_init, t)] -[visit_exp `SET`_init] -[visit_exp ()] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] not free -[visit_id t*] no dims -[visit_exp instr_2*{instr_2 <- `instr_2*`}] -[scope_enter instr_2] -[visit_exp instr_2] -[visit_id instr_2] not free -[visit_id instr_2] not free -[scope_exit instr_2] -[visit_exp `instr_2*`] -[visit_id instr_2*] not free -[visit_id instr_2*] no dims -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))] -[visit_exp (`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] not free -[visit_id t_2*] no dims -[visit_exp x_2*{x_2 <- `x_2*`}] -[scope_enter x_2] -[visit_exp x_2] -[visit_id x_2] not free -[visit_id x_2] not free -[scope_exit x_2] -[visit_exp `x_2*`] -[visit_id x_2*] not free -[visit_id x_2*] no dims -[visit_exp `%`_resulttype(t_3*{t_3 <- `t_3*`})] -[visit_exp (t_3*{t_3 <- `t_3*`})] -[visit_exp t_3*{t_3 <- `t_3*`}] -[scope_enter t_3] -[visit_exp t_3] -[visit_id t_3] not free -[visit_id t_3] not free -[scope_exit t_3] -[visit_exp `t_3*`] -[visit_id t_3*] not free -[visit_id t_3*] no dims -[check_dims] C instr it it' -[visit_exp C] -[visit_id C] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] no dims -[visit_id instr*] -[visit_exp it'] -[visit_id it'] -[visit_exp (C, instr*{instr <- `instr*`}, it)] -[visit_exp C] -[visit_id C] not free -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] not free -[visit_id instr*] no dims -[visit_exp it] -[visit_id it] -[visit_exp (C, it, it')] -[visit_exp C] -[visit_id C] not free -[visit_exp it] -[visit_id it] not free -[visit_exp it'] -[visit_id it'] not free -[visit_exp (C, it')] -[visit_exp C] -[visit_id C] not free -[visit_exp it'] -[visit_id it'] not free -[check_dims] C instr t t_1 t_2 x -[visit_exp C] -[visit_id C] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] no dims -[visit_id instr*] -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`})] -[visit_exp (t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`})] -[visit_exp t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}] -[visit_exp t*{t <- `t*`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] no dims -[visit_id t*] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] no dims -[visit_id t_1*] -[visit_exp x*{x <- `x*`}] -[scope_enter x] -[visit_exp x] -[visit_id x] not free -[visit_id x] not free -[scope_exit x] -[visit_exp `x*`] -[visit_id x*] no dims -[visit_id x*] -[visit_exp `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`})] -[visit_exp (t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`})] -[visit_exp t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}] -[visit_exp t*{t <- `t*`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] not free -[visit_id t*] no dims -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] no dims -[visit_id t_2*] -[visit_exp (C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`})))] -[visit_exp C] -[visit_id C] not free -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] not free -[visit_id instr*] no dims -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] not free -[visit_id t_1*] no dims -[visit_exp x*{x <- `x*`}] -[scope_enter x] -[visit_exp x] -[visit_id x] not free -[visit_id x] not free -[scope_exit x] -[visit_exp `x*`] -[visit_id x*] not free -[visit_id x*] no dims -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] not free -[visit_id t_2*] no dims -[visit_exp (C, `%`_resulttype(t*{t <- `t*`}))] -[visit_exp C] -[visit_id C] not free -[visit_exp `%`_resulttype(t*{t <- `t*`})] -[visit_exp (t*{t <- `t*`})] -[visit_exp t*{t <- `t*`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] not free -[visit_id t*] no dims -[check_dims] C instr t -[visit_exp C] -[visit_id C] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] no dims -[visit_id instr*] -[visit_exp `%`_resulttype(t*{t <- `t*`})] -[visit_exp (t*{t <- `t*`})] -[visit_exp t*{t <- `t*`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] no dims -[visit_id t*] -[visit_exp (C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`})))] -[visit_exp C] -[visit_id C] not free -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] not free -[visit_id instr*] no dims -[visit_exp `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))] -[visit_exp (`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp []] -[visit_exp `%`_resulttype(t*{t <- `t*`})] -[visit_exp (t*{t <- `t*`})] -[visit_exp t*{t <- `t*`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] not free -[visit_id t*] no dims -[check_dims] -[check_dims] -[check_dims] -[check_dims] C c_nt nt -[visit_exp C] -[visit_id C] -[visit_exp `CONST`_instr(nt, c_nt)] -[visit_exp (nt, c_nt)] -[visit_exp nt] -[visit_id nt] -[visit_exp c_nt] -[visit_id c_nt] -[check_dims] C c_vt vt -[visit_exp C] -[visit_id C] -[visit_exp `VCONST`_instr(vt, c_vt)] -[visit_exp (vt, c_vt)] -[visit_exp vt] -[visit_id vt] -[visit_exp c_vt] -[visit_id c_vt] -[check_dims] C ht -[visit_exp C] -[visit_id C] -[visit_exp `REF.NULL`_instr(ht)] -[visit_exp (ht)] -[visit_exp ht] -[visit_id ht] -[check_dims] C -[visit_exp C] -[visit_id C] -[visit_exp `REF.I31`_instr] -[visit_exp ()] -[check_dims] C x -[visit_exp C] -[visit_id C] -[visit_exp `REF.FUNC`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[check_dims] C x -[visit_exp C] -[visit_id C] -[visit_exp `STRUCT.NEW`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[check_dims] C x -[visit_exp C] -[visit_id C] -[visit_exp `STRUCT.NEW_DEFAULT`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[check_dims] C x -[visit_exp C] -[visit_id C] -[visit_exp `ARRAY.NEW`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[check_dims] C x -[visit_exp C] -[visit_id C] -[visit_exp `ARRAY.NEW_DEFAULT`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[check_dims] C n x -[visit_exp C] -[visit_id C] -[visit_exp `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))] -[visit_exp (x, `%`_u32(n))] -[visit_exp x] -[visit_id x] -[visit_exp `%`_u32(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[check_dims] C -[visit_exp C] -[visit_id C] -[visit_exp `ANY.CONVERT_EXTERN`_instr] -[visit_exp ()] -[check_dims] C -[visit_exp C] -[visit_id C] -[visit_exp `EXTERN.CONVERT_ANY`_instr] -[visit_exp ()] -[check_dims] C t x -[visit_exp C] -[visit_id C] -[visit_exp `GLOBAL.GET`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp (C.`GLOBALS`_context[x!`%`_idx.0] = `%%`_globaltype(?(), t))] -[visit_exp C.`GLOBALS`_context[x!`%`_idx.0]] -[visit_exp C.`GLOBALS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `%%`_globaltype(?(), t)] -[visit_exp (?(), t)] -[visit_exp ?()] -[visit_exp t] -[visit_id t] -[check_dims] C Inn binop -[visit_exp C] -[visit_id C] -[visit_exp `BINOP`_instr((Inn : Inn <: numtype), binop)] -[visit_exp ((Inn : Inn <: numtype), binop)] -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] -[visit_exp binop] -[visit_id binop] -[visit_exp (Inn <- [`I32`_Inn `I64`_Inn])] -[visit_exp Inn] -[visit_id Inn] not free -[visit_exp [`I32`_Inn `I64`_Inn]] -[visit_exp `I32`_Inn] -[visit_exp ()] -[visit_exp `I64`_Inn] -[visit_exp ()] -[visit_exp (binop <- [`ADD`_binop_ `SUB`_binop_ `MUL`_binop_])] -[visit_exp binop] -[visit_id binop] not free -[visit_exp [`ADD`_binop_ `SUB`_binop_ `MUL`_binop_]] -[visit_exp `ADD`_binop_] -[visit_exp ()] -[visit_exp `SUB`_binop_] -[visit_exp ()] -[visit_exp `MUL`_binop_] -[visit_exp ()] -[check_dims] C instr -[visit_exp C] -[visit_id C] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] no dims -[visit_id instr*] -[scope_enter instr] -[visit_exp (C, instr)] -[visit_exp C] -[visit_id C] not free -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] not free -[visit_id instr*] no dims -[check_dims] C expr t -[visit_exp C] -[visit_id C] -[visit_exp expr] -[visit_id expr] -[visit_exp t] -[visit_id t] -[visit_exp (C, expr, `%`_resulttype([t]))] -[visit_exp C] -[visit_id C] not free -[visit_exp expr] -[visit_id expr] not free -[visit_exp `%`_resulttype([t])] -[visit_exp ([t])] -[visit_exp [t]] -[visit_exp t] -[visit_id t] not free -[visit_exp (C, expr)] -[visit_exp C] -[visit_id C] not free -[visit_exp expr] -[visit_id expr] not free -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] C dt rectype x -[visit_exp C] -[visit_id C] -[visit_exp `TYPE`_type(rectype)] -[visit_exp (rectype)] -[visit_exp rectype] -[visit_id rectype] -[visit_exp dt*{dt <- `dt*`}] -[scope_enter dt] -[visit_exp dt] -[visit_id dt] not free -[visit_id dt] not free -[scope_exit dt] -[visit_exp `dt*`] -[visit_id dt*] no dims -[visit_id dt*] -[visit_exp (x!`%`_idx.0 = |C.`TYPES`_context|)] -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] -[visit_exp |C.`TYPES`_context|] -[visit_exp C.`TYPES`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp (dt*{dt <- `dt*`} = $rolldt(x, rectype))] -[visit_exp dt*{dt <- `dt*`}] -[scope_enter dt] -[visit_exp dt] -[visit_id dt] not free -[visit_id dt] not free -[scope_exit dt] -[visit_exp `dt*`] -[visit_id dt*] not free -[visit_id dt*] no dims -[visit_exp $rolldt(x, rectype)] -[visit_exp x] -[visit_id x] not free -[visit_exp rectype] -[visit_id rectype] not free -[visit_exp (C +++ {`TYPES` dt*{dt <- `dt*`}, `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}, rectype, `OK`_oktypeidx(x))] -[visit_exp C +++ {`TYPES` dt*{dt <- `dt*`}, `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}] -[visit_exp C] -[visit_id C] not free -[visit_exp {`TYPES` dt*{dt <- `dt*`}, `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}] -[visit_exp dt*{dt <- `dt*`}] -[scope_enter dt] -[visit_exp dt] -[visit_id dt] not free -[visit_id dt] not free -[scope_exit dt] -[visit_exp `dt*`] -[visit_id dt*] not free -[visit_id dt*] no dims -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp ?()] -[visit_exp []] -[visit_exp rectype] -[visit_id rectype] not free -[visit_exp `OK`_oktypeidx(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] not free -[check_dims] C tagtype -[visit_exp C] -[visit_id C] -[visit_exp `TAG`_tag(tagtype)] -[visit_exp (tagtype)] -[visit_exp tagtype] -[visit_id tagtype] -[visit_exp $clos_tagtype(C, tagtype)] -[visit_exp C] -[visit_id C] not free -[visit_exp tagtype] -[visit_id tagtype] not free -[visit_exp (C, tagtype)] -[visit_exp C] -[visit_id C] not free -[visit_exp tagtype] -[visit_id tagtype] not free -[check_dims] C expr globaltype t -[visit_exp C] -[visit_id C] -[visit_exp `GLOBAL`_global(globaltype, expr)] -[visit_exp (globaltype, expr)] -[visit_exp globaltype] -[visit_id globaltype] -[visit_exp expr] -[visit_id expr] -[visit_exp globaltype] -[visit_id globaltype] not free -[visit_exp (C, globaltype)] -[visit_exp C] -[visit_id C] not free -[visit_exp globaltype] -[visit_id globaltype] not free -[visit_exp (globaltype = `%%`_globaltype(`MUT`_mut?{}, t))] -[visit_exp globaltype] -[visit_id globaltype] not free -[visit_exp `%%`_globaltype(`MUT`_mut?{}, t)] -[visit_exp (`MUT`_mut?{}, t)] -[visit_exp `MUT`_mut?{}] -[visit_exp `MUT`_mut] -[visit_exp ()] -[visit_exp t] -[visit_id t] -[visit_exp (C, expr, t)] -[visit_exp C] -[visit_id C] not free -[visit_exp expr] -[visit_id expr] not free -[visit_exp t] -[visit_id t] not free -[check_dims] C memtype -[visit_exp C] -[visit_id C] -[visit_exp `MEMORY`_mem(memtype)] -[visit_exp (memtype)] -[visit_exp memtype] -[visit_id memtype] -[visit_exp memtype] -[visit_id memtype] not free -[visit_exp (C, memtype)] -[visit_exp C] -[visit_id C] not free -[visit_exp memtype] -[visit_id memtype] not free -[check_dims] C at expr lim rt tabletype -[visit_exp C] -[visit_id C] -[visit_exp `TABLE`_table(tabletype, expr)] -[visit_exp (tabletype, expr)] -[visit_exp tabletype] -[visit_id tabletype] -[visit_exp expr] -[visit_id expr] -[visit_exp tabletype] -[visit_id tabletype] not free -[visit_exp (C, tabletype)] -[visit_exp C] -[visit_id C] not free -[visit_exp tabletype] -[visit_id tabletype] not free -[visit_exp (tabletype = `%%%`_tabletype(at, lim, rt))] -[visit_exp tabletype] -[visit_id tabletype] not free -[visit_exp `%%%`_tabletype(at, lim, rt)] -[visit_exp (at, lim, rt)] -[visit_exp at] -[visit_id at] -[visit_exp lim] -[visit_id lim] -[visit_exp rt] -[visit_id rt] -[visit_exp (C, expr, (rt : reftype <: valtype))] -[visit_exp C] -[visit_id C] not free -[visit_exp expr] -[visit_id expr] not free -[visit_exp (rt : reftype <: valtype)] -[visit_exp rt] -[visit_id rt] not free -[check_dims] C t -[visit_exp C] -[visit_id C] -[visit_exp `LOCAL`_local(t)] -[visit_exp (t)] -[visit_exp t] -[visit_id t] -[visit_exp `%%`_localtype(`SET`_init, t)] -[visit_exp (`SET`_init, t)] -[visit_exp `SET`_init] -[visit_exp ()] -[visit_exp t] -[visit_id t] not free -[visit_exp t] -[visit_id t] not free -[check_dims] C t -[visit_exp C] -[visit_id C] -[visit_exp `LOCAL`_local(t)] -[visit_exp (t)] -[visit_exp t] -[visit_id t] -[visit_exp `%%`_localtype(`UNSET`_init, t)] -[visit_exp (`UNSET`_init, t)] -[visit_exp `UNSET`_init] -[visit_exp ()] -[visit_exp t] -[visit_id t] not free -[visit_exp t] -[visit_id t] not free -[check_dims] C expr lct local t_1 t_2 x -[visit_exp C] -[visit_id C] -[visit_exp `FUNC`_func(x, local*{local <- `local*`}, expr)] -[visit_exp (x, local*{local <- `local*`}, expr)] -[visit_exp x] -[visit_id x] -[visit_exp local*{local <- `local*`}] -[scope_enter local] -[visit_exp local] -[visit_id local] not free -[visit_id local] not free -[scope_exit local] -[visit_exp `local*`] -[visit_id local*] no dims -[visit_id local*] -[visit_exp expr] -[visit_id expr] -[visit_exp C.`TYPES`_context[x!`%`_idx.0]] -[visit_exp C.`TYPES`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp (C.`TYPES`_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))] -[visit_exp C.`TYPES`_context[x!`%`_idx.0]] -[visit_exp C.`TYPES`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] no dims -[visit_id t_1*] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] no dims -[visit_id t_2*] -[scope_enter lct] -[scope_enter local] -[visit_exp (C, local, lct)] -[visit_exp C] -[visit_id C] not free -[visit_exp local] -[visit_id local] not free -[visit_exp lct] -[visit_id lct] not free -[visit_id lct] not free -[visit_id local] not free -[scope_exit local] -[scope_exit lct] -[visit_exp `lct*`] -[visit_id lct*] no dims -[visit_id lct*] -[visit_exp `local*`] -[visit_id local*] not free -[visit_id local*] no dims -[visit_exp (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*`}))] -[visit_exp 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` []}] -[visit_exp C] -[visit_id C] not free -[visit_exp {`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` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp `%%`_localtype(`SET`_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}] -[visit_exp `%%`_localtype(`SET`_init, t_1)*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp `%%`_localtype(`SET`_init, t_1)] -[visit_exp (`SET`_init, t_1)] -[visit_exp `SET`_init] -[visit_exp ()] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] not free -[visit_id t_1*] no dims -[visit_exp lct*{lct <- `lct*`}] -[scope_enter lct] -[visit_exp lct] -[visit_id lct] not free -[visit_id lct] not free -[scope_exit lct] -[visit_exp `lct*`] -[visit_id lct*] not free -[visit_id lct*] no dims -[visit_exp [`%`_resulttype(t_2*{t_2 <- `t_2*`})]] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] not free -[visit_id t_2*] no dims -[visit_exp ?(`%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] not free -[visit_id t_2*] no dims -[visit_exp []] -[visit_exp expr] -[visit_id expr] not free -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] not free -[visit_id t_2*] no dims -[check_dims] C b datamode -[visit_exp C] -[visit_id C] -[visit_exp `DATA`_data(b*{b <- `b*`}, datamode)] -[visit_exp (b*{b <- `b*`}, datamode)] -[visit_exp b*{b <- `b*`}] -[scope_enter b] -[visit_exp b] -[visit_id b] not free -[visit_id b] not free -[scope_exit b] -[visit_exp `b*`] -[visit_id b*] no dims -[visit_id b*] -[visit_exp datamode] -[visit_id datamode] -[visit_exp `OK`_datatype] -[visit_exp ()] -[visit_exp (C, datamode, `OK`_datatype)] -[visit_exp C] -[visit_id C] not free -[visit_exp datamode] -[visit_id datamode] not free -[visit_exp `OK`_datatype] -[visit_exp ()] -[check_dims] C elemmode elemtype expr -[visit_exp C] -[visit_id C] -[visit_exp `ELEM`_elem(elemtype, expr*{expr <- `expr*`}, elemmode)] -[visit_exp (elemtype, expr*{expr <- `expr*`}, elemmode)] -[visit_exp elemtype] -[visit_id elemtype] -[visit_exp expr*{expr <- `expr*`}] -[scope_enter expr] -[visit_exp expr] -[visit_id expr] not free -[visit_id expr] not free -[scope_exit expr] -[visit_exp `expr*`] -[visit_id expr*] no dims -[visit_id expr*] -[visit_exp elemmode] -[visit_id elemmode] -[visit_exp elemtype] -[visit_id elemtype] not free -[visit_exp (C, elemtype)] -[visit_exp C] -[visit_id C] not free -[visit_exp elemtype] -[visit_id elemtype] not free -[scope_enter expr] -[visit_exp (C, expr, (elemtype : reftype <: valtype))] -[visit_exp C] -[visit_id C] not free -[visit_exp expr] -[visit_id expr] not free -[visit_exp (elemtype : reftype <: valtype)] -[visit_exp elemtype] -[visit_id elemtype] not free -[visit_id expr] not free -[scope_exit expr] -[visit_exp `expr*`] -[visit_id expr*] not free -[visit_id expr*] no dims -[visit_exp (C, elemmode, elemtype)] -[visit_exp C] -[visit_id C] not free -[visit_exp elemmode] -[visit_id elemmode] not free -[visit_exp elemtype] -[visit_id elemtype] not free -[check_dims] C -[visit_exp C] -[visit_id C] -[visit_exp `PASSIVE`_datamode] -[visit_exp ()] -[visit_exp `OK`_datatype] -[visit_exp ()] -[check_dims] C at expr lim x -[visit_exp C] -[visit_id C] -[visit_exp `ACTIVE`_datamode(x, expr)] -[visit_exp (x, expr)] -[visit_exp x] -[visit_id x] -[visit_exp expr] -[visit_id expr] -[visit_exp `OK`_datatype] -[visit_exp ()] -[visit_exp (C.`MEMS`_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim))] -[visit_exp C.`MEMS`_context[x!`%`_idx.0]] -[visit_exp C.`MEMS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `%%PAGE`_memtype(at, lim)] -[visit_exp (at, lim)] -[visit_exp at] -[visit_id at] -[visit_exp lim] -[visit_id lim] -[visit_exp (C, expr, (at : addrtype <: valtype))] -[visit_exp C] -[visit_id C] not free -[visit_exp expr] -[visit_id expr] not free -[visit_exp (at : addrtype <: valtype)] -[visit_exp at] -[visit_id at] not free -[check_dims] C rt -[visit_exp C] -[visit_id C] -[visit_exp `PASSIVE`_elemmode] -[visit_exp ()] -[visit_exp rt] -[visit_id rt] -[check_dims] C rt -[visit_exp C] -[visit_id C] -[visit_exp `DECLARE`_elemmode] -[visit_exp ()] -[visit_exp rt] -[visit_id rt] -[check_dims] C at expr lim rt rt' x -[visit_exp C] -[visit_id C] -[visit_exp `ACTIVE`_elemmode(x, expr)] -[visit_exp (x, expr)] -[visit_exp x] -[visit_id x] -[visit_exp expr] -[visit_id expr] -[visit_exp rt] -[visit_id rt] -[visit_exp (C.`TABLES`_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt'))] -[visit_exp C.`TABLES`_context[x!`%`_idx.0]] -[visit_exp C.`TABLES`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `%%%`_tabletype(at, lim, rt')] -[visit_exp (at, lim, rt')] -[visit_exp at] -[visit_id at] -[visit_exp lim] -[visit_id lim] -[visit_exp rt'] -[visit_id rt'] -[visit_exp (C, rt, rt')] -[visit_exp C] -[visit_id C] not free -[visit_exp rt] -[visit_id rt] not free -[visit_exp rt'] -[visit_id rt'] not free -[visit_exp (C, expr, (at : addrtype <: valtype))] -[visit_exp C] -[visit_id C] not free -[visit_exp expr] -[visit_id expr] not free -[visit_exp (at : addrtype <: valtype)] -[visit_exp at] -[visit_id at] not free -[check_dims] C x -[visit_exp C] -[visit_id C] -[visit_exp `START`_start(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp (C.`FUNCS`_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([])))] -[visit_exp C.`FUNCS`_context[x!`%`_idx.0]] -[visit_exp C.`FUNCS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))] -[visit_exp (`%`_resulttype([]), `%`_resulttype([]))] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[check_dims] -[check_dims] -[check_dims] -[check_dims] C name_1 name_2 xt -[visit_exp C] -[visit_id C] -[visit_exp `IMPORT`_import(name_1, name_2, xt)] -[visit_exp (name_1, name_2, xt)] -[visit_exp name_1] -[visit_id name_1] -[visit_exp name_2] -[visit_id name_2] -[visit_exp xt] -[visit_id xt] -[visit_exp $clos_externtype(C, xt)] -[visit_exp C] -[visit_id C] not free -[visit_exp xt] -[visit_id xt] not free -[visit_exp (C, xt)] -[visit_exp C] -[visit_id C] not free -[visit_exp xt] -[visit_id xt] not free -[check_dims] C externidx name xt -[visit_exp C] -[visit_id C] -[visit_exp `EXPORT`_export(name, externidx)] -[visit_exp (name, externidx)] -[visit_exp name] -[visit_id name] -[visit_exp externidx] -[visit_id externidx] -[visit_exp name] -[visit_id name] not free -[visit_exp xt] -[visit_id xt] -[visit_exp (C, externidx, xt)] -[visit_exp C] -[visit_id C] not free -[visit_exp externidx] -[visit_id externidx] not free -[visit_exp xt] -[visit_id xt] not free -[check_dims] C jt x -[visit_exp C] -[visit_id C] -[visit_exp `TAG`_externidx(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `TAG`_externtype(jt)] -[visit_exp (jt)] -[visit_exp jt] -[visit_id jt] -[visit_exp (C.`TAGS`_context[x!`%`_idx.0] = jt)] -[visit_exp C.`TAGS`_context[x!`%`_idx.0]] -[visit_exp C.`TAGS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp jt] -[visit_id jt] not free -[check_dims] C gt x -[visit_exp C] -[visit_id C] -[visit_exp `GLOBAL`_externidx(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `GLOBAL`_externtype(gt)] -[visit_exp (gt)] -[visit_exp gt] -[visit_id gt] -[visit_exp (C.`GLOBALS`_context[x!`%`_idx.0] = gt)] -[visit_exp C.`GLOBALS`_context[x!`%`_idx.0]] -[visit_exp C.`GLOBALS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp gt] -[visit_id gt] not free -[check_dims] C mt x -[visit_exp C] -[visit_id C] -[visit_exp `MEM`_externidx(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `MEM`_externtype(mt)] -[visit_exp (mt)] -[visit_exp mt] -[visit_id mt] -[visit_exp (C.`MEMS`_context[x!`%`_idx.0] = mt)] -[visit_exp C.`MEMS`_context[x!`%`_idx.0]] -[visit_exp C.`MEMS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp mt] -[visit_id mt] not free -[check_dims] C tt x -[visit_exp C] -[visit_id C] -[visit_exp `TABLE`_externidx(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `TABLE`_externtype(tt)] -[visit_exp (tt)] -[visit_exp tt] -[visit_id tt] -[visit_exp (C.`TABLES`_context[x!`%`_idx.0] = tt)] -[visit_exp C.`TABLES`_context[x!`%`_idx.0]] -[visit_exp C.`TABLES`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp tt] -[visit_id tt] not free -[check_dims] C dt x -[visit_exp C] -[visit_id C] -[visit_exp `FUNC`_externidx(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `FUNC`_externtype((dt : deftype <: typeuse))] -[visit_exp ((dt : deftype <: typeuse))] -[visit_exp (dt : deftype <: typeuse)] -[visit_exp dt] -[visit_id dt] -[visit_exp (C.`FUNCS`_context[x!`%`_idx.0] = dt)] -[visit_exp C.`FUNCS`_context[x!`%`_idx.0]] -[visit_exp C.`FUNCS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp dt] -[visit_id dt] not free -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[scope_enter global*] -[visit_id global*] not free -[visit_id global*] no dims -[scope_enter mem*] -[visit_id mem*] not free -[visit_id mem*] no dims -[scope_enter table*] -[visit_id table*] not free -[visit_id table*] no dims -[scope_enter elem*] -[visit_id elem*] not free -[visit_id elem*] no dims -[scope_exit elem*] -[scope_exit table*] -[scope_exit mem*] -[scope_exit global*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] nonfuncs -DecD funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* -[visit_id nonfuncs] not free -[check_dims] elem global mem table -[visit_exp `%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})] -[visit_exp (global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})] -[visit_exp global*{global <- `global*`}] -[scope_enter global] -[visit_exp global] -[visit_id global] not free -[visit_id global] not free -[scope_exit global] -[visit_exp `global*`] -[visit_id global*] no dims -[visit_id global*] -[visit_exp mem*{mem <- `mem*`}] -[scope_enter mem] -[visit_exp mem] -[visit_id mem] not free -[visit_id mem] not free -[scope_exit mem] -[visit_exp `mem*`] -[visit_id mem*] no dims -[visit_id mem*] -[visit_exp table*{table <- `table*`}] -[scope_enter table] -[visit_exp table] -[visit_id table] not free -[visit_id table] not free -[scope_exit table] -[visit_exp `table*`] -[visit_id table*] no dims -[visit_id table*] -[visit_exp elem*{elem <- `elem*`}] -[scope_enter elem] -[visit_exp elem] -[visit_id elem] not free -[visit_id elem] not free -[scope_exit elem] -[visit_exp `elem*`] -[visit_id elem*] no dims -[visit_id elem*] -[visit_exp $funcidx_module(`MODULE`_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), []))] -[visit_exp `MODULE`_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])] -[visit_exp ([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp global*{global <- `global*`}] -[scope_enter global] -[visit_exp global] -[visit_id global] not free -[visit_id global] not free -[scope_exit global] -[visit_exp `global*`] -[visit_id global*] not free -[visit_id global*] no dims -[visit_exp mem*{mem <- `mem*`}] -[scope_enter mem] -[visit_exp mem] -[visit_id mem] not free -[visit_id mem] not free -[scope_exit mem] -[visit_exp `mem*`] -[visit_id mem*] not free -[visit_id mem*] no dims -[visit_exp table*{table <- `table*`}] -[scope_enter table] -[visit_exp table] -[visit_id table] not free -[visit_id table] not free -[scope_exit table] -[visit_exp `table*`] -[visit_id table*] not free -[visit_id table*] no dims -[visit_exp []] -[visit_exp []] -[visit_exp elem*{elem <- `elem*`}] -[scope_enter elem] -[visit_exp elem] -[visit_id elem] not free -[visit_id elem] not free -[scope_exit elem] -[visit_exp `elem*`] -[visit_id elem*] not free -[visit_id elem*] no dims -[visit_exp ?()] -[visit_exp []] -=> - ;; ../../../../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*`}, ?(), [])) -[check_dims] C C' data dt dt' dt_I elem export func global gt gt_I import jt jt_I mem mt mt_I nm ok rt start table tag tt tt_I type x xt_E xt_I -[visit_exp `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*`})] -[visit_exp (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*`})] -[visit_exp type*{type <- `type*`}] -[scope_enter type] -[visit_exp type] -[visit_id type] not free -[visit_id type] not free -[scope_exit type] -[visit_exp `type*`] -[visit_id type*] no dims -[visit_id type*] -[visit_exp import*{import <- `import*`}] -[scope_enter import] -[visit_exp import] -[visit_id import] not free -[visit_id import] not free -[scope_exit import] -[visit_exp `import*`] -[visit_id import*] no dims -[visit_id import*] -[visit_exp tag*{tag <- `tag*`}] -[scope_enter tag] -[visit_exp tag] -[visit_id tag] not free -[visit_id tag] not free -[scope_exit tag] -[visit_exp `tag*`] -[visit_id tag*] no dims -[visit_id tag*] -[visit_exp global*{global <- `global*`}] -[scope_enter global] -[visit_exp global] -[visit_id global] not free -[visit_id global] not free -[scope_exit global] -[visit_exp `global*`] -[visit_id global*] no dims -[visit_id global*] -[visit_exp mem*{mem <- `mem*`}] -[scope_enter mem] -[visit_exp mem] -[visit_id mem] not free -[visit_id mem] not free -[scope_exit mem] -[visit_exp `mem*`] -[visit_id mem*] no dims -[visit_id mem*] -[visit_exp table*{table <- `table*`}] -[scope_enter table] -[visit_exp table] -[visit_id table] not free -[visit_id table] not free -[scope_exit table] -[visit_exp `table*`] -[visit_id table*] no dims -[visit_id table*] -[visit_exp func*{func <- `func*`}] -[scope_enter func] -[visit_exp func] -[visit_id func] not free -[visit_id func] not free -[scope_exit func] -[visit_exp `func*`] -[visit_id func*] no dims -[visit_id func*] -[visit_exp data*{data <- `data*`}] -[scope_enter data] -[visit_exp data] -[visit_id data] not free -[visit_id data] not free -[scope_exit data] -[visit_exp `data*`] -[visit_id data*] no dims -[visit_id data*] -[visit_exp elem*{elem <- `elem*`}] -[scope_enter elem] -[visit_exp elem] -[visit_id elem] not free -[visit_id elem] not free -[scope_exit elem] -[visit_exp `elem*`] -[visit_id elem*] no dims -[visit_id elem*] -[visit_exp start?{start <- `start?`}] -[scope_enter start] -[visit_exp start] -[visit_id start] not free -[visit_id start] not free -[scope_exit start] -[visit_exp `start?`] -[visit_id start?] no dims -[visit_id start?] -[visit_exp export*{export <- `export*`}] -[scope_enter export] -[visit_exp export] -[visit_id export] not free -[visit_id export] not free -[scope_exit export] -[visit_exp `export*`] -[visit_id export*] no dims -[visit_id export*] -[visit_exp $clos_moduletype(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))] -[visit_exp C] -[visit_id C] -[visit_exp `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})] -[visit_exp (xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})] -[visit_exp xt_I*{xt_I <- `xt_I*`}] -[scope_enter xt_I] -[visit_exp xt_I] -[visit_id xt_I] not free -[visit_id xt_I] not free -[scope_exit xt_I] -[visit_exp `xt_I*`] -[visit_id xt_I*] no dims -[visit_id xt_I*] -[visit_exp xt_E*{xt_E <- `xt_E*`}] -[scope_enter xt_E] -[visit_exp xt_E] -[visit_id xt_E] not free -[visit_id xt_E] not free -[scope_exit xt_E] -[visit_exp `xt_E*`] -[visit_id xt_E*] no dims -[visit_id xt_E*] -[visit_exp ({`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`})] -[visit_exp {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp ?()] -[visit_exp []] -[visit_exp type*{type <- `type*`}] -[scope_enter type] -[visit_exp type] -[visit_id type] not free -[visit_id type] not free -[scope_exit type] -[visit_exp `type*`] -[visit_id type*] not free -[visit_id type*] no dims -[visit_exp dt'*{dt' <- `dt'*`}] -[scope_enter dt'] -[visit_exp dt'] -[visit_id dt'] not free -[visit_id dt'] not free -[scope_exit dt'] -[visit_exp `dt'*`] -[visit_id dt'*] no dims -[visit_id dt'*] -[scope_enter import] -[scope_enter xt_I] -[visit_exp ({`TYPES` dt'*{dt' <- `dt'*`}, `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}, import, xt_I)] -[visit_exp {`TYPES` dt'*{dt' <- `dt'*`}, `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}] -[visit_exp dt'*{dt' <- `dt'*`}] -[scope_enter dt'] -[visit_exp dt'] -[visit_id dt'] not free -[visit_id dt'] not free -[scope_exit dt'] -[visit_exp `dt'*`] -[visit_id dt'*] not free -[visit_id dt'*] no dims -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp ?()] -[visit_exp []] -[visit_exp import] -[visit_id import] not free -[visit_exp xt_I] -[visit_id xt_I] not free -[visit_id import] not free -[visit_id xt_I] not free -[scope_exit xt_I] -[scope_exit import] -[visit_exp `import*`] -[visit_id import*] not free -[visit_id import*] no dims -[visit_exp `xt_I*`] -[visit_id xt_I*] not free -[visit_id xt_I*] no dims -[scope_enter jt] -[scope_enter tag] -[visit_exp (C', tag, jt)] -[visit_exp C'] -[visit_id C'] -[visit_exp tag] -[visit_id tag] not free -[visit_exp jt] -[visit_id jt] not free -[visit_id jt] not free -[visit_id tag] not free -[scope_exit tag] -[scope_exit jt] -[visit_exp `jt*`] -[visit_id jt*] no dims -[visit_id jt*] -[visit_exp `tag*`] -[visit_id tag*] not free -[visit_id tag*] no dims -[visit_exp (C', global*{global <- `global*`}, gt*{gt <- `gt*`})] -[visit_exp C'] -[visit_id C'] not free -[visit_exp global*{global <- `global*`}] -[scope_enter global] -[visit_exp global] -[visit_id global] not free -[visit_id global] not free -[scope_exit global] -[visit_exp `global*`] -[visit_id global*] not free -[visit_id global*] no dims -[visit_exp gt*{gt <- `gt*`}] -[scope_enter gt] -[visit_exp gt] -[visit_id gt] not free -[visit_id gt] not free -[scope_exit gt] -[visit_exp `gt*`] -[visit_id gt*] no dims -[visit_id gt*] -[scope_enter mem] -[scope_enter mt] -[visit_exp (C', mem, mt)] -[visit_exp C'] -[visit_id C'] not free -[visit_exp mem] -[visit_id mem] not free -[visit_exp mt] -[visit_id mt] not free -[visit_id mem] not free -[visit_id mt] not free -[scope_exit mt] -[scope_exit mem] -[visit_exp `mem*`] -[visit_id mem*] not free -[visit_id mem*] no dims -[visit_exp `mt*`] -[visit_id mt*] no dims -[visit_id mt*] -[scope_enter table] -[scope_enter tt] -[visit_exp (C', table, tt)] -[visit_exp C'] -[visit_id C'] not free -[visit_exp table] -[visit_id table] not free -[visit_exp tt] -[visit_id tt] not free -[visit_id table] not free -[visit_id tt] not free -[scope_exit tt] -[scope_exit table] -[visit_exp `table*`] -[visit_id table*] not free -[visit_id table*] no dims -[visit_exp `tt*`] -[visit_id tt*] no dims -[visit_id tt*] -[scope_enter dt] -[scope_enter func] -[visit_exp (C, func, dt)] -[visit_exp C] -[visit_id C] not free -[visit_exp func] -[visit_id func] not free -[visit_exp dt] -[visit_id dt] not free -[visit_id dt] not free -[visit_id func] not free -[scope_exit func] -[scope_exit dt] -[visit_exp `dt*`] -[visit_id dt*] no dims -[visit_id dt*] -[visit_exp `func*`] -[visit_id func*] not free -[visit_id func*] no dims -[scope_enter data] -[scope_enter ok] -[visit_exp (C, data, ok)] -[visit_exp C] -[visit_id C] not free -[visit_exp data] -[visit_id data] not free -[visit_exp ok] -[visit_id ok] not free -[visit_id data] not free -[visit_id ok] not free -[scope_exit ok] -[scope_exit data] -[visit_exp `data*`] -[visit_id data*] not free -[visit_id data*] no dims -[visit_exp `ok*`] -[visit_id ok*] no dims -[visit_id ok*] -[scope_enter elem] -[scope_enter rt] -[visit_exp (C, elem, rt)] -[visit_exp C] -[visit_id C] not free -[visit_exp elem] -[visit_id elem] not free -[visit_exp rt] -[visit_id rt] not free -[visit_id elem] not free -[visit_id rt] not free -[scope_exit rt] -[scope_exit elem] -[visit_exp `elem*`] -[visit_id elem*] not free -[visit_id elem*] no dims -[visit_exp `rt*`] -[visit_id rt*] no dims -[visit_id rt*] -[scope_enter start] -[visit_exp (C, start)] -[visit_exp C] -[visit_id C] not free -[visit_exp start] -[visit_id start] not free -[visit_id start] not free -[scope_exit start] -[visit_exp `start?`] -[visit_id start?] not free -[visit_id start?] no dims -[scope_enter export] -[scope_enter nm] -[scope_enter xt_E] -[visit_exp (C, export, nm, xt_E)] -[visit_exp C] -[visit_id C] not free -[visit_exp export] -[visit_id export] not free -[visit_exp nm] -[visit_id nm] not free -[visit_exp xt_E] -[visit_id xt_E] not free -[visit_id export] not free -[visit_id nm] not free -[visit_id xt_E] not free -[scope_exit xt_E] -[scope_exit nm] -[scope_exit export] -[visit_exp `export*`] -[visit_id export*] not free -[visit_id export*] no dims -[visit_exp `nm*`] -[visit_id nm*] no dims -[visit_id nm*] -[visit_exp `xt_E*`] -[visit_id xt_E*] not free -[visit_id xt_E*] no dims -[visit_exp $disjoint_(syntax name, nm*{nm <- `nm*`})] -[visit_exp nm*{nm <- `nm*`}] -[scope_enter nm] -[visit_exp nm] -[visit_id nm] not free -[visit_id nm] not free -[scope_exit nm] -[visit_exp `nm*`] -[visit_id nm*] not free -[visit_id nm*] no dims -[visit_exp (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` []})] -[visit_exp C] -[visit_id C] not free -[visit_exp 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` []}] -[visit_exp C'] -[visit_id C'] not free -[visit_exp {`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` []}] -[visit_exp []] -[visit_exp []] -[visit_exp jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}] -[visit_exp jt_I*{jt_I <- `jt_I*`}] -[scope_enter jt_I] -[visit_exp jt_I] -[visit_id jt_I] not free -[visit_id jt_I] not free -[scope_exit jt_I] -[visit_exp `jt_I*`] -[visit_id jt_I*] no dims -[visit_id jt_I*] -[visit_exp jt*{jt <- `jt*`}] -[scope_enter jt] -[visit_exp jt] -[visit_id jt] not free -[visit_id jt] not free -[scope_exit jt] -[visit_exp `jt*`] -[visit_id jt*] not free -[visit_id jt*] no dims -[visit_exp gt*{gt <- `gt*`}] -[scope_enter gt] -[visit_exp gt] -[visit_id gt] not free -[visit_id gt] not free -[scope_exit gt] -[visit_exp `gt*`] -[visit_id gt*] not free -[visit_id gt*] no dims -[visit_exp mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}] -[visit_exp mt_I*{mt_I <- `mt_I*`}] -[scope_enter mt_I] -[visit_exp mt_I] -[visit_id mt_I] not free -[visit_id mt_I] not free -[scope_exit mt_I] -[visit_exp `mt_I*`] -[visit_id mt_I*] no dims -[visit_id mt_I*] -[visit_exp mt*{mt <- `mt*`}] -[scope_enter mt] -[visit_exp mt] -[visit_id mt] not free -[visit_id mt] not free -[scope_exit mt] -[visit_exp `mt*`] -[visit_id mt*] not free -[visit_id mt*] no dims -[visit_exp tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}] -[visit_exp tt_I*{tt_I <- `tt_I*`}] -[scope_enter tt_I] -[visit_exp tt_I] -[visit_id tt_I] not free -[visit_id tt_I] not free -[scope_exit tt_I] -[visit_exp `tt_I*`] -[visit_id tt_I*] no dims -[visit_id tt_I*] -[visit_exp tt*{tt <- `tt*`}] -[scope_enter tt] -[visit_exp tt] -[visit_id tt] not free -[visit_id tt] not free -[scope_exit tt] -[visit_exp `tt*`] -[visit_id tt*] not free -[visit_id tt*] no dims -[visit_exp []] -[visit_exp ok*{ok <- `ok*`}] -[scope_enter ok] -[visit_exp ok] -[visit_id ok] not free -[visit_id ok] not free -[scope_exit ok] -[visit_exp `ok*`] -[visit_id ok*] not free -[visit_id ok*] no dims -[visit_exp rt*{rt <- `rt*`}] -[scope_enter rt] -[visit_exp rt] -[visit_id rt] not free -[visit_id rt] not free -[scope_exit rt] -[visit_exp `rt*`] -[visit_id rt*] not free -[visit_id rt*] no dims -[visit_exp []] -[visit_exp []] -[visit_exp ?()] -[visit_exp []] -[visit_exp (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*`}})] -[visit_exp C'] -[visit_id C'] not free -[visit_exp {`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*`}}] -[visit_exp dt'*{dt' <- `dt'*`}] -[scope_enter dt'] -[visit_exp dt'] -[visit_id dt'] not free -[visit_id dt'] not free -[scope_exit dt'] -[visit_exp `dt'*`] -[visit_id dt'*] not free -[visit_id dt'*] no dims -[visit_exp []] -[visit_exp []] -[visit_exp gt_I*{gt_I <- `gt_I*`}] -[scope_enter gt_I] -[visit_exp gt_I] -[visit_id gt_I] not free -[visit_id gt_I] not free -[scope_exit gt_I] -[visit_exp `gt_I*`] -[visit_id gt_I*] no dims -[visit_id gt_I*] -[visit_exp []] -[visit_exp []] -[visit_exp dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}] -[visit_exp dt_I*{dt_I <- `dt_I*`}] -[scope_enter dt_I] -[visit_exp dt_I] -[visit_id dt_I] not free -[visit_id dt_I] not free -[scope_exit dt_I] -[visit_exp `dt_I*`] -[visit_id dt_I*] no dims -[visit_id dt_I*] -[visit_exp dt*{dt <- `dt*`}] -[scope_enter dt] -[visit_exp dt] -[visit_id dt] not free -[visit_id dt] not free -[scope_exit dt] -[visit_exp `dt*`] -[visit_id dt*] not free -[visit_id dt*] no dims -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp ?()] -[visit_exp x*{x <- `x*`}] -[scope_enter x] -[visit_exp x] -[visit_id x] not free -[visit_id x] not free -[scope_exit x] -[visit_exp `x*`] -[visit_id x*] no dims -[visit_id x*] -[visit_exp (x*{x <- `x*`} = $funcidx_nonfuncs(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})))] -[visit_exp x*{x <- `x*`}] -[scope_enter x] -[visit_exp x] -[visit_id x] not free -[visit_id x] not free -[scope_exit x] -[visit_exp `x*`] -[visit_id x*] not free -[visit_id x*] no dims -[visit_exp $funcidx_nonfuncs(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}))] -[visit_exp `%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})] -[visit_exp (global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})] -[visit_exp global*{global <- `global*`}] -[scope_enter global] -[visit_exp global] -[visit_id global] not free -[visit_id global] not free -[scope_exit global] -[visit_exp `global*`] -[visit_id global*] not free -[visit_id global*] no dims -[visit_exp mem*{mem <- `mem*`}] -[scope_enter mem] -[visit_exp mem] -[visit_id mem] not free -[visit_id mem] not free -[scope_exit mem] -[visit_exp `mem*`] -[visit_id mem*] not free -[visit_id mem*] no dims -[visit_exp table*{table <- `table*`}] -[scope_enter table] -[visit_exp table] -[visit_id table] not free -[visit_id table] not free -[scope_exit table] -[visit_exp `table*`] -[visit_id table*] not free -[visit_id table*] no dims -[visit_exp elem*{elem <- `elem*`}] -[scope_enter elem] -[visit_exp elem] -[visit_id elem] not free -[visit_id elem] not free -[scope_exit elem] -[visit_exp `elem*`] -[visit_id elem*] not free -[visit_id elem*] no dims -[visit_exp (jt_I*{jt_I <- `jt_I*`} = $tagsxt(xt_I*{xt_I <- `xt_I*`}))] -[visit_exp jt_I*{jt_I <- `jt_I*`}] -[scope_enter jt_I] -[visit_exp jt_I] -[visit_id jt_I] not free -[visit_id jt_I] not free -[scope_exit jt_I] -[visit_exp `jt_I*`] -[visit_id jt_I*] not free -[visit_id jt_I*] no dims -[visit_exp $tagsxt(xt_I*{xt_I <- `xt_I*`})] -[visit_exp xt_I*{xt_I <- `xt_I*`}] -[scope_enter xt_I] -[visit_exp xt_I] -[visit_id xt_I] not free -[visit_id xt_I] not free -[scope_exit xt_I] -[visit_exp `xt_I*`] -[visit_id xt_I*] not free -[visit_id xt_I*] no dims -[visit_exp (gt_I*{gt_I <- `gt_I*`} = $globalsxt(xt_I*{xt_I <- `xt_I*`}))] -[visit_exp gt_I*{gt_I <- `gt_I*`}] -[scope_enter gt_I] -[visit_exp gt_I] -[visit_id gt_I] not free -[visit_id gt_I] not free -[scope_exit gt_I] -[visit_exp `gt_I*`] -[visit_id gt_I*] not free -[visit_id gt_I*] no dims -[visit_exp $globalsxt(xt_I*{xt_I <- `xt_I*`})] -[visit_exp xt_I*{xt_I <- `xt_I*`}] -[scope_enter xt_I] -[visit_exp xt_I] -[visit_id xt_I] not free -[visit_id xt_I] not free -[scope_exit xt_I] -[visit_exp `xt_I*`] -[visit_id xt_I*] not free -[visit_id xt_I*] no dims -[visit_exp (mt_I*{mt_I <- `mt_I*`} = $memsxt(xt_I*{xt_I <- `xt_I*`}))] -[visit_exp mt_I*{mt_I <- `mt_I*`}] -[scope_enter mt_I] -[visit_exp mt_I] -[visit_id mt_I] not free -[visit_id mt_I] not free -[scope_exit mt_I] -[visit_exp `mt_I*`] -[visit_id mt_I*] not free -[visit_id mt_I*] no dims -[visit_exp $memsxt(xt_I*{xt_I <- `xt_I*`})] -[visit_exp xt_I*{xt_I <- `xt_I*`}] -[scope_enter xt_I] -[visit_exp xt_I] -[visit_id xt_I] not free -[visit_id xt_I] not free -[scope_exit xt_I] -[visit_exp `xt_I*`] -[visit_id xt_I*] not free -[visit_id xt_I*] no dims -[visit_exp (tt_I*{tt_I <- `tt_I*`} = $tablesxt(xt_I*{xt_I <- `xt_I*`}))] -[visit_exp tt_I*{tt_I <- `tt_I*`}] -[scope_enter tt_I] -[visit_exp tt_I] -[visit_id tt_I] not free -[visit_id tt_I] not free -[scope_exit tt_I] -[visit_exp `tt_I*`] -[visit_id tt_I*] not free -[visit_id tt_I*] no dims -[visit_exp $tablesxt(xt_I*{xt_I <- `xt_I*`})] -[visit_exp xt_I*{xt_I <- `xt_I*`}] -[scope_enter xt_I] -[visit_exp xt_I] -[visit_id xt_I] not free -[visit_id xt_I] not free -[scope_exit xt_I] -[visit_exp `xt_I*`] -[visit_id xt_I*] not free -[visit_id xt_I*] no dims -[visit_exp (dt_I*{dt_I <- `dt_I*`} = $funcsxt(xt_I*{xt_I <- `xt_I*`}))] -[visit_exp dt_I*{dt_I <- `dt_I*`}] -[scope_enter dt_I] -[visit_exp dt_I] -[visit_id dt_I] not free -[visit_id dt_I] not free -[scope_exit dt_I] -[visit_exp `dt_I*`] -[visit_id dt_I*] not free -[visit_id dt_I*] no dims -[visit_exp $funcsxt(xt_I*{xt_I <- `xt_I*`})] -[visit_exp xt_I*{xt_I <- `xt_I*`}] -[scope_enter xt_I] -[visit_exp xt_I] -[visit_id xt_I] not free -[visit_id xt_I] not free -[scope_exit xt_I] -[visit_exp `xt_I*`] -[visit_id xt_I*] not free -[visit_id xt_I*] no dims -[check_dims] C -[visit_exp C] -[visit_id C] -[visit_exp []] -[visit_exp []] -[check_dims] C dt dt_1 type type_1 -[visit_exp C] -[visit_id C] -[visit_exp [type_1] ++ type*{type <- `type*`}] -[visit_exp [type_1]] -[visit_exp type_1] -[visit_id type_1] -[visit_exp type*{type <- `type*`}] -[scope_enter type] -[visit_exp type] -[visit_id type] not free -[visit_id type] not free -[scope_exit type] -[visit_exp `type*`] -[visit_id type*] no dims -[visit_id type*] -[visit_exp dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}] -[visit_exp dt_1*{dt_1 <- `dt_1*`}] -[scope_enter dt_1] -[visit_exp dt_1] -[visit_id dt_1] not free -[visit_id dt_1] not free -[scope_exit dt_1] -[visit_exp `dt_1*`] -[visit_id dt_1*] no dims -[visit_id dt_1*] -[visit_exp dt*{dt <- `dt*`}] -[scope_enter dt] -[visit_exp dt] -[visit_id dt] not free -[visit_id dt] not free -[scope_exit dt] -[visit_exp `dt*`] -[visit_id dt*] no dims -[visit_id dt*] -[visit_exp (C, type_1, dt_1*{dt_1 <- `dt_1*`})] -[visit_exp C] -[visit_id C] not free -[visit_exp type_1] -[visit_id type_1] not free -[visit_exp dt_1*{dt_1 <- `dt_1*`}] -[scope_enter dt_1] -[visit_exp dt_1] -[visit_id dt_1] not free -[visit_id dt_1] not free -[scope_exit dt_1] -[visit_exp `dt_1*`] -[visit_id dt_1*] not free -[visit_id dt_1*] no dims -[visit_exp (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*`})] -[visit_exp C +++ {`TYPES` dt_1*{dt_1 <- `dt_1*`}, `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}] -[visit_exp C] -[visit_id C] not free -[visit_exp {`TYPES` dt_1*{dt_1 <- `dt_1*`}, `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}] -[visit_exp dt_1*{dt_1 <- `dt_1*`}] -[scope_enter dt_1] -[visit_exp dt_1] -[visit_id dt_1] not free -[visit_id dt_1] not free -[scope_exit dt_1] -[visit_exp `dt_1*`] -[visit_id dt_1*] not free -[visit_id dt_1*] no dims -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp ?()] -[visit_exp []] -[visit_exp type*{type <- `type*`}] -[scope_enter type] -[visit_exp type] -[visit_id type] not free -[visit_id type] not free -[scope_exit type] -[visit_exp `type*`] -[visit_id type*] not free -[visit_id type*] no dims -[visit_exp dt*{dt <- `dt*`}] -[scope_enter dt] -[visit_exp dt] -[visit_id dt] not free -[visit_id dt] not free -[scope_exit dt] -[visit_exp `dt*`] -[visit_id dt*] not free -[visit_id dt*] no dims -[check_dims] C -[visit_exp C] -[visit_id C] -[visit_exp []] -[visit_exp []] -[check_dims] C global global_1 gt gt_1 -[visit_exp C] -[visit_id C] -[visit_exp [global_1] ++ global*{global <- `global*`}] -[visit_exp [global_1]] -[visit_exp global_1] -[visit_id global_1] -[visit_exp global*{global <- `global*`}] -[scope_enter global] -[visit_exp global] -[visit_id global] not free -[visit_id global] not free -[scope_exit global] -[visit_exp `global*`] -[visit_id global*] no dims -[visit_id global*] -[visit_exp [gt_1] ++ gt*{gt <- `gt*`}] -[visit_exp [gt_1]] -[visit_exp gt_1] -[visit_id gt_1] -[visit_exp gt*{gt <- `gt*`}] -[scope_enter gt] -[visit_exp gt] -[visit_id gt] not free -[visit_id gt] not free -[scope_exit gt] -[visit_exp `gt*`] -[visit_id gt*] no dims -[visit_id gt*] -[visit_exp (C, global_1, gt_1)] -[visit_exp C] -[visit_id C] not free -[visit_exp global_1] -[visit_id global_1] not free -[visit_exp gt_1] -[visit_id gt_1] not free -[visit_exp (C +++ {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [gt_1], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}, global*{global <- `global*`}, gt*{gt <- `gt*`})] -[visit_exp C +++ {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [gt_1], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}] -[visit_exp C] -[visit_id C] not free -[visit_exp {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [gt_1], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp [gt_1]] -[visit_exp gt_1] -[visit_id gt_1] not free -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp ?()] -[visit_exp []] -[visit_exp global*{global <- `global*`}] -[scope_enter global] -[visit_exp global] -[visit_id global] not free -[visit_id global] not free -[scope_exit global] -[visit_exp `global*`] -[visit_id global*] not free -[visit_id global*] no dims -[visit_exp gt*{gt <- `gt*`}] -[scope_enter gt] -[visit_exp gt] -[visit_id gt] not free -[visit_id gt] not free -[scope_exit gt] -[visit_exp `gt*`] -[visit_id gt*] not free -[visit_id gt*] no dims -[check_dims] -[check_dims] -[visit_exp 0] -[check_dims] -[visit_exp 1] -[check_dims] -[check_dims] -[visit_exp 0] -[check_dims] -[visit_exp 1] -[check_dims] -[visit_exp 2] -[check_dims] -[visit_exp 3] -[check_dims] X relaxed2 -DecD relaxed2(relaxed2 : relaxed2, syntax X, X : X, X : X) : X -[visit_id relaxed2] not free -[visit_id X] not free -[visit_id X] not free -[check_dims] X relaxed4 -DecD relaxed4(relaxed4 : relaxed4, syntax X, X : X, X : X, X : X, X : X) : X -[visit_id relaxed4] not free -[visit_id X] not free -[visit_id X] not free -[visit_id X] not free -[visit_id X] not free -[check_dims] X_1 X_2 i -[visit_exp i] -[visit_id i] -[visit_exp X_1] -[visit_id X_1] -[visit_exp X_2] -[visit_id X_2] -[visit_exp [X_1 X_2][i!`%`_relaxed2.0]] -[visit_exp [X_1 X_2]] -[visit_exp X_1] -[visit_id X_1] not free -[visit_exp X_2] -[visit_id X_2] not free -[visit_exp i!`%`_relaxed2.0] -[visit_exp i!`%`_relaxed2] -[visit_exp i] -[visit_id i] not free -[visit_exp $ND] -=> - ;; ../../../../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) = [X_1 X_2][i!`%`_relaxed2.0] - -- if $ND -[check_dims] X_1 X_2 i -[visit_exp i] -[visit_id i] -[visit_exp X_1] -[visit_id X_1] -[visit_exp X_2] -[visit_id X_2] -[visit_exp [X_1 X_2][0]] -[visit_exp [X_1 X_2]] -[visit_exp X_1] -[visit_id X_1] not free -[visit_exp X_2] -[visit_id X_2] not free -[visit_exp 0] -=> - ;; ../../../../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) = [X_1 X_2][0] - -- otherwise -[check_dims] X_1 X_2 X_3 X_4 i -[visit_exp i] -[visit_id i] -[visit_exp X_1] -[visit_id X_1] -[visit_exp X_2] -[visit_id X_2] -[visit_exp X_3] -[visit_id X_3] -[visit_exp X_4] -[visit_id X_4] -[visit_exp [X_1 X_2 X_3 X_4][i!`%`_relaxed4.0]] -[visit_exp [X_1 X_2 X_3 X_4]] -[visit_exp X_1] -[visit_id X_1] not free -[visit_exp X_2] -[visit_id X_2] not free -[visit_exp X_3] -[visit_id X_3] not free -[visit_exp X_4] -[visit_id X_4] not free -[visit_exp i!`%`_relaxed4.0] -[visit_exp i!`%`_relaxed4] -[visit_exp i] -[visit_id i] not free -[visit_exp $ND] -=> - ;; ../../../../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) = [X_1 X_2 X_3 X_4][i!`%`_relaxed4.0] - -- if $ND -[check_dims] X_1 X_2 X_3 X_4 i -[visit_exp i] -[visit_id i] -[visit_exp X_1] -[visit_id X_1] -[visit_exp X_2] -[visit_id X_2] -[visit_exp X_3] -[visit_id X_3] -[visit_exp X_4] -[visit_id X_4] -[visit_exp [X_1 X_2 X_3 X_4][0]] -[visit_exp [X_1 X_2 X_3 X_4]] -[visit_exp X_1] -[visit_id X_1] not free -[visit_exp X_2] -[visit_id X_2] not free -[visit_exp X_3] -[visit_id X_3] not free -[visit_exp X_4] -[visit_id X_4] not free -[visit_exp 0] -=> - ;; ../../../../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) = [X_1 X_2 X_3 X_4][0] - -- otherwise -[check_dims] -DecD R_fmadd : relaxed2 -[check_dims] -DecD R_fmin : relaxed4 -[check_dims] -DecD R_fmax : relaxed4 -[check_dims] -DecD R_idot : relaxed2 -[check_dims] -DecD R_iq15mulr : relaxed2 -[check_dims] -DecD R_trunc_u : relaxed4 -[check_dims] -DecD R_trunc_s : relaxed2 -[check_dims] -DecD R_swizzle : relaxed2 -[check_dims] -DecD R_laneselect : relaxed2 -[check_dims] s33 -DecD s33_to_u32(s33 : s33) : u32 -[visit_id s33] not free -[check_dims] N iN -DecD ibits_(N : N, iN : iN(N)) : bit* -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N fN -DecD fbits_(N : N, fN : fN(N)) : bit* -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N iN -DecD ibytes_(N : N, iN : iN(N)) : byte* -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N fN -DecD fbytes_(N : N, fN : fN(N)) : byte* -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[check_dims] num_ numtype -DecD nbytes_(numtype : numtype, num_ : num_(numtype)) : byte* -[visit_id numtype] not free -[visit_id num_] not free -[visit_exp numtype] -[visit_id numtype] not free -[check_dims] vec_ vectype -DecD vbytes_(vectype : vectype, vec_ : vec_(vectype)) : byte* -[visit_id vectype] not free -[visit_id vec_] not free -[visit_exp vectype] -[visit_id vectype] not free -[check_dims] lit_ storagetype -DecD zbytes_(storagetype : storagetype, lit_ : lit_(storagetype)) : byte* -[visit_id storagetype] not free -[visit_id lit_] not free -[visit_exp storagetype] -[visit_id storagetype] not free -[check_dims] Cnn lit_ -DecD cbytes_(Cnn : Cnn, lit_ : lit_((Cnn : Cnn <: storagetype))) : byte* -[visit_id Cnn] not free -[visit_id lit_] not free -[visit_exp (Cnn : Cnn <: storagetype)] -[visit_exp Cnn] -[visit_id Cnn] not free -[check_dims] N _ -DecD inv_ibits_(N : N, bit*) : iN(N) -[visit_id N] not free -[visit_id _] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N _ -DecD inv_fbits_(N : N, bit*) : fN(N) -[visit_id N] not free -[visit_id _] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N _ -DecD inv_ibytes_(N : N, byte*) : iN(N) -[visit_id N] not free -[visit_id _] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N _ -DecD inv_fbytes_(N : N, byte*) : fN(N) -[visit_id N] not free -[visit_id _] not free -[visit_exp N] -[visit_id N] not free -[check_dims] _ numtype -DecD inv_nbytes_(numtype : numtype, byte*) : num_(numtype) -[visit_id numtype] not free -[visit_id _] not free -[visit_exp numtype] -[visit_id numtype] not free -[check_dims] _ vectype -DecD inv_vbytes_(vectype : vectype, byte*) : vec_(vectype) -[visit_id vectype] not free -[visit_id _] not free -[visit_exp vectype] -[visit_id vectype] not free -[check_dims] _ storagetype -DecD inv_zbytes_(storagetype : storagetype, byte*) : lit_(storagetype) -[visit_id storagetype] not free -[visit_id _] not free -[visit_exp storagetype] -[visit_id storagetype] not free -[check_dims] Cnn _ -DecD inv_cbytes_(Cnn : Cnn, byte*) : lit_((Cnn : Cnn <: storagetype)) -[visit_id Cnn] not free -[visit_id _] not free -[visit_exp (Cnn : Cnn <: storagetype)] -[visit_exp Cnn] -[visit_id Cnn] not free -[check_dims] N nat -DecD signed_(N : N, nat : nat) : int -[visit_id N] not free -[visit_id nat] not free -[check_dims] N i -[visit_exp N] -[visit_id N] -[visit_exp i] -[visit_id i] -[visit_exp (i : nat <:> int)] -[visit_exp i] -[visit_id i] not free -[visit_exp (i < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp i] -[visit_id i] not free -[visit_exp (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp 2] -[visit_exp (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp ((N : nat <:> int) - (1 : nat <:> int))] -[visit_exp (N : nat <:> int)] -[visit_exp N] -[visit_id N] not free -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -=> - ;; ../../../../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))) -[check_dims] N i -[visit_exp N] -[visit_id N] -[visit_exp i] -[visit_id i] -[visit_exp ((i : nat <:> int) - ((2 ^ N) : nat <:> int))] -[visit_exp (i : nat <:> int)] -[visit_exp i] -[visit_id i] not free -[visit_exp ((2 ^ N) : nat <:> int)] -[visit_exp (2 ^ N)] -[visit_exp 2] -[visit_exp N] -[visit_id N] not free -[visit_exp (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) <= i) /\ (i < (2 ^ N)))] -[visit_exp ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) <= i)] -[visit_exp (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp 2] -[visit_exp (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp ((N : nat <:> int) - (1 : nat <:> int))] -[visit_exp (N : nat <:> int)] -[visit_exp N] -[visit_id N] not free -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp i] -[visit_id i] not free -[visit_exp (i < (2 ^ N))] -[visit_exp i] -[visit_id i] not free -[visit_exp (2 ^ N)] -[visit_exp 2] -[visit_exp N] -[visit_id N] not free -=> - ;; ../../../../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))) -[check_dims] N int -DecD inv_signed_(N : N, int : int) : nat -[visit_id N] not free -[visit_id int] not free -[check_dims] N i -[visit_exp N] -[visit_id N] -[visit_exp i] -[visit_id i] -[visit_exp (i : int <:> nat)] -[visit_exp i] -[visit_id i] not free -[visit_exp (((0 : nat <:> int) <= i) /\ (i < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)))] -[visit_exp ((0 : nat <:> int) <= i)] -[visit_exp (0 : nat <:> int)] -[visit_exp 0] -[visit_exp i] -[visit_id i] not free -[visit_exp (i < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))] -[visit_exp i] -[visit_id i] not free -[visit_exp ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)] -[visit_exp (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp 2] -[visit_exp (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp ((N : nat <:> int) - (1 : nat <:> int))] -[visit_exp (N : nat <:> int)] -[visit_exp N] -[visit_id N] not free -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -=> - ;; ../../../../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))) -[check_dims] N i -[visit_exp N] -[visit_id N] -[visit_exp i] -[visit_id i] -[visit_exp ((i + ((2 ^ N) : nat <:> int)) : int <:> nat)] -[visit_exp (i + ((2 ^ N) : nat <:> int))] -[visit_exp i] -[visit_id i] not free -[visit_exp ((2 ^ N) : nat <:> int)] -[visit_exp (2 ^ N)] -[visit_exp 2] -[visit_exp N] -[visit_id N] not free -[visit_exp ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= i) /\ (i < (0 : nat <:> int)))] -[visit_exp (- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= i)] -[visit_exp - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)] -[visit_exp ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)] -[visit_exp (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp 2] -[visit_exp (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp ((N : nat <:> int) - (1 : nat <:> int))] -[visit_exp (N : nat <:> int)] -[visit_exp N] -[visit_id N] not free -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp i] -[visit_id i] not free -[visit_exp (i < (0 : nat <:> int))] -[visit_exp i] -[visit_id i] not free -[visit_exp (0 : nat <:> int)] -[visit_exp 0] -=> - ;; ../../../../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))) -[check_dims] storagetype -DecD sx(storagetype : storagetype) : sx? -[visit_id storagetype] not free -[check_dims] consttype -[visit_exp (consttype : consttype <: storagetype)] -[visit_exp consttype] -[visit_id consttype] -[visit_exp ?()] -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sx{consttype : consttype}((consttype : consttype <: storagetype)) = ?() -[check_dims] packtype -[visit_exp (packtype : packtype <: storagetype)] -[visit_exp packtype] -[visit_id packtype] -[visit_exp ?(`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sx{packtype : packtype}((packtype : packtype <: storagetype)) = ?(`S`_sx) -[check_dims] lanetype -DecD zero(lanetype : lanetype) : lane_(lanetype) -[visit_id lanetype] not free -[visit_exp lanetype] -[visit_id lanetype] not free -[check_dims] Jnn -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp `%`_lane_(0)] -[visit_exp (0)] -[visit_exp 0] -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $zero{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = `%`_lane_(0) -[check_dims] Fnn -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp $fzero($size((Fnn : Fnn <: numtype)))] -[visit_exp $size((Fnn : Fnn <: numtype))] -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] not free -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $zero{Fnn : Fnn}((Fnn : Fnn <: lanetype)) = $fzero($size((Fnn : Fnn <: numtype))) -[check_dims] bool -DecD bool(bool : bool) : nat -[visit_id bool] not free -[check_dims] -[visit_exp false] -[visit_exp 0] -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $bool(false) = 0 -[check_dims] -[visit_exp true] -[visit_exp 1] -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $bool(true) = 1 -[check_dims] rat -DecD truncz(rat : rat) : int -[visit_id rat] not free -[check_dims] rat -DecD ceilz(rat : rat) : int -[visit_id rat] not free -[check_dims] N int -DecD sat_u_(N : N, int : int) : nat -[visit_id N] not free -[visit_id int] not free -[check_dims] N i -[visit_exp N] -[visit_id N] -[visit_exp i] -[visit_id i] -[visit_exp 0] -[visit_exp (i < (0 : nat <:> int))] -[visit_exp i] -[visit_id i] not free -[visit_exp (0 : nat <:> int)] -[visit_exp 0] -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sat_u_{N : N, i : int}(N, i) = 0 - -- if (i < (0 : nat <:> int)) -[check_dims] N i -[visit_exp N] -[visit_id N] -[visit_exp i] -[visit_id i] -[visit_exp ((((2 ^ N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp (((2 ^ N) : nat <:> int) - (1 : nat <:> int))] -[visit_exp ((2 ^ N) : nat <:> int)] -[visit_exp (2 ^ N)] -[visit_exp 2] -[visit_exp N] -[visit_id N] not free -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp (i > (((2 ^ N) : nat <:> int) - (1 : nat <:> int)))] -[visit_exp i] -[visit_id i] not free -[visit_exp (((2 ^ N) : nat <:> int) - (1 : nat <:> int))] -[visit_exp ((2 ^ N) : nat <:> int)] -[visit_exp (2 ^ N)] -[visit_exp 2] -[visit_exp N] -[visit_id N] not free -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sat_u_{N : N, i : int}(N, i) = ((((2 ^ N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat) - -- if (i > (((2 ^ N) : nat <:> int) - (1 : nat <:> int))) -[check_dims] N i -[visit_exp N] -[visit_id N] -[visit_exp i] -[visit_id i] -[visit_exp (i : int <:> nat)] -[visit_exp i] -[visit_id i] not free -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sat_u_{N : N, i : int}(N, i) = (i : int <:> nat) - -- otherwise -[check_dims] N int -DecD sat_s_(N : N, int : int) : int -[visit_id N] not free -[visit_id int] not free -[check_dims] N i -[visit_exp N] -[visit_id N] -[visit_exp i] -[visit_id i] -[visit_exp - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)] -[visit_exp ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)] -[visit_exp (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp 2] -[visit_exp (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp ((N : nat <:> int) - (1 : nat <:> int))] -[visit_exp (N : nat <:> int)] -[visit_exp N] -[visit_id N] not free -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp (i < - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))] -[visit_exp i] -[visit_id i] not free -[visit_exp - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)] -[visit_exp ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)] -[visit_exp (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp 2] -[visit_exp (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp ((N : nat <:> int) - (1 : nat <:> int))] -[visit_exp (N : nat <:> int)] -[visit_exp N] -[visit_id N] not free -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sat_s_{N : N, i : int}(N, i) = - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - -- if (i < - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) -[check_dims] N i -[visit_exp N] -[visit_id N] -[visit_exp i] -[visit_id i] -[visit_exp (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))] -[visit_exp ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)] -[visit_exp (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp 2] -[visit_exp (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp ((N : nat <:> int) - (1 : nat <:> int))] -[visit_exp (N : nat <:> int)] -[visit_exp N] -[visit_id N] not free -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp (i > (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int)))] -[visit_exp i] -[visit_id i] not free -[visit_exp (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))] -[visit_exp ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)] -[visit_exp (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp 2] -[visit_exp (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp ((N : nat <:> int) - (1 : nat <:> int))] -[visit_exp (N : nat <:> int)] -[visit_exp N] -[visit_id N] not free -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sat_s_{N : N, i : int}(N, i) = (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int)) - -- if (i > (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))) -[check_dims] N i -[visit_exp N] -[visit_id N] -[visit_exp i] -[visit_id i] -[visit_exp i] -[visit_id i] not free -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $sat_s_{N : N, i : int}(N, i) = i - -- otherwise -[check_dims] N iN -DecD ineg_(N : N, iN : iN(N)) : iN(N) -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N iN -DecD iabs_(N : N, iN : iN(N)) : iN(N) -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N iN -DecD iclz_(N : N, iN : iN(N)) : iN(N) -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N iN -DecD ictz_(N : N, iN : iN(N)) : iN(N) -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N iN -DecD ipopcnt_(N : N, iN : iN(N)) : iN(N) -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] M N iN sx -DecD iextend_(N : N, M : M, sx : sx, iN : iN(N)) : iN(N) -[visit_id N] not free -[visit_id M] not free -[visit_id sx] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N iN -DecD iadd_(N : N, iN : iN(N), iN : iN(N)) : iN(N) -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N iN -DecD isub_(N : N, iN : iN(N), iN : iN(N)) : iN(N) -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N iN -DecD imul_(N : N, iN : iN(N), iN : iN(N)) : iN(N) -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N iN sx -DecD idiv_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)? -[visit_id N] not free -[visit_id sx] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N iN sx -DecD irem_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)? -[visit_id N] not free -[visit_id sx] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N iN sx -DecD imin_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) -[visit_id N] not free -[visit_id sx] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N iN sx -DecD imax_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) -[visit_id N] not free -[visit_id sx] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N iN sx -DecD iadd_sat_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) -[visit_id N] not free -[visit_id sx] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N iN sx -DecD isub_sat_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) -[visit_id N] not free -[visit_id sx] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N iN sx -DecD iq15mulr_sat_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) -[visit_id N] not free -[visit_id sx] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N iN sx -DecD irelaxed_q15mulr_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)* -[visit_id N] not free -[visit_id sx] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N iN sx -DecD iavgr_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) -[visit_id N] not free -[visit_id sx] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N iN -DecD inot_(N : N, iN : iN(N)) : iN(N) -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N iN -DecD irev_(N : N, iN : iN(N)) : iN(N) -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N iN -DecD iand_(N : N, iN : iN(N), iN : iN(N)) : iN(N) -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N iN -DecD iandnot_(N : N, iN : iN(N), iN : iN(N)) : iN(N) -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N iN -DecD ior_(N : N, iN : iN(N), iN : iN(N)) : iN(N) -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N iN -DecD ixor_(N : N, iN : iN(N), iN : iN(N)) : iN(N) -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N iN u32 -DecD ishl_(N : N, iN : iN(N), u32 : u32) : iN(N) -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_id u32] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N iN sx u32 -DecD ishr_(N : N, sx : sx, iN : iN(N), u32 : u32) : iN(N) -[visit_id N] not free -[visit_id sx] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_id u32] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N iN -DecD irotl_(N : N, iN : iN(N), iN : iN(N)) : iN(N) -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N iN -DecD irotr_(N : N, iN : iN(N), iN : iN(N)) : iN(N) -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N iN -DecD ibitselect_(N : N, iN : iN(N), iN : iN(N), iN : iN(N)) : iN(N) -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N iN -DecD irelaxed_laneselect_(N : N, iN : iN(N), iN : iN(N), iN : iN(N)) : iN(N)* -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N iN -DecD ieqz_(N : N, iN : iN(N)) : u32 -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N iN -DecD inez_(N : N, iN : iN(N)) : u32 -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N iN -DecD ieq_(N : N, iN : iN(N), iN : iN(N)) : u32 -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N iN -DecD ine_(N : N, iN : iN(N), iN : iN(N)) : u32 -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N iN sx -DecD ilt_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 -[visit_id N] not free -[visit_id sx] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N iN sx -DecD igt_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 -[visit_id N] not free -[visit_id sx] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N iN sx -DecD ile_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 -[visit_id N] not free -[visit_id sx] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N iN sx -DecD ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 -[visit_id N] not free -[visit_id sx] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N i_1 -[visit_exp N] -[visit_id N] -[visit_exp i_1] -[visit_id i_1] -[visit_exp `%`_iN((((((2 ^ N) : nat <:> int) - (i_1!`%`_iN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))] -[visit_exp ((((((2 ^ N) : nat <:> int) - (i_1!`%`_iN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))] -[visit_exp (((((2 ^ N) : nat <:> int) - (i_1!`%`_iN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)] -[visit_exp ((((2 ^ N) : nat <:> int) - (i_1!`%`_iN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int))] -[visit_exp (((2 ^ N) : nat <:> int) - (i_1!`%`_iN.0 : nat <:> int))] -[visit_exp ((2 ^ N) : nat <:> int)] -[visit_exp (2 ^ N)] -[visit_exp 2] -[visit_exp N] -[visit_id N] not free -[visit_exp (i_1!`%`_iN.0 : nat <:> int)] -[visit_exp i_1!`%`_iN.0] -[visit_exp i_1!`%`_iN] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp ((2 ^ N) : nat <:> int)] -[visit_exp (2 ^ N)] -[visit_exp 2] -[visit_exp N] -[visit_id N] not free -=> - ;; ../../../../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)) -[check_dims] N i_1 -[visit_exp N] -[visit_id N] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp ($signed_(N, i_1!`%`_iN.0) >= (0 : nat <:> int))] -[visit_exp $signed_(N, i_1!`%`_iN.0)] -[visit_exp N] -[visit_id N] not free -[visit_exp i_1!`%`_iN.0] -[visit_exp i_1!`%`_iN] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp (0 : nat <:> int)] -[visit_exp 0] -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iabs_{N : N, i_1 : iN(N)}(N, i_1) = i_1 - -- if ($signed_(N, i_1!`%`_iN.0) >= (0 : nat <:> int)) -[check_dims] N i_1 -[visit_exp N] -[visit_id N] -[visit_exp i_1] -[visit_id i_1] -[visit_exp $ineg_(N, i_1)] -[visit_exp N] -[visit_id N] not free -[visit_exp i_1] -[visit_id i_1] not free -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iabs_{N : N, i_1 : iN(N)}(N, i_1) = $ineg_(N, i_1) - -- otherwise -[check_dims] M N i -[visit_exp N] -[visit_id N] -[visit_exp M] -[visit_id M] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp i] -[visit_id i] -[visit_exp `%`_iN((i!`%`_iN.0 \ (2 ^ M)))] -[visit_exp ((i!`%`_iN.0 \ (2 ^ M)))] -[visit_exp (i!`%`_iN.0 \ (2 ^ M))] -[visit_exp i!`%`_iN.0] -[visit_exp i!`%`_iN] -[visit_exp i] -[visit_id i] not free -[visit_exp (2 ^ M)] -[visit_exp 2] -[visit_exp M] -[visit_id M] not free -=> - ;; ../../../../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))) -[check_dims] M N i -[visit_exp N] -[visit_id N] -[visit_exp M] -[visit_id M] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp i] -[visit_id i] -[visit_exp `%`_iN($inv_signed_(N, $signed_(M, (i!`%`_iN.0 \ (2 ^ M)))))] -[visit_exp ($inv_signed_(N, $signed_(M, (i!`%`_iN.0 \ (2 ^ M)))))] -[visit_exp $inv_signed_(N, $signed_(M, (i!`%`_iN.0 \ (2 ^ M))))] -[visit_exp N] -[visit_id N] not free -[visit_exp $signed_(M, (i!`%`_iN.0 \ (2 ^ M)))] -[visit_exp M] -[visit_id M] not free -[visit_exp (i!`%`_iN.0 \ (2 ^ M))] -[visit_exp i!`%`_iN.0] -[visit_exp i!`%`_iN] -[visit_exp i] -[visit_id i] not free -[visit_exp (2 ^ M)] -[visit_exp 2] -[visit_exp M] -[visit_id M] not free -=> - ;; ../../../../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))))) -[check_dims] N i_1 i_2 -[visit_exp N] -[visit_id N] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp `%`_iN(((i_1!`%`_iN.0 + i_2!`%`_iN.0) \ (2 ^ N)))] -[visit_exp (((i_1!`%`_iN.0 + i_2!`%`_iN.0) \ (2 ^ N)))] -[visit_exp ((i_1!`%`_iN.0 + i_2!`%`_iN.0) \ (2 ^ N))] -[visit_exp (i_1!`%`_iN.0 + i_2!`%`_iN.0)] -[visit_exp i_1!`%`_iN.0] -[visit_exp i_1!`%`_iN] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp i_2!`%`_iN.0] -[visit_exp i_2!`%`_iN] -[visit_exp i_2] -[visit_id i_2] not free -[visit_exp (2 ^ N)] -[visit_exp 2] -[visit_exp N] -[visit_id N] not free -=> - ;; ../../../../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))) -[check_dims] N i_1 i_2 -[visit_exp N] -[visit_id N] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp `%`_iN(((((((2 ^ N) + i_1!`%`_iN.0) : nat <:> int) - (i_2!`%`_iN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))] -[visit_exp (((((((2 ^ N) + i_1!`%`_iN.0) : nat <:> int) - (i_2!`%`_iN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat))] -[visit_exp ((((((2 ^ N) + i_1!`%`_iN.0) : nat <:> int) - (i_2!`%`_iN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)] -[visit_exp (((((2 ^ N) + i_1!`%`_iN.0) : nat <:> int) - (i_2!`%`_iN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int))] -[visit_exp ((((2 ^ N) + i_1!`%`_iN.0) : nat <:> int) - (i_2!`%`_iN.0 : nat <:> int))] -[visit_exp (((2 ^ N) + i_1!`%`_iN.0) : nat <:> int)] -[visit_exp ((2 ^ N) + i_1!`%`_iN.0)] -[visit_exp (2 ^ N)] -[visit_exp 2] -[visit_exp N] -[visit_id N] not free -[visit_exp i_1!`%`_iN.0] -[visit_exp i_1!`%`_iN] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp (i_2!`%`_iN.0 : nat <:> int)] -[visit_exp i_2!`%`_iN.0] -[visit_exp i_2!`%`_iN] -[visit_exp i_2] -[visit_id i_2] not free -[visit_exp ((2 ^ N) : nat <:> int)] -[visit_exp (2 ^ N)] -[visit_exp 2] -[visit_exp N] -[visit_id N] not free -=> - ;; ../../../../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)) -[check_dims] N i_1 i_2 -[visit_exp N] -[visit_id N] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp `%`_iN(((i_1!`%`_iN.0 * i_2!`%`_iN.0) \ (2 ^ N)))] -[visit_exp (((i_1!`%`_iN.0 * i_2!`%`_iN.0) \ (2 ^ N)))] -[visit_exp ((i_1!`%`_iN.0 * i_2!`%`_iN.0) \ (2 ^ N))] -[visit_exp (i_1!`%`_iN.0 * i_2!`%`_iN.0)] -[visit_exp i_1!`%`_iN.0] -[visit_exp i_1!`%`_iN] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp i_2!`%`_iN.0] -[visit_exp i_2!`%`_iN] -[visit_exp i_2] -[visit_id i_2] not free -[visit_exp (2 ^ N)] -[visit_exp 2] -[visit_exp N] -[visit_id N] not free -=> - ;; ../../../../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))) -[check_dims] N i_1 -[visit_exp N] -[visit_id N] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp `%`_iN(0)] -[visit_exp (0)] -[visit_exp 0] -[visit_exp ?()] -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : N, i_1 : iN(N)}(N, `U`_sx, i_1, `%`_iN(0)) = ?() -[check_dims] N i_1 i_2 -[visit_exp N] -[visit_id N] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp ?(`%`_iN(($truncz(((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat))) : int <:> nat)))] -[visit_exp `%`_iN(($truncz(((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat))) : int <:> nat))] -[visit_exp (($truncz(((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat))) : int <:> nat))] -[visit_exp ($truncz(((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat))) : int <:> nat)] -[visit_exp $truncz(((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat)))] -[visit_exp ((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat))] -[visit_exp (i_1!`%`_iN.0 : nat <:> rat)] -[visit_exp i_1!`%`_iN.0] -[visit_exp i_1!`%`_iN] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp (i_2!`%`_iN.0 : nat <:> rat)] -[visit_exp i_2!`%`_iN.0] -[visit_exp i_2!`%`_iN] -[visit_exp i_2] -[visit_id i_2] not free -=> - ;; ../../../../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))) -[check_dims] N i_1 -[visit_exp N] -[visit_id N] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp `%`_iN(0)] -[visit_exp (0)] -[visit_exp 0] -[visit_exp ?()] -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : N, i_1 : iN(N)}(N, `S`_sx, i_1, `%`_iN(0)) = ?() -[check_dims] N i_1 i_2 -[visit_exp N] -[visit_id N] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp ?()] -[visit_exp ((($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))] -[visit_exp (($signed_(N, i_1!`%`_iN.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN.0) : int <:> rat))] -[visit_exp ($signed_(N, i_1!`%`_iN.0) : int <:> rat)] -[visit_exp $signed_(N, i_1!`%`_iN.0)] -[visit_exp N] -[visit_id N] not free -[visit_exp i_1!`%`_iN.0] -[visit_exp i_1!`%`_iN] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp ($signed_(N, i_2!`%`_iN.0) : int <:> rat)] -[visit_exp $signed_(N, i_2!`%`_iN.0)] -[visit_exp N] -[visit_id N] not free -[visit_exp i_2!`%`_iN.0] -[visit_exp i_2!`%`_iN] -[visit_exp i_2] -[visit_id i_2] not free -[visit_exp ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)] -[visit_exp (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp 2] -[visit_exp (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp ((N : nat <:> int) - (1 : nat <:> int))] -[visit_exp (N : nat <:> int)] -[visit_exp N] -[visit_id N] not free -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -=> - ;; ../../../../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)) -[check_dims] N i_1 i_2 -[visit_exp N] -[visit_id N] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_iN.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN.0) : int <:> rat))))))] -[visit_exp `%`_iN($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_iN.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN.0) : int <:> rat)))))] -[visit_exp ($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_iN.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN.0) : int <:> rat)))))] -[visit_exp $inv_signed_(N, $truncz((($signed_(N, i_1!`%`_iN.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN.0) : int <:> rat))))] -[visit_exp N] -[visit_id N] not free -[visit_exp $truncz((($signed_(N, i_1!`%`_iN.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN.0) : int <:> rat)))] -[visit_exp (($signed_(N, i_1!`%`_iN.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN.0) : int <:> rat))] -[visit_exp ($signed_(N, i_1!`%`_iN.0) : int <:> rat)] -[visit_exp $signed_(N, i_1!`%`_iN.0)] -[visit_exp N] -[visit_id N] not free -[visit_exp i_1!`%`_iN.0] -[visit_exp i_1!`%`_iN] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp ($signed_(N, i_2!`%`_iN.0) : int <:> rat)] -[visit_exp $signed_(N, i_2!`%`_iN.0)] -[visit_exp N] -[visit_id N] not free -[visit_exp i_2!`%`_iN.0] -[visit_exp i_2!`%`_iN] -[visit_exp i_2] -[visit_id i_2] not free -=> - ;; ../../../../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)))))) -[check_dims] N i_1 -[visit_exp N] -[visit_id N] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp `%`_iN(0)] -[visit_exp (0)] -[visit_exp 0] -[visit_exp ?()] -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{N : N, i_1 : iN(N)}(N, `U`_sx, i_1, `%`_iN(0)) = ?() -[check_dims] N i_1 i_2 -[visit_exp N] -[visit_id N] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp ?(`%`_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)))] -[visit_exp `%`_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))] -[visit_exp ((((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))] -[visit_exp (((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)] -[visit_exp ((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))] -[visit_exp (i_1!`%`_iN.0 : nat <:> int)] -[visit_exp i_1!`%`_iN.0] -[visit_exp i_1!`%`_iN] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp ((i_2!`%`_iN.0 * ($truncz(((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)] -[visit_exp (i_2!`%`_iN.0 * ($truncz(((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat))) : int <:> nat))] -[visit_exp i_2!`%`_iN.0] -[visit_exp i_2!`%`_iN] -[visit_exp i_2] -[visit_id i_2] not free -[visit_exp ($truncz(((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat))) : int <:> nat)] -[visit_exp $truncz(((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat)))] -[visit_exp ((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat))] -[visit_exp (i_1!`%`_iN.0 : nat <:> rat)] -[visit_exp i_1!`%`_iN.0] -[visit_exp i_1!`%`_iN] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp (i_2!`%`_iN.0 : nat <:> rat)] -[visit_exp i_2!`%`_iN.0] -[visit_exp i_2!`%`_iN] -[visit_exp i_2] -[visit_id i_2] not free -=> - ;; ../../../../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))) -[check_dims] N i_1 -[visit_exp N] -[visit_id N] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp `%`_iN(0)] -[visit_exp (0)] -[visit_exp 0] -[visit_exp ?()] -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{N : N, i_1 : iN(N)}(N, `S`_sx, i_1, `%`_iN(0)) = ?() -[check_dims] N i_1 i_2 j_1 j_2 -[visit_exp N] -[visit_id N] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat))))))))] -[visit_exp `%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))] -[visit_exp ($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))] -[visit_exp $inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat))))))] -[visit_exp N] -[visit_id N] not free -[visit_exp (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))] -[visit_exp j_1] -[visit_id j_1] -[visit_exp (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat))))] -[visit_exp j_2] -[visit_id j_2] -[visit_exp $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))] -[visit_exp ((j_1 : int <:> rat) / (j_2 : int <:> rat))] -[visit_exp (j_1 : int <:> rat)] -[visit_exp j_1] -[visit_id j_1] not free -[visit_exp (j_2 : int <:> rat)] -[visit_exp j_2] -[visit_id j_2] not free -[visit_exp ((j_1 = $signed_(N, i_1!`%`_iN.0)) /\ (j_2 = $signed_(N, i_2!`%`_iN.0)))] -[visit_exp (j_1 = $signed_(N, i_1!`%`_iN.0))] -[visit_exp j_1] -[visit_id j_1] not free -[visit_exp $signed_(N, i_1!`%`_iN.0)] -[visit_exp N] -[visit_id N] not free -[visit_exp i_1!`%`_iN.0] -[visit_exp i_1!`%`_iN] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp (j_2 = $signed_(N, i_2!`%`_iN.0))] -[visit_exp j_2] -[visit_id j_2] not free -[visit_exp $signed_(N, i_2!`%`_iN.0)] -[visit_exp N] -[visit_id N] not free -[visit_exp i_2!`%`_iN.0] -[visit_exp i_2!`%`_iN] -[visit_exp i_2] -[visit_id i_2] not free -=> - ;; ../../../../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))) -[check_dims] N i_1 i_2 -[visit_exp N] -[visit_id N] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp (i_1!`%`_iN.0 <= i_2!`%`_iN.0)] -[visit_exp i_1!`%`_iN.0] -[visit_exp i_1!`%`_iN] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp i_2!`%`_iN.0] -[visit_exp i_2!`%`_iN] -[visit_exp i_2] -[visit_id i_2] not free -=> - ;; ../../../../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) -[check_dims] N i_1 i_2 -[visit_exp N] -[visit_id N] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp i_2] -[visit_id i_2] not free -[visit_exp (i_1!`%`_iN.0 > i_2!`%`_iN.0)] -[visit_exp i_1!`%`_iN.0] -[visit_exp i_1!`%`_iN] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp i_2!`%`_iN.0] -[visit_exp i_2!`%`_iN] -[visit_exp i_2] -[visit_id i_2] not free -=> - ;; ../../../../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) -[check_dims] N i_1 i_2 -[visit_exp N] -[visit_id N] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp ($signed_(N, i_1!`%`_iN.0) <= $signed_(N, i_2!`%`_iN.0))] -[visit_exp $signed_(N, i_1!`%`_iN.0)] -[visit_exp N] -[visit_id N] not free -[visit_exp i_1!`%`_iN.0] -[visit_exp i_1!`%`_iN] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp $signed_(N, i_2!`%`_iN.0)] -[visit_exp N] -[visit_id N] not free -[visit_exp i_2!`%`_iN.0] -[visit_exp i_2!`%`_iN] -[visit_exp i_2] -[visit_id i_2] not free -=> - ;; ../../../../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) = i_1 - -- if ($signed_(N, i_1!`%`_iN.0) <= $signed_(N, i_2!`%`_iN.0)) -[check_dims] N i_1 i_2 -[visit_exp N] -[visit_id N] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp i_2] -[visit_id i_2] not free -=> - ;; ../../../../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) = i_2 - -- otherwise -[check_dims] N i_1 i_2 -[visit_exp N] -[visit_id N] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp (i_1!`%`_iN.0 >= i_2!`%`_iN.0)] -[visit_exp i_1!`%`_iN.0] -[visit_exp i_1!`%`_iN] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp i_2!`%`_iN.0] -[visit_exp i_2!`%`_iN] -[visit_exp i_2] -[visit_id i_2] not free -=> - ;; ../../../../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) -[check_dims] N i_1 i_2 -[visit_exp N] -[visit_id N] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp i_2] -[visit_id i_2] not free -[visit_exp (i_1!`%`_iN.0 < i_2!`%`_iN.0)] -[visit_exp i_1!`%`_iN.0] -[visit_exp i_1!`%`_iN] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp i_2!`%`_iN.0] -[visit_exp i_2!`%`_iN] -[visit_exp i_2] -[visit_id i_2] not free -=> - ;; ../../../../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) -[check_dims] N i_1 i_2 -[visit_exp N] -[visit_id N] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp ($signed_(N, i_1!`%`_iN.0) >= $signed_(N, i_2!`%`_iN.0))] -[visit_exp $signed_(N, i_1!`%`_iN.0)] -[visit_exp N] -[visit_id N] not free -[visit_exp i_1!`%`_iN.0] -[visit_exp i_1!`%`_iN] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp $signed_(N, i_2!`%`_iN.0)] -[visit_exp N] -[visit_id N] not free -[visit_exp i_2!`%`_iN.0] -[visit_exp i_2!`%`_iN] -[visit_exp i_2] -[visit_id i_2] not free -=> - ;; ../../../../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) = i_1 - -- if ($signed_(N, i_1!`%`_iN.0) >= $signed_(N, i_2!`%`_iN.0)) -[check_dims] N i_1 i_2 -[visit_exp N] -[visit_id N] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp i_2] -[visit_id i_2] not free -=> - ;; ../../../../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) = i_2 - -- otherwise -[check_dims] N i_1 i_2 -[visit_exp N] -[visit_id N] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp `%`_iN($sat_u_(N, ((i_1!`%`_iN.0 + i_2!`%`_iN.0) : nat <:> int)))] -[visit_exp ($sat_u_(N, ((i_1!`%`_iN.0 + i_2!`%`_iN.0) : nat <:> int)))] -[visit_exp $sat_u_(N, ((i_1!`%`_iN.0 + i_2!`%`_iN.0) : nat <:> int))] -[visit_exp N] -[visit_id N] not free -[visit_exp ((i_1!`%`_iN.0 + i_2!`%`_iN.0) : nat <:> int)] -[visit_exp (i_1!`%`_iN.0 + i_2!`%`_iN.0)] -[visit_exp i_1!`%`_iN.0] -[visit_exp i_1!`%`_iN] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp i_2!`%`_iN.0] -[visit_exp i_2!`%`_iN] -[visit_exp i_2] -[visit_id i_2] not free -=> - ;; ../../../../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))) -[check_dims] N i_1 i_2 -[visit_exp N] -[visit_id N] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN.0) + $signed_(N, i_2!`%`_iN.0)))))] -[visit_exp ($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN.0) + $signed_(N, i_2!`%`_iN.0)))))] -[visit_exp $inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN.0) + $signed_(N, i_2!`%`_iN.0))))] -[visit_exp N] -[visit_id N] not free -[visit_exp $sat_s_(N, ($signed_(N, i_1!`%`_iN.0) + $signed_(N, i_2!`%`_iN.0)))] -[visit_exp N] -[visit_id N] not free -[visit_exp ($signed_(N, i_1!`%`_iN.0) + $signed_(N, i_2!`%`_iN.0))] -[visit_exp $signed_(N, i_1!`%`_iN.0)] -[visit_exp N] -[visit_id N] not free -[visit_exp i_1!`%`_iN.0] -[visit_exp i_1!`%`_iN] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp $signed_(N, i_2!`%`_iN.0)] -[visit_exp N] -[visit_id N] not free -[visit_exp i_2!`%`_iN.0] -[visit_exp i_2!`%`_iN] -[visit_exp i_2] -[visit_id i_2] not free -=> - ;; ../../../../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))))) -[check_dims] N i_1 i_2 -[visit_exp N] -[visit_id N] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp `%`_iN($sat_u_(N, ((i_1!`%`_iN.0 : nat <:> int) - (i_2!`%`_iN.0 : nat <:> int))))] -[visit_exp ($sat_u_(N, ((i_1!`%`_iN.0 : nat <:> int) - (i_2!`%`_iN.0 : nat <:> int))))] -[visit_exp $sat_u_(N, ((i_1!`%`_iN.0 : nat <:> int) - (i_2!`%`_iN.0 : nat <:> int)))] -[visit_exp N] -[visit_id N] not free -[visit_exp ((i_1!`%`_iN.0 : nat <:> int) - (i_2!`%`_iN.0 : nat <:> int))] -[visit_exp (i_1!`%`_iN.0 : nat <:> int)] -[visit_exp i_1!`%`_iN.0] -[visit_exp i_1!`%`_iN] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp (i_2!`%`_iN.0 : nat <:> int)] -[visit_exp i_2!`%`_iN.0] -[visit_exp i_2!`%`_iN] -[visit_exp i_2] -[visit_id i_2] not free -=> - ;; ../../../../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)))) -[check_dims] N i_1 i_2 -[visit_exp N] -[visit_id N] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN.0) - $signed_(N, i_2!`%`_iN.0)))))] -[visit_exp ($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN.0) - $signed_(N, i_2!`%`_iN.0)))))] -[visit_exp $inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN.0) - $signed_(N, i_2!`%`_iN.0))))] -[visit_exp N] -[visit_id N] not free -[visit_exp $sat_s_(N, ($signed_(N, i_1!`%`_iN.0) - $signed_(N, i_2!`%`_iN.0)))] -[visit_exp N] -[visit_id N] not free -[visit_exp ($signed_(N, i_1!`%`_iN.0) - $signed_(N, i_2!`%`_iN.0))] -[visit_exp $signed_(N, i_1!`%`_iN.0)] -[visit_exp N] -[visit_id N] not free -[visit_exp i_1!`%`_iN.0] -[visit_exp i_1!`%`_iN] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp $signed_(N, i_2!`%`_iN.0)] -[visit_exp N] -[visit_id N] not free -[visit_exp i_2!`%`_iN.0] -[visit_exp i_2!`%`_iN] -[visit_exp i_2] -[visit_id i_2] not free -=> - ;; ../../../../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))))) -[check_dims] N i_1 -[visit_exp N] -[visit_id N] -[visit_exp i_1] -[visit_id i_1] -[visit_exp `%`_u32($bool((i_1!`%`_iN.0 = 0)))] -[visit_exp ($bool((i_1!`%`_iN.0 = 0)))] -[visit_exp $bool((i_1!`%`_iN.0 = 0))] -[visit_exp (i_1!`%`_iN.0 = 0)] -[visit_exp i_1!`%`_iN.0] -[visit_exp i_1!`%`_iN] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp 0] -=> - ;; ../../../../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))) -[check_dims] N i_1 -[visit_exp N] -[visit_id N] -[visit_exp i_1] -[visit_id i_1] -[visit_exp `%`_u32($bool((i_1!`%`_iN.0 =/= 0)))] -[visit_exp ($bool((i_1!`%`_iN.0 =/= 0)))] -[visit_exp $bool((i_1!`%`_iN.0 =/= 0))] -[visit_exp (i_1!`%`_iN.0 =/= 0)] -[visit_exp i_1!`%`_iN.0] -[visit_exp i_1!`%`_iN] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp 0] -=> - ;; ../../../../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))) -[check_dims] N i_1 i_2 -[visit_exp N] -[visit_id N] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp `%`_u32($bool((i_1 = i_2)))] -[visit_exp ($bool((i_1 = i_2)))] -[visit_exp $bool((i_1 = i_2))] -[visit_exp (i_1 = i_2)] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp i_2] -[visit_id i_2] not free -=> - ;; ../../../../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))) -[check_dims] N i_1 i_2 -[visit_exp N] -[visit_id N] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp `%`_u32($bool((i_1 =/= i_2)))] -[visit_exp ($bool((i_1 =/= i_2)))] -[visit_exp $bool((i_1 =/= i_2))] -[visit_exp (i_1 =/= i_2)] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp i_2] -[visit_id i_2] not free -=> - ;; ../../../../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))) -[check_dims] N i_1 i_2 -[visit_exp N] -[visit_id N] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp `%`_u32($bool((i_1!`%`_iN.0 < i_2!`%`_iN.0)))] -[visit_exp ($bool((i_1!`%`_iN.0 < i_2!`%`_iN.0)))] -[visit_exp $bool((i_1!`%`_iN.0 < i_2!`%`_iN.0))] -[visit_exp (i_1!`%`_iN.0 < i_2!`%`_iN.0)] -[visit_exp i_1!`%`_iN.0] -[visit_exp i_1!`%`_iN] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp i_2!`%`_iN.0] -[visit_exp i_2!`%`_iN] -[visit_exp i_2] -[visit_id i_2] not free -=> - ;; ../../../../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))) -[check_dims] N i_1 i_2 -[visit_exp N] -[visit_id N] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) < $signed_(N, i_2!`%`_iN.0))))] -[visit_exp ($bool(($signed_(N, i_1!`%`_iN.0) < $signed_(N, i_2!`%`_iN.0))))] -[visit_exp $bool(($signed_(N, i_1!`%`_iN.0) < $signed_(N, i_2!`%`_iN.0)))] -[visit_exp ($signed_(N, i_1!`%`_iN.0) < $signed_(N, i_2!`%`_iN.0))] -[visit_exp $signed_(N, i_1!`%`_iN.0)] -[visit_exp N] -[visit_id N] not free -[visit_exp i_1!`%`_iN.0] -[visit_exp i_1!`%`_iN] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp $signed_(N, i_2!`%`_iN.0)] -[visit_exp N] -[visit_id N] not free -[visit_exp i_2!`%`_iN.0] -[visit_exp i_2!`%`_iN] -[visit_exp i_2] -[visit_id i_2] not free -=> - ;; ../../../../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)))) -[check_dims] N i_1 i_2 -[visit_exp N] -[visit_id N] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp `%`_u32($bool((i_1!`%`_iN.0 > i_2!`%`_iN.0)))] -[visit_exp ($bool((i_1!`%`_iN.0 > i_2!`%`_iN.0)))] -[visit_exp $bool((i_1!`%`_iN.0 > i_2!`%`_iN.0))] -[visit_exp (i_1!`%`_iN.0 > i_2!`%`_iN.0)] -[visit_exp i_1!`%`_iN.0] -[visit_exp i_1!`%`_iN] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp i_2!`%`_iN.0] -[visit_exp i_2!`%`_iN] -[visit_exp i_2] -[visit_id i_2] not free -=> - ;; ../../../../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))) -[check_dims] N i_1 i_2 -[visit_exp N] -[visit_id N] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) > $signed_(N, i_2!`%`_iN.0))))] -[visit_exp ($bool(($signed_(N, i_1!`%`_iN.0) > $signed_(N, i_2!`%`_iN.0))))] -[visit_exp $bool(($signed_(N, i_1!`%`_iN.0) > $signed_(N, i_2!`%`_iN.0)))] -[visit_exp ($signed_(N, i_1!`%`_iN.0) > $signed_(N, i_2!`%`_iN.0))] -[visit_exp $signed_(N, i_1!`%`_iN.0)] -[visit_exp N] -[visit_id N] not free -[visit_exp i_1!`%`_iN.0] -[visit_exp i_1!`%`_iN] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp $signed_(N, i_2!`%`_iN.0)] -[visit_exp N] -[visit_id N] not free -[visit_exp i_2!`%`_iN.0] -[visit_exp i_2!`%`_iN] -[visit_exp i_2] -[visit_id i_2] not free -=> - ;; ../../../../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)))) -[check_dims] N i_1 i_2 -[visit_exp N] -[visit_id N] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp `%`_u32($bool((i_1!`%`_iN.0 <= i_2!`%`_iN.0)))] -[visit_exp ($bool((i_1!`%`_iN.0 <= i_2!`%`_iN.0)))] -[visit_exp $bool((i_1!`%`_iN.0 <= i_2!`%`_iN.0))] -[visit_exp (i_1!`%`_iN.0 <= i_2!`%`_iN.0)] -[visit_exp i_1!`%`_iN.0] -[visit_exp i_1!`%`_iN] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp i_2!`%`_iN.0] -[visit_exp i_2!`%`_iN] -[visit_exp i_2] -[visit_id i_2] not free -=> - ;; ../../../../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))) -[check_dims] N i_1 i_2 -[visit_exp N] -[visit_id N] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) <= $signed_(N, i_2!`%`_iN.0))))] -[visit_exp ($bool(($signed_(N, i_1!`%`_iN.0) <= $signed_(N, i_2!`%`_iN.0))))] -[visit_exp $bool(($signed_(N, i_1!`%`_iN.0) <= $signed_(N, i_2!`%`_iN.0)))] -[visit_exp ($signed_(N, i_1!`%`_iN.0) <= $signed_(N, i_2!`%`_iN.0))] -[visit_exp $signed_(N, i_1!`%`_iN.0)] -[visit_exp N] -[visit_id N] not free -[visit_exp i_1!`%`_iN.0] -[visit_exp i_1!`%`_iN] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp $signed_(N, i_2!`%`_iN.0)] -[visit_exp N] -[visit_id N] not free -[visit_exp i_2!`%`_iN.0] -[visit_exp i_2!`%`_iN] -[visit_exp i_2] -[visit_id i_2] not free -=> - ;; ../../../../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)))) -[check_dims] N i_1 i_2 -[visit_exp N] -[visit_id N] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp `%`_u32($bool((i_1!`%`_iN.0 >= i_2!`%`_iN.0)))] -[visit_exp ($bool((i_1!`%`_iN.0 >= i_2!`%`_iN.0)))] -[visit_exp $bool((i_1!`%`_iN.0 >= i_2!`%`_iN.0))] -[visit_exp (i_1!`%`_iN.0 >= i_2!`%`_iN.0)] -[visit_exp i_1!`%`_iN.0] -[visit_exp i_1!`%`_iN] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp i_2!`%`_iN.0] -[visit_exp i_2!`%`_iN] -[visit_exp i_2] -[visit_id i_2] not free -=> - ;; ../../../../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))) -[check_dims] N i_1 i_2 -[visit_exp N] -[visit_id N] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) >= $signed_(N, i_2!`%`_iN.0))))] -[visit_exp ($bool(($signed_(N, i_1!`%`_iN.0) >= $signed_(N, i_2!`%`_iN.0))))] -[visit_exp $bool(($signed_(N, i_1!`%`_iN.0) >= $signed_(N, i_2!`%`_iN.0)))] -[visit_exp ($signed_(N, i_1!`%`_iN.0) >= $signed_(N, i_2!`%`_iN.0))] -[visit_exp $signed_(N, i_1!`%`_iN.0)] -[visit_exp N] -[visit_id N] not free -[visit_exp i_1!`%`_iN.0] -[visit_exp i_1!`%`_iN] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp $signed_(N, i_2!`%`_iN.0)] -[visit_exp N] -[visit_id N] not free -[visit_exp i_2!`%`_iN.0] -[visit_exp i_2!`%`_iN] -[visit_exp i_2] -[visit_id i_2] not free -=> - ;; ../../../../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)))) -[check_dims] N fN -DecD fabs_(N : N, fN : fN(N)) : fN(N)* -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N fN -DecD fneg_(N : N, fN : fN(N)) : fN(N)* -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N fN -DecD fsqrt_(N : N, fN : fN(N)) : fN(N)* -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N fN -DecD fceil_(N : N, fN : fN(N)) : fN(N)* -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N fN -DecD ffloor_(N : N, fN : fN(N)) : fN(N)* -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N fN -DecD ftrunc_(N : N, fN : fN(N)) : fN(N)* -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N fN -DecD fnearest_(N : N, fN : fN(N)) : fN(N)* -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N fN -DecD fadd_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N fN -DecD fsub_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N fN -DecD fmul_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N fN -DecD fdiv_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N fN -DecD fmin_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N fN -DecD fmax_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N fN -DecD fpmin_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N fN -DecD fpmax_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N fN -DecD frelaxed_min_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N fN -DecD frelaxed_max_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N fN -DecD fcopysign_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N fN -DecD feq_(N : N, fN : fN(N), fN : fN(N)) : u32 -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N fN -DecD fne_(N : N, fN : fN(N), fN : fN(N)) : u32 -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N fN -DecD flt_(N : N, fN : fN(N), fN : fN(N)) : u32 -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N fN -DecD fgt_(N : N, fN : fN(N), fN : fN(N)) : u32 -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N fN -DecD fle_(N : N, fN : fN(N), fN : fN(N)) : u32 -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N fN -DecD fge_(N : N, fN : fN(N), fN : fN(N)) : u32 -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N fN -DecD frelaxed_madd_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)* -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N fN -DecD frelaxed_nmadd_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)* -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] M N iN -DecD wrap__(M : M, N : N, iN : iN(M)) : iN(N) -[visit_id M] not free -[visit_id N] not free -[visit_id iN] not free -[visit_exp M] -[visit_id M] not free -[visit_exp N] -[visit_id N] not free -[check_dims] M N iN sx -DecD extend__(M : M, N : N, sx : sx, iN : iN(M)) : iN(N) -[visit_id M] not free -[visit_id N] not free -[visit_id sx] not free -[visit_id iN] not free -[visit_exp M] -[visit_id M] not free -[visit_exp N] -[visit_id N] not free -[check_dims] M N fN sx -DecD trunc__(M : M, N : N, sx : sx, fN : fN(M)) : iN(N)? -[visit_id M] not free -[visit_id N] not free -[visit_id sx] not free -[visit_id fN] not free -[visit_exp M] -[visit_id M] not free -[visit_exp N] -[visit_id N] not free -[check_dims] M N fN sx -DecD trunc_sat__(M : M, N : N, sx : sx, fN : fN(M)) : iN(N)? -[visit_id M] not free -[visit_id N] not free -[visit_id sx] not free -[visit_id fN] not free -[visit_exp M] -[visit_id M] not free -[visit_exp N] -[visit_id N] not free -[check_dims] M N fN sx -DecD relaxed_trunc__(M : M, N : N, sx : sx, fN : fN(M)) : iN(N)? -[visit_id M] not free -[visit_id N] not free -[visit_id sx] not free -[visit_id fN] not free -[visit_exp M] -[visit_id M] not free -[visit_exp N] -[visit_id N] not free -[check_dims] M N fN -DecD demote__(M : M, N : N, fN : fN(M)) : fN(N)* -[visit_id M] not free -[visit_id N] not free -[visit_id fN] not free -[visit_exp M] -[visit_id M] not free -[visit_exp N] -[visit_id N] not free -[check_dims] M N fN -DecD promote__(M : M, N : N, fN : fN(M)) : fN(N)* -[visit_id M] not free -[visit_id N] not free -[visit_id fN] not free -[visit_exp M] -[visit_id M] not free -[visit_exp N] -[visit_id N] not free -[check_dims] M N iN sx -DecD convert__(M : M, N : N, sx : sx, iN : iN(M)) : fN(N) -[visit_id M] not free -[visit_id N] not free -[visit_id sx] not free -[visit_id iN] not free -[visit_exp M] -[visit_id M] not free -[visit_exp N] -[visit_id N] not free -[check_dims] M N iN sx -DecD narrow__(M : M, N : N, sx : sx, iN : iN(M)) : iN(N) -[visit_id M] not free -[visit_id N] not free -[visit_id sx] not free -[visit_id iN] not free -[visit_exp M] -[visit_id M] not free -[visit_exp N] -[visit_id N] not free -[check_dims] num_ numtype_1 numtype_2 -DecD reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_(numtype_1)) : num_(numtype_2) -[visit_id numtype_1] not free -[visit_id numtype_2] not free -[visit_id num_] not free -[visit_exp numtype_1] -[visit_id numtype_1] not free -[visit_exp numtype_2] -[visit_id numtype_2] not free -[check_dims] lanetype num_ -DecD lpacknum_(lanetype : lanetype, num_ : num_($lunpack(lanetype))) : lane_(lanetype) -[visit_id lanetype] not free -[visit_id num_] not free -[visit_exp $lunpack(lanetype)] -[visit_exp lanetype] -[visit_id lanetype] not free -[visit_exp lanetype] -[visit_id lanetype] not free -[check_dims] lit_ storagetype -DecD cpacknum_(storagetype : storagetype, lit_ : lit_(($cunpack(storagetype) : consttype <: storagetype))) : lit_(storagetype) -[visit_id storagetype] not free -[visit_id lit_] not free -[visit_exp ($cunpack(storagetype) : consttype <: storagetype)] -[visit_exp $cunpack(storagetype)] -[visit_exp storagetype] -[visit_id storagetype] not free -[visit_exp storagetype] -[visit_id storagetype] not free -[check_dims] c numtype -[visit_exp (numtype : numtype <: lanetype)] -[visit_exp numtype] -[visit_id numtype] -[visit_exp c] -[visit_id c] -[visit_exp c] -[visit_id c] not free -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lpacknum_{numtype : numtype, c : num_($lunpack((numtype : numtype <: lanetype)))}((numtype : numtype <: lanetype), c) = c -[check_dims] c packtype -[visit_exp (packtype : packtype <: lanetype)] -[visit_exp packtype] -[visit_id packtype] -[visit_exp c] -[visit_id c] -[visit_exp $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)] -[visit_exp $size($lunpack((packtype : packtype <: lanetype)))] -[visit_exp $lunpack((packtype : packtype <: lanetype))] -[visit_exp (packtype : packtype <: lanetype)] -[visit_exp packtype] -[visit_id packtype] not free -[visit_exp $psize(packtype)] -[visit_exp packtype] -[visit_id packtype] not free -[visit_exp c] -[visit_id c] not free -=> - ;; ../../../../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) -[check_dims] c consttype -[visit_exp (consttype : consttype <: storagetype)] -[visit_exp consttype] -[visit_id consttype] -[visit_exp c] -[visit_id c] -[visit_exp c] -[visit_id c] not free -=> - ;; ../../../../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 -[check_dims] c packtype -[visit_exp (packtype : packtype <: storagetype)] -[visit_exp packtype] -[visit_id packtype] -[visit_exp c] -[visit_id c] -[visit_exp $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c)] -[visit_exp $size($lunpack((packtype : packtype <: lanetype)))] -[visit_exp $lunpack((packtype : packtype <: lanetype))] -[visit_exp (packtype : packtype <: lanetype)] -[visit_exp packtype] -[visit_id packtype] not free -[visit_exp $psize(packtype)] -[visit_exp packtype] -[visit_id packtype] not free -[visit_exp c] -[visit_id c] not free -=> - ;; ../../../../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) -[check_dims] lane_ lanetype -DecD lunpacknum_(lanetype : lanetype, lane_ : lane_(lanetype)) : num_($lunpack(lanetype)) -[visit_id lanetype] not free -[visit_id lane_] not free -[visit_exp lanetype] -[visit_id lanetype] not free -[visit_exp $lunpack(lanetype)] -[visit_exp lanetype] -[visit_id lanetype] not free -[check_dims] lit_ storagetype -DecD cunpacknum_(storagetype : storagetype, lit_ : lit_(storagetype)) : lit_(($cunpack(storagetype) : consttype <: storagetype)) -[visit_id storagetype] not free -[visit_id lit_] not free -[visit_exp storagetype] -[visit_id storagetype] not free -[visit_exp ($cunpack(storagetype) : consttype <: storagetype)] -[visit_exp $cunpack(storagetype)] -[visit_exp storagetype] -[visit_id storagetype] not free -[check_dims] c numtype -[visit_exp (numtype : numtype <: lanetype)] -[visit_exp numtype] -[visit_id numtype] -[visit_exp c] -[visit_id c] -[visit_exp c] -[visit_id c] not free -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $lunpacknum_{numtype : numtype, c : lane_((numtype : numtype <: lanetype))}((numtype : numtype <: lanetype), c) = c -[check_dims] c packtype -[visit_exp (packtype : packtype <: lanetype)] -[visit_exp packtype] -[visit_id packtype] -[visit_exp c] -[visit_id c] -[visit_exp $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), `U`_sx, c)] -[visit_exp $psize(packtype)] -[visit_exp packtype] -[visit_id packtype] not free -[visit_exp $size($lunpack((packtype : packtype <: lanetype)))] -[visit_exp $lunpack((packtype : packtype <: lanetype))] -[visit_exp (packtype : packtype <: lanetype)] -[visit_exp packtype] -[visit_id packtype] not free -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp c] -[visit_id c] not free -=> - ;; ../../../../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) -[check_dims] c consttype -[visit_exp (consttype : consttype <: storagetype)] -[visit_exp consttype] -[visit_id consttype] -[visit_exp c] -[visit_id c] -[visit_exp c] -[visit_id c] not free -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cunpacknum_{consttype : consttype, c : lit_((consttype : consttype <: storagetype))}((consttype : consttype <: storagetype), c) = c -[check_dims] c packtype -[visit_exp (packtype : packtype <: storagetype)] -[visit_exp packtype] -[visit_id packtype] -[visit_exp c] -[visit_id c] -[visit_exp $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), `U`_sx, c)] -[visit_exp $psize(packtype)] -[visit_exp packtype] -[visit_id packtype] not free -[visit_exp $size($lunpack((packtype : packtype <: lanetype)))] -[visit_exp $lunpack((packtype : packtype <: lanetype))] -[visit_exp (packtype : packtype <: lanetype)] -[visit_exp packtype] -[visit_id packtype] not free -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp c] -[visit_id c] not free -=> - ;; ../../../../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) -[check_dims] num_ numtype unop_ -DecD unop_(numtype : numtype, unop_ : unop_(numtype), num_ : num_(numtype)) : num_(numtype)* -[visit_id numtype] not free -[visit_id unop_] not free -[visit_exp numtype] -[visit_id numtype] not free -[visit_id num_] not free -[visit_exp numtype] -[visit_id numtype] not free -[visit_exp numtype] -[visit_id numtype] not free -[check_dims] binop_ num_ numtype -DecD binop_(numtype : numtype, binop_ : binop_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : num_(numtype)* -[visit_id numtype] not free -[visit_id binop_] not free -[visit_exp numtype] -[visit_id numtype] not free -[visit_id num_] not free -[visit_exp numtype] -[visit_id numtype] not free -[visit_id num_] not free -[visit_exp numtype] -[visit_id numtype] not free -[visit_exp numtype] -[visit_id numtype] not free -[check_dims] num_ numtype testop_ -DecD testop_(numtype : numtype, testop_ : testop_(numtype), num_ : num_(numtype)) : u32 -[visit_id numtype] not free -[visit_id testop_] not free -[visit_exp numtype] -[visit_id numtype] not free -[visit_id num_] not free -[visit_exp numtype] -[visit_id numtype] not free -[check_dims] num_ numtype relop_ -DecD relop_(numtype : numtype, relop_ : relop_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : u32 -[visit_id numtype] not free -[visit_id relop_] not free -[visit_exp numtype] -[visit_id numtype] not free -[visit_id num_] not free -[visit_exp numtype] -[visit_id numtype] not free -[visit_id num_] not free -[visit_exp numtype] -[visit_id numtype] not free -[check_dims] cvtop__ num_ numtype_1 numtype_2 -DecD cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype_1, numtype_2), num_ : num_(numtype_1)) : num_(numtype_2)* -[visit_id numtype_1] not free -[visit_id numtype_2] not free -[visit_id cvtop__] not free -[visit_exp numtype_1] -[visit_id numtype_1] not free -[visit_exp numtype_2] -[visit_id numtype_2] not free -[visit_id num_] not free -[visit_exp numtype_1] -[visit_id numtype_1] not free -[visit_exp numtype_2] -[visit_id numtype_2] not free -[check_dims] Inn i -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] -[visit_exp `CLZ`_unop_] -[visit_exp ()] -[visit_exp i] -[visit_id i] -[visit_exp [$iclz_($sizenn((Inn : Inn <: numtype)), i)]] -[visit_exp $iclz_($sizenn((Inn : Inn <: numtype)), i)] -[visit_exp $sizenn((Inn : Inn <: numtype))] -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] not free -[visit_exp i] -[visit_id i] not free -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Inn : Inn, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `CLZ`_unop_, i) = [$iclz_($sizenn((Inn : Inn <: numtype)), i)] -[check_dims] Inn i -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] -[visit_exp `CTZ`_unop_] -[visit_exp ()] -[visit_exp i] -[visit_id i] -[visit_exp [$ictz_($sizenn((Inn : Inn <: numtype)), i)]] -[visit_exp $ictz_($sizenn((Inn : Inn <: numtype)), i)] -[visit_exp $sizenn((Inn : Inn <: numtype))] -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] not free -[visit_exp i] -[visit_id i] not free -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Inn : Inn, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `CTZ`_unop_, i) = [$ictz_($sizenn((Inn : Inn <: numtype)), i)] -[check_dims] Inn i -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] -[visit_exp `POPCNT`_unop_] -[visit_exp ()] -[visit_exp i] -[visit_id i] -[visit_exp [$ipopcnt_($sizenn((Inn : Inn <: numtype)), i)]] -[visit_exp $ipopcnt_($sizenn((Inn : Inn <: numtype)), i)] -[visit_exp $sizenn((Inn : Inn <: numtype))] -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] not free -[visit_exp i] -[visit_id i] not free -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Inn : Inn, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `POPCNT`_unop_, i) = [$ipopcnt_($sizenn((Inn : Inn <: numtype)), i)] -[check_dims] Inn M i -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] -[visit_exp `EXTEND`_unop_(`%`_sz(M))] -[visit_exp (`%`_sz(M))] -[visit_exp `%`_sz(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp i] -[visit_id i] -[visit_exp [$iextend_($sizenn((Inn : Inn <: numtype)), M, `S`_sx, i)]] -[visit_exp $iextend_($sizenn((Inn : Inn <: numtype)), M, `S`_sx, i)] -[visit_exp $sizenn((Inn : Inn <: numtype))] -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] not free -[visit_exp M] -[visit_id M] not free -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp i] -[visit_id i] not free -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Inn : Inn, M : M, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `EXTEND`_unop_(`%`_sz(M)), i) = [$iextend_($sizenn((Inn : Inn <: numtype)), M, `S`_sx, i)] -[check_dims] Fnn f -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `ABS`_unop_] -[visit_exp ()] -[visit_exp f] -[visit_id f] -[visit_exp $fabs_($sizenn((Fnn : Fnn <: numtype)), f)] -[visit_exp $sizenn((Fnn : Fnn <: numtype))] -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp f] -[visit_id f] not free -=> - ;; ../../../../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) -[check_dims] Fnn f -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `NEG`_unop_] -[visit_exp ()] -[visit_exp f] -[visit_id f] -[visit_exp $fneg_($sizenn((Fnn : Fnn <: numtype)), f)] -[visit_exp $sizenn((Fnn : Fnn <: numtype))] -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp f] -[visit_id f] not free -=> - ;; ../../../../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) -[check_dims] Fnn f -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `SQRT`_unop_] -[visit_exp ()] -[visit_exp f] -[visit_id f] -[visit_exp $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f)] -[visit_exp $sizenn((Fnn : Fnn <: numtype))] -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp f] -[visit_id f] not free -=> - ;; ../../../../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) -[check_dims] Fnn f -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `CEIL`_unop_] -[visit_exp ()] -[visit_exp f] -[visit_id f] -[visit_exp $fceil_($sizenn((Fnn : Fnn <: numtype)), f)] -[visit_exp $sizenn((Fnn : Fnn <: numtype))] -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp f] -[visit_id f] not free -=> - ;; ../../../../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) -[check_dims] Fnn f -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `FLOOR`_unop_] -[visit_exp ()] -[visit_exp f] -[visit_id f] -[visit_exp $ffloor_($sizenn((Fnn : Fnn <: numtype)), f)] -[visit_exp $sizenn((Fnn : Fnn <: numtype))] -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp f] -[visit_id f] not free -=> - ;; ../../../../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) -[check_dims] Fnn f -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `TRUNC`_unop_] -[visit_exp ()] -[visit_exp f] -[visit_id f] -[visit_exp $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f)] -[visit_exp $sizenn((Fnn : Fnn <: numtype))] -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp f] -[visit_id f] not free -=> - ;; ../../../../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) -[check_dims] Fnn f -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `NEAREST`_unop_] -[visit_exp ()] -[visit_exp f] -[visit_id f] -[visit_exp $fnearest_($sizenn((Fnn : Fnn <: numtype)), f)] -[visit_exp $sizenn((Fnn : Fnn <: numtype))] -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp f] -[visit_id f] not free -=> - ;; ../../../../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) -[check_dims] Inn i_1 i_2 -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] -[visit_exp `ADD`_binop_] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp [$iadd_($sizenn((Inn : Inn <: numtype)), i_1, i_2)]] -[visit_exp $iadd_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] -[visit_exp $sizenn((Inn : Inn <: numtype))] -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] not free -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp i_2] -[visit_id i_2] not free -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `ADD`_binop_, i_1, i_2) = [$iadd_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] -[check_dims] Inn i_1 i_2 -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] -[visit_exp `SUB`_binop_] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp [$isub_($sizenn((Inn : Inn <: numtype)), i_1, i_2)]] -[visit_exp $isub_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] -[visit_exp $sizenn((Inn : Inn <: numtype))] -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] not free -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp i_2] -[visit_id i_2] not free -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `SUB`_binop_, i_1, i_2) = [$isub_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] -[check_dims] Inn i_1 i_2 -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] -[visit_exp `MUL`_binop_] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp [$imul_($sizenn((Inn : Inn <: numtype)), i_1, i_2)]] -[visit_exp $imul_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] -[visit_exp $sizenn((Inn : Inn <: numtype))] -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] not free -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp i_2] -[visit_id i_2] not free -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `MUL`_binop_, i_1, i_2) = [$imul_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] -[check_dims] Inn i_1 i_2 sx -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] -[visit_exp `DIV`_binop_(sx)] -[visit_exp (sx)] -[visit_exp sx] -[visit_id sx] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp lift($idiv_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2))] -[visit_exp $idiv_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2)] -[visit_exp $sizenn((Inn : Inn <: numtype))] -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] not free -[visit_exp sx] -[visit_id sx] not free -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp i_2] -[visit_id i_2] not free -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `DIV`_binop_(sx), i_1, i_2) = lift($idiv_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2)) -[check_dims] Inn i_1 i_2 sx -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] -[visit_exp `REM`_binop_(sx)] -[visit_exp (sx)] -[visit_exp sx] -[visit_id sx] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp lift($irem_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2))] -[visit_exp $irem_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2)] -[visit_exp $sizenn((Inn : Inn <: numtype))] -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] not free -[visit_exp sx] -[visit_id sx] not free -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp i_2] -[visit_id i_2] not free -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `REM`_binop_(sx), i_1, i_2) = lift($irem_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2)) -[check_dims] Inn i_1 i_2 -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] -[visit_exp `AND`_binop_] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp [$iand_($sizenn((Inn : Inn <: numtype)), i_1, i_2)]] -[visit_exp $iand_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] -[visit_exp $sizenn((Inn : Inn <: numtype))] -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] not free -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp i_2] -[visit_id i_2] not free -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `AND`_binop_, i_1, i_2) = [$iand_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] -[check_dims] Inn i_1 i_2 -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] -[visit_exp `OR`_binop_] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp [$ior_($sizenn((Inn : Inn <: numtype)), i_1, i_2)]] -[visit_exp $ior_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] -[visit_exp $sizenn((Inn : Inn <: numtype))] -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] not free -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp i_2] -[visit_id i_2] not free -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `OR`_binop_, i_1, i_2) = [$ior_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] -[check_dims] Inn i_1 i_2 -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] -[visit_exp `XOR`_binop_] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp [$ixor_($sizenn((Inn : Inn <: numtype)), i_1, i_2)]] -[visit_exp $ixor_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] -[visit_exp $sizenn((Inn : Inn <: numtype))] -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] not free -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp i_2] -[visit_id i_2] not free -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `XOR`_binop_, i_1, i_2) = [$ixor_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] -[check_dims] Inn i_1 i_2 -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] -[visit_exp `SHL`_binop_] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp [$ishl_($sizenn((Inn : Inn <: numtype)), i_1, `%`_u32(i_2!`%`_num_.0))]] -[visit_exp $ishl_($sizenn((Inn : Inn <: numtype)), i_1, `%`_u32(i_2!`%`_num_.0))] -[visit_exp $sizenn((Inn : Inn <: numtype))] -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] not free -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp `%`_u32(i_2!`%`_num_.0)] -[visit_exp (i_2!`%`_num_.0)] -[visit_exp i_2!`%`_num_.0] -[visit_exp i_2!`%`_num_] -[visit_exp i_2] -[visit_id i_2] not free -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `SHL`_binop_, i_1, i_2) = [$ishl_($sizenn((Inn : Inn <: numtype)), i_1, `%`_u32(i_2!`%`_num_.0))] -[check_dims] Inn i_1 i_2 sx -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] -[visit_exp `SHR`_binop_(sx)] -[visit_exp (sx)] -[visit_exp sx] -[visit_id sx] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp [$ishr_($sizenn((Inn : Inn <: numtype)), sx, i_1, `%`_u32(i_2!`%`_num_.0))]] -[visit_exp $ishr_($sizenn((Inn : Inn <: numtype)), sx, i_1, `%`_u32(i_2!`%`_num_.0))] -[visit_exp $sizenn((Inn : Inn <: numtype))] -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] not free -[visit_exp sx] -[visit_id sx] not free -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp `%`_u32(i_2!`%`_num_.0)] -[visit_exp (i_2!`%`_num_.0)] -[visit_exp i_2!`%`_num_.0] -[visit_exp i_2!`%`_num_] -[visit_exp i_2] -[visit_id i_2] not free -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `SHR`_binop_(sx), i_1, i_2) = [$ishr_($sizenn((Inn : Inn <: numtype)), sx, i_1, `%`_u32(i_2!`%`_num_.0))] -[check_dims] Inn i_1 i_2 -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] -[visit_exp `ROTL`_binop_] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp [$irotl_($sizenn((Inn : Inn <: numtype)), i_1, i_2)]] -[visit_exp $irotl_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] -[visit_exp $sizenn((Inn : Inn <: numtype))] -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] not free -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp i_2] -[visit_id i_2] not free -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `ROTL`_binop_, i_1, i_2) = [$irotl_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] -[check_dims] Inn i_1 i_2 -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] -[visit_exp `ROTR`_binop_] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp [$irotr_($sizenn((Inn : Inn <: numtype)), i_1, i_2)]] -[visit_exp $irotr_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] -[visit_exp $sizenn((Inn : Inn <: numtype))] -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] not free -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp i_2] -[visit_id i_2] not free -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `ROTR`_binop_, i_1, i_2) = [$irotr_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] -[check_dims] Fnn f_1 f_2 -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `ADD`_binop_] -[visit_exp ()] -[visit_exp f_1] -[visit_id f_1] -[visit_exp f_2] -[visit_id f_2] -[visit_exp $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)] -[visit_exp $sizenn((Fnn : Fnn <: numtype))] -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp f_1] -[visit_id f_1] not free -[visit_exp f_2] -[visit_id f_2] not free -=> - ;; ../../../../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) -[check_dims] Fnn f_1 f_2 -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `SUB`_binop_] -[visit_exp ()] -[visit_exp f_1] -[visit_id f_1] -[visit_exp f_2] -[visit_id f_2] -[visit_exp $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)] -[visit_exp $sizenn((Fnn : Fnn <: numtype))] -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp f_1] -[visit_id f_1] not free -[visit_exp f_2] -[visit_id f_2] not free -=> - ;; ../../../../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) -[check_dims] Fnn f_1 f_2 -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `MUL`_binop_] -[visit_exp ()] -[visit_exp f_1] -[visit_id f_1] -[visit_exp f_2] -[visit_id f_2] -[visit_exp $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)] -[visit_exp $sizenn((Fnn : Fnn <: numtype))] -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp f_1] -[visit_id f_1] not free -[visit_exp f_2] -[visit_id f_2] not free -=> - ;; ../../../../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) -[check_dims] Fnn f_1 f_2 -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `DIV`_binop_] -[visit_exp ()] -[visit_exp f_1] -[visit_id f_1] -[visit_exp f_2] -[visit_id f_2] -[visit_exp $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)] -[visit_exp $sizenn((Fnn : Fnn <: numtype))] -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp f_1] -[visit_id f_1] not free -[visit_exp f_2] -[visit_id f_2] not free -=> - ;; ../../../../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) -[check_dims] Fnn f_1 f_2 -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `MIN`_binop_] -[visit_exp ()] -[visit_exp f_1] -[visit_id f_1] -[visit_exp f_2] -[visit_id f_2] -[visit_exp $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)] -[visit_exp $sizenn((Fnn : Fnn <: numtype))] -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp f_1] -[visit_id f_1] not free -[visit_exp f_2] -[visit_id f_2] not free -=> - ;; ../../../../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) -[check_dims] Fnn f_1 f_2 -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `MAX`_binop_] -[visit_exp ()] -[visit_exp f_1] -[visit_id f_1] -[visit_exp f_2] -[visit_id f_2] -[visit_exp $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)] -[visit_exp $sizenn((Fnn : Fnn <: numtype))] -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp f_1] -[visit_id f_1] not free -[visit_exp f_2] -[visit_id f_2] not free -=> - ;; ../../../../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) -[check_dims] Fnn f_1 f_2 -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `COPYSIGN`_binop_] -[visit_exp ()] -[visit_exp f_1] -[visit_id f_1] -[visit_exp f_2] -[visit_id f_2] -[visit_exp $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)] -[visit_exp $sizenn((Fnn : Fnn <: numtype))] -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp f_1] -[visit_id f_1] not free -[visit_exp f_2] -[visit_id f_2] not free -=> - ;; ../../../../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) -[check_dims] Inn i -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] -[visit_exp `EQZ`_testop_] -[visit_exp ()] -[visit_exp i] -[visit_id i] -[visit_exp $ieqz_($sizenn((Inn : Inn <: numtype)), i)] -[visit_exp $sizenn((Inn : Inn <: numtype))] -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] not free -[visit_exp i] -[visit_id i] not free -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $testop_{Inn : Inn, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `EQZ`_testop_, i) = $ieqz_($sizenn((Inn : Inn <: numtype)), i) -[check_dims] Inn i_1 i_2 -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] -[visit_exp `EQ`_relop_] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp $ieq_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] -[visit_exp $sizenn((Inn : Inn <: numtype))] -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] not free -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp i_2] -[visit_id i_2] not free -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `EQ`_relop_, i_1, i_2) = $ieq_($sizenn((Inn : Inn <: numtype)), i_1, i_2) -[check_dims] Inn i_1 i_2 -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] -[visit_exp `NE`_relop_] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp $ine_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] -[visit_exp $sizenn((Inn : Inn <: numtype))] -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] not free -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp i_2] -[visit_id i_2] not free -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `NE`_relop_, i_1, i_2) = $ine_($sizenn((Inn : Inn <: numtype)), i_1, i_2) -[check_dims] Inn i_1 i_2 sx -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] -[visit_exp `LT`_relop_(sx)] -[visit_exp (sx)] -[visit_exp sx] -[visit_id sx] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp $ilt_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2)] -[visit_exp $sizenn((Inn : Inn <: numtype))] -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] not free -[visit_exp sx] -[visit_id sx] not free -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp i_2] -[visit_id i_2] not free -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `LT`_relop_(sx), i_1, i_2) = $ilt_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) -[check_dims] Inn i_1 i_2 sx -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] -[visit_exp `GT`_relop_(sx)] -[visit_exp (sx)] -[visit_exp sx] -[visit_id sx] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp $igt_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2)] -[visit_exp $sizenn((Inn : Inn <: numtype))] -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] not free -[visit_exp sx] -[visit_id sx] not free -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp i_2] -[visit_id i_2] not free -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `GT`_relop_(sx), i_1, i_2) = $igt_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) -[check_dims] Inn i_1 i_2 sx -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] -[visit_exp `LE`_relop_(sx)] -[visit_exp (sx)] -[visit_exp sx] -[visit_id sx] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp $ile_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2)] -[visit_exp $sizenn((Inn : Inn <: numtype))] -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] not free -[visit_exp sx] -[visit_id sx] not free -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp i_2] -[visit_id i_2] not free -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `LE`_relop_(sx), i_1, i_2) = $ile_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) -[check_dims] Inn i_1 i_2 sx -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] -[visit_exp `GE`_relop_(sx)] -[visit_exp (sx)] -[visit_exp sx] -[visit_id sx] -[visit_exp i_1] -[visit_id i_1] -[visit_exp i_2] -[visit_id i_2] -[visit_exp $ige_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2)] -[visit_exp $sizenn((Inn : Inn <: numtype))] -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] not free -[visit_exp sx] -[visit_id sx] not free -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp i_2] -[visit_id i_2] not free -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `GE`_relop_(sx), i_1, i_2) = $ige_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) -[check_dims] Fnn f_1 f_2 -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `EQ`_relop_] -[visit_exp ()] -[visit_exp f_1] -[visit_id f_1] -[visit_exp f_2] -[visit_id f_2] -[visit_exp $feq_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)] -[visit_exp $sizenn((Fnn : Fnn <: numtype))] -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp f_1] -[visit_id f_1] not free -[visit_exp f_2] -[visit_id f_2] not free -=> - ;; ../../../../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) -[check_dims] Fnn f_1 f_2 -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `NE`_relop_] -[visit_exp ()] -[visit_exp f_1] -[visit_id f_1] -[visit_exp f_2] -[visit_id f_2] -[visit_exp $fne_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)] -[visit_exp $sizenn((Fnn : Fnn <: numtype))] -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp f_1] -[visit_id f_1] not free -[visit_exp f_2] -[visit_id f_2] not free -=> - ;; ../../../../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) -[check_dims] Fnn f_1 f_2 -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `LT`_relop_] -[visit_exp ()] -[visit_exp f_1] -[visit_id f_1] -[visit_exp f_2] -[visit_id f_2] -[visit_exp $flt_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)] -[visit_exp $sizenn((Fnn : Fnn <: numtype))] -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp f_1] -[visit_id f_1] not free -[visit_exp f_2] -[visit_id f_2] not free -=> - ;; ../../../../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) -[check_dims] Fnn f_1 f_2 -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `GT`_relop_] -[visit_exp ()] -[visit_exp f_1] -[visit_id f_1] -[visit_exp f_2] -[visit_id f_2] -[visit_exp $fgt_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)] -[visit_exp $sizenn((Fnn : Fnn <: numtype))] -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp f_1] -[visit_id f_1] not free -[visit_exp f_2] -[visit_id f_2] not free -=> - ;; ../../../../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) -[check_dims] Fnn f_1 f_2 -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `LE`_relop_] -[visit_exp ()] -[visit_exp f_1] -[visit_id f_1] -[visit_exp f_2] -[visit_id f_2] -[visit_exp $fle_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)] -[visit_exp $sizenn((Fnn : Fnn <: numtype))] -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp f_1] -[visit_id f_1] not free -[visit_exp f_2] -[visit_id f_2] not free -=> - ;; ../../../../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) -[check_dims] Fnn f_1 f_2 -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `GE`_relop_] -[visit_exp ()] -[visit_exp f_1] -[visit_id f_1] -[visit_exp f_2] -[visit_id f_2] -[visit_exp $fge_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2)] -[visit_exp $sizenn((Fnn : Fnn <: numtype))] -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp f_1] -[visit_id f_1] not free -[visit_exp f_2] -[visit_id f_2] not free -=> - ;; ../../../../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) -[check_dims] Inn_1 Inn_2 i_1 sx -[visit_exp (Inn_1 : Inn <: numtype)] -[visit_exp Inn_1] -[visit_id Inn_1] -[visit_exp (Inn_2 : Inn <: numtype)] -[visit_exp Inn_2] -[visit_id Inn_2] -[visit_exp `EXTEND`_cvtop__(sx)] -[visit_exp (sx)] -[visit_exp sx] -[visit_id sx] -[visit_exp i_1] -[visit_id i_1] -[visit_exp [$extend__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, i_1)]] -[visit_exp $extend__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, i_1)] -[visit_exp $sizenn1((Inn_1 : Inn <: numtype))] -[visit_exp (Inn_1 : Inn <: numtype)] -[visit_exp Inn_1] -[visit_id Inn_1] not free -[visit_exp $sizenn2((Inn_2 : Inn <: numtype))] -[visit_exp (Inn_2 : Inn <: numtype)] -[visit_exp Inn_2] -[visit_id Inn_2] not free -[visit_exp sx] -[visit_id sx] not free -[visit_exp i_1] -[visit_id i_1] not free -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{Inn_1 : Inn, Inn_2 : Inn, sx : sx, i_1 : num_((Inn_1 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Inn_2 : Inn <: numtype), `EXTEND`_cvtop__(sx), i_1) = [$extend__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, i_1)] -[check_dims] Inn_1 Inn_2 i_1 -[visit_exp (Inn_1 : Inn <: numtype)] -[visit_exp Inn_1] -[visit_id Inn_1] -[visit_exp (Inn_2 : Inn <: numtype)] -[visit_exp Inn_2] -[visit_id Inn_2] -[visit_exp `WRAP`_cvtop__] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp [$wrap__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), i_1)]] -[visit_exp $wrap__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), i_1)] -[visit_exp $sizenn1((Inn_1 : Inn <: numtype))] -[visit_exp (Inn_1 : Inn <: numtype)] -[visit_exp Inn_1] -[visit_id Inn_1] not free -[visit_exp $sizenn2((Inn_2 : Inn <: numtype))] -[visit_exp (Inn_2 : Inn <: numtype)] -[visit_exp Inn_2] -[visit_id Inn_2] not free -[visit_exp i_1] -[visit_id i_1] not free -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{Inn_1 : Inn, Inn_2 : Inn, i_1 : num_((Inn_1 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Inn_2 : Inn <: numtype), `WRAP`_cvtop__, i_1) = [$wrap__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), i_1)] -[check_dims] Fnn_1 Inn_2 f_1 sx -[visit_exp (Fnn_1 : Fnn <: numtype)] -[visit_exp Fnn_1] -[visit_id Fnn_1] -[visit_exp (Inn_2 : Inn <: numtype)] -[visit_exp Inn_2] -[visit_id Inn_2] -[visit_exp `TRUNC`_cvtop__(sx)] -[visit_exp (sx)] -[visit_exp sx] -[visit_id sx] -[visit_exp f_1] -[visit_id f_1] -[visit_exp lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, f_1))] -[visit_exp $trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, f_1)] -[visit_exp $sizenn1((Fnn_1 : Fnn <: numtype))] -[visit_exp (Fnn_1 : Fnn <: numtype)] -[visit_exp Fnn_1] -[visit_id Fnn_1] not free -[visit_exp $sizenn2((Inn_2 : Inn <: numtype))] -[visit_exp (Inn_2 : Inn <: numtype)] -[visit_exp Inn_2] -[visit_id Inn_2] not free -[visit_exp sx] -[visit_id sx] not free -[visit_exp f_1] -[visit_id f_1] not free -=> - ;; ../../../../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 : Inn <: numtype), `TRUNC`_cvtop__(sx), f_1) = lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, f_1)) -[check_dims] Fnn_1 Inn_2 f_1 sx -[visit_exp (Fnn_1 : Fnn <: numtype)] -[visit_exp Fnn_1] -[visit_id Fnn_1] -[visit_exp (Inn_2 : Inn <: numtype)] -[visit_exp Inn_2] -[visit_id Inn_2] -[visit_exp `TRUNC_SAT`_cvtop__(sx)] -[visit_exp (sx)] -[visit_exp sx] -[visit_id sx] -[visit_exp f_1] -[visit_id f_1] -[visit_exp lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, f_1))] -[visit_exp $trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, f_1)] -[visit_exp $sizenn1((Fnn_1 : Fnn <: numtype))] -[visit_exp (Fnn_1 : Fnn <: numtype)] -[visit_exp Fnn_1] -[visit_id Fnn_1] not free -[visit_exp $sizenn2((Inn_2 : Inn <: numtype))] -[visit_exp (Inn_2 : Inn <: numtype)] -[visit_exp Inn_2] -[visit_id Inn_2] not free -[visit_exp sx] -[visit_id sx] not free -[visit_exp f_1] -[visit_id f_1] not free -=> - ;; ../../../../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 : Inn <: numtype), `TRUNC_SAT`_cvtop__(sx), f_1) = lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, f_1)) -[check_dims] Fnn_2 Inn_1 i_1 sx -[visit_exp (Inn_1 : Inn <: numtype)] -[visit_exp Inn_1] -[visit_id Inn_1] -[visit_exp (Fnn_2 : Fnn <: numtype)] -[visit_exp Fnn_2] -[visit_id Fnn_2] -[visit_exp `CONVERT`_cvtop__(sx)] -[visit_exp (sx)] -[visit_exp sx] -[visit_id sx] -[visit_exp i_1] -[visit_id i_1] -[visit_exp [$convert__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1)]] -[visit_exp $convert__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1)] -[visit_exp $sizenn1((Inn_1 : Inn <: numtype))] -[visit_exp (Inn_1 : Inn <: numtype)] -[visit_exp Inn_1] -[visit_id Inn_1] not free -[visit_exp $sizenn2((Fnn_2 : Fnn <: numtype))] -[visit_exp (Fnn_2 : Fnn <: numtype)] -[visit_exp Fnn_2] -[visit_id Fnn_2] not free -[visit_exp sx] -[visit_id sx] not free -[visit_exp i_1] -[visit_id i_1] not free -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{Inn_1 : Inn, Fnn_2 : Fnn, sx : sx, i_1 : num_((Inn_1 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype), `CONVERT`_cvtop__(sx), i_1) = [$convert__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1)] -[check_dims] Fnn_1 Fnn_2 f_1 -[visit_exp (Fnn_1 : Fnn <: numtype)] -[visit_exp Fnn_1] -[visit_id Fnn_1] -[visit_exp (Fnn_2 : Fnn <: numtype)] -[visit_exp Fnn_2] -[visit_id Fnn_2] -[visit_exp `PROMOTE`_cvtop__] -[visit_exp ()] -[visit_exp f_1] -[visit_id f_1] -[visit_exp $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)] -[visit_exp $sizenn1((Fnn_1 : Fnn <: numtype))] -[visit_exp (Fnn_1 : Fnn <: numtype)] -[visit_exp Fnn_1] -[visit_id Fnn_1] not free -[visit_exp $sizenn2((Fnn_2 : Fnn <: numtype))] -[visit_exp (Fnn_2 : Fnn <: numtype)] -[visit_exp Fnn_2] -[visit_id Fnn_2] not free -[visit_exp f_1] -[visit_id f_1] not free -=> - ;; ../../../../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) -[check_dims] Fnn_1 Fnn_2 f_1 -[visit_exp (Fnn_1 : Fnn <: numtype)] -[visit_exp Fnn_1] -[visit_id Fnn_1] -[visit_exp (Fnn_2 : Fnn <: numtype)] -[visit_exp Fnn_2] -[visit_id Fnn_2] -[visit_exp `DEMOTE`_cvtop__] -[visit_exp ()] -[visit_exp f_1] -[visit_id f_1] -[visit_exp $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1)] -[visit_exp $sizenn1((Fnn_1 : Fnn <: numtype))] -[visit_exp (Fnn_1 : Fnn <: numtype)] -[visit_exp Fnn_1] -[visit_id Fnn_1] not free -[visit_exp $sizenn2((Fnn_2 : Fnn <: numtype))] -[visit_exp (Fnn_2 : Fnn <: numtype)] -[visit_exp Fnn_2] -[visit_id Fnn_2] not free -[visit_exp f_1] -[visit_id f_1] not free -=> - ;; ../../../../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) -[check_dims] Fnn_2 Inn_1 i_1 -[visit_exp (Inn_1 : Inn <: numtype)] -[visit_exp Inn_1] -[visit_id Inn_1] -[visit_exp (Fnn_2 : Fnn <: numtype)] -[visit_exp Fnn_2] -[visit_id Fnn_2] -[visit_exp `REINTERPRET`_cvtop__] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp [$reinterpret__((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype), i_1)]] -[visit_exp $reinterpret__((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype), i_1)] -[visit_exp (Inn_1 : Inn <: numtype)] -[visit_exp Inn_1] -[visit_id Inn_1] not free -[visit_exp (Fnn_2 : Fnn <: numtype)] -[visit_exp Fnn_2] -[visit_id Fnn_2] not free -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp ($size((Inn_1 : Inn <: numtype)) = $size((Fnn_2 : Fnn <: numtype)))] -[visit_exp $size((Inn_1 : Inn <: numtype))] -[visit_exp (Inn_1 : Inn <: numtype)] -[visit_exp Inn_1] -[visit_id Inn_1] not free -[visit_exp $size((Fnn_2 : Fnn <: numtype))] -[visit_exp (Fnn_2 : Fnn <: numtype)] -[visit_exp Fnn_2] -[visit_id Fnn_2] not free -=> - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $cvtop__{Inn_1 : Inn, Fnn_2 : Fnn, i_1 : num_((Inn_1 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype), `REINTERPRET`_cvtop__, i_1) = [$reinterpret__((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype), i_1)] - -- if ($size((Inn_1 : Inn <: numtype)) = $size((Fnn_2 : Fnn <: numtype))) -[check_dims] Fnn_1 Inn_2 f_1 -[visit_exp (Fnn_1 : Fnn <: numtype)] -[visit_exp Fnn_1] -[visit_id Fnn_1] -[visit_exp (Inn_2 : Inn <: numtype)] -[visit_exp Inn_2] -[visit_id Inn_2] -[visit_exp `REINTERPRET`_cvtop__] -[visit_exp ()] -[visit_exp f_1] -[visit_id f_1] -[visit_exp [$reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), f_1)]] -[visit_exp $reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), f_1)] -[visit_exp (Fnn_1 : Fnn <: numtype)] -[visit_exp Fnn_1] -[visit_id Fnn_1] not free -[visit_exp (Inn_2 : Inn <: numtype)] -[visit_exp Inn_2] -[visit_id Inn_2] not free -[visit_exp f_1] -[visit_id f_1] not free -[visit_exp ($size((Fnn_1 : Fnn <: numtype)) = $size((Inn_2 : Inn <: numtype)))] -[visit_exp $size((Fnn_1 : Fnn <: numtype))] -[visit_exp (Fnn_1 : Fnn <: numtype)] -[visit_exp Fnn_1] -[visit_id Fnn_1] not free -[visit_exp $size((Inn_2 : Inn <: numtype))] -[visit_exp (Inn_2 : Inn <: numtype)] -[visit_exp Inn_2] -[visit_id Inn_2] not free -=> - ;; ../../../../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 : Inn <: numtype), `REINTERPRET`_cvtop__, f_1) = [$reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), f_1)] - -- if ($size((Fnn_1 : Fnn <: numtype)) = $size((Inn_2 : Inn <: numtype))) -[check_dims] shape vec_ -DecD lanes_(shape : shape, vec_ : vec_(`V128`_Vnn)) : lane_($lanetype(shape))* -[visit_id shape] not free -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_exp $lanetype(shape)] -[visit_exp shape] -[visit_id shape] not free -[check_dims] _ shape -DecD inv_lanes_(shape : shape, lane_($lanetype(shape))*) : vec_(`V128`_Vnn) -[visit_id shape] not free -[visit_id _] not free -[visit_exp $lanetype(shape)] -[visit_exp shape] -[visit_id shape] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[check_dims] shape_1 shape_2 vcvtop__ -DecD zeroop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2)) : zero? -[visit_id shape_1] not free -[visit_id shape_2] not free -[visit_id vcvtop__] not free -[visit_exp shape_1] -[visit_id shape_1] not free -[visit_exp shape_2] -[visit_id shape_2] not free -[check_dims] Jnn_1 Jnn_2 M_1 M_2 half sx -[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] -[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] -[visit_exp `EXTEND`_vcvtop__(half, sx)] -[visit_exp (half, sx)] -[visit_exp half] -[visit_id half] -[visit_exp sx] -[visit_id sx] -[visit_exp ?()] -=> - ;; ../../../../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)) = ?() -[check_dims] Fnn_2 Jnn_1 M_1 M_2 half sx -[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] -[visit_exp `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))] -[visit_exp ((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))] -[visit_exp (Fnn_2 : Fnn <: lanetype)] -[visit_exp Fnn_2] -[visit_id Fnn_2] -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] -[visit_exp `CONVERT`_vcvtop__(half?{half <- `half?`}, sx)] -[visit_exp (half?{half <- `half?`}, sx)] -[visit_exp half?{half <- `half?`}] -[scope_enter half] -[visit_exp half] -[visit_id half] not free -[visit_id half] not free -[scope_exit half] -[visit_exp `half?`] -[visit_id half?] no dims -[visit_id half?] -[visit_exp sx] -[visit_id sx] -[visit_exp ?()] -=> - ;; ../../../../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)) = ?() -[check_dims] Fnn_1 Jnn_2 M_1 M_2 sx zero -[visit_exp `%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] -[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] -[visit_exp (Fnn_1 : Fnn <: lanetype)] -[visit_exp Fnn_1] -[visit_id Fnn_1] -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] -[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] -[visit_exp `TRUNC_SAT`_vcvtop__(sx, zero?{zero <- `zero?`})] -[visit_exp (sx, zero?{zero <- `zero?`})] -[visit_exp sx] -[visit_id sx] -[visit_exp zero?{zero <- `zero?`}] -[scope_enter zero] -[visit_exp zero] -[visit_id zero] not free -[visit_id zero] not free -[scope_exit zero] -[visit_exp `zero?`] -[visit_id zero?] no dims -[visit_id zero?] -[visit_exp zero?{zero <- `zero?`}] -[scope_enter zero] -[visit_exp zero] -[visit_id zero] not free -[visit_id zero] not free -[scope_exit zero] -[visit_exp `zero?`] -[visit_id zero?] not free -[visit_id zero?] no dims -=> - ;; ../../../../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?`} -[check_dims] Fnn_1 Jnn_2 M_1 M_2 sx zero -[visit_exp `%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] -[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] -[visit_exp (Fnn_1 : Fnn <: lanetype)] -[visit_exp Fnn_1] -[visit_id Fnn_1] -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] -[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] -[visit_exp `RELAXED_TRUNC`_vcvtop__(sx, zero?{zero <- `zero?`})] -[visit_exp (sx, zero?{zero <- `zero?`})] -[visit_exp sx] -[visit_id sx] -[visit_exp zero?{zero <- `zero?`}] -[scope_enter zero] -[visit_exp zero] -[visit_id zero] not free -[visit_id zero] not free -[scope_exit zero] -[visit_exp `zero?`] -[visit_id zero?] no dims -[visit_id zero?] -[visit_exp zero?{zero <- `zero?`}] -[scope_enter zero] -[visit_exp zero] -[visit_id zero] not free -[visit_id zero] not free -[scope_exit zero] -[visit_exp `zero?`] -[visit_id zero?] not free -[visit_id zero?] no dims -=> - ;; ../../../../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?`} -[check_dims] Fnn_1 Fnn_2 M_1 M_2 zero -[visit_exp `%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] -[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] -[visit_exp (Fnn_1 : Fnn <: lanetype)] -[visit_exp Fnn_1] -[visit_id Fnn_1] -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] -[visit_exp `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))] -[visit_exp ((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))] -[visit_exp (Fnn_2 : Fnn <: lanetype)] -[visit_exp Fnn_2] -[visit_id Fnn_2] -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] -[visit_exp `DEMOTE`_vcvtop__(zero)] -[visit_exp (zero)] -[visit_exp zero] -[visit_id zero] -[visit_exp ?(zero)] -[visit_exp zero] -[visit_id zero] not free -=> - ;; ../../../../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) -[check_dims] Fnn_1 Fnn_2 M_1 M_2 -[visit_exp `%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] -[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] -[visit_exp (Fnn_1 : Fnn <: lanetype)] -[visit_exp Fnn_1] -[visit_id Fnn_1] -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] -[visit_exp `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))] -[visit_exp ((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))] -[visit_exp (Fnn_2 : Fnn <: lanetype)] -[visit_exp Fnn_2] -[visit_id Fnn_2] -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] -[visit_exp `PROMOTELOW`_vcvtop__] -[visit_exp ()] -[visit_exp ?()] -=> - ;; ../../../../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__) = ?() -[check_dims] shape_1 shape_2 vcvtop__ -DecD halfop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2)) : half? -[visit_id shape_1] not free -[visit_id shape_2] not free -[visit_id vcvtop__] not free -[visit_exp shape_1] -[visit_id shape_1] not free -[visit_exp shape_2] -[visit_id shape_2] not free -[check_dims] Jnn_1 Jnn_2 M_1 M_2 half sx -[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] -[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] -[visit_exp `EXTEND`_vcvtop__(half, sx)] -[visit_exp (half, sx)] -[visit_exp half] -[visit_id half] -[visit_exp sx] -[visit_id sx] -[visit_exp ?(half)] -[visit_exp half] -[visit_id half] not free -=> - ;; ../../../../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) -[check_dims] Fnn_2 Jnn_1 M_1 M_2 half sx -[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] -[visit_exp `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))] -[visit_exp ((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))] -[visit_exp (Fnn_2 : Fnn <: lanetype)] -[visit_exp Fnn_2] -[visit_id Fnn_2] -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] -[visit_exp `CONVERT`_vcvtop__(half?{half <- `half?`}, sx)] -[visit_exp (half?{half <- `half?`}, sx)] -[visit_exp half?{half <- `half?`}] -[scope_enter half] -[visit_exp half] -[visit_id half] not free -[visit_id half] not free -[scope_exit half] -[visit_exp `half?`] -[visit_id half?] no dims -[visit_id half?] -[visit_exp sx] -[visit_id sx] -[visit_exp half?{half <- `half?`}] -[scope_enter half] -[visit_exp half] -[visit_id half] not free -[visit_id half] not free -[scope_exit half] -[visit_exp `half?`] -[visit_id half?] not free -[visit_id half?] no dims -=> - ;; ../../../../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?`} -[check_dims] Fnn_1 Jnn_2 M_1 M_2 sx zero -[visit_exp `%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] -[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] -[visit_exp (Fnn_1 : Fnn <: lanetype)] -[visit_exp Fnn_1] -[visit_id Fnn_1] -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] -[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] -[visit_exp `TRUNC_SAT`_vcvtop__(sx, zero?{zero <- `zero?`})] -[visit_exp (sx, zero?{zero <- `zero?`})] -[visit_exp sx] -[visit_id sx] -[visit_exp zero?{zero <- `zero?`}] -[scope_enter zero] -[visit_exp zero] -[visit_id zero] not free -[visit_id zero] not free -[scope_exit zero] -[visit_exp `zero?`] -[visit_id zero?] no dims -[visit_id zero?] -[visit_exp ?()] -=> - ;; ../../../../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?`})) = ?() -[check_dims] Fnn_1 Jnn_2 M_1 M_2 sx zero -[visit_exp `%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] -[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] -[visit_exp (Fnn_1 : Fnn <: lanetype)] -[visit_exp Fnn_1] -[visit_id Fnn_1] -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] -[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] -[visit_exp `RELAXED_TRUNC`_vcvtop__(sx, zero?{zero <- `zero?`})] -[visit_exp (sx, zero?{zero <- `zero?`})] -[visit_exp sx] -[visit_id sx] -[visit_exp zero?{zero <- `zero?`}] -[scope_enter zero] -[visit_exp zero] -[visit_id zero] not free -[visit_id zero] not free -[scope_exit zero] -[visit_exp `zero?`] -[visit_id zero?] no dims -[visit_id zero?] -[visit_exp ?()] -=> - ;; ../../../../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?`})) = ?() -[check_dims] Fnn_1 Fnn_2 M_1 M_2 zero -[visit_exp `%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] -[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] -[visit_exp (Fnn_1 : Fnn <: lanetype)] -[visit_exp Fnn_1] -[visit_id Fnn_1] -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] -[visit_exp `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))] -[visit_exp ((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))] -[visit_exp (Fnn_2 : Fnn <: lanetype)] -[visit_exp Fnn_2] -[visit_id Fnn_2] -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] -[visit_exp `DEMOTE`_vcvtop__(zero)] -[visit_exp (zero)] -[visit_exp zero] -[visit_id zero] -[visit_exp ?()] -=> - ;; ../../../../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)) = ?() -[check_dims] Fnn_1 Fnn_2 M_1 M_2 -[visit_exp `%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] -[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] -[visit_exp (Fnn_1 : Fnn <: lanetype)] -[visit_exp Fnn_1] -[visit_id Fnn_1] -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] -[visit_exp `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))] -[visit_exp ((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))] -[visit_exp (Fnn_2 : Fnn <: lanetype)] -[visit_exp Fnn_2] -[visit_id Fnn_2] -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] -[visit_exp `PROMOTELOW`_vcvtop__] -[visit_exp ()] -[visit_exp ?(`LOW`_half)] -[visit_exp `LOW`_half] -[visit_exp ()] -=> - ;; ../../../../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) -[check_dims] half nat -DecD half(half : half, nat : nat, nat : nat) : nat -[visit_id half] not free -[visit_id nat] not free -[visit_id nat] not free -[check_dims] i j -[visit_exp `LOW`_half] -[visit_exp ()] -[visit_exp i] -[visit_id i] -[visit_exp j] -[visit_id j] -[visit_exp i] -[visit_id i] not free -=> - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $half{i : nat, j : nat}(`LOW`_half, i, j) = i -[check_dims] i j -[visit_exp `HIGH`_half] -[visit_exp ()] -[visit_exp i] -[visit_id i] -[visit_exp j] -[visit_id j] -[visit_exp j] -[visit_id j] not free -=> - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $half{i : nat, j : nat}(`HIGH`_half, i, j) = j -[check_dims] N _ iN -DecD iswizzle_lane_(N : N, iN(N)*, iN : iN(N)) : iN(N) -[visit_id N] not free -[visit_id _] not free -[visit_exp N] -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N _ iN -DecD irelaxed_swizzle_lane_(N : N, iN(N)*, iN : iN(N)) : iN(N) -[visit_id N] not free -[visit_id _] not free -[visit_exp N] -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N c i -[visit_exp N] -[visit_id N] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] no dims -[visit_id c*] -[visit_exp i] -[visit_id i] -[visit_exp c*{c <- `c*`}[i!`%`_iN.0]] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[visit_exp i!`%`_iN.0] -[visit_exp i!`%`_iN] -[visit_exp i] -[visit_id i] not free -[visit_exp (i!`%`_iN.0 < |c*{c <- `c*`}|)] -[visit_exp i!`%`_iN.0] -[visit_exp i!`%`_iN] -[visit_exp i] -[visit_id i] not free -[visit_exp |c*{c <- `c*`}|] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -=> - ;; ../../../../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) = c*{c <- `c*`}[i!`%`_iN.0] - -- if (i!`%`_iN.0 < |c*{c <- `c*`}|) -[check_dims] N c i -[visit_exp N] -[visit_id N] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] no dims -[visit_id c*] -[visit_exp i] -[visit_id i] -[visit_exp `%`_iN(0)] -[visit_exp (0)] -[visit_exp 0] -=> - ;; ../../../../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) = `%`_iN(0) - -- otherwise -[check_dims] N c i -[visit_exp N] -[visit_id N] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] no dims -[visit_id c*] -[visit_exp i] -[visit_id i] -[visit_exp c*{c <- `c*`}[i!`%`_iN.0]] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[visit_exp i!`%`_iN.0] -[visit_exp i!`%`_iN] -[visit_exp i] -[visit_id i] not free -[visit_exp (i!`%`_iN.0 < |c*{c <- `c*`}|)] -[visit_exp i!`%`_iN.0] -[visit_exp i!`%`_iN] -[visit_exp i] -[visit_id i] not free -[visit_exp |c*{c <- `c*`}|] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -=> - ;; ../../../../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) = c*{c <- `c*`}[i!`%`_iN.0] - -- if (i!`%`_iN.0 < |c*{c <- `c*`}|) -[check_dims] N c i -[visit_exp N] -[visit_id N] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] no dims -[visit_id c*] -[visit_exp i] -[visit_id i] -[visit_exp `%`_iN(0)] -[visit_exp (0)] -[visit_exp 0] -[visit_exp ($signed_(N, i!`%`_iN.0) < (0 : nat <:> int))] -[visit_exp $signed_(N, i!`%`_iN.0)] -[visit_exp N] -[visit_id N] not free -[visit_exp i!`%`_iN.0] -[visit_exp i!`%`_iN] -[visit_exp i] -[visit_id i] not free -[visit_exp (0 : nat <:> int)] -[visit_exp 0] -=> - ;; ../../../../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) = `%`_iN(0) - -- if ($signed_(N, i!`%`_iN.0) < (0 : nat <:> int)) -[check_dims] N c i -[visit_exp N] -[visit_id N] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] no dims -[visit_id c*] -[visit_exp i] -[visit_id i] -[visit_exp $relaxed2($R_swizzle, syntax iN(N), `%`_iN(0), c*{c <- `c*`}[(i!`%`_iN.0 \ |c*{c <- `c*`}|)])] -[visit_exp $R_swizzle] -[visit_exp N] -[visit_id N] not free -[visit_exp `%`_iN(0)] -[visit_exp (0)] -[visit_exp 0] -[visit_exp c*{c <- `c*`}[(i!`%`_iN.0 \ |c*{c <- `c*`}|)]] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[visit_exp (i!`%`_iN.0 \ |c*{c <- `c*`}|)] -[visit_exp i!`%`_iN.0] -[visit_exp i!`%`_iN] -[visit_exp i] -[visit_id i] not free -[visit_exp |c*{c <- `c*`}|] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -=> - ;; ../../../../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) = $relaxed2($R_swizzle, syntax iN(N), `%`_iN(0), c*{c <- `c*`}[(i!`%`_iN.0 \ |c*{c <- `c*`}|)]) - -- otherwise -[check_dims] N iN shape vec_ -DecD ivunop_(shape : shape, def $f_(N : N, iN : iN(N)) : iN(N), vec_ : vec_(`V128`_Vnn)) : vec_(`V128`_Vnn)* -[visit_id shape] not free -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_exp `V128`_Vnn] -[visit_exp ()] -[check_dims] N fN shape vec_ -DecD fvunop_(shape : shape, def $f_(N : N, fN : fN(N)) : fN(N)*, vec_ : vec_(`V128`_Vnn)) : vec_(`V128`_Vnn)* -[visit_id shape] not free -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_exp `V128`_Vnn] -[visit_exp ()] -[check_dims] N iN shape vec_ -DecD 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)* -[visit_id shape] not free -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_exp `V128`_Vnn] -[visit_exp ()] -[check_dims] N iN shape sx vec_ -DecD 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)* -[visit_id shape] not free -[visit_id N] not free -[visit_id sx] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[visit_id sx] not free -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_exp `V128`_Vnn] -[visit_exp ()] -[check_dims] N iN shape sx vec_ -DecD 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)* -[visit_id shape] not free -[visit_id N] not free -[visit_id sx] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[visit_id sx] not free -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_exp `V128`_Vnn] -[visit_exp ()] -[check_dims] N fN shape vec_ -DecD 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)* -[visit_id shape] not free -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_exp `V128`_Vnn] -[visit_exp ()] -[check_dims] N iN shape vec_ -DecD 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)* -[visit_id shape] not free -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_exp `V128`_Vnn] -[visit_exp ()] -[check_dims] N fN shape vec_ -DecD 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)* -[visit_id shape] not free -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_exp `V128`_Vnn] -[visit_exp ()] -[check_dims] N iN shape vec_ -DecD 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) -[visit_id shape] not free -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_exp `V128`_Vnn] -[visit_exp ()] -[check_dims] N iN shape sx vec_ -DecD 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) -[visit_id shape] not free -[visit_id N] not free -[visit_id sx] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_id sx] not free -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_exp `V128`_Vnn] -[visit_exp ()] -[check_dims] N fN shape vec_ -DecD 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) -[visit_id shape] not free -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_id fN] not free -[visit_exp N] -[visit_id N] not free -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_exp `V128`_Vnn] -[visit_exp ()] -[check_dims] N iN shape u32 vec_ -DecD ivshiftop_(shape : shape, def $f_(N : N, iN : iN(N), u32 : u32) : iN(N), vec_ : vec_(`V128`_Vnn), u32 : u32) : vec_(`V128`_Vnn) -[visit_id shape] not free -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_id u32] not free -[visit_exp N] -[visit_id N] not free -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_id u32] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[check_dims] N iN shape sx u32 vec_ -DecD 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) -[visit_id shape] not free -[visit_id N] not free -[visit_id sx] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_id u32] not free -[visit_exp N] -[visit_id N] not free -[visit_id sx] not free -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_id u32] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[check_dims] shape vec_ -DecD ivbitmaskop_(shape : shape, vec_ : vec_(`V128`_Vnn)) : u32 -[visit_id shape] not free -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[check_dims] N _ iN shape vec_ -DecD 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) -[visit_id shape] not free -[visit_id N] not free -[visit_id _] not free -[visit_exp N] -[visit_id N] not free -[visit_id iN] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_exp `V128`_Vnn] -[visit_exp ()] -[check_dims] _ shape vec_ -DecD ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(`V128`_Vnn)) : vec_(`V128`_Vnn) -[visit_id shape] not free -[visit_id _] not free -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_exp `V128`_Vnn] -[visit_exp ()] -[check_dims] Jnn M c c_1 v_1 -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp v_1] -[visit_id v_1] -[visit_exp [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})]] -[visit_exp $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] no dims -[visit_id c*] -[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1))] -[visit_exp c_1*{c_1 <- `c_1*`}] -[scope_enter c_1] -[visit_exp c_1] -[visit_id c_1] not free -[visit_id c_1] not free -[scope_exit c_1] -[visit_exp `c_1*`] -[visit_id c_1*] no dims -[visit_id c_1*] -[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1)*{c_1 <- `c_1*`})] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1)*{c_1 <- `c_1*`}] -[scope_enter c_1] -[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1)] -[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp c_1] -[visit_id c_1] not free -[visit_id c_1] not free -[scope_exit c_1] -[visit_exp `c_1*`] -[visit_id c_1*] not free -[visit_id c_1*] no dims -=> - ;; ../../../../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*`})] - -- 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)), c_1)*{c_1 <- `c_1*`}) -[check_dims] Fnn M c c_1 v_1 -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp v_1] -[visit_id v_1] -[visit_exp $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}] -[scope_enter c*] -[visit_exp $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})] -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[visit_id c*] not free -[visit_id c*] no dims -[scope_exit c*] -[visit_exp `c**`] -[visit_id c**] no dims -[visit_id c**] -[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1))] -[visit_exp c_1*{c_1 <- `c_1*`}] -[scope_enter c_1] -[visit_exp c_1] -[visit_id c_1] not free -[visit_id c_1] not free -[scope_exit c_1] -[visit_exp `c_1*`] -[visit_id c_1*] no dims -[visit_id c_1*] -[visit_exp $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)] -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Fnn : Fnn <: lanetype)), $f_($sizenn((Fnn : Fnn <: numtype)), c_1)*{c_1 <- `c_1*`}))] -[visit_exp c*{c <- `c*`}*{`c*` <- `c**`}] -[scope_enter c*] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[visit_id c*] not free -[visit_id c*] no dims -[scope_exit c*] -[visit_exp `c**`] -[visit_id c**] not free -[visit_id c**] no dims -[visit_exp $setproduct_(syntax lane_((Fnn : Fnn <: lanetype)), $f_($sizenn((Fnn : Fnn <: numtype)), c_1)*{c_1 <- `c_1*`})] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp $f_($sizenn((Fnn : Fnn <: numtype)), c_1)*{c_1 <- `c_1*`}] -[scope_enter c_1] -[visit_exp $f_($sizenn((Fnn : Fnn <: numtype)), c_1)] -[visit_exp $sizenn((Fnn : Fnn <: numtype))] -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp c_1] -[visit_id c_1] not free -[visit_id c_1] not free -[scope_exit c_1] -[visit_exp `c_1*`] -[visit_id c_1*] not free -[visit_id c_1*] no dims -=> - ;; ../../../../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**`} - -- 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)), $f_($sizenn((Fnn : Fnn <: numtype)), c_1)*{c_1 <- `c_1*`})) -[check_dims] Jnn M c c_1 c_2 v_1 v_2 -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})]] -[visit_exp $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] no dims -[visit_id c*] -[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1))] -[visit_exp c_1*{c_1 <- `c_1*`}] -[scope_enter c_1] -[visit_exp c_1] -[visit_id c_1] not free -[visit_id c_1] not free -[scope_exit c_1] -[visit_exp `c_1*`] -[visit_id c_1*] no dims -[visit_id c_1*] -[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2))] -[visit_exp c_2*{c_2 <- `c_2*`}] -[scope_enter c_2] -[visit_exp c_2] -[visit_id c_2] not free -[visit_id c_2] not free -[scope_exit c_2] -[visit_exp `c_2*`] -[visit_id c_2*] no dims -[visit_id c_2*] -[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_2] -[visit_id v_2] not free -[visit_exp (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`})] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`}] -[scope_enter c_1] -[scope_enter c_2] -[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)] -[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp c_1] -[visit_id c_1] not free -[visit_exp c_2] -[visit_id c_2] not free -[visit_id c_1] not free -[visit_id c_2] not free -[scope_exit c_2] -[scope_exit c_1] -[visit_exp `c_1*`] -[visit_id c_1*] not free -[visit_id c_1*] no dims -[visit_exp `c_2*`] -[visit_id c_2*] not free -[visit_id c_2*] no dims -=> - ;; ../../../../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*`})] - -- 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)), c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`}) -[check_dims] Jnn M c c_1 c_2 sx v_1 v_2 -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp sx] -[visit_id sx] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})]] -[visit_exp $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] no dims -[visit_id c*] -[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1))] -[visit_exp c_1*{c_1 <- `c_1*`}] -[scope_enter c_1] -[visit_exp c_1] -[visit_id c_1] not free -[visit_id c_1] not free -[scope_exit c_1] -[visit_exp `c_1*`] -[visit_id c_1*] no dims -[visit_id c_1*] -[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2))] -[visit_exp c_2*{c_2 <- `c_2*`}] -[scope_enter c_2] -[visit_exp c_2] -[visit_id c_2] not free -[visit_id c_2] not free -[scope_exit c_2] -[visit_exp `c_2*`] -[visit_id c_2*] no dims -[visit_id c_2*] -[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_2] -[visit_id v_2] not free -[visit_exp (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`})] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`}] -[scope_enter c_1] -[scope_enter c_2] -[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)] -[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp sx] -[visit_id sx] not free -[visit_exp c_1] -[visit_id c_1] not free -[visit_exp c_2] -[visit_id c_2] not free -[visit_id c_1] not free -[visit_id c_2] not free -[scope_exit c_2] -[scope_exit c_1] -[visit_exp `c_1*`] -[visit_id c_1*] not free -[visit_id c_1*] no dims -[visit_exp `c_2*`] -[visit_id c_2*] not free -[visit_id c_2*] no dims -=> - ;; ../../../../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*`})] - -- 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, c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`}) -[check_dims] Jnn M c c_1 c_2 sx v_1 v_2 -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp sx] -[visit_id sx] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}] -[scope_enter c*] -[visit_exp $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[visit_id c*] not free -[visit_id c*] no dims -[scope_exit c*] -[visit_exp `c**`] -[visit_id c**] no dims -[visit_id c**] -[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1))] -[visit_exp c_1*{c_1 <- `c_1*`}] -[scope_enter c_1] -[visit_exp c_1] -[visit_id c_1] not free -[visit_id c_1] not free -[scope_exit c_1] -[visit_exp `c_1*`] -[visit_id c_1*] no dims -[visit_id c_1*] -[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2))] -[visit_exp c_2*{c_2 <- `c_2*`}] -[scope_enter c_2] -[visit_exp c_2] -[visit_id c_2] not free -[visit_id c_2] not free -[scope_exit c_2] -[visit_exp `c_2*`] -[visit_id c_2*] no dims -[visit_id c_2*] -[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_2] -[visit_id v_2] not free -[visit_exp (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*`}))] -[visit_exp c*{c <- `c*`}*{`c*` <- `c**`}] -[scope_enter c*] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[visit_id c*] not free -[visit_id c*] no dims -[scope_exit c*] -[visit_exp `c**`] -[visit_id c**] not free -[visit_id c**] no dims -[visit_exp $setproduct_(syntax lane_((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`})] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`}] -[scope_enter c_1] -[scope_enter c_2] -[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)] -[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp sx] -[visit_id sx] not free -[visit_exp c_1] -[visit_id c_1] not free -[visit_exp c_2] -[visit_id c_2] not free -[visit_id c_1] not free -[visit_id c_2] not free -[scope_exit c_2] -[scope_exit c_1] -[visit_exp `c_1*`] -[visit_id c_1*] not free -[visit_id c_1*] no dims -[visit_exp `c_2*`] -[visit_id c_2*] not free -[visit_id c_2*] no dims -=> - ;; ../../../../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**`} - -- 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)), $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`})) -[check_dims] Fnn M c c_1 c_2 v_1 v_2 -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}] -[scope_enter c*] -[visit_exp $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})] -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[visit_id c*] not free -[visit_id c*] no dims -[scope_exit c*] -[visit_exp `c**`] -[visit_id c**] no dims -[visit_id c**] -[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1))] -[visit_exp c_1*{c_1 <- `c_1*`}] -[scope_enter c_1] -[visit_exp c_1] -[visit_id c_1] not free -[visit_id c_1] not free -[scope_exit c_1] -[visit_exp `c_1*`] -[visit_id c_1*] no dims -[visit_id c_1*] -[visit_exp $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)] -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2))] -[visit_exp c_2*{c_2 <- `c_2*`}] -[scope_enter c_2] -[visit_exp c_2] -[visit_id c_2] not free -[visit_id c_2] not free -[scope_exit c_2] -[visit_exp `c_2*`] -[visit_id c_2*] no dims -[visit_id c_2*] -[visit_exp $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)] -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_2] -[visit_id v_2] not free -[visit_exp (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*`}))] -[visit_exp c*{c <- `c*`}*{`c*` <- `c**`}] -[scope_enter c*] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[visit_id c*] not free -[visit_id c*] no dims -[scope_exit c*] -[visit_exp `c**`] -[visit_id c**] not free -[visit_id c**] no dims -[visit_exp $setproduct_(syntax lane_((Fnn : Fnn <: lanetype)), $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`})] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`}] -[scope_enter c_1] -[scope_enter c_2] -[visit_exp $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)] -[visit_exp $sizenn((Fnn : Fnn <: numtype))] -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp c_1] -[visit_id c_1] not free -[visit_exp c_2] -[visit_id c_2] not free -[visit_id c_1] not free -[visit_id c_2] not free -[scope_exit c_2] -[scope_exit c_1] -[visit_exp `c_1*`] -[visit_id c_1*] not free -[visit_id c_1*] no dims -[visit_exp `c_2*`] -[visit_id c_2*] not free -[visit_id c_2*] no dims -=> - ;; ../../../../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**`} - -- 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)), $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`})) -[check_dims] Jnn M c c_1 c_2 c_3 v_1 v_2 v_3 -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp v_3] -[visit_id v_3] -[visit_exp $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}] -[scope_enter c*] -[visit_exp $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[visit_id c*] not free -[visit_id c*] no dims -[scope_exit c*] -[visit_exp `c**`] -[visit_id c**] no dims -[visit_id c**] -[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1))] -[visit_exp c_1*{c_1 <- `c_1*`}] -[scope_enter c_1] -[visit_exp c_1] -[visit_id c_1] not free -[visit_id c_1] not free -[scope_exit c_1] -[visit_exp `c_1*`] -[visit_id c_1*] no dims -[visit_id c_1*] -[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2))] -[visit_exp c_2*{c_2 <- `c_2*`}] -[scope_enter c_2] -[visit_exp c_2] -[visit_id c_2] not free -[visit_id c_2] not free -[scope_exit c_2] -[visit_exp `c_2*`] -[visit_id c_2*] no dims -[visit_id c_2*] -[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_2] -[visit_id v_2] not free -[visit_exp (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3))] -[visit_exp c_3*{c_3 <- `c_3*`}] -[scope_enter c_3] -[visit_exp c_3] -[visit_id c_3] not free -[visit_id c_3] not free -[scope_exit c_3] -[visit_exp `c_3*`] -[visit_id c_3*] no dims -[visit_id c_3*] -[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_3] -[visit_id v_3] not free -[visit_exp (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*`}))] -[visit_exp c*{c <- `c*`}*{`c*` <- `c**`}] -[scope_enter c*] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[visit_id c*] not free -[visit_id c*] no dims -[scope_exit c*] -[visit_exp `c**`] -[visit_id c**] not free -[visit_id c**] no dims -[visit_exp $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*`})] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2, c_3)*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}] -[scope_enter c_1] -[scope_enter c_2] -[scope_enter c_3] -[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2, c_3)] -[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp c_1] -[visit_id c_1] not free -[visit_exp c_2] -[visit_id c_2] not free -[visit_exp c_3] -[visit_id c_3] not free -[visit_id c_1] not free -[visit_id c_2] not free -[visit_id c_3] not free -[scope_exit c_3] -[scope_exit c_2] -[scope_exit c_1] -[visit_exp `c_1*`] -[visit_id c_1*] not free -[visit_id c_1*] no dims -[visit_exp `c_2*`] -[visit_id c_2*] not free -[visit_id c_2*] no dims -[visit_exp `c_3*`] -[visit_id c_3*] not free -[visit_id c_3*] no dims -=> - ;; ../../../../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**`} - -- 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)), $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2, c_3)*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) -[check_dims] Fnn M c c_1 c_2 c_3 v_1 v_2 v_3 -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp v_3] -[visit_id v_3] -[visit_exp $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}] -[scope_enter c*] -[visit_exp $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})] -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[visit_id c*] not free -[visit_id c*] no dims -[scope_exit c*] -[visit_exp `c**`] -[visit_id c**] no dims -[visit_id c**] -[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1))] -[visit_exp c_1*{c_1 <- `c_1*`}] -[scope_enter c_1] -[visit_exp c_1] -[visit_id c_1] not free -[visit_id c_1] not free -[scope_exit c_1] -[visit_exp `c_1*`] -[visit_id c_1*] no dims -[visit_id c_1*] -[visit_exp $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)] -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2))] -[visit_exp c_2*{c_2 <- `c_2*`}] -[scope_enter c_2] -[visit_exp c_2] -[visit_id c_2] not free -[visit_id c_2] not free -[scope_exit c_2] -[visit_exp `c_2*`] -[visit_id c_2*] no dims -[visit_id c_2*] -[visit_exp $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)] -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_2] -[visit_id v_2] not free -[visit_exp (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3))] -[visit_exp c_3*{c_3 <- `c_3*`}] -[scope_enter c_3] -[visit_exp c_3] -[visit_id c_3] not free -[visit_id c_3] not free -[scope_exit c_3] -[visit_exp `c_3*`] -[visit_id c_3*] no dims -[visit_id c_3*] -[visit_exp $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3)] -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_3] -[visit_id v_3] not free -[visit_exp (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*`}))] -[visit_exp c*{c <- `c*`}*{`c*` <- `c**`}] -[scope_enter c*] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[visit_id c*] not free -[visit_id c*] no dims -[scope_exit c*] -[visit_exp `c**`] -[visit_id c**] not free -[visit_id c**] no dims -[visit_exp $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*`})] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2, c_3)*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`}] -[scope_enter c_1] -[scope_enter c_2] -[scope_enter c_3] -[visit_exp $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2, c_3)] -[visit_exp $sizenn((Fnn : Fnn <: numtype))] -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp c_1] -[visit_id c_1] not free -[visit_exp c_2] -[visit_id c_2] not free -[visit_exp c_3] -[visit_id c_3] not free -[visit_id c_1] not free -[visit_id c_2] not free -[visit_id c_3] not free -[scope_exit c_3] -[scope_exit c_2] -[scope_exit c_1] -[visit_exp `c_1*`] -[visit_id c_1*] not free -[visit_id c_1*] no dims -[visit_exp `c_2*`] -[visit_id c_2*] not free -[visit_id c_2*] no dims -[visit_exp `c_3*`] -[visit_id c_3*] not free -[visit_id c_3*] no dims -=> - ;; ../../../../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**`} - -- 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)), $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2, c_3)*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) -[check_dims] Jnn M c c_1 c_2 v_1 v_2 -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] no dims -[visit_id c*] -[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1))] -[visit_exp c_1*{c_1 <- `c_1*`}] -[scope_enter c_1] -[visit_exp c_1] -[visit_id c_1] not free -[visit_id c_1] not free -[scope_exit c_1] -[visit_exp `c_1*`] -[visit_id c_1*] no dims -[visit_id c_1*] -[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2))] -[visit_exp c_2*{c_2 <- `c_2*`}] -[scope_enter c_2] -[visit_exp c_2] -[visit_id c_2] not free -[visit_id c_2] not free -[scope_exit c_2] -[visit_exp `c_2*`] -[visit_id c_2*] no dims -[visit_id c_2*] -[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_2] -[visit_id v_2] not free -[visit_exp (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*`})] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[visit_exp $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*`}] -[scope_enter c_1] -[scope_enter c_2] -[visit_exp $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)!`%`_u32.0))] -[visit_exp 1] -[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)!`%`_u32.0)] -[visit_exp ($f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)!`%`_u32.0)] -[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)!`%`_u32.0] -[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)!`%`_u32] -[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)] -[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp c_1] -[visit_id c_1] not free -[visit_exp c_2] -[visit_id c_2] not free -[visit_id c_1] not free -[visit_id c_2] not free -[scope_exit c_2] -[scope_exit c_1] -[visit_exp `c_1*`] -[visit_id c_1*] not free -[visit_id c_1*] no dims -[visit_exp `c_2*`] -[visit_id c_2*] not free -[visit_id c_2*] no dims -=> - ;; ../../../../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*`}) - -- 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)), c_1, c_2)!`%`_u32.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) -[check_dims] Jnn M c c_1 c_2 sx v_1 v_2 -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp sx] -[visit_id sx] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] no dims -[visit_id c*] -[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1))] -[visit_exp c_1*{c_1 <- `c_1*`}] -[scope_enter c_1] -[visit_exp c_1] -[visit_id c_1] not free -[visit_id c_1] not free -[scope_exit c_1] -[visit_exp `c_1*`] -[visit_id c_1*] no dims -[visit_id c_1*] -[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2))] -[visit_exp c_2*{c_2 <- `c_2*`}] -[scope_enter c_2] -[visit_exp c_2] -[visit_id c_2] not free -[visit_id c_2] not free -[scope_exit c_2] -[visit_exp `c_2*`] -[visit_id c_2*] no dims -[visit_id c_2*] -[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_2] -[visit_id v_2] not free -[visit_exp (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*`})] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[visit_exp $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*`}] -[scope_enter c_1] -[scope_enter c_2] -[visit_exp $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)!`%`_u32.0))] -[visit_exp 1] -[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)!`%`_u32.0)] -[visit_exp ($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)!`%`_u32.0)] -[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)!`%`_u32.0] -[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)!`%`_u32] -[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)] -[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp sx] -[visit_id sx] not free -[visit_exp c_1] -[visit_id c_1] not free -[visit_exp c_2] -[visit_id c_2] not free -[visit_id c_1] not free -[visit_id c_2] not free -[scope_exit c_2] -[scope_exit c_1] -[visit_exp `c_1*`] -[visit_id c_1*] not free -[visit_id c_1*] no dims -[visit_exp `c_2*`] -[visit_id c_2*] not free -[visit_id c_2*] no dims -=> - ;; ../../../../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*`}) - -- 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, c_1, c_2)!`%`_u32.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) -[check_dims] Fnn Inn M c c_1 c_2 v_1 v_2 -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $inv_lanes_(`%X%`_shape((Inn : Inn <: lanetype), `%`_dim(M)), `%`_lane_(c!`%`_iN.0)*{c <- `c*`})] -[visit_exp `%X%`_shape((Inn : Inn <: lanetype), `%`_dim(M))] -[visit_exp ((Inn : Inn <: lanetype), `%`_dim(M))] -[visit_exp (Inn : Inn <: lanetype)] -[visit_exp Inn] -[visit_id Inn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp `%`_lane_(c!`%`_iN.0)*{c <- `c*`}] -[scope_enter c] -[visit_exp `%`_lane_(c!`%`_iN.0)] -[visit_exp (c!`%`_iN.0)] -[visit_exp c!`%`_iN.0] -[visit_exp c!`%`_iN] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] no dims -[visit_id c*] -[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1))] -[visit_exp c_1*{c_1 <- `c_1*`}] -[scope_enter c_1] -[visit_exp c_1] -[visit_id c_1] not free -[visit_id c_1] not free -[scope_exit c_1] -[visit_exp `c_1*`] -[visit_id c_1*] no dims -[visit_id c_1*] -[visit_exp $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)] -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2))] -[visit_exp c_2*{c_2 <- `c_2*`}] -[scope_enter c_2] -[visit_exp c_2] -[visit_id c_2] not free -[visit_id c_2] not free -[scope_exit c_2] -[visit_exp `c_2*`] -[visit_id c_2*] no dims -[visit_id c_2*] -[visit_exp $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)] -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_2] -[visit_id v_2] not free -[visit_exp (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*`})] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[visit_exp $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*`}] -[scope_enter c_1] -[scope_enter c_2] -[visit_exp $extend__(1, $sizenn((Fnn : Fnn <: numtype)), `S`_sx, `%`_iN($f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)!`%`_u32.0))] -[visit_exp 1] -[visit_exp $sizenn((Fnn : Fnn <: numtype))] -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_iN($f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)!`%`_u32.0)] -[visit_exp ($f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)!`%`_u32.0)] -[visit_exp $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)!`%`_u32.0] -[visit_exp $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)!`%`_u32] -[visit_exp $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)] -[visit_exp $sizenn((Fnn : Fnn <: numtype))] -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp c_1] -[visit_id c_1] not free -[visit_exp c_2] -[visit_id c_2] not free -[visit_id c_1] not free -[visit_id c_2] not free -[scope_exit c_2] -[scope_exit c_1] -[visit_exp `c_1*`] -[visit_id c_1*] not free -[visit_id c_1*] no dims -[visit_exp `c_2*`] -[visit_id c_2*] not free -[visit_id c_2*] no dims -[visit_exp ($isize(Inn) = $fsize(Fnn))] -[visit_exp $isize(Inn)] -[visit_exp Inn] -[visit_id Inn] not free -[visit_exp $fsize(Fnn)] -[visit_exp Fnn] -[visit_id Fnn] not free -=> - ;; ../../../../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 : Inn <: lanetype), `%`_dim(M)), `%`_lane_(c!`%`_iN.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)), c_1, c_2)!`%`_u32.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) - -- if ($isize(Inn) = $fsize(Fnn)) -[check_dims] Jnn M c c_1 i v_1 -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp v_1] -[visit_id v_1] -[visit_exp i] -[visit_id i] -[visit_exp $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] no dims -[visit_id c*] -[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1))] -[visit_exp c_1*{c_1 <- `c_1*`}] -[scope_enter c_1] -[visit_exp c_1] -[visit_id c_1] not free -[visit_id c_1] not free -[scope_exit c_1] -[visit_exp `c_1*`] -[visit_id c_1*] no dims -[visit_id c_1*] -[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, i)*{c_1 <- `c_1*`})] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, i)*{c_1 <- `c_1*`}] -[scope_enter c_1] -[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, i)] -[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp c_1] -[visit_id c_1] not free -[visit_exp i] -[visit_id i] not free -[visit_id c_1] not free -[scope_exit c_1] -[visit_exp `c_1*`] -[visit_id c_1*] not free -[visit_id c_1*] no dims -=> - ;; ../../../../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*`}) - -- 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)), c_1, i)*{c_1 <- `c_1*`}) -[check_dims] Jnn M c c_1 i sx v_1 -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp sx] -[visit_id sx] -[visit_exp v_1] -[visit_id v_1] -[visit_exp i] -[visit_id i] -[visit_exp $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] no dims -[visit_id c*] -[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1))] -[visit_exp c_1*{c_1 <- `c_1*`}] -[scope_enter c_1] -[visit_exp c_1] -[visit_id c_1] not free -[visit_id c_1] not free -[scope_exit c_1] -[visit_exp `c_1*`] -[visit_id c_1*] no dims -[visit_id c_1*] -[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, i)*{c_1 <- `c_1*`})] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, i)*{c_1 <- `c_1*`}] -[scope_enter c_1] -[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, i)] -[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp sx] -[visit_id sx] not free -[visit_exp c_1] -[visit_id c_1] not free -[visit_exp i] -[visit_id i] not free -[visit_id c_1] not free -[scope_exit c_1] -[visit_exp `c_1*`] -[visit_id c_1*] not free -[visit_id c_1*] no dims -=> - ;; ../../../../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*`}) - -- 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, c_1, i)*{c_1 <- `c_1*`}) -[check_dims] Jnn M c c_1 v_1 -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp v_1] -[visit_id v_1] -[visit_exp $irev_(32, c)] -[visit_exp 32] -[visit_exp c] -[visit_id c] -[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1))] -[visit_exp c_1*{c_1 <- `c_1*`}] -[scope_enter c_1] -[visit_exp c_1] -[visit_id c_1] not free -[visit_id c_1] not free -[scope_exit c_1] -[visit_exp `c_1*`] -[visit_id c_1*] no dims -[visit_id c_1*] -[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp ($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){})] -[visit_exp $ibits_(32, c)] -[visit_exp 32] -[visit_exp c] -[visit_id c] not free -[visit_exp `%`_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){}] -[visit_exp `%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, c_1, `%`_iN(0))!`%`_u32.0)*{c_1 <- `c_1*`}] -[scope_enter c_1] -[visit_exp `%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, c_1, `%`_iN(0))!`%`_u32.0)] -[visit_exp ($ilt_($lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, c_1, `%`_iN(0))!`%`_u32.0)] -[visit_exp $ilt_($lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, c_1, `%`_iN(0))!`%`_u32.0] -[visit_exp $ilt_($lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, c_1, `%`_iN(0))!`%`_u32] -[visit_exp $ilt_($lsizenn((Jnn : Jnn <: lanetype)), `S`_sx, c_1, `%`_iN(0))] -[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp c_1] -[visit_id c_1] not free -[visit_exp `%`_iN(0)] -[visit_exp (0)] -[visit_exp 0] -[visit_id c_1] not free -[scope_exit c_1] -[visit_exp `c_1*`] -[visit_id c_1*] not free -[visit_id c_1*] no dims -[visit_exp `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}] -[visit_exp `%`_bit(0)] -[visit_exp (0)] -[visit_exp 0] -[visit_exp (((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat)] -[visit_exp ((32 : nat <:> int) - (M : nat <:> int))] -[visit_exp (32 : nat <:> int)] -[visit_exp 32] -[visit_exp (M : nat <:> int)] -[visit_exp M] -[visit_id M] not free -=> - ;; ../../../../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) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_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){}) -[check_dims] Jnn M c c_1 c_2 v_1 v_2 -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] no dims -[visit_id c*] -[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1))] -[visit_exp c_1*{c_1 <- `c_1*`}] -[scope_enter c_1] -[visit_exp c_1] -[visit_id c_1] not free -[visit_id c_1] not free -[scope_exit c_1] -[visit_exp `c_1*`] -[visit_id c_1*] no dims -[visit_id c_1*] -[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2))] -[visit_exp c_2*{c_2 <- `c_2*`}] -[scope_enter c_2] -[visit_exp c_2] -[visit_id c_2] not free -[visit_id c_2] not free -[scope_exit c_2] -[visit_exp `c_2*`] -[visit_id c_2*] no dims -[visit_id c_2*] -[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_2] -[visit_id v_2] not free -[visit_exp (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1*{c_1 <- `c_1*`}, c_2)*{c_2 <- `c_2*`})] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1*{c_1 <- `c_1*`}, c_2)*{c_2 <- `c_2*`}] -[scope_enter c_2] -[visit_exp $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1*{c_1 <- `c_1*`}, c_2)] -[visit_exp $lsizenn((Jnn : Jnn <: lanetype))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp c_1*{c_1 <- `c_1*`}] -[scope_enter c_1] -[visit_exp c_1] -[visit_id c_1] not free -[visit_id c_1] not free -[scope_exit c_1] -[visit_exp `c_1*`] -[visit_id c_1*] not free -[visit_id c_1*] no dims -[visit_exp c_2] -[visit_id c_2] not free -[visit_id c_2] not free -[scope_exit c_2] -[visit_exp `c_2*`] -[visit_id c_2*] not free -[visit_id c_2*] no dims -=> - ;; ../../../../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*`}) - -- 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)), c_1*{c_1 <- `c_1*`}, c_2)*{c_2 <- `c_2*`}) -[check_dims] Jnn M c c_1 c_2 i v_1 v_2 -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp i*{i <- `i*`}] -[scope_enter i] -[visit_exp i] -[visit_id i] not free -[visit_id i] not free -[scope_exit i] -[visit_exp `i*`] -[visit_id i*] no dims -[visit_id i*] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] no dims -[visit_id c*] -[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1))] -[visit_exp c_1*{c_1 <- `c_1*`}] -[scope_enter c_1] -[visit_exp c_1] -[visit_id c_1] not free -[visit_id c_1] not free -[scope_exit c_1] -[visit_exp `c_1*`] -[visit_id c_1*] no dims -[visit_id c_1*] -[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2))] -[visit_exp c_2*{c_2 <- `c_2*`}] -[scope_enter c_2] -[visit_exp c_2] -[visit_id c_2] not free -[visit_id c_2] not free -[scope_exit c_2] -[visit_exp `c_2*`] -[visit_id c_2*] no dims -[visit_id c_2*] -[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_2] -[visit_id v_2] not free -[visit_exp (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_laneidx.0]*{i <- `i*`})] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[visit_exp c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_laneidx.0]*{i <- `i*`}] -[scope_enter i] -[visit_exp c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_laneidx.0]] -[visit_exp c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}] -[visit_exp c_1*{c_1 <- `c_1*`}] -[scope_enter c_1] -[visit_exp c_1] -[visit_id c_1] not free -[visit_id c_1] not free -[scope_exit c_1] -[visit_exp `c_1*`] -[visit_id c_1*] not free -[visit_id c_1*] no dims -[visit_exp c_2*{c_2 <- `c_2*`}] -[scope_enter c_2] -[visit_exp c_2] -[visit_id c_2] not free -[visit_id c_2] not free -[scope_exit c_2] -[visit_exp `c_2*`] -[visit_id c_2*] not free -[visit_id c_2*] no dims -[visit_exp i!`%`_laneidx.0] -[visit_exp i!`%`_laneidx] -[visit_exp i] -[visit_id i] not free -[visit_id i] not free -[scope_exit i] -[visit_exp `i*`] -[visit_id i*] not free -[visit_id i*] no dims -=> - ;; ../../../../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*`}) - -- 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!`%`_laneidx.0]*{i <- `i*`}) -[check_dims] vec_ vectype vvunop -DecD vvunop_(vectype : vectype, vvunop : vvunop, vec_ : vec_(vectype)) : vec_(vectype)* -[visit_id vectype] not free -[visit_id vvunop] not free -[visit_id vec_] not free -[visit_exp vectype] -[visit_id vectype] not free -[visit_exp vectype] -[visit_id vectype] not free -[check_dims] vec_ vectype vvbinop -DecD vvbinop_(vectype : vectype, vvbinop : vvbinop, vec_ : vec_(vectype), vec_ : vec_(vectype)) : vec_(vectype)* -[visit_id vectype] not free -[visit_id vvbinop] not free -[visit_id vec_] not free -[visit_exp vectype] -[visit_id vectype] not free -[visit_id vec_] not free -[visit_exp vectype] -[visit_id vectype] not free -[visit_exp vectype] -[visit_id vectype] not free -[check_dims] vec_ vectype vvternop -DecD vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_(vectype), vec_ : vec_(vectype), vec_ : vec_(vectype)) : vec_(vectype)* -[visit_id vectype] not free -[visit_id vvternop] not free -[visit_id vec_] not free -[visit_exp vectype] -[visit_id vectype] not free -[visit_id vec_] not free -[visit_exp vectype] -[visit_id vectype] not free -[visit_id vec_] not free -[visit_exp vectype] -[visit_id vectype] not free -[visit_exp vectype] -[visit_id vectype] not free -[check_dims] shape vec_ vunop_ -DecD vunop_(shape : shape, vunop_ : vunop_(shape), vec_ : vec_(`V128`_Vnn)) : vec_(`V128`_Vnn)* -[visit_id shape] not free -[visit_id vunop_] not free -[visit_exp shape] -[visit_id shape] not free -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_exp `V128`_Vnn] -[visit_exp ()] -[check_dims] shape vbinop_ vec_ -DecD vbinop_(shape : shape, vbinop_ : vbinop_(shape), vec_ : vec_(`V128`_Vnn), vec_ : vec_(`V128`_Vnn)) : vec_(`V128`_Vnn)* -[visit_id shape] not free -[visit_id vbinop_] not free -[visit_exp shape] -[visit_id shape] not free -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_exp `V128`_Vnn] -[visit_exp ()] -[check_dims] shape vec_ vternop_ -DecD vternop_(shape : shape, vternop_ : vternop_(shape), vec_ : vec_(`V128`_Vnn), vec_ : vec_(`V128`_Vnn), vec_ : vec_(`V128`_Vnn)) : vec_(`V128`_Vnn)* -[visit_id shape] not free -[visit_id vternop_] not free -[visit_exp shape] -[visit_id shape] not free -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_exp `V128`_Vnn] -[visit_exp ()] -[check_dims] shape vec_ vrelop_ -DecD vrelop_(shape : shape, vrelop_ : vrelop_(shape), vec_ : vec_(`V128`_Vnn), vec_ : vec_(`V128`_Vnn)) : vec_(`V128`_Vnn) -[visit_id shape] not free -[visit_id vrelop_] not free -[visit_exp shape] -[visit_id shape] not free -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_exp `V128`_Vnn] -[visit_exp ()] -[check_dims] lane_ shape_1 shape_2 vcvtop__ -DecD lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2), lane_ : lane_($lanetype(shape_1))) : lane_($lanetype(shape_2))* -[visit_id shape_1] not free -[visit_id shape_2] not free -[visit_id vcvtop__] not free -[visit_exp shape_1] -[visit_id shape_1] not free -[visit_exp shape_2] -[visit_id shape_2] not free -[visit_id lane_] not free -[visit_exp $lanetype(shape_1)] -[visit_exp shape_1] -[visit_id shape_1] not free -[visit_exp $lanetype(shape_2)] -[visit_exp shape_2] -[visit_id shape_2] not free -[check_dims] shape_1 shape_2 vcvtop__ vec_ -DecD vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2), vec_ : vec_(`V128`_Vnn)) : vec_(`V128`_Vnn) -[visit_id shape_1] not free -[visit_id shape_2] not free -[visit_id vcvtop__] not free -[visit_exp shape_1] -[visit_id shape_1] not free -[visit_exp shape_2] -[visit_id shape_2] not free -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_exp `V128`_Vnn] -[visit_exp ()] -[check_dims] ishape u32 vec_ vshiftop_ -DecD vshiftop_(ishape : ishape, vshiftop_ : vshiftop_(ishape), vec_ : vec_(`V128`_Vnn), u32 : u32) : vec_(`V128`_Vnn) -[visit_id ishape] not free -[visit_id vshiftop_] not free -[visit_exp ishape] -[visit_id ishape] not free -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_id u32] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[check_dims] ishape vec_ -DecD vbitmaskop_(ishape : ishape, vec_ : vec_(`V128`_Vnn)) : u32 -[visit_id ishape] not free -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[check_dims] bshape vec_ vswizzlop_ -DecD vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_(bshape), vec_ : vec_(`V128`_Vnn), vec_ : vec_(`V128`_Vnn)) : vec_(`V128`_Vnn) -[visit_id bshape] not free -[visit_id vswizzlop_] not free -[visit_exp bshape] -[visit_id bshape] not free -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_exp `V128`_Vnn] -[visit_exp ()] -[check_dims] _ bshape vec_ -DecD vshufflop_(bshape : bshape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(`V128`_Vnn)) : vec_(`V128`_Vnn) -[visit_id bshape] not free -[visit_id _] not free -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_exp `V128`_Vnn] -[visit_exp ()] -[check_dims] shape_1 shape_2 sx vec_ -DecD vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_(`V128`_Vnn), vec_ : vec_(`V128`_Vnn)) : vec_(`V128`_Vnn) -[visit_id shape_1] not free -[visit_id shape_2] not free -[visit_id sx] not free -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_exp `V128`_Vnn] -[visit_exp ()] -[check_dims] ishape_1 ishape_2 vec_ vextunop__ -DecD vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__(ishape_1, ishape_2), vec_ : vec_(`V128`_Vnn)) : vec_(`V128`_Vnn) -[visit_id ishape_1] not free -[visit_id ishape_2] not free -[visit_id vextunop__] not free -[visit_exp ishape_1] -[visit_id ishape_1] not free -[visit_exp ishape_2] -[visit_id ishape_2] not free -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_exp `V128`_Vnn] -[visit_exp ()] -[check_dims] ishape_1 ishape_2 vec_ vextbinop__ -DecD vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__(ishape_1, ishape_2), vec_ : vec_(`V128`_Vnn), vec_ : vec_(`V128`_Vnn)) : vec_(`V128`_Vnn) -[visit_id ishape_1] not free -[visit_id ishape_2] not free -[visit_id vextbinop__] not free -[visit_exp ishape_1] -[visit_id ishape_1] not free -[visit_exp ishape_2] -[visit_id ishape_2] not free -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_exp `V128`_Vnn] -[visit_exp ()] -[check_dims] ishape_1 ishape_2 vec_ vextternop__ -DecD 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) -[visit_id ishape_1] not free -[visit_id ishape_2] not free -[visit_id vextternop__] not free -[visit_exp ishape_1] -[visit_id ishape_1] not free -[visit_exp ishape_2] -[visit_id ishape_2] not free -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_exp `V128`_Vnn] -[visit_exp ()] -[check_dims] Vnn v -[visit_exp Vnn] -[visit_id Vnn] -[visit_exp `NOT`_vvunop] -[visit_exp ()] -[visit_exp v] -[visit_id v] -[visit_exp [$inot_($vsizenn(Vnn), v)]] -[visit_exp $inot_($vsizenn(Vnn), v)] -[visit_exp $vsizenn(Vnn)] -[visit_exp Vnn] -[visit_id Vnn] not free -[visit_exp v] -[visit_id v] not free -=> - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vvunop_{Vnn : Vnn, v : vec_(Vnn)}(Vnn, `NOT`_vvunop, v) = [$inot_($vsizenn(Vnn), v)] -[check_dims] Vnn v_1 v_2 -[visit_exp Vnn] -[visit_id Vnn] -[visit_exp `AND`_vvbinop] -[visit_exp ()] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp [$iand_($vsizenn(Vnn), v_1, v_2)]] -[visit_exp $iand_($vsizenn(Vnn), v_1, v_2)] -[visit_exp $vsizenn(Vnn)] -[visit_exp Vnn] -[visit_id Vnn] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -=> - ;; ../../../../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)] -[check_dims] Vnn v_1 v_2 -[visit_exp Vnn] -[visit_id Vnn] -[visit_exp `ANDNOT`_vvbinop] -[visit_exp ()] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp [$iandnot_($vsizenn(Vnn), v_1, v_2)]] -[visit_exp $iandnot_($vsizenn(Vnn), v_1, v_2)] -[visit_exp $vsizenn(Vnn)] -[visit_exp Vnn] -[visit_id Vnn] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -=> - ;; ../../../../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)] -[check_dims] Vnn v_1 v_2 -[visit_exp Vnn] -[visit_id Vnn] -[visit_exp `OR`_vvbinop] -[visit_exp ()] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp [$ior_($vsizenn(Vnn), v_1, v_2)]] -[visit_exp $ior_($vsizenn(Vnn), v_1, v_2)] -[visit_exp $vsizenn(Vnn)] -[visit_exp Vnn] -[visit_id Vnn] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -=> - ;; ../../../../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)] -[check_dims] Vnn v_1 v_2 -[visit_exp Vnn] -[visit_id Vnn] -[visit_exp `XOR`_vvbinop] -[visit_exp ()] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp [$ixor_($vsizenn(Vnn), v_1, v_2)]] -[visit_exp $ixor_($vsizenn(Vnn), v_1, v_2)] -[visit_exp $vsizenn(Vnn)] -[visit_exp Vnn] -[visit_id Vnn] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -=> - ;; ../../../../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)] -[check_dims] Vnn v_1 v_2 v_3 -[visit_exp Vnn] -[visit_id Vnn] -[visit_exp `BITSELECT`_vvternop] -[visit_exp ()] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp v_3] -[visit_id v_3] -[visit_exp [$ibitselect_($vsizenn(Vnn), v_1, v_2, v_3)]] -[visit_exp $ibitselect_($vsizenn(Vnn), v_1, v_2, v_3)] -[visit_exp $vsizenn(Vnn)] -[visit_exp Vnn] -[visit_id Vnn] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -[visit_exp v_3] -[visit_id v_3] not free -=> - ;; ../../../../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)] -[check_dims] Fnn M v -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `ABS`_vunop_] -[visit_exp ()] -[visit_exp v] -[visit_id v] -[visit_exp $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fabs_, v)] -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v] -[visit_id v] not free -=> - ;; ../../../../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) -[check_dims] Fnn M v -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `NEG`_vunop_] -[visit_exp ()] -[visit_exp v] -[visit_id v] -[visit_exp $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fneg_, v)] -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v] -[visit_id v] not free -=> - ;; ../../../../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) -[check_dims] Fnn M v -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `SQRT`_vunop_] -[visit_exp ()] -[visit_exp v] -[visit_id v] -[visit_exp $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsqrt_, v)] -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v] -[visit_id v] not free -=> - ;; ../../../../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) -[check_dims] Fnn M v -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `CEIL`_vunop_] -[visit_exp ()] -[visit_exp v] -[visit_id v] -[visit_exp $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fceil_, v)] -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v] -[visit_id v] not free -=> - ;; ../../../../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) -[check_dims] Fnn M v -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `FLOOR`_vunop_] -[visit_exp ()] -[visit_exp v] -[visit_id v] -[visit_exp $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ffloor_, v)] -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v] -[visit_id v] not free -=> - ;; ../../../../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) -[check_dims] Fnn M v -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `TRUNC`_vunop_] -[visit_exp ()] -[visit_exp v] -[visit_id v] -[visit_exp $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ftrunc_, v)] -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v] -[visit_id v] not free -=> - ;; ../../../../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) -[check_dims] Fnn M v -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `NEAREST`_vunop_] -[visit_exp ()] -[visit_exp v] -[visit_id v] -[visit_exp $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fnearest_, v)] -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v] -[visit_id v] not free -=> - ;; ../../../../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) -[check_dims] Jnn M v -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `ABS`_vunop_] -[visit_exp ()] -[visit_exp v] -[visit_id v] -[visit_exp $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v] -[visit_id v] not free -=> - ;; ../../../../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) -[check_dims] Jnn M v -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `NEG`_vunop_] -[visit_exp ()] -[visit_exp v] -[visit_id v] -[visit_exp $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v] -[visit_id v] not free -=> - ;; ../../../../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) -[check_dims] Jnn M v -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `POPCNT`_vunop_] -[visit_exp ()] -[visit_exp v] -[visit_id v] -[visit_exp $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v] -[visit_id v] not free -=> - ;; ../../../../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) -[check_dims] Jnn M v_1 v_2 -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `ADD`_vbinop_] -[visit_exp ()] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -=> - ;; ../../../../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) -[check_dims] Jnn M v_1 v_2 -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `SUB`_vbinop_] -[visit_exp ()] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -=> - ;; ../../../../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) -[check_dims] Jnn M v_1 v_2 -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `MUL`_vbinop_] -[visit_exp ()] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -=> - ;; ../../../../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) -[check_dims] Jnn M sx v_1 v_2 -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `ADD_SAT`_vbinop_(sx)] -[visit_exp (sx)] -[visit_exp sx] -[visit_id sx] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp sx] -[visit_id sx] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -=> - ;; ../../../../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) -[check_dims] Jnn M sx v_1 v_2 -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `SUB_SAT`_vbinop_(sx)] -[visit_exp (sx)] -[visit_exp sx] -[visit_id sx] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp sx] -[visit_id sx] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -=> - ;; ../../../../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) -[check_dims] Jnn M sx v_1 v_2 -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `MIN`_vbinop_(sx)] -[visit_exp (sx)] -[visit_exp sx] -[visit_id sx] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp sx] -[visit_id sx] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -=> - ;; ../../../../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) -[check_dims] Jnn M sx v_1 v_2 -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `MAX`_vbinop_(sx)] -[visit_exp (sx)] -[visit_exp sx] -[visit_id sx] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp sx] -[visit_id sx] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -=> - ;; ../../../../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) -[check_dims] Jnn M v_1 v_2 -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `AVGRU`_vbinop_] -[visit_exp ()] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, `U`_sx, v_1, v_2)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -=> - ;; ../../../../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) -[check_dims] Jnn M v_1 v_2 -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `Q15MULR_SATS`_vbinop_] -[visit_exp ()] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, `S`_sx, v_1, v_2)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -=> - ;; ../../../../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) -[check_dims] Jnn M v_1 v_2 -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `RELAXED_Q15MULRS`_vbinop_] -[visit_exp ()] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $ivbinopsxnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, `S`_sx, v_1, v_2)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -=> - ;; ../../../../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) -[check_dims] Fnn M v_1 v_2 -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `ADD`_vbinop_] -[visit_exp ()] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fadd_, v_1, v_2)] -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -=> - ;; ../../../../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) -[check_dims] Fnn M v_1 v_2 -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `SUB`_vbinop_] -[visit_exp ()] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsub_, v_1, v_2)] -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -=> - ;; ../../../../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) -[check_dims] Fnn M v_1 v_2 -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `MUL`_vbinop_] -[visit_exp ()] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmul_, v_1, v_2)] -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -=> - ;; ../../../../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) -[check_dims] Fnn M v_1 v_2 -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `DIV`_vbinop_] -[visit_exp ()] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fdiv_, v_1, v_2)] -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -=> - ;; ../../../../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) -[check_dims] Fnn M v_1 v_2 -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `MIN`_vbinop_] -[visit_exp ()] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmin_, v_1, v_2)] -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -=> - ;; ../../../../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) -[check_dims] Fnn M v_1 v_2 -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `MAX`_vbinop_] -[visit_exp ()] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmax_, v_1, v_2)] -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -=> - ;; ../../../../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) -[check_dims] Fnn M v_1 v_2 -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `PMIN`_vbinop_] -[visit_exp ()] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmin_, v_1, v_2)] -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -=> - ;; ../../../../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) -[check_dims] Fnn M v_1 v_2 -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `PMAX`_vbinop_] -[visit_exp ()] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmax_, v_1, v_2)] -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -=> - ;; ../../../../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) -[check_dims] Fnn M v_1 v_2 -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `RELAXED_MIN`_vbinop_] -[visit_exp ()] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_min_, v_1, v_2)] -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -=> - ;; ../../../../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) -[check_dims] Fnn M v_1 v_2 -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `RELAXED_MAX`_vbinop_] -[visit_exp ()] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_max_, v_1, v_2)] -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -=> - ;; ../../../../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) -[check_dims] Jnn M v_1 v_2 v_3 -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `RELAXED_LANESELECT`_vternop_] -[visit_exp ()] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp v_3] -[visit_id v_3] -[visit_exp $ivternopnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -[visit_exp v_3] -[visit_id v_3] not free -=> - ;; ../../../../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) -[check_dims] Fnn M v_1 v_2 v_3 -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `RELAXED_MADD`_vternop_] -[visit_exp ()] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp v_3] -[visit_id v_3] -[visit_exp $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3)] -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -[visit_exp v_3] -[visit_id v_3] not free -=> - ;; ../../../../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) -[check_dims] Fnn M v_1 v_2 v_3 -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `RELAXED_NMADD`_vternop_] -[visit_exp ()] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp v_3] -[visit_id v_3] -[visit_exp $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3)] -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -[visit_exp v_3] -[visit_id v_3] not free -=> - ;; ../../../../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) -[check_dims] Jnn M v_1 v_2 -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `EQ`_vrelop_] -[visit_exp ()] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -=> - ;; ../../../../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) -[check_dims] Jnn M v_1 v_2 -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `NE`_vrelop_] -[visit_exp ()] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -=> - ;; ../../../../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) -[check_dims] Jnn M sx v_1 v_2 -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `LT`_vrelop_(sx)] -[visit_exp (sx)] -[visit_exp sx] -[visit_id sx] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp sx] -[visit_id sx] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -=> - ;; ../../../../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) -[check_dims] Jnn M sx v_1 v_2 -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `GT`_vrelop_(sx)] -[visit_exp (sx)] -[visit_exp sx] -[visit_id sx] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp sx] -[visit_id sx] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -=> - ;; ../../../../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) -[check_dims] Jnn M sx v_1 v_2 -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `LE`_vrelop_(sx)] -[visit_exp (sx)] -[visit_exp sx] -[visit_id sx] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp sx] -[visit_id sx] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -=> - ;; ../../../../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) -[check_dims] Jnn M sx v_1 v_2 -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `GE`_vrelop_(sx)] -[visit_exp (sx)] -[visit_exp sx] -[visit_id sx] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp sx] -[visit_id sx] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -=> - ;; ../../../../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) -[check_dims] Fnn M v_1 v_2 -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `EQ`_vrelop_] -[visit_exp ()] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $feq_, v_1, v_2)] -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -=> - ;; ../../../../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) -[check_dims] Fnn M v_1 v_2 -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `NE`_vrelop_] -[visit_exp ()] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fne_, v_1, v_2)] -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -=> - ;; ../../../../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) -[check_dims] Fnn M v_1 v_2 -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `LT`_vrelop_] -[visit_exp ()] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $flt_, v_1, v_2)] -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -=> - ;; ../../../../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) -[check_dims] Fnn M v_1 v_2 -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `GT`_vrelop_] -[visit_exp ()] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fgt_, v_1, v_2)] -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -=> - ;; ../../../../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) -[check_dims] Fnn M v_1 v_2 -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `LE`_vrelop_] -[visit_exp ()] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fle_, v_1, v_2)] -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -=> - ;; ../../../../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) -[check_dims] Fnn M v_1 v_2 -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `GE`_vrelop_] -[visit_exp ()] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fge_, v_1, v_2)] -[visit_exp `%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp ((Fnn : Fnn <: lanetype), `%`_dim(M))] -[visit_exp (Fnn : Fnn <: lanetype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -=> - ;; ../../../../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) -[check_dims] Jnn M i v -[visit_exp `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))] -[visit_exp (`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `SHL`_vshiftop_] -[visit_exp ()] -[visit_exp v] -[visit_id v] -[visit_exp i] -[visit_id i] -[visit_exp $ivshiftop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v] -[visit_id v] not free -[visit_exp i] -[visit_id i] not free -=> - ;; ../../../../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) -[check_dims] Jnn M i sx v -[visit_exp `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))] -[visit_exp (`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `SHR`_vshiftop_(sx)] -[visit_exp (sx)] -[visit_exp sx] -[visit_id sx] -[visit_exp v] -[visit_id v] -[visit_exp i] -[visit_id i] -[visit_exp $ivshiftopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp sx] -[visit_id sx] not free -[visit_exp v] -[visit_id v] not free -[visit_exp i] -[visit_id i] not free -=> - ;; ../../../../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) -[check_dims] Jnn M v -[visit_exp `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))] -[visit_exp (`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp v] -[visit_id v] -[visit_exp $ivbitmaskop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v] -[visit_id v] not free -=> - ;; ../../../../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) -[check_dims] M v_1 v_2 -[visit_exp `%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(M)))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(M)))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(M))] -[visit_exp (`I8`_lanetype, `%`_dim(M))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `SWIZZLE`_vswizzlop_] -[visit_exp ()] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $ivswizzlop_(`%X%`_shape(`I8`_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2)] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(M))] -[visit_exp (`I8`_lanetype, `%`_dim(M))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -=> - ;; ../../../../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) -[check_dims] M v_1 v_2 -[visit_exp `%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(M)))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(M)))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(M))] -[visit_exp (`I8`_lanetype, `%`_dim(M))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `RELAXED_SWIZZLE`_vswizzlop_] -[visit_exp ()] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $ivswizzlop_(`%X%`_shape(`I8`_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2)] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(M))] -[visit_exp (`I8`_lanetype, `%`_dim(M))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -=> - ;; ../../../../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) -[check_dims] M i v_1 v_2 -[visit_exp `%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(M)))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(M)))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(M))] -[visit_exp (`I8`_lanetype, `%`_dim(M))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp i*{i <- `i*`}] -[scope_enter i] -[visit_exp i] -[visit_id i] not free -[visit_id i] not free -[scope_exit i] -[visit_exp `i*`] -[visit_id i*] no dims -[visit_id i*] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $ivshufflop_(`%X%`_shape(`I8`_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2)] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(M))] -[visit_exp (`I8`_lanetype, `%`_dim(M))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp i*{i <- `i*`}] -[scope_enter i] -[visit_exp i] -[visit_id i] not free -[visit_id i] not free -[scope_exit i] -[visit_exp `i*`] -[visit_id i*] not free -[visit_id i*] no dims -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -=> - ;; ../../../../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) -[check_dims] Jnn_1 Jnn_2 M_1 M_2 c c_1 half sx -[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] -[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] -[visit_exp `EXTEND`_vcvtop__(half, sx)] -[visit_exp (half, sx)] -[visit_exp half] -[visit_id half] -[visit_exp sx] -[visit_id sx] -[visit_exp c_1] -[visit_id c_1] -[visit_exp [c]] -[visit_exp c] -[visit_id c] -[visit_exp (c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1))] -[visit_exp c] -[visit_id c] not free -[visit_exp $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1)] -[visit_exp $lsizenn1((Jnn_1 : Jnn <: lanetype))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] not free -[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] not free -[visit_exp sx] -[visit_id sx] not free -[visit_exp c_1] -[visit_id c_1] not free -=> - ;; ../../../../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] - -- if (c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1)) -[check_dims] Fnn_2 Jnn_1 M_1 M_2 c c_1 half sx -[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] -[visit_exp `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))] -[visit_exp ((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))] -[visit_exp (Fnn_2 : Fnn <: lanetype)] -[visit_exp Fnn_2] -[visit_id Fnn_2] -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] -[visit_exp `CONVERT`_vcvtop__(half?{half <- `half?`}, sx)] -[visit_exp (half?{half <- `half?`}, sx)] -[visit_exp half?{half <- `half?`}] -[scope_enter half] -[visit_exp half] -[visit_id half] not free -[visit_id half] not free -[scope_exit half] -[visit_exp `half?`] -[visit_id half?] no dims -[visit_id half?] -[visit_exp sx] -[visit_id sx] -[visit_exp c_1] -[visit_id c_1] -[visit_exp [c]] -[visit_exp c] -[visit_id c] -[visit_exp (c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1))] -[visit_exp c] -[visit_id c] not free -[visit_exp $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1)] -[visit_exp $lsizenn1((Jnn_1 : Jnn <: lanetype))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] not free -[visit_exp $lsizenn2((Fnn_2 : Fnn <: lanetype))] -[visit_exp (Fnn_2 : Fnn <: lanetype)] -[visit_exp Fnn_2] -[visit_id Fnn_2] not free -[visit_exp sx] -[visit_id sx] not free -[visit_exp c_1] -[visit_id c_1] not free -=> - ;; ../../../../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] - -- if (c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1)) -[check_dims] Fnn_1 Inn_2 M_1 M_2 c c_1 sx zero -[visit_exp `%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] -[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] -[visit_exp (Fnn_1 : Fnn <: lanetype)] -[visit_exp Fnn_1] -[visit_id Fnn_1] -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] -[visit_exp `%X%`_shape((Inn_2 : Inn <: lanetype), `%`_dim(M_2))] -[visit_exp ((Inn_2 : Inn <: lanetype), `%`_dim(M_2))] -[visit_exp (Inn_2 : Inn <: lanetype)] -[visit_exp Inn_2] -[visit_id Inn_2] -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] -[visit_exp `TRUNC_SAT`_vcvtop__(sx, zero?{zero <- `zero?`})] -[visit_exp (sx, zero?{zero <- `zero?`})] -[visit_exp sx] -[visit_id sx] -[visit_exp zero?{zero <- `zero?`}] -[scope_enter zero] -[visit_exp zero] -[visit_id zero] not free -[visit_id zero] not free -[scope_exit zero] -[visit_exp `zero?`] -[visit_id zero?] no dims -[visit_id zero?] -[visit_exp c_1] -[visit_id c_1] -[visit_exp lift(c?{c <- `c?`})] -[visit_exp c?{c <- `c?`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c?`] -[visit_id c?] no dims -[visit_id c?] -[visit_exp (c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : Inn <: lanetype)), sx, c_1))] -[visit_exp c?{c <- `c?`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c?`] -[visit_id c?] not free -[visit_id c?] no dims -[visit_exp $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : Inn <: lanetype)), sx, c_1)] -[visit_exp $lsizenn1((Fnn_1 : Fnn <: lanetype))] -[visit_exp (Fnn_1 : Fnn <: lanetype)] -[visit_exp Fnn_1] -[visit_id Fnn_1] not free -[visit_exp $lsizenn2((Inn_2 : Inn <: lanetype))] -[visit_exp (Inn_2 : Inn <: lanetype)] -[visit_exp Inn_2] -[visit_id Inn_2] not free -[visit_exp sx] -[visit_id sx] not free -[visit_exp c_1] -[visit_id c_1] not free -=> - ;; ../../../../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 : Inn <: lanetype)))?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : Inn <: lanetype), `%`_dim(M_2)), `TRUNC_SAT`_vcvtop__(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) - -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : Inn <: lanetype)), sx, c_1)) -[check_dims] Fnn_1 Inn_2 M_1 M_2 c c_1 sx zero -[visit_exp `%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] -[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] -[visit_exp (Fnn_1 : Fnn <: lanetype)] -[visit_exp Fnn_1] -[visit_id Fnn_1] -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] -[visit_exp `%X%`_shape((Inn_2 : Inn <: lanetype), `%`_dim(M_2))] -[visit_exp ((Inn_2 : Inn <: lanetype), `%`_dim(M_2))] -[visit_exp (Inn_2 : Inn <: lanetype)] -[visit_exp Inn_2] -[visit_id Inn_2] -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] -[visit_exp `RELAXED_TRUNC`_vcvtop__(sx, zero?{zero <- `zero?`})] -[visit_exp (sx, zero?{zero <- `zero?`})] -[visit_exp sx] -[visit_id sx] -[visit_exp zero?{zero <- `zero?`}] -[scope_enter zero] -[visit_exp zero] -[visit_id zero] not free -[visit_id zero] not free -[scope_exit zero] -[visit_exp `zero?`] -[visit_id zero?] no dims -[visit_id zero?] -[visit_exp c_1] -[visit_id c_1] -[visit_exp lift(c?{c <- `c?`})] -[visit_exp c?{c <- `c?`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c?`] -[visit_id c?] no dims -[visit_id c?] -[visit_exp (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : Inn <: lanetype)), sx, c_1))] -[visit_exp c?{c <- `c?`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c?`] -[visit_id c?] not free -[visit_id c?] no dims -[visit_exp $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : Inn <: lanetype)), sx, c_1)] -[visit_exp $lsizenn1((Fnn_1 : Fnn <: lanetype))] -[visit_exp (Fnn_1 : Fnn <: lanetype)] -[visit_exp Fnn_1] -[visit_id Fnn_1] not free -[visit_exp $lsizenn2((Inn_2 : Inn <: lanetype))] -[visit_exp (Inn_2 : Inn <: lanetype)] -[visit_exp Inn_2] -[visit_id Inn_2] not free -[visit_exp sx] -[visit_id sx] not free -[visit_exp c_1] -[visit_id c_1] not free -=> - ;; ../../../../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 : Inn <: lanetype)))?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : Inn <: lanetype), `%`_dim(M_2)), `RELAXED_TRUNC`_vcvtop__(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) - -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : Inn <: lanetype)), sx, c_1)) -[check_dims] Fnn_1 Fnn_2 M_1 M_2 c c_1 -[visit_exp `%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] -[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] -[visit_exp (Fnn_1 : Fnn <: lanetype)] -[visit_exp Fnn_1] -[visit_id Fnn_1] -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] -[visit_exp `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))] -[visit_exp ((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))] -[visit_exp (Fnn_2 : Fnn <: lanetype)] -[visit_exp Fnn_2] -[visit_id Fnn_2] -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] -[visit_exp `DEMOTE`_vcvtop__(`ZERO`_zero)] -[visit_exp (`ZERO`_zero)] -[visit_exp `ZERO`_zero] -[visit_exp ()] -[visit_exp c_1] -[visit_id c_1] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] no dims -[visit_id c*] -[visit_exp (c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1))] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[visit_exp $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)] -[visit_exp $lsizenn1((Fnn_1 : Fnn <: lanetype))] -[visit_exp (Fnn_1 : Fnn <: lanetype)] -[visit_exp Fnn_1] -[visit_id Fnn_1] not free -[visit_exp $lsizenn2((Fnn_2 : Fnn <: lanetype))] -[visit_exp (Fnn_2 : Fnn <: lanetype)] -[visit_exp Fnn_2] -[visit_id Fnn_2] not free -[visit_exp c_1] -[visit_id c_1] not free -=> - ;; ../../../../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*`} - -- if (c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)) -[check_dims] Fnn_1 Fnn_2 M_1 M_2 c c_1 -[visit_exp `%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] -[visit_exp ((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1))] -[visit_exp (Fnn_1 : Fnn <: lanetype)] -[visit_exp Fnn_1] -[visit_id Fnn_1] -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] -[visit_exp `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))] -[visit_exp ((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))] -[visit_exp (Fnn_2 : Fnn <: lanetype)] -[visit_exp Fnn_2] -[visit_id Fnn_2] -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] -[visit_exp `PROMOTELOW`_vcvtop__] -[visit_exp ()] -[visit_exp c_1] -[visit_id c_1] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] no dims -[visit_id c*] -[visit_exp (c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1))] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[visit_exp $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)] -[visit_exp $lsizenn1((Fnn_1 : Fnn <: lanetype))] -[visit_exp (Fnn_1 : Fnn <: lanetype)] -[visit_exp Fnn_1] -[visit_id Fnn_1] not free -[visit_exp $lsizenn2((Fnn_2 : Fnn <: lanetype))] -[visit_exp (Fnn_2 : Fnn <: lanetype)] -[visit_exp Fnn_2] -[visit_id Fnn_2] not free -[visit_exp c_1] -[visit_id c_1] not free -=> - ;; ../../../../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*`} - -- if (c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)) -[check_dims] Lnn_1 Lnn_2 M c c_1 v v_1 vcvtop -[visit_exp `%X%`_shape(Lnn_1, `%`_dim(M))] -[visit_exp (Lnn_1, `%`_dim(M))] -[visit_exp Lnn_1] -[visit_id Lnn_1] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `%X%`_shape(Lnn_2, `%`_dim(M))] -[visit_exp (Lnn_2, `%`_dim(M))] -[visit_exp Lnn_2] -[visit_id Lnn_2] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp vcvtop] -[visit_id vcvtop] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v] -[visit_id v] -[visit_exp (($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) = ?()))] -[visit_exp ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())] -[visit_exp $halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop)] -[visit_exp `%X%`_shape(Lnn_1, `%`_dim(M))] -[visit_exp (Lnn_1, `%`_dim(M))] -[visit_exp Lnn_1] -[visit_id Lnn_1] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp `%X%`_shape(Lnn_2, `%`_dim(M))] -[visit_exp (Lnn_2, `%`_dim(M))] -[visit_exp Lnn_2] -[visit_id Lnn_2] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp vcvtop] -[visit_id vcvtop] not free -[visit_exp ?()] -[visit_exp ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())] -[visit_exp $zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop)] -[visit_exp `%X%`_shape(Lnn_1, `%`_dim(M))] -[visit_exp (Lnn_1, `%`_dim(M))] -[visit_exp Lnn_1] -[visit_id Lnn_1] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp `%X%`_shape(Lnn_2, `%`_dim(M))] -[visit_exp (Lnn_2, `%`_dim(M))] -[visit_exp Lnn_2] -[visit_id Lnn_2] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp vcvtop] -[visit_id vcvtop] not free -[visit_exp ?()] -[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1))] -[visit_exp c_1*{c_1 <- `c_1*`}] -[scope_enter c_1] -[visit_exp c_1] -[visit_id c_1] not free -[visit_id c_1] not free -[scope_exit c_1] -[visit_exp `c_1*`] -[visit_id c_1*] no dims -[visit_id c_1*] -[visit_exp $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1)] -[visit_exp `%X%`_shape(Lnn_1, `%`_dim(M))] -[visit_exp (Lnn_1, `%`_dim(M))] -[visit_exp Lnn_1] -[visit_id Lnn_1] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp (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*`}))] -[visit_exp c*{c <- `c*`}*{`c*` <- `c**`}] -[scope_enter c*] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[visit_id c*] not free -[visit_id c*] no dims -[scope_exit c*] -[visit_exp `c**`] -[visit_id c**] no dims -[visit_id c**] -[visit_exp $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*`})] -[visit_exp Lnn_2] -[visit_id Lnn_2] not free -[visit_exp $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`}] -[scope_enter c_1] -[visit_exp $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)] -[visit_exp `%X%`_shape(Lnn_1, `%`_dim(M))] -[visit_exp (Lnn_1, `%`_dim(M))] -[visit_exp Lnn_1] -[visit_id Lnn_1] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp `%X%`_shape(Lnn_2, `%`_dim(M))] -[visit_exp (Lnn_2, `%`_dim(M))] -[visit_exp Lnn_2] -[visit_id Lnn_2] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp vcvtop] -[visit_id vcvtop] not free -[visit_exp c_1] -[visit_id c_1] not free -[visit_id c_1] not free -[scope_exit c_1] -[visit_exp `c_1*`] -[visit_id c_1*] not free -[visit_id c_1*] no dims -[visit_exp (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`})] -[visit_exp v] -[visit_id v] not free -[visit_exp $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}] -[scope_enter c*] -[visit_exp $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})] -[visit_exp `%X%`_shape(Lnn_2, `%`_dim(M))] -[visit_exp (Lnn_2, `%`_dim(M))] -[visit_exp Lnn_2] -[visit_id Lnn_2] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[visit_id c*] not free -[visit_id c*] no dims -[scope_exit c*] -[visit_exp `c**`] -[visit_id c**] not free -[visit_id c**] no dims -=> - ;; ../../../../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) = ?())) - -- 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*`})) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) -[check_dims] Lnn_1 Lnn_2 M_1 M_2 c c_1 half v v_1 vcvtop -[visit_exp `%X%`_shape(Lnn_1, `%`_dim(M_1))] -[visit_exp (Lnn_1, `%`_dim(M_1))] -[visit_exp Lnn_1] -[visit_id Lnn_1] -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] -[visit_exp `%X%`_shape(Lnn_2, `%`_dim(M_2))] -[visit_exp (Lnn_2, `%`_dim(M_2))] -[visit_exp Lnn_2] -[visit_id Lnn_2] -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] -[visit_exp vcvtop] -[visit_id vcvtop] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v] -[visit_id v] -[visit_exp ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(half))] -[visit_exp $halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop)] -[visit_exp `%X%`_shape(Lnn_1, `%`_dim(M_1))] -[visit_exp (Lnn_1, `%`_dim(M_1))] -[visit_exp Lnn_1] -[visit_id Lnn_1] not free -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] not free -[visit_exp `%X%`_shape(Lnn_2, `%`_dim(M_2))] -[visit_exp (Lnn_2, `%`_dim(M_2))] -[visit_exp Lnn_2] -[visit_id Lnn_2] not free -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] not free -[visit_exp vcvtop] -[visit_id vcvtop] not free -[visit_exp ?(half)] -[visit_exp half] -[visit_id half] -[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2])] -[visit_exp c_1*{c_1 <- `c_1*`}] -[scope_enter c_1] -[visit_exp c_1] -[visit_id c_1] not free -[visit_id c_1] not free -[scope_exit c_1] -[visit_exp `c_1*`] -[visit_id c_1*] no dims -[visit_id c_1*] -[visit_exp $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2]] -[visit_exp $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)] -[visit_exp `%X%`_shape(Lnn_1, `%`_dim(M_1))] -[visit_exp (Lnn_1, `%`_dim(M_1))] -[visit_exp Lnn_1] -[visit_id Lnn_1] not free -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp $half(half, 0, M_2)] -[visit_exp half] -[visit_id half] not free -[visit_exp 0] -[visit_exp M_2] -[visit_id M_2] not free -[visit_exp M_2] -[visit_id M_2] not free -[visit_exp (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*`}))] -[visit_exp c*{c <- `c*`}*{`c*` <- `c**`}] -[scope_enter c*] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[visit_id c*] not free -[visit_id c*] no dims -[scope_exit c*] -[visit_exp `c**`] -[visit_id c**] no dims -[visit_id c**] -[visit_exp $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*`})] -[visit_exp Lnn_2] -[visit_id Lnn_2] not free -[visit_exp $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`}] -[scope_enter c_1] -[visit_exp $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)] -[visit_exp `%X%`_shape(Lnn_1, `%`_dim(M_1))] -[visit_exp (Lnn_1, `%`_dim(M_1))] -[visit_exp Lnn_1] -[visit_id Lnn_1] not free -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] not free -[visit_exp `%X%`_shape(Lnn_2, `%`_dim(M_2))] -[visit_exp (Lnn_2, `%`_dim(M_2))] -[visit_exp Lnn_2] -[visit_id Lnn_2] not free -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] not free -[visit_exp vcvtop] -[visit_id vcvtop] not free -[visit_exp c_1] -[visit_id c_1] not free -[visit_id c_1] not free -[scope_exit c_1] -[visit_exp `c_1*`] -[visit_id c_1*] not free -[visit_id c_1*] no dims -[visit_exp (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`})] -[visit_exp v] -[visit_id v] not free -[visit_exp $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}] -[scope_enter c*] -[visit_exp $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})] -[visit_exp `%X%`_shape(Lnn_2, `%`_dim(M_2))] -[visit_exp (Lnn_2, `%`_dim(M_2))] -[visit_exp Lnn_2] -[visit_id Lnn_2] not free -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] not free -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[visit_id c*] not free -[visit_id c*] no dims -[scope_exit c*] -[visit_exp `c**`] -[visit_id c**] not free -[visit_id c**] no dims -=> - ;; ../../../../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)) - -- 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*`})) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) -[check_dims] Lnn_1 Lnn_2 M_1 M_2 c c_1 v v_1 vcvtop -[visit_exp `%X%`_shape(Lnn_1, `%`_dim(M_1))] -[visit_exp (Lnn_1, `%`_dim(M_1))] -[visit_exp Lnn_1] -[visit_id Lnn_1] -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] -[visit_exp `%X%`_shape(Lnn_2, `%`_dim(M_2))] -[visit_exp (Lnn_2, `%`_dim(M_2))] -[visit_exp Lnn_2] -[visit_id Lnn_2] -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] -[visit_exp vcvtop] -[visit_id vcvtop] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v] -[visit_id v] -[visit_exp ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(`ZERO`_zero))] -[visit_exp $zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop)] -[visit_exp `%X%`_shape(Lnn_1, `%`_dim(M_1))] -[visit_exp (Lnn_1, `%`_dim(M_1))] -[visit_exp Lnn_1] -[visit_id Lnn_1] not free -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] not free -[visit_exp `%X%`_shape(Lnn_2, `%`_dim(M_2))] -[visit_exp (Lnn_2, `%`_dim(M_2))] -[visit_exp Lnn_2] -[visit_id Lnn_2] not free -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] not free -[visit_exp vcvtop] -[visit_id vcvtop] not free -[visit_exp ?(`ZERO`_zero)] -[visit_exp `ZERO`_zero] -[visit_exp ()] -[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1))] -[visit_exp c_1*{c_1 <- `c_1*`}] -[scope_enter c_1] -[visit_exp c_1] -[visit_id c_1] not free -[visit_id c_1] not free -[scope_exit c_1] -[visit_exp `c_1*`] -[visit_id c_1*] no dims -[visit_id c_1*] -[visit_exp $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)] -[visit_exp `%X%`_shape(Lnn_1, `%`_dim(M_1))] -[visit_exp (Lnn_1, `%`_dim(M_1))] -[visit_exp Lnn_1] -[visit_id Lnn_1] not free -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp (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{}))] -[visit_exp c*{c <- `c*`}*{`c*` <- `c**`}] -[scope_enter c*] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[visit_id c*] not free -[visit_id c*] no dims -[scope_exit c*] -[visit_exp `c**`] -[visit_id c**] no dims -[visit_id c**] -[visit_exp $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{})] -[visit_exp Lnn_2] -[visit_id Lnn_2] not free -[visit_exp $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{}] -[visit_exp $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`}] -[scope_enter c_1] -[visit_exp $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)] -[visit_exp `%X%`_shape(Lnn_1, `%`_dim(M_1))] -[visit_exp (Lnn_1, `%`_dim(M_1))] -[visit_exp Lnn_1] -[visit_id Lnn_1] not free -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] not free -[visit_exp `%X%`_shape(Lnn_2, `%`_dim(M_2))] -[visit_exp (Lnn_2, `%`_dim(M_2))] -[visit_exp Lnn_2] -[visit_id Lnn_2] not free -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] not free -[visit_exp vcvtop] -[visit_id vcvtop] not free -[visit_exp c_1] -[visit_id c_1] not free -[visit_id c_1] not free -[scope_exit c_1] -[visit_exp `c_1*`] -[visit_id c_1*] not free -[visit_id c_1*] no dims -[visit_exp [$zero(Lnn_2)]^M_1{}] -[visit_exp [$zero(Lnn_2)]] -[visit_exp $zero(Lnn_2)] -[visit_exp Lnn_2] -[visit_id Lnn_2] not free -[visit_exp M_1] -[visit_id M_1] not free -[visit_exp (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`})] -[visit_exp v] -[visit_id v] not free -[visit_exp $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}] -[scope_enter c*] -[visit_exp $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})] -[visit_exp `%X%`_shape(Lnn_2, `%`_dim(M_2))] -[visit_exp (Lnn_2, `%`_dim(M_2))] -[visit_exp Lnn_2] -[visit_id Lnn_2] not free -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] not free -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[visit_id c*] not free -[visit_id c*] no dims -[scope_exit c*] -[visit_exp `c**`] -[visit_id c**] not free -[visit_id c**] no dims -=> - ;; ../../../../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)) - -- 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{})) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) -[check_dims] Jnn_1 Jnn_2 M_1 M_2 c'_1 c'_2 c_1 c_2 sx v v_1 v_2 -[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] -[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] -[visit_exp sx] -[visit_id sx] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp v] -[visit_id v] -[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1))] -[visit_exp c_1*{c_1 <- `c_1*`}] -[scope_enter c_1] -[visit_exp c_1] -[visit_id c_1] not free -[visit_id c_1] not free -[scope_exit c_1] -[visit_exp `c_1*`] -[visit_id c_1*] no dims -[visit_id c_1*] -[visit_exp $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)] -[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] not free -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2))] -[visit_exp c_2*{c_2 <- `c_2*`}] -[scope_enter c_2] -[visit_exp c_2] -[visit_id c_2] not free -[visit_id c_2] not free -[scope_exit c_2] -[visit_exp `c_2*`] -[visit_id c_2*] no dims -[visit_id c_2*] -[visit_exp $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)] -[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] not free -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] not free -[visit_exp v_2] -[visit_id v_2] not free -[visit_exp (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, c_1)*{c_1 <- `c_1*`})] -[visit_exp c'_1*{c'_1 <- `c'_1*`}] -[scope_enter c'_1] -[visit_exp c'_1] -[visit_id c'_1] not free -[visit_id c'_1] not free -[scope_exit c'_1] -[visit_exp `c'_1*`] -[visit_id c'_1*] no dims -[visit_id c'_1*] -[visit_exp $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, c_1)*{c_1 <- `c_1*`}] -[scope_enter c_1] -[visit_exp $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, c_1)] -[visit_exp $lsize((Jnn_1 : Jnn <: lanetype))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] not free -[visit_exp $lsize((Jnn_2 : Jnn <: lanetype))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] not free -[visit_exp sx] -[visit_id sx] not free -[visit_exp c_1] -[visit_id c_1] not free -[visit_id c_1] not free -[scope_exit c_1] -[visit_exp `c_1*`] -[visit_id c_1*] not free -[visit_id c_1*] no dims -[visit_exp (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, c_2)*{c_2 <- `c_2*`})] -[visit_exp c'_2*{c'_2 <- `c'_2*`}] -[scope_enter c'_2] -[visit_exp c'_2] -[visit_id c'_2] not free -[visit_id c'_2] not free -[scope_exit c'_2] -[visit_exp `c'_2*`] -[visit_id c'_2*] no dims -[visit_id c'_2*] -[visit_exp $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, c_2)*{c_2 <- `c_2*`}] -[scope_enter c_2] -[visit_exp $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, c_2)] -[visit_exp $lsize((Jnn_1 : Jnn <: lanetype))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] not free -[visit_exp $lsize((Jnn_2 : Jnn <: lanetype))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] not free -[visit_exp sx] -[visit_id sx] not free -[visit_exp c_2] -[visit_id c_2] not free -[visit_id c_2] not free -[scope_exit c_2] -[visit_exp `c_2*`] -[visit_id c_2*] not free -[visit_id c_2*] no dims -[visit_exp (v = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), c'_1*{c'_1 <- `c'_1*`} ++ c'_2*{c'_2 <- `c'_2*`}))] -[visit_exp v] -[visit_id v] not free -[visit_exp $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), c'_1*{c'_1 <- `c'_1*`} ++ c'_2*{c'_2 <- `c'_2*`})] -[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] not free -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] not free -[visit_exp c'_1*{c'_1 <- `c'_1*`} ++ c'_2*{c'_2 <- `c'_2*`}] -[visit_exp c'_1*{c'_1 <- `c'_1*`}] -[scope_enter c'_1] -[visit_exp c'_1] -[visit_id c'_1] not free -[visit_id c'_1] not free -[scope_exit c'_1] -[visit_exp `c'_1*`] -[visit_id c'_1*] not free -[visit_id c'_1*] no dims -[visit_exp c'_2*{c'_2 <- `c'_2*`}] -[scope_enter c'_2] -[visit_exp c'_2] -[visit_id c'_2] not free -[visit_id c'_2] not free -[scope_exit c'_2] -[visit_exp `c'_2*`] -[visit_id c'_2*] not free -[visit_id c'_2*] no dims -=> - ;; ../../../../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 - -- 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, 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, c_2)*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), c'_1*{c'_1 <- `c'_1*`} ++ c'_2*{c'_2 <- `c'_2*`})) -[check_dims] N _ shape_1 shape_2 sx vec_ -DecD ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN(N)*) : iN(N)*, sx : sx, vec_ : vec_(`V128`_Vnn)) : vec_(`V128`_Vnn) -[visit_id shape_1] not free -[visit_id shape_2] not free -[visit_id N] not free -[visit_id _] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[visit_id sx] not free -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_exp `V128`_Vnn] -[visit_exp ()] -[check_dims] Jnn_1 Jnn_2 M_1 M_2 c c'_1 c_1 sx v_1 -[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] -[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] -[visit_exp sx] -[visit_id sx] -[visit_exp v_1] -[visit_id v_1] -[visit_exp $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), c*{c <- `c*`})] -[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] not free -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] not free -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] no dims -[visit_id c*] -[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1))] -[visit_exp c_1*{c_1 <- `c_1*`}] -[scope_enter c_1] -[visit_exp c_1] -[visit_id c_1] not free -[visit_id c_1] not free -[scope_exit c_1] -[visit_exp `c_1*`] -[visit_id c_1*] no dims -[visit_id c_1*] -[visit_exp $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)] -[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] not free -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1)*{c_1 <- `c_1*`})] -[visit_exp c'_1*{c'_1 <- `c'_1*`}] -[scope_enter c'_1] -[visit_exp c'_1] -[visit_id c'_1] not free -[visit_id c'_1] not free -[scope_exit c'_1] -[visit_exp `c'_1*`] -[visit_id c'_1*] no dims -[visit_id c'_1*] -[visit_exp $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1)*{c_1 <- `c_1*`}] -[scope_enter c_1] -[visit_exp $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1)] -[visit_exp $lsizenn1((Jnn_1 : Jnn <: lanetype))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] not free -[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] not free -[visit_exp sx] -[visit_id sx] not free -[visit_exp c_1] -[visit_id c_1] not free -[visit_id c_1] not free -[scope_exit c_1] -[visit_exp `c_1*`] -[visit_id c_1*] not free -[visit_id c_1*] no dims -[visit_exp (c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}))] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[visit_exp $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`})] -[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] not free -[visit_exp c'_1*{c'_1 <- `c'_1*`}] -[scope_enter c'_1] -[visit_exp c'_1] -[visit_id c'_1] not free -[visit_id c'_1] not free -[scope_exit c'_1] -[visit_exp `c'_1*`] -[visit_id c'_1*] not free -[visit_id c'_1*] no dims -=> - ;; ../../../../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*`}) - -- 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, c_1)*{c_1 <- `c_1*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`})) -[check_dims] N _ laneidx shape_1 shape_2 sx vec_ -DecD 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) -[visit_id shape_1] not free -[visit_id shape_2] not free -[visit_id N] not free -[visit_id _] not free -[visit_exp N] -[visit_id N] not free -[visit_id _] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[visit_id sx] not free -[visit_id sx] not free -[visit_id laneidx] not free -[visit_id laneidx] not free -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_id vec_] not free -[visit_exp `V128`_Vnn] -[visit_exp ()] -[visit_exp `V128`_Vnn] -[visit_exp ()] -[check_dims] Jnn_1 Jnn_2 M_1 M_2 c c'_1 c'_2 c_1 c_2 i k sx_1 sx_2 v_1 v_2 -[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] -[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] -[visit_exp sx_1] -[visit_id sx_1] -[visit_exp sx_2] -[visit_id sx_2] -[visit_exp i] -[visit_id i] -[visit_exp k] -[visit_id k] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), c*{c <- `c*`})] -[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] not free -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] not free -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] no dims -[visit_id c*] -[visit_exp (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)[i!`%`_laneidx.0 : k!`%`_laneidx.0])] -[visit_exp c_1*{c_1 <- `c_1*`}] -[scope_enter c_1] -[visit_exp c_1] -[visit_id c_1] not free -[visit_id c_1] not free -[scope_exit c_1] -[visit_exp `c_1*`] -[visit_id c_1*] no dims -[visit_id c_1*] -[visit_exp $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)[i!`%`_laneidx.0 : k!`%`_laneidx.0]] -[visit_exp $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)] -[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] not free -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp i!`%`_laneidx.0] -[visit_exp i!`%`_laneidx] -[visit_exp i] -[visit_id i] not free -[visit_exp k!`%`_laneidx.0] -[visit_exp k!`%`_laneidx] -[visit_exp k] -[visit_id k] not free -[visit_exp (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)[i!`%`_laneidx.0 : k!`%`_laneidx.0])] -[visit_exp c_2*{c_2 <- `c_2*`}] -[scope_enter c_2] -[visit_exp c_2] -[visit_id c_2] not free -[visit_id c_2] not free -[scope_exit c_2] -[visit_exp `c_2*`] -[visit_id c_2*] no dims -[visit_id c_2*] -[visit_exp $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)[i!`%`_laneidx.0 : k!`%`_laneidx.0]] -[visit_exp $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)] -[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] not free -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] not free -[visit_exp v_2] -[visit_id v_2] not free -[visit_exp i!`%`_laneidx.0] -[visit_exp i!`%`_laneidx] -[visit_exp i] -[visit_id i] not free -[visit_exp k!`%`_laneidx.0] -[visit_exp k!`%`_laneidx] -[visit_exp k] -[visit_id k] not free -[visit_exp (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*`})] -[visit_exp c'_1*{c'_1 <- `c'_1*`}] -[scope_enter c'_1] -[visit_exp c'_1] -[visit_id c'_1] not free -[visit_id c'_1] not free -[scope_exit c'_1] -[visit_exp `c'_1*`] -[visit_id c'_1*] no dims -[visit_id c'_1*] -[visit_exp $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, c_1)*{c_1 <- `c_1*`}] -[scope_enter c_1] -[visit_exp $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, c_1)] -[visit_exp $lsizenn1((Jnn_1 : Jnn <: lanetype))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] not free -[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] not free -[visit_exp sx_1] -[visit_id sx_1] not free -[visit_exp c_1] -[visit_id c_1] not free -[visit_id c_1] not free -[scope_exit c_1] -[visit_exp `c_1*`] -[visit_id c_1*] not free -[visit_id c_1*] no dims -[visit_exp (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*`})] -[visit_exp c'_2*{c'_2 <- `c'_2*`}] -[scope_enter c'_2] -[visit_exp c'_2] -[visit_id c'_2] not free -[visit_id c'_2] not free -[scope_exit c'_2] -[visit_exp `c'_2*`] -[visit_id c'_2*] no dims -[visit_id c'_2*] -[visit_exp $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_2, c_2)*{c_2 <- `c_2*`}] -[scope_enter c_2] -[visit_exp $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_2, c_2)] -[visit_exp $lsizenn1((Jnn_1 : Jnn <: lanetype))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] not free -[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] not free -[visit_exp sx_2] -[visit_id sx_2] not free -[visit_exp c_2] -[visit_id c_2] not free -[visit_id c_2] not free -[scope_exit c_2] -[visit_exp `c_2*`] -[visit_id c_2*] not free -[visit_id c_2*] no dims -[visit_exp (c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`}))] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[visit_exp $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})] -[visit_exp $lsizenn2((Jnn_2 : Jnn <: lanetype))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] not free -[visit_exp c'_1*{c'_1 <- `c'_1*`}] -[scope_enter c'_1] -[visit_exp c'_1] -[visit_id c'_1] not free -[visit_id c'_1] not free -[scope_exit c'_1] -[visit_exp `c'_1*`] -[visit_id c'_1*] not free -[visit_id c'_1*] no dims -[visit_exp c'_2*{c'_2 <- `c'_2*`}] -[scope_enter c'_2] -[visit_exp c'_2] -[visit_id c'_2] not free -[visit_id c'_2] not free -[scope_exit c'_2] -[visit_exp `c'_2*`] -[visit_id c'_2*] not free -[visit_id c'_2*] no dims -=> - ;; ../../../../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*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)[i!`%`_laneidx.0 : k!`%`_laneidx.0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)[i!`%`_laneidx.0 : k!`%`_laneidx.0]) - -- if (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*`}) - -- if (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*`}) - -- if (c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) -[check_dims] N _ -DecD ivadd_pairwise_(N : N, iN(N)*) : iN(N)* -[visit_id N] not free -[visit_id _] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N i j_1 j_2 -[visit_exp N] -[visit_id N] -[visit_exp i*{i <- `i*`}] -[scope_enter i] -[visit_exp i] -[visit_id i] not free -[visit_id i] not free -[scope_exit i] -[visit_exp `i*`] -[visit_id i*] no dims -[visit_id i*] -[visit_exp $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`}] -[scope_enter j_1] -[scope_enter j_2] -[visit_exp $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))] -[visit_exp N] -[visit_id N] not free -[visit_exp `%`_iN(j_1)] -[visit_exp (j_1)] -[visit_exp j_1] -[visit_id j_1] not free -[visit_exp `%`_iN(j_2)] -[visit_exp (j_2)] -[visit_exp j_2] -[visit_id j_2] not free -[visit_id j_1] not free -[visit_id j_2] not free -[scope_exit j_2] -[scope_exit j_1] -[visit_exp `j_1*`] -[visit_id j_1*] no dims -[visit_id j_1*] -[visit_exp `j_2*`] -[visit_id j_2*] no dims -[visit_id j_2*] -[visit_exp ($concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = i!`%`_iN.0*{i <- `i*`})] -[visit_exp $concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`})] -[visit_exp [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}] -[scope_enter j_1] -[scope_enter j_2] -[visit_exp [j_1 j_2]] -[visit_exp j_1] -[visit_id j_1] not free -[visit_exp j_2] -[visit_id j_2] not free -[visit_id j_1] not free -[visit_id j_2] not free -[scope_exit j_2] -[scope_exit j_1] -[visit_exp `j_1*`] -[visit_id j_1*] not free -[visit_id j_1*] no dims -[visit_exp `j_2*`] -[visit_id j_2*] not free -[visit_id j_2*] no dims -[visit_exp i!`%`_iN.0*{i <- `i*`}] -[scope_enter i] -[visit_exp i!`%`_iN.0] -[visit_exp i!`%`_iN] -[visit_exp i] -[visit_id i] not free -[visit_id i] not free -[scope_exit i] -[visit_exp `i*`] -[visit_id i*] not free -[visit_id i*] no dims -=> - ;; ../../../../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*`}) -[check_dims] N _ -DecD ivmul_(N : N, iN(N)*, iN(N)*) : iN(N)* -[visit_id N] not free -[visit_id _] not free -[visit_exp N] -[visit_id N] not free -[visit_id _] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N i_1 i_2 -[visit_exp N] -[visit_id N] -[visit_exp i_1*{i_1 <- `i_1*`}] -[scope_enter i_1] -[visit_exp i_1] -[visit_id i_1] not free -[visit_id i_1] not free -[scope_exit i_1] -[visit_exp `i_1*`] -[visit_id i_1*] no dims -[visit_id i_1*] -[visit_exp i_2*{i_2 <- `i_2*`}] -[scope_enter i_2] -[visit_exp i_2] -[visit_id i_2] not free -[visit_id i_2] not free -[scope_exit i_2] -[visit_exp `i_2*`] -[visit_id i_2*] no dims -[visit_id i_2*] -[visit_exp $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}] -[scope_enter i_1] -[scope_enter i_2] -[visit_exp $imul_(N, i_1, i_2)] -[visit_exp N] -[visit_id N] not free -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp i_2] -[visit_id i_2] not free -[visit_id i_1] not free -[visit_id i_2] not free -[scope_exit i_2] -[scope_exit i_1] -[visit_exp `i_1*`] -[visit_id i_1*] not free -[visit_id i_1*] no dims -[visit_exp `i_2*`] -[visit_id i_2*] not free -[visit_id i_2*] no dims -=> - ;; ../../../../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*`} -[check_dims] N _ -DecD ivdot_(N : N, iN(N)*, iN(N)*) : iN(N)* -[visit_id N] not free -[visit_id _] not free -[visit_exp N] -[visit_id N] not free -[visit_id _] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N i_1 i_2 j_1 j_2 -[visit_exp N] -[visit_id N] -[visit_exp i_1*{i_1 <- `i_1*`}] -[scope_enter i_1] -[visit_exp i_1] -[visit_id i_1] not free -[visit_id i_1] not free -[scope_exit i_1] -[visit_exp `i_1*`] -[visit_id i_1*] no dims -[visit_id i_1*] -[visit_exp i_2*{i_2 <- `i_2*`}] -[scope_enter i_2] -[visit_exp i_2] -[visit_id i_2] not free -[visit_id i_2] not free -[scope_exit i_2] -[visit_exp `i_2*`] -[visit_id i_2*] no dims -[visit_id i_2*] -[visit_exp $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`}] -[scope_enter j_1] -[scope_enter j_2] -[visit_exp $iadd_(N, j_1, j_2)] -[visit_exp N] -[visit_id N] not free -[visit_exp j_1] -[visit_id j_1] not free -[visit_exp j_2] -[visit_id j_2] not free -[visit_id j_1] not free -[visit_id j_2] not free -[scope_exit j_2] -[scope_exit j_1] -[visit_exp `j_1*`] -[visit_id j_1*] no dims -[visit_id j_1*] -[visit_exp `j_2*`] -[visit_id j_2*] no dims -[visit_id j_2*] -[visit_exp ($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*`})] -[visit_exp $concat_(syntax iN(N), [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`})] -[visit_exp N] -[visit_id N] not free -[visit_exp [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}] -[scope_enter j_1] -[scope_enter j_2] -[visit_exp [j_1 j_2]] -[visit_exp j_1] -[visit_id j_1] not free -[visit_exp j_2] -[visit_id j_2] not free -[visit_id j_1] not free -[visit_id j_2] not free -[scope_exit j_2] -[scope_exit j_1] -[visit_exp `j_1*`] -[visit_id j_1*] not free -[visit_id j_1*] no dims -[visit_exp `j_2*`] -[visit_id j_2*] not free -[visit_id j_2*] no dims -[visit_exp $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}] -[scope_enter i_1] -[scope_enter i_2] -[visit_exp $imul_(N, i_1, i_2)] -[visit_exp N] -[visit_id N] not free -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp i_2] -[visit_id i_2] not free -[visit_id i_1] not free -[visit_id i_2] not free -[scope_exit i_2] -[scope_exit i_1] -[visit_exp `i_1*`] -[visit_id i_1*] not free -[visit_id i_1*] no dims -[visit_exp `i_2*`] -[visit_id i_2*] not free -[visit_id i_2*] no dims -=> - ;; ../../../../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*`}) -[check_dims] N _ -DecD ivdot_sat_(N : N, iN(N)*, iN(N)*) : iN(N)* -[visit_id N] not free -[visit_id _] not free -[visit_exp N] -[visit_id N] not free -[visit_id _] not free -[visit_exp N] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -[check_dims] N i_1 i_2 j_1 j_2 -[visit_exp N] -[visit_id N] -[visit_exp i_1*{i_1 <- `i_1*`}] -[scope_enter i_1] -[visit_exp i_1] -[visit_id i_1] not free -[visit_id i_1] not free -[scope_exit i_1] -[visit_exp `i_1*`] -[visit_id i_1*] no dims -[visit_id i_1*] -[visit_exp i_2*{i_2 <- `i_2*`}] -[scope_enter i_2] -[visit_exp i_2] -[visit_id i_2] not free -[visit_id i_2] not free -[scope_exit i_2] -[visit_exp `i_2*`] -[visit_id i_2*] no dims -[visit_id i_2*] -[visit_exp $iadd_sat_(N, `S`_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`}] -[scope_enter j_1] -[scope_enter j_2] -[visit_exp $iadd_sat_(N, `S`_sx, j_1, j_2)] -[visit_exp N] -[visit_id N] not free -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp j_1] -[visit_id j_1] not free -[visit_exp j_2] -[visit_id j_2] not free -[visit_id j_1] not free -[visit_id j_2] not free -[scope_exit j_2] -[scope_exit j_1] -[visit_exp `j_1*`] -[visit_id j_1*] no dims -[visit_id j_1*] -[visit_exp `j_2*`] -[visit_id j_2*] no dims -[visit_id j_2*] -[visit_exp ($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*`})] -[visit_exp $concat_(syntax iN(N), [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`})] -[visit_exp N] -[visit_id N] not free -[visit_exp [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}] -[scope_enter j_1] -[scope_enter j_2] -[visit_exp [j_1 j_2]] -[visit_exp j_1] -[visit_id j_1] not free -[visit_exp j_2] -[visit_id j_2] not free -[visit_id j_1] not free -[visit_id j_2] not free -[scope_exit j_2] -[scope_exit j_1] -[visit_exp `j_1*`] -[visit_id j_1*] not free -[visit_id j_1*] no dims -[visit_exp `j_2*`] -[visit_id j_2*] not free -[visit_id j_2*] no dims -[visit_exp $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}] -[scope_enter i_1] -[scope_enter i_2] -[visit_exp $imul_(N, i_1, i_2)] -[visit_exp N] -[visit_id N] not free -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp i_2] -[visit_id i_2] not free -[visit_id i_1] not free -[visit_id i_2] not free -[scope_exit i_2] -[scope_exit i_1] -[visit_exp `i_1*`] -[visit_id i_1*] not free -[visit_id i_1*] no dims -[visit_exp `i_2*`] -[visit_id i_2*] not free -[visit_id i_2*] no dims -=> - ;; ../../../../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*`}) -[check_dims] Jnn_1 Jnn_2 M_1 M_2 sx v_1 -[visit_exp `%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))] -[visit_exp (`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))] -[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] -[visit_exp `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))] -[visit_exp (`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))] -[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] -[visit_exp `EXTADD_PAIRWISE`_vextunop__(sx)] -[visit_exp (sx)] -[visit_exp sx] -[visit_id sx] -[visit_exp v_1] -[visit_id v_1] -[visit_exp $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)] -[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] not free -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] not free -[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] not free -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] not free -[visit_exp sx] -[visit_id sx] not free -[visit_exp v_1] -[visit_id v_1] not free -=> - ;; ../../../../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) -[check_dims] Jnn_1 Jnn_2 M_1 M_2 half sx v_1 v_2 -[visit_exp `%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))] -[visit_exp (`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))] -[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] -[visit_exp `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))] -[visit_exp (`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))] -[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] -[visit_exp `EXTMUL`_vextbinop__(half, sx)] -[visit_exp (half, sx)] -[visit_exp half] -[visit_id half] -[visit_exp sx] -[visit_id sx] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $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)] -[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] not free -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] not free -[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] not free -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] not free -[visit_exp sx] -[visit_id sx] not free -[visit_exp sx] -[visit_id sx] not free -[visit_exp `%`_laneidx($half(half, 0, M_2))] -[visit_exp ($half(half, 0, M_2))] -[visit_exp $half(half, 0, M_2)] -[visit_exp half] -[visit_id half] not free -[visit_exp 0] -[visit_exp M_2] -[visit_id M_2] not free -[visit_exp `%`_laneidx(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -=> - ;; ../../../../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) -[check_dims] Jnn_1 Jnn_2 M_1 M_2 v_1 v_2 -[visit_exp `%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))] -[visit_exp (`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))] -[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] -[visit_exp `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))] -[visit_exp (`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))] -[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] -[visit_exp `DOTS`_vextbinop__] -[visit_exp ()] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $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)] -[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] not free -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] not free -[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] not free -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] not free -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_laneidx(0)] -[visit_exp (0)] -[visit_exp 0] -[visit_exp `%`_laneidx(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -=> - ;; ../../../../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) -[check_dims] Jnn_1 Jnn_2 M_1 M_2 v_1 v_2 -[visit_exp `%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))] -[visit_exp (`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))] -[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] -[visit_exp `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))] -[visit_exp (`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))] -[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] -[visit_exp `RELAXED_DOTS`_vextbinop__] -[visit_exp ()] -[visit_exp v_1] -[visit_id v_1] -[visit_exp v_2] -[visit_id v_2] -[visit_exp $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)] -[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] not free -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] not free -[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] not free -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] not free -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp $relaxed2($R_idot, syntax sx, `S`_sx, `U`_sx)] -[visit_exp $R_idot] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_laneidx(0)] -[visit_exp (0)] -[visit_exp 0] -[visit_exp `%`_laneidx(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] not free -[visit_exp v_1] -[visit_id v_1] not free -[visit_exp v_2] -[visit_id v_2] not free -=> - ;; ../../../../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) -[check_dims] Jnn Jnn_1 Jnn_2 M M_1 M_2 c c' c'' c_1 c_2 c_3 -[visit_exp `%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))] -[visit_exp (`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))] -[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] -[visit_exp `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))] -[visit_exp (`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))] -[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] -[visit_exp `RELAXED_DOT_ADDS`_vextternop__] -[visit_exp ()] -[visit_exp c_1] -[visit_id c_1] -[visit_exp c_2] -[visit_id c_2] -[visit_exp c_3] -[visit_id c_3] -[visit_exp c] -[visit_id c] -[visit_exp ($jsizenn(Jnn) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))))] -[visit_exp $jsizenn(Jnn)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))] -[visit_exp 2] -[visit_exp $lsizenn1((Jnn_1 : Jnn <: lanetype))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] not free -[visit_exp (M = (2 * M_2))] -[visit_exp M] -[visit_id M] -[visit_exp (2 * M_2)] -[visit_exp 2] -[visit_exp M_2] -[visit_id M_2] not free -[visit_exp (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))] -[visit_exp c'] -[visit_id c'] -[visit_exp $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)] -[visit_exp `%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))] -[visit_exp (`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))] -[visit_exp `%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp ((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))] -[visit_exp (Jnn_1 : Jnn <: lanetype)] -[visit_exp Jnn_1] -[visit_id Jnn_1] not free -[visit_exp `%`_dim(M_1)] -[visit_exp (M_1)] -[visit_exp M_1] -[visit_id M_1] not free -[visit_exp `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))] -[visit_exp (`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp `RELAXED_DOTS`_vextbinop__] -[visit_exp ()] -[visit_exp c_1] -[visit_id c_1] not free -[visit_exp c_2] -[visit_id c_2] not free -[visit_exp (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'))] -[visit_exp c''] -[visit_id c''] -[visit_exp $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')] -[visit_exp `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))] -[visit_exp (`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))] -[visit_exp (`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))] -[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] not free -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] not free -[visit_exp `EXTADD_PAIRWISE`_vextunop__(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp c'] -[visit_id c'] not free -[visit_exp (c <- $vbinop_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), `ADD`_vbinop_, c'', c_3))] -[visit_exp c] -[visit_id c] not free -[visit_exp $vbinop_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), `ADD`_vbinop_, c'', c_3)] -[visit_exp `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp ((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))] -[visit_exp (Jnn_2 : Jnn <: lanetype)] -[visit_exp Jnn_2] -[visit_id Jnn_2] not free -[visit_exp `%`_dim(M_2)] -[visit_exp (M_2)] -[visit_exp M_2] -[visit_id M_2] not free -[visit_exp `ADD`_vbinop_] -[visit_exp ()] -[visit_exp c''] -[visit_id c''] not free -[visit_exp c_3] -[visit_id c_3] not free -=> - ;; ../../../../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)))) - -- 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))), `RELAXED_DOTS`_vextbinop__, 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))), `EXTADD_PAIRWISE`_vextunop__(`S`_sx), c')) - -- if (c <- $vbinop_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), `ADD`_vbinop_, c'', c_3)) -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[scope_enter tagaddr] -[visit_id tagaddr] not free -[visit_id tagaddr] no dims -[scope_exit tagaddr] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter globaladdr] -[visit_id globaladdr] not free -[visit_id globaladdr] no dims -[scope_exit globaladdr] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter memaddr] -[visit_id memaddr] not free -[visit_id memaddr] no dims -[scope_exit memaddr] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter tableaddr] -[visit_id tableaddr] not free -[visit_id tableaddr] no dims -[scope_exit tableaddr] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter funcaddr] -[visit_id funcaddr] not free -[visit_id funcaddr] no dims -[scope_exit funcaddr] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[check_dims] -[check_dims] numtype -[scope_enter numtype] -[visit_id numtype] not free -[visit_exp numtype] -[visit_id numtype] not free -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit numtype] ---- 1 --- -[check_dims] numtype ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] vectype -[scope_enter vectype] -[visit_id vectype] not free -[visit_exp vectype] -[visit_id vectype] not free -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit vectype] ---- 1 --- -[check_dims] vectype ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter u31] -[visit_id u31] not free -[visit_id u31] no dims -[scope_exit u31] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter structaddr] -[visit_id structaddr] not free -[visit_id structaddr] no dims -[scope_exit structaddr] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter arrayaddr] -[visit_id arrayaddr] not free -[visit_id arrayaddr] no dims -[scope_exit arrayaddr] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter funcaddr] -[visit_id funcaddr] not free -[visit_id funcaddr] no dims -[scope_exit funcaddr] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter exnaddr] -[visit_id exnaddr] not free -[visit_id exnaddr] no dims -[scope_exit exnaddr] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter hostaddr] -[visit_id hostaddr] not free -[visit_id hostaddr] no dims -[scope_exit hostaddr] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter addrref] -[visit_id addrref] not free -[visit_id addrref] no dims -[scope_exit addrref] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter heaptype] -[visit_id heaptype] not free -[visit_id heaptype] no dims -[scope_exit heaptype] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[check_dims] -[scope_enter val*] -[visit_id val*] not free -[visit_id val*] no dims -[scope_exit val*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter exnaddr] -[visit_id exnaddr] not free -[visit_id exnaddr] no dims -[scope_exit exnaddr] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[check_dims] -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[check_dims] -[scope_enter tagtype] -[visit_id tagtype] not free -[visit_id tagtype] no dims -[scope_exit tagtype] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter globaltype] -[visit_id globaltype] not free -[visit_id globaltype] no dims -[scope_exit globaltype] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter val] -[visit_id val] not free -[visit_id val] no dims -[scope_exit val] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter memtype] -[visit_id memtype] not free -[visit_id memtype] no dims -[scope_exit memtype] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter byte*] -[visit_id byte*] not free -[visit_id byte*] no dims -[scope_exit byte*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter tabletype] -[visit_id tabletype] not free -[visit_id tabletype] no dims -[scope_exit tabletype] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter ref*] -[visit_id ref*] not free -[visit_id ref*] no dims -[scope_exit ref*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter deftype] -[visit_id deftype] not free -[visit_id deftype] no dims -[scope_exit deftype] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter moduleinst] -[visit_id moduleinst] not free -[visit_id moduleinst] no dims -[scope_exit moduleinst] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter funccode] -[visit_id funccode] not free -[visit_id funccode] no dims -[scope_exit funccode] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter byte*] -[visit_id byte*] not free -[visit_id byte*] no dims -[scope_exit byte*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter elemtype] -[visit_id elemtype] not free -[visit_id elemtype] no dims -[scope_exit elemtype] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter ref*] -[visit_id ref*] not free -[visit_id ref*] no dims -[scope_exit ref*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter name] -[visit_id name] not free -[visit_id name] no dims -[scope_exit name] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter externaddr] -[visit_id externaddr] not free -[visit_id externaddr] no dims -[scope_exit externaddr] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] packtype -[scope_enter packtype] -[visit_id packtype] not free -[visit_exp $psizenn(packtype)] -[visit_exp packtype] -[visit_id packtype] not free -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit packtype] ---- 1 --- -[check_dims] packtype ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[check_dims] -[scope_enter deftype] -[visit_id deftype] not free -[visit_id deftype] no dims -[scope_exit deftype] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter fieldval*] -[visit_id fieldval*] not free -[visit_id fieldval*] no dims -[scope_exit fieldval*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter deftype] -[visit_id deftype] not free -[visit_id deftype] no dims -[scope_exit deftype] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter fieldval*] -[visit_id fieldval*] not free -[visit_id fieldval*] no dims -[scope_exit fieldval*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter tagaddr] -[visit_id tagaddr] not free -[visit_id tagaddr] no dims -[scope_exit tagaddr] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter val*] -[visit_id val*] not free -[visit_id val*] no dims -[scope_exit val*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter deftype*] -[visit_id deftype*] not free -[visit_id deftype*] no dims -[scope_exit deftype*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter tagaddr*] -[visit_id tagaddr*] not free -[visit_id tagaddr*] no dims -[scope_exit tagaddr*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter globaladdr*] -[visit_id globaladdr*] not free -[visit_id globaladdr*] no dims -[scope_exit globaladdr*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter memaddr*] -[visit_id memaddr*] not free -[visit_id memaddr*] no dims -[scope_exit memaddr*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter tableaddr*] -[visit_id tableaddr*] not free -[visit_id tableaddr*] no dims -[scope_exit tableaddr*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter funcaddr*] -[visit_id funcaddr*] not free -[visit_id funcaddr*] no dims -[scope_exit funcaddr*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter dataaddr*] -[visit_id dataaddr*] not free -[visit_id dataaddr*] no dims -[scope_exit dataaddr*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter elemaddr*] -[visit_id elemaddr*] not free -[visit_id elemaddr*] no dims -[scope_exit elemaddr*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter exportinst*] -[visit_id exportinst*] not free -[visit_id exportinst*] no dims -[scope_exit exportinst*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter taginst*] -[visit_id taginst*] not free -[visit_id taginst*] no dims -[scope_exit taginst*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter globalinst*] -[visit_id globalinst*] not free -[visit_id globalinst*] no dims -[scope_exit globalinst*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter meminst*] -[visit_id meminst*] not free -[visit_id meminst*] no dims -[scope_exit meminst*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter tableinst*] -[visit_id tableinst*] not free -[visit_id tableinst*] no dims -[scope_exit tableinst*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter funcinst*] -[visit_id funcinst*] not free -[visit_id funcinst*] no dims -[scope_exit funcinst*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter datainst*] -[visit_id datainst*] not free -[visit_id datainst*] no dims -[scope_exit datainst*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter eleminst*] -[visit_id eleminst*] not free -[visit_id eleminst*] no dims -[scope_exit eleminst*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter structinst*] -[visit_id structinst*] not free -[visit_id structinst*] no dims -[scope_exit structinst*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter arrayinst*] -[visit_id arrayinst*] not free -[visit_id arrayinst*] no dims -[scope_exit arrayinst*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter exninst*] -[visit_id exninst*] not free -[visit_id exninst*] no dims -[scope_exit exninst*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter val?*] -[visit_id val?*] not free -[visit_id val?*] no dims -[scope_exit val?*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter moduleinst] -[visit_id moduleinst] not free -[visit_id moduleinst] no dims -[scope_exit moduleinst] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter n] -[visit_id n] not free -[visit_id n] no dims -[scope_enter instr*] -[visit_id instr*] not free -[visit_id instr*] no dims -[scope_enter instr*] -[visit_id instr*] not free -[visit_id instr*] no dims -[scope_exit instr*] -[scope_exit instr*] -[scope_exit n] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter n] -[visit_id n] not free -[visit_id n] no dims -[scope_enter frame] -[visit_id frame] not free -[visit_id frame] no dims -[scope_enter instr*] -[visit_id instr*] not free -[visit_id instr*] no dims -[scope_exit instr*] -[scope_exit frame] -[scope_exit n] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter n] -[visit_id n] not free -[visit_id n] no dims -[scope_enter catch*] -[visit_id catch*] not free -[visit_id catch*] no dims -[scope_enter instr*] -[visit_id instr*] not free -[visit_id instr*] no dims -[scope_exit instr*] -[scope_exit catch*] -[scope_exit n] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter store] -[visit_id store] not free -[visit_id store] no dims -[scope_enter frame] -[visit_id frame] not free -[visit_id frame] no dims -[scope_exit frame] -[scope_exit store] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter state] -[visit_id state] not free -[visit_id state] no dims -[scope_enter instr*] -[visit_id instr*] not free -[visit_id instr*] no dims -[scope_exit instr*] -[scope_exit state] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -DecD Ki : nat -[check_dims] -[visit_exp 1024] -=> - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $Ki = 1024 -[check_dims] storagetype val -DecD packfield_(storagetype : storagetype, val : val) : fieldval -[visit_id storagetype] not free -[visit_id val] not free -[check_dims] _ fieldval storagetype -DecD unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val -[visit_id storagetype] not free -[visit_id _] not free -[visit_id fieldval] not free -[check_dims] val valtype -[visit_exp (valtype : valtype <: storagetype)] -[visit_exp valtype] -[visit_id valtype] -[visit_exp val] -[visit_id val] -[visit_exp (val : val <: fieldval)] -[visit_exp val] -[visit_id val] not free -=> - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $packfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), val) = (val : val <: fieldval) -[check_dims] i packtype -[visit_exp (packtype : packtype <: storagetype)] -[visit_exp packtype] -[visit_id packtype] -[visit_exp `CONST`_val(`I32`_numtype, i)] -[visit_exp (`I32`_numtype, i)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i] -[visit_id i] -[visit_exp `PACK`_fieldval(packtype, $wrap__(32, $psize(packtype), i))] -[visit_exp (packtype, $wrap__(32, $psize(packtype), i))] -[visit_exp packtype] -[visit_id packtype] not free -[visit_exp $wrap__(32, $psize(packtype), i)] -[visit_exp 32] -[visit_exp $psize(packtype)] -[visit_exp packtype] -[visit_id packtype] not free -[visit_exp i] -[visit_id i] not free -=> - ;; ../../../../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)) -[check_dims] val valtype -[visit_exp (valtype : valtype <: storagetype)] -[visit_exp valtype] -[visit_id valtype] -[visit_exp ?()] -[visit_exp (val : val <: fieldval)] -[visit_exp val] -[visit_id val] -[visit_exp val] -[visit_id val] not free -=> - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $unpackfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), ?(), (val : val <: fieldval)) = val -[check_dims] i packtype sx -[visit_exp (packtype : packtype <: storagetype)] -[visit_exp packtype] -[visit_id packtype] -[visit_exp ?(sx)] -[visit_exp sx] -[visit_id sx] -[visit_exp `PACK`_fieldval(packtype, i)] -[visit_exp (packtype, i)] -[visit_exp packtype] -[visit_id packtype] not free -[visit_exp i] -[visit_id i] -[visit_exp `CONST`_val(`I32`_numtype, $extend__($psize(packtype), 32, sx, i))] -[visit_exp (`I32`_numtype, $extend__($psize(packtype), 32, sx, i))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp $extend__($psize(packtype), 32, sx, i)] -[visit_exp $psize(packtype)] -[visit_exp packtype] -[visit_id packtype] not free -[visit_exp 32] -[visit_exp sx] -[visit_id sx] not free -[visit_exp i] -[visit_id i] not free -=> - ;; ../../../../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)) -[check_dims] _ -DecD tagsxa(externaddr*) : tagaddr* -[visit_id _] not free -[check_dims] _ -DecD globalsxa(externaddr*) : globaladdr* -[visit_id _] not free -[check_dims] _ -DecD memsxa(externaddr*) : memaddr* -[visit_id _] not free -[check_dims] _ -DecD tablesxa(externaddr*) : tableaddr* -[visit_id _] not free -[check_dims] _ -DecD funcsxa(externaddr*) : funcaddr* -[visit_id _] not free -[check_dims] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $tagsxa([]) = [] -[check_dims] a xa -[visit_exp [`TAG`_externaddr(a)] ++ xa*{xa <- `xa*`}] -[visit_exp [`TAG`_externaddr(a)]] -[visit_exp `TAG`_externaddr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp xa*{xa <- `xa*`}] -[scope_enter xa] -[visit_exp xa] -[visit_id xa] not free -[visit_id xa] not free -[scope_exit xa] -[visit_exp `xa*`] -[visit_id xa*] no dims -[visit_id xa*] -[visit_exp [a] ++ $tagsxa(xa*{xa <- `xa*`})] -[visit_exp [a]] -[visit_exp a] -[visit_id a] not free -[visit_exp $tagsxa(xa*{xa <- `xa*`})] -[visit_exp xa*{xa <- `xa*`}] -[scope_enter xa] -[visit_exp xa] -[visit_id xa] not free -[visit_id xa] not free -[scope_exit xa] -[visit_exp `xa*`] -[visit_id xa*] not free -[visit_id xa*] no dims -=> - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $tagsxa{a : addr, `xa*` : externaddr*}([`TAG`_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tagsxa(xa*{xa <- `xa*`}) -[check_dims] externaddr xa -[visit_exp [externaddr] ++ xa*{xa <- `xa*`}] -[visit_exp [externaddr]] -[visit_exp externaddr] -[visit_id externaddr] -[visit_exp xa*{xa <- `xa*`}] -[scope_enter xa] -[visit_exp xa] -[visit_id xa] not free -[visit_id xa] not free -[scope_exit xa] -[visit_exp `xa*`] -[visit_id xa*] no dims -[visit_id xa*] -[visit_exp $tagsxa(xa*{xa <- `xa*`})] -[visit_exp xa*{xa <- `xa*`}] -[scope_enter xa] -[visit_exp xa] -[visit_id xa] not free -[visit_id xa] not free -[scope_exit xa] -[visit_exp `xa*`] -[visit_id xa*] not free -[visit_id xa*] no dims -=> - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $tagsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $tagsxa(xa*{xa <- `xa*`}) - -- otherwise -[check_dims] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $globalsxa([]) = [] -[check_dims] a xa -[visit_exp [`GLOBAL`_externaddr(a)] ++ xa*{xa <- `xa*`}] -[visit_exp [`GLOBAL`_externaddr(a)]] -[visit_exp `GLOBAL`_externaddr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp xa*{xa <- `xa*`}] -[scope_enter xa] -[visit_exp xa] -[visit_id xa] not free -[visit_id xa] not free -[scope_exit xa] -[visit_exp `xa*`] -[visit_id xa*] no dims -[visit_id xa*] -[visit_exp [a] ++ $globalsxa(xa*{xa <- `xa*`})] -[visit_exp [a]] -[visit_exp a] -[visit_id a] not free -[visit_exp $globalsxa(xa*{xa <- `xa*`})] -[visit_exp xa*{xa <- `xa*`}] -[scope_enter xa] -[visit_exp xa] -[visit_id xa] not free -[visit_id xa] not free -[scope_exit xa] -[visit_exp `xa*`] -[visit_id xa*] not free -[visit_id xa*] no dims -=> - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $globalsxa{a : addr, `xa*` : externaddr*}([`GLOBAL`_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $globalsxa(xa*{xa <- `xa*`}) -[check_dims] externaddr xa -[visit_exp [externaddr] ++ xa*{xa <- `xa*`}] -[visit_exp [externaddr]] -[visit_exp externaddr] -[visit_id externaddr] -[visit_exp xa*{xa <- `xa*`}] -[scope_enter xa] -[visit_exp xa] -[visit_id xa] not free -[visit_id xa] not free -[scope_exit xa] -[visit_exp `xa*`] -[visit_id xa*] no dims -[visit_id xa*] -[visit_exp $globalsxa(xa*{xa <- `xa*`})] -[visit_exp xa*{xa <- `xa*`}] -[scope_enter xa] -[visit_exp xa] -[visit_id xa] not free -[visit_id xa] not free -[scope_exit xa] -[visit_exp `xa*`] -[visit_id xa*] not free -[visit_id xa*] no dims -=> - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $globalsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $globalsxa(xa*{xa <- `xa*`}) - -- otherwise -[check_dims] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $memsxa([]) = [] -[check_dims] a xa -[visit_exp [`MEM`_externaddr(a)] ++ xa*{xa <- `xa*`}] -[visit_exp [`MEM`_externaddr(a)]] -[visit_exp `MEM`_externaddr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp xa*{xa <- `xa*`}] -[scope_enter xa] -[visit_exp xa] -[visit_id xa] not free -[visit_id xa] not free -[scope_exit xa] -[visit_exp `xa*`] -[visit_id xa*] no dims -[visit_id xa*] -[visit_exp [a] ++ $memsxa(xa*{xa <- `xa*`})] -[visit_exp [a]] -[visit_exp a] -[visit_id a] not free -[visit_exp $memsxa(xa*{xa <- `xa*`})] -[visit_exp xa*{xa <- `xa*`}] -[scope_enter xa] -[visit_exp xa] -[visit_id xa] not free -[visit_id xa] not free -[scope_exit xa] -[visit_exp `xa*`] -[visit_id xa*] not free -[visit_id xa*] no dims -=> - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $memsxa{a : addr, `xa*` : externaddr*}([`MEM`_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $memsxa(xa*{xa <- `xa*`}) -[check_dims] externaddr xa -[visit_exp [externaddr] ++ xa*{xa <- `xa*`}] -[visit_exp [externaddr]] -[visit_exp externaddr] -[visit_id externaddr] -[visit_exp xa*{xa <- `xa*`}] -[scope_enter xa] -[visit_exp xa] -[visit_id xa] not free -[visit_id xa] not free -[scope_exit xa] -[visit_exp `xa*`] -[visit_id xa*] no dims -[visit_id xa*] -[visit_exp $memsxa(xa*{xa <- `xa*`})] -[visit_exp xa*{xa <- `xa*`}] -[scope_enter xa] -[visit_exp xa] -[visit_id xa] not free -[visit_id xa] not free -[scope_exit xa] -[visit_exp `xa*`] -[visit_id xa*] not free -[visit_id xa*] no dims -=> - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $memsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $memsxa(xa*{xa <- `xa*`}) - -- otherwise -[check_dims] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $tablesxa([]) = [] -[check_dims] a xa -[visit_exp [`TABLE`_externaddr(a)] ++ xa*{xa <- `xa*`}] -[visit_exp [`TABLE`_externaddr(a)]] -[visit_exp `TABLE`_externaddr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp xa*{xa <- `xa*`}] -[scope_enter xa] -[visit_exp xa] -[visit_id xa] not free -[visit_id xa] not free -[scope_exit xa] -[visit_exp `xa*`] -[visit_id xa*] no dims -[visit_id xa*] -[visit_exp [a] ++ $tablesxa(xa*{xa <- `xa*`})] -[visit_exp [a]] -[visit_exp a] -[visit_id a] not free -[visit_exp $tablesxa(xa*{xa <- `xa*`})] -[visit_exp xa*{xa <- `xa*`}] -[scope_enter xa] -[visit_exp xa] -[visit_id xa] not free -[visit_id xa] not free -[scope_exit xa] -[visit_exp `xa*`] -[visit_id xa*] not free -[visit_id xa*] no dims -=> - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $tablesxa{a : addr, `xa*` : externaddr*}([`TABLE`_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tablesxa(xa*{xa <- `xa*`}) -[check_dims] externaddr xa -[visit_exp [externaddr] ++ xa*{xa <- `xa*`}] -[visit_exp [externaddr]] -[visit_exp externaddr] -[visit_id externaddr] -[visit_exp xa*{xa <- `xa*`}] -[scope_enter xa] -[visit_exp xa] -[visit_id xa] not free -[visit_id xa] not free -[scope_exit xa] -[visit_exp `xa*`] -[visit_id xa*] no dims -[visit_id xa*] -[visit_exp $tablesxa(xa*{xa <- `xa*`})] -[visit_exp xa*{xa <- `xa*`}] -[scope_enter xa] -[visit_exp xa] -[visit_id xa] not free -[visit_id xa] not free -[scope_exit xa] -[visit_exp `xa*`] -[visit_id xa*] not free -[visit_id xa*] no dims -=> - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $tablesxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $tablesxa(xa*{xa <- `xa*`}) - -- otherwise -[check_dims] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $funcsxa([]) = [] -[check_dims] a xa -[visit_exp [`FUNC`_externaddr(a)] ++ xa*{xa <- `xa*`}] -[visit_exp [`FUNC`_externaddr(a)]] -[visit_exp `FUNC`_externaddr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp xa*{xa <- `xa*`}] -[scope_enter xa] -[visit_exp xa] -[visit_id xa] not free -[visit_id xa] not free -[scope_exit xa] -[visit_exp `xa*`] -[visit_id xa*] no dims -[visit_id xa*] -[visit_exp [a] ++ $funcsxa(xa*{xa <- `xa*`})] -[visit_exp [a]] -[visit_exp a] -[visit_id a] not free -[visit_exp $funcsxa(xa*{xa <- `xa*`})] -[visit_exp xa*{xa <- `xa*`}] -[scope_enter xa] -[visit_exp xa] -[visit_id xa] not free -[visit_id xa] not free -[scope_exit xa] -[visit_exp `xa*`] -[visit_id xa*] not free -[visit_id xa*] no dims -=> - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $funcsxa{a : addr, `xa*` : externaddr*}([`FUNC`_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $funcsxa(xa*{xa <- `xa*`}) -[check_dims] externaddr xa -[visit_exp [externaddr] ++ xa*{xa <- `xa*`}] -[visit_exp [externaddr]] -[visit_exp externaddr] -[visit_id externaddr] -[visit_exp xa*{xa <- `xa*`}] -[scope_enter xa] -[visit_exp xa] -[visit_id xa] not free -[visit_id xa] not free -[scope_exit xa] -[visit_exp `xa*`] -[visit_id xa*] no dims -[visit_id xa*] -[visit_exp $funcsxa(xa*{xa <- `xa*`})] -[visit_exp xa*{xa <- `xa*`}] -[scope_enter xa] -[visit_exp xa] -[visit_id xa] not free -[visit_id xa] not free -[scope_exit xa] -[visit_exp `xa*`] -[visit_id xa*] not free -[visit_id xa*] no dims -=> - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $funcsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $funcsxa(xa*{xa <- `xa*`}) - -- otherwise -[check_dims] state -DecD store(state : state) : store -[visit_id state] not free -[check_dims] state -DecD frame(state : state) : frame -[visit_id state] not free -[check_dims] f s -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp s] -[visit_id s] not free -=> - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $store{s : store, f : frame}(`%;%`_state(s, f)) = s -[check_dims] f s -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp f] -[visit_id f] not free -=> - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $frame{s : store, f : frame}(`%;%`_state(s, f)) = f -[check_dims] state -DecD tagaddr(state : state) : tagaddr* -[visit_id state] not free -[check_dims] f s -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp f.`MODULE`_frame.`TAGS`_moduleinst] -[visit_exp f.`MODULE`_frame] -[visit_exp f] -[visit_id f] not free -=> - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $tagaddr{s : store, f : frame}(`%;%`_state(s, f)) = f.`MODULE`_frame.`TAGS`_moduleinst -[check_dims] state -DecD moduleinst(state : state) : moduleinst -[visit_id state] not free -[check_dims] state -DecD taginst(state : state) : taginst* -[visit_id state] not free -[check_dims] state -DecD globalinst(state : state) : globalinst* -[visit_id state] not free -[check_dims] state -DecD meminst(state : state) : meminst* -[visit_id state] not free -[check_dims] state -DecD tableinst(state : state) : tableinst* -[visit_id state] not free -[check_dims] state -DecD funcinst(state : state) : funcinst* -[visit_id state] not free -[check_dims] state -DecD datainst(state : state) : datainst* -[visit_id state] not free -[check_dims] state -DecD eleminst(state : state) : eleminst* -[visit_id state] not free -[check_dims] state -DecD structinst(state : state) : structinst* -[visit_id state] not free -[check_dims] state -DecD arrayinst(state : state) : arrayinst* -[visit_id state] not free -[check_dims] state -DecD exninst(state : state) : exninst* -[visit_id state] not free -[check_dims] f s -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp f.`MODULE`_frame] -[visit_exp f] -[visit_id f] not free -=> - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $moduleinst{s : store, f : frame}(`%;%`_state(s, f)) = f.`MODULE`_frame -[check_dims] f s -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp s.`TAGS`_store] -[visit_exp s] -[visit_id s] not free -=> - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $taginst{s : store, f : frame}(`%;%`_state(s, f)) = s.`TAGS`_store -[check_dims] f s -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp s.`GLOBALS`_store] -[visit_exp s] -[visit_id s] not free -=> - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $globalinst{s : store, f : frame}(`%;%`_state(s, f)) = s.`GLOBALS`_store -[check_dims] f s -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp s.`MEMS`_store] -[visit_exp s] -[visit_id s] not free -=> - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $meminst{s : store, f : frame}(`%;%`_state(s, f)) = s.`MEMS`_store -[check_dims] f s -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp s.`TABLES`_store] -[visit_exp s] -[visit_id s] not free -=> - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $tableinst{s : store, f : frame}(`%;%`_state(s, f)) = s.`TABLES`_store -[check_dims] f s -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp s.`FUNCS`_store] -[visit_exp s] -[visit_id s] not free -=> - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $funcinst{s : store, f : frame}(`%;%`_state(s, f)) = s.`FUNCS`_store -[check_dims] f s -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp s.`DATAS`_store] -[visit_exp s] -[visit_id s] not free -=> - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $datainst{s : store, f : frame}(`%;%`_state(s, f)) = s.`DATAS`_store -[check_dims] f s -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp s.`ELEMS`_store] -[visit_exp s] -[visit_id s] not free -=> - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $eleminst{s : store, f : frame}(`%;%`_state(s, f)) = s.`ELEMS`_store -[check_dims] f s -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp s.`STRUCTS`_store] -[visit_exp s] -[visit_id s] not free -=> - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $structinst{s : store, f : frame}(`%;%`_state(s, f)) = s.`STRUCTS`_store -[check_dims] f s -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp s.`ARRAYS`_store] -[visit_exp s] -[visit_id s] not free -=> - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $arrayinst{s : store, f : frame}(`%;%`_state(s, f)) = s.`ARRAYS`_store -[check_dims] f s -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp s.`EXNS`_store] -[visit_exp s] -[visit_id s] not free -=> - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $exninst{s : store, f : frame}(`%;%`_state(s, f)) = s.`EXNS`_store -[check_dims] state typeidx -DecD type(state : state, typeidx : typeidx) : deftype -[visit_id state] not free -[visit_id typeidx] not free -[check_dims] state tagidx -DecD tag(state : state, tagidx : tagidx) : taginst -[visit_id state] not free -[visit_id tagidx] not free -[check_dims] globalidx state -DecD global(state : state, globalidx : globalidx) : globalinst -[visit_id state] not free -[visit_id globalidx] not free -[check_dims] memidx state -DecD mem(state : state, memidx : memidx) : meminst -[visit_id state] not free -[visit_id memidx] not free -[check_dims] state tableidx -DecD table(state : state, tableidx : tableidx) : tableinst -[visit_id state] not free -[visit_id tableidx] not free -[check_dims] funcidx state -DecD func(state : state, funcidx : funcidx) : funcinst -[visit_id state] not free -[visit_id funcidx] not free -[check_dims] dataidx state -DecD data(state : state, dataidx : dataidx) : datainst -[visit_id state] not free -[visit_id dataidx] not free -[check_dims] state tableidx -DecD elem(state : state, tableidx : tableidx) : eleminst -[visit_id state] not free -[visit_id tableidx] not free -[check_dims] localidx state -DecD local(state : state, localidx : localidx) : val? -[visit_id state] not free -[visit_id localidx] not free -[check_dims] f s x -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp x] -[visit_id x] -[visit_exp f.`MODULE`_frame.`TYPES`_moduleinst[x!`%`_idx.0]] -[visit_exp f.`MODULE`_frame.`TYPES`_moduleinst] -[visit_exp f.`MODULE`_frame] -[visit_exp f] -[visit_id f] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -=> - ;; ../../../../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] -[check_dims] f s x -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp x] -[visit_id x] -[visit_exp s.`TAGS`_store[f.`MODULE`_frame.`TAGS`_moduleinst[x!`%`_idx.0]]] -[visit_exp s.`TAGS`_store] -[visit_exp s] -[visit_id s] not free -[visit_exp f.`MODULE`_frame.`TAGS`_moduleinst[x!`%`_idx.0]] -[visit_exp f.`MODULE`_frame.`TAGS`_moduleinst] -[visit_exp f.`MODULE`_frame] -[visit_exp f] -[visit_id f] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -=> - ;; ../../../../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]] -[check_dims] f s x -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp x] -[visit_id x] -[visit_exp s.`GLOBALS`_store[f.`MODULE`_frame.`GLOBALS`_moduleinst[x!`%`_idx.0]]] -[visit_exp s.`GLOBALS`_store] -[visit_exp s] -[visit_id s] not free -[visit_exp f.`MODULE`_frame.`GLOBALS`_moduleinst[x!`%`_idx.0]] -[visit_exp f.`MODULE`_frame.`GLOBALS`_moduleinst] -[visit_exp f.`MODULE`_frame] -[visit_exp f] -[visit_id f] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -=> - ;; ../../../../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]] -[check_dims] f s x -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp x] -[visit_id x] -[visit_exp s.`MEMS`_store[f.`MODULE`_frame.`MEMS`_moduleinst[x!`%`_idx.0]]] -[visit_exp s.`MEMS`_store] -[visit_exp s] -[visit_id s] not free -[visit_exp f.`MODULE`_frame.`MEMS`_moduleinst[x!`%`_idx.0]] -[visit_exp f.`MODULE`_frame.`MEMS`_moduleinst] -[visit_exp f.`MODULE`_frame] -[visit_exp f] -[visit_id f] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -=> - ;; ../../../../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]] -[check_dims] f s x -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp x] -[visit_id x] -[visit_exp s.`TABLES`_store[f.`MODULE`_frame.`TABLES`_moduleinst[x!`%`_idx.0]]] -[visit_exp s.`TABLES`_store] -[visit_exp s] -[visit_id s] not free -[visit_exp f.`MODULE`_frame.`TABLES`_moduleinst[x!`%`_idx.0]] -[visit_exp f.`MODULE`_frame.`TABLES`_moduleinst] -[visit_exp f.`MODULE`_frame] -[visit_exp f] -[visit_id f] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -=> - ;; ../../../../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]] -[check_dims] f s x -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp x] -[visit_id x] -[visit_exp s.`FUNCS`_store[f.`MODULE`_frame.`FUNCS`_moduleinst[x!`%`_idx.0]]] -[visit_exp s.`FUNCS`_store] -[visit_exp s] -[visit_id s] not free -[visit_exp f.`MODULE`_frame.`FUNCS`_moduleinst[x!`%`_idx.0]] -[visit_exp f.`MODULE`_frame.`FUNCS`_moduleinst] -[visit_exp f.`MODULE`_frame] -[visit_exp f] -[visit_id f] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -=> - ;; ../../../../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]] -[check_dims] f s x -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp x] -[visit_id x] -[visit_exp s.`DATAS`_store[f.`MODULE`_frame.`DATAS`_moduleinst[x!`%`_idx.0]]] -[visit_exp s.`DATAS`_store] -[visit_exp s] -[visit_id s] not free -[visit_exp f.`MODULE`_frame.`DATAS`_moduleinst[x!`%`_idx.0]] -[visit_exp f.`MODULE`_frame.`DATAS`_moduleinst] -[visit_exp f.`MODULE`_frame] -[visit_exp f] -[visit_id f] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -=> - ;; ../../../../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]] -[check_dims] f s x -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp x] -[visit_id x] -[visit_exp s.`ELEMS`_store[f.`MODULE`_frame.`ELEMS`_moduleinst[x!`%`_idx.0]]] -[visit_exp s.`ELEMS`_store] -[visit_exp s] -[visit_id s] not free -[visit_exp f.`MODULE`_frame.`ELEMS`_moduleinst[x!`%`_idx.0]] -[visit_exp f.`MODULE`_frame.`ELEMS`_moduleinst] -[visit_exp f.`MODULE`_frame] -[visit_exp f] -[visit_id f] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -=> - ;; ../../../../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]] -[check_dims] f s x -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp x] -[visit_id x] -[visit_exp f.`LOCALS`_frame[x!`%`_idx.0]] -[visit_exp f.`LOCALS`_frame] -[visit_exp f] -[visit_id f] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -=> - ;; ../../../../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] -[check_dims] localidx state val -DecD with_local(state : state, localidx : localidx, val : val) : state -[visit_id state] not free -[visit_id localidx] not free -[visit_id val] not free -[check_dims] globalidx state val -DecD with_global(state : state, globalidx : globalidx, val : val) : state -[visit_id state] not free -[visit_id globalidx] not free -[visit_id val] not free -[check_dims] nat ref state tableidx -DecD with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state -[visit_id state] not free -[visit_id tableidx] not free -[visit_id nat] not free -[visit_id ref] not free -[check_dims] state tableidx tableinst -DecD with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state -[visit_id state] not free -[visit_id tableidx] not free -[visit_id tableinst] not free -[check_dims] _ memidx nat state -DecD with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state -[visit_id state] not free -[visit_id memidx] not free -[visit_id nat] not free -[visit_id nat] not free -[visit_id _] not free -[check_dims] memidx meminst state -DecD with_meminst(state : state, memidx : memidx, meminst : meminst) : state -[visit_id state] not free -[visit_id memidx] not free -[visit_id meminst] not free -[check_dims] _ elemidx state -DecD with_elem(state : state, elemidx : elemidx, ref*) : state -[visit_id state] not free -[visit_id elemidx] not free -[visit_id _] not free -[check_dims] _ dataidx state -DecD with_data(state : state, dataidx : dataidx, byte*) : state -[visit_id state] not free -[visit_id dataidx] not free -[visit_id _] not free -[check_dims] fieldval nat state structaddr -DecD with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state -[visit_id state] not free -[visit_id structaddr] not free -[visit_id nat] not free -[visit_id fieldval] not free -[check_dims] arrayaddr fieldval nat state -DecD with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state -[visit_id state] not free -[visit_id arrayaddr] not free -[visit_id nat] not free -[visit_id fieldval] not free -[check_dims] f s v x -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp x] -[visit_id x] -[visit_exp v] -[visit_id v] -[visit_exp `%;%`_state(s, f[`LOCALS`_frame[x!`%`_idx.0] = ?(v)])] -[visit_exp (s, f[`LOCALS`_frame[x!`%`_idx.0] = ?(v)])] -[visit_exp s] -[visit_id s] not free -[visit_exp f[`LOCALS`_frame[x!`%`_idx.0] = ?(v)]] -[visit_exp f] -[visit_id f] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp ?(v)] -[visit_exp v] -[visit_id v] not free -=> - ;; ../../../../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)]) -[check_dims] f s v x -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp x] -[visit_id x] -[visit_exp v] -[visit_id v] -[visit_exp `%;%`_state(s[`GLOBALS`_store[f.`MODULE`_frame.`GLOBALS`_moduleinst[x!`%`_idx.0]].`VALUE`_globalinst = v], f)] -[visit_exp (s[`GLOBALS`_store[f.`MODULE`_frame.`GLOBALS`_moduleinst[x!`%`_idx.0]].`VALUE`_globalinst = v], f)] -[visit_exp s[`GLOBALS`_store[f.`MODULE`_frame.`GLOBALS`_moduleinst[x!`%`_idx.0]].`VALUE`_globalinst = v]] -[visit_exp s] -[visit_id s] not free -[visit_exp f.`MODULE`_frame.`GLOBALS`_moduleinst[x!`%`_idx.0]] -[visit_exp f.`MODULE`_frame.`GLOBALS`_moduleinst] -[visit_exp f.`MODULE`_frame] -[visit_exp f] -[visit_id f] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp v] -[visit_id v] not free -[visit_exp f] -[visit_id f] not free -=> - ;; ../../../../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) -[check_dims] f i r s x -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp x] -[visit_id x] -[visit_exp i] -[visit_id i] -[visit_exp r] -[visit_id r] -[visit_exp `%;%`_state(s[`TABLES`_store[f.`MODULE`_frame.`TABLES`_moduleinst[x!`%`_idx.0]].`REFS`_tableinst[i] = r], f)] -[visit_exp (s[`TABLES`_store[f.`MODULE`_frame.`TABLES`_moduleinst[x!`%`_idx.0]].`REFS`_tableinst[i] = r], f)] -[visit_exp s[`TABLES`_store[f.`MODULE`_frame.`TABLES`_moduleinst[x!`%`_idx.0]].`REFS`_tableinst[i] = r]] -[visit_exp s] -[visit_id s] not free -[visit_exp f.`MODULE`_frame.`TABLES`_moduleinst[x!`%`_idx.0]] -[visit_exp f.`MODULE`_frame.`TABLES`_moduleinst] -[visit_exp f.`MODULE`_frame] -[visit_exp f] -[visit_id f] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp i] -[visit_id i] not free -[visit_exp r] -[visit_id r] not free -[visit_exp f] -[visit_id f] not free -=> - ;; ../../../../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) -[check_dims] f s ti x -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp x] -[visit_id x] -[visit_exp ti] -[visit_id ti] -[visit_exp `%;%`_state(s[`TABLES`_store[f.`MODULE`_frame.`TABLES`_moduleinst[x!`%`_idx.0]] = ti], f)] -[visit_exp (s[`TABLES`_store[f.`MODULE`_frame.`TABLES`_moduleinst[x!`%`_idx.0]] = ti], f)] -[visit_exp s[`TABLES`_store[f.`MODULE`_frame.`TABLES`_moduleinst[x!`%`_idx.0]] = ti]] -[visit_exp s] -[visit_id s] not free -[visit_exp f.`MODULE`_frame.`TABLES`_moduleinst[x!`%`_idx.0]] -[visit_exp f.`MODULE`_frame.`TABLES`_moduleinst] -[visit_exp f.`MODULE`_frame] -[visit_exp f] -[visit_id f] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp ti] -[visit_id ti] not free -[visit_exp f] -[visit_id f] not free -=> - ;; ../../../../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) -[check_dims] b f i j s x -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp x] -[visit_id x] -[visit_exp i] -[visit_id i] -[visit_exp j] -[visit_id j] -[visit_exp b*{b <- `b*`}] -[scope_enter b] -[visit_exp b] -[visit_id b] not free -[visit_id b] not free -[scope_exit b] -[visit_exp `b*`] -[visit_id b*] no dims -[visit_id b*] -[visit_exp `%;%`_state(s[`MEMS`_store[f.`MODULE`_frame.`MEMS`_moduleinst[x!`%`_idx.0]].`BYTES`_meminst[i : j] = b*{b <- `b*`}], f)] -[visit_exp (s[`MEMS`_store[f.`MODULE`_frame.`MEMS`_moduleinst[x!`%`_idx.0]].`BYTES`_meminst[i : j] = b*{b <- `b*`}], f)] -[visit_exp s[`MEMS`_store[f.`MODULE`_frame.`MEMS`_moduleinst[x!`%`_idx.0]].`BYTES`_meminst[i : j] = b*{b <- `b*`}]] -[visit_exp s] -[visit_id s] not free -[visit_exp f.`MODULE`_frame.`MEMS`_moduleinst[x!`%`_idx.0]] -[visit_exp f.`MODULE`_frame.`MEMS`_moduleinst] -[visit_exp f.`MODULE`_frame] -[visit_exp f] -[visit_id f] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp i] -[visit_id i] not free -[visit_exp j] -[visit_id j] not free -[visit_exp b*{b <- `b*`}] -[scope_enter b] -[visit_exp b] -[visit_id b] not free -[visit_id b] not free -[scope_exit b] -[visit_exp `b*`] -[visit_id b*] not free -[visit_id b*] no dims -[visit_exp f] -[visit_id f] not free -=> - ;; ../../../../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) -[check_dims] f mi s x -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp x] -[visit_id x] -[visit_exp mi] -[visit_id mi] -[visit_exp `%;%`_state(s[`MEMS`_store[f.`MODULE`_frame.`MEMS`_moduleinst[x!`%`_idx.0]] = mi], f)] -[visit_exp (s[`MEMS`_store[f.`MODULE`_frame.`MEMS`_moduleinst[x!`%`_idx.0]] = mi], f)] -[visit_exp s[`MEMS`_store[f.`MODULE`_frame.`MEMS`_moduleinst[x!`%`_idx.0]] = mi]] -[visit_exp s] -[visit_id s] not free -[visit_exp f.`MODULE`_frame.`MEMS`_moduleinst[x!`%`_idx.0]] -[visit_exp f.`MODULE`_frame.`MEMS`_moduleinst] -[visit_exp f.`MODULE`_frame] -[visit_exp f] -[visit_id f] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp mi] -[visit_id mi] not free -[visit_exp f] -[visit_id f] not free -=> - ;; ../../../../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) -[check_dims] f r s x -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp x] -[visit_id x] -[visit_exp r*{r <- `r*`}] -[scope_enter r] -[visit_exp r] -[visit_id r] not free -[visit_id r] not free -[scope_exit r] -[visit_exp `r*`] -[visit_id r*] no dims -[visit_id r*] -[visit_exp `%;%`_state(s[`ELEMS`_store[f.`MODULE`_frame.`ELEMS`_moduleinst[x!`%`_idx.0]].`REFS`_eleminst = r*{r <- `r*`}], f)] -[visit_exp (s[`ELEMS`_store[f.`MODULE`_frame.`ELEMS`_moduleinst[x!`%`_idx.0]].`REFS`_eleminst = r*{r <- `r*`}], f)] -[visit_exp s[`ELEMS`_store[f.`MODULE`_frame.`ELEMS`_moduleinst[x!`%`_idx.0]].`REFS`_eleminst = r*{r <- `r*`}]] -[visit_exp s] -[visit_id s] not free -[visit_exp f.`MODULE`_frame.`ELEMS`_moduleinst[x!`%`_idx.0]] -[visit_exp f.`MODULE`_frame.`ELEMS`_moduleinst] -[visit_exp f.`MODULE`_frame] -[visit_exp f] -[visit_id f] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp r*{r <- `r*`}] -[scope_enter r] -[visit_exp r] -[visit_id r] not free -[visit_id r] not free -[scope_exit r] -[visit_exp `r*`] -[visit_id r*] not free -[visit_id r*] no dims -[visit_exp f] -[visit_id f] not free -=> - ;; ../../../../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) -[check_dims] b f s x -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp x] -[visit_id x] -[visit_exp b*{b <- `b*`}] -[scope_enter b] -[visit_exp b] -[visit_id b] not free -[visit_id b] not free -[scope_exit b] -[visit_exp `b*`] -[visit_id b*] no dims -[visit_id b*] -[visit_exp `%;%`_state(s[`DATAS`_store[f.`MODULE`_frame.`DATAS`_moduleinst[x!`%`_idx.0]].`BYTES`_datainst = b*{b <- `b*`}], f)] -[visit_exp (s[`DATAS`_store[f.`MODULE`_frame.`DATAS`_moduleinst[x!`%`_idx.0]].`BYTES`_datainst = b*{b <- `b*`}], f)] -[visit_exp s[`DATAS`_store[f.`MODULE`_frame.`DATAS`_moduleinst[x!`%`_idx.0]].`BYTES`_datainst = b*{b <- `b*`}]] -[visit_exp s] -[visit_id s] not free -[visit_exp f.`MODULE`_frame.`DATAS`_moduleinst[x!`%`_idx.0]] -[visit_exp f.`MODULE`_frame.`DATAS`_moduleinst] -[visit_exp f.`MODULE`_frame] -[visit_exp f] -[visit_id f] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp b*{b <- `b*`}] -[scope_enter b] -[visit_exp b] -[visit_id b] not free -[visit_id b] not free -[scope_exit b] -[visit_exp `b*`] -[visit_id b*] not free -[visit_id b*] no dims -[visit_exp f] -[visit_id f] not free -=> - ;; ../../../../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) -[check_dims] a f fv i s -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp a] -[visit_id a] -[visit_exp i] -[visit_id i] -[visit_exp fv] -[visit_id fv] -[visit_exp `%;%`_state(s[`STRUCTS`_store[a].`FIELDS`_structinst[i] = fv], f)] -[visit_exp (s[`STRUCTS`_store[a].`FIELDS`_structinst[i] = fv], f)] -[visit_exp s[`STRUCTS`_store[a].`FIELDS`_structinst[i] = fv]] -[visit_exp s] -[visit_id s] not free -[visit_exp a] -[visit_id a] not free -[visit_exp i] -[visit_id i] not free -[visit_exp fv] -[visit_id fv] not free -[visit_exp f] -[visit_id f] not free -=> - ;; ../../../../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) -[check_dims] a f fv i s -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp a] -[visit_id a] -[visit_exp i] -[visit_id i] -[visit_exp fv] -[visit_id fv] -[visit_exp `%;%`_state(s[`ARRAYS`_store[a].`FIELDS`_arrayinst[i] = fv], f)] -[visit_exp (s[`ARRAYS`_store[a].`FIELDS`_arrayinst[i] = fv], f)] -[visit_exp s[`ARRAYS`_store[a].`FIELDS`_arrayinst[i] = fv]] -[visit_exp s] -[visit_id s] not free -[visit_exp a] -[visit_id a] not free -[visit_exp i] -[visit_id i] not free -[visit_exp fv] -[visit_id fv] not free -[visit_exp f] -[visit_id f] not free -=> - ;; ../../../../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) -[check_dims] _ state -DecD add_structinst(state : state, structinst*) : state -[visit_id state] not free -[visit_id _] not free -[check_dims] _ state -DecD add_arrayinst(state : state, arrayinst*) : state -[visit_id state] not free -[visit_id _] not free -[check_dims] _ state -DecD add_exninst(state : state, exninst*) : state -[visit_id state] not free -[visit_id _] not free -[check_dims] f s si -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp si*{si <- `si*`}] -[scope_enter si] -[visit_exp si] -[visit_id si] not free -[visit_id si] not free -[scope_exit si] -[visit_exp `si*`] -[visit_id si*] no dims -[visit_id si*] -[visit_exp `%;%`_state(s[`STRUCTS`_store =++ si*{si <- `si*`}], f)] -[visit_exp (s[`STRUCTS`_store =++ si*{si <- `si*`}], f)] -[visit_exp s[`STRUCTS`_store =++ si*{si <- `si*`}]] -[visit_exp s] -[visit_id s] not free -[visit_exp si*{si <- `si*`}] -[scope_enter si] -[visit_exp si] -[visit_id si] not free -[visit_id si] not free -[scope_exit si] -[visit_exp `si*`] -[visit_id si*] not free -[visit_id si*] no dims -[visit_exp f] -[visit_id f] not free -=> - ;; ../../../../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) -[check_dims] ai f s -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp ai*{ai <- `ai*`}] -[scope_enter ai] -[visit_exp ai] -[visit_id ai] not free -[visit_id ai] not free -[scope_exit ai] -[visit_exp `ai*`] -[visit_id ai*] no dims -[visit_id ai*] -[visit_exp `%;%`_state(s[`ARRAYS`_store =++ ai*{ai <- `ai*`}], f)] -[visit_exp (s[`ARRAYS`_store =++ ai*{ai <- `ai*`}], f)] -[visit_exp s[`ARRAYS`_store =++ ai*{ai <- `ai*`}]] -[visit_exp s] -[visit_id s] not free -[visit_exp ai*{ai <- `ai*`}] -[scope_enter ai] -[visit_exp ai] -[visit_id ai] not free -[visit_id ai] not free -[scope_exit ai] -[visit_exp `ai*`] -[visit_id ai*] not free -[visit_id ai*] no dims -[visit_exp f] -[visit_id f] not free -=> - ;; ../../../../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) -[check_dims] exn f s -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp exn*{exn <- `exn*`}] -[scope_enter exn] -[visit_exp exn] -[visit_id exn] not free -[visit_id exn] not free -[scope_exit exn] -[visit_exp `exn*`] -[visit_id exn*] no dims -[visit_id exn*] -[visit_exp `%;%`_state(s[`EXNS`_store =++ exn*{exn <- `exn*`}], f)] -[visit_exp (s[`EXNS`_store =++ exn*{exn <- `exn*`}], f)] -[visit_exp s[`EXNS`_store =++ exn*{exn <- `exn*`}]] -[visit_exp s] -[visit_id s] not free -[visit_exp exn*{exn <- `exn*`}] -[scope_enter exn] -[visit_exp exn] -[visit_id exn] not free -[visit_id exn] not free -[scope_exit exn] -[visit_exp `exn*`] -[visit_id exn*] not free -[visit_id exn*] no dims -[visit_exp f] -[visit_id f] not free -=> - ;; ../../../../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) -[check_dims] nat ref tableinst -DecD growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst -[visit_id tableinst] not free -[visit_id nat] not free -[visit_id ref] not free -[check_dims] meminst nat -DecD growmem(meminst : meminst, nat : nat) : meminst -[visit_id meminst] not free -[visit_id nat] not free -[check_dims] at i i' j n r r' rt tableinst tableinst' -[visit_exp tableinst] -[visit_id tableinst] -[visit_exp n] -[visit_id n] -[visit_exp r] -[visit_id r] -[visit_exp tableinst'] -[visit_id tableinst'] -[visit_exp (tableinst = {`TYPE` `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), `REFS` r'*{r' <- `r'*`}})] -[visit_exp tableinst] -[visit_id tableinst] not free -[visit_exp {`TYPE` `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), `REFS` r'*{r' <- `r'*`}}] -[visit_exp `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt)] -[visit_exp (at, `[%..%]`_limits(i, j?{j <- `j?`}), rt)] -[visit_exp at] -[visit_id at] -[visit_exp `[%..%]`_limits(i, j?{j <- `j?`})] -[visit_exp (i, j?{j <- `j?`})] -[visit_exp i] -[visit_id i] -[visit_exp j?{j <- `j?`}] -[scope_enter j] -[visit_exp j] -[visit_id j] not free -[visit_id j] not free -[scope_exit j] -[visit_exp `j?`] -[visit_id j?] no dims -[visit_id j?] -[visit_exp rt] -[visit_id rt] -[visit_exp r'*{r' <- `r'*`}] -[scope_enter r'] -[visit_exp r'] -[visit_id r'] not free -[visit_id r'] not free -[scope_exit r'] -[visit_exp `r'*`] -[visit_id r'*] no dims -[visit_id r'*] -[visit_exp (tableinst' = {`TYPE` `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), `REFS` r'*{r' <- `r'*`} ++ r^n{}})] -[visit_exp tableinst'] -[visit_id tableinst'] not free -[visit_exp {`TYPE` `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), `REFS` r'*{r' <- `r'*`} ++ r^n{}}] -[visit_exp `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt)] -[visit_exp (at, `[%..%]`_limits(i', j?{j <- `j?`}), rt)] -[visit_exp at] -[visit_id at] not free -[visit_exp `[%..%]`_limits(i', j?{j <- `j?`})] -[visit_exp (i', j?{j <- `j?`})] -[visit_exp i'] -[visit_id i'] -[visit_exp j?{j <- `j?`}] -[scope_enter j] -[visit_exp j] -[visit_id j] not free -[visit_id j] not free -[scope_exit j] -[visit_exp `j?`] -[visit_id j?] not free -[visit_id j?] no dims -[visit_exp rt] -[visit_id rt] not free -[visit_exp r'*{r' <- `r'*`} ++ r^n{}] -[visit_exp r'*{r' <- `r'*`}] -[scope_enter r'] -[visit_exp r'] -[visit_id r'] not free -[visit_id r'] not free -[scope_exit r'] -[visit_exp `r'*`] -[visit_id r'*] not free -[visit_id r'*] no dims -[visit_exp r^n{}] -[visit_exp r] -[visit_id r] not free -[visit_exp n] -[visit_id n] not free -[visit_exp (i'!`%`_u64.0 = (|r'*{r' <- `r'*`}| + n))] -[visit_exp i'!`%`_u64.0] -[visit_exp i'!`%`_u64] -[visit_exp i'] -[visit_id i'] not free -[visit_exp (|r'*{r' <- `r'*`}| + n)] -[visit_exp |r'*{r' <- `r'*`}|] -[visit_exp r'*{r' <- `r'*`}] -[scope_enter r'] -[visit_exp r'] -[visit_id r'] not free -[visit_id r'] not free -[scope_exit r'] -[visit_exp `r'*`] -[visit_id r'*] not free -[visit_id r'*] no dims -[visit_exp n] -[visit_id n] not free -[scope_enter j] -[visit_exp (i'!`%`_u64.0 <= j!`%`_u64.0)] -[visit_exp i'!`%`_u64.0] -[visit_exp i'!`%`_u64] -[visit_exp i'] -[visit_id i'] not free -[visit_exp j!`%`_u64.0] -[visit_exp j!`%`_u64] -[visit_exp j] -[visit_id j] not free -[visit_id j] not free -[scope_exit j] -[visit_exp `j?`] -[visit_id j?] not free -[visit_id j?] no dims -=> - ;; ../../../../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' - -- 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 (i'!`%`_u64.0 = (|r'*{r' <- `r'*`}| + n)) - -- (if (i'!`%`_u64.0 <= j!`%`_u64.0))?{j <- `j?`} -[check_dims] at b i i' j meminst meminst' n -[visit_exp meminst] -[visit_id meminst] -[visit_exp n] -[visit_id n] -[visit_exp meminst'] -[visit_id meminst'] -[visit_exp (meminst = {`TYPE` `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), `BYTES` b*{b <- `b*`}})] -[visit_exp meminst] -[visit_id meminst] not free -[visit_exp {`TYPE` `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), `BYTES` b*{b <- `b*`}}] -[visit_exp `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))] -[visit_exp (at, `[%..%]`_limits(i, j?{j <- `j?`}))] -[visit_exp at] -[visit_id at] -[visit_exp `[%..%]`_limits(i, j?{j <- `j?`})] -[visit_exp (i, j?{j <- `j?`})] -[visit_exp i] -[visit_id i] -[visit_exp j?{j <- `j?`}] -[scope_enter j] -[visit_exp j] -[visit_id j] not free -[visit_id j] not free -[scope_exit j] -[visit_exp `j?`] -[visit_id j?] no dims -[visit_id j?] -[visit_exp b*{b <- `b*`}] -[scope_enter b] -[visit_exp b] -[visit_id b] not free -[visit_id b] not free -[scope_exit b] -[visit_exp `b*`] -[visit_id b*] no dims -[visit_id b*] -[visit_exp (meminst' = {`TYPE` `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), `BYTES` b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}})] -[visit_exp meminst'] -[visit_id meminst'] not free -[visit_exp {`TYPE` `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), `BYTES` b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}] -[visit_exp `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`}))] -[visit_exp (at, `[%..%]`_limits(i', j?{j <- `j?`}))] -[visit_exp at] -[visit_id at] not free -[visit_exp `[%..%]`_limits(i', j?{j <- `j?`})] -[visit_exp (i', j?{j <- `j?`})] -[visit_exp i'] -[visit_id i'] -[visit_exp j?{j <- `j?`}] -[scope_enter j] -[visit_exp j] -[visit_id j] not free -[visit_id j] not free -[scope_exit j] -[visit_exp `j?`] -[visit_id j?] not free -[visit_id j?] no dims -[visit_exp b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}] -[visit_exp b*{b <- `b*`}] -[scope_enter b] -[visit_exp b] -[visit_id b] not free -[visit_id b] not free -[scope_exit b] -[visit_exp `b*`] -[visit_id b*] not free -[visit_id b*] no dims -[visit_exp `%`_byte(0)^(n * (64 * $Ki)){}] -[visit_exp `%`_byte(0)] -[visit_exp (0)] -[visit_exp 0] -[visit_exp (n * (64 * $Ki))] -[visit_exp n] -[visit_id n] not free -[visit_exp (64 * $Ki)] -[visit_exp 64] -[visit_exp $Ki] -[visit_exp ((i'!`%`_u64.0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat)))] -[visit_exp (i'!`%`_u64.0 : nat <:> rat)] -[visit_exp i'!`%`_u64.0] -[visit_exp i'!`%`_u64] -[visit_exp i'] -[visit_id i'] not free -[visit_exp (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))] -[visit_exp ((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat))] -[visit_exp (|b*{b <- `b*`}| : nat <:> rat)] -[visit_exp |b*{b <- `b*`}|] -[visit_exp b*{b <- `b*`}] -[scope_enter b] -[visit_exp b] -[visit_id b] not free -[visit_id b] not free -[scope_exit b] -[visit_exp `b*`] -[visit_id b*] not free -[visit_id b*] no dims -[visit_exp ((64 * $Ki) : nat <:> rat)] -[visit_exp (64 * $Ki)] -[visit_exp 64] -[visit_exp $Ki] -[visit_exp (n : nat <:> rat)] -[visit_exp n] -[visit_id n] not free -[scope_enter j] -[visit_exp (i'!`%`_u64.0 <= j!`%`_u64.0)] -[visit_exp i'!`%`_u64.0] -[visit_exp i'!`%`_u64] -[visit_exp i'] -[visit_id i'] not free -[visit_exp j!`%`_u64.0] -[visit_exp j!`%`_u64] -[visit_exp j] -[visit_id j] not free -[visit_id j] not free -[scope_exit j] -[visit_exp `j?`] -[visit_id j?] not free -[visit_id j?] no dims -=> - ;; ../../../../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' - -- 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 ((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?`} -[check_dims] valtype -DecD default_(valtype : valtype) : val? -[visit_id valtype] not free -[check_dims] Inn -[visit_exp (Inn : Inn <: valtype)] -[visit_exp Inn] -[visit_id Inn] -[visit_exp ?(`CONST`_val((Inn : Inn <: numtype), `%`_num_(0)))] -[visit_exp `CONST`_val((Inn : Inn <: numtype), `%`_num_(0))] -[visit_exp ((Inn : Inn <: numtype), `%`_num_(0))] -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] not free -[visit_exp `%`_num_(0)] -[visit_exp (0)] -[visit_exp 0] -=> - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{Inn : Inn}((Inn : Inn <: valtype)) = ?(`CONST`_val((Inn : Inn <: numtype), `%`_num_(0))) -[check_dims] Fnn -[visit_exp (Fnn : Fnn <: valtype)] -[visit_exp Fnn] -[visit_id Fnn] -[visit_exp ?(`CONST`_val((Fnn : Fnn <: numtype), $fzero($size((Fnn : Fnn <: numtype)))))] -[visit_exp `CONST`_val((Fnn : Fnn <: numtype), $fzero($size((Fnn : Fnn <: numtype))))] -[visit_exp ((Fnn : Fnn <: numtype), $fzero($size((Fnn : Fnn <: numtype))))] -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] not free -[visit_exp $fzero($size((Fnn : Fnn <: numtype)))] -[visit_exp $size((Fnn : Fnn <: numtype))] -[visit_exp (Fnn : Fnn <: numtype)] -[visit_exp Fnn] -[visit_id Fnn] not free -=> - ;; ../../../../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))))) -[check_dims] Vnn -[visit_exp (Vnn : Vnn <: valtype)] -[visit_exp Vnn] -[visit_id Vnn] -[visit_exp ?(`VCONST`_val(Vnn, `%`_vec_(0)))] -[visit_exp `VCONST`_val(Vnn, `%`_vec_(0))] -[visit_exp (Vnn, `%`_vec_(0))] -[visit_exp Vnn] -[visit_id Vnn] not free -[visit_exp `%`_vec_(0)] -[visit_exp (0)] -[visit_exp 0] -=> - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{Vnn : Vnn}((Vnn : Vnn <: valtype)) = ?(`VCONST`_val(Vnn, `%`_vec_(0))) -[check_dims] ht -[visit_exp `REF`_valtype(?(`NULL`_null), ht)] -[visit_exp (?(`NULL`_null), ht)] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp ht] -[visit_id ht] -[visit_exp ?(`REF.NULL`_val(ht))] -[visit_exp `REF.NULL`_val(ht)] -[visit_exp (ht)] -[visit_exp ht] -[visit_id ht] not free -=> - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{ht : heaptype}(`REF`_valtype(?(`NULL`_null), ht)) = ?(`REF.NULL`_val(ht)) -[check_dims] ht -[visit_exp `REF`_valtype(?(), ht)] -[visit_exp (?(), ht)] -[visit_exp ?()] -[visit_exp ht] -[visit_id ht] -[visit_exp ?()] -=> - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{ht : heaptype}(`REF`_valtype(?(), ht)) = ?() -[check_dims] t -[visit_exp t] -[visit_id t] -[visit_exp ($default_(t) =/= ?())] -[visit_exp $default_(t)] -[visit_exp t] -[visit_id t] not free -[visit_exp ?()] -[check_dims] t -[visit_exp t] -[visit_id t] -[visit_exp ($default_(t) = ?())] -[visit_exp $default_(t)] -[visit_exp t] -[visit_id t] not free -[visit_exp ?()] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] c nt s -[visit_exp s] -[visit_id s] -[visit_exp `CONST`_num(nt, c)] -[visit_exp (nt, c)] -[visit_exp nt] -[visit_id nt] -[visit_exp c] -[visit_id c] -[visit_exp nt] -[visit_id nt] not free -[check_dims] c s vt -[visit_exp s] -[visit_id s] -[visit_exp `VCONST`_vec(vt, c)] -[visit_exp (vt, c)] -[visit_exp vt] -[visit_id vt] -[visit_exp c] -[visit_id c] -[visit_exp vt] -[visit_id vt] not free -[check_dims] ht ht' s -[visit_exp s] -[visit_id s] -[visit_exp `REF.NULL`_ref(ht)] -[visit_exp (ht)] -[visit_exp ht] -[visit_id ht] -[visit_exp `REF`_reftype(?(`NULL`_null), ht')] -[visit_exp (?(`NULL`_null), ht')] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp ht'] -[visit_id ht'] -[visit_exp ({`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}, ht', ht)] -[visit_exp {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp ?()] -[visit_exp []] -[visit_exp ht'] -[visit_id ht'] not free -[visit_exp ht] -[visit_id ht] not free -[check_dims] i s -[visit_exp s] -[visit_id s] -[visit_exp `REF.I31_NUM`_ref(i)] -[visit_exp (i)] -[visit_exp i] -[visit_id i] -[visit_exp `REF`_reftype(?(), `I31`_heaptype)] -[visit_exp (?(), `I31`_heaptype)] -[visit_exp ?()] -[visit_exp `I31`_heaptype] -[visit_exp ()] -[check_dims] a dt s -[visit_exp s] -[visit_id s] -[visit_exp `REF.STRUCT_ADDR`_ref(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp `REF`_reftype(?(), (dt : deftype <: heaptype))] -[visit_exp (?(), (dt : deftype <: heaptype))] -[visit_exp ?()] -[visit_exp (dt : deftype <: heaptype)] -[visit_exp dt] -[visit_id dt] -[visit_exp (s.`STRUCTS`_store[a].`TYPE`_structinst = dt)] -[visit_exp s.`STRUCTS`_store[a].`TYPE`_structinst] -[visit_exp s.`STRUCTS`_store[a]] -[visit_exp s.`STRUCTS`_store] -[visit_exp s] -[visit_id s] not free -[visit_exp a] -[visit_id a] not free -[visit_exp dt] -[visit_id dt] not free -[check_dims] a dt s -[visit_exp s] -[visit_id s] -[visit_exp `REF.ARRAY_ADDR`_ref(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp `REF`_reftype(?(), (dt : deftype <: heaptype))] -[visit_exp (?(), (dt : deftype <: heaptype))] -[visit_exp ?()] -[visit_exp (dt : deftype <: heaptype)] -[visit_exp dt] -[visit_id dt] -[visit_exp (s.`ARRAYS`_store[a].`TYPE`_arrayinst = dt)] -[visit_exp s.`ARRAYS`_store[a].`TYPE`_arrayinst] -[visit_exp s.`ARRAYS`_store[a]] -[visit_exp s.`ARRAYS`_store] -[visit_exp s] -[visit_id s] not free -[visit_exp a] -[visit_id a] not free -[visit_exp dt] -[visit_id dt] not free -[check_dims] a dt s -[visit_exp s] -[visit_id s] -[visit_exp `REF.FUNC_ADDR`_ref(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp `REF`_reftype(?(), (dt : deftype <: heaptype))] -[visit_exp (?(), (dt : deftype <: heaptype))] -[visit_exp ?()] -[visit_exp (dt : deftype <: heaptype)] -[visit_exp dt] -[visit_id dt] -[visit_exp (s.`FUNCS`_store[a].`TYPE`_funcinst = dt)] -[visit_exp s.`FUNCS`_store[a].`TYPE`_funcinst] -[visit_exp s.`FUNCS`_store[a]] -[visit_exp s.`FUNCS`_store] -[visit_exp s] -[visit_id s] not free -[visit_exp a] -[visit_id a] not free -[visit_exp dt] -[visit_id dt] not free -[check_dims] a exn s -[visit_exp s] -[visit_id s] -[visit_exp `REF.EXN_ADDR`_ref(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp `REF`_reftype(?(), `EXN`_heaptype)] -[visit_exp (?(), `EXN`_heaptype)] -[visit_exp ?()] -[visit_exp `EXN`_heaptype] -[visit_exp ()] -[visit_exp (s.`EXNS`_store[a] = exn)] -[visit_exp s.`EXNS`_store[a]] -[visit_exp s.`EXNS`_store] -[visit_exp s] -[visit_id s] not free -[visit_exp a] -[visit_id a] not free -[visit_exp exn] -[visit_id exn] -[check_dims] a s -[visit_exp s] -[visit_id s] -[visit_exp `REF.HOST_ADDR`_ref(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp `REF`_reftype(?(), `ANY`_heaptype)] -[visit_exp (?(), `ANY`_heaptype)] -[visit_exp ?()] -[visit_exp `ANY`_heaptype] -[visit_exp ()] -[check_dims] addrref s -[visit_exp s] -[visit_id s] -[visit_exp `REF.EXTERN`_ref(addrref)] -[visit_exp (addrref)] -[visit_exp addrref] -[visit_id addrref] -[visit_exp `REF`_reftype(?(), `EXTERN`_heaptype)] -[visit_exp (?(), `EXTERN`_heaptype)] -[visit_exp ?()] -[visit_exp `EXTERN`_heaptype] -[visit_exp ()] -[visit_exp (s, (addrref : addrref <: ref), `REF`_reftype(?(), `ANY`_heaptype))] -[visit_exp s] -[visit_id s] not free -[visit_exp (addrref : addrref <: ref)] -[visit_exp addrref] -[visit_id addrref] not free -[visit_exp `REF`_reftype(?(), `ANY`_heaptype)] -[visit_exp (?(), `ANY`_heaptype)] -[visit_exp ?()] -[visit_exp `ANY`_heaptype] -[visit_exp ()] -[check_dims] ref rt rt' s -[visit_exp s] -[visit_id s] -[visit_exp ref] -[visit_id ref] -[visit_exp rt] -[visit_id rt] -[visit_exp (s, ref, rt')] -[visit_exp s] -[visit_id s] not free -[visit_exp ref] -[visit_id ref] not free -[visit_exp rt'] -[visit_id rt'] -[visit_exp ({`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}, rt', rt)] -[visit_exp {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp ?()] -[visit_exp []] -[visit_exp rt'] -[visit_id rt'] not free -[visit_exp rt] -[visit_id rt] not free -[check_dims] nt num s -[visit_exp s] -[visit_id s] -[visit_exp (num : num <: val)] -[visit_exp num] -[visit_id num] -[visit_exp (nt : numtype <: valtype)] -[visit_exp nt] -[visit_id nt] -[visit_exp (s, num, nt)] -[visit_exp s] -[visit_id s] not free -[visit_exp num] -[visit_id num] not free -[visit_exp nt] -[visit_id nt] not free -[check_dims] s vec vt -[visit_exp s] -[visit_id s] -[visit_exp (vec : vec <: val)] -[visit_exp vec] -[visit_id vec] -[visit_exp (vt : vectype <: valtype)] -[visit_exp vt] -[visit_id vt] -[visit_exp (s, vec, vt)] -[visit_exp s] -[visit_id s] not free -[visit_exp vec] -[visit_id vec] not free -[visit_exp vt] -[visit_id vt] not free -[check_dims] ref rt s -[visit_exp s] -[visit_id s] -[visit_exp (ref : ref <: val)] -[visit_exp ref] -[visit_id ref] -[visit_exp (rt : reftype <: valtype)] -[visit_exp rt] -[visit_id rt] -[visit_exp (s, ref, rt)] -[visit_exp s] -[visit_id s] not free -[visit_exp ref] -[visit_id ref] not free -[visit_exp rt] -[visit_id rt] not free -[check_dims] -[check_dims] a s taginst -[visit_exp s] -[visit_id s] -[visit_exp `TAG`_externaddr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp `TAG`_externtype(taginst.`TYPE`_taginst)] -[visit_exp (taginst.`TYPE`_taginst)] -[visit_exp taginst.`TYPE`_taginst] -[visit_exp taginst] -[visit_id taginst] -[visit_exp (s.`TAGS`_store[a] = taginst)] -[visit_exp s.`TAGS`_store[a]] -[visit_exp s.`TAGS`_store] -[visit_exp s] -[visit_id s] not free -[visit_exp a] -[visit_id a] not free -[visit_exp taginst] -[visit_id taginst] not free -[check_dims] a globalinst s -[visit_exp s] -[visit_id s] -[visit_exp `GLOBAL`_externaddr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp `GLOBAL`_externtype(globalinst.`TYPE`_globalinst)] -[visit_exp (globalinst.`TYPE`_globalinst)] -[visit_exp globalinst.`TYPE`_globalinst] -[visit_exp globalinst] -[visit_id globalinst] -[visit_exp (s.`GLOBALS`_store[a] = globalinst)] -[visit_exp s.`GLOBALS`_store[a]] -[visit_exp s.`GLOBALS`_store] -[visit_exp s] -[visit_id s] not free -[visit_exp a] -[visit_id a] not free -[visit_exp globalinst] -[visit_id globalinst] not free -[check_dims] a meminst s -[visit_exp s] -[visit_id s] -[visit_exp `MEM`_externaddr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp `MEM`_externtype(meminst.`TYPE`_meminst)] -[visit_exp (meminst.`TYPE`_meminst)] -[visit_exp meminst.`TYPE`_meminst] -[visit_exp meminst] -[visit_id meminst] -[visit_exp (s.`MEMS`_store[a] = meminst)] -[visit_exp s.`MEMS`_store[a]] -[visit_exp s.`MEMS`_store] -[visit_exp s] -[visit_id s] not free -[visit_exp a] -[visit_id a] not free -[visit_exp meminst] -[visit_id meminst] not free -[check_dims] a s tableinst -[visit_exp s] -[visit_id s] -[visit_exp `TABLE`_externaddr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp `TABLE`_externtype(tableinst.`TYPE`_tableinst)] -[visit_exp (tableinst.`TYPE`_tableinst)] -[visit_exp tableinst.`TYPE`_tableinst] -[visit_exp tableinst] -[visit_id tableinst] -[visit_exp (s.`TABLES`_store[a] = tableinst)] -[visit_exp s.`TABLES`_store[a]] -[visit_exp s.`TABLES`_store] -[visit_exp s] -[visit_id s] not free -[visit_exp a] -[visit_id a] not free -[visit_exp tableinst] -[visit_id tableinst] not free -[check_dims] a funcinst s -[visit_exp s] -[visit_id s] -[visit_exp `FUNC`_externaddr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp `FUNC`_externtype((funcinst.`TYPE`_funcinst : deftype <: typeuse))] -[visit_exp ((funcinst.`TYPE`_funcinst : deftype <: typeuse))] -[visit_exp (funcinst.`TYPE`_funcinst : deftype <: typeuse)] -[visit_exp funcinst.`TYPE`_funcinst] -[visit_exp funcinst] -[visit_id funcinst] -[visit_exp (s.`FUNCS`_store[a] = funcinst)] -[visit_exp s.`FUNCS`_store[a]] -[visit_exp s.`FUNCS`_store] -[visit_exp s] -[visit_id s] not free -[visit_exp a] -[visit_id a] not free -[visit_exp funcinst] -[visit_id funcinst] not free -[check_dims] externaddr s xt xt' -[visit_exp s] -[visit_id s] -[visit_exp externaddr] -[visit_id externaddr] -[visit_exp xt] -[visit_id xt] -[visit_exp (s, externaddr, xt')] -[visit_exp s] -[visit_id s] not free -[visit_exp externaddr] -[visit_id externaddr] not free -[visit_exp xt'] -[visit_id xt'] -[visit_exp ({`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}, xt', xt)] -[visit_exp {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp ?()] -[visit_exp []] -[visit_exp xt'] -[visit_id xt'] not free -[visit_exp xt] -[visit_id xt] not free -[check_dims] moduleinst valtype -DecD inst_valtype(moduleinst : moduleinst, valtype : valtype) : valtype -[visit_id moduleinst] not free -[visit_id valtype] not free -[check_dims] moduleinst reftype -DecD inst_reftype(moduleinst : moduleinst, reftype : reftype) : reftype -[visit_id moduleinst] not free -[visit_id reftype] not free -[check_dims] globaltype moduleinst -DecD inst_globaltype(moduleinst : moduleinst, globaltype : globaltype) : globaltype -[visit_id moduleinst] not free -[visit_id globaltype] not free -[check_dims] memtype moduleinst -DecD inst_memtype(moduleinst : moduleinst, memtype : memtype) : memtype -[visit_id moduleinst] not free -[visit_id memtype] not free -[check_dims] moduleinst tabletype -DecD inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype -[visit_id moduleinst] not free -[visit_id tabletype] not free -[check_dims] dt moduleinst t -[visit_exp moduleinst] -[visit_id moduleinst] -[visit_exp t] -[visit_id t] -[visit_exp $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`})] -[visit_exp t] -[visit_id t] not free -[visit_exp (dt : deftype <: typeuse)*{dt <- `dt*`}] -[scope_enter dt] -[visit_exp (dt : deftype <: typeuse)] -[visit_exp dt] -[visit_id dt] not free -[visit_id dt] not free -[scope_exit dt] -[visit_exp `dt*`] -[visit_id dt*] no dims -[visit_id dt*] -[visit_exp (dt*{dt <- `dt*`} = moduleinst.`TYPES`_moduleinst)] -[visit_exp dt*{dt <- `dt*`}] -[scope_enter dt] -[visit_exp dt] -[visit_id dt] not free -[visit_id dt] not free -[scope_exit dt] -[visit_exp `dt*`] -[visit_id dt*] not free -[visit_id dt*] no dims -[visit_exp moduleinst.`TYPES`_moduleinst] -[visit_exp moduleinst] -[visit_id moduleinst] not free -=> - ;; ../../../../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) -[check_dims] dt moduleinst rt -[visit_exp moduleinst] -[visit_id moduleinst] -[visit_exp rt] -[visit_id rt] -[visit_exp $subst_all_reftype(rt, (dt : deftype <: typeuse)*{dt <- `dt*`})] -[visit_exp rt] -[visit_id rt] not free -[visit_exp (dt : deftype <: typeuse)*{dt <- `dt*`}] -[scope_enter dt] -[visit_exp (dt : deftype <: typeuse)] -[visit_exp dt] -[visit_id dt] not free -[visit_id dt] not free -[scope_exit dt] -[visit_exp `dt*`] -[visit_id dt*] no dims -[visit_id dt*] -[visit_exp (dt*{dt <- `dt*`} = moduleinst.`TYPES`_moduleinst)] -[visit_exp dt*{dt <- `dt*`}] -[scope_enter dt] -[visit_exp dt] -[visit_id dt] not free -[visit_id dt] not free -[scope_exit dt] -[visit_exp `dt*`] -[visit_id dt*] not free -[visit_id dt*] no dims -[visit_exp moduleinst.`TYPES`_moduleinst] -[visit_exp moduleinst] -[visit_id moduleinst] not free -=> - ;; ../../../../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) -[check_dims] dt gt moduleinst -[visit_exp moduleinst] -[visit_id moduleinst] -[visit_exp gt] -[visit_id gt] -[visit_exp $subst_all_globaltype(gt, (dt : deftype <: typeuse)*{dt <- `dt*`})] -[visit_exp gt] -[visit_id gt] not free -[visit_exp (dt : deftype <: typeuse)*{dt <- `dt*`}] -[scope_enter dt] -[visit_exp (dt : deftype <: typeuse)] -[visit_exp dt] -[visit_id dt] not free -[visit_id dt] not free -[scope_exit dt] -[visit_exp `dt*`] -[visit_id dt*] no dims -[visit_id dt*] -[visit_exp (dt*{dt <- `dt*`} = moduleinst.`TYPES`_moduleinst)] -[visit_exp dt*{dt <- `dt*`}] -[scope_enter dt] -[visit_exp dt] -[visit_id dt] not free -[visit_id dt] not free -[scope_exit dt] -[visit_exp `dt*`] -[visit_id dt*] not free -[visit_id dt*] no dims -[visit_exp moduleinst.`TYPES`_moduleinst] -[visit_exp moduleinst] -[visit_id moduleinst] not free -=> - ;; ../../../../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) -[check_dims] dt moduleinst mt -[visit_exp moduleinst] -[visit_id moduleinst] -[visit_exp mt] -[visit_id mt] -[visit_exp $subst_all_memtype(mt, (dt : deftype <: typeuse)*{dt <- `dt*`})] -[visit_exp mt] -[visit_id mt] not free -[visit_exp (dt : deftype <: typeuse)*{dt <- `dt*`}] -[scope_enter dt] -[visit_exp (dt : deftype <: typeuse)] -[visit_exp dt] -[visit_id dt] not free -[visit_id dt] not free -[scope_exit dt] -[visit_exp `dt*`] -[visit_id dt*] no dims -[visit_id dt*] -[visit_exp (dt*{dt <- `dt*`} = moduleinst.`TYPES`_moduleinst)] -[visit_exp dt*{dt <- `dt*`}] -[scope_enter dt] -[visit_exp dt] -[visit_id dt] not free -[visit_id dt] not free -[scope_exit dt] -[visit_exp `dt*`] -[visit_id dt*] not free -[visit_id dt*] no dims -[visit_exp moduleinst.`TYPES`_moduleinst] -[visit_exp moduleinst] -[visit_id moduleinst] not free -=> - ;; ../../../../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) -[check_dims] dt moduleinst tt -[visit_exp moduleinst] -[visit_id moduleinst] -[visit_exp tt] -[visit_id tt] -[visit_exp $subst_all_tabletype(tt, (dt : deftype <: typeuse)*{dt <- `dt*`})] -[visit_exp tt] -[visit_id tt] not free -[visit_exp (dt : deftype <: typeuse)*{dt <- `dt*`}] -[scope_enter dt] -[visit_exp (dt : deftype <: typeuse)] -[visit_exp dt] -[visit_id dt] not free -[visit_id dt] not free -[scope_exit dt] -[visit_exp `dt*`] -[visit_id dt*] no dims -[visit_id dt*] -[visit_exp (dt*{dt <- `dt*`} = moduleinst.`TYPES`_moduleinst)] -[visit_exp dt*{dt <- `dt*`}] -[scope_enter dt] -[visit_exp dt] -[visit_id dt] not free -[visit_id dt] not free -[scope_exit dt] -[visit_exp `dt*`] -[visit_id dt*] not free -[visit_id dt*] no dims -[visit_exp moduleinst.`TYPES`_moduleinst] -[visit_exp moduleinst] -[visit_id moduleinst] not free -=> - ;; ../../../../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) -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] instr instr' z -[visit_exp `%;%`_config(z, instr*{instr <- `instr*`})] -[visit_exp (z, instr*{instr <- `instr*`})] -[visit_exp z] -[visit_id z] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] no dims -[visit_id instr*] -[visit_exp `%;%`_config(z, instr'*{instr' <- `instr'*`})] -[visit_exp (z, instr'*{instr' <- `instr'*`})] -[visit_exp z] -[visit_id z] not free -[visit_exp instr'*{instr' <- `instr'*`}] -[scope_enter instr'] -[visit_exp instr'] -[visit_id instr'] not free -[visit_id instr'] not free -[scope_exit instr'] -[visit_exp `instr'*`] -[visit_id instr'*] no dims -[visit_id instr'*] -[visit_exp (instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`})] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] not free -[visit_id instr*] no dims -[visit_exp instr'*{instr' <- `instr'*`}] -[scope_enter instr'] -[visit_exp instr'] -[visit_id instr'] not free -[visit_id instr'] not free -[scope_exit instr'] -[visit_exp `instr'*`] -[visit_id instr'*] not free -[visit_id instr'*] no dims -[check_dims] instr instr' z -[visit_exp `%;%`_config(z, instr*{instr <- `instr*`})] -[visit_exp (z, instr*{instr <- `instr*`})] -[visit_exp z] -[visit_id z] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] no dims -[visit_id instr*] -[visit_exp `%;%`_config(z, instr'*{instr' <- `instr'*`})] -[visit_exp (z, instr'*{instr' <- `instr'*`})] -[visit_exp z] -[visit_id z] not free -[visit_exp instr'*{instr' <- `instr'*`}] -[scope_enter instr'] -[visit_exp instr'] -[visit_id instr'] not free -[visit_id instr'] not free -[scope_exit instr'] -[visit_exp `instr'*`] -[visit_id instr'*] no dims -[visit_id instr'*] -[visit_exp (`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`})] -[visit_exp `%;%`_config(z, instr*{instr <- `instr*`})] -[visit_exp (z, instr*{instr <- `instr*`})] -[visit_exp z] -[visit_id z] not free -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] not free -[visit_id instr*] no dims -[visit_exp instr'*{instr' <- `instr'*`}] -[scope_enter instr'] -[visit_exp instr'] -[visit_id instr'] not free -[visit_id instr'] not free -[scope_exit instr'] -[visit_exp `instr'*`] -[visit_id instr'*] not free -[visit_id instr'*] no dims -[check_dims] instr z -[visit_exp `%;%`_config(z, instr*{instr <- `instr*`})] -[visit_exp (z, instr*{instr <- `instr*`})] -[visit_exp z] -[visit_id z] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] no dims -[visit_id instr*] -[visit_exp `%;%`_config(z, instr*{instr <- `instr*`})] -[visit_exp (z, instr*{instr <- `instr*`})] -[visit_exp z] -[visit_id z] not free -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] not free -[visit_id instr*] no dims -[check_dims] instr instr' instr'' z z' z'' -[visit_exp `%;%`_config(z, instr*{instr <- `instr*`})] -[visit_exp (z, instr*{instr <- `instr*`})] -[visit_exp z] -[visit_id z] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] no dims -[visit_id instr*] -[visit_exp `%;%`_config(z'', instr''*{instr'' <- `instr''*`})] -[visit_exp (z'', instr''*{instr'' <- `instr''*`})] -[visit_exp z''] -[visit_id z''] -[visit_exp instr''*{instr'' <- `instr''*`}] -[scope_enter instr''] -[visit_exp instr''] -[visit_id instr''] not free -[visit_id instr''] not free -[scope_exit instr''] -[visit_exp `instr''*`] -[visit_id instr''*] no dims -[visit_id instr''*] -[visit_exp (`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`}))] -[visit_exp `%;%`_config(z, instr*{instr <- `instr*`})] -[visit_exp (z, instr*{instr <- `instr*`})] -[visit_exp z] -[visit_id z] not free -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] not free -[visit_id instr*] no dims -[visit_exp `%;%`_config(z', instr'*{instr' <- `instr'*`})] -[visit_exp (z', instr'*{instr' <- `instr'*`})] -[visit_exp z'] -[visit_id z'] -[visit_exp instr'*{instr' <- `instr'*`}] -[scope_enter instr'] -[visit_exp instr'] -[visit_id instr'] not free -[visit_id instr'] not free -[scope_exit instr'] -[visit_exp `instr'*`] -[visit_id instr'*] no dims -[visit_id instr'*] -[visit_exp (`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`}))] -[visit_exp `%;%`_config(z', instr'*{instr' <- `instr'*`})] -[visit_exp (z', instr'*{instr' <- `instr'*`})] -[visit_exp z'] -[visit_id z'] not free -[visit_exp instr'*{instr' <- `instr'*`}] -[scope_enter instr'] -[visit_exp instr'] -[visit_id instr'] not free -[visit_id instr'] not free -[scope_exit instr'] -[visit_exp `instr'*`] -[visit_id instr'*] not free -[visit_id instr'*] no dims -[visit_exp `%;%`_config(z'', instr''*{instr'' <- `instr''*`})] -[visit_exp (z'', instr''*{instr'' <- `instr''*`})] -[visit_exp z''] -[visit_id z''] not free -[visit_exp instr''*{instr'' <- `instr''*`}] -[scope_enter instr''] -[visit_exp instr''] -[visit_id instr''] not free -[visit_id instr''] not free -[scope_exit instr''] -[visit_exp `instr''*`] -[visit_id instr''*] not free -[visit_id instr''*] no dims -[check_dims] instr instr' instr_1 val z z' -[visit_exp `%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})] -[visit_exp (z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`})] -[visit_exp z] -[visit_id z] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}] -[visit_exp (val : val <: instr)*{val <- `val*`}] -[scope_enter val] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp `val*`] -[visit_id val*] no dims -[visit_id val*] -[visit_exp instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] no dims -[visit_id instr*] -[visit_exp instr_1*{instr_1 <- `instr_1*`}] -[scope_enter instr_1] -[visit_exp instr_1] -[visit_id instr_1] not free -[visit_id instr_1] not free -[scope_exit instr_1] -[visit_exp `instr_1*`] -[visit_id instr_1*] no dims -[visit_id instr_1*] -[visit_exp `%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})] -[visit_exp (z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})] -[visit_exp z'] -[visit_id z'] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`}] -[visit_exp (val : val <: instr)*{val <- `val*`}] -[scope_enter val] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp `val*`] -[visit_id val*] not free -[visit_id val*] no dims -[visit_exp instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`}] -[visit_exp instr'*{instr' <- `instr'*`}] -[scope_enter instr'] -[visit_exp instr'] -[visit_id instr'] not free -[visit_id instr'] not free -[scope_exit instr'] -[visit_exp `instr'*`] -[visit_id instr'*] no dims -[visit_id instr'*] -[visit_exp instr_1*{instr_1 <- `instr_1*`}] -[scope_enter instr_1] -[visit_exp instr_1] -[visit_id instr_1] not free -[visit_id instr_1] not free -[scope_exit instr_1] -[visit_exp `instr_1*`] -[visit_id instr_1*] not free -[visit_id instr_1*] no dims -[visit_exp (`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`}))] -[visit_exp `%;%`_config(z, instr*{instr <- `instr*`})] -[visit_exp (z, instr*{instr <- `instr*`})] -[visit_exp z] -[visit_id z] not free -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] not free -[visit_id instr*] no dims -[visit_exp `%;%`_config(z', instr'*{instr' <- `instr'*`})] -[visit_exp (z', instr'*{instr' <- `instr'*`})] -[visit_exp z'] -[visit_id z'] not free -[visit_exp instr'*{instr' <- `instr'*`}] -[scope_enter instr'] -[visit_exp instr'] -[visit_id instr'] not free -[visit_id instr'] not free -[scope_exit instr'] -[visit_exp `instr'*`] -[visit_id instr'*] not free -[visit_id instr'*] no dims -[visit_exp ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= []))] -[visit_exp (val*{val <- `val*`} =/= [])] -[visit_exp val*{val <- `val*`}] -[scope_enter val] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp `val*`] -[visit_id val*] not free -[visit_id val*] no dims -[visit_exp []] -[visit_exp (instr_1*{instr_1 <- `instr_1*`} =/= [])] -[visit_exp instr_1*{instr_1 <- `instr_1*`}] -[scope_enter instr_1] -[visit_exp instr_1] -[visit_id instr_1] not free -[visit_id instr_1] not free -[scope_exit instr_1] -[visit_exp `instr_1*`] -[visit_id instr_1*] not free -[visit_id instr_1*] no dims -[visit_exp []] -[check_dims] instr instr' instr_0 n z z' -[visit_exp `%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])] -[visit_exp (z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})])] -[visit_exp z] -[visit_id z] -[visit_exp [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]] -[visit_exp `LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})] -[visit_exp (n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})] -[visit_exp n] -[visit_id n] -[visit_exp instr_0*{instr_0 <- `instr_0*`}] -[scope_enter instr_0] -[visit_exp instr_0] -[visit_id instr_0] not free -[visit_id instr_0] not free -[scope_exit instr_0] -[visit_exp `instr_0*`] -[visit_id instr_0*] no dims -[visit_id instr_0*] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] no dims -[visit_id instr*] -[visit_exp `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])] -[visit_exp (z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])] -[visit_exp z'] -[visit_id z'] -[visit_exp [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})]] -[visit_exp `LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})] -[visit_exp (n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})] -[visit_exp n] -[visit_id n] not free -[visit_exp instr_0*{instr_0 <- `instr_0*`}] -[scope_enter instr_0] -[visit_exp instr_0] -[visit_id instr_0] not free -[visit_id instr_0] not free -[scope_exit instr_0] -[visit_exp `instr_0*`] -[visit_id instr_0*] not free -[visit_id instr_0*] no dims -[visit_exp instr'*{instr' <- `instr'*`}] -[scope_enter instr'] -[visit_exp instr'] -[visit_id instr'] not free -[visit_id instr'] not free -[scope_exit instr'] -[visit_exp `instr'*`] -[visit_id instr'*] no dims -[visit_id instr'*] -[visit_exp (`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`}))] -[visit_exp `%;%`_config(z, instr*{instr <- `instr*`})] -[visit_exp (z, instr*{instr <- `instr*`})] -[visit_exp z] -[visit_id z] not free -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] not free -[visit_id instr*] no dims -[visit_exp `%;%`_config(z', instr'*{instr' <- `instr'*`})] -[visit_exp (z', instr'*{instr' <- `instr'*`})] -[visit_exp z'] -[visit_id z'] not free -[visit_exp instr'*{instr' <- `instr'*`}] -[scope_enter instr'] -[visit_exp instr'] -[visit_id instr'] not free -[visit_id instr'] not free -[scope_exit instr'] -[visit_exp `instr'*`] -[visit_id instr'*] not free -[visit_id instr'*] no dims -[check_dims] f f' f'' instr instr' n s s' -[visit_exp `%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})])] -[visit_exp (`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})])] -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]] -[visit_exp `FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})] -[visit_exp (n, f', instr*{instr <- `instr*`})] -[visit_exp n] -[visit_id n] -[visit_exp f'] -[visit_id f'] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] no dims -[visit_id instr*] -[visit_exp `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])] -[visit_exp (`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])] -[visit_exp `%;%`_state(s', f)] -[visit_exp (s', f)] -[visit_exp s'] -[visit_id s'] -[visit_exp f] -[visit_id f] not free -[visit_exp [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})]] -[visit_exp `FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})] -[visit_exp (n, f'', instr'*{instr' <- `instr'*`})] -[visit_exp n] -[visit_id n] not free -[visit_exp f''] -[visit_id f''] -[visit_exp instr'*{instr' <- `instr'*`}] -[scope_enter instr'] -[visit_exp instr'] -[visit_id instr'] not free -[visit_id instr'] not free -[scope_exit instr'] -[visit_exp `instr'*`] -[visit_id instr'*] no dims -[visit_id instr'*] -[visit_exp (`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`}))] -[visit_exp `%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`})] -[visit_exp (`%;%`_state(s, f'), instr*{instr <- `instr*`})] -[visit_exp `%;%`_state(s, f')] -[visit_exp (s, f')] -[visit_exp s] -[visit_id s] not free -[visit_exp f'] -[visit_id f'] not free -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] not free -[visit_id instr*] no dims -[visit_exp `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})] -[visit_exp (`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})] -[visit_exp `%;%`_state(s', f'')] -[visit_exp (s', f'')] -[visit_exp s'] -[visit_id s'] not free -[visit_exp f''] -[visit_id f''] not free -[visit_exp instr'*{instr' <- `instr'*`}] -[scope_enter instr'] -[visit_exp instr'] -[visit_id instr'] not free -[visit_id instr'] not free -[scope_exit instr'] -[visit_exp `instr'*`] -[visit_id instr'*] not free -[visit_id instr'*] no dims -[check_dims] -[visit_exp [`UNREACHABLE`_instr]] -[visit_exp `UNREACHABLE`_instr] -[visit_exp ()] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[check_dims] -[visit_exp [`NOP`_instr]] -[visit_exp `NOP`_instr] -[visit_exp ()] -[visit_exp []] -[check_dims] val -[visit_exp [(val : val <: instr) `DROP`_instr]] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] -[visit_exp `DROP`_instr] -[visit_exp ()] -[visit_exp []] -[check_dims] c t val_1 val_2 -[visit_exp [(val_1 : val <: instr) (val_2 : val <: instr) `CONST`_instr(`I32`_numtype, c) `SELECT`_instr(t*{t <- `t*`}?{`t*` <- `t*?`})]] -[visit_exp (val_1 : val <: instr)] -[visit_exp val_1] -[visit_id val_1] -[visit_exp (val_2 : val <: instr)] -[visit_exp val_2] -[visit_id val_2] -[visit_exp `CONST`_instr(`I32`_numtype, c)] -[visit_exp (`I32`_numtype, c)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp c] -[visit_id c] -[visit_exp `SELECT`_instr(t*{t <- `t*`}?{`t*` <- `t*?`})] -[visit_exp (t*{t <- `t*`}?{`t*` <- `t*?`})] -[visit_exp t*{t <- `t*`}?{`t*` <- `t*?`}] -[scope_enter t*] -[visit_exp t*{t <- `t*`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] not free -[visit_id t*] no dims -[visit_id t*] not free -[visit_id t*] no dims -[scope_exit t*] -[visit_exp `t*?`] -[visit_id t*?] no dims -[visit_id t*?] -[visit_exp [(val_1 : val <: instr)]] -[visit_exp (val_1 : val <: instr)] -[visit_exp val_1] -[visit_id val_1] not free -[visit_exp (c!`%`_num_.0 =/= 0)] -[visit_exp c!`%`_num_.0] -[visit_exp c!`%`_num_] -[visit_exp c] -[visit_id c] not free -[visit_exp 0] -[check_dims] c t val_1 val_2 -[visit_exp [(val_1 : val <: instr) (val_2 : val <: instr) `CONST`_instr(`I32`_numtype, c) `SELECT`_instr(t*{t <- `t*`}?{`t*` <- `t*?`})]] -[visit_exp (val_1 : val <: instr)] -[visit_exp val_1] -[visit_id val_1] -[visit_exp (val_2 : val <: instr)] -[visit_exp val_2] -[visit_id val_2] -[visit_exp `CONST`_instr(`I32`_numtype, c)] -[visit_exp (`I32`_numtype, c)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp c] -[visit_id c] -[visit_exp `SELECT`_instr(t*{t <- `t*`}?{`t*` <- `t*?`})] -[visit_exp (t*{t <- `t*`}?{`t*` <- `t*?`})] -[visit_exp t*{t <- `t*`}?{`t*` <- `t*?`}] -[scope_enter t*] -[visit_exp t*{t <- `t*`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] not free -[visit_id t*] no dims -[visit_id t*] not free -[visit_id t*] no dims -[scope_exit t*] -[visit_exp `t*?`] -[visit_id t*?] no dims -[visit_id t*?] -[visit_exp [(val_2 : val <: instr)]] -[visit_exp (val_2 : val <: instr)] -[visit_exp val_2] -[visit_id val_2] not free -[visit_exp (c!`%`_num_.0 = 0)] -[visit_exp c!`%`_num_.0] -[visit_exp c!`%`_num_] -[visit_exp c] -[visit_id c] not free -[visit_exp 0] -[check_dims] blocktype state -DecD blocktype_(state : state, blocktype : blocktype) : instrtype -[visit_id state] not free -[visit_id blocktype] not free -[check_dims] t_1 t_2 x z -[visit_exp z] -[visit_id z] -[visit_exp `_IDX`_blocktype(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] no dims -[visit_id t_1*] -[visit_exp []] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] no dims -[visit_id t_2*] -[visit_exp ($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))] -[visit_exp $type(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] not free -[visit_id t_1*] no dims -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] not free -[visit_id t_2*] no dims -=> - ;; ../../../../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*`}))) -[check_dims] t z -[visit_exp z] -[visit_id z] -[visit_exp `_RESULT`_blocktype(t?{t <- `t?`})] -[visit_exp (t?{t <- `t?`})] -[visit_exp t?{t <- `t?`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t?`] -[visit_id t?] no dims -[visit_id t?] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`})))] -[visit_exp (`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`})))] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp []] -[visit_exp `%`_resulttype(lift(t?{t <- `t?`}))] -[visit_exp (lift(t?{t <- `t?`}))] -[visit_exp lift(t?{t <- `t?`})] -[visit_exp t?{t <- `t?`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t?`] -[visit_id t?] not free -[visit_id t?] no dims -=> - ;; ../../../../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?`}))) -[check_dims] bt instr m n t_1 t_2 val z -[visit_exp `%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [`BLOCK`_instr(bt, instr*{instr <- `instr*`})])] -[visit_exp (z, (val : val <: instr)^m{val <- `val*`} ++ [`BLOCK`_instr(bt, instr*{instr <- `instr*`})])] -[visit_exp z] -[visit_id z] -[visit_exp (val : val <: instr)^m{val <- `val*`} ++ [`BLOCK`_instr(bt, instr*{instr <- `instr*`})]] -[visit_exp (val : val <: instr)^m{val <- `val*`}] -[scope_enter val] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp m] -[visit_id m] -[visit_exp `val*`] -[visit_id val*] no dims -[visit_id val*] -[visit_exp [`BLOCK`_instr(bt, instr*{instr <- `instr*`})]] -[visit_exp `BLOCK`_instr(bt, instr*{instr <- `instr*`})] -[visit_exp (bt, instr*{instr <- `instr*`})] -[visit_exp bt] -[visit_id bt] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] no dims -[visit_id instr*] -[visit_exp [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]] -[visit_exp `LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})] -[visit_exp (n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})] -[visit_exp n] -[visit_id n] -[visit_exp []] -[visit_exp (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`}] -[visit_exp (val : val <: instr)^m{val <- `val*`}] -[scope_enter val] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp m] -[visit_id m] not free -[visit_exp `val*`] -[visit_id val*] not free -[visit_id val*] no dims -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] not free -[visit_id instr*] no dims -[visit_exp ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`})))] -[visit_exp $blocktype_(z, bt)] -[visit_exp z] -[visit_id z] not free -[visit_exp bt] -[visit_id bt] not free -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1^m{t_1 <- `t_1*`})] -[visit_exp (t_1^m{t_1 <- `t_1*`})] -[visit_exp t_1^m{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp m] -[visit_id m] not free -[visit_exp `t_1*`] -[visit_id t_1*] no dims -[visit_id t_1*] -[visit_exp []] -[visit_exp `%`_resulttype(t_2^n{t_2 <- `t_2*`})] -[visit_exp (t_2^n{t_2 <- `t_2*`})] -[visit_exp t_2^n{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp n] -[visit_id n] not free -[visit_exp `t_2*`] -[visit_id t_2*] no dims -[visit_id t_2*] -[check_dims] bt instr m n t_1 t_2 val z -[visit_exp `%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [`LOOP`_instr(bt, instr*{instr <- `instr*`})])] -[visit_exp (z, (val : val <: instr)^m{val <- `val*`} ++ [`LOOP`_instr(bt, instr*{instr <- `instr*`})])] -[visit_exp z] -[visit_id z] -[visit_exp (val : val <: instr)^m{val <- `val*`} ++ [`LOOP`_instr(bt, instr*{instr <- `instr*`})]] -[visit_exp (val : val <: instr)^m{val <- `val*`}] -[scope_enter val] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp m] -[visit_id m] -[visit_exp `val*`] -[visit_id val*] no dims -[visit_id val*] -[visit_exp [`LOOP`_instr(bt, instr*{instr <- `instr*`})]] -[visit_exp `LOOP`_instr(bt, instr*{instr <- `instr*`})] -[visit_exp (bt, instr*{instr <- `instr*`})] -[visit_exp bt] -[visit_id bt] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] no dims -[visit_id instr*] -[visit_exp [`LABEL_%{%}%`_instr(m, [`LOOP`_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]] -[visit_exp `LABEL_%{%}%`_instr(m, [`LOOP`_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})] -[visit_exp (m, [`LOOP`_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})] -[visit_exp m] -[visit_id m] not free -[visit_exp [`LOOP`_instr(bt, instr*{instr <- `instr*`})]] -[visit_exp `LOOP`_instr(bt, instr*{instr <- `instr*`})] -[visit_exp (bt, instr*{instr <- `instr*`})] -[visit_exp bt] -[visit_id bt] not free -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] not free -[visit_id instr*] no dims -[visit_exp (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`}] -[visit_exp (val : val <: instr)^m{val <- `val*`}] -[scope_enter val] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp m] -[visit_id m] not free -[visit_exp `val*`] -[visit_id val*] not free -[visit_id val*] no dims -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] not free -[visit_id instr*] no dims -[visit_exp ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`})))] -[visit_exp $blocktype_(z, bt)] -[visit_exp z] -[visit_id z] not free -[visit_exp bt] -[visit_id bt] not free -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1^m{t_1 <- `t_1*`})] -[visit_exp (t_1^m{t_1 <- `t_1*`})] -[visit_exp t_1^m{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp m] -[visit_id m] not free -[visit_exp `t_1*`] -[visit_id t_1*] no dims -[visit_id t_1*] -[visit_exp []] -[visit_exp `%`_resulttype(t_2^n{t_2 <- `t_2*`})] -[visit_exp (t_2^n{t_2 <- `t_2*`})] -[visit_exp t_2^n{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp n] -[visit_id n] -[visit_exp `t_2*`] -[visit_id t_2*] no dims -[visit_id t_2*] -[check_dims] bt c instr_1 instr_2 -[visit_exp [`CONST`_instr(`I32`_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})]] -[visit_exp `CONST`_instr(`I32`_numtype, c)] -[visit_exp (`I32`_numtype, c)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp c] -[visit_id c] -[visit_exp `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})] -[visit_exp (bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})] -[visit_exp bt] -[visit_id bt] -[visit_exp instr_1*{instr_1 <- `instr_1*`}] -[scope_enter instr_1] -[visit_exp instr_1] -[visit_id instr_1] not free -[visit_id instr_1] not free -[scope_exit instr_1] -[visit_exp `instr_1*`] -[visit_id instr_1*] no dims -[visit_id instr_1*] -[visit_exp instr_2*{instr_2 <- `instr_2*`}] -[scope_enter instr_2] -[visit_exp instr_2] -[visit_id instr_2] not free -[visit_id instr_2] not free -[scope_exit instr_2] -[visit_exp `instr_2*`] -[visit_id instr_2*] no dims -[visit_id instr_2*] -[visit_exp [`BLOCK`_instr(bt, instr_1*{instr_1 <- `instr_1*`})]] -[visit_exp `BLOCK`_instr(bt, instr_1*{instr_1 <- `instr_1*`})] -[visit_exp (bt, instr_1*{instr_1 <- `instr_1*`})] -[visit_exp bt] -[visit_id bt] not free -[visit_exp instr_1*{instr_1 <- `instr_1*`}] -[scope_enter instr_1] -[visit_exp instr_1] -[visit_id instr_1] not free -[visit_id instr_1] not free -[scope_exit instr_1] -[visit_exp `instr_1*`] -[visit_id instr_1*] not free -[visit_id instr_1*] no dims -[visit_exp (c!`%`_num_.0 =/= 0)] -[visit_exp c!`%`_num_.0] -[visit_exp c!`%`_num_] -[visit_exp c] -[visit_id c] not free -[visit_exp 0] -[check_dims] bt c instr_1 instr_2 -[visit_exp [`CONST`_instr(`I32`_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})]] -[visit_exp `CONST`_instr(`I32`_numtype, c)] -[visit_exp (`I32`_numtype, c)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp c] -[visit_id c] -[visit_exp `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})] -[visit_exp (bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})] -[visit_exp bt] -[visit_id bt] -[visit_exp instr_1*{instr_1 <- `instr_1*`}] -[scope_enter instr_1] -[visit_exp instr_1] -[visit_id instr_1] not free -[visit_id instr_1] not free -[scope_exit instr_1] -[visit_exp `instr_1*`] -[visit_id instr_1*] no dims -[visit_id instr_1*] -[visit_exp instr_2*{instr_2 <- `instr_2*`}] -[scope_enter instr_2] -[visit_exp instr_2] -[visit_id instr_2] not free -[visit_id instr_2] not free -[scope_exit instr_2] -[visit_exp `instr_2*`] -[visit_id instr_2*] no dims -[visit_id instr_2*] -[visit_exp [`BLOCK`_instr(bt, instr_2*{instr_2 <- `instr_2*`})]] -[visit_exp `BLOCK`_instr(bt, instr_2*{instr_2 <- `instr_2*`})] -[visit_exp (bt, instr_2*{instr_2 <- `instr_2*`})] -[visit_exp bt] -[visit_id bt] not free -[visit_exp instr_2*{instr_2 <- `instr_2*`}] -[scope_enter instr_2] -[visit_exp instr_2] -[visit_id instr_2] not free -[visit_id instr_2] not free -[scope_exit instr_2] -[visit_exp `instr_2*`] -[visit_id instr_2*] not free -[visit_id instr_2*] no dims -[visit_exp (c!`%`_num_.0 = 0)] -[visit_exp c!`%`_num_.0] -[visit_exp c!`%`_num_] -[visit_exp c] -[visit_id c] not free -[visit_exp 0] -[check_dims] instr n val -[visit_exp [`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})]] -[visit_exp `LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})] -[visit_exp (n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})] -[visit_exp n] -[visit_id n] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] no dims -[visit_id instr*] -[visit_exp (val : val <: instr)*{val <- `val*`}] -[scope_enter val] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp `val*`] -[visit_id val*] no dims -[visit_id val*] -[visit_exp (val : val <: instr)*{val <- `val*`}] -[scope_enter val] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp `val*`] -[visit_id val*] not free -[visit_id val*] no dims -[check_dims] instr instr' l n val val' -[visit_exp [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`BR`_instr(l)] ++ instr*{instr <- `instr*`})]] -[visit_exp `LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`BR`_instr(l)] ++ instr*{instr <- `instr*`})] -[visit_exp (n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`BR`_instr(l)] ++ instr*{instr <- `instr*`})] -[visit_exp n] -[visit_id n] -[visit_exp instr'*{instr' <- `instr'*`}] -[scope_enter instr'] -[visit_exp instr'] -[visit_id instr'] not free -[visit_id instr'] not free -[scope_exit instr'] -[visit_exp `instr'*`] -[visit_id instr'*] no dims -[visit_id instr'*] -[visit_exp (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`BR`_instr(l)] ++ instr*{instr <- `instr*`}] -[visit_exp (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`BR`_instr(l)]] -[visit_exp (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`}] -[visit_exp (val' : val <: instr)*{val' <- `val'*`}] -[scope_enter val'] -[visit_exp (val' : val <: instr)] -[visit_exp val'] -[visit_id val'] not free -[visit_id val'] not free -[scope_exit val'] -[visit_exp `val'*`] -[visit_id val'*] no dims -[visit_id val'*] -[visit_exp (val : val <: instr)^n{val <- `val*`}] -[scope_enter val] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp n] -[visit_id n] not free -[visit_exp `val*`] -[visit_id val*] no dims -[visit_id val*] -[visit_exp [`BR`_instr(l)]] -[visit_exp `BR`_instr(l)] -[visit_exp (l)] -[visit_exp l] -[visit_id l] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] no dims -[visit_id instr*] -[visit_exp (val : val <: instr)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}] -[visit_exp (val : val <: instr)^n{val <- `val*`}] -[scope_enter val] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp n] -[visit_id n] not free -[visit_exp `val*`] -[visit_id val*] not free -[visit_id val*] no dims -[visit_exp instr'*{instr' <- `instr'*`}] -[scope_enter instr'] -[visit_exp instr'] -[visit_id instr'] not free -[visit_id instr'] not free -[scope_exit instr'] -[visit_exp `instr'*`] -[visit_id instr'*] not free -[visit_id instr'*] no dims -[visit_exp (l!`%`_labelidx.0 = 0)] -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] not free -[visit_exp 0] -[check_dims] instr instr' l n val -[visit_exp [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr(l)] ++ instr*{instr <- `instr*`})]] -[visit_exp `LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr(l)] ++ instr*{instr <- `instr*`})] -[visit_exp (n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr(l)] ++ instr*{instr <- `instr*`})] -[visit_exp n] -[visit_id n] -[visit_exp instr'*{instr' <- `instr'*`}] -[scope_enter instr'] -[visit_exp instr'] -[visit_id instr'] not free -[visit_id instr'] not free -[scope_exit instr'] -[visit_exp `instr'*`] -[visit_id instr'*] no dims -[visit_id instr'*] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr(l)] ++ instr*{instr <- `instr*`}] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr(l)]] -[visit_exp (val : val <: instr)*{val <- `val*`}] -[scope_enter val] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp `val*`] -[visit_id val*] no dims -[visit_id val*] -[visit_exp [`BR`_instr(l)]] -[visit_exp `BR`_instr(l)] -[visit_exp (l)] -[visit_exp l] -[visit_id l] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] no dims -[visit_id instr*] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr(`%`_labelidx((((l!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]] -[visit_exp (val : val <: instr)*{val <- `val*`}] -[scope_enter val] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp `val*`] -[visit_id val*] not free -[visit_id val*] no dims -[visit_exp [`BR`_instr(`%`_labelidx((((l!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]] -[visit_exp `BR`_instr(`%`_labelidx((((l!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp (`%`_labelidx((((l!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp `%`_labelidx((((l!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp ((((l!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp (((l!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp ((l!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int))] -[visit_exp (l!`%`_labelidx.0 : nat <:> int)] -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] not free -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp (l!`%`_labelidx.0 > 0)] -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] not free -[visit_exp 0] -[check_dims] catch instr l n val -[visit_exp [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr(l)] ++ instr*{instr <- `instr*`})]] -[visit_exp `HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr(l)] ++ instr*{instr <- `instr*`})] -[visit_exp (n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr(l)] ++ instr*{instr <- `instr*`})] -[visit_exp n] -[visit_id n] -[visit_exp catch*{catch <- `catch*`}] -[scope_enter catch] -[visit_exp catch] -[visit_id catch] not free -[visit_id catch] not free -[scope_exit catch] -[visit_exp `catch*`] -[visit_id catch*] no dims -[visit_id catch*] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr(l)] ++ instr*{instr <- `instr*`}] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr(l)]] -[visit_exp (val : val <: instr)*{val <- `val*`}] -[scope_enter val] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp `val*`] -[visit_id val*] no dims -[visit_id val*] -[visit_exp [`BR`_instr(l)]] -[visit_exp `BR`_instr(l)] -[visit_exp (l)] -[visit_exp l] -[visit_id l] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] no dims -[visit_id instr*] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr(l)]] -[visit_exp (val : val <: instr)*{val <- `val*`}] -[scope_enter val] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp `val*`] -[visit_id val*] not free -[visit_id val*] no dims -[visit_exp [`BR`_instr(l)]] -[visit_exp `BR`_instr(l)] -[visit_exp (l)] -[visit_exp l] -[visit_id l] not free -[check_dims] c l -[visit_exp [`CONST`_instr(`I32`_numtype, c) `BR_IF`_instr(l)]] -[visit_exp `CONST`_instr(`I32`_numtype, c)] -[visit_exp (`I32`_numtype, c)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp c] -[visit_id c] -[visit_exp `BR_IF`_instr(l)] -[visit_exp (l)] -[visit_exp l] -[visit_id l] -[visit_exp [`BR`_instr(l)]] -[visit_exp `BR`_instr(l)] -[visit_exp (l)] -[visit_exp l] -[visit_id l] not free -[visit_exp (c!`%`_num_.0 =/= 0)] -[visit_exp c!`%`_num_.0] -[visit_exp c!`%`_num_] -[visit_exp c] -[visit_id c] not free -[visit_exp 0] -[check_dims] c l -[visit_exp [`CONST`_instr(`I32`_numtype, c) `BR_IF`_instr(l)]] -[visit_exp `CONST`_instr(`I32`_numtype, c)] -[visit_exp (`I32`_numtype, c)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp c] -[visit_id c] -[visit_exp `BR_IF`_instr(l)] -[visit_exp (l)] -[visit_exp l] -[visit_id l] -[visit_exp []] -[visit_exp (c!`%`_num_.0 = 0)] -[visit_exp c!`%`_num_.0] -[visit_exp c!`%`_num_] -[visit_exp c] -[visit_id c] not free -[visit_exp 0] -[check_dims] i l l' -[visit_exp [`CONST`_instr(`I32`_numtype, i) `BR_TABLE`_instr(l*{l <- `l*`}, l')]] -[visit_exp `CONST`_instr(`I32`_numtype, i)] -[visit_exp (`I32`_numtype, i)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i] -[visit_id i] -[visit_exp `BR_TABLE`_instr(l*{l <- `l*`}, l')] -[visit_exp (l*{l <- `l*`}, l')] -[visit_exp l*{l <- `l*`}] -[scope_enter l] -[visit_exp l] -[visit_id l] not free -[visit_id l] not free -[scope_exit l] -[visit_exp `l*`] -[visit_id l*] no dims -[visit_id l*] -[visit_exp l'] -[visit_id l'] -[visit_exp [`BR`_instr(l*{l <- `l*`}[i!`%`_num_.0])]] -[visit_exp `BR`_instr(l*{l <- `l*`}[i!`%`_num_.0])] -[visit_exp (l*{l <- `l*`}[i!`%`_num_.0])] -[visit_exp l*{l <- `l*`}[i!`%`_num_.0]] -[visit_exp l*{l <- `l*`}] -[scope_enter l] -[visit_exp l] -[visit_id l] not free -[visit_id l] not free -[scope_exit l] -[visit_exp `l*`] -[visit_id l*] not free -[visit_id l*] no dims -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp (i!`%`_num_.0 < |l*{l <- `l*`}|)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp |l*{l <- `l*`}|] -[visit_exp l*{l <- `l*`}] -[scope_enter l] -[visit_exp l] -[visit_id l] not free -[visit_id l] not free -[scope_exit l] -[visit_exp `l*`] -[visit_id l*] not free -[visit_id l*] no dims -[check_dims] i l l' -[visit_exp [`CONST`_instr(`I32`_numtype, i) `BR_TABLE`_instr(l*{l <- `l*`}, l')]] -[visit_exp `CONST`_instr(`I32`_numtype, i)] -[visit_exp (`I32`_numtype, i)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i] -[visit_id i] -[visit_exp `BR_TABLE`_instr(l*{l <- `l*`}, l')] -[visit_exp (l*{l <- `l*`}, l')] -[visit_exp l*{l <- `l*`}] -[scope_enter l] -[visit_exp l] -[visit_id l] not free -[visit_id l] not free -[scope_exit l] -[visit_exp `l*`] -[visit_id l*] no dims -[visit_id l*] -[visit_exp l'] -[visit_id l'] -[visit_exp [`BR`_instr(l')]] -[visit_exp `BR`_instr(l')] -[visit_exp (l')] -[visit_exp l'] -[visit_id l'] not free -[visit_exp (i!`%`_num_.0 >= |l*{l <- `l*`}|)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp |l*{l <- `l*`}|] -[visit_exp l*{l <- `l*`}] -[scope_enter l] -[visit_exp l] -[visit_id l] not free -[visit_id l] not free -[scope_exit l] -[visit_exp `l*`] -[visit_id l*] not free -[visit_id l*] no dims -[check_dims] ht l val -[visit_exp [(val : val <: instr) `BR_ON_NULL`_instr(l)]] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] -[visit_exp `BR_ON_NULL`_instr(l)] -[visit_exp (l)] -[visit_exp l] -[visit_id l] -[visit_exp [`BR`_instr(l)]] -[visit_exp `BR`_instr(l)] -[visit_exp (l)] -[visit_exp l] -[visit_id l] not free -[visit_exp (val = `REF.NULL`_val(ht))] -[visit_exp val] -[visit_id val] not free -[visit_exp `REF.NULL`_val(ht)] -[visit_exp (ht)] -[visit_exp ht] -[visit_id ht] -[check_dims] l val -[visit_exp [(val : val <: instr) `BR_ON_NULL`_instr(l)]] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] -[visit_exp `BR_ON_NULL`_instr(l)] -[visit_exp (l)] -[visit_exp l] -[visit_id l] -[visit_exp [(val : val <: instr)]] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[check_dims] ht l val -[visit_exp [(val : val <: instr) `BR_ON_NON_NULL`_instr(l)]] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] -[visit_exp `BR_ON_NON_NULL`_instr(l)] -[visit_exp (l)] -[visit_exp l] -[visit_id l] -[visit_exp []] -[visit_exp (val = `REF.NULL`_val(ht))] -[visit_exp val] -[visit_id val] not free -[visit_exp `REF.NULL`_val(ht)] -[visit_exp (ht)] -[visit_exp ht] -[visit_id ht] -[check_dims] l val -[visit_exp [(val : val <: instr) `BR_ON_NON_NULL`_instr(l)]] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] -[visit_exp `BR_ON_NON_NULL`_instr(l)] -[visit_exp (l)] -[visit_exp l] -[visit_id l] -[visit_exp [(val : val <: instr) `BR`_instr(l)]] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_exp `BR`_instr(l)] -[visit_exp (l)] -[visit_exp l] -[visit_id l] not free -[check_dims] f l ref rt rt_1 rt_2 s -[visit_exp `%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `BR_ON_CAST`_instr(l, rt_1, rt_2)])] -[visit_exp (`%;%`_state(s, f), [(ref : ref <: instr) `BR_ON_CAST`_instr(l, rt_1, rt_2)])] -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp [(ref : ref <: instr) `BR_ON_CAST`_instr(l, rt_1, rt_2)]] -[visit_exp (ref : ref <: instr)] -[visit_exp ref] -[visit_id ref] -[visit_exp `BR_ON_CAST`_instr(l, rt_1, rt_2)] -[visit_exp (l, rt_1, rt_2)] -[visit_exp l] -[visit_id l] -[visit_exp rt_1] -[visit_id rt_1] -[visit_exp rt_2] -[visit_id rt_2] -[visit_exp [(ref : ref <: instr) `BR`_instr(l)]] -[visit_exp (ref : ref <: instr)] -[visit_exp ref] -[visit_id ref] not free -[visit_exp `BR`_instr(l)] -[visit_exp (l)] -[visit_exp l] -[visit_id l] not free -[visit_exp (s, ref, rt)] -[visit_exp s] -[visit_id s] not free -[visit_exp ref] -[visit_id ref] not free -[visit_exp rt] -[visit_id rt] -[visit_exp ({`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}, rt, $inst_reftype(f.`MODULE`_frame, rt_2))] -[visit_exp {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp ?()] -[visit_exp []] -[visit_exp rt] -[visit_id rt] not free -[visit_exp $inst_reftype(f.`MODULE`_frame, rt_2)] -[visit_exp f.`MODULE`_frame] -[visit_exp f] -[visit_id f] not free -[visit_exp rt_2] -[visit_id rt_2] not free -[check_dims] f l ref rt_1 rt_2 s -[visit_exp `%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `BR_ON_CAST`_instr(l, rt_1, rt_2)])] -[visit_exp (`%;%`_state(s, f), [(ref : ref <: instr) `BR_ON_CAST`_instr(l, rt_1, rt_2)])] -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp [(ref : ref <: instr) `BR_ON_CAST`_instr(l, rt_1, rt_2)]] -[visit_exp (ref : ref <: instr)] -[visit_exp ref] -[visit_id ref] -[visit_exp `BR_ON_CAST`_instr(l, rt_1, rt_2)] -[visit_exp (l, rt_1, rt_2)] -[visit_exp l] -[visit_id l] -[visit_exp rt_1] -[visit_id rt_1] -[visit_exp rt_2] -[visit_id rt_2] -[visit_exp [(ref : ref <: instr)]] -[visit_exp (ref : ref <: instr)] -[visit_exp ref] -[visit_id ref] not free -[check_dims] f l ref rt rt_1 rt_2 s -[visit_exp `%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `BR_ON_CAST_FAIL`_instr(l, rt_1, rt_2)])] -[visit_exp (`%;%`_state(s, f), [(ref : ref <: instr) `BR_ON_CAST_FAIL`_instr(l, rt_1, rt_2)])] -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp [(ref : ref <: instr) `BR_ON_CAST_FAIL`_instr(l, rt_1, rt_2)]] -[visit_exp (ref : ref <: instr)] -[visit_exp ref] -[visit_id ref] -[visit_exp `BR_ON_CAST_FAIL`_instr(l, rt_1, rt_2)] -[visit_exp (l, rt_1, rt_2)] -[visit_exp l] -[visit_id l] -[visit_exp rt_1] -[visit_id rt_1] -[visit_exp rt_2] -[visit_id rt_2] -[visit_exp [(ref : ref <: instr)]] -[visit_exp (ref : ref <: instr)] -[visit_exp ref] -[visit_id ref] not free -[visit_exp (s, ref, rt)] -[visit_exp s] -[visit_id s] not free -[visit_exp ref] -[visit_id ref] not free -[visit_exp rt] -[visit_id rt] -[visit_exp ({`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}, rt, $inst_reftype(f.`MODULE`_frame, rt_2))] -[visit_exp {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp ?()] -[visit_exp []] -[visit_exp rt] -[visit_id rt] not free -[visit_exp $inst_reftype(f.`MODULE`_frame, rt_2)] -[visit_exp f.`MODULE`_frame] -[visit_exp f] -[visit_id f] not free -[visit_exp rt_2] -[visit_id rt_2] not free -[check_dims] f l ref rt_1 rt_2 s -[visit_exp `%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `BR_ON_CAST_FAIL`_instr(l, rt_1, rt_2)])] -[visit_exp (`%;%`_state(s, f), [(ref : ref <: instr) `BR_ON_CAST_FAIL`_instr(l, rt_1, rt_2)])] -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp [(ref : ref <: instr) `BR_ON_CAST_FAIL`_instr(l, rt_1, rt_2)]] -[visit_exp (ref : ref <: instr)] -[visit_exp ref] -[visit_id ref] -[visit_exp `BR_ON_CAST_FAIL`_instr(l, rt_1, rt_2)] -[visit_exp (l, rt_1, rt_2)] -[visit_exp l] -[visit_id l] -[visit_exp rt_1] -[visit_id rt_1] -[visit_exp rt_2] -[visit_id rt_2] -[visit_exp [(ref : ref <: instr) `BR`_instr(l)]] -[visit_exp (ref : ref <: instr)] -[visit_exp ref] -[visit_id ref] not free -[visit_exp `BR`_instr(l)] -[visit_exp (l)] -[visit_exp l] -[visit_id l] not free -[check_dims] a x z -[visit_exp `%;%`_config(z, [`CALL`_instr(x)])] -[visit_exp (z, [`CALL`_instr(x)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CALL`_instr(x)]] -[visit_exp `CALL`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp [`REF.FUNC_ADDR`_instr(a) `CALL_REF`_instr(($funcinst(z)[a].`TYPE`_funcinst : deftype <: typeuse))]] -[visit_exp `REF.FUNC_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp `CALL_REF`_instr(($funcinst(z)[a].`TYPE`_funcinst : deftype <: typeuse))] -[visit_exp (($funcinst(z)[a].`TYPE`_funcinst : deftype <: typeuse))] -[visit_exp ($funcinst(z)[a].`TYPE`_funcinst : deftype <: typeuse)] -[visit_exp $funcinst(z)[a].`TYPE`_funcinst] -[visit_exp $funcinst(z)[a]] -[visit_exp $funcinst(z)] -[visit_exp z] -[visit_id z] not free -[visit_exp a] -[visit_id a] not free -[visit_exp ($moduleinst(z).`FUNCS`_moduleinst[x!`%`_idx.0] = a)] -[visit_exp $moduleinst(z).`FUNCS`_moduleinst[x!`%`_idx.0]] -[visit_exp $moduleinst(z).`FUNCS`_moduleinst] -[visit_exp $moduleinst(z)] -[visit_exp z] -[visit_id z] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp a] -[visit_id a] not free -[check_dims] ht yy z -[visit_exp `%;%`_config(z, [`REF.NULL`_instr(ht) `CALL_REF`_instr(yy)])] -[visit_exp (z, [`REF.NULL`_instr(ht) `CALL_REF`_instr(yy)])] -[visit_exp z] -[visit_id z] -[visit_exp [`REF.NULL`_instr(ht) `CALL_REF`_instr(yy)]] -[visit_exp `REF.NULL`_instr(ht)] -[visit_exp (ht)] -[visit_exp ht] -[visit_id ht] -[visit_exp `CALL_REF`_instr(yy)] -[visit_exp (yy)] -[visit_exp yy] -[visit_id yy] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[check_dims] a f fi instr m n t t_1 t_2 val x yy z -[visit_exp `%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) `CALL_REF`_instr(yy)])] -[visit_exp (z, (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) `CALL_REF`_instr(yy)])] -[visit_exp z] -[visit_id z] -[visit_exp (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) `CALL_REF`_instr(yy)]] -[visit_exp (val : val <: instr)^n{val <- `val*`}] -[scope_enter val] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp n] -[visit_id n] -[visit_exp `val*`] -[visit_id val*] no dims -[visit_id val*] -[visit_exp [`REF.FUNC_ADDR`_instr(a) `CALL_REF`_instr(yy)]] -[visit_exp `REF.FUNC_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp `CALL_REF`_instr(yy)] -[visit_exp (yy)] -[visit_exp yy] -[visit_id yy] -[visit_exp [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])]] -[visit_exp `FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])] -[visit_exp (m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])] -[visit_exp m] -[visit_id m] -[visit_exp f] -[visit_id f] -[visit_exp [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})]] -[visit_exp `LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})] -[visit_exp (m, [], instr*{instr <- `instr*`})] -[visit_exp m] -[visit_id m] not free -[visit_exp []] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] no dims -[visit_id instr*] -[visit_exp ($funcinst(z)[a] = fi)] -[visit_exp $funcinst(z)[a]] -[visit_exp $funcinst(z)] -[visit_exp z] -[visit_id z] not free -[visit_exp a] -[visit_id a] not free -[visit_exp fi] -[visit_id fi] -[visit_exp (fi.`TYPE`_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`})))] -[visit_exp fi.`TYPE`_funcinst] -[visit_exp fi] -[visit_id fi] not free -[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1^n{t_1 <- `t_1*`})] -[visit_exp (t_1^n{t_1 <- `t_1*`})] -[visit_exp t_1^n{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp n] -[visit_id n] not free -[visit_exp `t_1*`] -[visit_id t_1*] no dims -[visit_id t_1*] -[visit_exp `%`_resulttype(t_2^m{t_2 <- `t_2*`})] -[visit_exp (t_2^m{t_2 <- `t_2*`})] -[visit_exp t_2^m{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp m] -[visit_id m] not free -[visit_exp `t_2*`] -[visit_id t_2*] no dims -[visit_id t_2*] -[visit_exp (fi.`CODE`_funcinst = `FUNC`_funccode(x, `LOCAL`_local(t)*{t <- `t*`}, instr*{instr <- `instr*`}))] -[visit_exp fi.`CODE`_funcinst] -[visit_exp fi] -[visit_id fi] not free -[visit_exp `FUNC`_funccode(x, `LOCAL`_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})] -[visit_exp (x, `LOCAL`_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})] -[visit_exp x] -[visit_id x] -[visit_exp `LOCAL`_local(t)*{t <- `t*`}] -[scope_enter t] -[visit_exp `LOCAL`_local(t)] -[visit_exp (t)] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] no dims -[visit_id t*] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] not free -[visit_id instr*] no dims -[visit_exp (f = {`LOCALS` ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, `MODULE` fi.`MODULE`_funcinst})] -[visit_exp f] -[visit_id f] not free -[visit_exp {`LOCALS` ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, `MODULE` fi.`MODULE`_funcinst}] -[visit_exp ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}] -[visit_exp ?(val)^n{val <- `val*`}] -[scope_enter val] -[visit_exp ?(val)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp n] -[visit_id n] not free -[visit_exp `val*`] -[visit_id val*] not free -[visit_id val*] no dims -[visit_exp $default_(t)*{t <- `t*`}] -[scope_enter t] -[visit_exp $default_(t)] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] not free -[visit_id t*] no dims -[visit_exp fi.`MODULE`_funcinst] -[visit_exp fi] -[visit_id fi] not free -[check_dims] a x z -[visit_exp `%;%`_config(z, [`RETURN_CALL`_instr(x)])] -[visit_exp (z, [`RETURN_CALL`_instr(x)])] -[visit_exp z] -[visit_id z] -[visit_exp [`RETURN_CALL`_instr(x)]] -[visit_exp `RETURN_CALL`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp [`REF.FUNC_ADDR`_instr(a) `RETURN_CALL_REF`_instr(($funcinst(z)[a].`TYPE`_funcinst : deftype <: typeuse))]] -[visit_exp `REF.FUNC_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp `RETURN_CALL_REF`_instr(($funcinst(z)[a].`TYPE`_funcinst : deftype <: typeuse))] -[visit_exp (($funcinst(z)[a].`TYPE`_funcinst : deftype <: typeuse))] -[visit_exp ($funcinst(z)[a].`TYPE`_funcinst : deftype <: typeuse)] -[visit_exp $funcinst(z)[a].`TYPE`_funcinst] -[visit_exp $funcinst(z)[a]] -[visit_exp $funcinst(z)] -[visit_exp z] -[visit_id z] not free -[visit_exp a] -[visit_id a] not free -[visit_exp ($moduleinst(z).`FUNCS`_moduleinst[x!`%`_idx.0] = a)] -[visit_exp $moduleinst(z).`FUNCS`_moduleinst[x!`%`_idx.0]] -[visit_exp $moduleinst(z).`FUNCS`_moduleinst] -[visit_exp $moduleinst(z)] -[visit_exp z] -[visit_id z] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp a] -[visit_id a] not free -[check_dims] instr instr' k val yy z -[visit_exp `%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr(yy)] ++ instr*{instr <- `instr*`})])] -[visit_exp (z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr(yy)] ++ instr*{instr <- `instr*`})])] -[visit_exp z] -[visit_id z] -[visit_exp [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr(yy)] ++ instr*{instr <- `instr*`})]] -[visit_exp `LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr(yy)] ++ instr*{instr <- `instr*`})] -[visit_exp (k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr(yy)] ++ instr*{instr <- `instr*`})] -[visit_exp k] -[visit_id k] -[visit_exp instr'*{instr' <- `instr'*`}] -[scope_enter instr'] -[visit_exp instr'] -[visit_id instr'] not free -[visit_id instr'] not free -[scope_exit instr'] -[visit_exp `instr'*`] -[visit_id instr'*] no dims -[visit_id instr'*] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr(yy)] ++ instr*{instr <- `instr*`}] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr(yy)]] -[visit_exp (val : val <: instr)*{val <- `val*`}] -[scope_enter val] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp `val*`] -[visit_id val*] no dims -[visit_id val*] -[visit_exp [`RETURN_CALL_REF`_instr(yy)]] -[visit_exp `RETURN_CALL_REF`_instr(yy)] -[visit_exp (yy)] -[visit_exp yy] -[visit_id yy] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] no dims -[visit_id instr*] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr(yy)]] -[visit_exp (val : val <: instr)*{val <- `val*`}] -[scope_enter val] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp `val*`] -[visit_id val*] not free -[visit_id val*] no dims -[visit_exp [`RETURN_CALL_REF`_instr(yy)]] -[visit_exp `RETURN_CALL_REF`_instr(yy)] -[visit_exp (yy)] -[visit_exp yy] -[visit_id yy] not free -[check_dims] catch instr k val yy z -[visit_exp `%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr(yy)] ++ instr*{instr <- `instr*`})])] -[visit_exp (z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr(yy)] ++ instr*{instr <- `instr*`})])] -[visit_exp z] -[visit_id z] -[visit_exp [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr(yy)] ++ instr*{instr <- `instr*`})]] -[visit_exp `HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr(yy)] ++ instr*{instr <- `instr*`})] -[visit_exp (k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr(yy)] ++ instr*{instr <- `instr*`})] -[visit_exp k] -[visit_id k] -[visit_exp catch*{catch <- `catch*`}] -[scope_enter catch] -[visit_exp catch] -[visit_id catch] not free -[visit_id catch] not free -[scope_exit catch] -[visit_exp `catch*`] -[visit_id catch*] no dims -[visit_id catch*] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr(yy)] ++ instr*{instr <- `instr*`}] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr(yy)]] -[visit_exp (val : val <: instr)*{val <- `val*`}] -[scope_enter val] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp `val*`] -[visit_id val*] no dims -[visit_id val*] -[visit_exp [`RETURN_CALL_REF`_instr(yy)]] -[visit_exp `RETURN_CALL_REF`_instr(yy)] -[visit_exp (yy)] -[visit_exp yy] -[visit_id yy] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] no dims -[visit_id instr*] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`RETURN_CALL_REF`_instr(yy)]] -[visit_exp (val : val <: instr)*{val <- `val*`}] -[scope_enter val] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp `val*`] -[visit_id val*] not free -[visit_id val*] no dims -[visit_exp [`RETURN_CALL_REF`_instr(yy)]] -[visit_exp `RETURN_CALL_REF`_instr(yy)] -[visit_exp (yy)] -[visit_exp yy] -[visit_id yy] not free -[check_dims] f ht instr k val yy z -[visit_exp `%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL`_instr(ht)] ++ [`RETURN_CALL_REF`_instr(yy)] ++ instr*{instr <- `instr*`})])] -[visit_exp (z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL`_instr(ht)] ++ [`RETURN_CALL_REF`_instr(yy)] ++ instr*{instr <- `instr*`})])] -[visit_exp z] -[visit_id z] -[visit_exp [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL`_instr(ht)] ++ [`RETURN_CALL_REF`_instr(yy)] ++ instr*{instr <- `instr*`})]] -[visit_exp `FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL`_instr(ht)] ++ [`RETURN_CALL_REF`_instr(yy)] ++ instr*{instr <- `instr*`})] -[visit_exp (k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL`_instr(ht)] ++ [`RETURN_CALL_REF`_instr(yy)] ++ instr*{instr <- `instr*`})] -[visit_exp k] -[visit_id k] -[visit_exp f] -[visit_id f] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL`_instr(ht)] ++ [`RETURN_CALL_REF`_instr(yy)] ++ instr*{instr <- `instr*`}] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL`_instr(ht)] ++ [`RETURN_CALL_REF`_instr(yy)]] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL`_instr(ht)]] -[visit_exp (val : val <: instr)*{val <- `val*`}] -[scope_enter val] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp `val*`] -[visit_id val*] no dims -[visit_id val*] -[visit_exp [`REF.NULL`_instr(ht)]] -[visit_exp `REF.NULL`_instr(ht)] -[visit_exp (ht)] -[visit_exp ht] -[visit_id ht] -[visit_exp [`RETURN_CALL_REF`_instr(yy)]] -[visit_exp `RETURN_CALL_REF`_instr(yy)] -[visit_exp (yy)] -[visit_exp yy] -[visit_id yy] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] no dims -[visit_id instr*] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[check_dims] a f instr k m n t_1 t_2 val val' yy z -[visit_exp `%;%`_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*`})])] -[visit_exp (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*`})])] -[visit_exp z] -[visit_id z] -[visit_exp [`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*`})]] -[visit_exp `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*`})] -[visit_exp (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*`})] -[visit_exp k] -[visit_id k] -[visit_exp f] -[visit_id f] -[visit_exp (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [`RETURN_CALL_REF`_instr(yy)] ++ instr*{instr <- `instr*`}] -[visit_exp (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [`RETURN_CALL_REF`_instr(yy)]] -[visit_exp (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)]] -[visit_exp (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`}] -[visit_exp (val' : val <: instr)*{val' <- `val'*`}] -[scope_enter val'] -[visit_exp (val' : val <: instr)] -[visit_exp val'] -[visit_id val'] not free -[visit_id val'] not free -[scope_exit val'] -[visit_exp `val'*`] -[visit_id val'*] no dims -[visit_id val'*] -[visit_exp (val : val <: instr)^n{val <- `val*`}] -[scope_enter val] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp n] -[visit_id n] -[visit_exp `val*`] -[visit_id val*] no dims -[visit_id val*] -[visit_exp [`REF.FUNC_ADDR`_instr(a)]] -[visit_exp `REF.FUNC_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp [`RETURN_CALL_REF`_instr(yy)]] -[visit_exp `RETURN_CALL_REF`_instr(yy)] -[visit_exp (yy)] -[visit_exp yy] -[visit_id yy] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] no dims -[visit_id instr*] -[visit_exp (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) `CALL_REF`_instr(yy)]] -[visit_exp (val : val <: instr)^n{val <- `val*`}] -[scope_enter val] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp n] -[visit_id n] not free -[visit_exp `val*`] -[visit_id val*] not free -[visit_id val*] no dims -[visit_exp [`REF.FUNC_ADDR`_instr(a) `CALL_REF`_instr(yy)]] -[visit_exp `REF.FUNC_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] not free -[visit_exp `CALL_REF`_instr(yy)] -[visit_exp (yy)] -[visit_exp yy] -[visit_id yy] not free -[visit_exp ($funcinst(z)[a].`TYPE`_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`})))] -[visit_exp $funcinst(z)[a].`TYPE`_funcinst] -[visit_exp $funcinst(z)[a]] -[visit_exp $funcinst(z)] -[visit_exp z] -[visit_id z] not free -[visit_exp a] -[visit_id a] not free -[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1^n{t_1 <- `t_1*`})] -[visit_exp (t_1^n{t_1 <- `t_1*`})] -[visit_exp t_1^n{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp n] -[visit_id n] not free -[visit_exp `t_1*`] -[visit_id t_1*] no dims -[visit_id t_1*] -[visit_exp `%`_resulttype(t_2^m{t_2 <- `t_2*`})] -[visit_exp (t_2^m{t_2 <- `t_2*`})] -[visit_exp t_2^m{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp m] -[visit_id m] -[visit_exp `t_2*`] -[visit_id t_2*] no dims -[visit_id t_2*] -[check_dims] x yy -[visit_exp [`CALL_INDIRECT`_instr(x, yy)]] -[visit_exp `CALL_INDIRECT`_instr(x, yy)] -[visit_exp (x, yy)] -[visit_exp x] -[visit_id x] -[visit_exp yy] -[visit_id yy] -[visit_exp [`TABLE.GET`_instr(x) `REF.CAST`_instr(`REF`_reftype(?(`NULL`_null), (yy : typeuse <: heaptype))) `CALL_REF`_instr(yy)]] -[visit_exp `TABLE.GET`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] not free -[visit_exp `REF.CAST`_instr(`REF`_reftype(?(`NULL`_null), (yy : typeuse <: heaptype)))] -[visit_exp (`REF`_reftype(?(`NULL`_null), (yy : typeuse <: heaptype)))] -[visit_exp `REF`_reftype(?(`NULL`_null), (yy : typeuse <: heaptype))] -[visit_exp (?(`NULL`_null), (yy : typeuse <: heaptype))] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp (yy : typeuse <: heaptype)] -[visit_exp yy] -[visit_id yy] not free -[visit_exp `CALL_REF`_instr(yy)] -[visit_exp (yy)] -[visit_exp yy] -[visit_id yy] not free -[check_dims] x yy -[visit_exp [`RETURN_CALL_INDIRECT`_instr(x, yy)]] -[visit_exp `RETURN_CALL_INDIRECT`_instr(x, yy)] -[visit_exp (x, yy)] -[visit_exp x] -[visit_id x] -[visit_exp yy] -[visit_id yy] -[visit_exp [`TABLE.GET`_instr(x) `REF.CAST`_instr(`REF`_reftype(?(`NULL`_null), (yy : typeuse <: heaptype))) `RETURN_CALL_REF`_instr(yy)]] -[visit_exp `TABLE.GET`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] not free -[visit_exp `REF.CAST`_instr(`REF`_reftype(?(`NULL`_null), (yy : typeuse <: heaptype)))] -[visit_exp (`REF`_reftype(?(`NULL`_null), (yy : typeuse <: heaptype)))] -[visit_exp `REF`_reftype(?(`NULL`_null), (yy : typeuse <: heaptype))] -[visit_exp (?(`NULL`_null), (yy : typeuse <: heaptype))] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp (yy : typeuse <: heaptype)] -[visit_exp yy] -[visit_id yy] not free -[visit_exp `RETURN_CALL_REF`_instr(yy)] -[visit_exp (yy)] -[visit_exp yy] -[visit_id yy] not free -[check_dims] f n val -[visit_exp [`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})]] -[visit_exp `FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})] -[visit_exp (n, f, (val : val <: instr)^n{val <- `val*`})] -[visit_exp n] -[visit_id n] -[visit_exp f] -[visit_id f] -[visit_exp (val : val <: instr)^n{val <- `val*`}] -[scope_enter val] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp n] -[visit_id n] not free -[visit_exp `val*`] -[visit_id val*] no dims -[visit_id val*] -[visit_exp (val : val <: instr)^n{val <- `val*`}] -[scope_enter val] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp n] -[visit_id n] not free -[visit_exp `val*`] -[visit_id val*] not free -[visit_id val*] no dims -[check_dims] f instr n val val' -[visit_exp [`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`RETURN`_instr] ++ instr*{instr <- `instr*`})]] -[visit_exp `FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`RETURN`_instr] ++ instr*{instr <- `instr*`})] -[visit_exp (n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`RETURN`_instr] ++ instr*{instr <- `instr*`})] -[visit_exp n] -[visit_id n] -[visit_exp f] -[visit_id f] -[visit_exp (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`RETURN`_instr] ++ instr*{instr <- `instr*`}] -[visit_exp (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`RETURN`_instr]] -[visit_exp (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`}] -[visit_exp (val' : val <: instr)*{val' <- `val'*`}] -[scope_enter val'] -[visit_exp (val' : val <: instr)] -[visit_exp val'] -[visit_id val'] not free -[visit_id val'] not free -[scope_exit val'] -[visit_exp `val'*`] -[visit_id val'*] no dims -[visit_id val'*] -[visit_exp (val : val <: instr)^n{val <- `val*`}] -[scope_enter val] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp n] -[visit_id n] not free -[visit_exp `val*`] -[visit_id val*] no dims -[visit_id val*] -[visit_exp [`RETURN`_instr]] -[visit_exp `RETURN`_instr] -[visit_exp ()] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] no dims -[visit_id instr*] -[visit_exp (val : val <: instr)^n{val <- `val*`}] -[scope_enter val] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp n] -[visit_id n] not free -[visit_exp `val*`] -[visit_id val*] not free -[visit_id val*] no dims -[check_dims] instr instr' n val -[visit_exp [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN`_instr] ++ instr*{instr <- `instr*`})]] -[visit_exp `LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN`_instr] ++ instr*{instr <- `instr*`})] -[visit_exp (n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN`_instr] ++ instr*{instr <- `instr*`})] -[visit_exp n] -[visit_id n] -[visit_exp instr'*{instr' <- `instr'*`}] -[scope_enter instr'] -[visit_exp instr'] -[visit_id instr'] not free -[visit_id instr'] not free -[scope_exit instr'] -[visit_exp `instr'*`] -[visit_id instr'*] no dims -[visit_id instr'*] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`RETURN`_instr] ++ instr*{instr <- `instr*`}] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`RETURN`_instr]] -[visit_exp (val : val <: instr)*{val <- `val*`}] -[scope_enter val] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp `val*`] -[visit_id val*] no dims -[visit_id val*] -[visit_exp [`RETURN`_instr]] -[visit_exp `RETURN`_instr] -[visit_exp ()] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] no dims -[visit_id instr*] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`RETURN`_instr]] -[visit_exp (val : val <: instr)*{val <- `val*`}] -[scope_enter val] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp `val*`] -[visit_id val*] not free -[visit_id val*] no dims -[visit_exp [`RETURN`_instr]] -[visit_exp `RETURN`_instr] -[visit_exp ()] -[check_dims] catch instr n val -[visit_exp [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN`_instr] ++ instr*{instr <- `instr*`})]] -[visit_exp `HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN`_instr] ++ instr*{instr <- `instr*`})] -[visit_exp (n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [`RETURN`_instr] ++ instr*{instr <- `instr*`})] -[visit_exp n] -[visit_id n] -[visit_exp catch*{catch <- `catch*`}] -[scope_enter catch] -[visit_exp catch] -[visit_id catch] not free -[visit_id catch] not free -[scope_exit catch] -[visit_exp `catch*`] -[visit_id catch*] no dims -[visit_id catch*] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`RETURN`_instr] ++ instr*{instr <- `instr*`}] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`RETURN`_instr]] -[visit_exp (val : val <: instr)*{val <- `val*`}] -[scope_enter val] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp `val*`] -[visit_id val*] no dims -[visit_id val*] -[visit_exp [`RETURN`_instr]] -[visit_exp `RETURN`_instr] -[visit_exp ()] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] no dims -[visit_id instr*] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`RETURN`_instr]] -[visit_exp (val : val <: instr)*{val <- `val*`}] -[scope_enter val] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp `val*`] -[visit_id val*] not free -[visit_id val*] no dims -[visit_exp [`RETURN`_instr]] -[visit_exp `RETURN`_instr] -[visit_exp ()] -[check_dims] a exn n t val x z -[visit_exp `%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`THROW`_instr(x)])] -[visit_exp (z, (val : val <: instr)^n{val <- `val*`} ++ [`THROW`_instr(x)])] -[visit_exp z] -[visit_id z] -[visit_exp (val : val <: instr)^n{val <- `val*`} ++ [`THROW`_instr(x)]] -[visit_exp (val : val <: instr)^n{val <- `val*`}] -[scope_enter val] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp n] -[visit_id n] -[visit_exp `val*`] -[visit_id val*] no dims -[visit_id val*] -[visit_exp [`THROW`_instr(x)]] -[visit_exp `THROW`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%;%`_config($add_exninst(z, [exn]), [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])] -[visit_exp ($add_exninst(z, [exn]), [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])] -[visit_exp $add_exninst(z, [exn])] -[visit_exp z] -[visit_id z] not free -[visit_exp [exn]] -[visit_exp exn] -[visit_id exn] -[visit_exp [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr]] -[visit_exp `REF.EXN_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp `THROW_REF`_instr] -[visit_exp ()] -[visit_exp ($as_deftype($tag(z, x).`TYPE`_taginst), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([])))] -[visit_exp $as_deftype($tag(z, x).`TYPE`_taginst)] -[visit_exp $tag(z, x).`TYPE`_taginst] -[visit_exp $tag(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))] -[visit_exp (`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))] -[visit_exp `%`_resulttype(t^n{t <- `t*`})] -[visit_exp (t^n{t <- `t*`})] -[visit_exp t^n{t <- `t*`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp n] -[visit_id n] not free -[visit_exp `t*`] -[visit_id t*] no dims -[visit_id t*] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp (a = |$exninst(z)|)] -[visit_exp a] -[visit_id a] not free -[visit_exp |$exninst(z)|] -[visit_exp $exninst(z)] -[visit_exp z] -[visit_id z] not free -[visit_exp (exn = {`TAG` $tagaddr(z)[x!`%`_idx.0], `FIELDS` val^n{val <- `val*`}})] -[visit_exp exn] -[visit_id exn] not free -[visit_exp {`TAG` $tagaddr(z)[x!`%`_idx.0], `FIELDS` val^n{val <- `val*`}}] -[visit_exp $tagaddr(z)[x!`%`_idx.0]] -[visit_exp $tagaddr(z)] -[visit_exp z] -[visit_id z] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp val^n{val <- `val*`}] -[scope_enter val] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp n] -[visit_id n] not free -[visit_exp `val*`] -[visit_id val*] not free -[visit_id val*] no dims -[check_dims] ht z -[visit_exp `%;%`_config(z, [`REF.NULL`_instr(ht) `THROW_REF`_instr])] -[visit_exp (z, [`REF.NULL`_instr(ht) `THROW_REF`_instr])] -[visit_exp z] -[visit_id z] -[visit_exp [`REF.NULL`_instr(ht) `THROW_REF`_instr]] -[visit_exp `REF.NULL`_instr(ht)] -[visit_exp (ht)] -[visit_exp ht] -[visit_id ht] -[visit_exp `THROW_REF`_instr] -[visit_exp ()] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[check_dims] a instr val z -[visit_exp `%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [`THROW_REF`_instr] ++ instr*{instr <- `instr*`})] -[visit_exp (z, (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [`THROW_REF`_instr] ++ instr*{instr <- `instr*`})] -[visit_exp z] -[visit_id z] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [`THROW_REF`_instr] ++ instr*{instr <- `instr*`}] -[visit_exp (val : val <: instr)*{val <- `val*`}] -[scope_enter val] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp `val*`] -[visit_id val*] no dims -[visit_id val*] -[visit_exp [`REF.EXN_ADDR`_instr(a)] ++ [`THROW_REF`_instr] ++ instr*{instr <- `instr*`}] -[visit_exp [`REF.EXN_ADDR`_instr(a)]] -[visit_exp `REF.EXN_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp [`THROW_REF`_instr] ++ instr*{instr <- `instr*`}] -[visit_exp [`THROW_REF`_instr]] -[visit_exp `THROW_REF`_instr] -[visit_exp ()] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] no dims -[visit_id instr*] -[visit_exp [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr]] -[visit_exp `REF.EXN_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] not free -[visit_exp `THROW_REF`_instr] -[visit_exp ()] -[visit_exp ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= []))] -[visit_exp (val*{val <- `val*`} =/= [])] -[visit_exp val*{val <- `val*`}] -[scope_enter val] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp `val*`] -[visit_id val*] not free -[visit_id val*] no dims -[visit_exp []] -[visit_exp (instr*{instr <- `instr*`} =/= [])] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] not free -[visit_id instr*] no dims -[visit_exp []] -[check_dims] a instr' n z -[visit_exp `%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])])] -[visit_exp (z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])])] -[visit_exp z] -[visit_id z] -[visit_exp [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])]] -[visit_exp `LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])] -[visit_exp (n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])] -[visit_exp n] -[visit_id n] -[visit_exp instr'*{instr' <- `instr'*`}] -[scope_enter instr'] -[visit_exp instr'] -[visit_id instr'] not free -[visit_id instr'] not free -[scope_exit instr'] -[visit_exp `instr'*`] -[visit_id instr'*] no dims -[visit_id instr'*] -[visit_exp [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr]] -[visit_exp `REF.EXN_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp `THROW_REF`_instr] -[visit_exp ()] -[visit_exp [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr]] -[visit_exp `REF.EXN_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] not free -[visit_exp `THROW_REF`_instr] -[visit_exp ()] -[check_dims] a f n z -[visit_exp `%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])])] -[visit_exp (z, [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])])] -[visit_exp z] -[visit_id z] -[visit_exp [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])]] -[visit_exp `FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])] -[visit_exp (n, f, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])] -[visit_exp n] -[visit_id n] -[visit_exp f] -[visit_id f] -[visit_exp [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr]] -[visit_exp `REF.EXN_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp `THROW_REF`_instr] -[visit_exp ()] -[visit_exp [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr]] -[visit_exp `REF.EXN_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] not free -[visit_exp `THROW_REF`_instr] -[visit_exp ()] -[check_dims] a n z -[visit_exp `%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])])] -[visit_exp (z, [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])])] -[visit_exp z] -[visit_id z] -[visit_exp [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])]] -[visit_exp `HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])] -[visit_exp (n, [], [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])] -[visit_exp n] -[visit_id n] -[visit_exp []] -[visit_exp [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr]] -[visit_exp `REF.EXN_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp `THROW_REF`_instr] -[visit_exp ()] -[visit_exp [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr]] -[visit_exp `REF.EXN_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] not free -[visit_exp `THROW_REF`_instr] -[visit_exp ()] -[check_dims] a catch' l n val x z -[visit_exp `%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [`CATCH`_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])])] -[visit_exp (z, [`HANDLER_%{%}%`_instr(n, [`CATCH`_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])])] -[visit_exp z] -[visit_id z] -[visit_exp [`HANDLER_%{%}%`_instr(n, [`CATCH`_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])]] -[visit_exp `HANDLER_%{%}%`_instr(n, [`CATCH`_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])] -[visit_exp (n, [`CATCH`_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])] -[visit_exp n] -[visit_id n] -[visit_exp [`CATCH`_catch(x, l)] ++ catch'*{catch' <- `catch'*`}] -[visit_exp [`CATCH`_catch(x, l)]] -[visit_exp `CATCH`_catch(x, l)] -[visit_exp (x, l)] -[visit_exp x] -[visit_id x] -[visit_exp l] -[visit_id l] -[visit_exp catch'*{catch' <- `catch'*`}] -[scope_enter catch'] -[visit_exp catch'] -[visit_id catch'] not free -[visit_id catch'] not free -[scope_exit catch'] -[visit_exp `catch'*`] -[visit_id catch'*] no dims -[visit_id catch'*] -[visit_exp [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr]] -[visit_exp `REF.EXN_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp `THROW_REF`_instr] -[visit_exp ()] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`BR`_instr(l)]] -[visit_exp (val : val <: instr)*{val <- `val*`}] -[scope_enter val] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp `val*`] -[visit_id val*] no dims -[visit_id val*] -[visit_exp [`BR`_instr(l)]] -[visit_exp `BR`_instr(l)] -[visit_exp (l)] -[visit_exp l] -[visit_id l] not free -[visit_exp ($exninst(z)[a].`TAG`_exninst = $tagaddr(z)[x!`%`_idx.0])] -[visit_exp $exninst(z)[a].`TAG`_exninst] -[visit_exp $exninst(z)[a]] -[visit_exp $exninst(z)] -[visit_exp z] -[visit_id z] not free -[visit_exp a] -[visit_id a] not free -[visit_exp $tagaddr(z)[x!`%`_idx.0]] -[visit_exp $tagaddr(z)] -[visit_exp z] -[visit_id z] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp (val*{val <- `val*`} = $exninst(z)[a].`FIELDS`_exninst)] -[visit_exp val*{val <- `val*`}] -[scope_enter val] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp `val*`] -[visit_id val*] not free -[visit_id val*] no dims -[visit_exp $exninst(z)[a].`FIELDS`_exninst] -[visit_exp $exninst(z)[a]] -[visit_exp $exninst(z)] -[visit_exp z] -[visit_id z] not free -[visit_exp a] -[visit_id a] not free -[check_dims] a catch' l n val x z -[visit_exp `%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [`CATCH_REF`_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])])] -[visit_exp (z, [`HANDLER_%{%}%`_instr(n, [`CATCH_REF`_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])])] -[visit_exp z] -[visit_id z] -[visit_exp [`HANDLER_%{%}%`_instr(n, [`CATCH_REF`_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])]] -[visit_exp `HANDLER_%{%}%`_instr(n, [`CATCH_REF`_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])] -[visit_exp (n, [`CATCH_REF`_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])] -[visit_exp n] -[visit_id n] -[visit_exp [`CATCH_REF`_catch(x, l)] ++ catch'*{catch' <- `catch'*`}] -[visit_exp [`CATCH_REF`_catch(x, l)]] -[visit_exp `CATCH_REF`_catch(x, l)] -[visit_exp (x, l)] -[visit_exp x] -[visit_id x] -[visit_exp l] -[visit_id l] -[visit_exp catch'*{catch' <- `catch'*`}] -[scope_enter catch'] -[visit_exp catch'] -[visit_id catch'] not free -[visit_id catch'] not free -[scope_exit catch'] -[visit_exp `catch'*`] -[visit_id catch'*] no dims -[visit_id catch'*] -[visit_exp [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr]] -[visit_exp `REF.EXN_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp `THROW_REF`_instr] -[visit_exp ()] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a) `BR`_instr(l)]] -[visit_exp (val : val <: instr)*{val <- `val*`}] -[scope_enter val] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp `val*`] -[visit_id val*] no dims -[visit_id val*] -[visit_exp [`REF.EXN_ADDR`_instr(a) `BR`_instr(l)]] -[visit_exp `REF.EXN_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] not free -[visit_exp `BR`_instr(l)] -[visit_exp (l)] -[visit_exp l] -[visit_id l] not free -[visit_exp ($exninst(z)[a].`TAG`_exninst = $tagaddr(z)[x!`%`_idx.0])] -[visit_exp $exninst(z)[a].`TAG`_exninst] -[visit_exp $exninst(z)[a]] -[visit_exp $exninst(z)] -[visit_exp z] -[visit_id z] not free -[visit_exp a] -[visit_id a] not free -[visit_exp $tagaddr(z)[x!`%`_idx.0]] -[visit_exp $tagaddr(z)] -[visit_exp z] -[visit_id z] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp (val*{val <- `val*`} = $exninst(z)[a].`FIELDS`_exninst)] -[visit_exp val*{val <- `val*`}] -[scope_enter val] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp `val*`] -[visit_id val*] not free -[visit_id val*] no dims -[visit_exp $exninst(z)[a].`FIELDS`_exninst] -[visit_exp $exninst(z)[a]] -[visit_exp $exninst(z)] -[visit_exp z] -[visit_id z] not free -[visit_exp a] -[visit_id a] not free -[check_dims] a catch' l n z -[visit_exp `%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [`CATCH_ALL`_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])])] -[visit_exp (z, [`HANDLER_%{%}%`_instr(n, [`CATCH_ALL`_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])])] -[visit_exp z] -[visit_id z] -[visit_exp [`HANDLER_%{%}%`_instr(n, [`CATCH_ALL`_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])]] -[visit_exp `HANDLER_%{%}%`_instr(n, [`CATCH_ALL`_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])] -[visit_exp (n, [`CATCH_ALL`_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])] -[visit_exp n] -[visit_id n] -[visit_exp [`CATCH_ALL`_catch(l)] ++ catch'*{catch' <- `catch'*`}] -[visit_exp [`CATCH_ALL`_catch(l)]] -[visit_exp `CATCH_ALL`_catch(l)] -[visit_exp (l)] -[visit_exp l] -[visit_id l] -[visit_exp catch'*{catch' <- `catch'*`}] -[scope_enter catch'] -[visit_exp catch'] -[visit_id catch'] not free -[visit_id catch'] not free -[scope_exit catch'] -[visit_exp `catch'*`] -[visit_id catch'*] no dims -[visit_id catch'*] -[visit_exp [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr]] -[visit_exp `REF.EXN_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp `THROW_REF`_instr] -[visit_exp ()] -[visit_exp [`BR`_instr(l)]] -[visit_exp `BR`_instr(l)] -[visit_exp (l)] -[visit_exp l] -[visit_id l] not free -[check_dims] a catch' l n z -[visit_exp `%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [`CATCH_ALL_REF`_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])])] -[visit_exp (z, [`HANDLER_%{%}%`_instr(n, [`CATCH_ALL_REF`_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])])] -[visit_exp z] -[visit_id z] -[visit_exp [`HANDLER_%{%}%`_instr(n, [`CATCH_ALL_REF`_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])]] -[visit_exp `HANDLER_%{%}%`_instr(n, [`CATCH_ALL_REF`_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])] -[visit_exp (n, [`CATCH_ALL_REF`_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])] -[visit_exp n] -[visit_id n] -[visit_exp [`CATCH_ALL_REF`_catch(l)] ++ catch'*{catch' <- `catch'*`}] -[visit_exp [`CATCH_ALL_REF`_catch(l)]] -[visit_exp `CATCH_ALL_REF`_catch(l)] -[visit_exp (l)] -[visit_exp l] -[visit_id l] -[visit_exp catch'*{catch' <- `catch'*`}] -[scope_enter catch'] -[visit_exp catch'] -[visit_id catch'] not free -[visit_id catch'] not free -[scope_exit catch'] -[visit_exp `catch'*`] -[visit_id catch'*] no dims -[visit_id catch'*] -[visit_exp [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr]] -[visit_exp `REF.EXN_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp `THROW_REF`_instr] -[visit_exp ()] -[visit_exp [`REF.EXN_ADDR`_instr(a) `BR`_instr(l)]] -[visit_exp `REF.EXN_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] not free -[visit_exp `BR`_instr(l)] -[visit_exp (l)] -[visit_exp l] -[visit_id l] not free -[check_dims] a catch catch' n z -[visit_exp `%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])])] -[visit_exp (z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])])] -[visit_exp z] -[visit_id z] -[visit_exp [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])]] -[visit_exp `HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])] -[visit_exp (n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])] -[visit_exp n] -[visit_id n] -[visit_exp [catch] ++ catch'*{catch' <- `catch'*`}] -[visit_exp [catch]] -[visit_exp catch] -[visit_id catch] -[visit_exp catch'*{catch' <- `catch'*`}] -[scope_enter catch'] -[visit_exp catch'] -[visit_id catch'] not free -[visit_id catch'] not free -[scope_exit catch'] -[visit_exp `catch'*`] -[visit_id catch'*] no dims -[visit_id catch'*] -[visit_exp [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr]] -[visit_exp `REF.EXN_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp `THROW_REF`_instr] -[visit_exp ()] -[visit_exp [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])]] -[visit_exp `HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])] -[visit_exp (n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr])] -[visit_exp n] -[visit_id n] not free -[visit_exp catch'*{catch' <- `catch'*`}] -[scope_enter catch'] -[visit_exp catch'] -[visit_id catch'] not free -[visit_id catch'] not free -[scope_exit catch'] -[visit_exp `catch'*`] -[visit_id catch'*] not free -[visit_id catch'*] no dims -[visit_exp [`REF.EXN_ADDR`_instr(a) `THROW_REF`_instr]] -[visit_exp `REF.EXN_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] not free -[visit_exp `THROW_REF`_instr] -[visit_exp ()] -[check_dims] bt catch instr m n t_1 t_2 val z -[visit_exp `%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [`TRY_TABLE`_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])] -[visit_exp (z, (val : val <: instr)^m{val <- `val*`} ++ [`TRY_TABLE`_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})])] -[visit_exp z] -[visit_id z] -[visit_exp (val : val <: instr)^m{val <- `val*`} ++ [`TRY_TABLE`_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]] -[visit_exp (val : val <: instr)^m{val <- `val*`}] -[scope_enter val] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp m] -[visit_id m] -[visit_exp `val*`] -[visit_id val*] no dims -[visit_id val*] -[visit_exp [`TRY_TABLE`_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]] -[visit_exp `TRY_TABLE`_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})] -[visit_exp (bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})] -[visit_exp bt] -[visit_id bt] -[visit_exp `%`_list(catch*{catch <- `catch*`})] -[visit_exp (catch*{catch <- `catch*`})] -[visit_exp catch*{catch <- `catch*`}] -[scope_enter catch] -[visit_exp catch] -[visit_id catch] not free -[visit_id catch] not free -[scope_exit catch] -[visit_exp `catch*`] -[visit_id catch*] no dims -[visit_id catch*] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] no dims -[visit_id instr*] -[visit_exp [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]] -[visit_exp `HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])] -[visit_exp (n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])] -[visit_exp n] -[visit_id n] -[visit_exp catch*{catch <- `catch*`}] -[scope_enter catch] -[visit_exp catch] -[visit_id catch] not free -[visit_id catch] not free -[scope_exit catch] -[visit_exp `catch*`] -[visit_id catch*] not free -[visit_id catch*] no dims -[visit_exp [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]] -[visit_exp `LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})] -[visit_exp (n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})] -[visit_exp n] -[visit_id n] not free -[visit_exp []] -[visit_exp (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`}] -[visit_exp (val : val <: instr)^m{val <- `val*`}] -[scope_enter val] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp m] -[visit_id m] not free -[visit_exp `val*`] -[visit_id val*] not free -[visit_id val*] no dims -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] not free -[visit_id instr*] no dims -[visit_exp ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`})))] -[visit_exp $blocktype_(z, bt)] -[visit_exp z] -[visit_id z] not free -[visit_exp bt] -[visit_id bt] not free -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1^m{t_1 <- `t_1*`})] -[visit_exp (t_1^m{t_1 <- `t_1*`})] -[visit_exp t_1^m{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp m] -[visit_id m] not free -[visit_exp `t_1*`] -[visit_id t_1*] no dims -[visit_id t_1*] -[visit_exp []] -[visit_exp `%`_resulttype(t_2^n{t_2 <- `t_2*`})] -[visit_exp (t_2^n{t_2 <- `t_2*`})] -[visit_exp t_2^n{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp n] -[visit_id n] not free -[visit_exp `t_2*`] -[visit_id t_2*] no dims -[visit_id t_2*] -[check_dims] catch n val -[visit_exp [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})]] -[visit_exp `HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})] -[visit_exp (n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})] -[visit_exp n] -[visit_id n] -[visit_exp catch*{catch <- `catch*`}] -[scope_enter catch] -[visit_exp catch] -[visit_id catch] not free -[visit_id catch] not free -[scope_exit catch] -[visit_exp `catch*`] -[visit_id catch*] no dims -[visit_id catch*] -[visit_exp (val : val <: instr)*{val <- `val*`}] -[scope_enter val] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp `val*`] -[visit_id val*] no dims -[visit_id val*] -[visit_exp (val : val <: instr)*{val <- `val*`}] -[scope_enter val] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp `val*`] -[visit_id val*] not free -[visit_id val*] no dims -[check_dims] instr val -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`TRAP`_instr] ++ instr*{instr <- `instr*`}] -[visit_exp (val : val <: instr)*{val <- `val*`}] -[scope_enter val] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp `val*`] -[visit_id val*] no dims -[visit_id val*] -[visit_exp [`TRAP`_instr] ++ instr*{instr <- `instr*`}] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] no dims -[visit_id instr*] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[visit_exp ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= []))] -[visit_exp (val*{val <- `val*`} =/= [])] -[visit_exp val*{val <- `val*`}] -[scope_enter val] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp `val*`] -[visit_id val*] not free -[visit_id val*] no dims -[visit_exp []] -[visit_exp (instr*{instr <- `instr*`} =/= [])] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] not free -[visit_id instr*] no dims -[visit_exp []] -[check_dims] instr' n -[visit_exp [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`TRAP`_instr])]] -[visit_exp `LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`TRAP`_instr])] -[visit_exp (n, instr'*{instr' <- `instr'*`}, [`TRAP`_instr])] -[visit_exp n] -[visit_id n] -[visit_exp instr'*{instr' <- `instr'*`}] -[scope_enter instr'] -[visit_exp instr'] -[visit_id instr'] not free -[visit_id instr'] not free -[scope_exit instr'] -[visit_exp `instr'*`] -[visit_id instr'*] no dims -[visit_id instr'*] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[check_dims] f n -[visit_exp [`FRAME_%{%}%`_instr(n, f, [`TRAP`_instr])]] -[visit_exp `FRAME_%{%}%`_instr(n, f, [`TRAP`_instr])] -[visit_exp (n, f, [`TRAP`_instr])] -[visit_exp n] -[visit_id n] -[visit_exp f] -[visit_id f] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[check_dims] val x z -[visit_exp `%;%`_config(z, [`LOCAL.GET`_instr(x)])] -[visit_exp (z, [`LOCAL.GET`_instr(x)])] -[visit_exp z] -[visit_id z] -[visit_exp [`LOCAL.GET`_instr(x)]] -[visit_exp `LOCAL.GET`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp [(val : val <: instr)]] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] -[visit_exp ($local(z, x) = ?(val))] -[visit_exp $local(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp ?(val)] -[visit_exp val] -[visit_id val] not free -[check_dims] val x z -[visit_exp `%;%`_config(z, [(val : val <: instr) `LOCAL.SET`_instr(x)])] -[visit_exp (z, [(val : val <: instr) `LOCAL.SET`_instr(x)])] -[visit_exp z] -[visit_id z] -[visit_exp [(val : val <: instr) `LOCAL.SET`_instr(x)]] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] -[visit_exp `LOCAL.SET`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%;%`_config($with_local(z, x, val), [])] -[visit_exp ($with_local(z, x, val), [])] -[visit_exp $with_local(z, x, val)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp val] -[visit_id val] not free -[visit_exp []] -[check_dims] val x -[visit_exp [(val : val <: instr) `LOCAL.TEE`_instr(x)]] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] -[visit_exp `LOCAL.TEE`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp [(val : val <: instr) (val : val <: instr) `LOCAL.SET`_instr(x)]] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_exp `LOCAL.SET`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] not free -[check_dims] val x z -[visit_exp `%;%`_config(z, [`GLOBAL.GET`_instr(x)])] -[visit_exp (z, [`GLOBAL.GET`_instr(x)])] -[visit_exp z] -[visit_id z] -[visit_exp [`GLOBAL.GET`_instr(x)]] -[visit_exp `GLOBAL.GET`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp [(val : val <: instr)]] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] -[visit_exp ($global(z, x).`VALUE`_globalinst = val)] -[visit_exp $global(z, x).`VALUE`_globalinst] -[visit_exp $global(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp val] -[visit_id val] not free -[check_dims] val x z -[visit_exp `%;%`_config(z, [(val : val <: instr) `GLOBAL.SET`_instr(x)])] -[visit_exp (z, [(val : val <: instr) `GLOBAL.SET`_instr(x)])] -[visit_exp z] -[visit_id z] -[visit_exp [(val : val <: instr) `GLOBAL.SET`_instr(x)]] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] -[visit_exp `GLOBAL.SET`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%;%`_config($with_global(z, x, val), [])] -[visit_exp ($with_global(z, x, val), [])] -[visit_exp $with_global(z, x, val)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp val] -[visit_id val] not free -[visit_exp []] -[check_dims] at i x z -[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)])] -[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] -[visit_exp ((at : addrtype <: numtype), i)] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] -[visit_exp i] -[visit_id i] -[visit_exp `TABLE.GET`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[visit_exp (i!`%`_num_.0 >= |$table(z, x).`REFS`_tableinst|)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp |$table(z, x).`REFS`_tableinst|] -[visit_exp $table(z, x).`REFS`_tableinst] -[visit_exp $table(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[check_dims] at i x z -[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)])] -[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] -[visit_exp ((at : addrtype <: numtype), i)] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] -[visit_exp i] -[visit_id i] -[visit_exp `TABLE.GET`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp [($table(z, x).`REFS`_tableinst[i!`%`_num_.0] : ref <: instr)]] -[visit_exp ($table(z, x).`REFS`_tableinst[i!`%`_num_.0] : ref <: instr)] -[visit_exp $table(z, x).`REFS`_tableinst[i!`%`_num_.0]] -[visit_exp $table(z, x).`REFS`_tableinst] -[visit_exp $table(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp (i!`%`_num_.0 < |$table(z, x).`REFS`_tableinst|)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp |$table(z, x).`REFS`_tableinst|] -[visit_exp $table(z, x).`REFS`_tableinst] -[visit_exp $table(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[check_dims] at i ref x z -[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)])] -[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] -[visit_exp ((at : addrtype <: numtype), i)] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] -[visit_exp i] -[visit_id i] -[visit_exp (ref : ref <: instr)] -[visit_exp ref] -[visit_id ref] -[visit_exp `TABLE.SET`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%;%`_config(z, [`TRAP`_instr])] -[visit_exp (z, [`TRAP`_instr])] -[visit_exp z] -[visit_id z] not free -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[visit_exp (i!`%`_num_.0 >= |$table(z, x).`REFS`_tableinst|)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp |$table(z, x).`REFS`_tableinst|] -[visit_exp $table(z, x).`REFS`_tableinst] -[visit_exp $table(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[check_dims] at i ref x z -[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)])] -[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] -[visit_exp ((at : addrtype <: numtype), i)] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] -[visit_exp i] -[visit_id i] -[visit_exp (ref : ref <: instr)] -[visit_exp ref] -[visit_id ref] -[visit_exp `TABLE.SET`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%;%`_config($with_table(z, x, i!`%`_num_.0, ref), [])] -[visit_exp ($with_table(z, x, i!`%`_num_.0, ref), [])] -[visit_exp $with_table(z, x, i!`%`_num_.0, ref)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp ref] -[visit_id ref] not free -[visit_exp []] -[visit_exp (i!`%`_num_.0 < |$table(z, x).`REFS`_tableinst|)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp |$table(z, x).`REFS`_tableinst|] -[visit_exp $table(z, x).`REFS`_tableinst] -[visit_exp $table(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[check_dims] at lim n rt x z -[visit_exp `%;%`_config(z, [`TABLE.SIZE`_instr(x)])] -[visit_exp (z, [`TABLE.SIZE`_instr(x)])] -[visit_exp z] -[visit_id z] -[visit_exp [`TABLE.SIZE`_instr(x)]] -[visit_exp `TABLE.SIZE`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp [`CONST`_instr((at : addrtype <: numtype), `%`_num_(n))]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), `%`_num_(n))] -[visit_exp ((at : addrtype <: numtype), `%`_num_(n))] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp (|$table(z, x).`REFS`_tableinst| = n)] -[visit_exp |$table(z, x).`REFS`_tableinst|] -[visit_exp $table(z, x).`REFS`_tableinst] -[visit_exp $table(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp n] -[visit_id n] not free -[visit_exp ($table(z, x).`TYPE`_tableinst = `%%%`_tabletype(at, lim, rt))] -[visit_exp $table(z, x).`TYPE`_tableinst] -[visit_exp $table(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp `%%%`_tabletype(at, lim, rt)] -[visit_exp (at, lim, rt)] -[visit_exp at] -[visit_id at] not free -[visit_exp lim] -[visit_id lim] -[visit_exp rt] -[visit_id rt] -[check_dims] at n ref ti x z -[visit_exp `%;%`_config(z, [(ref : ref <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `TABLE.GROW`_instr(x)])] -[visit_exp (z, [(ref : ref <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `TABLE.GROW`_instr(x)])] -[visit_exp z] -[visit_id z] -[visit_exp [(ref : ref <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `TABLE.GROW`_instr(x)]] -[visit_exp (ref : ref <: instr)] -[visit_exp ref] -[visit_id ref] -[visit_exp `CONST`_instr((at : addrtype <: numtype), `%`_num_(n))] -[visit_exp ((at : addrtype <: numtype), `%`_num_(n))] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `TABLE.GROW`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%;%`_config($with_tableinst(z, x, ti), [`CONST`_instr((at : addrtype <: numtype), `%`_num_(|$table(z, x).`REFS`_tableinst|))])] -[visit_exp ($with_tableinst(z, x, ti), [`CONST`_instr((at : addrtype <: numtype), `%`_num_(|$table(z, x).`REFS`_tableinst|))])] -[visit_exp $with_tableinst(z, x, ti)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp ti] -[visit_id ti] -[visit_exp [`CONST`_instr((at : addrtype <: numtype), `%`_num_(|$table(z, x).`REFS`_tableinst|))]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), `%`_num_(|$table(z, x).`REFS`_tableinst|))] -[visit_exp ((at : addrtype <: numtype), `%`_num_(|$table(z, x).`REFS`_tableinst|))] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] not free -[visit_exp `%`_num_(|$table(z, x).`REFS`_tableinst|)] -[visit_exp (|$table(z, x).`REFS`_tableinst|)] -[visit_exp |$table(z, x).`REFS`_tableinst|] -[visit_exp $table(z, x).`REFS`_tableinst] -[visit_exp $table(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp (ti = $growtable($table(z, x), n, ref))] -[visit_exp ti] -[visit_id ti] not free -[visit_exp $growtable($table(z, x), n, ref)] -[visit_exp $table(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp n] -[visit_id n] not free -[visit_exp ref] -[visit_id ref] not free -[check_dims] at n ref x z -[visit_exp `%;%`_config(z, [(ref : ref <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `TABLE.GROW`_instr(x)])] -[visit_exp (z, [(ref : ref <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `TABLE.GROW`_instr(x)])] -[visit_exp z] -[visit_id z] -[visit_exp [(ref : ref <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `TABLE.GROW`_instr(x)]] -[visit_exp (ref : ref <: instr)] -[visit_exp ref] -[visit_id ref] -[visit_exp `CONST`_instr((at : addrtype <: numtype), `%`_num_(n))] -[visit_exp ((at : addrtype <: numtype), `%`_num_(n))] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `TABLE.GROW`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))])] -[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))])] -[visit_exp z] -[visit_id z] not free -[visit_exp [`CONST`_instr((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))] -[visit_exp ((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] not free -[visit_exp `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))] -[visit_exp ($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))] -[visit_exp $inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))] -[visit_exp $size((at : addrtype <: numtype))] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] not free -[visit_exp - (1 : nat <:> int)] -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[check_dims] at i n val x z -[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `TABLE.FILL`_instr(x)])] -[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `TABLE.FILL`_instr(x)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `TABLE.FILL`_instr(x)]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] -[visit_exp ((at : addrtype <: numtype), i)] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] -[visit_exp i] -[visit_id i] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] -[visit_exp `CONST`_instr((at : addrtype <: numtype), `%`_num_(n))] -[visit_exp ((at : addrtype <: numtype), `%`_num_(n))] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] not free -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `TABLE.FILL`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[visit_exp ((i!`%`_num_.0 + n) > |$table(z, x).`REFS`_tableinst|)] -[visit_exp (i!`%`_num_.0 + n)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp n] -[visit_id n] not free -[visit_exp |$table(z, x).`REFS`_tableinst|] -[visit_exp $table(z, x).`REFS`_tableinst] -[visit_exp $table(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[check_dims] at i n val x z -[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `TABLE.FILL`_instr(x)])] -[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `TABLE.FILL`_instr(x)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `TABLE.FILL`_instr(x)]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] -[visit_exp ((at : addrtype <: numtype), i)] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] -[visit_exp i] -[visit_id i] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] -[visit_exp `CONST`_instr((at : addrtype <: numtype), `%`_num_(n))] -[visit_exp ((at : addrtype <: numtype), `%`_num_(n))] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] not free -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `TABLE.FILL`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp []] -[visit_exp (n = 0)] -[visit_exp n] -[visit_id n] not free -[visit_exp 0] -[check_dims] at i n val x z -[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `TABLE.FILL`_instr(x)])] -[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `TABLE.FILL`_instr(x)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `TABLE.FILL`_instr(x)]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] -[visit_exp ((at : addrtype <: numtype), i)] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] -[visit_exp i] -[visit_id i] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] -[visit_exp `CONST`_instr((at : addrtype <: numtype), `%`_num_(n))] -[visit_exp ((at : addrtype <: numtype), `%`_num_(n))] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] not free -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `TABLE.FILL`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp [`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)]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] -[visit_exp ((at : addrtype <: numtype), i)] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] not free -[visit_exp i] -[visit_id i] not free -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_exp `TABLE.SET`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] not free -[visit_exp `CONST`_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1)))] -[visit_exp ((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1)))] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] not free -[visit_exp `%`_num_((i!`%`_num_.0 + 1))] -[visit_exp ((i!`%`_num_.0 + 1))] -[visit_exp (i!`%`_num_.0 + 1)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp 1] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_exp `CONST`_instr((at : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp ((at : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] not free -[visit_exp `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp ((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp (((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp ((n : nat <:> int) - (1 : nat <:> int))] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp `TABLE.FILL`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] not free -[check_dims] at' at_1 at_2 i_1 i_2 n x_1 x_2 z -[visit_exp `%;%`_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)])] -[visit_exp (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)])] -[visit_exp z] -[visit_id z] -[visit_exp [`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)]] -[visit_exp `CONST`_instr((at_1 : addrtype <: numtype), i_1)] -[visit_exp ((at_1 : addrtype <: numtype), i_1)] -[visit_exp (at_1 : addrtype <: numtype)] -[visit_exp at_1] -[visit_id at_1] -[visit_exp i_1] -[visit_id i_1] -[visit_exp `CONST`_instr((at_2 : addrtype <: numtype), i_2)] -[visit_exp ((at_2 : addrtype <: numtype), i_2)] -[visit_exp (at_2 : addrtype <: numtype)] -[visit_exp at_2] -[visit_id at_2] -[visit_exp i_2] -[visit_id i_2] -[visit_exp `CONST`_instr((at' : addrtype <: numtype), `%`_num_(n))] -[visit_exp ((at' : addrtype <: numtype), `%`_num_(n))] -[visit_exp (at' : addrtype <: numtype)] -[visit_exp at'] -[visit_id at'] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `TABLE.COPY`_instr(x_1, x_2)] -[visit_exp (x_1, x_2)] -[visit_exp x_1] -[visit_id x_1] -[visit_exp x_2] -[visit_id x_2] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[visit_exp (((i_1!`%`_num_.0 + n) > |$table(z, x_1).`REFS`_tableinst|) \/ ((i_2!`%`_num_.0 + n) > |$table(z, x_2).`REFS`_tableinst|))] -[visit_exp ((i_1!`%`_num_.0 + n) > |$table(z, x_1).`REFS`_tableinst|)] -[visit_exp (i_1!`%`_num_.0 + n)] -[visit_exp i_1!`%`_num_.0] -[visit_exp i_1!`%`_num_] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp n] -[visit_id n] not free -[visit_exp |$table(z, x_1).`REFS`_tableinst|] -[visit_exp $table(z, x_1).`REFS`_tableinst] -[visit_exp $table(z, x_1)] -[visit_exp z] -[visit_id z] not free -[visit_exp x_1] -[visit_id x_1] not free -[visit_exp ((i_2!`%`_num_.0 + n) > |$table(z, x_2).`REFS`_tableinst|)] -[visit_exp (i_2!`%`_num_.0 + n)] -[visit_exp i_2!`%`_num_.0] -[visit_exp i_2!`%`_num_] -[visit_exp i_2] -[visit_id i_2] not free -[visit_exp n] -[visit_id n] not free -[visit_exp |$table(z, x_2).`REFS`_tableinst|] -[visit_exp $table(z, x_2).`REFS`_tableinst] -[visit_exp $table(z, x_2)] -[visit_exp z] -[visit_id z] not free -[visit_exp x_2] -[visit_id x_2] not free -[check_dims] at' at_1 at_2 i_1 i_2 n x y z -[visit_exp `%;%`_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)])] -[visit_exp (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)])] -[visit_exp z] -[visit_id z] -[visit_exp [`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)]] -[visit_exp `CONST`_instr((at_1 : addrtype <: numtype), i_1)] -[visit_exp ((at_1 : addrtype <: numtype), i_1)] -[visit_exp (at_1 : addrtype <: numtype)] -[visit_exp at_1] -[visit_id at_1] -[visit_exp i_1] -[visit_id i_1] -[visit_exp `CONST`_instr((at_2 : addrtype <: numtype), i_2)] -[visit_exp ((at_2 : addrtype <: numtype), i_2)] -[visit_exp (at_2 : addrtype <: numtype)] -[visit_exp at_2] -[visit_id at_2] -[visit_exp i_2] -[visit_id i_2] -[visit_exp `CONST`_instr((at' : addrtype <: numtype), `%`_num_(n))] -[visit_exp ((at' : addrtype <: numtype), `%`_num_(n))] -[visit_exp (at' : addrtype <: numtype)] -[visit_exp at'] -[visit_id at'] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `TABLE.COPY`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] -[visit_exp y] -[visit_id y] -[visit_exp []] -[visit_exp (n = 0)] -[visit_exp n] -[visit_id n] not free -[visit_exp 0] -[check_dims] at' at_1 at_2 i_1 i_2 n x y z -[visit_exp `%;%`_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)])] -[visit_exp (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)])] -[visit_exp z] -[visit_id z] -[visit_exp [`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)]] -[visit_exp `CONST`_instr((at_1 : addrtype <: numtype), i_1)] -[visit_exp ((at_1 : addrtype <: numtype), i_1)] -[visit_exp (at_1 : addrtype <: numtype)] -[visit_exp at_1] -[visit_id at_1] -[visit_exp i_1] -[visit_id i_1] -[visit_exp `CONST`_instr((at_2 : addrtype <: numtype), i_2)] -[visit_exp ((at_2 : addrtype <: numtype), i_2)] -[visit_exp (at_2 : addrtype <: numtype)] -[visit_exp at_2] -[visit_id at_2] -[visit_exp i_2] -[visit_id i_2] -[visit_exp `CONST`_instr((at' : addrtype <: numtype), `%`_num_(n))] -[visit_exp ((at' : addrtype <: numtype), `%`_num_(n))] -[visit_exp (at' : addrtype <: numtype)] -[visit_exp at'] -[visit_id at'] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `TABLE.COPY`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] -[visit_exp y] -[visit_id y] -[visit_exp [`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)]] -[visit_exp `CONST`_instr((at_1 : addrtype <: numtype), i_1)] -[visit_exp ((at_1 : addrtype <: numtype), i_1)] -[visit_exp (at_1 : addrtype <: numtype)] -[visit_exp at_1] -[visit_id at_1] not free -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp `CONST`_instr((at_2 : addrtype <: numtype), i_2)] -[visit_exp ((at_2 : addrtype <: numtype), i_2)] -[visit_exp (at_2 : addrtype <: numtype)] -[visit_exp at_2] -[visit_id at_2] not free -[visit_exp i_2] -[visit_id i_2] not free -[visit_exp `TABLE.GET`_instr(y)] -[visit_exp (y)] -[visit_exp y] -[visit_id y] not free -[visit_exp `TABLE.SET`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] not free -[visit_exp `CONST`_instr((at_1 : addrtype <: numtype), `%`_num_((i_1!`%`_num_.0 + 1)))] -[visit_exp ((at_1 : addrtype <: numtype), `%`_num_((i_1!`%`_num_.0 + 1)))] -[visit_exp (at_1 : addrtype <: numtype)] -[visit_exp at_1] -[visit_id at_1] not free -[visit_exp `%`_num_((i_1!`%`_num_.0 + 1))] -[visit_exp ((i_1!`%`_num_.0 + 1))] -[visit_exp (i_1!`%`_num_.0 + 1)] -[visit_exp i_1!`%`_num_.0] -[visit_exp i_1!`%`_num_] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp 1] -[visit_exp `CONST`_instr((at_2 : addrtype <: numtype), `%`_num_((i_2!`%`_num_.0 + 1)))] -[visit_exp ((at_2 : addrtype <: numtype), `%`_num_((i_2!`%`_num_.0 + 1)))] -[visit_exp (at_2 : addrtype <: numtype)] -[visit_exp at_2] -[visit_id at_2] not free -[visit_exp `%`_num_((i_2!`%`_num_.0 + 1))] -[visit_exp ((i_2!`%`_num_.0 + 1))] -[visit_exp (i_2!`%`_num_.0 + 1)] -[visit_exp i_2!`%`_num_.0] -[visit_exp i_2!`%`_num_] -[visit_exp i_2] -[visit_id i_2] not free -[visit_exp 1] -[visit_exp `CONST`_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp ((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp (at' : addrtype <: numtype)] -[visit_exp at'] -[visit_id at'] not free -[visit_exp `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp ((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp (((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp ((n : nat <:> int) - (1 : nat <:> int))] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp `TABLE.COPY`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] not free -[visit_exp y] -[visit_id y] not free -[visit_exp (i_1!`%`_num_.0 <= i_2!`%`_num_.0)] -[visit_exp i_1!`%`_num_.0] -[visit_exp i_1!`%`_num_] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp i_2!`%`_num_.0] -[visit_exp i_2!`%`_num_] -[visit_exp i_2] -[visit_id i_2] not free -[check_dims] at' at_1 at_2 i_1 i_2 n x y z -[visit_exp `%;%`_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)])] -[visit_exp (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)])] -[visit_exp z] -[visit_id z] -[visit_exp [`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)]] -[visit_exp `CONST`_instr((at_1 : addrtype <: numtype), i_1)] -[visit_exp ((at_1 : addrtype <: numtype), i_1)] -[visit_exp (at_1 : addrtype <: numtype)] -[visit_exp at_1] -[visit_id at_1] -[visit_exp i_1] -[visit_id i_1] -[visit_exp `CONST`_instr((at_2 : addrtype <: numtype), i_2)] -[visit_exp ((at_2 : addrtype <: numtype), i_2)] -[visit_exp (at_2 : addrtype <: numtype)] -[visit_exp at_2] -[visit_id at_2] -[visit_exp i_2] -[visit_id i_2] -[visit_exp `CONST`_instr((at' : addrtype <: numtype), `%`_num_(n))] -[visit_exp ((at' : addrtype <: numtype), `%`_num_(n))] -[visit_exp (at' : addrtype <: numtype)] -[visit_exp at'] -[visit_id at'] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `TABLE.COPY`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] -[visit_exp y] -[visit_id y] -[visit_exp [`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)]] -[visit_exp `CONST`_instr((at_1 : addrtype <: numtype), `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp ((at_1 : addrtype <: numtype), `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp (at_1 : addrtype <: numtype)] -[visit_exp at_1] -[visit_id at_1] not free -[visit_exp `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp (((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp ((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp (((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int))] -[visit_exp ((i_1!`%`_num_.0 + n) : nat <:> int)] -[visit_exp (i_1!`%`_num_.0 + n)] -[visit_exp i_1!`%`_num_.0] -[visit_exp i_1!`%`_num_] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp n] -[visit_id n] not free -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp `CONST`_instr((at_2 : addrtype <: numtype), `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp ((at_2 : addrtype <: numtype), `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp (at_2 : addrtype <: numtype)] -[visit_exp at_2] -[visit_id at_2] not free -[visit_exp `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp (((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp ((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp (((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int))] -[visit_exp ((i_2!`%`_num_.0 + n) : nat <:> int)] -[visit_exp (i_2!`%`_num_.0 + n)] -[visit_exp i_2!`%`_num_.0] -[visit_exp i_2!`%`_num_] -[visit_exp i_2] -[visit_id i_2] not free -[visit_exp n] -[visit_id n] not free -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp `TABLE.GET`_instr(y)] -[visit_exp (y)] -[visit_exp y] -[visit_id y] not free -[visit_exp `TABLE.SET`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] not free -[visit_exp `CONST`_instr((at_1 : addrtype <: numtype), i_1)] -[visit_exp ((at_1 : addrtype <: numtype), i_1)] -[visit_exp (at_1 : addrtype <: numtype)] -[visit_exp at_1] -[visit_id at_1] not free -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp `CONST`_instr((at_2 : addrtype <: numtype), i_2)] -[visit_exp ((at_2 : addrtype <: numtype), i_2)] -[visit_exp (at_2 : addrtype <: numtype)] -[visit_exp at_2] -[visit_id at_2] not free -[visit_exp i_2] -[visit_id i_2] not free -[visit_exp `CONST`_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp ((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp (at' : addrtype <: numtype)] -[visit_exp at'] -[visit_id at'] not free -[visit_exp `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp ((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp (((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp ((n : nat <:> int) - (1 : nat <:> int))] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp `TABLE.COPY`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] not free -[visit_exp y] -[visit_id y] not free -[check_dims] at i j n x y z -[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(`I32`_numtype, j) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `TABLE.INIT`_instr(x, y)])] -[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(`I32`_numtype, j) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `TABLE.INIT`_instr(x, y)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(`I32`_numtype, j) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `TABLE.INIT`_instr(x, y)]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] -[visit_exp ((at : addrtype <: numtype), i)] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] -[visit_exp i] -[visit_id i] -[visit_exp `CONST`_instr(`I32`_numtype, j)] -[visit_exp (`I32`_numtype, j)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp j] -[visit_id j] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] -[visit_exp (`I32`_numtype, `%`_num_(n))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `TABLE.INIT`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] -[visit_exp y] -[visit_id y] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[visit_exp (((i!`%`_num_.0 + n) > |$table(z, x).`REFS`_tableinst|) \/ ((j!`%`_num_.0 + n) > |$elem(z, y).`REFS`_eleminst|))] -[visit_exp ((i!`%`_num_.0 + n) > |$table(z, x).`REFS`_tableinst|)] -[visit_exp (i!`%`_num_.0 + n)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp n] -[visit_id n] not free -[visit_exp |$table(z, x).`REFS`_tableinst|] -[visit_exp $table(z, x).`REFS`_tableinst] -[visit_exp $table(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp ((j!`%`_num_.0 + n) > |$elem(z, y).`REFS`_eleminst|)] -[visit_exp (j!`%`_num_.0 + n)] -[visit_exp j!`%`_num_.0] -[visit_exp j!`%`_num_] -[visit_exp j] -[visit_id j] not free -[visit_exp n] -[visit_id n] not free -[visit_exp |$elem(z, y).`REFS`_eleminst|] -[visit_exp $elem(z, y).`REFS`_eleminst] -[visit_exp $elem(z, y)] -[visit_exp z] -[visit_id z] not free -[visit_exp y] -[visit_id y] not free -[check_dims] at i j n x y z -[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(`I32`_numtype, j) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `TABLE.INIT`_instr(x, y)])] -[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(`I32`_numtype, j) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `TABLE.INIT`_instr(x, y)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(`I32`_numtype, j) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `TABLE.INIT`_instr(x, y)]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] -[visit_exp ((at : addrtype <: numtype), i)] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] -[visit_exp i] -[visit_id i] -[visit_exp `CONST`_instr(`I32`_numtype, j)] -[visit_exp (`I32`_numtype, j)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp j] -[visit_id j] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] -[visit_exp (`I32`_numtype, `%`_num_(n))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `TABLE.INIT`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] -[visit_exp y] -[visit_id y] -[visit_exp []] -[visit_exp (n = 0)] -[visit_exp n] -[visit_id n] not free -[visit_exp 0] -[check_dims] at i j n x y z -[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(`I32`_numtype, j) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `TABLE.INIT`_instr(x, y)])] -[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(`I32`_numtype, j) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `TABLE.INIT`_instr(x, y)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(`I32`_numtype, j) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `TABLE.INIT`_instr(x, y)]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] -[visit_exp ((at : addrtype <: numtype), i)] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] -[visit_exp i] -[visit_id i] -[visit_exp `CONST`_instr(`I32`_numtype, j)] -[visit_exp (`I32`_numtype, j)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp j] -[visit_id j] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] -[visit_exp (`I32`_numtype, `%`_num_(n))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `TABLE.INIT`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] -[visit_exp y] -[visit_id y] -[visit_exp [`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)]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] -[visit_exp ((at : addrtype <: numtype), i)] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] not free -[visit_exp i] -[visit_id i] not free -[visit_exp ($elem(z, y).`REFS`_eleminst[j!`%`_num_.0] : ref <: instr)] -[visit_exp $elem(z, y).`REFS`_eleminst[j!`%`_num_.0]] -[visit_exp $elem(z, y).`REFS`_eleminst] -[visit_exp $elem(z, y)] -[visit_exp z] -[visit_id z] not free -[visit_exp y] -[visit_id y] not free -[visit_exp j!`%`_num_.0] -[visit_exp j!`%`_num_] -[visit_exp j] -[visit_id j] not free -[visit_exp `TABLE.SET`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] not free -[visit_exp `CONST`_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1)))] -[visit_exp ((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1)))] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] not free -[visit_exp `%`_num_((i!`%`_num_.0 + 1))] -[visit_exp ((i!`%`_num_.0 + 1))] -[visit_exp (i!`%`_num_.0 + 1)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp 1] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_((j!`%`_num_.0 + 1)))] -[visit_exp (`I32`_numtype, `%`_num_((j!`%`_num_.0 + 1)))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_((j!`%`_num_.0 + 1))] -[visit_exp ((j!`%`_num_.0 + 1))] -[visit_exp (j!`%`_num_.0 + 1)] -[visit_exp j!`%`_num_.0] -[visit_exp j!`%`_num_] -[visit_exp j] -[visit_id j] not free -[visit_exp 1] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp (`I32`_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp ((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp (((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp ((n : nat <:> int) - (1 : nat <:> int))] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp `TABLE.INIT`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] not free -[visit_exp y] -[visit_id y] not free -[check_dims] x z -[visit_exp `%;%`_config(z, [`ELEM.DROP`_instr(x)])] -[visit_exp (z, [`ELEM.DROP`_instr(x)])] -[visit_exp z] -[visit_id z] -[visit_exp [`ELEM.DROP`_instr(x)]] -[visit_exp `ELEM.DROP`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%;%`_config($with_elem(z, x, []), [])] -[visit_exp ($with_elem(z, x, []), [])] -[visit_exp $with_elem(z, x, [])] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp []] -[visit_exp []] -[check_dims] ao at i nt x z -[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `LOAD`_instr(nt, ?(), x, ao)])] -[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `LOAD`_instr(nt, ?(), x, ao)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `LOAD`_instr(nt, ?(), x, ao)]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] -[visit_exp ((at : addrtype <: numtype), i)] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] -[visit_exp i] -[visit_id i] -[visit_exp `LOAD`_instr(nt, ?(), x, ao)] -[visit_exp (nt, ?(), x, ao)] -[visit_exp nt] -[visit_id nt] -[visit_exp ?()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[visit_exp (((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst|)] -[visit_exp ((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] -[visit_exp (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp ao.`OFFSET`_memarg!`%`_u64.0] -[visit_exp ao.`OFFSET`_memarg!`%`_u64] -[visit_exp ao.`OFFSET`_memarg] -[visit_exp ao] -[visit_id ao] not free -[visit_exp ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] -[visit_exp (($size(nt) : nat <:> rat) / (8 : nat <:> rat))] -[visit_exp ($size(nt) : nat <:> rat)] -[visit_exp $size(nt)] -[visit_exp nt] -[visit_id nt] not free -[visit_exp (8 : nat <:> rat)] -[visit_exp 8] -[visit_exp |$mem(z, x).`BYTES`_meminst|] -[visit_exp $mem(z, x).`BYTES`_meminst] -[visit_exp $mem(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[check_dims] ao at c i nt x z -[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `LOAD`_instr(nt, ?(), x, ao)])] -[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `LOAD`_instr(nt, ?(), x, ao)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `LOAD`_instr(nt, ?(), x, ao)]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] -[visit_exp ((at : addrtype <: numtype), i)] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] -[visit_exp i] -[visit_id i] -[visit_exp `LOAD`_instr(nt, ?(), x, ao)] -[visit_exp (nt, ?(), x, ao)] -[visit_exp nt] -[visit_id nt] -[visit_exp ?()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp [`CONST`_instr(nt, c)]] -[visit_exp `CONST`_instr(nt, c)] -[visit_exp (nt, c)] -[visit_exp nt] -[visit_id nt] not free -[visit_exp c] -[visit_id c] -[visit_exp ($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)])] -[visit_exp $nbytes_(nt, c)] -[visit_exp nt] -[visit_id nt] not free -[visit_exp c] -[visit_id c] not free -[visit_exp $mem(z, x).`BYTES`_meminst[(i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]] -[visit_exp $mem(z, x).`BYTES`_meminst] -[visit_exp $mem(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp ao.`OFFSET`_memarg!`%`_u64.0] -[visit_exp ao.`OFFSET`_memarg!`%`_u64] -[visit_exp ao.`OFFSET`_memarg] -[visit_exp ao] -[visit_id ao] not free -[visit_exp ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] -[visit_exp (($size(nt) : nat <:> rat) / (8 : nat <:> rat))] -[visit_exp ($size(nt) : nat <:> rat)] -[visit_exp $size(nt)] -[visit_exp nt] -[visit_id nt] not free -[visit_exp (8 : nat <:> rat)] -[visit_exp 8] -[check_dims] Inn ao at i n sx x z -[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `LOAD`_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n), sx)), x, ao)])] -[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `LOAD`_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n), sx)), x, ao)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `LOAD`_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n), sx)), x, ao)]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] -[visit_exp ((at : addrtype <: numtype), i)] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] -[visit_exp i] -[visit_id i] -[visit_exp `LOAD`_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n), sx)), x, ao)] -[visit_exp ((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n), sx)), x, ao)] -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] -[visit_exp ?(`%_%`_loadop_(`%`_sz(n), sx))] -[visit_exp `%_%`_loadop_(`%`_sz(n), sx)] -[visit_exp (`%`_sz(n), sx)] -[visit_exp `%`_sz(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp sx] -[visit_id sx] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[visit_exp (((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst|)] -[visit_exp ((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] -[visit_exp (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp ao.`OFFSET`_memarg!`%`_u64.0] -[visit_exp ao.`OFFSET`_memarg!`%`_u64] -[visit_exp ao.`OFFSET`_memarg] -[visit_exp ao] -[visit_id ao] not free -[visit_exp (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] -[visit_exp ((n : nat <:> rat) / (8 : nat <:> rat))] -[visit_exp (n : nat <:> rat)] -[visit_exp n] -[visit_id n] not free -[visit_exp (8 : nat <:> rat)] -[visit_exp 8] -[visit_exp |$mem(z, x).`BYTES`_meminst|] -[visit_exp $mem(z, x).`BYTES`_meminst] -[visit_exp $mem(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[check_dims] Inn ao at c i n sx x z -[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `LOAD`_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n), sx)), x, ao)])] -[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `LOAD`_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n), sx)), x, ao)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `LOAD`_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n), sx)), x, ao)]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] -[visit_exp ((at : addrtype <: numtype), i)] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] -[visit_exp i] -[visit_id i] -[visit_exp `LOAD`_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n), sx)), x, ao)] -[visit_exp ((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n), sx)), x, ao)] -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] -[visit_exp ?(`%_%`_loadop_(`%`_sz(n), sx))] -[visit_exp `%_%`_loadop_(`%`_sz(n), sx)] -[visit_exp (`%`_sz(n), sx)] -[visit_exp `%`_sz(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp sx] -[visit_id sx] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp [`CONST`_instr((Inn : Inn <: numtype), $extend__(n, $size((Inn : Inn <: numtype)), sx, c))]] -[visit_exp `CONST`_instr((Inn : Inn <: numtype), $extend__(n, $size((Inn : Inn <: numtype)), sx, c))] -[visit_exp ((Inn : Inn <: numtype), $extend__(n, $size((Inn : Inn <: numtype)), sx, c))] -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] not free -[visit_exp $extend__(n, $size((Inn : Inn <: numtype)), sx, c)] -[visit_exp n] -[visit_id n] not free -[visit_exp $size((Inn : Inn <: numtype))] -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] not free -[visit_exp sx] -[visit_id sx] not free -[visit_exp c] -[visit_id c] -[visit_exp ($ibytes_(n, c) = $mem(z, x).`BYTES`_meminst[(i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)])] -[visit_exp $ibytes_(n, c)] -[visit_exp n] -[visit_id n] not free -[visit_exp c] -[visit_id c] not free -[visit_exp $mem(z, x).`BYTES`_meminst[(i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]] -[visit_exp $mem(z, x).`BYTES`_meminst] -[visit_exp $mem(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp ao.`OFFSET`_memarg!`%`_u64.0] -[visit_exp ao.`OFFSET`_memarg!`%`_u64] -[visit_exp ao.`OFFSET`_memarg] -[visit_exp ao] -[visit_id ao] not free -[visit_exp (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] -[visit_exp ((n : nat <:> rat) / (8 : nat <:> rat))] -[visit_exp (n : nat <:> rat)] -[visit_exp n] -[visit_id n] not free -[visit_exp (8 : nat <:> rat)] -[visit_exp 8] -[check_dims] ao at i x z -[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(), x, ao)])] -[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(), x, ao)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(), x, ao)]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] -[visit_exp ((at : addrtype <: numtype), i)] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] -[visit_exp i] -[visit_id i] -[visit_exp `VLOAD`_instr(`V128`_vectype, ?(), x, ao)] -[visit_exp (`V128`_vectype, ?(), x, ao)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp ?()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[visit_exp (((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst|)] -[visit_exp ((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] -[visit_exp (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp ao.`OFFSET`_memarg!`%`_u64.0] -[visit_exp ao.`OFFSET`_memarg!`%`_u64] -[visit_exp ao.`OFFSET`_memarg] -[visit_exp ao] -[visit_id ao] not free -[visit_exp ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] -[visit_exp (($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat))] -[visit_exp ($vsize(`V128`_vectype) : nat <:> rat)] -[visit_exp $vsize(`V128`_vectype)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp (8 : nat <:> rat)] -[visit_exp 8] -[visit_exp |$mem(z, x).`BYTES`_meminst|] -[visit_exp $mem(z, x).`BYTES`_meminst] -[visit_exp $mem(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[check_dims] ao at c i x z -[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(), x, ao)])] -[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(), x, ao)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(), x, ao)]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] -[visit_exp ((at : addrtype <: numtype), i)] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] -[visit_exp i] -[visit_id i] -[visit_exp `VLOAD`_instr(`V128`_vectype, ?(), x, ao)] -[visit_exp (`V128`_vectype, ?(), x, ao)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp ?()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp [`VCONST`_instr(`V128`_vectype, c)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c)] -[visit_exp (`V128`_vectype, c)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c] -[visit_id c] -[visit_exp ($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)])] -[visit_exp $vbytes_(`V128`_vectype, c)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c] -[visit_id c] not free -[visit_exp $mem(z, x).`BYTES`_meminst[(i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) : ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]] -[visit_exp $mem(z, x).`BYTES`_meminst] -[visit_exp $mem(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp ao.`OFFSET`_memarg!`%`_u64.0] -[visit_exp ao.`OFFSET`_memarg!`%`_u64] -[visit_exp ao.`OFFSET`_memarg] -[visit_exp ao] -[visit_id ao] not free -[visit_exp ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] -[visit_exp (($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat))] -[visit_exp ($vsize(`V128`_vectype) : nat <:> rat)] -[visit_exp $vsize(`V128`_vectype)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp (8 : nat <:> rat)] -[visit_exp 8] -[check_dims] K M ao at i sx x z -[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])] -[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] -[visit_exp ((at : addrtype <: numtype), i)] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] -[visit_exp i] -[visit_id i] -[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)] -[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx))] -[visit_exp `SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)] -[visit_exp (`%`_sz(M), K, sx)] -[visit_exp `%`_sz(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp K] -[visit_id K] -[visit_exp sx] -[visit_id sx] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[visit_exp (((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst|)] -[visit_exp ((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] -[visit_exp (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp ao.`OFFSET`_memarg!`%`_u64.0] -[visit_exp ao.`OFFSET`_memarg!`%`_u64] -[visit_exp ao.`OFFSET`_memarg] -[visit_exp ao] -[visit_id ao] not free -[visit_exp ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] -[visit_exp (((M * K) : nat <:> rat) / (8 : nat <:> rat))] -[visit_exp ((M * K) : nat <:> rat)] -[visit_exp (M * K)] -[visit_exp M] -[visit_id M] not free -[visit_exp K] -[visit_id K] not free -[visit_exp (8 : nat <:> rat)] -[visit_exp 8] -[visit_exp |$mem(z, x).`BYTES`_meminst|] -[visit_exp $mem(z, x).`BYTES`_meminst] -[visit_exp $mem(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[check_dims] Jnn K M ao at c i j k sx x z -[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])] -[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] -[visit_exp ((at : addrtype <: numtype), i)] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] -[visit_exp i] -[visit_id i] -[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)] -[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx))] -[visit_exp `SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)] -[visit_exp (`%`_sz(M), K, sx)] -[visit_exp `%`_sz(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp K] -[visit_id K] -[visit_exp sx] -[visit_id sx] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp [`VCONST`_instr(`V128`_vectype, c)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c)] -[visit_exp (`V128`_vectype, c)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c] -[visit_id c] -[scope_enter k] -[scope_enter j] -[visit_exp ($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)])] -[visit_exp $ibytes_(M, j)] -[visit_exp M] -[visit_id M] not free -[visit_exp j] -[visit_id j] not free -[visit_exp $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)]] -[visit_exp $mem(z, x).`BYTES`_meminst] -[visit_exp $mem(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp ((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + ((((k * M) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] -[visit_exp (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp ao.`OFFSET`_memarg!`%`_u64.0] -[visit_exp ao.`OFFSET`_memarg!`%`_u64] -[visit_exp ao.`OFFSET`_memarg] -[visit_exp ao] -[visit_id ao] not free -[visit_exp ((((k * M) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] -[visit_exp (((k * M) : nat <:> rat) / (8 : nat <:> rat))] -[visit_exp ((k * M) : nat <:> rat)] -[visit_exp (k * M)] -[visit_exp k] -[visit_id k] -[visit_exp M] -[visit_id M] not free -[visit_exp (8 : nat <:> rat)] -[visit_exp 8] -[visit_exp (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] -[visit_exp ((M : nat <:> rat) / (8 : nat <:> rat))] -[visit_exp (M : nat <:> rat)] -[visit_exp M] -[visit_id M] not free -[visit_exp (8 : nat <:> rat)] -[visit_exp 8] -[visit_id k] not free -[visit_id j] not free -[scope_exit j] -[scope_exit k] -[visit_exp K] -[visit_id K] not free -[visit_exp `j*`] -[visit_id j*] no dims -[visit_id j*] -[visit_exp ((c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K)), $extend__(M, $jsizenn(Jnn), sx, j)^K{j <- `j*`})) /\ ($jsizenn(Jnn) = (M * 2)))] -[visit_exp (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K)), $extend__(M, $jsizenn(Jnn), sx, j)^K{j <- `j*`}))] -[visit_exp c] -[visit_id c] not free -[visit_exp $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K)), $extend__(M, $jsizenn(Jnn), sx, j)^K{j <- `j*`})] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(K))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(K))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp `%`_dim(K)] -[visit_exp (K)] -[visit_exp K] -[visit_id K] not free -[visit_exp $extend__(M, $jsizenn(Jnn), sx, j)^K{j <- `j*`}] -[scope_enter j] -[visit_exp $extend__(M, $jsizenn(Jnn), sx, j)] -[visit_exp M] -[visit_id M] not free -[visit_exp $jsizenn(Jnn)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp sx] -[visit_id sx] not free -[visit_exp j] -[visit_id j] not free -[visit_id j] not free -[scope_exit j] -[visit_exp K] -[visit_id K] not free -[visit_exp `j*`] -[visit_id j*] not free -[visit_id j*] no dims -[visit_exp ($jsizenn(Jnn) = (M * 2))] -[visit_exp $jsizenn(Jnn)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp (M * 2)] -[visit_exp M] -[visit_id M] not free -[visit_exp 2] -[check_dims] N ao at i x z -[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(N))), x, ao)])] -[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(N))), x, ao)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(N))), x, ao)]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] -[visit_exp ((at : addrtype <: numtype), i)] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] -[visit_exp i] -[visit_id i] -[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(N))), x, ao)] -[visit_exp (`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(N))), x, ao)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp ?(`SPLAT`_vloadop_(`%`_sz(N)))] -[visit_exp `SPLAT`_vloadop_(`%`_sz(N))] -[visit_exp (`%`_sz(N))] -[visit_exp `%`_sz(N)] -[visit_exp (N)] -[visit_exp N] -[visit_id N] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[visit_exp (((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst|)] -[visit_exp ((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] -[visit_exp (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp ao.`OFFSET`_memarg!`%`_u64.0] -[visit_exp ao.`OFFSET`_memarg!`%`_u64] -[visit_exp ao.`OFFSET`_memarg] -[visit_exp ao] -[visit_id ao] not free -[visit_exp (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] -[visit_exp ((N : nat <:> rat) / (8 : nat <:> rat))] -[visit_exp (N : nat <:> rat)] -[visit_exp N] -[visit_id N] not free -[visit_exp (8 : nat <:> rat)] -[visit_exp 8] -[visit_exp |$mem(z, x).`BYTES`_meminst|] -[visit_exp $mem(z, x).`BYTES`_meminst] -[visit_exp $mem(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[check_dims] Jnn M N ao at c i j x z -[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(N))), x, ao)])] -[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(N))), x, ao)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(N))), x, ao)]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] -[visit_exp ((at : addrtype <: numtype), i)] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] -[visit_exp i] -[visit_id i] -[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(N))), x, ao)] -[visit_exp (`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(N))), x, ao)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp ?(`SPLAT`_vloadop_(`%`_sz(N)))] -[visit_exp `SPLAT`_vloadop_(`%`_sz(N))] -[visit_exp (`%`_sz(N))] -[visit_exp `%`_sz(N)] -[visit_exp (N)] -[visit_exp N] -[visit_id N] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp [`VCONST`_instr(`V128`_vectype, c)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c)] -[visit_exp (`V128`_vectype, c)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c] -[visit_id c] -[visit_exp ($ibytes_(N, j) = $mem(z, x).`BYTES`_meminst[(i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)])] -[visit_exp $ibytes_(N, j)] -[visit_exp N] -[visit_id N] not free -[visit_exp j] -[visit_id j] -[visit_exp $mem(z, x).`BYTES`_meminst[(i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]] -[visit_exp $mem(z, x).`BYTES`_meminst] -[visit_exp $mem(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp ao.`OFFSET`_memarg!`%`_u64.0] -[visit_exp ao.`OFFSET`_memarg!`%`_u64] -[visit_exp ao.`OFFSET`_memarg] -[visit_exp ao] -[visit_id ao] not free -[visit_exp (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] -[visit_exp ((N : nat <:> rat) / (8 : nat <:> rat))] -[visit_exp (N : nat <:> rat)] -[visit_exp N] -[visit_id N] not free -[visit_exp (8 : nat <:> rat)] -[visit_exp 8] -[visit_exp (N = $jsize(Jnn))] -[visit_exp N] -[visit_id N] not free -[visit_exp $jsize(Jnn)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat)))] -[visit_exp (M : nat <:> rat)] -[visit_exp M] -[visit_id M] -[visit_exp ((128 : nat <:> rat) / (N : nat <:> rat))] -[visit_exp (128 : nat <:> rat)] -[visit_exp 128] -[visit_exp (N : nat <:> rat)] -[visit_exp N] -[visit_id N] not free -[visit_exp (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), `%`_lane_(j!`%`_iN.0)^M{}))] -[visit_exp c] -[visit_id c] not free -[visit_exp $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), `%`_lane_(j!`%`_iN.0)^M{})] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp `%`_lane_(j!`%`_iN.0)^M{}] -[visit_exp `%`_lane_(j!`%`_iN.0)] -[visit_exp (j!`%`_iN.0)] -[visit_exp j!`%`_iN.0] -[visit_exp j!`%`_iN] -[visit_exp j] -[visit_id j] not free -[visit_exp M] -[visit_id M] not free -[check_dims] N ao at i x z -[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(`ZERO`_vloadop_(`%`_sz(N))), x, ao)])] -[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(`ZERO`_vloadop_(`%`_sz(N))), x, ao)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(`ZERO`_vloadop_(`%`_sz(N))), x, ao)]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] -[visit_exp ((at : addrtype <: numtype), i)] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] -[visit_exp i] -[visit_id i] -[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`ZERO`_vloadop_(`%`_sz(N))), x, ao)] -[visit_exp (`V128`_vectype, ?(`ZERO`_vloadop_(`%`_sz(N))), x, ao)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp ?(`ZERO`_vloadop_(`%`_sz(N)))] -[visit_exp `ZERO`_vloadop_(`%`_sz(N))] -[visit_exp (`%`_sz(N))] -[visit_exp `%`_sz(N)] -[visit_exp (N)] -[visit_exp N] -[visit_id N] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[visit_exp (((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst|)] -[visit_exp ((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] -[visit_exp (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp ao.`OFFSET`_memarg!`%`_u64.0] -[visit_exp ao.`OFFSET`_memarg!`%`_u64] -[visit_exp ao.`OFFSET`_memarg] -[visit_exp ao] -[visit_id ao] not free -[visit_exp (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] -[visit_exp ((N : nat <:> rat) / (8 : nat <:> rat))] -[visit_exp (N : nat <:> rat)] -[visit_exp N] -[visit_id N] not free -[visit_exp (8 : nat <:> rat)] -[visit_exp 8] -[visit_exp |$mem(z, x).`BYTES`_meminst|] -[visit_exp $mem(z, x).`BYTES`_meminst] -[visit_exp $mem(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[check_dims] N ao at c i j x z -[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(`ZERO`_vloadop_(`%`_sz(N))), x, ao)])] -[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(`ZERO`_vloadop_(`%`_sz(N))), x, ao)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `VLOAD`_instr(`V128`_vectype, ?(`ZERO`_vloadop_(`%`_sz(N))), x, ao)]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] -[visit_exp ((at : addrtype <: numtype), i)] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] -[visit_exp i] -[visit_id i] -[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`ZERO`_vloadop_(`%`_sz(N))), x, ao)] -[visit_exp (`V128`_vectype, ?(`ZERO`_vloadop_(`%`_sz(N))), x, ao)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp ?(`ZERO`_vloadop_(`%`_sz(N)))] -[visit_exp `ZERO`_vloadop_(`%`_sz(N))] -[visit_exp (`%`_sz(N))] -[visit_exp `%`_sz(N)] -[visit_exp (N)] -[visit_exp N] -[visit_id N] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp [`VCONST`_instr(`V128`_vectype, c)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c)] -[visit_exp (`V128`_vectype, c)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c] -[visit_id c] -[visit_exp ($ibytes_(N, j) = $mem(z, x).`BYTES`_meminst[(i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)])] -[visit_exp $ibytes_(N, j)] -[visit_exp N] -[visit_id N] not free -[visit_exp j] -[visit_id j] -[visit_exp $mem(z, x).`BYTES`_meminst[(i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]] -[visit_exp $mem(z, x).`BYTES`_meminst] -[visit_exp $mem(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp ao.`OFFSET`_memarg!`%`_u64.0] -[visit_exp ao.`OFFSET`_memarg!`%`_u64] -[visit_exp ao.`OFFSET`_memarg] -[visit_exp ao] -[visit_id ao] not free -[visit_exp (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] -[visit_exp ((N : nat <:> rat) / (8 : nat <:> rat))] -[visit_exp (N : nat <:> rat)] -[visit_exp N] -[visit_id N] not free -[visit_exp (8 : nat <:> rat)] -[visit_exp 8] -[visit_exp (c = $extend__(N, 128, `U`_sx, j))] -[visit_exp c] -[visit_id c] not free -[visit_exp $extend__(N, 128, `U`_sx, j)] -[visit_exp N] -[visit_id N] not free -[visit_exp 128] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp j] -[visit_id j] not free -[check_dims] N ao at c_1 i j x z -[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `VCONST`_instr(`V128`_vectype, c_1) `VLOAD_LANE`_instr(`V128`_vectype, `%`_sz(N), x, ao, j)])] -[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `VCONST`_instr(`V128`_vectype, c_1) `VLOAD_LANE`_instr(`V128`_vectype, `%`_sz(N), x, ao, j)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `VCONST`_instr(`V128`_vectype, c_1) `VLOAD_LANE`_instr(`V128`_vectype, `%`_sz(N), x, ao, j)]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] -[visit_exp ((at : addrtype <: numtype), i)] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] -[visit_exp i] -[visit_id i] -[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] -[visit_exp (`V128`_vectype, c_1)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c_1] -[visit_id c_1] -[visit_exp `VLOAD_LANE`_instr(`V128`_vectype, `%`_sz(N), x, ao, j)] -[visit_exp (`V128`_vectype, `%`_sz(N), x, ao, j)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp `%`_sz(N)] -[visit_exp (N)] -[visit_exp N] -[visit_id N] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp j] -[visit_id j] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[visit_exp (((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst|)] -[visit_exp ((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] -[visit_exp (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp ao.`OFFSET`_memarg!`%`_u64.0] -[visit_exp ao.`OFFSET`_memarg!`%`_u64] -[visit_exp ao.`OFFSET`_memarg] -[visit_exp ao] -[visit_id ao] not free -[visit_exp (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] -[visit_exp ((N : nat <:> rat) / (8 : nat <:> rat))] -[visit_exp (N : nat <:> rat)] -[visit_exp N] -[visit_id N] not free -[visit_exp (8 : nat <:> rat)] -[visit_exp 8] -[visit_exp |$mem(z, x).`BYTES`_meminst|] -[visit_exp $mem(z, x).`BYTES`_meminst] -[visit_exp $mem(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[check_dims] Jnn M N ao at c c_1 i j k x z -[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `VCONST`_instr(`V128`_vectype, c_1) `VLOAD_LANE`_instr(`V128`_vectype, `%`_sz(N), x, ao, j)])] -[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `VCONST`_instr(`V128`_vectype, c_1) `VLOAD_LANE`_instr(`V128`_vectype, `%`_sz(N), x, ao, j)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `VCONST`_instr(`V128`_vectype, c_1) `VLOAD_LANE`_instr(`V128`_vectype, `%`_sz(N), x, ao, j)]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] -[visit_exp ((at : addrtype <: numtype), i)] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] -[visit_exp i] -[visit_id i] -[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] -[visit_exp (`V128`_vectype, c_1)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c_1] -[visit_id c_1] -[visit_exp `VLOAD_LANE`_instr(`V128`_vectype, `%`_sz(N), x, ao, j)] -[visit_exp (`V128`_vectype, `%`_sz(N), x, ao, j)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp `%`_sz(N)] -[visit_exp (N)] -[visit_exp N] -[visit_id N] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp j] -[visit_id j] -[visit_exp [`VCONST`_instr(`V128`_vectype, c)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c)] -[visit_exp (`V128`_vectype, c)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c] -[visit_id c] -[visit_exp ($ibytes_(N, k) = $mem(z, x).`BYTES`_meminst[(i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)])] -[visit_exp $ibytes_(N, k)] -[visit_exp N] -[visit_id N] not free -[visit_exp k] -[visit_id k] -[visit_exp $mem(z, x).`BYTES`_meminst[(i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]] -[visit_exp $mem(z, x).`BYTES`_meminst] -[visit_exp $mem(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp ao.`OFFSET`_memarg!`%`_u64.0] -[visit_exp ao.`OFFSET`_memarg!`%`_u64] -[visit_exp ao.`OFFSET`_memarg] -[visit_exp ao] -[visit_id ao] not free -[visit_exp (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] -[visit_exp ((N : nat <:> rat) / (8 : nat <:> rat))] -[visit_exp (N : nat <:> rat)] -[visit_exp N] -[visit_id N] not free -[visit_exp (8 : nat <:> rat)] -[visit_exp 8] -[visit_exp (N = $jsize(Jnn))] -[visit_exp N] -[visit_id N] not free -[visit_exp $jsize(Jnn)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp ((M : nat <:> rat) = (($vsize(`V128`_vectype) : nat <:> rat) / (N : nat <:> rat)))] -[visit_exp (M : nat <:> rat)] -[visit_exp M] -[visit_id M] -[visit_exp (($vsize(`V128`_vectype) : nat <:> rat) / (N : nat <:> rat))] -[visit_exp ($vsize(`V128`_vectype) : nat <:> rat)] -[visit_exp $vsize(`V128`_vectype)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp (N : nat <:> rat)] -[visit_exp N] -[visit_id N] not free -[visit_exp (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)]))] -[visit_exp c] -[visit_id c] not free -[visit_exp $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)])] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)[[j!`%`_laneidx.0] = `%`_lane_(k!`%`_iN.0)]] -[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp c_1] -[visit_id c_1] not free -[visit_exp j!`%`_laneidx.0] -[visit_exp j!`%`_laneidx] -[visit_exp j] -[visit_id j] not free -[visit_exp `%`_lane_(k!`%`_iN.0)] -[visit_exp (k!`%`_iN.0)] -[visit_exp k!`%`_iN.0] -[visit_exp k!`%`_iN] -[visit_exp k] -[visit_id k] not free -[check_dims] ao at c i nt x z -[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(nt, c) `STORE`_instr(nt, ?(), x, ao)])] -[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(nt, c) `STORE`_instr(nt, ?(), x, ao)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(nt, c) `STORE`_instr(nt, ?(), x, ao)]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] -[visit_exp ((at : addrtype <: numtype), i)] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] -[visit_exp i] -[visit_id i] -[visit_exp `CONST`_instr(nt, c)] -[visit_exp (nt, c)] -[visit_exp nt] -[visit_id nt] -[visit_exp c] -[visit_id c] -[visit_exp `STORE`_instr(nt, ?(), x, ao)] -[visit_exp (nt, ?(), x, ao)] -[visit_exp nt] -[visit_id nt] not free -[visit_exp ?()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp `%;%`_config(z, [`TRAP`_instr])] -[visit_exp (z, [`TRAP`_instr])] -[visit_exp z] -[visit_id z] not free -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[visit_exp (((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst|)] -[visit_exp ((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] -[visit_exp (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp ao.`OFFSET`_memarg!`%`_u64.0] -[visit_exp ao.`OFFSET`_memarg!`%`_u64] -[visit_exp ao.`OFFSET`_memarg] -[visit_exp ao] -[visit_id ao] not free -[visit_exp ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] -[visit_exp (($size(nt) : nat <:> rat) / (8 : nat <:> rat))] -[visit_exp ($size(nt) : nat <:> rat)] -[visit_exp $size(nt)] -[visit_exp nt] -[visit_id nt] not free -[visit_exp (8 : nat <:> rat)] -[visit_exp 8] -[visit_exp |$mem(z, x).`BYTES`_meminst|] -[visit_exp $mem(z, x).`BYTES`_meminst] -[visit_exp $mem(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[check_dims] ao at b c i nt x z -[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(nt, c) `STORE`_instr(nt, ?(), x, ao)])] -[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(nt, c) `STORE`_instr(nt, ?(), x, ao)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(nt, c) `STORE`_instr(nt, ?(), x, ao)]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] -[visit_exp ((at : addrtype <: numtype), i)] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] -[visit_exp i] -[visit_id i] -[visit_exp `CONST`_instr(nt, c)] -[visit_exp (nt, c)] -[visit_exp nt] -[visit_id nt] -[visit_exp c] -[visit_id c] -[visit_exp `STORE`_instr(nt, ?(), x, ao)] -[visit_exp (nt, ?(), x, ao)] -[visit_exp nt] -[visit_id nt] not free -[visit_exp ?()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp `%;%`_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*`}), [])] -[visit_exp ($with_mem(z, x, (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])] -[visit_exp $with_mem(z, x, (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`})] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp ao.`OFFSET`_memarg!`%`_u64.0] -[visit_exp ao.`OFFSET`_memarg!`%`_u64] -[visit_exp ao.`OFFSET`_memarg] -[visit_exp ao] -[visit_id ao] not free -[visit_exp ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] -[visit_exp (($size(nt) : nat <:> rat) / (8 : nat <:> rat))] -[visit_exp ($size(nt) : nat <:> rat)] -[visit_exp $size(nt)] -[visit_exp nt] -[visit_id nt] not free -[visit_exp (8 : nat <:> rat)] -[visit_exp 8] -[visit_exp b*{b <- `b*`}] -[scope_enter b] -[visit_exp b] -[visit_id b] not free -[visit_id b] not free -[scope_exit b] -[visit_exp `b*`] -[visit_id b*] no dims -[visit_id b*] -[visit_exp []] -[visit_exp (b*{b <- `b*`} = $nbytes_(nt, c))] -[visit_exp b*{b <- `b*`}] -[scope_enter b] -[visit_exp b] -[visit_id b] not free -[visit_id b] not free -[scope_exit b] -[visit_exp `b*`] -[visit_id b*] not free -[visit_id b*] no dims -[visit_exp $nbytes_(nt, c)] -[visit_exp nt] -[visit_id nt] not free -[visit_exp c] -[visit_id c] not free -[check_dims] Inn ao at c i n x z -[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr((Inn : Inn <: numtype), c) `STORE`_instr((Inn : Inn <: numtype), ?(`%`_storeop_(`%`_sz(n))), x, ao)])] -[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr((Inn : Inn <: numtype), c) `STORE`_instr((Inn : Inn <: numtype), ?(`%`_storeop_(`%`_sz(n))), x, ao)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr((Inn : Inn <: numtype), c) `STORE`_instr((Inn : Inn <: numtype), ?(`%`_storeop_(`%`_sz(n))), x, ao)]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] -[visit_exp ((at : addrtype <: numtype), i)] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] -[visit_exp i] -[visit_id i] -[visit_exp `CONST`_instr((Inn : Inn <: numtype), c)] -[visit_exp ((Inn : Inn <: numtype), c)] -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] -[visit_exp c] -[visit_id c] -[visit_exp `STORE`_instr((Inn : Inn <: numtype), ?(`%`_storeop_(`%`_sz(n))), x, ao)] -[visit_exp ((Inn : Inn <: numtype), ?(`%`_storeop_(`%`_sz(n))), x, ao)] -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] not free -[visit_exp ?(`%`_storeop_(`%`_sz(n)))] -[visit_exp `%`_storeop_(`%`_sz(n))] -[visit_exp (`%`_sz(n))] -[visit_exp `%`_sz(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp `%;%`_config(z, [`TRAP`_instr])] -[visit_exp (z, [`TRAP`_instr])] -[visit_exp z] -[visit_id z] not free -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[visit_exp (((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst|)] -[visit_exp ((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] -[visit_exp (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp ao.`OFFSET`_memarg!`%`_u64.0] -[visit_exp ao.`OFFSET`_memarg!`%`_u64] -[visit_exp ao.`OFFSET`_memarg] -[visit_exp ao] -[visit_id ao] not free -[visit_exp (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] -[visit_exp ((n : nat <:> rat) / (8 : nat <:> rat))] -[visit_exp (n : nat <:> rat)] -[visit_exp n] -[visit_id n] not free -[visit_exp (8 : nat <:> rat)] -[visit_exp 8] -[visit_exp |$mem(z, x).`BYTES`_meminst|] -[visit_exp $mem(z, x).`BYTES`_meminst] -[visit_exp $mem(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[check_dims] Inn ao at b c i n x z -[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr((Inn : Inn <: numtype), c) `STORE`_instr((Inn : Inn <: numtype), ?(`%`_storeop_(`%`_sz(n))), x, ao)])] -[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr((Inn : Inn <: numtype), c) `STORE`_instr((Inn : Inn <: numtype), ?(`%`_storeop_(`%`_sz(n))), x, ao)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr((Inn : Inn <: numtype), c) `STORE`_instr((Inn : Inn <: numtype), ?(`%`_storeop_(`%`_sz(n))), x, ao)]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] -[visit_exp ((at : addrtype <: numtype), i)] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] -[visit_exp i] -[visit_id i] -[visit_exp `CONST`_instr((Inn : Inn <: numtype), c)] -[visit_exp ((Inn : Inn <: numtype), c)] -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] -[visit_exp c] -[visit_id c] -[visit_exp `STORE`_instr((Inn : Inn <: numtype), ?(`%`_storeop_(`%`_sz(n))), x, ao)] -[visit_exp ((Inn : Inn <: numtype), ?(`%`_storeop_(`%`_sz(n))), x, ao)] -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] not free -[visit_exp ?(`%`_storeop_(`%`_sz(n)))] -[visit_exp `%`_storeop_(`%`_sz(n))] -[visit_exp (`%`_sz(n))] -[visit_exp `%`_sz(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp `%;%`_config($with_mem(z, x, (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])] -[visit_exp ($with_mem(z, x, (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])] -[visit_exp $with_mem(z, x, (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`})] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp ao.`OFFSET`_memarg!`%`_u64.0] -[visit_exp ao.`OFFSET`_memarg!`%`_u64] -[visit_exp ao.`OFFSET`_memarg] -[visit_exp ao] -[visit_id ao] not free -[visit_exp (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] -[visit_exp ((n : nat <:> rat) / (8 : nat <:> rat))] -[visit_exp (n : nat <:> rat)] -[visit_exp n] -[visit_id n] not free -[visit_exp (8 : nat <:> rat)] -[visit_exp 8] -[visit_exp b*{b <- `b*`}] -[scope_enter b] -[visit_exp b] -[visit_id b] not free -[visit_id b] not free -[scope_exit b] -[visit_exp `b*`] -[visit_id b*] no dims -[visit_id b*] -[visit_exp []] -[visit_exp (b*{b <- `b*`} = $ibytes_(n, $wrap__($size((Inn : Inn <: numtype)), n, c)))] -[visit_exp b*{b <- `b*`}] -[scope_enter b] -[visit_exp b] -[visit_id b] not free -[visit_id b] not free -[scope_exit b] -[visit_exp `b*`] -[visit_id b*] not free -[visit_id b*] no dims -[visit_exp $ibytes_(n, $wrap__($size((Inn : Inn <: numtype)), n, c))] -[visit_exp n] -[visit_id n] not free -[visit_exp $wrap__($size((Inn : Inn <: numtype)), n, c)] -[visit_exp $size((Inn : Inn <: numtype))] -[visit_exp (Inn : Inn <: numtype)] -[visit_exp Inn] -[visit_id Inn] not free -[visit_exp n] -[visit_id n] not free -[visit_exp c] -[visit_id c] not free -[check_dims] ao at c i x z -[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `VCONST`_instr(`V128`_vectype, c) `VSTORE`_instr(`V128`_vectype, x, ao)])] -[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `VCONST`_instr(`V128`_vectype, c) `VSTORE`_instr(`V128`_vectype, x, ao)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `VCONST`_instr(`V128`_vectype, c) `VSTORE`_instr(`V128`_vectype, x, ao)]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] -[visit_exp ((at : addrtype <: numtype), i)] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] -[visit_exp i] -[visit_id i] -[visit_exp `VCONST`_instr(`V128`_vectype, c)] -[visit_exp (`V128`_vectype, c)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c] -[visit_id c] -[visit_exp `VSTORE`_instr(`V128`_vectype, x, ao)] -[visit_exp (`V128`_vectype, x, ao)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp `%;%`_config(z, [`TRAP`_instr])] -[visit_exp (z, [`TRAP`_instr])] -[visit_exp z] -[visit_id z] not free -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[visit_exp (((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).`BYTES`_meminst|)] -[visit_exp ((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] -[visit_exp (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp ao.`OFFSET`_memarg!`%`_u64.0] -[visit_exp ao.`OFFSET`_memarg!`%`_u64] -[visit_exp ao.`OFFSET`_memarg] -[visit_exp ao] -[visit_id ao] not free -[visit_exp ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] -[visit_exp (($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat))] -[visit_exp ($vsize(`V128`_vectype) : nat <:> rat)] -[visit_exp $vsize(`V128`_vectype)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp (8 : nat <:> rat)] -[visit_exp 8] -[visit_exp |$mem(z, x).`BYTES`_meminst|] -[visit_exp $mem(z, x).`BYTES`_meminst] -[visit_exp $mem(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[check_dims] ao at b c i x z -[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `VCONST`_instr(`V128`_vectype, c) `VSTORE`_instr(`V128`_vectype, x, ao)])] -[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `VCONST`_instr(`V128`_vectype, c) `VSTORE`_instr(`V128`_vectype, x, ao)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `VCONST`_instr(`V128`_vectype, c) `VSTORE`_instr(`V128`_vectype, x, ao)]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] -[visit_exp ((at : addrtype <: numtype), i)] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] -[visit_exp i] -[visit_id i] -[visit_exp `VCONST`_instr(`V128`_vectype, c)] -[visit_exp (`V128`_vectype, c)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c] -[visit_id c] -[visit_exp `VSTORE`_instr(`V128`_vectype, x, ao)] -[visit_exp (`V128`_vectype, x, ao)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp `%;%`_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*`}), [])] -[visit_exp ($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*`}), [])] -[visit_exp $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*`})] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp ao.`OFFSET`_memarg!`%`_u64.0] -[visit_exp ao.`OFFSET`_memarg!`%`_u64] -[visit_exp ao.`OFFSET`_memarg] -[visit_exp ao] -[visit_id ao] not free -[visit_exp ((($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] -[visit_exp (($vsize(`V128`_vectype) : nat <:> rat) / (8 : nat <:> rat))] -[visit_exp ($vsize(`V128`_vectype) : nat <:> rat)] -[visit_exp $vsize(`V128`_vectype)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp (8 : nat <:> rat)] -[visit_exp 8] -[visit_exp b*{b <- `b*`}] -[scope_enter b] -[visit_exp b] -[visit_id b] not free -[visit_id b] not free -[scope_exit b] -[visit_exp `b*`] -[visit_id b*] no dims -[visit_id b*] -[visit_exp []] -[visit_exp (b*{b <- `b*`} = $vbytes_(`V128`_vectype, c))] -[visit_exp b*{b <- `b*`}] -[scope_enter b] -[visit_exp b] -[visit_id b] not free -[visit_id b] not free -[scope_exit b] -[visit_exp `b*`] -[visit_id b*] not free -[visit_id b*] no dims -[visit_exp $vbytes_(`V128`_vectype, c)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c] -[visit_id c] not free -[check_dims] N ao at c i j x z -[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `VCONST`_instr(`V128`_vectype, c) `VSTORE_LANE`_instr(`V128`_vectype, `%`_sz(N), x, ao, j)])] -[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `VCONST`_instr(`V128`_vectype, c) `VSTORE_LANE`_instr(`V128`_vectype, `%`_sz(N), x, ao, j)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `VCONST`_instr(`V128`_vectype, c) `VSTORE_LANE`_instr(`V128`_vectype, `%`_sz(N), x, ao, j)]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] -[visit_exp ((at : addrtype <: numtype), i)] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] -[visit_exp i] -[visit_id i] -[visit_exp `VCONST`_instr(`V128`_vectype, c)] -[visit_exp (`V128`_vectype, c)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c] -[visit_id c] -[visit_exp `VSTORE_LANE`_instr(`V128`_vectype, `%`_sz(N), x, ao, j)] -[visit_exp (`V128`_vectype, `%`_sz(N), x, ao, j)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp `%`_sz(N)] -[visit_exp (N)] -[visit_exp N] -[visit_id N] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp j] -[visit_id j] -[visit_exp `%;%`_config(z, [`TRAP`_instr])] -[visit_exp (z, [`TRAP`_instr])] -[visit_exp z] -[visit_id z] not free -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[visit_exp (((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + N) > |$mem(z, x).`BYTES`_meminst|)] -[visit_exp ((i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0) + N)] -[visit_exp (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp ao.`OFFSET`_memarg!`%`_u64.0] -[visit_exp ao.`OFFSET`_memarg!`%`_u64] -[visit_exp ao.`OFFSET`_memarg] -[visit_exp ao] -[visit_id ao] not free -[visit_exp N] -[visit_id N] not free -[visit_exp |$mem(z, x).`BYTES`_meminst|] -[visit_exp $mem(z, x).`BYTES`_meminst] -[visit_exp $mem(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[check_dims] Jnn M N ao at b c i j x z -[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `VCONST`_instr(`V128`_vectype, c) `VSTORE_LANE`_instr(`V128`_vectype, `%`_sz(N), x, ao, j)])] -[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `VCONST`_instr(`V128`_vectype, c) `VSTORE_LANE`_instr(`V128`_vectype, `%`_sz(N), x, ao, j)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `VCONST`_instr(`V128`_vectype, c) `VSTORE_LANE`_instr(`V128`_vectype, `%`_sz(N), x, ao, j)]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] -[visit_exp ((at : addrtype <: numtype), i)] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] -[visit_exp i] -[visit_id i] -[visit_exp `VCONST`_instr(`V128`_vectype, c)] -[visit_exp (`V128`_vectype, c)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c] -[visit_id c] -[visit_exp `VSTORE_LANE`_instr(`V128`_vectype, `%`_sz(N), x, ao, j)] -[visit_exp (`V128`_vectype, `%`_sz(N), x, ao, j)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp `%`_sz(N)] -[visit_exp (N)] -[visit_exp N] -[visit_id N] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp j] -[visit_id j] -[visit_exp `%;%`_config($with_mem(z, x, (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])] -[visit_exp ($with_mem(z, x, (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])] -[visit_exp $with_mem(z, x, (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`})] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp (i!`%`_num_.0 + ao.`OFFSET`_memarg!`%`_u64.0)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp ao.`OFFSET`_memarg!`%`_u64.0] -[visit_exp ao.`OFFSET`_memarg!`%`_u64] -[visit_exp ao.`OFFSET`_memarg] -[visit_exp ao] -[visit_id ao] not free -[visit_exp (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] -[visit_exp ((N : nat <:> rat) / (8 : nat <:> rat))] -[visit_exp (N : nat <:> rat)] -[visit_exp N] -[visit_id N] not free -[visit_exp (8 : nat <:> rat)] -[visit_exp 8] -[visit_exp b*{b <- `b*`}] -[scope_enter b] -[visit_exp b] -[visit_id b] not free -[visit_id b] not free -[scope_exit b] -[visit_exp `b*`] -[visit_id b*] no dims -[visit_id b*] -[visit_exp []] -[visit_exp (N = $jsize(Jnn))] -[visit_exp N] -[visit_id N] not free -[visit_exp $jsize(Jnn)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat)))] -[visit_exp (M : nat <:> rat)] -[visit_exp M] -[visit_id M] -[visit_exp ((128 : nat <:> rat) / (N : nat <:> rat))] -[visit_exp (128 : nat <:> rat)] -[visit_exp 128] -[visit_exp (N : nat <:> rat)] -[visit_exp N] -[visit_id N] not free -[visit_exp (b*{b <- `b*`} = $ibytes_(N, `%`_iN($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_laneidx.0]!`%`_lane_.0)))] -[visit_exp b*{b <- `b*`}] -[scope_enter b] -[visit_exp b] -[visit_id b] not free -[visit_id b] not free -[scope_exit b] -[visit_exp `b*`] -[visit_id b*] not free -[visit_id b*] no dims -[visit_exp $ibytes_(N, `%`_iN($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_laneidx.0]!`%`_lane_.0))] -[visit_exp N] -[visit_id N] not free -[visit_exp `%`_iN($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_laneidx.0]!`%`_lane_.0)] -[visit_exp ($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_laneidx.0]!`%`_lane_.0)] -[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_laneidx.0]!`%`_lane_.0] -[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_laneidx.0]!`%`_lane_] -[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_laneidx.0]] -[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp c] -[visit_id c] not free -[visit_exp j!`%`_laneidx.0] -[visit_exp j!`%`_laneidx] -[visit_exp j] -[visit_id j] not free -[check_dims] at lim n x z -[visit_exp `%;%`_config(z, [`MEMORY.SIZE`_instr(x)])] -[visit_exp (z, [`MEMORY.SIZE`_instr(x)])] -[visit_exp z] -[visit_id z] -[visit_exp [`MEMORY.SIZE`_instr(x)]] -[visit_exp `MEMORY.SIZE`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp [`CONST`_instr((at : addrtype <: numtype), `%`_num_(n))]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), `%`_num_(n))] -[visit_exp ((at : addrtype <: numtype), `%`_num_(n))] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp ((n * (64 * $Ki)) = |$mem(z, x).`BYTES`_meminst|)] -[visit_exp (n * (64 * $Ki))] -[visit_exp n] -[visit_id n] not free -[visit_exp (64 * $Ki)] -[visit_exp 64] -[visit_exp $Ki] -[visit_exp |$mem(z, x).`BYTES`_meminst|] -[visit_exp $mem(z, x).`BYTES`_meminst] -[visit_exp $mem(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp ($mem(z, x).`TYPE`_meminst = `%%PAGE`_memtype(at, lim))] -[visit_exp $mem(z, x).`TYPE`_meminst] -[visit_exp $mem(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp `%%PAGE`_memtype(at, lim)] -[visit_exp (at, lim)] -[visit_exp at] -[visit_id at] not free -[visit_exp lim] -[visit_id lim] -[check_dims] at mi n x z -[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `MEMORY.GROW`_instr(x)])] -[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `MEMORY.GROW`_instr(x)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `MEMORY.GROW`_instr(x)]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), `%`_num_(n))] -[visit_exp ((at : addrtype <: numtype), `%`_num_(n))] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `MEMORY.GROW`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%;%`_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)))])] -[visit_exp ($with_meminst(z, x, mi), [`CONST`_instr((at : addrtype <: numtype), `%`_num_((((|$mem(z, x).`BYTES`_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat)))])] -[visit_exp $with_meminst(z, x, mi)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp mi] -[visit_id mi] -[visit_exp [`CONST`_instr((at : addrtype <: numtype), `%`_num_((((|$mem(z, x).`BYTES`_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat)))]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), `%`_num_((((|$mem(z, x).`BYTES`_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat)))] -[visit_exp ((at : addrtype <: numtype), `%`_num_((((|$mem(z, x).`BYTES`_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat)))] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] not free -[visit_exp `%`_num_((((|$mem(z, x).`BYTES`_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))] -[visit_exp ((((|$mem(z, x).`BYTES`_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat))] -[visit_exp (((|$mem(z, x).`BYTES`_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat)] -[visit_exp ((|$mem(z, x).`BYTES`_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat))] -[visit_exp (|$mem(z, x).`BYTES`_meminst| : nat <:> rat)] -[visit_exp |$mem(z, x).`BYTES`_meminst|] -[visit_exp $mem(z, x).`BYTES`_meminst] -[visit_exp $mem(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp ((64 * $Ki) : nat <:> rat)] -[visit_exp (64 * $Ki)] -[visit_exp 64] -[visit_exp $Ki] -[visit_exp (mi = $growmem($mem(z, x), n))] -[visit_exp mi] -[visit_id mi] not free -[visit_exp $growmem($mem(z, x), n)] -[visit_exp $mem(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp n] -[visit_id n] not free -[check_dims] at n x z -[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `MEMORY.GROW`_instr(x)])] -[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `MEMORY.GROW`_instr(x)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `MEMORY.GROW`_instr(x)]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), `%`_num_(n))] -[visit_exp ((at : addrtype <: numtype), `%`_num_(n))] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `MEMORY.GROW`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))])] -[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))])] -[visit_exp z] -[visit_id z] not free -[visit_exp [`CONST`_instr((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))] -[visit_exp ((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] not free -[visit_exp `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))] -[visit_exp ($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)))] -[visit_exp $inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))] -[visit_exp $size((at : addrtype <: numtype))] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] not free -[visit_exp - (1 : nat <:> int)] -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[check_dims] at i n val x z -[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `MEMORY.FILL`_instr(x)])] -[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `MEMORY.FILL`_instr(x)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `MEMORY.FILL`_instr(x)]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] -[visit_exp ((at : addrtype <: numtype), i)] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] -[visit_exp i] -[visit_id i] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] -[visit_exp `CONST`_instr((at : addrtype <: numtype), `%`_num_(n))] -[visit_exp ((at : addrtype <: numtype), `%`_num_(n))] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] not free -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `MEMORY.FILL`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[visit_exp ((i!`%`_num_.0 + n) > |$mem(z, x).`BYTES`_meminst|)] -[visit_exp (i!`%`_num_.0 + n)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp n] -[visit_id n] not free -[visit_exp |$mem(z, x).`BYTES`_meminst|] -[visit_exp $mem(z, x).`BYTES`_meminst] -[visit_exp $mem(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[check_dims] at i n val x z -[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `MEMORY.FILL`_instr(x)])] -[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `MEMORY.FILL`_instr(x)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `MEMORY.FILL`_instr(x)]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] -[visit_exp ((at : addrtype <: numtype), i)] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] -[visit_exp i] -[visit_id i] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] -[visit_exp `CONST`_instr((at : addrtype <: numtype), `%`_num_(n))] -[visit_exp ((at : addrtype <: numtype), `%`_num_(n))] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] not free -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `MEMORY.FILL`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp []] -[visit_exp (n = 0)] -[visit_exp n] -[visit_id n] not free -[visit_exp 0] -[check_dims] at i n val x z -[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `MEMORY.FILL`_instr(x)])] -[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `MEMORY.FILL`_instr(x)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) (val : val <: instr) `CONST`_instr((at : addrtype <: numtype), `%`_num_(n)) `MEMORY.FILL`_instr(x)]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] -[visit_exp ((at : addrtype <: numtype), i)] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] -[visit_exp i] -[visit_id i] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] -[visit_exp `CONST`_instr((at : addrtype <: numtype), `%`_num_(n))] -[visit_exp ((at : addrtype <: numtype), `%`_num_(n))] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] not free -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `MEMORY.FILL`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp [`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)]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] -[visit_exp ((at : addrtype <: numtype), i)] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] not free -[visit_exp i] -[visit_id i] not free -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_exp `STORE`_instr(`I32`_numtype, ?(`%`_storeop_(`%`_sz(8))), x, $memarg0)] -[visit_exp (`I32`_numtype, ?(`%`_storeop_(`%`_sz(8))), x, $memarg0)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp ?(`%`_storeop_(`%`_sz(8)))] -[visit_exp `%`_storeop_(`%`_sz(8))] -[visit_exp (`%`_sz(8))] -[visit_exp `%`_sz(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp x] -[visit_id x] not free -[visit_exp $memarg0] -[visit_exp `CONST`_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1)))] -[visit_exp ((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1)))] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] not free -[visit_exp `%`_num_((i!`%`_num_.0 + 1))] -[visit_exp ((i!`%`_num_.0 + 1))] -[visit_exp (i!`%`_num_.0 + 1)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp 1] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_exp `CONST`_instr((at : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp ((at : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] not free -[visit_exp `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp ((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp (((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp ((n : nat <:> int) - (1 : nat <:> int))] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp `MEMORY.FILL`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] not free -[check_dims] at' at_1 at_2 i_1 i_2 n x_1 x_2 z -[visit_exp `%;%`_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)])] -[visit_exp (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)])] -[visit_exp z] -[visit_id z] -[visit_exp [`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)]] -[visit_exp `CONST`_instr((at_1 : addrtype <: numtype), i_1)] -[visit_exp ((at_1 : addrtype <: numtype), i_1)] -[visit_exp (at_1 : addrtype <: numtype)] -[visit_exp at_1] -[visit_id at_1] -[visit_exp i_1] -[visit_id i_1] -[visit_exp `CONST`_instr((at_2 : addrtype <: numtype), i_2)] -[visit_exp ((at_2 : addrtype <: numtype), i_2)] -[visit_exp (at_2 : addrtype <: numtype)] -[visit_exp at_2] -[visit_id at_2] -[visit_exp i_2] -[visit_id i_2] -[visit_exp `CONST`_instr((at' : addrtype <: numtype), `%`_num_(n))] -[visit_exp ((at' : addrtype <: numtype), `%`_num_(n))] -[visit_exp (at' : addrtype <: numtype)] -[visit_exp at'] -[visit_id at'] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `MEMORY.COPY`_instr(x_1, x_2)] -[visit_exp (x_1, x_2)] -[visit_exp x_1] -[visit_id x_1] -[visit_exp x_2] -[visit_id x_2] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[visit_exp (((i_1!`%`_num_.0 + n) > |$mem(z, x_1).`BYTES`_meminst|) \/ ((i_2!`%`_num_.0 + n) > |$mem(z, x_2).`BYTES`_meminst|))] -[visit_exp ((i_1!`%`_num_.0 + n) > |$mem(z, x_1).`BYTES`_meminst|)] -[visit_exp (i_1!`%`_num_.0 + n)] -[visit_exp i_1!`%`_num_.0] -[visit_exp i_1!`%`_num_] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp n] -[visit_id n] not free -[visit_exp |$mem(z, x_1).`BYTES`_meminst|] -[visit_exp $mem(z, x_1).`BYTES`_meminst] -[visit_exp $mem(z, x_1)] -[visit_exp z] -[visit_id z] not free -[visit_exp x_1] -[visit_id x_1] not free -[visit_exp ((i_2!`%`_num_.0 + n) > |$mem(z, x_2).`BYTES`_meminst|)] -[visit_exp (i_2!`%`_num_.0 + n)] -[visit_exp i_2!`%`_num_.0] -[visit_exp i_2!`%`_num_] -[visit_exp i_2] -[visit_id i_2] not free -[visit_exp n] -[visit_id n] not free -[visit_exp |$mem(z, x_2).`BYTES`_meminst|] -[visit_exp $mem(z, x_2).`BYTES`_meminst] -[visit_exp $mem(z, x_2)] -[visit_exp z] -[visit_id z] not free -[visit_exp x_2] -[visit_id x_2] not free -[check_dims] at' at_1 at_2 i_1 i_2 n x_1 x_2 z -[visit_exp `%;%`_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)])] -[visit_exp (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)])] -[visit_exp z] -[visit_id z] -[visit_exp [`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)]] -[visit_exp `CONST`_instr((at_1 : addrtype <: numtype), i_1)] -[visit_exp ((at_1 : addrtype <: numtype), i_1)] -[visit_exp (at_1 : addrtype <: numtype)] -[visit_exp at_1] -[visit_id at_1] -[visit_exp i_1] -[visit_id i_1] -[visit_exp `CONST`_instr((at_2 : addrtype <: numtype), i_2)] -[visit_exp ((at_2 : addrtype <: numtype), i_2)] -[visit_exp (at_2 : addrtype <: numtype)] -[visit_exp at_2] -[visit_id at_2] -[visit_exp i_2] -[visit_id i_2] -[visit_exp `CONST`_instr((at' : addrtype <: numtype), `%`_num_(n))] -[visit_exp ((at' : addrtype <: numtype), `%`_num_(n))] -[visit_exp (at' : addrtype <: numtype)] -[visit_exp at'] -[visit_id at'] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `MEMORY.COPY`_instr(x_1, x_2)] -[visit_exp (x_1, x_2)] -[visit_exp x_1] -[visit_id x_1] -[visit_exp x_2] -[visit_id x_2] -[visit_exp []] -[visit_exp (n = 0)] -[visit_exp n] -[visit_id n] not free -[visit_exp 0] -[check_dims] at' at_1 at_2 i_1 i_2 n x_1 x_2 z -[visit_exp `%;%`_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)])] -[visit_exp (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)])] -[visit_exp z] -[visit_id z] -[visit_exp [`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)]] -[visit_exp `CONST`_instr((at_1 : addrtype <: numtype), i_1)] -[visit_exp ((at_1 : addrtype <: numtype), i_1)] -[visit_exp (at_1 : addrtype <: numtype)] -[visit_exp at_1] -[visit_id at_1] -[visit_exp i_1] -[visit_id i_1] -[visit_exp `CONST`_instr((at_2 : addrtype <: numtype), i_2)] -[visit_exp ((at_2 : addrtype <: numtype), i_2)] -[visit_exp (at_2 : addrtype <: numtype)] -[visit_exp at_2] -[visit_id at_2] -[visit_exp i_2] -[visit_id i_2] -[visit_exp `CONST`_instr((at' : addrtype <: numtype), `%`_num_(n))] -[visit_exp ((at' : addrtype <: numtype), `%`_num_(n))] -[visit_exp (at' : addrtype <: numtype)] -[visit_exp at'] -[visit_id at'] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `MEMORY.COPY`_instr(x_1, x_2)] -[visit_exp (x_1, x_2)] -[visit_exp x_1] -[visit_id x_1] -[visit_exp x_2] -[visit_id x_2] -[visit_exp [`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)]] -[visit_exp `CONST`_instr((at_1 : addrtype <: numtype), i_1)] -[visit_exp ((at_1 : addrtype <: numtype), i_1)] -[visit_exp (at_1 : addrtype <: numtype)] -[visit_exp at_1] -[visit_id at_1] not free -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp `CONST`_instr((at_2 : addrtype <: numtype), i_2)] -[visit_exp ((at_2 : addrtype <: numtype), i_2)] -[visit_exp (at_2 : addrtype <: numtype)] -[visit_exp at_2] -[visit_id at_2] not free -[visit_exp i_2] -[visit_id i_2] not free -[visit_exp `LOAD`_instr(`I32`_numtype, ?(`%_%`_loadop_(`%`_sz(8), `U`_sx)), x_2, $memarg0)] -[visit_exp (`I32`_numtype, ?(`%_%`_loadop_(`%`_sz(8), `U`_sx)), x_2, $memarg0)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp ?(`%_%`_loadop_(`%`_sz(8), `U`_sx))] -[visit_exp `%_%`_loadop_(`%`_sz(8), `U`_sx)] -[visit_exp (`%`_sz(8), `U`_sx)] -[visit_exp `%`_sz(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp x_2] -[visit_id x_2] not free -[visit_exp $memarg0] -[visit_exp `STORE`_instr(`I32`_numtype, ?(`%`_storeop_(`%`_sz(8))), x_1, $memarg0)] -[visit_exp (`I32`_numtype, ?(`%`_storeop_(`%`_sz(8))), x_1, $memarg0)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp ?(`%`_storeop_(`%`_sz(8)))] -[visit_exp `%`_storeop_(`%`_sz(8))] -[visit_exp (`%`_sz(8))] -[visit_exp `%`_sz(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp x_1] -[visit_id x_1] not free -[visit_exp $memarg0] -[visit_exp `CONST`_instr((at_1 : addrtype <: numtype), `%`_num_((i_1!`%`_num_.0 + 1)))] -[visit_exp ((at_1 : addrtype <: numtype), `%`_num_((i_1!`%`_num_.0 + 1)))] -[visit_exp (at_1 : addrtype <: numtype)] -[visit_exp at_1] -[visit_id at_1] not free -[visit_exp `%`_num_((i_1!`%`_num_.0 + 1))] -[visit_exp ((i_1!`%`_num_.0 + 1))] -[visit_exp (i_1!`%`_num_.0 + 1)] -[visit_exp i_1!`%`_num_.0] -[visit_exp i_1!`%`_num_] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp 1] -[visit_exp `CONST`_instr((at_2 : addrtype <: numtype), `%`_num_((i_2!`%`_num_.0 + 1)))] -[visit_exp ((at_2 : addrtype <: numtype), `%`_num_((i_2!`%`_num_.0 + 1)))] -[visit_exp (at_2 : addrtype <: numtype)] -[visit_exp at_2] -[visit_id at_2] not free -[visit_exp `%`_num_((i_2!`%`_num_.0 + 1))] -[visit_exp ((i_2!`%`_num_.0 + 1))] -[visit_exp (i_2!`%`_num_.0 + 1)] -[visit_exp i_2!`%`_num_.0] -[visit_exp i_2!`%`_num_] -[visit_exp i_2] -[visit_id i_2] not free -[visit_exp 1] -[visit_exp `CONST`_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp ((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp (at' : addrtype <: numtype)] -[visit_exp at'] -[visit_id at'] not free -[visit_exp `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp ((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp (((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp ((n : nat <:> int) - (1 : nat <:> int))] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp `MEMORY.COPY`_instr(x_1, x_2)] -[visit_exp (x_1, x_2)] -[visit_exp x_1] -[visit_id x_1] not free -[visit_exp x_2] -[visit_id x_2] not free -[visit_exp (i_1!`%`_num_.0 <= i_2!`%`_num_.0)] -[visit_exp i_1!`%`_num_.0] -[visit_exp i_1!`%`_num_] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp i_2!`%`_num_.0] -[visit_exp i_2!`%`_num_] -[visit_exp i_2] -[visit_id i_2] not free -[check_dims] at' at_1 at_2 i_1 i_2 n x_1 x_2 z -[visit_exp `%;%`_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)])] -[visit_exp (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)])] -[visit_exp z] -[visit_id z] -[visit_exp [`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)]] -[visit_exp `CONST`_instr((at_1 : addrtype <: numtype), i_1)] -[visit_exp ((at_1 : addrtype <: numtype), i_1)] -[visit_exp (at_1 : addrtype <: numtype)] -[visit_exp at_1] -[visit_id at_1] -[visit_exp i_1] -[visit_id i_1] -[visit_exp `CONST`_instr((at_2 : addrtype <: numtype), i_2)] -[visit_exp ((at_2 : addrtype <: numtype), i_2)] -[visit_exp (at_2 : addrtype <: numtype)] -[visit_exp at_2] -[visit_id at_2] -[visit_exp i_2] -[visit_id i_2] -[visit_exp `CONST`_instr((at' : addrtype <: numtype), `%`_num_(n))] -[visit_exp ((at' : addrtype <: numtype), `%`_num_(n))] -[visit_exp (at' : addrtype <: numtype)] -[visit_exp at'] -[visit_id at'] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `MEMORY.COPY`_instr(x_1, x_2)] -[visit_exp (x_1, x_2)] -[visit_exp x_1] -[visit_id x_1] -[visit_exp x_2] -[visit_id x_2] -[visit_exp [`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)]] -[visit_exp `CONST`_instr((at_1 : addrtype <: numtype), `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp ((at_1 : addrtype <: numtype), `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp (at_1 : addrtype <: numtype)] -[visit_exp at_1] -[visit_id at_1] not free -[visit_exp `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp (((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp ((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp (((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int))] -[visit_exp ((i_1!`%`_num_.0 + n) : nat <:> int)] -[visit_exp (i_1!`%`_num_.0 + n)] -[visit_exp i_1!`%`_num_.0] -[visit_exp i_1!`%`_num_] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp n] -[visit_id n] not free -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp `CONST`_instr((at_2 : addrtype <: numtype), `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp ((at_2 : addrtype <: numtype), `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp (at_2 : addrtype <: numtype)] -[visit_exp at_2] -[visit_id at_2] not free -[visit_exp `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp (((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp ((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp (((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int))] -[visit_exp ((i_2!`%`_num_.0 + n) : nat <:> int)] -[visit_exp (i_2!`%`_num_.0 + n)] -[visit_exp i_2!`%`_num_.0] -[visit_exp i_2!`%`_num_] -[visit_exp i_2] -[visit_id i_2] not free -[visit_exp n] -[visit_id n] not free -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp `LOAD`_instr(`I32`_numtype, ?(`%_%`_loadop_(`%`_sz(8), `U`_sx)), x_2, $memarg0)] -[visit_exp (`I32`_numtype, ?(`%_%`_loadop_(`%`_sz(8), `U`_sx)), x_2, $memarg0)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp ?(`%_%`_loadop_(`%`_sz(8), `U`_sx))] -[visit_exp `%_%`_loadop_(`%`_sz(8), `U`_sx)] -[visit_exp (`%`_sz(8), `U`_sx)] -[visit_exp `%`_sz(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp x_2] -[visit_id x_2] not free -[visit_exp $memarg0] -[visit_exp `STORE`_instr(`I32`_numtype, ?(`%`_storeop_(`%`_sz(8))), x_1, $memarg0)] -[visit_exp (`I32`_numtype, ?(`%`_storeop_(`%`_sz(8))), x_1, $memarg0)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp ?(`%`_storeop_(`%`_sz(8)))] -[visit_exp `%`_storeop_(`%`_sz(8))] -[visit_exp (`%`_sz(8))] -[visit_exp `%`_sz(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp x_1] -[visit_id x_1] not free -[visit_exp $memarg0] -[visit_exp `CONST`_instr((at_1 : addrtype <: numtype), i_1)] -[visit_exp ((at_1 : addrtype <: numtype), i_1)] -[visit_exp (at_1 : addrtype <: numtype)] -[visit_exp at_1] -[visit_id at_1] not free -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp `CONST`_instr((at_2 : addrtype <: numtype), i_2)] -[visit_exp ((at_2 : addrtype <: numtype), i_2)] -[visit_exp (at_2 : addrtype <: numtype)] -[visit_exp at_2] -[visit_id at_2] not free -[visit_exp i_2] -[visit_id i_2] not free -[visit_exp `CONST`_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp ((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp (at' : addrtype <: numtype)] -[visit_exp at'] -[visit_id at'] not free -[visit_exp `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp ((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp (((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp ((n : nat <:> int) - (1 : nat <:> int))] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp `MEMORY.COPY`_instr(x_1, x_2)] -[visit_exp (x_1, x_2)] -[visit_exp x_1] -[visit_id x_1] not free -[visit_exp x_2] -[visit_id x_2] not free -[check_dims] at i j n x y z -[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(`I32`_numtype, j) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `MEMORY.INIT`_instr(x, y)])] -[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(`I32`_numtype, j) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `MEMORY.INIT`_instr(x, y)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(`I32`_numtype, j) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `MEMORY.INIT`_instr(x, y)]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] -[visit_exp ((at : addrtype <: numtype), i)] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] -[visit_exp i] -[visit_id i] -[visit_exp `CONST`_instr(`I32`_numtype, j)] -[visit_exp (`I32`_numtype, j)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp j] -[visit_id j] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] -[visit_exp (`I32`_numtype, `%`_num_(n))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `MEMORY.INIT`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] -[visit_exp y] -[visit_id y] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[visit_exp (((i!`%`_num_.0 + n) > |$mem(z, x).`BYTES`_meminst|) \/ ((j!`%`_num_.0 + n) > |$data(z, y).`BYTES`_datainst|))] -[visit_exp ((i!`%`_num_.0 + n) > |$mem(z, x).`BYTES`_meminst|)] -[visit_exp (i!`%`_num_.0 + n)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp n] -[visit_id n] not free -[visit_exp |$mem(z, x).`BYTES`_meminst|] -[visit_exp $mem(z, x).`BYTES`_meminst] -[visit_exp $mem(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp ((j!`%`_num_.0 + n) > |$data(z, y).`BYTES`_datainst|)] -[visit_exp (j!`%`_num_.0 + n)] -[visit_exp j!`%`_num_.0] -[visit_exp j!`%`_num_] -[visit_exp j] -[visit_id j] not free -[visit_exp n] -[visit_id n] not free -[visit_exp |$data(z, y).`BYTES`_datainst|] -[visit_exp $data(z, y).`BYTES`_datainst] -[visit_exp $data(z, y)] -[visit_exp z] -[visit_id z] not free -[visit_exp y] -[visit_id y] not free -[check_dims] at i j n x y z -[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(`I32`_numtype, j) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `MEMORY.INIT`_instr(x, y)])] -[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(`I32`_numtype, j) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `MEMORY.INIT`_instr(x, y)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(`I32`_numtype, j) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `MEMORY.INIT`_instr(x, y)]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] -[visit_exp ((at : addrtype <: numtype), i)] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] -[visit_exp i] -[visit_id i] -[visit_exp `CONST`_instr(`I32`_numtype, j)] -[visit_exp (`I32`_numtype, j)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp j] -[visit_id j] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] -[visit_exp (`I32`_numtype, `%`_num_(n))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `MEMORY.INIT`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] -[visit_exp y] -[visit_id y] -[visit_exp []] -[visit_exp (n = 0)] -[visit_exp n] -[visit_id n] not free -[visit_exp 0] -[check_dims] at i j n x y z -[visit_exp `%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(`I32`_numtype, j) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `MEMORY.INIT`_instr(x, y)])] -[visit_exp (z, [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(`I32`_numtype, j) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `MEMORY.INIT`_instr(x, y)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr(`I32`_numtype, j) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `MEMORY.INIT`_instr(x, y)]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] -[visit_exp ((at : addrtype <: numtype), i)] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] -[visit_exp i] -[visit_id i] -[visit_exp `CONST`_instr(`I32`_numtype, j)] -[visit_exp (`I32`_numtype, j)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp j] -[visit_id j] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] -[visit_exp (`I32`_numtype, `%`_num_(n))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `MEMORY.INIT`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] -[visit_exp y] -[visit_id y] -[visit_exp [`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)]] -[visit_exp `CONST`_instr((at : addrtype <: numtype), i)] -[visit_exp ((at : addrtype <: numtype), i)] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] not free -[visit_exp i] -[visit_id i] not free -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_($data(z, y).`BYTES`_datainst[j!`%`_num_.0]!`%`_byte.0))] -[visit_exp (`I32`_numtype, `%`_num_($data(z, y).`BYTES`_datainst[j!`%`_num_.0]!`%`_byte.0))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_($data(z, y).`BYTES`_datainst[j!`%`_num_.0]!`%`_byte.0)] -[visit_exp ($data(z, y).`BYTES`_datainst[j!`%`_num_.0]!`%`_byte.0)] -[visit_exp $data(z, y).`BYTES`_datainst[j!`%`_num_.0]!`%`_byte.0] -[visit_exp $data(z, y).`BYTES`_datainst[j!`%`_num_.0]!`%`_byte] -[visit_exp $data(z, y).`BYTES`_datainst[j!`%`_num_.0]] -[visit_exp $data(z, y).`BYTES`_datainst] -[visit_exp $data(z, y)] -[visit_exp z] -[visit_id z] not free -[visit_exp y] -[visit_id y] not free -[visit_exp j!`%`_num_.0] -[visit_exp j!`%`_num_] -[visit_exp j] -[visit_id j] not free -[visit_exp `STORE`_instr(`I32`_numtype, ?(`%`_storeop_(`%`_sz(8))), x, $memarg0)] -[visit_exp (`I32`_numtype, ?(`%`_storeop_(`%`_sz(8))), x, $memarg0)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp ?(`%`_storeop_(`%`_sz(8)))] -[visit_exp `%`_storeop_(`%`_sz(8))] -[visit_exp (`%`_sz(8))] -[visit_exp `%`_sz(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp x] -[visit_id x] not free -[visit_exp $memarg0] -[visit_exp `CONST`_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1)))] -[visit_exp ((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1)))] -[visit_exp (at : addrtype <: numtype)] -[visit_exp at] -[visit_id at] not free -[visit_exp `%`_num_((i!`%`_num_.0 + 1))] -[visit_exp ((i!`%`_num_.0 + 1))] -[visit_exp (i!`%`_num_.0 + 1)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp 1] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_((j!`%`_num_.0 + 1)))] -[visit_exp (`I32`_numtype, `%`_num_((j!`%`_num_.0 + 1)))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_((j!`%`_num_.0 + 1))] -[visit_exp ((j!`%`_num_.0 + 1))] -[visit_exp (j!`%`_num_.0 + 1)] -[visit_exp j!`%`_num_.0] -[visit_exp j!`%`_num_] -[visit_exp j] -[visit_id j] not free -[visit_exp 1] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp (`I32`_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp ((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp (((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp ((n : nat <:> int) - (1 : nat <:> int))] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp `MEMORY.INIT`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] not free -[visit_exp y] -[visit_id y] not free -[check_dims] x z -[visit_exp `%;%`_config(z, [`DATA.DROP`_instr(x)])] -[visit_exp (z, [`DATA.DROP`_instr(x)])] -[visit_exp z] -[visit_id z] -[visit_exp [`DATA.DROP`_instr(x)]] -[visit_exp `DATA.DROP`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%;%`_config($with_data(z, x, []), [])] -[visit_exp ($with_data(z, x, []), [])] -[visit_exp $with_data(z, x, [])] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp []] -[visit_exp []] -[check_dims] x z -[visit_exp `%;%`_config(z, [`REF.NULL`_instr(`_IDX`_heaptype(x))])] -[visit_exp (z, [`REF.NULL`_instr(`_IDX`_heaptype(x))])] -[visit_exp z] -[visit_id z] -[visit_exp [`REF.NULL`_instr(`_IDX`_heaptype(x))]] -[visit_exp `REF.NULL`_instr(`_IDX`_heaptype(x))] -[visit_exp (`_IDX`_heaptype(x))] -[visit_exp `_IDX`_heaptype(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp [`REF.NULL`_instr(($type(z, x) : deftype <: heaptype))]] -[visit_exp `REF.NULL`_instr(($type(z, x) : deftype <: heaptype))] -[visit_exp (($type(z, x) : deftype <: heaptype))] -[visit_exp ($type(z, x) : deftype <: heaptype)] -[visit_exp $type(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[check_dims] x z -[visit_exp `%;%`_config(z, [`REF.FUNC`_instr(x)])] -[visit_exp (z, [`REF.FUNC`_instr(x)])] -[visit_exp z] -[visit_id z] -[visit_exp [`REF.FUNC`_instr(x)]] -[visit_exp `REF.FUNC`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp [`REF.FUNC_ADDR`_instr($moduleinst(z).`FUNCS`_moduleinst[x!`%`_idx.0])]] -[visit_exp `REF.FUNC_ADDR`_instr($moduleinst(z).`FUNCS`_moduleinst[x!`%`_idx.0])] -[visit_exp ($moduleinst(z).`FUNCS`_moduleinst[x!`%`_idx.0])] -[visit_exp $moduleinst(z).`FUNCS`_moduleinst[x!`%`_idx.0]] -[visit_exp $moduleinst(z).`FUNCS`_moduleinst] -[visit_exp $moduleinst(z)] -[visit_exp z] -[visit_id z] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[check_dims] i -[visit_exp [`CONST`_instr(`I32`_numtype, i) `REF.I31`_instr]] -[visit_exp `CONST`_instr(`I32`_numtype, i)] -[visit_exp (`I32`_numtype, i)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i] -[visit_id i] -[visit_exp `REF.I31`_instr] -[visit_exp ()] -[visit_exp [`REF.I31_NUM`_instr($wrap__(32, 31, i))]] -[visit_exp `REF.I31_NUM`_instr($wrap__(32, 31, i))] -[visit_exp ($wrap__(32, 31, i))] -[visit_exp $wrap__(32, 31, i)] -[visit_exp 32] -[visit_exp 31] -[visit_exp i] -[visit_id i] not free -[check_dims] ht ref -[visit_exp [(ref : ref <: instr) `REF.IS_NULL`_instr]] -[visit_exp (ref : ref <: instr)] -[visit_exp ref] -[visit_id ref] -[visit_exp `REF.IS_NULL`_instr] -[visit_exp ()] -[visit_exp [`CONST`_instr(`I32`_numtype, `%`_num_(1))]] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(1))] -[visit_exp (`I32`_numtype, `%`_num_(1))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(1)] -[visit_exp (1)] -[visit_exp 1] -[visit_exp (ref = `REF.NULL`_ref(ht))] -[visit_exp ref] -[visit_id ref] not free -[visit_exp `REF.NULL`_ref(ht)] -[visit_exp (ht)] -[visit_exp ht] -[visit_id ht] -[check_dims] ref -[visit_exp [(ref : ref <: instr) `REF.IS_NULL`_instr]] -[visit_exp (ref : ref <: instr)] -[visit_exp ref] -[visit_id ref] -[visit_exp `REF.IS_NULL`_instr] -[visit_exp ()] -[visit_exp [`CONST`_instr(`I32`_numtype, `%`_num_(0))]] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(0))] -[visit_exp (`I32`_numtype, `%`_num_(0))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(0)] -[visit_exp (0)] -[visit_exp 0] -[check_dims] ht ref -[visit_exp [(ref : ref <: instr) `REF.AS_NON_NULL`_instr]] -[visit_exp (ref : ref <: instr)] -[visit_exp ref] -[visit_id ref] -[visit_exp `REF.AS_NON_NULL`_instr] -[visit_exp ()] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[visit_exp (ref = `REF.NULL`_ref(ht))] -[visit_exp ref] -[visit_id ref] not free -[visit_exp `REF.NULL`_ref(ht)] -[visit_exp (ht)] -[visit_exp ht] -[visit_id ht] -[check_dims] ref -[visit_exp [(ref : ref <: instr) `REF.AS_NON_NULL`_instr]] -[visit_exp (ref : ref <: instr)] -[visit_exp ref] -[visit_id ref] -[visit_exp `REF.AS_NON_NULL`_instr] -[visit_exp ()] -[visit_exp [(ref : ref <: instr)]] -[visit_exp (ref : ref <: instr)] -[visit_exp ref] -[visit_id ref] not free -[check_dims] ht_1 ht_2 ref_1 ref_2 -[visit_exp [(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr]] -[visit_exp (ref_1 : ref <: instr)] -[visit_exp ref_1] -[visit_id ref_1] -[visit_exp (ref_2 : ref <: instr)] -[visit_exp ref_2] -[visit_id ref_2] -[visit_exp `REF.EQ`_instr] -[visit_exp ()] -[visit_exp [`CONST`_instr(`I32`_numtype, `%`_num_(1))]] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(1))] -[visit_exp (`I32`_numtype, `%`_num_(1))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(1)] -[visit_exp (1)] -[visit_exp 1] -[visit_exp ((ref_1 = `REF.NULL`_ref(ht_1)) /\ (ref_2 = `REF.NULL`_ref(ht_2)))] -[visit_exp (ref_1 = `REF.NULL`_ref(ht_1))] -[visit_exp ref_1] -[visit_id ref_1] not free -[visit_exp `REF.NULL`_ref(ht_1)] -[visit_exp (ht_1)] -[visit_exp ht_1] -[visit_id ht_1] -[visit_exp (ref_2 = `REF.NULL`_ref(ht_2))] -[visit_exp ref_2] -[visit_id ref_2] not free -[visit_exp `REF.NULL`_ref(ht_2)] -[visit_exp (ht_2)] -[visit_exp ht_2] -[visit_id ht_2] -[check_dims] ref_1 ref_2 -[visit_exp [(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr]] -[visit_exp (ref_1 : ref <: instr)] -[visit_exp ref_1] -[visit_id ref_1] -[visit_exp (ref_2 : ref <: instr)] -[visit_exp ref_2] -[visit_id ref_2] -[visit_exp `REF.EQ`_instr] -[visit_exp ()] -[visit_exp [`CONST`_instr(`I32`_numtype, `%`_num_(1))]] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(1))] -[visit_exp (`I32`_numtype, `%`_num_(1))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(1)] -[visit_exp (1)] -[visit_exp 1] -[visit_exp (ref_1 = ref_2)] -[visit_exp ref_1] -[visit_id ref_1] not free -[visit_exp ref_2] -[visit_id ref_2] not free -[check_dims] ref_1 ref_2 -[visit_exp [(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr]] -[visit_exp (ref_1 : ref <: instr)] -[visit_exp ref_1] -[visit_id ref_1] -[visit_exp (ref_2 : ref <: instr)] -[visit_exp ref_2] -[visit_id ref_2] -[visit_exp `REF.EQ`_instr] -[visit_exp ()] -[visit_exp [`CONST`_instr(`I32`_numtype, `%`_num_(0))]] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(0))] -[visit_exp (`I32`_numtype, `%`_num_(0))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(0)] -[visit_exp (0)] -[visit_exp 0] -[check_dims] f ref rt rt' s -[visit_exp `%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])] -[visit_exp (`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])] -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp [(ref : ref <: instr) `REF.TEST`_instr(rt)]] -[visit_exp (ref : ref <: instr)] -[visit_exp ref] -[visit_id ref] -[visit_exp `REF.TEST`_instr(rt)] -[visit_exp (rt)] -[visit_exp rt] -[visit_id rt] -[visit_exp [`CONST`_instr(`I32`_numtype, `%`_num_(1))]] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(1))] -[visit_exp (`I32`_numtype, `%`_num_(1))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(1)] -[visit_exp (1)] -[visit_exp 1] -[visit_exp (s, ref, rt')] -[visit_exp s] -[visit_id s] not free -[visit_exp ref] -[visit_id ref] not free -[visit_exp rt'] -[visit_id rt'] -[visit_exp ({`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}, rt', $inst_reftype(f.`MODULE`_frame, rt))] -[visit_exp {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp ?()] -[visit_exp []] -[visit_exp rt'] -[visit_id rt'] not free -[visit_exp $inst_reftype(f.`MODULE`_frame, rt)] -[visit_exp f.`MODULE`_frame] -[visit_exp f] -[visit_id f] not free -[visit_exp rt] -[visit_id rt] not free -[check_dims] f ref rt s -[visit_exp `%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])] -[visit_exp (`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)])] -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp [(ref : ref <: instr) `REF.TEST`_instr(rt)]] -[visit_exp (ref : ref <: instr)] -[visit_exp ref] -[visit_id ref] -[visit_exp `REF.TEST`_instr(rt)] -[visit_exp (rt)] -[visit_exp rt] -[visit_id rt] -[visit_exp [`CONST`_instr(`I32`_numtype, `%`_num_(0))]] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(0))] -[visit_exp (`I32`_numtype, `%`_num_(0))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(0)] -[visit_exp (0)] -[visit_exp 0] -[check_dims] f ref rt rt' s -[visit_exp `%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])] -[visit_exp (`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])] -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp [(ref : ref <: instr) `REF.CAST`_instr(rt)]] -[visit_exp (ref : ref <: instr)] -[visit_exp ref] -[visit_id ref] -[visit_exp `REF.CAST`_instr(rt)] -[visit_exp (rt)] -[visit_exp rt] -[visit_id rt] -[visit_exp [(ref : ref <: instr)]] -[visit_exp (ref : ref <: instr)] -[visit_exp ref] -[visit_id ref] not free -[visit_exp (s, ref, rt')] -[visit_exp s] -[visit_id s] not free -[visit_exp ref] -[visit_id ref] not free -[visit_exp rt'] -[visit_id rt'] -[visit_exp ({`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}, rt', $inst_reftype(f.`MODULE`_frame, rt))] -[visit_exp {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp ?()] -[visit_exp []] -[visit_exp rt'] -[visit_id rt'] not free -[visit_exp $inst_reftype(f.`MODULE`_frame, rt)] -[visit_exp f.`MODULE`_frame] -[visit_exp f] -[visit_id f] not free -[visit_exp rt] -[visit_id rt] not free -[check_dims] f ref rt s -[visit_exp `%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])] -[visit_exp (`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)])] -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp [(ref : ref <: instr) `REF.CAST`_instr(rt)]] -[visit_exp (ref : ref <: instr)] -[visit_exp ref] -[visit_id ref] -[visit_exp `REF.CAST`_instr(rt)] -[visit_exp (rt)] -[visit_exp rt] -[visit_id rt] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[check_dims] ht sx -[visit_exp [`REF.NULL`_instr(ht) `I31.GET`_instr(sx)]] -[visit_exp `REF.NULL`_instr(ht)] -[visit_exp (ht)] -[visit_exp ht] -[visit_id ht] -[visit_exp `I31.GET`_instr(sx)] -[visit_exp (sx)] -[visit_exp sx] -[visit_id sx] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[check_dims] i sx -[visit_exp [`REF.I31_NUM`_instr(i) `I31.GET`_instr(sx)]] -[visit_exp `REF.I31_NUM`_instr(i)] -[visit_exp (i)] -[visit_exp i] -[visit_id i] -[visit_exp `I31.GET`_instr(sx)] -[visit_exp (sx)] -[visit_exp sx] -[visit_id sx] -[visit_exp [`CONST`_instr(`I32`_numtype, $extend__(31, 32, sx, i))]] -[visit_exp `CONST`_instr(`I32`_numtype, $extend__(31, 32, sx, i))] -[visit_exp (`I32`_numtype, $extend__(31, 32, sx, i))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp $extend__(31, 32, sx, i)] -[visit_exp 31] -[visit_exp 32] -[visit_exp sx] -[visit_id sx] not free -[visit_exp i] -[visit_id i] not free -[check_dims] a mut n si val x z zt -[visit_exp `%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)])] -[visit_exp (z, (val : val <: instr)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)])] -[visit_exp z] -[visit_id z] -[visit_exp (val : val <: instr)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)]] -[visit_exp (val : val <: instr)^n{val <- `val*`}] -[scope_enter val] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp n] -[visit_id n] -[visit_exp `val*`] -[visit_id val*] no dims -[visit_id val*] -[visit_exp [`STRUCT.NEW`_instr(x)]] -[visit_exp `STRUCT.NEW`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%;%`_config($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr(a)])] -[visit_exp ($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr(a)])] -[visit_exp $add_structinst(z, [si])] -[visit_exp z] -[visit_id z] not free -[visit_exp [si]] -[visit_exp si] -[visit_id si] -[visit_exp [`REF.STRUCT_ADDR`_instr(a)]] -[visit_exp `REF.STRUCT_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp ($type(z, x), `STRUCT`_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`})))] -[visit_exp $type(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp `STRUCT`_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))] -[visit_exp (`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))] -[visit_exp `%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`})] -[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`})] -[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}] -[scope_enter mut?] -[scope_enter zt] -[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)] -[visit_exp (mut?{mut <- `mut?`}, zt)] -[visit_exp mut?{mut <- `mut?`}] -[scope_enter mut] -[visit_exp mut] -[visit_id mut] not free -[visit_id mut] not free -[scope_exit mut] -[visit_exp `mut?`] -[visit_id mut?] not free -[visit_id mut?] no dims -[visit_exp zt] -[visit_id zt] not free -[visit_id mut?] not free -[visit_id mut?] no dims -[visit_id zt] not free -[scope_exit zt] -[scope_exit mut?] -[visit_exp n] -[visit_id n] not free -[visit_exp `mut?*`] -[visit_id mut?*] no dims -[visit_id mut?*] -[visit_exp `zt*`] -[visit_id zt*] no dims -[visit_id zt*] -[visit_exp (a = |$structinst(z)|)] -[visit_exp a] -[visit_id a] not free -[visit_exp |$structinst(z)|] -[visit_exp $structinst(z)] -[visit_exp z] -[visit_id z] not free -[visit_exp (si = {`TYPE` $type(z, x), `FIELDS` $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}})] -[visit_exp si] -[visit_id si] not free -[visit_exp {`TYPE` $type(z, x), `FIELDS` $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}] -[visit_exp $type(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}] -[scope_enter val] -[scope_enter zt] -[visit_exp $packfield_(zt, val)] -[visit_exp zt] -[visit_id zt] not free -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[visit_id zt] not free -[scope_exit zt] -[scope_exit val] -[visit_exp n] -[visit_id n] not free -[visit_exp `val*`] -[visit_id val*] not free -[visit_id val*] no dims -[visit_exp `zt*`] -[visit_id zt*] not free -[visit_id zt*] no dims -[check_dims] mut val x z zt -[visit_exp `%;%`_config(z, [`STRUCT.NEW_DEFAULT`_instr(x)])] -[visit_exp (z, [`STRUCT.NEW_DEFAULT`_instr(x)])] -[visit_exp z] -[visit_id z] -[visit_exp [`STRUCT.NEW_DEFAULT`_instr(x)]] -[visit_exp `STRUCT.NEW_DEFAULT`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)]] -[visit_exp (val : val <: instr)*{val <- `val*`}] -[scope_enter val] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp `val*`] -[visit_id val*] no dims -[visit_id val*] -[visit_exp [`STRUCT.NEW`_instr(x)]] -[visit_exp `STRUCT.NEW`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] not free -[visit_exp ($type(z, x), `STRUCT`_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`})))] -[visit_exp $type(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp `STRUCT`_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))] -[visit_exp (`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))] -[visit_exp `%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`})] -[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`})] -[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}] -[scope_enter mut?] -[scope_enter zt] -[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)] -[visit_exp (mut?{mut <- `mut?`}, zt)] -[visit_exp mut?{mut <- `mut?`}] -[scope_enter mut] -[visit_exp mut] -[visit_id mut] not free -[visit_id mut] not free -[scope_exit mut] -[visit_exp `mut?`] -[visit_id mut?] not free -[visit_id mut?] no dims -[visit_exp zt] -[visit_id zt] not free -[visit_id mut?] not free -[visit_id mut?] no dims -[visit_id zt] not free -[scope_exit zt] -[scope_exit mut?] -[visit_exp `mut?*`] -[visit_id mut?*] no dims -[visit_id mut?*] -[visit_exp `zt*`] -[visit_id zt*] no dims -[visit_id zt*] -[scope_enter val] -[scope_enter zt] -[visit_exp ($default_($unpack(zt)) = ?(val))] -[visit_exp $default_($unpack(zt))] -[visit_exp $unpack(zt)] -[visit_exp zt] -[visit_id zt] not free -[visit_exp ?(val)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[visit_id zt] not free -[scope_exit zt] -[scope_exit val] -[visit_exp `val*`] -[visit_id val*] not free -[visit_id val*] no dims -[visit_exp `zt*`] -[visit_id zt*] not free -[visit_id zt*] no dims -[check_dims] ht i sx x z -[visit_exp `%;%`_config(z, [`REF.NULL`_instr(ht) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)])] -[visit_exp (z, [`REF.NULL`_instr(ht) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)])] -[visit_exp z] -[visit_id z] -[visit_exp [`REF.NULL`_instr(ht) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]] -[visit_exp `REF.NULL`_instr(ht)] -[visit_exp (ht)] -[visit_exp ht] -[visit_id ht] -[visit_exp `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)] -[visit_exp (sx?{sx <- `sx?`}, x, i)] -[visit_exp sx?{sx <- `sx?`}] -[scope_enter sx] -[visit_exp sx] -[visit_id sx] not free -[visit_id sx] not free -[scope_exit sx] -[visit_exp `sx?`] -[visit_id sx?] no dims -[visit_id sx?] -[visit_exp x] -[visit_id x] -[visit_exp i] -[visit_id i] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[check_dims] a i mut sx x z zt -[visit_exp `%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)])] -[visit_exp (z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)])] -[visit_exp z] -[visit_id z] -[visit_exp [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]] -[visit_exp `REF.STRUCT_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)] -[visit_exp (sx?{sx <- `sx?`}, x, i)] -[visit_exp sx?{sx <- `sx?`}] -[scope_enter sx] -[visit_exp sx] -[visit_id sx] not free -[visit_id sx] not free -[scope_exit sx] -[visit_exp `sx?`] -[visit_id sx?] no dims -[visit_id sx?] -[visit_exp x] -[visit_id x] -[visit_exp i] -[visit_id i] -[visit_exp [($unpackfield_(zt*{zt <- `zt*`}[i!`%`_u32.0], sx?{sx <- `sx?`}, $structinst(z)[a].`FIELDS`_structinst[i!`%`_u32.0]) : val <: instr)]] -[visit_exp ($unpackfield_(zt*{zt <- `zt*`}[i!`%`_u32.0], sx?{sx <- `sx?`}, $structinst(z)[a].`FIELDS`_structinst[i!`%`_u32.0]) : val <: instr)] -[visit_exp $unpackfield_(zt*{zt <- `zt*`}[i!`%`_u32.0], sx?{sx <- `sx?`}, $structinst(z)[a].`FIELDS`_structinst[i!`%`_u32.0])] -[visit_exp zt*{zt <- `zt*`}[i!`%`_u32.0]] -[visit_exp zt*{zt <- `zt*`}] -[scope_enter zt] -[visit_exp zt] -[visit_id zt] not free -[visit_id zt] not free -[scope_exit zt] -[visit_exp `zt*`] -[visit_id zt*] no dims -[visit_id zt*] -[visit_exp i!`%`_u32.0] -[visit_exp i!`%`_u32] -[visit_exp i] -[visit_id i] not free -[visit_exp sx?{sx <- `sx?`}] -[scope_enter sx] -[visit_exp sx] -[visit_id sx] not free -[visit_id sx] not free -[scope_exit sx] -[visit_exp `sx?`] -[visit_id sx?] not free -[visit_id sx?] no dims -[visit_exp $structinst(z)[a].`FIELDS`_structinst[i!`%`_u32.0]] -[visit_exp $structinst(z)[a].`FIELDS`_structinst] -[visit_exp $structinst(z)[a]] -[visit_exp $structinst(z)] -[visit_exp z] -[visit_id z] not free -[visit_exp a] -[visit_id a] not free -[visit_exp i!`%`_u32.0] -[visit_exp i!`%`_u32] -[visit_exp i] -[visit_id i] not free -[visit_exp ($type(z, x), `STRUCT`_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`})))] -[visit_exp $type(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp `STRUCT`_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))] -[visit_exp (`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))] -[visit_exp `%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`})] -[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`})] -[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}] -[scope_enter mut?] -[scope_enter zt] -[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)] -[visit_exp (mut?{mut <- `mut?`}, zt)] -[visit_exp mut?{mut <- `mut?`}] -[scope_enter mut] -[visit_exp mut] -[visit_id mut] not free -[visit_id mut] not free -[scope_exit mut] -[visit_exp `mut?`] -[visit_id mut?] not free -[visit_id mut?] no dims -[visit_exp zt] -[visit_id zt] not free -[visit_id mut?] not free -[visit_id mut?] no dims -[visit_id zt] not free -[scope_exit zt] -[scope_exit mut?] -[visit_exp `mut?*`] -[visit_id mut?*] no dims -[visit_id mut?*] -[visit_exp `zt*`] -[visit_id zt*] not free -[visit_id zt*] no dims -[check_dims] ht i val x z -[visit_exp `%;%`_config(z, [`REF.NULL`_instr(ht) (val : val <: instr) `STRUCT.SET`_instr(x, i)])] -[visit_exp (z, [`REF.NULL`_instr(ht) (val : val <: instr) `STRUCT.SET`_instr(x, i)])] -[visit_exp z] -[visit_id z] -[visit_exp [`REF.NULL`_instr(ht) (val : val <: instr) `STRUCT.SET`_instr(x, i)]] -[visit_exp `REF.NULL`_instr(ht)] -[visit_exp (ht)] -[visit_exp ht] -[visit_id ht] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] -[visit_exp `STRUCT.SET`_instr(x, i)] -[visit_exp (x, i)] -[visit_exp x] -[visit_id x] -[visit_exp i] -[visit_id i] -[visit_exp `%;%`_config(z, [`TRAP`_instr])] -[visit_exp (z, [`TRAP`_instr])] -[visit_exp z] -[visit_id z] not free -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[check_dims] a i mut val x z zt -[visit_exp `%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) (val : val <: instr) `STRUCT.SET`_instr(x, i)])] -[visit_exp (z, [`REF.STRUCT_ADDR`_instr(a) (val : val <: instr) `STRUCT.SET`_instr(x, i)])] -[visit_exp z] -[visit_id z] -[visit_exp [`REF.STRUCT_ADDR`_instr(a) (val : val <: instr) `STRUCT.SET`_instr(x, i)]] -[visit_exp `REF.STRUCT_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] -[visit_exp `STRUCT.SET`_instr(x, i)] -[visit_exp (x, i)] -[visit_exp x] -[visit_id x] -[visit_exp i] -[visit_id i] -[visit_exp `%;%`_config($with_struct(z, a, i!`%`_u32.0, $packfield_(zt*{zt <- `zt*`}[i!`%`_u32.0], val)), [])] -[visit_exp ($with_struct(z, a, i!`%`_u32.0, $packfield_(zt*{zt <- `zt*`}[i!`%`_u32.0], val)), [])] -[visit_exp $with_struct(z, a, i!`%`_u32.0, $packfield_(zt*{zt <- `zt*`}[i!`%`_u32.0], val))] -[visit_exp z] -[visit_id z] not free -[visit_exp a] -[visit_id a] not free -[visit_exp i!`%`_u32.0] -[visit_exp i!`%`_u32] -[visit_exp i] -[visit_id i] not free -[visit_exp $packfield_(zt*{zt <- `zt*`}[i!`%`_u32.0], val)] -[visit_exp zt*{zt <- `zt*`}[i!`%`_u32.0]] -[visit_exp zt*{zt <- `zt*`}] -[scope_enter zt] -[visit_exp zt] -[visit_id zt] not free -[visit_id zt] not free -[scope_exit zt] -[visit_exp `zt*`] -[visit_id zt*] no dims -[visit_id zt*] -[visit_exp i!`%`_u32.0] -[visit_exp i!`%`_u32] -[visit_exp i] -[visit_id i] not free -[visit_exp val] -[visit_id val] not free -[visit_exp []] -[visit_exp ($type(z, x), `STRUCT`_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`})))] -[visit_exp $type(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp `STRUCT`_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))] -[visit_exp (`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))] -[visit_exp `%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`})] -[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`})] -[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}] -[scope_enter mut?] -[scope_enter zt] -[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)] -[visit_exp (mut?{mut <- `mut?`}, zt)] -[visit_exp mut?{mut <- `mut?`}] -[scope_enter mut] -[visit_exp mut] -[visit_id mut] not free -[visit_id mut] not free -[scope_exit mut] -[visit_exp `mut?`] -[visit_id mut?] not free -[visit_id mut?] no dims -[visit_exp zt] -[visit_id zt] not free -[visit_id mut?] not free -[visit_id mut?] no dims -[visit_id zt] not free -[scope_exit zt] -[scope_exit mut?] -[visit_exp `mut?*`] -[visit_id mut?*] no dims -[visit_id mut?*] -[visit_exp `zt*`] -[visit_id zt*] not free -[visit_id zt*] no dims -[check_dims] n val x -[visit_exp [(val : val <: instr) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.NEW`_instr(x)]] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] -[visit_exp (`I32`_numtype, `%`_num_(n))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `ARRAY.NEW`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]] -[visit_exp (val : val <: instr)^n{}] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_exp n] -[visit_id n] not free -[visit_exp [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]] -[visit_exp `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))] -[visit_exp (x, `%`_u32(n))] -[visit_exp x] -[visit_id x] not free -[visit_exp `%`_u32(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] not free -[check_dims] mut n val x z zt -[visit_exp `%;%`_config(z, [`CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.NEW_DEFAULT`_instr(x)])] -[visit_exp (z, [`CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.NEW_DEFAULT`_instr(x)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.NEW_DEFAULT`_instr(x)]] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] -[visit_exp (`I32`_numtype, `%`_num_(n))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `ARRAY.NEW_DEFAULT`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]] -[visit_exp (val : val <: instr)^n{}] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] -[visit_exp n] -[visit_id n] not free -[visit_exp [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]] -[visit_exp `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))] -[visit_exp (x, `%`_u32(n))] -[visit_exp x] -[visit_id x] not free -[visit_exp `%`_u32(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] not free -[visit_exp ($type(z, x), `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)))] -[visit_exp $type(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] -[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] -[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)] -[visit_exp (mut?{mut <- `mut?`}, zt)] -[visit_exp mut?{mut <- `mut?`}] -[scope_enter mut] -[visit_exp mut] -[visit_id mut] not free -[visit_id mut] not free -[scope_exit mut] -[visit_exp `mut?`] -[visit_id mut?] no dims -[visit_id mut?] -[visit_exp zt] -[visit_id zt] -[visit_exp ($default_($unpack(zt)) = ?(val))] -[visit_exp $default_($unpack(zt))] -[visit_exp $unpack(zt)] -[visit_exp zt] -[visit_id zt] not free -[visit_exp ?(val)] -[visit_exp val] -[visit_id val] not free -[check_dims] a ai mut n val x z zt -[visit_exp `%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))])] -[visit_exp (z, (val : val <: instr)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))])] -[visit_exp z] -[visit_id z] -[visit_exp (val : val <: instr)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]] -[visit_exp (val : val <: instr)^n{val <- `val*`}] -[scope_enter val] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp n] -[visit_id n] -[visit_exp `val*`] -[visit_id val*] no dims -[visit_id val*] -[visit_exp [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]] -[visit_exp `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))] -[visit_exp (x, `%`_u32(n))] -[visit_exp x] -[visit_id x] -[visit_exp `%`_u32(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] not free -[visit_exp `%;%`_config($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr(a)])] -[visit_exp ($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr(a)])] -[visit_exp $add_arrayinst(z, [ai])] -[visit_exp z] -[visit_id z] not free -[visit_exp [ai]] -[visit_exp ai] -[visit_id ai] -[visit_exp [`REF.ARRAY_ADDR`_instr(a)]] -[visit_exp `REF.ARRAY_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp ($type(z, x), `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)))] -[visit_exp $type(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] -[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] -[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)] -[visit_exp (mut?{mut <- `mut?`}, zt)] -[visit_exp mut?{mut <- `mut?`}] -[scope_enter mut] -[visit_exp mut] -[visit_id mut] not free -[visit_id mut] not free -[scope_exit mut] -[visit_exp `mut?`] -[visit_id mut?] no dims -[visit_id mut?] -[visit_exp zt] -[visit_id zt] -[visit_exp ((a = |$arrayinst(z)|) /\ (ai = {`TYPE` $type(z, x), `FIELDS` $packfield_(zt, val)^n{val <- `val*`}}))] -[visit_exp (a = |$arrayinst(z)|)] -[visit_exp a] -[visit_id a] not free -[visit_exp |$arrayinst(z)|] -[visit_exp $arrayinst(z)] -[visit_exp z] -[visit_id z] not free -[visit_exp (ai = {`TYPE` $type(z, x), `FIELDS` $packfield_(zt, val)^n{val <- `val*`}})] -[visit_exp ai] -[visit_id ai] not free -[visit_exp {`TYPE` $type(z, x), `FIELDS` $packfield_(zt, val)^n{val <- `val*`}}] -[visit_exp $type(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp $packfield_(zt, val)^n{val <- `val*`}] -[scope_enter val] -[visit_exp $packfield_(zt, val)] -[visit_exp zt] -[visit_id zt] not free -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp n] -[visit_id n] not free -[visit_exp `val*`] -[visit_id val*] not free -[visit_id val*] no dims -[check_dims] i n x y z -[visit_exp `%;%`_config(z, [`CONST`_instr(`I32`_numtype, i) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.NEW_ELEM`_instr(x, y)])] -[visit_exp (z, [`CONST`_instr(`I32`_numtype, i) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.NEW_ELEM`_instr(x, y)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr(`I32`_numtype, i) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.NEW_ELEM`_instr(x, y)]] -[visit_exp `CONST`_instr(`I32`_numtype, i)] -[visit_exp (`I32`_numtype, i)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i] -[visit_id i] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] -[visit_exp (`I32`_numtype, `%`_num_(n))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `ARRAY.NEW_ELEM`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] -[visit_exp y] -[visit_id y] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[visit_exp ((i!`%`_num_.0 + n) > |$elem(z, y).`REFS`_eleminst|)] -[visit_exp (i!`%`_num_.0 + n)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp n] -[visit_id n] not free -[visit_exp |$elem(z, y).`REFS`_eleminst|] -[visit_exp $elem(z, y).`REFS`_eleminst] -[visit_exp $elem(z, y)] -[visit_exp z] -[visit_id z] not free -[visit_exp y] -[visit_id y] not free -[check_dims] i n ref x y z -[visit_exp `%;%`_config(z, [`CONST`_instr(`I32`_numtype, i) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.NEW_ELEM`_instr(x, y)])] -[visit_exp (z, [`CONST`_instr(`I32`_numtype, i) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.NEW_ELEM`_instr(x, y)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr(`I32`_numtype, i) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.NEW_ELEM`_instr(x, y)]] -[visit_exp `CONST`_instr(`I32`_numtype, i)] -[visit_exp (`I32`_numtype, i)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i] -[visit_id i] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] -[visit_exp (`I32`_numtype, `%`_num_(n))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `ARRAY.NEW_ELEM`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] -[visit_exp y] -[visit_id y] -[visit_exp (ref : ref <: instr)^n{ref <- `ref*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]] -[visit_exp (ref : ref <: instr)^n{ref <- `ref*`}] -[scope_enter ref] -[visit_exp (ref : ref <: instr)] -[visit_exp ref] -[visit_id ref] not free -[visit_id ref] not free -[scope_exit ref] -[visit_exp n] -[visit_id n] not free -[visit_exp `ref*`] -[visit_id ref*] no dims -[visit_id ref*] -[visit_exp [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]] -[visit_exp `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))] -[visit_exp (x, `%`_u32(n))] -[visit_exp x] -[visit_id x] not free -[visit_exp `%`_u32(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] not free -[visit_exp (ref^n{ref <- `ref*`} = $elem(z, y).`REFS`_eleminst[i!`%`_num_.0 : n])] -[visit_exp ref^n{ref <- `ref*`}] -[scope_enter ref] -[visit_exp ref] -[visit_id ref] not free -[visit_id ref] not free -[scope_exit ref] -[visit_exp n] -[visit_id n] not free -[visit_exp `ref*`] -[visit_id ref*] not free -[visit_id ref*] no dims -[visit_exp $elem(z, y).`REFS`_eleminst[i!`%`_num_.0 : n]] -[visit_exp $elem(z, y).`REFS`_eleminst] -[visit_exp $elem(z, y)] -[visit_exp z] -[visit_id z] not free -[visit_exp y] -[visit_id y] not free -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp n] -[visit_id n] not free -[check_dims] i mut n x y z zt -[visit_exp `%;%`_config(z, [`CONST`_instr(`I32`_numtype, i) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.NEW_DATA`_instr(x, y)])] -[visit_exp (z, [`CONST`_instr(`I32`_numtype, i) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.NEW_DATA`_instr(x, y)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr(`I32`_numtype, i) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.NEW_DATA`_instr(x, y)]] -[visit_exp `CONST`_instr(`I32`_numtype, i)] -[visit_exp (`I32`_numtype, i)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i] -[visit_id i] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] -[visit_exp (`I32`_numtype, `%`_num_(n))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `ARRAY.NEW_DATA`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] -[visit_exp y] -[visit_id y] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[visit_exp ($type(z, x), `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)))] -[visit_exp $type(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] -[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] -[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)] -[visit_exp (mut?{mut <- `mut?`}, zt)] -[visit_exp mut?{mut <- `mut?`}] -[scope_enter mut] -[visit_exp mut] -[visit_id mut] not free -[visit_id mut] not free -[scope_exit mut] -[visit_exp `mut?`] -[visit_id mut?] no dims -[visit_id mut?] -[visit_exp zt] -[visit_id zt] -[visit_exp ((i!`%`_num_.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).`BYTES`_datainst|)] -[visit_exp (i!`%`_num_.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] -[visit_exp (((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat))] -[visit_exp ((n * $zsize(zt)) : nat <:> rat)] -[visit_exp (n * $zsize(zt))] -[visit_exp n] -[visit_id n] not free -[visit_exp $zsize(zt)] -[visit_exp zt] -[visit_id zt] not free -[visit_exp (8 : nat <:> rat)] -[visit_exp 8] -[visit_exp |$data(z, y).`BYTES`_datainst|] -[visit_exp $data(z, y).`BYTES`_datainst] -[visit_exp $data(z, y)] -[visit_exp z] -[visit_id z] not free -[visit_exp y] -[visit_id y] not free -[check_dims] c i mut n x y z zt -[visit_exp `%;%`_config(z, [`CONST`_instr(`I32`_numtype, i) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.NEW_DATA`_instr(x, y)])] -[visit_exp (z, [`CONST`_instr(`I32`_numtype, i) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.NEW_DATA`_instr(x, y)])] -[visit_exp z] -[visit_id z] -[visit_exp [`CONST`_instr(`I32`_numtype, i) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.NEW_DATA`_instr(x, y)]] -[visit_exp `CONST`_instr(`I32`_numtype, i)] -[visit_exp (`I32`_numtype, i)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i] -[visit_id i] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] -[visit_exp (`I32`_numtype, `%`_num_(n))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `ARRAY.NEW_DATA`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] -[visit_exp y] -[visit_id y] -[visit_exp $const($cunpack(zt), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]] -[visit_exp $const($cunpack(zt), $cunpacknum_(zt, c))^n{c <- `c*`}] -[scope_enter c] -[visit_exp $const($cunpack(zt), $cunpacknum_(zt, c))] -[visit_exp $cunpack(zt)] -[visit_exp zt] -[visit_id zt] -[visit_exp $cunpacknum_(zt, c)] -[visit_exp zt] -[visit_id zt] not free -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp n] -[visit_id n] not free -[visit_exp `c*`] -[visit_id c*] no dims -[visit_id c*] -[visit_exp [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))]] -[visit_exp `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))] -[visit_exp (x, `%`_u32(n))] -[visit_exp x] -[visit_id x] not free -[visit_exp `%`_u32(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] not free -[visit_exp ($type(z, x), `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)))] -[visit_exp $type(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] -[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] -[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)] -[visit_exp (mut?{mut <- `mut?`}, zt)] -[visit_exp mut?{mut <- `mut?`}] -[scope_enter mut] -[visit_exp mut] -[visit_id mut] not free -[visit_id mut] not free -[scope_exit mut] -[visit_exp `mut?`] -[visit_id mut?] no dims -[visit_id mut?] -[visit_exp zt] -[visit_id zt] not free -[visit_exp ($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)])] -[visit_exp $concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] -[visit_exp $zbytes_(zt, c)^n{c <- `c*`}] -[scope_enter c] -[visit_exp $zbytes_(zt, c)] -[visit_exp zt] -[visit_id zt] not free -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp n] -[visit_id n] not free -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[visit_exp ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] -[visit_exp (($zsize(zt) : nat <:> rat) / (8 : nat <:> rat))] -[visit_exp ($zsize(zt) : nat <:> rat)] -[visit_exp $zsize(zt)] -[visit_exp zt] -[visit_id zt] not free -[visit_exp (8 : nat <:> rat)] -[visit_exp 8] -[visit_exp $data(z, y).`BYTES`_datainst[i!`%`_num_.0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]] -[visit_exp $data(z, y).`BYTES`_datainst] -[visit_exp $data(z, y)] -[visit_exp z] -[visit_id z] not free -[visit_exp y] -[visit_id y] not free -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] -[visit_exp (((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat))] -[visit_exp ((n * $zsize(zt)) : nat <:> rat)] -[visit_exp (n * $zsize(zt))] -[visit_exp n] -[visit_id n] not free -[visit_exp $zsize(zt)] -[visit_exp zt] -[visit_id zt] not free -[visit_exp (8 : nat <:> rat)] -[visit_exp 8] -[check_dims] ht i sx x z -[visit_exp `%;%`_config(z, [`REF.NULL`_instr(ht) `CONST`_instr(`I32`_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])] -[visit_exp (z, [`REF.NULL`_instr(ht) `CONST`_instr(`I32`_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])] -[visit_exp z] -[visit_id z] -[visit_exp [`REF.NULL`_instr(ht) `CONST`_instr(`I32`_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]] -[visit_exp `REF.NULL`_instr(ht)] -[visit_exp (ht)] -[visit_exp ht] -[visit_id ht] -[visit_exp `CONST`_instr(`I32`_numtype, i)] -[visit_exp (`I32`_numtype, i)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i] -[visit_id i] -[visit_exp `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)] -[visit_exp (sx?{sx <- `sx?`}, x)] -[visit_exp sx?{sx <- `sx?`}] -[scope_enter sx] -[visit_exp sx] -[visit_id sx] not free -[visit_id sx] not free -[scope_exit sx] -[visit_exp `sx?`] -[visit_id sx?] no dims -[visit_id sx?] -[visit_exp x] -[visit_id x] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[check_dims] a i sx x z -[visit_exp `%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `CONST`_instr(`I32`_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])] -[visit_exp (z, [`REF.ARRAY_ADDR`_instr(a) `CONST`_instr(`I32`_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])] -[visit_exp z] -[visit_id z] -[visit_exp [`REF.ARRAY_ADDR`_instr(a) `CONST`_instr(`I32`_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]] -[visit_exp `REF.ARRAY_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp `CONST`_instr(`I32`_numtype, i)] -[visit_exp (`I32`_numtype, i)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i] -[visit_id i] -[visit_exp `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)] -[visit_exp (sx?{sx <- `sx?`}, x)] -[visit_exp sx?{sx <- `sx?`}] -[scope_enter sx] -[visit_exp sx] -[visit_id sx] not free -[visit_id sx] not free -[scope_exit sx] -[visit_exp `sx?`] -[visit_id sx?] no dims -[visit_id sx?] -[visit_exp x] -[visit_id x] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[visit_exp (i!`%`_num_.0 >= |$arrayinst(z)[a].`FIELDS`_arrayinst|)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp |$arrayinst(z)[a].`FIELDS`_arrayinst|] -[visit_exp $arrayinst(z)[a].`FIELDS`_arrayinst] -[visit_exp $arrayinst(z)[a]] -[visit_exp $arrayinst(z)] -[visit_exp z] -[visit_id z] not free -[visit_exp a] -[visit_id a] not free -[check_dims] a i mut sx x z zt -[visit_exp `%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `CONST`_instr(`I32`_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])] -[visit_exp (z, [`REF.ARRAY_ADDR`_instr(a) `CONST`_instr(`I32`_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)])] -[visit_exp z] -[visit_id z] -[visit_exp [`REF.ARRAY_ADDR`_instr(a) `CONST`_instr(`I32`_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]] -[visit_exp `REF.ARRAY_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp `CONST`_instr(`I32`_numtype, i)] -[visit_exp (`I32`_numtype, i)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i] -[visit_id i] -[visit_exp `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)] -[visit_exp (sx?{sx <- `sx?`}, x)] -[visit_exp sx?{sx <- `sx?`}] -[scope_enter sx] -[visit_exp sx] -[visit_id sx] not free -[visit_id sx] not free -[scope_exit sx] -[visit_exp `sx?`] -[visit_id sx?] no dims -[visit_id sx?] -[visit_exp x] -[visit_id x] -[visit_exp [($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].`FIELDS`_arrayinst[i!`%`_num_.0]) : val <: instr)]] -[visit_exp ($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].`FIELDS`_arrayinst[i!`%`_num_.0]) : val <: instr)] -[visit_exp $unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].`FIELDS`_arrayinst[i!`%`_num_.0])] -[visit_exp zt] -[visit_id zt] -[visit_exp sx?{sx <- `sx?`}] -[scope_enter sx] -[visit_exp sx] -[visit_id sx] not free -[visit_id sx] not free -[scope_exit sx] -[visit_exp `sx?`] -[visit_id sx?] not free -[visit_id sx?] no dims -[visit_exp $arrayinst(z)[a].`FIELDS`_arrayinst[i!`%`_num_.0]] -[visit_exp $arrayinst(z)[a].`FIELDS`_arrayinst] -[visit_exp $arrayinst(z)[a]] -[visit_exp $arrayinst(z)] -[visit_exp z] -[visit_id z] not free -[visit_exp a] -[visit_id a] not free -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp ($type(z, x), `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)))] -[visit_exp $type(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] -[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] -[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)] -[visit_exp (mut?{mut <- `mut?`}, zt)] -[visit_exp mut?{mut <- `mut?`}] -[scope_enter mut] -[visit_exp mut] -[visit_id mut] not free -[visit_id mut] not free -[scope_exit mut] -[visit_exp `mut?`] -[visit_id mut?] no dims -[visit_id mut?] -[visit_exp zt] -[visit_id zt] not free -[check_dims] ht i val x z -[visit_exp `%;%`_config(z, [`REF.NULL`_instr(ht) `CONST`_instr(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)])] -[visit_exp (z, [`REF.NULL`_instr(ht) `CONST`_instr(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)])] -[visit_exp z] -[visit_id z] -[visit_exp [`REF.NULL`_instr(ht) `CONST`_instr(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]] -[visit_exp `REF.NULL`_instr(ht)] -[visit_exp (ht)] -[visit_exp ht] -[visit_id ht] -[visit_exp `CONST`_instr(`I32`_numtype, i)] -[visit_exp (`I32`_numtype, i)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i] -[visit_id i] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] -[visit_exp `ARRAY.SET`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%;%`_config(z, [`TRAP`_instr])] -[visit_exp (z, [`TRAP`_instr])] -[visit_exp z] -[visit_id z] not free -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[check_dims] a i val x z -[visit_exp `%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `CONST`_instr(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)])] -[visit_exp (z, [`REF.ARRAY_ADDR`_instr(a) `CONST`_instr(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)])] -[visit_exp z] -[visit_id z] -[visit_exp [`REF.ARRAY_ADDR`_instr(a) `CONST`_instr(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]] -[visit_exp `REF.ARRAY_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp `CONST`_instr(`I32`_numtype, i)] -[visit_exp (`I32`_numtype, i)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i] -[visit_id i] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] -[visit_exp `ARRAY.SET`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%;%`_config(z, [`TRAP`_instr])] -[visit_exp (z, [`TRAP`_instr])] -[visit_exp z] -[visit_id z] not free -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[visit_exp (i!`%`_num_.0 >= |$arrayinst(z)[a].`FIELDS`_arrayinst|)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp |$arrayinst(z)[a].`FIELDS`_arrayinst|] -[visit_exp $arrayinst(z)[a].`FIELDS`_arrayinst] -[visit_exp $arrayinst(z)[a]] -[visit_exp $arrayinst(z)] -[visit_exp z] -[visit_id z] not free -[visit_exp a] -[visit_id a] not free -[check_dims] a i mut val x z zt -[visit_exp `%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `CONST`_instr(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)])] -[visit_exp (z, [`REF.ARRAY_ADDR`_instr(a) `CONST`_instr(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)])] -[visit_exp z] -[visit_id z] -[visit_exp [`REF.ARRAY_ADDR`_instr(a) `CONST`_instr(`I32`_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]] -[visit_exp `REF.ARRAY_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp `CONST`_instr(`I32`_numtype, i)] -[visit_exp (`I32`_numtype, i)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i] -[visit_id i] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] -[visit_exp `ARRAY.SET`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%;%`_config($with_array(z, a, i!`%`_num_.0, $packfield_(zt, val)), [])] -[visit_exp ($with_array(z, a, i!`%`_num_.0, $packfield_(zt, val)), [])] -[visit_exp $with_array(z, a, i!`%`_num_.0, $packfield_(zt, val))] -[visit_exp z] -[visit_id z] not free -[visit_exp a] -[visit_id a] not free -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp $packfield_(zt, val)] -[visit_exp zt] -[visit_id zt] -[visit_exp val] -[visit_id val] not free -[visit_exp []] -[visit_exp ($type(z, x), `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)))] -[visit_exp $type(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] -[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] -[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)] -[visit_exp (mut?{mut <- `mut?`}, zt)] -[visit_exp mut?{mut <- `mut?`}] -[scope_enter mut] -[visit_exp mut] -[visit_id mut] not free -[visit_id mut] not free -[scope_exit mut] -[visit_exp `mut?`] -[visit_id mut?] no dims -[visit_id mut?] -[visit_exp zt] -[visit_id zt] not free -[check_dims] ht z -[visit_exp `%;%`_config(z, [`REF.NULL`_instr(ht) `ARRAY.LEN`_instr])] -[visit_exp (z, [`REF.NULL`_instr(ht) `ARRAY.LEN`_instr])] -[visit_exp z] -[visit_id z] -[visit_exp [`REF.NULL`_instr(ht) `ARRAY.LEN`_instr]] -[visit_exp `REF.NULL`_instr(ht)] -[visit_exp (ht)] -[visit_exp ht] -[visit_id ht] -[visit_exp `ARRAY.LEN`_instr] -[visit_exp ()] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[check_dims] a z -[visit_exp `%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr])] -[visit_exp (z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr])] -[visit_exp z] -[visit_id z] -[visit_exp [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr]] -[visit_exp `REF.ARRAY_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp `ARRAY.LEN`_instr] -[visit_exp ()] -[visit_exp [`CONST`_instr(`I32`_numtype, `%`_num_(|$arrayinst(z)[a].`FIELDS`_arrayinst|))]] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(|$arrayinst(z)[a].`FIELDS`_arrayinst|))] -[visit_exp (`I32`_numtype, `%`_num_(|$arrayinst(z)[a].`FIELDS`_arrayinst|))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(|$arrayinst(z)[a].`FIELDS`_arrayinst|)] -[visit_exp (|$arrayinst(z)[a].`FIELDS`_arrayinst|)] -[visit_exp |$arrayinst(z)[a].`FIELDS`_arrayinst|] -[visit_exp $arrayinst(z)[a].`FIELDS`_arrayinst] -[visit_exp $arrayinst(z)[a]] -[visit_exp $arrayinst(z)] -[visit_exp z] -[visit_id z] not free -[visit_exp a] -[visit_id a] not free -[check_dims] ht i n val x z -[visit_exp `%;%`_config(z, [`REF.NULL`_instr(ht) `CONST`_instr(`I32`_numtype, i) (val : val <: instr) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.FILL`_instr(x)])] -[visit_exp (z, [`REF.NULL`_instr(ht) `CONST`_instr(`I32`_numtype, i) (val : val <: instr) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.FILL`_instr(x)])] -[visit_exp z] -[visit_id z] -[visit_exp [`REF.NULL`_instr(ht) `CONST`_instr(`I32`_numtype, i) (val : val <: instr) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.FILL`_instr(x)]] -[visit_exp `REF.NULL`_instr(ht)] -[visit_exp (ht)] -[visit_exp ht] -[visit_id ht] -[visit_exp `CONST`_instr(`I32`_numtype, i)] -[visit_exp (`I32`_numtype, i)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i] -[visit_id i] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] -[visit_exp (`I32`_numtype, `%`_num_(n))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `ARRAY.FILL`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[check_dims] a i n val x z -[visit_exp `%;%`_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)])] -[visit_exp (z, [`REF.ARRAY_ADDR`_instr(a) `CONST`_instr(`I32`_numtype, i) (val : val <: instr) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.FILL`_instr(x)])] -[visit_exp z] -[visit_id z] -[visit_exp [`REF.ARRAY_ADDR`_instr(a) `CONST`_instr(`I32`_numtype, i) (val : val <: instr) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.FILL`_instr(x)]] -[visit_exp `REF.ARRAY_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp `CONST`_instr(`I32`_numtype, i)] -[visit_exp (`I32`_numtype, i)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i] -[visit_id i] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] -[visit_exp (`I32`_numtype, `%`_num_(n))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `ARRAY.FILL`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[visit_exp ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].`FIELDS`_arrayinst|)] -[visit_exp (i!`%`_num_.0 + n)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp n] -[visit_id n] not free -[visit_exp |$arrayinst(z)[a].`FIELDS`_arrayinst|] -[visit_exp $arrayinst(z)[a].`FIELDS`_arrayinst] -[visit_exp $arrayinst(z)[a]] -[visit_exp $arrayinst(z)] -[visit_exp z] -[visit_id z] not free -[visit_exp a] -[visit_id a] not free -[check_dims] a i n val x z -[visit_exp `%;%`_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)])] -[visit_exp (z, [`REF.ARRAY_ADDR`_instr(a) `CONST`_instr(`I32`_numtype, i) (val : val <: instr) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.FILL`_instr(x)])] -[visit_exp z] -[visit_id z] -[visit_exp [`REF.ARRAY_ADDR`_instr(a) `CONST`_instr(`I32`_numtype, i) (val : val <: instr) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.FILL`_instr(x)]] -[visit_exp `REF.ARRAY_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp `CONST`_instr(`I32`_numtype, i)] -[visit_exp (`I32`_numtype, i)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i] -[visit_id i] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] -[visit_exp (`I32`_numtype, `%`_num_(n))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `ARRAY.FILL`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp []] -[visit_exp (n = 0)] -[visit_exp n] -[visit_id n] not free -[visit_exp 0] -[check_dims] a i n val x z -[visit_exp `%;%`_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)])] -[visit_exp (z, [`REF.ARRAY_ADDR`_instr(a) `CONST`_instr(`I32`_numtype, i) (val : val <: instr) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.FILL`_instr(x)])] -[visit_exp z] -[visit_id z] -[visit_exp [`REF.ARRAY_ADDR`_instr(a) `CONST`_instr(`I32`_numtype, i) (val : val <: instr) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `ARRAY.FILL`_instr(x)]] -[visit_exp `REF.ARRAY_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp `CONST`_instr(`I32`_numtype, i)] -[visit_exp (`I32`_numtype, i)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i] -[visit_id i] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] -[visit_exp (`I32`_numtype, `%`_num_(n))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `ARRAY.FILL`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp [`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)]] -[visit_exp `REF.ARRAY_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] not free -[visit_exp `CONST`_instr(`I32`_numtype, i)] -[visit_exp (`I32`_numtype, i)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i] -[visit_id i] not free -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_exp `ARRAY.SET`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] not free -[visit_exp `REF.ARRAY_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] not free -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_((i!`%`_num_.0 + 1)))] -[visit_exp (`I32`_numtype, `%`_num_((i!`%`_num_.0 + 1)))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_((i!`%`_num_.0 + 1))] -[visit_exp ((i!`%`_num_.0 + 1))] -[visit_exp (i!`%`_num_.0 + 1)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp 1] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp (`I32`_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp ((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp (((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp ((n : nat <:> int) - (1 : nat <:> int))] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp `ARRAY.FILL`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] not free -[check_dims] ht_1 i_1 i_2 n ref x_1 x_2 z -[visit_exp `%;%`_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)])] -[visit_exp (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)])] -[visit_exp z] -[visit_id z] -[visit_exp [`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)]] -[visit_exp `REF.NULL`_instr(ht_1)] -[visit_exp (ht_1)] -[visit_exp ht_1] -[visit_id ht_1] -[visit_exp `CONST`_instr(`I32`_numtype, i_1)] -[visit_exp (`I32`_numtype, i_1)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp (ref : ref <: instr)] -[visit_exp ref] -[visit_id ref] -[visit_exp `CONST`_instr(`I32`_numtype, i_2)] -[visit_exp (`I32`_numtype, i_2)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i_2] -[visit_id i_2] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] -[visit_exp (`I32`_numtype, `%`_num_(n))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `ARRAY.COPY`_instr(x_1, x_2)] -[visit_exp (x_1, x_2)] -[visit_exp x_1] -[visit_id x_1] -[visit_exp x_2] -[visit_id x_2] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[check_dims] ht_2 i_1 i_2 n ref x_1 x_2 z -[visit_exp `%;%`_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)])] -[visit_exp (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)])] -[visit_exp z] -[visit_id z] -[visit_exp [(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)]] -[visit_exp (ref : ref <: instr)] -[visit_exp ref] -[visit_id ref] -[visit_exp `CONST`_instr(`I32`_numtype, i_1)] -[visit_exp (`I32`_numtype, i_1)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp `REF.NULL`_instr(ht_2)] -[visit_exp (ht_2)] -[visit_exp ht_2] -[visit_id ht_2] -[visit_exp `CONST`_instr(`I32`_numtype, i_2)] -[visit_exp (`I32`_numtype, i_2)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i_2] -[visit_id i_2] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] -[visit_exp (`I32`_numtype, `%`_num_(n))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `ARRAY.COPY`_instr(x_1, x_2)] -[visit_exp (x_1, x_2)] -[visit_exp x_1] -[visit_id x_1] -[visit_exp x_2] -[visit_id x_2] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[check_dims] a_1 a_2 i_1 i_2 n x_1 x_2 z -[visit_exp `%;%`_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)])] -[visit_exp (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)])] -[visit_exp z] -[visit_id z] -[visit_exp [`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)]] -[visit_exp `REF.ARRAY_ADDR`_instr(a_1)] -[visit_exp (a_1)] -[visit_exp a_1] -[visit_id a_1] -[visit_exp `CONST`_instr(`I32`_numtype, i_1)] -[visit_exp (`I32`_numtype, i_1)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp `REF.ARRAY_ADDR`_instr(a_2)] -[visit_exp (a_2)] -[visit_exp a_2] -[visit_id a_2] -[visit_exp `CONST`_instr(`I32`_numtype, i_2)] -[visit_exp (`I32`_numtype, i_2)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i_2] -[visit_id i_2] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] -[visit_exp (`I32`_numtype, `%`_num_(n))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `ARRAY.COPY`_instr(x_1, x_2)] -[visit_exp (x_1, x_2)] -[visit_exp x_1] -[visit_id x_1] -[visit_exp x_2] -[visit_id x_2] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[visit_exp ((i_1!`%`_num_.0 + n) > |$arrayinst(z)[a_1].`FIELDS`_arrayinst|)] -[visit_exp (i_1!`%`_num_.0 + n)] -[visit_exp i_1!`%`_num_.0] -[visit_exp i_1!`%`_num_] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp n] -[visit_id n] not free -[visit_exp |$arrayinst(z)[a_1].`FIELDS`_arrayinst|] -[visit_exp $arrayinst(z)[a_1].`FIELDS`_arrayinst] -[visit_exp $arrayinst(z)[a_1]] -[visit_exp $arrayinst(z)] -[visit_exp z] -[visit_id z] not free -[visit_exp a_1] -[visit_id a_1] not free -[check_dims] a_1 a_2 i_1 i_2 n x_1 x_2 z -[visit_exp `%;%`_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)])] -[visit_exp (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)])] -[visit_exp z] -[visit_id z] -[visit_exp [`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)]] -[visit_exp `REF.ARRAY_ADDR`_instr(a_1)] -[visit_exp (a_1)] -[visit_exp a_1] -[visit_id a_1] -[visit_exp `CONST`_instr(`I32`_numtype, i_1)] -[visit_exp (`I32`_numtype, i_1)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp `REF.ARRAY_ADDR`_instr(a_2)] -[visit_exp (a_2)] -[visit_exp a_2] -[visit_id a_2] -[visit_exp `CONST`_instr(`I32`_numtype, i_2)] -[visit_exp (`I32`_numtype, i_2)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i_2] -[visit_id i_2] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] -[visit_exp (`I32`_numtype, `%`_num_(n))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `ARRAY.COPY`_instr(x_1, x_2)] -[visit_exp (x_1, x_2)] -[visit_exp x_1] -[visit_id x_1] -[visit_exp x_2] -[visit_id x_2] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[visit_exp ((i_2!`%`_num_.0 + n) > |$arrayinst(z)[a_2].`FIELDS`_arrayinst|)] -[visit_exp (i_2!`%`_num_.0 + n)] -[visit_exp i_2!`%`_num_.0] -[visit_exp i_2!`%`_num_] -[visit_exp i_2] -[visit_id i_2] not free -[visit_exp n] -[visit_id n] not free -[visit_exp |$arrayinst(z)[a_2].`FIELDS`_arrayinst|] -[visit_exp $arrayinst(z)[a_2].`FIELDS`_arrayinst] -[visit_exp $arrayinst(z)[a_2]] -[visit_exp $arrayinst(z)] -[visit_exp z] -[visit_id z] not free -[visit_exp a_2] -[visit_id a_2] not free -[check_dims] a_1 a_2 i_1 i_2 n x_1 x_2 z -[visit_exp `%;%`_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)])] -[visit_exp (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)])] -[visit_exp z] -[visit_id z] -[visit_exp [`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)]] -[visit_exp `REF.ARRAY_ADDR`_instr(a_1)] -[visit_exp (a_1)] -[visit_exp a_1] -[visit_id a_1] -[visit_exp `CONST`_instr(`I32`_numtype, i_1)] -[visit_exp (`I32`_numtype, i_1)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp `REF.ARRAY_ADDR`_instr(a_2)] -[visit_exp (a_2)] -[visit_exp a_2] -[visit_id a_2] -[visit_exp `CONST`_instr(`I32`_numtype, i_2)] -[visit_exp (`I32`_numtype, i_2)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i_2] -[visit_id i_2] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] -[visit_exp (`I32`_numtype, `%`_num_(n))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `ARRAY.COPY`_instr(x_1, x_2)] -[visit_exp (x_1, x_2)] -[visit_exp x_1] -[visit_id x_1] -[visit_exp x_2] -[visit_id x_2] -[visit_exp []] -[visit_exp (n = 0)] -[visit_exp n] -[visit_id n] not free -[visit_exp 0] -[check_dims] a_1 a_2 i_1 i_2 mut n sx x_1 x_2 z zt_2 -[visit_exp `%;%`_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)])] -[visit_exp (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)])] -[visit_exp z] -[visit_id z] -[visit_exp [`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)]] -[visit_exp `REF.ARRAY_ADDR`_instr(a_1)] -[visit_exp (a_1)] -[visit_exp a_1] -[visit_id a_1] -[visit_exp `CONST`_instr(`I32`_numtype, i_1)] -[visit_exp (`I32`_numtype, i_1)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp `REF.ARRAY_ADDR`_instr(a_2)] -[visit_exp (a_2)] -[visit_exp a_2] -[visit_id a_2] -[visit_exp `CONST`_instr(`I32`_numtype, i_2)] -[visit_exp (`I32`_numtype, i_2)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i_2] -[visit_id i_2] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] -[visit_exp (`I32`_numtype, `%`_num_(n))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `ARRAY.COPY`_instr(x_1, x_2)] -[visit_exp (x_1, x_2)] -[visit_exp x_1] -[visit_id x_1] -[visit_exp x_2] -[visit_id x_2] -[visit_exp [`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)]] -[visit_exp `REF.ARRAY_ADDR`_instr(a_1)] -[visit_exp (a_1)] -[visit_exp a_1] -[visit_id a_1] not free -[visit_exp `CONST`_instr(`I32`_numtype, i_1)] -[visit_exp (`I32`_numtype, i_1)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp `REF.ARRAY_ADDR`_instr(a_2)] -[visit_exp (a_2)] -[visit_exp a_2] -[visit_id a_2] not free -[visit_exp `CONST`_instr(`I32`_numtype, i_2)] -[visit_exp (`I32`_numtype, i_2)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i_2] -[visit_id i_2] not free -[visit_exp `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)] -[visit_exp (sx?{sx <- `sx?`}, x_2)] -[visit_exp sx?{sx <- `sx?`}] -[scope_enter sx] -[visit_exp sx] -[visit_id sx] not free -[visit_id sx] not free -[scope_exit sx] -[visit_exp `sx?`] -[visit_id sx?] no dims -[visit_id sx?] -[visit_exp x_2] -[visit_id x_2] not free -[visit_exp `ARRAY.SET`_instr(x_1)] -[visit_exp (x_1)] -[visit_exp x_1] -[visit_id x_1] not free -[visit_exp `REF.ARRAY_ADDR`_instr(a_1)] -[visit_exp (a_1)] -[visit_exp a_1] -[visit_id a_1] not free -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_((i_1!`%`_num_.0 + 1)))] -[visit_exp (`I32`_numtype, `%`_num_((i_1!`%`_num_.0 + 1)))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_((i_1!`%`_num_.0 + 1))] -[visit_exp ((i_1!`%`_num_.0 + 1))] -[visit_exp (i_1!`%`_num_.0 + 1)] -[visit_exp i_1!`%`_num_.0] -[visit_exp i_1!`%`_num_] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp 1] -[visit_exp `REF.ARRAY_ADDR`_instr(a_2)] -[visit_exp (a_2)] -[visit_exp a_2] -[visit_id a_2] not free -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_((i_2!`%`_num_.0 + 1)))] -[visit_exp (`I32`_numtype, `%`_num_((i_2!`%`_num_.0 + 1)))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_((i_2!`%`_num_.0 + 1))] -[visit_exp ((i_2!`%`_num_.0 + 1))] -[visit_exp (i_2!`%`_num_.0 + 1)] -[visit_exp i_2!`%`_num_.0] -[visit_exp i_2!`%`_num_] -[visit_exp i_2] -[visit_id i_2] not free -[visit_exp 1] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp (`I32`_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp ((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp (((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp ((n : nat <:> int) - (1 : nat <:> int))] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp `ARRAY.COPY`_instr(x_1, x_2)] -[visit_exp (x_1, x_2)] -[visit_exp x_1] -[visit_id x_1] not free -[visit_exp x_2] -[visit_id x_2] not free -[visit_exp ($type(z, x_2), `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2)))] -[visit_exp $type(z, x_2)] -[visit_exp z] -[visit_id z] not free -[visit_exp x_2] -[visit_id x_2] not free -[visit_exp `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))] -[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))] -[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt_2)] -[visit_exp (mut?{mut <- `mut?`}, zt_2)] -[visit_exp mut?{mut <- `mut?`}] -[scope_enter mut] -[visit_exp mut] -[visit_id mut] not free -[visit_id mut] not free -[scope_exit mut] -[visit_exp `mut?`] -[visit_id mut?] no dims -[visit_id mut?] -[visit_exp zt_2] -[visit_id zt_2] -[visit_exp ((i_1!`%`_num_.0 <= i_2!`%`_num_.0) /\ (sx?{sx <- `sx?`} = $sx(zt_2)))] -[visit_exp (i_1!`%`_num_.0 <= i_2!`%`_num_.0)] -[visit_exp i_1!`%`_num_.0] -[visit_exp i_1!`%`_num_] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp i_2!`%`_num_.0] -[visit_exp i_2!`%`_num_] -[visit_exp i_2] -[visit_id i_2] not free -[visit_exp (sx?{sx <- `sx?`} = $sx(zt_2))] -[visit_exp sx?{sx <- `sx?`}] -[scope_enter sx] -[visit_exp sx] -[visit_id sx] not free -[visit_id sx] not free -[scope_exit sx] -[visit_exp `sx?`] -[visit_id sx?] not free -[visit_id sx?] no dims -[visit_exp $sx(zt_2)] -[visit_exp zt_2] -[visit_id zt_2] not free -[check_dims] a_1 a_2 i_1 i_2 mut n sx x_1 x_2 z zt_2 -[visit_exp `%;%`_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)])] -[visit_exp (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)])] -[visit_exp z] -[visit_id z] -[visit_exp [`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)]] -[visit_exp `REF.ARRAY_ADDR`_instr(a_1)] -[visit_exp (a_1)] -[visit_exp a_1] -[visit_id a_1] -[visit_exp `CONST`_instr(`I32`_numtype, i_1)] -[visit_exp (`I32`_numtype, i_1)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] -[visit_exp `REF.ARRAY_ADDR`_instr(a_2)] -[visit_exp (a_2)] -[visit_exp a_2] -[visit_id a_2] -[visit_exp `CONST`_instr(`I32`_numtype, i_2)] -[visit_exp (`I32`_numtype, i_2)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i_2] -[visit_id i_2] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] -[visit_exp (`I32`_numtype, `%`_num_(n))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `ARRAY.COPY`_instr(x_1, x_2)] -[visit_exp (x_1, x_2)] -[visit_exp x_1] -[visit_id x_1] -[visit_exp x_2] -[visit_id x_2] -[visit_exp [`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)]] -[visit_exp `REF.ARRAY_ADDR`_instr(a_1)] -[visit_exp (a_1)] -[visit_exp a_1] -[visit_id a_1] not free -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp (`I32`_numtype, `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp (((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp ((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp (((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int))] -[visit_exp ((i_1!`%`_num_.0 + n) : nat <:> int)] -[visit_exp (i_1!`%`_num_.0 + n)] -[visit_exp i_1!`%`_num_.0] -[visit_exp i_1!`%`_num_] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp n] -[visit_id n] not free -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp `REF.ARRAY_ADDR`_instr(a_2)] -[visit_exp (a_2)] -[visit_exp a_2] -[visit_id a_2] not free -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp (`I32`_numtype, `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp (((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp ((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp (((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int))] -[visit_exp ((i_2!`%`_num_.0 + n) : nat <:> int)] -[visit_exp (i_2!`%`_num_.0 + n)] -[visit_exp i_2!`%`_num_.0] -[visit_exp i_2!`%`_num_] -[visit_exp i_2] -[visit_id i_2] not free -[visit_exp n] -[visit_id n] not free -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2)] -[visit_exp (sx?{sx <- `sx?`}, x_2)] -[visit_exp sx?{sx <- `sx?`}] -[scope_enter sx] -[visit_exp sx] -[visit_id sx] not free -[visit_id sx] not free -[scope_exit sx] -[visit_exp `sx?`] -[visit_id sx?] no dims -[visit_id sx?] -[visit_exp x_2] -[visit_id x_2] not free -[visit_exp `ARRAY.SET`_instr(x_1)] -[visit_exp (x_1)] -[visit_exp x_1] -[visit_id x_1] not free -[visit_exp `REF.ARRAY_ADDR`_instr(a_1)] -[visit_exp (a_1)] -[visit_exp a_1] -[visit_id a_1] not free -[visit_exp `CONST`_instr(`I32`_numtype, i_1)] -[visit_exp (`I32`_numtype, i_1)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i_1] -[visit_id i_1] not free -[visit_exp `REF.ARRAY_ADDR`_instr(a_2)] -[visit_exp (a_2)] -[visit_exp a_2] -[visit_id a_2] not free -[visit_exp `CONST`_instr(`I32`_numtype, i_2)] -[visit_exp (`I32`_numtype, i_2)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i_2] -[visit_id i_2] not free -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp (`I32`_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp ((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp (((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp ((n : nat <:> int) - (1 : nat <:> int))] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp `ARRAY.COPY`_instr(x_1, x_2)] -[visit_exp (x_1, x_2)] -[visit_exp x_1] -[visit_id x_1] not free -[visit_exp x_2] -[visit_id x_2] not free -[visit_exp ($type(z, x_2), `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2)))] -[visit_exp $type(z, x_2)] -[visit_exp z] -[visit_id z] not free -[visit_exp x_2] -[visit_id x_2] not free -[visit_exp `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))] -[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))] -[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt_2)] -[visit_exp (mut?{mut <- `mut?`}, zt_2)] -[visit_exp mut?{mut <- `mut?`}] -[scope_enter mut] -[visit_exp mut] -[visit_id mut] not free -[visit_id mut] not free -[scope_exit mut] -[visit_exp `mut?`] -[visit_id mut?] no dims -[visit_id mut?] -[visit_exp zt_2] -[visit_id zt_2] -[visit_exp (sx?{sx <- `sx?`} = $sx(zt_2))] -[visit_exp sx?{sx <- `sx?`}] -[scope_enter sx] -[visit_exp sx] -[visit_id sx] not free -[visit_id sx] not free -[scope_exit sx] -[visit_exp `sx?`] -[visit_id sx?] not free -[visit_id sx?] no dims -[visit_exp $sx(zt_2)] -[visit_exp zt_2] -[visit_id zt_2] not free -[check_dims] ht i j n x y z -[visit_exp `%;%`_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)])] -[visit_exp (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)])] -[visit_exp z] -[visit_id z] -[visit_exp [`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)]] -[visit_exp `REF.NULL`_instr(ht)] -[visit_exp (ht)] -[visit_exp ht] -[visit_id ht] -[visit_exp `CONST`_instr(`I32`_numtype, i)] -[visit_exp (`I32`_numtype, i)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i] -[visit_id i] -[visit_exp `CONST`_instr(`I32`_numtype, j)] -[visit_exp (`I32`_numtype, j)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp j] -[visit_id j] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] -[visit_exp (`I32`_numtype, `%`_num_(n))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `ARRAY.INIT_ELEM`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] -[visit_exp y] -[visit_id y] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[check_dims] a i j n x y z -[visit_exp `%;%`_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)])] -[visit_exp (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)])] -[visit_exp z] -[visit_id z] -[visit_exp [`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)]] -[visit_exp `REF.ARRAY_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp `CONST`_instr(`I32`_numtype, i)] -[visit_exp (`I32`_numtype, i)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i] -[visit_id i] -[visit_exp `CONST`_instr(`I32`_numtype, j)] -[visit_exp (`I32`_numtype, j)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp j] -[visit_id j] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] -[visit_exp (`I32`_numtype, `%`_num_(n))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `ARRAY.INIT_ELEM`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] -[visit_exp y] -[visit_id y] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[visit_exp ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].`FIELDS`_arrayinst|)] -[visit_exp (i!`%`_num_.0 + n)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp n] -[visit_id n] not free -[visit_exp |$arrayinst(z)[a].`FIELDS`_arrayinst|] -[visit_exp $arrayinst(z)[a].`FIELDS`_arrayinst] -[visit_exp $arrayinst(z)[a]] -[visit_exp $arrayinst(z)] -[visit_exp z] -[visit_id z] not free -[visit_exp a] -[visit_id a] not free -[check_dims] a i j n x y z -[visit_exp `%;%`_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)])] -[visit_exp (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)])] -[visit_exp z] -[visit_id z] -[visit_exp [`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)]] -[visit_exp `REF.ARRAY_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp `CONST`_instr(`I32`_numtype, i)] -[visit_exp (`I32`_numtype, i)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i] -[visit_id i] -[visit_exp `CONST`_instr(`I32`_numtype, j)] -[visit_exp (`I32`_numtype, j)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp j] -[visit_id j] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] -[visit_exp (`I32`_numtype, `%`_num_(n))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `ARRAY.INIT_ELEM`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] -[visit_exp y] -[visit_id y] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[visit_exp ((j!`%`_num_.0 + n) > |$elem(z, y).`REFS`_eleminst|)] -[visit_exp (j!`%`_num_.0 + n)] -[visit_exp j!`%`_num_.0] -[visit_exp j!`%`_num_] -[visit_exp j] -[visit_id j] not free -[visit_exp n] -[visit_id n] not free -[visit_exp |$elem(z, y).`REFS`_eleminst|] -[visit_exp $elem(z, y).`REFS`_eleminst] -[visit_exp $elem(z, y)] -[visit_exp z] -[visit_id z] not free -[visit_exp y] -[visit_id y] not free -[check_dims] a i j n x y z -[visit_exp `%;%`_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)])] -[visit_exp (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)])] -[visit_exp z] -[visit_id z] -[visit_exp [`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)]] -[visit_exp `REF.ARRAY_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp `CONST`_instr(`I32`_numtype, i)] -[visit_exp (`I32`_numtype, i)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i] -[visit_id i] -[visit_exp `CONST`_instr(`I32`_numtype, j)] -[visit_exp (`I32`_numtype, j)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp j] -[visit_id j] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] -[visit_exp (`I32`_numtype, `%`_num_(n))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `ARRAY.INIT_ELEM`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] -[visit_exp y] -[visit_id y] -[visit_exp []] -[visit_exp (n = 0)] -[visit_exp n] -[visit_id n] not free -[visit_exp 0] -[check_dims] a i j n ref x y z -[visit_exp `%;%`_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)])] -[visit_exp (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)])] -[visit_exp z] -[visit_id z] -[visit_exp [`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)]] -[visit_exp `REF.ARRAY_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp `CONST`_instr(`I32`_numtype, i)] -[visit_exp (`I32`_numtype, i)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i] -[visit_id i] -[visit_exp `CONST`_instr(`I32`_numtype, j)] -[visit_exp (`I32`_numtype, j)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp j] -[visit_id j] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] -[visit_exp (`I32`_numtype, `%`_num_(n))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `ARRAY.INIT_ELEM`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] -[visit_exp y] -[visit_id y] -[visit_exp [`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)]] -[visit_exp `REF.ARRAY_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] not free -[visit_exp `CONST`_instr(`I32`_numtype, i)] -[visit_exp (`I32`_numtype, i)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i] -[visit_id i] not free -[visit_exp (ref : ref <: instr)] -[visit_exp ref] -[visit_id ref] -[visit_exp `ARRAY.SET`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] not free -[visit_exp `REF.ARRAY_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] not free -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_((i!`%`_num_.0 + 1)))] -[visit_exp (`I32`_numtype, `%`_num_((i!`%`_num_.0 + 1)))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_((i!`%`_num_.0 + 1))] -[visit_exp ((i!`%`_num_.0 + 1))] -[visit_exp (i!`%`_num_.0 + 1)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp 1] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_((j!`%`_num_.0 + 1)))] -[visit_exp (`I32`_numtype, `%`_num_((j!`%`_num_.0 + 1)))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_((j!`%`_num_.0 + 1))] -[visit_exp ((j!`%`_num_.0 + 1))] -[visit_exp (j!`%`_num_.0 + 1)] -[visit_exp j!`%`_num_.0] -[visit_exp j!`%`_num_] -[visit_exp j] -[visit_id j] not free -[visit_exp 1] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp (`I32`_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp ((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp (((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp ((n : nat <:> int) - (1 : nat <:> int))] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp `ARRAY.INIT_ELEM`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] not free -[visit_exp y] -[visit_id y] not free -[visit_exp (ref = $elem(z, y).`REFS`_eleminst[j!`%`_num_.0])] -[visit_exp ref] -[visit_id ref] not free -[visit_exp $elem(z, y).`REFS`_eleminst[j!`%`_num_.0]] -[visit_exp $elem(z, y).`REFS`_eleminst] -[visit_exp $elem(z, y)] -[visit_exp z] -[visit_id z] not free -[visit_exp y] -[visit_id y] not free -[visit_exp j!`%`_num_.0] -[visit_exp j!`%`_num_] -[visit_exp j] -[visit_id j] not free -[check_dims] ht i j n x y z -[visit_exp `%;%`_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)])] -[visit_exp (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)])] -[visit_exp z] -[visit_id z] -[visit_exp [`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)]] -[visit_exp `REF.NULL`_instr(ht)] -[visit_exp (ht)] -[visit_exp ht] -[visit_id ht] -[visit_exp `CONST`_instr(`I32`_numtype, i)] -[visit_exp (`I32`_numtype, i)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i] -[visit_id i] -[visit_exp `CONST`_instr(`I32`_numtype, j)] -[visit_exp (`I32`_numtype, j)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp j] -[visit_id j] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] -[visit_exp (`I32`_numtype, `%`_num_(n))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `ARRAY.INIT_DATA`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] -[visit_exp y] -[visit_id y] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[check_dims] a i j n x y z -[visit_exp `%;%`_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)])] -[visit_exp (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)])] -[visit_exp z] -[visit_id z] -[visit_exp [`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)]] -[visit_exp `REF.ARRAY_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp `CONST`_instr(`I32`_numtype, i)] -[visit_exp (`I32`_numtype, i)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i] -[visit_id i] -[visit_exp `CONST`_instr(`I32`_numtype, j)] -[visit_exp (`I32`_numtype, j)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp j] -[visit_id j] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] -[visit_exp (`I32`_numtype, `%`_num_(n))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `ARRAY.INIT_DATA`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] -[visit_exp y] -[visit_id y] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[visit_exp ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].`FIELDS`_arrayinst|)] -[visit_exp (i!`%`_num_.0 + n)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp n] -[visit_id n] not free -[visit_exp |$arrayinst(z)[a].`FIELDS`_arrayinst|] -[visit_exp $arrayinst(z)[a].`FIELDS`_arrayinst] -[visit_exp $arrayinst(z)[a]] -[visit_exp $arrayinst(z)] -[visit_exp z] -[visit_id z] not free -[visit_exp a] -[visit_id a] not free -[check_dims] a i j mut n x y z zt -[visit_exp `%;%`_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)])] -[visit_exp (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)])] -[visit_exp z] -[visit_id z] -[visit_exp [`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)]] -[visit_exp `REF.ARRAY_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp `CONST`_instr(`I32`_numtype, i)] -[visit_exp (`I32`_numtype, i)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i] -[visit_id i] -[visit_exp `CONST`_instr(`I32`_numtype, j)] -[visit_exp (`I32`_numtype, j)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp j] -[visit_id j] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] -[visit_exp (`I32`_numtype, `%`_num_(n))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `ARRAY.INIT_DATA`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] -[visit_exp y] -[visit_id y] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[visit_exp ($type(z, x), `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)))] -[visit_exp $type(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] -[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] -[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)] -[visit_exp (mut?{mut <- `mut?`}, zt)] -[visit_exp mut?{mut <- `mut?`}] -[scope_enter mut] -[visit_exp mut] -[visit_id mut] not free -[visit_id mut] not free -[scope_exit mut] -[visit_exp `mut?`] -[visit_id mut?] no dims -[visit_id mut?] -[visit_exp zt] -[visit_id zt] -[visit_exp ((j!`%`_num_.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).`BYTES`_datainst|)] -[visit_exp (j!`%`_num_.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] -[visit_exp j!`%`_num_.0] -[visit_exp j!`%`_num_] -[visit_exp j] -[visit_id j] not free -[visit_exp ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] -[visit_exp (((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat))] -[visit_exp ((n * $zsize(zt)) : nat <:> rat)] -[visit_exp (n * $zsize(zt))] -[visit_exp n] -[visit_id n] not free -[visit_exp $zsize(zt)] -[visit_exp zt] -[visit_id zt] not free -[visit_exp (8 : nat <:> rat)] -[visit_exp 8] -[visit_exp |$data(z, y).`BYTES`_datainst|] -[visit_exp $data(z, y).`BYTES`_datainst] -[visit_exp $data(z, y)] -[visit_exp z] -[visit_id z] not free -[visit_exp y] -[visit_id y] not free -[check_dims] a i j n x y z -[visit_exp `%;%`_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)])] -[visit_exp (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)])] -[visit_exp z] -[visit_id z] -[visit_exp [`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)]] -[visit_exp `REF.ARRAY_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp `CONST`_instr(`I32`_numtype, i)] -[visit_exp (`I32`_numtype, i)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i] -[visit_id i] -[visit_exp `CONST`_instr(`I32`_numtype, j)] -[visit_exp (`I32`_numtype, j)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp j] -[visit_id j] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] -[visit_exp (`I32`_numtype, `%`_num_(n))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `ARRAY.INIT_DATA`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] -[visit_exp y] -[visit_id y] -[visit_exp []] -[visit_exp (n = 0)] -[visit_exp n] -[visit_id n] not free -[visit_exp 0] -[check_dims] a c i j mut n x y z zt -[visit_exp `%;%`_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)])] -[visit_exp (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)])] -[visit_exp z] -[visit_id z] -[visit_exp [`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)]] -[visit_exp `REF.ARRAY_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] -[visit_exp `CONST`_instr(`I32`_numtype, i)] -[visit_exp (`I32`_numtype, i)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i] -[visit_id i] -[visit_exp `CONST`_instr(`I32`_numtype, j)] -[visit_exp (`I32`_numtype, j)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp j] -[visit_id j] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] -[visit_exp (`I32`_numtype, `%`_num_(n))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `ARRAY.INIT_DATA`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] -[visit_exp y] -[visit_id y] -[visit_exp [`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)]] -[visit_exp `REF.ARRAY_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] not free -[visit_exp `CONST`_instr(`I32`_numtype, i)] -[visit_exp (`I32`_numtype, i)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i] -[visit_id i] not free -[visit_exp $const($cunpack(zt), $cunpacknum_(zt, c))] -[visit_exp $cunpack(zt)] -[visit_exp zt] -[visit_id zt] -[visit_exp $cunpacknum_(zt, c)] -[visit_exp zt] -[visit_id zt] not free -[visit_exp c] -[visit_id c] -[visit_exp `ARRAY.SET`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] not free -[visit_exp `REF.ARRAY_ADDR`_instr(a)] -[visit_exp (a)] -[visit_exp a] -[visit_id a] not free -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_((i!`%`_num_.0 + 1)))] -[visit_exp (`I32`_numtype, `%`_num_((i!`%`_num_.0 + 1)))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_((i!`%`_num_.0 + 1))] -[visit_exp ((i!`%`_num_.0 + 1))] -[visit_exp (i!`%`_num_.0 + 1)] -[visit_exp i!`%`_num_.0] -[visit_exp i!`%`_num_] -[visit_exp i] -[visit_id i] not free -[visit_exp 1] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_((j!`%`_num_.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))] -[visit_exp (`I32`_numtype, `%`_num_((j!`%`_num_.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_((j!`%`_num_.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))] -[visit_exp ((j!`%`_num_.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))] -[visit_exp (j!`%`_num_.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat))] -[visit_exp j!`%`_num_.0] -[visit_exp j!`%`_num_] -[visit_exp j] -[visit_id j] not free -[visit_exp ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] -[visit_exp (($zsize(zt) : nat <:> rat) / (8 : nat <:> rat))] -[visit_exp ($zsize(zt) : nat <:> rat)] -[visit_exp $zsize(zt)] -[visit_exp zt] -[visit_id zt] not free -[visit_exp (8 : nat <:> rat)] -[visit_exp 8] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp (`I32`_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp ((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp (((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp ((n : nat <:> int) - (1 : nat <:> int))] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp `ARRAY.INIT_DATA`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] not free -[visit_exp y] -[visit_id y] not free -[visit_exp ($type(z, x), `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)))] -[visit_exp $type(z, x)] -[visit_exp z] -[visit_id z] not free -[visit_exp x] -[visit_id x] not free -[visit_exp `ARRAY`_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] -[visit_exp (`%%`_fieldtype(mut?{mut <- `mut?`}, zt))] -[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)] -[visit_exp (mut?{mut <- `mut?`}, zt)] -[visit_exp mut?{mut <- `mut?`}] -[scope_enter mut] -[visit_exp mut] -[visit_id mut] not free -[visit_id mut] not free -[scope_exit mut] -[visit_exp `mut?`] -[visit_id mut?] no dims -[visit_id mut?] -[visit_exp zt] -[visit_id zt] not free -[visit_exp ($zbytes_(zt, c) = $data(z, y).`BYTES`_datainst[j!`%`_num_.0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)])] -[visit_exp $zbytes_(zt, c)] -[visit_exp zt] -[visit_id zt] not free -[visit_exp c] -[visit_id c] not free -[visit_exp $data(z, y).`BYTES`_datainst[j!`%`_num_.0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]] -[visit_exp $data(z, y).`BYTES`_datainst] -[visit_exp $data(z, y)] -[visit_exp z] -[visit_id z] not free -[visit_exp y] -[visit_id y] not free -[visit_exp j!`%`_num_.0] -[visit_exp j!`%`_num_] -[visit_exp j] -[visit_id j] not free -[visit_exp ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] -[visit_exp (($zsize(zt) : nat <:> rat) / (8 : nat <:> rat))] -[visit_exp ($zsize(zt) : nat <:> rat)] -[visit_exp $zsize(zt)] -[visit_exp zt] -[visit_id zt] not free -[visit_exp (8 : nat <:> rat)] -[visit_exp 8] -[check_dims] ht -[visit_exp [`REF.NULL`_instr(ht) `EXTERN.CONVERT_ANY`_instr]] -[visit_exp `REF.NULL`_instr(ht)] -[visit_exp (ht)] -[visit_exp ht] -[visit_id ht] -[visit_exp `EXTERN.CONVERT_ANY`_instr] -[visit_exp ()] -[visit_exp [`REF.NULL`_instr(`EXTERN`_heaptype)]] -[visit_exp `REF.NULL`_instr(`EXTERN`_heaptype)] -[visit_exp (`EXTERN`_heaptype)] -[visit_exp `EXTERN`_heaptype] -[visit_exp ()] -[check_dims] addrref -[visit_exp [(addrref : addrref <: instr) `EXTERN.CONVERT_ANY`_instr]] -[visit_exp (addrref : addrref <: instr)] -[visit_exp addrref] -[visit_id addrref] -[visit_exp `EXTERN.CONVERT_ANY`_instr] -[visit_exp ()] -[visit_exp [`REF.EXTERN`_instr(addrref)]] -[visit_exp `REF.EXTERN`_instr(addrref)] -[visit_exp (addrref)] -[visit_exp addrref] -[visit_id addrref] not free -[check_dims] ht -[visit_exp [`REF.NULL`_instr(ht) `ANY.CONVERT_EXTERN`_instr]] -[visit_exp `REF.NULL`_instr(ht)] -[visit_exp (ht)] -[visit_exp ht] -[visit_id ht] -[visit_exp `ANY.CONVERT_EXTERN`_instr] -[visit_exp ()] -[visit_exp [`REF.NULL`_instr(`ANY`_heaptype)]] -[visit_exp `REF.NULL`_instr(`ANY`_heaptype)] -[visit_exp (`ANY`_heaptype)] -[visit_exp `ANY`_heaptype] -[visit_exp ()] -[check_dims] addrref -[visit_exp [`REF.EXTERN`_instr(addrref) `ANY.CONVERT_EXTERN`_instr]] -[visit_exp `REF.EXTERN`_instr(addrref)] -[visit_exp (addrref)] -[visit_exp addrref] -[visit_id addrref] -[visit_exp `ANY.CONVERT_EXTERN`_instr] -[visit_exp ()] -[visit_exp [(addrref : addrref <: instr)]] -[visit_exp (addrref : addrref <: instr)] -[visit_exp addrref] -[visit_id addrref] not free -[check_dims] c c_1 nt unop -[visit_exp [`CONST`_instr(nt, c_1) `UNOP`_instr(nt, unop)]] -[visit_exp `CONST`_instr(nt, c_1)] -[visit_exp (nt, c_1)] -[visit_exp nt] -[visit_id nt] -[visit_exp c_1] -[visit_id c_1] -[visit_exp `UNOP`_instr(nt, unop)] -[visit_exp (nt, unop)] -[visit_exp nt] -[visit_id nt] not free -[visit_exp unop] -[visit_id unop] -[visit_exp [`CONST`_instr(nt, c)]] -[visit_exp `CONST`_instr(nt, c)] -[visit_exp (nt, c)] -[visit_exp nt] -[visit_id nt] not free -[visit_exp c] -[visit_id c] -[visit_exp (c <- $unop_(nt, unop, c_1))] -[visit_exp c] -[visit_id c] not free -[visit_exp $unop_(nt, unop, c_1)] -[visit_exp nt] -[visit_id nt] not free -[visit_exp unop] -[visit_id unop] not free -[visit_exp c_1] -[visit_id c_1] not free -[check_dims] c_1 nt unop -[visit_exp [`CONST`_instr(nt, c_1) `UNOP`_instr(nt, unop)]] -[visit_exp `CONST`_instr(nt, c_1)] -[visit_exp (nt, c_1)] -[visit_exp nt] -[visit_id nt] -[visit_exp c_1] -[visit_id c_1] -[visit_exp `UNOP`_instr(nt, unop)] -[visit_exp (nt, unop)] -[visit_exp nt] -[visit_id nt] not free -[visit_exp unop] -[visit_id unop] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[visit_exp ($unop_(nt, unop, c_1) = [])] -[visit_exp $unop_(nt, unop, c_1)] -[visit_exp nt] -[visit_id nt] not free -[visit_exp unop] -[visit_id unop] not free -[visit_exp c_1] -[visit_id c_1] not free -[visit_exp []] -[check_dims] binop c c_1 c_2 nt -[visit_exp [`CONST`_instr(nt, c_1) `CONST`_instr(nt, c_2) `BINOP`_instr(nt, binop)]] -[visit_exp `CONST`_instr(nt, c_1)] -[visit_exp (nt, c_1)] -[visit_exp nt] -[visit_id nt] -[visit_exp c_1] -[visit_id c_1] -[visit_exp `CONST`_instr(nt, c_2)] -[visit_exp (nt, c_2)] -[visit_exp nt] -[visit_id nt] not free -[visit_exp c_2] -[visit_id c_2] -[visit_exp `BINOP`_instr(nt, binop)] -[visit_exp (nt, binop)] -[visit_exp nt] -[visit_id nt] not free -[visit_exp binop] -[visit_id binop] -[visit_exp [`CONST`_instr(nt, c)]] -[visit_exp `CONST`_instr(nt, c)] -[visit_exp (nt, c)] -[visit_exp nt] -[visit_id nt] not free -[visit_exp c] -[visit_id c] -[visit_exp (c <- $binop_(nt, binop, c_1, c_2))] -[visit_exp c] -[visit_id c] not free -[visit_exp $binop_(nt, binop, c_1, c_2)] -[visit_exp nt] -[visit_id nt] not free -[visit_exp binop] -[visit_id binop] not free -[visit_exp c_1] -[visit_id c_1] not free -[visit_exp c_2] -[visit_id c_2] not free -[check_dims] binop c_1 c_2 nt -[visit_exp [`CONST`_instr(nt, c_1) `CONST`_instr(nt, c_2) `BINOP`_instr(nt, binop)]] -[visit_exp `CONST`_instr(nt, c_1)] -[visit_exp (nt, c_1)] -[visit_exp nt] -[visit_id nt] -[visit_exp c_1] -[visit_id c_1] -[visit_exp `CONST`_instr(nt, c_2)] -[visit_exp (nt, c_2)] -[visit_exp nt] -[visit_id nt] not free -[visit_exp c_2] -[visit_id c_2] -[visit_exp `BINOP`_instr(nt, binop)] -[visit_exp (nt, binop)] -[visit_exp nt] -[visit_id nt] not free -[visit_exp binop] -[visit_id binop] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[visit_exp ($binop_(nt, binop, c_1, c_2) = [])] -[visit_exp $binop_(nt, binop, c_1, c_2)] -[visit_exp nt] -[visit_id nt] not free -[visit_exp binop] -[visit_id binop] not free -[visit_exp c_1] -[visit_id c_1] not free -[visit_exp c_2] -[visit_id c_2] not free -[visit_exp []] -[check_dims] c c_1 nt testop -[visit_exp [`CONST`_instr(nt, c_1) `TESTOP`_instr(nt, testop)]] -[visit_exp `CONST`_instr(nt, c_1)] -[visit_exp (nt, c_1)] -[visit_exp nt] -[visit_id nt] -[visit_exp c_1] -[visit_id c_1] -[visit_exp `TESTOP`_instr(nt, testop)] -[visit_exp (nt, testop)] -[visit_exp nt] -[visit_id nt] not free -[visit_exp testop] -[visit_id testop] -[visit_exp [`CONST`_instr(`I32`_numtype, c)]] -[visit_exp `CONST`_instr(`I32`_numtype, c)] -[visit_exp (`I32`_numtype, c)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp c] -[visit_id c] -[visit_exp (c = $testop_(nt, testop, c_1))] -[visit_exp c] -[visit_id c] not free -[visit_exp $testop_(nt, testop, c_1)] -[visit_exp nt] -[visit_id nt] not free -[visit_exp testop] -[visit_id testop] not free -[visit_exp c_1] -[visit_id c_1] not free -[check_dims] c c_1 c_2 nt relop -[visit_exp [`CONST`_instr(nt, c_1) `CONST`_instr(nt, c_2) `RELOP`_instr(nt, relop)]] -[visit_exp `CONST`_instr(nt, c_1)] -[visit_exp (nt, c_1)] -[visit_exp nt] -[visit_id nt] -[visit_exp c_1] -[visit_id c_1] -[visit_exp `CONST`_instr(nt, c_2)] -[visit_exp (nt, c_2)] -[visit_exp nt] -[visit_id nt] not free -[visit_exp c_2] -[visit_id c_2] -[visit_exp `RELOP`_instr(nt, relop)] -[visit_exp (nt, relop)] -[visit_exp nt] -[visit_id nt] not free -[visit_exp relop] -[visit_id relop] -[visit_exp [`CONST`_instr(`I32`_numtype, c)]] -[visit_exp `CONST`_instr(`I32`_numtype, c)] -[visit_exp (`I32`_numtype, c)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp c] -[visit_id c] -[visit_exp (c = $relop_(nt, relop, c_1, c_2))] -[visit_exp c] -[visit_id c] not free -[visit_exp $relop_(nt, relop, c_1, c_2)] -[visit_exp nt] -[visit_id nt] not free -[visit_exp relop] -[visit_id relop] not free -[visit_exp c_1] -[visit_id c_1] not free -[visit_exp c_2] -[visit_id c_2] not free -[check_dims] c c_1 cvtop nt_1 nt_2 -[visit_exp [`CONST`_instr(nt_1, c_1) `CVTOP`_instr(nt_2, nt_1, cvtop)]] -[visit_exp `CONST`_instr(nt_1, c_1)] -[visit_exp (nt_1, c_1)] -[visit_exp nt_1] -[visit_id nt_1] -[visit_exp c_1] -[visit_id c_1] -[visit_exp `CVTOP`_instr(nt_2, nt_1, cvtop)] -[visit_exp (nt_2, nt_1, cvtop)] -[visit_exp nt_2] -[visit_id nt_2] -[visit_exp nt_1] -[visit_id nt_1] not free -[visit_exp cvtop] -[visit_id cvtop] -[visit_exp [`CONST`_instr(nt_2, c)]] -[visit_exp `CONST`_instr(nt_2, c)] -[visit_exp (nt_2, c)] -[visit_exp nt_2] -[visit_id nt_2] not free -[visit_exp c] -[visit_id c] -[visit_exp (c <- $cvtop__(nt_1, nt_2, cvtop, c_1))] -[visit_exp c] -[visit_id c] not free -[visit_exp $cvtop__(nt_1, nt_2, cvtop, c_1)] -[visit_exp nt_1] -[visit_id nt_1] not free -[visit_exp nt_2] -[visit_id nt_2] not free -[visit_exp cvtop] -[visit_id cvtop] not free -[visit_exp c_1] -[visit_id c_1] not free -[check_dims] c_1 cvtop nt_1 nt_2 -[visit_exp [`CONST`_instr(nt_1, c_1) `CVTOP`_instr(nt_2, nt_1, cvtop)]] -[visit_exp `CONST`_instr(nt_1, c_1)] -[visit_exp (nt_1, c_1)] -[visit_exp nt_1] -[visit_id nt_1] -[visit_exp c_1] -[visit_id c_1] -[visit_exp `CVTOP`_instr(nt_2, nt_1, cvtop)] -[visit_exp (nt_2, nt_1, cvtop)] -[visit_exp nt_2] -[visit_id nt_2] -[visit_exp nt_1] -[visit_id nt_1] not free -[visit_exp cvtop] -[visit_id cvtop] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[visit_exp ($cvtop__(nt_1, nt_2, cvtop, c_1) = [])] -[visit_exp $cvtop__(nt_1, nt_2, cvtop, c_1)] -[visit_exp nt_1] -[visit_id nt_1] not free -[visit_exp nt_2] -[visit_id nt_2] not free -[visit_exp cvtop] -[visit_id cvtop] not free -[visit_exp c_1] -[visit_id c_1] not free -[visit_exp []] -[check_dims] c c_1 vvunop -[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `VVUNOP`_instr(`V128`_vectype, vvunop)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] -[visit_exp (`V128`_vectype, c_1)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c_1] -[visit_id c_1] -[visit_exp `VVUNOP`_instr(`V128`_vectype, vvunop)] -[visit_exp (`V128`_vectype, vvunop)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp vvunop] -[visit_id vvunop] -[visit_exp [`VCONST`_instr(`V128`_vectype, c)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c)] -[visit_exp (`V128`_vectype, c)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c] -[visit_id c] -[visit_exp (c <- $vvunop_(`V128`_vectype, vvunop, c_1))] -[visit_exp c] -[visit_id c] not free -[visit_exp $vvunop_(`V128`_vectype, vvunop, c_1)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp vvunop] -[visit_id vvunop] not free -[visit_exp c_1] -[visit_id c_1] not free -[check_dims] c c_1 c_2 vvbinop -[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `VCONST`_instr(`V128`_vectype, c_2) `VVBINOP`_instr(`V128`_vectype, vvbinop)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] -[visit_exp (`V128`_vectype, c_1)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c_1] -[visit_id c_1] -[visit_exp `VCONST`_instr(`V128`_vectype, c_2)] -[visit_exp (`V128`_vectype, c_2)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c_2] -[visit_id c_2] -[visit_exp `VVBINOP`_instr(`V128`_vectype, vvbinop)] -[visit_exp (`V128`_vectype, vvbinop)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp vvbinop] -[visit_id vvbinop] -[visit_exp [`VCONST`_instr(`V128`_vectype, c)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c)] -[visit_exp (`V128`_vectype, c)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c] -[visit_id c] -[visit_exp (c <- $vvbinop_(`V128`_vectype, vvbinop, c_1, c_2))] -[visit_exp c] -[visit_id c] not free -[visit_exp $vvbinop_(`V128`_vectype, vvbinop, c_1, c_2)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp vvbinop] -[visit_id vvbinop] not free -[visit_exp c_1] -[visit_id c_1] not free -[visit_exp c_2] -[visit_id c_2] not free -[check_dims] c c_1 c_2 c_3 vvternop -[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `VCONST`_instr(`V128`_vectype, c_2) `VCONST`_instr(`V128`_vectype, c_3) `VVTERNOP`_instr(`V128`_vectype, vvternop)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] -[visit_exp (`V128`_vectype, c_1)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c_1] -[visit_id c_1] -[visit_exp `VCONST`_instr(`V128`_vectype, c_2)] -[visit_exp (`V128`_vectype, c_2)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c_2] -[visit_id c_2] -[visit_exp `VCONST`_instr(`V128`_vectype, c_3)] -[visit_exp (`V128`_vectype, c_3)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c_3] -[visit_id c_3] -[visit_exp `VVTERNOP`_instr(`V128`_vectype, vvternop)] -[visit_exp (`V128`_vectype, vvternop)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp vvternop] -[visit_id vvternop] -[visit_exp [`VCONST`_instr(`V128`_vectype, c)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c)] -[visit_exp (`V128`_vectype, c)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c] -[visit_id c] -[visit_exp (c <- $vvternop_(`V128`_vectype, vvternop, c_1, c_2, c_3))] -[visit_exp c] -[visit_id c] not free -[visit_exp $vvternop_(`V128`_vectype, vvternop, c_1, c_2, c_3)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp vvternop] -[visit_id vvternop] not free -[visit_exp c_1] -[visit_id c_1] not free -[visit_exp c_2] -[visit_id c_2] not free -[visit_exp c_3] -[visit_id c_3] not free -[check_dims] c c_1 -[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `VVTESTOP`_instr(`V128`_vectype, `ANY_TRUE`_vvtestop)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] -[visit_exp (`V128`_vectype, c_1)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c_1] -[visit_id c_1] -[visit_exp `VVTESTOP`_instr(`V128`_vectype, `ANY_TRUE`_vvtestop)] -[visit_exp (`V128`_vectype, `ANY_TRUE`_vvtestop)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp `ANY_TRUE`_vvtestop] -[visit_exp ()] -[visit_exp [`CONST`_instr(`I32`_numtype, c)]] -[visit_exp `CONST`_instr(`I32`_numtype, c)] -[visit_exp (`I32`_numtype, c)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp c] -[visit_id c] -[visit_exp (c = $inez_($vsize(`V128`_vectype), c_1))] -[visit_exp c] -[visit_id c] not free -[visit_exp $inez_($vsize(`V128`_vectype), c_1)] -[visit_exp $vsize(`V128`_vectype)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c_1] -[visit_id c_1] not free -[check_dims] c c_1 sh vunop -[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `VUNOP`_instr(sh, vunop)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] -[visit_exp (`V128`_vectype, c_1)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c_1] -[visit_id c_1] -[visit_exp `VUNOP`_instr(sh, vunop)] -[visit_exp (sh, vunop)] -[visit_exp sh] -[visit_id sh] -[visit_exp vunop] -[visit_id vunop] -[visit_exp [`VCONST`_instr(`V128`_vectype, c)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c)] -[visit_exp (`V128`_vectype, c)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c] -[visit_id c] -[visit_exp (c <- $vunop_(sh, vunop, c_1))] -[visit_exp c] -[visit_id c] not free -[visit_exp $vunop_(sh, vunop, c_1)] -[visit_exp sh] -[visit_id sh] not free -[visit_exp vunop] -[visit_id vunop] not free -[visit_exp c_1] -[visit_id c_1] not free -[check_dims] c_1 sh vunop -[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `VUNOP`_instr(sh, vunop)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] -[visit_exp (`V128`_vectype, c_1)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c_1] -[visit_id c_1] -[visit_exp `VUNOP`_instr(sh, vunop)] -[visit_exp (sh, vunop)] -[visit_exp sh] -[visit_id sh] -[visit_exp vunop] -[visit_id vunop] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[visit_exp ($vunop_(sh, vunop, c_1) = [])] -[visit_exp $vunop_(sh, vunop, c_1)] -[visit_exp sh] -[visit_id sh] not free -[visit_exp vunop] -[visit_id vunop] not free -[visit_exp c_1] -[visit_id c_1] not free -[visit_exp []] -[check_dims] c c_1 c_2 sh vbinop -[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `VCONST`_instr(`V128`_vectype, c_2) `VBINOP`_instr(sh, vbinop)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] -[visit_exp (`V128`_vectype, c_1)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c_1] -[visit_id c_1] -[visit_exp `VCONST`_instr(`V128`_vectype, c_2)] -[visit_exp (`V128`_vectype, c_2)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c_2] -[visit_id c_2] -[visit_exp `VBINOP`_instr(sh, vbinop)] -[visit_exp (sh, vbinop)] -[visit_exp sh] -[visit_id sh] -[visit_exp vbinop] -[visit_id vbinop] -[visit_exp [`VCONST`_instr(`V128`_vectype, c)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c)] -[visit_exp (`V128`_vectype, c)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c] -[visit_id c] -[visit_exp (c <- $vbinop_(sh, vbinop, c_1, c_2))] -[visit_exp c] -[visit_id c] not free -[visit_exp $vbinop_(sh, vbinop, c_1, c_2)] -[visit_exp sh] -[visit_id sh] not free -[visit_exp vbinop] -[visit_id vbinop] not free -[visit_exp c_1] -[visit_id c_1] not free -[visit_exp c_2] -[visit_id c_2] not free -[check_dims] c_1 c_2 sh vbinop -[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `VCONST`_instr(`V128`_vectype, c_2) `VBINOP`_instr(sh, vbinop)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] -[visit_exp (`V128`_vectype, c_1)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c_1] -[visit_id c_1] -[visit_exp `VCONST`_instr(`V128`_vectype, c_2)] -[visit_exp (`V128`_vectype, c_2)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c_2] -[visit_id c_2] -[visit_exp `VBINOP`_instr(sh, vbinop)] -[visit_exp (sh, vbinop)] -[visit_exp sh] -[visit_id sh] -[visit_exp vbinop] -[visit_id vbinop] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[visit_exp ($vbinop_(sh, vbinop, c_1, c_2) = [])] -[visit_exp $vbinop_(sh, vbinop, c_1, c_2)] -[visit_exp sh] -[visit_id sh] not free -[visit_exp vbinop] -[visit_id vbinop] not free -[visit_exp c_1] -[visit_id c_1] not free -[visit_exp c_2] -[visit_id c_2] not free -[visit_exp []] -[check_dims] c c_1 c_2 c_3 sh vternop -[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `VCONST`_instr(`V128`_vectype, c_2) `VCONST`_instr(`V128`_vectype, c_3) `VTERNOP`_instr(sh, vternop)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] -[visit_exp (`V128`_vectype, c_1)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c_1] -[visit_id c_1] -[visit_exp `VCONST`_instr(`V128`_vectype, c_2)] -[visit_exp (`V128`_vectype, c_2)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c_2] -[visit_id c_2] -[visit_exp `VCONST`_instr(`V128`_vectype, c_3)] -[visit_exp (`V128`_vectype, c_3)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c_3] -[visit_id c_3] -[visit_exp `VTERNOP`_instr(sh, vternop)] -[visit_exp (sh, vternop)] -[visit_exp sh] -[visit_id sh] -[visit_exp vternop] -[visit_id vternop] -[visit_exp [`VCONST`_instr(`V128`_vectype, c)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c)] -[visit_exp (`V128`_vectype, c)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c] -[visit_id c] -[visit_exp (c <- $vternop_(sh, vternop, c_1, c_2, c_3))] -[visit_exp c] -[visit_id c] not free -[visit_exp $vternop_(sh, vternop, c_1, c_2, c_3)] -[visit_exp sh] -[visit_id sh] not free -[visit_exp vternop] -[visit_id vternop] not free -[visit_exp c_1] -[visit_id c_1] not free -[visit_exp c_2] -[visit_id c_2] not free -[visit_exp c_3] -[visit_id c_3] not free -[check_dims] c_1 c_2 c_3 sh vternop -[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `VCONST`_instr(`V128`_vectype, c_2) `VCONST`_instr(`V128`_vectype, c_3) `VTERNOP`_instr(sh, vternop)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] -[visit_exp (`V128`_vectype, c_1)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c_1] -[visit_id c_1] -[visit_exp `VCONST`_instr(`V128`_vectype, c_2)] -[visit_exp (`V128`_vectype, c_2)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c_2] -[visit_id c_2] -[visit_exp `VCONST`_instr(`V128`_vectype, c_3)] -[visit_exp (`V128`_vectype, c_3)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c_3] -[visit_id c_3] -[visit_exp `VTERNOP`_instr(sh, vternop)] -[visit_exp (sh, vternop)] -[visit_exp sh] -[visit_id sh] -[visit_exp vternop] -[visit_id vternop] -[visit_exp [`TRAP`_instr]] -[visit_exp `TRAP`_instr] -[visit_exp ()] -[visit_exp ($vternop_(sh, vternop, c_1, c_2, c_3) = [])] -[visit_exp $vternop_(sh, vternop, c_1, c_2, c_3)] -[visit_exp sh] -[visit_id sh] not free -[visit_exp vternop] -[visit_id vternop] not free -[visit_exp c_1] -[visit_id c_1] not free -[visit_exp c_2] -[visit_id c_2] not free -[visit_exp c_3] -[visit_id c_3] not free -[visit_exp []] -[check_dims] Jnn M c c_1 i -[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `VTESTOP`_instr(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), `ALL_TRUE`_vtestop_)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] -[visit_exp (`V128`_vectype, c_1)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c_1] -[visit_id c_1] -[visit_exp `VTESTOP`_instr(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), `ALL_TRUE`_vtestop_)] -[visit_exp (`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), `ALL_TRUE`_vtestop_)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp `ALL_TRUE`_vtestop_] -[visit_exp ()] -[visit_exp [`CONST`_instr(`I32`_numtype, c)]] -[visit_exp `CONST`_instr(`I32`_numtype, c)] -[visit_exp (`I32`_numtype, c)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp c] -[visit_id c] -[visit_exp (i*{i <- `i*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1))] -[visit_exp i*{i <- `i*`}] -[scope_enter i] -[visit_exp i] -[visit_id i] not free -[visit_id i] not free -[scope_exit i] -[visit_exp `i*`] -[visit_id i*] no dims -[visit_id i*] -[visit_exp $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)] -[visit_exp `%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp ((Jnn : Jnn <: lanetype), `%`_dim(M))] -[visit_exp (Jnn : Jnn <: lanetype)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp c_1] -[visit_id c_1] not free -[visit_exp (c!`%`_num_.0 = $prod($inez_($jsizenn(Jnn), i)!`%`_u32.0*{i <- `i*`}))] -[visit_exp c!`%`_num_.0] -[visit_exp c!`%`_num_] -[visit_exp c] -[visit_id c] not free -[visit_exp $prod($inez_($jsizenn(Jnn), i)!`%`_u32.0*{i <- `i*`})] -[visit_exp $inez_($jsizenn(Jnn), i)!`%`_u32.0*{i <- `i*`}] -[scope_enter i] -[visit_exp $inez_($jsizenn(Jnn), i)!`%`_u32.0] -[visit_exp $inez_($jsizenn(Jnn), i)!`%`_u32] -[visit_exp $inez_($jsizenn(Jnn), i)] -[visit_exp $jsizenn(Jnn)] -[visit_exp Jnn] -[visit_id Jnn] not free -[visit_exp i] -[visit_id i] not free -[visit_id i] not free -[scope_exit i] -[visit_exp `i*`] -[visit_id i*] not free -[visit_id i*] no dims -[check_dims] c c_1 c_2 sh vrelop -[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `VCONST`_instr(`V128`_vectype, c_2) `VRELOP`_instr(sh, vrelop)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] -[visit_exp (`V128`_vectype, c_1)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c_1] -[visit_id c_1] -[visit_exp `VCONST`_instr(`V128`_vectype, c_2)] -[visit_exp (`V128`_vectype, c_2)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c_2] -[visit_id c_2] -[visit_exp `VRELOP`_instr(sh, vrelop)] -[visit_exp (sh, vrelop)] -[visit_exp sh] -[visit_id sh] -[visit_exp vrelop] -[visit_id vrelop] -[visit_exp [`VCONST`_instr(`V128`_vectype, c)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c)] -[visit_exp (`V128`_vectype, c)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c] -[visit_id c] -[visit_exp (c = $vrelop_(sh, vrelop, c_1, c_2))] -[visit_exp c] -[visit_id c] not free -[visit_exp $vrelop_(sh, vrelop, c_1, c_2)] -[visit_exp sh] -[visit_id sh] not free -[visit_exp vrelop] -[visit_id vrelop] not free -[visit_exp c_1] -[visit_id c_1] not free -[visit_exp c_2] -[visit_id c_2] not free -[check_dims] c c_1 i sh vshiftop -[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `CONST`_instr(`I32`_numtype, i) `VSHIFTOP`_instr(sh, vshiftop)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] -[visit_exp (`V128`_vectype, c_1)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c_1] -[visit_id c_1] -[visit_exp `CONST`_instr(`I32`_numtype, i)] -[visit_exp (`I32`_numtype, i)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i] -[visit_id i] -[visit_exp `VSHIFTOP`_instr(sh, vshiftop)] -[visit_exp (sh, vshiftop)] -[visit_exp sh] -[visit_id sh] -[visit_exp vshiftop] -[visit_id vshiftop] -[visit_exp [`VCONST`_instr(`V128`_vectype, c)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c)] -[visit_exp (`V128`_vectype, c)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c] -[visit_id c] -[visit_exp (c = $vshiftop_(sh, vshiftop, c_1, i))] -[visit_exp c] -[visit_id c] not free -[visit_exp $vshiftop_(sh, vshiftop, c_1, i)] -[visit_exp sh] -[visit_id sh] not free -[visit_exp vshiftop] -[visit_id vshiftop] not free -[visit_exp c_1] -[visit_id c_1] not free -[visit_exp i] -[visit_id i] not free -[check_dims] c c_1 sh -[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `VBITMASK`_instr(sh)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] -[visit_exp (`V128`_vectype, c_1)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c_1] -[visit_id c_1] -[visit_exp `VBITMASK`_instr(sh)] -[visit_exp (sh)] -[visit_exp sh] -[visit_id sh] -[visit_exp [`CONST`_instr(`I32`_numtype, c)]] -[visit_exp `CONST`_instr(`I32`_numtype, c)] -[visit_exp (`I32`_numtype, c)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp c] -[visit_id c] -[visit_exp (c = $vbitmaskop_(sh, c_1))] -[visit_exp c] -[visit_id c] not free -[visit_exp $vbitmaskop_(sh, c_1)] -[visit_exp sh] -[visit_id sh] not free -[visit_exp c_1] -[visit_id c_1] not free -[check_dims] c c_1 c_2 sh swizzlop -[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `VCONST`_instr(`V128`_vectype, c_2) `VSWIZZLOP`_instr(sh, swizzlop)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] -[visit_exp (`V128`_vectype, c_1)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c_1] -[visit_id c_1] -[visit_exp `VCONST`_instr(`V128`_vectype, c_2)] -[visit_exp (`V128`_vectype, c_2)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c_2] -[visit_id c_2] -[visit_exp `VSWIZZLOP`_instr(sh, swizzlop)] -[visit_exp (sh, swizzlop)] -[visit_exp sh] -[visit_id sh] -[visit_exp swizzlop] -[visit_id swizzlop] -[visit_exp [`VCONST`_instr(`V128`_vectype, c)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c)] -[visit_exp (`V128`_vectype, c)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c] -[visit_id c] -[visit_exp (c = $vswizzlop_(sh, swizzlop, c_1, c_2))] -[visit_exp c] -[visit_id c] not free -[visit_exp $vswizzlop_(sh, swizzlop, c_1, c_2)] -[visit_exp sh] -[visit_id sh] not free -[visit_exp swizzlop] -[visit_id swizzlop] not free -[visit_exp c_1] -[visit_id c_1] not free -[visit_exp c_2] -[visit_id c_2] not free -[check_dims] c c_1 c_2 i sh -[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `VCONST`_instr(`V128`_vectype, c_2) `VSHUFFLE`_instr(sh, i*{i <- `i*`})]] -[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] -[visit_exp (`V128`_vectype, c_1)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c_1] -[visit_id c_1] -[visit_exp `VCONST`_instr(`V128`_vectype, c_2)] -[visit_exp (`V128`_vectype, c_2)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c_2] -[visit_id c_2] -[visit_exp `VSHUFFLE`_instr(sh, i*{i <- `i*`})] -[visit_exp (sh, i*{i <- `i*`})] -[visit_exp sh] -[visit_id sh] -[visit_exp i*{i <- `i*`}] -[scope_enter i] -[visit_exp i] -[visit_id i] not free -[visit_id i] not free -[scope_exit i] -[visit_exp `i*`] -[visit_id i*] no dims -[visit_id i*] -[visit_exp [`VCONST`_instr(`V128`_vectype, c)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c)] -[visit_exp (`V128`_vectype, c)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c] -[visit_id c] -[visit_exp (c = $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2))] -[visit_exp c] -[visit_id c] not free -[visit_exp $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)] -[visit_exp sh] -[visit_id sh] not free -[visit_exp i*{i <- `i*`}] -[scope_enter i] -[visit_exp i] -[visit_id i] not free -[visit_id i] not free -[scope_exit i] -[visit_exp `i*`] -[visit_id i*] not free -[visit_id i*] no dims -[visit_exp c_1] -[visit_id c_1] not free -[visit_exp c_2] -[visit_id c_2] not free -[check_dims] Lnn M c c_1 -[visit_exp [`CONST`_instr($lunpack(Lnn), c_1) `VSPLAT`_instr(`%X%`_shape(Lnn, `%`_dim(M)))]] -[visit_exp `CONST`_instr($lunpack(Lnn), c_1)] -[visit_exp ($lunpack(Lnn), c_1)] -[visit_exp $lunpack(Lnn)] -[visit_exp Lnn] -[visit_id Lnn] -[visit_exp c_1] -[visit_id c_1] -[visit_exp `VSPLAT`_instr(`%X%`_shape(Lnn, `%`_dim(M)))] -[visit_exp (`%X%`_shape(Lnn, `%`_dim(M)))] -[visit_exp `%X%`_shape(Lnn, `%`_dim(M))] -[visit_exp (Lnn, `%`_dim(M))] -[visit_exp Lnn] -[visit_id Lnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp [`VCONST`_instr(`V128`_vectype, c)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c)] -[visit_exp (`V128`_vectype, c)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c] -[visit_id c] -[visit_exp (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{}))] -[visit_exp c] -[visit_id c] not free -[visit_exp $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})] -[visit_exp `%X%`_shape(Lnn, `%`_dim(M))] -[visit_exp (Lnn, `%`_dim(M))] -[visit_exp Lnn] -[visit_id Lnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp $lpacknum_(Lnn, c_1)^M{}] -[visit_exp $lpacknum_(Lnn, c_1)] -[visit_exp Lnn] -[visit_id Lnn] not free -[visit_exp c_1] -[visit_id c_1] not free -[visit_exp M] -[visit_id M] not free -[check_dims] M c_1 c_2 i nt -[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `VEXTRACT_LANE`_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] -[visit_exp (`V128`_vectype, c_1)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c_1] -[visit_id c_1] -[visit_exp `VEXTRACT_LANE`_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)] -[visit_exp (`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)] -[visit_exp `%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))] -[visit_exp ((nt : numtype <: lanetype), `%`_dim(M))] -[visit_exp (nt : numtype <: lanetype)] -[visit_exp nt] -[visit_id nt] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp ?()] -[visit_exp i] -[visit_id i] -[visit_exp [`CONST`_instr(nt, c_2)]] -[visit_exp `CONST`_instr(nt, c_2)] -[visit_exp (nt, c_2)] -[visit_exp nt] -[visit_id nt] not free -[visit_exp c_2] -[visit_id c_2] -[visit_exp (c_2 = $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_laneidx.0])] -[visit_exp c_2] -[visit_id c_2] not free -[visit_exp $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_laneidx.0]] -[visit_exp $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)] -[visit_exp `%X%`_shape((nt : numtype <: lanetype), `%`_dim(M))] -[visit_exp ((nt : numtype <: lanetype), `%`_dim(M))] -[visit_exp (nt : numtype <: lanetype)] -[visit_exp nt] -[visit_id nt] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp c_1] -[visit_id c_1] not free -[visit_exp i!`%`_laneidx.0] -[visit_exp i!`%`_laneidx] -[visit_exp i] -[visit_id i] not free -[check_dims] M c_1 c_2 i pt sx -[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `VEXTRACT_LANE`_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] -[visit_exp (`V128`_vectype, c_1)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c_1] -[visit_id c_1] -[visit_exp `VEXTRACT_LANE`_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)] -[visit_exp (`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)] -[visit_exp `%X%`_shape((pt : packtype <: lanetype), `%`_dim(M))] -[visit_exp ((pt : packtype <: lanetype), `%`_dim(M))] -[visit_exp (pt : packtype <: lanetype)] -[visit_exp pt] -[visit_id pt] -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp ?(sx)] -[visit_exp sx] -[visit_id sx] -[visit_exp i] -[visit_id i] -[visit_exp [`CONST`_instr(`I32`_numtype, c_2)]] -[visit_exp `CONST`_instr(`I32`_numtype, c_2)] -[visit_exp (`I32`_numtype, c_2)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp c_2] -[visit_id c_2] -[visit_exp (c_2 = $extend__($psize(pt), 32, sx, $lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_laneidx.0]))] -[visit_exp c_2] -[visit_id c_2] not free -[visit_exp $extend__($psize(pt), 32, sx, $lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_laneidx.0])] -[visit_exp $psize(pt)] -[visit_exp pt] -[visit_id pt] not free -[visit_exp 32] -[visit_exp sx] -[visit_id sx] not free -[visit_exp $lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_laneidx.0]] -[visit_exp $lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)] -[visit_exp `%X%`_shape((pt : packtype <: lanetype), `%`_dim(M))] -[visit_exp ((pt : packtype <: lanetype), `%`_dim(M))] -[visit_exp (pt : packtype <: lanetype)] -[visit_exp pt] -[visit_id pt] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp c_1] -[visit_id c_1] not free -[visit_exp i!`%`_laneidx.0] -[visit_exp i!`%`_laneidx] -[visit_exp i] -[visit_id i] not free -[check_dims] Lnn M c c_1 c_2 i -[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `CONST`_instr($lunpack(Lnn), c_2) `VREPLACE_LANE`_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] -[visit_exp (`V128`_vectype, c_1)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c_1] -[visit_id c_1] -[visit_exp `CONST`_instr($lunpack(Lnn), c_2)] -[visit_exp ($lunpack(Lnn), c_2)] -[visit_exp $lunpack(Lnn)] -[visit_exp Lnn] -[visit_id Lnn] -[visit_exp c_2] -[visit_id c_2] -[visit_exp `VREPLACE_LANE`_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)] -[visit_exp (`%X%`_shape(Lnn, `%`_dim(M)), i)] -[visit_exp `%X%`_shape(Lnn, `%`_dim(M))] -[visit_exp (Lnn, `%`_dim(M))] -[visit_exp Lnn] -[visit_id Lnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] -[visit_exp i] -[visit_id i] -[visit_exp [`VCONST`_instr(`V128`_vectype, c)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c)] -[visit_exp (`V128`_vectype, c)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c] -[visit_id c] -[visit_exp (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[i!`%`_laneidx.0] = $lpacknum_(Lnn, c_2)]))] -[visit_exp c] -[visit_id c] not free -[visit_exp $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[i!`%`_laneidx.0] = $lpacknum_(Lnn, c_2)])] -[visit_exp `%X%`_shape(Lnn, `%`_dim(M))] -[visit_exp (Lnn, `%`_dim(M))] -[visit_exp Lnn] -[visit_id Lnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[i!`%`_laneidx.0] = $lpacknum_(Lnn, c_2)]] -[visit_exp $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)] -[visit_exp `%X%`_shape(Lnn, `%`_dim(M))] -[visit_exp (Lnn, `%`_dim(M))] -[visit_exp Lnn] -[visit_id Lnn] not free -[visit_exp `%`_dim(M)] -[visit_exp (M)] -[visit_exp M] -[visit_id M] not free -[visit_exp c_1] -[visit_id c_1] not free -[visit_exp i!`%`_laneidx.0] -[visit_exp i!`%`_laneidx] -[visit_exp i] -[visit_id i] not free -[visit_exp $lpacknum_(Lnn, c_2)] -[visit_exp Lnn] -[visit_id Lnn] not free -[visit_exp c_2] -[visit_id c_2] not free -[check_dims] c c_1 sh_1 sh_2 vextunop -[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `VEXTUNOP`_instr(sh_2, sh_1, vextunop)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] -[visit_exp (`V128`_vectype, c_1)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c_1] -[visit_id c_1] -[visit_exp `VEXTUNOP`_instr(sh_2, sh_1, vextunop)] -[visit_exp (sh_2, sh_1, vextunop)] -[visit_exp sh_2] -[visit_id sh_2] -[visit_exp sh_1] -[visit_id sh_1] -[visit_exp vextunop] -[visit_id vextunop] -[visit_exp [`VCONST`_instr(`V128`_vectype, c)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c)] -[visit_exp (`V128`_vectype, c)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c] -[visit_id c] -[visit_exp ($vextunop__(sh_1, sh_2, vextunop, c_1) = c)] -[visit_exp $vextunop__(sh_1, sh_2, vextunop, c_1)] -[visit_exp sh_1] -[visit_id sh_1] not free -[visit_exp sh_2] -[visit_id sh_2] not free -[visit_exp vextunop] -[visit_id vextunop] not free -[visit_exp c_1] -[visit_id c_1] not free -[visit_exp c] -[visit_id c] not free -[check_dims] c c_1 c_2 sh_1 sh_2 vextbinop -[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `VCONST`_instr(`V128`_vectype, c_2) `VEXTBINOP`_instr(sh_2, sh_1, vextbinop)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] -[visit_exp (`V128`_vectype, c_1)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c_1] -[visit_id c_1] -[visit_exp `VCONST`_instr(`V128`_vectype, c_2)] -[visit_exp (`V128`_vectype, c_2)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c_2] -[visit_id c_2] -[visit_exp `VEXTBINOP`_instr(sh_2, sh_1, vextbinop)] -[visit_exp (sh_2, sh_1, vextbinop)] -[visit_exp sh_2] -[visit_id sh_2] -[visit_exp sh_1] -[visit_id sh_1] -[visit_exp vextbinop] -[visit_id vextbinop] -[visit_exp [`VCONST`_instr(`V128`_vectype, c)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c)] -[visit_exp (`V128`_vectype, c)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c] -[visit_id c] -[visit_exp ($vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c)] -[visit_exp $vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2)] -[visit_exp sh_1] -[visit_id sh_1] not free -[visit_exp sh_2] -[visit_id sh_2] not free -[visit_exp vextbinop] -[visit_id vextbinop] not free -[visit_exp c_1] -[visit_id c_1] not free -[visit_exp c_2] -[visit_id c_2] not free -[visit_exp c] -[visit_id c] not free -[check_dims] c c_1 c_2 c_3 sh_1 sh_2 vextternop -[visit_exp [`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)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] -[visit_exp (`V128`_vectype, c_1)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c_1] -[visit_id c_1] -[visit_exp `VCONST`_instr(`V128`_vectype, c_2)] -[visit_exp (`V128`_vectype, c_2)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c_2] -[visit_id c_2] -[visit_exp `VCONST`_instr(`V128`_vectype, c_3)] -[visit_exp (`V128`_vectype, c_3)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c_3] -[visit_id c_3] -[visit_exp `VEXTTERNOP`_instr(sh_2, sh_1, vextternop)] -[visit_exp (sh_2, sh_1, vextternop)] -[visit_exp sh_2] -[visit_id sh_2] -[visit_exp sh_1] -[visit_id sh_1] -[visit_exp vextternop] -[visit_id vextternop] -[visit_exp [`VCONST`_instr(`V128`_vectype, c)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c)] -[visit_exp (`V128`_vectype, c)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c] -[visit_id c] -[visit_exp ($vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c)] -[visit_exp $vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3)] -[visit_exp sh_1] -[visit_id sh_1] not free -[visit_exp sh_2] -[visit_id sh_2] not free -[visit_exp vextternop] -[visit_id vextternop] not free -[visit_exp c_1] -[visit_id c_1] not free -[visit_exp c_2] -[visit_id c_2] not free -[visit_exp c_3] -[visit_id c_3] not free -[visit_exp c] -[visit_id c] not free -[check_dims] c c_1 c_2 sh_1 sh_2 sx -[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `VCONST`_instr(`V128`_vectype, c_2) `VNARROW`_instr(sh_2, sh_1, sx)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] -[visit_exp (`V128`_vectype, c_1)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c_1] -[visit_id c_1] -[visit_exp `VCONST`_instr(`V128`_vectype, c_2)] -[visit_exp (`V128`_vectype, c_2)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c_2] -[visit_id c_2] -[visit_exp `VNARROW`_instr(sh_2, sh_1, sx)] -[visit_exp (sh_2, sh_1, sx)] -[visit_exp sh_2] -[visit_id sh_2] -[visit_exp sh_1] -[visit_id sh_1] -[visit_exp sx] -[visit_id sx] -[visit_exp [`VCONST`_instr(`V128`_vectype, c)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c)] -[visit_exp (`V128`_vectype, c)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c] -[visit_id c] -[visit_exp (c = $vnarrowop__(sh_1!`%`_ishape.0, sh_2!`%`_ishape.0, sx, c_1, c_2))] -[visit_exp c] -[visit_id c] not free -[visit_exp $vnarrowop__(sh_1!`%`_ishape.0, sh_2!`%`_ishape.0, sx, c_1, c_2)] -[visit_exp sh_1!`%`_ishape.0] -[visit_exp sh_1!`%`_ishape] -[visit_exp sh_1] -[visit_id sh_1] not free -[visit_exp sh_2!`%`_ishape.0] -[visit_exp sh_2!`%`_ishape] -[visit_exp sh_2] -[visit_id sh_2] not free -[visit_exp sx] -[visit_id sx] not free -[visit_exp c_1] -[visit_id c_1] not free -[visit_exp c_2] -[visit_id c_2] not free -[check_dims] c c_1 sh_1 sh_2 vcvtop -[visit_exp [`VCONST`_instr(`V128`_vectype, c_1) `VCVTOP`_instr(sh_2, sh_1, vcvtop)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c_1)] -[visit_exp (`V128`_vectype, c_1)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c_1] -[visit_id c_1] -[visit_exp `VCVTOP`_instr(sh_2, sh_1, vcvtop)] -[visit_exp (sh_2, sh_1, vcvtop)] -[visit_exp sh_2] -[visit_id sh_2] -[visit_exp sh_1] -[visit_id sh_1] -[visit_exp vcvtop] -[visit_id vcvtop] -[visit_exp [`VCONST`_instr(`V128`_vectype, c)]] -[visit_exp `VCONST`_instr(`V128`_vectype, c)] -[visit_exp (`V128`_vectype, c)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp c] -[visit_id c] -[visit_exp (c = $vcvtop__(sh_1, sh_2, vcvtop, c_1))] -[visit_exp c] -[visit_id c] not free -[visit_exp $vcvtop__(sh_1, sh_2, vcvtop, c_1)] -[visit_exp sh_1] -[visit_id sh_1] not free -[visit_exp sh_2] -[visit_id sh_2] not free -[visit_exp vcvtop] -[visit_id vcvtop] not free -[visit_exp c_1] -[visit_id c_1] not free -[check_dims] -[check_dims] instr val z z' -[visit_exp z] -[visit_id z] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] no dims -[visit_id instr*] -[visit_exp z'] -[visit_id z'] -[visit_exp val*{val <- `val*`}] -[scope_enter val] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp `val*`] -[visit_id val*] no dims -[visit_id val*] -[visit_exp (`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`}))] -[visit_exp `%;%`_config(z, instr*{instr <- `instr*`})] -[visit_exp (z, instr*{instr <- `instr*`})] -[visit_exp z] -[visit_id z] not free -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] not free -[visit_id instr*] no dims -[visit_exp `%;%`_config(z', (val : val <: instr)*{val <- `val*`})] -[visit_exp (z', (val : val <: instr)*{val <- `val*`})] -[visit_exp z'] -[visit_id z'] not free -[visit_exp (val : val <: instr)*{val <- `val*`}] -[scope_enter val] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp `val*`] -[visit_id val*] not free -[visit_id val*] no dims -[check_dims] _ -DecD alloctypes(type*) : deftype* -[visit_id _] not free -[check_dims] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $alloctypes([]) = [] -[check_dims] deftype deftype' rectype type type' x -[visit_exp type'*{type' <- `type'*`} ++ [type]] -[visit_exp type'*{type' <- `type'*`}] -[scope_enter type'] -[visit_exp type'] -[visit_id type'] not free -[visit_id type'] not free -[scope_exit type'] -[visit_exp `type'*`] -[visit_id type'*] no dims -[visit_id type'*] -[visit_exp [type]] -[visit_exp type] -[visit_id type] -[visit_exp deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`}] -[visit_exp deftype'*{deftype' <- `deftype'*`}] -[scope_enter deftype'] -[visit_exp deftype'] -[visit_id deftype'] not free -[visit_id deftype'] not free -[scope_exit deftype'] -[visit_exp `deftype'*`] -[visit_id deftype'*] no dims -[visit_id deftype'*] -[visit_exp deftype*{deftype <- `deftype*`}] -[scope_enter deftype] -[visit_exp deftype] -[visit_id deftype] not free -[visit_id deftype] not free -[scope_exit deftype] -[visit_exp `deftype*`] -[visit_id deftype*] no dims -[visit_id deftype*] -[visit_exp (deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`}))] -[visit_exp deftype'*{deftype' <- `deftype'*`}] -[scope_enter deftype'] -[visit_exp deftype'] -[visit_id deftype'] not free -[visit_id deftype'] not free -[scope_exit deftype'] -[visit_exp `deftype'*`] -[visit_id deftype'*] not free -[visit_id deftype'*] no dims -[visit_exp $alloctypes(type'*{type' <- `type'*`})] -[visit_exp type'*{type' <- `type'*`}] -[scope_enter type'] -[visit_exp type'] -[visit_id type'] not free -[visit_id type'] not free -[scope_exit type'] -[visit_exp `type'*`] -[visit_id type'*] not free -[visit_id type'*] no dims -[visit_exp (type = `TYPE`_type(rectype))] -[visit_exp type] -[visit_id type] not free -[visit_exp `TYPE`_type(rectype)] -[visit_exp (rectype)] -[visit_exp rectype] -[visit_id rectype] -[visit_exp (deftype*{deftype <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), (deftype' : deftype <: typeuse)*{deftype' <- `deftype'*`}))] -[visit_exp deftype*{deftype <- `deftype*`}] -[scope_enter deftype] -[visit_exp deftype] -[visit_id deftype] not free -[visit_id deftype] not free -[scope_exit deftype] -[visit_exp `deftype*`] -[visit_id deftype*] not free -[visit_id deftype*] no dims -[visit_exp $subst_all_deftypes($rolldt(x, rectype), (deftype' : deftype <: typeuse)*{deftype' <- `deftype'*`})] -[visit_exp $rolldt(x, rectype)] -[visit_exp x] -[visit_id x] -[visit_exp rectype] -[visit_id rectype] not free -[visit_exp (deftype' : deftype <: typeuse)*{deftype' <- `deftype'*`}] -[scope_enter deftype'] -[visit_exp (deftype' : deftype <: typeuse)] -[visit_exp deftype'] -[visit_id deftype'] not free -[visit_id deftype'] not free -[scope_exit deftype'] -[visit_exp `deftype'*`] -[visit_id deftype'*] not free -[visit_id deftype'*] no dims -[visit_exp (x!`%`_idx.0 = |deftype'*{deftype' <- `deftype'*`}|)] -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp |deftype'*{deftype' <- `deftype'*`}|] -[visit_exp deftype'*{deftype' <- `deftype'*`}] -[scope_enter deftype'] -[visit_exp deftype'] -[visit_id deftype'] not free -[visit_id deftype'] not free -[scope_exit deftype'] -[visit_exp `deftype'*`] -[visit_id deftype'*] not free -[visit_id deftype'*] no dims -=> - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : idx}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} - -- 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 (x!`%`_idx.0 = |deftype'*{deftype' <- `deftype'*`}|) -[check_dims] _ store tagtype -DecD alloctag(store : store, tagtype : tagtype) : (store, tagaddr) -[visit_id store] not free -[visit_id tagtype] not free -[scope_enter _] -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_exit _] -[scope_exit _] -[check_dims] s taginst tagtype -[visit_exp s] -[visit_id s] -[visit_exp tagtype] -[visit_id tagtype] -[visit_exp (s +++ {`TAGS` [taginst], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `STRUCTS` [], `ARRAYS` [], `EXNS` []}, |s.`TAGS`_store|)] -[visit_exp s +++ {`TAGS` [taginst], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `STRUCTS` [], `ARRAYS` [], `EXNS` []}] -[visit_exp s] -[visit_id s] not free -[visit_exp {`TAGS` [taginst], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `STRUCTS` [], `ARRAYS` [], `EXNS` []}] -[visit_exp [taginst]] -[visit_exp taginst] -[visit_id taginst] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp |s.`TAGS`_store|] -[visit_exp s.`TAGS`_store] -[visit_exp s] -[visit_id s] not free -[visit_exp (taginst = {`TYPE` tagtype})] -[visit_exp taginst] -[visit_id taginst] not free -[visit_exp {`TYPE` tagtype}] -[visit_exp tagtype] -[visit_id tagtype] not free -=> - ;; ../../../../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}) -[check_dims] _ store -DecD alloctags(store : store, tagtype*) : (store, tagaddr*) -[visit_id store] not free -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_exit _] -[scope_exit _] -[check_dims] s -[visit_exp s] -[visit_id s] -[visit_exp []] -[visit_exp (s, [])] -[visit_exp s] -[visit_id s] not free -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $alloctags{s : store}(s, []) = (s, []) -[check_dims] ja ja' s s_1 s_2 tagtype tagtype' -[visit_exp s] -[visit_id s] -[visit_exp [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}] -[visit_exp [tagtype]] -[visit_exp tagtype] -[visit_id tagtype] -[visit_exp tagtype'*{tagtype' <- `tagtype'*`}] -[scope_enter tagtype'] -[visit_exp tagtype'] -[visit_id tagtype'] not free -[visit_id tagtype'] not free -[scope_exit tagtype'] -[visit_exp `tagtype'*`] -[visit_id tagtype'*] no dims -[visit_id tagtype'*] -[visit_exp (s_2, [ja] ++ ja'*{ja' <- `ja'*`})] -[visit_exp s_2] -[visit_id s_2] -[visit_exp [ja] ++ ja'*{ja' <- `ja'*`}] -[visit_exp [ja]] -[visit_exp ja] -[visit_id ja] -[visit_exp ja'*{ja' <- `ja'*`}] -[scope_enter ja'] -[visit_exp ja'] -[visit_id ja'] not free -[visit_id ja'] not free -[scope_exit ja'] -[visit_exp `ja'*`] -[visit_id ja'*] no dims -[visit_id ja'*] -[visit_exp ((s_1, ja) = $alloctag(s, tagtype))] -[visit_exp (s_1, ja)] -[visit_exp s_1] -[visit_id s_1] -[visit_exp ja] -[visit_id ja] not free -[visit_exp $alloctag(s, tagtype)] -[visit_exp s] -[visit_id s] not free -[visit_exp tagtype] -[visit_id tagtype] not free -[visit_exp ((s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`}))] -[visit_exp (s_2, ja'*{ja' <- `ja'*`})] -[visit_exp s_2] -[visit_id s_2] not free -[visit_exp ja'*{ja' <- `ja'*`}] -[scope_enter ja'] -[visit_exp ja'] -[visit_id ja'] not free -[visit_id ja'] not free -[scope_exit ja'] -[visit_exp `ja'*`] -[visit_id ja'*] not free -[visit_id ja'*] no dims -[visit_exp $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`})] -[visit_exp s_1] -[visit_id s_1] not free -[visit_exp tagtype'*{tagtype' <- `tagtype'*`}] -[scope_enter tagtype'] -[visit_exp tagtype'] -[visit_id tagtype'] not free -[visit_id tagtype'] not free -[scope_exit tagtype'] -[visit_exp `tagtype'*`] -[visit_id tagtype'*] not free -[visit_id tagtype'*] no dims -=> - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - 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'*`}) - -- if ((s_1, ja) = $alloctag(s, tagtype)) - -- if ((s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`})) -[check_dims] _ globaltype store val -DecD allocglobal(store : store, globaltype : globaltype, val : val) : (store, globaladdr) -[visit_id store] not free -[visit_id globaltype] not free -[visit_id val] not free -[scope_enter _] -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_exit _] -[scope_exit _] -[check_dims] globalinst globaltype s val -[visit_exp s] -[visit_id s] -[visit_exp globaltype] -[visit_id globaltype] -[visit_exp val] -[visit_id val] -[visit_exp (s +++ {`TAGS` [], `GLOBALS` [globalinst], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `STRUCTS` [], `ARRAYS` [], `EXNS` []}, |s.`GLOBALS`_store|)] -[visit_exp s +++ {`TAGS` [], `GLOBALS` [globalinst], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `STRUCTS` [], `ARRAYS` [], `EXNS` []}] -[visit_exp s] -[visit_id s] not free -[visit_exp {`TAGS` [], `GLOBALS` [globalinst], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `STRUCTS` [], `ARRAYS` [], `EXNS` []}] -[visit_exp []] -[visit_exp [globalinst]] -[visit_exp globalinst] -[visit_id globalinst] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp |s.`GLOBALS`_store|] -[visit_exp s.`GLOBALS`_store] -[visit_exp s] -[visit_id s] not free -[visit_exp (globalinst = {`TYPE` globaltype, `VALUE` val})] -[visit_exp globalinst] -[visit_id globalinst] not free -[visit_exp {`TYPE` globaltype, `VALUE` val}] -[visit_exp globaltype] -[visit_id globaltype] not free -[visit_exp val] -[visit_id val] not free -=> - ;; ../../../../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}) -[check_dims] _ store -DecD allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) -[visit_id store] not free -[visit_id _] not free -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_exit _] -[scope_exit _] -[check_dims] s -[visit_exp s] -[visit_id s] -[visit_exp []] -[visit_exp []] -[visit_exp (s, [])] -[visit_exp s] -[visit_id s] not free -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocglobals{s : store}(s, [], []) = (s, []) -[check_dims] ga ga' globaltype globaltype' s s_1 s_2 val val' -[visit_exp s] -[visit_id s] -[visit_exp [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}] -[visit_exp [globaltype]] -[visit_exp globaltype] -[visit_id globaltype] -[visit_exp globaltype'*{globaltype' <- `globaltype'*`}] -[scope_enter globaltype'] -[visit_exp globaltype'] -[visit_id globaltype'] not free -[visit_id globaltype'] not free -[scope_exit globaltype'] -[visit_exp `globaltype'*`] -[visit_id globaltype'*] no dims -[visit_id globaltype'*] -[visit_exp [val] ++ val'*{val' <- `val'*`}] -[visit_exp [val]] -[visit_exp val] -[visit_id val] -[visit_exp val'*{val' <- `val'*`}] -[scope_enter val'] -[visit_exp val'] -[visit_id val'] not free -[visit_id val'] not free -[scope_exit val'] -[visit_exp `val'*`] -[visit_id val'*] no dims -[visit_id val'*] -[visit_exp (s_2, [ga] ++ ga'*{ga' <- `ga'*`})] -[visit_exp s_2] -[visit_id s_2] -[visit_exp [ga] ++ ga'*{ga' <- `ga'*`}] -[visit_exp [ga]] -[visit_exp ga] -[visit_id ga] -[visit_exp ga'*{ga' <- `ga'*`}] -[scope_enter ga'] -[visit_exp ga'] -[visit_id ga'] not free -[visit_id ga'] not free -[scope_exit ga'] -[visit_exp `ga'*`] -[visit_id ga'*] no dims -[visit_id ga'*] -[visit_exp ((s_1, ga) = $allocglobal(s, globaltype, val))] -[visit_exp (s_1, ga)] -[visit_exp s_1] -[visit_id s_1] -[visit_exp ga] -[visit_id ga] not free -[visit_exp $allocglobal(s, globaltype, val)] -[visit_exp s] -[visit_id s] not free -[visit_exp globaltype] -[visit_id globaltype] not free -[visit_exp val] -[visit_id val] not free -[visit_exp ((s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`}))] -[visit_exp (s_2, ga'*{ga' <- `ga'*`})] -[visit_exp s_2] -[visit_id s_2] not free -[visit_exp ga'*{ga' <- `ga'*`}] -[scope_enter ga'] -[visit_exp ga'] -[visit_id ga'] not free -[visit_id ga'] not free -[scope_exit ga'] -[visit_exp `ga'*`] -[visit_id ga'*] not free -[visit_id ga'*] no dims -[visit_exp $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`})] -[visit_exp s_1] -[visit_id s_1] not free -[visit_exp globaltype'*{globaltype' <- `globaltype'*`}] -[scope_enter globaltype'] -[visit_exp globaltype'] -[visit_id globaltype'] not free -[visit_id globaltype'] not free -[scope_exit globaltype'] -[visit_exp `globaltype'*`] -[visit_id globaltype'*] not free -[visit_id globaltype'*] no dims -[visit_exp val'*{val' <- `val'*`}] -[scope_enter val'] -[visit_exp val'] -[visit_id val'] not free -[visit_id val'] not free -[scope_exit val'] -[visit_exp `val'*`] -[visit_id val'*] not free -[visit_id val'*] no dims -=> - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - 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'*`}) - -- if ((s_1, ga) = $allocglobal(s, globaltype, val)) - -- if ((s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`})) -[check_dims] _ memtype store -DecD allocmem(store : store, memtype : memtype) : (store, memaddr) -[visit_id store] not free -[visit_id memtype] not free -[scope_enter _] -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_exit _] -[scope_exit _] -[check_dims] at i j meminst s -[visit_exp s] -[visit_id s] -[visit_exp `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))] -[visit_exp (at, `[%..%]`_limits(i, j?{j <- `j?`}))] -[visit_exp at] -[visit_id at] -[visit_exp `[%..%]`_limits(i, j?{j <- `j?`})] -[visit_exp (i, j?{j <- `j?`})] -[visit_exp i] -[visit_id i] -[visit_exp j?{j <- `j?`}] -[scope_enter j] -[visit_exp j] -[visit_id j] not free -[visit_id j] not free -[scope_exit j] -[visit_exp `j?`] -[visit_id j?] no dims -[visit_id j?] -[visit_exp (s +++ {`TAGS` [], `GLOBALS` [], `MEMS` [meminst], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `STRUCTS` [], `ARRAYS` [], `EXNS` []}, |s.`MEMS`_store|)] -[visit_exp s +++ {`TAGS` [], `GLOBALS` [], `MEMS` [meminst], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `STRUCTS` [], `ARRAYS` [], `EXNS` []}] -[visit_exp s] -[visit_id s] not free -[visit_exp {`TAGS` [], `GLOBALS` [], `MEMS` [meminst], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `STRUCTS` [], `ARRAYS` [], `EXNS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp [meminst]] -[visit_exp meminst] -[visit_id meminst] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp |s.`MEMS`_store|] -[visit_exp s.`MEMS`_store] -[visit_exp s] -[visit_id s] not free -[visit_exp (meminst = {`TYPE` `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), `BYTES` `%`_byte(0)^(i!`%`_u64.0 * (64 * $Ki)){}})] -[visit_exp meminst] -[visit_id meminst] not free -[visit_exp {`TYPE` `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), `BYTES` `%`_byte(0)^(i!`%`_u64.0 * (64 * $Ki)){}}] -[visit_exp `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))] -[visit_exp (at, `[%..%]`_limits(i, j?{j <- `j?`}))] -[visit_exp at] -[visit_id at] not free -[visit_exp `[%..%]`_limits(i, j?{j <- `j?`})] -[visit_exp (i, j?{j <- `j?`})] -[visit_exp i] -[visit_id i] not free -[visit_exp j?{j <- `j?`}] -[scope_enter j] -[visit_exp j] -[visit_id j] not free -[visit_id j] not free -[scope_exit j] -[visit_exp `j?`] -[visit_id j?] not free -[visit_id j?] no dims -[visit_exp `%`_byte(0)^(i!`%`_u64.0 * (64 * $Ki)){}] -[visit_exp `%`_byte(0)] -[visit_exp (0)] -[visit_exp 0] -[visit_exp (i!`%`_u64.0 * (64 * $Ki))] -[visit_exp i!`%`_u64.0] -[visit_exp i!`%`_u64] -[visit_exp i] -[visit_id i] not free -[visit_exp (64 * $Ki)] -[visit_exp 64] -[visit_exp $Ki] -=> - ;; ../../../../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)){}}) -[check_dims] _ store -DecD allocmems(store : store, memtype*) : (store, memaddr*) -[visit_id store] not free -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_exit _] -[scope_exit _] -[check_dims] s -[visit_exp s] -[visit_id s] -[visit_exp []] -[visit_exp (s, [])] -[visit_exp s] -[visit_id s] not free -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocmems{s : store}(s, []) = (s, []) -[check_dims] ma ma' memtype memtype' s s_1 s_2 -[visit_exp s] -[visit_id s] -[visit_exp [memtype] ++ memtype'*{memtype' <- `memtype'*`}] -[visit_exp [memtype]] -[visit_exp memtype] -[visit_id memtype] -[visit_exp memtype'*{memtype' <- `memtype'*`}] -[scope_enter memtype'] -[visit_exp memtype'] -[visit_id memtype'] not free -[visit_id memtype'] not free -[scope_exit memtype'] -[visit_exp `memtype'*`] -[visit_id memtype'*] no dims -[visit_id memtype'*] -[visit_exp (s_2, [ma] ++ ma'*{ma' <- `ma'*`})] -[visit_exp s_2] -[visit_id s_2] -[visit_exp [ma] ++ ma'*{ma' <- `ma'*`}] -[visit_exp [ma]] -[visit_exp ma] -[visit_id ma] -[visit_exp ma'*{ma' <- `ma'*`}] -[scope_enter ma'] -[visit_exp ma'] -[visit_id ma'] not free -[visit_id ma'] not free -[scope_exit ma'] -[visit_exp `ma'*`] -[visit_id ma'*] no dims -[visit_id ma'*] -[visit_exp ((s_1, ma) = $allocmem(s, memtype))] -[visit_exp (s_1, ma)] -[visit_exp s_1] -[visit_id s_1] -[visit_exp ma] -[visit_id ma] not free -[visit_exp $allocmem(s, memtype)] -[visit_exp s] -[visit_id s] not free -[visit_exp memtype] -[visit_id memtype] not free -[visit_exp ((s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`}))] -[visit_exp (s_2, ma'*{ma' <- `ma'*`})] -[visit_exp s_2] -[visit_id s_2] not free -[visit_exp ma'*{ma' <- `ma'*`}] -[scope_enter ma'] -[visit_exp ma'] -[visit_id ma'] not free -[visit_id ma'] not free -[scope_exit ma'] -[visit_exp `ma'*`] -[visit_id ma'*] not free -[visit_id ma'*] no dims -[visit_exp $allocmems(s_1, memtype'*{memtype' <- `memtype'*`})] -[visit_exp s_1] -[visit_id s_1] not free -[visit_exp memtype'*{memtype' <- `memtype'*`}] -[scope_enter memtype'] -[visit_exp memtype'] -[visit_id memtype'] not free -[visit_id memtype'] not free -[scope_exit memtype'] -[visit_exp `memtype'*`] -[visit_id memtype'*] not free -[visit_id memtype'*] no dims -=> - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - 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'*`}) - -- if ((s_1, ma) = $allocmem(s, memtype)) - -- if ((s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`})) -[check_dims] _ ref store tabletype -DecD alloctable(store : store, tabletype : tabletype, ref : ref) : (store, tableaddr) -[visit_id store] not free -[visit_id tabletype] not free -[visit_id ref] not free -[scope_enter _] -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_exit _] -[scope_exit _] -[check_dims] at i j ref rt s tableinst -[visit_exp s] -[visit_id s] -[visit_exp `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt)] -[visit_exp (at, `[%..%]`_limits(i, j?{j <- `j?`}), rt)] -[visit_exp at] -[visit_id at] -[visit_exp `[%..%]`_limits(i, j?{j <- `j?`})] -[visit_exp (i, j?{j <- `j?`})] -[visit_exp i] -[visit_id i] -[visit_exp j?{j <- `j?`}] -[scope_enter j] -[visit_exp j] -[visit_id j] not free -[visit_id j] not free -[scope_exit j] -[visit_exp `j?`] -[visit_id j?] no dims -[visit_id j?] -[visit_exp rt] -[visit_id rt] -[visit_exp ref] -[visit_id ref] -[visit_exp (s +++ {`TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [tableinst], `FUNCS` [], `DATAS` [], `ELEMS` [], `STRUCTS` [], `ARRAYS` [], `EXNS` []}, |s.`TABLES`_store|)] -[visit_exp s +++ {`TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [tableinst], `FUNCS` [], `DATAS` [], `ELEMS` [], `STRUCTS` [], `ARRAYS` [], `EXNS` []}] -[visit_exp s] -[visit_id s] not free -[visit_exp {`TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [tableinst], `FUNCS` [], `DATAS` [], `ELEMS` [], `STRUCTS` [], `ARRAYS` [], `EXNS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp [tableinst]] -[visit_exp tableinst] -[visit_id tableinst] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp |s.`TABLES`_store|] -[visit_exp s.`TABLES`_store] -[visit_exp s] -[visit_id s] not free -[visit_exp (tableinst = {`TYPE` `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), `REFS` ref^i!`%`_u64.0{}})] -[visit_exp tableinst] -[visit_id tableinst] not free -[visit_exp {`TYPE` `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), `REFS` ref^i!`%`_u64.0{}}] -[visit_exp `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt)] -[visit_exp (at, `[%..%]`_limits(i, j?{j <- `j?`}), rt)] -[visit_exp at] -[visit_id at] not free -[visit_exp `[%..%]`_limits(i, j?{j <- `j?`})] -[visit_exp (i, j?{j <- `j?`})] -[visit_exp i] -[visit_id i] not free -[visit_exp j?{j <- `j?`}] -[scope_enter j] -[visit_exp j] -[visit_id j] not free -[visit_id j] not free -[scope_exit j] -[visit_exp `j?`] -[visit_id j?] not free -[visit_id j?] no dims -[visit_exp rt] -[visit_id rt] not free -[visit_exp ref^i!`%`_u64.0{}] -[visit_exp ref] -[visit_id ref] not free -[visit_exp i!`%`_u64.0] -[visit_exp i!`%`_u64] -[visit_exp i] -[visit_id i] not free -=> - ;; ../../../../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{}}) -[check_dims] _ store -DecD alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) -[visit_id store] not free -[visit_id _] not free -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_exit _] -[scope_exit _] -[check_dims] s -[visit_exp s] -[visit_id s] -[visit_exp []] -[visit_exp []] -[visit_exp (s, [])] -[visit_exp s] -[visit_id s] not free -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $alloctables{s : store}(s, [], []) = (s, []) -[check_dims] ref ref' s s_1 s_2 ta ta' tabletype tabletype' -[visit_exp s] -[visit_id s] -[visit_exp [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}] -[visit_exp [tabletype]] -[visit_exp tabletype] -[visit_id tabletype] -[visit_exp tabletype'*{tabletype' <- `tabletype'*`}] -[scope_enter tabletype'] -[visit_exp tabletype'] -[visit_id tabletype'] not free -[visit_id tabletype'] not free -[scope_exit tabletype'] -[visit_exp `tabletype'*`] -[visit_id tabletype'*] no dims -[visit_id tabletype'*] -[visit_exp [ref] ++ ref'*{ref' <- `ref'*`}] -[visit_exp [ref]] -[visit_exp ref] -[visit_id ref] -[visit_exp ref'*{ref' <- `ref'*`}] -[scope_enter ref'] -[visit_exp ref'] -[visit_id ref'] not free -[visit_id ref'] not free -[scope_exit ref'] -[visit_exp `ref'*`] -[visit_id ref'*] no dims -[visit_id ref'*] -[visit_exp (s_2, [ta] ++ ta'*{ta' <- `ta'*`})] -[visit_exp s_2] -[visit_id s_2] -[visit_exp [ta] ++ ta'*{ta' <- `ta'*`}] -[visit_exp [ta]] -[visit_exp ta] -[visit_id ta] -[visit_exp ta'*{ta' <- `ta'*`}] -[scope_enter ta'] -[visit_exp ta'] -[visit_id ta'] not free -[visit_id ta'] not free -[scope_exit ta'] -[visit_exp `ta'*`] -[visit_id ta'*] no dims -[visit_id ta'*] -[visit_exp ((s_1, ta) = $alloctable(s, tabletype, ref))] -[visit_exp (s_1, ta)] -[visit_exp s_1] -[visit_id s_1] -[visit_exp ta] -[visit_id ta] not free -[visit_exp $alloctable(s, tabletype, ref)] -[visit_exp s] -[visit_id s] not free -[visit_exp tabletype] -[visit_id tabletype] not free -[visit_exp ref] -[visit_id ref] not free -[visit_exp ((s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`}))] -[visit_exp (s_2, ta'*{ta' <- `ta'*`})] -[visit_exp s_2] -[visit_id s_2] not free -[visit_exp ta'*{ta' <- `ta'*`}] -[scope_enter ta'] -[visit_exp ta'] -[visit_id ta'] not free -[visit_id ta'] not free -[scope_exit ta'] -[visit_exp `ta'*`] -[visit_id ta'*] not free -[visit_id ta'*] no dims -[visit_exp $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`})] -[visit_exp s_1] -[visit_id s_1] not free -[visit_exp tabletype'*{tabletype' <- `tabletype'*`}] -[scope_enter tabletype'] -[visit_exp tabletype'] -[visit_id tabletype'] not free -[visit_id tabletype'] not free -[scope_exit tabletype'] -[visit_exp `tabletype'*`] -[visit_id tabletype'*] not free -[visit_id tabletype'*] no dims -[visit_exp ref'*{ref' <- `ref'*`}] -[scope_enter ref'] -[visit_exp ref'] -[visit_id ref'] not free -[visit_id ref'] not free -[scope_exit ref'] -[visit_exp `ref'*`] -[visit_id ref'*] not free -[visit_id ref'*] no dims -=> - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - 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'*`}) - -- if ((s_1, ta) = $alloctable(s, tabletype, ref)) - -- if ((s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`})) -[check_dims] _ deftype funccode moduleinst store -DecD allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst) : (store, funcaddr) -[visit_id store] not free -[visit_id deftype] not free -[visit_id funccode] not free -[visit_id moduleinst] not free -[scope_enter _] -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_exit _] -[scope_exit _] -[check_dims] deftype funccode funcinst moduleinst s -[visit_exp s] -[visit_id s] -[visit_exp deftype] -[visit_id deftype] -[visit_exp funccode] -[visit_id funccode] -[visit_exp moduleinst] -[visit_id moduleinst] -[visit_exp (s +++ {`TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [funcinst], `DATAS` [], `ELEMS` [], `STRUCTS` [], `ARRAYS` [], `EXNS` []}, |s.`FUNCS`_store|)] -[visit_exp s +++ {`TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [funcinst], `DATAS` [], `ELEMS` [], `STRUCTS` [], `ARRAYS` [], `EXNS` []}] -[visit_exp s] -[visit_id s] not free -[visit_exp {`TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [funcinst], `DATAS` [], `ELEMS` [], `STRUCTS` [], `ARRAYS` [], `EXNS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp [funcinst]] -[visit_exp funcinst] -[visit_id funcinst] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp |s.`FUNCS`_store|] -[visit_exp s.`FUNCS`_store] -[visit_exp s] -[visit_id s] not free -[visit_exp (funcinst = {`TYPE` deftype, `MODULE` moduleinst, `CODE` funccode})] -[visit_exp funcinst] -[visit_id funcinst] not free -[visit_exp {`TYPE` deftype, `MODULE` moduleinst, `CODE` funccode}] -[visit_exp deftype] -[visit_id deftype] not free -[visit_exp moduleinst] -[visit_id moduleinst] not free -[visit_exp funccode] -[visit_id funccode] not free -=> - ;; ../../../../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}) -[check_dims] _ store -DecD allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funcaddr*) -[visit_id store] not free -[visit_id _] not free -[visit_id _] not free -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_exit _] -[scope_exit _] -[check_dims] s -[visit_exp s] -[visit_id s] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp (s, [])] -[visit_exp s] -[visit_id s] not free -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocfuncs{s : store}(s, [], [], []) = (s, []) -[check_dims] dt dt' fa fa' funccode funccode' moduleinst moduleinst' s s_1 s_2 -[visit_exp s] -[visit_id s] -[visit_exp [dt] ++ dt'*{dt' <- `dt'*`}] -[visit_exp [dt]] -[visit_exp dt] -[visit_id dt] -[visit_exp dt'*{dt' <- `dt'*`}] -[scope_enter dt'] -[visit_exp dt'] -[visit_id dt'] not free -[visit_id dt'] not free -[scope_exit dt'] -[visit_exp `dt'*`] -[visit_id dt'*] no dims -[visit_id dt'*] -[visit_exp [funccode] ++ funccode'*{funccode' <- `funccode'*`}] -[visit_exp [funccode]] -[visit_exp funccode] -[visit_id funccode] -[visit_exp funccode'*{funccode' <- `funccode'*`}] -[scope_enter funccode'] -[visit_exp funccode'] -[visit_id funccode'] not free -[visit_id funccode'] not free -[scope_exit funccode'] -[visit_exp `funccode'*`] -[visit_id funccode'*] no dims -[visit_id funccode'*] -[visit_exp [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}] -[visit_exp [moduleinst]] -[visit_exp moduleinst] -[visit_id moduleinst] -[visit_exp moduleinst'*{moduleinst' <- `moduleinst'*`}] -[scope_enter moduleinst'] -[visit_exp moduleinst'] -[visit_id moduleinst'] not free -[visit_id moduleinst'] not free -[scope_exit moduleinst'] -[visit_exp `moduleinst'*`] -[visit_id moduleinst'*] no dims -[visit_id moduleinst'*] -[visit_exp (s_2, [fa] ++ fa'*{fa' <- `fa'*`})] -[visit_exp s_2] -[visit_id s_2] -[visit_exp [fa] ++ fa'*{fa' <- `fa'*`}] -[visit_exp [fa]] -[visit_exp fa] -[visit_id fa] -[visit_exp fa'*{fa' <- `fa'*`}] -[scope_enter fa'] -[visit_exp fa'] -[visit_id fa'] not free -[visit_id fa'] not free -[scope_exit fa'] -[visit_exp `fa'*`] -[visit_id fa'*] no dims -[visit_id fa'*] -[visit_exp ((s_1, fa) = $allocfunc(s, dt, funccode, moduleinst))] -[visit_exp (s_1, fa)] -[visit_exp s_1] -[visit_id s_1] -[visit_exp fa] -[visit_id fa] not free -[visit_exp $allocfunc(s, dt, funccode, moduleinst)] -[visit_exp s] -[visit_id s] not free -[visit_exp dt] -[visit_id dt] not free -[visit_exp funccode] -[visit_id funccode] not free -[visit_exp moduleinst] -[visit_id moduleinst] not free -[visit_exp ((s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`}))] -[visit_exp (s_2, fa'*{fa' <- `fa'*`})] -[visit_exp s_2] -[visit_id s_2] not free -[visit_exp fa'*{fa' <- `fa'*`}] -[scope_enter fa'] -[visit_exp fa'] -[visit_id fa'] not free -[visit_id fa'] not free -[scope_exit fa'] -[visit_exp `fa'*`] -[visit_id fa'*] not free -[visit_id fa'*] no dims -[visit_exp $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`})] -[visit_exp s_1] -[visit_id s_1] not free -[visit_exp dt'*{dt' <- `dt'*`}] -[scope_enter dt'] -[visit_exp dt'] -[visit_id dt'] not free -[visit_id dt'] not free -[scope_exit dt'] -[visit_exp `dt'*`] -[visit_id dt'*] not free -[visit_id dt'*] no dims -[visit_exp funccode'*{funccode' <- `funccode'*`}] -[scope_enter funccode'] -[visit_exp funccode'] -[visit_id funccode'] not free -[visit_id funccode'] not free -[scope_exit funccode'] -[visit_exp `funccode'*`] -[visit_id funccode'*] not free -[visit_id funccode'*] no dims -[visit_exp moduleinst'*{moduleinst' <- `moduleinst'*`}] -[scope_enter moduleinst'] -[visit_exp moduleinst'] -[visit_id moduleinst'] not free -[visit_id moduleinst'] not free -[scope_exit moduleinst'] -[visit_exp `moduleinst'*`] -[visit_id moduleinst'*] not free -[visit_id moduleinst'*] no dims -=> - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - 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'*`}) - -- 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'*`})) -[check_dims] _ datatype store -DecD allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) -[visit_id store] not free -[visit_id datatype] not free -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_exit _] -[scope_exit _] -[check_dims] byte datainst s -[visit_exp s] -[visit_id s] -[visit_exp `OK`_datatype] -[visit_exp ()] -[visit_exp byte*{byte <- `byte*`}] -[scope_enter byte] -[visit_exp byte] -[visit_id byte] not free -[visit_id byte] not free -[scope_exit byte] -[visit_exp `byte*`] -[visit_id byte*] no dims -[visit_id byte*] -[visit_exp (s +++ {`TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [datainst], `ELEMS` [], `STRUCTS` [], `ARRAYS` [], `EXNS` []}, |s.`DATAS`_store|)] -[visit_exp s +++ {`TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [datainst], `ELEMS` [], `STRUCTS` [], `ARRAYS` [], `EXNS` []}] -[visit_exp s] -[visit_id s] not free -[visit_exp {`TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [datainst], `ELEMS` [], `STRUCTS` [], `ARRAYS` [], `EXNS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp [datainst]] -[visit_exp datainst] -[visit_id datainst] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp |s.`DATAS`_store|] -[visit_exp s.`DATAS`_store] -[visit_exp s] -[visit_id s] not free -[visit_exp (datainst = {`BYTES` byte*{byte <- `byte*`}})] -[visit_exp datainst] -[visit_id datainst] not free -[visit_exp {`BYTES` byte*{byte <- `byte*`}}] -[visit_exp byte*{byte <- `byte*`}] -[scope_enter byte] -[visit_exp byte] -[visit_id byte] not free -[visit_id byte] not free -[scope_exit byte] -[visit_exp `byte*`] -[visit_id byte*] not free -[visit_id byte*] no dims -=> - ;; ../../../../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*`}}) -[check_dims] _ store -DecD allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) -[visit_id store] not free -[visit_id _] not free -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_exit _] -[scope_exit _] -[check_dims] s -[visit_exp s] -[visit_id s] -[visit_exp []] -[visit_exp []] -[visit_exp (s, [])] -[visit_exp s] -[visit_id s] not free -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocdatas{s : store}(s, [], []) = (s, []) -[check_dims] b b' da da' ok ok' s s_1 s_2 -[visit_exp s] -[visit_id s] -[visit_exp [ok] ++ ok'*{ok' <- `ok'*`}] -[visit_exp [ok]] -[visit_exp ok] -[visit_id ok] -[visit_exp ok'*{ok' <- `ok'*`}] -[scope_enter ok'] -[visit_exp ok'] -[visit_id ok'] not free -[visit_id ok'] not free -[scope_exit ok'] -[visit_exp `ok'*`] -[visit_id ok'*] no dims -[visit_id ok'*] -[visit_exp [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}] -[visit_exp [b*{b <- `b*`}]] -[visit_exp b*{b <- `b*`}] -[scope_enter b] -[visit_exp b] -[visit_id b] not free -[visit_id b] not free -[scope_exit b] -[visit_exp `b*`] -[visit_id b*] no dims -[visit_id b*] -[visit_exp b'*{b' <- `b'*`}*{`b'*` <- `b'**`}] -[scope_enter b'*] -[visit_exp b'*{b' <- `b'*`}] -[scope_enter b'] -[visit_exp b'] -[visit_id b'] not free -[visit_id b'] not free -[scope_exit b'] -[visit_exp `b'*`] -[visit_id b'*] not free -[visit_id b'*] no dims -[visit_id b'*] not free -[visit_id b'*] no dims -[scope_exit b'*] -[visit_exp `b'**`] -[visit_id b'**] no dims -[visit_id b'**] -[visit_exp (s_2, [da] ++ da'*{da' <- `da'*`})] -[visit_exp s_2] -[visit_id s_2] -[visit_exp [da] ++ da'*{da' <- `da'*`}] -[visit_exp [da]] -[visit_exp da] -[visit_id da] -[visit_exp da'*{da' <- `da'*`}] -[scope_enter da'] -[visit_exp da'] -[visit_id da'] not free -[visit_id da'] not free -[scope_exit da'] -[visit_exp `da'*`] -[visit_id da'*] no dims -[visit_id da'*] -[visit_exp ((s_1, da) = $allocdata(s, ok, b*{b <- `b*`}))] -[visit_exp (s_1, da)] -[visit_exp s_1] -[visit_id s_1] -[visit_exp da] -[visit_id da] not free -[visit_exp $allocdata(s, ok, b*{b <- `b*`})] -[visit_exp s] -[visit_id s] not free -[visit_exp ok] -[visit_id ok] not free -[visit_exp b*{b <- `b*`}] -[scope_enter b] -[visit_exp b] -[visit_id b] not free -[visit_id b] not free -[scope_exit b] -[visit_exp `b*`] -[visit_id b*] not free -[visit_id b*] no dims -[visit_exp ((s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`}))] -[visit_exp (s_2, da'*{da' <- `da'*`})] -[visit_exp s_2] -[visit_id s_2] not free -[visit_exp da'*{da' <- `da'*`}] -[scope_enter da'] -[visit_exp da'] -[visit_id da'] not free -[visit_id da'] not free -[scope_exit da'] -[visit_exp `da'*`] -[visit_id da'*] not free -[visit_id da'*] no dims -[visit_exp $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`})] -[visit_exp s_1] -[visit_id s_1] not free -[visit_exp ok'*{ok' <- `ok'*`}] -[scope_enter ok'] -[visit_exp ok'] -[visit_id ok'] not free -[visit_id ok'] not free -[scope_exit ok'] -[visit_exp `ok'*`] -[visit_id ok'*] not free -[visit_id ok'*] no dims -[visit_exp b'*{b' <- `b'*`}*{`b'*` <- `b'**`}] -[scope_enter b'*] -[visit_exp b'*{b' <- `b'*`}] -[scope_enter b'] -[visit_exp b'] -[visit_id b'] not free -[visit_id b'] not free -[scope_exit b'] -[visit_exp `b'*`] -[visit_id b'*] not free -[visit_id b'*] no dims -[visit_id b'*] not free -[visit_id b'*] no dims -[scope_exit b'*] -[visit_exp `b'**`] -[visit_id b'**] not free -[visit_id b'**] no dims -=> - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - 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'*`}) - -- 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'**`})) -[check_dims] _ elemtype store -DecD allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) -[visit_id store] not free -[visit_id elemtype] not free -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_exit _] -[scope_exit _] -[check_dims] eleminst elemtype ref s -[visit_exp s] -[visit_id s] -[visit_exp elemtype] -[visit_id elemtype] -[visit_exp ref*{ref <- `ref*`}] -[scope_enter ref] -[visit_exp ref] -[visit_id ref] not free -[visit_id ref] not free -[scope_exit ref] -[visit_exp `ref*`] -[visit_id ref*] no dims -[visit_id ref*] -[visit_exp (s +++ {`TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [eleminst], `STRUCTS` [], `ARRAYS` [], `EXNS` []}, |s.`ELEMS`_store|)] -[visit_exp s +++ {`TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [eleminst], `STRUCTS` [], `ARRAYS` [], `EXNS` []}] -[visit_exp s] -[visit_id s] not free -[visit_exp {`TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [eleminst], `STRUCTS` [], `ARRAYS` [], `EXNS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp [eleminst]] -[visit_exp eleminst] -[visit_id eleminst] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp |s.`ELEMS`_store|] -[visit_exp s.`ELEMS`_store] -[visit_exp s] -[visit_id s] not free -[visit_exp (eleminst = {`TYPE` elemtype, `REFS` ref*{ref <- `ref*`}})] -[visit_exp eleminst] -[visit_id eleminst] not free -[visit_exp {`TYPE` elemtype, `REFS` ref*{ref <- `ref*`}}] -[visit_exp elemtype] -[visit_id elemtype] not free -[visit_exp ref*{ref <- `ref*`}] -[scope_enter ref] -[visit_exp ref] -[visit_id ref] not free -[visit_id ref] not free -[scope_exit ref] -[visit_exp `ref*`] -[visit_id ref*] not free -[visit_id ref*] no dims -=> - ;; ../../../../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*`}}) -[check_dims] _ store -DecD allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) -[visit_id store] not free -[visit_id _] not free -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_exit _] -[scope_exit _] -[check_dims] s -[visit_exp s] -[visit_id s] -[visit_exp []] -[visit_exp []] -[visit_exp (s, [])] -[visit_exp s] -[visit_id s] not free -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocelems{s : store}(s, [], []) = (s, []) -[check_dims] ea ea' ref ref' rt rt' s s_1 s_2 -[visit_exp s] -[visit_id s] -[visit_exp [rt] ++ rt'*{rt' <- `rt'*`}] -[visit_exp [rt]] -[visit_exp rt] -[visit_id rt] -[visit_exp rt'*{rt' <- `rt'*`}] -[scope_enter rt'] -[visit_exp rt'] -[visit_id rt'] not free -[visit_id rt'] not free -[scope_exit rt'] -[visit_exp `rt'*`] -[visit_id rt'*] no dims -[visit_id rt'*] -[visit_exp [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}] -[visit_exp [ref*{ref <- `ref*`}]] -[visit_exp ref*{ref <- `ref*`}] -[scope_enter ref] -[visit_exp ref] -[visit_id ref] not free -[visit_id ref] not free -[scope_exit ref] -[visit_exp `ref*`] -[visit_id ref*] no dims -[visit_id ref*] -[visit_exp ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}] -[scope_enter ref'*] -[visit_exp ref'*{ref' <- `ref'*`}] -[scope_enter ref'] -[visit_exp ref'] -[visit_id ref'] not free -[visit_id ref'] not free -[scope_exit ref'] -[visit_exp `ref'*`] -[visit_id ref'*] not free -[visit_id ref'*] no dims -[visit_id ref'*] not free -[visit_id ref'*] no dims -[scope_exit ref'*] -[visit_exp `ref'**`] -[visit_id ref'**] no dims -[visit_id ref'**] -[visit_exp (s_2, [ea] ++ ea'*{ea' <- `ea'*`})] -[visit_exp s_2] -[visit_id s_2] -[visit_exp [ea] ++ ea'*{ea' <- `ea'*`}] -[visit_exp [ea]] -[visit_exp ea] -[visit_id ea] -[visit_exp ea'*{ea' <- `ea'*`}] -[scope_enter ea'] -[visit_exp ea'] -[visit_id ea'] not free -[visit_id ea'] not free -[scope_exit ea'] -[visit_exp `ea'*`] -[visit_id ea'*] no dims -[visit_id ea'*] -[visit_exp ((s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`}))] -[visit_exp (s_1, ea)] -[visit_exp s_1] -[visit_id s_1] -[visit_exp ea] -[visit_id ea] not free -[visit_exp $allocelem(s, rt, ref*{ref <- `ref*`})] -[visit_exp s] -[visit_id s] not free -[visit_exp rt] -[visit_id rt] not free -[visit_exp ref*{ref <- `ref*`}] -[scope_enter ref] -[visit_exp ref] -[visit_id ref] not free -[visit_id ref] not free -[scope_exit ref] -[visit_exp `ref*`] -[visit_id ref*] not free -[visit_id ref*] no dims -[visit_exp ((s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}))] -[visit_exp (s_2, ea'*{ea' <- `ea'*`})] -[visit_exp s_2] -[visit_id s_2] not free -[visit_exp ea'*{ea' <- `ea'*`}] -[scope_enter ea'] -[visit_exp ea'] -[visit_id ea'] not free -[visit_id ea'] not free -[scope_exit ea'] -[visit_exp `ea'*`] -[visit_id ea'*] not free -[visit_id ea'*] no dims -[visit_exp $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`})] -[visit_exp s_1] -[visit_id s_1] not free -[visit_exp rt'*{rt' <- `rt'*`}] -[scope_enter rt'] -[visit_exp rt'] -[visit_id rt'] not free -[visit_id rt'] not free -[scope_exit rt'] -[visit_exp `rt'*`] -[visit_id rt'*] not free -[visit_id rt'*] no dims -[visit_exp ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}] -[scope_enter ref'*] -[visit_exp ref'*{ref' <- `ref'*`}] -[scope_enter ref'] -[visit_exp ref'] -[visit_id ref'] not free -[visit_id ref'] not free -[scope_exit ref'] -[visit_exp `ref'*`] -[visit_id ref'*] not free -[visit_id ref'*] no dims -[visit_id ref'*] not free -[visit_id ref'*] no dims -[scope_exit ref'*] -[visit_exp `ref'**`] -[visit_id ref'**] not free -[visit_id ref'**] no dims -=> - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - 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'*`}) - -- 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'**`})) -[check_dims] export moduleinst -DecD allocexport(moduleinst : moduleinst, export : export) : exportinst -[visit_id moduleinst] not free -[visit_id export] not free -[check_dims] moduleinst name x -[visit_exp moduleinst] -[visit_id moduleinst] -[visit_exp `EXPORT`_export(name, `TAG`_externidx(x))] -[visit_exp (name, `TAG`_externidx(x))] -[visit_exp name] -[visit_id name] -[visit_exp `TAG`_externidx(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp {`NAME` name, `ADDR` `TAG`_externaddr(moduleinst.`TAGS`_moduleinst[x!`%`_idx.0])}] -[visit_exp name] -[visit_id name] not free -[visit_exp `TAG`_externaddr(moduleinst.`TAGS`_moduleinst[x!`%`_idx.0])] -[visit_exp (moduleinst.`TAGS`_moduleinst[x!`%`_idx.0])] -[visit_exp moduleinst.`TAGS`_moduleinst[x!`%`_idx.0]] -[visit_exp moduleinst.`TAGS`_moduleinst] -[visit_exp moduleinst] -[visit_id moduleinst] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -=> - ;; ../../../../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])} -[check_dims] moduleinst name x -[visit_exp moduleinst] -[visit_id moduleinst] -[visit_exp `EXPORT`_export(name, `GLOBAL`_externidx(x))] -[visit_exp (name, `GLOBAL`_externidx(x))] -[visit_exp name] -[visit_id name] -[visit_exp `GLOBAL`_externidx(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp {`NAME` name, `ADDR` `GLOBAL`_externaddr(moduleinst.`GLOBALS`_moduleinst[x!`%`_idx.0])}] -[visit_exp name] -[visit_id name] not free -[visit_exp `GLOBAL`_externaddr(moduleinst.`GLOBALS`_moduleinst[x!`%`_idx.0])] -[visit_exp (moduleinst.`GLOBALS`_moduleinst[x!`%`_idx.0])] -[visit_exp moduleinst.`GLOBALS`_moduleinst[x!`%`_idx.0]] -[visit_exp moduleinst.`GLOBALS`_moduleinst] -[visit_exp moduleinst] -[visit_id moduleinst] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -=> - ;; ../../../../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])} -[check_dims] moduleinst name x -[visit_exp moduleinst] -[visit_id moduleinst] -[visit_exp `EXPORT`_export(name, `MEM`_externidx(x))] -[visit_exp (name, `MEM`_externidx(x))] -[visit_exp name] -[visit_id name] -[visit_exp `MEM`_externidx(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp {`NAME` name, `ADDR` `MEM`_externaddr(moduleinst.`MEMS`_moduleinst[x!`%`_idx.0])}] -[visit_exp name] -[visit_id name] not free -[visit_exp `MEM`_externaddr(moduleinst.`MEMS`_moduleinst[x!`%`_idx.0])] -[visit_exp (moduleinst.`MEMS`_moduleinst[x!`%`_idx.0])] -[visit_exp moduleinst.`MEMS`_moduleinst[x!`%`_idx.0]] -[visit_exp moduleinst.`MEMS`_moduleinst] -[visit_exp moduleinst] -[visit_id moduleinst] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -=> - ;; ../../../../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])} -[check_dims] moduleinst name x -[visit_exp moduleinst] -[visit_id moduleinst] -[visit_exp `EXPORT`_export(name, `TABLE`_externidx(x))] -[visit_exp (name, `TABLE`_externidx(x))] -[visit_exp name] -[visit_id name] -[visit_exp `TABLE`_externidx(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp {`NAME` name, `ADDR` `TABLE`_externaddr(moduleinst.`TABLES`_moduleinst[x!`%`_idx.0])}] -[visit_exp name] -[visit_id name] not free -[visit_exp `TABLE`_externaddr(moduleinst.`TABLES`_moduleinst[x!`%`_idx.0])] -[visit_exp (moduleinst.`TABLES`_moduleinst[x!`%`_idx.0])] -[visit_exp moduleinst.`TABLES`_moduleinst[x!`%`_idx.0]] -[visit_exp moduleinst.`TABLES`_moduleinst] -[visit_exp moduleinst] -[visit_id moduleinst] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -=> - ;; ../../../../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])} -[check_dims] moduleinst name x -[visit_exp moduleinst] -[visit_id moduleinst] -[visit_exp `EXPORT`_export(name, `FUNC`_externidx(x))] -[visit_exp (name, `FUNC`_externidx(x))] -[visit_exp name] -[visit_id name] -[visit_exp `FUNC`_externidx(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp {`NAME` name, `ADDR` `FUNC`_externaddr(moduleinst.`FUNCS`_moduleinst[x!`%`_idx.0])}] -[visit_exp name] -[visit_id name] not free -[visit_exp `FUNC`_externaddr(moduleinst.`FUNCS`_moduleinst[x!`%`_idx.0])] -[visit_exp (moduleinst.`FUNCS`_moduleinst[x!`%`_idx.0])] -[visit_exp moduleinst.`FUNCS`_moduleinst[x!`%`_idx.0]] -[visit_exp moduleinst.`FUNCS`_moduleinst] -[visit_exp moduleinst] -[visit_id moduleinst] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -=> - ;; ../../../../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])} -[check_dims] _ moduleinst -DecD allocexports(moduleinst : moduleinst, export*) : exportinst* -[visit_id moduleinst] not free -[visit_id _] not free -[check_dims] export moduleinst -[visit_exp moduleinst] -[visit_id moduleinst] -[visit_exp export*{export <- `export*`}] -[scope_enter export] -[visit_exp export] -[visit_id export] not free -[visit_id export] not free -[scope_exit export] -[visit_exp `export*`] -[visit_id export*] no dims -[visit_id export*] -[visit_exp $allocexport(moduleinst, export)*{export <- `export*`}] -[scope_enter export] -[visit_exp $allocexport(moduleinst, export)] -[visit_exp moduleinst] -[visit_id moduleinst] not free -[visit_exp export] -[visit_id export] not free -[visit_id export] not free -[scope_exit export] -[visit_exp `export*`] -[visit_id export*] not free -[visit_id export*] no dims -=> - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexports{moduleinst : moduleinst, `export*` : export*}(moduleinst, export*{export <- `export*`}) = $allocexport(moduleinst, export)*{export <- `export*`} -[check_dims] _ module store -DecD allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) -[visit_id store] not free -[visit_id module] not free -[visit_id _] not free -[visit_id _] not free -[visit_id _] not free -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_exit _] -[scope_exit _] -[check_dims] aa aa_I byte da data datamode dt ea elem elemmode elemtype export expr_E expr_F expr_G expr_T externaddr fa fa_I func ga ga_I global globaltype i_F import local ma ma_I mem memtype module moduleinst ref_E ref_T s s_1 s_2 s_3 s_4 s_5 s_6 s_7 start ta ta_I table tabletype tag tagtype type val_G x xi -[visit_exp s] -[visit_id s] -[visit_exp module] -[visit_id module] -[visit_exp externaddr*{externaddr <- `externaddr*`}] -[scope_enter externaddr] -[visit_exp externaddr] -[visit_id externaddr] not free -[visit_id externaddr] not free -[scope_exit externaddr] -[visit_exp `externaddr*`] -[visit_id externaddr*] no dims -[visit_id externaddr*] -[visit_exp val_G*{val_G <- `val_G*`}] -[scope_enter val_G] -[visit_exp val_G] -[visit_id val_G] not free -[visit_id val_G] not free -[scope_exit val_G] -[visit_exp `val_G*`] -[visit_id val_G*] no dims -[visit_id val_G*] -[visit_exp ref_T*{ref_T <- `ref_T*`}] -[scope_enter ref_T] -[visit_exp ref_T] -[visit_id ref_T] not free -[visit_id ref_T] not free -[scope_exit ref_T] -[visit_exp `ref_T*`] -[visit_id ref_T*] no dims -[visit_id ref_T*] -[visit_exp ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}] -[scope_enter ref_E*] -[visit_exp ref_E*{ref_E <- `ref_E*`}] -[scope_enter ref_E] -[visit_exp ref_E] -[visit_id ref_E] not free -[visit_id ref_E] not free -[scope_exit ref_E] -[visit_exp `ref_E*`] -[visit_id ref_E*] not free -[visit_id ref_E*] no dims -[visit_id ref_E*] not free -[visit_id ref_E*] no dims -[scope_exit ref_E*] -[visit_exp `ref_E**`] -[visit_id ref_E**] no dims -[visit_id ref_E**] -[visit_exp (s_7, moduleinst)] -[visit_exp s_7] -[visit_id s_7] -[visit_exp moduleinst] -[visit_id moduleinst] -[visit_exp (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*`}))] -[visit_exp module] -[visit_id module] not free -[visit_exp `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*`})] -[visit_exp (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*`})] -[visit_exp type*{type <- `type*`}] -[scope_enter type] -[visit_exp type] -[visit_id type] not free -[visit_id type] not free -[scope_exit type] -[visit_exp `type*`] -[visit_id type*] no dims -[visit_id type*] -[visit_exp import*{import <- `import*`}] -[scope_enter import] -[visit_exp import] -[visit_id import] not free -[visit_id import] not free -[scope_exit import] -[visit_exp `import*`] -[visit_id import*] no dims -[visit_id import*] -[visit_exp tag*{tag <- `tag*`}] -[scope_enter tag] -[visit_exp tag] -[visit_id tag] not free -[visit_id tag] not free -[scope_exit tag] -[visit_exp `tag*`] -[visit_id tag*] no dims -[visit_id tag*] -[visit_exp global*{global <- `global*`}] -[scope_enter global] -[visit_exp global] -[visit_id global] not free -[visit_id global] not free -[scope_exit global] -[visit_exp `global*`] -[visit_id global*] no dims -[visit_id global*] -[visit_exp mem*{mem <- `mem*`}] -[scope_enter mem] -[visit_exp mem] -[visit_id mem] not free -[visit_id mem] not free -[scope_exit mem] -[visit_exp `mem*`] -[visit_id mem*] no dims -[visit_id mem*] -[visit_exp table*{table <- `table*`}] -[scope_enter table] -[visit_exp table] -[visit_id table] not free -[visit_id table] not free -[scope_exit table] -[visit_exp `table*`] -[visit_id table*] no dims -[visit_id table*] -[visit_exp func*{func <- `func*`}] -[scope_enter func] -[visit_exp func] -[visit_id func] not free -[visit_id func] not free -[scope_exit func] -[visit_exp `func*`] -[visit_id func*] no dims -[visit_id func*] -[visit_exp data*{data <- `data*`}] -[scope_enter data] -[visit_exp data] -[visit_id data] not free -[visit_id data] not free -[scope_exit data] -[visit_exp `data*`] -[visit_id data*] no dims -[visit_id data*] -[visit_exp elem*{elem <- `elem*`}] -[scope_enter elem] -[visit_exp elem] -[visit_id elem] not free -[visit_id elem] not free -[scope_exit elem] -[visit_exp `elem*`] -[visit_id elem*] no dims -[visit_id elem*] -[visit_exp start?{start <- `start?`}] -[scope_enter start] -[visit_exp start] -[visit_id start] not free -[visit_id start] not free -[scope_exit start] -[visit_exp `start?`] -[visit_id start?] no dims -[visit_id start?] -[visit_exp export*{export <- `export*`}] -[scope_enter export] -[visit_exp export] -[visit_id export] not free -[visit_id export] not free -[scope_exit export] -[visit_exp `export*`] -[visit_id export*] no dims -[visit_id export*] -[visit_exp (tag*{tag <- `tag*`} = `TAG`_tag(tagtype)*{tagtype <- `tagtype*`})] -[visit_exp tag*{tag <- `tag*`}] -[scope_enter tag] -[visit_exp tag] -[visit_id tag] not free -[visit_id tag] not free -[scope_exit tag] -[visit_exp `tag*`] -[visit_id tag*] not free -[visit_id tag*] no dims -[visit_exp `TAG`_tag(tagtype)*{tagtype <- `tagtype*`}] -[scope_enter tagtype] -[visit_exp `TAG`_tag(tagtype)] -[visit_exp (tagtype)] -[visit_exp tagtype] -[visit_id tagtype] not free -[visit_id tagtype] not free -[scope_exit tagtype] -[visit_exp `tagtype*`] -[visit_id tagtype*] no dims -[visit_id tagtype*] -[visit_exp (global*{global <- `global*`} = `GLOBAL`_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`})] -[visit_exp global*{global <- `global*`}] -[scope_enter global] -[visit_exp global] -[visit_id global] not free -[visit_id global] not free -[scope_exit global] -[visit_exp `global*`] -[visit_id global*] not free -[visit_id global*] no dims -[visit_exp `GLOBAL`_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`}] -[scope_enter expr_G] -[scope_enter globaltype] -[visit_exp `GLOBAL`_global(globaltype, expr_G)] -[visit_exp (globaltype, expr_G)] -[visit_exp globaltype] -[visit_id globaltype] not free -[visit_exp expr_G] -[visit_id expr_G] not free -[visit_id expr_G] not free -[visit_id globaltype] not free -[scope_exit globaltype] -[scope_exit expr_G] -[visit_exp `expr_G*`] -[visit_id expr_G*] no dims -[visit_id expr_G*] -[visit_exp `globaltype*`] -[visit_id globaltype*] no dims -[visit_id globaltype*] -[visit_exp (mem*{mem <- `mem*`} = `MEMORY`_mem(memtype)*{memtype <- `memtype*`})] -[visit_exp mem*{mem <- `mem*`}] -[scope_enter mem] -[visit_exp mem] -[visit_id mem] not free -[visit_id mem] not free -[scope_exit mem] -[visit_exp `mem*`] -[visit_id mem*] not free -[visit_id mem*] no dims -[visit_exp `MEMORY`_mem(memtype)*{memtype <- `memtype*`}] -[scope_enter memtype] -[visit_exp `MEMORY`_mem(memtype)] -[visit_exp (memtype)] -[visit_exp memtype] -[visit_id memtype] not free -[visit_id memtype] not free -[scope_exit memtype] -[visit_exp `memtype*`] -[visit_id memtype*] no dims -[visit_id memtype*] -[visit_exp (table*{table <- `table*`} = `TABLE`_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`})] -[visit_exp table*{table <- `table*`}] -[scope_enter table] -[visit_exp table] -[visit_id table] not free -[visit_id table] not free -[scope_exit table] -[visit_exp `table*`] -[visit_id table*] not free -[visit_id table*] no dims -[visit_exp `TABLE`_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`}] -[scope_enter expr_T] -[scope_enter tabletype] -[visit_exp `TABLE`_table(tabletype, expr_T)] -[visit_exp (tabletype, expr_T)] -[visit_exp tabletype] -[visit_id tabletype] not free -[visit_exp expr_T] -[visit_id expr_T] not free -[visit_id expr_T] not free -[visit_id tabletype] not free -[scope_exit tabletype] -[scope_exit expr_T] -[visit_exp `expr_T*`] -[visit_id expr_T*] no dims -[visit_id expr_T*] -[visit_exp `tabletype*`] -[visit_id tabletype*] no dims -[visit_id tabletype*] -[visit_exp (func*{func <- `func*`} = `FUNC`_func(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`})] -[visit_exp func*{func <- `func*`}] -[scope_enter func] -[visit_exp func] -[visit_id func] not free -[visit_id func] not free -[scope_exit func] -[visit_exp `func*`] -[visit_id func*] not free -[visit_id func*] no dims -[visit_exp `FUNC`_func(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}] -[scope_enter expr_F] -[scope_enter local*] -[scope_enter x] -[visit_exp `FUNC`_func(x, local*{local <- `local*`}, expr_F)] -[visit_exp (x, local*{local <- `local*`}, expr_F)] -[visit_exp x] -[visit_id x] not free -[visit_exp local*{local <- `local*`}] -[scope_enter local] -[visit_exp local] -[visit_id local] not free -[visit_id local] not free -[scope_exit local] -[visit_exp `local*`] -[visit_id local*] not free -[visit_id local*] no dims -[visit_exp expr_F] -[visit_id expr_F] not free -[visit_id expr_F] not free -[visit_id local*] not free -[visit_id local*] no dims -[visit_id x] not free -[scope_exit x] -[scope_exit local*] -[scope_exit expr_F] -[visit_exp `expr_F*`] -[visit_id expr_F*] no dims -[visit_id expr_F*] -[visit_exp `local**`] -[visit_id local**] no dims -[visit_id local**] -[visit_exp `x*`] -[visit_id x*] no dims -[visit_id x*] -[visit_exp (data*{data <- `data*`} = `DATA`_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`})] -[visit_exp data*{data <- `data*`}] -[scope_enter data] -[visit_exp data] -[visit_id data] not free -[visit_id data] not free -[scope_exit data] -[visit_exp `data*`] -[visit_id data*] not free -[visit_id data*] no dims -[visit_exp `DATA`_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`}] -[scope_enter byte*] -[scope_enter datamode] -[visit_exp `DATA`_data(byte*{byte <- `byte*`}, datamode)] -[visit_exp (byte*{byte <- `byte*`}, datamode)] -[visit_exp byte*{byte <- `byte*`}] -[scope_enter byte] -[visit_exp byte] -[visit_id byte] not free -[visit_id byte] not free -[scope_exit byte] -[visit_exp `byte*`] -[visit_id byte*] not free -[visit_id byte*] no dims -[visit_exp datamode] -[visit_id datamode] not free -[visit_id byte*] not free -[visit_id byte*] no dims -[visit_id datamode] not free -[scope_exit datamode] -[scope_exit byte*] -[visit_exp `byte**`] -[visit_id byte**] no dims -[visit_id byte**] -[visit_exp `datamode*`] -[visit_id datamode*] no dims -[visit_id datamode*] -[visit_exp (elem*{elem <- `elem*`} = `ELEM`_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`})] -[visit_exp elem*{elem <- `elem*`}] -[scope_enter elem] -[visit_exp elem] -[visit_id elem] not free -[visit_id elem] not free -[scope_exit elem] -[visit_exp `elem*`] -[visit_id elem*] not free -[visit_id elem*] no dims -[visit_exp `ELEM`_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`}] -[scope_enter elemmode] -[scope_enter elemtype] -[scope_enter expr_E*] -[visit_exp `ELEM`_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)] -[visit_exp (elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)] -[visit_exp elemtype] -[visit_id elemtype] not free -[visit_exp expr_E*{expr_E <- `expr_E*`}] -[scope_enter expr_E] -[visit_exp expr_E] -[visit_id expr_E] not free -[visit_id expr_E] not free -[scope_exit expr_E] -[visit_exp `expr_E*`] -[visit_id expr_E*] not free -[visit_id expr_E*] no dims -[visit_exp elemmode] -[visit_id elemmode] not free -[visit_id elemmode] not free -[visit_id elemtype] not free -[visit_id expr_E*] not free -[visit_id expr_E*] no dims -[scope_exit expr_E*] -[scope_exit elemtype] -[scope_exit elemmode] -[visit_exp `elemmode*`] -[visit_id elemmode*] no dims -[visit_id elemmode*] -[visit_exp `elemtype*`] -[visit_id elemtype*] no dims -[visit_id elemtype*] -[visit_exp `expr_E**`] -[visit_id expr_E**] no dims -[visit_id expr_E**] -[visit_exp (aa_I*{aa_I <- `aa_I*`} = $tagsxa(externaddr*{externaddr <- `externaddr*`}))] -[visit_exp aa_I*{aa_I <- `aa_I*`}] -[scope_enter aa_I] -[visit_exp aa_I] -[visit_id aa_I] not free -[visit_id aa_I] not free -[scope_exit aa_I] -[visit_exp `aa_I*`] -[visit_id aa_I*] no dims -[visit_id aa_I*] -[visit_exp $tagsxa(externaddr*{externaddr <- `externaddr*`})] -[visit_exp externaddr*{externaddr <- `externaddr*`}] -[scope_enter externaddr] -[visit_exp externaddr] -[visit_id externaddr] not free -[visit_id externaddr] not free -[scope_exit externaddr] -[visit_exp `externaddr*`] -[visit_id externaddr*] not free -[visit_id externaddr*] no dims -[visit_exp (ga_I*{ga_I <- `ga_I*`} = $globalsxa(externaddr*{externaddr <- `externaddr*`}))] -[visit_exp ga_I*{ga_I <- `ga_I*`}] -[scope_enter ga_I] -[visit_exp ga_I] -[visit_id ga_I] not free -[visit_id ga_I] not free -[scope_exit ga_I] -[visit_exp `ga_I*`] -[visit_id ga_I*] no dims -[visit_id ga_I*] -[visit_exp $globalsxa(externaddr*{externaddr <- `externaddr*`})] -[visit_exp externaddr*{externaddr <- `externaddr*`}] -[scope_enter externaddr] -[visit_exp externaddr] -[visit_id externaddr] not free -[visit_id externaddr] not free -[scope_exit externaddr] -[visit_exp `externaddr*`] -[visit_id externaddr*] not free -[visit_id externaddr*] no dims -[visit_exp (ma_I*{ma_I <- `ma_I*`} = $memsxa(externaddr*{externaddr <- `externaddr*`}))] -[visit_exp ma_I*{ma_I <- `ma_I*`}] -[scope_enter ma_I] -[visit_exp ma_I] -[visit_id ma_I] not free -[visit_id ma_I] not free -[scope_exit ma_I] -[visit_exp `ma_I*`] -[visit_id ma_I*] no dims -[visit_id ma_I*] -[visit_exp $memsxa(externaddr*{externaddr <- `externaddr*`})] -[visit_exp externaddr*{externaddr <- `externaddr*`}] -[scope_enter externaddr] -[visit_exp externaddr] -[visit_id externaddr] not free -[visit_id externaddr] not free -[scope_exit externaddr] -[visit_exp `externaddr*`] -[visit_id externaddr*] not free -[visit_id externaddr*] no dims -[visit_exp (ta_I*{ta_I <- `ta_I*`} = $tablesxa(externaddr*{externaddr <- `externaddr*`}))] -[visit_exp ta_I*{ta_I <- `ta_I*`}] -[scope_enter ta_I] -[visit_exp ta_I] -[visit_id ta_I] not free -[visit_id ta_I] not free -[scope_exit ta_I] -[visit_exp `ta_I*`] -[visit_id ta_I*] no dims -[visit_id ta_I*] -[visit_exp $tablesxa(externaddr*{externaddr <- `externaddr*`})] -[visit_exp externaddr*{externaddr <- `externaddr*`}] -[scope_enter externaddr] -[visit_exp externaddr] -[visit_id externaddr] not free -[visit_id externaddr] not free -[scope_exit externaddr] -[visit_exp `externaddr*`] -[visit_id externaddr*] not free -[visit_id externaddr*] no dims -[visit_exp (fa_I*{fa_I <- `fa_I*`} = $funcsxa(externaddr*{externaddr <- `externaddr*`}))] -[visit_exp fa_I*{fa_I <- `fa_I*`}] -[scope_enter fa_I] -[visit_exp fa_I] -[visit_id fa_I] not free -[visit_id fa_I] not free -[scope_exit fa_I] -[visit_exp `fa_I*`] -[visit_id fa_I*] no dims -[visit_id fa_I*] -[visit_exp $funcsxa(externaddr*{externaddr <- `externaddr*`})] -[visit_exp externaddr*{externaddr <- `externaddr*`}] -[scope_enter externaddr] -[visit_exp externaddr] -[visit_id externaddr] not free -[visit_id externaddr] not free -[scope_exit externaddr] -[visit_exp `externaddr*`] -[visit_id externaddr*] not free -[visit_id externaddr*] no dims -[visit_exp (dt*{dt <- `dt*`} = $alloctypes(type*{type <- `type*`}))] -[visit_exp dt*{dt <- `dt*`}] -[scope_enter dt] -[visit_exp dt] -[visit_id dt] not free -[visit_id dt] not free -[scope_exit dt] -[visit_exp `dt*`] -[visit_id dt*] no dims -[visit_id dt*] -[visit_exp $alloctypes(type*{type <- `type*`})] -[visit_exp type*{type <- `type*`}] -[scope_enter type] -[visit_exp type] -[visit_id type] not free -[visit_id type] not free -[scope_exit type] -[visit_exp `type*`] -[visit_id type*] not free -[visit_id type*] no dims -[visit_exp (fa*{fa <- `fa*`} = (|s.`FUNCS`_store| + i_F)^(i_F<|func*{func <- `func*`}|){})] -[visit_exp fa*{fa <- `fa*`}] -[scope_enter fa] -[visit_exp fa] -[visit_id fa] not free -[visit_id fa] not free -[scope_exit fa] -[visit_exp `fa*`] -[visit_id fa*] no dims -[visit_id fa*] -[visit_exp (|s.`FUNCS`_store| + i_F)^(i_F<|func*{func <- `func*`}|){}] -[scope_enter i_F] -[visit_exp (|s.`FUNCS`_store| + i_F)] -[visit_exp |s.`FUNCS`_store|] -[visit_exp s.`FUNCS`_store] -[visit_exp s] -[visit_id s] not free -[visit_exp i_F] -[visit_id i_F] -[visit_id i_F] not free -[scope_exit i_F] -[visit_exp |func*{func <- `func*`}|] -[visit_exp func*{func <- `func*`}] -[scope_enter func] -[visit_exp func] -[visit_id func] not free -[visit_id func] not free -[scope_exit func] -[visit_exp `func*`] -[visit_id func*] not free -[visit_id func*] no dims -[visit_exp ((s_1, aa*{aa <- `aa*`}) = $alloctags(s, $subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tagtype <- `tagtype*`}))] -[visit_exp (s_1, aa*{aa <- `aa*`})] -[visit_exp s_1] -[visit_id s_1] -[visit_exp aa*{aa <- `aa*`}] -[scope_enter aa] -[visit_exp aa] -[visit_id aa] not free -[visit_id aa] not free -[scope_exit aa] -[visit_exp `aa*`] -[visit_id aa*] no dims -[visit_id aa*] -[visit_exp $alloctags(s, $subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tagtype <- `tagtype*`})] -[visit_exp s] -[visit_id s] not free -[visit_exp $subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tagtype <- `tagtype*`}] -[scope_enter tagtype] -[visit_exp $subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})] -[visit_exp tagtype] -[visit_id tagtype] not free -[visit_exp (dt : deftype <: typeuse)*{dt <- `dt*`}] -[scope_enter dt] -[visit_exp (dt : deftype <: typeuse)] -[visit_exp dt] -[visit_id dt] not free -[visit_id dt] not free -[scope_exit dt] -[visit_exp `dt*`] -[visit_id dt*] not free -[visit_id dt*] no dims -[visit_id tagtype] not free -[scope_exit tagtype] -[visit_exp `tagtype*`] -[visit_id tagtype*] not free -[visit_id tagtype*] no dims -[visit_exp ((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*`}))] -[visit_exp (s_2, ga*{ga <- `ga*`})] -[visit_exp s_2] -[visit_id s_2] -[visit_exp ga*{ga <- `ga*`}] -[scope_enter ga] -[visit_exp ga] -[visit_id ga] not free -[visit_id ga] not free -[scope_exit ga] -[visit_exp `ga*`] -[visit_id ga*] no dims -[visit_id ga*] -[visit_exp $allocglobals(s_1, $subst_all_globaltype(globaltype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{globaltype <- `globaltype*`}, val_G*{val_G <- `val_G*`})] -[visit_exp s_1] -[visit_id s_1] not free -[visit_exp $subst_all_globaltype(globaltype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{globaltype <- `globaltype*`}] -[scope_enter globaltype] -[visit_exp $subst_all_globaltype(globaltype, (dt : deftype <: typeuse)*{dt <- `dt*`})] -[visit_exp globaltype] -[visit_id globaltype] not free -[visit_exp (dt : deftype <: typeuse)*{dt <- `dt*`}] -[scope_enter dt] -[visit_exp (dt : deftype <: typeuse)] -[visit_exp dt] -[visit_id dt] not free -[visit_id dt] not free -[scope_exit dt] -[visit_exp `dt*`] -[visit_id dt*] not free -[visit_id dt*] no dims -[visit_id globaltype] not free -[scope_exit globaltype] -[visit_exp `globaltype*`] -[visit_id globaltype*] not free -[visit_id globaltype*] no dims -[visit_exp val_G*{val_G <- `val_G*`}] -[scope_enter val_G] -[visit_exp val_G] -[visit_id val_G] not free -[visit_id val_G] not free -[scope_exit val_G] -[visit_exp `val_G*`] -[visit_id val_G*] not free -[visit_id val_G*] no dims -[visit_exp ((s_3, ma*{ma <- `ma*`}) = $allocmems(s_2, $subst_all_memtype(memtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{memtype <- `memtype*`}))] -[visit_exp (s_3, ma*{ma <- `ma*`})] -[visit_exp s_3] -[visit_id s_3] -[visit_exp ma*{ma <- `ma*`}] -[scope_enter ma] -[visit_exp ma] -[visit_id ma] not free -[visit_id ma] not free -[scope_exit ma] -[visit_exp `ma*`] -[visit_id ma*] no dims -[visit_id ma*] -[visit_exp $allocmems(s_2, $subst_all_memtype(memtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{memtype <- `memtype*`})] -[visit_exp s_2] -[visit_id s_2] not free -[visit_exp $subst_all_memtype(memtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{memtype <- `memtype*`}] -[scope_enter memtype] -[visit_exp $subst_all_memtype(memtype, (dt : deftype <: typeuse)*{dt <- `dt*`})] -[visit_exp memtype] -[visit_id memtype] not free -[visit_exp (dt : deftype <: typeuse)*{dt <- `dt*`}] -[scope_enter dt] -[visit_exp (dt : deftype <: typeuse)] -[visit_exp dt] -[visit_id dt] not free -[visit_id dt] not free -[scope_exit dt] -[visit_exp `dt*`] -[visit_id dt*] not free -[visit_id dt*] no dims -[visit_id memtype] not free -[scope_exit memtype] -[visit_exp `memtype*`] -[visit_id memtype*] not free -[visit_id memtype*] no dims -[visit_exp ((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*`}))] -[visit_exp (s_4, ta*{ta <- `ta*`})] -[visit_exp s_4] -[visit_id s_4] -[visit_exp ta*{ta <- `ta*`}] -[scope_enter ta] -[visit_exp ta] -[visit_id ta] not free -[visit_id ta] not free -[scope_exit ta] -[visit_exp `ta*`] -[visit_id ta*] no dims -[visit_id ta*] -[visit_exp $alloctables(s_3, $subst_all_tabletype(tabletype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tabletype <- `tabletype*`}, ref_T*{ref_T <- `ref_T*`})] -[visit_exp s_3] -[visit_id s_3] not free -[visit_exp $subst_all_tabletype(tabletype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tabletype <- `tabletype*`}] -[scope_enter tabletype] -[visit_exp $subst_all_tabletype(tabletype, (dt : deftype <: typeuse)*{dt <- `dt*`})] -[visit_exp tabletype] -[visit_id tabletype] not free -[visit_exp (dt : deftype <: typeuse)*{dt <- `dt*`}] -[scope_enter dt] -[visit_exp (dt : deftype <: typeuse)] -[visit_exp dt] -[visit_id dt] not free -[visit_id dt] not free -[scope_exit dt] -[visit_exp `dt*`] -[visit_id dt*] not free -[visit_id dt*] no dims -[visit_id tabletype] not free -[scope_exit tabletype] -[visit_exp `tabletype*`] -[visit_id tabletype*] not free -[visit_id tabletype*] no dims -[visit_exp ref_T*{ref_T <- `ref_T*`}] -[scope_enter ref_T] -[visit_exp ref_T] -[visit_id ref_T] not free -[visit_id ref_T] not free -[scope_exit ref_T] -[visit_exp `ref_T*`] -[visit_id ref_T*] not free -[visit_id ref_T*] no dims -[visit_exp ((s_5, da*{da <- `da*`}) = $allocdatas(s_4, `OK`_datatype^|data*{data <- `data*`}|{}, byte*{byte <- `byte*`}*{`byte*` <- `byte**`}))] -[visit_exp (s_5, da*{da <- `da*`})] -[visit_exp s_5] -[visit_id s_5] -[visit_exp da*{da <- `da*`}] -[scope_enter da] -[visit_exp da] -[visit_id da] not free -[visit_id da] not free -[scope_exit da] -[visit_exp `da*`] -[visit_id da*] no dims -[visit_id da*] -[visit_exp $allocdatas(s_4, `OK`_datatype^|data*{data <- `data*`}|{}, byte*{byte <- `byte*`}*{`byte*` <- `byte**`})] -[visit_exp s_4] -[visit_id s_4] not free -[visit_exp `OK`_datatype^|data*{data <- `data*`}|{}] -[visit_exp `OK`_datatype] -[visit_exp ()] -[visit_exp |data*{data <- `data*`}|] -[visit_exp data*{data <- `data*`}] -[scope_enter data] -[visit_exp data] -[visit_id data] not free -[visit_id data] not free -[scope_exit data] -[visit_exp `data*`] -[visit_id data*] not free -[visit_id data*] no dims -[visit_exp byte*{byte <- `byte*`}*{`byte*` <- `byte**`}] -[scope_enter byte*] -[visit_exp byte*{byte <- `byte*`}] -[scope_enter byte] -[visit_exp byte] -[visit_id byte] not free -[visit_id byte] not free -[scope_exit byte] -[visit_exp `byte*`] -[visit_id byte*] not free -[visit_id byte*] no dims -[visit_id byte*] not free -[visit_id byte*] no dims -[scope_exit byte*] -[visit_exp `byte**`] -[visit_id byte**] not free -[visit_id byte**] no dims -[visit_exp ((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**`}))] -[visit_exp (s_6, ea*{ea <- `ea*`})] -[visit_exp s_6] -[visit_id s_6] -[visit_exp ea*{ea <- `ea*`}] -[scope_enter ea] -[visit_exp ea] -[visit_id ea] not free -[visit_id ea] not free -[scope_exit ea] -[visit_exp `ea*`] -[visit_id ea*] no dims -[visit_id ea*] -[visit_exp $allocelems(s_5, $subst_all_reftype(elemtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{elemtype <- `elemtype*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`})] -[visit_exp s_5] -[visit_id s_5] not free -[visit_exp $subst_all_reftype(elemtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{elemtype <- `elemtype*`}] -[scope_enter elemtype] -[visit_exp $subst_all_reftype(elemtype, (dt : deftype <: typeuse)*{dt <- `dt*`})] -[visit_exp elemtype] -[visit_id elemtype] not free -[visit_exp (dt : deftype <: typeuse)*{dt <- `dt*`}] -[scope_enter dt] -[visit_exp (dt : deftype <: typeuse)] -[visit_exp dt] -[visit_id dt] not free -[visit_id dt] not free -[scope_exit dt] -[visit_exp `dt*`] -[visit_id dt*] not free -[visit_id dt*] no dims -[visit_id elemtype] not free -[scope_exit elemtype] -[visit_exp `elemtype*`] -[visit_id elemtype*] not free -[visit_id elemtype*] no dims -[visit_exp ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}] -[scope_enter ref_E*] -[visit_exp ref_E*{ref_E <- `ref_E*`}] -[scope_enter ref_E] -[visit_exp ref_E] -[visit_id ref_E] not free -[visit_id ref_E] not free -[scope_exit ref_E] -[visit_exp `ref_E*`] -[visit_id ref_E*] not free -[visit_id ref_E*] no dims -[visit_id ref_E*] not free -[visit_id ref_E*] no dims -[scope_exit ref_E*] -[visit_exp `ref_E**`] -[visit_id ref_E**] not free -[visit_id ref_E**] no dims -[visit_exp ((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*`}|{}))] -[visit_exp (s_7, fa*{fa <- `fa*`})] -[visit_exp s_7] -[visit_id s_7] not free -[visit_exp fa*{fa <- `fa*`}] -[scope_enter fa] -[visit_exp fa] -[visit_id fa] not free -[visit_id fa] not free -[scope_exit fa] -[visit_exp `fa*`] -[visit_id fa*] not free -[visit_id fa*] no dims -[visit_exp $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*`}|{})] -[visit_exp s_6] -[visit_id s_6] not free -[visit_exp dt*{dt <- `dt*`}[x!`%`_idx.0]*{x <- `x*`}] -[scope_enter x] -[visit_exp dt*{dt <- `dt*`}[x!`%`_idx.0]] -[visit_exp dt*{dt <- `dt*`}] -[scope_enter dt] -[visit_exp dt] -[visit_id dt] not free -[visit_id dt] not free -[scope_exit dt] -[visit_exp `dt*`] -[visit_id dt*] not free -[visit_id dt*] no dims -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_id x] not free -[scope_exit x] -[visit_exp `x*`] -[visit_id x*] not free -[visit_id x*] no dims -[visit_exp `FUNC`_funccode(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}] -[scope_enter expr_F] -[scope_enter local*] -[scope_enter x] -[visit_exp `FUNC`_funccode(x, local*{local <- `local*`}, expr_F)] -[visit_exp (x, local*{local <- `local*`}, expr_F)] -[visit_exp x] -[visit_id x] not free -[visit_exp local*{local <- `local*`}] -[scope_enter local] -[visit_exp local] -[visit_id local] not free -[visit_id local] not free -[scope_exit local] -[visit_exp `local*`] -[visit_id local*] not free -[visit_id local*] no dims -[visit_exp expr_F] -[visit_id expr_F] not free -[visit_id expr_F] not free -[visit_id local*] not free -[visit_id local*] no dims -[visit_id x] not free -[scope_exit x] -[scope_exit local*] -[scope_exit expr_F] -[visit_exp `expr_F*`] -[visit_id expr_F*] not free -[visit_id expr_F*] no dims -[visit_exp `local**`] -[visit_id local**] not free -[visit_id local**] no dims -[visit_exp `x*`] -[visit_id x*] not free -[visit_id x*] no dims -[visit_exp moduleinst^|func*{func <- `func*`}|{}] -[visit_exp moduleinst] -[visit_id moduleinst] not free -[visit_exp |func*{func <- `func*`}|] -[visit_exp func*{func <- `func*`}] -[scope_enter func] -[visit_exp func] -[visit_id func] not free -[visit_id func] not free -[scope_exit func] -[visit_exp `func*`] -[visit_id func*] not free -[visit_id func*] no dims -[visit_exp (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*`}))] -[visit_exp xi*{xi <- `xi*`}] -[scope_enter xi] -[visit_exp xi] -[visit_id xi] not free -[visit_id xi] not free -[scope_exit xi] -[visit_exp `xi*`] -[visit_id xi*] no dims -[visit_id xi*] -[visit_exp $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*`})] -[visit_exp {`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` []}] -[visit_exp []] -[visit_exp aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}] -[visit_exp aa_I*{aa_I <- `aa_I*`}] -[scope_enter aa_I] -[visit_exp aa_I] -[visit_id aa_I] not free -[visit_id aa_I] not free -[scope_exit aa_I] -[visit_exp `aa_I*`] -[visit_id aa_I*] not free -[visit_id aa_I*] no dims -[visit_exp aa*{aa <- `aa*`}] -[scope_enter aa] -[visit_exp aa] -[visit_id aa] not free -[visit_id aa] not free -[scope_exit aa] -[visit_exp `aa*`] -[visit_id aa*] not free -[visit_id aa*] no dims -[visit_exp ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}] -[visit_exp ga_I*{ga_I <- `ga_I*`}] -[scope_enter ga_I] -[visit_exp ga_I] -[visit_id ga_I] not free -[visit_id ga_I] not free -[scope_exit ga_I] -[visit_exp `ga_I*`] -[visit_id ga_I*] not free -[visit_id ga_I*] no dims -[visit_exp ga*{ga <- `ga*`}] -[scope_enter ga] -[visit_exp ga] -[visit_id ga] not free -[visit_id ga] not free -[scope_exit ga] -[visit_exp `ga*`] -[visit_id ga*] not free -[visit_id ga*] no dims -[visit_exp ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}] -[visit_exp ma_I*{ma_I <- `ma_I*`}] -[scope_enter ma_I] -[visit_exp ma_I] -[visit_id ma_I] not free -[visit_id ma_I] not free -[scope_exit ma_I] -[visit_exp `ma_I*`] -[visit_id ma_I*] not free -[visit_id ma_I*] no dims -[visit_exp ma*{ma <- `ma*`}] -[scope_enter ma] -[visit_exp ma] -[visit_id ma] not free -[visit_id ma] not free -[scope_exit ma] -[visit_exp `ma*`] -[visit_id ma*] not free -[visit_id ma*] no dims -[visit_exp ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}] -[visit_exp ta_I*{ta_I <- `ta_I*`}] -[scope_enter ta_I] -[visit_exp ta_I] -[visit_id ta_I] not free -[visit_id ta_I] not free -[scope_exit ta_I] -[visit_exp `ta_I*`] -[visit_id ta_I*] not free -[visit_id ta_I*] no dims -[visit_exp ta*{ta <- `ta*`}] -[scope_enter ta] -[visit_exp ta] -[visit_id ta] not free -[visit_id ta] not free -[scope_exit ta] -[visit_exp `ta*`] -[visit_id ta*] not free -[visit_id ta*] no dims -[visit_exp fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}] -[visit_exp fa_I*{fa_I <- `fa_I*`}] -[scope_enter fa_I] -[visit_exp fa_I] -[visit_id fa_I] not free -[visit_id fa_I] not free -[scope_exit fa_I] -[visit_exp `fa_I*`] -[visit_id fa_I*] not free -[visit_id fa_I*] no dims -[visit_exp fa*{fa <- `fa*`}] -[scope_enter fa] -[visit_exp fa] -[visit_id fa] not free -[visit_id fa] not free -[scope_exit fa] -[visit_exp `fa*`] -[visit_id fa*] not free -[visit_id fa*] no dims -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp export*{export <- `export*`}] -[scope_enter export] -[visit_exp export] -[visit_id export] not free -[visit_id export] not free -[scope_exit export] -[visit_exp `export*`] -[visit_id export*] not free -[visit_id export*] no dims -[visit_exp (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*`}})] -[visit_exp moduleinst] -[visit_id moduleinst] not free -[visit_exp {`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*`}}] -[visit_exp dt*{dt <- `dt*`}] -[scope_enter dt] -[visit_exp dt] -[visit_id dt] not free -[visit_id dt] not free -[scope_exit dt] -[visit_exp `dt*`] -[visit_id dt*] not free -[visit_id dt*] no dims -[visit_exp aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}] -[visit_exp aa_I*{aa_I <- `aa_I*`}] -[scope_enter aa_I] -[visit_exp aa_I] -[visit_id aa_I] not free -[visit_id aa_I] not free -[scope_exit aa_I] -[visit_exp `aa_I*`] -[visit_id aa_I*] not free -[visit_id aa_I*] no dims -[visit_exp aa*{aa <- `aa*`}] -[scope_enter aa] -[visit_exp aa] -[visit_id aa] not free -[visit_id aa] not free -[scope_exit aa] -[visit_exp `aa*`] -[visit_id aa*] not free -[visit_id aa*] no dims -[visit_exp ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}] -[visit_exp ga_I*{ga_I <- `ga_I*`}] -[scope_enter ga_I] -[visit_exp ga_I] -[visit_id ga_I] not free -[visit_id ga_I] not free -[scope_exit ga_I] -[visit_exp `ga_I*`] -[visit_id ga_I*] not free -[visit_id ga_I*] no dims -[visit_exp ga*{ga <- `ga*`}] -[scope_enter ga] -[visit_exp ga] -[visit_id ga] not free -[visit_id ga] not free -[scope_exit ga] -[visit_exp `ga*`] -[visit_id ga*] not free -[visit_id ga*] no dims -[visit_exp ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}] -[visit_exp ma_I*{ma_I <- `ma_I*`}] -[scope_enter ma_I] -[visit_exp ma_I] -[visit_id ma_I] not free -[visit_id ma_I] not free -[scope_exit ma_I] -[visit_exp `ma_I*`] -[visit_id ma_I*] not free -[visit_id ma_I*] no dims -[visit_exp ma*{ma <- `ma*`}] -[scope_enter ma] -[visit_exp ma] -[visit_id ma] not free -[visit_id ma] not free -[scope_exit ma] -[visit_exp `ma*`] -[visit_id ma*] not free -[visit_id ma*] no dims -[visit_exp ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}] -[visit_exp ta_I*{ta_I <- `ta_I*`}] -[scope_enter ta_I] -[visit_exp ta_I] -[visit_id ta_I] not free -[visit_id ta_I] not free -[scope_exit ta_I] -[visit_exp `ta_I*`] -[visit_id ta_I*] not free -[visit_id ta_I*] no dims -[visit_exp ta*{ta <- `ta*`}] -[scope_enter ta] -[visit_exp ta] -[visit_id ta] not free -[visit_id ta] not free -[scope_exit ta] -[visit_exp `ta*`] -[visit_id ta*] not free -[visit_id ta*] no dims -[visit_exp fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}] -[visit_exp fa_I*{fa_I <- `fa_I*`}] -[scope_enter fa_I] -[visit_exp fa_I] -[visit_id fa_I] not free -[visit_id fa_I] not free -[scope_exit fa_I] -[visit_exp `fa_I*`] -[visit_id fa_I*] not free -[visit_id fa_I*] no dims -[visit_exp fa*{fa <- `fa*`}] -[scope_enter fa] -[visit_exp fa] -[visit_id fa] not free -[visit_id fa] not free -[scope_exit fa] -[visit_exp `fa*`] -[visit_id fa*] not free -[visit_id fa*] no dims -[visit_exp da*{da <- `da*`}] -[scope_enter da] -[visit_exp da] -[visit_id da] not free -[visit_id da] not free -[scope_exit da] -[visit_exp `da*`] -[visit_id da*] not free -[visit_id da*] no dims -[visit_exp ea*{ea <- `ea*`}] -[scope_enter ea] -[visit_exp ea] -[visit_id ea] not free -[visit_id ea] not free -[scope_exit ea] -[visit_exp `ea*`] -[visit_id ea*] not free -[visit_id ea*] no dims -[visit_exp xi*{xi <- `xi*`}] -[scope_enter xi] -[visit_exp xi] -[visit_id xi] not free -[visit_id xi] not free -[scope_exit xi] -[visit_exp `xi*`] -[visit_id xi*] not free -[visit_id xi*] no dims -=> - ;; ../../../../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*, `expr_G*` : expr*, `globaltype*` : globaltype*, `memtype*` : memtype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `expr_F*` : expr*, `local**` : local**, `x*` : idx*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `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*`})) - -- if (fa*{fa <- `fa*`} = (|s.`FUNCS`_store| + i_F)^(i_F<|func*{func <- `func*`}|){}) - -- 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*`}[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*`}}) -[check_dims] data dataidx -DecD rundata_(dataidx : dataidx, data : data) : instr* -[visit_id dataidx] not free -[visit_id data] not free -[check_dims] b n x -[visit_exp x] -[visit_id x] -[visit_exp `DATA`_data(b^n{b <- `b*`}, `PASSIVE`_datamode)] -[visit_exp (b^n{b <- `b*`}, `PASSIVE`_datamode)] -[visit_exp b^n{b <- `b*`}] -[scope_enter b] -[visit_exp b] -[visit_id b] not free -[visit_id b] not free -[scope_exit b] -[visit_exp n] -[visit_id n] -[visit_exp `b*`] -[visit_id b*] no dims -[visit_id b*] -[visit_exp `PASSIVE`_datamode] -[visit_exp ()] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $rundata_{x : idx, n : n, `b*` : byte*}(x, `DATA`_data(b^n{b <- `b*`}, `PASSIVE`_datamode)) = [] -[check_dims] b instr n x y -[visit_exp x] -[visit_id x] -[visit_exp `DATA`_data(b^n{b <- `b*`}, `ACTIVE`_datamode(y, instr*{instr <- `instr*`}))] -[visit_exp (b^n{b <- `b*`}, `ACTIVE`_datamode(y, instr*{instr <- `instr*`}))] -[visit_exp b^n{b <- `b*`}] -[scope_enter b] -[visit_exp b] -[visit_id b] not free -[visit_id b] not free -[scope_exit b] -[visit_exp n] -[visit_id n] -[visit_exp `b*`] -[visit_id b*] no dims -[visit_id b*] -[visit_exp `ACTIVE`_datamode(y, instr*{instr <- `instr*`})] -[visit_exp (y, instr*{instr <- `instr*`})] -[visit_exp y] -[visit_id y] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] no dims -[visit_id instr*] -[visit_exp instr*{instr <- `instr*`} ++ [`CONST`_instr(`I32`_numtype, `%`_num_(0)) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `MEMORY.INIT`_instr(y, x) `DATA.DROP`_instr(x)]] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] not free -[visit_id instr*] no dims -[visit_exp [`CONST`_instr(`I32`_numtype, `%`_num_(0)) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `MEMORY.INIT`_instr(y, x) `DATA.DROP`_instr(x)]] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(0))] -[visit_exp (`I32`_numtype, `%`_num_(0))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(0)] -[visit_exp (0)] -[visit_exp 0] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] -[visit_exp (`I32`_numtype, `%`_num_(n))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] not free -[visit_exp `MEMORY.INIT`_instr(y, x)] -[visit_exp (y, x)] -[visit_exp y] -[visit_id y] not free -[visit_exp x] -[visit_id x] not free -[visit_exp `DATA.DROP`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] not free -=> - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $rundata_{x : idx, n : n, `b*` : byte*, 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)] -[check_dims] elem elemidx -DecD runelem_(elemidx : elemidx, elem : elem) : instr* -[visit_id elemidx] not free -[visit_id elem] not free -[check_dims] e n rt x -[visit_exp x] -[visit_id x] -[visit_exp `ELEM`_elem(rt, e^n{e <- `e*`}, `PASSIVE`_elemmode)] -[visit_exp (rt, e^n{e <- `e*`}, `PASSIVE`_elemmode)] -[visit_exp rt] -[visit_id rt] -[visit_exp e^n{e <- `e*`}] -[scope_enter e] -[visit_exp e] -[visit_id e] not free -[visit_id e] not free -[scope_exit e] -[visit_exp n] -[visit_id n] -[visit_exp `e*`] -[visit_id e*] no dims -[visit_id e*] -[visit_exp `PASSIVE`_elemmode] -[visit_exp ()] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*}(x, `ELEM`_elem(rt, e^n{e <- `e*`}, `PASSIVE`_elemmode)) = [] -[check_dims] e n rt x -[visit_exp x] -[visit_id x] -[visit_exp `ELEM`_elem(rt, e^n{e <- `e*`}, `DECLARE`_elemmode)] -[visit_exp (rt, e^n{e <- `e*`}, `DECLARE`_elemmode)] -[visit_exp rt] -[visit_id rt] -[visit_exp e^n{e <- `e*`}] -[scope_enter e] -[visit_exp e] -[visit_id e] not free -[visit_id e] not free -[scope_exit e] -[visit_exp n] -[visit_id n] -[visit_exp `e*`] -[visit_id e*] no dims -[visit_id e*] -[visit_exp `DECLARE`_elemmode] -[visit_exp ()] -[visit_exp [`ELEM.DROP`_instr(x)]] -[visit_exp `ELEM.DROP`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] not free -=> - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*}(x, `ELEM`_elem(rt, e^n{e <- `e*`}, `DECLARE`_elemmode)) = [`ELEM.DROP`_instr(x)] -[check_dims] e instr n rt x y -[visit_exp x] -[visit_id x] -[visit_exp `ELEM`_elem(rt, e^n{e <- `e*`}, `ACTIVE`_elemmode(y, instr*{instr <- `instr*`}))] -[visit_exp (rt, e^n{e <- `e*`}, `ACTIVE`_elemmode(y, instr*{instr <- `instr*`}))] -[visit_exp rt] -[visit_id rt] -[visit_exp e^n{e <- `e*`}] -[scope_enter e] -[visit_exp e] -[visit_id e] not free -[visit_id e] not free -[scope_exit e] -[visit_exp n] -[visit_id n] -[visit_exp `e*`] -[visit_id e*] no dims -[visit_id e*] -[visit_exp `ACTIVE`_elemmode(y, instr*{instr <- `instr*`})] -[visit_exp (y, instr*{instr <- `instr*`})] -[visit_exp y] -[visit_id y] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] no dims -[visit_id instr*] -[visit_exp instr*{instr <- `instr*`} ++ [`CONST`_instr(`I32`_numtype, `%`_num_(0)) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `TABLE.INIT`_instr(y, x) `ELEM.DROP`_instr(x)]] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] not free -[visit_id instr*] no dims -[visit_exp [`CONST`_instr(`I32`_numtype, `%`_num_(0)) `CONST`_instr(`I32`_numtype, `%`_num_(n)) `TABLE.INIT`_instr(y, x) `ELEM.DROP`_instr(x)]] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(0))] -[visit_exp (`I32`_numtype, `%`_num_(0))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(0)] -[visit_exp (0)] -[visit_exp 0] -[visit_exp `CONST`_instr(`I32`_numtype, `%`_num_(n))] -[visit_exp (`I32`_numtype, `%`_num_(n))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `%`_num_(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] not free -[visit_exp `TABLE.INIT`_instr(y, x)] -[visit_exp (y, x)] -[visit_exp y] -[visit_id y] not free -[visit_exp x] -[visit_id x] not free -[visit_exp `ELEM.DROP`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] not free -=> - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*, 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)] -[check_dims] _ state -DecD evalglobals(state : state, globaltype*, expr*) : (state, val*) -[visit_id state] not free -[visit_id _] not free -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_exit _] -[scope_exit _] -[check_dims] z -[visit_exp z] -[visit_id z] -[visit_exp []] -[visit_exp []] -[visit_exp (z, [])] -[visit_exp z] -[visit_id z] not free -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $evalglobals{z : state}(z, [], []) = (z, []) -[check_dims] a expr expr' f gt gt' s s' val val' z z' -[visit_exp z] -[visit_id z] -[visit_exp [gt] ++ gt'*{gt' <- `gt'*`}] -[visit_exp [gt]] -[visit_exp gt] -[visit_id gt] -[visit_exp gt'*{gt' <- `gt'*`}] -[scope_enter gt'] -[visit_exp gt'] -[visit_id gt'] not free -[visit_id gt'] not free -[scope_exit gt'] -[visit_exp `gt'*`] -[visit_id gt'*] no dims -[visit_id gt'*] -[visit_exp [expr] ++ expr'*{expr' <- `expr'*`}] -[visit_exp [expr]] -[visit_exp expr] -[visit_id expr] -[visit_exp expr'*{expr' <- `expr'*`}] -[scope_enter expr'] -[visit_exp expr'] -[visit_id expr'] not free -[visit_id expr'] not free -[scope_exit expr'] -[visit_exp `expr'*`] -[visit_id expr'*] no dims -[visit_id expr'*] -[visit_exp (z', [val] ++ val'*{val' <- `val'*`})] -[visit_exp z'] -[visit_id z'] -[visit_exp [val] ++ val'*{val' <- `val'*`}] -[visit_exp [val]] -[visit_exp val] -[visit_id val] -[visit_exp val'*{val' <- `val'*`}] -[scope_enter val'] -[visit_exp val'] -[visit_id val'] not free -[visit_id val'] not free -[scope_exit val'] -[visit_exp `val'*`] -[visit_id val'*] no dims -[visit_id val'*] -[visit_exp (z, expr, z, [val])] -[visit_exp z] -[visit_id z] not free -[visit_exp expr] -[visit_id expr] not free -[visit_exp z] -[visit_id z] not free -[visit_exp [val]] -[visit_exp val] -[visit_id val] not free -[visit_exp (z = `%;%`_state(s, f))] -[visit_exp z] -[visit_id z] not free -[visit_exp `%;%`_state(s, f)] -[visit_exp (s, f)] -[visit_exp s] -[visit_id s] -[visit_exp f] -[visit_id f] -[visit_exp ((s', a) = $allocglobal(s, gt, val))] -[visit_exp (s', a)] -[visit_exp s'] -[visit_id s'] -[visit_exp a] -[visit_id a] -[visit_exp $allocglobal(s, gt, val)] -[visit_exp s] -[visit_id s] not free -[visit_exp gt] -[visit_id gt] not free -[visit_exp val] -[visit_id val] not free -[visit_exp ((z', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[`MODULE`_frame.`GLOBALS`_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`}))] -[visit_exp (z', val'*{val' <- `val'*`})] -[visit_exp z'] -[visit_id z'] not free -[visit_exp val'*{val' <- `val'*`}] -[scope_enter val'] -[visit_exp val'] -[visit_id val'] not free -[visit_id val'] not free -[scope_exit val'] -[visit_exp `val'*`] -[visit_id val'*] not free -[visit_id val'*] no dims -[visit_exp $evalglobals(`%;%`_state(s', f[`MODULE`_frame.`GLOBALS`_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`})] -[visit_exp `%;%`_state(s', f[`MODULE`_frame.`GLOBALS`_moduleinst =++ [a]])] -[visit_exp (s', f[`MODULE`_frame.`GLOBALS`_moduleinst =++ [a]])] -[visit_exp s'] -[visit_id s'] not free -[visit_exp f[`MODULE`_frame.`GLOBALS`_moduleinst =++ [a]]] -[visit_exp f] -[visit_id f] not free -[visit_exp [a]] -[visit_exp a] -[visit_id a] not free -[visit_exp gt'*{gt' <- `gt'*`}] -[scope_enter gt'] -[visit_exp gt'] -[visit_id gt'] not free -[visit_id gt'] not free -[scope_exit gt'] -[visit_exp `gt'*`] -[visit_id gt'*] not free -[visit_id gt'*] no dims -[visit_exp expr'*{expr' <- `expr'*`}] -[scope_enter expr'] -[visit_exp expr'] -[visit_id expr'] not free -[visit_id expr'] not free -[scope_exit expr'] -[visit_exp `expr'*`] -[visit_id expr'*] not free -[visit_id expr'*] no dims -=> - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - 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]) - -- 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'*`})) -[check_dims] _ module store -DecD instantiate(store : store, module : module, externaddr*) : config -[visit_id store] not free -[visit_id module] not free -[visit_id _] not free -[check_dims] byte data datamode elem elemmode export expr_E expr_G expr_T externaddr func global globaltype i_D i_E i_F import instr_D instr_E instr_S mem module moduleinst moduleinst_0 ref_E ref_T reftype s s' start table tabletype tag type val_G x xt_E xt_I z z' -[visit_exp s] -[visit_id s] -[visit_exp module] -[visit_id module] -[visit_exp externaddr*{externaddr <- `externaddr*`}] -[scope_enter externaddr] -[visit_exp externaddr] -[visit_id externaddr] not free -[visit_id externaddr] not free -[scope_exit externaddr] -[visit_exp `externaddr*`] -[visit_id externaddr*] no dims -[visit_id externaddr*] -[visit_exp `%;%`_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?`}))] -[visit_exp (`%;%`_state(s', {`LOCALS` [], `MODULE` moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`}))] -[visit_exp `%;%`_state(s', {`LOCALS` [], `MODULE` moduleinst})] -[visit_exp (s', {`LOCALS` [], `MODULE` moduleinst})] -[visit_exp s'] -[visit_id s'] -[visit_exp {`LOCALS` [], `MODULE` moduleinst}] -[visit_exp []] -[visit_exp moduleinst] -[visit_id moduleinst] -[visit_exp instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})] -[visit_exp instr_E*{instr_E <- `instr_E*`}] -[scope_enter instr_E] -[visit_exp instr_E] -[visit_id instr_E] not free -[visit_id instr_E] not free -[scope_exit instr_E] -[visit_exp `instr_E*`] -[visit_id instr_E*] no dims -[visit_id instr_E*] -[visit_exp instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})] -[visit_exp instr_D*{instr_D <- `instr_D*`}] -[scope_enter instr_D] -[visit_exp instr_D] -[visit_id instr_D] not free -[visit_id instr_D] not free -[scope_exit instr_D] -[visit_exp `instr_D*`] -[visit_id instr_D*] no dims -[visit_id instr_D*] -[visit_exp lift(instr_S?{instr_S <- `instr_S?`})] -[visit_exp instr_S?{instr_S <- `instr_S?`}] -[scope_enter instr_S] -[visit_exp instr_S] -[visit_id instr_S] not free -[visit_id instr_S] not free -[scope_exit instr_S] -[visit_exp `instr_S?`] -[visit_id instr_S?] no dims -[visit_id instr_S?] -[visit_exp (module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))] -[visit_exp module] -[visit_id module] not free -[visit_exp `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})] -[visit_exp (xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})] -[visit_exp xt_I*{xt_I <- `xt_I*`}] -[scope_enter xt_I] -[visit_exp xt_I] -[visit_id xt_I] not free -[visit_id xt_I] not free -[scope_exit xt_I] -[visit_exp `xt_I*`] -[visit_id xt_I*] no dims -[visit_id xt_I*] -[visit_exp xt_E*{xt_E <- `xt_E*`}] -[scope_enter xt_E] -[visit_exp xt_E] -[visit_id xt_E] not free -[visit_id xt_E] not free -[scope_exit xt_E] -[visit_exp `xt_E*`] -[visit_id xt_E*] no dims -[visit_id xt_E*] -[scope_enter externaddr] -[scope_enter xt_I] -[visit_exp (s, externaddr, xt_I)] -[visit_exp s] -[visit_id s] not free -[visit_exp externaddr] -[visit_id externaddr] not free -[visit_exp xt_I] -[visit_id xt_I] not free -[visit_id externaddr] not free -[visit_id xt_I] not free -[scope_exit xt_I] -[scope_exit externaddr] -[visit_exp `externaddr*`] -[visit_id externaddr*] not free -[visit_id externaddr*] no dims -[visit_exp `xt_I*`] -[visit_id xt_I*] not free -[visit_id xt_I*] no dims -[visit_exp (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*`}))] -[visit_exp module] -[visit_id module] not free -[visit_exp `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*`})] -[visit_exp (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*`})] -[visit_exp type*{type <- `type*`}] -[scope_enter type] -[visit_exp type] -[visit_id type] not free -[visit_id type] not free -[scope_exit type] -[visit_exp `type*`] -[visit_id type*] no dims -[visit_id type*] -[visit_exp import*{import <- `import*`}] -[scope_enter import] -[visit_exp import] -[visit_id import] not free -[visit_id import] not free -[scope_exit import] -[visit_exp `import*`] -[visit_id import*] no dims -[visit_id import*] -[visit_exp tag*{tag <- `tag*`}] -[scope_enter tag] -[visit_exp tag] -[visit_id tag] not free -[visit_id tag] not free -[scope_exit tag] -[visit_exp `tag*`] -[visit_id tag*] no dims -[visit_id tag*] -[visit_exp global*{global <- `global*`}] -[scope_enter global] -[visit_exp global] -[visit_id global] not free -[visit_id global] not free -[scope_exit global] -[visit_exp `global*`] -[visit_id global*] no dims -[visit_id global*] -[visit_exp mem*{mem <- `mem*`}] -[scope_enter mem] -[visit_exp mem] -[visit_id mem] not free -[visit_id mem] not free -[scope_exit mem] -[visit_exp `mem*`] -[visit_id mem*] no dims -[visit_id mem*] -[visit_exp table*{table <- `table*`}] -[scope_enter table] -[visit_exp table] -[visit_id table] not free -[visit_id table] not free -[scope_exit table] -[visit_exp `table*`] -[visit_id table*] no dims -[visit_id table*] -[visit_exp func*{func <- `func*`}] -[scope_enter func] -[visit_exp func] -[visit_id func] not free -[visit_id func] not free -[scope_exit func] -[visit_exp `func*`] -[visit_id func*] no dims -[visit_id func*] -[visit_exp data*{data <- `data*`}] -[scope_enter data] -[visit_exp data] -[visit_id data] not free -[visit_id data] not free -[scope_exit data] -[visit_exp `data*`] -[visit_id data*] no dims -[visit_id data*] -[visit_exp elem*{elem <- `elem*`}] -[scope_enter elem] -[visit_exp elem] -[visit_id elem] not free -[visit_id elem] not free -[scope_exit elem] -[visit_exp `elem*`] -[visit_id elem*] no dims -[visit_id elem*] -[visit_exp start?{start <- `start?`}] -[scope_enter start] -[visit_exp start] -[visit_id start] not free -[visit_id start] not free -[scope_exit start] -[visit_exp `start?`] -[visit_id start?] no dims -[visit_id start?] -[visit_exp export*{export <- `export*`}] -[scope_enter export] -[visit_exp export] -[visit_id export] not free -[visit_id export] not free -[scope_exit export] -[visit_exp `export*`] -[visit_id export*] no dims -[visit_id export*] -[visit_exp (global*{global <- `global*`} = `GLOBAL`_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`})] -[visit_exp global*{global <- `global*`}] -[scope_enter global] -[visit_exp global] -[visit_id global] not free -[visit_id global] not free -[scope_exit global] -[visit_exp `global*`] -[visit_id global*] not free -[visit_id global*] no dims -[visit_exp `GLOBAL`_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`}] -[scope_enter expr_G] -[scope_enter globaltype] -[visit_exp `GLOBAL`_global(globaltype, expr_G)] -[visit_exp (globaltype, expr_G)] -[visit_exp globaltype] -[visit_id globaltype] not free -[visit_exp expr_G] -[visit_id expr_G] not free -[visit_id expr_G] not free -[visit_id globaltype] not free -[scope_exit globaltype] -[scope_exit expr_G] -[visit_exp `expr_G*`] -[visit_id expr_G*] no dims -[visit_id expr_G*] -[visit_exp `globaltype*`] -[visit_id globaltype*] no dims -[visit_id globaltype*] -[visit_exp (table*{table <- `table*`} = `TABLE`_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`})] -[visit_exp table*{table <- `table*`}] -[scope_enter table] -[visit_exp table] -[visit_id table] not free -[visit_id table] not free -[scope_exit table] -[visit_exp `table*`] -[visit_id table*] not free -[visit_id table*] no dims -[visit_exp `TABLE`_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`}] -[scope_enter expr_T] -[scope_enter tabletype] -[visit_exp `TABLE`_table(tabletype, expr_T)] -[visit_exp (tabletype, expr_T)] -[visit_exp tabletype] -[visit_id tabletype] not free -[visit_exp expr_T] -[visit_id expr_T] not free -[visit_id expr_T] not free -[visit_id tabletype] not free -[scope_exit tabletype] -[scope_exit expr_T] -[visit_exp `expr_T*`] -[visit_id expr_T*] no dims -[visit_id expr_T*] -[visit_exp `tabletype*`] -[visit_id tabletype*] no dims -[visit_id tabletype*] -[visit_exp (data*{data <- `data*`} = `DATA`_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`})] -[visit_exp data*{data <- `data*`}] -[scope_enter data] -[visit_exp data] -[visit_id data] not free -[visit_id data] not free -[scope_exit data] -[visit_exp `data*`] -[visit_id data*] not free -[visit_id data*] no dims -[visit_exp `DATA`_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`}] -[scope_enter byte*] -[scope_enter datamode] -[visit_exp `DATA`_data(byte*{byte <- `byte*`}, datamode)] -[visit_exp (byte*{byte <- `byte*`}, datamode)] -[visit_exp byte*{byte <- `byte*`}] -[scope_enter byte] -[visit_exp byte] -[visit_id byte] not free -[visit_id byte] not free -[scope_exit byte] -[visit_exp `byte*`] -[visit_id byte*] not free -[visit_id byte*] no dims -[visit_exp datamode] -[visit_id datamode] not free -[visit_id byte*] not free -[visit_id byte*] no dims -[visit_id datamode] not free -[scope_exit datamode] -[scope_exit byte*] -[visit_exp `byte**`] -[visit_id byte**] no dims -[visit_id byte**] -[visit_exp `datamode*`] -[visit_id datamode*] no dims -[visit_id datamode*] -[visit_exp (elem*{elem <- `elem*`} = `ELEM`_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`})] -[visit_exp elem*{elem <- `elem*`}] -[scope_enter elem] -[visit_exp elem] -[visit_id elem] not free -[visit_id elem] not free -[scope_exit elem] -[visit_exp `elem*`] -[visit_id elem*] not free -[visit_id elem*] no dims -[visit_exp `ELEM`_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`}] -[scope_enter elemmode] -[scope_enter expr_E*] -[scope_enter reftype] -[visit_exp `ELEM`_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)] -[visit_exp (reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)] -[visit_exp reftype] -[visit_id reftype] not free -[visit_exp expr_E*{expr_E <- `expr_E*`}] -[scope_enter expr_E] -[visit_exp expr_E] -[visit_id expr_E] not free -[visit_id expr_E] not free -[scope_exit expr_E] -[visit_exp `expr_E*`] -[visit_id expr_E*] not free -[visit_id expr_E*] no dims -[visit_exp elemmode] -[visit_id elemmode] not free -[visit_id elemmode] not free -[visit_id expr_E*] not free -[visit_id expr_E*] no dims -[visit_id reftype] not free -[scope_exit reftype] -[scope_exit expr_E*] -[scope_exit elemmode] -[visit_exp `elemmode*`] -[visit_id elemmode*] no dims -[visit_id elemmode*] -[visit_exp `expr_E**`] -[visit_id expr_E**] no dims -[visit_id expr_E**] -[visit_exp `reftype*`] -[visit_id reftype*] no dims -[visit_id reftype*] -[visit_exp (start?{start <- `start?`} = `START`_start(x)?{x <- `x?`})] -[visit_exp start?{start <- `start?`}] -[scope_enter start] -[visit_exp start] -[visit_id start] not free -[visit_id start] not free -[scope_exit start] -[visit_exp `start?`] -[visit_id start?] not free -[visit_id start?] no dims -[visit_exp `START`_start(x)?{x <- `x?`}] -[scope_enter x] -[visit_exp `START`_start(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] not free -[visit_id x] not free -[scope_exit x] -[visit_exp `x?`] -[visit_id x?] no dims -[visit_id x?] -[visit_exp (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*`}|){}, `DATAS` [], `ELEMS` [], `EXPORTS` []})] -[visit_exp moduleinst_0] -[visit_id moduleinst_0] -[visit_exp {`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*`}|){}, `DATAS` [], `ELEMS` [], `EXPORTS` []}] -[visit_exp $alloctypes(type*{type <- `type*`})] -[visit_exp type*{type <- `type*`}] -[scope_enter type] -[visit_exp type] -[visit_id type] not free -[visit_id type] not free -[scope_exit type] -[visit_exp `type*`] -[visit_id type*] not free -[visit_id type*] no dims -[visit_exp []] -[visit_exp $globalsxa(externaddr*{externaddr <- `externaddr*`})] -[visit_exp externaddr*{externaddr <- `externaddr*`}] -[scope_enter externaddr] -[visit_exp externaddr] -[visit_id externaddr] not free -[visit_id externaddr] not free -[scope_exit externaddr] -[visit_exp `externaddr*`] -[visit_id externaddr*] not free -[visit_id externaddr*] no dims -[visit_exp []] -[visit_exp []] -[visit_exp $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.`FUNCS`_store| + i_F)^(i_F<|func*{func <- `func*`}|){}] -[visit_exp $funcsxa(externaddr*{externaddr <- `externaddr*`})] -[visit_exp externaddr*{externaddr <- `externaddr*`}] -[scope_enter externaddr] -[visit_exp externaddr] -[visit_id externaddr] not free -[visit_id externaddr] not free -[scope_exit externaddr] -[visit_exp `externaddr*`] -[visit_id externaddr*] not free -[visit_id externaddr*] no dims -[visit_exp (|s.`FUNCS`_store| + i_F)^(i_F<|func*{func <- `func*`}|){}] -[scope_enter i_F] -[visit_exp (|s.`FUNCS`_store| + i_F)] -[visit_exp |s.`FUNCS`_store|] -[visit_exp s.`FUNCS`_store] -[visit_exp s] -[visit_id s] not free -[visit_exp i_F] -[visit_id i_F] -[visit_id i_F] not free -[scope_exit i_F] -[visit_exp |func*{func <- `func*`}|] -[visit_exp func*{func <- `func*`}] -[scope_enter func] -[visit_exp func] -[visit_id func] not free -[visit_id func] not free -[scope_exit func] -[visit_exp `func*`] -[visit_id func*] not free -[visit_id func*] no dims -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp (z = `%;%`_state(s, {`LOCALS` [], `MODULE` moduleinst_0}))] -[visit_exp z] -[visit_id z] -[visit_exp `%;%`_state(s, {`LOCALS` [], `MODULE` moduleinst_0})] -[visit_exp (s, {`LOCALS` [], `MODULE` moduleinst_0})] -[visit_exp s] -[visit_id s] not free -[visit_exp {`LOCALS` [], `MODULE` moduleinst_0}] -[visit_exp []] -[visit_exp moduleinst_0] -[visit_id moduleinst_0] not free -[visit_exp ((z', val_G*{val_G <- `val_G*`}) = $evalglobals(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`}))] -[visit_exp (z', val_G*{val_G <- `val_G*`})] -[visit_exp z'] -[visit_id z'] -[visit_exp val_G*{val_G <- `val_G*`}] -[scope_enter val_G] -[visit_exp val_G] -[visit_id val_G] not free -[visit_id val_G] not free -[scope_exit val_G] -[visit_exp `val_G*`] -[visit_id val_G*] no dims -[visit_id val_G*] -[visit_exp $evalglobals(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`})] -[visit_exp z] -[visit_id z] not free -[visit_exp globaltype*{globaltype <- `globaltype*`}] -[scope_enter globaltype] -[visit_exp globaltype] -[visit_id globaltype] not free -[visit_id globaltype] not free -[scope_exit globaltype] -[visit_exp `globaltype*`] -[visit_id globaltype*] not free -[visit_id globaltype*] no dims -[visit_exp expr_G*{expr_G <- `expr_G*`}] -[scope_enter expr_G] -[visit_exp expr_G] -[visit_id expr_G] not free -[visit_id expr_G] not free -[scope_exit expr_G] -[visit_exp `expr_G*`] -[visit_id expr_G*] not free -[visit_id expr_G*] no dims -[scope_enter expr_T] -[scope_enter ref_T] -[visit_exp (z', expr_T, z', [(ref_T : ref <: val)])] -[visit_exp z'] -[visit_id z'] not free -[visit_exp expr_T] -[visit_id expr_T] not free -[visit_exp z'] -[visit_id z'] not free -[visit_exp [(ref_T : ref <: val)]] -[visit_exp (ref_T : ref <: val)] -[visit_exp ref_T] -[visit_id ref_T] not free -[visit_id expr_T] not free -[visit_id ref_T] not free -[scope_exit ref_T] -[scope_exit expr_T] -[visit_exp `expr_T*`] -[visit_id expr_T*] not free -[visit_id expr_T*] no dims -[visit_exp `ref_T*`] -[visit_id ref_T*] no dims -[visit_id ref_T*] -[scope_enter expr_E*] -[scope_enter ref_E*] -[scope_enter expr_E] -[scope_enter ref_E] -[visit_exp (z', expr_E, z', [(ref_E : ref <: val)])] -[visit_exp z'] -[visit_id z'] not free -[visit_exp expr_E] -[visit_id expr_E] not free -[visit_exp z'] -[visit_id z'] not free -[visit_exp [(ref_E : ref <: val)]] -[visit_exp (ref_E : ref <: val)] -[visit_exp ref_E] -[visit_id ref_E] not free -[visit_id expr_E] not free -[visit_id ref_E] not free -[scope_exit ref_E] -[scope_exit expr_E] -[visit_exp `expr_E*`] -[visit_id expr_E*] not free -[visit_id expr_E*] no dims -[visit_exp `ref_E*`] -[visit_id ref_E*] not free -[visit_id ref_E*] no dims -[visit_id expr_E*] not free -[visit_id expr_E*] no dims -[visit_id ref_E*] not free -[visit_id ref_E*] no dims -[scope_exit ref_E*] -[scope_exit expr_E*] -[visit_exp `expr_E**`] -[visit_id expr_E**] not free -[visit_id expr_E**] no dims -[visit_exp `ref_E**`] -[visit_id ref_E**] no dims -[visit_id ref_E**] -[visit_exp ((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**`}))] -[visit_exp (s', moduleinst)] -[visit_exp s'] -[visit_id s'] not free -[visit_exp moduleinst] -[visit_id moduleinst] not free -[visit_exp $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**`})] -[visit_exp s] -[visit_id s] not free -[visit_exp module] -[visit_id module] not free -[visit_exp externaddr*{externaddr <- `externaddr*`}] -[scope_enter externaddr] -[visit_exp externaddr] -[visit_id externaddr] not free -[visit_id externaddr] not free -[scope_exit externaddr] -[visit_exp `externaddr*`] -[visit_id externaddr*] not free -[visit_id externaddr*] no dims -[visit_exp val_G*{val_G <- `val_G*`}] -[scope_enter val_G] -[visit_exp val_G] -[visit_id val_G] not free -[visit_id val_G] not free -[scope_exit val_G] -[visit_exp `val_G*`] -[visit_id val_G*] not free -[visit_id val_G*] no dims -[visit_exp ref_T*{ref_T <- `ref_T*`}] -[scope_enter ref_T] -[visit_exp ref_T] -[visit_id ref_T] not free -[visit_id ref_T] not free -[scope_exit ref_T] -[visit_exp `ref_T*`] -[visit_id ref_T*] not free -[visit_id ref_T*] no dims -[visit_exp ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}] -[scope_enter ref_E*] -[visit_exp ref_E*{ref_E <- `ref_E*`}] -[scope_enter ref_E] -[visit_exp ref_E] -[visit_id ref_E] not free -[visit_id ref_E] not free -[scope_exit ref_E] -[visit_exp `ref_E*`] -[visit_id ref_E*] not free -[visit_id ref_E*] no dims -[visit_id ref_E*] not free -[visit_id ref_E*] no dims -[scope_exit ref_E*] -[visit_exp `ref_E**`] -[visit_id ref_E**] not free -[visit_id ref_E**] no dims -[visit_exp (instr_D*{instr_D <- `instr_D*`} = $concat_(syntax instr, $rundata_(`%`_dataidx(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){}))] -[visit_exp instr_D*{instr_D <- `instr_D*`}] -[scope_enter instr_D] -[visit_exp instr_D] -[visit_id instr_D] not free -[visit_id instr_D] not free -[scope_exit instr_D] -[visit_exp `instr_D*`] -[visit_id instr_D*] not free -[visit_id instr_D*] no dims -[visit_exp $concat_(syntax instr, $rundata_(`%`_dataidx(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){})] -[visit_exp $rundata_(`%`_dataidx(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){}] -[scope_enter i_D] -[visit_exp $rundata_(`%`_dataidx(i_D), data*{data <- `data*`}[i_D])] -[visit_exp `%`_dataidx(i_D)] -[visit_exp (i_D)] -[visit_exp i_D] -[visit_id i_D] -[visit_exp data*{data <- `data*`}[i_D]] -[visit_exp data*{data <- `data*`}] -[scope_enter data] -[visit_exp data] -[visit_id data] not free -[visit_id data] not free -[scope_exit data] -[visit_exp `data*`] -[visit_id data*] not free -[visit_id data*] no dims -[visit_exp i_D] -[visit_id i_D] not free -[visit_id i_D] not free -[scope_exit i_D] -[visit_exp |data*{data <- `data*`}|] -[visit_exp data*{data <- `data*`}] -[scope_enter data] -[visit_exp data] -[visit_id data] not free -[visit_id data] not free -[scope_exit data] -[visit_exp `data*`] -[visit_id data*] not free -[visit_id data*] no dims -[visit_exp (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){}))] -[visit_exp instr_E*{instr_E <- `instr_E*`}] -[scope_enter instr_E] -[visit_exp instr_E] -[visit_id instr_E] not free -[visit_id instr_E] not free -[scope_exit instr_E] -[visit_exp `instr_E*`] -[visit_id instr_E*] not free -[visit_id instr_E*] no dims -[visit_exp $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){})] -[visit_exp $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){}] -[scope_enter i_E] -[visit_exp $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])] -[visit_exp `%`_elemidx(i_E)] -[visit_exp (i_E)] -[visit_exp i_E] -[visit_id i_E] -[visit_exp elem*{elem <- `elem*`}[i_E]] -[visit_exp elem*{elem <- `elem*`}] -[scope_enter elem] -[visit_exp elem] -[visit_id elem] not free -[visit_id elem] not free -[scope_exit elem] -[visit_exp `elem*`] -[visit_id elem*] not free -[visit_id elem*] no dims -[visit_exp i_E] -[visit_id i_E] not free -[visit_id i_E] not free -[scope_exit i_E] -[visit_exp |elem*{elem <- `elem*`}|] -[visit_exp elem*{elem <- `elem*`}] -[scope_enter elem] -[visit_exp elem] -[visit_id elem] not free -[visit_id elem] not free -[scope_exit elem] -[visit_exp `elem*`] -[visit_id elem*] not free -[visit_id elem*] no dims -[visit_exp (instr_S?{instr_S <- `instr_S?`} = `CALL`_instr(x)?{x <- `x?`})] -[visit_exp instr_S?{instr_S <- `instr_S?`}] -[scope_enter instr_S] -[visit_exp instr_S] -[visit_id instr_S] not free -[visit_id instr_S] not free -[scope_exit instr_S] -[visit_exp `instr_S?`] -[visit_id instr_S?] not free -[visit_id instr_S?] no dims -[visit_exp `CALL`_instr(x)?{x <- `x?`}] -[scope_enter x] -[visit_exp `CALL`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] not free -[visit_id x] not free -[scope_exit x] -[visit_exp `x?`] -[visit_id x?] not free -[visit_id x?] no dims -=> - ;; ../../../../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*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `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?`}) - -- 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*`}|){}, `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*`}|){})) - -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){})) - -- if (instr_S?{instr_S <- `instr_S?`} = `CALL`_instr(x)?{x <- `x?`}) -[check_dims] _ funcaddr store -DecD invoke(store : store, funcaddr : funcaddr, val*) : config -[visit_id store] not free -[visit_id funcaddr] not free -[visit_id _] not free -[check_dims] funcaddr s t_1 t_2 val -[visit_exp s] -[visit_id s] -[visit_exp funcaddr] -[visit_id funcaddr] -[visit_exp val*{val <- `val*`}] -[scope_enter val] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp `val*`] -[visit_id val*] no dims -[visit_id val*] -[visit_exp `%;%`_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))])] -[visit_exp (`%;%`_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))])] -[visit_exp `%;%`_state(s, {`LOCALS` [], `MODULE` {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `EXPORTS` []}})] -[visit_exp (s, {`LOCALS` [], `MODULE` {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `EXPORTS` []}})] -[visit_exp s] -[visit_id s] not free -[visit_exp {`LOCALS` [], `MODULE` {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `EXPORTS` []}}] -[visit_exp []] -[visit_exp {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `EXPORTS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp (val : val <: instr)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(funcaddr) `CALL_REF`_instr((s.`FUNCS`_store[funcaddr].`TYPE`_funcinst : deftype <: typeuse))]] -[visit_exp (val : val <: instr)*{val <- `val*`}] -[scope_enter val] -[visit_exp (val : val <: instr)] -[visit_exp val] -[visit_id val] not free -[visit_id val] not free -[scope_exit val] -[visit_exp `val*`] -[visit_id val*] not free -[visit_id val*] no dims -[visit_exp [`REF.FUNC_ADDR`_instr(funcaddr) `CALL_REF`_instr((s.`FUNCS`_store[funcaddr].`TYPE`_funcinst : deftype <: typeuse))]] -[visit_exp `REF.FUNC_ADDR`_instr(funcaddr)] -[visit_exp (funcaddr)] -[visit_exp funcaddr] -[visit_id funcaddr] not free -[visit_exp `CALL_REF`_instr((s.`FUNCS`_store[funcaddr].`TYPE`_funcinst : deftype <: typeuse))] -[visit_exp ((s.`FUNCS`_store[funcaddr].`TYPE`_funcinst : deftype <: typeuse))] -[visit_exp (s.`FUNCS`_store[funcaddr].`TYPE`_funcinst : deftype <: typeuse)] -[visit_exp s.`FUNCS`_store[funcaddr].`TYPE`_funcinst] -[visit_exp s.`FUNCS`_store[funcaddr]] -[visit_exp s.`FUNCS`_store] -[visit_exp s] -[visit_id s] not free -[visit_exp funcaddr] -[visit_id funcaddr] not free -[visit_exp (s.`FUNCS`_store[funcaddr].`TYPE`_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))] -[visit_exp s.`FUNCS`_store[funcaddr].`TYPE`_funcinst] -[visit_exp s.`FUNCS`_store[funcaddr]] -[visit_exp s.`FUNCS`_store] -[visit_exp s] -[visit_id s] not free -[visit_exp funcaddr] -[visit_id funcaddr] not free -[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] no dims -[visit_id t_1*] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] no dims -[visit_id t_2*] -[scope_enter t_1] -[scope_enter val] -[visit_exp (s, val, t_1)] -[visit_exp s] -[visit_id s] not free -[visit_exp val] -[visit_id val] not free -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[visit_id val] not free -[scope_exit val] -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] not free -[visit_id t_1*] no dims -[visit_exp `val*`] -[visit_id val*] not free -[visit_id val*] no dims -=> - ;; ../../../../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*`} -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `%`_byte(``)] -[visit_exp (``)] -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = (N : N) -[check_dims] N -[check_dims] N n -dims \ N = n -[visit_exp `%`_uN(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `%`_byte(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] not free -[visit_exp ((n < (2 ^ 7)) /\ (n < (2 ^ N)))] -[visit_exp (n < (2 ^ 7))] -[visit_exp n] -[visit_id n] not free -[visit_exp (2 ^ 7)] -[visit_exp 2] -[visit_exp 7] -[visit_exp (n < (2 ^ N))] -[visit_exp n] -[visit_id n] not free -[visit_exp (2 ^ N)] -[visit_exp 2] -[visit_exp N] -[visit_id N] not free -[visit_id N] no dims -[check_dims] N m n -dims \ N = m, n -[visit_exp `%`_uN((((2 ^ 7) * m) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)))] -[visit_exp ((((2 ^ 7) * m) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)))] -[visit_exp (((2 ^ 7) * m) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat))] -[visit_exp ((2 ^ 7) * m)] -[visit_exp (2 ^ 7)] -[visit_exp 2] -[visit_exp 7] -[visit_exp m] -[visit_id m] -[visit_exp (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)] -[visit_exp ((n : nat <:> int) - ((2 ^ 7) : nat <:> int))] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] -[visit_exp ((2 ^ 7) : nat <:> int)] -[visit_exp (2 ^ 7)] -[visit_exp 2] -[visit_exp 7] -[visit_exp `%`_byte(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] not free -[visit_exp `%`_uN(m)] -[visit_exp (m)] -[visit_exp m] -[visit_id m] not free -[visit_exp (((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat)] -[visit_exp ((N : nat <:> int) - (7 : nat <:> int))] -[visit_exp (N : nat <:> int)] -[visit_exp N] -[visit_id N] not free -[visit_id N] no dims -[visit_exp (7 : nat <:> int)] -[visit_exp 7] -[visit_exp ((n >= (2 ^ 7)) /\ (N > 7))] -[visit_exp (n >= (2 ^ 7))] -[visit_exp n] -[visit_id n] not free -[visit_exp (2 ^ 7)] -[visit_exp 2] -[visit_exp 7] -[visit_exp (N > 7)] -[visit_exp N] -[visit_id N] not free -[visit_id N] no dims -[visit_exp 7] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -ps' = (N : N) -[check_dims] N -[check_dims] N n -dims \ N = n -[visit_exp `%`_sN((n : nat <:> int))] -[visit_exp ((n : nat <:> int))] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] -[visit_exp `%`_byte(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] not free -[visit_exp ((n < (2 ^ 6)) /\ (n < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))))] -[visit_exp (n < (2 ^ 6))] -[visit_exp n] -[visit_id n] not free -[visit_exp (2 ^ 6)] -[visit_exp 2] -[visit_exp 6] -[visit_exp (n < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))] -[visit_exp n] -[visit_id n] not free -[visit_exp (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp 2] -[visit_exp (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp ((N : nat <:> int) - (1 : nat <:> int))] -[visit_exp (N : nat <:> int)] -[visit_exp N] -[visit_id N] not free -[visit_id N] no dims -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[check_dims] N n -dims \ N = n -[visit_exp `%`_sN(((n : nat <:> int) - ((2 ^ 7) : nat <:> int)))] -[visit_exp (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)))] -[visit_exp ((n : nat <:> int) - ((2 ^ 7) : nat <:> int))] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] -[visit_exp ((2 ^ 7) : nat <:> int)] -[visit_exp (2 ^ 7)] -[visit_exp 2] -[visit_exp 7] -[visit_exp `%`_byte(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] not free -[visit_exp ((((2 ^ 6) <= n) /\ (n < (2 ^ 7))) /\ ((n : nat <:> int) >= (((2 ^ 7) : nat <:> int) - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))))] -[visit_exp (((2 ^ 6) <= n) /\ (n < (2 ^ 7)))] -[visit_exp ((2 ^ 6) <= n)] -[visit_exp (2 ^ 6)] -[visit_exp 2] -[visit_exp 6] -[visit_exp n] -[visit_id n] not free -[visit_exp (n < (2 ^ 7))] -[visit_exp n] -[visit_id n] not free -[visit_exp (2 ^ 7)] -[visit_exp 2] -[visit_exp 7] -[visit_exp ((n : nat <:> int) >= (((2 ^ 7) : nat <:> int) - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)))] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp (((2 ^ 7) : nat <:> int) - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))] -[visit_exp ((2 ^ 7) : nat <:> int)] -[visit_exp (2 ^ 7)] -[visit_exp 2] -[visit_exp 7] -[visit_exp ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)] -[visit_exp (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp 2] -[visit_exp (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp ((N : nat <:> int) - (1 : nat <:> int))] -[visit_exp (N : nat <:> int)] -[visit_exp N] -[visit_id N] not free -[visit_id N] no dims -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[check_dims] N i n -dims \ N = i, n -[visit_exp `%`_sN(((((2 ^ 7) * (i!`%`_sN.0 : int <:> nat)) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int))] -[visit_exp (((((2 ^ 7) * (i!`%`_sN.0 : int <:> nat)) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int))] -[visit_exp ((((2 ^ 7) * (i!`%`_sN.0 : int <:> nat)) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int)] -[visit_exp (((2 ^ 7) * (i!`%`_sN.0 : int <:> nat)) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat))] -[visit_exp ((2 ^ 7) * (i!`%`_sN.0 : int <:> nat))] -[visit_exp (2 ^ 7)] -[visit_exp 2] -[visit_exp 7] -[visit_exp (i!`%`_sN.0 : int <:> nat)] -[visit_exp i!`%`_sN.0] -[visit_exp i!`%`_sN] -[visit_exp i] -[visit_id i] -[visit_exp (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)] -[visit_exp ((n : nat <:> int) - ((2 ^ 7) : nat <:> int))] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] -[visit_exp ((2 ^ 7) : nat <:> int)] -[visit_exp (2 ^ 7)] -[visit_exp 2] -[visit_exp 7] -[visit_exp `%`_byte(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] not free -[visit_exp i] -[visit_id i] not free -[visit_exp (((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat)] -[visit_exp ((N : nat <:> int) - (7 : nat <:> int))] -[visit_exp (N : nat <:> int)] -[visit_exp N] -[visit_id N] not free -[visit_id N] no dims -[visit_exp (7 : nat <:> int)] -[visit_exp 7] -[visit_exp ((n >= (2 ^ 7)) /\ (N > 7))] -[visit_exp (n >= (2 ^ 7))] -[visit_exp n] -[visit_id n] not free -[visit_exp (2 ^ 7)] -[visit_exp 2] -[visit_exp 7] -[visit_exp (N > 7)] -[visit_exp N] -[visit_id N] not free -[visit_id N] no dims -[visit_exp 7] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -ps' = (N : N) -[check_dims] N -[check_dims] N i -dims \ N = i -[visit_exp `%`_iN($inv_signed_(N, i!`%`_sN.0))] -[visit_exp ($inv_signed_(N, i!`%`_sN.0))] -[visit_exp $inv_signed_(N, i!`%`_sN.0)] -[visit_exp N] -[visit_id N] not free -[visit_id N] no dims -[visit_exp i!`%`_sN.0] -[visit_exp i!`%`_sN] -[visit_exp i] -[visit_id i] -[visit_exp i] -[visit_id i] not free -[visit_exp N] -[visit_id N] not free -[visit_id N] no dims -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -ps' = (N : N) -[check_dims] N -[check_dims] N b -dims \ N = b -[visit_exp $inv_fbytes_(N, b*{b <- `b*`})] -[visit_exp N] -[visit_id N] not free -[visit_id N] no dims -[visit_exp b*{b <- `b*`}] -[scope_enter b] -[visit_exp b] -[visit_id b] not free -[visit_id b] not free -[scope_exit b] -[visit_exp `b*`] -[visit_id b*] no dims -[visit_id b*] -[visit_exp b*{b <- `b*`}] -[scope_enter b] -[visit_exp b] -[visit_id b] not free -[visit_id b] not free -[scope_exit b] -[visit_exp `b*`] -[visit_id b*] not free -[visit_id b*] no dims -[visit_exp (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)] -[visit_exp ((N : nat <:> rat) / (8 : nat <:> rat))] -[visit_exp (N : nat <:> rat)] -[visit_exp N] -[visit_id N] not free -[visit_id N] no dims -[visit_exp (8 : nat <:> rat)] -[visit_exp 8] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[visit_exp 32] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[visit_exp 64] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[visit_exp 33] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[visit_exp 32] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[visit_exp 64] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[visit_exp 32] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[visit_exp 64] -ps' = (syntax el, grammar BX : el) -[check_dims] el -[check_dims] el n -dims \ = el, n -[visit_exp el^n{el <- `el*`}] -[scope_enter el] -[visit_exp el] -[visit_id el] not free -[visit_id el] not free -[scope_exit el] -[visit_exp n] -[visit_id n] -[visit_exp `el*`] -[visit_id el*] no dims -[visit_id el*] -[visit_exp `%`_u32(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] not free -[scope_enter el] -[visit_exp el] -[visit_id el] not free -[visit_id el] not free -[scope_exit el] -[visit_exp n] -[visit_id n] not free -[visit_exp `el*`] -[visit_id el*] not free -[visit_id el*] no dims -[check_dims] -[check_dims] byte -DecD cont(byte : byte) : nat -[visit_id byte] not free -[check_dims] b -[visit_exp b] -[visit_id b] -[visit_exp (((b!`%`_byte.0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat)] -[visit_exp ((b!`%`_byte.0 : nat <:> int) - (128 : nat <:> int))] -[visit_exp (b!`%`_byte.0 : nat <:> int)] -[visit_exp b!`%`_byte.0] -[visit_exp b!`%`_byte] -[visit_exp b] -[visit_id b] not free -[visit_exp (128 : nat <:> int)] -[visit_exp 128] -[visit_exp ((128 < b!`%`_byte.0) /\ (b!`%`_byte.0 < 192))] -[visit_exp (128 < b!`%`_byte.0)] -[visit_exp 128] -[visit_exp b!`%`_byte.0] -[visit_exp b!`%`_byte] -[visit_exp b] -[visit_id b] not free -[visit_exp (b!`%`_byte.0 < 192)] -[visit_exp b!`%`_byte.0] -[visit_exp b!`%`_byte] -[visit_exp b] -[visit_id b] not free -[visit_exp 192] -=> - ;; ../../../../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)) -[check_dims] ch -[visit_exp ch*{ch <- `ch*`}] -[scope_enter ch] -[visit_exp ch] -[visit_id ch] not free -[visit_id ch] not free -[scope_exit ch] -[visit_exp `ch*`] -[visit_id ch*] no dims -[visit_id ch*] -[visit_exp $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`})] -[visit_exp $utf8([ch])*{ch <- `ch*`}] -[scope_enter ch] -[visit_exp $utf8([ch])] -[visit_exp [ch]] -[visit_exp ch] -[visit_id ch] not free -[visit_id ch] not free -[scope_exit ch] -[visit_exp `ch*`] -[visit_id ch*] not free -[visit_id ch*] no dims -=> - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - def $utf8{`ch*` : char*}(ch*{ch <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) -[check_dims] b ch -[visit_exp [ch]] -[visit_exp ch] -[visit_id ch] -[visit_exp [b]] -[visit_exp b] -[visit_id b] -[visit_exp (ch!`%`_char.0 < 128)] -[visit_exp ch!`%`_char.0] -[visit_exp ch!`%`_char] -[visit_exp ch] -[visit_id ch] not free -[visit_exp 128] -[visit_exp (`%`_byte(ch!`%`_char.0) = b)] -[visit_exp `%`_byte(ch!`%`_char.0)] -[visit_exp (ch!`%`_char.0)] -[visit_exp ch!`%`_char.0] -[visit_exp ch!`%`_char] -[visit_exp ch] -[visit_id ch] not free -[visit_exp b] -[visit_id b] not free -=> - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - def $utf8{ch : char, b : byte}([ch]) = [b] - -- if (ch!`%`_char.0 < 128) - -- if (`%`_byte(ch!`%`_char.0) = b) -[check_dims] b_1 b_2 ch -[visit_exp [ch]] -[visit_exp ch] -[visit_id ch] -[visit_exp [b_1 b_2]] -[visit_exp b_1] -[visit_id b_1] -[visit_exp b_2] -[visit_id b_2] -[visit_exp ((128 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 2048))] -[visit_exp (128 <= ch!`%`_char.0)] -[visit_exp 128] -[visit_exp ch!`%`_char.0] -[visit_exp ch!`%`_char] -[visit_exp ch] -[visit_id ch] not free -[visit_exp (ch!`%`_char.0 < 2048)] -[visit_exp ch!`%`_char.0] -[visit_exp ch!`%`_char] -[visit_exp ch] -[visit_id ch] not free -[visit_exp 2048] -[visit_exp (ch!`%`_char.0 = (((2 ^ 6) * (((b_1!`%`_byte.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2)))] -[visit_exp ch!`%`_char.0] -[visit_exp ch!`%`_char] -[visit_exp ch] -[visit_id ch] not free -[visit_exp (((2 ^ 6) * (((b_1!`%`_byte.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))] -[visit_exp ((2 ^ 6) * (((b_1!`%`_byte.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat))] -[visit_exp (2 ^ 6)] -[visit_exp 2] -[visit_exp 6] -[visit_exp (((b_1!`%`_byte.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)] -[visit_exp ((b_1!`%`_byte.0 : nat <:> int) - (192 : nat <:> int))] -[visit_exp (b_1!`%`_byte.0 : nat <:> int)] -[visit_exp b_1!`%`_byte.0] -[visit_exp b_1!`%`_byte] -[visit_exp b_1] -[visit_id b_1] not free -[visit_exp (192 : nat <:> int)] -[visit_exp 192] -[visit_exp $cont(b_2)] -[visit_exp b_2] -[visit_id b_2] not free -=> - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - 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))) -[check_dims] b_1 b_2 b_3 ch -[visit_exp [ch]] -[visit_exp ch] -[visit_id ch] -[visit_exp [b_1 b_2 b_3]] -[visit_exp b_1] -[visit_id b_1] -[visit_exp b_2] -[visit_id b_2] -[visit_exp b_3] -[visit_id b_3] -[visit_exp (((2048 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 55296)) \/ ((57344 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 65536)))] -[visit_exp ((2048 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 55296))] -[visit_exp (2048 <= ch!`%`_char.0)] -[visit_exp 2048] -[visit_exp ch!`%`_char.0] -[visit_exp ch!`%`_char] -[visit_exp ch] -[visit_id ch] not free -[visit_exp (ch!`%`_char.0 < 55296)] -[visit_exp ch!`%`_char.0] -[visit_exp ch!`%`_char] -[visit_exp ch] -[visit_id ch] not free -[visit_exp 55296] -[visit_exp ((57344 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 65536))] -[visit_exp (57344 <= ch!`%`_char.0)] -[visit_exp 57344] -[visit_exp ch!`%`_char.0] -[visit_exp ch!`%`_char] -[visit_exp ch] -[visit_id ch] not free -[visit_exp (ch!`%`_char.0 < 65536)] -[visit_exp ch!`%`_char.0] -[visit_exp ch!`%`_char] -[visit_exp ch] -[visit_id ch] not free -[visit_exp 65536] -[visit_exp (ch!`%`_char.0 = ((((2 ^ 12) * (((b_1!`%`_byte.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3)))] -[visit_exp ch!`%`_char.0] -[visit_exp ch!`%`_char] -[visit_exp ch] -[visit_id ch] not free -[visit_exp ((((2 ^ 12) * (((b_1!`%`_byte.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))] -[visit_exp (((2 ^ 12) * (((b_1!`%`_byte.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2)))] -[visit_exp ((2 ^ 12) * (((b_1!`%`_byte.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat))] -[visit_exp (2 ^ 12)] -[visit_exp 2] -[visit_exp 12] -[visit_exp (((b_1!`%`_byte.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)] -[visit_exp ((b_1!`%`_byte.0 : nat <:> int) - (224 : nat <:> int))] -[visit_exp (b_1!`%`_byte.0 : nat <:> int)] -[visit_exp b_1!`%`_byte.0] -[visit_exp b_1!`%`_byte] -[visit_exp b_1] -[visit_id b_1] not free -[visit_exp (224 : nat <:> int)] -[visit_exp 224] -[visit_exp ((2 ^ 6) * $cont(b_2))] -[visit_exp (2 ^ 6)] -[visit_exp 2] -[visit_exp 6] -[visit_exp $cont(b_2)] -[visit_exp b_2] -[visit_id b_2] not free -[visit_exp $cont(b_3)] -[visit_exp b_3] -[visit_id b_3] not free -=> - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - 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))) -[check_dims] b_1 b_2 b_3 b_4 ch -[visit_exp [ch]] -[visit_exp ch] -[visit_id ch] -[visit_exp [b_1 b_2 b_3 b_4]] -[visit_exp b_1] -[visit_id b_1] -[visit_exp b_2] -[visit_id b_2] -[visit_exp b_3] -[visit_id b_3] -[visit_exp b_4] -[visit_id b_4] -[visit_exp ((65536 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 69632))] -[visit_exp (65536 <= ch!`%`_char.0)] -[visit_exp 65536] -[visit_exp ch!`%`_char.0] -[visit_exp ch!`%`_char] -[visit_exp ch] -[visit_id ch] not free -[visit_exp (ch!`%`_char.0 < 69632)] -[visit_exp ch!`%`_char.0] -[visit_exp ch!`%`_char] -[visit_exp ch] -[visit_id ch] not free -[visit_exp 69632] -[visit_exp (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)))] -[visit_exp ch!`%`_char.0] -[visit_exp ch!`%`_char] -[visit_exp ch] -[visit_id ch] not free -[visit_exp (((((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))] -[visit_exp ((((2 ^ 18) * (((b_1!`%`_byte.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3)))] -[visit_exp (((2 ^ 18) * (((b_1!`%`_byte.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2)))] -[visit_exp ((2 ^ 18) * (((b_1!`%`_byte.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat))] -[visit_exp (2 ^ 18)] -[visit_exp 2] -[visit_exp 18] -[visit_exp (((b_1!`%`_byte.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)] -[visit_exp ((b_1!`%`_byte.0 : nat <:> int) - (240 : nat <:> int))] -[visit_exp (b_1!`%`_byte.0 : nat <:> int)] -[visit_exp b_1!`%`_byte.0] -[visit_exp b_1!`%`_byte] -[visit_exp b_1] -[visit_id b_1] not free -[visit_exp (240 : nat <:> int)] -[visit_exp 240] -[visit_exp ((2 ^ 12) * $cont(b_2))] -[visit_exp (2 ^ 12)] -[visit_exp 2] -[visit_exp 12] -[visit_exp $cont(b_2)] -[visit_exp b_2] -[visit_id b_2] not free -[visit_exp ((2 ^ 6) * $cont(b_3))] -[visit_exp (2 ^ 6)] -[visit_exp 2] -[visit_exp 6] -[visit_exp $cont(b_3)] -[visit_exp b_3] -[visit_id b_3] not free -[visit_exp $cont(b_4)] -[visit_exp b_4] -[visit_id b_4] not free -=> - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - 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))) -ps' = -[check_dims] -[check_dims] b name -dims \ = b, name -[visit_exp name] -[visit_id name] -[visit_exp b*{b <- `b*`}] -[scope_enter b] -[visit_exp b] -[visit_id b] not free -[visit_id b] not free -[scope_exit b] -[visit_exp `b*`] -[visit_id b*] no dims -[visit_id b*] -[visit_exp ($utf8(name!`%`_name.0) = b*{b <- `b*`})] -[visit_exp $utf8(name!`%`_name.0)] -[visit_exp name!`%`_name.0] -[visit_exp name!`%`_name] -[visit_exp name] -[visit_id name] not free -[visit_exp b*{b <- `b*`}] -[scope_enter b] -[visit_exp b] -[visit_id b] not free -[visit_id b] not free -[scope_exit b] -[visit_exp `b*`] -[visit_id b*] not free -[visit_id b*] no dims -ps' = -[check_dims] -[check_dims] x -dims \ = x -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -ps' = -[check_dims] -[check_dims] x -dims \ = x -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -ps' = -[check_dims] -[check_dims] x -dims \ = x -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -ps' = -[check_dims] -[check_dims] x -dims \ = x -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -ps' = -[check_dims] -[check_dims] x -dims \ = x -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -ps' = -[check_dims] -[check_dims] x -dims \ = x -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -ps' = -[check_dims] -[check_dims] x -dims \ = x -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -ps' = -[check_dims] -[check_dims] x -dims \ = x -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -ps' = -[check_dims] -[check_dims] x -dims \ = x -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -ps' = -[check_dims] -[check_dims] l -dims \ = l -[visit_exp l] -[visit_id l] -[visit_exp l] -[visit_id l] not free -ps' = -[check_dims] -[check_dims] x -dims \ = x -[visit_exp `FUNC`_externidx(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[check_dims] x -dims \ = x -[visit_exp `TABLE`_externidx(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[check_dims] x -dims \ = x -[visit_exp `MEM`_externidx(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[check_dims] x -dims \ = x -[visit_exp `GLOBAL`_externidx(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[check_dims] x -dims \ = x -[visit_exp `TAG`_externidx(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `F64`_numtype] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `F32`_numtype] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `I64`_numtype] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `I32`_numtype] -[visit_exp ()] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `V128`_vectype] -[visit_exp ()] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `EXN`_heaptype] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `ARRAY`_heaptype] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `STRUCT`_heaptype] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `I31`_heaptype] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `EQ`_heaptype] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `ANY`_heaptype] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `EXTERN`_heaptype] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `FUNC`_heaptype] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `NONE`_heaptype] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `NOEXTERN`_heaptype] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `NOFUNC`_heaptype] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `NOEXN`_heaptype] -[visit_exp ()] -ps' = -[check_dims] -[check_dims] ht -dims \ = ht -[visit_exp ht] -[visit_id ht] -[visit_exp ht] -[visit_id ht] not free -[check_dims] x33 -dims \ = x33 -[visit_exp `_IDX`_heaptype($s33_to_u32(x33))] -[visit_exp ($s33_to_u32(x33))] -[visit_exp $s33_to_u32(x33)] -[visit_exp x33] -[visit_id x33] -[visit_exp x33] -[visit_id x33] not free -[visit_exp (x33!`%`_s33.0 >= (0 : nat <:> int))] -[visit_exp x33!`%`_s33.0] -[visit_exp x33!`%`_s33] -[visit_exp x33] -[visit_id x33] not free -[visit_exp (0 : nat <:> int)] -[visit_exp 0] -ps' = -[check_dims] -[check_dims] ht -dims \ = ht -[visit_exp `REF`_reftype(?(`NULL`_null), ht)] -[visit_exp (?(`NULL`_null), ht)] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp ht] -[visit_id ht] -[visit_exp ht] -[visit_id ht] not free -[check_dims] ht -dims \ = ht -[visit_exp `REF`_reftype(?(), ht)] -[visit_exp (?(), ht)] -[visit_exp ?()] -[visit_exp ht] -[visit_id ht] -[visit_exp ht] -[visit_id ht] not free -[check_dims] ht -dims \ = ht -[visit_exp `REF`_reftype(?(`NULL`_null), ht)] -[visit_exp (?(`NULL`_null), ht)] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp ht] -[visit_id ht] -[visit_exp ht] -[visit_id ht] not free -ps' = -[check_dims] -[check_dims] nt -dims \ = nt -[visit_exp (nt : numtype <: valtype)] -[visit_exp nt] -[visit_id nt] -[visit_exp nt] -[visit_id nt] not free -[check_dims] vt -dims \ = vt -[visit_exp (vt : vectype <: valtype)] -[visit_exp vt] -[visit_id vt] -[visit_exp vt] -[visit_id vt] not free -[check_dims] rt -dims \ = rt -[visit_exp (rt : reftype <: valtype)] -[visit_exp rt] -[visit_id rt] -[visit_exp rt] -[visit_id rt] not free -ps' = -[check_dims] -[check_dims] t -dims \ = t -[visit_exp `%`_resulttype(t*{t <- `t*`})] -[visit_exp (t*{t <- `t*`})] -[visit_exp t*{t <- `t*`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] no dims -[visit_id t*] -[visit_exp t*{t <- `t*`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] not free -[visit_id t*] no dims -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ?()] -[check_dims] -dims \ = -[visit_exp ?(`MUT`_mut)] -[visit_exp `MUT`_mut] -[visit_exp ()] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `I16`_packtype] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `I8`_packtype] -[visit_exp ()] -ps' = -[check_dims] -[check_dims] t -dims \ = t -[visit_exp (t : valtype <: storagetype)] -[visit_exp t] -[visit_id t] -[visit_exp t] -[visit_id t] not free -[check_dims] pt -dims \ = pt -[visit_exp (pt : packtype <: storagetype)] -[visit_exp pt] -[visit_id pt] -[visit_exp pt] -[visit_id pt] not free -ps' = -[check_dims] -[check_dims] mut zt -dims \ = mut, zt -[visit_exp `%%`_fieldtype(mut?{mut <- `mut?`}, zt)] -[visit_exp (mut?{mut <- `mut?`}, zt)] -[visit_exp mut?{mut <- `mut?`}] -[scope_enter mut] -[visit_exp mut] -[visit_id mut] not free -[visit_id mut] not free -[scope_exit mut] -[visit_exp `mut?`] -[visit_id mut?] no dims -[visit_id mut?] -[visit_exp zt] -[visit_id zt] -[visit_exp zt] -[visit_id zt] not free -[visit_exp mut?{mut <- `mut?`}] -[scope_enter mut] -[visit_exp mut] -[visit_id mut] not free -[visit_id mut] not free -[scope_exit mut] -[visit_exp `mut?`] -[visit_id mut?] not free -[visit_id mut?] no dims -ps' = -[check_dims] -[check_dims] ft -dims \ = ft -[visit_exp `ARRAY`_comptype(ft)] -[visit_exp (ft)] -[visit_exp ft] -[visit_id ft] -[visit_exp ft] -[visit_id ft] not free -[check_dims] ft -dims \ = ft -[visit_exp `STRUCT`_comptype(`%`_list(ft*{ft <- `ft*`}))] -[visit_exp (`%`_list(ft*{ft <- `ft*`}))] -[visit_exp `%`_list(ft*{ft <- `ft*`})] -[visit_exp (ft*{ft <- `ft*`})] -[visit_exp ft*{ft <- `ft*`}] -[scope_enter ft] -[visit_exp ft] -[visit_id ft] not free -[visit_id ft] not free -[scope_exit ft] -[visit_exp `ft*`] -[visit_id ft*] no dims -[visit_id ft*] -[visit_exp ft*{ft <- `ft*`}] -[scope_enter ft] -[visit_exp ft] -[visit_id ft] not free -[visit_id ft] not free -[scope_exit ft] -[visit_exp `ft*`] -[visit_id ft*] not free -[visit_id ft*] no dims -[check_dims] t_1 t_2 -dims \ = t_1, t_2 -[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] no dims -[visit_id t_1*] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] no dims -[visit_id t_2*] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] not free -[visit_id t_1*] no dims -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] not free -[visit_id t_2*] no dims -ps' = -[check_dims] -[check_dims] ct x -dims \ = ct, x -[visit_exp `SUB`_subtype(?(`FINAL`_final), `_IDX`_typeuse(x)*{x <- `x*`}, ct)] -[visit_exp (?(`FINAL`_final), `_IDX`_typeuse(x)*{x <- `x*`}, ct)] -[visit_exp ?(`FINAL`_final)] -[visit_exp `FINAL`_final] -[visit_exp ()] -[visit_exp `_IDX`_typeuse(x)*{x <- `x*`}] -[scope_enter x] -[visit_exp `_IDX`_typeuse(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] not free -[visit_id x] not free -[scope_exit x] -[visit_exp `x*`] -[visit_id x*] no dims -[visit_id x*] -[visit_exp ct] -[visit_id ct] -[visit_exp x*{x <- `x*`}] -[scope_enter x] -[visit_exp x] -[visit_id x] not free -[visit_id x] not free -[scope_exit x] -[visit_exp `x*`] -[visit_id x*] not free -[visit_id x*] no dims -[visit_exp ct] -[visit_id ct] not free -[check_dims] ct x -dims \ = ct, x -[visit_exp `SUB`_subtype(?(), `_IDX`_typeuse(x)*{x <- `x*`}, ct)] -[visit_exp (?(), `_IDX`_typeuse(x)*{x <- `x*`}, ct)] -[visit_exp ?()] -[visit_exp `_IDX`_typeuse(x)*{x <- `x*`}] -[scope_enter x] -[visit_exp `_IDX`_typeuse(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] not free -[visit_id x] not free -[scope_exit x] -[visit_exp `x*`] -[visit_id x*] no dims -[visit_id x*] -[visit_exp ct] -[visit_id ct] -[visit_exp x*{x <- `x*`}] -[scope_enter x] -[visit_exp x] -[visit_id x] not free -[visit_id x] not free -[scope_exit x] -[visit_exp `x*`] -[visit_id x*] not free -[visit_id x*] no dims -[visit_exp ct] -[visit_id ct] not free -[check_dims] ct -dims \ = ct -[visit_exp `SUB`_subtype(?(`FINAL`_final), [], ct)] -[visit_exp (?(`FINAL`_final), [], ct)] -[visit_exp ?(`FINAL`_final)] -[visit_exp `FINAL`_final] -[visit_exp ()] -[visit_exp []] -[visit_exp ct] -[visit_id ct] -[visit_exp ct] -[visit_id ct] not free -ps' = -[check_dims] -[check_dims] st -dims \ = st -[visit_exp `REC`_rectype(`%`_list(st*{st <- `st*`}))] -[visit_exp (`%`_list(st*{st <- `st*`}))] -[visit_exp `%`_list(st*{st <- `st*`})] -[visit_exp (st*{st <- `st*`})] -[visit_exp st*{st <- `st*`}] -[scope_enter st] -[visit_exp st] -[visit_id st] not free -[visit_id st] not free -[scope_exit st] -[visit_exp `st*`] -[visit_id st*] no dims -[visit_id st*] -[visit_exp st*{st <- `st*`}] -[scope_enter st] -[visit_exp st] -[visit_id st] not free -[visit_id st] not free -[scope_exit st] -[visit_exp `st*`] -[visit_id st*] not free -[visit_id st*] no dims -[check_dims] st -dims \ = st -[visit_exp `REC`_rectype(`%`_list([st]))] -[visit_exp (`%`_list([st]))] -[visit_exp `%`_list([st])] -[visit_exp ([st])] -[visit_exp [st]] -[visit_exp st] -[visit_id st] -[visit_exp st] -[visit_id st] not free -ps' = -[check_dims] _ -[check_dims] n -dims \ = n -[visit_exp (`I32`_addrtype, `[%..%]`_limits(`%`_u64(n), ?()))] -[visit_exp `I32`_addrtype] -[visit_exp ()] -[visit_exp `[%..%]`_limits(`%`_u64(n), ?())] -[visit_exp (`%`_u64(n), ?())] -[visit_exp `%`_u64(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp ?()] -[visit_exp `%`_u64(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] not free -[check_dims] m n -dims \ = m, n -[visit_exp (`I32`_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))] -[visit_exp `I32`_addrtype] -[visit_exp ()] -[visit_exp `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))] -[visit_exp (`%`_u64(n), ?(`%`_u64(m)))] -[visit_exp `%`_u64(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp ?(`%`_u64(m))] -[visit_exp `%`_u64(m)] -[visit_exp (m)] -[visit_exp m] -[visit_id m] -[visit_exp `%`_u64(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] not free -[visit_exp `%`_u64(m)] -[visit_exp (m)] -[visit_exp m] -[visit_id m] not free -[check_dims] n -dims \ = n -[visit_exp (`I64`_addrtype, `[%..%]`_limits(`%`_u64(n), ?()))] -[visit_exp `I64`_addrtype] -[visit_exp ()] -[visit_exp `[%..%]`_limits(`%`_u64(n), ?())] -[visit_exp (`%`_u64(n), ?())] -[visit_exp `%`_u64(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp ?()] -[visit_exp `%`_u64(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] not free -[check_dims] m n -dims \ = m, n -[visit_exp (`I64`_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))))] -[visit_exp `I64`_addrtype] -[visit_exp ()] -[visit_exp `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))] -[visit_exp (`%`_u64(n), ?(`%`_u64(m)))] -[visit_exp `%`_u64(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp ?(`%`_u64(m))] -[visit_exp `%`_u64(m)] -[visit_exp (m)] -[visit_exp m] -[visit_id m] -[visit_exp `%`_u64(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] not free -[visit_exp `%`_u64(m)] -[visit_exp (m)] -[visit_exp m] -[visit_id m] not free -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit _] -ps' = -[check_dims] -[check_dims] x -dims \ = x -[visit_exp `_IDX`_tagtype(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -ps' = -[check_dims] -[check_dims] mut t -dims \ = mut, t -[visit_exp `%%`_globaltype(mut?{mut <- `mut?`}, t)] -[visit_exp (mut?{mut <- `mut?`}, t)] -[visit_exp mut?{mut <- `mut?`}] -[scope_enter mut] -[visit_exp mut] -[visit_id mut] not free -[visit_id mut] not free -[scope_exit mut] -[visit_exp `mut?`] -[visit_id mut?] no dims -[visit_id mut?] -[visit_exp t] -[visit_id t] -[visit_exp t] -[visit_id t] not free -[visit_exp mut?{mut <- `mut?`}] -[scope_enter mut] -[visit_exp mut] -[visit_id mut] not free -[visit_id mut] not free -[scope_exit mut] -[visit_exp `mut?`] -[visit_id mut?] not free -[visit_id mut?] no dims -ps' = -[check_dims] -[check_dims] at lim -dims \ = at, lim -[visit_exp `%%PAGE`_memtype(at, lim)] -[visit_exp (at, lim)] -[visit_exp at] -[visit_id at] -[visit_exp lim] -[visit_id lim] -[visit_exp (at, lim)] -[visit_exp at] -[visit_id at] not free -[visit_exp lim] -[visit_id lim] not free -ps' = -[check_dims] -[check_dims] at lim rt -dims \ = at, lim, rt -[visit_exp `%%%`_tabletype(at, lim, rt)] -[visit_exp (at, lim, rt)] -[visit_exp at] -[visit_id at] -[visit_exp lim] -[visit_id lim] -[visit_exp rt] -[visit_id rt] -[visit_exp rt] -[visit_id rt] not free -[visit_exp (at, lim)] -[visit_exp at] -[visit_id at] not free -[visit_exp lim] -[visit_id lim] not free -ps' = -[check_dims] -[check_dims] x -dims \ = x -[visit_exp `FUNC`_externtype(`_IDX`_typeuse(x))] -[visit_exp (`_IDX`_typeuse(x))] -[visit_exp `_IDX`_typeuse(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[check_dims] tt -dims \ = tt -[visit_exp `TABLE`_externtype(tt)] -[visit_exp (tt)] -[visit_exp tt] -[visit_id tt] -[visit_exp tt] -[visit_id tt] not free -[check_dims] mt -dims \ = mt -[visit_exp `MEM`_externtype(mt)] -[visit_exp (mt)] -[visit_exp mt] -[visit_id mt] -[visit_exp mt] -[visit_id mt] not free -[check_dims] gt -dims \ = gt -[visit_exp `GLOBAL`_externtype(gt)] -[visit_exp (gt)] -[visit_exp gt] -[visit_id gt] -[visit_exp gt] -[visit_id gt] not free -[check_dims] jt -dims \ = jt -[visit_exp `TAG`_externtype(jt)] -[visit_exp (jt)] -[visit_exp jt] -[visit_id jt] -[visit_exp jt] -[visit_id jt] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `UNREACHABLE`_instr] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `NOP`_instr] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `DROP`_instr] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `SELECT`_instr(?())] -[visit_exp (?())] -[visit_exp ?()] -[check_dims] t -dims \ = t -[visit_exp `SELECT`_instr(?(t*{t <- `t*`}))] -[visit_exp (?(t*{t <- `t*`}))] -[visit_exp ?(t*{t <- `t*`})] -[visit_exp t*{t <- `t*`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] no dims -[visit_id t*] -[visit_exp t*{t <- `t*`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] not free -[visit_id t*] no dims -[check_dims] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp (?(), ?())] -[visit_exp ?()] -[visit_exp ?()] -[check_dims] -dims \ = -[visit_exp (?(`NULL`_null), ?())] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp ?()] -[check_dims] -dims \ = -[visit_exp (?(), ?(`NULL`_null))] -[visit_exp ?()] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp (?(`NULL`_null), ?(`NULL`_null))] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `_RESULT`_blocktype(?())] -[visit_exp (?())] -[visit_exp ?()] -[check_dims] t -dims \ = t -[visit_exp `_RESULT`_blocktype(?(t))] -[visit_exp (?(t))] -[visit_exp ?(t)] -[visit_exp t] -[visit_id t] -[visit_exp t] -[visit_id t] not free -[check_dims] i -dims \ = i -[visit_exp `_IDX`_blocktype(`%`_typeidx((i!`%`_s33.0 : int <:> nat)))] -[visit_exp (`%`_typeidx((i!`%`_s33.0 : int <:> nat)))] -[visit_exp `%`_typeidx((i!`%`_s33.0 : int <:> nat))] -[visit_exp ((i!`%`_s33.0 : int <:> nat))] -[visit_exp (i!`%`_s33.0 : int <:> nat)] -[visit_exp i!`%`_s33.0] -[visit_exp i!`%`_s33] -[visit_exp i] -[visit_id i] -[visit_exp i] -[visit_id i] not free -[visit_exp (i!`%`_s33.0 >= (0 : nat <:> int))] -[visit_exp i!`%`_s33.0] -[visit_exp i!`%`_s33] -[visit_exp i] -[visit_id i] not free -[visit_exp (0 : nat <:> int)] -[visit_exp 0] -ps' = -[check_dims] -[check_dims] bt in -dims \ = bt, in -[visit_exp `BLOCK`_instr(bt, in*{in <- `in*`})] -[visit_exp (bt, in*{in <- `in*`})] -[visit_exp bt] -[visit_id bt] -[visit_exp in*{in <- `in*`}] -[scope_enter in] -[visit_exp in] -[visit_id in] not free -[visit_id in] not free -[scope_exit in] -[visit_exp `in*`] -[visit_id in*] no dims -[visit_id in*] -[visit_exp bt] -[visit_id bt] not free -[scope_enter in] -[visit_exp in] -[visit_id in] not free -[visit_id in] not free -[scope_exit in] -[visit_exp `in*`] -[visit_id in*] not free -[visit_id in*] no dims -[check_dims] bt in -dims \ = bt, in -[visit_exp `LOOP`_instr(bt, in*{in <- `in*`})] -[visit_exp (bt, in*{in <- `in*`})] -[visit_exp bt] -[visit_id bt] -[visit_exp in*{in <- `in*`}] -[scope_enter in] -[visit_exp in] -[visit_id in] not free -[visit_id in] not free -[scope_exit in] -[visit_exp `in*`] -[visit_id in*] no dims -[visit_id in*] -[visit_exp bt] -[visit_id bt] not free -[scope_enter in] -[visit_exp in] -[visit_id in] not free -[visit_id in] not free -[scope_exit in] -[visit_exp `in*`] -[visit_id in*] not free -[visit_id in*] no dims -[check_dims] bt in -dims \ = bt, in -[visit_exp `IF%%ELSE%`_instr(bt, in*{in <- `in*`}, [])] -[visit_exp (bt, in*{in <- `in*`}, [])] -[visit_exp bt] -[visit_id bt] -[visit_exp in*{in <- `in*`}] -[scope_enter in] -[visit_exp in] -[visit_id in] not free -[visit_id in] not free -[scope_exit in] -[visit_exp `in*`] -[visit_id in*] no dims -[visit_id in*] -[visit_exp []] -[visit_exp bt] -[visit_id bt] not free -[scope_enter in] -[visit_exp in] -[visit_id in] not free -[visit_id in] not free -[scope_exit in] -[visit_exp `in*`] -[visit_id in*] not free -[visit_id in*] no dims -[check_dims] bt in_1 in_2 -dims \ = bt, in_1, in_2 -[visit_exp `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`})] -[visit_exp (bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`})] -[visit_exp bt] -[visit_id bt] -[visit_exp in_1*{in_1 <- `in_1*`}] -[scope_enter in_1] -[visit_exp in_1] -[visit_id in_1] not free -[visit_id in_1] not free -[scope_exit in_1] -[visit_exp `in_1*`] -[visit_id in_1*] no dims -[visit_id in_1*] -[visit_exp in_2*{in_2 <- `in_2*`}] -[scope_enter in_2] -[visit_exp in_2] -[visit_id in_2] not free -[visit_id in_2] not free -[scope_exit in_2] -[visit_exp `in_2*`] -[visit_id in_2*] no dims -[visit_id in_2*] -[visit_exp bt] -[visit_id bt] not free -[scope_enter in_1] -[visit_exp in_1] -[visit_id in_1] not free -[visit_id in_1] not free -[scope_exit in_1] -[visit_exp `in_1*`] -[visit_id in_1*] not free -[visit_id in_1*] no dims -[scope_enter in_2] -[visit_exp in_2] -[visit_id in_2] not free -[visit_id in_2] not free -[scope_exit in_2] -[visit_exp `in_2*`] -[visit_id in_2*] not free -[visit_id in_2*] no dims -ps' = -[check_dims] -[check_dims] x -dims \ = x -[visit_exp `THROW`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[check_dims] -dims \ = -[visit_exp `THROW_REF`_instr] -[visit_exp ()] -[check_dims] l -dims \ = l -[visit_exp `BR`_instr(l)] -[visit_exp (l)] -[visit_exp l] -[visit_id l] -[visit_exp l] -[visit_id l] not free -[check_dims] l -dims \ = l -[visit_exp `BR_IF`_instr(l)] -[visit_exp (l)] -[visit_exp l] -[visit_id l] -[visit_exp l] -[visit_id l] not free -[check_dims] l l_n -dims \ = l, l_n -[visit_exp `BR_TABLE`_instr(l*{l <- `l*`}, l_n)] -[visit_exp (l*{l <- `l*`}, l_n)] -[visit_exp l*{l <- `l*`}] -[scope_enter l] -[visit_exp l] -[visit_id l] not free -[visit_id l] not free -[scope_exit l] -[visit_exp `l*`] -[visit_id l*] no dims -[visit_id l*] -[visit_exp l_n] -[visit_id l_n] -[visit_exp l*{l <- `l*`}] -[scope_enter l] -[visit_exp l] -[visit_id l] not free -[visit_id l] not free -[scope_exit l] -[visit_exp `l*`] -[visit_id l*] not free -[visit_id l*] no dims -[visit_exp l_n] -[visit_id l_n] not free -[check_dims] -dims \ = -[visit_exp `RETURN`_instr] -[visit_exp ()] -[check_dims] x -dims \ = x -[visit_exp `CALL`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[check_dims] x y -dims \ = x, y -[visit_exp `CALL_INDIRECT`_instr(x, `_IDX`_typeuse(y))] -[visit_exp (x, `_IDX`_typeuse(y))] -[visit_exp x] -[visit_id x] -[visit_exp `_IDX`_typeuse(y)] -[visit_exp (y)] -[visit_exp y] -[visit_id y] -[visit_exp y] -[visit_id y] not free -[visit_exp x] -[visit_id x] not free -[check_dims] x -dims \ = x -[visit_exp `RETURN_CALL`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[check_dims] x y -dims \ = x, y -[visit_exp `RETURN_CALL_INDIRECT`_instr(x, `_IDX`_typeuse(y))] -[visit_exp (x, `_IDX`_typeuse(y))] -[visit_exp x] -[visit_id x] -[visit_exp `_IDX`_typeuse(y)] -[visit_exp (y)] -[visit_exp y] -[visit_id y] -[visit_exp y] -[visit_id y] not free -[visit_exp x] -[visit_id x] not free -[check_dims] x -dims \ = x -[visit_exp `CALL_REF`_instr(`_IDX`_typeuse(x))] -[visit_exp (`_IDX`_typeuse(x))] -[visit_exp `_IDX`_typeuse(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[check_dims] x -dims \ = x -[visit_exp `RETURN_CALL_REF`_instr(`_IDX`_typeuse(x))] -[visit_exp (`_IDX`_typeuse(x))] -[visit_exp `_IDX`_typeuse(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[check_dims] bt c in -dims \ = bt, c, in -[visit_exp `TRY_TABLE`_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`})] -[visit_exp (bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`})] -[visit_exp bt] -[visit_id bt] -[visit_exp `%`_list(c*{c <- `c*`})] -[visit_exp (c*{c <- `c*`})] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] no dims -[visit_id c*] -[visit_exp in*{in <- `in*`}] -[scope_enter in] -[visit_exp in] -[visit_id in] not free -[visit_id in] not free -[scope_exit in] -[visit_exp `in*`] -[visit_id in*] no dims -[visit_id in*] -[visit_exp bt] -[visit_id bt] not free -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[scope_enter in] -[visit_exp in] -[visit_id in] not free -[visit_id in] not free -[scope_exit in] -[visit_exp `in*`] -[visit_id in*] not free -[visit_id in*] no dims -[check_dims] l -dims \ = l -[visit_exp `BR_ON_NULL`_instr(l)] -[visit_exp (l)] -[visit_exp l] -[visit_id l] -[visit_exp l] -[visit_id l] not free -[check_dims] l -dims \ = l -[visit_exp `BR_ON_NON_NULL`_instr(l)] -[visit_exp (l)] -[visit_exp l] -[visit_id l] -[visit_exp l] -[visit_id l] not free -[check_dims] ht_1 ht_2 l null_1 null_2 -dims \ = ht_1, ht_2, l, null_1, null_2 -[visit_exp `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))] -[visit_exp (l, `REF`_reftype(null_1?{null_1 <- `null_1?`}, ht_1), `REF`_reftype(null_2?{null_2 <- `null_2?`}, ht_2))] -[visit_exp l] -[visit_id l] -[visit_exp `REF`_reftype(null_1?{null_1 <- `null_1?`}, ht_1)] -[visit_exp (null_1?{null_1 <- `null_1?`}, ht_1)] -[visit_exp null_1?{null_1 <- `null_1?`}] -[scope_enter null_1] -[visit_exp null_1] -[visit_id null_1] not free -[visit_id null_1] not free -[scope_exit null_1] -[visit_exp `null_1?`] -[visit_id null_1?] no dims -[visit_id null_1?] -[visit_exp ht_1] -[visit_id ht_1] -[visit_exp `REF`_reftype(null_2?{null_2 <- `null_2?`}, ht_2)] -[visit_exp (null_2?{null_2 <- `null_2?`}, ht_2)] -[visit_exp null_2?{null_2 <- `null_2?`}] -[scope_enter null_2] -[visit_exp null_2] -[visit_id null_2] not free -[visit_id null_2] not free -[scope_exit null_2] -[visit_exp `null_2?`] -[visit_id null_2?] no dims -[visit_id null_2?] -[visit_exp ht_2] -[visit_id ht_2] -[visit_exp `%`_u32(24)] -[visit_exp (24)] -[visit_exp 24] -[visit_exp (null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`})] -[visit_exp null_1?{null_1 <- `null_1?`}] -[scope_enter null_1] -[visit_exp null_1] -[visit_id null_1] not free -[visit_id null_1] not free -[scope_exit null_1] -[visit_exp `null_1?`] -[visit_id null_1?] not free -[visit_id null_1?] no dims -[visit_exp null_2?{null_2 <- `null_2?`}] -[scope_enter null_2] -[visit_exp null_2] -[visit_id null_2] not free -[visit_id null_2] not free -[scope_exit null_2] -[visit_exp `null_2?`] -[visit_id null_2?] not free -[visit_id null_2?] no dims -[visit_exp l] -[visit_id l] not free -[visit_exp ht_1] -[visit_id ht_1] not free -[visit_exp ht_2] -[visit_id ht_2] not free -[check_dims] ht_1 ht_2 l null_1 null_2 -dims \ = ht_1, ht_2, l, null_1, null_2 -[visit_exp `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))] -[visit_exp (l, `REF`_reftype(null_1?{null_1 <- `null_1?`}, ht_1), `REF`_reftype(null_2?{null_2 <- `null_2?`}, ht_2))] -[visit_exp l] -[visit_id l] -[visit_exp `REF`_reftype(null_1?{null_1 <- `null_1?`}, ht_1)] -[visit_exp (null_1?{null_1 <- `null_1?`}, ht_1)] -[visit_exp null_1?{null_1 <- `null_1?`}] -[scope_enter null_1] -[visit_exp null_1] -[visit_id null_1] not free -[visit_id null_1] not free -[scope_exit null_1] -[visit_exp `null_1?`] -[visit_id null_1?] no dims -[visit_id null_1?] -[visit_exp ht_1] -[visit_id ht_1] -[visit_exp `REF`_reftype(null_2?{null_2 <- `null_2?`}, ht_2)] -[visit_exp (null_2?{null_2 <- `null_2?`}, ht_2)] -[visit_exp null_2?{null_2 <- `null_2?`}] -[scope_enter null_2] -[visit_exp null_2] -[visit_id null_2] not free -[visit_id null_2] not free -[scope_exit null_2] -[visit_exp `null_2?`] -[visit_id null_2?] no dims -[visit_id null_2?] -[visit_exp ht_2] -[visit_id ht_2] -[visit_exp `%`_u32(25)] -[visit_exp (25)] -[visit_exp 25] -[visit_exp (null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`})] -[visit_exp null_1?{null_1 <- `null_1?`}] -[scope_enter null_1] -[visit_exp null_1] -[visit_id null_1] not free -[visit_id null_1] not free -[scope_exit null_1] -[visit_exp `null_1?`] -[visit_id null_1?] not free -[visit_id null_1?] no dims -[visit_exp null_2?{null_2 <- `null_2?`}] -[scope_enter null_2] -[visit_exp null_2] -[visit_id null_2] not free -[visit_id null_2] not free -[scope_exit null_2] -[visit_exp `null_2?`] -[visit_id null_2?] not free -[visit_id null_2?] no dims -[visit_exp l] -[visit_id l] not free -[visit_exp ht_1] -[visit_id ht_1] not free -[visit_exp ht_2] -[visit_id ht_2] not free -ps' = -[check_dims] -[check_dims] l x -dims \ = l, x -[visit_exp `CATCH`_catch(x, l)] -[visit_exp (x, l)] -[visit_exp x] -[visit_id x] -[visit_exp l] -[visit_id l] -[visit_exp x] -[visit_id x] not free -[visit_exp l] -[visit_id l] not free -[check_dims] l x -dims \ = l, x -[visit_exp `CATCH_REF`_catch(x, l)] -[visit_exp (x, l)] -[visit_exp x] -[visit_id x] -[visit_exp l] -[visit_id l] -[visit_exp x] -[visit_id x] not free -[visit_exp l] -[visit_id l] not free -[check_dims] l -dims \ = l -[visit_exp `CATCH_ALL`_catch(l)] -[visit_exp (l)] -[visit_exp l] -[visit_id l] -[visit_exp l] -[visit_id l] not free -[check_dims] l -dims \ = l -[visit_exp `CATCH_ALL_REF`_catch(l)] -[visit_exp (l)] -[visit_exp l] -[visit_id l] -[visit_exp l] -[visit_id l] not free -ps' = -[check_dims] -[check_dims] x -dims \ = x -[visit_exp `LOCAL.GET`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[check_dims] x -dims \ = x -[visit_exp `LOCAL.SET`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[check_dims] x -dims \ = x -[visit_exp `LOCAL.TEE`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -ps' = -[check_dims] -[check_dims] x -dims \ = x -[visit_exp `GLOBAL.GET`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[check_dims] x -dims \ = x -[visit_exp `GLOBAL.SET`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -ps' = -[check_dims] -[check_dims] x -dims \ = x -[visit_exp `TABLE.GET`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[check_dims] x -dims \ = x -[visit_exp `TABLE.SET`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[check_dims] x y -dims \ = x, y -[visit_exp `TABLE.INIT`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] -[visit_exp y] -[visit_id y] -[visit_exp `%`_u32(12)] -[visit_exp (12)] -[visit_exp 12] -[visit_exp y] -[visit_id y] not free -[visit_exp x] -[visit_id x] not free -[check_dims] x -dims \ = x -[visit_exp `ELEM.DROP`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%`_u32(13)] -[visit_exp (13)] -[visit_exp 13] -[visit_exp x] -[visit_id x] not free -[check_dims] x_1 x_2 -dims \ = x_1, x_2 -[visit_exp `TABLE.COPY`_instr(x_1, x_2)] -[visit_exp (x_1, x_2)] -[visit_exp x_1] -[visit_id x_1] -[visit_exp x_2] -[visit_id x_2] -[visit_exp `%`_u32(14)] -[visit_exp (14)] -[visit_exp 14] -[visit_exp x_1] -[visit_id x_1] not free -[visit_exp x_2] -[visit_id x_2] not free -[check_dims] x -dims \ = x -[visit_exp `TABLE.GROW`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%`_u32(15)] -[visit_exp (15)] -[visit_exp 15] -[visit_exp x] -[visit_id x] not free -[check_dims] x -dims \ = x -[visit_exp `TABLE.SIZE`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%`_u32(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp x] -[visit_id x] not free -[check_dims] x -dims \ = x -[visit_exp `TABLE.FILL`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%`_u32(17)] -[visit_exp (17)] -[visit_exp 17] -[visit_exp x] -[visit_id x] not free -[check_dims] -ps' = -[check_dims] -[check_dims] m n -dims \ = m, n -[visit_exp (`%`_memidx(0), {`ALIGN` `%`_u32(n), `OFFSET` `%`_u64(m)})] -[visit_exp `%`_memidx(0)] -[visit_exp (0)] -[visit_exp 0] -[visit_exp {`ALIGN` `%`_u32(n), `OFFSET` `%`_u64(m)}] -[visit_exp `%`_u32(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `%`_u64(m)] -[visit_exp (m)] -[visit_exp m] -[visit_id m] -[visit_exp `%`_u32(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] not free -[visit_exp `%`_u64(m)] -[visit_exp (m)] -[visit_exp m] -[visit_id m] not free -[visit_exp (n < (2 ^ 6))] -[visit_exp n] -[visit_id n] not free -[visit_exp (2 ^ 6)] -[visit_exp 2] -[visit_exp 6] -[check_dims] m n x -dims \ = m, n, x -[visit_exp (x, {`ALIGN` `%`_u32((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat)), `OFFSET` `%`_u64(m)})] -[visit_exp x] -[visit_id x] -[visit_exp {`ALIGN` `%`_u32((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat)), `OFFSET` `%`_u64(m)}] -[visit_exp `%`_u32((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat))] -[visit_exp ((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat))] -[visit_exp (((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat)] -[visit_exp ((n : nat <:> int) - ((2 ^ 6) : nat <:> int))] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] -[visit_exp ((2 ^ 6) : nat <:> int)] -[visit_exp (2 ^ 6)] -[visit_exp 2] -[visit_exp 6] -[visit_exp `%`_u64(m)] -[visit_exp (m)] -[visit_exp m] -[visit_id m] -[visit_exp `%`_u32(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] not free -[visit_exp x] -[visit_id x] not free -[visit_exp `%`_u64(m)] -[visit_exp (m)] -[visit_exp m] -[visit_id m] not free -[visit_exp (((2 ^ 6) <= n) /\ (n < (2 ^ 7)))] -[visit_exp ((2 ^ 6) <= n)] -[visit_exp (2 ^ 6)] -[visit_exp 2] -[visit_exp 6] -[visit_exp n] -[visit_id n] not free -[visit_exp (n < (2 ^ 7))] -[visit_exp n] -[visit_id n] not free -[visit_exp (2 ^ 7)] -[visit_exp 2] -[visit_exp 7] -ps' = -[check_dims] -[check_dims] ao x -dims \ = ao, x -[visit_exp `LOAD`_instr(`I32`_numtype, ?(), x, ao)] -[visit_exp (`I32`_numtype, ?(), x, ao)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp ?()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -[check_dims] ao x -dims \ = ao, x -[visit_exp `LOAD`_instr(`I64`_numtype, ?(), x, ao)] -[visit_exp (`I64`_numtype, ?(), x, ao)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp ?()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -[check_dims] ao x -dims \ = ao, x -[visit_exp `LOAD`_instr(`F32`_numtype, ?(), x, ao)] -[visit_exp (`F32`_numtype, ?(), x, ao)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp ?()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -[check_dims] ao x -dims \ = ao, x -[visit_exp `LOAD`_instr(`F64`_numtype, ?(), x, ao)] -[visit_exp (`F64`_numtype, ?(), x, ao)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp ?()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -[check_dims] ao x -dims \ = ao, x -[visit_exp `LOAD`_instr(`I32`_numtype, ?(`%_%`_loadop_(`%`_sz(8), `S`_sx)), x, ao)] -[visit_exp (`I32`_numtype, ?(`%_%`_loadop_(`%`_sz(8), `S`_sx)), x, ao)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp ?(`%_%`_loadop_(`%`_sz(8), `S`_sx))] -[visit_exp `%_%`_loadop_(`%`_sz(8), `S`_sx)] -[visit_exp (`%`_sz(8), `S`_sx)] -[visit_exp `%`_sz(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -[check_dims] ao x -dims \ = ao, x -[visit_exp `LOAD`_instr(`I32`_numtype, ?(`%_%`_loadop_(`%`_sz(8), `U`_sx)), x, ao)] -[visit_exp (`I32`_numtype, ?(`%_%`_loadop_(`%`_sz(8), `U`_sx)), x, ao)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp ?(`%_%`_loadop_(`%`_sz(8), `U`_sx))] -[visit_exp `%_%`_loadop_(`%`_sz(8), `U`_sx)] -[visit_exp (`%`_sz(8), `U`_sx)] -[visit_exp `%`_sz(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -[check_dims] ao x -dims \ = ao, x -[visit_exp `LOAD`_instr(`I32`_numtype, ?(`%_%`_loadop_(`%`_sz(16), `S`_sx)), x, ao)] -[visit_exp (`I32`_numtype, ?(`%_%`_loadop_(`%`_sz(16), `S`_sx)), x, ao)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp ?(`%_%`_loadop_(`%`_sz(16), `S`_sx))] -[visit_exp `%_%`_loadop_(`%`_sz(16), `S`_sx)] -[visit_exp (`%`_sz(16), `S`_sx)] -[visit_exp `%`_sz(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -[check_dims] ao x -dims \ = ao, x -[visit_exp `LOAD`_instr(`I32`_numtype, ?(`%_%`_loadop_(`%`_sz(16), `U`_sx)), x, ao)] -[visit_exp (`I32`_numtype, ?(`%_%`_loadop_(`%`_sz(16), `U`_sx)), x, ao)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp ?(`%_%`_loadop_(`%`_sz(16), `U`_sx))] -[visit_exp `%_%`_loadop_(`%`_sz(16), `U`_sx)] -[visit_exp (`%`_sz(16), `U`_sx)] -[visit_exp `%`_sz(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -[check_dims] ao x -dims \ = ao, x -[visit_exp `LOAD`_instr(`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(8), `S`_sx)), x, ao)] -[visit_exp (`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(8), `S`_sx)), x, ao)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp ?(`%_%`_loadop_(`%`_sz(8), `S`_sx))] -[visit_exp `%_%`_loadop_(`%`_sz(8), `S`_sx)] -[visit_exp (`%`_sz(8), `S`_sx)] -[visit_exp `%`_sz(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -[check_dims] ao x -dims \ = ao, x -[visit_exp `LOAD`_instr(`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(8), `U`_sx)), x, ao)] -[visit_exp (`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(8), `U`_sx)), x, ao)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp ?(`%_%`_loadop_(`%`_sz(8), `U`_sx))] -[visit_exp `%_%`_loadop_(`%`_sz(8), `U`_sx)] -[visit_exp (`%`_sz(8), `U`_sx)] -[visit_exp `%`_sz(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -[check_dims] ao x -dims \ = ao, x -[visit_exp `LOAD`_instr(`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(16), `S`_sx)), x, ao)] -[visit_exp (`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(16), `S`_sx)), x, ao)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp ?(`%_%`_loadop_(`%`_sz(16), `S`_sx))] -[visit_exp `%_%`_loadop_(`%`_sz(16), `S`_sx)] -[visit_exp (`%`_sz(16), `S`_sx)] -[visit_exp `%`_sz(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -[check_dims] ao x -dims \ = ao, x -[visit_exp `LOAD`_instr(`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(16), `U`_sx)), x, ao)] -[visit_exp (`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(16), `U`_sx)), x, ao)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp ?(`%_%`_loadop_(`%`_sz(16), `U`_sx))] -[visit_exp `%_%`_loadop_(`%`_sz(16), `U`_sx)] -[visit_exp (`%`_sz(16), `U`_sx)] -[visit_exp `%`_sz(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -[check_dims] ao x -dims \ = ao, x -[visit_exp `LOAD`_instr(`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(32), `S`_sx)), x, ao)] -[visit_exp (`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(32), `S`_sx)), x, ao)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp ?(`%_%`_loadop_(`%`_sz(32), `S`_sx))] -[visit_exp `%_%`_loadop_(`%`_sz(32), `S`_sx)] -[visit_exp (`%`_sz(32), `S`_sx)] -[visit_exp `%`_sz(32)] -[visit_exp (32)] -[visit_exp 32] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -[check_dims] ao x -dims \ = ao, x -[visit_exp `LOAD`_instr(`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(32), `U`_sx)), x, ao)] -[visit_exp (`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(32), `U`_sx)), x, ao)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp ?(`%_%`_loadop_(`%`_sz(32), `U`_sx))] -[visit_exp `%_%`_loadop_(`%`_sz(32), `U`_sx)] -[visit_exp (`%`_sz(32), `U`_sx)] -[visit_exp `%`_sz(32)] -[visit_exp (32)] -[visit_exp 32] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -[check_dims] ao x -dims \ = ao, x -[visit_exp `STORE`_instr(`I32`_numtype, ?(), x, ao)] -[visit_exp (`I32`_numtype, ?(), x, ao)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp ?()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -[check_dims] ao x -dims \ = ao, x -[visit_exp `STORE`_instr(`I64`_numtype, ?(), x, ao)] -[visit_exp (`I64`_numtype, ?(), x, ao)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp ?()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -[check_dims] ao x -dims \ = ao, x -[visit_exp `STORE`_instr(`F32`_numtype, ?(), x, ao)] -[visit_exp (`F32`_numtype, ?(), x, ao)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp ?()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -[check_dims] ao x -dims \ = ao, x -[visit_exp `STORE`_instr(`F64`_numtype, ?(), x, ao)] -[visit_exp (`F64`_numtype, ?(), x, ao)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp ?()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -[check_dims] ao x -dims \ = ao, x -[visit_exp `STORE`_instr(`I32`_numtype, ?(`%`_storeop_(`%`_sz(8))), x, ao)] -[visit_exp (`I32`_numtype, ?(`%`_storeop_(`%`_sz(8))), x, ao)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp ?(`%`_storeop_(`%`_sz(8)))] -[visit_exp `%`_storeop_(`%`_sz(8))] -[visit_exp (`%`_sz(8))] -[visit_exp `%`_sz(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -[check_dims] ao x -dims \ = ao, x -[visit_exp `STORE`_instr(`I32`_numtype, ?(`%`_storeop_(`%`_sz(16))), x, ao)] -[visit_exp (`I32`_numtype, ?(`%`_storeop_(`%`_sz(16))), x, ao)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp ?(`%`_storeop_(`%`_sz(16)))] -[visit_exp `%`_storeop_(`%`_sz(16))] -[visit_exp (`%`_sz(16))] -[visit_exp `%`_sz(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -[check_dims] ao x -dims \ = ao, x -[visit_exp `STORE`_instr(`I64`_numtype, ?(`%`_storeop_(`%`_sz(8))), x, ao)] -[visit_exp (`I64`_numtype, ?(`%`_storeop_(`%`_sz(8))), x, ao)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp ?(`%`_storeop_(`%`_sz(8)))] -[visit_exp `%`_storeop_(`%`_sz(8))] -[visit_exp (`%`_sz(8))] -[visit_exp `%`_sz(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -[check_dims] ao x -dims \ = ao, x -[visit_exp `STORE`_instr(`I64`_numtype, ?(`%`_storeop_(`%`_sz(16))), x, ao)] -[visit_exp (`I64`_numtype, ?(`%`_storeop_(`%`_sz(16))), x, ao)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp ?(`%`_storeop_(`%`_sz(16)))] -[visit_exp `%`_storeop_(`%`_sz(16))] -[visit_exp (`%`_sz(16))] -[visit_exp `%`_sz(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -[check_dims] ao x -dims \ = ao, x -[visit_exp `STORE`_instr(`I64`_numtype, ?(`%`_storeop_(`%`_sz(32))), x, ao)] -[visit_exp (`I64`_numtype, ?(`%`_storeop_(`%`_sz(32))), x, ao)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp ?(`%`_storeop_(`%`_sz(32)))] -[visit_exp `%`_storeop_(`%`_sz(32))] -[visit_exp (`%`_sz(32))] -[visit_exp `%`_sz(32)] -[visit_exp (32)] -[visit_exp 32] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -[check_dims] x -dims \ = x -[visit_exp `MEMORY.SIZE`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[check_dims] x -dims \ = x -[visit_exp `MEMORY.GROW`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[check_dims] x y -dims \ = x, y -[visit_exp `MEMORY.INIT`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] -[visit_exp y] -[visit_id y] -[visit_exp `%`_u32(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp y] -[visit_id y] not free -[visit_exp x] -[visit_id x] not free -[check_dims] x -dims \ = x -[visit_exp `DATA.DROP`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%`_u32(9)] -[visit_exp (9)] -[visit_exp 9] -[visit_exp x] -[visit_id x] not free -[check_dims] x_1 x_2 -dims \ = x_1, x_2 -[visit_exp `MEMORY.COPY`_instr(x_1, x_2)] -[visit_exp (x_1, x_2)] -[visit_exp x_1] -[visit_id x_1] -[visit_exp x_2] -[visit_id x_2] -[visit_exp `%`_u32(10)] -[visit_exp (10)] -[visit_exp 10] -[visit_exp x_1] -[visit_id x_1] not free -[visit_exp x_2] -[visit_id x_2] not free -[check_dims] x -dims \ = x -[visit_exp `MEMORY.FILL`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%`_u32(11)] -[visit_exp (11)] -[visit_exp 11] -[visit_exp x] -[visit_id x] not free -ps' = -[check_dims] -[check_dims] ht -dims \ = ht -[visit_exp `REF.NULL`_instr(ht)] -[visit_exp (ht)] -[visit_exp ht] -[visit_id ht] -[visit_exp ht] -[visit_id ht] not free -[check_dims] -dims \ = -[visit_exp `REF.IS_NULL`_instr] -[visit_exp ()] -[check_dims] x -dims \ = x -[visit_exp `REF.FUNC`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[check_dims] -dims \ = -[visit_exp `REF.EQ`_instr] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `REF.AS_NON_NULL`_instr] -[visit_exp ()] -[check_dims] ht -dims \ = ht -[visit_exp `REF.TEST`_instr(`REF`_reftype(?(), ht))] -[visit_exp (`REF`_reftype(?(), ht))] -[visit_exp `REF`_reftype(?(), ht)] -[visit_exp (?(), ht)] -[visit_exp ?()] -[visit_exp ht] -[visit_id ht] -[visit_exp `%`_u32(20)] -[visit_exp (20)] -[visit_exp 20] -[visit_exp ht] -[visit_id ht] not free -[check_dims] ht -dims \ = ht -[visit_exp `REF.TEST`_instr(`REF`_reftype(?(`NULL`_null), ht))] -[visit_exp (`REF`_reftype(?(`NULL`_null), ht))] -[visit_exp `REF`_reftype(?(`NULL`_null), ht)] -[visit_exp (?(`NULL`_null), ht)] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp ht] -[visit_id ht] -[visit_exp `%`_u32(21)] -[visit_exp (21)] -[visit_exp 21] -[visit_exp ht] -[visit_id ht] not free -[check_dims] ht -dims \ = ht -[visit_exp `REF.CAST`_instr(`REF`_reftype(?(), ht))] -[visit_exp (`REF`_reftype(?(), ht))] -[visit_exp `REF`_reftype(?(), ht)] -[visit_exp (?(), ht)] -[visit_exp ?()] -[visit_exp ht] -[visit_id ht] -[visit_exp `%`_u32(22)] -[visit_exp (22)] -[visit_exp 22] -[visit_exp ht] -[visit_id ht] not free -[check_dims] ht -dims \ = ht -[visit_exp `REF.CAST`_instr(`REF`_reftype(?(`NULL`_null), ht))] -[visit_exp (`REF`_reftype(?(`NULL`_null), ht))] -[visit_exp `REF`_reftype(?(`NULL`_null), ht)] -[visit_exp (?(`NULL`_null), ht)] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp ht] -[visit_id ht] -[visit_exp `%`_u32(23)] -[visit_exp (23)] -[visit_exp 23] -[visit_exp ht] -[visit_id ht] not free -ps' = -[check_dims] -[check_dims] x -dims \ = x -[visit_exp `STRUCT.NEW`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%`_u32(0)] -[visit_exp (0)] -[visit_exp 0] -[visit_exp x] -[visit_id x] not free -[check_dims] x -dims \ = x -[visit_exp `STRUCT.NEW_DEFAULT`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%`_u32(1)] -[visit_exp (1)] -[visit_exp 1] -[visit_exp x] -[visit_id x] not free -[check_dims] i x -dims \ = i, x -[visit_exp `STRUCT.GET`_instr(?(), x, i)] -[visit_exp (?(), x, i)] -[visit_exp ?()] -[visit_exp x] -[visit_id x] -[visit_exp i] -[visit_id i] -[visit_exp `%`_u32(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp x] -[visit_id x] not free -[visit_exp i] -[visit_id i] not free -[check_dims] i x -dims \ = i, x -[visit_exp `STRUCT.GET`_instr(?(`S`_sx), x, i)] -[visit_exp (?(`S`_sx), x, i)] -[visit_exp ?(`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp i] -[visit_id i] -[visit_exp `%`_u32(3)] -[visit_exp (3)] -[visit_exp 3] -[visit_exp x] -[visit_id x] not free -[visit_exp i] -[visit_id i] not free -[check_dims] i x -dims \ = i, x -[visit_exp `STRUCT.GET`_instr(?(`U`_sx), x, i)] -[visit_exp (?(`U`_sx), x, i)] -[visit_exp ?(`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp i] -[visit_id i] -[visit_exp `%`_u32(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp x] -[visit_id x] not free -[visit_exp i] -[visit_id i] not free -[check_dims] i x -dims \ = i, x -[visit_exp `STRUCT.SET`_instr(x, i)] -[visit_exp (x, i)] -[visit_exp x] -[visit_id x] -[visit_exp i] -[visit_id i] -[visit_exp `%`_u32(5)] -[visit_exp (5)] -[visit_exp 5] -[visit_exp x] -[visit_id x] not free -[visit_exp i] -[visit_id i] not free -ps' = -[check_dims] -[check_dims] x -dims \ = x -[visit_exp `ARRAY.NEW`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%`_u32(6)] -[visit_exp (6)] -[visit_exp 6] -[visit_exp x] -[visit_id x] not free -[check_dims] x -dims \ = x -[visit_exp `ARRAY.NEW_DEFAULT`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%`_u32(7)] -[visit_exp (7)] -[visit_exp 7] -[visit_exp x] -[visit_id x] not free -[check_dims] n x -dims \ = n, x -[visit_exp `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))] -[visit_exp (x, `%`_u32(n))] -[visit_exp x] -[visit_id x] -[visit_exp `%`_u32(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `%`_u32(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp x] -[visit_id x] not free -[visit_exp `%`_u32(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] not free -[check_dims] x y -dims \ = x, y -[visit_exp `ARRAY.NEW_DATA`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] -[visit_exp y] -[visit_id y] -[visit_exp `%`_u32(9)] -[visit_exp (9)] -[visit_exp 9] -[visit_exp x] -[visit_id x] not free -[visit_exp y] -[visit_id y] not free -[check_dims] x y -dims \ = x, y -[visit_exp `ARRAY.NEW_ELEM`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] -[visit_exp y] -[visit_id y] -[visit_exp `%`_u32(10)] -[visit_exp (10)] -[visit_exp 10] -[visit_exp x] -[visit_id x] not free -[visit_exp y] -[visit_id y] not free -[check_dims] x -dims \ = x -[visit_exp `ARRAY.GET`_instr(?(), x)] -[visit_exp (?(), x)] -[visit_exp ?()] -[visit_exp x] -[visit_id x] -[visit_exp `%`_u32(11)] -[visit_exp (11)] -[visit_exp 11] -[visit_exp x] -[visit_id x] not free -[check_dims] x -dims \ = x -[visit_exp `ARRAY.GET`_instr(?(`S`_sx), x)] -[visit_exp (?(`S`_sx), x)] -[visit_exp ?(`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp `%`_u32(12)] -[visit_exp (12)] -[visit_exp 12] -[visit_exp x] -[visit_id x] not free -[check_dims] x -dims \ = x -[visit_exp `ARRAY.GET`_instr(?(`U`_sx), x)] -[visit_exp (?(`U`_sx), x)] -[visit_exp ?(`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp `%`_u32(13)] -[visit_exp (13)] -[visit_exp 13] -[visit_exp x] -[visit_id x] not free -[check_dims] x -dims \ = x -[visit_exp `ARRAY.SET`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%`_u32(14)] -[visit_exp (14)] -[visit_exp 14] -[visit_exp x] -[visit_id x] not free -[check_dims] -dims \ = -[visit_exp `ARRAY.LEN`_instr] -[visit_exp ()] -[visit_exp `%`_u32(15)] -[visit_exp (15)] -[visit_exp 15] -[check_dims] x -dims \ = x -[visit_exp `ARRAY.FILL`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%`_u32(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp x] -[visit_id x] not free -[check_dims] x_1 x_2 -dims \ = x_1, x_2 -[visit_exp `ARRAY.COPY`_instr(x_1, x_2)] -[visit_exp (x_1, x_2)] -[visit_exp x_1] -[visit_id x_1] -[visit_exp x_2] -[visit_id x_2] -[visit_exp `%`_u32(17)] -[visit_exp (17)] -[visit_exp 17] -[visit_exp x_1] -[visit_id x_1] not free -[visit_exp x_2] -[visit_id x_2] not free -[check_dims] x y -dims \ = x, y -[visit_exp `ARRAY.INIT_DATA`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] -[visit_exp y] -[visit_id y] -[visit_exp `%`_u32(18)] -[visit_exp (18)] -[visit_exp 18] -[visit_exp x] -[visit_id x] not free -[visit_exp y] -[visit_id y] not free -[check_dims] x y -dims \ = x, y -[visit_exp `ARRAY.INIT_ELEM`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] -[visit_exp y] -[visit_id y] -[visit_exp `%`_u32(19)] -[visit_exp (19)] -[visit_exp 19] -[visit_exp x] -[visit_id x] not free -[visit_exp y] -[visit_id y] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `ANY.CONVERT_EXTERN`_instr] -[visit_exp ()] -[visit_exp `%`_u32(26)] -[visit_exp (26)] -[visit_exp 26] -[check_dims] -dims \ = -[visit_exp `EXTERN.CONVERT_ANY`_instr] -[visit_exp ()] -[visit_exp `%`_u32(27)] -[visit_exp (27)] -[visit_exp 27] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `REF.I31`_instr] -[visit_exp ()] -[visit_exp `%`_u32(28)] -[visit_exp (28)] -[visit_exp 28] -[check_dims] -dims \ = -[visit_exp `I31.GET`_instr(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(29)] -[visit_exp (29)] -[visit_exp 29] -[check_dims] -dims \ = -[visit_exp `I31.GET`_instr(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(30)] -[visit_exp (30)] -[visit_exp 30] -ps' = -[check_dims] -[check_dims] i -dims \ = i -[visit_exp `CONST`_instr(`I32`_numtype, i)] -[visit_exp (`I32`_numtype, i)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp i] -[visit_id i] -[visit_exp i] -[visit_id i] not free -[check_dims] i -dims \ = i -[visit_exp `CONST`_instr(`I64`_numtype, i)] -[visit_exp (`I64`_numtype, i)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp i] -[visit_id i] -[visit_exp i] -[visit_id i] not free -[check_dims] p -dims \ = p -[visit_exp `CONST`_instr(`F32`_numtype, p)] -[visit_exp (`F32`_numtype, p)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp p] -[visit_id p] -[visit_exp p] -[visit_id p] not free -[check_dims] p -dims \ = p -[visit_exp `CONST`_instr(`F64`_numtype, p)] -[visit_exp (`F64`_numtype, p)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp p] -[visit_id p] -[visit_exp p] -[visit_id p] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `TESTOP`_instr(`I32`_numtype, `EQZ`_testop_)] -[visit_exp (`I32`_numtype, `EQZ`_testop_)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `EQZ`_testop_] -[visit_exp ()] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `RELOP`_instr(`I32`_numtype, `EQ`_relop_)] -[visit_exp (`I32`_numtype, `EQ`_relop_)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `EQ`_relop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `RELOP`_instr(`I32`_numtype, `NE`_relop_)] -[visit_exp (`I32`_numtype, `NE`_relop_)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `NE`_relop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `RELOP`_instr(`I32`_numtype, `LT`_relop_(`S`_sx))] -[visit_exp (`I32`_numtype, `LT`_relop_(`S`_sx))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `LT`_relop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `RELOP`_instr(`I32`_numtype, `LT`_relop_(`U`_sx))] -[visit_exp (`I32`_numtype, `LT`_relop_(`U`_sx))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `LT`_relop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `RELOP`_instr(`I32`_numtype, `GT`_relop_(`S`_sx))] -[visit_exp (`I32`_numtype, `GT`_relop_(`S`_sx))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `GT`_relop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `RELOP`_instr(`I32`_numtype, `GT`_relop_(`U`_sx))] -[visit_exp (`I32`_numtype, `GT`_relop_(`U`_sx))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `GT`_relop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `RELOP`_instr(`I32`_numtype, `LE`_relop_(`S`_sx))] -[visit_exp (`I32`_numtype, `LE`_relop_(`S`_sx))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `LE`_relop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `RELOP`_instr(`I32`_numtype, `LE`_relop_(`U`_sx))] -[visit_exp (`I32`_numtype, `LE`_relop_(`U`_sx))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `LE`_relop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `RELOP`_instr(`I32`_numtype, `GE`_relop_(`S`_sx))] -[visit_exp (`I32`_numtype, `GE`_relop_(`S`_sx))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `GE`_relop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `RELOP`_instr(`I32`_numtype, `GE`_relop_(`U`_sx))] -[visit_exp (`I32`_numtype, `GE`_relop_(`U`_sx))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `GE`_relop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `TESTOP`_instr(`I64`_numtype, `EQZ`_testop_)] -[visit_exp (`I64`_numtype, `EQZ`_testop_)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `EQZ`_testop_] -[visit_exp ()] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `RELOP`_instr(`I64`_numtype, `EQ`_relop_)] -[visit_exp (`I64`_numtype, `EQ`_relop_)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `EQ`_relop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `RELOP`_instr(`I64`_numtype, `NE`_relop_)] -[visit_exp (`I64`_numtype, `NE`_relop_)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `NE`_relop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `RELOP`_instr(`I64`_numtype, `LT`_relop_(`S`_sx))] -[visit_exp (`I64`_numtype, `LT`_relop_(`S`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `LT`_relop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `RELOP`_instr(`I64`_numtype, `LT`_relop_(`U`_sx))] -[visit_exp (`I64`_numtype, `LT`_relop_(`U`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `LT`_relop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `RELOP`_instr(`I64`_numtype, `GT`_relop_(`S`_sx))] -[visit_exp (`I64`_numtype, `GT`_relop_(`S`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `GT`_relop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `RELOP`_instr(`I64`_numtype, `GT`_relop_(`U`_sx))] -[visit_exp (`I64`_numtype, `GT`_relop_(`U`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `GT`_relop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `RELOP`_instr(`I64`_numtype, `LE`_relop_(`S`_sx))] -[visit_exp (`I64`_numtype, `LE`_relop_(`S`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `LE`_relop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `RELOP`_instr(`I64`_numtype, `LE`_relop_(`U`_sx))] -[visit_exp (`I64`_numtype, `LE`_relop_(`U`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `LE`_relop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `RELOP`_instr(`I64`_numtype, `GE`_relop_(`S`_sx))] -[visit_exp (`I64`_numtype, `GE`_relop_(`S`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `GE`_relop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `RELOP`_instr(`I64`_numtype, `GE`_relop_(`U`_sx))] -[visit_exp (`I64`_numtype, `GE`_relop_(`U`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `GE`_relop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `RELOP`_instr(`F32`_numtype, `EQ`_relop_)] -[visit_exp (`F32`_numtype, `EQ`_relop_)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `EQ`_relop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `RELOP`_instr(`F32`_numtype, `NE`_relop_)] -[visit_exp (`F32`_numtype, `NE`_relop_)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `NE`_relop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `RELOP`_instr(`F32`_numtype, `LT`_relop_)] -[visit_exp (`F32`_numtype, `LT`_relop_)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `LT`_relop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `RELOP`_instr(`F32`_numtype, `GT`_relop_)] -[visit_exp (`F32`_numtype, `GT`_relop_)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `GT`_relop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `RELOP`_instr(`F32`_numtype, `LE`_relop_)] -[visit_exp (`F32`_numtype, `LE`_relop_)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `LE`_relop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `RELOP`_instr(`F32`_numtype, `GE`_relop_)] -[visit_exp (`F32`_numtype, `GE`_relop_)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `GE`_relop_] -[visit_exp ()] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `RELOP`_instr(`F64`_numtype, `EQ`_relop_)] -[visit_exp (`F64`_numtype, `EQ`_relop_)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `EQ`_relop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `RELOP`_instr(`F64`_numtype, `NE`_relop_)] -[visit_exp (`F64`_numtype, `NE`_relop_)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `NE`_relop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `RELOP`_instr(`F64`_numtype, `LT`_relop_)] -[visit_exp (`F64`_numtype, `LT`_relop_)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `LT`_relop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `RELOP`_instr(`F64`_numtype, `GT`_relop_)] -[visit_exp (`F64`_numtype, `GT`_relop_)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `GT`_relop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `RELOP`_instr(`F64`_numtype, `LE`_relop_)] -[visit_exp (`F64`_numtype, `LE`_relop_)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `LE`_relop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `RELOP`_instr(`F64`_numtype, `GE`_relop_)] -[visit_exp (`F64`_numtype, `GE`_relop_)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `GE`_relop_] -[visit_exp ()] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `UNOP`_instr(`I32`_numtype, `CLZ`_unop_)] -[visit_exp (`I32`_numtype, `CLZ`_unop_)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `CLZ`_unop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `UNOP`_instr(`I32`_numtype, `CTZ`_unop_)] -[visit_exp (`I32`_numtype, `CTZ`_unop_)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `CTZ`_unop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `UNOP`_instr(`I32`_numtype, `POPCNT`_unop_)] -[visit_exp (`I32`_numtype, `POPCNT`_unop_)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `POPCNT`_unop_] -[visit_exp ()] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `BINOP`_instr(`I32`_numtype, `ADD`_binop_)] -[visit_exp (`I32`_numtype, `ADD`_binop_)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `ADD`_binop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `BINOP`_instr(`I32`_numtype, `SUB`_binop_)] -[visit_exp (`I32`_numtype, `SUB`_binop_)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `SUB`_binop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `BINOP`_instr(`I32`_numtype, `MUL`_binop_)] -[visit_exp (`I32`_numtype, `MUL`_binop_)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `MUL`_binop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `BINOP`_instr(`I32`_numtype, `DIV`_binop_(`S`_sx))] -[visit_exp (`I32`_numtype, `DIV`_binop_(`S`_sx))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `DIV`_binop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `BINOP`_instr(`I32`_numtype, `DIV`_binop_(`U`_sx))] -[visit_exp (`I32`_numtype, `DIV`_binop_(`U`_sx))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `DIV`_binop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `BINOP`_instr(`I32`_numtype, `REM`_binop_(`S`_sx))] -[visit_exp (`I32`_numtype, `REM`_binop_(`S`_sx))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `REM`_binop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `BINOP`_instr(`I32`_numtype, `REM`_binop_(`U`_sx))] -[visit_exp (`I32`_numtype, `REM`_binop_(`U`_sx))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `REM`_binop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `BINOP`_instr(`I32`_numtype, `AND`_binop_)] -[visit_exp (`I32`_numtype, `AND`_binop_)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `AND`_binop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `BINOP`_instr(`I32`_numtype, `OR`_binop_)] -[visit_exp (`I32`_numtype, `OR`_binop_)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `OR`_binop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `BINOP`_instr(`I32`_numtype, `XOR`_binop_)] -[visit_exp (`I32`_numtype, `XOR`_binop_)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `XOR`_binop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `BINOP`_instr(`I32`_numtype, `SHL`_binop_)] -[visit_exp (`I32`_numtype, `SHL`_binop_)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `SHL`_binop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `BINOP`_instr(`I32`_numtype, `SHR`_binop_(`S`_sx))] -[visit_exp (`I32`_numtype, `SHR`_binop_(`S`_sx))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `SHR`_binop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `BINOP`_instr(`I32`_numtype, `SHR`_binop_(`U`_sx))] -[visit_exp (`I32`_numtype, `SHR`_binop_(`U`_sx))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `SHR`_binop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `BINOP`_instr(`I32`_numtype, `ROTL`_binop_)] -[visit_exp (`I32`_numtype, `ROTL`_binop_)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `ROTL`_binop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `BINOP`_instr(`I32`_numtype, `ROTR`_binop_)] -[visit_exp (`I32`_numtype, `ROTR`_binop_)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `ROTR`_binop_] -[visit_exp ()] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `UNOP`_instr(`I64`_numtype, `CLZ`_unop_)] -[visit_exp (`I64`_numtype, `CLZ`_unop_)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `CLZ`_unop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `UNOP`_instr(`I64`_numtype, `CTZ`_unop_)] -[visit_exp (`I64`_numtype, `CTZ`_unop_)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `CTZ`_unop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `UNOP`_instr(`I64`_numtype, `POPCNT`_unop_)] -[visit_exp (`I64`_numtype, `POPCNT`_unop_)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `POPCNT`_unop_] -[visit_exp ()] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `UNOP`_instr(`I32`_numtype, `EXTEND`_unop_(`%`_sz(8)))] -[visit_exp (`I32`_numtype, `EXTEND`_unop_(`%`_sz(8)))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `EXTEND`_unop_(`%`_sz(8))] -[visit_exp (`%`_sz(8))] -[visit_exp `%`_sz(8)] -[visit_exp (8)] -[visit_exp 8] -[check_dims] -dims \ = -[visit_exp `UNOP`_instr(`I32`_numtype, `EXTEND`_unop_(`%`_sz(16)))] -[visit_exp (`I32`_numtype, `EXTEND`_unop_(`%`_sz(16)))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `EXTEND`_unop_(`%`_sz(16))] -[visit_exp (`%`_sz(16))] -[visit_exp `%`_sz(16)] -[visit_exp (16)] -[visit_exp 16] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `UNOP`_instr(`I64`_numtype, `EXTEND`_unop_(`%`_sz(8)))] -[visit_exp (`I64`_numtype, `EXTEND`_unop_(`%`_sz(8)))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `EXTEND`_unop_(`%`_sz(8))] -[visit_exp (`%`_sz(8))] -[visit_exp `%`_sz(8)] -[visit_exp (8)] -[visit_exp 8] -[check_dims] -dims \ = -[visit_exp `UNOP`_instr(`I64`_numtype, `EXTEND`_unop_(`%`_sz(16)))] -[visit_exp (`I64`_numtype, `EXTEND`_unop_(`%`_sz(16)))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `EXTEND`_unop_(`%`_sz(16))] -[visit_exp (`%`_sz(16))] -[visit_exp `%`_sz(16)] -[visit_exp (16)] -[visit_exp 16] -[check_dims] -dims \ = -[visit_exp `UNOP`_instr(`I64`_numtype, `EXTEND`_unop_(`%`_sz(32)))] -[visit_exp (`I64`_numtype, `EXTEND`_unop_(`%`_sz(32)))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `EXTEND`_unop_(`%`_sz(32))] -[visit_exp (`%`_sz(32))] -[visit_exp `%`_sz(32)] -[visit_exp (32)] -[visit_exp 32] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `BINOP`_instr(`I64`_numtype, `ADD`_binop_)] -[visit_exp (`I64`_numtype, `ADD`_binop_)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `ADD`_binop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `BINOP`_instr(`I64`_numtype, `SUB`_binop_)] -[visit_exp (`I64`_numtype, `SUB`_binop_)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `SUB`_binop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `BINOP`_instr(`I64`_numtype, `MUL`_binop_)] -[visit_exp (`I64`_numtype, `MUL`_binop_)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `MUL`_binop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `BINOP`_instr(`I64`_numtype, `DIV`_binop_(`S`_sx))] -[visit_exp (`I64`_numtype, `DIV`_binop_(`S`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `DIV`_binop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `BINOP`_instr(`I64`_numtype, `DIV`_binop_(`U`_sx))] -[visit_exp (`I64`_numtype, `DIV`_binop_(`U`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `DIV`_binop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `BINOP`_instr(`I64`_numtype, `REM`_binop_(`S`_sx))] -[visit_exp (`I64`_numtype, `REM`_binop_(`S`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `REM`_binop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `BINOP`_instr(`I64`_numtype, `REM`_binop_(`U`_sx))] -[visit_exp (`I64`_numtype, `REM`_binop_(`U`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `REM`_binop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `BINOP`_instr(`I64`_numtype, `AND`_binop_)] -[visit_exp (`I64`_numtype, `AND`_binop_)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `AND`_binop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `BINOP`_instr(`I64`_numtype, `OR`_binop_)] -[visit_exp (`I64`_numtype, `OR`_binop_)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `OR`_binop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `BINOP`_instr(`I64`_numtype, `XOR`_binop_)] -[visit_exp (`I64`_numtype, `XOR`_binop_)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `XOR`_binop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `BINOP`_instr(`I64`_numtype, `SHL`_binop_)] -[visit_exp (`I64`_numtype, `SHL`_binop_)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `SHL`_binop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `BINOP`_instr(`I64`_numtype, `SHR`_binop_(`S`_sx))] -[visit_exp (`I64`_numtype, `SHR`_binop_(`S`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `SHR`_binop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `BINOP`_instr(`I64`_numtype, `SHR`_binop_(`U`_sx))] -[visit_exp (`I64`_numtype, `SHR`_binop_(`U`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `SHR`_binop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `BINOP`_instr(`I64`_numtype, `ROTL`_binop_)] -[visit_exp (`I64`_numtype, `ROTL`_binop_)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `ROTL`_binop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `BINOP`_instr(`I64`_numtype, `ROTR`_binop_)] -[visit_exp (`I64`_numtype, `ROTR`_binop_)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `ROTR`_binop_] -[visit_exp ()] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `UNOP`_instr(`F32`_numtype, `ABS`_unop_)] -[visit_exp (`F32`_numtype, `ABS`_unop_)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `ABS`_unop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `UNOP`_instr(`F32`_numtype, `NEG`_unop_)] -[visit_exp (`F32`_numtype, `NEG`_unop_)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `NEG`_unop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `UNOP`_instr(`F32`_numtype, `CEIL`_unop_)] -[visit_exp (`F32`_numtype, `CEIL`_unop_)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `CEIL`_unop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `UNOP`_instr(`F32`_numtype, `FLOOR`_unop_)] -[visit_exp (`F32`_numtype, `FLOOR`_unop_)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `FLOOR`_unop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `UNOP`_instr(`F32`_numtype, `TRUNC`_unop_)] -[visit_exp (`F32`_numtype, `TRUNC`_unop_)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `TRUNC`_unop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `UNOP`_instr(`F32`_numtype, `NEAREST`_unop_)] -[visit_exp (`F32`_numtype, `NEAREST`_unop_)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `NEAREST`_unop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `UNOP`_instr(`F32`_numtype, `SQRT`_unop_)] -[visit_exp (`F32`_numtype, `SQRT`_unop_)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `SQRT`_unop_] -[visit_exp ()] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `BINOP`_instr(`F32`_numtype, `ADD`_binop_)] -[visit_exp (`F32`_numtype, `ADD`_binop_)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `ADD`_binop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `BINOP`_instr(`F32`_numtype, `SUB`_binop_)] -[visit_exp (`F32`_numtype, `SUB`_binop_)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `SUB`_binop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `BINOP`_instr(`F32`_numtype, `MUL`_binop_)] -[visit_exp (`F32`_numtype, `MUL`_binop_)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `MUL`_binop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `BINOP`_instr(`F32`_numtype, `DIV`_binop_)] -[visit_exp (`F32`_numtype, `DIV`_binop_)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `DIV`_binop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `BINOP`_instr(`F32`_numtype, `MIN`_binop_)] -[visit_exp (`F32`_numtype, `MIN`_binop_)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `MIN`_binop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `BINOP`_instr(`F32`_numtype, `MAX`_binop_)] -[visit_exp (`F32`_numtype, `MAX`_binop_)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `MAX`_binop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `BINOP`_instr(`F32`_numtype, `COPYSIGN`_binop_)] -[visit_exp (`F32`_numtype, `COPYSIGN`_binop_)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `COPYSIGN`_binop_] -[visit_exp ()] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `UNOP`_instr(`F64`_numtype, `ABS`_unop_)] -[visit_exp (`F64`_numtype, `ABS`_unop_)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `ABS`_unop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `UNOP`_instr(`F64`_numtype, `NEG`_unop_)] -[visit_exp (`F64`_numtype, `NEG`_unop_)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `NEG`_unop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `UNOP`_instr(`F64`_numtype, `CEIL`_unop_)] -[visit_exp (`F64`_numtype, `CEIL`_unop_)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `CEIL`_unop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `UNOP`_instr(`F64`_numtype, `FLOOR`_unop_)] -[visit_exp (`F64`_numtype, `FLOOR`_unop_)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `FLOOR`_unop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `UNOP`_instr(`F64`_numtype, `TRUNC`_unop_)] -[visit_exp (`F64`_numtype, `TRUNC`_unop_)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `TRUNC`_unop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `UNOP`_instr(`F64`_numtype, `NEAREST`_unop_)] -[visit_exp (`F64`_numtype, `NEAREST`_unop_)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `NEAREST`_unop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `UNOP`_instr(`F64`_numtype, `SQRT`_unop_)] -[visit_exp (`F64`_numtype, `SQRT`_unop_)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `SQRT`_unop_] -[visit_exp ()] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `BINOP`_instr(`F64`_numtype, `ADD`_binop_)] -[visit_exp (`F64`_numtype, `ADD`_binop_)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `ADD`_binop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `BINOP`_instr(`F64`_numtype, `SUB`_binop_)] -[visit_exp (`F64`_numtype, `SUB`_binop_)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `SUB`_binop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `BINOP`_instr(`F64`_numtype, `MUL`_binop_)] -[visit_exp (`F64`_numtype, `MUL`_binop_)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `MUL`_binop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `BINOP`_instr(`F64`_numtype, `DIV`_binop_)] -[visit_exp (`F64`_numtype, `DIV`_binop_)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `DIV`_binop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `BINOP`_instr(`F64`_numtype, `MIN`_binop_)] -[visit_exp (`F64`_numtype, `MIN`_binop_)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `MIN`_binop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `BINOP`_instr(`F64`_numtype, `MAX`_binop_)] -[visit_exp (`F64`_numtype, `MAX`_binop_)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `MAX`_binop_] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `BINOP`_instr(`F64`_numtype, `COPYSIGN`_binop_)] -[visit_exp (`F64`_numtype, `COPYSIGN`_binop_)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `COPYSIGN`_binop_] -[visit_exp ()] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `CVTOP`_instr(`I32`_numtype, `I64`_numtype, `WRAP`_cvtop__)] -[visit_exp (`I32`_numtype, `I64`_numtype, `WRAP`_cvtop__)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `WRAP`_cvtop__] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `CVTOP`_instr(`I32`_numtype, `F32`_numtype, `TRUNC`_cvtop__(`S`_sx))] -[visit_exp (`I32`_numtype, `F32`_numtype, `TRUNC`_cvtop__(`S`_sx))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `TRUNC`_cvtop__(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `CVTOP`_instr(`I32`_numtype, `F32`_numtype, `TRUNC`_cvtop__(`U`_sx))] -[visit_exp (`I32`_numtype, `F32`_numtype, `TRUNC`_cvtop__(`U`_sx))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `TRUNC`_cvtop__(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `CVTOP`_instr(`I32`_numtype, `F64`_numtype, `TRUNC`_cvtop__(`S`_sx))] -[visit_exp (`I32`_numtype, `F64`_numtype, `TRUNC`_cvtop__(`S`_sx))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `TRUNC`_cvtop__(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `CVTOP`_instr(`I32`_numtype, `F64`_numtype, `TRUNC`_cvtop__(`U`_sx))] -[visit_exp (`I32`_numtype, `F64`_numtype, `TRUNC`_cvtop__(`U`_sx))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `TRUNC`_cvtop__(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `CVTOP`_instr(`I64`_numtype, `I32`_numtype, `EXTEND`_cvtop__(`S`_sx))] -[visit_exp (`I64`_numtype, `I32`_numtype, `EXTEND`_cvtop__(`S`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `EXTEND`_cvtop__(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `CVTOP`_instr(`I64`_numtype, `I32`_numtype, `EXTEND`_cvtop__(`U`_sx))] -[visit_exp (`I64`_numtype, `I32`_numtype, `EXTEND`_cvtop__(`U`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `EXTEND`_cvtop__(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `CVTOP`_instr(`I64`_numtype, `F32`_numtype, `TRUNC`_cvtop__(`S`_sx))] -[visit_exp (`I64`_numtype, `F32`_numtype, `TRUNC`_cvtop__(`S`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `TRUNC`_cvtop__(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `CVTOP`_instr(`I64`_numtype, `F32`_numtype, `TRUNC`_cvtop__(`U`_sx))] -[visit_exp (`I64`_numtype, `F32`_numtype, `TRUNC`_cvtop__(`U`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `TRUNC`_cvtop__(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `CVTOP`_instr(`I64`_numtype, `F64`_numtype, `TRUNC`_cvtop__(`S`_sx))] -[visit_exp (`I64`_numtype, `F64`_numtype, `TRUNC`_cvtop__(`S`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `TRUNC`_cvtop__(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `CVTOP`_instr(`I64`_numtype, `F64`_numtype, `TRUNC`_cvtop__(`U`_sx))] -[visit_exp (`I64`_numtype, `F64`_numtype, `TRUNC`_cvtop__(`U`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `TRUNC`_cvtop__(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `CVTOP`_instr(`F32`_numtype, `I32`_numtype, `CONVERT`_cvtop__(`S`_sx))] -[visit_exp (`F32`_numtype, `I32`_numtype, `CONVERT`_cvtop__(`S`_sx))] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `CONVERT`_cvtop__(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `CVTOP`_instr(`F32`_numtype, `I32`_numtype, `CONVERT`_cvtop__(`U`_sx))] -[visit_exp (`F32`_numtype, `I32`_numtype, `CONVERT`_cvtop__(`U`_sx))] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `CONVERT`_cvtop__(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `CVTOP`_instr(`F32`_numtype, `I64`_numtype, `CONVERT`_cvtop__(`S`_sx))] -[visit_exp (`F32`_numtype, `I64`_numtype, `CONVERT`_cvtop__(`S`_sx))] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `CONVERT`_cvtop__(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `CVTOP`_instr(`F32`_numtype, `I64`_numtype, `CONVERT`_cvtop__(`U`_sx))] -[visit_exp (`F32`_numtype, `I64`_numtype, `CONVERT`_cvtop__(`U`_sx))] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `CONVERT`_cvtop__(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `CVTOP`_instr(`F32`_numtype, `F64`_numtype, `DEMOTE`_cvtop__)] -[visit_exp (`F32`_numtype, `F64`_numtype, `DEMOTE`_cvtop__)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `DEMOTE`_cvtop__] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `CVTOP`_instr(`F64`_numtype, `I32`_numtype, `CONVERT`_cvtop__(`S`_sx))] -[visit_exp (`F64`_numtype, `I32`_numtype, `CONVERT`_cvtop__(`S`_sx))] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `CONVERT`_cvtop__(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `CVTOP`_instr(`F64`_numtype, `I32`_numtype, `CONVERT`_cvtop__(`U`_sx))] -[visit_exp (`F64`_numtype, `I32`_numtype, `CONVERT`_cvtop__(`U`_sx))] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `CONVERT`_cvtop__(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `CVTOP`_instr(`F64`_numtype, `I64`_numtype, `CONVERT`_cvtop__(`S`_sx))] -[visit_exp (`F64`_numtype, `I64`_numtype, `CONVERT`_cvtop__(`S`_sx))] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `CONVERT`_cvtop__(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `CVTOP`_instr(`F64`_numtype, `I64`_numtype, `CONVERT`_cvtop__(`U`_sx))] -[visit_exp (`F64`_numtype, `I64`_numtype, `CONVERT`_cvtop__(`U`_sx))] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `CONVERT`_cvtop__(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `CVTOP`_instr(`F64`_numtype, `F32`_numtype, `PROMOTE`_cvtop__)] -[visit_exp (`F64`_numtype, `F32`_numtype, `PROMOTE`_cvtop__)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `PROMOTE`_cvtop__] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `CVTOP`_instr(`I32`_numtype, `F32`_numtype, `REINTERPRET`_cvtop__)] -[visit_exp (`I32`_numtype, `F32`_numtype, `REINTERPRET`_cvtop__)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `REINTERPRET`_cvtop__] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `CVTOP`_instr(`I64`_numtype, `F64`_numtype, `REINTERPRET`_cvtop__)] -[visit_exp (`I64`_numtype, `F64`_numtype, `REINTERPRET`_cvtop__)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `REINTERPRET`_cvtop__] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `CVTOP`_instr(`F32`_numtype, `I32`_numtype, `REINTERPRET`_cvtop__)] -[visit_exp (`F32`_numtype, `I32`_numtype, `REINTERPRET`_cvtop__)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `REINTERPRET`_cvtop__] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `CVTOP`_instr(`F64`_numtype, `I64`_numtype, `REINTERPRET`_cvtop__)] -[visit_exp (`F64`_numtype, `I64`_numtype, `REINTERPRET`_cvtop__)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `REINTERPRET`_cvtop__] -[visit_exp ()] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `CVTOP`_instr(`I32`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__(`S`_sx))] -[visit_exp (`I32`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__(`S`_sx))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `TRUNC_SAT`_cvtop__(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(0)] -[visit_exp (0)] -[visit_exp 0] -[check_dims] -dims \ = -[visit_exp `CVTOP`_instr(`I32`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__(`U`_sx))] -[visit_exp (`I32`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__(`U`_sx))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `TRUNC_SAT`_cvtop__(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(1)] -[visit_exp (1)] -[visit_exp 1] -[check_dims] -dims \ = -[visit_exp `CVTOP`_instr(`I32`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__(`S`_sx))] -[visit_exp (`I32`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__(`S`_sx))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `TRUNC_SAT`_cvtop__(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(2)] -[visit_exp (2)] -[visit_exp 2] -[check_dims] -dims \ = -[visit_exp `CVTOP`_instr(`I32`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__(`U`_sx))] -[visit_exp (`I32`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__(`U`_sx))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `TRUNC_SAT`_cvtop__(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(3)] -[visit_exp (3)] -[visit_exp 3] -[check_dims] -dims \ = -[visit_exp `CVTOP`_instr(`I64`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__(`S`_sx))] -[visit_exp (`I64`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__(`S`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `TRUNC_SAT`_cvtop__(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(4)] -[visit_exp (4)] -[visit_exp 4] -[check_dims] -dims \ = -[visit_exp `CVTOP`_instr(`I64`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__(`U`_sx))] -[visit_exp (`I64`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__(`U`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `TRUNC_SAT`_cvtop__(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(5)] -[visit_exp (5)] -[visit_exp 5] -[check_dims] -dims \ = -[visit_exp `CVTOP`_instr(`I64`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__(`S`_sx))] -[visit_exp (`I64`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__(`S`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `TRUNC_SAT`_cvtop__(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(6)] -[visit_exp (6)] -[visit_exp 6] -[check_dims] -dims \ = -[visit_exp `CVTOP`_instr(`I64`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__(`U`_sx))] -[visit_exp (`I64`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__(`U`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `TRUNC_SAT`_cvtop__(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(7)] -[visit_exp (7)] -[visit_exp 7] -ps' = -[check_dims] -[check_dims] l -dims \ = l -[visit_exp `%`_laneidx(l!`%`_labelidx.0)] -[visit_exp (l!`%`_labelidx.0)] -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] -[visit_exp `%`_byte(l!`%`_labelidx.0)] -[visit_exp (l!`%`_labelidx.0)] -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] not free -ps' = -[check_dims] -[check_dims] ao x -dims \ = ao, x -[visit_exp `VLOAD`_instr(`V128`_vectype, ?(), x, ao)] -[visit_exp (`V128`_vectype, ?(), x, ao)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp ?()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp `%`_u32(0)] -[visit_exp (0)] -[visit_exp 0] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -[check_dims] ao x -dims \ = ao, x -[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, `S`_sx)), x, ao)] -[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, `S`_sx)), x, ao)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, `S`_sx))] -[visit_exp `SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, `S`_sx)] -[visit_exp (`%`_sz(8), 8, `S`_sx)] -[visit_exp `%`_sz(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp 8] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp `%`_u32(1)] -[visit_exp (1)] -[visit_exp 1] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -[check_dims] ao x -dims \ = ao, x -[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, `U`_sx)), x, ao)] -[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, `U`_sx)), x, ao)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, `U`_sx))] -[visit_exp `SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, `U`_sx)] -[visit_exp (`%`_sz(8), 8, `U`_sx)] -[visit_exp `%`_sz(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp 8] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp `%`_u32(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -[check_dims] ao x -dims \ = ao, x -[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, `S`_sx)), x, ao)] -[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, `S`_sx)), x, ao)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, `S`_sx))] -[visit_exp `SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, `S`_sx)] -[visit_exp (`%`_sz(16), 4, `S`_sx)] -[visit_exp `%`_sz(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp 4] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp `%`_u32(3)] -[visit_exp (3)] -[visit_exp 3] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -[check_dims] ao x -dims \ = ao, x -[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, `U`_sx)), x, ao)] -[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, `U`_sx)), x, ao)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, `U`_sx))] -[visit_exp `SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, `U`_sx)] -[visit_exp (`%`_sz(16), 4, `U`_sx)] -[visit_exp `%`_sz(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp 4] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp `%`_u32(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -[check_dims] ao x -dims \ = ao, x -[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, `S`_sx)), x, ao)] -[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, `S`_sx)), x, ao)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, `S`_sx))] -[visit_exp `SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, `S`_sx)] -[visit_exp (`%`_sz(32), 2, `S`_sx)] -[visit_exp `%`_sz(32)] -[visit_exp (32)] -[visit_exp 32] -[visit_exp 2] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp `%`_u32(5)] -[visit_exp (5)] -[visit_exp 5] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -[check_dims] ao x -dims \ = ao, x -[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, `U`_sx)), x, ao)] -[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, `U`_sx)), x, ao)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, `U`_sx))] -[visit_exp `SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, `U`_sx)] -[visit_exp (`%`_sz(32), 2, `U`_sx)] -[visit_exp `%`_sz(32)] -[visit_exp (32)] -[visit_exp 32] -[visit_exp 2] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp `%`_u32(6)] -[visit_exp (6)] -[visit_exp 6] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -[check_dims] ao x -dims \ = ao, x -[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(8))), x, ao)] -[visit_exp (`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(8))), x, ao)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp ?(`SPLAT`_vloadop_(`%`_sz(8)))] -[visit_exp `SPLAT`_vloadop_(`%`_sz(8))] -[visit_exp (`%`_sz(8))] -[visit_exp `%`_sz(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp `%`_u32(7)] -[visit_exp (7)] -[visit_exp 7] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -[check_dims] ao x -dims \ = ao, x -[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(16))), x, ao)] -[visit_exp (`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(16))), x, ao)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp ?(`SPLAT`_vloadop_(`%`_sz(16)))] -[visit_exp `SPLAT`_vloadop_(`%`_sz(16))] -[visit_exp (`%`_sz(16))] -[visit_exp `%`_sz(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp `%`_u32(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -[check_dims] ao x -dims \ = ao, x -[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(32))), x, ao)] -[visit_exp (`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(32))), x, ao)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp ?(`SPLAT`_vloadop_(`%`_sz(32)))] -[visit_exp `SPLAT`_vloadop_(`%`_sz(32))] -[visit_exp (`%`_sz(32))] -[visit_exp `%`_sz(32)] -[visit_exp (32)] -[visit_exp 32] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp `%`_u32(9)] -[visit_exp (9)] -[visit_exp 9] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -[check_dims] ao x -dims \ = ao, x -[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(64))), x, ao)] -[visit_exp (`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(64))), x, ao)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp ?(`SPLAT`_vloadop_(`%`_sz(64)))] -[visit_exp `SPLAT`_vloadop_(`%`_sz(64))] -[visit_exp (`%`_sz(64))] -[visit_exp `%`_sz(64)] -[visit_exp (64)] -[visit_exp 64] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp `%`_u32(10)] -[visit_exp (10)] -[visit_exp 10] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -[check_dims] ao x -dims \ = ao, x -[visit_exp `VSTORE`_instr(`V128`_vectype, x, ao)] -[visit_exp (`V128`_vectype, x, ao)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp `%`_u32(11)] -[visit_exp (11)] -[visit_exp 11] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -[check_dims] ao i x -dims \ = ao, i, x -[visit_exp `VLOAD_LANE`_instr(`V128`_vectype, `%`_sz(8), x, ao, i)] -[visit_exp (`V128`_vectype, `%`_sz(8), x, ao, i)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp `%`_sz(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp i] -[visit_id i] -[visit_exp `%`_u32(84)] -[visit_exp (84)] -[visit_exp 84] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -[visit_exp i] -[visit_id i] not free -[check_dims] ao i x -dims \ = ao, i, x -[visit_exp `VLOAD_LANE`_instr(`V128`_vectype, `%`_sz(16), x, ao, i)] -[visit_exp (`V128`_vectype, `%`_sz(16), x, ao, i)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp `%`_sz(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp i] -[visit_id i] -[visit_exp `%`_u32(85)] -[visit_exp (85)] -[visit_exp 85] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -[visit_exp i] -[visit_id i] not free -[check_dims] ao i x -dims \ = ao, i, x -[visit_exp `VLOAD_LANE`_instr(`V128`_vectype, `%`_sz(32), x, ao, i)] -[visit_exp (`V128`_vectype, `%`_sz(32), x, ao, i)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp `%`_sz(32)] -[visit_exp (32)] -[visit_exp 32] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp i] -[visit_id i] -[visit_exp `%`_u32(86)] -[visit_exp (86)] -[visit_exp 86] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -[visit_exp i] -[visit_id i] not free -[check_dims] ao i x -dims \ = ao, i, x -[visit_exp `VLOAD_LANE`_instr(`V128`_vectype, `%`_sz(64), x, ao, i)] -[visit_exp (`V128`_vectype, `%`_sz(64), x, ao, i)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp `%`_sz(64)] -[visit_exp (64)] -[visit_exp 64] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp i] -[visit_id i] -[visit_exp `%`_u32(87)] -[visit_exp (87)] -[visit_exp 87] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -[visit_exp i] -[visit_id i] not free -[check_dims] ao i x -dims \ = ao, i, x -[visit_exp `VSTORE_LANE`_instr(`V128`_vectype, `%`_sz(8), x, ao, i)] -[visit_exp (`V128`_vectype, `%`_sz(8), x, ao, i)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp `%`_sz(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp i] -[visit_id i] -[visit_exp `%`_u32(88)] -[visit_exp (88)] -[visit_exp 88] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -[visit_exp i] -[visit_id i] not free -[check_dims] ao i x -dims \ = ao, i, x -[visit_exp `VSTORE_LANE`_instr(`V128`_vectype, `%`_sz(16), x, ao, i)] -[visit_exp (`V128`_vectype, `%`_sz(16), x, ao, i)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp `%`_sz(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp i] -[visit_id i] -[visit_exp `%`_u32(89)] -[visit_exp (89)] -[visit_exp 89] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -[visit_exp i] -[visit_id i] not free -[check_dims] ao i x -dims \ = ao, i, x -[visit_exp `VSTORE_LANE`_instr(`V128`_vectype, `%`_sz(32), x, ao, i)] -[visit_exp (`V128`_vectype, `%`_sz(32), x, ao, i)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp `%`_sz(32)] -[visit_exp (32)] -[visit_exp 32] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp i] -[visit_id i] -[visit_exp `%`_u32(90)] -[visit_exp (90)] -[visit_exp 90] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -[visit_exp i] -[visit_id i] not free -[check_dims] ao i x -dims \ = ao, i, x -[visit_exp `VSTORE_LANE`_instr(`V128`_vectype, `%`_sz(64), x, ao, i)] -[visit_exp (`V128`_vectype, `%`_sz(64), x, ao, i)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp `%`_sz(64)] -[visit_exp (64)] -[visit_exp 64] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp i] -[visit_id i] -[visit_exp `%`_u32(91)] -[visit_exp (91)] -[visit_exp 91] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -[visit_exp i] -[visit_id i] not free -[check_dims] ao x -dims \ = ao, x -[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`ZERO`_vloadop_(`%`_sz(32))), x, ao)] -[visit_exp (`V128`_vectype, ?(`ZERO`_vloadop_(`%`_sz(32))), x, ao)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp ?(`ZERO`_vloadop_(`%`_sz(32)))] -[visit_exp `ZERO`_vloadop_(`%`_sz(32))] -[visit_exp (`%`_sz(32))] -[visit_exp `%`_sz(32)] -[visit_exp (32)] -[visit_exp 32] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp `%`_u32(92)] -[visit_exp (92)] -[visit_exp 92] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -[check_dims] ao x -dims \ = ao, x -[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`ZERO`_vloadop_(`%`_sz(64))), x, ao)] -[visit_exp (`V128`_vectype, ?(`ZERO`_vloadop_(`%`_sz(64))), x, ao)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp ?(`ZERO`_vloadop_(`%`_sz(64)))] -[visit_exp `ZERO`_vloadop_(`%`_sz(64))] -[visit_exp (`%`_sz(64))] -[visit_exp `%`_sz(64)] -[visit_exp (64)] -[visit_exp 64] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp `%`_u32(93)] -[visit_exp (93)] -[visit_exp 93] -[visit_exp (x, ao)] -[visit_exp x] -[visit_id x] not free -[visit_exp ao] -[visit_id ao] not free -ps' = -[check_dims] -[check_dims] b -dims \ = b -[visit_exp `VCONST`_instr(`V128`_vectype, $inv_ibytes_(128, b^16{b <- `b*`}))] -[visit_exp (`V128`_vectype, $inv_ibytes_(128, b^16{b <- `b*`}))] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp $inv_ibytes_(128, b^16{b <- `b*`})] -[visit_exp 128] -[visit_exp b^16{b <- `b*`}] -[scope_enter b] -[visit_exp b] -[visit_id b] not free -[visit_id b] not free -[scope_exit b] -[visit_exp 16] -[visit_exp `b*`] -[visit_id b*] no dims -[visit_id b*] -[visit_exp `%`_u32(12)] -[visit_exp (12)] -[visit_exp 12] -[scope_enter b] -[visit_exp b] -[visit_id b] not free -[visit_id b] not free -[scope_exit b] -[visit_exp 16] -[visit_exp `b*`] -[visit_id b*] not free -[visit_id b*] no dims -ps' = -[check_dims] -[check_dims] l -dims \ = l -[visit_exp `VSHUFFLE`_instr(`%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `%`_laneidx(l!`%`_labelidx.0)^16{l <- `l*`})] -[visit_exp (`%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `%`_laneidx(l!`%`_labelidx.0)^16{l <- `l*`})] -[visit_exp `%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `%`_laneidx(l!`%`_labelidx.0)^16{l <- `l*`}] -[scope_enter l] -[visit_exp `%`_laneidx(l!`%`_labelidx.0)] -[visit_exp (l!`%`_labelidx.0)] -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] not free -[visit_id l] not free -[scope_exit l] -[visit_exp 16] -[visit_exp `l*`] -[visit_id l*] no dims -[visit_id l*] -[visit_exp `%`_u32(13)] -[visit_exp (13)] -[visit_exp 13] -[scope_enter l] -[visit_exp `%`_laneidx(l!`%`_labelidx.0)] -[visit_exp (l!`%`_labelidx.0)] -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] not free -[visit_id l] not free -[scope_exit l] -[visit_exp 16] -[visit_exp `l*`] -[visit_id l*] not free -[visit_id l*] no dims -[check_dims] -dims \ = -[visit_exp `VSWIZZLOP`_instr(`%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `SWIZZLE`_vswizzlop_)] -[visit_exp (`%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `SWIZZLE`_vswizzlop_)] -[visit_exp `%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `SWIZZLE`_vswizzlop_] -[visit_exp ()] -[visit_exp `%`_u32(14)] -[visit_exp (14)] -[visit_exp 14] -[check_dims] -dims \ = -[visit_exp `VSWIZZLOP`_instr(`%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `RELAXED_SWIZZLE`_vswizzlop_)] -[visit_exp (`%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `RELAXED_SWIZZLE`_vswizzlop_)] -[visit_exp `%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `RELAXED_SWIZZLE`_vswizzlop_] -[visit_exp ()] -[visit_exp `%`_u32(256)] -[visit_exp (256)] -[visit_exp 256] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VSPLAT`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `%`_u32(15)] -[visit_exp (15)] -[visit_exp 15] -[check_dims] -dims \ = -[visit_exp `VSPLAT`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `%`_u32(16)] -[visit_exp (16)] -[visit_exp 16] -[check_dims] -dims \ = -[visit_exp `VSPLAT`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%`_u32(17)] -[visit_exp (17)] -[visit_exp 17] -[check_dims] -dims \ = -[visit_exp `VSPLAT`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `%`_u32(18)] -[visit_exp (18)] -[visit_exp 18] -[check_dims] -dims \ = -[visit_exp `VSPLAT`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)))] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)))] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%`_u32(19)] -[visit_exp (19)] -[visit_exp 19] -[check_dims] -dims \ = -[visit_exp `VSPLAT`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)))] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)))] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `%`_u32(20)] -[visit_exp (20)] -[visit_exp 20] -ps' = -[check_dims] -[check_dims] l -dims \ = l -[visit_exp `VEXTRACT_LANE`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), ?(`S`_sx), `%`_laneidx(l!`%`_labelidx.0))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), ?(`S`_sx), `%`_laneidx(l!`%`_labelidx.0))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp ?(`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_laneidx(l!`%`_labelidx.0)] -[visit_exp (l!`%`_labelidx.0)] -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] -[visit_exp `%`_u32(21)] -[visit_exp (21)] -[visit_exp 21] -[visit_exp `%`_laneidx(l!`%`_labelidx.0)] -[visit_exp (l!`%`_labelidx.0)] -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] not free -[check_dims] l -dims \ = l -[visit_exp `VEXTRACT_LANE`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), ?(`U`_sx), `%`_laneidx(l!`%`_labelidx.0))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), ?(`U`_sx), `%`_laneidx(l!`%`_labelidx.0))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp ?(`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_laneidx(l!`%`_labelidx.0)] -[visit_exp (l!`%`_labelidx.0)] -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] -[visit_exp `%`_u32(22)] -[visit_exp (22)] -[visit_exp 22] -[visit_exp `%`_laneidx(l!`%`_labelidx.0)] -[visit_exp (l!`%`_labelidx.0)] -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] not free -[check_dims] l -dims \ = l -[visit_exp `VREPLACE_LANE`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `%`_laneidx(l!`%`_labelidx.0))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `%`_laneidx(l!`%`_labelidx.0))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `%`_laneidx(l!`%`_labelidx.0)] -[visit_exp (l!`%`_labelidx.0)] -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] -[visit_exp `%`_u32(23)] -[visit_exp (23)] -[visit_exp 23] -[visit_exp `%`_laneidx(l!`%`_labelidx.0)] -[visit_exp (l!`%`_labelidx.0)] -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] not free -[check_dims] l -dims \ = l -[visit_exp `VEXTRACT_LANE`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), ?(`S`_sx), `%`_laneidx(l!`%`_labelidx.0))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), ?(`S`_sx), `%`_laneidx(l!`%`_labelidx.0))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp ?(`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_laneidx(l!`%`_labelidx.0)] -[visit_exp (l!`%`_labelidx.0)] -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] -[visit_exp `%`_u32(24)] -[visit_exp (24)] -[visit_exp 24] -[visit_exp `%`_laneidx(l!`%`_labelidx.0)] -[visit_exp (l!`%`_labelidx.0)] -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] not free -[check_dims] l -dims \ = l -[visit_exp `VEXTRACT_LANE`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), ?(`U`_sx), `%`_laneidx(l!`%`_labelidx.0))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), ?(`U`_sx), `%`_laneidx(l!`%`_labelidx.0))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp ?(`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_laneidx(l!`%`_labelidx.0)] -[visit_exp (l!`%`_labelidx.0)] -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] -[visit_exp `%`_u32(25)] -[visit_exp (25)] -[visit_exp 25] -[visit_exp `%`_laneidx(l!`%`_labelidx.0)] -[visit_exp (l!`%`_labelidx.0)] -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] not free -[check_dims] l -dims \ = l -[visit_exp `VREPLACE_LANE`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `%`_laneidx(l!`%`_labelidx.0))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `%`_laneidx(l!`%`_labelidx.0))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `%`_laneidx(l!`%`_labelidx.0)] -[visit_exp (l!`%`_labelidx.0)] -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] -[visit_exp `%`_u32(26)] -[visit_exp (26)] -[visit_exp 26] -[visit_exp `%`_laneidx(l!`%`_labelidx.0)] -[visit_exp (l!`%`_labelidx.0)] -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] not free -[check_dims] l -dims \ = l -[visit_exp `VEXTRACT_LANE`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_labelidx.0))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_labelidx.0))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp ?()] -[visit_exp `%`_laneidx(l!`%`_labelidx.0)] -[visit_exp (l!`%`_labelidx.0)] -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] -[visit_exp `%`_u32(27)] -[visit_exp (27)] -[visit_exp 27] -[visit_exp `%`_laneidx(l!`%`_labelidx.0)] -[visit_exp (l!`%`_labelidx.0)] -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] not free -[check_dims] l -dims \ = l -[visit_exp `VREPLACE_LANE`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_labelidx.0))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_labelidx.0))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%`_laneidx(l!`%`_labelidx.0)] -[visit_exp (l!`%`_labelidx.0)] -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] -[visit_exp `%`_u32(28)] -[visit_exp (28)] -[visit_exp 28] -[visit_exp `%`_laneidx(l!`%`_labelidx.0)] -[visit_exp (l!`%`_labelidx.0)] -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] not free -[check_dims] l -dims \ = l -[visit_exp `VEXTRACT_LANE`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_labelidx.0))] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_labelidx.0))] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp ?()] -[visit_exp `%`_laneidx(l!`%`_labelidx.0)] -[visit_exp (l!`%`_labelidx.0)] -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] -[visit_exp `%`_u32(29)] -[visit_exp (29)] -[visit_exp 29] -[visit_exp `%`_laneidx(l!`%`_labelidx.0)] -[visit_exp (l!`%`_labelidx.0)] -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] not free -[check_dims] l -dims \ = l -[visit_exp `VREPLACE_LANE`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_labelidx.0))] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_labelidx.0))] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `%`_laneidx(l!`%`_labelidx.0)] -[visit_exp (l!`%`_labelidx.0)] -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] -[visit_exp `%`_u32(30)] -[visit_exp (30)] -[visit_exp 30] -[visit_exp `%`_laneidx(l!`%`_labelidx.0)] -[visit_exp (l!`%`_labelidx.0)] -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] not free -[check_dims] l -dims \ = l -[visit_exp `VEXTRACT_LANE`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_labelidx.0))] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_labelidx.0))] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp ?()] -[visit_exp `%`_laneidx(l!`%`_labelidx.0)] -[visit_exp (l!`%`_labelidx.0)] -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] -[visit_exp `%`_u32(31)] -[visit_exp (31)] -[visit_exp 31] -[visit_exp `%`_laneidx(l!`%`_labelidx.0)] -[visit_exp (l!`%`_labelidx.0)] -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] not free -[check_dims] l -dims \ = l -[visit_exp `VREPLACE_LANE`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_labelidx.0))] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_labelidx.0))] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%`_laneidx(l!`%`_labelidx.0)] -[visit_exp (l!`%`_labelidx.0)] -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] -[visit_exp `%`_u32(32)] -[visit_exp (32)] -[visit_exp 32] -[visit_exp `%`_laneidx(l!`%`_labelidx.0)] -[visit_exp (l!`%`_labelidx.0)] -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] not free -[check_dims] l -dims \ = l -[visit_exp `VEXTRACT_LANE`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_labelidx.0))] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_labelidx.0))] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp ?()] -[visit_exp `%`_laneidx(l!`%`_labelidx.0)] -[visit_exp (l!`%`_labelidx.0)] -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] -[visit_exp `%`_u32(33)] -[visit_exp (33)] -[visit_exp 33] -[visit_exp `%`_laneidx(l!`%`_labelidx.0)] -[visit_exp (l!`%`_labelidx.0)] -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] not free -[check_dims] l -dims \ = l -[visit_exp `VREPLACE_LANE`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_labelidx.0))] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_labelidx.0))] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `%`_laneidx(l!`%`_labelidx.0)] -[visit_exp (l!`%`_labelidx.0)] -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] -[visit_exp `%`_u32(34)] -[visit_exp (34)] -[visit_exp 34] -[visit_exp `%`_laneidx(l!`%`_labelidx.0)] -[visit_exp (l!`%`_labelidx.0)] -[visit_exp l!`%`_labelidx.0] -[visit_exp l!`%`_labelidx] -[visit_exp l] -[visit_id l] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `EQ`_vrelop_)] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `EQ`_vrelop_)] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `EQ`_vrelop_] -[visit_exp ()] -[visit_exp `%`_u32(35)] -[visit_exp (35)] -[visit_exp 35] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `NE`_vrelop_)] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `NE`_vrelop_)] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `NE`_vrelop_] -[visit_exp ()] -[visit_exp `%`_u32(36)] -[visit_exp (36)] -[visit_exp 36] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `LT`_vrelop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `LT`_vrelop_(`S`_sx))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `LT`_vrelop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(37)] -[visit_exp (37)] -[visit_exp 37] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `LT`_vrelop_(`U`_sx))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `LT`_vrelop_(`U`_sx))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `LT`_vrelop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(38)] -[visit_exp (38)] -[visit_exp 38] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `GT`_vrelop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `GT`_vrelop_(`S`_sx))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `GT`_vrelop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(39)] -[visit_exp (39)] -[visit_exp 39] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `GT`_vrelop_(`U`_sx))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `GT`_vrelop_(`U`_sx))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `GT`_vrelop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(40)] -[visit_exp (40)] -[visit_exp 40] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `LE`_vrelop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `LE`_vrelop_(`S`_sx))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `LE`_vrelop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(41)] -[visit_exp (41)] -[visit_exp 41] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `LE`_vrelop_(`U`_sx))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `LE`_vrelop_(`U`_sx))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `LE`_vrelop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(42)] -[visit_exp (42)] -[visit_exp 42] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `GE`_vrelop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `GE`_vrelop_(`S`_sx))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `GE`_vrelop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(43)] -[visit_exp (43)] -[visit_exp 43] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `GE`_vrelop_(`U`_sx))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `GE`_vrelop_(`U`_sx))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `GE`_vrelop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(44)] -[visit_exp (44)] -[visit_exp 44] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `EQ`_vrelop_)] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `EQ`_vrelop_)] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `EQ`_vrelop_] -[visit_exp ()] -[visit_exp `%`_u32(45)] -[visit_exp (45)] -[visit_exp 45] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `NE`_vrelop_)] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `NE`_vrelop_)] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `NE`_vrelop_] -[visit_exp ()] -[visit_exp `%`_u32(46)] -[visit_exp (46)] -[visit_exp 46] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `LT`_vrelop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `LT`_vrelop_(`S`_sx))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `LT`_vrelop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(47)] -[visit_exp (47)] -[visit_exp 47] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `LT`_vrelop_(`U`_sx))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `LT`_vrelop_(`U`_sx))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `LT`_vrelop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(48)] -[visit_exp (48)] -[visit_exp 48] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `GT`_vrelop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `GT`_vrelop_(`S`_sx))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `GT`_vrelop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(49)] -[visit_exp (49)] -[visit_exp 49] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `GT`_vrelop_(`U`_sx))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `GT`_vrelop_(`U`_sx))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `GT`_vrelop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(50)] -[visit_exp (50)] -[visit_exp 50] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `LE`_vrelop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `LE`_vrelop_(`S`_sx))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `LE`_vrelop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(51)] -[visit_exp (51)] -[visit_exp 51] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `LE`_vrelop_(`U`_sx))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `LE`_vrelop_(`U`_sx))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `LE`_vrelop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(52)] -[visit_exp (52)] -[visit_exp 52] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `GE`_vrelop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `GE`_vrelop_(`S`_sx))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `GE`_vrelop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(53)] -[visit_exp (53)] -[visit_exp 53] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `GE`_vrelop_(`U`_sx))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `GE`_vrelop_(`U`_sx))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `GE`_vrelop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(54)] -[visit_exp (54)] -[visit_exp 54] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `EQ`_vrelop_)] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `EQ`_vrelop_)] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `EQ`_vrelop_] -[visit_exp ()] -[visit_exp `%`_u32(55)] -[visit_exp (55)] -[visit_exp 55] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `NE`_vrelop_)] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `NE`_vrelop_)] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `NE`_vrelop_] -[visit_exp ()] -[visit_exp `%`_u32(56)] -[visit_exp (56)] -[visit_exp 56] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `LT`_vrelop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `LT`_vrelop_(`S`_sx))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `LT`_vrelop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(57)] -[visit_exp (57)] -[visit_exp 57] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `LT`_vrelop_(`U`_sx))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `LT`_vrelop_(`U`_sx))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `LT`_vrelop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(58)] -[visit_exp (58)] -[visit_exp 58] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `GT`_vrelop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `GT`_vrelop_(`S`_sx))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `GT`_vrelop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(59)] -[visit_exp (59)] -[visit_exp 59] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `GT`_vrelop_(`U`_sx))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `GT`_vrelop_(`U`_sx))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `GT`_vrelop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(60)] -[visit_exp (60)] -[visit_exp 60] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `LE`_vrelop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `LE`_vrelop_(`S`_sx))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `LE`_vrelop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(61)] -[visit_exp (61)] -[visit_exp 61] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `LE`_vrelop_(`U`_sx))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `LE`_vrelop_(`U`_sx))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `LE`_vrelop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(62)] -[visit_exp (62)] -[visit_exp 62] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `GE`_vrelop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `GE`_vrelop_(`S`_sx))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `GE`_vrelop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(63)] -[visit_exp (63)] -[visit_exp 63] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `GE`_vrelop_(`U`_sx))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `GE`_vrelop_(`U`_sx))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `GE`_vrelop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(64)] -[visit_exp (64)] -[visit_exp 64] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `EQ`_vrelop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `EQ`_vrelop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `EQ`_vrelop_] -[visit_exp ()] -[visit_exp `%`_u32(65)] -[visit_exp (65)] -[visit_exp 65] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `NE`_vrelop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `NE`_vrelop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `NE`_vrelop_] -[visit_exp ()] -[visit_exp `%`_u32(66)] -[visit_exp (66)] -[visit_exp 66] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `LT`_vrelop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `LT`_vrelop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `LT`_vrelop_] -[visit_exp ()] -[visit_exp `%`_u32(67)] -[visit_exp (67)] -[visit_exp 67] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `GT`_vrelop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `GT`_vrelop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `GT`_vrelop_] -[visit_exp ()] -[visit_exp `%`_u32(68)] -[visit_exp (68)] -[visit_exp 68] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `LE`_vrelop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `LE`_vrelop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `LE`_vrelop_] -[visit_exp ()] -[visit_exp `%`_u32(69)] -[visit_exp (69)] -[visit_exp 69] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `GE`_vrelop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `GE`_vrelop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `GE`_vrelop_] -[visit_exp ()] -[visit_exp `%`_u32(70)] -[visit_exp (70)] -[visit_exp 70] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `EQ`_vrelop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `EQ`_vrelop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `EQ`_vrelop_] -[visit_exp ()] -[visit_exp `%`_u32(71)] -[visit_exp (71)] -[visit_exp 71] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `NE`_vrelop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `NE`_vrelop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `NE`_vrelop_] -[visit_exp ()] -[visit_exp `%`_u32(72)] -[visit_exp (72)] -[visit_exp 72] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `LT`_vrelop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `LT`_vrelop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `LT`_vrelop_] -[visit_exp ()] -[visit_exp `%`_u32(73)] -[visit_exp (73)] -[visit_exp 73] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `GT`_vrelop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `GT`_vrelop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `GT`_vrelop_] -[visit_exp ()] -[visit_exp `%`_u32(74)] -[visit_exp (74)] -[visit_exp 74] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `LE`_vrelop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `LE`_vrelop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `LE`_vrelop_] -[visit_exp ()] -[visit_exp `%`_u32(75)] -[visit_exp (75)] -[visit_exp 75] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `GE`_vrelop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `GE`_vrelop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `GE`_vrelop_] -[visit_exp ()] -[visit_exp `%`_u32(76)] -[visit_exp (76)] -[visit_exp 76] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VVUNOP`_instr(`V128`_vectype, `NOT`_vvunop)] -[visit_exp (`V128`_vectype, `NOT`_vvunop)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp `NOT`_vvunop] -[visit_exp ()] -[visit_exp `%`_u32(77)] -[visit_exp (77)] -[visit_exp 77] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VVBINOP`_instr(`V128`_vectype, `AND`_vvbinop)] -[visit_exp (`V128`_vectype, `AND`_vvbinop)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp `AND`_vvbinop] -[visit_exp ()] -[visit_exp `%`_u32(78)] -[visit_exp (78)] -[visit_exp 78] -[check_dims] -dims \ = -[visit_exp `VVBINOP`_instr(`V128`_vectype, `ANDNOT`_vvbinop)] -[visit_exp (`V128`_vectype, `ANDNOT`_vvbinop)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp `ANDNOT`_vvbinop] -[visit_exp ()] -[visit_exp `%`_u32(79)] -[visit_exp (79)] -[visit_exp 79] -[check_dims] -dims \ = -[visit_exp `VVBINOP`_instr(`V128`_vectype, `OR`_vvbinop)] -[visit_exp (`V128`_vectype, `OR`_vvbinop)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp `OR`_vvbinop] -[visit_exp ()] -[visit_exp `%`_u32(80)] -[visit_exp (80)] -[visit_exp 80] -[check_dims] -dims \ = -[visit_exp `VVBINOP`_instr(`V128`_vectype, `XOR`_vvbinop)] -[visit_exp (`V128`_vectype, `XOR`_vvbinop)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp `XOR`_vvbinop] -[visit_exp ()] -[visit_exp `%`_u32(81)] -[visit_exp (81)] -[visit_exp 81] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VVTERNOP`_instr(`V128`_vectype, `BITSELECT`_vvternop)] -[visit_exp (`V128`_vectype, `BITSELECT`_vvternop)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp `BITSELECT`_vvternop] -[visit_exp ()] -[visit_exp `%`_u32(82)] -[visit_exp (82)] -[visit_exp 82] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VVTESTOP`_instr(`V128`_vectype, `ANY_TRUE`_vvtestop)] -[visit_exp (`V128`_vectype, `ANY_TRUE`_vvtestop)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp `ANY_TRUE`_vvtestop] -[visit_exp ()] -[visit_exp `%`_u32(83)] -[visit_exp (83)] -[visit_exp 83] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VUNOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `ABS`_vunop_)] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `ABS`_vunop_)] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `ABS`_vunop_] -[visit_exp ()] -[visit_exp `%`_u32(96)] -[visit_exp (96)] -[visit_exp 96] -[check_dims] -dims \ = -[visit_exp `VUNOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `NEG`_vunop_)] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `NEG`_vunop_)] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `NEG`_vunop_] -[visit_exp ()] -[visit_exp `%`_u32(97)] -[visit_exp (97)] -[visit_exp 97] -[check_dims] -dims \ = -[visit_exp `VUNOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `POPCNT`_vunop_)] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `POPCNT`_vunop_)] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `POPCNT`_vunop_] -[visit_exp ()] -[visit_exp `%`_u32(98)] -[visit_exp (98)] -[visit_exp 98] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VTESTOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `ALL_TRUE`_vtestop_)] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `ALL_TRUE`_vtestop_)] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `ALL_TRUE`_vtestop_] -[visit_exp ()] -[visit_exp `%`_u32(99)] -[visit_exp (99)] -[visit_exp 99] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VBITMASK`_instr(`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))))] -[visit_exp (`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))))] -[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `%`_u32(100)] -[visit_exp (100)] -[visit_exp 100] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VNARROW`_instr(`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `S`_sx)] -[visit_exp (`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `S`_sx)] -[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(101)] -[visit_exp (101)] -[visit_exp 101] -[check_dims] -dims \ = -[visit_exp `VNARROW`_instr(`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `U`_sx)] -[visit_exp (`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `U`_sx)] -[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(102)] -[visit_exp (102)] -[visit_exp 102] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `SHL`_vshiftop_)] -[visit_exp (`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `SHL`_vshiftop_)] -[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `SHL`_vshiftop_] -[visit_exp ()] -[visit_exp `%`_u32(107)] -[visit_exp (107)] -[visit_exp 107] -[check_dims] -dims \ = -[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `SHR`_vshiftop_(`S`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `SHR`_vshiftop_(`S`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `SHR`_vshiftop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(108)] -[visit_exp (108)] -[visit_exp 108] -[check_dims] -dims \ = -[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `SHR`_vshiftop_(`U`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `SHR`_vshiftop_(`U`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `SHR`_vshiftop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(109)] -[visit_exp (109)] -[visit_exp 109] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `ADD`_vbinop_)] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `ADD`_vbinop_)] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `ADD`_vbinop_] -[visit_exp ()] -[visit_exp `%`_u32(110)] -[visit_exp (110)] -[visit_exp 110] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `ADD_SAT`_vbinop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `ADD_SAT`_vbinop_(`S`_sx))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `ADD_SAT`_vbinop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(111)] -[visit_exp (111)] -[visit_exp 111] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `ADD_SAT`_vbinop_(`U`_sx))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `ADD_SAT`_vbinop_(`U`_sx))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `ADD_SAT`_vbinop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(112)] -[visit_exp (112)] -[visit_exp 112] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `SUB`_vbinop_)] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `SUB`_vbinop_)] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `SUB`_vbinop_] -[visit_exp ()] -[visit_exp `%`_u32(113)] -[visit_exp (113)] -[visit_exp 113] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `SUB_SAT`_vbinop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `SUB_SAT`_vbinop_(`S`_sx))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `SUB_SAT`_vbinop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(114)] -[visit_exp (114)] -[visit_exp 114] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `SUB_SAT`_vbinop_(`U`_sx))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `SUB_SAT`_vbinop_(`U`_sx))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `SUB_SAT`_vbinop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(115)] -[visit_exp (115)] -[visit_exp 115] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `MIN`_vbinop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `MIN`_vbinop_(`S`_sx))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `MIN`_vbinop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(118)] -[visit_exp (118)] -[visit_exp 118] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `MIN`_vbinop_(`U`_sx))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `MIN`_vbinop_(`U`_sx))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `MIN`_vbinop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(119)] -[visit_exp (119)] -[visit_exp 119] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `MAX`_vbinop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `MAX`_vbinop_(`S`_sx))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `MAX`_vbinop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(120)] -[visit_exp (120)] -[visit_exp 120] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `MAX`_vbinop_(`U`_sx))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `MAX`_vbinop_(`U`_sx))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `MAX`_vbinop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(121)] -[visit_exp (121)] -[visit_exp 121] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `AVGRU`_vbinop_)] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `AVGRU`_vbinop_)] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `AVGRU`_vbinop_] -[visit_exp ()] -[visit_exp `%`_u32(123)] -[visit_exp (123)] -[visit_exp 123] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VEXTUNOP`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTADD_PAIRWISE`_vextunop__(`S`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTADD_PAIRWISE`_vextunop__(`S`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `EXTADD_PAIRWISE`_vextunop__(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(124)] -[visit_exp (124)] -[visit_exp 124] -[check_dims] -dims \ = -[visit_exp `VEXTUNOP`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTADD_PAIRWISE`_vextunop__(`U`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTADD_PAIRWISE`_vextunop__(`U`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `EXTADD_PAIRWISE`_vextunop__(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(125)] -[visit_exp (125)] -[visit_exp 125] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VUNOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `ABS`_vunop_)] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `ABS`_vunop_)] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `ABS`_vunop_] -[visit_exp ()] -[visit_exp `%`_u32(128)] -[visit_exp (128)] -[visit_exp 128] -[check_dims] -dims \ = -[visit_exp `VUNOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `NEG`_vunop_)] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `NEG`_vunop_)] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `NEG`_vunop_] -[visit_exp ()] -[visit_exp `%`_u32(129)] -[visit_exp (129)] -[visit_exp 129] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `Q15MULR_SATS`_vbinop_)] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `Q15MULR_SATS`_vbinop_)] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `Q15MULR_SATS`_vbinop_] -[visit_exp ()] -[visit_exp `%`_u32(130)] -[visit_exp (130)] -[visit_exp 130] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `ADD`_vbinop_)] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `ADD`_vbinop_)] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `ADD`_vbinop_] -[visit_exp ()] -[visit_exp `%`_u32(142)] -[visit_exp (142)] -[visit_exp 142] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `ADD_SAT`_vbinop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `ADD_SAT`_vbinop_(`S`_sx))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `ADD_SAT`_vbinop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(143)] -[visit_exp (143)] -[visit_exp 143] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `ADD_SAT`_vbinop_(`U`_sx))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `ADD_SAT`_vbinop_(`U`_sx))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `ADD_SAT`_vbinop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(144)] -[visit_exp (144)] -[visit_exp 144] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `SUB`_vbinop_)] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `SUB`_vbinop_)] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `SUB`_vbinop_] -[visit_exp ()] -[visit_exp `%`_u32(145)] -[visit_exp (145)] -[visit_exp 145] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `SUB_SAT`_vbinop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `SUB_SAT`_vbinop_(`S`_sx))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `SUB_SAT`_vbinop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(146)] -[visit_exp (146)] -[visit_exp 146] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `SUB_SAT`_vbinop_(`U`_sx))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `SUB_SAT`_vbinop_(`U`_sx))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `SUB_SAT`_vbinop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(147)] -[visit_exp (147)] -[visit_exp 147] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `MUL`_vbinop_)] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `MUL`_vbinop_)] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `MUL`_vbinop_] -[visit_exp ()] -[visit_exp `%`_u32(149)] -[visit_exp (149)] -[visit_exp 149] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `MIN`_vbinop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `MIN`_vbinop_(`S`_sx))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `MIN`_vbinop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(150)] -[visit_exp (150)] -[visit_exp 150] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `MIN`_vbinop_(`U`_sx))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `MIN`_vbinop_(`U`_sx))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `MIN`_vbinop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(151)] -[visit_exp (151)] -[visit_exp 151] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `MAX`_vbinop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `MAX`_vbinop_(`S`_sx))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `MAX`_vbinop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(152)] -[visit_exp (152)] -[visit_exp 152] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `MAX`_vbinop_(`U`_sx))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `MAX`_vbinop_(`U`_sx))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `MAX`_vbinop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(153)] -[visit_exp (153)] -[visit_exp 153] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `AVGRU`_vbinop_)] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `AVGRU`_vbinop_)] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `AVGRU`_vbinop_] -[visit_exp ()] -[visit_exp `%`_u32(155)] -[visit_exp (155)] -[visit_exp 155] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `RELAXED_Q15MULRS`_vbinop_)] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `RELAXED_Q15MULRS`_vbinop_)] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `RELAXED_Q15MULRS`_vbinop_] -[visit_exp ()] -[visit_exp `%`_u32(273)] -[visit_exp (273)] -[visit_exp 273] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VTESTOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `ALL_TRUE`_vtestop_)] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `ALL_TRUE`_vtestop_)] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `ALL_TRUE`_vtestop_] -[visit_exp ()] -[visit_exp `%`_u32(131)] -[visit_exp (131)] -[visit_exp 131] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VBITMASK`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))))] -[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))))] -[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `%`_u32(132)] -[visit_exp (132)] -[visit_exp 132] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VNARROW`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `S`_sx)] -[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `S`_sx)] -[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(133)] -[visit_exp (133)] -[visit_exp 133] -[check_dims] -dims \ = -[visit_exp `VNARROW`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `U`_sx)] -[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `U`_sx)] -[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(134)] -[visit_exp (134)] -[visit_exp 134] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `%X%`_shape(`I8`_lanetype, `%`_dim(16)), `EXTEND`_vcvtop__(`LOW`_half, `S`_sx))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `%X%`_shape(`I8`_lanetype, `%`_dim(16)), `EXTEND`_vcvtop__(`LOW`_half, `S`_sx))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `EXTEND`_vcvtop__(`LOW`_half, `S`_sx)] -[visit_exp (`LOW`_half, `S`_sx)] -[visit_exp `LOW`_half] -[visit_exp ()] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(135)] -[visit_exp (135)] -[visit_exp 135] -[check_dims] -dims \ = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `%X%`_shape(`I8`_lanetype, `%`_dim(16)), `EXTEND`_vcvtop__(`HIGH`_half, `S`_sx))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `%X%`_shape(`I8`_lanetype, `%`_dim(16)), `EXTEND`_vcvtop__(`HIGH`_half, `S`_sx))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `EXTEND`_vcvtop__(`HIGH`_half, `S`_sx)] -[visit_exp (`HIGH`_half, `S`_sx)] -[visit_exp `HIGH`_half] -[visit_exp ()] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(136)] -[visit_exp (136)] -[visit_exp 136] -[check_dims] -dims \ = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `%X%`_shape(`I8`_lanetype, `%`_dim(16)), `EXTEND`_vcvtop__(`LOW`_half, `U`_sx))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `%X%`_shape(`I8`_lanetype, `%`_dim(16)), `EXTEND`_vcvtop__(`LOW`_half, `U`_sx))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `EXTEND`_vcvtop__(`LOW`_half, `U`_sx)] -[visit_exp (`LOW`_half, `U`_sx)] -[visit_exp `LOW`_half] -[visit_exp ()] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(137)] -[visit_exp (137)] -[visit_exp 137] -[check_dims] -dims \ = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `%X%`_shape(`I8`_lanetype, `%`_dim(16)), `EXTEND`_vcvtop__(`HIGH`_half, `U`_sx))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `%X%`_shape(`I8`_lanetype, `%`_dim(16)), `EXTEND`_vcvtop__(`HIGH`_half, `U`_sx))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `EXTEND`_vcvtop__(`HIGH`_half, `U`_sx)] -[visit_exp (`HIGH`_half, `U`_sx)] -[visit_exp `HIGH`_half] -[visit_exp ()] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(138)] -[visit_exp (138)] -[visit_exp 138] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `SHL`_vshiftop_)] -[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `SHL`_vshiftop_)] -[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `SHL`_vshiftop_] -[visit_exp ()] -[visit_exp `%`_u32(139)] -[visit_exp (139)] -[visit_exp 139] -[check_dims] -dims \ = -[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `SHR`_vshiftop_(`S`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `SHR`_vshiftop_(`S`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `SHR`_vshiftop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(140)] -[visit_exp (140)] -[visit_exp 140] -[check_dims] -dims \ = -[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `SHR`_vshiftop_(`U`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `SHR`_vshiftop_(`U`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `SHR`_vshiftop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(141)] -[visit_exp (141)] -[visit_exp 141] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTMUL`_vextbinop__(`LOW`_half, `S`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTMUL`_vextbinop__(`LOW`_half, `S`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `EXTMUL`_vextbinop__(`LOW`_half, `S`_sx)] -[visit_exp (`LOW`_half, `S`_sx)] -[visit_exp `LOW`_half] -[visit_exp ()] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(156)] -[visit_exp (156)] -[visit_exp 156] -[check_dims] -dims \ = -[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTMUL`_vextbinop__(`HIGH`_half, `S`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTMUL`_vextbinop__(`HIGH`_half, `S`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `EXTMUL`_vextbinop__(`HIGH`_half, `S`_sx)] -[visit_exp (`HIGH`_half, `S`_sx)] -[visit_exp `HIGH`_half] -[visit_exp ()] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(157)] -[visit_exp (157)] -[visit_exp 157] -[check_dims] -dims \ = -[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTMUL`_vextbinop__(`LOW`_half, `U`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTMUL`_vextbinop__(`LOW`_half, `U`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `EXTMUL`_vextbinop__(`LOW`_half, `U`_sx)] -[visit_exp (`LOW`_half, `U`_sx)] -[visit_exp `LOW`_half] -[visit_exp ()] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(158)] -[visit_exp (158)] -[visit_exp 158] -[check_dims] -dims \ = -[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTMUL`_vextbinop__(`HIGH`_half, `U`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTMUL`_vextbinop__(`HIGH`_half, `U`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `EXTMUL`_vextbinop__(`HIGH`_half, `U`_sx)] -[visit_exp (`HIGH`_half, `U`_sx)] -[visit_exp `HIGH`_half] -[visit_exp ()] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(159)] -[visit_exp (159)] -[visit_exp 159] -[check_dims] -dims \ = -[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `RELAXED_DOTS`_vextbinop__)] -[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `RELAXED_DOTS`_vextbinop__)] -[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `RELAXED_DOTS`_vextbinop__] -[visit_exp ()] -[visit_exp `%`_u32(274)] -[visit_exp (274)] -[visit_exp 274] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VEXTUNOP`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTADD_PAIRWISE`_vextunop__(`S`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTADD_PAIRWISE`_vextunop__(`S`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `EXTADD_PAIRWISE`_vextunop__(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(126)] -[visit_exp (126)] -[visit_exp 126] -[check_dims] -dims \ = -[visit_exp `VEXTUNOP`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTADD_PAIRWISE`_vextunop__(`U`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTADD_PAIRWISE`_vextunop__(`U`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `EXTADD_PAIRWISE`_vextunop__(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(127)] -[visit_exp (127)] -[visit_exp 127] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VUNOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `ABS`_vunop_)] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `ABS`_vunop_)] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `ABS`_vunop_] -[visit_exp ()] -[visit_exp `%`_u32(160)] -[visit_exp (160)] -[visit_exp 160] -[check_dims] -dims \ = -[visit_exp `VUNOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `NEG`_vunop_)] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `NEG`_vunop_)] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `NEG`_vunop_] -[visit_exp ()] -[visit_exp `%`_u32(161)] -[visit_exp (161)] -[visit_exp 161] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VTESTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `ALL_TRUE`_vtestop_)] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `ALL_TRUE`_vtestop_)] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `ALL_TRUE`_vtestop_] -[visit_exp ()] -[visit_exp `%`_u32(163)] -[visit_exp (163)] -[visit_exp 163] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VBITMASK`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))))] -[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))))] -[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%`_u32(164)] -[visit_exp (164)] -[visit_exp 164] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`I16`_lanetype, `%`_dim(8)), `EXTEND`_vcvtop__(`LOW`_half, `S`_sx))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`I16`_lanetype, `%`_dim(8)), `EXTEND`_vcvtop__(`LOW`_half, `S`_sx))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `EXTEND`_vcvtop__(`LOW`_half, `S`_sx)] -[visit_exp (`LOW`_half, `S`_sx)] -[visit_exp `LOW`_half] -[visit_exp ()] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(167)] -[visit_exp (167)] -[visit_exp 167] -[check_dims] -dims \ = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`I16`_lanetype, `%`_dim(8)), `EXTEND`_vcvtop__(`HIGH`_half, `S`_sx))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`I16`_lanetype, `%`_dim(8)), `EXTEND`_vcvtop__(`HIGH`_half, `S`_sx))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `EXTEND`_vcvtop__(`HIGH`_half, `S`_sx)] -[visit_exp (`HIGH`_half, `S`_sx)] -[visit_exp `HIGH`_half] -[visit_exp ()] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(168)] -[visit_exp (168)] -[visit_exp 168] -[check_dims] -dims \ = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`I16`_lanetype, `%`_dim(8)), `EXTEND`_vcvtop__(`LOW`_half, `U`_sx))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`I16`_lanetype, `%`_dim(8)), `EXTEND`_vcvtop__(`LOW`_half, `U`_sx))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `EXTEND`_vcvtop__(`LOW`_half, `U`_sx)] -[visit_exp (`LOW`_half, `U`_sx)] -[visit_exp `LOW`_half] -[visit_exp ()] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(169)] -[visit_exp (169)] -[visit_exp 169] -[check_dims] -dims \ = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`I16`_lanetype, `%`_dim(8)), `EXTEND`_vcvtop__(`HIGH`_half, `U`_sx))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`I16`_lanetype, `%`_dim(8)), `EXTEND`_vcvtop__(`HIGH`_half, `U`_sx))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `EXTEND`_vcvtop__(`HIGH`_half, `U`_sx)] -[visit_exp (`HIGH`_half, `U`_sx)] -[visit_exp `HIGH`_half] -[visit_exp ()] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(170)] -[visit_exp (170)] -[visit_exp 170] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `SHL`_vshiftop_)] -[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `SHL`_vshiftop_)] -[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `SHL`_vshiftop_] -[visit_exp ()] -[visit_exp `%`_u32(171)] -[visit_exp (171)] -[visit_exp 171] -[check_dims] -dims \ = -[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `SHR`_vshiftop_(`S`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `SHR`_vshiftop_(`S`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `SHR`_vshiftop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(172)] -[visit_exp (172)] -[visit_exp 172] -[check_dims] -dims \ = -[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `SHR`_vshiftop_(`U`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `SHR`_vshiftop_(`U`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `SHR`_vshiftop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(173)] -[visit_exp (173)] -[visit_exp 173] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `ADD`_vbinop_)] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `ADD`_vbinop_)] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `ADD`_vbinop_] -[visit_exp ()] -[visit_exp `%`_u32(174)] -[visit_exp (174)] -[visit_exp 174] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `SUB`_vbinop_)] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `SUB`_vbinop_)] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `SUB`_vbinop_] -[visit_exp ()] -[visit_exp `%`_u32(177)] -[visit_exp (177)] -[visit_exp 177] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `MUL`_vbinop_)] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `MUL`_vbinop_)] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `MUL`_vbinop_] -[visit_exp ()] -[visit_exp `%`_u32(181)] -[visit_exp (181)] -[visit_exp 181] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `MIN`_vbinop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `MIN`_vbinop_(`S`_sx))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `MIN`_vbinop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(182)] -[visit_exp (182)] -[visit_exp 182] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `MIN`_vbinop_(`U`_sx))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `MIN`_vbinop_(`U`_sx))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `MIN`_vbinop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(183)] -[visit_exp (183)] -[visit_exp 183] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `MAX`_vbinop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `MAX`_vbinop_(`S`_sx))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `MAX`_vbinop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(184)] -[visit_exp (184)] -[visit_exp 184] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `MAX`_vbinop_(`U`_sx))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `MAX`_vbinop_(`U`_sx))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `MAX`_vbinop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(185)] -[visit_exp (185)] -[visit_exp 185] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `DOTS`_vextbinop__)] -[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `DOTS`_vextbinop__)] -[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `DOTS`_vextbinop__] -[visit_exp ()] -[visit_exp `%`_u32(186)] -[visit_exp (186)] -[visit_exp 186] -[check_dims] -dims \ = -[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTMUL`_vextbinop__(`LOW`_half, `S`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTMUL`_vextbinop__(`LOW`_half, `S`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `EXTMUL`_vextbinop__(`LOW`_half, `S`_sx)] -[visit_exp (`LOW`_half, `S`_sx)] -[visit_exp `LOW`_half] -[visit_exp ()] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(188)] -[visit_exp (188)] -[visit_exp 188] -[check_dims] -dims \ = -[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTMUL`_vextbinop__(`HIGH`_half, `S`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTMUL`_vextbinop__(`HIGH`_half, `S`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `EXTMUL`_vextbinop__(`HIGH`_half, `S`_sx)] -[visit_exp (`HIGH`_half, `S`_sx)] -[visit_exp `HIGH`_half] -[visit_exp ()] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(189)] -[visit_exp (189)] -[visit_exp 189] -[check_dims] -dims \ = -[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTMUL`_vextbinop__(`LOW`_half, `U`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTMUL`_vextbinop__(`LOW`_half, `U`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `EXTMUL`_vextbinop__(`LOW`_half, `U`_sx)] -[visit_exp (`LOW`_half, `U`_sx)] -[visit_exp `LOW`_half] -[visit_exp ()] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(190)] -[visit_exp (190)] -[visit_exp 190] -[check_dims] -dims \ = -[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTMUL`_vextbinop__(`HIGH`_half, `U`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTMUL`_vextbinop__(`HIGH`_half, `U`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `EXTMUL`_vextbinop__(`HIGH`_half, `U`_sx)] -[visit_exp (`HIGH`_half, `U`_sx)] -[visit_exp `HIGH`_half] -[visit_exp ()] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(191)] -[visit_exp (191)] -[visit_exp 191] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VEXTTERNOP`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `RELAXED_DOT_ADDS`_vextternop__)] -[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `RELAXED_DOT_ADDS`_vextternop__)] -[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `RELAXED_DOT_ADDS`_vextternop__] -[visit_exp ()] -[visit_exp `%`_u32(275)] -[visit_exp (275)] -[visit_exp 275] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VUNOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `ABS`_vunop_)] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `ABS`_vunop_)] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `ABS`_vunop_] -[visit_exp ()] -[visit_exp `%`_u32(192)] -[visit_exp (192)] -[visit_exp 192] -[check_dims] -dims \ = -[visit_exp `VUNOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `NEG`_vunop_)] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `NEG`_vunop_)] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `NEG`_vunop_] -[visit_exp ()] -[visit_exp `%`_u32(193)] -[visit_exp (193)] -[visit_exp 193] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VTESTOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `ALL_TRUE`_vtestop_)] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `ALL_TRUE`_vtestop_)] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `ALL_TRUE`_vtestop_] -[visit_exp ()] -[visit_exp `%`_u32(195)] -[visit_exp (195)] -[visit_exp 195] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VBITMASK`_instr(`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))))] -[visit_exp (`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))))] -[visit_exp `%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `%`_u32(196)] -[visit_exp (196)] -[visit_exp 196] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `EXTEND`_vcvtop__(`LOW`_half, `S`_sx))] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `EXTEND`_vcvtop__(`LOW`_half, `S`_sx))] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `EXTEND`_vcvtop__(`LOW`_half, `S`_sx)] -[visit_exp (`LOW`_half, `S`_sx)] -[visit_exp `LOW`_half] -[visit_exp ()] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(199)] -[visit_exp (199)] -[visit_exp 199] -[check_dims] -dims \ = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `EXTEND`_vcvtop__(`HIGH`_half, `S`_sx))] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `EXTEND`_vcvtop__(`HIGH`_half, `S`_sx))] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `EXTEND`_vcvtop__(`HIGH`_half, `S`_sx)] -[visit_exp (`HIGH`_half, `S`_sx)] -[visit_exp `HIGH`_half] -[visit_exp ()] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(200)] -[visit_exp (200)] -[visit_exp 200] -[check_dims] -dims \ = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `EXTEND`_vcvtop__(`LOW`_half, `U`_sx))] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `EXTEND`_vcvtop__(`LOW`_half, `U`_sx))] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `EXTEND`_vcvtop__(`LOW`_half, `U`_sx)] -[visit_exp (`LOW`_half, `U`_sx)] -[visit_exp `LOW`_half] -[visit_exp ()] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(201)] -[visit_exp (201)] -[visit_exp 201] -[check_dims] -dims \ = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `EXTEND`_vcvtop__(`HIGH`_half, `U`_sx))] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `EXTEND`_vcvtop__(`HIGH`_half, `U`_sx))] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `EXTEND`_vcvtop__(`HIGH`_half, `U`_sx)] -[visit_exp (`HIGH`_half, `U`_sx)] -[visit_exp `HIGH`_half] -[visit_exp ()] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(202)] -[visit_exp (202)] -[visit_exp 202] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `SHL`_vshiftop_)] -[visit_exp (`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `SHL`_vshiftop_)] -[visit_exp `%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `SHL`_vshiftop_] -[visit_exp ()] -[visit_exp `%`_u32(203)] -[visit_exp (203)] -[visit_exp 203] -[check_dims] -dims \ = -[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `SHR`_vshiftop_(`S`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `SHR`_vshiftop_(`S`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `SHR`_vshiftop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(204)] -[visit_exp (204)] -[visit_exp 204] -[check_dims] -dims \ = -[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `SHR`_vshiftop_(`U`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `SHR`_vshiftop_(`U`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `SHR`_vshiftop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(205)] -[visit_exp (205)] -[visit_exp 205] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `ADD`_vbinop_)] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `ADD`_vbinop_)] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `ADD`_vbinop_] -[visit_exp ()] -[visit_exp `%`_u32(206)] -[visit_exp (206)] -[visit_exp 206] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `SUB`_vbinop_)] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `SUB`_vbinop_)] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `SUB`_vbinop_] -[visit_exp ()] -[visit_exp `%`_u32(209)] -[visit_exp (209)] -[visit_exp 209] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `MUL`_vbinop_)] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `MUL`_vbinop_)] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `MUL`_vbinop_] -[visit_exp ()] -[visit_exp `%`_u32(213)] -[visit_exp (213)] -[visit_exp 213] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `EQ`_vrelop_)] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `EQ`_vrelop_)] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `EQ`_vrelop_] -[visit_exp ()] -[visit_exp `%`_u32(214)] -[visit_exp (214)] -[visit_exp 214] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `NE`_vrelop_)] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `NE`_vrelop_)] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `NE`_vrelop_] -[visit_exp ()] -[visit_exp `%`_u32(215)] -[visit_exp (215)] -[visit_exp 215] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `LT`_vrelop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `LT`_vrelop_(`S`_sx))] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `LT`_vrelop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(216)] -[visit_exp (216)] -[visit_exp 216] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `GT`_vrelop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `GT`_vrelop_(`S`_sx))] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `GT`_vrelop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(217)] -[visit_exp (217)] -[visit_exp 217] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `LE`_vrelop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `LE`_vrelop_(`S`_sx))] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `LE`_vrelop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(218)] -[visit_exp (218)] -[visit_exp 218] -[check_dims] -dims \ = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `GE`_vrelop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `GE`_vrelop_(`S`_sx))] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `GE`_vrelop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(219)] -[visit_exp (219)] -[visit_exp 219] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `EXTMUL`_vextbinop__(`LOW`_half, `S`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `EXTMUL`_vextbinop__(`LOW`_half, `S`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `EXTMUL`_vextbinop__(`LOW`_half, `S`_sx)] -[visit_exp (`LOW`_half, `S`_sx)] -[visit_exp `LOW`_half] -[visit_exp ()] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(220)] -[visit_exp (220)] -[visit_exp 220] -[check_dims] -dims \ = -[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `EXTMUL`_vextbinop__(`HIGH`_half, `S`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `EXTMUL`_vextbinop__(`HIGH`_half, `S`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `EXTMUL`_vextbinop__(`HIGH`_half, `S`_sx)] -[visit_exp (`HIGH`_half, `S`_sx)] -[visit_exp `HIGH`_half] -[visit_exp ()] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(221)] -[visit_exp (221)] -[visit_exp 221] -[check_dims] -dims \ = -[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `EXTMUL`_vextbinop__(`LOW`_half, `U`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `EXTMUL`_vextbinop__(`LOW`_half, `U`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `EXTMUL`_vextbinop__(`LOW`_half, `U`_sx)] -[visit_exp (`LOW`_half, `U`_sx)] -[visit_exp `LOW`_half] -[visit_exp ()] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(222)] -[visit_exp (222)] -[visit_exp 222] -[check_dims] -dims \ = -[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `EXTMUL`_vextbinop__(`HIGH`_half, `U`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `EXTMUL`_vextbinop__(`HIGH`_half, `U`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `EXTMUL`_vextbinop__(`HIGH`_half, `U`_sx)] -[visit_exp (`HIGH`_half, `U`_sx)] -[visit_exp `HIGH`_half] -[visit_exp ()] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(223)] -[visit_exp (223)] -[visit_exp 223] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VUNOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `CEIL`_vunop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `CEIL`_vunop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `CEIL`_vunop_] -[visit_exp ()] -[visit_exp `%`_u32(103)] -[visit_exp (103)] -[visit_exp 103] -[check_dims] -dims \ = -[visit_exp `VUNOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `FLOOR`_vunop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `FLOOR`_vunop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `FLOOR`_vunop_] -[visit_exp ()] -[visit_exp `%`_u32(104)] -[visit_exp (104)] -[visit_exp 104] -[check_dims] -dims \ = -[visit_exp `VUNOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `TRUNC`_vunop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `TRUNC`_vunop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `TRUNC`_vunop_] -[visit_exp ()] -[visit_exp `%`_u32(105)] -[visit_exp (105)] -[visit_exp 105] -[check_dims] -dims \ = -[visit_exp `VUNOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `NEAREST`_vunop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `NEAREST`_vunop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `NEAREST`_vunop_] -[visit_exp ()] -[visit_exp `%`_u32(106)] -[visit_exp (106)] -[visit_exp 106] -[check_dims] -dims \ = -[visit_exp `VUNOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `ABS`_vunop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `ABS`_vunop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `ABS`_vunop_] -[visit_exp ()] -[visit_exp `%`_u32(224)] -[visit_exp (224)] -[visit_exp 224] -[check_dims] -dims \ = -[visit_exp `VUNOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `NEG`_vunop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `NEG`_vunop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `NEG`_vunop_] -[visit_exp ()] -[visit_exp `%`_u32(225)] -[visit_exp (225)] -[visit_exp 225] -[check_dims] -dims \ = -[visit_exp `VUNOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `SQRT`_vunop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `SQRT`_vunop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `SQRT`_vunop_] -[visit_exp ()] -[visit_exp `%`_u32(227)] -[visit_exp (227)] -[visit_exp 227] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `ADD`_vbinop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `ADD`_vbinop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `ADD`_vbinop_] -[visit_exp ()] -[visit_exp `%`_u32(228)] -[visit_exp (228)] -[visit_exp 228] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `SUB`_vbinop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `SUB`_vbinop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `SUB`_vbinop_] -[visit_exp ()] -[visit_exp `%`_u32(229)] -[visit_exp (229)] -[visit_exp 229] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `MUL`_vbinop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `MUL`_vbinop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `MUL`_vbinop_] -[visit_exp ()] -[visit_exp `%`_u32(230)] -[visit_exp (230)] -[visit_exp 230] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `DIV`_vbinop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `DIV`_vbinop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `DIV`_vbinop_] -[visit_exp ()] -[visit_exp `%`_u32(231)] -[visit_exp (231)] -[visit_exp 231] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `MIN`_vbinop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `MIN`_vbinop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `MIN`_vbinop_] -[visit_exp ()] -[visit_exp `%`_u32(232)] -[visit_exp (232)] -[visit_exp 232] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `MAX`_vbinop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `MAX`_vbinop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `MAX`_vbinop_] -[visit_exp ()] -[visit_exp `%`_u32(233)] -[visit_exp (233)] -[visit_exp 233] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `PMIN`_vbinop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `PMIN`_vbinop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `PMIN`_vbinop_] -[visit_exp ()] -[visit_exp `%`_u32(234)] -[visit_exp (234)] -[visit_exp 234] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `PMAX`_vbinop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `PMAX`_vbinop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `PMAX`_vbinop_] -[visit_exp ()] -[visit_exp `%`_u32(235)] -[visit_exp (235)] -[visit_exp 235] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_MIN`_vbinop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_MIN`_vbinop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `RELAXED_MIN`_vbinop_] -[visit_exp ()] -[visit_exp `%`_u32(269)] -[visit_exp (269)] -[visit_exp 269] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_MAX`_vbinop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_MAX`_vbinop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `RELAXED_MAX`_vbinop_] -[visit_exp ()] -[visit_exp `%`_u32(270)] -[visit_exp (270)] -[visit_exp 270] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VTERNOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_MADD`_vternop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_MADD`_vternop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `RELAXED_MADD`_vternop_] -[visit_exp ()] -[visit_exp `%`_u32(261)] -[visit_exp (261)] -[visit_exp 261] -[check_dims] -dims \ = -[visit_exp `VTERNOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_NMADD`_vternop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_NMADD`_vternop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `RELAXED_NMADD`_vternop_] -[visit_exp ()] -[visit_exp `%`_u32(262)] -[visit_exp (262)] -[visit_exp 262] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VUNOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `CEIL`_vunop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `CEIL`_vunop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `CEIL`_vunop_] -[visit_exp ()] -[visit_exp `%`_u32(116)] -[visit_exp (116)] -[visit_exp 116] -[check_dims] -dims \ = -[visit_exp `VUNOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `FLOOR`_vunop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `FLOOR`_vunop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `FLOOR`_vunop_] -[visit_exp ()] -[visit_exp `%`_u32(117)] -[visit_exp (117)] -[visit_exp 117] -[check_dims] -dims \ = -[visit_exp `VUNOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `TRUNC`_vunop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `TRUNC`_vunop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `TRUNC`_vunop_] -[visit_exp ()] -[visit_exp `%`_u32(122)] -[visit_exp (122)] -[visit_exp 122] -[check_dims] -dims \ = -[visit_exp `VUNOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `NEAREST`_vunop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `NEAREST`_vunop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `NEAREST`_vunop_] -[visit_exp ()] -[visit_exp `%`_u32(148)] -[visit_exp (148)] -[visit_exp 148] -[check_dims] -dims \ = -[visit_exp `VUNOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `ABS`_vunop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `ABS`_vunop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `ABS`_vunop_] -[visit_exp ()] -[visit_exp `%`_u32(236)] -[visit_exp (236)] -[visit_exp 236] -[check_dims] -dims \ = -[visit_exp `VUNOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `NEG`_vunop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `NEG`_vunop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `NEG`_vunop_] -[visit_exp ()] -[visit_exp `%`_u32(237)] -[visit_exp (237)] -[visit_exp 237] -[check_dims] -dims \ = -[visit_exp `VUNOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `SQRT`_vunop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `SQRT`_vunop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `SQRT`_vunop_] -[visit_exp ()] -[visit_exp `%`_u32(239)] -[visit_exp (239)] -[visit_exp 239] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `ADD`_vbinop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `ADD`_vbinop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `ADD`_vbinop_] -[visit_exp ()] -[visit_exp `%`_u32(240)] -[visit_exp (240)] -[visit_exp 240] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `SUB`_vbinop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `SUB`_vbinop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `SUB`_vbinop_] -[visit_exp ()] -[visit_exp `%`_u32(241)] -[visit_exp (241)] -[visit_exp 241] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `MUL`_vbinop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `MUL`_vbinop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `MUL`_vbinop_] -[visit_exp ()] -[visit_exp `%`_u32(242)] -[visit_exp (242)] -[visit_exp 242] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `DIV`_vbinop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `DIV`_vbinop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `DIV`_vbinop_] -[visit_exp ()] -[visit_exp `%`_u32(243)] -[visit_exp (243)] -[visit_exp 243] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `MIN`_vbinop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `MIN`_vbinop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `MIN`_vbinop_] -[visit_exp ()] -[visit_exp `%`_u32(244)] -[visit_exp (244)] -[visit_exp 244] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `MAX`_vbinop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `MAX`_vbinop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `MAX`_vbinop_] -[visit_exp ()] -[visit_exp `%`_u32(245)] -[visit_exp (245)] -[visit_exp 245] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `PMIN`_vbinop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `PMIN`_vbinop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `PMIN`_vbinop_] -[visit_exp ()] -[visit_exp `%`_u32(246)] -[visit_exp (246)] -[visit_exp 246] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `PMAX`_vbinop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `PMAX`_vbinop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `PMAX`_vbinop_] -[visit_exp ()] -[visit_exp `%`_u32(247)] -[visit_exp (247)] -[visit_exp 247] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_MIN`_vbinop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_MIN`_vbinop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `RELAXED_MIN`_vbinop_] -[visit_exp ()] -[visit_exp `%`_u32(271)] -[visit_exp (271)] -[visit_exp 271] -[check_dims] -dims \ = -[visit_exp `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_MAX`_vbinop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_MAX`_vbinop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `RELAXED_MAX`_vbinop_] -[visit_exp ()] -[visit_exp `%`_u32(272)] -[visit_exp (272)] -[visit_exp 272] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VTERNOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_MADD`_vternop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_MADD`_vternop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `RELAXED_MADD`_vternop_] -[visit_exp ()] -[visit_exp `%`_u32(263)] -[visit_exp (263)] -[visit_exp 263] -[check_dims] -dims \ = -[visit_exp `VTERNOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_NMADD`_vternop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_NMADD`_vternop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `RELAXED_NMADD`_vternop_] -[visit_exp ()] -[visit_exp `%`_u32(264)] -[visit_exp (264)] -[visit_exp 264] -[check_dims] -dims \ = -[visit_exp `VTERNOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `RELAXED_LANESELECT`_vternop_)] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `RELAXED_LANESELECT`_vternop_)] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `RELAXED_LANESELECT`_vternop_] -[visit_exp ()] -[visit_exp `%`_u32(265)] -[visit_exp (265)] -[visit_exp 265] -[check_dims] -dims \ = -[visit_exp `VTERNOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `RELAXED_LANESELECT`_vternop_)] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `RELAXED_LANESELECT`_vternop_)] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `RELAXED_LANESELECT`_vternop_] -[visit_exp ()] -[visit_exp `%`_u32(266)] -[visit_exp (266)] -[visit_exp 266] -[check_dims] -dims \ = -[visit_exp `VTERNOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `RELAXED_LANESELECT`_vternop_)] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `RELAXED_LANESELECT`_vternop_)] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `RELAXED_LANESELECT`_vternop_] -[visit_exp ()] -[visit_exp `%`_u32(267)] -[visit_exp (267)] -[visit_exp 267] -[check_dims] -dims \ = -[visit_exp `VTERNOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `RELAXED_LANESELECT`_vternop_)] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `RELAXED_LANESELECT`_vternop_)] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `RELAXED_LANESELECT`_vternop_] -[visit_exp ()] -[visit_exp `%`_u32(268)] -[visit_exp (268)] -[visit_exp 268] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `%X%`_shape(`F64`_lanetype, `%`_dim(2)), `DEMOTE`_vcvtop__(`ZERO`_zero))] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `%X%`_shape(`F64`_lanetype, `%`_dim(2)), `DEMOTE`_vcvtop__(`ZERO`_zero))] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `DEMOTE`_vcvtop__(`ZERO`_zero)] -[visit_exp (`ZERO`_zero)] -[visit_exp `ZERO`_zero] -[visit_exp ()] -[visit_exp `%`_u32(94)] -[visit_exp (94)] -[visit_exp 94] -[check_dims] -dims \ = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `%X%`_shape(`F32`_lanetype, `%`_dim(4)), `PROMOTELOW`_vcvtop__)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `%X%`_shape(`F32`_lanetype, `%`_dim(4)), `PROMOTELOW`_vcvtop__)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `PROMOTELOW`_vcvtop__] -[visit_exp ()] -[visit_exp `%`_u32(95)] -[visit_exp (95)] -[visit_exp 95] -[check_dims] -dims \ = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F32`_lanetype, `%`_dim(4)), `TRUNC_SAT`_vcvtop__(`S`_sx, ?()))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F32`_lanetype, `%`_dim(4)), `TRUNC_SAT`_vcvtop__(`S`_sx, ?()))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `TRUNC_SAT`_vcvtop__(`S`_sx, ?())] -[visit_exp (`S`_sx, ?())] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp ?()] -[visit_exp `%`_u32(248)] -[visit_exp (248)] -[visit_exp 248] -[check_dims] -dims \ = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F32`_lanetype, `%`_dim(4)), `TRUNC_SAT`_vcvtop__(`U`_sx, ?()))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F32`_lanetype, `%`_dim(4)), `TRUNC_SAT`_vcvtop__(`U`_sx, ?()))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `TRUNC_SAT`_vcvtop__(`U`_sx, ?())] -[visit_exp (`U`_sx, ?())] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp ?()] -[visit_exp `%`_u32(249)] -[visit_exp (249)] -[visit_exp 249] -[check_dims] -dims \ = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `CONVERT`_vcvtop__(?(), `S`_sx))] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `CONVERT`_vcvtop__(?(), `S`_sx))] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `CONVERT`_vcvtop__(?(), `S`_sx)] -[visit_exp (?(), `S`_sx)] -[visit_exp ?()] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(250)] -[visit_exp (250)] -[visit_exp 250] -[check_dims] -dims \ = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `CONVERT`_vcvtop__(?(), `U`_sx))] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `CONVERT`_vcvtop__(?(), `U`_sx))] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `CONVERT`_vcvtop__(?(), `U`_sx)] -[visit_exp (?(), `U`_sx)] -[visit_exp ?()] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(251)] -[visit_exp (251)] -[visit_exp 251] -[check_dims] -dims \ = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F64`_lanetype, `%`_dim(2)), `TRUNC_SAT`_vcvtop__(`S`_sx, ?(`ZERO`_zero)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F64`_lanetype, `%`_dim(2)), `TRUNC_SAT`_vcvtop__(`S`_sx, ?(`ZERO`_zero)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `TRUNC_SAT`_vcvtop__(`S`_sx, ?(`ZERO`_zero))] -[visit_exp (`S`_sx, ?(`ZERO`_zero))] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp ?(`ZERO`_zero)] -[visit_exp `ZERO`_zero] -[visit_exp ()] -[visit_exp `%`_u32(252)] -[visit_exp (252)] -[visit_exp 252] -[check_dims] -dims \ = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F64`_lanetype, `%`_dim(2)), `TRUNC_SAT`_vcvtop__(`U`_sx, ?(`ZERO`_zero)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F64`_lanetype, `%`_dim(2)), `TRUNC_SAT`_vcvtop__(`U`_sx, ?(`ZERO`_zero)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `TRUNC_SAT`_vcvtop__(`U`_sx, ?(`ZERO`_zero))] -[visit_exp (`U`_sx, ?(`ZERO`_zero))] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp ?(`ZERO`_zero)] -[visit_exp `ZERO`_zero] -[visit_exp ()] -[visit_exp `%`_u32(253)] -[visit_exp (253)] -[visit_exp 253] -[check_dims] -dims \ = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `CONVERT`_vcvtop__(?(`LOW`_half), `S`_sx))] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `CONVERT`_vcvtop__(?(`LOW`_half), `S`_sx))] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `CONVERT`_vcvtop__(?(`LOW`_half), `S`_sx)] -[visit_exp (?(`LOW`_half), `S`_sx)] -[visit_exp ?(`LOW`_half)] -[visit_exp `LOW`_half] -[visit_exp ()] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp `%`_u32(254)] -[visit_exp (254)] -[visit_exp 254] -[check_dims] -dims \ = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `CONVERT`_vcvtop__(?(`LOW`_half), `U`_sx))] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `CONVERT`_vcvtop__(?(`LOW`_half), `U`_sx))] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `CONVERT`_vcvtop__(?(`LOW`_half), `U`_sx)] -[visit_exp (?(`LOW`_half), `U`_sx)] -[visit_exp ?(`LOW`_half)] -[visit_exp `LOW`_half] -[visit_exp ()] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp `%`_u32(255)] -[visit_exp (255)] -[visit_exp 255] -[check_dims] -dims \ = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_TRUNC`_vcvtop__(`S`_sx, ?()))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_TRUNC`_vcvtop__(`S`_sx, ?()))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `RELAXED_TRUNC`_vcvtop__(`S`_sx, ?())] -[visit_exp (`S`_sx, ?())] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp ?()] -[visit_exp `%`_u32(257)] -[visit_exp (257)] -[visit_exp 257] -[check_dims] -dims \ = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_TRUNC`_vcvtop__(`U`_sx, ?()))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_TRUNC`_vcvtop__(`U`_sx, ?()))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `RELAXED_TRUNC`_vcvtop__(`U`_sx, ?())] -[visit_exp (`U`_sx, ?())] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp ?()] -[visit_exp `%`_u32(258)] -[visit_exp (258)] -[visit_exp 258] -[check_dims] -dims \ = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_TRUNC`_vcvtop__(`S`_sx, ?(`ZERO`_zero)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_TRUNC`_vcvtop__(`S`_sx, ?(`ZERO`_zero)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `RELAXED_TRUNC`_vcvtop__(`S`_sx, ?(`ZERO`_zero))] -[visit_exp (`S`_sx, ?(`ZERO`_zero))] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp ?(`ZERO`_zero)] -[visit_exp `ZERO`_zero] -[visit_exp ()] -[visit_exp `%`_u32(259)] -[visit_exp (259)] -[visit_exp 259] -[check_dims] -dims \ = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_TRUNC`_vcvtop__(`U`_sx, ?(`ZERO`_zero)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_TRUNC`_vcvtop__(`U`_sx, ?(`ZERO`_zero)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `RELAXED_TRUNC`_vcvtop__(`U`_sx, ?(`ZERO`_zero))] -[visit_exp (`U`_sx, ?(`ZERO`_zero))] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp ?(`ZERO`_zero)] -[visit_exp `ZERO`_zero] -[visit_exp ()] -[visit_exp `%`_u32(260)] -[visit_exp (260)] -[visit_exp 260] -ps' = -[check_dims] -[check_dims] in -dims \ = in -[visit_exp in*{in <- `in*`}] -[scope_enter in] -[visit_exp in] -[visit_id in] not free -[visit_id in] not free -[scope_exit in] -[visit_exp `in*`] -[visit_id in*] no dims -[visit_id in*] -[scope_enter in] -[visit_exp in] -[visit_id in] not free -[visit_id in] not free -[scope_exit in] -[visit_exp `in*`] -[visit_id in*] not free -[visit_id in*] no dims -[check_dims] -ps' = (N : N, syntax en, grammar BX : en*) -[check_dims] N en -[check_dims] N en len -dims \ N = en, len -[visit_exp en*{en <- `en*`}] -[scope_enter en] -[visit_exp en] -[visit_id en] not free -[visit_id en] not free -[scope_exit en] -[visit_exp `en*`] -[visit_id en*] no dims -[visit_id en*] -[visit_exp `%`_byte(N)] -[visit_exp (N)] -[visit_exp N] -[visit_id N] not free -[visit_id N] no dims -[visit_exp `%`_u32(len)] -[visit_exp (len)] -[visit_exp len] -[visit_id len] -[visit_exp en*{en <- `en*`}] -[scope_enter en] -[visit_exp en] -[visit_id en] not free -[visit_id en] not free -[scope_exit en] -[visit_exp `en*`] -[visit_id en*] not free -[visit_id en*] no dims -[visit_exp (len = 0)] -[visit_exp len] -[visit_id len] not free -[visit_exp 0] -[check_dims] N -dims \ N = -[visit_exp []] -[visit_id N] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp []] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ((), ()).1] -[visit_exp ((), ())] -[visit_exp ()] -[visit_exp ()] -[visit_exp 0] -ps' = -[check_dims] -[check_dims] qt -dims \ = qt -[visit_exp `TYPE`_type(qt)] -[visit_exp (qt)] -[visit_exp qt] -[visit_id qt] -[visit_exp qt] -[visit_id qt] not free -ps' = -[check_dims] -[check_dims] ty -dims \ = ty -[visit_exp ty*{ty <- `ty*`}] -[scope_enter ty] -[visit_exp ty] -[visit_id ty] not free -[visit_id ty] not free -[scope_exit ty] -[visit_exp `ty*`] -[visit_id ty*] no dims -[visit_id ty*] -[visit_exp ty*{ty <- `ty*`}] -[scope_enter ty] -[visit_exp ty] -[visit_id ty] not free -[visit_id ty] not free -[scope_exit ty] -[visit_exp `ty*`] -[visit_id ty*] not free -[visit_id ty*] no dims -[visit_exp 1] -ps' = -[check_dims] -[check_dims] nm_1 nm_2 xt -dims \ = nm_1, nm_2, xt -[visit_exp `IMPORT`_import(nm_1, nm_2, xt)] -[visit_exp (nm_1, nm_2, xt)] -[visit_exp nm_1] -[visit_id nm_1] -[visit_exp nm_2] -[visit_id nm_2] -[visit_exp xt] -[visit_id xt] -[visit_exp nm_1] -[visit_id nm_1] not free -[visit_exp nm_2] -[visit_id nm_2] not free -[visit_exp xt] -[visit_id xt] not free -ps' = -[check_dims] -[check_dims] im -dims \ = im -[visit_exp im*{im <- `im*`}] -[scope_enter im] -[visit_exp im] -[visit_id im] not free -[visit_id im] not free -[scope_exit im] -[visit_exp `im*`] -[visit_id im*] no dims -[visit_id im*] -[visit_exp im*{im <- `im*`}] -[scope_enter im] -[visit_exp im] -[visit_id im] not free -[visit_id im] not free -[scope_exit im] -[visit_exp `im*`] -[visit_id im*] not free -[visit_id im*] no dims -[visit_exp 2] -ps' = -[check_dims] -[check_dims] x -dims \ = x -[visit_exp x*{x <- `x*`}] -[scope_enter x] -[visit_exp x] -[visit_id x] not free -[visit_id x] not free -[scope_exit x] -[visit_exp `x*`] -[visit_id x*] no dims -[visit_id x*] -[visit_exp x*{x <- `x*`}] -[scope_enter x] -[visit_exp x] -[visit_id x] not free -[visit_id x] not free -[scope_exit x] -[visit_exp `x*`] -[visit_id x*] not free -[visit_id x*] no dims -[visit_exp 3] -ps' = -[check_dims] -[check_dims] at ht lim tt -dims \ = at, ht, lim, tt -[visit_exp `TABLE`_table(tt, [`REF.NULL`_instr(ht)])] -[visit_exp (tt, [`REF.NULL`_instr(ht)])] -[visit_exp tt] -[visit_id tt] -[visit_exp [`REF.NULL`_instr(ht)]] -[visit_exp `REF.NULL`_instr(ht)] -[visit_exp (ht)] -[visit_exp ht] -[visit_id ht] -[visit_exp tt] -[visit_id tt] not free -[visit_exp (tt = `%%%`_tabletype(at, lim, `REF`_reftype(`NULL`_null?{}, ht)))] -[visit_exp tt] -[visit_id tt] not free -[visit_exp `%%%`_tabletype(at, lim, `REF`_reftype(`NULL`_null?{}, ht))] -[visit_exp (at, lim, `REF`_reftype(`NULL`_null?{}, ht))] -[visit_exp at] -[visit_id at] -[visit_exp lim] -[visit_id lim] -[visit_exp `REF`_reftype(`NULL`_null?{}, ht)] -[visit_exp (`NULL`_null?{}, ht)] -[visit_exp `NULL`_null?{}] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp ht] -[visit_id ht] not free -[check_dims] e tt -dims \ = e, tt -[visit_exp `TABLE`_table(tt, e)] -[visit_exp (tt, e)] -[visit_exp tt] -[visit_id tt] -[visit_exp e] -[visit_id e] -[visit_exp tt] -[visit_id tt] not free -[visit_exp e] -[visit_id e] not free -ps' = -[check_dims] -[check_dims] tab -dims \ = tab -[visit_exp tab*{tab <- `tab*`}] -[scope_enter tab] -[visit_exp tab] -[visit_id tab] not free -[visit_id tab] not free -[scope_exit tab] -[visit_exp `tab*`] -[visit_id tab*] no dims -[visit_id tab*] -[visit_exp tab*{tab <- `tab*`}] -[scope_enter tab] -[visit_exp tab] -[visit_id tab] not free -[visit_id tab] not free -[scope_exit tab] -[visit_exp `tab*`] -[visit_id tab*] not free -[visit_id tab*] no dims -[visit_exp 4] -ps' = -[check_dims] -[check_dims] mt -dims \ = mt -[visit_exp `MEMORY`_mem(mt)] -[visit_exp (mt)] -[visit_exp mt] -[visit_id mt] -[visit_exp mt] -[visit_id mt] not free -ps' = -[check_dims] -[check_dims] mem -dims \ = mem -[visit_exp mem*{mem <- `mem*`}] -[scope_enter mem] -[visit_exp mem] -[visit_id mem] not free -[visit_id mem] not free -[scope_exit mem] -[visit_exp `mem*`] -[visit_id mem*] no dims -[visit_id mem*] -[visit_exp mem*{mem <- `mem*`}] -[scope_enter mem] -[visit_exp mem] -[visit_id mem] not free -[visit_id mem] not free -[scope_exit mem] -[visit_exp `mem*`] -[visit_id mem*] not free -[visit_id mem*] no dims -[visit_exp 5] -ps' = -[check_dims] -[check_dims] e gt -dims \ = e, gt -[visit_exp `GLOBAL`_global(gt, e)] -[visit_exp (gt, e)] -[visit_exp gt] -[visit_id gt] -[visit_exp e] -[visit_id e] -[visit_exp gt] -[visit_id gt] not free -[visit_exp e] -[visit_id e] not free -ps' = -[check_dims] -[check_dims] glob -dims \ = glob -[visit_exp glob*{glob <- `glob*`}] -[scope_enter glob] -[visit_exp glob] -[visit_id glob] not free -[visit_id glob] not free -[scope_exit glob] -[visit_exp `glob*`] -[visit_id glob*] no dims -[visit_id glob*] -[visit_exp glob*{glob <- `glob*`}] -[scope_enter glob] -[visit_exp glob] -[visit_id glob] not free -[visit_id glob] not free -[scope_exit glob] -[visit_exp `glob*`] -[visit_id glob*] not free -[visit_id glob*] no dims -[visit_exp 6] -ps' = -[check_dims] -[check_dims] nm xx -dims \ = nm, xx -[visit_exp `EXPORT`_export(nm, xx)] -[visit_exp (nm, xx)] -[visit_exp nm] -[visit_id nm] -[visit_exp xx] -[visit_id xx] -[visit_exp nm] -[visit_id nm] not free -[visit_exp xx] -[visit_id xx] not free -ps' = -[check_dims] -[check_dims] ex -dims \ = ex -[visit_exp ex*{ex <- `ex*`}] -[scope_enter ex] -[visit_exp ex] -[visit_id ex] not free -[visit_id ex] not free -[scope_exit ex] -[visit_exp `ex*`] -[visit_id ex*] no dims -[visit_id ex*] -[visit_exp ex*{ex <- `ex*`}] -[scope_enter ex] -[visit_exp ex] -[visit_id ex] not free -[visit_id ex] not free -[scope_exit ex] -[visit_exp `ex*`] -[visit_id ex*] not free -[visit_id ex*] no dims -[visit_exp 7] -ps' = -[check_dims] -[check_dims] x -dims \ = x -[visit_exp [`START`_start(x)]] -[visit_exp `START`_start(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[check_dims] -ps' = -[check_dims] -[check_dims] startopt -dims \ = startopt -[visit_exp $opt_(syntax start, startopt)] -[visit_exp startopt] -[visit_id startopt] -[visit_exp startopt] -[visit_id startopt] not free -[visit_exp 8] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `REF`_reftype(?(`NULL`_null), `FUNC`_heaptype)] -[visit_exp (?(`NULL`_null), `FUNC`_heaptype)] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp `FUNC`_heaptype] -[visit_exp ()] -ps' = -[check_dims] -[check_dims] e_o y -dims \ = e_o, y -[visit_exp `ELEM`_elem(`REF`_reftype(?(), `FUNC`_heaptype), [`REF.FUNC`_instr(y)*{y <- `y*`}], `ACTIVE`_elemmode(`%`_tableidx(0), e_o))] -[visit_exp (`REF`_reftype(?(), `FUNC`_heaptype), [`REF.FUNC`_instr(y)*{y <- `y*`}], `ACTIVE`_elemmode(`%`_tableidx(0), e_o))] -[visit_exp `REF`_reftype(?(), `FUNC`_heaptype)] -[visit_exp (?(), `FUNC`_heaptype)] -[visit_exp ?()] -[visit_exp `FUNC`_heaptype] -[visit_exp ()] -[visit_exp [`REF.FUNC`_instr(y)*{y <- `y*`}]] -[visit_exp `REF.FUNC`_instr(y)*{y <- `y*`}] -[scope_enter y] -[visit_exp `REF.FUNC`_instr(y)] -[visit_exp (y)] -[visit_exp y] -[visit_id y] not free -[visit_id y] not free -[scope_exit y] -[visit_exp `y*`] -[visit_id y*] no dims -[visit_id y*] -[visit_exp `ACTIVE`_elemmode(`%`_tableidx(0), e_o)] -[visit_exp (`%`_tableidx(0), e_o)] -[visit_exp `%`_tableidx(0)] -[visit_exp (0)] -[visit_exp 0] -[visit_exp e_o] -[visit_id e_o] -[visit_exp `%`_u32(0)] -[visit_exp (0)] -[visit_exp 0] -[visit_exp e_o] -[visit_id e_o] not free -[visit_exp y*{y <- `y*`}] -[scope_enter y] -[visit_exp y] -[visit_id y] not free -[visit_id y] not free -[scope_exit y] -[visit_exp `y*`] -[visit_id y*] not free -[visit_id y*] no dims -[check_dims] rt y -dims \ = rt, y -[visit_exp `ELEM`_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], `PASSIVE`_elemmode)] -[visit_exp (rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], `PASSIVE`_elemmode)] -[visit_exp rt] -[visit_id rt] -[visit_exp [`REF.FUNC`_instr(y)*{y <- `y*`}]] -[visit_exp `REF.FUNC`_instr(y)*{y <- `y*`}] -[scope_enter y] -[visit_exp `REF.FUNC`_instr(y)] -[visit_exp (y)] -[visit_exp y] -[visit_id y] not free -[visit_id y] not free -[scope_exit y] -[visit_exp `y*`] -[visit_id y*] no dims -[visit_id y*] -[visit_exp `PASSIVE`_elemmode] -[visit_exp ()] -[visit_exp `%`_u32(1)] -[visit_exp (1)] -[visit_exp 1] -[visit_exp rt] -[visit_id rt] not free -[visit_exp y*{y <- `y*`}] -[scope_enter y] -[visit_exp y] -[visit_id y] not free -[visit_id y] not free -[scope_exit y] -[visit_exp `y*`] -[visit_id y*] not free -[visit_id y*] no dims -[check_dims] e rt x y -dims \ = e, rt, x, y -[visit_exp `ELEM`_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], `ACTIVE`_elemmode(x, e))] -[visit_exp (rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], `ACTIVE`_elemmode(x, e))] -[visit_exp rt] -[visit_id rt] -[visit_exp [`REF.FUNC`_instr(y)*{y <- `y*`}]] -[visit_exp `REF.FUNC`_instr(y)*{y <- `y*`}] -[scope_enter y] -[visit_exp `REF.FUNC`_instr(y)] -[visit_exp (y)] -[visit_exp y] -[visit_id y] not free -[visit_id y] not free -[scope_exit y] -[visit_exp `y*`] -[visit_id y*] no dims -[visit_id y*] -[visit_exp `ACTIVE`_elemmode(x, e)] -[visit_exp (x, e)] -[visit_exp x] -[visit_id x] -[visit_exp e] -[visit_id e] -[visit_exp `%`_u32(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp x] -[visit_id x] not free -[visit_exp e] -[visit_id e] not free -[visit_exp rt] -[visit_id rt] not free -[visit_exp y*{y <- `y*`}] -[scope_enter y] -[visit_exp y] -[visit_id y] not free -[visit_id y] not free -[scope_exit y] -[visit_exp `y*`] -[visit_id y*] not free -[visit_id y*] no dims -[check_dims] rt y -dims \ = rt, y -[visit_exp `ELEM`_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], `DECLARE`_elemmode)] -[visit_exp (rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], `DECLARE`_elemmode)] -[visit_exp rt] -[visit_id rt] -[visit_exp [`REF.FUNC`_instr(y)*{y <- `y*`}]] -[visit_exp `REF.FUNC`_instr(y)*{y <- `y*`}] -[scope_enter y] -[visit_exp `REF.FUNC`_instr(y)] -[visit_exp (y)] -[visit_exp y] -[visit_id y] not free -[visit_id y] not free -[scope_exit y] -[visit_exp `y*`] -[visit_id y*] no dims -[visit_id y*] -[visit_exp `DECLARE`_elemmode] -[visit_exp ()] -[visit_exp `%`_u32(3)] -[visit_exp (3)] -[visit_exp 3] -[visit_exp rt] -[visit_id rt] not free -[visit_exp y*{y <- `y*`}] -[scope_enter y] -[visit_exp y] -[visit_id y] not free -[visit_id y] not free -[scope_exit y] -[visit_exp `y*`] -[visit_id y*] not free -[visit_id y*] no dims -[check_dims] e e_O -dims \ = e, e_O -[visit_exp `ELEM`_elem(`REF`_reftype(?(`NULL`_null), `FUNC`_heaptype), e*{e <- `e*`}, `ACTIVE`_elemmode(`%`_tableidx(0), e_O))] -[visit_exp (`REF`_reftype(?(`NULL`_null), `FUNC`_heaptype), e*{e <- `e*`}, `ACTIVE`_elemmode(`%`_tableidx(0), e_O))] -[visit_exp `REF`_reftype(?(`NULL`_null), `FUNC`_heaptype)] -[visit_exp (?(`NULL`_null), `FUNC`_heaptype)] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp `FUNC`_heaptype] -[visit_exp ()] -[visit_exp e*{e <- `e*`}] -[scope_enter e] -[visit_exp e] -[visit_id e] not free -[visit_id e] not free -[scope_exit e] -[visit_exp `e*`] -[visit_id e*] no dims -[visit_id e*] -[visit_exp `ACTIVE`_elemmode(`%`_tableidx(0), e_O)] -[visit_exp (`%`_tableidx(0), e_O)] -[visit_exp `%`_tableidx(0)] -[visit_exp (0)] -[visit_exp 0] -[visit_exp e_O] -[visit_id e_O] -[visit_exp `%`_u32(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp e_O] -[visit_id e_O] not free -[visit_exp e*{e <- `e*`}] -[scope_enter e] -[visit_exp e] -[visit_id e] not free -[visit_id e] not free -[scope_exit e] -[visit_exp `e*`] -[visit_id e*] not free -[visit_id e*] no dims -[check_dims] e rt -dims \ = e, rt -[visit_exp `ELEM`_elem(rt, e*{e <- `e*`}, `PASSIVE`_elemmode)] -[visit_exp (rt, e*{e <- `e*`}, `PASSIVE`_elemmode)] -[visit_exp rt] -[visit_id rt] -[visit_exp e*{e <- `e*`}] -[scope_enter e] -[visit_exp e] -[visit_id e] not free -[visit_id e] not free -[scope_exit e] -[visit_exp `e*`] -[visit_id e*] no dims -[visit_id e*] -[visit_exp `PASSIVE`_elemmode] -[visit_exp ()] -[visit_exp `%`_u32(5)] -[visit_exp (5)] -[visit_exp 5] -[visit_exp rt] -[visit_id rt] not free -[visit_exp e*{e <- `e*`}] -[scope_enter e] -[visit_exp e] -[visit_id e] not free -[visit_id e] not free -[scope_exit e] -[visit_exp `e*`] -[visit_id e*] not free -[visit_id e*] no dims -[check_dims] e e_O x -dims \ = e, e_O, x -[visit_exp `ELEM`_elem(`REF`_reftype(?(`NULL`_null), `FUNC`_heaptype), e*{e <- `e*`}, `ACTIVE`_elemmode(x, e_O))] -[visit_exp (`REF`_reftype(?(`NULL`_null), `FUNC`_heaptype), e*{e <- `e*`}, `ACTIVE`_elemmode(x, e_O))] -[visit_exp `REF`_reftype(?(`NULL`_null), `FUNC`_heaptype)] -[visit_exp (?(`NULL`_null), `FUNC`_heaptype)] -[visit_exp ?(`NULL`_null)] -[visit_exp `NULL`_null] -[visit_exp ()] -[visit_exp `FUNC`_heaptype] -[visit_exp ()] -[visit_exp e*{e <- `e*`}] -[scope_enter e] -[visit_exp e] -[visit_id e] not free -[visit_id e] not free -[scope_exit e] -[visit_exp `e*`] -[visit_id e*] no dims -[visit_id e*] -[visit_exp `ACTIVE`_elemmode(x, e_O)] -[visit_exp (x, e_O)] -[visit_exp x] -[visit_id x] -[visit_exp e_O] -[visit_id e_O] -[visit_exp `%`_u32(6)] -[visit_exp (6)] -[visit_exp 6] -[visit_exp x] -[visit_id x] not free -[visit_exp e_O] -[visit_id e_O] not free -[visit_exp e*{e <- `e*`}] -[scope_enter e] -[visit_exp e] -[visit_id e] not free -[visit_id e] not free -[scope_exit e] -[visit_exp `e*`] -[visit_id e*] not free -[visit_id e*] no dims -[check_dims] e rt -dims \ = e, rt -[visit_exp `ELEM`_elem(rt, e*{e <- `e*`}, `DECLARE`_elemmode)] -[visit_exp (rt, e*{e <- `e*`}, `DECLARE`_elemmode)] -[visit_exp rt] -[visit_id rt] -[visit_exp e*{e <- `e*`}] -[scope_enter e] -[visit_exp e] -[visit_id e] not free -[visit_id e] not free -[scope_exit e] -[visit_exp `e*`] -[visit_id e*] no dims -[visit_id e*] -[visit_exp `DECLARE`_elemmode] -[visit_exp ()] -[visit_exp `%`_u32(7)] -[visit_exp (7)] -[visit_exp 7] -[visit_exp rt] -[visit_id rt] not free -[visit_exp e*{e <- `e*`}] -[scope_enter e] -[visit_exp e] -[visit_id e] not free -[visit_id e] not free -[scope_exit e] -[visit_exp `e*`] -[visit_id e*] not free -[visit_id e*] no dims -ps' = -[check_dims] -[check_dims] elem -dims \ = elem -[visit_exp elem*{elem <- `elem*`}] -[scope_enter elem] -[visit_exp elem] -[visit_id elem] not free -[visit_id elem] not free -[scope_exit elem] -[visit_exp `elem*`] -[visit_id elem*] no dims -[visit_id elem*] -[visit_exp elem*{elem <- `elem*`}] -[scope_enter elem] -[visit_exp elem] -[visit_id elem] not free -[visit_id elem] not free -[scope_exit elem] -[visit_exp `elem*`] -[visit_id elem*] not free -[visit_id elem*] no dims -[visit_exp 9] -[check_dims] -ps' = -[check_dims] -[check_dims] n t -dims \ = n, t -[visit_exp `LOCAL`_local(t)^n{}] -[visit_exp `LOCAL`_local(t)] -[visit_exp (t)] -[visit_exp t] -[visit_id t] -[visit_exp n] -[visit_id n] -[visit_exp `%`_u32(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] not free -[visit_exp t] -[visit_id t] not free -ps' = -[check_dims] -[check_dims] e loc -dims \ = e, loc -[visit_exp ($concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e)] -[visit_exp $concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`})] -[visit_exp loc*{loc <- `loc*`}*{`loc*` <- `loc**`}] -[scope_enter loc*] -[visit_exp loc*{loc <- `loc*`}] -[scope_enter loc] -[visit_exp loc] -[visit_id loc] not free -[visit_id loc] not free -[scope_exit loc] -[visit_exp `loc*`] -[visit_id loc*] not free -[visit_id loc*] no dims -[visit_id loc*] not free -[visit_id loc*] no dims -[scope_exit loc*] -[visit_exp `loc**`] -[visit_id loc**] no dims -[visit_id loc**] -[visit_exp e] -[visit_id e] -[visit_exp loc*{loc <- `loc*`}*{`loc*` <- `loc**`}] -[scope_enter loc*] -[visit_exp loc*{loc <- `loc*`}] -[scope_enter loc] -[visit_exp loc] -[visit_id loc] not free -[visit_id loc] not free -[scope_exit loc] -[visit_exp `loc*`] -[visit_id loc*] not free -[visit_id loc*] no dims -[visit_id loc*] not free -[visit_id loc*] no dims -[scope_exit loc*] -[visit_exp `loc**`] -[visit_id loc**] not free -[visit_id loc**] no dims -[visit_exp e] -[visit_id e] not free -[visit_exp (|$concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`})| < (2 ^ 32))] -[visit_exp |$concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`})|] -[visit_exp $concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`})] -[visit_exp loc*{loc <- `loc*`}*{`loc*` <- `loc**`}] -[scope_enter loc*] -[visit_exp loc*{loc <- `loc*`}] -[scope_enter loc] -[visit_exp loc] -[visit_id loc] not free -[visit_id loc] not free -[scope_exit loc] -[visit_exp `loc*`] -[visit_id loc*] not free -[visit_id loc*] no dims -[visit_id loc*] not free -[visit_id loc*] no dims -[scope_exit loc*] -[visit_exp `loc**`] -[visit_id loc**] not free -[visit_id loc**] no dims -[visit_exp (2 ^ 32)] -[visit_exp 2] -[visit_exp 32] -ps' = -[check_dims] -[check_dims] code len -dims \ = code, len -[visit_exp code] -[visit_id code] -[visit_exp `%`_u32(len)] -[visit_exp (len)] -[visit_exp len] -[visit_id len] -[visit_exp code] -[visit_id code] not free -[visit_exp (len = 0)] -[visit_exp len] -[visit_id len] not free -[visit_exp 0] -ps' = -[check_dims] -[check_dims] code -dims \ = code -[visit_exp code*{code <- `code*`}] -[scope_enter code] -[visit_exp code] -[visit_id code] not free -[visit_id code] not free -[scope_exit code] -[visit_exp `code*`] -[visit_id code*] no dims -[visit_id code*] -[visit_exp code*{code <- `code*`}] -[scope_enter code] -[visit_exp code] -[visit_id code] not free -[visit_id code] not free -[scope_exit code] -[visit_exp `code*`] -[visit_id code*] not free -[visit_id code*] no dims -[visit_exp 10] -ps' = -[check_dims] -[check_dims] b e -dims \ = b, e -[visit_exp `DATA`_data(b*{b <- `b*`}, `ACTIVE`_datamode(`%`_memidx(0), e))] -[visit_exp (b*{b <- `b*`}, `ACTIVE`_datamode(`%`_memidx(0), e))] -[visit_exp b*{b <- `b*`}] -[scope_enter b] -[visit_exp b] -[visit_id b] not free -[visit_id b] not free -[scope_exit b] -[visit_exp `b*`] -[visit_id b*] no dims -[visit_id b*] -[visit_exp `ACTIVE`_datamode(`%`_memidx(0), e)] -[visit_exp (`%`_memidx(0), e)] -[visit_exp `%`_memidx(0)] -[visit_exp (0)] -[visit_exp 0] -[visit_exp e] -[visit_id e] -[visit_exp `%`_u32(0)] -[visit_exp (0)] -[visit_exp 0] -[visit_exp e] -[visit_id e] not free -[visit_exp b*{b <- `b*`}] -[scope_enter b] -[visit_exp b] -[visit_id b] not free -[visit_id b] not free -[scope_exit b] -[visit_exp `b*`] -[visit_id b*] not free -[visit_id b*] no dims -[check_dims] b -dims \ = b -[visit_exp `DATA`_data(b*{b <- `b*`}, `PASSIVE`_datamode)] -[visit_exp (b*{b <- `b*`}, `PASSIVE`_datamode)] -[visit_exp b*{b <- `b*`}] -[scope_enter b] -[visit_exp b] -[visit_id b] not free -[visit_id b] not free -[scope_exit b] -[visit_exp `b*`] -[visit_id b*] no dims -[visit_id b*] -[visit_exp `PASSIVE`_datamode] -[visit_exp ()] -[visit_exp `%`_u32(1)] -[visit_exp (1)] -[visit_exp 1] -[visit_exp b*{b <- `b*`}] -[scope_enter b] -[visit_exp b] -[visit_id b] not free -[visit_id b] not free -[scope_exit b] -[visit_exp `b*`] -[visit_id b*] not free -[visit_id b*] no dims -[check_dims] b e x -dims \ = b, e, x -[visit_exp `DATA`_data(b*{b <- `b*`}, `ACTIVE`_datamode(x, e))] -[visit_exp (b*{b <- `b*`}, `ACTIVE`_datamode(x, e))] -[visit_exp b*{b <- `b*`}] -[scope_enter b] -[visit_exp b] -[visit_id b] not free -[visit_id b] not free -[scope_exit b] -[visit_exp `b*`] -[visit_id b*] no dims -[visit_id b*] -[visit_exp `ACTIVE`_datamode(x, e)] -[visit_exp (x, e)] -[visit_exp x] -[visit_id x] -[visit_exp e] -[visit_id e] -[visit_exp `%`_u32(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp x] -[visit_id x] not free -[visit_exp e] -[visit_id e] not free -[visit_exp b*{b <- `b*`}] -[scope_enter b] -[visit_exp b] -[visit_id b] not free -[visit_id b] not free -[scope_exit b] -[visit_exp `b*`] -[visit_id b*] not free -[visit_id b*] no dims -ps' = -[check_dims] -[check_dims] data -dims \ = data -[visit_exp data*{data <- `data*`}] -[scope_enter data] -[visit_exp data] -[visit_id data] not free -[visit_id data] not free -[scope_exit data] -[visit_exp `data*`] -[visit_id data*] no dims -[visit_id data*] -[visit_exp data*{data <- `data*`}] -[scope_enter data] -[visit_exp data] -[visit_id data] not free -[visit_id data] not free -[scope_exit data] -[visit_exp `data*`] -[visit_id data*] not free -[visit_id data*] no dims -[visit_exp 11] -ps' = -[check_dims] -[check_dims] n -dims \ = n -[visit_exp [`%`_u32(n)]] -[visit_exp `%`_u32(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `%`_u32(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] not free -[check_dims] -ps' = -[check_dims] -[check_dims] nopt -dims \ = nopt -[visit_exp $opt_(syntax u32, nopt)] -[visit_exp nopt] -[visit_id nopt] -[visit_exp nopt] -[visit_id nopt] not free -[visit_exp 12] -ps' = -[check_dims] -[check_dims] jt -dims \ = jt -[visit_exp `TAG`_tag(jt)] -[visit_exp (jt)] -[visit_exp jt] -[visit_id jt] -[visit_exp jt] -[visit_id jt] not free -ps' = -[check_dims] -[check_dims] tag -dims \ = tag -[visit_exp tag*{tag <- `tag*`}] -[scope_enter tag] -[visit_exp tag] -[visit_id tag] not free -[visit_id tag] not free -[scope_exit tag] -[visit_exp `tag*`] -[visit_id tag*] no dims -[visit_id tag*] -[visit_exp tag*{tag <- `tag*`}] -[scope_enter tag] -[visit_exp tag] -[visit_id tag] not free -[visit_id tag] not free -[scope_exit tag] -[visit_exp `tag*`] -[visit_id tag*] not free -[visit_id tag*] no dims -[visit_exp 13] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ((), ()).1] -[visit_exp ((), ())] -[visit_exp ()] -[visit_exp ()] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ((), ()).1] -[visit_exp ((), ())] -[visit_exp ()] -[visit_exp ()] -ps' = -[check_dims] -[check_dims] data elem export expr func global import local mem n start table tag type typeidx -dims \ = data, elem, export, expr, func, global, import, local, mem, n, start, table, tag, type, typeidx -[visit_exp `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*`})] -[visit_exp (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*`})] -[visit_exp type*{type <- `type*`}] -[scope_enter type] -[visit_exp type] -[visit_id type] not free -[visit_id type] not free -[scope_exit type] -[visit_exp `type*`] -[visit_id type*] no dims -[visit_id type*] -[visit_exp import*{import <- `import*`}] -[scope_enter import] -[visit_exp import] -[visit_id import] not free -[visit_id import] not free -[scope_exit import] -[visit_exp `import*`] -[visit_id import*] no dims -[visit_id import*] -[visit_exp tag*{tag <- `tag*`}] -[scope_enter tag] -[visit_exp tag] -[visit_id tag] not free -[visit_id tag] not free -[scope_exit tag] -[visit_exp `tag*`] -[visit_id tag*] no dims -[visit_id tag*] -[visit_exp global*{global <- `global*`}] -[scope_enter global] -[visit_exp global] -[visit_id global] not free -[visit_id global] not free -[scope_exit global] -[visit_exp `global*`] -[visit_id global*] no dims -[visit_id global*] -[visit_exp mem*{mem <- `mem*`}] -[scope_enter mem] -[visit_exp mem] -[visit_id mem] not free -[visit_id mem] not free -[scope_exit mem] -[visit_exp `mem*`] -[visit_id mem*] no dims -[visit_id mem*] -[visit_exp table*{table <- `table*`}] -[scope_enter table] -[visit_exp table] -[visit_id table] not free -[visit_id table] not free -[scope_exit table] -[visit_exp `table*`] -[visit_id table*] no dims -[visit_id table*] -[visit_exp func*{func <- `func*`}] -[scope_enter func] -[visit_exp func] -[visit_id func] not free -[visit_id func] not free -[scope_exit func] -[visit_exp `func*`] -[visit_id func*] no dims -[visit_id func*] -[visit_exp data*{data <- `data*`}] -[scope_enter data] -[visit_exp data] -[visit_id data] not free -[visit_id data] not free -[scope_exit data] -[visit_exp `data*`] -[visit_id data*] no dims -[visit_id data*] -[visit_exp elem*{elem <- `elem*`}] -[scope_enter elem] -[visit_exp elem] -[visit_id elem] not free -[visit_id elem] not free -[scope_exit elem] -[visit_exp `elem*`] -[visit_id elem*] no dims -[visit_id elem*] -[visit_exp start?{start <- `start?`}] -[scope_enter start] -[visit_exp start] -[visit_id start] not free -[visit_id start] not free -[scope_exit start] -[visit_exp `start?`] -[visit_id start?] no dims -[visit_id start?] -[visit_exp export*{export <- `export*`}] -[scope_enter export] -[visit_exp export] -[visit_id export] not free -[visit_id export] not free -[scope_exit export] -[visit_exp `export*`] -[visit_id export*] no dims -[visit_id export*] -[visit_exp type*{type <- `type*`}] -[scope_enter type] -[visit_exp type] -[visit_id type] not free -[visit_id type] not free -[scope_exit type] -[visit_exp `type*`] -[visit_id type*] not free -[visit_id type*] no dims -[visit_exp import*{import <- `import*`}] -[scope_enter import] -[visit_exp import] -[visit_id import] not free -[visit_id import] not free -[scope_exit import] -[visit_exp `import*`] -[visit_id import*] not free -[visit_id import*] no dims -[visit_exp typeidx*{typeidx <- `typeidx*`}] -[scope_enter typeidx] -[visit_exp typeidx] -[visit_id typeidx] not free -[visit_id typeidx] not free -[scope_exit typeidx] -[visit_exp `typeidx*`] -[visit_id typeidx*] no dims -[visit_id typeidx*] -[visit_exp table*{table <- `table*`}] -[scope_enter table] -[visit_exp table] -[visit_id table] not free -[visit_id table] not free -[scope_exit table] -[visit_exp `table*`] -[visit_id table*] not free -[visit_id table*] no dims -[visit_exp mem*{mem <- `mem*`}] -[scope_enter mem] -[visit_exp mem] -[visit_id mem] not free -[visit_id mem] not free -[scope_exit mem] -[visit_exp `mem*`] -[visit_id mem*] not free -[visit_id mem*] no dims -[visit_exp tag*{tag <- `tag*`}] -[scope_enter tag] -[visit_exp tag] -[visit_id tag] not free -[visit_id tag] not free -[scope_exit tag] -[visit_exp `tag*`] -[visit_id tag*] not free -[visit_id tag*] no dims -[visit_exp global*{global <- `global*`}] -[scope_enter global] -[visit_exp global] -[visit_id global] not free -[visit_id global] not free -[scope_exit global] -[visit_exp `global*`] -[visit_id global*] not free -[visit_id global*] no dims -[visit_exp export*{export <- `export*`}] -[scope_enter export] -[visit_exp export] -[visit_id export] not free -[visit_id export] not free -[scope_exit export] -[visit_exp `export*`] -[visit_id export*] not free -[visit_id export*] no dims -[visit_exp start?{start <- `start?`}] -[scope_enter start] -[visit_exp start] -[visit_id start] not free -[visit_id start] not free -[scope_exit start] -[visit_exp `start?`] -[visit_id start?] not free -[visit_id start?] no dims -[visit_exp elem*{elem <- `elem*`}] -[scope_enter elem] -[visit_exp elem] -[visit_id elem] not free -[visit_id elem] not free -[scope_exit elem] -[visit_exp `elem*`] -[visit_id elem*] not free -[visit_id elem*] no dims -[visit_exp `%`_u32(n)?{n <- `n?`}] -[scope_enter n] -[visit_exp `%`_u32(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] not free -[visit_id n] not free -[scope_exit n] -[visit_exp `n?`] -[visit_id n?] no dims -[visit_id n?] -[visit_exp (local*{local <- `local*`}, expr)*{expr <- `expr*`, `local*` <- `local**`}] -[scope_enter expr] -[scope_enter local*] -[visit_exp (local*{local <- `local*`}, expr)] -[visit_exp local*{local <- `local*`}] -[scope_enter local] -[visit_exp local] -[visit_id local] not free -[visit_id local] not free -[scope_exit local] -[visit_exp `local*`] -[visit_id local*] not free -[visit_id local*] no dims -[visit_exp expr] -[visit_id expr] not free -[visit_id expr] not free -[visit_id local*] not free -[visit_id local*] no dims -[scope_exit local*] -[scope_exit expr] -[visit_exp `expr*`] -[visit_id expr*] no dims -[visit_id expr*] -[visit_exp `local**`] -[visit_id local**] no dims -[visit_id local**] -[visit_exp data*{data <- `data*`}] -[scope_enter data] -[visit_exp data] -[visit_id data] not free -[visit_id data] not free -[scope_exit data] -[visit_exp `data*`] -[visit_id data*] not free -[visit_id data*] no dims -[scope_enter n] -[visit_exp (n = |data*{data <- `data*`}|)] -[visit_exp n] -[visit_id n] not free -[visit_exp |data*{data <- `data*`}|] -[visit_exp data*{data <- `data*`}] -[scope_enter data] -[visit_exp data] -[visit_id data] not free -[visit_id data] not free -[scope_exit data] -[visit_exp `data*`] -[visit_id data*] not free -[visit_id data*] no dims -[visit_id n] not free -[scope_exit n] -[visit_exp `n?`] -[visit_id n?] not free -[visit_id n?] no dims -[visit_exp ((n?{n <- `n?`} =/= ?()) \/ ($dataidx_funcs(func*{func <- `func*`}) = []))] -[visit_exp (n?{n <- `n?`} =/= ?())] -[visit_exp n?{n <- `n?`}] -[scope_enter n] -[visit_exp n] -[visit_id n] not free -[visit_id n] not free -[scope_exit n] -[visit_exp `n?`] -[visit_id n?] not free -[visit_id n?] no dims -[visit_exp ?()] -[visit_exp ($dataidx_funcs(func*{func <- `func*`}) = [])] -[visit_exp $dataidx_funcs(func*{func <- `func*`})] -[visit_exp func*{func <- `func*`}] -[scope_enter func] -[visit_exp func] -[visit_id func] not free -[visit_id func] not free -[scope_exit func] -[visit_exp `func*`] -[visit_id func*] not free -[visit_id func*] no dims -[visit_exp []] -[scope_enter expr] -[scope_enter func] -[scope_enter local*] -[scope_enter typeidx] -[visit_exp (func = `FUNC`_func(typeidx, local*{local <- `local*`}, expr))] -[visit_exp func] -[visit_id func] not free -[visit_exp `FUNC`_func(typeidx, local*{local <- `local*`}, expr)] -[visit_exp (typeidx, local*{local <- `local*`}, expr)] -[visit_exp typeidx] -[visit_id typeidx] not free -[visit_exp local*{local <- `local*`}] -[scope_enter local] -[visit_exp local] -[visit_id local] not free -[visit_id local] not free -[scope_exit local] -[visit_exp `local*`] -[visit_id local*] not free -[visit_id local*] no dims -[visit_exp expr] -[visit_id expr] not free -[visit_id expr] not free -[visit_id func] not free -[visit_id local*] not free -[visit_id local*] no dims -[visit_id typeidx] not free -[scope_exit typeidx] -[scope_exit local*] -[scope_exit func] -[scope_exit expr] -[visit_exp `expr*`] -[visit_id expr*] not free -[visit_id expr*] no dims -[visit_exp `func*`] -[visit_id func*] not free -[visit_id func*] no dims -[visit_exp `local**`] -[visit_id local**] not free -[visit_id local**] no dims -[visit_exp `typeidx*`] -[visit_id typeidx*] not free -[visit_id typeidx*] no dims -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `%`_char(``)] -[visit_exp (``)] -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp `%`_char(``)] -[visit_exp (``)] -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp [``]] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp [``]] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp [``]] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp [``]] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] c -dims \ = , c -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -[visit_exp c] -[visit_id c] -[visit_exp ((c!`%`_char.0 =/= 10) /\ (c!`%`_char.0 =/= 13))] -[visit_exp (c!`%`_char.0 =/= 10)] -[visit_exp c!`%`_char.0] -[visit_exp c!`%`_char] -[visit_exp c] -[visit_id c] not free -[visit_exp 10] -[visit_exp (c!`%`_char.0 =/= 13)] -[visit_exp c!`%`_char.0] -[visit_exp c!`%`_char] -[visit_exp c] -[visit_id c] not free -[visit_exp 13] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] c -dims \ = , c -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -[visit_exp c] -[visit_id c] -[visit_exp ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40)))] -[visit_exp (c =/= `%`_char(59))] -[visit_exp c] -[visit_id c] not free -[visit_exp `%`_char(59)] -[visit_exp (59)] -[visit_exp 59] -[visit_exp (c =/= `%`_char(40))] -[visit_exp c] -[visit_id c] not free -[visit_exp `%`_char(40)] -[visit_exp (40)] -[visit_exp 40] -[check_dims] c -dims \ = , c -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -[visit_exp c] -[visit_id c] -[visit_exp ((c =/= `%`_char(59)) /\ (c =/= `%`_char(41)))] -[visit_exp (c =/= `%`_char(59))] -[visit_exp c] -[visit_id c] not free -[visit_exp `%`_char(59)] -[visit_exp (59)] -[visit_exp 59] -[visit_exp (c =/= `%`_char(41))] -[visit_exp c] -[visit_id c] not free -[visit_exp `%`_char(41)] -[visit_exp (41)] -[visit_exp 41] -[check_dims] c -dims \ = , c -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -[visit_exp c] -[visit_id c] -[visit_exp ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40)))] -[visit_exp (c =/= `%`_char(59))] -[visit_exp c] -[visit_id c] not free -[visit_exp `%`_char(59)] -[visit_exp (59)] -[visit_exp 59] -[visit_exp (c =/= `%`_char(40))] -[visit_exp c] -[visit_id c] not free -[visit_exp `%`_char(40)] -[visit_exp (40)] -[visit_exp 40] -[check_dims] -dims \ = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp [``]] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp + (1 : nat <:> int)] -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[check_dims] -dims \ = -[visit_exp + (1 : nat <:> int)] -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[check_dims] -dims \ = -[visit_exp - (1 : nat <:> int)] -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -ps' = -[check_dims] -[check_dims] -[visit_exp 0] -[visit_exp 9] -ps' = -[check_dims] -[check_dims] d -dims \ = d -[visit_exp d] -[visit_id d] -[visit_exp d] -[visit_id d] not free -[check_dims] -[visit_exp 10] -[visit_exp 15] -[check_dims] -[visit_exp 10] -[visit_exp 15] -ps' = -[check_dims] -[check_dims] d -dims \ = d -[visit_exp d] -[visit_id d] -[visit_exp d] -[visit_id d] not free -[check_dims] d n -dims \ = d, n -[visit_exp ((10 * n) + d)] -[visit_exp (10 * n)] -[visit_exp 10] -[visit_exp n] -[visit_id n] -[visit_exp d] -[visit_id d] -[visit_exp n] -[visit_id n] not free -[visit_exp d] -[visit_id d] not free -ps' = -[check_dims] -[check_dims] h -dims \ = h -[visit_exp h] -[visit_id h] -[visit_exp h] -[visit_id h] not free -[check_dims] h n -dims \ = h, n -[visit_exp ((16 * n) + h)] -[visit_exp (16 * n)] -[visit_exp 16] -[visit_exp n] -[visit_id n] -[visit_exp h] -[visit_id h] -[visit_exp n] -[visit_id n] not free -[visit_exp h] -[visit_id h] not free -ps' = (N : N) -[check_dims] N -[check_dims] N n -dims \ N = n -[visit_exp `%`_uN(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp n] -[visit_id n] not free -[visit_exp (n < (2 ^ N))] -[visit_exp n] -[visit_id n] not free -[visit_exp (2 ^ N)] -[visit_exp 2] -[visit_exp N] -[visit_id N] not free -[visit_id N] no dims -[check_dims] N n -dims \ N = n -[visit_exp `%`_uN(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp n] -[visit_id n] not free -[visit_exp (n < (2 ^ N))] -[visit_exp n] -[visit_id n] not free -[visit_exp (2 ^ N)] -[visit_exp 2] -[visit_exp N] -[visit_id N] not free -[visit_id N] no dims -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -ps' = (N : N) -[check_dims] N -[check_dims] N n s -dims \ N = n, s -[visit_exp `%`_sN((s * (n : nat <:> int)))] -[visit_exp ((s * (n : nat <:> int)))] -[visit_exp (s * (n : nat <:> int))] -[visit_exp s] -[visit_id s] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] -[visit_exp s] -[visit_id s] not free -[visit_exp `%`_uN(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] not free -[visit_exp N] -[visit_id N] not free -[visit_id N] no dims -[visit_exp ((- ((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)))] -[visit_exp (- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= (s * (n : nat <:> int)))] -[visit_exp - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)] -[visit_exp ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)] -[visit_exp (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp 2] -[visit_exp (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp ((N : nat <:> int) - (1 : nat <:> int))] -[visit_exp (N : nat <:> int)] -[visit_exp N] -[visit_id N] not free -[visit_id N] no dims -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp (s * (n : nat <:> int))] -[visit_exp s] -[visit_id s] not free -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp ((s * (n : nat <:> int)) < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))] -[visit_exp (s * (n : nat <:> int))] -[visit_exp s] -[visit_id s] not free -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)] -[visit_exp (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] -[visit_exp 2] -[visit_exp (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)] -[visit_exp ((N : nat <:> int) - (1 : nat <:> int))] -[visit_exp (N : nat <:> int)] -[visit_exp N] -[visit_id N] not free -[visit_id N] no dims -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -ps' = (N : N) -[check_dims] N -[check_dims] N n -dims \ N = n -[visit_exp `%`_iN(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `%`_uN(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] not free -[visit_exp N] -[visit_id N] not free -[visit_id N] no dims -[check_dims] N i -dims \ N = i -[visit_exp `%`_iN($inv_signed_(N, i!`%`_sN.0))] -[visit_exp ($inv_signed_(N, i!`%`_sN.0))] -[visit_exp $inv_signed_(N, i!`%`_sN.0)] -[visit_exp N] -[visit_id N] not free -[visit_id N] no dims -[visit_exp i!`%`_sN.0] -[visit_exp i!`%`_sN] -[visit_exp i] -[visit_id i] -[visit_exp i] -[visit_id i] not free -[visit_exp N] -[visit_id N] not free -[visit_id N] no dims -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -ps' = -[check_dims] -[check_dims] d -dims \ = d -[visit_exp ((d : nat <:> rat) / (10 : nat <:> rat))] -[visit_exp (d : nat <:> rat)] -[visit_exp d] -[visit_id d] -[visit_exp (10 : nat <:> rat)] -[visit_exp 10] -[visit_exp d] -[visit_id d] not free -[check_dims] d p -dims \ = d, p -[visit_exp (((d + ((p / (10 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (10 : nat <:> rat))] -[visit_exp ((d + ((p / (10 : nat <:> rat)) : rat <:> nat)) : nat <:> rat)] -[visit_exp (d + ((p / (10 : nat <:> rat)) : rat <:> nat))] -[visit_exp d] -[visit_id d] -[visit_exp ((p / (10 : nat <:> rat)) : rat <:> nat)] -[visit_exp (p / (10 : nat <:> rat))] -[visit_exp p] -[visit_id p] -[visit_exp (10 : nat <:> rat)] -[visit_exp 10] -[visit_exp (10 : nat <:> rat)] -[visit_exp 10] -[visit_exp d] -[visit_id d] not free -[visit_exp p] -[visit_id p] not free -ps' = -[check_dims] -[check_dims] h -dims \ = h -[visit_exp ((h : nat <:> rat) / (16 : nat <:> rat))] -[visit_exp (h : nat <:> rat)] -[visit_exp h] -[visit_id h] -[visit_exp (16 : nat <:> rat)] -[visit_exp 16] -[visit_exp h] -[visit_id h] not free -[check_dims] h p -dims \ = h, p -[visit_exp (((h + ((p / (16 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (16 : nat <:> rat))] -[visit_exp ((h + ((p / (16 : nat <:> rat)) : rat <:> nat)) : nat <:> rat)] -[visit_exp (h + ((p / (16 : nat <:> rat)) : rat <:> nat))] -[visit_exp h] -[visit_id h] -[visit_exp ((p / (16 : nat <:> rat)) : rat <:> nat)] -[visit_exp (p / (16 : nat <:> rat))] -[visit_exp p] -[visit_id p] -[visit_exp (16 : nat <:> rat)] -[visit_exp 16] -[visit_exp (16 : nat <:> rat)] -[visit_exp 16] -[visit_exp h] -[visit_id h] not free -[visit_exp p] -[visit_id p] not free -ps' = -[check_dims] -[check_dims] p -dims \ = p -[visit_exp (p : nat <:> rat)] -[visit_exp p] -[visit_id p] -[visit_exp p] -[visit_id p] not free -[check_dims] p q -dims \ = p, q -[visit_exp ((p + (q : rat <:> nat)) : nat <:> rat)] -[visit_exp (p + (q : rat <:> nat))] -[visit_exp p] -[visit_id p] -[visit_exp (q : rat <:> nat)] -[visit_exp q] -[visit_id q] -[visit_exp p] -[visit_id p] not free -[visit_exp q] -[visit_id q] not free -ps' = -[check_dims] -[check_dims] p -dims \ = p -[visit_exp (p : nat <:> rat)] -[visit_exp p] -[visit_id p] -[visit_exp p] -[visit_id p] not free -[check_dims] p q -dims \ = p, q -[visit_exp ((p + (q : rat <:> nat)) : nat <:> rat)] -[visit_exp (p + (q : rat <:> nat))] -[visit_exp p] -[visit_id p] -[visit_exp (q : rat <:> nat)] -[visit_exp q] -[visit_id q] -[visit_exp p] -[visit_id p] not free -[visit_exp q] -[visit_id q] not free -[check_dims] N rat -DecD ieee_(N : N, rat : rat) : fNmag(N) -[visit_id N] not free -[visit_id rat] not free -[visit_exp N] -[visit_id N] not free -[check_dims] -ps' = -[check_dims] -[check_dims] ee p s -dims \ = ee, p, s -[visit_exp (p * ((10 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat))] -[visit_exp p] -[visit_id p] -[visit_exp ((10 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)] -[visit_exp (10 ^ ((s * (ee : nat <:> int)) : int <:> nat))] -[visit_exp 10] -[visit_exp ((s * (ee : nat <:> int)) : int <:> nat)] -[visit_exp (s * (ee : nat <:> int))] -[visit_exp s] -[visit_id s] -[visit_exp (ee : nat <:> int)] -[visit_exp ee] -[visit_id ee] -[visit_exp p] -[visit_id p] not free -[visit_exp s] -[visit_id s] not free -[visit_exp ee] -[visit_id ee] not free -ps' = -[check_dims] -[check_dims] ee p s -dims \ = ee, p, s -[visit_exp (p * ((2 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat))] -[visit_exp p] -[visit_id p] -[visit_exp ((2 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)] -[visit_exp (2 ^ ((s * (ee : nat <:> int)) : int <:> nat))] -[visit_exp 2] -[visit_exp ((s * (ee : nat <:> int)) : int <:> nat)] -[visit_exp (s * (ee : nat <:> int))] -[visit_exp s] -[visit_id s] -[visit_exp (ee : nat <:> int)] -[visit_exp ee] -[visit_id ee] -[visit_exp p] -[visit_id p] not free -[visit_exp s] -[visit_id s] not free -[visit_exp ee] -[visit_id ee] not free -ps' = (N : N) -[check_dims] N -[check_dims] N q -dims \ N = q -[visit_exp $ieee_(N, q)] -[visit_exp N] -[visit_id N] not free -[visit_id N] no dims -[visit_exp q] -[visit_id q] -[visit_exp q] -[visit_id q] not free -[visit_exp ($ieee_(N, q) =/= `INF`_fNmag)] -[visit_exp $ieee_(N, q)] -[visit_exp N] -[visit_id N] not free -[visit_id N] no dims -[visit_exp q] -[visit_id q] not free -[visit_exp `INF`_fNmag] -[visit_exp ()] -[check_dims] N q -dims \ N = q -[visit_exp $ieee_(N, q)] -[visit_exp N] -[visit_id N] not free -[visit_id N] no dims -[visit_exp q] -[visit_id q] -[visit_exp q] -[visit_id q] not free -[visit_exp ($ieee_(N, q) =/= `INF`_fNmag)] -[visit_exp $ieee_(N, q)] -[visit_exp N] -[visit_id N] not free -[visit_id N] no dims -[visit_exp q] -[visit_id q] not free -[visit_exp `INF`_fNmag] -[visit_exp ()] -[check_dims] N -dims \ N = -[visit_exp `INF`_fNmag] -[visit_exp ()] -[check_dims] N -dims \ N = -[visit_exp `NAN`_fNmag($canon_(N))] -[visit_exp ($canon_(N))] -[visit_exp $canon_(N)] -[visit_exp N] -[visit_id N] not free -[visit_id N] no dims -[check_dims] N n -dims \ N = n -[visit_exp `NAN`_fNmag(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp n] -[visit_id n] not free -[visit_exp ((1 <= n) /\ (n < (2 ^ $signif(N))))] -[visit_exp (1 <= n)] -[visit_exp 1] -[visit_exp n] -[visit_id n] not free -[visit_exp (n < (2 ^ $signif(N)))] -[visit_exp n] -[visit_id n] not free -[visit_exp (2 ^ $signif(N))] -[visit_exp 2] -[visit_exp $signif(N)] -[visit_exp N] -[visit_id N] not free -[visit_id N] no dims -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -ps' = (N : N) -[check_dims] N -[check_dims] N q -dims \ N = q -[visit_exp `POS`_fN(q)] -[visit_exp (q)] -[visit_exp q] -[visit_id q] -[visit_exp + (1 : nat <:> int)] -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp q] -[visit_id q] not free -[visit_exp N] -[visit_id N] not free -[visit_id N] no dims -[check_dims] N q -dims \ N = q -[visit_exp `NEG`_fN(q)] -[visit_exp (q)] -[visit_exp q] -[visit_id q] -[visit_exp - (1 : nat <:> int)] -[visit_exp (1 : nat <:> int)] -[visit_exp 1] -[visit_exp q] -[visit_id q] not free -[visit_exp N] -[visit_id N] not free -[visit_id N] no dims -[visit_id N] not free -[visit_exp N] -[visit_id N] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[visit_exp 8] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[visit_exp 32] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[visit_exp 64] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[visit_exp 8] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[visit_exp 16] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[visit_exp 32] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[visit_exp 64] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[visit_exp 32] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[visit_exp 64] -ps' = -[check_dims] -[check_dims] c -dims \ = c -[visit_exp c] -[visit_id c] -[visit_exp c] -[visit_id c] not free -[visit_exp ((((c!`%`_char.0 >= 32) /\ (c!`%`_char.0 =/= 127)) /\ (c =/= `%`_char(34))) /\ (c =/= `%`_char(92)))] -[visit_exp (((c!`%`_char.0 >= 32) /\ (c!`%`_char.0 =/= 127)) /\ (c =/= `%`_char(34)))] -[visit_exp ((c!`%`_char.0 >= 32) /\ (c!`%`_char.0 =/= 127))] -[visit_exp (c!`%`_char.0 >= 32)] -[visit_exp c!`%`_char.0] -[visit_exp c!`%`_char] -[visit_exp c] -[visit_id c] not free -[visit_exp 32] -[visit_exp (c!`%`_char.0 =/= 127)] -[visit_exp c!`%`_char.0] -[visit_exp c!`%`_char] -[visit_exp c] -[visit_id c] not free -[visit_exp 127] -[visit_exp (c =/= `%`_char(34))] -[visit_exp c] -[visit_id c] not free -[visit_exp `%`_char(34)] -[visit_exp (34)] -[visit_exp 34] -[visit_exp (c =/= `%`_char(92))] -[visit_exp c] -[visit_id c] not free -[visit_exp `%`_char(92)] -[visit_exp (92)] -[visit_exp 92] -[check_dims] -dims \ = -[visit_exp `%`_char(9)] -[visit_exp (9)] -[visit_exp 9] -[check_dims] -dims \ = -[visit_exp `%`_char(10)] -[visit_exp (10)] -[visit_exp 10] -[check_dims] -dims \ = -[visit_exp `%`_char(13)] -[visit_exp (13)] -[visit_exp 13] -[check_dims] -dims \ = -[visit_exp `%`_char(34)] -[visit_exp (34)] -[visit_exp 34] -[check_dims] -dims \ = -[visit_exp `%`_char(39)] -[visit_exp (39)] -[visit_exp 39] -[check_dims] -dims \ = -[visit_exp `%`_char(92)] -[visit_exp (92)] -[visit_exp 92] -[check_dims] n -dims \ = n -[visit_exp `%`_char(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp n] -[visit_id n] not free -[visit_exp ((n < 55296) \/ ((59392 <= n) /\ (n < 1114112)))] -[visit_exp (n < 55296)] -[visit_exp n] -[visit_id n] not free -[visit_exp 55296] -[visit_exp ((59392 <= n) /\ (n < 1114112))] -[visit_exp (59392 <= n)] -[visit_exp 59392] -[visit_exp n] -[visit_id n] not free -[visit_exp (n < 1114112)] -[visit_exp n] -[visit_id n] not free -[visit_exp 1114112] -ps' = -[check_dims] -[check_dims] c -dims \ = c -[visit_exp $utf8([c])] -[visit_exp [c]] -[visit_exp c] -[visit_id c] -[visit_exp c] -[visit_id c] not free -[check_dims] h_1 h_2 -dims \ = h_1, h_2 -[visit_exp [`%`_byte(((16 * h_1) + h_2))]] -[visit_exp `%`_byte(((16 * h_1) + h_2))] -[visit_exp (((16 * h_1) + h_2))] -[visit_exp ((16 * h_1) + h_2)] -[visit_exp (16 * h_1)] -[visit_exp 16] -[visit_exp h_1] -[visit_id h_1] -[visit_exp h_2] -[visit_id h_2] -[visit_exp h_1] -[visit_id h_1] not free -[visit_exp h_2] -[visit_id h_2] not free -ps' = -[check_dims] -[check_dims] b -dims \ = b -[visit_exp $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`})] -[visit_exp b*{b <- `b*`}*{`b*` <- `b**`}] -[scope_enter b*] -[visit_exp b*{b <- `b*`}] -[scope_enter b] -[visit_exp b] -[visit_id b] not free -[visit_id b] not free -[scope_exit b] -[visit_exp `b*`] -[visit_id b*] not free -[visit_id b*] no dims -[visit_id b*] not free -[visit_id b*] no dims -[scope_exit b*] -[visit_exp `b**`] -[visit_id b**] no dims -[visit_id b**] -[scope_enter b*] -[visit_exp b*{b <- `b*`}] -[scope_enter b] -[visit_exp b] -[visit_id b] not free -[visit_id b] not free -[scope_exit b] -[visit_exp `b*`] -[visit_id b*] not free -[visit_id b*] no dims -[visit_id b*] not free -[visit_id b*] no dims -[scope_exit b*] -[visit_exp `b**`] -[visit_id b**] not free -[visit_id b**] no dims -[visit_exp (|$concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`})| < (2 ^ 32))] -[visit_exp |$concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`})|] -[visit_exp $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`})] -[visit_exp b*{b <- `b*`}*{`b*` <- `b**`}] -[scope_enter b*] -[visit_exp b*{b <- `b*`}] -[scope_enter b] -[visit_exp b] -[visit_id b] not free -[visit_id b] not free -[scope_exit b] -[visit_exp `b*`] -[visit_id b*] not free -[visit_id b*] no dims -[visit_id b*] not free -[visit_id b*] no dims -[scope_exit b*] -[visit_exp `b**`] -[visit_id b**] not free -[visit_id b**] no dims -[visit_exp (2 ^ 32)] -[visit_exp 2] -[visit_exp 32] -ps' = (syntax el, grammar TX : el) -[check_dims] el -[check_dims] el -dims \ = el -[visit_exp el*{el <- `el*`}] -[scope_enter el] -[visit_exp el] -[visit_id el] not free -[visit_id el] not free -[scope_exit el] -[visit_exp `el*`] -[visit_id el*] no dims -[visit_id el*] -[scope_enter el] -[visit_exp el] -[visit_id el] not free -[visit_id el] not free -[scope_exit el] -[visit_exp `el*`] -[visit_id el*] not free -[visit_id el*] no dims -[visit_exp (|el*{el <- `el*`}| < (2 ^ 32))] -[visit_exp |el*{el <- `el*`}|] -[visit_exp el*{el <- `el*`}] -[scope_enter el] -[visit_exp el] -[visit_id el] not free -[visit_id el] not free -[scope_exit el] -[visit_exp `el*`] -[visit_id el*] not free -[visit_id el*] no dims -[visit_exp (2 ^ 32)] -[visit_exp 2] -[visit_exp 32] -ps' = -[check_dims] -[check_dims] b c -dims \ = b, c -[visit_exp `%`_name(c*{c <- `c*`})] -[visit_exp (c*{c <- `c*`})] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] no dims -[visit_id c*] -[visit_exp b*{b <- `b*`}] -[scope_enter b] -[visit_exp b] -[visit_id b] not free -[visit_id b] not free -[scope_exit b] -[visit_exp `b*`] -[visit_id b*] no dims -[visit_id b*] -[visit_exp (b*{b <- `b*`} = $utf8(c*{c <- `c*`}))] -[visit_exp b*{b <- `b*`}] -[scope_enter b] -[visit_exp b] -[visit_id b] not free -[visit_id b] not free -[scope_exit b] -[visit_exp `b*`] -[visit_id b*] not free -[visit_id b*] no dims -[visit_exp $utf8(c*{c <- `c*`})] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `%`_char(``)] -[visit_exp (``)] -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp `%`_char(``)] -[visit_exp (``)] -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp `%`_char(``)] -[visit_exp (``)] -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp `%`_char(``)] -[visit_exp (``)] -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp `%`_char(``)] -[visit_exp (``)] -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp `%`_char(``)] -[visit_exp (``)] -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp `%`_char(``)] -[visit_exp (``)] -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp `%`_char(``)] -[visit_exp (``)] -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp `%`_char(``)] -[visit_exp (``)] -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp `%`_char(``)] -[visit_exp (``)] -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp `%`_char(``)] -[visit_exp (``)] -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp `%`_char(``)] -[visit_exp (``)] -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp `%`_char(``)] -[visit_exp (``)] -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp `%`_char(``)] -[visit_exp (``)] -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp `%`_char(``)] -[visit_exp (``)] -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp `%`_char(``)] -[visit_exp (``)] -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp `%`_char(``)] -[visit_exp (``)] -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp `%`_char(``)] -[visit_exp (``)] -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp `%`_char(``)] -[visit_exp (``)] -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp `%`_char(``)] -[visit_exp (``)] -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp `%`_char(``)] -[visit_exp (``)] -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp `%`_char(``)] -[visit_exp (``)] -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp `%`_char(``)] -[visit_exp (``)] -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp `%`_char(``)] -[visit_exp (``)] -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp `%`_char(``)] -[visit_exp (``)] -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[check_dims] -dims \ = -[visit_exp `%`_char(``)] -[visit_exp (``)] -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] c -dims \ = c -[visit_exp `%`_name(c*{c <- `c*`})] -[visit_exp (c*{c <- `c*`})] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] no dims -[visit_id c*] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[check_dims] c -dims \ = c -[visit_exp `%`_name(c*{c <- `c*`})] -[visit_exp (c*{c <- `c*`})] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] no dims -[visit_id c*] -[visit_exp `%`_name(c*{c <- `c*`})] -[visit_exp (c*{c <- `c*`})] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[visit_exp (|c*{c <- `c*`}| > 0)] -[visit_exp |c*{c <- `c*`}|] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[visit_exp 0] -[check_dims] -[check_dims] -[scope_enter name?*] -[visit_id name?*] not free -[visit_id name?*] no dims -[scope_exit name?*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter name?*] -[visit_id name?*] not free -[visit_id name?*] no dims -[scope_exit name?*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter name?*] -[visit_id name?*] not free -[visit_id name?*] no dims -[scope_exit name?*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter name?*] -[visit_id name?*] not free -[visit_id name?*] no dims -[scope_exit name?*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter name?*] -[visit_id name?*] not free -[visit_id name?*] no dims -[scope_exit name?*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter name?*] -[visit_id name?*] not free -[visit_id name?*] no dims -[scope_exit name?*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter name?*] -[visit_id name?*] not free -[visit_id name?*] no dims -[scope_exit name?*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter name?*] -[visit_id name?*] not free -[visit_id name?*] no dims -[scope_exit name?*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter name?*] -[visit_id name?*] not free -[visit_id name?*] no dims -[scope_exit name?*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter name?*] -[visit_id name?*] not free -[visit_id name?*] no dims -[scope_exit name?*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter name?**] -[visit_id name?**] not free -[visit_id name?**] no dims -[scope_exit name?**] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter deftype?*] -[visit_id deftype?*] not free -[visit_id deftype?*] no dims -[scope_exit deftype?*] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] _ -DecD concat_idctxt(idctxt*) : idctxt -[visit_id _] not free -[check_dims] -[visit_exp []] -[visit_exp {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [], `TYPEDEFS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - def $concat_idctxt([]) = {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [], `TYPEDEFS` []} -[check_dims] I I' -[visit_exp [I] ++ I'*{I' <- `I'*`}] -[visit_exp [I]] -[visit_exp I] -[visit_id I] -[visit_exp I'*{I' <- `I'*`}] -[scope_enter I'] -[visit_exp I'] -[visit_id I'] not free -[visit_id I'] not free -[scope_exit I'] -[visit_exp `I'*`] -[visit_id I'*] no dims -[visit_id I'*] -[visit_exp I +++ $concat_idctxt(I'*{I' <- `I'*`})] -[visit_exp I] -[visit_id I] not free -[visit_exp $concat_idctxt(I'*{I' <- `I'*`})] -[visit_exp I'*{I' <- `I'*`}] -[scope_enter I'] -[visit_exp I'] -[visit_id I'] not free -[visit_id I'] not free -[scope_exit I'] -[visit_exp `I'*`] -[visit_id I'*] not free -[visit_id I'*] no dims -=> - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - def $concat_idctxt{I : I, `I'*` : I*}([I] ++ I'*{I' <- `I'*`}) = I +++ $concat_idctxt(I'*{I' <- `I'*`}) -[check_dims] -[check_dims] I field -[visit_exp I] -[visit_id I] -[visit_exp $disjoint_(syntax name, $concatopt_(syntax name, I.`TYPES`_I))] -[visit_exp $concatopt_(syntax name, I.`TYPES`_I)] -[visit_exp I.`TYPES`_I] -[visit_exp I] -[visit_id I] not free -[visit_exp $disjoint_(syntax name, $concatopt_(syntax name, I.`TAGS`_I))] -[visit_exp $concatopt_(syntax name, I.`TAGS`_I)] -[visit_exp I.`TAGS`_I] -[visit_exp I] -[visit_id I] not free -[visit_exp $disjoint_(syntax name, $concatopt_(syntax name, I.`GLOBALS`_I))] -[visit_exp $concatopt_(syntax name, I.`GLOBALS`_I)] -[visit_exp I.`GLOBALS`_I] -[visit_exp I] -[visit_id I] not free -[visit_exp $disjoint_(syntax name, $concatopt_(syntax name, I.`MEMS`_I))] -[visit_exp $concatopt_(syntax name, I.`MEMS`_I)] -[visit_exp I.`MEMS`_I] -[visit_exp I] -[visit_id I] not free -[visit_exp $disjoint_(syntax name, $concatopt_(syntax name, I.`TABLES`_I))] -[visit_exp $concatopt_(syntax name, I.`TABLES`_I)] -[visit_exp I.`TABLES`_I] -[visit_exp I] -[visit_id I] not free -[visit_exp $disjoint_(syntax name, $concatopt_(syntax name, I.`FUNCS`_I))] -[visit_exp $concatopt_(syntax name, I.`FUNCS`_I)] -[visit_exp I.`FUNCS`_I] -[visit_exp I] -[visit_id I] not free -[visit_exp $disjoint_(syntax name, $concatopt_(syntax name, I.`DATAS`_I))] -[visit_exp $concatopt_(syntax name, I.`DATAS`_I)] -[visit_exp I.`DATAS`_I] -[visit_exp I] -[visit_id I] not free -[visit_exp $disjoint_(syntax name, $concatopt_(syntax name, I.`ELEMS`_I))] -[visit_exp $concatopt_(syntax name, I.`ELEMS`_I)] -[visit_exp I.`ELEMS`_I] -[visit_exp I] -[visit_id I] not free -[visit_exp $disjoint_(syntax name, $concatopt_(syntax name, I.`LOCALS`_I))] -[visit_exp $concatopt_(syntax name, I.`LOCALS`_I)] -[visit_exp I.`LOCALS`_I] -[visit_exp I] -[visit_id I] not free -[visit_exp $disjoint_(syntax name, $concatopt_(syntax name, I.`LABELS`_I))] -[visit_exp $concatopt_(syntax name, I.`LABELS`_I)] -[visit_exp I.`LABELS`_I] -[visit_exp I] -[visit_id I] not free -[scope_enter field*] -[visit_exp $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))]))] -[visit_exp $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])] -[visit_exp [?(`%`_name(field*{field <- `field*`}))]] -[visit_exp ?(`%`_name(field*{field <- `field*`}))] -[visit_exp `%`_name(field*{field <- `field*`})] -[visit_exp (field*{field <- `field*`})] -[visit_exp field*{field <- `field*`}] -[scope_enter field] -[visit_exp field] -[visit_id field] not free -[visit_id field] not free -[scope_exit field] -[visit_exp `field*`] -[visit_id field*] not free -[visit_id field*] no dims -[visit_id field*] not free -[visit_id field*] no dims -[scope_exit field*] -[visit_exp `field**`] -[visit_id field**] no dims -[visit_id field**] -[visit_exp ([?(`%`_name(field*{field <- `field*`}))*{`field*` <- `field**`}] = I.`FIELDS`_I)] -[visit_exp [?(`%`_name(field*{field <- `field*`}))*{`field*` <- `field**`}]] -[visit_exp ?(`%`_name(field*{field <- `field*`}))*{`field*` <- `field**`}] -[scope_enter field*] -[visit_exp ?(`%`_name(field*{field <- `field*`}))] -[visit_exp `%`_name(field*{field <- `field*`})] -[visit_exp (field*{field <- `field*`})] -[visit_exp field*{field <- `field*`}] -[scope_enter field] -[visit_exp field] -[visit_id field] not free -[visit_id field] not free -[scope_exit field] -[visit_exp `field*`] -[visit_id field*] not free -[visit_id field*] no dims -[visit_id field*] not free -[visit_id field*] no dims -[scope_exit field*] -[visit_exp `field**`] -[visit_id field**] not free -[visit_id field**] no dims -[visit_exp I.`FIELDS`_I] -[visit_exp I] -[visit_id I] not free -ps' = (ids : name?*) -[check_dims] ids -[check_dims] ids x -dims \ ids = x -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[check_dims] id ids x -dims \ ids = id, x -[visit_exp x] -[visit_id x] -[visit_exp id] -[visit_id id] -[visit_exp (ids[x!`%`_idx.0] = ?(id))] -[visit_exp ids[x!`%`_idx.0]] -[visit_exp ids] -[visit_id ids] not free -[visit_id ids] no dims -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp ?(id)] -[visit_exp id] -[visit_id id] not free -[visit_id ids] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[visit_exp I.`TYPES`_I] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[visit_exp I.`TAGS`_I] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[visit_exp I.`GLOBALS`_I] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[visit_exp I.`MEMS`_I] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[visit_exp I.`TABLES`_I] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[visit_exp I.`FUNCS`_I] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[visit_exp I.`DATAS`_I] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[visit_exp I.`ELEMS`_I] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[visit_exp I.`LOCALS`_I] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[visit_exp I.`LABELS`_I] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I, x : idx) -[check_dims] I x -[check_dims] I x -dims \ I x = -[visit_exp ``] -[visit_id ] -[visit_exp ``] -[visit_id ] not free -[visit_exp I.`FIELDS`_I[x!`%`_idx.0]] -[visit_exp I.`FIELDS`_I] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_id x] no dims -[visit_id I] not free -[visit_id x] not free -ps' = (I : I) -[check_dims] I -[check_dims] I x -dims \ I = x -[visit_exp `TAG`_externidx(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I x -dims \ I = x -[visit_exp `GLOBAL`_externidx(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I x -dims \ I = x -[visit_exp `MEM`_externidx(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I x -dims \ I = x -[visit_exp `TABLE`_externidx(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I x -dims \ I = x -[visit_exp `FUNC`_externidx(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `I32`_numtype] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `I64`_numtype] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `F32`_numtype] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `F64`_numtype] -[visit_exp ()] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `V128`_vectype] -[visit_exp ()] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `ANY`_heaptype] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `EQ`_heaptype] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `I31`_heaptype] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `STRUCT`_heaptype] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `ARRAY`_heaptype] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `NONE`_heaptype] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `FUNC`_heaptype] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `NOFUNC`_heaptype] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `EXN`_heaptype] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `NOEXN`_heaptype] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `EXTERN`_heaptype] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `NOEXTERN`_heaptype] -[visit_exp ()] -ps' = (I : I) -[check_dims] I -[check_dims] I ht -dims \ I = ht -[visit_exp ht] -[visit_id ht] -[visit_exp ht] -[visit_id ht] not free -[check_dims] I x -dims \ I = x -[visit_exp `_IDX`_heaptype(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `NULL`_null] -[visit_exp ()] -ps' = (I : I) -[check_dims] I -[check_dims] I ht null -dims \ I = ht, null -[visit_exp `REF`_reftype(null?{null <- `null?`}, ht)] -[visit_exp (null?{null <- `null?`}, ht)] -[visit_exp null?{null <- `null?`}] -[scope_enter null] -[visit_exp null] -[visit_id null] not free -[visit_id null] not free -[scope_exit null] -[visit_exp `null?`] -[visit_id null?] no dims -[visit_id null?] -[visit_exp ht] -[visit_id ht] -[visit_exp null?{null <- `null?`}] -[scope_enter null] -[visit_exp null] -[visit_id null] not free -[visit_id null] not free -[scope_exit null] -[visit_exp `null?`] -[visit_id null?] not free -[visit_id null?] no dims -[visit_exp ht] -[visit_id ht] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -[check_dims] I -[check_dims] I -[check_dims] I -[check_dims] I -[check_dims] I -[check_dims] I -[check_dims] I -[check_dims] I -[check_dims] I -[check_dims] I -[check_dims] I -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I nt -dims \ I = nt -[visit_exp (nt : numtype <: valtype)] -[visit_exp nt] -[visit_id nt] -[visit_exp nt] -[visit_id nt] not free -[check_dims] I vt -dims \ I = vt -[visit_exp (vt : vectype <: valtype)] -[visit_exp vt] -[visit_id vt] -[visit_exp vt] -[visit_id vt] not free -[check_dims] I rt -dims \ I = rt -[visit_exp (rt : reftype <: valtype)] -[visit_exp rt] -[visit_id rt] -[visit_exp rt] -[visit_id rt] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `I8`_packtype] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `I16`_packtype] -[visit_exp ()] -ps' = (I : I) -[check_dims] I -[check_dims] I t -dims \ I = t -[visit_exp (t : valtype <: storagetype)] -[visit_exp t] -[visit_id t] -[visit_exp t] -[visit_id t] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I pt -dims \ I = pt -[visit_exp (pt : packtype <: storagetype)] -[visit_exp pt] -[visit_id pt] -[visit_exp pt] -[visit_id pt] not free -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I zt -dims \ I = zt -[visit_exp `%%`_fieldtype(?(), zt)] -[visit_exp (?(), zt)] -[visit_exp ?()] -[visit_exp zt] -[visit_id zt] -[visit_exp zt] -[visit_id zt] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I zt -dims \ I = zt -[visit_exp `%%`_fieldtype(?(`MUT`_mut), zt)] -[visit_exp (?(`MUT`_mut), zt)] -[visit_exp ?(`MUT`_mut)] -[visit_exp `MUT`_mut] -[visit_exp ()] -[visit_exp zt] -[visit_id zt] -[visit_exp zt] -[visit_id zt] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I _ -[check_dims] I ft id -dims \ I = ft, id -[visit_exp (ft, ?(`%`_name(lift(id?{id <- `id?`}))))] -[visit_exp ft] -[visit_id ft] -[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] -[visit_exp `%`_name(lift(id?{id <- `id?`}))] -[visit_exp (lift(id?{id <- `id?`}))] -[visit_exp lift(id?{id <- `id?`})] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] no dims -[visit_id id?] -[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] -[visit_exp `%`_name(lift(id?{id <- `id?`}))] -[visit_exp (lift(id?{id <- `id?`}))] -[visit_exp lift(id?{id <- `id?`})] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] not free -[visit_id id?] no dims -[visit_exp ft] -[visit_id ft] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit _] -ps' = (I : I) -[check_dims] I _ -[check_dims] I -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit _] -ps' = (I : I) -[check_dims] I _ -[check_dims] I id t -dims \ I = id, t -[visit_exp (t, ?(`%`_name(lift(id?{id <- `id?`}))))] -[visit_exp t] -[visit_id t] -[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] -[visit_exp `%`_name(lift(id?{id <- `id?`}))] -[visit_exp (lift(id?{id <- `id?`}))] -[visit_exp lift(id?{id <- `id?`})] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] no dims -[visit_id id?] -[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] -[visit_exp `%`_name(lift(id?{id <- `id?`}))] -[visit_exp (lift(id?{id <- `id?`}))] -[visit_exp lift(id?{id <- `id?`})] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] not free -[visit_id id?] no dims -[visit_exp t] -[visit_id t] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit _] -ps' = (I : I) -[check_dims] I _ -[check_dims] I -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit _] -ps' = (I : I) -[check_dims] I -[check_dims] I t -dims \ I = t -[visit_exp t] -[visit_id t] -[visit_exp t] -[visit_id t] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I _ -[check_dims] I _ ft id -dims \ I = _, ft, id -[visit_exp (`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` []})] -[visit_exp `STRUCT`_comptype(`%`_list(ft*{ft <- `ft*`}))] -[visit_exp (`%`_list(ft*{ft <- `ft*`}))] -[visit_exp `%`_list(ft*{ft <- `ft*`})] -[visit_exp (ft*{ft <- `ft*`})] -[visit_exp ft*{ft <- `ft*`}] -[scope_enter ft] -[visit_exp ft] -[visit_id ft] not free -[visit_id ft] not free -[scope_exit ft] -[visit_exp `ft*`] -[visit_id ft*] no dims -[visit_id ft*] -[visit_exp {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}], `TYPEDEFS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp [?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}]] -[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}] -[scope_enter id?] -[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] -[visit_exp `%`_name(lift(id?{id <- `id?`}))] -[visit_exp (lift(id?{id <- `id?`}))] -[visit_exp lift(id?{id <- `id?`})] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] not free -[visit_id id?] no dims -[visit_id id?] not free -[visit_id id?] no dims -[scope_exit id?] -[visit_exp `id?*`] -[visit_id id?*] no dims -[visit_id id?*] -[visit_exp []] -[visit_exp (ft, ?(`%`_name(lift(id?{id <- `id?`}))))*{ft <- `ft*`, `id?` <- `id?*`}] -[scope_enter ft] -[scope_enter id?] -[visit_exp (ft, ?(`%`_name(lift(id?{id <- `id?`}))))] -[visit_exp ft] -[visit_id ft] not free -[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] -[visit_exp `%`_name(lift(id?{id <- `id?`}))] -[visit_exp (lift(id?{id <- `id?`}))] -[visit_exp lift(id?{id <- `id?`})] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] not free -[visit_id id?] no dims -[visit_id ft] not free -[visit_id id?] not free -[visit_id id?] no dims -[scope_exit id?] -[scope_exit ft] -[visit_exp `ft*`] -[visit_id ft*] not free -[visit_id ft*] no dims -[visit_exp `id?*`] -[visit_id id?*] not free -[visit_id id?*] no dims -[scope_enter _] -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_exit _] -[scope_exit _] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I ft -dims \ I = ft -[visit_exp (`ARRAY`_comptype(ft), {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [], `TYPEDEFS` []})] -[visit_exp `ARRAY`_comptype(ft)] -[visit_exp (ft)] -[visit_exp ft] -[visit_id ft] -[visit_exp {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [], `TYPEDEFS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp ft] -[visit_id ft] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I _ id t_1 t_2 -dims \ I = _, id, t_1, t_2 -[visit_exp (`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` []})] -[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] no dims -[visit_id t_1*] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] no dims -[visit_id t_2*] -[visit_exp {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [], `TYPEDEFS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp (t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}] -[scope_enter id?] -[scope_enter t_1] -[visit_exp (t_1, ?(`%`_name(lift(id?{id <- `id?`}))))] -[visit_exp t_1] -[visit_id t_1] not free -[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] -[visit_exp `%`_name(lift(id?{id <- `id?`}))] -[visit_exp (lift(id?{id <- `id?`}))] -[visit_exp lift(id?{id <- `id?`})] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] not free -[visit_id id?] no dims -[visit_id id?] not free -[visit_id id?] no dims -[visit_id t_1] not free -[scope_exit t_1] -[scope_exit id?] -[visit_exp `id?*`] -[visit_id id?*] no dims -[visit_id id?*] -[visit_exp `t_1*`] -[visit_id t_1*] not free -[visit_id t_1*] no dims -[scope_enter _] -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_exit _] -[scope_exit _] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] not free -[visit_id t_2*] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit _] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `FINAL`_final] -[visit_exp ()] -ps' = (I : I) -[check_dims] I _ -[check_dims] I I' ct fin x -dims \ I = I', ct, fin, x -[visit_exp (`SUB`_subtype(fin?{fin <- `fin?`}, `_IDX`_typeuse(x)*{x <- `x*`}, ct), I')] -[visit_exp `SUB`_subtype(fin?{fin <- `fin?`}, `_IDX`_typeuse(x)*{x <- `x*`}, ct)] -[visit_exp (fin?{fin <- `fin?`}, `_IDX`_typeuse(x)*{x <- `x*`}, ct)] -[visit_exp fin?{fin <- `fin?`}] -[scope_enter fin] -[visit_exp fin] -[visit_id fin] not free -[visit_id fin] not free -[scope_exit fin] -[visit_exp `fin?`] -[visit_id fin?] no dims -[visit_id fin?] -[visit_exp `_IDX`_typeuse(x)*{x <- `x*`}] -[scope_enter x] -[visit_exp `_IDX`_typeuse(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] not free -[visit_id x] not free -[scope_exit x] -[visit_exp `x*`] -[visit_id x*] no dims -[visit_id x*] -[visit_exp ct] -[visit_id ct] -[visit_exp I'] -[visit_id I'] -[visit_exp fin?{fin <- `fin?`}] -[scope_enter fin] -[visit_exp fin] -[visit_id fin] not free -[visit_id fin] not free -[scope_exit fin] -[visit_exp `fin?`] -[visit_id fin?] not free -[visit_id fin?] no dims -[visit_exp x*{x <- `x*`}] -[scope_enter x] -[visit_exp x] -[visit_id x] not free -[visit_id x] not free -[scope_exit x] -[visit_exp `x*`] -[visit_id x*] not free -[visit_id x*] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp (ct, I')] -[visit_exp ct] -[visit_id ct] not free -[visit_exp I'] -[visit_id I'] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit _] -ps' = (I : I) -[check_dims] I _ -[check_dims] I -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit _] -ps' = (I : I) -[check_dims] I _ -[check_dims] I I' id st -dims \ I = I', id, st -[visit_exp (st, I' +++ {`TYPES` [?(`%`_name(lift(id?{id <- `id?`})))], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [], `TYPEDEFS` []})] -[visit_exp st] -[visit_id st] -[visit_exp I' +++ {`TYPES` [?(`%`_name(lift(id?{id <- `id?`})))], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [], `TYPEDEFS` []}] -[visit_exp I'] -[visit_id I'] -[visit_exp {`TYPES` [?(`%`_name(lift(id?{id <- `id?`})))], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [], `TYPEDEFS` []}] -[visit_exp [?(`%`_name(lift(id?{id <- `id?`})))]] -[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] -[visit_exp `%`_name(lift(id?{id <- `id?`}))] -[visit_exp (lift(id?{id <- `id?`}))] -[visit_exp lift(id?{id <- `id?`})] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] no dims -[visit_id id?] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] -[visit_exp `%`_name(lift(id?{id <- `id?`}))] -[visit_exp (lift(id?{id <- `id?`}))] -[visit_exp lift(id?{id <- `id?`})] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] not free -[visit_id id?] no dims -[visit_exp (st, I')] -[visit_exp st] -[visit_id st] not free -[visit_exp I'] -[visit_id I'] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit _] -ps' = (I : I) -[check_dims] I _ -[check_dims] I I' _ st -dims \ I = I', _, st -[visit_exp (`REC`_rectype(`%`_list(st*{st <- `st*`})), $concat_idctxt(I'*{I' <- `I'*`}))] -[visit_exp `REC`_rectype(`%`_list(st*{st <- `st*`}))] -[visit_exp (`%`_list(st*{st <- `st*`}))] -[visit_exp `%`_list(st*{st <- `st*`})] -[visit_exp (st*{st <- `st*`})] -[visit_exp st*{st <- `st*`}] -[scope_enter st] -[visit_exp st] -[visit_id st] not free -[visit_id st] not free -[scope_exit st] -[visit_exp `st*`] -[visit_id st*] no dims -[visit_id st*] -[visit_exp $concat_idctxt(I'*{I' <- `I'*`})] -[visit_exp I'*{I' <- `I'*`}] -[scope_enter I'] -[visit_exp I'] -[visit_id I'] not free -[visit_id I'] not free -[scope_exit I'] -[visit_exp `I'*`] -[visit_id I'*] no dims -[visit_id I'*] -[visit_exp (st, I')*{I' <- `I'*`, st <- `st*`}] -[scope_enter I'] -[scope_enter st] -[visit_exp (st, I')] -[visit_exp st] -[visit_id st] not free -[visit_exp I'] -[visit_id I'] not free -[visit_id I'] not free -[visit_id st] not free -[scope_exit st] -[scope_exit I'] -[visit_exp `I'*`] -[visit_id I'*] not free -[visit_id I'*] no dims -[visit_exp `st*`] -[visit_id st*] not free -[visit_id st*] no dims -[scope_enter _] -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_exit _] -[scope_exit _] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit _] -ps' = (I : I) -[check_dims] I _ -[check_dims] I -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit _] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp `I32`_addrtype] -[visit_exp ()] -[check_dims] -dims \ = -[visit_exp `I64`_addrtype] -[visit_exp ()] -ps' = -[check_dims] -[check_dims] -ps' = -[check_dims] -[check_dims] n -dims \ = n -[visit_exp `[%..%]`_limits(`%`_u64(n), ?())] -[visit_exp (`%`_u64(n), ?())] -[visit_exp `%`_u64(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp ?()] -[visit_exp `%`_u64(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] not free -[check_dims] m n -dims \ = m, n -[visit_exp `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))] -[visit_exp (`%`_u64(n), ?(`%`_u64(m)))] -[visit_exp `%`_u64(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp ?(`%`_u64(m))] -[visit_exp `%`_u64(m)] -[visit_exp (m)] -[visit_exp m] -[visit_id m] -[visit_exp `%`_u64(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] not free -[visit_exp `%`_u64(m)] -[visit_exp (m)] -[visit_exp m] -[visit_id m] not free -ps' = (I : I) -[check_dims] I -[check_dims] I I' x -dims \ I = I', x -[visit_exp `_IDX`_tagtype(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp (x, I')] -[visit_exp x] -[visit_id x] not free -[visit_exp I'] -[visit_id I'] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I t -dims \ I = t -[visit_exp `%%`_globaltype(?(), t)] -[visit_exp (?(), t)] -[visit_exp ?()] -[visit_exp t] -[visit_id t] -[visit_exp t] -[visit_id t] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I t -dims \ I = t -[visit_exp `%%`_globaltype(?(`MUT`_mut), t)] -[visit_exp (?(`MUT`_mut), t)] -[visit_exp ?(`MUT`_mut)] -[visit_exp `MUT`_mut] -[visit_exp ()] -[visit_exp t] -[visit_id t] -[visit_exp t] -[visit_id t] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I at lim -dims \ I = at, lim -[visit_exp `%%PAGE`_memtype(at, lim)] -[visit_exp (at, lim)] -[visit_exp at] -[visit_id at] -[visit_exp lim] -[visit_id lim] -[visit_exp at] -[visit_id at] not free -[visit_exp lim] -[visit_id lim] not free -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I at lim rt -dims \ I = at, lim, rt -[visit_exp `%%%`_tabletype(at, lim, rt)] -[visit_exp (at, lim, rt)] -[visit_exp at] -[visit_id at] -[visit_exp lim] -[visit_id lim] -[visit_exp rt] -[visit_id rt] -[visit_exp at] -[visit_id at] not free -[visit_exp lim] -[visit_id lim] not free -[visit_exp rt] -[visit_id rt] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I _ -[check_dims] I id jt -dims \ I = id, jt -[visit_exp (`TAG`_externtype(jt), {`TYPES` [], `TAGS` [?(`%`_name(lift(id?{id <- `id?`})))], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [], `TYPEDEFS` []})] -[visit_exp `TAG`_externtype(jt)] -[visit_exp (jt)] -[visit_exp jt] -[visit_id jt] -[visit_exp {`TYPES` [], `TAGS` [?(`%`_name(lift(id?{id <- `id?`})))], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [], `TYPEDEFS` []}] -[visit_exp []] -[visit_exp [?(`%`_name(lift(id?{id <- `id?`})))]] -[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] -[visit_exp `%`_name(lift(id?{id <- `id?`}))] -[visit_exp (lift(id?{id <- `id?`}))] -[visit_exp lift(id?{id <- `id?`})] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] no dims -[visit_id id?] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] -[visit_exp `%`_name(lift(id?{id <- `id?`}))] -[visit_exp (lift(id?{id <- `id?`}))] -[visit_exp lift(id?{id <- `id?`})] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] not free -[visit_id id?] no dims -[visit_exp jt] -[visit_id jt] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I gt id -dims \ I = gt, id -[visit_exp (`GLOBAL`_externtype(gt), {`TYPES` [], `TAGS` [], `GLOBALS` [?(`%`_name(lift(id?{id <- `id?`})))], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [], `TYPEDEFS` []})] -[visit_exp `GLOBAL`_externtype(gt)] -[visit_exp (gt)] -[visit_exp gt] -[visit_id gt] -[visit_exp {`TYPES` [], `TAGS` [], `GLOBALS` [?(`%`_name(lift(id?{id <- `id?`})))], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [], `TYPEDEFS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp [?(`%`_name(lift(id?{id <- `id?`})))]] -[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] -[visit_exp `%`_name(lift(id?{id <- `id?`}))] -[visit_exp (lift(id?{id <- `id?`}))] -[visit_exp lift(id?{id <- `id?`})] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] no dims -[visit_id id?] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] -[visit_exp `%`_name(lift(id?{id <- `id?`}))] -[visit_exp (lift(id?{id <- `id?`}))] -[visit_exp lift(id?{id <- `id?`})] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] not free -[visit_id id?] no dims -[visit_exp gt] -[visit_id gt] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I id mt -dims \ I = id, mt -[visit_exp (`MEM`_externtype(mt), {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [?(`%`_name(lift(id?{id <- `id?`})))], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [], `TYPEDEFS` []})] -[visit_exp `MEM`_externtype(mt)] -[visit_exp (mt)] -[visit_exp mt] -[visit_id mt] -[visit_exp {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [?(`%`_name(lift(id?{id <- `id?`})))], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [], `TYPEDEFS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp [?(`%`_name(lift(id?{id <- `id?`})))]] -[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] -[visit_exp `%`_name(lift(id?{id <- `id?`}))] -[visit_exp (lift(id?{id <- `id?`}))] -[visit_exp lift(id?{id <- `id?`})] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] no dims -[visit_id id?] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] -[visit_exp `%`_name(lift(id?{id <- `id?`}))] -[visit_exp (lift(id?{id <- `id?`}))] -[visit_exp lift(id?{id <- `id?`})] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] not free -[visit_id id?] no dims -[visit_exp mt] -[visit_id mt] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I id tt -dims \ I = id, tt -[visit_exp (`TABLE`_externtype(tt), {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [?(`%`_name(lift(id?{id <- `id?`})))], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [], `TYPEDEFS` []})] -[visit_exp `TABLE`_externtype(tt)] -[visit_exp (tt)] -[visit_exp tt] -[visit_id tt] -[visit_exp {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [?(`%`_name(lift(id?{id <- `id?`})))], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [], `TYPEDEFS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp [?(`%`_name(lift(id?{id <- `id?`})))]] -[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] -[visit_exp `%`_name(lift(id?{id <- `id?`}))] -[visit_exp (lift(id?{id <- `id?`}))] -[visit_exp lift(id?{id <- `id?`})] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] no dims -[visit_id id?] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] -[visit_exp `%`_name(lift(id?{id <- `id?`}))] -[visit_exp (lift(id?{id <- `id?`}))] -[visit_exp lift(id?{id <- `id?`})] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] not free -[visit_id id?] no dims -[visit_exp tt] -[visit_id tt] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I I' id x -dims \ I = I', id, x -[visit_exp (`FUNC`_externtype(`_IDX`_typeuse(x)), {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [?(`%`_name(lift(id?{id <- `id?`})))], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [], `TYPEDEFS` []})] -[visit_exp `FUNC`_externtype(`_IDX`_typeuse(x))] -[visit_exp (`_IDX`_typeuse(x))] -[visit_exp `_IDX`_typeuse(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [?(`%`_name(lift(id?{id <- `id?`})))], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [], `TYPEDEFS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp [?(`%`_name(lift(id?{id <- `id?`})))]] -[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] -[visit_exp `%`_name(lift(id?{id <- `id?`}))] -[visit_exp (lift(id?{id <- `id?`}))] -[visit_exp lift(id?{id <- `id?`})] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] no dims -[visit_id id?] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] -[visit_exp `%`_name(lift(id?{id <- `id?`}))] -[visit_exp (lift(id?{id <- `id?`}))] -[visit_exp lift(id?{id <- `id?`})] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] not free -[visit_id id?] no dims -[visit_exp (x, I')] -[visit_exp x] -[visit_id x] not free -[visit_exp I'] -[visit_id I'] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit _] -ps' = (I : I) -[check_dims] I _ -[check_dims] I I' i st t_1 t_2 x -dims \ I = I', i, st, t_1, t_2, x -[visit_exp (x, I')] -[visit_exp x] -[visit_id x] -[visit_exp I'] -[visit_id I'] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp (I.`TYPEDEFS`_I[x!`%`_idx.0] = ?(`_DEF`_deftype(`REC`_rectype(`%`_list(st*{st <- `st*`})), i)))] -[visit_exp I.`TYPEDEFS`_I[x!`%`_idx.0]] -[visit_exp I.`TYPEDEFS`_I] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp ?(`_DEF`_deftype(`REC`_rectype(`%`_list(st*{st <- `st*`})), i))] -[visit_exp `_DEF`_deftype(`REC`_rectype(`%`_list(st*{st <- `st*`})), i)] -[visit_exp (`REC`_rectype(`%`_list(st*{st <- `st*`})), i)] -[visit_exp `REC`_rectype(`%`_list(st*{st <- `st*`}))] -[visit_exp (`%`_list(st*{st <- `st*`}))] -[visit_exp `%`_list(st*{st <- `st*`})] -[visit_exp (st*{st <- `st*`})] -[visit_exp st*{st <- `st*`}] -[scope_enter st] -[visit_exp st] -[visit_id st] not free -[visit_id st] not free -[scope_exit st] -[visit_exp `st*`] -[visit_id st*] no dims -[visit_id st*] -[visit_exp i] -[visit_id i] -[visit_exp (st*{st <- `st*`}[i] = `SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))))] -[visit_exp st*{st <- `st*`}[i]] -[visit_exp st*{st <- `st*`}] -[scope_enter st] -[visit_exp st] -[visit_id st] not free -[visit_id st] not free -[scope_exit st] -[visit_exp `st*`] -[visit_id st*] not free -[visit_id st*] no dims -[visit_exp i] -[visit_id i] not free -[visit_exp `SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))] -[visit_exp (?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))] -[visit_exp ?(`FINAL`_final)] -[visit_exp `FINAL`_final] -[visit_exp ()] -[visit_exp []] -[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] no dims -[visit_id t_1*] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] no dims -[visit_id t_2*] -[visit_exp (I' = {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` ?(`%`_name([]))^|t_1*{t_1 <- `t_1*`}|{}, `LABELS` [], `FIELDS` [], `TYPEDEFS` []})] -[visit_exp I'] -[visit_id I'] not free -[visit_exp {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` ?(`%`_name([]))^|t_1*{t_1 <- `t_1*`}|{}, `LABELS` [], `FIELDS` [], `TYPEDEFS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp ?(`%`_name([]))^|t_1*{t_1 <- `t_1*`}|{}] -[visit_exp ?(`%`_name([]))] -[visit_exp `%`_name([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp |t_1*{t_1 <- `t_1*`}|] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] not free -[visit_id t_1*] no dims -[visit_exp []] -[visit_exp []] -[visit_exp []] -[check_dims] I I' i id st t_1 t_2 x -dims \ I = I', i, id, st, t_1, t_2, x -[visit_exp (x, I')] -[visit_exp x] -[visit_id x] -[visit_exp I'] -[visit_id I'] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp (t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}] -[scope_enter id?] -[scope_enter t_1] -[visit_exp (t_1, ?(`%`_name(lift(id?{id <- `id?`}))))] -[visit_exp t_1] -[visit_id t_1] not free -[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] -[visit_exp `%`_name(lift(id?{id <- `id?`}))] -[visit_exp (lift(id?{id <- `id?`}))] -[visit_exp lift(id?{id <- `id?`})] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] not free -[visit_id id?] no dims -[visit_id id?] not free -[visit_id id?] no dims -[visit_id t_1] not free -[scope_exit t_1] -[scope_exit id?] -[visit_exp `id?*`] -[visit_id id?*] no dims -[visit_id id?*] -[visit_exp `t_1*`] -[visit_id t_1*] no dims -[visit_id t_1*] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] no dims -[visit_id t_2*] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp (I.`TYPEDEFS`_I[x!`%`_idx.0] = ?(`_DEF`_deftype(`REC`_rectype(`%`_list(st*{st <- `st*`})), i)))] -[visit_exp I.`TYPEDEFS`_I[x!`%`_idx.0]] -[visit_exp I.`TYPEDEFS`_I] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp ?(`_DEF`_deftype(`REC`_rectype(`%`_list(st*{st <- `st*`})), i))] -[visit_exp `_DEF`_deftype(`REC`_rectype(`%`_list(st*{st <- `st*`})), i)] -[visit_exp (`REC`_rectype(`%`_list(st*{st <- `st*`})), i)] -[visit_exp `REC`_rectype(`%`_list(st*{st <- `st*`}))] -[visit_exp (`%`_list(st*{st <- `st*`}))] -[visit_exp `%`_list(st*{st <- `st*`})] -[visit_exp (st*{st <- `st*`})] -[visit_exp st*{st <- `st*`}] -[scope_enter st] -[visit_exp st] -[visit_id st] not free -[visit_id st] not free -[scope_exit st] -[visit_exp `st*`] -[visit_id st*] no dims -[visit_id st*] -[visit_exp i] -[visit_id i] -[visit_exp (st*{st <- `st*`}[i] = `SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))))] -[visit_exp st*{st <- `st*`}[i]] -[visit_exp st*{st <- `st*`}] -[scope_enter st] -[visit_exp st] -[visit_id st] not free -[visit_id st] not free -[scope_exit st] -[visit_exp `st*`] -[visit_id st*] not free -[visit_id st*] no dims -[visit_exp i] -[visit_id i] not free -[visit_exp `SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))] -[visit_exp (?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))] -[visit_exp ?(`FINAL`_final)] -[visit_exp `FINAL`_final] -[visit_exp ()] -[visit_exp []] -[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] not free -[visit_id t_1*] no dims -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] not free -[visit_id t_2*] no dims -[visit_exp (I' = {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` ?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}, `LABELS` [], `FIELDS` [], `TYPEDEFS` []})] -[visit_exp I'] -[visit_id I'] not free -[visit_exp {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` ?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}, `LABELS` [], `FIELDS` [], `TYPEDEFS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}] -[scope_enter id?] -[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] -[visit_exp `%`_name(lift(id?{id <- `id?`}))] -[visit_exp (lift(id?{id <- `id?`}))] -[visit_exp lift(id?{id <- `id?`})] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] not free -[visit_id id?] no dims -[visit_id id?] not free -[visit_id id?] no dims -[scope_exit id?] -[visit_exp `id?*`] -[visit_id id?*] not free -[visit_id id?*] no dims -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp I'] -[visit_id I'] not free -[visit_id I] not free -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit _] -ps' = (I : I) -[check_dims] I _ -[check_dims] I i id t_1 t_2 x -[visit_exp (t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}] -[scope_enter id?] -[scope_enter t_1] -[visit_exp (t_1, ?(`%`_name(lift(id?{id <- `id?`}))))] -[visit_exp t_1] -[visit_id t_1] not free -[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] -[visit_exp `%`_name(lift(id?{id <- `id?`}))] -[visit_exp (lift(id?{id <- `id?`}))] -[visit_exp lift(id?{id <- `id?`})] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] not free -[visit_id id?] no dims -[visit_id id?] not free -[visit_id id?] no dims -[visit_id t_1] not free -[scope_exit t_1] -[scope_exit id?] -[visit_exp `id?*`] -[visit_id id?*] no dims -[visit_id id?*] -[visit_exp `t_1*`] -[visit_id t_1*] no dims -[visit_id t_1*] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] no dims -[visit_id t_2*] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp x] -[visit_id x] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp (I.`TYPEDEFS`_I[x!`%`_idx.0] = ?(`_DEF`_deftype(`REC`_rectype(`%`_list([`SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))])), 0)))] -[visit_exp I.`TYPEDEFS`_I[x!`%`_idx.0]] -[visit_exp I.`TYPEDEFS`_I] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp ?(`_DEF`_deftype(`REC`_rectype(`%`_list([`SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))])), 0))] -[visit_exp `_DEF`_deftype(`REC`_rectype(`%`_list([`SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))])), 0)] -[visit_exp (`REC`_rectype(`%`_list([`SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))])), 0)] -[visit_exp `REC`_rectype(`%`_list([`SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))]))] -[visit_exp (`%`_list([`SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))]))] -[visit_exp `%`_list([`SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))])] -[visit_exp ([`SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))])] -[visit_exp [`SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))]] -[visit_exp `SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))] -[visit_exp (?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))] -[visit_exp ?(`FINAL`_final)] -[visit_exp `FINAL`_final] -[visit_exp ()] -[visit_exp []] -[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] not free -[visit_id t_1*] no dims -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] not free -[visit_id t_2*] no dims -[visit_exp 0] -[scope_enter i] -[visit_exp (I.`TYPEDEFS`_I[i] =/= ?(`_DEF`_deftype(`REC`_rectype(`%`_list([`SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))])), 0)))] -[visit_exp I.`TYPEDEFS`_I[i]] -[visit_exp I.`TYPEDEFS`_I] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp i] -[visit_id i] -[visit_exp ?(`_DEF`_deftype(`REC`_rectype(`%`_list([`SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))])), 0))] -[visit_exp `_DEF`_deftype(`REC`_rectype(`%`_list([`SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))])), 0)] -[visit_exp (`REC`_rectype(`%`_list([`SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))])), 0)] -[visit_exp `REC`_rectype(`%`_list([`SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))]))] -[visit_exp (`%`_list([`SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))]))] -[visit_exp `%`_list([`SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))])] -[visit_exp ([`SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))])] -[visit_exp [`SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))]] -[visit_exp `SUB`_subtype(?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))] -[visit_exp (?(`FINAL`_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})))] -[visit_exp ?(`FINAL`_final)] -[visit_exp `FINAL`_final] -[visit_exp ()] -[visit_exp []] -[visit_exp `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] not free -[visit_id t_1*] no dims -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] not free -[visit_id t_2*] no dims -[visit_exp 0] -[visit_id i] not free -[scope_exit i] -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_id I] not free -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit _] -ps' = (I : I) -[check_dims] I _ -[check_dims] I -dims \ I = -[visit_exp (?(), {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [], `TYPEDEFS` []} +++ I)] -[visit_exp ?()] -[visit_exp {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [], `TYPEDEFS` []} +++ I] -[visit_exp {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [], `TYPEDEFS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I id -dims \ I = id -[visit_exp (?(id), {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [?(id)], `FIELDS` [], `TYPEDEFS` []} +++ I)] -[visit_exp ?(id)] -[visit_exp id] -[visit_id id] -[visit_exp {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [?(id)], `FIELDS` [], `TYPEDEFS` []} +++ I] -[visit_exp {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [?(id)], `FIELDS` [], `TYPEDEFS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp [?(id)]] -[visit_exp ?(id)] -[visit_exp id] -[visit_id id] not free -[visit_exp []] -[visit_exp []] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp id] -[visit_id id] not free -[visit_exp ~ (?(id) <- I.`LABELS`_I)] -[visit_exp (?(id) <- I.`LABELS`_I)] -[visit_exp ?(id)] -[visit_exp id] -[visit_id id] not free -[visit_exp I.`LABELS`_I] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I id x -dims \ I = id, x -[visit_exp (?(id), {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [?(id)], `FIELDS` [], `TYPEDEFS` []} +++ I[`LABELS`_I[x!`%`_idx.0] = ?()])] -[visit_exp ?(id)] -[visit_exp id] -[visit_id id] -[visit_exp {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [?(id)], `FIELDS` [], `TYPEDEFS` []} +++ I[`LABELS`_I[x!`%`_idx.0] = ?()]] -[visit_exp {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [?(id)], `FIELDS` [], `TYPEDEFS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp [?(id)]] -[visit_exp ?(id)] -[visit_exp id] -[visit_id id] not free -[visit_exp []] -[visit_exp []] -[visit_exp I[`LABELS`_I[x!`%`_idx.0] = ?()]] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] -[visit_exp ?()] -[visit_exp id] -[visit_id id] not free -[visit_exp (?(id) = I.`LABELS`_I[x!`%`_idx.0])] -[visit_exp ?(id)] -[visit_exp id] -[visit_id id] not free -[visit_exp I.`LABELS`_I[x!`%`_idx.0]] -[visit_exp I.`LABELS`_I] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_id I] not free -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit _] -ps' = (I : I) -[check_dims] I -[check_dims] I in -dims \ I = in -[visit_exp in] -[visit_id in] -[visit_exp in] -[visit_id in] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I in -dims \ I = in -[visit_exp in] -[visit_id in] -[visit_exp in] -[visit_id in] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I in -dims \ I = in -[visit_exp in*{in <- `in*`}] -[scope_enter in] -[visit_exp in] -[visit_id in] not free -[visit_id in] not free -[scope_exit in] -[visit_exp `in*`] -[visit_id in*] no dims -[visit_id in*] -[visit_exp in*{in <- `in*`}] -[scope_enter in] -[visit_exp in] -[visit_id in] not free -[visit_id in] not free -[scope_exit in] -[visit_exp `in*`] -[visit_id in*] not free -[visit_id in*] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I in -dims \ I = in -[visit_exp $concat_(syntax instr, in*{in <- `in*`}*{`in*` <- `in**`})] -[visit_exp in*{in <- `in*`}*{`in*` <- `in**`}] -[scope_enter in*] -[visit_exp in*{in <- `in*`}] -[scope_enter in] -[visit_exp in] -[visit_id in] not free -[visit_id in] not free -[scope_exit in] -[visit_exp `in*`] -[visit_id in*] not free -[visit_id in*] no dims -[visit_id in*] not free -[visit_id in*] no dims -[scope_exit in*] -[visit_exp `in**`] -[visit_id in**] no dims -[visit_id in**] -[visit_exp in*{in <- `in*`}*{`in*` <- `in**`}] -[scope_enter in*] -[visit_exp in*{in <- `in*`}] -[scope_enter in] -[visit_exp in] -[visit_id in] not free -[visit_id in] not free -[scope_exit in] -[visit_exp `in*`] -[visit_id in*] not free -[visit_id in*] no dims -[visit_id in*] not free -[visit_id in*] no dims -[scope_exit in*] -[visit_exp `in**`] -[visit_id in**] not free -[visit_id in**] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I I' -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp I'] -[visit_id I'] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp I'] -[visit_id I'] not free -[check_dims] I I' -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp I'] -[visit_id I'] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp I'] -[visit_id I'] not free -[check_dims] I I' in_1 in_2 -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp in_1*{in_1 <- `in_1*`}] -[scope_enter in_1] -[visit_exp in_1] -[visit_id in_1] not free -[visit_id in_1] not free -[scope_exit in_1] -[visit_exp `in_1*`] -[visit_id in_1*] no dims -[visit_id in_1*] -[visit_exp I'] -[visit_id I'] -[scope_enter in_2*] -[visit_exp in_2*{in_2 <- `in_2*`}] -[scope_enter in_2] -[visit_exp in_2] -[visit_id in_2] not free -[visit_id in_2] not free -[scope_exit in_2] -[visit_exp `in_2*`] -[visit_id in_2*] not free -[visit_id in_2*] no dims -[visit_exp I'] -[visit_id I'] not free -[visit_id in_2*] not free -[visit_id in_2*] no dims -[scope_exit in_2*] -[visit_exp `in_2*?`] -[visit_id in_2*?] no dims -[visit_id in_2*?] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp in_1*{in_1 <- `in_1*`}] -[scope_enter in_1] -[visit_exp in_1] -[visit_id in_1] not free -[visit_id in_1] not free -[scope_exit in_1] -[visit_exp `in_1*`] -[visit_id in_1*] not free -[visit_id in_1*] no dims -[visit_exp I'] -[visit_id I'] not free -[scope_enter in_2*] -[visit_exp in_2*{in_2 <- `in_2*`}] -[scope_enter in_2] -[visit_exp in_2] -[visit_id in_2] not free -[visit_id in_2] not free -[scope_exit in_2] -[visit_exp `in_2*`] -[visit_id in_2*] not free -[visit_id in_2*] no dims -[visit_exp I'] -[visit_id I'] not free -[visit_id in_2*] not free -[visit_id in_2*] no dims -[scope_exit in_2*] -[visit_exp `in_2*?`] -[visit_id in_2*?] not free -[visit_id in_2*?] no dims -[check_dims] I I' -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp I'] -[visit_id I'] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp I'] -[visit_id I'] not free -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `UNREACHABLE`_instr] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `NOP`_instr] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `DROP`_instr] -[visit_exp ()] -[check_dims] I t -dims \ I = t -[visit_exp `SELECT`_instr(t*{t <- `t*`}?{`t*` <- `t*?`})] -[visit_exp (t*{t <- `t*`}?{`t*` <- `t*?`})] -[visit_exp t*{t <- `t*`}?{`t*` <- `t*?`}] -[scope_enter t*] -[visit_exp t*{t <- `t*`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] not free -[visit_id t*] no dims -[visit_id t*] not free -[visit_id t*] no dims -[scope_exit t*] -[visit_exp `t*?`] -[visit_id t*?] no dims -[visit_id t*?] -[scope_enter t*] -[visit_exp t*{t <- `t*`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t*`] -[visit_id t*] not free -[visit_id t*] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id t*] not free -[visit_id t*] no dims -[scope_exit t*] -[visit_exp `t*?`] -[visit_id t*?] not free -[visit_id t*?] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I t -dims \ I = t -[visit_exp `_RESULT`_blocktype(t?{t <- `t?`})] -[visit_exp (t?{t <- `t?`})] -[visit_exp t?{t <- `t?`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t?`] -[visit_id t?] no dims -[visit_id t?] -[visit_exp t?{t <- `t?`}] -[scope_enter t] -[visit_exp t] -[visit_id t] not free -[visit_id t] not free -[scope_exit t] -[visit_exp `t?`] -[visit_id t?] not free -[visit_id t?] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I I' x -dims \ I = I', x -[visit_exp `_IDX`_blocktype(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp (x, I')] -[visit_exp x] -[visit_id x] not free -[visit_exp I'] -[visit_id I'] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp (I' = {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` ?(`%`_name([]))*{}, `LABELS` [], `FIELDS` [], `TYPEDEFS` []})] -[visit_exp I'] -[visit_id I'] not free -[visit_exp {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` ?(`%`_name([]))*{}, `LABELS` [], `FIELDS` [], `TYPEDEFS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp ?(`%`_name([]))*{}] -[visit_exp ?(`%`_name([]))] -[visit_exp `%`_name([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I I' bt id id' in -dims \ I = I', bt, id, id', in -[visit_exp `BLOCK`_instr(bt, in*{in <- `in*`})] -[visit_exp (bt, in*{in <- `in*`})] -[visit_exp bt] -[visit_id bt] -[visit_exp in*{in <- `in*`}] -[scope_enter in] -[visit_exp in] -[visit_id in] not free -[visit_id in] not free -[scope_exit in] -[visit_exp `in*`] -[visit_id in*] no dims -[visit_id in*] -[visit_exp (?(`%`_name(lift(id?{id <- `id?`}))), I')] -[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] -[visit_exp `%`_name(lift(id?{id <- `id?`}))] -[visit_exp (lift(id?{id <- `id?`}))] -[visit_exp lift(id?{id <- `id?`})] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] no dims -[visit_id id?] -[visit_exp I'] -[visit_id I'] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp bt] -[visit_id bt] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp in*{in <- `in*`}] -[scope_enter in] -[visit_exp in] -[visit_id in] not free -[visit_id in] not free -[scope_exit in] -[visit_exp `in*`] -[visit_id in*] not free -[visit_id in*] no dims -[visit_exp I'] -[visit_id I'] not free -[visit_exp ?(`%`_name(lift(id'?{id' <- `id'?`})))] -[visit_exp `%`_name(lift(id'?{id' <- `id'?`}))] -[visit_exp (lift(id'?{id' <- `id'?`}))] -[visit_exp lift(id'?{id' <- `id'?`})] -[visit_exp id'?{id' <- `id'?`}] -[scope_enter id'] -[visit_exp id'] -[visit_id id'] not free -[visit_id id'] not free -[scope_exit id'] -[visit_exp `id'?`] -[visit_id id'?] no dims -[visit_id id'?] -[visit_exp ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`}))] -[visit_exp (id'?{id' <- `id'?`} = ?())] -[visit_exp id'?{id' <- `id'?`}] -[scope_enter id'] -[visit_exp id'] -[visit_id id'] not free -[visit_id id'] not free -[scope_exit id'] -[visit_exp `id'?`] -[visit_id id'?] not free -[visit_id id'?] no dims -[visit_exp ?()] -[visit_exp (id'?{id' <- `id'?`} = id?{id <- `id?`})] -[visit_exp id'?{id' <- `id'?`}] -[scope_enter id'] -[visit_exp id'] -[visit_id id'] not free -[visit_id id'] not free -[scope_exit id'] -[visit_exp `id'?`] -[visit_id id'?] not free -[visit_id id'?] no dims -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] not free -[visit_id id?] no dims -[check_dims] I I' bt id id' in -dims \ I = I', bt, id, id', in -[visit_exp `LOOP`_instr(bt, in*{in <- `in*`})] -[visit_exp (bt, in*{in <- `in*`})] -[visit_exp bt] -[visit_id bt] -[visit_exp in*{in <- `in*`}] -[scope_enter in] -[visit_exp in] -[visit_id in] not free -[visit_id in] not free -[scope_exit in] -[visit_exp `in*`] -[visit_id in*] no dims -[visit_id in*] -[visit_exp (?(`%`_name(lift(id?{id <- `id?`}))), I')] -[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] -[visit_exp `%`_name(lift(id?{id <- `id?`}))] -[visit_exp (lift(id?{id <- `id?`}))] -[visit_exp lift(id?{id <- `id?`})] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] no dims -[visit_id id?] -[visit_exp I'] -[visit_id I'] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp bt] -[visit_id bt] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp in*{in <- `in*`}] -[scope_enter in] -[visit_exp in] -[visit_id in] not free -[visit_id in] not free -[scope_exit in] -[visit_exp `in*`] -[visit_id in*] not free -[visit_id in*] no dims -[visit_exp I'] -[visit_id I'] not free -[visit_exp ?(`%`_name(lift(id'?{id' <- `id'?`})))] -[visit_exp `%`_name(lift(id'?{id' <- `id'?`}))] -[visit_exp (lift(id'?{id' <- `id'?`}))] -[visit_exp lift(id'?{id' <- `id'?`})] -[visit_exp id'?{id' <- `id'?`}] -[scope_enter id'] -[visit_exp id'] -[visit_id id'] not free -[visit_id id'] not free -[scope_exit id'] -[visit_exp `id'?`] -[visit_id id'?] no dims -[visit_id id'?] -[visit_exp ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`}))] -[visit_exp (id'?{id' <- `id'?`} = ?())] -[visit_exp id'?{id' <- `id'?`}] -[scope_enter id'] -[visit_exp id'] -[visit_id id'] not free -[visit_id id'] not free -[scope_exit id'] -[visit_exp `id'?`] -[visit_id id'?] not free -[visit_id id'?] no dims -[visit_exp ?()] -[visit_exp (id'?{id' <- `id'?`} = id?{id <- `id?`})] -[visit_exp id'?{id' <- `id'?`}] -[scope_enter id'] -[visit_exp id'] -[visit_id id'] not free -[visit_id id'] not free -[scope_exit id'] -[visit_exp `id'?`] -[visit_id id'?] not free -[visit_id id'?] no dims -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] not free -[visit_id id?] no dims -[check_dims] I I' bt id id_1 id_2 in_1 in_2 -dims \ I = I', bt, id, id_1, id_2, in_1, in_2 -[visit_exp `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`})] -[visit_exp (bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`})] -[visit_exp bt] -[visit_id bt] -[visit_exp in_1*{in_1 <- `in_1*`}] -[scope_enter in_1] -[visit_exp in_1] -[visit_id in_1] not free -[visit_id in_1] not free -[scope_exit in_1] -[visit_exp `in_1*`] -[visit_id in_1*] no dims -[visit_id in_1*] -[visit_exp in_2*{in_2 <- `in_2*`}] -[scope_enter in_2] -[visit_exp in_2] -[visit_id in_2] not free -[visit_id in_2] not free -[scope_exit in_2] -[visit_exp `in_2*`] -[visit_id in_2*] no dims -[visit_id in_2*] -[visit_exp (?(`%`_name(lift(id?{id <- `id?`}))), I')] -[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] -[visit_exp `%`_name(lift(id?{id <- `id?`}))] -[visit_exp (lift(id?{id <- `id?`}))] -[visit_exp lift(id?{id <- `id?`})] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] no dims -[visit_id id?] -[visit_exp I'] -[visit_id I'] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp bt] -[visit_id bt] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp in_1*{in_1 <- `in_1*`}] -[scope_enter in_1] -[visit_exp in_1] -[visit_id in_1] not free -[visit_id in_1] not free -[scope_exit in_1] -[visit_exp `in_1*`] -[visit_id in_1*] not free -[visit_id in_1*] no dims -[visit_exp I'] -[visit_id I'] not free -[visit_exp ?(`%`_name(lift(id_1?{id_1 <- `id_1?`})))] -[visit_exp `%`_name(lift(id_1?{id_1 <- `id_1?`}))] -[visit_exp (lift(id_1?{id_1 <- `id_1?`}))] -[visit_exp lift(id_1?{id_1 <- `id_1?`})] -[visit_exp id_1?{id_1 <- `id_1?`}] -[scope_enter id_1] -[visit_exp id_1] -[visit_id id_1] not free -[visit_id id_1] not free -[scope_exit id_1] -[visit_exp `id_1?`] -[visit_id id_1?] no dims -[visit_id id_1?] -[visit_exp in_2*{in_2 <- `in_2*`}] -[scope_enter in_2] -[visit_exp in_2] -[visit_id in_2] not free -[visit_id in_2] not free -[scope_exit in_2] -[visit_exp `in_2*`] -[visit_id in_2*] not free -[visit_id in_2*] no dims -[visit_exp I'] -[visit_id I'] not free -[visit_exp ?(`%`_name(lift(id_2?{id_2 <- `id_2?`})))] -[visit_exp `%`_name(lift(id_2?{id_2 <- `id_2?`}))] -[visit_exp (lift(id_2?{id_2 <- `id_2?`}))] -[visit_exp lift(id_2?{id_2 <- `id_2?`})] -[visit_exp id_2?{id_2 <- `id_2?`}] -[scope_enter id_2] -[visit_exp id_2] -[visit_id id_2] not free -[visit_id id_2] not free -[scope_exit id_2] -[visit_exp `id_2?`] -[visit_id id_2?] no dims -[visit_id id_2?] -[visit_exp (((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?`})))] -[visit_exp ((id_1?{id_1 <- `id_1?`} = ?()) \/ (id_1?{id_1 <- `id_1?`} = id?{id <- `id?`}))] -[visit_exp (id_1?{id_1 <- `id_1?`} = ?())] -[visit_exp id_1?{id_1 <- `id_1?`}] -[scope_enter id_1] -[visit_exp id_1] -[visit_id id_1] not free -[visit_id id_1] not free -[scope_exit id_1] -[visit_exp `id_1?`] -[visit_id id_1?] not free -[visit_id id_1?] no dims -[visit_exp ?()] -[visit_exp (id_1?{id_1 <- `id_1?`} = id?{id <- `id?`})] -[visit_exp id_1?{id_1 <- `id_1?`}] -[scope_enter id_1] -[visit_exp id_1] -[visit_id id_1] not free -[visit_id id_1] not free -[scope_exit id_1] -[visit_exp `id_1?`] -[visit_id id_1?] not free -[visit_id id_1?] no dims -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] not free -[visit_id id?] no dims -[visit_exp ((id_2?{id_2 <- `id_2?`} = ?()) \/ (id_2?{id_2 <- `id_2?`} = id?{id <- `id?`}))] -[visit_exp (id_2?{id_2 <- `id_2?`} = ?())] -[visit_exp id_2?{id_2 <- `id_2?`}] -[scope_enter id_2] -[visit_exp id_2] -[visit_id id_2] not free -[visit_id id_2] not free -[scope_exit id_2] -[visit_exp `id_2?`] -[visit_id id_2?] not free -[visit_id id_2?] no dims -[visit_exp ?()] -[visit_exp (id_2?{id_2 <- `id_2?`} = id?{id <- `id?`})] -[visit_exp id_2?{id_2 <- `id_2?`}] -[scope_enter id_2] -[visit_exp id_2] -[visit_id id_2] not free -[visit_id id_2] not free -[scope_exit id_2] -[visit_exp `id_2?`] -[visit_id id_2?] not free -[visit_id id_2?] no dims -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] not free -[visit_id id?] no dims -[check_dims] I I' bt c id id' in -dims \ I = I', bt, c, id, id', in -[visit_exp `TRY_TABLE`_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`})] -[visit_exp (bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`})] -[visit_exp bt] -[visit_id bt] -[visit_exp `%`_list(c*{c <- `c*`})] -[visit_exp (c*{c <- `c*`})] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] no dims -[visit_id c*] -[visit_exp in*{in <- `in*`}] -[scope_enter in] -[visit_exp in] -[visit_id in] not free -[visit_id in] not free -[scope_exit in] -[visit_exp `in*`] -[visit_id in*] no dims -[visit_id in*] -[visit_exp (?(`%`_name(lift(id?{id <- `id?`}))), I')] -[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] -[visit_exp `%`_name(lift(id?{id <- `id?`}))] -[visit_exp (lift(id?{id <- `id?`}))] -[visit_exp lift(id?{id <- `id?`})] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] no dims -[visit_id id?] -[visit_exp I'] -[visit_id I'] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp bt] -[visit_id bt] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp in*{in <- `in*`}] -[scope_enter in] -[visit_exp in] -[visit_id in] not free -[visit_id in] not free -[scope_exit in] -[visit_exp `in*`] -[visit_id in*] not free -[visit_id in*] no dims -[visit_exp I'] -[visit_id I'] not free -[visit_exp ?(`%`_name(lift(id'?{id' <- `id'?`})))] -[visit_exp `%`_name(lift(id'?{id' <- `id'?`}))] -[visit_exp (lift(id'?{id' <- `id'?`}))] -[visit_exp lift(id'?{id' <- `id'?`})] -[visit_exp id'?{id' <- `id'?`}] -[scope_enter id'] -[visit_exp id'] -[visit_id id'] not free -[visit_id id'] not free -[scope_exit id'] -[visit_exp `id'?`] -[visit_id id'?] no dims -[visit_id id'?] -[visit_exp ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`}))] -[visit_exp (id'?{id' <- `id'?`} = ?())] -[visit_exp id'?{id' <- `id'?`}] -[scope_enter id'] -[visit_exp id'] -[visit_id id'] not free -[visit_id id'] not free -[scope_exit id'] -[visit_exp `id'?`] -[visit_id id'?] not free -[visit_id id'?] no dims -[visit_exp ?()] -[visit_exp (id'?{id' <- `id'?`} = id?{id <- `id?`})] -[visit_exp id'?{id' <- `id'?`}] -[scope_enter id'] -[visit_exp id'] -[visit_id id'] not free -[visit_id id'] not free -[scope_exit id'] -[visit_exp `id'?`] -[visit_id id'?] not free -[visit_id id'?] no dims -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] not free -[visit_id id?] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I l x -dims \ I = l, x -[visit_exp `CATCH`_catch(x, l)] -[visit_exp (x, l)] -[visit_exp x] -[visit_id x] -[visit_exp l] -[visit_id l] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp l] -[visit_id l] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I l x -dims \ I = l, x -[visit_exp `CATCH_REF`_catch(x, l)] -[visit_exp (x, l)] -[visit_exp x] -[visit_id x] -[visit_exp l] -[visit_id l] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp l] -[visit_id l] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I l -dims \ I = l -[visit_exp `CATCH_ALL`_catch(l)] -[visit_exp (l)] -[visit_exp l] -[visit_id l] -[visit_exp l] -[visit_id l] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I l -dims \ I = l -[visit_exp `CATCH_ALL_REF`_catch(l)] -[visit_exp (l)] -[visit_exp l] -[visit_id l] -[visit_exp l] -[visit_id l] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I l -dims \ I = l -[visit_exp `BR`_instr(l)] -[visit_exp (l)] -[visit_exp l] -[visit_id l] -[visit_exp l] -[visit_id l] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I l -dims \ I = l -[visit_exp `BR_IF`_instr(l)] -[visit_exp (l)] -[visit_exp l] -[visit_id l] -[visit_exp l] -[visit_id l] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I l l' -dims \ I = l, l' -[visit_exp `BR_TABLE`_instr(l*{l <- `l*`}, l')] -[visit_exp (l*{l <- `l*`}, l')] -[visit_exp l*{l <- `l*`}] -[scope_enter l] -[visit_exp l] -[visit_id l] not free -[visit_id l] not free -[scope_exit l] -[visit_exp `l*`] -[visit_id l*] no dims -[visit_id l*] -[visit_exp l'] -[visit_id l'] -[visit_exp l*{l <- `l*`}] -[scope_enter l] -[visit_exp l] -[visit_id l] not free -[visit_id l] not free -[scope_exit l] -[visit_exp `l*`] -[visit_id l*] not free -[visit_id l*] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp l'] -[visit_id l'] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I l -dims \ I = l -[visit_exp `BR_ON_NULL`_instr(l)] -[visit_exp (l)] -[visit_exp l] -[visit_id l] -[visit_exp l] -[visit_id l] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I l -dims \ I = l -[visit_exp `BR_ON_NON_NULL`_instr(l)] -[visit_exp (l)] -[visit_exp l] -[visit_id l] -[visit_exp l] -[visit_id l] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I l rt_1 rt_2 -dims \ I = l, rt_1, rt_2 -[visit_exp `BR_ON_CAST`_instr(l, rt_1, rt_2)] -[visit_exp (l, rt_1, rt_2)] -[visit_exp l] -[visit_id l] -[visit_exp rt_1] -[visit_id rt_1] -[visit_exp rt_2] -[visit_id rt_2] -[visit_exp l] -[visit_id l] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp rt_1] -[visit_id rt_1] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp rt_2] -[visit_id rt_2] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I l rt_1 rt_2 -dims \ I = l, rt_1, rt_2 -[visit_exp `BR_ON_CAST_FAIL`_instr(l, rt_1, rt_2)] -[visit_exp (l, rt_1, rt_2)] -[visit_exp l] -[visit_id l] -[visit_exp rt_1] -[visit_id rt_1] -[visit_exp rt_2] -[visit_id rt_2] -[visit_exp l] -[visit_id l] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp rt_1] -[visit_id rt_1] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp rt_2] -[visit_id rt_2] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I x -dims \ I = x -[visit_exp `CALL`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I x -dims \ I = x -[visit_exp `CALL_REF`_instr(`_IDX`_typeuse(x))] -[visit_exp (`_IDX`_typeuse(x))] -[visit_exp `_IDX`_typeuse(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I I' x y -dims \ I = I', x, y -[visit_exp `CALL_INDIRECT`_instr(x, `_IDX`_typeuse(y))] -[visit_exp (x, `_IDX`_typeuse(y))] -[visit_exp x] -[visit_id x] -[visit_exp `_IDX`_typeuse(y)] -[visit_exp (y)] -[visit_exp y] -[visit_id y] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp (y, I')] -[visit_exp y] -[visit_id y] not free -[visit_exp I'] -[visit_id I'] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp (I' = {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` ?(`%`_name([]))*{}, `LABELS` [], `FIELDS` [], `TYPEDEFS` []})] -[visit_exp I'] -[visit_id I'] not free -[visit_exp {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` ?(`%`_name([]))*{}, `LABELS` [], `FIELDS` [], `TYPEDEFS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp ?(`%`_name([]))*{}] -[visit_exp ?(`%`_name([]))] -[visit_exp `%`_name([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[check_dims] I -dims \ I = -[visit_exp `RETURN`_instr] -[visit_exp ()] -[check_dims] I x -dims \ I = x -[visit_exp `RETURN_CALL`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I x -dims \ I = x -[visit_exp `RETURN_CALL_REF`_instr(`_IDX`_typeuse(x))] -[visit_exp (`_IDX`_typeuse(x))] -[visit_exp `_IDX`_typeuse(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I I' x y -dims \ I = I', x, y -[visit_exp `RETURN_CALL_INDIRECT`_instr(x, `_IDX`_typeuse(y))] -[visit_exp (x, `_IDX`_typeuse(y))] -[visit_exp x] -[visit_id x] -[visit_exp `_IDX`_typeuse(y)] -[visit_exp (y)] -[visit_exp y] -[visit_id y] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp (y, I')] -[visit_exp y] -[visit_id y] not free -[visit_exp I'] -[visit_id I'] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp (I' = {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` ?(`%`_name([]))*{}, `LABELS` [], `FIELDS` [], `TYPEDEFS` []})] -[visit_exp I'] -[visit_id I'] not free -[visit_exp {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` ?(`%`_name([]))*{}, `LABELS` [], `FIELDS` [], `TYPEDEFS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp ?(`%`_name([]))*{}] -[visit_exp ?(`%`_name([]))] -[visit_exp `%`_name([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I x -dims \ I = x -[visit_exp `THROW`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I -dims \ I = -[visit_exp `THROW_REF`_instr] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I x -dims \ I = x -[visit_exp `LOCAL.GET`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I x -dims \ I = x -[visit_exp `LOCAL.SET`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I x -dims \ I = x -[visit_exp `LOCAL.TEE`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I x -dims \ I = x -[visit_exp `GLOBAL.GET`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I x -dims \ I = x -[visit_exp `GLOBAL.SET`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I x -dims \ I = x -[visit_exp `TABLE.GET`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I x -dims \ I = x -[visit_exp `TABLE.SET`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I x -dims \ I = x -[visit_exp `TABLE.SIZE`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I x -dims \ I = x -[visit_exp `TABLE.GROW`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I x -dims \ I = x -[visit_exp `TABLE.FILL`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I x_1 x_2 -dims \ I = x_1, x_2 -[visit_exp `TABLE.COPY`_instr(x_1, x_2)] -[visit_exp (x_1, x_2)] -[visit_exp x_1] -[visit_id x_1] -[visit_exp x_2] -[visit_id x_2] -[visit_exp x_1] -[visit_id x_1] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp x_2] -[visit_id x_2] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I x y -dims \ I = x, y -[visit_exp `TABLE.INIT`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] -[visit_exp y] -[visit_id y] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp y] -[visit_id y] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -[check_dims] I -[check_dims] I -[check_dims] I -[check_dims] I -[check_dims] I -[check_dims] I -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I x -dims \ I = x -[visit_exp `ELEM.DROP`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (N : N) -[check_dims] N -[check_dims] N m n -dims \ N = m, n -[visit_exp {`ALIGN` `%`_u32(n), `OFFSET` `%`_u64(m)}] -[visit_exp `%`_u32(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `%`_u64(m)] -[visit_exp (m)] -[visit_exp m] -[visit_id m] -[visit_exp `%`_u64(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] not free -[visit_exp `%`_u64(m)] -[visit_exp (m)] -[visit_exp m] -[visit_id m] not free -[visit_exp N] -[visit_id N] not free -[visit_id N] no dims -[visit_id N] not free -ps' = -[check_dims] -[check_dims] n -dims \ = n -[visit_exp `%`_u64(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `%`_u64(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] not free -[check_dims] -dims \ = -[visit_exp `%`_u64(0)] -[visit_exp (0)] -[visit_exp 0] -ps' = (N : N) -[check_dims] N -[check_dims] N m n -dims \ N = m, n -[visit_exp `%`_u64(m)] -[visit_exp (m)] -[visit_exp m] -[visit_id m] -[visit_exp `%`_u64(m)] -[visit_exp (m)] -[visit_exp m] -[visit_id m] not free -[visit_exp (m = (2 ^ n))] -[visit_exp m] -[visit_id m] not free -[visit_exp (2 ^ n)] -[visit_exp 2] -[visit_exp n] -[visit_id n] -[check_dims] N -dims \ N = -[visit_exp `%`_u64(N)] -[visit_exp (N)] -[visit_exp N] -[visit_id N] not free -[visit_id N] no dims -[visit_id N] not free -ps' = -[check_dims] -[check_dims] i -dims \ = i -[visit_exp i] -[visit_id i] -[visit_exp i] -[visit_id i] not free -ps' = (I : I) -[check_dims] I -[check_dims] I ao x -dims \ I = ao, x -[visit_exp `LOAD`_instr(`I32`_numtype, ?(), x, ao)] -[visit_exp (`I32`_numtype, ?(), x, ao)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp ?()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 4] -[check_dims] I ao x -dims \ I = ao, x -[visit_exp `LOAD`_instr(`I64`_numtype, ?(), x, ao)] -[visit_exp (`I64`_numtype, ?(), x, ao)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp ?()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 8] -[check_dims] I ao x -dims \ I = ao, x -[visit_exp `LOAD`_instr(`F32`_numtype, ?(), x, ao)] -[visit_exp (`F32`_numtype, ?(), x, ao)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp ?()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 4] -[check_dims] I ao x -dims \ I = ao, x -[visit_exp `LOAD`_instr(`F64`_numtype, ?(), x, ao)] -[visit_exp (`F64`_numtype, ?(), x, ao)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp ?()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 8] -[check_dims] I ao x -dims \ I = ao, x -[visit_exp `LOAD`_instr(`I32`_numtype, ?(`%_%`_loadop_(`%`_sz(8), `S`_sx)), x, ao)] -[visit_exp (`I32`_numtype, ?(`%_%`_loadop_(`%`_sz(8), `S`_sx)), x, ao)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp ?(`%_%`_loadop_(`%`_sz(8), `S`_sx))] -[visit_exp `%_%`_loadop_(`%`_sz(8), `S`_sx)] -[visit_exp (`%`_sz(8), `S`_sx)] -[visit_exp `%`_sz(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 1] -[check_dims] I ao x -dims \ I = ao, x -[visit_exp `LOAD`_instr(`I32`_numtype, ?(`%_%`_loadop_(`%`_sz(8), `U`_sx)), x, ao)] -[visit_exp (`I32`_numtype, ?(`%_%`_loadop_(`%`_sz(8), `U`_sx)), x, ao)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp ?(`%_%`_loadop_(`%`_sz(8), `U`_sx))] -[visit_exp `%_%`_loadop_(`%`_sz(8), `U`_sx)] -[visit_exp (`%`_sz(8), `U`_sx)] -[visit_exp `%`_sz(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 1] -[check_dims] I ao x -dims \ I = ao, x -[visit_exp `LOAD`_instr(`I32`_numtype, ?(`%_%`_loadop_(`%`_sz(16), `S`_sx)), x, ao)] -[visit_exp (`I32`_numtype, ?(`%_%`_loadop_(`%`_sz(16), `S`_sx)), x, ao)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp ?(`%_%`_loadop_(`%`_sz(16), `S`_sx))] -[visit_exp `%_%`_loadop_(`%`_sz(16), `S`_sx)] -[visit_exp (`%`_sz(16), `S`_sx)] -[visit_exp `%`_sz(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 2] -[check_dims] I ao x -dims \ I = ao, x -[visit_exp `LOAD`_instr(`I32`_numtype, ?(`%_%`_loadop_(`%`_sz(16), `U`_sx)), x, ao)] -[visit_exp (`I32`_numtype, ?(`%_%`_loadop_(`%`_sz(16), `U`_sx)), x, ao)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp ?(`%_%`_loadop_(`%`_sz(16), `U`_sx))] -[visit_exp `%_%`_loadop_(`%`_sz(16), `U`_sx)] -[visit_exp (`%`_sz(16), `U`_sx)] -[visit_exp `%`_sz(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 2] -[check_dims] I ao x -dims \ I = ao, x -[visit_exp `LOAD`_instr(`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(8), `S`_sx)), x, ao)] -[visit_exp (`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(8), `S`_sx)), x, ao)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp ?(`%_%`_loadop_(`%`_sz(8), `S`_sx))] -[visit_exp `%_%`_loadop_(`%`_sz(8), `S`_sx)] -[visit_exp (`%`_sz(8), `S`_sx)] -[visit_exp `%`_sz(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 1] -[check_dims] I ao x -dims \ I = ao, x -[visit_exp `LOAD`_instr(`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(8), `U`_sx)), x, ao)] -[visit_exp (`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(8), `U`_sx)), x, ao)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp ?(`%_%`_loadop_(`%`_sz(8), `U`_sx))] -[visit_exp `%_%`_loadop_(`%`_sz(8), `U`_sx)] -[visit_exp (`%`_sz(8), `U`_sx)] -[visit_exp `%`_sz(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 1] -[check_dims] I ao x -dims \ I = ao, x -[visit_exp `LOAD`_instr(`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(16), `S`_sx)), x, ao)] -[visit_exp (`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(16), `S`_sx)), x, ao)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp ?(`%_%`_loadop_(`%`_sz(16), `S`_sx))] -[visit_exp `%_%`_loadop_(`%`_sz(16), `S`_sx)] -[visit_exp (`%`_sz(16), `S`_sx)] -[visit_exp `%`_sz(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 2] -[check_dims] I ao x -dims \ I = ao, x -[visit_exp `LOAD`_instr(`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(16), `U`_sx)), x, ao)] -[visit_exp (`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(16), `U`_sx)), x, ao)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp ?(`%_%`_loadop_(`%`_sz(16), `U`_sx))] -[visit_exp `%_%`_loadop_(`%`_sz(16), `U`_sx)] -[visit_exp (`%`_sz(16), `U`_sx)] -[visit_exp `%`_sz(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 2] -[check_dims] I ao x -dims \ I = ao, x -[visit_exp `LOAD`_instr(`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(32), `S`_sx)), x, ao)] -[visit_exp (`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(32), `S`_sx)), x, ao)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp ?(`%_%`_loadop_(`%`_sz(32), `S`_sx))] -[visit_exp `%_%`_loadop_(`%`_sz(32), `S`_sx)] -[visit_exp (`%`_sz(32), `S`_sx)] -[visit_exp `%`_sz(32)] -[visit_exp (32)] -[visit_exp 32] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 4] -[check_dims] I ao x -dims \ I = ao, x -[visit_exp `LOAD`_instr(`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(32), `U`_sx)), x, ao)] -[visit_exp (`I64`_numtype, ?(`%_%`_loadop_(`%`_sz(32), `U`_sx)), x, ao)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp ?(`%_%`_loadop_(`%`_sz(32), `U`_sx))] -[visit_exp `%_%`_loadop_(`%`_sz(32), `U`_sx)] -[visit_exp (`%`_sz(32), `U`_sx)] -[visit_exp `%`_sz(32)] -[visit_exp (32)] -[visit_exp 32] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 4] -[check_dims] I ao x -dims \ I = ao, x -[visit_exp `VLOAD`_instr(`V128`_vectype, ?(), x, ao)] -[visit_exp (`V128`_vectype, ?(), x, ao)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp ?()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 16] -[check_dims] I ao x -dims \ I = ao, x -[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, `S`_sx)), x, ao)] -[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, `S`_sx)), x, ao)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, `S`_sx))] -[visit_exp `SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, `S`_sx)] -[visit_exp (`%`_sz(8), 8, `S`_sx)] -[visit_exp `%`_sz(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp 8] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 8] -[check_dims] I ao x -dims \ I = ao, x -[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, `U`_sx)), x, ao)] -[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, `U`_sx)), x, ao)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, `U`_sx))] -[visit_exp `SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, `U`_sx)] -[visit_exp (`%`_sz(8), 8, `U`_sx)] -[visit_exp `%`_sz(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp 8] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 8] -[check_dims] I ao x -dims \ I = ao, x -[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, `S`_sx)), x, ao)] -[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, `S`_sx)), x, ao)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, `S`_sx))] -[visit_exp `SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, `S`_sx)] -[visit_exp (`%`_sz(16), 4, `S`_sx)] -[visit_exp `%`_sz(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp 4] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 8] -[check_dims] I ao x -dims \ I = ao, x -[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, `U`_sx)), x, ao)] -[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, `U`_sx)), x, ao)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, `U`_sx))] -[visit_exp `SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, `U`_sx)] -[visit_exp (`%`_sz(16), 4, `U`_sx)] -[visit_exp `%`_sz(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp 4] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 8] -[check_dims] I ao x -dims \ I = ao, x -[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, `S`_sx)), x, ao)] -[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, `S`_sx)), x, ao)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, `S`_sx))] -[visit_exp `SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, `S`_sx)] -[visit_exp (`%`_sz(32), 2, `S`_sx)] -[visit_exp `%`_sz(32)] -[visit_exp (32)] -[visit_exp 32] -[visit_exp 2] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 8] -[check_dims] I ao x -dims \ I = ao, x -[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, `U`_sx)), x, ao)] -[visit_exp (`V128`_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, `U`_sx)), x, ao)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, `U`_sx))] -[visit_exp `SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, `U`_sx)] -[visit_exp (`%`_sz(32), 2, `U`_sx)] -[visit_exp `%`_sz(32)] -[visit_exp (32)] -[visit_exp 32] -[visit_exp 2] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 8] -[check_dims] I ao x -dims \ I = ao, x -[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(8))), x, ao)] -[visit_exp (`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(8))), x, ao)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp ?(`SPLAT`_vloadop_(`%`_sz(8)))] -[visit_exp `SPLAT`_vloadop_(`%`_sz(8))] -[visit_exp (`%`_sz(8))] -[visit_exp `%`_sz(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 1] -[check_dims] I ao x -dims \ I = ao, x -[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(16))), x, ao)] -[visit_exp (`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(16))), x, ao)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp ?(`SPLAT`_vloadop_(`%`_sz(16)))] -[visit_exp `SPLAT`_vloadop_(`%`_sz(16))] -[visit_exp (`%`_sz(16))] -[visit_exp `%`_sz(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 2] -[check_dims] I ao x -dims \ I = ao, x -[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(32))), x, ao)] -[visit_exp (`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(32))), x, ao)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp ?(`SPLAT`_vloadop_(`%`_sz(32)))] -[visit_exp `SPLAT`_vloadop_(`%`_sz(32))] -[visit_exp (`%`_sz(32))] -[visit_exp `%`_sz(32)] -[visit_exp (32)] -[visit_exp 32] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 4] -[check_dims] I ao x -dims \ I = ao, x -[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(64))), x, ao)] -[visit_exp (`V128`_vectype, ?(`SPLAT`_vloadop_(`%`_sz(64))), x, ao)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp ?(`SPLAT`_vloadop_(`%`_sz(64)))] -[visit_exp `SPLAT`_vloadop_(`%`_sz(64))] -[visit_exp (`%`_sz(64))] -[visit_exp `%`_sz(64)] -[visit_exp (64)] -[visit_exp 64] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 8] -[check_dims] I ao x -dims \ I = ao, x -[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`ZERO`_vloadop_(`%`_sz(32))), x, ao)] -[visit_exp (`V128`_vectype, ?(`ZERO`_vloadop_(`%`_sz(32))), x, ao)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp ?(`ZERO`_vloadop_(`%`_sz(32)))] -[visit_exp `ZERO`_vloadop_(`%`_sz(32))] -[visit_exp (`%`_sz(32))] -[visit_exp `%`_sz(32)] -[visit_exp (32)] -[visit_exp 32] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 4] -[check_dims] I ao x -dims \ I = ao, x -[visit_exp `VLOAD`_instr(`V128`_vectype, ?(`ZERO`_vloadop_(`%`_sz(64))), x, ao)] -[visit_exp (`V128`_vectype, ?(`ZERO`_vloadop_(`%`_sz(64))), x, ao)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp ?(`ZERO`_vloadop_(`%`_sz(64)))] -[visit_exp `ZERO`_vloadop_(`%`_sz(64))] -[visit_exp (`%`_sz(64))] -[visit_exp `%`_sz(64)] -[visit_exp (64)] -[visit_exp 64] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 8] -[check_dims] I ao i x -dims \ I = ao, i, x -[visit_exp `VLOAD_LANE`_instr(`V128`_vectype, `%`_sz(8), x, ao, i)] -[visit_exp (`V128`_vectype, `%`_sz(8), x, ao, i)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp `%`_sz(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp i] -[visit_id i] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 1] -[visit_exp i] -[visit_id i] not free -[check_dims] I ao i x -dims \ I = ao, i, x -[visit_exp `VLOAD_LANE`_instr(`V128`_vectype, `%`_sz(16), x, ao, i)] -[visit_exp (`V128`_vectype, `%`_sz(16), x, ao, i)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp `%`_sz(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp i] -[visit_id i] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 2] -[visit_exp i] -[visit_id i] not free -[check_dims] I ao i x -dims \ I = ao, i, x -[visit_exp `VLOAD_LANE`_instr(`V128`_vectype, `%`_sz(32), x, ao, i)] -[visit_exp (`V128`_vectype, `%`_sz(32), x, ao, i)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp `%`_sz(32)] -[visit_exp (32)] -[visit_exp 32] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp i] -[visit_id i] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 4] -[visit_exp i] -[visit_id i] not free -[check_dims] I ao i x -dims \ I = ao, i, x -[visit_exp `VLOAD_LANE`_instr(`V128`_vectype, `%`_sz(64), x, ao, i)] -[visit_exp (`V128`_vectype, `%`_sz(64), x, ao, i)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp `%`_sz(64)] -[visit_exp (64)] -[visit_exp 64] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp i] -[visit_id i] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 8] -[visit_exp i] -[visit_id i] not free -[check_dims] I ao x -dims \ I = ao, x -[visit_exp `STORE`_instr(`I32`_numtype, ?(), x, ao)] -[visit_exp (`I32`_numtype, ?(), x, ao)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp ?()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 4] -[check_dims] I ao x -dims \ I = ao, x -[visit_exp `STORE`_instr(`I64`_numtype, ?(), x, ao)] -[visit_exp (`I64`_numtype, ?(), x, ao)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp ?()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 8] -[check_dims] I ao x -dims \ I = ao, x -[visit_exp `STORE`_instr(`F32`_numtype, ?(), x, ao)] -[visit_exp (`F32`_numtype, ?(), x, ao)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp ?()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 4] -[check_dims] I ao x -dims \ I = ao, x -[visit_exp `STORE`_instr(`F64`_numtype, ?(), x, ao)] -[visit_exp (`F64`_numtype, ?(), x, ao)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp ?()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 8] -[check_dims] I ao x -dims \ I = ao, x -[visit_exp `STORE`_instr(`I32`_numtype, ?(`%`_storeop_(`%`_sz(8))), x, ao)] -[visit_exp (`I32`_numtype, ?(`%`_storeop_(`%`_sz(8))), x, ao)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp ?(`%`_storeop_(`%`_sz(8)))] -[visit_exp `%`_storeop_(`%`_sz(8))] -[visit_exp (`%`_sz(8))] -[visit_exp `%`_sz(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 1] -[check_dims] I ao x -dims \ I = ao, x -[visit_exp `STORE`_instr(`I32`_numtype, ?(`%`_storeop_(`%`_sz(16))), x, ao)] -[visit_exp (`I32`_numtype, ?(`%`_storeop_(`%`_sz(16))), x, ao)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp ?(`%`_storeop_(`%`_sz(16)))] -[visit_exp `%`_storeop_(`%`_sz(16))] -[visit_exp (`%`_sz(16))] -[visit_exp `%`_sz(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 2] -[check_dims] I ao x -dims \ I = ao, x -[visit_exp `STORE`_instr(`I64`_numtype, ?(`%`_storeop_(`%`_sz(8))), x, ao)] -[visit_exp (`I64`_numtype, ?(`%`_storeop_(`%`_sz(8))), x, ao)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp ?(`%`_storeop_(`%`_sz(8)))] -[visit_exp `%`_storeop_(`%`_sz(8))] -[visit_exp (`%`_sz(8))] -[visit_exp `%`_sz(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 1] -[check_dims] I ao x -dims \ I = ao, x -[visit_exp `STORE`_instr(`I64`_numtype, ?(`%`_storeop_(`%`_sz(16))), x, ao)] -[visit_exp (`I64`_numtype, ?(`%`_storeop_(`%`_sz(16))), x, ao)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp ?(`%`_storeop_(`%`_sz(16)))] -[visit_exp `%`_storeop_(`%`_sz(16))] -[visit_exp (`%`_sz(16))] -[visit_exp `%`_sz(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 2] -[check_dims] I ao x -dims \ I = ao, x -[visit_exp `STORE`_instr(`I64`_numtype, ?(`%`_storeop_(`%`_sz(32))), x, ao)] -[visit_exp (`I64`_numtype, ?(`%`_storeop_(`%`_sz(32))), x, ao)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp ?(`%`_storeop_(`%`_sz(32)))] -[visit_exp `%`_storeop_(`%`_sz(32))] -[visit_exp (`%`_sz(32))] -[visit_exp `%`_sz(32)] -[visit_exp (32)] -[visit_exp 32] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 4] -[check_dims] I ao x -dims \ I = ao, x -[visit_exp `VSTORE`_instr(`V128`_vectype, x, ao)] -[visit_exp (`V128`_vectype, x, ao)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 16] -[check_dims] I ao i x -dims \ I = ao, i, x -[visit_exp `VSTORE_LANE`_instr(`V128`_vectype, `%`_sz(8), x, ao, i)] -[visit_exp (`V128`_vectype, `%`_sz(8), x, ao, i)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp `%`_sz(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp i] -[visit_id i] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 1] -[visit_exp i] -[visit_id i] not free -[check_dims] I ao i x -dims \ I = ao, i, x -[visit_exp `VSTORE_LANE`_instr(`V128`_vectype, `%`_sz(16), x, ao, i)] -[visit_exp (`V128`_vectype, `%`_sz(16), x, ao, i)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp `%`_sz(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp i] -[visit_id i] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 2] -[visit_exp i] -[visit_id i] not free -[check_dims] I ao i x -dims \ I = ao, i, x -[visit_exp `VSTORE_LANE`_instr(`V128`_vectype, `%`_sz(32), x, ao, i)] -[visit_exp (`V128`_vectype, `%`_sz(32), x, ao, i)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp `%`_sz(32)] -[visit_exp (32)] -[visit_exp 32] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp i] -[visit_id i] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 4] -[visit_exp i] -[visit_id i] not free -[check_dims] I ao i x -dims \ I = ao, i, x -[visit_exp `VSTORE_LANE`_instr(`V128`_vectype, `%`_sz(64), x, ao, i)] -[visit_exp (`V128`_vectype, `%`_sz(64), x, ao, i)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp `%`_sz(64)] -[visit_exp (64)] -[visit_exp 64] -[visit_exp x] -[visit_id x] -[visit_exp ao] -[visit_id ao] -[visit_exp i] -[visit_id i] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ao] -[visit_id ao] not free -[visit_exp 8] -[visit_exp i] -[visit_id i] not free -[check_dims] I x -dims \ I = x -[visit_exp `MEMORY.SIZE`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I x -dims \ I = x -[visit_exp `MEMORY.GROW`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I x -dims \ I = x -[visit_exp `MEMORY.FILL`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I x_1 x_2 -dims \ I = x_1, x_2 -[visit_exp `MEMORY.COPY`_instr(x_1, x_2)] -[visit_exp (x_1, x_2)] -[visit_exp x_1] -[visit_id x_1] -[visit_exp x_2] -[visit_id x_2] -[visit_exp x_1] -[visit_id x_1] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp x_2] -[visit_id x_2] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I x y -dims \ I = x, y -[visit_exp `MEMORY.INIT`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] -[visit_exp y] -[visit_id y] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp y] -[visit_id y] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -[visit_exp 4] -[visit_exp 4] -[check_dims] I -[visit_exp 8] -[visit_exp 8] -[check_dims] I -[visit_exp 4] -[visit_exp 4] -[check_dims] I -[visit_exp 8] -[visit_exp 8] -[check_dims] I -[visit_exp 1] -[visit_exp 1] -[check_dims] I -[visit_exp 1] -[visit_exp 1] -[check_dims] I -[visit_exp 2] -[visit_exp 2] -[check_dims] I -[visit_exp 2] -[visit_exp 2] -[check_dims] I -[visit_exp 1] -[visit_exp 1] -[check_dims] I -[visit_exp 1] -[visit_exp 1] -[check_dims] I -[visit_exp 2] -[visit_exp 2] -[check_dims] I -[visit_exp 2] -[visit_exp 2] -[check_dims] I -[visit_exp 4] -[visit_exp 4] -[check_dims] I -[visit_exp 4] -[visit_exp 4] -[check_dims] I -[visit_exp 16] -[visit_exp 16] -[check_dims] I -[visit_exp 8] -[visit_exp 8] -[check_dims] I -[visit_exp 8] -[visit_exp 8] -[check_dims] I -[visit_exp 8] -[visit_exp 8] -[check_dims] I -[visit_exp 8] -[visit_exp 8] -[check_dims] I -[visit_exp 8] -[visit_exp 8] -[check_dims] I -[visit_exp 8] -[visit_exp 8] -[check_dims] I -[visit_exp 1] -[visit_exp 1] -[check_dims] I -[visit_exp 2] -[visit_exp 2] -[check_dims] I -[visit_exp 4] -[visit_exp 4] -[check_dims] I -[visit_exp 8] -[visit_exp 8] -[check_dims] I -[visit_exp 4] -[visit_exp 4] -[check_dims] I -[visit_exp 8] -[visit_exp 8] -[check_dims] I -[visit_exp 1] -[visit_exp 1] -[check_dims] I -[visit_exp 2] -[visit_exp 2] -[check_dims] I -[visit_exp 4] -[visit_exp 4] -[check_dims] I -[visit_exp 8] -[visit_exp 8] -[check_dims] I -[visit_exp 4] -[visit_exp 4] -[check_dims] I -[visit_exp 8] -[visit_exp 8] -[check_dims] I -[visit_exp 4] -[visit_exp 4] -[check_dims] I -[visit_exp 8] -[visit_exp 8] -[check_dims] I -[visit_exp 1] -[visit_exp 1] -[check_dims] I -[visit_exp 2] -[visit_exp 2] -[check_dims] I -[visit_exp 1] -[visit_exp 1] -[check_dims] I -[visit_exp 2] -[visit_exp 2] -[check_dims] I -[visit_exp 4] -[visit_exp 4] -[check_dims] I -[visit_exp 16] -[visit_exp 16] -[check_dims] I -[visit_exp 1] -[visit_exp 1] -[check_dims] I -[visit_exp 2] -[visit_exp 1] -[check_dims] I -[visit_exp 4] -[visit_exp 1] -[check_dims] I -[visit_exp 8] -[visit_exp 1] -[check_dims] I -[check_dims] I -[check_dims] I -[check_dims] I -[check_dims] I -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I x -dims \ I = x -[visit_exp `DATA.DROP`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I ht -dims \ I = ht -[visit_exp `REF.NULL`_instr(ht)] -[visit_exp (ht)] -[visit_exp ht] -[visit_id ht] -[visit_exp ht] -[visit_id ht] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I x -dims \ I = x -[visit_exp `REF.FUNC`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I -dims \ I = -[visit_exp `REF.IS_NULL`_instr] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `REF.AS_NON_NULL`_instr] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `REF.EQ`_instr] -[visit_exp ()] -[check_dims] I rt -dims \ I = rt -[visit_exp `REF.TEST`_instr(rt)] -[visit_exp (rt)] -[visit_exp rt] -[visit_id rt] -[visit_exp rt] -[visit_id rt] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I rt -dims \ I = rt -[visit_exp `REF.CAST`_instr(rt)] -[visit_exp (rt)] -[visit_exp rt] -[visit_id rt] -[visit_exp rt] -[visit_id rt] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `REF.I31`_instr] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `I31.GET`_instr(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `I31.GET`_instr(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I x -dims \ I = x -[visit_exp `STRUCT.NEW`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I x -dims \ I = x -[visit_exp `STRUCT.NEW_DEFAULT`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I i x -dims \ I = i, x -[visit_exp `STRUCT.GET`_instr(?(), x, i)] -[visit_exp (?(), x, i)] -[visit_exp ?()] -[visit_exp x] -[visit_id x] -[visit_exp i] -[visit_id i] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp i] -[visit_id i] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp x] -[visit_id x] not free -[check_dims] I i x -dims \ I = i, x -[visit_exp `STRUCT.GET`_instr(?(`S`_sx), x, i)] -[visit_exp (?(`S`_sx), x, i)] -[visit_exp ?(`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp i] -[visit_id i] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp i] -[visit_id i] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp x] -[visit_id x] not free -[check_dims] I i x -dims \ I = i, x -[visit_exp `STRUCT.GET`_instr(?(`U`_sx), x, i)] -[visit_exp (?(`U`_sx), x, i)] -[visit_exp ?(`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp i] -[visit_id i] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp i] -[visit_id i] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp x] -[visit_id x] not free -[check_dims] I i x -dims \ I = i, x -[visit_exp `STRUCT.SET`_instr(x, i)] -[visit_exp (x, i)] -[visit_exp x] -[visit_id x] -[visit_exp i] -[visit_id i] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp i] -[visit_id i] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp x] -[visit_id x] not free -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I x -dims \ I = x -[visit_exp `ARRAY.NEW`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I x -dims \ I = x -[visit_exp `ARRAY.NEW_DEFAULT`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I n x -dims \ I = n, x -[visit_exp `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n))] -[visit_exp (x, `%`_u32(n))] -[visit_exp x] -[visit_id x] -[visit_exp `%`_u32(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp `%`_u32(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] not free -[check_dims] I x y -dims \ I = x, y -[visit_exp `ARRAY.NEW_DATA`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] -[visit_exp y] -[visit_id y] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp y] -[visit_id y] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I x y -dims \ I = x, y -[visit_exp `ARRAY.NEW_ELEM`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] -[visit_exp y] -[visit_id y] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp y] -[visit_id y] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I x -dims \ I = x -[visit_exp `ARRAY.GET`_instr(?(), x)] -[visit_exp (?(), x)] -[visit_exp ?()] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I x -dims \ I = x -[visit_exp `ARRAY.GET`_instr(?(`S`_sx), x)] -[visit_exp (?(`S`_sx), x)] -[visit_exp ?(`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I x -dims \ I = x -[visit_exp `ARRAY.GET`_instr(?(`U`_sx), x)] -[visit_exp (?(`U`_sx), x)] -[visit_exp ?(`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I x -dims \ I = x -[visit_exp `ARRAY.SET`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I -dims \ I = -[visit_exp `ARRAY.LEN`_instr] -[visit_exp ()] -[check_dims] I x -dims \ I = x -[visit_exp `ARRAY.FILL`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I x_1 x_2 -dims \ I = x_1, x_2 -[visit_exp `ARRAY.COPY`_instr(x_1, x_2)] -[visit_exp (x_1, x_2)] -[visit_exp x_1] -[visit_id x_1] -[visit_exp x_2] -[visit_id x_2] -[visit_exp x_1] -[visit_id x_1] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp x_2] -[visit_id x_2] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I x y -dims \ I = x, y -[visit_exp `ARRAY.INIT_DATA`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] -[visit_exp y] -[visit_id y] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp y] -[visit_id y] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I x y -dims \ I = x, y -[visit_exp `ARRAY.INIT_ELEM`_instr(x, y)] -[visit_exp (x, y)] -[visit_exp x] -[visit_id x] -[visit_exp y] -[visit_id y] -[visit_exp x] -[visit_id x] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp y] -[visit_id y] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `ANY.CONVERT_EXTERN`_instr] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `EXTERN.CONVERT_ANY`_instr] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I c -dims \ I = c -[visit_exp `CONST`_instr(`I32`_numtype, c)] -[visit_exp (`I32`_numtype, c)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp c] -[visit_id c] -[visit_exp c] -[visit_id c] not free -[check_dims] I c -dims \ I = c -[visit_exp `CONST`_instr(`I64`_numtype, c)] -[visit_exp (`I64`_numtype, c)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp c] -[visit_id c] -[visit_exp c] -[visit_id c] not free -[check_dims] I c -dims \ I = c -[visit_exp `CONST`_instr(`F32`_numtype, c)] -[visit_exp (`F32`_numtype, c)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp c] -[visit_id c] -[visit_exp c] -[visit_id c] not free -[check_dims] I c -dims \ I = c -[visit_exp `CONST`_instr(`F64`_numtype, c)] -[visit_exp (`F64`_numtype, c)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp c] -[visit_id c] -[visit_exp c] -[visit_id c] not free -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `TESTOP`_instr(`I32`_numtype, `EQZ`_testop_)] -[visit_exp (`I32`_numtype, `EQZ`_testop_)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `EQZ`_testop_] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `TESTOP`_instr(`I64`_numtype, `EQZ`_testop_)] -[visit_exp (`I64`_numtype, `EQZ`_testop_)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `EQZ`_testop_] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `RELOP`_instr(`I32`_numtype, `EQ`_relop_)] -[visit_exp (`I32`_numtype, `EQ`_relop_)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `EQ`_relop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `RELOP`_instr(`I32`_numtype, `NE`_relop_)] -[visit_exp (`I32`_numtype, `NE`_relop_)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `NE`_relop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `RELOP`_instr(`I32`_numtype, `LT`_relop_(`S`_sx))] -[visit_exp (`I32`_numtype, `LT`_relop_(`S`_sx))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `LT`_relop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `RELOP`_instr(`I32`_numtype, `LT`_relop_(`U`_sx))] -[visit_exp (`I32`_numtype, `LT`_relop_(`U`_sx))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `LT`_relop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `RELOP`_instr(`I32`_numtype, `GT`_relop_(`S`_sx))] -[visit_exp (`I32`_numtype, `GT`_relop_(`S`_sx))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `GT`_relop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `RELOP`_instr(`I32`_numtype, `GT`_relop_(`U`_sx))] -[visit_exp (`I32`_numtype, `GT`_relop_(`U`_sx))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `GT`_relop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `RELOP`_instr(`I32`_numtype, `LE`_relop_(`S`_sx))] -[visit_exp (`I32`_numtype, `LE`_relop_(`S`_sx))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `LE`_relop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `RELOP`_instr(`I32`_numtype, `LE`_relop_(`U`_sx))] -[visit_exp (`I32`_numtype, `LE`_relop_(`U`_sx))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `LE`_relop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `RELOP`_instr(`I32`_numtype, `GE`_relop_(`S`_sx))] -[visit_exp (`I32`_numtype, `GE`_relop_(`S`_sx))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `GE`_relop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `RELOP`_instr(`I32`_numtype, `GE`_relop_(`U`_sx))] -[visit_exp (`I32`_numtype, `GE`_relop_(`U`_sx))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `GE`_relop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `RELOP`_instr(`I64`_numtype, `EQ`_relop_)] -[visit_exp (`I64`_numtype, `EQ`_relop_)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `EQ`_relop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `RELOP`_instr(`I64`_numtype, `NE`_relop_)] -[visit_exp (`I64`_numtype, `NE`_relop_)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `NE`_relop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `RELOP`_instr(`I64`_numtype, `LT`_relop_(`S`_sx))] -[visit_exp (`I64`_numtype, `LT`_relop_(`S`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `LT`_relop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `RELOP`_instr(`I64`_numtype, `LT`_relop_(`U`_sx))] -[visit_exp (`I64`_numtype, `LT`_relop_(`U`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `LT`_relop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `RELOP`_instr(`I64`_numtype, `GT`_relop_(`S`_sx))] -[visit_exp (`I64`_numtype, `GT`_relop_(`S`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `GT`_relop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `RELOP`_instr(`I64`_numtype, `GT`_relop_(`U`_sx))] -[visit_exp (`I64`_numtype, `GT`_relop_(`U`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `GT`_relop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `RELOP`_instr(`I64`_numtype, `LE`_relop_(`S`_sx))] -[visit_exp (`I64`_numtype, `LE`_relop_(`S`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `LE`_relop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `RELOP`_instr(`I64`_numtype, `LE`_relop_(`U`_sx))] -[visit_exp (`I64`_numtype, `LE`_relop_(`U`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `LE`_relop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `RELOP`_instr(`I64`_numtype, `GE`_relop_(`S`_sx))] -[visit_exp (`I64`_numtype, `GE`_relop_(`S`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `GE`_relop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `RELOP`_instr(`I64`_numtype, `GE`_relop_(`U`_sx))] -[visit_exp (`I64`_numtype, `GE`_relop_(`U`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `GE`_relop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `RELOP`_instr(`F32`_numtype, `EQ`_relop_)] -[visit_exp (`F32`_numtype, `EQ`_relop_)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `EQ`_relop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `RELOP`_instr(`F32`_numtype, `NE`_relop_)] -[visit_exp (`F32`_numtype, `NE`_relop_)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `NE`_relop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `RELOP`_instr(`F32`_numtype, `LT`_relop_)] -[visit_exp (`F32`_numtype, `LT`_relop_)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `LT`_relop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `RELOP`_instr(`F32`_numtype, `GT`_relop_)] -[visit_exp (`F32`_numtype, `GT`_relop_)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `GT`_relop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `RELOP`_instr(`F32`_numtype, `LE`_relop_)] -[visit_exp (`F32`_numtype, `LE`_relop_)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `LE`_relop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `RELOP`_instr(`F32`_numtype, `GE`_relop_)] -[visit_exp (`F32`_numtype, `GE`_relop_)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `GE`_relop_] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `RELOP`_instr(`F64`_numtype, `EQ`_relop_)] -[visit_exp (`F64`_numtype, `EQ`_relop_)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `EQ`_relop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `RELOP`_instr(`F64`_numtype, `NE`_relop_)] -[visit_exp (`F64`_numtype, `NE`_relop_)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `NE`_relop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `RELOP`_instr(`F64`_numtype, `LT`_relop_)] -[visit_exp (`F64`_numtype, `LT`_relop_)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `LT`_relop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `RELOP`_instr(`F64`_numtype, `GT`_relop_)] -[visit_exp (`F64`_numtype, `GT`_relop_)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `GT`_relop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `RELOP`_instr(`F64`_numtype, `LE`_relop_)] -[visit_exp (`F64`_numtype, `LE`_relop_)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `LE`_relop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `RELOP`_instr(`F64`_numtype, `GE`_relop_)] -[visit_exp (`F64`_numtype, `GE`_relop_)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `GE`_relop_] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `UNOP`_instr(`I32`_numtype, `CLZ`_unop_)] -[visit_exp (`I32`_numtype, `CLZ`_unop_)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `CLZ`_unop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `UNOP`_instr(`I32`_numtype, `CTZ`_unop_)] -[visit_exp (`I32`_numtype, `CTZ`_unop_)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `CTZ`_unop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `UNOP`_instr(`I32`_numtype, `POPCNT`_unop_)] -[visit_exp (`I32`_numtype, `POPCNT`_unop_)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `POPCNT`_unop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `UNOP`_instr(`I32`_numtype, `EXTEND`_unop_(`%`_sz(8)))] -[visit_exp (`I32`_numtype, `EXTEND`_unop_(`%`_sz(8)))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `EXTEND`_unop_(`%`_sz(8))] -[visit_exp (`%`_sz(8))] -[visit_exp `%`_sz(8)] -[visit_exp (8)] -[visit_exp 8] -[check_dims] I -dims \ I = -[visit_exp `UNOP`_instr(`I32`_numtype, `EXTEND`_unop_(`%`_sz(16)))] -[visit_exp (`I32`_numtype, `EXTEND`_unop_(`%`_sz(16)))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `EXTEND`_unop_(`%`_sz(16))] -[visit_exp (`%`_sz(16))] -[visit_exp `%`_sz(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `UNOP`_instr(`I64`_numtype, `CLZ`_unop_)] -[visit_exp (`I64`_numtype, `CLZ`_unop_)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `CLZ`_unop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `UNOP`_instr(`I64`_numtype, `CTZ`_unop_)] -[visit_exp (`I64`_numtype, `CTZ`_unop_)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `CTZ`_unop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `UNOP`_instr(`I64`_numtype, `POPCNT`_unop_)] -[visit_exp (`I64`_numtype, `POPCNT`_unop_)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `POPCNT`_unop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `UNOP`_instr(`I64`_numtype, `EXTEND`_unop_(`%`_sz(8)))] -[visit_exp (`I64`_numtype, `EXTEND`_unop_(`%`_sz(8)))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `EXTEND`_unop_(`%`_sz(8))] -[visit_exp (`%`_sz(8))] -[visit_exp `%`_sz(8)] -[visit_exp (8)] -[visit_exp 8] -[check_dims] I -dims \ I = -[visit_exp `UNOP`_instr(`I64`_numtype, `EXTEND`_unop_(`%`_sz(16)))] -[visit_exp (`I64`_numtype, `EXTEND`_unop_(`%`_sz(16)))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `EXTEND`_unop_(`%`_sz(16))] -[visit_exp (`%`_sz(16))] -[visit_exp `%`_sz(16)] -[visit_exp (16)] -[visit_exp 16] -[check_dims] I -dims \ I = -[visit_exp `UNOP`_instr(`I64`_numtype, `EXTEND`_unop_(`%`_sz(32)))] -[visit_exp (`I64`_numtype, `EXTEND`_unop_(`%`_sz(32)))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `EXTEND`_unop_(`%`_sz(32))] -[visit_exp (`%`_sz(32))] -[visit_exp `%`_sz(32)] -[visit_exp (32)] -[visit_exp 32] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `UNOP`_instr(`F32`_numtype, `ABS`_unop_)] -[visit_exp (`F32`_numtype, `ABS`_unop_)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `ABS`_unop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `UNOP`_instr(`F32`_numtype, `NEG`_unop_)] -[visit_exp (`F32`_numtype, `NEG`_unop_)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `NEG`_unop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `UNOP`_instr(`F32`_numtype, `SQRT`_unop_)] -[visit_exp (`F32`_numtype, `SQRT`_unop_)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `SQRT`_unop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `UNOP`_instr(`F32`_numtype, `CEIL`_unop_)] -[visit_exp (`F32`_numtype, `CEIL`_unop_)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `CEIL`_unop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `UNOP`_instr(`F32`_numtype, `FLOOR`_unop_)] -[visit_exp (`F32`_numtype, `FLOOR`_unop_)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `FLOOR`_unop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `UNOP`_instr(`F32`_numtype, `TRUNC`_unop_)] -[visit_exp (`F32`_numtype, `TRUNC`_unop_)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `TRUNC`_unop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `UNOP`_instr(`F32`_numtype, `NEAREST`_unop_)] -[visit_exp (`F32`_numtype, `NEAREST`_unop_)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `NEAREST`_unop_] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `UNOP`_instr(`F64`_numtype, `ABS`_unop_)] -[visit_exp (`F64`_numtype, `ABS`_unop_)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `ABS`_unop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `UNOP`_instr(`F64`_numtype, `NEG`_unop_)] -[visit_exp (`F64`_numtype, `NEG`_unop_)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `NEG`_unop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `UNOP`_instr(`F64`_numtype, `SQRT`_unop_)] -[visit_exp (`F64`_numtype, `SQRT`_unop_)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `SQRT`_unop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `UNOP`_instr(`F64`_numtype, `CEIL`_unop_)] -[visit_exp (`F64`_numtype, `CEIL`_unop_)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `CEIL`_unop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `UNOP`_instr(`F64`_numtype, `FLOOR`_unop_)] -[visit_exp (`F64`_numtype, `FLOOR`_unop_)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `FLOOR`_unop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `UNOP`_instr(`F64`_numtype, `TRUNC`_unop_)] -[visit_exp (`F64`_numtype, `TRUNC`_unop_)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `TRUNC`_unop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `UNOP`_instr(`F64`_numtype, `NEAREST`_unop_)] -[visit_exp (`F64`_numtype, `NEAREST`_unop_)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `NEAREST`_unop_] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `BINOP`_instr(`I32`_numtype, `ADD`_binop_)] -[visit_exp (`I32`_numtype, `ADD`_binop_)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `ADD`_binop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `BINOP`_instr(`I32`_numtype, `SUB`_binop_)] -[visit_exp (`I32`_numtype, `SUB`_binop_)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `SUB`_binop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `BINOP`_instr(`I32`_numtype, `MUL`_binop_)] -[visit_exp (`I32`_numtype, `MUL`_binop_)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `MUL`_binop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `BINOP`_instr(`I32`_numtype, `DIV`_binop_(`S`_sx))] -[visit_exp (`I32`_numtype, `DIV`_binop_(`S`_sx))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `DIV`_binop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `BINOP`_instr(`I32`_numtype, `DIV`_binop_(`U`_sx))] -[visit_exp (`I32`_numtype, `DIV`_binop_(`U`_sx))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `DIV`_binop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `BINOP`_instr(`I32`_numtype, `REM`_binop_(`S`_sx))] -[visit_exp (`I32`_numtype, `REM`_binop_(`S`_sx))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `REM`_binop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `BINOP`_instr(`I32`_numtype, `REM`_binop_(`U`_sx))] -[visit_exp (`I32`_numtype, `REM`_binop_(`U`_sx))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `REM`_binop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `BINOP`_instr(`I32`_numtype, `AND`_binop_)] -[visit_exp (`I32`_numtype, `AND`_binop_)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `AND`_binop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `BINOP`_instr(`I32`_numtype, `OR`_binop_)] -[visit_exp (`I32`_numtype, `OR`_binop_)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `OR`_binop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `BINOP`_instr(`I32`_numtype, `XOR`_binop_)] -[visit_exp (`I32`_numtype, `XOR`_binop_)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `XOR`_binop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `BINOP`_instr(`I32`_numtype, `SHL`_binop_)] -[visit_exp (`I32`_numtype, `SHL`_binop_)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `SHL`_binop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `BINOP`_instr(`I32`_numtype, `SHR`_binop_(`S`_sx))] -[visit_exp (`I32`_numtype, `SHR`_binop_(`S`_sx))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `SHR`_binop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `BINOP`_instr(`I32`_numtype, `SHR`_binop_(`U`_sx))] -[visit_exp (`I32`_numtype, `SHR`_binop_(`U`_sx))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `SHR`_binop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `BINOP`_instr(`I32`_numtype, `ROTL`_binop_)] -[visit_exp (`I32`_numtype, `ROTL`_binop_)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `ROTL`_binop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `BINOP`_instr(`I32`_numtype, `ROTR`_binop_)] -[visit_exp (`I32`_numtype, `ROTR`_binop_)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `ROTR`_binop_] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `BINOP`_instr(`I64`_numtype, `ADD`_binop_)] -[visit_exp (`I64`_numtype, `ADD`_binop_)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `ADD`_binop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `BINOP`_instr(`I64`_numtype, `SUB`_binop_)] -[visit_exp (`I64`_numtype, `SUB`_binop_)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `SUB`_binop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `BINOP`_instr(`I64`_numtype, `MUL`_binop_)] -[visit_exp (`I64`_numtype, `MUL`_binop_)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `MUL`_binop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `BINOP`_instr(`I64`_numtype, `DIV`_binop_(`S`_sx))] -[visit_exp (`I64`_numtype, `DIV`_binop_(`S`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `DIV`_binop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `BINOP`_instr(`I64`_numtype, `DIV`_binop_(`U`_sx))] -[visit_exp (`I64`_numtype, `DIV`_binop_(`U`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `DIV`_binop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `BINOP`_instr(`I64`_numtype, `REM`_binop_(`S`_sx))] -[visit_exp (`I64`_numtype, `REM`_binop_(`S`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `REM`_binop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `BINOP`_instr(`I64`_numtype, `REM`_binop_(`U`_sx))] -[visit_exp (`I64`_numtype, `REM`_binop_(`U`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `REM`_binop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `BINOP`_instr(`I64`_numtype, `AND`_binop_)] -[visit_exp (`I64`_numtype, `AND`_binop_)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `AND`_binop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `BINOP`_instr(`I64`_numtype, `OR`_binop_)] -[visit_exp (`I64`_numtype, `OR`_binop_)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `OR`_binop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `BINOP`_instr(`I64`_numtype, `XOR`_binop_)] -[visit_exp (`I64`_numtype, `XOR`_binop_)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `XOR`_binop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `BINOP`_instr(`I64`_numtype, `SHL`_binop_)] -[visit_exp (`I64`_numtype, `SHL`_binop_)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `SHL`_binop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `BINOP`_instr(`I64`_numtype, `SHR`_binop_(`S`_sx))] -[visit_exp (`I64`_numtype, `SHR`_binop_(`S`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `SHR`_binop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `BINOP`_instr(`I64`_numtype, `SHR`_binop_(`U`_sx))] -[visit_exp (`I64`_numtype, `SHR`_binop_(`U`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `SHR`_binop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `BINOP`_instr(`I64`_numtype, `ROTL`_binop_)] -[visit_exp (`I64`_numtype, `ROTL`_binop_)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `ROTL`_binop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `BINOP`_instr(`I64`_numtype, `ROTR`_binop_)] -[visit_exp (`I64`_numtype, `ROTR`_binop_)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `ROTR`_binop_] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `BINOP`_instr(`F32`_numtype, `ADD`_binop_)] -[visit_exp (`F32`_numtype, `ADD`_binop_)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `ADD`_binop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `BINOP`_instr(`F32`_numtype, `SUB`_binop_)] -[visit_exp (`F32`_numtype, `SUB`_binop_)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `SUB`_binop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `BINOP`_instr(`F32`_numtype, `MUL`_binop_)] -[visit_exp (`F32`_numtype, `MUL`_binop_)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `MUL`_binop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `BINOP`_instr(`F32`_numtype, `DIV`_binop_)] -[visit_exp (`F32`_numtype, `DIV`_binop_)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `DIV`_binop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `BINOP`_instr(`F32`_numtype, `MIN`_binop_)] -[visit_exp (`F32`_numtype, `MIN`_binop_)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `MIN`_binop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `BINOP`_instr(`F32`_numtype, `MAX`_binop_)] -[visit_exp (`F32`_numtype, `MAX`_binop_)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `MAX`_binop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `BINOP`_instr(`F32`_numtype, `COPYSIGN`_binop_)] -[visit_exp (`F32`_numtype, `COPYSIGN`_binop_)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `COPYSIGN`_binop_] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `BINOP`_instr(`F64`_numtype, `ADD`_binop_)] -[visit_exp (`F64`_numtype, `ADD`_binop_)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `ADD`_binop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `BINOP`_instr(`F64`_numtype, `SUB`_binop_)] -[visit_exp (`F64`_numtype, `SUB`_binop_)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `SUB`_binop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `BINOP`_instr(`F64`_numtype, `MUL`_binop_)] -[visit_exp (`F64`_numtype, `MUL`_binop_)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `MUL`_binop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `BINOP`_instr(`F64`_numtype, `DIV`_binop_)] -[visit_exp (`F64`_numtype, `DIV`_binop_)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `DIV`_binop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `BINOP`_instr(`F64`_numtype, `MIN`_binop_)] -[visit_exp (`F64`_numtype, `MIN`_binop_)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `MIN`_binop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `BINOP`_instr(`F64`_numtype, `MAX`_binop_)] -[visit_exp (`F64`_numtype, `MAX`_binop_)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `MAX`_binop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `BINOP`_instr(`F64`_numtype, `COPYSIGN`_binop_)] -[visit_exp (`F64`_numtype, `COPYSIGN`_binop_)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `COPYSIGN`_binop_] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `CVTOP`_instr(`I32`_numtype, `I64`_numtype, `WRAP`_cvtop__)] -[visit_exp (`I32`_numtype, `I64`_numtype, `WRAP`_cvtop__)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `WRAP`_cvtop__] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `CVTOP`_instr(`I32`_numtype, `F32`_numtype, `TRUNC`_cvtop__(`S`_sx))] -[visit_exp (`I32`_numtype, `F32`_numtype, `TRUNC`_cvtop__(`S`_sx))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `TRUNC`_cvtop__(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `CVTOP`_instr(`I32`_numtype, `F32`_numtype, `TRUNC`_cvtop__(`U`_sx))] -[visit_exp (`I32`_numtype, `F32`_numtype, `TRUNC`_cvtop__(`U`_sx))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `TRUNC`_cvtop__(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `CVTOP`_instr(`I32`_numtype, `F64`_numtype, `TRUNC`_cvtop__(`S`_sx))] -[visit_exp (`I32`_numtype, `F64`_numtype, `TRUNC`_cvtop__(`S`_sx))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `TRUNC`_cvtop__(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `CVTOP`_instr(`I32`_numtype, `F64`_numtype, `TRUNC`_cvtop__(`U`_sx))] -[visit_exp (`I32`_numtype, `F64`_numtype, `TRUNC`_cvtop__(`U`_sx))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `TRUNC`_cvtop__(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `CVTOP`_instr(`I32`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__(`S`_sx))] -[visit_exp (`I32`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__(`S`_sx))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `TRUNC_SAT`_cvtop__(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `CVTOP`_instr(`I32`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__(`U`_sx))] -[visit_exp (`I32`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__(`U`_sx))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `TRUNC_SAT`_cvtop__(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `CVTOP`_instr(`I32`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__(`S`_sx))] -[visit_exp (`I32`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__(`S`_sx))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `TRUNC_SAT`_cvtop__(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `CVTOP`_instr(`I32`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__(`U`_sx))] -[visit_exp (`I32`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__(`U`_sx))] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `TRUNC_SAT`_cvtop__(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `CVTOP`_instr(`I64`_numtype, `I64`_numtype, `EXTEND`_cvtop__(`S`_sx))] -[visit_exp (`I64`_numtype, `I64`_numtype, `EXTEND`_cvtop__(`S`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `EXTEND`_cvtop__(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `CVTOP`_instr(`I64`_numtype, `I64`_numtype, `EXTEND`_cvtop__(`U`_sx))] -[visit_exp (`I64`_numtype, `I64`_numtype, `EXTEND`_cvtop__(`U`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `EXTEND`_cvtop__(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `CVTOP`_instr(`I64`_numtype, `F32`_numtype, `TRUNC`_cvtop__(`S`_sx))] -[visit_exp (`I64`_numtype, `F32`_numtype, `TRUNC`_cvtop__(`S`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `TRUNC`_cvtop__(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `CVTOP`_instr(`I64`_numtype, `F32`_numtype, `TRUNC`_cvtop__(`U`_sx))] -[visit_exp (`I64`_numtype, `F32`_numtype, `TRUNC`_cvtop__(`U`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `TRUNC`_cvtop__(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `CVTOP`_instr(`I64`_numtype, `F64`_numtype, `TRUNC`_cvtop__(`S`_sx))] -[visit_exp (`I64`_numtype, `F64`_numtype, `TRUNC`_cvtop__(`S`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `TRUNC`_cvtop__(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `CVTOP`_instr(`I64`_numtype, `F64`_numtype, `TRUNC`_cvtop__(`U`_sx))] -[visit_exp (`I64`_numtype, `F64`_numtype, `TRUNC`_cvtop__(`U`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `TRUNC`_cvtop__(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `CVTOP`_instr(`I64`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__(`S`_sx))] -[visit_exp (`I64`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__(`S`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `TRUNC_SAT`_cvtop__(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `CVTOP`_instr(`I64`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__(`U`_sx))] -[visit_exp (`I64`_numtype, `F32`_numtype, `TRUNC_SAT`_cvtop__(`U`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `TRUNC_SAT`_cvtop__(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `CVTOP`_instr(`I64`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__(`S`_sx))] -[visit_exp (`I64`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__(`S`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `TRUNC_SAT`_cvtop__(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `CVTOP`_instr(`I64`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__(`U`_sx))] -[visit_exp (`I64`_numtype, `F64`_numtype, `TRUNC_SAT`_cvtop__(`U`_sx))] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `TRUNC_SAT`_cvtop__(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `CVTOP`_instr(`F32`_numtype, `F64`_numtype, `DEMOTE`_cvtop__)] -[visit_exp (`F32`_numtype, `F64`_numtype, `DEMOTE`_cvtop__)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `DEMOTE`_cvtop__] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `CVTOP`_instr(`F32`_numtype, `I32`_numtype, `CONVERT`_cvtop__(`S`_sx))] -[visit_exp (`F32`_numtype, `I32`_numtype, `CONVERT`_cvtop__(`S`_sx))] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `CONVERT`_cvtop__(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `CVTOP`_instr(`F32`_numtype, `I32`_numtype, `CONVERT`_cvtop__(`U`_sx))] -[visit_exp (`F32`_numtype, `I32`_numtype, `CONVERT`_cvtop__(`U`_sx))] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `CONVERT`_cvtop__(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `CVTOP`_instr(`F32`_numtype, `I64`_numtype, `CONVERT`_cvtop__(`S`_sx))] -[visit_exp (`F32`_numtype, `I64`_numtype, `CONVERT`_cvtop__(`S`_sx))] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `CONVERT`_cvtop__(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `CVTOP`_instr(`F32`_numtype, `I64`_numtype, `CONVERT`_cvtop__(`U`_sx))] -[visit_exp (`F32`_numtype, `I64`_numtype, `CONVERT`_cvtop__(`U`_sx))] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `CONVERT`_cvtop__(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `CVTOP`_instr(`F64`_numtype, `F32`_numtype, `PROMOTE`_cvtop__)] -[visit_exp (`F64`_numtype, `F32`_numtype, `PROMOTE`_cvtop__)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `PROMOTE`_cvtop__] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `CVTOP`_instr(`F64`_numtype, `I32`_numtype, `CONVERT`_cvtop__(`S`_sx))] -[visit_exp (`F64`_numtype, `I32`_numtype, `CONVERT`_cvtop__(`S`_sx))] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `CONVERT`_cvtop__(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `CVTOP`_instr(`F64`_numtype, `I32`_numtype, `CONVERT`_cvtop__(`U`_sx))] -[visit_exp (`F64`_numtype, `I32`_numtype, `CONVERT`_cvtop__(`U`_sx))] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `CONVERT`_cvtop__(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `CVTOP`_instr(`F64`_numtype, `I64`_numtype, `CONVERT`_cvtop__(`S`_sx))] -[visit_exp (`F64`_numtype, `I64`_numtype, `CONVERT`_cvtop__(`S`_sx))] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `CONVERT`_cvtop__(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `CVTOP`_instr(`F64`_numtype, `I64`_numtype, `CONVERT`_cvtop__(`U`_sx))] -[visit_exp (`F64`_numtype, `I64`_numtype, `CONVERT`_cvtop__(`U`_sx))] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `CONVERT`_cvtop__(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `CVTOP`_instr(`I32`_numtype, `F32`_numtype, `REINTERPRET`_cvtop__)] -[visit_exp (`I32`_numtype, `F32`_numtype, `REINTERPRET`_cvtop__)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `REINTERPRET`_cvtop__] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `CVTOP`_instr(`I64`_numtype, `F64`_numtype, `REINTERPRET`_cvtop__)] -[visit_exp (`I64`_numtype, `F64`_numtype, `REINTERPRET`_cvtop__)] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `REINTERPRET`_cvtop__] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `CVTOP`_instr(`F32`_numtype, `I32`_numtype, `REINTERPRET`_cvtop__)] -[visit_exp (`F32`_numtype, `I32`_numtype, `REINTERPRET`_cvtop__)] -[visit_exp `F32`_numtype] -[visit_exp ()] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `REINTERPRET`_cvtop__] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `CVTOP`_instr(`F64`_numtype, `I64`_numtype, `REINTERPRET`_cvtop__)] -[visit_exp (`F64`_numtype, `I64`_numtype, `REINTERPRET`_cvtop__)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `I64`_numtype] -[visit_exp ()] -[visit_exp `REINTERPRET`_cvtop__] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I c -dims \ I = c -[visit_exp `VCONST`_instr(`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(8, c)*{c <- `c*`})))] -[visit_exp (`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(8, c)*{c <- `c*`})))] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(8, c)*{c <- `c*`}))] -[visit_exp 128] -[visit_exp $concat_(syntax byte, $ibytes_(8, c)*{c <- `c*`})] -[visit_exp $ibytes_(8, c)*{c <- `c*`}] -[scope_enter c] -[visit_exp $ibytes_(8, c)] -[visit_exp 8] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] no dims -[visit_id c*] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[visit_exp 16] -[check_dims] I c -dims \ I = c -[visit_exp `VCONST`_instr(`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(16, c)*{c <- `c*`})))] -[visit_exp (`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(16, c)*{c <- `c*`})))] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(16, c)*{c <- `c*`}))] -[visit_exp 128] -[visit_exp $concat_(syntax byte, $ibytes_(16, c)*{c <- `c*`})] -[visit_exp $ibytes_(16, c)*{c <- `c*`}] -[scope_enter c] -[visit_exp $ibytes_(16, c)] -[visit_exp 16] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] no dims -[visit_id c*] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[visit_exp 8] -[check_dims] I c -dims \ I = c -[visit_exp `VCONST`_instr(`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(32, c)*{c <- `c*`})))] -[visit_exp (`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(32, c)*{c <- `c*`})))] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(32, c)*{c <- `c*`}))] -[visit_exp 128] -[visit_exp $concat_(syntax byte, $ibytes_(32, c)*{c <- `c*`})] -[visit_exp $ibytes_(32, c)*{c <- `c*`}] -[scope_enter c] -[visit_exp $ibytes_(32, c)] -[visit_exp 32] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] no dims -[visit_id c*] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[visit_exp 4] -[check_dims] I c -dims \ I = c -[visit_exp `VCONST`_instr(`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(64, c)*{c <- `c*`})))] -[visit_exp (`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(64, c)*{c <- `c*`})))] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(64, c)*{c <- `c*`}))] -[visit_exp 128] -[visit_exp $concat_(syntax byte, $ibytes_(64, c)*{c <- `c*`})] -[visit_exp $ibytes_(64, c)*{c <- `c*`}] -[scope_enter c] -[visit_exp $ibytes_(64, c)] -[visit_exp 64] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] no dims -[visit_id c*] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[visit_exp 2] -[check_dims] I c -dims \ I = c -[visit_exp `VCONST`_instr(`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(32, c)*{c <- `c*`})))] -[visit_exp (`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(32, c)*{c <- `c*`})))] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(32, c)*{c <- `c*`}))] -[visit_exp 128] -[visit_exp $concat_(syntax byte, $fbytes_(32, c)*{c <- `c*`})] -[visit_exp $fbytes_(32, c)*{c <- `c*`}] -[scope_enter c] -[visit_exp $fbytes_(32, c)] -[visit_exp 32] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] no dims -[visit_id c*] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[visit_exp 4] -[check_dims] I c -dims \ I = c -[visit_exp `VCONST`_instr(`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(64, c)*{c <- `c*`})))] -[visit_exp (`V128`_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(64, c)*{c <- `c*`})))] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(64, c)*{c <- `c*`}))] -[visit_exp 128] -[visit_exp $concat_(syntax byte, $fbytes_(64, c)*{c <- `c*`})] -[visit_exp $fbytes_(64, c)*{c <- `c*`}] -[scope_enter c] -[visit_exp $fbytes_(64, c)] -[visit_exp 64] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] no dims -[visit_id c*] -[visit_exp c*{c <- `c*`}] -[scope_enter c] -[visit_exp c] -[visit_id c] not free -[visit_id c] not free -[scope_exit c] -[visit_exp `c*`] -[visit_id c*] not free -[visit_id c*] no dims -[visit_exp 2] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I i -dims \ I = i -[visit_exp `VSHUFFLE`_instr(`%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), i*{i <- `i*`})] -[visit_exp (`%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), i*{i <- `i*`})] -[visit_exp `%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp i*{i <- `i*`}] -[scope_enter i] -[visit_exp i] -[visit_id i] not free -[visit_id i] not free -[scope_exit i] -[visit_exp `i*`] -[visit_id i*] no dims -[visit_id i*] -[visit_exp i*{i <- `i*`}] -[scope_enter i] -[visit_exp i] -[visit_id i] not free -[visit_id i] not free -[scope_exit i] -[visit_exp `i*`] -[visit_id i*] not free -[visit_id i*] no dims -[visit_exp 16] -[check_dims] I -dims \ I = -[visit_exp `VSWIZZLOP`_instr(`%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `SWIZZLE`_vswizzlop_)] -[visit_exp (`%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `SWIZZLE`_vswizzlop_)] -[visit_exp `%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `SWIZZLE`_vswizzlop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VSWIZZLOP`_instr(`%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `RELAXED_SWIZZLE`_vswizzlop_)] -[visit_exp (`%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `RELAXED_SWIZZLE`_vswizzlop_)] -[visit_exp `%`_bshape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `RELAXED_SWIZZLE`_vswizzlop_] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VSPLAT`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[check_dims] I -dims \ I = -[visit_exp `VSPLAT`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[check_dims] I -dims \ I = -[visit_exp `VSPLAT`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[check_dims] I -dims \ I = -[visit_exp `VSPLAT`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[check_dims] I -dims \ I = -[visit_exp `VSPLAT`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)))] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)))] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[check_dims] I -dims \ I = -[visit_exp `VSPLAT`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)))] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)))] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I i -dims \ I = i -[visit_exp `VEXTRACT_LANE`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), ?(`S`_sx), i)] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), ?(`S`_sx), i)] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp ?(`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp i] -[visit_id i] -[visit_exp i] -[visit_id i] not free -[check_dims] I i -dims \ I = i -[visit_exp `VEXTRACT_LANE`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), ?(`U`_sx), i)] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), ?(`U`_sx), i)] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp ?(`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp i] -[visit_id i] -[visit_exp i] -[visit_id i] not free -[check_dims] I i -dims \ I = i -[visit_exp `VEXTRACT_LANE`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), ?(`S`_sx), i)] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), ?(`S`_sx), i)] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp ?(`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp i] -[visit_id i] -[visit_exp i] -[visit_id i] not free -[check_dims] I i -dims \ I = i -[visit_exp `VEXTRACT_LANE`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), ?(`U`_sx), i)] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), ?(`U`_sx), i)] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp ?(`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp i] -[visit_id i] -[visit_exp i] -[visit_id i] not free -[check_dims] I i -dims \ I = i -[visit_exp `VEXTRACT_LANE`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), ?(), i)] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), ?(), i)] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp ?()] -[visit_exp i] -[visit_id i] -[visit_exp i] -[visit_id i] not free -[check_dims] I i -dims \ I = i -[visit_exp `VEXTRACT_LANE`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), ?(), i)] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), ?(), i)] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp ?()] -[visit_exp i] -[visit_id i] -[visit_exp i] -[visit_id i] not free -[check_dims] I i -dims \ I = i -[visit_exp `VEXTRACT_LANE`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), ?(), i)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), ?(), i)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp ?()] -[visit_exp i] -[visit_id i] -[visit_exp i] -[visit_id i] not free -[check_dims] I i -dims \ I = i -[visit_exp `VEXTRACT_LANE`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), ?(), i)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), ?(), i)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp ?()] -[visit_exp i] -[visit_id i] -[visit_exp i] -[visit_id i] not free -[check_dims] I i -dims \ I = i -[visit_exp `VREPLACE_LANE`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), i)] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), i)] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp i] -[visit_id i] -[visit_exp i] -[visit_id i] not free -[check_dims] I i -dims \ I = i -[visit_exp `VREPLACE_LANE`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), i)] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), i)] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp i] -[visit_id i] -[visit_exp i] -[visit_id i] not free -[check_dims] I i -dims \ I = i -[visit_exp `VREPLACE_LANE`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), i)] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), i)] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp i] -[visit_id i] -[visit_exp i] -[visit_id i] not free -[check_dims] I i -dims \ I = i -[visit_exp `VREPLACE_LANE`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), i)] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), i)] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp i] -[visit_id i] -[visit_exp i] -[visit_id i] not free -[check_dims] I i -dims \ I = i -[visit_exp `VREPLACE_LANE`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), i)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), i)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp i] -[visit_id i] -[visit_exp i] -[visit_id i] not free -[check_dims] I i -dims \ I = i -[visit_exp `VREPLACE_LANE`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), i)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), i)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp i] -[visit_id i] -[visit_exp i] -[visit_id i] not free -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VVTESTOP`_instr(`V128`_vectype, `ANY_TRUE`_vvtestop)] -[visit_exp (`V128`_vectype, `ANY_TRUE`_vvtestop)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp `ANY_TRUE`_vvtestop] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VTESTOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `ALL_TRUE`_vtestop_)] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `ALL_TRUE`_vtestop_)] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `ALL_TRUE`_vtestop_] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VTESTOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `ALL_TRUE`_vtestop_)] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `ALL_TRUE`_vtestop_)] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `ALL_TRUE`_vtestop_] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VTESTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `ALL_TRUE`_vtestop_)] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `ALL_TRUE`_vtestop_)] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `ALL_TRUE`_vtestop_] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VTESTOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `ALL_TRUE`_vtestop_)] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `ALL_TRUE`_vtestop_)] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `ALL_TRUE`_vtestop_] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `EQ`_vrelop_)] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `EQ`_vrelop_)] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `EQ`_vrelop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `NE`_vrelop_)] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `NE`_vrelop_)] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `NE`_vrelop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `LT`_vrelop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `LT`_vrelop_(`S`_sx))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `LT`_vrelop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `LT`_vrelop_(`U`_sx))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `LT`_vrelop_(`U`_sx))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `LT`_vrelop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `GT`_vrelop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `GT`_vrelop_(`S`_sx))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `GT`_vrelop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `GT`_vrelop_(`U`_sx))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `GT`_vrelop_(`U`_sx))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `GT`_vrelop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `LE`_vrelop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `LE`_vrelop_(`S`_sx))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `LE`_vrelop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `LE`_vrelop_(`U`_sx))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `LE`_vrelop_(`U`_sx))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `LE`_vrelop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `GE`_vrelop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `GE`_vrelop_(`S`_sx))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `GE`_vrelop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `GE`_vrelop_(`U`_sx))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `GE`_vrelop_(`U`_sx))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `GE`_vrelop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `EQ`_vrelop_)] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `EQ`_vrelop_)] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `EQ`_vrelop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `NE`_vrelop_)] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `NE`_vrelop_)] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `NE`_vrelop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `LT`_vrelop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `LT`_vrelop_(`S`_sx))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `LT`_vrelop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `LT`_vrelop_(`U`_sx))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `LT`_vrelop_(`U`_sx))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `LT`_vrelop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `GT`_vrelop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `GT`_vrelop_(`S`_sx))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `GT`_vrelop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `GT`_vrelop_(`U`_sx))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `GT`_vrelop_(`U`_sx))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `GT`_vrelop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `LE`_vrelop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `LE`_vrelop_(`S`_sx))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `LE`_vrelop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `LE`_vrelop_(`U`_sx))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `LE`_vrelop_(`U`_sx))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `LE`_vrelop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `GE`_vrelop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `GE`_vrelop_(`S`_sx))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `GE`_vrelop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `GE`_vrelop_(`U`_sx))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `GE`_vrelop_(`U`_sx))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `GE`_vrelop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `EQ`_vrelop_)] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `EQ`_vrelop_)] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `EQ`_vrelop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `NE`_vrelop_)] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `NE`_vrelop_)] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `NE`_vrelop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `LT`_vrelop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `LT`_vrelop_(`S`_sx))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `LT`_vrelop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `LT`_vrelop_(`U`_sx))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `LT`_vrelop_(`U`_sx))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `LT`_vrelop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `GT`_vrelop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `GT`_vrelop_(`S`_sx))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `GT`_vrelop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `GT`_vrelop_(`U`_sx))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `GT`_vrelop_(`U`_sx))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `GT`_vrelop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `LE`_vrelop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `LE`_vrelop_(`S`_sx))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `LE`_vrelop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `LE`_vrelop_(`U`_sx))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `LE`_vrelop_(`U`_sx))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `LE`_vrelop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `GE`_vrelop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `GE`_vrelop_(`S`_sx))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `GE`_vrelop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `GE`_vrelop_(`U`_sx))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `GE`_vrelop_(`U`_sx))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `GE`_vrelop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `EQ`_vrelop_)] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `EQ`_vrelop_)] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `EQ`_vrelop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `NE`_vrelop_)] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `NE`_vrelop_)] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `NE`_vrelop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `LT`_vrelop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `LT`_vrelop_(`S`_sx))] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `LT`_vrelop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `GT`_vrelop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `GT`_vrelop_(`S`_sx))] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `GT`_vrelop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `LE`_vrelop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `LE`_vrelop_(`S`_sx))] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `LE`_vrelop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `GE`_vrelop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `GE`_vrelop_(`S`_sx))] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `GE`_vrelop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `EQ`_vrelop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `EQ`_vrelop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `EQ`_vrelop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `NE`_vrelop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `NE`_vrelop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `NE`_vrelop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `LT`_vrelop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `LT`_vrelop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `LT`_vrelop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `GT`_vrelop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `GT`_vrelop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `GT`_vrelop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `LE`_vrelop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `LE`_vrelop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `LE`_vrelop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `GE`_vrelop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `GE`_vrelop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `GE`_vrelop_] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `EQ`_vrelop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `EQ`_vrelop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `EQ`_vrelop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `NE`_vrelop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `NE`_vrelop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `NE`_vrelop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `LT`_vrelop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `LT`_vrelop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `LT`_vrelop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `GT`_vrelop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `GT`_vrelop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `GT`_vrelop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `LE`_vrelop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `LE`_vrelop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `LE`_vrelop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VRELOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `GE`_vrelop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `GE`_vrelop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `GE`_vrelop_] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VVUNOP`_instr(`V128`_vectype, `NOT`_vvunop)] -[visit_exp (`V128`_vectype, `NOT`_vvunop)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp `NOT`_vvunop] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VUNOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `ABS`_vunop_)] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `ABS`_vunop_)] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `ABS`_vunop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VUNOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `NEG`_vunop_)] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `NEG`_vunop_)] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `NEG`_vunop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VUNOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `POPCNT`_vunop_)] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `POPCNT`_vunop_)] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `POPCNT`_vunop_] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VUNOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `ABS`_vunop_)] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `ABS`_vunop_)] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `ABS`_vunop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VUNOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `NEG`_vunop_)] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `NEG`_vunop_)] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `NEG`_vunop_] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VUNOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `ABS`_vunop_)] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `ABS`_vunop_)] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `ABS`_vunop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VUNOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `NEG`_vunop_)] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `NEG`_vunop_)] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `NEG`_vunop_] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VUNOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `ABS`_vunop_)] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `ABS`_vunop_)] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `ABS`_vunop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VUNOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `NEG`_vunop_)] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `NEG`_vunop_)] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `NEG`_vunop_] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VUNOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `ABS`_vunop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `ABS`_vunop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `ABS`_vunop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VUNOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `NEG`_vunop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `NEG`_vunop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `NEG`_vunop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VUNOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `SQRT`_vunop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `SQRT`_vunop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `SQRT`_vunop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VUNOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `CEIL`_vunop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `CEIL`_vunop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `CEIL`_vunop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VUNOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `FLOOR`_vunop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `FLOOR`_vunop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `FLOOR`_vunop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VUNOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `TRUNC`_vunop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `TRUNC`_vunop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `TRUNC`_vunop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VUNOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `NEAREST`_vunop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `NEAREST`_vunop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `NEAREST`_vunop_] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VUNOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `ABS`_vunop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `ABS`_vunop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `ABS`_vunop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VUNOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `NEG`_vunop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `NEG`_vunop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `NEG`_vunop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VUNOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `SQRT`_vunop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `SQRT`_vunop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `SQRT`_vunop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VUNOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `CEIL`_vunop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `CEIL`_vunop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `CEIL`_vunop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VUNOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `FLOOR`_vunop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `FLOOR`_vunop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `FLOOR`_vunop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VUNOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `TRUNC`_vunop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `TRUNC`_vunop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `TRUNC`_vunop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VUNOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `NEAREST`_vunop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `NEAREST`_vunop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `NEAREST`_vunop_] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VVBINOP`_instr(`V128`_vectype, `AND`_vvbinop)] -[visit_exp (`V128`_vectype, `AND`_vvbinop)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp `AND`_vvbinop] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VVBINOP`_instr(`V128`_vectype, `ANDNOT`_vvbinop)] -[visit_exp (`V128`_vectype, `ANDNOT`_vvbinop)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp `ANDNOT`_vvbinop] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VVBINOP`_instr(`V128`_vectype, `OR`_vvbinop)] -[visit_exp (`V128`_vectype, `OR`_vvbinop)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp `OR`_vvbinop] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VVBINOP`_instr(`V128`_vectype, `XOR`_vvbinop)] -[visit_exp (`V128`_vectype, `XOR`_vvbinop)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp `XOR`_vvbinop] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `ADD`_vbinop_)] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `ADD`_vbinop_)] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `ADD`_vbinop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `ADD_SAT`_vbinop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `ADD_SAT`_vbinop_(`S`_sx))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `ADD_SAT`_vbinop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `ADD_SAT`_vbinop_(`U`_sx))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `ADD_SAT`_vbinop_(`U`_sx))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `ADD_SAT`_vbinop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `SUB`_vbinop_)] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `SUB`_vbinop_)] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `SUB`_vbinop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `SUB_SAT`_vbinop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `SUB_SAT`_vbinop_(`S`_sx))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `SUB_SAT`_vbinop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `SUB_SAT`_vbinop_(`U`_sx))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `SUB_SAT`_vbinop_(`U`_sx))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `SUB_SAT`_vbinop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `MIN`_vbinop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `MIN`_vbinop_(`S`_sx))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `MIN`_vbinop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `MIN`_vbinop_(`U`_sx))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `MIN`_vbinop_(`U`_sx))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `MIN`_vbinop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `MAX`_vbinop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `MAX`_vbinop_(`S`_sx))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `MAX`_vbinop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `MAX`_vbinop_(`U`_sx))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `MAX`_vbinop_(`U`_sx))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `MAX`_vbinop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `AVGRU`_vbinop_)] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `AVGRU`_vbinop_)] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `AVGRU`_vbinop_] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `ADD`_vbinop_)] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `ADD`_vbinop_)] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `ADD`_vbinop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `ADD_SAT`_vbinop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `ADD_SAT`_vbinop_(`S`_sx))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `ADD_SAT`_vbinop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `ADD_SAT`_vbinop_(`U`_sx))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `ADD_SAT`_vbinop_(`U`_sx))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `ADD_SAT`_vbinop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `SUB`_vbinop_)] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `SUB`_vbinop_)] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `SUB`_vbinop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `SUB_SAT`_vbinop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `SUB_SAT`_vbinop_(`S`_sx))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `SUB_SAT`_vbinop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `SUB_SAT`_vbinop_(`U`_sx))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `SUB_SAT`_vbinop_(`U`_sx))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `SUB_SAT`_vbinop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `MUL`_vbinop_)] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `MUL`_vbinop_)] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `MUL`_vbinop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `MIN`_vbinop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `MIN`_vbinop_(`S`_sx))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `MIN`_vbinop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `MIN`_vbinop_(`U`_sx))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `MIN`_vbinop_(`U`_sx))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `MIN`_vbinop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `MAX`_vbinop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `MAX`_vbinop_(`S`_sx))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `MAX`_vbinop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `MAX`_vbinop_(`U`_sx))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `MAX`_vbinop_(`U`_sx))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `MAX`_vbinop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `AVGRU`_vbinop_)] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `AVGRU`_vbinop_)] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `AVGRU`_vbinop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `Q15MULR_SATS`_vbinop_)] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `Q15MULR_SATS`_vbinop_)] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `Q15MULR_SATS`_vbinop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `RELAXED_Q15MULRS`_vbinop_)] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `RELAXED_Q15MULRS`_vbinop_)] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `RELAXED_Q15MULRS`_vbinop_] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `ADD`_vbinop_)] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `ADD`_vbinop_)] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `ADD`_vbinop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `SUB`_vbinop_)] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `SUB`_vbinop_)] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `SUB`_vbinop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `MUL`_vbinop_)] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `MUL`_vbinop_)] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `MUL`_vbinop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `MIN`_vbinop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `MIN`_vbinop_(`S`_sx))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `MIN`_vbinop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `MIN`_vbinop_(`U`_sx))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `MIN`_vbinop_(`U`_sx))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `MIN`_vbinop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `MAX`_vbinop_(`S`_sx))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `MAX`_vbinop_(`S`_sx))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `MAX`_vbinop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `MAX`_vbinop_(`U`_sx))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `MAX`_vbinop_(`U`_sx))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `MAX`_vbinop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `ADD`_vbinop_)] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `ADD`_vbinop_)] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `ADD`_vbinop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `SUB`_vbinop_)] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `SUB`_vbinop_)] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `SUB`_vbinop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `MUL`_vbinop_)] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `MUL`_vbinop_)] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `MUL`_vbinop_] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `ADD`_vbinop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `ADD`_vbinop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `ADD`_vbinop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `SUB`_vbinop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `SUB`_vbinop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `SUB`_vbinop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `MUL`_vbinop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `MUL`_vbinop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `MUL`_vbinop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `DIV`_vbinop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `DIV`_vbinop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `DIV`_vbinop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `MIN`_vbinop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `MIN`_vbinop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `MIN`_vbinop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `MAX`_vbinop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `MAX`_vbinop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `MAX`_vbinop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `PMIN`_vbinop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `PMIN`_vbinop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `PMIN`_vbinop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `PMAX`_vbinop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `PMAX`_vbinop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `PMAX`_vbinop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_MIN`_vbinop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_MIN`_vbinop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `RELAXED_MIN`_vbinop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_MAX`_vbinop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_MAX`_vbinop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `RELAXED_MAX`_vbinop_] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `ADD`_vbinop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `ADD`_vbinop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `ADD`_vbinop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `SUB`_vbinop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `SUB`_vbinop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `SUB`_vbinop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `MUL`_vbinop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `MUL`_vbinop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `MUL`_vbinop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `DIV`_vbinop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `DIV`_vbinop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `DIV`_vbinop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `MIN`_vbinop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `MIN`_vbinop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `MIN`_vbinop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `MAX`_vbinop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `MAX`_vbinop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `MAX`_vbinop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `PMIN`_vbinop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `PMIN`_vbinop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `PMIN`_vbinop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `PMAX`_vbinop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `PMAX`_vbinop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `PMAX`_vbinop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_MIN`_vbinop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_MIN`_vbinop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `RELAXED_MIN`_vbinop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VBINOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_MAX`_vbinop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_MAX`_vbinop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `RELAXED_MAX`_vbinop_] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VVTERNOP`_instr(`V128`_vectype, `BITSELECT`_vvternop)] -[visit_exp (`V128`_vectype, `BITSELECT`_vvternop)] -[visit_exp `V128`_vectype] -[visit_exp ()] -[visit_exp `BITSELECT`_vvternop] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VTERNOP`_instr(`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `RELAXED_LANESELECT`_vternop_)] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)), `RELAXED_LANESELECT`_vternop_)] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `RELAXED_LANESELECT`_vternop_] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VTERNOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `RELAXED_LANESELECT`_vternop_)] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `RELAXED_LANESELECT`_vternop_)] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `RELAXED_LANESELECT`_vternop_] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VTERNOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `RELAXED_LANESELECT`_vternop_)] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `RELAXED_LANESELECT`_vternop_)] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `RELAXED_LANESELECT`_vternop_] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VTERNOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `RELAXED_LANESELECT`_vternop_)] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `RELAXED_LANESELECT`_vternop_)] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `RELAXED_LANESELECT`_vternop_] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VTERNOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_MADD`_vternop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_MADD`_vternop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `RELAXED_MADD`_vternop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VTERNOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_NMADD`_vternop_)] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_NMADD`_vternop_)] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `RELAXED_NMADD`_vternop_] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VTERNOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_MADD`_vternop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_MADD`_vternop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `RELAXED_MADD`_vternop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VTERNOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_NMADD`_vternop_)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_NMADD`_vternop_)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `RELAXED_NMADD`_vternop_] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `SHL`_vshiftop_)] -[visit_exp (`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `SHL`_vshiftop_)] -[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `SHL`_vshiftop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `SHR`_vshiftop_(`S`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `SHR`_vshiftop_(`S`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `SHR`_vshiftop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `SHR`_vshiftop_(`U`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `SHR`_vshiftop_(`U`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `SHR`_vshiftop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `SHL`_vshiftop_)] -[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `SHL`_vshiftop_)] -[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `SHL`_vshiftop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `SHR`_vshiftop_(`S`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `SHR`_vshiftop_(`S`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `SHR`_vshiftop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `SHR`_vshiftop_(`U`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `SHR`_vshiftop_(`U`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `SHR`_vshiftop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `SHL`_vshiftop_)] -[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `SHL`_vshiftop_)] -[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `SHL`_vshiftop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `SHR`_vshiftop_(`S`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `SHR`_vshiftop_(`S`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `SHR`_vshiftop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `SHR`_vshiftop_(`U`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `SHR`_vshiftop_(`U`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `SHR`_vshiftop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `SHL`_vshiftop_)] -[visit_exp (`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `SHL`_vshiftop_)] -[visit_exp `%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `SHL`_vshiftop_] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `SHR`_vshiftop_(`S`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `SHR`_vshiftop_(`S`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `SHR`_vshiftop_(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VSHIFTOP`_instr(`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `SHR`_vshiftop_(`U`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `SHR`_vshiftop_(`U`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `SHR`_vshiftop_(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VBITMASK`_instr(`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))))] -[visit_exp (`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))))] -[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VBITMASK`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))))] -[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))))] -[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VBITMASK`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))))] -[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))))] -[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VBITMASK`_instr(`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))))] -[visit_exp (`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))))] -[visit_exp `%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VNARROW`_instr(`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `S`_sx)] -[visit_exp (`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `S`_sx)] -[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VNARROW`_instr(`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `U`_sx)] -[visit_exp (`%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `U`_sx)] -[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VNARROW`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `S`_sx)] -[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `S`_sx)] -[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VNARROW`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `U`_sx)] -[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `U`_sx)] -[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `%X%`_shape(`I8`_lanetype, `%`_dim(16)), `EXTEND`_vcvtop__(`LOW`_half, `S`_sx))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `%X%`_shape(`I8`_lanetype, `%`_dim(16)), `EXTEND`_vcvtop__(`LOW`_half, `S`_sx))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `EXTEND`_vcvtop__(`LOW`_half, `S`_sx)] -[visit_exp (`LOW`_half, `S`_sx)] -[visit_exp `LOW`_half] -[visit_exp ()] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `%X%`_shape(`I8`_lanetype, `%`_dim(16)), `EXTEND`_vcvtop__(`LOW`_half, `U`_sx))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `%X%`_shape(`I8`_lanetype, `%`_dim(16)), `EXTEND`_vcvtop__(`LOW`_half, `U`_sx))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `EXTEND`_vcvtop__(`LOW`_half, `U`_sx)] -[visit_exp (`LOW`_half, `U`_sx)] -[visit_exp `LOW`_half] -[visit_exp ()] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `%X%`_shape(`I8`_lanetype, `%`_dim(16)), `EXTEND`_vcvtop__(`HIGH`_half, `S`_sx))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `%X%`_shape(`I8`_lanetype, `%`_dim(16)), `EXTEND`_vcvtop__(`HIGH`_half, `S`_sx))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `EXTEND`_vcvtop__(`HIGH`_half, `S`_sx)] -[visit_exp (`HIGH`_half, `S`_sx)] -[visit_exp `HIGH`_half] -[visit_exp ()] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `%X%`_shape(`I8`_lanetype, `%`_dim(16)), `EXTEND`_vcvtop__(`HIGH`_half, `U`_sx))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)), `%X%`_shape(`I8`_lanetype, `%`_dim(16)), `EXTEND`_vcvtop__(`HIGH`_half, `U`_sx))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `EXTEND`_vcvtop__(`HIGH`_half, `U`_sx)] -[visit_exp (`HIGH`_half, `U`_sx)] -[visit_exp `HIGH`_half] -[visit_exp ()] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`I16`_lanetype, `%`_dim(8)), `EXTEND`_vcvtop__(`LOW`_half, `S`_sx))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`I16`_lanetype, `%`_dim(8)), `EXTEND`_vcvtop__(`LOW`_half, `S`_sx))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `EXTEND`_vcvtop__(`LOW`_half, `S`_sx)] -[visit_exp (`LOW`_half, `S`_sx)] -[visit_exp `LOW`_half] -[visit_exp ()] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`I16`_lanetype, `%`_dim(8)), `EXTEND`_vcvtop__(`LOW`_half, `U`_sx))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`I16`_lanetype, `%`_dim(8)), `EXTEND`_vcvtop__(`LOW`_half, `U`_sx))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `EXTEND`_vcvtop__(`LOW`_half, `U`_sx)] -[visit_exp (`LOW`_half, `U`_sx)] -[visit_exp `LOW`_half] -[visit_exp ()] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`I16`_lanetype, `%`_dim(8)), `EXTEND`_vcvtop__(`HIGH`_half, `S`_sx))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`I16`_lanetype, `%`_dim(8)), `EXTEND`_vcvtop__(`HIGH`_half, `S`_sx))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `EXTEND`_vcvtop__(`HIGH`_half, `S`_sx)] -[visit_exp (`HIGH`_half, `S`_sx)] -[visit_exp `HIGH`_half] -[visit_exp ()] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`I16`_lanetype, `%`_dim(8)), `EXTEND`_vcvtop__(`HIGH`_half, `U`_sx))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`I16`_lanetype, `%`_dim(8)), `EXTEND`_vcvtop__(`HIGH`_half, `U`_sx))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `EXTEND`_vcvtop__(`HIGH`_half, `U`_sx)] -[visit_exp (`HIGH`_half, `U`_sx)] -[visit_exp `HIGH`_half] -[visit_exp ()] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F32`_lanetype, `%`_dim(4)), `TRUNC_SAT`_vcvtop__(`S`_sx, ?()))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F32`_lanetype, `%`_dim(4)), `TRUNC_SAT`_vcvtop__(`S`_sx, ?()))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `TRUNC_SAT`_vcvtop__(`S`_sx, ?())] -[visit_exp (`S`_sx, ?())] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp ?()] -[check_dims] I -dims \ I = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F32`_lanetype, `%`_dim(4)), `TRUNC_SAT`_vcvtop__(`U`_sx, ?()))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F32`_lanetype, `%`_dim(4)), `TRUNC_SAT`_vcvtop__(`U`_sx, ?()))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `TRUNC_SAT`_vcvtop__(`U`_sx, ?())] -[visit_exp (`U`_sx, ?())] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp ?()] -[check_dims] I -dims \ I = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F64`_lanetype, `%`_dim(2)), `TRUNC_SAT`_vcvtop__(`S`_sx, ?(`ZERO`_zero)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F64`_lanetype, `%`_dim(2)), `TRUNC_SAT`_vcvtop__(`S`_sx, ?(`ZERO`_zero)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `TRUNC_SAT`_vcvtop__(`S`_sx, ?(`ZERO`_zero))] -[visit_exp (`S`_sx, ?(`ZERO`_zero))] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp ?(`ZERO`_zero)] -[visit_exp `ZERO`_zero] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F64`_lanetype, `%`_dim(2)), `TRUNC_SAT`_vcvtop__(`U`_sx, ?(`ZERO`_zero)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F64`_lanetype, `%`_dim(2)), `TRUNC_SAT`_vcvtop__(`U`_sx, ?(`ZERO`_zero)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `TRUNC_SAT`_vcvtop__(`U`_sx, ?(`ZERO`_zero))] -[visit_exp (`U`_sx, ?(`ZERO`_zero))] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp ?(`ZERO`_zero)] -[visit_exp `ZERO`_zero] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_TRUNC`_vcvtop__(`S`_sx, ?()))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_TRUNC`_vcvtop__(`S`_sx, ?()))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `RELAXED_TRUNC`_vcvtop__(`S`_sx, ?())] -[visit_exp (`S`_sx, ?())] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp ?()] -[check_dims] I -dims \ I = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_TRUNC`_vcvtop__(`U`_sx, ?()))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F32`_lanetype, `%`_dim(4)), `RELAXED_TRUNC`_vcvtop__(`U`_sx, ?()))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `RELAXED_TRUNC`_vcvtop__(`U`_sx, ?())] -[visit_exp (`U`_sx, ?())] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp ?()] -[check_dims] I -dims \ I = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_TRUNC`_vcvtop__(`S`_sx, ?(`ZERO`_zero)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_TRUNC`_vcvtop__(`S`_sx, ?(`ZERO`_zero)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `RELAXED_TRUNC`_vcvtop__(`S`_sx, ?(`ZERO`_zero))] -[visit_exp (`S`_sx, ?(`ZERO`_zero))] -[visit_exp `S`_sx] -[visit_exp ()] -[visit_exp ?(`ZERO`_zero)] -[visit_exp `ZERO`_zero] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_TRUNC`_vcvtop__(`U`_sx, ?(`ZERO`_zero)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)), `%X%`_shape(`F64`_lanetype, `%`_dim(2)), `RELAXED_TRUNC`_vcvtop__(`U`_sx, ?(`ZERO`_zero)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `RELAXED_TRUNC`_vcvtop__(`U`_sx, ?(`ZERO`_zero))] -[visit_exp (`U`_sx, ?(`ZERO`_zero))] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_exp ?(`ZERO`_zero)] -[visit_exp `ZERO`_zero] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `EXTEND`_vcvtop__(`LOW`_half, `S`_sx))] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `EXTEND`_vcvtop__(`LOW`_half, `S`_sx))] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `EXTEND`_vcvtop__(`LOW`_half, `S`_sx)] -[visit_exp (`LOW`_half, `S`_sx)] -[visit_exp `LOW`_half] -[visit_exp ()] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `EXTEND`_vcvtop__(`LOW`_half, `U`_sx))] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `EXTEND`_vcvtop__(`LOW`_half, `U`_sx))] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `EXTEND`_vcvtop__(`LOW`_half, `U`_sx)] -[visit_exp (`LOW`_half, `U`_sx)] -[visit_exp `LOW`_half] -[visit_exp ()] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `EXTEND`_vcvtop__(`HIGH`_half, `S`_sx))] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `EXTEND`_vcvtop__(`HIGH`_half, `S`_sx))] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `EXTEND`_vcvtop__(`HIGH`_half, `S`_sx)] -[visit_exp (`HIGH`_half, `S`_sx)] -[visit_exp `HIGH`_half] -[visit_exp ()] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `EXTEND`_vcvtop__(`HIGH`_half, `U`_sx))] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `EXTEND`_vcvtop__(`HIGH`_half, `U`_sx))] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `EXTEND`_vcvtop__(`HIGH`_half, `U`_sx)] -[visit_exp (`HIGH`_half, `U`_sx)] -[visit_exp `HIGH`_half] -[visit_exp ()] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `%X%`_shape(`F64`_lanetype, `%`_dim(2)), `DEMOTE`_vcvtop__(`ZERO`_zero))] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `%X%`_shape(`F64`_lanetype, `%`_dim(2)), `DEMOTE`_vcvtop__(`ZERO`_zero))] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `DEMOTE`_vcvtop__(`ZERO`_zero)] -[visit_exp (`ZERO`_zero)] -[visit_exp `ZERO`_zero] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `CONVERT`_vcvtop__(?(), `S`_sx))] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `CONVERT`_vcvtop__(?(), `S`_sx))] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `CONVERT`_vcvtop__(?(), `S`_sx)] -[visit_exp (?(), `S`_sx)] -[visit_exp ?()] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `CONVERT`_vcvtop__(?(), `U`_sx))] -[visit_exp (`%X%`_shape(`F32`_lanetype, `%`_dim(4)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `CONVERT`_vcvtop__(?(), `U`_sx))] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `CONVERT`_vcvtop__(?(), `U`_sx)] -[visit_exp (?(), `U`_sx)] -[visit_exp ?()] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `%X%`_shape(`F32`_lanetype, `%`_dim(4)), `PROMOTELOW`_vcvtop__)] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `%X%`_shape(`F32`_lanetype, `%`_dim(4)), `PROMOTELOW`_vcvtop__)] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `%X%`_shape(`F32`_lanetype, `%`_dim(4))] -[visit_exp (`F32`_lanetype, `%`_dim(4))] -[visit_exp `F32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `PROMOTELOW`_vcvtop__] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `CONVERT`_vcvtop__(?(`LOW`_half), `S`_sx))] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `CONVERT`_vcvtop__(?(`LOW`_half), `S`_sx))] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `CONVERT`_vcvtop__(?(`LOW`_half), `S`_sx)] -[visit_exp (?(`LOW`_half), `S`_sx)] -[visit_exp ?(`LOW`_half)] -[visit_exp `LOW`_half] -[visit_exp ()] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VCVTOP`_instr(`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `CONVERT`_vcvtop__(?(`LOW`_half), `U`_sx))] -[visit_exp (`%X%`_shape(`F64`_lanetype, `%`_dim(2)), `%X%`_shape(`I32`_lanetype, `%`_dim(4)), `CONVERT`_vcvtop__(?(`LOW`_half), `U`_sx))] -[visit_exp `%X%`_shape(`F64`_lanetype, `%`_dim(2))] -[visit_exp (`F64`_lanetype, `%`_dim(2))] -[visit_exp `F64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `CONVERT`_vcvtop__(?(`LOW`_half), `U`_sx)] -[visit_exp (?(`LOW`_half), `U`_sx)] -[visit_exp ?(`LOW`_half)] -[visit_exp `LOW`_half] -[visit_exp ()] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VEXTUNOP`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTADD_PAIRWISE`_vextunop__(`S`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTADD_PAIRWISE`_vextunop__(`S`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `EXTADD_PAIRWISE`_vextunop__(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VEXTUNOP`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTADD_PAIRWISE`_vextunop__(`U`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTADD_PAIRWISE`_vextunop__(`U`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `EXTADD_PAIRWISE`_vextunop__(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VEXTUNOP`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTADD_PAIRWISE`_vextunop__(`S`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTADD_PAIRWISE`_vextunop__(`S`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `EXTADD_PAIRWISE`_vextunop__(`S`_sx)] -[visit_exp (`S`_sx)] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VEXTUNOP`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTADD_PAIRWISE`_vextunop__(`U`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTADD_PAIRWISE`_vextunop__(`U`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `EXTADD_PAIRWISE`_vextunop__(`U`_sx)] -[visit_exp (`U`_sx)] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTMUL`_vextbinop__(`LOW`_half, `S`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTMUL`_vextbinop__(`LOW`_half, `S`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `EXTMUL`_vextbinop__(`LOW`_half, `S`_sx)] -[visit_exp (`LOW`_half, `S`_sx)] -[visit_exp `LOW`_half] -[visit_exp ()] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTMUL`_vextbinop__(`LOW`_half, `U`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTMUL`_vextbinop__(`LOW`_half, `U`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `EXTMUL`_vextbinop__(`LOW`_half, `U`_sx)] -[visit_exp (`LOW`_half, `U`_sx)] -[visit_exp `LOW`_half] -[visit_exp ()] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTMUL`_vextbinop__(`HIGH`_half, `S`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTMUL`_vextbinop__(`HIGH`_half, `S`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `EXTMUL`_vextbinop__(`HIGH`_half, `S`_sx)] -[visit_exp (`HIGH`_half, `S`_sx)] -[visit_exp `HIGH`_half] -[visit_exp ()] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTMUL`_vextbinop__(`HIGH`_half, `U`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16))), `EXTMUL`_vextbinop__(`HIGH`_half, `U`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `%`_ishape(`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp (`%X%`_shape(`I8`_lanetype, `%`_dim(16)))] -[visit_exp `%X%`_shape(`I8`_lanetype, `%`_dim(16))] -[visit_exp (`I8`_lanetype, `%`_dim(16))] -[visit_exp `I8`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(16)] -[visit_exp (16)] -[visit_exp 16] -[visit_exp `EXTMUL`_vextbinop__(`HIGH`_half, `U`_sx)] -[visit_exp (`HIGH`_half, `U`_sx)] -[visit_exp `HIGH`_half] -[visit_exp ()] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTMUL`_vextbinop__(`LOW`_half, `S`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTMUL`_vextbinop__(`LOW`_half, `S`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `EXTMUL`_vextbinop__(`LOW`_half, `S`_sx)] -[visit_exp (`LOW`_half, `S`_sx)] -[visit_exp `LOW`_half] -[visit_exp ()] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTMUL`_vextbinop__(`LOW`_half, `U`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTMUL`_vextbinop__(`LOW`_half, `U`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `EXTMUL`_vextbinop__(`LOW`_half, `U`_sx)] -[visit_exp (`LOW`_half, `U`_sx)] -[visit_exp `LOW`_half] -[visit_exp ()] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTMUL`_vextbinop__(`HIGH`_half, `S`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTMUL`_vextbinop__(`HIGH`_half, `S`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `EXTMUL`_vextbinop__(`HIGH`_half, `S`_sx)] -[visit_exp (`HIGH`_half, `S`_sx)] -[visit_exp `HIGH`_half] -[visit_exp ()] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTMUL`_vextbinop__(`HIGH`_half, `U`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `EXTMUL`_vextbinop__(`HIGH`_half, `U`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `EXTMUL`_vextbinop__(`HIGH`_half, `U`_sx)] -[visit_exp (`HIGH`_half, `U`_sx)] -[visit_exp `HIGH`_half] -[visit_exp ()] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `DOTS`_vextbinop__)] -[visit_exp (`%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8))), `DOTS`_vextbinop__)] -[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `%`_ishape(`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp (`%X%`_shape(`I16`_lanetype, `%`_dim(8)))] -[visit_exp `%X%`_shape(`I16`_lanetype, `%`_dim(8))] -[visit_exp (`I16`_lanetype, `%`_dim(8))] -[visit_exp `I16`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(8)] -[visit_exp (8)] -[visit_exp 8] -[visit_exp `DOTS`_vextbinop__] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `EXTMUL`_vextbinop__(`LOW`_half, `S`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `EXTMUL`_vextbinop__(`LOW`_half, `S`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `EXTMUL`_vextbinop__(`LOW`_half, `S`_sx)] -[visit_exp (`LOW`_half, `S`_sx)] -[visit_exp `LOW`_half] -[visit_exp ()] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `EXTMUL`_vextbinop__(`LOW`_half, `U`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `EXTMUL`_vextbinop__(`LOW`_half, `U`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `EXTMUL`_vextbinop__(`LOW`_half, `U`_sx)] -[visit_exp (`LOW`_half, `U`_sx)] -[visit_exp `LOW`_half] -[visit_exp ()] -[visit_exp `U`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `EXTMUL`_vextbinop__(`HIGH`_half, `S`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `EXTMUL`_vextbinop__(`HIGH`_half, `S`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `EXTMUL`_vextbinop__(`HIGH`_half, `S`_sx)] -[visit_exp (`HIGH`_half, `S`_sx)] -[visit_exp `HIGH`_half] -[visit_exp ()] -[visit_exp `S`_sx] -[visit_exp ()] -[check_dims] I -dims \ I = -[visit_exp `VEXTBINOP`_instr(`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `EXTMUL`_vextbinop__(`HIGH`_half, `U`_sx))] -[visit_exp (`%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4))), `EXTMUL`_vextbinop__(`HIGH`_half, `U`_sx))] -[visit_exp `%`_ishape(`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] -[visit_exp (`%X%`_shape(`I64`_lanetype, `%`_dim(2)))] -[visit_exp `%X%`_shape(`I64`_lanetype, `%`_dim(2))] -[visit_exp (`I64`_lanetype, `%`_dim(2))] -[visit_exp `I64`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(2)] -[visit_exp (2)] -[visit_exp 2] -[visit_exp `%`_ishape(`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp (`%X%`_shape(`I32`_lanetype, `%`_dim(4)))] -[visit_exp `%X%`_shape(`I32`_lanetype, `%`_dim(4))] -[visit_exp (`I32`_lanetype, `%`_dim(4))] -[visit_exp `I32`_lanetype] -[visit_exp ()] -[visit_exp `%`_dim(4)] -[visit_exp (4)] -[visit_exp 4] -[visit_exp `EXTMUL`_vextbinop__(`HIGH`_half, `U`_sx)] -[visit_exp (`HIGH`_half, `U`_sx)] -[visit_exp `HIGH`_half] -[visit_exp ()] -[visit_exp `U`_sx] -[visit_exp ()] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I in -dims \ I = in -[visit_exp in*{in <- `in*`}] -[scope_enter in] -[visit_exp in] -[visit_id in] not free -[visit_id in] not free -[scope_exit in] -[visit_exp `in*`] -[visit_id in*] no dims -[visit_id in*] -[visit_exp in*{in <- `in*`}] -[scope_enter in] -[visit_exp in] -[visit_id in] not free -[visit_id in] not free -[scope_exit in] -[visit_exp `in*`] -[visit_id in*] not free -[visit_id in*] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I _ -[check_dims] I I' I'' i n qt st -dims \ I = I', I'', i, n, qt, st -[visit_exp (`TYPE`_type(qt), I' +++ I'')] -[visit_exp `TYPE`_type(qt)] -[visit_exp (qt)] -[visit_exp qt] -[visit_id qt] -[visit_exp I' +++ I''] -[visit_exp I'] -[visit_id I'] -[visit_exp I''] -[visit_id I''] -[visit_exp (qt, I')] -[visit_exp qt] -[visit_id qt] not free -[visit_exp I'] -[visit_id I'] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp (qt = `REC`_rectype(`%`_list(st^n{st <- `st*`})))] -[visit_exp qt] -[visit_id qt] not free -[visit_exp `REC`_rectype(`%`_list(st^n{st <- `st*`}))] -[visit_exp (`%`_list(st^n{st <- `st*`}))] -[visit_exp `%`_list(st^n{st <- `st*`})] -[visit_exp (st^n{st <- `st*`})] -[visit_exp st^n{st <- `st*`}] -[scope_enter st] -[visit_exp st] -[visit_id st] not free -[visit_id st] not free -[scope_exit st] -[visit_exp n] -[visit_id n] -[visit_exp `st*`] -[visit_id st*] no dims -[visit_id st*] -[visit_exp (I'' = {`TYPES` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `FIELDS` [], `TYPEDEFS` ?(`_DEF`_deftype(qt, i))^(i -dims \ = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -[check_dims] -DecD dots : () -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I -dims \ I = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I -dims \ I = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I -dims \ I = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -[check_dims] I -dims \ I = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I -dims \ I = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I -dims \ I = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I -dims \ I = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I -dims \ I = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I id id' -[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] -[visit_exp `%`_name(lift(id?{id <- `id?`}))] -[visit_exp (lift(id?{id <- `id?`}))] -[visit_exp lift(id?{id <- `id?`})] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] no dims -[visit_id id?] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp id'] -[visit_id id'] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ((`%`_name(lift(id?{id <- `id?`})) = id') \/ ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`TAGS`_I)))] -[visit_exp (`%`_name(lift(id?{id <- `id?`})) = id')] -[visit_exp `%`_name(lift(id?{id <- `id?`}))] -[visit_exp (lift(id?{id <- `id?`}))] -[visit_exp lift(id?{id <- `id?`})] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] not free -[visit_id id?] no dims -[visit_exp id'] -[visit_id id'] not free -[visit_exp ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`TAGS`_I))] -[visit_exp (id?{id <- `id?`} = ?())] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] not free -[visit_id id?] no dims -[visit_exp ?()] -[visit_exp ~ (?(id') <- I.`TAGS`_I)] -[visit_exp (?(id') <- I.`TAGS`_I)] -[visit_exp ?(id')] -[visit_exp id'] -[visit_id id'] not free -[visit_exp I.`TAGS`_I] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I id id' -[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] -[visit_exp `%`_name(lift(id?{id <- `id?`}))] -[visit_exp (lift(id?{id <- `id?`}))] -[visit_exp lift(id?{id <- `id?`})] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] no dims -[visit_id id?] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp id'] -[visit_id id'] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ((`%`_name(lift(id?{id <- `id?`})) = id') \/ ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`GLOBALS`_I)))] -[visit_exp (`%`_name(lift(id?{id <- `id?`})) = id')] -[visit_exp `%`_name(lift(id?{id <- `id?`}))] -[visit_exp (lift(id?{id <- `id?`}))] -[visit_exp lift(id?{id <- `id?`})] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] not free -[visit_id id?] no dims -[visit_exp id'] -[visit_id id'] not free -[visit_exp ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`GLOBALS`_I))] -[visit_exp (id?{id <- `id?`} = ?())] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] not free -[visit_id id?] no dims -[visit_exp ?()] -[visit_exp ~ (?(id') <- I.`GLOBALS`_I)] -[visit_exp (?(id') <- I.`GLOBALS`_I)] -[visit_exp ?(id')] -[visit_exp id'] -[visit_id id'] not free -[visit_exp I.`GLOBALS`_I] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I id id' -[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] -[visit_exp `%`_name(lift(id?{id <- `id?`}))] -[visit_exp (lift(id?{id <- `id?`}))] -[visit_exp lift(id?{id <- `id?`})] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] no dims -[visit_id id?] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp id'] -[visit_id id'] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ((`%`_name(lift(id?{id <- `id?`})) = id') \/ ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`MEMS`_I)))] -[visit_exp (`%`_name(lift(id?{id <- `id?`})) = id')] -[visit_exp `%`_name(lift(id?{id <- `id?`}))] -[visit_exp (lift(id?{id <- `id?`}))] -[visit_exp lift(id?{id <- `id?`})] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] not free -[visit_id id?] no dims -[visit_exp id'] -[visit_id id'] not free -[visit_exp ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`MEMS`_I))] -[visit_exp (id?{id <- `id?`} = ?())] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] not free -[visit_id id?] no dims -[visit_exp ?()] -[visit_exp ~ (?(id') <- I.`MEMS`_I)] -[visit_exp (?(id') <- I.`MEMS`_I)] -[visit_exp ?(id')] -[visit_exp id'] -[visit_id id'] not free -[visit_exp I.`MEMS`_I] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I id id' -[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] -[visit_exp `%`_name(lift(id?{id <- `id?`}))] -[visit_exp (lift(id?{id <- `id?`}))] -[visit_exp lift(id?{id <- `id?`})] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] no dims -[visit_id id?] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp id'] -[visit_id id'] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ((`%`_name(lift(id?{id <- `id?`})) = id') \/ ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`TABLES`_I)))] -[visit_exp (`%`_name(lift(id?{id <- `id?`})) = id')] -[visit_exp `%`_name(lift(id?{id <- `id?`}))] -[visit_exp (lift(id?{id <- `id?`}))] -[visit_exp lift(id?{id <- `id?`})] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] not free -[visit_id id?] no dims -[visit_exp id'] -[visit_id id'] not free -[visit_exp ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`TABLES`_I))] -[visit_exp (id?{id <- `id?`} = ?())] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] not free -[visit_id id?] no dims -[visit_exp ?()] -[visit_exp ~ (?(id') <- I.`TABLES`_I)] -[visit_exp (?(id') <- I.`TABLES`_I)] -[visit_exp ?(id')] -[visit_exp id'] -[visit_id id'] not free -[visit_exp I.`TABLES`_I] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I id id' -[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] -[visit_exp `%`_name(lift(id?{id <- `id?`}))] -[visit_exp (lift(id?{id <- `id?`}))] -[visit_exp lift(id?{id <- `id?`})] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] no dims -[visit_id id?] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp id'] -[visit_id id'] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ((`%`_name(lift(id?{id <- `id?`})) = id') \/ ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`FUNCS`_I)))] -[visit_exp (`%`_name(lift(id?{id <- `id?`})) = id')] -[visit_exp `%`_name(lift(id?{id <- `id?`}))] -[visit_exp (lift(id?{id <- `id?`}))] -[visit_exp lift(id?{id <- `id?`})] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] not free -[visit_id id?] no dims -[visit_exp id'] -[visit_id id'] not free -[visit_exp ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`FUNCS`_I))] -[visit_exp (id?{id <- `id?`} = ?())] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] not free -[visit_id id?] no dims -[visit_exp ?()] -[visit_exp ~ (?(id') <- I.`FUNCS`_I)] -[visit_exp (?(id') <- I.`FUNCS`_I)] -[visit_exp ?(id')] -[visit_exp id'] -[visit_id id'] not free -[visit_exp I.`FUNCS`_I] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I at at' b id id' n -[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] -[visit_exp `%`_name(lift(id?{id <- `id?`}))] -[visit_exp (lift(id?{id <- `id?`}))] -[visit_exp lift(id?{id <- `id?`})] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] no dims -[visit_id id?] -[visit_exp at?{at <- `at?`}] -[scope_enter at] -[visit_exp at] -[visit_id at] not free -[visit_id at] not free -[scope_exit at] -[visit_exp `at?`] -[visit_id at?] no dims -[visit_id at?] -[visit_exp b*{b <- `b*`}] -[scope_enter b] -[visit_exp b] -[visit_id b] not free -[visit_id b] not free -[scope_exit b] -[visit_exp `b*`] -[visit_id b*] no dims -[visit_id b*] -[visit_exp id'] -[visit_id id'] -[visit_exp at?{at <- `at?`}] -[scope_enter at] -[visit_exp at] -[visit_id at] not free -[visit_id at] not free -[scope_exit at] -[visit_exp `at?`] -[visit_id at?] not free -[visit_id at?] no dims -[visit_exp `%`_u64(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `%`_u64(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] not free -[visit_exp id'] -[visit_id id'] not free -[visit_exp at'] -[visit_id at'] -[visit_exp ((`%`_name(lift(id?{id <- `id?`})) = id') \/ ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`MEMS`_I)))] -[visit_exp (`%`_name(lift(id?{id <- `id?`})) = id')] -[visit_exp `%`_name(lift(id?{id <- `id?`}))] -[visit_exp (lift(id?{id <- `id?`}))] -[visit_exp lift(id?{id <- `id?`})] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] not free -[visit_id id?] no dims -[visit_exp id'] -[visit_id id'] not free -[visit_exp ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`MEMS`_I))] -[visit_exp (id?{id <- `id?`} = ?())] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] not free -[visit_id id?] no dims -[visit_exp ?()] -[visit_exp ~ (?(id') <- I.`MEMS`_I)] -[visit_exp (?(id') <- I.`MEMS`_I)] -[visit_exp ?(id')] -[visit_exp id'] -[visit_id id'] not free -[visit_exp I.`MEMS`_I] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ((at?{at <- `at?`} = ?(at')) \/ ((at?{at <- `at?`} = ?()) /\ (at' = `I32`_addrtype)))] -[visit_exp (at?{at <- `at?`} = ?(at'))] -[visit_exp at?{at <- `at?`}] -[scope_enter at] -[visit_exp at] -[visit_id at] not free -[visit_id at] not free -[scope_exit at] -[visit_exp `at?`] -[visit_id at?] not free -[visit_id at?] no dims -[visit_exp ?(at')] -[visit_exp at'] -[visit_id at'] not free -[visit_exp ((at?{at <- `at?`} = ?()) /\ (at' = `I32`_addrtype))] -[visit_exp (at?{at <- `at?`} = ?())] -[visit_exp at?{at <- `at?`}] -[scope_enter at] -[visit_exp at] -[visit_id at] not free -[visit_id at] not free -[scope_exit at] -[visit_exp `at?`] -[visit_id at?] not free -[visit_id at?] no dims -[visit_exp ?()] -[visit_exp (at' = `I32`_addrtype)] -[visit_exp at'] -[visit_id at'] not free -[visit_exp `I32`_addrtype] -[visit_exp ()] -[visit_exp ((n : nat <:> int) = $ceilz((((|b*{b <- `b*`}| : nat <:> rat) / (64 : nat <:> rat)) * ($Ki : nat <:> rat))))] -[visit_exp (n : nat <:> int)] -[visit_exp n] -[visit_id n] not free -[visit_exp $ceilz((((|b*{b <- `b*`}| : nat <:> rat) / (64 : nat <:> rat)) * ($Ki : nat <:> rat)))] -[visit_exp (((|b*{b <- `b*`}| : nat <:> rat) / (64 : nat <:> rat)) * ($Ki : nat <:> rat))] -[visit_exp ((|b*{b <- `b*`}| : nat <:> rat) / (64 : nat <:> rat))] -[visit_exp (|b*{b <- `b*`}| : nat <:> rat)] -[visit_exp |b*{b <- `b*`}|] -[visit_exp b*{b <- `b*`}] -[scope_enter b] -[visit_exp b] -[visit_id b] not free -[visit_id b] not free -[scope_exit b] -[visit_exp `b*`] -[visit_id b*] not free -[visit_id b*] no dims -[visit_exp (64 : nat <:> rat)] -[visit_exp 64] -[visit_exp ($Ki : nat <:> rat)] -[visit_exp $Ki] -[visit_id I] not free -ps' = (I : I) -[check_dims] I -[check_dims] I at at' e id id' n rt -[visit_exp ?(`%`_name(lift(id?{id <- `id?`})))] -[visit_exp `%`_name(lift(id?{id <- `id?`}))] -[visit_exp (lift(id?{id <- `id?`}))] -[visit_exp lift(id?{id <- `id?`})] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] no dims -[visit_id id?] -[visit_exp at?{at <- `at?`}] -[scope_enter at] -[visit_exp at] -[visit_id at] not free -[visit_id at] not free -[scope_exit at] -[visit_exp `at?`] -[visit_id at?] no dims -[visit_id at?] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp (rt, e*{e <- `e*`})] -[visit_exp rt] -[visit_id rt] -[visit_exp e*{e <- `e*`}] -[scope_enter e] -[visit_exp e] -[visit_id e] not free -[visit_id e] not free -[scope_exit e] -[visit_exp `e*`] -[visit_id e*] no dims -[visit_id e*] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp id'] -[visit_id id'] -[visit_exp at?{at <- `at?`}] -[scope_enter at] -[visit_exp at] -[visit_id at] not free -[visit_id at] not free -[scope_exit at] -[visit_exp `at?`] -[visit_id at?] not free -[visit_id at?] no dims -[visit_exp `%`_u64(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] -[visit_exp `%`_u64(n)] -[visit_exp (n)] -[visit_exp n] -[visit_id n] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp id'] -[visit_id id'] not free -[visit_exp at'] -[visit_id at'] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ((`%`_name(lift(id?{id <- `id?`})) = id') \/ ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`TABLES`_I)))] -[visit_exp (`%`_name(lift(id?{id <- `id?`})) = id')] -[visit_exp `%`_name(lift(id?{id <- `id?`}))] -[visit_exp (lift(id?{id <- `id?`}))] -[visit_exp lift(id?{id <- `id?`})] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] not free -[visit_id id?] no dims -[visit_exp id'] -[visit_id id'] not free -[visit_exp ((id?{id <- `id?`} = ?()) /\ ~ (?(id') <- I.`TABLES`_I))] -[visit_exp (id?{id <- `id?`} = ?())] -[visit_exp id?{id <- `id?`}] -[scope_enter id] -[visit_exp id] -[visit_id id] not free -[visit_id id] not free -[scope_exit id] -[visit_exp `id?`] -[visit_id id?] not free -[visit_id id?] no dims -[visit_exp ?()] -[visit_exp ~ (?(id') <- I.`TABLES`_I)] -[visit_exp (?(id') <- I.`TABLES`_I)] -[visit_exp ?(id')] -[visit_exp id'] -[visit_id id'] not free -[visit_exp I.`TABLES`_I] -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_exp ((at?{at <- `at?`} = ?(at')) \/ ((at?{at <- `at?`} = ?()) /\ (at' = `I32`_addrtype)))] -[visit_exp (at?{at <- `at?`} = ?(at'))] -[visit_exp at?{at <- `at?`}] -[scope_enter at] -[visit_exp at] -[visit_id at] not free -[visit_id at] not free -[scope_exit at] -[visit_exp `at?`] -[visit_id at?] not free -[visit_id at?] no dims -[visit_exp ?(at')] -[visit_exp at'] -[visit_id at'] not free -[visit_exp ((at?{at <- `at?`} = ?()) /\ (at' = `I32`_addrtype))] -[visit_exp (at?{at <- `at?`} = ?())] -[visit_exp at?{at <- `at?`}] -[scope_enter at] -[visit_exp at] -[visit_id at] not free -[visit_id at] not free -[scope_exit at] -[visit_exp `at?`] -[visit_id at?] not free -[visit_id at?] no dims -[visit_exp ?()] -[visit_exp (at' = `I32`_addrtype)] -[visit_exp at'] -[visit_id at'] not free -[visit_exp `I32`_addrtype] -[visit_exp ()] -[visit_exp (n = |e*{e <- `e*`}|)] -[visit_exp n] -[visit_id n] not free -[visit_exp |e*{e <- `e*`}|] -[visit_exp e*{e <- `e*`}] -[scope_enter e] -[visit_exp e] -[visit_id e] not free -[visit_id e] not free -[scope_exit e] -[visit_exp `e*`] -[visit_id e*] not free -[visit_id e*] no dims -[visit_id I] not free -[check_dims] -[check_dims] _ -DecD typesd(decl*) : type* -[visit_id _] not free -[check_dims] _ -DecD importsd(decl*) : import* -[visit_id _] not free -[check_dims] _ -DecD tagsd(decl*) : tag* -[visit_id _] not free -[check_dims] _ -DecD globalsd(decl*) : global* -[visit_id _] not free -[check_dims] _ -DecD memsd(decl*) : mem* -[visit_id _] not free -[check_dims] _ -DecD tablesd(decl*) : table* -[visit_id _] not free -[check_dims] _ -DecD funcsd(decl*) : func* -[visit_id _] not free -[check_dims] _ -DecD datasd(decl*) : data* -[visit_id _] not free -[check_dims] _ -DecD elemsd(decl*) : elem* -[visit_id _] not free -[check_dims] _ -DecD startsd(decl*) : start* -[visit_id _] not free -[check_dims] _ -DecD exportsd(decl*) : export* -[visit_id _] not free -[check_dims] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - def $typesd([]) = [] -[check_dims] decl' type -[visit_exp [(type : type <: decl)] ++ decl'*{decl' <- `decl'*`}] -[visit_exp [(type : type <: decl)]] -[visit_exp (type : type <: decl)] -[visit_exp type] -[visit_id type] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] no dims -[visit_id decl'*] -[visit_exp [type] ++ $typesd(decl'*{decl' <- `decl'*`})] -[visit_exp [type]] -[visit_exp type] -[visit_id type] not free -[visit_exp $typesd(decl'*{decl' <- `decl'*`})] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] not free -[visit_id decl'*] no dims -=> - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - def $typesd{type : type, `decl'*` : decl*}([(type : type <: decl)] ++ decl'*{decl' <- `decl'*`}) = [type] ++ $typesd(decl'*{decl' <- `decl'*`}) -[check_dims] decl decl' -[visit_exp [decl] ++ decl'*{decl' <- `decl'*`}] -[visit_exp [decl]] -[visit_exp decl] -[visit_id decl] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] no dims -[visit_id decl'*] -[visit_exp $typesd(decl'*{decl' <- `decl'*`})] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] not free -[visit_id decl'*] no dims -=> - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) - -- otherwise -[check_dims] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - def $importsd([]) = [] -[check_dims] decl' import -[visit_exp [(import : import <: decl)] ++ decl'*{decl' <- `decl'*`}] -[visit_exp [(import : import <: decl)]] -[visit_exp (import : import <: decl)] -[visit_exp import] -[visit_id import] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] no dims -[visit_id decl'*] -[visit_exp [import] ++ $importsd(decl'*{decl' <- `decl'*`})] -[visit_exp [import]] -[visit_exp import] -[visit_id import] not free -[visit_exp $importsd(decl'*{decl' <- `decl'*`})] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] not free -[visit_id decl'*] no dims -=> - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - def $importsd{import : import, `decl'*` : decl*}([(import : import <: decl)] ++ decl'*{decl' <- `decl'*`}) = [import] ++ $importsd(decl'*{decl' <- `decl'*`}) -[check_dims] decl decl' -[visit_exp [decl] ++ decl'*{decl' <- `decl'*`}] -[visit_exp [decl]] -[visit_exp decl] -[visit_id decl] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] no dims -[visit_id decl'*] -[visit_exp $importsd(decl'*{decl' <- `decl'*`})] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] not free -[visit_id decl'*] no dims -=> - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) - -- otherwise -[check_dims] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - def $tagsd([]) = [] -[check_dims] decl' tag -[visit_exp [(tag : tag <: decl)] ++ decl'*{decl' <- `decl'*`}] -[visit_exp [(tag : tag <: decl)]] -[visit_exp (tag : tag <: decl)] -[visit_exp tag] -[visit_id tag] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] no dims -[visit_id decl'*] -[visit_exp [tag] ++ $tagsd(decl'*{decl' <- `decl'*`})] -[visit_exp [tag]] -[visit_exp tag] -[visit_id tag] not free -[visit_exp $tagsd(decl'*{decl' <- `decl'*`})] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] not free -[visit_id decl'*] no dims -=> - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - def $tagsd{tag : tag, `decl'*` : decl*}([(tag : tag <: decl)] ++ decl'*{decl' <- `decl'*`}) = [tag] ++ $tagsd(decl'*{decl' <- `decl'*`}) -[check_dims] decl decl' -[visit_exp [decl] ++ decl'*{decl' <- `decl'*`}] -[visit_exp [decl]] -[visit_exp decl] -[visit_id decl] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] no dims -[visit_id decl'*] -[visit_exp $tagsd(decl'*{decl' <- `decl'*`})] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] not free -[visit_id decl'*] no dims -=> - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) - -- otherwise -[check_dims] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - def $globalsd([]) = [] -[check_dims] decl' global -[visit_exp [(global : global <: decl)] ++ decl'*{decl' <- `decl'*`}] -[visit_exp [(global : global <: decl)]] -[visit_exp (global : global <: decl)] -[visit_exp global] -[visit_id global] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] no dims -[visit_id decl'*] -[visit_exp [global] ++ $globalsd(decl'*{decl' <- `decl'*`})] -[visit_exp [global]] -[visit_exp global] -[visit_id global] not free -[visit_exp $globalsd(decl'*{decl' <- `decl'*`})] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] not free -[visit_id decl'*] no dims -=> - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - def $globalsd{global : global, `decl'*` : decl*}([(global : global <: decl)] ++ decl'*{decl' <- `decl'*`}) = [global] ++ $globalsd(decl'*{decl' <- `decl'*`}) -[check_dims] decl decl' -[visit_exp [decl] ++ decl'*{decl' <- `decl'*`}] -[visit_exp [decl]] -[visit_exp decl] -[visit_id decl] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] no dims -[visit_id decl'*] -[visit_exp $globalsd(decl'*{decl' <- `decl'*`})] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] not free -[visit_id decl'*] no dims -=> - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) - -- otherwise -[check_dims] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - def $memsd([]) = [] -[check_dims] decl' mem -[visit_exp [(mem : mem <: decl)] ++ decl'*{decl' <- `decl'*`}] -[visit_exp [(mem : mem <: decl)]] -[visit_exp (mem : mem <: decl)] -[visit_exp mem] -[visit_id mem] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] no dims -[visit_id decl'*] -[visit_exp [mem] ++ $memsd(decl'*{decl' <- `decl'*`})] -[visit_exp [mem]] -[visit_exp mem] -[visit_id mem] not free -[visit_exp $memsd(decl'*{decl' <- `decl'*`})] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] not free -[visit_id decl'*] no dims -=> - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - def $memsd{mem : mem, `decl'*` : decl*}([(mem : mem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [mem] ++ $memsd(decl'*{decl' <- `decl'*`}) -[check_dims] decl decl' -[visit_exp [decl] ++ decl'*{decl' <- `decl'*`}] -[visit_exp [decl]] -[visit_exp decl] -[visit_id decl] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] no dims -[visit_id decl'*] -[visit_exp $memsd(decl'*{decl' <- `decl'*`})] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] not free -[visit_id decl'*] no dims -=> - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) - -- otherwise -[check_dims] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - def $tablesd([]) = [] -[check_dims] decl' table -[visit_exp [(table : table <: decl)] ++ decl'*{decl' <- `decl'*`}] -[visit_exp [(table : table <: decl)]] -[visit_exp (table : table <: decl)] -[visit_exp table] -[visit_id table] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] no dims -[visit_id decl'*] -[visit_exp [table] ++ $tablesd(decl'*{decl' <- `decl'*`})] -[visit_exp [table]] -[visit_exp table] -[visit_id table] not free -[visit_exp $tablesd(decl'*{decl' <- `decl'*`})] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] not free -[visit_id decl'*] no dims -=> - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - def $tablesd{table : table, `decl'*` : decl*}([(table : table <: decl)] ++ decl'*{decl' <- `decl'*`}) = [table] ++ $tablesd(decl'*{decl' <- `decl'*`}) -[check_dims] decl decl' -[visit_exp [decl] ++ decl'*{decl' <- `decl'*`}] -[visit_exp [decl]] -[visit_exp decl] -[visit_id decl] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] no dims -[visit_id decl'*] -[visit_exp $tablesd(decl'*{decl' <- `decl'*`})] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] not free -[visit_id decl'*] no dims -=> - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) - -- otherwise -[check_dims] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - def $funcsd([]) = [] -[check_dims] decl' func -[visit_exp [(func : func <: decl)] ++ decl'*{decl' <- `decl'*`}] -[visit_exp [(func : func <: decl)]] -[visit_exp (func : func <: decl)] -[visit_exp func] -[visit_id func] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] no dims -[visit_id decl'*] -[visit_exp [func] ++ $funcsd(decl'*{decl' <- `decl'*`})] -[visit_exp [func]] -[visit_exp func] -[visit_id func] not free -[visit_exp $funcsd(decl'*{decl' <- `decl'*`})] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] not free -[visit_id decl'*] no dims -=> - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - def $funcsd{func : func, `decl'*` : decl*}([(func : func <: decl)] ++ decl'*{decl' <- `decl'*`}) = [func] ++ $funcsd(decl'*{decl' <- `decl'*`}) -[check_dims] decl decl' -[visit_exp [decl] ++ decl'*{decl' <- `decl'*`}] -[visit_exp [decl]] -[visit_exp decl] -[visit_id decl] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] no dims -[visit_id decl'*] -[visit_exp $funcsd(decl'*{decl' <- `decl'*`})] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] not free -[visit_id decl'*] no dims -=> - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) - -- otherwise -[check_dims] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - def $datasd([]) = [] -[check_dims] data decl' -[visit_exp [(data : data <: decl)] ++ decl'*{decl' <- `decl'*`}] -[visit_exp [(data : data <: decl)]] -[visit_exp (data : data <: decl)] -[visit_exp data] -[visit_id data] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] no dims -[visit_id decl'*] -[visit_exp [data] ++ $datasd(decl'*{decl' <- `decl'*`})] -[visit_exp [data]] -[visit_exp data] -[visit_id data] not free -[visit_exp $datasd(decl'*{decl' <- `decl'*`})] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] not free -[visit_id decl'*] no dims -=> - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - def $datasd{data : data, `decl'*` : decl*}([(data : data <: decl)] ++ decl'*{decl' <- `decl'*`}) = [data] ++ $datasd(decl'*{decl' <- `decl'*`}) -[check_dims] decl decl' -[visit_exp [decl] ++ decl'*{decl' <- `decl'*`}] -[visit_exp [decl]] -[visit_exp decl] -[visit_id decl] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] no dims -[visit_id decl'*] -[visit_exp $datasd(decl'*{decl' <- `decl'*`})] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] not free -[visit_id decl'*] no dims -=> - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) - -- otherwise -[check_dims] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - def $elemsd([]) = [] -[check_dims] decl' elem -[visit_exp [(elem : elem <: decl)] ++ decl'*{decl' <- `decl'*`}] -[visit_exp [(elem : elem <: decl)]] -[visit_exp (elem : elem <: decl)] -[visit_exp elem] -[visit_id elem] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] no dims -[visit_id decl'*] -[visit_exp [elem] ++ $elemsd(decl'*{decl' <- `decl'*`})] -[visit_exp [elem]] -[visit_exp elem] -[visit_id elem] not free -[visit_exp $elemsd(decl'*{decl' <- `decl'*`})] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] not free -[visit_id decl'*] no dims -=> - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - def $elemsd{elem : elem, `decl'*` : decl*}([(elem : elem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [elem] ++ $elemsd(decl'*{decl' <- `decl'*`}) -[check_dims] decl decl' -[visit_exp [decl] ++ decl'*{decl' <- `decl'*`}] -[visit_exp [decl]] -[visit_exp decl] -[visit_id decl] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] no dims -[visit_id decl'*] -[visit_exp $elemsd(decl'*{decl' <- `decl'*`})] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] not free -[visit_id decl'*] no dims -=> - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) - -- otherwise -[check_dims] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - def $startsd([]) = [] -[check_dims] decl' start -[visit_exp [(start : start <: decl)] ++ decl'*{decl' <- `decl'*`}] -[visit_exp [(start : start <: decl)]] -[visit_exp (start : start <: decl)] -[visit_exp start] -[visit_id start] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] no dims -[visit_id decl'*] -[visit_exp [start] ++ $startsd(decl'*{decl' <- `decl'*`})] -[visit_exp [start]] -[visit_exp start] -[visit_id start] not free -[visit_exp $startsd(decl'*{decl' <- `decl'*`})] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] not free -[visit_id decl'*] no dims -=> - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - def $startsd{start : start, `decl'*` : decl*}([(start : start <: decl)] ++ decl'*{decl' <- `decl'*`}) = [start] ++ $startsd(decl'*{decl' <- `decl'*`}) -[check_dims] decl decl' -[visit_exp [decl] ++ decl'*{decl' <- `decl'*`}] -[visit_exp [decl]] -[visit_exp decl] -[visit_id decl] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] no dims -[visit_id decl'*] -[visit_exp $startsd(decl'*{decl' <- `decl'*`})] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] not free -[visit_id decl'*] no dims -=> - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) - -- otherwise -[check_dims] -[visit_exp []] -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - def $exportsd([]) = [] -[check_dims] decl' export -[visit_exp [(export : export <: decl)] ++ decl'*{decl' <- `decl'*`}] -[visit_exp [(export : export <: decl)]] -[visit_exp (export : export <: decl)] -[visit_exp export] -[visit_id export] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] no dims -[visit_id decl'*] -[visit_exp [export] ++ $exportsd(decl'*{decl' <- `decl'*`})] -[visit_exp [export]] -[visit_exp export] -[visit_id export] not free -[visit_exp $exportsd(decl'*{decl' <- `decl'*`})] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] not free -[visit_id decl'*] no dims -=> - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - def $exportsd{export : export, `decl'*` : decl*}([(export : export <: decl)] ++ decl'*{decl' <- `decl'*`}) = [export] ++ $exportsd(decl'*{decl' <- `decl'*`}) -[check_dims] decl decl' -[visit_exp [decl] ++ decl'*{decl' <- `decl'*`}] -[visit_exp [decl]] -[visit_exp decl] -[visit_id decl] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] no dims -[visit_id decl'*] -[visit_exp $exportsd(decl'*{decl' <- `decl'*`})] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] not free -[visit_id decl'*] no dims -=> - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) - -- otherwise -[check_dims] _ -DecD ordered(decl*) : bool -[visit_id _] not free -[check_dims] decl' -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] no dims -[visit_id decl'*] -[visit_exp true] -[visit_exp ($importsd(decl'*{decl' <- `decl'*`}) = [])] -[visit_exp $importsd(decl'*{decl' <- `decl'*`})] -[visit_exp decl'*{decl' <- `decl'*`}] -[scope_enter decl'] -[visit_exp decl'] -[visit_id decl'] not free -[visit_id decl'] not free -[scope_exit decl'] -[visit_exp `decl'*`] -[visit_id decl'*] not free -[visit_id decl'*] no dims -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - def $ordered{`decl'*` : decl*}(decl'*{decl' <- `decl'*`}) = true - -- if ($importsd(decl'*{decl' <- `decl'*`}) = []) -[check_dims] decl_1 decl_2 import -[visit_exp decl_1*{decl_1 <- `decl_1*`} ++ [(import : import <: decl)] ++ decl_2*{decl_2 <- `decl_2*`}] -[visit_exp decl_1*{decl_1 <- `decl_1*`}] -[scope_enter decl_1] -[visit_exp decl_1] -[visit_id decl_1] not free -[visit_id decl_1] not free -[scope_exit decl_1] -[visit_exp `decl_1*`] -[visit_id decl_1*] no dims -[visit_id decl_1*] -[visit_exp [(import : import <: decl)] ++ decl_2*{decl_2 <- `decl_2*`}] -[visit_exp [(import : import <: decl)]] -[visit_exp (import : import <: decl)] -[visit_exp import] -[visit_id import] -[visit_exp decl_2*{decl_2 <- `decl_2*`}] -[scope_enter decl_2] -[visit_exp decl_2] -[visit_id decl_2] not free -[visit_id decl_2] not free -[scope_exit decl_2] -[visit_exp `decl_2*`] -[visit_id decl_2*] no dims -[visit_id decl_2*] -[visit_exp (((((($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*`}) = []))] -[visit_exp ((((($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*`}) = []))] -[visit_exp (((($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*`}) = []))] -[visit_exp ((($importsd(decl_1*{decl_1 <- `decl_1*`}) = []) /\ ($tagsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1*{decl_1 <- `decl_1*`}) = []))] -[visit_exp (($importsd(decl_1*{decl_1 <- `decl_1*`}) = []) /\ ($tagsd(decl_1*{decl_1 <- `decl_1*`}) = []))] -[visit_exp ($importsd(decl_1*{decl_1 <- `decl_1*`}) = [])] -[visit_exp $importsd(decl_1*{decl_1 <- `decl_1*`})] -[visit_exp decl_1*{decl_1 <- `decl_1*`}] -[scope_enter decl_1] -[visit_exp decl_1] -[visit_id decl_1] not free -[visit_id decl_1] not free -[scope_exit decl_1] -[visit_exp `decl_1*`] -[visit_id decl_1*] not free -[visit_id decl_1*] no dims -[visit_exp []] -[visit_exp ($tagsd(decl_1*{decl_1 <- `decl_1*`}) = [])] -[visit_exp $tagsd(decl_1*{decl_1 <- `decl_1*`})] -[visit_exp decl_1*{decl_1 <- `decl_1*`}] -[scope_enter decl_1] -[visit_exp decl_1] -[visit_id decl_1] not free -[visit_id decl_1] not free -[scope_exit decl_1] -[visit_exp `decl_1*`] -[visit_id decl_1*] not free -[visit_id decl_1*] no dims -[visit_exp []] -[visit_exp ($globalsd(decl_1*{decl_1 <- `decl_1*`}) = [])] -[visit_exp $globalsd(decl_1*{decl_1 <- `decl_1*`})] -[visit_exp decl_1*{decl_1 <- `decl_1*`}] -[scope_enter decl_1] -[visit_exp decl_1] -[visit_id decl_1] not free -[visit_id decl_1] not free -[scope_exit decl_1] -[visit_exp `decl_1*`] -[visit_id decl_1*] not free -[visit_id decl_1*] no dims -[visit_exp []] -[visit_exp ($memsd(decl_1*{decl_1 <- `decl_1*`}) = [])] -[visit_exp $memsd(decl_1*{decl_1 <- `decl_1*`})] -[visit_exp decl_1*{decl_1 <- `decl_1*`}] -[scope_enter decl_1] -[visit_exp decl_1] -[visit_id decl_1] not free -[visit_id decl_1] not free -[scope_exit decl_1] -[visit_exp `decl_1*`] -[visit_id decl_1*] not free -[visit_id decl_1*] no dims -[visit_exp []] -[visit_exp ($tablesd(decl_1*{decl_1 <- `decl_1*`}) = [])] -[visit_exp $tablesd(decl_1*{decl_1 <- `decl_1*`})] -[visit_exp decl_1*{decl_1 <- `decl_1*`}] -[scope_enter decl_1] -[visit_exp decl_1] -[visit_id decl_1] not free -[visit_id decl_1] not free -[scope_exit decl_1] -[visit_exp `decl_1*`] -[visit_id decl_1*] not free -[visit_id decl_1*] no dims -[visit_exp []] -[visit_exp ($funcsd(decl_1*{decl_1 <- `decl_1*`}) = [])] -[visit_exp $funcsd(decl_1*{decl_1 <- `decl_1*`})] -[visit_exp decl_1*{decl_1 <- `decl_1*`}] -[scope_enter decl_1] -[visit_exp decl_1] -[visit_id decl_1] not free -[visit_id decl_1] not free -[scope_exit decl_1] -[visit_exp `decl_1*`] -[visit_id decl_1*] not free -[visit_id decl_1*] no dims -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/6.4-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*`}) = [])) -ps' = (I : I) -[check_dims] I _ -[check_dims] I _ -dims \ I = , _ -[visit_exp (`` : (type, idctxt) <: (decl, idctxt))] -[visit_exp ``] -[visit_id ] -[scope_enter _] -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_exit _] -[scope_exit _] -[scope_enter _] -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_exit _] -[scope_exit _] -[visit_exp ``] -[visit_id ] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I _ -dims \ I = , _ -[visit_exp (`` : (import, idctxt) <: (decl, idctxt))] -[visit_exp ``] -[visit_id ] -[scope_enter _] -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_exit _] -[scope_exit _] -[scope_enter _] -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_exit _] -[scope_exit _] -[visit_exp ``] -[visit_id ] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I _ -dims \ I = , _ -[visit_exp (`` : (tag, idctxt) <: (decl, idctxt))] -[visit_exp ``] -[visit_id ] -[scope_enter _] -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_exit _] -[scope_exit _] -[scope_enter _] -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_exit _] -[scope_exit _] -[visit_exp ``] -[visit_id ] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I _ -dims \ I = , _ -[visit_exp (`` : (global, idctxt) <: (decl, idctxt))] -[visit_exp ``] -[visit_id ] -[scope_enter _] -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_exit _] -[scope_exit _] -[scope_enter _] -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_exit _] -[scope_exit _] -[visit_exp ``] -[visit_id ] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I _ -dims \ I = , _ -[visit_exp (`` : (mem, idctxt) <: (decl, idctxt))] -[visit_exp ``] -[visit_id ] -[scope_enter _] -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_exit _] -[scope_exit _] -[scope_enter _] -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_exit _] -[scope_exit _] -[visit_exp ``] -[visit_id ] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I _ -dims \ I = , _ -[visit_exp (`` : (table, idctxt) <: (decl, idctxt))] -[visit_exp ``] -[visit_id ] -[scope_enter _] -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_exit _] -[scope_exit _] -[scope_enter _] -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_exit _] -[scope_exit _] -[visit_exp ``] -[visit_id ] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I _ -dims \ I = , _ -[visit_exp (`` : (func, idctxt) <: (decl, idctxt))] -[visit_exp ``] -[visit_id ] -[scope_enter _] -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_exit _] -[scope_exit _] -[scope_enter _] -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_exit _] -[scope_exit _] -[visit_exp ``] -[visit_id ] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I _ -dims \ I = , _ -[visit_exp (`` : (data, idctxt) <: (decl, idctxt))] -[visit_exp ``] -[visit_id ] -[scope_enter _] -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_exit _] -[scope_exit _] -[scope_enter _] -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_exit _] -[scope_exit _] -[visit_exp ``] -[visit_id ] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I _ -dims \ I = , _ -[visit_exp (`` : (elem, idctxt) <: (decl, idctxt))] -[visit_exp ``] -[visit_id ] -[scope_enter _] -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_exit _] -[scope_exit _] -[scope_enter _] -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_exit _] -[scope_exit _] -[visit_exp ``] -[visit_id ] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I _ -dims \ I = , _ -[visit_exp (`` : (start, idctxt) <: (decl, idctxt))] -[visit_exp ``] -[visit_id ] -[scope_enter _] -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_exit _] -[scope_exit _] -[scope_enter _] -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_exit _] -[scope_exit _] -[visit_exp ``] -[visit_id ] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[check_dims] I _ -dims \ I = , _ -[visit_exp (`` : (export, idctxt) <: (decl, idctxt))] -[visit_exp ``] -[visit_id ] -[scope_enter _] -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_exit _] -[scope_exit _] -[scope_enter _] -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_exit _] -[scope_exit _] -[visit_exp ``] -[visit_id ] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit _] -ps' = -[check_dims] -[check_dims] I I' data decl elem export func global import mem start table tag type -dims \ = I, I', data, decl, elem, export, func, global, import, mem, start, table, tag, type -[visit_exp `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*`})] -[visit_exp (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*`})] -[visit_exp type*{type <- `type*`}] -[scope_enter type] -[visit_exp type] -[visit_id type] not free -[visit_id type] not free -[scope_exit type] -[visit_exp `type*`] -[visit_id type*] no dims -[visit_id type*] -[visit_exp import*{import <- `import*`}] -[scope_enter import] -[visit_exp import] -[visit_id import] not free -[visit_id import] not free -[scope_exit import] -[visit_exp `import*`] -[visit_id import*] no dims -[visit_id import*] -[visit_exp tag*{tag <- `tag*`}] -[scope_enter tag] -[visit_exp tag] -[visit_id tag] not free -[visit_id tag] not free -[scope_exit tag] -[visit_exp `tag*`] -[visit_id tag*] no dims -[visit_id tag*] -[visit_exp global*{global <- `global*`}] -[scope_enter global] -[visit_exp global] -[visit_id global] not free -[visit_id global] not free -[scope_exit global] -[visit_exp `global*`] -[visit_id global*] no dims -[visit_id global*] -[visit_exp mem*{mem <- `mem*`}] -[scope_enter mem] -[visit_exp mem] -[visit_id mem] not free -[visit_id mem] not free -[scope_exit mem] -[visit_exp `mem*`] -[visit_id mem*] no dims -[visit_id mem*] -[visit_exp table*{table <- `table*`}] -[scope_enter table] -[visit_exp table] -[visit_id table] not free -[visit_id table] not free -[scope_exit table] -[visit_exp `table*`] -[visit_id table*] no dims -[visit_id table*] -[visit_exp func*{func <- `func*`}] -[scope_enter func] -[visit_exp func] -[visit_id func] not free -[visit_id func] not free -[scope_exit func] -[visit_exp `func*`] -[visit_id func*] no dims -[visit_id func*] -[visit_exp data*{data <- `data*`}] -[scope_enter data] -[visit_exp data] -[visit_id data] not free -[visit_id data] not free -[scope_exit data] -[visit_exp `data*`] -[visit_id data*] no dims -[visit_id data*] -[visit_exp elem*{elem <- `elem*`}] -[scope_enter elem] -[visit_exp elem] -[visit_id elem] not free -[visit_id elem] not free -[scope_exit elem] -[visit_exp `elem*`] -[visit_id elem*] no dims -[visit_id elem*] -[visit_exp start?{start <- `start?`}] -[scope_enter start] -[visit_exp start] -[visit_id start] not free -[visit_id start] not free -[scope_exit start] -[visit_exp `start?`] -[visit_id start?] no dims -[visit_id start?] -[visit_exp export*{export <- `export*`}] -[scope_enter export] -[visit_exp export] -[visit_id export] not free -[visit_id export] not free -[scope_exit export] -[visit_exp `export*`] -[visit_id export*] no dims -[visit_id export*] -[visit_exp (decl, I)*{I <- `I*`, decl <- `decl*`}] -[scope_enter I] -[scope_enter decl] -[visit_exp (decl, I)] -[visit_exp decl] -[visit_id decl] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] not free -[visit_id decl] not free -[scope_exit decl] -[scope_exit I] -[visit_exp `I*`] -[visit_id I*] no dims -[visit_id I*] -[visit_exp `decl*`] -[visit_id decl*] no dims -[visit_id decl*] -[visit_exp I'] -[visit_id I'] -[visit_exp (I' = $concat_idctxt(I*{I <- `I*`}))] -[visit_exp I'] -[visit_id I'] not free -[visit_exp $concat_idctxt(I*{I <- `I*`})] -[visit_exp I*{I <- `I*`}] -[scope_enter I] -[visit_exp I] -[visit_id I] not free -[visit_id I] not free -[scope_exit I] -[visit_exp `I*`] -[visit_id I*] not free -[visit_id I*] no dims -[visit_exp I'] -[visit_id I'] not free -[visit_exp (type*{type <- `type*`} = $typesd(decl*{decl <- `decl*`}))] -[visit_exp type*{type <- `type*`}] -[scope_enter type] -[visit_exp type] -[visit_id type] not free -[visit_id type] not free -[scope_exit type] -[visit_exp `type*`] -[visit_id type*] not free -[visit_id type*] no dims -[visit_exp $typesd(decl*{decl <- `decl*`})] -[visit_exp decl*{decl <- `decl*`}] -[scope_enter decl] -[visit_exp decl] -[visit_id decl] not free -[visit_id decl] not free -[scope_exit decl] -[visit_exp `decl*`] -[visit_id decl*] not free -[visit_id decl*] no dims -[visit_exp (import*{import <- `import*`} = $importsd(decl*{decl <- `decl*`}))] -[visit_exp import*{import <- `import*`}] -[scope_enter import] -[visit_exp import] -[visit_id import] not free -[visit_id import] not free -[scope_exit import] -[visit_exp `import*`] -[visit_id import*] not free -[visit_id import*] no dims -[visit_exp $importsd(decl*{decl <- `decl*`})] -[visit_exp decl*{decl <- `decl*`}] -[scope_enter decl] -[visit_exp decl] -[visit_id decl] not free -[visit_id decl] not free -[scope_exit decl] -[visit_exp `decl*`] -[visit_id decl*] not free -[visit_id decl*] no dims -[visit_exp (tag*{tag <- `tag*`} = $tagsd(decl*{decl <- `decl*`}))] -[visit_exp tag*{tag <- `tag*`}] -[scope_enter tag] -[visit_exp tag] -[visit_id tag] not free -[visit_id tag] not free -[scope_exit tag] -[visit_exp `tag*`] -[visit_id tag*] not free -[visit_id tag*] no dims -[visit_exp $tagsd(decl*{decl <- `decl*`})] -[visit_exp decl*{decl <- `decl*`}] -[scope_enter decl] -[visit_exp decl] -[visit_id decl] not free -[visit_id decl] not free -[scope_exit decl] -[visit_exp `decl*`] -[visit_id decl*] not free -[visit_id decl*] no dims -[visit_exp (global*{global <- `global*`} = $globalsd(decl*{decl <- `decl*`}))] -[visit_exp global*{global <- `global*`}] -[scope_enter global] -[visit_exp global] -[visit_id global] not free -[visit_id global] not free -[scope_exit global] -[visit_exp `global*`] -[visit_id global*] not free -[visit_id global*] no dims -[visit_exp $globalsd(decl*{decl <- `decl*`})] -[visit_exp decl*{decl <- `decl*`}] -[scope_enter decl] -[visit_exp decl] -[visit_id decl] not free -[visit_id decl] not free -[scope_exit decl] -[visit_exp `decl*`] -[visit_id decl*] not free -[visit_id decl*] no dims -[visit_exp (mem*{mem <- `mem*`} = $memsd(decl*{decl <- `decl*`}))] -[visit_exp mem*{mem <- `mem*`}] -[scope_enter mem] -[visit_exp mem] -[visit_id mem] not free -[visit_id mem] not free -[scope_exit mem] -[visit_exp `mem*`] -[visit_id mem*] not free -[visit_id mem*] no dims -[visit_exp $memsd(decl*{decl <- `decl*`})] -[visit_exp decl*{decl <- `decl*`}] -[scope_enter decl] -[visit_exp decl] -[visit_id decl] not free -[visit_id decl] not free -[scope_exit decl] -[visit_exp `decl*`] -[visit_id decl*] not free -[visit_id decl*] no dims -[visit_exp (table*{table <- `table*`} = $tablesd(decl*{decl <- `decl*`}))] -[visit_exp table*{table <- `table*`}] -[scope_enter table] -[visit_exp table] -[visit_id table] not free -[visit_id table] not free -[scope_exit table] -[visit_exp `table*`] -[visit_id table*] not free -[visit_id table*] no dims -[visit_exp $tablesd(decl*{decl <- `decl*`})] -[visit_exp decl*{decl <- `decl*`}] -[scope_enter decl] -[visit_exp decl] -[visit_id decl] not free -[visit_id decl] not free -[scope_exit decl] -[visit_exp `decl*`] -[visit_id decl*] not free -[visit_id decl*] no dims -[visit_exp (func*{func <- `func*`} = $funcsd(decl*{decl <- `decl*`}))] -[visit_exp func*{func <- `func*`}] -[scope_enter func] -[visit_exp func] -[visit_id func] not free -[visit_id func] not free -[scope_exit func] -[visit_exp `func*`] -[visit_id func*] not free -[visit_id func*] no dims -[visit_exp $funcsd(decl*{decl <- `decl*`})] -[visit_exp decl*{decl <- `decl*`}] -[scope_enter decl] -[visit_exp decl] -[visit_id decl] not free -[visit_id decl] not free -[scope_exit decl] -[visit_exp `decl*`] -[visit_id decl*] not free -[visit_id decl*] no dims -[visit_exp (data*{data <- `data*`} = $datasd(decl*{decl <- `decl*`}))] -[visit_exp data*{data <- `data*`}] -[scope_enter data] -[visit_exp data] -[visit_id data] not free -[visit_id data] not free -[scope_exit data] -[visit_exp `data*`] -[visit_id data*] not free -[visit_id data*] no dims -[visit_exp $datasd(decl*{decl <- `decl*`})] -[visit_exp decl*{decl <- `decl*`}] -[scope_enter decl] -[visit_exp decl] -[visit_id decl] not free -[visit_id decl] not free -[scope_exit decl] -[visit_exp `decl*`] -[visit_id decl*] not free -[visit_id decl*] no dims -[visit_exp (elem*{elem <- `elem*`} = $elemsd(decl*{decl <- `decl*`}))] -[visit_exp elem*{elem <- `elem*`}] -[scope_enter elem] -[visit_exp elem] -[visit_id elem] not free -[visit_id elem] not free -[scope_exit elem] -[visit_exp `elem*`] -[visit_id elem*] not free -[visit_id elem*] no dims -[visit_exp $elemsd(decl*{decl <- `decl*`})] -[visit_exp decl*{decl <- `decl*`}] -[scope_enter decl] -[visit_exp decl] -[visit_id decl] not free -[visit_id decl] not free -[scope_exit decl] -[visit_exp `decl*`] -[visit_id decl*] not free -[visit_id decl*] no dims -[visit_exp (lift(start?{start <- `start?`}) = $startsd(decl*{decl <- `decl*`}))] -[visit_exp lift(start?{start <- `start?`})] -[visit_exp start?{start <- `start?`}] -[scope_enter start] -[visit_exp start] -[visit_id start] not free -[visit_id start] not free -[scope_exit start] -[visit_exp `start?`] -[visit_id start?] not free -[visit_id start?] no dims -[visit_exp $startsd(decl*{decl <- `decl*`})] -[visit_exp decl*{decl <- `decl*`}] -[scope_enter decl] -[visit_exp decl] -[visit_id decl] not free -[visit_id decl] not free -[scope_exit decl] -[visit_exp `decl*`] -[visit_id decl*] not free -[visit_id decl*] no dims -[visit_exp (export*{export <- `export*`} = $exportsd(decl*{decl <- `decl*`}))] -[visit_exp export*{export <- `export*`}] -[scope_enter export] -[visit_exp export] -[visit_id export] not free -[visit_id export] not free -[scope_exit export] -[visit_exp `export*`] -[visit_id export*] not free -[visit_id export*] no dims -[visit_exp $exportsd(decl*{decl <- `decl*`})] -[visit_exp decl*{decl <- `decl*`}] -[scope_enter decl] -[visit_exp decl] -[visit_id decl] not free -[visit_id decl] not free -[scope_exit decl] -[visit_exp `decl*`] -[visit_id decl*] not free -[visit_id decl*] no dims -[visit_exp $ordered(decl*{decl <- `decl*`})] -[visit_exp decl*{decl <- `decl*`}] -[scope_enter decl] -[visit_exp decl] -[visit_id decl] not free -[visit_id decl] not free -[scope_exit decl] -[visit_exp `decl*`] -[visit_id decl*] not free -[visit_id decl*] no dims -ps' = -[check_dims] -[check_dims] I -[scope_enter I] -[visit_exp I] -[visit_id I] not free -[visit_id I] not free -[scope_exit I] -[visit_exp `I*`] -[visit_id I*] no dims -[visit_id I*] -[scope_enter I] -[visit_exp I] -[visit_id I] not free -[visit_id I] not free -[scope_exit I] -[visit_exp `I*`] -[visit_id I*] not free -[visit_id I*] no dims -ps' = (I : I) -[check_dims] I _ -[check_dims] I -dims \ I = -[visit_exp [``]] -[visit_exp ``] -[visit_id ] -[visit_exp [``]] -[visit_exp ``] -[visit_id ] not free -[visit_exp I] -[visit_id I] not free -[visit_id I] no dims -[visit_id I] not free -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_enter _] -[visit_id _] not free -[visit_id _] no dims -[scope_exit _] -[scope_exit _] -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[scope_enter A_1] -[visit_id A_1] not free -[visit_id A_1] no dims -[scope_exit A_1] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter A_n] -[visit_id A_n] not free -[visit_id A_n] no dims -[scope_exit A_n] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter A_1] -[visit_id A_1] not free -[visit_id A_1] no dims -[scope_exit A_1] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter A_2] -[visit_id A_2] not free -[visit_id A_2] no dims -[scope_exit A_2] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[check_dims] -[scope_enter A_1] -[visit_id A_1] not free -[visit_id A_1] no dims -[scope_exit A_1] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter A_2] -[visit_id A_2] not free -[visit_id A_2] no dims -[scope_exit A_2] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[scope_enter recorddots] -[visit_id recorddots] not free -[visit_id recorddots] no dims -[scope_exit recorddots] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[check_dims] -[check_dims] -[check_dims] conclusion premise_1 premise_2 premise_n -[visit_exp conclusion] -[visit_id conclusion] -[visit_exp premise_1] -[visit_id premise_1] -[visit_exp premise_2] -[visit_id premise_2] -[visit_exp ()] -[visit_exp premise_n] -[visit_id premise_n] -[check_dims] -[check_dims] C -[visit_exp C] -[visit_id C] -[visit_exp [`BINOP`_instr(`I32`_numtype, `ADD`_binop_)]] -[visit_exp `BINOP`_instr(`I32`_numtype, `ADD`_binop_)] -[visit_exp (`I32`_numtype, `ADD`_binop_)] -[visit_exp `I32`_numtype] -[visit_exp ()] -[visit_exp `ADD`_binop_] -[visit_exp ()] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([`I32`_valtype `I32`_valtype]), [], `%`_resulttype([`I32`_valtype]))] -[visit_exp (`%`_resulttype([`I32`_valtype `I32`_valtype]), [], `%`_resulttype([`I32`_valtype]))] -[visit_exp `%`_resulttype([`I32`_valtype `I32`_valtype])] -[visit_exp ([`I32`_valtype `I32`_valtype])] -[visit_exp [`I32`_valtype `I32`_valtype]] -[visit_exp `I32`_valtype] -[visit_exp ()] -[visit_exp `I32`_valtype] -[visit_exp ()] -[visit_exp []] -[visit_exp `%`_resulttype([`I32`_valtype])] -[visit_exp ([`I32`_valtype])] -[visit_exp [`I32`_valtype]] -[visit_exp `I32`_valtype] -[visit_exp ()] -[check_dims] C mut t x -[visit_exp C] -[visit_id C] -[visit_exp [`GLOBAL.GET`_instr(x)]] -[visit_exp `GLOBAL.GET`_instr(x)] -[visit_exp (x)] -[visit_exp x] -[visit_id x] -[visit_exp `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))] -[visit_exp (`%`_resulttype([]), [], `%`_resulttype([t]))] -[visit_exp `%`_resulttype([])] -[visit_exp ([])] -[visit_exp []] -[visit_exp []] -[visit_exp `%`_resulttype([t])] -[visit_exp ([t])] -[visit_exp [t]] -[visit_exp t] -[visit_id t] -[visit_exp (C.`GLOBALS`_context[x!`%`_idx.0] = `%%`_globaltype(?(mut), t))] -[visit_exp C.`GLOBALS`_context[x!`%`_idx.0]] -[visit_exp C.`GLOBALS`_context] -[visit_exp C] -[visit_id C] not free -[visit_exp x!`%`_idx.0] -[visit_exp x!`%`_idx] -[visit_exp x] -[visit_id x] not free -[visit_exp `%%`_globaltype(?(mut), t)] -[visit_exp (?(mut), t)] -[visit_exp ?(mut)] -[visit_exp mut] -[visit_id mut] -[visit_exp t] -[visit_id t] not free -[check_dims] C blocktype instr t_1 t_2 -[visit_exp C] -[visit_id C] -[visit_exp [`BLOCK`_instr(blocktype, instr*{instr <- `instr*`})]] -[visit_exp `BLOCK`_instr(blocktype, instr*{instr <- `instr*`})] -[visit_exp (blocktype, instr*{instr <- `instr*`})] -[visit_exp blocktype] -[visit_id blocktype] -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] no dims -[visit_id instr*] -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] no dims -[visit_id t_1*] -[visit_exp []] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] no dims -[visit_id t_2*] -[visit_exp (C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})))] -[visit_exp C] -[visit_id C] not free -[visit_exp blocktype] -[visit_id blocktype] not free -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] not free -[visit_id t_1*] no dims -[visit_exp []] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] not free -[visit_id t_2*] no dims -[visit_exp ({`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*`})))] -[visit_exp {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [`%`_resulttype(t_2*{t_2 <- `t_2*`})], `RETURN` ?(), `REFS` []} +++ C] -[visit_exp {`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [`%`_resulttype(t_2*{t_2 <- `t_2*`})], `RETURN` ?(), `REFS` []}] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp []] -[visit_exp [`%`_resulttype(t_2*{t_2 <- `t_2*`})]] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] not free -[visit_id t_2*] no dims -[visit_exp ?()] -[visit_exp []] -[visit_exp C] -[visit_id C] not free -[visit_exp instr*{instr <- `instr*`}] -[scope_enter instr] -[visit_exp instr] -[visit_id instr] not free -[visit_id instr] not free -[scope_exit instr] -[visit_exp `instr*`] -[visit_id instr*] not free -[visit_id instr*] no dims -[visit_exp `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp (`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))] -[visit_exp `%`_resulttype(t_1*{t_1 <- `t_1*`})] -[visit_exp (t_1*{t_1 <- `t_1*`})] -[visit_exp t_1*{t_1 <- `t_1*`}] -[scope_enter t_1] -[visit_exp t_1] -[visit_id t_1] not free -[visit_id t_1] not free -[scope_exit t_1] -[visit_exp `t_1*`] -[visit_id t_1*] not free -[visit_id t_1*] no dims -[visit_exp []] -[visit_exp `%`_resulttype(t_2*{t_2 <- `t_2*`})] -[visit_exp (t_2*{t_2 <- `t_2*`})] -[visit_exp t_2*{t_2 <- `t_2*`}] -[scope_enter t_2] -[visit_exp t_2] -[visit_id t_2] not free -[visit_id t_2] not free -[scope_exit t_2] -[visit_exp `t_2*`] -[visit_id t_2*] not free -[visit_id t_2*] no dims -[check_dims] -[check_dims] q_1 q_3 q_4 -[visit_exp [`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_)]] -[visit_exp `CONST`_instr(`F64`_numtype, q_1)] -[visit_exp (`F64`_numtype, q_1)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp q_1] -[visit_id q_1] -[visit_exp `CONST`_instr(`F64`_numtype, q_4)] -[visit_exp (`F64`_numtype, q_4)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp q_4] -[visit_id q_4] -[visit_exp `CONST`_instr(`F64`_numtype, q_3)] -[visit_exp (`F64`_numtype, q_3)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp q_3] -[visit_id q_3] -[visit_exp `BINOP`_instr(`F64`_numtype, `ADD`_binop_)] -[visit_exp (`F64`_numtype, `ADD`_binop_)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `ADD`_binop_] -[visit_exp ()] -[visit_exp `BINOP`_instr(`F64`_numtype, `MUL`_binop_)] -[visit_exp (`F64`_numtype, `MUL`_binop_)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `MUL`_binop_] -[visit_exp ()] -[check_dims] q_1 q_5 -[visit_exp [`CONST`_instr(`F64`_numtype, q_1) `CONST`_instr(`F64`_numtype, q_5) `BINOP`_instr(`F64`_numtype, `MUL`_binop_)]] -[visit_exp `CONST`_instr(`F64`_numtype, q_1)] -[visit_exp (`F64`_numtype, q_1)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp q_1] -[visit_id q_1] -[visit_exp `CONST`_instr(`F64`_numtype, q_5)] -[visit_exp (`F64`_numtype, q_5)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp q_5] -[visit_id q_5] -[visit_exp `BINOP`_instr(`F64`_numtype, `MUL`_binop_)] -[visit_exp (`F64`_numtype, `MUL`_binop_)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp `MUL`_binop_] -[visit_exp ()] -[check_dims] q_6 -[visit_exp [`CONST`_instr(`F64`_numtype, q_6)]] -[visit_exp `CONST`_instr(`F64`_numtype, q_6)] -[visit_exp (`F64`_numtype, q_6)] -[visit_exp `F64`_numtype] -[visit_exp ()] -[visit_exp q_6] -[visit_id q_6] -[check_dims] -DecD instrdots : instr* -[check_dims] -[check_dims] -[scope_enter n] -[visit_id n] not free -[visit_id n] no dims -[scope_enter instr*] -[visit_id instr*] not free -[visit_id instr*] no dims -[scope_exit instr*] -[scope_exit n] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] -[scope_enter n] -[visit_id n] not free -[visit_id n] no dims -[scope_enter frame] -[visit_id frame] not free -[visit_id frame] no dims -[scope_exit frame] -[scope_exit n] ---- 1 --- -[check_dims] ---- 2 --- ---- 3 --- ---- 4 --- -[check_dims] -[check_dims] X Y _ store -DecD allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) -[visit_id store] not free -[visit_id X] not free -[visit_id Y] not free -[scope_enter _] -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_exit _] -[scope_exit _] -[check_dims] X Y _ store -DecD allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) -[visit_id store] not free -[visit_id _] not free -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_enter _] -[visit_id _] not free -[scope_exit _] -[scope_exit _] -[check_dims] s -[visit_exp s] -[visit_id s] -[visit_exp []] -[visit_exp []] -[visit_exp (s, [])] -[visit_exp s] -[visit_id s] not free -[visit_exp []] -=> - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) -[check_dims] X X' Y Y' a a' s s_1 s_2 -[visit_exp s] -[visit_id s] -[visit_exp [X] ++ X'*{X' <- `X'*`}] -[visit_exp [X]] -[visit_exp X] -[visit_id X] -[visit_exp X'*{X' <- `X'*`}] -[scope_enter X'] -[visit_exp X'] -[visit_id X'] not free -[visit_id X'] not free -[scope_exit X'] -[visit_exp `X'*`] -[visit_id X'*] no dims -[visit_id X'*] -[visit_exp [Y] ++ Y'*{Y' <- `Y'*`}] -[visit_exp [Y]] -[visit_exp Y] -[visit_id Y] -[visit_exp Y'*{Y' <- `Y'*`}] -[scope_enter Y'] -[visit_exp Y'] -[visit_id Y'] not free -[visit_id Y'] not free -[scope_exit Y'] -[visit_exp `Y'*`] -[visit_id Y'*] no dims -[visit_id Y'*] -[visit_exp (s_2, [a] ++ a'*{a' <- `a'*`})] -[visit_exp s_2] -[visit_id s_2] -[visit_exp [a] ++ a'*{a' <- `a'*`}] -[visit_exp [a]] -[visit_exp a] -[visit_id a] -[visit_exp a'*{a' <- `a'*`}] -[scope_enter a'] -[visit_exp a'] -[visit_id a'] not free -[visit_id a'] not free -[scope_exit a'] -[visit_exp `a'*`] -[visit_id a'*] no dims -[visit_id a'*] -[visit_exp ((s_1, a) = $allocX(syntax X, syntax Y, s, X, Y))] -[visit_exp (s_1, a)] -[visit_exp s_1] -[visit_id s_1] -[visit_exp a] -[visit_id a] not free -[visit_exp $allocX(syntax X, syntax Y, s, X, Y)] -[visit_exp s] -[visit_id s] not free -[visit_exp X] -[visit_id X] not free -[visit_exp Y] -[visit_id Y] not free -[visit_exp ((s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`}))] -[visit_exp (s_2, a'*{a' <- `a'*`})] -[visit_exp s_2] -[visit_id s_2] not free -[visit_exp a'*{a' <- `a'*`}] -[scope_enter a'] -[visit_exp a'] -[visit_id a'] not free -[visit_id a'] not free -[scope_exit a'] -[visit_exp `a'*`] -[visit_id a'*] not free -[visit_id a'*] no dims -[visit_exp $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`})] -[visit_exp s_1] -[visit_id s_1] not free -[visit_exp X'*{X' <- `X'*`}] -[scope_enter X'] -[visit_exp X'] -[visit_id X'] not free -[visit_id X'] not free -[scope_exit X'] -[visit_exp `X'*`] -[visit_id X'*] not free -[visit_id X'*] no dims -[visit_exp Y'*{Y' <- `Y'*`}] -[scope_enter Y'] -[visit_exp Y'] -[visit_id Y'] not free -[visit_id Y'] not free -[scope_exit Y'] -[visit_exp `Y'*`] -[visit_id Y'*] not free -[visit_id Y'*] no dims -=> - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - 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'*`})) -[check_dims] -[check_dims] -[visit_exp 0] -[check_dims] X -DecD var(syntax X) : nat -[check_dims] -[visit_exp 0] -=> - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - def $var{syntax X}(syntax X) = 0 -ps' = (syntax X) -[check_dims] X -[check_dims] -dims \ = -[visit_exp ((), ()).1] -[visit_exp ((), ())] -[visit_exp ()] -[visit_exp ()] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp $var(syntax A)] -[check_dims] -dims \ = -[visit_exp $var(syntax A)] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -ps' = (syntax X) -[check_dims] X -[check_dims] -dims \ = -[visit_exp ((), ()).1] -[visit_exp ((), ())] -[visit_exp ()] -[visit_exp ()] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp $var(syntax A)] -[check_dims] -dims \ = -[visit_exp $var(syntax A)] -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -ps' = -[check_dims] -[check_dims] -dims \ = -[visit_exp (``, ()).1] -[visit_exp (``, ())] -[visit_exp ``] -[visit_id ] -[visit_exp ()] -[visit_exp ``] -[visit_id ] not free -[check_dims] -[check_dims] -[check_dims] -ps' = -[check_dims] -[check_dims] ;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec syntax N = nat @@ -86993,17 +187,17 @@ syntax byte = -- if ((i >= 0) /\ (i <= 255)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax uN(N : N)(N) = +syntax uN{N : N}(N) = | `%`(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) = +syntax sN{N : N}(N) = | `%`(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) +syntax iN{N : N}(N) = uN(N) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax u8 = uN(8) @@ -87060,19 +254,19 @@ def $E(N : N) : nat syntax exp = int ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax fNmag(N : N)(N) = - | `NORM`(m : m, exp : exp) +syntax fNmag{N : N}(N) = + | NORM(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} + | SUBNORM(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)) - | `INF` - | `NAN`(m : m) + | INF + | NAN(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(N)) - | `NEG`(fNmag(N)) +syntax fN{N : N}(N) = + | POS(fNmag(N)) + | NEG(fNmag(N)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax f32 = fN(32) @@ -87083,17 +277,17 @@ 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)) + 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))) + 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))) + 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 @@ -87101,13 +295,13 @@ def $canon_(N : N) : nat 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) +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) = +syntax list{syntax X}(syntax X) = | `%`(`X*` : X*) -- if (|X*{X <- `X*`}| < (2 ^ 32)) @@ -87193,11 +387,11 @@ syntax fieldidx = idx ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax externidx = - | `FUNC`(funcidx : funcidx) - | `GLOBAL`(globalidx : globalidx) - | `TABLE`(tableidx : tableidx) - | `MEM`(memidx : memidx) - | `TAG`(tagidx : tagidx) + | FUNC(funcidx : funcidx) + | GLOBAL(globalidx : globalidx) + | TABLE(tableidx : tableidx) + | MEM(memidx : memidx) + | TAG(tagidx : tagidx) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { @@ -87207,7 +401,7 @@ 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*`}) + 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*`}) -- otherwise @@ -87221,7 +415,7 @@ 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*`}) + 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*`}) -- otherwise @@ -87235,7 +429,7 @@ 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*`}) + 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*`}) -- otherwise @@ -87249,7 +443,7 @@ 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*`}) + 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*`}) -- otherwise @@ -87263,7 +457,7 @@ 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*`}) + 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*`}) -- otherwise @@ -87272,21 +466,21 @@ def $tagsxx(externidx*) : tagidx* ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax free = { - `TYPES` typeidx* , - `FUNCS` funcidx* , - `GLOBALS` globalidx* , - `TABLES` tableidx* , - `MEMS` memidx* , - `ELEMS` elemidx* , - `DATAS` dataidx* , - `LOCALS` localidx* , - `LABELS` labelidx* + TYPES typeidx*, + FUNCS funcidx*, + GLOBALS globalidx*, + TABLES tableidx*, + MEMS memidx*, + ELEMS elemidx*, + DATAS dataidx*, + LOCALS localidx*, + LABELS 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` []} + 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 @@ -87296,7 +490,7 @@ 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` []} + 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'*`}) } @@ -87304,160 +498,160 @@ def $free_list(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` []} + 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` []} + 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` []} + 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` []} + 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` []} + 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` []} + 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` []} + 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` []} + 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]} + 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) + 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) + 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) + 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) + def $free_externidx{memidx : memidx}(MEM_externidx(memidx)) = $free_memidx(memidx) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax null = - | `NULL` + | NULL ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax addrtype = - | `I32` - | `I64` + | I32 + | I64 ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax numtype = - | `I32` - | `I64` - | `F32` - | `F64` + | I32 + | I64 + | F32 + | F64 ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax vectype = - | `V128` + | V128 ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax consttype = - | `I32` - | `I64` - | `F32` - | `F64` - | `V128` + | 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` + | 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` + | MUT ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax final = - | `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) - | `_DEF`(rectype : rectype, n : n) - | `REC`(n : n) + | _IDX(typeidx : typeidx) + | _DEF(rectype : rectype, n : n) + | REC(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) - | `_DEF`(rectype : rectype, n : n) - | `REC`(n : n) + | ANY + | EQ + | I31 + | STRUCT + | ARRAY + | NONE + | FUNC + | NOFUNC + | EXN + | NOEXN + | EXTERN + | NOEXTERN + | BOT + | _IDX(typeidx : typeidx) + | _DEF(rectype : rectype, n : n) + | REC(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) - | `BOT` + | I32 + | I64 + | F32 + | F64 + | V128 + | REF(`null?` : null?, heaptype : heaptype) + | BOT ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.1-92.66 syntax storagetype = - | `I32` - | `I64` - | `F32` - | `F64` - | `V128` - | `REF`(`null?` : null?, heaptype : heaptype) - | `BOT` - | `I8` - | `I16` + | I32 + | I64 + | F32 + | F64 + | V128 + | REF(`null?` : null?, heaptype : heaptype) + | BOT + | I8 + | I16 ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:102.1-103.16 syntax resulttype = list(syntax valtype) @@ -87468,146 +662,146 @@ syntax fieldtype = ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.1-117.34 syntax comptype = - | `STRUCT`(list(syntax fieldtype)) - | `ARRAY`(fieldtype : fieldtype) + | STRUCT(list(syntax fieldtype)) + | ARRAY(fieldtype : fieldtype) | `FUNC%->%`(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) + | SUB(`final?` : final?, `typeuse*` : typeuse*, comptype : comptype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:122.1-123.22 syntax rectype = - | `REC`(list(syntax subtype)) + | REC(list(syntax subtype)) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax deftype = - | `_DEF`(rectype : rectype, n : n) + | _DEF(rectype : rectype, n : n) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax typevar = - | `_IDX`(typeidx : typeidx) - | `REC`(n : n) + | _IDX(typeidx : typeidx) + | REC(n : n) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax reftype = - | `REF`(`null?` : null?, heaptype : heaptype) + | REF(`null?` : null?, heaptype : heaptype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax Inn = - | `I32` - | `I64` + | I32 + | I64 ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax Fnn = - | `F32` - | `F64` + | F32 + | F64 ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax Vnn = - | `V128` + | V128 ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax Cnn = - | `I32` - | `I64` - | `F32` - | `F64` - | `V128` + | 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax packtype = - | `I8` - | `I16` + | I8 + | I16 ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax lanetype = - | `I32` - | `I64` - | `F32` - | `F64` - | `I8` - | `I16` + | 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` + | I32 + | I64 + | I8 + | I16 ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax Lnn = - | `I32` - | `I64` - | `F32` - | `F64` - | `I8` - | `I16` + | I32 + | I64 + | F32 + | F64 + | I8 + | I16 ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax limits = @@ -87630,18 +824,18 @@ syntax tabletype = ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax datatype = - | `OK` + | 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) - | `GLOBAL`(globaltype : globaltype) - | `MEM`(memtype : memtype) - | `TABLE`(tabletype : tabletype) - | `FUNC`(typeuse : typeuse) + | TAG(tagtype : tagtype) + | GLOBAL(globaltype : globaltype) + | MEM(memtype : memtype) + | TABLE(tabletype : tabletype) + | FUNC(typeuse : typeuse) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax moduletype = @@ -87650,50 +844,50 @@ syntax moduletype = ;; ../../../../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 + def $IN(32) = I32_Inn ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $IN(64) = `I64`_Inn + 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 + def $FN(32) = F32_Fnn ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $FN(64) = `F64`_Fnn + 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 + 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 ;; ../../../../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 + def $size(I32_numtype) = 32 ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $size(`I64`_numtype) = 64 + def $size(I64_numtype) = 64 ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $size(`F32`_numtype) = 32 + def $size(F32_numtype) = 32 ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $size(`F64`_numtype) = 64 + 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 + 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 + def $psize(I8_packtype) = 8 ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $psize(`I16`_packtype) = 16 + def $psize(I16_packtype) = 16 ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $lsize(lanetype : lanetype) : nat @@ -87729,25 +923,25 @@ def $fsize(Fnn : Fnn) : nat ;; ../../../../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 + def $inv_isize(32) = I32_Inn ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_isize(64) = `I64`_Inn + 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 + def $inv_jsize(8) = I8_Jnn ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_jsize(16) = `I16`_Jnn + def $inv_jsize(16) = I16_Jnn ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $inv_jsize{n : n}(n) = ($inv_isize(n) : Inn <: 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 + def $inv_fsize(32) = F32_Fnn ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $inv_fsize(64) = `F64`_Fnn + def $inv_fsize(64) = F64_Fnn ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $sizenn(numtype : numtype) : nat @@ -87804,21 +998,21 @@ 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 + 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 + 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 + def $nunpack{packtype : packtype}((packtype : packtype <: storagetype)) = I32_numtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $vunpack(storagetype : storagetype) : vectype @@ -87830,7 +1024,7 @@ 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 + 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) @@ -87846,9 +1040,9 @@ def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype ;; ../../../../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) + 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) + 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 @@ -87863,7 +1057,7 @@ 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 : tagtype, `xt*` : externtype*}([`TAG`_externtype(jt)] ++ xt*{xt <- `xt*`}) = [jt] ++ $tagsxt(xt*{xt <- `xt*`}) + 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 def $tagsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tagsxt(xt*{xt <- `xt*`}) -- otherwise @@ -87877,7 +1071,7 @@ 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*`}) + 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*`}) -- otherwise @@ -87891,7 +1085,7 @@ 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*`}) + 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*`}) -- otherwise @@ -87905,7 +1099,7 @@ 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*`}) + 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*`}) -- otherwise @@ -87919,7 +1113,7 @@ 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*`}) + 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*`}) -- otherwise @@ -87948,9 +1142,9 @@ 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 : 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*`}) + 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 - 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'*`}) + 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*`})) } @@ -87992,7 +1186,7 @@ def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype ;; ../../../../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*`})) + 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 def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype @@ -88003,7 +1197,7 @@ def $subst_valtype(valtype : valtype, typevar*, typeuse*) : 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 + 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 def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype @@ -88020,27 +1214,27 @@ def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype ;; ../../../../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*`})) + 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 - 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*`})) + 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 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 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*`})) + 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 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*`})) + 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 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 : 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) + 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 @@ -88071,15 +1265,15 @@ def $subst_tabletype(tabletype : tabletype, typevar*, typeuse*) : tabletype ;; ../../../../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*`})) + 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*`})) + 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*`})) + 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*`})) + 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)) + 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 @@ -88089,47 +1283,47 @@ def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype ;; ../../../../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, n : n, `tu*` : typeuse*, 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) + 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*`}) + 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 : n}(`_DEF`_deftype(rectype, n)) = $free_rectype(rectype) + def $free_deftype{rectype : rectype, n : n}(_DEF_deftype(rectype, n)) = $free_rectype(rectype) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec @@ -88316,7 +1510,7 @@ def $free_tabletype(tabletype : tabletype) : free ;; ../../../../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` []} + 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 @@ -88326,15 +1520,15 @@ def $free_elemtype(elemtype : elemtype) : free ;; ../../../../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) + 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) + 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) + 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) + 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) + 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 @@ -88352,7 +1546,7 @@ syntax num_(numtype : numtype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax pack_(Pnn : Pnn)(Pnn) = iN($psizenn(Pnn)) +syntax pack_{Pnn : Pnn}(Pnn) = iN($psizenn(Pnn)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax lane_(lanetype : lanetype) @@ -88369,7 +1563,7 @@ syntax lane_(lanetype : lanetype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vec_(Vnn : Vnn)(Vnn) = vN($vsize(Vnn)) +syntax vec_{Vnn : Vnn}(Vnn) = vN($vsize(Vnn)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax lit_(storagetype : storagetype) @@ -88392,116 +1586,116 @@ syntax sz = ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax sx = - | `U` - | `S` + | 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 : Inn <: numtype)) = - | `CLZ` - | `CTZ` - | `POPCNT` - | `EXTEND`(sz : sz) + | CLZ + | CTZ + | POPCNT + | EXTEND(sz : sz) -- if (sz!`%`_sz.0 < $sizenn((Inn : Inn <: numtype))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax unop_{Fnn : Fnn}((Fnn : Fnn <: numtype)) = - | `ABS` - | `NEG` - | `SQRT` - | `CEIL` - | `FLOOR` - | `TRUNC` - | `NEAREST` + | 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 : Inn <: numtype)) = - | `ADD` - | `SUB` - | `MUL` - | `DIV`(sx : sx) - | `REM`(sx : sx) - | `AND` - | `OR` - | `XOR` - | `SHL` - | `SHR`(sx : sx) - | `ROTL` - | `ROTR` + | ADD + | SUB + | MUL + | DIV(sx : sx) + | REM(sx : sx) + | AND + | OR + | XOR + | SHL + | SHR(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` + | ADD + | SUB + | MUL + | DIV + | MIN + | MAX + | COPYSIGN ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax testop_(Inn : Inn)((Inn : Inn <: numtype)) = - | `EQZ` +syntax testop_{Inn : Inn}((Inn : Inn <: 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 : Inn <: numtype)) = - | `EQ` - | `NE` - | `LT`(sx : sx) - | `GT`(sx : sx) - | `LE`(sx : sx) - | `GE`(sx : sx) + | EQ + | NE + | LT(sx : sx) + | GT(sx : sx) + | LE(sx : sx) + | GE(sx : sx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax relop_{Fnn : Fnn}((Fnn : Fnn <: numtype)) = - | `EQ` - | `NE` - | `LT` - | `GT` - | `LE` - | `GE` + | 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 : Inn <: numtype), (Inn_2 : Inn <: numtype)) = - | `EXTEND`(sx : sx) + | EXTEND(sx : sx) -- if ($sizenn1((Inn_1 : Inn <: numtype)) < $sizenn2((Inn_2 : Inn <: numtype))) - | `WRAP` + | WRAP -- if ($sizenn1((Inn_1 : Inn <: numtype)) > $sizenn2((Inn_2 : Inn <: numtype))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax cvtop__{Inn_1 : Inn, Fnn_2 : Fnn}((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype)) = - | `CONVERT`(sx : sx) - | `REINTERPRET` + | CONVERT(sx : sx) + | REINTERPRET -- if ($sizenn1((Inn_1 : Inn <: 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 : Inn <: numtype)) = - | `TRUNC`(sx : sx) - | `TRUNC_SAT`(sx : sx) - | `REINTERPRET` + | TRUNC(sx : sx) + | TRUNC_SAT(sx : sx) + | REINTERPRET -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) = $sizenn2((Inn_2 : Inn <: 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` + | PROMOTE -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) < $sizenn2((Fnn_2 : Fnn <: numtype))) - | `DEMOTE` + | DEMOTE -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) > $sizenn2((Fnn_2 : Fnn <: numtype))) @@ -88532,232 +1726,232 @@ def $unpackshape(shape : shape) : numtype ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax ishape = - | `%`(shape : shape){Jnn : Jnn} + | `%`(shape : shape) {Jnn : Jnn} -- if ($lanetype(shape) = (Jnn : Jnn <: lanetype)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax bshape = | `%`(shape : shape) - -- if ($lanetype(shape) = `I8`_lanetype) + -- if ($lanetype(shape) = I8_lanetype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax zero = - | `ZERO` + | ZERO ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax half = - | `LOW` - | `HIGH` + | LOW + | HIGH ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vvunop = - | `NOT` + | NOT ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vvbinop = - | `AND` - | `ANDNOT` - | `OR` - | `XOR` + | AND + | ANDNOT + | OR + | XOR ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vvternop = - | `BITSELECT` + | BITSELECT ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vvtestop = - | `ANY_TRUE` + | 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` + | 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` + | 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) + | ADD + | SUB + | ADD_SAT(sx : sx) -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) - | `SUB_SAT`(sx : sx) + | SUB_SAT(sx : sx) -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) - | `MUL` + | MUL -- if ($lsizenn((Jnn : Jnn <: lanetype)) >= 16) - | `AVGRU` + | AVGRU -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) - | `Q15MULR_SATS` + | Q15MULR_SATS -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 16) - | `RELAXED_Q15MULRS` + | RELAXED_Q15MULRS -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 16) - | `MIN`(sx : sx) + | MIN(sx : sx) -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 32) - | `MAX`(sx : sx) + | MAX(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` + | 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` + | 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` + | 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` +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) - -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = `S`_sx)) - | `GT`(sx : sx) - -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = `S`_sx)) - | `LE`(sx : sx) - -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = `S`_sx)) - | `GE`(sx : sx) - -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = `S`_sx)) + | EQ + | NE + | LT(sx : sx) + -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) + | GT(sx : sx) + -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) + | LE(sx : sx) + -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) + | GE(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` + | 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) +syntax vshiftop_{Jnn : Jnn, M : M}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) = + | SHL + | SHR(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` +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) +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) -- 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) +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) -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) >= 16)) - | `DOTS` + | DOTS -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) - | `RELAXED_DOTS` + | 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` +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) + | EXTEND(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) - -- 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)))) + | CONVERT(`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?) - -- 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?) - -- 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)))) + | TRUNC_SAT(sx : sx, `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?) + -- 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) + | DEMOTE(zero : zero) -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $sizenn2((Fnn_2 : Fnn <: numtype)))) - | `PROMOTELOW` + | 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 , - `OFFSET` u64 + ALIGN u32, + OFFSET u64 } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax loadop_(Inn : Inn)((Inn : Inn <: numtype)) = +syntax loadop_{Inn : Inn}((Inn : Inn <: numtype)) = | `%_%`(sz : sz, sx : sx) -- if (sz!`%`_sz.0 < $sizenn((Inn : Inn <: numtype))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax storeop_(Inn : Inn)((Inn : Inn <: numtype)) = +syntax storeop_{Inn : Inn}((Inn : Inn <: numtype)) = | `%`(sz : sz) -- if (sz!`%`_sz.0 < $sizenn((Inn : Inn <: numtype))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vloadop_(vectype : vectype)(vectype) = +syntax vloadop_{vectype : vectype}(vectype) = | `SHAPE%X%_%`(sz : sz, M : M, sx : sx) -- if (((sz!`%`_sz.0 * M) : nat <:> rat) = (($vsize(vectype) : nat <:> rat) / (2 : nat <:> rat))) - | `SPLAT`(sz : sz) - | `ZERO`(sz : sz) + | SPLAT(sz : sz) + | ZERO(sz : sz) -- if (sz!`%`_sz.0 >= 32) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax blocktype = - | `_RESULT`(`valtype?` : valtype?) - | `_IDX`(typeidx : typeidx) + | _RESULT(`valtype?` : valtype?) + | _IDX(typeidx : typeidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax addr = nat @@ -88793,10 +1987,10 @@ syntax addrref = ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax catch = - | `CATCH`(tagidx : tagidx, labelidx : labelidx) - | `CATCH_REF`(tagidx : tagidx, labelidx : labelidx) - | `CATCH_ALL`(labelidx : labelidx) - | `CATCH_ALL_REF`(labelidx : labelidx) + | CATCH(tagidx : tagidx, labelidx : labelidx) + | CATCH_REF(tagidx : tagidx, labelidx : labelidx) + | CATCH_ALL(labelidx : labelidx) + | CATCH_ALL_REF(labelidx : labelidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax dataaddr = addr @@ -88818,37 +2012,37 @@ syntax tagaddr = addr ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax externaddr = - | `TAG`(tagaddr : tagaddr) - | `GLOBAL`(globaladdr : globaladdr) - | `MEM`(memaddr : memaddr) - | `TABLE`(tableaddr : tableaddr) - | `FUNC`(funcaddr : funcaddr) + | TAG(tagaddr : tagaddr) + | GLOBAL(globaladdr : globaladdr) + | MEM(memaddr : memaddr) + | TABLE(tableaddr : tableaddr) + | FUNC(funcaddr : funcaddr) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax exportinst = { - `NAME` name , - `ADDR` externaddr + NAME name, + ADDR externaddr } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax moduleinst = { - `TYPES` deftype* , - `TAGS` tagaddr* , - `GLOBALS` globaladdr* , - `MEMS` memaddr* , - `TABLES` tableaddr* , - `FUNCS` funcaddr* , - `DATAS` dataaddr* , - `ELEMS` elemaddr* , - `EXPORTS` exportinst* + TYPES deftype*, + TAGS tagaddr*, + GLOBALS globaladdr*, + MEMS memaddr*, + TABLES tableaddr*, + FUNCS funcaddr*, + DATAS dataaddr*, + ELEMS elemaddr*, + EXPORTS exportinst* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax val = - | `CONST`(numtype : numtype, num_(numtype)) - | `VCONST`(vectype : vectype, vec_(vectype)) + | CONST(numtype : numtype, num_(numtype)) + | VCONST(vectype : vectype, vec_(vectype)) | `REF.I31_NUM`(u31 : u31) | `REF.STRUCT_ADDR`(structaddr : structaddr) | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) @@ -88861,8 +2055,8 @@ syntax val = ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax frame = { - `LOCALS` val?* , - `MODULE` moduleinst + LOCALS val?*, + MODULE moduleinst } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -88870,30 +2064,30 @@ rec { ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.1-142.9 syntax instr = - | `NOP` - | `UNREACHABLE` - | `DROP` - | `SELECT`(`valtype*?` : valtype*?) - | `BLOCK`(blocktype : blocktype, `instr*` : instr*) - | `LOOP`(blocktype : blocktype, `instr*` : instr*) + | NOP + | UNREACHABLE + | DROP + | SELECT(`valtype*?` : valtype*?) + | BLOCK(blocktype : blocktype, `instr*` : instr*) + | LOOP(blocktype : blocktype, `instr*` : instr*) | `IF%%ELSE%`(blocktype : blocktype, `instr*` : instr*, `instr*` : instr*) - | `BR`(labelidx : labelidx) - | `BR_IF`(labelidx : labelidx) - | `BR_TABLE`(`labelidx*` : labelidx*, labelidx : labelidx) - | `BR_ON_NULL`(labelidx : labelidx) - | `BR_ON_NON_NULL`(labelidx : labelidx) - | `BR_ON_CAST`(labelidx : labelidx, reftype : reftype, reftype : reftype) - | `BR_ON_CAST_FAIL`(labelidx : labelidx, reftype : reftype, reftype : reftype) - | `CALL`(funcidx : funcidx) - | `CALL_REF`(typeuse : typeuse) - | `CALL_INDIRECT`(tableidx : tableidx, typeuse : typeuse) - | `RETURN` - | `RETURN_CALL`(funcidx : funcidx) - | `RETURN_CALL_REF`(typeuse : typeuse) - | `RETURN_CALL_INDIRECT`(tableidx : tableidx, typeuse : typeuse) - | `THROW`(tagidx : tagidx) - | `THROW_REF` - | `TRY_TABLE`(blocktype : blocktype, list(syntax catch), `instr*` : instr*) + | BR(labelidx : labelidx) + | BR_IF(labelidx : labelidx) + | BR_TABLE(`labelidx*` : labelidx*, labelidx : labelidx) + | BR_ON_NULL(labelidx : labelidx) + | BR_ON_NON_NULL(labelidx : labelidx) + | BR_ON_CAST(labelidx : labelidx, reftype : reftype, reftype : reftype) + | BR_ON_CAST_FAIL(labelidx : labelidx, reftype : reftype, reftype : reftype) + | CALL(funcidx : funcidx) + | CALL_REF(typeuse : typeuse) + | CALL_INDIRECT(tableidx : tableidx, typeuse : typeuse) + | RETURN + | RETURN_CALL(funcidx : funcidx) + | RETURN_CALL_REF(typeuse : typeuse) + | RETURN_CALL_INDIRECT(tableidx : tableidx, typeuse : typeuse) + | THROW(tagidx : tagidx) + | THROW_REF + | TRY_TABLE(blocktype : blocktype, list(syntax catch), `instr*` : instr*) | `LOCAL.GET`(localidx : localidx) | `LOCAL.SET`(localidx : localidx) | `LOCAL.TEE`(localidx : localidx) @@ -88907,12 +2101,12 @@ syntax instr = | `TABLE.COPY`(tableidx : tableidx, tableidx : tableidx) | `TABLE.INIT`(tableidx : tableidx, elemidx : elemidx) | `ELEM.DROP`(elemidx : elemidx) - | `LOAD`(numtype : numtype, loadop_(numtype)?, memidx : memidx, memarg : memarg) - | `STORE`(numtype : numtype, storeop_(numtype)?, memidx : memidx, memarg : memarg) - | `VLOAD`(vectype : vectype, vloadop_(vectype)?, memidx : memidx, memarg : memarg) - | `VLOAD_LANE`(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) - | `VSTORE`(vectype : vectype, memidx : memidx, memarg : memarg) - | `VSTORE_LANE`(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | LOAD(numtype : numtype, loadop_(numtype)?, memidx : memidx, memarg : memarg) + | STORE(numtype : numtype, storeop_(numtype)?, memidx : memidx, memarg : memarg) + | VLOAD(vectype : vectype, vloadop_(vectype)?, memidx : memidx, memarg : memarg) + | VLOAD_LANE(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | VSTORE(vectype : vectype, memidx : memidx, memarg : memarg) + | VSTORE_LANE(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) | `MEMORY.SIZE`(memidx : memidx) | `MEMORY.GROW`(memidx : memidx) | `MEMORY.FILL`(memidx : memidx) @@ -88946,37 +2140,37 @@ syntax instr = | `ARRAY.INIT_ELEM`(typeidx : typeidx, elemidx : elemidx) | `EXTERN.CONVERT_ANY` | `ANY.CONVERT_EXTERN` - | `CONST`(numtype : numtype, num_(numtype)) - | `UNOP`(numtype : numtype, unop_(numtype)) - | `BINOP`(numtype : numtype, binop_(numtype)) - | `TESTOP`(numtype : numtype, testop_(numtype)) - | `RELOP`(numtype : numtype, relop_(numtype)) - | `CVTOP`(numtype_1 : numtype, numtype_2 : numtype, cvtop__(numtype_2, numtype_1)) - | `VCONST`(vectype : vectype, vec_(vectype)) - | `VVUNOP`(vectype : vectype, vvunop : vvunop) - | `VVBINOP`(vectype : vectype, vvbinop : vvbinop) - | `VVTERNOP`(vectype : vectype, vvternop : vvternop) - | `VVTESTOP`(vectype : vectype, vvtestop : vvtestop) - | `VUNOP`(shape : shape, vunop_(shape)) - | `VBINOP`(shape : shape, vbinop_(shape)) - | `VTERNOP`(shape : shape, vternop_(shape)) - | `VTESTOP`(shape : shape, vtestop_(shape)) - | `VRELOP`(shape : shape, vrelop_(shape)) - | `VSHIFTOP`(ishape : ishape, vshiftop_(ishape)) - | `VBITMASK`(ishape : ishape) - | `VSWIZZLOP`(bshape : bshape, vswizzlop_(bshape)) - | `VSHUFFLE`(bshape : bshape, `laneidx*` : laneidx*) + | CONST(numtype : numtype, num_(numtype)) + | UNOP(numtype : numtype, unop_(numtype)) + | BINOP(numtype : numtype, binop_(numtype)) + | TESTOP(numtype : numtype, testop_(numtype)) + | RELOP(numtype : numtype, relop_(numtype)) + | CVTOP(numtype_1 : numtype, numtype_2 : numtype, cvtop__(numtype_2, numtype_1)) + | VCONST(vectype : vectype, vec_(vectype)) + | VVUNOP(vectype : vectype, vvunop : vvunop) + | VVBINOP(vectype : vectype, vvbinop : vvbinop) + | VVTERNOP(vectype : vectype, vvternop : vvternop) + | VVTESTOP(vectype : vectype, vvtestop : vvtestop) + | VUNOP(shape : shape, vunop_(shape)) + | VBINOP(shape : shape, vbinop_(shape)) + | VTERNOP(shape : shape, vternop_(shape)) + | VTESTOP(shape : shape, vtestop_(shape)) + | VRELOP(shape : shape, vrelop_(shape)) + | VSHIFTOP(ishape : ishape, vshiftop_(ishape)) + | VBITMASK(ishape : ishape) + | VSWIZZLOP(bshape : bshape, vswizzlop_(bshape)) + | VSHUFFLE(bshape : bshape, `laneidx*` : laneidx*) -- if (`%`_dim(|laneidx*{laneidx <- `laneidx*`}|) = $dim(bshape!`%`_bshape.0)) - | `VEXTUNOP`(ishape_1 : ishape, ishape_2 : ishape, vextunop__(ishape_2, ishape_1)) - | `VEXTBINOP`(ishape_1 : ishape, ishape_2 : ishape, vextbinop__(ishape_2, ishape_1)) - | `VEXTTERNOP`(ishape_1 : ishape, ishape_2 : ishape, vextternop__(ishape_2, ishape_1)) - | `VNARROW`(ishape_1 : ishape, ishape_2 : ishape, sx : sx) + | VEXTUNOP(ishape_1 : ishape, ishape_2 : ishape, vextunop__(ishape_2, ishape_1)) + | VEXTBINOP(ishape_1 : ishape, ishape_2 : ishape, vextbinop__(ishape_2, ishape_1)) + | VEXTTERNOP(ishape_1 : ishape, ishape_2 : ishape, vextternop__(ishape_2, ishape_1)) + | VNARROW(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__(shape_2, shape_1)) - | `VSPLAT`(shape : shape) - | `VEXTRACT_LANE`(shape : shape, `sx?` : sx?, laneidx : laneidx) - -- if ((sx?{sx <- `sx?`} = ?()) <=> ($lanetype(shape) <- [`I32`_lanetype `I64`_lanetype `F32`_lanetype `F64`_lanetype])) - | `VREPLACE_LANE`(shape : shape, laneidx : laneidx) + | VCVTOP(shape_1 : shape, shape_2 : shape, vcvtop__(shape_2, shape_1)) + | VSPLAT(shape : shape) + | VEXTRACT_LANE(shape : shape, `sx?` : sx?, laneidx : laneidx) + -- if ((sx?{sx <- `sx?`} = ?()) <=> ($lanetype(shape) <- [I32_lanetype I64_lanetype F32_lanetype F64_lanetype])) + | VREPLACE_LANE(shape : shape, laneidx : laneidx) | `REF.I31_NUM`(u31 : u31) | `REF.STRUCT_ADDR`(structaddr : structaddr) | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) @@ -88987,7 +2181,7 @@ syntax instr = | `LABEL_%{%}%`(n : n, `instr*` : instr*, `instr*` : instr*) | `FRAME_%{%}%`(n : n, frame : frame, `instr*` : instr*) | `HANDLER_%{%}%`(n : n, `catch*` : catch*, `instr*` : instr*) - | `TRAP` + | TRAP } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -88996,14 +2190,14 @@ 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)} + 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 <: consttype) : consttype <: storagetype))}((numtype : numtype <: consttype), c) = `CONST`_instr(numtype, c) + def $const{numtype : numtype, c : lit_(((numtype : numtype <: consttype) : consttype <: 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 <: consttype) : consttype <: storagetype))}((vectype : vectype <: consttype), c) = `VCONST`_instr(vectype, c) + def $const{vectype : vectype, c : lit_(((vectype : vectype <: consttype) : consttype <: storagetype))}((vectype : vectype <: consttype), c) = VCONST_instr(vectype, c) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_shape(shape : shape) : free @@ -89013,9 +2207,9 @@ def $free_shape(shape : shape) : free ;; ../../../../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?`}) + 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) + def $free_blocktype{typeidx : typeidx}(_IDX_blocktype(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { @@ -89036,111 +2230,111 @@ 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` []} + 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` []} + 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` []} + 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*?`}) + 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*`}) + 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*`}) + 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) + 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) + 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') + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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` []} + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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` []} + 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` []} + 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` []} + 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 @@ -89148,11 +2342,11 @@ def $free_instr(instr : instr) : free ;; ../../../../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` []} + 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` []} + 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` []} + 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 @@ -89174,7 +2368,7 @@ def $free_instr(instr : instr) : free ;; ../../../../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` []} + 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 @@ -89184,9 +2378,9 @@ def $free_instr(instr : instr) : free ;; ../../../../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` []} + 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` []} + 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 @@ -89214,17 +2408,17 @@ def $free_instr(instr : instr) : free ;; ../../../../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) + 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) + 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) + 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) + 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) + 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) + 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 @@ -89241,7 +2435,7 @@ def $free_instr(instr : instr) : free ;; ../../../../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)] + 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*`})) } @@ -89252,162 +2446,162 @@ def $free_expr(expr : expr) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax elemmode = - | `ACTIVE`(tableidx : tableidx, expr : expr) - | `PASSIVE` - | `DECLARE` + | ACTIVE(tableidx : tableidx, expr : expr) + | PASSIVE + | DECLARE ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax datamode = - | `ACTIVE`(memidx : memidx, expr : expr) - | `PASSIVE` + | ACTIVE(memidx : memidx, expr : expr) + | PASSIVE ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax type = - | `TYPE`(rectype : rectype) + | TYPE(rectype : rectype) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax tag = - | `TAG`(tagtype : tagtype) + | TAG(tagtype : tagtype) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax global = - | `GLOBAL`(globaltype : globaltype, expr : expr) + | GLOBAL(globaltype : globaltype, expr : expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax mem = - | `MEMORY`(memtype : memtype) + | MEMORY(memtype : memtype) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax table = - | `TABLE`(tabletype : tabletype, expr : expr) + | TABLE(tabletype : tabletype, expr : expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax data = - | `DATA`(`byte*` : byte*, datamode : datamode) + | DATA(`byte*` : byte*, datamode : datamode) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax local = - | `LOCAL`(valtype : valtype) + | LOCAL(valtype : valtype) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax func = - | `FUNC`(typeidx : typeidx, `local*` : local*, expr : expr) + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax elem = - | `ELEM`(reftype : reftype, `expr*` : expr*, elemmode : elemmode) + | ELEM(reftype : reftype, `expr*` : expr*, elemmode : elemmode) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax start = - | `START`(funcidx : funcidx) + | START(funcidx : funcidx) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax import = - | `IMPORT`(name : name, name : name, externtype : externtype) + | IMPORT(name : name, name : name, externtype : externtype) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax export = - | `EXPORT`(name : name, externidx : externidx) + | EXPORT(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*) + | MODULE(`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `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) + 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) + 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) + 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) + 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) + 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) + 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 = []] + 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) + 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` []} + 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) + 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) + 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` []} + 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` []} + 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) + 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) + 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) + 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) + 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*`}) + 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 + 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 + 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` + | SET + | UNSET ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec syntax localtype = @@ -89420,19 +2614,19 @@ syntax instrtype = ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec syntax context = { - `TYPES` deftype* , - `RECS` subtype* , - `TAGS` tagtype* , - `GLOBALS` globaltype* , - `MEMS` memtype* , - `TABLES` tabletype* , - `FUNCS` deftype* , - `DATAS` datatype* , - `ELEMS` elemtype* , - `LOCALS` localtype* , - `LABELS` resulttype* , - `RETURN` resulttype? , - `REFS` funcidx* + TYPES deftype*, + RECS subtype*, + TAGS tagtype*, + GLOBALS globaltype*, + MEMS memtype*, + TABLES tabletype*, + FUNCS deftype*, + DATAS datatype*, + ELEMS elemtype*, + LOCALS localtype*, + LABELS resulttype*, + RETURN resulttype?, + REFS funcidx* } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec @@ -89443,7 +2637,7 @@ 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 : 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*`}) + 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 @@ -89462,31 +2656,31 @@ def $clos_deftypes(deftype*) : deftype* 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)) + -- 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)) + -- 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 : tagtype, `dt*` : deftype*}(C, jt) = $subst_all_tagtype(jt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.`TYPES`_context)) + -- 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)) + -- 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)) + -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Numtype_ok: `%|-%:OK`(context, numtype) @@ -89502,11 +2696,11 @@ relation Vectype_ok: `%|-%:OK`(context, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypeidx = - | `OK`(typeidx : typeidx) + | OK(typeidx : typeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypeidxnat = - | `OK`(typeidx : typeidx, nat) + | OK(typeidx : typeidx, nat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Packtype_ok: `%|-%:OK`(context, packtype) @@ -89544,18 +2738,18 @@ 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) + 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) + 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]) + 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] + def $unrollht{C : context, i : n}(C, REC_heaptype(i)) = C.RECS_context[i] ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rec { @@ -89575,7 +2769,7 @@ relation Heaptype_ok: `%|-%:OK`(context, heaptype) 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)) + `%|-%: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 @@ -89597,19 +2791,19 @@ relation Valtype_ok: `%|-%:OK`(context, valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:43.1-44.16 rule bot{C : context}: - `%|-%:OK`(C, `BOT`_valtype) + `%|-%: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) + `%|-%: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) + `%|-%: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}: @@ -89627,7 +2821,7 @@ relation Resulttype_ok: `%|-%:OK`(context, resulttype) 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)) + `%|-%:OK`(C, `%%`_fieldtype(MUT_mut?{}, storagetype)) -- Storagetype_ok: `%|-%:OK`(C, storagetype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:86.1-86.106 @@ -89646,12 +2840,12 @@ relation Storagetype_ok: `%|-%:OK`(context, storagetype) 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*`}))) + `%|-%: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)) + `%|-%:OK`(C, ARRAY_comptype(fieldtype)) -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:136.1-139.35 @@ -89664,10 +2858,10 @@ relation Comptype_ok: `%|-%:OK`(context, comptype) 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, `comptype'*` : comptype*, `x'**` : idx**}: - `%|-%:%`(C, `SUB`_subtype(`FINAL`_final?{}, `_IDX`_typeuse(x)*{x <- `x*`}, comptype), `OK`_oktypeidx(x_0)) + `%|-%:%`(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'**`} + -- (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'*`} @@ -89675,27 +2869,27 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) 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)) + `%|-%:%`(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)))) + `%|-%:%`(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)) + `%|-%:%`(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, `comptype'*` : comptype*, `typeuse'**` : typeuse**, comptype : comptype}: - `%|-%:%`(C, `SUB`_subtype(`FINAL`_final?{}, typeuse*{typeuse <- `typeuse*`}, compttype), `OK`_oktypeidxnat(x, i)) + `%|-%:%`(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'**`} + -- (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'*`} @@ -89703,33 +2897,33 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) 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)) + `%|-%:%`(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))) + `%|-%:%`(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, n : n, `subtype*` : subtype*}: - `%|-%:OK`(C, `_DEF`_deftype(rectype, i)) - -- Rectype_ok: `%|-%:%`(C, rectype, `OK`_oktypeidx(x)) - -- if (rectype = `REC`_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) + `%|-%: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*`}))) + `%|-%<:%`(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)) + `%|-%<:%`(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 @@ -89748,7 +2942,7 @@ relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) ;; ../../../../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)) + -- 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 @@ -89766,33 +2960,33 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 rule `eq-any`{C : context}: - `%|-%<:%`(C, `EQ`_heaptype, `ANY`_heaptype) + `%|-%<:%`(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) + `%|-%<:%`(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) + `%|-%<:%`(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) + `%|-%<:%`(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*`}))) + `%|-%<:%`(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)) + `%|-%<:%`(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) + `%|-%<:%`(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 @@ -89802,53 +2996,53 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../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) + `%|-%<:%`(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)) + `%|-%<:%`(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)) + `%|-%<:%`(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) + `%|-%<:%`(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) + `%|-%<:%`(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) + `%|-%<:%`(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) + `%|-%<:%`(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) + `%|-%<:%`(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)) + `%|-%<:%`(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)) + `%|-%<:%`(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 @@ -89870,7 +3064,7 @@ relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:110.1-111.22 rule bot{C : context, valtype : valtype}: - `%|-%<:%`(C, `BOT`_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) @@ -89900,7 +3094,7 @@ relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) ;; ../../../../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)) + `%|-%<:%`(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) } @@ -89912,7 +3106,7 @@ relation Instrtype_ok: `%|-%:OK`(context, instrtype) `%|-%: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*`} + -- (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) @@ -89923,8 +3117,8 @@ relation Expand_use: `%~~_%%`(typeuse, context, 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) + `%~~_%%`(_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) @@ -89946,7 +3140,7 @@ relation Tagtype_ok: `%|-%:OK`(context, tagtype) 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)) + `%|-%:OK`(C, `%%`_globaltype(MUT_mut?{}, t)) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -89968,27 +3162,27 @@ relation Tabletype_ok: `%|-%:OK`(context, tabletype) 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)) + `%|-%: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)) + `%|-%: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)) + `%|-%: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)) + `%|-%: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)) + `%|-%: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*`}))) @@ -90000,7 +3194,7 @@ 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 (C.`LOCALS`_context[x!`%`_idx.0] = `%%`_localtype(`SET`_init, t)))*{t <- `t*`, x <- `x*`} + -- (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) @@ -90032,7 +3226,7 @@ relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) ;; ../../../../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)) + `%|-%<:%`(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) @@ -90056,77 +3250,77 @@ relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) 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)) + `%|-%<:%`(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)) + `%|-%<:%`(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)) + `%|-%<:%`(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)) + `%|-%<:%`(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))) + `%|-%<:%`(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?`})))) + `%|-%:%`(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*`}))) + `%|-%:%`(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]) + `%|-%: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]) + `%|-%: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]) + `%|-%: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]) + `%|-%: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 : Inn <: valtype)) = ?(`CONST`_val((Inn : Inn <: numtype), `%`_num_(0))) + def $default_{Inn : Inn}((Inn : Inn <: valtype)) = ?(CONST_val((Inn : Inn <: 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))))) + 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 : Vnn <: valtype)) = ?(`VCONST`_val(Vnn, `%`_vec_(0))) + def $default_{Vnn : Vnn}((Vnn : Vnn <: 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)) + 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)) = ?() + def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Defaultable: `|-%DEFAULTABLE`(valtype) @@ -90139,7 +3333,7 @@ relation Defaultable: `|-%DEFAULTABLE`(valtype) 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) + `|-%:%->%`({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)))) @@ -90155,82 +3349,82 @@ rec { 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([]))) + `%|-%:%`(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*`}))) + `%|-%:%`(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([]))) + `%|-%:%`(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]))) + `%|-%:%`(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]))) + `%|-%:%`(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*`}))) + `%|-%:%`(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*`}))) + -- 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*`}))) + `%|-%:%`(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*`}))) + -- 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*`}))) + `%|-%:%`(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*`}))) + -- 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*`}) + `%|-%:%`(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*`}) + `%|-%:%`(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*`}))) + `%|-%:%`(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*`}) + `%|-%:%`(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)])) + `%|-%:%`(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)])) + `%|-%:%`(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) @@ -90238,8 +3432,8 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../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)])) + `%|-%:%`(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) @@ -90247,504 +3441,504 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../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*`}))) + `%|-%:%`(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*`}))) + `%|-%:%`(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*`}))) + `%|-%:%`(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*`}))) + `%|-%:%`(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*`}))) + `%|-%:%`(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*`}))) + `%|-%:%`(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*`}))) + `%|-%:%`(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([]))) + `%|-%:%`(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*`}))) + `%|-%:%`(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*`}))) + `%|-%:%`(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*`}))) + -- 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)]))) + 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) + 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)]))) + 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]))) + 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)]))) + 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]))) + 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]))) + 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}: + 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]))) + 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*`}))) + 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*`}))) + 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*`}))) + 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)) + 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))) + 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))) + 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))) + 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) + 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))) + 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) + -- 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))) + 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))) + 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]))) + 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))) + 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))) + 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) + 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))) + 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) + -- 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)]))) + 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)]))) + 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}: + 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)) + -- 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}: + 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)) + -- 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}: + 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)) + -- 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?}: + 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)) + -- 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}: + 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)) + -- 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}: + 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)) + -- 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}: + 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)) + -- 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}: + 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)) + -- 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)) + 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}: + 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)) + -- 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}: + 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)) + -- 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) + 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}: + 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) + -- 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}: + 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)) + -- 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}: + 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)) + -- 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)) + 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}: + 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)) + -- 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) + 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}: + rule `data.drop`{C : context, x : idx}: `%|-%:%`(C, `DATA.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - -- if (C.`DATAS`_context[x!`%`_idx.0] = `OK`_datatype) + -- 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)) + `%|-%:%`(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 : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(M), sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : Inn <: valtype)]))) - -- if (C.`MEMS`_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) + `%|-%:%`(C, LOAD_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(M), sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : Inn <: 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)) + `%|-%:%`(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 : Inn <: numtype), ?(`%`_storeop_(`%`_sz(M))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : Inn <: valtype)]), [], `%`_resulttype([]))) - -- if (C.`MEMS`_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) + `%|-%:%`(C, STORE_instr((Inn : Inn <: numtype), ?(`%`_storeop_(`%`_sz(M))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : Inn <: 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)) + `%|-%:%`(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)) + `%|-%:%`(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)) + `%|-%:%`(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)) + `%|-%:%`(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)) + `%|-%:%`(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)) + `%|-%:%`(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)) + `%|-%:%`(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)]))) + `%|-%:%`(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)]))) + `%|-%:%`(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)]))) + `%|-%:%`(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]))) + `%|-%:%`(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]))) + `%|-%:%`(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)]))) + `%|-%:%`(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]))) + 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]))) + `%|-%:%`(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]))) + `%|-%:%`(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]))) + `%|-%:%`(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]))) + `%|-%:%`(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]))) + `%|-%:%`(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]))) + `%|-%:%`(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]))) + `%|-%:%`(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]))) + `%|-%:%`(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]))) + `%|-%:%`(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]))) + `%|-%:%`(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]))) + `%|-%:%`(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]))) + `%|-%:%`(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]))) + `%|-%:%`(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]))) + `%|-%:%`(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)]))) + `%|-%:%`(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]))) + `%|-%:%`(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]))) + `%|-%:%`(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]))) + `%|-%:%`(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]))) + `%|-%:%`(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]))) + `%|-%:%`(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]))) + `%|-%:%`(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) @@ -90756,8 +3950,8 @@ relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) 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*`}))) + -- (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}: @@ -90791,62 +3985,62 @@ relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) 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)) + `%|-%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)) + `%|-%CONST`(C, VCONST_instr(vt, c_vt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule ref.null{C : context, ht : heaptype}: + 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}: + 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}: + 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}: + 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}: + 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}: + 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}: + 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}: + 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}: + 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}: + 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}: + rule `global.get`{C : context, x : idx, t : valtype}: `%|-%CONST`(C, `GLOBAL.GET`_instr(x)) - -- if (C.`GLOBALS`_context[x!`%`_idx.0] = `%%`_globaltype(?(), t)) + -- 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 : Inn <: numtype))}: - `%|-%CONST`(C, `BINOP`_instr((Inn : Inn <: numtype), binop)) - -- if (Inn <- [`I32`_Inn `I64`_Inn]) - -- if (binop <- [`ADD`_binop_ `SUB`_binop_ `MUL`_binop_]) + `%|-%CONST`(C, BINOP_instr((Inn : Inn <: 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) @@ -90867,39 +4061,39 @@ relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) 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|) + `%|-%:%`(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)) + -- 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)) + `%|-%:%`(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) + `%|-%:%`(C, GLOBAL_global(globaltype, expr), globaltype) -- Globaltype_ok: `%|-%:OK`(C, globaltype) - -- if (globaltype = `%%`_globaltype(`MUT`_mut?{}, t)) + -- 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) + `%|-%:%`(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) + `%|-%:%`(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)) @@ -90908,56 +4102,56 @@ relation Table_ok: `%|-%:%`(context, table, tabletype) 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)) + `%|-%:%`(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)) + `%|-%:%`(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*`}))) + `%|-%:%`(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*`})) + -- 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) + `%|-%:%`(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)) + `%|-%:%`(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) + `%|-%:%`(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) + `%|-%:%`(C, PASSIVE_elemmode, rt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule declare{C : context, rt : reftype}: - `%|-%:%`(C, `DECLARE`_elemmode, rt) + `%|-%:%`(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')) + `%|-%:%`(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)) @@ -90965,7 +4159,7 @@ relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) 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) + `%|-%:%`(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) @@ -90974,48 +4168,48 @@ relation Elem_ok: `%|-%:%`(context, elem, elemtype) 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([]))) + `%|-%: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)) + `%|-%:%`(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) + `%|-%:%`(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) + `%|-%:%`(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) + `%|-%:%`(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) + `%|-%:%`(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) + `%|-%:%`(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) + `%|-%:%%`(C, EXPORT_export(name, externidx), name, xt) -- Externidx_ok: `%|-%:%`(C, externidx, xt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -91031,7 +4225,7 @@ relation Globals_ok: `%|-%:%`(context, global*, globaltype*) 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*`}) + -- 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 @@ -91047,7 +4241,7 @@ relation Types_ok: `%|-%:%`(context, type*, deftype*) 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*`}) + -- 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 @@ -91057,15 +4251,15 @@ syntax nonfuncs = ;; ../../../../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*`}, ?(), [])) + 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*`} + `|-%:%`(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*`} @@ -91076,8 +4270,8 @@ relation Module_ok: `|-%:%`(module, moduletype) -- (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 (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*`})) @@ -91214,7 +4408,7 @@ 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{packtype : packtype}((packtype : packtype <: storagetype)) = ?(S_sx) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(lanetype : lanetype) : lane_(lanetype) @@ -91286,9 +4480,9 @@ 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))) + 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))))) + 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) @@ -91308,72 +4502,72 @@ def $imul_(N : N, iN : iN(N), iN : iN(N)) : iN(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)) = ?() + 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))) + 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)) = ?() + 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) = ?() + 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)))))) + 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)) = ?() + 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))) + 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)) = ?() + 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)))))))) + 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 + 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 + 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) = i_1 + def $imin_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = i_1 -- if ($signed_(N, i_1!`%`_iN.0) <= $signed_(N, 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) = i_2 + def $imin_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = i_2 -- otherwise ;; ../../../../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 + 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 + 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) = i_1 + def $imax_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = i_1 -- if ($signed_(N, i_1!`%`_iN.0) >= $signed_(N, 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) = i_2 + def $imax_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = i_2 -- otherwise ;; ../../../../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))) + 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))))) + 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)))) + 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))))) + 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) @@ -91443,30 +4637,30 @@ def $ine_(N : N, iN : iN(N), iN : iN(N)) : u32 ;; ../../../../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))) + 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)))) + 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))) + 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)))) + 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))) + 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)))) + 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))) + 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)))) + 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)* @@ -91595,178 +4789,178 @@ def $lunpacknum_(lanetype : lanetype, lane_ : lane_(lanetype)) : num_($lunpack(l ;; ../../../../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) + 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) + 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 : Inn <: numtype))}((Inn : Inn <: numtype), `CLZ`_unop_, i) = [$iclz_($sizenn((Inn : Inn <: numtype)), i)] + def $unop_{Inn : Inn, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), CLZ_unop_, i) = [$iclz_($sizenn((Inn : Inn <: numtype)), i)] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Inn : Inn, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `CTZ`_unop_, i) = [$ictz_($sizenn((Inn : Inn <: numtype)), i)] + def $unop_{Inn : Inn, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), CTZ_unop_, i) = [$ictz_($sizenn((Inn : Inn <: numtype)), i)] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Inn : Inn, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `POPCNT`_unop_, i) = [$ipopcnt_($sizenn((Inn : Inn <: numtype)), i)] + def $unop_{Inn : Inn, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), POPCNT_unop_, i) = [$ipopcnt_($sizenn((Inn : Inn <: numtype)), i)] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Inn : Inn, M : M, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `EXTEND`_unop_(`%`_sz(M)), i) = [$iextend_($sizenn((Inn : Inn <: numtype)), M, `S`_sx, i)] + def $unop_{Inn : Inn, M : M, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), EXTEND_unop_(`%`_sz(M)), i) = [$iextend_($sizenn((Inn : Inn <: 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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 : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `ADD`_binop_, i_1, i_2) = [$iadd_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] + def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), ADD_binop_, i_1, i_2) = [$iadd_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `SUB`_binop_, i_1, i_2) = [$isub_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] + def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), SUB_binop_, i_1, i_2) = [$isub_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `MUL`_binop_, i_1, i_2) = [$imul_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] + def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), MUL_binop_, i_1, i_2) = [$imul_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `DIV`_binop_(sx), i_1, i_2) = lift($idiv_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2)) + def $binop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), DIV_binop_(sx), i_1, i_2) = lift($idiv_($sizenn((Inn : Inn <: 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 : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `REM`_binop_(sx), i_1, i_2) = lift($irem_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2)) + def $binop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), REM_binop_(sx), i_1, i_2) = lift($irem_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `AND`_binop_, i_1, i_2) = [$iand_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] + def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), AND_binop_, i_1, i_2) = [$iand_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `OR`_binop_, i_1, i_2) = [$ior_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] + def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), OR_binop_, i_1, i_2) = [$ior_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `XOR`_binop_, i_1, i_2) = [$ixor_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] + def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), XOR_binop_, i_1, i_2) = [$ixor_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `SHL`_binop_, i_1, i_2) = [$ishl_($sizenn((Inn : Inn <: numtype)), i_1, `%`_u32(i_2!`%`_num_.0))] + def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), SHL_binop_, i_1, i_2) = [$ishl_($sizenn((Inn : Inn <: 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 : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `SHR`_binop_(sx), i_1, i_2) = [$ishr_($sizenn((Inn : Inn <: numtype)), sx, i_1, `%`_u32(i_2!`%`_num_.0))] + def $binop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), SHR_binop_(sx), i_1, i_2) = [$ishr_($sizenn((Inn : Inn <: 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 : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `ROTL`_binop_, i_1, i_2) = [$irotl_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] + def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), ROTL_binop_, i_1, i_2) = [$irotl_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `ROTR`_binop_, i_1, i_2) = [$irotr_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] + def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), ROTR_binop_, i_1, i_2) = [$irotr_($sizenn((Inn : Inn <: 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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 : Inn <: numtype))}((Inn : Inn <: numtype), `EQZ`_testop_, i) = $ieqz_($sizenn((Inn : Inn <: numtype)), i) + def $testop_{Inn : Inn, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), EQZ_testop_, i) = $ieqz_($sizenn((Inn : Inn <: 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 : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `EQ`_relop_, i_1, i_2) = $ieq_($sizenn((Inn : Inn <: numtype)), i_1, i_2) + def $relop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), EQ_relop_, i_1, i_2) = $ieq_($sizenn((Inn : Inn <: numtype)), i_1, i_2) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `NE`_relop_, i_1, i_2) = $ine_($sizenn((Inn : Inn <: numtype)), i_1, i_2) + def $relop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), NE_relop_, i_1, i_2) = $ine_($sizenn((Inn : Inn <: numtype)), i_1, i_2) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $relop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `LT`_relop_(sx), i_1, i_2) = $ilt_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) + def $relop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), LT_relop_(sx), i_1, i_2) = $ilt_($sizenn((Inn : Inn <: 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 : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `GT`_relop_(sx), i_1, i_2) = $igt_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) + def $relop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), GT_relop_(sx), i_1, i_2) = $igt_($sizenn((Inn : Inn <: 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 : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `LE`_relop_(sx), i_1, i_2) = $ile_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) + def $relop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), LE_relop_(sx), i_1, i_2) = $ile_($sizenn((Inn : Inn <: 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 : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), `GE`_relop_(sx), i_1, i_2) = $ige_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) + def $relop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), GE_relop_(sx), i_1, i_2) = $ige_($sizenn((Inn : Inn <: 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) + 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) + 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) + 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) + 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) + 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) + 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 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Inn_2 : Inn <: numtype), `EXTEND`_cvtop__(sx), i_1) = [$extend__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, i_1)] + def $cvtop__{Inn_1 : Inn, Inn_2 : Inn, sx : sx, i_1 : num_((Inn_1 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Inn_2 : Inn <: numtype), EXTEND_cvtop__(sx), i_1) = [$extend__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Inn_2 : Inn <: 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 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Inn_2 : Inn <: numtype), `WRAP`_cvtop__, i_1) = [$wrap__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), i_1)] + def $cvtop__{Inn_1 : Inn, Inn_2 : Inn, i_1 : num_((Inn_1 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Inn_2 : Inn <: numtype), WRAP_cvtop__, i_1) = [$wrap__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Inn_2 : Inn <: 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 : Inn <: numtype), `TRUNC`_cvtop__(sx), f_1) = lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, f_1)) + def $cvtop__{Fnn_1 : Fnn, Inn_2 : Inn, sx : sx, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), TRUNC_cvtop__(sx), f_1) = lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : Inn <: 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 : Inn <: numtype), `TRUNC_SAT`_cvtop__(sx), f_1) = lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, f_1)) + def $cvtop__{Fnn_1 : Fnn, Inn_2 : Inn, sx : sx, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), TRUNC_SAT_cvtop__(sx), f_1) = lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : Inn <: 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 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype), `CONVERT`_cvtop__(sx), i_1) = [$convert__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1)] + def $cvtop__{Inn_1 : Inn, Fnn_2 : Fnn, sx : sx, i_1 : num_((Inn_1 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype), CONVERT_cvtop__(sx), i_1) = [$convert__($sizenn1((Inn_1 : Inn <: 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) + 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) + 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 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype), `REINTERPRET`_cvtop__, i_1) = [$reinterpret__((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype), i_1)] + def $cvtop__{Inn_1 : Inn, Fnn_2 : Fnn, i_1 : num_((Inn_1 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype), REINTERPRET_cvtop__, i_1) = [$reinterpret__((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype), i_1)] -- if ($size((Inn_1 : Inn <: 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 : Inn <: numtype), `REINTERPRET`_cvtop__, f_1) = [$reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), f_1)] + def $cvtop__{Fnn_1 : Fnn, Inn_2 : Inn, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), REINTERPRET_cvtop__, f_1) = [$reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), f_1)] -- if ($size((Fnn_1 : Fnn <: numtype)) = $size((Inn_2 : Inn <: numtype))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $lanes_(shape : shape, vec_ : vec_(`V128`_Vnn)) : lane_($lanetype(shape))* +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) +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)) = ?() + 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)) = ?() + 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?`} + 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?`} + 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) + 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__) = ?() + 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) + 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?`} + 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?`})) = ?() + 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?`})) = ?() + 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)) = ?() + 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) + 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 + 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 + 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) @@ -91790,127 +4984,127 @@ def $irelaxed_swizzle_lane_(N : N, iN(N)*, iN : iN(N)) : iN(N) -- otherwise ;; ../../../../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)* +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*`})] + 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*`})] -- 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)), 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(N)) : fN(N)*, vec_ : vec_(`V128`_Vnn)) : vec_(`V128`_Vnn)* +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**`} + 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**`} -- 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)), $f_($sizenn((Fnn : Fnn <: numtype)), 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(N), iN : iN(N)) : iN(N), vec_ : vec_(`V128`_Vnn), vec_ : vec_(`V128`_Vnn)) : vec_(`V128`_Vnn)* +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*`})] + 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*`})] -- 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)), c_1, 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(N), iN : iN(N)) : iN(N), sx : sx, vec_ : vec_(`V128`_Vnn), vec_ : vec_(`V128`_Vnn)) : vec_(`V128`_Vnn)* +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*`})] + 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*`})] -- 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, c_1, 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(N), iN : iN(N)) : iN(N)*, sx : sx, vec_ : vec_(`V128`_Vnn), vec_ : vec_(`V128`_Vnn)) : vec_(`V128`_Vnn)* +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**`} + 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**`} -- 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)), $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, 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(N), fN : fN(N)) : fN(N)*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(`V128`_Vnn)) : vec_(`V128`_Vnn)* +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**`} + 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**`} -- 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)), $f_($sizenn((Fnn : Fnn <: numtype)), c_1, 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(N), iN : iN(N), iN : iN(N)) : iN(N)*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(`V128`_Vnn), vec_ : vec_(`V128`_Vnn)) : vec_(`V128`_Vnn)* +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**`} + 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**`} -- 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)), $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_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(N), fN : fN(N), fN : fN(N)) : fN(N)*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(`V128`_Vnn), vec_ : vec_(`V128`_Vnn)) : vec_(`V128`_Vnn)* +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**`} + 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**`} -- 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)), $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_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 $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) +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*`}) + 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*`}) -- 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)), c_1, c_2)!`%`_u32.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- if (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*`}) ;; ../../../../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) +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*`}) + 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*`}) -- 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, c_1, c_2)!`%`_u32.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- if (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*`}) ;; ../../../../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) +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 : Inn <: lanetype), `%`_dim(M)), `%`_lane_(c!`%`_iN.0)*{c <- `c*`}) + 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 : Inn <: lanetype), `%`_dim(M)), `%`_lane_(c!`%`_iN.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)), c_1, c_2)!`%`_u32.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + -- if (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*`}) -- 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) +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*`}) + 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*`}) -- 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)), 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(N), u32 : u32) : iN(N), sx : sx, vec_ : vec_(`V128`_Vnn), u32 : u32) : vec_(`V128`_Vnn) +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*`}) + 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*`}) -- 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, c_1, i)*{c_1 <- `c_1*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivbitmaskop_(shape : shape, vec_ : vec_(`V128`_Vnn)) : u32 +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) + 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) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_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){}) + -- 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) +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*`}) + 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*`}) -- 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)), c_1*{c_1 <- `c_1*`}, c_2)*{c_2 <- `c_2*`}) ;; ../../../../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) +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*`}) + 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*`}) -- 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!`%`_laneidx.0]*{i <- `i*`}) @@ -91918,196 +5112,196 @@ def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_(`V128`_Vnn), vec_ : vec_(` ;; ../../../../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)] + 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)] + 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)] + 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)] + 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)] + 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)] + 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)* +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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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)* +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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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)* +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) + 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) + 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) + 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) +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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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] + 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] -- 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 : 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] + 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] -- 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 : 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 : Inn <: lanetype)))?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : Inn <: lanetype), `%`_dim(M_2)), `TRUNC_SAT`_vcvtop__(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) + 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 : Inn <: lanetype)))?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : Inn <: lanetype), `%`_dim(M_2)), TRUNC_SAT_vcvtop__(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : Inn <: lanetype)), sx, c_1)) ;; ../../../../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 : Inn <: lanetype)))?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : Inn <: lanetype), `%`_dim(M_2)), `RELAXED_TRUNC`_vcvtop__(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) + 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 : Inn <: lanetype)))?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : Inn <: lanetype), `%`_dim(M_2)), RELAXED_TRUNC_vcvtop__(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : Inn <: lanetype)), sx, c_1)) ;; ../../../../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*`} + 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*`} -- 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 : 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*`} + 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*`} -- 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__(shape_1, shape_2), vec_ : vec_(`V128`_Vnn)) : vec_(`V128`_Vnn) +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 + 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) = ?())) -- 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*`})) -- 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 + 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)) -- 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*`})) -- 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)) + 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)) -- 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{})) -- 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) +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) + 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) + 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 +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) + 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) +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) + 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) + 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) +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) + 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) +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 + 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 -- 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, c_1)*{c_1 <- `c_1*`}) @@ -92121,17 +5315,17 @@ def $ivadd_pairwise_(N : N, iN(N)*) : iN(N)* -- 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) +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*`}) + 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*`}) -- 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, 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__(ishape_1, ishape_2), vec_ : vec_(`V128`_Vnn)) : vec_(`V128`_Vnn) +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) + 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)* @@ -92142,13 +5336,13 @@ def $ivdot_(N : N, iN(N)*, iN(N)*) : iN(N)* ;; ../../../../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*`} + 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) +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*`}) + 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*`}) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)[i!`%`_laneidx.0 : k!`%`_laneidx.0]) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)[i!`%`_laneidx.0 : k!`%`_laneidx.0]) -- if (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*`}) @@ -92161,31 +5355,31 @@ def $ivmul_(N : N, iN(N)*, iN(N)*) : iN(N)* 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) +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) + 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) + 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) + 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) +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 + 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)))) -- 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))), `RELAXED_DOTS`_vextbinop__, 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))), `EXTADD_PAIRWISE`_vextunop__(`S`_sx), c')) - -- if (c <- $vbinop_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), `ADD`_vbinop_, c'', c_3)) + -- if (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)) + -- if (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')) + -- 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_(numtype)) + | CONST(numtype : numtype, num_(numtype)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax vec = - | `VCONST`(vectype : vectype, vec_(vectype)) + | VCONST(vectype : vectype, vec_(vectype)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax ref = @@ -92200,9 +5394,9 @@ syntax ref = ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax result = - | `_VALS`(`val*` : val*) + | _VALS(`val*` : val*) | `(REF.EXN_ADDR%)THROW_REF`(exnaddr : exnaddr) - | `TRAP` + | TRAP ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax hostfunc = @@ -92210,65 +5404,65 @@ syntax hostfunc = ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax funccode = - | `FUNC`(typeidx : typeidx, `local*` : local*, expr : expr) + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) | `...` ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax taginst = { - `TYPE` tagtype + TYPE tagtype } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax globalinst = { - `TYPE` globaltype , - `VALUE` val + TYPE globaltype, + VALUE val } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax meminst = { - `TYPE` memtype , - `BYTES` byte* + TYPE memtype, + BYTES byte* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax tableinst = { - `TYPE` tabletype , - `REFS` ref* + TYPE tabletype, + REFS ref* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax funcinst = { - `TYPE` deftype , - `MODULE` moduleinst , - `CODE` funccode + TYPE deftype, + MODULE moduleinst, + CODE funccode } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax datainst = { - `BYTES` byte* + BYTES byte* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax eleminst = { - `TYPE` elemtype , - `REFS` ref* + TYPE elemtype, + REFS ref* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax packval = - | `PACK`(packtype : packtype, iN($psizenn(packtype))) + | PACK(packtype : packtype, iN($psizenn(packtype))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax fieldval = - | `CONST`(numtype : numtype, num_(numtype)) - | `VCONST`(vectype : vectype, vec_(vectype)) + | CONST(numtype : numtype, num_(numtype)) + | VCONST(vectype : vectype, vec_(vectype)) | `REF.I31_NUM`(u31 : u31) | `REF.STRUCT_ADDR`(structaddr : structaddr) | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) @@ -92277,42 +5471,42 @@ syntax fieldval = | `REF.HOST_ADDR`(hostaddr : hostaddr) | `REF.EXTERN`(addrref : addrref) | `REF.NULL`(heaptype : heaptype) - | `PACK`(packtype : packtype, iN($psizenn(packtype))) + | PACK(packtype : packtype, iN($psizenn(packtype))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax structinst = { - `TYPE` deftype , - `FIELDS` fieldval* + TYPE deftype, + FIELDS fieldval* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax arrayinst = { - `TYPE` deftype , - `FIELDS` fieldval* + TYPE deftype, + FIELDS fieldval* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax exninst = { - `TAG` tagaddr , - `FIELDS` val* + TAG tagaddr, + FIELDS val* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax store = { - `TAGS` taginst* , - `GLOBALS` globalinst* , - `MEMS` meminst* , - `TABLES` tableinst* , - `FUNCS` funcinst* , - `DATAS` datainst* , - `ELEMS` eleminst* , - `STRUCTS` structinst* , - `ARRAYS` arrayinst* , - `EXNS` exninst* + TAGS taginst*, + GLOBALS globalinst*, + MEMS meminst*, + TABLES tableinst*, + FUNCS funcinst*, + DATAS datainst*, + ELEMS eleminst*, + STRUCTS structinst*, + ARRAYS arrayinst*, + EXNS exninst* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -92333,14 +5527,14 @@ 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)) + 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)) + 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 { @@ -92350,7 +5544,7 @@ 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*`}) + 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*`}) -- otherwise @@ -92364,7 +5558,7 @@ 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*`}) + 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*`}) -- otherwise @@ -92378,7 +5572,7 @@ 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*`}) + 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*`}) -- otherwise @@ -92392,7 +5586,7 @@ 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*`}) + 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*`}) -- otherwise @@ -92406,7 +5600,7 @@ 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*`}) + 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*`}) -- otherwise @@ -92425,179 +5619,179 @@ def $frame(state : state) : frame ;; ../../../../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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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] + 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]] + 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]] + 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]] + 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]] + 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]] + 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]] + 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]] + 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] + 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)]) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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' - -- 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 (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 (i'!`%`_u64.0 = (|r'*{r' <- `r'*`}| + n)) -- (if (i'!`%`_u64.0 <= j!`%`_u64.0))?{j <- `j?`} @@ -92605,8 +5799,8 @@ 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 : n, meminst' : meminst, at : addrtype, i : u64, `j?` : u64?, `b*` : byte*, i' : u64}(meminst, n) = meminst' - -- 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 (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 ((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?`} @@ -92614,13 +5808,13 @@ def $growmem(meminst : meminst, nat : nat) : meminst 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) + `%|-%:%`(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) + `%|-%:%`(s, VCONST_vec(vt, c), vt) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { @@ -92629,47 +5823,47 @@ rec { 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')) - -- Heaptype_sub: `%|-%<:%`({`TYPES` [], `RECS` [], `TAGS` [], `GLOBALS` [], `MEMS` [], `TABLES` [], `FUNCS` [], `DATAS` [], `ELEMS` [], `LOCALS` [], `LABELS` [], `RETURN` ?(), `REFS` []}, ht', ht) + `%|-%:%`(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 rule i31{s : store, i : u31}: - `%|-%:%`(s, `REF.I31_NUM`_ref(i), `REF`_reftype(?(), `I31`_heaptype)) + `%|-%:%`(s, `REF.I31_NUM`_ref(i), 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))) - -- if (s.`STRUCTS`_store[a].`TYPE`_structinst = dt) + `%|-%:%`(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 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) + `%|-%:%`(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 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) + `%|-%:%`(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 rule exn{s : store, a : addr, exn : exninst}: - `%|-%:%`(s, `REF.EXN_ADDR`_ref(a), `REF`_reftype(?(), `EXN`_heaptype)) - -- if (s.`EXNS`_store[a] = exn) + `%|-%:%`(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 rule host{s : store, a : addr}: - `%|-%:%`(s, `REF.HOST_ADDR`_ref(a), `REF`_reftype(?(), `ANY`_heaptype)) + `%|-%:%`(s, `REF.HOST_ADDR`_ref(a), 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)) - -- Ref_ok: `%|-%:%`(s, (addrref : addrref <: ref), `REF`_reftype(?(), `ANY`_heaptype)) + `%|-%:%`(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 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) + -- 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 @@ -92696,98 +5890,98 @@ rec { 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)) - -- if (s.`TAGS`_store[a] = 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 rule global{s : store, a : addr, globalinst : globalinst}: - `%|-%:%`(s, `GLOBAL`_externaddr(a), `GLOBAL`_externtype(globalinst.`TYPE`_globalinst)) - -- if (s.`GLOBALS`_store[a] = 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 rule mem{s : store, a : addr, meminst : meminst}: - `%|-%:%`(s, `MEM`_externaddr(a), `MEM`_externtype(meminst.`TYPE`_meminst)) - -- if (s.`MEMS`_store[a] = 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 rule table{s : store, a : addr, tableinst : tableinst}: - `%|-%:%`(s, `TABLE`_externaddr(a), `TABLE`_externtype(tableinst.`TYPE`_tableinst)) - -- if (s.`TABLES`_store[a] = 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 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) + `%|-%:%`(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 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) + -- 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) + -- 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) + -- 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) + -- 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) + -- 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) + -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) ;; ../../../../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]) + `%~>%`([UNREACHABLE_instr], [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule nop: - `%~>%`([`NOP`_instr], []) + `%~>%`([NOP_instr], []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule drop{val : val}: - `%~>%`([(val : val <: instr) `DROP`_instr], []) + `%~>%`([(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)]) + 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)]) + 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*`})]) + 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*`})]) + 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 @@ -92796,65 +5990,65 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../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'*`}) + `%~>%`([`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)))]) + `%~>%`([`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)]) + `%~>%`([`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)]) + 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)], []) + 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])]) + 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')]) + 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)]) + `%~>%`([(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)]) + `%~>%`([(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)], []) + `%~>%`([(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)]) + `%~>%`([(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)]) + `%~>%`([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)]) + `%~>%`([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*}: @@ -92862,15 +6056,15 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../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*`}) + `%~>%`([`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]) + `%~>%`([`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]) + `%~>%`([`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*}: @@ -92878,38 +6072,38 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../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]) + `%~>%`((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]) + `%~>%`([`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]) + `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule local.tee{val : val, x : idx}: + 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))]) + 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))]) + `%~>%`([(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))]) + `%~>%`([(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]) + `%~>%`([(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 @@ -92919,35 +6113,35 @@ relation Step_pure: `%~>%`(instr*, 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, `%`_num_(1))]) + `%~>%`([(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))]) + `%~>%`([(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))]) + `%~>%`([(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]) + `%~>%`([`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))]) + `%~>%`([`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))]) + 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)]) + `%~>%`([`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}: @@ -92955,7 +6149,7 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../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)]) + `%~>%`([`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}: @@ -92963,726 +6157,726 @@ relation Step_pure: `%~>%`(instr*, 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)]) + `%~>%`([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]) + `%~>%`([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)]) + `%~>%`([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]) + `%~>%`([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)]) + 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)]) + 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)]) + `%~>%`([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]) + `%~>%`([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)) + 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)) + 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)) + 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)) + 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)]) + 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]) + 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)]) + 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]) + 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)]) + 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]) + 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)]) + 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)]) + 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)]) + 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)]) + 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)]) + 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)]) + 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)]) + 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)]) + 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)]) + 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)]) + 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)]) + 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)]) + 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)]) + 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)]) + 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)]) + 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*`})) + 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?`}))) + 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, m : m, `val*` : val*, 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*`})]) + `%~>%`(`%;%`_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, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, n : n, `t_2*` : valtype*}: - `%~>%`(`%;%`_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*`})]) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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)) + -- 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)]) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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)) + -- 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)]) + `%~>%`(`%;%`_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) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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, n : n, `val*` : val*, 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*`})])]) + `%~>%`(`%;%`_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}) + -- 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) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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*, n : n, `val*` : val*, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, m : m, `t_2*` : valtype*}: - `%~>%`(`%;%`_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*`}))) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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) + `%~>%`(`%;%`_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) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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])]) + `%~>%`(`%;%`_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, m : m, `val*` : val*, 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*`})])]) + `%~>%`(`%;%`_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}: + 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}: + 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) + -- 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|) + `%~>%`(`%;%`_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|) + `%~>%`(`%;%`_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)) + 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|) + `%~>%`(`%;%`_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)]), []) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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|)) + `%~>%`(`%;%`_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)]), []) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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|)) + 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)]), []) + 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)]) + 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|) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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 : Inn <: 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|) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : Inn <: 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 : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n), sx)), x, ao)]), [`CONST`_instr((Inn : Inn <: numtype), $extend__(n, $size((Inn : Inn <: 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)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n), sx)), x, ao)]), [CONST_instr((Inn : Inn <: numtype), $extend__(n, $size((Inn : Inn <: 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|) + `%~>%`(`%;%`_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)]) + 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|) + `%~>%`(`%;%`_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), k : nat, `j*` : iN(M)*, 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, ?(`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|) + `%~>%`(`%;%`_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)]) + 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|) + `%~>%`(`%;%`_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)) + 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|) + 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)]) + 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 ((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)) + 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|) + `%~>%`(`%;%`_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)]), []) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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|)) + `%~>%`(`%;%`_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)]), []) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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|)) + 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)]), []) + 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)]) + 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))]) + `%~>%`(`%;%`_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])]) + 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))]) + `%~>%`(`%;%`_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)) + -- 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))]) + `%~>%`(`%;%`_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)) + -- 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]) + `%~>%`(`%;%`_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*}: + 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*`}))) + -- 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]) + `%~>%`(`%;%`_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*`}))) + `%~>%`(`%;%`_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))) + 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|) + 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]) + 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|) + 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)]) + 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]) + 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|) + 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))) + 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]) + `%~>%`(`%;%`_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|))]) + `%~>%`(`%;%`_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]) + 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|) + 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)]), []) + 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)]) + 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]) + 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]) + 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|) + 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|) + 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)]), []) + 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)]) + 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))) + -- 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)]) + 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))) + -- 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]) + 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|) + 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|) + 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)]), []) + 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)]) + 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]) + -- 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]) + 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|) + 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|) + 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)]), []) + 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)]) + 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)]) + -- 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 { @@ -93717,132 +6911,132 @@ relation Step: `%~>%`(config, config) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:227.1-231.49 rule throw{z : state, n : n, `val*` : val*, 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([]))) + `%~>%`(`%;%`_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*`}}) + -- 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}: + 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}: + 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|) + `%~>%`(`%;%`_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|) + `%~>%`(`%;%`_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|))])) + `%~>%`(`%;%`_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))))])) + `%~>%`(`%;%`_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}: + 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|) + `%~>%`(`%;%`_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*`}), [])) + `%~>%`(`%;%`_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 : Inn <: numtype)), n : n, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr((Inn : Inn <: numtype), c) `STORE`_instr((Inn : Inn <: 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|) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : Inn <: numtype), c) STORE_instr((Inn : Inn <: 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 : Inn <: numtype)), n : n, x : idx, ao : memarg, `b*` : byte*}: - `%~>%`(`%;%`_config(z, [`CONST`_instr((at : addrtype <: numtype), i) `CONST`_instr((Inn : Inn <: numtype), c) `STORE`_instr((Inn : Inn <: 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*`}), [])) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : Inn <: numtype), c) STORE_instr((Inn : Inn <: 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 : Inn <: 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|) + 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)) + 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|) + 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*`}), [])) + 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)))])) + `%~>%`(`%;%`_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))))])) + `%~>%`(`%;%`_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}: + 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, n : n, `val*` : val*, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: + rule `struct.new`{z : state, n : n, `val*` : val*, 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*`}))) + -- 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}: - `%~>%`(`%;%`_config(z, [`REF.NULL`_instr(ht) (val : val <: instr) `STRUCT.SET`_instr(x, i)]), `%;%`_config(z, [`TRAP`_instr])) + `%~>%`(`%;%`_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*`}))) + -- 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, n : n, `val*` : val*, x : idx, ai : arrayinst, a : addr, `mut?` : mut?, zt : storagetype}: + rule `array.new_fixed`{z : state, n : n, `val*` : val*, 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*`}})) + -- 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])) + 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|) + 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))) + 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 @@ -93878,7 +7072,7 @@ 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 : idx}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} -- if (deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`})) - -- if (type = `TYPE`_type(rectype)) + -- if (type = TYPE_type(rectype)) -- if (deftype*{deftype <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), (deftype' : deftype <: typeuse)*{deftype' <- `deftype'*`})) -- if (x!`%`_idx.0 = |deftype'*{deftype' <- `deftype'*`}|) } @@ -93886,8 +7080,8 @@ def $alloctypes(type*) : 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}) + 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 { @@ -93905,8 +7099,8 @@ def $alloctags(store : store, tagtype*) : (store, tagaddr*) ;; ../../../../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}) + 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 { @@ -93924,8 +7118,8 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) ;; ../../../../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)){}}) + 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 { @@ -93943,8 +7137,8 @@ def $allocmems(store : store, memtype*) : (store, memaddr*) ;; ../../../../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{}}) + 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 { @@ -93962,8 +7156,8 @@ def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) ;; ../../../../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}) + 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 { @@ -93981,8 +7175,8 @@ def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funca ;; ../../../../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*`}}) + 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 { @@ -94000,8 +7194,8 @@ def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) ;; ../../../../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*`}}) + 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 { @@ -94019,15 +7213,15 @@ def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) ;; ../../../../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])} + 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])} + 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])} + 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])} + 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])} + 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* @@ -94037,47 +7231,47 @@ def $allocexports(moduleinst : moduleinst, export*) : exportinst* ;; ../../../../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*, `expr_G*` : expr*, `globaltype*` : globaltype*, `memtype*` : memtype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `expr_F*` : expr*, `local**` : local**, `x*` : idx*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `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**`}) + 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*, `expr_G*` : expr*, `globaltype*` : globaltype*, `memtype*` : memtype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `expr_F*` : expr*, `local**` : local**, `x*` : idx*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : 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*`})) - -- if (fa*{fa <- `fa*`} = (|s.`FUNCS`_store| + i_F)^(i_F<|func*{func <- `func*`}|){}) + -- if (fa*{fa <- `fa*`} = (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){}) -- 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_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*`}[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*`}}) + -- 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, n : n, `b*` : byte*}(x, `DATA`_data(b^n{b <- `b*`}, `PASSIVE`_datamode)) = [] + def $rundata_{x : idx, n : n, `b*` : byte*}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $rundata_{x : idx, n : n, `b*` : byte*, 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)] + def $rundata_{x : idx, n : n, `b*` : byte*, 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, n : n, `e*` : expr*}(x, `ELEM`_elem(rt, e^n{e <- `e*`}, `PASSIVE`_elemmode)) = [] + def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*}(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, n : n, `e*` : expr*}(x, `ELEM`_elem(rt, e^n{e <- `e*`}, `DECLARE`_elemmode)) = [`ELEM.DROP`_instr(x)] + def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*}(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, n : n, `e*` : expr*, 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)] + def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*, 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 { @@ -94091,36 +7285,36 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, 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'*`})) + -- 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*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `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?`})) + 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*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, 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?`}) - -- 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*`}|){}, `DATAS` [], `ELEMS` [], `EXPORTS` []}) - -- if (z = `%;%`_state(s, {`LOCALS` [], `MODULE` moduleinst_0})) + -- 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*`}|){}, 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*`}|){})) -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){})) - -- if (instr_S?{instr_S <- `instr_S?`} = `CALL`_instr(x)?{x <- `x?`}) + -- 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 : 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*`}))) + 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*`} ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec @@ -94266,75 +7460,75 @@ grammar Blabelidx : labelidx ;; ../../../../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) + 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) + 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) + 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) + 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) + 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 + prod 0x7C => F64_numtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7D => `F32`_numtype + prod 0x7D => F32_numtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7E => `I64`_numtype + prod 0x7E => I64_numtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x7F => `I32`_numtype + 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 + 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 + prod 0x69 => EXN_heaptype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6A => `ARRAY`_heaptype + prod 0x6A => ARRAY_heaptype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6B => `STRUCT`_heaptype + prod 0x6B => STRUCT_heaptype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6C => `I31`_heaptype + prod 0x6C => I31_heaptype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6D => `EQ`_heaptype + prod 0x6D => EQ_heaptype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6E => `ANY`_heaptype + prod 0x6E => ANY_heaptype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x6F => `EXTERN`_heaptype + prod 0x6F => EXTERN_heaptype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x70 => `FUNC`_heaptype + prod 0x70 => FUNC_heaptype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x71 => `NONE`_heaptype + prod 0x71 => NONE_heaptype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x72 => `NOEXTERN`_heaptype + prod 0x72 => NOEXTERN_heaptype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x73 => `NOFUNC`_heaptype + prod 0x73 => NOFUNC_heaptype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x74 => `NOEXN`_heaptype + 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)) + 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) + 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) + 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) + prod{ht : heaptype} ht:Babsheaptype => REF_reftype(?(NULL_null), ht) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bvaltype : valtype @@ -94355,14 +7549,14 @@ 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) + 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 + prod 0x77 => I16_packtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod 0x78 => `I8`_packtype + prod 0x78 => I8_packtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bstoragetype : storagetype @@ -94379,43 +7573,43 @@ grammar Bfieldtype : fieldtype ;; ../../../../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) + 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*`})) + 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) + 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) + 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) + 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*`})) + 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])) + 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), ?())) + 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)))) + 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), ?())) + 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)))) + 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) + prod{x : idx} {{0x00} {x:Btypeidx}} => _IDX_tagtype(x) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bglobaltype : globaltype @@ -94435,15 +7629,15 @@ grammar Btabletype : tabletype ;; ../../../../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)) + 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) + 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) + 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) + 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) + prod{jt : tagtype} {{0x04} {jt:Btagtype}} => TAG_externtype(jt) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec syntax castop = (null?, null?) @@ -94453,32 +7647,32 @@ 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), ?()) + prod 0x01 => (?(NULL_null), ?()) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x02 => (?(), ?(`NULL`_null)) + prod 0x02 => (?(), ?(NULL_null)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x03 => (?(`NULL`_null), ?(`NULL`_null)) + 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(?()) + prod 0x40 => _RESULT_blocktype(?()) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{t : valtype} t:Bvaltype => `_RESULT`_blocktype(?(t)) + 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))) + 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) + 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) + 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) + 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) + prod{l : labelidx} {{0x03} {l:Blabelidx}} => CATCH_ALL_REF_catch(l) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec syntax memidxop = (memidx, memarg) @@ -94486,10 +7680,10 @@ 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)}) + 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{x : idx, n : n, 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)}) + prod{x : idx, n : n, 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 @@ -94503,57 +7697,57 @@ 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 + prod 0x00 => UNREACHABLE_instr ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:9.5-9.16 - prod 0x01 => `NOP`_instr + prod 0x01 => NOP_instr ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:10.5-10.17 - prod 0x1A => `DROP`_instr + prod 0x1A => DROP_instr ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:11.5-11.19 - prod 0x1B => `SELECT`_instr(?()) + 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*`})) + 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*`}) + 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*`}) + 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) + 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 + 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) + 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) + 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) + 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 + 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) + prod{x : idx} {{0x10} {x:Bfuncidx}} => CALL_instr(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:47.5-47.60 - prod{x : idx, y : idx} {{0x11} {y:Btypeidx} {x:Btableidx}} => `CALL_INDIRECT`_instr(x, `_IDX`_typeuse(y)) + prod{x : idx, y : 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) + prod{x : idx} {{0x12} {x:Bfuncidx}} => RETURN_CALL_instr(x) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:49.5-49.67 - prod{x : idx, y : idx} {{0x13} {y:Btypeidx} {x:Btableidx}} => `RETURN_CALL_INDIRECT`_instr(x, `_IDX`_typeuse(y)) + prod{x : idx, y : 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)) + 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)) + 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*`}) + 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) + 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) + 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{l : labelidx, `null_1?` : null?, ht_1 : heaptype, `null_2?` : null?, 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)) + prod{l : labelidx, `null_1?` : null?, ht_1 : heaptype, `null_2?` : null?, 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{l : labelidx, `null_1?` : null?, ht_1 : heaptype, `null_2?` : null?, 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)) + prod{l : labelidx, `null_1?` : null?, ht_1 : heaptype, `null_2?` : null?, 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 @@ -94581,51 +7775,51 @@ grammar Binstr : instr ;; ../../../../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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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 @@ -94649,13 +7843,13 @@ grammar Binstr : 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)) + 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)) + 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)) + 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)) + 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 @@ -94663,9 +7857,9 @@ grammar Binstr : instr ;; ../../../../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) + 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) + 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 @@ -94681,9 +7875,9 @@ grammar Binstr : instr ;; ../../../../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) + 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) + 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 @@ -94703,801 +7897,801 @@ grammar Binstr : 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) + 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) + 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) + 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) + 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) + 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) + 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_) + 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_) + 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_) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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_) + 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_) + 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_) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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)) + 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)) + 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)) + 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)) + 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_) + 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_) + 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_) + 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_) + 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)) + 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)) + 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_) + 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_) + 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_) + 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_) + 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_) + 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))) + 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))) + 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))) + 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))) + 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))) + 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_) + 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_) + 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_) + 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)) + 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)) + 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)) + 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)) + 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_) + 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_) + 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_) + 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_) + 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)) + 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)) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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__) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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__) + 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)) + 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)) + 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)) + 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)) + 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__) + 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__) + 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__) + 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__) + 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__) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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*`})) + 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*`}) + 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_) + 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_) + 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))) + 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))) + 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))) + 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))) + 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))) + 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))) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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_) + 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_) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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_) + 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_) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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_) + 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_) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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_) + 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_) + 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_) + 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_) + 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)))) + 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) + 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) + 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_) + 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)) + 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)) + 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_) + 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)) + 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)) + 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_) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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_) + 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)) + 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)) + 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_) + 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_) + 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_) + 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_) + 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)) + 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)) + 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_) + 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)) + 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)) + 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_) + 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)) + 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)) + 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)) + 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)) + 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_) + 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_) + 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_) + 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)))) + 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) + 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) + 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)) + 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)) + 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)) + 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)) + 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_) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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__) + 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)) + 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)) + 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_) + 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_) + 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_) + 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)))) + 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)) + 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)) + 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)) + 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)) + 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_) + 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)) + 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)) + 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_) + 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_) + 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_) + 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)) + 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)) + 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)) + 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)) + 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__) + 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)) + 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)) + 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)) + 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)) + 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__) + 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_) + 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_) + 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_) + 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)))) + 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)) + 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)) + 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)) + 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)) + 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_) + 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)) + 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)) + 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_) + 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_) + 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_) + 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_) + 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_) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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)) + 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__) + 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, ?())) + 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, ?())) + 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)) + 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)) + 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))) + 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))) + 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)) + 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)) + 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, ?())) + 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, ?())) + 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))) + 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))) + 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 @@ -95526,7 +8720,7 @@ grammar Bcustomsec : () ;; ../../../../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) + prod{qt : rectype} qt:Brectype => TYPE_type(qt) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Btypesec : type* @@ -95536,7 +8730,7 @@ grammar Btypesec : type* ;; ../../../../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) + 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* @@ -95551,10 +8745,10 @@ grammar Bfuncsec : typeidx* ;; ../../../../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))) + 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) + 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* @@ -95564,7 +8758,7 @@ grammar Btablesec : table* ;; ../../../../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) + prod{mt : memtype} mt:Bmemtype => MEMORY_mem(mt) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bmemsec : mem* @@ -95574,7 +8768,7 @@ grammar Bmemsec : 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) + 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* @@ -95584,7 +8778,7 @@ grammar Bglobalsec : global* ;; ../../../../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) + 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* @@ -95594,7 +8788,7 @@ grammar Bexportsec : export* ;; ../../../../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)] + prod{x : idx} x:Bfuncidx => [START_start(x)] ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec syntax startopt = start* @@ -95607,26 +8801,26 @@ grammar Bstartsec : start? ;; ../../../../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) + 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{`y*` : idx*, e_o : expr} {{`%`_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)) + prod{`y*` : idx*, e_o : expr} {{`%`_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) + 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{rt : reftype, `y*` : idx*, x : idx, e : expr} {{`%`_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)) + prod{rt : reftype, `y*` : idx*, x : idx, e : expr} {{`%`_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) + 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*` : expr*, e_O : 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)) + prod{`e*` : expr*, e_O : 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) + 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{`e*` : expr*, x : idx, e_O : 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)) + prod{`e*` : expr*, x : idx, e_O : 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) + 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* @@ -95639,7 +8833,7 @@ 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{t : valtype, n : n} {{`%`_u32(n):Bu32} {t:Bvaltype}} => `LOCAL`_local(t)^n{} + prod{t : valtype, n : n} {{`%`_u32(n):Bu32} {t:Bvaltype}} => LOCAL_local(t)^n{} ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bfunc : code @@ -95661,11 +8855,11 @@ grammar Bcodesec : code* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bdata : data ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`b*` : byte*, e : expr} {{`%`_u32(0):Bu32} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => `DATA`_data(b*{b <- `b*`}, `ACTIVE`_datamode(`%`_memidx(0), e)) + prod{`b*` : byte*, e : expr} {{`%`_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) + 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{`b*` : byte*, x : idx, e : expr} {{`%`_u32(2):Bu32} {x:Bmemidx} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => `DATA`_data(b*{b <- `b*`}, `ACTIVE`_datamode(x, e)) + prod{`b*` : byte*, x : idx, e : expr} {{`%`_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* @@ -95688,7 +8882,7 @@ grammar Bdatacntsec : u32? ;; ../../../../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) + prod{jt : tagtype} jt:Btagtype => TAG_tag(jt) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Btagsec : tag* @@ -95708,10 +8902,10 @@ grammar Bversion : () ;; ../../../../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*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `typeidx*` : typeidx*, `n?` : n?, `expr*` : expr*, `local**` : local**} {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*`}) + prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `typeidx*` : typeidx*, `n?` : n?, `expr*` : expr*, `local**` : local**} {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*`} + -- (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 @@ -96115,24 +9309,24 @@ grammar Thexfloat : rat 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) + -- 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) + -- if ($ieee_(N, q) =/= INF_fNmag) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "inf" => `INF`_fNmag + prod "inf" => INF_fNmag ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "nan" => `NAN`_fNmag($canon_(N)) + 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) + 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) + 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) + 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 @@ -96188,18 +9382,18 @@ grammar Tlist(syntax el, grammar TX : el) : el* ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec syntax idctxt = { - `TYPES` name?* , - `TAGS` name?* , - `GLOBALS` name?* , - `MEMS` name?* , - `TABLES` name?* , - `FUNCS` name?* , - `DATAS` name?* , - `ELEMS` name?* , - `LOCALS` name?* , - `LABELS` name?* , - `FIELDS` name?** , - `TYPEDEFS` deftype?* + TYPES name?*, + TAGS name?*, + GLOBALS name?*, + MEMS name?*, + TABLES name?*, + FUNCS name?*, + DATAS name?*, + ELEMS name?*, + LOCALS name?*, + LABELS name?*, + FIELDS name?**, + TYPEDEFS deftype?* } ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -96211,7 +9405,7 @@ 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` []} + 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.53 def $concat_idctxt{I : I, `I'*` : I*}([I] ++ I'*{I' <- `I'*`}) = I +++ $concat_idctxt(I'*{I' <- `I'*`}) } @@ -96221,18 +9415,18 @@ 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, 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) + -- if ([?(`%`_name(field*{field <- `field*`}))*{`field*` <- `field**`}] = I.FIELDS_I) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tidx_(ids : name?*) : idx @@ -96245,130 +9439,130 @@ grammar Tidx_(ids : name?*) : idx ;; ../../../../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) => `` + 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) => `` + 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) => `` + 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) => `` + 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) => `` + 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) => `` + 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) => `` + 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) => `` + 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) => `` + 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) => `` + 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]) => `` + 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) + 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) + 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) + 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) + 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) + 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 + prod "i32" => I32_numtype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i64" => `I64`_numtype + prod "i64" => I64_numtype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "f32" => `F32`_numtype + prod "f32" => F32_numtype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "f64" => `F64`_numtype + 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 + 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 + prod "any" => ANY_heaptype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "eq" => `EQ`_heaptype + prod "eq" => EQ_heaptype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i31" => `I31`_heaptype + prod "i31" => I31_heaptype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "struct" => `STRUCT`_heaptype + prod "struct" => STRUCT_heaptype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "array" => `ARRAY`_heaptype + prod "array" => ARRAY_heaptype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "none" => `NONE`_heaptype + prod "none" => NONE_heaptype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "func" => `FUNC`_heaptype + prod "func" => FUNC_heaptype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "nofunc" => `NOFUNC`_heaptype + prod "nofunc" => NOFUNC_heaptype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "exn" => `EXN`_heaptype + prod "exn" => EXN_heaptype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "noexn" => `NOEXN`_heaptype + prod "noexn" => NOEXN_heaptype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "extern" => `EXTERN`_heaptype + prod "extern" => EXTERN_heaptype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "noextern" => `NOEXTERN`_heaptype + 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) + 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 + 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) + 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 @@ -96382,9 +9576,9 @@ grammar Tvaltype_(I : I) : 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 + prod "i8" => I8_packtype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i16" => `I16`_packtype + prod "i16" => I16_packtype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tstoragetype_(I : I) : storagetype @@ -96398,7 +9592,7 @@ 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) + 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?) @@ -96418,38 +9612,38 @@ grammar Tresult_(I : I) : valtype ;; ../../../../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` []}) + 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` []}) + 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*, `t_2*` : valtype*, `id?*` : char?*} {{"("} {"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` []}) + prod{`t_1*` : valtype*, `t_2*` : valtype*, `id?*` : char?*} {{"("} {"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 + 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') + 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{st : subtype, I' : I, `id?` : char?} {{"("} {"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` []}) + prod{st : subtype, I' : I, `id?` : char?} {{"("} {"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'*`})) + 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 + prod "i32" => I32_addrtype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod "i64" => `I64`_addrtype + prod "i64" => I64_addrtype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tlimits : limits @@ -96462,27 +9656,27 @@ grammar Tlimits : limits 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` []}) + -- 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, I' : I, `id?*` : char?*, `t_1*` : valtype*, `t_2*` : valtype*, `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` []}) + -- 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) + 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) + 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 @@ -96497,45 +9691,45 @@ grammar Ttabletype_(I : I) : tabletype ;; ../../../../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{jt : tagtype, `id?` : char?} {{"("} {"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` []}) + prod{jt : tagtype, `id?` : char?} {{"("} {"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{gt : globaltype, `id?` : char?} {{"("} {"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` []}) + prod{gt : globaltype, `id?` : char?} {{"("} {"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{mt : memtype, `id?` : char?} {{"("} {"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` []}) + prod{mt : memtype, `id?` : char?} {{"("} {"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{tt : tabletype, `id?` : char?} {{"("} {"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` []}) + prod{tt : tabletype, `id?` : char?} {{"("} {"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{x : idx, `id?` : char?, 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` []}) + prod{x : idx, `id?` : char?, 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) + 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) + 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]) + 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?`}) + 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` []}) + 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) + 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) + 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) + 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) + 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* @@ -96563,52 +9757,52 @@ grammar Toffset : u64 ;; ../../../../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)} + 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 + prod "unreachable" => UNREACHABLE_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "nop" => `NOP`_instr + prod "nop" => NOP_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "drop" => `DROP`_instr + 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*?`}) + 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) + 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) + 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') + 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) + 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) + 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) + 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) + 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) + 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)) + 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` []}) + 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 + 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) + 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)) + 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` []}) + 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) + 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 + 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 @@ -96636,95 +9830,95 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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 @@ -96754,9 +9948,9 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../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) + 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) + 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 @@ -96764,9 +9958,9 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../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) + 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) + 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 @@ -96782,9 +9976,9 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../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) + 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) + 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 @@ -96802,759 +9996,759 @@ grammar Tplaininstr_(I : I) : 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) + 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) + 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) + 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) + 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_) + 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_) + 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_) + 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_) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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_) + 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_) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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))) + 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))) + 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_) + 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_) + 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_) + 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))) + 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))) + 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))) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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)) + 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)) + 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)) + 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)) + 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_) + 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_) + 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_) + 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_) + 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)) + 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)) + 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_) + 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_) + 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_) + 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_) + 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_) + 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)) + 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)) + 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)) + 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)) + 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_) + 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_) + 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_) + 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_) + 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)) + 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)) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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__) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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__) + 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)) + 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)) + 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)) + 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)) + 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__) + 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)) + 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)) + 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)) + 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)) + 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__) + 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__) + 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__) + 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__) + 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*`}))) + 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*`}))) + 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*`}))) + 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*`}))) + 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*`}))) + 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*`}))) + 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*`}) + 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_) + 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_) + 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))) + 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))) + 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))) + 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))) + 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))) + 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))) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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_) + 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_) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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_) + 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_) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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_) + 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_) + 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)) + 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)) + 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)) + 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)) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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) + 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) + 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) + 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) + 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_) + 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)) + 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)) + 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_) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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_) + 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_) + 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)) + 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)) + 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_) + 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)) + 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)) + 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_) + 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)) + 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)) + 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)) + 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)) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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)) + 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)) + 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)) + 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)) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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_) + 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)) + 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)) + 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_) + 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)) + 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)) + 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_) + 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)) + 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)) + 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_) + 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)) + 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)) + 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)))) + 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)))) + 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)))) + 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)))) + 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) + 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) + 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) + 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) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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, ?())) + 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, ?())) + 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))) + 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))) + 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, ?())) + 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, ?())) + 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))) + 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))) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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__) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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)) + 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__) + 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)) + 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)) + 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)) + 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)) + 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 { @@ -97576,16 +10770,16 @@ grammar Tinstrs_(I : I) : instr* ;; ../../../../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{bt : blocktype, `in*` : instr*, `id?` : char?, I' : I, `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*`}) + prod{bt : blocktype, `in*` : instr*, `id?` : char?, I' : I, `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{bt : blocktype, `in*` : instr*, `id?` : char?, I' : I, `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*`}) + prod{bt : blocktype, `in*` : instr*, `id?` : char?, I' : I, `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{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*, `id?` : char?, I' : I, `id_1?` : char?, `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{bt : blocktype, `c*` : catch*, `in*` : instr*, `id?` : char?, I' : I, `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*`}) + prod{bt : blocktype, `c*` : catch*, `in*` : instr*, `id?` : char?, I' : I, `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?`})) } @@ -97597,39 +10791,39 @@ grammar Texpr_(I : I) : expr ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Ttype_(I : I) : (type, idctxt) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - prod{qt : rectype, I' : I, I'' : I, n : n, `st*` : subtype*, 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 (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` []}) + prod{jt : tagtype, `id?` : char?} {{"("} {"tag"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {jt:Ttagtype_(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.4-text.modules.spectec grammar Tglobal_(I : I) : (global, idctxt) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - prod{gt : globaltype, e : expr, `id?` : char?} {{"("} {"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` []}) + prod{gt : globaltype, e : expr, `id?` : char?} {{"("} {"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.4-text.modules.spectec grammar Tmem_(I : I) : (mem, idctxt) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - prod{mt : memtype, `id?` : char?} {{"("} {"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` []}) + prod{mt : memtype, `id?` : char?} {{"("} {"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.4-text.modules.spectec grammar Ttable_(I : I) : (table, idctxt) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - prod{tt : tabletype, e : expr, `id?` : char?} {{"("} {"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` []}) + prod{tt : tabletype, e : expr, `id?` : char?} {{"("} {"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.4-text.modules.spectec grammar Tlocal_(I : I) : (local*, idctxt) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - prod{t : valtype, `id?` : char?} {{"("} {"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` []}) + prod{t : valtype, `id?` : char?} {{"("} {"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.4-text.modules.spectec grammar Tfunc_(I : I) : (func, idctxt) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - prod{x : idx, `loc**` : local**, e : expr, `id?` : char?, I_1 : I, `I_2*` : I*, 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` []}) + prod{x : idx, `loc**` : local**, e : expr, `id?` : char?, I_1 : I, `I_2*` : I*, 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') @@ -97651,9 +10845,9 @@ grammar Toffset_(I : I) : expr ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tdata_(I : I) : (data, idctxt) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - prod{`b*` : byte*, `id?` : char?} {{"("} {"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` []}) + prod{`b*` : byte*, `id?` : char?} {{"("} {"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.4-text.modules.spectec - prod{`b*` : byte*, x : idx, e : expr, `id?` : char?} {{"("} {"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` []}) + prod{`b*` : byte*, x : idx, e : expr, `id?` : char?} {{"("} {"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.4-text.modules.spectec grammar Telemlist_(I : I) : (reftype, expr*) @@ -97668,11 +10862,11 @@ grammar Ttableuse_(I : I) : tableidx ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Telem_(I : I) : (elem, idctxt) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"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` []}) + prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"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.4-text.modules.spectec - prod{rt : reftype, `e*` : expr*, x : idx, e' : expr, `id?` : char?} {{"("} {"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` []}) + prod{rt : reftype, `e*` : expr*, x : idx, e' : expr, `id?` : char?} {{"("} {"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.4-text.modules.spectec - prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"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` []}) + prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"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.4-text.modules.spectec grammar Telemexpr_(I : I) : expr @@ -97682,17 +10876,17 @@ grammar Telemexpr_(I : I) : expr ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tstart_(I : I) : (start, idctxt) ;; ../../../../specification/wasm-3.0/6.4-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` []}) + 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.4-text.modules.spectec grammar Timport_(I : I) : (import, idctxt) ;; ../../../../specification/wasm-3.0/6.4-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') + 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.4-text.modules.spectec grammar Texport_(I : I) : (export, idctxt) ;; ../../../../specification/wasm-3.0/6.4-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` []}) + 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.4-text.modules.spectec grammar Texportdots : () @@ -97769,17 +10963,17 @@ grammar Telemtable_(I : I) : () ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec syntax decl = - | `TYPE`(rectype : rectype) - | `IMPORT`(name : name, name : name, externtype : externtype) - | `TAG`(tagtype : tagtype) - | `GLOBAL`(globaltype : globaltype, expr : expr) - | `MEMORY`(memtype : memtype) - | `TABLE`(tabletype : tabletype, expr : expr) - | `FUNC`(typeidx : typeidx, `local*` : local*, expr : expr) - | `DATA`(`byte*` : byte*, datamode : datamode) - | `ELEM`(reftype : reftype, `expr*` : expr*, elemmode : elemmode) - | `START`(funcidx : funcidx) - | `EXPORT`(name : name, externidx : externidx) + | TYPE(rectype : rectype) + | IMPORT(name : name, name : name, externtype : externtype) + | TAG(tagtype : tagtype) + | GLOBAL(globaltype : globaltype, expr : expr) + | MEMORY(memtype : memtype) + | TABLE(tabletype : tabletype, expr : expr) + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) + | DATA(`byte*` : byte*, datamode : datamode) + | ELEM(reftype : reftype, `expr*` : expr*, elemmode : elemmode) + | START(funcidx : funcidx) + | EXPORT(name : name, externidx : externidx) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { @@ -97971,7 +11165,7 @@ grammar Tdecl_(I : I) : (decl, idctxt) ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tmodule : module ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec - prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `I*` : I*, `decl*` : decl*, I' : I} {{"("} {"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*`}) + prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `I*` : I*, `decl*` : decl*, I' : I} {{"("} {"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*`})) @@ -98000,14 +11194,14 @@ syntax B = nat ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec syntax sym = - | `_FIRST`(A_1 : A) - | `_DOTS` - | `_LAST`(A_n : A) + | _FIRST(A_1 : A) + | _DOTS + | _LAST(A_n : A) ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec syntax symsplit = - | `_FIRST`(A_1 : A) - | `_LAST`(A_2 : A) + | _FIRST(A_1 : A) + | _LAST(A_2 : A) ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec syntax recorddots = () @@ -98015,14 +11209,14 @@ syntax recorddots = () ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec syntax record = { - `FIELD_1` A , - `FIELD_2` A , + FIELD_1 A, + FIELD_2 A, `...` recorddots } ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec syntax pth = - | `PTHSYNTAX` + | PTHSYNTAX ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec syntax T = nat @@ -98049,34 +11243,34 @@ 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]))) + 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}: + 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)) + -- 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*`}))) + `%|-%:%`(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*`}))) + -- 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_)]) + 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_)]) + 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)]) + 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* @@ -98166,2266 +11360,5 @@ syntax syntax = () grammar Tabbrev : () == IL Validation... -[] n* nat* -[] n* nat* -[] n* nat* -[] n* nat* -[] X* X* -[] X** X** -[] X* X* -[] X* X* -[] X** X** -[] X* X* -[] X* X^n -[] X** X^n* -[] X* X^n -[] X* X^n -[] X** X^n* -[] X* X^n -[] X? X? -[] X?* X?* -[] X? X? -[] X? X? -[] X?* X?* -[] X? X? -[] X* X* -[] X* X* -[] X* X* -[] X* X* -[] X* X* -[] X* X* -[] X* X* -[] X* X* -[] X* X* -[] X* X* -[] X* X* -[] X* X* -[] X* X* -[] X* X* -[] X** X** -[] X* X* -[] X* X* -[] X** X** -[] X* X* -[] X** X** -[] X* X* -[] X* X* -[] X** X** -[] X* X* -[] X** X** -[] X* X* -[] X* X* -[] X** X** -[] X* X* -[] X* X* -[] X** X** -[] X* X* -[] X* X* -[] X** X** -[] X* X* -[] X* X* -[] X* X* -[] char* char* -[] char* char* -[] char* char* -[] char* char* -[] externidx* externidx* -[] externidx* externidx* -[] externidx* externidx* -[] externidx* externidx* -[] externidx* externidx* -[] externidx* externidx* -[] externidx* externidx* -[] externidx* externidx* -[] externidx* externidx* -[] externidx* externidx* -[] externidx* externidx* -[] externidx* externidx* -[] externidx* externidx* -[] externidx* externidx* -[] externidx* externidx* -[] externidx* externidx* -[] externidx* externidx* -[] externidx* externidx* -[] externidx* externidx* -[] externidx* externidx* -[] free* free* -[] free* free* -[] null? null? -[] null? null? -[] null? null? -[] externtype* externtype* -[] externtype* externtype* -[] externtype* externtype* -[] externtype* externtype* -[] externtype* externtype* -[] externtype* externtype* -[] externtype* externtype* -[] externtype* externtype* -[] externtype* externtype* -[] externtype* externtype* -[] externtype* externtype* -[] externtype* externtype* -[] externtype* externtype* -[] externtype* externtype* -[] externtype* externtype* -[] externtype* externtype* -[] externtype* externtype* -[] externtype* externtype* -[] externtype* externtype* -[] externtype* externtype* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] null? null? -[] typevar* typevar* -[] typeuse* typeuse* -[] null? null? -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] mut? mut? -[] typevar* typevar* -[] typeuse* typeuse* -[] mut? mut? -[] typevar* typevar* -[] typeuse* typeuse* -[] fieldtype* fieldtype* -[] typevar* typevar* -[] typeuse* typeuse* -[] fieldtype* fieldtype* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] valtype* valtype* -[] valtype* valtype* -[] typevar* typevar* -[] typeuse* typeuse* -[] valtype* valtype* -[] typevar* typevar* -[] typeuse* typeuse* -[] valtype* valtype* -[] typevar* typevar* -[] typeuse* typeuse* -[] final? final? -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] final? final? -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] subtype* subtype* -[] typevar* typevar* -[] typeuse* typeuse* -[] subtype* subtype* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] mut? mut? -[] typevar* typevar* -[] typeuse* typeuse* -[] mut? mut? -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] typevar* typevar* -[] typeuse* typeuse* -[] externtype* externtype* -[] externtype* externtype* -[] typevar* typevar* -[] typeuse* typeuse* -[] externtype* externtype* -[] typevar* typevar* -[] typeuse* typeuse* -[] externtype* externtype* -[] typevar* typevar* -[] typeuse* typeuse* -[] typeuse* typeuse^n -[] typeuse* typeuse^n -[] typeuse* typeuse^n -[] typeuse* typeuse^n -[] typeuse* typeuse^n -[] typeuse* typeuse^n -[] typeuse* typeuse^n -[] typeuse* typeuse^n -[] typeuse* typeuse^n -[] typeuse* typeuse^n -[] typeuse* typeuse^n -[] typeuse* typeuse^n -[] typeuse* typeuse^n -[] typeuse* typeuse^n -[] typeuse* typeuse^n -[] typeuse* typeuse^n -[] typeuse* typeuse^n -[] typeuse* typeuse^n -[] typeuse* typeuse* -[] deftype* deftype* -[] typeuse* typeuse* -[] typeuse* typeuse* -[] deftype* deftype* -[] typeuse* typeuse* -[] subtype* subtype^n -[] subtype* subtype^n -[] subtype* subtype^n -[] subtype* subtype^n -[] subtype* subtype^n -[] subtype* subtype^n -[] subtype* subtype* -[] subtype* subtype* -[] subtype* subtype* -[] final? final? -[] typeuse* typeuse* -[] null? null? -[] valtype* valtype* -[] valtype* valtype* -[] mut? mut? -[] fieldtype* fieldtype* -[] fieldtype* fieldtype* -[] final? final? -[] typeuse* typeuse* -[] typeuse* typeuse* -[] subtype* subtype* -[] subtype* subtype* -[] mut? mut? -[] externtype* externtype* -[] externtype* externtype* -[] externtype* externtype* -[] externtype* externtype* -[] half? half? -[] half? half? -[] half? half? -[] half? half? -[] zero? zero? -[] zero? zero? -[] zero? zero? -[] zero? zero? -[] zero? zero? -[] zero? zero? -[] zero? zero? -[] zero? zero? -[] laneidx* laneidx* -[] laneidx* laneidx* -[] sx? sx? -[] sx? sx? -[] valtype? valtype? -[] valtype? valtype? -[] labelidx* labelidx* -[] labelidx* labelidx* -[] labelidx* labelidx* -[] labelidx* labelidx* -[] valtype*? valtype*? -[] valtype* valtype* -[] valtype*? valtype*? -[] valtype* valtype* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] labelidx* labelidx* -[] labelidx* labelidx* -[] laneidx* laneidx* -[] sx? sx? -[] sx? sx? -[] sx? sx? -[] loadop_(numtype)? loadop_(numtype)? -[] storeop_(numtype)? storeop_(numtype)? -[] vloadop_(vectype)? vloadop_(vectype)? -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] local* local* -[] local* local* -[] byte* byte* -[] expr* expr* -[] expr* expr* -[] type* type* -[] import* import* -[] tag* tag* -[] global* global* -[] mem* mem* -[] table* table* -[] func* func* -[] data* data* -[] elem* elem* -[] start? start? -[] export* export* -[] type* type* -[] tag* tag* -[] global* global* -[] mem* mem* -[] table* table* -[] func* func* -[] data* data* -[] elem* elem* -[] start? start? -[] import* import* -[] export* export* -[] func* func* -[] func* func* -[] func* func* -[] idx* localidx* -[] localtype* localtype* -[] idx* localidx* -[] localtype* localtype* -[] deftype* deftype* -[] deftype* deftype* -[] deftype* deftype* -[] deftype* deftype* -[] deftype* deftype* -[] deftype* deftype* -[] deftype* deftype* -[] deftype* deftype* -[] deftype* deftype* -[] deftype* deftype* -[] deftype* deftype* -[] deftype* deftype* -[] deftype* deftype* -[] deftype* deftype* -[] deftype* deftype* -[] deftype* deftype* -[] deftype* deftype* -[] deftype* deftype* -[] deftype* deftype* -[] deftype* deftype* -[] deftype* deftype* -[] valtype* valtype* -[] valtype* valtype* -[] fieldtype* fieldtype* -[] fieldtype* fieldtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] idx* typeidx* -[] idx* idx* -[] idx* idx* -[] idx* idx* -[] comptype* comptype* -[] idx* idx* -[] idx** typeidx** -[] idx* typeidx* -[] comptype* comptype* -[] subtype* subtype* -[] subtype* subtype* -[] subtype* subtype* -[] subtype* subtype* -[] subtype* subtype* -[] typeuse* typeuse* -[] typeuse* typeuse* -[] typeuse* typeuse* -[] typeuse* typeuse* -[] comptype* comptype* -[] typeuse* typeuse* -[] typeuse** typeuse** -[] typeuse* typeuse* -[] comptype* comptype* -[] subtype* subtype* -[] subtype* subtype* -[] subtype* subtype^n -[] fieldtype* fieldtype* -[] fieldtype* fieldtype* -[] fieldtype* fieldtype* -[] fieldtype* fieldtype* -[] fieldtype* fieldtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] final? final? -[] typeuse* typeuse* -[] typeuse* typeuse* -[] typeuse* typeuse* -[] fieldtype* fieldtype* -[] valtype* valtype* -[] valtype* valtype* -[] typeuse* typeuse* -[] typeuse* typeuse* -[] final? final? -[] typeuse* typeuse* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] idx* localidx* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] localtype* localtype* -[] idx* idx* -[] m? nat? -[] m? nat? -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] idx* localidx* -[] valtype* valtype* -[] valtype* valtype* -[] idx* localidx* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] idx* localidx* -[] idx* localidx* -[] idx* localidx* -[] idx* localidx* -[] valtype* valtype* -[] idx* idx* -[] m? nat? -[] m? nat? -[] valtype? valtype? -[] valtype? valtype? -[] valtype? valtype? -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] instr* instr* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] instr* instr* -[] valtype* valtype* -[] idx* localidx* -[] valtype* valtype* -[] instr* instr* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] instr* instr* -[] valtype* valtype* -[] idx* localidx* -[] valtype* valtype* -[] instr* instr* -[] instr* instr* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] instr* instr* -[] valtype* valtype* -[] idx* localidx* -[] valtype* valtype* -[] valtype* valtype* -[] instr* instr* -[] valtype* valtype* -[] idx* localidx* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] labelidx* labelidx* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] labelidx* labelidx* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] catch* catch* -[] instr* instr* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] instr* instr* -[] valtype* valtype* -[] idx* localidx* -[] valtype* valtype* -[] catch* catch* -[] storagetype* storagetype* -[] mut?* mut?* -[] storagetype* storagetype* -[] mut? mut? -[] mut?* mut?* -[] storagetype* storagetype* -[] mut? mut? -[] storagetype* storagetype* -[] sx? sx? -[] fieldtype* fieldtype* -[] fieldtype* fieldtype* -[] fieldtype* fieldtype* -[] fieldtype* fieldtype* -[] mut? mut? -[] sx? sx? -[] sx? sx? -[] fieldtype* fieldtype* -[] fieldtype* fieldtype* -[] fieldtype* fieldtype* -[] fieldtype* fieldtype* -[] mut? mut? -[] mut? mut? -[] mut? mut? -[] mut? mut? -[] mut? mut? -[] sx? sx? -[] mut? mut? -[] sx? sx? -[] sx? sx? -[] mut? mut? -[] null? null? -[] null? null? -[] null? null? -[] null? null? -[] null? null? -[] null? null? -[] null? null? -[] null? null? -[] null? null? -[] null? null? -[] mut? mut? -[] laneidx* laneidx* -[] laneidx* laneidx* -[] sx? sx? -[] instr* instr* -[] valtype* valtype* -[] idx* localidx* -[] idx* localidx* -[] valtype* valtype* -[] valtype* valtype* -[] idx* localidx* -[] valtype* valtype* -[] init* init* -[] valtype* valtype* -[] idx* idx* -[] idx* localidx* -[] valtype* valtype* -[] instr* instr* -[] valtype* valtype* -[] idx* localidx* -[] valtype* valtype* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] valtype* valtype* -[] valtype* valtype* -[] idx* localidx* -[] valtype* valtype* -[] valtype* valtype* -[] instr* instr* -[] valtype* valtype* -[] idx* localidx* -[] valtype* valtype* -[] valtype* valtype* -[] instr* instr* -[] valtype* valtype* -[] instr* instr* -[] valtype* valtype* -[] instr* instr* -[] instr* instr* -[] deftype* deftype* -[] deftype* deftype* -[] deftype* deftype* -[] deftype* deftype* -[] local* local* -[] valtype* valtype* -[] valtype* valtype* -[] localtype* localtype* -[] local* local* -[] valtype* valtype* -[] localtype* localtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] byte* byte* -[] expr* expr* -[] expr* expr* -[] global* global* -[] globaltype* globaltype* -[] global* global* -[] globaltype* globaltype* -[] type* type* -[] deftype* deftype* -[] deftype* deftype* -[] deftype* deftype* -[] deftype* deftype* -[] type* type* -[] deftype* deftype* -[] global* global* -[] mem* mem* -[] table* table* -[] elem* elem* -[] global* global* -[] mem* mem* -[] table* table* -[] elem* elem* -[] type* type* -[] import* import* -[] tag* tag* -[] global* global* -[] mem* mem* -[] table* table* -[] func* func* -[] data* data* -[] elem* elem* -[] start? start? -[] export* export* -[] externtype* externtype* -[] externtype* externtype* -[] type* type* -[] deftype* deftype* -[] import* import* -[] externtype* externtype* -[] deftype* deftype* -[] tagtype* tagtype* -[] tag* tag* -[] global* global* -[] globaltype* globaltype* -[] mem* mem* -[] memtype* memtype* -[] table* table* -[] tabletype* tabletype* -[] deftype* deftype* -[] func* func* -[] data* data* -[] datatype* datatype* -[] elem* elem* -[] reftype* elemtype* -[] start? start? -[] export* export* -[] name* name* -[] externtype* externtype* -[] name* name* -[] tagtype* tagtype* -[] tagtype* tagtype* -[] globaltype* globaltype* -[] memtype* memtype* -[] memtype* memtype* -[] tabletype* tabletype* -[] tabletype* tabletype* -[] datatype* datatype* -[] reftype* elemtype* -[] deftype* deftype* -[] globaltype* globaltype* -[] deftype* deftype* -[] deftype* deftype* -[] idx* funcidx* -[] idx* funcidx* -[] idx* funcidx* -[] global* global* -[] mem* mem* -[] table* table* -[] elem* elem* -[] tagtype* tagtype* -[] tagtype* tagtype* -[] externtype* externtype* -[] globaltype* globaltype* -[] globaltype* globaltype* -[] externtype* externtype* -[] memtype* memtype* -[] memtype* memtype* -[] externtype* externtype* -[] tabletype* tabletype* -[] tabletype* tabletype* -[] externtype* externtype* -[] deftype* deftype* -[] deftype* deftype* -[] externtype* externtype* -[] half? half? -[] zero? zero? -[] zero? zero? -[] zero? zero? -[] zero? zero? -[] half? half? -[] half? half? -[] zero? zero? -[] zero? zero? -[] iN(N)* iN(N)* -[] iN(N)* iN(N)* -[] iN(N)* iN(N)* -[] iN(N)* iN(N)* -[] iN(N)* iN(N)* -[] iN(N)* iN(N)* -[] iN(N)* iN(N)* -[] iN(N)* iN(N)* -[] iN(N)* iN(N)* -[] iN(N)* iN(N)* -[] iN(N)* iN(N)* -[] iN(N)* iN(N)* -[] iN(N)* iN(N)* -[] iN(N)* iN(N)* -[] iN(N)* iN(N)* -[] iN(N)* iN(N)* -[] iN(N)* iN(N)* -[] iN($lsizenn((Jnn : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] lane_((Fnn : Fnn <: lanetype))** lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))** -[] lane_((Fnn : Fnn <: lanetype))* lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* -[] lane_((Fnn : Fnn <: lanetype))** lane_((Fnn : Fnn <: lanetype))** -[] lane_((Fnn : Fnn <: lanetype))* lane_((Fnn : Fnn <: lanetype))* -[] lane_((Fnn : Fnn <: lanetype))** lane_((Fnn : Fnn <: lanetype))** -[] lane_((Fnn : Fnn <: lanetype))* lane_((Fnn : Fnn <: lanetype))* -[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* fN($sizenn((Fnn : Fnn <: numtype)))* -[] iN($lsizenn((Jnn : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] iN($lsizenn((Jnn : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] lane_((Jnn : Jnn <: lanetype))** lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))** -[] lane_((Jnn : Jnn <: lanetype))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_((Jnn : Jnn <: lanetype))** lane_((Jnn : Jnn <: lanetype))** -[] lane_((Jnn : Jnn <: lanetype))* lane_((Jnn : Jnn <: lanetype))* -[] lane_((Jnn : Jnn <: lanetype))** lane_((Jnn : Jnn <: lanetype))** -[] lane_((Jnn : Jnn <: lanetype))* lane_((Jnn : Jnn <: lanetype))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] lane_((Fnn : Fnn <: lanetype))** lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))** -[] lane_((Fnn : Fnn <: lanetype))* lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* -[] lane_((Fnn : Fnn <: lanetype))** lane_((Fnn : Fnn <: lanetype))** -[] lane_((Fnn : Fnn <: lanetype))* lane_((Fnn : Fnn <: lanetype))* -[] lane_((Fnn : Fnn <: lanetype))** lane_((Fnn : Fnn <: lanetype))** -[] lane_((Fnn : Fnn <: lanetype))* lane_((Fnn : Fnn <: lanetype))* -[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* fN($sizenn((Fnn : Fnn <: numtype)))* -[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* fN($sizenn((Fnn : Fnn <: numtype)))* -[] lane_((Jnn : Jnn <: lanetype))** lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))** -[] lane_((Jnn : Jnn <: lanetype))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_((Jnn : Jnn <: lanetype))** lane_((Jnn : Jnn <: lanetype))** -[] lane_((Jnn : Jnn <: lanetype))* lane_((Jnn : Jnn <: lanetype))* -[] lane_((Jnn : Jnn <: lanetype))** lane_((Jnn : Jnn <: lanetype))** -[] lane_((Jnn : Jnn <: lanetype))* lane_((Jnn : Jnn <: lanetype))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] lane_((Fnn : Fnn <: lanetype))** lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))** -[] lane_((Fnn : Fnn <: lanetype))* lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* -[] lane_((Fnn : Fnn <: lanetype))** lane_((Fnn : Fnn <: lanetype))** -[] lane_((Fnn : Fnn <: lanetype))* lane_((Fnn : Fnn <: lanetype))* -[] lane_((Fnn : Fnn <: lanetype))** lane_((Fnn : Fnn <: lanetype))** -[] lane_((Fnn : Fnn <: lanetype))* lane_((Fnn : Fnn <: lanetype))* -[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* fN($sizenn((Fnn : Fnn <: numtype)))* -[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* fN($sizenn((Fnn : Fnn <: numtype)))* -[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* fN($sizenn((Fnn : Fnn <: numtype)))* -[] iN($lsizenn((Jnn : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] iN($lsizenn((Jnn : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] iN($sizenn((Fnn : Fnn <: numtype)))* iN($sizenn((Fnn : Fnn <: numtype)))* -[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* -[] iN($sizenn((Fnn : Fnn <: numtype)))* iN($sizenn((Fnn : Fnn <: numtype)))* -[] iN($sizenn((Fnn : Fnn <: numtype)))* iN($sizenn((Fnn : Fnn <: numtype)))* -[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* fN($sizenn((Fnn : Fnn <: numtype)))* -[] lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))* fN($sizenn((Fnn : Fnn <: numtype)))* -[] iN($lsizenn((Jnn : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] iN($lsizenn((Jnn : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] iN($lsizenn((Jnn : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] iN($lsizenn((Jnn : Jnn <: lanetype)))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* iN($lsizenn((Jnn : Jnn <: lanetype)))* -[] laneidx* laneidx* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] laneidx* laneidx* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] half? half? -[] zero? zero? -[] iN($lsizenn2((Inn_2 : Inn <: lanetype)))? lane_($lanetype(`%X%`_shape((Inn_2 : Inn <: lanetype), `%`_dim(M_2))))? -[] iN($lsizenn2((Inn_2 : Inn <: lanetype)))? iN($lsizenn2((Inn_2 : Inn <: lanetype)))? -[] iN($lsizenn2((Inn_2 : Inn <: lanetype)))? iN($lsizenn2((Inn_2 : Inn <: lanetype)))? -[] zero? zero? -[] iN($lsizenn2((Inn_2 : Inn <: lanetype)))? lane_($lanetype(`%X%`_shape((Inn_2 : Inn <: lanetype), `%`_dim(M_2))))? -[] iN($lsizenn2((Inn_2 : Inn <: lanetype)))? iN($lsizenn2((Inn_2 : Inn <: lanetype)))? -[] iN($lsizenn2((Inn_2 : Inn <: lanetype)))? iN($lsizenn2((Inn_2 : Inn <: lanetype)))? -[] fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))* lane_($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))))* -[] fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))* fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))* -[] fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))* fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))* -[] fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))* lane_($lanetype(`%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))))* -[] fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))* fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))* -[] fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))* fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))))* lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))))* lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))))* -[] lane_(Lnn_2)** lane_(Lnn_2)** -[] lane_(Lnn_2)* lane_(Lnn_2)* -[] lane_(Lnn_2)** lane_(Lnn_2)** -[] lane_(Lnn_2)* lane_(Lnn_2)* -[] lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))))* lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))))* -[] lane_(Lnn_2)** lane_($lanetype(`%X%`_shape(Lnn_2, `%`_dim(M))))** -[] lane_(Lnn_2)* lane_($lanetype(`%X%`_shape(Lnn_2, `%`_dim(M))))* -[] lane_(Lnn_2)** lane_($lanetype(`%X%`_shape(Lnn_2, `%`_dim(M))))** -[] lane_(Lnn_2)* lane_($lanetype(`%X%`_shape(Lnn_2, `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))))* lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))))* -[] lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))))* lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))))* -[] lane_(Lnn_2)** lane_(Lnn_2)** -[] lane_(Lnn_2)* lane_(Lnn_2)* -[] lane_(Lnn_2)** lane_(Lnn_2)** -[] lane_(Lnn_2)* lane_(Lnn_2)* -[] lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))))* lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))))* -[] lane_(Lnn_2)** lane_($lanetype(`%X%`_shape(Lnn_2, `%`_dim(M_2))))** -[] lane_(Lnn_2)* lane_($lanetype(`%X%`_shape(Lnn_2, `%`_dim(M_2))))* -[] lane_(Lnn_2)** lane_($lanetype(`%X%`_shape(Lnn_2, `%`_dim(M_2))))** -[] lane_(Lnn_2)* lane_($lanetype(`%X%`_shape(Lnn_2, `%`_dim(M_2))))* -[] lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))))* lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))))* -[] lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))))* lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))))* -[] lane_(Lnn_2)** lane_(Lnn_2)** -[] lane_(Lnn_2)* lane_(Lnn_2)* -[] lane_(Lnn_2)** lane_(Lnn_2)** -[] lane_(Lnn_2)* lane_(Lnn_2)* -[] lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))))* lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))))* -[] lane_(Lnn_2)** lane_($lanetype(`%X%`_shape(Lnn_2, `%`_dim(M_2))))** -[] lane_(Lnn_2)* lane_($lanetype(`%X%`_shape(Lnn_2, `%`_dim(M_2))))* -[] lane_(Lnn_2)** lane_($lanetype(`%X%`_shape(Lnn_2, `%`_dim(M_2))))** -[] lane_(Lnn_2)* lane_($lanetype(`%X%`_shape(Lnn_2, `%`_dim(M_2))))* -[] laneidx* laneidx* -[] laneidx* laneidx* -[] lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* -[] lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* -[] lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* -[] lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* -[] iN($lsize((Jnn_2 : Jnn <: lanetype)))* iN($lsize((Jnn_2 : Jnn <: lanetype)))* -[] iN($lsize((Jnn_2 : Jnn <: lanetype)))* iN($lsize((Jnn_2 : Jnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* iN($lsize((Jnn_1 : Jnn <: lanetype)))* -[] iN($lsize((Jnn_2 : Jnn <: lanetype)))* iN($lsize((Jnn_2 : Jnn <: lanetype)))* -[] iN($lsize((Jnn_2 : Jnn <: lanetype)))* iN($lsize((Jnn_2 : Jnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* iN($lsize((Jnn_1 : Jnn <: lanetype)))* -[] iN($lsize((Jnn_2 : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))))* -[] iN($lsize((Jnn_2 : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))))* -[] iN(N)* iN(N)* -[] N* nat* -[] N* nat* -[] N* N* -[] N* N* -[] N* N* -[] N* N* -[] iN(N)* iN(N)* -[] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))))* -[] lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* -[] lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* -[] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* -[] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* iN($lsizenn1((Jnn_1 : Jnn <: lanetype)))* -[] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* -[] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* -[] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* -[] iN(N)* iN(N)* -[] iN(N)* iN(N)* -[] iN(N)* iN(N)* -[] iN(N)* iN(N)* -[] iN(N)* iN(N)* -[] iN(N)* iN(N)* -[] iN(N)* iN(N)* -[] iN(N)* iN(N)* -[] iN(N)* iN(N)* -[] iN(N)* iN(N)* -[] iN(N)* iN(N)* -[] iN(N)* iN(N)* -[] iN(N)* iN(N)* -[] iN(N)* iN(N)* -[] iN(N)* iN(N)* -[] iN(N)* iN(N)* -[] iN(N)* iN(N)* -[] iN(N)* iN(N)* -[] iN(N)* iN(N)* -[] iN(N)* iN(N)* -[] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* lane_($lanetype(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))))* -[] lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* -[] lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* -[] lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* -[] lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* -[] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* -[] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* iN($lsizenn1((Jnn_1 : Jnn <: lanetype)))* -[] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* -[] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* -[] lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))* iN($lsizenn1((Jnn_1 : Jnn <: lanetype)))* -[] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* -[] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* -[] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* -[] iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))* -[] iN(N)* iN(N)* -[] iN(N)* iN(N)* -[] iN(N)* iN(N)* -[] iN(N)* iN(N)* -[] externaddr* externaddr* -[] externaddr* externaddr* -[] externaddr* externaddr* -[] externaddr* externaddr* -[] externaddr* externaddr* -[] externaddr* externaddr* -[] externaddr* externaddr* -[] externaddr* externaddr* -[] externaddr* externaddr* -[] externaddr* externaddr* -[] externaddr* externaddr* -[] externaddr* externaddr* -[] externaddr* externaddr* -[] externaddr* externaddr* -[] externaddr* externaddr* -[] externaddr* externaddr* -[] externaddr* externaddr* -[] externaddr* externaddr* -[] externaddr* externaddr* -[] externaddr* externaddr* -[] byte* byte* -[] byte* byte* -[] ref* ref* -[] ref* ref* -[] byte* byte* -[] byte* byte* -[] structinst* structinst* -[] structinst* structinst* -[] arrayinst* arrayinst* -[] arrayinst* arrayinst* -[] exninst* exninst* -[] exninst* exninst* -[] u64? u64? -[] ref* ref* -[] u64? u64? -[] ref* ref* -[] ref* ref* -[] ref* ref* -[] u64? u64? -[] u64? u64? -[] byte* byte* -[] u64? u64? -[] byte* byte* -[] byte* byte* -[] byte* byte* -[] u64? u64? -[] deftype* deftype* -[] deftype* deftype* -[] deftype* deftype* -[] deftype* deftype* -[] deftype* deftype* -[] deftype* deftype* -[] deftype* deftype* -[] deftype* deftype* -[] deftype* deftype* -[] deftype* deftype* -[] deftype* deftype* -[] deftype* deftype* -[] deftype* deftype* -[] deftype* deftype* -[] deftype* deftype* -[] valtype*? valtype*? -[] valtype* valtype* -[] valtype*? valtype*? -[] valtype* valtype* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] val* val* -[] val* val* -[] instr* instr* -[] val* val* -[] val* val^n -[] instr* instr* -[] val* val^n -[] instr* instr* -[] instr* instr* -[] val* val* -[] instr* instr* -[] val* val* -[] catch* catch* -[] val* val* -[] instr* instr* -[] val* val* -[] labelidx* labelidx* -[] labelidx* labelidx* -[] labelidx* labelidx* -[] labelidx* labelidx* -[] labelidx* labelidx* -[] labelidx* labelidx* -[] labelidx* labelidx* -[] labelidx* labelidx* -[] val* val^n -[] val* val^n -[] val* val* -[] val* val^n -[] instr* instr* -[] val* val^n -[] instr* instr* -[] val* val* -[] instr* instr* -[] val* val* -[] catch* catch* -[] val* val* -[] instr* instr* -[] val* val* -[] catch* catch* -[] val* val* -[] val* val* -[] val* val* -[] instr* instr* -[] val* val* -[] val* val* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* -[] lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))* iN($jsizenn(Jnn))* -[] laneidx* laneidx* -[] laneidx* laneidx* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype? valtype? -[] valtype? valtype? -[] val* val^m -[] instr* instr* -[] val* val^m -[] instr* instr* -[] valtype* valtype^m -[] valtype* valtype^n -[] val* val^m -[] instr* instr* -[] instr* instr* -[] val* val^m -[] instr* instr* -[] valtype* valtype^m -[] valtype* valtype^n -[] val* val^n -[] instr* instr* -[] valtype* valtype^n -[] valtype* valtype^m -[] valtype* valtype* -[] instr* instr* -[] val* val^n -[] valtype* valtype* -[] instr* instr* -[] val* val* -[] instr* instr* -[] val* val* -[] catch* catch* -[] val* val* -[] instr* instr* -[] val* val* -[] val* val* -[] instr* instr* -[] val* val* -[] val* val^n -[] instr* instr* -[] val* val^n -[] valtype* valtype^n -[] valtype* valtype^m -[] val* val* -[] instr* instr* -[] val* val* -[] val* val* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] catch* catch* -[] val* val* -[] val* val* -[] val* val* -[] catch* catch* -[] val* val* -[] val* val* -[] val* val* -[] catch* catch* -[] catch* catch* -[] catch* catch* -[] catch* catch* -[] val* val^m -[] catch* catch* -[] instr* instr* -[] catch* catch* -[] val* val^m -[] instr* instr* -[] valtype* valtype^m -[] valtype* valtype^n -[] iN(M)* iN(M)^K -[] iN(M)* iN(M)^K -[] val* val* -[] mut?* mut?* -[] storagetype* storagetype* -[] mut? mut? -[] val* val* -[] storagetype* storagetype* -[] sx? sx? -[] sx? sx? -[] storagetype* storagetype* -[] storagetype* storagetype* -[] sx? sx? -[] mut?* mut?* -[] storagetype* storagetype* -[] mut? mut? -[] mut? mut? -[] ref* ref^n -[] ref* ref^n -[] ref* ref^n -[] mut? mut? -[] lit_(zt)* lit_(zt)^n -[] mut? mut? -[] lit_(zt)* lit_(zt)^n -[] lit_(zt)* lit_(zt)^n -[] sx? sx? -[] sx? sx? -[] sx? sx? -[] sx? sx? -[] mut? mut? -[] sx? sx? -[] mut? mut? -[] sx? sx? -[] sx? sx? -[] sx? sx? -[] mut? mut? -[] sx? sx? -[] sx? sx? -[] mut? mut? -[] mut? mut? -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] val* val* -[] instr* instr* -[] instr* instr* -[] val* val* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] val* val* -[] val* val* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] val* val^n -[] valtype* valtype^n -[] val* val^n -[] byte* byte* -[] byte* byte* -[] byte* byte* -[] byte* byte* -[] byte* byte* -[] byte* byte* -[] byte* byte* -[] byte* byte* -[] byte* byte* -[] byte* byte* -[] byte* byte* -[] byte* byte* -[] val* val^n -[] mut?* mut?^n -[] storagetype* storagetype^n -[] mut? mut? -[] val* val^n -[] storagetype* storagetype^n -[] storagetype* storagetype* -[] storagetype* storagetype* -[] mut?* mut?* -[] storagetype* storagetype* -[] mut? mut? -[] val* val^n -[] mut? mut? -[] val* val^n -[] mut? mut? -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] val* val* -[] instr* instr* -[] val* val* -[] type* type* -[] deftype* deftype* -[] deftype* deftype* -[] deftype* deftype* -[] deftype* deftype* -[] type* type* -[] deftype* deftype* -[] deftype* deftype* -[] deftype* deftype* -[] deftype* deftype* -[] deftype* deftype* -[] tagtype* tagtype* -[] tagaddr* tagaddr* -[] tagaddr* tagaddr* -[] tagaddr* tagaddr* -[] tagtype* tagtype* -[] globaltype* globaltype* -[] val* val* -[] globaladdr* globaladdr* -[] globaladdr* globaladdr* -[] globaladdr* globaladdr* -[] globaltype* globaltype* -[] val* val* -[] u64? u64? -[] u64? u64? -[] memtype* memtype* -[] memaddr* memaddr* -[] memaddr* memaddr* -[] memaddr* memaddr* -[] memtype* memtype* -[] u64? u64? -[] u64? u64? -[] tabletype* tabletype* -[] ref* ref* -[] tableaddr* tableaddr* -[] tableaddr* tableaddr* -[] tableaddr* tableaddr* -[] tabletype* tabletype* -[] ref* ref* -[] deftype* deftype* -[] funccode* funccode* -[] moduleinst* moduleinst* -[] funcaddr* funcaddr* -[] funcaddr* funcaddr* -[] funcaddr* funcaddr* -[] deftype* deftype* -[] funccode* funccode* -[] moduleinst* moduleinst* -[] byte* byte* -[] byte* byte* -[] datatype* datatype* -[] byte* byte* -[] byte** byte** -[] byte* byte* -[] dataaddr* dataaddr* -[] byte* byte* -[] dataaddr* dataaddr* -[] dataaddr* dataaddr* -[] datatype* datatype* -[] byte** byte** -[] byte* byte* -[] ref* ref* -[] ref* ref* -[] reftype* elemtype* -[] ref* ref* -[] ref** ref** -[] ref* ref* -[] elemaddr* elemaddr* -[] ref* ref* -[] elemaddr* elemaddr* -[] elemaddr* elemaddr* -[] reftype* elemtype* -[] ref** ref** -[] ref* ref* -[] export* export* -[] export* export* -[] externaddr* externaddr* -[] val* val* -[] ref* ref* -[] ref** ref** -[] ref* ref* -[] type* type* -[] import* import* -[] tag* tag* -[] global* global* -[] mem* mem* -[] table* table* -[] func* func* -[] data* data* -[] elem* elem* -[] start? start? -[] export* export* -[] tag* tag* -[] tag* tag* -[] tagtype* tagtype* -[] global* global* -[] global* global* -[] expr* expr* -[] globaltype* globaltype* -[] mem* mem* -[] mem* mem* -[] memtype* memtype* -[] table* table* -[] table* table* -[] expr* expr* -[] tabletype* tabletype* -[] func* func* -[] func* func* -[] expr* expr* -[] local** local** -[] idx* typeidx* -[] local* local* -[] data* data* -[] data* data* -[] byte** byte** -[] datamode* datamode* -[] byte* byte* -[] elem* elem* -[] elem* elem* -[] elemmode* elemmode* -[] elemtype* reftype* -[] expr** expr** -[] expr* expr* -[] tagaddr* tagaddr* -[] tagaddr* tagaddr* -[] externaddr* externaddr* -[] globaladdr* globaladdr* -[] globaladdr* globaladdr* -[] externaddr* externaddr* -[] memaddr* memaddr* -[] memaddr* memaddr* -[] externaddr* externaddr* -[] tableaddr* tableaddr* -[] tableaddr* tableaddr* -[] externaddr* externaddr* -[] funcaddr* funcaddr* -[] funcaddr* funcaddr* -[] externaddr* externaddr* -[] deftype* deftype* -[] deftype* deftype* -[] type* type* -[] nat* nat* -[] nat* nat* -[] func* func* -[] func* func* -[] tagaddr* tagaddr* -[] tagaddr* tagaddr* -[] tagtype* tagtype* -[] deftype* deftype* -[] globaladdr* globaladdr* -[] globaladdr* globaladdr* -[] globaltype* globaltype* -[] deftype* deftype* -[] val* val* -[] memaddr* memaddr* -[] memaddr* memaddr* -[] memtype* memtype* -[] deftype* deftype* -[] tableaddr* tableaddr* -[] tableaddr* tableaddr* -[] tabletype* tabletype* -[] deftype* deftype* -[] ref* ref* -[] dataaddr* dataaddr* -[] dataaddr* dataaddr* -[] data* data* -[] data* data* -[] byte** byte** -[] byte* byte* -[] elemaddr* elemaddr* -[] elemaddr* elemaddr* -[] elemtype* reftype* -[] deftype* deftype* -[] ref** ref** -[] ref* ref* -[] nat* funcaddr* -[] nat* funcaddr* -[] idx* idx* -[] deftype* deftype* -[] deftype* deftype* -[] expr* expr* -[] local** local** -[] idx* typeidx* -[] local* local* -[] func* func* -[] func* func* -[] exportinst* exportinst* -[] exportinst* exportinst* -[] tagaddr* tagaddr* -[] tagaddr* tagaddr* -[] globaladdr* globaladdr* -[] globaladdr* globaladdr* -[] memaddr* memaddr* -[] memaddr* memaddr* -[] tableaddr* tableaddr* -[] tableaddr* tableaddr* -[] funcaddr* funcaddr* -[] nat* funcaddr* -[] export* export* -[] deftype* deftype* -[] tagaddr* tagaddr* -[] tagaddr* tagaddr* -[] globaladdr* globaladdr* -[] globaladdr* globaladdr* -[] memaddr* memaddr* -[] memaddr* memaddr* -[] tableaddr* tableaddr* -[] tableaddr* tableaddr* -[] funcaddr* funcaddr* -[] nat* funcaddr* -[] dataaddr* dataaddr* -[] elemaddr* elemaddr* -[] exportinst* exportinst* -[] byte* byte^n -[] byte* byte^n -[] instr* instr* -[] instr* instr* -[] expr* expr^n -[] expr* expr^n -[] expr* expr^n -[] instr* instr* -[] instr* instr* -[] globaltype* globaltype* -[] expr* expr* -[] val* val* -[] val* val* -[] val* val* -[] globaltype* globaltype* -[] expr* expr* -[] externaddr* externaddr* -[] instr* instr* -[] instr* instr* -[] instr? instr? -[] externtype* externtype* -[] externtype* externtype* -[] externaddr* externaddr* -[] externtype* externtype* -[] type* type* -[] import* import* -[] tag* tag* -[] global* global* -[] mem* mem* -[] table* table* -[] func* func* -[] data* data* -[] elem* elem* -[] start? start? -[] export* export* -[] global* global* -[] global* global* -[] expr* expr* -[] globaltype* globaltype* -[] table* table* -[] table* table* -[] expr* expr* -[] tabletype* tabletype* -[] data* data* -[] data* data* -[] byte** byte** -[] datamode* datamode* -[] byte* byte* -[] elem* elem* -[] elem* elem* -[] elemmode* elemmode* -[] expr** expr** -[] reftype* reftype* -[] expr* expr* -[] start? start? -[] start? start? -[] idx? funcidx? -[] type* type* -[] externaddr* externaddr* -[] externaddr* externaddr* -[] func* func* -[] func* func* -[] val* val* -[] val* val* -[] globaltype* globaltype* -[] expr* expr* -[] expr* expr* -[] ref* ref* -[] expr** expr** -[] ref** ref** -[] expr* expr* -[] ref* ref* -[] externaddr* externaddr* -[] val* val* -[] ref* ref* -[] ref** ref** -[] ref* ref* -[] instr* instr* -[] instr* instr* -[] data* data* -[] data* data* -[] data* data* -[] data* data* -[] instr* instr* -[] instr* instr* -[] elem* elem* -[] elem* elem* -[] elem* elem* -[] elem* elem* -[] instr? instr? -[] instr? instr? -[] idx? funcidx? -[] val* val* -[] val* val* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] val* val* -[] byte* byte* -[] byte* byte* -[] el* el^n -[] el* el^n -[] byte* byte* -[] byte* byte* -[] valtype* valtype* -[] valtype* valtype* -[] mut? mut? -[] mut? mut? -[] fieldtype* fieldtype* -[] fieldtype* fieldtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] idx* typeidx* -[] idx* typeidx* -[] idx* typeidx* -[] idx* typeidx* -[] subtype* subtype* -[] subtype* subtype* -[] mut? mut? -[] mut? mut? -[] valtype* valtype* -[] valtype* valtype* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] instr* instr* -[] labelidx* labelidx* -[] labelidx* labelidx* -[] catch* catch* -[] instr* instr* -[] catch* catch* -[] instr* instr* -[] null? null? -[] null? null? -[] null? null? -[] null? null? -[] null? null? -[] null? null? -[] null? null? -[] null? null? -[] byte* byte^16 -[] byte* byte^16 -[] labelidx* labelidx^16 -[] labelidx* labelidx^16 -[] instr* instr* -[] instr* instr* -[] en* en* -[] en* en* -[] type* type* -[] type* type* -[] import* import* -[] import* import* -[] idx* typeidx* -[] idx* typeidx* -[] table* table* -[] table* table* -[] mem* mem* -[] mem* mem* -[] global* global* -[] global* global* -[] export* export* -[] export* export* -[] idx* funcidx* -[] idx* funcidx* -[] idx* funcidx* -[] idx* funcidx* -[] idx* funcidx* -[] idx* funcidx* -[] idx* funcidx* -[] idx* funcidx* -[] expr* expr* -[] expr* expr* -[] expr* expr* -[] expr* expr* -[] expr* expr* -[] expr* expr* -[] expr* expr* -[] expr* expr* -[] elem* elem* -[] elem* elem* -[] local** local** -[] local* local* -[] local** local** -[] local* local* -[] local** local** -[] local* local* -[] local** local** -[] local* local* -[] code* code* -[] code* code* -[] byte* byte* -[] byte* byte* -[] byte* byte* -[] byte* byte* -[] byte* byte* -[] byte* byte* -[] data* data* -[] data* data* -[] tag* tag* -[] tag* tag* -[] type* type* -[] import* import* -[] typeidx* typeidx* -[] table* table* -[] mem* mem* -[] tag* tag* -[] global* global* -[] export* export* -[] start? start? -[] elem* elem* -[] n? nat? -[] expr* expr* -[] local** local** -[] local* local* -[] data* data* -[] type* type* -[] import* import* -[] tag* tag* -[] global* global* -[] mem* mem* -[] table* table* -[] func* func* -[] data* data* -[] elem* elem* -[] start? start? -[] export* export* -[] n? nat? -[] data* data* -[] data* data* -[] n? n? -[] n? n? -[] func* func* -[] func* func* -[] expr* expr* -[] func* func* -[] local** local** -[] typeidx* typeidx* -[] local* local* -[] byte** byte** -[] byte* byte* -[] byte** byte** -[] byte* byte* -[] byte** byte** -[] byte* byte* -[] byte** byte** -[] byte* byte* -[] byte* byte* -[] char* char* -[] byte* byte* -[] byte* byte* -[] char* char* -[] char* char* -[] char* char* -[] char* char* -[] char* char* -[] char* char* -[] char* char* -[] el* el* -[] el* el* -[] el* el* -[] el* el* -[] I* idctxt* -[] I* idctxt* -[] char** char** -[] char* char* -[] char** char** -[] char** char** -[] char* char* -[] null? null? -[] null? null? -[] char? char? -[] char? char? -[] char? char? -[] char? char? -[] fieldtype* fieldtype* -[] char?* char?* -[] char? char? -[] fieldtype* fieldtype* -[] char?* char?* -[] char? char? -[] char?* char?* -[] valtype* valtype* -[] char? char? -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] final? final? -[] idx* typeidx* -[] final? final? -[] idx* typeidx* -[] char? char? -[] char? char? -[] I* idctxt* -[] subtype* subtype* -[] subtype* subtype* -[] I* idctxt* -[] subtype* subtype* -[] subtype* subtype* -[] subtype* subtype* -[] subtype* subtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] char?* char?* -[] valtype* valtype* -[] char? char? -[] valtype* valtype* -[] subtype* subtype* -[] subtype* subtype* -[] subtype* subtype* -[] subtype* subtype* -[] valtype* valtype* -[] valtype* valtype* -[] char?* char?* -[] char? char? -[] char? char? -[] char? char? -[] char? char? -[] char? char? -[] char? char? -[] char? char? -[] char? char? -[] char? char? -[] char? char? -[] char? char? -[] valtype? valtype? -[] valtype? valtype? -[] valtype*? valtype*? -[] valtype* valtype* -[] valtype*? valtype*? -[] valtype* valtype* -[] labelidx* labelidx* -[] labelidx* labelidx* -[] u8* u8* -[] u8* iN(8)* -[] u16* u16* -[] u16* iN(16)* -[] u32* u32* -[] u32* iN(32)* -[] u64* u64* -[] u64* iN(64)* -[] f32* f32* -[] f32* fN(32)* -[] f64* f64* -[] f64* fN(64)* -[] laneidx* laneidx* -[] laneidx* laneidx* -[] instr* instr* -[] instr* instr* -[] instr** instr** -[] instr* instr* -[] instr** instr** -[] instr* instr* -[] char? char? -[] instr* instr* -[] char? char? -[] instr* instr* -[] char? char? -[] char? char? -[] char? char? -[] char? char? -[] char? char? -[] char? char? -[] instr* instr* -[] char? char? -[] instr* instr* -[] char? char? -[] char? char? -[] char? char? -[] char? char? -[] char? char? -[] char? char? -[] instr* instr* -[] char? char? -[] instr* instr* -[] char? char? -[] instr* instr* -[] instr* instr* -[] char? char? -[] char? char? -[] char? char? -[] char? char? -[] char? char? -[] char? char? -[] char? char? -[] char? char? -[] char? char? -[] char? char? -[] char? char? -[] catch* catch* -[] instr* instr* -[] char? char? -[] catch* catch* -[] instr* instr* -[] char? char? -[] char? char? -[] char? char? -[] char? char? -[] char? char? -[] instr* instr* -[] instr* instr* -[] subtype* subtype^n -[] char? char? -[] char? char? -[] char? char? -[] char? char? -[] char? char? -[] char? char? -[] char? char? -[] char? char? -[] char? char? -[] char? char? -[] char? char? -[] I* idctxt* -[] local** local** -[] local* local* -[] local** local** -[] local* local* -[] char? char? -[] I* idctxt* -[] byte** byte** -[] byte* byte* -[] byte** byte** -[] byte* byte* -[] char? char? -[] byte* byte* -[] byte* byte* -[] char? char? -[] char? char? -[] byte* byte* -[] byte* byte* -[] char? char? -[] expr* expr* -[] expr* expr* -[] char? char? -[] expr* expr* -[] expr* expr* -[] char? char? -[] char? char? -[] expr* expr* -[] expr* expr* -[] char? char? -[] char? char? -[] expr* expr* -[] expr* expr* -[] char? char? -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] decl* decl* -[] I* idctxt* -[] decl* decl* -[] type* type* -[] import* import* -[] tag* tag* -[] global* global* -[] mem* mem* -[] table* table* -[] func* func* -[] data* data* -[] elem* elem* -[] start? start? -[] export* export* -[] I* idctxt* -[] type* type* -[] type* type* -[] decl* decl* -[] import* import* -[] import* import* -[] decl* decl* -[] tag* tag* -[] tag* tag* -[] decl* decl* -[] global* global* -[] global* global* -[] decl* decl* -[] mem* mem* -[] mem* mem* -[] decl* decl* -[] table* table* -[] table* table* -[] decl* decl* -[] func* func* -[] func* func* -[] decl* decl* -[] data* data* -[] data* data* -[] decl* decl* -[] elem* elem* -[] elem* elem* -[] decl* decl* -[] start? start? -[] start? start? -[] decl* decl* -[] export* export* -[] export* export* -[] decl* decl* -[] decl* decl* -[] instr* instr* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] valtype* valtype* -[] instr* instr* -[] valtype* valtype* -[] valtype* valtype* -[] X* X* -[] Y* Y* -[] addr* addr* -[] addr* addr* -[] addr* addr* -[] X* X* -[] Y* Y* == Complete. ``` From aedc92d6a9b9b58da4d6c1d9b66accdf88ef5fce Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Tue, 20 Jan 2026 15:12:11 +0100 Subject: [PATCH 018/235] Remove obsolete modules --- spectec/src/el/debug.ml | 15 - spectec/src/el/free.ml | 136 +---- spectec/src/el/free.mli | 18 - spectec/src/frontend/det.mli | 10 + spectec/src/frontend/dune | 2 +- spectec/src/frontend/elab.ml | 15 +- spectec/src/frontend/eval.ml | 898 ---------------------------------- spectec/src/frontend/eval.mli | 29 -- spectec/src/il/valid.ml | 11 - 9 files changed, 23 insertions(+), 1111 deletions(-) delete mode 100644 spectec/src/frontend/eval.ml delete mode 100644 spectec/src/frontend/eval.mli diff --git a/spectec/src/el/debug.ml b/spectec/src/el/debug.ml index 770913cb9..d6691d4c1 100644 --- a/spectec/src/el/debug.ml +++ b/spectec/src/el/debug.ml @@ -19,18 +19,3 @@ let el_params = list el_param let el_def = string_of_def let nl_list f xs = list f (Convert.filter_nl xs) - -let el_free s = String.concat " " - Free.[ - set s.typid; - set s.varid; - set s.gramid; - set s.defid; - ] -let el_subst s = String.concat " " - Subst.[ - mapping el_typ s.typid; - mapping el_exp s.varid; - mapping el_sym s.gramid; - mapping el_id s.defid; - ] diff --git a/spectec/src/el/free.ml b/spectec/src/el/free.ml index 7af8432c9..793da3250 100644 --- a/spectec/src/el/free.ml +++ b/spectec/src/el/free.ml @@ -1,6 +1,5 @@ open Util.Source open Ast -open Xl include Xl.Gen_free @@ -20,7 +19,6 @@ let free_typid id = | _ -> empty let free_op op = {empty with varid = Set.singleton op} -let bound_op op = free_op op (* Iterations *) @@ -42,11 +40,11 @@ and free_typ t = | IterT (t1, iter) -> free_typ t1 ++ free_iter iter | StrT (_, ts, tfs, _) -> free_nl_list free_typ ts ++ - free_nl_list (fun tf -> free_typfield tf -- det_typfield tf) tfs + free_nl_list (fun tf -> free_typfield tf) tfs | CaseT (_, ts, tcs, _) -> free_nl_list free_typ ts ++ - free_nl_list (fun tc -> free_typcase tc -- det_typcase tc) tcs - | ConT tc -> free_typcon tc -- det_typcon tc + free_nl_list (fun tc -> free_typcase tc) tcs + | ConT tc -> free_typcon tc | RangeT tes -> free_nl_list free_typenum tes | AtomT _ -> empty | SeqT ts -> free_list free_typ ts @@ -59,14 +57,6 @@ and free_typcon ((t, prems), _) = free_typ t ++ free_prems prems and free_typenum (e, eo) = free_exp e ++ free_opt free_exp eo -(* Variables can be determined by types through implicit binders *) -and det_typ t = det_exp (Convert.pat_of_typ t) - -and det_typfield (_, (t, prems), _) = det_typ t ++ det_prems prems -and det_typcase (_, (t, prems), _) = det_typ t ++ det_prems prems -and det_typcon ((t, prems), _) = det_typ t ++ det_prems prems - - (* Expressions *) and free_unop = function @@ -103,76 +93,6 @@ and free_path p = | DotP (p1, _) -> free_path p1 -and det_unop = - function - | #signop -> - bound_op (Print.string_of_unop `PlusMinusOp) ++ - bound_op (Print.string_of_unop `MinusPlusOp) - | _ -> empty - -and det_exp e = - match e.it with - | VarE (id, []) -> bound_varid id - | VarE _ -> assert false - | UnE (#signop as op, e1) -> det_unop op ++ det_exp e1 - | CvtE (e1, _) | UnE (#Num.unop, e1) - | ParenE e1 | BrackE (_, e1, _) | ArithE e1 -> det_exp e1 - (* We consider arithmetic expressions determinate, - * since we sometimes need to use invertible formulas. *) - | BinE (e1, #Num.binop, e2) - | InfixE (e1, _, e2) -> det_exp e1 ++ det_exp e2 - | SeqE es | ListE es | TupE es -> free_list det_exp es - | StrE efs -> free_nl_list det_expfield efs - | IterE (e1, iter) -> det_exp e1 ++ det_iter iter - (* As a special hack to work with bijective functions, - * we treat last position of a call as a pattern, too. *) - | CallE (_, []) -> empty - | CallE (_, as_) -> - free_list idx_arg as_ ++ det_arg (Util.Lib.List.last as_) - | TypE (e1, _) -> det_exp e1 - | AtomE _ | BoolE _ | NumE _ | TextE _ | EpsE -> empty - | UnE _ | BinE _ | CmpE _ - | IdxE _ | SliceE _ | UpdE _ | ExtE _ | CommaE _ | CatE _ | MemE _ - | DotE _ | LenE _ | SizeE _ -> idx_exp e - | HoleE _ | FuseE _ | UnparenE _ | LatexE _ -> assert false - -and det_expfield (_, e) = det_exp e - -and det_iter iter = - match iter with - | Opt | List | List1 -> empty - | ListN (e, id_opt) -> det_exp e ++ free_opt bound_varid id_opt - -and idx_exp e = - match e.it with - | VarE _ -> empty - | ParenE e1 | BrackE (_, e1, _) | ArithE e1 -> idx_exp e1 - | InfixE (e1, _, e2) -> idx_exp e1 ++ idx_exp e2 - | SeqE es | ListE es | TupE es -> free_list idx_exp es - | StrE efs -> free_nl_list idx_expfield efs - | IterE (e1, iter) -> idx_exp e1 ++ idx_iter iter - | CallE (_, as_) -> free_list idx_arg as_ - | TypE (e1, _) -> idx_exp e1 - | IdxE (_, e2) -> det_exp e2 - | _ -> empty - -and idx_expfield (_, e) = idx_exp e - -and idx_iter iter = - match iter with - | Opt | List | List1 -> empty - | ListN (e, id_opt) -> idx_exp e ++ free_opt bound_varid id_opt - -and det_cond_exp e = - match e.it with - | UnE (#Bool.unop, e1) -> det_cond_exp e1 - | BinE (e1, #Bool.binop, e2) -> det_cond_exp e1 ++ det_cond_exp e2 - | CmpE (e1, `EqOp, e2) -> det_exp e1 ++ det_exp e2 - | MemE (e1, _) -> det_exp e1 - | ParenE e1 | ArithE e1 -> det_cond_exp e1 - | _ -> empty - - (* Grammars *) and free_sym g = @@ -187,18 +107,6 @@ and free_sym g = | ArithG e -> free_exp e | AttrG (e, g1) -> free_exp e ++ free_sym g1 -and det_sym g = - match g.it with - | VarG _ | NumG _ | TextG _ | EpsG -> empty - | SeqG gs | AltG gs -> free_nl_list det_sym gs - | RangeG (g1, g2) -> det_sym g1 ++ det_sym g2 - | ParenG g1 -> det_sym g1 - | TupG gs -> free_list det_sym gs - | IterG (g1, iter) -> det_sym g1 ++ det_iter iter - | ArithG e -> det_exp e - | AttrG (e, g1) -> det_exp e ++ det_sym g1 - | FuseG _ | UnparenG _ -> assert false - and free_prod prod = match prod.it with | SynthP (g, e, prems) -> free_sym g ++ free_exp e ++ free_prems prems @@ -206,12 +114,6 @@ and free_prod prod = free_sym g1 ++ free_exp e1 ++ free_sym g2 ++ free_exp e2 | EquivP (g1, g2, prems) -> free_sym g1 ++ free_sym g2 ++ free_prems prems -and det_prod prod = - match prod.it with - | SynthP (g, _e, prems) -> det_sym g ++ det_prems prems - | RangeP (g1, _e1, g2, _e2) -> det_sym g1 ++ det_sym g2 - | EquivP (g1, _g2, prems) -> det_sym g1 ++ det_prems prems - and free_gram gram = let (_dots1, prods, _dots2) = gram.it in let s = free_nl_list free_prod prods in @@ -228,16 +130,7 @@ and free_prem prem = | ElsePr -> empty | IterPr (prem1, iter) -> free_prem prem1 ++ free_iter iter -and det_prem prem = - match prem.it with - | VarPr (_id, _t) -> empty - | RulePr (_id, e) -> det_exp e - | IfPr e -> det_cond_exp e - | ElsePr -> empty - | IterPr (prem1, iter) -> det_prem prem1 ++ det_iter iter - and free_prems prems = free_nl_list free_prem prems -and det_prems prems = free_nl_list det_prem prems (* Definitions *) @@ -249,20 +142,6 @@ and free_arg a = | GramA g -> free_sym g | DefA id -> free_defid id -and det_arg a = - match !(a.it) with - | ExpA e -> det_exp e - | TypA t -> free_typ t (* must be an id *) - | GramA g -> free_sym g (* must be an id *) - | DefA id -> free_defid id - -and idx_arg a = - match !(a.it) with - | ExpA e -> idx_exp e - | TypA _ -> empty - | GramA _ -> empty - | DefA _ -> empty - and free_param p = match p.it with | ExpP (_, t) -> free_typ t @@ -280,8 +159,6 @@ and bound_param p = | DefP (id, _, _) -> bound_defid id and free_args as_ = free_list free_arg as_ -and det_args as_ = free_list det_arg as_ - and free_params ps = free_list_dep free_param bound_param ps and bound_params ps = bound_list bound_param ps @@ -303,10 +180,3 @@ let free_def d = | DefD (id, as_, e, prems) -> free_defid id ++ free_args as_ ++ free_exp e ++ free_prems prems | HintD _ -> empty - -let det_def d = - match d.it with - | FamD _ | GramD _ | VarD _ | SepD | RelD _ | DecD _ | HintD _ -> empty - | TypD (_id1, _id2, as_, _t, _hints) -> det_args as_ - | RuleD (_id1, _id2, e, prems) -> det_exp e ++ det_prems prems - | DefD (_id, as_, e, prems) -> det_args as_ ++ idx_exp e ++ det_prems prems diff --git a/spectec/src/el/free.mli b/spectec/src/el/free.mli index fb8bad9d3..fcd9d6d1d 100644 --- a/spectec/src/el/free.mli +++ b/spectec/src/el/free.mli @@ -21,21 +21,3 @@ val free_def : def -> sets val free_prems : prem nl_list -> sets val free_args : arg list -> sets val free_params : param list -> sets - -(* A free variable is "determinate" if: - - it occurs as an iteration variable - - it occurs in destructuring position on the lhs - - it occurs in destructuring position on either side of an equational premise - - it occurs in destructuring position as an indexing operand - - it occurs in destructuring position as the last call arg - (this case is to handle function inverses) - This is a pragmatic criterium, intended only for sanity checks. -*) -val det_typ : typ -> sets -val det_exp : exp -> sets -val det_sym : sym -> sets -val det_prems : prem nl_list -> sets -val det_prod : prod -> sets -val det_def : def -> sets - -val bound_params : param list -> sets diff --git a/spectec/src/frontend/det.mli b/spectec/src/frontend/det.mli index fe6c7f0f7..907161e5e 100644 --- a/spectec/src/frontend/det.mli +++ b/spectec/src/frontend/det.mli @@ -2,6 +2,16 @@ open Il.Ast include module type of Xl.Gen_free +(* A free variable is "determinate" if: + - it occurs as an iteration variable + - it occurs in destructuring position on the lhs + - it occurs in destructuring position on either side of an equational premise + - it occurs in destructuring position as an indexing operand + - it occurs in destructuring position as the last call arg + (this case is to handle function inverses) + This is a pragmatic criterium, intended only for sanity checks. +*) + val det_typ : typ -> sets val det_exp : exp -> sets val det_sym : sym -> sets diff --git a/spectec/src/frontend/dune b/spectec/src/frontend/dune index 4f21e18c8..a77e8551e 100644 --- a/spectec/src/frontend/dune +++ b/spectec/src/frontend/dune @@ -1,7 +1,7 @@ (library (name frontend) (libraries util el il xl) - (modules lexer id parser parse dim det eval elab) + (modules lexer id parser parse dim det elab) ) (ocamllex diff --git a/spectec/src/frontend/elab.ml b/spectec/src/frontend/elab.ml index eeba3f436..867dd2e83 100644 --- a/spectec/src/frontend/elab.ml +++ b/spectec/src/frontend/elab.ml @@ -8,7 +8,7 @@ open Print module Il = struct include Il include Ast include Print end -module Set = Free.Set +module Set = Il.Free.Set module Map = Map.Make (String) module Debug = struct include El.Debug include Il.Debug end @@ -182,9 +182,9 @@ let find_case_atom tcs atom at t = | Some tc -> tc | None -> error_atom at atom t "unknown case" -let bound_env' env' = Map.fold (fun id _ s -> Free.Set.add id s) env' Free.Set.empty +let bound_env' env' = Map.fold (fun id _ s -> Il.Free.Set.add id s) env' Il.Free.Set.empty let bound_env env = - Free.{ + Il.Free.{ varid = bound_env' env.vars; typid = bound_env' env.typs; relid = bound_env' env.rels; @@ -295,7 +295,7 @@ let make_quants_iter_arg env (free : Il.Free.sets) dims : Il.quant list ref * (m if Il.Free.(Set.mem id.it !left.gramid) then ( let ps, t, _gram, _prods' = find "grammar" env.grams id in acc := !acc @ [Il.GramP (id, ps, t) $ id.at]; - left := Free.{!left with varid = Set.remove id.it !left.gramid}; + left := Il.Free.{!left with varid = Set.remove id.it !left.gramid}; ) let visit_defid id = @@ -343,7 +343,7 @@ let infer_quants env env' dims det ps' as' ts' es' gs' prs' at : Il.quant list = -- bound -- bound_list bound_param ps' -- det ) in - if free <> Free.empty then + if free <> Il.Free.empty then error at ("definition contains indeterminate variable(s) " ^ String.concat ", " (List.map quote (Il.Free.Set.elements free.varid))); @@ -2133,7 +2133,7 @@ and elab_prod env outer_dims (prod : prod) (t : Il.typ) : Il.prod list = let free = Il.Free.(free_prod prod' -- bound_env env') in if free <> Il.Free.empty then error prod.at ("grammar rule contains indeterminate variable(s) " ^ - String.concat ", " (List.map quote (Free.Set.elements free.varid))); + String.concat ", " (List.map quote (Il.Free.Set.elements free.varid))); if not env'.pm then [prod'] else @@ -2332,10 +2332,12 @@ and elab_param env (p : param) : Il.param list = else env.vars <- bind "variable" env.vars x t'; [Il.ExpP (x, t') $ p.at] + | TypP x -> env.typs <- bind "syntax type" env.typs x ([], Opaque); env.gvars <- bind "variable" env.gvars (strip_var_sub x) (Il.VarT (x, []) $ x.at); [Il.TypP x $ p.at] + | GramP (x, ps, t) -> let env' = local_env env in let ps' = elab_params env' ps in @@ -2359,6 +2361,7 @@ and elab_param env (p : param) : Il.param list = let t' = elab_typ env' t in env.grams <- bind "grammar" env.grams x ([], t', [], None); ps_implicit' @ [Il.GramP (x, ps', t') $ p.at] + | DefP (x, ps, t) -> let env' = local_env env in let ps' = elab_params env' ps in diff --git a/spectec/src/frontend/eval.ml b/spectec/src/frontend/eval.ml deleted file mode 100644 index ff76a99aa..000000000 --- a/spectec/src/frontend/eval.ml +++ /dev/null @@ -1,898 +0,0 @@ -open Util -open Source -open El -open Xl -open Ast - - -(* Environment *) - -module Set = Set.Make(String) -module Map = Map.Make(String) - -type typ_def = (arg list * typ) list -type def_def = (arg list * exp * prem list) list -type gram_def = unit -type env = {vars : typ Map.t; typs : typ_def Map.t; defs : def_def Map.t; grams : gram_def Map.t} -type subst = Subst.t - - -(* Helpers *) - -(* This exception indicates that a an application cannot be reduced because a pattern - * match cannot be decided. - * When assume_coherent_matches is set, that case is treated as a non-match. - *) -exception Irred - -let assume_coherent_matches = ref true - -let (let*) = Option.bind - - -let of_bool_exp = function - | BoolE b -> Some b - | _ -> None - -let of_num_exp = function - | NumE (_, n) -> Some n - | _ -> None - -let to_bool_exp b = BoolE b -let to_num_exp n = NumE (`DecOp, n) - - -(* Matching Lists *) - -let rec match_list match_x env s xs1 xs2 : subst option = - match xs1, xs2 with - | [], [] -> Some s - | x1::xs1', x2::xs2' -> - let* s' = match_x env s x1 x2 in - match_list match_x env (Subst.union s s') xs1' xs2' - | _, _ -> None - -let match_nl_list match_x env s xs1 xs2 = - match_list match_x env s (Convert.filter_nl xs1) (Convert.filter_nl xs2) - - -let equiv_list equiv_x env xs1 xs2 = - List.length xs1 = List.length xs2 && List.for_all2 (equiv_x env) xs1 xs2 -let equiv_nl_list equiv_x env xs1 xs2 = - equiv_list equiv_x env (El.Convert.filter_nl xs1) (El.Convert.filter_nl xs2) -let equiv_opt equiv_x env xo1 xo2 = - match xo1, xo2 with - | None, None -> true - | Some x1, Some x2 -> equiv_x env x1 x2 - | _, _ -> false - -let disj_list disj_x env xs1 xs2 = - List.length xs1 <> List.length xs2 || List.exists2 (disj_x env) xs1 xs2 - - -(* Type Reduction (weak-head) *) - -let rec reduce_typ env t : typ = - Debug.(log_if "el.reduce_typ" (t.it <> NumT `NatT) - (fun _ -> fmt "%s" (el_typ t)) - (fun r -> fmt "%s" (el_typ r)) - ) @@ fun _ -> - match t.it with - | VarT (id, args) -> - let args' = List.map (reduce_arg env) args in - let id' = El.Convert.strip_var_suffix id in - if id'.it <> id.it && args = [] then reduce_typ env (El.Convert.typ_of_varid id') else - (match reduce_typ_app env id args' t.at (Map.find id'.it env.typs) with - | Some t' -> -(* TODO(2, rossberg): reenable? - if id'.it <> id.it then - Error.error id.at "syntax" "identifer suffix encountered during reduction"; -*) - t' - | None -> VarT (id, args') $ t.at - ) - | ParenT t1 -> reduce_typ env t1 - | CaseT (dots1, ts, tcs, _dots2) -> - assert (dots1 = NoDots); -(* TODO(3, rossberg): unclosed case types are not checked early enough for this - assert (dots2 = NoDots); -*) - let tcs' = Convert.concat_map_nl_list (reduce_casetyp env) ts in - CaseT (NoDots, [], tcs' @ tcs, NoDots) $ t.at - | _ -> t - -and reduce_casetyp env t : typcase nl_list = - match (reduce_typ env t).it with - | CaseT (NoDots, [], tcs, NoDots) -> tcs - | _ -> assert false - -and reduce_typ_app env id args at = function - | [] -> - if !assume_coherent_matches then None else - let args = if args = [] then "" else - "(" ^ String.concat ", " (List.map Print.string_of_arg args) ^ ")" in - Error.error at "type" - ("undefined instance of partial syntax type definition: `" ^ id.it ^ args ^ "`") - | (args', t)::insts' -> - Debug.(log "el.reduce_typ_app" - (fun _ -> fmt "%s(%s) =: %s(%s)" id.it (el_args args) id.it (el_args args')) - (fun r -> fmt "%s" (opt (Fun.const "!") r)) - ) @@ fun _ -> - (* HACK: check for forward reference to yet undefined type (should throw?) *) - if Eq.eq_typ t (VarT (id, args') $ id.at) then None else - match match_list match_arg env Subst.empty args args' with - | exception Irred -> - if not !assume_coherent_matches then None else - reduce_typ_app env id args at insts' - | None -> reduce_typ_app env id args at insts' - | Some s -> Some (reduce_typ env (Subst.subst_typ s t)) - - -(* Expression Reduction *) - -and is_head_normal_exp e = - match e.it with - | AtomE _ | BoolE _ | NumE _ | TextE _ - | SeqE _ | TupE _ | InfixE _ | BrackE _ | StrE _ -> true - | _ -> false - -and is_normal_exp e = - match e.it with - | AtomE _ | BoolE _ | NumE _ | TextE _ -> true - | SeqE es | TupE es -> List.for_all is_normal_exp es - | BrackE (_, e, _) -> is_normal_exp e - | InfixE (e1, _, e2) -> is_normal_exp e1 && is_normal_exp e2 - | StrE efs -> Convert.forall_nl_list (fun (_, e) -> is_normal_exp e) efs - | _ -> false - -and reduce_exp env e : exp = - Debug.(log "el.reduce_exp" - (fun _ -> fmt "%s" (el_exp e)) - (fun r -> fmt "%s" (el_exp r)) - ) @@ fun _ -> - match e.it with - | VarE _ | AtomE _ | BoolE _ | TextE _ | SizeE _ -> e - | NumE (numop, n) -> NumE (numop, Num.narrow n) $ e.at - | CvtE (e1, nt) -> - let e1' = reduce_exp env e1 in - (match e1'.it with - | NumE (numop, n) -> - (match Num.cvt nt n with - | Some n' -> NumE (numop, n') $ e.at - | None -> e1' - ) - | _ -> e1' - ) - | UnE (op, e1) -> - let e1' = reduce_exp env e1 in - (match op, e1'.it with - | #Bool.unop as op', BoolE b1 -> BoolE (Bool.un op' b1) $ e.at - | #Num.unop as op', NumE (numop, n1) -> - (match Num.un op' n1 with - | Some n -> NumE (numop, n) - | None -> UnE (op, e1') - ) $ e.at - | `NotOp, UnE (`NotOp, e11') -> e11' - | `MinusOp, UnE (`MinusOp, e11') -> e11' - | `PlusOp, _ -> e1' - | _ -> UnE (op, e1') $ e.at - ) - | BinE (e1, op, e2) -> - let e1' = reduce_exp env e1 in - let e2' = reduce_exp env e2 in - (match op with - | #Bool.binop as op' -> - (match Bool.bin_partial op' e1'.it e2'.it of_bool_exp to_bool_exp with - | None -> BinE (e1', op, e2') - | Some e' -> e' - ) - | #Num.binop as op' -> - let e1'', e2'' = - match e1'.it, e2'.it with - | NumE (numop1, n1), NumE (numop2, n2) -> - let n1', n2' = Num.widen n1 n2 in - NumE (numop1, n1'), NumE (numop2, n2') - | _, _ -> e1'.it, e2'.it - in - (match Num.bin_partial op' e1'' e2'' of_num_exp to_num_exp with - | None -> BinE (e1', op, e2') - | Some e' -> e' - ) - ) $ e.at - | CmpE (e1, op, e2) -> - let e1' = reduce_exp env e1 in - let e2' = reduce_exp env e2 in - (match op, e1'.it, e2'.it with - | `EqOp, _, _ when Eq.eq_exp e1' e2' -> BoolE true - | `NeOp, _, _ when Eq.eq_exp e1' e2' -> BoolE false - | `EqOp, _, _ when is_normal_exp e1' && is_normal_exp e2' -> BoolE false - | `NeOp, _, _ when is_normal_exp e1' && is_normal_exp e2' -> BoolE true - | #Num.cmpop as op', NumE (_, n1), NumE (_, n2) -> - (match Num.cmp op' n1 n2 with - | Some b -> BoolE b - | None -> CmpE (e1', op, e2') - ) - | _ -> CmpE (e1', op, e2') - ) $ e.at - | EpsE -> SeqE [] $ e.at - | SeqE es -> SeqE (List.map (reduce_exp env) es) $ e.at - | ListE es -> SeqE (List.map (reduce_exp env) es) $ e.at - | IdxE (e1, e2) -> - let e1' = reduce_exp env e1 in - let e2' = reduce_exp env e2 in - (match e1'.it, e2'.it with - | SeqE es, NumE (_, `Nat i) when i < Z.of_int (List.length es) -> List.nth es (Z.to_int i) - | _ -> IdxE (e1', e2') $ e.at - ) - | SliceE (e1, e2, e3) -> - let e1' = reduce_exp env e1 in - let e2' = reduce_exp env e2 in - let e3' = reduce_exp env e3 in - (match e1'.it, e2'.it, e3'.it with - | SeqE es, NumE (_, `Nat i), NumE (_, `Nat n) when Z.(i + n) < Z.of_int (List.length es) -> - SeqE (Lib.List.take (Z.to_int n) (Lib.List.drop (Z.to_int i) es)) - | _ -> SliceE (e1', e2', e3') - ) $ e.at - | UpdE (e1, p, e2) -> - let e1' = reduce_exp env e1 in - let e2' = reduce_exp env e2 in - reduce_path env e1' p - (fun e' p' -> if p'.it = RootP then e2' else UpdE (e', p', e2') $ e.at) - | ExtE (e1, p, e2) -> - let e1' = reduce_exp env e1 in - let e2' = reduce_exp env e2 in - reduce_path env e1' p - (fun e' p' -> - if p'.it = RootP - then reduce_exp env (SeqE [e'; e2'] $ e.at) - else ExtE (e', p', e2') $ e.at - ) - | StrE efs -> StrE (Convert.map_nl_list (reduce_expfield env) efs) $ e.at - | DotE (e1, atom) -> - let e1' = reduce_exp env e1 in - (match e1'.it with - | StrE efs -> - snd (Option.get (El.Convert.find_nl_list (fun (atomN, _) -> Atom.eq atomN atom) efs)) - | _ -> DotE (e1', atom) $ e.at - ) - | CommaE (e1, e2) -> - let e1' = reduce_exp env e1 in - let e2' = reduce_exp env e2 in - (match e2'.it with - | SeqE ({it = AtomE atom; _} :: es2') -> - let e21' = match es2' with [e21'] -> e21' | _ -> SeqE es2' $ e2.at in - reduce_exp env (CatE (e1', StrE [Elem (atom, e21')] $ e2.at) $ e.at) - | _ -> CommaE (e1', e2') $ e.at - ) - | CatE (e1, e2) -> - let e1' = reduce_exp env e1 in - let e2' = reduce_exp env e2 in - (match e1'.it, e2'.it with - | SeqE es1, SeqE es2 -> SeqE (es1 @ es2) - | SeqE [], _ -> e2'.it - | _, SeqE [] -> e1'.it - | StrE efs1, StrE efs2 -> - let rec merge efs1 efs2 = - match efs1, efs2 with - | [], _ -> efs2 - | _, [] -> efs1 - | Nl::efs1', _ -> merge efs1' efs2 - | _, Nl::efs2' -> merge efs1 efs2' - | Elem (atom1, e1) :: efs1', Elem (atom2, e2) :: efs2' -> - (* Assume that both lists are sorted in same order *) - if Atom.eq atom1 atom2 then - let e' = reduce_exp env (CatE (e1, e2) $ e.at) in - Elem (atom1, e') :: merge efs1' efs2' - else if El.Convert.exists_nl_list (fun (atom, _) -> Atom.eq atom atom2) efs1 then - Elem (atom1, e1) :: merge efs1' efs2 - else - Elem (atom2, e2) :: merge efs1 efs2' - in StrE (merge efs1 efs2) - | _ -> CatE (e1', e2') - ) $ e.at - | MemE (e1, e2) -> - let e1' = reduce_exp env e1 in - let e2' = reduce_exp env e2 in - (match e2'.it with - | SeqE [] -> BoolE false - | SeqE es2' when List.exists (Eq.eq_exp e1') es2' -> BoolE true - | SeqE es2' when is_normal_exp e1' && List.for_all is_normal_exp es2' -> BoolE false - | _ -> MemE (e1', e2') - ) $ e.at - | LenE e1 -> - let e1' = reduce_exp env e1 in - (match e1'.it with - | SeqE es -> NumE (`DecOp, `Nat (Z.of_int (List.length es))) - | _ -> LenE e1' - ) $ e.at - | ParenE e1 | ArithE e1 | TypE (e1, _) -> reduce_exp env e1 - | TupE es -> TupE (List.map (reduce_exp env) es) $ e.at - | InfixE (e1, atom, e2) -> - let e1' = reduce_exp env e1 in - let e2' = reduce_exp env e2 in - InfixE (e1', atom, e2') $ e.at - | BrackE (atom1, e1, atom2) -> - let e1' = reduce_exp env e1 in - BrackE (atom1, e1', atom2) $ e.at - | CallE (id, args) -> - let args' = List.map (reduce_arg env) args in - let clauses = Map.find id.it env.defs in - (* Allow for uninterpreted functions *) - if not !assume_coherent_matches && clauses = [] then CallE (id, args') $ e.at else - (match reduce_exp_call env id args' e.at clauses with - | None -> CallE (id, args') $ e.at - | Some e -> e - ) - | IterE (e1, iter) -> - let e1' = reduce_exp env e1 in - IterE (e1', iter) $ e.at (* TODO(2, rossberg): simplify? *) - | HoleE _ | FuseE _ | UnparenE _ | LatexE _ -> assert false - -and reduce_expfield env (atom, e) : expfield = (atom, reduce_exp env e) - -and reduce_path env e p f = - match p.it with - | RootP -> f e p - | IdxP (p1, e1) -> - let e1' = reduce_exp env e1 in - let f' e' p1' = - match e'.it, e1'.it with - | SeqE es, NumE (_, `Nat i) when i < Z.of_int (List.length es) -> - SeqE (List.mapi (fun j eJ -> if Z.of_int j = i then f eJ p1' else eJ) es) $ e'.at - | _ -> - f e' (IdxP (p1', e1') $ p.at) - in - reduce_path env e p1 f' - | SliceP (p1, e1, e2) -> - let e1' = reduce_exp env e1 in - let e2' = reduce_exp env e2 in - let f' e' p1' = - match e'.it, e1'.it, e2'.it with - | SeqE es, NumE (_, `Nat i), NumE (_, `Nat n) when Z.(i + n) < Z.of_int (List.length es) -> - let e1' = SeqE Lib.List.(take (Z.to_int i) es) $ e'.at in - let e2' = SeqE Lib.List.(take (Z.to_int n) (drop (Z.to_int i) es)) $ e'.at in - let e3' = SeqE Lib.List.(drop Z.(to_int (i + n)) es) $ e'.at in - reduce_exp env (SeqE [e1'; f e2' p1'; e3'] $ e'.at) - | _ -> - f e' (SliceP (p1', e1', e2') $ p.at) - in - reduce_path env e p1 f' - | DotP (p1, atom) -> - let f' e' p1' = - match e'.it with - | StrE efs -> - StrE (Convert.map_nl_list (fun (atomI, eI) -> - if atomI = atom then (atomI, f eI p1') else (atomI, eI)) efs) $ e'.at - | _ -> - f e' (DotP (p1', atom) $ p.at) - in - reduce_path env e p1 f' - -and reduce_arg env a : arg = - match !(a.it) with - | ExpA e -> ref (ExpA (reduce_exp env e)) $ a.at - | TypA _t -> a (* types are reduced on demand *) - | GramA _g -> a - | DefA _id -> a - -and reduce_exp_call env id args at = function - | [] -> - if !assume_coherent_matches then None else - let args = if args = [] then "" else - "(" ^ String.concat ", " (List.map Print.string_of_arg args) ^ ")" in - Error.error at "type" - ("undefined call to partial function: `$" ^ id.it ^ args ^ "`") - | (args', e, prems)::clauses' -> - match match_list match_arg env Subst.empty args args' with - | exception Irred -> - if not !assume_coherent_matches then None else - reduce_exp_call env id args at clauses' - | None -> reduce_exp_call env id args at clauses' - | Some s -> - match reduce_prems env Subst.(subst_list subst_prem s prems) with - | None -> None - | Some false -> reduce_exp_call env id args at clauses' - | Some true -> Some (reduce_exp env (Subst.subst_exp s e)) - -and reduce_prems env = function - | [] -> Some true - | prem::prems -> - match reduce_prem env prem with - | Some true -> reduce_prems env prems - | other -> other - -and reduce_prem env prem : bool option = - match prem.it with - | VarPr _ - | ElsePr -> Some true - | RulePr _ -> None - | IfPr e -> - (match (reduce_exp env e).it with - | BoolE b -> Some b - | _ -> None - ) - | IterPr (_prem, _iter) -> None (* TODO(2, rossberg): implement *) - - -(* Matching *) - -(* Iteration *) - -and match_iter env s iter1 iter2 : subst option = - match iter1, iter2 with - | Opt, Opt -> Some s - | List, List -> Some s - | List1, List1 -> Some s - | ListN (e1, _ido1), ListN (e2, _ido2) -> match_exp env s e1 e2 - | _, _ -> None - - -(* Types *) - -and match_typ env s t1 t2 : subst option = - match t1.it, t2.it with - | ParenT t11, _ -> match_typ env s t11 t2 - | _, ParenT t21 -> match_typ env s t1 t21 - | _, VarT (id, []) when Subst.mem_typid s id -> - match_typ env s t1 (Subst.subst_typ s t2) - | _, VarT (id, []) when not (Map.mem id.it env.typs) -> - (* An unbound type is treated as a pattern variable *) - Some (Subst.add_typid s id t1) - | VarT (id1, args1), VarT (id2, args2) when id1.it = id2.it -> - (* Optimization for the common case where args are absent or equivalent. *) - (match match_list match_arg env s args1 args2 with - | Some s -> Some s - | None -> - (* If that fails, fall back to reduction. *) - let t1' = reduce_typ env t1 in - let t2' = reduce_typ env t2 in - if Eq.(eq_typ t1 t1' && eq_typ t2 t2') then None else - match_typ env s t1' t2' - ) - | VarT _, _ -> - let t1' = reduce_typ env t1 in - if Eq.eq_typ t1 t1' then None else - match_typ env s t1' t2 - | _, VarT _ -> - let t2' = reduce_typ env t2 in - if Eq.eq_typ t2 t2' then None else - match_typ env s t1 t2' - | TupT ts1, TupT ts2 -> match_list match_typ env s ts1 ts2 - | IterT (t11, iter1), IterT (t21, iter2) -> - let* s' = match_typ env s t11 t21 in match_iter env s' iter1 iter2 - | _, _ -> None - - -(* Expressions *) - -(* Matching can produce one of several results: - - Some s: matches producing substitutions - - None: does not match - - exception Irred: lacking normal form, can't decide between Some or None - - exception Error: some inner application was undefined, i.e., non-exhaustive -*) - -and match_exp env s e1 e2 : subst option = - Debug.(log "el.match_exp" - (fun _ -> fmt "%s =: %s" (el_exp e1) (el_exp e2)) - (fun r -> fmt "%s" (opt el_subst r)) - ) @@ fun _ -> - match e1.it, (reduce_exp env (Subst.subst_exp s e2)).it with -(* - | (ParenE e11 | TypE (e11, _)), _ -> match_exp env s e11 e2 - | _, (ParenE e21 | TypE (e21, _)) -> match_exp env s e1 e21 - | _, VarE (id, []) when Subst.mem_varid s id -> - match_exp env s e1 (Subst.subst_exp s e2) - | VarE (id1, args1), VarE (id2, args2) when id1.it = id2.it -> - match_list match_arg env s args1 args2 -*) - | _, VarE (id2, []) when Subst.mem_varid s id2 -> - (* A pattern variable already in the substitution is non-linear *) - let e2' = Subst.subst_exp s e2 in - if equiv_exp env e1 e2' then - Some s - else if is_head_normal_exp e1 && is_head_normal_exp e2' then - None - else - raise Irred - | _, VarE (id2, []) -> - (* Treat as a fresh pattern variable. If declared, need to check domain. *) - let find_var id = - match Map.find_opt id.it env.vars with - | None -> - (* Implicitly bound *) - Map.find_opt (El.Convert.strip_var_suffix id).it env.vars (* TODO(2, rossberg): should be gvars *) - | some -> some - in - if - match Map.find_opt (El.Convert.strip_var_suffix id2).it env.vars (* gvars *) with - | None -> true (* undeclared pattern variable always matches *) - | Some t2 -> - let t2' = reduce_typ env t2 in - match e1.it, t2'.it with - | BoolE _, BoolT - | TextE _, TextT -> true - | NumE (_, n), NumT t -> t >= Num.to_typ (Num.narrow n) - | UnE ((`MinusOp | `PlusOp), _), NumT t1 -> t1 >= `IntT - | NumE (_, `Nat n), RangeT tes -> - List.exists (function - | ({it = NumE (_, `Nat n1); _}, None) -> n1 = n - | ({it = NumE (_, `Nat n1); _}, Some {it = NumE (_, `Nat n2); _}) -> n1 <= n && n <= n2 - | _ -> false - ) (Convert.filter_nl tes) - | (AtomE atom | SeqE ({it = AtomE atom; _}::_)), CaseT (_, _, tcs, _) -> - (match El.Convert.find_nl_list (fun (atomN, _, _) -> atomN.it = atom.it) tcs with - | Some (_, (tN, _), _) -> - match_exp env s e1 (Convert.exp_of_typ tN) <> None - | None -> false - ) - | VarE (id1, []), _ -> - (match find_var id1 with - | None -> raise Irred - | Some t1 -> sub_typ env t1 t2' || - if disj_typ env t1 t2' then false else raise Irred - ) - | _, (StrT _ | CaseT _ | ConT _ | RangeT _) -> raise Irred - | _, _ -> true - then - if id2.it = "_" then Some s else - Some (Subst.add_varid s id2 e1) - else None - | AtomE atom1, AtomE atom2 when atom1.it = atom2.it -> Some s - | BoolE b1, BoolE b2 when b1 = b2 -> Some s - | NumE (_, n1), NumE (_, n2) when n1 = n2 -> Some s - | TextE s1, TextE s2 when s1 = s2 -> Some s - | NumE (_, n1), UnE (`PlusOp, e21) when not (Num.is_neg n1) -> - match_exp env s e1 e21 - | NumE (numop, n1), UnE (`MinusOp, e21) when Num.is_neg n1 -> - match_exp env s (reduce_exp env {e1 with it = NumE (numop, Num.abs n1)}) e21 - | NumE (_, n1), UnE (#signop as op, _) -> - let pm, mp = - if Num.is_neg n1 = (op = `MinusPlusOp) - then `PlusOp, `MinusOp else `MinusOp, `PlusOp - in - match_exp env - (Subst.add_unop (Subst.add_unop s `PlusMinusOp pm) `MinusPlusOp mp) e1 e2 -(* - | UnE (op1, e11), UnE (op2, e21) when op1 = op2 -> match_exp env s e11 e21 - | BinE (e11, op1, e12), BinE (e21, op2, e22) when op1 = op2 -> - let* s' = match_exp env s e11 e21 in match_exp env s' e12 e22 - | CmpE (e11, op1, e12), CmpE (e21, op2, e22) when op1 = op2 -> - let* s' = match_exp env s e11 e21 in match_exp env s' e12 e22 - | (EpsE | SeqE []), (EpsE | SeqE []) -> Some s -*) - | SeqE es1, SeqE es2 - | TupE es1, TupE es2 -> match_list match_exp env s es1 es2 -(* - | IdxE (e11, e12), IdxE (e21, e22) - | CommaE (e11, e12), CommaE (e21, e22) - | CatE (e11, e12), CatE (e21, e22) -> - let* s' = match_exp env s e11 e21 in match_exp env s' e12 e22 - | SliceE (e11, e12, e13), SliceE (e21, e22, e23) -> - let* s' = match_exp env s e11 e21 in - let* s'' = match_exp env s' e12 e22 in - match_exp env s'' e13 e23 - | UpdE (e11, p1, e12), UpdE (e21, p2, e22) - | ExtE (e11, p1, e12), ExtE (e21, p2, e22) -> - let* s' = match_exp env s e11 e21 in - let* s'' = match_path env s' p1 p2 in - match_exp env s'' e12 e22 -*) - | StrE efs1, StrE efs2 -> match_nl_list match_expfield env s efs1 efs2 -(* - | DotE (e11, atom1), DotE (e21, atom2) when atom1 = atom2 -> - match_exp env s e11 e21 - | LenE e11, LenE e21 -> match_exp env s e11 e21 - | SizeE id1, SizeE id2 when id1.it = id2.it -> Some s -*) - | InfixE (e11, atom1, e12), InfixE (e21, atom2, e22) when atom1 = atom2 -> - let* s' = match_exp env s e11 e21 in match_exp env s' e12 e22 - | BrackE (atom11, e11, atom12), BrackE (atom21, e21, atom22) - when atom11 = atom21 && atom12 = atom22 -> - match_exp env s e11 e21 -(* - | CallE (id1, args1), CallE (id2, args2) when id1.it = id2.it -> - match_list match_arg env s args1 args2 -*) - | IterE (e11, iter1), IterE (e21, iter2) -> - let* s' = match_exp env s e11 e21 in match_iter env s' iter1 iter2 - | (HoleE _ | FuseE _ | UnparenE _), _ - | _, (HoleE _ | FuseE _ | UnparenE _) -> assert false - | _, _ when is_head_normal_exp e1 -> None - | _, _ -> raise Irred - -and match_expfield env s (atom1, e1) (atom2, e2) = - if atom1 <> atom2 then None else - match_exp env s e1 e2 - -(* -and match_path env s p1 p2 = - match p1.it, p2.it with - | RootP, RootP -> Some s - | IdxP (p11, e1), IdxP (p21, e2) -> - let* s' = match_path env s p11 p21 in - match_exp env s' e1 e2 - | SliceP (p11, e11, e12), SliceP (p21, e21, e22) -> - let* s' = match_path env s p11 p21 in - let* s'' = match_exp env s' e11 e21 in - match_exp env s'' e12 e22 - | DotP (p11, atom1), DotP (p21, atom2) when atom1 = atom2 -> - match_path env s p11 p21 - | _, _ -> None -*) - - -(* Grammars *) - -and match_sym env s g1 g2 : subst option = - Debug.(log "el.match_sym" - (fun _ -> fmt "%s =: %s" (el_sym g1) (el_sym g2)) - (fun r -> fmt "%s" (opt el_subst r)) - ) @@ fun _ -> - match g1.it, g2.it with - | ParenG g11, _ -> match_sym env s g11 g2 - | _, ParenG g21 -> match_sym env s g1 g21 - | _, VarG (id, []) when Subst.mem_gramid s id -> - match_sym env s g1 (Subst.subst_sym s g2) - | _, VarG (id, []) when not (Map.mem id.it env.grams) -> - (* An unbound id is treated as a pattern variable *) - Some (Subst.add_gramid s id g1) - | VarG (id1, args1), VarG (id2, args2) when id1.it = id2.it -> - match_list match_arg env s args1 args2 - | TupG gs1, TupG gs2 -> match_list match_sym env s gs1 gs2 - | IterG (g11, iter1), IterG (g21, iter2) -> - let* s' = match_sym env s g11 g21 in match_iter env s' iter1 iter2 - | _, _ -> None - - -(* Parameters *) - -and match_arg env s a1 a2 : subst option = - Debug.(log "el.match_arg" - (fun _ -> fmt "%s =: %s" (el_arg a1) (el_arg a2)) - (fun r -> fmt "%s" (opt el_subst r)) - ) @@ fun _ -> - match !(a1.it), !(a2.it) with - | ExpA e1, ExpA e2 -> match_exp env s e1 e2 - | TypA t1, TypA t2 -> match_typ env s t1 t2 - | GramA g1, GramA g2 -> match_sym env s g1 g2 - | DefA id1, DefA id2 -> - if id2.it = "_" then Some s else - Some (Subst.add_defid s id2 id1) - | _, _ -> assert false - - -(* Type Equivalence *) - -and equiv_typ env t1 t2 = - Debug.(log "el.equiv_typ" - (fun _ -> fmt "%s == %s" (el_typ t1) (el_typ t2)) Bool.to_string - ) @@ fun _ -> - match t1.it, t2.it with - | VarT (id1, args1), VarT (id2, args2) -> - (El.Convert.strip_var_suffix id1).it = (El.Convert.strip_var_suffix id2).it && - equiv_list equiv_arg env args1 args2 || (* optimization *) - let t1' = reduce_typ env t1 in - let t2' = reduce_typ env t2 in - (t1' <> t1 || t2' <> t2) && equiv_typ env t1' t2' - | VarT _, _ -> - let t1' = reduce_typ env t1 in - t1' <> t1 && equiv_typ env t1' t2 - | _, VarT _ -> - let t2' = reduce_typ env t2 in - t2' <> t2 && equiv_typ env t1 t2' - | ParenT t11, _ -> equiv_typ env t11 t2 - | _, ParenT t21 -> equiv_typ env t1 t21 - | TupT ts1, TupT ts2 | SeqT ts1, SeqT ts2 -> equiv_list equiv_typ env ts1 ts2 - | IterT (t11, iter1), IterT (t21, iter2) -> - equiv_typ env t11 t21 && Eq.eq_iter iter1 iter2 - | AtomT atom1, AtomT atom2 -> atom1.it = atom2.it - | InfixT (t11, atom1, t12), InfixT (t21, atom2, t22) -> - equiv_typ env t11 t21 && atom1.it = atom2.it && equiv_typ env t12 t22 - | BrackT (atom11, t11, atom12), BrackT (atom21, t21, atom22) -> - atom11.it = atom21.it && equiv_typ env t11 t21 && atom12 = atom22 - | StrT (NoDots, [], tfs1, NoDots), StrT (NoDots, [], tfs2, NoDots) -> - equiv_nl_list equiv_typfield env tfs1 tfs2 - | CaseT (NoDots, [], tcs1, NoDots), CaseT (NoDots, [], tcs2, NoDots) -> - equiv_nl_list equiv_typcase env tcs1 tcs2 - | ConT tc1, ConT tc2 -> equiv_typcon env tc1 tc2 - | RangeT tes1, RangeT tes2 -> equiv_nl_list equiv_typenum env tes1 tes2 - | _, _ -> t1.it = t2.it - -and equiv_typfield env (atom1, (t1, prems1), _) (atom2, (t2, prems2), _) = - atom1.it = atom2.it && equiv_typ env t1 t2 && Eq.(eq_nl_list eq_prem prems1 prems2) -and equiv_typcase env (atom1, (t1, prems1), _) (atom2, (t2, prems2), _) = - atom1.it = atom2.it && equiv_typ env t1 t2 && Eq.(eq_nl_list eq_prem prems1 prems2) -and equiv_typcon env ((t1, prems1), _) ((t2, prems2), _) = - equiv_typ env t1 t2 && Eq.(eq_nl_list eq_prem prems1 prems2) -and equiv_typenum env (e11, e12o) (e21, e22o) = - equiv_exp env e11 e21 && equiv_opt equiv_exp env e12o e22o - -and equiv_exp env e1 e2 = - Debug.(log "el.equiv_exp" - (fun _ -> fmt "%s == %s" (el_exp e1) (el_exp e2)) Bool.to_string - ) @@ fun _ -> - (* TODO(3, rossberg): this does not reduce inner type arguments *) - Eq.eq_exp (reduce_exp env e1) (reduce_exp env e2) - -and equiv_arg env a1 a2 = - Debug.(log "el.equiv_arg" - (fun _ -> fmt "%s == %s" (el_arg a1) (el_arg a2)) Bool.to_string - ) @@ fun _ -> - match !(a1.it), !(a2.it) with - | ExpA e1, ExpA e2 -> equiv_exp env e1 e2 - | TypA t1, TypA t2 -> equiv_typ env t1 t2 - | GramA g1, GramA g2 -> Eq.eq_sym g1 g2 - | DefA id1, DefA id2 -> id1.it = id2.it - | _, _ -> false - - -and equiv_functyp env (ps1, t1) (ps2, t2) = - List.length ps1 = List.length ps2 && - match equiv_params env ps1 ps2 with - | None -> false - | Some s -> equiv_typ env t1 (Subst.subst_typ s t2) - -and equiv_params env ps1 ps2 = - List.fold_left2 (fun s_opt p1 p2 -> - let* s = s_opt in - match p1.it, (Subst.subst_param s p2).it with - | ExpP (id1, t1), ExpP (id2, t2) -> - if not (equiv_typ env t1 t2) then None else - Some (Subst.add_varid s id2 (VarE (id1, []) $ p1.at)) - | TypP _, TypP _ -> Some s - | GramP (id1, ps1, t1), GramP (id2, ps2, t2) -> - if not (equiv_functyp env (ps1, t1) (ps2, t2)) then None else - Some (Subst.add_gramid s id2 (VarG (id1, []) $ p1.at)) - | DefP (id1, ps1, t1), DefP (id2, ps2, t2) -> - if not (equiv_functyp env (ps1, t1) (ps2, t2)) then None else - Some (Subst.add_defid s id2 id1) - | _, _ -> None - ) (Some Subst.empty) ps1 ps2 - - -(* Subtyping *) - -and sub_prems _env prems1 prems2 = - Debug.(log "el.sub_prems" - (fun _ -> fmt "%s <: %s" (nl_list el_prem prems1) (nl_list el_prem prems2)) - Bool.to_string - ) @@ fun _ -> - let open Convert in - forall_nl_list (fun prem2 -> exists_nl_list (Eq.eq_prem prem2) prems1) prems2 - -and sub_typ env t1 t2 = - Debug.(log "el.sub_typ" - (fun _ -> fmt "%s <: %s" (el_typ t1) (el_typ t2)) Bool.to_string - ) @@ fun _ -> - let t1 = reduce_typ env t1 in - let t2 = reduce_typ env t2 in - match t1.it, t2.it with -(*| NumT nt1, NumT nt2 -> Num.sub nt1 nt2*) - | StrT (NoDots, [], tfs1, NoDots), StrT (NoDots, [], tfs2, NoDots) -> - El.Convert.forall_nl_list (fun (atom, (t2, prems2), _) -> - match find_field tfs1 atom with - | Some (t1, prems1) -> - equiv_typ env t1 t2 && sub_prems env prems1 prems2 - | None -> false - ) tfs2 - | CaseT (NoDots, [], tcs1, NoDots), CaseT (NoDots, [], tcs2, NoDots) -> - El.Convert.forall_nl_list (fun (atom, (t1, prems1), _) -> - match find_case tcs2 atom with - | Some (t2, prems2) -> - equiv_typ env t1 t2 && sub_prems env prems1 prems2 - | None -> false - ) tcs1 - | ConT ((t11, prems1), _), ConT ((t21, prems2), _) -> - sub_typ env t11 t21 && sub_prems env prems1 prems2 || - equiv_typ env t1 t2 -(* - | ConT ((t11, _), _), _ -> sub_typ env t11 t2 - | _, ConT ((t21, _), _) -> sub_typ env t1 t21 - | RangeT [], NumT _ -> true - | RangeT (Elem (e1, _)::tes1), NumT t2' -> - (match (reduce_exp env e1).it with - | NumE _ -> true - | UnE (`MinusOp, _) -> t2' <= `IntT - | _ -> assert false - ) && sub_typ env (RangeT tes1 $ t1.at) t2 - | NumT _, RangeT [] -> true - | NumT t1', RangeT (Elem (e2, _)::tes2) -> - (match (reduce_exp env e2).it with - | NumE (_, `Nat _) -> t1' = `NatT - | UnE (`MinusOp, _) -> true - | _ -> assert false - ) && sub_typ env t1 (RangeT tes2 $ t2.at) -*) - | TupT ts1, TupT ts2 - | SeqT ts1, SeqT ts2 -> - List.length ts1 = List.length ts2 && List.for_all2 (sub_typ env) ts1 ts2 - | _, _ -> equiv_typ env t1 t2 - -and find_field tfs atom = - El.Convert.find_nl_list (fun (atom', _, _) -> atom'.it = atom.it) tfs - |> Option.map Lib.snd3 - -and find_case tcs atom = - El.Convert.find_nl_list (fun (atom', _, _) -> atom'.it = atom.it) tcs - |> Option.map Lib.snd3 - - -(* Type Disjointness *) - -and disj_typ env t1 t2 = - Debug.(log "el.disj_typ" - (fun _ -> fmt "%s ## %s" (el_typ t1) (el_typ t2)) Bool.to_string - ) @@ fun _ -> - match t1.it, t2.it with - | VarT (id1, args1), VarT (id2, args2) -> - let t1' = reduce_typ env t1 in - let t2' = reduce_typ env t2 in - if t1' <> t1 || t2' <> t2 then - disj_typ env t1' t2' - else - (El.Convert.strip_var_suffix id1).it <> (El.Convert.strip_var_suffix id2).it || - disj_list disj_arg env args1 args2 - | VarT _, _ -> - let t1' = reduce_typ env t1 in - t1' <> t1 && disj_typ env t1' t2 - | _, VarT _ -> - let t2' = reduce_typ env t2 in - t2' <> t2 && disj_typ env t1 t2' - | ParenT t11, _ -> disj_typ env t11 t2 - | _, ParenT t21 -> disj_typ env t1 t21 - | TupT ts1, TupT ts2 | SeqT ts1, SeqT ts2 -> disj_list disj_typ env ts1 ts2 - | IterT (t11, iter1), IterT (t21, iter2) -> - disj_typ env t11 t21 || not (Eq.eq_iter iter1 iter2) - | AtomT atom1, AtomT atom2 -> atom1.it <> atom2.it - | InfixT (t11, atom1, t12), InfixT (t21, atom2, t22) -> - disj_typ env t11 t21 || atom1.it <> atom2.it || disj_typ env t12 t22 - | BrackT (atom11, t11, atom12), BrackT (atom21, t21, atom22) -> - atom11.it <> atom21.it || disj_typ env t11 t21 || atom12 = atom22 - | StrT (NoDots, [], tfs1, NoDots), StrT (NoDots, [], tfs2, NoDots) -> - unordered (atoms tfs1) (atoms tfs2) || - El.Convert.exists_nl_list (fun (atom, (t2, _prems2), _) -> - match find_field tfs1 atom with - | Some (t1, _prems1) -> disj_typ env t1 t2 - | None -> true - ) tfs2 - | CaseT (NoDots, [], tcs1, NoDots), CaseT (NoDots, [], tcs2, NoDots) -> - Set.disjoint (atoms tcs1) (atoms tcs2) || - El.Convert.exists_nl_list (fun (atom, (t1, _prems1), _) -> - match find_case tcs2 atom with - | Some (t2, _prems2) -> disj_typ env t1 t2 - | None -> false - ) tcs1 - | ConT ((t11, _), _), ConT ((t21, _), _) -> disj_typ env t11 t21 - | RangeT _, RangeT _ -> false (* approximation *) - | _, _ -> t1.it <> t2.it - -and narrow_typ env t1 t2 = - Debug.(log "el.narrow_typ" - (fun _ -> fmt "%s <: %s" (el_typ t1) (el_typ t2)) Bool.to_string - ) @@ fun _ -> - let t1 = reduce_typ env t1 in - let t2 = reduce_typ env t2 in - match t1.it, t2.it with - | NumT nt1, NumT nt2 -> Num.sub nt1 nt2 - | _, _ -> equiv_typ env t1 t2 - -and atoms xs = - Set.of_list (List.map Print.string_of_atom - (El.Convert.map_filter_nl_list Lib.fst3 xs)) - -and unordered s1 s2 = not Set.(subset s1 s2 || subset s2 s1) - -and disj_exp env e1 e2 = - (* TODO(3, rossberg): this does not reduce inner type arguments *) - let e1' = reduce_exp env e1 in - let e2' = reduce_exp env e2 in - is_normal_exp e1' && is_normal_exp e2' && not (Eq.eq_exp e1' e2') - -and disj_arg env a1 a2 = - match !(a1.it), !(a2.it) with - | ExpA e1, ExpA e2 -> disj_exp env e1 e2 - | TypA t1, TypA t2 -> disj_typ env t1 t2 - | GramA _, GramA _ -> false - | DefA _, DefA _ -> false - | _, _ -> false diff --git a/spectec/src/frontend/eval.mli b/spectec/src/frontend/eval.mli deleted file mode 100644 index 90baf0eee..000000000 --- a/spectec/src/frontend/eval.mli +++ /dev/null @@ -1,29 +0,0 @@ -open El.Ast - -module Map : module type of Map.Make(String) - -type typ_def = (arg list * typ) list -type def_def = (arg list * exp * prem list) list -type gram_def = unit -type env = {vars : typ Map.t; typs : typ_def Map.t; defs : def_def Map.t; grams : gram_def Map.t} -type subst = El.Subst.t - -val (let*) : subst option -> (subst -> subst option) -> subst option - -val reduce_exp : env -> exp -> exp -val reduce_typ : env -> typ -> typ -val reduce_arg : env -> arg -> arg - -val equiv_functyp : env -> param list * typ -> param list * typ -> bool -val equiv_typ : env -> typ -> typ -> bool -val sub_typ : env -> typ -> typ -> bool -val narrow_typ : env -> typ -> typ -> bool - -val match_iter : env -> subst -> iter -> iter -> subst option -val match_exp : env -> subst -> exp -> exp -> subst option -val match_typ : env -> subst -> typ -> typ -> subst option -val match_arg : env -> subst -> arg -> arg -> subst option - -val match_list : - (env -> subst -> 'a -> 'a -> subst option) -> - env -> subst -> 'a list -> 'a list -> subst option diff --git a/spectec/src/il/valid.ml b/spectec/src/il/valid.ml index 6f057560a..936464d76 100644 --- a/spectec/src/il/valid.ml +++ b/spectec/src/il/valid.ml @@ -85,17 +85,6 @@ let rec as_comp_typ phrase env dir t at = | _ -> error at (phrase ^ "'s type `" ^ string_of_typ t ^ "` is not composable") -(* -let rec inst_tup_typ env s xts : (id * typ) list = - match xts with - | [] -> [] - | (xI, tI)::xts' -> - let xI' = Fresh.refresh_varid xI in - let tI' = Subst.subst_typ s tI in - let s' = Subst.add_varid s xI (VarE xI' $$ xI.at % tI') in - (xI', tI') :: inst_tup_typ env s' xts' -*) - let proj_tup_typ i xts e at = let rec loop i xts s = match i, xts with From 03fc8b0b313dfbbfac0efa98bcf0d31c8dcf2279 Mon Sep 17 00:00:00 2001 From: DJ Date: Thu, 22 Jan 2026 14:14:23 +0900 Subject: [PATCH 019/235] Change mixop of constructed function --- spectec/src/backend-interpreter/construct.ml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spectec/src/backend-interpreter/construct.ml b/spectec/src/backend-interpreter/construct.ml index d5d9538df..488a86b5b 100644 --- a/spectec/src/backend-interpreter/construct.ml +++ b/spectec/src/backend-interpreter/construct.ml @@ -126,7 +126,7 @@ and al_to_comptype: value -> comptype = function | CaseV ("ARRAY", [ ft ]) -> ArrayT (al_to_fieldtype ft) | CaseV ("FUNC", [ CaseV ("->", [ rt1; rt2 ]) ]) when !version <= 2 -> FuncT (al_to_resulttype rt1, (al_to_resulttype rt2)) - | CaseV ("FUNC", [ rt1; rt2 ]) -> + | CaseV ("->", [ rt1; rt2 ]) -> FuncT (al_to_resulttype rt1, (al_to_resulttype rt2)) | v -> error_value "comptype" v @@ -1143,7 +1143,7 @@ and al_of_comptype = function if !version <= 2 then CaseV ("FUNC", [ CaseV ("->", [ al_of_resulttype rt1; al_of_resulttype rt2 ])]) else - CaseV ("FUNC", [ al_of_resulttype rt1; al_of_resulttype rt2 ]) + CaseV ("->", [ al_of_resulttype rt1; al_of_resulttype rt2 ]) and al_of_subtype = function | SubT (fin, tul, st) -> From 30466a72633e06d6b07f05ced31a012903306674 Mon Sep 17 00:00:00 2001 From: DJ Date: Thu, 22 Jan 2026 15:51:13 +0900 Subject: [PATCH 020/235] Handle case where IterE's ListN's itered variable does not appar in the xes --- spectec/src/backend-interpreter/interpreter.ml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/spectec/src/backend-interpreter/interpreter.ml b/spectec/src/backend-interpreter/interpreter.ml index d069883cb..395b048ca 100644 --- a/spectec/src/backend-interpreter/interpreter.ml +++ b/spectec/src/backend-interpreter/interpreter.ml @@ -370,6 +370,12 @@ and eval_expr env expr = raise Exception.OutOfMemory else Array.make i v |> listV + (* HARDCODE: The case where itered variable does not appear in xes. + --> Insert itered variable. This was instroduced due to the change of IrerE's ListN. *) + | IterE (e1, (ListN (e2, Some x), [])) -> + let dummy_expr =VarE "_" $$ no_region % (Il.Ast.VarT ("_" $ no_region, []) $ no_region) in + let expr' = {expr with it = IterE (e1, (ListN (e2, Some x), [(x, dummy_expr)]))} in + eval_expr env expr' | IterE (inner_e, (iter, xes)) -> let vs = env From df6d77e285535aee9fde0b2867a08b5be300e0bb Mon Sep 17 00:00:00 2001 From: DJ Date: Thu, 22 Jan 2026 16:16:53 +0900 Subject: [PATCH 021/235] More adaptation to change of Mixop of comptype (functype) --- spectec/src/backend-interpreter/construct.ml | 13 +++---------- spectec/src/backend-interpreter/host.ml | 2 +- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/spectec/src/backend-interpreter/construct.ml b/spectec/src/backend-interpreter/construct.ml index 488a86b5b..fd5484d89 100644 --- a/spectec/src/backend-interpreter/construct.ml +++ b/spectec/src/backend-interpreter/construct.ml @@ -124,10 +124,7 @@ and al_to_resulttype: value -> resulttype = function and al_to_comptype: value -> comptype = function | CaseV ("STRUCT", [ ftl ]) -> StructT (al_to_list al_to_fieldtype ftl) | CaseV ("ARRAY", [ ft ]) -> ArrayT (al_to_fieldtype ft) - | CaseV ("FUNC", [ CaseV ("->", [ rt1; rt2 ]) ]) when !version <= 2 -> - FuncT (al_to_resulttype rt1, (al_to_resulttype rt2)) - | CaseV ("->", [ rt1; rt2 ]) -> - FuncT (al_to_resulttype rt1, (al_to_resulttype rt2)) + | CaseV ("->", [ rt1; rt2 ]) -> FuncT (al_to_resulttype rt1, (al_to_resulttype rt2)) | v -> error_value "comptype" v and al_to_subtype: value -> subtype = function @@ -1139,11 +1136,7 @@ and al_of_resulttype rt = al_of_list al_of_valtype rt and al_of_comptype = function | StructT ftl -> CaseV ("STRUCT", [ al_of_list al_of_fieldtype ftl ]) | ArrayT ft -> CaseV ("ARRAY", [ al_of_fieldtype ft ]) - | FuncT (rt1, rt2) -> - if !version <= 2 then - CaseV ("FUNC", [ CaseV ("->", [ al_of_resulttype rt1; al_of_resulttype rt2 ])]) - else - CaseV ("->", [ al_of_resulttype rt1; al_of_resulttype rt2 ]) + | FuncT (rt1, rt2) -> CaseV ("->", [ al_of_resulttype rt1; al_of_resulttype rt2 ]) and al_of_subtype = function | SubT (fin, tul, st) -> @@ -1900,7 +1893,7 @@ let al_of_type ty = match subtypes with | [ subtype ] -> - let rt = subtype |> arg_of_case "SUB" 2 |> arg_of_case "FUNC" 0 in + let rt = subtype |> arg_of_case "SUB" 2 in CaseV ("TYPE", [ rt ]) | _ -> failwith ("Rectype is not supported in Wasm " ^ (string_of_int !version)) else diff --git a/spectec/src/backend-interpreter/host.ml b/spectec/src/backend-interpreter/host.ml index fad576a6b..4d59c5d92 100644 --- a/spectec/src/backend-interpreter/host.ml +++ b/spectec/src/backend-interpreter/host.ml @@ -22,7 +22,7 @@ let spectest () = let code = nullary winstr_tag in let ptype = Array.map nullary type_tags in let arrow = CaseV ("->", [ listV ptype; listV [||] ]) in - let ftype = CaseV ("FUNC", [ listV ptype; listV [||] ]) in + let ftype = CaseV ("->", [ listV ptype; listV [||] ]) in let dtype = CaseV ("_DEF", [ CaseV ("REC", [ From d0981034fb61054c2afe00132a71a2e6ca38eb61 Mon Sep 17 00:00:00 2001 From: DJ Date: Thu, 22 Jan 2026 19:28:50 +0900 Subject: [PATCH 022/235] Handle case where IterE's ListN's itered variable does not appear in the xes, during il2al --- spectec/src/backend-interpreter/interpreter.ml | 2 +- spectec/src/il2al/translate.ml | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/spectec/src/backend-interpreter/interpreter.ml b/spectec/src/backend-interpreter/interpreter.ml index 395b048ca..16878b257 100644 --- a/spectec/src/backend-interpreter/interpreter.ml +++ b/spectec/src/backend-interpreter/interpreter.ml @@ -373,7 +373,7 @@ and eval_expr env expr = (* HARDCODE: The case where itered variable does not appear in xes. --> Insert itered variable. This was instroduced due to the change of IrerE's ListN. *) | IterE (e1, (ListN (e2, Some x), [])) -> - let dummy_expr =VarE "_" $$ no_region % (Il.Ast.VarT ("_" $ no_region, []) $ no_region) in + let dummy_expr = VarE "_" $$ no_region % (Il.Ast.VarT ("_" $ no_region, []) $ no_region) in let expr' = {expr with it = IterE (e1, (ListN (e2, Some x), [(x, dummy_expr)]))} in eval_expr env expr' | IterE (inner_e, (iter, xes)) -> diff --git a/spectec/src/il2al/translate.ml b/spectec/src/il2al/translate.ml index e04c6763e..f1719b263 100644 --- a/spectec/src/il2al/translate.ml +++ b/spectec/src/il2al/translate.ml @@ -928,6 +928,15 @@ let rec translate_iterpr pr (iter, xes) = let iter' = translate_iter iter in let lhs_iter = match iter' with | ListN (e, _) -> ListN (e, None) | _ -> iter' in + (* HARDCODE: Handle the case where iterated variable of ListN is not in xes *) + let xes = + match iter with + | ListN (_, Some x) when List.for_all (fun (x', _) -> x.it <> x'.it) xes -> + let dummy_expr = Il.Ast.VarE ("_" $ no_region) $$ no_region % (Il.Ast.VarT ("_" $ no_region, []) $ no_region) in + (x, dummy_expr) :: xes + | _ -> xes + in + let handle_iter_ty ty = match iter' with | Opt -> iterT ty Il.Opt From 97614db32d70f3035ce1151d9307def7429a2554 Mon Sep 17 00:00:00 2001 From: DJ Date: Thu, 22 Jan 2026 19:34:50 +0900 Subject: [PATCH 023/235] Remove obsolte assumption on IterE's xes (that is, at least one variable should exist. This is not necessarily true if Iter is ListN) --- spectec/src/middlend/sideconditions.ml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/spectec/src/middlend/sideconditions.ml b/spectec/src/middlend/sideconditions.ml index 51252340e..7d9c3f114 100644 --- a/spectec/src/middlend/sideconditions.ml +++ b/spectec/src/middlend/sideconditions.ml @@ -32,9 +32,7 @@ let iterPr (pr, (iter, vars)) = let vars' = List.filter (fun (id, _) -> Set.mem id.it frees.varid ) vars in - (* Must keep at least one variable to keep the iteration well-formed *) - let vars'' = if vars' <> [] then vars' else [List.hd vars] in - IterPr (pr, (iter, vars'')) + IterPr (pr, (iter, vars')) let is_null e = CmpE (`EqOp, `BoolT, e, OptE None $$ e.at % e.note) $$ e.at % (BoolT $ e.at) let iffE e1 e2 = IfPr (BinE (`EquivOp, `BoolT, e1, e2) $$ e1.at % (BoolT $ e1.at)) $ e1.at From 0e594900f0d7872fed898dd0f6784aa7bb8233e5 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Mon, 26 Jan 2026 13:19:01 +0100 Subject: [PATCH 024/235] More fixes --- .github/workflows/ci-spectec.yml | 2 +- spectec/src/backend-prose/prose_util.ml | 7 +- spectec/src/backend-prose/render.ml | 3 +- spectec/test-latex/TEST.md | 16 +- spectec/test-middlend/TEST.md | 6386 +++++++++++------------ 5 files changed, 3207 insertions(+), 3207 deletions(-) diff --git a/.github/workflows/ci-spectec.yml b/.github/workflows/ci-spectec.yml index cb56e2fff..e01f2bf2d 100644 --- a/.github/workflows/ci-spectec.yml +++ b/.github/workflows/ci-spectec.yml @@ -21,7 +21,7 @@ jobs: - name: Setup OCaml uses: ocaml/setup-ocaml@v3 with: - ocaml-compiler: 4.14.x + ocaml-compiler: 5.04.x - name: Setup Dune run: opam install --yes dune menhir mdx zarith - name: Setup Latex diff --git a/spectec/src/backend-prose/prose_util.ml b/spectec/src/backend-prose/prose_util.ml index 37e20e051..3cd5e7fa7 100644 --- a/spectec/src/backend-prose/prose_util.ml +++ b/spectec/src/backend-prose/prose_util.ml @@ -256,7 +256,8 @@ let apply_prose_hint hint args = ) template; |> String.concat "" -let mixop_name mixop = "`" ^ Xl.Atom.to_string (Option.get (Xl.Mixop.head mixop)) ^ "`" +let mixop_name mixop default = + Xl.Mixop.head mixop |> Option.map Xl.Atom.to_string |> Option.value ~default let string_of_stack_prefix expr = let open Al.Ast in @@ -265,7 +266,7 @@ let string_of_stack_prefix expr = | VarE ("F" | "L") -> "" | _ when Il.Eq.eq_typ expr.note Al.Al_util.frameT -> "the :ref:`frame `" | CaseE (mixop, _) when Il.Eq.eq_typ expr.note Al.Al_util.evalctxT -> - let evalctx_name = mixop_name mixop + let evalctx_name = mixop_name mixop "context" |> fun s -> String.sub s 0 (String.length s - 1) |> String.lowercase_ascii in Printf.sprintf "the %s" evalctx_name @@ -317,7 +318,7 @@ let find_case_typ s a: El.Ast.typ = let extract_case_hint t mixop = let id1 = Il.Print.string_of_typ t in - let id2 = mixop_name mixop in + let id2 = mixop_name mixop id1 in let id = id1 ^ "." ^ id2 in match Map.find_opt id !(hintenv.prose_hints) with | Some (Some e, _) -> Some e diff --git a/spectec/src/backend-prose/render.ml b/spectec/src/backend-prose/render.ml index 9a6378f7e..3b796bcb4 100644 --- a/spectec/src/backend-prose/render.ml +++ b/spectec/src/backend-prose/render.ml @@ -1112,8 +1112,7 @@ let render_rhs env lhs rhs = sprintf "the result for which %s" (render_expr env eiter) | Al.Ast.IterE (e, (Al.Ast.ListN (ie, Some id), xes)) -> let se = render_expr env e in - let ids = List.map fst xes in - assert (ids = [ id ]); + assert (xes = []); let eid = Al.Al_util.varE id ~note:Al.Al_util.no_note in let sid = render_expr env eid in let elb = Al.Al_util.natE Z.zero ~note:Al.Al_util.no_note in diff --git a/spectec/test-latex/TEST.md b/spectec/test-latex/TEST.md index 6e7984d6f..dc8c45c0d 100644 --- a/spectec/test-latex/TEST.md +++ b/spectec/test-latex/TEST.md @@ -1680,15 +1680,15 @@ $$ $$ \begin{array}[t]{@{}lrrl@{}l@{}} -& {\parentimplicit}(t) & ::= & \PP \\ +& {\parentimplicit}(t) & ::= & \PPimpl \\ & & | & \PPX \\ & & | & \PPYxPPY \\ & & | & \mathsf{ppz} \\ -& & | & \QQQ \\ +& & | & \QQQimpl \\ & & | & \QQQX \\ & & | & \QQQYxQQQY \\ & & | & \mathsf{qqqz} \\ -& & | & {t}{\mathsf{\_}}{\RA}{\RR}~z \\ +& & | & {t}{\mathsf{\_}}{\RAimpl}{\RRimpl}~{\mathit{zimpl}} \\ & & | & {t}{\mathsf{\_}}{\RB}{\RRX}~z \\ & & | & {t}{\mathsf{\_}}{\RCxRC}{\RRYxRRY}~{\mathit{zxz}} \\ & & | & {t}{\mathsf{\_}}{\mathsf{rd}}{\mathsf{rrz}}~z \\ @@ -1737,7 +1737,7 @@ $$ $$ \begin{array}[t]{@{}lrrl@{}l@{}} -& {\family}(0) & ::= & \FF \\ +& {\family}(0) & ::= & \FFfamily \\ & {\family}(1) & ::= & \GGfamily \\ & {\family}(2) & ::= & \xHHy \\ \end{array} @@ -12461,7 +12461,7 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} {\bigoplus}\, \epsilon & = & \{ \} \\ -{\bigoplus}\, I~{I'} & = & I \oplus {\bigoplus}\, {{I'}^\ast} \\ +{\bigoplus}\, I~{{I'}^\ast} & = & I \oplus {\bigoplus}\, {{I'}^\ast} \\ \end{array} $$ @@ -13506,7 +13506,7 @@ $$ (\mathsf{local}~t, \{ \mathsf{locals}~({{\mathit{id}}^?}) \}) \\ \end{array} } \\ -& & | & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{local}’}~~t{:}{{{\mathtt{valtype}}}_{I}^\ast}~~\mbox{‘\texttt{{)}}’} & \quad\equiv\quad{} & {(\mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{local}’}~~t{:}{{\mathtt{valtype}}}_{I}~~\mbox{‘\texttt{{)}}’})^\ast} \\ +& & | & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{local}’}~~{{{\mathtt{valtype}}}_{I}^\ast}~~\mbox{‘\texttt{{)}}’} & \quad\equiv\quad{} & {(\mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{local}’}~~{{\mathtt{valtype}}}_{I}~~\mbox{‘\texttt{{)}}’})^\ast} \\ \end{array} $$ @@ -13556,10 +13556,10 @@ $$ (\mathsf{elem}~{\mathit{rt}}~{e^\ast}~\mathsf{declare}, \{ \mathsf{elems}~({{\mathit{id}}^?}) \}) \\ \end{array} } \\ -& & | & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{elem}’}~~{e'}{:}{{\mathtt{offset}}}_{I}~~{\mathtt{list}}({{\mathtt{funcidx}}}_{I})~~\mbox{‘\texttt{{)}}’} & \quad\equiv\quad{} & & \\ +& & | & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{elem}’}~~{{\mathtt{offset}}}_{I}~~{\mathtt{list}}({{\mathtt{funcidx}}}_{I})~~\mbox{‘\texttt{{)}}’} & \quad\equiv\quad{} & & \\ &&& \multicolumn{4}{@{}l@{}}{\quad \begin{array}[t]{@{}l@{}} -\mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{elem}’}~~{e'}{:}{{\mathtt{offset}}}_{I}~~\mbox{‘\texttt{func}’}~~{\mathtt{list}}({{\mathtt{funcidx}}}_{I})~~\mbox{‘\texttt{{)}}’} \\ +\mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{elem}’}~~{{\mathtt{offset}}}_{I}~~\mbox{‘\texttt{func}’}~~{\mathtt{list}}({{\mathtt{funcidx}}}_{I})~~\mbox{‘\texttt{{)}}’} \\ \end{array} } \\ & {{\mathtt{elemlist}}}_{I} & ::= & {\mathit{rt}}{:}{{\mathtt{reftype}}}_{I}~~{e^\ast}{:}{\mathtt{list}}({{\mathtt{expr}}}_{I}) & \quad\Rightarrow\quad{} & ({\mathit{rt}}, {e^\ast}) \\ diff --git a/spectec/test-middlend/TEST.md b/spectec/test-middlend/TEST.md index cd32d52db..a5e02fd44 100644 --- a/spectec/test-middlend/TEST.md +++ b/spectec/test-middlend/TEST.md @@ -77,7 +77,7 @@ 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) + def $concatn_{syntax X, n : n, `w*` : X*, `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 @@ -168,22 +168,22 @@ def $ND : bool ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax bit = - | `%`{i : nat}(i : nat) + | `%`(i : nat) -- if ((i = 0) \/ (i = 1)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax byte = - | `%`{i : nat}(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) + | `%`(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) + | `%`(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 @@ -245,18 +245,18 @@ 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) + | NORM(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) + | SUBNORM(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)) | INF - | NAN{m : m}(m : m) + | NAN(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)) + | POS(fNmag(N)) + | NEG(fNmag(N)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax f32 = fN(32) @@ -292,12 +292,12 @@ 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*) + | `%`(`X*` : X*) -- if (|X*{X <- `X*`}| < (2 ^ 32)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax char = - | `%`{i : nat}(i : nat) + | `%`(i : nat) -- if (((i >= 0) /\ (i <= 55295)) \/ ((i >= 57344) /\ (i <= 1114111))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec @@ -333,7 +333,7 @@ def $utf8(char*) : byte* ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax name = - | `%`{`char*` : char*}(char*{char <- `char*`} : char*) + | `%`(`char*` : char*) -- if (|$utf8(char*{char <- `char*`})| < (2 ^ 32)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -377,11 +377,11 @@ 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) + | FUNC(funcidx : funcidx) + | GLOBAL(globalidx : globalidx) + | TABLE(tableidx : tableidx) + | MEM(memidx : memidx) + | TAG(tagidx : tagidx) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { @@ -456,15 +456,15 @@ def $tagsxx(externidx*) : tagidx* ;; ../../../../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* + TYPES typeidx*, + FUNCS funcidx*, + GLOBALS globalidx*, + TABLES tableidx*, + MEMS memidx*, + ELEMS elemidx*, + DATAS dataidx*, + LOCALS localidx*, + LABELS labelidx* } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -598,9 +598,9 @@ 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) + | _IDX(typeidx : typeidx) + | _DEF(rectype : rectype, n : n) + | REC(n : n) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.1-44.26 syntax heaptype = @@ -617,9 +617,9 @@ syntax heaptype = | EXTERN | NOEXTERN | BOT - | _IDX{typeidx : typeidx}(typeidx : typeidx) - | REC{n : n}(n : n) - | _DEF{rectype : rectype, n : n}(rectype : rectype, n : n) + | _IDX(typeidx : typeidx) + | _DEF(rectype : rectype, n : n) + | REC(n : n) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.1-52.14 syntax valtype = @@ -628,18 +628,18 @@ syntax valtype = | F32 | F64 | V128 - | REF{`null?` : null?, heaptype : heaptype}(null?{null <- `null?`} : null?, heaptype : heaptype) + | REF(`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) + | REF(`null?` : null?, heaptype : heaptype) + | BOT | I8 | I16 @@ -648,35 +648,35 @@ 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) + | `%%`(`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) + | STRUCT(list(syntax fieldtype)) + | ARRAY(fieldtype : fieldtype) + | `FUNC%->%`(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) + | SUB(`final?` : final?, `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)) + | REC(list(syntax subtype)) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax deftype = - | _DEF{rectype : rectype, n : n}(rectype : rectype, n : n) + | _DEF(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) + | _IDX(typeidx : typeidx) + | REC(n : n) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax reftype = - | REF{`null?` : null?, heaptype : heaptype}(null?{null <- `null?`} : null?, heaptype : heaptype) + | REF(`null?` : null?, heaptype : heaptype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax Inn = @@ -795,22 +795,22 @@ syntax Lnn = ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax limits = - | `[%..%]`{u64 : u64}(u64 : u64, 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) + | `%%`(`mut?` : mut?, valtype : valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax memtype = - | `%%PAGE`{addrtype : addrtype, limits : limits}(addrtype : addrtype, limits : limits) + | `%%PAGE`(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) + | `%%%`(addrtype : addrtype, limits : limits, reftype : reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax datatype = @@ -821,15 +821,15 @@ 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) + | TAG(tagtype : tagtype) + | GLOBAL(globaltype : globaltype) + | MEM(memtype : memtype) + | TABLE(tabletype : tabletype) + | FUNC(typeuse : typeuse) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax moduletype = - | `%->%`{`externtype*` : externtype*}(externtype*{externtype <- `externtype*`} : externtype*, externtype*) + | `%->%`(`externtype*` : externtype*, `externtype*` : externtype*) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $IN(N : N) : Inn @@ -1273,47 +1273,47 @@ def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype ;; ../../../../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 $sizenn2((Inn_2 : Inn <: numtype))) @@ -1668,15 +1668,15 @@ syntax cvtop__(numtype_1 : numtype, numtype_2 : numtype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax cvtop__{Inn_1 : Inn, Fnn_2 : Fnn}((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype)) = - | CONVERT{sx : sx}(sx : sx) + | CONVERT(sx : sx) | REINTERPRET -- if ($sizenn1((Inn_1 : Inn <: 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 : Inn <: numtype)) = - | TRUNC{sx : sx}(sx : sx) - | TRUNC_SAT{sx : sx}(sx : sx) + | TRUNC(sx : sx) + | TRUNC_SAT(sx : sx) | REINTERPRET -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) = $sizenn2((Inn_2 : Inn <: numtype))) @@ -1691,12 +1691,12 @@ syntax cvtop__(numtype_1 : numtype, numtype_2 : numtype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax dim = - | `%`{i : nat}(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) + | `%X%`(lanetype : lanetype, dim : dim) -- if (($lsize(lanetype) * dim!`%`_dim.0) = 128) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -1716,12 +1716,12 @@ def $unpackshape(shape : shape) : numtype ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax ishape = - | `%`{shape : shape, Jnn : Jnn}(shape : shape) + | `%`(shape : shape) {Jnn : Jnn} -- if ($lanetype(shape) = (Jnn : Jnn <: lanetype)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax bshape = - | `%`{shape : shape}(shape : shape) + | `%`(shape : shape) -- if ($lanetype(shape) = I8_lanetype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -1779,21 +1779,21 @@ syntax vbinop_(shape : shape) syntax vbinop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = | ADD | SUB - | ADD_SAT{sx : sx}(sx : sx) + | ADD_SAT(sx : sx) -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) - | SUB_SAT{sx : sx}(sx : sx) + | SUB_SAT(sx : sx) -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) | MUL -- if ($lsizenn((Jnn : Jnn <: lanetype)) >= 16) - | `AVGRU` + | AVGRU -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) - | `Q15MULR_SATS` + | Q15MULR_SATS -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 16) - | `RELAXED_Q15MULRS` + | RELAXED_Q15MULRS -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 16) - | MIN{sx : sx}(sx : sx) + | MIN(sx : sx) -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 32) - | MAX{sx : sx}(sx : sx) + | MAX(sx : sx) -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 32) @@ -1834,13 +1834,13 @@ syntax vrelop_(shape : shape) syntax vrelop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = | EQ | NE - | LT{sx : sx}(sx : sx) + | LT(sx : sx) -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) - | GT{sx : sx}(sx : sx) + | GT(sx : sx) -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) - | LE{sx : sx}(sx : sx) + | LE(sx : sx) -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) - | GE{sx : sx}(sx : sx) + | GE(sx : sx) -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) @@ -1857,7 +1857,7 @@ syntax vrelop_(shape : shape) ;; ../../../../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) + | SHR(sx : sx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vswizzlop_{M : M}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M)))) = @@ -1866,82 +1866,82 @@ syntax vswizzlop_{M : M}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M)))) = ;; ../../../../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) + | EXTADD_PAIRWISE(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) + | EXTMUL(half : half, sx : sx) -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) >= 16)) - | `DOTS` + | DOTS -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) - | `RELAXED_DOTS` + | 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` + | 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) + | EXTEND(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) + | CONVERT(`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?) + | TRUNC_SAT(sx : sx, `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?) + | RELAXED_TRUNC(sx : sx, `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) + | DEMOTE(zero : zero) -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $sizenn2((Fnn_2 : Fnn <: numtype)))) - | `PROMOTELOW` + | 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 + ALIGN u32, + OFFSET u64 } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax loadop_{Inn : Inn}((Inn : Inn <: numtype)) = - | `%_%`{sz : sz, sx : sx}(sz : sz, sx : sx) + | `%_%`(sz : sz, sx : sx) -- if (sz!`%`_sz.0 < $sizenn((Inn : Inn <: numtype))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax storeop_{Inn : Inn}((Inn : Inn <: numtype)) = - | `%`{sz : sz}(sz : sz) + | `%`(sz : sz) -- if (sz!`%`_sz.0 < $sizenn((Inn : Inn <: 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) + | `SHAPE%X%_%`(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) + | SPLAT(sz : sz) + | ZERO(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) + | _RESULT(`valtype?` : valtype?) + | _IDX(typeidx : typeidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax addr = nat @@ -1966,21 +1966,21 @@ 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) + | `REF.I31_NUM`(u31 : u31) + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `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) + | CATCH(tagidx : tagidx, labelidx : labelidx) + | CATCH_REF(tagidx : tagidx, labelidx : labelidx) + | CATCH_ALL(labelidx : labelidx) + | CATCH_ALL_REF(labelidx : labelidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax dataaddr = addr @@ -2002,51 +2002,51 @@ 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) + | TAG(tagaddr : tagaddr) + | GLOBAL(globaladdr : globaladdr) + | MEM(memaddr : memaddr) + | TABLE(tableaddr : tableaddr) + | FUNC(funcaddr : funcaddr) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax exportinst = { - NAME{name : name} name, - ADDR{externaddr : externaddr} externaddr + NAME name, + ADDR 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* + TYPES deftype*, + TAGS tagaddr*, + GLOBALS globaladdr*, + MEMS memaddr*, + TABLES tableaddr*, + FUNCS funcaddr*, + DATAS dataaddr*, + ELEMS elemaddr*, + EXPORTS 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) + | CONST(numtype : numtype, num_(numtype)) + | VCONST(vectype : vectype, vec_(vectype)) + | `REF.I31_NUM`(u31 : u31) + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(addrref : addrref) + | `REF.NULL`(heaptype : heaptype) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax frame = { - LOCALS{`val?*` : val?*} val?*, - MODULE{moduleinst : moduleinst} moduleinst + LOCALS val?*, + MODULE moduleinst } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -2057,120 +2057,120 @@ 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) + | SELECT(`valtype*?` : valtype*?) + | BLOCK(blocktype : blocktype, `instr*` : instr*) + | LOOP(blocktype : blocktype, `instr*` : instr*) + | `IF%%ELSE%`(blocktype : blocktype, `instr*` : instr*, `instr*` : instr*) + | BR(labelidx : labelidx) + | BR_IF(labelidx : labelidx) + | BR_TABLE(`labelidx*` : labelidx*, labelidx : labelidx) + | BR_ON_NULL(labelidx : labelidx) + | BR_ON_NON_NULL(labelidx : labelidx) + | BR_ON_CAST(labelidx : labelidx, reftype : reftype, reftype : reftype) + | BR_ON_CAST_FAIL(labelidx : labelidx, reftype : reftype, reftype : reftype) + | CALL(funcidx : funcidx) + | CALL_REF(typeuse : typeuse) + | CALL_INDIRECT(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) + | RETURN_CALL(funcidx : funcidx) + | RETURN_CALL_REF(typeuse : typeuse) + | RETURN_CALL_INDIRECT(tableidx : tableidx, typeuse : typeuse) + | THROW(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*) + | TRY_TABLE(blocktype : blocktype, list(syntax catch), `instr*` : instr*) + | `LOCAL.GET`(localidx : localidx) + | `LOCAL.SET`(localidx : localidx) + | `LOCAL.TEE`(localidx : localidx) + | `GLOBAL.GET`(globalidx : globalidx) + | `GLOBAL.SET`(globalidx : globalidx) + | `TABLE.GET`(tableidx : tableidx) + | `TABLE.SET`(tableidx : tableidx) + | `TABLE.SIZE`(tableidx : tableidx) + | `TABLE.GROW`(tableidx : tableidx) + | `TABLE.FILL`(tableidx : tableidx) + | `TABLE.COPY`(tableidx : tableidx, tableidx : tableidx) + | `TABLE.INIT`(tableidx : tableidx, elemidx : elemidx) + | `ELEM.DROP`(elemidx : elemidx) + | LOAD(numtype : numtype, loadop_(numtype)?, memidx : memidx, memarg : memarg) + | STORE(numtype : numtype, storeop_(numtype)?, memidx : memidx, memarg : memarg) + | VLOAD(vectype : vectype, vloadop_(vectype)?, memidx : memidx, memarg : memarg) + | VLOAD_LANE(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | VSTORE(vectype : vectype, memidx : memidx, memarg : memarg) + | VSTORE_LANE(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | `MEMORY.SIZE`(memidx : memidx) + | `MEMORY.GROW`(memidx : memidx) + | `MEMORY.FILL`(memidx : memidx) + | `MEMORY.COPY`(memidx : memidx, memidx : memidx) + | `MEMORY.INIT`(memidx : memidx, dataidx : dataidx) + | `DATA.DROP`(dataidx : dataidx) + | `REF.NULL`(heaptype : heaptype) + | `REF.IS_NULL` + | `REF.AS_NON_NULL` + | `REF.EQ` + | `REF.TEST`(reftype : reftype) + | `REF.CAST`(reftype : reftype) + | `REF.FUNC`(funcidx : funcidx) + | `REF.I31` + | `I31.GET`(sx : sx) + | `STRUCT.NEW`(typeidx : typeidx) + | `STRUCT.NEW_DEFAULT`(typeidx : typeidx) + | `STRUCT.GET`(`sx?` : sx?, typeidx : typeidx, u32 : u32) + | `STRUCT.SET`(typeidx : typeidx, u32 : u32) + | `ARRAY.NEW`(typeidx : typeidx) + | `ARRAY.NEW_DEFAULT`(typeidx : typeidx) + | `ARRAY.NEW_FIXED`(typeidx : typeidx, u32 : u32) + | `ARRAY.NEW_DATA`(typeidx : typeidx, dataidx : dataidx) + | `ARRAY.NEW_ELEM`(typeidx : typeidx, elemidx : elemidx) + | `ARRAY.GET`(`sx?` : sx?, typeidx : typeidx) + | `ARRAY.SET`(typeidx : typeidx) + | `ARRAY.LEN` + | `ARRAY.FILL`(typeidx : typeidx) + | `ARRAY.COPY`(typeidx : typeidx, typeidx : typeidx) + | `ARRAY.INIT_DATA`(typeidx : typeidx, dataidx : dataidx) + | `ARRAY.INIT_ELEM`(typeidx : typeidx, elemidx : elemidx) + | `EXTERN.CONVERT_ANY` + | `ANY.CONVERT_EXTERN` + | CONST(numtype : numtype, num_(numtype)) + | UNOP(numtype : numtype, unop_(numtype)) + | BINOP(numtype : numtype, binop_(numtype)) + | TESTOP(numtype : numtype, testop_(numtype)) + | RELOP(numtype : numtype, relop_(numtype)) + | CVTOP(numtype_1 : numtype, numtype_2 : numtype, cvtop__(numtype_2, numtype_1)) + | VCONST(vectype : vectype, vec_(vectype)) + | VVUNOP(vectype : vectype, vvunop : vvunop) + | VVBINOP(vectype : vectype, vvbinop : vvbinop) + | VVTERNOP(vectype : vectype, vvternop : vvternop) + | VVTESTOP(vectype : vectype, vvtestop : vvtestop) + | VUNOP(shape : shape, vunop_(shape)) + | VBINOP(shape : shape, vbinop_(shape)) + | VTERNOP(shape : shape, vternop_(shape)) + | VTESTOP(shape : shape, vtestop_(shape)) + | VRELOP(shape : shape, vrelop_(shape)) + | VSHIFTOP(ishape : ishape, vshiftop_(ishape)) + | VBITMASK(ishape : ishape) + | VSWIZZLOP(bshape : bshape, vswizzlop_(bshape)) + | VSHUFFLE(bshape : bshape, `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) + | VEXTUNOP(ishape_1 : ishape, ishape_2 : ishape, vextunop__(ishape_2, ishape_1)) + | VEXTBINOP(ishape_1 : ishape, ishape_2 : ishape, vextbinop__(ishape_2, ishape_1)) + | VEXTTERNOP(ishape_1 : ishape, ishape_2 : ishape, vextternop__(ishape_2, ishape_1)) + | VNARROW(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) + | VCVTOP(shape_1 : shape, shape_2 : shape, vcvtop__(shape_2, shape_1)) + | VSPLAT(shape : shape) + | VEXTRACT_LANE(shape : shape, `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*) + | VREPLACE_LANE(shape : shape, laneidx : laneidx) + | `REF.I31_NUM`(u31 : u31) + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(addrref : addrref) + | `LABEL_%{%}%`(n : n, `instr*` : instr*, `instr*` : instr*) + | `FRAME_%{%}%`(n : n, frame : frame, `instr*` : instr*) + | `HANDLER_%{%}%`(n : n, `catch*` : catch*, `instr*` : instr*) | TRAP } @@ -2185,9 +2185,9 @@ def $memarg0 : memarg ;; ../../../../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) + def $const{numtype : numtype, c : lit_(((numtype : numtype <: consttype) : consttype <: 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) + def $const{vectype : vectype, c : lit_(((vectype : vectype <: consttype) : consttype <: storagetype))}((vectype : vectype <: consttype), c) = VCONST_instr(vectype, c) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_shape(shape : shape) : free @@ -2318,85 +2318,85 @@ def $free_instr(instr : instr) : free ;; ../../../../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) + 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 []} + 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 []} + 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 []} + 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) + 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) + 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) + 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 []} + 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 []} + 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 []} + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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 []} + 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) + 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) + 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) + 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) + 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 []} + 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 []} + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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 @@ -2410,17 +2410,17 @@ def $free_instr(instr : instr) : free ;; ../../../../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) + 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) + 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) + 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) + 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) + 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) + 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 @@ -2436,66 +2436,66 @@ def $free_expr(expr : expr) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax elemmode = - | ACTIVE{tableidx : tableidx, expr : expr}(tableidx : tableidx, expr : expr) + | ACTIVE(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) + | ACTIVE(memidx : memidx, expr : expr) | PASSIVE ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax type = - | TYPE{rectype : rectype}(rectype : rectype) + | TYPE(rectype : rectype) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax tag = - | TAG{tagtype : tagtype}(tagtype : tagtype) + | TAG(tagtype : tagtype) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax global = - | GLOBAL{globaltype : globaltype, expr : expr}(globaltype : globaltype, expr : expr) + | GLOBAL(globaltype : globaltype, expr : expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax mem = - | MEMORY{memtype : memtype}(memtype : memtype) + | MEMORY(memtype : memtype) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax table = - | TABLE{tabletype : tabletype, expr : expr}(tabletype : tabletype, expr : expr) + | TABLE(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) + | DATA(`byte*` : byte*, datamode : datamode) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax local = - | LOCAL{valtype : valtype}(valtype : valtype) + | LOCAL(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) + | FUNC(typeidx : typeidx, `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) + | ELEM(reftype : reftype, `expr*` : expr*, elemmode : elemmode) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax start = - | START{funcidx : funcidx}(funcidx : funcidx) + | START(funcidx : funcidx) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax import = - | IMPORT{name : name, externtype : externtype}(name : name, name, externtype : externtype) + | IMPORT(name : 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) + | EXPORT(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*) + | MODULE(`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_type(type : type) : free @@ -2595,28 +2595,28 @@ syntax init = ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec syntax localtype = - | `%%`{init : init, valtype : valtype}(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) + | `%->_%%`(resulttype : resulttype, `localidx*` : localidx*, resulttype : 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* + TYPES deftype*, + RECS subtype*, + TAGS tagtype*, + GLOBALS globaltype*, + MEMS memtype*, + TABLES tabletype*, + FUNCS deftype*, + DATAS datatype*, + ELEMS elemtype*, + LOCALS localtype*, + LABELS resulttype*, + RETURN resulttype?, + REFS funcidx* } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec @@ -2686,11 +2686,11 @@ relation Vectype_ok: `%|-%:OK`(context, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypeidx = - | OK{typeidx : typeidx}(typeidx : typeidx) + | OK(typeidx : typeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypeidxnat = - | OK{typeidx : typeidx, nat : nat}(typeidx : typeidx, nat : nat) + | OK(typeidx : typeidx, nat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Packtype_ok: `%|-%:OK`(context, packtype) @@ -2847,7 +2847,7 @@ 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, `comptype'*` : comptype*, `x'**` : idx**}: `%|-%:%`(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*`} @@ -2875,7 +2875,7 @@ 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, `comptype'*` : comptype*, `typeuse'**` : typeuse**, 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*`} @@ -2898,7 +2898,7 @@ relation Rectype_ok2: `%|-%:%`(context, rectype, oktypeidxnat) ;; ../../../../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}: + rule _{C : context, rectype : rectype, i : n, x : idx, n : n, `subtype*` : subtype*}: `%|-%:OK`(C, _DEF_deftype(rectype, i)) -- Rectype_ok: `%|-%:%`(C, rectype, OK_oktypeidx(x)) -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) @@ -3308,7 +3308,7 @@ def $default_(valtype : valtype) : val? ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Vnn : Vnn}((Vnn : Vnn <: 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)) + 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)) = ?() @@ -3497,254 +3497,254 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- (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)]))) + 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))]))) + 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)]))) + 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]))) + 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)]))) + 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]))) + 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]))) + 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)]))) + 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]))) + 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))]))) + 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))]))) + 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)]))) + 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([]))) + 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))]))) + 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))]))) + 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))]))) + 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))]))) + 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))]))) + 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)]))) + 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([]))) + 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]))) + 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([]))) + 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([]))) + 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([]))) + 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([]))) + 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)]))) + 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)]))) + 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]))) + 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([]))) + 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]))) + 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]))) + 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([]))) + 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)]))) + 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([]))) + 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)]))) + 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]))) + 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([]))) + 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([]))) + 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([]))) + 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([]))) + 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)]))) + 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)]))) + 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([]))) + 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([]))) + 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([]))) + 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([]))) + 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 @@ -3982,48 +3982,48 @@ relation Instr_const: `%|-%CONST`(context, instr) `%|-%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)) + 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) + 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)) + 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)) + 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)) + 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)) + 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)) + 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))) + 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) + 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) + 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)) + 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 @@ -4236,7 +4236,7 @@ relation Types_ok: `%|-%:%`(context, type*, deftype*) ;; ../../../../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*) + | `%%%%`(`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* @@ -4271,12 +4271,12 @@ relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec syntax relaxed2 = - | `%`{i : nat}(i : nat) + | `%`(i : nat) -- if ((i = 0) \/ (i = 1)) ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec syntax relaxed4 = - | `%`{i : nat}(i : nat) + | `%`(i : nat) -- if ((((i = 0) \/ (i = 1)) \/ (i = 2)) \/ (i = 3)) ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec @@ -4928,7 +4928,7 @@ def $zeroop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape ;; ../../../../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__) = ?() + 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? @@ -4943,7 +4943,7 @@ def $halfop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape ;; ../../../../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) + 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 @@ -5160,11 +5160,11 @@ def $vbinop_(shape : shape, vbinop_ : vbinop_(shape), vec_ : vec_(V128_Vnn), vec ;; ../../../../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) + 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) + 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) + 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 @@ -5240,7 +5240,7 @@ def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, sha 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*`} -- 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 : 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*`} + 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*`} -- 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 @@ -5349,43 +5349,43 @@ def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__ ;; ../../../../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) + 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) + 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 + 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)))) -- 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))), `RELAXED_DOTS`_vextbinop__, c_1, c_2)) + -- if (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)) -- if (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')) -- 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)) + | CONST(numtype : numtype, num_(numtype)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax vec = - | VCONST{vectype : vectype, vec_ : vec_(vectype)}(vectype : vectype, vec_ : vec_(vectype)) + | VCONST(vectype : vectype, 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) + | `REF.I31_NUM`(u31 : u31) + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(addrref : addrref) + | `REF.NULL`(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) + | _VALS(`val*` : val*) + | `(REF.EXN_ADDR%)THROW_REF`(exnaddr : exnaddr) | TRAP ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -5394,118 +5394,118 @@ 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) + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) | `...` ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax taginst = { - TYPE{tagtype : tagtype} tagtype + TYPE tagtype } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax globalinst = { - TYPE{globaltype : globaltype} globaltype, - VALUE{val : val} val + TYPE globaltype, + VALUE val } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax meminst = { - TYPE{memtype : memtype} memtype, - BYTES{`byte*` : byte*} byte* + TYPE memtype, + BYTES byte* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax tableinst = { - TYPE{tabletype : tabletype} tabletype, - REFS{`ref*` : ref*} ref* + TYPE tabletype, + REFS ref* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax funcinst = { - TYPE{deftype : deftype} deftype, - MODULE{moduleinst : moduleinst} moduleinst, - CODE{funccode : funccode} funccode + TYPE deftype, + MODULE moduleinst, + CODE funccode } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax datainst = { - BYTES{`byte*` : byte*} byte* + BYTES byte* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax eleminst = { - TYPE{elemtype : elemtype} elemtype, - REFS{`ref*` : ref*} ref* + TYPE elemtype, + REFS 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))) + | PACK(packtype : packtype, 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))) + | CONST(numtype : numtype, num_(numtype)) + | VCONST(vectype : vectype, vec_(vectype)) + | `REF.I31_NUM`(u31 : u31) + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(addrref : addrref) + | `REF.NULL`(heaptype : heaptype) + | PACK(packtype : packtype, iN($psizenn(packtype))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax structinst = { - TYPE{deftype : deftype} deftype, - FIELDS{`fieldval*` : fieldval*} fieldval* + TYPE deftype, + FIELDS fieldval* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax arrayinst = { - TYPE{deftype : deftype} deftype, - FIELDS{`fieldval*` : fieldval*} fieldval* + TYPE deftype, + FIELDS fieldval* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax exninst = { - TAG{tagaddr : tagaddr} tagaddr, - FIELDS{`val*` : val*} val* + TAG tagaddr, + FIELDS 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* + TAGS taginst*, + GLOBALS globalinst*, + MEMS meminst*, + TABLES tableinst*, + FUNCS funcinst*, + DATAS datainst*, + ELEMS eleminst*, + STRUCTS structinst*, + ARRAYS arrayinst*, + EXNS exninst* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax state = - | `%;%`{store : store, frame : frame}(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*) + | `%;%`(state : state, `instr*` : instr*) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $Ki : nat @@ -5813,40 +5813,40 @@ rec { 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')) + `%|-%:%`(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 rule i31{s : store, i : u31}: - `%|-%:%`(s, REF.I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) + `%|-%:%`(s, `REF.I31_NUM`_ref(i), 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))) + `%|-%:%`(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 rule array{s : store, a : addr, dt : deftype}: - `%|-%:%`(s, REF.ARRAY_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + `%|-%:%`(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 rule func{s : store, a : addr, dt : deftype}: - `%|-%:%`(s, REF.FUNC_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + `%|-%:%`(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 rule exn{s : store, a : addr, exn : exninst}: - `%|-%:%`(s, REF.EXN_ADDR_ref(a), REF_reftype(?(), EXN_heaptype)) + `%|-%:%`(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 rule host{s : store, a : addr}: - `%|-%:%`(s, REF.HOST_ADDR_ref(a), REF_reftype(?(), ANY_heaptype)) + `%|-%:%`(s, `REF.HOST_ADDR`_ref(a), 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)) + `%|-%:%`(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 @@ -6015,7 +6015,7 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../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)) + -- if (val = `REF.NULL`_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-addr`{val : val, l : labelidx}: @@ -6025,7 +6025,7 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../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)) + -- 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}: @@ -6034,11 +6034,11 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../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)]) + `%~>%`([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)]) + `%~>%`([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*}: @@ -6074,76 +6074,76 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([`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)]) + 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))]) + 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)) + `%~>%`([(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))]) + `%~>%`([(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)) + `%~>%`([(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)]) + `%~>%`([(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))) + `%~>%`([(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))]) + `%~>%`([(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))]) + `%~>%`([(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]) + `%~>%`([`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))]) + `%~>%`([`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))]) + 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)]) + `%~>%`([`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)]) + `%~>%`([(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)]) + `%~>%`([`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)]) + `%~>%`([`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)}: @@ -6322,12 +6322,12 @@ def $blocktype_(state : state, blocktype : blocktype) : instrtype ;; ../../../../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, m : m, `val*` : val*, 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}: + rule loop{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, n : n, `t_2*` : valtype*}: `%~>%`(`%;%`_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*`}))) @@ -6355,16 +6355,16 @@ 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))]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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*`})])]) + rule `call_ref-func`{z : state, n : n, `val*` : val*, 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*`})) @@ -6372,7 +6372,7 @@ 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))]) + `%~>%`(`%;%`_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 @@ -6385,142 +6385,142 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../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]) + `%~>%`(`%;%`_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)]) + rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, n : n, `val*` : val*, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, m : m, `t_2*` : valtype*}: + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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])]) + `%~>%`(`%;%`_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*}: + rule try_table{z : state, m : m, `val*` : val*, 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)]) + 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)]) + 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]) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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))]) + 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]) + `%~>%`(`%;%`_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)]), []) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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)]), []) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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)]), []) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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 @@ -6559,9 +6559,9 @@ relation Step_read: `%~>%`(config, 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}: + 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)*, 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 rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(config, instr*) -- 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))]) + 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]) + `%~>%`(`%;%`_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)]), []) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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)]), []) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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)]), []) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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))]) + `%~>%`(`%;%`_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])]) + 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))]) + `%~>%`(`%;%`_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))]) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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)]) + 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]) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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))]) + 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]) + `%~>%`(`%;%`_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))]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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))]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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|))]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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)]), []) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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)]), []) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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)]), []) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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)]), []) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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)]) @@ -6900,42 +6900,42 @@ 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, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) + rule throw{z : state, n : n, `val*` : val*, 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), [])) + 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), [])) + 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])) + `%~>%`(`%;%`_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), [])) + `%~>%`(`%;%`_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|))])) + `%~>%`(`%;%`_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))))])) + `%~>%`(`%;%`_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, []), [])) + 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}: @@ -6981,51 +6981,51 @@ relation Step: `%~>%`(config, config) ;; ../../../../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)))])) + `%~>%`(`%;%`_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))))])) + `%~>%`(`%;%`_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, []), [])) + 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)])) + rule `struct.new`{z : state, n : n, `val*` : val*, 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])) + `%~>%`(`%;%`_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)), [])) + `%~>%`(`%;%`_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)])) + rule `array.new_fixed`{z : state, n : n, `val*` : val*, 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])) + `%~>%`(`%;%`_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])) + `%~>%`(`%;%`_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)), [])) + `%~>%`(`%;%`_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))) } @@ -7221,7 +7221,7 @@ def $allocexports(moduleinst : moduleinst, export*) : exportinst* ;; ../../../../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) + 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*, `expr_G*` : expr*, `globaltype*` : globaltype*, `memtype*` : memtype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `expr_F*` : expr*, `local**` : local**, `x*` : idx*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : 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*`}) @@ -7236,7 +7236,7 @@ def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) -- 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 (fa*{fa <- `fa*`} = (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){}) -- 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*`})) @@ -7250,18 +7250,18 @@ def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) ;; ../../../../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)) = [] + def $rundata_{x : idx, n : n, `b*` : byte*}(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)] + def $rundata_{x : idx, n : n, `b*` : byte*, 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)) = [] + def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*}(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)] + def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*}(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)] + def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*, 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 { @@ -7281,7 +7281,7 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) ;; ../../../../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?`})) + 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*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, 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*`})) @@ -7290,20 +7290,20 @@ def $instantiate(store : store, module : module, externaddr*) : config -- 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 (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*`}|){}, 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_D*{instr_D <- `instr_D*`} = $concat_(syntax instr, $rundata_(`%`_dataidx(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){})) + -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){})) -- 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 : 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))]) + 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*`} @@ -7321,7 +7321,7 @@ grammar BuN(N : N) : uN(N) 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))) + prod{m : m, n : n} {{`%`_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)) } @@ -7337,7 +7337,7 @@ grammar BsN(N : N) : sN(N) 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)) + prod{i : sN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat)), n : n} {{`%`_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)) } @@ -7394,7 +7394,7 @@ grammar Blist(syntax el, grammar BX : 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 + prod{name : name, `b*` : byte*} 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 @@ -7558,7 +7558,7 @@ grammar Bstoragetype : 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) + prod{`mut?` : mut?, zt : storagetype} {{zt:Bstoragetype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_fieldtype(mut?{mut <- `mut?`}, zt) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bcomptype : comptype @@ -7604,7 +7604,7 @@ grammar Btagtype : tagtype ;; ../../../../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) + prod{`mut?` : mut?, t : valtype} {{t:Bvaltype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_globaltype(mut?{mut <- `mut?`}, t) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bmemtype : memtype @@ -7614,7 +7614,7 @@ grammar Bmemtype : memtype ;; ../../../../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) + prod{at : addrtype, lim : limits, rt : reftype} {{rt:Breftype} {(at, lim):Blimits}} => `%%%`_tabletype(at, lim, rt) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bexterntype : externtype @@ -7673,7 +7673,7 @@ grammar Bmemarg : memidxop 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)}) + prod{x : idx, n : n, 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 @@ -7719,11 +7719,11 @@ grammar Binstr : 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)) + prod{x : idx, y : 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)) + prod{x : idx, y : 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 @@ -7735,35 +7735,35 @@ grammar Binstr : instr ;; ../../../../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)) + prod{l : labelidx, `null_1?` : null?, ht_1 : heaptype, `null_2?` : null?, 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)) + prod{l : labelidx, `null_1?` : null?, ht_1 : heaptype, `null_2?` : null?, 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + prod{x : idx, y : 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) + 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) + 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) + 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) + 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) + 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 @@ -7811,85 +7811,85 @@ grammar Binstr : instr ;; ../../../../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) + 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) + 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) + prod{x : idx, y : 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) + 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) + 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) + 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) + 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 + 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) + 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 + 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 + 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)) + 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)) + 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)) + 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)) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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)) + 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) + 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) + 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) + 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) + 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) + 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) + 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 + 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) + 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) + 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) + 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) + 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 + 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 + 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 + 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) + 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) + 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 @@ -8401,7 +8401,7 @@ grammar Binstr : instr ;; ../../../../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_) + 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 @@ -8411,7 +8411,7 @@ grammar Binstr : instr ;; ../../../../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_) + 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 @@ -8435,9 +8435,9 @@ grammar Binstr : instr ;; ../../../../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_) + 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_) + 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 @@ -8469,7 +8469,7 @@ grammar Binstr : instr ;; ../../../../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__) + 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 @@ -8511,7 +8511,7 @@ grammar Binstr : instr ;; ../../../../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__) + 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 @@ -8521,7 +8521,7 @@ grammar Binstr : instr ;; ../../../../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__) + 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 @@ -8657,7 +8657,7 @@ grammar Binstr : instr ;; ../../../../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__) + 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 @@ -8692,7 +8692,7 @@ grammar Bexpr : expr ;; ../../../../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*`} + prod{`en*` : en*, len : nat} {{`%`_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 => [] @@ -8700,12 +8700,12 @@ grammar Bsection_(N : N, syntax en, grammar BX : en*) : en* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bcustom : ()* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{Bname} {Bbyte*{}}} => [()] + 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) => () + prod Bsection_(0, syntax (), grammar Bcustom) => ((), ()).1 ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Btype : type @@ -8735,7 +8735,7 @@ grammar Bfuncsec : typeidx* ;; ../../../../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)]) + 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) @@ -8796,19 +8796,19 @@ grammar Belemkind : reftype ;; ../../../../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)) + prod{`y*` : idx*, e_o : expr} {{`%`_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) + 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)) + prod{rt : reftype, `y*` : idx*, x : idx, e : expr} {{`%`_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) + 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)) + prod{`e*` : expr*, e_O : 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)) + prod{`e*` : expr*, x : idx, e_O : 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) @@ -8823,7 +8823,7 @@ 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{} + prod{t : valtype, n : n} {{`%`_u32(n):Bu32} {t:Bvaltype}} => LOCAL_local(t)^n{} ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bfunc : code @@ -8834,7 +8834,7 @@ grammar Bfunc : code ;; ../../../../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 + prod{code : code, len : nat} {{`%`_u32(len):Bu32} {code:Bfunc}} => code -- if (len = 0) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec @@ -8845,11 +8845,11 @@ grammar Bcodesec : 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)) + prod{`b*` : byte*, e : expr} {{`%`_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)) + prod{`b*` : byte*, x : idx, e : expr} {{`%`_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* @@ -8882,17 +8882,17 @@ grammar Btagsec : 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}} => () + prod {{0x00} {0x61} {0x73} {0x6D}} => ((), ()).1 ;; ../../../../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}} => () + prod {{0x01} {0x00} {0x00} {0x00}} => ((), ()).1 ;; ../../../../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*`}) + prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `typeidx*` : typeidx*, `n?` : n?, `expr*` : expr*, `local**` : local**} {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*`} @@ -9079,7 +9079,7 @@ grammar Tstring : byte* ;; ../../../../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*`}) + prod{`c*` : char*, `b*` : byte*} 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 @@ -9372,18 +9372,18 @@ grammar Tlist(syntax el, grammar TX : el) : el* ;; ../../../../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?* + TYPES name?*, + TAGS name?*, + GLOBALS name?*, + MEMS name?*, + TABLES name?*, + FUNCS name?*, + DATAS name?*, + ELEMS name?*, + LOCALS name?*, + LABELS name?*, + FIELDS name?**, + TYPEDEFS deftype?* } ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -9396,8 +9396,8 @@ rec { 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:156.1-156.53 + def $concat_idctxt{I : I, `I'*` : I*}([I] ++ I'*{I' <- `I'*`}) = I +++ $concat_idctxt(I'*{I' <- `I'*`}) } ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -9423,7 +9423,7 @@ 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 + prod{x : idx, id : name} id:Tid => x -- if (ids[x!`%`_idx.0] = ?(id)) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -9587,12 +9587,12 @@ grammar Tfieldtype_(I : I) : fieldtype ;; ../../../../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?`})))) + prod{ft : fieldtype, `id?` : char?} {{"("} {"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?`})))) + prod{t : valtype, `id?` : char?} {{"("} {"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 @@ -9606,7 +9606,7 @@ grammar Tcomptype_(I : I) : (comptype, idctxt) ;; ../../../../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 []}) + prod{`t_1*` : valtype*, `t_2*` : valtype*, `id?*` : char?*} {{"("} {"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 @@ -9621,7 +9621,7 @@ grammar Tsubtype_(I : I) : (subtype, idctxt) ;; ../../../../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 []}) + prod{st : subtype, I' : I, `id?` : char?} {{"("} {"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) @@ -9650,7 +9650,7 @@ grammar Ttypeuse_(I : I) : (typeidx, idctxt) -- 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') + prod{x : idx, I' : I, `id?*` : char?*, `t_1*` : valtype*, `t_2*` : valtype*, `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 []}) @@ -9681,15 +9681,15 @@ grammar Ttabletype_(I : I) : tabletype ;; ../../../../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 []}) + prod{jt : tagtype, `id?` : char?} {{"("} {"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 []}) + prod{gt : globaltype, `id?` : char?} {{"("} {"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 []}) + prod{mt : memtype, `id?` : char?} {{"("} {"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 []}) + prod{tt : tabletype, `id?` : char?} {{"("} {"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 []}) + prod{x : idx, `id?` : char?, 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) @@ -9794,31 +9794,31 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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 @@ -9910,81 +9910,81 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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 + 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 + 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 + 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) + 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) + 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 + prod "ref.i31" => `REF.I31`_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i31.get_s" => I31.GET_instr(S_sx) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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)) + 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) + 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) + 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) + 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) + 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) + 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) + 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 + 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) + 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) + 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) + 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) + 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 + 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 + 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 @@ -10506,7 +10506,7 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../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_) + 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 @@ -10530,11 +10530,11 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../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_) + 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_) + 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_) + 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 @@ -10700,7 +10700,7 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../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__) + 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 @@ -10730,7 +10730,7 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../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__) + 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 @@ -10760,16 +10760,16 @@ grammar Tinstrs_(I : I) : instr* ;; ../../../../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*`}) + prod{bt : blocktype, `in*` : instr*, `id?` : char?, I' : I, `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*`}) + prod{bt : blocktype, `in*` : instr*, `id?` : char?, I' : I, `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*`}) + prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*, `id?` : char?, I' : I, `id_1?` : char?, `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*`}) + prod{bt : blocktype, `c*` : catch*, `in*` : instr*, `id?` : char?, I' : I, `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?`})) } @@ -10778,384 +10778,384 @@ 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 +;; ../../../../specification/wasm-3.0/6.4-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'') + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{qt : rectype, I' : I, I'' : I, n : n, `st*` : subtype*} (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.4-text.modules.spectec + prod{jt : tagtype, `id?` : char?} {{"("} {"tag"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {jt:Ttagtype_(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 +;; ../../../../specification/wasm-3.0/6.4-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.4-text.modules.spectec + prod{gt : globaltype, e : expr, `id?` : char?} {{"("} {"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 +;; ../../../../specification/wasm-3.0/6.4-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.4-text.modules.spectec + prod{mt : memtype, `id?` : char?} {{"("} {"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 +;; ../../../../specification/wasm-3.0/6.4-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.4-text.modules.spectec + prod{tt : tabletype, e : expr, `id?` : char?} {{"("} {"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 +;; ../../../../specification/wasm-3.0/6.4-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.4-text.modules.spectec + prod{t : valtype, `id?` : char?} {{"("} {"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 +;; ../../../../specification/wasm-3.0/6.4-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 []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{x : idx, `loc**` : local**, e : expr, `id?` : char?, I_1 : I, `I_2*` : I*, 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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tdatastring : byte* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tmemuse_(I : I) : memidx - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => x -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Toffset_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{e : expr} {{"("} {"offset"} {e:Texpr_(I)} {")"}} => e -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-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.4-text.modules.spectec + prod{`b*` : byte*, `id?` : char?} {{"("} {"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.4-text.modules.spectec + prod{`b*` : byte*, x : idx, e : expr, `id?` : char?} {{"("} {"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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Telemlist_(I : I) : (reftype, expr*) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Ttableuse_(I : I) : tableidx - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => x -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"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.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, x : idx, e' : expr, `id?` : char?} {{"("} {"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.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"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.4-text.modules.spectec grammar Telemexpr_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{e : expr} {{"("} {"item"} {e:Texpr_(I)} {")"}} => e -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tstart_(I : I) : (start, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Timport_(I : I) : (import, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texport_(I : I) : (export, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texportdots : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{"("} {"export"} {Tname} {")"}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Timportdots : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{"("} {"import"} {Tname} {Tname} {")"}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $dots : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texporttagdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Ttagtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttagtype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texportglobaldots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Tglobaltype_(I)} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tglobaltype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texportmemdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Tmemtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {"("} {"data"} {Tdatastring} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tmemtype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texporttabledots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Ttabletype_(I)} {Texpr_(I)?{}}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {Treftype_(I)} {"("} {"elem"} {Telemlist_(I)} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttabletype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texportfuncdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Ttypeuse_(I)} {Tlocal_(I)*{}} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttypeuse_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texporttag_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texportglobal_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texportmem_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texporttable_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texportfunc_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tdatamem_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Telemtable_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-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 + | TYPE(rectype : rectype) + | IMPORT(name : name, name : name, externtype : externtype) + | TAG(tagtype : tagtype) + | GLOBAL(globaltype : globaltype, expr : expr) + | MEMORY(memtype : memtype) + | TABLE(tabletype : tabletype, expr : expr) + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) + | DATA(`byte*` : byte*, datamode : datamode) + | ELEM(reftype : reftype, `expr*` : expr*, elemmode : elemmode) + | START(funcidx : funcidx) + | EXPORT(name : name, externidx : externidx) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:258.1-258.76 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.1-258.76 def $typesd(decl*) : type* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:270.1-270.23 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:270.1-270.23 def $typesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:271.1-271.48 + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:259.1-259.78 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.1-259.78 def $importsd(decl*) : import* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:274.1-274.25 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:274.1-274.25 def $importsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:275.1-275.56 + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:260.1-260.75 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.1-260.75 def $tagsd(decl*) : tag* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:278.1-278.22 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:278.1-278.22 def $tagsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:279.1-279.44 + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:261.1-261.78 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.1-261.78 def $globalsd(decl*) : global* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:282.1-282.25 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:282.1-282.25 def $globalsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:283.1-283.56 + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:262.1-262.75 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.1-262.75 def $memsd(decl*) : mem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:286.1-286.22 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:286.1-286.22 def $memsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:287.1-287.44 + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:263.1-263.77 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.1-263.77 def $tablesd(decl*) : table* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:290.1-290.24 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:290.1-290.24 def $tablesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:291.1-291.52 + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:264.1-264.76 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.1-264.76 def $funcsd(decl*) : func* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:294.1-294.23 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:294.1-294.23 def $funcsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:295.1-295.48 + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:265.1-265.76 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.1-265.76 def $datasd(decl*) : data* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:298.1-298.23 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:298.1-298.23 def $datasd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:299.1-299.48 + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:266.1-266.76 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.1-266.76 def $elemsd(decl*) : elem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:302.1-302.23 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:302.1-302.23 def $elemsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:303.1-303.48 + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:267.1-267.77 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.1-267.77 def $startsd(decl*) : start* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:306.1-306.24 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:306.1-306.24 def $startsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:307.1-307.52 + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:268.1-268.78 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.1-268.78 def $exportsd(decl*) : export* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:310.1-310.25 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:310.1-310.25 def $exportsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:311.1-311.56 + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $ordered(decl*) : bool - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tdecl_(I : I) : (decl, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (type, idctxt)} ``:Ttype_(I) => (`` : (type, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (import, idctxt)} ``:Timport_(I) => (`` : (import, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (tag, idctxt)} ``:Ttag_(I) => (`` : (tag, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (global, idctxt)} ``:Tglobal_(I) => (`` : (global, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (mem, idctxt)} ``:Tmem_(I) => (`` : (mem, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (table, idctxt)} ``:Ttable_(I) => (`` : (table, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (func, idctxt)} ``:Tfunc_(I) => (`` : (func, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (data, idctxt)} ``:Tdata_(I) => (`` : (data, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (elem, idctxt)} ``:Telem_(I) => (`` : (elem, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (start, idctxt)} ``:Tstart_(I) => (`` : (start, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (export, idctxt)} ``:Texport_(I) => (`` : (export, idctxt) <: (decl, idctxt)) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-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*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `I*` : I*, `decl*` : decl*, I' : I} {{"("} {"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*`})) @@ -11171,9 +11171,9 @@ grammar Tmodule : module -- if (export*{export <- `export*`} = $exportsd(decl*{decl <- `decl*`})) -- if $ordered(decl*{decl <- `decl*`}) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tdecldots_(I : I) : (decl, idctxt)* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (decl, idctxt)} [``]:Tdecl_(I)*{} => [``] ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec @@ -11184,14 +11184,14 @@ syntax B = nat ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec syntax sym = - | _FIRST{A_1 : A}(A_1 : A) + | _FIRST(A_1 : A) | _DOTS - | _LAST{A_n : A}(A_n : A) + | _LAST(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) + | _FIRST(A_1 : A) + | _LAST(A_2 : A) ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec syntax recorddots = () @@ -11199,9 +11199,9 @@ 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 + FIELD_1 A, + FIELD_2 A, + `...` recorddots } ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec @@ -11233,12 +11233,12 @@ 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}: + 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]))) + 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 @@ -11267,11 +11267,11 @@ 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*) + | `LABEL_%{%}`(n : n, `instr*` : instr*) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec syntax callframe = - | `FRAME_%{%}`{n : n, frame : frame}(n : n, frame : 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) @@ -11291,7 +11291,7 @@ def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec syntax symdots = - | `%`{i : nat}(i : nat) + | `%`(i : nat) -- if (i = 0) ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec @@ -11302,7 +11302,7 @@ def $var(syntax X) : nat ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec grammar Bvar(syntax X) : () ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod 0x00 => () + prod 0x00 => ((), ()).1 ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec grammar Bsym : A @@ -11314,14 +11314,14 @@ grammar Bsym : 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) => `` + prod{`` : ()} ``:Bvar(syntax B) => (``, ()).1 ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod{`` : ()} ``:Bvar(syntax B) => `` + prod{`` : ()} ``:Bvar(syntax B) => (``, ()).1 ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec grammar Tvar(syntax X) : () ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod 0x00 => () + prod 0x00 => ((), ()).1 ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec grammar Tsym : A @@ -11333,9 +11333,9 @@ grammar Tsym : 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) => `` + prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod{`` : ()} ``:Tvar(syntax B) => `` + prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec syntax abbreviated = () @@ -11424,7 +11424,7 @@ 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) + def $concatn_{syntax X, n : n, `w*` : X*, `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 @@ -11515,22 +11515,22 @@ def $ND : bool ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax bit = - | `%`{i : nat}(i : nat) + | `%`(i : nat) -- if ((i = 0) \/ (i = 1)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax byte = - | `%`{i : nat}(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) + | `%`(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) + | `%`(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 @@ -11592,18 +11592,18 @@ 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) + | NORM(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) + | SUBNORM(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)) | INF - | NAN{m : m}(m : m) + | NAN(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)) + | POS(fNmag(N)) + | NEG(fNmag(N)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax f32 = fN(32) @@ -11639,12 +11639,12 @@ 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*) + | `%`(`X*` : X*) -- if (|X*{X <- `X*`}| < (2 ^ 32)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax char = - | `%`{i : nat}(i : nat) + | `%`(i : nat) -- if (((i >= 0) /\ (i <= 55295)) \/ ((i >= 57344) /\ (i <= 1114111))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec @@ -11680,7 +11680,7 @@ def $utf8(char*) : byte* ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax name = - | `%`{`char*` : char*}(char*{char <- `char*`} : char*) + | `%`(`char*` : char*) -- if (|$utf8(char*{char <- `char*`})| < (2 ^ 32)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -11724,11 +11724,11 @@ 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) + | FUNC(funcidx : funcidx) + | GLOBAL(globalidx : globalidx) + | TABLE(tableidx : tableidx) + | MEM(memidx : memidx) + | TAG(tagidx : tagidx) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { @@ -11803,15 +11803,15 @@ def $tagsxx(externidx*) : tagidx* ;; ../../../../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* + TYPES typeidx*, + FUNCS funcidx*, + GLOBALS globalidx*, + TABLES tableidx*, + MEMS memidx*, + ELEMS elemidx*, + DATAS dataidx*, + LOCALS localidx*, + LABELS labelidx* } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -11945,9 +11945,9 @@ 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) + | _IDX(typeidx : typeidx) + | _DEF(rectype : rectype, n : n) + | REC(n : n) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.1-44.26 syntax heaptype = @@ -11964,9 +11964,9 @@ syntax heaptype = | EXTERN | NOEXTERN | BOT - | _IDX{typeidx : typeidx}(typeidx : typeidx) - | REC{n : n}(n : n) - | _DEF{rectype : rectype, n : n}(rectype : rectype, n : n) + | _IDX(typeidx : typeidx) + | _DEF(rectype : rectype, n : n) + | REC(n : n) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.1-52.14 syntax valtype = @@ -11975,18 +11975,18 @@ syntax valtype = | F32 | F64 | V128 - | REF{`null?` : null?, heaptype : heaptype}(null?{null <- `null?`} : null?, heaptype : heaptype) + | REF(`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) + | REF(`null?` : null?, heaptype : heaptype) + | BOT | I8 | I16 @@ -11995,35 +11995,35 @@ 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) + | `%%`(`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) + | STRUCT(list(syntax fieldtype)) + | ARRAY(fieldtype : fieldtype) + | `FUNC%->%`(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) + | SUB(`final?` : final?, `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)) + | REC(list(syntax subtype)) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax deftype = - | _DEF{rectype : rectype, n : n}(rectype : rectype, n : n) + | _DEF(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) + | _IDX(typeidx : typeidx) + | REC(n : n) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax reftype = - | REF{`null?` : null?, heaptype : heaptype}(null?{null <- `null?`} : null?, heaptype : heaptype) + | REF(`null?` : null?, heaptype : heaptype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax Inn = @@ -12142,22 +12142,22 @@ syntax Lnn = ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax limits = - | `[%..%]`{u64 : u64}(u64 : u64, 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) + | `%%`(`mut?` : mut?, valtype : valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax memtype = - | `%%PAGE`{addrtype : addrtype, limits : limits}(addrtype : addrtype, limits : limits) + | `%%PAGE`(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) + | `%%%`(addrtype : addrtype, limits : limits, reftype : reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax datatype = @@ -12168,15 +12168,15 @@ 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) + | TAG(tagtype : tagtype) + | GLOBAL(globaltype : globaltype) + | MEM(memtype : memtype) + | TABLE(tabletype : tabletype) + | FUNC(typeuse : typeuse) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax moduletype = - | `%->%`{`externtype*` : externtype*}(externtype*{externtype <- `externtype*`} : externtype*, externtype*) + | `%->%`(`externtype*` : externtype*, `externtype*` : externtype*) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $IN(N : N) : Inn @@ -12627,47 +12627,47 @@ def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype ;; ../../../../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 $sizenn2((Inn_2 : Inn <: numtype))) @@ -13022,15 +13022,15 @@ syntax cvtop__(numtype_1 : numtype, numtype_2 : numtype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax cvtop__{Inn_1 : Inn, Fnn_2 : Fnn}((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype)) = - | CONVERT{sx : sx}(sx : sx) + | CONVERT(sx : sx) | REINTERPRET -- if ($sizenn1((Inn_1 : Inn <: 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 : Inn <: numtype)) = - | TRUNC{sx : sx}(sx : sx) - | TRUNC_SAT{sx : sx}(sx : sx) + | TRUNC(sx : sx) + | TRUNC_SAT(sx : sx) | REINTERPRET -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) = $sizenn2((Inn_2 : Inn <: numtype))) @@ -13045,12 +13045,12 @@ syntax cvtop__(numtype_1 : numtype, numtype_2 : numtype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax dim = - | `%`{i : nat}(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) + | `%X%`(lanetype : lanetype, dim : dim) -- if (($lsize(lanetype) * dim!`%`_dim.0) = 128) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -13070,12 +13070,12 @@ def $unpackshape(shape : shape) : numtype ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax ishape = - | `%`{shape : shape, Jnn : Jnn}(shape : shape) + | `%`(shape : shape) {Jnn : Jnn} -- if ($lanetype(shape) = (Jnn : Jnn <: lanetype)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax bshape = - | `%`{shape : shape}(shape : shape) + | `%`(shape : shape) -- if ($lanetype(shape) = I8_lanetype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -13133,21 +13133,21 @@ syntax vbinop_(shape : shape) syntax vbinop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = | ADD | SUB - | ADD_SAT{sx : sx}(sx : sx) + | ADD_SAT(sx : sx) -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) - | SUB_SAT{sx : sx}(sx : sx) + | SUB_SAT(sx : sx) -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) | MUL -- if ($lsizenn((Jnn : Jnn <: lanetype)) >= 16) - | `AVGRU` + | AVGRU -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) - | `Q15MULR_SATS` + | Q15MULR_SATS -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 16) - | `RELAXED_Q15MULRS` + | RELAXED_Q15MULRS -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 16) - | MIN{sx : sx}(sx : sx) + | MIN(sx : sx) -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 32) - | MAX{sx : sx}(sx : sx) + | MAX(sx : sx) -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 32) @@ -13188,13 +13188,13 @@ syntax vrelop_(shape : shape) syntax vrelop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = | EQ | NE - | LT{sx : sx}(sx : sx) + | LT(sx : sx) -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) - | GT{sx : sx}(sx : sx) + | GT(sx : sx) -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) - | LE{sx : sx}(sx : sx) + | LE(sx : sx) -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) - | GE{sx : sx}(sx : sx) + | GE(sx : sx) -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) @@ -13211,7 +13211,7 @@ syntax vrelop_(shape : shape) ;; ../../../../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) + | SHR(sx : sx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vswizzlop_{M : M}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M)))) = @@ -13220,82 +13220,82 @@ syntax vswizzlop_{M : M}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M)))) = ;; ../../../../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) + | EXTADD_PAIRWISE(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) + | EXTMUL(half : half, sx : sx) -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) >= 16)) - | `DOTS` + | DOTS -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) - | `RELAXED_DOTS` + | 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` + | 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) + | EXTEND(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) + | CONVERT(`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?) + | TRUNC_SAT(sx : sx, `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?) + | RELAXED_TRUNC(sx : sx, `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) + | DEMOTE(zero : zero) -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $sizenn2((Fnn_2 : Fnn <: numtype)))) - | `PROMOTELOW` + | 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 + ALIGN u32, + OFFSET u64 } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax loadop_{Inn : Inn}((Inn : Inn <: numtype)) = - | `%_%`{sz : sz, sx : sx}(sz : sz, sx : sx) + | `%_%`(sz : sz, sx : sx) -- if (sz!`%`_sz.0 < $sizenn((Inn : Inn <: numtype))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax storeop_{Inn : Inn}((Inn : Inn <: numtype)) = - | `%`{sz : sz}(sz : sz) + | `%`(sz : sz) -- if (sz!`%`_sz.0 < $sizenn((Inn : Inn <: 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) + | `SHAPE%X%_%`(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) + | SPLAT(sz : sz) + | ZERO(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) + | _RESULT(`valtype?` : valtype?) + | _IDX(typeidx : typeidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax addr = nat @@ -13320,21 +13320,21 @@ 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) + | `REF.I31_NUM`(u31 : u31) + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `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) + | CATCH(tagidx : tagidx, labelidx : labelidx) + | CATCH_REF(tagidx : tagidx, labelidx : labelidx) + | CATCH_ALL(labelidx : labelidx) + | CATCH_ALL_REF(labelidx : labelidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax dataaddr = addr @@ -13356,51 +13356,51 @@ 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) + | TAG(tagaddr : tagaddr) + | GLOBAL(globaladdr : globaladdr) + | MEM(memaddr : memaddr) + | TABLE(tableaddr : tableaddr) + | FUNC(funcaddr : funcaddr) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax exportinst = { - NAME{name : name} name, - ADDR{externaddr : externaddr} externaddr + NAME name, + ADDR 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* + TYPES deftype*, + TAGS tagaddr*, + GLOBALS globaladdr*, + MEMS memaddr*, + TABLES tableaddr*, + FUNCS funcaddr*, + DATAS dataaddr*, + ELEMS elemaddr*, + EXPORTS 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) + | CONST(numtype : numtype, num_(numtype)) + | VCONST(vectype : vectype, vec_(vectype)) + | `REF.I31_NUM`(u31 : u31) + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(addrref : addrref) + | `REF.NULL`(heaptype : heaptype) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax frame = { - LOCALS{`val?*` : val?*} val?*, - MODULE{moduleinst : moduleinst} moduleinst + LOCALS val?*, + MODULE moduleinst } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -13411,120 +13411,120 @@ 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) + | SELECT(`valtype*?` : valtype*?) + | BLOCK(blocktype : blocktype, `instr*` : instr*) + | LOOP(blocktype : blocktype, `instr*` : instr*) + | `IF%%ELSE%`(blocktype : blocktype, `instr*` : instr*, `instr*` : instr*) + | BR(labelidx : labelidx) + | BR_IF(labelidx : labelidx) + | BR_TABLE(`labelidx*` : labelidx*, labelidx : labelidx) + | BR_ON_NULL(labelidx : labelidx) + | BR_ON_NON_NULL(labelidx : labelidx) + | BR_ON_CAST(labelidx : labelidx, reftype : reftype, reftype : reftype) + | BR_ON_CAST_FAIL(labelidx : labelidx, reftype : reftype, reftype : reftype) + | CALL(funcidx : funcidx) + | CALL_REF(typeuse : typeuse) + | CALL_INDIRECT(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) + | RETURN_CALL(funcidx : funcidx) + | RETURN_CALL_REF(typeuse : typeuse) + | RETURN_CALL_INDIRECT(tableidx : tableidx, typeuse : typeuse) + | THROW(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*) + | TRY_TABLE(blocktype : blocktype, list(syntax catch), `instr*` : instr*) + | `LOCAL.GET`(localidx : localidx) + | `LOCAL.SET`(localidx : localidx) + | `LOCAL.TEE`(localidx : localidx) + | `GLOBAL.GET`(globalidx : globalidx) + | `GLOBAL.SET`(globalidx : globalidx) + | `TABLE.GET`(tableidx : tableidx) + | `TABLE.SET`(tableidx : tableidx) + | `TABLE.SIZE`(tableidx : tableidx) + | `TABLE.GROW`(tableidx : tableidx) + | `TABLE.FILL`(tableidx : tableidx) + | `TABLE.COPY`(tableidx : tableidx, tableidx : tableidx) + | `TABLE.INIT`(tableidx : tableidx, elemidx : elemidx) + | `ELEM.DROP`(elemidx : elemidx) + | LOAD(numtype : numtype, loadop_(numtype)?, memidx : memidx, memarg : memarg) + | STORE(numtype : numtype, storeop_(numtype)?, memidx : memidx, memarg : memarg) + | VLOAD(vectype : vectype, vloadop_(vectype)?, memidx : memidx, memarg : memarg) + | VLOAD_LANE(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | VSTORE(vectype : vectype, memidx : memidx, memarg : memarg) + | VSTORE_LANE(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | `MEMORY.SIZE`(memidx : memidx) + | `MEMORY.GROW`(memidx : memidx) + | `MEMORY.FILL`(memidx : memidx) + | `MEMORY.COPY`(memidx : memidx, memidx : memidx) + | `MEMORY.INIT`(memidx : memidx, dataidx : dataidx) + | `DATA.DROP`(dataidx : dataidx) + | `REF.NULL`(heaptype : heaptype) + | `REF.IS_NULL` + | `REF.AS_NON_NULL` + | `REF.EQ` + | `REF.TEST`(reftype : reftype) + | `REF.CAST`(reftype : reftype) + | `REF.FUNC`(funcidx : funcidx) + | `REF.I31` + | `I31.GET`(sx : sx) + | `STRUCT.NEW`(typeidx : typeidx) + | `STRUCT.NEW_DEFAULT`(typeidx : typeidx) + | `STRUCT.GET`(`sx?` : sx?, typeidx : typeidx, u32 : u32) + | `STRUCT.SET`(typeidx : typeidx, u32 : u32) + | `ARRAY.NEW`(typeidx : typeidx) + | `ARRAY.NEW_DEFAULT`(typeidx : typeidx) + | `ARRAY.NEW_FIXED`(typeidx : typeidx, u32 : u32) + | `ARRAY.NEW_DATA`(typeidx : typeidx, dataidx : dataidx) + | `ARRAY.NEW_ELEM`(typeidx : typeidx, elemidx : elemidx) + | `ARRAY.GET`(`sx?` : sx?, typeidx : typeidx) + | `ARRAY.SET`(typeidx : typeidx) + | `ARRAY.LEN` + | `ARRAY.FILL`(typeidx : typeidx) + | `ARRAY.COPY`(typeidx : typeidx, typeidx : typeidx) + | `ARRAY.INIT_DATA`(typeidx : typeidx, dataidx : dataidx) + | `ARRAY.INIT_ELEM`(typeidx : typeidx, elemidx : elemidx) + | `EXTERN.CONVERT_ANY` + | `ANY.CONVERT_EXTERN` + | CONST(numtype : numtype, num_(numtype)) + | UNOP(numtype : numtype, unop_(numtype)) + | BINOP(numtype : numtype, binop_(numtype)) + | TESTOP(numtype : numtype, testop_(numtype)) + | RELOP(numtype : numtype, relop_(numtype)) + | CVTOP(numtype_1 : numtype, numtype_2 : numtype, cvtop__(numtype_2, numtype_1)) + | VCONST(vectype : vectype, vec_(vectype)) + | VVUNOP(vectype : vectype, vvunop : vvunop) + | VVBINOP(vectype : vectype, vvbinop : vvbinop) + | VVTERNOP(vectype : vectype, vvternop : vvternop) + | VVTESTOP(vectype : vectype, vvtestop : vvtestop) + | VUNOP(shape : shape, vunop_(shape)) + | VBINOP(shape : shape, vbinop_(shape)) + | VTERNOP(shape : shape, vternop_(shape)) + | VTESTOP(shape : shape, vtestop_(shape)) + | VRELOP(shape : shape, vrelop_(shape)) + | VSHIFTOP(ishape : ishape, vshiftop_(ishape)) + | VBITMASK(ishape : ishape) + | VSWIZZLOP(bshape : bshape, vswizzlop_(bshape)) + | VSHUFFLE(bshape : bshape, `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) + | VEXTUNOP(ishape_1 : ishape, ishape_2 : ishape, vextunop__(ishape_2, ishape_1)) + | VEXTBINOP(ishape_1 : ishape, ishape_2 : ishape, vextbinop__(ishape_2, ishape_1)) + | VEXTTERNOP(ishape_1 : ishape, ishape_2 : ishape, vextternop__(ishape_2, ishape_1)) + | VNARROW(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) + | VCVTOP(shape_1 : shape, shape_2 : shape, vcvtop__(shape_2, shape_1)) + | VSPLAT(shape : shape) + | VEXTRACT_LANE(shape : shape, `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*) + | VREPLACE_LANE(shape : shape, laneidx : laneidx) + | `REF.I31_NUM`(u31 : u31) + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(addrref : addrref) + | `LABEL_%{%}%`(n : n, `instr*` : instr*, `instr*` : instr*) + | `FRAME_%{%}%`(n : n, frame : frame, `instr*` : instr*) + | `HANDLER_%{%}%`(n : n, `catch*` : catch*, `instr*` : instr*) | TRAP } @@ -13539,9 +13539,9 @@ def $memarg0 : memarg ;; ../../../../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) + def $const{numtype : numtype, c : lit_(((numtype : numtype <: consttype) : consttype <: 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) + def $const{vectype : vectype, c : lit_(((vectype : vectype <: consttype) : consttype <: storagetype))}((vectype : vectype <: consttype), c) = VCONST_instr(vectype, c) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_shape(shape : shape) : free @@ -13672,85 +13672,85 @@ def $free_instr(instr : instr) : free ;; ../../../../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) + 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 []} + 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 []} + 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 []} + 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) + 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) + 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) + 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 []} + 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 []} + 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 []} + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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 []} + 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) + 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) + 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) + 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) + 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 []} + 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 []} + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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 @@ -13764,17 +13764,17 @@ def $free_instr(instr : instr) : free ;; ../../../../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) + 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) + 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) + 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) + 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) + 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) + 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 @@ -13790,66 +13790,66 @@ def $free_expr(expr : expr) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax elemmode = - | ACTIVE{tableidx : tableidx, expr : expr}(tableidx : tableidx, expr : expr) + | ACTIVE(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) + | ACTIVE(memidx : memidx, expr : expr) | PASSIVE ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax type = - | TYPE{rectype : rectype}(rectype : rectype) + | TYPE(rectype : rectype) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax tag = - | TAG{tagtype : tagtype}(tagtype : tagtype) + | TAG(tagtype : tagtype) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax global = - | GLOBAL{globaltype : globaltype, expr : expr}(globaltype : globaltype, expr : expr) + | GLOBAL(globaltype : globaltype, expr : expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax mem = - | MEMORY{memtype : memtype}(memtype : memtype) + | MEMORY(memtype : memtype) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax table = - | TABLE{tabletype : tabletype, expr : expr}(tabletype : tabletype, expr : expr) + | TABLE(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) + | DATA(`byte*` : byte*, datamode : datamode) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax local = - | LOCAL{valtype : valtype}(valtype : valtype) + | LOCAL(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) + | FUNC(typeidx : typeidx, `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) + | ELEM(reftype : reftype, `expr*` : expr*, elemmode : elemmode) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax start = - | START{funcidx : funcidx}(funcidx : funcidx) + | START(funcidx : funcidx) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax import = - | IMPORT{name : name, externtype : externtype}(name : name, name, externtype : externtype) + | IMPORT(name : 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) + | EXPORT(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*) + | MODULE(`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_type(type : type) : free @@ -13949,28 +13949,28 @@ syntax init = ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec syntax localtype = - | `%%`{init : init, valtype : valtype}(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) + | `%->_%%`(resulttype : resulttype, `localidx*` : localidx*, resulttype : 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* + TYPES deftype*, + RECS subtype*, + TAGS tagtype*, + GLOBALS globaltype*, + MEMS memtype*, + TABLES tabletype*, + FUNCS deftype*, + DATAS datatype*, + ELEMS elemtype*, + LOCALS localtype*, + LABELS resulttype*, + RETURN resulttype?, + REFS funcidx* } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec @@ -14040,11 +14040,11 @@ relation Vectype_ok: `%|-%:OK`(context, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypeidx = - | OK{typeidx : typeidx}(typeidx : typeidx) + | OK(typeidx : typeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypeidxnat = - | OK{typeidx : typeidx, nat : nat}(typeidx : typeidx, nat : nat) + | OK(typeidx : typeidx, nat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Packtype_ok: `%|-%:OK`(context, packtype) @@ -14201,7 +14201,7 @@ 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, `comptype'*` : comptype*, `x'**` : idx**}: `%|-%:%`(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*`} @@ -14229,7 +14229,7 @@ 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, `comptype'*` : comptype*, `typeuse'**` : typeuse**, 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*`} @@ -14252,7 +14252,7 @@ relation Rectype_ok2: `%|-%:%`(context, rectype, oktypeidxnat) ;; ../../../../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}: + rule _{C : context, rectype : rectype, i : n, x : idx, n : n, `subtype*` : subtype*}: `%|-%:OK`(C, _DEF_deftype(rectype, i)) -- Rectype_ok: `%|-%:%`(C, rectype, OK_oktypeidx(x)) -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) @@ -14662,7 +14662,7 @@ def $default_(valtype : valtype) : val? ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Vnn : Vnn}((Vnn : Vnn <: 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)) + 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)) = ?() @@ -14851,254 +14851,254 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- (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)]))) + 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))]))) + 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)]))) + 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]))) + 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)]))) + 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]))) + 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]))) + 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)]))) + 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]))) + 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))]))) + 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))]))) + 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)]))) + 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([]))) + 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))]))) + 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))]))) + 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))]))) + 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))]))) + 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))]))) + 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)]))) + 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([]))) + 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]))) + 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([]))) + 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([]))) + 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([]))) + 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([]))) + 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)]))) + 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)]))) + 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]))) + 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([]))) + 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]))) + 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]))) + 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([]))) + 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)]))) + 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([]))) + 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)]))) + 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]))) + 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([]))) + 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([]))) + 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([]))) + 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([]))) + 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)]))) + 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)]))) + 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([]))) + 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([]))) + 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([]))) + 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([]))) + 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 @@ -15336,48 +15336,48 @@ relation Instr_const: `%|-%CONST`(context, instr) `%|-%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)) + 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) + 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)) + 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)) + 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)) + 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)) + 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)) + 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))) + 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) + 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) + 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)) + 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 @@ -15590,7 +15590,7 @@ relation Types_ok: `%|-%:%`(context, type*, deftype*) ;; ../../../../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*) + | `%%%%`(`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* @@ -15625,12 +15625,12 @@ relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec syntax relaxed2 = - | `%`{i : nat}(i : nat) + | `%`(i : nat) -- if ((i = 0) \/ (i = 1)) ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec syntax relaxed4 = - | `%`{i : nat}(i : nat) + | `%`(i : nat) -- if ((((i = 0) \/ (i = 1)) \/ (i = 2)) \/ (i = 3)) ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec @@ -16282,7 +16282,7 @@ def $zeroop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape ;; ../../../../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__) = ?() + 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? @@ -16297,7 +16297,7 @@ def $halfop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape ;; ../../../../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) + 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 @@ -16514,11 +16514,11 @@ def $vbinop_(shape : shape, vbinop_ : vbinop_(shape), vec_ : vec_(V128_Vnn), vec ;; ../../../../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) + 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) + 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) + 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 @@ -16594,7 +16594,7 @@ def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, sha 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*`} -- 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 : 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*`} + 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*`} -- 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 @@ -16703,43 +16703,43 @@ def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__ ;; ../../../../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) + 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) + 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 + 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)))) -- 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))), `RELAXED_DOTS`_vextbinop__, c_1, c_2)) + -- if (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)) -- if (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')) -- 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)) + | CONST(numtype : numtype, num_(numtype)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax vec = - | VCONST{vectype : vectype, vec_ : vec_(vectype)}(vectype : vectype, vec_ : vec_(vectype)) + | VCONST(vectype : vectype, 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) + | `REF.I31_NUM`(u31 : u31) + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(addrref : addrref) + | `REF.NULL`(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) + | _VALS(`val*` : val*) + | `(REF.EXN_ADDR%)THROW_REF`(exnaddr : exnaddr) | TRAP ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -16748,118 +16748,118 @@ 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) + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) | `...` ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax taginst = { - TYPE{tagtype : tagtype} tagtype + TYPE tagtype } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax globalinst = { - TYPE{globaltype : globaltype} globaltype, - VALUE{val : val} val + TYPE globaltype, + VALUE val } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax meminst = { - TYPE{memtype : memtype} memtype, - BYTES{`byte*` : byte*} byte* + TYPE memtype, + BYTES byte* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax tableinst = { - TYPE{tabletype : tabletype} tabletype, - REFS{`ref*` : ref*} ref* + TYPE tabletype, + REFS ref* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax funcinst = { - TYPE{deftype : deftype} deftype, - MODULE{moduleinst : moduleinst} moduleinst, - CODE{funccode : funccode} funccode + TYPE deftype, + MODULE moduleinst, + CODE funccode } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax datainst = { - BYTES{`byte*` : byte*} byte* + BYTES byte* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax eleminst = { - TYPE{elemtype : elemtype} elemtype, - REFS{`ref*` : ref*} ref* + TYPE elemtype, + REFS 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))) + | PACK(packtype : packtype, 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))) + | CONST(numtype : numtype, num_(numtype)) + | VCONST(vectype : vectype, vec_(vectype)) + | `REF.I31_NUM`(u31 : u31) + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(addrref : addrref) + | `REF.NULL`(heaptype : heaptype) + | PACK(packtype : packtype, iN($psizenn(packtype))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax structinst = { - TYPE{deftype : deftype} deftype, - FIELDS{`fieldval*` : fieldval*} fieldval* + TYPE deftype, + FIELDS fieldval* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax arrayinst = { - TYPE{deftype : deftype} deftype, - FIELDS{`fieldval*` : fieldval*} fieldval* + TYPE deftype, + FIELDS fieldval* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax exninst = { - TAG{tagaddr : tagaddr} tagaddr, - FIELDS{`val*` : val*} val* + TAG tagaddr, + FIELDS 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* + TAGS taginst*, + GLOBALS globalinst*, + MEMS meminst*, + TABLES tableinst*, + FUNCS funcinst*, + DATAS datainst*, + ELEMS eleminst*, + STRUCTS structinst*, + ARRAYS arrayinst*, + EXNS exninst* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax state = - | `%;%`{store : store, frame : frame}(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*) + | `%;%`(state : state, `instr*` : instr*) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $Ki : nat @@ -17169,40 +17169,40 @@ rec { 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')) + `%|-%:%`(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 rule i31{s : store, i : u31}: - `%|-%:%`(s, REF.I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) + `%|-%:%`(s, `REF.I31_NUM`_ref(i), 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))) + `%|-%:%`(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 rule array{s : store, a : addr, dt : deftype}: - `%|-%:%`(s, REF.ARRAY_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + `%|-%:%`(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 rule func{s : store, a : addr, dt : deftype}: - `%|-%:%`(s, REF.FUNC_ADDR_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) + `%|-%:%`(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 rule exn{s : store, a : addr, exn : exninst}: - `%|-%:%`(s, REF.EXN_ADDR_ref(a), REF_reftype(?(), EXN_heaptype)) + `%|-%:%`(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 rule host{s : store, a : addr}: - `%|-%:%`(s, REF.HOST_ADDR_ref(a), REF_reftype(?(), ANY_heaptype)) + `%|-%:%`(s, `REF.HOST_ADDR`_ref(a), 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)) + `%|-%:%`(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 @@ -17371,7 +17371,7 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../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)) + -- if (val = `REF.NULL`_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-addr`{val : val, l : labelidx}: @@ -17381,7 +17381,7 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../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)) + -- 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}: @@ -17390,11 +17390,11 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../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)]) + `%~>%`([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)]) + `%~>%`([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*}: @@ -17430,76 +17430,76 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([`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)]) + 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))]) + 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)) + `%~>%`([(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))]) + `%~>%`([(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)) + `%~>%`([(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)]) + `%~>%`([(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))) + `%~>%`([(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))]) + `%~>%`([(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))]) + `%~>%`([(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]) + `%~>%`([`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))]) + `%~>%`([`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))]) + 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)]) + `%~>%`([`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)]) + `%~>%`([(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)]) + `%~>%`([`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)]) + `%~>%`([`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)}: @@ -17678,12 +17678,12 @@ def $blocktype_(state : state, blocktype : blocktype) : instrtype ;; ../../../../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, m : m, `val*` : val*, 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}: + rule loop{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, n : n, `t_2*` : valtype*}: `%~>%`(`%;%`_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*`}))) @@ -17711,16 +17711,16 @@ 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))]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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*`})])]) + rule `call_ref-func`{z : state, n : n, `val*` : val*, 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*`})) @@ -17728,7 +17728,7 @@ 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))]) + `%~>%`(`%;%`_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 @@ -17741,142 +17741,142 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../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]) + `%~>%`(`%;%`_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)]) + rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, n : n, `val*` : val*, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, m : m, `t_2*` : valtype*}: + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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])]) + `%~>%`(`%;%`_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*}: + rule try_table{z : state, m : m, `val*` : val*, 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)]) + 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)]) + 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]) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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))]) + 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]) + `%~>%`(`%;%`_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)]), []) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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)]), []) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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)]), []) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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 @@ -17915,9 +17915,9 @@ relation Step_read: `%~>%`(config, 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}: + 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)*, 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 rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(config, instr*) -- 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))]) + 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]) + `%~>%`(`%;%`_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)]), []) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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)]), []) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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)]), []) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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))]) + `%~>%`(`%;%`_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])]) + 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))]) + `%~>%`(`%;%`_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))]) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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)]) + 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]) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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))]) + 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]) + `%~>%`(`%;%`_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))]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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))]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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|))]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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)]), []) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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)]), []) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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)]), []) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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)]), []) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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)]) @@ -18256,42 +18256,42 @@ 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, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) + rule throw{z : state, n : n, `val*` : val*, 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), [])) + 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), [])) + 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])) + `%~>%`(`%;%`_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), [])) + `%~>%`(`%;%`_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|))])) + `%~>%`(`%;%`_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))))])) + `%~>%`(`%;%`_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, []), [])) + 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}: @@ -18337,51 +18337,51 @@ relation Step: `%~>%`(config, config) ;; ../../../../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)))])) + `%~>%`(`%;%`_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))))])) + `%~>%`(`%;%`_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, []), [])) + 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)])) + rule `struct.new`{z : state, n : n, `val*` : val*, 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])) + `%~>%`(`%;%`_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)), [])) + `%~>%`(`%;%`_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)])) + rule `array.new_fixed`{z : state, n : n, `val*` : val*, 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])) + `%~>%`(`%;%`_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])) + `%~>%`(`%;%`_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)), [])) + `%~>%`(`%;%`_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))) } @@ -18577,7 +18577,7 @@ def $allocexports(moduleinst : moduleinst, export*) : exportinst* ;; ../../../../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) + 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*, `expr_G*` : expr*, `globaltype*` : globaltype*, `memtype*` : memtype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `expr_F*` : expr*, `local**` : local**, `x*` : idx*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : 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*`}) @@ -18592,7 +18592,7 @@ def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) -- 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 (fa*{fa <- `fa*`} = (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){}) -- 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*`})) @@ -18606,18 +18606,18 @@ def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) ;; ../../../../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)) = [] + def $rundata_{x : idx, n : n, `b*` : byte*}(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)] + def $rundata_{x : idx, n : n, `b*` : byte*, 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)) = [] + def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*}(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)] + def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*}(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)] + def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*, 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 { @@ -18637,7 +18637,7 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) ;; ../../../../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?`})) + 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*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, 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*`})) @@ -18646,20 +18646,20 @@ def $instantiate(store : store, module : module, externaddr*) : config -- 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 (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*`}|){}, 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_D*{instr_D <- `instr_D*`} = $concat_(syntax instr, $rundata_(`%`_dataidx(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){})) + -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){})) -- 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 : 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))]) + 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*`} @@ -18677,7 +18677,7 @@ grammar BuN(N : N) : uN(N) 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))) + prod{m : m, n : n} {{`%`_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)) } @@ -18693,7 +18693,7 @@ grammar BsN(N : N) : sN(N) 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)) + prod{i : sN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat)), n : n} {{`%`_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)) } @@ -18750,7 +18750,7 @@ grammar Blist(syntax el, grammar BX : 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 + prod{name : name, `b*` : byte*} 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 @@ -18914,7 +18914,7 @@ grammar Bstoragetype : 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) + prod{`mut?` : mut?, zt : storagetype} {{zt:Bstoragetype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_fieldtype(mut?{mut <- `mut?`}, zt) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bcomptype : comptype @@ -18960,7 +18960,7 @@ grammar Btagtype : tagtype ;; ../../../../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) + prod{`mut?` : mut?, t : valtype} {{t:Bvaltype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_globaltype(mut?{mut <- `mut?`}, t) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bmemtype : memtype @@ -18970,7 +18970,7 @@ grammar Bmemtype : memtype ;; ../../../../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) + prod{at : addrtype, lim : limits, rt : reftype} {{rt:Breftype} {(at, lim):Blimits}} => `%%%`_tabletype(at, lim, rt) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bexterntype : externtype @@ -19029,7 +19029,7 @@ grammar Bmemarg : memidxop 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)}) + prod{x : idx, n : n, 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 @@ -19075,11 +19075,11 @@ grammar Binstr : 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)) + prod{x : idx, y : 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)) + prod{x : idx, y : 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 @@ -19091,35 +19091,35 @@ grammar Binstr : instr ;; ../../../../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)) + prod{l : labelidx, `null_1?` : null?, ht_1 : heaptype, `null_2?` : null?, 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)) + prod{l : labelidx, `null_1?` : null?, ht_1 : heaptype, `null_2?` : null?, 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + prod{x : idx, y : 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) + 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) + 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) + 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) + 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) + 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 @@ -19167,85 +19167,85 @@ grammar Binstr : instr ;; ../../../../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) + 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) + 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) + prod{x : idx, y : 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) + 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) + 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) + 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) + 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 + 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) + 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 + 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 + 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)) + 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)) + 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)) + 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)) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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)) + 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) + 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) + 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) + 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) + 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) + 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) + 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 + 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) + 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) + 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) + 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) + 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 + 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 + 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 + 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) + 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) + 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 @@ -19757,7 +19757,7 @@ grammar Binstr : instr ;; ../../../../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_) + 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 @@ -19767,7 +19767,7 @@ grammar Binstr : instr ;; ../../../../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_) + 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 @@ -19791,9 +19791,9 @@ grammar Binstr : instr ;; ../../../../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_) + 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_) + 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 @@ -19825,7 +19825,7 @@ grammar Binstr : instr ;; ../../../../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__) + 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 @@ -19867,7 +19867,7 @@ grammar Binstr : instr ;; ../../../../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__) + 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 @@ -19877,7 +19877,7 @@ grammar Binstr : instr ;; ../../../../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__) + 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 @@ -20013,7 +20013,7 @@ grammar Binstr : instr ;; ../../../../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__) + 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 @@ -20048,7 +20048,7 @@ grammar Bexpr : expr ;; ../../../../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*`} + prod{`en*` : en*, len : nat} {{`%`_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 => [] @@ -20056,12 +20056,12 @@ grammar Bsection_(N : N, syntax en, grammar BX : en*) : en* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bcustom : ()* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{Bname} {Bbyte*{}}} => [()] + 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) => () + prod Bsection_(0, syntax (), grammar Bcustom) => ((), ()).1 ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Btype : type @@ -20091,7 +20091,7 @@ grammar Bfuncsec : typeidx* ;; ../../../../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)]) + 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) @@ -20152,19 +20152,19 @@ grammar Belemkind : reftype ;; ../../../../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)) + prod{`y*` : idx*, e_o : expr} {{`%`_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) + 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)) + prod{rt : reftype, `y*` : idx*, x : idx, e : expr} {{`%`_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) + 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)) + prod{`e*` : expr*, e_O : 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)) + prod{`e*` : expr*, x : idx, e_O : 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) @@ -20179,7 +20179,7 @@ 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{} + prod{t : valtype, n : n} {{`%`_u32(n):Bu32} {t:Bvaltype}} => LOCAL_local(t)^n{} ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bfunc : code @@ -20190,7 +20190,7 @@ grammar Bfunc : code ;; ../../../../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 + prod{code : code, len : nat} {{`%`_u32(len):Bu32} {code:Bfunc}} => code -- if (len = 0) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec @@ -20201,11 +20201,11 @@ grammar Bcodesec : 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)) + prod{`b*` : byte*, e : expr} {{`%`_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)) + prod{`b*` : byte*, x : idx, e : expr} {{`%`_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* @@ -20238,17 +20238,17 @@ grammar Btagsec : 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}} => () + prod {{0x00} {0x61} {0x73} {0x6D}} => ((), ()).1 ;; ../../../../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}} => () + prod {{0x01} {0x00} {0x00} {0x00}} => ((), ()).1 ;; ../../../../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*`}) + prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `typeidx*` : typeidx*, `n?` : n?, `expr*` : expr*, `local**` : local**} {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*`} @@ -20435,7 +20435,7 @@ grammar Tstring : byte* ;; ../../../../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*`}) + prod{`c*` : char*, `b*` : byte*} 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 @@ -20728,18 +20728,18 @@ grammar Tlist(syntax el, grammar TX : el) : el* ;; ../../../../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?* + TYPES name?*, + TAGS name?*, + GLOBALS name?*, + MEMS name?*, + TABLES name?*, + FUNCS name?*, + DATAS name?*, + ELEMS name?*, + LOCALS name?*, + LABELS name?*, + FIELDS name?**, + TYPEDEFS deftype?* } ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -20752,8 +20752,8 @@ rec { 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:156.1-156.53 + def $concat_idctxt{I : I, `I'*` : I*}([I] ++ I'*{I' <- `I'*`}) = I +++ $concat_idctxt(I'*{I' <- `I'*`}) } ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -20779,7 +20779,7 @@ 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 + prod{x : idx, id : name} id:Tid => x -- if (ids[x!`%`_idx.0] = ?(id)) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -20943,12 +20943,12 @@ grammar Tfieldtype_(I : I) : fieldtype ;; ../../../../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?`})))) + prod{ft : fieldtype, `id?` : char?} {{"("} {"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?`})))) + prod{t : valtype, `id?` : char?} {{"("} {"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 @@ -20962,7 +20962,7 @@ grammar Tcomptype_(I : I) : (comptype, idctxt) ;; ../../../../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 []}) + prod{`t_1*` : valtype*, `t_2*` : valtype*, `id?*` : char?*} {{"("} {"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 @@ -20977,7 +20977,7 @@ grammar Tsubtype_(I : I) : (subtype, idctxt) ;; ../../../../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 []}) + prod{st : subtype, I' : I, `id?` : char?} {{"("} {"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) @@ -21006,7 +21006,7 @@ grammar Ttypeuse_(I : I) : (typeidx, idctxt) -- 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') + prod{x : idx, I' : I, `id?*` : char?*, `t_1*` : valtype*, `t_2*` : valtype*, `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 []}) @@ -21037,15 +21037,15 @@ grammar Ttabletype_(I : I) : tabletype ;; ../../../../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 []}) + prod{jt : tagtype, `id?` : char?} {{"("} {"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 []}) + prod{gt : globaltype, `id?` : char?} {{"("} {"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 []}) + prod{mt : memtype, `id?` : char?} {{"("} {"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 []}) + prod{tt : tabletype, `id?` : char?} {{"("} {"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 []}) + prod{x : idx, `id?` : char?, 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) @@ -21150,31 +21150,31 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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 @@ -21266,81 +21266,81 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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 + 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 + 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 + 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) + 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) + 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 + prod "ref.i31" => `REF.I31`_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i31.get_s" => I31.GET_instr(S_sx) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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)) + 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) + 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) + 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) + 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) + 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) + 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) + 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 + 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) + 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) + 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) + 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) + 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 + 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 + 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 @@ -21862,7 +21862,7 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../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_) + 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 @@ -21886,11 +21886,11 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../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_) + 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_) + 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_) + 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 @@ -22056,7 +22056,7 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../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__) + 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 @@ -22086,7 +22086,7 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../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__) + 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 @@ -22116,16 +22116,16 @@ grammar Tinstrs_(I : I) : instr* ;; ../../../../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*`}) + prod{bt : blocktype, `in*` : instr*, `id?` : char?, I' : I, `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*`}) + prod{bt : blocktype, `in*` : instr*, `id?` : char?, I' : I, `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*`}) + prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*, `id?` : char?, I' : I, `id_1?` : char?, `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*`}) + prod{bt : blocktype, `c*` : catch*, `in*` : instr*, `id?` : char?, I' : I, `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?`})) } @@ -22134,384 +22134,384 @@ 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 +;; ../../../../specification/wasm-3.0/6.4-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'') + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{qt : rectype, I' : I, I'' : I, n : n, `st*` : subtype*} (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.4-text.modules.spectec + prod{jt : tagtype, `id?` : char?} {{"("} {"tag"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {jt:Ttagtype_(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 +;; ../../../../specification/wasm-3.0/6.4-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.4-text.modules.spectec + prod{gt : globaltype, e : expr, `id?` : char?} {{"("} {"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 +;; ../../../../specification/wasm-3.0/6.4-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.4-text.modules.spectec + prod{mt : memtype, `id?` : char?} {{"("} {"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 +;; ../../../../specification/wasm-3.0/6.4-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.4-text.modules.spectec + prod{tt : tabletype, e : expr, `id?` : char?} {{"("} {"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 +;; ../../../../specification/wasm-3.0/6.4-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.4-text.modules.spectec + prod{t : valtype, `id?` : char?} {{"("} {"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 +;; ../../../../specification/wasm-3.0/6.4-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 []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{x : idx, `loc**` : local**, e : expr, `id?` : char?, I_1 : I, `I_2*` : I*, 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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tdatastring : byte* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tmemuse_(I : I) : memidx - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => x -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Toffset_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{e : expr} {{"("} {"offset"} {e:Texpr_(I)} {")"}} => e -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-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.4-text.modules.spectec + prod{`b*` : byte*, `id?` : char?} {{"("} {"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.4-text.modules.spectec + prod{`b*` : byte*, x : idx, e : expr, `id?` : char?} {{"("} {"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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Telemlist_(I : I) : (reftype, expr*) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Ttableuse_(I : I) : tableidx - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => x -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"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.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, x : idx, e' : expr, `id?` : char?} {{"("} {"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.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"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.4-text.modules.spectec grammar Telemexpr_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{e : expr} {{"("} {"item"} {e:Texpr_(I)} {")"}} => e -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tstart_(I : I) : (start, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Timport_(I : I) : (import, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texport_(I : I) : (export, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texportdots : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{"("} {"export"} {Tname} {")"}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Timportdots : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{"("} {"import"} {Tname} {Tname} {")"}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $dots : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texporttagdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Ttagtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttagtype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texportglobaldots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Tglobaltype_(I)} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tglobaltype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texportmemdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Tmemtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {"("} {"data"} {Tdatastring} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tmemtype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texporttabledots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Ttabletype_(I)} {Texpr_(I)?{}}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {Treftype_(I)} {"("} {"elem"} {Telemlist_(I)} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttabletype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texportfuncdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Ttypeuse_(I)} {Tlocal_(I)*{}} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttypeuse_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texporttag_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texportglobal_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texportmem_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texporttable_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texportfunc_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tdatamem_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Telemtable_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-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 + | TYPE(rectype : rectype) + | IMPORT(name : name, name : name, externtype : externtype) + | TAG(tagtype : tagtype) + | GLOBAL(globaltype : globaltype, expr : expr) + | MEMORY(memtype : memtype) + | TABLE(tabletype : tabletype, expr : expr) + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) + | DATA(`byte*` : byte*, datamode : datamode) + | ELEM(reftype : reftype, `expr*` : expr*, elemmode : elemmode) + | START(funcidx : funcidx) + | EXPORT(name : name, externidx : externidx) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:258.1-258.76 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.1-258.76 def $typesd(decl*) : type* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:270.1-270.23 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:270.1-270.23 def $typesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:271.1-271.48 + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:259.1-259.78 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.1-259.78 def $importsd(decl*) : import* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:274.1-274.25 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:274.1-274.25 def $importsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:275.1-275.56 + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:260.1-260.75 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.1-260.75 def $tagsd(decl*) : tag* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:278.1-278.22 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:278.1-278.22 def $tagsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:279.1-279.44 + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:261.1-261.78 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.1-261.78 def $globalsd(decl*) : global* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:282.1-282.25 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:282.1-282.25 def $globalsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:283.1-283.56 + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:262.1-262.75 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.1-262.75 def $memsd(decl*) : mem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:286.1-286.22 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:286.1-286.22 def $memsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:287.1-287.44 + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:263.1-263.77 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.1-263.77 def $tablesd(decl*) : table* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:290.1-290.24 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:290.1-290.24 def $tablesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:291.1-291.52 + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:264.1-264.76 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.1-264.76 def $funcsd(decl*) : func* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:294.1-294.23 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:294.1-294.23 def $funcsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:295.1-295.48 + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:265.1-265.76 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.1-265.76 def $datasd(decl*) : data* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:298.1-298.23 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:298.1-298.23 def $datasd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:299.1-299.48 + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:266.1-266.76 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.1-266.76 def $elemsd(decl*) : elem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:302.1-302.23 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:302.1-302.23 def $elemsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:303.1-303.48 + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:267.1-267.77 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.1-267.77 def $startsd(decl*) : start* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:306.1-306.24 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:306.1-306.24 def $startsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:307.1-307.52 + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:268.1-268.78 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.1-268.78 def $exportsd(decl*) : export* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:310.1-310.25 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:310.1-310.25 def $exportsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:311.1-311.56 + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $ordered(decl*) : bool - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tdecl_(I : I) : (decl, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (type, idctxt)} ``:Ttype_(I) => (`` : (type, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (import, idctxt)} ``:Timport_(I) => (`` : (import, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (tag, idctxt)} ``:Ttag_(I) => (`` : (tag, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (global, idctxt)} ``:Tglobal_(I) => (`` : (global, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (mem, idctxt)} ``:Tmem_(I) => (`` : (mem, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (table, idctxt)} ``:Ttable_(I) => (`` : (table, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (func, idctxt)} ``:Tfunc_(I) => (`` : (func, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (data, idctxt)} ``:Tdata_(I) => (`` : (data, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (elem, idctxt)} ``:Telem_(I) => (`` : (elem, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (start, idctxt)} ``:Tstart_(I) => (`` : (start, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (export, idctxt)} ``:Texport_(I) => (`` : (export, idctxt) <: (decl, idctxt)) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-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*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `I*` : I*, `decl*` : decl*, I' : I} {{"("} {"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*`})) @@ -22527,9 +22527,9 @@ grammar Tmodule : module -- if (export*{export <- `export*`} = $exportsd(decl*{decl <- `decl*`})) -- if $ordered(decl*{decl <- `decl*`}) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tdecldots_(I : I) : (decl, idctxt)* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (decl, idctxt)} [``]:Tdecl_(I)*{} => [``] ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec @@ -22540,14 +22540,14 @@ syntax B = nat ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec syntax sym = - | _FIRST{A_1 : A}(A_1 : A) + | _FIRST(A_1 : A) | _DOTS - | _LAST{A_n : A}(A_n : A) + | _LAST(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) + | _FIRST(A_1 : A) + | _LAST(A_2 : A) ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec syntax recorddots = () @@ -22555,9 +22555,9 @@ 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 + FIELD_1 A, + FIELD_2 A, + `...` recorddots } ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec @@ -22589,12 +22589,12 @@ 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}: + 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]))) + 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 @@ -22623,11 +22623,11 @@ 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*) + | `LABEL_%{%}`(n : n, `instr*` : instr*) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec syntax callframe = - | `FRAME_%{%}`{n : n, frame : frame}(n : n, frame : 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) @@ -22647,7 +22647,7 @@ def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec syntax symdots = - | `%`{i : nat}(i : nat) + | `%`(i : nat) -- if (i = 0) ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec @@ -22658,7 +22658,7 @@ def $var(syntax X) : nat ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec grammar Bvar(syntax X) : () ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod 0x00 => () + prod 0x00 => ((), ()).1 ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec grammar Bsym : A @@ -22670,14 +22670,14 @@ grammar Bsym : 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) => `` + prod{`` : ()} ``:Bvar(syntax B) => (``, ()).1 ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod{`` : ()} ``:Bvar(syntax B) => `` + prod{`` : ()} ``:Bvar(syntax B) => (``, ()).1 ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec grammar Tvar(syntax X) : () ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod 0x00 => () + prod 0x00 => ((), ()).1 ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec grammar Tsym : A @@ -22689,9 +22689,9 @@ grammar Tsym : 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) => `` + prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod{`` : ()} ``:Tvar(syntax B) => `` + prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec syntax abbreviated = () @@ -22780,7 +22780,7 @@ 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) + def $concatn_{syntax X, n : n, `w*` : X*, `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 @@ -22871,22 +22871,22 @@ def $ND : bool ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax bit = - | `%`{i : nat}(i : nat) + | `%`(i : nat) -- if ((i = 0) \/ (i = 1)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax byte = - | `%`{i : nat}(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) + | `%`(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) + | `%`(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 @@ -22948,18 +22948,18 @@ 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) + | NORM(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) + | SUBNORM(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)) | INF - | NAN{m : m}(m : m) + | NAN(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)) + | POS(fNmag(N)) + | NEG(fNmag(N)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax f32 = fN(32) @@ -22995,12 +22995,12 @@ 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*) + | `%`(`X*` : X*) -- if (|X*{X <- `X*`}| < (2 ^ 32)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax char = - | `%`{i : nat}(i : nat) + | `%`(i : nat) -- if (((i >= 0) /\ (i <= 55295)) \/ ((i >= 57344) /\ (i <= 1114111))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec @@ -23036,7 +23036,7 @@ def $utf8(char*) : byte* ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax name = - | `%`{`char*` : char*}(char*{char <- `char*`} : char*) + | `%`(`char*` : char*) -- if (|$utf8(char*{char <- `char*`})| < (2 ^ 32)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -23080,11 +23080,11 @@ 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) + | FUNC(funcidx : funcidx) + | GLOBAL(globalidx : globalidx) + | TABLE(tableidx : tableidx) + | MEM(memidx : memidx) + | TAG(tagidx : tagidx) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { @@ -23159,15 +23159,15 @@ def $tagsxx(externidx*) : tagidx* ;; ../../../../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* + TYPES typeidx*, + FUNCS funcidx*, + GLOBALS globalidx*, + TABLES tableidx*, + MEMS memidx*, + ELEMS elemidx*, + DATAS dataidx*, + LOCALS localidx*, + LABELS labelidx* } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -23301,9 +23301,9 @@ 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) + | _IDX(typeidx : typeidx) + | _DEF(rectype : rectype, n : n) + | REC(n : n) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.1-44.26 syntax heaptype = @@ -23320,9 +23320,9 @@ syntax heaptype = | EXTERN | NOEXTERN | BOT - | _IDX{typeidx : typeidx}(typeidx : typeidx) - | REC{n : n}(n : n) - | _DEF{rectype : rectype, n : n}(rectype : rectype, n : n) + | _IDX(typeidx : typeidx) + | _DEF(rectype : rectype, n : n) + | REC(n : n) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.1-52.14 syntax valtype = @@ -23331,18 +23331,18 @@ syntax valtype = | F32 | F64 | V128 - | REF{`null?` : null?, heaptype : heaptype}(null?{null <- `null?`} : null?, heaptype : heaptype) + | REF(`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) + | REF(`null?` : null?, heaptype : heaptype) + | BOT | I8 | I16 @@ -23351,35 +23351,35 @@ 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) + | `%%`(`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) + | STRUCT(list(syntax fieldtype)) + | ARRAY(fieldtype : fieldtype) + | `FUNC%->%`(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) + | SUB(`final?` : final?, `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)) + | REC(list(syntax subtype)) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax deftype = - | _DEF{rectype : rectype, n : n}(rectype : rectype, n : n) + | _DEF(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) + | _IDX(typeidx : typeidx) + | REC(n : n) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax reftype = - | REF{`null?` : null?, heaptype : heaptype}(null?{null <- `null?`} : null?, heaptype : heaptype) + | REF(`null?` : null?, heaptype : heaptype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax Inn = @@ -23498,22 +23498,22 @@ syntax Lnn = ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax limits = - | `[%..%]`{u64 : u64}(u64 : u64, 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) + | `%%`(`mut?` : mut?, valtype : valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax memtype = - | `%%PAGE`{addrtype : addrtype, limits : limits}(addrtype : addrtype, limits : limits) + | `%%PAGE`(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) + | `%%%`(addrtype : addrtype, limits : limits, reftype : reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax datatype = @@ -23524,15 +23524,15 @@ 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) + | TAG(tagtype : tagtype) + | GLOBAL(globaltype : globaltype) + | MEM(memtype : memtype) + | TABLE(tabletype : tabletype) + | FUNC(typeuse : typeuse) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax moduletype = - | `%->%`{`externtype*` : externtype*}(externtype*{externtype <- `externtype*`} : externtype*, externtype*) + | `%->%`(`externtype*` : externtype*, `externtype*` : externtype*) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $IN(N : N) : Inn @@ -23983,47 +23983,47 @@ def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype ;; ../../../../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 $sizenn2((Inn_2 : Inn <: numtype))) @@ -24378,15 +24378,15 @@ syntax cvtop__(numtype_1 : numtype, numtype_2 : numtype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax cvtop__{Inn_1 : Inn, Fnn_2 : Fnn}((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype)) = - | CONVERT{sx : sx}(sx : sx) + | CONVERT(sx : sx) | REINTERPRET -- if ($sizenn1((Inn_1 : Inn <: 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 : Inn <: numtype)) = - | TRUNC{sx : sx}(sx : sx) - | TRUNC_SAT{sx : sx}(sx : sx) + | TRUNC(sx : sx) + | TRUNC_SAT(sx : sx) | REINTERPRET -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) = $sizenn2((Inn_2 : Inn <: numtype))) @@ -24401,12 +24401,12 @@ syntax cvtop__(numtype_1 : numtype, numtype_2 : numtype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax dim = - | `%`{i : nat}(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) + | `%X%`(lanetype : lanetype, dim : dim) -- if (($lsize(lanetype) * dim!`%`_dim.0) = 128) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -24426,12 +24426,12 @@ def $unpackshape(shape : shape) : numtype ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax ishape = - | `%`{shape : shape, Jnn : Jnn}(shape : shape) + | `%`(shape : shape) {Jnn : Jnn} -- if ($lanetype(shape) = (Jnn : Jnn <: lanetype)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax bshape = - | `%`{shape : shape}(shape : shape) + | `%`(shape : shape) -- if ($lanetype(shape) = I8_lanetype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -24489,21 +24489,21 @@ syntax vbinop_(shape : shape) syntax vbinop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = | ADD | SUB - | ADD_SAT{sx : sx}(sx : sx) + | ADD_SAT(sx : sx) -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) - | SUB_SAT{sx : sx}(sx : sx) + | SUB_SAT(sx : sx) -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) | MUL -- if ($lsizenn((Jnn : Jnn <: lanetype)) >= 16) - | `AVGRU` + | AVGRU -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) - | `Q15MULR_SATS` + | Q15MULR_SATS -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 16) - | `RELAXED_Q15MULRS` + | RELAXED_Q15MULRS -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 16) - | MIN{sx : sx}(sx : sx) + | MIN(sx : sx) -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 32) - | MAX{sx : sx}(sx : sx) + | MAX(sx : sx) -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 32) @@ -24544,13 +24544,13 @@ syntax vrelop_(shape : shape) syntax vrelop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = | EQ | NE - | LT{sx : sx}(sx : sx) + | LT(sx : sx) -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) - | GT{sx : sx}(sx : sx) + | GT(sx : sx) -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) - | LE{sx : sx}(sx : sx) + | LE(sx : sx) -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) - | GE{sx : sx}(sx : sx) + | GE(sx : sx) -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) @@ -24567,7 +24567,7 @@ syntax vrelop_(shape : shape) ;; ../../../../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) + | SHR(sx : sx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vswizzlop_{M : M}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M)))) = @@ -24576,82 +24576,82 @@ syntax vswizzlop_{M : M}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M)))) = ;; ../../../../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) + | EXTADD_PAIRWISE(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) + | EXTMUL(half : half, sx : sx) -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) >= 16)) - | `DOTS` + | DOTS -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) - | `RELAXED_DOTS` + | 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` + | 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) + | EXTEND(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) + | CONVERT(`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?) + | TRUNC_SAT(sx : sx, `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?) + | RELAXED_TRUNC(sx : sx, `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) + | DEMOTE(zero : zero) -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $sizenn2((Fnn_2 : Fnn <: numtype)))) - | `PROMOTELOW` + | 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 + ALIGN u32, + OFFSET u64 } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax loadop_{Inn : Inn}((Inn : Inn <: numtype)) = - | `%_%`{sz : sz, sx : sx}(sz : sz, sx : sx) + | `%_%`(sz : sz, sx : sx) -- if (sz!`%`_sz.0 < $sizenn((Inn : Inn <: numtype))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax storeop_{Inn : Inn}((Inn : Inn <: numtype)) = - | `%`{sz : sz}(sz : sz) + | `%`(sz : sz) -- if (sz!`%`_sz.0 < $sizenn((Inn : Inn <: 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) + | `SHAPE%X%_%`(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) + | SPLAT(sz : sz) + | ZERO(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) + | _RESULT(`valtype?` : valtype?) + | _IDX(typeidx : typeidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax addr = nat @@ -24676,21 +24676,21 @@ 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) + | `REF.I31_NUM`(u31 : u31) + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `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) + | CATCH(tagidx : tagidx, labelidx : labelidx) + | CATCH_REF(tagidx : tagidx, labelidx : labelidx) + | CATCH_ALL(labelidx : labelidx) + | CATCH_ALL_REF(labelidx : labelidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax dataaddr = addr @@ -24712,51 +24712,51 @@ 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) + | TAG(tagaddr : tagaddr) + | GLOBAL(globaladdr : globaladdr) + | MEM(memaddr : memaddr) + | TABLE(tableaddr : tableaddr) + | FUNC(funcaddr : funcaddr) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax exportinst = { - NAME{name : name} name, - ADDR{externaddr : externaddr} externaddr + NAME name, + ADDR 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* + TYPES deftype*, + TAGS tagaddr*, + GLOBALS globaladdr*, + MEMS memaddr*, + TABLES tableaddr*, + FUNCS funcaddr*, + DATAS dataaddr*, + ELEMS elemaddr*, + EXPORTS 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) + | CONST(numtype : numtype, num_(numtype)) + | VCONST(vectype : vectype, vec_(vectype)) + | `REF.I31_NUM`(u31 : u31) + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(addrref : addrref) + | `REF.NULL`(heaptype : heaptype) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax frame = { - LOCALS{`val?*` : val?*} val?*, - MODULE{moduleinst : moduleinst} moduleinst + LOCALS val?*, + MODULE moduleinst } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -24767,120 +24767,120 @@ 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) + | SELECT(`valtype*?` : valtype*?) + | BLOCK(blocktype : blocktype, `instr*` : instr*) + | LOOP(blocktype : blocktype, `instr*` : instr*) + | `IF%%ELSE%`(blocktype : blocktype, `instr*` : instr*, `instr*` : instr*) + | BR(labelidx : labelidx) + | BR_IF(labelidx : labelidx) + | BR_TABLE(`labelidx*` : labelidx*, labelidx : labelidx) + | BR_ON_NULL(labelidx : labelidx) + | BR_ON_NON_NULL(labelidx : labelidx) + | BR_ON_CAST(labelidx : labelidx, reftype : reftype, reftype : reftype) + | BR_ON_CAST_FAIL(labelidx : labelidx, reftype : reftype, reftype : reftype) + | CALL(funcidx : funcidx) + | CALL_REF(typeuse : typeuse) + | CALL_INDIRECT(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) + | RETURN_CALL(funcidx : funcidx) + | RETURN_CALL_REF(typeuse : typeuse) + | RETURN_CALL_INDIRECT(tableidx : tableidx, typeuse : typeuse) + | THROW(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*) + | TRY_TABLE(blocktype : blocktype, list(syntax catch), `instr*` : instr*) + | `LOCAL.GET`(localidx : localidx) + | `LOCAL.SET`(localidx : localidx) + | `LOCAL.TEE`(localidx : localidx) + | `GLOBAL.GET`(globalidx : globalidx) + | `GLOBAL.SET`(globalidx : globalidx) + | `TABLE.GET`(tableidx : tableidx) + | `TABLE.SET`(tableidx : tableidx) + | `TABLE.SIZE`(tableidx : tableidx) + | `TABLE.GROW`(tableidx : tableidx) + | `TABLE.FILL`(tableidx : tableidx) + | `TABLE.COPY`(tableidx : tableidx, tableidx : tableidx) + | `TABLE.INIT`(tableidx : tableidx, elemidx : elemidx) + | `ELEM.DROP`(elemidx : elemidx) + | LOAD(numtype : numtype, loadop_(numtype)?, memidx : memidx, memarg : memarg) + | STORE(numtype : numtype, storeop_(numtype)?, memidx : memidx, memarg : memarg) + | VLOAD(vectype : vectype, vloadop_(vectype)?, memidx : memidx, memarg : memarg) + | VLOAD_LANE(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | VSTORE(vectype : vectype, memidx : memidx, memarg : memarg) + | VSTORE_LANE(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | `MEMORY.SIZE`(memidx : memidx) + | `MEMORY.GROW`(memidx : memidx) + | `MEMORY.FILL`(memidx : memidx) + | `MEMORY.COPY`(memidx : memidx, memidx : memidx) + | `MEMORY.INIT`(memidx : memidx, dataidx : dataidx) + | `DATA.DROP`(dataidx : dataidx) + | `REF.NULL`(heaptype : heaptype) + | `REF.IS_NULL` + | `REF.AS_NON_NULL` + | `REF.EQ` + | `REF.TEST`(reftype : reftype) + | `REF.CAST`(reftype : reftype) + | `REF.FUNC`(funcidx : funcidx) + | `REF.I31` + | `I31.GET`(sx : sx) + | `STRUCT.NEW`(typeidx : typeidx) + | `STRUCT.NEW_DEFAULT`(typeidx : typeidx) + | `STRUCT.GET`(`sx?` : sx?, typeidx : typeidx, u32 : u32) + | `STRUCT.SET`(typeidx : typeidx, u32 : u32) + | `ARRAY.NEW`(typeidx : typeidx) + | `ARRAY.NEW_DEFAULT`(typeidx : typeidx) + | `ARRAY.NEW_FIXED`(typeidx : typeidx, u32 : u32) + | `ARRAY.NEW_DATA`(typeidx : typeidx, dataidx : dataidx) + | `ARRAY.NEW_ELEM`(typeidx : typeidx, elemidx : elemidx) + | `ARRAY.GET`(`sx?` : sx?, typeidx : typeidx) + | `ARRAY.SET`(typeidx : typeidx) + | `ARRAY.LEN` + | `ARRAY.FILL`(typeidx : typeidx) + | `ARRAY.COPY`(typeidx : typeidx, typeidx : typeidx) + | `ARRAY.INIT_DATA`(typeidx : typeidx, dataidx : dataidx) + | `ARRAY.INIT_ELEM`(typeidx : typeidx, elemidx : elemidx) + | `EXTERN.CONVERT_ANY` + | `ANY.CONVERT_EXTERN` + | CONST(numtype : numtype, num_(numtype)) + | UNOP(numtype : numtype, unop_(numtype)) + | BINOP(numtype : numtype, binop_(numtype)) + | TESTOP(numtype : numtype, testop_(numtype)) + | RELOP(numtype : numtype, relop_(numtype)) + | CVTOP(numtype_1 : numtype, numtype_2 : numtype, cvtop__(numtype_2, numtype_1)) + | VCONST(vectype : vectype, vec_(vectype)) + | VVUNOP(vectype : vectype, vvunop : vvunop) + | VVBINOP(vectype : vectype, vvbinop : vvbinop) + | VVTERNOP(vectype : vectype, vvternop : vvternop) + | VVTESTOP(vectype : vectype, vvtestop : vvtestop) + | VUNOP(shape : shape, vunop_(shape)) + | VBINOP(shape : shape, vbinop_(shape)) + | VTERNOP(shape : shape, vternop_(shape)) + | VTESTOP(shape : shape, vtestop_(shape)) + | VRELOP(shape : shape, vrelop_(shape)) + | VSHIFTOP(ishape : ishape, vshiftop_(ishape)) + | VBITMASK(ishape : ishape) + | VSWIZZLOP(bshape : bshape, vswizzlop_(bshape)) + | VSHUFFLE(bshape : bshape, `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) + | VEXTUNOP(ishape_1 : ishape, ishape_2 : ishape, vextunop__(ishape_2, ishape_1)) + | VEXTBINOP(ishape_1 : ishape, ishape_2 : ishape, vextbinop__(ishape_2, ishape_1)) + | VEXTTERNOP(ishape_1 : ishape, ishape_2 : ishape, vextternop__(ishape_2, ishape_1)) + | VNARROW(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) + | VCVTOP(shape_1 : shape, shape_2 : shape, vcvtop__(shape_2, shape_1)) + | VSPLAT(shape : shape) + | VEXTRACT_LANE(shape : shape, `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*) + | VREPLACE_LANE(shape : shape, laneidx : laneidx) + | `REF.I31_NUM`(u31 : u31) + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(addrref : addrref) + | `LABEL_%{%}%`(n : n, `instr*` : instr*, `instr*` : instr*) + | `FRAME_%{%}%`(n : n, frame : frame, `instr*` : instr*) + | `HANDLER_%{%}%`(n : n, `catch*` : catch*, `instr*` : instr*) | TRAP } @@ -24895,9 +24895,9 @@ def $memarg0 : memarg ;; ../../../../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) + def $const{numtype : numtype, c : lit_(((numtype : numtype <: consttype) : consttype <: 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) + def $const{vectype : vectype, c : lit_(((vectype : vectype <: consttype) : consttype <: storagetype))}((vectype : vectype <: consttype), c) = VCONST_instr(vectype, c) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_shape(shape : shape) : free @@ -25028,85 +25028,85 @@ def $free_instr(instr : instr) : free ;; ../../../../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) + 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 []} + 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 []} + 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 []} + 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) + 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) + 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) + 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 []} + 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 []} + 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 []} + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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 []} + 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) + 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) + 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) + 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) + 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 []} + 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 []} + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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 @@ -25120,17 +25120,17 @@ def $free_instr(instr : instr) : free ;; ../../../../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) + 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) + 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) + 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) + 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) + 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) + 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 @@ -25146,66 +25146,66 @@ def $free_expr(expr : expr) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax elemmode = - | ACTIVE{tableidx : tableidx, expr : expr}(tableidx : tableidx, expr : expr) + | ACTIVE(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) + | ACTIVE(memidx : memidx, expr : expr) | PASSIVE ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax type = - | TYPE{rectype : rectype}(rectype : rectype) + | TYPE(rectype : rectype) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax tag = - | TAG{tagtype : tagtype}(tagtype : tagtype) + | TAG(tagtype : tagtype) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax global = - | GLOBAL{globaltype : globaltype, expr : expr}(globaltype : globaltype, expr : expr) + | GLOBAL(globaltype : globaltype, expr : expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax mem = - | MEMORY{memtype : memtype}(memtype : memtype) + | MEMORY(memtype : memtype) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax table = - | TABLE{tabletype : tabletype, expr : expr}(tabletype : tabletype, expr : expr) + | TABLE(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) + | DATA(`byte*` : byte*, datamode : datamode) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax local = - | LOCAL{valtype : valtype}(valtype : valtype) + | LOCAL(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) + | FUNC(typeidx : typeidx, `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) + | ELEM(reftype : reftype, `expr*` : expr*, elemmode : elemmode) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax start = - | START{funcidx : funcidx}(funcidx : funcidx) + | START(funcidx : funcidx) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax import = - | IMPORT{name : name, externtype : externtype}(name : name, name, externtype : externtype) + | IMPORT(name : 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) + | EXPORT(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*) + | MODULE(`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_type(type : type) : free @@ -25305,28 +25305,28 @@ syntax init = ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec syntax localtype = - | `%%`{init : init, valtype : valtype}(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) + | `%->_%%`(resulttype : resulttype, `localidx*` : localidx*, resulttype : 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* + TYPES deftype*, + RECS subtype*, + TAGS tagtype*, + GLOBALS globaltype*, + MEMS memtype*, + TABLES tabletype*, + FUNCS deftype*, + DATAS datatype*, + ELEMS elemtype*, + LOCALS localtype*, + LABELS resulttype*, + RETURN resulttype?, + REFS funcidx* } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec @@ -25396,11 +25396,11 @@ relation Vectype_ok: `%|-%:OK`(context, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypeidx = - | OK{typeidx : typeidx}(typeidx : typeidx) + | OK(typeidx : typeidx) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec syntax oktypeidxnat = - | OK{typeidx : typeidx, nat : nat}(typeidx : typeidx, nat : nat) + | OK(typeidx : typeidx, nat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Packtype_ok: `%|-%:OK`(context, packtype) @@ -25559,7 +25559,7 @@ 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, `comptype'*` : comptype*, `x'**` : idx**}: `%|-%:%`(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*`} @@ -25590,7 +25590,7 @@ 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, `comptype'*` : comptype*, `typeuse'**` : typeuse**, 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*`} @@ -25615,7 +25615,7 @@ relation Rectype_ok2: `%|-%:%`(context, rectype, oktypeidxnat) ;; ../../../../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}: + rule _{C : context, rectype : rectype, i : n, x : idx, n : n, `subtype*` : subtype*}: `%|-%:OK`(C, _DEF_deftype(rectype, i)) -- Rectype_ok: `%|-%:%`(C, rectype, OK_oktypeidx(x)) -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) @@ -26044,7 +26044,7 @@ def $default_(valtype : valtype) : val? ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Vnn : Vnn}((Vnn : Vnn <: 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)) + 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)) = ?() @@ -26250,70 +26250,70 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- (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)]))) + 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))]))) + rule `ref.func`{C : context, x : idx, dt : deftype}: + `%|-%:%`(C, `REF.FUNC`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) -- if (x!`%`_idx.0 < |C.FUNCS_context|) -- if (C.FUNCS_context[x!`%`_idx.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)]))) + 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]))) + 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)]))) + 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]))) + 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]))) + 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)]))) + 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]))) + 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))]))) + 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))]))) -- if (x!`%`_idx.0 < |C.TYPES_context|) -- 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))]))) + 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))]))) -- if (x!`%`_idx.0 < |C.TYPES_context|) -- 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)]))) + 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)]))) -- if (x!`%`_idx.0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if (i!`%`_u32.0 < |ft*{ft <- `ft*`}|) @@ -26321,43 +26321,43 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- 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([]))) + 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([]))) -- if (x!`%`_idx.0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) -- if (i!`%`_u32.0 < |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))]))) + 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))]))) -- if (x!`%`_idx.0 < |C.TYPES_context|) -- 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))]))) + 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))]))) -- if (x!`%`_idx.0 < |C.TYPES_context|) -- 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))]))) + 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))]))) -- if (x!`%`_idx.0 < |C.TYPES_context|) -- 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))]))) + 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))]))) -- if (x!`%`_idx.0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) -- if (y!`%`_idx.0 < |C.ELEMS_context|) -- 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))]))) + 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))]))) -- if (x!`%`_idx.0 < |C.TYPES_context|) -- 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))) @@ -26365,31 +26365,31 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- 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)]))) + 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)]))) -- if (x!`%`_idx.0 < |C.TYPES_context|) -- 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([]))) + 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([]))) -- if (x!`%`_idx.0 < |C.TYPES_context|) -- 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]))) + 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([]))) + 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([]))) -- if (x!`%`_idx.0 < |C.TYPES_context|) -- 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([]))) + 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([]))) -- if (x_1!`%`_idx.0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[x_1!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- if (x_2!`%`_idx.0 < |C.TYPES_context|) @@ -26397,16 +26397,16 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- 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([]))) + 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([]))) -- if (x!`%`_idx.0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if (y!`%`_idx.0 < |C.ELEMS_context|) -- 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([]))) + 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([]))) -- if (x!`%`_idx.0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) @@ -26414,78 +26414,78 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- 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)]))) + 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)]))) + 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]))) + rule `local.get`{C : context, x : idx, t : valtype}: + `%|-%:%`(C, `LOCAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- if (x!`%`_idx.0 < |C.LOCALS_context|) -- 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([]))) + rule `local.set`{C : context, x : idx, t : valtype, init : init}: + `%|-%:%`(C, `LOCAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) -- if (x!`%`_idx.0 < |C.LOCALS_context|) -- 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]))) + rule `local.tee`{C : context, x : idx, t : valtype, init : init}: + `%|-%:%`(C, `LOCAL.TEE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) -- if (x!`%`_idx.0 < |C.LOCALS_context|) -- 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]))) + rule `global.get`{C : context, x : idx, t : valtype, `mut?` : mut?}: + `%|-%:%`(C, `GLOBAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- if (x!`%`_idx.0 < |C.GLOBALS_context|) -- 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([]))) + rule `global.set`{C : context, x : idx, t : valtype}: + `%|-%:%`(C, `GLOBAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) -- if (x!`%`_idx.0 < |C.GLOBALS_context|) -- 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)]))) + 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 (x!`%`_idx.0 < |C.TABLES_context|) -- 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([]))) + 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 (x!`%`_idx.0 < |C.TABLES_context|) -- 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)]))) + 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 (x!`%`_idx.0 < |C.TABLES_context|) -- 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]))) + 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 (x!`%`_idx.0 < |C.TABLES_context|) -- 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([]))) + 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 (x!`%`_idx.0 < |C.TABLES_context|) -- 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([]))) + 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 (x_1!`%`_idx.0 < |C.TABLES_context|) -- if (C.TABLES_context[x_1!`%`_idx.0] = `%%%`_tabletype(at_1, lim_1, rt_1)) -- if (x_2!`%`_idx.0 < |C.TABLES_context|) @@ -26493,8 +26493,8 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- 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([]))) + 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 (x!`%`_idx.0 < |C.TABLES_context|) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt_1)) -- if (y!`%`_idx.0 < |C.ELEMS_context|) @@ -26502,48 +26502,48 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- 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([]))) + rule `elem.drop`{C : context, x : idx, rt : reftype}: + `%|-%:%`(C, `ELEM.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if (x!`%`_idx.0 < |C.ELEMS_context|) -- 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)]))) + rule `memory.size`{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- if (x!`%`_idx.0 < |C.MEMS_context|) -- 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)]))) + 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 (x!`%`_idx.0 < |C.MEMS_context|) -- 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([]))) + 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 (x!`%`_idx.0 < |C.MEMS_context|) -- 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([]))) + 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 (x_1!`%`_idx.0 < |C.MEMS_context|) -- if (C.MEMS_context[x_1!`%`_idx.0] = `%%PAGE`_memtype(at_1, lim_1)) -- if (x_2!`%`_idx.0 < |C.MEMS_context|) -- 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([]))) + 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 (x!`%`_idx.0 < |C.MEMS_context|) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- if (y!`%`_idx.0 < |C.DATAS_context|) -- 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([]))) + rule `data.drop`{C : context, x : idx}: + `%|-%:%`(C, `DATA.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) -- if (x!`%`_idx.0 < |C.DATAS_context|) -- if (C.DATAS_context[x!`%`_idx.0] = OK_datatype) @@ -26796,48 +26796,48 @@ relation Instr_const: `%|-%CONST`(context, instr) `%|-%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)) + 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) + 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)) + 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)) + 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)) + 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)) + 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)) + 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))) + 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) + 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) + 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)) + rule `global.get`{C : context, x : idx, t : valtype}: + `%|-%CONST`(C, `GLOBAL.GET`_instr(x)) -- if (x!`%`_idx.0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(?(), t)) @@ -27061,7 +27061,7 @@ relation Types_ok: `%|-%:%`(context, type*, deftype*) ;; ../../../../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*) + | `%%%%`(`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* @@ -27105,12 +27105,12 @@ relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec syntax relaxed2 = - | `%`{i : nat}(i : nat) + | `%`(i : nat) -- if ((i = 0) \/ (i = 1)) ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec syntax relaxed4 = - | `%`{i : nat}(i : nat) + | `%`(i : nat) -- if ((((i = 0) \/ (i = 1)) \/ (i = 2)) \/ (i = 3)) ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec @@ -27762,7 +27762,7 @@ def $zeroop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape ;; ../../../../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__) = ?() + 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? @@ -27777,7 +27777,7 @@ def $halfop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape ;; ../../../../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) + 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 @@ -27994,11 +27994,11 @@ def $vbinop_(shape : shape, vbinop_ : vbinop_(shape), vec_ : vec_(V128_Vnn), vec ;; ../../../../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) + 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) + 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) + 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 @@ -28074,7 +28074,7 @@ def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, sha 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*`} -- 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 : 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*`} + 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*`} -- 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 @@ -28183,43 +28183,43 @@ def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__ ;; ../../../../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) + 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) + 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 + 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)))) -- 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))), `RELAXED_DOTS`_vextbinop__, c_1, c_2)) + -- if (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)) -- if (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')) -- 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)) + | CONST(numtype : numtype, num_(numtype)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax vec = - | VCONST{vectype : vectype, vec_ : vec_(vectype)}(vectype : vectype, vec_ : vec_(vectype)) + | VCONST(vectype : vectype, 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) + | `REF.I31_NUM`(u31 : u31) + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(addrref : addrref) + | `REF.NULL`(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) + | _VALS(`val*` : val*) + | `(REF.EXN_ADDR%)THROW_REF`(exnaddr : exnaddr) | TRAP ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -28228,118 +28228,118 @@ 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) + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) | `...` ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax taginst = { - TYPE{tagtype : tagtype} tagtype + TYPE tagtype } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax globalinst = { - TYPE{globaltype : globaltype} globaltype, - VALUE{val : val} val + TYPE globaltype, + VALUE val } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax meminst = { - TYPE{memtype : memtype} memtype, - BYTES{`byte*` : byte*} byte* + TYPE memtype, + BYTES byte* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax tableinst = { - TYPE{tabletype : tabletype} tabletype, - REFS{`ref*` : ref*} ref* + TYPE tabletype, + REFS ref* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax funcinst = { - TYPE{deftype : deftype} deftype, - MODULE{moduleinst : moduleinst} moduleinst, - CODE{funccode : funccode} funccode + TYPE deftype, + MODULE moduleinst, + CODE funccode } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax datainst = { - BYTES{`byte*` : byte*} byte* + BYTES byte* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax eleminst = { - TYPE{elemtype : elemtype} elemtype, - REFS{`ref*` : ref*} ref* + TYPE elemtype, + REFS 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))) + | PACK(packtype : packtype, 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))) + | CONST(numtype : numtype, num_(numtype)) + | VCONST(vectype : vectype, vec_(vectype)) + | `REF.I31_NUM`(u31 : u31) + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(addrref : addrref) + | `REF.NULL`(heaptype : heaptype) + | PACK(packtype : packtype, iN($psizenn(packtype))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax structinst = { - TYPE{deftype : deftype} deftype, - FIELDS{`fieldval*` : fieldval*} fieldval* + TYPE deftype, + FIELDS fieldval* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax arrayinst = { - TYPE{deftype : deftype} deftype, - FIELDS{`fieldval*` : fieldval*} fieldval* + TYPE deftype, + FIELDS fieldval* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax exninst = { - TAG{tagaddr : tagaddr} tagaddr, - FIELDS{`val*` : val*} val* + TAG tagaddr, + FIELDS 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* + TAGS taginst*, + GLOBALS globalinst*, + MEMS meminst*, + TABLES tableinst*, + FUNCS funcinst*, + DATAS datainst*, + ELEMS eleminst*, + STRUCTS structinst*, + ARRAYS arrayinst*, + EXNS exninst* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax state = - | `%;%`{store : store, frame : frame}(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*) + | `%;%`(state : state, `instr*` : instr*) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $Ki : nat @@ -28649,44 +28649,44 @@ rec { 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')) + `%|-%:%`(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 rule i31{s : store, i : u31}: - `%|-%:%`(s, REF.I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) + `%|-%:%`(s, `REF.I31_NUM`_ref(i), 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))) + `%|-%:%`(s, `REF.STRUCT_ADDR`_ref(a), 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))) + `%|-%:%`(s, `REF.ARRAY_ADDR`_ref(a), 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))) + `%|-%:%`(s, `REF.FUNC_ADDR`_ref(a), 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)) + `%|-%:%`(s, `REF.EXN_ADDR`_ref(a), 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)) + `%|-%:%`(s, `REF.HOST_ADDR`_ref(a), 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)) + `%|-%:%`(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 @@ -28860,7 +28860,7 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../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)) + -- if (val = `REF.NULL`_val(ht)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-addr`{val : val, l : labelidx}: @@ -28870,7 +28870,7 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../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)) + -- 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}: @@ -28879,11 +28879,11 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../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)]) + `%~>%`([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)]) + `%~>%`([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*}: @@ -28919,76 +28919,76 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([`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)]) + 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))]) + 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)) + `%~>%`([(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))]) + `%~>%`([(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)) + `%~>%`([(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)]) + `%~>%`([(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))) + `%~>%`([(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))]) + `%~>%`([(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))]) + `%~>%`([(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]) + `%~>%`([`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))]) + `%~>%`([`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))]) + 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)]) + `%~>%`([`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)]) + `%~>%`([(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)]) + `%~>%`([`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)]) + `%~>%`([`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)}: @@ -29178,12 +29178,12 @@ def $blocktype_(state : state, blocktype : blocktype) : instrtype ;; ../../../../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, m : m, `val*` : val*, 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}: + rule loop{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, n : n, `t_2*` : valtype*}: `%~>%`(`%;%`_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*`}))) @@ -29211,18 +29211,18 @@ 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))]) + `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) -- if (a < |$funcinst(z)|) -- if (x!`%`_idx.0 < |$moduleinst(z).FUNCS_moduleinst|) -- 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]) + `%~>%`(`%;%`_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*`})])]) + rule `call_ref-func`{z : state, n : n, `val*` : val*, 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 (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*`}))) @@ -29231,7 +29231,7 @@ 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))]) + `%~>%`(`%;%`_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)|) -- if (x!`%`_idx.0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_idx.0] = a) @@ -29246,38 +29246,38 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../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]) + `%~>%`(`%;%`_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)]) + rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, n : n, `val*` : val*, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, m : m, `t_2*` : valtype*}: + `%~>%`(`%;%`_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)]) -- 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]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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 (a < |$exninst(z)|) -- if (x!`%`_idx.0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_idx.0]) @@ -29285,7 +29285,7 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../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)]) + `%~>%`(`%;%`_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 (a < |$exninst(z)|) -- if (x!`%`_idx.0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_idx.0]) @@ -29293,100 +29293,100 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../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)]) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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])]) + `%~>%`(`%;%`_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*}: + rule try_table{z : state, m : m, `val*` : val*, 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)]) + 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)]) + 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]) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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))]) + 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]) + `%~>%`(`%;%`_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)]), []) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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)]), []) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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)]), []) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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)]) -- if (j!`%`_num_.0 < |$elem(z, y).REFS_eleminst|) -- otherwise @@ -29426,9 +29426,9 @@ relation Step_read: `%~>%`(config, 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}: + 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)*, 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 rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(config, instr*) -- 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))]) + 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]) + `%~>%`(`%;%`_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)]), []) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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)]), []) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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)]), []) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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)]) -- if (j!`%`_num_.0 < |$data(z, y).BYTES_datainst|) -- 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))]) + `%~>%`(`%;%`_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])]) + rule `ref.func`{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.FUNC`_instr(x)]), [`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[x!`%`_idx.0])]) -- if (x!`%`_idx.0 < |$moduleinst(z).FUNCS_moduleinst|) ;; ../../../../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))]) + `%~>%`(`%;%`_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))]) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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)]) + 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 (|`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]) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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)]) -- if (i!`%`_u32.0 < |zt*{zt <- `zt*`}|) -- if (i!`%`_u32.0 < |$structinst(z)[a].FIELDS_structinst|) -- if (a < |$structinst(z)|) -- 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))]) + 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]) + `%~>%`(`%;%`_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))]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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))]) - -- (if ($cunpack(zt) =/= ?()))^n{c <- `c*`} + `%~>%`(`%;%`_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))]) + -- (if ($cunpack(zt) =/= ?()))^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]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) -- if (a < |$arrayinst(z)|) -- 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)]) + `%~>%`(`%;%`_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)]) -- if (i!`%`_num_.0 < |$arrayinst(z)[a].FIELDS_arrayinst|) -- if (a < |$arrayinst(z)|) -- 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]) + `%~>%`(`%;%`_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|))]) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr]), [CONST_instr(I32_numtype, `%`_num_(|$arrayinst(z)[a].FIELDS_arrayinst|))]) -- if (a < |$arrayinst(z)|) ;; ../../../../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]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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 (a < |$arrayinst(z)|) -- 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)]), []) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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 (a_1 < |$arrayinst(z)|) -- 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]) + `%~>%`(`%;%`_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 (a_2 < |$arrayinst(z)|) -- 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)]), []) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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 (a < |$arrayinst(z)|) -- 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]) + `%~>%`(`%;%`_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)]), []) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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 (j!`%`_num_.0 < |$elem(z, y).REFS_eleminst|) -- 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]) + `%~>%`(`%;%`_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]) + `%~>%`(`%;%`_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 (a < |$arrayinst(z)|) -- 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]) + `%~>%`(`%;%`_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)]), []) + `%~>%`(`%;%`_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)]) + `%~>%`(`%;%`_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)]) -- if ($cunpack(zt) =/= ?()) -- otherwise -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) @@ -29785,44 +29785,44 @@ 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, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) + rule throw{z : state, n : n, `val*` : val*, 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 (x!`%`_idx.0 < |$tagaddr(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), [])) + 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), [])) + 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])) + `%~>%`(`%;%`_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), [])) + `%~>%`(`%;%`_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|))])) + `%~>%`(`%;%`_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 ($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), `%`_num_(n)) TABLE.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))])) + `%~>%`(`%;%`_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, []), [])) + 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}: @@ -29869,54 +29869,54 @@ relation Step: `%~>%`(config, config) ;; ../../../../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)))])) + `%~>%`(`%;%`_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 ($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), `%`_num_(n)) MEMORY.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))])) + `%~>%`(`%;%`_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, []), [])) + 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)])) + rule `struct.new`{z : state, n : n, `val*` : val*, 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])) + `%~>%`(`%;%`_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)), [])) + `%~>%`(`%;%`_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)), [])) -- if (i!`%`_u32.0 < |zt*{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)])) + rule `array.new_fixed`{z : state, n : n, `val*` : val*, 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])) + `%~>%`(`%;%`_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])) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) -- if (a < |$arrayinst(z)|) -- 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)), [])) + `%~>%`(`%;%`_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))) } @@ -30112,7 +30112,7 @@ def $allocexports(moduleinst : moduleinst, export*) : exportinst* ;; ../../../../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) + 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*, `expr_G*` : expr*, `globaltype*` : globaltype*, `memtype*` : memtype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `expr_F*` : expr*, `local**` : local**, `x*` : idx*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : 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*`}) @@ -30127,7 +30127,7 @@ def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) -- 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 (fa*{fa <- `fa*`} = (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){}) -- 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*`})) @@ -30141,18 +30141,18 @@ def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) ;; ../../../../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)) = [] + def $rundata_{x : idx, n : n, `b*` : byte*}(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)] + def $rundata_{x : idx, n : n, `b*` : byte*, 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)) = [] + def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*}(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)] + def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*}(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)] + def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*, 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 { @@ -30172,7 +30172,7 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) ;; ../../../../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?`})) + 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*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, 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*`})) @@ -30181,20 +30181,20 @@ def $instantiate(store : store, module : module, externaddr*) : config -- 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 (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*`}|){}, 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_D*{instr_D <- `instr_D*`} = $concat_(syntax instr, $rundata_(`%`_dataidx(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){})) + -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){})) -- 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 : 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))]) + 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*`} @@ -30212,7 +30212,7 @@ grammar BuN(N : N) : uN(N) 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))) + prod{m : m, n : n} {{`%`_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)) } @@ -30228,7 +30228,7 @@ grammar BsN(N : N) : sN(N) 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)) + prod{i : sN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat)), n : n} {{`%`_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)) } @@ -30285,7 +30285,7 @@ grammar Blist(syntax el, grammar BX : 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 + prod{name : name, `b*` : byte*} 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 @@ -30449,7 +30449,7 @@ grammar Bstoragetype : 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) + prod{`mut?` : mut?, zt : storagetype} {{zt:Bstoragetype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_fieldtype(mut?{mut <- `mut?`}, zt) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bcomptype : comptype @@ -30495,7 +30495,7 @@ grammar Btagtype : tagtype ;; ../../../../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) + prod{`mut?` : mut?, t : valtype} {{t:Bvaltype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_globaltype(mut?{mut <- `mut?`}, t) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bmemtype : memtype @@ -30505,7 +30505,7 @@ grammar Bmemtype : memtype ;; ../../../../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) + prod{at : addrtype, lim : limits, rt : reftype} {{rt:Breftype} {(at, lim):Blimits}} => `%%%`_tabletype(at, lim, rt) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bexterntype : externtype @@ -30564,7 +30564,7 @@ grammar Bmemarg : memidxop 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)}) + prod{x : idx, n : n, 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 @@ -30610,11 +30610,11 @@ grammar Binstr : 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)) + prod{x : idx, y : 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)) + prod{x : idx, y : 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 @@ -30626,35 +30626,35 @@ grammar Binstr : instr ;; ../../../../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)) + prod{l : labelidx, `null_1?` : null?, ht_1 : heaptype, `null_2?` : null?, 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)) + prod{l : labelidx, `null_1?` : null?, ht_1 : heaptype, `null_2?` : null?, 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + prod{x : idx, y : 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) + 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) + 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) + 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) + 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) + 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 @@ -30702,85 +30702,85 @@ grammar Binstr : instr ;; ../../../../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) + 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) + 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) + prod{x : idx, y : 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) + 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) + 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) + 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) + 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 + 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) + 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 + 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 + 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)) + 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)) + 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)) + 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)) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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)) + 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) + 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) + 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) + 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) + 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) + 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) + 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 + 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) + 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) + 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) + 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) + 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 + 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 + 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 + 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) + 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) + 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 @@ -31292,7 +31292,7 @@ grammar Binstr : instr ;; ../../../../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_) + 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 @@ -31302,7 +31302,7 @@ grammar Binstr : instr ;; ../../../../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_) + 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 @@ -31326,9 +31326,9 @@ grammar Binstr : instr ;; ../../../../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_) + 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_) + 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 @@ -31360,7 +31360,7 @@ grammar Binstr : instr ;; ../../../../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__) + 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 @@ -31402,7 +31402,7 @@ grammar Binstr : instr ;; ../../../../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__) + 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 @@ -31412,7 +31412,7 @@ grammar Binstr : instr ;; ../../../../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__) + 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 @@ -31548,7 +31548,7 @@ grammar Binstr : instr ;; ../../../../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__) + 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 @@ -31583,7 +31583,7 @@ grammar Bexpr : expr ;; ../../../../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*`} + prod{`en*` : en*, len : nat} {{`%`_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 => [] @@ -31591,12 +31591,12 @@ grammar Bsection_(N : N, syntax en, grammar BX : en*) : en* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bcustom : ()* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{Bname} {Bbyte*{}}} => [()] + 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) => () + prod Bsection_(0, syntax (), grammar Bcustom) => ((), ()).1 ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Btype : type @@ -31626,7 +31626,7 @@ grammar Bfuncsec : typeidx* ;; ../../../../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)]) + 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) @@ -31687,19 +31687,19 @@ grammar Belemkind : reftype ;; ../../../../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)) + prod{`y*` : idx*, e_o : expr} {{`%`_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) + 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)) + prod{rt : reftype, `y*` : idx*, x : idx, e : expr} {{`%`_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) + 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)) + prod{`e*` : expr*, e_O : 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)) + prod{`e*` : expr*, x : idx, e_O : 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) @@ -31714,7 +31714,7 @@ 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{} + prod{t : valtype, n : n} {{`%`_u32(n):Bu32} {t:Bvaltype}} => LOCAL_local(t)^n{} ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bfunc : code @@ -31725,7 +31725,7 @@ grammar Bfunc : code ;; ../../../../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 + prod{code : code, len : nat} {{`%`_u32(len):Bu32} {code:Bfunc}} => code -- if (len = 0) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec @@ -31736,11 +31736,11 @@ grammar Bcodesec : 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)) + prod{`b*` : byte*, e : expr} {{`%`_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)) + prod{`b*` : byte*, x : idx, e : expr} {{`%`_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* @@ -31773,17 +31773,17 @@ grammar Btagsec : 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}} => () + prod {{0x00} {0x61} {0x73} {0x6D}} => ((), ()).1 ;; ../../../../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}} => () + prod {{0x01} {0x00} {0x00} {0x00}} => ((), ()).1 ;; ../../../../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*`}) + prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `typeidx*` : typeidx*, `n?` : n?, `expr*` : expr*, `local**` : local**} {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*`} @@ -31970,7 +31970,7 @@ grammar Tstring : byte* ;; ../../../../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*`}) + prod{`c*` : char*, `b*` : byte*} 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 @@ -32263,18 +32263,18 @@ grammar Tlist(syntax el, grammar TX : el) : el* ;; ../../../../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?* + TYPES name?*, + TAGS name?*, + GLOBALS name?*, + MEMS name?*, + TABLES name?*, + FUNCS name?*, + DATAS name?*, + ELEMS name?*, + LOCALS name?*, + LABELS name?*, + FIELDS name?**, + TYPEDEFS deftype?* } ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -32287,8 +32287,8 @@ rec { 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:156.1-156.53 + def $concat_idctxt{I : I, `I'*` : I*}([I] ++ I'*{I' <- `I'*`}) = I +++ $concat_idctxt(I'*{I' <- `I'*`}) } ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -32314,7 +32314,7 @@ 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 + prod{x : idx, id : name} id:Tid => x -- if (ids[x!`%`_idx.0] = ?(id)) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -32478,12 +32478,12 @@ grammar Tfieldtype_(I : I) : fieldtype ;; ../../../../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?`})))) + prod{ft : fieldtype, `id?` : char?} {{"("} {"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?`})))) + prod{t : valtype, `id?` : char?} {{"("} {"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 @@ -32497,7 +32497,7 @@ grammar Tcomptype_(I : I) : (comptype, idctxt) ;; ../../../../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 []}) + prod{`t_1*` : valtype*, `t_2*` : valtype*, `id?*` : char?*} {{"("} {"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 @@ -32512,7 +32512,7 @@ grammar Tsubtype_(I : I) : (subtype, idctxt) ;; ../../../../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 []}) + prod{st : subtype, I' : I, `id?` : char?} {{"("} {"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) @@ -32541,7 +32541,7 @@ grammar Ttypeuse_(I : I) : (typeidx, idctxt) -- 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') + prod{x : idx, I' : I, `id?*` : char?*, `t_1*` : valtype*, `t_2*` : valtype*, `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 []}) @@ -32572,15 +32572,15 @@ grammar Ttabletype_(I : I) : tabletype ;; ../../../../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 []}) + prod{jt : tagtype, `id?` : char?} {{"("} {"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 []}) + prod{gt : globaltype, `id?` : char?} {{"("} {"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 []}) + prod{mt : memtype, `id?` : char?} {{"("} {"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 []}) + prod{tt : tabletype, `id?` : char?} {{"("} {"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 []}) + prod{x : idx, `id?` : char?, 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) @@ -32685,31 +32685,31 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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 @@ -32801,81 +32801,81 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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 + 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 + 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 + 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) + 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) + 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 + prod "ref.i31" => `REF.I31`_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i31.get_s" => I31.GET_instr(S_sx) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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) + 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)) + 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) + 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) + 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) + 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) + 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) + 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) + 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 + 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) + 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) + 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) + 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) + 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 + 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 + 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 @@ -33397,7 +33397,7 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../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_) + 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 @@ -33421,11 +33421,11 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../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_) + 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_) + 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_) + 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 @@ -33591,7 +33591,7 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../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__) + 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 @@ -33621,7 +33621,7 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../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__) + 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 @@ -33651,16 +33651,16 @@ grammar Tinstrs_(I : I) : instr* ;; ../../../../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*`}) + prod{bt : blocktype, `in*` : instr*, `id?` : char?, I' : I, `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*`}) + prod{bt : blocktype, `in*` : instr*, `id?` : char?, I' : I, `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*`}) + prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*, `id?` : char?, I' : I, `id_1?` : char?, `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*`}) + prod{bt : blocktype, `c*` : catch*, `in*` : instr*, `id?` : char?, I' : I, `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?`})) } @@ -33669,384 +33669,384 @@ 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 +;; ../../../../specification/wasm-3.0/6.4-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'') + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{qt : rectype, I' : I, I'' : I, n : n, `st*` : subtype*} (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.4-text.modules.spectec + prod{jt : tagtype, `id?` : char?} {{"("} {"tag"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {jt:Ttagtype_(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 +;; ../../../../specification/wasm-3.0/6.4-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.4-text.modules.spectec + prod{gt : globaltype, e : expr, `id?` : char?} {{"("} {"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 +;; ../../../../specification/wasm-3.0/6.4-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.4-text.modules.spectec + prod{mt : memtype, `id?` : char?} {{"("} {"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 +;; ../../../../specification/wasm-3.0/6.4-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.4-text.modules.spectec + prod{tt : tabletype, e : expr, `id?` : char?} {{"("} {"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 +;; ../../../../specification/wasm-3.0/6.4-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.4-text.modules.spectec + prod{t : valtype, `id?` : char?} {{"("} {"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 +;; ../../../../specification/wasm-3.0/6.4-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 []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{x : idx, `loc**` : local**, e : expr, `id?` : char?, I_1 : I, `I_2*` : I*, 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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tdatastring : byte* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tmemuse_(I : I) : memidx - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => x -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Toffset_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{e : expr} {{"("} {"offset"} {e:Texpr_(I)} {")"}} => e -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-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.4-text.modules.spectec + prod{`b*` : byte*, `id?` : char?} {{"("} {"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.4-text.modules.spectec + prod{`b*` : byte*, x : idx, e : expr, `id?` : char?} {{"("} {"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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Telemlist_(I : I) : (reftype, expr*) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Ttableuse_(I : I) : tableidx - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => x -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"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.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, x : idx, e' : expr, `id?` : char?} {{"("} {"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.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"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.4-text.modules.spectec grammar Telemexpr_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{e : expr} {{"("} {"item"} {e:Texpr_(I)} {")"}} => e -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tstart_(I : I) : (start, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Timport_(I : I) : (import, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texport_(I : I) : (export, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texportdots : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{"("} {"export"} {Tname} {")"}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Timportdots : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{"("} {"import"} {Tname} {Tname} {")"}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $dots : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texporttagdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Ttagtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttagtype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texportglobaldots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Tglobaltype_(I)} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tglobaltype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texportmemdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Tmemtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {"("} {"data"} {Tdatastring} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tmemtype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texporttabledots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Ttabletype_(I)} {Texpr_(I)?{}}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {Treftype_(I)} {"("} {"elem"} {Telemlist_(I)} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttabletype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texportfuncdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Ttypeuse_(I)} {Tlocal_(I)*{}} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttypeuse_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texporttag_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texportglobal_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texportmem_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texporttable_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texportfunc_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tdatamem_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Telemtable_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-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 + | TYPE(rectype : rectype) + | IMPORT(name : name, name : name, externtype : externtype) + | TAG(tagtype : tagtype) + | GLOBAL(globaltype : globaltype, expr : expr) + | MEMORY(memtype : memtype) + | TABLE(tabletype : tabletype, expr : expr) + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) + | DATA(`byte*` : byte*, datamode : datamode) + | ELEM(reftype : reftype, `expr*` : expr*, elemmode : elemmode) + | START(funcidx : funcidx) + | EXPORT(name : name, externidx : externidx) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:258.1-258.76 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.1-258.76 def $typesd(decl*) : type* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:270.1-270.23 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:270.1-270.23 def $typesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:271.1-271.48 + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:259.1-259.78 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.1-259.78 def $importsd(decl*) : import* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:274.1-274.25 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:274.1-274.25 def $importsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:275.1-275.56 + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:260.1-260.75 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.1-260.75 def $tagsd(decl*) : tag* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:278.1-278.22 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:278.1-278.22 def $tagsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:279.1-279.44 + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:261.1-261.78 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.1-261.78 def $globalsd(decl*) : global* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:282.1-282.25 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:282.1-282.25 def $globalsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:283.1-283.56 + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:262.1-262.75 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.1-262.75 def $memsd(decl*) : mem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:286.1-286.22 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:286.1-286.22 def $memsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:287.1-287.44 + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:263.1-263.77 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.1-263.77 def $tablesd(decl*) : table* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:290.1-290.24 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:290.1-290.24 def $tablesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:291.1-291.52 + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:264.1-264.76 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.1-264.76 def $funcsd(decl*) : func* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:294.1-294.23 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:294.1-294.23 def $funcsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:295.1-295.48 + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:265.1-265.76 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.1-265.76 def $datasd(decl*) : data* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:298.1-298.23 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:298.1-298.23 def $datasd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:299.1-299.48 + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:266.1-266.76 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.1-266.76 def $elemsd(decl*) : elem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:302.1-302.23 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:302.1-302.23 def $elemsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:303.1-303.48 + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:267.1-267.77 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.1-267.77 def $startsd(decl*) : start* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:306.1-306.24 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:306.1-306.24 def $startsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:307.1-307.52 + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:268.1-268.78 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.1-268.78 def $exportsd(decl*) : export* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:310.1-310.25 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:310.1-310.25 def $exportsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:311.1-311.56 + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec def $ordered(decl*) : bool - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-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 + ;; ../../../../specification/wasm-3.0/6.4-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 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tdecl_(I : I) : (decl, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (type, idctxt)} ``:Ttype_(I) => (`` : (type, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (import, idctxt)} ``:Timport_(I) => (`` : (import, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (tag, idctxt)} ``:Ttag_(I) => (`` : (tag, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (global, idctxt)} ``:Tglobal_(I) => (`` : (global, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (mem, idctxt)} ``:Tmem_(I) => (`` : (mem, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (table, idctxt)} ``:Ttable_(I) => (`` : (table, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (func, idctxt)} ``:Tfunc_(I) => (`` : (func, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (data, idctxt)} ``:Tdata_(I) => (`` : (data, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (elem, idctxt)} ``:Telem_(I) => (`` : (elem, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (start, idctxt)} ``:Tstart_(I) => (`` : (start, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (export, idctxt)} ``:Texport_(I) => (`` : (export, idctxt) <: (decl, idctxt)) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-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*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `I*` : I*, `decl*` : decl*, I' : I} {{"("} {"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*`})) @@ -34062,9 +34062,9 @@ grammar Tmodule : module -- if (export*{export <- `export*`} = $exportsd(decl*{decl <- `decl*`})) -- if $ordered(decl*{decl <- `decl*`}) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tdecldots_(I : I) : (decl, idctxt)* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (decl, idctxt)} [``]:Tdecl_(I)*{} => [``] ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec @@ -34075,14 +34075,14 @@ syntax B = nat ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec syntax sym = - | _FIRST{A_1 : A}(A_1 : A) + | _FIRST(A_1 : A) | _DOTS - | _LAST{A_n : A}(A_n : A) + | _LAST(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) + | _FIRST(A_1 : A) + | _LAST(A_2 : A) ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec syntax recorddots = () @@ -34090,9 +34090,9 @@ 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 + FIELD_1 A, + FIELD_2 A, + `...` recorddots } ;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec @@ -34124,12 +34124,12 @@ 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}: + 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]))) + rule `global.get`{C : context, x : idx, t : valtype, mut : mut}: + `%|-%:%`(C, [`GLOBAL.GET`_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) -- if (x!`%`_idx.0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(?(mut), t)) @@ -34159,11 +34159,11 @@ 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*) + | `LABEL_%{%}`(n : n, `instr*` : instr*) ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec syntax callframe = - | `FRAME_%{%}`{n : n, frame : frame}(n : n, frame : 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) @@ -34183,7 +34183,7 @@ def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec syntax symdots = - | `%`{i : nat}(i : nat) + | `%`(i : nat) -- if (i = 0) ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec @@ -34194,7 +34194,7 @@ def $var(syntax X) : nat ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec grammar Bvar(syntax X) : () ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod 0x00 => () + prod 0x00 => ((), ()).1 ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec grammar Bsym : A @@ -34206,14 +34206,14 @@ grammar Bsym : 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) => `` + prod{`` : ()} ``:Bvar(syntax B) => (``, ()).1 ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod{`` : ()} ``:Bvar(syntax B) => `` + prod{`` : ()} ``:Bvar(syntax B) => (``, ()).1 ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec grammar Tvar(syntax X) : () ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod 0x00 => () + prod 0x00 => ((), ()).1 ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec grammar Tsym : A @@ -34225,9 +34225,9 @@ grammar Tsym : 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) => `` + prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod{`` : ()} ``:Tvar(syntax B) => `` + prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec syntax abbreviated = () From eef276673a74b3fe402d8edcb12743c83580da7c Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Mon, 26 Jan 2026 19:28:37 +0100 Subject: [PATCH 025/235] Allow parameterised relations in IL --- spectec/src/backend-ast/print.ml | 6 ++--- spectec/src/backend-prose/gen.ml | 24 +++++++++++++------- spectec/src/frontend/det.ml | 2 +- spectec/src/frontend/dim.ml | 14 +++++++----- spectec/src/frontend/elab.ml | 10 ++++----- spectec/src/il/ast.ml | 4 ++-- spectec/src/il/env.ml | 4 ++-- spectec/src/il/eq.ml | 4 ++-- spectec/src/il/free.ml | 18 +++++++++------ spectec/src/il/iter.ml | 4 ++-- spectec/src/il/print.ml | 11 ++++----- spectec/src/il/subst.ml | 2 +- spectec/src/il/valid.ml | 23 ++++++++++--------- spectec/src/il2al/animate.ml | 10 ++++----- spectec/src/il2al/encode.ml | 4 ++-- spectec/src/il2al/free.ml | 3 ++- spectec/src/il2al/il_walk.ml | 2 +- spectec/src/il2al/preprocess.ml | 24 ++++++++++---------- spectec/src/il2al/translate.ml | 4 +++- spectec/src/il2al/unify.ml | 2 +- spectec/src/middlend/sideconditions.ml | 31 ++++++++++++++------------ spectec/src/middlend/sub.ml | 6 ++--- spectec/src/middlend/totalize.ml | 6 ++--- spectec/src/middlend/unthe.ml | 5 ++--- 24 files changed, 124 insertions(+), 99 deletions(-) diff --git a/spectec/src/backend-ast/print.ml b/spectec/src/backend-ast/print.ml index 924e6901b..1372e94ea 100644 --- a/spectec/src/backend-ast/print.ml +++ b/spectec/src/backend-ast/print.ml @@ -160,7 +160,7 @@ and sym g = and prem pr = match pr.it with - | RulePr (x, op, e) -> Node ("rule", [id x; mixop op; exp e]) + | RulePr (x, as1, op, e) -> Node ("rule", id x :: List.map arg as1 @ [mixop op; exp e]) | IfPr e -> Node ("if", [exp e]) | LetPr (e1, e2, _xs) -> Node ("let", [exp e1; exp e2]) | ElsePr -> Atom "else" @@ -207,8 +207,8 @@ let rec def d = match d.it with | TypD (x, ps, insts) -> Node ("typ", [id x] @ List.map param ps @ List.map inst insts) - | RelD (x, op, t, rules) -> - Node ("rel", [id x; mixop op; typ t] @ List.map rule rules) + | RelD (x, ps, op, t, rules) -> + Node ("rel", [id x] @ List.map param ps @ [mixop op; typ t] @ List.map rule rules) | DecD (x, ps, t, clauses) -> Node ("def", [id x] @ List.map param ps @ [typ t] @ List.map clause clauses) | GramD (x, ps, t, prods) -> diff --git a/spectec/src/backend-prose/gen.ml b/spectec/src/backend-prose/gen.ml index 9412078ab..668abc183 100644 --- a/spectec/src/backend-prose/gen.ml +++ b/spectec/src/backend-prose/gen.ml @@ -17,6 +17,10 @@ let print_yet_prem prem fname = let s = Il.Print.string_of_prem prem in print_yet prem.at fname ("`" ^ s ^ "`") +let print_yet_rel def fname = + let s = Il.Print.string_of_def def in + print_yet def.at fname ("`" ^ s ^ "`") + (* Helpers *) module Map = Map.Make(String) @@ -32,12 +36,12 @@ let flatten_rec def = let is_validation_helper_relation def = match def.it with - | Ast.RelD (id, _, _, _) -> id.it = "Expand" || id.it = "Expand_use" + | Ast.RelD (id, _, _, _, _) -> id.it = "Expand" || id.it = "Expand_use" | _ -> false (* NOTE: Assume validation relation is `|-` *) let is_validation_relation def = match def.it with - | Ast.RelD (_, mixop, _, _) -> + | Ast.RelD (_, _, mixop, _, _) -> List.exists (List.exists (fun atom -> atom.it = Atom.Turnstile)) (Mixop.flatten mixop) | _ -> false @@ -49,7 +53,7 @@ let extract_validation_il il = let rel_has_id id rel = match rel.it with - | Ast.RelD (id', _, _, _) -> id.it = id'.it + | Ast.RelD (id', _, _, _, _) -> id.it = id'.it | _ -> false let extract_prose_hint hintexp = @@ -150,7 +154,8 @@ let get_rel_kind def = let extract_pphint relid = extract_rel_hint relid "prosepp" in match def.it with - | Ast.RelD (id, mixop, typ, _) -> + | Ast.RelD (id, params, mixop, typ, _) -> + if params <> [] then (print_yet_rel def "get_rel_kind"; OtherRel) else let mixop' = List.map (List.map Util.Source.it) (Mixop.flatten mixop) in let match_mixop pattern = mixop' = pattern || mixop' = List.tl pattern in if match_mixop valid_pattern then @@ -288,7 +293,8 @@ let rec prem_to_instrs prem = [ LetS (exp_to_expr e1, exp_to_expr e2) ] | Ast.IfPr e -> if_expr_to_instrs e - | Ast.RulePr (id, _, e) -> + | Ast.RulePr (id, args, _, e) -> + if args <> [] then (print_yet_prem prem "prem_to_instrs"; [ YetS "TODO: prem_to_instrs for RulePr" ]) else let rel = match List.find_opt (rel_has_id id) !Langs.validation_il with | Some rel -> rel @@ -450,7 +456,8 @@ let prose_of_rules name mk_concl rules = let proses_of_rel mk_concl def = match def.it with - | Ast.RelD (rel_id, _, _, rules) -> + | Ast.RelD (rel_id, params, _, _, rules) -> + if params <> [] then (print_yet_rel def "proses_of_rel"; []) else let rules = List.filter (fun r -> not (is_hidden_rule r)) rules in let frees = (Il2al.Free.free_rules rules).varid in let unified_rules = Il2al.Unify.(unify_rules (init_env frees) rules) in @@ -476,7 +483,7 @@ type vrule_group = let rec extract_vrules def = match def.it with | Ast.RecD defs -> List.concat_map extract_vrules defs - | Ast.RelD (id, _, _, rules) when id.it = "Instr_ok" -> + | Ast.RelD (id, _, _, _, rules) when id.it = "Instr_ok" -> List.map (fun rule -> (id, rule)) rules | _ -> [] (* group typing rules that have same name *) @@ -551,7 +558,8 @@ let proses_of_defaultable_rel cmpop = proses_of_rel (fun rule -> (** 9. Others **) let proses_of_other_rel rel = match rel.it with - | Ast.RelD (rel_id, mixop, args, _) -> + | Ast.RelD (rel_id, params, mixop, args, _) -> + if params <> [] then (print_yet_rel rel "proses_of_other_rel"; []) else (match extract_rel_hint rel_id "prose" with | Some hint -> (* Relation with prose hint *) diff --git a/spectec/src/frontend/det.ml b/spectec/src/frontend/det.ml index c48903e05..840479ea3 100644 --- a/spectec/src/frontend/det.ml +++ b/spectec/src/frontend/det.ml @@ -186,7 +186,7 @@ and det_prem pr = (fun s -> String.concat ", " (Set.elements s.varid)) ) @@ fun _ -> match pr.it with - | RulePr (_x, _mixop, e) -> det_exp e + | RulePr (_x, _as, _mixop, e) -> det_exp e | IfPr e -> det_cond_exp e | LetPr (e1, _e2, _xs) -> det_exp e1 | ElsePr -> empty diff --git a/spectec/src/frontend/dim.ml b/spectec/src/frontend/dim.ml index 039eb0941..6e733fdb7 100644 --- a/spectec/src/frontend/dim.ml +++ b/spectec/src/frontend/dim.ml @@ -255,7 +255,9 @@ and check_sym dims ctx g = and check_prem dims ctx prem = match prem.it with - | RulePr (_x, _mixop, e) -> check_exp dims ctx e + | RulePr (_x, as_, _mixop, e) -> + List.iter (check_arg dims ctx) as_; + check_exp dims ctx e | IfPr e -> check_exp dims ctx e | ElsePr -> () | LetPr (e1, e2, _xs) -> @@ -308,7 +310,8 @@ let rec check_def d : dims = List.iter (check_param dims) ps; List.iter (check_inst dims) insts; check_dims dims - | RelD (_x, _mixop, t, rules) -> + | RelD (_x, ps, _mixop, t, rules) -> + List.iter (check_param dims) ps; check_typ dims [] t; List.iter (check_rule dims) rules; check_dims dims @@ -668,9 +671,10 @@ and annot_param dims p : param * occur = and annot_prem dims prem : prem * occur = let it, occur = match prem.it with - | RulePr (x, op, e) -> - let e', occur = annot_exp `Rhs dims e in - RulePr (x, op, e'), occur + | RulePr (x, as1, op, e) -> + let as1', occurs = List.split (List.map (annot_arg dims) as1) in + let e', occur2 = annot_exp `Rhs dims e in + RulePr (x, as1', op, e'), List.fold_left union occur2 occurs | IfPr e -> let e', occur = annot_exp `Rhs dims e in IfPr e', occur diff --git a/spectec/src/frontend/elab.ml b/spectec/src/frontend/elab.ml index 867dd2e83..709bd9781 100644 --- a/spectec/src/frontend/elab.ml +++ b/spectec/src/frontend/elab.ml @@ -1932,7 +1932,7 @@ and elab_prem env (pr : prem) : Il.prem list = | RulePr (id, e) -> let mixop, not, _, _ = find "relation" env.rels id in let es', _s = checkpoint (elab_exp_notation' env id e not) in - [Il.RulePr (id, mixop, tup_exp_nary' es' e.at) $ pr.at] + [Il.RulePr (id, [], mixop, tup_exp_nary' es' e.at) $ pr.at] | IfPr e -> let e' = checkpoint (elab_exp env e (Il.BoolT $ e.at)) in [Il.IfPr e' $ pr.at] @@ -2576,7 +2576,7 @@ let rec elab_def env (d : def) : Il.def list = let not = Mixop.apply mixop (List.map (fun t' -> "_" $ d.at, t') ts') in let t' = tup_typ' ts' t.at in env.rels <- bind "relation" env.rels x (mixop, not, t', []); - [Il.RelD (x, mixop, t', []) $ d.at] + [Il.RelD (x, [], mixop, t', []) $ d.at] @ elab_hintdef env (RelH (x, hints) $ d.at) | RuleD (x1, x2, e, prems) -> @@ -2675,9 +2675,9 @@ let populate_def env (d' : Il.def) : Il.def = | _ps, Family insts' -> Il.TypD (x, ps', insts') $ d'.at | _ps, _k -> d' ) - | Il.RelD (x, mixop, t', []) -> + | Il.RelD (x, ps', mixop, t', []) -> let _, _, _, rules' = find "relation" env.rels x in - Il.RelD (x, mixop, t', List.map snd rules') $ d'.at + Il.RelD (x, ps', mixop, t', List.map snd rules') $ d'.at | Il.DecD (x, ps', t', []) -> let _, _, clauses' = find "definition" env.defs x in Il.DecD (x, ps', t', List.map snd clauses') $ d'.at @@ -2773,5 +2773,5 @@ let elab_exp env (e : exp) (t : typ) : Il.exp = let elab_rel env (e : exp) (x : id) : Il.exp = let env' = local_env env in match elab_prem env' (RulePr (x, e) $ e.at) with - | [{it = Il.RulePr (_, _, e'); _}] -> e' + | [{it = Il.RulePr (_, _, _, e'); _}] -> e' | _ -> assert false diff --git a/spectec/src/il/ast.ml b/spectec/src/il/ast.ml index 2360d83af..184469fad 100644 --- a/spectec/src/il/ast.ml +++ b/spectec/src/il/ast.ml @@ -130,7 +130,7 @@ and quant = param and def = def' phrase and def' = | TypD of id * param list * inst list (* syntax type (family) *) - | RelD of id * mixop * typ * rule list (* relation *) + | RelD of id * param list * mixop * typ * rule list (* relation *) | DecD of id * param list * typ * clause list (* definition *) | GramD of id * param list * typ * prod list (* grammar *) | RecD of def list (* recursive *) @@ -154,7 +154,7 @@ and prod' = and prem = prem' phrase and prem' = - | RulePr of id * mixop * exp (* premise *) + | RulePr of id * arg list * mixop * exp (* premise *) | IfPr of exp (* side condition *) | LetPr of exp * exp * string list (* binding *) | ElsePr (* otherwise *) diff --git a/spectec/src/il/env.ml b/spectec/src/il/env.ml index c81136f0a..e29c73574 100644 --- a/spectec/src/il/env.ml +++ b/spectec/src/il/env.ml @@ -16,7 +16,7 @@ module Map = Map.Make(String) type var_def = typ type typ_def = param list * inst list -type rel_def = mixop * typ * rule list +type rel_def = param list * mixop * typ * rule list type def_def = param list * typ * clause list type gram_def = param list * typ * prod list @@ -100,7 +100,7 @@ let rec env_of_def env d = match d.it with | TypD (id, ps, insts) -> bind_typ env id (ps, insts) | DecD (id, ps, t, clauses) -> bind_def env id (ps, t, clauses) - | RelD (id, mixop, t, rules) -> bind_rel env id (mixop, t, rules) + | RelD (id, ps, mixop, t, rules) -> bind_rel env id (ps, mixop, t, rules) | GramD (id, ps, t, prods) -> bind_gram env id (ps, t, prods) | RecD ds -> List.fold_left env_of_def env ds | HintD _ -> env diff --git a/spectec/src/il/eq.ml b/spectec/src/il/eq.ml index fe6d6f54e..a814f50ef 100644 --- a/spectec/src/il/eq.ml +++ b/spectec/src/il/eq.ml @@ -142,8 +142,8 @@ and eq_sym g1 g2 = and eq_prem prem1 prem2 = match prem1.it, prem2.it with - | RulePr (x1, op1, e1), RulePr (x2, op2, e2) -> - eq_id x1 x2 && eq_mixop op1 op2 && eq_exp e1 e2 + | RulePr (x1, as1, op1, e1), RulePr (x2, as2, op2, e2) -> + eq_id x1 x2 && eq_list eq_arg as1 as2 && eq_mixop op1 op2 && eq_exp e1 e2 | IfPr e1, IfPr e2 -> eq_exp e1 e2 | IterPr (prem1, e1), IterPr (prem2, e2) -> eq_prem prem1 prem2 && eq_iterexp e1 e2 diff --git a/spectec/src/il/free.ml b/spectec/src/il/free.ml index 9820ccf7c..1d0809d9d 100644 --- a/spectec/src/il/free.ml +++ b/spectec/src/il/free.ml @@ -108,7 +108,7 @@ and free_sym g = and free_prem prem = match prem.it with - | RulePr (x, _op, e) -> free_relid x ++ free_exp e + | RulePr (x, as_, _op, e) -> free_relid x ++ free_args as_ ++ free_exp e | IfPr e -> free_exp e | LetPr (e1, e2, _) -> free_exp e1 ++ free_exp e2 | ElsePr -> empty @@ -182,20 +182,24 @@ let free_hintdef hd = let rec free_def d = match d.it with - | TypD (_x, ps, insts) -> free_params ps ++ free_list free_inst insts - | RelD (_x, _mixop, t, rules) -> free_typ t ++ free_list free_rule rules + | TypD (_x, ps, insts) -> + free_params ps ++ (free_list free_inst insts -- bound_params ps) + | RelD (_x, ps, _mixop, t, rules) -> + free_params ps ++ + (free_typ t ++ free_list free_rule rules -- bound_params ps) | DecD (_x, ps, t, clauses) -> - free_params ps ++ (free_typ t -- bound_params ps) - ++ free_list free_clause clauses + free_params ps ++ + (free_typ t ++ free_list free_clause clauses -- bound_params ps) | GramD (_x, ps, t, prods) -> - free_params ps ++ (free_typ t ++ free_list free_prod prods -- bound_params ps) + free_params ps ++ + (free_typ t ++ free_list free_prod prods -- bound_params ps) | RecD ds -> free_list free_def ds | HintD hd -> free_hintdef hd let rec bound_def d = match d.it with | TypD (x, _, _) -> bound_typid x - | RelD (x, _, _, _) -> bound_relid x + | RelD (x, _, _, _, _) -> bound_relid x | DecD (x, _, _, _) -> bound_defid x | GramD (x, _, _, _) -> bound_gramid x | RecD ds -> free_list bound_def ds diff --git a/spectec/src/il/iter.ml b/spectec/src/il/iter.ml index 44b7fb80b..a38d3352a 100644 --- a/spectec/src/il/iter.ml +++ b/spectec/src/il/iter.ml @@ -206,7 +206,7 @@ and sym g = and prem pr = visit_prem pr; match pr.it with - | RulePr (x, op, e) -> relid x; mixop op; exp e + | RulePr (x, as_, op, e) -> relid x; args as_; mixop op; exp e | IfPr e -> exp e | ElsePr -> () | IterPr (pr1, it) -> iterexp prem pr1 it @@ -261,7 +261,7 @@ let rec def d = visit_def d; match d.it with | TypD (x, ps, insts) -> typid x; params ps; list inst insts - | RelD (x, op, t, rules) -> relid x; mixop op; typ t; list rule rules + | RelD (x, ps, op, t, rules) -> relid x; params ps; mixop op; typ t; list rule rules | DecD (x, ps, t, clauses) -> defid x; params ps; typ t; list clause clauses | GramD (x, ps, t, prods) -> gramid x; params ps; typ t; list prod prods | RecD ds -> list def ds diff --git a/spectec/src/il/print.ml b/spectec/src/il/print.ml index 9657e871b..05aea3ef3 100644 --- a/spectec/src/il/print.ml +++ b/spectec/src/il/print.ml @@ -199,7 +199,7 @@ and string_of_iterexp (iter, xes) = and string_of_sym g = match g.it with - | VarG (x, args) -> string_of_id x ^ string_of_args args + | VarG (x, as1) -> string_of_id x ^ string_of_args as1 | NumG n -> Printf.sprintf "0x%02X" n | TextG t -> "\"" ^ String.escaped t ^ "\"" | EpsG -> "eps" @@ -214,8 +214,9 @@ and string_of_sym g = and string_of_prem prem = match prem.it with - | RulePr (x, mixop, e) -> - string_of_id x ^ ": " ^ string_of_mixop mixop ^ string_of_exp_args e + | RulePr (x, as1, mixop, e) -> + string_of_id x ^ string_of_args as1 ^ ": " ^ + string_of_mixop mixop ^ string_of_exp_args e | IfPr e -> "if " ^ string_of_exp e | LetPr (e1, e2, xs) -> let xs' = List.map (fun x -> x $ no_region) xs in @@ -309,8 +310,8 @@ let rec string_of_def ?(suppress_pos = false) d = | TypD (x, ps, insts) -> pre ^ "syntax " ^ string_of_id x ^ string_of_params ps ^ concat "\n" (List.map (string_of_inst ~suppress_pos x) insts) ^ "\n" - | RelD (x, mixop, t, rules) -> - pre ^ "relation " ^ string_of_id x ^ ": " ^ + | RelD (x, ps, mixop, t, rules) -> + pre ^ "relation " ^ string_of_id x ^ string_of_params ps ^ ": " ^ string_of_mixop mixop ^ string_of_typ_args t ^ concat "\n" (List.map (string_of_rule ~suppress_pos) rules) ^ "\n" | DecD (x, ps, t, clauses) -> diff --git a/spectec/src/il/subst.ml b/spectec/src/il/subst.ml index d2707a920..885ed05e4 100644 --- a/spectec/src/il/subst.ml +++ b/spectec/src/il/subst.ml @@ -231,7 +231,7 @@ and subst_sym s g = and subst_prem s prem = (match prem.it with - | RulePr (x, op, e) -> RulePr (x, op, subst_exp s e) + | RulePr (x, as_, op, e) -> RulePr (x, subst_args s as_, op, subst_exp s e) | IfPr e -> IfPr (subst_exp s e) | ElsePr -> ElsePr | IterPr (prem1, iterexp) -> diff --git a/spectec/src/il/valid.ml b/spectec/src/il/valid.ml index 936464d76..9f3a5ac80 100644 --- a/spectec/src/il/valid.ml +++ b/spectec/src/il/valid.ml @@ -572,10 +572,11 @@ and valid_sym env g : typ = and valid_prem env prem = Debug.(log_in_at "il.valid_prem" prem.at (fun _ -> il_prem prem)); match prem.it with - | RulePr (x, mixop, e) -> - let mixop', t, _rules = Env.find_rel env x in + | RulePr (x, as_, mixop, e) -> + let ps, mixop', t, _rules = Env.find_rel env x in assert (Mixop.eq mixop mixop'); - valid_expmix env mixop e (mixop, t) e.at + let s = valid_args env as_ ps Subst.empty prem.at in + valid_expmix env mixop e (mixop, Subst.subst_typ s t) e.at | IfPr e -> valid_exp env e (BoolT $ e.at) | LetPr (e1, e2, xs) -> @@ -709,9 +710,10 @@ let infer_def env d : Env.t = | TypD (x, ps, _insts) -> let _env' = valid_params env ps in Env.bind_typ env x (ps, []) - | RelD (x, mixop, t, rules) -> - valid_typ env t; - Env.bind_rel env x (mixop, t, rules) + | RelD (x, ps, mixop, t, rules) -> + let env' = valid_params env ps in + valid_typ env' t; + Env.bind_rel env x (ps, mixop, t, rules) | DecD (x, ps, t, clauses) -> let env' = valid_params env ps in valid_typ env' t; @@ -731,10 +733,11 @@ let rec valid_def env d : Env.t = let env' = valid_params env ps in List.iter (valid_inst env' ps) insts; Env.bind_typ env x (ps, insts); - | RelD (x, mixop, t, rules) -> - valid_typcase env (mixop, (t, [], []), []); - List.iter (valid_rule env mixop t) rules; - Env.bind_rel env x (mixop, t, rules) + | RelD (x, ps, mixop, t, rules) -> + let env' = valid_params env ps in + valid_typcase env' (mixop, (t, [], []), []); + List.iter (valid_rule env' mixop t) rules; + Env.bind_rel env x (ps, mixop, t, rules) | DecD (x, ps, t, clauses) -> let env' = valid_params env ps in valid_typ env' t; diff --git a/spectec/src/il2al/animate.ml b/spectec/src/il2al/animate.ml index 5a19fe461..c13157538 100644 --- a/spectec/src/il2al/animate.ml +++ b/spectec/src/il2al/animate.ml @@ -72,7 +72,7 @@ let rec rewrite_iterexp' iterexp pr = { Il_walk.base_transformer with transform_exp = rewrite iterexp } in let new_ = Il_walk.transform_exp transformer in match pr with - | RulePr (id, mixop, e) -> RulePr (id, mixop, new_ e) + | RulePr (id, args, mixop, e) -> RulePr (id, args, mixop, new_ e) | IfPr e -> IfPr (new_ e) | LetPr (e1, e2, ids) -> let new_ids = List.map (rewrite_id iterexp) ids in @@ -102,7 +102,7 @@ let rec recover_iterexp' iterexp pr = { Il_walk.base_transformer with transform_exp = recover iterexp } in let new_ = Il_walk.transform_exp transformer in match pr with - | RulePr (id, mixop, e) -> RulePr (id, mixop, new_ e) + | RulePr (id, args, mixop, e) -> RulePr (id, args, mixop, new_ e) | IfPr e -> IfPr (new_ e) | LetPr (e1, e2, ids) -> let new_ids = List.map (recover_id iterexp) ids in @@ -293,7 +293,7 @@ let rec rows_of_prem vars len i p = | LetPr (_, _, targets) -> let covering_vars = List.filter_map (index_of len vars) targets in [ Assign targets, p, [i] @ covering_vars ] - | RulePr (_, _, { it = TupE args; _ }) -> + | RulePr (_, _, _, { it = TupE args; _ }) -> (* Assumpton: the only possible assigned-value is the last arg (i.e. ... |- lhs ) *) let _, l = Util.Lib.List.split_last args in let frees = (free_exp_list l) in @@ -364,9 +364,9 @@ let animate_clause c = match c.it with (* Animate defs *) let rec animate_def d = match d.it with - | RelD (id, mixop, t, rules) -> + | RelD (id, ps, mixop, t, rules) -> let rules' = List.map animate_rule rules in - RelD (id, mixop, t, rules') $ d.at + RelD (id, ps, mixop, t, rules') $ d.at | DecD (id, t1, t2, clauses) -> let new_clauses = List.map animate_clause clauses in DecD (id, t1, t2, new_clauses) $ d.at diff --git a/spectec/src/il2al/encode.ml b/spectec/src/il2al/encode.ml index 238ef53b7..149f1ae9b 100644 --- a/spectec/src/il2al/encode.ml +++ b/spectec/src/il2al/encode.ml @@ -177,9 +177,9 @@ let encode_rule r = (* Encode defs *) let rec encode_def d = match d.it with - | RelD (id, mixop, t, rules) -> + | RelD (id, ps, mixop, t, rules) -> let rules' = List.map encode_rule rules in - RelD (id, mixop, t, rules') $ d.at + RelD (id, ps, mixop, t, rules') $ d.at | RecD ds -> RecD (List.map encode_def ds) $ d.at | DecD _ | TypD _ | GramD _ | HintD _ -> d diff --git a/spectec/src/il2al/free.ml b/spectec/src/il2al/free.ml index 273b3e6fa..af0f4029f 100644 --- a/spectec/src/il2al/free.ml +++ b/spectec/src/il2al/free.ml @@ -79,8 +79,9 @@ let rec free_prem ignore_listN prem = let f = free_exp ignore_listN in let fp = free_prem ignore_listN in let fi = free_iterexp ignore_listN in + let fa = free_arg ignore_listN in match prem.it with - | RulePr (_id, _op, e) -> f e + | RulePr (_id, args, _op, e) -> free_list fa args ++ f e | IfPr e -> f e | LetPr (e1, e2, _ids) -> f e1 ++ f e2 | ElsePr -> empty diff --git a/spectec/src/il2al/il_walk.ml b/spectec/src/il2al/il_walk.ml index 8c8ddf246..90d5c842e 100644 --- a/spectec/src/il2al/il_walk.ml +++ b/spectec/src/il2al/il_walk.ml @@ -70,7 +70,7 @@ and transform_arg t a = and transform_prem t p = let f = t.transform_prem in let it = match p.it with - | RulePr (id, op, e) -> RulePr (id, op, transform_exp t e) + | RulePr (id, as1, op, e) -> RulePr (id, List.map (transform_arg t) as1, op, transform_exp t e) | IfPr e -> IfPr (transform_exp t e) | LetPr (e1, e2, ss) -> LetPr (transform_exp t e1, transform_exp t e2, ss) | ElsePr -> ElsePr diff --git a/spectec/src/il2al/preprocess.ml b/spectec/src/il2al/preprocess.ml index 6a79fa26a..8c44dc02a 100644 --- a/spectec/src/il2al/preprocess.ml +++ b/spectec/src/il2al/preprocess.ml @@ -27,8 +27,8 @@ let transform_rulepr_clause (clause: clause) : clause = let transform_rulepr_def (def: def) : def = match def.it with - | RelD (id, mixop, t, rules) -> - RelD (id, mixop, t, List.map transform_rulepr_rule rules) $ def.at + | RelD (id, ps, mixop, t, rules) -> + RelD (id, ps, mixop, t, List.map transform_rulepr_rule rules) $ def.at | DecD (id, ps, t, clauses) -> DecD (id, ps, t, List.map transform_rulepr_clause clauses) $ def.at | _ -> def @@ -85,8 +85,8 @@ let remove_or_clause clause = let remove_or def = match def.it with - | RelD (id, mixop, typ, rules) -> - RelD (id, mixop, typ, List.concat_map remove_or_rule rules) $ def.at + | RelD (id, params, mixop, typ, rules) -> + RelD (id, params, mixop, typ, List.concat_map remove_or_rule rules) $ def.at | DecD (id, params, typ, clauses) -> DecD (id, params, typ, List.concat_map remove_or_clause clauses) $ def.at | _ -> def @@ -116,8 +116,8 @@ let is_block_context_rule rule = | _ -> false let remove_block_context def = match def.it with - | RelD (id, mixop, typ, rules) -> - RelD (id, mixop, typ, Util.Lib.List.filter_not is_block_context_rule rules) $ def.at + | RelD (id, params, mixop, typ, rules) -> + RelD (id, params, mixop, typ, Util.Lib.List.filter_not is_block_context_rule rules) $ def.at | _ -> def @@ -128,7 +128,7 @@ let rec preprocess_prem prem = prem |> preprocess_prem |> List.map (fun new_prem -> IterPr (new_prem, iterexp) $ prem.at) - | RulePr (id, mixop, exp) -> + | RulePr (id, _args, mixop, exp) -> let lhs_rhs_opt = match Xl.Mixop.flatten mixop, exp.it with (* `id`: |- `lhs` : `rhs` *) @@ -182,9 +182,9 @@ let preprocess_def (def: def) : def = match def'.it with | TypD (id, ps, insts) -> Al.Valid.il_env := Env.bind_typ !Al.Valid.il_env id (ps, insts); def' - | RelD (id, mixop, t, rules) -> - Al.Valid.il_env := Env.bind_rel !Al.Valid.il_env id (mixop, t, rules); - RelD (id, mixop, t, List.map preprocess_rule rules) $ def.at + | RelD (id, ps, mixop, t, rules) -> + Al.Valid.il_env := Env.bind_rel !Al.Valid.il_env id (ps, mixop, t, rules); + RelD (id, ps, mixop, t, List.map preprocess_rule rules) $ def.at | DecD (id, ps, t, clauses) -> Al.Valid.il_env := Env.bind_def !Al.Valid.il_env id (ps, t, clauses); DecD (id, ps, t, List.map preprocess_clause clauses) $ def.at @@ -204,14 +204,14 @@ let preprocess (il: script) : rule_def list * helper_def list = let is_al_target def = match def.it with | DecD (id, _, _, _) when id.it = "utf8" -> None - | RelD (id, mixop, t, rules) when List.mem id.it [ "Step"; "Step_read"; "Step_pure" ] -> + | RelD (id, ps, mixop, t, rules) when List.mem id.it [ "Step"; "Step_read"; "Step_pure" ] -> (* HARDCODE: Exclude administrative rules *) let filter_rule rule = ["pure"; "read"; "trap"; "ctxt"] |> List.mem (name_of_rule rule) |> not in - Some (RelD (id, mixop, t, List.filter filter_rule rules) $ def.at) + Some (RelD (id, ps, mixop, t, List.filter filter_rule rules) $ def.at) | RelD _ -> None | _ -> Some def in diff --git a/spectec/src/il2al/translate.ml b/spectec/src/il2al/translate.ml index f1719b263..e2782be83 100644 --- a/spectec/src/il2al/translate.ml +++ b/spectec/src/il2al/translate.ml @@ -978,7 +978,9 @@ and translate_prem prem = | Il.LetPr (exp1, exp2, ids) -> init_lhs_id (); translate_letpr exp1 exp2 ids - | Il.RulePr (id, _, exp) -> translate_rulepr id exp + | Il.RulePr (id, args, _, exp) -> + if args <> [] then error prem.at "Cannot handle rule arguments"; + translate_rulepr id exp | Il.IterPr (pr, iterexp) -> translate_iterpr pr iterexp diff --git a/spectec/src/il2al/unify.ml b/spectec/src/il2al/unify.ml index fba8cba1c..4db51215a 100644 --- a/spectec/src/il2al/unify.ml +++ b/spectec/src/il2al/unify.ml @@ -409,7 +409,7 @@ let rec group_rules : (id * rule) list -> rule_def list = function (* extract reduction rules for wasm instructions *) let extract_rules def = match def.it with - | RelD (id, _, _, rules) -> List.map (fun rule -> id, rule) rules + | RelD (id, _, _, _, rules) -> List.map (fun rule -> id, rule) rules | _ -> [] let unify_ctxt (env: env) (input_vars: string list) (clauses: rule_clause list) : rule_clause list = diff --git a/spectec/src/middlend/sideconditions.ml b/spectec/src/middlend/sideconditions.ml index 7d9c3f114..5000d5676 100644 --- a/spectec/src/middlend/sideconditions.ml +++ b/spectec/src/middlend/sideconditions.ml @@ -129,7 +129,7 @@ and t_arg env arg = match arg.it with let rec t_prem env prem = (match prem.it with - | RulePr (_, _, exp) -> t_exp env exp + | RulePr (_, args, _, exp) -> List.concat_map (t_arg env) args @ t_exp env exp | IfPr e -> t_exp env e | LetPr (e1, e2, _) -> t_exp env e1 @ t_exp env e2 | ElsePr -> [] @@ -165,27 +165,30 @@ let reduce_prems prems = prems |> Util.Lib.List.filter_not is_true |> Util.Lib.List.nub implies -let t_rule' = function +let t_params env = + List.fold_left (fun env param -> + match param.it with + | ExpP (v, t) -> Env.add v.it t env + | TypP _ | DefP _ | GramP _ -> error param.at "unexpected type argument in rule" + ) env + +let t_rule' env = function | RuleD (id, params, mixop, exp, prems) -> - let env = List.fold_left (fun env param -> - match param.it with - | ExpP (v, t) -> Env.add v.it t env - | TypP _ | DefP _ | GramP _ -> error param.at "unexpected type argument in rule" - ) Env.empty params - in - let prems' = t_prems env prems in - let extra_prems = t_exp env exp in + let env' = t_params env params in + let prems' = t_prems env' prems in + let extra_prems = t_exp env' exp in let reduced_prems = reduce_prems (extra_prems @ prems') in RuleD (id, params, mixop, exp, reduced_prems) -let t_rule x = { x with it = t_rule' x.it } +let t_rule env x = { x with it = t_rule' env x.it } -let t_rules = List.map t_rule +let t_rules env = List.map (t_rule env) let rec t_def' = function | RecD defs -> RecD (List.map t_def defs) - | RelD (id, mixop, typ, rules) -> - RelD (id, mixop, typ, t_rules rules) + | RelD (id, params, mixop, typ, rules) -> + let env = t_params Env.empty params in + RelD (id, params, mixop, typ, t_rules env rules) | def -> def and t_def x = { x with it = t_def' x.it } diff --git a/spectec/src/middlend/sub.ml b/spectec/src/middlend/sub.ml index 1db340d05..1aa0fe5d9 100644 --- a/spectec/src/middlend/sub.ml +++ b/spectec/src/middlend/sub.ml @@ -214,7 +214,7 @@ and t_args env = List.map (t_arg env) and t_params env = List.map (t_param env) and t_prem' env = function - | RulePr (id, mixop, exp) -> RulePr (id, mixop, t_exp env exp) + | RulePr (id, args, mixop, exp) -> RulePr (id, t_args env args, mixop, t_exp env exp) | IfPr e -> IfPr (t_exp env e) | LetPr (e1, e2, ids) -> LetPr (t_exp env e1, t_exp env e2, ids) | ElsePr -> ElsePr @@ -260,8 +260,8 @@ let rec t_def' env = function DecD (id, t_params env params, typ, t_clauses env clauses) | TypD (id, params, insts) -> TypD (id, t_params env params, t_insts env insts) - | RelD (id, mixop, typ, rules) -> - RelD (id, mixop, t_typ env typ, List.map (t_rule env) rules) + | RelD (id, params, mixop, typ, rules) -> + RelD (id, t_params env params, mixop, t_typ env typ, List.map (t_rule env) rules) | GramD (id, params, typ, prods) -> GramD (id, t_params env params, typ, t_prods env prods) | HintD _ as def -> def diff --git a/spectec/src/middlend/totalize.ml b/spectec/src/middlend/totalize.ml index c9813e737..ade0ec336 100644 --- a/spectec/src/middlend/totalize.ml +++ b/spectec/src/middlend/totalize.ml @@ -152,7 +152,7 @@ and t_args env = List.map (t_arg env) and t_params env = List.map (t_param env) and t_prem' env = function - | RulePr (id, mixop, exp) -> RulePr (id, mixop, t_exp env exp) + | RulePr (id, args, mixop, exp) -> RulePr (id, t_args env args, mixop, t_exp env exp) | IfPr e -> IfPr (t_exp env e) | LetPr (e1, e2, ids) -> LetPr (t_exp env e1, t_exp env e2, ids) | ElsePr -> ElsePr @@ -216,8 +216,8 @@ let rec t_def' env = function DecD (id, params', typ', clauses') | TypD (id, params, insts) -> TypD (id, t_params env params, t_insts env insts) - | RelD (id, mixop, typ, rules) -> - RelD (id, mixop, t_typ env typ, List.map (t_rule env) rules) + | RelD (id, params, mixop, typ, rules) -> + RelD (id, t_params env params, mixop, t_typ env typ, List.map (t_rule env) rules) | GramD (id, params, typ, prods) -> GramD (id, t_params env params, typ, List.map (t_prod env) prods) | HintD _ as def -> def diff --git a/spectec/src/middlend/unthe.ml b/spectec/src/middlend/unthe.ml index 7f4e02463..fb2155f82 100644 --- a/spectec/src/middlend/unthe.ml +++ b/spectec/src/middlend/unthe.ml @@ -196,8 +196,7 @@ let rec t_prem n : prem -> eqns * prem = phrase t_prem' n and t_prem' n prem : eqns * prem' = match prem with - | RulePr (a, b, exp) -> - unary t_exp n exp (fun exp' -> RulePr (a, b, exp')) + | RulePr (a, args, b, exp) -> binary (fun n x -> t_list t_arg n x Fun.id) t_exp n (args, exp) (fun (args', exp') -> RulePr (a, args', b, exp')) | IfPr e -> unary t_exp n e (fun e' -> IfPr e') | LetPr (e1, e2, ids) -> binary t_exp t_exp n (e1, e2) (fun (e1', e2') -> LetPr (e1', e2', ids)) | ElsePr -> [], prem @@ -222,7 +221,7 @@ let t_rule x = { x with it = t_rule' x.it } let rec t_def' = function | RecD defs -> RecD (List.map t_def defs) - | RelD (id, mixop, typ, rules) -> RelD (id, mixop, typ, List.map t_rule rules) + | RelD (id, params, mixop, typ, rules) -> RelD (id, params, mixop, typ, List.map t_rule rules) | def -> def and t_def x = { x with it = t_def' x.it } From 8df3f966c42f84166af771591b5d0ef4a410eef6 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Tue, 27 Jan 2026 13:34:34 +0100 Subject: [PATCH 026/235] Surface relation parameters in EL --- spectec/doc/Language.md | 12 +++++----- spectec/src/backend-latex/render.ml | 16 ++++++------- spectec/src/backend-prose/prose_util.ml | 4 ++-- spectec/src/backend-splice/splice.ml | 4 ++-- spectec/src/el/ast.ml | 6 ++--- spectec/src/el/eq.ml | 3 ++- spectec/src/el/free.ml | 8 +++---- spectec/src/el/iter.ml | 12 +++++----- spectec/src/el/print.ml | 11 +++++---- spectec/src/el/subst.ml | 6 ++--- spectec/src/frontend/elab.ml | 32 +++++++++++++++---------- spectec/src/frontend/parser.mly | 15 ++++++++---- 12 files changed, 72 insertions(+), 57 deletions(-) diff --git a/spectec/doc/Language.md b/spectec/doc/Language.md index 24fd7b6ce..dfabc5fbc 100644 --- a/spectec/doc/Language.md +++ b/spectec/doc/Language.md @@ -334,7 +334,7 @@ premise ::= "var" id ":" typ local variable declaration "if" exp side condition "otherwise" fallback side condition - relid ":" exp relational premise + relid args ":" exp relational premise "(" premise ")" iter* iterated relational premise ``` @@ -1098,8 +1098,8 @@ While functions are used to algorithmically compute on a meta-level, ``` def ::= - "relation" relid ":" nottyp relation declaration - "rule" relid subid* ":" exp ("--" premise)* rule + "relation" relid params ":" nottyp relation declaration + "rule" relid params subid* ":" exp ("--" premise)* rule ``` Relations are declared with a type that specifies their notation, @@ -1554,8 +1554,8 @@ def ::= "syntax" varid params hint* syntax declaration "syntax" varid subid* params hint* "=" deftyp syntax definition "grammar" gramid subid* params ":" typ hint* "=" gram grammar definition - "relation" relid hint* ":" nottyp relation declaration - "rule" relid subid* hint* ":" exp ("--" premise)* rule + "relation" relid params hint* ":" nottyp relation declaration + "rule" relid params subid* hint* ":" exp ("--" premise)* rule "var" varid ":" typ hint* variable declaration "def" "$" defid params ":" typ hint* function declaration "def" "$" defid args "=" exp ("--" premise)* function clause @@ -1568,7 +1568,7 @@ def ::= premise ::= "var" id ":" typ local variable declaration - relid ":" exp relational premise + relid args ":" exp relational premise "if" exp side condition "otherwise" fallback side condition "(" premise ")" iter* iterated relational premise diff --git a/spectec/src/backend-latex/render.ml b/spectec/src/backend-latex/render.ml index b91719144..7b0549a6e 100644 --- a/spectec/src/backend-latex/render.ml +++ b/spectec/src/backend-latex/render.ml @@ -335,7 +335,7 @@ let env_def env d : (id * typ list) list = env_macro env.macro_gram id1; env_hintdef env (GramH (id1, id2, hints) $ d.at); [] - | RelD (id, t, hints) -> + | RelD (id, _ps, t, hints) -> env_hintdef env (RelH (id, hints) $ d.at); env_typcon env id ((t, []), hints); [] @@ -1448,7 +1448,7 @@ and render_fieldname env atom = and render_prem env prem = match prem.it with | VarPr _ -> assert false - | RulePr (_id, e) -> render_exp env e + | RulePr (_id, _ps, e) -> render_exp env e | IfPr e -> render_exp env e | ElsePr -> error prem.at "misplaced `otherwise` premise" | IterPr ({it = IterPr _; _} as prem', iter) -> @@ -1760,7 +1760,7 @@ let render_gramdef env d : row list = let render_ruledef_infer env d = match d.it with - | RuleD (id1, id2, e, prems) -> + | RuleD (id1, _ps, id2, e, prems) -> let prems' = filter_nl_list (function {it = VarPr _; _} -> false | _ -> true) prems in "\\frac{\n" ^ (if has_nl prems then "\\begin{array}{@{}c@{}}\n" else "") ^ @@ -1774,7 +1774,7 @@ let render_ruledef_infer env d = let render_ruledef env d : row list = match d.it with - | RuleD (id1, id2, e, prems) -> + | RuleD (id1, _ps, id2, e, prems) -> let e1, op, e2 = match e.it with | InfixE (e1, op, ({it = SeqE (e21::es22); _} as e2)) when Atom.is_sub op -> @@ -1837,10 +1837,10 @@ let rec render_defs env = function let sp_deco = if env.deco_gram then sp else "@{}" in render_table env sp ["l"; sp_deco ^ "r"; "r"; "l"; "@{}l"; "@{}l"; "@{}l"] 1 3 (render_sep_defs (render_gramdef env) ds') - | RelD (_, t, _) -> + | RelD (_, _ps, t, _) -> "\\boxed{" ^ render_typ env t ^ "}" ^ (if ds' = [] then "" else " \\; " ^ render_defs env ds') - | RuleD (id1, _, _, _) -> + | RuleD (id1, _, _, _, _) -> if Map.mem id1.it !(env.tab_rel) then (* Columns: decorator & lhs & op & rhs & premise *) let sp_deco = if env.deco_rule then sp else "@{}" in @@ -1884,7 +1884,7 @@ let rec split_tabdefs id tabdefs = function | [] -> List.rev tabdefs, [] | d::ds -> match d.it with - | RuleD (id1, _, _, _) when id1.it = id -> + | RuleD (id1, _, _, _, _) when id1.it = id -> split_tabdefs id (d::tabdefs) ds | _ -> List.rev tabdefs, d::ds @@ -1910,7 +1910,7 @@ let rec render_script env = function | RelD _ -> "$" ^ render_def env d ^ "$\n\n" ^ render_script env ds - | RuleD (id1, _, _, _) -> + | RuleD (id1, _, _, _, _) -> if Map.mem id1.it !(env.tab_rel) then let tabdefs, ds' = split_tabdefs id1.it [d] ds in "$$\n" ^ render_defs env tabdefs ^ "\n$$\n\n" ^ diff --git a/spectec/src/backend-prose/prose_util.ml b/spectec/src/backend-prose/prose_util.ml index 3cd5e7fa7..39c876e3f 100644 --- a/spectec/src/backend-prose/prose_util.ml +++ b/spectec/src/backend-prose/prose_util.ml @@ -125,7 +125,7 @@ let env_def d = | GramD (id1, id2, _ps, t, _gram, hints) -> env_hintdef (GramH (id1, id2, hints) $ d.at); env_typ id1 t; - | RelD (id, t, hints) -> + | RelD (id, _ps, t, hints) -> env_hintdef (RelH (id, hints) $ d.at); env_typ id t; | VarD (id, t, hints) -> @@ -148,7 +148,7 @@ let find_relation name = let open El.Ast in List.find_opt (fun def -> match def.it with - | RelD (id, _, _) when id.it = name -> true + | RelD (id, _, _, _) when id.it = name -> true | _ -> false ) !Langs.el diff --git a/spectec/src/backend-splice/splice.ml b/spectec/src/backend-splice/splice.ml index 4704a157b..6499e915c 100644 --- a/spectec/src/backend-splice/splice.ml +++ b/spectec/src/backend-splice/splice.ml @@ -85,9 +85,9 @@ let env_def env def = let grammar = Map.find id1.it env.gram in let gfragments = grammar.gfragments @ [(id2.it, def, ref 0)] in env.gram <- Map.add id1.it {grammar with gfragments} env.gram - | RelD (id, _, _) -> + | RelD (id, _, _, _) -> env.rel <- Map.add id.it {rdef = def; rules = []} env.rel - | RuleD (id1, id2, _, _) -> + | RuleD (id1, _, id2, _, _) -> let relation = Map.find id1.it env.rel in let rules = relation.rules @ [(id2.it, def, ref 0)] in env.rel <- Map.add id1.it {relation with rules} env.rel diff --git a/spectec/src/el/ast.ml b/spectec/src/el/ast.ml index 89291e880..60adea94f 100644 --- a/spectec/src/el/ast.ml +++ b/spectec/src/el/ast.ml @@ -173,8 +173,8 @@ and def' = | FamD of id * param list * hint list (* `syntax` typid params hint* *) | TypD of id * id * arg list * typ * hint list (* `syntax` typid args hint* `=` typ *) | GramD of id * id * param list * typ * gram * hint list (* `grammar` gramid params hint* `:` type `=` gram *) - | RelD of id * typ * hint list (* `relation` relid `:` typ hint* *) - | RuleD of id * id * exp * prem nl_list (* `rule` relid ruleid? `:` exp (`--` prem)* *) + | RelD of id * param list * typ * hint list (* `relation` relid params `:` typ hint* *) + | RuleD of id * param list * id * exp * prem nl_list (* `rule` relid params ruleid? `:` exp (`--` prem)* *) | VarD of id * typ * hint list (* `var` varid `:` typ *) | DecD of id * param list * typ * hint list (* `def` `$` defid params `:` typ hint* *) | DefD of id * arg list * exp * prem nl_list (* `def` `$` defid args `=` exp (`--` prem)* *) @@ -184,7 +184,7 @@ and def' = and prem = prem' phrase and prem' = | VarPr of id * typ (* `var` id `:` typ *) - | RulePr of id * exp (* ruleid `:` exp *) + | RulePr of id * arg list * exp (* ruleid args `:` exp *) | IfPr of exp (* `if` exp *) | ElsePr (* `otherwise` *) | IterPr of prem * iter (* prem iter *) diff --git a/spectec/src/el/eq.ml b/spectec/src/el/eq.ml index ddeffdb3f..e9d935593 100644 --- a/spectec/src/el/eq.ml +++ b/spectec/src/el/eq.ml @@ -139,7 +139,8 @@ and eq_path p1 p2 = and eq_prem prem1 prem2 = match prem1.it, prem2.it with | VarPr (id1, t1), VarPr (id2, t2) -> eq_id id1 id2 && eq_typ t1 t2 - | RulePr (id1, e1), RulePr (id2, e2) -> eq_id id1 id2 && eq_exp e1 e2 + | RulePr (id1, as1, e1), RulePr (id2, as2, e2) -> + eq_id id1 id2 && eq_list eq_arg as1 as2 && eq_exp e1 e2 | IfPr e1, IfPr e2 -> eq_exp e1 e2 | IterPr (prem11, iter1), IterPr (prem21, iter2) -> eq_prem prem11 prem21 && eq_iter iter1 iter2 diff --git a/spectec/src/el/free.ml b/spectec/src/el/free.ml index 793da3250..738b02ddc 100644 --- a/spectec/src/el/free.ml +++ b/spectec/src/el/free.ml @@ -125,7 +125,7 @@ and free_gram gram = and free_prem prem = match prem.it with | VarPr (id, t) -> free_varid id ++ free_typ t - | RulePr (id, e) -> free_relid id ++ free_exp e + | RulePr (id, as_, e) -> free_relid id ++ free_args as_ ++ free_exp e | IfPr e -> free_exp e | ElsePr -> empty | IterPr (prem1, iter) -> free_prem prem1 ++ free_iter iter @@ -172,9 +172,9 @@ let free_def d = free_params ps ++ (free_typ t ++ free_gram gram -- bound_params ps -- impl_bound_typ ps t) | VarD (_id, t, _hints) -> free_typ t | SepD -> empty - | RelD (_id, t, _hints) -> free_typ t - | RuleD (id1, _id2, e, prems) -> - free_relid id1 ++ free_exp e ++ free_prems prems + | RelD (_id, ps, t, _hints) -> free_typ t -- bound_params ps + | RuleD (id1, ps, _id2, e, prems) -> + free_relid id1 ++ (free_exp e ++ free_prems prems -- bound_params ps) | DecD (_id, ps, t, _hints) -> free_params ps ++ free_typ t -- bound_params ps | DefD (id, as_, e, prems) -> diff --git a/spectec/src/el/iter.ml b/spectec/src/el/iter.ml index d060083f8..7da409a80 100644 --- a/spectec/src/el/iter.ml +++ b/spectec/src/el/iter.ml @@ -164,7 +164,7 @@ and prem pr = visit_prem pr; match pr.it with | VarPr (x, t) -> varid x; typ t - | RulePr (x, e) -> relid x; exp e + | RulePr (x, as_, e) -> relid x; args as_; exp e | IfPr e -> exp e | ElsePr -> () | IterPr (pr1, it) -> prem pr1; iter it @@ -236,8 +236,8 @@ let def d = | GramD (x1, x2, ps, t, gr, hs) -> typid x1; ruleid x2; params ps; typ t; gram gr; hints hs | VarD (x, t, hs) -> varid x; typ t; hints hs | SepD -> () - | RelD (x, t, hs) -> relid x; typ t; hints hs - | RuleD (x1, x2, e, prs) -> relid x1; ruleid x2; exp e; prems prs + | RelD (x, ps, t, hs) -> relid x; params ps; typ t; hints hs + | RuleD (x1, ps, x2, e, prs) -> relid x1; params ps; ruleid x2; exp e; prems prs | DecD (x, ps, t, hs) -> defid x; params ps; typ t; hints hs | DefD (x, as_, e, prs) -> defid x; args as_; exp e; prems prs | HintD hd -> hintdef hd @@ -359,7 +359,7 @@ and clone_gram gram = and clone_prem pr = (match pr.it with | VarPr (x, t) -> VarPr (x, clone_typ t) - | RulePr (x, e) -> RulePr (x, clone_exp e) + | RulePr (x, as_, e) -> RulePr (x, List.map clone_arg as_, clone_exp e) | IfPr e -> IfPr (clone_exp e) | ElsePr -> ElsePr | IterPr (pr1, it) -> IterPr (clone_prem pr1, clone_iter it) @@ -400,8 +400,8 @@ let clone_def d = | GramD (x1, x2, ps, t, gr, hs) -> GramD (x1, x2, List.map clone_param ps, clone_typ t, clone_gram gr, List.map clone_hint hs) | VarD (x, t, hs) -> VarD (x, clone_typ t, List.map clone_hint hs) | SepD -> SepD - | RelD (x, t, hs) -> RelD (x, clone_typ t, List.map clone_hint hs) - | RuleD (x1, x2, e, prs) -> RuleD (x1, x2, clone_exp e, Convert.map_nl_list clone_prem prs) + | RelD (x, ps, t, hs) -> RelD (x, List.map clone_param ps, clone_typ t, List.map clone_hint hs) + | RuleD (x1, ps, x2, e, prs) -> RuleD (x1, List.map clone_param ps, x2, clone_exp e, Convert.map_nl_list clone_prem prs) | DecD (x, ps, t, hs) -> DecD (x, List.map clone_param ps, clone_typ t, List.map clone_hint hs) | DefD (x, as_, e, prs) -> DefD (x, List.map clone_arg as_, clone_exp e, Convert.map_nl_list clone_prem prs) | HintD hd -> HintD (clone_hintdef hd) diff --git a/spectec/src/el/print.ml b/spectec/src/el/print.ml index c9858920b..5e430540e 100644 --- a/spectec/src/el/print.ml +++ b/spectec/src/el/print.ml @@ -263,7 +263,8 @@ and string_of_gram gram = and string_of_prem prem = match prem.it with | VarPr (id, t) -> "var " ^ string_of_varid id ^ ": " ^ string_of_typ t - | RulePr (id, e) -> string_of_relid id ^ ": " ^ string_of_exp e + | RulePr (id, as_, e) -> + string_of_relid id ^ string_of_args as_ ^ ": " ^ string_of_exp e | IfPr e -> "if " ^ string_of_exp e | ElsePr -> "otherwise" | IterPr ({it = IterPr _; _} as prem', iter) -> @@ -307,10 +308,10 @@ let string_of_def d = "grammar " ^ string_of_gramid id1 ^ string_of_ruleid id2 ^ string_of_params ps ^ " : " ^ string_of_typ t ^ " = " ^ string_of_gram gram - | RelD (id, t, _hints) -> - "relation " ^ string_of_relid id ^ ": " ^ string_of_typ t - | RuleD (id1, id2, e, prems) -> - "rule " ^ string_of_relid id1 ^ string_of_ruleid id2 ^ ":\n " ^ + | RelD (id, ps, t, _hints) -> + "relation " ^ string_of_relid id ^ string_of_params ps ^ ": " ^ string_of_typ t + | RuleD (id1, ps, id2, e, prems) -> + "rule " ^ string_of_relid id1 ^ string_of_params ps ^ string_of_ruleid id2 ^ ":\n " ^ string_of_exp e ^ string_of_nl_list "" "" (prefix "\n -- " string_of_prem) prems | VarD (id, t, _hints) -> diff --git a/spectec/src/el/subst.ml b/spectec/src/el/subst.ml index 09c8da368..b560b8866 100644 --- a/spectec/src/el/subst.ml +++ b/spectec/src/el/subst.ml @@ -230,7 +230,7 @@ and subst_gram s gram = and subst_prem s prem = (match prem.it with | VarPr (id, t) -> VarPr (id, subst_typ s t) - | RulePr (id, e) -> RulePr (id, subst_exp s e) + | RulePr (id, as_, e) -> RulePr (id, List.map (subst_arg s) as_, subst_exp s e) | IfPr e -> IfPr (subst_exp s e) | ElsePr -> ElsePr | IterPr (prem1, iter) -> IterPr (subst_prem s prem1, subst_iter s iter) @@ -263,8 +263,8 @@ let subst_def s d = | GramD (x1, x2, ps, t, gr, hs) -> GramD (x1, x2, List.map (subst_param s) ps, subst_typ s t, subst_gram s gr, hs) | VarD (x, t, hs) -> VarD (x, subst_typ s t, hs) | SepD -> SepD - | RelD (x, t, hs) -> RelD (x, subst_typ s t, hs) - | RuleD (x1, x2, e, prs) -> RuleD (x1, x2, subst_exp s e, Convert.map_nl_list (subst_prem s) prs) + | RelD (x, ps, t, hs) -> RelD (x, List.map (subst_param s) ps, subst_typ s t, hs) + | RuleD (x1, ps, x2, e, prs) -> RuleD (x1, List.map (subst_param s) ps, x2, subst_exp s e, Convert.map_nl_list (subst_prem s) prs) | DecD (x, ps, t, hs) -> DecD (x, List.map (subst_param s) ps, subst_typ s t, hs) | DefD (x, as_, e, prs) -> DefD (x, List.map (subst_arg s) as_, subst_exp s e, Convert.map_nl_list (subst_prem s) prs) | HintD hd -> HintD hd diff --git a/spectec/src/frontend/elab.ml b/spectec/src/frontend/elab.ml index 709bd9781..2e1a9410c 100644 --- a/spectec/src/frontend/elab.ml +++ b/spectec/src/frontend/elab.ml @@ -94,7 +94,7 @@ type kind = type var_typ = Il.typ type typ_typ = Il.param list * kind type gram_typ = Il.param list * Il.typ * (id * Il.prod) list * dots option -type rel_typ = Il.mixop * notation * Il.typ * (id * Il.rule) list +type rel_typ = Il.param list * Il.typ * (id * Il.rule) list * Il.mixop * notation type def_typ = Il.param list * Il.typ * (def * Il.clause) list type 'a env' = (region * 'a) Map.t @@ -1929,10 +1929,12 @@ and elab_prem env (pr : prem) : Il.prem list = let t' = elab_typ env t in env.vars <- bind "variable" env.vars id t'; [] - | RulePr (id, e) -> - let mixop, not, _, _ = find "relation" env.rels id in - let es', _s = checkpoint (elab_exp_notation' env id e not) in - [Il.RulePr (id, [], mixop, tup_exp_nary' es' e.at) $ pr.at] + | RulePr (id, as_, e) -> + let ps', _, _, mixop, not = find "relation" env.rels id in + let as', s = elab_args `Rhs env as_ ps' pr.at in + let not' = Xl.Mixop.map (fun (x, t) -> x, Il.Subst.subst_typ s t) not in + let es', _s = checkpoint (elab_exp_notation' env id e not') in + [Il.RulePr (id, as', mixop, tup_exp_nary' es' e.at) $ pr.at] | IfPr e -> let e' = checkpoint (elab_exp env e (Il.BoolT $ e.at)) in [Il.IfPr e' $ pr.at] @@ -2566,7 +2568,8 @@ let rec elab_def env (d : def) : Il.def list = (if dots2 = Dots then [] else [Il.GramD (x1, ps', t', []) $ d.at]) @ elab_hintdef env (GramH (x1, x2, hints) $ d.at) - | RelD (x, t, hints) -> + | RelD (x, ps, t, hints) -> + let ps' = elab_params env' ps in let mixop, xts' = elab_typ_notation' env' x t in let ts' = List.map snd xts' in if env'.pm then error d.at "misplaced +- or -+ operator in relation"; @@ -2575,15 +2578,18 @@ let rec elab_def env (d : def) : Il.def list = infer_no_quants env' dims Det.empty [] [] ts' [] [] [] d.at; let not = Mixop.apply mixop (List.map (fun t' -> "_" $ d.at, t') ts') in let t' = tup_typ' ts' t.at in - env.rels <- bind "relation" env.rels x (mixop, not, t', []); - [Il.RelD (x, [], mixop, t', []) $ d.at] + env.rels <- bind "relation" env.rels x (ps', t', [], mixop, not); + [Il.RelD (x, ps', mixop, t', []) $ d.at] @ elab_hintdef env (RelH (x, hints) $ d.at) - | RuleD (x1, x2, e, prems) -> - let mixop, not', t', rules' = find "relation" env.rels x1 in + | RuleD (x1, ps, x2, e, prems) -> + let ps', t', rules', mixop, not' = find "relation" env.rels x1 in if List.exists (fun (x, _) -> x.it = x2.it) rules' then error d.at ("duplicate rule name `" ^ x1.it ^ (if x2.it = "" then "" else "/" ^ x2.it) ^ "`"); + let ps'' = elab_params env' ps in + if not Il.Eq.(eq_list eq_param ps' ps'') then + error d.at ("parameter list on rule differs from relation"); let es', _ = checkpoint (elab_exp_notation' env' x1 e not') in let prems' = List.concat (map_filter_nl_list (elab_prem env') prems) in let dims = Dim.check Map.empty [] [] [] es' [] prems' in @@ -2593,7 +2599,7 @@ let rec elab_def env (d : def) : Il.def list = let det = Det.(det_exp e' ++ det_list det_prem prems') in let qs = infer_quants env env' dims det [] [] [] es' [] prems' d.at in let rule' = Il.RuleD (x2, qs, mixop, e', prems') $ d.at in - env.rels <- rebind "relation" env.rels x1 (mixop, not', t', rules' @ [x2, rule']); + env.rels <- rebind "relation" env.rels x1 (ps', t', rules' @ [x2, rule'], mixop, not'); if not env'.pm then [] else elab_def env Subst.(subst_def pm_snd (Iter.clone_def d)) | VarD (x, t, _hints) -> @@ -2676,7 +2682,7 @@ let populate_def env (d' : Il.def) : Il.def = | _ps, _k -> d' ) | Il.RelD (x, ps', mixop, t', []) -> - let _, _, _, rules' = find "relation" env.rels x in + let _, _, rules', _, _ = find "relation" env.rels x in Il.RelD (x, ps', mixop, t', List.map snd rules') $ d'.at | Il.DecD (x, ps', t', []) -> let _, _, clauses' = find "definition" env.defs x in @@ -2772,6 +2778,6 @@ let elab_exp env (e : exp) (t : typ) : Il.exp = let elab_rel env (e : exp) (x : id) : Il.exp = let env' = local_env env in - match elab_prem env' (RulePr (x, e) $ e.at) with + match elab_prem env' (RulePr (x, [], e) $ e.at) with | [{it = Il.RulePr (_, _, _, e'); _}] -> e' | _ -> assert false diff --git a/spectec/src/frontend/parser.mly b/spectec/src/frontend/parser.mly index f768a128d..1ca11a7ec 100644 --- a/spectec/src/frontend/parser.mly +++ b/spectec/src/frontend/parser.mly @@ -810,7 +810,8 @@ prem_post_ : prem_bin : prem_bin_ { $1 $ $sloc } prem_bin_ : | prem_post_ { $1 } - | relid COLON exp_bin { RulePr ($1, $3) } + | relid COLON exp_bin { RulePr ($1, [], $3) } + | relid LPAREN comma_list(arg) RPAREN COLON exp_bin { RulePr ($1, $3, $6) } | IF exp_bin { let rec iters e = match e.it with @@ -821,7 +822,8 @@ prem_bin_ : prem : prem_ { $1 $ $sloc } prem_ : | prem_post_ { $1 } - | relid COLON exp { RulePr ($1, $3) } + | relid COLON exp { RulePr ($1, [], $3) } + | relid LPAREN comma_list(arg) RPAREN COLON exp_bin { RulePr ($1, $3, $6) } | VAR varid_bind_with_suffix COLON typ { VarPr ($2, $4) } | IF exp { let rec iters e = @@ -1061,10 +1063,15 @@ def_ : { let id = if $6 = "" then "" else String.sub $6 1 (String.length $6 - 1) in GramD ($2, id $ $loc($6), $4, TupT [] $ $loc($1), $9, $7) } | RELATION relid COLON nottyp hint* - { RelD ($2, $4, $5) } + { RelD ($2, [], $4, $5) } + | RELATION relid LPAREN comma_list(param) RPAREN COLON nottyp hint* + { RelD ($2, $4, $7, $8) } | RULE relid ruleid_list COLON exp prem_list { let id = if $3 = "" then "" else String.sub $3 1 (String.length $3 - 1) in - RuleD ($2, id $ $loc($3), $5, $6) } + RuleD ($2, [], id $ $loc($3), $5, $6) } + | RULE relid LPAREN comma_list(param) RPAREN ruleid_list COLON exp prem_list + { let id = if $6 = "" then "" else String.sub $6 1 (String.length $6 - 1) in + RuleD ($2, $4, id $ $loc($6), $8, $9) } | VAR varid_bind COLON typ hint* { VarD ($2, $4, $5) } | DEF DOLLAR defid COLON typ hint* From e6a967f8b5225b561f17acc9e4ce79ca2bfcea33 Mon Sep 17 00:00:00 2001 From: DJ Date: Tue, 3 Feb 2026 13:22:43 +0900 Subject: [PATCH 027/235] Enable exit on err for al interpreter --- spectec/src/backend-interpreter/runner.ml | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/spectec/src/backend-interpreter/runner.ml b/spectec/src/backend-interpreter/runner.ml index 80ba6b6c0..babfc26d4 100644 --- a/spectec/src/backend-interpreter/runner.ml +++ b/spectec/src/backend-interpreter/runner.ml @@ -122,6 +122,10 @@ let get_export_addr name modulename = try List.hd vl with Failure _ -> failwith ("Function export doesn't contain function address") +(* Flags *) + +let err_exit = ref true + (** Main functions **) let invoke module_name funcname args = @@ -266,11 +270,15 @@ let run_wast name script = (* Intialize spectest *) Register.add "spectest" (Host.spectest ()); - let result = - script - |> List.map run_command - |> sum_results_with_time + let _, results = List.fold_left_map (fun err cmd -> + if err && !err_exit then + err, (fail, 0.0) + else + let cmd_result = run_command cmd in + (fst cmd_result = fail), cmd_result + ) false script in + let result = sum_results_with_time results in print_runner_result name result; result From 099532b968caa5d5d1dd0bbc06e0e14311f7d166 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Tue, 3 Feb 2026 16:58:44 +0100 Subject: [PATCH 028/235] [spec] Trivial variable renaming --- .../wasm-3.0/6.4-text.modules.spectec | 2 +- .../wasm-latest/6.4-text.modules.spectec | 2 +- spectec/doc/example/output/NanoWasm.pdf | Bin 245627 -> 245512 bytes spectec/test-frontend/TEST.md | 4 ++-- spectec/test-latex/TEST.md | 2 +- spectec/test-middlend/TEST.md | 12 ++++++------ 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/specification/wasm-3.0/6.4-text.modules.spectec b/specification/wasm-3.0/6.4-text.modules.spectec index 48e877ad8..c1109ed8f 100644 --- a/specification/wasm-3.0/6.4-text.modules.spectec +++ b/specification/wasm-3.0/6.4-text.modules.spectec @@ -312,7 +312,7 @@ def $exportsd(export decl'*) = export $exportsd(decl'*) def $exportsd(decl decl'*) = $exportsd(decl'*) -- otherwise def $ordered(decl*) : bool -def $ordered(decl'*) = true -- if $importsd(decl'*) = eps +def $ordered(decl*) = true -- if $importsd(decl*) = eps def $ordered(decl_1* import decl_2*) = $importsd(decl_1*) = eps /\ $tagsd(decl_1*) = eps /\ $globalsd(decl_1*) = eps /\ $memsd(decl_1*) = eps /\ diff --git a/specification/wasm-latest/6.4-text.modules.spectec b/specification/wasm-latest/6.4-text.modules.spectec index 48e877ad8..c1109ed8f 100644 --- a/specification/wasm-latest/6.4-text.modules.spectec +++ b/specification/wasm-latest/6.4-text.modules.spectec @@ -312,7 +312,7 @@ def $exportsd(export decl'*) = export $exportsd(decl'*) def $exportsd(decl decl'*) = $exportsd(decl'*) -- otherwise def $ordered(decl*) : bool -def $ordered(decl'*) = true -- if $importsd(decl'*) = eps +def $ordered(decl*) = true -- if $importsd(decl*) = eps def $ordered(decl_1* import decl_2*) = $importsd(decl_1*) = eps /\ $tagsd(decl_1*) = eps /\ $globalsd(decl_1*) = eps /\ $memsd(decl_1*) = eps /\ diff --git a/spectec/doc/example/output/NanoWasm.pdf b/spectec/doc/example/output/NanoWasm.pdf index 302e3da9e9b21410b633a4db2aeb3d360fa53011..d3ec2e042801aabc58a936787a5ca865fd53ae94 100644 GIT binary patch delta 29190 zcmV(#K;*ys{tk%#4zM*60Wy;TA1Z%k&%sIqK@0}q`#eRCGvJO%W-{5i7Oc>NARX{f zdsw%tEx4_s;Oo2F5eoK{KOy-b2ycLJZ}4CJG&EHN0%g#IKC(bRn#~qrH_caoKIa5K z=dBT^?Bv{*1BjK3N=j@ zaVwAoPzK}-X5nCE7X)Yl^<;hAfO0@LkUNV6$k7VG$;!^ojZ8x$=>{|h+ku>=%)vlG z02e#he-@x>35Gbk0XW&&1(0a~vOs5`8$@dbu<&rm{yV4yD?q{A z(gEbaY{v^94#w*&*-+yP!dNFH-5tAFv9Gj|4P*#aRSb7xyt2t`c~7Z;G* ze^n)^siiH;43H96(UJxLb(jIN+L~I-02M8W@Q>y^`EPe+X)SRreKlzg zf41M<0B`_2Avx`SGyPxX&_ap<{H+G!YV8Jc`jY@aZwm&y2(qzxd3mwgc({XEL2fpz zE{+Vp6KL7mL23ZGIRGI4-GGk3KP~ofwt@@>3@PMKfZqcKDA`#;dI|hf6cG4FsVuG{ zFC(p~#RBOT%kPG>{Fyu}*c<$(6b)%{e<@|@|DgR%&(0C({%2ahBUwR4Z0G3C3Q6@Z zffHoj5I&HU;D6T)84LI~UB`bh0k{K!kU;;rI5uktXLq*$GIeMBT?dPds)`nilDwp} zil+1*k|4Lg0l*$MzkUBdIsT8v*_ylmp{%5)rUY;@w{wQ!~QJAf1NVTYVyX=f`*kdqUHw>$Fh zm5{Q73e~`1I4`gGl zk=ay0V91`(|Ns3S`d_SNJRBWWAOYzA&vgE`p}CWtqtE{_{a;qPz~80Q{|A3NcNsfx zpp}{(*wXf2Q~H-&9&8RdU*gU-jzGwS|A@4I-#Cttg8;ec?S4Nf04yAw|62#yaZ3kh zpu0POSKyBd2x;E`q6``2e{aG7Hf>p1SpylS|GR;I?4+G7K~{FoHjw4!1(>_JnfoBK zL)MCuhX>%t0XZdBK<__$2Vi4$27w_i02dE%!0)Ld|K1H=9sry8Z_&RHFMv(rFX98R zN&ZFr05++=NC3bl{cps_4q%h{i#P#na(@vQfKC1{f@Dzoiy#@4fBzy#29>`El0o&~ zh#!(c?Jt64(D;iW88rVQZUCFsUj(U7`!9lI*ZGSe*>(RSNOrxy2$Eg@-$(#rY5o^M zEG_;bh^6Jf5jP~eCFE}TYt6w9p>FjL$N^vj{u@Gu#`b6J{u*#X0$SVswcz>p0=LJkN!=fANbg*rnP^dEW%UC`h1AkLuw zp@xug`KyLh;{tTE1O2034hXq_aOHrIbN`#~Hv)PB|G@xa?r!J(4+luhzun=1&;i@J z0sqksNC99k&_5g?HF*4^oe=#$!f`?Z`1~ad>5VVsMEw!`f6oJ`_WOzU=b~o+dm{hq z<>e371iOJ8fVy^8kXOKem?)cr-R!&#*&(+q2Sg6}`|oeY|04m--v`7$yd@++-hM1R zTpR!vE_OZu2N#dP?w2}ns!&^RzH#JNn5<}IG% z^HxV{?d-Lcy4aq1pmHEFy0rLYz7DH)Xtwfda8)lQ!?8ksk$yS%e0FD2CmBF{@GM&<>s&k_d-m7$xqYc;15!-telc#pTlhdr1+Z80WhP z__Huuge>CR@UjfyNYWBwp1rlukK(xKvd0*1{-7SY(+`L1U0kJirivoseZp1IUp&L3 zQIb9Bf6W4#zA39sgYlA!3WFTaZFf-sKmrr3vFdhngqQg9#s+`1m?-u7M558^(dv zP~~N0(_5f;6?n59d#cF+wt6NvG_2iQUb#{@;8oDv{9aQ0eTlw$Q6xhKwywZq+>;1q z$#n_g5OLf7RIaK%uLdzeOKx?=U3b=nL7z_NbI4YO_C;}(pPFhzash^7O*)nCmsgAA ze`X9wr}EOW8+?I@D`{uOCtbI1!f%`XHnQZU1eBviuXpM*`f*$x|Gs4;vb=9nz153~d367y zDAOBnU&#*A=ct_3=LIO@{zp^%8oO=`e>6=DL*FCyfKLn^PYFYSsb4-O(#!N!ghPm% zgd$_iUoU_0&hKiaW0J2=M`GI}&C8b$Wj@<6%w+NTaQ@_qL@{Z%0*TNCjhze$ytM0! z1v!F4^!X-lJ15tMlvEGN5+6Z1y0cru5we+}M) zq7U&&yZDKYrO>*q_9~7vUZXJ}BJq~PbXpzP_$kXJUT?P}e%$uwZdF%vfZIBa74)k1 zsHmWBc`-rS<~HO{ofmF1m533{TI!`&w+u1B{_+)XAh@4(@-?{K1G)x#2uk{!NV}Ir zf6pj?l6uVsUcsAzvZw|cB1W4Ge;%6*mMWfx4a{tq3Itl_Ph`>yxD93SDT!b6f@Nz1 z+#4MxxS~$5JpwcaFxb*?%yXyxSOU=1(Azy5-JjF#t_&)Z z9>Sm2u@X*m8oGBk+6pL$tD=(gYT=3?2ZI9_0t-vxfSkof1^MmWKq4_ zv0C+u-fPDKbBk%VGGZR{EXnzIw$n(;9GgE)ZBshJgN36U@ z0zghjTu~jlLw#B0>UP%rf4(ohiS%i6#{Ze&h`7|AZsa7lB zJ5V}x@R3pQa??pgt@1JE)_?CgR8U1Uk5lkYW25AgJak)sf~SfY2oQB+D~P@RXZZi)?YeU}}nFeX6aynv5Bf5|6>ViZrU$VS;MyX$v) zy+e!945tHgHyT|JhK8>Zks%$N5fqrFoXKGmF@%9Ve#F1b?MF|ArIPvRpU@{s^G!e3 zLof75y&M_6`m=tGf4S+;987gTGzwI#m@Y7Kba+Yk{g2d zeAox^BXa`Kt0B`62XS2AUh}nU49&e|0R7D>3^57G*uveD<072qbyL zzP2!@w92UMmJ{*ntBK<5*M=vQkZQdKj}Vc&woXUuA%@}m>?V`|+F!Ef&U`7a?v}qyNJWxA5F= z{VL^cR%U`ZcIgD)L5<^N*CR!%4{n^fQoTK5&rB8ZWC2tUv;3S@ncG$0*l=hZ808Q? zpJu2@nqL6BO9a<8ep95cVjRhTp;J^LsWevM0R+=lYm0H5*nb@d8Ym>oBeQpx&osdjLNfZf>4(yA z5V5p_?rhnhO_m8pXY0gSKw!K}gzATVQ=0_7wk$Nk?t$S=?XFl=E>+Su3BIJ180F}d zljk4eovN^$9|r8!{dv~YrOkbx5ffnhf3k>YRHWLLQp1vB@%&3%vzerVTfU0f?RE7r zr4CxZ`#8{uL*?5t1^bg4W|;$ykivn_iH(*F6eju|mr91;Ztsx9X$PuH0$u4s)ZsvTZ7QJ@h+xOe^QCc z@A;U!r#^Kf9L+m=9Lfr^m(x~7=eapq{OTzs{LMT8NY-bFbZSa+1DVG`*Eaj_SsVrc z_PbKQ%KA9~x6wqZ&(|vWD@RcTWZ&oFC7Iv1&HB}6a7{(%AX5VibWD=I=Hl>h#c$9B zibEsRU)NafInu}T9oE2ekx~}af9*{{Mv>(;{qKZA{<4$GTR+ zjjSlJXgFFxln}lQXPnb8cvLkhd9m~qcT?qU(hUZzX zk&-=^kSb|$ZFdji(faZcshAWX$`x!GnO(rf4)MKwN~V#;><1139$B6dc`iccQGM0yVc#swCaXH%&*a=2xXJf z{m$HYM5Dt+BP?Wik1{pu7?w{eKSz5b!qS(FE<0KJbKq$>X(vmxaeWH2TEF|V+;;aQk z4yazkS+E3>^~38?I8iY$LXjL-F(U*Z@0nB<+%K6q1Qrfw%5w?2o5{fv*)o)bk>#ju z8Mk@FCh^>-GUqBW-KNUCo&wDj_JbL|avZ#uIb|Z2^Im35*MOhwEJ>)alHdEiBTwII zgCy&=N(7!Re*_BcwYgc39Ym8$HO1I_8+pHM%@OOh+bR@{&BO#^eS`O_D|kB(yZe4x z4cE$SOTd1@KnR%zFJ@F9Bn`CW!pE=+M2eXNRls)Y3HFJ+ULd~5E?X5eki-08+B6>< zXW{_}U@Vfg!~Wrg$#=g*9L&+usagWJ^^B72^WJ#Ce{f)3+2#Y@u(orVcQ6+=sR3=7 z>Ykhhv*YLd8Y0^DbKmzLHpO;=?g$EMk#_f>vwvw2oF1il7r4pL5+ur3eLx!@FoFOk`bf96Phdx@&-!ZN6U9>TJF|zp3!CO_ra0z{q%@!Ylim*qZ$+ul zj43ciMUCmOgoNI8zI${NbIrMgk*)tqHzTAw_u zgZ)|9ED+xvBXftLhcD7=i;s^MbVivX6T5^#ba?qn@D^}Sai#$`l?0r z9jZvE0+&;ym?8<|OWp!HC1#z$7A)mvr|xiv%<_dzY2fSnEc&|vb|$Xv4x*IDOoO}R zN0rIEovf#Le5v7j`5qJww$JbbC|Cj~e-bJi@CP=erBSf>Xw5=}sGjtd6{UcL-f_)G zz2{KF5tY)$x2{gv9K1EG{!HAT&au9wm>pN_n}vi_&_IzLBJ!Txek$P!w2dhwe*)<% zb2`Z#`Vb;x)SwlxgfZY*U+1LIufBW%D zjnFGPMT*%5gaf%?;Vwy2n9G^qh$arSU&|(G?ci6UllR{4dByJ{Ct+|qsw{|j2(LLT zTf9^u+aGwvG7`JZVNWz@7^cNHMrV|N18?tl6w0lwYp7gBH~vy-mspDCd@i$rLqwashWOnNZ=O|^<&P*6_e=NuKh7`qcYtW5-KHW_3p$h4~0na^s)^hUOdX&vn z4d%I-jYfA^Vt-4rRR%4aco?Q;UdimN{=1ds%HEz~PaGhJ4;%t?r3nuy z`7|3H*Y-J&#QmZCgYu)lR_xhs(IZ4vL}1U1rbsA|U<^uVV_|F8f4PXmcC)ZYsw8|V z*eMR8W{f!L3#sBu=2$ltf97Ij^b-`Lu97YxF-&wg9{PZat`qeNu@k}PHneupj&UI1 z{Koy*0a=iOH~5h&pa>0iX+33zaI0+;L8@lD`TLLf-ti2^b-=_W*J^l=M8EO`JDSoX zlxlRT-YF|HT$V)T#bL2JGm_RxV+{HvN*E7w{06kt(LmShbRIf*f7>0iTE9yQcJTV; zF@`J4y`~V8lSExn4AOlevx<3x-hvihU)%=L$7%{QxHB0?mlNAewoiC;Z9A=!F|4Bd zQ8U9_IVrEYDw->gHp9p<`b=1mKpc3D;gh#l76URx^CfpO`L5InbmV*SAKIzQV{Ocv znD@8eYGVh+AhA*$e=oHrjrGmGgcFODDvi~+y<6)dBOF>8D&OtUe*J?VfkmZUACt5z z)-V~bx8Chs{31ZRIXmR)6J0K8i%u^d>FzsnIw`#4O;~u}g-J)$fzRS3=@yuGSVyu= z%qH$1V%>ZmKBXasK0s@q#1Gw{Bf}t@Mh?w%&<60@|Ux;ekI7;>!p*6&@4(5Tbf;o(X9(Zw7ib zYJnqnv2bxvfAsasIcB(0$aK!J|^Wm4Lx<|C4+E2Un0 zVMkT>2ernB+0;Q4NQ;Q;JK3U^@HJ2AovC_45I3-4A2o%9)KEyOwa2cSftt zY)}bgcAqB)5fmc^q;46|X^mo{xNzVP{eGNe!KT5dnCUJ(re7tP3MBzSGbdWsDT;p7 zRdX0~1HFN|pI5Rs)Iiqk#^1w<$8TR(tR?;1{d=SyMi|TOq6dv*2#h<~}lF@=zB=V_= zf1Tc)qFi2tuO1>?+}Xc%y^ljml(H0AV@D|$7hCssW_SgDc%=WC8QY17Fh@Py*i?{W zHYcQu^nR?A`AJ5fPz;q~MwZS|!iNx%R-esSamI#!iYExY^-d&o4#X8)O4ct>Z(JIu zDM6YZM@=GUe^&86B&Ziv_$9}vmZYVVf9RsM;*+R7n&=3UIoHJN4o|owJ+XwRZtX{6 za?v+1YMNI}vWsEPQ*u*v=aNk!sXL!>+gpLW*rUO5;-=luZ&S=Itf49hw z_)^v;(fCzjser*Hi^QxmSL@_e|CgU%)q>1(J}cHdDx_`j*)%37aDPCJ6I^^v(LF!_1S(7-Pi-RYEkwj6XK z6=NnwB!sn5e5|2}w~uGsX~K?R*>}Y;YtuR%;Xm1wx(x})3r6TE}mSMnI!L< z%z${f6Es_OLdM;m65(FuHZ?fg)lkKxrJXG}KlDA%L%3Pb`se^h7k6!<+( z_lmN%K#vAWAy3BJQ1(kuUo}ugMgph#C%ACEvUad}c`t6@Zo!Eh7Age$cJFo=2ZIH* z;f;KA&bWc6@0^9Av@Mp${WH66pL2fq)h*A(ulNGft{z`Y^tk1s{ZE1trQF{FN8MI* zke3G3T&gris?aGkb?-LZf8uF{vv|DE;Pqd{!dYtJM&DRl!x)7t(rb!}SZzHn_vl~u zgneyAv0w_isMaujE;6;t9OH51x||E&Lp$9yKx{3LNp&Kw>yP^J1Q?`fX3kH#CI~6E zciP)%4L1Zo?F%i1)8`2&f$ z4MG6!C#SE+KO}zoq3@i5DW;K%Of|SXOM5*Q_6_XUjuRdf^;U><{44rE->Czh3=|o? z$@2T<6x_aO|BUH_j*mNne(daDx`x#wT-%qWkm>35*R9Cb9>ks%+OyUN#XmG57~q*T z4z6{c7%fSpjqILNfAcJDxGU_{nEbHTTS-2(z#$`jDjXb6E&p-vNw3fIMzWrNZt>8j z0@`}})wO#BRNv#?zD;js*C9;|U~P{TUwrubQn^#mix%2P7Cqr@q*sOX?fy;pv~;<0 zp}DMH7K=#jR(4~VpqT6lVDpfaEapZI_O0K5Nj3>d&KNMHe-y>uDusG4?zsjFoS02@ z#ZB9-uy;;d72?fdjp}@+r8G-B-TD%G#TVC{@{xva4ndrq#EMko$#X!AuoR5 zl$WAPhr_pFf7*I$j~op-d)B)@E&yd+Rz2EcSHMOEZVf4bb!uY!y}XS~@L0|Z*?>Z`## zgBzGcP#v-XB!VN;9QaL1Fr^vrEE_@a#@qJJ)p-_^OUS*^H=m`xr~ygbBR3B(sxywL zFdPD4k``5h15RWv%G^HN!wtsCpcR#b9fvwa;c!}Q<+7@kjy*cTu1&7Qo!dZ5?VPtl zYhKh(f6mGqM*hm@&2>Kt!mjPAUws4hQV>zq%1a;L6=ftd;`%mYr(&q;DmUAcB&>)i z%=$FPlK1lET33Q~rq?F0%`>!5d<94u@Uo9u;JS$GIAPOHHiY$S9!I(*$4p;?PDp23q4{o=*y2N~@PWumj@ zQ!>I|5eq?|n0em*6jxvvF_x@l392D?ioN|ljFdOWs^ddd=hQV-5=U*1gt&n}|0CG{ z2E6p~i5ALjis{;M4bCejoFTCVb(<2|q%RmF(e|Fzq zRHHm`R1A%cNkhmPJOHii{rr)M*(t`Kz{E(~KH=0~KSx$+#>1xe06`?ls=xA5+d$48 ztJ!$IqO`r0IGBUsLWNSg5@r2SidW{X%AA1_($|WEB5|^d-p}|^^`42x&w^m?15x^Z zg{Bsx$1YrtZ{ib&muRfPuG$3Yf0uo0(_#KddPG$PTB#x3iNrpssEp9jCSRHng-6di z4R_Bauj0srgq!d=G$=%_J-6k`@apSCg-K9sB8Mw}SSV>hOBNaTuoPU)f84w5ryn_^ z&Mo#lzhroCjmc}|&U4WUGaF;<@Zk%N9i1aF5uuGHd1Y~`2%)_=AQda$f6?zPm0Yw? zi>kXz;qIpgnTnNGPYOmV)#C8@p^>F92V``@16-Ji9}#SgOATkujy3?I;T|ShjvaET zZy9v1#_=8ouR8e)h5)Z~ap$KL`s_Tbl!N!5n61WgRQ$Z|&_~=hRIA~pzSWRb3PknN zs6^;xSSq#IEA9SNuoAx#f7E`z!W_EalNJ62N`|M*Mj7^?glGeSxBgM^9Y^^R<3d>N z*|%NgBAyDVaH{<$a}6eSP5b5i2(%J}jvx5Gp&w|2mU$40qI7a}TQDE(TTD;W=1!F^ zE_la>CD&r?@ly20N}Eim9ACO>O5rtmPgn)D&rN`L=xUe>isVK=;#*&v}xei)Stv|5t0^+Ao}pzz}=Fdc&e$aPnFQiE=DK` z3+EiX=@)He7H7ZIr2$(u#)zWg8m{UJvxT`#xvb3H!n%)B;UUi*nepzy{G@J%Iv;|Q zTo5-Jpx7=De>fXR5vqT2MBc^tE>}7+To%k7>Un1`9`X4R+n` zYGksXp;Eu;S~2%S0w0%u^}Rk`9z)J&&U4e~C8dsOO_M*`$LeQqq)so+E8J^!-(b2+ z;W+kgG}I*Ax^-K&;;b|7)H0a%NJ$7&YDju{6%*Cwe;QVmJfg3?I|t+_{juQ4UWGU6 zr0w?-w9N1FAwe8!*>^Utx!-Mp5S00x^|0z#vFhKH!tI+jJZ!P19C+LuLG4KcQ}9ec zf>X1T&|K6vQJOBx>_*z3o1ivTUX$H#jg2Sr^~wt-ga*U;dv%C9pMas%*~}wDZo&eWrQEln zrced;GsG8{lXYWWbd83{JkhJbh#id{86Sd(7D^9z`qZJ^S}{x3iTLWa_3^y1+VeP* zE%y;QM?okAB!_T)0X0&NWGrvhcdZXM>FyZxf6wxv8LzYhlWDNZJFMYWM4{eT)9bJH z-zFDPg;aN#IGPe*6b+y>eM~R!s$%pzMD53;5?hU@b7!;mj=|qWVU|>&r`QSu2dXLl(&wcXOKU8Z&e%hNblknCy3K=wY7?+|X@*^I}+QE9u?xx#G zf9<>xApbK>_QXDHt+d)~*jm_;R0w3=TaZ56$d9o=P$Ru?G$P%F!+a-R>o@yM{_>n? z$gM|QL#Z0qy5Dfj!6(1Zs}3a4V(eh*x13Dv9Xy)yLr;_TF>tmZh_wzKFkTp1x*qmHE_|j07QQ$%T&k1U$#$14?hi3tb~6k3y|FADiq&pY%0|v| zSj?d_c|Z7lFKucLODR@9QaxQR6Sng-EyVhBW|sfu_$Oo8gK(wlS5=nlRDujMf7cpD zWAcvetvX#$cq^;u$UZU&Gn_YPGd|V$pJaY9Iok1=&<62<3K(!}(M*~U~SMXV}tBLDXfHQciE0f0}3 zOudx1dDsTJ7I7pf7y=f4Sa|_Ms^v`YXlb-1h|Y*u}QUm13R z6nC}4mrwlf@t6Yh{gv2rs2EwIWZsnXR1~5|rZ3D16>1l5`ONlPbK@v2_qo&DkU1XX6%IgGLa;66%pN$9b>US1dd{}?5)jXx~bpf!IQs}xMGA- zyl^)7fFGX46)TxqT(IX@@%omIxwRh;QNWB1g&gC@N#GYx@p!tMkE;jnN&SKgp1RQz zgS6h6ZaCZ_y*Vnx7Fj~tPuXk_$(P@0nc>6Fxqdyyh6D~64u*da$6e;M=UC+k5xX-{yx zMvKj*FBA@|no26m*YaoRQDjNwwhE_Ii#NhZ9B;b1@LX#3_BTQ)=;#M>UQx069*|m7 zk2e~>9d2uD(+!a?`D9BfEspY}mR9wgf0sg|#2R0ANs~u}eU~(AHS4#MPLEcy-$Dz+V@s%RRMArII@}Eh zlBbZb{2hMZv=A5oGMuAaX5ZqfNu*wqBQLKHsdV(UG40tNe*%p#FZYK920XXlSFb6E zBq{x973lq5?>t0oTY{=!7}=63){bp{-SRq@NV45QZD-*VYD}YsWX9ZNH?hLqiHcj9tDv4w~BA zuyg;PUz%NZrrfa-#X|L!qG*%ceSI63xl+~@1ZzL?f9LGh^a1J^l@ZL4m#43(jFL0X zD%3kj4OFLXcj41t&e!_BHjp@o^a5qy>^cv?=FMApy0l7Gu)^2%f4!!9uM)R|Bmh^o zW;@p^YXP?<3L>k=ooahWBut`J4qqopjmwSs&VOiMq44BYhep(^+S&_hYACrM4xL#D z0oDC&e;PUYcO%{{9VNRJx33Z&ak?mY9-O{Pp~N~O4-sdmxuAjf@t_?l)T70Pyow_4 zUCN|x2UBp|zxN;Hw9H&6rBT*X2T}ZrU!qO*bEXtW+`Ip8 zG)GNW-DHiEPu%4_%gLwjxEpKuW0z=y_dZaYf0v){^`tOZvi&r>6n~~-D5AHS%9a?C zjQ({)Y5921(WrK80bOnkK750lS8AV1rhIzAOW;7`;$5`Qkw|}|%N2@cA>6WDD$sIf za>5_geMeQwp-z$LzWKIJizQw#*-|`|Lug;yjh5}oN-k<9sd5pkVjfEsWn8j4!zB`Y zfAP*cp~tH!o$WLSc3XwG*m-@W$=@UENpSytXU3xw7RJpua^=L^GH;T8T%S!AYFv_z z@#e5MlzmFSXq``FRs^J124P@Lw&vp7Q_0{^M6}KI&1$$5OoS)d;y+r#rFK2fb+X8M zPK+np-$rC|F`nCc5sy#yYql+B=3MPmqlA9k(9x!nUQUYI>aCA|34f>y zcR@9rt@5mhNW{ZiZ}|QRr`h})j&mf*evL)A!3T$(_K}`~7C#^G0ASB%HBL+$fA(?^ zD*1yd`b-u6b1M26x=K|w23#q#8Z|odOqK2uL?SfjuVUR9gO)MJhNh+G<_nUccO1b*+cPm=Ij4oMTf&P~yB{*Jr-bt#W0 z;f&;d-JmGftciM}J(79tz>rn&0JjL0A!0j$z3IJO(vtN@h1XQ@Bada;e*pJqPLidO zR=L_^e8EnSczXHP{@`g=tLb?>k6Wyyq#a<)`zFyUB(>oHdjBIm_y;)kx&S9`419xi z#sJIs$-BYkQ8kOh?;nnQKbMCPpNQEsKHsN_(274t8L{f9OGYr#m1J!1GUo8g)Qq{HN!nM zeLKBBSuTs%%W}oM2gG5b`NrfyjgAx0Y?wpgU!>+ZHiWX&2tMAGvi-v9Leobu|7h_f zrA2u6l%XjJZwS|Fl)piF8LGTcY{_Ag-!D$~u4>nbUnn=_SN8f`e~n$SqN$dd9>Gs; z?JR}mgc?a&XS$@MeS{IDFr${5+X5Rxd=GY2dqTrVd?m5Zsvs9 zH=r$yd_`SU-w?<&f1(~S`c;XQ9y_tuR(Qs(MX&H1FPy09f)aFph!V==

{X3hy!pt6Rj`_STexrlNSBR()fLVEwa9YD zo{b)wDvZq$R_)+lsg-@@`C_tnVMgSSqjPLatu|Zj(PDXc)?>@(l!A`Zff_X*iRvTG zxT~)FE&;12e^r<{{yIMS)g&&XfpzjwVH0+}HB&y~z?wQSNs7ZHFk3xhkc!$L_?TIf z!s}Xb^~J?Qev5+o^DQ1$SIxL4U#|e3nf6d~=dQL=>sPWXA!fF+C?+?$T z#lKP>L9wGpUQuj&9c&k=IyYZx&D#JBY$%1e%BFA5e^xff0>fyH7gOswfg$P5m0c!U_vWhTbQ$0G-QmRv3JsmM{6i!eY(cWoa3|*r%so zp=!ydD}S&x@i?;nKJX)3M?apEvu!z{PyS2h8$+vIA1BI^bX1!%%Ulknm!05X)W9Jv zSv)-Ze@p?R2_f@ng8c1;YKt*b>s<2>`fQv!Ntg52Y#`F0s+~8b!Y%WeWVOvccaLE{ zL0`IJ^+x>+rj)f2$aH-YVDEA5N_YY>$XA>Wfh|48D)L zjW;czys+T%xlIutSDgzr`{fmqiya&VYbsN0{&_D(KhU0$G>!6;y^XH2tb*2HjVE~H z;R>#vA8nb?*S1ivd+%|KMB#&gP^9zBFecWfO?BO-@RAhis{Sx+YNvPt4m%#lWyQT- ze|*e&b&=b8or!#+hMJsV;p7hjLhQY#hP>&HPQqhf zm_yN6b}_mx_{Ie90^2hu=kjE*5NiVY^1DnxZZaC0iYNIH8g^?sPtPyZ6Xo2GV~)aMFBA97fEQDpCVr|K3Z!Jf7LPYGJ9pMhr2;x_-pG@%zec; z?`;aU;5y7K89kz3_Wtf?LRLP}C3rd{*XZFo*N8(7a3{m`U9N>Mp&SMSQg ze!7V2_iabd%E;EUOm-kY2gKB+M2K^9JElve9Jt9#FwMoE-LSO|qo*(SG-3!v-2vZ{`B4iFljF#w)>SU*DS_ zXYQkk2j(ms=pkpL!Cg6uH{H5Xe?(g1FY{kW+pvShUnqjlx9l}2yP}sSxOWY>aiC-f$h!mZIMU<1tfMS4J6Rp~@NJ&|c>FOp~?NIgD3EcDSj$7qkTM zabQ~>?$&SEpb^gZz4cq>060g=5cMGES2U6sR^9S3K__{?SUt?_f6Ga}+H97G zdiq;$LwDG0>l0<>`r^sWsZ%UB6FHn6-B8>2Lyy>{KRfe=Q9Q`B@jaAh@kn8}^Ka1f zmaP1tZK$di0~cG?Q|v|wh`D{6`#R+f0|WNEwwGR&e|ll0XE%&jn^1eNYZH)CyDK(u z@T4Q9Ca5EdP{#!oi8|q9e_W)J5dXf$B}2Rj`p0VXv4hdOR-SoLEmaB?^FWb9GSW-r z18p{Qc97X-pwU%yT9u-L`ZH{g?AT|c7*J^kzV)P`^wrfnk|2_E21(#iu%cJGQhu$U zqwg^s+LJk12ds8=&Bu1+=RIF>CK}@&TV7t zJBMZ`rWzK_R8`siolhaOil4?AT?IzZPFiV%-p&V-sA#R$W9X|G&YZmr7R9inx*YD1 zuey1PLOD9T`LM3Rf>Eim!sUEC_U7WagEN{(jo|WNYH*+VGrjsjW^+5c(uKD9hosGX z;qlh^r7Ot+C1KwZeVMzZfyC}@@`X*<>i9YUr~T46z;3?2gK@(-v6E=I&U4iOhwtQP`@A|g{;1!(i>seq9~!7+KZ@+BSiHVi zon#Thgo+a$Ye3YmqIJJRg&LQAx3eo`o!loP@=D%?)GZ-5x5co|MzdXMm;f!)Fg&PD zz%>`M+;z>G!l>kAFpmTFa}Zo;X6PCbA+sT~SFSfY9q^LpyN>@^I6>cJ!S3_xK>X*4 zh~rH=e+yE%k1ckD57zL8IB-GXu~ACQCJM{Jtw z7)~e9!ae*<-g+)*8_Oxg+^OfK7L}1*n*NTUjeS43k79t)aw{qWI=Xb4ZmVnoIkWA} z31hQ`PMDKa%qq|hF>0afQWm;R9`ZZ^c+UFr2Z>{ToYdBRsD^zG!j zf1a#Z`b~MS{bU}`iKT!WCPU)DcawoGEF*B`lutK{j=S!FRgpldQaadN0`S8alDe-Rnic zRpv*nYreWg|B%_%vUHLqx87VJSJ#mge_{WbLCx?yQmUsn8%3}B$)MhUtHTfMO2{x5 zko_?<#aQ{9y^29&rPnH(F5sJM9e1MP>l6P|kDkcW^#bZlGk%rkc9r2VvZPhF#&w~< zeXO6}hP5slj^{4kLc`T~Xv>`%vMWVeM$Ft7AY9`Vp+#ElJXSbDHK#l=5Cy(9e`y?p zZShypekjSyATsw>m)E86%4sh$W)Iq<53ka8qYZRw%G{c`=1e8ATFr?M!3_Ii*diM4 z(F)3@c@*-A-qK)dPT9EaQI4rmhvWWGm{*^oJ8c%&(7J!2jp@ym1mYCnyKe@1qpo2R zY0{kM9Jr+i?8amnv$oA)vrkY9f3DpWE_2Ud4HtxwNzS5-*F;cW;q>FDRiD4cdCRbcWYnF;(#_MRqE(FRsL)9%WVN{M>{g(P%gui9!p#n{UMni(pmfgwD5!=o$JkbfWGlRu#1Qe^!>1K8OUG zVoE1@9gn+vAEanT5*LeKNYlgX+*C_b7ExEmnNNpJEC|2kjU%-K<7ge}8x^eC_LWB%> z+i2Sct|338DOhJaTm&P`J0Ba=9ixcR31Twbrw_U4e4#T3mC5#Qh!9 z!z&>N^BBX!6Yrgd9pzVh3WiM4kT6e<##i_Nf*7|%6*N?Mrfje5MXCC&+}skI7@r^i zboVst9^Dph^e06TEQ25=!r3wglKhg`>92!#1 zVkDQ(Z2#qo)^jg7vjz-ZR#@@qa^%`V7HtOWJoT>Vk$NFYvLvd5RjZ1@n4CUXF|n^* zWLX>rK_%z?yMNc?;1{3rcz^9Kuua(UmGEm9DGrC!tPE){bF)2ys$sv@%;N>2kAR<~85CDK?r4{cN;YE#yt=v6o z8pubDTluU&*pG(elL%n@JZmZ%jx-wvuQPe z_L9^|9BKlk5au*Aw>-Y|yjGp_XeAPsF-o~AzDMOHAEvuH3O0UHdU0iP)lc z2Q zs<*t20Q3=RxJavw%X%}`hhx%n<1dMxffxG88SZ+D1Km=NAw^aU)h^b$PFDUPKasvd z7%>m0H~4AQ6I+rnY2@YXTM9S$*PMs>8<@t>##?m(7O5OY3e@pOnAq(LJ~-@$RI^SV1bk-j3LF!hE-kO?!Ccx!{MBrd{m?c*jycYtdIw{~kkM zjSaNaxq0U~gcZK%9vIavspHS2b`~lRX0Bl)OnxhX9RI{Vs-#>V&i-eQBw(|NXEa9e z17MoWAHG`vzmZQ*UKb0mD_M+UQMmS5)(MC($Y$S8nEPYMg&H~h$aJR(MLAH1A0;Y& z!raBGVO7EZQ4QH+VEtaxP@d}ag=bINb=M_r)r8JCJP{Ihr7_i^wvYl+=C~J{qW-zC zU6ETQ69+O)4#NnNBNrSbf5G%cILY?&3@ApeEeGA7JFx4DKc?{%KVY4LuSjJ6QdJM3 z4h|(8BPNM>iJu0yvSOVgoQ;3Whzu#%pd2!T=WBsbXOr208KZs`V^U~JANX^|{NfWoH{MQn-r8g%| zw5Uq4Q8h5+h@i*THcg`Cszg7+GIw=gmG|l1OcQLVbh%7{I1+SYiCog<3Sxd-)?LN1 z`oq4?zjb>-(i(x7VMH^jdg{SdKHy{ukL%)RA+@jR2b z2vZ5v&ACOyS-t|ZuzyYVL9x8f?vM%n4Ab`UXC=rtRB|_pJNF$IPpiPZ6@}N9Xoz8L zYFLf@DRSgfF}wS`g0@Dh0fNOL=$BNQ{UBxB$OT;sfdZ26eL)mDTPR+}-_&$@N#WGG zUX@ro*RtO4`coBY+*GL$`$7bzf{%e0Ny!_nWLl=pY#38T;zdo&osOQW*FnEZsuFPd z42C!DyH&^pNQ*W1s1zNk*l6dYIQZ~NhV;jYYxfNuqwkmAI~8z#m*Ux` zC2uK^dW5)}P@|dtx0Mj1JK>5fyINNw{#HF;NsI62ih_!th>Eq26>ZFqBmZJ`uTVMDByg!_ie2>#ZF*e)tA**1Jt;*}L+8;KnIBqm$jZSCb}D?- zj&VnU7)u$70Do?wJ+*h3gJ06tbjtl1_4cRmRvdd*+p5?QYBoI^U8yRLn}vSEZE-KT zIN=kvMm?{Ys#64P3Fsm5LDRLPB7#Mc{>BZi(=9Zfs)&}{AtYEK>!j8wNMD$FP$}u7 zys&h`8zYSF_vCg^*N@7uK?0>b$9r{mMo{;wmKC%^09#z#6@De57g(3}LFg71%q8$@52Rs*2JXw732Z z-+Mz|1+1Hg>wFBm8h$S{J53KCJJpe(km z)v;u4Sl`^$$P0;iGQBKysGOY^I0ms;Y}Pui0($Cmevz9Km0qgF(ng-T!t*2I<$)=l z^qGn>G;m3?sX7~{eRzSi2rLgbnTImj7E@jOkFjxN^2N?KskPc=O;GC>1yG=4OrH-K{#mRvk?4>C zT1k*t7@DE}K4I^9dAbaDDR}V?9MZrTxS!sk91;5!%*ID(fl0e*%0)?F_J8)<-dJqr zFOSW1tx%kp`JsA{^C+%2p7*>prj4j+fNHa##uB54#i+Ldi@xv0sVAJQ?+wKjY*zH& zx{9XvNovvy4>xGYA&}caI|~+hLn(*E6sOQbHCE_Xj)Hqp>2?#gwgaCX0lvM8 z#v~OKi0T^bDD%+gFd;awu=#5+VKDsAp<=xt`nD;Rz_J-xyZvBkd}6iZW`njVC#oM{ zxS8J@EE9E(u(&_L&!Xg9H(iKM;;4iX%6AAgU%GCtZaB&5hM z312d_1RkSZ?z-9h2RnxiD7YCE)HmiiNVA59Vd8Ewt@Ty51*8 z>|(R_JsN_{^j0eA#~`L*0!Y!ZgG2!gu;E+eZ0s=mwSr#a6%zPG9aLVRn{0dEpUDz? z)*4>^?zOCXp0inzPJCM$K&dL0Bf%9Vkz$$GM{GS|M34QfXDD6YH|c{OTdOvGS!~y4 z7Z7RW_mlA(a0<2iS_U9psew+bqIQ{-wfO?ieQTWzAa*6vn}+UijaK zGp9bNRsEmyzJfEJV^hEv*COg)2yvSEu&8gaM{4&ZHLGpqs;N1jS3r*;XAks`@ zXfg47ZRnyZPHlZWXEdy*Vcsup<(-*v5F@X{NaDy0G@GxnGhIB%14ezm-((xJABjsd zi1JB_HFE#0tlC-kV^q4ZGYHO1p4hp1J*0L87tcm9N8N!$mY}rDA!Yx!Eg=M;aokHz zFT;^LkeIXAY@F*2VA_vT^iX!v2P1adAuYs;)W%M#ObB%H*6SdZGL{xNUHlX;gKsdx zSr$ifA^X*8vbFKxey?PF$RIg9Jnq2>UpVG9hv(cQ3EdGi z${4*WJ_nXaHi%WT?!?L5jWYkt6ZkTx?o{%BH->C6?bf^r>Mo zNvXG;IFj zct)G*usk!+1E7E@{DEKS``n(w_%fI8`)J;!Rv#vz)@KJ%LPGZM{go+qJ$e*SUel&X z+}5H3B`eO~cL3)6X}A(_EJINw6d>On&kx(3xK+;-#>QrW;O<+BVXu2i*li$svnR2p zk!mPbZ^VqOgeB>Bz?FG1eau?0&04T-G8Aes{A>vHuY+lR{&Jw-c(EAdEWGx+(g`&{ zsxHmY#D?H?vue;c87)X9^uQZdXYoT}GXiXI4ad;C$Qd?cxGIBa8f5BrEVl!#g6HlY zRJ#eM*9$U;@Kez#I^>%&XtkBOJPJ*@#FC~fuCS%Re4tQya6sg^`~TU+u?Xicv<{!2 z0Ls9&IfSFb_yP_SxV^G7mX)m8yreMpgh&i+ZX1?H0E3l`3!2!&{QHFtAnX6s;+FZ& z(AoEg#+V@e*Cju%>tk5W_Lk9RJ!K@<4Sqo4u z0ESnM@@gQb(!Wv25rpEmO#VdH#vM|AnBx*G6@qq}r@;6M@A*TdnW^cxeKP?OZ+_nA zNY(wO7?^4;m9|#iOCfri>$#%OjU$0dvIMx>98}|o>smCcqUnPxV>-99?w@@dNAS#u z8x{LS`~rx7%N7`0q4O<#MVd3hgra05=!c}s zKJ;+%fVk`;&ge2b>r48-wp2yno#Slm1Mgl=r^QAtN}rlNG?)R>Qt8!SN5BqJ$O}nt zP>e`Tc7e&RG2@wTdAb{Ts%TYQjORhhD;CvQmNOc0pvxP}XX*4g+D+mQ23d6+NCVlajVIR*QgK z^~`Q@8U(4dXKH$m#g^_l?%^DGBFPrm^{v?br!9{19`2Q!ox_6hK4ATQ5JtJ($dfA( zr<;bbAybJggKm)*1*Gbo475@VA0M8^X60^%ra1-MUtn8|BQJ&vlmEb#8ndV72l1UW zzZ|;V`P^@3pLU;w+GZ@Qm_J`y)6wAeyih(I@<=XW`yu6VUSF8D!Tdi}vwKwPBF!x> ze9b(&y_tl%BoSd1e*z_CpGb~B)I@p1=_27?@_Ih~H3LK{tT3$)8i++#=@K4iZ;x~C zJCNdCOFRRYbe6!Gc(Pz#v4Cec=a6EYf3p`gS(5<3rN8~;`Vis%-uw$Os0BbDmXh74JA&_M?94@RMKoP&QE~r3=3)9P=`-LF>qIwg$3F zg@q!=UkX3D*etWA=k|N_vgeJAg~EoSZO0>tp0c{B@t6HH8x^oEQS0&Y-WNU;S%y}# z?a@w%Y_r2Zwgm3{Tpq+zTVtj+yBg5$9O)PQD^cstYroVAm6+b`H~z(fUMc0wVbuKF zwL(?ec`#;Qa5bDJ%Agd$Bnmko$(`D-9wM`fO8=JWOUWe*B z>@PDLe$Da?hmljZg|dIce}$BaiZ2%q3&#@y)&u~T`o%M{Cw)FM?}_pccYOi}@ea;n zIs$ee1)Mi(^0lY^Gd}I4W;I8};GI$?NdO1XTXk%hhc(es`>N>*wp+xx%X z(hJsn{)m@k;oUf9#ixT>>C+cZGMV1g5qwKG~+QR0>il9jn2=a6oGO z+T{7=pPAN5NG&sZ6BcY$Nas=<@(w>h%kL&VbvOXk?dQ7G0h|7fb8v+r+H3H}qHY(_ zxue&fF#nvDV@wEAEIMCWz@kCIaxP5wSqW2ZNN9ZlGHt^&82u_yf>al{6;kZ!(*htP z30WT)+FkVBs_}M@zW}ePBcohoTO}r}6xi7q`oAXs{8SCpxSR^&jSLB=NT^MdP-|kU zyoS$q@N38jE$v8kviwlDFwXMXVB+G1?y6Avl9~!GCHpupAXqAhf_Tx3D?Zsst4msI zDOxf^49@MUQu~yEq3;2ah2b`Ts0VshuT33aSHUW<6D4ou81}F+Akv4f!joRo-TS{o z1~lK*seP0L@}6O&W^ILk&G(TUqGK(*tMpXOF%uE_4LV2nK#s)BL1Au@!_Sy5l2N9i zu50hmf(pC6LwrTXUaV&p7~2pd-ii|GqpTtia36m4hNRvOJ^WA>M@TlJ&;eG(4Tks? zZ!=2I9>BRO4?l?i;t@9|W@@F=PtBFqLFpD?lf9s>D)8*$VIBUsR`I29m<%@s(+2HN zUQvAi+bG;Xr+lF@_$1Xe<5QyBX$}d^xIKMr#3+YbHan4j`M2Hh4_(1QH!Tfuhg6hgY)S#-Z2Fks z-Gv*wWwa~3)BVY-x z=9|7dj3+3C77gr^w;GH=@+h&iU1Ko9YMR;4D1#CKB`}uV?H$c)DLEnwx6<%z;2Q}I zLY%#Fr16g?e8DAhr5ZpQv1FXrznNCD!yt=D{cW%oj_?TbG?9(sc<&QP6hAFKW?w&^ ze|+6JM;S8tE5W2L4ECW?A9;+FZ}e38H!y$ki6ccP6qitTUICu_L!2B}&Z5*48#~2f zL7Y`N{8Xx8eX{gP?(!e_gpE4cJiC6~RbnmQmv^3hDZ4j_;B$<|)aYu5l%moS1 zMx~rDe-TNT`y26T9zOPX!`vY4_G@9B%Wf7_YTc$UuJ+Z1z}0}Z>=HYi8i9e3U~-i} zkgj!Lz25AGs7j;?bR*h#oFWMNp?K)?HiTg!xyI{~iLH_he5zDgxw$XN}5n;R}g52lUASl zS7u1it_zbonS>#H`gCf4Xr4K~nq)~dxRGga-d-Td7}oO#qvB_}xs6_AJd7aVPC_3w z_3=j}m6F^L3ZZg{mHTAscJ96C?PH(ZwGH_L(x^I9gd8C67JK>vov`f?9v?dH>^1!1 zxCmR17WY&0nn?*?H$2={%*KtRAor&_4;#h(HD%zJA^o)wc$=uTvt3k>gbJyKVU-*9 zy74+jmrztC(%*eFoSTmgRlsFc51*Ia%U`ljej_Gi05_% z8(zW}hKT6XA;qe`X~20W+(_WxS6;3@6-j-{4>T{@m-G@fe7Yv`QhwRo>{l@mQ6?iC z>)!x=-SBc>ci9N!4gV?kxV(1T1b96q!JX0hT4^ZK!z-?BqC9%>*Eq->K0RI0Qe?GSZw#2?(E9v@~5q ziD>=QCN$uxj>jcrYDw~syxh{5tiG-URT+IY5;YA9kEhA}AvB2w zlVRt=5(J;T3~i42RuDE2(J~*mSSTuW)@c#wk04$Tc#O?Qam_A9Tz;IzP%QzIL-uqH z=)hPLv;+c1FtzU^!noO(4dE}@W4X=@D;}6|n2AJ;&~5Yb^a`0VWHExgE%px?}A)mvZZh{)h z-tY{g*@~FzP6x~fol(9x*5s#S7B|RLA>MpQGiloJRbs4c?c6%bI=^*rI?iLc5(di= z>wb1tphOiwY?+RJlE1RD#W0I#guMVvH&m{c1XDL;`6Iq)k|co^I{9`&Th_ZN&;p;X ziaFm-Iv9uhW2PNkR5MpS3@>j(mUo|deA&|sm1`D(To?x9$#+e@cUpHtLa!|yn&`R2 z^8vc>S4<#{nkxt)lv(A05m2u2(YgLK_A)~n6{)Y90*kAt#ewJP}2{~yqWTtbmNK32P%BK5lk~MqZ>LI1 zIT`|(L+LeA21vCP!FRC#kz}H|LD}Uf2c}9r8l$bJXQxFND<|e|9N!8JRW>Z4BP^aM{1R`Em|cCLiPpuw-CwsDaU8HGbp zYmhLScvrz`QqX^u<@rr9D9#n@AYt(S2K|{9b=ED|VFI;I75Ny^JtvrLg3 zpg@WALw4lz2{7%s=QXt6PxeK2HZ&EP0zWPw81`&t%yX?}F_K?Sq zcFgHSEE<}uka83@Xz`*4bh=_~e^e-l%*3Qp)(8Y9aKXm;hh}#~*k(VpGvEN$*j4jlRsJGCl%#@f$H>PwcxIqlJ!_Pb)QE1^Y$)NA9@Vv z(37b+`NUQML-zd_*7vrTMvDwZqcf1Y@7NC(6_9VwO0lrOCv68p6ol}m8pnzU-Dxa6 zc7?<3btIU%EcE6P=!^#kEgX{vv&}ay27?wEOO&Cs|I;kvmq^AE^#q+_(@+9I@ww{n z**OnUy#;d`)-Xl;X1k_ZEwOSlje=ERA>Z&A(}JD=pA0z9 z`gI&FfkuLOciW0Io5hkky))5#?#9#6bMoL>y=nC9;I&+losaagkbQ(P4>RSNH;$7O z6v*C*kiTTKp&OYbMZblzo$#oR=zf9z%xd(5lV`|1=NHJeirE26-DooQ*VrhEZ(8@u zzM5aQF}L$pmroWi<1eV{lTS7US|C_;&&inSo0*%pVO@b&tG zk*APomH7)79B_zF%dJJ2@Qpua+K{JH$0kgz+FzE;34nlpbBGGST)}~{g(Du@`7r5I$F;h0&F5OzmMcI5QzE*zev4La zLmfqS)6_w_K2xr2_V|Q6qDL9iVg4SKuhyPL7Hr459A^u2G4I~?5jXm`n1HI3hdR#{~*;e9#{ebn(pxePYp zPDpv$u7S}7ed}~>=4@rUqdtnLbD(C6UW0ge&7IJ^?9QCmn!x}#3DqeOfr<#Uak-&^ zxF+_DW?);vh`X@10*pPA^(i@LT4bpew4YGNwn(wN>ot;cHA}P2yDGgFtQ(vzKB~@D zr6d?=Z3sFnRb2h*{2RO`uayN18aV$woV{4F_x_Hx$6C|1?DR}Q}{)gb#oV>!SCU{w=YSkauFO9D(05h8G`w#PMKY= z6N|D+qjx=BZ#|vaYnXxp8^zr23C?(^1Qr`((ligexeC*Vzo~LlYR7kNIX*wVc|Q4T zdg#Y%55>HgyW4-JEnWJu<;a`9R(EBp4T!PRjw}Jb`dcZBU<4u|n~ zGXMp3oVaJpJPW|uD@SX=$luNDo845vVJXI;t#lRGw09w1z1Z-1GG6qYczUpQIx>Jo zmu$eOOp4;?a>IlQ*{)QeQMcyHmu=u7*5H$Ix^zCGuq{&5n&rC^F)U5;g`Xj6Q`n|d zKn(Cbp4)ofc59RM%6zsWi9_+rPv8D)DH%tH4WNaONo=4L$WB%bDzE zdvy2ZWISG)qN--9^{3uNLP>-;3w6yzd=mF zZ1$mgB&vAGQX31dN;bHz;P#7DjsBt3$pQ@fnfd~EA0IdLrhL2`2TV1HU~h9+ZWrdn zr_NZ!A{0f;en7inI7oIXX&dP7D!M(B33BJTr1cY6-7#gU0|6nq6eq}U6U|ar$ufek zp8w*pQe$hZKRZ#cAT4GLdb~bfxMi?8U@Ws%Jw7_8w$qqiVo{yRTx2;=)-dcCH36UZ z)7RTE;>ahbAkE%>f$4 zxNhF^lAJmEu?%7Ry9W(jKjlEolh3Rrg{EE%jya5x(HJI%{@Dg45Z-6%(O*GYI!tf< z@^SgAy_s^oLo_#kyp+b#eMX$(sQ`HY7U`M$c%O0v&9ErUs-WG}mvsMnJ9r(Ffbr;Q zw{4`?&kCne{M$WN3)<*V_~HU$exd(4>$ORb?qG3ex{D8FMd$4`j-H(N+y!s1YA zrKDU{OPd{o&U8%<5?05jnXcZ)Xt#5Je_ui3o2Ql^@0+<&zHaqnZr9bfU0)%s!kL~A z=$PIfwP3FHt)cDFJ(C{((UHW>pxvQaOZRs7CiaTzb~$r+erM;Uo|Aq({(Q)I7=C9` zJ>C?(i<+Q>8hB^-pp%;7^ADi$U8I*VbrghrS-P@} z63Mho>~Bv$QfET=xqy!D2BwX^vsno6-YX(xDW2sj)=-GM?|g78gyv{H)fPl#qP}x{#uXm7u&j)$d-;= z*%}{^2jjGralE$zMz@q%5`}BNLM61LO^jhvkY+;$;_1=n+`zX7)f}4T+!;94RDZ> zCmU;eY%@5{|J}CMHG?}rDRB!ku?n-Xafu3xiLfwp2r~(BaEWk=iwbeEvU4yobMX`L z{eO?>{hx7gL>$~)$$j9|0DcO$0)`THSnoCB1f-}UIx=KUU#gs_F0v8|vMDs=e}5V} z@ZSOT^-cfLFf5I2U*JTHV?sllWj-L!2xo_f|NcJVbGSeF<1x+cGX3W`E@MrAv$8Hm z%h>)BNI7CTDu$LqWZB`+!>0y?Gz`50DMv;RRO`@IW*!Y<@4!)p1*jm;U6+bj>fmi> zFDX-l|4|nN*b}B>y8!%zdj7TUq{u1s!C#_ zXEQ~k>o}xwD<9Z|lA(+G$X99jm$0v6|C){vH<*0vMSc)fr885;;5Akcsz`3i@fXrP z3_^S(p=A^&>5;0;?HqTRX7y(S8l{N5v2mWh9400||i$`M;VUM8z0zym3NWzS7(!!Qg6;Jbf?jy5c=B!9@h7PdhSgHgi{ zT@NPB*20o*Y_Pw-q$w2ElU@nw0U^8t!lS}}^-IxI5eS4qB3jP@xWT?0@|D- z{GPW4@PRB#obm^3)bowEE^77Q9I&^NgrK|uv)DiaLTm{mls#OG`rHCITFhh{LGQ(DSK#0f_3TQl|z3OiV@U(w+xo14p)n8 z4uNMYIg8mr<7S`pLbY{VE;-#@0&<+sZ@#@R>JMn~OiP116Nft!0k=C70=W$lI5!F} zOl59obZ9alGBPkXIg`Pu6a_LfHZnPv;7bE2f4XH*TZUwRc z%7C1~%|0st+bo~(}>P!8w@a%YwRIa&cYSlHOOkg2I9-GJs`JCL)KIT$Da;A8{a ze*#o3!4PLR00$czKQc8y7U&FggJ`V)7Cr!FAlO{X#|6j^pfmpi)IjcFW(#w7h#Kf@ zW9JN{hqy?BTzuT@Y;3{5WAHNn4g|0Ux&5XA_{{?V^acZ+-63h+e+QLd0VtSTI)J>~ z9qa(+&Q<^g7G)NI3djp0v;)wAoBUB&XePrvFh64Wt;r-)bPP)@~rDKM4SIwqUS}04uAPmlunThdY=B?Ht`%AgTT(aDvPm z!UvKP{695A#sdCL*YRIW0Pa8_B+&m|9IG{ivpeg5nYy$7u7g=dRYi+gNnTP~MN|3@ zNs!y$0ALTB-@gB!9RICxw&w1CC@ZO{DFK|!?VKSyXYOnX;RiMcd$tyz})LU*Vf$G!`=5E)Bg8CT0+*{&K>Oj zuZY0^>a-(71evUz^Z)DQe%t?!C@!TW0N~|j18_h-Y>+c7?QA6pa&m(3c1Qlb5>j@M z0f9koKCJ)y+&egfyqx|1e-DMVowL>N76Yt2Tv)Z8?OZ*8@>2h04iO>$mDvEn05$;7 z6>^F#ZCQUO{Bs6=i`jpRA*~4Ta{;*ktj!(WfdO{bK*%p-KX-Fa$acDU00aE~srYw< z%+3q2vazm zmbU+z(!b>LU~|a%5_h(71VSeKN2LAx#&Luk1jt2i_xnKsU}op|PaR~(EghVJ?(P5{ z{y!=pq&A(mIU)djtR2NjqDDtn8d^Aj{1IFn4n^_d#ZZtQ7}0 zH^7e_a!Ra#-hcKEz{=tb0z+H?E*{{3-%~~Yy&F8-09NteqJJSC0IS4b#0y}R{EPSi ztWtjwKY&&Ge-JMlfK}!%;sCJ9{Y9JrR{6h(3&5)I7eVqVfBi*}e9C_jB%jJ(1j(oR zKZp;KPwg*)gy5{_PGogbvu& z4fv0CKnehRf&SqDslnqP?S$z65sm{Az~?VvNN;>0f9LCu;NOp<+VAJvpKF`#@A>?% zSD8Op6YK_Z0P5OVL0$;|VWMmfcC+&~WP{wf><~HR=fA%h|62m;zmJQ5cuPoty#1KD zIoScsoNT-Rc1~{o-%aKY_%~n6e?5c$-1m@+f4IH%EL3 zlrEmBe}t#zXZc?JMnq2`5pFeWrjrO?s^BXHP_!hZH8`851f(Pukl;#{Uj{TA2p zd9y90X8PJnU2NApP&tqYU0QrRUx!6IG+TKkxU!pq{zxIeNWYwGF1tOkofM!wek{q~ z*>fMqG4+CZnMPq$*}hQ-?^U|M-h$)ih~>TVf10q1Xl14g8vJsPlMrj(FTTn!Z&noX zW?TWmrLPBjf5!DzveF!LdtmM>5=`(~S3iMQTP9Y5;tPK7f(C(*;?hZ- z{8^YSLKabOcv*%}BuNPo_wH)wXK@^K*&_@$e^8g)$;X5B4$jhBQ$=C%9-+$Uub$!2 ze<(?wbY=mK-<8!S!MI69g+Y$zwmT>QAijy#NL8yj!b{wFL%ly*Oq68<~Mao!!<68e=VZs&8U2&4lG$O)UkH*8yuu4$E`Je=swsl zP~~A@)te`O75H=O-H9eU*y@?g(6DBAY57WFpGQIS%a4-cAB%KV3&I&Pu(bsqqn?B? zi>`|Z2Z&qtCvuf_dDV#VT5>DP?z+=1^!l_qYayEz+84!@erl@qNd*{+)oGNve_vlM zkeSgVoybeeZtw;sET^6sA9vh{gx@szZDh$y@heA*UT@cB$bGZTrm&+1Z}Yxd9yWAi zcKXQl9qN}CXclv`;U-@|kk3kZ;ghdlVEbZQ9c}>n^~0z--rc96$nu_X^=2P!WIo%`Pi67?aQxzoL@{Z#0twRwjT{f~zqIO$ z1v!F4^m)e#U;XS;cPtC`azC*63Ov^zSED+&d&Ir9!Y}hQSW0pkCE|%>fA(YwW$nKM zMIYdibnp=#NuhOG?N%IWyg{Q!MB*ujX}3D6_EVNixZY|-{JiDQ)vT`O0JnMaPQa_m zqoRW9(~Akx7MCGk%A8P(sYHxG)?zoEx@Cv~*4J;ieZjpf<8Q#N9?;cT15nc6g(NaK8R2h|&C)WgKtBWeWQ|B=LYIn%5sh?V3f5oM6s~ZIpCXMRe zdZ$&l;JtdpKeLc(D`Tcb^5b1q-I2I`>9(W4k{Qa?JD1Twy+AWPn0X*=hd-|#onf@t zUA9q>h-tA0n1P6yhQ}t&BET1)mrT)|O}hUzj(X{PcABT)E_ohWZzifAuklY_=@BXK z5(ALa5SLYlZc$%We>gjxHGk|$f5CjALLs<$bW~TSEHC*frt84k7X4CrW%)Q6@>;D% zzPqn%h?P)xt6){Zj(`lN3`qtipycutyJgm$|*@DX^3>pZ()|B&oma z=X&Uc9;%lkf1_8e=~tVZ{>pi+?uSN>iW$=ZMvmO#+?pM+*Ht9Q$JySv@~fJ83@G`D z-VNyu%sbBm^aJ;x*#jyj*^n1KAX~o>)L7_){ zm?_h1u?M?_m)z0rVVMQa?K2Em@Q0d4+PrDEo$o%yf4gG{{QNzNXD`Wyax;QtyS|4M z$kbo$hDk~+FORNU(s=_2(m~(&U=}7;>2M1^#}iO<$U3eZlNtO(91j=Z_|{+S@%1CC zKyY<(rut&CPr>cUQ|aBUK1Qmy^Y+Ddi}oUcs;S7?@O(S8znCTTk|g0O9KAqb<`$9* z?RS>Ze=R7;qwDxIjHNQb(19Bcgc4V~E@vaq$UNF@|DqO^(8lkYw$pDpjvKynzPsi` zQ|uzXyrK9r2Wlh(Z?{UZJ<6r=Hee~At#zlCrd_EwCfPK)e)RkFisP1QdcoqQ@#_Ur z;F-jC_0^Dqm_p5cZw~#mv9+rYcgXjl_fybZe_+qF*RNbh0yz`1FJMvDQ_QEInGQjc zhit3!GfFEA+HN@!ufCZmPJgR^L>IzHMoDv>u=zyvuGx37`oUANIy8q(#;{ zcx*urj;JjH+%al3=p+%=!Z4_O2)I({>;>ZSHuUylsc+ub%mqvdqLVbv=b9&|dYXe3 zfBoy-qG%Av^@939U*64=+2Kl5t%$)594>l6LpAWFX2i_RUT?5AA&C`y z=AqEeC6LwkOcn%F!Xr4n(UIp*D=MQ$UXjmkiIkVO{>i8sBdgIH1rL# z3!P8WS0~QRgWV;9YZ|^Q(p54H<-gD>st|uLR^bK&(^P4Tu^-!i8wDCF{uH$=e~ArJ z`BisC=4@WhvC~l0Yeua5v!%h+U)p&!ZMbbS51XfhGe9MmZ(c-Z_cot#j5&mOc&+hN zX)uUL+Cg`^tluWf1f#uq>?|NK&Lu+i4hx5lyK`wJfHDCBDP;FLBLglnVazP0Vh$ zqlYo2-}?RMz6NYc-%k^;zo=lA*x?As9eABsX-Gj~qCapbW%%rNUzzZywcO=!m8`wE zR+T507jKU}VF%u`rl-@G!SC_##5ut-j1uW1pN&J?J&CMCN zK^rIzjZk-8ZMo}67sq>0e+|z`LQzn=JK>Cw;#j3taEQ8CV^^_Vq1j7=uyM69d6$lP zt%MU<)%9y_!hDz9LwdZ5b>vYw1mU9>UV07*v}M2@1oV^_C;f+fBe_@yq4F_o?I;S zj(gC{zPl*?)aeKJj^e5bH#l>w=Z0Xo$y|Qn^?DF9pT1x1tDvVI`KpR@RtxuCV~8^B zB4${$=<(R^Q#B>(dk?SC)=d>VHLilX<)y$wE?t0B$tTxV_aJVqub+{M=_CAI!o|Zb z4E92G=6NwS?LJMDEQ_~@E9j=Wv?XIXTnR6G0sc< z=n}Z9;XI=?f9TrEP|E1|3Qg8pk(ZJqw>T%j+E?ino80cjnAr4YXA9$s8v+rZMvEep zO>*aZbK@b6HW!VskilJwl&m9IUa9;X?TrXaUsBraBxD=4j)(WG1__)e?RVg>joxK;`&mv8RIY$o0E#O z6c9R~dJSg5;!D;Iu18@<#lQ$gvR}mv;e))VQkZeRX6E2qIGicZ#Or=Z3YN&0p&*DX zM{UWt$s;m}<2sQ!SBdE~Rp#;JZz8wv&+wIF=ef)&6Skc5GGn|3{9Uxpe_6X(!vA=|Uudt*#d72znpCPO#@5}y^L2BENUzmap+d0^s z^hq@wE3-|0`!NGSWNO@)VSSJ^(2^4m!!8ghW*k%j+pZ_jBm8Eb=nkuFMZiGr^{Hv& z+`Cv44?qAzk*poosn=`XyG5d4_D}7qC2*V1e<(>l>BfDAee23LA8`k@oy)v~Ik89# zXv$P~_TThY2cq6rg|5+$#y5#B%daaXrQRbD)!7mLMo`CNDmNsj&Ej5xC3ot3dtTp z`pO(matA&H$QZTg&6)j(p~Si&8PCP715=$}cXKClU+);t&9L^0XwhS}e?@-iX?>ag ze5FR<6`d@_WCOy6T(EGLB*{$WjBtcw``T}06ScPSKA@9z-|TwD?I0&&a5<{X3wsEy zIxJbdR3h8&d%a^Ia+|>#tJg40jcbU`DE|)L+G{J6TV2;sxr%OhQfZY~jOKVQwpiik ztS)b;<(H%C6=5{H@q=@ef3j(1B8WJW;}ju5G2HBTW1CAe)4Q)kx~s=^Pn)(J|Gpk& zGg1Be+{{L!Gc2L^Q<7B%4Xb$AYt6ip>1qA<%S#`+yPCDhXQ1I=bdBp?!i1Fd`%(y) zC($gS2M2FfG&BlTVO^S3f1Vk&o6nzIt(RY74j?P{zN2!NVyK7Zf1xvVEc^KNWjgC4 z!Pr%2fjnl5AJ8A&c@>TJCp_IQFXFZ>A`01KzPzIDp^_NCmH)T-<}$Ka_t^e)PABUE57Mgs6%Ltf}E-2?b(|ehF<%EbY3l7qM7w7WPOV z2wn=di-V{bB941Pe=2#C*w>API2joH1jMK+rAvqn6C92PKBA)QM7=_6NAS4`ty!>R z=nFXi>3-yZEI`f^{JF27MeQjGHNL16t~^f3M?B8aFMx?Y3Es-z7O4 zc>VGS!8_AT#k^i`UJJJ;b_3~i6}cJQnT(^$v27;nEG})!cC%y* zi|Ag|)F5Y0@~e)DrVoc-!pJasOqh{C?6?i#<2P3peKJLJCATv9u2k`~WV>-6TdB(5 z*_byn?QOl)f5r-oL1H04T5L`n>6v~BClW4I8mV@BzuG}cFt9vOzSE}t=9CYCS*2Y6 zHA%-i!zA49I=6H2ivaDW?2xNj+FX)PI^DP=JMYP8rErhFz{2~^k2|9Ft%(z-S-if* zJd|x@GI9U-&duk3HWe}S9$Nc2Zs6`Xw@uPJivU*we<_bV{u&x(V`(YSsiUfDc>dfQ zt+W0TwV@}SWx(Xk1+yFR&FXR+2`$4X0v71>H78qSI^b%aEK6LPL8Zty(8yi0ZshAW0mHCNP8jYUY=FIR;WjK=J4RRme|g*PzM(*m(?X5)g9hQn606sm2)dlI zqy?#6Ky~a;%T1A95VGipa{i00BQMkTLU{vSS^_adS5C%r?87nx7dAOD{=IX@bNgS0 zbl*4^6Riy*blA~5Ek0H543pZwYyOD4=@x#`H^OX+t**pK$RYntC|j^T$8m64^taCcAvsg z-W#nnu|ma@+O3WEBPd4nN!`$+(-_4>abm+C_?;eS!KT6|o9Qk-q+P|E3MK+UQ^#7? z$%=kdl`|MKecge&Ys=XiY9MPi;~(Kff1@{VDpnJon5~5FH6OR`t5k2-8VSoj!pq{A z9JgohVM$ZS)~`&~a4coe@WR9dG@1mIVA-*`lE=8eTKMo{Kac`>4fTr8P2j{H41uQJ z7IkhTDt)aZAU`3ZSSi>C-?JYVhP!Gcs^aIzLPnPgA4K^5qAJ`ynOl5k;a9M=e`K_P z6|sCuLc4dnD5n>}tNRESced{x>9I%&QkKH2Y$)a8V(Z?{^sm784|KmW-?bwm%uo$B zG!`VA%?RourH_;{J<8}4h@p~C$YhsczTZeU1f@S}`Zl&73( zsNz>lvfy^-Yk1-3Xmo64*_@z=i7{YWka&c4PZ)=bgx4p+c~3c5eo; zF_=;7MdX`uMh!fDXDk$@Z81IWp4oJJobx-cZn!U=;tEVVx_m9sW0#8dW(6clxxNPu zyDjS=FZQXqRB8-Wf1;CX>fUa+#nA|5aeJS^>%V#jXQ_n~{nOeS#wc8oPE%CaYV%>K zOaHnn>{~O61!K@fm4@kak*Qtg2)85WnDL?TV zKcv{+X?LSJ+z?n)@0{^kOd|!EvVUos=6WRTJJ_!kJ3J`rtsu$hH}t-q69-%w zC{j9;rSzp_oSta^jLH4B&)WiiY;0dU2Gt{6TbHDe>FD&=tw>kz#hw*fv)22?KQk`ueKi>e=SO+4(*&%aW8JTE9_RAoLcKGC!JVelaf3Z_7A3%pWb=W>2r%n*740O z9N1JqTW`I(c8`GSdDz{v>Hg4hKpg{E-DSZOAH2R)ZWr*Pf%cI_kAEBKRUv(|_cMG_ zx?H)?TvjiOS-561yP-@#O!gS?<$#1V=BFI&TfaV&e{5pnoDpD1DT=*SGSzPEb2TP7 zA)E4wi>6ay_nf9O#GBn3)%i?IX_{uT`6cv80+R@S+SM zFMiU4hL_;wDndW*z0q4t#?i@0A(FkUD{$57QF{ksw4>Of83 z9~K2D!9Gp755HoOlWCKZ&^kJl9 z(~e%dxLnONfzN8xg`U%~ioII|^y67*8VDDef9_x&qbhPGU2f@CK*nnsB70(hKucYH zHJE2`J)5jX{#Y5bqLQ$qP^Tzt4y(;v7PZom2PfFo@#WZa8)&KR zfAeN&&5OG6X?erQr+l7V_roBpnvS{^5vZ4fh{|Rjy10%gBbg!Bw;9_N1C>{~*`CB< zMTBA2CpnfpmoL}45-d~QHc1!Dbo2fSc0AfXx+Di6HDnJ7v~jAQligCN0yHaI1i8D7 zYu}6<%E}lhF9BPda%{}aM1&)vxQLv*f6lFQlD^_+q_B9*@dp`%uC(Qn@H$K!JQ4F^ zGx(iE+DU;dKn04_VXM7qgcAEyW7U$`Tr+HgJzqQ)AncYzLlWL$7tZ3Gt0fgOb% z0T(1}+*<7jwdAL7yvjAt&}MlHkTT$9AGE-=5!bOortPc<>(|_lw2O|Jz6R|Sf4WC- zk5DY(CEH+(kkpB&r>VR!VcAi^A>*GyT1J~BEQJSG%G^3{mXhQH#K^i==;Iz62ZSHz{4(S0zDr8Q zFXU{RZQ`{V7Swc}PFn6|suQ-5j++LQX<^(=j*rR7x*g+}7-GQn6AH=(JR>6X*NXxoeoM1dGbxyqNUb68{Si8Rg{Ae@C)1P@lKm z_ZQVDPiz%KV`GvKGI|d{Gg~iTWI}eb@hq4KY0D>^>f2gmrDhy#N*54BoTU1cm(l`q zZd=L5^%bS*{($|uKU}a-N>`$+H%jr!yjhteFhcrTv0pe=cES4@FRIQn;pkZa%(X8{ z*Q?O@$>^a2$K$*B*ufoNM{0(PYNmnbhOFWCPbm( zvv$LsbIGe%QbD0cJa!Fo;cL$=xiZ|kT2Ucl6r0Gwicbxp68eJ>DI4#jNG{|nqj76j2%9H#kQk$BqAiR(Iop&oFYtMe=iP5!OVB`drK)7 zE%-^*-KB76_Fkr9x!IGPfl{?NJZ@lUG0XuOonRjaX6!VAwPCUTtjW;^KseaNNW;EO zCiOjo*3~%9!{AjrU%>$2O)k#dghG#y0#IFRj)0de-_qwveze34ym)R)8?w1g5An?>Z2)t)6Uu2jM zt2z6=qg=#YAr(%!_h_!csIF}zqB9HPd65ScV55eu{ssi=SR-t_X z5a6aF?*P@&-OTHP{w{NMff<#he8l_h)Y~L^S3HrJFi!pJaF@Df%h%Urt9mr67|MwJ z(0S%JA8g2%f4;5wN%L-3(3iO=ZXNfbEghgKoaE_GfBkcZMJn#S5iP$(H;6WN?=&Xac0LTYjLq%IBEv@u2$71wZ8SC}r$Wz1z^>J-v_m`X)0`@QxQE%x)5&{Crc|H!fAT6Os>L;|GHFO(duIm7UV1w3$X1Cv z?4<4Y612qU@-bcYn9SvyIyh*tsvLOK6hY-l4O8%p zPmEo?9p6;cGgg`=%j8DVn;Wk-QC^+hYvdb_e~1}{J9)h6kY0t^0hm|!EpjuZFSC_# ze>S^rO;{G7o;c9WwE~|bV(bUJnZ&{s{&wXB6GDyQ{G%#FotNKG>TK$PJ~w`z(^BsH zKx3!^+Zp1E%kjD~54uKuWS;0%V8pgYmy8d7#3u?5c)FB<+!`@Uma(|1mi5uRk(%>Z zlTG&_IY$8~1SE%WeSS3(_9RSi)%VT!e?QaQG3cJmR7KAV2PonMrtS8-?_nI*dwD5c&}fWo=`=e`Ryi zZKrbH2$27kDtl}nwpvpHJbHP#$v!_E zk!iIhCDa+^;Vn!QHi-#Vf0tqGe=WLv>17{;LpL-*8gUbfX=WEHF`@(NxqquYOu_S# zCr8`n$Fc2A)@M9Fuy{S_gIxGb0W5rRsJ~Pvwv+8FS=bw3yzFG+_Y<)!9C)YQqLhuC z<*<-LYm(moV>fkT22<&se587sTqbP$Not7oT4t92<>;)j?0&dX)vHR&e|1U$`l)LT zqY-(>)@Gd!DBR^0bYvfy_$iK`XHz~^c(XE3jE;7^CV41Cw2bN<`1H@4MI~9NZx{ey z3j|*7m+I?Wc9tZ)l|CC+Bw)Ue8sd77nMl5tLXwa+Hr3Tv6@SEE&wol zz}QW3!yB(1GRV=>tkwEme*^l$*PkrdPJJ0d7(Hwh=WBGB3XCt#qM#M`6nlEqLo|`tiCxb`|pBc~}M#M@?kF3K4S=M%Uo-*tL z$!}|fE+6^QaTx>i{gv2qC>fZeWJJojD+$eRI#DyRW7PJ0 zfBJZ>(r@Gp2q7SKDFRvf1*(}^6H)&jVvCtyWe0)YcS?~_Sexj?=L?m$OB$8yJS?yM9;Ul zQD7$RQO3Js5Fg~Q`DSP>EAnlGj9SE8gv%Vt{9rX3S>U?J@R3YZ6zcF1w%wQGwAxx? zf#JMh9-Hv*dM6BydSH(%MI)sPgwmAkO{1V%*o_osUN&qPf5r+q)X11KKVA>wPJM*q zF{WPD|I9^NNzycb~+X zYP7-l?O;nwi*AT~$*e7jv^dJ6T59EU{%ta~5=&g!C3PMl)@|an)wJJo8f6-5JzJh# z$^VD0d~JT;wGik5G91I4X5VA0h^1bVA}_BGD0TF;U)!@j`~n)izT6w+@AKSBuUb_Q zPE`!#u~lHPI018KwQY zc>~Ma+Mm1ac7BE4R@J;Di+9rm4lT{HL%k%Jg)m%DPn#RKu5I7BxBL=2mZlWxFHw;f z8-)lopzLtF>(MCNO}hP^sbi{SBO-?<+%{hKE+sUN$(zv&yV8)M*A+eC8$AHGgj@AG zZ%tA;e+XUKwF1$>OCMC;NYs;qM0-*^H1dqw#DX@_P+_<|dR@QBj<3@S6bENwNU(kR zf_%bmhwasVFyqirg?t>{Y%B8UE_tjy$@{1o853S}6JzJmjoSUIabQ3Jh_SuZzC_JliTf>@}&QWQ<1yRUD<5@+(de}X{GXTF@B>K;HXgEE2{^3vorrBPDG zS%rEViGk{*?GAj}%lT^0w|Zg+;clR;$c}R#Y~GxOr%SVB1q*y_@3(8pbd}g`B!0NE zRoj_nSqr#LQ4nbz&P2<5LLp+Ua`;+FDjcrY@BIh%6bg@DwP{4Xs;Rl4qJok;b!g8* ze+a1RZPCcdza8@a)K;=naq}wv0lR~o``+oB6v{hCu5e$Eu)h+nRO`hk^+FeG5%qID!tM%%KV zCG}zBRVQh~_#;<&*HY5Sd#;9RzITf>f5E#Ssm#mIce|45Em?n=U5YC@ZdX8yLcDvu_w^|)a4Atv=I8VRLcM9 z%;cCas`HkzlwF-X!TrnIS}o={fh0@uPHE>-tk>tjcKeWIj~zQM8(eQ%Z>gXS&ssH>FpU0PM8=!N0C2_y)E-5?#1!>!c2uj z+&0=2CPLAp^hD!)EVIlnz1$B2YqB{L*P22Kha#+Pu5VV&sbC^B&KmdG5-z3Vd8VCN z)^luhu{!@)M9SPtlh^A;TY*poe_(lT# zhnq<~ilmgsF(*T1Iq4=Mlat}x){AI#yjQbjAv5P{y9y=r^M;N#rSwu_)Mj^G+)Ma< zZMX}n;dG^EMMMHF?t1-?S?nhB@7T_f#Cz2i;RYWawp)j~3O@PyfcpTue>N+zV%o5m z{ZL6CRney^@t#xAN6=L&t1#e7nbfG*ponwNLV2C?oJhkM-$u%DT*`>5pUmPRQ)!B1 zEO1z#7h%3>O*|j*wk7B&%p0O&ux(n|p&NS*#}Ka6N7?6BDl}KuX0d)R{dhqvf>a_t*To`x; z>kI*wapSlBO~Yyy2R}X@`mU9S5FLxzG(6v>fxKVy)XKb$>yqsI+6M*#8#Fo=G`X_6U{p!4{C56gJyj_5dKwahJ8aYOAY_?Z7J&$W(S%+g865Q zM=33W+s6z|Nq9rJW~2NKipx;t`C?0Ull)$B()X1+PJDv7f5}hT>oe7M#fqj{W_tL) zxU{nrmg1`=X`E>j6Za5?kiv{URo@iY5a4;RsoE15M&c=nt+Hi^0_?@b7&LWjw} z8AHj=sGlqPR`aZa?5J%u+w5_JW{#&=#-Xm)ix{DqG}K?5)%*pALw}a%5-@;)zS}d8 z0&hT582O5-f2giLka0*oV)&a93-Q@Zmn#ioX!ng9S)|O>rJD0`SykbuIDuj6Uyj8H z`|oEa7*oC6=&rp+(mY0N7~h3x8y!n^EOO+XNqUS3;zSzhBUYE5#$t)uTbgW4lb5@y zml_P}Smslg%6cF`-qzw$*X|ASWcmFJ7e?u8klKeo=1EtT4ImB%N`gR?GMUZ-Sqls43;xkywW zX@(tjf8F=-m|ZDCOmWw7Nw3Cn7!0hF1_~Ro>Z}>_5&KrviHMUO#(~-D5&e`@{=kRK z>SP|*imR_K9`c*yRBJc5m>t!ln!MfoxMtdK$kOaL)Y5_Wz18`O7&UM} ze@hk@*FKZqXiU&N8b5z)zRF_6)H>JvqdqH#PU7Xpd zIr-^JH!1p|mm)uyMi*2CSPF#NT3$>;ReW0glZzITj! zk##o)TW}s^mJA=#EqVX&Ga)S>>kv2@kZbU89j~|he9&o%=?$#ojJ|JFAR+%SX;i2zH&&tTwvrM)xKL^Cvp+tcF^JYYsQaSJo5B?-4Uv~ZGI*gvaf7s*5d1M}_ zl84Qk;7wV~_hMl}+vz>dCcQQ&Y=Tn@OzZ;Nr&E7rJgBPc%_G#hyH)4RpXDp`w;~x*iBL@vMDn(`js|a}-M@Bz@(Y~dd zA7$>Li3jG)@9QCFqrqJ{e~LHWxRFO%;w|xANZYW1#b3yS&o}KgC_17S$GCP3ICHQ( zi_EufaVC{Rr88{r#zZ&|X-d&=gK?S2tv^H=WTDC#V$)pa_)L;E*E)=Th-`CHNf)pL z@N#B${#rQgICtwctk($V{n7kAvk#mjWr(_;^AwFFhFQCGgx^lqe=Al8GyQU$uQr|K zp`P~E+t3|0+xl3UsjhhZ%ftz$n~5Cuwr;3x`oIHL>96*@K@<;CZ9EU)He)*X)S( z?LX>BsR`(aBGht1e?_8>`4|_e#K)yqyJUzLL7%QP9XS}iZ|0s8)lwx_F%J|zASJm( z-q&U|X9Jmi2{gKjPOVf_P=AK)k{wwyiUF0j;aQIxN?%>QCk`S$rlsF7Deehs@p+$cMfBF)d^qEf|j6pz<)V^hm zb?eaN#8}O&nW8GYw>=v|qc}Ut;L1OIcHB%Y_;xOkSVe244ntqXaO&)(zbJ+|#pPg| zY{kt}6w1*-7Oy1xf0TrLON?w_GhH*a?6HVPF-VDm4B(=0@%5PW zo6<#8@*6g)`LMSQ?}wXM%3Q%*!3QO#$8b9Iday!#E8ef5KT#EzNQ~^GjqWVG!ePX? zbWAGyqM%>FZvbvOJx%qELC6i(vDMpvx?O1u6mFU+e=~i^*j8p)I;Apdd6RAd=pvk`ms%6_*r2uryz-6 zxcp$De|Y*f^dc-4$rIn^C9Z_gfBo9=-*vPHEXO2}JMZq)z?BVLDwtNZ==Zlc<*l=q@ ze~k;DM!1I^RlZ^QM3t6{C)lz+%3#fda54oVBztWl8l1)~`v$|&f2|$r)LTRrHUP};=)-29w7&Clz~&{P(4St5*0J;y8WYD{UBo@@a7}77I255#l8V5v zqd9y#&Rr?DP)y*o#^bZn!dVfS;c@5yf0F%mH8*|nG*7Zxqp;#*SrDlX{qXVZy=_(6 z*DE{)$0I@+WgHZBBBk>eP{Y!37z?iyl>3AdCtwQPfO;4!X$)xp#es-ef)sI*(=-Rz z1LWrBmj%D6YP`Oz`j~SSAer7#^hg=K0*x^3-Wnr+SiJ*!UqfZ4e{Z72vf}QYe|Qjp zCF!_OA!)Xe?K}=IS&GADwUsUARFX@r&VRLAV1Y_dc z2+HBCkO5;w7Sg$q_ho@m^W)t!f7e2zQ-z-VuPMj#q#0>pBZHDIpHIjc)XRh?cX(s9Y9@{AY_o?BT|0(;H!K@uNu>yh_#J0kJ+CgqPw!fje?Oz7yjV7wX45;avIa$3_X(Z&!9HsA$qi_OQgEAw@T+}@2Rd{RXv3{4qOjd z-5{bir_#MWjbo$?ejA2x!9Z)g{bnZa`m_W!utOxZ;?_3&3rgf}=tVn%^I>ufPj8*7 z-P|do2e&g)sL44NF#{w5e-D377QOS~>u$g9pSkMa`tQB!H;dTEm%ECkX_Yle4(Z-{ zw>SQhimXrb{rXj9xp?Rb-&mH=+-!Q(1gdIovdAd5HKfhd2S zjSA)fDtekCw3vHbsowV=|9UGbN#ZhZ`r)EMKWPJtUbq5q^AYm9f2L&5b&zL^>7wKJ zTtg0&jL~L;w-$Bxw5$zJF*2mm!5qiLdvz7xuxj+mlBDEQ)f47n&_+tJPRu8c8%x3y zeZEh@NJS5Ug(nu{+TE1UJGec3voYUf$Yh)Wp4c6uNOGrSslOW3^_7;G$&4_LJYy){ z&_}IelgH?Jf8%75f2fCf?TQ({U5^IsOYO9jGMXXa_(lsZJ<>zAa;zcB&jklTh@s5Y z!Ceq5Yo_x=t!1D2q}j}smLn6C>b9qn2kMnLw#oOta?cPWL2zlfbG;9@c{$GDU#JPYNq#5k1!`-yT#fpZR?e=cLBnP2xe+DdtokMh>VUvYpcan~6 z+wR!5ZQJ_NNyoNryJK{0+qOIA^grj!EM_z3F5XS8>(sgLt*7K7YdHo|kX9ae?jKNU z)dcK=2@#=@eGSeW5!6=eJ{I+r5owQomM>jBtZ^bl6 zSeN>PN-8yv8h52$>otC;Epbim^{1I-+3ouZjQKbHKvUMPr|p+Qq736N?hMS%3}ZW& zOi~muh5cp@3}fF-Q&*S{Hx?ZCxWy~nEv@K%^J#MY*BU9NTpR>ls!HCdQkqcCV=B*7 zfLg1f6|#@_4WWukX8wZoJr-jtygFMVvIH6v`vCdFH>Imv#q_4XePOrrjcKp3ARQFs zsn+LKyOALIZytS=Hb=YfG}t+c21&aVY^F=T@Y&XYub4G9{P)KxO@X_fX7tFHM~eWA<6IM7o5`H8FYI+%6FUC|jnjlmV4y#^iWSP`sEc1U z?cNAziP`plip$+OM0?0Gv2}iDz>?w2Kt45+pYjVFHHjYgt7eW$@Oy4Va$swvDtf@9 zvx9x}N*x_DpX!Am@Mq|u4n69-eEwNQ53BIlB>fF64)4r3zA;<6T zXJ+F_fYitKoa#yA&t-DxzY4}#IokbA8hZd}R=*;I-6dVQ&qMR;{i*WR$h|HjC1CjWo*gw>J+SBU%(_Xyv zHhS$es37~$Co!L|Z|=az5NCW5p*?UfOg(bGt-!`jGF<-J@Am^9BwNHPl=l_k$G31` zr%4lt>B+b1LR_g=L5mEa$Ep%1v`&IW{I?|JC2vbflLon|?Uyq;P1k|$yh$Y9Z*{jP z8zv^_&*kpe(R{(TE~~HmxkxBhwsxF?APkCYUpoDdwVcQup(Z$4e<`Nk)6bsDc z@v7v)P86Fp`TkuClEx&(l>wo@o>-5+V0Cc{56fW@z8}A(ctI?mXpEjY2Mq1M+Tzv{o-Y!BOn zdwQG!YXM*XZuu8jyoGxm9_o_o@t%B$Y~CHm>^)@PSTuFv8MiY8(9|}bpw0_I@D#%KT@JFaH ztciiT{iHd*7eK=Ms!3JTjDL8Wmfz{qW;XIOLM6Jw8qiPpRST}Go89z$o+kR*oo0|g zH<^Pfok__+&1RFTIas(;#3dnBx)QC|c^43eOuuj5)dS)iwC4eXhBq-pzOQ{8lhi_| zj;0xelQ@N;!w# z)F0eR@5~G_C=U%ekz2fa`$_WzB|xT3_G!>A&?z>jTKDqD)8&~NZ3G5Vs8`b={#dlf zv?@N+qBV%jS26z0RLS{CyS34QQk-pJXuB!xIXpE}*X#4O*AJjC-I{C#vtB)8A{PB# zc0qD94^?W*O_-`xVFLA4q;X3oYojmBmEz)99CpB8`qNAA(OQ(pXZr8J*+%>+6k*Qq z=RO?r0G-`iWxHuRu1vNOGL@Ji6S1hI&eE;kZ3YY%SGK|CwK4VJtax^7iBr&OePR!c z3<^u9)YwGMYux#N5$p8_C0D9>fI0FkwocO-NtVaxaSvmz-Qs~hk}psWuCF)qJ~I3U#IH;L6f zi?mL}T3~8mqs1qOO=6ujosA`o!9f}%U>&nd`a*cpq!Apd)Iq$80)0}p2)0YH@zxBR zQ{T){{CfDqCBd1rBu9AUuCB2|9_jP)2XQN<(J?%K8EjD%*K#le&Dd+1<@z~siCNdm zjPW~z9St!0#Co?g`@HQtqCv!D9y_4k$g1Fe7!T>Wu}~YztvpHj!{RV}i|ebJg42q7 zB6y&+!if5z{ioqtr_dU7c2TL)c7_qGmmL9^c%%Jf%2X?T)2-r8pglTszR)?(pXcgZ&pRRX>VQX&hgI zbh`>!I_#}hiOyswORMR9vyVuu1898mlAw-+n8!(Y1Oq2tmJu6L&~@hRwZbGS`Z(uOqqe#=s-}!c@>o zT?x=IzkE%rO)Vnq9)a6+&LtGi3xjAd9T2!ScoG9tBT?x+InuMeYngdIJ?DJ*S8U63rZ%_-3{U9_$E z7)LMOMFIBSwGhI6iMbovTQb%@R%@@FNelq?YErBiGqCi+op&i3Kvd1)ETHPGA>CyB0-Z1#jJWd4tZTbJ^4iei>g) zgCI?;06#b|@ay0If}oq}2x9%g^Bwn2&;GVmW7p@Jbiu76c)DGR^&Z%x$*pjYU9a2I z3t5BRit;kw!&R{n#n0%MaOtXPhY3K}(@Fa1$-NrI^~Y$}M)_VKd-iu(Wc01cW7DOA z#^!BZX$(*xtF z{AG?B0t^mJk@VG5Ot}T9XLjC^0#;C|Wc|?N$q%s4mC!B?G{wR^7~GHrS3;nr4TTSx zq^Q-uqa-E?HG{8>S&!m)&QF3nQRlJKK@nb^a&IjxohqZQ37yK_Y=vhG^Jzrb7Dj^| z@-Jp*_zH3p8s)cxm;IG&E5K^VfZAOWFG+6$ZB?Ma;8o!t`Gs)dhg0?B+}vaW4Yrw< z)|gj|Wb#O)Q^vK?Z19dls1Q)&&|$Zh71MRVsEgQw&#wudE4JeA>DPO~ZhTVqVvxYd zb9h~!d-nPYI=u(4>0WVM8`%s&V*2}HihG}50a8kWmjJ=`6HUkilou8eil%RThbNsV z(>E$64AeTm5HC>E8__eO1-B@CvUxE5vkg?%oG!~UBrL9pJ{jF^00ej#V#pn7JCV6J zh0+~$G-a!&VB!;i%1>j4_<#(0Y^*!cHy;V?t*F~iBV-mAmF#uQ!bDz!L`Wb*GtXgZ zB}_>0%R86;bt+M(Hm$i#pD{vZZ)BFdH-XXheIbDk11k#;_XWbIgKmqtu+V6ZM;R-)RvV$#6OxXSWkpRH#wrEkUGS{T?GZgyDuh!(*qcD`m%B;T*IeuzDHZ8lPdBPd{ydFu({}Eg=F&<>v>N*=+RI zBP3bNdK5eaxYT>v-CqKmIyAP5sTYbv)qi|VP&&JQ_icJa^aJB5X*z2rx8{CBivG4? zb5=gu3ty2l%tos69X&Mo0iru5k>pe~L^;`!-Gvvg{0p}9?Yi|#0e=h~2bMM@JTASR z`3rrfHDL~oYe@a)t=xD$(r{*R`q69ZsAY`XABJbCEhJpBdsfyXv3He~rBR*-8hmxR zdWKifMfYRVDuBm+-@5fvsWhvpzex>Y0g&4rQR6BWtM5vs{!#c1pm4f^k$_vsqxq!Y zuLa3OS5-CW-A?myGpcaWVs>PbU{u_-T}h>JCJTf?OBz*8E{<@yzY`G1LFoIjUnbfD z8pBj4D`4N8{y6gUsx@XtDQ}tN+2FbpT3#{#s7m>9mL@Q7M_8n9_|j|Ks6uqyOd}6;7~H z+EjYp&^z9O=f@*;*jDOV%HROs5ULMvi{wNEWgVThybg4rDz_(h)qyy1w}MSqxMLOsAgS(ggDW_)Yk1U`hPX3U2|f+xZFs8k z_Qd_~UGHSH1@y;%C3QFm?}!cmOpil64c~<3I8<;j&7&T*bUXGk(k!y3>@y8N7o{vl zXlHGVSH7qI^#i4;5WFZp1=363enKBjbHyk2Rg%~XU%wI{*J5B0YyD$MsoYtDbuvEh zU!G$$fnT3Xq3N+%hk%$Z@68r4Z%mg_zmc~cu4r>D9W(LG`0q8bzFKaCG@8J+hf_EJ za_~^pDmQ1a{9AE;uw&XzY_28tBOW-KO) z7Y@s%B+*-n)yq$u74taC+>wX67j*Q$@0GL(SUTPbuVG~)QW@cxV+{fzohS;cOeu?h z9ndh+SnW0Xy|@K${k?pM!z&#MuFZM@EU`uOV74o=Qm!>VhzHus(TC~>RnPE}>C>$0 zbSH2pv6`8h*v%$r)W_~wLb0G7elb(4a3ttw-rllgg~7{SQlt(_jJ$j`;_1%6T_w$3 z7Q81L&{f6^W|8DTW#6>>yg_xp>QtiDVkCHO}&qmvc59`GFU z_|ru+T*X>Flz60rzE%%qiEG9pvpBv56+q zT(q`VVtkQbIFL3YLMU-trXxF`vl)Hq1y<}Fn{nL_!r#BS$5tD7>8BEzCVqV2SIZR_ z>=!UpbGWS{;)TTTZz_#~QeX}oB9?F&c6LdK{H{W4{WN!H<=xr4{^c^|ak?IppR}fF ziWb$EJBGvwmA{K0H(oX8XdM1lv)eZ#?VRFB)Jmhi!ia4jUPd@D^-HZR%{ky`n-@lP zi&8IYS3->?W%)6AxcVkaf6HZ1(v}AV3dSZ_i(3(E6prF{K7;_@D}@U9X&q|o&|dLO zi3l-tx|MbOv?<}-Hz14E%;4xd9sq5;?5u$i{hmCFlYCded|mDq0?CBtErg&DS1pgW zI$p6I^TLzJncO@6<_xi6ChUruSQsi(w{t(`o zci&#LxN4?ur4e3&ay$pPRmdOymg4o+U9Ruo$WMG=yt}Mm!*xc|KAscQ+?M1s1*}Af zj$=In*sFV{Im}WX_BUiMm{4sZ+o|O7=rs#NovmFzTw7(&y2^Dcyn+R{d)B}+`FBIU z8GJ7g8VJiB>3w7yYwz%NHOf5{&7N)dJFPsU8rYL^2sP?8iPi*~Ye!a-nh07z5|Q~F z4pP^6RRgOq(V>2PGlqvmm&J>H^5iAXm1>|2nAb34^oaHP2e|SoRWTFp(&_Es@7y~c zw8uhlakHJQDHEUl;S6@W(!{mZKHs;XBGf>oqW<|>KiwZ!Z=vNHBws83Gi=NT@7uaC zCyjyBA@8Uiaxf9FIu)O|Mr=&{Ec}7Q8|BRN9;HUxbMq`#upp&@=E-|qC z#v;$Ob)+i}o%285k}%k#Hf#gpA9=&^)4`g?WC%j`VmA0=#{)T3cLo>1F;8i*hj(m# z)^jxuIS!WJ+aHMdgJfZShA|MhsLem{|5OInc6ak&VN(ND&_kC&Q>j(nV4%@E4`Mg@D+WobT6Vexp`in=8TaTbM^2ppKhc zwvaYHn?xN4I=E0I?uE=dx0W@y3$oW1u^sh$`-{k*1wBuF1g=&Bvd?263eKR6+U#+J zoZA+}=&1yxl?AnJsbS8~_xEyrt=-ZzuAUfaBBO1mUwSXCbZOMv|8XC3n`e3S(+StZ z1vEX%)Cv1rFv@C!+Fq|ybt?#O-k<)pzjY8kJz{JC2-3k4*g&ybhJ%St7&@@<_sL>a zvbc7m`Wt3+H%O>^1FG9vhjBGqLjy|sM=kh7s#82rCn(SI3V=uSunZ{%(x{m}{)Fp-GmO&`&skmzY{d89>dlE0@ke3;`+AS%&1kidM(5nEDAX7pelpa0sdrX_e^DCL{V8n=d8>iza`hnywi zsguZRpP17G7ekD1_5D`f5qFokWPgO^qaP1lyaz_D#FDmG$W+<7ihgexxb4au}&CX9kNFMZB(3a$O_`yYglGCZDaa%IHLgc0+Y5c zo50l1Wx|`hf1CH0HY9y#w zk8;u8)--HmwSqtQycq#lR=jJgDu>W~!-tWg<0Qb%8rvur#XVK)9w#ft~{458WZezKX!$ zpVaHBwj!QPoG`&Z>M`0bM~c1^xF$ujm_I640^1_n1Ffo!jlFh`T5K+HHIK)v-MYBtitDbP;{t-$Y>V=YEc5DS##R9M9M1EHvqN0~{%p9@ge=C{izFjEsx7H3IZiCVgQG>P)EDzAe`IdWf|v-UAAp z=}HNC2D5E2fg-OuzPW~M5@!gA1sihYl8k(6J5ZUs~=A(ihSiY;eaGzp$k6Dp~5z7|l*6SA)NQOcLqP615T+Zh_mUR_OfW zO^))vKmck0O;BPyJe;J(Q?_b|fSZIqSD0y#4AlN6Y4KNJdWCGQ&3gS@8iDRn`igwc+0`Fprou(qFgs|?s@TJ zR+u^TP(&Zgx({i;oIt*+0t}EK57q>j=pB)RK1_`&F4BH@`MQ=1s^$M3C z4I2Rm%^nBi09Fb%RG#qyl#KQuMRC)YM@u>PvkndGE$DD@nF7pzxk+RcEI#p#RU+@2 zJ@6gSa^bAf;Bsa`I3i^SR}SfzDq){J^H}C77SIg`b2mXKh<@Ztr+;R4NBZ{whArpo ziS>J3zm#Q@0-C}j<`yAi38*8k7OAq2)c1s?xkka z^Ven)iBHLKK+!ndDSFcu@f#t<@t*GI!I%IKP*?LeC20mNhO=RnA5MvnP8h8pM!#;| zDzER%gP85taZaGhqn)EJ4ZmpXorQKh_)BE;Fvspp^NJ39B(Q*zaq&dCVoZ`yW{!!J)h}-!}9}h52;M12Z^M|$G&It4bs$CiUtxZMg5P^ILffq zZ(5G!D#+%Co14>fUBM`N8XL-X2kl+%iiVQ$aKF!{SYv7_IQbLN$S+In9V~xkeDFxy z?R@kBJ(TbE(0(Jjpv6EfxvW|7EdWo1C;dbainJ~BM!->f7NOzz>Ve&pNznMb>O20G zVnmTMdWTX@3)U{m;qPKD_jJM3$nJY@K7VVh%5Z#j_olz3(O99IRNqw7D!3aShUZ*C zRiXC7q_p0ZS>)~(gl1U~hD$>fdfxVp5Qc0D^UH^7RTU5Wpm^Eup9-0KaRO}Uhf#u~s>dI<%8YjEVgD)%&7tau9k_+cpU zqyl1`xTl(criO{00IdH3Dp(VjO}OM-lX2JOzzOr#dVu(JkT{+%>hRAUuAcFGE^V zNsv-n6UXsnCSw*;x@b@3=yAk zO5xF57ST{lhhr1knFT#lHwDlC0430|oFv6Lni&Y7Z(3&CD+?;0>$e;TKnPZ<`x)pS zJ*3K{g+w0Rc~-`4?~8*@meJ{gT9GNn~I~eIHV00XGR5}9VZp`zlA^C^(XfJi)n ze58xg`N?}wjWOkTGp_)BIGF39rbHl5F+V8e<^SdOXPHqV@f!MY*415Yk{^Dc{8>3C z#p3YRViXhlu;a{G$u~q2+?l?$A7sKgOMrCdg{Xp@RDDF~#)(io z$C&-N{e&Ztl#@6q=6vUxpWsmn@9fv=<|pBzTBHjvEV^1%g7@apg;NZxXW%G{)eRzW zn7Mj?*BSU3c{e$qSkPJKPZz=pXsEJo2_0r}fU^=O`)r=NQ2;J&HF6ttSpoiv6u3U62LX4l*23?|;~y&=%H%7z z<4RJ1%C#BSkcD{0oAb9f1H>(Zb+j;8^@f%h{bC!Te8(NW9C7m~?krIYsdG!-e4y99 zR9OiPLZ1n#vZDK>w*& z_U6r=1xIfYzzn_?yxM`H;i;m05)YMM@c_+FG;u*54eWqM$4Bra@^cVO>VZL*Zsk{< zxiUm5Q&hgs3w&hn5EM(b|Dk$e2xY2CQ}G0L8iQ?FNVY`!C=PBW?x*=T*RBq{j$n}p zqx>2mt8lf=AZbSIj>=ZWO9R7>5LayT4q<}-Ip2zJI82W>38^bKQDlczkj^nDOM(y* z2=6N52h!KAe zL#xOL9t4wS$Hrz1)6Qp_kHHs2Z!7tSq^|ehq{St)k8=~5984y}H=tsW$AGm13@?Fa z^tltjHHYAlH@}31%(+?cMIY>Ii#DyK_hV9F4vB_0*PlvM!r*Z;DXrhCkGZ|7C+yEe zVjxM1E5xBfTy%~4foG{T4#x*UNDXmhK2UR}!>a;7dkrRV~4 zjx)WJM46?>Tx9s?g8}-CSo%8OIpbveq9I3dPVBeD2~VXqaJXn&;~ZV3gv^r2FflGl zQam|+snKYK&`8Uc@@>4;;V9-3$h8`~BPIZkIi6Tr+lN`>AKomt$>My%+MF(|uM5_yEHh!0 z(JT^ZPBEQ^+v@W%-SbdMG%0@~*BQ_A7#}>WY>K4jAG15>=N_#7A%Rynd9%wmnHfg_ zmA789YLd)NA6r9Y(;V<%ZQ228hg5aAxb@c+zcs{2=SKe~uPtXXQhojTb0R>i#YPIf zi_k=RMX$i&RomrAQfax!VNY6=x? zokzoo{#q|46b;k)aH}x{PHqHVn_X0!*v{vxw@Owje=9iq{fHH&4sDMz?vw$m%Ev7e zsN{SnE1?FTAV@(Or6=kRp-&loyW#D2*@{6jxOBc=Bu}mS=DGfBRCxyQXH)@YRM#Or zw^-Vrjgeb)j$T9iEt5^fX2F5))n$s@KAs-v!t~|>ll6s??3hLTQX_k&wGEZcQn2HZ zu9#+8?5Lyi3yn35H3obztC*6=#O1fbpV32?&EsR%=}>M2caEP4Z7GHfmg_D2X(yNq51TQEE|zRs3|eK6S+b0sISJK+*4ML> zw#Qh<{}wJJKcR_swnI*!|L6$?9L?-@+93_m4&J69O1!FEvOk;xd0t_(-LX8?HJYhS zliXr)Hnr(7L)H5tp(A|rt25X3>;~Ur@1u^g#>M@3GMo&iFGnzqJNz4=ZY3@7RJBN6 zPb~y%&`65~_eV6!K1HHDhncI-aWef++1c4YMr_DUpUO)fIy>@c67`{&ZsIYu+s{F4 zn;P~z*icjrZTcwzJg?TqCeVvwz+Qdk--U(ucCaz)u?<+Gai&* zY&?s;CYjy#)jNz0#pc`{KJTqo(g_@HgLo^VP9M{Y9fvdnTj((5qaC7t@Xiki zhuPqx_P%&M`bz}_hq?2Eqtz7ZL#c6nl2spwLQZ$w0}Z-RGlp~7q=!b?fx?JLgF#I* z<>G|1!`7^}BKc~LtZ>aBxivQ{3ndARixCM_rQU=kRw}qIBzmx>?-D&Q>!Ll38EoIB zY}la1v{l&w9IkDlFer2!w%K+`@LDSR5;7w7}~oKOBp0n>OT8nN?Oat10fW zrp{%*9`UP?VO>h>v$&(DUfrSCBch4Lg5-wekry(%$?rdYh&k@~RNwQ{omxj9o)=Au z{H;=A%5=9kk^*VzP7HvT067 z%*-Z5Fzq60kd_oUVqf&mj%6N8GWGEVs*h3|XE%*`WNH%(kQ|(j`&Vz*IW4|;{2$I_ z;Wn@Uq}t&Q^riyrSWmF3JS^ z9Qu&`*~8rfZ(Sn@@Z-p{#~%xBivDF5*!1-ylaAty(O*ggskP&~wj3Y(<~$$#HQn@M zwTEV2++AJxDT|xFY&r6#FV&qnYW-sDw8M*lul`m_;$2N=rFr408aE^6;q_tcUC)=S za#qxhZL!&>xqqhml!5>2;R%zKnB7dozbR~k)M{`wTD#orZ8llznsolOu`yPHQH!ES zzet?q^=QY549>YwwAQHc#gnV&G{W?WW&WHqRAF1B$RpEtIc!Lpyi7wo^62dcN?#4psC!x3f;fM{VaKEylclxop~9d0Fq(a+ z9;hnrGu1|esuH)aD!Ki_RU^MCb+7)zf8zA2x;_5o83BG~IJrrU)%@u@Q= zu?R&GvmelA8VZt?Oxg;%yMkuVWP;prEouD-R)<+?;ee!&P=pII!Ca-nL#B!Z7$~;{ z6&+lpN9n;n1vX;VZV?c48^ZQOf!d+I#Q-fY>nKn?O2RRwF{2bD9R-(=Ho!H1m#4qC zXo26xK?x0p0*T)VH95IoN7A?Wm*u*(u*nhem*=x{uHEkj#aGL_QARb^ptaJRXZKlg z_IzCgdWggQqiSBf86XoBiw|*u8Mi%Cb^}Bdy2+7ms}RHjN9-Ni8}Kt*IbU}dm((^+ zD&0XrqB6M}I&1e8!-{+0r+^XSi}>H`mVQXnoM`*X8b=@E)xpep%u+()jlrXa$={xK z1eJoYNEAI#6W!5E``D>wfP2wzpZvAcQiExOF4OWBa_Yn13l$I(9g7wAkuzDn9m#!s}jIo-aG7au(g6-d)xS!$)4wx0)xjbHzlcM3q735k@IZ(Fv&TJHOgIDTxsp4wE08%SzBz?TEv}X{HjkXDoeToo?iZz=KA}u zs?2wsz54TI+0CFmhAOBU%FTL+bNn5ZPx&rGA1+6O@-nnq!v&Z)53;uI+O+OK>c(=C zKkYj;Zv<978!p4wt|Ik3fpxj}ZT}X1C!{@d^C5m;U4ODTKK}7Qp=K*MB)D?&Vxamg zVCFnRnKk|%$G|Gkh4fkE`~!LJd+4@(uLE;F(>H9K*Cb z27z=3E#%hdLJvRT--5Q}A+LlYrgRT#9wP_mpt~=~Di>-Vrx+^<5#0ngL-59S$o-(4^*4NTd8Fh{G z4=8>`E9DZ;Ta1JtiWrZ^`Tj$D*ZRD^xAF`8YLW3bor?8EgLK3S!=h4V5pt{=f&XrwGSyd)+H7)nGD4Ls#9vb6c=>KlQv;YLnSd7>j zjhNwh;{hSE212yAs#a3Jx9XCc`z) zE(H1%rb7|2f8+pQ&B6jbR}C7`tc2hL>*&l5|LxuO?@<)t3)TBQr=MSl`o`)nIk<#M zPpZ$rQGyk#hjg7=yXJUqJzjkkkQ)J_rxm-!CrChbTlCw1td5q#I&eD(I%XCwW_EUF zHg;MjW=bX|N@_SpIR{fwBUdvbDp4L5CKe8+|1D|ZYX*0MQW9cf6KDGure@|6=HM0+ zVc}+G;t~@U;t~@V;baow5auW1`+rOH{^uYa5eGNtf8XLGPm*zvQ^E@AxxRS3FVScc zV=VQa&#aJHEWWRJYFBNxRM25(xq}upwv|R88>li6CHaoZ%#4B}AlQdwXl+PjBv3n= z=+Wa-+q}$k&b>ZyQJblzJw(UcQnM|M$$C@_Es4lt7;P^=4GL+PZBJN^Y$}vflcNd| z@dru|zZ?Qc3Y2TtR>od|{C)D6FeW4xL6x`OZ$@5LKwGpvX~tfbKRy?avS}!qGD1ljVT_pZ`Y$TWT6|Xti3bg82O)2F=vIYhOyW+fIFtIRL z5Q+;>B{S@2_EQKbVL1z??MzitB~fh!)K>u-;J7#IKhlIcLH)nN6Wme!kBH==0-0ON zQ@y>cM>nmDVOv5)q!aCVW0RE)y5(r)+CH#VGu$0M%h>k$+w<7Yb9xHdj{Uz9=Q`i! zg^MAdrdgOVHi4sL25*WdwbKNPs~;Ne7wOl$(i(hx>0dn+yd)Y zmLSoB+hOK$;Pn3<^% Date: Wed, 4 Feb 2026 00:54:11 +0800 Subject: [PATCH 029/235] [spec] Add missing contextual rules for handlers (#2063) --- .../4.3-execution.instructions.spectec | 7 + .../4.3-execution.instructions.spectec | 7 + spectec/test-frontend/TEST.md | 63 +++--- spectec/test-latex/TEST.md | 2 + spectec/test-middlend/TEST.md | 189 ++++++++++-------- spectec/test-splice/TEST.md | 2 + 6 files changed, 162 insertions(+), 108 deletions(-) diff --git a/specification/wasm-3.0/4.3-execution.instructions.spectec b/specification/wasm-3.0/4.3-execution.instructions.spectec index bde165a66..8ed03426a 100644 --- a/specification/wasm-3.0/4.3-execution.instructions.spectec +++ b/specification/wasm-3.0/4.3-execution.instructions.spectec @@ -38,6 +38,10 @@ rule Step/ctxt-label: z; (LABEL_ n `{instr_0*} instr*) ~> z'; (LABEL_ n `{instr_0*} instr'*) -- Step: z; instr* ~> z'; instr'* +rule Step/ctxt-handler: + z; (HANDLER_ n `{catch*} instr*) ~> z'; (HANDLER_ n `{catch*} instr'*) + -- Step: z; instr* ~> z'; instr'* + rule Step/ctxt-frame: s; f; (FRAME_ n `{f'} instr*) ~> s'; f; (FRAME_ n `{f''} instr'*) -- Step: s; f'; instr* ~> s'; f''; instr'* @@ -289,6 +293,9 @@ rule Step_pure/trap-instrs: rule Step_pure/trap-label: (LABEL_ n `{instr'*} TRAP) ~> TRAP +rule Step_pure/trap-handler: + (HANDLER_ n `{catch*} TRAP) ~> TRAP + rule Step_pure/trap-frame: (FRAME_ n `{f} TRAP) ~> TRAP diff --git a/specification/wasm-latest/4.3-execution.instructions.spectec b/specification/wasm-latest/4.3-execution.instructions.spectec index bde165a66..8ed03426a 100644 --- a/specification/wasm-latest/4.3-execution.instructions.spectec +++ b/specification/wasm-latest/4.3-execution.instructions.spectec @@ -38,6 +38,10 @@ rule Step/ctxt-label: z; (LABEL_ n `{instr_0*} instr*) ~> z'; (LABEL_ n `{instr_0*} instr'*) -- Step: z; instr* ~> z'; instr'* +rule Step/ctxt-handler: + z; (HANDLER_ n `{catch*} instr*) ~> z'; (HANDLER_ n `{catch*} instr'*) + -- Step: z; instr* ~> z'; instr'* + rule Step/ctxt-frame: s; f; (FRAME_ n `{f'} instr*) ~> s'; f; (FRAME_ n `{f''} instr'*) -- Step: s; f'; instr* ~> s'; f''; instr'* @@ -289,6 +293,9 @@ rule Step_pure/trap-instrs: rule Step_pure/trap-label: (LABEL_ n `{instr'*} TRAP) ~> TRAP +rule Step_pure/trap-handler: + (HANDLER_ n `{catch*} TRAP) ~> TRAP + rule Step_pure/trap-frame: (FRAME_ n `{f} TRAP) ~> TRAP diff --git a/spectec/test-frontend/TEST.md b/spectec/test-frontend/TEST.md index 2a0f6bd08..81fa0c199 100644 --- a/spectec/test-frontend/TEST.md +++ b/spectec/test-frontend/TEST.md @@ -6079,6 +6079,10 @@ relation Step_pure: `%~>%`(instr*, instr*) rule `trap-label`{n : n, `instr'*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `trap-handler`{n : n, `catch*` : catch*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [TRAP_instr])], [TRAP_instr]) + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `trap-frame`{n : n, f : frame}: `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) @@ -6904,136 +6908,141 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_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-latest/4.3-execution.instructions.spectec:41.1-43.45 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:41.1-43.36 + rule `ctxt-handler`{z : state, n : n, `catch*` : catch*, `instr*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:45.1-47.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-latest/4.3-execution.instructions.spectec:227.1-231.49 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:231.1-235.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-latest/4.3-execution.instructions.spectec:302.1-303.56 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:309.1-310.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-latest/4.3-execution.instructions.spectec:315.1-316.58 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:322.1-323.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-latest/4.3-execution.instructions.spectec:329.1-331.33 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:336.1-338.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-latest/4.3-execution.instructions.spectec:333.1-335.32 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:340.1-342.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-latest/4.3-execution.instructions.spectec:344.1-347.46 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:351.1-354.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-latest/4.3-execution.instructions.spectec:349.1-350.87 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:356.1-357.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-latest/4.3-execution.instructions.spectec:410.1-411.51 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:417.1-418.51 rule elem.drop{z : state, x : idx}: `%~>%`(`%;%`_config(z, [ELEM.DROP_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:494.1-497.60 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:501.1-504.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-latest/4.3-execution.instructions.spectec:499.1-503.29 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:506.1-510.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-latest/4.3-execution.instructions.spectec:505.1-508.52 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:512.1-515.52 rule `store-pack-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), Inn : Inn, c : num_((Inn : Inn <: numtype)), n : n, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : Inn <: numtype), c) STORE_instr((Inn : Inn <: 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-latest/4.3-execution.instructions.spectec:510.1-514.52 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:517.1-521.52 rule `store-pack-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), Inn : Inn, c : num_((Inn : Inn <: numtype)), n : n, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : Inn <: numtype), c) STORE_instr((Inn : Inn <: 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 : Inn <: numtype)), n, c))) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:516.1-519.63 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:523.1-526.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-latest/4.3-execution.instructions.spectec:521.1-524.31 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:528.1-531.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-latest/4.3-execution.instructions.spectec:527.1-530.50 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:534.1-537.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-latest/4.3-execution.instructions.spectec:532.1-537.49 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:539.1-544.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-latest/4.3-execution.instructions.spectec:546.1-549.37 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:553.1-556.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-latest/4.3-execution.instructions.spectec:551.1-552.84 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:558.1-559.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-latest/4.3-execution.instructions.spectec:612.1-613.51 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:619.1-620.51 rule data.drop{z : state, x : idx}: `%~>%`(`%;%`_config(z, [DATA.DROP_instr(x)]), `%;%`_config($with_data(z, x, []), [])) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:693.1-697.65 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:700.1-704.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-latest/4.3-execution.instructions.spectec:714.1-715.53 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:721.1-722.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-latest/4.3-execution.instructions.spectec:717.1-720.46 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:724.1-727.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-latest/4.3-execution.instructions.spectec:733.1-738.65 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:740.1-745.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-latest/4.3-execution.instructions.spectec:778.1-779.64 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:785.1-786.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-latest/4.3-execution.instructions.spectec:781.1-783.39 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:788.1-790.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-latest/4.3-execution.instructions.spectec:785.1-788.44 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:792.1-795.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))) diff --git a/spectec/test-latex/TEST.md b/spectec/test-latex/TEST.md index af4a6c94e..6643e8520 100644 --- a/spectec/test-latex/TEST.md +++ b/spectec/test-latex/TEST.md @@ -9643,6 +9643,7 @@ $$ {\land}~ {{\mathit{val}}^\ast} \neq \epsilon \lor {{\mathit{instr}}_1^\ast} \neq \epsilon \\ \end{array} \\ {[\textsc{\scriptsize E{-}ctxt{-}label}]} \quad & z ; ({{\mathsf{label}}_{n}}{\{ {{\mathit{instr}}_0^\ast} \}}~{{\mathit{instr}}^\ast}) & \hookrightarrow & {z'} ; ({{\mathsf{label}}_{n}}{\{ {{\mathit{instr}}_0^\ast} \}}~{{\mathit{instr}'}^\ast}) & \quad \mbox{if}~ z ; {{\mathit{instr}}^\ast} \hookrightarrow {z'} ; {{\mathit{instr}'}^\ast} \\ +{[\textsc{\scriptsize E{-}ctxt{-}handler}]} \quad & z ; ({{\mathsf{handler}}_{n}}{\{ {{\mathit{catch}}^\ast} \}}~{{\mathit{instr}}^\ast}) & \hookrightarrow & {z'} ; ({{\mathsf{handler}}_{n}}{\{ {{\mathit{catch}}^\ast} \}}~{{\mathit{instr}'}^\ast}) & \quad \mbox{if}~ z ; {{\mathit{instr}}^\ast} \hookrightarrow {z'} ; {{\mathit{instr}'}^\ast} \\ {[\textsc{\scriptsize E{-}ctxt{-}frame}]} \quad & s ; f ; ({{\mathsf{frame}}_{n}}{\{ {f'} \}}~{{\mathit{instr}}^\ast}) & \hookrightarrow & {s'} ; f ; ({{\mathsf{frame}}_{n}}{\{ {f''} \}}~{{\mathit{instr}'}^\ast}) & \quad \mbox{if}~ s ; {f'} ; {{\mathit{instr}}^\ast} \hookrightarrow {s'} ; {f''} ; {{\mathit{instr}'}^\ast} \\ \end{array} $$ @@ -9896,6 +9897,7 @@ $$ \begin{array}[t]{@{}lrcl@{}l@{}} {[\textsc{\scriptsize E{-}trap{-}instrs}]} \quad & {{\mathit{val}}^\ast}~\mathsf{trap}~{{\mathit{instr}}^\ast} & \hookrightarrow & \mathsf{trap} & \quad \mbox{if}~ {{\mathit{val}}^\ast} \neq \epsilon \lor {{\mathit{instr}}^\ast} \neq \epsilon \\ {[\textsc{\scriptsize E{-}trap{-}label}]} \quad & ({{\mathsf{label}}_{n}}{\{ {{\mathit{instr}'}^\ast} \}}~\mathsf{trap}) & \hookrightarrow & \mathsf{trap} \\ +{[\textsc{\scriptsize E{-}trap{-}handler}]} \quad & ({{\mathsf{handler}}_{n}}{\{ {{\mathit{catch}}^\ast} \}}~\mathsf{trap}) & \hookrightarrow & \mathsf{trap} \\ {[\textsc{\scriptsize E{-}trap{-}frame}]} \quad & ({{\mathsf{frame}}_{n}}{\{ f \}}~\mathsf{trap}) & \hookrightarrow & \mathsf{trap} \\ \end{array} $$ diff --git a/spectec/test-middlend/TEST.md b/spectec/test-middlend/TEST.md index 40823f89a..2e043cc0a 100644 --- a/spectec/test-middlend/TEST.md +++ b/spectec/test-middlend/TEST.md @@ -6069,6 +6069,10 @@ relation Step_pure: `%~>%`(instr*, instr*) rule `trap-label`{n : n, `instr'*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `trap-handler`{n : n, `catch*` : catch*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [TRAP_instr])], [TRAP_instr]) + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `trap-frame`{n : n, f : frame}: `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) @@ -6894,136 +6898,141 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_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-latest/4.3-execution.instructions.spectec:41.1-43.45 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:41.1-43.36 + rule `ctxt-handler`{z : state, n : n, `catch*` : catch*, `instr*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:45.1-47.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-latest/4.3-execution.instructions.spectec:227.1-231.49 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:231.1-235.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-latest/4.3-execution.instructions.spectec:302.1-303.56 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:309.1-310.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-latest/4.3-execution.instructions.spectec:315.1-316.58 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:322.1-323.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-latest/4.3-execution.instructions.spectec:329.1-331.33 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:336.1-338.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-latest/4.3-execution.instructions.spectec:333.1-335.32 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:340.1-342.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-latest/4.3-execution.instructions.spectec:344.1-347.46 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:351.1-354.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-latest/4.3-execution.instructions.spectec:349.1-350.87 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:356.1-357.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-latest/4.3-execution.instructions.spectec:410.1-411.51 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:417.1-418.51 rule elem.drop{z : state, x : idx}: `%~>%`(`%;%`_config(z, [ELEM.DROP_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:494.1-497.60 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:501.1-504.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-latest/4.3-execution.instructions.spectec:499.1-503.29 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:506.1-510.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-latest/4.3-execution.instructions.spectec:505.1-508.52 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:512.1-515.52 rule `store-pack-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), Inn : Inn, c : num_((Inn : Inn <: numtype)), n : n, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : Inn <: numtype), c) STORE_instr((Inn : Inn <: 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-latest/4.3-execution.instructions.spectec:510.1-514.52 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:517.1-521.52 rule `store-pack-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), Inn : Inn, c : num_((Inn : Inn <: numtype)), n : n, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : Inn <: numtype), c) STORE_instr((Inn : Inn <: 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 : Inn <: numtype)), n, c))) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:516.1-519.63 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:523.1-526.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-latest/4.3-execution.instructions.spectec:521.1-524.31 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:528.1-531.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-latest/4.3-execution.instructions.spectec:527.1-530.50 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:534.1-537.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-latest/4.3-execution.instructions.spectec:532.1-537.49 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:539.1-544.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-latest/4.3-execution.instructions.spectec:546.1-549.37 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:553.1-556.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-latest/4.3-execution.instructions.spectec:551.1-552.84 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:558.1-559.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-latest/4.3-execution.instructions.spectec:612.1-613.51 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:619.1-620.51 rule data.drop{z : state, x : idx}: `%~>%`(`%;%`_config(z, [DATA.DROP_instr(x)]), `%;%`_config($with_data(z, x, []), [])) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:693.1-697.65 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:700.1-704.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-latest/4.3-execution.instructions.spectec:714.1-715.53 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:721.1-722.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-latest/4.3-execution.instructions.spectec:717.1-720.46 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:724.1-727.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-latest/4.3-execution.instructions.spectec:733.1-738.65 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:740.1-745.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-latest/4.3-execution.instructions.spectec:778.1-779.64 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:785.1-786.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-latest/4.3-execution.instructions.spectec:781.1-783.39 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:788.1-790.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-latest/4.3-execution.instructions.spectec:785.1-788.44 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:792.1-795.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))) @@ -17425,6 +17434,10 @@ relation Step_pure: `%~>%`(instr*, instr*) rule `trap-label`{n : n, `instr'*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `trap-handler`{n : n, `catch*` : catch*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [TRAP_instr])], [TRAP_instr]) + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `trap-frame`{n : n, f : frame}: `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) @@ -18250,136 +18263,141 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_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-latest/4.3-execution.instructions.spectec:41.1-43.45 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:41.1-43.36 + rule `ctxt-handler`{z : state, n : n, `catch*` : catch*, `instr*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:45.1-47.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-latest/4.3-execution.instructions.spectec:227.1-231.49 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:231.1-235.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-latest/4.3-execution.instructions.spectec:302.1-303.56 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:309.1-310.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-latest/4.3-execution.instructions.spectec:315.1-316.58 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:322.1-323.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-latest/4.3-execution.instructions.spectec:329.1-331.33 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:336.1-338.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-latest/4.3-execution.instructions.spectec:333.1-335.32 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:340.1-342.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-latest/4.3-execution.instructions.spectec:344.1-347.46 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:351.1-354.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-latest/4.3-execution.instructions.spectec:349.1-350.87 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:356.1-357.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-latest/4.3-execution.instructions.spectec:410.1-411.51 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:417.1-418.51 rule elem.drop{z : state, x : idx}: `%~>%`(`%;%`_config(z, [ELEM.DROP_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:494.1-497.60 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:501.1-504.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-latest/4.3-execution.instructions.spectec:499.1-503.29 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:506.1-510.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-latest/4.3-execution.instructions.spectec:505.1-508.52 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:512.1-515.52 rule `store-pack-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), Inn : Inn, c : num_((Inn : Inn <: numtype)), n : n, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : Inn <: numtype), c) STORE_instr((Inn : Inn <: 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-latest/4.3-execution.instructions.spectec:510.1-514.52 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:517.1-521.52 rule `store-pack-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), Inn : Inn, c : num_((Inn : Inn <: numtype)), n : n, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : Inn <: numtype), c) STORE_instr((Inn : Inn <: 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 : Inn <: numtype)), n, c))) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:516.1-519.63 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:523.1-526.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-latest/4.3-execution.instructions.spectec:521.1-524.31 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:528.1-531.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-latest/4.3-execution.instructions.spectec:527.1-530.50 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:534.1-537.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-latest/4.3-execution.instructions.spectec:532.1-537.49 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:539.1-544.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-latest/4.3-execution.instructions.spectec:546.1-549.37 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:553.1-556.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-latest/4.3-execution.instructions.spectec:551.1-552.84 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:558.1-559.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-latest/4.3-execution.instructions.spectec:612.1-613.51 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:619.1-620.51 rule data.drop{z : state, x : idx}: `%~>%`(`%;%`_config(z, [DATA.DROP_instr(x)]), `%;%`_config($with_data(z, x, []), [])) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:693.1-697.65 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:700.1-704.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-latest/4.3-execution.instructions.spectec:714.1-715.53 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:721.1-722.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-latest/4.3-execution.instructions.spectec:717.1-720.46 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:724.1-727.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-latest/4.3-execution.instructions.spectec:733.1-738.65 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:740.1-745.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-latest/4.3-execution.instructions.spectec:778.1-779.64 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:785.1-786.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-latest/4.3-execution.instructions.spectec:781.1-783.39 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:788.1-790.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-latest/4.3-execution.instructions.spectec:785.1-788.44 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:792.1-795.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))) @@ -28914,6 +28932,10 @@ relation Step_pure: `%~>%`(instr*, instr*) rule `trap-label`{n : n, `instr'*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule `trap-handler`{n : n, `catch*` : catch*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [TRAP_instr])], [TRAP_instr]) + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `trap-frame`{n : n, f : frame}: `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) @@ -29779,12 +29801,17 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_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-latest/4.3-execution.instructions.spectec:41.1-43.45 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:41.1-43.36 + rule `ctxt-handler`{z : state, n : n, `catch*` : catch*, `instr*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:45.1-47.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-latest/4.3-execution.instructions.spectec:227.1-231.49 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:231.1-235.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([]))) @@ -29792,74 +29819,74 @@ relation Step: `%~>%`(config, config) -- if (x!`%`_idx.0 < |$tagaddr(z)|) -- if (exn = {TAG $tagaddr(z)[x!`%`_idx.0], FIELDS val^n{val <- `val*`}}) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:302.1-303.56 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:309.1-310.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-latest/4.3-execution.instructions.spectec:315.1-316.58 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:322.1-323.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-latest/4.3-execution.instructions.spectec:329.1-331.33 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:336.1-338.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-latest/4.3-execution.instructions.spectec:333.1-335.32 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:340.1-342.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-latest/4.3-execution.instructions.spectec:344.1-347.46 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:351.1-354.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 ($growtable($table(z, x), n, ref) =/= ?()) -- if (ti = !($growtable($table(z, x), n, ref))) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:349.1-350.87 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:356.1-357.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-latest/4.3-execution.instructions.spectec:410.1-411.51 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:417.1-418.51 rule elem.drop{z : state, x : idx}: `%~>%`(`%;%`_config(z, [ELEM.DROP_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:494.1-497.60 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:501.1-504.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-latest/4.3-execution.instructions.spectec:499.1-503.29 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:506.1-510.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-latest/4.3-execution.instructions.spectec:505.1-508.52 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:512.1-515.52 rule `store-pack-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), Inn : Inn, c : num_((Inn : Inn <: numtype)), n : n, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : Inn <: numtype), c) STORE_instr((Inn : Inn <: 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-latest/4.3-execution.instructions.spectec:510.1-514.52 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:517.1-521.52 rule `store-pack-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), Inn : Inn, c : num_((Inn : Inn <: numtype)), n : n, x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : Inn <: numtype), c) STORE_instr((Inn : Inn <: 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 : Inn <: numtype)), n, c))) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:516.1-519.63 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:523.1-526.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-latest/4.3-execution.instructions.spectec:521.1-524.31 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:528.1-531.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-latest/4.3-execution.instructions.spectec:527.1-530.50 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:534.1-537.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-latest/4.3-execution.instructions.spectec:532.1-537.49 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:539.1-544.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)) @@ -29867,54 +29894,54 @@ relation Step: `%~>%`(config, config) -- if (j!`%`_laneidx.0 < |$lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)|) -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_laneidx.0]!`%`_lane_.0))) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:546.1-549.37 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:553.1-556.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 ($growmem($mem(z, x), n) =/= ?()) -- if (mi = !($growmem($mem(z, x), n))) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:551.1-552.84 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:558.1-559.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-latest/4.3-execution.instructions.spectec:612.1-613.51 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:619.1-620.51 rule data.drop{z : state, x : idx}: `%~>%`(`%;%`_config(z, [DATA.DROP_instr(x)]), `%;%`_config($with_data(z, x, []), [])) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:693.1-697.65 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:700.1-704.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-latest/4.3-execution.instructions.spectec:714.1-715.53 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:721.1-722.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-latest/4.3-execution.instructions.spectec:717.1-720.46 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:724.1-727.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)), [])) -- if (i!`%`_u32.0 < |zt*{zt <- `zt*`}|) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:733.1-738.65 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:740.1-745.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-latest/4.3-execution.instructions.spectec:778.1-779.64 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:785.1-786.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-latest/4.3-execution.instructions.spectec:781.1-783.39 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:788.1-790.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 (a < |$arrayinst(z)|) -- if (i!`%`_num_.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:785.1-788.44 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:792.1-795.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))) diff --git a/spectec/test-splice/TEST.md b/spectec/test-splice/TEST.md index 4344a7c75..f61439203 100644 --- a/spectec/test-splice/TEST.md +++ b/spectec/test-splice/TEST.md @@ -1196,6 +1196,7 @@ warning: rule `Resulttype_sub` was never spliced warning: rule `Start_ok` was never spliced warning: rule `Step/ctxt-instrs` was never spliced warning: rule `Step/ctxt-label` was never spliced +warning: rule `Step/ctxt-handler` was never spliced warning: rule `Step/ctxt-frame` was never spliced warning: rule `Step/throw` was never spliced warning: rule `Step/local.set` was never spliced @@ -1251,6 +1252,7 @@ warning: rule `Step_pure/return-handler` was never spliced warning: rule `Step_pure/handler-vals` was never spliced warning: rule `Step_pure/trap-instrs` was never spliced warning: rule `Step_pure/trap-label` was never spliced +warning: rule `Step_pure/trap-handler` was never spliced warning: rule `Step_pure/trap-frame` was never spliced warning: rule `Step_pure/local.tee` was never spliced warning: rule `Step_pure/ref.i31` was never spliced From 1ecdbf35e2bde18810fc59228c7327b9dad8c19a Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Tue, 3 Feb 2026 16:46:44 +0100 Subject: [PATCH 030/235] [spectec] Allow quoting more operators as atoms --- spectec/doc/Language.md | 16 ++++++----- spectec/src/backend-latex/render.ml | 10 ++++++- spectec/src/frontend/parser.mly | 27 ++++++++++++++----- spectec/src/xl/atom.ml | 41 ++++++++++++++++++++++++----- 4 files changed, 74 insertions(+), 20 deletions(-) diff --git a/spectec/doc/Language.md b/spectec/doc/Language.md index dfabc5fbc..150b3027d 100644 --- a/spectec/doc/Language.md +++ b/spectec/doc/Language.md @@ -1367,15 +1367,19 @@ ruleid ::= id subid ::= ("/" | "-") ruleid atomop ::= - "in" | ":" | ";" | "\" | <:" + ":" | ";" | "\" | "<:" | ":>" "<<" | ">>" "|-" | "-|" - ":=" | "~~" | "~~_" - "->" | "~>" | "~>*" | "=>" - "`." | ".." | "..." - "`?" | "`+" | "`*" + ":=" | "==" | "~~" + "->" | "~>" | "~>*" | "`=>" + "." | ".." | "..." + "`^?" | "`^+" | "`^*" + "`+" | "`-" | "`+-" | "`-+" | "`*" | "`/" | "`\" + "`=" | "`=/=" | "`<" | "`>" | "`<=" | "`>=" + "`~" | "`/\" | "`\/" + "`<-" "(/\)" | "(\/)" | "(+)" | "(*)" | "(++)" - ":_" | "=_" | "==_" | "->_" | "=>_" | "~>_" | "~>*_" | "|-_" | "-|_" + ":_" | "=_" | "==_" | "~~_" | "->_" | "=>_" | "~>_" | "~>*_" | "|-_" | "-|_" ``` diff --git a/spectec/src/backend-latex/render.ml b/spectec/src/backend-latex/render.ml index 7b0549a6e..ca268e061 100644 --- a/spectec/src/backend-latex/render.ml +++ b/spectec/src/backend-latex/render.ml @@ -1042,8 +1042,16 @@ Printf.eprintf "[render_atom %s @ %s] id=%s def=%s macros: %s (%s)\n%!" | Less -> "<" | Greater -> ">" | Quest -> "{}^?" - | Plus -> "{}^+" | Star -> "{}^\\ast" + | Iter -> "{}^+" + | Plus -> "+" + | Minus -> "-" + | PlusMinus -> "\\pm" + | MinusPlus -> "\\mp" + | Slash -> "/" + | Not -> "\\neg" + | And -> "\\land" + | Or -> "\\lor" | LParen -> "(" | RParen -> ")" | LBrack -> "{}[" diff --git a/spectec/src/frontend/parser.mly b/spectec/src/frontend/parser.mly index 1ca11a7ec..2c3b88396 100644 --- a/spectec/src/frontend/parser.mly +++ b/spectec/src/frontend/parser.mly @@ -320,9 +320,18 @@ atom_escape : | TICK GE { Atom.GreaterEqual } | TICK MEM { Atom.Mem } | TICK NOTMEM { Atom.NotMem } - | TICK QUEST { Atom.Quest } + | TICK UP QUEST { Atom.Quest } + | TICK UP STAR { Atom.Star } + | TICK UP PLUS { Atom.Iter } | TICK PLUS { Atom.Plus } - | TICK STAR { Atom.Star } + | TICK MINUS { Atom.Minus } + | TICK PLUSMINUS { Atom.PlusMinus } + | TICK MINUSPLUS { Atom.MinusPlus } + | TICK STAR { Atom.Times } + | TICK SLASH { Atom.Slash } + | TICK NOT { Atom.Not } + | TICK AND { Atom.And } + | TICK OR { Atom.Or } | TICK BAR { Atom.Bar } | TICK CAT { Atom.Cat } | TICK COMMA { Atom.Comma } @@ -641,7 +650,7 @@ exp_prim_ : | exp_hole_ { $1 } | EPS { EpsE } | LBRACE comma_nl_list(fieldexp) RBRACE { StrE $2 } - | LPAREN comma_list(exp_bin) RPAREN + | LPAREN comma_list(exp_rel) RPAREN { match $2 with | [] -> ParenE (SeqE [] $ $sloc) | [e] -> ParenE e @@ -710,12 +719,18 @@ exp_bin_ : exp_rel : exp_rel_ { $1 $ $sloc } exp_rel_ : | exp_bin_ { $1 } - | comma(exp) exp_rel { CommaE (SeqE [] $ $loc($1), $2) } | relop exp_rel { InfixE (SeqE [] $ $loc($1), $1, $2) } - | exp_rel comma(exp) exp_rel { CommaE ($1, $3) } | exp_rel relop exp_rel { InfixE ($1, $2, $3) } -exp : exp_rel { $1 } +exp_comma : exp_comma_ { $1 $ $sloc } +exp_comma_ : + | exp_bin_ { $1 } + | comma(exp) exp_comma { CommaE (SeqE [] $ $loc($1), $2) } + | relop exp_comma { InfixE (SeqE [] $ $loc($1), $1, $2) } + | exp_comma comma(exp) exp_comma { CommaE ($1, $3) } + | exp_comma relop exp_comma { InfixE ($1, $2, $3) } + +exp : exp_comma { $1 } fieldexp : | fieldid exp_atom+ diff --git a/spectec/src/xl/atom.ml b/spectec/src/xl/atom.ml index 263effc22..02f93ca06 100644 --- a/spectec/src/xl/atom.ml +++ b/spectec/src/xl/atom.ml @@ -14,7 +14,11 @@ and atom' = | Dot2 (* `..` *) | Dot3 (* `...` *) | Semicolon (* `;` *) - | Backslash (* `\` *) + | Slash (* ``/` *) + | Backslash (* ``\` *) + | Not (* ``~` *) + | And (* ``/\` *) + | Or (* ``\/` *) | Mem (* `<-` *) | NotMem (* `` *) @@ -47,9 +51,14 @@ and atom' = | TurnstileSub (* `|-_` *) | Tilesturn (* `-|` *) | TilesturnSub (* `-|_` *) - | Quest (* ``?` *) + | Quest (* ``^?` *) + | Star (* ``^*` *) + | Iter (* ``^+` *) | Plus (* ``+` *) - | Star (* ``*` *) + | Minus (* ``-` *) + | PlusMinus (* ``+-` *) + | MinusPlus (* ``-+` *) + | Times (* ``*` *) | Comma (* ``,` *) | Cat (* ``++` *) | Bar (* ``|` *) @@ -103,6 +112,7 @@ let to_string atom = | Dot2 -> ".." | Dot3 -> "..." | Semicolon -> ";" + | Slash -> "/" | Backslash -> "\\" | Mem -> "<-" | NotMem -> " "-|_" | Turnstile -> "|-" | TurnstileSub -> "|-_" - | Quest -> "?" + | Quest -> "^?" + | Star -> "^*" + | Iter -> "^+" | Plus -> "+" - | Star -> "*" + | Minus -> "-" + | PlusMinus -> "+-" + | MinusPlus -> "-+" + | Times -> "*" + | Not -> "~" + | And -> "/\\" + | Or -> "\\/" | Comma -> "," | Cat -> "++" | Bar -> "|" @@ -168,6 +186,7 @@ let name atom = | Dot2 -> "dotdot" (* Latex: .. *) | Dot3 -> "dots" (* Latex: \ldots *) | Semicolon -> "semicolon" (* Latex: ; *) + | Slash -> "slash" (* Latex: / *) | Backslash -> "setminus" | Mem -> "in" | NotMem -> "notin" @@ -201,9 +220,17 @@ let name atom = | TilesturnSub -> "dashv_" (* Latex: \dashv with subscript *) | Turnstile -> "vdash" | TurnstileSub -> "vdash_" (* Latex: \vdash with subscript *) - | Quest -> "quest" (* Latex: ? *) + | Quest -> "quest" (* Latex: ^? *) + | Star -> "ast" (* Latex: ^\ast *) + | Iter -> "iter" (* Latex: ^+ *) | Plus -> "plus" (* Latex: + *) - | Star -> "ast" + | Minus -> "minus" (* Latex: - *) + | PlusMinus -> "plusminus" (* Latex: \pm *) + | MinusPlus -> "minusplus" (* Latex: \mp *) + | Times -> "times" + | Not -> "not" (* Latex: neg *) + | And -> "and" (* Latex: land *) + | Or -> "or" (* Latex: lor *) | Comma -> "comma" (* Latex: , *) | Cat -> "cat" (* Latex: \oplus *) | Bar -> "bar" (* Latex: | *) From 36ce9b8baac2dd8b6204fbd3e1b1a91b33ecf9f5 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Thu, 5 Feb 2026 13:38:56 +0100 Subject: [PATCH 031/235] [spectec] Allow more recursion --- spectec/doc/Language.md | 22 +++++--- spectec/src/el/debug.ml | 3 ++ spectec/src/frontend/elab.ml | 92 +++++++++++++++++++++++---------- spectec/src/frontend/lexer.mll | 3 +- spectec/src/frontend/parser.mly | 21 +++++--- spectec/src/il/eval.ml | 28 ++++++---- 6 files changed, 115 insertions(+), 54 deletions(-) diff --git a/spectec/doc/Language.md b/spectec/doc/Language.md index 150b3027d..a9dbdbab2 100644 --- a/spectec/doc/Language.md +++ b/spectec/doc/Language.md @@ -151,13 +151,19 @@ atomid ::= "_|_" | "^|^" atomop ::= - ":" | ";" | "\" | <:" + ":" | ";" | "\" | "<:" | ":>" "<<" | ">>" "|-" | "-|" - ":=" | "~~" + ":=" | "==" | "~~" "->" | "~>" | "~>*" | "=>" - "`." | ".." | "..." - "?" | "*" + "." | ".." | "..." + "`^?" | "`^+" | "`^*" + "`+" | "`-" | "`+-" | "`-+" | "`*" | "`/" | "`\" + "`=" | "`=/=" | "`<" | "`>" | "`<=" | "`>=" + "`~" | "`/\" | "`\/" | "`==>" | "`<=>" + "`<-" + "(/\)" | "(\/)" | "(+)" | "(*)" | "(++)" + ":_" | "=_" | "==_" | "~~_" | "->_" | "=>_" | "~>_" | "~>*_" | "|-_" | "-|_" ``` ##### Type Aliases @@ -465,7 +471,7 @@ exp ::= ... exp cmpop exp comparison notop ::= "~" -logop ::= "/\" | "\/" | "=>" +logop ::= "/\" | "\/" | "==>" | "<=>" cmpop ::= "=" | "=/=" | "<" | ">" | "<=" | ">=" ``` @@ -1371,12 +1377,12 @@ atomop ::= "<<" | ">>" "|-" | "-|" ":=" | "==" | "~~" - "->" | "~>" | "~>*" | "`=>" + "->" | "~>" | "~>*" | "=>" "." | ".." | "..." "`^?" | "`^+" | "`^*" "`+" | "`-" | "`+-" | "`-+" | "`*" | "`/" | "`\" "`=" | "`=/=" | "`<" | "`>" | "`<=" | "`>=" - "`~" | "`/\" | "`\/" + "`~" | "`/\" | "`\/" | "`==>" | "`<=>" "`<-" "(/\)" | "(\/)" | "(+)" | "(*)" | "(++)" ":_" | "=_" | "==_" | "~~_" | "->_" | "=>_" | "~>_" | "~>*_" | "|-_" | "-|_" @@ -1442,7 +1448,7 @@ nottyp ::= ``` notop ::= "~" -logop ::= "/\" | "\/" | "=>" +logop ::= "/\" | "\/" | "==>" | "<=>" cmpop ::= "=" | "=/=" | "<" | ">" | "<=" | ">=" exp ::= varid meta variable diff --git a/spectec/src/el/debug.ml b/spectec/src/el/debug.ml index d6691d4c1..6f4e11567 100644 --- a/spectec/src/el/debug.ml +++ b/spectec/src/el/debug.ml @@ -4,6 +4,9 @@ open Print let el_id = Util.Source.it let el_atom = string_of_atom +let el_unop = string_of_unop +let el_binop = string_of_binop +let el_cmpop = string_of_cmpop let el_iter = string_of_iter let el_typ = string_of_typ ~short:true let el_typfield = string_of_typfield ~short:true diff --git a/spectec/src/frontend/elab.ml b/spectec/src/frontend/elab.ml index 2e1a9410c..afb0d9694 100644 --- a/spectec/src/frontend/elab.ml +++ b/spectec/src/frontend/elab.ml @@ -409,7 +409,7 @@ let rec choice env = function | Ok x -> Ok x | Fail traces2 -> Fail (traces1 @ traces2) -let nest at t r = +let nest at t r = (* nest parsing error trace *) match r with | Ok _ -> r | Fail traces -> @@ -726,6 +726,10 @@ let infer_unop env op t1 at : (Il.unop * Il.optyp * Il.typ * Il.typ) attempt = ) let infer_binop env op t1 t2 at : (Il.binop * Il.optyp * Il.typ * Il.typ * Il.typ) attempt = + Debug.(log "el.infer_binop" + (fun _ -> fmt "%s : %s" (el_binop op) (il_typ t1)) + (function Ok _ -> "true" | _ -> "false") + ) @@ fun _ -> let ops = infer_binop' op in match List.find_opt (fun (_, _, t1', t2', _) -> @@ -794,21 +798,24 @@ and elab_itertyp env (it : iter) : Il.iter = in elab_iter env it -and elab_iterexp : 'a 'b. env -> (env -> 'a -> 'b attempt) -> 'a -> iter -> ('b * Il.iterexp * Il.iter) attempt = - fun env f body (it : iter) -> - let xo = match it with ListN (_, xo) -> xo | _ -> None in - let to_ = Option.join (Option.map (fun x -> Map.find_opt x.it env.vars) xo) in - let it' = elab_iter env it in - let* body' = f env body in - (* Remove local and restore outer if present *) - Option.iter (fun x -> - env.vars <- - match to_ with - | None -> Map.remove x.it env.vars - | Some t -> Map.add x.it t env.vars - ) xo; - (* Iterator list is injected after dimension analysis, leave it empty here *) - Ok (body', (it', []), match it with Opt -> Il.Opt | _ -> Il.List) +and elab_iterexp : 'a 'b. env -> (env -> 'a -> 'b attempt) -> 'a -> iter -> Source.region -> ('b * Il.iterexp * Il.iter) attempt = + fun env f body (it : iter) at -> + let it'' = match it with Opt -> Il.Opt | _ -> Il.List in + nest at (Il.IterT (Il.TupT [] $ at, it'') $ at) ( + let xo = match it with ListN (_, xo) -> xo | _ -> None in + let to_ = Option.join (Option.map (fun x -> Map.find_opt x.it env.vars) xo) in + let it' = elab_iter env it in + let* body' = f env body in + (* Remove local and restore outer if present *) + Option.iter (fun x -> + env.vars <- + match to_ with + | None -> Map.remove x.it env.vars + | Some t -> Map.add x.it t env.vars + ) xo; + (* Iterator list is injected after dimension analysis, leave it empty here *) + Ok (body', (it', []), match it with Opt -> Il.Opt | _ -> Il.List) + ) (* Types *) @@ -1043,7 +1050,7 @@ and elab_typ_notation' env tid (t : typ) : Il.mixop * (Il.id * Il.typ) list = | _ -> "_" $ t.at in let x' = id_of t [] in - let t' = elab_typ env ~fwd: false t in + let t' = elab_typ env t in (* Ignore name if already bound. This may happen if the same type name * occurs multiple times as a parameter. *) if not (bound env.vars x') then env.vars <- bind "variable" env.vars x' t'; @@ -1238,7 +1245,7 @@ and infer_exp' env e : (Il.exp' * Il.typ') attempt = | InfixE _ -> fail_infer e.at "infix expression" | BrackE _ -> fail_infer e.at "bracket expression" | IterE (e1, it) -> - let* (e1', t1), ite', itt' = elab_iterexp env infer_exp e1 it in + let* (e1', t1), ite', itt' = elab_iterexp env infer_exp e1 it e.at in Ok (Il.IterE (e1', ite'), Il.IterT (t1, itt')) | TypE (e1, t) -> let t' = elab_typ env t in @@ -1429,7 +1436,7 @@ and elab_exp_plain' env (e : exp) (t : Il.typ) : Il.exp' attempt = | IterE (e1, it2) -> let* t1, it = as_iter_typ "iteration" env Check t e.at in let* e1', ite2', itt2' = elab_iterexp env - (fun env (e, t) -> elab_exp env e t) (e1, t1) it2 in + (fun env (e, t) -> elab_exp env e t) (e1, t1) it2 e.at in let e' = Il.IterE (e1', ite2') in match it2, it with | Opt, Il.Opt -> Ok e' @@ -1822,11 +1829,11 @@ and cast_exp' phrase env (e' : Il.exp) t1 t2 : Il.exp' attempt = | (Il.VariantT tcs1, dots1), (Il.VariantT tcs2, dots2) -> let* () = - (* Shallow breadth subtyping on variants *) + (* Shallow recursive breadth subtyping on variants *) match iter_attempt (fun (mixop, (tC1, _, _), _) -> let* _, (tC2, _, _), _ = attempt (find_case tcs2 mixop t1.at) t2 in - if equiv_typ env tC1 tC2 then + if sub_typ env tC1 tC2 then Ok () else fail_mixop e'.at mixop t1 "type mismatch for case" @@ -1930,10 +1937,10 @@ and elab_prem env (pr : prem) : Il.prem list = env.vars <- bind "variable" env.vars id t'; [] | RulePr (id, as_, e) -> - let ps', _, _, mixop, not = find "relation" env.rels id in + let ps', t, _, mixop, not = find "relation" env.rels id in let as', s = elab_args `Rhs env as_ ps' pr.at in let not' = Xl.Mixop.map (fun (x, t) -> x, Il.Subst.subst_typ s t) not in - let es', _s = checkpoint (elab_exp_notation' env id e not') in + let es', _s = checkpoint (nest pr.at t (elab_exp_notation' env id e not')) in [Il.RulePr (id, as', mixop, tup_exp_nary' es' e.at) $ pr.at] | IfPr e -> let e' = checkpoint (elab_exp env e (Il.BoolT $ e.at)) in @@ -1944,7 +1951,7 @@ and elab_prem env (pr : prem) : Il.prem list = error at "misplaced variable premise" | IterPr (pr1, it) -> let prs1', ite', _itt' = checkpoint (elab_iterexp env - (fun env pr -> Ok (elab_prem env pr)) pr1 it) in + (fun env pr -> Ok (elab_prem env pr)) pr1 it pr.at) in assert (List.length prs1' = 1); [Il.IterPr (List.hd prs1', ite') $ pr.at] @@ -2018,7 +2025,7 @@ and infer_sym env (g : sym) : (Il.sym * Il.typ) attempt = | ArithG e -> infer_sym env (sym_of_exp e) | IterG (g1, it) -> - let* (g1', t1), ite', itt' = elab_iterexp env infer_sym g1 it in + let* (g1', t1), ite', itt' = elab_iterexp env infer_sym g1 it g.at in Ok (Il.IterG (g1', ite') $ g.at, Il.IterT (t1, itt') $ g.at) | AttrG (e, g1) -> choice env [ @@ -2456,6 +2463,35 @@ let infer_typdef env (d : def) : def = d | _ -> d +let infer_fundef env (d : def) = + match d.it with + | DecD (x, ps, t, _hints) -> + let env' = local_env env in + let ps' = elab_params env' ps in + let t' = elab_typ env' t in + if env'.pm then error d.at "misplaced +- or -+ operator in declaration"; + let dims = Dim.check Map.empty ps' [] [t'] [] [] [] in + let t' = Dim.annot_typ dims t' in + infer_no_quants env dims Det.empty ps' [] [t'] [] [] [] d.at; + env.defs <- bind "definition" env.defs x (ps', t', []); + | _ -> () + +let infer_reldef env (d : def) = + match d.it with + | RelD (x, ps, t, _hints) -> + let env' = local_env env in + let ps' = elab_params env' ps in + let mixop, xts' = elab_typ_notation' env' x t in + let ts' = List.map snd xts' in + if env'.pm then error d.at "misplaced +- or -+ operator in relation"; + let dims = Dim.check Map.empty [] [] ts' [] [] [] in + let ts' = List.map (Dim.annot_typ dims) ts' in + infer_no_quants env' dims Det.empty [] [] ts' [] [] [] d.at; + let not = Mixop.apply mixop (List.map (fun t' -> "_" $ d.at, t') ts') in + let t' = tup_typ' ts' t.at in + env.rels <- bind "relation" env.rels x (ps', t', [], mixop, not); + | _ -> () + let infer_gramdef env (d : def) = match d.it with | GramD (x1, _x2, ps, t, _gram, _hints) -> @@ -2578,7 +2614,7 @@ let rec elab_def env (d : def) : Il.def list = infer_no_quants env' dims Det.empty [] [] ts' [] [] [] d.at; let not = Mixop.apply mixop (List.map (fun t' -> "_" $ d.at, t') ts') in let t' = tup_typ' ts' t.at in - env.rels <- bind "relation" env.rels x (ps', t', [], mixop, not); + env.rels <- rebind "relation" env.rels x (ps', t', [], mixop, not); [Il.RelD (x, ps', mixop, t', []) $ d.at] @ elab_hintdef env (RelH (x, hints) $ d.at) @@ -2620,7 +2656,7 @@ let rec elab_def env (d : def) : Il.def list = let dims = Dim.check Map.empty ps' [] [t'] [] [] [] in let t' = Dim.annot_typ dims t' in infer_no_quants env dims Det.empty ps' [] [t'] [] [] [] d.at; - env.defs <- bind "definition" env.defs x (ps', t', []); + env.defs <- rebind "definition" env.defs x (ps', t', []); [d'] @ elab_hintdef env (DecH (x, hints) $ d.at) | DefD (x, as_, e, prems) -> @@ -2765,6 +2801,8 @@ let elab (ds : script) : Il.script * env = let env = new_env () in let ds = List.map (infer_typdef env) ds in let ds = Map.fold implicit_typdef env.atoms ds in + List.iter (infer_fundef env) ds; + List.iter (infer_reldef env) ds; List.iter (infer_gramdef env) ds; let ds' = List.concat_map (elab_def env) ds in check_dots env; diff --git a/spectec/src/frontend/lexer.mll b/spectec/src/frontend/lexer.mll index d67f673c9..f0a0aaaac 100644 --- a/spectec/src/frontend/lexer.mll +++ b/spectec/src/frontend/lexer.mll @@ -197,7 +197,6 @@ and token = parse | "=>" { ARROW2 } | "->_" { ARROWSUB } | "=>_" { ARROW2SUB } - | "<=>" { DARROW2 } | "~>" { SQARROW } | "~>_" { SQARROWSUB } | "~>*" { SQARROWSTAR } @@ -208,6 +207,8 @@ and token = parse | "-|" { TILESTURN } | "|-_" { TURNSTILESUB } | "-|_" { TILESTURNSUB } + | "==>" { IMPL } + | "<=>" { DIMPL } | "$" { DOLLAR } diff --git a/spectec/src/frontend/parser.mly b/spectec/src/frontend/parser.mly index 2c3b88396..08b45ea78 100644 --- a/spectec/src/frontend/parser.mly +++ b/spectec/src/frontend/parser.mly @@ -169,9 +169,9 @@ and short_alt_prod' = function %token BIGAND BIGOR BIGADD BIGMUL BIGCAT %token COMMA_NL NL_BAR NL_NL NL_NL_NL %token EQ NE LT GT LE GE APPROX EQUIV ASSIGN SUB SUP EQCAT EQSUB EQUIVSUB APPROXSUB -%token NOT AND OR +%token NOT AND OR IMPL DIMPL %token QUEST PLUS MINUS STAR SLASH BACKSLASH UP CAT PLUSMINUS MINUSPLUS -%token ARROW ARROW2 ARROWSUB ARROW2SUB DARROW2 SQARROW SQARROWSUB SQARROWSTAR SQARROWSTARSUB +%token ARROW ARROW2 ARROWSUB ARROW2SUB SQARROW SQARROWSUB SQARROWSTAR SQARROWSTARSUB %token MEM NOTMEM PREC SUCC TURNSTILE TILESTURN TURNSTILESUB TILESTURNSUB %token DOLLAR TICK %token BOT TOP @@ -187,7 +187,7 @@ and short_alt_prod' = function %token UPID LOID DOTID UPID_LPAREN LOID_LPAREN %token EOF -%right ARROW2 DARROW2 ARROW2SUB +%right ARROW2 ARROW2SUB IMPL DIMPL %left OR %left AND %nonassoc TURNSTILE TURNSTILESUB @@ -296,6 +296,12 @@ ruleid_ : | BOOLLIT { Bool.to_string $1 } | INFINITY { "infinity" } | EPS { "eps" } + | BOOL { "bool" } + | NAT { "nat" } + | INT { "int" } + | RAT { "rat" } + | REAL { "real" } + | TEXT { "text" } | IF { "if" } | VAR { "var" } | DEF { "def" } @@ -332,10 +338,11 @@ atom_escape : | TICK NOT { Atom.Not } | TICK AND { Atom.And } | TICK OR { Atom.Or } + | TICK IMPL { Atom.Arrow2 } + | TICK DIMPL { Atom.Equiv } | TICK BAR { Atom.Bar } | TICK CAT { Atom.Cat } | TICK COMMA { Atom.Comma } - | TICK ARROW2 { Atom.Arrow2 } | TICK infixop_ { $2 } | TICK relop_ { $2 } | BOT { Atom.Bot } @@ -387,8 +394,8 @@ check_atom : %inline boolop : | AND { `AndOp } | OR { `OrOp } - | ARROW2 { `ImplOp } - | DARROW2 { `EquivOp } + | IMPL { `ImplOp } + | DIMPL { `EquivOp } %inline infixop : | infixop_ { $1 $$ $sloc } @@ -397,8 +404,8 @@ check_atom : | DOTDOT { Atom.Dot2 } | DOTDOTDOT { Atom.Dot3 } | SEMICOLON { Atom.Semicolon } - | BACKSLASH { Atom.Backslash } | ARROW { Atom.Arrow } + | ARROW2 { Atom.Arrow2 } | ARROWSUB { Atom.ArrowSub } | ARROW2SUB { Atom.Arrow2Sub } | BIGAND { Atom.BigAnd } diff --git a/spectec/src/il/eval.ml b/spectec/src/il/eval.ml index 26d8d917c..b3f24f2c3 100644 --- a/spectec/src/il/eval.ml +++ b/spectec/src/il/eval.ml @@ -1018,42 +1018,48 @@ and equiv_params env ps1 ps2 = and sub_prems _env prems1 prems2 = List.for_all (fun prem2 -> List.exists (Eq.eq_prem prem2) prems1) prems2 -and sub_typ env t1 t2 = +and sub_typ env t1 t2 = sub_typ' env [] t1 t2 + +and sub_typ' env assum t1 t2 = Debug.(log "il.sub_typ" (fun _ -> fmt "%s <: %s" (il_typ t1) (il_typ t2)) Bool.to_string ) @@ fun _ -> equiv_typ env t1 t2 || + List.exists (fun (t1', t2') -> Eq.eq_typ t1 t1' && Eq.eq_typ t2 t2') assum || let t1' = reduce_typ env t1 in let t2' = reduce_typ env t2 in + let assum' = (t1, t2)::assum in match t1'.it, t2'.it with (*| NumT nt1, NumT nt2 -> Num.sub nt1 nt2*) - | TupT ets1, TupT ets2 -> sub_tup env Subst.empty ets1 ets2 + | TupT ets1, TupT ets2 -> sub_tup env assum' Subst.empty ets1 ets2 | VarT _, VarT _ -> (match (reduce_typdef env t1').it, (reduce_typdef env t2').it with | StructT tfs1, StructT tfs2 -> - List.for_all (fun (atom, (t2, _qs2, prems2), _) -> + List.for_all (fun (atom, (t21, _qs2, prems2), _) -> match find_field tfs1 atom with - | Some (t1, _qs1, prems1) -> - sub_typ env t1 t2 && sub_prems env prems1 prems2 + | Some (t11, _qs1, prems1) -> + sub_typ' env assum' t11 t21 && sub_prems env prems1 prems2 | None -> false ) tfs2 | VariantT tcs1, VariantT tcs2 -> - List.for_all (fun (mixop, (t1, _qs1, prems1), _) -> + List.for_all (fun (mixop, (t11, _qs1, prems1), _) -> match find_case tcs2 mixop with - | Some (t2, _qs2, prems2) -> - sub_typ env t1 t2 && sub_prems env prems1 prems2 + | Some (t21, _qs2, prems2) -> + sub_typ' env assum' t11 t21 && sub_prems env prems1 prems2 | None -> false ) tcs1 | _, _ -> false ) + | IterT (t11, it1), IterT (t21, it2) -> + sub_typ' env assum' t11 t21 && Eq.eq_iter it1 it2 | _, _ -> false -and sub_tup env s xts1 xts2 = +and sub_tup env assum s xts1 xts2 = match xts1, xts2 with | (x1, t1)::xts1', (x2, t2)::xts2' -> - sub_typ env t1 (Subst.subst_typ s t2) && - sub_tup env (Subst.add_varid s x2 (VarE x1 $$ x1.at % t1)) xts1' xts2' + sub_typ' env assum t1 (Subst.subst_typ s t2) && + sub_tup env assum (Subst.add_varid s x2 (VarE x1 $$ x1.at % t1)) xts1' xts2' | _, _ -> xts1 = xts2 From f03bae5082a3a595ff1386ec80ef8c43233e8357 Mon Sep 17 00:00:00 2001 From: Mark Rushakoff Date: Fri, 6 Feb 2026 06:13:07 -0500 Subject: [PATCH 032/235] [spec] Fix typo for reserved instructions in appendix (#2074) --- document/core/appendix/index-instructions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/document/core/appendix/index-instructions.py b/document/core/appendix/index-instructions.py index e25af5964..da9dd112d 100755 --- a/document/core/appendix/index-instructions.py +++ b/document/core/appendix/index-instructions.py @@ -378,7 +378,7 @@ def Instruction(version, name, opcode, type=None, validation=None, execution=Non Instruction(2.0, r'\TABLEGROW~x', r'\hex{FC}~\hex{0F}', r'[t~\X{at}] \to [\X{at}]', r'valid-table.grow', r'exec-table.grow'), Instruction(2.0, r'\TABLESIZE~x', r'\hex{FC}~\hex{10}', r'[] \to [\X{at}]', r'valid-table.size', r'exec-table.size'), Instruction(2.0, r'\TABLEFILL~x', r'\hex{FC}~\hex{11}', r'[\X{at}~t~\X{at}] \to []', r'valid-table.fill', r'exec-table.fill'), - Instruction(0.0, None, r'\hex{FC}~\hex{1E} \dots'), + Instruction(0.0, None, r'\hex{FC}~\hex{12} \dots'), Instruction(2.0, r'\V128.\VLOAD~x~\memarg', r'\hex{FD}~~\hex{00}', r'[\X{at}] \to [\V128]', r'valid-vload-val', r'exec-vload-val'), Instruction(2.0, r'\V128.\VLOAD\K{8x8\_s}~x~\memarg', r'\hex{FD}~~\hex{01}', r'[\X{at}] \to [\V128]', r'valid-vload-pack', r'exec-vload-pack'), Instruction(2.0, r'\V128.\VLOAD\K{8x8\_u}~x~\memarg', r'\hex{FD}~~\hex{02}', r'[\X{at}] \to [\V128]', r'valid-vload-pack', r'exec-vload-pack'), From d147495d0bc8b833fbc1aba4b08be6311d021b65 Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Fri, 6 Feb 2026 12:14:09 +0100 Subject: [PATCH 033/235] [js-api] Add missing argument to WebAssembly.Exception.getArg (#2073) Fixes #2052. --- document/js-api/index.bs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/document/js-api/index.bs b/document/js-api/index.bs index e5abc4ba3..3f5803815 100644 --- a/document/js-api/index.bs +++ b/document/js-api/index.bs @@ -1683,7 +1683,7 @@ dictionary ExceptionOptions { [LegacyNamespace=WebAssembly, Exposed=(Window,Worker,Worklet)] interface Exception { constructor(Tag exceptionTag, sequence<any> payload, optional ExceptionOptions options = {}); - any getArg([EnforceRange] unsigned long index); + any getArg(Tag exceptionTag, [EnforceRange] unsigned long index); boolean is(Tag exceptionTag); readonly attribute (DOMString or undefined) stack; }; @@ -1751,9 +1751,11 @@ constructor steps are:

-The getArg(|index|) method steps are: +The getArg(|exceptionTag|, |index|) method steps are: 1. Let |store| be the [=surrounding agent=]'s [=associated store=]. +1. If **this**.\[[Type]] is not equal to |exceptionTag|.\[[Address]], + 1. Throw a {{TypeError}}. 1. Let |tagaddr| be [=exn_tag=](|store|, **this**.\[[Address]]). 1. Let |payload| be [=exn_read=](|store|, **this**.\[[Address]]). 1. Assert: |tagaddr| is equal to **this**.\[[Type]]. From 1b2b34a3da6ecc3b20e8f270ac0ec2c0c58a852e Mon Sep 17 00:00:00 2001 From: sakawi <65452710+zsakowitz@users.noreply.github.com> Date: Fri, 6 Feb 2026 03:28:17 -0800 Subject: [PATCH 034/235] [spec] Remove obsolete note (#2071) --- document/core/text/modules.rst | 4 ---- 1 file changed, 4 deletions(-) diff --git a/document/core/text/modules.rst b/document/core/text/modules.rst index 167b4f451..d246b7ec2 100644 --- a/document/core/text/modules.rst +++ b/document/core/text/modules.rst @@ -266,10 +266,6 @@ The data is written as a :ref:`string `, which may be split up into $${grammar: Tdata_ Tdatastring {Tmemuse_/plain Toffset_/plain}} -.. note:: - In the current version of WebAssembly, the only valid memory index is 0 - or a symbolic :ref:`memory identifier ` resolving to the same value. - Abbreviations ............. From c9c51e45d9cdca7f41e85be3af64cff9c8461024 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Mon, 9 Feb 2026 17:25:14 +0100 Subject: [PATCH 035/235] [spectec] Validate IL atoms; some fixes --- spectec/src/al/al_util.ml | 2 +- spectec/src/frontend/elab.ml | 14 ++++---------- spectec/src/il/valid.ml | 20 ++++++++++++++++++-- spectec/src/xl/mixop.ml | 2 ++ 4 files changed, 25 insertions(+), 13 deletions(-) diff --git a/spectec/src/al/al_util.ml b/spectec/src/al/al_util.ml index 59bb296ed..4f8a2275d 100644 --- a/spectec/src/al/al_util.ml +++ b/spectec/src/al/al_util.ml @@ -298,7 +298,7 @@ let atom_of_atom' atom' typ = atom' $$ no_region % (Atom.info typ) let frame_atom = atom_of_name "FRAME_" "evalctx" let frameE ?(at = no) ~note (arity, e) = - let frame_mixop = Mixop.(Seq [Atom frame_atom; Brack (atom_of_atom' Atom.LBrace "evalctx", Arg (), atom_of_atom' Atom.RBrace "evalctx")]) in + let frame_mixop = Mixop.(Seq [Atom frame_atom; Arg (); Brack (atom_of_atom' Atom.LBrace "evalctx", Arg (), atom_of_atom' Atom.RBrace "evalctx")]) in caseE (frame_mixop, [arity; e]) ~at:at ~note:note (* Il Types *) diff --git a/spectec/src/frontend/elab.ml b/spectec/src/frontend/elab.ml index 867dd2e83..56b22c846 100644 --- a/spectec/src/frontend/elab.ml +++ b/spectec/src/frontend/elab.ml @@ -674,12 +674,6 @@ let elab_hints tid case = List.map (elab_hint tid case) (* Atoms and Operators *) -let new_note note = Atom.{note with def = ""} -let new_atom atom = {atom with note = new_note atom.note} -let new_mixop mixop = Mixop.map_atoms new_atom mixop -let new_typfield (atom, t_prs, hints) = (new_atom atom, t_prs, hints) -let new_typcase (mixop, t_prs, hints) = (new_mixop mixop, t_prs, hints) - let elab_atom atom tid = assert (valid_tid tid); atom.note.Atom.def <- tid.it; @@ -855,7 +849,7 @@ and elab_typ_definition env outer_dims tid (t : typ) : dots * Il.deftyp * dots = let tfs1, dots = checkpoint (as_struct_typ "own type" env Check t1 t1.at) in if dots = NoDots then error t.at "extension of non-extensible syntax type"; - List.map new_typfield tfs1 (* ensure atom annotations are fresh *) + tfs1 in let tfs2 = concat_map_filter_nl_list (fun t -> @@ -863,7 +857,7 @@ and elab_typ_definition env outer_dims tid (t : typ) : dots * Il.deftyp * dots = let tfs, dots = checkpoint (as_struct_typ "parent type" env Infer t' t'.at) in if dots = Dots then error t.at "inclusion of incomplete syntax type"; - List.map new_typfield tfs (* ensure atom annotations are fresh *) + tfs ) ts in let tfs' = tfs1 @ tfs2 @ map_filter_nl_list (elab_typfield env outer_dims tid t.at) tfs in @@ -878,7 +872,7 @@ and elab_typ_definition env outer_dims tid (t : typ) : dots * Il.deftyp * dots = let tcs1, dots = checkpoint (as_variant_typ "own type" env Check t1 t1.at) in if dots = NoDots then error t.at "extension of non-extensible syntax type"; - List.map new_typcase tcs1 (* ensure atom annotations are fresh *) + tcs1 in let tcs2 = concat_map_filter_nl_list (fun t -> @@ -886,7 +880,7 @@ and elab_typ_definition env outer_dims tid (t : typ) : dots * Il.deftyp * dots = let tcs, dots = checkpoint (as_variant_typ "parent type" env Infer t' t'.at) in if dots = Dots then error t.at "inclusion of incomplete syntax type"; - List.map new_typcase tcs (* ensure atom annotations are fresh *) + tcs ) ts in let tcs' = tcs1 @ tcs2 @ map_filter_nl_list (elab_typcase env outer_dims tid t.at) tcs in diff --git a/spectec/src/il/valid.ml b/spectec/src/il/valid.ml index 936464d76..f63afbc41 100644 --- a/spectec/src/il/valid.ml +++ b/spectec/src/il/valid.ml @@ -143,7 +143,15 @@ let infer_cmpop at op ot = | _, _ -> error at ("malformed comparison operator annotation") -(* Atom Bindings *) +(* Atoms and Mixops *) + +let valid_atom _env atom = + if atom.note.Atom.def = "" then + error atom.at ("missing definition name for atom " ^ Atom.to_string atom) + +let valid_mixop env mixop = + Mixop.iter_atoms (valid_atom env) mixop + let check_mixops phrase item list at = let _, dups = @@ -237,7 +245,8 @@ and valid_deftyp env dt = check_mixops "variant" "case" (List.map (fun (op, _, _) -> op) tcs) dt.at; List.iter (valid_typcase env) tcs -and valid_typfield env (_atom, (t, qs, prems), _hints) = +and valid_typfield env (atom, (t, qs, prems), _hints) = + valid_atom env atom; let env' = valid_typ_bind env t in let env'' = valid_quants env' qs in List.iter (valid_prem env'') prems @@ -255,6 +264,7 @@ and valid_typcase env (mixop, (t, qs, prems), _hints) = if Mixop.arity mixop <> arity then error t.at ("inconsistent arity in mixin notation, `" ^ string_of_mixop mixop ^ "` applied to " ^ typ_string env t); + valid_mixop env mixop; let env' = valid_typ_bind env t in let env'' = valid_quants env' qs in List.iter (valid_prem env'') prems @@ -396,6 +406,7 @@ and valid_exp ?(side = `Rhs) env e t = | DotE (e1, atom) -> let t1 = infer_exp env e1 in valid_exp env e1 t1; + valid_atom env atom; let tfs = as_struct_typ "expression" env Check t1 e1.at in let t', _qs, _prems = find_field tfs atom e1.at in equiv_typ env t' t e.at @@ -445,6 +456,7 @@ and valid_exp ?(side = `Rhs) env e t = | UncaseE (e1, op) -> let t1 = infer_exp env e1 in valid_exp ~side env e1 t1; + valid_mixop env op; (match as_variant_typ "expression" env Infer t1 e1.at with | [(op', (t', _, _), _)] when Eq.eq_mixop op op' -> equiv_typ env t' t e.at @@ -473,6 +485,7 @@ and valid_exp ?(side = `Rhs) env e t = | CaseE (op, e1) -> let cases = as_variant_typ "case" env Check t e.at in let t1, _qs, _prems = find_case cases op e1.at in + valid_mixop env op; valid_exp ~side env e1 t1 | CvtE (e1, nt1, nt2) -> valid_exp ~side env e1 (NumT nt1 $ e1.at); @@ -491,6 +504,7 @@ and valid_expmix ?(side = `Rhs) env mixop e (mixop', t) at = "mixin notation `" ^ string_of_mixop mixop ^ "` does not match expected notation `" ^ string_of_mixop mixop' ^ "`" ); + valid_mixop env mixop; valid_exp ~side env e t and valid_expfield ~side env (atom1, e) (atom2, (t, _qs, _prems), _) = @@ -501,6 +515,7 @@ and valid_expfield ~side env (atom1, e) (atom2, (t, _qs, _prems), _) = ) ); if not (Eq.eq_atom atom1 atom2) then error e.at "unexpected record field"; + valid_atom env atom1; valid_exp ~side env e t and valid_path env p t : typ = @@ -520,6 +535,7 @@ and valid_path env p t : typ = t1 | DotP (p1, atom) -> let t1 = valid_path env p1 t in + valid_atom env atom; let tfs = as_struct_typ "path" env Check t1 p1.at in let t, _qs, _prems = find_field tfs atom p1.at in t diff --git a/spectec/src/xl/mixop.ml b/spectec/src/xl/mixop.ml index 221fb279a..701de9a18 100644 --- a/spectec/src/xl/mixop.ml +++ b/spectec/src/xl/mixop.ml @@ -38,6 +38,8 @@ let rec map_atoms f mixop = Infix (map_atoms f mixop1, f at, map_atoms f mixop2) | Seq mixops -> Seq (List.map (map_atoms f) mixops) +let iter_atoms f mixop = + ignore (map_atoms (fun at -> f at; at) mixop) let arity mixop = fold (fun n _ -> n + 1) 0 mixop From e1eedaef35eb87c9cbcdd02c76eee3da77d5ac24 Mon Sep 17 00:00:00 2001 From: DJ Date: Tue, 10 Feb 2026 16:48:04 +0900 Subject: [PATCH 036/235] [spectec] Handle assertion with InfixT --- spectec/src/backend-prose/prose_util.ml | 6 +++--- spectec/src/il2al/translate.ml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/spectec/src/backend-prose/prose_util.ml b/spectec/src/backend-prose/prose_util.ml index 3cd5e7fa7..c12e5f9d8 100644 --- a/spectec/src/backend-prose/prose_util.ml +++ b/spectec/src/backend-prose/prose_util.ml @@ -277,9 +277,9 @@ let rec find_case_atom typ = let open El.Ast in match typ.it with | AtomT atom - | BrackT (atom, _, _) -> Some atom - | SeqT (typ1::_) - | InfixT (typ1, _, _) -> find_case_atom typ1 + | BrackT (atom, _, _) + | InfixT (_, atom, _) -> Some atom + | SeqT (typ1::_) -> find_case_atom typ1 | _ -> None let rec find_case_typ' s a: El.Ast.typ option = diff --git a/spectec/src/il2al/translate.ml b/spectec/src/il2al/translate.ml index f1719b263..e483cdaee 100644 --- a/spectec/src/il2al/translate.ml +++ b/spectec/src/il2al/translate.ml @@ -801,7 +801,7 @@ and handle_special_lhs lhs rhs free_ids = | _ -> IsCaseOfE (expr, tag) $$ rhs.at % boolT in (match tag_opt with - | Some ({ it = Atom.Atom _; _} as tag) -> + | Some tag -> [ ifI ( inject_isCaseOf tag rhs, letI (caseE (op, es') ~at:lhs.at ~note:lhs.note, rhs) ~at:at From 1376ba043e705ae3ee1a7c8e277c78b54be26385 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Tue, 10 Feb 2026 09:27:10 +0100 Subject: [PATCH 037/235] [spec] Tweak some layout --- document/core/Makefile | 1 + document/core/syntax/instructions.rst | 3 +- .../wasm-3.0/1.3-syntax.instructions.spectec | 6 +- .../1.3-syntax.instructions.spectec | 6 +- spectec/doc/example/output/NanoWasm.pdf | Bin 245512 -> 245512 bytes spectec/test-frontend/TEST.md | 216 +++--- spectec/test-latex/TEST.md | 6 +- spectec/test-middlend/TEST.md | 648 +++++++++--------- 8 files changed, 447 insertions(+), 439 deletions(-) diff --git a/document/core/Makefile b/document/core/Makefile index 1f28a7480..699c2b5c2 100644 --- a/document/core/Makefile +++ b/document/core/Makefile @@ -134,6 +134,7 @@ clean: rm -rf $(SPLICEDIR) rm -rf $(BUILDDIR) rm -rf $(STATICDIR) + rm -rf $(SPLICEDIR) rm -f $(GENERATED) .PHONY: html html-nested diff --git a/document/core/syntax/instructions.rst b/document/core/syntax/instructions.rst index 74bbcc634..19840c61c 100644 --- a/document/core/syntax/instructions.rst +++ b/document/core/syntax/instructions.rst @@ -407,7 +407,8 @@ Instructions prefixed with ${:V128} do not involve a specific interpretation, an $${syntax: vvunop vvbinop vvternop vvtestop - vunop_ vbinop_ vternop_ vtestop_ vrelop_ vswizzlop_ vshiftop_ vextunop__ vextbinop__ vextternop__ vcvtop__ + vunop_ vbinop_ vternop_ vtestop_ vrelop_ vswizzlop_ vshiftop_ + vextunop__ vextbinop__ vextternop__ vcvtop__ } Vector instructions can be grouped into several subcategories: diff --git a/specification/wasm-3.0/1.3-syntax.instructions.spectec b/specification/wasm-3.0/1.3-syntax.instructions.spectec index d6622bf91..3ceac92f7 100644 --- a/specification/wasm-3.0/1.3-syntax.instructions.spectec +++ b/specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -102,7 +102,8 @@ syntax vvtestop hint(macro "%" "V%") = ANY_TRUE syntax vunop_(shape) hint(macro "%" "V%") syntax vunop_(Jnn X M) = ABS | NEG | POPCNT -- if $lsizenn(Jnn) = `8 -syntax vunop_(Fnn X M) = ABS | NEG | SQRT | CEIL | FLOOR | TRUNC | NEAREST +syntax vunop_(Fnn X M) = ABS | NEG | SQRT + | CEIL | FLOOR | TRUNC | NEAREST syntax vbinop_(shape) hint(macro "%" "V%") syntax vbinop_(Jnn X M) = @@ -116,7 +117,8 @@ syntax vbinop_(Jnn X M) = | RELAXED_Q15MULR S hint(show RELAXED_Q15MULR#_#%) -- if $lsizenn(Jnn) = `16 | MIN sx hint(show MIN#_#%) -- if $lsizenn(Jnn) <= `32 | MAX sx hint(show MAX#_#%) -- if $lsizenn(Jnn) <= `32 -syntax vbinop_(Fnn X M) = ADD | SUB | MUL | DIV | MIN | MAX | PMIN | PMAX +syntax vbinop_(Fnn X M) = ADD | SUB | MUL | DIV + | MIN | MAX | PMIN | PMAX | RELAXED_MIN | RELAXED_MAX syntax vternop_(shape) hint(macro "%" "V%") diff --git a/specification/wasm-latest/1.3-syntax.instructions.spectec b/specification/wasm-latest/1.3-syntax.instructions.spectec index d6622bf91..3ceac92f7 100644 --- a/specification/wasm-latest/1.3-syntax.instructions.spectec +++ b/specification/wasm-latest/1.3-syntax.instructions.spectec @@ -102,7 +102,8 @@ syntax vvtestop hint(macro "%" "V%") = ANY_TRUE syntax vunop_(shape) hint(macro "%" "V%") syntax vunop_(Jnn X M) = ABS | NEG | POPCNT -- if $lsizenn(Jnn) = `8 -syntax vunop_(Fnn X M) = ABS | NEG | SQRT | CEIL | FLOOR | TRUNC | NEAREST +syntax vunop_(Fnn X M) = ABS | NEG | SQRT + | CEIL | FLOOR | TRUNC | NEAREST syntax vbinop_(shape) hint(macro "%" "V%") syntax vbinop_(Jnn X M) = @@ -116,7 +117,8 @@ syntax vbinop_(Jnn X M) = | RELAXED_Q15MULR S hint(show RELAXED_Q15MULR#_#%) -- if $lsizenn(Jnn) = `16 | MIN sx hint(show MIN#_#%) -- if $lsizenn(Jnn) <= `32 | MAX sx hint(show MAX#_#%) -- if $lsizenn(Jnn) <= `32 -syntax vbinop_(Fnn X M) = ADD | SUB | MUL | DIV | MIN | MAX | PMIN | PMAX +syntax vbinop_(Fnn X M) = ADD | SUB | MUL | DIV + | MIN | MAX | PMIN | PMAX | RELAXED_MIN | RELAXED_MAX syntax vternop_(shape) hint(macro "%" "V%") diff --git a/spectec/doc/example/output/NanoWasm.pdf b/spectec/doc/example/output/NanoWasm.pdf index d3ec2e042801aabc58a936787a5ca865fd53ae94..2ee089aa4d9c3480abbfd1882eb24fcbc43f3d46 100644 GIT binary patch delta 147 zcmeD9$Jgm_ znVMKmm)y!M4d-pQ*~(nV=Imtb;$-0F;_T{X;b>{$Xl~->V(w&M;b>%FX=-3-YG9{e NLrBT?54)Kqm;vL#DG&ev delta 147 zcmeD9$Jg2To*)t&`iQ{Y>0b*5`1uwQ#$&Fe4B%ZMPO?zP6CVz}V2t z)ZD~)y5v@7X*h4Y%~s|@HfKvG17jx>6AKq7S7#$bGbaN_GYe;PHy1|>V^cE&Lkl|v O8$wF9f7s0|!3+R%&?)x- diff --git a/spectec/test-frontend/TEST.md b/spectec/test-frontend/TEST.md index 81fa0c199..ce89b2955 100644 --- a/spectec/test-frontend/TEST.md +++ b/spectec/test-frontend/TEST.md @@ -2214,227 +2214,227 @@ def $free_blocktype(blocktype : blocktype) : free ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:572.1-572.44 +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:574.1-574.44 def $shift_labelidxs(labelidx*) : labelidx* - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:573.1-573.32 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:575.1-575.32 def $shift_labelidxs([]) = [] - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:574.1-574.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:576.1-576.66 def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:575.1-575.91 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:577.1-577.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-latest/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:417.1-417.30 +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:419.1-419.30 def $free_instr(instr : instr) : free - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:428.1-428.26 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:430.1-430.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:429.1-429.34 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:431.1-431.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:430.1-430.27 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:432.1-432.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:431.1-431.86 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:433.1-433.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-latest/1.3-syntax.instructions.spectec:433.1-433.92 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:435.1-435.92 def $free_instr{blocktype : blocktype, `instr*` : instr*}(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:434.1-434.91 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:436.1-436.91 def $free_instr{blocktype : blocktype, `instr*` : instr*}(LOOP_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:435.1-436.79 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:437.1-438.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-latest/1.3-syntax.instructions.spectec:438.1-438.56 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:440.1-440.56 def $free_instr{labelidx : labelidx}(BR_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:439.1-439.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:441.1-441.59 def $free_instr{labelidx : labelidx}(BR_IF_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:440.1-441.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:442.1-443.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-latest/1.3-syntax.instructions.spectec:442.1-442.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:444.1-444.64 def $free_instr{labelidx : labelidx}(BR_ON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:443.1-443.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:445.1-445.68 def $free_instr{labelidx : labelidx}(BR_ON_NON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-latest/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-latest/1.3-syntax.instructions.spectec:446.1-447.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-latest/1.3-syntax.instructions.spectec:448.1-449.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-latest/1.3-syntax.instructions.spectec:449.1-449.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:451.1-451.55 def $free_instr{funcidx : funcidx}(CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:450.1-450.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:452.1-452.59 def $free_instr{typeuse : typeuse}(CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:451.1-452.53 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:453.1-454.53 def $free_instr{tableidx : tableidx, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:453.1-453.29 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:455.1-455.29 def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:454.1-454.62 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:456.1-456.62 def $free_instr{funcidx : funcidx}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:455.1-455.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:457.1-457.66 def $free_instr{typeuse : typeuse}(RETURN_CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:456.1-457.53 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:458.1-459.53 def $free_instr{tableidx : tableidx, typeuse : typeuse}(RETURN_CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:459.1-459.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:461.1-461.63 def $free_instr{numtype : numtype, numlit : num_(numtype)}(CONST_instr(numtype, numlit)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:460.1-460.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:462.1-462.60 def $free_instr{numtype : numtype, unop : unop_(numtype)}(UNOP_instr(numtype, unop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:461.1-461.62 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:463.1-463.62 def $free_instr{numtype : numtype, binop : binop_(numtype)}(BINOP_instr(numtype, binop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:462.1-462.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:464.1-464.64 def $free_instr{numtype : numtype, testop : testop_(numtype)}(TESTOP_instr(numtype, testop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:463.1-463.62 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:465.1-465.62 def $free_instr{numtype : numtype, relop : relop_(numtype)}(RELOP_instr(numtype, relop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:464.1-465.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:466.1-467.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-latest/1.3-syntax.instructions.spectec:467.1-467.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:469.1-469.64 def $free_instr{vectype : vectype, veclit : vec_(vectype)}(VCONST_instr(vectype, veclit)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:468.1-468.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:470.1-470.64 def $free_instr{vectype : vectype, vvunop : vvunop}(VVUNOP_instr(vectype, vvunop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:469.1-469.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:471.1-471.66 def $free_instr{vectype : vectype, vvbinop : vvbinop}(VVBINOP_instr(vectype, vvbinop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:470.1-470.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:472.1-472.68 def $free_instr{vectype : vectype, vvternop : vvternop}(VVTERNOP_instr(vectype, vvternop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:471.1-471.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:473.1-473.68 def $free_instr{vectype : vectype, vvtestop : vvtestop}(VVTESTOP_instr(vectype, vvtestop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:472.1-472.56 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:474.1-474.56 def $free_instr{shape : shape, vunop : vunop_(shape)}(VUNOP_instr(shape, vunop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:473.1-473.58 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:475.1-475.58 def $free_instr{shape : shape, vbinop : vbinop_(shape)}(VBINOP_instr(shape, vbinop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:474.1-474.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:476.1-476.60 def $free_instr{shape : shape, vternop : vternop_(shape)}(VTERNOP_instr(shape, vternop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:475.1-475.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:477.1-477.60 def $free_instr{shape : shape, vtestop : vtestop_(shape)}(VTESTOP_instr(shape, vtestop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:476.1-476.58 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:478.1-478.58 def $free_instr{shape : shape, vrelop : vrelop_(shape)}(VRELOP_instr(shape, vrelop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:477.1-477.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:479.1-479.64 def $free_instr{ishape : ishape, vshiftop : vshiftop_(ishape)}(VSHIFTOP_instr(ishape, vshiftop)) = $free_shape(ishape!`%`_ishape.0) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:478.1-478.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:480.1-480.55 def $free_instr{ishape : ishape}(VBITMASK_instr(ishape)) = $free_shape(ishape!`%`_ishape.0) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:479.1-479.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:481.1-481.66 def $free_instr{bshape : bshape, vswizzlop : vswizzlop_(bshape)}(VSWIZZLOP_instr(bshape, vswizzlop)) = $free_shape(bshape!`%`_bshape.0) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:480.1-480.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:482.1-482.64 def $free_instr{bshape : bshape, `laneidx*` : laneidx*}(VSHUFFLE_instr(bshape, laneidx*{laneidx <- `laneidx*`})) = $free_shape(bshape!`%`_bshape.0) - ;; ../../../../specification/wasm-latest/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-latest/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) + 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-latest/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) + 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-latest/1.3-syntax.instructions.spectec:487.1-488.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-latest/1.3-syntax.instructions.spectec:489.1-490.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-latest/1.3-syntax.instructions.spectec:489.1-490.47 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:491.1-492.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-latest/1.3-syntax.instructions.spectec:491.1-491.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:493.1-493.51 def $free_instr{shape : shape}(VSPLAT_instr(shape)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:492.1-492.70 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:494.1-494.70 def $free_instr{shape : shape, `sx?` : sx?, laneidx : laneidx}(VEXTRACT_LANE_instr(shape, sx?{sx <- `sx?`}, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:493.1-493.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:495.1-495.66 def $free_instr{shape : shape, laneidx : laneidx}(VREPLACE_LANE_instr(shape, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:495.1-495.62 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:497.1-497.62 def $free_instr{heaptype : heaptype}(REF.NULL_instr(heaptype)) = $free_heaptype(heaptype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:496.1-496.34 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:498.1-498.34 def $free_instr(REF.IS_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:497.1-497.38 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:499.1-499.38 def $free_instr(REF.AS_NON_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:498.1-498.29 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:500.1-500.29 def $free_instr(REF.EQ_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:499.1-499.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:501.1-501.59 def $free_instr{reftype : reftype}(REF.TEST_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:500.1-500.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:502.1-502.59 def $free_instr{reftype : reftype}(REF.CAST_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:501.1-501.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:503.1-503.59 def $free_instr{funcidx : funcidx}(REF.FUNC_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:502.1-502.30 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:504.1-504.30 def $free_instr(REF.I31_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:504.1-504.33 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:506.1-506.33 def $free_instr{sx : sx}(I31.GET_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:506.1-506.41 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:508.1-508.41 def $free_instr{typeidx : typeidx}(STRUCT.NEW_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:507.1-507.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:509.1-509.69 def $free_instr{typeidx : typeidx}(STRUCT.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:508.1-508.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:510.1-510.69 def $free_instr{`sx?` : sx?, typeidx : typeidx, u32 : u32}(STRUCT.GET_instr(sx?{sx <- `sx?`}, typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:509.1-509.65 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:511.1-511.65 def $free_instr{typeidx : typeidx, u32 : u32}(STRUCT.SET_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:511.1-511.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:513.1-513.60 def $free_instr{typeidx : typeidx}(ARRAY.NEW_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:512.1-512.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:514.1-514.68 def $free_instr{typeidx : typeidx}(ARRAY.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:513.1-513.70 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:515.1-515.70 def $free_instr{typeidx : typeidx, u32 : u32}(ARRAY.NEW_FIXED_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/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-latest/1.3-syntax.instructions.spectec:516.1-517.51 + def $free_instr{typeidx : typeidx, dataidx : dataidx}(ARRAY.NEW_DATA_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:518.1-519.51 def $free_instr{typeidx : typeidx, elemidx : elemidx}(ARRAY.NEW_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:518.1-518.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:520.1-520.64 def $free_instr{`sx?` : sx?, typeidx : typeidx}(ARRAY.GET_instr(sx?{sx <- `sx?`}, typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:519.1-519.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:521.1-521.60 def $free_instr{typeidx : typeidx}(ARRAY.SET_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:520.1-520.32 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:522.1-522.32 def $free_instr(ARRAY.LEN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:521.1-521.61 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:523.1-523.61 def $free_instr{typeidx : typeidx}(ARRAY.FILL_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:522.1-523.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:524.1-525.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-latest/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-latest/1.3-syntax.instructions.spectec:526.1-527.51 + def $free_instr{typeidx : typeidx, dataidx : dataidx}(ARRAY.INIT_DATA_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:528.1-529.51 def $free_instr{typeidx : typeidx, elemidx : elemidx}(ARRAY.INIT_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:529.1-529.41 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:531.1-531.41 def $free_instr(EXTERN.CONVERT_ANY_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:530.1-530.41 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:532.1-532.41 def $free_instr(ANY.CONVERT_EXTERN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:532.1-532.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:534.1-534.63 def $free_instr{localidx : localidx}(LOCAL.GET_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:533.1-533.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:535.1-535.63 def $free_instr{localidx : localidx}(LOCAL.SET_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:534.1-534.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:536.1-536.63 def $free_instr{localidx : localidx}(LOCAL.TEE_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:536.1-536.67 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:538.1-538.67 def $free_instr{globalidx : globalidx}(GLOBAL.GET_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:537.1-537.67 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:539.1-539.67 def $free_instr{globalidx : globalidx}(GLOBAL.SET_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:539.1-539.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:541.1-541.63 def $free_instr{tableidx : tableidx}(TABLE.GET_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:540.1-540.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:542.1-542.63 def $free_instr{tableidx : tableidx}(TABLE.SET_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:541.1-541.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:543.1-543.64 def $free_instr{tableidx : tableidx}(TABLE.SIZE_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:542.1-542.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:544.1-544.64 def $free_instr{tableidx : tableidx}(TABLE.GROW_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:543.1-543.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:545.1-545.64 def $free_instr{tableidx : tableidx}(TABLE.FILL_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:544.1-545.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:546.1-547.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-latest/1.3-syntax.instructions.spectec:546.1-547.53 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:548.1-549.53 def $free_instr{tableidx : tableidx, elemidx : elemidx}(TABLE.INIT_instr(tableidx, elemidx)) = $free_tableidx(tableidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:548.1-548.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:550.1-550.60 def $free_instr{elemidx : elemidx}(ELEM.DROP_instr(elemidx)) = $free_elemidx(elemidx) - ;; ../../../../specification/wasm-latest/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-latest/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) + 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-latest/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) + 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-latest/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) + 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-latest/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) + 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-latest/1.3-syntax.instructions.spectec:560.1-561.49 + def $free_instr{vectype : vectype, memidx : memidx, memarg : memarg}(VSTORE_instr(vectype, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:562.1-563.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-latest/1.3-syntax.instructions.spectec:562.1-562.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:564.1-564.59 def $free_instr{memidx : memidx}(MEMORY.SIZE_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:563.1-563.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:565.1-565.59 def $free_instr{memidx : memidx}(MEMORY.GROW_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:564.1-564.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:566.1-566.59 def $free_instr{memidx : memidx}(MEMORY.FILL_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:565.1-566.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:567.1-568.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-latest/1.3-syntax.instructions.spectec:567.1-568.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:569.1-570.49 def $free_instr{memidx : memidx, dataidx : dataidx}(MEMORY.INIT_instr(memidx, dataidx)) = $free_memidx(memidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:569.1-569.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:571.1-571.60 def $free_instr{dataidx : dataidx}(DATA.DROP_instr(dataidx)) = $free_dataidx(dataidx) -;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:418.1-418.31 +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:420.1-420.31 def $free_block(instr*) : free - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:577.1-578.47 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:579.1-580.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*`})) } diff --git a/spectec/test-latex/TEST.md b/spectec/test-latex/TEST.md index 6643e8520..b696aef42 100644 --- a/spectec/test-latex/TEST.md +++ b/spectec/test-latex/TEST.md @@ -3785,7 +3785,8 @@ $$ \begin{array}[t]{@{}lrrl@{}l@{}} & {{\mathit{vunop}}}_{{{\mathsf{i}}{N}}{\mathsf{x}}{M}} & ::= & \mathsf{abs} ~~|~~ \mathsf{neg} \\ & & | & \mathsf{popcnt} & \quad \mbox{if}~ N = \mathsf{{\scriptstyle 8}} \\ -& {{\mathit{vunop}}}_{{{\mathsf{f}}{N}}{\mathsf{x}}{M}} & ::= & \mathsf{abs} ~~|~~ \mathsf{neg} ~~|~~ \mathsf{sqrt} ~~|~~ \mathsf{ceil} ~~|~~ \mathsf{floor} ~~|~~ \mathsf{trunc} ~~|~~ \mathsf{nearest} \\ +& {{\mathit{vunop}}}_{{{\mathsf{f}}{N}}{\mathsf{x}}{M}} & ::= & \mathsf{abs} ~~|~~ \mathsf{neg} ~~|~~ \mathsf{sqrt} \\ +& & | & \mathsf{ceil} ~~|~~ \mathsf{floor} ~~|~~ \mathsf{trunc} ~~|~~ \mathsf{nearest} \\ \end{array} $$ @@ -3801,7 +3802,8 @@ $$ & & | & {\mathsf{relaxed\_q{\scriptstyle 15}mulr}}{\mathsf{\_}}{\mathsf{s}} & \quad \mbox{if}~ N = \mathsf{{\scriptstyle 16}} \\ & & | & {\mathsf{min}}{\mathsf{\_}}{{\mathit{sx}}} & \quad \mbox{if}~ N \leq \mathsf{{\scriptstyle 32}} \\ & & | & {\mathsf{max}}{\mathsf{\_}}{{\mathit{sx}}} & \quad \mbox{if}~ N \leq \mathsf{{\scriptstyle 32}} \\ -& {{\mathit{vbinop}}}_{{{\mathsf{f}}{N}}{\mathsf{x}}{M}} & ::= & \mathsf{add} ~~|~~ \mathsf{sub} ~~|~~ \mathsf{mul} ~~|~~ \mathsf{div} ~~|~~ \mathsf{min} ~~|~~ \mathsf{max} ~~|~~ \mathsf{pmin} ~~|~~ \mathsf{pmax} \\ +& {{\mathit{vbinop}}}_{{{\mathsf{f}}{N}}{\mathsf{x}}{M}} & ::= & \mathsf{add} ~~|~~ \mathsf{sub} ~~|~~ \mathsf{mul} ~~|~~ \mathsf{div} \\ +& & | & \mathsf{min} ~~|~~ \mathsf{max} ~~|~~ \mathsf{pmin} ~~|~~ \mathsf{pmax} \\ & & | & \mathsf{relaxed\_min} ~~|~~ \mathsf{relaxed\_max} \\ \end{array} $$ diff --git a/spectec/test-middlend/TEST.md b/spectec/test-middlend/TEST.md index 2e043cc0a..bb03469af 100644 --- a/spectec/test-middlend/TEST.md +++ b/spectec/test-middlend/TEST.md @@ -2204,227 +2204,227 @@ def $free_blocktype(blocktype : blocktype) : free ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:572.1-572.44 +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:574.1-574.44 def $shift_labelidxs(labelidx*) : labelidx* - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:573.1-573.32 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:575.1-575.32 def $shift_labelidxs([]) = [] - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:574.1-574.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:576.1-576.66 def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:575.1-575.91 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:577.1-577.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-latest/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:417.1-417.30 +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:419.1-419.30 def $free_instr(instr : instr) : free - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:428.1-428.26 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:430.1-430.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:429.1-429.34 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:431.1-431.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:430.1-430.27 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:432.1-432.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:431.1-431.86 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:433.1-433.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-latest/1.3-syntax.instructions.spectec:433.1-433.92 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:435.1-435.92 def $free_instr{blocktype : blocktype, `instr*` : instr*}(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:434.1-434.91 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:436.1-436.91 def $free_instr{blocktype : blocktype, `instr*` : instr*}(LOOP_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:435.1-436.79 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:437.1-438.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-latest/1.3-syntax.instructions.spectec:438.1-438.56 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:440.1-440.56 def $free_instr{labelidx : labelidx}(BR_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:439.1-439.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:441.1-441.59 def $free_instr{labelidx : labelidx}(BR_IF_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:440.1-441.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:442.1-443.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-latest/1.3-syntax.instructions.spectec:442.1-442.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:444.1-444.64 def $free_instr{labelidx : labelidx}(BR_ON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:443.1-443.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:445.1-445.68 def $free_instr{labelidx : labelidx}(BR_ON_NON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-latest/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-latest/1.3-syntax.instructions.spectec:446.1-447.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-latest/1.3-syntax.instructions.spectec:448.1-449.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-latest/1.3-syntax.instructions.spectec:449.1-449.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:451.1-451.55 def $free_instr{funcidx : funcidx}(CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:450.1-450.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:452.1-452.59 def $free_instr{typeuse : typeuse}(CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:451.1-452.53 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:453.1-454.53 def $free_instr{tableidx : tableidx, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:453.1-453.29 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:455.1-455.29 def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:454.1-454.62 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:456.1-456.62 def $free_instr{funcidx : funcidx}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:455.1-455.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:457.1-457.66 def $free_instr{typeuse : typeuse}(RETURN_CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:456.1-457.53 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:458.1-459.53 def $free_instr{tableidx : tableidx, typeuse : typeuse}(RETURN_CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:459.1-459.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:461.1-461.63 def $free_instr{numtype : numtype, numlit : num_(numtype)}(CONST_instr(numtype, numlit)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:460.1-460.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:462.1-462.60 def $free_instr{numtype : numtype, unop : unop_(numtype)}(UNOP_instr(numtype, unop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:461.1-461.62 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:463.1-463.62 def $free_instr{numtype : numtype, binop : binop_(numtype)}(BINOP_instr(numtype, binop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:462.1-462.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:464.1-464.64 def $free_instr{numtype : numtype, testop : testop_(numtype)}(TESTOP_instr(numtype, testop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:463.1-463.62 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:465.1-465.62 def $free_instr{numtype : numtype, relop : relop_(numtype)}(RELOP_instr(numtype, relop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:464.1-465.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:466.1-467.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-latest/1.3-syntax.instructions.spectec:467.1-467.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:469.1-469.64 def $free_instr{vectype : vectype, veclit : vec_(vectype)}(VCONST_instr(vectype, veclit)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:468.1-468.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:470.1-470.64 def $free_instr{vectype : vectype, vvunop : vvunop}(VVUNOP_instr(vectype, vvunop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:469.1-469.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:471.1-471.66 def $free_instr{vectype : vectype, vvbinop : vvbinop}(VVBINOP_instr(vectype, vvbinop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:470.1-470.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:472.1-472.68 def $free_instr{vectype : vectype, vvternop : vvternop}(VVTERNOP_instr(vectype, vvternop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:471.1-471.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:473.1-473.68 def $free_instr{vectype : vectype, vvtestop : vvtestop}(VVTESTOP_instr(vectype, vvtestop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:472.1-472.56 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:474.1-474.56 def $free_instr{shape : shape, vunop : vunop_(shape)}(VUNOP_instr(shape, vunop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:473.1-473.58 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:475.1-475.58 def $free_instr{shape : shape, vbinop : vbinop_(shape)}(VBINOP_instr(shape, vbinop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:474.1-474.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:476.1-476.60 def $free_instr{shape : shape, vternop : vternop_(shape)}(VTERNOP_instr(shape, vternop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:475.1-475.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:477.1-477.60 def $free_instr{shape : shape, vtestop : vtestop_(shape)}(VTESTOP_instr(shape, vtestop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:476.1-476.58 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:478.1-478.58 def $free_instr{shape : shape, vrelop : vrelop_(shape)}(VRELOP_instr(shape, vrelop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:477.1-477.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:479.1-479.64 def $free_instr{ishape : ishape, vshiftop : vshiftop_(ishape)}(VSHIFTOP_instr(ishape, vshiftop)) = $free_shape(ishape!`%`_ishape.0) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:478.1-478.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:480.1-480.55 def $free_instr{ishape : ishape}(VBITMASK_instr(ishape)) = $free_shape(ishape!`%`_ishape.0) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:479.1-479.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:481.1-481.66 def $free_instr{bshape : bshape, vswizzlop : vswizzlop_(bshape)}(VSWIZZLOP_instr(bshape, vswizzlop)) = $free_shape(bshape!`%`_bshape.0) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:480.1-480.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:482.1-482.64 def $free_instr{bshape : bshape, `laneidx*` : laneidx*}(VSHUFFLE_instr(bshape, laneidx*{laneidx <- `laneidx*`})) = $free_shape(bshape!`%`_bshape.0) - ;; ../../../../specification/wasm-latest/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-latest/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) + 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-latest/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) + 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-latest/1.3-syntax.instructions.spectec:487.1-488.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-latest/1.3-syntax.instructions.spectec:489.1-490.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-latest/1.3-syntax.instructions.spectec:489.1-490.47 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:491.1-492.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-latest/1.3-syntax.instructions.spectec:491.1-491.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:493.1-493.51 def $free_instr{shape : shape}(VSPLAT_instr(shape)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:492.1-492.70 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:494.1-494.70 def $free_instr{shape : shape, `sx?` : sx?, laneidx : laneidx}(VEXTRACT_LANE_instr(shape, sx?{sx <- `sx?`}, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:493.1-493.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:495.1-495.66 def $free_instr{shape : shape, laneidx : laneidx}(VREPLACE_LANE_instr(shape, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:495.1-495.62 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:497.1-497.62 def $free_instr{heaptype : heaptype}(REF.NULL_instr(heaptype)) = $free_heaptype(heaptype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:496.1-496.34 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:498.1-498.34 def $free_instr(REF.IS_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:497.1-497.38 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:499.1-499.38 def $free_instr(REF.AS_NON_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:498.1-498.29 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:500.1-500.29 def $free_instr(REF.EQ_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:499.1-499.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:501.1-501.59 def $free_instr{reftype : reftype}(REF.TEST_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:500.1-500.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:502.1-502.59 def $free_instr{reftype : reftype}(REF.CAST_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:501.1-501.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:503.1-503.59 def $free_instr{funcidx : funcidx}(REF.FUNC_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:502.1-502.30 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:504.1-504.30 def $free_instr(REF.I31_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:504.1-504.33 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:506.1-506.33 def $free_instr{sx : sx}(I31.GET_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:506.1-506.41 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:508.1-508.41 def $free_instr{typeidx : typeidx}(STRUCT.NEW_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:507.1-507.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:509.1-509.69 def $free_instr{typeidx : typeidx}(STRUCT.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:508.1-508.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:510.1-510.69 def $free_instr{`sx?` : sx?, typeidx : typeidx, u32 : u32}(STRUCT.GET_instr(sx?{sx <- `sx?`}, typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:509.1-509.65 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:511.1-511.65 def $free_instr{typeidx : typeidx, u32 : u32}(STRUCT.SET_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:511.1-511.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:513.1-513.60 def $free_instr{typeidx : typeidx}(ARRAY.NEW_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:512.1-512.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:514.1-514.68 def $free_instr{typeidx : typeidx}(ARRAY.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:513.1-513.70 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:515.1-515.70 def $free_instr{typeidx : typeidx, u32 : u32}(ARRAY.NEW_FIXED_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/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-latest/1.3-syntax.instructions.spectec:516.1-517.51 + def $free_instr{typeidx : typeidx, dataidx : dataidx}(ARRAY.NEW_DATA_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:518.1-519.51 def $free_instr{typeidx : typeidx, elemidx : elemidx}(ARRAY.NEW_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:518.1-518.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:520.1-520.64 def $free_instr{`sx?` : sx?, typeidx : typeidx}(ARRAY.GET_instr(sx?{sx <- `sx?`}, typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:519.1-519.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:521.1-521.60 def $free_instr{typeidx : typeidx}(ARRAY.SET_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:520.1-520.32 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:522.1-522.32 def $free_instr(ARRAY.LEN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:521.1-521.61 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:523.1-523.61 def $free_instr{typeidx : typeidx}(ARRAY.FILL_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:522.1-523.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:524.1-525.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-latest/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-latest/1.3-syntax.instructions.spectec:526.1-527.51 + def $free_instr{typeidx : typeidx, dataidx : dataidx}(ARRAY.INIT_DATA_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:528.1-529.51 def $free_instr{typeidx : typeidx, elemidx : elemidx}(ARRAY.INIT_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:529.1-529.41 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:531.1-531.41 def $free_instr(EXTERN.CONVERT_ANY_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:530.1-530.41 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:532.1-532.41 def $free_instr(ANY.CONVERT_EXTERN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:532.1-532.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:534.1-534.63 def $free_instr{localidx : localidx}(LOCAL.GET_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:533.1-533.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:535.1-535.63 def $free_instr{localidx : localidx}(LOCAL.SET_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:534.1-534.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:536.1-536.63 def $free_instr{localidx : localidx}(LOCAL.TEE_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:536.1-536.67 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:538.1-538.67 def $free_instr{globalidx : globalidx}(GLOBAL.GET_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:537.1-537.67 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:539.1-539.67 def $free_instr{globalidx : globalidx}(GLOBAL.SET_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:539.1-539.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:541.1-541.63 def $free_instr{tableidx : tableidx}(TABLE.GET_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:540.1-540.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:542.1-542.63 def $free_instr{tableidx : tableidx}(TABLE.SET_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:541.1-541.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:543.1-543.64 def $free_instr{tableidx : tableidx}(TABLE.SIZE_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:542.1-542.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:544.1-544.64 def $free_instr{tableidx : tableidx}(TABLE.GROW_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:543.1-543.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:545.1-545.64 def $free_instr{tableidx : tableidx}(TABLE.FILL_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:544.1-545.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:546.1-547.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-latest/1.3-syntax.instructions.spectec:546.1-547.53 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:548.1-549.53 def $free_instr{tableidx : tableidx, elemidx : elemidx}(TABLE.INIT_instr(tableidx, elemidx)) = $free_tableidx(tableidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:548.1-548.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:550.1-550.60 def $free_instr{elemidx : elemidx}(ELEM.DROP_instr(elemidx)) = $free_elemidx(elemidx) - ;; ../../../../specification/wasm-latest/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-latest/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) + 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-latest/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) + 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-latest/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) + 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-latest/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) + 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-latest/1.3-syntax.instructions.spectec:560.1-561.49 + def $free_instr{vectype : vectype, memidx : memidx, memarg : memarg}(VSTORE_instr(vectype, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:562.1-563.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-latest/1.3-syntax.instructions.spectec:562.1-562.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:564.1-564.59 def $free_instr{memidx : memidx}(MEMORY.SIZE_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:563.1-563.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:565.1-565.59 def $free_instr{memidx : memidx}(MEMORY.GROW_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:564.1-564.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:566.1-566.59 def $free_instr{memidx : memidx}(MEMORY.FILL_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:565.1-566.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:567.1-568.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-latest/1.3-syntax.instructions.spectec:567.1-568.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:569.1-570.49 def $free_instr{memidx : memidx, dataidx : dataidx}(MEMORY.INIT_instr(memidx, dataidx)) = $free_memidx(memidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:569.1-569.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:571.1-571.60 def $free_instr{dataidx : dataidx}(DATA.DROP_instr(dataidx)) = $free_dataidx(dataidx) -;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:418.1-418.31 +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:420.1-420.31 def $free_block(instr*) : free - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:577.1-578.47 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:579.1-580.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*`})) } @@ -13567,227 +13567,227 @@ def $free_blocktype(blocktype : blocktype) : free ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:572.1-572.44 +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:574.1-574.44 def $shift_labelidxs(labelidx*) : labelidx* - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:573.1-573.32 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:575.1-575.32 def $shift_labelidxs([]) = [] - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:574.1-574.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:576.1-576.66 def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:575.1-575.91 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:577.1-577.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-latest/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:417.1-417.30 +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:419.1-419.30 def $free_instr(instr : instr) : free - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:428.1-428.26 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:430.1-430.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:429.1-429.34 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:431.1-431.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:430.1-430.27 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:432.1-432.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:431.1-431.86 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:433.1-433.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-latest/1.3-syntax.instructions.spectec:433.1-433.92 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:435.1-435.92 def $free_instr{blocktype : blocktype, `instr*` : instr*}(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:434.1-434.91 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:436.1-436.91 def $free_instr{blocktype : blocktype, `instr*` : instr*}(LOOP_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:435.1-436.79 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:437.1-438.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-latest/1.3-syntax.instructions.spectec:438.1-438.56 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:440.1-440.56 def $free_instr{labelidx : labelidx}(BR_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:439.1-439.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:441.1-441.59 def $free_instr{labelidx : labelidx}(BR_IF_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:440.1-441.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:442.1-443.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-latest/1.3-syntax.instructions.spectec:442.1-442.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:444.1-444.64 def $free_instr{labelidx : labelidx}(BR_ON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:443.1-443.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:445.1-445.68 def $free_instr{labelidx : labelidx}(BR_ON_NON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-latest/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-latest/1.3-syntax.instructions.spectec:446.1-447.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-latest/1.3-syntax.instructions.spectec:448.1-449.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-latest/1.3-syntax.instructions.spectec:449.1-449.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:451.1-451.55 def $free_instr{funcidx : funcidx}(CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:450.1-450.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:452.1-452.59 def $free_instr{typeuse : typeuse}(CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:451.1-452.53 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:453.1-454.53 def $free_instr{tableidx : tableidx, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:453.1-453.29 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:455.1-455.29 def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:454.1-454.62 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:456.1-456.62 def $free_instr{funcidx : funcidx}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:455.1-455.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:457.1-457.66 def $free_instr{typeuse : typeuse}(RETURN_CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:456.1-457.53 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:458.1-459.53 def $free_instr{tableidx : tableidx, typeuse : typeuse}(RETURN_CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:459.1-459.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:461.1-461.63 def $free_instr{numtype : numtype, numlit : num_(numtype)}(CONST_instr(numtype, numlit)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:460.1-460.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:462.1-462.60 def $free_instr{numtype : numtype, unop : unop_(numtype)}(UNOP_instr(numtype, unop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:461.1-461.62 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:463.1-463.62 def $free_instr{numtype : numtype, binop : binop_(numtype)}(BINOP_instr(numtype, binop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:462.1-462.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:464.1-464.64 def $free_instr{numtype : numtype, testop : testop_(numtype)}(TESTOP_instr(numtype, testop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:463.1-463.62 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:465.1-465.62 def $free_instr{numtype : numtype, relop : relop_(numtype)}(RELOP_instr(numtype, relop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:464.1-465.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:466.1-467.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-latest/1.3-syntax.instructions.spectec:467.1-467.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:469.1-469.64 def $free_instr{vectype : vectype, veclit : vec_(vectype)}(VCONST_instr(vectype, veclit)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:468.1-468.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:470.1-470.64 def $free_instr{vectype : vectype, vvunop : vvunop}(VVUNOP_instr(vectype, vvunop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:469.1-469.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:471.1-471.66 def $free_instr{vectype : vectype, vvbinop : vvbinop}(VVBINOP_instr(vectype, vvbinop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:470.1-470.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:472.1-472.68 def $free_instr{vectype : vectype, vvternop : vvternop}(VVTERNOP_instr(vectype, vvternop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:471.1-471.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:473.1-473.68 def $free_instr{vectype : vectype, vvtestop : vvtestop}(VVTESTOP_instr(vectype, vvtestop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:472.1-472.56 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:474.1-474.56 def $free_instr{shape : shape, vunop : vunop_(shape)}(VUNOP_instr(shape, vunop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:473.1-473.58 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:475.1-475.58 def $free_instr{shape : shape, vbinop : vbinop_(shape)}(VBINOP_instr(shape, vbinop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:474.1-474.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:476.1-476.60 def $free_instr{shape : shape, vternop : vternop_(shape)}(VTERNOP_instr(shape, vternop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:475.1-475.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:477.1-477.60 def $free_instr{shape : shape, vtestop : vtestop_(shape)}(VTESTOP_instr(shape, vtestop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:476.1-476.58 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:478.1-478.58 def $free_instr{shape : shape, vrelop : vrelop_(shape)}(VRELOP_instr(shape, vrelop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:477.1-477.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:479.1-479.64 def $free_instr{ishape : ishape, vshiftop : vshiftop_(ishape)}(VSHIFTOP_instr(ishape, vshiftop)) = $free_shape(ishape!`%`_ishape.0) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:478.1-478.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:480.1-480.55 def $free_instr{ishape : ishape}(VBITMASK_instr(ishape)) = $free_shape(ishape!`%`_ishape.0) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:479.1-479.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:481.1-481.66 def $free_instr{bshape : bshape, vswizzlop : vswizzlop_(bshape)}(VSWIZZLOP_instr(bshape, vswizzlop)) = $free_shape(bshape!`%`_bshape.0) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:480.1-480.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:482.1-482.64 def $free_instr{bshape : bshape, `laneidx*` : laneidx*}(VSHUFFLE_instr(bshape, laneidx*{laneidx <- `laneidx*`})) = $free_shape(bshape!`%`_bshape.0) - ;; ../../../../specification/wasm-latest/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-latest/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) + 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-latest/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) + 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-latest/1.3-syntax.instructions.spectec:487.1-488.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-latest/1.3-syntax.instructions.spectec:489.1-490.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-latest/1.3-syntax.instructions.spectec:489.1-490.47 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:491.1-492.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-latest/1.3-syntax.instructions.spectec:491.1-491.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:493.1-493.51 def $free_instr{shape : shape}(VSPLAT_instr(shape)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:492.1-492.70 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:494.1-494.70 def $free_instr{shape : shape, `sx?` : sx?, laneidx : laneidx}(VEXTRACT_LANE_instr(shape, sx?{sx <- `sx?`}, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:493.1-493.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:495.1-495.66 def $free_instr{shape : shape, laneidx : laneidx}(VREPLACE_LANE_instr(shape, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:495.1-495.62 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:497.1-497.62 def $free_instr{heaptype : heaptype}(REF.NULL_instr(heaptype)) = $free_heaptype(heaptype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:496.1-496.34 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:498.1-498.34 def $free_instr(REF.IS_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:497.1-497.38 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:499.1-499.38 def $free_instr(REF.AS_NON_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:498.1-498.29 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:500.1-500.29 def $free_instr(REF.EQ_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:499.1-499.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:501.1-501.59 def $free_instr{reftype : reftype}(REF.TEST_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:500.1-500.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:502.1-502.59 def $free_instr{reftype : reftype}(REF.CAST_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:501.1-501.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:503.1-503.59 def $free_instr{funcidx : funcidx}(REF.FUNC_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:502.1-502.30 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:504.1-504.30 def $free_instr(REF.I31_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:504.1-504.33 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:506.1-506.33 def $free_instr{sx : sx}(I31.GET_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:506.1-506.41 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:508.1-508.41 def $free_instr{typeidx : typeidx}(STRUCT.NEW_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:507.1-507.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:509.1-509.69 def $free_instr{typeidx : typeidx}(STRUCT.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:508.1-508.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:510.1-510.69 def $free_instr{`sx?` : sx?, typeidx : typeidx, u32 : u32}(STRUCT.GET_instr(sx?{sx <- `sx?`}, typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:509.1-509.65 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:511.1-511.65 def $free_instr{typeidx : typeidx, u32 : u32}(STRUCT.SET_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:511.1-511.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:513.1-513.60 def $free_instr{typeidx : typeidx}(ARRAY.NEW_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:512.1-512.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:514.1-514.68 def $free_instr{typeidx : typeidx}(ARRAY.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:513.1-513.70 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:515.1-515.70 def $free_instr{typeidx : typeidx, u32 : u32}(ARRAY.NEW_FIXED_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/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-latest/1.3-syntax.instructions.spectec:516.1-517.51 + def $free_instr{typeidx : typeidx, dataidx : dataidx}(ARRAY.NEW_DATA_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:518.1-519.51 def $free_instr{typeidx : typeidx, elemidx : elemidx}(ARRAY.NEW_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:518.1-518.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:520.1-520.64 def $free_instr{`sx?` : sx?, typeidx : typeidx}(ARRAY.GET_instr(sx?{sx <- `sx?`}, typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:519.1-519.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:521.1-521.60 def $free_instr{typeidx : typeidx}(ARRAY.SET_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:520.1-520.32 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:522.1-522.32 def $free_instr(ARRAY.LEN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:521.1-521.61 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:523.1-523.61 def $free_instr{typeidx : typeidx}(ARRAY.FILL_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:522.1-523.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:524.1-525.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-latest/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-latest/1.3-syntax.instructions.spectec:526.1-527.51 + def $free_instr{typeidx : typeidx, dataidx : dataidx}(ARRAY.INIT_DATA_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:528.1-529.51 def $free_instr{typeidx : typeidx, elemidx : elemidx}(ARRAY.INIT_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:529.1-529.41 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:531.1-531.41 def $free_instr(EXTERN.CONVERT_ANY_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:530.1-530.41 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:532.1-532.41 def $free_instr(ANY.CONVERT_EXTERN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:532.1-532.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:534.1-534.63 def $free_instr{localidx : localidx}(LOCAL.GET_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:533.1-533.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:535.1-535.63 def $free_instr{localidx : localidx}(LOCAL.SET_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:534.1-534.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:536.1-536.63 def $free_instr{localidx : localidx}(LOCAL.TEE_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:536.1-536.67 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:538.1-538.67 def $free_instr{globalidx : globalidx}(GLOBAL.GET_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:537.1-537.67 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:539.1-539.67 def $free_instr{globalidx : globalidx}(GLOBAL.SET_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:539.1-539.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:541.1-541.63 def $free_instr{tableidx : tableidx}(TABLE.GET_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:540.1-540.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:542.1-542.63 def $free_instr{tableidx : tableidx}(TABLE.SET_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:541.1-541.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:543.1-543.64 def $free_instr{tableidx : tableidx}(TABLE.SIZE_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:542.1-542.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:544.1-544.64 def $free_instr{tableidx : tableidx}(TABLE.GROW_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:543.1-543.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:545.1-545.64 def $free_instr{tableidx : tableidx}(TABLE.FILL_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:544.1-545.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:546.1-547.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-latest/1.3-syntax.instructions.spectec:546.1-547.53 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:548.1-549.53 def $free_instr{tableidx : tableidx, elemidx : elemidx}(TABLE.INIT_instr(tableidx, elemidx)) = $free_tableidx(tableidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:548.1-548.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:550.1-550.60 def $free_instr{elemidx : elemidx}(ELEM.DROP_instr(elemidx)) = $free_elemidx(elemidx) - ;; ../../../../specification/wasm-latest/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-latest/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) + 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-latest/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) + 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-latest/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) + 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-latest/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) + 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-latest/1.3-syntax.instructions.spectec:560.1-561.49 + def $free_instr{vectype : vectype, memidx : memidx, memarg : memarg}(VSTORE_instr(vectype, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:562.1-563.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-latest/1.3-syntax.instructions.spectec:562.1-562.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:564.1-564.59 def $free_instr{memidx : memidx}(MEMORY.SIZE_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:563.1-563.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:565.1-565.59 def $free_instr{memidx : memidx}(MEMORY.GROW_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:564.1-564.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:566.1-566.59 def $free_instr{memidx : memidx}(MEMORY.FILL_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:565.1-566.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:567.1-568.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-latest/1.3-syntax.instructions.spectec:567.1-568.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:569.1-570.49 def $free_instr{memidx : memidx, dataidx : dataidx}(MEMORY.INIT_instr(memidx, dataidx)) = $free_memidx(memidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:569.1-569.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:571.1-571.60 def $free_instr{dataidx : dataidx}(DATA.DROP_instr(dataidx)) = $free_dataidx(dataidx) -;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:418.1-418.31 +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:420.1-420.31 def $free_block(instr*) : free - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:577.1-578.47 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:579.1-580.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*`})) } @@ -24932,227 +24932,227 @@ def $free_blocktype(blocktype : blocktype) : free ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:572.1-572.44 +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:574.1-574.44 def $shift_labelidxs(labelidx*) : labelidx* - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:573.1-573.32 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:575.1-575.32 def $shift_labelidxs([]) = [] - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:574.1-574.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:576.1-576.66 def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:575.1-575.91 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:577.1-577.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-latest/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:417.1-417.30 +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:419.1-419.30 def $free_instr(instr : instr) : free - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:428.1-428.26 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:430.1-430.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:429.1-429.34 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:431.1-431.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:430.1-430.27 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:432.1-432.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:431.1-431.86 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:433.1-433.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-latest/1.3-syntax.instructions.spectec:433.1-433.92 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:435.1-435.92 def $free_instr{blocktype : blocktype, `instr*` : instr*}(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:434.1-434.91 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:436.1-436.91 def $free_instr{blocktype : blocktype, `instr*` : instr*}(LOOP_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:435.1-436.79 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:437.1-438.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-latest/1.3-syntax.instructions.spectec:438.1-438.56 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:440.1-440.56 def $free_instr{labelidx : labelidx}(BR_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:439.1-439.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:441.1-441.59 def $free_instr{labelidx : labelidx}(BR_IF_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:440.1-441.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:442.1-443.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-latest/1.3-syntax.instructions.spectec:442.1-442.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:444.1-444.64 def $free_instr{labelidx : labelidx}(BR_ON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:443.1-443.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:445.1-445.68 def $free_instr{labelidx : labelidx}(BR_ON_NON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-latest/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-latest/1.3-syntax.instructions.spectec:446.1-447.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-latest/1.3-syntax.instructions.spectec:448.1-449.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-latest/1.3-syntax.instructions.spectec:449.1-449.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:451.1-451.55 def $free_instr{funcidx : funcidx}(CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:450.1-450.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:452.1-452.59 def $free_instr{typeuse : typeuse}(CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:451.1-452.53 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:453.1-454.53 def $free_instr{tableidx : tableidx, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:453.1-453.29 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:455.1-455.29 def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:454.1-454.62 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:456.1-456.62 def $free_instr{funcidx : funcidx}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:455.1-455.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:457.1-457.66 def $free_instr{typeuse : typeuse}(RETURN_CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:456.1-457.53 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:458.1-459.53 def $free_instr{tableidx : tableidx, typeuse : typeuse}(RETURN_CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:459.1-459.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:461.1-461.63 def $free_instr{numtype : numtype, numlit : num_(numtype)}(CONST_instr(numtype, numlit)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:460.1-460.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:462.1-462.60 def $free_instr{numtype : numtype, unop : unop_(numtype)}(UNOP_instr(numtype, unop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:461.1-461.62 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:463.1-463.62 def $free_instr{numtype : numtype, binop : binop_(numtype)}(BINOP_instr(numtype, binop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:462.1-462.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:464.1-464.64 def $free_instr{numtype : numtype, testop : testop_(numtype)}(TESTOP_instr(numtype, testop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:463.1-463.62 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:465.1-465.62 def $free_instr{numtype : numtype, relop : relop_(numtype)}(RELOP_instr(numtype, relop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:464.1-465.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:466.1-467.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-latest/1.3-syntax.instructions.spectec:467.1-467.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:469.1-469.64 def $free_instr{vectype : vectype, veclit : vec_(vectype)}(VCONST_instr(vectype, veclit)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:468.1-468.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:470.1-470.64 def $free_instr{vectype : vectype, vvunop : vvunop}(VVUNOP_instr(vectype, vvunop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:469.1-469.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:471.1-471.66 def $free_instr{vectype : vectype, vvbinop : vvbinop}(VVBINOP_instr(vectype, vvbinop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:470.1-470.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:472.1-472.68 def $free_instr{vectype : vectype, vvternop : vvternop}(VVTERNOP_instr(vectype, vvternop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:471.1-471.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:473.1-473.68 def $free_instr{vectype : vectype, vvtestop : vvtestop}(VVTESTOP_instr(vectype, vvtestop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:472.1-472.56 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:474.1-474.56 def $free_instr{shape : shape, vunop : vunop_(shape)}(VUNOP_instr(shape, vunop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:473.1-473.58 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:475.1-475.58 def $free_instr{shape : shape, vbinop : vbinop_(shape)}(VBINOP_instr(shape, vbinop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:474.1-474.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:476.1-476.60 def $free_instr{shape : shape, vternop : vternop_(shape)}(VTERNOP_instr(shape, vternop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:475.1-475.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:477.1-477.60 def $free_instr{shape : shape, vtestop : vtestop_(shape)}(VTESTOP_instr(shape, vtestop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:476.1-476.58 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:478.1-478.58 def $free_instr{shape : shape, vrelop : vrelop_(shape)}(VRELOP_instr(shape, vrelop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:477.1-477.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:479.1-479.64 def $free_instr{ishape : ishape, vshiftop : vshiftop_(ishape)}(VSHIFTOP_instr(ishape, vshiftop)) = $free_shape(ishape!`%`_ishape.0) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:478.1-478.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:480.1-480.55 def $free_instr{ishape : ishape}(VBITMASK_instr(ishape)) = $free_shape(ishape!`%`_ishape.0) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:479.1-479.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:481.1-481.66 def $free_instr{bshape : bshape, vswizzlop : vswizzlop_(bshape)}(VSWIZZLOP_instr(bshape, vswizzlop)) = $free_shape(bshape!`%`_bshape.0) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:480.1-480.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:482.1-482.64 def $free_instr{bshape : bshape, `laneidx*` : laneidx*}(VSHUFFLE_instr(bshape, laneidx*{laneidx <- `laneidx*`})) = $free_shape(bshape!`%`_bshape.0) - ;; ../../../../specification/wasm-latest/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-latest/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) + 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-latest/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) + 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-latest/1.3-syntax.instructions.spectec:487.1-488.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-latest/1.3-syntax.instructions.spectec:489.1-490.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-latest/1.3-syntax.instructions.spectec:489.1-490.47 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:491.1-492.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-latest/1.3-syntax.instructions.spectec:491.1-491.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:493.1-493.51 def $free_instr{shape : shape}(VSPLAT_instr(shape)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:492.1-492.70 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:494.1-494.70 def $free_instr{shape : shape, `sx?` : sx?, laneidx : laneidx}(VEXTRACT_LANE_instr(shape, sx?{sx <- `sx?`}, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:493.1-493.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:495.1-495.66 def $free_instr{shape : shape, laneidx : laneidx}(VREPLACE_LANE_instr(shape, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:495.1-495.62 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:497.1-497.62 def $free_instr{heaptype : heaptype}(REF.NULL_instr(heaptype)) = $free_heaptype(heaptype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:496.1-496.34 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:498.1-498.34 def $free_instr(REF.IS_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:497.1-497.38 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:499.1-499.38 def $free_instr(REF.AS_NON_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:498.1-498.29 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:500.1-500.29 def $free_instr(REF.EQ_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:499.1-499.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:501.1-501.59 def $free_instr{reftype : reftype}(REF.TEST_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:500.1-500.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:502.1-502.59 def $free_instr{reftype : reftype}(REF.CAST_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:501.1-501.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:503.1-503.59 def $free_instr{funcidx : funcidx}(REF.FUNC_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:502.1-502.30 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:504.1-504.30 def $free_instr(REF.I31_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:504.1-504.33 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:506.1-506.33 def $free_instr{sx : sx}(I31.GET_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:506.1-506.41 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:508.1-508.41 def $free_instr{typeidx : typeidx}(STRUCT.NEW_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:507.1-507.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:509.1-509.69 def $free_instr{typeidx : typeidx}(STRUCT.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:508.1-508.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:510.1-510.69 def $free_instr{`sx?` : sx?, typeidx : typeidx, u32 : u32}(STRUCT.GET_instr(sx?{sx <- `sx?`}, typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:509.1-509.65 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:511.1-511.65 def $free_instr{typeidx : typeidx, u32 : u32}(STRUCT.SET_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:511.1-511.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:513.1-513.60 def $free_instr{typeidx : typeidx}(ARRAY.NEW_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:512.1-512.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:514.1-514.68 def $free_instr{typeidx : typeidx}(ARRAY.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:513.1-513.70 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:515.1-515.70 def $free_instr{typeidx : typeidx, u32 : u32}(ARRAY.NEW_FIXED_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/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-latest/1.3-syntax.instructions.spectec:516.1-517.51 + def $free_instr{typeidx : typeidx, dataidx : dataidx}(ARRAY.NEW_DATA_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:518.1-519.51 def $free_instr{typeidx : typeidx, elemidx : elemidx}(ARRAY.NEW_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:518.1-518.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:520.1-520.64 def $free_instr{`sx?` : sx?, typeidx : typeidx}(ARRAY.GET_instr(sx?{sx <- `sx?`}, typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:519.1-519.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:521.1-521.60 def $free_instr{typeidx : typeidx}(ARRAY.SET_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:520.1-520.32 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:522.1-522.32 def $free_instr(ARRAY.LEN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:521.1-521.61 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:523.1-523.61 def $free_instr{typeidx : typeidx}(ARRAY.FILL_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:522.1-523.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:524.1-525.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-latest/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-latest/1.3-syntax.instructions.spectec:526.1-527.51 + def $free_instr{typeidx : typeidx, dataidx : dataidx}(ARRAY.INIT_DATA_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:528.1-529.51 def $free_instr{typeidx : typeidx, elemidx : elemidx}(ARRAY.INIT_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:529.1-529.41 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:531.1-531.41 def $free_instr(EXTERN.CONVERT_ANY_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:530.1-530.41 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:532.1-532.41 def $free_instr(ANY.CONVERT_EXTERN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:532.1-532.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:534.1-534.63 def $free_instr{localidx : localidx}(LOCAL.GET_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:533.1-533.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:535.1-535.63 def $free_instr{localidx : localidx}(LOCAL.SET_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:534.1-534.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:536.1-536.63 def $free_instr{localidx : localidx}(LOCAL.TEE_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:536.1-536.67 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:538.1-538.67 def $free_instr{globalidx : globalidx}(GLOBAL.GET_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:537.1-537.67 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:539.1-539.67 def $free_instr{globalidx : globalidx}(GLOBAL.SET_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:539.1-539.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:541.1-541.63 def $free_instr{tableidx : tableidx}(TABLE.GET_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:540.1-540.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:542.1-542.63 def $free_instr{tableidx : tableidx}(TABLE.SET_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:541.1-541.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:543.1-543.64 def $free_instr{tableidx : tableidx}(TABLE.SIZE_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:542.1-542.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:544.1-544.64 def $free_instr{tableidx : tableidx}(TABLE.GROW_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:543.1-543.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:545.1-545.64 def $free_instr{tableidx : tableidx}(TABLE.FILL_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:544.1-545.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:546.1-547.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-latest/1.3-syntax.instructions.spectec:546.1-547.53 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:548.1-549.53 def $free_instr{tableidx : tableidx, elemidx : elemidx}(TABLE.INIT_instr(tableidx, elemidx)) = $free_tableidx(tableidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:548.1-548.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:550.1-550.60 def $free_instr{elemidx : elemidx}(ELEM.DROP_instr(elemidx)) = $free_elemidx(elemidx) - ;; ../../../../specification/wasm-latest/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-latest/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) + 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-latest/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) + 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-latest/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) + 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-latest/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) + 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-latest/1.3-syntax.instructions.spectec:560.1-561.49 + def $free_instr{vectype : vectype, memidx : memidx, memarg : memarg}(VSTORE_instr(vectype, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:562.1-563.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-latest/1.3-syntax.instructions.spectec:562.1-562.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:564.1-564.59 def $free_instr{memidx : memidx}(MEMORY.SIZE_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:563.1-563.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:565.1-565.59 def $free_instr{memidx : memidx}(MEMORY.GROW_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:564.1-564.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:566.1-566.59 def $free_instr{memidx : memidx}(MEMORY.FILL_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:565.1-566.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:567.1-568.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-latest/1.3-syntax.instructions.spectec:567.1-568.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:569.1-570.49 def $free_instr{memidx : memidx, dataidx : dataidx}(MEMORY.INIT_instr(memidx, dataidx)) = $free_memidx(memidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:569.1-569.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:571.1-571.60 def $free_instr{dataidx : dataidx}(DATA.DROP_instr(dataidx)) = $free_dataidx(dataidx) -;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:418.1-418.31 +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:420.1-420.31 def $free_block(instr*) : free - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:577.1-578.47 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:579.1-580.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*`})) } From f38a5207b7ff25423aa594efba22b81e8e3852f6 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Tue, 10 Feb 2026 09:40:52 +0100 Subject: [PATCH 038/235] [spec] Fix state for expression evaluation --- .../wasm-3.0/4.4-execution.modules.spectec | 3 +-- .../wasm-latest/4.4-execution.modules.spectec | 3 +-- spectec/doc/example/output/NanoWasm.pdf | Bin 245512 -> 245512 bytes 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/specification/wasm-3.0/4.4-execution.modules.spectec b/specification/wasm-3.0/4.4-execution.modules.spectec index cd2122336..b9a3e2b9a 100644 --- a/specification/wasm-3.0/4.4-execution.modules.spectec +++ b/specification/wasm-3.0/4.4-execution.modules.spectec @@ -161,8 +161,7 @@ def $evalglobals(state, globaltype*, expr*) : (state, val*) hint(show $evalgloba def $evalglobals(z, eps, eps) = (z, eps) def $evalglobals(z, gt gt'*, expr expr'*) = (z', val val'*) ---- - -- Eval_expr: z; expr ~>* z; val - -- if z = s; f + -- Eval_expr: z; expr ~>* s; f; val -- if (s', a) = $allocglobal(s, gt, val) -- if (z', val'*) = $evalglobals((s'; f[.MODULE.GLOBALS =++ a]), gt'*, expr'*) diff --git a/specification/wasm-latest/4.4-execution.modules.spectec b/specification/wasm-latest/4.4-execution.modules.spectec index cd2122336..b9a3e2b9a 100644 --- a/specification/wasm-latest/4.4-execution.modules.spectec +++ b/specification/wasm-latest/4.4-execution.modules.spectec @@ -161,8 +161,7 @@ def $evalglobals(state, globaltype*, expr*) : (state, val*) hint(show $evalgloba def $evalglobals(z, eps, eps) = (z, eps) def $evalglobals(z, gt gt'*, expr expr'*) = (z', val val'*) ---- - -- Eval_expr: z; expr ~>* z; val - -- if z = s; f + -- Eval_expr: z; expr ~>* s; f; val -- if (s', a) = $allocglobal(s, gt, val) -- if (z', val'*) = $evalglobals((s'; f[.MODULE.GLOBALS =++ a]), gt'*, expr'*) diff --git a/spectec/doc/example/output/NanoWasm.pdf b/spectec/doc/example/output/NanoWasm.pdf index 2ee089aa4d9c3480abbfd1882eb24fcbc43f3d46..d84daa7636afc996022e2f6a052dd137ba06fe85 100644 GIT binary patch delta 110 zcmeD9$JgloK2nGT+Q7~jV+8#O`Qy# hEG#X}T-}Tvoy-l)4J}+uob42B2r1eAVK=h`GXTdA9ftq_ delta 110 zcmeD9$JgloSlqaoDAGtoL${494##z h%}v}~%$*D@9E}VtO$`i94eS(b2r1eAVK=h`GXT~d9iadK From eac9517aac8d6e240aa697d4762a90579eb2857d Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Tue, 10 Feb 2026 10:08:12 +0100 Subject: [PATCH 039/235] Revert "[spec] Fix state for expression evaluation" This reverts commit f38a5207b7ff25423aa594efba22b81e8e3852f6. --- .../wasm-3.0/4.4-execution.modules.spectec | 3 ++- .../wasm-latest/4.4-execution.modules.spectec | 3 ++- spectec/doc/example/output/NanoWasm.pdf | Bin 245512 -> 245512 bytes 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/specification/wasm-3.0/4.4-execution.modules.spectec b/specification/wasm-3.0/4.4-execution.modules.spectec index b9a3e2b9a..cd2122336 100644 --- a/specification/wasm-3.0/4.4-execution.modules.spectec +++ b/specification/wasm-3.0/4.4-execution.modules.spectec @@ -161,7 +161,8 @@ def $evalglobals(state, globaltype*, expr*) : (state, val*) hint(show $evalgloba def $evalglobals(z, eps, eps) = (z, eps) def $evalglobals(z, gt gt'*, expr expr'*) = (z', val val'*) ---- - -- Eval_expr: z; expr ~>* s; f; val + -- Eval_expr: z; expr ~>* z; val + -- if z = s; f -- if (s', a) = $allocglobal(s, gt, val) -- if (z', val'*) = $evalglobals((s'; f[.MODULE.GLOBALS =++ a]), gt'*, expr'*) diff --git a/specification/wasm-latest/4.4-execution.modules.spectec b/specification/wasm-latest/4.4-execution.modules.spectec index b9a3e2b9a..cd2122336 100644 --- a/specification/wasm-latest/4.4-execution.modules.spectec +++ b/specification/wasm-latest/4.4-execution.modules.spectec @@ -161,7 +161,8 @@ def $evalglobals(state, globaltype*, expr*) : (state, val*) hint(show $evalgloba def $evalglobals(z, eps, eps) = (z, eps) def $evalglobals(z, gt gt'*, expr expr'*) = (z', val val'*) ---- - -- Eval_expr: z; expr ~>* s; f; val + -- Eval_expr: z; expr ~>* z; val + -- if z = s; f -- if (s', a) = $allocglobal(s, gt, val) -- if (z', val'*) = $evalglobals((s'; f[.MODULE.GLOBALS =++ a]), gt'*, expr'*) diff --git a/spectec/doc/example/output/NanoWasm.pdf b/spectec/doc/example/output/NanoWasm.pdf index d84daa7636afc996022e2f6a052dd137ba06fe85..2ee089aa4d9c3480abbfd1882eb24fcbc43f3d46 100644 GIT binary patch delta 110 zcmeD9$JgloSlqaoDAGtoL${494##z h%}v}~%$*D@9E}VtO$`i94eS(b2r1eAVK=h`GXT~d9iadK delta 110 zcmeD9$JgloK2nGT+Q7~jV+8#O`Qy# hEG#X}T-}Tvoy-l)4J}+uob42B2r1eAVK=h`GXTdA9ftq_ From 726f4f740f52873bc8bfe08667c24616ddd63630 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Tue, 10 Feb 2026 12:25:12 +0100 Subject: [PATCH 040/235] Initial semantics sketch --- spectec/doc/semantics/il/0-aux.spectec | 15 + spectec/doc/semantics/il/1-syntax.spectec | 202 ++++++ spectec/doc/semantics/il/2-env.spectec | 43 ++ spectec/doc/semantics/il/3-primitives.spectec | 116 +++ spectec/doc/semantics/il/4-subst.spectec | 178 +++++ spectec/doc/semantics/il/5-reduction.spectec | 491 +++++++++++++ spectec/doc/semantics/il/6-typing.spectec | 661 ++++++++++++++++++ 7 files changed, 1706 insertions(+) create mode 100644 spectec/doc/semantics/il/0-aux.spectec create mode 100644 spectec/doc/semantics/il/1-syntax.spectec create mode 100644 spectec/doc/semantics/il/2-env.spectec create mode 100644 spectec/doc/semantics/il/3-primitives.spectec create mode 100644 spectec/doc/semantics/il/4-subst.spectec create mode 100644 spectec/doc/semantics/il/5-reduction.spectec create mode 100644 spectec/doc/semantics/il/6-typing.spectec diff --git a/spectec/doc/semantics/il/0-aux.spectec b/spectec/doc/semantics/il/0-aux.spectec new file mode 100644 index 000000000..7f322499c --- /dev/null +++ b/spectec/doc/semantics/il/0-aux.spectec @@ -0,0 +1,15 @@ +;; Sets + +def $disjoint_(syntax X, X*) : bool hint(show %2 $disjoint) +def $disjoint_(syntax X, eps) = true +def $disjoint_(syntax X, x x'*) = ~(x <- x'*) /\ $disjoint_(X, x'*) + + +def $equiv_(syntax X, X*, X*) : bool +def $equiv_(syntax X, x_1*, x_2*) = true -- (if x_1 <- x_2*)* -- (if x_2 <- x_1*)* +def $equiv_(syntax X, x_1*, x_2*) = false -- otherwise + + +def $transpose_(syntax X, X**) : X** +def $transpose_(syntax X, eps^n) = eps +def $transpose_(syntax X, (x_1 x*)*) = x_1* $transpose_(X, x**) diff --git a/spectec/doc/semantics/il/1-syntax.spectec b/spectec/doc/semantics/il/1-syntax.spectec new file mode 100644 index 000000000..14eb7fa55 --- /dev/null +++ b/spectec/doc/semantics/il/1-syntax.spectec @@ -0,0 +1,202 @@ +;; Identifiers + +syntax id = text +syntax atom = text +syntax mixop = atom** + + +;; Types + +syntax booltyp = + | BOOL ;; `bool` + +syntax numtyp = + | NAT ;; `nat` + | INT ;; `int` + | RAT ;; `rat` + | REAL ;; `real` + +syntax texttyp = + | TEXT ;; `text` + +syntax optyp = + | booltyp + | numtyp + | texttyp + +syntax plaintyp = + | optyp + | TUP typbind* ;; (id : typ , ... , id : typ) + | ITER typ iter ;; typ iter + +syntax typ = + | plaintyp + | VAR id arg* ;; typid(arg*) + +syntax deftyp = + | ALIAS typ + | STRUCT typfield* + | VARIANT typcase* + +syntax typbind = id `: typ +syntax typfield = atom `: typ `- `{quant*} prem* +syntax typcase = mixop `: typ `- `{quant*} prem* + + +;; Iterators + +syntax iter = + | QUEST ;; `?` + | STAR ;; `*` + | PLUS ;; `+` + | SUP id? exp ;; `^` (id `<`)? exp + + +;; Expressions + +syntax num = + | NAT nat + | INT int + | RAT rat + | REAL real + +syntax boolunop = + | NOT ;; `~` + +syntax boolbinop = + | AND ;; `/\` + | OR ;; `\/` + | IMPL ;; `==>` + | EQUIV ;; `<=>` + +syntax numunop = + | PLUS ;; `+` + | MINUS ;; `-` + +syntax numbinop = + | ADD ;; `+` + | SUB ;; `-` + | MUL ;; `*` + | DIV ;; `/` + | MOD ;; `\` + | POW ;; `^` + +syntax numcmpop = + | LT ;; `<` + | GT ;; `>` + | LE ;; `<=` + | GE ;; `>=` + +syntax polycmpop = + | EQ ;; `=` + | NE ;; `=/=` + +syntax unop = boolunop | numunop +syntax binop = boolbinop | numbinop +syntax cmpop = polycmpop | numcmpop + + +syntax val = + | num ;; num + | BOOL bool ;; bool + | TEXT text ;; text + | TUP val* ;; ( val* ) + | INJ mixop val ;; mixop val + | OPT val? ;; val? + | LIST val* ;; [ val* ] + | STR valfield* ;; { valfield* } + +syntax valfield = atom `= val ;; atom `=` val + + +syntax exp = + | num ;; num + | VAR id ;; varid + | BOOL bool ;; bool + | TEXT text ;; text + | UN unop exp ;; unop exp + | BIN binop exp exp ;; exp binop exp + | CMP cmpop exp exp ;; exp cmpop exp + | TUP exp* ;; ( exp* ) + | INJ mixop exp ;; mixop exp + | OPT exp? ;; exp? + | LIST exp* ;; [ exp* ] + | LIFT exp ;; exp : _? <: _* + | STR expfield* ;; { expfield* } + | SEL exp nat ;; exp.i + | LEN exp ;; | exp | + | MEM exp exp ;; exp `<-` exp + | CAT exp exp ;; exp `++` exp + | COMP exp exp ;; exp `@` exp + | ACC exp path ;; exp[ path ] + | UPD exp path exp ;; exp[ path = exp ] + | EXT exp path exp ;; exp[ path =.. exp ] + | CALL id arg* ;; defid( arg* ) + | ITER exp iter exppull* ;; exp iter{ expiter* } + | CVT exp numtyp numtyp ;; exp : typ1 <:> typ2 + | SUB exp typ typ ;; exp : typ1 <: typ2 + +syntax expfield = atom `= exp ;; atom `=` exp +syntax exppull = id `<- exp ;; id `<-` exp + +syntax path = + | ROOT ;; + | THE path ;; path! + | IDX path exp ;; path[ exp ] + | SLICE path exp exp ;; path[ exp : exp ] + | DOT path atom ;; path.atom + | PROJ path mixop ;; path!mixop + + +;; Grammars + +syntax sym = + | VAR id arg* ;; gramid( arg* ) + | NUM nat ;; num + | TEXT text ;; text + | SEQ sym* ;; sym* + | ALT sym* ;; sym `|` sym + | RANGE sym sym ;; sym `|` `...` `|` sym + | ITER sym iter exppull* ;; sym iter{ expiter* } + | ATTR exp sym ;; exp `:` sym + + +;; Definitions + +syntax arg = + | EXP exp + | TYP typ + | FUN id + | GRAM sym + +syntax param = + | EXP id `: typ + | TYP id + | FUN id `: param* `-> typ + | GRAM id `: param* `-> typ + +syntax quant = param + +syntax prem = + | RULE id arg* `: exp + | IF exp + | ELSE + | LET exp `= exp ;; TODO: variables/quantifiers? + | ITER prem iter exppull* + +syntax dec = + | TYP id param* `= inst* + | REL id param* `: typ `= rul* + | FUN id param* `: typ `= clause* + | GRAM id param* `: typ `= prod* + | REC dec* + +syntax inst = INST `{quant*} arg* `= deftyp +syntax rul = RULE `{quant*} exp `- prem* +syntax clause = CLAUSE `{quant*} arg* `= exp `- prem* +syntax prod = PROD `{quant*} sym `=> exp `- prem* + + +;; Scripts + +syntax script = dec* diff --git a/spectec/doc/semantics/il/2-env.spectec b/spectec/doc/semantics/il/2-env.spectec new file mode 100644 index 000000000..f86132732 --- /dev/null +++ b/spectec/doc/semantics/il/2-env.spectec @@ -0,0 +1,43 @@ +;; Environment + +syntax typdef = param* `-> OK `= inst* +syntax fundef = param* `-> typ `= clause* +syntax reldef = param* `-> typ `= rul* +syntax gramdef = param* `-> typ `= prod* + +syntax E = + { EXP (id, typ)*, + TYP (id, typdef)*, + FUN (id, fundef)*, + REL (id, reldef)*, + GRAM (id, gramdef)* + } + + +def $composeenvs(E*) : E hint(show (++)%) +def $composeenvs(eps) = {} +def $composeenvs(E_1 E*) = E_1 ++ $composeenvs(E*) + +def $tupenv(typ) : E +def $tupenv(TUP (x `: t)*) = {EXP (x, t)*} +def $tupenv(t) = {} -- otherwise + +def $paramenv(param*) : E +def $paramenv(EXP x `: t) = {EXP (x, t)} +def $paramenv(TYP x) = {TYP (x, eps `-> OK `= eps)} +def $paramenv(FUN x `: p* `-> t) = {FUN (x, p* `-> t `= eps)} +def $paramenv(GRAM x `: p* `-> t) = {GRAM (x, p* `-> t `= eps)} +def $paramenv(param*) = $composeenvs($paramenv(param)*) -- otherwise + + +;; Store + +syntax S = + { TYP (id, typdef)*, + FUN (id, fundef)*, + REL (id, reldef)*, + GRAM (id, gramdef)* + } + +def $storeenv(S) : E +def $storeenv(S) = {TYP S.TYP, FUN S.FUN, REL S.REL, GRAM S.GRAM} diff --git a/spectec/doc/semantics/il/3-primitives.spectec b/spectec/doc/semantics/il/3-primitives.spectec new file mode 100644 index 000000000..49ce49c6a --- /dev/null +++ b/spectec/doc/semantics/il/3-primitives.spectec @@ -0,0 +1,116 @@ +;; Booleans + +def $boolun(boolunop, bool) : bool + +def $boolun(NOT, b) = ~b + + +def $boolbin(boolbinop, bool, bool) : bool + +def $boolbin(AND, b_1, b_2) = b_1 /\ b_2 +def $boolbin(OR, b_1, b_2) = b_1 \/ b_2 +def $boolbin(IMPL, b_1, b_2) = b_1 ==> b_2 +def $boolbin(EQUIV, b_1, b_2) = b_1 <=> b_2 + + +;; Numerics + +def $iszero(num) : bool +def $isone(num) : bool + +def $iszero(NAT n) = (n = 0) +def $iszero(INT i) = (i = 0) +def $iszero(RAT q) = (q = 0) +def $iszero(REAL r) = (r = 0) + +def $isone(NAT n) = (n = 1) +def $isone(INT i) = (i = 1) +def $isone(RAT q) = (q = 1) +def $isone(REAL r) = (r = 1) + + +def $numcvt(numtyp, num) : num hint(partial) + +def $numcvt(NAT, NAT n) = NAT n +def $numcvt(NAT, INT i) = NAT $nat$(i) -- if i >= 0 +def $numcvt(NAT, RAT q) = $numcvt(NAT, $numcvt(INT, RAT q)) +def $numcvt(NAT, REAL r) = $numcvt(NAT, $numcvt(RAT, REAL r)) + +def $numcvt(INT, NAT n) = INT n +def $numcvt(INT, INT i) = INT i +def $numcvt(INT, RAT q) = INT $int$(q) -- if q = $int$(q) +def $numcvt(INT, REAL r) = $numcvt(INT, $numcvt(RAT, REAL r)) + +def $numcvt(RAT, NAT n) = RAT n +def $numcvt(RAT, INT i) = RAT i +def $numcvt(RAT, RAT q) = RAT q +def $numcvt(RAT, REAL r) = RAT $rat$(r) -- if r = $rat$(r) + +def $numcvt(REAL, NAT n) = REAL n +def $numcvt(REAL, INT i) = REAL i +def $numcvt(REAL, RAT q) = REAL q +def $numcvt(REAL, REAL r) = REAL r + + +def $numun(numunop, num) : num hint(partial) + +def $numun(PLUS, num) = num + +def $numun(MINUS, NAT n) = INT $(-n) +def $numun(MINUS, INT i) = INT $(-i) +def $numun(MINUS, RAT q) = RAT $(-q) +def $numun(MINUS, REAL r) = REAL $(-r) + + +def $numbin(numbinop, num, num) : num hint(partial) + +def $numbin(ADD, NAT n_1, NAT n_2) = NAT $(n_1 + n_2) +def $numbin(ADD, INT i_1, INT i_2) = INT $(i_1 + i_2) +def $numbin(ADD, RAT q_1, RAT q_2) = RAT $(q_1 + q_2) +def $numbin(ADD, REAL r_1, REAL r_2) = REAL $(r_1 + r_2) + +def $numbin(SUB, NAT n_1, NAT n_2) = NAT $nat$(n_1 - n_2) -- if n_1 >= n_2 +def $numbin(SUB, INT i_1, INT i_2) = INT $(i_1 - i_2) +def $numbin(SUB, RAT q_1, RAT q_2) = RAT $(q_1 - q_2) +def $numbin(SUB, REAL r_1, REAL r_2) = REAL $(r_1 - r_2) + +def $numbin(MUL, NAT n_1, NAT n_2) = NAT $(n_1 * n_2) +def $numbin(MUL, INT i_1, INT i_2) = INT $(i_1 * i_2) +def $numbin(MUL, RAT q_1, RAT q_2) = RAT $(q_1 * q_2) +def $numbin(MUL, REAL r_1, REAL r_2) = REAL $(r_1 * r_2) + +def $numbin(DIV, NAT n_1, NAT n_2) = NAT $nat$(n_1 / n_2) -- if n_2 =/= 0 /\ $(n_1 \ n_2) = 0 +def $numbin(DIV, INT i_1, INT i_2) = INT $nat$(i_1 / i_2) -- if i_2 =/= 0 /\ $(i_1 \ i_2) = 0 +def $numbin(DIV, RAT q_1, RAT q_2) = RAT $(q_1 / q_2) -- if q_2 =/= 0 +def $numbin(DIV, REAL r_1, REAL r_2) = REAL $(r_1 / r_2) -- if r_2 =/= 0 + +def $numbin(MOD, NAT n_1, NAT n_2) = NAT $(n_1 / n_2) -- if n_2 =/= 0 +def $numbin(MOD, INT i_1, INT i_2) = INT $(i_1 / i_2) -- if i_2 =/= 0 + +def $numbin(POW, NAT n_1, NAT n_2) = NAT $(n_1^n_2) +def $numbin(POW, INT i_1, INT i_2) = INT $(i_1^i_2) -- if i_2 >= 0 +def $numbin(POW, RAT q_1, RAT q_2) = RAT $(q_1^q_2) -- if q_2 = $int$(q_2) +def $numbin(POW, REAL r_1, REAL r_2) = REAL $(r_1^r_2) + + +def $numcmp(numcmpop, num, num) : bool hint(partial) + +def $numcmp(LT, NAT n_1, NAT n_2) = $(n_1 < n_2) +def $numcmp(LT, INT i_1, INT i_2) = $(i_1 < i_2) +def $numcmp(LT, RAT q_1, RAT q_2) = $(q_1 < q_2) +def $numcmp(LT, REAL r_1, REAL r_2) = $(r_1 < r_2) + +def $numcmp(GT, NAT n_1, NAT n_2) = $(n_1 > n_2) +def $numcmp(GT, INT i_1, INT i_2) = $(i_1 > i_2) +def $numcmp(GT, RAT q_1, RAT q_2) = $(q_1 > q_2) +def $numcmp(GT, REAL r_1, REAL r_2) = $(r_1 > r_2) + +def $numcmp(LE, NAT n_1, NAT n_2) = $(n_1 <= n_2) +def $numcmp(LE, INT i_1, INT i_2) = $(i_1 <= i_2) +def $numcmp(LE, RAT q_1, RAT q_2) = $(q_1 <= q_2) +def $numcmp(LE, REAL r_1, REAL r_2) = $(r_1 <= r_2) + +def $numcmp(GE, NAT n_1, NAT n_2) = $(n_1 >= n_2) +def $numcmp(GE, INT i_1, INT i_2) = $(i_1 >= i_2) +def $numcmp(GE, RAT q_1, RAT q_2) = $(q_1 >= q_2) +def $numcmp(GE, REAL r_1, REAL r_2) = $(r_1 >= r_2) diff --git a/spectec/doc/semantics/il/4-subst.spectec b/spectec/doc/semantics/il/4-subst.spectec new file mode 100644 index 000000000..30f7441ad --- /dev/null +++ b/spectec/doc/semantics/il/4-subst.spectec @@ -0,0 +1,178 @@ +;; TODO: avoid capture + +;; Substitution + +syntax subst = + { EXP (id, exp)*, + TYP (id, typ)*, + FUN (id, id)*, + GRAM (id, sym)* + } + + +;; Domain + +syntax dom = + { EXP id*, + TYP id*, + FUN id*, + GRAM id* + } + +def $dom_subst(subst) : dom + +def $dom_subst(s) = {EXP x_E*, TYP x_T*, FUN x_F*, GRAM x_G*} + -- if s = {EXP (x_E, e)*, TYP (x_T, t)*, FUN (x_F, x'_F)*, GRAM (x_G, x'_G)*} + + +;; Bound parameters + +def $bound_params(param*) : dom +def $bound_param(param) : dom + +def $bound_params(eps) = {} +def $bound_params(p_1 p*) = $bound_param(p_1) ++ $bound_params(p*) + +def $bound_param(EXP x `: t) = {EXP x} +def $bound_param(TYP x) = {TYP x} +def $bound_param(FUN x `: p* `-> t) = {FUN x} +def $bound_param(GRAM x `: p* `-> t) = {GRAM x} + + +;; Identifiers + +def $subst_fun(subst, id) : id +def $subst_fun(s, x) = y -- if (x,y) <- s.FUN +def $subst_fun(s, x) = x -- otherwise + + +;; Types + +def $subst_typ(subst, typ) : typ +def $subst_typ(s, VAR x a*) = t -- if (x,t) <- s.TYP /\ a* = eps +def $subst_typ(s, VAR x a*) = VAR x $subst_arg(s, a)* -- otherwise +def $subst_typ(s, optyp) = optyp +def $subst_typ(s, TUP (x `: t)*) = TUP (x `: $subst_typ(s, t))* ;; TODO: avoid capture +def $subst_typ(s, ITER t it) = ITER $subst_typ(s, t) $subst_iter(s, it) + +def $subst_deftyp(subst, deftyp) : deftyp +def $subst_deftyp(s, ALIAS t) = ALIAS $subst_typ(s, t) +def $subst_deftyp(s, STRUCT (a `: t `- `{q*} pr*)*) = STRUCT (a `: $subst_typ(s, t) `- `{$subst_quant(s, b)*} $subst_prem(s, pr)*)* ;; TODO: avoid capture +def $subst_deftyp(s, VARIANT (m `: t `- `{q*} pr*)*) = VARIANT (m `: $subst_typ(s, t) `- `{$subst_quant(s, b)*} $subst_prem(s, pr)*)* ;; TODO: avoid capture + + +;; Iterators + +def $subst_iter(subst, iter) : iter +def $subst_iter(s, QUEST) = QUEST +def $subst_iter(s, STAR) = STAR +def $subst_iter(s, PLUS) = PLUS +def $subst_iter(s, SUP x? e) = SUP x? $subst_exp(s, e) ;; TODO: avoid capture + + +;; Expressions + +def $subst_exp(subst, exp) : exp +def $subst_exp(s, VAR x) = e -- if (x,e) <- s.EXP +def $subst_exp(s, VAR x) = VAR x -- otherwise +def $subst_exp(s, num) = num +def $subst_exp(s, BOOL b) = BOOL b +def $subst_exp(s, TEXT t) = TEXT t +def $subst_exp(s, UN op e) = UN op $subst_exp(s, e) +def $subst_exp(s, BIN op e_1 e_2) = BIN op $subst_exp(s, e_1) $subst_exp(s, e_2) +def $subst_exp(s, CMP op e_1 e_2) = CMP op $subst_exp(s, e_1) $subst_exp(s, e_2) +def $subst_exp(s, TUP e*) = TUP $subst_exp(s, e)* +def $subst_exp(s, INJ m e) = INJ m $subst_exp(s, e) +def $subst_exp(s, OPT e?) = OPT $subst_exp(s, e)? +def $subst_exp(s, LIST e*) = LIST $subst_exp(s, e)* +def $subst_exp(s, LIFT e) = LIFT $subst_exp(s, e) +def $subst_exp(s, STR (a `= e)*) = STR (a `= $subst_exp(s, e))* +def $subst_exp(s, SEL e n) = SEL $subst_exp(s, e) n +def $subst_exp(s, LEN e) = LEN $subst_exp(s, e) +def $subst_exp(s, MEM e_1 e_2) = MEM $subst_exp(s, e_1) $subst_exp(s, e_2) +def $subst_exp(s, CAT e_1 e_2) = CAT $subst_exp(s, e_1) $subst_exp(s, e_2) +def $subst_exp(s, COMP e_1 e_2) = COMP $subst_exp(s, e_1) $subst_exp(s, e_2) +def $subst_exp(s, ACC e_1 p) = ACC $subst_exp(s, e_1) $subst_path(s, p) +def $subst_exp(s, UPD e_1 p e_2) = UPD $subst_exp(s, e_1) $subst_path(s, p) $subst_exp(s, e_2) +def $subst_exp(s, EXT e_1 p e_2) = EXT $subst_exp(s, e_1) $subst_path(s, p) $subst_exp(s, e_2) +def $subst_exp(s, CALL x a*) = CALL $subst_fun(s, x) $subst_arg(s, a)* +def $subst_exp(s, ITER e it (x `<- e')*) = ITER $subst_exp(s, e) $subst_iter(s, it) (x `<- $subst_exp(s, e'))* ;; TODO: avoid capture +def $subst_exp(s, CVT e nt_1 nt_2) = CVT $subst_exp(s, e) nt_1 nt_2 +def $subst_exp(s, SUB e t_1 t_2) = SUB $subst_exp(s, e) $subst_typ(s, t_1) $subst_typ(s, t_2) + +def $subst_path(subst, path) : path +def $subst_path(s, ROOT) = ROOT +def $subst_path(s, THE p) = THE $subst_path(s, p) +def $subst_path(s, IDX p e) = IDX $subst_path(s, p) $subst_exp(s, e) +def $subst_path(s, SLICE p e_1 e_2) = SLICE $subst_path(s, p) $subst_exp(s, e_1) $subst_exp(s, e_2) +def $subst_path(s, DOT p a) = DOT $subst_path(s, p) a +def $subst_path(s, PROJ p m) = PROJ $subst_path(s, p) m + + +;; Grammars + +def $subst_sym(subst, sym) : sym +def $subst_sym(s, VAR x) = g -- if (x,g) <- s.GRAM +def $subst_sym(s, VAR x a*) = VAR y $subst_arg(s, a)* -- if (x, VAR y) <- s.GRAM +def $subst_sym(s, VAR x a*) = VAR x $subst_arg(s, a)* -- otherwise +def $subst_sym(s, NUM n) = NUM n +def $subst_sym(s, TEXT t) = TEXT t +def $subst_sym(s, SEQ g*) = SEQ $subst_sym(s, g)* +def $subst_sym(s, ALT g*) = ALT $subst_sym(s, g)* +def $subst_sym(s, RANGE g_1 g_2) = RANGE $subst_sym(s, g_1) $subst_sym(s, g_2) +def $subst_sym(s, ATTR e g) = ATTR $subst_exp(s, e) $subst_sym(s, g) +def $subst_sym(s, ITER g it (x `<- e)*) = ITER $subst_sym(s, g) $subst_iter(s, it) (x `<- $subst_exp(s, e))* ;; TODO: avoid capture + + +;; Definitions + +def $subst_arg(subst, arg) : arg +def $subst_arg(s, EXP e) = EXP $subst_exp(s, e) +def $subst_arg(s, TYP t) = TYP $subst_typ(s, t) +def $subst_arg(s, FUN x) = FUN $subst_fun(s, x) +def $subst_arg(s, GRAM g) = GRAM $subst_sym(s, g) + +def $subst_param(subst, param) : param +def $subst_param(s, EXP x `: t) = EXP x `: $subst_typ(s, t) +def $subst_param(s, TYP x) = TYP x +def $subst_param(s, FUN x `: p* `-> t) = FUN x `: $subst_param(s, p)* `-> $subst_typ(s, t) ;; TODO: avoid capture +def $subst_param(s, GRAM x `: p* `-> t) = GRAM x `: $subst_param(s, p)* `-> $subst_typ(s, t) ;; TODO: avoid capture + +def $subst_quant(subst, quant) : quant +def $subst_quant(s, q) = $subst_param(s, q) + +def $subst_prem(subst, prem) : prem +def $subst_prem(s, RULE x a* `: e) = RULE x $subst_arg(s, a)* `: $subst_exp(s, e) +def $subst_prem(s, IF e) = IF $subst_exp(s, e) +def $subst_prem(s, ELSE) = ELSE +def $subst_prem(s, LET e_1 `= e_2) = LET $subst_exp(s, e_1) `= $subst_exp(s, e_2) ;; TODO: avoid capture +def $subst_prem(s, ITER pr it (x `<- e)*) = ITER $subst_prem(s, pr) $subst_iter(s, it) (x `<- $subst_exp(s, e))* ;; TODO: avoid capture + + +;; Constructing substitutions for parameters + +def $arg_for_param(arg, param) : subst +def $arg_for_param(EXP e, EXP x `: t) = {EXP (x, e)} +def $arg_for_param(TYP t, TYP x) = {TYP (x, t)} +def $arg_for_param(FUN y, FUN x `: p* `-> t) = {FUN (x, y)} +def $arg_for_param(GRAM g, GRAM x `: p* `-> t) = {GRAM (x, g)} + +def $args_for_params(arg*, param*) : subst +def $args_for_params(eps, eps) = {} +def $args_for_params(a_1 a*, p_1 p*) = s ++ $args_for_params(a*, $subst_param(s, p)*) + -- if s = $arg_for_param(a_1, p_1) + + +;; Well-formedness + +def $paramarg(param) : arg +def $paramarg(EXP x `: t) = EXP (VAR x) +def $paramarg(TYP x) = TYP (VAR x) +def $paramarg(FUN x `: p* `-> t) = FUN x +def $paramarg(GRAM x `: p* `-> t) = GRAM (VAR x) + +relation Ok_subst: E |- subst : quant* + +rule Ok_subst: + E |- s : q* + -- (Ok_arg: E |- $subst_arg(s, $paramarg(q)) : $subst_param(s, q) => s')* diff --git a/spectec/doc/semantics/il/5-reduction.spectec b/spectec/doc/semantics/il/5-reduction.spectec new file mode 100644 index 000000000..5853399aa --- /dev/null +++ b/spectec/doc/semantics/il/5-reduction.spectec @@ -0,0 +1,491 @@ +;; Types + +relation Expand_typ: S |- typ => deftyp +relation Reduce_typ: S |- typ ~>* typ +relation Step_typ: S |- typ ~> typ +relation Eq_typ: S |- typ == typ + + +rule Expand_typ/plain: + S |- t => ALIAS t + -- if t = plaintyp + +rule Expand_typ/alias: + S |- VAR x a* => dt + -- Expand_typ: S |- VAR x a* => ALIAS t + -- Expand_typ: S |- t => dt + +rule Expand_typ/step: + S |- VAR x a* => $subst_deftyp(s, dt) + -- if (x, p* `-> OK `= inst*) <- E.TYP + -- if (INST `{q*} a* `= dt) <- inst* + -- Match_args: S |- a* `/ `{q*} a'* => s + + +rule Eq_typ: + S |- t_1 == t_2 + -- Reduce_typ: S |- t_1 ~>* t'_1 + -- Reduce_typ: S |- t_2 ~>* t'_2 + -- if t'_1 = t'_2 + + +rule Reduce_typ/normal: + S |- t ~>* t + +rule Reduce_typ/step: + S |- t ~>* t'' + -- Step_typ: S |- t ~> t' + -- Reduce_typ: S |- t' ~>* t'' + + +rule Step_typ/VAR-ctx: + S |- VAR x a* ~> VAR x a*[[n] = a'_n] + -- Step_arg: S |- a*[n] ~> a'_n + +rule Step_typ/VAR-apply: + S |- VAR x a* ~> t + -- Expand_typ: S |- VAR x a* => ALIAS t + + +rule Step_typ/TUP-ctx: + S |- TUP (x `: t)* ~> TUP (x `: t)*[[n] = (x*[n] `: t'_n)] + -- Step_typ: S |- t*[n] ~> t'_n + + +rule Step_typ/ITER-ctx: + S |- ITER t it ~> ITER t' it + -- Step_typ: S |- t ~> t' + + +;; Expressions + +relation Reduce_exp: S |- exp ~>* exp +relation Step_exp: S |- exp ~> exp +relation Step_path: S |- path ~> path +relation Step_iter: S |- iter ~> iter +relation Step_exppull: S |- exppull ~> exppull +relation Eq_exp: S |- exp == exp + + +rule Eq_exp: + S |- e_1 == e_2 + -- Reduce_exp: S |- e_1 ~>* e'_1 + -- Reduce_exp: S |- e_2 ~>* e'_2 + -- if e'_1 = e'_2 + + +rule Reduce_exp/normal: + S |- e ~>* e + +rule Reduce_exp/step: + S |- e ~>* e'' + -- Step_exp: S |- e ~> e' + -- Reduce_exp: S |- e' ~>* e'' + + +rule Step_exp/UN-ctx: + S |- UN op e ~> UN op e' + -- Step_exp: S |- e ~> e' + +rule Step_exp/UN-BOOL: + S |- UN boolunop (BOOL b) ~> BOOL $boolun(boolunop, b) + +rule Step_exp/UN-NUM: + S |- UN numunop num ~> $numun(numunop, num) + + +rule Step_exp/BIN-ctx1: + S |- BIN op e_1 e_2 ~> BIN op e_1' e_2 + -- Step_exp: S |- e_1 ~> e_1' + +rule Step_exp/BIN-ctx2: + S |- BIN op e_1 e_2 ~> BIN op e_1' e_2 + -- Step_exp: S |- e_2 ~> e_2' + +rule Step_exp/BIN-BOOL: + S |- BIN boolbinop (BOOL b_1) (BOOL b_2) ~> BOOL $boolbin(boolbinop, b_1, b_2) + +rule Step_exp/BIN-NUM: + S |- BIN numbinop num_1 num_2 ~> $numbin(numbinop, num_1, num_2) + + +rule Step_exp/CMP-ctx1: + S |- CMP op e_1 e_2 ~> CMP op e_1' e_2 + -- Step_exp: S |- e_1 ~> e_1' + +rule Step_exp/CMP-ctx2: + S |- CMP op e_1 e_2 ~> CMP op e_1' e_2 + -- Step_exp: S |- e_2 ~> e_2' + +rule Step_exp/CMP-EQ-true: + S |- CMP EQ e_1 e_2 ~> BOOL true + -- if e_1 = e_2 + +rule Step_exp/CMP-NE-false: + S |- CMP NE e_1 e_2 ~> BOOL false + -- if e_1 = e_2 + +rule Step_exp/CMP-NUM: + S |- CMP numcmpop num_1 num_2 ~> BOOL $numcmp(numcmpop, num_1, num_2) + + +rule Step_exp/OPT-ctx: + S |- OPT e ~> OPT e' + -- Step_exp: S |- e ~> e' + +rule Step_exp/LIST-ctx: + S |- LIST e* ~> LIST e*[[n] = e'_n] + -- Step_exp: S |- e*[n] ~> e'_n + +rule Step_exp/TUP-ctx: + S |- TUP e* ~> TUP e*[[n] = e'_n] + -- Step_exp: S |- e*[n] ~> e'_n + +rule Step_exp/STR-ctx: + S |- STR (a `= e)* ~> STR (a `= e)*[[n] = (a*[n] `= e'_n)] + -- Step_exp: S |- e*[n] ~> e'_n + +rule Step_exp/INJ-ctx: + S |- INJ mixop e ~> INJ mixop e' + -- Step_exp: S |- e ~> e' + + +rule Step_exp/LIFT-ctx: + S |- LIFT e ~> LIFT e' + -- Step_exp: S |- e ~> e' + +rule Step_exp/LIFT-none: + S |- LIFT (OPT eps) ~> LIST eps + +rule Step_exp/LIFT-some: + S |- LIFT (OPT (e)) ~> LIST e + + +rule Step_exp/SEL-ctx: + S |- SEL e n ~> SEL e' n + -- Step_exp: S |- e ~> e' + +rule Step_exp/SEL-tup: + S |- SEL (TUP e*) n ~> e_n + -- if e_n = e*[n] + + +rule Step_exp/LEN-ctx: + S |- LEN e ~> LEN e' + -- Step_exp: S |- e ~> e' + +rule Step_exp/LEN-list: + S |- LEN (LIST e^n) ~> NAT n + + +rule Step_exp/MEM-ctx1: + S |- MEM e_1 e_2 ~> MEM e'_1 e_2 + -- Step_exp: S |- e_1 ~> e'_1 + +rule Step_exp/MEM-ctx2: + S |- MEM e_1 e_2 ~> MEM e_1 e'_2 + -- Step_exp: S |- e_2 ~> e'_2 + +rule Step_exp/MEM-OPT-true: + S |- MEM e_1 (OPT (e_2)) ~> BOOL true + -- if e_1 = e_2 + +rule Step_exp/MEM-OPT-false: + S |- MEM val_1 (OPT val_2?) ~> BOOL false + -- (if val_1 =/= val_2)? + +rule Step_exp/MEM-LIST-true: + S |- MEM e_1 (LIST e_2*) ~> BOOL true + -- if e_1 = e_2*[n] + +rule Step_exp/MEM-LIST-false: + S |- MEM val_1 (LIST val_2*) ~> BOOL false + -- (if val_1 =/= val_2)* + + +rule Step_exp/CAT-ctx1: + S |- CAT e_1 e_2 ~> CAT e'_1 e_2 + -- Step_exp: S |- e_1 ~> e'_1 + +rule Step_exp/CAT-ctx2: + S |- CAT e_1 e_2 ~> CAT e_1 e'_2 + -- Step_exp: S |- e_2 ~> e'_2 + +rule Step_exp/CAT-opt1: + S |- CAT (OPT e_1) (OPT eps) ~> OPT e_1 + +rule Step_exp/CAT-opt2: + S |- CAT (OPT eps) (OPT e_2) ~> OPT e_2 + +rule Step_exp/CAT-list: + S |- CAT (LIST e_1*) (LIST e_2*) ~> LIST e_1* e_2* + +rule Step_exp/CAT-str: + S |- CAT (STR (a `= e_1)*) (STR (a `= e_2)*) ~> STR (a `= CAT e_1 e_2)* + + +rule Step_exp/ACC-ctxt1: + S |- ACC e p ~> ACC e' p + -- Step_exp: S |- e ~> e' + +rule Step_exp/ACC-ctxt2: + S |- ACC e p ~> ACC e p' + -- Step_path: S |- p ~> p' + +rule Step_exp/ACC-ROOT: + S |- ACC e ROOT ~> e + +rule Step_exp/ACC-THE: + S |- ACC e (THE p) ~> e' + -- Step_exp: S |- ACC e p ~> OPT e' + +rule Step_exp/ACC-IDX: + S |- ACC e (IDX p (NAT n)) ~> e'_n + -- Step_exp: S |- ACC e p ~> LIST e'* + -- if n < |e'*| + -- if e'_n = e'*[n] + +rule Step_exp/ACC-SLICE: + S |- ACC e (SLICE p (NAT n) (NAT m)) ~> LIST e''* + -- Step_exp: S |- ACC e p ~> LIST e'* + -- if n <= $(n + m) < |e'*| + -- if e''* = e'*[n : m] + +rule Step_exp/ACC-DOT: + S |- ACC e (DOT p a) ~> e'_n + -- Step_exp: S |- ACC e p ~> STR (a' `= e')* + -- if a'*[n] = a + -- if e'*[n] = e'_n + +rule Step_exp/ACC-PROJ: + S |- ACC e (PROJ p mixop) ~> e' + -- Step_exp: S |- ACC e p ~> INJ mixop e' + + +rule Step_exp/UPD-ctxt1: + S |- UPD e_1 p e_2 ~> UPD e_1' p e_2 + -- Step_exp: S |- e_1 ~> e_1' + +rule Step_exp/UPD-ctxt2: + S |- UPD e_1 p e_2 ~> UPD e_1 p' e_2 + -- Step_path: S |- p ~> p' + +rule Step_exp/UPD-ctxt3: + S |- UPD e_1 p e_2 ~> UPD e_1 p e_2' + -- Step_exp: S |- e_2 ~> e_2' + +rule Step_exp/UPD-ROOT: + S |- UPD e_1 ROOT e_2 ~> e_2 + +rule Step_exp/UPD-THE: + S |- UPD e_1 (THE p) e_2 ~> UPD e_1 p (OPT e_2) + -- Step_exp: S |- ACC e_1 p ~> OPT e' + +rule Step_exp/UPD-IDX: + S |- UPD e_1 (IDX p (NAT n)) e_2 ~> UPD e_1 p (LIST e'*[[n] = e_2]) + -- Step_exp: S |- ACC e_1 p ~> LIST e'* + -- if n < |e'*| + +rule Step_exp/UPD-SLICE: + S |- UPD e_1 (SLICE p (NAT n) (NAT m)) (LIST e_2*) ~> UPD e_1 p (LIST e'*[[n : m] = e_2*]) + -- Step_exp: S |- ACC e_1 p ~> LIST e'* + -- if n <= $(n + m) < |e'*| + +rule Step_exp/UPD-DOT: + S |- UPD e_1 (DOT p a) e_2 ~> UPD e_1 p (STR (a' `= e')*[[n] = (a `= e_2)]) + -- Step_exp: S |- ACC e_1 p ~> STR (a' `= e')* + -- if a'*[n] = a + +rule Step_exp/UPD-PROJ: + S |- UPD e_1 (PROJ p mixop) e_2 ~> UPD e_1 p (INJ mixop e_2) + -- Step_exp: S |- ACC e_1 p ~> INJ mixop e' + + +rule Step_exp/EXT: + S |- EXT e_1 p e_2 ~> UPD e_1 p (CAT (ACC e_1 p) e_2) + + +rule Step_exp/ITER-ctx1: + S |- ITER e it ep* ~> ITER e' it ep* + -- Step_exp: S |- e ~> e' + +rule Step_exp/ITER-ctx2: + S |- ITER e it ep* ~> ITER e it' ep* + -- Step_iter: S |- it ~> it' + +rule Step_exp/ITER-ctx3: + S |- ITER e it ep* ~> ITER e it ep*[[n] = ep'_n] + -- Step_exppull: S |- ep*[n] ~> ep'_n + +rule Step_exp/ITER-QUEST: + S |- ITER e QUEST (x `<- OPT e'?)* ~> OPT $subst_exp({EXP (x, e'')*}, e)? + -- if e''*? = $transpose_(exp, e'?*) + +rule Step_exp/ITER-PLUS: + S |- ITER e PLUS (x `<- LIST e'*)* ~> ITER e STAR (x `<- LIST e'*)* + -- if |e'**[0]| >= 1 + +rule Step_exp/ITER-STAR: + S |- ITER e STAR (x `<- LIST e'*)* ~> ITER e (SUP (NAT n)) (x `<- LIST e'*)* + -- if |e'**[0]| = n + +rule Step_exp/ITER-SUP-eps: + S |- ITER e (SUP eps e_n) (x `<- LIST e'*)* ~> ITER e (SUP y n) (x `<- LIST e'*)* + ;; TODO: y fresh + +rule Step_exp/ITER-SUP: + S |- ITER e (SUP x_i (NAT n)) (x `<- LIST e'^n)* ~> LIST $subst_exp({EXP (x, e'')* (x_i, NAT i)}, e)^(i CALL x a*[[n] = a'_n] + -- Step_arg: S |- a*[n] ~> a'_n + +rule Step_exp/CALL-apply: + S |- CALL x a* ~> $subst_exp(s, e) + -- if (x, p* `-> t `= clause*) <- E.FUN + -- if (CLAUSE `{q*} a'* `= e `- pr*) <- clause* + -- Match_args: S |- a* `/ `{q*} a'* => s + -- Reduce_prems: S |- $subst_prem(s, pr)* ~>* eps + ;; TODO: need to try in order for ELSE to behave correctly + + +rule Step_exp/CVT-ctx: + S |- CVT e nt_1 nt_2 ~> CVT e' nt_1 nt_2 + -- Step_exp: S |- e ~> e' + +rule Step_exp/CVT-NUM: + S |- CVT num nt_1 nt_2 ~> $numcvt(nt_2, num) + + +rule Step_exp/SUB-ctx: + S |- SUB e t_1 t_2 ~> SUB e' t_1 t_2 + -- Step_exp: S |- e ~> e' + +rule Step_exp/SUB-SUB: + S |- SUB (SUB e' t'_1 t'_2) t_1 t_2 ~> SUB e' t'_1 t_2 + +rule Step_exp/SUB-TUP: + S |- SUB (TUP e*) t_1 t_2 ~> TUP (SUB e t'_1 t'_2)* + -- Reduce_typ: S |- t_1 ~>* TUP (x_1 `: t'_1)* + -- Reduce_typ: S |- t_2 ~>* TUP (x_2 `: t'_2)* + ;; TODO: substitute x's + + +;; Arguments + +relation Reduce_arg: S |- arg ~>* arg +relation Step_arg: S |- arg ~> arg +relation Eq_arg: S |- arg == arg +relation Match_args: S |- arg* `/ `{quant*} arg* => subst + + +rule Match_args: + S |- a* `/ `{q*} a' => s + -- Ok_subst: $storeenv(S) |- s : q* + -- if a* = $subst_arg(s, a')* + + +rule Eq_arg: + S |- a_1 == a_2 + -- Reduce_arg: S |- a_1 ~>* a'_1 + -- Reduce_arg: S |- a_2 ~>* a'_2 + -- if a'_1 = a'_2 + + +rule Reduce_arg/normal: + S |- a ~>* a + +rule Reduce_arg/step: + S |- a ~>* a'' + -- Step_arg: S |- a ~> a' + -- Reduce_arg: S |- a' ~>* a'' + + +rule Step_arg/EXP-ctx: + S |- EXP e ~> EXP e' + -- Step_exp: S |- e ~> e' + +rule Step_arg/TYP-ctx: + S |- TYP t ~> TYP t' + -- Step_typ: S |- t ~> t' + + +;; Premises + +relation Reduce_prems: S |- prem* ~>* prem* +relation Step_prems: S |- prem* ~> prem* +relation Eq_prems: S |- prem* == prem* + + +rule Eq_prems: + S |- pr_1* == pr_2* + -- Reduce_prems: S |- pr_1* ~>* pr'_1* + -- Reduce_prems: S |- pr_2* ~>* pr'_2* + -- if pr'_1* = pr'_2* + + +rule Reduce_prems/normal: + S |- pr* ~>* pr* + +rule Reduce_prems/step: + S |- pr* ~>* pr''* + -- Step_prems: S |- pr* ~> pr'* + -- Reduce_prems: S |- pr'* ~>* pr''* + + +rule Step_prems/ctx: + S |- pr_1 pr* ~> pr_1'* pr* + -- Step_prems: S |- pr_1 ~> pr_1'* + + +rule Step_prems/IF-ctx: + S |- IF e ~> IF e' + -- Step_exp: S |- e ~> e' + +rule Step_prems/IF-true: + S |- IF (BOOL true) ~> eps + +rule Step_prems/ELSE: + S |- ELSE ~> eps + +rule Step_prems/LET-ctx: + S |- LET e_1 `= e_2 ~> LET e_1 `= e'_2 + -- Step_exp: S |- e_2 ~> e'_2 + +rule Step_prems/LET: + S |- LET e_1 `= e_2 ~> eps + -- Eq_exp: S |- e_1 == e_2 + +rule Step_prems/ITER-ctx1: + S |- ITER pr it ep* ~> ITER pr' it ep* + -- Step_prems: S |- pr ~> pr' + +rule Step_prems/ITER-ctx2: + S |- ITER pr it ep* ~> ITER pr it' ep* + -- Step_iter: S |- it ~> it' + +rule Step_prems/ITER-ctx3: + S |- ITER pr it ep* ~> ITER pr it ep*[[n] = ep'_n] + -- Step_exppull: S |- ep*[n] ~> ep'_n + +rule Step_prems/ITER-QUEST: + S |- ITER pr QUEST (x `<- OPT e?)* ~> $subst_prem({EXP (x, e')*}, pr)? + -- if e'*? = $transpose_(exp, e?*) + +rule Step_prems/ITER-PLUS: + S |- ITER pr PLUS (x `<- LIST e*)* ~> ITER pr STAR (x `<- LIST e*)* + -- if |e**[0]| >= 1 + +rule Step_prems/ITER-STAR: + S |- ITER pr STAR (x `<- LIST e*)* ~> ITER pr (SUP (NAT n)) (x `<- LIST e*)* + -- if |e**[0]| = n + +rule Step_prems/ITER-SUP-eps: + S |- ITER pr (SUP eps e_n) (x `<- LIST e*)* ~> ITER pr (SUP y n) (x `<- LIST e*)* + ;; TODO: y fresh + +rule Step_prems/ITER-SUP: + S |- ITER pr (SUP x_i (NAT n)) (x `<- LIST e^n)* ~> $subst_prem({EXP (x, e')* (x_i, NAT i)}, pr)^(i ALIAS (ITER t' it) + +rule Composable_typ/STRUCT: + E |- t COMPOSABLE + -- Expand_typ: E |- t => STRUCT (atom `: t' `- `{q*} pr*)* + -- (Composable_typ: E |- t' COMPOSABLE)* + + +;; Subtyping + +relation Sub_numtyp: |- numtyp <: numtyp + +rule Sub_numtyp/nat: + |- NAT <: INT + +rule Sub_numtyp/int: + |- INT <: RAT + +rule Sub_numtyp/rat: + |- RAT <: REAL + +rule Sub_numtyp/refl: + |- nt <: nt + +rule Sub_numtyp/trans: + |- nt_1 <: nt_2 + -- Sub_numtyp: |- nt_1 <: nt' + -- Sub_numtyp: |- nt' <: nt_2 + + +relation Sub_typ: E |- typ <: typ ;; TODO: ought to be coinductive + +rule Sub_typ/tup: + E |- TUP (x_1 `: t_1) tb_1* <: TUP (x_2 `: t_2) tb_2* + -- Sub_typ: E |- t_1 <: t_2 + -- Sub_typ: E ++ {EXP (x_1, t_1)} |- TUP tb_1* <: $subst_typ({EXP (x_2, VAR x_1)}, TUP tb2*) + +rule Sub_typ/struct: + E |- t_1 <: t_2 + -- Expand_typ: E |- t_1 => STRUCT tf_1* + -- Expand_typ: E |- t_2 => STRUCT tf_2* + -- (if (a `: t_2a `- `{q*} pr*) = tf_2)* + -- (if (a `: t_1a `- `{q*} pr*) <- tf_1*)* + -- (Sub_typ: E |- t_1a <: t_2a)* + +rule Sub_typ/variant: + E |- t_1 <: t_2 + -- Expand_typ: E |- t_1 => VARIANT tc_1* + -- Expand_typ: E |- t_2 => VARIANT tc_2* + -- (if (a `: t_1a `- `{q*} pr*) = tc_1)* + -- (if (a `: t_2a `- `{q*} pr*) <- tc_2*)* + -- (Sub_typ: E |- t_1a <: t_2a)* + +rule Sub_typ/iter: + E |- ITER t_1 it <: ITER t_2 it + -- Sub_typ: E |- t_1 <: t_2 + +rule Sub_typ/refl: + E |- t <: t + +rule Sub_typ/trans: + E |- t_1 <: t_2 + -- Sub_typ: E |- t_1 <: t' + -- Sub_typ: E |- t' <: t_2 + + +relation Sub_param: E |- param <: param => subst +relation Sub_params: E |- param* <: param* => subst + +rule Sub_param/exp: + E |- EXP x_1 `: t_1 <: EXP x_2 `: t_2 => {EXP (x_2, VAR x_1)} + -- Sub_typ: E |- t_1 <: t_2 + +rule Sub_param/typ: + E |- TYP x_1 <: TYP x_2 => {TYP (x_2, VAR x_1)} + +rule Sub_param/fun: + E |- FUN x_1 `: p_1* `-> t_1 <: FUN x_2 `: p_2* `-> t_2 => {FUN (x_2, x_1)} + -- Sub_params: E |- p_2* <: p_1* => s + -- Sub_typ: E ++ $paramenv(p_2*) |- $subst_typ(s, t_1) <: t_2 + +rule Sub_param/gram: + E |- GRAM x_1 `: p_1* `-> t_1 <: GRAM x_2 `: p_2* `-> t_2 => {GRAM (x_2, VAR x_1)} + -- Sub_params: E |- p_2* <: p_1* => s + -- Sub_typ: E ++ $paramenv(p_2*) |- $subst_typ(s, t_1) <: t_2 + +rule Sub_params/eps: + E |- eps <: eps => {} + +rule Sub_params/cons: + E |- p_1 p'_1* <: p_2 p'_2* => s ++ s' + -- Sub_param: E |- p_1 <: p_2 => s + -- Sub_params: E |- p'_1* <: $subst_param(s, p'_2)* => s' + + +;; Types + +relation Ok_typ: E |- typ : OK + +rule Ok_typ/optyp: + E |- optyp : OK + +rule Ok_typ/VAR: + E |- VAR x a* : OK + -- if (x, p* `-> OK `= inst*) <- E.TYP + -- Ok_args: E |- a* : p* => s + +rule Ok_typ/TUP-empty: + E |- TUP eps : OK + +rule Ok_typ/TUP-cons: + E |- TUP (x_1 `: t_1) (x `: t)* : OK + -- Ok_typ: E |- t_1 : OK + -- Ok_typ: E ++ {EXP (x_1, t_1)} |- TUP (x `: t)* : OK + +rule Ok_typ/ITER: + E |- ITER t it : OK + -- Ok_typ: E |- t : OK + -- if it <- [QUEST STAR] + + +relation Ok_deftyp: E |- deftyp : OK +relation Ok_typfield: E |- typfield : OK +relation Ok_typcase: E |- typcase : OK + +rule Ok_deftyp/ALIAS: + E |- ALIAS t : OK + -- Ok_typ: E |- t : OK + +rule Ok_deftyp/STRUCT: + E |- STRUCT tf* : OK + -- (Ok_typfield: E |- tf : OK)* + -- if tf* = (a `: t `- `{q*} pr*)* + -- if $disjoint_(atom, a*) + +rule Ok_deftyp/VARIANT: + E |- VARIANT tc* : OK + -- (Ok_typcase: E |- tc : OK)* + -- if tc* = (m `: t `- `{q*} pr*)* + -- if $disjoint_(mixop, m*) + + +rule Ok_typfield: + E |- (a `: t `- `{q*} pr*) : OK + -- Ok_typ: E |- t : OK + -- Ok_params: E ++ $tupenv(t) |- q* : OK + -- Ok_prems: E ++ $tupenv(t) ++ $paramenv(q*) |- pr* : OK + + +rule Ok_typcase: + E |- (m `: t `- `{q*} pr*) : OK + -- Ok_typ: E |- t : OK + -- Ok_params: E ++ $tupenv(t) |- q* : OK + -- Ok_prems: E ++ $tupenv(t) ++ $paramenv(q*) |- pr* : OK + + +;; Iterators + +relation Ok_iter: E |- iter : iter -| E + +rule Ok_iter/QUEST: + E |- QUEST : QUEST -| {} + +rule Ok_iter/STAR: + E |- STAR : STAR -| {} + +rule Ok_iter/PLUS: + E |- PLUS : STAR -| {} + +rule Ok_iter/SUP: + E |- SUP x? e : STAR -| {EXP (x, NAT)?} + -- Ok_exp: E |- e : NAT + + +;; Operators + +relation Ok_numunop: |- numunop : numtyp -> numtyp +relation Ok_numbinop: |- numbinop : numtyp numtyp -> numtyp + +rule Ok_numunop/sign: + |- numunop : nt -> nt + -- Sub_numtyp: |- INT <: nt + +rule Ok_numbinop/ADD: + |- ADD : nt nt -> nt + +rule Ok_numbinop/SUB: + |- SUB : nt nt -> nt' + -- Sub_numtyp: |- INT <: nt' + +rule Ok_numbinop/MUL: + |- MUL : nt nt -> nt + +rule Ok_numbinop/DIV: + |- DIV : nt nt -> nt' + -- Sub_numtyp: |- RAT <: nt' + +rule Ok_numbinop/MOD: + |- MOD : nt nt -> nt + -- Sub_numtyp: |- nt <: INT + +rule Ok_numbinop/POW-NAT: + |- POW : nt NAT -> nt + +rule Ok_numbinop/POW-INT: + |- POW : nt INT -> nt + -- Sub_numtyp: |- nt <: RAT + + +;; Expressions + +relation Ok_exp: E |- exp : typ + +rule Ok_exp/BOOL: + E |- BOOL b : BOOL + +rule Ok_exp/NAT: + E |- NAT n : NAT + +rule Ok_exp/INT: + E |- INT i : INT + +rule Ok_exp/RAT: + E |- RAT q : RAT + +rule Ok_exp/REAL: + E |- REAL r : REAL + +rule Ok_exp/TEXT: + E |- TEXT t : TEXT + +rule Ok_exp/VAR: + E |- VAR x : t + -- if (x, t) <- E.EXP + + +rule Ok_exp/UN-BOOL: + E |- UN boolunop e : BOOL + -- Ok_exp: E |- e : BOOL + +rule Ok_exp/UN-NUM: + E |- UN numunop e : numtyp' + -- Ok_exp: E |- e : numtyp + -- Ok_numunop: |- op : numtyp -> numtyp' + + +rule Ok_exp/BIN-BOOL: + E |- BIN boolbinop e_1 e_2 : BOOL + -- Ok_exp: E |- e_1 : BOOL + -- Ok_exp: E |- e_2 : BOOL + +rule Ok_exp/BIN-NUM: + E |- BIN numbinop e_1 e_2 : numtyp + -- Ok_exp: E |- e_1 : numtyp_1 + -- Ok_exp: E |- e_2 : numtyp_2 + -- Ok_numbinop: |- op : numtyp_1 numtyp_2 -> numtyp + + +rule Ok_exp/CMP-POLY: + E |- CMP polycmpop e_1 e_2 : BOOL + -- Ok_exp: E |- e_1 : t + -- Ok_exp: E |- e_2 : t + +rule Ok_exp/CMP-NUM: + E |- CMP numcmpop e_1 e_2 : BOOL + -- Ok_exp: E |- e_1 : numtyp + -- Ok_exp: E |- e_2 : numtyp + + +rule Ok_exp/TUP-eps: + E |- TUP eps : TUP eps + +rule Ok_exp/TUP-cons: + E |- TUP e_1 e* : TUP (x_1 `: t_1) tb* + -- Ok_exp: E |- e_1 : t_1 + -- Ok_exp: E |- TUP e* : $subst_typ({EXP (x_1, e_1)}, TUP tb*) + +rule Ok_exp/OPT: + E |- OPT e? : ITER t QUEST + -- (Ok_exp: E |- e : t)? + -- Ok_typ: E |- t : OK + +rule Ok_exp/LIST: + E |- LIST e* : ITER t STAR + -- (Ok_exp: E |- e : t)* + -- Ok_typ: E |- t : OK + +rule Ok_exp/LIFT: + E |- LIFT e : ITER t STAR + -- Ok_exp: E |- e : ITER t QUEST + +rule Ok_exp/INJ: + E |- INJ op e : VAR x a* + -- Expand_typ: E |- VAR x a* => VARIANT tc* + -- if (op `: t `- `{q*} pr*) <- tc* + -- Ok_exp: E |- e : t + ;; Note: premises need not hold! + +rule Ok_exp/STR: + E |- STR ef* : VAR x a* + -- Expand_typ: E |- VAR x a* => STRUCT tf* + -- if (at `: t `- `{q*} pr*)* = tf* + -- if (at `= e)* = ef* + -- (Ok_exp: E |- e : t)* + ;; Note: premises need not hold! + +rule Ok_exp/SEL: + E |- SEL e n : $subst_typ({EXP (x_i, e_i)^n}, t_n) + -- Ok_exp: E |- e : TUP (x `: t)* + -- if t_n = t*[n] + -- (if x_i = x*[i])^(i t' + +rule Ok_exp/UPD: + E |- UPD e_1 p e_2 : t_1 + -- Ok_exp: E |- e_1 : t_1 + -- Ok_exp: E |- e_2 : t_2 + -- Ok_path: E |- p : t_1 -> t_2 + +rule Ok_exp/EXT: + E |- EXT e_1 p e_2 : t_1 + -- Ok_exp: E |- e_1 : t_1 + -- Ok_exp: E |- e_2 : ITER t_2 STAR + -- Ok_path: E |- p : t_1 -> ITER t_2 STAR + + +rule Ok_exp/CALL: + E |- CALL x a* : $subst_typ(s, t) + -- if (x, (p* `-> t `= cl*)) <- E.FUN + -- Ok_args: E |- a* : p* => s + + +rule Ok_exp/ITER: + E |- ITER e it (x `<- e')* : ITER t it' + -- Ok_iter: E |- it : it' -| E' + -- (Ok_exp: E |- e' : ITER t' it')* + -- Ok_exp: E ++ {EXP (x, t')*} ++ E' |- e : t + -- Ok_typ: E |- t : OK + + +rule Ok_exp/CVT: + E |- CVT e nt_1 nt_2 : nt_2 + -- Ok_exp: E |- e : nt_1 + +rule Ok_exp/SUB: + E |- CVT e t_1 t_2 : t_2 + -- Ok_exp: E |- e : t_1 + -- Sub_typ: E |- t_1 <: t_2 + + +rule Ok_exp/conv: + E |- e : t + -- Ok_exp: E |- e : t' + -- Eq_typ: E |- t == t' + + +;; Paths + +relation Ok_path: E |- path : typ -> typ + +rule Ok_path/ROOT: + E |- ROOT : t -> t + -- Ok_typ: E |- t : OK + +rule Ok_path/THE: + E |- THE p : t -> t' + -- Ok_path: E |- p : t -> ITER t' QUEST + +rule Ok_path/IDX: + E |- IDX p e : t -> t' + -- Ok_path: E |- p : t -> ITER t' STAR + -- Ok_exp: E |- e : NAT + +rule Ok_path/SLICE: + E |- SLICE p e_1 e_2 : t -> t' + -- Ok_path: E |- p : t -> ITER t' STAR + -- Ok_exp: E |- e_1 : NAT + -- Ok_exp: E |- e_2 : NAT + +rule Ok_path/DOT: + E |- DOT p atom : t -> t' + -- Ok_path: E |- p : t -> VAR x a* + -- Expand_typ: E |- VAR x a* => STRUCT tf* + -- if (atom `: t' `- `{q*} pr*) <- tf* + ;; Note: premises cannot be used + +rule Ok_path/PROJ: + E |- PROJ p mixop : t -> t' + -- Ok_path: E |- p : t -> VAR x a* + -- Expand_typ: E |- VAR x a* => VARIANT tc* + -- if (mixop `: t' `- `{q*} pr*) <- tc* + ;; Note: premises cannot be used + +rule Ok_path/conv: + E |- p : t -> t' + -- Ok_path: E |- p : t'' -> t' + -- Eq_typ: E |- t == t'' + + +;; Grammars + +relation Ok_sym: E |- sym : typ + +rule Ok_sym/VAR: + E |- VAR x a* : $subst_typ(s, t) + -- if (x, (p* `-> t `= prod*)) <- E.GRAM + -- Ok_args: E |- a* : p* => s + +rule Ok_sym/NUM: + E |- NUM n : NAT + +rule Ok_sym/TEXT: + E |- TEXT t : TEXT + +rule Ok_sym/SEQ: + E |- SEQ g* : TUP eps + -- (Ok_sym: E |- g : t)* + +rule Ok_sym/ALT: + E |- ALT g* : TUP eps + -- (Ok_sym: E |- g : t)* + +rule Ok_sym/RANGE: + E |- RANGE g_1 g_2 : NAT + -- Ok_sym: E |- g_1 : NAT + -- Ok_sym: E |- g_2 : NAT + +rule Ok_sym/ITER: + E |- ITER g it (x `<- e)* : ITER t it' + -- Ok_iter: E |- it : it' -| E' + -- (Ok_exp: E |- e' : ITER t' it')* + -- Ok_sym: E ++ {EXP (x, t')*} ++ E' |- g : t + -- Ok_typ: E |- t : OK + +rule Ok_sym/ATTR: + E |- ATTR e g : t + -- Ok_sym: E |- g : t + -- Ok_exp: E |- e : t + + +rule Ok_sym/conv: + E |- g : t + -- Ok_sym: E |- g : t' + -- Eq_typ: E |- t == t' + + +;; Premises + +relation Ok_prem: E |- prem : OK +relation Ok_prems: E |- prem* : OK + +rule Ok_prem/RULE: + E |- RULE x a* `: e : OK + -- if (x, (p* `-> t `= rul*)) <- E.REL + -- Ok_args: E |- a* : p* => s + -- Ok_exp: E |- e : $subst_typ(s, t) + +rule Ok_prem/IF: + E |- IF e : OK + -- Ok_exp: E |- e : BOOL + +rule Ok_prem/ELSE: + E |- ELSE : OK + +rule Ok_prem/LET: + E |- LET e_1 `= e_2 : OK + -- Ok_exp: E |- e_1 : t + -- Ok_exp: E |- e_2 : t + +rule Ok_prem/ITER: + E |- ITER pr it (x `<- e)* : OK + -- Ok_iter: E |- it : it' -| E' + -- (Ok_exp: E |- e' : ITER t' it')* + -- Ok_prem: E ++ {EXP (x, t_x)*} ++ E' |- pr : OK + + +rule Ok_prems: + E |- prem* : OK + -- (Ok_prem: E |- prem : OK)* + + +;; Parameters and Arguments + +relation Ok_param: E |- param : OK +relation Ok_params: E |- param* : OK + +rule Ok_param/EXP: + E |- EXP x `: t : OK + -- Ok_typ: E |- t : OK + +rule Ok_param/TYP: + E |- TYP x : OK + +rule Ok_param/FUN: + E |- FUN x `: p* `-> t : OK + -- Ok_params: E |- p* : OK + -- Ok_typ: E ++ $paramenv(p*) |- t : OK + +rule Ok_param/GRAM: + E |- GRAM x `: p* `-> t : OK + -- Ok_params: E |- p* : OK + -- Ok_typ: E ++ $paramenv(p*) |- t : OK + +rule Ok_params/empty: + E |- eps : OK + +rule Ok_params/cons: + E |- p_1 p* : OK + -- Ok_param: E |- p_1 : OK + -- Ok_params: E ++ $paramenv(p_1) |- p* : OK + + +relation Ok_arg: E |- arg : param => subst +relation Ok_args: E |- arg* : param* => subst + +rule Ok_arg/EXP: + E |- EXP e : EXP x `: t => {EXP (x, e)} + -- Ok_exp: E |- e : t + +rule Ok_arg/TYP: + E |- TYP t : TYP x => {TYP (x, t)} + -- Ok_typ: E |- t : OK + +rule Ok_arg/FUN: + E |- FUN y : FUN x `: p* `-> t => {FUN (x, y)} + -- if (y, (p'* `-> t' `= clause*)) <- E.FUN + -- Sub_params: E |- p* <: p'* => s + -- Sub_typ: E |- $subst_typ(s, t') <: t + +rule Ok_arg/GRAM-ground: + E |- GRAM g : GRAM x `: eps `-> t => {GRAM (x, g)} + -- Ok_sym: E |- g : t + +rule Ok_arg/GRAM-higher: + E |- GRAM (VAR y) : GRAM x `: p* `-> t => {GRAM (x, VAR y)} + -- if (y, (p'* `-> t' `= prod*)) <- E.GRAM + -- Sub_params: E |- p* <: p'* => s + -- Sub_typ: E |- $subst_typ(s, t') <: t + +rule Ok_args/empty: + E |- eps : eps => {} + +rule Ok_args/cons: + E |- a_1 a* : p_1 p* => s_1 ++ s + -- Ok_arg: E |- a_1 : p_1 => s_1 + -- Ok_args: E |- a* : $subst_param(s, p)* => s + + +;; Declarations + +relation Ok_dec: E |- dec : OK -| E +relation Ok_decs: E |- dec* : OK -| E + +rule Ok_dec/TYP: + E |- TYP x p* `= inst* : OK -| E ++ {TYP (x, p* `-> OK `= inst*)} + -- Ok_params: E |- p* : OK + -- (Ok_inst: E |- inst : p* -> OK)* + +rule Ok_dec/REL: + E |- REL x p* `: t `= rul* : OK -| E ++ {REL (x, p* `-> t `= rul*)} + -- Ok_params: E |- p* : OK + -- (Ok_rule: E ++ $paramenv(p*) |- rul : t)* + +rule Ok_dec/FUN: + E |- FUN x p* `: t `= clause* : OK -| E ++ {FUN (x, p* `-> t `= clause*)} + -- Ok_params: E |- p* : OK + -- (Ok_clause: E ++ $paramenv(p*) |- clause : p* -> t)* + +rule Ok_dec/GRAM: + E |- GRAM x p* `: t `= prod* : OK -| E ++ {GRAM (x, p* `-> t `= prod*)} + -- Ok_params: E |- p* : OK + -- (Ok_prod: E ++ $paramenv(p*) |- prod : t)* + +rule Ok_dec/REC: + E |- REC d* : OK -| E' + -- Ok_decs: E ++ E' |- d* : OK -| E' + ;; TODO: this doesn't quite work with just ++ + +rule Ok_decs/empty: + E |- eps : OK -| {} + +rule Ok_decs/cons: + E |- d_1 d* : OK -| E_1 ++ E' + -- Ok_dec: E |- d_1 : OK -| E_1 + -- Ok_decs: E ++ E_1 |- d* : OK -| E' + + +relation Ok_inst: E |- inst : param* -> OK + +rule Ok_inst: + E |- INST `{q*} a* `= dt : p* -> OK + -- Ok_params: E |- q* : OK + -- Ok_args: E ++ $paramenv(q*) |- a* : p* => s + -- Ok_deftyp: E ++ $paramenv(q*) |- dt : OK + +relation Ok_rule: E |- rul : typ + +rule Ok_rule: + E |- RULE `{q*} e `- pr* : t + -- Ok_params: E |- q* : OK + -- Ok_exp: E ++ $paramenv(q*) |- e : t + -- Ok_prems: E ++ $paramenv(q*) |- pr* : OK + +relation Ok_clause: E |- clause : param* -> typ + +rule Ok_clause: + E |- CLAUSE `{q*} a* `= e `- pr* : p* -> t + -- Ok_params: E |- q* : OK + -- Ok_args: E ++ $paramenv(q*) |- a* : p* => s + -- Ok_exp: E ++ $paramenv(q*) |- e : t + -- Ok_prems: E ++ $paramenv(q*) |- pr* : OK + +relation Ok_prod: E |- prod : typ + +rule Ok_prod: + E |- PROD `{q*} g `=> e `- pr* : t + -- Ok_params: E |- q* : OK + -- Ok_sym: E ++ $paramenv(q*) |- g : t' + -- Ok_exp: E ++ $paramenv(q*) |- e : t + -- Ok_prems: E ++ $paramenv(q*) |- pr* : OK + + +;; Scripts + +relation Ok_script: |- script : OK + +rule Ok_script: + |- d* : OK + -- Ok_decs: {} |- d* : OK -| E From 72ed2398e161fe07e11f0810932e0d78e2440bd3 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Tue, 10 Feb 2026 16:47:12 +0100 Subject: [PATCH 041/235] Fix normalisation of SUB --- spectec/doc/semantics/il/5-reduction.spectec | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/spectec/doc/semantics/il/5-reduction.spectec b/spectec/doc/semantics/il/5-reduction.spectec index 5853399aa..148e50e5a 100644 --- a/spectec/doc/semantics/il/5-reduction.spectec +++ b/spectec/doc/semantics/il/5-reduction.spectec @@ -359,17 +359,23 @@ rule Step_exp/CVT-NUM: S |- CVT num nt_1 nt_2 ~> $numcvt(nt_2, num) -rule Step_exp/SUB-ctx: +rule Step_exp/SUB-ctx1: S |- SUB e t_1 t_2 ~> SUB e' t_1 t_2 -- Step_exp: S |- e ~> e' +rule Step_exp/SUB-ctx2: + S |- SUB e t_1 t_2 ~> SUB e t'_1 t_2 + -- Step_typ: S |- t_1 ~> t'_1 + +rule Step_exp/SUB-ctx3: + S |- SUB e t_1 t_2 ~> SUB e t_1 t'_2 + -- Step_typ: S |- t_2 ~> t'_2 + rule Step_exp/SUB-SUB: S |- SUB (SUB e' t'_1 t'_2) t_1 t_2 ~> SUB e' t'_1 t_2 rule Step_exp/SUB-TUP: - S |- SUB (TUP e*) t_1 t_2 ~> TUP (SUB e t'_1 t'_2)* - -- Reduce_typ: S |- t_1 ~>* TUP (x_1 `: t'_1)* - -- Reduce_typ: S |- t_2 ~>* TUP (x_2 `: t'_2)* + S |- SUB (TUP e*) (TUP (x_1 `: t'_1)*) (TUP (x_2 `: t'_2)*) ~> TUP (SUB e t'_1 t'_2)* ;; TODO: substitute x's From b32104a89a48fff3671f6414639d5fee077dfd69 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Tue, 10 Feb 2026 17:41:52 +0100 Subject: [PATCH 042/235] [spec] Fix print hint for $tagaddr (#2077) --- .../4.0-execution.configurations.spectec | 2 +- .../4.0-execution.configurations.spectec | 2 +- spectec/doc/example/output/NanoWasm.pdf | Bin 245512 -> 245512 bytes spectec/test-latex/TEST.md | 8 ++++---- spectec/test-prose/TEST.md | 16 ++++++++-------- 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/specification/wasm-3.0/4.0-execution.configurations.spectec b/specification/wasm-3.0/4.0-execution.configurations.spectec index c8e06e085..d7c2ce8f9 100644 --- a/specification/wasm-3.0/4.0-execution.configurations.spectec +++ b/specification/wasm-3.0/4.0-execution.configurations.spectec @@ -225,7 +225,7 @@ def $frame(state) : frame hint(show %.FRAME) hint(macro "Z%") def $store((s; f)) = s def $frame((s; f)) = f -def $tagaddr(state) : tagaddr* hint(show %.TAGS) hint(macro "Z%") +def $tagaddr(state) : tagaddr* hint(show %.MODULE.TAGS) hint(macro "Z%") def $tagaddr((s; f)) = f.MODULE.TAGS def $moduleinst(state) : moduleinst hint(show %.MODULE) hint(macro "Z%") diff --git a/specification/wasm-latest/4.0-execution.configurations.spectec b/specification/wasm-latest/4.0-execution.configurations.spectec index c8e06e085..d7c2ce8f9 100644 --- a/specification/wasm-latest/4.0-execution.configurations.spectec +++ b/specification/wasm-latest/4.0-execution.configurations.spectec @@ -225,7 +225,7 @@ def $frame(state) : frame hint(show %.FRAME) hint(macro "Z%") def $store((s; f)) = s def $frame((s; f)) = f -def $tagaddr(state) : tagaddr* hint(show %.TAGS) hint(macro "Z%") +def $tagaddr(state) : tagaddr* hint(show %.MODULE.TAGS) hint(macro "Z%") def $tagaddr((s; f)) = f.MODULE.TAGS def $moduleinst(state) : moduleinst hint(show %.MODULE) hint(macro "Z%") diff --git a/spectec/doc/example/output/NanoWasm.pdf b/spectec/doc/example/output/NanoWasm.pdf index 2ee089aa4d9c3480abbfd1882eb24fcbc43f3d46..48ae3e292813441bec1d833cd79f9a4cbfb4e32c 100644 GIT binary patch delta 114 zcmeD9$Jg` of :math:`z{.}\mathsf{tags}{}[x]{.}\mathsf{type}` is some :math:`\mathsf{func}~{\mathit{resulttype}} \rightarrow {\mathit{resulttype}}`. @@ -20667,7 +20667,7 @@ The instruction sequence :math:`(\mathsf{block}~{\mathit{blocktype}}~{{\mathit{i #. Pop the values :math:`{{\mathit{val}}^{n}}` from the stack. -#. Let :math:`{\mathit{exn}}` be the exception instance :math:`\{ \mathsf{tag}~z{.}\mathsf{tags}{}[x],\;\allowbreak \mathsf{fields}~{{\mathit{val}}^{n}} \}`. +#. Let :math:`{\mathit{exn}}` be the exception instance :math:`\{ \mathsf{tag}~z{.}\mathsf{module}{.}\mathsf{tags}{}[x],\;\allowbreak \mathsf{fields}~{{\mathit{val}}^{n}} \}`. #. Append :math:`{\mathit{exn}}` to :math:`z{.}\mathsf{exns}`. @@ -25510,8 +25510,8 @@ The instruction sequence :math:`(\mathsf{block}~{\mathit{blocktype}}~{{\mathit{i 1. Return :math:`f`. -:math:`(s, f){.}\mathsf{tags}` -.............................. +:math:`(s, f){.}\mathsf{module}{.}\mathsf{tags}` +................................................ 1. Return :math:`f{.}\mathsf{module}{.}\mathsf{tags}`. From 6b96f8767424c67ad81191cbbb652a9c25061386 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Tue, 10 Feb 2026 18:25:20 +0100 Subject: [PATCH 043/235] Add missing SUB reductions --- spectec/doc/semantics/il/5-reduction.spectec | 25 ++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/spectec/doc/semantics/il/5-reduction.spectec b/spectec/doc/semantics/il/5-reduction.spectec index 148e50e5a..040919577 100644 --- a/spectec/doc/semantics/il/5-reduction.spectec +++ b/spectec/doc/semantics/il/5-reduction.spectec @@ -375,8 +375,29 @@ rule Step_exp/SUB-SUB: S |- SUB (SUB e' t'_1 t'_2) t_1 t_2 ~> SUB e' t'_1 t_2 rule Step_exp/SUB-TUP: - S |- SUB (TUP e*) (TUP (x_1 `: t'_1)*) (TUP (x_2 `: t'_2)*) ~> TUP (SUB e t'_1 t'_2)* - ;; TODO: substitute x's + S |- SUB (TUP e^n) (TUP (x_1 `: t_1)^n) (TUP (x_2 `: t_2)^n) ~> TUP (SUB e $subst_typ(s_1, t_1) $subst_typ(s_2, t_2))^n + -- if s_1 = {EXP (x_1, e^n[i])^(i OPT (SUB e t_1 t_2)? + +rule Step_exp/SUB-LIST: + S |- SUB (LIST e*) (ITER t_1 STAR) (ITER t_2 STAR) ~> LIST (SUB e t_1 t_2)* + +rule Step_exp/SUB-STR: + S |- SUB (STR (at `= e)*) (VAR x_1 a_1*) (VAR x_2 a_2*) ~> STR (at' `= SUB e t_1 t_2)* + -- Expand_typ: S |- VAR x_1 a_1* => STRUCT tf_1* + -- Expand_typ: S |- VAR x_2 a_2* => STRUCT tf_2* + -- (if (at' `: t_1 `- `{q_1*} pr_1*) <- tf_1*)* + -- (if (at' `: t_2 `- `{q_2*} pr_2*) = tf_2)* + +rule Step_exp/SUB-CASE: + S |- SUB (INJ op e) (VAR x_1 a_1*) (VAR x_2 a_2*) ~> INJ op (SUB e t_1 t_2) + -- Expand_typ: S |- VAR x_1 a_1* => VARIANT tc_1* + -- Expand_typ: S |- VAR x_2 a_2* => VARIANT tc_2* + -- if (op `: t_1 `- `{q_1*} pr_1*) <- tc_1* + -- if (op `: t_2 `- `{q_2*} pr_2*) <- tc_2* ;; Arguments From 55d3203b98aca0f017a8ccf6d928435364ab08ed Mon Sep 17 00:00:00 2001 From: DJ Date: Thu, 12 Feb 2026 15:39:54 +0900 Subject: [PATCH 044/235] [spectec] Remove obsolete translation for optional singleton constructor --- spectec/src/backend-prose/gen.ml | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/spectec/src/backend-prose/gen.ml b/spectec/src/backend-prose/gen.ml index 9412078ab..13d9e8d12 100644 --- a/spectec/src/backend-prose/gen.ml +++ b/spectec/src/backend-prose/gen.ml @@ -66,18 +66,6 @@ let extract_rel_hint relid hintid = let swap = function `LtOp -> `GtOp | `GtOp -> `LtOp | `LeOp -> `GeOp | `GeOp -> `LeOp | op -> op -(* CASE (?(())) ~> CASE - CASE (?()) ~> () *) -let recover_optional_singleton_constructor e = - match e.it with - | Al.Ast.CaseE (Mixop.(Seq [Atom atom; Arg ()]), [{it = OptE opt; _ }]) -> - ( - match opt with - | Some _ -> Al.Ast.CaseE (Mixop.Atom atom, []) - | None -> Al.Ast.CaseE (Mixop.Seq [], []) - ) |> (fun it -> {e with it}) - | _ -> e - (* l ->_ [] r ~> l -> r *) let remove_empty_arrow_sub e = match e.it with @@ -181,7 +169,6 @@ let transpile_expr = let post_expr = Il2al.Transpile.simplify_record_concat >> Il2al.Transpile.reduce_comp - >> recover_optional_singleton_constructor >> remove_empty_arrow_sub in let walk_expr walker expr = From ff43526056468c7eb0f4656bd6350db065377bf5 Mon Sep 17 00:00:00 2001 From: DJ Date: Thu, 12 Feb 2026 17:32:33 +0900 Subject: [PATCH 045/235] [spectec] Remove unnecessary push and pop of frame --- spectec/src/il2al/transpile.ml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/spectec/src/il2al/transpile.ml b/spectec/src/il2al/transpile.ml index 7c81e6373..b343e16c0 100644 --- a/spectec/src/il2al/transpile.ml +++ b/spectec/src/il2al/transpile.ml @@ -1166,8 +1166,9 @@ let handle_unframed_algo instrs = let post_instr instr = let ret = - match !frame_arg with - | Some { it = ExpA f; _ } -> + match instr.it, !frame_arg with + | IfI _, _ -> [instr] + | _, Some { it = ExpA f; _ } -> (* Ignore if current instr is IfI *) let zeroE = natE Z.zero ~note:natT in let frame = frameE (zeroE, postprocess_frame f) ~at:f.at ~note:evalctxT in let _f = frameE (zeroE, varE "_f" ~note:f.note) ~note:evalctxT in From 0910161c4a8f9777810160ca997cd9c47368dac8 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Thu, 12 Feb 2026 11:02:37 +0100 Subject: [PATCH 046/235] [ci] Adjust job --- .github/workflows/ci-spec.yml | 2 +- specification/Makefile | 3 ++ specification/diff-wasm-latest.sh | 6 ++-- .../wasm-latest/6.1-text.values.spectec | 2 +- .../wasm-latest/6.4-text.modules.spectec | 6 ++-- spectec/Makefile | 6 ++++ spectec/doc/example/output/NanoWasm.pdf | Bin 245512 -> 245512 bytes spectec/test-prose/TEST.md | 29 ++++++++++-------- 8 files changed, 33 insertions(+), 21 deletions(-) diff --git a/.github/workflows/ci-spec.yml b/.github/workflows/ci-spec.yml index 1b32bcf54..4e956bc74 100644 --- a/.github/workflows/ci-spec.yml +++ b/.github/workflows/ci-spec.yml @@ -20,7 +20,7 @@ jobs: - name: Checkout repo uses: actions/checkout@v4 - name: Diff wasm-latest - run: bash .github/workflows/diff-wasm-latest.sh + run: cd specification && bash diff-wasm-latest.sh build-core-spec: runs-on: ubuntu-latest diff --git a/specification/Makefile b/specification/Makefile index fdd4d3db2..917d2c966 100644 --- a/specification/Makefile +++ b/specification/Makefile @@ -36,6 +36,9 @@ check-latest: $(EXE) check-all: check-1.0 check-2.0 check-3.0 check-latest @echo All Wasm specs checked OK. +check-diff: + ./diff-wasm-latest.sh + # Build diff --git a/specification/diff-wasm-latest.sh b/specification/diff-wasm-latest.sh index e0f0e4ee2..b2672473d 100755 --- a/specification/diff-wasm-latest.sh +++ b/specification/diff-wasm-latest.sh @@ -1,14 +1,14 @@ #!/bin/bash # Identify the highest versioned directory -HIGHEST_VER=$(ls -d specification/wasm-[0-9]* 2>/dev/null | sort -V | tail -n 1) +HIGHEST_VER=$(ls -d wasm-[0-9]* 2>/dev/null | sort -V | tail -n 1) if [ -z "$HIGHEST_VER" ]; then echo "❌ Error: No wasm-X.Y versioned directories found in specification/" exit 1 fi -LATEST="specification/wasm-latest" +LATEST="wasm-latest" # Check that wasm-latest exists if [ ! -d "$LATEST" ]; then @@ -24,7 +24,7 @@ if diff -qr "$HIGHEST_VER" "$LATEST" > /dev/null; then else echo "🔍 Differences detected:" echo "--------------------------------" - diff -r "$HIGHEST_VER" "$LATEST" + diff -U0 -r "$HIGHEST_VER" "$LATEST" echo "--------------------------------" exit 1 fi diff --git a/specification/wasm-latest/6.1-text.values.spectec b/specification/wasm-latest/6.1-text.values.spectec index 9965f70c7..09b6bbd2e 100644 --- a/specification/wasm-latest/6.1-text.values.spectec +++ b/specification/wasm-latest/6.1-text.values.spectec @@ -153,7 +153,7 @@ syntax I = idctxt def $concat_idctxt(idctxt*) : idctxt hint(show (++) %) def $concat_idctxt(eps) = {} -def $concat_idctxt(I I') = I ++ $concat_idctxt(I'*) +def $concat_idctxt(I I'*) = I ++ $concat_idctxt(I'*) relation Idctxt_ok: |- idctxt : OK diff --git a/specification/wasm-latest/6.4-text.modules.spectec b/specification/wasm-latest/6.4-text.modules.spectec index c1109ed8f..231685cf6 100644 --- a/specification/wasm-latest/6.4-text.modules.spectec +++ b/specification/wasm-latest/6.4-text.modules.spectec @@ -56,7 +56,7 @@ grammar Tlocal_(I)/plain : (local*, idctxt) = | ... grammar Tlocal_(I)/abbrev : (local*, idctxt) = - ... | "(" "local" t:Tvaltype_(I)* ")" == ("(" "local" t:Tvaltype_(I) ")")* + ... | "(" "local" Tvaltype_(I)* ")" == ("(" "local" Tvaltype_(I) ")")* ;; Data segments @@ -97,8 +97,8 @@ grammar Telem_(I)/plain : (elem, idctxt) = | ... grammar Telem_(I)/abbrev : (elem, idctxt) = ... - | "(" "elem" e':Toffset_(I) Tlist(Tfuncidx_(I)) ")" == - "(" "elem" e':Toffset_(I) "func" Tlist(Tfuncidx_(I)) ")" + | "(" "elem" Toffset_(I) Tlist(Tfuncidx_(I)) ")" == + "(" "elem" Toffset_(I) "func" Tlist(Tfuncidx_(I)) ")" grammar Telemlist_(I)/plain : (reftype, expr*) = | rt:Treftype_(I) e*:Tlist(Texpr_(I)) => (rt, e*) diff --git a/spectec/Makefile b/spectec/Makefile index ba992afe1..a3e7e40ea 100644 --- a/spectec/Makefile +++ b/spectec/Makefile @@ -104,6 +104,12 @@ spec-clean: (cd ../document/core && make clean) +# Specification checks + +check%: + (cd ../specification && make $@) + + # Cleanup .PHONY: clean distclean diff --git a/spectec/doc/example/output/NanoWasm.pdf b/spectec/doc/example/output/NanoWasm.pdf index 2ee089aa4d9c3480abbfd1882eb24fcbc43f3d46..87e7b4ae40d3628dbb0c96f96f89d866be8f2a24 100644 GIT binary patch delta 145 zcmeD9$JgkHY93=K>z z3=F4BZe^B%akkrRWiDiMwlp&{b~7?@F?Ka^b#!)iF*7hUaC0>}2fXWZ>rF?CNIWXldbSZsO)*?qp!$Xk=h%YG7z;V5eY1 MNXhmOyO|}J0h~rCt^fc4 diff --git a/spectec/test-prose/TEST.md b/spectec/test-prose/TEST.md index da9e30d05..a2f19581a 100644 --- a/spectec/test-prose/TEST.md +++ b/spectec/test-prose/TEST.md @@ -255,7 +255,9 @@ The instruction :math:`(\mathsf{block}~{t^?}~{{\mathit{instr}}^\ast})` is :ref:` The instruction :math:`(\mathsf{loop}~{t^?}~{{\mathit{instr}}^\ast})` is :ref:`valid ` with the function type :math:`\epsilon~\rightarrow~{t^?}` if: - * The instruction sequence :math:`{{\mathit{instr}}^\ast}` is :ref:`valid ` with the function type :math:`\epsilon~\rightarrow~\epsilon`. + * Let :math:`{C'}` be the same context as :math:`C`, but with the result type sequence :math:`\epsilon` prepended to the field :math:`\mathsf{labels}`. + + * Under the context :math:`{C'}`, the instruction sequence :math:`{{\mathit{instr}}^\ast}` is :ref:`valid ` with the function type :math:`\epsilon~\rightarrow~\epsilon`. @@ -3161,7 +3163,8 @@ Instr_ok/block Instr_ok/loop - the instruction (LOOP t? instr*) is valid with the function type [] -> t? if: - - the instruction sequence instr* is valid with the function type [] -> []. + - the context C' is the context C with .LABELS prepended by [?()]. + - Under the context C', the instruction sequence instr* is valid with the function type [] -> []. Instr_ok/if - the instruction (IF t? instr_1* ELSE instr_2*) is valid with the function type [I32] -> t? if: @@ -26543,9 +26546,9 @@ The instruction sequence :math:`(\mathsf{block}~{\mathit{blocktype}}~{{\mathit{i a. Return :math:`\{ \}`. -#. Let :math:`I~{I'}` be :math:`{{\mathit{idctxt}}^\ast}`. +#. Let :math:`I~{{I'}^\ast}` be :math:`{{\mathit{idctxt}}^\ast}`. -#. Return `I ++ $concat_idctxt(I'*{})`. +#. Return `I ++ $concat_idctxt(I'*{I' <- I'*})`. :math:`{\mathrm{types}}({{\mathit{decl}'}^\ast})` @@ -28810,7 +28813,7 @@ Step_read/return_call_ref-frame-* yy 6. Assert: Due to validation, val'' is some REF.FUNC_ADDR. 7. Let (REF.FUNC_ADDR a) be val''. 8. Assert: Due to validation, (a < |$funcinst(z)|). -9. Assert: Due to validation, $Expand($funcinst(z)[a].TYPE) is some FUNC. +9. Assert: Due to validation, $Expand($funcinst(z)[a].TYPE) is some ->. 10. Let (FUNC t_1^n -> t_2^m) be $Expand($funcinst(z)[a].TYPE). 11. Assert: Due to validation, there are at least n values on the top of the stack. 12. Pop the values val^n from the stack. @@ -29512,7 +29515,7 @@ Step_read/call_ref yy 12. For each local_0 in local_0*, do: a. Let (LOCAL t) be local_0. b. Append t to the t*. -13. Assert: Due to validation, $Expand(fi.TYPE) is some FUNC. +13. Assert: Due to validation, $Expand(fi.TYPE) is some ->. 14. Let (FUNC t_1^n -> t_2^m) be $Expand(fi.TYPE). 15. Assert: Due to validation, there are at least n values on the top of the stack. 16. Pop the values val^n from the stack. @@ -29549,7 +29552,7 @@ Step_read/return_call_ref yy e. Assert: Due to validation, val'' is some REF.FUNC_ADDR. f. Let (REF.FUNC_ADDR a) be val''. g. Assert: Due to validation, (a < |$funcinst(z)|). - h. Assert: Due to validation, $Expand($funcinst(z)[a].TYPE) is some FUNC. + h. Assert: Due to validation, $Expand($funcinst(z)[a].TYPE) is some ->. i. Let (FUNC t_1^n -> t_2^m) be $Expand($funcinst(z)[a].TYPE). j. Assert: Due to validation, there are at least n values on the top of the stack. k. Pop the values val^n from the stack. @@ -30202,7 +30205,7 @@ Step_read/array.init_data x y Step/throw x 1. Let z be the current state. 2. Assert: Due to validation, (x < |$tagaddr(z)|). -3. Assert: Due to validation, $Expand($as_deftype($tag(z, x).TYPE)) is some FUNC. +3. Assert: Due to validation, $Expand($as_deftype($tag(z, x).TYPE)) is some ->. 4. Let (FUNC t^n -> resulttype_0) be $Expand($as_deftype($tag(z, x).TYPE)). 5. Assert: Due to validation, (resulttype_0 = []). 6. Let a be |$exninst(z)|. @@ -30916,7 +30919,7 @@ subst_comptype comptype tv* tu* 2. If comptype is some ARRAY, then: a. Let (ARRAY ft) be comptype. b. Return (ARRAY $subst_fieldtype(ft, tv*, tu*)). -3. Assert: Due to validation, comptype is some FUNC. +3. Assert: Due to validation, comptype is some ->. 4. Let (FUNC t_1* -> t_2*) be comptype. 5. Return (FUNC $subst_valtype(t_1, tv*, tu*)* -> $subst_valtype(t_2, tv*, tu*)*). @@ -31096,7 +31099,7 @@ free_comptype comptype 2. If comptype is some ARRAY, then: a. Let (ARRAY fieldtype) be comptype. b. Return $free_fieldtype(fieldtype). -3. Assert: Due to validation, comptype is some FUNC. +3. Assert: Due to validation, comptype is some ->. 4. Let (FUNC resulttype_1 -> resulttype_2) be comptype. 5. Return $free_resulttype(resulttype_1) ++ $free_resulttype(resulttype_2). @@ -32622,7 +32625,7 @@ inst_tabletype moduleinst tt blocktype_ z blocktype 1. If blocktype is some _IDX, then: a. Let (_IDX x) be blocktype. - b. Assert: Due to validation, $Expand($type(z, x)) is some FUNC. + b. Assert: Due to validation, $Expand($type(z, x)) is some ->. c. Let (FUNC t_1* -> t_2*) be $Expand($type(z, x)). d. Return t_1* ->_ [] t_2*. 2. Assert: Due to validation, blocktype is some _RESULT. @@ -32937,7 +32940,7 @@ instantiate s module externaddr* 28. Return moduleinst. invoke s funcaddr val* -1. Assert: Due to validation, $Expand(s.FUNCS[funcaddr].TYPE) is some FUNC. +1. Assert: Due to validation, $Expand(s.FUNCS[funcaddr].TYPE) is some ->. 2. Let (FUNC t_1* -> t_2*) be $Expand(s.FUNCS[funcaddr].TYPE). 3. If not $Val_ok(val, t_1)*, then: a. Fail. @@ -32953,7 +32956,7 @@ invoke s funcaddr val* concat_idctxt idctxt* 1. If (idctxt* = []), then: a. Return {}. -2. Let [I, I'] be idctxt*. +2. Let [I] :: I'* be idctxt*. 3. Return I ++ $concat_idctxt(I'*). typesd decl'* From 34f1c29f468e881209e3a4672f8d0d1de638dfc7 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Thu, 12 Feb 2026 11:23:53 +0100 Subject: [PATCH 047/235] Tweak workflows --- .github/workflows/ci-interpreter.yml | 2 +- .github/workflows/ci-spec.yml | 2 +- .github/workflows/w3c-publish.yml | 3 +-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci-interpreter.yml b/.github/workflows/ci-interpreter.yml index 3ce4327a1..516ab75a0 100644 --- a/.github/workflows/ci-interpreter.yml +++ b/.github/workflows/ci-interpreter.yml @@ -21,7 +21,7 @@ jobs: - name: Setup OCaml uses: ocaml/setup-ocaml@v3 with: - ocaml-compiler: 4.14.x + ocaml-compiler: 5.04.x - name: Setup OCaml tools run: opam install --yes ocamlfind.1.9.5 js_of_ocaml.4.0.0 js_of_ocaml-ppx.4.0.0 - name: Build interpreter diff --git a/.github/workflows/ci-spec.yml b/.github/workflows/ci-spec.yml index 4e956bc74..9d73c7936 100644 --- a/.github/workflows/ci-spec.yml +++ b/.github/workflows/ci-spec.yml @@ -32,7 +32,7 @@ jobs: - name: Setup OCaml uses: ocaml/setup-ocaml@v3 with: - ocaml-compiler: 4.14.x + ocaml-compiler: 5.04.x - name: Setup Dune run: opam install --yes dune menhir mdx zarith && opam exec dune --version - name: Setup Node.js diff --git a/.github/workflows/w3c-publish.yml b/.github/workflows/w3c-publish.yml index d2efb1601..ad72842ca 100644 --- a/.github/workflows/w3c-publish.yml +++ b/.github/workflows/w3c-publish.yml @@ -5,8 +5,6 @@ on: # Disable on forks! branches: [ main ] paths: [ .github/**, document/**, specification/** ] - pull_request: - paths: [ .github/**, document/**, specification/** ] # Allows you to run this workflow manually from the Actions tab, gh CLI tool, # or REST API. THe w3c-status options correspond to the valid options for @@ -36,6 +34,7 @@ env: jobs: publish-to-w3c-TR: + if: ${{ github.repository == 'WebAssembly/spec' }} strategy: fail-fast: false matrix: From 0e799ae559f329e9f7f45158408b6332aff358f4 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Thu, 12 Feb 2026 11:27:09 +0100 Subject: [PATCH 048/235] Tweak workflows some more --- .github/workflows/ci-interpreter.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-interpreter.yml b/.github/workflows/ci-interpreter.yml index 516ab75a0..0ee0ae377 100644 --- a/.github/workflows/ci-interpreter.yml +++ b/.github/workflows/ci-interpreter.yml @@ -23,7 +23,7 @@ jobs: with: ocaml-compiler: 5.04.x - name: Setup OCaml tools - run: opam install --yes ocamlfind.1.9.5 js_of_ocaml.4.0.0 js_of_ocaml-ppx.4.0.0 + run: opam install --yes ocamlfind js_of_ocaml js_of_ocaml-ppx - name: Build interpreter run: cd interpreter && opam exec make # Neither V8 nor SpiderMonkey can currently handle all 3.0 tests, so we disable checking JS translation for now. From 4f8c00336310bfcad1a84a4b29a48b336eee7c8c Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Mon, 26 Jan 2026 19:28:37 +0100 Subject: [PATCH 049/235] Allow parameterised relations in IL --- spectec/src/backend-ast/print.ml | 6 ++--- spectec/src/backend-prose/gen.ml | 24 +++++++++++++------- spectec/src/frontend/det.ml | 2 +- spectec/src/frontend/dim.ml | 14 +++++++----- spectec/src/frontend/elab.ml | 10 ++++----- spectec/src/il/ast.ml | 4 ++-- spectec/src/il/env.ml | 4 ++-- spectec/src/il/eq.ml | 4 ++-- spectec/src/il/free.ml | 18 +++++++++------ spectec/src/il/iter.ml | 4 ++-- spectec/src/il/print.ml | 11 ++++----- spectec/src/il/subst.ml | 2 +- spectec/src/il/valid.ml | 23 ++++++++++--------- spectec/src/il2al/animate.ml | 10 ++++----- spectec/src/il2al/encode.ml | 4 ++-- spectec/src/il2al/free.ml | 3 ++- spectec/src/il2al/il_walk.ml | 2 +- spectec/src/il2al/preprocess.ml | 24 ++++++++++---------- spectec/src/il2al/translate.ml | 4 +++- spectec/src/il2al/unify.ml | 2 +- spectec/src/middlend/sideconditions.ml | 31 ++++++++++++++------------ spectec/src/middlend/sub.ml | 6 ++--- spectec/src/middlend/totalize.ml | 6 ++--- spectec/src/middlend/unthe.ml | 5 ++--- 24 files changed, 124 insertions(+), 99 deletions(-) diff --git a/spectec/src/backend-ast/print.ml b/spectec/src/backend-ast/print.ml index 924e6901b..1372e94ea 100644 --- a/spectec/src/backend-ast/print.ml +++ b/spectec/src/backend-ast/print.ml @@ -160,7 +160,7 @@ and sym g = and prem pr = match pr.it with - | RulePr (x, op, e) -> Node ("rule", [id x; mixop op; exp e]) + | RulePr (x, as1, op, e) -> Node ("rule", id x :: List.map arg as1 @ [mixop op; exp e]) | IfPr e -> Node ("if", [exp e]) | LetPr (e1, e2, _xs) -> Node ("let", [exp e1; exp e2]) | ElsePr -> Atom "else" @@ -207,8 +207,8 @@ let rec def d = match d.it with | TypD (x, ps, insts) -> Node ("typ", [id x] @ List.map param ps @ List.map inst insts) - | RelD (x, op, t, rules) -> - Node ("rel", [id x; mixop op; typ t] @ List.map rule rules) + | RelD (x, ps, op, t, rules) -> + Node ("rel", [id x] @ List.map param ps @ [mixop op; typ t] @ List.map rule rules) | DecD (x, ps, t, clauses) -> Node ("def", [id x] @ List.map param ps @ [typ t] @ List.map clause clauses) | GramD (x, ps, t, prods) -> diff --git a/spectec/src/backend-prose/gen.ml b/spectec/src/backend-prose/gen.ml index 13d9e8d12..29e8389a7 100644 --- a/spectec/src/backend-prose/gen.ml +++ b/spectec/src/backend-prose/gen.ml @@ -17,6 +17,10 @@ let print_yet_prem prem fname = let s = Il.Print.string_of_prem prem in print_yet prem.at fname ("`" ^ s ^ "`") +let print_yet_rel def fname = + let s = Il.Print.string_of_def def in + print_yet def.at fname ("`" ^ s ^ "`") + (* Helpers *) module Map = Map.Make(String) @@ -32,12 +36,12 @@ let flatten_rec def = let is_validation_helper_relation def = match def.it with - | Ast.RelD (id, _, _, _) -> id.it = "Expand" || id.it = "Expand_use" + | Ast.RelD (id, _, _, _, _) -> id.it = "Expand" || id.it = "Expand_use" | _ -> false (* NOTE: Assume validation relation is `|-` *) let is_validation_relation def = match def.it with - | Ast.RelD (_, mixop, _, _) -> + | Ast.RelD (_, _, mixop, _, _) -> List.exists (List.exists (fun atom -> atom.it = Atom.Turnstile)) (Mixop.flatten mixop) | _ -> false @@ -49,7 +53,7 @@ let extract_validation_il il = let rel_has_id id rel = match rel.it with - | Ast.RelD (id', _, _, _) -> id.it = id'.it + | Ast.RelD (id', _, _, _, _) -> id.it = id'.it | _ -> false let extract_prose_hint hintexp = @@ -138,7 +142,8 @@ let get_rel_kind def = let extract_pphint relid = extract_rel_hint relid "prosepp" in match def.it with - | Ast.RelD (id, mixop, typ, _) -> + | Ast.RelD (id, params, mixop, typ, _) -> + if params <> [] then (print_yet_rel def "get_rel_kind"; OtherRel) else let mixop' = List.map (List.map Util.Source.it) (Mixop.flatten mixop) in let match_mixop pattern = mixop' = pattern || mixop' = List.tl pattern in if match_mixop valid_pattern then @@ -275,7 +280,8 @@ let rec prem_to_instrs prem = [ LetS (exp_to_expr e1, exp_to_expr e2) ] | Ast.IfPr e -> if_expr_to_instrs e - | Ast.RulePr (id, _, e) -> + | Ast.RulePr (id, args, _, e) -> + if args <> [] then (print_yet_prem prem "prem_to_instrs"; [ YetS "TODO: prem_to_instrs for RulePr" ]) else let rel = match List.find_opt (rel_has_id id) !Langs.validation_il with | Some rel -> rel @@ -437,7 +443,8 @@ let prose_of_rules name mk_concl rules = let proses_of_rel mk_concl def = match def.it with - | Ast.RelD (rel_id, _, _, rules) -> + | Ast.RelD (rel_id, params, _, _, rules) -> + if params <> [] then (print_yet_rel def "proses_of_rel"; []) else let rules = List.filter (fun r -> not (is_hidden_rule r)) rules in let frees = (Il2al.Free.free_rules rules).varid in let unified_rules = Il2al.Unify.(unify_rules (init_env frees) rules) in @@ -463,7 +470,7 @@ type vrule_group = let rec extract_vrules def = match def.it with | Ast.RecD defs -> List.concat_map extract_vrules defs - | Ast.RelD (id, _, _, rules) when id.it = "Instr_ok" -> + | Ast.RelD (id, _, _, _, rules) when id.it = "Instr_ok" -> List.map (fun rule -> (id, rule)) rules | _ -> [] (* group typing rules that have same name *) @@ -538,7 +545,8 @@ let proses_of_defaultable_rel cmpop = proses_of_rel (fun rule -> (** 9. Others **) let proses_of_other_rel rel = match rel.it with - | Ast.RelD (rel_id, mixop, args, _) -> + | Ast.RelD (rel_id, params, mixop, args, _) -> + if params <> [] then (print_yet_rel rel "proses_of_other_rel"; []) else (match extract_rel_hint rel_id "prose" with | Some hint -> (* Relation with prose hint *) diff --git a/spectec/src/frontend/det.ml b/spectec/src/frontend/det.ml index c48903e05..840479ea3 100644 --- a/spectec/src/frontend/det.ml +++ b/spectec/src/frontend/det.ml @@ -186,7 +186,7 @@ and det_prem pr = (fun s -> String.concat ", " (Set.elements s.varid)) ) @@ fun _ -> match pr.it with - | RulePr (_x, _mixop, e) -> det_exp e + | RulePr (_x, _as, _mixop, e) -> det_exp e | IfPr e -> det_cond_exp e | LetPr (e1, _e2, _xs) -> det_exp e1 | ElsePr -> empty diff --git a/spectec/src/frontend/dim.ml b/spectec/src/frontend/dim.ml index 039eb0941..6e733fdb7 100644 --- a/spectec/src/frontend/dim.ml +++ b/spectec/src/frontend/dim.ml @@ -255,7 +255,9 @@ and check_sym dims ctx g = and check_prem dims ctx prem = match prem.it with - | RulePr (_x, _mixop, e) -> check_exp dims ctx e + | RulePr (_x, as_, _mixop, e) -> + List.iter (check_arg dims ctx) as_; + check_exp dims ctx e | IfPr e -> check_exp dims ctx e | ElsePr -> () | LetPr (e1, e2, _xs) -> @@ -308,7 +310,8 @@ let rec check_def d : dims = List.iter (check_param dims) ps; List.iter (check_inst dims) insts; check_dims dims - | RelD (_x, _mixop, t, rules) -> + | RelD (_x, ps, _mixop, t, rules) -> + List.iter (check_param dims) ps; check_typ dims [] t; List.iter (check_rule dims) rules; check_dims dims @@ -668,9 +671,10 @@ and annot_param dims p : param * occur = and annot_prem dims prem : prem * occur = let it, occur = match prem.it with - | RulePr (x, op, e) -> - let e', occur = annot_exp `Rhs dims e in - RulePr (x, op, e'), occur + | RulePr (x, as1, op, e) -> + let as1', occurs = List.split (List.map (annot_arg dims) as1) in + let e', occur2 = annot_exp `Rhs dims e in + RulePr (x, as1', op, e'), List.fold_left union occur2 occurs | IfPr e -> let e', occur = annot_exp `Rhs dims e in IfPr e', occur diff --git a/spectec/src/frontend/elab.ml b/spectec/src/frontend/elab.ml index 56b22c846..49199221a 100644 --- a/spectec/src/frontend/elab.ml +++ b/spectec/src/frontend/elab.ml @@ -1926,7 +1926,7 @@ and elab_prem env (pr : prem) : Il.prem list = | RulePr (id, e) -> let mixop, not, _, _ = find "relation" env.rels id in let es', _s = checkpoint (elab_exp_notation' env id e not) in - [Il.RulePr (id, mixop, tup_exp_nary' es' e.at) $ pr.at] + [Il.RulePr (id, [], mixop, tup_exp_nary' es' e.at) $ pr.at] | IfPr e -> let e' = checkpoint (elab_exp env e (Il.BoolT $ e.at)) in [Il.IfPr e' $ pr.at] @@ -2570,7 +2570,7 @@ let rec elab_def env (d : def) : Il.def list = let not = Mixop.apply mixop (List.map (fun t' -> "_" $ d.at, t') ts') in let t' = tup_typ' ts' t.at in env.rels <- bind "relation" env.rels x (mixop, not, t', []); - [Il.RelD (x, mixop, t', []) $ d.at] + [Il.RelD (x, [], mixop, t', []) $ d.at] @ elab_hintdef env (RelH (x, hints) $ d.at) | RuleD (x1, x2, e, prems) -> @@ -2669,9 +2669,9 @@ let populate_def env (d' : Il.def) : Il.def = | _ps, Family insts' -> Il.TypD (x, ps', insts') $ d'.at | _ps, _k -> d' ) - | Il.RelD (x, mixop, t', []) -> + | Il.RelD (x, ps', mixop, t', []) -> let _, _, _, rules' = find "relation" env.rels x in - Il.RelD (x, mixop, t', List.map snd rules') $ d'.at + Il.RelD (x, ps', mixop, t', List.map snd rules') $ d'.at | Il.DecD (x, ps', t', []) -> let _, _, clauses' = find "definition" env.defs x in Il.DecD (x, ps', t', List.map snd clauses') $ d'.at @@ -2767,5 +2767,5 @@ let elab_exp env (e : exp) (t : typ) : Il.exp = let elab_rel env (e : exp) (x : id) : Il.exp = let env' = local_env env in match elab_prem env' (RulePr (x, e) $ e.at) with - | [{it = Il.RulePr (_, _, e'); _}] -> e' + | [{it = Il.RulePr (_, _, _, e'); _}] -> e' | _ -> assert false diff --git a/spectec/src/il/ast.ml b/spectec/src/il/ast.ml index 2360d83af..184469fad 100644 --- a/spectec/src/il/ast.ml +++ b/spectec/src/il/ast.ml @@ -130,7 +130,7 @@ and quant = param and def = def' phrase and def' = | TypD of id * param list * inst list (* syntax type (family) *) - | RelD of id * mixop * typ * rule list (* relation *) + | RelD of id * param list * mixop * typ * rule list (* relation *) | DecD of id * param list * typ * clause list (* definition *) | GramD of id * param list * typ * prod list (* grammar *) | RecD of def list (* recursive *) @@ -154,7 +154,7 @@ and prod' = and prem = prem' phrase and prem' = - | RulePr of id * mixop * exp (* premise *) + | RulePr of id * arg list * mixop * exp (* premise *) | IfPr of exp (* side condition *) | LetPr of exp * exp * string list (* binding *) | ElsePr (* otherwise *) diff --git a/spectec/src/il/env.ml b/spectec/src/il/env.ml index c81136f0a..e29c73574 100644 --- a/spectec/src/il/env.ml +++ b/spectec/src/il/env.ml @@ -16,7 +16,7 @@ module Map = Map.Make(String) type var_def = typ type typ_def = param list * inst list -type rel_def = mixop * typ * rule list +type rel_def = param list * mixop * typ * rule list type def_def = param list * typ * clause list type gram_def = param list * typ * prod list @@ -100,7 +100,7 @@ let rec env_of_def env d = match d.it with | TypD (id, ps, insts) -> bind_typ env id (ps, insts) | DecD (id, ps, t, clauses) -> bind_def env id (ps, t, clauses) - | RelD (id, mixop, t, rules) -> bind_rel env id (mixop, t, rules) + | RelD (id, ps, mixop, t, rules) -> bind_rel env id (ps, mixop, t, rules) | GramD (id, ps, t, prods) -> bind_gram env id (ps, t, prods) | RecD ds -> List.fold_left env_of_def env ds | HintD _ -> env diff --git a/spectec/src/il/eq.ml b/spectec/src/il/eq.ml index fe6d6f54e..a814f50ef 100644 --- a/spectec/src/il/eq.ml +++ b/spectec/src/il/eq.ml @@ -142,8 +142,8 @@ and eq_sym g1 g2 = and eq_prem prem1 prem2 = match prem1.it, prem2.it with - | RulePr (x1, op1, e1), RulePr (x2, op2, e2) -> - eq_id x1 x2 && eq_mixop op1 op2 && eq_exp e1 e2 + | RulePr (x1, as1, op1, e1), RulePr (x2, as2, op2, e2) -> + eq_id x1 x2 && eq_list eq_arg as1 as2 && eq_mixop op1 op2 && eq_exp e1 e2 | IfPr e1, IfPr e2 -> eq_exp e1 e2 | IterPr (prem1, e1), IterPr (prem2, e2) -> eq_prem prem1 prem2 && eq_iterexp e1 e2 diff --git a/spectec/src/il/free.ml b/spectec/src/il/free.ml index 9820ccf7c..1d0809d9d 100644 --- a/spectec/src/il/free.ml +++ b/spectec/src/il/free.ml @@ -108,7 +108,7 @@ and free_sym g = and free_prem prem = match prem.it with - | RulePr (x, _op, e) -> free_relid x ++ free_exp e + | RulePr (x, as_, _op, e) -> free_relid x ++ free_args as_ ++ free_exp e | IfPr e -> free_exp e | LetPr (e1, e2, _) -> free_exp e1 ++ free_exp e2 | ElsePr -> empty @@ -182,20 +182,24 @@ let free_hintdef hd = let rec free_def d = match d.it with - | TypD (_x, ps, insts) -> free_params ps ++ free_list free_inst insts - | RelD (_x, _mixop, t, rules) -> free_typ t ++ free_list free_rule rules + | TypD (_x, ps, insts) -> + free_params ps ++ (free_list free_inst insts -- bound_params ps) + | RelD (_x, ps, _mixop, t, rules) -> + free_params ps ++ + (free_typ t ++ free_list free_rule rules -- bound_params ps) | DecD (_x, ps, t, clauses) -> - free_params ps ++ (free_typ t -- bound_params ps) - ++ free_list free_clause clauses + free_params ps ++ + (free_typ t ++ free_list free_clause clauses -- bound_params ps) | GramD (_x, ps, t, prods) -> - free_params ps ++ (free_typ t ++ free_list free_prod prods -- bound_params ps) + free_params ps ++ + (free_typ t ++ free_list free_prod prods -- bound_params ps) | RecD ds -> free_list free_def ds | HintD hd -> free_hintdef hd let rec bound_def d = match d.it with | TypD (x, _, _) -> bound_typid x - | RelD (x, _, _, _) -> bound_relid x + | RelD (x, _, _, _, _) -> bound_relid x | DecD (x, _, _, _) -> bound_defid x | GramD (x, _, _, _) -> bound_gramid x | RecD ds -> free_list bound_def ds diff --git a/spectec/src/il/iter.ml b/spectec/src/il/iter.ml index 44b7fb80b..a38d3352a 100644 --- a/spectec/src/il/iter.ml +++ b/spectec/src/il/iter.ml @@ -206,7 +206,7 @@ and sym g = and prem pr = visit_prem pr; match pr.it with - | RulePr (x, op, e) -> relid x; mixop op; exp e + | RulePr (x, as_, op, e) -> relid x; args as_; mixop op; exp e | IfPr e -> exp e | ElsePr -> () | IterPr (pr1, it) -> iterexp prem pr1 it @@ -261,7 +261,7 @@ let rec def d = visit_def d; match d.it with | TypD (x, ps, insts) -> typid x; params ps; list inst insts - | RelD (x, op, t, rules) -> relid x; mixop op; typ t; list rule rules + | RelD (x, ps, op, t, rules) -> relid x; params ps; mixop op; typ t; list rule rules | DecD (x, ps, t, clauses) -> defid x; params ps; typ t; list clause clauses | GramD (x, ps, t, prods) -> gramid x; params ps; typ t; list prod prods | RecD ds -> list def ds diff --git a/spectec/src/il/print.ml b/spectec/src/il/print.ml index 9657e871b..05aea3ef3 100644 --- a/spectec/src/il/print.ml +++ b/spectec/src/il/print.ml @@ -199,7 +199,7 @@ and string_of_iterexp (iter, xes) = and string_of_sym g = match g.it with - | VarG (x, args) -> string_of_id x ^ string_of_args args + | VarG (x, as1) -> string_of_id x ^ string_of_args as1 | NumG n -> Printf.sprintf "0x%02X" n | TextG t -> "\"" ^ String.escaped t ^ "\"" | EpsG -> "eps" @@ -214,8 +214,9 @@ and string_of_sym g = and string_of_prem prem = match prem.it with - | RulePr (x, mixop, e) -> - string_of_id x ^ ": " ^ string_of_mixop mixop ^ string_of_exp_args e + | RulePr (x, as1, mixop, e) -> + string_of_id x ^ string_of_args as1 ^ ": " ^ + string_of_mixop mixop ^ string_of_exp_args e | IfPr e -> "if " ^ string_of_exp e | LetPr (e1, e2, xs) -> let xs' = List.map (fun x -> x $ no_region) xs in @@ -309,8 +310,8 @@ let rec string_of_def ?(suppress_pos = false) d = | TypD (x, ps, insts) -> pre ^ "syntax " ^ string_of_id x ^ string_of_params ps ^ concat "\n" (List.map (string_of_inst ~suppress_pos x) insts) ^ "\n" - | RelD (x, mixop, t, rules) -> - pre ^ "relation " ^ string_of_id x ^ ": " ^ + | RelD (x, ps, mixop, t, rules) -> + pre ^ "relation " ^ string_of_id x ^ string_of_params ps ^ ": " ^ string_of_mixop mixop ^ string_of_typ_args t ^ concat "\n" (List.map (string_of_rule ~suppress_pos) rules) ^ "\n" | DecD (x, ps, t, clauses) -> diff --git a/spectec/src/il/subst.ml b/spectec/src/il/subst.ml index d2707a920..885ed05e4 100644 --- a/spectec/src/il/subst.ml +++ b/spectec/src/il/subst.ml @@ -231,7 +231,7 @@ and subst_sym s g = and subst_prem s prem = (match prem.it with - | RulePr (x, op, e) -> RulePr (x, op, subst_exp s e) + | RulePr (x, as_, op, e) -> RulePr (x, subst_args s as_, op, subst_exp s e) | IfPr e -> IfPr (subst_exp s e) | ElsePr -> ElsePr | IterPr (prem1, iterexp) -> diff --git a/spectec/src/il/valid.ml b/spectec/src/il/valid.ml index f63afbc41..7a0fe7eb6 100644 --- a/spectec/src/il/valid.ml +++ b/spectec/src/il/valid.ml @@ -588,10 +588,11 @@ and valid_sym env g : typ = and valid_prem env prem = Debug.(log_in_at "il.valid_prem" prem.at (fun _ -> il_prem prem)); match prem.it with - | RulePr (x, mixop, e) -> - let mixop', t, _rules = Env.find_rel env x in + | RulePr (x, as_, mixop, e) -> + let ps, mixop', t, _rules = Env.find_rel env x in assert (Mixop.eq mixop mixop'); - valid_expmix env mixop e (mixop, t) e.at + let s = valid_args env as_ ps Subst.empty prem.at in + valid_expmix env mixop e (mixop, Subst.subst_typ s t) e.at | IfPr e -> valid_exp env e (BoolT $ e.at) | LetPr (e1, e2, xs) -> @@ -725,9 +726,10 @@ let infer_def env d : Env.t = | TypD (x, ps, _insts) -> let _env' = valid_params env ps in Env.bind_typ env x (ps, []) - | RelD (x, mixop, t, rules) -> - valid_typ env t; - Env.bind_rel env x (mixop, t, rules) + | RelD (x, ps, mixop, t, rules) -> + let env' = valid_params env ps in + valid_typ env' t; + Env.bind_rel env x (ps, mixop, t, rules) | DecD (x, ps, t, clauses) -> let env' = valid_params env ps in valid_typ env' t; @@ -747,10 +749,11 @@ let rec valid_def env d : Env.t = let env' = valid_params env ps in List.iter (valid_inst env' ps) insts; Env.bind_typ env x (ps, insts); - | RelD (x, mixop, t, rules) -> - valid_typcase env (mixop, (t, [], []), []); - List.iter (valid_rule env mixop t) rules; - Env.bind_rel env x (mixop, t, rules) + | RelD (x, ps, mixop, t, rules) -> + let env' = valid_params env ps in + valid_typcase env' (mixop, (t, [], []), []); + List.iter (valid_rule env' mixop t) rules; + Env.bind_rel env x (ps, mixop, t, rules) | DecD (x, ps, t, clauses) -> let env' = valid_params env ps in valid_typ env' t; diff --git a/spectec/src/il2al/animate.ml b/spectec/src/il2al/animate.ml index 5a19fe461..c13157538 100644 --- a/spectec/src/il2al/animate.ml +++ b/spectec/src/il2al/animate.ml @@ -72,7 +72,7 @@ let rec rewrite_iterexp' iterexp pr = { Il_walk.base_transformer with transform_exp = rewrite iterexp } in let new_ = Il_walk.transform_exp transformer in match pr with - | RulePr (id, mixop, e) -> RulePr (id, mixop, new_ e) + | RulePr (id, args, mixop, e) -> RulePr (id, args, mixop, new_ e) | IfPr e -> IfPr (new_ e) | LetPr (e1, e2, ids) -> let new_ids = List.map (rewrite_id iterexp) ids in @@ -102,7 +102,7 @@ let rec recover_iterexp' iterexp pr = { Il_walk.base_transformer with transform_exp = recover iterexp } in let new_ = Il_walk.transform_exp transformer in match pr with - | RulePr (id, mixop, e) -> RulePr (id, mixop, new_ e) + | RulePr (id, args, mixop, e) -> RulePr (id, args, mixop, new_ e) | IfPr e -> IfPr (new_ e) | LetPr (e1, e2, ids) -> let new_ids = List.map (recover_id iterexp) ids in @@ -293,7 +293,7 @@ let rec rows_of_prem vars len i p = | LetPr (_, _, targets) -> let covering_vars = List.filter_map (index_of len vars) targets in [ Assign targets, p, [i] @ covering_vars ] - | RulePr (_, _, { it = TupE args; _ }) -> + | RulePr (_, _, _, { it = TupE args; _ }) -> (* Assumpton: the only possible assigned-value is the last arg (i.e. ... |- lhs ) *) let _, l = Util.Lib.List.split_last args in let frees = (free_exp_list l) in @@ -364,9 +364,9 @@ let animate_clause c = match c.it with (* Animate defs *) let rec animate_def d = match d.it with - | RelD (id, mixop, t, rules) -> + | RelD (id, ps, mixop, t, rules) -> let rules' = List.map animate_rule rules in - RelD (id, mixop, t, rules') $ d.at + RelD (id, ps, mixop, t, rules') $ d.at | DecD (id, t1, t2, clauses) -> let new_clauses = List.map animate_clause clauses in DecD (id, t1, t2, new_clauses) $ d.at diff --git a/spectec/src/il2al/encode.ml b/spectec/src/il2al/encode.ml index 238ef53b7..149f1ae9b 100644 --- a/spectec/src/il2al/encode.ml +++ b/spectec/src/il2al/encode.ml @@ -177,9 +177,9 @@ let encode_rule r = (* Encode defs *) let rec encode_def d = match d.it with - | RelD (id, mixop, t, rules) -> + | RelD (id, ps, mixop, t, rules) -> let rules' = List.map encode_rule rules in - RelD (id, mixop, t, rules') $ d.at + RelD (id, ps, mixop, t, rules') $ d.at | RecD ds -> RecD (List.map encode_def ds) $ d.at | DecD _ | TypD _ | GramD _ | HintD _ -> d diff --git a/spectec/src/il2al/free.ml b/spectec/src/il2al/free.ml index 273b3e6fa..af0f4029f 100644 --- a/spectec/src/il2al/free.ml +++ b/spectec/src/il2al/free.ml @@ -79,8 +79,9 @@ let rec free_prem ignore_listN prem = let f = free_exp ignore_listN in let fp = free_prem ignore_listN in let fi = free_iterexp ignore_listN in + let fa = free_arg ignore_listN in match prem.it with - | RulePr (_id, _op, e) -> f e + | RulePr (_id, args, _op, e) -> free_list fa args ++ f e | IfPr e -> f e | LetPr (e1, e2, _ids) -> f e1 ++ f e2 | ElsePr -> empty diff --git a/spectec/src/il2al/il_walk.ml b/spectec/src/il2al/il_walk.ml index 8c8ddf246..90d5c842e 100644 --- a/spectec/src/il2al/il_walk.ml +++ b/spectec/src/il2al/il_walk.ml @@ -70,7 +70,7 @@ and transform_arg t a = and transform_prem t p = let f = t.transform_prem in let it = match p.it with - | RulePr (id, op, e) -> RulePr (id, op, transform_exp t e) + | RulePr (id, as1, op, e) -> RulePr (id, List.map (transform_arg t) as1, op, transform_exp t e) | IfPr e -> IfPr (transform_exp t e) | LetPr (e1, e2, ss) -> LetPr (transform_exp t e1, transform_exp t e2, ss) | ElsePr -> ElsePr diff --git a/spectec/src/il2al/preprocess.ml b/spectec/src/il2al/preprocess.ml index 6a79fa26a..8c44dc02a 100644 --- a/spectec/src/il2al/preprocess.ml +++ b/spectec/src/il2al/preprocess.ml @@ -27,8 +27,8 @@ let transform_rulepr_clause (clause: clause) : clause = let transform_rulepr_def (def: def) : def = match def.it with - | RelD (id, mixop, t, rules) -> - RelD (id, mixop, t, List.map transform_rulepr_rule rules) $ def.at + | RelD (id, ps, mixop, t, rules) -> + RelD (id, ps, mixop, t, List.map transform_rulepr_rule rules) $ def.at | DecD (id, ps, t, clauses) -> DecD (id, ps, t, List.map transform_rulepr_clause clauses) $ def.at | _ -> def @@ -85,8 +85,8 @@ let remove_or_clause clause = let remove_or def = match def.it with - | RelD (id, mixop, typ, rules) -> - RelD (id, mixop, typ, List.concat_map remove_or_rule rules) $ def.at + | RelD (id, params, mixop, typ, rules) -> + RelD (id, params, mixop, typ, List.concat_map remove_or_rule rules) $ def.at | DecD (id, params, typ, clauses) -> DecD (id, params, typ, List.concat_map remove_or_clause clauses) $ def.at | _ -> def @@ -116,8 +116,8 @@ let is_block_context_rule rule = | _ -> false let remove_block_context def = match def.it with - | RelD (id, mixop, typ, rules) -> - RelD (id, mixop, typ, Util.Lib.List.filter_not is_block_context_rule rules) $ def.at + | RelD (id, params, mixop, typ, rules) -> + RelD (id, params, mixop, typ, Util.Lib.List.filter_not is_block_context_rule rules) $ def.at | _ -> def @@ -128,7 +128,7 @@ let rec preprocess_prem prem = prem |> preprocess_prem |> List.map (fun new_prem -> IterPr (new_prem, iterexp) $ prem.at) - | RulePr (id, mixop, exp) -> + | RulePr (id, _args, mixop, exp) -> let lhs_rhs_opt = match Xl.Mixop.flatten mixop, exp.it with (* `id`: |- `lhs` : `rhs` *) @@ -182,9 +182,9 @@ let preprocess_def (def: def) : def = match def'.it with | TypD (id, ps, insts) -> Al.Valid.il_env := Env.bind_typ !Al.Valid.il_env id (ps, insts); def' - | RelD (id, mixop, t, rules) -> - Al.Valid.il_env := Env.bind_rel !Al.Valid.il_env id (mixop, t, rules); - RelD (id, mixop, t, List.map preprocess_rule rules) $ def.at + | RelD (id, ps, mixop, t, rules) -> + Al.Valid.il_env := Env.bind_rel !Al.Valid.il_env id (ps, mixop, t, rules); + RelD (id, ps, mixop, t, List.map preprocess_rule rules) $ def.at | DecD (id, ps, t, clauses) -> Al.Valid.il_env := Env.bind_def !Al.Valid.il_env id (ps, t, clauses); DecD (id, ps, t, List.map preprocess_clause clauses) $ def.at @@ -204,14 +204,14 @@ let preprocess (il: script) : rule_def list * helper_def list = let is_al_target def = match def.it with | DecD (id, _, _, _) when id.it = "utf8" -> None - | RelD (id, mixop, t, rules) when List.mem id.it [ "Step"; "Step_read"; "Step_pure" ] -> + | RelD (id, ps, mixop, t, rules) when List.mem id.it [ "Step"; "Step_read"; "Step_pure" ] -> (* HARDCODE: Exclude administrative rules *) let filter_rule rule = ["pure"; "read"; "trap"; "ctxt"] |> List.mem (name_of_rule rule) |> not in - Some (RelD (id, mixop, t, List.filter filter_rule rules) $ def.at) + Some (RelD (id, ps, mixop, t, List.filter filter_rule rules) $ def.at) | RelD _ -> None | _ -> Some def in diff --git a/spectec/src/il2al/translate.ml b/spectec/src/il2al/translate.ml index e483cdaee..333fdbe93 100644 --- a/spectec/src/il2al/translate.ml +++ b/spectec/src/il2al/translate.ml @@ -978,7 +978,9 @@ and translate_prem prem = | Il.LetPr (exp1, exp2, ids) -> init_lhs_id (); translate_letpr exp1 exp2 ids - | Il.RulePr (id, _, exp) -> translate_rulepr id exp + | Il.RulePr (id, args, _, exp) -> + if args <> [] then error prem.at "Cannot handle rule arguments"; + translate_rulepr id exp | Il.IterPr (pr, iterexp) -> translate_iterpr pr iterexp diff --git a/spectec/src/il2al/unify.ml b/spectec/src/il2al/unify.ml index fba8cba1c..4db51215a 100644 --- a/spectec/src/il2al/unify.ml +++ b/spectec/src/il2al/unify.ml @@ -409,7 +409,7 @@ let rec group_rules : (id * rule) list -> rule_def list = function (* extract reduction rules for wasm instructions *) let extract_rules def = match def.it with - | RelD (id, _, _, rules) -> List.map (fun rule -> id, rule) rules + | RelD (id, _, _, _, rules) -> List.map (fun rule -> id, rule) rules | _ -> [] let unify_ctxt (env: env) (input_vars: string list) (clauses: rule_clause list) : rule_clause list = diff --git a/spectec/src/middlend/sideconditions.ml b/spectec/src/middlend/sideconditions.ml index 7d9c3f114..5000d5676 100644 --- a/spectec/src/middlend/sideconditions.ml +++ b/spectec/src/middlend/sideconditions.ml @@ -129,7 +129,7 @@ and t_arg env arg = match arg.it with let rec t_prem env prem = (match prem.it with - | RulePr (_, _, exp) -> t_exp env exp + | RulePr (_, args, _, exp) -> List.concat_map (t_arg env) args @ t_exp env exp | IfPr e -> t_exp env e | LetPr (e1, e2, _) -> t_exp env e1 @ t_exp env e2 | ElsePr -> [] @@ -165,27 +165,30 @@ let reduce_prems prems = prems |> Util.Lib.List.filter_not is_true |> Util.Lib.List.nub implies -let t_rule' = function +let t_params env = + List.fold_left (fun env param -> + match param.it with + | ExpP (v, t) -> Env.add v.it t env + | TypP _ | DefP _ | GramP _ -> error param.at "unexpected type argument in rule" + ) env + +let t_rule' env = function | RuleD (id, params, mixop, exp, prems) -> - let env = List.fold_left (fun env param -> - match param.it with - | ExpP (v, t) -> Env.add v.it t env - | TypP _ | DefP _ | GramP _ -> error param.at "unexpected type argument in rule" - ) Env.empty params - in - let prems' = t_prems env prems in - let extra_prems = t_exp env exp in + let env' = t_params env params in + let prems' = t_prems env' prems in + let extra_prems = t_exp env' exp in let reduced_prems = reduce_prems (extra_prems @ prems') in RuleD (id, params, mixop, exp, reduced_prems) -let t_rule x = { x with it = t_rule' x.it } +let t_rule env x = { x with it = t_rule' env x.it } -let t_rules = List.map t_rule +let t_rules env = List.map (t_rule env) let rec t_def' = function | RecD defs -> RecD (List.map t_def defs) - | RelD (id, mixop, typ, rules) -> - RelD (id, mixop, typ, t_rules rules) + | RelD (id, params, mixop, typ, rules) -> + let env = t_params Env.empty params in + RelD (id, params, mixop, typ, t_rules env rules) | def -> def and t_def x = { x with it = t_def' x.it } diff --git a/spectec/src/middlend/sub.ml b/spectec/src/middlend/sub.ml index 1db340d05..1aa0fe5d9 100644 --- a/spectec/src/middlend/sub.ml +++ b/spectec/src/middlend/sub.ml @@ -214,7 +214,7 @@ and t_args env = List.map (t_arg env) and t_params env = List.map (t_param env) and t_prem' env = function - | RulePr (id, mixop, exp) -> RulePr (id, mixop, t_exp env exp) + | RulePr (id, args, mixop, exp) -> RulePr (id, t_args env args, mixop, t_exp env exp) | IfPr e -> IfPr (t_exp env e) | LetPr (e1, e2, ids) -> LetPr (t_exp env e1, t_exp env e2, ids) | ElsePr -> ElsePr @@ -260,8 +260,8 @@ let rec t_def' env = function DecD (id, t_params env params, typ, t_clauses env clauses) | TypD (id, params, insts) -> TypD (id, t_params env params, t_insts env insts) - | RelD (id, mixop, typ, rules) -> - RelD (id, mixop, t_typ env typ, List.map (t_rule env) rules) + | RelD (id, params, mixop, typ, rules) -> + RelD (id, t_params env params, mixop, t_typ env typ, List.map (t_rule env) rules) | GramD (id, params, typ, prods) -> GramD (id, t_params env params, typ, t_prods env prods) | HintD _ as def -> def diff --git a/spectec/src/middlend/totalize.ml b/spectec/src/middlend/totalize.ml index c9813e737..ade0ec336 100644 --- a/spectec/src/middlend/totalize.ml +++ b/spectec/src/middlend/totalize.ml @@ -152,7 +152,7 @@ and t_args env = List.map (t_arg env) and t_params env = List.map (t_param env) and t_prem' env = function - | RulePr (id, mixop, exp) -> RulePr (id, mixop, t_exp env exp) + | RulePr (id, args, mixop, exp) -> RulePr (id, t_args env args, mixop, t_exp env exp) | IfPr e -> IfPr (t_exp env e) | LetPr (e1, e2, ids) -> LetPr (t_exp env e1, t_exp env e2, ids) | ElsePr -> ElsePr @@ -216,8 +216,8 @@ let rec t_def' env = function DecD (id, params', typ', clauses') | TypD (id, params, insts) -> TypD (id, t_params env params, t_insts env insts) - | RelD (id, mixop, typ, rules) -> - RelD (id, mixop, t_typ env typ, List.map (t_rule env) rules) + | RelD (id, params, mixop, typ, rules) -> + RelD (id, t_params env params, mixop, t_typ env typ, List.map (t_rule env) rules) | GramD (id, params, typ, prods) -> GramD (id, t_params env params, typ, List.map (t_prod env) prods) | HintD _ as def -> def diff --git a/spectec/src/middlend/unthe.ml b/spectec/src/middlend/unthe.ml index 7f4e02463..fb2155f82 100644 --- a/spectec/src/middlend/unthe.ml +++ b/spectec/src/middlend/unthe.ml @@ -196,8 +196,7 @@ let rec t_prem n : prem -> eqns * prem = phrase t_prem' n and t_prem' n prem : eqns * prem' = match prem with - | RulePr (a, b, exp) -> - unary t_exp n exp (fun exp' -> RulePr (a, b, exp')) + | RulePr (a, args, b, exp) -> binary (fun n x -> t_list t_arg n x Fun.id) t_exp n (args, exp) (fun (args', exp') -> RulePr (a, args', b, exp')) | IfPr e -> unary t_exp n e (fun e' -> IfPr e') | LetPr (e1, e2, ids) -> binary t_exp t_exp n (e1, e2) (fun (e1', e2') -> LetPr (e1', e2', ids)) | ElsePr -> [], prem @@ -222,7 +221,7 @@ let t_rule x = { x with it = t_rule' x.it } let rec t_def' = function | RecD defs -> RecD (List.map t_def defs) - | RelD (id, mixop, typ, rules) -> RelD (id, mixop, typ, List.map t_rule rules) + | RelD (id, params, mixop, typ, rules) -> RelD (id, params, mixop, typ, List.map t_rule rules) | def -> def and t_def x = { x with it = t_def' x.it } From ea05fabde30fda71131f9362edcf00212cd21cce Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Tue, 27 Jan 2026 13:34:34 +0100 Subject: [PATCH 050/235] Surface relation parameters in EL --- spectec/doc/Language.md | 12 +++++----- spectec/src/backend-latex/render.ml | 16 ++++++------- spectec/src/backend-prose/prose_util.ml | 4 ++-- spectec/src/backend-splice/splice.ml | 4 ++-- spectec/src/el/ast.ml | 6 ++--- spectec/src/el/eq.ml | 3 ++- spectec/src/el/free.ml | 8 +++---- spectec/src/el/iter.ml | 12 +++++----- spectec/src/el/print.ml | 11 +++++---- spectec/src/el/subst.ml | 6 ++--- spectec/src/frontend/elab.ml | 32 +++++++++++++++---------- spectec/src/frontend/parser.mly | 15 ++++++++---- 12 files changed, 72 insertions(+), 57 deletions(-) diff --git a/spectec/doc/Language.md b/spectec/doc/Language.md index 24fd7b6ce..dfabc5fbc 100644 --- a/spectec/doc/Language.md +++ b/spectec/doc/Language.md @@ -334,7 +334,7 @@ premise ::= "var" id ":" typ local variable declaration "if" exp side condition "otherwise" fallback side condition - relid ":" exp relational premise + relid args ":" exp relational premise "(" premise ")" iter* iterated relational premise ``` @@ -1098,8 +1098,8 @@ While functions are used to algorithmically compute on a meta-level, ``` def ::= - "relation" relid ":" nottyp relation declaration - "rule" relid subid* ":" exp ("--" premise)* rule + "relation" relid params ":" nottyp relation declaration + "rule" relid params subid* ":" exp ("--" premise)* rule ``` Relations are declared with a type that specifies their notation, @@ -1554,8 +1554,8 @@ def ::= "syntax" varid params hint* syntax declaration "syntax" varid subid* params hint* "=" deftyp syntax definition "grammar" gramid subid* params ":" typ hint* "=" gram grammar definition - "relation" relid hint* ":" nottyp relation declaration - "rule" relid subid* hint* ":" exp ("--" premise)* rule + "relation" relid params hint* ":" nottyp relation declaration + "rule" relid params subid* hint* ":" exp ("--" premise)* rule "var" varid ":" typ hint* variable declaration "def" "$" defid params ":" typ hint* function declaration "def" "$" defid args "=" exp ("--" premise)* function clause @@ -1568,7 +1568,7 @@ def ::= premise ::= "var" id ":" typ local variable declaration - relid ":" exp relational premise + relid args ":" exp relational premise "if" exp side condition "otherwise" fallback side condition "(" premise ")" iter* iterated relational premise diff --git a/spectec/src/backend-latex/render.ml b/spectec/src/backend-latex/render.ml index b91719144..7b0549a6e 100644 --- a/spectec/src/backend-latex/render.ml +++ b/spectec/src/backend-latex/render.ml @@ -335,7 +335,7 @@ let env_def env d : (id * typ list) list = env_macro env.macro_gram id1; env_hintdef env (GramH (id1, id2, hints) $ d.at); [] - | RelD (id, t, hints) -> + | RelD (id, _ps, t, hints) -> env_hintdef env (RelH (id, hints) $ d.at); env_typcon env id ((t, []), hints); [] @@ -1448,7 +1448,7 @@ and render_fieldname env atom = and render_prem env prem = match prem.it with | VarPr _ -> assert false - | RulePr (_id, e) -> render_exp env e + | RulePr (_id, _ps, e) -> render_exp env e | IfPr e -> render_exp env e | ElsePr -> error prem.at "misplaced `otherwise` premise" | IterPr ({it = IterPr _; _} as prem', iter) -> @@ -1760,7 +1760,7 @@ let render_gramdef env d : row list = let render_ruledef_infer env d = match d.it with - | RuleD (id1, id2, e, prems) -> + | RuleD (id1, _ps, id2, e, prems) -> let prems' = filter_nl_list (function {it = VarPr _; _} -> false | _ -> true) prems in "\\frac{\n" ^ (if has_nl prems then "\\begin{array}{@{}c@{}}\n" else "") ^ @@ -1774,7 +1774,7 @@ let render_ruledef_infer env d = let render_ruledef env d : row list = match d.it with - | RuleD (id1, id2, e, prems) -> + | RuleD (id1, _ps, id2, e, prems) -> let e1, op, e2 = match e.it with | InfixE (e1, op, ({it = SeqE (e21::es22); _} as e2)) when Atom.is_sub op -> @@ -1837,10 +1837,10 @@ let rec render_defs env = function let sp_deco = if env.deco_gram then sp else "@{}" in render_table env sp ["l"; sp_deco ^ "r"; "r"; "l"; "@{}l"; "@{}l"; "@{}l"] 1 3 (render_sep_defs (render_gramdef env) ds') - | RelD (_, t, _) -> + | RelD (_, _ps, t, _) -> "\\boxed{" ^ render_typ env t ^ "}" ^ (if ds' = [] then "" else " \\; " ^ render_defs env ds') - | RuleD (id1, _, _, _) -> + | RuleD (id1, _, _, _, _) -> if Map.mem id1.it !(env.tab_rel) then (* Columns: decorator & lhs & op & rhs & premise *) let sp_deco = if env.deco_rule then sp else "@{}" in @@ -1884,7 +1884,7 @@ let rec split_tabdefs id tabdefs = function | [] -> List.rev tabdefs, [] | d::ds -> match d.it with - | RuleD (id1, _, _, _) when id1.it = id -> + | RuleD (id1, _, _, _, _) when id1.it = id -> split_tabdefs id (d::tabdefs) ds | _ -> List.rev tabdefs, d::ds @@ -1910,7 +1910,7 @@ let rec render_script env = function | RelD _ -> "$" ^ render_def env d ^ "$\n\n" ^ render_script env ds - | RuleD (id1, _, _, _) -> + | RuleD (id1, _, _, _, _) -> if Map.mem id1.it !(env.tab_rel) then let tabdefs, ds' = split_tabdefs id1.it [d] ds in "$$\n" ^ render_defs env tabdefs ^ "\n$$\n\n" ^ diff --git a/spectec/src/backend-prose/prose_util.ml b/spectec/src/backend-prose/prose_util.ml index c12e5f9d8..87929bd5d 100644 --- a/spectec/src/backend-prose/prose_util.ml +++ b/spectec/src/backend-prose/prose_util.ml @@ -125,7 +125,7 @@ let env_def d = | GramD (id1, id2, _ps, t, _gram, hints) -> env_hintdef (GramH (id1, id2, hints) $ d.at); env_typ id1 t; - | RelD (id, t, hints) -> + | RelD (id, _ps, t, hints) -> env_hintdef (RelH (id, hints) $ d.at); env_typ id t; | VarD (id, t, hints) -> @@ -148,7 +148,7 @@ let find_relation name = let open El.Ast in List.find_opt (fun def -> match def.it with - | RelD (id, _, _) when id.it = name -> true + | RelD (id, _, _, _) when id.it = name -> true | _ -> false ) !Langs.el diff --git a/spectec/src/backend-splice/splice.ml b/spectec/src/backend-splice/splice.ml index 4704a157b..6499e915c 100644 --- a/spectec/src/backend-splice/splice.ml +++ b/spectec/src/backend-splice/splice.ml @@ -85,9 +85,9 @@ let env_def env def = let grammar = Map.find id1.it env.gram in let gfragments = grammar.gfragments @ [(id2.it, def, ref 0)] in env.gram <- Map.add id1.it {grammar with gfragments} env.gram - | RelD (id, _, _) -> + | RelD (id, _, _, _) -> env.rel <- Map.add id.it {rdef = def; rules = []} env.rel - | RuleD (id1, id2, _, _) -> + | RuleD (id1, _, id2, _, _) -> let relation = Map.find id1.it env.rel in let rules = relation.rules @ [(id2.it, def, ref 0)] in env.rel <- Map.add id1.it {relation with rules} env.rel diff --git a/spectec/src/el/ast.ml b/spectec/src/el/ast.ml index 89291e880..60adea94f 100644 --- a/spectec/src/el/ast.ml +++ b/spectec/src/el/ast.ml @@ -173,8 +173,8 @@ and def' = | FamD of id * param list * hint list (* `syntax` typid params hint* *) | TypD of id * id * arg list * typ * hint list (* `syntax` typid args hint* `=` typ *) | GramD of id * id * param list * typ * gram * hint list (* `grammar` gramid params hint* `:` type `=` gram *) - | RelD of id * typ * hint list (* `relation` relid `:` typ hint* *) - | RuleD of id * id * exp * prem nl_list (* `rule` relid ruleid? `:` exp (`--` prem)* *) + | RelD of id * param list * typ * hint list (* `relation` relid params `:` typ hint* *) + | RuleD of id * param list * id * exp * prem nl_list (* `rule` relid params ruleid? `:` exp (`--` prem)* *) | VarD of id * typ * hint list (* `var` varid `:` typ *) | DecD of id * param list * typ * hint list (* `def` `$` defid params `:` typ hint* *) | DefD of id * arg list * exp * prem nl_list (* `def` `$` defid args `=` exp (`--` prem)* *) @@ -184,7 +184,7 @@ and def' = and prem = prem' phrase and prem' = | VarPr of id * typ (* `var` id `:` typ *) - | RulePr of id * exp (* ruleid `:` exp *) + | RulePr of id * arg list * exp (* ruleid args `:` exp *) | IfPr of exp (* `if` exp *) | ElsePr (* `otherwise` *) | IterPr of prem * iter (* prem iter *) diff --git a/spectec/src/el/eq.ml b/spectec/src/el/eq.ml index ddeffdb3f..e9d935593 100644 --- a/spectec/src/el/eq.ml +++ b/spectec/src/el/eq.ml @@ -139,7 +139,8 @@ and eq_path p1 p2 = and eq_prem prem1 prem2 = match prem1.it, prem2.it with | VarPr (id1, t1), VarPr (id2, t2) -> eq_id id1 id2 && eq_typ t1 t2 - | RulePr (id1, e1), RulePr (id2, e2) -> eq_id id1 id2 && eq_exp e1 e2 + | RulePr (id1, as1, e1), RulePr (id2, as2, e2) -> + eq_id id1 id2 && eq_list eq_arg as1 as2 && eq_exp e1 e2 | IfPr e1, IfPr e2 -> eq_exp e1 e2 | IterPr (prem11, iter1), IterPr (prem21, iter2) -> eq_prem prem11 prem21 && eq_iter iter1 iter2 diff --git a/spectec/src/el/free.ml b/spectec/src/el/free.ml index 793da3250..738b02ddc 100644 --- a/spectec/src/el/free.ml +++ b/spectec/src/el/free.ml @@ -125,7 +125,7 @@ and free_gram gram = and free_prem prem = match prem.it with | VarPr (id, t) -> free_varid id ++ free_typ t - | RulePr (id, e) -> free_relid id ++ free_exp e + | RulePr (id, as_, e) -> free_relid id ++ free_args as_ ++ free_exp e | IfPr e -> free_exp e | ElsePr -> empty | IterPr (prem1, iter) -> free_prem prem1 ++ free_iter iter @@ -172,9 +172,9 @@ let free_def d = free_params ps ++ (free_typ t ++ free_gram gram -- bound_params ps -- impl_bound_typ ps t) | VarD (_id, t, _hints) -> free_typ t | SepD -> empty - | RelD (_id, t, _hints) -> free_typ t - | RuleD (id1, _id2, e, prems) -> - free_relid id1 ++ free_exp e ++ free_prems prems + | RelD (_id, ps, t, _hints) -> free_typ t -- bound_params ps + | RuleD (id1, ps, _id2, e, prems) -> + free_relid id1 ++ (free_exp e ++ free_prems prems -- bound_params ps) | DecD (_id, ps, t, _hints) -> free_params ps ++ free_typ t -- bound_params ps | DefD (id, as_, e, prems) -> diff --git a/spectec/src/el/iter.ml b/spectec/src/el/iter.ml index d060083f8..7da409a80 100644 --- a/spectec/src/el/iter.ml +++ b/spectec/src/el/iter.ml @@ -164,7 +164,7 @@ and prem pr = visit_prem pr; match pr.it with | VarPr (x, t) -> varid x; typ t - | RulePr (x, e) -> relid x; exp e + | RulePr (x, as_, e) -> relid x; args as_; exp e | IfPr e -> exp e | ElsePr -> () | IterPr (pr1, it) -> prem pr1; iter it @@ -236,8 +236,8 @@ let def d = | GramD (x1, x2, ps, t, gr, hs) -> typid x1; ruleid x2; params ps; typ t; gram gr; hints hs | VarD (x, t, hs) -> varid x; typ t; hints hs | SepD -> () - | RelD (x, t, hs) -> relid x; typ t; hints hs - | RuleD (x1, x2, e, prs) -> relid x1; ruleid x2; exp e; prems prs + | RelD (x, ps, t, hs) -> relid x; params ps; typ t; hints hs + | RuleD (x1, ps, x2, e, prs) -> relid x1; params ps; ruleid x2; exp e; prems prs | DecD (x, ps, t, hs) -> defid x; params ps; typ t; hints hs | DefD (x, as_, e, prs) -> defid x; args as_; exp e; prems prs | HintD hd -> hintdef hd @@ -359,7 +359,7 @@ and clone_gram gram = and clone_prem pr = (match pr.it with | VarPr (x, t) -> VarPr (x, clone_typ t) - | RulePr (x, e) -> RulePr (x, clone_exp e) + | RulePr (x, as_, e) -> RulePr (x, List.map clone_arg as_, clone_exp e) | IfPr e -> IfPr (clone_exp e) | ElsePr -> ElsePr | IterPr (pr1, it) -> IterPr (clone_prem pr1, clone_iter it) @@ -400,8 +400,8 @@ let clone_def d = | GramD (x1, x2, ps, t, gr, hs) -> GramD (x1, x2, List.map clone_param ps, clone_typ t, clone_gram gr, List.map clone_hint hs) | VarD (x, t, hs) -> VarD (x, clone_typ t, List.map clone_hint hs) | SepD -> SepD - | RelD (x, t, hs) -> RelD (x, clone_typ t, List.map clone_hint hs) - | RuleD (x1, x2, e, prs) -> RuleD (x1, x2, clone_exp e, Convert.map_nl_list clone_prem prs) + | RelD (x, ps, t, hs) -> RelD (x, List.map clone_param ps, clone_typ t, List.map clone_hint hs) + | RuleD (x1, ps, x2, e, prs) -> RuleD (x1, List.map clone_param ps, x2, clone_exp e, Convert.map_nl_list clone_prem prs) | DecD (x, ps, t, hs) -> DecD (x, List.map clone_param ps, clone_typ t, List.map clone_hint hs) | DefD (x, as_, e, prs) -> DefD (x, List.map clone_arg as_, clone_exp e, Convert.map_nl_list clone_prem prs) | HintD hd -> HintD (clone_hintdef hd) diff --git a/spectec/src/el/print.ml b/spectec/src/el/print.ml index c9858920b..5e430540e 100644 --- a/spectec/src/el/print.ml +++ b/spectec/src/el/print.ml @@ -263,7 +263,8 @@ and string_of_gram gram = and string_of_prem prem = match prem.it with | VarPr (id, t) -> "var " ^ string_of_varid id ^ ": " ^ string_of_typ t - | RulePr (id, e) -> string_of_relid id ^ ": " ^ string_of_exp e + | RulePr (id, as_, e) -> + string_of_relid id ^ string_of_args as_ ^ ": " ^ string_of_exp e | IfPr e -> "if " ^ string_of_exp e | ElsePr -> "otherwise" | IterPr ({it = IterPr _; _} as prem', iter) -> @@ -307,10 +308,10 @@ let string_of_def d = "grammar " ^ string_of_gramid id1 ^ string_of_ruleid id2 ^ string_of_params ps ^ " : " ^ string_of_typ t ^ " = " ^ string_of_gram gram - | RelD (id, t, _hints) -> - "relation " ^ string_of_relid id ^ ": " ^ string_of_typ t - | RuleD (id1, id2, e, prems) -> - "rule " ^ string_of_relid id1 ^ string_of_ruleid id2 ^ ":\n " ^ + | RelD (id, ps, t, _hints) -> + "relation " ^ string_of_relid id ^ string_of_params ps ^ ": " ^ string_of_typ t + | RuleD (id1, ps, id2, e, prems) -> + "rule " ^ string_of_relid id1 ^ string_of_params ps ^ string_of_ruleid id2 ^ ":\n " ^ string_of_exp e ^ string_of_nl_list "" "" (prefix "\n -- " string_of_prem) prems | VarD (id, t, _hints) -> diff --git a/spectec/src/el/subst.ml b/spectec/src/el/subst.ml index 09c8da368..b560b8866 100644 --- a/spectec/src/el/subst.ml +++ b/spectec/src/el/subst.ml @@ -230,7 +230,7 @@ and subst_gram s gram = and subst_prem s prem = (match prem.it with | VarPr (id, t) -> VarPr (id, subst_typ s t) - | RulePr (id, e) -> RulePr (id, subst_exp s e) + | RulePr (id, as_, e) -> RulePr (id, List.map (subst_arg s) as_, subst_exp s e) | IfPr e -> IfPr (subst_exp s e) | ElsePr -> ElsePr | IterPr (prem1, iter) -> IterPr (subst_prem s prem1, subst_iter s iter) @@ -263,8 +263,8 @@ let subst_def s d = | GramD (x1, x2, ps, t, gr, hs) -> GramD (x1, x2, List.map (subst_param s) ps, subst_typ s t, subst_gram s gr, hs) | VarD (x, t, hs) -> VarD (x, subst_typ s t, hs) | SepD -> SepD - | RelD (x, t, hs) -> RelD (x, subst_typ s t, hs) - | RuleD (x1, x2, e, prs) -> RuleD (x1, x2, subst_exp s e, Convert.map_nl_list (subst_prem s) prs) + | RelD (x, ps, t, hs) -> RelD (x, List.map (subst_param s) ps, subst_typ s t, hs) + | RuleD (x1, ps, x2, e, prs) -> RuleD (x1, List.map (subst_param s) ps, x2, subst_exp s e, Convert.map_nl_list (subst_prem s) prs) | DecD (x, ps, t, hs) -> DecD (x, List.map (subst_param s) ps, subst_typ s t, hs) | DefD (x, as_, e, prs) -> DefD (x, List.map (subst_arg s) as_, subst_exp s e, Convert.map_nl_list (subst_prem s) prs) | HintD hd -> HintD hd diff --git a/spectec/src/frontend/elab.ml b/spectec/src/frontend/elab.ml index 49199221a..76bba17a2 100644 --- a/spectec/src/frontend/elab.ml +++ b/spectec/src/frontend/elab.ml @@ -94,7 +94,7 @@ type kind = type var_typ = Il.typ type typ_typ = Il.param list * kind type gram_typ = Il.param list * Il.typ * (id * Il.prod) list * dots option -type rel_typ = Il.mixop * notation * Il.typ * (id * Il.rule) list +type rel_typ = Il.param list * Il.typ * (id * Il.rule) list * Il.mixop * notation type def_typ = Il.param list * Il.typ * (def * Il.clause) list type 'a env' = (region * 'a) Map.t @@ -1923,10 +1923,12 @@ and elab_prem env (pr : prem) : Il.prem list = let t' = elab_typ env t in env.vars <- bind "variable" env.vars id t'; [] - | RulePr (id, e) -> - let mixop, not, _, _ = find "relation" env.rels id in - let es', _s = checkpoint (elab_exp_notation' env id e not) in - [Il.RulePr (id, [], mixop, tup_exp_nary' es' e.at) $ pr.at] + | RulePr (id, as_, e) -> + let ps', _, _, mixop, not = find "relation" env.rels id in + let as', s = elab_args `Rhs env as_ ps' pr.at in + let not' = Xl.Mixop.map (fun (x, t) -> x, Il.Subst.subst_typ s t) not in + let es', _s = checkpoint (elab_exp_notation' env id e not') in + [Il.RulePr (id, as', mixop, tup_exp_nary' es' e.at) $ pr.at] | IfPr e -> let e' = checkpoint (elab_exp env e (Il.BoolT $ e.at)) in [Il.IfPr e' $ pr.at] @@ -2560,7 +2562,8 @@ let rec elab_def env (d : def) : Il.def list = (if dots2 = Dots then [] else [Il.GramD (x1, ps', t', []) $ d.at]) @ elab_hintdef env (GramH (x1, x2, hints) $ d.at) - | RelD (x, t, hints) -> + | RelD (x, ps, t, hints) -> + let ps' = elab_params env' ps in let mixop, xts' = elab_typ_notation' env' x t in let ts' = List.map snd xts' in if env'.pm then error d.at "misplaced +- or -+ operator in relation"; @@ -2569,15 +2572,18 @@ let rec elab_def env (d : def) : Il.def list = infer_no_quants env' dims Det.empty [] [] ts' [] [] [] d.at; let not = Mixop.apply mixop (List.map (fun t' -> "_" $ d.at, t') ts') in let t' = tup_typ' ts' t.at in - env.rels <- bind "relation" env.rels x (mixop, not, t', []); - [Il.RelD (x, [], mixop, t', []) $ d.at] + env.rels <- bind "relation" env.rels x (ps', t', [], mixop, not); + [Il.RelD (x, ps', mixop, t', []) $ d.at] @ elab_hintdef env (RelH (x, hints) $ d.at) - | RuleD (x1, x2, e, prems) -> - let mixop, not', t', rules' = find "relation" env.rels x1 in + | RuleD (x1, ps, x2, e, prems) -> + let ps', t', rules', mixop, not' = find "relation" env.rels x1 in if List.exists (fun (x, _) -> x.it = x2.it) rules' then error d.at ("duplicate rule name `" ^ x1.it ^ (if x2.it = "" then "" else "/" ^ x2.it) ^ "`"); + let ps'' = elab_params env' ps in + if not Il.Eq.(eq_list eq_param ps' ps'') then + error d.at ("parameter list on rule differs from relation"); let es', _ = checkpoint (elab_exp_notation' env' x1 e not') in let prems' = List.concat (map_filter_nl_list (elab_prem env') prems) in let dims = Dim.check Map.empty [] [] [] es' [] prems' in @@ -2587,7 +2593,7 @@ let rec elab_def env (d : def) : Il.def list = let det = Det.(det_exp e' ++ det_list det_prem prems') in let qs = infer_quants env env' dims det [] [] [] es' [] prems' d.at in let rule' = Il.RuleD (x2, qs, mixop, e', prems') $ d.at in - env.rels <- rebind "relation" env.rels x1 (mixop, not', t', rules' @ [x2, rule']); + env.rels <- rebind "relation" env.rels x1 (ps', t', rules' @ [x2, rule'], mixop, not'); if not env'.pm then [] else elab_def env Subst.(subst_def pm_snd (Iter.clone_def d)) | VarD (x, t, _hints) -> @@ -2670,7 +2676,7 @@ let populate_def env (d' : Il.def) : Il.def = | _ps, _k -> d' ) | Il.RelD (x, ps', mixop, t', []) -> - let _, _, _, rules' = find "relation" env.rels x in + let _, _, rules', _, _ = find "relation" env.rels x in Il.RelD (x, ps', mixop, t', List.map snd rules') $ d'.at | Il.DecD (x, ps', t', []) -> let _, _, clauses' = find "definition" env.defs x in @@ -2766,6 +2772,6 @@ let elab_exp env (e : exp) (t : typ) : Il.exp = let elab_rel env (e : exp) (x : id) : Il.exp = let env' = local_env env in - match elab_prem env' (RulePr (x, e) $ e.at) with + match elab_prem env' (RulePr (x, [], e) $ e.at) with | [{it = Il.RulePr (_, _, _, e'); _}] -> e' | _ -> assert false diff --git a/spectec/src/frontend/parser.mly b/spectec/src/frontend/parser.mly index 4b5ecd7b2..2eb500d86 100644 --- a/spectec/src/frontend/parser.mly +++ b/spectec/src/frontend/parser.mly @@ -809,7 +809,8 @@ prem_post_ : prem_bin : prem_bin_ { $1 $ $sloc } prem_bin_ : | prem_post_ { $1 } - | relid COLON exp_bin { RulePr ($1, $3) } + | relid COLON exp_bin { RulePr ($1, [], $3) } + | relid LPAREN comma_list(arg) RPAREN COLON exp_bin { RulePr ($1, $3, $6) } | IF exp_bin { let rec iters e = match e.it with @@ -820,7 +821,8 @@ prem_bin_ : prem : prem_ { $1 $ $sloc } prem_ : | prem_post_ { $1 } - | relid COLON exp { RulePr ($1, $3) } + | relid COLON exp { RulePr ($1, [], $3) } + | relid LPAREN comma_list(arg) RPAREN COLON exp_bin { RulePr ($1, $3, $6) } | VAR varid_bind_with_suffix COLON typ { VarPr ($2, $4) } | IF exp { let rec iters e = @@ -1060,10 +1062,15 @@ def_ : { let id = if $6 = "" then "" else String.sub $6 1 (String.length $6 - 1) in GramD ($2, id $ $loc($6), $4, TupT [] $ $loc($1), $9, $7) } | RELATION relid COLON nottyp hint* - { RelD ($2, $4, $5) } + { RelD ($2, [], $4, $5) } + | RELATION relid LPAREN comma_list(param) RPAREN COLON nottyp hint* + { RelD ($2, $4, $7, $8) } | RULE relid ruleid_list COLON exp prem_list { let id = if $3 = "" then "" else String.sub $3 1 (String.length $3 - 1) in - RuleD ($2, id $ $loc($3), $5, $6) } + RuleD ($2, [], id $ $loc($3), $5, $6) } + | RULE relid LPAREN comma_list(param) RPAREN ruleid_list COLON exp prem_list + { let id = if $6 = "" then "" else String.sub $6 1 (String.length $6 - 1) in + RuleD ($2, $4, id $ $loc($6), $8, $9) } | VAR varid_bind COLON typ hint* { VarD ($2, $4, $5) } | DEF DOLLAR defid COLON typ hint* From 6569c90451dd92d9fd64a4395814af949c0c0f16 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Thu, 12 Feb 2026 12:49:26 +0100 Subject: [PATCH 051/235] [ci] Bump OCaml version --- .github/workflows/w3c-publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/w3c-publish.yml b/.github/workflows/w3c-publish.yml index ad72842ca..730633a3b 100644 --- a/.github/workflows/w3c-publish.yml +++ b/.github/workflows/w3c-publish.yml @@ -48,7 +48,7 @@ jobs: - name: Setup OCaml uses: ocaml/setup-ocaml@v3 with: - ocaml-compiler: 4.14.x + ocaml-compiler: 5.04.x - name: Setup Dune if: ${{ matrix.spec == 'core' }} run: opam install --yes dune menhir mdx zarith && opam exec dune --version From 08c15a0d50c9d09d5107521720f6bb20594f2a34 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Fri, 13 Feb 2026 12:04:25 +0100 Subject: [PATCH 052/235] Make spec compile again --- spectec/doc/example/output/NanoWasm.pdf | Bin 245512 -> 245512 bytes spectec/src/frontend/elab.ml | 167 +- spectec/src/frontend/parser.mly | 1 + spectec/test-frontend/TEST.md | 860 ++-- spectec/test-middlend/TEST.md | 4920 +++++++++++------------ 5 files changed, 2970 insertions(+), 2978 deletions(-) diff --git a/spectec/doc/example/output/NanoWasm.pdf b/spectec/doc/example/output/NanoWasm.pdf index 6ce1f839d4be07c1029a2d78a73f987b793ad145..fa8f6eabef30f455b2fef20128dd12dae5fa902a 100644 GIT binary patch delta 145 zcmeD9$Jg1`$>&J3wQ#$&Fe4B%ZMPO?zP^y%*wDzp z(A0RkkHY93=Itp zObn+>Ze^B%akkrRWiDiMHghsEcXV@eb8;~^H+M5LbFp+Yb}@9av@ka`b~Q0Guv4%h Mq-6Vt-OLiq0DWU9ZvX%Q diff --git a/spectec/src/frontend/elab.ml b/spectec/src/frontend/elab.ml index 5906910a7..102c66768 100644 --- a/spectec/src/frontend/elab.ml +++ b/spectec/src/frontend/elab.ml @@ -1823,7 +1823,7 @@ and cast_exp' phrase env (e' : Il.exp) t1 t2 : Il.exp' attempt = | (Il.VariantT tcs1, dots1), (Il.VariantT tcs2, dots2) -> let* () = - (* Shallow recursive breadth subtyping on variants *) + (* Recursive subtyping on variants *) match iter_attempt (fun (mixop, (tC1, _, _), _) -> let* _, (tC2, _, _), _ = attempt (find_case tcs2 mixop t1.at) t2 in @@ -2457,46 +2457,6 @@ let infer_typdef env (d : def) : def = d | _ -> d -let infer_fundef env (d : def) = - match d.it with - | DecD (x, ps, t, _hints) -> - let env' = local_env env in - let ps' = elab_params env' ps in - let t' = elab_typ env' t in - if env'.pm then error d.at "misplaced +- or -+ operator in declaration"; - let dims = Dim.check Map.empty ps' [] [t'] [] [] [] in - let t' = Dim.annot_typ dims t' in - infer_no_quants env dims Det.empty ps' [] [t'] [] [] [] d.at; - env.defs <- bind "definition" env.defs x (ps', t', []); - | _ -> () - -let infer_reldef env (d : def) = - match d.it with - | RelD (x, ps, t, _hints) -> - let env' = local_env env in - let ps' = elab_params env' ps in - let mixop, xts' = elab_typ_notation' env' x t in - let ts' = List.map snd xts' in - if env'.pm then error d.at "misplaced +- or -+ operator in relation"; - let dims = Dim.check Map.empty [] [] ts' [] [] [] in - let ts' = List.map (Dim.annot_typ dims) ts' in - infer_no_quants env' dims Det.empty [] [] ts' [] [] [] d.at; - let not = Mixop.apply mixop (List.map (fun t' -> "_" $ d.at, t') ts') in - let t' = tup_typ' ts' t.at in - env.rels <- bind "relation" env.rels x (ps', t', [], mixop, not); - | _ -> () - -let infer_gramdef env (d : def) = - match d.it with - | GramD (x1, _x2, ps, t, _gram, _hints) -> - if not (bound env.grams x1) then ( - let env' = local_env env in - let ps' = elab_params env' ps in - let t' = elab_typ env' t in - env.grams <- bind "grammar" env.grams x1 (ps', t', [], None); - ) - | _ -> () - let elab_hintdef _env (hd : hintdef) : Il.def list = match hd.it with | TypH (id1, _id2, hints) -> @@ -2514,9 +2474,9 @@ let elab_hintdef _env (hd : hintdef) : Il.def list = [] -let rec elab_def env (d : def) : Il.def list = - Debug.(log_in "el.elab_def" line); - Debug.(log_in_at "el.elab_def" d.at (fun _ -> el_def d)); +let rec elab_def_pass1 env (d : def) : Il.def list = + Debug.(log_in "el.elab_def_pass1" line); + Debug.(log_in_at "el.elab_def_pass1" d.at (fun _ -> el_def d)); let env' = local_env env in env'.pm <- false; match d.it with @@ -2561,7 +2521,71 @@ let rec elab_def env (d : def) : Il.def list = env.typs <- rebind "syntax type" env.typs x1 (ps', k'); (if not last then [] else [Il.TypD (x1, ps', [inst']) $ d.at]) @ elab_hintdef env (TypH (x1, x2, hints) $ d.at) @ - (if not env'.pm then [] else elab_def env Subst.(subst_def pm_snd (Iter.clone_def d))) + (if not env'.pm then [] else elab_def_pass1 env Subst.(subst_def pm_snd (Iter.clone_def d))) + + | GramD (x1, _x2, ps, t, _gram, _hints) -> + if not (bound env.grams x1) then ( + let env' = local_env env in + let ps' = elab_params env' ps in + let t' = elab_typ env' t in + env.grams <- bind "grammar" env.grams x1 (ps', t', [], None); + ); + [] + + | RelD (x, ps, t, hints) -> + let ps' = elab_params env' ps in + let mixop, xts' = elab_typ_notation' env' x t in + let ts' = List.map snd xts' in + if env'.pm then error d.at "misplaced +- or -+ operator in relation"; + let dims = Dim.check Map.empty [] [] ts' [] [] [] in + let ts' = List.map (Dim.annot_typ dims) ts' in + infer_no_quants env' dims Det.empty [] [] ts' [] [] [] d.at; + let not = Mixop.apply mixop (List.map (fun t' -> "_" $ d.at, t') ts') in + let t' = tup_typ' ts' t.at in + env.rels <- bind "relation" env.rels x (ps', t', [], mixop, not); + [Il.RelD (x, ps', mixop, t', []) $ d.at] + @ elab_hintdef env (RelH (x, hints) $ d.at) + + | RuleD _ -> [] + + | VarD (x, t, _hints) -> + let t' = elab_typ env' t in + if env'.pm then + error d.at "misplaced +- or -+ operator in variable declaration"; + let dims = Dim.check Map.empty [] [] [t'] [] [] [] in + let t' = Dim.annot_typ dims t' in + infer_no_quants env' dims Det.empty [] [] [t'] [] [] [] d.at; + env.gvars <- rebind "variable" env.gvars x t'; + [] + + | DecD (x, ps, t, hints) -> + let ps' = elab_params env' ps in + let t' = elab_typ env' t in + if env'.pm then error d.at "misplaced +- or -+ operator in declaration"; + let d' = Il.DecD (x, ps', t', []) $ d.at in + let dims = Dim.check Map.empty ps' [] [t'] [] [] [] in + let t' = Dim.annot_typ dims t' in + infer_no_quants env dims Det.empty ps' [] [t'] [] [] [] d.at; + env.defs <- bind "definition" env.defs x (ps', t', []); + [d'] @ elab_hintdef env (DecH (x, hints) $ d.at) + + | DefD _ -> [] + + | SepD -> [] + + | HintD hd -> + elab_hintdef env' hd + + +let rec elab_def_pass2 env (d : def) : Il.def list = + Debug.(log_in "el.elab_def_pass2" line); + Debug.(log_in_at "el.elab_def_pass2" d.at (fun _ -> el_def d)); + let env' = local_env env in + env'.pm <- false; + match d.it with + | FamD _ -> [] + + | TypD _ -> [] | GramD (x1, x2, ps, t, gram, hints) -> let ps' = elab_params env' ps in @@ -2598,19 +2622,7 @@ let rec elab_def env (d : def) : Il.def list = (if dots2 = Dots then [] else [Il.GramD (x1, ps', t', []) $ d.at]) @ elab_hintdef env (GramH (x1, x2, hints) $ d.at) - | RelD (x, ps, t, hints) -> - let ps' = elab_params env' ps in - let mixop, xts' = elab_typ_notation' env' x t in - let ts' = List.map snd xts' in - if env'.pm then error d.at "misplaced +- or -+ operator in relation"; - let dims = Dim.check Map.empty [] [] ts' [] [] [] in - let ts' = List.map (Dim.annot_typ dims) ts' in - infer_no_quants env' dims Det.empty [] [] ts' [] [] [] d.at; - let not = Mixop.apply mixop (List.map (fun t' -> "_" $ d.at, t') ts') in - let t' = tup_typ' ts' t.at in - env.rels <- rebind "relation" env.rels x (ps', t', [], mixop, not); - [Il.RelD (x, ps', mixop, t', []) $ d.at] - @ elab_hintdef env (RelH (x, hints) $ d.at) + | RelD _ -> [] | RuleD (x1, ps, x2, e, prems) -> let ps', t', rules', mixop, not' = find "relation" env.rels x1 in @@ -2630,28 +2642,11 @@ let rec elab_def env (d : def) : Il.def list = let qs = infer_quants env env' dims det [] [] [] es' [] prems' d.at in let rule' = Il.RuleD (x2, qs, mixop, e', prems') $ d.at in env.rels <- rebind "relation" env.rels x1 (ps', t', rules' @ [x2, rule'], mixop, not'); - if not env'.pm then [] else elab_def env Subst.(subst_def pm_snd (Iter.clone_def d)) + if not env'.pm then [] else elab_def_pass2 env Subst.(subst_def pm_snd (Iter.clone_def d)) - | VarD (x, t, _hints) -> - let t' = elab_typ env' t in - if env'.pm then - error d.at "misplaced +- or -+ operator in variable declaration"; - let dims = Dim.check Map.empty [] [] [t'] [] [] [] in - let t' = Dim.annot_typ dims t' in - infer_no_quants env' dims Det.empty [] [] [t'] [] [] [] d.at; - env.gvars <- rebind "variable" env.gvars x t'; - [] + | VarD _ -> [] - | DecD (x, ps, t, hints) -> - let ps' = elab_params env' ps in - let t' = elab_typ env' t in - if env'.pm then error d.at "misplaced +- or -+ operator in declaration"; - let d' = Il.DecD (x, ps', t', []) $ d.at in - let dims = Dim.check Map.empty ps' [] [t'] [] [] [] in - let t' = Dim.annot_typ dims t' in - infer_no_quants env dims Det.empty ps' [] [t'] [] [] [] d.at; - env.defs <- rebind "definition" env.defs x (ps', t', []); - [d'] @ elab_hintdef env (DecH (x, hints) $ d.at) + | DecD _ -> [] | DefD (x, as_, e, prems) -> let ps', t', clauses' = find "definition" env.defs x in @@ -2667,13 +2662,11 @@ let rec elab_def env (d : def) : Il.def list = let qs = infer_quants env env' dims det [] as' [] [e'] [] prems' d.at in let clause' = Il.DefD (qs, as', e', prems') $ d.at in env.defs <- rebind "definition" env.defs x (ps', t', clauses' @ [(d, clause')]); - if not env'.pm then [] else elab_def env Subst.(subst_def pm_snd (Iter.clone_def d)) + if not env'.pm then [] else elab_def_pass2 env Subst.(subst_def pm_snd (Iter.clone_def d)) - | SepD -> - [] + | SepD -> [] - | HintD hd -> - elab_hintdef env' hd + | HintD _ -> [] let check_dots env = @@ -2795,12 +2788,10 @@ let elab (ds : script) : Il.script * env = let env = new_env () in let ds = List.map (infer_typdef env) ds in let ds = Map.fold implicit_typdef env.atoms ds in - List.iter (infer_fundef env) ds; - List.iter (infer_reldef env) ds; - List.iter (infer_gramdef env) ds; - let ds' = List.concat_map (elab_def env) ds in + let ds1' = List.concat_map (elab_def_pass1 env) ds in + let ds2' = List.concat_map (elab_def_pass2 env) ds in check_dots env; - let ds' = List.map (populate_def env) ds' in + let ds' = List.map (populate_def env) (ds1' @ ds2') in recursify_defs ds', env let elab_exp env (e : exp) (t : typ) : Il.exp = diff --git a/spectec/src/frontend/parser.mly b/spectec/src/frontend/parser.mly index e343b1b89..8106e2dfe 100644 --- a/spectec/src/frontend/parser.mly +++ b/spectec/src/frontend/parser.mly @@ -404,6 +404,7 @@ check_atom : | DOTDOT { Atom.Dot2 } | DOTDOTDOT { Atom.Dot3 } | SEMICOLON { Atom.Semicolon } + | BACKSLASH { Atom.Backslash } | ARROW { Atom.Arrow } | ARROW2 { Atom.Arrow2 } | ARROWSUB { Atom.ArrowSub } diff --git a/spectec/test-frontend/TEST.md b/spectec/test-frontend/TEST.md index 59328a598..2c294e73d 100644 --- a/spectec/test-frontend/TEST.md +++ b/spectec/test-frontend/TEST.md @@ -7326,6 +7326,384 @@ 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-latest/5.3-binary.instructions.spectec +syntax castop = (null?, null?) + +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec +syntax memidxop = (memidx, memarg) + +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec +syntax startopt = start* + +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec +syntax code = (local*, expr) + +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec +syntax nopt = u32* + +;; ../../../../specification/wasm-latest/6.1-text.values.spectec +def $ieee_(N : N, rat : rat) : fNmag(N) + +;; ../../../../specification/wasm-latest/6.1-text.values.spectec +syntax idctxt = +{ + TYPES name?*, + TAGS name?*, + GLOBALS name?*, + MEMS name?*, + TABLES name?*, + FUNCS name?*, + DATAS name?*, + ELEMS name?*, + LOCALS name?*, + LABELS name?*, + FIELDS name?**, + TYPEDEFS deftype?* +} + +;; ../../../../specification/wasm-latest/6.1-text.values.spectec +syntax I = idctxt + +;; ../../../../specification/wasm-latest/6.1-text.values.spectec +rec { + +;; ../../../../specification/wasm-latest/6.1-text.values.spectec:154.1-154.56 +def $concat_idctxt(idctxt*) : idctxt + ;; ../../../../specification/wasm-latest/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-latest/6.1-text.values.spectec:156.1-156.53 + def $concat_idctxt{I : I, `I'*` : I*}([I] ++ I'*{I' <- `I'*`}) = I +++ $concat_idctxt(I'*{I' <- `I'*`}) +} + +;; ../../../../specification/wasm-latest/6.1-text.values.spectec +relation Idctxt_ok: `|-%:OK`(idctxt) + ;; ../../../../specification/wasm-latest/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-latest/6.4-text.modules.spectec +def $dots : () + +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +syntax decl = + | TYPE(rectype : rectype) + | IMPORT(name : name, name : name, externtype : externtype) + | TAG(tagtype : tagtype) + | GLOBAL(globaltype : globaltype, expr : expr) + | MEMORY(memtype : memtype) + | TABLE(tabletype : tabletype, expr : expr) + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) + | DATA(`byte*` : byte*, datamode : datamode) + | ELEM(reftype : reftype, `expr*` : expr*, elemmode : elemmode) + | START(funcidx : funcidx) + | EXPORT(name : name, externidx : externidx) + +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:258.1-258.76 +def $typesd(decl*) : type* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:270.1-270.23 + def $typesd([]) = [] + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:272.1-272.57 + def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) + -- otherwise +} + +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:259.1-259.78 +def $importsd(decl*) : import* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:274.1-274.25 + def $importsd([]) = [] + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:276.1-276.61 + def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} + +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:260.1-260.75 +def $tagsd(decl*) : tag* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:278.1-278.22 + def $tagsd([]) = [] + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:280.1-280.55 + def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} + +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:261.1-261.78 +def $globalsd(decl*) : global* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:282.1-282.25 + def $globalsd([]) = [] + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:284.1-284.61 + def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} + +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:262.1-262.75 +def $memsd(decl*) : mem* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:286.1-286.22 + def $memsd([]) = [] + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:288.1-288.55 + def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} + +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:263.1-263.77 +def $tablesd(decl*) : table* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:290.1-290.24 + def $tablesd([]) = [] + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:292.1-292.59 + def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) + -- otherwise +} + +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:264.1-264.76 +def $funcsd(decl*) : func* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:294.1-294.23 + def $funcsd([]) = [] + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:296.1-296.57 + def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} + +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:265.1-265.76 +def $datasd(decl*) : data* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:298.1-298.23 + def $datasd([]) = [] + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:300.1-300.57 + def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) + -- otherwise +} + +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:266.1-266.76 +def $elemsd(decl*) : elem* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:302.1-302.23 + def $elemsd([]) = [] + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:304.1-304.57 + def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} + +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:267.1-267.77 +def $startsd(decl*) : start* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:306.1-306.24 + def $startsd([]) = [] + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:308.1-308.59 + def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} + +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:268.1-268.78 +def $exportsd(decl*) : export* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:310.1-310.25 + def $exportsd([]) = [] + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:312.1-312.61 + def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} + +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +def $ordered(decl*) : bool + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + def $ordered{`decl*` : decl*}(decl*{decl <- `decl*`}) = true + -- if ($importsd(decl*{decl <- `decl*`}) = []) + ;; ../../../../specification/wasm-latest/6.4-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-latest/X.1-notation.syntax.spectec +syntax A = nat + +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec +syntax B = nat + +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec +syntax sym = + | _FIRST(A_1 : A) + | _DOTS + | _LAST(A_n : A) + +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec +syntax symsplit = + | _FIRST(A_1 : A) + | _LAST(A_2 : A) + +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec +syntax recorddots = () + +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec +syntax record = +{ + FIELD_1 A, + FIELD_2 A, + `...` recorddots +} + +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec +syntax pth = + | PTHSYNTAX + +;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec +syntax T = nat + +;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec +relation NotationTypingPremise: `%`(nat) + +;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec +relation NotationTypingPremisedots: `...` + +;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec +relation NotationTypingScheme: `%`(nat) + ;; ../../../../specification/wasm-latest/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-latest/X.2-notation.typing.spectec +rec { + +;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec:20.1-20.83 +relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) + ;; ../../../../specification/wasm-latest/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-latest/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-latest/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-latest/X.3-notation.execution.spectec +relation NotationReduct: `~>%`(instr*) + ;; ../../../../specification/wasm-latest/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-latest/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-latest/X.3-notation.execution.spectec + rule 4{q_6 : num_(F64_numtype)}: + `~>%`([CONST_instr(F64_numtype, q_6)]) + +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec +def $instrdots : instr* + +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec +syntax label = + | `LABEL_%{%}`(n : n, `instr*` : instr*) + +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec +syntax callframe = + | `FRAME_%{%}`(n : n, frame : frame) + +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec +def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) + +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec +rec { + +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec:32.1-32.117 +def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) + ;; ../../../../specification/wasm-latest/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-latest/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-latest/X.4-notation.binary.spectec +syntax symdots = + | `%`(i : nat) + -- if (i = 0) + +;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec +def $var(syntax X) : nat + ;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec + def $var{syntax X}(syntax X) = 0 + +;; ../../../../specification/wasm-latest/X.5-notation.text.spectec +syntax abbreviated = () + +;; ../../../../specification/wasm-latest/X.5-notation.text.spectec +syntax expanded = () + +;; ../../../../specification/wasm-latest/X.5-notation.text.spectec +syntax syntax = () + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bbyte : byte ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec @@ -7648,9 +8026,6 @@ grammar Bexterntype : externtype ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{jt : tagtype} {{0x04} {jt:Btagtype}} => TAG_externtype(jt) -;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec -syntax castop = (null?, null?) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec grammar Bcastop : castop ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec @@ -7683,9 +8058,6 @@ grammar Bcatch : catch ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod{l : labelidx} {{0x03} {l:Blabelidx}} => CATCH_ALL_REF_catch(l) -;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec -syntax memidxop = (memidx, memarg) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec grammar Bmemarg : memidxop ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec @@ -8799,9 +9171,6 @@ grammar Bstart : start* ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{x : idx} x:Bfuncidx => [START_start(x)] -;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec -syntax startopt = start* - ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bstartsec : start? ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec @@ -8836,9 +9205,6 @@ grammar Belemsec : elem* ;; ../../../../specification/wasm-latest/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-latest/5.4-binary.modules.spectec -syntax code = (local*, expr) - ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Blocals : local* ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec @@ -8880,9 +9246,6 @@ grammar Bdatacnt : u32* ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{n : n} `%`_u32(n):Bu32 => [`%`_u32(n)] -;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec -syntax nopt = u32* - ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bdatacntsec : u32? ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec @@ -9301,9 +9664,6 @@ grammar Thexmant : rat ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{p : nat, q : rat} {{p:Thexnum} {"."} {q:Thexfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) -;; ../../../../specification/wasm-latest/6.1-text.values.spectec -def $ieee_(N : N, rat : rat) : fNmag(N) - ;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tfloat : rat ;; ../../../../specification/wasm-latest/6.1-text.values.spectec @@ -9388,55 +9748,6 @@ grammar Tlist(syntax el, grammar TX : el) : el* prod{`el*` : el*} el:TX*{el <- `el*`} => el*{el <- `el*`} -- if (|el*{el <- `el*`}| < (2 ^ 32)) -;; ../../../../specification/wasm-latest/6.1-text.values.spectec -syntax idctxt = -{ - TYPES name?*, - TAGS name?*, - GLOBALS name?*, - MEMS name?*, - TABLES name?*, - FUNCS name?*, - DATAS name?*, - ELEMS name?*, - LOCALS name?*, - LABELS name?*, - FIELDS name?**, - TYPEDEFS deftype?* -} - -;; ../../../../specification/wasm-latest/6.1-text.values.spectec -syntax I = idctxt - -;; ../../../../specification/wasm-latest/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-latest/6.1-text.values.spectec:154.1-154.56 -def $concat_idctxt(idctxt*) : idctxt - ;; ../../../../specification/wasm-latest/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-latest/6.1-text.values.spectec:156.1-156.53 - def $concat_idctxt{I : I, `I'*` : I*}([I] ++ I'*{I' <- `I'*`}) = I +++ $concat_idctxt(I'*{I' <- `I'*`}) -} - -;; ../../../../specification/wasm-latest/6.1-text.values.spectec -relation Idctxt_ok: `|-%:OK`(idctxt) - ;; ../../../../specification/wasm-latest/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-latest/6.1-text.values.spectec grammar Tidx_(ids : name?*) : idx ;; ../../../../specification/wasm-latest/6.1-text.values.spectec @@ -10894,257 +11205,78 @@ grammar Timport_(I : I) : (import, idctxt) ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texport_(I : I) : (export, idctxt) - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec -grammar Texportdots : () - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{"("} {"export"} {Tname} {")"}} => (``, ()).1 - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Timportdots : () - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{"("} {"import"} {Tname} {Tname} {")"}} => (``, ()).1 - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -def $dots : () - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Texporttagdots_(I : I) : () - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttagtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttagtype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Texportglobaldots_(I : I) : () - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Tglobaltype_(I)} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tglobaltype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Texportmemdots_(I : I) : () - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Tmemtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {"("} {"data"} {Tdatastring} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tmemtype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Texporttabledots_(I : I) : () - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttabletype_(I)} {Texpr_(I)?{}}} => (``, ()).1 - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {Treftype_(I)} {"("} {"elem"} {Telemlist_(I)} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttabletype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Texportfuncdots_(I : I) : () - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttypeuse_(I)} {Tlocal_(I)*{}} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttypeuse_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Texporttag_(I : I) : () - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Texportglobal_(I : I) : () - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Texportmem_(I : I) : () - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Texporttable_(I : I) : () - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Texportfunc_(I : I) : () - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Tdatamem_(I : I) : () - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Telemtable_(I : I) : () - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -syntax decl = - | TYPE(rectype : rectype) - | IMPORT(name : name, name : name, externtype : externtype) - | TAG(tagtype : tagtype) - | GLOBAL(globaltype : globaltype, expr : expr) - | MEMORY(memtype : memtype) - | TABLE(tabletype : tabletype, expr : expr) - | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) - | DATA(`byte*` : byte*, datamode : datamode) - | ELEM(reftype : reftype, `expr*` : expr*, elemmode : elemmode) - | START(funcidx : funcidx) - | EXPORT(name : name, externidx : externidx) - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -rec { - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:258.1-258.76 -def $typesd(decl*) : type* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:270.1-270.23 - def $typesd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:272.1-272.57 - def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -rec { - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:259.1-259.78 -def $importsd(decl*) : import* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:274.1-274.25 - def $importsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:276.1-276.61 - def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -rec { - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:260.1-260.75 -def $tagsd(decl*) : tag* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:278.1-278.22 - def $tagsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:280.1-280.55 - def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -rec { - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:261.1-261.78 -def $globalsd(decl*) : global* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:282.1-282.25 - def $globalsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:284.1-284.61 - def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -rec { - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:262.1-262.75 -def $memsd(decl*) : mem* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:286.1-286.22 - def $memsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:288.1-288.55 - def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec -rec { +grammar Texportdots : () + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{"("} {"export"} {Tname} {")"}} => (``, ()).1 -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:263.1-263.77 -def $tablesd(decl*) : table* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:290.1-290.24 - def $tablesd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:292.1-292.59 - def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) - -- otherwise -} +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +grammar Timportdots : () + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{"("} {"import"} {Tname} {Tname} {")"}} => (``, ()).1 ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -rec { +grammar Texporttagdots_(I : I) : () + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttagtype_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttagtype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:264.1-264.76 -def $funcsd(decl*) : func* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:294.1-294.23 - def $funcsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:296.1-296.57 - def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +grammar Texportglobaldots_(I : I) : () + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Tglobaltype_(I)} {Texpr_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tglobaltype_(I)}} => (``, ()).1 ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -rec { +grammar Texportmemdots_(I : I) : () + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Tmemtype_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {"("} {"data"} {Tdatastring} {")"}} => (``, ()).1 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tmemtype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:265.1-265.76 -def $datasd(decl*) : data* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:298.1-298.23 - def $datasd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:300.1-300.57 - def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) - -- otherwise -} +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +grammar Texporttabledots_(I : I) : () + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttabletype_(I)} {Texpr_(I)?{}}} => (``, ()).1 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {Treftype_(I)} {"("} {"elem"} {Telemlist_(I)} {")"}} => (``, ()).1 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttabletype_(I)}} => (``, ()).1 ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -rec { +grammar Texportfuncdots_(I : I) : () + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttypeuse_(I)} {Tlocal_(I)*{}} {Texpr_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttypeuse_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:266.1-266.76 -def $elemsd(decl*) : elem* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:302.1-302.23 - def $elemsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:304.1-304.57 - def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +grammar Texporttag_(I : I) : () ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -rec { +grammar Texportglobal_(I : I) : () -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:267.1-267.77 -def $startsd(decl*) : start* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:306.1-306.24 - def $startsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:308.1-308.59 - def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +grammar Texportmem_(I : I) : () ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -rec { +grammar Texporttable_(I : I) : () -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:268.1-268.78 -def $exportsd(decl*) : export* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:310.1-310.25 - def $exportsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:312.1-312.61 - def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +grammar Texportfunc_(I : I) : () ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -def $ordered(decl*) : bool - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - def $ordered{`decl*` : decl*}(decl*{decl <- `decl*`}) = true - -- if ($importsd(decl*{decl <- `decl*`}) = []) - ;; ../../../../specification/wasm-latest/6.4-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*`}) = [])) +grammar Tdatamem_(I : I) : () + +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +grammar Telemtable_(I : I) : () ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tdecl_(I : I) : (decl, idctxt) @@ -11195,129 +11327,6 @@ grammar Tdecldots_(I : I) : (decl, idctxt)* ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (decl, idctxt)} [``]:Tdecl_(I)*{} => [``] -;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec -syntax A = nat - -;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec -syntax B = nat - -;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec -syntax sym = - | _FIRST(A_1 : A) - | _DOTS - | _LAST(A_n : A) - -;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec -syntax symsplit = - | _FIRST(A_1 : A) - | _LAST(A_2 : A) - -;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec -syntax recorddots = () - -;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec -syntax record = -{ - FIELD_1 A, - FIELD_2 A, - `...` recorddots -} - -;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec -syntax pth = - | PTHSYNTAX - -;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec -syntax T = nat - -;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec -relation NotationTypingPremise: `%`(nat) - -;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec -relation NotationTypingPremisedots: `...` - -;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec -relation NotationTypingScheme: `%`(nat) - ;; ../../../../specification/wasm-latest/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-latest/X.2-notation.typing.spectec -rec { - -;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec:20.1-20.83 -relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) - ;; ../../../../specification/wasm-latest/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-latest/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-latest/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-latest/X.3-notation.execution.spectec -relation NotationReduct: `~>%`(instr*) - ;; ../../../../specification/wasm-latest/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-latest/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-latest/X.3-notation.execution.spectec - rule 4{q_6 : num_(F64_numtype)}: - `~>%`([CONST_instr(F64_numtype, q_6)]) - -;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec -def $instrdots : instr* - -;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec -syntax label = - | `LABEL_%{%}`(n : n, `instr*` : instr*) - -;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec -syntax callframe = - | `FRAME_%{%}`(n : n, frame : frame) - -;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec -def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) - -;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec -rec { - -;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec:32.1-32.117 -def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) - ;; ../../../../specification/wasm-latest/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-latest/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-latest/X.4-notation.binary.spectec -syntax symdots = - | `%`(i : nat) - -- if (i = 0) - -;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec -def $var(syntax X) : nat - ;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec - def $var{syntax X}(syntax X) = 0 - ;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec grammar Bvar(syntax X) : () ;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec @@ -11356,15 +11365,6 @@ grammar Tsymsplit : () ;; ../../../../specification/wasm-latest/X.5-notation.text.spectec prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 -;; ../../../../specification/wasm-latest/X.5-notation.text.spectec -syntax abbreviated = () - -;; ../../../../specification/wasm-latest/X.5-notation.text.spectec -syntax expanded = () - -;; ../../../../specification/wasm-latest/X.5-notation.text.spectec -syntax syntax = () - ;; ../../../../specification/wasm-latest/X.5-notation.text.spectec grammar Tabbrev : () diff --git a/spectec/test-middlend/TEST.md b/spectec/test-middlend/TEST.md index cddc014fd..3f4e66e43 100644 --- a/spectec/test-middlend/TEST.md +++ b/spectec/test-middlend/TEST.md @@ -7316,144 +7316,522 @@ 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-latest/5.1-binary.values.spectec -grammar Bbyte : byte - ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec - prod{`` : nat} ``:(0x00 | ... | 0xFF) => `%`_byte(``) +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec +syntax castop = (null?, null?) -;; ../../../../specification/wasm-latest/5.1-binary.values.spectec -rec { +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec +syntax memidxop = (memidx, memarg) -;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:9.1-11.82 -grammar BuN(N : N) : uN(N) - ;; ../../../../specification/wasm-latest/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-latest/5.1-binary.values.spectec:11.5-11.82 - prod{m : m, n : n} {{`%`_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-latest/5.4-binary.modules.spectec +syntax startopt = start* -;; ../../../../specification/wasm-latest/5.1-binary.values.spectec -rec { +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec +syntax code = (local*, expr) -;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:13.1-16.82 -grammar BsN(N : N) : sN(N) - ;; ../../../../specification/wasm-latest/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-latest/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-latest/5.1-binary.values.spectec:16.5-16.82 - prod{i : sN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat)), n : n} {{`%`_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-latest/5.4-binary.modules.spectec +syntax nopt = u32* -;; ../../../../specification/wasm-latest/5.1-binary.values.spectec -grammar BiN(N : N) : iN(N) - ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec - prod{i : sN(N)} i:BsN(N) => `%`_iN($inv_signed_(N, i!`%`_sN.0)) +;; ../../../../specification/wasm-latest/6.1-text.values.spectec +def $ieee_(N : N, rat : rat) : fNmag(N) -;; ../../../../specification/wasm-latest/5.1-binary.values.spectec -grammar BfN(N : N) : fN(N) - ;; ../../../../specification/wasm-latest/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-latest/6.1-text.values.spectec +syntax idctxt = +{ + TYPES name?*, + TAGS name?*, + GLOBALS name?*, + MEMS name?*, + TABLES name?*, + FUNCS name?*, + DATAS name?*, + ELEMS name?*, + LOCALS name?*, + LABELS name?*, + FIELDS name?**, + TYPEDEFS deftype?* +} -;; ../../../../specification/wasm-latest/5.1-binary.values.spectec -grammar Bu32 : u32 - ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec - prod{`` : uN(32)} ``:BuN(32) => `` +;; ../../../../specification/wasm-latest/6.1-text.values.spectec +syntax I = idctxt -;; ../../../../specification/wasm-latest/5.1-binary.values.spectec -grammar Bu64 : u64 - ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec - prod{`` : uN(64)} ``:BuN(64) => `` +;; ../../../../specification/wasm-latest/6.1-text.values.spectec +rec { -;; ../../../../specification/wasm-latest/5.1-binary.values.spectec -grammar Bs33 : s33 - ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec - prod{`` : sN(33)} ``:BsN(33) => `` +;; ../../../../specification/wasm-latest/6.1-text.values.spectec:154.1-154.56 +def $concat_idctxt(idctxt*) : idctxt + ;; ../../../../specification/wasm-latest/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-latest/6.1-text.values.spectec:156.1-156.53 + def $concat_idctxt{I : I, `I'*` : I*}([I] ++ I'*{I' <- `I'*`}) = I +++ $concat_idctxt(I'*{I' <- `I'*`}) +} -;; ../../../../specification/wasm-latest/5.1-binary.values.spectec -grammar Bi32 : i32 - ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec - prod{`` : uN(32)} ``:BuN(32) => `` +;; ../../../../specification/wasm-latest/6.1-text.values.spectec +relation Idctxt_ok: `|-%:OK`(idctxt) + ;; ../../../../specification/wasm-latest/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-latest/5.1-binary.values.spectec -grammar Bi64 : i64 - ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec - prod{`` : uN(64)} ``:BuN(64) => `` +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +def $dots : () -;; ../../../../specification/wasm-latest/5.1-binary.values.spectec -grammar Bf32 : f32 - ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec - prod{`` : fN(32)} ``:BfN(32) => `` +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +syntax decl = + | TYPE(rectype : rectype) + | IMPORT(name : name, name : name, externtype : externtype) + | TAG(tagtype : tagtype) + | GLOBAL(globaltype : globaltype, expr : expr) + | MEMORY(memtype : memtype) + | TABLE(tabletype : tabletype, expr : expr) + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) + | DATA(`byte*` : byte*, datamode : datamode) + | ELEM(reftype : reftype, `expr*` : expr*, elemmode : elemmode) + | START(funcidx : funcidx) + | EXPORT(name : name, externidx : externidx) -;; ../../../../specification/wasm-latest/5.1-binary.values.spectec -grammar Bf64 : f64 - ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec - prod{`` : fN(64)} ``:BfN(64) => `` +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +rec { -;; ../../../../specification/wasm-latest/5.1-binary.values.spectec -grammar Blist(syntax el, grammar BX : el) : el* - ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec - prod{n : n, `el*` : el*} {{`%`_u32(n):Bu32} {el:BX^n{el <- `el*`}}} => el^n{el <- `el*`} +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:258.1-258.76 +def $typesd(decl*) : type* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:270.1-270.23 + def $typesd([]) = [] + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:272.1-272.57 + def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) + -- otherwise +} -;; ../../../../specification/wasm-latest/5.1-binary.values.spectec -grammar Bname : name - ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec - prod{name : name, `b*` : byte*} b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte) => name - -- if ($utf8(name!`%`_name.0) = b*{b <- `b*`}) +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +rec { -;; ../../../../specification/wasm-latest/5.1-binary.values.spectec -grammar Btypeidx : typeidx - ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:259.1-259.78 +def $importsd(decl*) : import* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:274.1-274.25 + def $importsd([]) = [] + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:276.1-276.61 + def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} -;; ../../../../specification/wasm-latest/5.1-binary.values.spectec -grammar Btagidx : tagidx - ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +rec { -;; ../../../../specification/wasm-latest/5.1-binary.values.spectec -grammar Bglobalidx : globalidx - ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:260.1-260.75 +def $tagsd(decl*) : tag* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:278.1-278.22 + def $tagsd([]) = [] + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:280.1-280.55 + def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} -;; ../../../../specification/wasm-latest/5.1-binary.values.spectec -grammar Bmemidx : memidx - ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +rec { -;; ../../../../specification/wasm-latest/5.1-binary.values.spectec -grammar Btableidx : tableidx - ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:261.1-261.78 +def $globalsd(decl*) : global* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:282.1-282.25 + def $globalsd([]) = [] + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:284.1-284.61 + def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} -;; ../../../../specification/wasm-latest/5.1-binary.values.spectec -grammar Bfuncidx : funcidx - ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +rec { -;; ../../../../specification/wasm-latest/5.1-binary.values.spectec -grammar Bdataidx : dataidx - ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:262.1-262.75 +def $memsd(decl*) : mem* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:286.1-286.22 + def $memsd([]) = [] + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:288.1-288.55 + def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} -;; ../../../../specification/wasm-latest/5.1-binary.values.spectec -grammar Belemidx : elemidx - ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +rec { -;; ../../../../specification/wasm-latest/5.1-binary.values.spectec -grammar Blocalidx : localidx - ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec - prod{x : idx} x:Bu32 => x +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:263.1-263.77 +def $tablesd(decl*) : table* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:290.1-290.24 + def $tablesd([]) = [] + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:292.1-292.59 + def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) + -- otherwise +} -;; ../../../../specification/wasm-latest/5.1-binary.values.spectec -grammar Blabelidx : labelidx - ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:264.1-264.76 +def $funcsd(decl*) : func* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:294.1-294.23 + def $funcsd([]) = [] + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:296.1-296.57 + def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} + +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:265.1-265.76 +def $datasd(decl*) : data* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:298.1-298.23 + def $datasd([]) = [] + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:300.1-300.57 + def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) + -- otherwise +} + +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:266.1-266.76 +def $elemsd(decl*) : elem* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:302.1-302.23 + def $elemsd([]) = [] + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:304.1-304.57 + def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} + +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:267.1-267.77 +def $startsd(decl*) : start* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:306.1-306.24 + def $startsd([]) = [] + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:308.1-308.59 + def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} + +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:268.1-268.78 +def $exportsd(decl*) : export* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:310.1-310.25 + def $exportsd([]) = [] + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:312.1-312.61 + def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} + +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +def $ordered(decl*) : bool + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + def $ordered{`decl*` : decl*}(decl*{decl <- `decl*`}) = true + -- if ($importsd(decl*{decl <- `decl*`}) = []) + ;; ../../../../specification/wasm-latest/6.4-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-latest/X.1-notation.syntax.spectec +syntax A = nat + +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec +syntax B = nat + +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec +syntax sym = + | _FIRST(A_1 : A) + | _DOTS + | _LAST(A_n : A) + +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec +syntax symsplit = + | _FIRST(A_1 : A) + | _LAST(A_2 : A) + +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec +syntax recorddots = () + +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec +syntax record = +{ + FIELD_1 A, + FIELD_2 A, + `...` recorddots +} + +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec +syntax pth = + | PTHSYNTAX + +;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec +syntax T = nat + +;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec +relation NotationTypingPremise: `%`(nat) + +;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec +relation NotationTypingPremisedots: `...` + +;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec +relation NotationTypingScheme: `%`(nat) + ;; ../../../../specification/wasm-latest/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-latest/X.2-notation.typing.spectec +rec { + +;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec:20.1-20.83 +relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) + ;; ../../../../specification/wasm-latest/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-latest/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-latest/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-latest/X.3-notation.execution.spectec +relation NotationReduct: `~>%`(instr*) + ;; ../../../../specification/wasm-latest/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-latest/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-latest/X.3-notation.execution.spectec + rule 4{q_6 : num_(F64_numtype)}: + `~>%`([CONST_instr(F64_numtype, q_6)]) + +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec +def $instrdots : instr* + +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec +syntax label = + | `LABEL_%{%}`(n : n, `instr*` : instr*) + +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec +syntax callframe = + | `FRAME_%{%}`(n : n, frame : frame) + +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec +def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) + +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec +rec { + +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec:32.1-32.117 +def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) + ;; ../../../../specification/wasm-latest/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-latest/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-latest/X.4-notation.binary.spectec +syntax symdots = + | `%`(i : nat) + -- if (i = 0) + +;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec +def $var(syntax X) : nat + ;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec + def $var{syntax X}(syntax X) = 0 + +;; ../../../../specification/wasm-latest/X.5-notation.text.spectec +syntax abbreviated = () + +;; ../../../../specification/wasm-latest/X.5-notation.text.spectec +syntax expanded = () + +;; ../../../../specification/wasm-latest/X.5-notation.text.spectec +syntax syntax = () + +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec +grammar Bbyte : byte + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec + prod{`` : nat} ``:(0x00 | ... | 0xFF) => `%`_byte(``) + +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec +rec { + +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:9.1-11.82 +grammar BuN(N : N) : uN(N) + ;; ../../../../specification/wasm-latest/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-latest/5.1-binary.values.spectec:11.5-11.82 + prod{m : m, n : n} {{`%`_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-latest/5.1-binary.values.spectec +rec { + +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:13.1-16.82 +grammar BsN(N : N) : sN(N) + ;; ../../../../specification/wasm-latest/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-latest/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-latest/5.1-binary.values.spectec:16.5-16.82 + prod{i : sN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat)), n : n} {{`%`_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-latest/5.1-binary.values.spectec +grammar BiN(N : N) : iN(N) + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec + prod{i : sN(N)} i:BsN(N) => `%`_iN($inv_signed_(N, i!`%`_sN.0)) + +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec +grammar BfN(N : N) : fN(N) + ;; ../../../../specification/wasm-latest/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-latest/5.1-binary.values.spectec +grammar Bu32 : u32 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec + prod{`` : uN(32)} ``:BuN(32) => `` + +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec +grammar Bu64 : u64 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec + prod{`` : uN(64)} ``:BuN(64) => `` + +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec +grammar Bs33 : s33 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec + prod{`` : sN(33)} ``:BsN(33) => `` + +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec +grammar Bi32 : i32 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec + prod{`` : uN(32)} ``:BuN(32) => `` + +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec +grammar Bi64 : i64 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec + prod{`` : uN(64)} ``:BuN(64) => `` + +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec +grammar Bf32 : f32 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec + prod{`` : fN(32)} ``:BfN(32) => `` + +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec +grammar Bf64 : f64 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec + prod{`` : fN(64)} ``:BfN(64) => `` + +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec +grammar Blist(syntax el, grammar BX : el) : el* + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec + prod{n : n, `el*` : el*} {{`%`_u32(n):Bu32} {el:BX^n{el <- `el*`}}} => el^n{el <- `el*`} + +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec +grammar Bname : name + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec + prod{name : name, `b*` : byte*} b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte) => name + -- if ($utf8(name!`%`_name.0) = b*{b <- `b*`}) + +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec +grammar Btypeidx : typeidx + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec +grammar Btagidx : tagidx + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec +grammar Bglobalidx : globalidx + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec +grammar Bmemidx : memidx + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec +grammar Btableidx : tableidx + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec +grammar Bfuncidx : funcidx + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec +grammar Bdataidx : dataidx + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec +grammar Belemidx : elemidx + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec +grammar Blocalidx : localidx + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec +grammar Blabelidx : labelidx + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{l : labelidx} l:Bu32 => l ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec @@ -7638,9 +8016,6 @@ grammar Bexterntype : externtype ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{jt : tagtype} {{0x04} {jt:Btagtype}} => TAG_externtype(jt) -;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec -syntax castop = (null?, null?) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec grammar Bcastop : castop ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec @@ -7673,9 +8048,6 @@ grammar Bcatch : catch ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod{l : labelidx} {{0x03} {l:Blabelidx}} => CATCH_ALL_REF_catch(l) -;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec -syntax memidxop = (memidx, memarg) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec grammar Bmemarg : memidxop ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec @@ -8789,9 +9161,6 @@ grammar Bstart : start* ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{x : idx} x:Bfuncidx => [START_start(x)] -;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec -syntax startopt = start* - ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bstartsec : start? ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec @@ -8826,9 +9195,6 @@ grammar Belemsec : elem* ;; ../../../../specification/wasm-latest/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-latest/5.4-binary.modules.spectec -syntax code = (local*, expr) - ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Blocals : local* ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec @@ -8870,9 +9236,6 @@ grammar Bdatacnt : u32* ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{n : n} `%`_u32(n):Bu32 => [`%`_u32(n)] -;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec -syntax nopt = u32* - ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bdatacntsec : u32? ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec @@ -9291,9 +9654,6 @@ grammar Thexmant : rat ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{p : nat, q : rat} {{p:Thexnum} {"."} {q:Thexfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) -;; ../../../../specification/wasm-latest/6.1-text.values.spectec -def $ieee_(N : N, rat : rat) : fNmag(N) - ;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tfloat : rat ;; ../../../../specification/wasm-latest/6.1-text.values.spectec @@ -9378,55 +9738,6 @@ grammar Tlist(syntax el, grammar TX : el) : el* prod{`el*` : el*} el:TX*{el <- `el*`} => el*{el <- `el*`} -- if (|el*{el <- `el*`}| < (2 ^ 32)) -;; ../../../../specification/wasm-latest/6.1-text.values.spectec -syntax idctxt = -{ - TYPES name?*, - TAGS name?*, - GLOBALS name?*, - MEMS name?*, - TABLES name?*, - FUNCS name?*, - DATAS name?*, - ELEMS name?*, - LOCALS name?*, - LABELS name?*, - FIELDS name?**, - TYPEDEFS deftype?* -} - -;; ../../../../specification/wasm-latest/6.1-text.values.spectec -syntax I = idctxt - -;; ../../../../specification/wasm-latest/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-latest/6.1-text.values.spectec:154.1-154.56 -def $concat_idctxt(idctxt*) : idctxt - ;; ../../../../specification/wasm-latest/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-latest/6.1-text.values.spectec:156.1-156.53 - def $concat_idctxt{I : I, `I'*` : I*}([I] ++ I'*{I' <- `I'*`}) = I +++ $concat_idctxt(I'*{I' <- `I'*`}) -} - -;; ../../../../specification/wasm-latest/6.1-text.values.spectec -relation Idctxt_ok: `|-%:OK`(idctxt) - ;; ../../../../specification/wasm-latest/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-latest/6.1-text.values.spectec grammar Tidx_(ids : name?*) : idx ;; ../../../../specification/wasm-latest/6.1-text.values.spectec @@ -10890,251 +11201,72 @@ grammar Texport_(I : I) : (export, idctxt) ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texportdots : () ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{"("} {"export"} {Tname} {")"}} => (``, ()).1 - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Timportdots : () - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{"("} {"import"} {Tname} {Tname} {")"}} => (``, ()).1 - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -def $dots : () - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Texporttagdots_(I : I) : () - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttagtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttagtype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Texportglobaldots_(I : I) : () - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Tglobaltype_(I)} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tglobaltype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Texportmemdots_(I : I) : () - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Tmemtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {"("} {"data"} {Tdatastring} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tmemtype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Texporttabledots_(I : I) : () - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttabletype_(I)} {Texpr_(I)?{}}} => (``, ()).1 - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {Treftype_(I)} {"("} {"elem"} {Telemlist_(I)} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttabletype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Texportfuncdots_(I : I) : () - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttypeuse_(I)} {Tlocal_(I)*{}} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttypeuse_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Texporttag_(I : I) : () - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Texportglobal_(I : I) : () - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Texportmem_(I : I) : () - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Texporttable_(I : I) : () - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Texportfunc_(I : I) : () - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Tdatamem_(I : I) : () - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Telemtable_(I : I) : () - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -syntax decl = - | TYPE(rectype : rectype) - | IMPORT(name : name, name : name, externtype : externtype) - | TAG(tagtype : tagtype) - | GLOBAL(globaltype : globaltype, expr : expr) - | MEMORY(memtype : memtype) - | TABLE(tabletype : tabletype, expr : expr) - | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) - | DATA(`byte*` : byte*, datamode : datamode) - | ELEM(reftype : reftype, `expr*` : expr*, elemmode : elemmode) - | START(funcidx : funcidx) - | EXPORT(name : name, externidx : externidx) - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -rec { - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:258.1-258.76 -def $typesd(decl*) : type* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:270.1-270.23 - def $typesd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:272.1-272.57 - def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -rec { - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:259.1-259.78 -def $importsd(decl*) : import* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:274.1-274.25 - def $importsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:276.1-276.61 - def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -rec { - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:260.1-260.75 -def $tagsd(decl*) : tag* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:278.1-278.22 - def $tagsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:280.1-280.55 - def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -rec { - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:261.1-261.78 -def $globalsd(decl*) : global* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:282.1-282.25 - def $globalsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:284.1-284.61 - def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -rec { - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:262.1-262.75 -def $memsd(decl*) : mem* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:286.1-286.22 - def $memsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:288.1-288.55 - def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} + prod{`` : ()} ``:{{"("} {"export"} {Tname} {")"}} => (``, ()).1 ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -rec { +grammar Timportdots : () + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{"("} {"import"} {Tname} {Tname} {")"}} => (``, ()).1 -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:263.1-263.77 -def $tablesd(decl*) : table* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:290.1-290.24 - def $tablesd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:292.1-292.59 - def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) - -- otherwise -} +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +grammar Texporttagdots_(I : I) : () + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttagtype_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttagtype_(I)}} => (``, ()).1 ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -rec { +grammar Texportglobaldots_(I : I) : () + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Tglobaltype_(I)} {Texpr_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tglobaltype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:264.1-264.76 -def $funcsd(decl*) : func* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:294.1-294.23 - def $funcsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:296.1-296.57 - def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +grammar Texportmemdots_(I : I) : () + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Tmemtype_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {"("} {"data"} {Tdatastring} {")"}} => (``, ()).1 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tmemtype_(I)}} => (``, ()).1 ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -rec { +grammar Texporttabledots_(I : I) : () + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttabletype_(I)} {Texpr_(I)?{}}} => (``, ()).1 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {Treftype_(I)} {"("} {"elem"} {Telemlist_(I)} {")"}} => (``, ()).1 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttabletype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:265.1-265.76 -def $datasd(decl*) : data* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:298.1-298.23 - def $datasd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:300.1-300.57 - def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) - -- otherwise -} +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +grammar Texportfuncdots_(I : I) : () + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttypeuse_(I)} {Tlocal_(I)*{}} {Texpr_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttypeuse_(I)}} => (``, ()).1 ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -rec { +grammar Texporttag_(I : I) : () -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:266.1-266.76 -def $elemsd(decl*) : elem* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:302.1-302.23 - def $elemsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:304.1-304.57 - def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +grammar Texportglobal_(I : I) : () ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -rec { +grammar Texportmem_(I : I) : () -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:267.1-267.77 -def $startsd(decl*) : start* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:306.1-306.24 - def $startsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:308.1-308.59 - def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +grammar Texporttable_(I : I) : () ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -rec { +grammar Texportfunc_(I : I) : () -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:268.1-268.78 -def $exportsd(decl*) : export* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:310.1-310.25 - def $exportsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:312.1-312.61 - def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +grammar Tdatamem_(I : I) : () ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -def $ordered(decl*) : bool - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - def $ordered{`decl*` : decl*}(decl*{decl <- `decl*`}) = true - -- if ($importsd(decl*{decl <- `decl*`}) = []) - ;; ../../../../specification/wasm-latest/6.4-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*`}) = [])) +grammar Telemtable_(I : I) : () ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tdecl_(I : I) : (decl, idctxt) @@ -11185,129 +11317,6 @@ grammar Tdecldots_(I : I) : (decl, idctxt)* ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (decl, idctxt)} [``]:Tdecl_(I)*{} => [``] -;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec -syntax A = nat - -;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec -syntax B = nat - -;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec -syntax sym = - | _FIRST(A_1 : A) - | _DOTS - | _LAST(A_n : A) - -;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec -syntax symsplit = - | _FIRST(A_1 : A) - | _LAST(A_2 : A) - -;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec -syntax recorddots = () - -;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec -syntax record = -{ - FIELD_1 A, - FIELD_2 A, - `...` recorddots -} - -;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec -syntax pth = - | PTHSYNTAX - -;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec -syntax T = nat - -;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec -relation NotationTypingPremise: `%`(nat) - -;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec -relation NotationTypingPremisedots: `...` - -;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec -relation NotationTypingScheme: `%`(nat) - ;; ../../../../specification/wasm-latest/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-latest/X.2-notation.typing.spectec -rec { - -;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec:20.1-20.83 -relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) - ;; ../../../../specification/wasm-latest/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-latest/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-latest/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-latest/X.3-notation.execution.spectec -relation NotationReduct: `~>%`(instr*) - ;; ../../../../specification/wasm-latest/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-latest/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-latest/X.3-notation.execution.spectec - rule 4{q_6 : num_(F64_numtype)}: - `~>%`([CONST_instr(F64_numtype, q_6)]) - -;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec -def $instrdots : instr* - -;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec -syntax label = - | `LABEL_%{%}`(n : n, `instr*` : instr*) - -;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec -syntax callframe = - | `FRAME_%{%}`(n : n, frame : frame) - -;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec -def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) - -;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec -rec { - -;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec:32.1-32.117 -def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) - ;; ../../../../specification/wasm-latest/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-latest/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-latest/X.4-notation.binary.spectec -syntax symdots = - | `%`(i : nat) - -- if (i = 0) - -;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec -def $var(syntax X) : nat - ;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec - def $var{syntax X}(syntax X) = 0 - ;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec grammar Bvar(syntax X) : () ;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec @@ -11336,24 +11345,15 @@ grammar Tvar(syntax X) : () grammar Tsym : A ;; ../../../../specification/wasm-latest/X.5-notation.text.spectec prod Tvar(syntax T) => $var(syntax A) - ;; ../../../../specification/wasm-latest/X.5-notation.text.spectec - prod (Tvar(syntax symdots) | Tvar(syntax T)) => $var(syntax A) - -;; ../../../../specification/wasm-latest/X.5-notation.text.spectec -grammar Tsymsplit : () - ;; ../../../../specification/wasm-latest/X.5-notation.text.spectec - prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 - ;; ../../../../specification/wasm-latest/X.5-notation.text.spectec - prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 - -;; ../../../../specification/wasm-latest/X.5-notation.text.spectec -syntax abbreviated = () - -;; ../../../../specification/wasm-latest/X.5-notation.text.spectec -syntax expanded = () + ;; ../../../../specification/wasm-latest/X.5-notation.text.spectec + prod (Tvar(syntax symdots) | Tvar(syntax T)) => $var(syntax A) ;; ../../../../specification/wasm-latest/X.5-notation.text.spectec -syntax syntax = () +grammar Tsymsplit : () + ;; ../../../../specification/wasm-latest/X.5-notation.text.spectec + prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 + ;; ../../../../specification/wasm-latest/X.5-notation.text.spectec + prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 ;; ../../../../specification/wasm-latest/X.5-notation.text.spectec grammar Tabbrev : () @@ -18103,583 +18103,961 @@ relation Step_read: `%~>%`(config, instr*) -- 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-latest/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-latest/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-latest/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-latest/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-latest/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-latest/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-latest/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-latest/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-latest/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-latest/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-latest/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-latest/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-latest/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-latest/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-latest/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-latest/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-latest/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-latest/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-latest/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-latest/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-latest/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-latest/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-latest/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-latest/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-latest/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-latest/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-latest/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-latest/4.3-execution.instructions.spectec +rec { + +;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:5.1-5.88 +relation Step: `%~>%`(config, config) + ;; ../../../../specification/wasm-latest/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-latest/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-latest/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-latest/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-latest/4.3-execution.instructions.spectec:41.1-43.36 + rule `ctxt-handler`{z : state, n : n, `catch*` : catch*, `instr*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:45.1-47.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-latest/4.3-execution.instructions.spectec:231.1-235.49 + rule throw{z : state, n : n, `val*` : val*, 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-latest/4.3-execution.instructions.spectec:309.1-310.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-latest/4.3-execution.instructions.spectec:322.1-323.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-latest/4.3-execution.instructions.spectec:336.1-338.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-latest/4.3-execution.instructions.spectec:340.1-342.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-latest/4.3-execution.instructions.spectec:351.1-354.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-latest/4.3-execution.instructions.spectec:356.1-357.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-latest/4.3-execution.instructions.spectec:417.1-418.51 + rule `elem.drop`{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:501.1-504.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-latest/4.3-execution.instructions.spectec:506.1-510.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-latest/4.3-execution.instructions.spectec:512.1-515.52 + rule `store-pack-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), Inn : Inn, c : num_((Inn : Inn <: numtype)), n : n, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : Inn <: numtype), c) STORE_instr((Inn : Inn <: 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-latest/4.3-execution.instructions.spectec:517.1-521.52 + rule `store-pack-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), Inn : Inn, c : num_((Inn : Inn <: numtype)), n : n, x : idx, ao : memarg, `b*` : byte*}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : Inn <: numtype), c) STORE_instr((Inn : Inn <: 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 : Inn <: numtype)), n, c))) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:523.1-526.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-latest/4.3-execution.instructions.spectec:528.1-531.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-latest/4.3-execution.instructions.spectec:534.1-537.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-latest/4.3-execution.instructions.spectec:539.1-544.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-latest/4.3-execution.instructions.spectec:553.1-556.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-latest/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-latest/4.3-execution.instructions.spectec:558.1-559.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-latest/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-latest/4.3-execution.instructions.spectec:619.1-620.51 + rule `data.drop`{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [`DATA.DROP`_instr(x)]), `%;%`_config($with_data(z, x, []), [])) - ;; ../../../../specification/wasm-latest/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-latest/4.3-execution.instructions.spectec:700.1-704.65 + rule `struct.new`{z : state, n : n, `val*` : val*, 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-latest/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-latest/4.3-execution.instructions.spectec:721.1-722.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-latest/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-latest/4.3-execution.instructions.spectec:724.1-727.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-latest/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-latest/4.3-execution.instructions.spectec:740.1-745.65 + rule `array.new_fixed`{z : state, n : n, `val*` : val*, 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-latest/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-latest/4.3-execution.instructions.spectec:785.1-786.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-latest/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-latest/4.3-execution.instructions.spectec:788.1-790.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-latest/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-latest/4.3-execution.instructions.spectec:792.1-795.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-latest/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-latest/4.3-execution.instructions.spectec +rec { - ;; ../../../../specification/wasm-latest/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-latest/4.3-execution.instructions.spectec:8.1-8.92 +relation Steps: `%~>*%`(config, config) + ;; ../../../../specification/wasm-latest/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-latest/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-latest/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-latest/4.3-execution.instructions.spectec +relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) ;; ../../../../specification/wasm-latest/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) + 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-latest/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-latest/4.4-execution.modules.spectec +rec { - ;; ../../../../specification/wasm-latest/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-latest/4.4-execution.modules.spectec:7.1-7.63 +def $alloctypes(type*) : deftype* + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:8.1-8.27 + def $alloctypes([]) = [] + ;; ../../../../specification/wasm-latest/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*`} + -- 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 (x!`%`_idx.0 = |deftype'*{deftype' <- `deftype'*`}|) +} - ;; ../../../../specification/wasm-latest/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-latest/4.4-execution.modules.spectec +def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) + ;; ../../../../specification/wasm-latest/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-latest/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-latest/4.4-execution.modules.spectec +rec { - ;; ../../../../specification/wasm-latest/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-latest/4.4-execution.modules.spectec:20.1-20.102 +def $alloctags(store : store, tagtype*) : (store, tagaddr*) + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:21.1-21.34 + def $alloctags{s : store}(s, []) = (s, []) + ;; ../../../../specification/wasm-latest/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'*`}) + -- if ((s_1, ja) = $alloctag(s, tagtype)) + -- if ((s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`})) +} - ;; ../../../../specification/wasm-latest/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-latest/4.4-execution.modules.spectec +def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, globaladdr) + ;; ../../../../specification/wasm-latest/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-latest/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-latest/4.4-execution.modules.spectec +rec { - ;; ../../../../specification/wasm-latest/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-latest/4.4-execution.modules.spectec:31.1-31.122 +def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:32.1-32.42 + def $allocglobals{s : store}(s, [], []) = (s, []) + ;; ../../../../specification/wasm-latest/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'*`}) + -- 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-latest/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-latest/4.4-execution.modules.spectec +def $allocmem(store : store, memtype : memtype) : (store, memaddr) + ;; ../../../../specification/wasm-latest/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-latest/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-latest/4.4-execution.modules.spectec +rec { - ;; ../../../../specification/wasm-latest/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-latest/4.4-execution.modules.spectec:42.1-42.102 +def $allocmems(store : store, memtype*) : (store, memaddr*) + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:43.1-43.34 + def $allocmems{s : store}(s, []) = (s, []) + ;; ../../../../specification/wasm-latest/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'*`}) + -- if ((s_1, ma) = $allocmem(s, memtype)) + -- if ((s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`})) +} - ;; ../../../../specification/wasm-latest/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-latest/4.4-execution.modules.spectec +def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, tableaddr) + ;; ../../../../specification/wasm-latest/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-latest/4.3-execution.instructions.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:5.1-5.88 -relation Step: `%~>%`(config, config) - ;; ../../../../specification/wasm-latest/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-latest/4.4-execution.modules.spectec:53.1-53.118 +def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:54.1-54.41 + def $alloctables{s : store}(s, [], []) = (s, []) + ;; ../../../../specification/wasm-latest/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'*`}) + -- 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-latest/4.4-execution.modules.spectec +def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst) : (store, funcaddr) + ;; ../../../../specification/wasm-latest/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-latest/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-latest/4.4-execution.modules.spectec +rec { - ;; ../../../../specification/wasm-latest/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-latest/4.4-execution.modules.spectec:64.1-64.133 +def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funcaddr*) + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:65.1-65.45 + def $allocfuncs{s : store}(s, [], [], []) = (s, []) + ;; ../../../../specification/wasm-latest/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'*`}) + -- 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-latest/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-latest/4.4-execution.modules.spectec +def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) + ;; ../../../../specification/wasm-latest/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-latest/4.3-execution.instructions.spectec:41.1-43.36 - rule `ctxt-handler`{z : state, n : n, `catch*` : catch*, `instr*` : instr*, z' : state, `instr'*` : instr*}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) - -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec +rec { - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:45.1-47.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-latest/4.4-execution.modules.spectec:75.1-75.118 +def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:76.1-76.40 + def $allocdatas{s : store}(s, [], []) = (s, []) + ;; ../../../../specification/wasm-latest/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'*`}) + -- 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-latest/4.3-execution.instructions.spectec:231.1-235.49 - rule throw{z : state, n : n, `val*` : val*, 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-latest/4.4-execution.modules.spectec +def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) + ;; ../../../../specification/wasm-latest/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-latest/4.3-execution.instructions.spectec:309.1-310.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-latest/4.4-execution.modules.spectec +rec { - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:322.1-323.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-latest/4.4-execution.modules.spectec:86.1-86.117 +def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:87.1-87.40 + def $allocelems{s : store}(s, [], []) = (s, []) + ;; ../../../../specification/wasm-latest/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'*`}) + -- 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-latest/4.3-execution.instructions.spectec:336.1-338.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-latest/4.4-execution.modules.spectec +def $allocexport(moduleinst : moduleinst, export : export) : exportinst + ;; ../../../../specification/wasm-latest/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-latest/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-latest/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-latest/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-latest/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-latest/4.3-execution.instructions.spectec:340.1-342.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-latest/4.4-execution.modules.spectec +def $allocexports(moduleinst : moduleinst, export*) : exportinst* + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec + def $allocexports{moduleinst : moduleinst, `export*` : export*}(moduleinst, export*{export <- `export*`}) = $allocexport(moduleinst, export)*{export <- `export*`} - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:351.1-354.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-latest/4.4-execution.modules.spectec +def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) + ;; ../../../../specification/wasm-latest/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*, `expr_G*` : expr*, `globaltype*` : globaltype*, `memtype*` : memtype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `expr_F*` : expr*, `local**` : local**, `x*` : idx*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : 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*`})) + -- if (fa*{fa <- `fa*`} = (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){}) + -- 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*`}[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-latest/4.3-execution.instructions.spectec:356.1-357.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-latest/4.4-execution.modules.spectec +def $rundata_(dataidx : dataidx, data : data) : instr* + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec + def $rundata_{x : idx, n : n, `b*` : byte*}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec + def $rundata_{x : idx, n : n, `b*` : byte*, 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-latest/4.3-execution.instructions.spectec:417.1-418.51 - rule `elem.drop`{z : state, x : idx}: - `%~>%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec +def $runelem_(elemidx : elemidx, elem : elem) : instr* + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec + def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec + def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [`ELEM.DROP`_instr(x)] + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec + def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*, 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-latest/4.3-execution.instructions.spectec:501.1-504.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-latest/4.4-execution.modules.spectec +rec { - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:506.1-510.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-latest/4.4-execution.modules.spectec:160.1-160.94 +def $evalglobals(state : state, globaltype*, expr*) : (state, val*) + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:161.1-161.41 + def $evalglobals{z : state}(z, [], []) = (z, []) + ;; ../../../../specification/wasm-latest/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]) + -- 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-latest/4.3-execution.instructions.spectec:512.1-515.52 - rule `store-pack-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), Inn : Inn, c : num_((Inn : Inn <: numtype)), n : n, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : Inn <: numtype), c) STORE_instr((Inn : Inn <: 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-latest/4.4-execution.modules.spectec +def $instantiate(store : store, module : module, externaddr*) : config + ;; ../../../../specification/wasm-latest/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*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, 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?`}) + -- 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*`}|){}, 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*`}|){})) + -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){})) + -- if (instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`}) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:517.1-521.52 - rule `store-pack-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), Inn : Inn, c : num_((Inn : Inn <: numtype)), n : n, x : idx, ao : memarg, `b*` : byte*}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : Inn <: numtype), c) STORE_instr((Inn : Inn <: 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 : Inn <: numtype)), n, c))) +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec +def $invoke(store : store, funcaddr : funcaddr, val*) : config + ;; ../../../../specification/wasm-latest/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*`} - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:523.1-526.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-latest/5.3-binary.instructions.spectec +syntax castop = (null?, null?) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:528.1-531.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-latest/5.3-binary.instructions.spectec +syntax memidxop = (memidx, memarg) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:534.1-537.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-latest/5.4-binary.modules.spectec +syntax startopt = start* - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:539.1-544.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-latest/5.4-binary.modules.spectec +syntax code = (local*, expr) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:553.1-556.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-latest/5.4-binary.modules.spectec +syntax nopt = u32* - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:558.1-559.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-latest/6.1-text.values.spectec +def $ieee_(N : N, rat : rat) : fNmag(N) + +;; ../../../../specification/wasm-latest/6.1-text.values.spectec +syntax idctxt = +{ + TYPES name?*, + TAGS name?*, + GLOBALS name?*, + MEMS name?*, + TABLES name?*, + FUNCS name?*, + DATAS name?*, + ELEMS name?*, + LOCALS name?*, + LABELS name?*, + FIELDS name?**, + TYPEDEFS deftype?* +} - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:619.1-620.51 - rule `data.drop`{z : state, x : idx}: - `%~>%`(`%;%`_config(z, [`DATA.DROP`_instr(x)]), `%;%`_config($with_data(z, x, []), [])) +;; ../../../../specification/wasm-latest/6.1-text.values.spectec +syntax I = idctxt - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:700.1-704.65 - rule `struct.new`{z : state, n : n, `val*` : val*, 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-latest/6.1-text.values.spectec +rec { - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:721.1-722.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-latest/6.1-text.values.spectec:154.1-154.56 +def $concat_idctxt(idctxt*) : idctxt + ;; ../../../../specification/wasm-latest/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-latest/6.1-text.values.spectec:156.1-156.53 + def $concat_idctxt{I : I, `I'*` : I*}([I] ++ I'*{I' <- `I'*`}) = I +++ $concat_idctxt(I'*{I' <- `I'*`}) +} - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:724.1-727.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-latest/6.1-text.values.spectec +relation Idctxt_ok: `|-%:OK`(idctxt) + ;; ../../../../specification/wasm-latest/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-latest/4.3-execution.instructions.spectec:740.1-745.65 - rule `array.new_fixed`{z : state, n : n, `val*` : val*, 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-latest/6.4-text.modules.spectec +def $dots : () - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:785.1-786.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-latest/6.4-text.modules.spectec +syntax decl = + | TYPE(rectype : rectype) + | IMPORT(name : name, name : name, externtype : externtype) + | TAG(tagtype : tagtype) + | GLOBAL(globaltype : globaltype, expr : expr) + | MEMORY(memtype : memtype) + | TABLE(tabletype : tabletype, expr : expr) + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) + | DATA(`byte*` : byte*, datamode : datamode) + | ELEM(reftype : reftype, `expr*` : expr*, elemmode : elemmode) + | START(funcidx : funcidx) + | EXPORT(name : name, externidx : externidx) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:788.1-790.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-latest/6.4-text.modules.spectec +rec { - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:792.1-795.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-latest/6.4-text.modules.spectec:258.1-258.76 +def $typesd(decl*) : type* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:270.1-270.23 + def $typesd([]) = [] + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:272.1-272.57 + def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) + -- otherwise } -;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:8.1-8.92 -relation Steps: `%~>*%`(config, config) - ;; ../../../../specification/wasm-latest/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-latest/6.4-text.modules.spectec:259.1-259.78 +def $importsd(decl*) : import* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:274.1-274.25 + def $importsd([]) = [] + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:276.1-276.61 + def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} - ;; ../../../../specification/wasm-latest/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-latest/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:260.1-260.75 +def $tagsd(decl*) : tag* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:278.1-278.22 + def $tagsd([]) = [] + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:280.1-280.55 + def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) + -- otherwise } -;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec -relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) - ;; ../../../../specification/wasm-latest/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-latest/6.4-text.modules.spectec +rec { -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:261.1-261.78 +def $globalsd(decl*) : global* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:282.1-282.25 + def $globalsd([]) = [] + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:284.1-284.61 + def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} + +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:7.1-7.63 -def $alloctypes(type*) : deftype* - ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:8.1-8.27 - def $alloctypes([]) = [] - ;; ../../../../specification/wasm-latest/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*`} - -- 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 (x!`%`_idx.0 = |deftype'*{deftype' <- `deftype'*`}|) +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:262.1-262.75 +def $memsd(decl*) : mem* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:286.1-286.22 + def $memsd([]) = [] + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:288.1-288.55 + def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) + -- otherwise } -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec -def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) - ;; ../../../../specification/wasm-latest/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-latest/6.4-text.modules.spectec +rec { -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:263.1-263.77 +def $tablesd(decl*) : table* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:290.1-290.24 + def $tablesd([]) = [] + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:292.1-292.59 + def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) + -- otherwise +} + +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:20.1-20.102 -def $alloctags(store : store, tagtype*) : (store, tagaddr*) - ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:21.1-21.34 - def $alloctags{s : store}(s, []) = (s, []) - ;; ../../../../specification/wasm-latest/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'*`}) - -- if ((s_1, ja) = $alloctag(s, tagtype)) - -- if ((s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`})) +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:264.1-264.76 +def $funcsd(decl*) : func* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:294.1-294.23 + def $funcsd([]) = [] + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:296.1-296.57 + def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) + -- otherwise } -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec -def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, globaladdr) - ;; ../../../../specification/wasm-latest/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-latest/6.4-text.modules.spectec +rec { -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:265.1-265.76 +def $datasd(decl*) : data* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:298.1-298.23 + def $datasd([]) = [] + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:300.1-300.57 + def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) + -- otherwise +} + +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:31.1-31.122 -def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) - ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:32.1-32.42 - def $allocglobals{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-latest/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'*`}) - -- 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-latest/6.4-text.modules.spectec:266.1-266.76 +def $elemsd(decl*) : elem* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:302.1-302.23 + def $elemsd([]) = [] + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:304.1-304.57 + def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) + -- otherwise } -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec -def $allocmem(store : store, memtype : memtype) : (store, memaddr) - ;; ../../../../specification/wasm-latest/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-latest/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:267.1-267.77 +def $startsd(decl*) : start* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:306.1-306.24 + def $startsd([]) = [] + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:308.1-308.59 + def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:42.1-42.102 -def $allocmems(store : store, memtype*) : (store, memaddr*) - ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:43.1-43.34 - def $allocmems{s : store}(s, []) = (s, []) - ;; ../../../../specification/wasm-latest/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'*`}) - -- if ((s_1, ma) = $allocmem(s, memtype)) - -- if ((s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`})) +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:268.1-268.78 +def $exportsd(decl*) : export* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:310.1-310.25 + def $exportsd([]) = [] + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:312.1-312.61 + def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) + -- otherwise } -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec -def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, tableaddr) - ;; ../../../../specification/wasm-latest/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-latest/6.4-text.modules.spectec +def $ordered(decl*) : bool + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + def $ordered{`decl*` : decl*}(decl*{decl <- `decl*`}) = true + -- if ($importsd(decl*{decl <- `decl*`}) = []) + ;; ../../../../specification/wasm-latest/6.4-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-latest/4.4-execution.modules.spectec -rec { +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec +syntax A = nat -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:53.1-53.118 -def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) - ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:54.1-54.41 - def $alloctables{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-latest/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'*`}) - -- 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-latest/X.1-notation.syntax.spectec +syntax B = nat -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec -def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst) : (store, funcaddr) - ;; ../../../../specification/wasm-latest/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-latest/X.1-notation.syntax.spectec +syntax sym = + | _FIRST(A_1 : A) + | _DOTS + | _LAST(A_n : A) -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec -rec { +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec +syntax symsplit = + | _FIRST(A_1 : A) + | _LAST(A_2 : A) -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:64.1-64.133 -def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funcaddr*) - ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:65.1-65.45 - def $allocfuncs{s : store}(s, [], [], []) = (s, []) - ;; ../../../../specification/wasm-latest/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'*`}) - -- 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-latest/X.1-notation.syntax.spectec +syntax recorddots = () + +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec +syntax record = +{ + FIELD_1 A, + FIELD_2 A, + `...` recorddots } -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec -def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) - ;; ../../../../specification/wasm-latest/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-latest/X.1-notation.syntax.spectec +syntax pth = + | PTHSYNTAX -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec -rec { +;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec +syntax T = nat -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:75.1-75.118 -def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) - ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:76.1-76.40 - def $allocdatas{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-latest/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'*`}) - -- 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-latest/X.2-notation.typing.spectec +relation NotationTypingPremise: `%`(nat) -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec -def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) - ;; ../../../../specification/wasm-latest/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-latest/X.2-notation.typing.spectec +relation NotationTypingPremisedots: `...` -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec +relation NotationTypingScheme: `%`(nat) + ;; ../../../../specification/wasm-latest/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-latest/X.2-notation.typing.spectec rec { -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:86.1-86.117 -def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) - ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:87.1-87.40 - def $allocelems{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-latest/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'*`}) - -- 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-latest/X.2-notation.typing.spectec:20.1-20.83 +relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) + ;; ../../../../specification/wasm-latest/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-latest/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-latest/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-latest/4.4-execution.modules.spectec -def $allocexport(moduleinst : moduleinst, export : export) : exportinst - ;; ../../../../specification/wasm-latest/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-latest/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-latest/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-latest/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-latest/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-latest/X.3-notation.execution.spectec +relation NotationReduct: `~>%`(instr*) + ;; ../../../../specification/wasm-latest/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-latest/4.4-execution.modules.spectec -def $allocexports(moduleinst : moduleinst, export*) : exportinst* - ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec - def $allocexports{moduleinst : moduleinst, `export*` : export*}(moduleinst, export*{export <- `export*`}) = $allocexport(moduleinst, export)*{export <- `export*`} + ;; ../../../../specification/wasm-latest/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-latest/4.4-execution.modules.spectec -def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) - ;; ../../../../specification/wasm-latest/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*, `expr_G*` : expr*, `globaltype*` : globaltype*, `memtype*` : memtype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `expr_F*` : expr*, `local**` : local**, `x*` : idx*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : 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*`})) - -- if (fa*{fa <- `fa*`} = (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){}) - -- 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*`}[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-latest/X.3-notation.execution.spectec + rule 4{q_6 : num_(F64_numtype)}: + `~>%`([CONST_instr(F64_numtype, q_6)]) -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec -def $rundata_(dataidx : dataidx, data : data) : instr* - ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec - def $rundata_{x : idx, n : n, `b*` : byte*}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] - ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec - def $rundata_{x : idx, n : n, `b*` : byte*, 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-latest/X.3-notation.execution.spectec +def $instrdots : instr* -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec -def $runelem_(elemidx : elemidx, elem : elem) : instr* - ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec - def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] - ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec - def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [`ELEM.DROP`_instr(x)] - ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec - def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*, 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-latest/X.3-notation.execution.spectec +syntax label = + | `LABEL_%{%}`(n : n, `instr*` : instr*) -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec +syntax callframe = + | `FRAME_%{%}`(n : n, frame : frame) + +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec +def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) + +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec rec { -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:160.1-160.94 -def $evalglobals(state : state, globaltype*, expr*) : (state, val*) - ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:161.1-161.41 - def $evalglobals{z : state}(z, [], []) = (z, []) - ;; ../../../../specification/wasm-latest/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]) - -- 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-latest/X.3-notation.execution.spectec:32.1-32.117 +def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) + ;; ../../../../specification/wasm-latest/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-latest/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-latest/4.4-execution.modules.spectec -def $instantiate(store : store, module : module, externaddr*) : config - ;; ../../../../specification/wasm-latest/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*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, 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?`}) - -- 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*`}|){}, 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*`}|){})) - -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){})) - -- if (instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`}) +;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec +syntax symdots = + | `%`(i : nat) + -- if (i = 0) + +;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec +def $var(syntax X) : nat + ;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec + def $var{syntax X}(syntax X) = 0 + +;; ../../../../specification/wasm-latest/X.5-notation.text.spectec +syntax abbreviated = () -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec -def $invoke(store : store, funcaddr : funcaddr, val*) : config - ;; ../../../../specification/wasm-latest/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*`} +;; ../../../../specification/wasm-latest/X.5-notation.text.spectec +syntax expanded = () + +;; ../../../../specification/wasm-latest/X.5-notation.text.spectec +syntax syntax = () ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bbyte : byte @@ -19003,9 +19381,6 @@ grammar Bexterntype : externtype ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{jt : tagtype} {{0x04} {jt:Btagtype}} => TAG_externtype(jt) -;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec -syntax castop = (null?, null?) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec grammar Bcastop : castop ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec @@ -19038,9 +19413,6 @@ grammar Bcatch : catch ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod{l : labelidx} {{0x03} {l:Blabelidx}} => CATCH_ALL_REF_catch(l) -;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec -syntax memidxop = (memidx, memarg) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec grammar Bmemarg : memidxop ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec @@ -20154,9 +20526,6 @@ grammar Bstart : start* ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{x : idx} x:Bfuncidx => [START_start(x)] -;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec -syntax startopt = start* - ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bstartsec : start? ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec @@ -20191,9 +20560,6 @@ grammar Belemsec : elem* ;; ../../../../specification/wasm-latest/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-latest/5.4-binary.modules.spectec -syntax code = (local*, expr) - ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Blocals : local* ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec @@ -20235,9 +20601,6 @@ grammar Bdatacnt : u32* ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{n : n} `%`_u32(n):Bu32 => [`%`_u32(n)] -;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec -syntax nopt = u32* - ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bdatacntsec : u32? ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec @@ -20656,9 +21019,6 @@ grammar Thexmant : rat ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{p : nat, q : rat} {{p:Thexnum} {"."} {q:Thexfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) -;; ../../../../specification/wasm-latest/6.1-text.values.spectec -def $ieee_(N : N, rat : rat) : fNmag(N) - ;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tfloat : rat ;; ../../../../specification/wasm-latest/6.1-text.values.spectec @@ -20743,55 +21103,6 @@ grammar Tlist(syntax el, grammar TX : el) : el* prod{`el*` : el*} el:TX*{el <- `el*`} => el*{el <- `el*`} -- if (|el*{el <- `el*`}| < (2 ^ 32)) -;; ../../../../specification/wasm-latest/6.1-text.values.spectec -syntax idctxt = -{ - TYPES name?*, - TAGS name?*, - GLOBALS name?*, - MEMS name?*, - TABLES name?*, - FUNCS name?*, - DATAS name?*, - ELEMS name?*, - LOCALS name?*, - LABELS name?*, - FIELDS name?**, - TYPEDEFS deftype?* -} - -;; ../../../../specification/wasm-latest/6.1-text.values.spectec -syntax I = idctxt - -;; ../../../../specification/wasm-latest/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-latest/6.1-text.values.spectec:154.1-154.56 -def $concat_idctxt(idctxt*) : idctxt - ;; ../../../../specification/wasm-latest/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-latest/6.1-text.values.spectec:156.1-156.53 - def $concat_idctxt{I : I, `I'*` : I*}([I] ++ I'*{I' <- `I'*`}) = I +++ $concat_idctxt(I'*{I' <- `I'*`}) -} - -;; ../../../../specification/wasm-latest/6.1-text.values.spectec -relation Idctxt_ok: `|-%:OK`(idctxt) - ;; ../../../../specification/wasm-latest/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-latest/6.1-text.values.spectec grammar Tidx_(ids : name?*) : idx ;; ../../../../specification/wasm-latest/6.1-text.values.spectec @@ -22255,251 +22566,72 @@ grammar Texport_(I : I) : (export, idctxt) ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texportdots : () ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{"("} {"export"} {Tname} {")"}} => (``, ()).1 - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Timportdots : () - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{"("} {"import"} {Tname} {Tname} {")"}} => (``, ()).1 - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -def $dots : () - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Texporttagdots_(I : I) : () - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttagtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttagtype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Texportglobaldots_(I : I) : () - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Tglobaltype_(I)} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tglobaltype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Texportmemdots_(I : I) : () - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Tmemtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {"("} {"data"} {Tdatastring} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tmemtype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Texporttabledots_(I : I) : () - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttabletype_(I)} {Texpr_(I)?{}}} => (``, ()).1 - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {Treftype_(I)} {"("} {"elem"} {Telemlist_(I)} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttabletype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Texportfuncdots_(I : I) : () - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttypeuse_(I)} {Tlocal_(I)*{}} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttypeuse_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Texporttag_(I : I) : () - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Texportglobal_(I : I) : () - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Texportmem_(I : I) : () - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Texporttable_(I : I) : () - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Texportfunc_(I : I) : () - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Tdatamem_(I : I) : () - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Telemtable_(I : I) : () - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -syntax decl = - | TYPE(rectype : rectype) - | IMPORT(name : name, name : name, externtype : externtype) - | TAG(tagtype : tagtype) - | GLOBAL(globaltype : globaltype, expr : expr) - | MEMORY(memtype : memtype) - | TABLE(tabletype : tabletype, expr : expr) - | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) - | DATA(`byte*` : byte*, datamode : datamode) - | ELEM(reftype : reftype, `expr*` : expr*, elemmode : elemmode) - | START(funcidx : funcidx) - | EXPORT(name : name, externidx : externidx) - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -rec { - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:258.1-258.76 -def $typesd(decl*) : type* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:270.1-270.23 - def $typesd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:272.1-272.57 - def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -rec { - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:259.1-259.78 -def $importsd(decl*) : import* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:274.1-274.25 - def $importsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:276.1-276.61 - def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -rec { - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:260.1-260.75 -def $tagsd(decl*) : tag* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:278.1-278.22 - def $tagsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:280.1-280.55 - def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -rec { - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:261.1-261.78 -def $globalsd(decl*) : global* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:282.1-282.25 - def $globalsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:284.1-284.61 - def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -rec { - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:262.1-262.75 -def $memsd(decl*) : mem* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:286.1-286.22 - def $memsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:288.1-288.55 - def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} + prod{`` : ()} ``:{{"("} {"export"} {Tname} {")"}} => (``, ()).1 ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -rec { +grammar Timportdots : () + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{"("} {"import"} {Tname} {Tname} {")"}} => (``, ()).1 -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:263.1-263.77 -def $tablesd(decl*) : table* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:290.1-290.24 - def $tablesd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:292.1-292.59 - def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) - -- otherwise -} +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +grammar Texporttagdots_(I : I) : () + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttagtype_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttagtype_(I)}} => (``, ()).1 ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -rec { +grammar Texportglobaldots_(I : I) : () + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Tglobaltype_(I)} {Texpr_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tglobaltype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:264.1-264.76 -def $funcsd(decl*) : func* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:294.1-294.23 - def $funcsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:296.1-296.57 - def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +grammar Texportmemdots_(I : I) : () + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Tmemtype_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {"("} {"data"} {Tdatastring} {")"}} => (``, ()).1 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tmemtype_(I)}} => (``, ()).1 ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -rec { +grammar Texporttabledots_(I : I) : () + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttabletype_(I)} {Texpr_(I)?{}}} => (``, ()).1 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {Treftype_(I)} {"("} {"elem"} {Telemlist_(I)} {")"}} => (``, ()).1 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttabletype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:265.1-265.76 -def $datasd(decl*) : data* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:298.1-298.23 - def $datasd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:300.1-300.57 - def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) - -- otherwise -} +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +grammar Texportfuncdots_(I : I) : () + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttypeuse_(I)} {Tlocal_(I)*{}} {Texpr_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttypeuse_(I)}} => (``, ()).1 ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -rec { +grammar Texporttag_(I : I) : () -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:266.1-266.76 -def $elemsd(decl*) : elem* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:302.1-302.23 - def $elemsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:304.1-304.57 - def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +grammar Texportglobal_(I : I) : () ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -rec { +grammar Texportmem_(I : I) : () -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:267.1-267.77 -def $startsd(decl*) : start* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:306.1-306.24 - def $startsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:308.1-308.59 - def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +grammar Texporttable_(I : I) : () ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -rec { +grammar Texportfunc_(I : I) : () -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:268.1-268.78 -def $exportsd(decl*) : export* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:310.1-310.25 - def $exportsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:312.1-312.61 - def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +grammar Tdatamem_(I : I) : () ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -def $ordered(decl*) : bool - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - def $ordered{`decl*` : decl*}(decl*{decl <- `decl*`}) = true - -- if ($importsd(decl*{decl <- `decl*`}) = []) - ;; ../../../../specification/wasm-latest/6.4-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*`}) = [])) +grammar Telemtable_(I : I) : () ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tdecl_(I : I) : (decl, idctxt) @@ -22524,154 +22656,31 @@ grammar Tdecl_(I : I) : (decl, idctxt) ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (start, idctxt)} ``:Tstart_(I) => (`` : (start, idctxt) <: (decl, idctxt)) ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : (export, idctxt)} ``:Texport_(I) => (`` : (export, idctxt) <: (decl, idctxt)) - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Tmodule : module - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `I*` : I*, `decl*` : decl*, I' : I} {{"("} {"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-latest/6.4-text.modules.spectec -grammar Tdecldots_(I : I) : (decl, idctxt)* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : (decl, idctxt)} [``]:Tdecl_(I)*{} => [``] - -;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec -syntax A = nat - -;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec -syntax B = nat - -;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec -syntax sym = - | _FIRST(A_1 : A) - | _DOTS - | _LAST(A_n : A) - -;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec -syntax symsplit = - | _FIRST(A_1 : A) - | _LAST(A_2 : A) - -;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec -syntax recorddots = () - -;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec -syntax record = -{ - FIELD_1 A, - FIELD_2 A, - `...` recorddots -} - -;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec -syntax pth = - | PTHSYNTAX - -;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec -syntax T = nat - -;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec -relation NotationTypingPremise: `%`(nat) - -;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec -relation NotationTypingPremisedots: `...` - -;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec -relation NotationTypingScheme: `%`(nat) - ;; ../../../../specification/wasm-latest/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-latest/X.2-notation.typing.spectec -rec { - -;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec:20.1-20.83 -relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) - ;; ../../../../specification/wasm-latest/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-latest/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-latest/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-latest/X.3-notation.execution.spectec -relation NotationReduct: `~>%`(instr*) - ;; ../../../../specification/wasm-latest/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-latest/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-latest/X.3-notation.execution.spectec - rule 4{q_6 : num_(F64_numtype)}: - `~>%`([CONST_instr(F64_numtype, q_6)]) - -;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec -def $instrdots : instr* - -;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec -syntax label = - | `LABEL_%{%}`(n : n, `instr*` : instr*) - -;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec -syntax callframe = - | `FRAME_%{%}`(n : n, frame : frame) - -;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec -def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) - -;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec -rec { - -;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec:32.1-32.117 -def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) - ;; ../../../../specification/wasm-latest/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-latest/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'*`})) -} + prod{`` : (export, idctxt)} ``:Texport_(I) => (`` : (export, idctxt) <: (decl, idctxt)) -;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec -syntax symdots = - | `%`(i : nat) - -- if (i = 0) +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +grammar Tmodule : module + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `I*` : I*, `decl*` : decl*, I' : I} {{"("} {"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-latest/X.4-notation.binary.spectec -def $var(syntax X) : nat - ;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec - def $var{syntax X}(syntax X) = 0 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +grammar Tdecldots_(I : I) : (decl, idctxt)* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : (decl, idctxt)} [``]:Tdecl_(I)*{} => [``] ;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec grammar Bvar(syntax X) : () @@ -22711,15 +22720,6 @@ grammar Tsymsplit : () ;; ../../../../specification/wasm-latest/X.5-notation.text.spectec prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 -;; ../../../../specification/wasm-latest/X.5-notation.text.spectec -syntax abbreviated = () - -;; ../../../../specification/wasm-latest/X.5-notation.text.spectec -syntax expanded = () - -;; ../../../../specification/wasm-latest/X.5-notation.text.spectec -syntax syntax = () - ;; ../../../../specification/wasm-latest/X.5-notation.text.spectec grammar Tabbrev : () @@ -29502,728 +29502,1107 @@ relation Step_read: `%~>%`(config, instr*) -- if ((i!`%`_num_.0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-latest/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) + 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-latest/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-latest/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-latest/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-latest/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-latest/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-latest/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-latest/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-latest/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)]) + -- if (j!`%`_num_.0 < |$data(z, y).BYTES_datainst|) + -- otherwise + + ;; ../../../../specification/wasm-latest/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-latest/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])]) + -- if (x!`%`_idx.0 < |$moduleinst(z).FUNCS_moduleinst|) + + ;; ../../../../specification/wasm-latest/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-latest/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-latest/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-latest/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-latest/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 (|`val*`| = |`zt*`|) + -- (if ($default_($unpack(zt)) = ?(val)))*{val <- `val*`, zt <- `zt*`} + + ;; ../../../../specification/wasm-latest/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-latest/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)]) + -- if (i!`%`_u32.0 < |zt*{zt <- `zt*`}|) + -- if (i!`%`_u32.0 < |$structinst(z)[a].FIELDS_structinst|) + -- if (a < |$structinst(z)|) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + + ;; ../../../../specification/wasm-latest/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-latest/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-latest/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-latest/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-latest/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))]) + -- (if ($cunpack(zt) =/= ?()))^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-latest/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-latest/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 (a < |$arrayinst(z)|) + -- if (i!`%`_num_.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-latest/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)]) + -- if (i!`%`_num_.0 < |$arrayinst(z)[a].FIELDS_arrayinst|) + -- if (a < |$arrayinst(z)|) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-latest/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-latest/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|))]) + -- if (a < |$arrayinst(z)|) + + ;; ../../../../specification/wasm-latest/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-latest/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 (a < |$arrayinst(z)|) + -- if ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-latest/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-latest/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-latest/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-latest/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-latest/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 (a_1 < |$arrayinst(z)|) + -- if ((i_1!`%`_num_.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-latest/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 (a_2 < |$arrayinst(z)|) + -- if ((i_2!`%`_num_.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-latest/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-latest/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-latest/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-latest/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-latest/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 + 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 (a < |$arrayinst(z)|) + -- if ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-latest/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|)) + 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-latest/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)]), []) + 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-latest/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)]) + 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 (i_1!`%`_num_.0 <= i_2!`%`_num_.0) + -- if (j!`%`_num_.0 < |$elem(z, y).REFS_eleminst|) + -- if (ref = $elem(z, y).REFS_eleminst[j!`%`_num_.0]) ;; ../../../../specification/wasm-latest/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 + 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-latest/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|)) + 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 (a < |$arrayinst(z)|) + -- if ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-latest/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)]), []) + 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-latest/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-latest/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)]) - -- if (j!`%`_num_.0 < |$data(z, y).BYTES_datainst|) + 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)]) + -- if ($cunpack(zt) =/= ?()) -- 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-latest/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-latest/4.3-execution.instructions.spectec +rec { - ;; ../../../../specification/wasm-latest/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])]) - -- if (x!`%`_idx.0 < |$moduleinst(z).FUNCS_moduleinst|) +;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:5.1-5.88 +relation Step: `%~>%`(config, config) + ;; ../../../../specification/wasm-latest/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-latest/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-latest/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-latest/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-latest/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-latest/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-latest/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-latest/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-latest/4.3-execution.instructions.spectec:41.1-43.36 + rule `ctxt-handler`{z : state, n : n, `catch*` : catch*, `instr*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) - ;; ../../../../specification/wasm-latest/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 (|`val*`| = |`zt*`|) - -- (if ($default_($unpack(zt)) = ?(val)))*{val <- `val*`, zt <- `zt*`} + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:45.1-47.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-latest/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-latest/4.3-execution.instructions.spectec:231.1-235.49 + rule throw{z : state, n : n, `val*` : val*, 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 (x!`%`_idx.0 < |$tagaddr(z)|) + -- if (exn = {TAG $tagaddr(z)[x!`%`_idx.0], FIELDS val^n{val <- `val*`}}) - ;; ../../../../specification/wasm-latest/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)]) - -- if (i!`%`_u32.0 < |zt*{zt <- `zt*`}|) - -- if (i!`%`_u32.0 < |$structinst(z)[a].FIELDS_structinst|) - -- if (a < |$structinst(z)|) - -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:309.1-310.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-latest/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-latest/4.3-execution.instructions.spectec:322.1-323.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-latest/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-latest/4.3-execution.instructions.spectec:336.1-338.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-latest/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-latest/4.3-execution.instructions.spectec:340.1-342.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-latest/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-latest/4.3-execution.instructions.spectec:351.1-354.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 ($growtable($table(z, x), n, ref) =/= ?()) + -- if (ti = !($growtable($table(z, x), n, ref))) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:356.1-357.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-latest/4.3-execution.instructions.spectec:417.1-418.51 + rule `elem.drop`{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:501.1-504.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-latest/4.3-execution.instructions.spectec:506.1-510.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-latest/4.3-execution.instructions.spectec:512.1-515.52 + rule `store-pack-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), Inn : Inn, c : num_((Inn : Inn <: numtype)), n : n, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : Inn <: numtype), c) STORE_instr((Inn : Inn <: 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-latest/4.3-execution.instructions.spectec:517.1-521.52 + rule `store-pack-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), Inn : Inn, c : num_((Inn : Inn <: numtype)), n : n, x : idx, ao : memarg, `b*` : byte*}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : Inn <: numtype), c) STORE_instr((Inn : Inn <: 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 : Inn <: numtype)), n, c))) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:523.1-526.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-latest/4.3-execution.instructions.spectec:528.1-531.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-latest/4.3-execution.instructions.spectec:534.1-537.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-latest/4.3-execution.instructions.spectec:539.1-544.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 (j!`%`_laneidx.0 < |$lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)|) + -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_laneidx.0]!`%`_lane_.0))) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:553.1-556.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 ($growmem($mem(z, x), n) =/= ?()) + -- if (mi = !($growmem($mem(z, x), n))) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:558.1-559.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-latest/4.3-execution.instructions.spectec:619.1-620.51 + rule `data.drop`{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [`DATA.DROP`_instr(x)]), `%;%`_config($with_data(z, x, []), [])) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:700.1-704.65 + rule `struct.new`{z : state, n : n, `val*` : val*, 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-latest/4.3-execution.instructions.spectec:721.1-722.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-latest/4.3-execution.instructions.spectec:724.1-727.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)), [])) + -- if (i!`%`_u32.0 < |zt*{zt <- `zt*`}|) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - ;; ../../../../specification/wasm-latest/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))]) - -- (if ($cunpack(zt) =/= ?()))^n{} + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:740.1-745.65 + rule `array.new_fixed`{z : state, n : n, `val*` : val*, 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 ($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)]) + -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}})) - ;; ../../../../specification/wasm-latest/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-latest/4.3-execution.instructions.spectec:785.1-786.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-latest/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]) + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:788.1-790.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 (a < |$arrayinst(z)|) -- if (i!`%`_num_.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) - ;; ../../../../specification/wasm-latest/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)]) - -- if (i!`%`_num_.0 < |$arrayinst(z)[a].FIELDS_arrayinst|) - -- if (a < |$arrayinst(z)|) + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:792.1-795.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-latest/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-latest/4.3-execution.instructions.spectec +rec { - ;; ../../../../specification/wasm-latest/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|))]) - -- if (a < |$arrayinst(z)|) +;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:8.1-8.92 +relation Steps: `%~>*%`(config, config) + ;; ../../../../specification/wasm-latest/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-latest/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-latest/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-latest/4.3-execution.instructions.spectec +relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) ;; ../../../../specification/wasm-latest/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 (a < |$arrayinst(z)|) - -- if ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + 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-latest/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-latest/4.4-execution.modules.spectec +rec { - ;; ../../../../specification/wasm-latest/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-latest/4.4-execution.modules.spectec:7.1-7.63 +def $alloctypes(type*) : deftype* + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:8.1-8.27 + def $alloctypes([]) = [] + ;; ../../../../specification/wasm-latest/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*`} + -- 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 (x!`%`_idx.0 = |deftype'*{deftype' <- `deftype'*`}|) +} - ;; ../../../../specification/wasm-latest/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-latest/4.4-execution.modules.spectec +def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) + ;; ../../../../specification/wasm-latest/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-latest/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-latest/4.4-execution.modules.spectec +rec { - ;; ../../../../specification/wasm-latest/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 (a_1 < |$arrayinst(z)|) - -- if ((i_1!`%`_num_.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:20.1-20.102 +def $alloctags(store : store, tagtype*) : (store, tagaddr*) + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:21.1-21.34 + def $alloctags{s : store}(s, []) = (s, []) + ;; ../../../../specification/wasm-latest/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'*`}) + -- if ((s_1, ja) = $alloctag(s, tagtype)) + -- if ((s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`})) +} - ;; ../../../../specification/wasm-latest/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 (a_2 < |$arrayinst(z)|) - -- if ((i_2!`%`_num_.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec +def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, globaladdr) + ;; ../../../../specification/wasm-latest/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-latest/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-latest/4.4-execution.modules.spectec +rec { - ;; ../../../../specification/wasm-latest/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-latest/4.4-execution.modules.spectec:31.1-31.122 +def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:32.1-32.42 + def $allocglobals{s : store}(s, [], []) = (s, []) + ;; ../../../../specification/wasm-latest/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'*`}) + -- 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-latest/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-latest/4.4-execution.modules.spectec +def $allocmem(store : store, memtype : memtype) : (store, memaddr) + ;; ../../../../specification/wasm-latest/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-latest/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-latest/4.4-execution.modules.spectec +rec { - ;; ../../../../specification/wasm-latest/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 (a < |$arrayinst(z)|) - -- if ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:42.1-42.102 +def $allocmems(store : store, memtype*) : (store, memaddr*) + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:43.1-43.34 + def $allocmems{s : store}(s, []) = (s, []) + ;; ../../../../specification/wasm-latest/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'*`}) + -- if ((s_1, ma) = $allocmem(s, memtype)) + -- if ((s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`})) +} - ;; ../../../../specification/wasm-latest/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-latest/4.4-execution.modules.spectec +def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, tableaddr) + ;; ../../../../specification/wasm-latest/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-latest/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-latest/4.4-execution.modules.spectec +rec { - ;; ../../../../specification/wasm-latest/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 (j!`%`_num_.0 < |$elem(z, y).REFS_eleminst|) - -- if (ref = $elem(z, y).REFS_eleminst[j!`%`_num_.0]) +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:53.1-53.118 +def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:54.1-54.41 + def $alloctables{s : store}(s, [], []) = (s, []) + ;; ../../../../specification/wasm-latest/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'*`}) + -- 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-latest/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-latest/4.4-execution.modules.spectec +def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst) : (store, funcaddr) + ;; ../../../../specification/wasm-latest/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-latest/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 (a < |$arrayinst(z)|) - -- if ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec +rec { - ;; ../../../../specification/wasm-latest/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-latest/4.4-execution.modules.spectec:64.1-64.133 +def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funcaddr*) + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:65.1-65.45 + def $allocfuncs{s : store}(s, [], [], []) = (s, []) + ;; ../../../../specification/wasm-latest/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'*`}) + -- 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-latest/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-latest/4.4-execution.modules.spectec +def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) + ;; ../../../../specification/wasm-latest/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-latest/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:75.1-75.118 +def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:76.1-76.40 + def $allocdatas{s : store}(s, [], []) = (s, []) + ;; ../../../../specification/wasm-latest/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'*`}) + -- 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-latest/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)]) - -- if ($cunpack(zt) =/= ?()) - -- 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-latest/4.4-execution.modules.spectec +def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) + ;; ../../../../specification/wasm-latest/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-latest/4.3-execution.instructions.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:5.1-5.88 -relation Step: `%~>%`(config, config) - ;; ../../../../specification/wasm-latest/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-latest/4.4-execution.modules.spectec:86.1-86.117 +def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:87.1-87.40 + def $allocelems{s : store}(s, [], []) = (s, []) + ;; ../../../../specification/wasm-latest/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'*`}) + -- 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-latest/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-latest/4.4-execution.modules.spectec +def $allocexport(moduleinst : moduleinst, export : export) : exportinst + ;; ../../../../specification/wasm-latest/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-latest/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-latest/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-latest/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-latest/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-latest/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-latest/4.4-execution.modules.spectec +def $allocexports(moduleinst : moduleinst, export*) : exportinst* + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec + def $allocexports{moduleinst : moduleinst, `export*` : export*}(moduleinst, export*{export <- `export*`}) = $allocexport(moduleinst, export)*{export <- `export*`} - ;; ../../../../specification/wasm-latest/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-latest/4.4-execution.modules.spectec +def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) + ;; ../../../../specification/wasm-latest/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*, `expr_G*` : expr*, `globaltype*` : globaltype*, `memtype*` : memtype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `expr_F*` : expr*, `local**` : local**, `x*` : idx*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : 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*`})) + -- if (fa*{fa <- `fa*`} = (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){}) + -- 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*`}[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-latest/4.3-execution.instructions.spectec:41.1-43.36 - rule `ctxt-handler`{z : state, n : n, `catch*` : catch*, `instr*` : instr*, z' : state, `instr'*` : instr*}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) - -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec +def $rundata_(dataidx : dataidx, data : data) : instr* + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec + def $rundata_{x : idx, n : n, `b*` : byte*}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec + def $rundata_{x : idx, n : n, `b*` : byte*, 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-latest/4.3-execution.instructions.spectec:45.1-47.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-latest/4.4-execution.modules.spectec +def $runelem_(elemidx : elemidx, elem : elem) : instr* + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec + def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec + def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [`ELEM.DROP`_instr(x)] + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec + def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*, 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-latest/4.3-execution.instructions.spectec:231.1-235.49 - rule throw{z : state, n : n, `val*` : val*, 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 (x!`%`_idx.0 < |$tagaddr(z)|) - -- if (exn = {TAG $tagaddr(z)[x!`%`_idx.0], FIELDS val^n{val <- `val*`}}) +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec +rec { - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:309.1-310.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-latest/4.4-execution.modules.spectec:160.1-160.94 +def $evalglobals(state : state, globaltype*, expr*) : (state, val*) + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:161.1-161.41 + def $evalglobals{z : state}(z, [], []) = (z, []) + ;; ../../../../specification/wasm-latest/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]) + -- 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-latest/4.3-execution.instructions.spectec:322.1-323.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-latest/4.4-execution.modules.spectec +def $instantiate(store : store, module : module, externaddr*) : config + ;; ../../../../specification/wasm-latest/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*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, 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?`}) + -- 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*`}|){}, 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*`}|){})) + -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){})) + -- if (instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`}) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:336.1-338.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-latest/4.4-execution.modules.spectec +def $invoke(store : store, funcaddr : funcaddr, val*) : config + ;; ../../../../specification/wasm-latest/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*`} - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:340.1-342.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-latest/5.3-binary.instructions.spectec +syntax castop = (null?, null?) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:351.1-354.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 ($growtable($table(z, x), n, ref) =/= ?()) - -- if (ti = !($growtable($table(z, x), n, ref))) +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec +syntax memidxop = (memidx, memarg) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:356.1-357.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-latest/5.4-binary.modules.spectec +syntax startopt = start* - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:417.1-418.51 - rule `elem.drop`{z : state, x : idx}: - `%~>%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec +syntax code = (local*, expr) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:501.1-504.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-latest/5.4-binary.modules.spectec +syntax nopt = u32* - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:506.1-510.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-latest/6.1-text.values.spectec +def $ieee_(N : N, rat : rat) : fNmag(N) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:512.1-515.52 - rule `store-pack-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), Inn : Inn, c : num_((Inn : Inn <: numtype)), n : n, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : Inn <: numtype), c) STORE_instr((Inn : Inn <: 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-latest/6.1-text.values.spectec +syntax idctxt = +{ + TYPES name?*, + TAGS name?*, + GLOBALS name?*, + MEMS name?*, + TABLES name?*, + FUNCS name?*, + DATAS name?*, + ELEMS name?*, + LOCALS name?*, + LABELS name?*, + FIELDS name?**, + TYPEDEFS deftype?* +} - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:517.1-521.52 - rule `store-pack-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), Inn : Inn, c : num_((Inn : Inn <: numtype)), n : n, x : idx, ao : memarg, `b*` : byte*}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : Inn <: numtype), c) STORE_instr((Inn : Inn <: 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 : Inn <: numtype)), n, c))) +;; ../../../../specification/wasm-latest/6.1-text.values.spectec +syntax I = idctxt - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:523.1-526.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-latest/6.1-text.values.spectec +rec { - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:528.1-531.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-latest/6.1-text.values.spectec:154.1-154.56 +def $concat_idctxt(idctxt*) : idctxt + ;; ../../../../specification/wasm-latest/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-latest/6.1-text.values.spectec:156.1-156.53 + def $concat_idctxt{I : I, `I'*` : I*}([I] ++ I'*{I' <- `I'*`}) = I +++ $concat_idctxt(I'*{I' <- `I'*`}) +} + +;; ../../../../specification/wasm-latest/6.1-text.values.spectec +relation Idctxt_ok: `|-%:OK`(idctxt) + ;; ../../../../specification/wasm-latest/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-latest/4.3-execution.instructions.spectec:534.1-537.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-latest/6.4-text.modules.spectec +def $dots : () - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:539.1-544.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 (j!`%`_laneidx.0 < |$lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)|) - -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_laneidx.0]!`%`_lane_.0))) +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +syntax decl = + | TYPE(rectype : rectype) + | IMPORT(name : name, name : name, externtype : externtype) + | TAG(tagtype : tagtype) + | GLOBAL(globaltype : globaltype, expr : expr) + | MEMORY(memtype : memtype) + | TABLE(tabletype : tabletype, expr : expr) + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) + | DATA(`byte*` : byte*, datamode : datamode) + | ELEM(reftype : reftype, `expr*` : expr*, elemmode : elemmode) + | START(funcidx : funcidx) + | EXPORT(name : name, externidx : externidx) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:553.1-556.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 ($growmem($mem(z, x), n) =/= ?()) - -- if (mi = !($growmem($mem(z, x), n))) +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +rec { - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:558.1-559.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-latest/6.4-text.modules.spectec:258.1-258.76 +def $typesd(decl*) : type* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:270.1-270.23 + def $typesd([]) = [] + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:272.1-272.57 + def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) + -- otherwise +} - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:619.1-620.51 - rule `data.drop`{z : state, x : idx}: - `%~>%`(`%;%`_config(z, [`DATA.DROP`_instr(x)]), `%;%`_config($with_data(z, x, []), [])) +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +rec { - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:700.1-704.65 - rule `struct.new`{z : state, n : n, `val*` : val*, 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-latest/6.4-text.modules.spectec:259.1-259.78 +def $importsd(decl*) : import* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:274.1-274.25 + def $importsd([]) = [] + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:276.1-276.61 + def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:721.1-722.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-latest/6.4-text.modules.spectec +rec { - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:724.1-727.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)), [])) - -- if (i!`%`_u32.0 < |zt*{zt <- `zt*`}|) - -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:260.1-260.75 +def $tagsd(decl*) : tag* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:278.1-278.22 + def $tagsd([]) = [] + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:280.1-280.55 + def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:740.1-745.65 - rule `array.new_fixed`{z : state, n : n, `val*` : val*, 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-latest/6.4-text.modules.spectec +rec { - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:785.1-786.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-latest/6.4-text.modules.spectec:261.1-261.78 +def $globalsd(decl*) : global* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:282.1-282.25 + def $globalsd([]) = [] + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:284.1-284.61 + def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:788.1-790.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 (a < |$arrayinst(z)|) - -- if (i!`%`_num_.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +rec { - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:792.1-795.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-latest/6.4-text.modules.spectec:262.1-262.75 +def $memsd(decl*) : mem* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:286.1-286.22 + def $memsd([]) = [] + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:288.1-288.55 + def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) + -- otherwise } -;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:8.1-8.92 -relation Steps: `%~>*%`(config, config) - ;; ../../../../specification/wasm-latest/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-latest/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-latest/6.4-text.modules.spectec:263.1-263.77 +def $tablesd(decl*) : table* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:290.1-290.24 + def $tablesd([]) = [] + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:292.1-292.59 + def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) + -- otherwise } -;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec -relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) - ;; ../../../../specification/wasm-latest/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-latest/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:7.1-7.63 -def $alloctypes(type*) : deftype* - ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:8.1-8.27 - def $alloctypes([]) = [] - ;; ../../../../specification/wasm-latest/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*`} - -- 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 (x!`%`_idx.0 = |deftype'*{deftype' <- `deftype'*`}|) +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:264.1-264.76 +def $funcsd(decl*) : func* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:294.1-294.23 + def $funcsd([]) = [] + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:296.1-296.57 + def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) + -- otherwise } -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec -def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) - ;; ../../../../specification/wasm-latest/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-latest/6.4-text.modules.spectec +rec { -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:265.1-265.76 +def $datasd(decl*) : data* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:298.1-298.23 + def $datasd([]) = [] + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:300.1-300.57 + def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) + -- otherwise +} + +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:20.1-20.102 -def $alloctags(store : store, tagtype*) : (store, tagaddr*) - ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:21.1-21.34 - def $alloctags{s : store}(s, []) = (s, []) - ;; ../../../../specification/wasm-latest/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'*`}) - -- if ((s_1, ja) = $alloctag(s, tagtype)) - -- if ((s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`})) +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:266.1-266.76 +def $elemsd(decl*) : elem* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:302.1-302.23 + def $elemsd([]) = [] + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:304.1-304.57 + def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) + -- otherwise } -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec -def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, globaladdr) - ;; ../../../../specification/wasm-latest/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-latest/6.4-text.modules.spectec +rec { -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:267.1-267.77 +def $startsd(decl*) : start* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:306.1-306.24 + def $startsd([]) = [] + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:308.1-308.59 + def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} + +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:31.1-31.122 -def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) - ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:32.1-32.42 - def $allocglobals{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-latest/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'*`}) - -- 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-latest/6.4-text.modules.spectec:268.1-268.78 +def $exportsd(decl*) : export* + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:310.1-310.25 + def $exportsd([]) = [] + ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:312.1-312.61 + def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) + -- otherwise } -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec -def $allocmem(store : store, memtype : memtype) : (store, memaddr) - ;; ../../../../specification/wasm-latest/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-latest/6.4-text.modules.spectec +def $ordered(decl*) : bool + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + def $ordered{`decl*` : decl*}(decl*{decl <- `decl*`}) = true + -- if ($importsd(decl*{decl <- `decl*`}) = []) + ;; ../../../../specification/wasm-latest/6.4-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-latest/4.4-execution.modules.spectec -rec { +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec +syntax A = nat -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:42.1-42.102 -def $allocmems(store : store, memtype*) : (store, memaddr*) - ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:43.1-43.34 - def $allocmems{s : store}(s, []) = (s, []) - ;; ../../../../specification/wasm-latest/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'*`}) - -- if ((s_1, ma) = $allocmem(s, memtype)) - -- if ((s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`})) -} +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec +syntax B = nat -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec -def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, tableaddr) - ;; ../../../../specification/wasm-latest/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-latest/X.1-notation.syntax.spectec +syntax sym = + | _FIRST(A_1 : A) + | _DOTS + | _LAST(A_n : A) -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec -rec { +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec +syntax symsplit = + | _FIRST(A_1 : A) + | _LAST(A_2 : A) -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:53.1-53.118 -def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) - ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:54.1-54.41 - def $alloctables{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-latest/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'*`}) - -- 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-latest/X.1-notation.syntax.spectec +syntax recorddots = () + +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec +syntax record = +{ + FIELD_1 A, + FIELD_2 A, + `...` recorddots } -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec -def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst) : (store, funcaddr) - ;; ../../../../specification/wasm-latest/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-latest/X.1-notation.syntax.spectec +syntax pth = + | PTHSYNTAX -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec -rec { +;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec +syntax T = nat -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:64.1-64.133 -def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funcaddr*) - ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:65.1-65.45 - def $allocfuncs{s : store}(s, [], [], []) = (s, []) - ;; ../../../../specification/wasm-latest/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'*`}) - -- 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-latest/X.2-notation.typing.spectec +relation NotationTypingPremise: `%`(nat) -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec -def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) - ;; ../../../../specification/wasm-latest/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-latest/X.2-notation.typing.spectec +relation NotationTypingPremisedots: `...` -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec -rec { +;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec +relation NotationTypingScheme: `%`(nat) + ;; ../../../../specification/wasm-latest/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-latest/4.4-execution.modules.spectec:75.1-75.118 -def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) - ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:76.1-76.40 - def $allocdatas{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-latest/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'*`}) - -- 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-latest/X.2-notation.typing.spectec +rec { -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec -def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) - ;; ../../../../specification/wasm-latest/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-latest/X.2-notation.typing.spectec:20.1-20.83 +relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) + ;; ../../../../specification/wasm-latest/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-latest/4.4-execution.modules.spectec -rec { + ;; ../../../../specification/wasm-latest/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 (x!`%`_idx.0 < |C.GLOBALS_context|) + -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(?(mut), t)) -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:86.1-86.117 -def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) - ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:87.1-87.40 - def $allocelems{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-latest/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'*`}) - -- 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-latest/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-latest/4.4-execution.modules.spectec -def $allocexport(moduleinst : moduleinst, export : export) : exportinst - ;; ../../../../specification/wasm-latest/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-latest/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-latest/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-latest/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-latest/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-latest/X.3-notation.execution.spectec +relation NotationReduct: `~>%`(instr*) + ;; ../../../../specification/wasm-latest/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-latest/4.4-execution.modules.spectec -def $allocexports(moduleinst : moduleinst, export*) : exportinst* - ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec - def $allocexports{moduleinst : moduleinst, `export*` : export*}(moduleinst, export*{export <- `export*`}) = $allocexport(moduleinst, export)*{export <- `export*`} + ;; ../../../../specification/wasm-latest/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-latest/4.4-execution.modules.spectec -def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) - ;; ../../../../specification/wasm-latest/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*, `expr_G*` : expr*, `globaltype*` : globaltype*, `memtype*` : memtype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `expr_F*` : expr*, `local**` : local**, `x*` : idx*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : 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*`})) - -- if (fa*{fa <- `fa*`} = (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){}) - -- 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*`}[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-latest/X.3-notation.execution.spectec + rule 4{q_6 : num_(F64_numtype)}: + `~>%`([CONST_instr(F64_numtype, q_6)]) -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec -def $rundata_(dataidx : dataidx, data : data) : instr* - ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec - def $rundata_{x : idx, n : n, `b*` : byte*}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] - ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec - def $rundata_{x : idx, n : n, `b*` : byte*, 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-latest/X.3-notation.execution.spectec +def $instrdots : instr* -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec -def $runelem_(elemidx : elemidx, elem : elem) : instr* - ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec - def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] - ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec - def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [`ELEM.DROP`_instr(x)] - ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec - def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*, 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-latest/X.3-notation.execution.spectec +syntax label = + | `LABEL_%{%}`(n : n, `instr*` : instr*) -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec +syntax callframe = + | `FRAME_%{%}`(n : n, frame : frame) + +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec +def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) + +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec rec { -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:160.1-160.94 -def $evalglobals(state : state, globaltype*, expr*) : (state, val*) - ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:161.1-161.41 - def $evalglobals{z : state}(z, [], []) = (z, []) - ;; ../../../../specification/wasm-latest/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]) - -- 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-latest/X.3-notation.execution.spectec:32.1-32.117 +def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) + ;; ../../../../specification/wasm-latest/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-latest/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-latest/4.4-execution.modules.spectec -def $instantiate(store : store, module : module, externaddr*) : config - ;; ../../../../specification/wasm-latest/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*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, 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?`}) - -- 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*`}|){}, 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*`}|){})) - -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){})) - -- if (instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`}) +;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec +syntax symdots = + | `%`(i : nat) + -- if (i = 0) + +;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec +def $var(syntax X) : nat + ;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec + def $var{syntax X}(syntax X) = 0 + +;; ../../../../specification/wasm-latest/X.5-notation.text.spectec +syntax abbreviated = () + +;; ../../../../specification/wasm-latest/X.5-notation.text.spectec +syntax expanded = () -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec -def $invoke(store : store, funcaddr : funcaddr, val*) : config - ;; ../../../../specification/wasm-latest/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*`} +;; ../../../../specification/wasm-latest/X.5-notation.text.spectec +syntax syntax = () ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bbyte : byte @@ -30547,9 +30926,6 @@ grammar Bexterntype : externtype ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{jt : tagtype} {{0x04} {jt:Btagtype}} => TAG_externtype(jt) -;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec -syntax castop = (null?, null?) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec grammar Bcastop : castop ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec @@ -30582,9 +30958,6 @@ grammar Bcatch : catch ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod{l : labelidx} {{0x03} {l:Blabelidx}} => CATCH_ALL_REF_catch(l) -;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec -syntax memidxop = (memidx, memarg) - ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec grammar Bmemarg : memidxop ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec @@ -31698,9 +32071,6 @@ grammar Bstart : start* ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{x : idx} x:Bfuncidx => [START_start(x)] -;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec -syntax startopt = start* - ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bstartsec : start? ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec @@ -31735,9 +32105,6 @@ grammar Belemsec : elem* ;; ../../../../specification/wasm-latest/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-latest/5.4-binary.modules.spectec -syntax code = (local*, expr) - ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Blocals : local* ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec @@ -31779,9 +32146,6 @@ grammar Bdatacnt : u32* ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{n : n} `%`_u32(n):Bu32 => [`%`_u32(n)] -;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec -syntax nopt = u32* - ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bdatacntsec : u32? ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec @@ -32200,9 +32564,6 @@ grammar Thexmant : rat ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{p : nat, q : rat} {{p:Thexnum} {"."} {q:Thexfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) -;; ../../../../specification/wasm-latest/6.1-text.values.spectec -def $ieee_(N : N, rat : rat) : fNmag(N) - ;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tfloat : rat ;; ../../../../specification/wasm-latest/6.1-text.values.spectec @@ -32287,55 +32648,6 @@ grammar Tlist(syntax el, grammar TX : el) : el* prod{`el*` : el*} el:TX*{el <- `el*`} => el*{el <- `el*`} -- if (|el*{el <- `el*`}| < (2 ^ 32)) -;; ../../../../specification/wasm-latest/6.1-text.values.spectec -syntax idctxt = -{ - TYPES name?*, - TAGS name?*, - GLOBALS name?*, - MEMS name?*, - TABLES name?*, - FUNCS name?*, - DATAS name?*, - ELEMS name?*, - LOCALS name?*, - LABELS name?*, - FIELDS name?**, - TYPEDEFS deftype?* -} - -;; ../../../../specification/wasm-latest/6.1-text.values.spectec -syntax I = idctxt - -;; ../../../../specification/wasm-latest/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-latest/6.1-text.values.spectec:154.1-154.56 -def $concat_idctxt(idctxt*) : idctxt - ;; ../../../../specification/wasm-latest/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-latest/6.1-text.values.spectec:156.1-156.53 - def $concat_idctxt{I : I, `I'*` : I*}([I] ++ I'*{I' <- `I'*`}) = I +++ $concat_idctxt(I'*{I' <- `I'*`}) -} - -;; ../../../../specification/wasm-latest/6.1-text.values.spectec -relation Idctxt_ok: `|-%:OK`(idctxt) - ;; ../../../../specification/wasm-latest/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-latest/6.1-text.values.spectec grammar Tidx_(ids : name?*) : idx ;; ../../../../specification/wasm-latest/6.1-text.values.spectec @@ -33794,256 +34106,77 @@ grammar Timport_(I : I) : (import, idctxt) ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texport_(I : I) : (export, idctxt) ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec -grammar Texportdots : () - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{"("} {"export"} {Tname} {")"}} => (``, ()).1 - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Timportdots : () - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{"("} {"import"} {Tname} {Tname} {")"}} => (``, ()).1 - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -def $dots : () - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Texporttagdots_(I : I) : () - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttagtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttagtype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Texportglobaldots_(I : I) : () - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Tglobaltype_(I)} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tglobaltype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Texportmemdots_(I : I) : () - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Tmemtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {"("} {"data"} {Tdatastring} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tmemtype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Texporttabledots_(I : I) : () - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttabletype_(I)} {Texpr_(I)?{}}} => (``, ()).1 - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {Treftype_(I)} {"("} {"elem"} {Telemlist_(I)} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttabletype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Texportfuncdots_(I : I) : () - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttypeuse_(I)} {Tlocal_(I)*{}} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttypeuse_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Texporttag_(I : I) : () - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Texportglobal_(I : I) : () - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Texportmem_(I : I) : () - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Texporttable_(I : I) : () - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Texportfunc_(I : I) : () - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Tdatamem_(I : I) : () - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -grammar Telemtable_(I : I) : () - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -syntax decl = - | TYPE(rectype : rectype) - | IMPORT(name : name, name : name, externtype : externtype) - | TAG(tagtype : tagtype) - | GLOBAL(globaltype : globaltype, expr : expr) - | MEMORY(memtype : memtype) - | TABLE(tabletype : tabletype, expr : expr) - | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) - | DATA(`byte*` : byte*, datamode : datamode) - | ELEM(reftype : reftype, `expr*` : expr*, elemmode : elemmode) - | START(funcidx : funcidx) - | EXPORT(name : name, externidx : externidx) - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -rec { - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:258.1-258.76 -def $typesd(decl*) : type* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:270.1-270.23 - def $typesd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:272.1-272.57 - def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -rec { - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:259.1-259.78 -def $importsd(decl*) : import* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:274.1-274.25 - def $importsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:276.1-276.61 - def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -rec { - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:260.1-260.75 -def $tagsd(decl*) : tag* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:278.1-278.22 - def $tagsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:280.1-280.55 - def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -rec { - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:261.1-261.78 -def $globalsd(decl*) : global* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:282.1-282.25 - def $globalsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:284.1-284.61 - def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -rec { - -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:262.1-262.75 -def $memsd(decl*) : mem* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:286.1-286.22 - def $memsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:288.1-288.55 - def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} + 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-latest/6.4-text.modules.spectec -rec { +grammar Texportdots : () + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{"("} {"export"} {Tname} {")"}} => (``, ()).1 -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:263.1-263.77 -def $tablesd(decl*) : table* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:290.1-290.24 - def $tablesd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:292.1-292.59 - def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) - -- otherwise -} +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +grammar Timportdots : () + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{"("} {"import"} {Tname} {Tname} {")"}} => (``, ()).1 ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -rec { +grammar Texporttagdots_(I : I) : () + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttagtype_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttagtype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:264.1-264.76 -def $funcsd(decl*) : func* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:294.1-294.23 - def $funcsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:296.1-296.57 - def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +grammar Texportglobaldots_(I : I) : () + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Tglobaltype_(I)} {Texpr_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tglobaltype_(I)}} => (``, ()).1 ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -rec { +grammar Texportmemdots_(I : I) : () + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Tmemtype_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {"("} {"data"} {Tdatastring} {")"}} => (``, ()).1 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tmemtype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:265.1-265.76 -def $datasd(decl*) : data* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:298.1-298.23 - def $datasd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:300.1-300.57 - def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) - -- otherwise -} +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +grammar Texporttabledots_(I : I) : () + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttabletype_(I)} {Texpr_(I)?{}}} => (``, ()).1 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {Treftype_(I)} {"("} {"elem"} {Telemlist_(I)} {")"}} => (``, ()).1 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttabletype_(I)}} => (``, ()).1 ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -rec { +grammar Texportfuncdots_(I : I) : () + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttypeuse_(I)} {Tlocal_(I)*{}} {Texpr_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttypeuse_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:266.1-266.76 -def $elemsd(decl*) : elem* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:302.1-302.23 - def $elemsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:304.1-304.57 - def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +grammar Texporttag_(I : I) : () ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -rec { +grammar Texportglobal_(I : I) : () -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:267.1-267.77 -def $startsd(decl*) : start* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:306.1-306.24 - def $startsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:308.1-308.59 - def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +grammar Texportmem_(I : I) : () ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -rec { +grammar Texporttable_(I : I) : () -;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:268.1-268.78 -def $exportsd(decl*) : export* - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:310.1-310.25 - def $exportsd([]) = [] - ;; ../../../../specification/wasm-latest/6.4-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-latest/6.4-text.modules.spectec:312.1-312.61 - def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +grammar Texportfunc_(I : I) : () ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec -def $ordered(decl*) : bool - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - def $ordered{`decl*` : decl*}(decl*{decl <- `decl*`}) = true - -- if ($importsd(decl*{decl <- `decl*`}) = []) - ;; ../../../../specification/wasm-latest/6.4-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*`}) = [])) +grammar Tdatamem_(I : I) : () + +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec +grammar Telemtable_(I : I) : () ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tdecl_(I : I) : (decl, idctxt) @@ -34094,130 +34227,6 @@ grammar Tdecldots_(I : I) : (decl, idctxt)* ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (decl, idctxt)} [``]:Tdecl_(I)*{} => [``] -;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec -syntax A = nat - -;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec -syntax B = nat - -;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec -syntax sym = - | _FIRST(A_1 : A) - | _DOTS - | _LAST(A_n : A) - -;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec -syntax symsplit = - | _FIRST(A_1 : A) - | _LAST(A_2 : A) - -;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec -syntax recorddots = () - -;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec -syntax record = -{ - FIELD_1 A, - FIELD_2 A, - `...` recorddots -} - -;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec -syntax pth = - | PTHSYNTAX - -;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec -syntax T = nat - -;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec -relation NotationTypingPremise: `%`(nat) - -;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec -relation NotationTypingPremisedots: `...` - -;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec -relation NotationTypingScheme: `%`(nat) - ;; ../../../../specification/wasm-latest/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-latest/X.2-notation.typing.spectec -rec { - -;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec:20.1-20.83 -relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) - ;; ../../../../specification/wasm-latest/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-latest/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 (x!`%`_idx.0 < |C.GLOBALS_context|) - -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(?(mut), t)) - - ;; ../../../../specification/wasm-latest/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-latest/X.3-notation.execution.spectec -relation NotationReduct: `~>%`(instr*) - ;; ../../../../specification/wasm-latest/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-latest/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-latest/X.3-notation.execution.spectec - rule 4{q_6 : num_(F64_numtype)}: - `~>%`([CONST_instr(F64_numtype, q_6)]) - -;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec -def $instrdots : instr* - -;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec -syntax label = - | `LABEL_%{%}`(n : n, `instr*` : instr*) - -;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec -syntax callframe = - | `FRAME_%{%}`(n : n, frame : frame) - -;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec -def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) - -;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec -rec { - -;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec:32.1-32.117 -def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) - ;; ../../../../specification/wasm-latest/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-latest/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-latest/X.4-notation.binary.spectec -syntax symdots = - | `%`(i : nat) - -- if (i = 0) - -;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec -def $var(syntax X) : nat - ;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec - def $var{syntax X}(syntax X) = 0 - ;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec grammar Bvar(syntax X) : () ;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec @@ -34256,15 +34265,6 @@ grammar Tsymsplit : () ;; ../../../../specification/wasm-latest/X.5-notation.text.spectec prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 -;; ../../../../specification/wasm-latest/X.5-notation.text.spectec -syntax abbreviated = () - -;; ../../../../specification/wasm-latest/X.5-notation.text.spectec -syntax expanded = () - -;; ../../../../specification/wasm-latest/X.5-notation.text.spectec -syntax syntax = () - ;; ../../../../specification/wasm-latest/X.5-notation.text.spectec grammar Tabbrev : () From fa840176b1d67e07403699b44b97f2ba62e73221 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Fri, 13 Feb 2026 12:42:15 +0100 Subject: [PATCH 053/235] [spectec] Add README --- spectec/doc/example/output/NanoWasm.pdf | Bin 245512 -> 245512 bytes spectec/doc/semantics/il/6-typing.spectec | 1 - spectec/doc/semantics/il/README.md | 23 ++++++++++++++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 spectec/doc/semantics/il/README.md diff --git a/spectec/doc/example/output/NanoWasm.pdf b/spectec/doc/example/output/NanoWasm.pdf index fa8f6eabef30f455b2fef20128dd12dae5fa902a..a5c0af755d7468c11fa3100a3619111cb66ba97e 100644 GIT binary patch delta 108 zcmeD9$JgR-4V)~@>=bMWDcSyEH?ssY0FlZa1poj5 delta 108 zcmeD9$Jg Date: Fri, 13 Feb 2026 13:56:42 +0100 Subject: [PATCH 054/235] [test] Check that backwards branches trim the stack (#2082) --- test/core/loop.wast | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/test/core/loop.wast b/test/core/loop.wast index 4557869b3..0f76a2591 100644 --- a/test/core/loop.wast +++ b/test/core/loop.wast @@ -425,6 +425,17 @@ ) (drop) (drop) (drop) ) + + (func (export "br-implicit-drop") (result i32) + (local $i i32) + (i32.const 1) + (loop $loop + (local.set $i (i32.add (local.get $i) (i32.const 1))) + (i32.const 2) + (br_if $loop (i32.lt_s (local.get $i) (i32.const 10))) + (drop) + ) + ) ) (assert_return (invoke "empty")) @@ -522,6 +533,8 @@ (assert_return (invoke "type-use")) +(assert_return (invoke "br-implicit-drop") (i32.const 1)) + (assert_malformed (module quote "(type $sig (func (param i32) (result i32)))" From 62f535cba00beafa08bc50b3f29dcbcc92bdfd8a Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Fri, 13 Feb 2026 17:21:58 +0100 Subject: [PATCH 055/235] [spectec] Support hints on rules --- spectec/doc/example/output/NanoWasm.pdf | Bin 245512 -> 245512 bytes spectec/src/backend-latex/render.ml | 12 +++++++----- spectec/src/backend-splice/splice.ml | 2 +- spectec/src/el/ast.ml | 3 ++- spectec/src/el/free.ml | 2 +- spectec/src/el/iter.ml | 6 ++++-- spectec/src/el/print.ml | 2 +- spectec/src/el/subst.ml | 2 +- spectec/src/frontend/elab.ml | 14 +++++++++++--- spectec/src/frontend/parser.mly | 11 +++++++---- spectec/src/il/ast.ml | 1 + spectec/src/il/free.ml | 1 + spectec/src/il/iter.ml | 1 + 13 files changed, 38 insertions(+), 19 deletions(-) diff --git a/spectec/doc/example/output/NanoWasm.pdf b/spectec/doc/example/output/NanoWasm.pdf index a5c0af755d7468c11fa3100a3619111cb66ba97e..e8adfce895e968dabb98a7c87ce8be56d9599784 100644 GIT binary patch delta 111 zcmeD9$Jg5^NS5^NSQmOiWyj-OOA~42|6! iO&y&rjZBT4Tudy?%q$I@EX?c_YzQdX{(d*JBr^cn#2uOd diff --git a/spectec/src/backend-latex/render.ml b/spectec/src/backend-latex/render.ml index ca268e061..e72fd4c17 100644 --- a/spectec/src/backend-latex/render.ml +++ b/spectec/src/backend-latex/render.ml @@ -232,6 +232,8 @@ let env_hintdef env hd = env_hints "show" env.show_rel id hints; env_hints "name" env.name_rel id hints; env_hints "tabular" env.tab_rel id hints + | RuleH (_id1, _id2, _hints) -> + () | VarH (id, hints) -> env_hints "macro" env.macro_var id hints; env_hints "show" env.show_var id hints @@ -1768,7 +1770,7 @@ let render_gramdef env d : row list = let render_ruledef_infer env d = match d.it with - | RuleD (id1, _ps, id2, e, prems) -> + | RuleD (id1, _ps, id2, e, prems, _hints) -> let prems' = filter_nl_list (function {it = VarPr _; _} -> false | _ -> true) prems in "\\frac{\n" ^ (if has_nl prems then "\\begin{array}{@{}c@{}}\n" else "") ^ @@ -1782,7 +1784,7 @@ let render_ruledef_infer env d = let render_ruledef env d : row list = match d.it with - | RuleD (id1, _ps, id2, e, prems) -> + | RuleD (id1, _ps, id2, e, prems, _hints) -> let e1, op, e2 = match e.it with | InfixE (e1, op, ({it = SeqE (e21::es22); _} as e2)) when Atom.is_sub op -> @@ -1848,7 +1850,7 @@ let rec render_defs env = function | RelD (_, _ps, t, _) -> "\\boxed{" ^ render_typ env t ^ "}" ^ (if ds' = [] then "" else " \\; " ^ render_defs env ds') - | RuleD (id1, _, _, _, _) -> + | RuleD (id1, _, _, _, _, _) -> if Map.mem id1.it !(env.tab_rel) then (* Columns: decorator & lhs & op & rhs & premise *) let sp_deco = if env.deco_rule then sp else "@{}" in @@ -1892,7 +1894,7 @@ let rec split_tabdefs id tabdefs = function | [] -> List.rev tabdefs, [] | d::ds -> match d.it with - | RuleD (id1, _, _, _, _) when id1.it = id -> + | RuleD (id1, _, _, _, _, _) when id1.it = id -> split_tabdefs id (d::tabdefs) ds | _ -> List.rev tabdefs, d::ds @@ -1918,7 +1920,7 @@ let rec render_script env = function | RelD _ -> "$" ^ render_def env d ^ "$\n\n" ^ render_script env ds - | RuleD (id1, _, _, _, _) -> + | RuleD (id1, _, _, _, _, _) -> if Map.mem id1.it !(env.tab_rel) then let tabdefs, ds' = split_tabdefs id1.it [d] ds in "$$\n" ^ render_defs env tabdefs ^ "\n$$\n\n" ^ diff --git a/spectec/src/backend-splice/splice.ml b/spectec/src/backend-splice/splice.ml index 6499e915c..c87f3a9bb 100644 --- a/spectec/src/backend-splice/splice.ml +++ b/spectec/src/backend-splice/splice.ml @@ -87,7 +87,7 @@ let env_def env def = env.gram <- Map.add id1.it {grammar with gfragments} env.gram | RelD (id, _, _, _) -> env.rel <- Map.add id.it {rdef = def; rules = []} env.rel - | RuleD (id1, _, id2, _, _) -> + | RuleD (id1, _, id2, _, _, _) -> let relation = Map.find id1.it env.rel in let rules = relation.rules @ [(id2.it, def, ref 0)] in env.rel <- Map.add id1.it {relation with rules} env.rel diff --git a/spectec/src/el/ast.ml b/spectec/src/el/ast.ml index 60adea94f..3b0f7c63b 100644 --- a/spectec/src/el/ast.ml +++ b/spectec/src/el/ast.ml @@ -174,7 +174,7 @@ and def' = | TypD of id * id * arg list * typ * hint list (* `syntax` typid args hint* `=` typ *) | GramD of id * id * param list * typ * gram * hint list (* `grammar` gramid params hint* `:` type `=` gram *) | RelD of id * param list * typ * hint list (* `relation` relid params `:` typ hint* *) - | RuleD of id * param list * id * exp * prem nl_list (* `rule` relid params ruleid? `:` exp (`--` prem)* *) + | RuleD of id * param list * id * exp * prem nl_list * hint list (* `rule` relid params ruleid? `:` exp (`--` prem)* *) | VarD of id * typ * hint list (* `var` varid `:` typ *) | DecD of id * param list * typ * hint list (* `def` `$` defid params `:` typ hint* *) | DefD of id * arg list * exp * prem nl_list (* `def` `$` defid args `=` exp (`--` prem)* *) @@ -195,6 +195,7 @@ and hintdef' = | TypH of id * id * hint list | GramH of id * id * hint list | RelH of id * hint list + | RuleH of id * id * hint list | VarH of id * hint list | DecH of id * hint list diff --git a/spectec/src/el/free.ml b/spectec/src/el/free.ml index 738b02ddc..bd937f65b 100644 --- a/spectec/src/el/free.ml +++ b/spectec/src/el/free.ml @@ -173,7 +173,7 @@ let free_def d = | VarD (_id, t, _hints) -> free_typ t | SepD -> empty | RelD (_id, ps, t, _hints) -> free_typ t -- bound_params ps - | RuleD (id1, ps, _id2, e, prems) -> + | RuleD (id1, ps, _id2, e, prems, _hints) -> free_relid id1 ++ (free_exp e ++ free_prems prems -- bound_params ps) | DecD (_id, ps, t, _hints) -> free_params ps ++ free_typ t -- bound_params ps diff --git a/spectec/src/el/iter.ml b/spectec/src/el/iter.ml index 7da409a80..610494e95 100644 --- a/spectec/src/el/iter.ml +++ b/spectec/src/el/iter.ml @@ -225,6 +225,7 @@ let hintdef d = | TypH (x1, x2, hs) -> typid x1; ruleid x2; hints hs | GramH (x1, x2, hs) -> gramid x1; ruleid x2; hints hs | RelH (x, hs) -> relid x; hints hs + | RuleH (x1, x2, hs) -> relid x1; ruleid x2; hints hs | VarH (x, hs) -> varid x; hints hs | DecH (x, hs) -> defid x; hints hs @@ -237,7 +238,7 @@ let def d = | VarD (x, t, hs) -> varid x; typ t; hints hs | SepD -> () | RelD (x, ps, t, hs) -> relid x; params ps; typ t; hints hs - | RuleD (x1, ps, x2, e, prs) -> relid x1; params ps; ruleid x2; exp e; prems prs + | RuleD (x1, ps, x2, e, prs, hs) -> relid x1; params ps; ruleid x2; exp e; prems prs; hints hs | DecD (x, ps, t, hs) -> defid x; params ps; typ t; hints hs | DefD (x, as_, e, prs) -> defid x; args as_; exp e; prems prs | HintD hd -> hintdef hd @@ -389,6 +390,7 @@ let clone_hintdef d = | TypH (x1, x2, hs) -> TypH (x1, x2, List.map clone_hint hs) | GramH (x1, x2, hs) -> GramH (x1, x2, List.map clone_hint hs) | RelH (x, hs) -> RelH (x, List.map clone_hint hs) + | RuleH (x1, x2, hs) -> RuleH (x1, x2, List.map clone_hint hs) | VarH (x, hs) -> VarH (x, List.map clone_hint hs) | DecH (x, hs) -> DecH (x, List.map clone_hint hs) ) $ d.at @@ -401,7 +403,7 @@ let clone_def d = | VarD (x, t, hs) -> VarD (x, clone_typ t, List.map clone_hint hs) | SepD -> SepD | RelD (x, ps, t, hs) -> RelD (x, List.map clone_param ps, clone_typ t, List.map clone_hint hs) - | RuleD (x1, ps, x2, e, prs) -> RuleD (x1, List.map clone_param ps, x2, clone_exp e, Convert.map_nl_list clone_prem prs) + | RuleD (x1, ps, x2, e, prs, hs) -> RuleD (x1, List.map clone_param ps, x2, clone_exp e, Convert.map_nl_list clone_prem prs, List.map clone_hint hs) | DecD (x, ps, t, hs) -> DecD (x, List.map clone_param ps, clone_typ t, List.map clone_hint hs) | DefD (x, as_, e, prs) -> DefD (x, List.map clone_arg as_, clone_exp e, Convert.map_nl_list clone_prem prs) | HintD hd -> HintD (clone_hintdef hd) diff --git a/spectec/src/el/print.ml b/spectec/src/el/print.ml index 5e430540e..af8a366e3 100644 --- a/spectec/src/el/print.ml +++ b/spectec/src/el/print.ml @@ -310,7 +310,7 @@ let string_of_def d = string_of_typ t ^ " = " ^ string_of_gram gram | RelD (id, ps, t, _hints) -> "relation " ^ string_of_relid id ^ string_of_params ps ^ ": " ^ string_of_typ t - | RuleD (id1, ps, id2, e, prems) -> + | RuleD (id1, ps, id2, e, prems, _hints) -> "rule " ^ string_of_relid id1 ^ string_of_params ps ^ string_of_ruleid id2 ^ ":\n " ^ string_of_exp e ^ string_of_nl_list "" "" (prefix "\n -- " string_of_prem) prems diff --git a/spectec/src/el/subst.ml b/spectec/src/el/subst.ml index b560b8866..85d1efc44 100644 --- a/spectec/src/el/subst.ml +++ b/spectec/src/el/subst.ml @@ -264,7 +264,7 @@ let subst_def s d = | VarD (x, t, hs) -> VarD (x, subst_typ s t, hs) | SepD -> SepD | RelD (x, ps, t, hs) -> RelD (x, List.map (subst_param s) ps, subst_typ s t, hs) - | RuleD (x1, ps, x2, e, prs) -> RuleD (x1, List.map (subst_param s) ps, x2, subst_exp s e, Convert.map_nl_list (subst_prem s) prs) + | RuleD (x1, ps, x2, e, prs, hs) -> RuleD (x1, List.map (subst_param s) ps, x2, subst_exp s e, Convert.map_nl_list (subst_prem s) prs, hs) | DecD (x, ps, t, hs) -> DecD (x, List.map (subst_param s) ps, subst_typ s t, hs) | DefD (x, as_, e, prs) -> DefD (x, List.map (subst_arg s) as_, subst_exp s e, Convert.map_nl_list (subst_prem s) prs) | HintD hd -> HintD hd diff --git a/spectec/src/frontend/elab.ml b/spectec/src/frontend/elab.ml index 102c66768..0292d12d3 100644 --- a/spectec/src/frontend/elab.ml +++ b/spectec/src/frontend/elab.ml @@ -2470,7 +2470,13 @@ let elab_hintdef _env (hd : hintdef) : Il.def list = [Il.HintD (Il.DecH (id, elab_hints id "" hints) $ hd.at) $ hd.at] | AtomH (id, atom, _hints) -> let _ = elab_atom atom id in [] - | GramH _ | VarH _ -> + | GramH (id1, _id2, hints) -> + if hints = [] then [] else + [Il.HintD (Il.GramH (id1, elab_hints id1 "" hints) $ hd.at) $ hd.at] + | RuleH (id1, id2, hints) -> + if hints = [] then [] else + [Il.HintD (Il.RuleH (id1, id2, elab_hints id1 "" hints) $ hd.at) $ hd.at] + | VarH _ -> [] @@ -2624,7 +2630,7 @@ let rec elab_def_pass2 env (d : def) : Il.def list = | RelD _ -> [] - | RuleD (x1, ps, x2, e, prems) -> + | RuleD (x1, ps, x2, e, prems, hints) -> let ps', t', rules', mixop, not' = find "relation" env.rels x1 in if List.exists (fun (x, _) -> x.it = x2.it) rules' then error d.at ("duplicate rule name `" ^ x1.it ^ @@ -2642,7 +2648,8 @@ let rec elab_def_pass2 env (d : def) : Il.def list = let qs = infer_quants env env' dims det [] [] [] es' [] prems' d.at in let rule' = Il.RuleD (x2, qs, mixop, e', prems') $ d.at in env.rels <- rebind "relation" env.rels x1 (ps', t', rules' @ [x2, rule'], mixop, not'); - if not env'.pm then [] else elab_def_pass2 env Subst.(subst_def pm_snd (Iter.clone_def d)) + (if not env'.pm then [] else elab_def_pass2 env Subst.(subst_def pm_snd (Iter.clone_def d))) + @ elab_hintdef env (RuleH (x1, x2, hints) $ d.at) | VarD _ -> [] @@ -2694,6 +2701,7 @@ let populate_hint env (hd' : Il.hintdef) = | Il.RelH (x, _) -> ignore (find "relation" env.rels x) | Il.DecH (x, _) -> ignore (find "definition" env.defs x) | Il.GramH (x, _) -> ignore (find "grammar" env.grams x) + | Il.RuleH (x, _, _) -> ignore (find "relation" env.rels x) let populate_def env (d' : Il.def) : Il.def = Debug.(log_in "el.populate_def" dline); diff --git a/spectec/src/frontend/parser.mly b/spectec/src/frontend/parser.mly index 8106e2dfe..e1a04be62 100644 --- a/spectec/src/frontend/parser.mly +++ b/spectec/src/frontend/parser.mly @@ -1088,12 +1088,12 @@ def_ : { RelD ($2, [], $4, $5) } | RELATION relid LPAREN comma_list(param) RPAREN COLON nottyp hint* { RelD ($2, $4, $7, $8) } - | RULE relid ruleid_list COLON exp prem_list + | RULE relid ruleid_list COLON exp prem_list hint* { let id = if $3 = "" then "" else String.sub $3 1 (String.length $3 - 1) in - RuleD ($2, [], id $ $loc($3), $5, $6) } - | RULE relid LPAREN comma_list(param) RPAREN ruleid_list COLON exp prem_list + RuleD ($2, [], id $ $loc($3), $5, $6, $7) } + | RULE relid LPAREN comma_list(param) RPAREN ruleid_list COLON exp prem_list hint* { let id = if $6 = "" then "" else String.sub $6 1 (String.length $6 - 1) in - RuleD ($2, $4, id $ $loc($6), $8, $9) } + RuleD ($2, $4, id $ $loc($6), $8, $9, $10) } | VAR varid_bind COLON typ hint* { VarD ($2, $4, $5) } | DEF DOLLAR defid COLON typ hint* @@ -1122,6 +1122,9 @@ def_ : HintD (GramH ($2, id $ $loc($3), $4) $ $sloc) } | RELATION relid hint* { HintD (RelH ($2, $3) $ $sloc) } + | RULE relid ruleid_list hint* + { let id = if $3 = "" then "" else String.sub $3 1 (String.length $3 - 1) in + HintD (RuleH ($2, id $ $loc($3), $4) $ $sloc) } | VAR varid_bind hint* { HintD (VarH ($2, $3) $ $sloc) } | DEF DOLLAR defid hint* diff --git a/spectec/src/il/ast.ml b/spectec/src/il/ast.ml index 184469fad..7cb5709e5 100644 --- a/spectec/src/il/ast.ml +++ b/spectec/src/il/ast.ml @@ -166,6 +166,7 @@ and hintdef' = | RelH of id * hint list | DecH of id * hint list | GramH of id * hint list + | RuleH of id * id * hint list and hint = {hintid : id; hintexp : El.Ast.exp} (* hint *) diff --git a/spectec/src/il/free.ml b/spectec/src/il/free.ml index 1d0809d9d..728810da5 100644 --- a/spectec/src/il/free.ml +++ b/spectec/src/il/free.ml @@ -179,6 +179,7 @@ let free_hintdef hd = | RelH (x, _) -> free_relid x | DecH (x, _) -> free_defid x | GramH (x, _) -> free_gramid x + | RuleH (x, _, _) -> free_relid x let rec free_def d = match d.it with diff --git a/spectec/src/il/iter.ml b/spectec/src/il/iter.ml index a38d3352a..3688a4845 100644 --- a/spectec/src/il/iter.ml +++ b/spectec/src/il/iter.ml @@ -240,6 +240,7 @@ let hintdef d = | RelH (x, hs) -> relid x; hints hs | DecH (x, hs) -> defid x; hints hs | GramH (x, hs) -> gramid x; hints hs + | RuleH (x, _, hs) -> relid x; hints hs let inst i = match i.it with From 3e84478efcae85ae8d7a402c12a29bcfb708a1b5 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Mon, 16 Feb 2026 07:57:10 +0100 Subject: [PATCH 056/235] [spec] Fix another bug around is_packtype --- specification/wasm-3.0/2.3-validation.instructions.spectec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/specification/wasm-3.0/2.3-validation.instructions.spectec b/specification/wasm-3.0/2.3-validation.instructions.spectec index e57e5d90f..131926ba0 100644 --- a/specification/wasm-3.0/2.3-validation.instructions.spectec +++ b/specification/wasm-3.0/2.3-validation.instructions.spectec @@ -296,7 +296,7 @@ rule Instr_ok/array.new_data: rule Instr_ok/array.get: C |- ARRAY.GET sx? x : (REF NULL (_IDX x)) I32 -> $unpack(zt) -- Expand: C.TYPES[x] ~~ ARRAY (mut? zt) - -- if sx? = eps <=> $is_packtype(zt) + -- if sx? =/= eps <=> $is_packtype(zt) rule Instr_ok/array.set: C |- ARRAY.SET x : (REF NULL (_IDX x)) I32 $unpack(zt) -> eps From f4888a1bb54ab55cfe5c76c927a476715d82b16e Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Mon, 16 Feb 2026 08:16:39 +0100 Subject: [PATCH 057/235] [spec] Reactivate trailing syntax dots --- spectec/doc/example/output/NanoWasm.pdf | Bin 245512 -> 245512 bytes spectec/src/backend-latex/render.ml | 8 ++++---- spectec/test-latex/TEST.md | 20 ++++++++++++-------- spectec/test-prose/TEST.md | 4 ++-- spectec/test-splice/TEST.md | 4 +++- 5 files changed, 21 insertions(+), 15 deletions(-) diff --git a/spectec/doc/example/output/NanoWasm.pdf b/spectec/doc/example/output/NanoWasm.pdf index e8adfce895e968dabb98a7c87ce8be56d9599784..a683d05641a822dfcaab98275b6c20f4fa0a059d 100644 GIT binary patch delta 143 zcmeD9$Jg03!A&tpET3 delta 143 zcmeD9$Jgufw-#o;zL4G6(A>zt z#Av$YR%RI(XS>Z-=0Y|nHzOBI6Jv8HCnp0lOGjrjM>989XA28sM@Lg%`C|b0RGY`wEzGB diff --git a/spectec/src/backend-latex/render.ml b/spectec/src/backend-latex/render.ml index e72fd4c17..64a539b45 100644 --- a/spectec/src/backend-latex/render.ml +++ b/spectec/src/backend-latex/render.ml @@ -1184,7 +1184,7 @@ and render_nottyp env t : table = (string_of_region t.at) (El.Print.string_of_typ t); *) match t.it with - | StrT (dots1, ts, tfs, _dots2) -> + | StrT (dots1, ts, tfs, dots2) -> let render env = function | `Dots -> render_dots Dots | `Typ t -> render_nottyp env t @@ -1197,10 +1197,10 @@ and render_nottyp env t : table = (match dots1 with Dots -> [Elem `Dots] | NoDots -> []) @ map_nl_list (fun t -> `Typ t) ts @ map_nl_list (fun tf -> `TypField tf) tfs @ - [] (* (match dots2 with Dots -> [Elem `Dots] | NoDots -> []) *) + (match dots2 with Dots -> [Elem `Dots] | NoDots -> []) )) [Row [Col " \\}"]]) )]] - | CaseT (dots1, ts, tcs, _dots2) -> + | CaseT (dots1, ts, tcs, dots2) -> let render env = function | `Dots -> render_dots Dots | `Typ t -> render_nottyp env t @@ -1211,7 +1211,7 @@ and render_nottyp env t : table = (match dots1 with Dots -> [Elem `Dots] | NoDots -> []) @ map_nl_list (fun t -> `Typ t) ts @ map_nl_list (fun tc -> `TypCase tc) tcs @ - [] (* (match dots2 with Dots -> [Elem `Dots] | NoDots -> []) *) + (match dots2 with Dots -> [Elem `Dots] | NoDots -> []) ) in if env.config.display then diff --git a/spectec/test-latex/TEST.md b/spectec/test-latex/TEST.md index ef460490f..7ff348921 100644 --- a/spectec/test-latex/TEST.md +++ b/spectec/test-latex/TEST.md @@ -881,17 +881,18 @@ $$ $$ \begin{array}[t]{@{}lrrl@{}l@{}} -& {\mathit{dotstypex}} & ::= & {\mathit{argh}} ~~|~~ \mathsf{dx{\scriptstyle 1}} \\ -& {\mathit{dotstypey}} & ::= & {\mathit{argh}} ~~|~~ \mathsf{dy{\scriptstyle 1}} \\ -& {\mathit{dotstypex}} & ::= & \dots ~~|~~ {\mathit{borg}} ~~|~~ \mathsf{dx{\scriptstyle 2}} \\ +& {\mathit{dotstypex}} & ::= & {\mathit{argh}} ~~|~~ \mathsf{dx{\scriptstyle 1}} ~~|~~ \dots \\ +& {\mathit{dotstypey}} & ::= & {\mathit{argh}} ~~|~~ \mathsf{dy{\scriptstyle 1}} ~~|~~ \dots \\ +& {\mathit{dotstypex}} & ::= & \dots ~~|~~ {\mathit{borg}} ~~|~~ \mathsf{dx{\scriptstyle 2}} ~~|~~ \dots \\ & {\mathit{dotstypesep}} & ::= & {\mathit{borg}} \\ & {\mathit{dotstypex}} & ::= & \dots \\ & & | & {\mathit{curb}} ~~|~~ \mathsf{dx{\scriptstyle 3}} \\ & & | & \mathsf{dx{\scriptstyle 4}} ~~|~~ \mathsf{dx{\scriptstyle 5}} \\ -& & | & \mathsf{dx{\scriptstyle 6}} \\ +& & | & \mathsf{dx{\scriptstyle 6}} ~~|~~ \dots \\ & {\mathit{dotstypey}} & ::= & \dots \\ & & | & {\mathit{borg}} ~~|~~ \mathsf{dy{\scriptstyle 2}} \\ & & | & \mathsf{dy{\scriptstyle 3}} ~~|~~ \mathsf{dy{\scriptstyle 4}} \\ +& & | & \dots \\ & {\mathit{dotstypex}} & ::= & \dots ~~|~~ {\mathit{dork}} ~~|~~ \mathsf{dx{\scriptstyle 7}} \\ & {\mathit{dotstypey}} & ::= & \dots \\ & & | & {\mathit{dork}} \\ @@ -2065,17 +2066,18 @@ $$ $$ \begin{array}[t]{@{}lrrl@{}l@{}} -& {\dotstypex} & ::= & {\argh} ~~|~~ \DX1 \\ -& {\dotstypey} & ::= & {\argh} ~~|~~ \DY1 \\ -& {\dotstypex} & ::= & \dots ~~|~~ {\borg} ~~|~~ \DX2 \\ +& {\dotstypex} & ::= & {\argh} ~~|~~ \DX1 ~~|~~ \dots \\ +& {\dotstypey} & ::= & {\argh} ~~|~~ \DY1 ~~|~~ \dots \\ +& {\dotstypex} & ::= & \dots ~~|~~ {\borg} ~~|~~ \DX2 ~~|~~ \dots \\ & {\dotstypesep} & ::= & {\borg} \\ & {\dotstypex} & ::= & \dots \\ & & | & {\curb} ~~|~~ \DX3 \\ & & | & \DX4 ~~|~~ \DX5 \\ -& & | & \DX6 \\ +& & | & \DX6 ~~|~~ \dots \\ & {\dotstypey} & ::= & \dots \\ & & | & {\borg} ~~|~~ \DY2 \\ & & | & \DY3 ~~|~~ \DY4 \\ +& & | & \dots \\ & {\dotstypex} & ::= & \dots ~~|~~ {\dork} ~~|~~ \DX7 \\ & {\dotstypey} & ::= & \dots \\ & & | & {\dork} \\ @@ -3937,6 +3939,7 @@ $$ & & | & \mathsf{throw}~{\mathit{tagidx}} \\ & & | & \mathsf{throw\_ref} \\ & & | & \mathsf{try\_table}~{\mathit{blocktype}}~{\mathit{list}}({\mathit{catch}})~{{\mathit{instr}}^\ast} \\ +& & | & \dots \\ \mbox{(catch clause)} & {\mathit{catch}} & ::= & \mathsf{catch}~{\mathit{tagidx}}~{\mathit{labelidx}} \\ & & | & \mathsf{catch\_ref}~{\mathit{tagidx}}~{\mathit{labelidx}} \\ & & | & \mathsf{catch\_all}~{\mathit{labelidx}} \\ @@ -4022,6 +4025,7 @@ $$ & & | & {\mathit{shape}}{.}\mathsf{splat} \\ & & | & {{\mathit{shape}}{.}\mathsf{extract\_lane}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~{\mathit{laneidx}} & \quad \mbox{if}~ {{\mathit{sx}}^?} = \epsilon \Leftrightarrow {\mathrm{lanetype}}({\mathit{shape}}) \in \mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 64}}~\mathsf{f{\scriptstyle 32}}~\mathsf{f{\scriptstyle 64}} \\ & & | & {\mathit{shape}}{.}\mathsf{replace\_lane}~{\mathit{laneidx}} \\ +& & | & \dots \\ \end{array} $$ diff --git a/spectec/test-prose/TEST.md b/spectec/test-prose/TEST.md index 36a0afb58..f18397976 100644 --- a/spectec/test-prose/TEST.md +++ b/spectec/test-prose/TEST.md @@ -15757,7 +15757,7 @@ The instruction :math:`({\mathsf{array{.}get}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~x * The :ref:`expansion ` of :math:`C{.}\mathsf{types}{}[x]` is :math:`(\mathsf{array}~({\mathsf{mut}^?}~{\mathit{zt}}))`. - * The signedness :math:`{{\mathit{sx}}^?}` is absent if and only if :math:`{\mathit{zt}}` is a packed type. + * The signedness :math:`{{\mathit{sx}}^?}` is present if and only if :math:`{\mathit{zt}}` is a packed type. * The value type :math:`t` is :math:`{\mathrm{unpack}}({\mathit{zt}})`. @@ -27792,7 +27792,7 @@ Instr_ok/array.get - the instruction (ARRAY.GET sx? x) is valid with the instruction type [(REF ?(NULL) (_IDX x)), I32] -> [t] if: - the type C.TYPES[x] exists. - The :ref:`expansion ` of C.TYPES[x] is (ARRAY (mut? zt)). - - the signedness sx? is ?() if and only if $is_packtype(zt). + - the signedness sx? is not ?() if and only if $is_packtype(zt). - the value type t is $unpack(zt). Instr_ok/array.set diff --git a/spectec/test-splice/TEST.md b/spectec/test-splice/TEST.md index f61439203..d4902fb04 100644 --- a/spectec/test-splice/TEST.md +++ b/spectec/test-splice/TEST.md @@ -57,6 +57,7 @@ $$ & & | & \mathsf{block}~{\mathit{blocktype}}~{{\mathit{instr}}^\ast} \\ & & | & \mathsf{loop}~{\mathit{blocktype}}~{{\mathit{instr}}^\ast} \\ & & | & \mathsf{if}~{\mathit{blocktype}}~{{\mathit{instr}}^\ast}~\mathsf{else}~{{\mathit{instr}}^\ast} \\ +& & | & \dots \\ \end{array} $$ @@ -84,7 +85,8 @@ $$ & & | & \mathsf{memory{.}grow}~{\mathit{memidx}} \\ & & | & \mathsf{memory{.}fill}~{\mathit{memidx}} \\ & & | & \mathsf{memory{.}copy}~{\mathit{memidx}}~{\mathit{memidx}} \\ -& & | & \mathsf{memory{.}init}~{\mathit{memidx}}~{\mathit{dataidx}} \\[0.8ex] +& & | & \mathsf{memory{.}init}~{\mathit{memidx}}~{\mathit{dataidx}} \\ +& & | & \dots \\[0.8ex] & {\mathit{expr}} & ::= & {{\mathit{instr}}^\ast} \\ \end{array} $$ From 2a87417c5a618e240d92075a25b8cbf3a6364ee4 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Mon, 16 Feb 2026 08:53:53 +0100 Subject: [PATCH 058/235] [spec] Port to latest --- .../2.3-validation.instructions.spectec | 2 +- spectec/doc/example/output/NanoWasm.pdf | Bin 245512 -> 245512 bytes spectec/test-frontend/TEST.md | 4 ++-- spectec/test-latex/TEST.md | 2 +- spectec/test-middlend/TEST.md | 12 ++++++------ 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/specification/wasm-latest/2.3-validation.instructions.spectec b/specification/wasm-latest/2.3-validation.instructions.spectec index e57e5d90f..131926ba0 100644 --- a/specification/wasm-latest/2.3-validation.instructions.spectec +++ b/specification/wasm-latest/2.3-validation.instructions.spectec @@ -296,7 +296,7 @@ rule Instr_ok/array.new_data: rule Instr_ok/array.get: C |- ARRAY.GET sx? x : (REF NULL (_IDX x)) I32 -> $unpack(zt) -- Expand: C.TYPES[x] ~~ ARRAY (mut? zt) - -- if sx? = eps <=> $is_packtype(zt) + -- if sx? =/= eps <=> $is_packtype(zt) rule Instr_ok/array.set: C |- ARRAY.SET x : (REF NULL (_IDX x)) I32 $unpack(zt) -> eps diff --git a/spectec/doc/example/output/NanoWasm.pdf b/spectec/doc/example/output/NanoWasm.pdf index a683d05641a822dfcaab98275b6c20f4fa0a059d..ef5f39174028956cc2eefec5ab29eef4a15d2b98 100644 GIT binary patch delta 110 zcmeD9$JgloLx=aj7*Kp3=Iujja^*~ hUEEA9jEx)(jU8Rhja@Ab9PJcr2r1eAVK=h`GXT249Yp{D delta 110 zcmeD9$JgloSjT8%pHx)jZGbmjm?Z* hoQzCO91YCOoXj2FEL>cS%_%%`_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)) + -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:301.1-303.42 rule `array.set`{C : context, x : idx, zt : storagetype}: diff --git a/spectec/test-latex/TEST.md b/spectec/test-latex/TEST.md index 7ff348921..710194603 100644 --- a/spectec/test-latex/TEST.md +++ b/spectec/test-latex/TEST.md @@ -6468,7 +6468,7 @@ $$ \frac{ C{.}\mathsf{types}{}[x] \approx \mathsf{array}~({\mathsf{mut}^?}~{\mathit{zt}}) \qquad -{{\mathit{sx}}^?} = \epsilon \Leftrightarrow {\mathit{zt}} = {\mathrm{unpack}}({\mathit{zt}}) +{{\mathit{sx}}^?} \neq \epsilon \Leftrightarrow {\mathit{zt}} = {\mathrm{unpack}}({\mathit{zt}}) }{ C \vdash {\mathsf{array{.}get}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~x : (\mathsf{ref}~\mathsf{null}~x)~\mathsf{i{\scriptstyle 32}} \rightarrow {\mathrm{unpack}}({\mathit{zt}}) } \, {[\textsc{\scriptsize T{-}instr{-}array.get}]} diff --git a/spectec/test-middlend/TEST.md b/spectec/test-middlend/TEST.md index 3f4e66e43..6a33a4e45 100644 --- a/spectec/test-middlend/TEST.md +++ b/spectec/test-middlend/TEST.md @@ -3596,11 +3596,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if (C.DATAS_context[y!`%`_idx.0] = OK_datatype) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:296.1-299.39 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:296.1-299.41 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)) + -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:301.1-303.42 rule `array.set`{C : context, x : idx, zt : storagetype}: @@ -14959,11 +14959,11 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if (C.DATAS_context[y!`%`_idx.0] = OK_datatype) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:296.1-299.39 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:296.1-299.41 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)) + -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:301.1-303.42 rule `array.set`{C : context, x : idx, zt : storagetype}: @@ -26382,12 +26382,12 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (y!`%`_idx.0 < |C.DATAS_context|) -- if (C.DATAS_context[y!`%`_idx.0] = OK_datatype) - ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:296.1-299.39 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:296.1-299.41 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)]))) -- if (x!`%`_idx.0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) + -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:301.1-303.42 rule `array.set`{C : context, x : idx, zt : storagetype}: From 8f830afd82316cc77acc2849353ec417e9ef5588 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Mon, 16 Feb 2026 09:38:04 +0100 Subject: [PATCH 059/235] [spectec] Use record extension --- spectec/doc/semantics/il/2-env.spectec | 28 ++++++++++---------------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/spectec/doc/semantics/il/2-env.spectec b/spectec/doc/semantics/il/2-env.spectec index f86132732..f198b3b43 100644 --- a/spectec/doc/semantics/il/2-env.spectec +++ b/spectec/doc/semantics/il/2-env.spectec @@ -1,23 +1,30 @@ -;; Environment +;; Store syntax typdef = param* `-> OK `= inst* syntax fundef = param* `-> typ `= clause* syntax reldef = param* `-> typ `= rul* syntax gramdef = param* `-> typ `= prod* -syntax E = - { EXP (id, typ)*, - TYP (id, typdef)*, +syntax S = + { TYP (id, typdef)*, FUN (id, fundef)*, REL (id, reldef)*, GRAM (id, gramdef)* } +;; Environment + +syntax E = {S, EXP (id, typ)*} + + def $composeenvs(E*) : E hint(show (++)%) def $composeenvs(eps) = {} def $composeenvs(E_1 E*) = E_1 ++ $composeenvs(E*) +def $storeenv(S) : E +def $storeenv(S) = {TYP S.TYP, FUN S.FUN, REL S.REL, GRAM S.GRAM} + def $tupenv(typ) : E def $tupenv(TUP (x `: t)*) = {EXP (x, t)*} def $tupenv(t) = {} -- otherwise @@ -28,16 +35,3 @@ def $paramenv(TYP x) = {TYP (x, eps `-> OK `= eps)} def $paramenv(FUN x `: p* `-> t) = {FUN (x, p* `-> t `= eps)} def $paramenv(GRAM x `: p* `-> t) = {GRAM (x, p* `-> t `= eps)} def $paramenv(param*) = $composeenvs($paramenv(param)*) -- otherwise - - -;; Store - -syntax S = - { TYP (id, typdef)*, - FUN (id, fundef)*, - REL (id, reldef)*, - GRAM (id, gramdef)* - } - -def $storeenv(S) : E -def $storeenv(S) = {TYP S.TYP, FUN S.FUN, REL S.REL, GRAM S.GRAM} From ae2d32d77541e837e4ffcd6c48421da681d40d06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Li=C5=A1ka?= Date: Mon, 16 Feb 2026 10:05:24 +0100 Subject: [PATCH 060/235] [test] Improve incorrect comments (#2085) --- test/core/relaxed-simd/i8x16_relaxed_swizzle.wast | 4 ++-- test/core/relaxed-simd/relaxed_madd_nmadd.wast | 2 -- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/test/core/relaxed-simd/i8x16_relaxed_swizzle.wast b/test/core/relaxed-simd/i8x16_relaxed_swizzle.wast index 1b20668d3..aea31d059 100644 --- a/test/core/relaxed-simd/i8x16_relaxed_swizzle.wast +++ b/test/core/relaxed-simd/i8x16_relaxed_swizzle.wast @@ -15,7 +15,7 @@ (either (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15))) -;; out of range, returns 0 or modulo 15 if < 128 +;; out of range, returns 0 or modulo 16 if < 128 (assert_return (invoke "i8x16.relaxed_swizzle" (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) (v128.const i8x16 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31)) @@ -31,7 +31,7 @@ ;; Check that multiple calls to the relaxed instruction with same inputs returns same results. -;; out of range, returns 0 or modulo 15 if < 128 +;; out of range, returns 0 or modulo 16 if < 128 (assert_return (invoke "i8x16.relaxed_swizzle_cmp" (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) (v128.const i8x16 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31)) diff --git a/test/core/relaxed-simd/relaxed_madd_nmadd.wast b/test/core/relaxed-simd/relaxed_madd_nmadd.wast index c64a256f9..7fc9d05fa 100644 --- a/test/core/relaxed-simd/relaxed_madd_nmadd.wast +++ b/test/core/relaxed-simd/relaxed_madd_nmadd.wast @@ -71,7 +71,6 @@ ;; DLB_MAX * 2 - DLB_MAX == ;; DLB_MAX (if fma) ;; 0 (if no fma) -;; form https://www.vinc17.net/software/fma-tests.c ;; from https://www.vinc17.net/software/fma-tests.c (assert_return (invoke "f64x2.relaxed_madd" (v128.const f64x2 0x1.fffffffffffffp+1023 0x1.fffffffffffffp+1023) @@ -154,7 +153,6 @@ ;; DLB_MAX * 2 - DLB_MAX == ;; DLB_MAX (if fma) ;; 0 (if no fma) -;; form https://www.vinc17.net/software/fma-tests.c ;; from https://www.vinc17.net/software/fma-tests.c (assert_return (invoke "f64x2.relaxed_madd_cmp" (v128.const f64x2 0x1.fffffffffffffp+1023 0x1.fffffffffffffp+1023) From dd1600d0a5638204746b2a6a1d2528d673dffa9b Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Wed, 18 Feb 2026 19:29:52 +0100 Subject: [PATCH 061/235] [test] Fix comment in binary-leb128.wast (#2088) --- test/core/binary-leb128.wast | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/core/binary-leb128.wast b/test/core/binary-leb128.wast index 27584c7f6..787ba9eb5 100644 --- a/test/core/binary-leb128.wast +++ b/test/core/binary-leb128.wast @@ -26,7 +26,7 @@ "\05\03\01" ;; Memory section with 1 entry "\00\00" ;; no max, minimum 0 "\0b\07\01" ;; Data section with 1 entry - "\80\00" ;; Memory index 0, encoded with 2 bytes + "\80\00" ;; Flags 0, encoded with 2 bytes "\41\00\0b\00" ;; (i32.const 0) with contents "" ) (module binary From 035fbe071624fbc9c6a8fc5f3749f169bab727c0 Mon Sep 17 00:00:00 2001 From: Sukyoung Ryu Date: Sat, 21 Feb 2026 17:35:19 +0900 Subject: [PATCH 062/235] [spectec] Fix nits in IL semantics (#2090) --- spectec/doc/semantics/il/6-typing.spectec | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/spectec/doc/semantics/il/6-typing.spectec b/spectec/doc/semantics/il/6-typing.spectec index 203767cac..f8dc09b41 100644 --- a/spectec/doc/semantics/il/6-typing.spectec +++ b/spectec/doc/semantics/il/6-typing.spectec @@ -53,8 +53,8 @@ rule Sub_typ/variant: E |- t_1 <: t_2 -- Expand_typ: E |- t_1 => VARIANT tc_1* -- Expand_typ: E |- t_2 => VARIANT tc_2* - -- (if (a `: t_1a `- `{q*} pr*) = tc_1)* - -- (if (a `: t_2a `- `{q*} pr*) <- tc_2*)* + -- (if (m `: t_1a `- `{q*} pr*) = tc_1)* + -- (if (m `: t_2a `- `{q*} pr*) <- tc_2*)* -- (Sub_typ: E |- t_1a <: t_2a)* rule Sub_typ/iter: @@ -460,7 +460,7 @@ rule Ok_sym/RANGE: rule Ok_sym/ITER: E |- ITER g it (x `<- e)* : ITER t it' -- Ok_iter: E |- it : it' -| E' - -- (Ok_exp: E |- e' : ITER t' it')* + -- (Ok_exp: E |- e : ITER t' it')* -- Ok_sym: E ++ {EXP (x, t')*} ++ E' |- g : t -- Ok_typ: E |- t : OK @@ -502,8 +502,8 @@ rule Ok_prem/LET: rule Ok_prem/ITER: E |- ITER pr it (x `<- e)* : OK -- Ok_iter: E |- it : it' -| E' - -- (Ok_exp: E |- e' : ITER t' it')* - -- Ok_prem: E ++ {EXP (x, t_x)*} ++ E' |- pr : OK + -- (Ok_exp: E |- e : ITER t' it')* + -- Ok_prem: E ++ {EXP (x, t')*} ++ E' |- pr : OK rule Ok_prems: From 20aba52e20f68aacca00a8b311421bb36db0cecb Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Tue, 24 Feb 2026 09:27:19 +0100 Subject: [PATCH 063/235] [spectec] Add missing EQ/NE reduction rules to IL semantics --- spectec/doc/semantics/il/5-reduction.spectec | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/spectec/doc/semantics/il/5-reduction.spectec b/spectec/doc/semantics/il/5-reduction.spectec index 040919577..13b145430 100644 --- a/spectec/doc/semantics/il/5-reduction.spectec +++ b/spectec/doc/semantics/il/5-reduction.spectec @@ -121,10 +121,18 @@ rule Step_exp/CMP-EQ-true: S |- CMP EQ e_1 e_2 ~> BOOL true -- if e_1 = e_2 +rule Step_exp/CMP-EQ-false: + S |- CMP EQ val_1 val_2 ~> BOOL false + -- if val_1 =/= val_2 + rule Step_exp/CMP-NE-false: S |- CMP NE e_1 e_2 ~> BOOL false -- if e_1 = e_2 +rule Step_exp/CMP-NE-true: + S |- CMP NE val_1 val_2 ~> BOOL true + -- if val_1 =/= val_2 + rule Step_exp/CMP-NUM: S |- CMP numcmpop num_1 num_2 ~> BOOL $numcmp(numcmpop, num_1, num_2) From 6a6876abe94081c0b129a155063c7e4e6adcd275 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Tue, 24 Feb 2026 10:06:06 +0100 Subject: [PATCH 064/235] [spec] Fix state for expression evaluation (#2078) --- document/core/exec/modules.rst | 8 + .../wasm-3.0/4.4-execution.modules.spectec | 35 +++-- .../wasm-latest/4.4-execution.modules.spectec | 35 +++-- spectec/doc/example/output/NanoWasm.pdf | Bin 245512 -> 245512 bytes spectec/src/il2al/animate.ml | 31 ++-- spectec/src/il2al/transpile.ml | 1 + spectec/test-frontend/TEST.md | 49 ++++-- spectec/test-latex/TEST.md | 45 +++++- spectec/test-middlend/TEST.md | 147 ++++++++++++++---- spectec/test-prose/TEST.md | 112 ++++++++----- spectec/test-splice/TEST.md | 4 + 11 files changed, 342 insertions(+), 125 deletions(-) diff --git a/document/core/exec/modules.rst b/document/core/exec/modules.rst index 30cbc0a6e..430385446 100644 --- a/document/core/exec/modules.rst +++ b/document/core/exec/modules.rst @@ -182,6 +182,14 @@ $${definition: instantiate} where: +.. _eval-exprs: + +$${definition-prose: evalexprs} + +$${definition: evalexprs} + +and: + .. _eval-globals: $${definition-prose: evalglobals} diff --git a/specification/wasm-3.0/4.4-execution.modules.spectec b/specification/wasm-3.0/4.4-execution.modules.spectec index cd2122336..91b2c9b3f 100644 --- a/specification/wasm-3.0/4.4-execution.modules.spectec +++ b/specification/wasm-3.0/4.4-execution.modules.spectec @@ -157,17 +157,31 @@ def $runelem_(x, ELEM rt e^n (ACTIVE y instr*)) = instr* (CONST I32 0) (CONST I32 n) (TABLE.INIT y x) (ELEM.DROP x) ;; TODO(2, rossberg): replace with something more uniform -def $evalglobals(state, globaltype*, expr*) : (state, val*) hint(show $evalglobal*#((%,%,%))) +def $evalexprs(state, expr*) : (state, ref*) hint(show $evalexpr*#((%,%))) hint(macro none) +def $evalexprs(z, eps) = (z, eps) +def $evalexprs(z, expr expr'*) = (z'', ref ref'*) + ---- + -- Eval_expr: z; expr ~>* z'; ref + -- if (z'', ref'*) = $evalexprs(z', expr'*) + +def $evalexprss(state, expr**) : (state, ref**) hint(show $evalexpr**#((%,%))) hint(macro none) +def $evalexprss(z, eps) = (z, eps) +def $evalexprss(z, expr* expr'**) = (z'', ref* ref'**) + ---- + -- if (z', ref*) = $evalexprs(z, expr*) + -- if (z'', ref'**) = $evalexprss(z', expr'**) + +def $evalglobals(state, globaltype*, expr*) : (state, val*) hint(show $evalglobal*#((%,%,%))) hint(macro none) def $evalglobals(z, eps, eps) = (z, eps) -def $evalglobals(z, gt gt'*, expr expr'*) = (z', val val'*) +def $evalglobals(z, gt gt'*, expr expr'*) = (z'', val val'*) ---- - -- Eval_expr: z; expr ~>* z; val - -- if z = s; f + -- Eval_expr: z; expr ~>* z'; val + -- if z' = s; f -- if (s', a) = $allocglobal(s, gt, val) - -- if (z', val'*) = $evalglobals((s'; f[.MODULE.GLOBALS =++ a]), gt'*, expr'*) + -- if (z'', val'*) = $evalglobals((s'; f[.MODULE.GLOBALS =++ a]), gt'*, expr'*) def $instantiate(store, module, externaddr*) : config -def $instantiate(s, module, externaddr*) = s'; {MODULE moduleinst}; instr_E* instr_D* instr_S? +def $instantiate(s, module, externaddr*) = s''''; {MODULE moduleinst}; instr_E* instr_D* instr_S? ---- ---- -- Module_ok: |- module : xt_I* -> xt_E* -- (Externaddr_ok: s |- externaddr : xt_I)* @@ -184,11 +198,12 @@ def $instantiate(s, module, externaddr*) = s'; {MODULE moduleinst}; instr_E* ins GLOBALS $globalsxa(externaddr*), FUNCS $funcsxa(externaddr*) ($(|s.FUNCS|+i_F))^(i_F<|func*|) \ } - -- if z = s; {MODULE moduleinst_0} ;; TODO(2, rossberg): inline + -- if z = s; {MODULE moduleinst_0} -- if (z', val_G*) = $evalglobals(z, globaltype*, expr_G*) - -- (Eval_expr : z'; expr_T ~>* z'; ref_T)* - -- (Eval_expr : z'; expr_E ~>* z'; ref_E)** - -- if (s', moduleinst) = $allocmodule(s, module, externaddr*, val_G*, ref_T*, (ref_E*)*) + -- if (z'', ref_T*) = $evalexprs(z', expr_T*) + -- if (z''', ref_E**) = $evalexprss(z'', expr_E**) + -- if z''' = s'''; f + -- if (s'''', moduleinst) = $allocmodule(s''', module, externaddr*, val_G*, ref_T*, (ref_E*)*) -- if instr_D* = $concat_(instr, $rundata_(i_D, data*[i_D])^(i_D<|data*|)) -- if instr_E* = $concat_(instr, $runelem_(i_E, elem*[i_E])^(i_E<|elem*|)) -- if instr_S? = (CALL x)? diff --git a/specification/wasm-latest/4.4-execution.modules.spectec b/specification/wasm-latest/4.4-execution.modules.spectec index cd2122336..91b2c9b3f 100644 --- a/specification/wasm-latest/4.4-execution.modules.spectec +++ b/specification/wasm-latest/4.4-execution.modules.spectec @@ -157,17 +157,31 @@ def $runelem_(x, ELEM rt e^n (ACTIVE y instr*)) = instr* (CONST I32 0) (CONST I32 n) (TABLE.INIT y x) (ELEM.DROP x) ;; TODO(2, rossberg): replace with something more uniform -def $evalglobals(state, globaltype*, expr*) : (state, val*) hint(show $evalglobal*#((%,%,%))) +def $evalexprs(state, expr*) : (state, ref*) hint(show $evalexpr*#((%,%))) hint(macro none) +def $evalexprs(z, eps) = (z, eps) +def $evalexprs(z, expr expr'*) = (z'', ref ref'*) + ---- + -- Eval_expr: z; expr ~>* z'; ref + -- if (z'', ref'*) = $evalexprs(z', expr'*) + +def $evalexprss(state, expr**) : (state, ref**) hint(show $evalexpr**#((%,%))) hint(macro none) +def $evalexprss(z, eps) = (z, eps) +def $evalexprss(z, expr* expr'**) = (z'', ref* ref'**) + ---- + -- if (z', ref*) = $evalexprs(z, expr*) + -- if (z'', ref'**) = $evalexprss(z', expr'**) + +def $evalglobals(state, globaltype*, expr*) : (state, val*) hint(show $evalglobal*#((%,%,%))) hint(macro none) def $evalglobals(z, eps, eps) = (z, eps) -def $evalglobals(z, gt gt'*, expr expr'*) = (z', val val'*) +def $evalglobals(z, gt gt'*, expr expr'*) = (z'', val val'*) ---- - -- Eval_expr: z; expr ~>* z; val - -- if z = s; f + -- Eval_expr: z; expr ~>* z'; val + -- if z' = s; f -- if (s', a) = $allocglobal(s, gt, val) - -- if (z', val'*) = $evalglobals((s'; f[.MODULE.GLOBALS =++ a]), gt'*, expr'*) + -- if (z'', val'*) = $evalglobals((s'; f[.MODULE.GLOBALS =++ a]), gt'*, expr'*) def $instantiate(store, module, externaddr*) : config -def $instantiate(s, module, externaddr*) = s'; {MODULE moduleinst}; instr_E* instr_D* instr_S? +def $instantiate(s, module, externaddr*) = s''''; {MODULE moduleinst}; instr_E* instr_D* instr_S? ---- ---- -- Module_ok: |- module : xt_I* -> xt_E* -- (Externaddr_ok: s |- externaddr : xt_I)* @@ -184,11 +198,12 @@ def $instantiate(s, module, externaddr*) = s'; {MODULE moduleinst}; instr_E* ins GLOBALS $globalsxa(externaddr*), FUNCS $funcsxa(externaddr*) ($(|s.FUNCS|+i_F))^(i_F<|func*|) \ } - -- if z = s; {MODULE moduleinst_0} ;; TODO(2, rossberg): inline + -- if z = s; {MODULE moduleinst_0} -- if (z', val_G*) = $evalglobals(z, globaltype*, expr_G*) - -- (Eval_expr : z'; expr_T ~>* z'; ref_T)* - -- (Eval_expr : z'; expr_E ~>* z'; ref_E)** - -- if (s', moduleinst) = $allocmodule(s, module, externaddr*, val_G*, ref_T*, (ref_E*)*) + -- if (z'', ref_T*) = $evalexprs(z', expr_T*) + -- if (z''', ref_E**) = $evalexprss(z'', expr_E**) + -- if z''' = s'''; f + -- if (s'''', moduleinst) = $allocmodule(s''', module, externaddr*, val_G*, ref_T*, (ref_E*)*) -- if instr_D* = $concat_(instr, $rundata_(i_D, data*[i_D])^(i_D<|data*|)) -- if instr_E* = $concat_(instr, $runelem_(i_E, elem*[i_E])^(i_E<|elem*|)) -- if instr_S? = (CALL x)? diff --git a/spectec/doc/example/output/NanoWasm.pdf b/spectec/doc/example/output/NanoWasm.pdf index ef5f39174028956cc2eefec5ab29eef4a15d2b98..a720e239bac6443a8a4e1faaf73e3ed9df060098 100644 GIT binary patch delta 335 zcmeD9$Jg4%j?+llP(s!zyH%LGCRyeb>?f&I!44#rlUm4aPIAt4KS$_1cUJ{FE zMz7(NZ~?;*GXt@dRSVxFyp?x8`s()KkCrZ<-hLO*+IVce-S52rPKLgvZ_od$;F!J1 zrZ7iiP39wulQV=va=JEJRzKalpF>sR=f2tO#h3ZSyA4;LN-=HH)D9{9qoq`P^CEGvjW|m+E E0OOs8qyPW_ delta 335 zcmeD9$Jg`e zanY(8>kq7n^Kk66O>ElK+*@0~+xfO{xw`m;viQZ>5z)KT&1g|B&>&Zo$h^wp{In;nGH<`*xW=J)19 zP`~EgD+f+wimj8|r~ORabDhueW^3VgYhgwpX4-Bo%zSMjhoPB)g{iTT>2%4h%+he) zcAKrtg>25QCT>QiMrMYF2Cl}gE`}~{rWVFVj)umLuI9$BmIjV?3O0n4Z2z#ES%Mh= DX()x< diff --git a/spectec/src/il2al/animate.ml b/spectec/src/il2al/animate.ml index c13157538..5308fefc9 100644 --- a/spectec/src/il2al/animate.ml +++ b/spectec/src/il2al/animate.ml @@ -243,7 +243,7 @@ let large_enough_subsets xs = let min = if n >= 2 then n-1 else n in List.filter ( fun ys -> min <= List.length ys ) yss -let (@@) f g x = f x @ g x +let (@@@) f g x = f x @ g x let is_not_lhs e = match e.it with | LenE _ | IterE (_, (ListN (_, Some _), _)) | DotE _ -> true @@ -262,7 +262,7 @@ let is_call e = match e.it with let subset_selector e = if is_not_lhs e then (fun _ -> []) - else if is_call e then singletons @@ group_arg e + else if is_call e then singletons @@@ group_arg e else if is_atomic_lhs e then wrap else large_enough_subsets @@ -294,13 +294,24 @@ let rec rows_of_prem vars len i p = let covering_vars = List.filter_map (index_of len vars) targets in [ Assign targets, p, [i] @ covering_vars ] | RulePr (_, _, _, { it = TupE args; _ }) -> - (* Assumpton: the only possible assigned-value is the last arg (i.e. ... |- lhs ) *) - let _, l = Util.Lib.List.split_last args in - let frees = (free_exp_list l) in - [ - Condition, p, [i]; - Assign frees, p, [i] @ List.filter_map (index_of len vars) (free_exp_list l) - ] + (* Assumption: + * The only possible set of output variable + * is the last arg (i.e. ... |- lhs ) + * or the last two args (i.e. ... ~>* z; v) *) + let assign_last n = + if List.length args <= n then [] else + let outs, ins = Lib.List.split n (List.rev args) in + let free_exps es = es |> List.map (free_exp false) |> List.fold_left union empty in + let free_set = free_exps outs in + let bound_set = free_exps ins in + if not (disjoint free_set bound_set) then [] else + let frees = free_set.varid |> Set.elements in + [ Assign frees, p, [i] @ List.filter_map (index_of len vars) frees ] + in + + [ Condition, p, [i] ] + @ assign_last 1 + @ assign_last 2 | IterPr (p', iterexp) -> let p_r = rewrite_iterexp iterexp p' in let to_iter (tag, p, coverings) = tag, IterPr (recover_iterexp iterexp p, iterexp) $ p.at, coverings in @@ -342,7 +353,7 @@ let animate_prems known_vars prems = Error.error (over_region (List.map at unhandled_prems)) "prose translation" "There might be a cyclic binding" else snd !best' - | Some x -> x + | Some prems -> prems (* Animate rule *) let animate_rule r = match r.it with diff --git a/spectec/src/il2al/transpile.ml b/spectec/src/il2al/transpile.ml index b343e16c0..94a2ec01c 100644 --- a/spectec/src/il2al/transpile.ml +++ b/spectec/src/il2al/transpile.ml @@ -946,6 +946,7 @@ let hide_state_expr expr = | CallE (f, args) -> CallE (f, hide_state_args args) | TupE [ s; e ] when is_store s -> e.it | TupE [ z; e ] when is_state z -> e.it + | VarE id when is_state expr && String.starts_with ~prefix:"z" id -> VarE "z" | e -> e in { expr with it = expr' } diff --git a/spectec/test-frontend/TEST.md b/spectec/test-frontend/TEST.md index e3570fb28..8466af4b8 100644 --- a/spectec/test-frontend/TEST.md +++ b/spectec/test-frontend/TEST.md @@ -7285,22 +7285,48 @@ def $runelem_(elemidx : elemidx, elem : elem) : instr* ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:160.1-160.94 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:160.1-160.92 +def $evalexprs(state : state, expr*) : (state, ref*) + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:161.1-161.34 + def $evalexprs{z : state}(z, []) = (z, []) + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:162.1-165.46 + def $evalexprs{z : state, expr : expr, `expr'*` : expr*, z'' : state, ref : ref, `ref'*` : ref*, z' : state}(z, [expr] ++ expr'*{expr' <- `expr'*`}) = (z'', [ref] ++ ref'*{ref' <- `ref'*`}) + -- Eval_expr: `%;%~>*%;%`(z, expr, z', [(ref : ref <: val)]) + -- if ((z'', ref'*{ref' <- `ref'*`}) = $evalexprs(z', expr'*{expr' <- `expr'*`})) +} + +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:167.1-167.96 +def $evalexprss(state : state, expr**) : (state, ref**) + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:168.1-168.35 + def $evalexprss{z : state}(z, []) = (z, []) + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:169.1-172.49 + def $evalexprss{z : state, `expr*` : expr*, `expr'**` : expr**, z'' : state, `ref*` : ref*, `ref'**` : ref**, z' : state}(z, [expr*{expr <- `expr*`}] ++ expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`}) = (z'', [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) + -- if ((z', ref*{ref <- `ref*`}) = $evalexprs(z, expr*{expr <- `expr*`})) + -- if ((z'', ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = $evalexprss(z', expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`})) +} + +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:174.1-174.111 def $evalglobals(state : state, globaltype*, expr*) : (state, val*) - ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:161.1-161.41 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:175.1-175.41 def $evalglobals{z : state}(z, [], []) = (z, []) - ;; ../../../../specification/wasm-latest/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]) - -- if (z = `%;%`_state(s, f)) + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:176.1-181.82 + def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : expr, `expr'*` : expr*, z'' : state, val : val, `val'*` : val*, z' : state, 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]) + -- 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'*`})) + -- if ((z'', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`})) } ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $instantiate(store : store, module : module, externaddr*) : config ;; ../../../../specification/wasm-latest/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*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, 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?`})) + 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*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, z : state, z' : state, `val_G*` : val*, z'' : state, `ref_T*` : ref*, z''' : state, `ref_E**` : ref**, s''' : store, f : frame, 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*`})) @@ -7312,9 +7338,10 @@ def $instantiate(store : store, module : module, externaddr*) : config -- 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*`}|){}, 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 ((z'', ref_T*{ref_T <- `ref_T*`}) = $evalexprs(z', expr_T*{expr_T <- `expr_T*`})) + -- if ((z''', ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = $evalexprss(z'', expr_E*{expr_E <- `expr_E*`}*{`expr_E*` <- `expr_E**`})) + -- if (z''' = `%;%`_state(s''', f)) + -- 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*`}|){})) -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){})) -- if (instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`}) diff --git a/spectec/test-latex/TEST.md b/spectec/test-latex/TEST.md index 710194603..4a45e4ccf 100644 --- a/spectec/test-latex/TEST.md +++ b/spectec/test-latex/TEST.md @@ -11142,17 +11142,45 @@ $$ \end{array} $$ +$$ +\begin{array}[t]{@{}lcl@{}l@{}} +{{{\mathrm{evalexpr}}^\ast}}{(z, \epsilon)} & = & (z, \epsilon) \\ +{{{\mathrm{evalexpr}}^\ast}}{(z, {\mathit{expr}}~{{\mathit{expr}'}^\ast})} & = & ({z''}, {\mathit{ref}}~{{\mathit{ref}'}^\ast}) & \\ +&& \multicolumn{2}{@{}l@{}}{\quad +\quad +\begin{array}[t]{@{}l@{}} +\mbox{if}~ z ; {\mathit{expr}} \hookrightarrow^\ast {z'} ; {\mathit{ref}} \\ +{\land}~ ({z''}, {{\mathit{ref}'}^\ast}) = {{{\mathrm{evalexpr}}^\ast}}{({z'}, {{\mathit{expr}'}^\ast})} \\ +\end{array} +} \\ +\end{array} +$$ + +$$ +\begin{array}[t]{@{}lcl@{}l@{}} +{{{{\mathrm{evalexpr}}^\ast}^\ast}}{(z, \epsilon)} & = & (z, \epsilon) \\ +{{{{\mathrm{evalexpr}}^\ast}^\ast}}{(z, {{\mathit{expr}}^\ast}~{{{\mathit{expr}'}^\ast}^\ast})} & = & ({z''}, {{\mathit{ref}}^\ast}~{{{\mathit{ref}'}^\ast}^\ast}) & \\ +&& \multicolumn{2}{@{}l@{}}{\quad +\quad +\begin{array}[t]{@{}l@{}} +\mbox{if}~ ({z'}, {{\mathit{ref}}^\ast}) = {{{\mathrm{evalexpr}}^\ast}}{(z, {{\mathit{expr}}^\ast})} \\ +{\land}~ ({z''}, {{{\mathit{ref}'}^\ast}^\ast}) = {{{{\mathrm{evalexpr}}^\ast}^\ast}}{({z'}, {{{\mathit{expr}'}^\ast}^\ast})} \\ +\end{array} +} \\ +\end{array} +$$ + $$ \begin{array}[t]{@{}lcl@{}l@{}} {{{\mathrm{evalglobal}}^\ast}}{(z, \epsilon, \epsilon)} & = & (z, \epsilon) \\ -{{{\mathrm{evalglobal}}^\ast}}{(z, {\mathit{gt}}~{{\mathit{gt}'}^\ast}, {\mathit{expr}}~{{\mathit{expr}'}^\ast})} & = & ({z'}, {\mathit{val}}~{{\mathit{val}'}^\ast}) & \\ +{{{\mathrm{evalglobal}}^\ast}}{(z, {\mathit{gt}}~{{\mathit{gt}'}^\ast}, {\mathit{expr}}~{{\mathit{expr}'}^\ast})} & = & ({z''}, {\mathit{val}}~{{\mathit{val}'}^\ast}) & \\ && \multicolumn{2}{@{}l@{}}{\quad \quad \begin{array}[t]{@{}l@{}} -\mbox{if}~ z ; {\mathit{expr}} \hookrightarrow^\ast z ; {\mathit{val}} \\ -{\land}~ z = s ; f \\ +\mbox{if}~ z ; {\mathit{expr}} \hookrightarrow^\ast {z'} ; {\mathit{val}} \\ +{\land}~ {z'} = s ; f \\ {\land}~ ({s'}, a) = {\mathrm{allocglobal}}(s, {\mathit{gt}}, {\mathit{val}}) \\ -{\land}~ ({z'}, {{\mathit{val}'}^\ast}) = {{{\mathrm{evalglobal}}^\ast}}{(({s'} ; f{}[{.}\mathsf{module}{.}\mathsf{globals} \mathrel{{=}{\oplus}} a]), {{\mathit{gt}'}^\ast}, {{\mathit{expr}'}^\ast})} \\ +{\land}~ ({z''}, {{\mathit{val}'}^\ast}) = {{{\mathrm{evalglobal}}^\ast}}{(({s'} ; f{}[{.}\mathsf{module}{.}\mathsf{globals} \mathrel{{=}{\oplus}} a]), {{\mathit{gt}'}^\ast}, {{\mathit{expr}'}^\ast})} \\ \end{array} } \\ \end{array} @@ -11160,7 +11188,7 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\mathrm{instantiate}}(s, {\mathit{module}}, {{\mathit{externaddr}}^\ast}) & = & {s'} ; \{ \mathsf{module}~{\mathit{moduleinst}} \} ; {{\mathit{instr}}_{\mathsf{e}}^\ast}~{{\mathit{instr}}_{\mathsf{d}}^\ast}~{{\mathit{instr}}_{\mathsf{s}}^?} & \\ +{\mathrm{instantiate}}(s, {\mathit{module}}, {{\mathit{externaddr}}^\ast}) & = & {s''''} ; \{ \mathsf{module}~{\mathit{moduleinst}} \} ; {{\mathit{instr}}_{\mathsf{e}}^\ast}~{{\mathit{instr}}_{\mathsf{d}}^\ast}~{{\mathit{instr}}_{\mathsf{s}}^?} & \\ \multicolumn{4}{@{}l@{}}{\quad \quad \begin{array}[t]{@{}l@{}} @@ -11178,9 +11206,10 @@ $$ \mathsf{funcs}~{\mathrm{funcs}}({{\mathit{externaddr}}^\ast})~{({|s{.}\mathsf{funcs}|} + i_{\mathsf{f}})^{i_{\mathsf{f}}<{|{{\mathit{func}}^\ast}|}}} \}\end{array} \\ {\land}~ z = s ; \{ \mathsf{module}~{\mathit{moduleinst}}_0 \} \\ {\land}~ ({z'}, {{\mathit{val}}_{\mathsf{g}}^\ast}) = {{{\mathrm{evalglobal}}^\ast}}{(z, {{\mathit{globaltype}}^\ast}, {{\mathit{expr}}_{\mathsf{g}}^\ast})} \\ -{\land}~ ({z'} ; {\mathit{expr}}_{\mathsf{t}} \hookrightarrow^\ast {z'} ; {\mathit{ref}}_{\mathsf{t}})^\ast \\ -{\land}~ {({z'} ; {\mathit{expr}}_{\mathsf{e}} \hookrightarrow^\ast {z'} ; {\mathit{ref}}_{\mathsf{e}})^\ast}^\ast \\ -{\land}~ ({s'}, {\mathit{moduleinst}}) = {\mathrm{allocmodule}}(s, {\mathit{module}}, {{\mathit{externaddr}}^\ast}, {{\mathit{val}}_{\mathsf{g}}^\ast}, {{\mathit{ref}}_{\mathsf{t}}^\ast}, {({{\mathit{ref}}_{\mathsf{e}}^\ast})^\ast}) \\ +{\land}~ ({z''}, {{\mathit{ref}}_{\mathsf{t}}^\ast}) = {{{\mathrm{evalexpr}}^\ast}}{({z'}, {{\mathit{expr}}_{\mathsf{t}}^\ast})} \\ +{\land}~ ({z'''}, {{{\mathit{ref}}_{\mathsf{e}}^\ast}^\ast}) = {{{{\mathrm{evalexpr}}^\ast}^\ast}}{({z''}, {{{\mathit{expr}}_{\mathsf{e}}^\ast}^\ast})} \\ +{\land}~ {z'''} = {s'''} ; f \\ +{\land}~ ({s''''}, {\mathit{moduleinst}}) = {\mathrm{allocmodule}}({s'''}, {\mathit{module}}, {{\mathit{externaddr}}^\ast}, {{\mathit{val}}_{\mathsf{g}}^\ast}, {{\mathit{ref}}_{\mathsf{t}}^\ast}, {({{\mathit{ref}}_{\mathsf{e}}^\ast})^\ast}) \\ {\land}~ {{\mathit{instr}}_{\mathsf{d}}^\ast} = {\bigoplus}\, {{{\mathrm{rundata}}}_{i_{\mathsf{d}}}({{\mathit{data}}^\ast}{}[i_{\mathsf{d}}])^{i_{\mathsf{d}}<{|{{\mathit{data}}^\ast}|}}} \\ {\land}~ {{\mathit{instr}}_{\mathsf{e}}^\ast} = {\bigoplus}\, {{{\mathrm{runelem}}}_{i_{\mathsf{e}}}({{\mathit{elem}}^\ast}{}[i_{\mathsf{e}}])^{i_{\mathsf{e}}<{|{{\mathit{elem}}^\ast}|}}} \\ {\land}~ {{\mathit{instr}}_{\mathsf{s}}^?} = {(\mathsf{call}~x)^?} \\ diff --git a/spectec/test-middlend/TEST.md b/spectec/test-middlend/TEST.md index 6a33a4e45..ce7873e55 100644 --- a/spectec/test-middlend/TEST.md +++ b/spectec/test-middlend/TEST.md @@ -7275,22 +7275,48 @@ def $runelem_(elemidx : elemidx, elem : elem) : instr* ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:160.1-160.94 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:160.1-160.92 +def $evalexprs(state : state, expr*) : (state, ref*) + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:161.1-161.34 + def $evalexprs{z : state}(z, []) = (z, []) + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:162.1-165.46 + def $evalexprs{z : state, expr : expr, `expr'*` : expr*, z'' : state, ref : ref, `ref'*` : ref*, z' : state}(z, [expr] ++ expr'*{expr' <- `expr'*`}) = (z'', [ref] ++ ref'*{ref' <- `ref'*`}) + -- Eval_expr: `%;%~>*%;%`(z, expr, z', [(ref : ref <: val)]) + -- if ((z'', ref'*{ref' <- `ref'*`}) = $evalexprs(z', expr'*{expr' <- `expr'*`})) +} + +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:167.1-167.96 +def $evalexprss(state : state, expr**) : (state, ref**) + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:168.1-168.35 + def $evalexprss{z : state}(z, []) = (z, []) + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:169.1-172.49 + def $evalexprss{z : state, `expr*` : expr*, `expr'**` : expr**, z'' : state, `ref*` : ref*, `ref'**` : ref**, z' : state}(z, [expr*{expr <- `expr*`}] ++ expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`}) = (z'', [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) + -- if ((z', ref*{ref <- `ref*`}) = $evalexprs(z, expr*{expr <- `expr*`})) + -- if ((z'', ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = $evalexprss(z', expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`})) +} + +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:174.1-174.111 def $evalglobals(state : state, globaltype*, expr*) : (state, val*) - ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:161.1-161.41 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:175.1-175.41 def $evalglobals{z : state}(z, [], []) = (z, []) - ;; ../../../../specification/wasm-latest/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]) - -- if (z = `%;%`_state(s, f)) + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:176.1-181.82 + def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : expr, `expr'*` : expr*, z'' : state, val : val, `val'*` : val*, z' : state, 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]) + -- 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'*`})) + -- if ((z'', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`})) } ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $instantiate(store : store, module : module, externaddr*) : config ;; ../../../../specification/wasm-latest/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*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, 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?`})) + 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*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, z : state, z' : state, `val_G*` : val*, z'' : state, `ref_T*` : ref*, z''' : state, `ref_E**` : ref**, s''' : store, f : frame, 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*`})) @@ -7302,9 +7328,10 @@ def $instantiate(store : store, module : module, externaddr*) : config -- 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*`}|){}, 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 ((z'', ref_T*{ref_T <- `ref_T*`}) = $evalexprs(z', expr_T*{expr_T <- `expr_T*`})) + -- if ((z''', ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = $evalexprss(z'', expr_E*{expr_E <- `expr_E*`}*{`expr_E*` <- `expr_E**`})) + -- if (z''' = `%;%`_state(s''', f)) + -- 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*`}|){})) -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){})) -- if (instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`}) @@ -18640,22 +18667,48 @@ def $runelem_(elemidx : elemidx, elem : elem) : instr* ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:160.1-160.94 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:160.1-160.92 +def $evalexprs(state : state, expr*) : (state, ref*) + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:161.1-161.34 + def $evalexprs{z : state}(z, []) = (z, []) + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:162.1-165.46 + def $evalexprs{z : state, expr : expr, `expr'*` : expr*, z'' : state, ref : ref, `ref'*` : ref*, z' : state}(z, [expr] ++ expr'*{expr' <- `expr'*`}) = (z'', [ref] ++ ref'*{ref' <- `ref'*`}) + -- Eval_expr: `%;%~>*%;%`(z, expr, z', [(ref : ref <: val)]) + -- if ((z'', ref'*{ref' <- `ref'*`}) = $evalexprs(z', expr'*{expr' <- `expr'*`})) +} + +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:167.1-167.96 +def $evalexprss(state : state, expr**) : (state, ref**) + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:168.1-168.35 + def $evalexprss{z : state}(z, []) = (z, []) + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:169.1-172.49 + def $evalexprss{z : state, `expr*` : expr*, `expr'**` : expr**, z'' : state, `ref*` : ref*, `ref'**` : ref**, z' : state}(z, [expr*{expr <- `expr*`}] ++ expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`}) = (z'', [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) + -- if ((z', ref*{ref <- `ref*`}) = $evalexprs(z, expr*{expr <- `expr*`})) + -- if ((z'', ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = $evalexprss(z', expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`})) +} + +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:174.1-174.111 def $evalglobals(state : state, globaltype*, expr*) : (state, val*) - ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:161.1-161.41 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:175.1-175.41 def $evalglobals{z : state}(z, [], []) = (z, []) - ;; ../../../../specification/wasm-latest/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]) - -- if (z = `%;%`_state(s, f)) + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:176.1-181.82 + def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : expr, `expr'*` : expr*, z'' : state, val : val, `val'*` : val*, z' : state, 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]) + -- 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'*`})) + -- if ((z'', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`})) } ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $instantiate(store : store, module : module, externaddr*) : config ;; ../../../../specification/wasm-latest/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*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, 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?`})) + 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*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, z : state, z' : state, `val_G*` : val*, z'' : state, `ref_T*` : ref*, z''' : state, `ref_E**` : ref**, s''' : store, f : frame, 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*`})) @@ -18667,9 +18720,10 @@ def $instantiate(store : store, module : module, externaddr*) : config -- 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*`}|){}, 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 ((z'', ref_T*{ref_T <- `ref_T*`}) = $evalexprs(z', expr_T*{expr_T <- `expr_T*`})) + -- if ((z''', ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = $evalexprss(z'', expr_E*{expr_E <- `expr_E*`}*{`expr_E*` <- `expr_E**`})) + -- if (z''' = `%;%`_state(s''', f)) + -- 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*`}|){})) -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){})) -- if (instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`}) @@ -30184,22 +30238,48 @@ def $runelem_(elemidx : elemidx, elem : elem) : instr* ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:160.1-160.94 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:160.1-160.92 +def $evalexprs(state : state, expr*) : (state, ref*) + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:161.1-161.34 + def $evalexprs{z : state}(z, []) = (z, []) + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:162.1-165.46 + def $evalexprs{z : state, expr : expr, `expr'*` : expr*, z'' : state, ref : ref, `ref'*` : ref*, z' : state}(z, [expr] ++ expr'*{expr' <- `expr'*`}) = (z'', [ref] ++ ref'*{ref' <- `ref'*`}) + -- Eval_expr: `%;%~>*%;%`(z, expr, z', [(ref : ref <: val)]) + -- if ((z'', ref'*{ref' <- `ref'*`}) = $evalexprs(z', expr'*{expr' <- `expr'*`})) +} + +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:167.1-167.96 +def $evalexprss(state : state, expr**) : (state, ref**) + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:168.1-168.35 + def $evalexprss{z : state}(z, []) = (z, []) + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:169.1-172.49 + def $evalexprss{z : state, `expr*` : expr*, `expr'**` : expr**, z'' : state, `ref*` : ref*, `ref'**` : ref**, z' : state}(z, [expr*{expr <- `expr*`}] ++ expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`}) = (z'', [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) + -- if ((z', ref*{ref <- `ref*`}) = $evalexprs(z, expr*{expr <- `expr*`})) + -- if ((z'', ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = $evalexprss(z', expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`})) +} + +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:174.1-174.111 def $evalglobals(state : state, globaltype*, expr*) : (state, val*) - ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:161.1-161.41 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:175.1-175.41 def $evalglobals{z : state}(z, [], []) = (z, []) - ;; ../../../../specification/wasm-latest/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]) - -- if (z = `%;%`_state(s, f)) + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:176.1-181.82 + def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : expr, `expr'*` : expr*, z'' : state, val : val, `val'*` : val*, z' : state, 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]) + -- 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'*`})) + -- if ((z'', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`})) } ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $instantiate(store : store, module : module, externaddr*) : config ;; ../../../../specification/wasm-latest/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*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, 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?`})) + 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*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, z : state, z' : state, `val_G*` : val*, z'' : state, `ref_T*` : ref*, z''' : state, `ref_E**` : ref**, s''' : store, f : frame, 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*`})) @@ -30211,9 +30291,10 @@ def $instantiate(store : store, module : module, externaddr*) : config -- 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*`}|){}, 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 ((z'', ref_T*{ref_T <- `ref_T*`}) = $evalexprs(z', expr_T*{expr_T <- `expr_T*`})) + -- if ((z''', ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = $evalexprss(z'', expr_E*{expr_E <- `expr_E*`}*{`expr_E*` <- `expr_E**`})) + -- if (z''' = `%;%`_state(s''', f)) + -- 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*`}|){})) -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){})) -- if (instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`}) diff --git a/spectec/test-prose/TEST.md b/spectec/test-prose/TEST.md index f18397976..ea9df342d 100644 --- a/spectec/test-prose/TEST.md +++ b/spectec/test-prose/TEST.md @@ -26359,6 +26359,40 @@ The instruction sequence :math:`(\mathsf{block}~{\mathit{blocktype}}~{{\mathit{i #. Return :math:`{{\mathit{instr}}^\ast}~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~0)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{table{.}init}~y~x)~(\mathsf{elem{.}drop}~x)`. +:math:`{{{\mathrm{evalexpr}}^\ast}}{(z, {{\mathit{expr}''}^\ast})}` +................................................................... + + +1. If :math:`{{\mathit{expr}''}^\ast} = \epsilon`, then: + + a. Return :math:`\epsilon`. + +#. Let :math:`{\mathit{expr}}~{{\mathit{expr}'}^\ast}` be :math:`{{\mathit{expr}''}^\ast}`. + +#. Let :math:`{\mathit{ref}}` be the result of :ref:`evaluating ` :math:`{\mathit{expr}}` with state :math:`z`. + +#. Let :math:`{{\mathit{ref}'}^\ast}` be :math:`{{{\mathrm{evalexpr}}^\ast}}{(z, {{\mathit{expr}'}^\ast})}`. + +#. Return :math:`{\mathit{ref}}~{{\mathit{ref}'}^\ast}`. + + +:math:`{{{{\mathrm{evalexpr}}^\ast}^\ast}}{(z, {{\mathit{expr}''}^\ast})}` +.......................................................................... + + +1. If :math:`{{\mathit{expr}''}^\ast} = \epsilon`, then: + + a. Return :math:`\epsilon`. + +#. Let :math:`{{\mathit{expr}}^\ast}~{{{\mathit{expr}'}^\ast}^\ast}` be :math:`{{\mathit{expr}''}^\ast}`. + +#. Let :math:`{{\mathit{ref}}^\ast}` be :math:`{{{\mathrm{evalexpr}}^\ast}}{(z, {{\mathit{expr}}^\ast})}`. + +#. Let :math:`{{{\mathit{ref}'}^\ast}^\ast}` be :math:`{{{{\mathrm{evalexpr}}^\ast}^\ast}}{(z, {{{\mathit{expr}'}^\ast}^\ast})}`. + +#. Return :math:`{{\mathit{ref}}^\ast}~{{{\mathit{ref}'}^\ast}^\ast}`. + + :math:`{{{\mathrm{evalglobal}}^\ast}}{(z, {{\mathit{globaltype}}^\ast}, {{\mathit{expr}''}^\ast})}` ................................................................................................... @@ -26377,10 +26411,10 @@ The instruction sequence :math:`(\mathsf{block}~{\mathit{blocktype}}~{{\mathit{i #. Let :math:`{\mathit{gt}}~{{\mathit{gt}'}^\ast}` be :math:`{{\mathit{globaltype}}^\ast}`. - #. Let :math:`(s, f)` be the destructuring of :math:`z`. - #. Let :math:`{\mathit{val}}` be the result of :ref:`evaluating ` :math:`{\mathit{expr}}` with state :math:`z`. + #. Let :math:`(s, f)` be the destructuring of :math:`z`. + #. Let :math:`a` be :math:`{\mathrm{allocglobal}}(s, {\mathit{gt}}, {\mathit{val}})`. #. Append :math:`a` to :math:`f{.}\mathsf{module}{.}\mathsf{globals}`. @@ -26454,30 +26488,14 @@ The instruction sequence :math:`(\mathsf{block}~{\mathit{blocktype}}~{{\mathit{i #. Let :math:`{{\mathit{val}}_{\mathsf{g}}^\ast}` be :math:`{{{\mathrm{evalglobal}}^\ast}}{(z, {{\mathit{globaltype}}^\ast}, {{\mathit{expr}}_{\mathsf{g}}^\ast})}`. -#. Let :math:`{{\mathit{ref}}_{\mathsf{t}}^\ast}` be the reference value sequence :math:`\epsilon`. - -#. For each :math:`{\mathit{expr}}_{\mathsf{t}}` in :math:`{{\mathit{expr}}_{\mathsf{t}}^\ast}`, do: - - a. Let :math:`{\mathit{ref}}_{\mathsf{t}}` be the result of :ref:`evaluating ` :math:`{\mathit{expr}}_{\mathsf{t}}` with state :math:`z`. - - #. Append :math:`{\mathit{ref}}_{\mathsf{t}}` to :math:`{{\mathit{ref}}_{\mathsf{t}}^\ast}`. - -#. Let :math:`{{{\mathit{ref}}_{\mathsf{e}}^\ast}^\ast}` be the reference value sequence sequence :math:`\epsilon`. - -#. For each :math:`{{\mathit{expr}}_{\mathsf{e}}^\ast}` in :math:`{{{\mathit{expr}}_{\mathsf{e}}^\ast}^\ast}`, do: - - a. Let :math:`{{\mathit{ref}}_{\mathsf{e}}^\ast}` be the reference value sequence :math:`\epsilon`. - - #. For each :math:`{\mathit{expr}}_{\mathsf{e}}` in :math:`{{\mathit{expr}}_{\mathsf{e}}^\ast}`, do: - - 1) Let :math:`{\mathit{ref}}_{\mathsf{e}}` be the result of :ref:`evaluating ` :math:`{\mathit{expr}}_{\mathsf{e}}` with state :math:`z`. - - #) Append :math:`{\mathit{ref}}_{\mathsf{e}}` to :math:`{{\mathit{ref}}_{\mathsf{e}}^\ast}`. +#. Let :math:`{{\mathit{ref}}_{\mathsf{t}}^\ast}` be :math:`{{{\mathrm{evalexpr}}^\ast}}{(z, {{\mathit{expr}}_{\mathsf{t}}^\ast})}`. - #. Append :math:`{{\mathit{ref}}_{\mathsf{e}}^\ast}` to :math:`{{{\mathit{ref}}_{\mathsf{e}}^\ast}^\ast}`. +#. Let :math:`{{{\mathit{ref}}_{\mathsf{e}}^\ast}^\ast}` be :math:`{{{{\mathrm{evalexpr}}^\ast}^\ast}}{(z, {{{\mathit{expr}}_{\mathsf{e}}^\ast}^\ast})}`. #. Pop the :math:`\mathsf{frame}` from the stack. +#. Let :math:`(s, f)` be the destructuring of :math:`z`. + #. Let :math:`{\mathit{moduleinst}}` be :math:`{\mathrm{allocmodule}}(s, {\mathit{module}}, {{\mathit{externaddr}}^\ast}, {{\mathit{val}}_{\mathsf{g}}^\ast}, {{\mathit{ref}}_{\mathsf{t}}^\ast}, {{{\mathit{ref}}_{\mathsf{e}}^\ast}^\ast})`. #. Let :math:`{F'}` be the :math:`\mathsf{frame}` :math:`\{ \mathsf{module}~{\mathit{moduleinst}} \}`. @@ -32876,6 +32894,22 @@ runelem_ x (ELEM rt e^n elemmode) 4. Let (ACTIVE y instr*) be elemmode. 5. Return instr* :: [(I32.CONST 0), (I32.CONST n), (TABLE.INIT y x), (ELEM.DROP x)]. +evalexprs z expr''* +1. If (expr''* = []), then: + a. Return []. +2. Let [expr] :: expr'* be expr''*. +3. Let [ref] be $Eval_expr(z, expr). +4. Let ref'* be $evalexprs(z, expr'*). +5. Return [ref] :: ref'*. + +evalexprss z expr''* +1. If (expr''* = []), then: + a. Return []. +2. Let [expr*] :: expr'** be expr''*. +3. Let ref* be $evalexprs(z, expr*). +4. Let ref'** be $evalexprss(z, expr'**). +5. Return [ref*] :: ref'**. + evalglobals z globaltype* expr''* 1. If (expr''* = []), then: a. Assert: Due to validation, (globaltype* = []). @@ -32884,8 +32918,8 @@ evalglobals z globaltype* expr''* a. Let [expr] :: expr'* be expr''*. b. Assert: Due to validation, (|globaltype*| >= 1). c. Let [gt] :: gt'* be globaltype*. - d. Let (s, f) be z. - e. Let [val] be $Eval_expr(z, expr). + d. Let [val] be $Eval_expr(z, expr). + e. Let (s, f) be z. f. Let a be $allocglobal(s, gt, val). g. Append a to the f.MODULE.GLOBALS. h. Let val'* be $evalglobals((s, f), gt'*, expr'*). @@ -32916,28 +32950,20 @@ instantiate s module externaddr* 14. Let z be (s, { MODULE: moduleinst_0 }). 15. Push the frame (FRAME_ 0 { $frame(z) }) to the stack. 16. Let val_G* be $evalglobals(z, globaltype*, expr_G*). -17. Let ref_T* be []. -18. For each expr_T in expr_T*, do: - a. Let [ref_T] be $Eval_expr(z, expr_T). - b. Append ref_T to the ref_T*. -19. Let ref_E** be []. -20. For each expr_E* in expr_E**, do: - a. Let ref_E* be []. - b. For each expr_E in expr_E*, do: - 1) Let [ref_E] be $Eval_expr(z, expr_E). - 2) Append ref_E to the ref_E*. - c. Append ref_E* to the ref_E**. -21. Pop the frame (FRAME_ 0 { f }) from the stack. -22. Let moduleinst be $allocmodule(s, module, externaddr*, val_G*, ref_T*, ref_E**). -23. Push the frame (FRAME_ 0 { { MODULE: moduleinst } }) to the stack. -24. Execute the sequence instr_E*. -25. Execute the sequence instr_D*. -26. If start? is defined, then: +17. Let ref_T* be $evalexprs(z, expr_T*). +18. Let ref_E** be $evalexprss(z, expr_E**). +19. Pop the frame (FRAME_ 0 { f }) from the stack. +20. Let (s, f) be z. +21. Let moduleinst be $allocmodule(s, module, externaddr*, val_G*, ref_T*, ref_E**). +22. Push the frame (FRAME_ 0 { { MODULE: moduleinst } }) to the stack. +23. Execute the sequence instr_E*. +24. Execute the sequence instr_D*. +25. If start? is defined, then: a. Let ?((START x)) be start?. b. Let instr_S be (CALL x). c. Execute the instruction instr_S. -27. Pop the frame (FRAME_ 0 { { MODULE: moduleinst } }) from the stack. -28. Return moduleinst. +26. Pop the frame (FRAME_ 0 { { MODULE: moduleinst } }) from the stack. +27. Return moduleinst. invoke s funcaddr val* 1. Assert: Due to validation, $Expand(s.FUNCS[funcaddr].TYPE) is some ->. diff --git a/spectec/test-splice/TEST.md b/spectec/test-splice/TEST.md index d4902fb04..1b03a9fa1 100644 --- a/spectec/test-splice/TEST.md +++ b/spectec/test-splice/TEST.md @@ -1531,6 +1531,8 @@ warning: definition `dots` was never spliced warning: definition `elem` was never spliced warning: definition `eleminst` was never spliced warning: definition `elemsd` was never spliced +warning: definition `evalexprs` was never spliced +warning: definition `evalexprss` was never spliced warning: definition `evalglobals` was never spliced warning: definition `exninst` was never spliced warning: definition `expanddt` was never spliced @@ -2404,6 +2406,8 @@ warning: definition prose `disjoint_` was never spliced warning: definition prose `elem` was never spliced warning: definition prose `eleminst` was never spliced warning: definition prose `elemsd` was never spliced +warning: definition prose `evalexprs` was never spliced +warning: definition prose `evalexprss` was never spliced warning: definition prose `evalglobals` was never spliced warning: definition prose `exninst` was never spliced warning: definition prose `expanddt` was never spliced From 8a73ca5cd81902487573999e8f12042930b9b36a Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Wed, 25 Feb 2026 18:20:39 +0100 Subject: [PATCH 065/235] [spectec] Fix rule SUB-STR in IL semantics --- spectec/doc/semantics/il/5-reduction.spectec | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/spectec/doc/semantics/il/5-reduction.spectec b/spectec/doc/semantics/il/5-reduction.spectec index 13b145430..1e2fc7070 100644 --- a/spectec/doc/semantics/il/5-reduction.spectec +++ b/spectec/doc/semantics/il/5-reduction.spectec @@ -394,11 +394,12 @@ rule Step_exp/SUB-LIST: S |- SUB (LIST e*) (ITER t_1 STAR) (ITER t_2 STAR) ~> LIST (SUB e t_1 t_2)* rule Step_exp/SUB-STR: - S |- SUB (STR (at `= e)*) (VAR x_1 a_1*) (VAR x_2 a_2*) ~> STR (at' `= SUB e t_1 t_2)* + S |- SUB (STR ef*) (VAR x_1 a_1*) (VAR x_2 a_2*) ~> STR (at `= SUB e t_1 t_2)* -- Expand_typ: S |- VAR x_1 a_1* => STRUCT tf_1* -- Expand_typ: S |- VAR x_2 a_2* => STRUCT tf_2* - -- (if (at' `: t_1 `- `{q_1*} pr_1*) <- tf_1*)* - -- (if (at' `: t_2 `- `{q_2*} pr_2*) = tf_2)* + -- (if (at `: t_2 `- `{q_2*} pr_2*) = tf_2)* + -- (if (at `: t_1 `- `{q_1*} pr_1*) <- tf_1*)* + -- (if (at `= e) <- ef*)* rule Step_exp/SUB-CASE: S |- SUB (INJ op e) (VAR x_1 a_1*) (VAR x_2 a_2*) ~> INJ op (SUB e t_1 t_2) From fb72c97138313e1d1bf39095351bbf63a458df2a Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Thu, 26 Feb 2026 09:44:59 +0100 Subject: [PATCH 066/235] [bikeshed] Attempt at fixing the Katex fixup --- document/core/util/mathjax2katex.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/document/core/util/mathjax2katex.py b/document/core/util/mathjax2katex.py index b840fced1..68e6d12bb 100755 --- a/document/core/util/mathjax2katex.py +++ b/document/core/util/mathjax2katex.py @@ -61,7 +61,7 @@ def HasBalancedTags(s): def ReplaceMath(cache, data): old = data - data = re.sub('[\\\\][\\\\]\\[([0-9]|-)', '\\\\DOUBLESLASH[\\1', data) # Messed up by Bikeshed + data = re.sub('[\\\\]\\[([0-9]|-)', '\\\\DOUBLESLASH[\\1', data) # Messed up by Bikeshed ("\\[" becomes "\[") data = data.replace('\\\\', '\\DOUBLESLASH') #data = data.replace('\\(', '') #data = data.replace('\\)', '') From 63201edd67269cc06103e0d978607a107d5e0ace Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Thu, 26 Feb 2026 10:12:51 +0100 Subject: [PATCH 067/235] [spec] Fix wrong parameter in definition of vextbinop operator --- document/core/exec/numerics.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/document/core/exec/numerics.rst b/document/core/exec/numerics.rst index ce0e42fc8..2af212963 100644 --- a/document/core/exec/numerics.rst +++ b/document/core/exec/numerics.rst @@ -2208,7 +2208,7 @@ The previous operators are lifted to operators on arguments of vector type by wr \land~i_2^\ast = \lanes_{\K{i}N_1\K{x}M_1}(c_2)[h \slice k] \\ \land~{i'_1}^\ast = \extend^{\sx}_{N_1, N_2}(i_1)^\ast \\ \land~{i'_2}^\ast = \extend^{\sx}_{N_1, N_2}(i_2)^\ast \\ - \land~j^\ast = f_{N_2}({i'_1}^\ast, {i'_1}^\ast) \\ + \land~j^\ast = f_{N_2}({i'_1}^\ast, {i'_2}^\ast) \\ \end{array} \end{array} From 52a209d803f86188590cd371515e5132d539b2d6 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Thu, 26 Feb 2026 11:22:56 +0100 Subject: [PATCH 068/235] [spectec] Fix resolution of argument syntax sugar in the case of forward uses --- spectec/doc/example/output/NanoWasm.pdf | Bin 245512 -> 245512 bytes spectec/src/el/convert.ml | 24 ++++++++++++++++++++++++ spectec/src/frontend/elab.ml | 4 ++++ 3 files changed, 28 insertions(+) diff --git a/spectec/doc/example/output/NanoWasm.pdf b/spectec/doc/example/output/NanoWasm.pdf index a720e239bac6443a8a4e1faaf73e3ed9df060098..112d69b01553b9acb6f0079b6c8752965912c0a5 100644 GIT binary patch delta 292 zcmeD9$Jg(zV~UEs~zt9YaLv#NlZZ`=LL*BCq{kA9kApYU|v zx;?ue<%t_Mscg9=aZ0;GLQ7hL+bC7TI^y^7fQ`St71Z!etod!*;ht?{%9mM$cG8XD6*WA6NNa--*+0-}`3=?`%1IG$|(}byL>CD;gm( zg`bwrTwRaqER?=e<-9@qxwpcZoo)9oUt{o;Jo?J8{=g~Q z*vj&wclDB3JTrO?r-Ta_hL{+OE${dY1f zeS7|21;^}7HibDFYcd~MoSY#XlGC-(vij-X{T!+iKljaMFTTtt-fg)0RElYnrgn%- z;V0GeSCm$~-~M^ylG()yE7c#qdieX%KL*ckpJUC|!tK_=j6lq^-CCIW`a*US14|Qg zBlGE!TbX5Gob5JSnG4yREzFG_EexF;U5pG}42_M=j7*$e+zd@DO-#(q4UL`5?G$VX MDcSyEH?ssY06;@@n*aa+ diff --git a/spectec/src/el/convert.ml b/spectec/src/el/convert.ml index 932d30353..908957890 100644 --- a/spectec/src/el/convert.ml +++ b/spectec/src/el/convert.ml @@ -73,6 +73,18 @@ let rec typ_of_exp e = | IterE (e1, iter) -> IterT (typ_of_exp e1, iter) | StrE efs -> StrT (NoDots, [], map_nl_list typfield_of_expfield efs, NoDots) | AtomE atom -> AtomT atom + | SeqE [{it = VarE (id, []); at = at1; _}; {it = ParenE e1; at = at2; _}] + when at1.right = at2.left -> (* HACK! *) + VarT (id, [ref (ExpA e1) $ e1.at]) + | SeqE [{it = VarE (id, []); at = at1; _}; {it = TupE es; at = at2; _}] + when at1.right = at2.left -> (* HACK! *) + VarT (id, List.map (fun ei -> ref (ExpA ei) $ ei.at) es) + | SeqE [{it = AtomE {it = Xl.Atom.Atom id; at; _}; at = at1; _}; {it = ParenE e1; at = at2; _}] + when at1.right = at2.left -> (* HACK! *) + VarT (id $ at, [ref (ExpA e1) $ e1.at]) + | SeqE [{it = AtomE {it = Xl.Atom.Atom id; at; _}; at = at1; _}; {it = TupE es; at = at2; _}] + when at1.right = at2.left -> (* HACK! *) + VarT (id $ at, List.map (fun ei -> ref (ExpA ei) $ ei.at) es) | SeqE es -> SeqT (List.map typ_of_exp es) | InfixE (e1, atom, e2) -> InfixT (typ_of_exp e1, atom, typ_of_exp e2) | BrackE (l, e1, r) -> BrackT (l, typ_of_exp e1, r) @@ -156,6 +168,18 @@ let rec sym_of_exp e = | NumE (op, `Nat n) -> NumG (op, n) | TextE s -> TextG s | EpsE -> EpsG + | SeqE [{it = VarE (id, []); at = at1; _}; {it = ParenE e1; at = at2; _}] + when at1.right = at2.left -> (* HACK! *) + VarG (id, [ref (ExpA e1) $ e1.at]) + | SeqE [{it = VarE (id, []); at = at1; _}; {it = TupE es; at = at2; _}] + when at1.right = at2.left -> (* HACK! *) + VarG (id, List.map (fun ei -> ref (ExpA ei) $ ei.at) es) + | SeqE [{it = AtomE {it = Xl.Atom.Atom id; at; _}; at = at1; _}; {it = ParenE e1; at = at2; _}] + when at1.right = at2.left -> (* HACK! *) + VarG (id $ at, [ref (ExpA e1) $ e1.at]) + | SeqE [{it = AtomE {it = Xl.Atom.Atom id; at; _}; at = at1; _}; {it = TupE es; at = at2; _}] + when at1.right = at2.left -> (* HACK! *) + VarG (id $ at, List.map (fun ei -> ref (ExpA ei) $ ei.at) es) | SeqE es -> SeqG (List.map (fun e -> Elem (sym_of_exp e)) es) | ParenE e1 -> ParenG (sym_of_exp e1) | TupE es -> TupG (List.map sym_of_exp es) diff --git a/spectec/src/frontend/elab.ml b/spectec/src/frontend/elab.ml index 0292d12d3..d252f7604 100644 --- a/spectec/src/frontend/elab.ml +++ b/spectec/src/frontend/elab.ml @@ -2222,6 +2222,10 @@ and elab_arg in_lhs env (a : arg) (p : Il.param) s : Il.arg list * Il.Subst.subs | ExpA {it = CallE (id, []); _}, Il.DefP _ -> a.it := DefA id | _, _ -> () ); + Debug.(log_at "el.elab_arg" a.at + (fun _ -> fmt "%s : %s" (el_arg a) (il_param p)) + (fun (as', _) -> fmt "%s" (list il_arg as')) + ) @@ fun _ -> match !(a.it), (Il.Subst.subst_param s p).it with | ExpA e, Il.ExpP (x, t) -> let e' = checkpoint (elab_exp env e t) in From 9c4b2cb3a944b25bfad6d3bddebfaca162e927d0 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Thu, 26 Feb 2026 11:55:49 +0100 Subject: [PATCH 069/235] [ci] Update and narrow triggers --- .github/workflows/ci-spec.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci-spec.yml b/.github/workflows/ci-spec.yml index 9d73c7936..53a50ef56 100644 --- a/.github/workflows/ci-spec.yml +++ b/.github/workflows/ci-spec.yml @@ -2,12 +2,12 @@ name: CI for specs on: push: - branches: [ main, wasm-3.0 ] - paths: [ .github/**, document/**, spectec/**, specification/** ] + branches: [ main ] + paths: [ .github/**, document/**, spectec/src/**, specification/** ] pull_request: - branches: [ main, wasm-3.0 ] - paths: [ .github/**, document/**, spectec/**, specification/** ] + branches: [ main ] + paths: [ .github/**, document/**, spectec/src/**, specification/** ] # Allows you to run this workflow manually from the Actions tab workflow_dispatch: From fc696cd56727c12945464beea3e21b1f480b40b4 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Thu, 26 Feb 2026 12:02:54 +0100 Subject: [PATCH 070/235] [spec] Add a sync script for wasm-latest --- specification/Makefile | 8 +++- specification/diff-wasm-latest.sh | 11 +++--- specification/sync-wasm-latest.sh | 64 +++++++++++++++++++++++++++++++ 3 files changed, 77 insertions(+), 6 deletions(-) create mode 100644 specification/sync-wasm-latest.sh diff --git a/specification/Makefile b/specification/Makefile index 917d2c966..4bb8d9325 100644 --- a/specification/Makefile +++ b/specification/Makefile @@ -37,7 +37,13 @@ check-all: check-1.0 check-2.0 check-3.0 check-latest @echo All Wasm specs checked OK. check-diff: - ./diff-wasm-latest.sh + bash ./diff-wasm-latest.sh + + +# Sync + +sync-diff: + bash ./sync-wasm-latest.sh # Build diff --git a/specification/diff-wasm-latest.sh b/specification/diff-wasm-latest.sh index b2672473d..2139805a2 100755 --- a/specification/diff-wasm-latest.sh +++ b/specification/diff-wasm-latest.sh @@ -1,9 +1,10 @@ #!/bin/bash # Identify the highest versioned directory -HIGHEST_VER=$(ls -d wasm-[0-9]* 2>/dev/null | sort -V | tail -n 1) +HIGHEST=$(ls -d wasm-[0-9]* 2>/dev/null | sort -V | tail -n 1) -if [ -z "$HIGHEST_VER" ]; then +# Check that a highest version exists +if [ -z "$HIGHEST" ]; then echo "❌ Error: No wasm-X.Y versioned directories found in specification/" exit 1 fi @@ -17,14 +18,14 @@ if [ ! -d "$LATEST" ]; then fi # Diff the highest version with wasm-latest and check that the diff is empty -echo "Checking for differences between $HIGHEST_VER and $LATEST..." +echo "Checking for differences between $HIGHEST and $LATEST..." -if diff -qr "$HIGHEST_VER" "$LATEST" > /dev/null; then +if diff -qr "$HIGHEST" "$LATEST" > /dev/null; then echo "✅ Success: Contents match. No changes needed." else echo "🔍 Differences detected:" echo "--------------------------------" - diff -U0 -r "$HIGHEST_VER" "$LATEST" + diff -U0 -r "$HIGHEST" "$LATEST" echo "--------------------------------" exit 1 fi diff --git a/specification/sync-wasm-latest.sh b/specification/sync-wasm-latest.sh new file mode 100644 index 000000000..c7b5d4e4d --- /dev/null +++ b/specification/sync-wasm-latest.sh @@ -0,0 +1,64 @@ +#!/bin/bash + +# Identify the highest versioned directory +HIGHEST=$(ls -d wasm-[0-9]* 2>/dev/null | sort -V | tail -n 1) + +# Check that highest exists +if [ -z "$HIGHEST" ]; then + echo "❌ Error: No wasm-X.Y versioned directories found in specification/" + exit 1 +fi + +LATEST="wasm-latest" + +# Check that wasm-latest exists +if [ ! -d "$LATEST" ]; then + echo "❌ Error: $LATEST does not exist." + exit 1 +fi + +# Sync the highest version with wasm-latest, depending on which is newer +echo "Synchronizing $HIGHEST with $LATEST..." + +HIGHEST_FILES=$(cd $HIGHEST && ls *.spectec) +LATEST_FILES=$(cd $LATEST && ls *.spectec) + +LATEST_CHANGED=0 +HIGHEST_CHANGED=0 + +for FILE in $HIGHEST_FILES; do + if [ ! -f "$LATEST/$FILE" ]; then + echo "Added file $HIGHEST/$FILE" + ((++HIGHEST_CHANGED)) + elif [ "$HIGHEST/$FILE" -nt "$LATEST/$FILE" ] && ! diff -q "$HIGHEST/$FILE" "$LATEST/$FILE" >/dev/null; then + echo "Modified file $HIGHEST/$FILE" + ((++HIGHEST_CHANGED)) + fi +done + +for FILE in $LATEST_FILES; do + if [ ! -f "$HIGHEST/$FILE" ]; then + echo "Added file $LATEST/$FILE" + ((++LATEST_CHANGED)) + elif [ "$LATEST/$FILE" -nt "$HIGHEST/$FILE" ] && ! diff -q "$HIGHEST/$FILE" "$LATEST/$FILE" >/dev/null; then + echo "Modified file $LATEST/$FILE" + ((++LATEST_CHANGED)) + fi +done + +if [ $LATEST_CHANGED -gt 0 ] && [ $HIGHEST_CHANGED -gt 0 ]; then + echo "❌ Error: Changes in both $HIGHEST and $LATEST." + exit 1 +fi + +for FILE in $HIGHEST_FILES; do + if [ ! -f "$LATEST/$FILE" ] || ([ "$HIGHEST/$FILE" -nt "$LATEST/$FILE" ] && ! diff -q "$HIGHEST/$FILE" "$LATEST/$FILE" >/dev/null); then + cp "$HIGHEST/$FILE" "$LATEST/$FILE" + fi +done + +for FILE in $LATEST_FILES; do + if [ ! -f "$HIGHEST/$FILE" ] || ([ "$LATEST/$FILE" -nt "$HIGHEST/$FILE" ] && ! diff -q "$HIGHEST/$FILE" "$LATEST/$FILE" >/dev/null); then + cp "$LATEST/$FILE" "$HIGHEST/$FILE" + fi +done From d2cb595c7b02e3ab0703eed3934fe57f95d78ddd Mon Sep 17 00:00:00 2001 From: Ben Visness Date: Thu, 26 Feb 2026 10:57:44 -0600 Subject: [PATCH 071/235] [spec] Fix use of elemexpr in text format (#2095) --- specification/wasm-3.0/6.4-text.modules.spectec | 2 +- specification/wasm-latest/6.4-text.modules.spectec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/specification/wasm-3.0/6.4-text.modules.spectec b/specification/wasm-3.0/6.4-text.modules.spectec index 231685cf6..ae762152d 100644 --- a/specification/wasm-3.0/6.4-text.modules.spectec +++ b/specification/wasm-3.0/6.4-text.modules.spectec @@ -101,7 +101,7 @@ grammar Telem_(I)/abbrev : (elem, idctxt) = ... "(" "elem" Toffset_(I) "func" Tlist(Tfuncidx_(I)) ")" grammar Telemlist_(I)/plain : (reftype, expr*) = - | rt:Treftype_(I) e*:Tlist(Texpr_(I)) => (rt, e*) + | rt:Treftype_(I) e*:Tlist(Telemexpr_(I)) => (rt, e*) | ... grammar Telemlist_(I)/abbrev : (reftype, expr*) = diff --git a/specification/wasm-latest/6.4-text.modules.spectec b/specification/wasm-latest/6.4-text.modules.spectec index 231685cf6..ae762152d 100644 --- a/specification/wasm-latest/6.4-text.modules.spectec +++ b/specification/wasm-latest/6.4-text.modules.spectec @@ -101,7 +101,7 @@ grammar Telem_(I)/abbrev : (elem, idctxt) = ... "(" "elem" Toffset_(I) "func" Tlist(Tfuncidx_(I)) ")" grammar Telemlist_(I)/plain : (reftype, expr*) = - | rt:Treftype_(I) e*:Tlist(Texpr_(I)) => (rt, e*) + | rt:Treftype_(I) e*:Tlist(Telemexpr_(I)) => (rt, e*) | ... grammar Telemlist_(I)/abbrev : (reftype, expr*) = From f2fce28c8901aeaba05a782512ad26cc659dcd48 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Fri, 27 Feb 2026 12:52:01 +0100 Subject: [PATCH 072/235] [ci] Update test expects --- spectec/doc/example/output/NanoWasm.pdf | Bin 245512 -> 245508 bytes spectec/test-frontend/TEST.md | 12 ++++---- spectec/test-latex/TEST.md | 2 +- spectec/test-middlend/TEST.md | 36 ++++++++++++------------ 4 files changed, 25 insertions(+), 25 deletions(-) diff --git a/spectec/doc/example/output/NanoWasm.pdf b/spectec/doc/example/output/NanoWasm.pdf index 112d69b01553b9acb6f0079b6c8752965912c0a5..f1d2ac4d7e22b2d467a58413d60916e90293892d 100644 GIT binary patch delta 1026 zcmeD9$Jg?YZ-bc-qrv0@%$k!EgoK!HzKNM!Dx_WSJHut6^qnf_4bsoO70&EzyMOr_ zgQw)tSBCWmPT9s*mLI*Vm&D?k(Q7y*T);5I%s?z<)xtLkZ{?kjzPf$*qovEIx8DV{ zHXd7V_dD;ulVR!G^ZzP1W^b}7%+Xkr`N-nr4B?QRu8o$}PxtQUP?h+(Z#H}JWj^t4 z!_}u!Oq(>dL!=8osh+>0wBr5t&l_)?wVZHea>3URwT1Pb-+fLtTMM^a3o`;S({^iN z=IaaD%?*uA4UH|QOKxSBfpNCmY-KKF3p6vbaB?$tayGX#ax`@^ay4^tbu%|JG&V4I zG;nk>bFx#gA*dvlOW!9oFTEr~!OYSW6jJr7Q@rzi10~w_zkhRYb(C)I#nUhUu6q?$ zs_7oRH$FD%%PME#dIugK-=hqIhM!cOlzdc~%I~|cM^&%g zJb&}qGyir)?o2%+RQ&qaT9f&P`j$RL6Bt*Qw0m%#V9qXK_x!nlVa?^MleioOZ!B1? zDB3Kvq24pxSBtg!fY@EeAjuoEl|H@rRvgKv_2SdZRXgsmYrW)p;nA6ApzQU+#HIVw z7LBFJQ(dH!mIt~me_ATxCn;L;M&TlVp!;=)|B<>jpxC2Q0!_*{2g zK6!gX*seOOzbd&4WJ`9auD=u>XfSEfkHD@?>#HYc~CyM9(RYex3z1lA2+hqhdpaQnfm=x_h`JGDo$p4RF5voLtm-3gCx z=jG~4%5 zhsUzBv$0C?tAL(?PKtz=EBgeKy9%ko$K!h&MMo#f3eBqe_I?fuhqJ%9h>v}UE8HS>6`9P5wj^?AD(&9*xpY| zx6hJBBSNwL`Cf=kJ!2YUnpJ1;7_pF9}g1QStUwpp6XXT)N;rYVb hlgs5VJ+(h~%l>))G=u5)_c1GSm~*MBy863u0RUC5#ykK3 delta 1030 zcmZqq$Jgl0*%c~EKSYL%uNl9j0~Kd%#6&;Eu9Trjhzh) z&COiRT9P zAW%>sg`HI}=0-I4|Avhlx0o7U%t*@l!R4IP)7rY#`w#0Y`3uL69h&jNCjax3x#j09 zi_gt{-Z%56z4_`5J&{RyZ|kQ#GkUg^-ILGgfmy7qCL?P?>pO;(0wRr}yP|>&Pc)hC zk_zIi*I<2Ja&?K(2JV~-Z`G$Z-_=~ykS9M~bit%`6V`Q|woTBF6_nMy$eZS(Ikzn% zaGqFd$(l(S&TmXkz1*^g@37|LNqw>^zZCf{nqJ7v{<@%XU8mpfd=|@HHgo$*B}^`E zz5MdY*#)iZX8YND%E>UU%{y84ORGz7sYd0LMSr^Eymr^$zBeaGx_JAH)!Q#{THRTd zRdNKQ^AJ5BzD({)`0( zk0?3JM~4qsS@>8%@X`?hi8ATxrR~e7-B}wXRakvvy~(R>e (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-latest/6.4-text.modules.spectec +grammar Telemexpr_(I : I) : expr + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{e : expr} {{"("} {"item"} {e:Texpr_(I)} {")"}} => e + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Telemlist_(I : I) : (reftype, expr*) ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{rt : reftype, `e*` : expr*} {{rt:Treftype_(I)} {e*{e <- `e*`}:Tlist(syntax expr, grammar Texpr_(I))}} => (rt, e*{e <- `e*`}) + prod{rt : reftype, `e*` : expr*} {{rt:Treftype_(I)} {e*{e <- `e*`}:Tlist(syntax expr, grammar Telemexpr_(I))}} => (rt, e*{e <- `e*`}) ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Ttableuse_(I : I) : tableidx @@ -11215,11 +11220,6 @@ grammar Telem_(I : I) : (elem, idctxt) ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"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-latest/6.4-text.modules.spectec -grammar Telemexpr_(I : I) : expr - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{e : expr} {{"("} {"item"} {e:Texpr_(I)} {")"}} => e - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tstart_(I : I) : (start, idctxt) ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec diff --git a/spectec/test-latex/TEST.md b/spectec/test-latex/TEST.md index 4a45e4ccf..fcb398197 100644 --- a/spectec/test-latex/TEST.md +++ b/spectec/test-latex/TEST.md @@ -13599,7 +13599,7 @@ $$ \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{elem}’}~~{{\mathtt{offset}}}_{I}~~\mbox{‘\texttt{func}’}~~{\mathtt{list}}({{\mathtt{funcidx}}}_{I})~~\mbox{‘\texttt{{)}}’} \\ \end{array} } \\ -& {{\mathtt{elemlist}}}_{I} & ::= & {\mathit{rt}}{:}{{\mathtt{reftype}}}_{I}~~{e^\ast}{:}{\mathtt{list}}({{\mathtt{expr}}}_{I}) & \quad\Rightarrow\quad{} & ({\mathit{rt}}, {e^\ast}) \\ +& {{\mathtt{elemlist}}}_{I} & ::= & {\mathit{rt}}{:}{{\mathtt{reftype}}}_{I}~~{e^\ast}{:}{\mathtt{list}}({{\mathtt{elemexpr}}}_{I}) & \quad\Rightarrow\quad{} & ({\mathit{rt}}, {e^\ast}) \\ & & | & \mbox{‘\texttt{func}’}~~{x^\ast}{:}{{{\mathtt{funcidx}}}_{I}^\ast} & \quad\equiv\quad{} & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{ref}’}~~\mbox{‘\texttt{func}’}~~\mbox{‘\texttt{{)}}’}~~{(\mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{ref.func}’}~~{{\mathtt{funcidx}}}_{I}~~\mbox{‘\texttt{{)}}’})^\ast} \\ & {{\mathtt{elemexpr}}}_{I} & ::= & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{item}’}~~e{:}{{\mathtt{expr}}}_{I}~~\mbox{‘\texttt{{)}}’} & \quad\Rightarrow\quad{} & e \\ & & | & {{\mathtt{foldedinstr}}}_{I} & \quad\equiv\quad{} & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{item}’}~~{{\mathtt{foldedinstr}}}_{I}~~\mbox{‘\texttt{{)}}’} \\ diff --git a/spectec/test-middlend/TEST.md b/spectec/test-middlend/TEST.md index ce7873e55..ea175a04d 100644 --- a/spectec/test-middlend/TEST.md +++ b/spectec/test-middlend/TEST.md @@ -11186,10 +11186,15 @@ grammar Tdata_(I : I) : (data, idctxt) ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`b*` : byte*, x : idx, e : expr, `id?` : char?} {{"("} {"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-latest/6.4-text.modules.spectec +grammar Telemexpr_(I : I) : expr + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{e : expr} {{"("} {"item"} {e:Texpr_(I)} {")"}} => e + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Telemlist_(I : I) : (reftype, expr*) ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{rt : reftype, `e*` : expr*} {{rt:Treftype_(I)} {e*{e <- `e*`}:Tlist(syntax expr, grammar Texpr_(I))}} => (rt, e*{e <- `e*`}) + prod{rt : reftype, `e*` : expr*} {{rt:Treftype_(I)} {e*{e <- `e*`}:Tlist(syntax expr, grammar Telemexpr_(I))}} => (rt, e*{e <- `e*`}) ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Ttableuse_(I : I) : tableidx @@ -11205,11 +11210,6 @@ grammar Telem_(I : I) : (elem, idctxt) ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"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-latest/6.4-text.modules.spectec -grammar Telemexpr_(I : I) : expr - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{e : expr} {{"("} {"item"} {e:Texpr_(I)} {")"}} => e - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tstart_(I : I) : (start, idctxt) ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec @@ -22578,10 +22578,15 @@ grammar Tdata_(I : I) : (data, idctxt) ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`b*` : byte*, x : idx, e : expr, `id?` : char?} {{"("} {"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-latest/6.4-text.modules.spectec +grammar Telemexpr_(I : I) : expr + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{e : expr} {{"("} {"item"} {e:Texpr_(I)} {")"}} => e + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Telemlist_(I : I) : (reftype, expr*) ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{rt : reftype, `e*` : expr*} {{rt:Treftype_(I)} {e*{e <- `e*`}:Tlist(syntax expr, grammar Texpr_(I))}} => (rt, e*{e <- `e*`}) + prod{rt : reftype, `e*` : expr*} {{rt:Treftype_(I)} {e*{e <- `e*`}:Tlist(syntax expr, grammar Telemexpr_(I))}} => (rt, e*{e <- `e*`}) ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Ttableuse_(I : I) : tableidx @@ -22597,11 +22602,6 @@ grammar Telem_(I : I) : (elem, idctxt) ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"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-latest/6.4-text.modules.spectec -grammar Telemexpr_(I : I) : expr - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{e : expr} {{"("} {"item"} {e:Texpr_(I)} {")"}} => e - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tstart_(I : I) : (start, idctxt) ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec @@ -34150,10 +34150,15 @@ grammar Tdata_(I : I) : (data, idctxt) ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`b*` : byte*, x : idx, e : expr, `id?` : char?} {{"("} {"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-latest/6.4-text.modules.spectec +grammar Telemexpr_(I : I) : expr + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec + prod{e : expr} {{"("} {"item"} {e:Texpr_(I)} {")"}} => e + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Telemlist_(I : I) : (reftype, expr*) ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{rt : reftype, `e*` : expr*} {{rt:Treftype_(I)} {e*{e <- `e*`}:Tlist(syntax expr, grammar Texpr_(I))}} => (rt, e*{e <- `e*`}) + prod{rt : reftype, `e*` : expr*} {{rt:Treftype_(I)} {e*{e <- `e*`}:Tlist(syntax expr, grammar Telemexpr_(I))}} => (rt, e*{e <- `e*`}) ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Ttableuse_(I : I) : tableidx @@ -34169,11 +34174,6 @@ grammar Telem_(I : I) : (elem, idctxt) ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"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-latest/6.4-text.modules.spectec -grammar Telemexpr_(I : I) : expr - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec - prod{e : expr} {{"("} {"item"} {e:Texpr_(I)} {")"}} => e - ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tstart_(I : I) : (start, idctxt) ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec From c5a8cab17cd55dfe32a08bc92f72acd3e284d6d6 Mon Sep 17 00:00:00 2001 From: Sukyoung Ryu Date: Sun, 1 Mar 2026 16:21:23 +0900 Subject: [PATCH 073/235] [spectec] Fix typos in IL semantics (#2091) --- spectec/doc/semantics/il/4-subst.spectec | 18 ++---------------- spectec/doc/semantics/il/5-reduction.spectec | 12 ++++++------ 2 files changed, 8 insertions(+), 22 deletions(-) diff --git a/spectec/doc/semantics/il/4-subst.spectec b/spectec/doc/semantics/il/4-subst.spectec index 30f7441ad..ee2828de1 100644 --- a/spectec/doc/semantics/il/4-subst.spectec +++ b/spectec/doc/semantics/il/4-subst.spectec @@ -57,8 +57,8 @@ def $subst_typ(s, ITER t it) = ITER $subst_typ(s, t) $subst_iter(s, it) def $subst_deftyp(subst, deftyp) : deftyp def $subst_deftyp(s, ALIAS t) = ALIAS $subst_typ(s, t) -def $subst_deftyp(s, STRUCT (a `: t `- `{q*} pr*)*) = STRUCT (a `: $subst_typ(s, t) `- `{$subst_quant(s, b)*} $subst_prem(s, pr)*)* ;; TODO: avoid capture -def $subst_deftyp(s, VARIANT (m `: t `- `{q*} pr*)*) = VARIANT (m `: $subst_typ(s, t) `- `{$subst_quant(s, b)*} $subst_prem(s, pr)*)* ;; TODO: avoid capture +def $subst_deftyp(s, STRUCT (a `: t `- `{q*} pr*)*) = STRUCT (a `: $subst_typ(s, t) `- `{$subst_quant(s, q)*} $subst_prem(s, pr)*)* ;; TODO: avoid capture +def $subst_deftyp(s, VARIANT (m `: t `- `{q*} pr*)*) = VARIANT (m `: $subst_typ(s, t) `- `{$subst_quant(s, q)*} $subst_prem(s, pr)*)* ;; TODO: avoid capture ;; Iterators @@ -149,20 +149,6 @@ def $subst_prem(s, LET e_1 `= e_2) = LET $subst_exp(s, e_1) `= $subst_exp(s, e_2 def $subst_prem(s, ITER pr it (x `<- e)*) = ITER $subst_prem(s, pr) $subst_iter(s, it) (x `<- $subst_exp(s, e))* ;; TODO: avoid capture -;; Constructing substitutions for parameters - -def $arg_for_param(arg, param) : subst -def $arg_for_param(EXP e, EXP x `: t) = {EXP (x, e)} -def $arg_for_param(TYP t, TYP x) = {TYP (x, t)} -def $arg_for_param(FUN y, FUN x `: p* `-> t) = {FUN (x, y)} -def $arg_for_param(GRAM g, GRAM x `: p* `-> t) = {GRAM (x, g)} - -def $args_for_params(arg*, param*) : subst -def $args_for_params(eps, eps) = {} -def $args_for_params(a_1 a*, p_1 p*) = s ++ $args_for_params(a*, $subst_param(s, p)*) - -- if s = $arg_for_param(a_1, p_1) - - ;; Well-formedness def $paramarg(param) : arg diff --git a/spectec/doc/semantics/il/5-reduction.spectec b/spectec/doc/semantics/il/5-reduction.spectec index 1e2fc7070..6a18b8e88 100644 --- a/spectec/doc/semantics/il/5-reduction.spectec +++ b/spectec/doc/semantics/il/5-reduction.spectec @@ -17,7 +17,7 @@ rule Expand_typ/alias: rule Expand_typ/step: S |- VAR x a* => $subst_deftyp(s, dt) - -- if (x, p* `-> OK `= inst*) <- E.TYP + -- if (x, p* `-> OK `= inst*) <- S.TYP -- if (INST `{q*} a* `= dt) <- inst* -- Match_args: S |- a* `/ `{q*} a'* => s @@ -123,11 +123,11 @@ rule Step_exp/CMP-EQ-true: rule Step_exp/CMP-EQ-false: S |- CMP EQ val_1 val_2 ~> BOOL false - -- if val_1 =/= val_2 + -- if val_1 = val_2 rule Step_exp/CMP-NE-false: S |- CMP NE e_1 e_2 ~> BOOL false - -- if e_1 = e_2 + -- if e_1 =/= e_2 rule Step_exp/CMP-NE-true: S |- CMP NE val_1 val_2 ~> BOOL true @@ -338,7 +338,7 @@ rule Step_exp/ITER-STAR: -- if |e'**[0]| = n rule Step_exp/ITER-SUP-eps: - S |- ITER e (SUP eps e_n) (x `<- LIST e'*)* ~> ITER e (SUP y n) (x `<- LIST e'*)* + S |- ITER e (SUP eps e_n) (x `<- LIST e'*)* ~> ITER e (SUP y e_n) (x `<- LIST e'*)* ;; TODO: y fresh rule Step_exp/ITER-SUP: @@ -352,7 +352,7 @@ rule Step_exp/CALL-ctx: rule Step_exp/CALL-apply: S |- CALL x a* ~> $subst_exp(s, e) - -- if (x, p* `-> t `= clause*) <- E.FUN + -- if (x, p* `-> t `= clause*) <- S.FUN -- if (CLAUSE `{q*} a'* `= e `- pr*) <- clause* -- Match_args: S |- a* `/ `{q*} a'* => s -- Reduce_prems: S |- $subst_prem(s, pr)* ~>* eps @@ -519,7 +519,7 @@ rule Step_prems/ITER-STAR: -- if |e**[0]| = n rule Step_prems/ITER-SUP-eps: - S |- ITER pr (SUP eps e_n) (x `<- LIST e*)* ~> ITER pr (SUP y n) (x `<- LIST e*)* + S |- ITER pr (SUP eps e_n) (x `<- LIST e*)* ~> ITER pr (SUP y e_n) (x `<- LIST e*)* ;; TODO: y fresh rule Step_prems/ITER-SUP: From b228d7ca67073a3d6c64ac9553749ba0e13d3fb9 Mon Sep 17 00:00:00 2001 From: Thomas Lively Date: Sat, 28 Feb 2026 23:24:20 -0800 Subject: [PATCH 074/235] [test] Improve array.init_elem tests (#2097) Test the identities of the initialized elements. This would have caught a bug in the binaryen interpreter where the first element of the range was copied `n` times. Also add a test that initializing from the same element segment multiple times writes the same references each time (rather than re-evaluating the initializer expressions, for example). This catches another bug in the binaryen interpreter. See https://github.com/WebAssembly/binaryen/pull/8349. --- test/core/gc/array_init_elem.wast | 75 +++++++++++++++++++++++++------ 1 file changed, 62 insertions(+), 13 deletions(-) diff --git a/test/core/gc/array_init_elem.wast b/test/core/gc/array_init_elem.wast index fd028bbf5..ff601c8ae 100644 --- a/test/core/gc/array_init_elem.wast +++ b/test/core/gc/array_init_elem.wast @@ -42,23 +42,30 @@ ) (module - (type $t_f (func)) - (type $arrref (array (ref $t_f))) (type $arrref_mut (array (mut funcref))) - (global $g_arrref (ref $arrref) (array.new $arrref (ref.func $dummy) (i32.const 12))) (global $g_arrref_mut (ref $arrref_mut) (array.new_default $arrref_mut (i32.const 12))) (table $t 1 funcref) - (elem $e1 func $dummy $dummy $dummy $dummy $dummy $dummy $dummy $dummy $dummy $dummy $dummy $dummy) - - (func $dummy - ) - - (func (export "array_call_nth") (param $1 i32) - (table.set $t (i32.const 0) (array.get $arrref_mut (global.get $g_arrref_mut) (local.get $1))) - (call_indirect $t (i32.const 0)) + (elem $e1 func $zero $one $two $three $four $five $six $seven $eight $nine $ten $eleven) + + (func $zero (result i32) (i32.const 0)) + (func $one (result i32) (i32.const 1)) + (func $two (result i32) (i32.const 2)) + (func $three (result i32) (i32.const 3)) + (func $four (result i32) (i32.const 4)) + (func $five (result i32) (i32.const 5)) + (func $six (result i32) (i32.const 6)) + (func $seven (result i32) (i32.const 7)) + (func $eight (result i32) (i32.const 8)) + (func $nine (result i32) (i32.const 9)) + (func $ten (result i32) (i32.const 10)) + (func $eleven (result i32) (i32.const 11)) + + (func (export "array_call_nth") (param $n i32) (result i32) + (table.set $t (i32.const 0) (array.get $arrref_mut (global.get $g_arrref_mut) (local.get $n))) + (call_indirect $t (result i32) (i32.const 0)) ) (func (export "array_init_elem-null") @@ -98,11 +105,53 @@ ;; normal cases (assert_return (invoke "array_init_elem" (i32.const 2) (i32.const 3) (i32.const 2))) (assert_trap (invoke "array_call_nth" (i32.const 1)) "uninitialized element") -(assert_return (invoke "array_call_nth" (i32.const 2))) -(assert_return (invoke "array_call_nth" (i32.const 3))) +(assert_return (invoke "array_call_nth" (i32.const 2)) (i32.const 3)) +(assert_return (invoke "array_call_nth" (i32.const 3)) (i32.const 4)) (assert_trap (invoke "array_call_nth" (i32.const 4)) "uninitialized element") ;; init_data/elem with dropped segments traps for non-zero length (assert_return (invoke "drop_segs")) (assert_return (invoke "array_init_elem" (i32.const 0) (i32.const 0) (i32.const 0))) (assert_trap (invoke "array_init_elem" (i32.const 0) (i32.const 0) (i32.const 1)) "out of bounds table access") + +(module + (type $arrref_mut (array (mut arrayref))) + + (global $g_arrref_mut (ref $arrref_mut) (array.new_default $arrref_mut (i32.const 2))) + + (elem $e1 arrayref + (item (array.new_default $arrref_mut (i32.const 1))) + (item (array.new_default $arrref_mut (i32.const 2))) + ) + + (func (export "array_init_elem") (param $1 i32) (param $2 i32) (param $3 i32) + (array.init_elem $arrref_mut $e1 (global.get $g_arrref_mut) (local.get $1) (local.get $2) (local.get $3)) + ) + + (func (export "array_len_nth") (param $n i32) (result i32) + (array.len (array.get $arrref_mut (global.get $g_arrref_mut) (local.get $n))) + ) + + (func (export "array_eq_elems") (param $i i32) (param $j i32) (result i32) + (ref.eq + (array.get $arrref_mut (global.get $g_arrref_mut) (local.get $i)) + (array.get $arrref_mut (global.get $g_arrref_mut) (local.get $j)) + ) + ) +) + +;; Array starts uninitialized +(assert_trap (invoke "array_len_nth" (i32.const 0)) "null array reference") +(assert_trap (invoke "array_len_nth" (i32.const 1)) "null array reference") + +;; Initialize the array +(assert_return (invoke "array_init_elem" (i32.const 0) (i32.const 0) (i32.const 2))) +(assert_return (invoke "array_len_nth" (i32.const 0)) (i32.const 1)) +(assert_return (invoke "array_len_nth" (i32.const 1)) (i32.const 2)) +(assert_return (invoke "array_eq_elems" (i32.const 0) (i32.const 1)) (i32.const 0)) + +;; Copy the first element at the second index and check that they are equal. +(assert_return (invoke "array_init_elem" (i32.const 1) (i32.const 0) (i32.const 1))) +(assert_return (invoke "array_len_nth" (i32.const 0)) (i32.const 1)) +(assert_return (invoke "array_len_nth" (i32.const 1)) (i32.const 1)) +(assert_return (invoke "array_eq_elems" (i32.const 0) (i32.const 1)) (i32.const 1)) From 13734f8fb871a5dab939070f893adbd90bffe28c Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Sun, 1 Mar 2026 08:25:34 +0100 Subject: [PATCH 075/235] [test] Check that try_table acts like a block (#2098) --- test/core/exceptions/try_table.wast | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/test/core/exceptions/try_table.wast b/test/core/exceptions/try_table.wast index cb1ab311d..f402ffb4a 100644 --- a/test/core/exceptions/try_table.wast +++ b/test/core/exceptions/try_table.wast @@ -493,3 +493,31 @@ ) "type mismatch" ) + +;; try_table acts a regular block for br, etc. + +(module + (func (export "as-br-target") (result i32) + (block + (try_table + (br 0) + (unreachable) + ) + (return (i32.const 111)) + ) + (i32.const 222) + ) + + (func (export "as-value-provider") (result i32) + (block + (try_table (result i32) + (br 0 (i32.const 333)) + ) + (return) + ) + (unreachable) + ) +) + +(assert_return (invoke "as-br-target") (i32.const 111)) +(assert_return (invoke "as-value-provider") (i32.const 333)) From 0a278c75b1d7ec4895a03d09eec550c0981991ef Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Tue, 3 Mar 2026 20:31:14 +0100 Subject: [PATCH 076/235] [interpreter] make target for installing dependencies --- interpreter/Makefile | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/interpreter/Makefile b/interpreter/Makefile index de0f99cf1..455eb5230 100644 --- a/interpreter/Makefile +++ b/interpreter/Makefile @@ -14,6 +14,9 @@ LIB = $(NAME) JSLIB = wast.js ZIP = $(NAME).zip +DEPS = dune menhir +JSDEPS = ocamlfind js_of_ocaml js_of_ocaml-ppx + BUILDDIR = _build/default JS = # set to JS shell command to run JS tests, empty to skip @@ -26,6 +29,7 @@ JS = # set to JS shell command to run JS tests, empty to skip default: $(NAME) all: default alltest alltest: unittest partest custompartest +alldeps: $(NAME)-deps $(JSLIB)-deps ci: all jslib zip jslib: $(JSLIB) @@ -36,11 +40,17 @@ zip: $(ZIP) .PHONY: $(NAME) $(JSLIB) +$(NAME)-deps: + opam install --yes $(DEPS) + $(NAME): rm -f $@ dune build $@.exe ln $(BUILDDIR)/$@.exe $@ +$(JSLIB)-deps: $(NAME)-deps + opam install --yes $(JSDEPS) + $(JSLIB): rm -f $@ dune build $(@:%.js=%.bc.js) From 6460cf1248c4918e152b4302be066d2c84fdb5c8 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Tue, 3 Mar 2026 20:33:10 +0100 Subject: [PATCH 077/235] ci] Use Makefile for dependencies --- .github/workflows/ci-interpreter.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/ci-interpreter.yml b/.github/workflows/ci-interpreter.yml index 0ee0ae377..5589facba 100644 --- a/.github/workflows/ci-interpreter.yml +++ b/.github/workflows/ci-interpreter.yml @@ -22,10 +22,8 @@ jobs: uses: ocaml/setup-ocaml@v3 with: ocaml-compiler: 5.04.x - - name: Setup OCaml tools - run: opam install --yes ocamlfind js_of_ocaml js_of_ocaml-ppx - name: Build interpreter - run: cd interpreter && opam exec make + run: cd interpreter && opam exec make wasm-deps wasm # Neither V8 nor SpiderMonkey can currently handle all 3.0 tests, so we disable checking JS translation for now. #- name: Setup Node.js # uses: actions/setup-node@v4 From c07e5c9a80fb2ee593648c5957ccd2f0ad6f40fc Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Tue, 3 Mar 2026 20:39:13 +0100 Subject: [PATCH 078/235] [ci] Fix --- .github/workflows/ci-interpreter.yml | 2 +- interpreter/Makefile | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci-interpreter.yml b/.github/workflows/ci-interpreter.yml index 5589facba..f7690320c 100644 --- a/.github/workflows/ci-interpreter.yml +++ b/.github/workflows/ci-interpreter.yml @@ -23,7 +23,7 @@ jobs: with: ocaml-compiler: 5.04.x - name: Build interpreter - run: cd interpreter && opam exec make wasm-deps wasm + run: cd interpreter && opam exec make jsdeps wasm # Neither V8 nor SpiderMonkey can currently handle all 3.0 tests, so we disable checking JS translation for now. #- name: Setup Node.js # uses: actions/setup-node@v4 diff --git a/interpreter/Makefile b/interpreter/Makefile index 455eb5230..2257d20c9 100644 --- a/interpreter/Makefile +++ b/interpreter/Makefile @@ -40,7 +40,7 @@ zip: $(ZIP) .PHONY: $(NAME) $(JSLIB) -$(NAME)-deps: +deps: opam install --yes $(DEPS) $(NAME): @@ -48,7 +48,7 @@ $(NAME): dune build $@.exe ln $(BUILDDIR)/$@.exe $@ -$(JSLIB)-deps: $(NAME)-deps +jsdeps: deps opam install --yes $(JSDEPS) $(JSLIB): From 8238c785fa31edd629da91b3f6b4831b3a1b5a08 Mon Sep 17 00:00:00 2001 From: Rao Xiaojia Date: Mon, 9 Mar 2026 12:59:56 +0000 Subject: [PATCH 079/235] [spec] Fixing memarg binary format (#2101) --- specification/wasm-3.0/6.3-text.instructions.spectec | 2 +- specification/wasm-latest/6.3-text.instructions.spectec | 2 +- spectec/test-frontend/TEST.md | 2 +- spectec/test-latex/TEST.md | 2 +- spectec/test-middlend/TEST.md | 6 +++--- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/specification/wasm-3.0/6.3-text.instructions.spectec b/specification/wasm-3.0/6.3-text.instructions.spectec index 46d95fde5..661ba6df3 100644 --- a/specification/wasm-3.0/6.3-text.instructions.spectec +++ b/specification/wasm-3.0/6.3-text.instructions.spectec @@ -175,7 +175,7 @@ grammar Tplaininstr_(I)/elem : instr = ... ;; Memory instructions grammar Tmemarg_(N) : memarg = - | n:Toffset m:Talign_(N) => {ALIGN n, OFFSET m} + | n:Talign_(N) m:Toffset => {ALIGN n, OFFSET m} grammar Toffset : u64 = | "offset=" n:Tu64 => n diff --git a/specification/wasm-latest/6.3-text.instructions.spectec b/specification/wasm-latest/6.3-text.instructions.spectec index 46d95fde5..661ba6df3 100644 --- a/specification/wasm-latest/6.3-text.instructions.spectec +++ b/specification/wasm-latest/6.3-text.instructions.spectec @@ -175,7 +175,7 @@ grammar Tplaininstr_(I)/elem : instr = ... ;; Memory instructions grammar Tmemarg_(N) : memarg = - | n:Toffset m:Talign_(N) => {ALIGN n, OFFSET m} + | n:Talign_(N) m:Toffset => {ALIGN n, OFFSET m} grammar Toffset : u64 = | "offset=" n:Tu64 => n diff --git a/spectec/test-frontend/TEST.md b/spectec/test-frontend/TEST.md index bb6aeb41a..913d12246 100644 --- a/spectec/test-frontend/TEST.md +++ b/spectec/test-frontend/TEST.md @@ -10104,7 +10104,7 @@ grammar Toffset : u64 ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tmemarg_(N : N) : memarg ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec - prod{n : n, m : m} {{`%`_u64(n):Toffset} {`%`_u64(m):Talign_(N)}} => {ALIGN `%`_u32(n), OFFSET `%`_u64(m)} + prod{n : n, m : m} {{`%`_u64(n):Talign_(N)} {`%`_u64(m):Toffset}} => {ALIGN `%`_u32(n), OFFSET `%`_u64(m)} ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tplaininstr_(I : I) : instr diff --git a/spectec/test-latex/TEST.md b/spectec/test-latex/TEST.md index fcb398197..454d67331 100644 --- a/spectec/test-latex/TEST.md +++ b/spectec/test-latex/TEST.md @@ -12911,7 +12911,7 @@ $$ $$ \begin{array}[t]{@{}lrrl@{}l@{}l@{}l@{}} -& {{\mathtt{memarg}}}_{N} & ::= & n{:}{\mathtt{offset}}~~m{:}{{\mathtt{align}}}_{N} & \quad\Rightarrow\quad{} & \{ \mathsf{align}~n,\;\allowbreak \mathsf{offset}~m \} \\ +& {{\mathtt{memarg}}}_{N} & ::= & n{:}{{\mathtt{align}}}_{N}~~m{:}{\mathtt{offset}} & \quad\Rightarrow\quad{} & \{ \mathsf{align}~n,\;\allowbreak \mathsf{offset}~m \} \\ & {\mathtt{offset}} & ::= & \mbox{‘\texttt{offset{=}}’}~~n{:}{\mathtt{u64}} & \quad\Rightarrow\quad{} & n \\ & & | & \epsilon & \quad\Rightarrow\quad{} & 0 \\ & {{\mathtt{align}}}_{N} & ::= & \mbox{‘\texttt{align{=}}’}~~m{:}{\mathtt{u64}} & \quad\Rightarrow\quad{} & m & \quad \mbox{if}~ m = {2^{n}} \\ diff --git a/spectec/test-middlend/TEST.md b/spectec/test-middlend/TEST.md index ea175a04d..d9bb056de 100644 --- a/spectec/test-middlend/TEST.md +++ b/spectec/test-middlend/TEST.md @@ -10094,7 +10094,7 @@ grammar Toffset : u64 ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tmemarg_(N : N) : memarg ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec - prod{n : n, m : m} {{`%`_u64(n):Toffset} {`%`_u64(m):Talign_(N)}} => {ALIGN `%`_u32(n), OFFSET `%`_u64(m)} + prod{n : n, m : m} {{`%`_u64(n):Talign_(N)} {`%`_u64(m):Toffset}} => {ALIGN `%`_u32(n), OFFSET `%`_u64(m)} ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tplaininstr_(I : I) : instr @@ -21486,7 +21486,7 @@ grammar Toffset : u64 ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tmemarg_(N : N) : memarg ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec - prod{n : n, m : m} {{`%`_u64(n):Toffset} {`%`_u64(m):Talign_(N)}} => {ALIGN `%`_u32(n), OFFSET `%`_u64(m)} + prod{n : n, m : m} {{`%`_u64(n):Talign_(N)} {`%`_u64(m):Toffset}} => {ALIGN `%`_u32(n), OFFSET `%`_u64(m)} ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tplaininstr_(I : I) : instr @@ -33058,7 +33058,7 @@ grammar Toffset : u64 ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tmemarg_(N : N) : memarg ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec - prod{n : n, m : m} {{`%`_u64(n):Toffset} {`%`_u64(m):Talign_(N)}} => {ALIGN `%`_u32(n), OFFSET `%`_u64(m)} + prod{n : n, m : m} {{`%`_u64(n):Talign_(N)} {`%`_u64(m):Toffset}} => {ALIGN `%`_u32(n), OFFSET `%`_u64(m)} ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tplaininstr_(I : I) : instr From 5dfff49eac419e3a7bae9f7b5ef02196318fef55 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Mon, 9 Mar 2026 18:47:30 +0100 Subject: [PATCH 080/235] [spectec] Add missing free variable computations for exception syntax --- .../wasm-3.0/1.1-syntax.values.spectec | 6 +- .../wasm-3.0/1.2-syntax.types.spectec | 2 +- .../wasm-3.0/1.3-syntax.instructions.spectec | 10 + spectec/doc/example/output/NanoWasm.pdf | Bin 245508 -> 245508 bytes spectec/test-prose/TEST.md | 262 ++++++++++++------ 5 files changed, 190 insertions(+), 90 deletions(-) diff --git a/specification/wasm-3.0/1.1-syntax.values.spectec b/specification/wasm-3.0/1.1-syntax.values.spectec index fd1340450..b1bce6633 100644 --- a/specification/wasm-3.0/1.1-syntax.values.spectec +++ b/specification/wasm-3.0/1.1-syntax.values.spectec @@ -164,7 +164,8 @@ syntax free = ELEMS elemidx*, DATAS dataidx*, LOCALS localidx*, - LABELS labelidx* + LABELS labelidx*, + TAGS tagidx* } @@ -188,6 +189,7 @@ def $free_dataidx(dataidx) : free def $free_localidx(localidx) : free def $free_labelidx(labelidx) : free def $free_externidx(externidx) : free +def $free_tagidx(tagidx) : free def $free_typeidx(typeidx) = {TYPES typeidx} def $free_funcidx(funcidx) = {FUNCS funcidx} @@ -198,8 +200,10 @@ def $free_elemidx(elemidx) = {ELEMS elemidx} def $free_dataidx(dataidx) = {DATAS dataidx} def $free_localidx(localidx) = {LOCALS localidx} def $free_labelidx(labelidx) = {LABELS labelidx} +def $free_tagidx(tagidx) = {TAGS tagidx} def $free_externidx(FUNC funcidx) = $free_funcidx(funcidx) def $free_externidx(GLOBAL globalidx) = $free_globalidx(globalidx) def $free_externidx(TABLE tableidx) = $free_tableidx(tableidx) def $free_externidx(MEM memidx) = $free_memidx(memidx) +def $free_externidx(TAG tagidx) = $free_tagidx(tagidx) diff --git a/specification/wasm-3.0/1.2-syntax.types.spectec b/specification/wasm-3.0/1.2-syntax.types.spectec index e0ee0b510..b35461961 100644 --- a/specification/wasm-3.0/1.2-syntax.types.spectec +++ b/specification/wasm-3.0/1.2-syntax.types.spectec @@ -474,7 +474,7 @@ def $expanddt(deftype) = comptype -- if $unrolldt(deftyp ;; Free indices -def $free_addrtype(numtype) : free +def $free_addrtype(addrtype) : free def $free_numtype(numtype) : free def $free_packtype(packtype) : free def $free_lanetype(lanetype) : free diff --git a/specification/wasm-3.0/1.3-syntax.instructions.spectec b/specification/wasm-3.0/1.3-syntax.instructions.spectec index 3ceac92f7..ae66049aa 100644 --- a/specification/wasm-3.0/1.3-syntax.instructions.spectec +++ b/specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -415,6 +415,7 @@ def $const(vectype, c) = (VCONST vectype c) def $free_shape(shape) : free def $free_blocktype(blocktype) : free +def $free_catch(catch) : free def $free_instr(instr) : free def $free_block(instr*) : free @@ -426,6 +427,10 @@ def $free_shape(lanetype X dim) = $free_lanetype(lanetype) def $free_blocktype(_RESULT valtype?) = $free_opt($free_valtype(valtype)?) def $free_blocktype(_IDX typeidx) = $free_typeidx(typeidx) +def $free_catch(CATCH tagidx labelidx) = $free_tagidx(tagidx) ++ $free_labelidx(labelidx) +def $free_catch(CATCH_REF tagidx labelidx) = $free_tagidx(tagidx) ++ $free_labelidx(labelidx) +def $free_catch(CATCH_ALL labelidx) = $free_labelidx(labelidx) +def $free_catch(CATCH_ALL_REF labelidx) = $free_labelidx(labelidx) def $free_instr(NOP) = {} def $free_instr(UNREACHABLE) = {} @@ -458,6 +463,11 @@ def $free_instr(RETURN_CALL_REF typeuse) = $free_typeuse(typeuse) def $free_instr(RETURN_CALL_INDIRECT tableidx typeuse) = $free_tableidx(tableidx) ++ $free_typeuse(typeuse) +def $free_instr(THROW tagidx) = $free_tagidx(tagidx) +def $free_instr(THROW_REF) = {} +def $free_instr(TRY_TABLE blocktype catch* instr*) = + $free_blocktype(blocktype) ++ $free_list($free_catch(catch)*) ++ $free_list($free_instr(instr)*) + def $free_instr(CONST numtype numlit) = $free_numtype(numtype) def $free_instr(UNOP numtype unop) = $free_numtype(numtype) def $free_instr(BINOP numtype binop) = $free_numtype(numtype) diff --git a/spectec/doc/example/output/NanoWasm.pdf b/spectec/doc/example/output/NanoWasm.pdf index f1d2ac4d7e22b2d467a58413d60916e90293892d..fe98a5365984eed7771fec6ff07932c032d8c05e 100644 GIT binary patch delta 373 zcmZqq$Jg?YZ$pw$y>Iqm10J>qyX#x~%yed{+zzaf&1pWwwzy4pmz>Y6t*uM%iobcU zzmmQ6>ymJ%DhHNmg&pQ!*4IhQ(_(Dq%J7y@ak8IvbykA$S#gIMLEQGs*9tnNh~zH+ z!{+_D4Ni_g`0hZ+kJ!?ftYE#k1+G$ zg*wItmWCE4W(FqO28QYe2I`tz`o8%oE{P?n3K}j}Mg~S^25=?Yt+z54vN;>NT3R@o q7&*HbySZ8zyEz-0SQtAQ8oD~0o0vMgy13aX*bq{({rzrcQDy)_Adtxb delta 369 zcmZqq$Jg?YZ$pw${Xs8gM;^8ZzinLmj2|3RF~0dGhE@BEf(N_J6}fGO~PAw=cBJ~AO2|R@+tD|cLA-9$JX2Z z&in6VSo-$-zY31on`{bmG}dH3vN$-!cVH_uPCi}zy0&Z8)q#iT$x<(^+Ro8z2|qIlg(Db?N-8!K+Lq=N|^cTLLDO` zb3-FjLt{&A14DHK19eR Date: Mon, 9 Mar 2026 18:58:47 +0100 Subject: [PATCH 081/235] [spectec] Tweak various aspects of syntax elaboration --- .../wasm-3.0/2.0-validation.contexts.spectec | 2 +- .../2.0-validation.contexts.spectec | 2 +- spectec/doc/example/output/NanoWasm.pdf | Bin 245508 -> 245508 bytes spectec/src/backend-latex/render.ml | 4 +- spectec/src/frontend/elab.ml | 40 ++++- spectec/src/frontend/lexer.mll | 35 +++-- spectec/src/frontend/parser.mly | 142 ++++++++++++++---- spectec/src/il/eval.ml | 17 ++- spectec/test-latex/TEST.md | 84 ++++------- spectec/test-latex/test.spectec | 22 +-- 10 files changed, 220 insertions(+), 128 deletions(-) diff --git a/specification/wasm-3.0/2.0-validation.contexts.spectec b/specification/wasm-3.0/2.0-validation.contexts.spectec index e9205fa2b..bbde5a076 100644 --- a/specification/wasm-3.0/2.0-validation.contexts.spectec +++ b/specification/wasm-3.0/2.0-validation.contexts.spectec @@ -12,7 +12,7 @@ syntax localtype hint(desc "local type") = init valtype syntax instrtype hint(desc "instruction type") = - resulttype ->_ localidx* resulttype hint(macro "to") + resulttype ->_(localidx*) resulttype hint(macro "to") var lct : localtype hint(show lt) diff --git a/specification/wasm-latest/2.0-validation.contexts.spectec b/specification/wasm-latest/2.0-validation.contexts.spectec index e9205fa2b..bbde5a076 100644 --- a/specification/wasm-latest/2.0-validation.contexts.spectec +++ b/specification/wasm-latest/2.0-validation.contexts.spectec @@ -12,7 +12,7 @@ syntax localtype hint(desc "local type") = init valtype syntax instrtype hint(desc "instruction type") = - resulttype ->_ localidx* resulttype hint(macro "to") + resulttype ->_(localidx*) resulttype hint(macro "to") var lct : localtype hint(show lt) diff --git a/spectec/doc/example/output/NanoWasm.pdf b/spectec/doc/example/output/NanoWasm.pdf index fe98a5365984eed7771fec6ff07932c032d8c05e..786215a7e64627e4106e123df03f428f2bfb0583 100644 GIT binary patch delta 110 zcmZqq$Jg?Yuc3vpg=q`3$W|6pGeh&~5?h(&!L04pTbT>loSjT8j7-feOloDE$qEgVgZoL!9FTrG^< hoDEGZjGYV(U7gKMOr2d_-0T!=2r1eAemAoyGXTjO9l8Jj diff --git a/spectec/src/backend-latex/render.ml b/spectec/src/backend-latex/render.ml index 64a539b45..ff455dae0 100644 --- a/spectec/src/backend-latex/render.ml +++ b/spectec/src/backend-latex/render.ml @@ -73,10 +73,11 @@ let as_paren_exp e = | ParenE e1 -> e1 | _ -> e -let as_tup_exp e = +let rec as_tup_exp e = match e.it with | TupE es -> es | ParenE e1 -> [e1] + | ArithE e1 -> as_tup_exp e1 | _ -> [e] let as_seq_exp e = @@ -89,6 +90,7 @@ let rec fuse_exp e deep = | ParenE e1 when deep -> ParenE (fuse_exp e1 false) $ e.at | IterE (e1, iter) -> IterE (fuse_exp e1 deep, iter) $ e.at | SeqE (e1::es) -> List.fold_left (fun e1 e2 -> FuseE (e1, e2) $ e.at) e1 es + | InfixE (e1, atom, e2) -> fuse_exp (SeqE [e1; AtomE atom $ atom.at; e2] $ e.at) deep | _ -> e let as_tup_arg a = diff --git a/spectec/src/frontend/elab.ml b/spectec/src/frontend/elab.ml index d252f7604..f69988ad5 100644 --- a/spectec/src/frontend/elab.ml +++ b/spectec/src/frontend/elab.ml @@ -562,6 +562,11 @@ let as_iter_typ_opt env t : (Il.typ * Il.iter) option = | Il.IterT (t1, iter) -> Some (t1, iter) | _ -> None +let as_opt_typ_opt env t : Il.typ option = + match expand env t with + | Il.IterT (t1, Il.Opt) -> Some t1 + | _ -> None + let as_list_typ_opt env t : Il.typ option = match expand env t with | Il.IterT (t1, Il.List) -> Some t1 @@ -589,6 +594,8 @@ let as_num_typ phrase env dir t at = as_x_typ as_num_typ_opt phrase env dir t at "(nat|int|rat|real)" let as_iter_typ phrase env dir t at = as_x_typ as_iter_typ_opt phrase env dir t at "(_)*" +let as_opt_typ phrase env dir t at = + as_x_typ as_opt_typ_opt phrase env dir t at "(_)?" let as_list_typ phrase env dir t at = as_x_typ as_list_typ_opt phrase env dir t at "(_)*" let as_tup_typ phrase env dir t at = @@ -1211,8 +1218,19 @@ and infer_exp' env e : (Il.exp' * Il.typ') attempt = ] | LenE e1 -> let* e1', t1 = infer_exp env e1 in - let* _t11 = as_list_typ "expression" env Infer t1 e1.at in - Ok (Il.LenE e1', Il.NumT `NatT) + choice env [ + (fun env -> + (* Try as list *) + let* _t11 = as_list_typ "expression" env Infer t1 e1.at in + Ok (Il.LenE e1', Il.NumT `NatT) + ); + (fun env -> + (* Try as option *) + let* t11 = as_opt_typ "expression" env Infer t1 e1.at in + let e1'' = Il.LiftE e1' $$ e1.at % (Il.IterT (t11, Il.List) $ e1.at) in + Ok (Il.LenE e1'', Il.NumT `NatT) + ); + ] | SizeE id -> let _ = find "grammar" env.grams id in Ok (Il.NumE (`Nat Z.zero), Il.NumT `NatT) @@ -1504,7 +1522,7 @@ and elab_exp_iter' env (es : exp list) (t1, iter) t at : Il.exp' attempt = and elab_exp_notation env tid (e : exp) (t1, mixop, not) t : Il.exp attempt = (* Convert notation into applications of mixin operators *) assert (valid_tid tid); - let* es', _s = elab_exp_notation' env tid e not in + let* es', _s = nest e.at t (elab_exp_notation' env tid e not) in Ok (Il.CaseE (mixop, Il.TupE es' $$ e.at % t1) $$ e.at % t) and elab_exp_notation' env tid (e : exp) not : (Il.exp list * Il.Subst.t) attempt = @@ -1684,6 +1702,20 @@ and elab_exp_notation_iter' env tid (es : exp list) (t1, iter) x t eo' nots at elab_exp_notation_iter' env tid es2 (t1, iter) x t (Some e0'') nots at' in Ok (e', es2', s) ); + (fun env -> + (* Try parsing all as list element *) + let* e1' = elab_exp env (SeqE es $ at) t in + let e' = + match eo' with + | None -> e1' + | Some e0' -> cat_exp' e0' e1' $$ Source.over_region [e0'.at; e1'.at] % t + in + let s1 = Il.Subst.add_varid Il.Subst.empty x e' in + let not = Mixop.Seq nots in + let not' = Mixop.map (fun (x, t) -> x, Il.Subst.subst_typ s1 t) not in + let* es', s2 = elab_exp_notation' env tid (SeqE [] $ at) not' in + Ok (e', es', Il.Subst.union s1 s2) + ); ] | _, Il.(List1 | ListN _) -> @@ -2642,7 +2674,7 @@ let rec elab_def_pass2 env (d : def) : Il.def list = let ps'' = elab_params env' ps in if not Il.Eq.(eq_list eq_param ps' ps'') then error d.at ("parameter list on rule differs from relation"); - let es', _ = checkpoint (elab_exp_notation' env' x1 e not') in + let es', _ = checkpoint (nest e.at t' (elab_exp_notation' env' x1 e not')) in let prems' = List.concat (map_filter_nl_list (elab_prem env') prems) in let dims = Dim.check Map.empty [] [] [] es' [] prems' in let es' = List.map (Dim.annot_exp dims) es' in diff --git a/spectec/src/frontend/lexer.mll b/spectec/src/frontend/lexer.mll index f0a0aaaac..383097fa2 100644 --- a/spectec/src/frontend/lexer.mll +++ b/spectec/src/frontend/lexer.mll @@ -69,16 +69,20 @@ let hex = hexdigit ('_'? hexdigit)* let upletter = ['A'-'Z'] let loletter = ['a'-'z'] let letter = upletter | loletter -let idchar = letter | digit | '_' | '\'' +let idchar = letter | digit | '\'' +let idcharsub = idchar | '_' -let upid = (upletter | '_') idchar* -let loid = loletter idchar* +let upid = upletter (idcharsub* idchar)? | '_' idcharsub* idchar | '_' +let loid = loletter (idcharsub* idchar)? let id = upid | loid -let atomid = upid -let typid = loid -let expid = loid -let defid = id -let metaid = id +let upidsub = upletter idcharsub* '_' | '_' idcharsub* '_' +let loidsub = loletter idcharsub* '_' +let idsub = upidsub | loidsub +let atomid = upid | upidsub +let typid = loid | loidsub +let expid = loid | loidsub +let defid = id | idsub +let metaid = id | idsub let symbol = ['+''-''*''/''\\''^''~''=''<''>''!''?''@''#''$''%''&''|'':''`''.''\''] @@ -258,13 +262,16 @@ and token = parse | upid as s { if is_var s then LOID s else UPID s } | loid as s { LOID s } - | (upid as s) "(" { if is_var s then LOID_LPAREN s else UPID_LPAREN s } - | (loid as s) "(" { LOID_LPAREN s } - | "`"(upid as s) { LOID s } - | "`"(loid as s) { UPID s } - | "`"(upid as s) "(" { LOID_LPAREN s } - | "`"(loid as s) "(" { UPID_LPAREN s } + | upidsub as s { if is_var s then LOID_SUB s else UPID_SUB s } + | loidsub as s { LOID_SUB s } + | (upid|upidsub as s) "(" { if is_var s then LOID_LPAREN s else UPID_LPAREN s } + | (loid|loidsub as s) "(" { LOID_LPAREN s } + | "`"(upid|upidsub as s) { LOID s } + | "`"(loid|loidsub as s) { UPID s } + | "`"(upid|upidsub as s) "(" { LOID_LPAREN s } + | "`"(loid|loidsub as s) "(" { UPID_LPAREN s } | "."(id as s) { DOTID s } + | "."(idsub as s) { DOTID_SUB s } | line_comment eof { EOF } | line_comment '\n' { Lexing.new_line lexbuf; token lexbuf } diff --git a/spectec/src/frontend/parser.mly b/spectec/src/frontend/parser.mly index e1a04be62..ceb984df4 100644 --- a/spectec/src/frontend/parser.mly +++ b/spectec/src/frontend/parser.mly @@ -25,6 +25,7 @@ let positions_to_region position1 position2 = let at (l, r) = positions_to_region l r +let ($.) it r = it $ r let ($) it pos = it $ at pos let ($$) it pos = it $$ at pos % Atom.info "" @@ -52,6 +53,19 @@ let as_alt_sym sym = | _ -> [Elem sym] +let cat_seq_typ typ1 typ2 = + (match typ2.it with + | SeqT typs -> SeqT (typ1::typs) + | _ -> SeqT [typ1; typ2] + ) $. over_region [typ1.at; typ2.at] + +let cat_seq_exp exp1 exp2 = + (match exp2.it with + | SeqE exps -> SeqE (exp1::exps) + | _ -> SeqE [exp1; exp2] + ) $. over_region [exp1.at; exp2.at] + + (* Identifiers *) let check_varid_bind id = @@ -109,24 +123,20 @@ let rec alt_sym = function | Nl::alts -> alt_sym alts | (Elem g)::alts when List.for_all ((=) Nl) alts -> g | alts -> - let open Source in - AltG alts $ over_region (El.Convert.map_filter_nl_list Source.at alts) + AltG alts $. over_region (El.Convert.map_filter_nl_list Source.at alts) let long_prod (g, e, prems) = - let open Source in let ats = g.at :: e.at :: El.Convert.map_filter_nl_list Source.at prems in - Elem (SynthP (g, e, prems) $ over_region ats) + Elem (SynthP (g, e, prems) $. over_region ats) let equiv_prod (g1, g2, prems) = - let open Source in let ats = g1.at :: g2.at :: El.Convert.map_filter_nl_list Source.at prems in - Elem (EquivP (g1, g2, prems) $ over_region ats) + Elem (EquivP (g1, g2, prems) $. over_region ats) let short_prod (g, prems) = - let open Source in - let var () = VarE ("" $ g.at, []) $ g.at in + let var () = VarE ("" $. g.at, []) $. g.at in let ats = g.at :: El.Convert.map_filter_nl_list Source.at prems in - Elem (SynthP (AttrG (var (), g) $ g.at, var (), prems) $ over_region ats) + Elem (SynthP (AttrG (var (), g) $. g.at, var (), prems) $. over_region ats) let rec long_alt_prod (els, e, prems) = long_alt_prod' (List.rev els, e, prems) and long_alt_prod' = function @@ -136,9 +146,8 @@ and long_alt_prod' = function | ((Elem g)::elsr, e, prems) when List.for_all ((=) Nl) elsr -> [long_prod (g, e, prems)] | (elsr, e, prems) -> - let open Source in let ats = El.Convert.map_filter_nl_list Source.at elsr in - [long_prod (AltG (List.rev elsr) $ over_region ats, e, prems)] + [long_prod (AltG (List.rev elsr) $. over_region ats, e, prems)] let rec long_equiv_prod (alts, g2, prems) = long_equiv_prod' (List.rev alts, g2, prems) and long_equiv_prod' = function @@ -148,9 +157,8 @@ and long_equiv_prod' = function | ((Elem g1)::elsr, g2, prems) when List.for_all ((=) Nl) elsr -> [equiv_prod (g1, g2, prems)] | (elsr, g2, prems) -> - let open Source in let ats = El.Convert.map_filter_nl_list Source.at elsr in - [equiv_prod (AltG (List.rev elsr) $ over_region ats, g2, prems)] + [equiv_prod (AltG (List.rev elsr) $. over_region ats, g2, prems)] let rec short_alt_prod (els, prems) = short_alt_prod' (List.rev els, prems) and short_alt_prod' = function @@ -184,7 +192,7 @@ and short_alt_prod' = function %token BOOLLIT %token NATLIT HEXLIT CHARLIT %token TEXTLIT -%token UPID LOID DOTID UPID_LPAREN LOID_LPAREN +%token UPID LOID DOTID UPID_SUB LOID_SUB DOTID_SUB UPID_LPAREN LOID_LPAREN %token EOF %right ARROW2 ARROW2SUB IMPL DIMPL @@ -272,17 +280,18 @@ dots_comma_list1(X) : (* Identifiers *) -id : UPID { $1 } | LOID { $1 } +id : UPID { $1 } | UPID_SUB { $1 } | LOID { $1 } | LOID_SUB { $1 } id_lparen : UPID_LPAREN { $1 } | LOID_LPAREN { $1 } atomid_ : UPID { $1 } -varid : LOID { $1 $ $sloc } +atomidsub_ : UPID_SUB { $1 } +varid : LOID { $1 $ $sloc } | LOID_SUB { $1 $ $sloc } defid : id { $1 $ $sloc } | IF { "if" $ $sloc } relid : id { $1 $ $sloc } gramid : id { $1 $ $sloc } hintid : id { $1 } fieldid : atomid_ { Atom.Atom $1 $$ $sloc } | atom_escape { $1 $$ $sloc } -dotid : DOTID { Atom.Atom $1 $$ $sloc } +dotid : DOTID { Atom.Atom $1 $$ $sloc } | DOTID_SUB { Atom.Atom $1 $$ $sloc } atomid_lparen : UPID_LPAREN { $1 } varid_lparen : LOID_LPAREN { $1 $ $sloc } @@ -311,6 +320,7 @@ ruleid_ : | GRAMMAR { "grammar" } | ruleid_ DOTID { $1 ^ "." ^ $2 } atomid : atomid_ { $1 } | atomid DOTID { $1 ^ "." ^ $2 } +atomidsub : atomidsub_ { $1 } | atomid DOTID_SUB { $1 ^ "." ^ $2 } atom : | atom_ { $1 $$ $sloc } @@ -334,7 +344,6 @@ atom_escape : | TICK PLUSMINUS { Atom.PlusMinus } | TICK MINUSPLUS { Atom.MinusPlus } | TICK STAR { Atom.Times } - | TICK SLASH { Atom.Slash } | TICK NOT { Atom.Not } | TICK AND { Atom.And } | TICK OR { Atom.Or } @@ -349,9 +358,19 @@ atom_escape : | TOP { Atom.Top } | INFINITY { Atom.Infinity } +atomsub : + | atomsub_ { $1 $$ $sloc } +atomsub_ : + | atomidsub { Atom.Atom $1 } + | atomsub_escape { $1 } +atomsub_escape : + | TICK infixopsub_ { $2 } + | TICK relopsub_ { $2 } + varid_bind_with_suffix : | varid { $1 } | atomid_ { Id.make_var $1; $1 $ $sloc } + | atomidsub_ { Id.make_var $1; $1 $ $sloc } varid_bind : | varid_bind_with_suffix { check_varid_bind $1 } varid_bind_lparen : @@ -365,6 +384,7 @@ exit_scope : check_atom : | UPID EOF { Id.is_var (El.Convert.strip_var_suffix ($1 $ $sloc)).it } + | UPID_SUB EOF { Id.is_var (El.Convert.strip_var_suffix ($1 $ $sloc)).it } (* Operators *) @@ -404,39 +424,48 @@ check_atom : | DOTDOT { Atom.Dot2 } | DOTDOTDOT { Atom.Dot3 } | SEMICOLON { Atom.Semicolon } + | SLASH { Atom.Slash } | BACKSLASH { Atom.Backslash } | ARROW { Atom.Arrow } | ARROW2 { Atom.Arrow2 } - | ARROWSUB { Atom.ArrowSub } - | ARROW2SUB { Atom.Arrow2Sub } | BIGAND { Atom.BigAnd } | BIGOR { Atom.BigOr } | BIGADD { Atom.BigAdd } | BIGMUL { Atom.BigMul } | BIGCAT { Atom.BigCat } +%inline infixopsub : + | infixopsub_ { $1 $$ $sloc } +%inline infixopsub_ : + | ARROWSUB { Atom.ArrowSub } + | ARROW2SUB { Atom.Arrow2Sub } + %inline relop : | relop_ { $1 $$ $sloc } %inline relop_ : - | EQSUB { Atom.EqualSub } | COLON { Atom.Colon } - | COLONSUB { Atom.ColonSub } | SUB { Atom.Sub } | SUP { Atom.Sup } | ASSIGN { Atom.Assign } | EQUIV { Atom.Equiv } - | EQUIVSUB { Atom.EquivSub } | APPROX { Atom.Approx } - | APPROXSUB { Atom.ApproxSub } | SQARROW { Atom.SqArrow } - | SQARROWSUB { Atom.SqArrowSub } | SQARROWSTAR { Atom.SqArrowStar } - | SQARROWSTARSUB { Atom.SqArrowStarSub } | PREC { Atom.Prec } | SUCC { Atom.Succ } | TILESTURN { Atom.Tilesturn } - | TILESTURNSUB { Atom.TilesturnSub } | TURNSTILE { Atom.Turnstile } + +%inline relopsub : + | relopsub_ { $1 $$ $sloc } +%inline relopsub_ : + | EQSUB { Atom.EqualSub } + | COLONSUB { Atom.ColonSub } + | EQUIVSUB { Atom.EquivSub } + | APPROXSUB { Atom.ApproxSub } + | SQARROWSUB { Atom.SqArrowSub } + | SQARROWSTARSUB { Atom.SqArrowStarSub } + | TILESTURNSUB { Atom.TilesturnSub } | TURNSTILESUB { Atom.TurnstileSub } @@ -549,7 +578,7 @@ deftyp_ : | nl_bar_list1(enumtyp(enum1), enumtyp(arith)) { RangeT $1 } -(*nottyp_prim : nottyp_prim_ { $1 $ $sloc }*) +nottyp_prim : nottyp_prim_ { $1 $ $sloc } nottyp_prim_ : | typ_prim_ { $1 } | atom { AtomT $1 } @@ -564,6 +593,12 @@ nottyp_prim_ : { BrackT (Atom.LBrack $$ $loc($2), $3, Atom.RBrack $$ $loc($4)) } | TICK LBRACE nottyp RBRACE { BrackT (Atom.LBrace $$ $loc($2), $3, Atom.RBrace $$ $loc($4)) } + | TICK LPAREN RPAREN + { BrackT (Atom.LParen $$ $loc($2), SeqT [] $ $loc($3), Atom.RParen $$ $loc($3)) } + | TICK LBRACK RBRACK + { BrackT (Atom.LBrack $$ $loc($2), SeqT [] $ $loc($3), Atom.RBrack $$ $loc($3)) } + | TICK LBRACE RBRACE + { BrackT (Atom.LBrace $$ $loc($2), SeqT [] $ $loc($3), Atom.RBrace $$ $loc($3)) } | LPAREN comma_list(typ) RPAREN { match $2 with | [] -> ParenT (SeqT [] $ $sloc) @@ -579,22 +614,32 @@ nottyp_seq : nottyp_seq_ { $1 $ $sloc } nottyp_seq_ : | nottyp_post_ { $1 } | nottyp_post nottyp_seq { SeqT ($1 :: as_seq_typ $2) } + | atomsub nottyp_prim nottyp_seq + { SeqT ((AtomT $1 $. $1.at) :: $2 :: as_seq_typ $3) } nottyp_un : nottyp_un_ { $1 $ $sloc } nottyp_un_ : | nottyp_seq_ { $1 } | infixop nottyp_un { InfixT (SeqT [] $ $loc($1), $1, $2) } + | infixopsub nottyp_prim nottyp_un + { InfixT (SeqT [] $ $loc($1), $1, cat_seq_typ $2 $3) } nottyp_bin : nottyp_bin_ { $1 $ $sloc } nottyp_bin_ : | nottyp_un_ { $1 } | nottyp_bin infixop nottyp_bin { InfixT ($1, $2, $3) } + | nottyp_bin infixopsub nottyp_prim nottyp_bin + { InfixT ($1, $2, cat_seq_typ $3 $4) } nottyp_rel : nottyp_rel_ { $1 $ $sloc } nottyp_rel_ : | nottyp_bin_ { $1 } | relop nottyp_rel { InfixT (SeqT [] $ $loc($1), $1, $2) } + | relopsub nottyp_prim nottyp_rel + { InfixT (SeqT [] $ $loc($1), $1, cat_seq_typ $2 $3) } | nottyp_rel relop nottyp_rel { InfixT ($1, $2, $3) } + | nottyp_rel relopsub nottyp_prim nottyp_rel + { InfixT ($1, $2, cat_seq_typ $3 $4) } nottyp : nottyp_rel { $1 } @@ -668,6 +713,12 @@ exp_prim_ : { BrackE (Atom.LBrack $$ $loc($2), $3, Atom.RBrack $$ $loc($4)) } | TICK LBRACE exp RBRACE { BrackE (Atom.LBrace $$ $loc($2), $3, Atom.RBrace $$ $loc($4)) } + | TICK LPAREN RPAREN + { BrackE (Atom.LParen $$ $loc($2), SeqE [] $ $loc($3), Atom.RParen $$ $loc($3)) } + | TICK LBRACK RBRACK + { BrackE (Atom.LBrack $$ $loc($2), SeqE [] $ $loc($3), Atom.RBrack $$ $loc($3)) } + | TICK LBRACE RBRACE + { BrackE (Atom.LBrace $$ $loc($2), SeqE [] $ $loc($3), Atom.RBrace $$ $loc($3)) } | DOLLAR LPAREN arith RPAREN { $3.it } | DOLLAR numtyp DOLLAR LPAREN arith RPAREN { CvtE ($5, $2) } | FUSEFUSE exp_prim { UnparenE $2 } @@ -692,6 +743,10 @@ exp_atom_ : ParenE $2 $ $loc($2) ] } +exp_atomsub : exp_atomsub_ { $1 $ $sloc } +exp_atomsub_ : + | atomsub { AtomE $1 } + exp_list : exp_list_ { $1 $ $sloc } exp_list_ : | LBRACK RBRACK { ListE [] } @@ -703,7 +758,17 @@ exp_seq_ : | exp_atom_ { $1 } | exp_list_ { $1 } | exp_seq exp_atom { SeqE (as_seq_exp $1 @ [$2]) } + | exp_seqsub exp_atom { SeqE (as_seq_exp $1 @ [$2]) } | exp_seq FUSE exp_atom { FuseE ($1, $3) } + | exp_seqsub FUSE exp_atom { FuseE ($1, $3) } + +exp_seqsub : exp_seqsub_ { $1 $ $sloc } +exp_seqsub_ : + | exp_atomsub_ { $1 } + | exp_seq exp_atomsub { SeqE (as_seq_exp $1 @ [$2]) } + | exp_seqsub exp_atomsub { SeqE (as_seq_exp $1 @ [$2]) } + | exp_seq FUSE exp_atomsub { FuseE ($1, $3) } + | exp_seqsub FUSE exp_atomsub { FuseE ($1, $3) } exp_un : exp_un_ { $1 $ $sloc } exp_un_ : @@ -712,11 +777,14 @@ exp_un_ : | BARBAR gramid BARBAR { SizeE $2 } | unop exp_un { UnE ($1, $2) } | infixop exp_un { InfixE (SeqE [] $ $loc($1), $1, $2) } + | infixopsub exp_prim exp_un + { InfixE (SeqE [] $ $loc($1), $1, cat_seq_exp $2 $3) } exp_bin : exp_bin_ { $1 $ $sloc } exp_bin_ : | exp_un_ { $1 } | exp_bin infixop exp_bin { InfixE ($1, $2, $3) } + | exp_bin infixopsub exp_prim exp_bin { InfixE ($1, $2, cat_seq_exp $3 $4) } | exp_bin cmpop exp_bin { CmpE ($1, $2, $3) } | exp_bin boolop exp_bin { BinE ($1, $2, $3) } | exp_bin CAT exp_bin { CatE ($1, $3) } @@ -727,15 +795,21 @@ exp_rel : exp_rel_ { $1 $ $sloc } exp_rel_ : | exp_bin_ { $1 } | relop exp_rel { InfixE (SeqE [] $ $loc($1), $1, $2) } + | relopsub exp_prim exp_rel + { InfixE (SeqE [] $ $loc($1), $1, cat_seq_exp $2 $3) } | exp_rel relop exp_rel { InfixE ($1, $2, $3) } + | exp_rel relopsub exp_prim exp_rel { InfixE ($1, $2, cat_seq_exp $3 $4) } exp_comma : exp_comma_ { $1 $ $sloc } exp_comma_ : | exp_bin_ { $1 } | comma(exp) exp_comma { CommaE (SeqE [] $ $loc($1), $2) } | relop exp_comma { InfixE (SeqE [] $ $loc($1), $1, $2) } + | relopsub exp_prim exp_comma + { InfixE (SeqE [] $ $loc($1), $1, cat_seq_exp $2 $3) } | exp_comma comma(exp) exp_comma { CommaE ($1, $3) } | exp_comma relop exp_comma { InfixE ($1, $2, $3) } + | exp_comma relopsub exp_prim exp_comma { InfixE ($1, $2, cat_seq_exp $3 $4) } exp : exp_comma { $1 } @@ -837,7 +911,7 @@ prem_bin_ : | IF exp_bin { let rec iters e = match e.it with - | IterE (e1, iter) -> IterPr (Source.(iters e1 $ e1.at), iter) + | IterE (e1, iter) -> IterPr (iters e1 $. e1.at, iter) | _ -> IfPr e in iters $2 } @@ -850,7 +924,7 @@ prem_ : | IF exp { let rec iters e = match e.it with - | IterE (e1, iter) -> IterPr (Source.(iters e1 $ e1.at), iter) + | IterE (e1, iter) -> IterPr (iters e1 $. e1.at, iter) | _ -> IfPr e in iters $2 } @@ -1001,12 +1075,12 @@ long_range_cont_or_gram_long : (* sym -> exp -> prod nl_list -> prod nl_list * { fun g1 e1 nl -> let x, y = $2 in $1 g1 e1 :: nl @ x, y } | gram_long { fun g1 e1 nl -> let x, y = $1 in - Elem Source.(SynthP (g1, e1, []) $ over_region [g1.at; e1.at]) :: nl @ x, y } + Elem (SynthP (g1, e1, []) $. over_region [g1.at; e1.at]) :: nl @ x, y } long_range_cont : (* sym -> exp -> prod nl_elem *) | DOTDOTDOT bar(gram) sym_seq ARROW2 exp { fun g1 e1 -> - Elem Source.(RangeP (g1, e1, $3, $5) $ over_region [g1.at; $5.at]) } + Elem (RangeP (g1, e1, $3, $5) $. over_region [g1.at; $5.at]) } short_range_cont_or_gram_long_or_short : (* sym nl_list -> sym -> sym nl_list -> prod nl_list * dots *) | short_range_cont ARROW2 exp prem_list gram_cont(gram_long) @@ -1028,7 +1102,7 @@ short_range_cont_or_gram_long_or_short : (* sym nl_list -> sym -> sym nl_list - short_range_cont : (* sym -> sym *) | DOTDOTDOT bar(sym) sym_seq - { fun g1 -> Source.(RangeG (g1, $3) $ over_region [g1.at; $3.at]) } + { fun g1 -> RangeG (g1, $3) $. over_region [g1.at; $3.at] } @@ -1111,6 +1185,8 @@ def_ : HintD (TypH ($2, id $ $loc($3), $4) $ $sloc) } | SYNTAX varid_bind ruleid_list atom hint* { HintD (AtomH ($2, $4, $5) $ $sloc) } + | SYNTAX varid_bind ruleid_list atomsub hint* + { HintD (AtomH ($2, $4, $5) $ $sloc) } | SYNTAX varid_bind ruleid_list TICK LPAREN hint* { HintD (AtomH ($2, Atom.LParen $$ $loc($5), $6) $ $sloc) } | SYNTAX varid_bind ruleid_list TICK LBRACK hint* diff --git a/spectec/src/il/eval.ml b/spectec/src/il/eval.ml index b3f24f2c3..96c513a1f 100644 --- a/spectec/src/il/eval.ml +++ b/spectec/src/il/eval.ml @@ -357,16 +357,16 @@ and reduce_exp env e : exp = | _ -> CatE (e1', e2') ) $> e | CaseE (op, e1) -> CaseE (op, reduce_exp env e1) $> e - | CvtE (e1, _nt1, nt2) -> + | CvtE (e1, nt1, nt2) -> let e1' = reduce_exp env e1 in (match e1'.it with | NumE n -> (match Num.cvt nt2 n with - | Some n' -> NumE n' $> e - | None -> e1' + | Some n' -> NumE n' + | None -> CvtE (e1', nt1, nt2) ) - | _ -> e1' - ) + | _ -> CvtE (e1', nt1, nt2) + ) $> e | SubE (e1, t1, t2) -> let e1' = reduce_exp env e1 in let t1' = reduce_typ env t1 in @@ -664,7 +664,7 @@ and match_typ env s t1 t2 : subst option = let t2' = reduce_typ env t2 in if Eq.eq_typ t2 t2' then None else match_typ env s t1 t2' - | TupT ets1, TupT ets2 -> match_list match_typbind env s ets1 ets2 + | TupT xts1, TupT xts2 -> match_list match_typbind env s xts1 xts2 | IterT (t11, iter1), IterT (t21, iter2) -> let* s' = match_typ env s t11 t21 in match_iter env s' iter1 iter2 | _, _ -> None @@ -705,6 +705,11 @@ and match_exp' env s e1 e2 : subst option = match_exp env s e1 e21 | NumE n1, UnE (`MinusOp, _, e21) when Num.is_neg n1 -> match_exp env s (reduce_exp env {e1 with it = NumE (Num.abs n1)}) e21 + | NumE n1, CvtE (e21, nt1, _nt2) -> + (match Num.cvt nt1 n1 with + | Some n1' -> match_exp env s (NumE n1' $> e1) e21 + | None -> None + ) (* | UnE (op1, _, e11), UnE (op2, _, e21) when op1 = op2 -> match_exp' env s e11 e21 | BinE (e11, op1, e12), BinE (e21, op2, e22) when op1 = op2 -> diff --git a/spectec/test-latex/TEST.md b/spectec/test-latex/TEST.md index 454d67331..f97cd8461 100644 --- a/spectec/test-latex/TEST.md +++ b/spectec/test-latex/TEST.md @@ -43,7 +43,6 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\mathrm{InfixArrow}}(a \rightarrow_{c} {}) & = & 0 \\ {\mathrm{InfixArrow}}(a \rightarrow_{c} b) & = & 0 \\ {\mathrm{InfixArrow}}(a \rightarrow_{{c^\ast}} b) & = & 0 \\ {\mathrm{InfixArrow}}(a \rightarrow_{c} b_1~b_2) & = & 0 \\ @@ -55,7 +54,6 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\mathrm{InfixArrow{\kern-0.1em\scriptstyle 2}}}(a \Rightarrow_{c} {}) & = & 0 \\ {\mathrm{InfixArrow{\kern-0.1em\scriptstyle 2}}}(a \Rightarrow_{c} b) & = & 0 \\ {\mathrm{InfixArrow{\kern-0.1em\scriptstyle 2}}}(a \Rightarrow_{{c^\ast}} b) & = & 0 \\ {\mathrm{InfixArrow{\kern-0.1em\scriptstyle 2}}}(a \Rightarrow_{c} b_1~b_2) & = & 0 \\ @@ -67,7 +65,6 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\mathrm{AtomArrow}}(a~{\rightarrow}_{c}) & = & 0 \\ {\mathrm{AtomArrow}}(a~{\rightarrow}_{c}\,b) & = & 0 \\ {\mathrm{AtomArrow}}(a~{\rightarrow}_{{c^\ast}}\,b) & = & 0 \\ {\mathrm{AtomArrow}}(a~{\rightarrow}_{c}\,b_1~b_2) & = & 0 \\ @@ -79,7 +76,6 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\mathrm{AtomArrow{\kern-0.1em\scriptstyle 2}}}(a~{\Rightarrow}_{c}) & = & 0 \\ {\mathrm{AtomArrow{\kern-0.1em\scriptstyle 2}}}(a~{\Rightarrow}_{c}\,b) & = & 0 \\ {\mathrm{AtomArrow{\kern-0.1em\scriptstyle 2}}}(a~{\Rightarrow}_{{c^\ast}}\,b) & = & 0 \\ {\mathrm{AtomArrow{\kern-0.1em\scriptstyle 2}}}(a~{\Rightarrow}_{c}\,b_1~b_2) & = & 0 \\ @@ -98,7 +94,6 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\mathrm{MacroInfixArrow}}(a \rightarrow_{c} {}) & = & 0 \\ {\mathrm{MacroInfixArrow}}(a \rightarrow_{c} b) & = & 0 \\ {\mathrm{MacroInfixArrow}}(a \rightarrow_{{c^\ast}} b) & = & 0 \\ {\mathrm{MacroInfixArrow}}(a \rightarrow_{c} b_1~b_2) & = & 0 \\ @@ -110,7 +105,6 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\mathrm{MacroAtomArrow}}(a \rightarrow_{c} {}) & = & 0 \\ {\mathrm{MacroAtomArrow}}(a \rightarrow_{c} b) & = & 0 \\ {\mathrm{MacroAtomArrow}}(a \rightarrow_{{c^\ast}} b) & = & 0 \\ {\mathrm{MacroAtomArrow}}(a \rightarrow_{c} b_1~b_2) & = & 0 \\ @@ -129,25 +123,23 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\mathrm{ShowInfixArrow}}(a \rightarrow_{c} ) & = & 0 \\ {\mathrm{ShowInfixArrow}}(a \rightarrow_{c} b) & = & 0 \\ -{\mathrm{ShowInfixArrow}}(a \rightarrow_{({c^\ast})} b) & = & 0 \\ +{\mathrm{ShowInfixArrow}}(a \rightarrow_{{c^\ast}} b) & = & 0 \\ {\mathrm{ShowInfixArrow}}(a \rightarrow_{c} b_1~b_2) & = & 0 \\ -{\mathrm{ShowInfixArrow}}(a \rightarrow_{({c^\ast})} b_1~b_2) & = & 0 \\ -{\mathrm{ShowInfixArrow}}(a \rightarrow_{(c_1~c_2)} b_1~b_2) & = & 0 \\ -{\mathrm{ShowInfixArrow}}({\rightarrow}_{(c_1~c_2)} b_1~b_2) & = & 0 \\ +{\mathrm{ShowInfixArrow}}(a \rightarrow_{{c^\ast}} b_1~b_2) & = & 0 \\ +{\mathrm{ShowInfixArrow}}(a \rightarrow_{c_1~c_2} b_1~b_2) & = & 0 \\ +{\mathrm{ShowInfixArrow}}({\rightarrow}_{c_1~c_2} b_1~b_2) & = & 0 \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\mathrm{ShowAtomArrow}}(a~{\rightarrow}_{c}) & = & 0 \\ {\mathrm{ShowAtomArrow}}(a~{\rightarrow}_{c}\,b) & = & 0 \\ -{\mathrm{ShowAtomArrow}}(a~{\rightarrow}_{({c^\ast})}\,b) & = & 0 \\ +{\mathrm{ShowAtomArrow}}(a~{\rightarrow}_{{c^\ast}}\,b) & = & 0 \\ {\mathrm{ShowAtomArrow}}(a~{\rightarrow}_{c}\,b_1~b_2) & = & 0 \\ -{\mathrm{ShowAtomArrow}}(a~{\rightarrow}_{({c^\ast})}\,b_1~b_2) & = & 0 \\ -{\mathrm{ShowAtomArrow}}(a~{\rightarrow}_{(c_1~c_2)}\,b_1~b_2) & = & 0 \\ -{\mathrm{ShowAtomArrow}}({\rightarrow}_{(c_1~c_2)}\,b_1~b_2) & = & 0 \\ +{\mathrm{ShowAtomArrow}}(a~{\rightarrow}_{{c^\ast}}\,b_1~b_2) & = & 0 \\ +{\mathrm{ShowAtomArrow}}(a~{\rightarrow}_{c_1~c_2}\,b_1~b_2) & = & 0 \\ +{\mathrm{ShowAtomArrow}}({\rightarrow}_{c_1~c_2}\,b_1~b_2) & = & 0 \\ \end{array} $$ @@ -160,25 +152,23 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\mathrm{ShowMacroInfixArrow}}(a \rightarrow_{c} ) & = & 0 \\ {\mathrm{ShowMacroInfixArrow}}(a \rightarrow_{c} b) & = & 0 \\ -{\mathrm{ShowMacroInfixArrow}}(a \rightarrow_{({c^\ast})} b) & = & 0 \\ +{\mathrm{ShowMacroInfixArrow}}(a \rightarrow_{{c^\ast}} b) & = & 0 \\ {\mathrm{ShowMacroInfixArrow}}(a \rightarrow_{c} b_1~b_2) & = & 0 \\ -{\mathrm{ShowMacroInfixArrow}}(a \rightarrow_{({c^\ast})} b_1~b_2) & = & 0 \\ -{\mathrm{ShowMacroInfixArrow}}(a \rightarrow_{(c_1~c_2)} b_1~b_2) & = & 0 \\ -{\mathrm{ShowMacroInfixArrow}}({\rightarrow}_{(c_1~c_2)} b_1~b_2) & = & 0 \\ +{\mathrm{ShowMacroInfixArrow}}(a \rightarrow_{{c^\ast}} b_1~b_2) & = & 0 \\ +{\mathrm{ShowMacroInfixArrow}}(a \rightarrow_{c_1~c_2} b_1~b_2) & = & 0 \\ +{\mathrm{ShowMacroInfixArrow}}({\rightarrow}_{c_1~c_2} b_1~b_2) & = & 0 \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\mathrm{ShowMacroAtomArrow}}(a~{\rightarrow}_{c}) & = & 0 \\ {\mathrm{ShowMacroAtomArrow}}(a~{\rightarrow}_{c}\,b) & = & 0 \\ -{\mathrm{ShowMacroAtomArrow}}(a~{\rightarrow}_{({c^\ast})}\,b) & = & 0 \\ +{\mathrm{ShowMacroAtomArrow}}(a~{\rightarrow}_{{c^\ast}}\,b) & = & 0 \\ {\mathrm{ShowMacroAtomArrow}}(a~{\rightarrow}_{c}\,b_1~b_2) & = & 0 \\ -{\mathrm{ShowMacroAtomArrow}}(a~{\rightarrow}_{({c^\ast})}\,b_1~b_2) & = & 0 \\ -{\mathrm{ShowMacroAtomArrow}}(a~{\rightarrow}_{(c_1~c_2)}\,b_1~b_2) & = & 0 \\ -{\mathrm{ShowMacroAtomArrow}}({\rightarrow}_{(c_1~c_2)}\,b_1~b_2) & = & 0 \\ +{\mathrm{ShowMacroAtomArrow}}(a~{\rightarrow}_{{c^\ast}}\,b_1~b_2) & = & 0 \\ +{\mathrm{ShowMacroAtomArrow}}(a~{\rightarrow}_{c_1~c_2}\,b_1~b_2) & = & 0 \\ +{\mathrm{ShowMacroAtomArrow}}({\rightarrow}_{c_1~c_2}\,b_1~b_2) & = & 0 \\ \end{array} $$ @@ -1228,7 +1218,6 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\InfixArrow}(a \rightarrow_{c} {}) & = & 0 \\ {\InfixArrow}(a \rightarrow_{c} b) & = & 0 \\ {\InfixArrow}(a \rightarrow_{{c^\ast}} b) & = & 0 \\ {\InfixArrow}(a \rightarrow_{c} b_1~b_2) & = & 0 \\ @@ -1240,7 +1229,6 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\InfixArrow2}(a \Rightarrow_{c} {}) & = & 0 \\ {\InfixArrow2}(a \Rightarrow_{c} b) & = & 0 \\ {\InfixArrow2}(a \Rightarrow_{{c^\ast}} b) & = & 0 \\ {\InfixArrow2}(a \Rightarrow_{c} b_1~b_2) & = & 0 \\ @@ -1252,7 +1240,6 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\AtomArrow}(a~{\rightarrow}_{c}) & = & 0 \\ {\AtomArrow}(a~{\rightarrow}_{c}\,b) & = & 0 \\ {\AtomArrow}(a~{\rightarrow}_{{c^\ast}}\,b) & = & 0 \\ {\AtomArrow}(a~{\rightarrow}_{c}\,b_1~b_2) & = & 0 \\ @@ -1264,7 +1251,6 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\AtomArrow2}(a~{\Rightarrow}_{c}) & = & 0 \\ {\AtomArrow2}(a~{\Rightarrow}_{c}\,b) & = & 0 \\ {\AtomArrow2}(a~{\Rightarrow}_{{c^\ast}}\,b) & = & 0 \\ {\AtomArrow2}(a~{\Rightarrow}_{c}\,b_1~b_2) & = & 0 \\ @@ -1283,7 +1269,6 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\MacroInfixArrow}(a \to_{c} {}) & = & 0 \\ {\MacroInfixArrow}(a \to_{c} b) & = & 0 \\ {\MacroInfixArrow}(a \to_{{c^\ast}} b) & = & 0 \\ {\MacroInfixArrow}(a \to_{c} b_1~b_2) & = & 0 \\ @@ -1295,7 +1280,6 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\MacroAtomArrow}(a \to_{c} {}) & = & 0 \\ {\MacroAtomArrow}(a \to_{c} b) & = & 0 \\ {\MacroAtomArrow}(a \to_{{c^\ast}} b) & = & 0 \\ {\MacroAtomArrow}(a \to_{c} b_1~b_2) & = & 0 \\ @@ -1314,25 +1298,23 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\ShowInfixArrow}(a \rightarrow_{c} ) & = & 0 \\ {\ShowInfixArrow}(a \rightarrow_{c} b) & = & 0 \\ -{\ShowInfixArrow}(a \rightarrow_{({c^\ast})} b) & = & 0 \\ +{\ShowInfixArrow}(a \rightarrow_{{c^\ast}} b) & = & 0 \\ {\ShowInfixArrow}(a \rightarrow_{c} b_1~b_2) & = & 0 \\ -{\ShowInfixArrow}(a \rightarrow_{({c^\ast})} b_1~b_2) & = & 0 \\ -{\ShowInfixArrow}(a \rightarrow_{(c_1~c_2)} b_1~b_2) & = & 0 \\ -{\ShowInfixArrow}({\rightarrow}_{(c_1~c_2)} b_1~b_2) & = & 0 \\ +{\ShowInfixArrow}(a \rightarrow_{{c^\ast}} b_1~b_2) & = & 0 \\ +{\ShowInfixArrow}(a \rightarrow_{c_1~c_2} b_1~b_2) & = & 0 \\ +{\ShowInfixArrow}({\rightarrow}_{c_1~c_2} b_1~b_2) & = & 0 \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\ShowAtomArrow}(a~{\rightarrow}_{c}) & = & 0 \\ {\ShowAtomArrow}(a~{\rightarrow}_{c}\,b) & = & 0 \\ -{\ShowAtomArrow}(a~{\rightarrow}_{({c^\ast})}\,b) & = & 0 \\ +{\ShowAtomArrow}(a~{\rightarrow}_{{c^\ast}}\,b) & = & 0 \\ {\ShowAtomArrow}(a~{\rightarrow}_{c}\,b_1~b_2) & = & 0 \\ -{\ShowAtomArrow}(a~{\rightarrow}_{({c^\ast})}\,b_1~b_2) & = & 0 \\ -{\ShowAtomArrow}(a~{\rightarrow}_{(c_1~c_2)}\,b_1~b_2) & = & 0 \\ -{\ShowAtomArrow}({\rightarrow}_{(c_1~c_2)}\,b_1~b_2) & = & 0 \\ +{\ShowAtomArrow}(a~{\rightarrow}_{{c^\ast}}\,b_1~b_2) & = & 0 \\ +{\ShowAtomArrow}(a~{\rightarrow}_{c_1~c_2}\,b_1~b_2) & = & 0 \\ +{\ShowAtomArrow}({\rightarrow}_{c_1~c_2}\,b_1~b_2) & = & 0 \\ \end{array} $$ @@ -1345,25 +1327,23 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\ShowMacroInfixArrow}(a \to_{c} ) & = & 0 \\ {\ShowMacroInfixArrow}(a \to_{c} b) & = & 0 \\ -{\ShowMacroInfixArrow}(a \to_{({c^\ast})} b) & = & 0 \\ +{\ShowMacroInfixArrow}(a \to_{{c^\ast}} b) & = & 0 \\ {\ShowMacroInfixArrow}(a \to_{c} b_1~b_2) & = & 0 \\ -{\ShowMacroInfixArrow}(a \to_{({c^\ast})} b_1~b_2) & = & 0 \\ -{\ShowMacroInfixArrow}(a \to_{(c_1~c_2)} b_1~b_2) & = & 0 \\ -{\ShowMacroInfixArrow}({\to}_{(c_1~c_2)} b_1~b_2) & = & 0 \\ +{\ShowMacroInfixArrow}(a \to_{{c^\ast}} b_1~b_2) & = & 0 \\ +{\ShowMacroInfixArrow}(a \to_{c_1~c_2} b_1~b_2) & = & 0 \\ +{\ShowMacroInfixArrow}({\to}_{c_1~c_2} b_1~b_2) & = & 0 \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\ShowMacroAtomArrow}(a~{\to}_{c}) & = & 0 \\ {\ShowMacroAtomArrow}(a~{\to}_{c}\,b) & = & 0 \\ -{\ShowMacroAtomArrow}(a~{\to}_{({c^\ast})}\,b) & = & 0 \\ +{\ShowMacroAtomArrow}(a~{\to}_{{c^\ast}}\,b) & = & 0 \\ {\ShowMacroAtomArrow}(a~{\to}_{c}\,b_1~b_2) & = & 0 \\ -{\ShowMacroAtomArrow}(a~{\to}_{({c^\ast})}\,b_1~b_2) & = & 0 \\ -{\ShowMacroAtomArrow}(a~{\to}_{(c_1~c_2)}\,b_1~b_2) & = & 0 \\ -{\ShowMacroAtomArrow}({\to}_{(c_1~c_2)}\,b_1~b_2) & = & 0 \\ +{\ShowMacroAtomArrow}(a~{\to}_{{c^\ast}}\,b_1~b_2) & = & 0 \\ +{\ShowMacroAtomArrow}(a~{\to}_{c_1~c_2}\,b_1~b_2) & = & 0 \\ +{\ShowMacroAtomArrow}({\to}_{c_1~c_2}\,b_1~b_2) & = & 0 \\ \end{array} $$ diff --git a/spectec/test-latex/test.spectec b/spectec/test-latex/test.spectec index f907cc99a..a5e323673 100644 --- a/spectec/test-latex/test.spectec +++ b/spectec/test-latex/test.spectec @@ -34,7 +34,6 @@ syntax AtomArrow = nat? `->_(nat*) nat* hint(macro none) syntax AtomArrow2 = nat? `=>_(nat*) nat* hint(macro none) def $InfixArrow(InfixArrow) : nat -def $InfixArrow(a ->_c) = 0 def $InfixArrow(a ->_c b) = 0 def $InfixArrow(a ->_(c*) b) = 0 def $InfixArrow(a ->_c b_1 b_2) = 0 @@ -43,7 +42,6 @@ def $InfixArrow(a ->_(c_1 c_2) b_1 b_2) = 0 def $InfixArrow(->_(c_1 c_2) b_1 b_2) = 0 def $InfixArrow2(InfixArrow2) : nat -def $InfixArrow2(a =>_c) = 0 def $InfixArrow2(a =>_c b) = 0 def $InfixArrow2(a =>_(c*) b) = 0 def $InfixArrow2(a =>_c b_1 b_2) = 0 @@ -52,7 +50,6 @@ def $InfixArrow2(a =>_(c_1 c_2) b_1 b_2) = 0 def $InfixArrow2(=>_(c_1 c_2) b_1 b_2) = 0 def $AtomArrow(AtomArrow) : nat -def $AtomArrow(a `->_c) = 0 def $AtomArrow(a `->_c b) = 0 def $AtomArrow(a `->_(c*) b) = 0 def $AtomArrow(a `->_c b_1 b_2) = 0 @@ -61,7 +58,6 @@ def $AtomArrow(a `->_(c_1 c_2) b_1 b_2) = 0 def $AtomArrow(`->_(c_1 c_2) b_1 b_2) = 0 def $AtomArrow2(AtomArrow2) : nat -def $AtomArrow2(a `=>_c) = 0 def $AtomArrow2(a `=>_c b) = 0 def $AtomArrow2(a `=>_(c*) b) = 0 def $AtomArrow2(a `=>_c b_1 b_2) = 0 @@ -69,11 +65,10 @@ def $AtomArrow2(a `=>_(c*) b_1 b_2) = 0 def $AtomArrow2(a `=>_(c_1 c_2) b_1 b_2) = 0 def $AtomArrow2(`=>_(c_1 c_2) b_1 b_2) = 0 -syntax MacroInfixArrow = nat* ->_nat* nat* hint(macro "to") -syntax MacroAtomArrow = nat* ->_nat* nat* hint(macro "to") +syntax MacroInfixArrow = nat* ->_(nat*) nat* hint(macro "to") +syntax MacroAtomArrow = nat* ->_(nat*) nat* hint(macro "to") def $MacroInfixArrow(MacroInfixArrow) : nat -def $MacroInfixArrow(a ->_c) = 0 def $MacroInfixArrow(a ->_c b) = 0 def $MacroInfixArrow(a ->_(c*) b) = 0 def $MacroInfixArrow(a ->_c b_1 b_2) = 0 @@ -82,7 +77,6 @@ def $MacroInfixArrow(a ->_(c_1 c_2) b_1 b_2) = 0 def $MacroInfixArrow(->_(c_1 c_2) b_1 b_2) = 0 def $MacroAtomArrow(MacroAtomArrow) : nat -def $MacroAtomArrow(a ->_c) = 0 def $MacroAtomArrow(a ->_c b) = 0 def $MacroAtomArrow(a ->_(c*) b) = 0 def $MacroAtomArrow(a ->_c b_1 b_2) = 0 @@ -90,11 +84,10 @@ def $MacroAtomArrow(a ->_(c*) b_1 b_2) = 0 def $MacroAtomArrow(a ->_(c_1 c_2) b_1 b_2) = 0 def $MacroAtomArrow(->_(c_1 c_2) b_1 b_2) = 0 -syntax ShowInfixArrow = nat* ->_nat* nat* hint(show %0 ->_%2 %%) hint(macro none) -syntax ShowAtomArrow = nat* ->_nat* nat* hint(show %0 `->_%2 %%) hint(macro none) +syntax ShowInfixArrow = nat* ->_(nat*) nat* hint(show %0 ->_%2 %%) hint(macro none) +syntax ShowAtomArrow = nat* ->_(nat*) nat* hint(show %0 `->_%2 %%) hint(macro none) def $ShowInfixArrow(ShowInfixArrow) : nat -def $ShowInfixArrow(a ->_c) = 0 def $ShowInfixArrow(a ->_c b) = 0 def $ShowInfixArrow(a ->_(c*) b) = 0 def $ShowInfixArrow(a ->_c b_1 b_2) = 0 @@ -103,7 +96,6 @@ def $ShowInfixArrow(a ->_(c_1 c_2) b_1 b_2) = 0 def $ShowInfixArrow(->_(c_1 c_2) b_1 b_2) = 0 def $ShowAtomArrow(ShowAtomArrow) : nat -def $ShowAtomArrow(a ->_c) = 0 def $ShowAtomArrow(a ->_c b) = 0 def $ShowAtomArrow(a ->_(c*) b) = 0 def $ShowAtomArrow(a ->_c b_1 b_2) = 0 @@ -111,11 +103,10 @@ def $ShowAtomArrow(a ->_(c*) b_1 b_2) = 0 def $ShowAtomArrow(a ->_(c_1 c_2) b_1 b_2) = 0 def $ShowAtomArrow(->_(c_1 c_2) b_1 b_2) = 0 -syntax ShowMacroInfixArrow = nat* ->_nat* nat* hint(show %0 ->_%2 %%) hint(macro "to") -syntax ShowMacroAtomArrow = nat* ->_nat* nat* hint(show %0 `->_%2 %%) hint(macro "to") +syntax ShowMacroInfixArrow = nat* ->_(nat*) nat* hint(show %0 ->_%2 %%) hint(macro "to") +syntax ShowMacroAtomArrow = nat* ->_(nat*) nat* hint(show %0 `->_%2 %%) hint(macro "to") def $ShowMacroInfixArrow(ShowMacroInfixArrow) : nat -def $ShowMacroInfixArrow(a ->_c) = 0 def $ShowMacroInfixArrow(a ->_c b) = 0 def $ShowMacroInfixArrow(a ->_(c*) b) = 0 def $ShowMacroInfixArrow(a ->_c b_1 b_2) = 0 @@ -124,7 +115,6 @@ def $ShowMacroInfixArrow(a ->_(c_1 c_2) b_1 b_2) = 0 def $ShowMacroInfixArrow(->_(c_1 c_2) b_1 b_2) = 0 def $ShowMacroAtomArrow(ShowMacroAtomArrow) : nat -def $ShowMacroAtomArrow(a ->_c) = 0 def $ShowMacroAtomArrow(a ->_c b) = 0 def $ShowMacroAtomArrow(a ->_(c*) b) = 0 def $ShowMacroAtomArrow(a ->_c b_1 b_2) = 0 From ff645dd9d6340ad428a7f26fd637fc512aa8b292 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Mon, 9 Mar 2026 19:21:54 +0100 Subject: [PATCH 082/235] [spectec] Sync latest --- .../wasm-latest/1.1-syntax.values.spectec | 6 +- .../wasm-latest/1.2-syntax.types.spectec | 2 +- .../1.3-syntax.instructions.spectec | 10 + spectec/Makefile | 3 + spectec/doc/example/output/NanoWasm.pdf | Bin 245508 -> 245508 bytes spectec/test-frontend/TEST.md | 325 +++--- spectec/test-latex/TEST.md | 27 +- spectec/test-middlend/TEST.md | 975 ++++++++++-------- spectec/test-splice/TEST.md | 4 + 9 files changed, 748 insertions(+), 604 deletions(-) diff --git a/specification/wasm-latest/1.1-syntax.values.spectec b/specification/wasm-latest/1.1-syntax.values.spectec index fd1340450..b1bce6633 100644 --- a/specification/wasm-latest/1.1-syntax.values.spectec +++ b/specification/wasm-latest/1.1-syntax.values.spectec @@ -164,7 +164,8 @@ syntax free = ELEMS elemidx*, DATAS dataidx*, LOCALS localidx*, - LABELS labelidx* + LABELS labelidx*, + TAGS tagidx* } @@ -188,6 +189,7 @@ def $free_dataidx(dataidx) : free def $free_localidx(localidx) : free def $free_labelidx(labelidx) : free def $free_externidx(externidx) : free +def $free_tagidx(tagidx) : free def $free_typeidx(typeidx) = {TYPES typeidx} def $free_funcidx(funcidx) = {FUNCS funcidx} @@ -198,8 +200,10 @@ def $free_elemidx(elemidx) = {ELEMS elemidx} def $free_dataidx(dataidx) = {DATAS dataidx} def $free_localidx(localidx) = {LOCALS localidx} def $free_labelidx(labelidx) = {LABELS labelidx} +def $free_tagidx(tagidx) = {TAGS tagidx} def $free_externidx(FUNC funcidx) = $free_funcidx(funcidx) def $free_externidx(GLOBAL globalidx) = $free_globalidx(globalidx) def $free_externidx(TABLE tableidx) = $free_tableidx(tableidx) def $free_externidx(MEM memidx) = $free_memidx(memidx) +def $free_externidx(TAG tagidx) = $free_tagidx(tagidx) diff --git a/specification/wasm-latest/1.2-syntax.types.spectec b/specification/wasm-latest/1.2-syntax.types.spectec index e0ee0b510..b35461961 100644 --- a/specification/wasm-latest/1.2-syntax.types.spectec +++ b/specification/wasm-latest/1.2-syntax.types.spectec @@ -474,7 +474,7 @@ def $expanddt(deftype) = comptype -- if $unrolldt(deftyp ;; Free indices -def $free_addrtype(numtype) : free +def $free_addrtype(addrtype) : free def $free_numtype(numtype) : free def $free_packtype(packtype) : free def $free_lanetype(lanetype) : free diff --git a/specification/wasm-latest/1.3-syntax.instructions.spectec b/specification/wasm-latest/1.3-syntax.instructions.spectec index 3ceac92f7..ae66049aa 100644 --- a/specification/wasm-latest/1.3-syntax.instructions.spectec +++ b/specification/wasm-latest/1.3-syntax.instructions.spectec @@ -415,6 +415,7 @@ def $const(vectype, c) = (VCONST vectype c) def $free_shape(shape) : free def $free_blocktype(blocktype) : free +def $free_catch(catch) : free def $free_instr(instr) : free def $free_block(instr*) : free @@ -426,6 +427,10 @@ def $free_shape(lanetype X dim) = $free_lanetype(lanetype) def $free_blocktype(_RESULT valtype?) = $free_opt($free_valtype(valtype)?) def $free_blocktype(_IDX typeidx) = $free_typeidx(typeidx) +def $free_catch(CATCH tagidx labelidx) = $free_tagidx(tagidx) ++ $free_labelidx(labelidx) +def $free_catch(CATCH_REF tagidx labelidx) = $free_tagidx(tagidx) ++ $free_labelidx(labelidx) +def $free_catch(CATCH_ALL labelidx) = $free_labelidx(labelidx) +def $free_catch(CATCH_ALL_REF labelidx) = $free_labelidx(labelidx) def $free_instr(NOP) = {} def $free_instr(UNREACHABLE) = {} @@ -458,6 +463,11 @@ def $free_instr(RETURN_CALL_REF typeuse) = $free_typeuse(typeuse) def $free_instr(RETURN_CALL_INDIRECT tableidx typeuse) = $free_tableidx(tableidx) ++ $free_typeuse(typeuse) +def $free_instr(THROW tagidx) = $free_tagidx(tagidx) +def $free_instr(THROW_REF) = {} +def $free_instr(TRY_TABLE blocktype catch* instr*) = + $free_blocktype(blocktype) ++ $free_list($free_catch(catch)*) ++ $free_list($free_instr(instr)*) + def $free_instr(CONST numtype numlit) = $free_numtype(numtype) def $free_instr(UNOP numtype unop) = $free_numtype(numtype) def $free_instr(BINOP numtype binop) = $free_numtype(numtype) diff --git a/spectec/Makefile b/spectec/Makefile index a3e7e40ea..ed4ae2bb3 100644 --- a/spectec/Makefile +++ b/spectec/Makefile @@ -109,6 +109,9 @@ spec-clean: check%: (cd ../specification && make $@) +sync%: + (cd ../specification && make $@) + # Cleanup diff --git a/spectec/doc/example/output/NanoWasm.pdf b/spectec/doc/example/output/NanoWasm.pdf index 786215a7e64627e4106e123df03f428f2bfb0583..096d81d5ba6431b13076371450cb3d759c424152 100644 GIT binary patch delta 112 zcmZqq$Jg?Yuc3vpg=q`3@K#n!BLh>@=@MI+!ET%BEA42 int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) } ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:419.1-419.30 +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:420.1-420.30 def $free_instr(instr : instr) : free - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:430.1-430.26 - def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:431.1-431.34 - def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:432.1-432.27 - def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:433.1-433.86 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:435.1-435.26 + def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:436.1-436.34 + def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:437.1-437.27 + def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:438.1-438.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-latest/1.3-syntax.instructions.spectec:435.1-435.92 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:440.1-440.92 def $free_instr{blocktype : blocktype, `instr*` : instr*}(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:436.1-436.91 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:441.1-441.91 def $free_instr{blocktype : blocktype, `instr*` : instr*}(LOOP_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:437.1-438.79 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:442.1-443.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-latest/1.3-syntax.instructions.spectec:440.1-440.56 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:445.1-445.56 def $free_instr{labelidx : labelidx}(BR_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:441.1-441.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:446.1-446.59 def $free_instr{labelidx : labelidx}(BR_IF_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:442.1-443.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:447.1-448.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-latest/1.3-syntax.instructions.spectec:444.1-444.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:449.1-449.64 def $free_instr{labelidx : labelidx}(BR_ON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:445.1-445.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:450.1-450.68 def $free_instr{labelidx : labelidx}(BR_ON_NON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:446.1-447.83 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:451.1-452.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-latest/1.3-syntax.instructions.spectec:448.1-449.83 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:453.1-454.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-latest/1.3-syntax.instructions.spectec:451.1-451.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:456.1-456.55 def $free_instr{funcidx : funcidx}(CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:452.1-452.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:457.1-457.59 def $free_instr{typeuse : typeuse}(CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:453.1-454.53 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:458.1-459.53 def $free_instr{tableidx : tableidx, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:455.1-455.29 - def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:456.1-456.62 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:460.1-460.29 + def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:461.1-461.62 def $free_instr{funcidx : funcidx}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:457.1-457.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:462.1-462.66 def $free_instr{typeuse : typeuse}(RETURN_CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:458.1-459.53 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:463.1-464.53 def $free_instr{tableidx : tableidx, typeuse : typeuse}(RETURN_CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:461.1-461.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:466.1-466.53 + def $free_instr{tagidx : tagidx}(THROW_instr(tagidx)) = $free_tagidx(tagidx) + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:467.1-467.32 + def $free_instr(THROW_REF_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:468.1-469.99 + def $free_instr{blocktype : blocktype, `catch*` : catch*, `instr*` : instr*}(TRY_TABLE_instr(blocktype, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_list($free_catch(catch)*{catch <- `catch*`}) +++ $free_list($free_instr(instr)*{instr <- `instr*`}) + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:471.1-471.63 def $free_instr{numtype : numtype, numlit : num_(numtype)}(CONST_instr(numtype, numlit)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:462.1-462.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:472.1-472.60 def $free_instr{numtype : numtype, unop : unop_(numtype)}(UNOP_instr(numtype, unop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:463.1-463.62 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:473.1-473.62 def $free_instr{numtype : numtype, binop : binop_(numtype)}(BINOP_instr(numtype, binop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:464.1-464.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:474.1-474.64 def $free_instr{numtype : numtype, testop : testop_(numtype)}(TESTOP_instr(numtype, testop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:465.1-465.62 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:475.1-475.62 def $free_instr{numtype : numtype, relop : relop_(numtype)}(RELOP_instr(numtype, relop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:466.1-467.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:476.1-477.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-latest/1.3-syntax.instructions.spectec:469.1-469.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:479.1-479.64 def $free_instr{vectype : vectype, veclit : vec_(vectype)}(VCONST_instr(vectype, veclit)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:470.1-470.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:480.1-480.64 def $free_instr{vectype : vectype, vvunop : vvunop}(VVUNOP_instr(vectype, vvunop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:471.1-471.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:481.1-481.66 def $free_instr{vectype : vectype, vvbinop : vvbinop}(VVBINOP_instr(vectype, vvbinop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:472.1-472.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:482.1-482.68 def $free_instr{vectype : vectype, vvternop : vvternop}(VVTERNOP_instr(vectype, vvternop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:473.1-473.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:483.1-483.68 def $free_instr{vectype : vectype, vvtestop : vvtestop}(VVTESTOP_instr(vectype, vvtestop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:474.1-474.56 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:484.1-484.56 def $free_instr{shape : shape, vunop : vunop_(shape)}(VUNOP_instr(shape, vunop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:475.1-475.58 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:485.1-485.58 def $free_instr{shape : shape, vbinop : vbinop_(shape)}(VBINOP_instr(shape, vbinop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:476.1-476.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:486.1-486.60 def $free_instr{shape : shape, vternop : vternop_(shape)}(VTERNOP_instr(shape, vternop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:477.1-477.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:487.1-487.60 def $free_instr{shape : shape, vtestop : vtestop_(shape)}(VTESTOP_instr(shape, vtestop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:478.1-478.58 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:488.1-488.58 def $free_instr{shape : shape, vrelop : vrelop_(shape)}(VRELOP_instr(shape, vrelop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:479.1-479.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:489.1-489.64 def $free_instr{ishape : ishape, vshiftop : vshiftop_(ishape)}(VSHIFTOP_instr(ishape, vshiftop)) = $free_shape(ishape!`%`_ishape.0) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:480.1-480.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:490.1-490.55 def $free_instr{ishape : ishape}(VBITMASK_instr(ishape)) = $free_shape(ishape!`%`_ishape.0) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:481.1-481.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:491.1-491.66 def $free_instr{bshape : bshape, vswizzlop : vswizzlop_(bshape)}(VSWIZZLOP_instr(bshape, vswizzlop)) = $free_shape(bshape!`%`_bshape.0) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:482.1-482.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:492.1-492.64 def $free_instr{bshape : bshape, `laneidx*` : laneidx*}(VSHUFFLE_instr(bshape, laneidx*{laneidx <- `laneidx*`})) = $free_shape(bshape!`%`_bshape.0) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:483.1-484.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:493.1-494.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-latest/1.3-syntax.instructions.spectec:485.1-486.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:495.1-496.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-latest/1.3-syntax.instructions.spectec:487.1-488.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:497.1-498.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-latest/1.3-syntax.instructions.spectec:489.1-490.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:499.1-500.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-latest/1.3-syntax.instructions.spectec:491.1-492.47 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:501.1-502.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-latest/1.3-syntax.instructions.spectec:493.1-493.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:503.1-503.51 def $free_instr{shape : shape}(VSPLAT_instr(shape)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:494.1-494.70 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:504.1-504.70 def $free_instr{shape : shape, `sx?` : sx?, laneidx : laneidx}(VEXTRACT_LANE_instr(shape, sx?{sx <- `sx?`}, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:495.1-495.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:505.1-505.66 def $free_instr{shape : shape, laneidx : laneidx}(VREPLACE_LANE_instr(shape, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:497.1-497.62 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:507.1-507.62 def $free_instr{heaptype : heaptype}(`REF.NULL`_instr(heaptype)) = $free_heaptype(heaptype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:498.1-498.34 - def $free_instr(`REF.IS_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:499.1-499.38 - def $free_instr(`REF.AS_NON_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:500.1-500.29 - def $free_instr(`REF.EQ`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:501.1-501.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:508.1-508.34 + def $free_instr(`REF.IS_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:509.1-509.38 + def $free_instr(`REF.AS_NON_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:510.1-510.29 + def $free_instr(`REF.EQ`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:511.1-511.59 def $free_instr{reftype : reftype}(`REF.TEST`_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:502.1-502.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:512.1-512.59 def $free_instr{reftype : reftype}(`REF.CAST`_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:503.1-503.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:513.1-513.59 def $free_instr{funcidx : funcidx}(`REF.FUNC`_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:504.1-504.30 - def $free_instr(`REF.I31`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:506.1-506.33 - def $free_instr{sx : sx}(`I31.GET`_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:508.1-508.41 - def $free_instr{typeidx : typeidx}(`STRUCT.NEW`_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:509.1-509.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:514.1-514.30 + def $free_instr(`REF.I31`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:516.1-516.33 + def $free_instr{sx : sx}(`I31.GET`_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:518.1-518.41 + def $free_instr{typeidx : typeidx}(`STRUCT.NEW`_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:519.1-519.69 def $free_instr{typeidx : typeidx}(`STRUCT.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:510.1-510.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:520.1-520.69 def $free_instr{`sx?` : sx?, typeidx : typeidx, u32 : u32}(`STRUCT.GET`_instr(sx?{sx <- `sx?`}, typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:511.1-511.65 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:521.1-521.65 def $free_instr{typeidx : typeidx, u32 : u32}(`STRUCT.SET`_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:513.1-513.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:523.1-523.60 def $free_instr{typeidx : typeidx}(`ARRAY.NEW`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:514.1-514.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:524.1-524.68 def $free_instr{typeidx : typeidx}(`ARRAY.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:515.1-515.70 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:525.1-525.70 def $free_instr{typeidx : typeidx, u32 : u32}(`ARRAY.NEW_FIXED`_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:516.1-517.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:526.1-527.51 def $free_instr{typeidx : typeidx, dataidx : dataidx}(`ARRAY.NEW_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:518.1-519.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:528.1-529.51 def $free_instr{typeidx : typeidx, elemidx : elemidx}(`ARRAY.NEW_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:520.1-520.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:530.1-530.64 def $free_instr{`sx?` : sx?, typeidx : typeidx}(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:521.1-521.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:531.1-531.60 def $free_instr{typeidx : typeidx}(`ARRAY.SET`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:522.1-522.32 - def $free_instr(`ARRAY.LEN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:523.1-523.61 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:532.1-532.32 + def $free_instr(`ARRAY.LEN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:533.1-533.61 def $free_instr{typeidx : typeidx}(`ARRAY.FILL`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:524.1-525.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:534.1-535.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-latest/1.3-syntax.instructions.spectec:526.1-527.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:536.1-537.51 def $free_instr{typeidx : typeidx, dataidx : dataidx}(`ARRAY.INIT_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:528.1-529.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:538.1-539.51 def $free_instr{typeidx : typeidx, elemidx : elemidx}(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:531.1-531.41 - def $free_instr(`EXTERN.CONVERT_ANY`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:532.1-532.41 - def $free_instr(`ANY.CONVERT_EXTERN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:534.1-534.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:541.1-541.41 + def $free_instr(`EXTERN.CONVERT_ANY`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:542.1-542.41 + def $free_instr(`ANY.CONVERT_EXTERN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:544.1-544.63 def $free_instr{localidx : localidx}(`LOCAL.GET`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:535.1-535.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:545.1-545.63 def $free_instr{localidx : localidx}(`LOCAL.SET`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:536.1-536.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:546.1-546.63 def $free_instr{localidx : localidx}(`LOCAL.TEE`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:538.1-538.67 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:548.1-548.67 def $free_instr{globalidx : globalidx}(`GLOBAL.GET`_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:539.1-539.67 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:549.1-549.67 def $free_instr{globalidx : globalidx}(`GLOBAL.SET`_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:541.1-541.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:551.1-551.63 def $free_instr{tableidx : tableidx}(`TABLE.GET`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:542.1-542.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:552.1-552.63 def $free_instr{tableidx : tableidx}(`TABLE.SET`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:543.1-543.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:553.1-553.64 def $free_instr{tableidx : tableidx}(`TABLE.SIZE`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:544.1-544.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:554.1-554.64 def $free_instr{tableidx : tableidx}(`TABLE.GROW`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:545.1-545.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:555.1-555.64 def $free_instr{tableidx : tableidx}(`TABLE.FILL`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:546.1-547.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:556.1-557.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-latest/1.3-syntax.instructions.spectec:548.1-549.53 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:558.1-559.53 def $free_instr{tableidx : tableidx, elemidx : elemidx}(`TABLE.INIT`_instr(tableidx, elemidx)) = $free_tableidx(tableidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:550.1-550.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:560.1-560.60 def $free_instr{elemidx : elemidx}(`ELEM.DROP`_instr(elemidx)) = $free_elemidx(elemidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:552.1-553.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:562.1-563.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-latest/1.3-syntax.instructions.spectec:554.1-555.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:564.1-565.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-latest/1.3-syntax.instructions.spectec:556.1-557.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:566.1-567.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-latest/1.3-syntax.instructions.spectec:558.1-559.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:568.1-569.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-latest/1.3-syntax.instructions.spectec:560.1-561.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:570.1-571.49 def $free_instr{vectype : vectype, memidx : memidx, memarg : memarg}(VSTORE_instr(vectype, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:562.1-563.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:572.1-573.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-latest/1.3-syntax.instructions.spectec:564.1-564.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:574.1-574.59 def $free_instr{memidx : memidx}(`MEMORY.SIZE`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:565.1-565.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:575.1-575.59 def $free_instr{memidx : memidx}(`MEMORY.GROW`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:566.1-566.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:576.1-576.59 def $free_instr{memidx : memidx}(`MEMORY.FILL`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:567.1-568.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:577.1-578.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-latest/1.3-syntax.instructions.spectec:569.1-570.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:579.1-580.49 def $free_instr{memidx : memidx, dataidx : dataidx}(`MEMORY.INIT`_instr(memidx, dataidx)) = $free_memidx(memidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:571.1-571.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:581.1-581.60 def $free_instr{dataidx : dataidx}(`DATA.DROP`_instr(dataidx)) = $free_dataidx(dataidx) -;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:420.1-420.31 +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:421.1-421.31 def $free_block(instr*) : free - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:579.1-580.47 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:589.1-590.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*`})) } @@ -2547,7 +2572,7 @@ def $free_datamode(datamode : datamode) : free ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_datamode{memidx : memidx, expr : expr}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec - def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_data(data : data) : free @@ -2559,9 +2584,9 @@ def $free_elemmode(elemmode : elemmode) : free ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_elemmode{tableidx : tableidx, expr : expr}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec - def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec - def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_elem(elem : elem) : free diff --git a/spectec/test-latex/TEST.md b/spectec/test-latex/TEST.md index f97cd8461..316fcb449 100644 --- a/spectec/test-latex/TEST.md +++ b/spectec/test-latex/TEST.md @@ -2658,7 +2658,8 @@ $$ \mathsf{elems}~{{\mathit{elemidx}}^\ast} \\ \mathsf{datas}~{{\mathit{dataidx}}^\ast} \\ \mathsf{locals}~{{\mathit{localidx}}^\ast} \\ -\mathsf{labels}~{{\mathit{labelidx}}^\ast} \} \\ +\mathsf{labels}~{{\mathit{labelidx}}^\ast} \\ +\mathsf{tags}~{{\mathit{tagidx}}^\ast} \} \\ \end{array} \\ \end{array} $$ @@ -2735,12 +2736,19 @@ $$ \end{array} $$ +$$ +\begin{array}[t]{@{}lcl@{}l@{}} +{\mathrm{free}}_{\mathit{tagidx}}({\mathit{tagidx}}) & = & \{ \mathsf{tags}~{\mathit{tagidx}} \} \\ +\end{array} +$$ + $$ \begin{array}[t]{@{}lcl@{}l@{}} {\mathrm{free}}_{\mathit{externidx}}(\mathsf{func}~{\mathit{funcidx}}) & = & {\mathrm{free}}_{\mathit{funcidx}}({\mathit{funcidx}}) \\ {\mathrm{free}}_{\mathit{externidx}}(\mathsf{global}~{\mathit{globalidx}}) & = & {\mathrm{free}}_{\mathit{globalidx}}({\mathit{globalidx}}) \\ {\mathrm{free}}_{\mathit{externidx}}(\mathsf{table}~{\mathit{tableidx}}) & = & {\mathrm{free}}_{\mathit{tableidx}}({\mathit{tableidx}}) \\ {\mathrm{free}}_{\mathit{externidx}}(\mathsf{mem}~{\mathit{memidx}}) & = & {\mathrm{free}}_{\mathit{memidx}}({\mathit{memidx}}) \\ +{\mathrm{free}}_{\mathit{externidx}}(\mathsf{tag}~{\mathit{tagidx}}) & = & {\mathrm{free}}_{\mathit{tagidx}}({\mathit{tagidx}}) \\ \end{array} $$ @@ -4051,7 +4059,14 @@ $$ \end{array} $$ -\vspace{1ex} +$$ +\begin{array}[t]{@{}lcl@{}l@{}} +{\mathrm{free}}_{\mathit{catch}}(\mathsf{catch}~{\mathit{tagidx}}~{\mathit{labelidx}}) & = & {\mathrm{free}}_{\mathit{tagidx}}({\mathit{tagidx}}) \oplus {\mathrm{free}}_{\mathit{labelidx}}({\mathit{labelidx}}) \\ +{\mathrm{free}}_{\mathit{catch}}(\mathsf{catch\_ref}~{\mathit{tagidx}}~{\mathit{labelidx}}) & = & {\mathrm{free}}_{\mathit{tagidx}}({\mathit{tagidx}}) \oplus {\mathrm{free}}_{\mathit{labelidx}}({\mathit{labelidx}}) \\ +{\mathrm{free}}_{\mathit{catch}}(\mathsf{catch\_all}~{\mathit{labelidx}}) & = & {\mathrm{free}}_{\mathit{labelidx}}({\mathit{labelidx}}) \\ +{\mathrm{free}}_{\mathit{catch}}(\mathsf{catch\_all\_ref}~{\mathit{labelidx}}) & = & {\mathrm{free}}_{\mathit{labelidx}}({\mathit{labelidx}}) \\ +\end{array} +$$ $$ \begin{array}[t]{@{}lcl@{}l@{}} @@ -4106,6 +4121,14 @@ $$ {\mathrm{free}}_{\mathit{tableidx}}({\mathit{tableidx}}) \oplus {\mathrm{free}}_{\mathit{typeuse}}({\mathit{typeuse}}) \\ \end{array} } \\ +{\mathrm{free}}_{\mathit{instr}}(\mathsf{throw}~{\mathit{tagidx}}) & = & {\mathrm{free}}_{\mathit{tagidx}}({\mathit{tagidx}}) \\ +{\mathrm{free}}_{\mathit{instr}}(\mathsf{throw\_ref}) & = & \{ \} \\ +{\mathrm{free}}_{\mathit{instr}}(\mathsf{try\_table}~{\mathit{blocktype}}~{{\mathit{catch}}^\ast}~{{\mathit{instr}}^\ast}) & = & & \\ + \multicolumn{4}{@{}l@{}}{\quad +\begin{array}[t]{@{}l@{}} +{\mathrm{free}}_{\mathit{blocktype}}({\mathit{blocktype}}) \oplus {\mathrm{free}}_{\mathit{list}}({{\mathrm{free}}_{\mathit{catch}}({\mathit{catch}})^\ast}) \oplus {\mathrm{free}}_{\mathit{list}}({{\mathrm{free}}_{\mathit{instr}}({\mathit{instr}})^\ast}) \\ +\end{array} +} \\ {\mathrm{free}}_{\mathit{instr}}({\mathit{numtype}}{.}\mathsf{const}~{\mathit{numlit}}) & = & {\mathrm{free}}_{\mathit{numtype}}({\mathit{numtype}}) \\ {\mathrm{free}}_{\mathit{instr}}({\mathit{numtype}} {.} {\mathit{unop}}) & = & {\mathrm{free}}_{\mathit{numtype}}({\mathit{numtype}}) \\ {\mathrm{free}}_{\mathit{instr}}({\mathit{numtype}} {.} {\mathit{binop}}) & = & {\mathrm{free}}_{\mathit{numtype}}({\mathit{numtype}}) \\ diff --git a/spectec/test-middlend/TEST.md b/spectec/test-middlend/TEST.md index d9bb056de..ad94f8c30 100644 --- a/spectec/test-middlend/TEST.md +++ b/spectec/test-middlend/TEST.md @@ -464,71 +464,77 @@ syntax free = ELEMS elemidx*, DATAS dataidx*, LOCALS localidx*, - LABELS labelidx* + LABELS labelidx*, + TAGS tagidx* } ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_opt(free?) : free ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec - def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_opt{free : free}(?(free)) = free ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:172.1-172.29 +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:173.1-173.29 def $free_list(free*) : free - ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:177.1-177.25 - def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:178.1-178.57 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:178.1-178.25 + def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:179.1-179.57 def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) } ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_typeidx(typeidx : typeidx) : free ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec - def $free_typeidx{typeidx : typeidx}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_typeidx{typeidx : typeidx}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_funcidx(funcidx : funcidx) : free ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec - def $free_funcidx{funcidx : funcidx}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_funcidx{funcidx : funcidx}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_globalidx(globalidx : globalidx) : free ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec - def $free_globalidx{globalidx : globalidx}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_globalidx{globalidx : globalidx}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_tableidx(tableidx : tableidx) : free ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec - def $free_tableidx{tableidx : tableidx}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_tableidx{tableidx : tableidx}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_memidx(memidx : memidx) : free ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec - def $free_memidx{memidx : memidx}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_memidx{memidx : memidx}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_elemidx(elemidx : elemidx) : free ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec - def $free_elemidx{elemidx : elemidx}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []} + def $free_elemidx{elemidx : elemidx}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_dataidx(dataidx : dataidx) : free ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec - def $free_dataidx{dataidx : dataidx}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []} + def $free_dataidx{dataidx : dataidx}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_localidx(localidx : localidx) : free ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec - def $free_localidx{localidx : localidx}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []} + def $free_localidx{localidx : localidx}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_labelidx(labelidx : labelidx) : free ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec - def $free_labelidx{labelidx : labelidx}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]} + def $free_labelidx{labelidx : labelidx}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx], TAGS []} + +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec +def $free_tagidx(tagidx : tagidx) : free + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec + def $free_tagidx{tagidx : tagidx}(tagidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [tagidx]} ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_externidx(externidx : externidx) : free @@ -540,6 +546,8 @@ def $free_externidx(externidx : externidx) : free def $free_externidx{tableidx : tableidx}(TABLE_externidx(tableidx)) = $free_tableidx(tableidx) ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_externidx{memidx : memidx}(MEM_externidx(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec + def $free_externidx{tagidx : tagidx}(TAG_externidx(tagidx)) = $free_tagidx(tagidx) ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax null = @@ -1357,19 +1365,19 @@ def $expanddt(deftype : deftype) : comptype -- if ($unrolldt(deftype) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec -def $free_addrtype(numtype : numtype) : free +def $free_addrtype(addrtype : addrtype) : free ;; ../../../../specification/wasm-latest/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 [], TAGS []} ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_numtype(numtype : numtype) : free ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec - def $free_numtype{numtype : numtype}(numtype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_numtype{numtype : numtype}(numtype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_packtype(packtype : packtype) : free ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec - def $free_packtype{packtype : packtype}(packtype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_packtype{packtype : packtype}(packtype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_lanetype(lanetype : lanetype) : free @@ -1381,7 +1389,7 @@ def $free_lanetype(lanetype : lanetype) : free ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_vectype(vectype : vectype) : free ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec - def $free_vectype{vectype : vectype}(vectype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_vectype{vectype : vectype}(vectype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_consttype(consttype : consttype) : free @@ -1393,14 +1401,14 @@ def $free_consttype(consttype : consttype) : free ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_absheaptype(absheaptype : absheaptype) : free ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec - def $free_absheaptype{absheaptype : absheaptype}(absheaptype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_absheaptype{absheaptype : absheaptype}(absheaptype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_typevar(typevar : typevar) : free ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_typevar{typeidx : typeidx}(_IDX_typevar(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec - def $free_typevar{n : n}(REC_typevar(n)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_typevar{n : n}(REC_typevar(n)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { @@ -1433,7 +1441,7 @@ def $free_valtype(valtype : valtype) : free ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:539.1-539.52 def $free_valtype{reftype : reftype}((reftype : reftype <: valtype)) = $free_reftype(reftype) ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:540.1-540.28 - def $free_valtype(BOT_valtype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_valtype(BOT_valtype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:490.1-490.40 def $free_resulttype(resulttype : resulttype) : free @@ -1490,17 +1498,17 @@ def $free_globaltype(globaltype : globaltype) : free ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_memtype(memtype : memtype) : free ;; ../../../../specification/wasm-latest/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-latest/1.2-syntax.types.spectec def $free_tabletype(tabletype : tabletype) : free ;; ../../../../specification/wasm-latest/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-latest/1.2-syntax.types.spectec def $free_datatype(datatype : datatype) : free ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec - def $free_datatype(OK_datatype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_datatype(OK_datatype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_elemtype(elemtype : elemtype) : free @@ -2201,230 +2209,247 @@ def $free_blocktype(blocktype : blocktype) : free ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_blocktype{typeidx : typeidx}(_IDX_blocktype(typeidx)) = $free_typeidx(typeidx) +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec +def $free_catch(catch : catch) : free + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec + def $free_catch{tagidx : tagidx, labelidx : labelidx}(CATCH_catch(tagidx, labelidx)) = $free_tagidx(tagidx) +++ $free_labelidx(labelidx) + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec + def $free_catch{tagidx : tagidx, labelidx : labelidx}(CATCH_REF_catch(tagidx, labelidx)) = $free_tagidx(tagidx) +++ $free_labelidx(labelidx) + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec + def $free_catch{labelidx : labelidx}(CATCH_ALL_catch(labelidx)) = $free_labelidx(labelidx) + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec + def $free_catch{labelidx : labelidx}(CATCH_ALL_REF_catch(labelidx)) = $free_labelidx(labelidx) + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:574.1-574.44 +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:584.1-584.44 def $shift_labelidxs(labelidx*) : labelidx* - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:575.1-575.32 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:585.1-585.32 def $shift_labelidxs([]) = [] - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:576.1-576.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:586.1-586.66 def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:577.1-577.91 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:587.1-587.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-latest/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:419.1-419.30 +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:420.1-420.30 def $free_instr(instr : instr) : free - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:430.1-430.26 - def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:431.1-431.34 - def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:432.1-432.27 - def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:433.1-433.86 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:435.1-435.26 + def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:436.1-436.34 + def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:437.1-437.27 + def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:438.1-438.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-latest/1.3-syntax.instructions.spectec:435.1-435.92 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:440.1-440.92 def $free_instr{blocktype : blocktype, `instr*` : instr*}(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:436.1-436.91 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:441.1-441.91 def $free_instr{blocktype : blocktype, `instr*` : instr*}(LOOP_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:437.1-438.79 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:442.1-443.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-latest/1.3-syntax.instructions.spectec:440.1-440.56 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:445.1-445.56 def $free_instr{labelidx : labelidx}(BR_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:441.1-441.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:446.1-446.59 def $free_instr{labelidx : labelidx}(BR_IF_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:442.1-443.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:447.1-448.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-latest/1.3-syntax.instructions.spectec:444.1-444.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:449.1-449.64 def $free_instr{labelidx : labelidx}(BR_ON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:445.1-445.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:450.1-450.68 def $free_instr{labelidx : labelidx}(BR_ON_NON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:446.1-447.83 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:451.1-452.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-latest/1.3-syntax.instructions.spectec:448.1-449.83 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:453.1-454.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-latest/1.3-syntax.instructions.spectec:451.1-451.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:456.1-456.55 def $free_instr{funcidx : funcidx}(CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:452.1-452.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:457.1-457.59 def $free_instr{typeuse : typeuse}(CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:453.1-454.53 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:458.1-459.53 def $free_instr{tableidx : tableidx, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:455.1-455.29 - def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:456.1-456.62 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:460.1-460.29 + def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:461.1-461.62 def $free_instr{funcidx : funcidx}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:457.1-457.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:462.1-462.66 def $free_instr{typeuse : typeuse}(RETURN_CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:458.1-459.53 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:463.1-464.53 def $free_instr{tableidx : tableidx, typeuse : typeuse}(RETURN_CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:461.1-461.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:466.1-466.53 + def $free_instr{tagidx : tagidx}(THROW_instr(tagidx)) = $free_tagidx(tagidx) + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:467.1-467.32 + def $free_instr(THROW_REF_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:468.1-469.99 + def $free_instr{blocktype : blocktype, `catch*` : catch*, `instr*` : instr*}(TRY_TABLE_instr(blocktype, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_list($free_catch(catch)*{catch <- `catch*`}) +++ $free_list($free_instr(instr)*{instr <- `instr*`}) + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:471.1-471.63 def $free_instr{numtype : numtype, numlit : num_(numtype)}(CONST_instr(numtype, numlit)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:462.1-462.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:472.1-472.60 def $free_instr{numtype : numtype, unop : unop_(numtype)}(UNOP_instr(numtype, unop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:463.1-463.62 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:473.1-473.62 def $free_instr{numtype : numtype, binop : binop_(numtype)}(BINOP_instr(numtype, binop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:464.1-464.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:474.1-474.64 def $free_instr{numtype : numtype, testop : testop_(numtype)}(TESTOP_instr(numtype, testop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:465.1-465.62 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:475.1-475.62 def $free_instr{numtype : numtype, relop : relop_(numtype)}(RELOP_instr(numtype, relop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:466.1-467.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:476.1-477.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-latest/1.3-syntax.instructions.spectec:469.1-469.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:479.1-479.64 def $free_instr{vectype : vectype, veclit : vec_(vectype)}(VCONST_instr(vectype, veclit)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:470.1-470.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:480.1-480.64 def $free_instr{vectype : vectype, vvunop : vvunop}(VVUNOP_instr(vectype, vvunop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:471.1-471.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:481.1-481.66 def $free_instr{vectype : vectype, vvbinop : vvbinop}(VVBINOP_instr(vectype, vvbinop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:472.1-472.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:482.1-482.68 def $free_instr{vectype : vectype, vvternop : vvternop}(VVTERNOP_instr(vectype, vvternop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:473.1-473.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:483.1-483.68 def $free_instr{vectype : vectype, vvtestop : vvtestop}(VVTESTOP_instr(vectype, vvtestop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:474.1-474.56 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:484.1-484.56 def $free_instr{shape : shape, vunop : vunop_(shape)}(VUNOP_instr(shape, vunop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:475.1-475.58 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:485.1-485.58 def $free_instr{shape : shape, vbinop : vbinop_(shape)}(VBINOP_instr(shape, vbinop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:476.1-476.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:486.1-486.60 def $free_instr{shape : shape, vternop : vternop_(shape)}(VTERNOP_instr(shape, vternop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:477.1-477.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:487.1-487.60 def $free_instr{shape : shape, vtestop : vtestop_(shape)}(VTESTOP_instr(shape, vtestop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:478.1-478.58 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:488.1-488.58 def $free_instr{shape : shape, vrelop : vrelop_(shape)}(VRELOP_instr(shape, vrelop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:479.1-479.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:489.1-489.64 def $free_instr{ishape : ishape, vshiftop : vshiftop_(ishape)}(VSHIFTOP_instr(ishape, vshiftop)) = $free_shape(ishape!`%`_ishape.0) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:480.1-480.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:490.1-490.55 def $free_instr{ishape : ishape}(VBITMASK_instr(ishape)) = $free_shape(ishape!`%`_ishape.0) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:481.1-481.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:491.1-491.66 def $free_instr{bshape : bshape, vswizzlop : vswizzlop_(bshape)}(VSWIZZLOP_instr(bshape, vswizzlop)) = $free_shape(bshape!`%`_bshape.0) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:482.1-482.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:492.1-492.64 def $free_instr{bshape : bshape, `laneidx*` : laneidx*}(VSHUFFLE_instr(bshape, laneidx*{laneidx <- `laneidx*`})) = $free_shape(bshape!`%`_bshape.0) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:483.1-484.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:493.1-494.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-latest/1.3-syntax.instructions.spectec:485.1-486.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:495.1-496.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-latest/1.3-syntax.instructions.spectec:487.1-488.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:497.1-498.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-latest/1.3-syntax.instructions.spectec:489.1-490.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:499.1-500.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-latest/1.3-syntax.instructions.spectec:491.1-492.47 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:501.1-502.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-latest/1.3-syntax.instructions.spectec:493.1-493.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:503.1-503.51 def $free_instr{shape : shape}(VSPLAT_instr(shape)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:494.1-494.70 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:504.1-504.70 def $free_instr{shape : shape, `sx?` : sx?, laneidx : laneidx}(VEXTRACT_LANE_instr(shape, sx?{sx <- `sx?`}, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:495.1-495.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:505.1-505.66 def $free_instr{shape : shape, laneidx : laneidx}(VREPLACE_LANE_instr(shape, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:497.1-497.62 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:507.1-507.62 def $free_instr{heaptype : heaptype}(`REF.NULL`_instr(heaptype)) = $free_heaptype(heaptype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:498.1-498.34 - def $free_instr(`REF.IS_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:499.1-499.38 - def $free_instr(`REF.AS_NON_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:500.1-500.29 - def $free_instr(`REF.EQ`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:501.1-501.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:508.1-508.34 + def $free_instr(`REF.IS_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:509.1-509.38 + def $free_instr(`REF.AS_NON_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:510.1-510.29 + def $free_instr(`REF.EQ`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:511.1-511.59 def $free_instr{reftype : reftype}(`REF.TEST`_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:502.1-502.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:512.1-512.59 def $free_instr{reftype : reftype}(`REF.CAST`_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:503.1-503.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:513.1-513.59 def $free_instr{funcidx : funcidx}(`REF.FUNC`_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:504.1-504.30 - def $free_instr(`REF.I31`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:506.1-506.33 - def $free_instr{sx : sx}(`I31.GET`_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:508.1-508.41 - def $free_instr{typeidx : typeidx}(`STRUCT.NEW`_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:509.1-509.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:514.1-514.30 + def $free_instr(`REF.I31`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:516.1-516.33 + def $free_instr{sx : sx}(`I31.GET`_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:518.1-518.41 + def $free_instr{typeidx : typeidx}(`STRUCT.NEW`_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:519.1-519.69 def $free_instr{typeidx : typeidx}(`STRUCT.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:510.1-510.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:520.1-520.69 def $free_instr{`sx?` : sx?, typeidx : typeidx, u32 : u32}(`STRUCT.GET`_instr(sx?{sx <- `sx?`}, typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:511.1-511.65 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:521.1-521.65 def $free_instr{typeidx : typeidx, u32 : u32}(`STRUCT.SET`_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:513.1-513.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:523.1-523.60 def $free_instr{typeidx : typeidx}(`ARRAY.NEW`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:514.1-514.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:524.1-524.68 def $free_instr{typeidx : typeidx}(`ARRAY.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:515.1-515.70 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:525.1-525.70 def $free_instr{typeidx : typeidx, u32 : u32}(`ARRAY.NEW_FIXED`_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:516.1-517.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:526.1-527.51 def $free_instr{typeidx : typeidx, dataidx : dataidx}(`ARRAY.NEW_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:518.1-519.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:528.1-529.51 def $free_instr{typeidx : typeidx, elemidx : elemidx}(`ARRAY.NEW_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:520.1-520.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:530.1-530.64 def $free_instr{`sx?` : sx?, typeidx : typeidx}(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:521.1-521.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:531.1-531.60 def $free_instr{typeidx : typeidx}(`ARRAY.SET`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:522.1-522.32 - def $free_instr(`ARRAY.LEN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:523.1-523.61 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:532.1-532.32 + def $free_instr(`ARRAY.LEN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:533.1-533.61 def $free_instr{typeidx : typeidx}(`ARRAY.FILL`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:524.1-525.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:534.1-535.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-latest/1.3-syntax.instructions.spectec:526.1-527.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:536.1-537.51 def $free_instr{typeidx : typeidx, dataidx : dataidx}(`ARRAY.INIT_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:528.1-529.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:538.1-539.51 def $free_instr{typeidx : typeidx, elemidx : elemidx}(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:531.1-531.41 - def $free_instr(`EXTERN.CONVERT_ANY`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:532.1-532.41 - def $free_instr(`ANY.CONVERT_EXTERN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:534.1-534.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:541.1-541.41 + def $free_instr(`EXTERN.CONVERT_ANY`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:542.1-542.41 + def $free_instr(`ANY.CONVERT_EXTERN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:544.1-544.63 def $free_instr{localidx : localidx}(`LOCAL.GET`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:535.1-535.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:545.1-545.63 def $free_instr{localidx : localidx}(`LOCAL.SET`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:536.1-536.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:546.1-546.63 def $free_instr{localidx : localidx}(`LOCAL.TEE`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:538.1-538.67 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:548.1-548.67 def $free_instr{globalidx : globalidx}(`GLOBAL.GET`_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:539.1-539.67 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:549.1-549.67 def $free_instr{globalidx : globalidx}(`GLOBAL.SET`_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:541.1-541.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:551.1-551.63 def $free_instr{tableidx : tableidx}(`TABLE.GET`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:542.1-542.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:552.1-552.63 def $free_instr{tableidx : tableidx}(`TABLE.SET`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:543.1-543.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:553.1-553.64 def $free_instr{tableidx : tableidx}(`TABLE.SIZE`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:544.1-544.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:554.1-554.64 def $free_instr{tableidx : tableidx}(`TABLE.GROW`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:545.1-545.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:555.1-555.64 def $free_instr{tableidx : tableidx}(`TABLE.FILL`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:546.1-547.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:556.1-557.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-latest/1.3-syntax.instructions.spectec:548.1-549.53 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:558.1-559.53 def $free_instr{tableidx : tableidx, elemidx : elemidx}(`TABLE.INIT`_instr(tableidx, elemidx)) = $free_tableidx(tableidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:550.1-550.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:560.1-560.60 def $free_instr{elemidx : elemidx}(`ELEM.DROP`_instr(elemidx)) = $free_elemidx(elemidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:552.1-553.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:562.1-563.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-latest/1.3-syntax.instructions.spectec:554.1-555.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:564.1-565.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-latest/1.3-syntax.instructions.spectec:556.1-557.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:566.1-567.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-latest/1.3-syntax.instructions.spectec:558.1-559.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:568.1-569.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-latest/1.3-syntax.instructions.spectec:560.1-561.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:570.1-571.49 def $free_instr{vectype : vectype, memidx : memidx, memarg : memarg}(VSTORE_instr(vectype, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:562.1-563.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:572.1-573.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-latest/1.3-syntax.instructions.spectec:564.1-564.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:574.1-574.59 def $free_instr{memidx : memidx}(`MEMORY.SIZE`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:565.1-565.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:575.1-575.59 def $free_instr{memidx : memidx}(`MEMORY.GROW`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:566.1-566.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:576.1-576.59 def $free_instr{memidx : memidx}(`MEMORY.FILL`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:567.1-568.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:577.1-578.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-latest/1.3-syntax.instructions.spectec:569.1-570.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:579.1-580.49 def $free_instr{memidx : memidx, dataidx : dataidx}(`MEMORY.INIT`_instr(memidx, dataidx)) = $free_memidx(memidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:571.1-571.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:581.1-581.60 def $free_instr{dataidx : dataidx}(`DATA.DROP`_instr(dataidx)) = $free_dataidx(dataidx) -;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:420.1-420.31 +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:421.1-421.31 def $free_block(instr*) : free - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:579.1-580.47 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:589.1-590.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*`})) } @@ -2537,7 +2562,7 @@ def $free_datamode(datamode : datamode) : free ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_datamode{memidx : memidx, expr : expr}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec - def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_data(data : data) : free @@ -2549,9 +2574,9 @@ def $free_elemmode(elemmode : elemmode) : free ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_elemmode{tableidx : tableidx, expr : expr}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec - def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec - def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_elem(elem : elem) : free @@ -11847,71 +11872,77 @@ syntax free = ELEMS elemidx*, DATAS dataidx*, LOCALS localidx*, - LABELS labelidx* + LABELS labelidx*, + TAGS tagidx* } ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_opt(free?) : free ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec - def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_opt{free : free}(?(free)) = free ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:172.1-172.29 +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:173.1-173.29 def $free_list(free*) : free - ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:177.1-177.25 - def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:178.1-178.57 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:178.1-178.25 + def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:179.1-179.57 def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) } ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_typeidx(typeidx : typeidx) : free ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec - def $free_typeidx{typeidx : typeidx}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_typeidx{typeidx : typeidx}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_funcidx(funcidx : funcidx) : free ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec - def $free_funcidx{funcidx : funcidx}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_funcidx{funcidx : funcidx}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_globalidx(globalidx : globalidx) : free ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec - def $free_globalidx{globalidx : globalidx}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_globalidx{globalidx : globalidx}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_tableidx(tableidx : tableidx) : free ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec - def $free_tableidx{tableidx : tableidx}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_tableidx{tableidx : tableidx}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_memidx(memidx : memidx) : free ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec - def $free_memidx{memidx : memidx}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_memidx{memidx : memidx}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_elemidx(elemidx : elemidx) : free ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec - def $free_elemidx{elemidx : elemidx}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []} + def $free_elemidx{elemidx : elemidx}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_dataidx(dataidx : dataidx) : free ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec - def $free_dataidx{dataidx : dataidx}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []} + def $free_dataidx{dataidx : dataidx}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_localidx(localidx : localidx) : free ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec - def $free_localidx{localidx : localidx}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []} + def $free_localidx{localidx : localidx}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_labelidx(labelidx : labelidx) : free ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec - def $free_labelidx{labelidx : labelidx}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]} + def $free_labelidx{labelidx : labelidx}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx], TAGS []} + +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec +def $free_tagidx(tagidx : tagidx) : free + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec + def $free_tagidx{tagidx : tagidx}(tagidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [tagidx]} ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_externidx(externidx : externidx) : free @@ -11923,6 +11954,8 @@ def $free_externidx(externidx : externidx) : free def $free_externidx{tableidx : tableidx}(TABLE_externidx(tableidx)) = $free_tableidx(tableidx) ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_externidx{memidx : memidx}(MEM_externidx(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec + def $free_externidx{tagidx : tagidx}(TAG_externidx(tagidx)) = $free_tagidx(tagidx) ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax null = @@ -12747,19 +12780,19 @@ def $expanddt(deftype : deftype) : comptype -- if ($unrolldt(deftype) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec -def $free_addrtype(numtype : numtype) : free +def $free_addrtype(addrtype : addrtype) : free ;; ../../../../specification/wasm-latest/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 [], TAGS []} ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_numtype(numtype : numtype) : free ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec - def $free_numtype{numtype : numtype}(numtype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_numtype{numtype : numtype}(numtype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_packtype(packtype : packtype) : free ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec - def $free_packtype{packtype : packtype}(packtype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_packtype{packtype : packtype}(packtype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_lanetype(lanetype : lanetype) : free @@ -12771,7 +12804,7 @@ def $free_lanetype(lanetype : lanetype) : free ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_vectype(vectype : vectype) : free ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec - def $free_vectype{vectype : vectype}(vectype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_vectype{vectype : vectype}(vectype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_consttype(consttype : consttype) : free @@ -12783,14 +12816,14 @@ def $free_consttype(consttype : consttype) : free ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_absheaptype(absheaptype : absheaptype) : free ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec - def $free_absheaptype{absheaptype : absheaptype}(absheaptype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_absheaptype{absheaptype : absheaptype}(absheaptype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_typevar(typevar : typevar) : free ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_typevar{typeidx : typeidx}(_IDX_typevar(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec - def $free_typevar{n : n}(REC_typevar(n)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_typevar{n : n}(REC_typevar(n)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { @@ -12823,7 +12856,7 @@ def $free_valtype(valtype : valtype) : free ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:539.1-539.52 def $free_valtype{reftype : reftype}((reftype : reftype <: valtype)) = $free_reftype(reftype) ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:540.1-540.28 - def $free_valtype(BOT_valtype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_valtype(BOT_valtype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:490.1-490.40 def $free_resulttype(resulttype : resulttype) : free @@ -12880,17 +12913,17 @@ def $free_globaltype(globaltype : globaltype) : free ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_memtype(memtype : memtype) : free ;; ../../../../specification/wasm-latest/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-latest/1.2-syntax.types.spectec def $free_tabletype(tabletype : tabletype) : free ;; ../../../../specification/wasm-latest/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-latest/1.2-syntax.types.spectec def $free_datatype(datatype : datatype) : free ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec - def $free_datatype(OK_datatype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_datatype(OK_datatype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_elemtype(elemtype : elemtype) : free @@ -13591,230 +13624,247 @@ def $free_blocktype(blocktype : blocktype) : free ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_blocktype{typeidx : typeidx}(_IDX_blocktype(typeidx)) = $free_typeidx(typeidx) +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec +def $free_catch(catch : catch) : free + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec + def $free_catch{tagidx : tagidx, labelidx : labelidx}(CATCH_catch(tagidx, labelidx)) = $free_tagidx(tagidx) +++ $free_labelidx(labelidx) + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec + def $free_catch{tagidx : tagidx, labelidx : labelidx}(CATCH_REF_catch(tagidx, labelidx)) = $free_tagidx(tagidx) +++ $free_labelidx(labelidx) + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec + def $free_catch{labelidx : labelidx}(CATCH_ALL_catch(labelidx)) = $free_labelidx(labelidx) + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec + def $free_catch{labelidx : labelidx}(CATCH_ALL_REF_catch(labelidx)) = $free_labelidx(labelidx) + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:574.1-574.44 +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:584.1-584.44 def $shift_labelidxs(labelidx*) : labelidx* - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:575.1-575.32 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:585.1-585.32 def $shift_labelidxs([]) = [] - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:576.1-576.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:586.1-586.66 def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:577.1-577.91 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:587.1-587.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-latest/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:419.1-419.30 +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:420.1-420.30 def $free_instr(instr : instr) : free - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:430.1-430.26 - def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:431.1-431.34 - def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:432.1-432.27 - def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:433.1-433.86 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:435.1-435.26 + def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:436.1-436.34 + def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:437.1-437.27 + def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:438.1-438.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-latest/1.3-syntax.instructions.spectec:435.1-435.92 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:440.1-440.92 def $free_instr{blocktype : blocktype, `instr*` : instr*}(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:436.1-436.91 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:441.1-441.91 def $free_instr{blocktype : blocktype, `instr*` : instr*}(LOOP_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:437.1-438.79 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:442.1-443.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-latest/1.3-syntax.instructions.spectec:440.1-440.56 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:445.1-445.56 def $free_instr{labelidx : labelidx}(BR_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:441.1-441.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:446.1-446.59 def $free_instr{labelidx : labelidx}(BR_IF_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:442.1-443.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:447.1-448.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-latest/1.3-syntax.instructions.spectec:444.1-444.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:449.1-449.64 def $free_instr{labelidx : labelidx}(BR_ON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:445.1-445.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:450.1-450.68 def $free_instr{labelidx : labelidx}(BR_ON_NON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:446.1-447.83 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:451.1-452.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-latest/1.3-syntax.instructions.spectec:448.1-449.83 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:453.1-454.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-latest/1.3-syntax.instructions.spectec:451.1-451.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:456.1-456.55 def $free_instr{funcidx : funcidx}(CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:452.1-452.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:457.1-457.59 def $free_instr{typeuse : typeuse}(CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:453.1-454.53 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:458.1-459.53 def $free_instr{tableidx : tableidx, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:455.1-455.29 - def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:456.1-456.62 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:460.1-460.29 + def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:461.1-461.62 def $free_instr{funcidx : funcidx}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:457.1-457.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:462.1-462.66 def $free_instr{typeuse : typeuse}(RETURN_CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:458.1-459.53 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:463.1-464.53 def $free_instr{tableidx : tableidx, typeuse : typeuse}(RETURN_CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:461.1-461.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:466.1-466.53 + def $free_instr{tagidx : tagidx}(THROW_instr(tagidx)) = $free_tagidx(tagidx) + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:467.1-467.32 + def $free_instr(THROW_REF_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:468.1-469.99 + def $free_instr{blocktype : blocktype, `catch*` : catch*, `instr*` : instr*}(TRY_TABLE_instr(blocktype, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_list($free_catch(catch)*{catch <- `catch*`}) +++ $free_list($free_instr(instr)*{instr <- `instr*`}) + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:471.1-471.63 def $free_instr{numtype : numtype, numlit : num_(numtype)}(CONST_instr(numtype, numlit)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:462.1-462.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:472.1-472.60 def $free_instr{numtype : numtype, unop : unop_(numtype)}(UNOP_instr(numtype, unop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:463.1-463.62 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:473.1-473.62 def $free_instr{numtype : numtype, binop : binop_(numtype)}(BINOP_instr(numtype, binop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:464.1-464.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:474.1-474.64 def $free_instr{numtype : numtype, testop : testop_(numtype)}(TESTOP_instr(numtype, testop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:465.1-465.62 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:475.1-475.62 def $free_instr{numtype : numtype, relop : relop_(numtype)}(RELOP_instr(numtype, relop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:466.1-467.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:476.1-477.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-latest/1.3-syntax.instructions.spectec:469.1-469.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:479.1-479.64 def $free_instr{vectype : vectype, veclit : vec_(vectype)}(VCONST_instr(vectype, veclit)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:470.1-470.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:480.1-480.64 def $free_instr{vectype : vectype, vvunop : vvunop}(VVUNOP_instr(vectype, vvunop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:471.1-471.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:481.1-481.66 def $free_instr{vectype : vectype, vvbinop : vvbinop}(VVBINOP_instr(vectype, vvbinop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:472.1-472.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:482.1-482.68 def $free_instr{vectype : vectype, vvternop : vvternop}(VVTERNOP_instr(vectype, vvternop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:473.1-473.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:483.1-483.68 def $free_instr{vectype : vectype, vvtestop : vvtestop}(VVTESTOP_instr(vectype, vvtestop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:474.1-474.56 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:484.1-484.56 def $free_instr{shape : shape, vunop : vunop_(shape)}(VUNOP_instr(shape, vunop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:475.1-475.58 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:485.1-485.58 def $free_instr{shape : shape, vbinop : vbinop_(shape)}(VBINOP_instr(shape, vbinop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:476.1-476.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:486.1-486.60 def $free_instr{shape : shape, vternop : vternop_(shape)}(VTERNOP_instr(shape, vternop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:477.1-477.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:487.1-487.60 def $free_instr{shape : shape, vtestop : vtestop_(shape)}(VTESTOP_instr(shape, vtestop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:478.1-478.58 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:488.1-488.58 def $free_instr{shape : shape, vrelop : vrelop_(shape)}(VRELOP_instr(shape, vrelop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:479.1-479.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:489.1-489.64 def $free_instr{ishape : ishape, vshiftop : vshiftop_(ishape)}(VSHIFTOP_instr(ishape, vshiftop)) = $free_shape(ishape!`%`_ishape.0) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:480.1-480.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:490.1-490.55 def $free_instr{ishape : ishape}(VBITMASK_instr(ishape)) = $free_shape(ishape!`%`_ishape.0) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:481.1-481.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:491.1-491.66 def $free_instr{bshape : bshape, vswizzlop : vswizzlop_(bshape)}(VSWIZZLOP_instr(bshape, vswizzlop)) = $free_shape(bshape!`%`_bshape.0) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:482.1-482.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:492.1-492.64 def $free_instr{bshape : bshape, `laneidx*` : laneidx*}(VSHUFFLE_instr(bshape, laneidx*{laneidx <- `laneidx*`})) = $free_shape(bshape!`%`_bshape.0) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:483.1-484.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:493.1-494.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-latest/1.3-syntax.instructions.spectec:485.1-486.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:495.1-496.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-latest/1.3-syntax.instructions.spectec:487.1-488.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:497.1-498.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-latest/1.3-syntax.instructions.spectec:489.1-490.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:499.1-500.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-latest/1.3-syntax.instructions.spectec:491.1-492.47 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:501.1-502.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-latest/1.3-syntax.instructions.spectec:493.1-493.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:503.1-503.51 def $free_instr{shape : shape}(VSPLAT_instr(shape)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:494.1-494.70 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:504.1-504.70 def $free_instr{shape : shape, `sx?` : sx?, laneidx : laneidx}(VEXTRACT_LANE_instr(shape, sx?{sx <- `sx?`}, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:495.1-495.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:505.1-505.66 def $free_instr{shape : shape, laneidx : laneidx}(VREPLACE_LANE_instr(shape, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:497.1-497.62 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:507.1-507.62 def $free_instr{heaptype : heaptype}(`REF.NULL`_instr(heaptype)) = $free_heaptype(heaptype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:498.1-498.34 - def $free_instr(`REF.IS_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:499.1-499.38 - def $free_instr(`REF.AS_NON_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:500.1-500.29 - def $free_instr(`REF.EQ`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:501.1-501.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:508.1-508.34 + def $free_instr(`REF.IS_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:509.1-509.38 + def $free_instr(`REF.AS_NON_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:510.1-510.29 + def $free_instr(`REF.EQ`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:511.1-511.59 def $free_instr{reftype : reftype}(`REF.TEST`_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:502.1-502.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:512.1-512.59 def $free_instr{reftype : reftype}(`REF.CAST`_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:503.1-503.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:513.1-513.59 def $free_instr{funcidx : funcidx}(`REF.FUNC`_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:504.1-504.30 - def $free_instr(`REF.I31`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:506.1-506.33 - def $free_instr{sx : sx}(`I31.GET`_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:508.1-508.41 - def $free_instr{typeidx : typeidx}(`STRUCT.NEW`_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:509.1-509.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:514.1-514.30 + def $free_instr(`REF.I31`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:516.1-516.33 + def $free_instr{sx : sx}(`I31.GET`_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:518.1-518.41 + def $free_instr{typeidx : typeidx}(`STRUCT.NEW`_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:519.1-519.69 def $free_instr{typeidx : typeidx}(`STRUCT.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:510.1-510.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:520.1-520.69 def $free_instr{`sx?` : sx?, typeidx : typeidx, u32 : u32}(`STRUCT.GET`_instr(sx?{sx <- `sx?`}, typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:511.1-511.65 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:521.1-521.65 def $free_instr{typeidx : typeidx, u32 : u32}(`STRUCT.SET`_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:513.1-513.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:523.1-523.60 def $free_instr{typeidx : typeidx}(`ARRAY.NEW`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:514.1-514.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:524.1-524.68 def $free_instr{typeidx : typeidx}(`ARRAY.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:515.1-515.70 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:525.1-525.70 def $free_instr{typeidx : typeidx, u32 : u32}(`ARRAY.NEW_FIXED`_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:516.1-517.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:526.1-527.51 def $free_instr{typeidx : typeidx, dataidx : dataidx}(`ARRAY.NEW_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:518.1-519.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:528.1-529.51 def $free_instr{typeidx : typeidx, elemidx : elemidx}(`ARRAY.NEW_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:520.1-520.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:530.1-530.64 def $free_instr{`sx?` : sx?, typeidx : typeidx}(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:521.1-521.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:531.1-531.60 def $free_instr{typeidx : typeidx}(`ARRAY.SET`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:522.1-522.32 - def $free_instr(`ARRAY.LEN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:523.1-523.61 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:532.1-532.32 + def $free_instr(`ARRAY.LEN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:533.1-533.61 def $free_instr{typeidx : typeidx}(`ARRAY.FILL`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:524.1-525.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:534.1-535.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-latest/1.3-syntax.instructions.spectec:526.1-527.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:536.1-537.51 def $free_instr{typeidx : typeidx, dataidx : dataidx}(`ARRAY.INIT_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:528.1-529.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:538.1-539.51 def $free_instr{typeidx : typeidx, elemidx : elemidx}(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:531.1-531.41 - def $free_instr(`EXTERN.CONVERT_ANY`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:532.1-532.41 - def $free_instr(`ANY.CONVERT_EXTERN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:534.1-534.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:541.1-541.41 + def $free_instr(`EXTERN.CONVERT_ANY`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:542.1-542.41 + def $free_instr(`ANY.CONVERT_EXTERN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:544.1-544.63 def $free_instr{localidx : localidx}(`LOCAL.GET`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:535.1-535.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:545.1-545.63 def $free_instr{localidx : localidx}(`LOCAL.SET`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:536.1-536.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:546.1-546.63 def $free_instr{localidx : localidx}(`LOCAL.TEE`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:538.1-538.67 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:548.1-548.67 def $free_instr{globalidx : globalidx}(`GLOBAL.GET`_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:539.1-539.67 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:549.1-549.67 def $free_instr{globalidx : globalidx}(`GLOBAL.SET`_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:541.1-541.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:551.1-551.63 def $free_instr{tableidx : tableidx}(`TABLE.GET`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:542.1-542.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:552.1-552.63 def $free_instr{tableidx : tableidx}(`TABLE.SET`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:543.1-543.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:553.1-553.64 def $free_instr{tableidx : tableidx}(`TABLE.SIZE`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:544.1-544.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:554.1-554.64 def $free_instr{tableidx : tableidx}(`TABLE.GROW`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:545.1-545.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:555.1-555.64 def $free_instr{tableidx : tableidx}(`TABLE.FILL`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:546.1-547.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:556.1-557.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-latest/1.3-syntax.instructions.spectec:548.1-549.53 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:558.1-559.53 def $free_instr{tableidx : tableidx, elemidx : elemidx}(`TABLE.INIT`_instr(tableidx, elemidx)) = $free_tableidx(tableidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:550.1-550.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:560.1-560.60 def $free_instr{elemidx : elemidx}(`ELEM.DROP`_instr(elemidx)) = $free_elemidx(elemidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:552.1-553.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:562.1-563.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-latest/1.3-syntax.instructions.spectec:554.1-555.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:564.1-565.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-latest/1.3-syntax.instructions.spectec:556.1-557.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:566.1-567.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-latest/1.3-syntax.instructions.spectec:558.1-559.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:568.1-569.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-latest/1.3-syntax.instructions.spectec:560.1-561.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:570.1-571.49 def $free_instr{vectype : vectype, memidx : memidx, memarg : memarg}(VSTORE_instr(vectype, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:562.1-563.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:572.1-573.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-latest/1.3-syntax.instructions.spectec:564.1-564.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:574.1-574.59 def $free_instr{memidx : memidx}(`MEMORY.SIZE`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:565.1-565.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:575.1-575.59 def $free_instr{memidx : memidx}(`MEMORY.GROW`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:566.1-566.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:576.1-576.59 def $free_instr{memidx : memidx}(`MEMORY.FILL`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:567.1-568.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:577.1-578.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-latest/1.3-syntax.instructions.spectec:569.1-570.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:579.1-580.49 def $free_instr{memidx : memidx, dataidx : dataidx}(`MEMORY.INIT`_instr(memidx, dataidx)) = $free_memidx(memidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:571.1-571.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:581.1-581.60 def $free_instr{dataidx : dataidx}(`DATA.DROP`_instr(dataidx)) = $free_dataidx(dataidx) -;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:420.1-420.31 +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:421.1-421.31 def $free_block(instr*) : free - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:579.1-580.47 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:589.1-590.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*`})) } @@ -13927,7 +13977,7 @@ def $free_datamode(datamode : datamode) : free ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_datamode{memidx : memidx, expr : expr}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec - def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_data(data : data) : free @@ -13939,9 +13989,9 @@ def $free_elemmode(elemmode : elemmode) : free ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_elemmode{tableidx : tableidx, expr : expr}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec - def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec - def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_elem(elem : elem) : free @@ -23239,71 +23289,77 @@ syntax free = ELEMS elemidx*, DATAS dataidx*, LOCALS localidx*, - LABELS labelidx* + LABELS labelidx*, + TAGS tagidx* } ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_opt(free?) : free ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec - def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_opt{free : free}(?(free)) = free ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:172.1-172.29 +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:173.1-173.29 def $free_list(free*) : free - ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:177.1-177.25 - def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:178.1-178.57 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:178.1-178.25 + def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:179.1-179.57 def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) } ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_typeidx(typeidx : typeidx) : free ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec - def $free_typeidx{typeidx : typeidx}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_typeidx{typeidx : typeidx}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_funcidx(funcidx : funcidx) : free ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec - def $free_funcidx{funcidx : funcidx}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_funcidx{funcidx : funcidx}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_globalidx(globalidx : globalidx) : free ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec - def $free_globalidx{globalidx : globalidx}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_globalidx{globalidx : globalidx}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_tableidx(tableidx : tableidx) : free ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec - def $free_tableidx{tableidx : tableidx}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_tableidx{tableidx : tableidx}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_memidx(memidx : memidx) : free ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec - def $free_memidx{memidx : memidx}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_memidx{memidx : memidx}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_elemidx(elemidx : elemidx) : free ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec - def $free_elemidx{elemidx : elemidx}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []} + def $free_elemidx{elemidx : elemidx}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_dataidx(dataidx : dataidx) : free ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec - def $free_dataidx{dataidx : dataidx}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []} + def $free_dataidx{dataidx : dataidx}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_localidx(localidx : localidx) : free ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec - def $free_localidx{localidx : localidx}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []} + def $free_localidx{localidx : localidx}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_labelidx(labelidx : labelidx) : free ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec - def $free_labelidx{labelidx : labelidx}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]} + def $free_labelidx{labelidx : labelidx}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx], TAGS []} + +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec +def $free_tagidx(tagidx : tagidx) : free + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec + def $free_tagidx{tagidx : tagidx}(tagidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [tagidx]} ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_externidx(externidx : externidx) : free @@ -23315,6 +23371,8 @@ def $free_externidx(externidx : externidx) : free def $free_externidx{tableidx : tableidx}(TABLE_externidx(tableidx)) = $free_tableidx(tableidx) ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_externidx{memidx : memidx}(MEM_externidx(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec + def $free_externidx{tagidx : tagidx}(TAG_externidx(tagidx)) = $free_tagidx(tagidx) ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax null = @@ -24139,19 +24197,19 @@ def $expanddt(deftype : deftype) : comptype -- if ($unrolldt(deftype) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec -def $free_addrtype(numtype : numtype) : free +def $free_addrtype(addrtype : addrtype) : free ;; ../../../../specification/wasm-latest/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 [], TAGS []} ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_numtype(numtype : numtype) : free ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec - def $free_numtype{numtype : numtype}(numtype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_numtype{numtype : numtype}(numtype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_packtype(packtype : packtype) : free ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec - def $free_packtype{packtype : packtype}(packtype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_packtype{packtype : packtype}(packtype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_lanetype(lanetype : lanetype) : free @@ -24163,7 +24221,7 @@ def $free_lanetype(lanetype : lanetype) : free ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_vectype(vectype : vectype) : free ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec - def $free_vectype{vectype : vectype}(vectype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_vectype{vectype : vectype}(vectype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_consttype(consttype : consttype) : free @@ -24175,14 +24233,14 @@ def $free_consttype(consttype : consttype) : free ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_absheaptype(absheaptype : absheaptype) : free ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec - def $free_absheaptype{absheaptype : absheaptype}(absheaptype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_absheaptype{absheaptype : absheaptype}(absheaptype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_typevar(typevar : typevar) : free ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_typevar{typeidx : typeidx}(_IDX_typevar(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec - def $free_typevar{n : n}(REC_typevar(n)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_typevar{n : n}(REC_typevar(n)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { @@ -24215,7 +24273,7 @@ def $free_valtype(valtype : valtype) : free ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:539.1-539.52 def $free_valtype{reftype : reftype}((reftype : reftype <: valtype)) = $free_reftype(reftype) ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:540.1-540.28 - def $free_valtype(BOT_valtype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_valtype(BOT_valtype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:490.1-490.40 def $free_resulttype(resulttype : resulttype) : free @@ -24272,17 +24330,17 @@ def $free_globaltype(globaltype : globaltype) : free ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_memtype(memtype : memtype) : free ;; ../../../../specification/wasm-latest/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-latest/1.2-syntax.types.spectec def $free_tabletype(tabletype : tabletype) : free ;; ../../../../specification/wasm-latest/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-latest/1.2-syntax.types.spectec def $free_datatype(datatype : datatype) : free ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec - def $free_datatype(OK_datatype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_datatype(OK_datatype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_elemtype(elemtype : elemtype) : free @@ -24983,230 +25041,247 @@ def $free_blocktype(blocktype : blocktype) : free ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_blocktype{typeidx : typeidx}(_IDX_blocktype(typeidx)) = $free_typeidx(typeidx) +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec +def $free_catch(catch : catch) : free + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec + def $free_catch{tagidx : tagidx, labelidx : labelidx}(CATCH_catch(tagidx, labelidx)) = $free_tagidx(tagidx) +++ $free_labelidx(labelidx) + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec + def $free_catch{tagidx : tagidx, labelidx : labelidx}(CATCH_REF_catch(tagidx, labelidx)) = $free_tagidx(tagidx) +++ $free_labelidx(labelidx) + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec + def $free_catch{labelidx : labelidx}(CATCH_ALL_catch(labelidx)) = $free_labelidx(labelidx) + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec + def $free_catch{labelidx : labelidx}(CATCH_ALL_REF_catch(labelidx)) = $free_labelidx(labelidx) + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:574.1-574.44 +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:584.1-584.44 def $shift_labelidxs(labelidx*) : labelidx* - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:575.1-575.32 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:585.1-585.32 def $shift_labelidxs([]) = [] - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:576.1-576.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:586.1-586.66 def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:577.1-577.91 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:587.1-587.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-latest/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:419.1-419.30 +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:420.1-420.30 def $free_instr(instr : instr) : free - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:430.1-430.26 - def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:431.1-431.34 - def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:432.1-432.27 - def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:433.1-433.86 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:435.1-435.26 + def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:436.1-436.34 + def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:437.1-437.27 + def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:438.1-438.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-latest/1.3-syntax.instructions.spectec:435.1-435.92 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:440.1-440.92 def $free_instr{blocktype : blocktype, `instr*` : instr*}(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:436.1-436.91 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:441.1-441.91 def $free_instr{blocktype : blocktype, `instr*` : instr*}(LOOP_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:437.1-438.79 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:442.1-443.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-latest/1.3-syntax.instructions.spectec:440.1-440.56 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:445.1-445.56 def $free_instr{labelidx : labelidx}(BR_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:441.1-441.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:446.1-446.59 def $free_instr{labelidx : labelidx}(BR_IF_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:442.1-443.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:447.1-448.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-latest/1.3-syntax.instructions.spectec:444.1-444.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:449.1-449.64 def $free_instr{labelidx : labelidx}(BR_ON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:445.1-445.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:450.1-450.68 def $free_instr{labelidx : labelidx}(BR_ON_NON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:446.1-447.83 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:451.1-452.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-latest/1.3-syntax.instructions.spectec:448.1-449.83 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:453.1-454.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-latest/1.3-syntax.instructions.spectec:451.1-451.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:456.1-456.55 def $free_instr{funcidx : funcidx}(CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:452.1-452.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:457.1-457.59 def $free_instr{typeuse : typeuse}(CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:453.1-454.53 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:458.1-459.53 def $free_instr{tableidx : tableidx, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:455.1-455.29 - def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:456.1-456.62 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:460.1-460.29 + def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:461.1-461.62 def $free_instr{funcidx : funcidx}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:457.1-457.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:462.1-462.66 def $free_instr{typeuse : typeuse}(RETURN_CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:458.1-459.53 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:463.1-464.53 def $free_instr{tableidx : tableidx, typeuse : typeuse}(RETURN_CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:461.1-461.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:466.1-466.53 + def $free_instr{tagidx : tagidx}(THROW_instr(tagidx)) = $free_tagidx(tagidx) + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:467.1-467.32 + def $free_instr(THROW_REF_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:468.1-469.99 + def $free_instr{blocktype : blocktype, `catch*` : catch*, `instr*` : instr*}(TRY_TABLE_instr(blocktype, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_list($free_catch(catch)*{catch <- `catch*`}) +++ $free_list($free_instr(instr)*{instr <- `instr*`}) + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:471.1-471.63 def $free_instr{numtype : numtype, numlit : num_(numtype)}(CONST_instr(numtype, numlit)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:462.1-462.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:472.1-472.60 def $free_instr{numtype : numtype, unop : unop_(numtype)}(UNOP_instr(numtype, unop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:463.1-463.62 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:473.1-473.62 def $free_instr{numtype : numtype, binop : binop_(numtype)}(BINOP_instr(numtype, binop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:464.1-464.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:474.1-474.64 def $free_instr{numtype : numtype, testop : testop_(numtype)}(TESTOP_instr(numtype, testop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:465.1-465.62 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:475.1-475.62 def $free_instr{numtype : numtype, relop : relop_(numtype)}(RELOP_instr(numtype, relop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:466.1-467.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:476.1-477.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-latest/1.3-syntax.instructions.spectec:469.1-469.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:479.1-479.64 def $free_instr{vectype : vectype, veclit : vec_(vectype)}(VCONST_instr(vectype, veclit)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:470.1-470.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:480.1-480.64 def $free_instr{vectype : vectype, vvunop : vvunop}(VVUNOP_instr(vectype, vvunop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:471.1-471.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:481.1-481.66 def $free_instr{vectype : vectype, vvbinop : vvbinop}(VVBINOP_instr(vectype, vvbinop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:472.1-472.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:482.1-482.68 def $free_instr{vectype : vectype, vvternop : vvternop}(VVTERNOP_instr(vectype, vvternop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:473.1-473.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:483.1-483.68 def $free_instr{vectype : vectype, vvtestop : vvtestop}(VVTESTOP_instr(vectype, vvtestop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:474.1-474.56 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:484.1-484.56 def $free_instr{shape : shape, vunop : vunop_(shape)}(VUNOP_instr(shape, vunop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:475.1-475.58 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:485.1-485.58 def $free_instr{shape : shape, vbinop : vbinop_(shape)}(VBINOP_instr(shape, vbinop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:476.1-476.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:486.1-486.60 def $free_instr{shape : shape, vternop : vternop_(shape)}(VTERNOP_instr(shape, vternop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:477.1-477.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:487.1-487.60 def $free_instr{shape : shape, vtestop : vtestop_(shape)}(VTESTOP_instr(shape, vtestop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:478.1-478.58 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:488.1-488.58 def $free_instr{shape : shape, vrelop : vrelop_(shape)}(VRELOP_instr(shape, vrelop)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:479.1-479.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:489.1-489.64 def $free_instr{ishape : ishape, vshiftop : vshiftop_(ishape)}(VSHIFTOP_instr(ishape, vshiftop)) = $free_shape(ishape!`%`_ishape.0) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:480.1-480.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:490.1-490.55 def $free_instr{ishape : ishape}(VBITMASK_instr(ishape)) = $free_shape(ishape!`%`_ishape.0) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:481.1-481.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:491.1-491.66 def $free_instr{bshape : bshape, vswizzlop : vswizzlop_(bshape)}(VSWIZZLOP_instr(bshape, vswizzlop)) = $free_shape(bshape!`%`_bshape.0) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:482.1-482.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:492.1-492.64 def $free_instr{bshape : bshape, `laneidx*` : laneidx*}(VSHUFFLE_instr(bshape, laneidx*{laneidx <- `laneidx*`})) = $free_shape(bshape!`%`_bshape.0) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:483.1-484.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:493.1-494.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-latest/1.3-syntax.instructions.spectec:485.1-486.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:495.1-496.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-latest/1.3-syntax.instructions.spectec:487.1-488.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:497.1-498.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-latest/1.3-syntax.instructions.spectec:489.1-490.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:499.1-500.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-latest/1.3-syntax.instructions.spectec:491.1-492.47 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:501.1-502.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-latest/1.3-syntax.instructions.spectec:493.1-493.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:503.1-503.51 def $free_instr{shape : shape}(VSPLAT_instr(shape)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:494.1-494.70 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:504.1-504.70 def $free_instr{shape : shape, `sx?` : sx?, laneidx : laneidx}(VEXTRACT_LANE_instr(shape, sx?{sx <- `sx?`}, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:495.1-495.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:505.1-505.66 def $free_instr{shape : shape, laneidx : laneidx}(VREPLACE_LANE_instr(shape, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:497.1-497.62 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:507.1-507.62 def $free_instr{heaptype : heaptype}(`REF.NULL`_instr(heaptype)) = $free_heaptype(heaptype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:498.1-498.34 - def $free_instr(`REF.IS_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:499.1-499.38 - def $free_instr(`REF.AS_NON_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:500.1-500.29 - def $free_instr(`REF.EQ`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:501.1-501.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:508.1-508.34 + def $free_instr(`REF.IS_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:509.1-509.38 + def $free_instr(`REF.AS_NON_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:510.1-510.29 + def $free_instr(`REF.EQ`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:511.1-511.59 def $free_instr{reftype : reftype}(`REF.TEST`_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:502.1-502.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:512.1-512.59 def $free_instr{reftype : reftype}(`REF.CAST`_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:503.1-503.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:513.1-513.59 def $free_instr{funcidx : funcidx}(`REF.FUNC`_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:504.1-504.30 - def $free_instr(`REF.I31`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:506.1-506.33 - def $free_instr{sx : sx}(`I31.GET`_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:508.1-508.41 - def $free_instr{typeidx : typeidx}(`STRUCT.NEW`_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:509.1-509.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:514.1-514.30 + def $free_instr(`REF.I31`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:516.1-516.33 + def $free_instr{sx : sx}(`I31.GET`_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:518.1-518.41 + def $free_instr{typeidx : typeidx}(`STRUCT.NEW`_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:519.1-519.69 def $free_instr{typeidx : typeidx}(`STRUCT.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:510.1-510.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:520.1-520.69 def $free_instr{`sx?` : sx?, typeidx : typeidx, u32 : u32}(`STRUCT.GET`_instr(sx?{sx <- `sx?`}, typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:511.1-511.65 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:521.1-521.65 def $free_instr{typeidx : typeidx, u32 : u32}(`STRUCT.SET`_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:513.1-513.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:523.1-523.60 def $free_instr{typeidx : typeidx}(`ARRAY.NEW`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:514.1-514.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:524.1-524.68 def $free_instr{typeidx : typeidx}(`ARRAY.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:515.1-515.70 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:525.1-525.70 def $free_instr{typeidx : typeidx, u32 : u32}(`ARRAY.NEW_FIXED`_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:516.1-517.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:526.1-527.51 def $free_instr{typeidx : typeidx, dataidx : dataidx}(`ARRAY.NEW_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:518.1-519.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:528.1-529.51 def $free_instr{typeidx : typeidx, elemidx : elemidx}(`ARRAY.NEW_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:520.1-520.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:530.1-530.64 def $free_instr{`sx?` : sx?, typeidx : typeidx}(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:521.1-521.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:531.1-531.60 def $free_instr{typeidx : typeidx}(`ARRAY.SET`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:522.1-522.32 - def $free_instr(`ARRAY.LEN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:523.1-523.61 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:532.1-532.32 + def $free_instr(`ARRAY.LEN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:533.1-533.61 def $free_instr{typeidx : typeidx}(`ARRAY.FILL`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:524.1-525.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:534.1-535.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-latest/1.3-syntax.instructions.spectec:526.1-527.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:536.1-537.51 def $free_instr{typeidx : typeidx, dataidx : dataidx}(`ARRAY.INIT_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:528.1-529.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:538.1-539.51 def $free_instr{typeidx : typeidx, elemidx : elemidx}(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:531.1-531.41 - def $free_instr(`EXTERN.CONVERT_ANY`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:532.1-532.41 - def $free_instr(`ANY.CONVERT_EXTERN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:534.1-534.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:541.1-541.41 + def $free_instr(`EXTERN.CONVERT_ANY`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:542.1-542.41 + def $free_instr(`ANY.CONVERT_EXTERN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:544.1-544.63 def $free_instr{localidx : localidx}(`LOCAL.GET`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:535.1-535.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:545.1-545.63 def $free_instr{localidx : localidx}(`LOCAL.SET`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:536.1-536.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:546.1-546.63 def $free_instr{localidx : localidx}(`LOCAL.TEE`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:538.1-538.67 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:548.1-548.67 def $free_instr{globalidx : globalidx}(`GLOBAL.GET`_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:539.1-539.67 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:549.1-549.67 def $free_instr{globalidx : globalidx}(`GLOBAL.SET`_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:541.1-541.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:551.1-551.63 def $free_instr{tableidx : tableidx}(`TABLE.GET`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:542.1-542.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:552.1-552.63 def $free_instr{tableidx : tableidx}(`TABLE.SET`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:543.1-543.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:553.1-553.64 def $free_instr{tableidx : tableidx}(`TABLE.SIZE`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:544.1-544.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:554.1-554.64 def $free_instr{tableidx : tableidx}(`TABLE.GROW`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:545.1-545.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:555.1-555.64 def $free_instr{tableidx : tableidx}(`TABLE.FILL`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:546.1-547.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:556.1-557.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-latest/1.3-syntax.instructions.spectec:548.1-549.53 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:558.1-559.53 def $free_instr{tableidx : tableidx, elemidx : elemidx}(`TABLE.INIT`_instr(tableidx, elemidx)) = $free_tableidx(tableidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:550.1-550.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:560.1-560.60 def $free_instr{elemidx : elemidx}(`ELEM.DROP`_instr(elemidx)) = $free_elemidx(elemidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:552.1-553.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:562.1-563.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-latest/1.3-syntax.instructions.spectec:554.1-555.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:564.1-565.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-latest/1.3-syntax.instructions.spectec:556.1-557.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:566.1-567.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-latest/1.3-syntax.instructions.spectec:558.1-559.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:568.1-569.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-latest/1.3-syntax.instructions.spectec:560.1-561.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:570.1-571.49 def $free_instr{vectype : vectype, memidx : memidx, memarg : memarg}(VSTORE_instr(vectype, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:562.1-563.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:572.1-573.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-latest/1.3-syntax.instructions.spectec:564.1-564.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:574.1-574.59 def $free_instr{memidx : memidx}(`MEMORY.SIZE`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:565.1-565.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:575.1-575.59 def $free_instr{memidx : memidx}(`MEMORY.GROW`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:566.1-566.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:576.1-576.59 def $free_instr{memidx : memidx}(`MEMORY.FILL`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:567.1-568.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:577.1-578.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-latest/1.3-syntax.instructions.spectec:569.1-570.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:579.1-580.49 def $free_instr{memidx : memidx, dataidx : dataidx}(`MEMORY.INIT`_instr(memidx, dataidx)) = $free_memidx(memidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:571.1-571.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:581.1-581.60 def $free_instr{dataidx : dataidx}(`DATA.DROP`_instr(dataidx)) = $free_dataidx(dataidx) -;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:420.1-420.31 +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:421.1-421.31 def $free_block(instr*) : free - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:579.1-580.47 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:589.1-590.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*`})) } @@ -25319,7 +25394,7 @@ def $free_datamode(datamode : datamode) : free ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_datamode{memidx : memidx, expr : expr}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec - def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_data(data : data) : free @@ -25331,9 +25406,9 @@ def $free_elemmode(elemmode : elemmode) : free ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_elemmode{tableidx : tableidx, expr : expr}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec - def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec - def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_elem(elem : elem) : free diff --git a/spectec/test-splice/TEST.md b/spectec/test-splice/TEST.md index 1b03a9fa1..900b542e6 100644 --- a/spectec/test-splice/TEST.md +++ b/spectec/test-splice/TEST.md @@ -1567,6 +1567,7 @@ warning: definition `free_absheaptype` was never spliced warning: definition `free_addrtype` was never spliced warning: definition `free_block` was never spliced warning: definition `free_blocktype` was never spliced +warning: definition `free_catch` was never spliced warning: definition `free_comptype` was never spliced warning: definition `free_consttype` was never spliced warning: definition `free_data` was never spliced @@ -1615,6 +1616,7 @@ warning: definition `free_table` was never spliced warning: definition `free_tableidx` was never spliced warning: definition `free_tabletype` was never spliced warning: definition `free_tag` was never spliced +warning: definition `free_tagidx` was never spliced warning: definition `free_tagtype` was never spliced warning: definition `free_type` was never spliced warning: definition `free_typeidx` was never spliced @@ -2420,6 +2422,7 @@ warning: definition prose `free_absheaptype` was never spliced warning: definition prose `free_addrtype` was never spliced warning: definition prose `free_block` was never spliced warning: definition prose `free_blocktype` was never spliced +warning: definition prose `free_catch` was never spliced warning: definition prose `free_comptype` was never spliced warning: definition prose `free_consttype` was never spliced warning: definition prose `free_data` was never spliced @@ -2468,6 +2471,7 @@ warning: definition prose `free_table` was never spliced warning: definition prose `free_tableidx` was never spliced warning: definition prose `free_tabletype` was never spliced warning: definition prose `free_tag` was never spliced +warning: definition prose `free_tagidx` was never spliced warning: definition prose `free_tagtype` was never spliced warning: definition prose `free_type` was never spliced warning: definition prose `free_typeidx` was never spliced From 43d453093d4a2b0c819ff8a9bead0d912f7ae669 Mon Sep 17 00:00:00 2001 From: Jihong Min <75479781+jihongmin63@users.noreply.github.com> Date: Tue, 10 Mar 2026 20:33:48 +0900 Subject: [PATCH 083/235] [spectec] Fix typo in IL semantics rule (#2104) --- spectec/doc/semantics/il/5-reduction.spectec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spectec/doc/semantics/il/5-reduction.spectec b/spectec/doc/semantics/il/5-reduction.spectec index 6a18b8e88..60ad8dd3c 100644 --- a/spectec/doc/semantics/il/5-reduction.spectec +++ b/spectec/doc/semantics/il/5-reduction.spectec @@ -18,7 +18,7 @@ rule Expand_typ/alias: rule Expand_typ/step: S |- VAR x a* => $subst_deftyp(s, dt) -- if (x, p* `-> OK `= inst*) <- S.TYP - -- if (INST `{q*} a* `= dt) <- inst* + -- if (INST `{q*} a'* `= dt) <- inst* -- Match_args: S |- a* `/ `{q*} a'* => s From fc5cd138cde17c6363a2e4855d6436cd8bf0246e Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Tue, 10 Mar 2026 14:11:20 +0100 Subject: [PATCH 084/235] [spectec] Remove obsolete MEM-OPT reduction rules from IL semantics --- spectec/doc/semantics/il/5-reduction.spectec | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/spectec/doc/semantics/il/5-reduction.spectec b/spectec/doc/semantics/il/5-reduction.spectec index 60ad8dd3c..2b3c2563a 100644 --- a/spectec/doc/semantics/il/5-reduction.spectec +++ b/spectec/doc/semantics/il/5-reduction.spectec @@ -194,19 +194,11 @@ rule Step_exp/MEM-ctx2: S |- MEM e_1 e_2 ~> MEM e_1 e'_2 -- Step_exp: S |- e_2 ~> e'_2 -rule Step_exp/MEM-OPT-true: - S |- MEM e_1 (OPT (e_2)) ~> BOOL true - -- if e_1 = e_2 - -rule Step_exp/MEM-OPT-false: - S |- MEM val_1 (OPT val_2?) ~> BOOL false - -- (if val_1 =/= val_2)? - -rule Step_exp/MEM-LIST-true: +rule Step_exp/MEM-true: S |- MEM e_1 (LIST e_2*) ~> BOOL true -- if e_1 = e_2*[n] -rule Step_exp/MEM-LIST-false: +rule Step_exp/MEM-false: S |- MEM val_1 (LIST val_2*) ~> BOOL false -- (if val_1 =/= val_2)* From b7b18ccffde4422ddfd724b192076a227fb75417 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Tue, 10 Mar 2026 14:33:05 +0100 Subject: [PATCH 085/235] [spectec] Generalise CAT and remove COMP from IL semantics --- spectec/doc/semantics/il/1-syntax.spectec | 1 - spectec/doc/semantics/il/4-subst.spectec | 1 - spectec/doc/semantics/il/6-typing.spectec | 23 +++++++++-------------- 3 files changed, 9 insertions(+), 16 deletions(-) diff --git a/spectec/doc/semantics/il/1-syntax.spectec b/spectec/doc/semantics/il/1-syntax.spectec index 14eb7fa55..5278bf572 100644 --- a/spectec/doc/semantics/il/1-syntax.spectec +++ b/spectec/doc/semantics/il/1-syntax.spectec @@ -127,7 +127,6 @@ syntax exp = | LEN exp ;; | exp | | MEM exp exp ;; exp `<-` exp | CAT exp exp ;; exp `++` exp - | COMP exp exp ;; exp `@` exp | ACC exp path ;; exp[ path ] | UPD exp path exp ;; exp[ path = exp ] | EXT exp path exp ;; exp[ path =.. exp ] diff --git a/spectec/doc/semantics/il/4-subst.spectec b/spectec/doc/semantics/il/4-subst.spectec index ee2828de1..f2a9998b5 100644 --- a/spectec/doc/semantics/il/4-subst.spectec +++ b/spectec/doc/semantics/il/4-subst.spectec @@ -91,7 +91,6 @@ def $subst_exp(s, SEL e n) = SEL $subst_exp(s, e) n def $subst_exp(s, LEN e) = LEN $subst_exp(s, e) def $subst_exp(s, MEM e_1 e_2) = MEM $subst_exp(s, e_1) $subst_exp(s, e_2) def $subst_exp(s, CAT e_1 e_2) = CAT $subst_exp(s, e_1) $subst_exp(s, e_2) -def $subst_exp(s, COMP e_1 e_2) = COMP $subst_exp(s, e_1) $subst_exp(s, e_2) def $subst_exp(s, ACC e_1 p) = ACC $subst_exp(s, e_1) $subst_path(s, p) def $subst_exp(s, UPD e_1 p e_2) = UPD $subst_exp(s, e_1) $subst_path(s, p) $subst_exp(s, e_2) def $subst_exp(s, EXT e_1 p e_2) = EXT $subst_exp(s, e_1) $subst_path(s, p) $subst_exp(s, e_2) diff --git a/spectec/doc/semantics/il/6-typing.spectec b/spectec/doc/semantics/il/6-typing.spectec index f8dc09b41..da62e48d3 100644 --- a/spectec/doc/semantics/il/6-typing.spectec +++ b/spectec/doc/semantics/il/6-typing.spectec @@ -1,15 +1,15 @@ -;; Type Expansion +;; Type Classification -relation Composable_typ: E |- typ COMPOSABLE +relation Catable_typ: E |- typ CATABLE -rule Composable_typ/ITER: - E |- t COMPOSABLE +rule Catable_typ/ITER: + E |- t CATABLE -- Expand_typ: E |- t => ALIAS (ITER t' it) -rule Composable_typ/STRUCT: - E |- t COMPOSABLE +rule Catable_typ/STRUCT: + E |- t CATABLE -- Expand_typ: E |- t => STRUCT (atom `: t' `- `{q*} pr*)* - -- (Composable_typ: E |- t' COMPOSABLE)* + -- (Catable_typ: E |- t' CATABLE)* ;; Subtyping @@ -327,15 +327,10 @@ rule Ok_exp/MEM: -- Ok_exp: E |- e_2 : ITER t_1 STAR rule Ok_exp/CAT: - E |- CAT e_1 e_2 : ITER t STAR - -- Ok_exp: E |- e_1 : ITER t STAR - -- Ok_exp: E |- e_2 : ITER t STAR - -rule Ok_exp/COMP: - E |- COMP e_1 e_2 : t + E |- CAT e_1 e_2 : t -- Ok_exp: E |- e_1 : t -- Ok_exp: E |- e_2 : t - -- Composable_typ: E |- t COMPOSABLE + -- Catable_typ: E |- t CATABLE rule Ok_exp/ACC: From fa8ea418ffe69976c5bad90b47ab38c8e5c23857 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Tue, 10 Mar 2026 17:08:00 +0100 Subject: [PATCH 086/235] [proposals/spectec] Update LICENSE for spectec and proposals directories (#2050) As per unanimous consent from 2026-03-10 meeting. --- LICENSE | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index de2cac692..ce8035027 100644 --- a/LICENSE +++ b/LICENSE @@ -3,6 +3,8 @@ Please see the LICENSE file in each top-level directory for the terms applicable The relevant directories and licenses are: document/ - W3C Software and Document Notice and License +spectec/ - Apache License 2.0 interpreter/ - Apache License 2.0 test/ - Apache License 2.0 -papers/ - Creative Commons Attribution 4.0 International License +proposals/ - Creative Commons Universal 1.0 International License (CC0) +papers/ - Creative Commons Attribution 4.0 International License (CC BY 4.0) From 8ec9f5898904d5cb3a93cc9c44dfb2212304dcb6 Mon Sep 17 00:00:00 2001 From: Rao Xiaojia Date: Tue, 10 Mar 2026 11:58:27 -0700 Subject: [PATCH 087/235] [spec] Cumulative fixes for text format and binary format specification (#2107) --- .../wasm-3.0/5.4-binary.modules.spectec | 2 +- specification/wasm-3.0/6.2-text.types.spectec | 8 ++-- .../wasm-3.0/6.3-text.instructions.spectec | 12 ++--- .../wasm-latest/5.4-binary.modules.spectec | 2 +- .../wasm-latest/6.2-text.types.spectec | 8 ++-- .../wasm-latest/6.3-text.instructions.spectec | 12 ++--- spectec/test-frontend/TEST.md | 16 +++---- spectec/test-latex/TEST.md | 20 ++++---- spectec/test-middlend/TEST.md | 48 +++++++++---------- 9 files changed, 64 insertions(+), 64 deletions(-) diff --git a/specification/wasm-3.0/5.4-binary.modules.spectec b/specification/wasm-3.0/5.4-binary.modules.spectec index 5bdf90927..bfb047c65 100644 --- a/specification/wasm-3.0/5.4-binary.modules.spectec +++ b/specification/wasm-3.0/5.4-binary.modules.spectec @@ -95,7 +95,7 @@ grammar Bstartsec : start? hint(desc "start section") = ;; Element section grammar Belemkind : reftype hint(desc "element kind") = - | 0x00 => REF NULL FUNC + | 0x00 => REF FUNC grammar Belem : elem = | 0:Bu32 e_o:Bexpr y*:Blist(Bfuncidx) => diff --git a/specification/wasm-3.0/6.2-text.types.spectec b/specification/wasm-3.0/6.2-text.types.spectec index 2afedafc9..3825bd6d5 100644 --- a/specification/wasm-3.0/6.2-text.types.spectec +++ b/specification/wasm-3.0/6.2-text.types.spectec @@ -91,12 +91,12 @@ grammar Tresult_(I)/base : valtype = | "(" "result" t:Tvaltype_(I) ")" => t | ... -grammar Tresult_(I)/abbrev : valtype = ... | "(" "result" Tvaltype_(I)* ")" == ("(" "param" Tvaltype_(I) ")")* +grammar Tresult_(I)/abbrev : valtype = ... | "(" "result" Tvaltype_(I)* ")" == ("(" "result" Tvaltype_(I) ")")* grammar Tcomptype_(I) : (comptype, idctxt) = - | "(" "struct" (ft,id?)*:Tlist(Tfield_(I)) ")" => (STRUCT ft*, {FIELDS (id?)*}) - | "(" "array" ft:Tfieldtype_(I) ")" => (ARRAY ft, {}) - | "(" "func" (t_1,id?)*:Tlist(Tparam_(I)) t_2*:Tlist(Tresult_(I)) ")" => (FUNC t_1* -> t_2*, {}) + | "(" "struct" (ft,id?)*:Tlist(Tfield_(I)) ")" => (STRUCT ft*, {FIELDS ((id?)*)}) + | "(" "array" ft:Tfieldtype_(I) ")" => (ARRAY ft, {FIELDS (eps)}) + | "(" "func" (t_1,id?)*:Tlist(Tparam_(I)) t_2*:Tlist(Tresult_(I)) ")" => (FUNC t_1* -> t_2*, {FIELDS (eps)}) grammar Tfinal : final = diff --git a/specification/wasm-3.0/6.3-text.instructions.spectec b/specification/wasm-3.0/6.3-text.instructions.spectec index 661ba6df3..643fe47e2 100644 --- a/specification/wasm-3.0/6.3-text.instructions.spectec +++ b/specification/wasm-3.0/6.3-text.instructions.spectec @@ -178,11 +178,11 @@ grammar Tmemarg_(N) : memarg = | n:Talign_(N) m:Toffset => {ALIGN n, OFFSET m} grammar Toffset : u64 = - | "offset=" n:Tu64 => n + | "offset=" m:Tu64 => m | eps => 0 -grammar Talign_(N) : u64 = - | "align=" m:Tu64 => m -- if $(m = 2^n) +grammar Talign_(N) : u32 = + | "align=" m:Tu64 => n -- if $(m = 2^n) | eps => N grammar Tlaneidx : laneidx = @@ -284,9 +284,9 @@ grammar Tplaininstr_(I)/memory-abbrev : instr = ... | "i64.store32" Tmemarg_(4) == "i64.store32" "0" Tmemarg_(4) | "v128.store" Tmemarg_(16) == "v128.store" "0" Tmemarg_(16) | "v128.store8_lane" Tmemarg_(1) Tlaneidx == "v128.store8_lane" "0" Tmemarg_(1) Tlaneidx - | "v128.store16_lane" Tmemarg_(2) Tlaneidx == "v128.store16_lane" "0" Tmemarg_(1) Tlaneidx - | "v128.store32_lane" Tmemarg_(4) Tlaneidx == "v128.store32_lane" "0" Tmemarg_(1) Tlaneidx - | "v128.store64_lane" Tmemarg_(8) Tlaneidx == "v128.store64_lane" "0" Tmemarg_(1) Tlaneidx + | "v128.store16_lane" Tmemarg_(2) Tlaneidx == "v128.store16_lane" "0" Tmemarg_(2) Tlaneidx + | "v128.store32_lane" Tmemarg_(4) Tlaneidx == "v128.store32_lane" "0" Tmemarg_(4) Tlaneidx + | "v128.store64_lane" Tmemarg_(8) Tlaneidx == "v128.store64_lane" "0" Tmemarg_(8) Tlaneidx | "memory.size" == "memory.size" "0" | "memory.grow" == "memory.grow" "0" | "memory.fill" == "memory.fill" "0" diff --git a/specification/wasm-latest/5.4-binary.modules.spectec b/specification/wasm-latest/5.4-binary.modules.spectec index 5bdf90927..bfb047c65 100644 --- a/specification/wasm-latest/5.4-binary.modules.spectec +++ b/specification/wasm-latest/5.4-binary.modules.spectec @@ -95,7 +95,7 @@ grammar Bstartsec : start? hint(desc "start section") = ;; Element section grammar Belemkind : reftype hint(desc "element kind") = - | 0x00 => REF NULL FUNC + | 0x00 => REF FUNC grammar Belem : elem = | 0:Bu32 e_o:Bexpr y*:Blist(Bfuncidx) => diff --git a/specification/wasm-latest/6.2-text.types.spectec b/specification/wasm-latest/6.2-text.types.spectec index 2afedafc9..3825bd6d5 100644 --- a/specification/wasm-latest/6.2-text.types.spectec +++ b/specification/wasm-latest/6.2-text.types.spectec @@ -91,12 +91,12 @@ grammar Tresult_(I)/base : valtype = | "(" "result" t:Tvaltype_(I) ")" => t | ... -grammar Tresult_(I)/abbrev : valtype = ... | "(" "result" Tvaltype_(I)* ")" == ("(" "param" Tvaltype_(I) ")")* +grammar Tresult_(I)/abbrev : valtype = ... | "(" "result" Tvaltype_(I)* ")" == ("(" "result" Tvaltype_(I) ")")* grammar Tcomptype_(I) : (comptype, idctxt) = - | "(" "struct" (ft,id?)*:Tlist(Tfield_(I)) ")" => (STRUCT ft*, {FIELDS (id?)*}) - | "(" "array" ft:Tfieldtype_(I) ")" => (ARRAY ft, {}) - | "(" "func" (t_1,id?)*:Tlist(Tparam_(I)) t_2*:Tlist(Tresult_(I)) ")" => (FUNC t_1* -> t_2*, {}) + | "(" "struct" (ft,id?)*:Tlist(Tfield_(I)) ")" => (STRUCT ft*, {FIELDS ((id?)*)}) + | "(" "array" ft:Tfieldtype_(I) ")" => (ARRAY ft, {FIELDS (eps)}) + | "(" "func" (t_1,id?)*:Tlist(Tparam_(I)) t_2*:Tlist(Tresult_(I)) ")" => (FUNC t_1* -> t_2*, {FIELDS (eps)}) grammar Tfinal : final = diff --git a/specification/wasm-latest/6.3-text.instructions.spectec b/specification/wasm-latest/6.3-text.instructions.spectec index 661ba6df3..643fe47e2 100644 --- a/specification/wasm-latest/6.3-text.instructions.spectec +++ b/specification/wasm-latest/6.3-text.instructions.spectec @@ -178,11 +178,11 @@ grammar Tmemarg_(N) : memarg = | n:Talign_(N) m:Toffset => {ALIGN n, OFFSET m} grammar Toffset : u64 = - | "offset=" n:Tu64 => n + | "offset=" m:Tu64 => m | eps => 0 -grammar Talign_(N) : u64 = - | "align=" m:Tu64 => m -- if $(m = 2^n) +grammar Talign_(N) : u32 = + | "align=" m:Tu64 => n -- if $(m = 2^n) | eps => N grammar Tlaneidx : laneidx = @@ -284,9 +284,9 @@ grammar Tplaininstr_(I)/memory-abbrev : instr = ... | "i64.store32" Tmemarg_(4) == "i64.store32" "0" Tmemarg_(4) | "v128.store" Tmemarg_(16) == "v128.store" "0" Tmemarg_(16) | "v128.store8_lane" Tmemarg_(1) Tlaneidx == "v128.store8_lane" "0" Tmemarg_(1) Tlaneidx - | "v128.store16_lane" Tmemarg_(2) Tlaneidx == "v128.store16_lane" "0" Tmemarg_(1) Tlaneidx - | "v128.store32_lane" Tmemarg_(4) Tlaneidx == "v128.store32_lane" "0" Tmemarg_(1) Tlaneidx - | "v128.store64_lane" Tmemarg_(8) Tlaneidx == "v128.store64_lane" "0" Tmemarg_(1) Tlaneidx + | "v128.store16_lane" Tmemarg_(2) Tlaneidx == "v128.store16_lane" "0" Tmemarg_(2) Tlaneidx + | "v128.store32_lane" Tmemarg_(4) Tlaneidx == "v128.store32_lane" "0" Tmemarg_(4) Tlaneidx + | "v128.store64_lane" Tmemarg_(8) Tlaneidx == "v128.store64_lane" "0" Tmemarg_(8) Tlaneidx | "memory.size" == "memory.size" "0" | "memory.grow" == "memory.grow" "0" | "memory.fill" == "memory.fill" "0" diff --git a/spectec/test-frontend/TEST.md b/spectec/test-frontend/TEST.md index 04630ae6c..fd20528ef 100644 --- a/spectec/test-frontend/TEST.md +++ b/spectec/test-frontend/TEST.md @@ -9231,7 +9231,7 @@ grammar Bstartsec : start? ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Belemkind : reftype ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec - prod 0x00 => REF_reftype(?(NULL_null), FUNC_heaptype) + prod 0x00 => REF_reftype(?(), FUNC_heaptype) ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Belem : elem @@ -9986,9 +9986,9 @@ grammar Tcomptype_(I : I) : (comptype, idctxt) ;; ../../../../specification/wasm-latest/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-latest/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 []}) + prod{ft : fieldtype} {{"("} {"array"} {ft:Tfieldtype_(I)} {")"}} => (ARRAY_comptype(ft), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [[?(`%`_name([]))]], TYPEDEFS []}) ;; ../../../../specification/wasm-latest/6.2-text.types.spectec - prod{`t_1*` : valtype*, `t_2*` : valtype*, `id?*` : char?*} {{"("} {"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 []}) + prod{`t_1*` : valtype*, `t_2*` : valtype*, `id?*` : char?*} {{"("} {"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 [[?(`%`_name([]))]], TYPEDEFS []}) ;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tfinal : final @@ -10112,24 +10112,24 @@ grammar Tlaneidx : laneidx prod{i : u8} i:Tu8 => i ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec -grammar Talign_(N : N) : u64 +grammar Talign_(N : N) : u32 ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec - prod{m : m, n : n} {{"align="} {`%`_u64(m):Tu64}} => `%`_u64(m) + prod{n : n, m : m} {{"align="} {`%`_u64(m):Tu64}} => `%`_u32(n) -- if (m = (2 ^ n)) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec - prod eps => `%`_u64(N) + prod eps => `%`_u32(N) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Toffset : u64 ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec - prod{n : n} {{"offset="} {`%`_u64(n):Tu64}} => `%`_u64(n) + prod{m : m} {{"offset="} {`%`_u64(m):Tu64}} => `%`_u64(m) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod eps => `%`_u64(0) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tmemarg_(N : N) : memarg ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec - prod{n : n, m : m} {{`%`_u64(n):Talign_(N)} {`%`_u64(m):Toffset}} => {ALIGN `%`_u32(n), OFFSET `%`_u64(m)} + prod{n : n, m : m} {{`%`_u32(n):Talign_(N)} {`%`_u64(m):Toffset}} => {ALIGN `%`_u32(n), OFFSET `%`_u64(m)} ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tplaininstr_(I : I) : instr diff --git a/spectec/test-latex/TEST.md b/spectec/test-latex/TEST.md index 316fcb449..aa7136b61 100644 --- a/spectec/test-latex/TEST.md +++ b/spectec/test-latex/TEST.md @@ -12142,7 +12142,7 @@ $$ $$ \begin{array}[t]{@{}lrrl@{}l@{}l@{}l@{}} -\mbox{(element kind)} & {\mathtt{elemkind}} & ::= & \mathtt{0x00} & \quad\Rightarrow\quad{} & \mathsf{ref}~\mathsf{null}~\mathsf{func} \\ +\mbox{(element kind)} & {\mathtt{elemkind}} & ::= & \mathtt{0x00} & \quad\Rightarrow\quad{} & \mathsf{ref}~\mathsf{func} \\ & {\mathtt{elem}} & ::= & 0{:}{\mathtt{u32}}~~e_o{:}{\mathtt{expr}}~~{y^\ast}{:}{\mathtt{list}}({\mathtt{funcidx}}) & \quad\Rightarrow\quad{} & & \\ &&& \multicolumn{4}{@{}l@{}}{\quad \begin{array}[t]{@{}l@{}} @@ -12632,10 +12632,10 @@ $$ & {{\mathtt{param}}}_{I} & ::= & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{param}’}~~{{\mathit{id}}^?}{:}{{\mathtt{id}}^?}~~t{:}{{\mathtt{valtype}}}_{I}~~\mbox{‘\texttt{{)}}’} & \quad\Rightarrow\quad{} & (t, {{\mathit{id}}^?}) \\ & & | & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{param}’}~~{{{\mathtt{valtype}}}_{I}^\ast}~~\mbox{‘\texttt{{)}}’} & \quad\equiv\quad{} & {(\mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{param}’}~~{{\mathtt{valtype}}}_{I}~~\mbox{‘\texttt{{)}}’})^\ast} \\ & {{\mathtt{result}}}_{I} & ::= & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{result}’}~~t{:}{{\mathtt{valtype}}}_{I}~~\mbox{‘\texttt{{)}}’} & \quad\Rightarrow\quad{} & t \\ -& & | & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{result}’}~~{{{\mathtt{valtype}}}_{I}^\ast}~~\mbox{‘\texttt{{)}}’} & \quad\equiv\quad{} & {(\mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{param}’}~~{{\mathtt{valtype}}}_{I}~~\mbox{‘\texttt{{)}}’})^\ast} \\ -& {{\mathtt{comptype}}}_{I} & ::= & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{struct}’}~~{({\mathit{ft}}, {{\mathit{id}}^?})^\ast}{:}{\mathtt{list}}({{\mathtt{field}}}_{I})~~\mbox{‘\texttt{{)}}’} & \quad\Rightarrow\quad{} & (\mathsf{struct}~{{\mathit{ft}}^\ast}, \{ \mathsf{fields}~{({{\mathit{id}}^?})^\ast} \}) \\ -& & | & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{array}’}~~{\mathit{ft}}{:}{{\mathtt{fieldtype}}}_{I}~~\mbox{‘\texttt{{)}}’} & \quad\Rightarrow\quad{} & (\mathsf{array}~{\mathit{ft}}, \{ \}) \\ -& & | & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{func}’}~~{(t_1, {{\mathit{id}}^?})^\ast}{:}{\mathtt{list}}({{\mathtt{param}}}_{I})~~{t_2^\ast}{:}{\mathtt{list}}({{\mathtt{result}}}_{I})~~\mbox{‘\texttt{{)}}’} & \quad\Rightarrow\quad{} & (\mathsf{func}~{t_1^\ast} \rightarrow {t_2^\ast}, \{ \}) \\ +& & | & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{result}’}~~{{{\mathtt{valtype}}}_{I}^\ast}~~\mbox{‘\texttt{{)}}’} & \quad\equiv\quad{} & {(\mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{result}’}~~{{\mathtt{valtype}}}_{I}~~\mbox{‘\texttt{{)}}’})^\ast} \\ +& {{\mathtt{comptype}}}_{I} & ::= & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{struct}’}~~{({\mathit{ft}}, {{\mathit{id}}^?})^\ast}{:}{\mathtt{list}}({{\mathtt{field}}}_{I})~~\mbox{‘\texttt{{)}}’} & \quad\Rightarrow\quad{} & (\mathsf{struct}~{{\mathit{ft}}^\ast}, \{ \mathsf{fields}~({({{\mathit{id}}^?})^\ast}) \}) \\ +& & | & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{array}’}~~{\mathit{ft}}{:}{{\mathtt{fieldtype}}}_{I}~~\mbox{‘\texttt{{)}}’} & \quad\Rightarrow\quad{} & (\mathsf{array}~{\mathit{ft}}, \{ \mathsf{fields}~(\epsilon) \}) \\ +& & | & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{func}’}~~{(t_1, {{\mathit{id}}^?})^\ast}{:}{\mathtt{list}}({{\mathtt{param}}}_{I})~~{t_2^\ast}{:}{\mathtt{list}}({{\mathtt{result}}}_{I})~~\mbox{‘\texttt{{)}}’} & \quad\Rightarrow\quad{} & (\mathsf{func}~{t_1^\ast} \rightarrow {t_2^\ast}, \{ \mathsf{fields}~(\epsilon) \}) \\ \end{array} $$ @@ -12915,9 +12915,9 @@ $$ $$ \begin{array}[t]{@{}lrrl@{}l@{}l@{}l@{}} & {{\mathtt{memarg}}}_{N} & ::= & n{:}{{\mathtt{align}}}_{N}~~m{:}{\mathtt{offset}} & \quad\Rightarrow\quad{} & \{ \mathsf{align}~n,\;\allowbreak \mathsf{offset}~m \} \\ -& {\mathtt{offset}} & ::= & \mbox{‘\texttt{offset{=}}’}~~n{:}{\mathtt{u64}} & \quad\Rightarrow\quad{} & n \\ +& {\mathtt{offset}} & ::= & \mbox{‘\texttt{offset{=}}’}~~m{:}{\mathtt{u64}} & \quad\Rightarrow\quad{} & m \\ & & | & \epsilon & \quad\Rightarrow\quad{} & 0 \\ -& {{\mathtt{align}}}_{N} & ::= & \mbox{‘\texttt{align{=}}’}~~m{:}{\mathtt{u64}} & \quad\Rightarrow\quad{} & m & \quad \mbox{if}~ m = {2^{n}} \\ +& {{\mathtt{align}}}_{N} & ::= & \mbox{‘\texttt{align{=}}’}~~m{:}{\mathtt{u64}} & \quad\Rightarrow\quad{} & n & \quad \mbox{if}~ m = {2^{n}} \\ & & | & \epsilon & \quad\Rightarrow\quad{} & N \\ & {\mathtt{laneidx}} & ::= & i{:}{\mathtt{u8}} & \quad\Rightarrow\quad{} & i \\ & {{\mathtt{plaininstr}}}_{I} & ::= & \dots \\ @@ -13013,9 +13013,9 @@ $$ & & | & \mbox{‘\texttt{i64.store32}’}~~{{\mathtt{memarg}}}_{4} & \quad\equiv\quad{} & \mbox{‘\texttt{i64.store32}’}~~\mbox{‘\texttt{0}’}~~{{\mathtt{memarg}}}_{4} \\ & & | & \mbox{‘\texttt{v128.store}’}~~{{\mathtt{memarg}}}_{16} & \quad\equiv\quad{} & \mbox{‘\texttt{v128.store}’}~~\mbox{‘\texttt{0}’}~~{{\mathtt{memarg}}}_{16} \\ & & | & \mbox{‘\texttt{v128.store8\_lane}’}~~{{\mathtt{memarg}}}_{1}~~{\mathtt{laneidx}} & \quad\equiv\quad{} & \mbox{‘\texttt{v128.store8\_lane}’}~~\mbox{‘\texttt{0}’}~~{{\mathtt{memarg}}}_{1}~~{\mathtt{laneidx}} \\ -& & | & \mbox{‘\texttt{v128.store16\_lane}’}~~{{\mathtt{memarg}}}_{2}~~{\mathtt{laneidx}} & \quad\equiv\quad{} & \mbox{‘\texttt{v128.store16\_lane}’}~~\mbox{‘\texttt{0}’}~~{{\mathtt{memarg}}}_{1}~~{\mathtt{laneidx}} \\ -& & | & \mbox{‘\texttt{v128.store32\_lane}’}~~{{\mathtt{memarg}}}_{4}~~{\mathtt{laneidx}} & \quad\equiv\quad{} & \mbox{‘\texttt{v128.store32\_lane}’}~~\mbox{‘\texttt{0}’}~~{{\mathtt{memarg}}}_{1}~~{\mathtt{laneidx}} \\ -& & | & \mbox{‘\texttt{v128.store64\_lane}’}~~{{\mathtt{memarg}}}_{8}~~{\mathtt{laneidx}} & \quad\equiv\quad{} & \mbox{‘\texttt{v128.store64\_lane}’}~~\mbox{‘\texttt{0}’}~~{{\mathtt{memarg}}}_{1}~~{\mathtt{laneidx}} \\ +& & | & \mbox{‘\texttt{v128.store16\_lane}’}~~{{\mathtt{memarg}}}_{2}~~{\mathtt{laneidx}} & \quad\equiv\quad{} & \mbox{‘\texttt{v128.store16\_lane}’}~~\mbox{‘\texttt{0}’}~~{{\mathtt{memarg}}}_{2}~~{\mathtt{laneidx}} \\ +& & | & \mbox{‘\texttt{v128.store32\_lane}’}~~{{\mathtt{memarg}}}_{4}~~{\mathtt{laneidx}} & \quad\equiv\quad{} & \mbox{‘\texttt{v128.store32\_lane}’}~~\mbox{‘\texttt{0}’}~~{{\mathtt{memarg}}}_{4}~~{\mathtt{laneidx}} \\ +& & | & \mbox{‘\texttt{v128.store64\_lane}’}~~{{\mathtt{memarg}}}_{8}~~{\mathtt{laneidx}} & \quad\equiv\quad{} & \mbox{‘\texttt{v128.store64\_lane}’}~~\mbox{‘\texttt{0}’}~~{{\mathtt{memarg}}}_{8}~~{\mathtt{laneidx}} \\ & & | & \mbox{‘\texttt{memory.size}’} & \quad\equiv\quad{} & \mbox{‘\texttt{memory.size}’}~~\mbox{‘\texttt{0}’} \\ & & | & \mbox{‘\texttt{memory.grow}’} & \quad\equiv\quad{} & \mbox{‘\texttt{memory.grow}’}~~\mbox{‘\texttt{0}’} \\ & & | & \mbox{‘\texttt{memory.fill}’} & \quad\equiv\quad{} & \mbox{‘\texttt{memory.fill}’}~~\mbox{‘\texttt{0}’} \\ diff --git a/spectec/test-middlend/TEST.md b/spectec/test-middlend/TEST.md index ad94f8c30..0a4552419 100644 --- a/spectec/test-middlend/TEST.md +++ b/spectec/test-middlend/TEST.md @@ -9221,7 +9221,7 @@ grammar Bstartsec : start? ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Belemkind : reftype ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec - prod 0x00 => REF_reftype(?(NULL_null), FUNC_heaptype) + prod 0x00 => REF_reftype(?(), FUNC_heaptype) ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Belem : elem @@ -9976,9 +9976,9 @@ grammar Tcomptype_(I : I) : (comptype, idctxt) ;; ../../../../specification/wasm-latest/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-latest/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 []}) + prod{ft : fieldtype} {{"("} {"array"} {ft:Tfieldtype_(I)} {")"}} => (ARRAY_comptype(ft), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [[?(`%`_name([]))]], TYPEDEFS []}) ;; ../../../../specification/wasm-latest/6.2-text.types.spectec - prod{`t_1*` : valtype*, `t_2*` : valtype*, `id?*` : char?*} {{"("} {"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 []}) + prod{`t_1*` : valtype*, `t_2*` : valtype*, `id?*` : char?*} {{"("} {"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 [[?(`%`_name([]))]], TYPEDEFS []}) ;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tfinal : final @@ -10102,24 +10102,24 @@ grammar Tlaneidx : laneidx prod{i : u8} i:Tu8 => i ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec -grammar Talign_(N : N) : u64 +grammar Talign_(N : N) : u32 ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec - prod{m : m, n : n} {{"align="} {`%`_u64(m):Tu64}} => `%`_u64(m) + prod{n : n, m : m} {{"align="} {`%`_u64(m):Tu64}} => `%`_u32(n) -- if (m = (2 ^ n)) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec - prod eps => `%`_u64(N) + prod eps => `%`_u32(N) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Toffset : u64 ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec - prod{n : n} {{"offset="} {`%`_u64(n):Tu64}} => `%`_u64(n) + prod{m : m} {{"offset="} {`%`_u64(m):Tu64}} => `%`_u64(m) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod eps => `%`_u64(0) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tmemarg_(N : N) : memarg ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec - prod{n : n, m : m} {{`%`_u64(n):Talign_(N)} {`%`_u64(m):Toffset}} => {ALIGN `%`_u32(n), OFFSET `%`_u64(m)} + prod{n : n, m : m} {{`%`_u32(n):Talign_(N)} {`%`_u64(m):Toffset}} => {ALIGN `%`_u32(n), OFFSET `%`_u64(m)} ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tplaininstr_(I : I) : instr @@ -20638,7 +20638,7 @@ grammar Bstartsec : start? ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Belemkind : reftype ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec - prod 0x00 => REF_reftype(?(NULL_null), FUNC_heaptype) + prod 0x00 => REF_reftype(?(), FUNC_heaptype) ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Belem : elem @@ -21393,9 +21393,9 @@ grammar Tcomptype_(I : I) : (comptype, idctxt) ;; ../../../../specification/wasm-latest/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-latest/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 []}) + prod{ft : fieldtype} {{"("} {"array"} {ft:Tfieldtype_(I)} {")"}} => (ARRAY_comptype(ft), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [[?(`%`_name([]))]], TYPEDEFS []}) ;; ../../../../specification/wasm-latest/6.2-text.types.spectec - prod{`t_1*` : valtype*, `t_2*` : valtype*, `id?*` : char?*} {{"("} {"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 []}) + prod{`t_1*` : valtype*, `t_2*` : valtype*, `id?*` : char?*} {{"("} {"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 [[?(`%`_name([]))]], TYPEDEFS []}) ;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tfinal : final @@ -21519,24 +21519,24 @@ grammar Tlaneidx : laneidx prod{i : u8} i:Tu8 => i ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec -grammar Talign_(N : N) : u64 +grammar Talign_(N : N) : u32 ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec - prod{m : m, n : n} {{"align="} {`%`_u64(m):Tu64}} => `%`_u64(m) + prod{n : n, m : m} {{"align="} {`%`_u64(m):Tu64}} => `%`_u32(n) -- if (m = (2 ^ n)) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec - prod eps => `%`_u64(N) + prod eps => `%`_u32(N) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Toffset : u64 ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec - prod{n : n} {{"offset="} {`%`_u64(n):Tu64}} => `%`_u64(n) + prod{m : m} {{"offset="} {`%`_u64(m):Tu64}} => `%`_u64(m) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod eps => `%`_u64(0) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tmemarg_(N : N) : memarg ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec - prod{n : n, m : m} {{`%`_u64(n):Talign_(N)} {`%`_u64(m):Toffset}} => {ALIGN `%`_u32(n), OFFSET `%`_u64(m)} + prod{n : n, m : m} {{`%`_u32(n):Talign_(N)} {`%`_u64(m):Toffset}} => {ALIGN `%`_u32(n), OFFSET `%`_u64(m)} ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tplaininstr_(I : I) : instr @@ -32235,7 +32235,7 @@ grammar Bstartsec : start? ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Belemkind : reftype ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec - prod 0x00 => REF_reftype(?(NULL_null), FUNC_heaptype) + prod 0x00 => REF_reftype(?(), FUNC_heaptype) ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Belem : elem @@ -32990,9 +32990,9 @@ grammar Tcomptype_(I : I) : (comptype, idctxt) ;; ../../../../specification/wasm-latest/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-latest/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 []}) + prod{ft : fieldtype} {{"("} {"array"} {ft:Tfieldtype_(I)} {")"}} => (ARRAY_comptype(ft), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [[?(`%`_name([]))]], TYPEDEFS []}) ;; ../../../../specification/wasm-latest/6.2-text.types.spectec - prod{`t_1*` : valtype*, `t_2*` : valtype*, `id?*` : char?*} {{"("} {"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 []}) + prod{`t_1*` : valtype*, `t_2*` : valtype*, `id?*` : char?*} {{"("} {"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 [[?(`%`_name([]))]], TYPEDEFS []}) ;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tfinal : final @@ -33116,24 +33116,24 @@ grammar Tlaneidx : laneidx prod{i : u8} i:Tu8 => i ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec -grammar Talign_(N : N) : u64 +grammar Talign_(N : N) : u32 ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec - prod{m : m, n : n} {{"align="} {`%`_u64(m):Tu64}} => `%`_u64(m) + prod{n : n, m : m} {{"align="} {`%`_u64(m):Tu64}} => `%`_u32(n) -- if (m = (2 ^ n)) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec - prod eps => `%`_u64(N) + prod eps => `%`_u32(N) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Toffset : u64 ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec - prod{n : n} {{"offset="} {`%`_u64(n):Tu64}} => `%`_u64(n) + prod{m : m} {{"offset="} {`%`_u64(m):Tu64}} => `%`_u64(m) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod eps => `%`_u64(0) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tmemarg_(N : N) : memarg ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec - prod{n : n, m : m} {{`%`_u64(n):Talign_(N)} {`%`_u64(m):Toffset}} => {ALIGN `%`_u32(n), OFFSET `%`_u64(m)} + prod{n : n, m : m} {{`%`_u32(n):Talign_(N)} {`%`_u64(m):Toffset}} => {ALIGN `%`_u32(n), OFFSET `%`_u64(m)} ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tplaininstr_(I : I) : instr From fdb3bd0334bc407df98691af596f58d3957b35c0 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Wed, 11 Mar 2026 17:11:30 +0100 Subject: [PATCH 088/235] [spectec] Add syntax for forall/exists atoms --- spectec/doc/Language.md | 4 ++-- spectec/doc/example/output/NanoWasm.pdf | Bin 245508 -> 245508 bytes spectec/src/frontend/lexer.mll | 2 ++ spectec/src/frontend/parser.mly | 6 ++++-- spectec/src/xl/atom.ml | 12 +++++++++--- 5 files changed, 17 insertions(+), 7 deletions(-) diff --git a/spectec/doc/Language.md b/spectec/doc/Language.md index a9dbdbab2..565ddf947 100644 --- a/spectec/doc/Language.md +++ b/spectec/doc/Language.md @@ -162,7 +162,7 @@ atomop ::= "`=" | "`=/=" | "`<" | "`>" | "`<=" | "`>=" "`~" | "`/\" | "`\/" | "`==>" | "`<=>" "`<-" - "(/\)" | "(\/)" | "(+)" | "(*)" | "(++)" + "(/\)" | "(\/)" | "(!)" | "(?)" | "(+)" | "(*)" | "(++)" ":_" | "=_" | "==_" | "~~_" | "->_" | "=>_" | "~>_" | "~>*_" | "|-_" | "-|_" ``` @@ -1384,7 +1384,7 @@ atomop ::= "`=" | "`=/=" | "`<" | "`>" | "`<=" | "`>=" "`~" | "`/\" | "`\/" | "`==>" | "`<=>" "`<-" - "(/\)" | "(\/)" | "(+)" | "(*)" | "(++)" + "(/\)" | "(\/)" | "(!)" | "(?)" | "(+)" | "(*)" | "(++)" ":_" | "=_" | "==_" | "~~_" | "->_" | "=>_" | "~>_" | "~>*_" | "|-_" | "-|_" ``` diff --git a/spectec/doc/example/output/NanoWasm.pdf b/spectec/doc/example/output/NanoWasm.pdf index 096d81d5ba6431b13076371450cb3d759c424152..6517f8a798a30f91a4dfddd1cd992fbcbb57fd97 100644 GIT binary patch delta 1101 zcmZqq$Jg?YZ-c22lcDA01I(KBspoyYnH_o99{m2(C6j)j*Ylb3?r_J}rlyhu&TkWM ztjj%^`rwltsPGw$YFJ3P& zOSOsaiS03pUYqbiP|E)IrO;OkYp!`eTP@Y1a`w6S{d;Mjxie1rcs5%Jw_6D_0x{Ee zD`Dnq3$+am4b2TKj4ZSb4Al(`)HS*Eee+XX5=&AQG+eBV42;YSjA2T)TW@79WDBrx zv@kF*0b&bh7guvvM@JJ!b7xB@Qwsw#Q*(1m3p)iHf=Xh!^nFtE(n~TF%q%DGXV$8h zonq-P8Yt1W|2^Mqg{B1!CyFN43J1E}xjE%&6IaKgL##_Sf8v)A&W_Gixp?E_Q3+w^ z)HSBFelYudVb4fRPE1_%dC%F&<@aV5KbuoM&pIvb|D835jM6%Hmi`aiHOo-n)~9F! z$PaiN@W$`q0RwddKn%!ly;|2P)x3l-=iu7z0WBwsjetgwy8UANaSlb71fvSrKc1Xcs@ zLmMtAmmk~|T{d5D>&(!C$(|GKw|GyJE~+`b_OB|x`=gVe!&IMi32i^f8C!H>BWHkW zirFF7vNjgC+Y`2(kealW|H{tZo-DC9JU2ThE2|b^* zJ??p^_eHt%-3zLhSZ?==ZmU0a-_k%G1gA0nVnK)O0u~}5=pme(a3}ZG)VO(3MfLkH zExG+zaH)5mwg1$h_Av7Om^lh^b1FP~Ce|HCu$T@~ delta 1102 zcmZqq$Jg?YZ-c22laayX1I(KBspoyO4;%2XJ=k5}+GnOSOXYT8jciWyA-2VBvb*Gb zW^HXtgEvUjL(WY%n0JP zU%pn*DMciA`5!j#&m|AM_JiVyDz`RKP}Y1|NHU5wVxjy*|?~H$N0G8GMNR5y)Sm#>%VW?JYnu6*vvf3eF?4n|Gc$IvQ?MbZB$i9xCp9m(i9x% zs#Co4eFG)h_P>8~Z*`Pz?#0tD|E_x#R;uY9y*EBK>dPu;;d%!iAK#-4f`*?|os@i3 zjxFi5SNPND=fk5S^zHL3o67IIuSZp{-8_Hu*)#ukMea;JBUJqQ*IJYLhWeI1MH3iT zm$Z9uo?y-{VfXyGfMLz$tCP4K1#c`^tti?ow4vTJ+*gaW`heJ7#vsWXvz0!*_*NXr zr}g5~%T+t>uxq{Kdg0NTXQ1r$!o;Qf(-w`T$x~gVla>d%Eq_`n;U_6t@h9%wLW(T~8c zP3x;PWAmm))-UyYmS-HEzmUCTcj(y{dGZ!azYYc(F!VJ(e!ybE>DTC3AjQ*Y{6NQo z{akZm0b>l)-j|o}y~q@I?At4GVEPW$b;Zd%Jv&0{FFgn};MCiF)h584Pi=*mdUWc|^ zm~i{Stmtq5_dB&mvYyuI`m->2)7=S=Z|CLeOUiVrpO2n8LA&b?n_KBg?>^lIEyc}( zdK-*Y3~se;alJNS&E5sq-j?{SPDnrDH;2cvv$L^E@vDHIfli8qmn-`Ole-I!=UQB> z+96n*C%(O;)8ydCdX1gZ~|dxHbX5F8f+35un+-34`IuKlevGk%FT-^+8&g7 zmuB2vecWrM{(beS$L{{)(emA4UKcp4 "|" | BigAnd -> "(/\\)" | BigOr -> "(\\/)" + | BigForall -> "(!)" + | BigExists -> "(?)" | BigAdd -> "(+)" | BigMul -> "(*)" | BigCat -> "(++)" @@ -228,14 +232,16 @@ let name atom = | PlusMinus -> "plusminus" (* Latex: \pm *) | MinusPlus -> "minusplus" (* Latex: \mp *) | Times -> "times" - | Not -> "not" (* Latex: neg *) - | And -> "and" (* Latex: land *) - | Or -> "or" (* Latex: lor *) + | Not -> "not" (* Latex: \neg *) + | And -> "and" (* Latex: \land *) + | Or -> "or" (* Latex: \lor *) | Comma -> "comma" (* Latex: , *) | Cat -> "cat" (* Latex: \oplus *) | Bar -> "bar" (* Latex: | *) | BigAnd -> "bigand" (* Latex: \bigwedge *) | BigOr -> "bigor" (* Latex: \bigvee *) + | BigForall -> "forall" + | BigExists -> "exists" | BigAdd -> "bigadd" (* Latex: \Sigma *) | BigMul -> "bigmul" (* Latex: \Pi *) | BigCat -> "bigcat" (* Latex: \bigoplus *) From f4d24bc62afceb1851259296408442cd178df6ad Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Wed, 11 Mar 2026 17:51:54 +0100 Subject: [PATCH 089/235] [spectec] Support subscripting prec/succ --- spectec/doc/Language.md | 4 ++-- spectec/doc/example/output/NanoWasm.pdf | Bin 245508 -> 245508 bytes spectec/src/frontend/lexer.mll | 2 ++ spectec/src/frontend/parser.mly | 6 ++++-- spectec/src/xl/atom.ml | 15 ++++++++++++--- 5 files changed, 20 insertions(+), 7 deletions(-) diff --git a/spectec/doc/Language.md b/spectec/doc/Language.md index 565ddf947..cc8d68c70 100644 --- a/spectec/doc/Language.md +++ b/spectec/doc/Language.md @@ -163,7 +163,7 @@ atomop ::= "`~" | "`/\" | "`\/" | "`==>" | "`<=>" "`<-" "(/\)" | "(\/)" | "(!)" | "(?)" | "(+)" | "(*)" | "(++)" - ":_" | "=_" | "==_" | "~~_" | "->_" | "=>_" | "~>_" | "~>*_" | "|-_" | "-|_" + ":_" | "=_" | "==_" | "~~_" | "->_" | "=>_" | "~>_" | "~>*_" | "<<_" | ">>_" | "|-_" | "-|_" ``` ##### Type Aliases @@ -1385,7 +1385,7 @@ atomop ::= "`~" | "`/\" | "`\/" | "`==>" | "`<=>" "`<-" "(/\)" | "(\/)" | "(!)" | "(?)" | "(+)" | "(*)" | "(++)" - ":_" | "=_" | "==_" | "~~_" | "->_" | "=>_" | "~>_" | "~>*_" | "|-_" | "-|_" + ":_" | "=_" | "==_" | "~~_" | "->_" | "=>_" | "~>_" | "~>*_" | "<<_" | ">>_" | "|-_" | "-|_" ``` diff --git a/spectec/doc/example/output/NanoWasm.pdf b/spectec/doc/example/output/NanoWasm.pdf index 6517f8a798a30f91a4dfddd1cd992fbcbb57fd97..55a94fd237f660644f89ec93da49f7332b312d84 100644 GIT binary patch delta 110 zcmZqq$Jg?Yuc3vpg=q`3@KzQRV-wTq;#-;J!L038TbT>loGlFu%$$v!+zc!&ER4)e hOpIMD9F3d|%^h8gU0sZwOzaeF2r1eAZa1?SGXSwX9Vq|+ delta 110 zcmZqq$Jg?Yuc3vpg=q`3@KzQB3nPo^;#-;J!L038TbT>loGlzJ3=B+w*uvSx)!fz5 g(Ztc*+0x0>!obYb+}zT_PQiwdlI`zyGm9|;0Jo?eH2?qr diff --git a/spectec/src/frontend/lexer.mll b/spectec/src/frontend/lexer.mll index 25d54cd30..c10765b6c 100644 --- a/spectec/src/frontend/lexer.mll +++ b/spectec/src/frontend/lexer.mll @@ -209,6 +209,8 @@ and token = parse | "~>*_" { SQARROWSTARSUB } | "<<" { PREC } | ">>" { SUCC } + | "<<_" { PRECSUB } + | ">>_" { SUCCSUB } | "|-" { TURNSTILE } | "-|" { TILESTURN } | "|-_" { TURNSTILESUB } diff --git a/spectec/src/frontend/parser.mly b/spectec/src/frontend/parser.mly index 857290f56..94f5ab086 100644 --- a/spectec/src/frontend/parser.mly +++ b/spectec/src/frontend/parser.mly @@ -180,7 +180,7 @@ and short_alt_prod' = function %token NOT AND OR IMPL DIMPL %token QUEST PLUS MINUS STAR SLASH BACKSLASH UP CAT PLUSMINUS MINUSPLUS %token ARROW ARROW2 ARROWSUB ARROW2SUB SQARROW SQARROWSUB SQARROWSTAR SQARROWSTARSUB -%token MEM NOTMEM PREC SUCC TURNSTILE TILESTURN TURNSTILESUB TILESTURNSUB +%token MEM NOTMEM PREC SUCC PRECSUB SUCCSUB TURNSTILE TILESTURN TURNSTILESUB TILESTURNSUB %token DOLLAR TICK %token BOT TOP %token HOLE MULTIHOLE NOTHING FUSE FUSEFUSE LATEX @@ -200,7 +200,7 @@ and short_alt_prod' = function %left AND %nonassoc TURNSTILE TURNSTILESUB %nonassoc TILESTURN TILESTURNSUB -%right SQARROW SQARROWSUB SQARROWSTAR SQARROWSTARSUB PREC SUCC BIGAND BIGOR BIGFORALL BIGEXISTS BIGADD BIGMUL BIGCAT +%right SQARROW SQARROWSUB SQARROWSTAR SQARROWSTARSUB PREC SUCC PRECSUB SUCCSUB BIGAND BIGOR BIGFORALL BIGEXISTS BIGADD BIGMUL BIGCAT %left COLON SUB SUP ASSIGN EQUIV APPROX COLONSUB EQUIVSUB APPROXSUB %left COMMA COMMA_NL %right EQ NE LT GT LE GE MEM NOTMEM EQSUB @@ -467,6 +467,8 @@ check_atom : | APPROXSUB { Atom.ApproxSub } | SQARROWSUB { Atom.SqArrowSub } | SQARROWSTARSUB { Atom.SqArrowStarSub } + | PRECSUB { Atom.PrecSub } + | SUCCSUB { Atom.SuccSub } | TILESTURNSUB { Atom.TilesturnSub } | TURNSTILESUB { Atom.TurnstileSub } diff --git a/spectec/src/xl/atom.ml b/spectec/src/xl/atom.ml index e5e33d3cd..73920e7ca 100644 --- a/spectec/src/xl/atom.ml +++ b/spectec/src/xl/atom.ml @@ -47,6 +47,8 @@ and atom' = | SqArrowStarSub (* `~>*_` *) | Prec (* `<<` *) | Succ (* `>>` *) + | PrecSub (* `<<_` *) + | SuccSub (* `>>_` *) | Turnstile (* `|-` *) | TurnstileSub (* `|-_` *) | Tilesturn (* `-|` *) @@ -84,7 +86,8 @@ let is_sub atom = match atom.it with | Atom id -> id <> "" && id.[String.length id - 1] = '_' | ArrowSub | Arrow2Sub | ColonSub | EqualSub | EquivSub | ApproxSub - | SqArrowSub | SqArrowStarSub | TurnstileSub | TilesturnSub -> true + | SqArrowSub | SqArrowStarSub | PrecSub | SuccSub + | TurnstileSub | TilesturnSub -> true | _ -> false let sub atom1 atom2 = @@ -98,6 +101,8 @@ let sub atom1 atom2 = | ApproxSub, Approx | SqArrowSub, SqArrow | SqArrowStarSub, SqArrowStar + | PrecSub, Prec + | SuccSub, Succ | TurnstileSub, Turnstile | TilesturnSub, Tilesturn -> true | _, _ -> false @@ -144,9 +149,11 @@ let to_string atom = | SqArrowStarSub -> "~>*_" | Prec -> "<<" | Succ -> ">>" + | PrecSub -> "<<_" + | SuccSub -> ">>_" | Tilesturn -> "-|" - | TilesturnSub -> "-|_" | Turnstile -> "|-" + | TilesturnSub -> "-|_" | TurnstileSub -> "|-_" | Quest -> "^?" | Star -> "^*" @@ -220,9 +227,11 @@ let name atom = | SqArrowStarSub -> "sqarrowstar_" (* Latex: \hookrightarrow^\ast with subscript *) | Prec -> "prec" | Succ -> "succ" + | PrecSub -> "prec_" + | SuccSub -> "succ_" | Tilesturn -> "dashv" - | TilesturnSub -> "dashv_" (* Latex: \dashv with subscript *) | Turnstile -> "vdash" + | TilesturnSub -> "dashv_" (* Latex: \dashv with subscript *) | TurnstileSub -> "vdash_" (* Latex: \vdash with subscript *) | Quest -> "quest" (* Latex: ^? *) | Star -> "ast" (* Latex: ^\ast *) From 74b327f6b0807a800d255277db94e7cc50288282 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Thu, 12 Mar 2026 11:27:27 +0100 Subject: [PATCH 090/235] [spectec] Simplify IL semantics type syntax --- spectec/doc/semantics/il/1-syntax.spectec | 15 +++------------ spectec/doc/semantics/il/5-reduction.spectec | 2 +- 2 files changed, 4 insertions(+), 13 deletions(-) diff --git a/spectec/doc/semantics/il/1-syntax.spectec b/spectec/doc/semantics/il/1-syntax.spectec index 5278bf572..9e9ca280e 100644 --- a/spectec/doc/semantics/il/1-syntax.spectec +++ b/spectec/doc/semantics/il/1-syntax.spectec @@ -7,30 +7,21 @@ syntax mixop = atom** ;; Types -syntax booltyp = - | BOOL ;; `bool` - syntax numtyp = | NAT ;; `nat` | INT ;; `int` | RAT ;; `rat` | REAL ;; `real` -syntax texttyp = - | TEXT ;; `text` - syntax optyp = - | booltyp + | BOOL ;; `bool` + | TEXT ;; `text` | numtyp - | texttyp -syntax plaintyp = +syntax typ = | optyp | TUP typbind* ;; (id : typ , ... , id : typ) | ITER typ iter ;; typ iter - -syntax typ = - | plaintyp | VAR id arg* ;; typid(arg*) syntax deftyp = diff --git a/spectec/doc/semantics/il/5-reduction.spectec b/spectec/doc/semantics/il/5-reduction.spectec index 2b3c2563a..b910da1fa 100644 --- a/spectec/doc/semantics/il/5-reduction.spectec +++ b/spectec/doc/semantics/il/5-reduction.spectec @@ -8,7 +8,7 @@ relation Eq_typ: S |- typ == typ rule Expand_typ/plain: S |- t => ALIAS t - -- if t = plaintyp + ;; nop if t is VAR rule Expand_typ/alias: S |- VAR x a* => dt From 44801dd581fd63316fa9aa52bbcf830994c862cb Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Thu, 12 Mar 2026 11:39:33 +0100 Subject: [PATCH 091/235] [spectec] Fix EQ/NE reduction in IL semantics --- spectec/doc/semantics/il/5-reduction.spectec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spectec/doc/semantics/il/5-reduction.spectec b/spectec/doc/semantics/il/5-reduction.spectec index b910da1fa..a78da6ab2 100644 --- a/spectec/doc/semantics/il/5-reduction.spectec +++ b/spectec/doc/semantics/il/5-reduction.spectec @@ -123,11 +123,11 @@ rule Step_exp/CMP-EQ-true: rule Step_exp/CMP-EQ-false: S |- CMP EQ val_1 val_2 ~> BOOL false - -- if val_1 = val_2 + -- if val_1 =/= val_2 rule Step_exp/CMP-NE-false: S |- CMP NE e_1 e_2 ~> BOOL false - -- if e_1 =/= e_2 + -- if e_1 = e_2 rule Step_exp/CMP-NE-true: S |- CMP NE val_1 val_2 ~> BOOL true From 12b9dbc57e1430a18b41ba5bd3842bdd4827cff1 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Mon, 16 Mar 2026 10:11:33 +0100 Subject: [PATCH 092/235] [spectec] More functionality for the debugger (#2096) Co-authored-by: ShinWonho <50018375+ShinWonho@users.noreply.github.com> --- spectec/src/backend-interpreter/debugger.ml | 155 +++++++++++------- spectec/src/backend-interpreter/ds.ml | 45 ++++- spectec/src/backend-interpreter/ds.mli | 7 + .../src/backend-interpreter/interpreter.ml | 64 ++++---- 4 files changed, 182 insertions(+), 89 deletions(-) diff --git a/spectec/src/backend-interpreter/debugger.ml b/spectec/src/backend-interpreter/debugger.ml index 71dcdf145..afe3380a1 100644 --- a/spectec/src/backend-interpreter/debugger.ml +++ b/spectec/src/backend-interpreter/debugger.ml @@ -19,28 +19,56 @@ let state = ref (Step 1) let help_msg = " - h - help: print help message - b {algorithm name}* - break {algorithm name}*: add break points - rm {algorithm name}* - remove {algorithm name}*: remove break points - bp - breakpoints: print all break points - s {number}? - step {number}?: take n steps - si {number}? - stepinstr {number}?: step n AL instructions - c {number}? - continue {number}?: continue steps until meet n break points - al: print al context stack - wasm: print wasm context stack - store {field} {index}: print a value in store - lookup {variable name}: lookup the variable - q - quit: quit + s[tep] {number}? + Take n steps + si|stepinstr {number}? + Step over n AL instructions + c[ontinue] {number}? + Continue until the n-th break point + b[reak] {algorithm name}* + Add break points + rm|remove {algorithm name}* + Remove break points + bp|breakpoints + Print all break points + al + Print AL context stack + wasm + Print Wasm context stack + v[ar] {variable name} {field|index}* + Print a value selected from an AL variable + f[rame] {field|index}* + Print a value selected from the current Wasm frame + l[ocal] {index} {field|index}* + Print a value selected from the current Wasm frame's locals + (shorthand for `frame LOCALS`) + m[odule] {field} {index} + Print an index from the current Wasm frame's module + (shorthand for `frame MODULE`) + st[ore] {field|index}* + Print a value from the Wasm store + z|state {field|index}* + Print a value indexed from the current Wasm frame's module + (shorthand for the composition of module and store lookup) + q[uit] + Quit + h[elp] + Print help message " +let print_path path = + if int_of_string_opt path <> None then + "[" ^ path ^ "]" + else + "." ^ path + +let print_value access root paths = + print_endline ( + root ^ String.concat "" (List.map print_path paths) ^ + try " = " ^ string_of_value (access paths) + with _ -> " does not exist" + ) + let allow_command ctx = let is_entry name il = name |> lookup_algo |> body_of_algo = il in @@ -71,77 +99,86 @@ let rec do_debug ctx = let _ = print_string "\ndebugger> " in read_line () |> String.split_on_char ' ' - |> handle_command ctx; + |> List.filter ((<>) "") + |> handle_command ctx + and handle_command ctx = function | ("h" | "help") :: _ -> print_endline help_msg; do_debug ctx - | ("b" | "break") :: t -> break_points := !break_points @ t; do_debug ctx - | ("rm" | "remove") :: t -> - break_points := List.filter (fun e -> not (List.mem e t)) !break_points; + | ("b" | "break") :: t -> + if t = [] then + print_endline (String.concat " " !break_points) + else + break_points := !break_points @ t; do_debug ctx - | ("bp" | "breakpoints") :: _ -> + | ("bp" | "breakpoints") :: [] -> print_endline (String.concat " " !break_points); do_debug ctx + | ("rm" | "remove") :: t -> + break_points := List.filter (fun e -> not (List.mem e t)) !break_points; + do_debug ctx | ("s" | "step") :: t -> (match t with - | n :: _ when Option.is_some (int_of_string_opt n) -> + | [] -> + state := Step 1 + | [n] when int_of_string_opt n <> None -> state := Step (int_of_string n) | _ -> - state := Step 1 + handle_command ctx ["help"] ) | ("si" | "stepinstr") :: t -> (match ctx with | (AlContext.Al (name, _, il, _, _) | AlContext.Enter (name, il, _)) :: _ - when List.length il > 0 -> + when List.length il > 0 -> (match t with - | n :: _ when Option.is_some (int_of_string_opt n) -> + | [] -> + state := StepInstr (name, 1) + | [n] when int_of_string_opt n <> None -> state := StepInstr (name, int_of_string n) | _ -> - state := StepInstr (name, 1) + handle_command ctx ["help"] ) | _ -> handle_command ctx ("step" :: t) ) | ("c" | "continue") :: t -> (match t with - | n :: _ when Option.is_some (int_of_string_opt n) -> + | [] -> + state := Continue 1 + | [n] when int_of_string_opt n <> None -> state := Continue (int_of_string n) | _ -> - state := Continue 1 + handle_command ctx ["help"] ) - | "al" :: _ -> - ctx - |> List.map AlContext.string_of_context - |> List.iter print_endline; + | "al" :: [] -> + ctx |> List.map AlContext.string_of_context |> List.iter print_endline; do_debug ctx - | "wasm" :: _ -> + | "wasm" :: [] -> WasmContext.string_of_context_stack () |> print_endline; do_debug ctx - | "store" :: field :: n :: _ -> - (try - let idx = int_of_string n in - Store.access field - |> unwrap_listv - |> (!) - |> (fun arr -> Array.get arr idx) - |> string_of_value - |> print_endline; - with _ -> () - ); + | ("st" | "store") :: t -> + print_value Access.access_store "store" t; do_debug ctx - | "lookup" :: s :: _ -> - (match ctx with - | (Al (_, _, _, env, _) | Enter (_, _, env)) :: _ -> - lookup_env_opt s env - |> Option.map string_of_value - |> Option.iter print_endline; - | _ -> () - ); + | ("f" | "frame") :: t -> + print_value Access.access_frame "frame" t; do_debug ctx - | ("q" | "quit") :: _ -> debug := false - | _ -> do_debug ctx + | ("l" | "local") :: t -> + print_value Access.access_frame "frame" ("LOCALS" :: t); + do_debug ctx + | ("m" | "module") :: t -> + print_value Access.access_frame "frame" ("MODULE" :: t); + do_debug ctx + | ("z" | "state") :: t -> + print_value Access.access_state "state" t; + do_debug ctx + | ("v" | "var") :: s :: t -> + print_value (Access.access_env ctx s) s t; + do_debug ctx + | ("q" | "quit") :: [] -> + debug := false + | _ -> + handle_command ctx ["help"] let run ctx = - if !debug && allow_command ctx then do_debug ctx diff --git a/spectec/src/backend-interpreter/ds.ml b/spectec/src/backend-interpreter/ds.ml index ef138a84e..bbfd7e7bd 100644 --- a/spectec/src/backend-interpreter/ds.ml +++ b/spectec/src/backend-interpreter/ds.ml @@ -205,7 +205,7 @@ module AlContext = struct let string_of_context = function | Al (s, args, il, _, _) -> - Printf.sprintf "Al %s (%s):%s" + Printf.sprintf "Al %s(%s):%s" s (args |> List.map string_of_arg |> String.concat ", ") (string_of_instrs il) @@ -413,3 +413,46 @@ let init algos = (* Initialize store *) Store.init () + + +(* Debugger aids *) + +module Access = struct + let rec access_paths paths v = + match paths with + | [] -> v + | path :: t when int_of_string_opt path <> None -> + v + |> unwrap_listv + |> (fun arr -> Array.get !arr (int_of_string path)) + |> access_paths t + | path :: t -> + v + |> unwrap_strv + |> List.assoc path + |> (!) + |> access_paths t + + let access_store paths = + Store.access (List.hd paths) + |> access_paths (List.tl paths) + + let access_frame paths = + WasmContext.get_current_context "FRAME_" + |> args_of_casev + |> Fun.flip List.nth 1 + |> access_paths paths + + let access_state paths = + if List.length paths < 2 then access_frame ("MODULE" :: paths) else + let field = List.hd paths in + access_frame ["MODULE"; field; List.nth paths 1] + |> unwrap_natv_to_int + |> (fun i -> access_store (field :: string_of_int i :: Util.Lib.List.drop 2 paths)) + + let access_env (ctx : AlContext.t) s paths = + match ctx with + | (Al (_, _, _, env, _) | Enter (_, _, env)) :: _ -> + lookup_env_opt s env |> Option.get |> access_paths paths + | _ -> failwith "not in scope" +end diff --git a/spectec/src/backend-interpreter/ds.mli b/spectec/src/backend-interpreter/ds.mli index a4e5d1182..fae46fc49 100644 --- a/spectec/src/backend-interpreter/ds.mli +++ b/spectec/src/backend-interpreter/ds.mli @@ -91,4 +91,11 @@ module WasmContext : sig val pop_instr : unit -> value end +module Access : sig + val access_store : string list -> value + val access_frame : string list -> value + val access_state : string list -> value + val access_env : AlContext.t -> string -> string list -> value +end + val init : algorithm list -> unit diff --git a/spectec/src/backend-interpreter/interpreter.ml b/spectec/src/backend-interpreter/interpreter.ml index 16878b257..4cedf25b7 100644 --- a/spectec/src/backend-interpreter/interpreter.ml +++ b/spectec/src/backend-interpreter/interpreter.ml @@ -725,36 +725,42 @@ and step (ctx: AlContext.t) : AlContext.t = Debugger.run ctx; - match ctx with - | Al (name, args, il, env, n) :: ctx -> - (match il with - | [] -> ctx - | [ instr ] - when can_tail_call instr && n = 0 && not !Debugger.debug -> - try_step_instr name ctx env instr - | h :: t -> - let new_ctx = Al (name, args, t, env, n) :: ctx in - try_step_instr name new_ctx env h - ) - | Wasm n :: ctx -> - if n = 0 then - ctx - else - try_step_wasm (Wasm n :: ctx) (WasmContext.pop_instr ()) - | Enter (name, il, env) :: ctx -> - (match il with - | [] -> - (match ctx with - | Wasm n :: t when not !Debugger.debug -> Wasm (n + 1) :: t - | Enter (_, [], _) :: t -> Wasm 2 :: t - | ctx -> Wasm 1 :: ctx + try + match ctx with + | Al (name, args, il, env, n) :: ctx -> + (match il with + | [] -> ctx + | [ instr ] + when can_tail_call instr && n = 0 && not !Debugger.debug -> + try_step_instr name ctx env instr + | h :: t -> + let new_ctx = Al (name, args, t, env, n) :: ctx in + try_step_instr name new_ctx env h ) - | h :: t -> - let new_ctx = Enter (name, t, env) :: ctx in - try_step_instr name new_ctx env h - ) - | Execute v :: ctx -> try_step_wasm ctx v - | _ -> assert false + | Wasm n :: ctx -> + if n = 0 then + ctx + else + try_step_wasm (Wasm n :: ctx) (WasmContext.pop_instr ()) + | Enter (name, il, env) :: ctx -> + (match il with + | [] -> + (match ctx with + | Wasm n :: t when not !Debugger.debug -> Wasm (n + 1) :: t + | Enter (_, [], _) :: t -> Wasm 2 :: t + | ctx -> Wasm 1 :: ctx + ) + | h :: t -> + let new_ctx = Enter (name, t, env) :: ctx in + try_step_instr name new_ctx env h + ) + | Execute v :: ctx -> try_step_wasm ctx v + | _ -> assert false + with exn when !Debugger.debug -> + let bt = Printexc.get_raw_backtrace () in + print_endline (Printexc.to_string exn); + Debugger.do_debug ctx; + Printexc.raise_with_backtrace exn bt (* AL interpreter Entry *) From 757551538e663e42d336daa320a870725683675d Mon Sep 17 00:00:00 2001 From: "Taylor C. Richberger" Date: Mon, 16 Mar 2026 03:47:38 -0600 Subject: [PATCH 093/235] [spec] Fix misplaced anchor (#2114) --- document/core/binary/types.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/document/core/binary/types.rst b/document/core/binary/types.rst index 4ea3ce6a7..49043ed94 100644 --- a/document/core/binary/types.rst +++ b/document/core/binary/types.rst @@ -100,6 +100,7 @@ $${grammar: Bresulttype} pair: binary format; field type pair: binary format; storage type pair: binary format; packed type +.. _binary-mut: .. _binary-comptype: .. _binary-aggrtype: .. _binary-functype: @@ -163,7 +164,6 @@ $${grammar: Btagtype} .. index:: global type, mutability, value type pair: binary format; global type pair: binary format; mutability -.. _binary-mut: .. _binary-globaltype: Global Types From da9ea8967a49cac783969edd853edb53c7f60857 Mon Sep 17 00:00:00 2001 From: Rao Xiaojia Date: Mon, 16 Mar 2026 06:13:19 -0700 Subject: [PATCH 094/235] [spec] Several scattered spec fixes (#2112) --- .../wasm-3.0/1.3-syntax.instructions.spectec | 2 +- .../2.3-validation.instructions.spectec | 2 +- .../wasm-3.0/6.3-text.instructions.spectec | 4 +-- .../1.3-syntax.instructions.spectec | 2 +- .../2.3-validation.instructions.spectec | 2 +- .../wasm-latest/6.3-text.instructions.spectec | 4 +-- spectec/test-frontend/TEST.md | 10 +++---- spectec/test-latex/TEST.md | 8 ++--- spectec/test-middlend/TEST.md | 30 +++++++++---------- spectec/test-prose/TEST.md | 11 ++++--- 10 files changed, 39 insertions(+), 36 deletions(-) diff --git a/specification/wasm-3.0/1.3-syntax.instructions.spectec b/specification/wasm-3.0/1.3-syntax.instructions.spectec index ae66049aa..fc706a845 100644 --- a/specification/wasm-3.0/1.3-syntax.instructions.spectec +++ b/specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -515,7 +515,7 @@ def $free_instr(REF.I31) = {} def $free_instr(I31.GET sx) = {} -def $free_instr(STRUCT.NEW typeidx) = {} +def $free_instr(STRUCT.NEW typeidx) = $free_typeidx(typeidx) def $free_instr(STRUCT.NEW_DEFAULT typeidx) = $free_typeidx(typeidx) def $free_instr(STRUCT.GET sx? typeidx u32) = $free_typeidx(typeidx) def $free_instr(STRUCT.SET typeidx u32) = $free_typeidx(typeidx) diff --git a/specification/wasm-3.0/2.3-validation.instructions.spectec b/specification/wasm-3.0/2.3-validation.instructions.spectec index 131926ba0..a893c85c1 100644 --- a/specification/wasm-3.0/2.3-validation.instructions.spectec +++ b/specification/wasm-3.0/2.3-validation.instructions.spectec @@ -379,7 +379,7 @@ rule Instr_ok/table.size: -- if C.TABLES[x] = at lim rt rule Instr_ok/table.grow: - C |- TABLE.GROW x : rt at -> I32 + C |- TABLE.GROW x : rt at -> at -- if C.TABLES[x] = at lim rt rule Instr_ok/table.fill: diff --git a/specification/wasm-3.0/6.3-text.instructions.spectec b/specification/wasm-3.0/6.3-text.instructions.spectec index 643fe47e2..2f7af9e9c 100644 --- a/specification/wasm-3.0/6.3-text.instructions.spectec +++ b/specification/wasm-3.0/6.3-text.instructions.spectec @@ -516,8 +516,8 @@ grammar Tplaininstr_(I)/num-cvt-i32 : instr = ... | ... grammar Tplaininstr_(I)/num-cvt-i64 : instr = ... - | "i64.extend_i64_s" => CVTOP I64 I64 EXTEND S - | "i64.extend_i64_u" => CVTOP I64 I64 EXTEND U + | "i64.extend_i32_s" => CVTOP I64 I32 EXTEND S + | "i64.extend_i32_u" => CVTOP I64 I32 EXTEND U | "i64.trunc_f32_s" => CVTOP I64 F32 TRUNC S | "i64.trunc_f32_u" => CVTOP I64 F32 TRUNC U | "i64.trunc_f64_s" => CVTOP I64 F64 TRUNC S diff --git a/specification/wasm-latest/1.3-syntax.instructions.spectec b/specification/wasm-latest/1.3-syntax.instructions.spectec index ae66049aa..fc706a845 100644 --- a/specification/wasm-latest/1.3-syntax.instructions.spectec +++ b/specification/wasm-latest/1.3-syntax.instructions.spectec @@ -515,7 +515,7 @@ def $free_instr(REF.I31) = {} def $free_instr(I31.GET sx) = {} -def $free_instr(STRUCT.NEW typeidx) = {} +def $free_instr(STRUCT.NEW typeidx) = $free_typeidx(typeidx) def $free_instr(STRUCT.NEW_DEFAULT typeidx) = $free_typeidx(typeidx) def $free_instr(STRUCT.GET sx? typeidx u32) = $free_typeidx(typeidx) def $free_instr(STRUCT.SET typeidx u32) = $free_typeidx(typeidx) diff --git a/specification/wasm-latest/2.3-validation.instructions.spectec b/specification/wasm-latest/2.3-validation.instructions.spectec index 131926ba0..a893c85c1 100644 --- a/specification/wasm-latest/2.3-validation.instructions.spectec +++ b/specification/wasm-latest/2.3-validation.instructions.spectec @@ -379,7 +379,7 @@ rule Instr_ok/table.size: -- if C.TABLES[x] = at lim rt rule Instr_ok/table.grow: - C |- TABLE.GROW x : rt at -> I32 + C |- TABLE.GROW x : rt at -> at -- if C.TABLES[x] = at lim rt rule Instr_ok/table.fill: diff --git a/specification/wasm-latest/6.3-text.instructions.spectec b/specification/wasm-latest/6.3-text.instructions.spectec index 643fe47e2..2f7af9e9c 100644 --- a/specification/wasm-latest/6.3-text.instructions.spectec +++ b/specification/wasm-latest/6.3-text.instructions.spectec @@ -516,8 +516,8 @@ grammar Tplaininstr_(I)/num-cvt-i32 : instr = ... | ... grammar Tplaininstr_(I)/num-cvt-i64 : instr = ... - | "i64.extend_i64_s" => CVTOP I64 I64 EXTEND S - | "i64.extend_i64_u" => CVTOP I64 I64 EXTEND U + | "i64.extend_i32_s" => CVTOP I64 I32 EXTEND S + | "i64.extend_i32_u" => CVTOP I64 I32 EXTEND U | "i64.trunc_f32_s" => CVTOP I64 F32 TRUNC S | "i64.trunc_f32_u" => CVTOP I64 F32 TRUNC U | "i64.trunc_f64_s" => CVTOP I64 F64 TRUNC S diff --git a/spectec/test-frontend/TEST.md b/spectec/test-frontend/TEST.md index fd20528ef..4a3520d85 100644 --- a/spectec/test-frontend/TEST.md +++ b/spectec/test-frontend/TEST.md @@ -2370,8 +2370,8 @@ def $free_instr(instr : instr) : free def $free_instr(`REF.I31`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:516.1-516.33 def $free_instr{sx : sx}(`I31.GET`_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:518.1-518.41 - def $free_instr{typeidx : typeidx}(`STRUCT.NEW`_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:518.1-518.61 + def $free_instr{typeidx : typeidx}(`STRUCT.NEW`_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:519.1-519.69 def $free_instr{typeidx : typeidx}(`STRUCT.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:520.1-520.69 @@ -3723,7 +3723,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-latest/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]))) + `%|-%:%`(C, `TABLE.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:385.1-387.32 @@ -10600,9 +10600,9 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.trunc_sat_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec - prod "i64.extend_i64_s" => CVTOP_instr(I64_numtype, I64_numtype, EXTEND_cvtop__(S_sx)) + prod "i64.extend_i32_s" => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(S_sx)) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec - prod "i64.extend_i64_u" => CVTOP_instr(I64_numtype, I64_numtype, EXTEND_cvtop__(U_sx)) + prod "i64.extend_i32_u" => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(U_sx)) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.trunc_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec diff --git a/spectec/test-latex/TEST.md b/spectec/test-latex/TEST.md index aa7136b61..04a3c71e9 100644 --- a/spectec/test-latex/TEST.md +++ b/spectec/test-latex/TEST.md @@ -4196,7 +4196,7 @@ $$ {\mathrm{free}}_{\mathit{instr}}(\mathsf{ref{.}func}~{\mathit{funcidx}}) & = & {\mathrm{free}}_{\mathit{funcidx}}({\mathit{funcidx}}) \\ {\mathrm{free}}_{\mathit{instr}}(\mathsf{ref{.}i{\scriptstyle 31}}) & = & \{ \} \\ {\mathrm{free}}_{\mathit{instr}}({\mathsf{i{\scriptstyle 31}{.}get}}{\mathsf{\_}}{{\mathit{sx}}}) & = & \{ \} \\ -{\mathrm{free}}_{\mathit{instr}}(\mathsf{struct{.}new}~{\mathit{typeidx}}) & = & \{ \} \\ +{\mathrm{free}}_{\mathit{instr}}(\mathsf{struct{.}new}~{\mathit{typeidx}}) & = & {\mathrm{free}}_{\mathit{typeidx}}({\mathit{typeidx}}) \\ {\mathrm{free}}_{\mathit{instr}}(\mathsf{struct{.}new\_default}~{\mathit{typeidx}}) & = & {\mathrm{free}}_{\mathit{typeidx}}({\mathit{typeidx}}) \\ {\mathrm{free}}_{\mathit{instr}}({\mathsf{struct{.}get}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~{\mathit{typeidx}}~{\mathit{u{\kern-0.1em\scriptstyle 32}}}) & = & {\mathrm{free}}_{\mathit{typeidx}}({\mathit{typeidx}}) \\ {\mathrm{free}}_{\mathit{instr}}(\mathsf{struct{.}set}~{\mathit{typeidx}}~{\mathit{u{\kern-0.1em\scriptstyle 32}}}) & = & {\mathrm{free}}_{\mathit{typeidx}}({\mathit{typeidx}}) \\ @@ -6677,7 +6677,7 @@ $$ \frac{ C{.}\mathsf{tables}{}[x] = {\mathit{at}}~{\mathit{lim}}~{\mathit{rt}} }{ -C \vdash \mathsf{table{.}grow}~x : {\mathit{rt}}~{\mathit{at}} \rightarrow \mathsf{i{\scriptstyle 32}} +C \vdash \mathsf{table{.}grow}~x : {\mathit{rt}}~{\mathit{at}} \rightarrow {\mathit{at}} } \, {[\textsc{\scriptsize T{-}instr{-}table.grow}]} \qquad \end{array} @@ -13186,8 +13186,8 @@ $$ & & | & \mbox{‘\texttt{i32.trunc\_sat\_f32\_u}’} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 32}} {.} {{\mathsf{trunc\_sat}}{\mathsf{\_}}{\mathsf{u}}}{\mathsf{\_}}{\mathsf{f{\scriptstyle 32}}} \\ & & | & \mbox{‘\texttt{i32.trunc\_sat\_f64\_s}’} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 32}} {.} {{\mathsf{trunc\_sat}}{\mathsf{\_}}{\mathsf{s}}}{\mathsf{\_}}{\mathsf{f{\scriptstyle 64}}} \\ & & | & \mbox{‘\texttt{i32.trunc\_sat\_f64\_u}’} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 32}} {.} {{\mathsf{trunc\_sat}}{\mathsf{\_}}{\mathsf{u}}}{\mathsf{\_}}{\mathsf{f{\scriptstyle 64}}} \\ -& & | & \mbox{‘\texttt{i64.extend\_i64\_s}’} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}} {.} {{\mathsf{extend}}{\mathsf{\_}}{\mathsf{s}}}{\mathsf{\_}}{\mathsf{i{\scriptstyle 64}}} \\ -& & | & \mbox{‘\texttt{i64.extend\_i64\_u}’} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}} {.} {{\mathsf{extend}}{\mathsf{\_}}{\mathsf{u}}}{\mathsf{\_}}{\mathsf{i{\scriptstyle 64}}} \\ +& & | & \mbox{‘\texttt{i64.extend\_i32\_s}’} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}} {.} {{\mathsf{extend}}{\mathsf{\_}}{\mathsf{s}}}{\mathsf{\_}}{\mathsf{i{\scriptstyle 32}}} \\ +& & | & \mbox{‘\texttt{i64.extend\_i32\_u}’} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}} {.} {{\mathsf{extend}}{\mathsf{\_}}{\mathsf{u}}}{\mathsf{\_}}{\mathsf{i{\scriptstyle 32}}} \\ & & | & \mbox{‘\texttt{i64.trunc\_f32\_s}’} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}} {.} {{\mathsf{trunc}}{\mathsf{\_}}{\mathsf{s}}}{\mathsf{\_}}{\mathsf{f{\scriptstyle 32}}} \\ & & | & \mbox{‘\texttt{i64.trunc\_f32\_u}’} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}} {.} {{\mathsf{trunc}}{\mathsf{\_}}{\mathsf{u}}}{\mathsf{\_}}{\mathsf{f{\scriptstyle 32}}} \\ & & | & \mbox{‘\texttt{i64.trunc\_f64\_s}’} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}} {.} {{\mathsf{trunc}}{\mathsf{\_}}{\mathsf{s}}}{\mathsf{\_}}{\mathsf{f{\scriptstyle 64}}} \\ diff --git a/spectec/test-middlend/TEST.md b/spectec/test-middlend/TEST.md index 0a4552419..006e630a1 100644 --- a/spectec/test-middlend/TEST.md +++ b/spectec/test-middlend/TEST.md @@ -2360,8 +2360,8 @@ def $free_instr(instr : instr) : free def $free_instr(`REF.I31`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:516.1-516.33 def $free_instr{sx : sx}(`I31.GET`_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:518.1-518.41 - def $free_instr{typeidx : typeidx}(`STRUCT.NEW`_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:518.1-518.61 + def $free_instr{typeidx : typeidx}(`STRUCT.NEW`_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:519.1-519.69 def $free_instr{typeidx : typeidx}(`STRUCT.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:520.1-520.69 @@ -3713,7 +3713,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-latest/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]))) + `%|-%:%`(C, `TABLE.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:385.1-387.32 @@ -10590,9 +10590,9 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.trunc_sat_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec - prod "i64.extend_i64_s" => CVTOP_instr(I64_numtype, I64_numtype, EXTEND_cvtop__(S_sx)) + prod "i64.extend_i32_s" => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(S_sx)) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec - prod "i64.extend_i64_u" => CVTOP_instr(I64_numtype, I64_numtype, EXTEND_cvtop__(U_sx)) + prod "i64.extend_i32_u" => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(U_sx)) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.trunc_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec @@ -13775,8 +13775,8 @@ def $free_instr(instr : instr) : free def $free_instr(`REF.I31`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:516.1-516.33 def $free_instr{sx : sx}(`I31.GET`_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:518.1-518.41 - def $free_instr{typeidx : typeidx}(`STRUCT.NEW`_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:518.1-518.61 + def $free_instr{typeidx : typeidx}(`STRUCT.NEW`_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:519.1-519.69 def $free_instr{typeidx : typeidx}(`STRUCT.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:520.1-520.69 @@ -15128,7 +15128,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-latest/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]))) + `%|-%:%`(C, `TABLE.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:385.1-387.32 @@ -22007,9 +22007,9 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.trunc_sat_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec - prod "i64.extend_i64_s" => CVTOP_instr(I64_numtype, I64_numtype, EXTEND_cvtop__(S_sx)) + prod "i64.extend_i32_s" => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(S_sx)) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec - prod "i64.extend_i64_u" => CVTOP_instr(I64_numtype, I64_numtype, EXTEND_cvtop__(U_sx)) + prod "i64.extend_i32_u" => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(U_sx)) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.trunc_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec @@ -25192,8 +25192,8 @@ def $free_instr(instr : instr) : free def $free_instr(`REF.I31`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:516.1-516.33 def $free_instr{sx : sx}(`I31.GET`_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:518.1-518.41 - def $free_instr{typeidx : typeidx}(`STRUCT.NEW`_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:518.1-518.61 + def $free_instr{typeidx : typeidx}(`STRUCT.NEW`_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:519.1-519.69 def $free_instr{typeidx : typeidx}(`STRUCT.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:520.1-520.69 @@ -26620,7 +26620,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-latest/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]))) + `%|-%:%`(C, `TABLE.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([(at : addrtype <: valtype)]))) -- if (x!`%`_idx.0 < |C.TABLES_context|) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) @@ -33604,9 +33604,9 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.trunc_sat_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec - prod "i64.extend_i64_s" => CVTOP_instr(I64_numtype, I64_numtype, EXTEND_cvtop__(S_sx)) + prod "i64.extend_i32_s" => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(S_sx)) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec - prod "i64.extend_i64_u" => CVTOP_instr(I64_numtype, I64_numtype, EXTEND_cvtop__(U_sx)) + prod "i64.extend_i32_u" => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(U_sx)) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.trunc_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec diff --git a/spectec/test-prose/TEST.md b/spectec/test-prose/TEST.md index 7f19a5e8f..729cace4c 100644 --- a/spectec/test-prose/TEST.md +++ b/spectec/test-prose/TEST.md @@ -15935,7 +15935,7 @@ The instruction :math:`(\mathsf{table{.}size}~x)` is :ref:`valid ` wi -The instruction :math:`(\mathsf{table{.}grow}~x)` is :ref:`valid ` with the instruction type :math:`{\mathit{rt}}~{\mathit{at}}~\rightarrow~\mathsf{i{\scriptstyle 32}}` if: +The instruction :math:`(\mathsf{table{.}grow}~x)` is :ref:`valid ` with the instruction type :math:`{\mathit{rt}}~{\mathit{at}}~\rightarrow~{\mathit{at}}` if: * The table :math:`C{.}\mathsf{tables}{}[x]` exists. @@ -23191,7 +23191,9 @@ The instruction sequence :math:`(\mathsf{block}~{\mathit{blocktype}}~{{\mathit{i #. If :math:`{\mathit{instr}'}` is some :math:`\mathsf{struct{.}new}~{\mathit{typeidx}}`, then: - a. Return :math:`\{ \}`. + a. Let :math:`(\mathsf{struct{.}new}~{\mathit{typeidx}})` be the destructuring of :math:`{\mathit{instr}'}`. + + #. Return :math:`{\mathrm{free}}_{\mathit{typeidx}}({\mathit{typeidx}})`. #. If :math:`{\mathit{instr}'}` is some :math:`\mathsf{struct{.}new\_default}~{\mathit{typeidx}}`, then: @@ -27958,7 +27960,7 @@ Instr_ok/table.size - C.TABLES[x] is (at lim rt). Instr_ok/table.grow -- the instruction (TABLE.GROW x) is valid with the instruction type [rt, at] -> [I32] if: +- the instruction (TABLE.GROW x) is valid with the instruction type [rt, at] -> [at] if: - the table C.TABLES[x] exists. - C.TABLES[x] is (at lim rt). @@ -31459,7 +31461,8 @@ free_instr instr' 61. If instr' is some I31.GET, then: a. Return {}. 62. If instr' is some STRUCT.NEW, then: - a. Return {}. + a. Let (STRUCT.NEW typeidx) be instr'. + b. Return $free_typeidx(typeidx). 63. If instr' is some STRUCT.NEW_DEFAULT, then: a. Let (STRUCT.NEW_DEFAULT typeidx) be instr'. b. Return $free_typeidx(typeidx). From d2906df75af70a4cb26726996912b719e7c1c3d8 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Mon, 16 Mar 2026 15:15:54 +0100 Subject: [PATCH 095/235] [spec] Fix subtyping rules for bottom heaptypes (#2116) --- document/core/valid/matching.rst | 2 +- interpreter/valid/match.ml | 8 +- .../wasm-3.0/2.2-validation.subtyping.spectec | 4 + .../2.2-validation.subtyping.spectec | 4 + spectec/doc/example/output/NanoWasm.pdf | Bin 245508 -> 245508 bytes spectec/test-frontend/TEST.md | 52 +++--- spectec/test-latex/TEST.md | 8 + spectec/test-middlend/TEST.md | 156 ++++++++++-------- spectec/test-prose/TEST.md | 24 +++ test/core/gc/type-subtyping.wast | 55 +++++- 10 files changed, 211 insertions(+), 102 deletions(-) diff --git a/document/core/valid/matching.rst b/document/core/valid/matching.rst index 200628753..8a1406945 100644 --- a/document/core/valid/matching.rst +++ b/document/core/valid/matching.rst @@ -44,7 +44,7 @@ $${rule: {Heaptype_sub/struct Heaptype_sub/array Heaptype_sub/func} {Heaptype_sub/typeidx-l Heaptype_sub/typeidx-r} {Heaptype_sub/rec} - {Heaptype_sub/none Heaptype_sub/nofunc Heaptype_sub/noexn Heaptype_sub/noextern} + {Heaptype_sub/none Heaptype_sub/nofunc} {Heaptype_sub/noexn Heaptype_sub/noextern} {Heaptype_sub/bot} } $${rule-ignore: Heaptype_sub/def} diff --git a/interpreter/valid/match.ml b/interpreter/valid/match.ml index e82706478..3e0ce830b 100644 --- a/interpreter/valid/match.ml +++ b/interpreter/valid/match.ml @@ -83,10 +83,10 @@ let rec match_heaptype c t1 t2 = | I31HT, EqHT -> true | StructHT, EqHT -> true | ArrayHT, EqHT -> true - | NoneHT, t -> match_heaptype c t AnyHT - | NoFuncHT, t -> match_heaptype c t FuncHT - | NoExnHT, t -> match_heaptype c t ExnHT - | NoExternHT, t -> match_heaptype c t ExternHT + | NoneHT, t when t <> BotHT -> match_heaptype c t AnyHT + | NoFuncHT, t when t <> BotHT -> match_heaptype c t FuncHT + | NoExnHT, t when t <> BotHT -> match_heaptype c t ExnHT + | NoExternHT, t when t <> BotHT -> match_heaptype c t ExternHT | UseHT (Idx x1), _ -> match_heaptype c (UseHT (Def (lookup c x1))) t2 | _, UseHT (Idx x2) -> match_heaptype c t1 (UseHT (Def (lookup c x2))) | UseHT (Def dt1), UseHT (Def dt2) -> match_deftype c dt1 dt2 diff --git a/specification/wasm-3.0/2.2-validation.subtyping.spectec b/specification/wasm-3.0/2.2-validation.subtyping.spectec index 3c2aead03..794077223 100644 --- a/specification/wasm-3.0/2.2-validation.subtyping.spectec +++ b/specification/wasm-3.0/2.2-validation.subtyping.spectec @@ -69,18 +69,22 @@ rule Heaptype_sub/rec: rule Heaptype_sub/none: C |- NONE <: heaptype -- Heaptype_sub: C |- heaptype <: ANY + -- if heaptype =/= BOT rule Heaptype_sub/nofunc: C |- NOFUNC <: heaptype -- Heaptype_sub: C |- heaptype <: FUNC + -- if heaptype =/= BOT rule Heaptype_sub/noexn: C |- NOEXN <: heaptype -- Heaptype_sub: C |- heaptype <: EXN + -- if heaptype =/= BOT rule Heaptype_sub/noextern: C |- NOEXTERN <: heaptype -- Heaptype_sub: C |- heaptype <: EXTERN + -- if heaptype =/= BOT rule Heaptype_sub/bot: C |- BOT <: heaptype diff --git a/specification/wasm-latest/2.2-validation.subtyping.spectec b/specification/wasm-latest/2.2-validation.subtyping.spectec index 3c2aead03..794077223 100644 --- a/specification/wasm-latest/2.2-validation.subtyping.spectec +++ b/specification/wasm-latest/2.2-validation.subtyping.spectec @@ -69,18 +69,22 @@ rule Heaptype_sub/rec: rule Heaptype_sub/none: C |- NONE <: heaptype -- Heaptype_sub: C |- heaptype <: ANY + -- if heaptype =/= BOT rule Heaptype_sub/nofunc: C |- NOFUNC <: heaptype -- Heaptype_sub: C |- heaptype <: FUNC + -- if heaptype =/= BOT rule Heaptype_sub/noexn: C |- NOEXN <: heaptype -- Heaptype_sub: C |- heaptype <: EXN + -- if heaptype =/= BOT rule Heaptype_sub/noextern: C |- NOEXTERN <: heaptype -- Heaptype_sub: C |- heaptype <: EXTERN + -- if heaptype =/= BOT rule Heaptype_sub/bot: C |- BOT <: heaptype diff --git a/spectec/doc/example/output/NanoWasm.pdf b/spectec/doc/example/output/NanoWasm.pdf index 55a94fd237f660644f89ec93da49f7332b312d84..772ae3066b88f42380fa55b8f7d7e336f5b6faa4 100644 GIT binary patch delta 167 zcmZqq$Jg?YZ-a)gpkKHthv%&G`up~teI}k+=i}FGDco);%m~Cx+bxBeuP@XxGc+1I!xsc7-&D6l$z|qmj#LdLq k*~HYy#l*tE%*nvS(b&Sx*uv1%`_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*`})) @@ -2959,12 +2959,12 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:96.1-96.107 relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:179.1-181.66 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:183.1-185.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-latest/2.2-validation.subtyping.spectec:183.1-186.49 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:187.1-190.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)) @@ -3034,90 +3034,94 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(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-latest/2.2-validation.subtyping.spectec:69.1-71.40 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:69.1-72.25 rule none{C : context, heaptype : heaptype}: `%|-%<:%`(C, NONE_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) + -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:73.1-75.41 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:74.1-77.25 rule nofunc{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOFUNC_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) + -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:77.1-79.40 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:79.1-82.25 rule noexn{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXN_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) + -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:81.1-83.43 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:84.1-87.25 rule noextern{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) + -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:85.1-86.23 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:89.1-90.23 rule bot{C : context, heaptype : heaptype}: `%|-%<:%`(C, BOT_heaptype, heaptype) ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:10.1-10.103 relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:89.1-91.37 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:93.1-95.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-latest/2.2-validation.subtyping.spectec:93.1-95.37 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:97.1-99.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-latest/2.2-validation.subtyping.spectec:11.1-11.103 relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:98.1-100.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:102.1-104.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-latest/2.2-validation.subtyping.spectec:102.1-104.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:106.1-108.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-latest/2.2-validation.subtyping.spectec:106.1-108.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:110.1-112.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-latest/2.2-validation.subtyping.spectec:110.1-111.22 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:114.1-115.22 rule bot{C : context, valtype : valtype}: `%|-%<:%`(C, BOT_valtype, valtype) -;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:116.1-116.115 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:120.1-120.115 relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:119.1-121.37 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:123.1-125.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-latest/2.2-validation.subtyping.spectec:134.1-134.119 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:138.1-138.119 relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:146.1-148.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:150.1-152.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-latest/2.2-validation.subtyping.spectec:150.1-152.49 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:154.1-156.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-latest/2.2-validation.subtyping.spectec:135.1-135.117 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:139.1-139.117 relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:155.1-157.40 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:159.1-161.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-latest/2.2-validation.subtyping.spectec:159.1-162.40 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:163.1-166.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) diff --git a/spectec/test-latex/TEST.md b/spectec/test-latex/TEST.md index 04a3c71e9..a4e05349c 100644 --- a/spectec/test-latex/TEST.md +++ b/spectec/test-latex/TEST.md @@ -5341,6 +5341,8 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ C \vdash {\mathit{heaptype}} \leq \mathsf{any} + \qquad +{\mathit{heaptype}} \neq \mathsf{bot} }{ C \vdash \mathsf{none} \leq {\mathit{heaptype}} } \, {[\textsc{\scriptsize S{-}heap{-}none}]} @@ -5352,6 +5354,8 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ C \vdash {\mathit{heaptype}} \leq \mathsf{func} + \qquad +{\mathit{heaptype}} \neq \mathsf{bot} }{ C \vdash \mathsf{nofunc} \leq {\mathit{heaptype}} } \, {[\textsc{\scriptsize S{-}heap{-}nofunc}]} @@ -5363,6 +5367,8 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ C \vdash {\mathit{heaptype}} \leq \mathsf{exn} + \qquad +{\mathit{heaptype}} \neq \mathsf{bot} }{ C \vdash \mathsf{noexn} \leq {\mathit{heaptype}} } \, {[\textsc{\scriptsize S{-}heap{-}noexn}]} @@ -5374,6 +5380,8 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ C \vdash {\mathit{heaptype}} \leq \mathsf{extern} + \qquad +{\mathit{heaptype}} \neq \mathsf{bot} }{ C \vdash \mathsf{noextern} \leq {\mathit{heaptype}} } \, {[\textsc{\scriptsize S{-}heap{-}noextern}]} diff --git a/spectec/test-middlend/TEST.md b/spectec/test-middlend/TEST.md index 006e630a1..994343a02 100644 --- a/spectec/test-middlend/TEST.md +++ b/spectec/test-middlend/TEST.md @@ -2931,17 +2931,17 @@ relation Deftype_ok: `%|-%:OK`(context, deftype) ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:95.1-95.108 relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:165.1-167.41 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:169.1-171.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-latest/2.2-validation.subtyping.spectec:169.1-171.38 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:173.1-175.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-latest/2.2-validation.subtyping.spectec:173.1-176.41 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:177.1-180.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*`})) @@ -2949,12 +2949,12 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:96.1-96.107 relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:179.1-181.66 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:183.1-185.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-latest/2.2-validation.subtyping.spectec:183.1-186.49 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:187.1-190.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)) @@ -3024,90 +3024,94 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(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-latest/2.2-validation.subtyping.spectec:69.1-71.40 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:69.1-72.25 rule none{C : context, heaptype : heaptype}: `%|-%<:%`(C, NONE_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) + -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:73.1-75.41 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:74.1-77.25 rule nofunc{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOFUNC_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) + -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:77.1-79.40 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:79.1-82.25 rule noexn{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXN_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) + -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:81.1-83.43 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:84.1-87.25 rule noextern{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) + -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:85.1-86.23 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:89.1-90.23 rule bot{C : context, heaptype : heaptype}: `%|-%<:%`(C, BOT_heaptype, heaptype) ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:10.1-10.103 relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:89.1-91.37 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:93.1-95.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-latest/2.2-validation.subtyping.spectec:93.1-95.37 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:97.1-99.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-latest/2.2-validation.subtyping.spectec:11.1-11.103 relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:98.1-100.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:102.1-104.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-latest/2.2-validation.subtyping.spectec:102.1-104.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:106.1-108.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-latest/2.2-validation.subtyping.spectec:106.1-108.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:110.1-112.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-latest/2.2-validation.subtyping.spectec:110.1-111.22 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:114.1-115.22 rule bot{C : context, valtype : valtype}: `%|-%<:%`(C, BOT_valtype, valtype) -;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:116.1-116.115 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:120.1-120.115 relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:119.1-121.37 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:123.1-125.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-latest/2.2-validation.subtyping.spectec:134.1-134.119 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:138.1-138.119 relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:146.1-148.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:150.1-152.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-latest/2.2-validation.subtyping.spectec:150.1-152.49 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:154.1-156.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-latest/2.2-validation.subtyping.spectec:135.1-135.117 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:139.1-139.117 relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:155.1-157.40 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:159.1-161.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-latest/2.2-validation.subtyping.spectec:159.1-162.40 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:163.1-166.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) @@ -14346,17 +14350,17 @@ relation Deftype_ok: `%|-%:OK`(context, deftype) ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:95.1-95.108 relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:165.1-167.41 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:169.1-171.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-latest/2.2-validation.subtyping.spectec:169.1-171.38 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:173.1-175.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-latest/2.2-validation.subtyping.spectec:173.1-176.41 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:177.1-180.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*`})) @@ -14364,12 +14368,12 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:96.1-96.107 relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:179.1-181.66 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:183.1-185.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-latest/2.2-validation.subtyping.spectec:183.1-186.49 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:187.1-190.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)) @@ -14439,90 +14443,94 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(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-latest/2.2-validation.subtyping.spectec:69.1-71.40 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:69.1-72.25 rule none{C : context, heaptype : heaptype}: `%|-%<:%`(C, NONE_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) + -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:73.1-75.41 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:74.1-77.25 rule nofunc{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOFUNC_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) + -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:77.1-79.40 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:79.1-82.25 rule noexn{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXN_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) + -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:81.1-83.43 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:84.1-87.25 rule noextern{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) + -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:85.1-86.23 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:89.1-90.23 rule bot{C : context, heaptype : heaptype}: `%|-%<:%`(C, BOT_heaptype, heaptype) ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:10.1-10.103 relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:89.1-91.37 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:93.1-95.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-latest/2.2-validation.subtyping.spectec:93.1-95.37 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:97.1-99.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-latest/2.2-validation.subtyping.spectec:11.1-11.103 relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:98.1-100.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:102.1-104.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-latest/2.2-validation.subtyping.spectec:102.1-104.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:106.1-108.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-latest/2.2-validation.subtyping.spectec:106.1-108.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:110.1-112.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-latest/2.2-validation.subtyping.spectec:110.1-111.22 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:114.1-115.22 rule bot{C : context, valtype : valtype}: `%|-%<:%`(C, BOT_valtype, valtype) -;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:116.1-116.115 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:120.1-120.115 relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:119.1-121.37 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:123.1-125.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-latest/2.2-validation.subtyping.spectec:134.1-134.119 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:138.1-138.119 relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:146.1-148.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:150.1-152.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-latest/2.2-validation.subtyping.spectec:150.1-152.49 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:154.1-156.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-latest/2.2-validation.subtyping.spectec:135.1-135.117 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:139.1-139.117 relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:155.1-157.40 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:159.1-161.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-latest/2.2-validation.subtyping.spectec:159.1-162.40 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:163.1-166.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) @@ -25770,18 +25778,18 @@ relation Deftype_ok: `%|-%:OK`(context, deftype) ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:95.1-95.108 relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:165.1-167.41 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:169.1-171.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*`}))) -- if (|`ft_1*`| = |`ft_2*`|) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:169.1-171.38 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:173.1-175.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-latest/2.2-validation.subtyping.spectec:173.1-176.41 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:177.1-180.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*`})) @@ -25789,12 +25797,12 @@ relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:96.1-96.107 relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:179.1-181.66 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:183.1-185.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-latest/2.2-validation.subtyping.spectec:183.1-186.49 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:187.1-190.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)) @@ -25869,91 +25877,95 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:69.1-71.40 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:69.1-72.25 rule none{C : context, heaptype : heaptype}: `%|-%<:%`(C, NONE_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) + -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:73.1-75.41 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:74.1-77.25 rule nofunc{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOFUNC_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) + -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:77.1-79.40 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:79.1-82.25 rule noexn{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXN_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) + -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:81.1-83.43 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:84.1-87.25 rule noextern{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) + -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:85.1-86.23 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:89.1-90.23 rule bot{C : context, heaptype : heaptype}: `%|-%<:%`(C, BOT_heaptype, heaptype) ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:10.1-10.103 relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:89.1-91.37 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:93.1-95.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-latest/2.2-validation.subtyping.spectec:93.1-95.37 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:97.1-99.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-latest/2.2-validation.subtyping.spectec:11.1-11.103 relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:98.1-100.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:102.1-104.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-latest/2.2-validation.subtyping.spectec:102.1-104.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:106.1-108.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-latest/2.2-validation.subtyping.spectec:106.1-108.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:110.1-112.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-latest/2.2-validation.subtyping.spectec:110.1-111.22 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:114.1-115.22 rule bot{C : context, valtype : valtype}: `%|-%<:%`(C, BOT_valtype, valtype) -;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:116.1-116.115 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:120.1-120.115 relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:119.1-121.37 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:123.1-125.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*`})) -- if (|`t_1*`| = |`t_2*`|) -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} -;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:134.1-134.119 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:138.1-138.119 relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:146.1-148.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:150.1-152.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-latest/2.2-validation.subtyping.spectec:150.1-152.49 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:154.1-156.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-latest/2.2-validation.subtyping.spectec:135.1-135.117 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:139.1-139.117 relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) - ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:155.1-157.40 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:159.1-161.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-latest/2.2-validation.subtyping.spectec:159.1-162.40 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:163.1-166.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) diff --git a/spectec/test-prose/TEST.md b/spectec/test-prose/TEST.md index 729cace4c..484fb7d67 100644 --- a/spectec/test-prose/TEST.md +++ b/spectec/test-prose/TEST.md @@ -14347,21 +14347,29 @@ The heap type :math:`{\mathit{heaptype}}_1` :ref:`matches ` the heap type * The heap type :math:`{\mathit{heaptype}}_1` is of the form :math:`\mathsf{none}`. * The heap type :math:`{\mathit{heaptype}}_2` :ref:`matches ` the heap type :math:`\mathsf{any}`. + + * The heap type :math:`{\mathit{heaptype}}_2` is not of the form :math:`\mathsf{bot}`. * Or: * The heap type :math:`{\mathit{heaptype}}_1` is of the form :math:`\mathsf{nofunc}`. * The heap type :math:`{\mathit{heaptype}}_2` :ref:`matches ` the heap type :math:`\mathsf{func}`. + + * The heap type :math:`{\mathit{heaptype}}_2` is not of the form :math:`\mathsf{bot}`. * Or: * The heap type :math:`{\mathit{heaptype}}_1` is of the form :math:`\mathsf{noexn}`. * The heap type :math:`{\mathit{heaptype}}_2` :ref:`matches ` the heap type :math:`\mathsf{exn}`. + + * The heap type :math:`{\mathit{heaptype}}_2` is not of the form :math:`\mathsf{bot}`. * Or: * The heap type :math:`{\mathit{heaptype}}_1` is of the form :math:`\mathsf{noextern}`. * The heap type :math:`{\mathit{heaptype}}_2` :ref:`matches ` the heap type :math:`\mathsf{extern}`. + + * The heap type :math:`{\mathit{heaptype}}_2` is not of the form :math:`\mathsf{bot}`. * Or: * The heap type :math:`{\mathit{heaptype}}_1` is of the form :math:`\mathsf{bot}`. @@ -14475,6 +14483,8 @@ The heap type :math:`\mathsf{none}` :ref:`matches ` the heap type :math:` * The heap type :math:`{\mathit{heaptype}}` :ref:`matches ` the heap type :math:`\mathsf{any}`. + * The heap type :math:`{\mathit{heaptype}}` is not of the form :math:`\mathsf{bot}`. + @@ -14483,6 +14493,8 @@ The heap type :math:`\mathsf{nofunc}` :ref:`matches ` the heap type :math * The heap type :math:`{\mathit{heaptype}}` :ref:`matches ` the heap type :math:`\mathsf{func}`. + * The heap type :math:`{\mathit{heaptype}}` is not of the form :math:`\mathsf{bot}`. + @@ -14491,6 +14503,8 @@ The heap type :math:`\mathsf{noexn}` :ref:`matches ` the heap type :math: * The heap type :math:`{\mathit{heaptype}}` :ref:`matches ` the heap type :math:`\mathsf{exn}`. + * The heap type :math:`{\mathit{heaptype}}` is not of the form :math:`\mathsf{bot}`. + @@ -14499,6 +14513,8 @@ The heap type :math:`\mathsf{noextern}` :ref:`matches ` the heap type :ma * The heap type :math:`{\mathit{heaptype}}` :ref:`matches ` the heap type :math:`\mathsf{extern}`. + * The heap type :math:`{\mathit{heaptype}}` is not of the form :math:`\mathsf{bot}`. + @@ -27153,15 +27169,19 @@ Heaptype_sub - Or: - heaptype_1 is NONE. - heaptype_2 matches the heap type ANY. + - heaptype_2 is not BOT. - Or: - heaptype_1 is NOFUNC. - heaptype_2 matches the heap type FUNC. + - heaptype_2 is not BOT. - Or: - heaptype_1 is NOEXN. - heaptype_2 matches the heap type EXN. + - heaptype_2 is not BOT. - Or: - heaptype_1 is NOEXTERN. - heaptype_2 matches the heap type EXTERN. + - heaptype_2 is not BOT. - Or: - heaptype_1 is BOT. @@ -27221,18 +27241,22 @@ Heaptype_sub/rec Heaptype_sub/none - the heap type NONE matches the heap type heaptype if: - heaptype matches the heap type ANY. + - heaptype is not BOT. Heaptype_sub/nofunc - the heap type NOFUNC matches the heap type heaptype if: - heaptype matches the heap type FUNC. + - heaptype is not BOT. Heaptype_sub/noexn - the heap type NOEXN matches the heap type heaptype if: - heaptype matches the heap type EXN. + - heaptype is not BOT. Heaptype_sub/noextern - the heap type NOEXTERN matches the heap type heaptype if: - heaptype matches the heap type EXTERN. + - heaptype is not BOT. Heaptype_sub/bot - the heap type BOT matches heaptype. diff --git a/test/core/gc/type-subtyping.wast b/test/core/gc/type-subtyping.wast index c48669ed5..41ac0cf7a 100644 --- a/test/core/gc/type-subtyping.wast +++ b/test/core/gc/type-subtyping.wast @@ -224,6 +224,60 @@ ) +;; Invalid abstract subtyping + +(assert_invalid + (module (func (param (ref null nofunc)) (result (ref null none)) (local.get 0))) + "type mismatch" +) +(assert_invalid + (module (func (param (ref null nofunc)) (result (ref null any)) (local.get 0))) + "type mismatch" +) +(assert_invalid + (module (func (param (ref null none)) (result (ref null nofunc)) (local.get 0))) + "type mismatch" +) +(assert_invalid + (module (func (param (ref null none)) (result (ref null func)) (local.get 0))) + "type mismatch" +) + +(assert_invalid + (module (func (param (ref null none)) (result (ref null noextern)) (local.get 0))) + "type mismatch" +) +(assert_invalid + (module (func (param (ref null none)) (result (ref null extern)) (local.get 0))) + "type mismatch" +) +(assert_invalid + (module (func (param (ref null noextern)) (result (ref null none)) (local.get 0))) + "type mismatch" +) +(assert_invalid + (module (func (param (ref null noextern)) (result (ref null any)) (local.get 0))) + "type mismatch" +) + +(assert_invalid + (module (func (param (ref null nofunc)) (result (ref null noextern)) (local.get 0))) + "type mismatch" +) +(assert_invalid + (module (func (param (ref null nofunc)) (result (ref null extern)) (local.get 0))) + "type mismatch" +) +(assert_invalid + (module (func (param (ref null noextern)) (result (ref null nofunc)) (local.get 0))) + "type mismatch" +) +(assert_invalid + (module (func (param (ref null noextern)) (result (ref null func)) (local.get 0))) + "type mismatch" +) + + ;; Runtime types (module @@ -757,7 +811,6 @@ ) - ;; Invalid subtyping definitions (assert_invalid From 6c2c638944f7a506464e22a257c5d82291c46977 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Wed, 18 Mar 2026 13:05:16 +0100 Subject: [PATCH 096/235] [spectec] Do not allow premise weakening in record/variant subtyping --- spectec/doc/Language.md | 6 ++---- spectec/src/il/eval.ml | 3 ++- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/spectec/doc/Language.md b/spectec/doc/Language.md index cc8d68c70..43efcb079 100644 --- a/spectec/doc/Language.md +++ b/spectec/doc/Language.md @@ -402,12 +402,10 @@ SpecTec also employs a weak form of shallow subtyping: except that the larger type may drop some premises. * Variant types are in a subtype relation if the smaller type has fewer or the same number of cases, - and for each of its cases there is an equivalent case in the larger type, - except that the case in the larger type may drop some premises. + and for each of its cases there is an equivalent case in the larger type. * Record types are in a subtype relation if the larger type has fewer or the same number of fields, - and for each of its fields there is an equivalent case in the smaller type, - except that the field in the larger type may drop some premises. + and for each of its fields there is an equivalent case in the smaller type. ### Expressions diff --git a/spectec/src/il/eval.ml b/spectec/src/il/eval.ml index 96c513a1f..7bbaddb15 100644 --- a/spectec/src/il/eval.ml +++ b/spectec/src/il/eval.ml @@ -1021,7 +1021,8 @@ and equiv_params env ps1 ps2 = (* Subtyping *) and sub_prems _env prems1 prems2 = - List.for_all (fun prem2 -> List.exists (Eq.eq_prem prem2) prems1) prems2 + List.length prems1 = List.length prems2 && + List.for_all2 Eq.eq_prem prems1 prems2 and sub_typ env t1 t2 = sub_typ' env [] t1 t2 From 6a1257e21a1a7f368e420de26b1864ae35ed0bdd Mon Sep 17 00:00:00 2001 From: Matthias Liedtke Date: Mon, 16 Mar 2026 15:36:39 +0100 Subject: [PATCH 097/235] [test][js-api] WebAssembly.Global.set should not throw without argument This change landed in the Web Platform Tests repository via: https://github.com/web-platform-tests/wpt/commit/5078da54e150d8d380062402eb09ada3aa0857fd Corresponding issue: https://github.com/WebAssembly/spec/issues/2075 --- test/js-api/global/value-get-set.any.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/test/js-api/global/value-get-set.any.js b/test/js-api/global/value-get-set.any.js index c4c058285..2b63a173d 100644 --- a/test/js-api/global/value-get-set.any.js +++ b/test/js-api/global/value-get-set.any.js @@ -131,7 +131,14 @@ test(() => { const setter = desc.set; assert_equals(typeof setter, "function"); - assert_throws_js(TypeError, () => setter.call(global)); + assert_equals(global.value, 0); + + assert_equals(setter.call(global, undefined), undefined); + assert_equals(global.value, 0); + + // Should behave as if 'undefined' was passed as the argument. + assert_equals(setter.call(global), undefined); + assert_equals(global.value, 0); }, "Calling setter without argument"); test(() => { From 2907f451305258f49784eb42893d1c4da9a52462 Mon Sep 17 00:00:00 2001 From: Yi-Ying He Date: Mon, 23 Mar 2026 17:10:42 +0800 Subject: [PATCH 098/235] [test] Refine some error messages (#2119) --- test/core/simd/simd_lane.wast | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/test/core/simd/simd_lane.wast b/test/core/simd/simd_lane.wast index 56ea274d6..fc65d798c 100644 --- a/test/core/simd/simd_lane.wast +++ b/test/core/simd/simd_lane.wast @@ -425,7 +425,7 @@ (assert_malformed (module quote "(func (result i64) (i64x2.extract_lane 256 (v128.const i64x2 0 0)))") "i8 constant out of range") (assert_malformed (module quote "(func (result f64) (f64x2.extract_lane 256 (v128.const f64x2 0 0)))") "i8 constant out of range") (assert_malformed (module quote "(func (result v128) (i64x2.replace_lane 256 (v128.const i64x2 0 0) (i64.const 1)))") "i8 constant out of range") -(assert_malformed (module quote "(func (result v128) (f64x2.replace_lane 256 (v128.const f64x2 0 0) (f64.const 1)))") "i8 constant out of") +(assert_malformed (module quote "(func (result v128) (f64x2.replace_lane 256 (v128.const f64x2 0 0) (f64.const 1)))") "i8 constant out of range") ;; Invalid lane index value @@ -521,11 +521,11 @@ (assert_malformed (module quote "(func (result v128)" "(i8x16.shuffle 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 -1" "(v128.const i8x16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0)" - "(v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)))") "i8 constant out of") + "(v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)))") "i8 constant out of range") (assert_malformed (module quote "(func (result v128)" "(i8x16.shuffle 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 256" "(v128.const i8x16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0)" - "(v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)))") "i8 constant out of") + "(v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)))") "i8 constant out of range") (assert_invalid (module (func (result v128) (i8x16.shuffle 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 255 (v128.const i8x16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0) @@ -604,23 +604,23 @@ (assert_malformed (module quote "(func (result v128) " "(i8x16.shuffle 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15.0 " "(v128.const i8x16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0) " - "(v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)))") "i8 constant out of") + "(v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)))") "i8 constant out of range") (assert_malformed (module quote "(func (result v128) " "(i8x16.shuffle 0.5 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 " "(v128.const i8x16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0) " - "(v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)))") "i8 constant out of") + "(v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)))") "i8 constant out of range") (assert_malformed (module quote "(func (result v128) " "(i8x16.shuffle -inf 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 " "(v128.const i8x16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0) " - "(v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)))") "i8 constant out of") + "(v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)))") "i8 constant out of range") (assert_malformed (module quote "(func (result v128) " "(i8x16.shuffle 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 inf " "(v128.const i8x16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0) " - "(v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)))") "i8 constant out of") + "(v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)))") "i8 constant out of range") (assert_malformed (module quote "(func (result v128) " "(i8x16.shuffle nan 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 " "(v128.const i8x16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0) " - "(v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)))") "i8 constant out of") + "(v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)))") "i8 constant out of range") ;; Combination with each other From 8a4f0d038da3f4e38bb6f492eb4cc3c9dc5c1c24 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Mon, 23 Mar 2026 10:29:33 +0100 Subject: [PATCH 099/235] [spectec] Define IL semantics for pattern matching (#2106) --- spectec/doc/semantics/il/0-aux.spectec | 9 + spectec/doc/semantics/il/1-syntax.spectec | 57 +- spectec/doc/semantics/il/3-primitives.spectec | 6 + spectec/doc/semantics/il/4-subst.spectec | 50 +- spectec/doc/semantics/il/5-reduction.spectec | 485 +++++++++++++++--- spectec/doc/semantics/il/6-typing.spectec | 73 ++- 6 files changed, 553 insertions(+), 127 deletions(-) diff --git a/spectec/doc/semantics/il/0-aux.spectec b/spectec/doc/semantics/il/0-aux.spectec index 7f322499c..e3a72d38d 100644 --- a/spectec/doc/semantics/il/0-aux.spectec +++ b/spectec/doc/semantics/il/0-aux.spectec @@ -10,6 +10,15 @@ def $equiv_(syntax X, x_1*, x_2*) = true -- (if x_1 <- x_2*)* -- (if x_2 <- x_ def $equiv_(syntax X, x_1*, x_2*) = false -- otherwise +def $concat_(syntax X, X**) : X* hint(show (++)%2) +def $concat_(syntax X, eps) = eps +def $concat_(syntax X, x_1* x**) = x_1* $concat_(X, x**) + + def $transpose_(syntax X, X**) : X** def $transpose_(syntax X, eps^n) = eps def $transpose_(syntax X, (x_1 x*)*) = x_1* $transpose_(X, x**) + +def $transposeq_(syntax X, X*?) : X?* +def $transposeq_(syntax X, (eps)) = eps +def $transposeq_(syntax X, (x_1 x*)?) = x_1? $transposeq_(X, x*?) diff --git a/spectec/doc/semantics/il/1-syntax.spectec b/spectec/doc/semantics/il/1-syntax.spectec index 9e9ca280e..bb369461e 100644 --- a/spectec/doc/semantics/il/1-syntax.spectec +++ b/spectec/doc/semantics/il/1-syntax.spectec @@ -23,6 +23,7 @@ syntax typ = | TUP typbind* ;; (id : typ , ... , id : typ) | ITER typ iter ;; typ iter | VAR id arg* ;; typid(arg*) + | MATCH id arg* WITH inst* ;; `match` typid(arg*) `with` inst* syntax deftyp = | ALIAS typ @@ -40,7 +41,7 @@ syntax iter = | QUEST ;; `?` | STAR ;; `*` | PLUS ;; `+` - | SUP id? exp ;; `^` (id `<`)? exp + | SUP id exp ;; `^` id `<` exp ;; Expressions @@ -101,33 +102,34 @@ syntax valfield = atom `= val ;; atom `=` val syntax exp = - | num ;; num - | VAR id ;; varid - | BOOL bool ;; bool - | TEXT text ;; text - | UN unop exp ;; unop exp - | BIN binop exp exp ;; exp binop exp - | CMP cmpop exp exp ;; exp cmpop exp - | TUP exp* ;; ( exp* ) - | INJ mixop exp ;; mixop exp - | OPT exp? ;; exp? - | LIST exp* ;; [ exp* ] - | LIFT exp ;; exp : _? <: _* - | STR expfield* ;; { expfield* } - | SEL exp nat ;; exp.i - | LEN exp ;; | exp | - | MEM exp exp ;; exp `<-` exp - | CAT exp exp ;; exp `++` exp - | ACC exp path ;; exp[ path ] - | UPD exp path exp ;; exp[ path = exp ] - | EXT exp path exp ;; exp[ path =.. exp ] - | CALL id arg* ;; defid( arg* ) + | num ;; num + | VAR id ;; varid + | BOOL bool ;; bool + | TEXT text ;; text + | UN unop exp ;; unop exp + | BIN binop exp exp ;; exp binop exp + | CMP cmpop exp exp ;; exp cmpop exp + | TUP exp* ;; ( exp* ) + | INJ mixop exp ;; mixop exp + | OPT exp? ;; exp? + | LIST exp* ;; [ exp* ] + | LIFT exp ;; exp : _? <: _* + | STR expfield* ;; { expfield* } + | SEL exp nat ;; exp.i + | LEN exp ;; | exp | + | MEM exp exp ;; exp `<-` exp + | CAT exp exp ;; exp `++` exp + | ACC exp path ;; exp[ path ] + | UPD exp path exp ;; exp[ path = exp ] + | EXT exp path exp ;; exp[ path =.. exp ] + | CALL id arg* ;; defid( arg* ) | ITER exp iter exppull* ;; exp iter{ expiter* } | CVT exp numtyp numtyp ;; exp : typ1 <:> typ2 | SUB exp typ typ ;; exp : typ1 <: typ2 + | MATCH arg* WITH clause* ;; `match` arg* `with` clause* -syntax expfield = atom `= exp ;; atom `=` exp -syntax exppull = id `<- exp ;; id `<-` exp +syntax expfield = atom `= exp +syntax exppull = id `: typ `<- exp syntax path = | ROOT ;; @@ -154,23 +156,24 @@ syntax sym = ;; Definitions syntax arg = - | EXP exp | TYP typ + | EXP exp | FUN id | GRAM sym syntax param = - | EXP id `: typ | TYP id + | EXP id `: typ | FUN id `: param* `-> typ | GRAM id `: param* `-> typ syntax quant = param syntax prem = - | RULE id arg* `: exp + | REL id arg* `: exp | IF exp | ELSE + | NOT prem | LET exp `= exp ;; TODO: variables/quantifiers? | ITER prem iter exppull* diff --git a/spectec/doc/semantics/il/3-primitives.spectec b/spectec/doc/semantics/il/3-primitives.spectec index 49ce49c6a..caa506466 100644 --- a/spectec/doc/semantics/il/3-primitives.spectec +++ b/spectec/doc/semantics/il/3-primitives.spectec @@ -17,6 +17,7 @@ def $boolbin(EQUIV, b_1, b_2) = b_1 <=> b_2 def $iszero(num) : bool def $isone(num) : bool +def $isneg(num) : bool def $iszero(NAT n) = (n = 0) def $iszero(INT i) = (i = 0) @@ -28,6 +29,11 @@ def $isone(INT i) = (i = 1) def $isone(RAT q) = (q = 1) def $isone(REAL r) = (r = 1) +def $isneg(NAT n) = false +def $isneg(INT i) = (i < 0) +def $isneg(RAT q) = (q < 0) +def $isneg(REAL r) = (r < 0) + def $numcvt(numtyp, num) : num hint(partial) diff --git a/spectec/doc/semantics/il/4-subst.spectec b/spectec/doc/semantics/il/4-subst.spectec index f2a9998b5..2b7f4f417 100644 --- a/spectec/doc/semantics/il/4-subst.spectec +++ b/spectec/doc/semantics/il/4-subst.spectec @@ -10,6 +10,11 @@ syntax subst = } +def $composesubsts(subst*) : subst hint(show (++)%) +def $composesubsts(eps) = {} +def $composesubsts(s_1 s*) = s_1 ++ $composesubsts(s*) + + ;; Domain syntax dom = @@ -54,6 +59,7 @@ def $subst_typ(s, VAR x a*) = VAR x $subst_arg(s, a)* -- otherwise def $subst_typ(s, optyp) = optyp def $subst_typ(s, TUP (x `: t)*) = TUP (x `: $subst_typ(s, t))* ;; TODO: avoid capture def $subst_typ(s, ITER t it) = ITER $subst_typ(s, t) $subst_iter(s, it) +def $subst_typ(s, MATCH x a* WITH inst*) = MATCH x $subst_arg(s, a)* WITH $subst_inst(s, inst)* def $subst_deftyp(subst, deftyp) : deftyp def $subst_deftyp(s, ALIAS t) = ALIAS $subst_typ(s, t) @@ -67,7 +73,7 @@ def $subst_iter(subst, iter) : iter def $subst_iter(s, QUEST) = QUEST def $subst_iter(s, STAR) = STAR def $subst_iter(s, PLUS) = PLUS -def $subst_iter(s, SUP x? e) = SUP x? $subst_exp(s, e) ;; TODO: avoid capture +def $subst_iter(s, SUP x e) = SUP x $subst_exp(s, e) ;; TODO: avoid capture ;; Expressions @@ -95,9 +101,10 @@ def $subst_exp(s, ACC e_1 p) = ACC $subst_exp(s, e_1) $subst_path(s, p) def $subst_exp(s, UPD e_1 p e_2) = UPD $subst_exp(s, e_1) $subst_path(s, p) $subst_exp(s, e_2) def $subst_exp(s, EXT e_1 p e_2) = EXT $subst_exp(s, e_1) $subst_path(s, p) $subst_exp(s, e_2) def $subst_exp(s, CALL x a*) = CALL $subst_fun(s, x) $subst_arg(s, a)* -def $subst_exp(s, ITER e it (x `<- e')*) = ITER $subst_exp(s, e) $subst_iter(s, it) (x `<- $subst_exp(s, e'))* ;; TODO: avoid capture +def $subst_exp(s, ITER e it (x `: t `<- e')*) = ITER $subst_exp(s, e) $subst_iter(s, it) (x `: $subst_typ(s, t) `<- $subst_exp(s, e'))* ;; TODO: avoid capture def $subst_exp(s, CVT e nt_1 nt_2) = CVT $subst_exp(s, e) nt_1 nt_2 def $subst_exp(s, SUB e t_1 t_2) = SUB $subst_exp(s, e) $subst_typ(s, t_1) $subst_typ(s, t_2) +def $subst_exp(s, MATCH a* WITH clause*) = MATCH $subst_arg(s, a)* WITH $subst_clause(s, clause)* def $subst_path(subst, path) : path def $subst_path(s, ROOT) = ROOT @@ -120,20 +127,20 @@ def $subst_sym(s, SEQ g*) = SEQ $subst_sym(s, g)* def $subst_sym(s, ALT g*) = ALT $subst_sym(s, g)* def $subst_sym(s, RANGE g_1 g_2) = RANGE $subst_sym(s, g_1) $subst_sym(s, g_2) def $subst_sym(s, ATTR e g) = ATTR $subst_exp(s, e) $subst_sym(s, g) -def $subst_sym(s, ITER g it (x `<- e)*) = ITER $subst_sym(s, g) $subst_iter(s, it) (x `<- $subst_exp(s, e))* ;; TODO: avoid capture +def $subst_sym(s, ITER g it (x `: t `<- e)*) = ITER $subst_sym(s, g) $subst_iter(s, it) (x `: $subst_typ(s, t) `<- $subst_exp(s, e))* ;; TODO: avoid capture ;; Definitions def $subst_arg(subst, arg) : arg -def $subst_arg(s, EXP e) = EXP $subst_exp(s, e) def $subst_arg(s, TYP t) = TYP $subst_typ(s, t) +def $subst_arg(s, EXP e) = EXP $subst_exp(s, e) def $subst_arg(s, FUN x) = FUN $subst_fun(s, x) def $subst_arg(s, GRAM g) = GRAM $subst_sym(s, g) def $subst_param(subst, param) : param -def $subst_param(s, EXP x `: t) = EXP x `: $subst_typ(s, t) def $subst_param(s, TYP x) = TYP x +def $subst_param(s, EXP x `: t) = EXP x `: $subst_typ(s, t) def $subst_param(s, FUN x `: p* `-> t) = FUN x `: $subst_param(s, p)* `-> $subst_typ(s, t) ;; TODO: avoid capture def $subst_param(s, GRAM x `: p* `-> t) = GRAM x `: $subst_param(s, p)* `-> $subst_typ(s, t) ;; TODO: avoid capture @@ -141,18 +148,45 @@ def $subst_quant(subst, quant) : quant def $subst_quant(s, q) = $subst_param(s, q) def $subst_prem(subst, prem) : prem -def $subst_prem(s, RULE x a* `: e) = RULE x $subst_arg(s, a)* `: $subst_exp(s, e) +def $subst_prem(s, REL x a* `: e) = REL x $subst_arg(s, a)* `: $subst_exp(s, e) def $subst_prem(s, IF e) = IF $subst_exp(s, e) def $subst_prem(s, ELSE) = ELSE def $subst_prem(s, LET e_1 `= e_2) = LET $subst_exp(s, e_1) `= $subst_exp(s, e_2) ;; TODO: avoid capture -def $subst_prem(s, ITER pr it (x `<- e)*) = ITER $subst_prem(s, pr) $subst_iter(s, it) (x `<- $subst_exp(s, e))* ;; TODO: avoid capture +def $subst_prem(s, ITER pr it (x `: t `<- e)*) = ITER $subst_prem(s, pr) $subst_iter(s, it) (x `: $subst_typ(s, t) `<- $subst_exp(s, e))* ;; TODO: avoid capture + + +def $subst_inst(subst, inst) : inst +def $subst_inst(s, INST `{q*} a* `= dt) = INST `{$subst_param(s, q)*} $subst_arg(s, a)* `= $subst_deftyp(s, dt) ;; TODO: avoid capture + +def $subst_rule(subst, rul) : rul +def $subst_rule(s, RULE `{q*} e `- pr*) = RULE `{$subst_param(s, q)*} $subst_exp(s, e) `- $subst_prem(s, pr)* ;; TODO: avoid capture + +def $subst_clause(subst, clause) : clause +def $subst_clause(s, CLAUSE `{q*} a* `= e `- pr*) = CLAUSE `{$subst_param(s, q)*} $subst_arg(s, a)* `= $subst_exp(s, e) `- $subst_prem(s, pr)* ;; TODO: avoid capture + +def $subst_prod(subst, prod) : prod +def $subst_prod(s, PROD `{q*} g `=> e `- pr*) = PROD `{$subst_param(s, q)*} $subst_sym(s, g) `=> $subst_exp(s, e) `- $subst_prem(s, pr)* ;; TODO: avoid capture + + +;; Constructing substitutions for parameters + +def $arg_for_param(arg, param) : subst +def $arg_for_param(TYP t, TYP x) = {TYP (x, t)} +def $arg_for_param(EXP e, EXP x `: t) = {EXP (x, e)} +def $arg_for_param(FUN y, FUN x `: p* `-> t) = {FUN (x, y)} +def $arg_for_param(GRAM g, GRAM x `: p* `-> t) = {GRAM (x, g)} + +def $args_for_params(arg*, param*) : subst +def $args_for_params(eps, eps) = {} +def $args_for_params(a_1 a*, p_1 p*) = s ++ $args_for_params(a*, $subst_param(s, p)*) + -- if s = $arg_for_param(a_1, p_1) ;; Well-formedness def $paramarg(param) : arg -def $paramarg(EXP x `: t) = EXP (VAR x) def $paramarg(TYP x) = TYP (VAR x) +def $paramarg(EXP x `: t) = EXP (VAR x) def $paramarg(FUN x `: p* `-> t) = FUN x def $paramarg(GRAM x `: p* `-> t) = GRAM (VAR x) diff --git a/spectec/doc/semantics/il/5-reduction.spectec b/spectec/doc/semantics/il/5-reduction.spectec index a78da6ab2..91a55d66f 100644 --- a/spectec/doc/semantics/il/5-reduction.spectec +++ b/spectec/doc/semantics/il/5-reduction.spectec @@ -1,25 +1,19 @@ ;; Types -relation Expand_typ: S |- typ => deftyp relation Reduce_typ: S |- typ ~>* typ relation Step_typ: S |- typ ~> typ relation Eq_typ: S |- typ == typ +relation Expand_typ: S |- typ ~~ deftyp rule Expand_typ/plain: - S |- t => ALIAS t - ;; nop if t is VAR + S |- t ~~ ALIAS t' + -- Reduce_typ: S |- t ~>* t' + ;; Note: this rule is a nop if t is VAR -rule Expand_typ/alias: - S |- VAR x a* => dt - -- Expand_typ: S |- VAR x a* => ALIAS t - -- Expand_typ: S |- t => dt - -rule Expand_typ/step: - S |- VAR x a* => $subst_deftyp(s, dt) - -- if (x, p* `-> OK `= inst*) <- S.TYP - -- if (INST `{q*} a'* `= dt) <- inst* - -- Match_args: S |- a* `/ `{q*} a'* => s +rule Expand_typ/def: + S |- t ~~ dt + -- Reduce_typ: S |- t ~>* MATCH x WITH (INST `{} `= dt) inst* rule Eq_typ: @@ -27,9 +21,10 @@ rule Eq_typ: -- Reduce_typ: S |- t_1 ~>* t'_1 -- Reduce_typ: S |- t_2 ~>* t'_2 -- if t'_1 = t'_2 + ;; Note: defined types are nominal -rule Reduce_typ/normal: +rule Reduce_typ/refl: S |- t ~>* t rule Reduce_typ/step: @@ -43,8 +38,32 @@ rule Step_typ/VAR-ctx: -- Step_arg: S |- a*[n] ~> a'_n rule Step_typ/VAR-apply: - S |- VAR x a* ~> t - -- Expand_typ: S |- VAR x a* => ALIAS t + S |- VAR x a* ~> MATCH x a* WITH inst* + -- if (x, p* `-> OK `= inst*) <- S.TYP + + +rule Step_typ/MATCH-ctx1: + S |- MATCH x a* WITH inst* ~> MATCH x a*[[n] = a'_n] WITH inst* + -- Step_arg: S |- a*[n] ~> a'_n + +rule Step_typ/MATCH-ctx2: + S |- MATCH x a* WITH inst* ~> MATCH x a* WITH inst*[[n] = inst'_n] + -- Step_inst: S |- inst*[n] ~> inst'_n + +rule Step_typ/MATCH-alias: + S |- MATCH x eps WITH (INST `{} eps `= ALIAS t) inst* ~> t + +rule Step_typ/MATCH-match: + S |- MATCH x a* WITH (INST `{q*} a'* `= dt) inst* ~> + MATCH x a''* WITH + (INST `{q'*} a'''* `= $subst_deftyp(s, dt)) + (INST `{} a''* `= ALIAS (MATCH x a* WITH inst*)) + -- Step_argmatch: S |- `{q*} (a / a')* ~>_s `{q'*} (a'' / a''')* + +rule Step_typ/MATCH-match-fail: + S |- MATCH x a* WITH (INST `{q*} a'* `= dt) inst* ~> + MATCH x a* WITH inst* + -- Step_argmatch: S |- `{q*} (a / a')* ~>_s `{} FAIL rule Step_typ/TUP-ctx: @@ -57,13 +76,31 @@ rule Step_typ/ITER-ctx: -- Step_typ: S |- t ~> t' +;; Iterators + +relation Step_iter: S |- iter ~> iter +relation Step_exppull: S |- exppull ~> exppull + +rule Step_iter/SUP-ctx: + S |- SUP x e ~> SUP x e' + -- Step_exp: S |- e ~> e' + + +rule Step_exppull/ctx1: + S |- x `: t `<- e ~> x `: t' `<- e + -- Step_typ: S |- t ~> t' + +rule Step_exppull/ctx2: + S |- x `: t `<- e ~> x `: t `<- e' + -- Step_exp: S |- e ~> e' + + ;; Expressions relation Reduce_exp: S |- exp ~>* exp relation Step_exp: S |- exp ~> exp +relation Step_expfield: S |- expfield ~> expfield relation Step_path: S |- path ~> path -relation Step_iter: S |- iter ~> iter -relation Step_exppull: S |- exppull ~> exppull relation Eq_exp: S |- exp == exp @@ -74,7 +111,7 @@ rule Eq_exp: -- if e'_1 = e'_2 -rule Reduce_exp/normal: +rule Reduce_exp/refl: S |- e ~>* e rule Reduce_exp/step: @@ -150,8 +187,8 @@ rule Step_exp/TUP-ctx: -- Step_exp: S |- e*[n] ~> e'_n rule Step_exp/STR-ctx: - S |- STR (a `= e)* ~> STR (a `= e)*[[n] = (a*[n] `= e'_n)] - -- Step_exp: S |- e*[n] ~> e'_n + S |- STR ef* ~> STR ef*[[n] = ef'_n] + -- Step_expfield: S |- ef*[n] ~> ef'_n rule Step_exp/INJ-ctx: S |- INJ mixop e ~> INJ mixop e' @@ -318,23 +355,20 @@ rule Step_exp/ITER-ctx3: -- Step_exppull: S |- ep*[n] ~> ep'_n rule Step_exp/ITER-QUEST: - S |- ITER e QUEST (x `<- OPT e'?)* ~> OPT $subst_exp({EXP (x, e'')*}, e)? + S |- ITER e QUEST (x `: t `<- OPT e'?)* ~> OPT $subst_exp({EXP (x, e'')*}, e)? -- if e''*? = $transpose_(exp, e'?*) rule Step_exp/ITER-PLUS: - S |- ITER e PLUS (x `<- LIST e'*)* ~> ITER e STAR (x `<- LIST e'*)* + S |- ITER e PLUS (x `: t `<- LIST e'*)* ~> ITER e STAR (x `: t `<- LIST e'*)* -- if |e'**[0]| >= 1 rule Step_exp/ITER-STAR: - S |- ITER e STAR (x `<- LIST e'*)* ~> ITER e (SUP (NAT n)) (x `<- LIST e'*)* + S |- ITER e STAR (x `: t `<- LIST e'*)* ~> ITER e (SUP y (NAT n)) (x `: t `<- LIST e'*)* -- if |e'**[0]| = n - -rule Step_exp/ITER-SUP-eps: - S |- ITER e (SUP eps e_n) (x `<- LIST e'*)* ~> ITER e (SUP y e_n) (x `<- LIST e'*)* ;; TODO: y fresh rule Step_exp/ITER-SUP: - S |- ITER e (SUP x_i (NAT n)) (x `<- LIST e'^n)* ~> LIST $subst_exp({EXP (x, e'')* (x_i, NAT i)}, e)^(i LIST $subst_exp({EXP (x, e'')* (y, NAT i)}, e)^(i a'_n rule Step_exp/CALL-apply: - S |- CALL x a* ~> $subst_exp(s, e) + S |- CALL x a* ~> MATCH a* WITH clause* -- if (x, p* `-> t `= clause*) <- S.FUN - -- if (CLAUSE `{q*} a'* `= e `- pr*) <- clause* - -- Match_args: S |- a* `/ `{q*} a'* => s - -- Reduce_prems: S |- $subst_prem(s, pr)* ~>* eps - ;; TODO: need to try in order for ELSE to behave correctly rule Step_exp/CVT-ctx: @@ -371,6 +401,9 @@ rule Step_exp/SUB-ctx3: S |- SUB e t_1 t_2 ~> SUB e t_1 t'_2 -- Step_typ: S |- t_2 ~> t'_2 +rule Step_exp/SUB-refl: + S |- SUB e t t ~> e + rule Step_exp/SUB-SUB: S |- SUB (SUB e' t'_1 t'_2) t_1 t_2 ~> SUB e' t'_1 t_2 @@ -386,19 +419,335 @@ rule Step_exp/SUB-LIST: S |- SUB (LIST e*) (ITER t_1 STAR) (ITER t_2 STAR) ~> LIST (SUB e t_1 t_2)* rule Step_exp/SUB-STR: - S |- SUB (STR ef*) (VAR x_1 a_1*) (VAR x_2 a_2*) ~> STR (at `= SUB e t_1 t_2)* - -- Expand_typ: S |- VAR x_1 a_1* => STRUCT tf_1* - -- Expand_typ: S |- VAR x_2 a_2* => STRUCT tf_2* - -- (if (at `: t_2 `- `{q_2*} pr_2*) = tf_2)* - -- (if (at `: t_1 `- `{q_1*} pr_1*) <- tf_1*)* - -- (if (at `= e) <- ef*)* + S |- SUB (STR (at `= e)*) t_1 t_2 ~> STR (at' `= SUB e t'_1 t'_2)* + -- if t_1 = MATCH x_1 WITH (INST `{} `= STRUCT tf_1*) + -- if t_2 = MATCH x_2 WITH (INST `{} `= STRUCT tf_2*) + -- (if (at' `: t'_1 `- `{q_1*} pr_1*) <- tf_1*)* + -- (if (at' `: t'_2 `- `{q_2*} pr_2*) = tf_2)* rule Step_exp/SUB-CASE: - S |- SUB (INJ op e) (VAR x_1 a_1*) (VAR x_2 a_2*) ~> INJ op (SUB e t_1 t_2) - -- Expand_typ: S |- VAR x_1 a_1* => VARIANT tc_1* - -- Expand_typ: S |- VAR x_2 a_2* => VARIANT tc_2* - -- if (op `: t_1 `- `{q_1*} pr_1*) <- tc_1* - -- if (op `: t_2 `- `{q_2*} pr_2*) <- tc_2* + S |- SUB (INJ op e) t_1 t_2 ~> INJ op (SUB e t'_1 t'_2) + -- if t_1 = MATCH x_1 WITH (INST `{} `= VARIANT tc_1*) + -- if t_2 = MATCH x_2 WITH (INST `{} `= VARIANT tc_2*) + -- if (op `: t'_1 `- `{q_1*} pr_1*) <- tc_1* + -- if (op `: t'_2 `- `{q_2*} pr_2*) <- tc_2* + + +rule Step_exp/MATCH-ctx1: + S |- MATCH a* WITH clause* ~> MATCH a*[[n] = a'_n] WITH clause* + -- Step_arg: S |- a*[n] ~> a'_n + +rule Step_exp/MATCH-ctx2: + S |- MATCH a* WITH clause* ~> MATCH a* WITH clause*[[n] = clause'_n] + -- Step_clause: S |- clause*[n] ~> clause'_n + +rule Step_exp/MATCH-match: + S |- MATCH a* WITH (CLAUSE `{q*} a'* `= e `- pr*) clause* ~> + MATCH a''* WITH + (CLAUSE `{q'*} a'''* `= $subst_exp(s, e) `- $subst_prem(s, pr)*) + (CLAUSE `{} a''* `= (MATCH a* WITH clause*) `- eps) + -- Step_argmatch: S |- `{q*} (a / a')* ~>_s `{q'*} (a'' / a''')* + +rule Step_exp/MATCH-match-fail: + S |- MATCH a* WITH (CLAUSE `{q*} a'* `= e `- pr*) clause* ~> + MATCH a''* WITH clause* + -- Step_argmatch: S |- `{q*} (a / a')* ~>_s `{} FAIL + +rule Step_exp/MATCH-guess: + S |- MATCH a* WITH (CLAUSE `{q*} a'* `= e `- pr*) clause* ~> + MATCH a* WITH (CLAUSE `{} $subst_arg(s, a')* `= e `- pr*) clause* + -- Ok_subst: $storeenv(S) |- s : q* + ;; Note: non-computational rule + +rule Step_exp/MATCH-true: + S |- MATCH eps WITH (CLAUSE `{} eps `= e `- eps) clause* ~> e + +rule Step_exp/MATCH-false: + S |- MATCH eps WITH (CLAUSE `{} eps `= e `- (IF (BOOL false)) pr*) clause* ~> + MATCH eps WITH clause* + + +rule Step_expfield/ctx: + S |- a `= e ~> a `= e' + -- Step_exp: S |- e ~> e' + + +;; Paths + +rule Step_path/THE-ctx: + S |- THE p ~> THE p' + -- Step_path: S |- p ~> p' + +rule Step_path/IDX-ctx1: + S |- IDX p e ~> IDX p' e + -- Step_path: S |- p ~> p' + +rule Step_path/IDX-ctx2: + S |- IDX p e ~> IDX p e' + -- Step_exp: S |- e ~> e' + +rule Step_path/SLICE-ctx1: + S |- SLICE p e_1 e_2 ~> SLICE p' e_1 e_2 + -- Step_path: S |- p ~> p' + +rule Step_path/SLICE-ctx2: + S |- SLICE p e_1 e_2 ~> SLICE p e'_1 e_2 + -- Step_exp: S |- e_1 ~> e'_1 + +rule Step_path/SLICE-ctx3: + S |- SLICE p e_1 e_2 ~> SLICE p e_1 e'_2 + -- Step_exp: S |- e_2 ~> e'_2 + +rule Step_path/DOT-ctx: + S |- DOT p a ~> DOT p' a + -- Step_path: S |- p ~> p' + +rule Step_path/PROJ-ctx: + S |- PROJ p m ~> PROJ p' m + -- Step_path: S |- p ~> p' + + +;; Matches + +syntax argmatch = arg / arg | FAIL +syntax expmatch = exp / exp | FAIL + +relation Step_argmatch: S |- `{quant*} argmatch* ~>_subst `{quant*} argmatch* +relation Step_expmatch: S |- `{quant*} expmatch* ~>_subst `{quant*} expmatch* +relation Step_argmatch_plain: S |- argmatch* ~> argmatch* +relation Step_expmatch_plain: S |- expmatch* ~> expmatch* + +def $subst_argmatch(subst, argmatch) : argmatch +def $subst_expmatch(subst, expmatch) : expmatch + +def $subst_argmatch(s, a / a') = $subst_arg(s, a) / $subst_arg(s, a') +def $subst_expmatch(s, e / e') = $subst_exp(s, e) / $subst_exp(s, e') + + +rule Step_argmatch/plain: + S |- `{q*} (a / a')* ~>_{} `{q*} (a'' / a''')* + -- Step_argmatch_plain: S |- (a / a')* ~> (a'' / a''')* + +rule Step_argmatch/seq: + S |- `{q_1* q* q_2*} am_1* am am_2* ~>_s + `{q_1* q'* $subst_quant(s, q_2)*} am_1* am'* $subst_argmatch(s, am_2)* + -- Step_argmatch: S |- `{q*} am ~>_s `{q'*} am'* + +rule Step_argmatch/seq-fail: + S |- `{q_1* q* q_2*} am_1* am am_2* ~>_s `{} FAIL + -- Step_argmatch: S |- `{q*} am ~>_s `{} FAIL + +rule Step_argmatch/TYP: + S |- `{TYP x} (TYP t / TYP (VAR x)) ~>_{TYP (x, t)} `{} eps + +rule Step_argmatch/EXP: + S |- `{EXP x `: t} (EXP e / EXP (VAR x)) ~>_{EXP (x, e)} `{} eps + +rule Step_argmatch/FUN: + S |- `{FUN x `: p* `-> t} (FUN y / FUN x) ~>_{FUN (x, y)} `{} eps + +rule Step_argmatch/GRAM: + S |- `{GRAM x `: p* `-> t} (GRAM g / GRAM (VAR x)) ~>_{GRAM (x, g)} `{} eps + +rule Step_argmatch/EXP-exp: + S |- `{q*} (EXP e / EXP e') ~>_s `{q'*} (EXP e'' / EXP e''')* + -- Step_expmatch: S |- `{q*} (e / e') ~>_s `{q'*} (e'' / e''')* + +rule Step_argmatch/EXP-fail: + S |- `{q*} (EXP e / EXP e') ~>_s `{} FAIL + -- Step_expmatch: S |- `{q*} (e / e') ~>_s `{} FAIL + + +rule Step_argmatch_plain/ctx1: + S |- a / a' ~> a'' / a' + -- Step_arg: S |- a ~> a'' + +rule Step_argmatch_plain/ctx2: + S |- a / a' ~> a / a'' + -- Step_arg: S |- a' ~> a'' + +rule Step_argmatch_plain/eq: + S |- a / a ~> eps + +;; TODO: disjoint +;;rule Step_argmatch_plain/neq: +;; S |- a / a' ~> FAIL +;; -- Disj_arg: S |- a =/= a' + + +rule Step_expmatch/plain: + S |- `{q*} (e / e')* ~>_{} `{q*} (e'' / e''')* + -- Step_expmatch_plain: S |- (e / e')* ~> (e'' / e''')* + +rule Step_expmatch/seq: + S |- `{q_1* q* q_2*} em_1* em em_2* ~>_s + `{q_1* q'* $subst_quant(s, q_2)*} em_1* em'* $subst_expmatch(s, em_2)* + -- Step_expmatch: S |- `{q*} em ~>_s `{q'*} em'* + +rule Step_expmatch/seq-fail: + S |- `{q_1* q* q_2*} em_1* em em_2* ~>_s `{} FAIL + -- Step_expmatch: S |- `{q*} em ~>_s `{} FAIL + +rule Step_expmatch/ITER-QUEST: + S |- `{q*} (OPT e? / ITER e' QUEST (x `: t `<- e_p)*) ~>_{} + `{$concat_(quant, (EXP x' `: t)*?) q*} + (e / $subst_exp({EXP (x, VAR x')*}, e'))? + (OPT (VAR x'')? / e_p)* + -- if x''?* = $transposeq_(id, x'*?) + ;; TODO: x'*? fresh + ;; Note: inner match can only instantiate iteration variables + +rule Step_expmatch/ITER-SUP: + S |- `{q*} (LIST e^n / ITER e' (SUP y e_n) (x `: t `<- e_p)*) ~>_{} + `{$concat_(quant, (EXP x' `: t)*^n) q*} + (e / $subst_exp({EXP (y, NAT i) (x, VAR x')*}, e'))^(i e'' / e' + -- Step_exp: S |- e ~> e'' + +rule Step_expmatch_plain/ctx2: + S |- e / e' ~> e' / e'' + -- Step_exp: S |- e' ~> e'' + +rule Step_expmatch_plain/eq: + S |- e / e ~> eps + +rule Step_expmatch_plain/UN-PLUS: + S |- num / UN PLUS e ~> num / e + -- if ~ $isneg(num) + +rule Step_expmatch_plain/UN-PLUS-fail: + S |- num / UN PLUS e ~> FAIL + -- otherwise + +rule Step_expmatch_plain/UN-MINUS: + S |- num / UN MINUS e ~> $numun(MINUS, num) / e + -- if $isneg(num) + +rule Step_expmatch_plain/UN-MINUS-fail: + S |- num / UN MINUS e ~> FAIL + -- otherwise + +rule Step_expmatch_plain/CVT: + S |- num / CVT e nt_1 nt_2 ~> num' / e + -- if num' = $numcvt(nt_1, num) + +rule Step_expmatch_plain/CVT-fail: + S |- num / CVT e nt_1 nt_2 ~> FAIL + -- otherwise + +rule Step_expmatch_plain/TUP: + S |- TUP e* / TUP e'* ~> (e / e')* + +rule Step_expmatch_plain/INJ: + S |- INJ op e / INJ op' e' ~> e / e' + -- if op = op' + +rule Step_expmatch_plain/INJ-fail: + S |- INJ op e / INJ op' e' ~> FAIL + -- otherwise + +rule Step_expmatch_plain/OPT: + S |- OPT e? / OPT e'? ~> (e / e')? + -- if |e?| = |e'?| + +rule Step_expmatch_plain/OPT-fail: + S |- OPT e? / OPT e'? ~> FAIL + -- otherwise + +rule Step_expmatch_plain/LIST: + S |- LIST e* / LIST e'* ~> (e / e')* + -- if |e*| = |e'*| + +rule Step_expmatch_plain/LIST-fail: + S |- LIST e* / LIST e'* ~> FAIL + -- otherwise + +rule Step_expmatch_plain/LIFT: + S |- LIST e? / LIFT e' ~> OPT e? / e' + +rule Step_expmatch_plain/LIFT-fail: + S |- LIST e* / LIFT e' ~> FAIL + -- if |e*| > 1 + +rule Step_expmatch_plain/CAT-left: + S |- LIST e_1* e_2* / CAT (LIST e'_1*) e'_2 ~> (LIST e_1* / LIST e'_1*) (LIST e_2* / e'_2) + -- if |e_1*| = |e'_1*| + +rule Step_expmatch_plain/CAT-left-fail: + S |- LIST e_1* e_2* / CAT (LIST e'_1*) e'_2 ~> FAIL + -- otherwise + +rule Step_expmatch_plain/CAT-right: + S |- LIST e_1* e_2* / CAT e'_1 (LIST e'_2*) ~> (LIST e_1* / e'_1) (LIST e_2* / LIST e'_2*) + -- if |e_2*| = |e'_2*| + +rule Step_expmatch_plain/CAT-right-fail: + S |- LIST e_1* e_2* / CAT e'_1 (LIST e'_2*) ~> FAIL + -- otherwise + +rule Step_expmatch_plain/STR: + S |- STR ef* / STR ef'* ~> (e / e')* + -- (if (l `= e') = ef')* + -- (if (l `= e) <- ef*)* + + +rule Step_expmatch_plain/ITER-PLUS: + S |- LIST e* / ITER e' PLUS (x `: t `<- e_p)* ~> + LIST e* / ITER e' STAR (x `: t `<- e_p)* + -- if |e*| >= 1 + +rule Step_expmatch_plain/ITER-PLUS-fail: + S |- LIST eps / ITER e' PLUS (x `: t `<- e_p)* ~> FAIL + +rule Step_expmatch_plain/ITER-STAR: + S |- LIST e* / ITER e' STAR (x `: t `<- e_p)* ~> + LIST e* / ITER e' (SUP y (NAT n)) (x `: t `<- e_p)* + -- if |e*| = n + ;; TODO: y fresh + + +rule Step_expmatch_plain/SUB-SUB: + S |- SUB e t_1 t_2 / SUB e' t'_1 t'_2 ~> + SUB e t_1 t'_1 / e' + -- Sub_typ: $storeenv(S) |- t_1 <: t'_1 + +;; TODO: disjointness + +rule Step_expmatch_plain/SUB-TUP: + S |- TUP e^n / SUB e' (TUP (x_1 `: t'_1)^n) (TUP (x_2 `: t'_2)^n) ~> + TUP (SUB e' $subst_typ(s_1, t'_1) $subst_typ(s_2, t'_2))^n / e' + -- if s_1 = {EXP (x_1, SEL e i)^(i inst +relation Step_clause: S |- clause ~> clause + +rule Step_inst/INST-ctx: + S |- INST `{q*} a* `= t ~> INST `{q*} a*[[n] = a'_n] `= t + -- Step_arg: S |- a*[n] ~> a'_n + + +rule Step_clause/CLAUSE-ctx1: + S |- CLAUSE `{q*} a* `= e `- pr* ~> CLAUSE `{q*} a*[[n] = a'_n] `= e `- pr* + -- Step_arg: S |- a*[n] ~> a'_n + +rule Step_clause/CLAUSE-ctx2: + S |- CLAUSE `{q*} a* `= e `- pr* ~> CLAUSE `{q*} a* `= e' `- pr* + -- Step_exp: S |- e ~> e' + +rule Step_clause/CLAUSE-ctx3: + S |- CLAUSE `{q*} a* `= e `- pr* ~> CLAUSE `{q*} a* `= e `- pr'* + -- Step_prems: S |- pr* ~> pr'* ;; Arguments @@ -406,13 +755,6 @@ rule Step_exp/SUB-CASE: relation Reduce_arg: S |- arg ~>* arg relation Step_arg: S |- arg ~> arg relation Eq_arg: S |- arg == arg -relation Match_args: S |- arg* `/ `{quant*} arg* => subst - - -rule Match_args: - S |- a* `/ `{q*} a' => s - -- Ok_subst: $storeenv(S) |- s : q* - -- if a* = $subst_arg(s, a')* rule Eq_arg: @@ -422,7 +764,7 @@ rule Eq_arg: -- if a'_1 = a'_2 -rule Reduce_arg/normal: +rule Reduce_arg/refl: S |- a ~>* a rule Reduce_arg/step: @@ -454,7 +796,7 @@ rule Eq_prems: -- if pr'_1* = pr'_2* -rule Reduce_prems/normal: +rule Reduce_prems/refl: S |- pr* ~>* pr* rule Reduce_prems/step: @@ -464,9 +806,16 @@ rule Reduce_prems/step: rule Step_prems/ctx: - S |- pr_1 pr* ~> pr_1'* pr* - -- Step_prems: S |- pr_1 ~> pr_1'* + S |- pr* ~> pr*[0 : n] pr'_n* pr*[n : |pr*| - n] + -- Step_prems: S |- pr*[n] ~> pr'_n* + +rule Step_prems/REL: + S |- REL x a* `: e ~> $subst_prem(s, pr)* (IF (CMP EQ $subst_exp(s, e') e)) + -- if (x, p* `-> t `= rul*) <- S.REL + -- if (RULE `{q*} e' `- pr*) <- $subst_rule($args_for_params(a*, p*), rul)* + -- Ok_subst: $storeenv(S) |- s : q* + ;; Note: non-computational rule rule Step_prems/IF-ctx: S |- IF e ~> IF e' @@ -476,15 +825,24 @@ rule Step_prems/IF-true: S |- IF (BOOL true) ~> eps rule Step_prems/ELSE: - S |- ELSE ~> eps + S |- ELSE ~> IF (BOOL true) rule Step_prems/LET-ctx: S |- LET e_1 `= e_2 ~> LET e_1 `= e'_2 -- Step_exp: S |- e_2 ~> e'_2 rule Step_prems/LET: - S |- LET e_1 `= e_2 ~> eps - -- Eq_exp: S |- e_1 == e_2 + S |- LET e `= e ~> eps + +rule Step_prems/NOT-ctx: + S |- NOT pr ~> NOT pr' + -- Step_prems: S |- pr ~> pr' + +rule Step_prems/NOT-true: + S |- NOT (IF (BOOL true)) ~> IF (BOOL false) + +rule Step_prems/NOT-false: + S |- NOT (IF (BOOL false)) ~> IF (BOOL true) rule Step_prems/ITER-ctx1: S |- ITER pr it ep* ~> ITER pr' it ep* @@ -499,21 +857,18 @@ rule Step_prems/ITER-ctx3: -- Step_exppull: S |- ep*[n] ~> ep'_n rule Step_prems/ITER-QUEST: - S |- ITER pr QUEST (x `<- OPT e?)* ~> $subst_prem({EXP (x, e')*}, pr)? + S |- ITER pr QUEST (x `: t `<- OPT e?)* ~> $subst_prem({EXP (x, e')*}, pr)? -- if e'*? = $transpose_(exp, e?*) rule Step_prems/ITER-PLUS: - S |- ITER pr PLUS (x `<- LIST e*)* ~> ITER pr STAR (x `<- LIST e*)* + S |- ITER pr PLUS (x `: t `<- LIST e*)* ~> ITER pr STAR (x `: t `<- LIST e*)* -- if |e**[0]| >= 1 rule Step_prems/ITER-STAR: - S |- ITER pr STAR (x `<- LIST e*)* ~> ITER pr (SUP (NAT n)) (x `<- LIST e*)* + S |- ITER pr STAR (x `: t `<- LIST e*)* ~> ITER pr (SUP y (NAT n)) (x `: t `<- LIST e*)* -- if |e**[0]| = n - -rule Step_prems/ITER-SUP-eps: - S |- ITER pr (SUP eps e_n) (x `<- LIST e*)* ~> ITER pr (SUP y e_n) (x `<- LIST e*)* ;; TODO: y fresh rule Step_prems/ITER-SUP: - S |- ITER pr (SUP x_i (NAT n)) (x `<- LIST e^n)* ~> $subst_prem({EXP (x, e')* (x_i, NAT i)}, pr)^(i $subst_prem({EXP (x, e')* (y, NAT i)}, pr)^(i ALIAS (ITER t' it) + -- Expand_typ: E |- t ~~ ALIAS (ITER t' it) rule Catable_typ/STRUCT: E |- t CATABLE - -- Expand_typ: E |- t => STRUCT (atom `: t' `- `{q*} pr*)* + -- Expand_typ: E |- t ~~ STRUCT (atom `: t' `- `{q*} pr*)* -- (Catable_typ: E |- t' CATABLE)* @@ -43,18 +43,18 @@ rule Sub_typ/tup: rule Sub_typ/struct: E |- t_1 <: t_2 - -- Expand_typ: E |- t_1 => STRUCT tf_1* - -- Expand_typ: E |- t_2 => STRUCT tf_2* + -- Expand_typ: E |- t_1 ~~ STRUCT tf_1* + -- Expand_typ: E |- t_2 ~~ STRUCT tf_2* -- (if (a `: t_2a `- `{q*} pr*) = tf_2)* -- (if (a `: t_1a `- `{q*} pr*) <- tf_1*)* -- (Sub_typ: E |- t_1a <: t_2a)* rule Sub_typ/variant: E |- t_1 <: t_2 - -- Expand_typ: E |- t_1 => VARIANT tc_1* - -- Expand_typ: E |- t_2 => VARIANT tc_2* - -- (if (m `: t_1a `- `{q*} pr*) = tc_1)* - -- (if (m `: t_2a `- `{q*} pr*) <- tc_2*)* + -- Expand_typ: E |- t_1 ~~ VARIANT tc_1* + -- Expand_typ: E |- t_2 ~~ VARIANT tc_2* + -- (if (a `: t_1a `- `{q*} pr*) = tc_1)* + -- (if (a `: t_2a `- `{q*} pr*) <- tc_2*)* -- (Sub_typ: E |- t_1a <: t_2a)* rule Sub_typ/iter: @@ -124,6 +124,12 @@ rule Ok_typ/ITER: -- Ok_typ: E |- t : OK -- if it <- [QUEST STAR] +rule Ok_typ/MATCH: + E |- MATCH x a* WITH inst* : OK + -- if (x, p* `-> OK `= inst'*) <- E.TYP + -- Ok_args: E |- a* : p* => s + -- (Ok_inst: E |- inst : p* -> OK)* + relation Ok_deftyp: E |- deftyp : OK relation Ok_typfield: E |- typfield : OK @@ -174,7 +180,7 @@ rule Ok_iter/PLUS: E |- PLUS : STAR -| {} rule Ok_iter/SUP: - E |- SUP x? e : STAR -| {EXP (x, NAT)?} + E |- SUP x e : STAR -| {EXP (x, NAT)} -- Ok_exp: E |- e : NAT @@ -297,14 +303,14 @@ rule Ok_exp/LIFT: rule Ok_exp/INJ: E |- INJ op e : VAR x a* - -- Expand_typ: E |- VAR x a* => VARIANT tc* + -- Expand_typ: E |- VAR x a* ~~ VARIANT tc* -- if (op `: t `- `{q*} pr*) <- tc* -- Ok_exp: E |- e : t ;; Note: premises need not hold! rule Ok_exp/STR: E |- STR ef* : VAR x a* - -- Expand_typ: E |- VAR x a* => STRUCT tf* + -- Expand_typ: E |- VAR x a* ~~ STRUCT tf* -- if (at `: t `- `{q*} pr*)* = tf* -- if (at `= e)* = ef* -- (Ok_exp: E |- e : t)* @@ -358,8 +364,9 @@ rule Ok_exp/CALL: rule Ok_exp/ITER: - E |- ITER e it (x `<- e')* : ITER t it' + E |- ITER e it (x `: t' `<- e')* : ITER t it' -- Ok_iter: E |- it : it' -| E' + -- (Ok_typ: E |- t' : OK)* -- (Ok_exp: E |- e' : ITER t' it')* -- Ok_exp: E ++ {EXP (x, t')*} ++ E' |- e : t -- Ok_typ: E |- t : OK @@ -374,6 +381,12 @@ rule Ok_exp/SUB: -- Ok_exp: E |- e : t_1 -- Sub_typ: E |- t_1 <: t_2 +rule Ok_exp/MATCH: + E |- MATCH a* WITH clause* : t + -- Ok_args: E |- a* : p* => s + -- Ok_params: E |- p* : OK + -- (Ok_clause: E ++ $paramenv(p*) |- clause : p* -> t)* + rule Ok_exp/conv: E |- e : t @@ -407,14 +420,14 @@ rule Ok_path/SLICE: rule Ok_path/DOT: E |- DOT p atom : t -> t' -- Ok_path: E |- p : t -> VAR x a* - -- Expand_typ: E |- VAR x a* => STRUCT tf* + -- Expand_typ: E |- VAR x a* ~~ STRUCT tf* -- if (atom `: t' `- `{q*} pr*) <- tf* ;; Note: premises cannot be used rule Ok_path/PROJ: E |- PROJ p mixop : t -> t' -- Ok_path: E |- p : t -> VAR x a* - -- Expand_typ: E |- VAR x a* => VARIANT tc* + -- Expand_typ: E |- VAR x a* ~~ VARIANT tc* -- if (mixop `: t' `- `{q*} pr*) <- tc* ;; Note: premises cannot be used @@ -453,8 +466,9 @@ rule Ok_sym/RANGE: -- Ok_sym: E |- g_2 : NAT rule Ok_sym/ITER: - E |- ITER g it (x `<- e)* : ITER t it' + E |- ITER g it (x `: t' `<- e)* : ITER t it' -- Ok_iter: E |- it : it' -| E' + -- (Ok_typ: E |- t' : OK)* -- (Ok_exp: E |- e : ITER t' it')* -- Ok_sym: E ++ {EXP (x, t')*} ++ E' |- g : t -- Ok_typ: E |- t : OK @@ -476,8 +490,8 @@ rule Ok_sym/conv: relation Ok_prem: E |- prem : OK relation Ok_prems: E |- prem* : OK -rule Ok_prem/RULE: - E |- RULE x a* `: e : OK +rule Ok_prem/REL: + E |- REL x a* `: e : OK -- if (x, (p* `-> t `= rul*)) <- E.REL -- Ok_args: E |- a* : p* => s -- Ok_exp: E |- e : $subst_typ(s, t) @@ -489,16 +503,21 @@ rule Ok_prem/IF: rule Ok_prem/ELSE: E |- ELSE : OK +rule Ok_prem/NOT: + E |- NOT pr : OK + -- Ok_prem: E |- pr : OK + rule Ok_prem/LET: E |- LET e_1 `= e_2 : OK -- Ok_exp: E |- e_1 : t -- Ok_exp: E |- e_2 : t rule Ok_prem/ITER: - E |- ITER pr it (x `<- e)* : OK + E |- ITER pr it (x `: t `<- e)* : OK -- Ok_iter: E |- it : it' -| E' - -- (Ok_exp: E |- e : ITER t' it')* - -- Ok_prem: E ++ {EXP (x, t')*} ++ E' |- pr : OK + -- (Ok_typ: E |- t : OK)* + -- (Ok_exp: E |- e : ITER t it')* + -- Ok_prem: E ++ {EXP (x, t)*} ++ E' |- pr : OK rule Ok_prems: @@ -511,13 +530,13 @@ rule Ok_prems: relation Ok_param: E |- param : OK relation Ok_params: E |- param* : OK +rule Ok_param/TYP: + E |- TYP x : OK + rule Ok_param/EXP: E |- EXP x `: t : OK -- Ok_typ: E |- t : OK -rule Ok_param/TYP: - E |- TYP x : OK - rule Ok_param/FUN: E |- FUN x `: p* `-> t : OK -- Ok_params: E |- p* : OK @@ -540,14 +559,14 @@ rule Ok_params/cons: relation Ok_arg: E |- arg : param => subst relation Ok_args: E |- arg* : param* => subst -rule Ok_arg/EXP: - E |- EXP e : EXP x `: t => {EXP (x, e)} - -- Ok_exp: E |- e : t - rule Ok_arg/TYP: E |- TYP t : TYP x => {TYP (x, t)} -- Ok_typ: E |- t : OK +rule Ok_arg/EXP: + E |- EXP e : EXP x `: t => {EXP (x, e)} + -- Ok_exp: E |- e : t + rule Ok_arg/FUN: E |- FUN y : FUN x `: p* `-> t => {FUN (x, y)} -- if (y, (p'* `-> t' `= clause*)) <- E.FUN From 228e9109e2f6e7a23bec92f590eb8dc83a7963e3 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Mon, 23 Mar 2026 10:38:42 +0100 Subject: [PATCH 100/235] [spec] Narrow definition of null ref values (#2093) --- document/core/exec/instructions.rst | 14 +- document/core/exec/runtime.rst | 6 +- document/core/exec/values.rst | 5 - document/core/util/macros.def | 2 +- interpreter/README.md | 2 +- interpreter/exec/eval.ml | 48 +- interpreter/host/spectest.ml | 6 +- interpreter/runtime/value.ml | 16 +- interpreter/script/js.ml | 29 +- interpreter/script/runner.ml | 2 +- interpreter/text/arrange.ml | 2 +- interpreter/text/parser.mly | 3 +- .../4.0-execution.configurations.spectec | 11 +- .../wasm-3.0/4.1-execution.values.spectec | 10 +- .../4.3-execution.instructions.spectec | 52 +- .../4.0-execution.configurations.spectec | 11 +- .../wasm-latest/4.1-execution.values.spectec | 10 +- .../4.3-execution.instructions.spectec | 52 +- spectec/doc/example/output/NanoWasm.pdf | Bin 245508 -> 245508 bytes spectec/src/backend-interpreter/construct.ml | 6 +- spectec/src/backend-interpreter/host.ml | 8 +- .../src/backend-interpreter/interpreter.ml | 13 +- spectec/src/backend-interpreter/relation.ml | 22 +- spectec/src/exe-spectec/main.ml | 2 +- spectec/src/il2al/translate.ml | 6 +- spectec/src/il2al/translate.mli | 2 + spectec/src/il2al/transpile.ml | 22 +- spectec/test-frontend/TEST.md | 249 +++--- spectec/test-latex/TEST.md | 68 +- spectec/test-middlend/TEST.md | 747 +++++++++--------- spectec/test-prose/TEST.md | 230 +++--- spectec/test-prose/doc/exec/runtime-in.rst | 4 +- spectec/test-splice/TEST.md | 5 +- 33 files changed, 809 insertions(+), 856 deletions(-) diff --git a/document/core/exec/instructions.rst b/document/core/exec/instructions.rst index ecf34f60b..06dcf1552 100644 --- a/document/core/exec/instructions.rst +++ b/document/core/exec/instructions.rst @@ -687,19 +687,9 @@ Reference Instructions :math:`\REFNULL~x` ....................... -1. Let :math:`F` be the :ref:`current ` :ref:`frame `. - -2. Assert: due to :ref:`validation `, the :ref:`defined type ` :math:`F.\AMODULE.\MITYPES[x]` exists. - -3. Let :math:`\deftype` be the :ref:`defined type ` :math:`F.\AMODULE.\MITYPES[x]`. +$${rule-prose: Step_read/ref.null} -4. Push the value :math:`\REFNULL~\deftype` to the stack. - -$${rule: {Step_read/ref.null-*}} - -.. note:: - No formal reduction rule is required for the case |REFNULL| |ABSHEAPTYPE|, - since the instruction form is already a :ref:`value `. +$${rule: {Step_read/ref.null}} .. _exec-ref.func: diff --git a/document/core/exec/runtime.rst b/document/core/exec/runtime.rst index cfa74500c..c1b5f7b27 100644 --- a/document/core/exec/runtime.rst +++ b/document/core/exec/runtime.rst @@ -12,7 +12,6 @@ Runtime Structure .. _syntax-num: .. _syntax-vec: .. _syntax-ref: -.. _syntax-addrref: .. _syntax-ref.i31num: .. _syntax-ref.struct: .. _syntax-ref.array: @@ -34,6 +33,7 @@ It is convenient to reuse the same notation as for the ${:CONST} :ref:`instructi References other than null are represented with additional :ref:`administrative instructions `. They either are *scalar references*, containing a 31-bit :ref:`integer `, +*null references*, *structure references*, pointing to a specific :ref:`structure address `, *array references*, pointing to a specific :ref:`array address `, *function references*, pointing to a specific :ref:`function address `, @@ -41,7 +41,7 @@ They either are *scalar references*, containing a 31-bit :ref:`integer ` defined by the :ref:`embedder `. Any of the aformentioned references can furthermore be wrapped up as an *external reference*. -$${syntax: val num vec ref addrref} +$${syntax: val num vec ref} .. note:: Future versions of WebAssembly may add additional forms of values. @@ -590,7 +590,7 @@ In order to express the reduction of :ref:`traps `, :ref:`calls ` represents an allocated :ref:`reference ` value of respective form :ref:`"on the stack" `. +A :ref:`reference ` represents a :ref:`reference ` value of respective form :ref:`"on the stack" `. The ${:LABEL}, ${:FRAME}, and ${:HANDLER} instructions model :ref:`labels `, :ref:`frames `, and active :ref:`exception handlers `, respectively, :ref:`"on the stack" `. Moreover, the administrative syntax maintains the nesting structure of the original :ref:`structured control instruction ` or :ref:`function body ` and their :ref:`instruction sequences `. diff --git a/document/core/exec/values.rst b/document/core/exec/values.rst index ef2d01920..a6ee02be6 100644 --- a/document/core/exec/values.rst +++ b/document/core/exec/values.rst @@ -46,11 +46,6 @@ $${rule-prose: Ref_ok/null} $${rule: Ref_ok/null} -.. note:: - A null reference can be typed with any smaller type. - In particular, that allows it to be typed with the least type in its respective hierarchy. - That ensures that the value is compatible with any nullable type in that hierarchy. - .. _valid-ref.i31num: diff --git a/document/core/util/macros.def b/document/core/util/macros.def index ef3b39299..341ace26c 100644 --- a/document/core/util/macros.def +++ b/document/core/util/macros.def @@ -1531,6 +1531,7 @@ .. Administrative Instructions, terminals .. |REFI31NUM| mathdef:: \xref{exec/runtime}{syntax-ref}{\K{ref{.}i\scriptstyle31}} +.. |REFNULLADDR| mathdef:: \xref{exec/runtime}{syntax-ref}{\K{ref{.}null}} .. |REFFUNCADDR| mathdef:: \xref{exec/runtime}{syntax-ref}{\K{ref{.}func}} .. |REFSTRUCTADDR| mathdef:: \xref{exec/runtime}{syntax-ref}{\K{ref{.}struct}} .. |REFARRAYADDR| mathdef:: \xref{exec/runtime}{syntax-ref}{\K{ref{.}array}} @@ -1545,7 +1546,6 @@ .. |num| mathdef:: \xref{exec/runtime}{syntax-num}{\X{num}} .. |vec| mathdef:: \xref{exec/runtime}{syntax-vec}{\X{vec}} .. |reff| mathdef:: \xref{exec/runtime}{syntax-ref}{\X{ref}} -.. |addrref| mathdef:: \xref{exec/runtime}{syntax-addrref}{\X{addrref}} .. |val| mathdef:: \xref{exec/runtime}{syntax-val}{\X{val}} .. |result| mathdef:: \xref{exec/runtime}{syntax-result}{\X{result}} diff --git a/interpreter/README.md b/interpreter/README.md index cade09865..0693b445f 100644 --- a/interpreter/README.md +++ b/interpreter/README.md @@ -453,7 +453,7 @@ action: const: ( .const ) ;; number value ( + ) ;; vector value - ( ref.null ) ;; null reference + ( ref.null ? ) ;; null reference ( ref.host ) ;; host reference ( ref.extern ) ;; external host reference diff --git a/interpreter/exec/eval.ml b/interpreter/exec/eval.ml index b5ea0e939..33ffa9a02 100644 --- a/interpreter/exec/eval.ml +++ b/interpreter/exec/eval.ml @@ -126,7 +126,7 @@ let any_ref (inst : moduleinst) x i at = let func_ref (inst : moduleinst) x i at = match any_ref inst x i at with | FuncRef f -> f - | NullRef _ -> Trap.error at ("uninitialized element " ^ Int64.to_string i) + | NullRef -> Trap.error at ("uninitialized element " ^ Int64.to_string i) | _ -> Crash.error at ("type mismatch for element " ^ Int64.to_string i) let blocktype (inst : moduleinst) bt at = @@ -231,13 +231,13 @@ let rec step (c : config) : config = else vs', [Plain (Br (Lib.List32.nth xs i)) @@ e.at] - | BrOnNull x, Ref (NullRef _) :: vs' -> + | BrOnNull x, Ref NullRef :: vs' -> vs', [Plain (Br x) @@ e.at] | BrOnNull x, Ref r :: vs' -> Ref r :: vs', [] - | BrOnNonNull x, Ref (NullRef _) :: vs' -> + | BrOnNonNull x, Ref NullRef :: vs' -> vs', [] | BrOnNonNull x, Ref r :: vs' -> @@ -263,7 +263,7 @@ let rec step (c : config) : config = | Call x, vs -> vs, [Invoke (func c.frame.inst x) @@ e.at] - | CallRef _x, Ref (NullRef _) :: vs -> + | CallRef _x, Ref NullRef :: vs -> vs, [Trapping "null function reference" @@ e.at] | CallRef _x, Ref (FuncRef f) :: vs -> @@ -285,7 +285,7 @@ let rec step (c : config) : config = | _ -> assert false ) - | ReturnCallRef _x, Ref (NullRef _) :: vs -> + | ReturnCallRef _x, Ref NullRef :: vs -> vs, [Trapping "null function reference" @@ e.at] | ReturnCallRef x, vs -> @@ -313,7 +313,7 @@ let rec step (c : config) : config = let args, vs' = split n vs e.at in vs', [Throwing (t, args) @@ e.at] - | ThrowRef, Ref (NullRef _) :: vs -> + | ThrowRef, Ref NullRef :: vs -> vs, [Trapping "null exception reference" @@ e.at] | ThrowRef, Ref (Exn.(ExnRef (Exn (t, args)))) :: vs -> @@ -627,19 +627,19 @@ let rec step (c : config) : config = vs, [] | RefNull t, vs' -> - Ref (NullRef (subst_heaptype (subst_of c.frame.inst) t)) :: vs', [] + Ref NullRef :: vs', [] | RefFunc x, vs' -> let f = func c.frame.inst x in Ref (FuncRef f) :: vs', [] - | RefIsNull, Ref (NullRef _) :: vs' -> + | RefIsNull, Ref NullRef :: vs' -> value_of_bool true :: vs', [] | RefIsNull, Ref _ :: vs' -> value_of_bool false :: vs', [] - | RefAsNonNull, Ref (NullRef _) :: vs' -> + | RefAsNonNull, Ref NullRef :: vs' -> vs', [Trapping "null reference" @@ e.at] | RefAsNonNull, Ref r :: vs' -> @@ -664,7 +664,7 @@ let rec step (c : config) : config = | RefI31, Num (I32 i) :: vs' -> Ref (I31.I31Ref (I31.of_i32 i)) :: vs', [] - | I31Get ext, Ref (NullRef _) :: vs' -> + | I31Get ext, Ref NullRef :: vs' -> vs', [Trapping "null i31 reference" @@ e.at] | I31Get ext, Ref (I31.I31Ref i) :: vs' -> @@ -687,7 +687,7 @@ let rec step (c : config) : config = with Failure _ -> Crash.error e.at "type mismatch packing value" in Ref (Aggr.StructRef struct_) :: vs'', [] - | StructGet (x, i, exto), Ref (NullRef _) :: vs' -> + | StructGet (x, i, exto), Ref NullRef :: vs' -> vs', [Trapping "null structure reference" @@ e.at] | StructGet (x, i, exto), Ref Aggr.(StructRef (Struct (_, fs))) :: vs' -> @@ -698,7 +698,7 @@ let rec step (c : config) : config = (try Aggr.read_field f exto :: vs', [] with Failure _ -> Crash.error e.at "type mismatch reading field") - | StructSet (x, i), v :: Ref (NullRef _) :: vs' -> + | StructSet (x, i), v :: Ref NullRef :: vs' -> vs', [Trapping "null structure reference" @@ e.at] | StructSet (x, i), v :: Ref Aggr.(StructRef (Struct (_, fs))) :: vs' -> @@ -765,7 +765,7 @@ let rec step (c : config) : config = with Failure _ -> Crash.error e.at "type mismatch packing value" in Ref (Aggr.ArrayRef array) :: vs', [] - | ArrayGet (x, exto), Num (I32 i) :: Ref (NullRef _) :: vs' -> + | ArrayGet (x, exto), Num (I32 i) :: Ref NullRef :: vs' -> vs', [Trapping "null array reference" @@ e.at] | ArrayGet (x, exto), Num (I32 i) :: Ref (Aggr.ArrayRef a) :: vs' @@ -776,7 +776,7 @@ let rec step (c : config) : config = (try Aggr.read_field (Lib.List32.nth fs i) exto :: vs', [] with Failure _ -> Crash.error e.at "type mismatch reading array") - | ArraySet x, v :: Num (I32 i) :: Ref (NullRef _) :: vs' -> + | ArraySet x, v :: Num (I32 i) :: Ref NullRef :: vs' -> vs', [Trapping "null array reference" @@ e.at] | ArraySet x, v :: Num (I32 i) :: Ref (Aggr.ArrayRef a) :: vs' @@ -787,18 +787,18 @@ let rec step (c : config) : config = (try Aggr.write_field (Lib.List32.nth fs i) v; vs', [] with Failure _ -> Crash.error e.at "type mismatch writing array") - | ArrayLen, Ref (NullRef _) :: vs' -> + | ArrayLen, Ref NullRef :: vs' -> vs', [Trapping "null array reference" @@ e.at] | ArrayLen, Ref Aggr.(ArrayRef (Array (_, fs))) :: vs' -> Num (I32 (Lib.List32.length fs)) :: vs', [] | ArrayCopy (x, y), - Num _ :: Num _ :: Ref (NullRef _) :: Num _ :: Ref _ :: vs' -> + Num _ :: Num _ :: Ref NullRef :: Num _ :: Ref _ :: vs' -> vs', [Trapping "null array reference" @@ e.at] | ArrayCopy (x, y), - Num _ :: Num _ :: Ref _ :: Num _ :: Ref (NullRef _) :: vs' -> + Num _ :: Num _ :: Ref _ :: Num _ :: Ref NullRef :: vs' -> vs', [Trapping "null array reference" @@ e.at] | ArrayCopy (x, y), @@ -846,7 +846,7 @@ let rec step (c : config) : config = Plain (ArraySet x); ] - | ArrayFill x, Num (I32 n) :: v :: Num (I32 i) :: Ref (NullRef _) :: vs' -> + | ArrayFill x, Num (I32 n) :: v :: Num (I32 i) :: Ref NullRef :: vs' -> vs', [Trapping "null array reference" @@ e.at] | ArrayFill x, Num (I32 n) :: v :: Num (I32 i) :: Ref (Aggr.ArrayRef a) :: vs' -> @@ -868,7 +868,7 @@ let rec step (c : config) : config = ] | ArrayInitData (x, y), - Num _ :: Num _ :: Num _ :: Ref (NullRef _) :: vs' -> + Num _ :: Num _ :: Num _ :: Ref NullRef :: vs' -> vs', [Trapping "null array reference" @@ e.at] | ArrayInitData (x, y), @@ -899,7 +899,7 @@ let rec step (c : config) : config = ] | ArrayInitElem (x, y), - Num _ :: Num _ :: Num _ :: Ref (NullRef _) :: vs' -> + Num _ :: Num _ :: Num _ :: Ref NullRef :: vs' -> vs', [Trapping "null array reference" @@ e.at] | ArrayInitElem (x, y), @@ -926,14 +926,14 @@ let rec step (c : config) : config = Plain (ArrayInitElem (x, y)); ] - | ExternConvert Internalize, Ref (NullRef _) :: vs' -> - Ref (NullRef NoneHT) :: vs', [] + | ExternConvert Internalize, Ref NullRef :: vs' -> + Ref NullRef :: vs', [] | ExternConvert Internalize, Ref (Extern.ExternRef r) :: vs' -> Ref r :: vs', [] - | ExternConvert Externalize, Ref (NullRef _) :: vs' -> - Ref (NullRef NoExternHT) :: vs', [] + | ExternConvert Externalize, Ref NullRef :: vs' -> + Ref NullRef :: vs', [] | ExternConvert Externalize, Ref r :: vs' -> Ref (Extern.ExternRef r) :: vs', [] diff --git a/interpreter/host/spectest.ml b/interpreter/host/spectest.ml index db3a44415..ec29602cc 100644 --- a/interpreter/host/spectest.ml +++ b/interpreter/host/spectest.ml @@ -15,17 +15,17 @@ let global (GlobalT (_, t) as gt) = | NumT F32T -> Num (F32 (F32.of_float 666.6)) | NumT F64T -> Num (F64 (F64.of_float 666.6)) | VecT V128T -> Vec (V128 (V128.I32x4.of_lanes [666l; 666l; 666l; 666l])) - | RefT (_, t) -> Ref (NullRef t) + | RefT _ -> Ref NullRef | BotT -> assert false in Some (ExternGlobal (Global.alloc gt v)) let table = let tt = TableT (I32AT, {min = 10L; max = Some 20L}, (Null, FuncHT)) in - Some (ExternTable (Table.alloc tt (NullRef FuncHT))) + Some (ExternTable (Table.alloc tt NullRef)) let table64 = let tt = TableT (I64AT, {min = 10L; max = Some 20L}, (Null, FuncHT)) in - Some (ExternTable (Table.alloc tt (NullRef FuncHT))) + Some (ExternTable (Table.alloc tt NullRef)) let memory = let mt = MemoryT (I32AT, {min = 1L; max = Some 2L}) in diff --git a/interpreter/runtime/value.ml b/interpreter/runtime/value.ml index b84468ae8..91d21c888 100644 --- a/interpreter/runtime/value.ml +++ b/interpreter/runtime/value.ml @@ -17,7 +17,7 @@ type ref_ = .. type value = Num of num | Vec of vec | Ref of ref_ type t = value -type ref_ += NullRef of heaptype +type ref_ += NullRef type address = I64.t @@ -89,7 +89,7 @@ struct end let is_null_ref = function - | NullRef _ -> true + | NullRef -> true | _ -> false @@ -109,7 +109,7 @@ let type_of_vec = type_of_vecop let type_of_ref' = ref (function _ -> assert false) let type_of_ref = function - | NullRef t -> (Null, Match.bot_of_heaptype [] t) + | NullRef -> (Null, BotHT) | r -> (NoNull, !type_of_ref' r) let type_of_value = function @@ -124,11 +124,7 @@ let eq_num n1 n2 = n1 = n2 let eq_vec v1 v2 = v1 = v2 -let eq_ref' = ref (fun r1 r2 -> - match r1, r2 with - | NullRef _, NullRef _ -> true - | _, _ -> r1 == r2 -) +let eq_ref' = ref (==) let eq_ref r1 r2 = !eq_ref' r1 r2 @@ -152,7 +148,7 @@ let default_vec = function | V128T -> Some (Vec (V128 V128.zero)) let default_ref = function - | (Null, t) -> Some (Ref (NullRef t)) + | (Null, _) -> Some (Ref NullRef) | (NoNull, _) -> None let default_value = function @@ -323,7 +319,7 @@ let hex_string_of_vec = function let string_of_ref' = ref (function _ -> "ref") let string_of_ref = function - | NullRef _ -> "null" + | NullRef -> "null" | r -> !string_of_ref' r let string_of_value = function diff --git a/interpreter/script/js.ml b/interpreter/script/js.ml index ae4b5ac12..189cca9a6 100644 --- a/interpreter/script/js.ml +++ b/interpreter/script/js.ml @@ -390,29 +390,30 @@ let abs_mask_of = function | I32T | F32T -> I32 Int32.max_int | I64T | F64T -> I64 Int64.max_int -let value v = - match v.it with - | Num n -> [Const (n @@ v.at) @@ v.at] - | Vec s -> [VecConst (s @@ v.at) @@ v.at] - | Ref (NullRef ht) -> [RefNull (Match.bot_of_heaptype [] ht) @@ v.at] - | Ref (HostRef n) -> +let value v t = + match v.it, t with + | Num n, _ -> [Const (n @@ v.at) @@ v.at] + | Vec s, _ -> [VecConst (s @@ v.at) @@ v.at] + | Ref NullRef, (RefT (_, ht)) -> + [ RefNull (Match.bot_of_heaptype [] ht) @@ v.at ] + | Ref (HostRef n), _ -> [ Const (I32 n @@ v.at) @@ v.at; Call (hostref_idx @@ v.at) @@ v.at; ] - | Ref (Extern.ExternRef (HostRef n)) -> + | Ref (Extern.ExternRef (HostRef n)), _ -> [ Const (I32 n @@ v.at) @@ v.at; Call (hostref_idx @@ v.at) @@ v.at; ExternConvert Externalize @@ v.at; ] - | Ref _ -> assert false + | Ref _, _ -> assert false -let invoke dt vs at = +let invoke dt vs ts at = let dummy = RecT [SubT (Final, [], FuncT ([], []))] in let rts0 = Lib.List32.init subject_type_idx (fun i -> dummy, (dummy, i)) in let rts, i = statify_deftype rts0 dt in List.map (fun (_, (rt, _)) -> rt @@ at) (Lib.List32.drop subject_type_idx rts), ExternFuncT (Idx i), - List.concat (List.map value vs) @ [Call (subject_idx @@ at) @@ at] + List.concat (List.map2 value vs ts) @ [Call (subject_idx @@ at) @@ at] let get t at = [], ExternGlobalT t, [GlobalGet (subject_idx @@ at) @@ at] @@ -529,7 +530,7 @@ let assert_return ress ts at = VecTest (V128 (V128.I8x16 V128Op.AllTrue)) @@ at; Test (I32 I32Op.Eqz) @@ at; BrIf (0l @@ at) @@ at ] - | RefResult (RefPat {it = NullRef _; _}) -> + | RefResult (RefPat {it = NullRef; _}) -> [ RefIsNull @@ at; Test (Value.I32 I32Op.Eqz) @@ at; BrIf (0l @@ at) @@ at ] @@ -704,7 +705,7 @@ let of_vec v = let of_ref r = let open Value in match r with - | NullRef _ -> "null" + | NullRef -> "null" | HostRef n | Extern.ExternRef (HostRef n) -> "hostref(" ^ Int32.to_string n ^ ")" | _ -> assert false @@ -763,11 +764,11 @@ let of_action env act = "[" ^ String.concat ", " (List.map of_value vs) ^ "])", (match lookup_export env x_opt name act.at with | ExternFuncT (Def dt) -> - let (_, out) as ft = functype_of_comptype (expand_deftype dt) in + let (ins, out) as ft = functype_of_comptype (expand_deftype dt) in if is_js_functype ft then None else - Some (of_wrapper env x_opt name (invoke dt vs), out) + Some (of_wrapper env x_opt name (invoke dt vs ins), out) | _ -> None ) | Get (x_opt, name) -> diff --git a/interpreter/script/runner.ml b/interpreter/script/runner.ml index b5af67454..bc9fdb0c5 100644 --- a/interpreter/script/runner.ml +++ b/interpreter/script/runner.ml @@ -463,7 +463,7 @@ let assert_ref_pat r p = | RefTypePat Types.FuncHT, Instance.FuncRef _ | RefTypePat Types.ExnHT, Exn.ExnRef _ | RefTypePat Types.ExternHT, _ -> true - | NullPat, Value.NullRef _ -> true + | NullPat, Value.NullRef -> true | _ -> false let rec assert_result v r = diff --git a/interpreter/text/arrange.ml b/interpreter/text/arrange.ml index 1ab2c222d..bcbb6979f 100644 --- a/interpreter/text/arrange.ml +++ b/interpreter/text/arrange.ml @@ -771,7 +771,7 @@ let num mode = if mode = `Binary then hex_string_of_num else string_of_num let vec mode = if mode = `Binary then hex_string_of_vec else string_of_vec let ref_ = function - | NullRef t -> Node ("ref.null " ^ heaptype t, []) + | NullRef -> Node ("ref.null", []) | Script.HostRef n -> Node ("ref.host " ^ nat32 n, []) | Extern.ExternRef (Script.HostRef n) -> Node ("ref.extern " ^ nat32 n, []) | _ -> assert false diff --git a/interpreter/text/parser.mly b/interpreter/text/parser.mly index 194590270..1bcc33393 100644 --- a/interpreter/text/parser.mly +++ b/interpreter/text/parser.mly @@ -1500,7 +1500,7 @@ literal_vec : | LPAR VEC_CONST VECSHAPE list(num) RPAR { snd (vec $2 $3 $4 $sloc) } literal_ref : - | LPAR REF_NULL heaptype RPAR { Value.NullRef ($3 (empty_context ())) } + | LPAR REF_NULL heaptype? RPAR { Value.NullRef } | LPAR REF_HOST NAT RPAR { Script.HostRef (nat32 $3 $loc($3)) } | LPAR REF_EXTERN NAT RPAR { Extern.ExternRef (Script.HostRef (nat32 $3 $loc($3))) } @@ -1525,7 +1525,6 @@ result : | LPAR REF_FUNC RPAR { RefResult (RefTypePat FuncHT) @@ $sloc } | LPAR REF_EXN RPAR { RefResult (RefTypePat ExnHT) @@ $sloc } | LPAR REF_EXTERN RPAR { RefResult (RefTypePat ExternHT) @@ $sloc } - | LPAR REF_NULL RPAR { RefResult NullPat @@ $sloc } | LPAR VEC_CONST VECSHAPE list(numpat) RPAR { if V128.num_lanes $3 <> List.length $4 then error (at $sloc) "wrong number of lane literals"; diff --git a/specification/wasm-3.0/4.0-execution.configurations.spectec b/specification/wasm-3.0/4.0-execution.configurations.spectec index d7c2ce8f9..1a1a6b224 100644 --- a/specification/wasm-3.0/4.0-execution.configurations.spectec +++ b/specification/wasm-3.0/4.0-execution.configurations.spectec @@ -32,18 +32,15 @@ syntax num hint(desc "number value") = syntax vec hint(desc "vector value") = | VCONST vectype vec_(vectype) hint(show %.CONST %%) hint(macro "VCONST") -syntax addrref hint(desc "address value") = +syntax ref hint(desc "reference value") hint(macro "reff") = | REF.I31_NUM u31 hint(show REF.I31 %%) hint(macro "%NUM") + | REF.NULL_ADDR hint(show REF.NULL) hint(macro "%ADDR") | REF.STRUCT_ADDR structaddr hint(show REF.STRUCT %%) hint(macro "%ADDR") | REF.ARRAY_ADDR arrayaddr hint(show REF.ARRAY %%) hint(macro "%ADDR") | REF.FUNC_ADDR funcaddr hint(show REF.FUNC %%) hint(macro "%ADDR") | REF.EXN_ADDR exnaddr hint(show REF.EXN %%) hint(macro "%ADDR") | REF.HOST_ADDR hostaddr hint(show REF.HOST %%) hint(macro "%ADDR") - | REF.EXTERN addrref - -syntax ref hint(desc "reference value") hint(macro "reff") = - | addrref - | REF.NULL heaptype + | REF.EXTERN ref syntax val hint(desc "value") = | num | vec | ref @@ -135,7 +132,7 @@ syntax frame hint(desc "frame") hint(macro "%" "A%") = syntax instr/admin hint(desc "administrative instruction") = | ... - | addrref + | ref | LABEL_ n `{instr*} instr* hint(show LABEL_%#% %%) | FRAME_ n `{frame} instr* hint(show FRAME_%#% %%) | HANDLER_ n `{catch*} instr* hint(show HANDLER_%#% %%) diff --git a/specification/wasm-3.0/4.1-execution.values.spectec b/specification/wasm-3.0/4.1-execution.values.spectec index 1b38a0623..b6951b99e 100644 --- a/specification/wasm-3.0/4.1-execution.values.spectec +++ b/specification/wasm-3.0/4.1-execution.values.spectec @@ -8,7 +8,7 @@ def $default_(valtype) : val? def $default_(Inn) = (CONST Inn 0) def $default_(Fnn) = (CONST Fnn $fzero($size(Fnn))) def $default_(Vnn) = (VCONST Vnn 0) -def $default_(REF NULL ht) = (REF.NULL ht) +def $default_(REF NULL ht) = REF.NULL_ADDR def $default_(REF ht) = eps ;;relation Defaultable: |- valtype DEFAULTABLE ;; forward-declared in validation.instructions @@ -33,8 +33,7 @@ rule Vec_ok: rule Ref_ok/null: - s |- REF.NULL ht : (REF NULL ht') - -- Heaptype_sub: {} |- ht' <: ht + s |- REF.NULL_ADDR : (REF NULL BOT) rule Ref_ok/i31: s |- REF.I31_NUM i : (REF I31) @@ -59,8 +58,9 @@ rule Ref_ok/host: s |- REF.HOST_ADDR a : (REF ANY) rule Ref_ok/extern: - s |- REF.EXTERN addrref : (REF EXTERN) - -- Ref_ok: s |- addrref : (REF ANY) + s |- REF.EXTERN ref : (REF EXTERN) + -- Ref_ok: s |- ref : (REF ANY) + -- if ref =/= REF.NULL_ADDR rule Ref_ok/sub: s |- ref : rt diff --git a/specification/wasm-3.0/4.3-execution.instructions.spectec b/specification/wasm-3.0/4.3-execution.instructions.spectec index 8ed03426a..9368923f3 100644 --- a/specification/wasm-3.0/4.3-execution.instructions.spectec +++ b/specification/wasm-3.0/4.3-execution.instructions.spectec @@ -130,7 +130,7 @@ rule Step_pure/br_table-ge: rule Step_pure/br_on_null-null: val (BR_ON_NULL l) ~> (BR l) - -- if val = REF.NULL ht + -- if val = REF.NULL_ADDR rule Step_pure/br_on_null-addr: val (BR_ON_NULL l) ~> val @@ -139,7 +139,7 @@ rule Step_pure/br_on_null-addr: rule Step_pure/br_on_non_null-null: val (BR_ON_NON_NULL l) ~> eps - -- if val = REF.NULL ht + -- if val = REF.NULL_ADDR rule Step_pure/br_on_non_null-addr: val (BR_ON_NON_NULL l) ~> val (BR l) @@ -175,7 +175,7 @@ rule Step_read/call: -- if $moduleinst(z).FUNCS[x] = a rule Step_read/call_ref-null: - z; (REF.NULL ht) (CALL_REF yy) ~> TRAP + z; (REF.NULL_ADDR) (CALL_REF yy) ~> TRAP rule Step_read/call_ref-func: z; val^n (REF.FUNC_ADDR a) (CALL_REF yy) ~> (FRAME_ m `{f} (LABEL_ m `{eps} instr*)) @@ -198,7 +198,7 @@ rule Step_read/return_call_ref-handler: z; (HANDLER_ k `{catch*} val* (RETURN_CALL_REF yy) instr*) ~> val* (RETURN_CALL_REF yy) rule Step_read/return_call_ref-frame-null: - z; (FRAME_ k `{f} val* (REF.NULL ht) (RETURN_CALL_REF yy) instr*) ~> TRAP + z; (FRAME_ k `{f} val* (REF.NULL_ADDR) (RETURN_CALL_REF yy) instr*) ~> TRAP rule Step_read/return_call_ref-frame-addr: z; (FRAME_ k `{f} val'* val^n (REF.FUNC_ADDR a) (RETURN_CALL_REF yy) instr*) ~> val^n (REF.FUNC_ADDR a) (CALL_REF yy) @@ -235,7 +235,7 @@ rule Step/throw: -- if exn = {TAG $tagaddr(z)[x], FIELDS val^n} rule Step_read/throw_ref-null: - z; (REF.NULL ht) THROW_REF ~> TRAP + z; (REF.NULL_ADDR) THROW_REF ~> TRAP rule Step_read/throw_ref-instrs: z; val* (REF.EXN_ADDR a) THROW_REF instr* ~> (REF.EXN_ADDR a) THROW_REF @@ -622,8 +622,8 @@ rule Step/data.drop: ;; Reference instructions -rule Step_read/ref.null-idx: - z; (REF.NULL (_IDX x)) ~> (REF.NULL $type(z, x)) +rule Step_read/ref.null: + z; (REF.NULL ht) ~> REF.NULL_ADDR rule Step_read/ref.func: z; (REF.FUNC x) ~> (REF.FUNC_ADDR $moduleinst(z).FUNCS[x]) @@ -634,7 +634,7 @@ rule Step_pure/ref.i31: rule Step_pure/ref.is_null-true: ref REF.IS_NULL ~> (CONST I32 1) - -- if ref = (REF.NULL ht) + -- if ref = REF.NULL_ADDR rule Step_pure/ref.is_null-false: ref REF.IS_NULL ~> (CONST I32 0) @@ -643,7 +643,7 @@ rule Step_pure/ref.is_null-false: rule Step_pure/ref.as_non_null-null: ref REF.AS_NON_NULL ~> TRAP - -- if ref = (REF.NULL ht) + -- if ref = REF.NULL_ADDR rule Step_pure/ref.as_non_null-addr: ref REF.AS_NON_NULL ~> ref @@ -652,7 +652,7 @@ rule Step_pure/ref.as_non_null-addr: rule Step_pure/ref.eq-null: ref_1 ref_2 REF.EQ ~> (CONST I32 1) - -- if ref_1 = (REF.NULL ht_1) /\ ref_2 = (REF.NULL ht_2) + -- if ref_1 = REF.NULL_ADDR /\ ref_2 = REF.NULL_ADDR rule Step_pure/ref.eq-true: ref_1 ref_2 REF.EQ ~> (CONST I32 1) @@ -689,7 +689,7 @@ rule Step_read/ref.cast-fail: ;; Scalar reference instructions rule Step_pure/i31.get-null: - (REF.NULL ht) (I31.GET sx) ~> TRAP + (REF.NULL_ADDR) (I31.GET sx) ~> TRAP rule Step_pure/i31.get-num: (REF.I31_NUM i) (I31.GET sx) ~> (CONST I32 $extend__(31, 32, sx, i)) @@ -710,7 +710,7 @@ rule Step_read/struct.new_default: rule Step_read/struct.get-null: - z; (REF.NULL ht) (STRUCT.GET sx? x i) ~> TRAP + z; (REF.NULL_ADDR) (STRUCT.GET sx? x i) ~> TRAP rule Step_read/struct.get-struct: z; (REF.STRUCT_ADDR a) (STRUCT.GET sx? x i) ~> $unpackfield_(zt*[i], sx?, $structinst(z)[a].FIELDS[i]) @@ -719,7 +719,7 @@ rule Step_read/struct.get-struct: rule Step/struct.set-null: - z; (REF.NULL ht) val (STRUCT.SET x i) ~> z; TRAP + z; (REF.NULL_ADDR) val (STRUCT.SET x i) ~> z; TRAP rule Step/struct.set-struct: z; (REF.STRUCT_ADDR a) val (STRUCT.SET x i) ~> $with_struct(z, a, i, $packfield_(zt*[i], val)); eps @@ -770,7 +770,7 @@ rule Step_read/array.new_data-num: rule Step_read/array.get-null: - z; (REF.NULL ht) (CONST I32 i) (ARRAY.GET sx? x) ~> TRAP + z; (REF.NULL_ADDR) (CONST I32 i) (ARRAY.GET sx? x) ~> TRAP rule Step_read/array.get-oob: z; (REF.ARRAY_ADDR a) (CONST I32 i) (ARRAY.GET sx? x) ~> TRAP @@ -783,7 +783,7 @@ rule Step_read/array.get-array: rule Step/array.set-null: - z; (REF.NULL ht) (CONST I32 i) val (ARRAY.SET x) ~> z; TRAP + z; (REF.NULL_ADDR) (CONST I32 i) val (ARRAY.SET x) ~> z; TRAP rule Step/array.set-oob: z; (REF.ARRAY_ADDR a) (CONST I32 i) val (ARRAY.SET x) ~> z; TRAP @@ -796,14 +796,14 @@ rule Step/array.set-array: rule Step_read/array.len-null: - z; (REF.NULL ht) ARRAY.LEN ~> TRAP + z; (REF.NULL_ADDR) ARRAY.LEN ~> TRAP rule Step_read/array.len-array: z; (REF.ARRAY_ADDR a) ARRAY.LEN ~> (CONST I32 $(|$arrayinst(z)[a].FIELDS|)) rule Step_read/array.fill-null: - z; (REF.NULL ht) (CONST I32 i) val (CONST I32 n) (ARRAY.FILL x) ~> TRAP + z; (REF.NULL_ADDR) (CONST I32 i) val (CONST I32 n) (ARRAY.FILL x) ~> TRAP rule Step_read/array.fill-oob: z; (REF.ARRAY_ADDR a) (CONST I32 i) val (CONST I32 n) (ARRAY.FILL x) ~> TRAP @@ -821,10 +821,10 @@ rule Step_read/array.fill-succ: -- otherwise rule Step_read/array.copy-null1: - z; (REF.NULL ht_1) (CONST I32 i_1) ref (CONST I32 i_2) (CONST I32 n) (ARRAY.COPY x_1 x_2) ~> TRAP + z; (REF.NULL_ADDR) (CONST I32 i_1) ref (CONST I32 i_2) (CONST I32 n) (ARRAY.COPY x_1 x_2) ~> TRAP rule Step_read/array.copy-null2: - z; ref (CONST I32 i_1) (REF.NULL ht_2) (CONST I32 i_2) (CONST I32 n) (ARRAY.COPY x_1 x_2) ~> TRAP + z; ref (CONST I32 i_1) (REF.NULL_ADDR) (CONST I32 i_2) (CONST I32 n) (ARRAY.COPY x_1 x_2) ~> TRAP rule Step_read/array.copy-oob1: z; (REF.ARRAY_ADDR a_1) (CONST I32 i_1) (REF.ARRAY_ADDR a_2) (CONST I32 i_2) (CONST I32 n) (ARRAY.COPY x_1 x_2) ~> TRAP @@ -867,7 +867,7 @@ rule Step_read/array.copy-gt: rule Step_read/array.init_elem-null: - z; (REF.NULL ht) (CONST I32 i) (CONST I32 j) (CONST I32 n) (ARRAY.INIT_ELEM x y) ~> TRAP + z; (REF.NULL_ADDR) (CONST I32 i) (CONST I32 j) (CONST I32 n) (ARRAY.INIT_ELEM x y) ~> TRAP rule Step_read/array.init_elem-oob1: z; (REF.ARRAY_ADDR a) (CONST I32 i) (CONST I32 j) (CONST I32 n) (ARRAY.INIT_ELEM x y) ~> TRAP @@ -895,7 +895,7 @@ rule Step_read/array.init_elem-succ: rule Step_read/array.init_data-null: - z; (REF.NULL ht) (CONST I32 i) (CONST I32 j) (CONST I32 n) (ARRAY.INIT_DATA x y) ~> TRAP + z; (REF.NULL_ADDR) (CONST I32 i) (CONST I32 j) (CONST I32 n) (ARRAY.INIT_DATA x y) ~> TRAP rule Step_read/array.init_data-oob1: z; (REF.ARRAY_ADDR a) (CONST I32 i) (CONST I32 j) (CONST I32 n) (ARRAY.INIT_DATA x y) ~> TRAP @@ -928,17 +928,19 @@ rule Step_read/array.init_data-num: ;; External reference instructions rule Step_pure/extern.convert_any-null: - (REF.NULL ht) EXTERN.CONVERT_ANY ~> (REF.NULL EXTERN) + ref EXTERN.CONVERT_ANY ~> REF.NULL_ADDR + -- if ref = REF.NULL_ADDR rule Step_pure/extern.convert_any-addr: - addrref EXTERN.CONVERT_ANY ~> (REF.EXTERN addrref) + ref EXTERN.CONVERT_ANY ~> (REF.EXTERN ref) + -- otherwise rule Step_pure/any.convert_extern-null: - (REF.NULL ht) ANY.CONVERT_EXTERN ~> (REF.NULL ANY) + (REF.NULL_ADDR) ANY.CONVERT_EXTERN ~> REF.NULL_ADDR rule Step_pure/any.convert_extern-addr: - (REF.EXTERN addrref) ANY.CONVERT_EXTERN ~> addrref + (REF.EXTERN ref) ANY.CONVERT_EXTERN ~> ref ;; Numeric instructions diff --git a/specification/wasm-latest/4.0-execution.configurations.spectec b/specification/wasm-latest/4.0-execution.configurations.spectec index d7c2ce8f9..1a1a6b224 100644 --- a/specification/wasm-latest/4.0-execution.configurations.spectec +++ b/specification/wasm-latest/4.0-execution.configurations.spectec @@ -32,18 +32,15 @@ syntax num hint(desc "number value") = syntax vec hint(desc "vector value") = | VCONST vectype vec_(vectype) hint(show %.CONST %%) hint(macro "VCONST") -syntax addrref hint(desc "address value") = +syntax ref hint(desc "reference value") hint(macro "reff") = | REF.I31_NUM u31 hint(show REF.I31 %%) hint(macro "%NUM") + | REF.NULL_ADDR hint(show REF.NULL) hint(macro "%ADDR") | REF.STRUCT_ADDR structaddr hint(show REF.STRUCT %%) hint(macro "%ADDR") | REF.ARRAY_ADDR arrayaddr hint(show REF.ARRAY %%) hint(macro "%ADDR") | REF.FUNC_ADDR funcaddr hint(show REF.FUNC %%) hint(macro "%ADDR") | REF.EXN_ADDR exnaddr hint(show REF.EXN %%) hint(macro "%ADDR") | REF.HOST_ADDR hostaddr hint(show REF.HOST %%) hint(macro "%ADDR") - | REF.EXTERN addrref - -syntax ref hint(desc "reference value") hint(macro "reff") = - | addrref - | REF.NULL heaptype + | REF.EXTERN ref syntax val hint(desc "value") = | num | vec | ref @@ -135,7 +132,7 @@ syntax frame hint(desc "frame") hint(macro "%" "A%") = syntax instr/admin hint(desc "administrative instruction") = | ... - | addrref + | ref | LABEL_ n `{instr*} instr* hint(show LABEL_%#% %%) | FRAME_ n `{frame} instr* hint(show FRAME_%#% %%) | HANDLER_ n `{catch*} instr* hint(show HANDLER_%#% %%) diff --git a/specification/wasm-latest/4.1-execution.values.spectec b/specification/wasm-latest/4.1-execution.values.spectec index 1b38a0623..b6951b99e 100644 --- a/specification/wasm-latest/4.1-execution.values.spectec +++ b/specification/wasm-latest/4.1-execution.values.spectec @@ -8,7 +8,7 @@ def $default_(valtype) : val? def $default_(Inn) = (CONST Inn 0) def $default_(Fnn) = (CONST Fnn $fzero($size(Fnn))) def $default_(Vnn) = (VCONST Vnn 0) -def $default_(REF NULL ht) = (REF.NULL ht) +def $default_(REF NULL ht) = REF.NULL_ADDR def $default_(REF ht) = eps ;;relation Defaultable: |- valtype DEFAULTABLE ;; forward-declared in validation.instructions @@ -33,8 +33,7 @@ rule Vec_ok: rule Ref_ok/null: - s |- REF.NULL ht : (REF NULL ht') - -- Heaptype_sub: {} |- ht' <: ht + s |- REF.NULL_ADDR : (REF NULL BOT) rule Ref_ok/i31: s |- REF.I31_NUM i : (REF I31) @@ -59,8 +58,9 @@ rule Ref_ok/host: s |- REF.HOST_ADDR a : (REF ANY) rule Ref_ok/extern: - s |- REF.EXTERN addrref : (REF EXTERN) - -- Ref_ok: s |- addrref : (REF ANY) + s |- REF.EXTERN ref : (REF EXTERN) + -- Ref_ok: s |- ref : (REF ANY) + -- if ref =/= REF.NULL_ADDR rule Ref_ok/sub: s |- ref : rt diff --git a/specification/wasm-latest/4.3-execution.instructions.spectec b/specification/wasm-latest/4.3-execution.instructions.spectec index 8ed03426a..9368923f3 100644 --- a/specification/wasm-latest/4.3-execution.instructions.spectec +++ b/specification/wasm-latest/4.3-execution.instructions.spectec @@ -130,7 +130,7 @@ rule Step_pure/br_table-ge: rule Step_pure/br_on_null-null: val (BR_ON_NULL l) ~> (BR l) - -- if val = REF.NULL ht + -- if val = REF.NULL_ADDR rule Step_pure/br_on_null-addr: val (BR_ON_NULL l) ~> val @@ -139,7 +139,7 @@ rule Step_pure/br_on_null-addr: rule Step_pure/br_on_non_null-null: val (BR_ON_NON_NULL l) ~> eps - -- if val = REF.NULL ht + -- if val = REF.NULL_ADDR rule Step_pure/br_on_non_null-addr: val (BR_ON_NON_NULL l) ~> val (BR l) @@ -175,7 +175,7 @@ rule Step_read/call: -- if $moduleinst(z).FUNCS[x] = a rule Step_read/call_ref-null: - z; (REF.NULL ht) (CALL_REF yy) ~> TRAP + z; (REF.NULL_ADDR) (CALL_REF yy) ~> TRAP rule Step_read/call_ref-func: z; val^n (REF.FUNC_ADDR a) (CALL_REF yy) ~> (FRAME_ m `{f} (LABEL_ m `{eps} instr*)) @@ -198,7 +198,7 @@ rule Step_read/return_call_ref-handler: z; (HANDLER_ k `{catch*} val* (RETURN_CALL_REF yy) instr*) ~> val* (RETURN_CALL_REF yy) rule Step_read/return_call_ref-frame-null: - z; (FRAME_ k `{f} val* (REF.NULL ht) (RETURN_CALL_REF yy) instr*) ~> TRAP + z; (FRAME_ k `{f} val* (REF.NULL_ADDR) (RETURN_CALL_REF yy) instr*) ~> TRAP rule Step_read/return_call_ref-frame-addr: z; (FRAME_ k `{f} val'* val^n (REF.FUNC_ADDR a) (RETURN_CALL_REF yy) instr*) ~> val^n (REF.FUNC_ADDR a) (CALL_REF yy) @@ -235,7 +235,7 @@ rule Step/throw: -- if exn = {TAG $tagaddr(z)[x], FIELDS val^n} rule Step_read/throw_ref-null: - z; (REF.NULL ht) THROW_REF ~> TRAP + z; (REF.NULL_ADDR) THROW_REF ~> TRAP rule Step_read/throw_ref-instrs: z; val* (REF.EXN_ADDR a) THROW_REF instr* ~> (REF.EXN_ADDR a) THROW_REF @@ -622,8 +622,8 @@ rule Step/data.drop: ;; Reference instructions -rule Step_read/ref.null-idx: - z; (REF.NULL (_IDX x)) ~> (REF.NULL $type(z, x)) +rule Step_read/ref.null: + z; (REF.NULL ht) ~> REF.NULL_ADDR rule Step_read/ref.func: z; (REF.FUNC x) ~> (REF.FUNC_ADDR $moduleinst(z).FUNCS[x]) @@ -634,7 +634,7 @@ rule Step_pure/ref.i31: rule Step_pure/ref.is_null-true: ref REF.IS_NULL ~> (CONST I32 1) - -- if ref = (REF.NULL ht) + -- if ref = REF.NULL_ADDR rule Step_pure/ref.is_null-false: ref REF.IS_NULL ~> (CONST I32 0) @@ -643,7 +643,7 @@ rule Step_pure/ref.is_null-false: rule Step_pure/ref.as_non_null-null: ref REF.AS_NON_NULL ~> TRAP - -- if ref = (REF.NULL ht) + -- if ref = REF.NULL_ADDR rule Step_pure/ref.as_non_null-addr: ref REF.AS_NON_NULL ~> ref @@ -652,7 +652,7 @@ rule Step_pure/ref.as_non_null-addr: rule Step_pure/ref.eq-null: ref_1 ref_2 REF.EQ ~> (CONST I32 1) - -- if ref_1 = (REF.NULL ht_1) /\ ref_2 = (REF.NULL ht_2) + -- if ref_1 = REF.NULL_ADDR /\ ref_2 = REF.NULL_ADDR rule Step_pure/ref.eq-true: ref_1 ref_2 REF.EQ ~> (CONST I32 1) @@ -689,7 +689,7 @@ rule Step_read/ref.cast-fail: ;; Scalar reference instructions rule Step_pure/i31.get-null: - (REF.NULL ht) (I31.GET sx) ~> TRAP + (REF.NULL_ADDR) (I31.GET sx) ~> TRAP rule Step_pure/i31.get-num: (REF.I31_NUM i) (I31.GET sx) ~> (CONST I32 $extend__(31, 32, sx, i)) @@ -710,7 +710,7 @@ rule Step_read/struct.new_default: rule Step_read/struct.get-null: - z; (REF.NULL ht) (STRUCT.GET sx? x i) ~> TRAP + z; (REF.NULL_ADDR) (STRUCT.GET sx? x i) ~> TRAP rule Step_read/struct.get-struct: z; (REF.STRUCT_ADDR a) (STRUCT.GET sx? x i) ~> $unpackfield_(zt*[i], sx?, $structinst(z)[a].FIELDS[i]) @@ -719,7 +719,7 @@ rule Step_read/struct.get-struct: rule Step/struct.set-null: - z; (REF.NULL ht) val (STRUCT.SET x i) ~> z; TRAP + z; (REF.NULL_ADDR) val (STRUCT.SET x i) ~> z; TRAP rule Step/struct.set-struct: z; (REF.STRUCT_ADDR a) val (STRUCT.SET x i) ~> $with_struct(z, a, i, $packfield_(zt*[i], val)); eps @@ -770,7 +770,7 @@ rule Step_read/array.new_data-num: rule Step_read/array.get-null: - z; (REF.NULL ht) (CONST I32 i) (ARRAY.GET sx? x) ~> TRAP + z; (REF.NULL_ADDR) (CONST I32 i) (ARRAY.GET sx? x) ~> TRAP rule Step_read/array.get-oob: z; (REF.ARRAY_ADDR a) (CONST I32 i) (ARRAY.GET sx? x) ~> TRAP @@ -783,7 +783,7 @@ rule Step_read/array.get-array: rule Step/array.set-null: - z; (REF.NULL ht) (CONST I32 i) val (ARRAY.SET x) ~> z; TRAP + z; (REF.NULL_ADDR) (CONST I32 i) val (ARRAY.SET x) ~> z; TRAP rule Step/array.set-oob: z; (REF.ARRAY_ADDR a) (CONST I32 i) val (ARRAY.SET x) ~> z; TRAP @@ -796,14 +796,14 @@ rule Step/array.set-array: rule Step_read/array.len-null: - z; (REF.NULL ht) ARRAY.LEN ~> TRAP + z; (REF.NULL_ADDR) ARRAY.LEN ~> TRAP rule Step_read/array.len-array: z; (REF.ARRAY_ADDR a) ARRAY.LEN ~> (CONST I32 $(|$arrayinst(z)[a].FIELDS|)) rule Step_read/array.fill-null: - z; (REF.NULL ht) (CONST I32 i) val (CONST I32 n) (ARRAY.FILL x) ~> TRAP + z; (REF.NULL_ADDR) (CONST I32 i) val (CONST I32 n) (ARRAY.FILL x) ~> TRAP rule Step_read/array.fill-oob: z; (REF.ARRAY_ADDR a) (CONST I32 i) val (CONST I32 n) (ARRAY.FILL x) ~> TRAP @@ -821,10 +821,10 @@ rule Step_read/array.fill-succ: -- otherwise rule Step_read/array.copy-null1: - z; (REF.NULL ht_1) (CONST I32 i_1) ref (CONST I32 i_2) (CONST I32 n) (ARRAY.COPY x_1 x_2) ~> TRAP + z; (REF.NULL_ADDR) (CONST I32 i_1) ref (CONST I32 i_2) (CONST I32 n) (ARRAY.COPY x_1 x_2) ~> TRAP rule Step_read/array.copy-null2: - z; ref (CONST I32 i_1) (REF.NULL ht_2) (CONST I32 i_2) (CONST I32 n) (ARRAY.COPY x_1 x_2) ~> TRAP + z; ref (CONST I32 i_1) (REF.NULL_ADDR) (CONST I32 i_2) (CONST I32 n) (ARRAY.COPY x_1 x_2) ~> TRAP rule Step_read/array.copy-oob1: z; (REF.ARRAY_ADDR a_1) (CONST I32 i_1) (REF.ARRAY_ADDR a_2) (CONST I32 i_2) (CONST I32 n) (ARRAY.COPY x_1 x_2) ~> TRAP @@ -867,7 +867,7 @@ rule Step_read/array.copy-gt: rule Step_read/array.init_elem-null: - z; (REF.NULL ht) (CONST I32 i) (CONST I32 j) (CONST I32 n) (ARRAY.INIT_ELEM x y) ~> TRAP + z; (REF.NULL_ADDR) (CONST I32 i) (CONST I32 j) (CONST I32 n) (ARRAY.INIT_ELEM x y) ~> TRAP rule Step_read/array.init_elem-oob1: z; (REF.ARRAY_ADDR a) (CONST I32 i) (CONST I32 j) (CONST I32 n) (ARRAY.INIT_ELEM x y) ~> TRAP @@ -895,7 +895,7 @@ rule Step_read/array.init_elem-succ: rule Step_read/array.init_data-null: - z; (REF.NULL ht) (CONST I32 i) (CONST I32 j) (CONST I32 n) (ARRAY.INIT_DATA x y) ~> TRAP + z; (REF.NULL_ADDR) (CONST I32 i) (CONST I32 j) (CONST I32 n) (ARRAY.INIT_DATA x y) ~> TRAP rule Step_read/array.init_data-oob1: z; (REF.ARRAY_ADDR a) (CONST I32 i) (CONST I32 j) (CONST I32 n) (ARRAY.INIT_DATA x y) ~> TRAP @@ -928,17 +928,19 @@ rule Step_read/array.init_data-num: ;; External reference instructions rule Step_pure/extern.convert_any-null: - (REF.NULL ht) EXTERN.CONVERT_ANY ~> (REF.NULL EXTERN) + ref EXTERN.CONVERT_ANY ~> REF.NULL_ADDR + -- if ref = REF.NULL_ADDR rule Step_pure/extern.convert_any-addr: - addrref EXTERN.CONVERT_ANY ~> (REF.EXTERN addrref) + ref EXTERN.CONVERT_ANY ~> (REF.EXTERN ref) + -- otherwise rule Step_pure/any.convert_extern-null: - (REF.NULL ht) ANY.CONVERT_EXTERN ~> (REF.NULL ANY) + (REF.NULL_ADDR) ANY.CONVERT_EXTERN ~> REF.NULL_ADDR rule Step_pure/any.convert_extern-addr: - (REF.EXTERN addrref) ANY.CONVERT_EXTERN ~> addrref + (REF.EXTERN ref) ANY.CONVERT_EXTERN ~> ref ;; Numeric instructions diff --git a/spectec/doc/example/output/NanoWasm.pdf b/spectec/doc/example/output/NanoWasm.pdf index 772ae3066b88f42380fa55b8f7d7e336f5b6faa4..102857f978dd80286b7546e74712f2f8fa4a82d4 100644 GIT binary patch delta 1102 zcmZqq$Jg?YZ-c22laayX1I(KBspoyO4;%2XJ=k4;w0cWoq3X@PNv{*6Ma(2j-(2{b za4APy=k30P`g+e`jWz0fg)T8G?P)4Ve-Z!J#3qc%nKf#1|D+4NX?qoOj{g*Ta(mmc z_l4OGK5txK8}3g|mDAtzI!A1~qQj!=ZjwJ)m0k&JPdRFQ^+fcVx6P|9Zf>%-*%|Gy zt%iS{Q0|*oi{F=>7fA}QD{J3-`^nRZ$zKm?`pLLU7P}msRg>WtSNHn7Q<>Mc_strsP0)Gqj3cU?Ytdqdc+I;+1bxeH`VcBrnu6dq_WY0;0s zu1)K!G-LCoM%FL&dzNP$p1+X2WOwM<7kTm)Our5W8Zh)VK7PPr!RgoNSRlpIX#7CO zg8f``VgX|e)83bt@4d(rckJ6MabWrm)^)|nJUu%?>n}YBG~m?RebpwwoKJ0r_Sv)p zQ=;GM-<`|Wop9}Kz`|XY)9$mFACQV*mwuq;EEeJK7su+I$Gf|JRyAuz_UQ!H4PJ+~ zT$phC!K~H4!Uc+=epk8kJY>PyOWs-KUZIzhYZ4x3x)N$)=01}(+S zf_fW_RSa&mZE?LeVa?tJ*WQ-+txiZk;WvlJva_?XO7W|Jo`Ft^gqJJ(1e3c9j^|oj ztlA-1nV=p95S!f zx~m@S)?Uz^lcG@Q1q!hsZ zs&SuSuLAe1hJAv%3q)UhzQAYYpnl=`!rPO}9_YWD{`1~sj9mA HyKw;k^>FA# delta 1101 zcmZqq$Jg?YZ-c22lcDA01I(KBspoyYnH_o99{m2(C6j)j*Ylb3?r_J}rlyhu&TkWM ztjj%^`rwltsPGw$YFJ3P& zOSOsaiS03pUYqbiP|E)IrO;OkYp!|wg`0AC&N{EZZ|~V>;+b_me$7_G?N-8!K+Lq= zN|^cDLTy7cLn9+YLj!FCLv;fKbxkgP-~1Gp#FA764HqjT10yp7W0;cd)?1ki*#g{5 z4a^N39gR%fOw654OpRPjEDX$?3``u2E!>PP49)EnYzQie<_%}X!IP%yKcyq{UC zUUrJ5zi6OD+y3`_vlW^aG@K}!SSuXpa_8ohr%hZPiw?0a+5CxLLO44*SLNc3k4Ghh zom1DC&icXZ^MySlF*z}D(dRv9Czs!wS^R8H^*rmewEuV395PDl+*$fRaMvtDeOsTR z35=^tzAj-AX)xX8yu>Mhy;s%2(?LmAAe$KcKsT?Nfs6oo5rX�@fZ+6{Yzf4|gH_MhSvlCbi zybo=-pj>`%Q*_yUy{$7t3nqI`wBO=AO}eP&^xD6w{O*rVehyQ8(j~P0AZKjRiH)2A zswrlNSj*a2+-^_Uc0y{>R{kqHdwa6P-tgS)oUEvBXc(ZsMD7r4TPu(A$`>q?ma%`? zwe+~>q23qe(swVYUShf3FS@P%)O||>br77!_=^P{vI|&AY5S5xEWMHSWW zzqI7`W5K1~dDi|@gW~u3YWwc|D;qYeEdSpMlgD;u>rGzI+rNBDas3a^%yYH712XUZ z-R#q&{m%ZgSGeuuzpF~l8uM386|?zV>ydeJvh|&9mnNy7ubZj9TRvz{rQ+>wN6rj} zUWfY~X%kp=fmGN9wl9@080IeEe)0LjZ%k+xwUmIn20JRbBnv FxB#O8=EML1 diff --git a/spectec/src/backend-interpreter/construct.ml b/spectec/src/backend-interpreter/construct.ml index fd5484d89..b8ef93fc5 100644 --- a/spectec/src/backend-interpreter/construct.ml +++ b/spectec/src/backend-interpreter/construct.ml @@ -1016,8 +1016,9 @@ and al_to_funcinst: value -> Instance.funcinst = function | v -> error_value "funcinst" v and al_to_ref: value -> ref_ = function - | CaseV ("REF.NULL", [ ht ]) -> NullRef (al_to_heaptype ht) | CaseV ("REF.I31_NUM", [ i ]) -> I31.I31Ref (al_to_nat i) + | CaseV ("REF.NULL_ADDR", []) -> NullRef + | CaseV ("REF.NULL", [ _ht ]) when !version <= 2 -> NullRef | CaseV ("REF.STRUCT_ADDR", [ addr ]) -> let struct_insts = Ds.Store.access "STRUCTS" in let struct_ = addr |> al_to_nat |> listv_nth struct_insts |> al_to_struct in @@ -1237,7 +1238,8 @@ let al_of_vec_shape shape (lanes: int64 list) = )) let rec al_of_ref = function - | NullRef ht -> CaseV ("REF.NULL", [ al_of_heaptype ht ]) + | NullRef when !version <= 2 -> CaseV ("REF.NULL", [ al_of_heaptype NoneHT ]) + | NullRef -> CaseV ("REF.NULL_ADDR", []) (* | I31.I31Ref i -> CaseV ("REF.I31_NUM", [ NumV (Int64.of_int i) ]) diff --git a/spectec/src/backend-interpreter/host.ml b/spectec/src/backend-interpreter/host.ml index 4d59c5d92..7fb04491c 100644 --- a/spectec/src/backend-interpreter/host.ml +++ b/spectec/src/backend-interpreter/host.ml @@ -69,13 +69,13 @@ let spectest () = "global_f64", 666.6 |> F64.of_float |> f64_to_const |> create_globalinst (TupV [none "MUT"; nullary "F64"]); ] in (* Builtin tables *) - let nulls = CaseV ("REF.NULL", [ nullary "FUNC" ]) |> Array.make 10 in - let funcref = + let null, funcref = if !Construct.version <= 2 then - nullary "FUNCREF" + CaseV ("REF.NULL", [ nullary "FUNC" ]), nullary "FUNCREF" else - CaseV ("REF", [some "NULL"; nullary "FUNC"]) + nullary "REF.NULL_ADDR", CaseV ("REF", [some "NULL"; nullary "FUNC"]) in + let nulls = Array.make 10 null in let mk_ttype nt = let args = [ CaseV ("[", [ natV (Z.of_int 10); someV (natV (Z.of_int 20)) ]); funcref ] in if !Construct.version <= 2 then diff --git a/spectec/src/backend-interpreter/interpreter.ml b/spectec/src/backend-interpreter/interpreter.ml index 4cedf25b7..945a05db0 100644 --- a/spectec/src/backend-interpreter/interpreter.ml +++ b/spectec/src/backend-interpreter/interpreter.ml @@ -165,10 +165,12 @@ and check_type ty v expr = ] in match v with (* addrref *) - | CaseV (ar, _) when List.mem ar addr_refs-> - boolV (ty = "addrref" ||ty = "ref" || ty = "val") + | CaseV (ar, _) when List.mem ar addr_refs -> + boolV (ty = "addrref" || ty = "ref" || ty = "val") (* nul *) - | CaseV ("REF.NULL", _) -> + | CaseV ("REF.NULL_ADDR", _) -> + boolV (ty = "nul" || ty = "ref" || ty = "val") + | CaseV ("REF.NULL", _) when !Construct.version <= 2 -> boolV (ty = "nul" || ty = "ref" || ty = "val") (* values *) | CaseV ("CONST", CaseV (nt, []) ::_) when List.mem nt inn_types -> @@ -707,9 +709,10 @@ and try_step_instr fname ctx env instr = try_with_error fname instr.at string_of_instr (step_instr fname ctx env) instr and step_wasm (ctx: AlContext.t) : value -> AlContext.t = function - | CaseV ("REF.NULL" as name, ([ CaseV ("_IDX", _) ] as args)) -> + | CaseV ("REF.NULL" as name, ([ CaseV ("_IDX", _) ] as args)) when !Construct.version <= 2 -> create_context name args :: ctx - | CaseV ("REF.NULL", _) + | CaseV ("REF.NULL", _) as v when !Construct.version <= 2 -> + WasmContext.push_value v; ctx | CaseV ("CONST", _) | CaseV ("VCONST", _) as v -> WasmContext.push_value v; ctx | CaseV (name, []) when Host.is_host name -> Host.call name; ctx diff --git a/spectec/src/backend-interpreter/relation.ml b/spectec/src/backend-interpreter/relation.ml index f5c25d7dd..9223ab89f 100644 --- a/spectec/src/backend-interpreter/relation.ml +++ b/spectec/src/backend-interpreter/relation.ml @@ -10,30 +10,10 @@ let ref_ok = (* TODO: some / none *) let null = some "NULL" in let nonull = none "NULL" in - let none = nullary "NONE" in - let nofunc = nullary "NOFUNC" in - let noexn = nullary "NOEXN" in - let noextern = nullary "NOEXTERN" in - - let match_heaptype v1 v2 = - let ht1 = Construct.al_to_heaptype v1 in - let ht2 = Construct.al_to_heaptype v2 in - Match.match_reftype [] (Types.Null, ht1) (Types.Null, ht2) - in function (* null *) - | [CaseV ("REF.NULL", [ ht ]) as v] -> - if match_heaptype none ht then - CaseV ("REF", [ null; none]) - else if match_heaptype nofunc ht then - CaseV ("REF", [ null; nofunc]) - else if match_heaptype noexn ht then - CaseV ("REF", [ null; noexn]) - else if match_heaptype noextern ht then - CaseV ("REF", [ null; noextern]) - else - Numerics.error_typ_value "$Reftype" "null reference" v + | [CaseV ("REF.NULL_ADDR", [])] -> CaseV ("REF", [ null; nullary "BOT"]) (* i31 *) | [CaseV ("REF.I31_NUM", [ _ ])] -> CaseV ("REF", [ nonull; nullary "I31"]) (* host *) diff --git a/spectec/src/exe-spectec/main.ml b/spectec/src/exe-spectec/main.ml index 04b317f46..5b7847b14 100644 --- a/spectec/src/exe-spectec/main.ml +++ b/spectec/src/exe-spectec/main.ml @@ -157,7 +157,7 @@ let argspec = Arg.align ( ] @ List.map pass_argspec all_passes @ [ "--all-passes", Arg.Unit (fun () -> List.iter enable_pass all_passes)," Run all passes"; - "--test-version", Arg.Int (fun i -> Backend_interpreter.Construct.version := i), " Wasm version to assume for tests (default: 3)"; + "--test-version", Arg.Int (fun i -> Backend_interpreter.Construct.version := i; Il2al.Translate.version := i), " Wasm version to assume for tests (default: 3)"; "-help", Arg.Unit ignore, ""; "--help", Arg.Unit ignore, ""; diff --git a/spectec/src/il2al/translate.ml b/spectec/src/il2al/translate.ml index 333fdbe93..4d56bea33 100644 --- a/spectec/src/il2al/translate.ml +++ b/spectec/src/il2al/translate.ml @@ -16,6 +16,9 @@ struct include Print end +let version = ref 3 + + (* Errors *) let error at msg = Error.error at "prose translation" msg @@ -151,14 +154,15 @@ let rec is_wasm_value e = "CONST"; "VCONST"; "REF.I31_NUM"; + "REF.NULL_ADDR"; "REF.STRUCT_ADDR"; "REF.ARRAY_ADDR"; "REF.EXN_ADDR"; "REF.FUNC_ADDR"; "REF.HOST_ADDR"; "REF.EXTERN"; - "REF.NULL" ] -> true + | Il.CaseE (op, _) when !version <= 2 && case_head op = "REF.NULL" -> true | Il.CallE (id, _) when id.it = "const" -> true | _ -> Valid.sub_typ e.note valT let is_wasm_instr e = diff --git a/spectec/src/il2al/translate.mli b/spectec/src/il2al/translate.mli index 7ccd92d95..6ed88d96f 100644 --- a/spectec/src/il2al/translate.mli +++ b/spectec/src/il2al/translate.mli @@ -2,3 +2,5 @@ val translate_exp : Il.Ast.exp -> Al.Ast.expr val translate_argexp : Il.Ast.exp -> Al.Ast.expr list val translate_args : Il.Ast.arg list -> Al.Ast.arg list val translate : Il.Ast.script -> bool -> Al.Ast.algorithm list + +val version : int ref diff --git a/spectec/src/il2al/transpile.ml b/spectec/src/il2al/transpile.ml index 94a2ec01c..14c5dca0d 100644 --- a/spectec/src/il2al/transpile.ml +++ b/spectec/src/il2al/transpile.ml @@ -332,8 +332,22 @@ let extract_last_ifs il = in extract_first_ifs [] (List.rev il) -(* Unify more than 3 ifs at once, by extracting the common conditions *) -let unify_multi_if instrs = +(* Unify more than 3 ifs at once, by extracting the common conditions + if (... if A ...); if (... if A ...) + --> + if A (...; ...) +*) +let rec unify_multi_if instrs = + (* Apply recursively *) + let instrs = List.map (fun instr -> + let at = instr.at in + match instr.it with + | IfI (c, il1, il2) -> ifI (c, unify_multi_if il1, unify_multi_if il2) ~at + | OtherwiseI il -> otherwiseI (unify_multi_if il) ~at + | EitherI (il1, il2) -> eitherI (unify_multi_if il1, unify_multi_if il2) ~at + | _ -> instr + ) instrs in + let hd, ifs = extract_last_ifs instrs in hd @ merge_disjoint_ifs ifs @@ -665,6 +679,9 @@ let simplify_dot_access e = ) | _ -> e +(* If there is exactly one form of case check (i.e. fi.CODE is some FUNC) + regard it as an assertion *) + type count = One of string | Many module Counter = Map.Make (String) let infer_case_assert instrs = @@ -672,6 +689,7 @@ let infer_case_assert instrs = let rec handle_cond c mt_then mt_else = match c.it with + | BinE (`EqOp, e, {it = CaseE (Atom atom, _); _}) | IsCaseOfE (e, atom) -> let k = Print.string_of_expr e in let v = One (Print.string_of_atom atom) in diff --git a/spectec/test-frontend/TEST.md b/spectec/test-frontend/TEST.md index a09e800d2..2dcddd885 100644 --- a/spectec/test-frontend/TEST.md +++ b/spectec/test-frontend/TEST.md @@ -1967,32 +1967,6 @@ syntax addr = nat ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax arrayaddr = addr -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec -syntax exnaddr = addr - -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec -syntax funcaddr = addr - -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec -syntax hostaddr = addr - -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec -syntax structaddr = addr - -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec -rec { - -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:35.1-42.23 -syntax addrref = - | `REF.I31_NUM`(u31 : u31) - | `REF.STRUCT_ADDR`(structaddr : structaddr) - | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) - | `REF.FUNC_ADDR`(funcaddr : funcaddr) - | `REF.EXN_ADDR`(exnaddr : exnaddr) - | `REF.HOST_ADDR`(hostaddr : hostaddr) - | `REF.EXTERN`(addrref : addrref) -} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax catch = | CATCH(tagidx : tagidx, labelidx : labelidx) @@ -2000,12 +1974,18 @@ syntax catch = | CATCH_ALL(labelidx : labelidx) | CATCH_ALL_REF(labelidx : labelidx) +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec +syntax exnaddr = addr + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax dataaddr = addr ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax elemaddr = addr +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec +syntax funcaddr = addr + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax globaladdr = addr @@ -2047,18 +2027,39 @@ syntax moduleinst = EXPORTS exportinst* } +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec +syntax hostaddr = addr + +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec +syntax structaddr = addr + +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:35.1-43.19 +syntax ref = + | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(ref : ref) +} + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax val = | CONST(numtype : numtype, num_(numtype)) | VCONST(vectype : vectype, vec_(vectype)) | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` | `REF.STRUCT_ADDR`(structaddr : structaddr) | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) | `REF.FUNC_ADDR`(funcaddr : funcaddr) | `REF.EXN_ADDR`(exnaddr : exnaddr) | `REF.HOST_ADDR`(hostaddr : hostaddr) - | `REF.EXTERN`(addrref : addrref) - | `REF.NULL`(heaptype : heaptype) + | `REF.EXTERN`(ref : ref) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax frame = @@ -2070,7 +2071,7 @@ syntax frame = ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:136.1-142.9 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:133.1-139.9 syntax instr = | NOP | UNREACHABLE @@ -2180,12 +2181,13 @@ syntax instr = -- if ((sx?{sx <- `sx?`} = ?()) <=> ($lanetype(shape) <- [I32_lanetype I64_lanetype F32_lanetype F64_lanetype])) | VREPLACE_LANE(shape : shape, laneidx : laneidx) | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` | `REF.STRUCT_ADDR`(structaddr : structaddr) | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) | `REF.FUNC_ADDR`(funcaddr : funcaddr) | `REF.EXN_ADDR`(exnaddr : exnaddr) | `REF.HOST_ADDR`(hostaddr : hostaddr) - | `REF.EXTERN`(addrref : addrref) + | `REF.EXTERN`(ref : ref) | `LABEL_%{%}%`(n : n, `instr*` : instr*, `instr*` : instr*) | `FRAME_%{%}%`(n : n, frame : frame, `instr*` : instr*) | `HANDLER_%{%}%`(n : n, `catch*` : catch*, `instr*` : instr*) @@ -3347,7 +3349,7 @@ def $default_(valtype : valtype) : val? ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec def $default_{Vnn : Vnn}((Vnn : Vnn <: valtype)) = ?(VCONST_val(Vnn, `%`_vec_(0))) ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec - def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(`REF.NULL`_val(ht)) + def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(`REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() @@ -5410,17 +5412,6 @@ syntax num = syntax vec = | VCONST(vectype : vectype, vec_(vectype)) -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec -syntax ref = - | `REF.I31_NUM`(u31 : u31) - | `REF.STRUCT_ADDR`(structaddr : structaddr) - | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) - | `REF.FUNC_ADDR`(funcaddr : funcaddr) - | `REF.EXN_ADDR`(exnaddr : exnaddr) - | `REF.HOST_ADDR`(hostaddr : hostaddr) - | `REF.EXTERN`(addrref : addrref) - | `REF.NULL`(heaptype : heaptype) - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax result = | _VALS(`val*` : val*) @@ -5493,13 +5484,13 @@ syntax fieldval = | CONST(numtype : numtype, num_(numtype)) | VCONST(vectype : vectype, vec_(vectype)) | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` | `REF.STRUCT_ADDR`(structaddr : structaddr) | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) | `REF.FUNC_ADDR`(funcaddr : funcaddr) | `REF.EXN_ADDR`(exnaddr : exnaddr) | `REF.HOST_ADDR`(hostaddr : hostaddr) - | `REF.EXTERN`(addrref : addrref) - | `REF.NULL`(heaptype : heaptype) + | `REF.EXTERN`(ref : ref) | PACK(packtype : packtype, iN($psizenn(packtype))) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec @@ -5568,13 +5559,13 @@ def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:193.1-193.86 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:190.1-190.86 def $tagsxa(externaddr*) : tagaddr* - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:199.1-199.23 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:196.1-196.23 def $tagsxa([]) = [] - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:200.1-200.42 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:197.1-197.42 def $tagsxa{a : addr, `xa*` : externaddr*}([TAG_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tagsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:201.1-201.57 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:198.1-198.57 def $tagsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $tagsxa(xa*{xa <- `xa*`}) -- otherwise } @@ -5582,13 +5573,13 @@ def $tagsxa(externaddr*) : tagaddr* ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:194.1-194.89 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:191.1-191.89 def $globalsxa(externaddr*) : globaladdr* - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:203.1-203.26 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:200.1-200.26 def $globalsxa([]) = [] - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:204.1-204.51 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:201.1-201.51 def $globalsxa{a : addr, `xa*` : externaddr*}([GLOBAL_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $globalsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:205.1-205.63 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:202.1-202.63 def $globalsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $globalsxa(xa*{xa <- `xa*`}) -- otherwise } @@ -5596,13 +5587,13 @@ def $globalsxa(externaddr*) : globaladdr* ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:195.1-195.86 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:192.1-192.86 def $memsxa(externaddr*) : memaddr* - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:207.1-207.23 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:204.1-204.23 def $memsxa([]) = [] - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:208.1-208.42 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:205.1-205.42 def $memsxa{a : addr, `xa*` : externaddr*}([MEM_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $memsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:209.1-209.57 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:206.1-206.57 def $memsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $memsxa(xa*{xa <- `xa*`}) -- otherwise } @@ -5610,13 +5601,13 @@ def $memsxa(externaddr*) : memaddr* ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:196.1-196.88 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:193.1-193.88 def $tablesxa(externaddr*) : tableaddr* - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:211.1-211.25 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:208.1-208.25 def $tablesxa([]) = [] - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:212.1-212.48 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:209.1-209.48 def $tablesxa{a : addr, `xa*` : externaddr*}([TABLE_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tablesxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:213.1-213.61 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:210.1-210.61 def $tablesxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $tablesxa(xa*{xa <- `xa*`}) -- otherwise } @@ -5624,13 +5615,13 @@ def $tablesxa(externaddr*) : tableaddr* ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:197.1-197.87 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:194.1-194.87 def $funcsxa(externaddr*) : funcaddr* - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:215.1-215.24 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:212.1-212.24 def $funcsxa([]) = [] - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:216.1-216.45 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:213.1-213.45 def $funcsxa{a : addr, `xa*` : externaddr*}([FUNC_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $funcsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:217.1-217.59 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:214.1-214.59 def $funcsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $funcsxa(xa*{xa <- `xa*`}) -- otherwise } @@ -5850,43 +5841,43 @@ rec { ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:25.1-25.60 relation Ref_ok: `%|-%:%`(store, ref, reftype) - ;; ../../../../specification/wasm-latest/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')) - -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:35.1-36.38 + rule null{s : store}: + `%|-%:%`(s, `REF.NULL_ADDR`_ref, REF_reftype(?(NULL_null), BOT_heaptype)) - ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:39.1-40.33 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:38.1-39.33 rule i31{s : store, i : u31}: `%|-%:%`(s, `REF.I31_NUM`_ref(i), REF_reftype(?(), I31_heaptype)) - ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:42.1-44.31 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:41.1-43.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-latest/4.1-execution.values.spectec:46.1-48.30 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:45.1-47.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-latest/4.1-execution.values.spectec:50.1-52.29 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:49.1-51.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-latest/4.1-execution.values.spectec:54.1-56.24 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:53.1-55.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-latest/4.1-execution.values.spectec:58.1-59.35 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:57.1-58.35 rule host{s : store, a : addr}: `%|-%:%`(s, `REF.HOST_ADDR`_ref(a), REF_reftype(?(), ANY_heaptype)) - ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:61.1-63.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-latest/4.1-execution.values.spectec:60.1-63.30 + rule extern{s : store, ref : ref}: + `%|-%:%`(s, `REF.EXTERN`_ref(ref), REF_reftype(?(), EXTERN_heaptype)) + -- Ref_ok: `%|-%:%`(s, ref, REF_reftype(?(), ANY_heaptype)) + -- if (ref =/= `REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:65.1-68.34 rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: @@ -6052,9 +6043,9 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if (i!`%`_num_.0 >= |l*{l <- `l*`}|) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec - rule `br_on_null-null`{val : val, l : labelidx, ht : heaptype}: + rule `br_on_null-null`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [BR_instr(l)]) - -- if (val = `REF.NULL`_val(ht)) + -- if (val = `REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_on_null-addr`{val : val, l : labelidx}: @@ -6062,9 +6053,9 @@ relation Step_pure: `%~>%`(instr*, instr*) -- otherwise ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec - rule `br_on_non_null-null`{val : val, l : labelidx, ht : heaptype}: + rule `br_on_non_null-null`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], []) - -- if (val = `REF.NULL`_val(ht)) + -- if (val = `REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_on_non_null-addr`{val : val, l : labelidx}: @@ -6125,9 +6116,9 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([CONST_instr(I32_numtype, i) `REF.I31`_instr], [`REF.I31_NUM`_instr($wrap__(32, 31, i))]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec - rule `ref.is_null-true`{ref : ref, ht : heaptype}: + rule `ref.is_null-true`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, `%`_num_(1))]) - -- if (ref = `REF.NULL`_ref(ht)) + -- if (ref = `REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.is_null-false`{ref : ref}: @@ -6135,9 +6126,9 @@ relation Step_pure: `%~>%`(instr*, instr*) -- otherwise ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec - rule `ref.as_non_null-null`{ref : ref, ht : heaptype}: + rule `ref.as_non_null-null`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr], [TRAP_instr]) - -- if (ref = `REF.NULL`_ref(ht)) + -- if (ref = `REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.as_non_null-addr`{ref : ref}: @@ -6145,9 +6136,9 @@ relation Step_pure: `%~>%`(instr*, instr*) -- otherwise ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec - rule `ref.eq-null`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: + rule `ref.eq-null`{ref_1 : ref, ref_2 : ref}: `%~>%`([(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))) + -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.eq-true`{ref_1 : ref, ref_2 : ref}: @@ -6161,8 +6152,8 @@ relation Step_pure: `%~>%`(instr*, instr*) -- otherwise ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec - rule `i31.get-null`{ht : heaptype, sx : sx}: - `%~>%`([`REF.NULL`_instr(ht) `I31.GET`_instr(sx)], [TRAP_instr]) + rule `i31.get-null`{sx : sx}: + `%~>%`([`REF.NULL_ADDR`_instr `I31.GET`_instr(sx)], [TRAP_instr]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `i31.get-num`{i : u31, sx : sx}: @@ -6173,20 +6164,22 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([(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-latest/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)]) + rule `extern.convert_any-null`{ref : ref}: + `%~>%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.NULL_ADDR`_instr]) + -- if (ref = `REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec - rule `extern.convert_any-addr`{addrref : addrref}: - `%~>%`([(addrref : addrref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.EXTERN`_instr(addrref)]) + rule `extern.convert_any-addr`{ref : ref}: + `%~>%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.EXTERN`_instr(ref)]) + -- otherwise ;; ../../../../specification/wasm-latest/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)]) + rule `any.convert_extern-null`: + `%~>%`([`REF.NULL_ADDR`_instr `ANY.CONVERT_EXTERN`_instr], [`REF.NULL_ADDR`_instr]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec - rule `any.convert_extern-addr`{addrref : addrref}: - `%~>%`([`REF.EXTERN`_instr(addrref) `ANY.CONVERT_EXTERN`_instr], [(addrref : addrref <: instr)]) + rule `any.convert_extern-addr`{ref : ref}: + `%~>%`([`REF.EXTERN`_instr(ref) `ANY.CONVERT_EXTERN`_instr], [(ref : ref <: instr)]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `unop-val`{nt : numtype, c_1 : num_(nt), unop : unop_(nt), c : num_(nt)}: @@ -6402,8 +6395,8 @@ relation Step_read: `%~>%`(config, instr*) -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_idx.0] = a) ;; ../../../../specification/wasm-latest/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]) + rule `call_ref-null`{z : state, yy : typeuse}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CALL_REF_instr(yy)]), [TRAP_instr]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `call_ref-func`{z : state, n : n, `val*` : val*, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: @@ -6427,8 +6420,8 @@ relation Step_read: `%~>%`(config, 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-latest/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]) + rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, n : n, `val*` : val*, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, m : m, `t_2*` : valtype*}: @@ -6436,8 +6429,8 @@ relation Step_read: `%~>%`(config, instr*) -- 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-latest/4.3-execution.instructions.spectec - rule `throw_ref-null`{z : state, ht : heaptype}: - `%~>%`(`%;%`_config(z, [`REF.NULL`_instr(ht) THROW_REF_instr]), [TRAP_instr]) + rule `throw_ref-null`{z : state}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr]), [TRAP_instr]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: @@ -6705,8 +6698,8 @@ relation Step_read: `%~>%`(config, instr*) -- otherwise ;; ../../../../specification/wasm-latest/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))]) + rule `ref.null`{z : state, ht : heaptype}: + `%~>%`(`%;%`_config(z, [`REF.NULL`_instr(ht)]), [`REF.NULL_ADDR`_instr]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.func`{z : state, x : idx}: @@ -6741,8 +6734,8 @@ relation Step_read: `%~>%`(config, instr*) -- (if ($default_($unpack(zt)) = ?(val)))*{val <- `val*`, zt <- `zt*`} ;; ../../../../specification/wasm-latest/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]) + rule `struct.get-null`{z : state, `sx?` : sx?, x : idx, i : u32}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: @@ -6778,8 +6771,8 @@ relation Step_read: `%~>%`(config, instr*) -- 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-latest/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]) + rule `array.get-null`{z : state, i : num_(I32_numtype), `sx?` : sx?, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.get-oob`{z : state, a : addr, i : num_(I32_numtype), `sx?` : sx?, x : idx}: @@ -6792,16 +6785,16 @@ relation Step_read: `%~>%`(config, instr*) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec - rule `array.len-null`{z : state, ht : heaptype}: - `%~>%`(`%;%`_config(z, [`REF.NULL`_instr(ht) `ARRAY.LEN`_instr]), [TRAP_instr]) + rule `array.len-null`{z : state}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr]), [TRAP_instr]) ;; ../../../../specification/wasm-latest/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-latest/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]) + rule `array.fill-null`{z : state, i : num_(I32_numtype), val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n)) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.fill-oob`{z : state, a : addr, i : num_(I32_numtype), val : val, n : n, x : idx}: @@ -6820,12 +6813,12 @@ relation Step_read: `%~>%`(config, instr*) -- otherwise ;; ../../../../specification/wasm-latest/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]) + rule `array.copy-null1`{z : state, i_1 : num_(I32_numtype), ref : ref, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr 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-latest/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]) + rule `array.copy-null2`{z : state, ref : ref, i_1 : num_(I32_numtype), 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_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n)) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) ;; ../../../../specification/wasm-latest/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}: @@ -6858,8 +6851,8 @@ relation Step_read: `%~>%`(config, instr*) -- if (sx?{sx <- `sx?`} = $sx(zt_2)) ;; ../../../../specification/wasm-latest/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]) + rule `array.init_elem-null`{z : state, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr 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-latest/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}: @@ -6884,8 +6877,8 @@ relation Step_read: `%~>%`(config, instr*) -- if (ref = $elem(z, y).REFS_eleminst[j!`%`_num_.0]) ;; ../../../../specification/wasm-latest/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]) + rule `array.init_data-null`{z : state, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr 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-latest/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}: @@ -7047,9 +7040,9 @@ relation Step: `%~>%`(config, config) -- if (a = |$structinst(z)|) -- if (si = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:721.1-722.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-latest/4.3-execution.instructions.spectec:721.1-722.55 + rule `struct.set-null`{z : state, val : val, x : idx, i : u32}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr (val : val <: instr) `STRUCT.SET`_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:724.1-727.46 rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: @@ -7062,9 +7055,9 @@ relation Step: `%~>%`(config, config) -- 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-latest/4.3-execution.instructions.spectec:785.1-786.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-latest/4.3-execution.instructions.spectec:785.1-786.66 + rule `array.set-null`{z : state, i : num_(I32_numtype), val : val, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:788.1-790.39 rule `array.set-oob`{z : state, a : addr, i : num_(I32_numtype), val : val, x : idx}: diff --git a/spectec/test-latex/TEST.md b/spectec/test-latex/TEST.md index a4e05349c..763ae1162 100644 --- a/spectec/test-latex/TEST.md +++ b/spectec/test-latex/TEST.md @@ -8875,15 +8875,14 @@ $$ \begin{array}[t]{@{}lrrl@{}l@{}} \mbox{(number value)} & {\mathit{num}} & ::= & {\mathit{numtype}}{.}\mathsf{const}~{{\mathit{num}}}_{{\mathit{numtype}}} \\ \mbox{(vector value)} & {\mathit{vec}} & ::= & {\mathit{vectype}}{.}\mathsf{const}~{{\mathit{vec}}}_{{\mathit{vectype}}} \\ -\mbox{(address value)} & {\mathit{addrref}} & ::= & \mathsf{ref{.}i{\scriptstyle 31}}~{\mathit{u{\kern-0.1em\scriptstyle 31}}} \\ +\mbox{(reference value)} & {\mathit{ref}} & ::= & \mathsf{ref{.}i{\scriptstyle 31}}~{\mathit{u{\kern-0.1em\scriptstyle 31}}} \\ +& & | & \mathsf{ref{.}null} \\ & & | & \mathsf{ref{.}struct}~{\mathit{structaddr}} \\ & & | & \mathsf{ref{.}array}~{\mathit{arrayaddr}} \\ & & | & \mathsf{ref{.}func}~{\mathit{funcaddr}} \\ & & | & \mathsf{ref{.}exn}~{\mathit{exnaddr}} \\ & & | & \mathsf{ref{.}host}~{\mathit{hostaddr}} \\ -& & | & \mathsf{ref{.}extern}~{\mathit{addrref}} \\ -\mbox{(reference value)} & {\mathit{ref}} & ::= & {\mathit{addrref}} \\ -& & | & \mathsf{ref{.}null}~{\mathit{heaptype}} \\ +& & | & \mathsf{ref{.}extern}~{\mathit{ref}} \\ \mbox{(value)} & {\mathit{val}} & ::= & {\mathit{num}} ~~|~~ {\mathit{vec}} ~~|~~ {\mathit{ref}} \\ \mbox{(result)} & {\mathit{result}} & ::= & {{\mathit{val}}^\ast} ~~|~~ ( \mathsf{ref{.}exn\_addr}~{\mathit{exnaddr}} )~\mathsf{throw\_ref} ~~|~~ \mathsf{trap} \\ \end{array} @@ -8985,7 +8984,7 @@ $$ $$ \begin{array}[t]{@{}lrrl@{}l@{}} \mbox{(instruction)} & {\mathit{instr}} & ::= & \dots \\ -& & | & {\mathit{addrref}} \\ +& & | & {\mathit{ref}} \\ & & | & {{\mathsf{label}}_{n}}{\{ {{\mathit{instr}}^\ast} \}}~{{\mathit{instr}}^\ast} \\ & & | & {{\mathsf{frame}}_{n}}{\{ {\mathit{frame}} \}}~{{\mathit{instr}}^\ast} \\ & & | & {{\mathsf{handler}}_{n}}{\{ {{\mathit{catch}}^\ast} \}}~{{\mathit{instr}}^\ast} \\ @@ -9327,7 +9326,7 @@ $$ {{\mathrm{default}}}_{{\mathsf{i}}{N}} & = & ({\mathsf{i}}{N}{.}\mathsf{const}~0) \\ {{\mathrm{default}}}_{{\mathsf{f}}{N}} & = & ({\mathsf{f}}{N}{.}\mathsf{const}~{+0}) \\ {{\mathrm{default}}}_{{\mathsf{v}}{N}} & = & ({\mathsf{v}}{N}{.}\mathsf{const}~0) \\ -{{\mathrm{default}}}_{\mathsf{ref}~\mathsf{null}~{\mathit{ht}}} & = & (\mathsf{ref{.}null}~{\mathit{ht}}) \\ +{{\mathrm{default}}}_{\mathsf{ref}~\mathsf{null}~{\mathit{ht}}} & = & \mathsf{ref{.}null} \\ {{\mathrm{default}}}_{\mathsf{ref}~{\mathit{ht}}} & = & \epsilon \\ \end{array} $$ @@ -9389,9 +9388,8 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -\{ \} \vdash {\mathit{ht}'} \leq {\mathit{ht}} }{ -s \vdash \mathsf{ref{.}null}~{\mathit{ht}} : (\mathsf{ref}~\mathsf{null}~{\mathit{ht}'}) +s \vdash \mathsf{ref{.}null} : (\mathsf{ref}~\mathsf{null}~\mathsf{bot}) } \, {[\textsc{\scriptsize Ref\_ok{-}null}]} \qquad \end{array} @@ -9464,9 +9462,11 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -s \vdash {\mathit{addrref}} : (\mathsf{ref}~\mathsf{any}) +s \vdash {\mathit{ref}} : (\mathsf{ref}~\mathsf{any}) + \qquad +{\mathit{ref}} \neq \mathsf{ref{.}null} }{ -s \vdash \mathsf{ref{.}extern}~{\mathit{addrref}} : (\mathsf{ref}~\mathsf{extern}) +s \vdash \mathsf{ref{.}extern}~{\mathit{ref}} : (\mathsf{ref}~\mathsf{extern}) } \, {[\textsc{\scriptsize Ref\_ok{-}extern}]} \qquad \end{array} @@ -9747,7 +9747,7 @@ $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize E{-}br\_on\_null{-}null}]} \quad & {\mathit{val}}~(\mathsf{br\_on\_null}~l) & \hookrightarrow & (\mathsf{br}~l) & \quad \mbox{if}~ {\mathit{val}} = \mathsf{ref{.}null}~{\mathit{ht}} \\ +{[\textsc{\scriptsize E{-}br\_on\_null{-}null}]} \quad & {\mathit{val}}~(\mathsf{br\_on\_null}~l) & \hookrightarrow & (\mathsf{br}~l) & \quad \mbox{if}~ {\mathit{val}} = \mathsf{ref{.}null} \\ {[\textsc{\scriptsize E{-}br\_on\_null{-}addr}]} \quad & {\mathit{val}}~(\mathsf{br\_on\_null}~l) & \hookrightarrow & {\mathit{val}} & \quad \mbox{otherwise} \\ \end{array} $$ @@ -9756,7 +9756,7 @@ $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize E{-}br\_on\_non\_null{-}null}]} \quad & {\mathit{val}}~(\mathsf{br\_on\_non\_null}~l) & \hookrightarrow & \epsilon & \quad \mbox{if}~ {\mathit{val}} = \mathsf{ref{.}null}~{\mathit{ht}} \\ +{[\textsc{\scriptsize E{-}br\_on\_non\_null{-}null}]} \quad & {\mathit{val}}~(\mathsf{br\_on\_non\_null}~l) & \hookrightarrow & \epsilon & \quad \mbox{if}~ {\mathit{val}} = \mathsf{ref{.}null} \\ {[\textsc{\scriptsize E{-}br\_on\_non\_null{-}addr}]} \quad & {\mathit{val}}~(\mathsf{br\_on\_non\_null}~l) & \hookrightarrow & {\mathit{val}}~(\mathsf{br}~l) & \quad \mbox{otherwise} \\ \end{array} $$ @@ -9792,7 +9792,7 @@ $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} {[\textsc{\scriptsize E{-}call}]} \quad & z ; (\mathsf{call}~x) & \hookrightarrow & (\mathsf{ref{.}func}~a)~(\mathsf{call\_ref}~z{.}\mathsf{funcs}{}[a]{.}\mathsf{type}) & \quad \mbox{if}~ z{.}\mathsf{module}{.}\mathsf{funcs}{}[x] = a \\ -{[\textsc{\scriptsize E{-}call\_ref{-}null}]} \quad & z ; (\mathsf{ref{.}null}~{\mathit{ht}})~(\mathsf{call\_ref}~y) & \hookrightarrow & \mathsf{trap} \\ +{[\textsc{\scriptsize E{-}call\_ref{-}null}]} \quad & z ; (\mathsf{ref{.}null})~(\mathsf{call\_ref}~y) & \hookrightarrow & \mathsf{trap} \\ {[\textsc{\scriptsize E{-}call\_ref{-}func}]} \quad & z ; {{\mathit{val}}^{n}}~(\mathsf{ref{.}func}~a)~(\mathsf{call\_ref}~y) & \hookrightarrow & ({{\mathsf{frame}}_{m}}{\{ f \}}~({{\mathsf{label}}_{m}}{\{ \epsilon \}}~{{\mathit{instr}}^\ast})) & \\ &&& \multicolumn{2}{@{}l@{}}{\quad \quad @@ -9820,7 +9820,7 @@ $$ \begin{array}[t]{@{}lrcl@{}l@{}} {[\textsc{\scriptsize E{-}return\_call\_ref{-}label}]} \quad & z ; ({{\mathsf{label}}_{k}}{\{ {{\mathit{instr}'}^\ast} \}}~{{\mathit{val}}^\ast}~(\mathsf{return\_call\_ref}~y)~{{\mathit{instr}}^\ast}) & \hookrightarrow & {{\mathit{val}}^\ast}~(\mathsf{return\_call\_ref}~y) \\ {[\textsc{\scriptsize E{-}return\_call\_ref{-}handler}]} \quad & z ; ({{\mathsf{handler}}_{k}}{\{ {{\mathit{catch}}^\ast} \}}~{{\mathit{val}}^\ast}~(\mathsf{return\_call\_ref}~y)~{{\mathit{instr}}^\ast}) & \hookrightarrow & {{\mathit{val}}^\ast}~(\mathsf{return\_call\_ref}~y) \\ -{[\textsc{\scriptsize E{-}return\_call\_ref{-}frame{-}null}]} \quad & z ; ({{\mathsf{frame}}_{k}}{\{ f \}}~{{\mathit{val}}^\ast}~(\mathsf{ref{.}null}~{\mathit{ht}})~(\mathsf{return\_call\_ref}~y)~{{\mathit{instr}}^\ast}) & \hookrightarrow & \mathsf{trap} \\ +{[\textsc{\scriptsize E{-}return\_call\_ref{-}frame{-}null}]} \quad & z ; ({{\mathsf{frame}}_{k}}{\{ f \}}~{{\mathit{val}}^\ast}~(\mathsf{ref{.}null})~(\mathsf{return\_call\_ref}~y)~{{\mathit{instr}}^\ast}) & \hookrightarrow & \mathsf{trap} \\ {[\textsc{\scriptsize E{-}return\_call\_ref{-}frame{-}addr}]} \quad & z ; ({{\mathsf{frame}}_{k}}{\{ f \}}~{{\mathit{val}'}^\ast}~{{\mathit{val}}^{n}}~(\mathsf{ref{.}func}~a)~(\mathsf{return\_call\_ref}~y)~{{\mathit{instr}}^\ast}) & \hookrightarrow & {{\mathit{val}}^{n}}~(\mathsf{ref{.}func}~a)~(\mathsf{call\_ref}~y) & \\ &&& \multicolumn{2}{@{}l@{}}{\quad \quad \mbox{if}~ z{.}\mathsf{funcs}{}[a]{.}\mathsf{type} \approx \mathsf{func}~{t_1^{n}} \rightarrow {t_2^{m}} @@ -9863,7 +9863,7 @@ $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize E{-}throw\_ref{-}null}]} \quad & z ; (\mathsf{ref{.}null}~{\mathit{ht}})~\mathsf{throw\_ref} & \hookrightarrow & \mathsf{trap} \\ +{[\textsc{\scriptsize E{-}throw\_ref{-}null}]} \quad & z ; (\mathsf{ref{.}null})~\mathsf{throw\_ref} & \hookrightarrow & \mathsf{trap} \\ {[\textsc{\scriptsize E{-}throw\_ref{-}instrs}]} \quad & z ; {{\mathit{val}}^\ast}~(\mathsf{ref{.}exn}~a)~\mathsf{throw\_ref}~{{\mathit{instr}}^\ast} & \hookrightarrow & (\mathsf{ref{.}exn}~a)~\mathsf{throw\_ref} & \\ &&& \multicolumn{2}{@{}l@{}}{\quad \quad \mbox{if}~ {{\mathit{val}}^\ast} \neq \epsilon \lor {{\mathit{instr}}^\ast} \neq \epsilon @@ -10303,7 +10303,7 @@ $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize E{-}ref.null{-}idx}]} \quad & z ; (\mathsf{ref{.}null}~x) & \hookrightarrow & (\mathsf{ref{.}null}~z{.}\mathsf{types}{}[x]) \\ +{[\textsc{\scriptsize E{-}ref.null}]} \quad & z ; (\mathsf{ref{.}null}~{\mathit{ht}}) & \hookrightarrow & \mathsf{ref{.}null} \\ {[\textsc{\scriptsize E{-}ref.func}]} \quad & z ; (\mathsf{ref{.}func}~x) & \hookrightarrow & (\mathsf{ref{.}func}~z{.}\mathsf{module}{.}\mathsf{funcs}{}[x]) \\ \end{array} $$ @@ -10318,7 +10318,7 @@ $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize E{-}ref.is\_null{-}true}]} \quad & {\mathit{ref}}~\mathsf{ref{.}is\_null} & \hookrightarrow & (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~1) & \quad \mbox{if}~ {\mathit{ref}} = (\mathsf{ref{.}null}~{\mathit{ht}}) \\ +{[\textsc{\scriptsize E{-}ref.is\_null{-}true}]} \quad & {\mathit{ref}}~\mathsf{ref{.}is\_null} & \hookrightarrow & (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~1) & \quad \mbox{if}~ {\mathit{ref}} = \mathsf{ref{.}null} \\ {[\textsc{\scriptsize E{-}ref.is\_null{-}false}]} \quad & {\mathit{ref}}~\mathsf{ref{.}is\_null} & \hookrightarrow & (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~0) & \quad \mbox{otherwise} \\ \end{array} $$ @@ -10327,7 +10327,7 @@ $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize E{-}ref.as\_non\_null{-}null}]} \quad & {\mathit{ref}}~\mathsf{ref{.}as\_non\_null} & \hookrightarrow & \mathsf{trap} & \quad \mbox{if}~ {\mathit{ref}} = (\mathsf{ref{.}null}~{\mathit{ht}}) \\ +{[\textsc{\scriptsize E{-}ref.as\_non\_null{-}null}]} \quad & {\mathit{ref}}~\mathsf{ref{.}as\_non\_null} & \hookrightarrow & \mathsf{trap} & \quad \mbox{if}~ {\mathit{ref}} = \mathsf{ref{.}null} \\ {[\textsc{\scriptsize E{-}ref.as\_non\_null{-}addr}]} \quad & {\mathit{ref}}~\mathsf{ref{.}as\_non\_null} & \hookrightarrow & {\mathit{ref}} & \quad \mbox{otherwise} \\ \end{array} $$ @@ -10336,7 +10336,7 @@ $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize E{-}ref.eq{-}null}]} \quad & {\mathit{ref}}_1~{\mathit{ref}}_2~\mathsf{ref{.}eq} & \hookrightarrow & (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~1) & \quad \mbox{if}~ {\mathit{ref}}_1 = (\mathsf{ref{.}null}~{\mathit{ht}}_1) \land {\mathit{ref}}_2 = (\mathsf{ref{.}null}~{\mathit{ht}}_2) \\ +{[\textsc{\scriptsize E{-}ref.eq{-}null}]} \quad & {\mathit{ref}}_1~{\mathit{ref}}_2~\mathsf{ref{.}eq} & \hookrightarrow & (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~1) & \quad \mbox{if}~ {\mathit{ref}}_1 = \mathsf{ref{.}null} \land {\mathit{ref}}_2 = \mathsf{ref{.}null} \\ {[\textsc{\scriptsize E{-}ref.eq{-}true}]} \quad & {\mathit{ref}}_1~{\mathit{ref}}_2~\mathsf{ref{.}eq} & \hookrightarrow & (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~1) & \quad \mbox{otherwise, if}~ {\mathit{ref}}_1 = {\mathit{ref}}_2 \\ {[\textsc{\scriptsize E{-}ref.eq{-}false}]} \quad & {\mathit{ref}}_1~{\mathit{ref}}_2~\mathsf{ref{.}eq} & \hookrightarrow & (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~0) & \quad \mbox{otherwise} \\ \end{array} @@ -10372,7 +10372,7 @@ $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize E{-}i31.get{-}null}]} \quad & (\mathsf{ref{.}null}~{\mathit{ht}})~({\mathsf{i{\scriptstyle 31}{.}get}}{\mathsf{\_}}{{\mathit{sx}}}) & \hookrightarrow & \mathsf{trap} \\ +{[\textsc{\scriptsize E{-}i31.get{-}null}]} \quad & (\mathsf{ref{.}null})~({\mathsf{i{\scriptstyle 31}{.}get}}{\mathsf{\_}}{{\mathit{sx}}}) & \hookrightarrow & \mathsf{trap} \\ {[\textsc{\scriptsize E{-}i31.get{-}num}]} \quad & (\mathsf{ref{.}i{\scriptstyle 31}}~i)~({\mathsf{i{\scriptstyle 31}{.}get}}{\mathsf{\_}}{{\mathit{sx}}}) & \hookrightarrow & (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~{{{{\mathrm{extend}}}_{31, 32}^{{\mathit{sx}}}}}{(i)}) \\ \end{array} $$ @@ -10404,7 +10404,7 @@ $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize E{-}struct.get{-}null}]} \quad & z ; (\mathsf{ref{.}null}~{\mathit{ht}})~({\mathsf{struct{.}get}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~x~i) & \hookrightarrow & \mathsf{trap} \\ +{[\textsc{\scriptsize E{-}struct.get{-}null}]} \quad & z ; (\mathsf{ref{.}null})~({\mathsf{struct{.}get}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~x~i) & \hookrightarrow & \mathsf{trap} \\ {[\textsc{\scriptsize E{-}struct.get{-}struct}]} \quad & z ; (\mathsf{ref{.}struct}~a)~({\mathsf{struct{.}get}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~x~i) & \hookrightarrow & {{{{\mathrm{unpack}}}_{{{\mathit{zt}}^\ast}{}[i]}^{{{\mathit{sx}}^?}}}}{(z{.}\mathsf{structs}{}[a]{.}\mathsf{fields}{}[i])} & \\ &&& \multicolumn{2}{@{}l@{}}{\quad \quad \mbox{if}~ z{.}\mathsf{types}{}[x] \approx \mathsf{struct}~{({\mathsf{mut}^?}~{\mathit{zt}})^\ast} @@ -10416,7 +10416,7 @@ $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize E{-}struct.set{-}null}]} \quad & z ; (\mathsf{ref{.}null}~{\mathit{ht}})~{\mathit{val}}~(\mathsf{struct{.}set}~x~i) & \hookrightarrow & z ; \mathsf{trap} \\ +{[\textsc{\scriptsize E{-}struct.set{-}null}]} \quad & z ; (\mathsf{ref{.}null})~{\mathit{val}}~(\mathsf{struct{.}set}~x~i) & \hookrightarrow & z ; \mathsf{trap} \\ {[\textsc{\scriptsize E{-}struct.set{-}struct}]} \quad & z ; (\mathsf{ref{.}struct}~a)~{\mathit{val}}~(\mathsf{struct{.}set}~x~i) & \hookrightarrow & z{}[{.}\mathsf{structs}{}[a]{.}\mathsf{fields}{}[i] = {{\mathrm{pack}}}_{{{\mathit{zt}}^\ast}{}[i]}({\mathit{val}})] ; \epsilon & \\ &&& \multicolumn{2}{@{}l@{}}{\quad \quad \mbox{if}~ z{.}\mathsf{types}{}[x] \approx \mathsf{struct}~{({\mathsf{mut}^?}~{\mathit{zt}})^\ast} @@ -10494,7 +10494,7 @@ $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize E{-}array.get{-}null}]} \quad & z ; (\mathsf{ref{.}null}~{\mathit{ht}})~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~({\mathsf{array{.}get}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~x) & \hookrightarrow & \mathsf{trap} \\ +{[\textsc{\scriptsize E{-}array.get{-}null}]} \quad & z ; (\mathsf{ref{.}null})~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~({\mathsf{array{.}get}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~x) & \hookrightarrow & \mathsf{trap} \\ {[\textsc{\scriptsize E{-}array.get{-}oob}]} \quad & z ; (\mathsf{ref{.}array}~a)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~({\mathsf{array{.}get}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~x) & \hookrightarrow & \mathsf{trap} & \quad \mbox{if}~ i \geq {|z{.}\mathsf{arrays}{}[a]{.}\mathsf{fields}|} \\ {[\textsc{\scriptsize E{-}array.get{-}array}]} \quad & z ; (\mathsf{ref{.}array}~a)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~({\mathsf{array{.}get}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~x) & \hookrightarrow & {{{{\mathrm{unpack}}}_{{\mathit{zt}}}^{{{\mathit{sx}}^?}}}}{(z{.}\mathsf{arrays}{}[a]{.}\mathsf{fields}{}[i])} & \\ &&& \multicolumn{2}{@{}l@{}}{\quad @@ -10507,7 +10507,7 @@ $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize E{-}array.set{-}null}]} \quad & z ; (\mathsf{ref{.}null}~{\mathit{ht}})~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{array{.}set}~x) & \hookrightarrow & z ; \mathsf{trap} \\ +{[\textsc{\scriptsize E{-}array.set{-}null}]} \quad & z ; (\mathsf{ref{.}null})~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{array{.}set}~x) & \hookrightarrow & z ; \mathsf{trap} \\ {[\textsc{\scriptsize E{-}array.set{-}oob}]} \quad & z ; (\mathsf{ref{.}array}~a)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{array{.}set}~x) & \hookrightarrow & z ; \mathsf{trap} & \quad \mbox{if}~ i \geq {|z{.}\mathsf{arrays}{}[a]{.}\mathsf{fields}|} \\ {[\textsc{\scriptsize E{-}array.set{-}array}]} \quad & z ; (\mathsf{ref{.}array}~a)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{array{.}set}~x) & \hookrightarrow & z{}[{.}\mathsf{arrays}{}[a]{.}\mathsf{fields}{}[i] = {{\mathrm{pack}}}_{{\mathit{zt}}}({\mathit{val}})] ; \epsilon & \\ &&& \multicolumn{2}{@{}l@{}}{\quad @@ -10520,7 +10520,7 @@ $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize E{-}array.len{-}null}]} \quad & z ; (\mathsf{ref{.}null}~{\mathit{ht}})~\mathsf{array{.}len} & \hookrightarrow & \mathsf{trap} \\ +{[\textsc{\scriptsize E{-}array.len{-}null}]} \quad & z ; (\mathsf{ref{.}null})~\mathsf{array{.}len} & \hookrightarrow & \mathsf{trap} \\ {[\textsc{\scriptsize E{-}array.len{-}array}]} \quad & z ; (\mathsf{ref{.}array}~a)~\mathsf{array{.}len} & \hookrightarrow & (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~{|z{.}\mathsf{arrays}{}[a]{.}\mathsf{fields}|}) \\ \end{array} $$ @@ -10529,7 +10529,7 @@ $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize E{-}array.fill{-}null}]} \quad & z ; (\mathsf{ref{.}null}~{\mathit{ht}})~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array{.}fill}~x) & \hookrightarrow & \mathsf{trap} \\ +{[\textsc{\scriptsize E{-}array.fill{-}null}]} \quad & z ; (\mathsf{ref{.}null})~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array{.}fill}~x) & \hookrightarrow & \mathsf{trap} \\ {[\textsc{\scriptsize E{-}array.fill{-}oob}]} \quad & z ; (\mathsf{ref{.}array}~a)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array{.}fill}~x) & \hookrightarrow & \mathsf{trap} & \quad \mbox{if}~ i + n > {|z{.}\mathsf{arrays}{}[a]{.}\mathsf{fields}|} \\ {[\textsc{\scriptsize E{-}array.fill{-}zero}]} \quad & z ; (\mathsf{ref{.}array}~a)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array{.}fill}~x) & \hookrightarrow & \epsilon & \quad \mbox{otherwise, if}~ n = 0 \\ {[\textsc{\scriptsize E{-}array.fill{-}succ}]} \quad & z ; (\mathsf{ref{.}array}~a)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array{.}fill}~x) & \hookrightarrow & & \\ @@ -10539,8 +10539,8 @@ $$ (\mathsf{ref{.}array}~a)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i + 1)~{\mathit{val}}~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n - 1)~(\mathsf{array{.}fill}~x) \end{array} & \quad \mbox{otherwise} \\ \end{array} } \\ -{[\textsc{\scriptsize E{-}array.copy{-}null1}]} \quad & z ; (\mathsf{ref{.}null}~{\mathit{ht}}_1)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_1)~{\mathit{ref}}~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_2)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array{.}copy}~x_1~x_2) & \hookrightarrow & \mathsf{trap} \\ -{[\textsc{\scriptsize E{-}array.copy{-}null2}]} \quad & z ; {\mathit{ref}}~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_1)~(\mathsf{ref{.}null}~{\mathit{ht}}_2)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_2)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array{.}copy}~x_1~x_2) & \hookrightarrow & \mathsf{trap} \\ +{[\textsc{\scriptsize E{-}array.copy{-}null1}]} \quad & z ; (\mathsf{ref{.}null})~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_1)~{\mathit{ref}}~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_2)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array{.}copy}~x_1~x_2) & \hookrightarrow & \mathsf{trap} \\ +{[\textsc{\scriptsize E{-}array.copy{-}null2}]} \quad & z ; {\mathit{ref}}~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_1)~(\mathsf{ref{.}null})~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_2)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array{.}copy}~x_1~x_2) & \hookrightarrow & \mathsf{trap} \\ {[\textsc{\scriptsize E{-}array.copy{-}oob1}]} \quad & z ; (\mathsf{ref{.}array}~a_1)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_1)~(\mathsf{ref{.}array}~a_2)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_2)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array{.}copy}~x_1~x_2) & \hookrightarrow & \mathsf{trap} & \\ & \multicolumn{4}{@{}l@{}}{\quad \quad \mbox{if}~ i_1 + n > {|z{.}\mathsf{arrays}{}[a_1]{.}\mathsf{fields}|} @@ -10596,7 +10596,7 @@ $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize E{-}array.init\_elem{-}null}]} \quad & z ; (\mathsf{ref{.}null}~{\mathit{ht}})~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array{.}init\_elem}~x~y) & \hookrightarrow & \mathsf{trap} \\ +{[\textsc{\scriptsize E{-}array.init\_elem{-}null}]} \quad & z ; (\mathsf{ref{.}null})~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array{.}init\_elem}~x~y) & \hookrightarrow & \mathsf{trap} \\ {[\textsc{\scriptsize E{-}array.init\_elem{-}oob1}]} \quad & z ; (\mathsf{ref{.}array}~a)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array{.}init\_elem}~x~y) & \hookrightarrow & \mathsf{trap} & \\ & \multicolumn{4}{@{}l@{}}{\quad \quad \mbox{if}~ i + n > {|z{.}\mathsf{arrays}{}[a]{.}\mathsf{fields}|} @@ -10628,7 +10628,7 @@ $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize E{-}array.init\_data{-}null}]} \quad & z ; (\mathsf{ref{.}null}~{\mathit{ht}})~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array{.}init\_data}~x~y) & \hookrightarrow & \mathsf{trap} \\ +{[\textsc{\scriptsize E{-}array.init\_data{-}null}]} \quad & z ; (\mathsf{ref{.}null})~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array{.}init\_data}~x~y) & \hookrightarrow & \mathsf{trap} \\ {[\textsc{\scriptsize E{-}array.init\_data{-}oob1}]} \quad & z ; (\mathsf{ref{.}array}~a)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array{.}init\_data}~x~y) & \hookrightarrow & \mathsf{trap} & \\ & \multicolumn{4}{@{}l@{}}{\quad \quad \mbox{if}~ i + n > {|z{.}\mathsf{arrays}{}[a]{.}\mathsf{fields}|} @@ -10668,8 +10668,8 @@ $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize E{-}extern.convert\_any{-}null}]} \quad & (\mathsf{ref{.}null}~{\mathit{ht}})~\mathsf{extern{.}convert\_any} & \hookrightarrow & (\mathsf{ref{.}null}~\mathsf{extern}) \\ -{[\textsc{\scriptsize E{-}extern.convert\_any{-}addr}]} \quad & {\mathit{addrref}}~\mathsf{extern{.}convert\_any} & \hookrightarrow & (\mathsf{ref{.}extern}~{\mathit{addrref}}) \\ +{[\textsc{\scriptsize E{-}extern.convert\_any{-}null}]} \quad & {\mathit{ref}}~\mathsf{extern{.}convert\_any} & \hookrightarrow & \mathsf{ref{.}null} & \quad \mbox{if}~ {\mathit{ref}} = \mathsf{ref{.}null} \\ +{[\textsc{\scriptsize E{-}extern.convert\_any{-}addr}]} \quad & {\mathit{ref}}~\mathsf{extern{.}convert\_any} & \hookrightarrow & (\mathsf{ref{.}extern}~{\mathit{ref}}) & \quad \mbox{otherwise} \\ \end{array} $$ @@ -10677,8 +10677,8 @@ $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize E{-}any.convert\_extern{-}null}]} \quad & (\mathsf{ref{.}null}~{\mathit{ht}})~\mathsf{any{.}convert\_extern} & \hookrightarrow & (\mathsf{ref{.}null}~\mathsf{any}) \\ -{[\textsc{\scriptsize E{-}any.convert\_extern{-}addr}]} \quad & (\mathsf{ref{.}extern}~{\mathit{addrref}})~\mathsf{any{.}convert\_extern} & \hookrightarrow & {\mathit{addrref}} \\ +{[\textsc{\scriptsize E{-}any.convert\_extern{-}null}]} \quad & (\mathsf{ref{.}null})~\mathsf{any{.}convert\_extern} & \hookrightarrow & \mathsf{ref{.}null} \\ +{[\textsc{\scriptsize E{-}any.convert\_extern{-}addr}]} \quad & (\mathsf{ref{.}extern}~{\mathit{ref}})~\mathsf{any{.}convert\_extern} & \hookrightarrow & {\mathit{ref}} \\ \end{array} $$ diff --git a/spectec/test-middlend/TEST.md b/spectec/test-middlend/TEST.md index 994343a02..261da39e2 100644 --- a/spectec/test-middlend/TEST.md +++ b/spectec/test-middlend/TEST.md @@ -1957,32 +1957,6 @@ syntax addr = nat ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax arrayaddr = addr -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec -syntax exnaddr = addr - -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec -syntax funcaddr = addr - -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec -syntax hostaddr = addr - -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec -syntax structaddr = addr - -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec -rec { - -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:35.1-42.23 -syntax addrref = - | `REF.I31_NUM`(u31 : u31) - | `REF.STRUCT_ADDR`(structaddr : structaddr) - | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) - | `REF.FUNC_ADDR`(funcaddr : funcaddr) - | `REF.EXN_ADDR`(exnaddr : exnaddr) - | `REF.HOST_ADDR`(hostaddr : hostaddr) - | `REF.EXTERN`(addrref : addrref) -} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax catch = | CATCH(tagidx : tagidx, labelidx : labelidx) @@ -1990,12 +1964,18 @@ syntax catch = | CATCH_ALL(labelidx : labelidx) | CATCH_ALL_REF(labelidx : labelidx) +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec +syntax exnaddr = addr + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax dataaddr = addr ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax elemaddr = addr +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec +syntax funcaddr = addr + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax globaladdr = addr @@ -2037,18 +2017,39 @@ syntax moduleinst = EXPORTS exportinst* } +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec +syntax hostaddr = addr + +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec +syntax structaddr = addr + +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:35.1-43.19 +syntax ref = + | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(ref : ref) +} + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax val = | CONST(numtype : numtype, num_(numtype)) | VCONST(vectype : vectype, vec_(vectype)) | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` | `REF.STRUCT_ADDR`(structaddr : structaddr) | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) | `REF.FUNC_ADDR`(funcaddr : funcaddr) | `REF.EXN_ADDR`(exnaddr : exnaddr) | `REF.HOST_ADDR`(hostaddr : hostaddr) - | `REF.EXTERN`(addrref : addrref) - | `REF.NULL`(heaptype : heaptype) + | `REF.EXTERN`(ref : ref) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax frame = @@ -2060,7 +2061,7 @@ syntax frame = ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:136.1-142.9 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:133.1-139.9 syntax instr = | NOP | UNREACHABLE @@ -2170,12 +2171,13 @@ syntax instr = -- if ((sx?{sx <- `sx?`} = ?()) <=> ($lanetype(shape) <- [I32_lanetype I64_lanetype F32_lanetype F64_lanetype])) | VREPLACE_LANE(shape : shape, laneidx : laneidx) | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` | `REF.STRUCT_ADDR`(structaddr : structaddr) | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) | `REF.FUNC_ADDR`(funcaddr : funcaddr) | `REF.EXN_ADDR`(exnaddr : exnaddr) | `REF.HOST_ADDR`(hostaddr : hostaddr) - | `REF.EXTERN`(addrref : addrref) + | `REF.EXTERN`(ref : ref) | `LABEL_%{%}%`(n : n, `instr*` : instr*, `instr*` : instr*) | `FRAME_%{%}%`(n : n, frame : frame, `instr*` : instr*) | `HANDLER_%{%}%`(n : n, `catch*` : catch*, `instr*` : instr*) @@ -3337,7 +3339,7 @@ def $default_(valtype : valtype) : val? ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec def $default_{Vnn : Vnn}((Vnn : Vnn <: valtype)) = ?(VCONST_val(Vnn, `%`_vec_(0))) ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec - def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(`REF.NULL`_val(ht)) + def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(`REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() @@ -5400,17 +5402,6 @@ syntax num = syntax vec = | VCONST(vectype : vectype, vec_(vectype)) -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec -syntax ref = - | `REF.I31_NUM`(u31 : u31) - | `REF.STRUCT_ADDR`(structaddr : structaddr) - | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) - | `REF.FUNC_ADDR`(funcaddr : funcaddr) - | `REF.EXN_ADDR`(exnaddr : exnaddr) - | `REF.HOST_ADDR`(hostaddr : hostaddr) - | `REF.EXTERN`(addrref : addrref) - | `REF.NULL`(heaptype : heaptype) - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax result = | _VALS(`val*` : val*) @@ -5483,13 +5474,13 @@ syntax fieldval = | CONST(numtype : numtype, num_(numtype)) | VCONST(vectype : vectype, vec_(vectype)) | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` | `REF.STRUCT_ADDR`(structaddr : structaddr) | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) | `REF.FUNC_ADDR`(funcaddr : funcaddr) | `REF.EXN_ADDR`(exnaddr : exnaddr) | `REF.HOST_ADDR`(hostaddr : hostaddr) - | `REF.EXTERN`(addrref : addrref) - | `REF.NULL`(heaptype : heaptype) + | `REF.EXTERN`(ref : ref) | PACK(packtype : packtype, iN($psizenn(packtype))) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec @@ -5558,13 +5549,13 @@ def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:193.1-193.86 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:190.1-190.86 def $tagsxa(externaddr*) : tagaddr* - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:199.1-199.23 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:196.1-196.23 def $tagsxa([]) = [] - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:200.1-200.42 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:197.1-197.42 def $tagsxa{a : addr, `xa*` : externaddr*}([TAG_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tagsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:201.1-201.57 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:198.1-198.57 def $tagsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $tagsxa(xa*{xa <- `xa*`}) -- otherwise } @@ -5572,13 +5563,13 @@ def $tagsxa(externaddr*) : tagaddr* ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:194.1-194.89 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:191.1-191.89 def $globalsxa(externaddr*) : globaladdr* - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:203.1-203.26 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:200.1-200.26 def $globalsxa([]) = [] - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:204.1-204.51 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:201.1-201.51 def $globalsxa{a : addr, `xa*` : externaddr*}([GLOBAL_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $globalsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:205.1-205.63 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:202.1-202.63 def $globalsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $globalsxa(xa*{xa <- `xa*`}) -- otherwise } @@ -5586,13 +5577,13 @@ def $globalsxa(externaddr*) : globaladdr* ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:195.1-195.86 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:192.1-192.86 def $memsxa(externaddr*) : memaddr* - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:207.1-207.23 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:204.1-204.23 def $memsxa([]) = [] - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:208.1-208.42 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:205.1-205.42 def $memsxa{a : addr, `xa*` : externaddr*}([MEM_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $memsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:209.1-209.57 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:206.1-206.57 def $memsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $memsxa(xa*{xa <- `xa*`}) -- otherwise } @@ -5600,13 +5591,13 @@ def $memsxa(externaddr*) : memaddr* ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:196.1-196.88 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:193.1-193.88 def $tablesxa(externaddr*) : tableaddr* - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:211.1-211.25 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:208.1-208.25 def $tablesxa([]) = [] - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:212.1-212.48 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:209.1-209.48 def $tablesxa{a : addr, `xa*` : externaddr*}([TABLE_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tablesxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:213.1-213.61 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:210.1-210.61 def $tablesxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $tablesxa(xa*{xa <- `xa*`}) -- otherwise } @@ -5614,13 +5605,13 @@ def $tablesxa(externaddr*) : tableaddr* ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:197.1-197.87 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:194.1-194.87 def $funcsxa(externaddr*) : funcaddr* - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:215.1-215.24 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:212.1-212.24 def $funcsxa([]) = [] - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:216.1-216.45 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:213.1-213.45 def $funcsxa{a : addr, `xa*` : externaddr*}([FUNC_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $funcsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:217.1-217.59 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:214.1-214.59 def $funcsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $funcsxa(xa*{xa <- `xa*`}) -- otherwise } @@ -5840,43 +5831,43 @@ rec { ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:25.1-25.60 relation Ref_ok: `%|-%:%`(store, ref, reftype) - ;; ../../../../specification/wasm-latest/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')) - -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:35.1-36.38 + rule null{s : store}: + `%|-%:%`(s, `REF.NULL_ADDR`_ref, REF_reftype(?(NULL_null), BOT_heaptype)) - ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:39.1-40.33 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:38.1-39.33 rule i31{s : store, i : u31}: `%|-%:%`(s, `REF.I31_NUM`_ref(i), REF_reftype(?(), I31_heaptype)) - ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:42.1-44.31 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:41.1-43.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-latest/4.1-execution.values.spectec:46.1-48.30 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:45.1-47.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-latest/4.1-execution.values.spectec:50.1-52.29 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:49.1-51.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-latest/4.1-execution.values.spectec:54.1-56.24 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:53.1-55.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-latest/4.1-execution.values.spectec:58.1-59.35 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:57.1-58.35 rule host{s : store, a : addr}: `%|-%:%`(s, `REF.HOST_ADDR`_ref(a), REF_reftype(?(), ANY_heaptype)) - ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:61.1-63.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-latest/4.1-execution.values.spectec:60.1-63.30 + rule extern{s : store, ref : ref}: + `%|-%:%`(s, `REF.EXTERN`_ref(ref), REF_reftype(?(), EXTERN_heaptype)) + -- Ref_ok: `%|-%:%`(s, ref, REF_reftype(?(), ANY_heaptype)) + -- if (ref =/= `REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:65.1-68.34 rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: @@ -6042,9 +6033,9 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if (i!`%`_num_.0 >= |l*{l <- `l*`}|) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec - rule `br_on_null-null`{val : val, l : labelidx, ht : heaptype}: + rule `br_on_null-null`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [BR_instr(l)]) - -- if (val = `REF.NULL`_val(ht)) + -- if (val = `REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_on_null-addr`{val : val, l : labelidx}: @@ -6052,9 +6043,9 @@ relation Step_pure: `%~>%`(instr*, instr*) -- otherwise ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec - rule `br_on_non_null-null`{val : val, l : labelidx, ht : heaptype}: + rule `br_on_non_null-null`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], []) - -- if (val = `REF.NULL`_val(ht)) + -- if (val = `REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_on_non_null-addr`{val : val, l : labelidx}: @@ -6115,9 +6106,9 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([CONST_instr(I32_numtype, i) `REF.I31`_instr], [`REF.I31_NUM`_instr($wrap__(32, 31, i))]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec - rule `ref.is_null-true`{ref : ref, ht : heaptype}: + rule `ref.is_null-true`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, `%`_num_(1))]) - -- if (ref = `REF.NULL`_ref(ht)) + -- if (ref = `REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.is_null-false`{ref : ref}: @@ -6125,9 +6116,9 @@ relation Step_pure: `%~>%`(instr*, instr*) -- otherwise ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec - rule `ref.as_non_null-null`{ref : ref, ht : heaptype}: + rule `ref.as_non_null-null`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr], [TRAP_instr]) - -- if (ref = `REF.NULL`_ref(ht)) + -- if (ref = `REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.as_non_null-addr`{ref : ref}: @@ -6135,9 +6126,9 @@ relation Step_pure: `%~>%`(instr*, instr*) -- otherwise ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec - rule `ref.eq-null`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: + rule `ref.eq-null`{ref_1 : ref, ref_2 : ref}: `%~>%`([(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))) + -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.eq-true`{ref_1 : ref, ref_2 : ref}: @@ -6151,8 +6142,8 @@ relation Step_pure: `%~>%`(instr*, instr*) -- otherwise ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec - rule `i31.get-null`{ht : heaptype, sx : sx}: - `%~>%`([`REF.NULL`_instr(ht) `I31.GET`_instr(sx)], [TRAP_instr]) + rule `i31.get-null`{sx : sx}: + `%~>%`([`REF.NULL_ADDR`_instr `I31.GET`_instr(sx)], [TRAP_instr]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `i31.get-num`{i : u31, sx : sx}: @@ -6163,20 +6154,22 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([(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-latest/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)]) + rule `extern.convert_any-null`{ref : ref}: + `%~>%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.NULL_ADDR`_instr]) + -- if (ref = `REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec - rule `extern.convert_any-addr`{addrref : addrref}: - `%~>%`([(addrref : addrref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.EXTERN`_instr(addrref)]) + rule `extern.convert_any-addr`{ref : ref}: + `%~>%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.EXTERN`_instr(ref)]) + -- otherwise ;; ../../../../specification/wasm-latest/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)]) + rule `any.convert_extern-null`: + `%~>%`([`REF.NULL_ADDR`_instr `ANY.CONVERT_EXTERN`_instr], [`REF.NULL_ADDR`_instr]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec - rule `any.convert_extern-addr`{addrref : addrref}: - `%~>%`([`REF.EXTERN`_instr(addrref) `ANY.CONVERT_EXTERN`_instr], [(addrref : addrref <: instr)]) + rule `any.convert_extern-addr`{ref : ref}: + `%~>%`([`REF.EXTERN`_instr(ref) `ANY.CONVERT_EXTERN`_instr], [(ref : ref <: instr)]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `unop-val`{nt : numtype, c_1 : num_(nt), unop : unop_(nt), c : num_(nt)}: @@ -6392,8 +6385,8 @@ relation Step_read: `%~>%`(config, instr*) -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_idx.0] = a) ;; ../../../../specification/wasm-latest/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]) + rule `call_ref-null`{z : state, yy : typeuse}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CALL_REF_instr(yy)]), [TRAP_instr]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `call_ref-func`{z : state, n : n, `val*` : val*, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: @@ -6417,8 +6410,8 @@ relation Step_read: `%~>%`(config, 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-latest/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]) + rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, n : n, `val*` : val*, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, m : m, `t_2*` : valtype*}: @@ -6426,8 +6419,8 @@ relation Step_read: `%~>%`(config, instr*) -- 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-latest/4.3-execution.instructions.spectec - rule `throw_ref-null`{z : state, ht : heaptype}: - `%~>%`(`%;%`_config(z, [`REF.NULL`_instr(ht) THROW_REF_instr]), [TRAP_instr]) + rule `throw_ref-null`{z : state}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr]), [TRAP_instr]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: @@ -6695,8 +6688,8 @@ relation Step_read: `%~>%`(config, instr*) -- otherwise ;; ../../../../specification/wasm-latest/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))]) + rule `ref.null`{z : state, ht : heaptype}: + `%~>%`(`%;%`_config(z, [`REF.NULL`_instr(ht)]), [`REF.NULL_ADDR`_instr]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.func`{z : state, x : idx}: @@ -6731,8 +6724,8 @@ relation Step_read: `%~>%`(config, instr*) -- (if ($default_($unpack(zt)) = ?(val)))*{val <- `val*`, zt <- `zt*`} ;; ../../../../specification/wasm-latest/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]) + rule `struct.get-null`{z : state, `sx?` : sx?, x : idx, i : u32}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: @@ -6768,8 +6761,8 @@ relation Step_read: `%~>%`(config, instr*) -- 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-latest/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]) + rule `array.get-null`{z : state, i : num_(I32_numtype), `sx?` : sx?, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.get-oob`{z : state, a : addr, i : num_(I32_numtype), `sx?` : sx?, x : idx}: @@ -6782,16 +6775,16 @@ relation Step_read: `%~>%`(config, instr*) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec - rule `array.len-null`{z : state, ht : heaptype}: - `%~>%`(`%;%`_config(z, [`REF.NULL`_instr(ht) `ARRAY.LEN`_instr]), [TRAP_instr]) + rule `array.len-null`{z : state}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr]), [TRAP_instr]) ;; ../../../../specification/wasm-latest/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-latest/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]) + rule `array.fill-null`{z : state, i : num_(I32_numtype), val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n)) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.fill-oob`{z : state, a : addr, i : num_(I32_numtype), val : val, n : n, x : idx}: @@ -6810,12 +6803,12 @@ relation Step_read: `%~>%`(config, instr*) -- otherwise ;; ../../../../specification/wasm-latest/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]) + rule `array.copy-null1`{z : state, i_1 : num_(I32_numtype), ref : ref, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr 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-latest/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]) + rule `array.copy-null2`{z : state, ref : ref, i_1 : num_(I32_numtype), 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_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n)) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) ;; ../../../../specification/wasm-latest/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}: @@ -6848,8 +6841,8 @@ relation Step_read: `%~>%`(config, instr*) -- if (sx?{sx <- `sx?`} = $sx(zt_2)) ;; ../../../../specification/wasm-latest/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]) + rule `array.init_elem-null`{z : state, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr 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-latest/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}: @@ -6874,8 +6867,8 @@ relation Step_read: `%~>%`(config, instr*) -- if (ref = $elem(z, y).REFS_eleminst[j!`%`_num_.0]) ;; ../../../../specification/wasm-latest/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]) + rule `array.init_data-null`{z : state, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr 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-latest/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}: @@ -7037,9 +7030,9 @@ relation Step: `%~>%`(config, config) -- if (a = |$structinst(z)|) -- if (si = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:721.1-722.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-latest/4.3-execution.instructions.spectec:721.1-722.55 + rule `struct.set-null`{z : state, val : val, x : idx, i : u32}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr (val : val <: instr) `STRUCT.SET`_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:724.1-727.46 rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: @@ -7052,9 +7045,9 @@ relation Step: `%~>%`(config, config) -- 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-latest/4.3-execution.instructions.spectec:785.1-786.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-latest/4.3-execution.instructions.spectec:785.1-786.66 + rule `array.set-null`{z : state, i : num_(I32_numtype), val : val, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:788.1-790.39 rule `array.set-oob`{z : state, a : addr, i : num_(I32_numtype), val : val, x : idx}: @@ -13376,32 +13369,6 @@ syntax addr = nat ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax arrayaddr = addr -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec -syntax exnaddr = addr - -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec -syntax funcaddr = addr - -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec -syntax hostaddr = addr - -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec -syntax structaddr = addr - -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec -rec { - -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:35.1-42.23 -syntax addrref = - | `REF.I31_NUM`(u31 : u31) - | `REF.STRUCT_ADDR`(structaddr : structaddr) - | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) - | `REF.FUNC_ADDR`(funcaddr : funcaddr) - | `REF.EXN_ADDR`(exnaddr : exnaddr) - | `REF.HOST_ADDR`(hostaddr : hostaddr) - | `REF.EXTERN`(addrref : addrref) -} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax catch = | CATCH(tagidx : tagidx, labelidx : labelidx) @@ -13409,12 +13376,18 @@ syntax catch = | CATCH_ALL(labelidx : labelidx) | CATCH_ALL_REF(labelidx : labelidx) +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec +syntax exnaddr = addr + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax dataaddr = addr ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax elemaddr = addr +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec +syntax funcaddr = addr + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax globaladdr = addr @@ -13456,18 +13429,39 @@ syntax moduleinst = EXPORTS exportinst* } +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec +syntax hostaddr = addr + +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec +syntax structaddr = addr + +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:35.1-43.19 +syntax ref = + | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(ref : ref) +} + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax val = | CONST(numtype : numtype, num_(numtype)) | VCONST(vectype : vectype, vec_(vectype)) | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` | `REF.STRUCT_ADDR`(structaddr : structaddr) | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) | `REF.FUNC_ADDR`(funcaddr : funcaddr) | `REF.EXN_ADDR`(exnaddr : exnaddr) | `REF.HOST_ADDR`(hostaddr : hostaddr) - | `REF.EXTERN`(addrref : addrref) - | `REF.NULL`(heaptype : heaptype) + | `REF.EXTERN`(ref : ref) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax frame = @@ -13479,7 +13473,7 @@ syntax frame = ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:136.1-142.9 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:133.1-139.9 syntax instr = | NOP | UNREACHABLE @@ -13589,12 +13583,13 @@ syntax instr = -- if ((sx?{sx <- `sx?`} = ?()) <=> ($lanetype(shape) <- [I32_lanetype I64_lanetype F32_lanetype F64_lanetype])) | VREPLACE_LANE(shape : shape, laneidx : laneidx) | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` | `REF.STRUCT_ADDR`(structaddr : structaddr) | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) | `REF.FUNC_ADDR`(funcaddr : funcaddr) | `REF.EXN_ADDR`(exnaddr : exnaddr) | `REF.HOST_ADDR`(hostaddr : hostaddr) - | `REF.EXTERN`(addrref : addrref) + | `REF.EXTERN`(ref : ref) | `LABEL_%{%}%`(n : n, `instr*` : instr*, `instr*` : instr*) | `FRAME_%{%}%`(n : n, frame : frame, `instr*` : instr*) | `HANDLER_%{%}%`(n : n, `catch*` : catch*, `instr*` : instr*) @@ -14756,7 +14751,7 @@ def $default_(valtype : valtype) : val? ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec def $default_{Vnn : Vnn}((Vnn : Vnn <: valtype)) = ?(VCONST_val(Vnn, `%`_vec_(0))) ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec - def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(`REF.NULL`_val(ht)) + def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(`REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() @@ -16819,17 +16814,6 @@ syntax num = syntax vec = | VCONST(vectype : vectype, vec_(vectype)) -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec -syntax ref = - | `REF.I31_NUM`(u31 : u31) - | `REF.STRUCT_ADDR`(structaddr : structaddr) - | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) - | `REF.FUNC_ADDR`(funcaddr : funcaddr) - | `REF.EXN_ADDR`(exnaddr : exnaddr) - | `REF.HOST_ADDR`(hostaddr : hostaddr) - | `REF.EXTERN`(addrref : addrref) - | `REF.NULL`(heaptype : heaptype) - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax result = | _VALS(`val*` : val*) @@ -16902,13 +16886,13 @@ syntax fieldval = | CONST(numtype : numtype, num_(numtype)) | VCONST(vectype : vectype, vec_(vectype)) | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` | `REF.STRUCT_ADDR`(structaddr : structaddr) | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) | `REF.FUNC_ADDR`(funcaddr : funcaddr) | `REF.EXN_ADDR`(exnaddr : exnaddr) | `REF.HOST_ADDR`(hostaddr : hostaddr) - | `REF.EXTERN`(addrref : addrref) - | `REF.NULL`(heaptype : heaptype) + | `REF.EXTERN`(ref : ref) | PACK(packtype : packtype, iN($psizenn(packtype))) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec @@ -16977,13 +16961,13 @@ def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:193.1-193.86 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:190.1-190.86 def $tagsxa(externaddr*) : tagaddr* - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:199.1-199.23 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:196.1-196.23 def $tagsxa([]) = [] - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:200.1-200.42 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:197.1-197.42 def $tagsxa{a : addr, `xa*` : externaddr*}([TAG_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tagsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:201.1-201.57 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:198.1-198.57 def $tagsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $tagsxa(xa*{xa <- `xa*`}) -- otherwise } @@ -16991,13 +16975,13 @@ def $tagsxa(externaddr*) : tagaddr* ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:194.1-194.89 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:191.1-191.89 def $globalsxa(externaddr*) : globaladdr* - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:203.1-203.26 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:200.1-200.26 def $globalsxa([]) = [] - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:204.1-204.51 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:201.1-201.51 def $globalsxa{a : addr, `xa*` : externaddr*}([GLOBAL_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $globalsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:205.1-205.63 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:202.1-202.63 def $globalsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $globalsxa(xa*{xa <- `xa*`}) -- otherwise } @@ -17005,13 +16989,13 @@ def $globalsxa(externaddr*) : globaladdr* ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:195.1-195.86 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:192.1-192.86 def $memsxa(externaddr*) : memaddr* - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:207.1-207.23 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:204.1-204.23 def $memsxa([]) = [] - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:208.1-208.42 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:205.1-205.42 def $memsxa{a : addr, `xa*` : externaddr*}([MEM_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $memsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:209.1-209.57 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:206.1-206.57 def $memsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $memsxa(xa*{xa <- `xa*`}) -- otherwise } @@ -17019,13 +17003,13 @@ def $memsxa(externaddr*) : memaddr* ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:196.1-196.88 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:193.1-193.88 def $tablesxa(externaddr*) : tableaddr* - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:211.1-211.25 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:208.1-208.25 def $tablesxa([]) = [] - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:212.1-212.48 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:209.1-209.48 def $tablesxa{a : addr, `xa*` : externaddr*}([TABLE_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tablesxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:213.1-213.61 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:210.1-210.61 def $tablesxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $tablesxa(xa*{xa <- `xa*`}) -- otherwise } @@ -17033,13 +17017,13 @@ def $tablesxa(externaddr*) : tableaddr* ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:197.1-197.87 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:194.1-194.87 def $funcsxa(externaddr*) : funcaddr* - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:215.1-215.24 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:212.1-212.24 def $funcsxa([]) = [] - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:216.1-216.45 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:213.1-213.45 def $funcsxa{a : addr, `xa*` : externaddr*}([FUNC_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $funcsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:217.1-217.59 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:214.1-214.59 def $funcsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $funcsxa(xa*{xa <- `xa*`}) -- otherwise } @@ -17261,43 +17245,43 @@ rec { ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:25.1-25.60 relation Ref_ok: `%|-%:%`(store, ref, reftype) - ;; ../../../../specification/wasm-latest/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')) - -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:35.1-36.38 + rule null{s : store}: + `%|-%:%`(s, `REF.NULL_ADDR`_ref, REF_reftype(?(NULL_null), BOT_heaptype)) - ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:39.1-40.33 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:38.1-39.33 rule i31{s : store, i : u31}: `%|-%:%`(s, `REF.I31_NUM`_ref(i), REF_reftype(?(), I31_heaptype)) - ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:42.1-44.31 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:41.1-43.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-latest/4.1-execution.values.spectec:46.1-48.30 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:45.1-47.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-latest/4.1-execution.values.spectec:50.1-52.29 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:49.1-51.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-latest/4.1-execution.values.spectec:54.1-56.24 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:53.1-55.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-latest/4.1-execution.values.spectec:58.1-59.35 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:57.1-58.35 rule host{s : store, a : addr}: `%|-%:%`(s, `REF.HOST_ADDR`_ref(a), REF_reftype(?(), ANY_heaptype)) - ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:61.1-63.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-latest/4.1-execution.values.spectec:60.1-63.30 + rule extern{s : store, ref : ref}: + `%|-%:%`(s, `REF.EXTERN`_ref(ref), REF_reftype(?(), EXTERN_heaptype)) + -- Ref_ok: `%|-%:%`(s, ref, REF_reftype(?(), ANY_heaptype)) + -- if (ref =/= `REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:65.1-68.34 rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: @@ -17463,9 +17447,9 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if (i!`%`_num_.0 >= |l*{l <- `l*`}|) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec - rule `br_on_null-null`{val : val, l : labelidx, ht : heaptype}: + rule `br_on_null-null`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [BR_instr(l)]) - -- if (val = `REF.NULL`_val(ht)) + -- if (val = `REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_on_null-addr`{val : val, l : labelidx}: @@ -17473,9 +17457,9 @@ relation Step_pure: `%~>%`(instr*, instr*) -- otherwise ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec - rule `br_on_non_null-null`{val : val, l : labelidx, ht : heaptype}: + rule `br_on_non_null-null`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], []) - -- if (val = `REF.NULL`_val(ht)) + -- if (val = `REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_on_non_null-addr`{val : val, l : labelidx}: @@ -17536,9 +17520,9 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([CONST_instr(I32_numtype, i) `REF.I31`_instr], [`REF.I31_NUM`_instr($wrap__(32, 31, i))]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec - rule `ref.is_null-true`{ref : ref, ht : heaptype}: + rule `ref.is_null-true`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, `%`_num_(1))]) - -- if (ref = `REF.NULL`_ref(ht)) + -- if (ref = `REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.is_null-false`{ref : ref}: @@ -17546,9 +17530,9 @@ relation Step_pure: `%~>%`(instr*, instr*) -- otherwise ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec - rule `ref.as_non_null-null`{ref : ref, ht : heaptype}: + rule `ref.as_non_null-null`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr], [TRAP_instr]) - -- if (ref = `REF.NULL`_ref(ht)) + -- if (ref = `REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.as_non_null-addr`{ref : ref}: @@ -17556,9 +17540,9 @@ relation Step_pure: `%~>%`(instr*, instr*) -- otherwise ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec - rule `ref.eq-null`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: + rule `ref.eq-null`{ref_1 : ref, ref_2 : ref}: `%~>%`([(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))) + -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.eq-true`{ref_1 : ref, ref_2 : ref}: @@ -17572,8 +17556,8 @@ relation Step_pure: `%~>%`(instr*, instr*) -- otherwise ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec - rule `i31.get-null`{ht : heaptype, sx : sx}: - `%~>%`([`REF.NULL`_instr(ht) `I31.GET`_instr(sx)], [TRAP_instr]) + rule `i31.get-null`{sx : sx}: + `%~>%`([`REF.NULL_ADDR`_instr `I31.GET`_instr(sx)], [TRAP_instr]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `i31.get-num`{i : u31, sx : sx}: @@ -17584,20 +17568,22 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([(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-latest/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)]) + rule `extern.convert_any-null`{ref : ref}: + `%~>%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.NULL_ADDR`_instr]) + -- if (ref = `REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec - rule `extern.convert_any-addr`{addrref : addrref}: - `%~>%`([(addrref : addrref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.EXTERN`_instr(addrref)]) + rule `extern.convert_any-addr`{ref : ref}: + `%~>%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.EXTERN`_instr(ref)]) + -- otherwise ;; ../../../../specification/wasm-latest/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)]) + rule `any.convert_extern-null`: + `%~>%`([`REF.NULL_ADDR`_instr `ANY.CONVERT_EXTERN`_instr], [`REF.NULL_ADDR`_instr]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec - rule `any.convert_extern-addr`{addrref : addrref}: - `%~>%`([`REF.EXTERN`_instr(addrref) `ANY.CONVERT_EXTERN`_instr], [(addrref : addrref <: instr)]) + rule `any.convert_extern-addr`{ref : ref}: + `%~>%`([`REF.EXTERN`_instr(ref) `ANY.CONVERT_EXTERN`_instr], [(ref : ref <: instr)]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `unop-val`{nt : numtype, c_1 : num_(nt), unop : unop_(nt), c : num_(nt)}: @@ -17813,8 +17799,8 @@ relation Step_read: `%~>%`(config, instr*) -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_idx.0] = a) ;; ../../../../specification/wasm-latest/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]) + rule `call_ref-null`{z : state, yy : typeuse}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CALL_REF_instr(yy)]), [TRAP_instr]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `call_ref-func`{z : state, n : n, `val*` : val*, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: @@ -17838,8 +17824,8 @@ relation Step_read: `%~>%`(config, 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-latest/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]) + rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, n : n, `val*` : val*, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, m : m, `t_2*` : valtype*}: @@ -17847,8 +17833,8 @@ relation Step_read: `%~>%`(config, instr*) -- 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-latest/4.3-execution.instructions.spectec - rule `throw_ref-null`{z : state, ht : heaptype}: - `%~>%`(`%;%`_config(z, [`REF.NULL`_instr(ht) THROW_REF_instr]), [TRAP_instr]) + rule `throw_ref-null`{z : state}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr]), [TRAP_instr]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: @@ -18116,8 +18102,8 @@ relation Step_read: `%~>%`(config, instr*) -- otherwise ;; ../../../../specification/wasm-latest/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))]) + rule `ref.null`{z : state, ht : heaptype}: + `%~>%`(`%;%`_config(z, [`REF.NULL`_instr(ht)]), [`REF.NULL_ADDR`_instr]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.func`{z : state, x : idx}: @@ -18152,8 +18138,8 @@ relation Step_read: `%~>%`(config, instr*) -- (if ($default_($unpack(zt)) = ?(val)))*{val <- `val*`, zt <- `zt*`} ;; ../../../../specification/wasm-latest/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]) + rule `struct.get-null`{z : state, `sx?` : sx?, x : idx, i : u32}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: @@ -18189,8 +18175,8 @@ relation Step_read: `%~>%`(config, instr*) -- 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-latest/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]) + rule `array.get-null`{z : state, i : num_(I32_numtype), `sx?` : sx?, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.get-oob`{z : state, a : addr, i : num_(I32_numtype), `sx?` : sx?, x : idx}: @@ -18203,16 +18189,16 @@ relation Step_read: `%~>%`(config, instr*) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec - rule `array.len-null`{z : state, ht : heaptype}: - `%~>%`(`%;%`_config(z, [`REF.NULL`_instr(ht) `ARRAY.LEN`_instr]), [TRAP_instr]) + rule `array.len-null`{z : state}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr]), [TRAP_instr]) ;; ../../../../specification/wasm-latest/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-latest/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]) + rule `array.fill-null`{z : state, i : num_(I32_numtype), val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n)) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.fill-oob`{z : state, a : addr, i : num_(I32_numtype), val : val, n : n, x : idx}: @@ -18231,12 +18217,12 @@ relation Step_read: `%~>%`(config, instr*) -- otherwise ;; ../../../../specification/wasm-latest/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]) + rule `array.copy-null1`{z : state, i_1 : num_(I32_numtype), ref : ref, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr 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-latest/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]) + rule `array.copy-null2`{z : state, ref : ref, i_1 : num_(I32_numtype), 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_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n)) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) ;; ../../../../specification/wasm-latest/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}: @@ -18269,8 +18255,8 @@ relation Step_read: `%~>%`(config, instr*) -- if (sx?{sx <- `sx?`} = $sx(zt_2)) ;; ../../../../specification/wasm-latest/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]) + rule `array.init_elem-null`{z : state, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr 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-latest/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}: @@ -18295,8 +18281,8 @@ relation Step_read: `%~>%`(config, instr*) -- if (ref = $elem(z, y).REFS_eleminst[j!`%`_num_.0]) ;; ../../../../specification/wasm-latest/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]) + rule `array.init_data-null`{z : state, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr 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-latest/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}: @@ -18458,9 +18444,9 @@ relation Step: `%~>%`(config, config) -- if (a = |$structinst(z)|) -- if (si = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:721.1-722.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-latest/4.3-execution.instructions.spectec:721.1-722.55 + rule `struct.set-null`{z : state, val : val, x : idx, i : u32}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr (val : val <: instr) `STRUCT.SET`_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:724.1-727.46 rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: @@ -18473,9 +18459,9 @@ relation Step: `%~>%`(config, config) -- 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-latest/4.3-execution.instructions.spectec:785.1-786.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-latest/4.3-execution.instructions.spectec:785.1-786.66 + rule `array.set-null`{z : state, i : num_(I32_numtype), val : val, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:788.1-790.39 rule `array.set-oob`{z : state, a : addr, i : num_(I32_numtype), val : val, x : idx}: @@ -24797,32 +24783,6 @@ syntax addr = nat ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax arrayaddr = addr -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec -syntax exnaddr = addr - -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec -syntax funcaddr = addr - -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec -syntax hostaddr = addr - -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec -syntax structaddr = addr - -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec -rec { - -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:35.1-42.23 -syntax addrref = - | `REF.I31_NUM`(u31 : u31) - | `REF.STRUCT_ADDR`(structaddr : structaddr) - | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) - | `REF.FUNC_ADDR`(funcaddr : funcaddr) - | `REF.EXN_ADDR`(exnaddr : exnaddr) - | `REF.HOST_ADDR`(hostaddr : hostaddr) - | `REF.EXTERN`(addrref : addrref) -} - ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax catch = | CATCH(tagidx : tagidx, labelidx : labelidx) @@ -24830,12 +24790,18 @@ syntax catch = | CATCH_ALL(labelidx : labelidx) | CATCH_ALL_REF(labelidx : labelidx) +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec +syntax exnaddr = addr + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax dataaddr = addr ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax elemaddr = addr +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec +syntax funcaddr = addr + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax globaladdr = addr @@ -24877,18 +24843,39 @@ syntax moduleinst = EXPORTS exportinst* } +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec +syntax hostaddr = addr + +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec +syntax structaddr = addr + +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:35.1-43.19 +syntax ref = + | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr : structaddr) + | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) + | `REF.FUNC_ADDR`(funcaddr : funcaddr) + | `REF.EXN_ADDR`(exnaddr : exnaddr) + | `REF.HOST_ADDR`(hostaddr : hostaddr) + | `REF.EXTERN`(ref : ref) +} + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax val = | CONST(numtype : numtype, num_(numtype)) | VCONST(vectype : vectype, vec_(vectype)) | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` | `REF.STRUCT_ADDR`(structaddr : structaddr) | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) | `REF.FUNC_ADDR`(funcaddr : funcaddr) | `REF.EXN_ADDR`(exnaddr : exnaddr) | `REF.HOST_ADDR`(hostaddr : hostaddr) - | `REF.EXTERN`(addrref : addrref) - | `REF.NULL`(heaptype : heaptype) + | `REF.EXTERN`(ref : ref) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax frame = @@ -24900,7 +24887,7 @@ syntax frame = ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:136.1-142.9 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:133.1-139.9 syntax instr = | NOP | UNREACHABLE @@ -25010,12 +24997,13 @@ syntax instr = -- if ((sx?{sx <- `sx?`} = ?()) <=> ($lanetype(shape) <- [I32_lanetype I64_lanetype F32_lanetype F64_lanetype])) | VREPLACE_LANE(shape : shape, laneidx : laneidx) | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` | `REF.STRUCT_ADDR`(structaddr : structaddr) | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) | `REF.FUNC_ADDR`(funcaddr : funcaddr) | `REF.EXN_ADDR`(exnaddr : exnaddr) | `REF.HOST_ADDR`(hostaddr : hostaddr) - | `REF.EXTERN`(addrref : addrref) + | `REF.EXTERN`(ref : ref) | `LABEL_%{%}%`(n : n, `instr*` : instr*, `instr*` : instr*) | `FRAME_%{%}%`(n : n, frame : frame, `instr*` : instr*) | `HANDLER_%{%}%`(n : n, `catch*` : catch*, `instr*` : instr*) @@ -26203,7 +26191,7 @@ def $default_(valtype : valtype) : val? ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec def $default_{Vnn : Vnn}((Vnn : Vnn <: valtype)) = ?(VCONST_val(Vnn, `%`_vec_(0))) ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec - def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(`REF.NULL`_val(ht)) + def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(`REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() @@ -28364,17 +28352,6 @@ syntax num = syntax vec = | VCONST(vectype : vectype, vec_(vectype)) -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec -syntax ref = - | `REF.I31_NUM`(u31 : u31) - | `REF.STRUCT_ADDR`(structaddr : structaddr) - | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) - | `REF.FUNC_ADDR`(funcaddr : funcaddr) - | `REF.EXN_ADDR`(exnaddr : exnaddr) - | `REF.HOST_ADDR`(hostaddr : hostaddr) - | `REF.EXTERN`(addrref : addrref) - | `REF.NULL`(heaptype : heaptype) - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax result = | _VALS(`val*` : val*) @@ -28447,13 +28424,13 @@ syntax fieldval = | CONST(numtype : numtype, num_(numtype)) | VCONST(vectype : vectype, vec_(vectype)) | `REF.I31_NUM`(u31 : u31) + | `REF.NULL_ADDR` | `REF.STRUCT_ADDR`(structaddr : structaddr) | `REF.ARRAY_ADDR`(arrayaddr : arrayaddr) | `REF.FUNC_ADDR`(funcaddr : funcaddr) | `REF.EXN_ADDR`(exnaddr : exnaddr) | `REF.HOST_ADDR`(hostaddr : hostaddr) - | `REF.EXTERN`(addrref : addrref) - | `REF.NULL`(heaptype : heaptype) + | `REF.EXTERN`(ref : ref) | PACK(packtype : packtype, iN($psizenn(packtype))) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec @@ -28522,13 +28499,13 @@ def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:193.1-193.86 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:190.1-190.86 def $tagsxa(externaddr*) : tagaddr* - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:199.1-199.23 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:196.1-196.23 def $tagsxa([]) = [] - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:200.1-200.42 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:197.1-197.42 def $tagsxa{a : addr, `xa*` : externaddr*}([TAG_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tagsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:201.1-201.57 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:198.1-198.57 def $tagsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $tagsxa(xa*{xa <- `xa*`}) -- otherwise } @@ -28536,13 +28513,13 @@ def $tagsxa(externaddr*) : tagaddr* ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:194.1-194.89 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:191.1-191.89 def $globalsxa(externaddr*) : globaladdr* - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:203.1-203.26 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:200.1-200.26 def $globalsxa([]) = [] - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:204.1-204.51 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:201.1-201.51 def $globalsxa{a : addr, `xa*` : externaddr*}([GLOBAL_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $globalsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:205.1-205.63 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:202.1-202.63 def $globalsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $globalsxa(xa*{xa <- `xa*`}) -- otherwise } @@ -28550,13 +28527,13 @@ def $globalsxa(externaddr*) : globaladdr* ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:195.1-195.86 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:192.1-192.86 def $memsxa(externaddr*) : memaddr* - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:207.1-207.23 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:204.1-204.23 def $memsxa([]) = [] - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:208.1-208.42 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:205.1-205.42 def $memsxa{a : addr, `xa*` : externaddr*}([MEM_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $memsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:209.1-209.57 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:206.1-206.57 def $memsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $memsxa(xa*{xa <- `xa*`}) -- otherwise } @@ -28564,13 +28541,13 @@ def $memsxa(externaddr*) : memaddr* ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:196.1-196.88 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:193.1-193.88 def $tablesxa(externaddr*) : tableaddr* - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:211.1-211.25 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:208.1-208.25 def $tablesxa([]) = [] - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:212.1-212.48 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:209.1-209.48 def $tablesxa{a : addr, `xa*` : externaddr*}([TABLE_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tablesxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:213.1-213.61 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:210.1-210.61 def $tablesxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $tablesxa(xa*{xa <- `xa*`}) -- otherwise } @@ -28578,13 +28555,13 @@ def $tablesxa(externaddr*) : tableaddr* ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:197.1-197.87 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:194.1-194.87 def $funcsxa(externaddr*) : funcaddr* - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:215.1-215.24 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:212.1-212.24 def $funcsxa([]) = [] - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:216.1-216.45 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:213.1-213.45 def $funcsxa{a : addr, `xa*` : externaddr*}([FUNC_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $funcsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:217.1-217.59 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:214.1-214.59 def $funcsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $funcsxa(xa*{xa <- `xa*`}) -- otherwise } @@ -28806,47 +28783,47 @@ rec { ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:25.1-25.60 relation Ref_ok: `%|-%:%`(store, ref, reftype) - ;; ../../../../specification/wasm-latest/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')) - -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:35.1-36.38 + rule null{s : store}: + `%|-%:%`(s, `REF.NULL_ADDR`_ref, REF_reftype(?(NULL_null), BOT_heaptype)) - ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:39.1-40.33 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:38.1-39.33 rule i31{s : store, i : u31}: `%|-%:%`(s, `REF.I31_NUM`_ref(i), REF_reftype(?(), I31_heaptype)) - ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:42.1-44.31 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:41.1-43.31 rule struct{s : store, a : addr, dt : deftype}: `%|-%:%`(s, `REF.STRUCT_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (a < |s.STRUCTS_store|) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) - ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:46.1-48.30 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:45.1-47.30 rule array{s : store, a : addr, dt : deftype}: `%|-%:%`(s, `REF.ARRAY_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (a < |s.ARRAYS_store|) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) - ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:50.1-52.29 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:49.1-51.29 rule func{s : store, a : addr, dt : deftype}: `%|-%:%`(s, `REF.FUNC_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) - ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:54.1-56.24 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:53.1-55.24 rule exn{s : store, a : addr, exn : exninst}: `%|-%:%`(s, `REF.EXN_ADDR`_ref(a), REF_reftype(?(), EXN_heaptype)) -- if (a < |s.EXNS_store|) -- if (s.EXNS_store[a] = exn) - ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:58.1-59.35 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:57.1-58.35 rule host{s : store, a : addr}: `%|-%:%`(s, `REF.HOST_ADDR`_ref(a), REF_reftype(?(), ANY_heaptype)) - ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:61.1-63.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-latest/4.1-execution.values.spectec:60.1-63.30 + rule extern{s : store, ref : ref}: + `%|-%:%`(s, `REF.EXTERN`_ref(ref), REF_reftype(?(), EXTERN_heaptype)) + -- Ref_ok: `%|-%:%`(s, ref, REF_reftype(?(), ANY_heaptype)) + -- if (ref =/= `REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:65.1-68.34 rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: @@ -29017,9 +28994,9 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if (i!`%`_num_.0 >= |l*{l <- `l*`}|) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec - rule `br_on_null-null`{val : val, l : labelidx, ht : heaptype}: + rule `br_on_null-null`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [BR_instr(l)]) - -- if (val = `REF.NULL`_val(ht)) + -- if (val = `REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_on_null-addr`{val : val, l : labelidx}: @@ -29027,9 +29004,9 @@ relation Step_pure: `%~>%`(instr*, instr*) -- otherwise ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec - rule `br_on_non_null-null`{val : val, l : labelidx, ht : heaptype}: + rule `br_on_non_null-null`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], []) - -- if (val = `REF.NULL`_val(ht)) + -- if (val = `REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_on_non_null-addr`{val : val, l : labelidx}: @@ -29090,9 +29067,9 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([CONST_instr(I32_numtype, i) `REF.I31`_instr], [`REF.I31_NUM`_instr($wrap__(32, 31, i))]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec - rule `ref.is_null-true`{ref : ref, ht : heaptype}: + rule `ref.is_null-true`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, `%`_num_(1))]) - -- if (ref = `REF.NULL`_ref(ht)) + -- if (ref = `REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.is_null-false`{ref : ref}: @@ -29100,9 +29077,9 @@ relation Step_pure: `%~>%`(instr*, instr*) -- otherwise ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec - rule `ref.as_non_null-null`{ref : ref, ht : heaptype}: + rule `ref.as_non_null-null`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr], [TRAP_instr]) - -- if (ref = `REF.NULL`_ref(ht)) + -- if (ref = `REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.as_non_null-addr`{ref : ref}: @@ -29110,9 +29087,9 @@ relation Step_pure: `%~>%`(instr*, instr*) -- otherwise ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec - rule `ref.eq-null`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: + rule `ref.eq-null`{ref_1 : ref, ref_2 : ref}: `%~>%`([(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))) + -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.eq-true`{ref_1 : ref, ref_2 : ref}: @@ -29126,8 +29103,8 @@ relation Step_pure: `%~>%`(instr*, instr*) -- otherwise ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec - rule `i31.get-null`{ht : heaptype, sx : sx}: - `%~>%`([`REF.NULL`_instr(ht) `I31.GET`_instr(sx)], [TRAP_instr]) + rule `i31.get-null`{sx : sx}: + `%~>%`([`REF.NULL_ADDR`_instr `I31.GET`_instr(sx)], [TRAP_instr]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `i31.get-num`{i : u31, sx : sx}: @@ -29138,20 +29115,22 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([(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-latest/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)]) + rule `extern.convert_any-null`{ref : ref}: + `%~>%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.NULL_ADDR`_instr]) + -- if (ref = `REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec - rule `extern.convert_any-addr`{addrref : addrref}: - `%~>%`([(addrref : addrref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.EXTERN`_instr(addrref)]) + rule `extern.convert_any-addr`{ref : ref}: + `%~>%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.EXTERN`_instr(ref)]) + -- otherwise ;; ../../../../specification/wasm-latest/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)]) + rule `any.convert_extern-null`: + `%~>%`([`REF.NULL_ADDR`_instr `ANY.CONVERT_EXTERN`_instr], [`REF.NULL_ADDR`_instr]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec - rule `any.convert_extern-addr`{addrref : addrref}: - `%~>%`([`REF.EXTERN`_instr(addrref) `ANY.CONVERT_EXTERN`_instr], [(addrref : addrref <: instr)]) + rule `any.convert_extern-addr`{ref : ref}: + `%~>%`([`REF.EXTERN`_instr(ref) `ANY.CONVERT_EXTERN`_instr], [(ref : ref <: instr)]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `unop-val`{nt : numtype, c_1 : num_(nt), unop : unop_(nt), c : num_(nt)}: @@ -29380,8 +29359,8 @@ relation Step_read: `%~>%`(config, instr*) -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_idx.0] = a) ;; ../../../../specification/wasm-latest/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]) + rule `call_ref-null`{z : state, yy : typeuse}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CALL_REF_instr(yy)]), [TRAP_instr]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `call_ref-func`{z : state, n : n, `val*` : val*, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: @@ -29408,8 +29387,8 @@ relation Step_read: `%~>%`(config, 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-latest/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]) + rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, n : n, `val*` : val*, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, m : m, `t_2*` : valtype*}: @@ -29418,8 +29397,8 @@ relation Step_read: `%~>%`(config, instr*) -- 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-latest/4.3-execution.instructions.spectec - rule `throw_ref-null`{z : state, ht : heaptype}: - `%~>%`(`%;%`_config(z, [`REF.NULL`_instr(ht) THROW_REF_instr]), [TRAP_instr]) + rule `throw_ref-null`{z : state}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr]), [TRAP_instr]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: @@ -29693,8 +29672,8 @@ relation Step_read: `%~>%`(config, instr*) -- otherwise ;; ../../../../specification/wasm-latest/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))]) + rule `ref.null`{z : state, ht : heaptype}: + `%~>%`(`%;%`_config(z, [`REF.NULL`_instr(ht)]), [`REF.NULL_ADDR`_instr]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.func`{z : state, x : idx}: @@ -29731,8 +29710,8 @@ relation Step_read: `%~>%`(config, instr*) -- (if ($default_($unpack(zt)) = ?(val)))*{val <- `val*`, zt <- `zt*`} ;; ../../../../specification/wasm-latest/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]) + rule `struct.get-null`{z : state, `sx?` : sx?, x : idx, i : u32}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: @@ -29772,8 +29751,8 @@ relation Step_read: `%~>%`(config, instr*) -- 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-latest/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]) + rule `array.get-null`{z : state, i : num_(I32_numtype), `sx?` : sx?, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.get-oob`{z : state, a : addr, i : num_(I32_numtype), `sx?` : sx?, x : idx}: @@ -29789,8 +29768,8 @@ relation Step_read: `%~>%`(config, instr*) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec - rule `array.len-null`{z : state, ht : heaptype}: - `%~>%`(`%;%`_config(z, [`REF.NULL`_instr(ht) `ARRAY.LEN`_instr]), [TRAP_instr]) + rule `array.len-null`{z : state}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr]), [TRAP_instr]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.len-array`{z : state, a : addr}: @@ -29798,8 +29777,8 @@ relation Step_read: `%~>%`(config, instr*) -- if (a < |$arrayinst(z)|) ;; ../../../../specification/wasm-latest/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]) + rule `array.fill-null`{z : state, i : num_(I32_numtype), val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n)) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.fill-oob`{z : state, a : addr, i : num_(I32_numtype), val : val, n : n, x : idx}: @@ -29819,12 +29798,12 @@ relation Step_read: `%~>%`(config, instr*) -- otherwise ;; ../../../../specification/wasm-latest/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]) + rule `array.copy-null1`{z : state, i_1 : num_(I32_numtype), ref : ref, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr 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-latest/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]) + rule `array.copy-null2`{z : state, ref : ref, i_1 : num_(I32_numtype), 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_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n)) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) ;; ../../../../specification/wasm-latest/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}: @@ -29859,8 +29838,8 @@ relation Step_read: `%~>%`(config, instr*) -- if (sx?{sx <- `sx?`} = $sx(zt_2)) ;; ../../../../specification/wasm-latest/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]) + rule `array.init_elem-null`{z : state, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr 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-latest/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}: @@ -29887,8 +29866,8 @@ relation Step_read: `%~>%`(config, instr*) -- if (ref = $elem(z, y).REFS_eleminst[j!`%`_num_.0]) ;; ../../../../specification/wasm-latest/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]) + rule `array.init_data-null`{z : state, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr 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-latest/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}: @@ -30056,9 +30035,9 @@ relation Step: `%~>%`(config, config) -- if (a = |$structinst(z)|) -- if (si = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) - ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:721.1-722.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-latest/4.3-execution.instructions.spectec:721.1-722.55 + rule `struct.set-null`{z : state, val : val, x : idx, i : u32}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr (val : val <: instr) `STRUCT.SET`_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:724.1-727.46 rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: @@ -30072,9 +30051,9 @@ relation Step: `%~>%`(config, config) -- 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-latest/4.3-execution.instructions.spectec:785.1-786.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-latest/4.3-execution.instructions.spectec:785.1-786.66 + rule `array.set-null`{z : state, i : num_(I32_numtype), val : val, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:788.1-790.39 rule `array.set-oob`{z : state, a : addr, i : num_(I32_numtype), val : val, x : idx}: diff --git a/spectec/test-prose/TEST.md b/spectec/test-prose/TEST.md index 484fb7d67..34fdf8a1d 100644 --- a/spectec/test-prose/TEST.md +++ b/spectec/test-prose/TEST.md @@ -8406,11 +8406,11 @@ The module :math:`(\mathsf{module}~{{\mathit{type}}^\ast}~{{\mathit{import}}^\as 1) Return :math:`{{\mathrm{ipopcnt}}}_{N}({\mathit{iN}})`. - #. Assert: Due to validation, :math:`{\mathit{unop}}` is some :math:`\mathsf{extend}~n`. + #. If :math:`{\mathit{unop}}` is some :math:`\mathsf{extend}~n`, then: - #. Let :math:`(\mathsf{extend}~M)` be the destructuring of :math:`{\mathit{unop}}`. + 1) Let :math:`(\mathsf{extend}~M)` be the destructuring of :math:`{\mathit{unop}}`. - #. Return :math:`{{{{\mathrm{extend}}}_{M, N}^{\mathsf{s}}}}{({{\mathrm{wrap}}}_{N, M}({\mathit{iN}}))}`. + #) Return :math:`{{{{\mathrm{extend}}}_{M, N}^{\mathsf{s}}}}{({{\mathrm{wrap}}}_{N, M}({\mathit{iN}}))}`. #. Assert: Due to validation, :math:`{\mathit{numtype}}` is :math:`{\mathsf{f}}{n}`. @@ -12633,9 +12633,9 @@ unop_ numtype unop_ iN 1) Return [$ictz_($sizenn(numtype), iN)]. c. If (unop_ = POPCNT), then: 1) Return [$ipopcnt_($sizenn(numtype), iN)]. - d. Assert: Due to validation, unop_ is some EXTEND. - e. Let (EXTEND M) be unop_. - f. Return [$extend__(M, $sizenn(numtype), S, $wrap__($sizenn(numtype), M, iN))]. + d. If unop_ is some EXTEND, then: + 1) Let (EXTEND M) be unop_. + 2) Return [$extend__(M, $sizenn(numtype), S, $wrap__($sizenn(numtype), M, iN))]. 2. Assert: Due to validation, numtype is Fnn. 3. If (unop_ = ABS), then: a. Return $fabs_($sizenn(numtype), iN). @@ -17278,11 +17278,9 @@ The reference value :math:`{\mathit{ref}}` is :ref:`valid ` with the * Either: - * The reference value :math:`{\mathit{ref}}` is of the form :math:`(\mathsf{ref{.}null}~{\mathit{ht}})`. + * The reference value :math:`{\mathit{ref}}` is of the form :math:`\mathsf{ref{.}null}`. - * The reference type :math:`{\mathit{rt}}` is of the form :math:`(\mathsf{ref}~\mathsf{null}~{\mathit{ht}'})`. - - * The heap type :math:`{\mathit{ht}'}` :ref:`matches ` the heap type :math:`{\mathit{ht}}`. + * The reference type :math:`{\mathit{rt}}` is of the form :math:`(\mathsf{ref}~\mathsf{null}~\mathsf{bot})`. * Or: @@ -17330,11 +17328,13 @@ The reference value :math:`{\mathit{ref}}` is :ref:`valid ` with the * The reference type :math:`{\mathit{rt}}` is of the form :math:`(\mathsf{ref}~\mathsf{any})`. * Or: - * The reference value :math:`{\mathit{ref}}` is of the form :math:`(\mathsf{ref{.}extern}~{\mathit{addrref}})`. + * The reference value :math:`{\mathit{ref}}` is of the form :math:`(\mathsf{ref{.}extern}~{\mathit{ref}'})`. * The reference type :math:`{\mathit{rt}}` is of the form :math:`(\mathsf{ref}~\mathsf{extern})`. - * The reference value :math:`{\mathit{addrref}}` is :ref:`valid ` with the reference type :math:`(\mathsf{ref}~\mathsf{any})`. + * The reference value :math:`{\mathit{ref}'}` is :ref:`valid ` with the reference type :math:`(\mathsf{ref}~\mathsf{any})`. + + * The reference value :math:`{\mathit{ref}'}` is not of the form :math:`\mathsf{ref{.}null}`. * Or: * The reference value :math:`{\mathit{ref}}` is :ref:`valid ` with the reference type :math:`{\mathit{rt}'}`. @@ -17344,10 +17344,7 @@ The reference value :math:`{\mathit{ref}}` is :ref:`valid ` with the -The reference value :math:`(\mathsf{ref{.}null}~{\mathit{ht}})` is :ref:`valid ` with the reference type :math:`(\mathsf{ref}~\mathsf{null}~{\mathit{ht}'})` if: - - - * The heap type :math:`{\mathit{ht}'}` :ref:`matches ` the heap type :math:`{\mathit{ht}}`. +The reference value :math:`\mathsf{ref{.}null}` is :ref:`valid ` with the reference type :math:`(\mathsf{ref}~\mathsf{null}~\mathsf{bot})`. @@ -17400,10 +17397,12 @@ The reference value :math:`(\mathsf{ref{.}host}~a)` is :ref:`valid ` -The reference value :math:`(\mathsf{ref{.}extern}~{\mathit{addrref}})` is :ref:`valid ` with the reference type :math:`(\mathsf{ref}~\mathsf{extern})` if: +The reference value :math:`(\mathsf{ref{.}extern}~{\mathit{ref}})` is :ref:`valid ` with the reference type :math:`(\mathsf{ref}~\mathsf{extern})` if: - * The reference value :math:`{\mathit{addrref}}` is :ref:`valid ` with the reference type :math:`(\mathsf{ref}~\mathsf{any})`. + * The reference value :math:`{\mathit{ref}}` is :ref:`valid ` with the reference type :math:`(\mathsf{ref}~\mathsf{any})`. + + * The reference value :math:`{\mathit{ref}}` is not of the form :math:`\mathsf{ref{.}null}`. @@ -17728,7 +17727,7 @@ The instruction sequence :math:`(\mathsf{block}~{\mathit{blocktype}}~{{\mathit{i #. Assert: Due to validation, the first non-value entry of the stack is a :math:`\mathsf{frame}`. -#. If :math:`{\mathit{val}''}` is some :math:`\mathsf{ref{.}null}~{\mathit{heaptype}}`, then: +#. If :math:`{\mathit{val}''} = \mathsf{ref{.}null}`, then: a. Trap. @@ -18359,7 +18358,7 @@ The instruction sequence :math:`(\mathsf{block}~{\mathit{blocktype}}~{{\mathit{i #. Pop the value :math:`{\mathit{val}}` from the stack. -#. If :math:`{\mathit{val}}` is some :math:`\mathsf{ref{.}null}~{\mathit{heaptype}}`, then: +#. If :math:`{\mathit{val}} = \mathsf{ref{.}null}`, then: a. Execute the instruction :math:`(\mathsf{br}~l)`. @@ -18376,7 +18375,7 @@ The instruction sequence :math:`(\mathsf{block}~{\mathit{blocktype}}~{{\mathit{i #. Pop the value :math:`{\mathit{val}}` from the stack. -#. If :math:`{\mathit{val}}` is some :math:`\mathsf{ref{.}null}~{\mathit{heaptype}}`, then: +#. If :math:`{\mathit{val}} = \mathsf{ref{.}null}`, then: a. Do nothing. @@ -18520,7 +18519,7 @@ The instruction sequence :math:`(\mathsf{block}~{\mathit{blocktype}}~{{\mathit{i #. Pop the value :math:`{\mathit{ref}}` from the stack. -#. If :math:`{\mathit{ref}}` is some :math:`\mathsf{ref{.}null}~{\mathit{heaptype}}`, then: +#. If :math:`{\mathit{ref}} = \mathsf{ref{.}null}`, then: a. Push the value :math:`(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~1)` to the stack. @@ -18537,7 +18536,7 @@ The instruction sequence :math:`(\mathsf{block}~{\mathit{blocktype}}~{{\mathit{i #. Pop the value :math:`{\mathit{ref}}` from the stack. -#. If :math:`{\mathit{ref}}` is some :math:`\mathsf{ref{.}null}~{\mathit{heaptype}}`, then: +#. If :math:`{\mathit{ref}} = \mathsf{ref{.}null}`, then: a. Trap. @@ -18556,7 +18555,7 @@ The instruction sequence :math:`(\mathsf{block}~{\mathit{blocktype}}~{{\mathit{i #. Pop the value :math:`{\mathit{ref}}_1` from the stack. -#. If :math:`{\mathit{ref}}_1` is some :math:`\mathsf{ref{.}null}~{\mathit{heaptype}}` and :math:`{\mathit{ref}}_2` is some :math:`\mathsf{ref{.}null}~{\mathit{heaptype}}`, then: +#. If :math:`{\mathit{ref}}_1 = \mathsf{ref{.}null}` and :math:`{\mathit{ref}}_2 = \mathsf{ref{.}null}`, then: a. Push the value :math:`(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~1)` to the stack. @@ -18577,7 +18576,7 @@ The instruction sequence :math:`(\mathsf{block}~{\mathit{blocktype}}~{{\mathit{i #. Pop the value :math:`{\mathit{val}}` from the stack. -#. If :math:`{\mathit{val}}` is some :math:`\mathsf{ref{.}null}~{\mathit{heaptype}}`, then: +#. If :math:`{\mathit{val}} = \mathsf{ref{.}null}`, then: a. Trap. @@ -18609,17 +18608,17 @@ The instruction sequence :math:`(\mathsf{block}~{\mathit{blocktype}}~{{\mathit{i ...................................... -1. Assert: Due to validation, a value is on the top of the stack. +1. Assert: Due to validation, a reference value is on the top of the stack. -#. Pop the value :math:`{\mathit{val}}` from the stack. +#. Pop the value :math:`{\mathit{ref}}` from the stack. -#. If :math:`{\mathit{val}}` is some :math:`\mathsf{ref{.}null}~{\mathit{heaptype}}`, then: +#. If :math:`{\mathit{ref}} = \mathsf{ref{.}null}`, then: - a. Push the value :math:`(\mathsf{ref{.}null}~\mathsf{extern})` to the stack. + a. Push the value :math:`\mathsf{ref{.}null}` to the stack. -#. If :math:`{\mathit{val}}` is address value, then: +#. Else: - a. Push the value :math:`(\mathsf{ref{.}extern}~{\mathit{val}})` to the stack. + a. Push the value :math:`(\mathsf{ref{.}extern}~{\mathit{ref}})` to the stack. :math:`\mathsf{any{.}convert\_extern}` @@ -18630,15 +18629,15 @@ The instruction sequence :math:`(\mathsf{block}~{\mathit{blocktype}}~{{\mathit{i #. Pop the value :math:`{\mathit{val}}` from the stack. -#. If :math:`{\mathit{val}}` is some :math:`\mathsf{ref{.}null}~{\mathit{heaptype}}`, then: +#. If :math:`{\mathit{val}} = \mathsf{ref{.}null}`, then: - a. Push the value :math:`(\mathsf{ref{.}null}~\mathsf{any})` to the stack. + a. Push the value :math:`\mathsf{ref{.}null}` to the stack. -#. If :math:`{\mathit{val}}` is some :math:`\mathsf{ref{.}extern}~{\mathit{addrref}}`, then: +#. If :math:`{\mathit{val}}` is some :math:`\mathsf{ref{.}extern}~{\mathit{ref}}`, then: - a. Let :math:`(\mathsf{ref{.}extern}~{\mathit{addrref}})` be the destructuring of :math:`{\mathit{val}}`. + a. Let :math:`(\mathsf{ref{.}extern}~{\mathit{ref}})` be the destructuring of :math:`{\mathit{val}}`. - #. Push the value :math:`{\mathit{addrref}}` to the stack. + #. Push the value :math:`{\mathit{ref}}` to the stack. :math:`{\mathit{nt}} {.} {\mathit{unop}}` @@ -19212,7 +19211,7 @@ The instruction sequence :math:`(\mathsf{block}~{\mathit{blocktype}}~{{\mathit{i #. Pop the value :math:`{\mathit{val}'}` from the stack. -#. If :math:`{\mathit{val}'}` is some :math:`\mathsf{ref{.}null}~{\mathit{heaptype}}`, then: +#. If :math:`{\mathit{val}'} = \mathsf{ref{.}null}`, then: a. Trap. @@ -19306,7 +19305,7 @@ The instruction sequence :math:`(\mathsf{block}~{\mathit{blocktype}}~{{\mathit{i #. Pop the value :math:`{\mathit{val}''}` from the stack. - #. If :math:`{\mathit{val}''}` is some :math:`\mathsf{ref{.}null}~{\mathit{heaptype}}`, then: + #. If :math:`{\mathit{val}''} = \mathsf{ref{.}null}`, then: 1) Trap. @@ -19345,7 +19344,7 @@ The instruction sequence :math:`(\mathsf{block}~{\mathit{blocktype}}~{{\mathit{i #. Pop the value :math:`{\mathit{val}'}` from the stack. -#. If :math:`{\mathit{val}'}` is some :math:`\mathsf{ref{.}null}~{\mathit{heaptype}}`, then: +#. If :math:`{\mathit{val}'} = \mathsf{ref{.}null}`, then: a. Trap. @@ -20083,13 +20082,11 @@ The instruction sequence :math:`(\mathsf{block}~{\mathit{blocktype}}~{{\mathit{i #. Execute the instruction :math:`(\mathsf{memory{.}init}~x~y)`. -:math:`\mathsf{ref{.}null}~x` -............................. - +:math:`\mathsf{ref{.}null}~{\mathit{ht}}` +......................................... -1. Let :math:`z` be the current state. -#. Push the value :math:`(\mathsf{ref{.}null}~z{.}\mathsf{types}{}[x])` to the stack. +1. Push the value :math:`\mathsf{ref{.}null}` to the stack. :math:`\mathsf{ref{.}func}~x` @@ -20182,7 +20179,7 @@ The instruction sequence :math:`(\mathsf{block}~{\mathit{blocktype}}~{{\mathit{i #. Pop the value :math:`{\mathit{val}}` from the stack. -#. If :math:`{\mathit{val}}` is some :math:`\mathsf{ref{.}null}~{\mathit{heaptype}}`, then: +#. If :math:`{\mathit{val}} = \mathsf{ref{.}null}`, then: a. Trap. @@ -20302,7 +20299,7 @@ The instruction sequence :math:`(\mathsf{block}~{\mathit{blocktype}}~{{\mathit{i #. Pop the value :math:`{\mathit{val}}` from the stack. -#. If :math:`{\mathit{val}}` is some :math:`\mathsf{ref{.}null}~{\mathit{heaptype}}`, then: +#. If :math:`{\mathit{val}} = \mathsf{ref{.}null}`, then: a. Trap. @@ -20310,19 +20307,19 @@ The instruction sequence :math:`(\mathsf{block}~{\mathit{blocktype}}~{{\mathit{i #. Let :math:`(\mathsf{ref{.}array}~a)` be the destructuring of :math:`{\mathit{val}}`. -#. If :math:`a < {|z{.}\mathsf{arrays}|}` and :math:`i \geq {|z{.}\mathsf{arrays}{}[a]{.}\mathsf{fields}|}`, then: +#. Assert: Due to validation, :math:`a < {|z{.}\mathsf{arrays}|}`. - a. Trap. +#. If :math:`i \geq {|z{.}\mathsf{arrays}{}[a]{.}\mathsf{fields}|}`, then: -#. If :math:`i < {|z{.}\mathsf{arrays}{}[a]{.}\mathsf{fields}|}` and :math:`a < {|z{.}\mathsf{arrays}|}`, then: + a. Trap. - a. Assert: Due to validation, the :ref:`expansion ` of :math:`z{.}\mathsf{types}{}[x]` is some :math:`\mathsf{array}~{\mathit{fieldtype}}`. +#. Assert: Due to validation, the :ref:`expansion ` of :math:`z{.}\mathsf{types}{}[x]` is some :math:`\mathsf{array}~{\mathit{fieldtype}}`. - #. Let :math:`(\mathsf{array}~{\mathit{fieldtype}}_0)` be the destructuring of the :ref:`expansion ` of :math:`z{.}\mathsf{types}{}[x]`. +#. Let :math:`(\mathsf{array}~{\mathit{fieldtype}}_0)` be the destructuring of the :ref:`expansion ` of :math:`z{.}\mathsf{types}{}[x]`. - #. Let :math:`({\mathsf{mut}^?}~{\mathit{zt}})` be the destructuring of :math:`{\mathit{fieldtype}}_0`. +#. Let :math:`({\mathsf{mut}^?}~{\mathit{zt}})` be the destructuring of :math:`{\mathit{fieldtype}}_0`. - #. Push the value :math:`{{{{\mathrm{unpack}}}_{{\mathit{zt}}}^{{{\mathit{sx}}^?}}}}{(z{.}\mathsf{arrays}{}[a]{.}\mathsf{fields}{}[i])}` to the stack. +#. Push the value :math:`{{{{\mathrm{unpack}}}_{{\mathit{zt}}}^{{{\mathit{sx}}^?}}}}{(z{.}\mathsf{arrays}{}[a]{.}\mathsf{fields}{}[i])}` to the stack. :math:`\mathsf{array{.}len}` @@ -20335,7 +20332,7 @@ The instruction sequence :math:`(\mathsf{block}~{\mathit{blocktype}}~{{\mathit{i #. Pop the value :math:`{\mathit{val}}` from the stack. -#. If :math:`{\mathit{val}}` is some :math:`\mathsf{ref{.}null}~{\mathit{heaptype}}`, then: +#. If :math:`{\mathit{val}} = \mathsf{ref{.}null}`, then: a. Trap. @@ -20370,7 +20367,7 @@ The instruction sequence :math:`(\mathsf{block}~{\mathit{blocktype}}~{{\mathit{i #. Pop the value :math:`{\mathit{val}'}` from the stack. -#. If :math:`{\mathit{val}'}` is some :math:`\mathsf{ref{.}null}~{\mathit{heaptype}}`, then: +#. If :math:`{\mathit{val}'} = \mathsf{ref{.}null}`, then: a. Trap. @@ -20437,11 +20434,11 @@ The instruction sequence :math:`(\mathsf{block}~{\mathit{blocktype}}~{{\mathit{i #. Pop the value :math:`{\mathit{val}'}` from the stack. -#. If :math:`{\mathit{val}'}` is some :math:`\mathsf{ref{.}null}~{\mathit{heaptype}}` and :math:`{\mathit{val}}` is reference value, then: +#. If :math:`{\mathit{val}'} = \mathsf{ref{.}null}` and :math:`{\mathit{val}}` is reference value, then: a. Trap. -#. If :math:`{\mathit{val}}` is some :math:`\mathsf{ref{.}null}~{\mathit{heaptype}}` and :math:`{\mathit{val}'}` is reference value, then: +#. If :math:`{\mathit{val}} = \mathsf{ref{.}null}` and :math:`{\mathit{val}'}` is reference value, then: a. Trap. @@ -20548,7 +20545,7 @@ The instruction sequence :math:`(\mathsf{block}~{\mathit{blocktype}}~{{\mathit{i #. Pop the value :math:`{\mathit{val}}` from the stack. -#. If :math:`{\mathit{val}}` is some :math:`\mathsf{ref{.}null}~{\mathit{heaptype}}`, then: +#. If :math:`{\mathit{val}} = \mathsf{ref{.}null}`, then: a. Trap. @@ -20613,7 +20610,7 @@ The instruction sequence :math:`(\mathsf{block}~{\mathit{blocktype}}~{{\mathit{i #. Pop the value :math:`{\mathit{val}}` from the stack. -#. If :math:`{\mathit{val}}` is some :math:`\mathsf{ref{.}null}~{\mathit{heaptype}}`, then: +#. If :math:`{\mathit{val}} = \mathsf{ref{.}null}`, then: a. Trap. @@ -20942,7 +20939,7 @@ The instruction sequence :math:`(\mathsf{block}~{\mathit{blocktype}}~{{\mathit{i #. Pop the value :math:`{\mathit{val}'}` from the stack. -#. If :math:`{\mathit{val}'}` is some :math:`\mathsf{ref{.}null}~{\mathit{heaptype}}`, then: +#. If :math:`{\mathit{val}'} = \mathsf{ref{.}null}`, then: a. Trap. @@ -21004,7 +21001,7 @@ The instruction sequence :math:`(\mathsf{block}~{\mathit{blocktype}}~{{\mathit{i #. Pop the value :math:`{\mathit{val}'}` from the stack. -#. If :math:`{\mathit{val}'}` is some :math:`\mathsf{ref{.}null}~{\mathit{heaptype}}`, then: +#. If :math:`{\mathit{val}'} = \mathsf{ref{.}null}`, then: a. Trap. @@ -23758,7 +23755,7 @@ The instruction sequence :math:`(\mathsf{block}~{\mathit{blocktype}}~{{\mathit{i #. If :math:`{{\mathit{NULL}}_0^?} = \mathsf{null}`, then: - a. Return :math:`(\mathsf{ref{.}null}~{\mathit{ht}})`. + a. Return :math:`\mathsf{ref{.}null}`. #. Assert: Due to validation, :math:`{{\mathit{NULL}}_0^?}` is not defined. @@ -24220,11 +24217,11 @@ The instruction sequence :math:`(\mathsf{block}~{\mathit{blocktype}}~{{\mathit{i 1) Return :math:`{{\mathrm{ipopcnt}}}_{N}(i)`. - #. Assert: Due to validation, :math:`{\mathit{unop}}` is some :math:`{\mathsf{extend}}{{\mathit{sz}}}{\mathsf{\_}}{\mathsf{s}}`. + #. If :math:`{\mathit{unop}}` is some :math:`{\mathsf{extend}}{{\mathit{sz}}}{\mathsf{\_}}{\mathsf{s}}`, then: - #. Let :math:`({\mathsf{extend}}{M}{\mathsf{\_}}{\mathsf{s}})` be the destructuring of :math:`{\mathit{unop}}`. + 1) Let :math:`({\mathsf{extend}}{M}{\mathsf{\_}}{\mathsf{s}})` be the destructuring of :math:`{\mathit{unop}}`. - #. Return :math:`{{{{\mathrm{iextend}}}_{N, M}^{\mathsf{s}}}}{(i)}`. + #) Return :math:`{{{{\mathrm{iextend}}}_{N, M}^{\mathsf{s}}}}{(i)}`. #. Assert: Due to validation, :math:`{\mathit{numtype}}` is :math:`{\mathsf{f}}{N}`. @@ -28679,9 +28676,8 @@ Vec_ok Ref_ok - the reference value ref is valid with the reference type rt if: - Either: - - ref is (REF.NULL ht). - - rt is (REF ?(NULL) ht'). - - the heap type ht' matches the heap type ht. + - ref is REF.NULL_ADDR. + - rt is (REF ?(NULL) BOT). - Or: - ref is (REF.I31_NUM i). - rt is (REF ?() I31). @@ -28708,16 +28704,16 @@ Ref_ok - ref is (REF.HOST_ADDR a). - rt is (REF ?() ANY). - Or: - - ref is (REF.EXTERN addrref). + - ref is (REF.EXTERN ref'). - rt is (REF ?() EXTERN). - - the reference value addrref is valid with the reference type (REF ?() ANY). + - the reference value ref' is valid with the reference type (REF ?() ANY). + - ref' is not REF.NULL_ADDR. - Or: - ref is valid with the reference type rt'. - rt' matches rt. Ref_ok/null -- the reference value (REF.NULL ht) is valid with the reference type (REF ?(NULL) ht') if: - - the heap type ht' matches the heap type ht. +- the reference value REF.NULL_ADDR is valid with the reference type (REF ?(NULL) BOT). Ref_ok/i31 - the reference value (REF.I31_NUM i) is valid with the reference type (REF ?() I31). @@ -28745,8 +28741,9 @@ Ref_ok/host - the reference value (REF.HOST_ADDR a) is valid with the reference type (REF ?() ANY). Ref_ok/extern -- the reference value (REF.EXTERN addrref) is valid with the reference type (REF ?() EXTERN) if: - - the reference value addrref is valid with the reference type (REF ?() ANY). +- the reference value (REF.EXTERN ref) is valid with the reference type (REF ?() EXTERN) if: + - the reference value ref is valid with the reference type (REF ?() ANY). + - ref is not REF.NULL_ADDR. Ref_ok/sub - the reference value ref is valid with the reference type rt if: @@ -28910,7 +28907,7 @@ Step_read/return_call_ref-frame-* yy 2. Assert: Due to validation, a value is on the top of the stack. 3. Pop the value val'' from the stack. 4. Assert: Due to validation, the first non-value entry of the stack is a FRAME_. -5. If val'' is some REF.NULL, then: +5. If (val'' = REF.NULL_ADDR), then: a. Trap. 6. Assert: Due to validation, val'' is some REF.FUNC_ADDR. 7. Let (REF.FUNC_ADDR a) be val''. @@ -29206,7 +29203,7 @@ Step_pure/br_table l* l' Step_pure/br_on_null l 1. Assert: Due to validation, a value is on the top of the stack. 2. Pop the value val from the stack. -3. If val is some REF.NULL, then: +3. If (val = REF.NULL_ADDR), then: a. Execute the instruction (BR l). 4. Else: a. Push the value val to the stack. @@ -29214,7 +29211,7 @@ Step_pure/br_on_null l Step_pure/br_on_non_null l 1. Assert: Due to validation, a value is on the top of the stack. 2. Pop the value val from the stack. -3. If val is some REF.NULL, then: +3. If (val = REF.NULL_ADDR), then: a. Do nothing. 4. Else: a. Push the value val to the stack. @@ -29280,7 +29277,7 @@ Step_pure/ref.i31 Step_pure/ref.is_null 1. Assert: Due to validation, a value of value type ref is on the top of the stack. 2. Pop the value ref from the stack. -3. If ref is some REF.NULL, then: +3. If (ref = REF.NULL_ADDR), then: a. Push the value (I32.CONST 1) to the stack. 4. Else: a. Push the value (I32.CONST 0) to the stack. @@ -29288,7 +29285,7 @@ Step_pure/ref.is_null Step_pure/ref.as_non_null 1. Assert: Due to validation, a value of value type ref is on the top of the stack. 2. Pop the value ref from the stack. -3. If ref is some REF.NULL, then: +3. If (ref = REF.NULL_ADDR), then: a. Trap. 4. Push the value ref to the stack. @@ -29297,7 +29294,7 @@ Step_pure/ref.eq 2. Pop the value ref_2 from the stack. 3. Assert: Due to validation, a value of value type ref is on the top of the stack. 4. Pop the value ref_1 from the stack. -5. If (ref_1 is some REF.NULL /\ ref_2 is some REF.NULL), then: +5. If ((ref_1 = REF.NULL_ADDR) /\ (ref_2 = REF.NULL_ADDR)), then: a. Push the value (I32.CONST 1) to the stack. 6. Else if (ref_1 = ref_2), then: a. Push the value (I32.CONST 1) to the stack. @@ -29307,7 +29304,7 @@ Step_pure/ref.eq Step_pure/i31.get sx 1. Assert: Due to validation, a value is on the top of the stack. 2. Pop the value val from the stack. -3. If val is some REF.NULL, then: +3. If (val = REF.NULL_ADDR), then: a. Trap. 4. Assert: Due to validation, val is some REF.I31_NUM. 5. Let (REF.I31_NUM i) be val. @@ -29322,21 +29319,21 @@ Step_pure/array.new x 6. Execute the instruction (ARRAY.NEW_FIXED x n). Step_pure/extern.convert_any -1. Assert: Due to validation, a value is on the top of the stack. -2. Pop the value val from the stack. -3. If val is some REF.NULL, then: - a. Push the value (REF.NULL EXTERN) to the stack. -4. If val is addrref, then: - a. Push the value (REF.EXTERN val) to the stack. +1. Assert: Due to validation, a value of value type ref is on the top of the stack. +2. Pop the value ref from the stack. +3. If (ref = REF.NULL_ADDR), then: + a. Push the value REF.NULL_ADDR to the stack. +4. Else: + a. Push the value (REF.EXTERN ref) to the stack. Step_pure/any.convert_extern 1. Assert: Due to validation, a value is on the top of the stack. 2. Pop the value val from the stack. -3. If val is some REF.NULL, then: - a. Push the value (REF.NULL ANY) to the stack. +3. If (val = REF.NULL_ADDR), then: + a. Push the value REF.NULL_ADDR to the stack. 4. If val is some REF.EXTERN, then: - a. Let (REF.EXTERN addrref) be val. - b. Push the value addrref to the stack. + a. Let (REF.EXTERN ref) be val. + b. Push the value ref to the stack. Step_pure/unop nt unop 1. Assert: Due to validation, a value of value type nt is on the top of the stack. @@ -29605,7 +29602,7 @@ Step_read/call_ref yy 1. Let z be the current state. 2. Assert: Due to validation, a value is on the top of the stack. 3. Pop the value val' from the stack. -4. If val' is some REF.NULL, then: +4. If (val' = REF.NULL_ADDR), then: a. Trap. 5. Assert: Due to validation, val' is some REF.FUNC_ADDR. 6. Let (REF.FUNC_ADDR a) be val'. @@ -29649,7 +29646,7 @@ Step_read/return_call_ref yy a. Assert: Due to validation, the first non-value entry of the stack is a FRAME_. b. Assert: Due to validation, a value is on the top of the stack. c. Pop the value val'' from the stack. - d. If val'' is some REF.NULL, then: + d. If (val'' = REF.NULL_ADDR), then: 1) Trap. e. Assert: Due to validation, val'' is some REF.FUNC_ADDR. f. Let (REF.FUNC_ADDR a) be val''. @@ -29668,7 +29665,7 @@ Step_read/throw_ref 1. Let z be the current state. 2. Assert: Due to validation, a value is on the top of the stack. 3. Pop the value val' from the stack. -4. If val' is some REF.NULL, then: +4. If (val' = REF.NULL_ADDR), then: a. Trap. 5. If val' is some REF.EXN_ADDR, then: a. Let (REF.EXN_ADDR a) be val'. @@ -30020,9 +30017,8 @@ Step_read/memory.init x y g. Push the value (I32.CONST (n - 1)) to the stack. h. Execute the instruction (MEMORY.INIT x y). -Step_read/ref.null (_IDX x) -1. Let z be the current state. -2. Push the value (REF.NULL $type(z, x)) to the stack. +Step_read/ref.null ht +1. Push the value REF.NULL_ADDR to the stack. Step_read/ref.func x 1. Let z be the current state. @@ -30066,7 +30062,7 @@ Step_read/struct.get sx? x i 1. Let z be the current state. 2. Assert: Due to validation, a value is on the top of the stack. 3. Pop the value val from the stack. -4. If val is some REF.NULL, then: +4. If (val = REF.NULL_ADDR), then: a. Trap. 5. Assert: Due to validation, val is some REF.STRUCT_ADDR. 6. Let (REF.STRUCT_ADDR a) be val. @@ -30124,23 +30120,23 @@ Step_read/array.get sx? x 3. Pop the value (I32.CONST i) from the stack. 4. Assert: Due to validation, a value is on the top of the stack. 5. Pop the value val from the stack. -6. If val is some REF.NULL, then: +6. If (val = REF.NULL_ADDR), then: a. Trap. 7. Assert: Due to validation, val is some REF.ARRAY_ADDR. 8. Let (REF.ARRAY_ADDR a) be val. -9. If ((a < |$arrayinst(z)|) /\ (i >= |$arrayinst(z)[a].FIELDS|)), then: +9. Assert: Due to validation, (a < |$arrayinst(z)|). +10. If (i >= |$arrayinst(z)[a].FIELDS|), then: a. Trap. -10. If ((i < |$arrayinst(z)[a].FIELDS|) /\ (a < |$arrayinst(z)|)), then: - a. Assert: Due to validation, $Expand($type(z, x)) is some ARRAY. - b. Let (ARRAY fieldtype_0) be $Expand($type(z, x)). - c. Let (mut? zt) be fieldtype_0. - d. Push the value $unpackfield_(zt, sx?, $arrayinst(z)[a].FIELDS[i]) to the stack. +11. Assert: Due to validation, $Expand($type(z, x)) is some ARRAY. +12. Let (ARRAY fieldtype_0) be $Expand($type(z, x)). +13. Let (mut? zt) be fieldtype_0. +14. Push the value $unpackfield_(zt, sx?, $arrayinst(z)[a].FIELDS[i]) to the stack. Step_read/array.len 1. Let z be the current state. 2. Assert: Due to validation, a value is on the top of the stack. 3. Pop the value val from the stack. -4. If val is some REF.NULL, then: +4. If (val = REF.NULL_ADDR), then: a. Trap. 5. Assert: Due to validation, val is some REF.ARRAY_ADDR. 6. Let (REF.ARRAY_ADDR a) be val. @@ -30157,7 +30153,7 @@ Step_read/array.fill x 7. Pop the value (I32.CONST i) from the stack. 8. Assert: Due to validation, a value is on the top of the stack. 9. Pop the value val' from the stack. -10. If val' is some REF.NULL, then: +10. If (val' = REF.NULL_ADDR), then: a. Trap. 11. Assert: Due to validation, val' is some REF.ARRAY_ADDR. 12. Let (REF.ARRAY_ADDR a) be val'. @@ -30190,9 +30186,9 @@ Step_read/array.copy x_1 x_2 9. Pop the value (I32.CONST i_1) from the stack. 10. Assert: Due to validation, a value is on the top of the stack. 11. Pop the value val' from the stack. -12. If (val' is some REF.NULL /\ val is ref), then: +12. If ((val' = REF.NULL_ADDR) /\ val is ref), then: a. Trap. -13. If (val is some REF.NULL /\ val' is ref), then: +13. If ((val = REF.NULL_ADDR) /\ val' is ref), then: a. Trap. 14. If val' is some REF.ARRAY_ADDR, then: a. Let (REF.ARRAY_ADDR a_1) be val'. @@ -30245,7 +30241,7 @@ Step_read/array.init_elem x y 7. Pop the value (I32.CONST i) from the stack. 8. Assert: Due to validation, a value is on the top of the stack. 9. Pop the value val from the stack. -10. If val is some REF.NULL, then: +10. If (val = REF.NULL_ADDR), then: a. Trap. 11. Assert: Due to validation, val is some REF.ARRAY_ADDR. 12. Let (REF.ARRAY_ADDR a) be val. @@ -30277,7 +30273,7 @@ Step_read/array.init_data x y 7. Pop the value (I32.CONST i) from the stack. 8. Assert: Due to validation, a value is on the top of the stack. 9. Pop the value val from the stack. -10. If val is some REF.NULL, then: +10. If (val = REF.NULL_ADDR), then: a. Trap. 11. Assert: Due to validation, val is some REF.ARRAY_ADDR. 12. Let (REF.ARRAY_ADDR a) be val. @@ -30435,7 +30431,7 @@ Step/struct.set x i 3. Pop the value val from the stack. 4. Assert: Due to validation, a value is on the top of the stack. 5. Pop the value val' from the stack. -6. If val' is some REF.NULL, then: +6. If (val' = REF.NULL_ADDR), then: a. Trap. 7. Assert: Due to validation, val' is some REF.STRUCT_ADDR. 8. Let (REF.STRUCT_ADDR a) be val'. @@ -30465,7 +30461,7 @@ Step/array.set x 5. Pop the value (I32.CONST i) from the stack. 6. Assert: Due to validation, a value is on the top of the stack. 7. Pop the value val' from the stack. -8. If val' is some REF.NULL, then: +8. If (val' = REF.NULL_ADDR), then: a. Trap. 9. Assert: Due to validation, val' is some REF.ARRAY_ADDR. 10. Let (REF.ARRAY_ADDR a) be val'. @@ -31746,7 +31742,7 @@ default_ valtype 4. Assert: Due to validation, valtype is some REF. 5. Let (REF NULL_0? ht) be valtype. 6. If (NULL_0? = ?(NULL)), then: - a. Return ?((REF.NULL ht)). + a. Return ?(REF.NULL_ADDR). 7. Assert: Due to validation, NULL_0? is not defined. 8. Return ?(). @@ -31959,9 +31955,9 @@ unop_ numtype unop_ i 1) Return [$ictz_($sizenn(numtype), i)]. c. If (unop_ = POPCNT), then: 1) Return [$ipopcnt_($sizenn(numtype), i)]. - d. Assert: Due to validation, unop_ is some EXTEND. - e. Let (EXTEND M) be unop_. - f. Return [$iextend_($sizenn(numtype), M, S, i)]. + d. If unop_ is some EXTEND, then: + 1) Let (EXTEND M) be unop_. + 2) Return [$iextend_($sizenn(numtype), M, S, i)]. 2. Assert: Due to validation, numtype is Fnn. 3. If (unop_ = ABS), then: a. Return $fabs_($sizenn(numtype), i). diff --git a/spectec/test-prose/doc/exec/runtime-in.rst b/spectec/test-prose/doc/exec/runtime-in.rst index a1a8ba63a..57a867d36 100644 --- a/spectec/test-prose/doc/exec/runtime-in.rst +++ b/spectec/test-prose/doc/exec/runtime-in.rst @@ -7,14 +7,12 @@ Values ~~~~~~ .. _syntax-num: -.. _syntax-addrref: .. _syntax-ref: .. _syntax-val: $${syntax+: num - {addrref - ref} + ref val } diff --git a/spectec/test-splice/TEST.md b/spectec/test-splice/TEST.md index 900b542e6..cc8249e9d 100644 --- a/spectec/test-splice/TEST.md +++ b/spectec/test-splice/TEST.md @@ -229,7 +229,7 @@ $$ {{\mathrm{default}}}_{{\mathsf{i}}{N}} & = & ({\mathsf{i}}{N}{.}\mathsf{const}~0) \\ {{\mathrm{default}}}_{{\mathsf{f}}{N}} & = & ({\mathsf{f}}{N}{.}\mathsf{const}~{+0}) \\ {{\mathrm{default}}}_{{\mathsf{v}}{N}} & = & ({\mathsf{v}}{N}{.}\mathsf{const}~0) \\ -{{\mathrm{default}}}_{\mathsf{ref}~\mathsf{null}~{\mathit{ht}}} & = & (\mathsf{ref{.}null}~{\mathit{ht}}) \\ +{{\mathrm{default}}}_{\mathsf{ref}~\mathsf{null}~{\mathit{ht}}} & = & \mathsf{ref{.}null} \\ {{\mathrm{default}}}_{\mathsf{ref}~{\mathit{ht}}} & = & \epsilon \\ \end{array} $$ @@ -292,7 +292,6 @@ warning: syntax `abbreviated` was never spliced warning: syntax `absheaptype/syn` was never spliced warning: syntax `absheaptype/sem` was never spliced warning: syntax `addr` was never spliced -warning: syntax `addrref` was never spliced warning: syntax `addrtype` was never spliced warning: syntax `arrayaddr` was never spliced warning: syntax `arrayinst` was never spliced @@ -1368,7 +1367,7 @@ warning: rule `Step_read/memory.copy-gt` was never spliced warning: rule `Step_read/memory.init-oob` was never spliced warning: rule `Step_read/memory.init-zero` was never spliced warning: rule `Step_read/memory.init-succ` was never spliced -warning: rule `Step_read/ref.null-idx` was never spliced +warning: rule `Step_read/ref.null` was never spliced warning: rule `Step_read/ref.func` was never spliced warning: rule `Step_read/ref.test-true` was never spliced warning: rule `Step_read/ref.test-false` was never spliced From ebb0b4fc4323f7b12f6201c13b4ea98f4b9a6866 Mon Sep 17 00:00:00 2001 From: Jaehyun Lee <99jaehyunlee@kaist.ac.kr> Date: Tue, 24 Mar 2026 15:08:49 +0900 Subject: [PATCH 101/235] [spectec] Bump ocaml version in README (#2121) --- spectec/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spectec/README.md b/spectec/README.md index 48675a585..bf88b51f0 100644 --- a/spectec/README.md +++ b/spectec/README.md @@ -107,12 +107,12 @@ You will need `ocaml` installed with `dune`, `menhir`, `mdx`, and the `zarith` l $ opam init ``` -* Set `ocaml` as version 5.0.0 or higher. +* Set `ocaml` as version 5.1.0 or higher. ``` - $ opam switch create 5.0.0 + $ opam switch create 5.1.0 ``` -* Install `dune` version 3.11.0, `menhir` version 20230608, `mdx` version 2.3.1, and `zarith` version 1.13, via `opam` (default versions) +* Install `dune` version 3.11.0, `menhir` version 20230608, `mdx` version 2.3.1, and `zarith` version 1.13, via `opam` ``` $ opam install dune menhir mdx zarith ``` From be6efe61029d5dd3c9d2bd93b7cfcf29bce12a9d Mon Sep 17 00:00:00 2001 From: Rao Xiaojia Date: Tue, 24 Mar 2026 01:40:29 -0700 Subject: [PATCH 102/235] [spectec] Fix subst_externtype matching on incorrect argument types (#2120) --- specification/wasm-3.0/1.2-syntax.types.spectec | 2 +- specification/wasm-latest/1.2-syntax.types.spectec | 2 +- spectec/test-frontend/TEST.md | 2 +- spectec/test-latex/TEST.md | 2 +- spectec/test-middlend/TEST.md | 6 +++--- spectec/test-prose/TEST.md | 8 ++++---- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/specification/wasm-3.0/1.2-syntax.types.spectec b/specification/wasm-3.0/1.2-syntax.types.spectec index b35461961..96acf96d8 100644 --- a/specification/wasm-3.0/1.2-syntax.types.spectec +++ b/specification/wasm-3.0/1.2-syntax.types.spectec @@ -421,7 +421,7 @@ def $subst_externtype((TAG jt), tv*, tu*) = TAG $subst_tagtype(jt, tv*, tu*) def $subst_externtype((GLOBAL gt), tv*, tu*) = GLOBAL $subst_globaltype(gt, tv*, tu*) def $subst_externtype((TABLE tt), tv*, tu*) = TABLE $subst_tabletype(tt, tv*, tu*) def $subst_externtype((MEM mt), tv*, tu*) = MEM $subst_memtype(mt, tv*, tu*) -def $subst_externtype((FUNC dt), tv*, tu*) = FUNC $subst_deftype(dt, tv*, tu*) +def $subst_externtype((FUNC tu'), tv*, tu*) = FUNC $subst_typeuse(tu', tv*, tu*) def $subst_moduletype(xt_1* -> xt_2*, tv*, tu*) = $subst_externtype(xt_1, tv*, tu*)* -> $subst_externtype(xt_2, tv*, tu*)* diff --git a/specification/wasm-latest/1.2-syntax.types.spectec b/specification/wasm-latest/1.2-syntax.types.spectec index b35461961..96acf96d8 100644 --- a/specification/wasm-latest/1.2-syntax.types.spectec +++ b/specification/wasm-latest/1.2-syntax.types.spectec @@ -421,7 +421,7 @@ def $subst_externtype((TAG jt), tv*, tu*) = TAG $subst_tagtype(jt, tv*, tu*) def $subst_externtype((GLOBAL gt), tv*, tu*) = GLOBAL $subst_globaltype(gt, tv*, tu*) def $subst_externtype((TABLE tt), tv*, tu*) = TABLE $subst_tabletype(tt, tv*, tu*) def $subst_externtype((MEM mt), tv*, tu*) = MEM $subst_memtype(mt, tv*, tu*) -def $subst_externtype((FUNC dt), tv*, tu*) = FUNC $subst_deftype(dt, tv*, tu*) +def $subst_externtype((FUNC tu'), tv*, tu*) = FUNC $subst_typeuse(tu', tv*, tu*) def $subst_moduletype(xt_1* -> xt_2*, tv*, tu*) = $subst_externtype(xt_1, tv*, tu*)* -> $subst_externtype(xt_2, tv*, tu*)* diff --git a/spectec/test-frontend/TEST.md b/spectec/test-frontend/TEST.md index 2dcddd885..23ae1351f 100644 --- a/spectec/test-frontend/TEST.md +++ b/spectec/test-frontend/TEST.md @@ -1281,7 +1281,7 @@ def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype ;; ../../../../specification/wasm-latest/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-latest/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)) + def $subst_externtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype(tu'), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype($subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype diff --git a/spectec/test-latex/TEST.md b/spectec/test-latex/TEST.md index 763ae1162..03f0af71a 100644 --- a/spectec/test-latex/TEST.md +++ b/spectec/test-latex/TEST.md @@ -3341,7 +3341,7 @@ $$ {(\mathsf{global}~{\mathit{gt}})}{{}[ {{\mathit{tv}}^\ast} := {{\mathit{tu}}^\ast} ]} & = & \mathsf{global}~{{\mathit{gt}}}{{}[ {{\mathit{tv}}^\ast} := {{\mathit{tu}}^\ast} ]} \\ {(\mathsf{table}~{\mathit{tt}})}{{}[ {{\mathit{tv}}^\ast} := {{\mathit{tu}}^\ast} ]} & = & \mathsf{table}~{{\mathit{tt}}}{{}[ {{\mathit{tv}}^\ast} := {{\mathit{tu}}^\ast} ]} \\ {(\mathsf{mem}~{\mathit{mt}})}{{}[ {{\mathit{tv}}^\ast} := {{\mathit{tu}}^\ast} ]} & = & \mathsf{mem}~{{\mathit{mt}}}{{}[ {{\mathit{tv}}^\ast} := {{\mathit{tu}}^\ast} ]} \\ -{(\mathsf{func}~{\mathit{dt}})}{{}[ {{\mathit{tv}}^\ast} := {{\mathit{tu}}^\ast} ]} & = & \mathsf{func}~{{\mathit{dt}}}{{}[ {{\mathit{tv}}^\ast} := {{\mathit{tu}}^\ast} ]} \\ +{(\mathsf{func}~{\mathit{tu}'})}{{}[ {{\mathit{tv}}^\ast} := {{\mathit{tu}}^\ast} ]} & = & \mathsf{func}~{{\mathit{tu}'}}{{}[ {{\mathit{tv}}^\ast} := {{\mathit{tu}}^\ast} ]} \\ \end{array} $$ diff --git a/spectec/test-middlend/TEST.md b/spectec/test-middlend/TEST.md index 261da39e2..dc5dd9de3 100644 --- a/spectec/test-middlend/TEST.md +++ b/spectec/test-middlend/TEST.md @@ -1271,7 +1271,7 @@ def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype ;; ../../../../specification/wasm-latest/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-latest/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)) + def $subst_externtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype(tu'), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype($subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype @@ -12683,7 +12683,7 @@ def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype ;; ../../../../specification/wasm-latest/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-latest/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)) + def $subst_externtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype(tu'), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype($subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype @@ -24097,7 +24097,7 @@ def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype ;; ../../../../specification/wasm-latest/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-latest/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)) + def $subst_externtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype(tu'), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype($subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype diff --git a/spectec/test-prose/TEST.md b/spectec/test-prose/TEST.md index 34fdf8a1d..52adee8fc 100644 --- a/spectec/test-prose/TEST.md +++ b/spectec/test-prose/TEST.md @@ -22321,9 +22321,9 @@ The instruction sequence :math:`(\mathsf{block}~{\mathit{blocktype}}~{{\mathit{i #. Assert: Due to validation, :math:`{\mathit{externtype}}` is some :math:`\mathsf{func}~{\mathit{typeuse}}`. -#. Let :math:`(\mathsf{func}~{\mathit{dt}})` be the destructuring of :math:`{\mathit{externtype}}`. +#. Let :math:`(\mathsf{func}~{\mathit{tu}'})` be the destructuring of :math:`{\mathit{externtype}}`. -#. Return :math:`(\mathsf{func}~{{\mathit{dt}}}{{}[ {{\mathit{tv}}^\ast} := {{\mathit{tu}}^\ast} ]})`. +#. Return :math:`(\mathsf{func}~{{\mathit{tu}'}}{{}[ {{\mathit{tv}}^\ast} := {{\mathit{tu}}^\ast} ]})`. :math:`{{{\mathit{xt}}_1^\ast}~\rightarrow~{{\mathit{xt}}_2^\ast}}{{}[ {{\mathit{tv}}^\ast} := {{\mathit{tu}}^\ast} ]}` @@ -31066,8 +31066,8 @@ subst_externtype externtype tv* tu* a. Let (MEM mt) be externtype. b. Return (MEM $subst_memtype(mt, tv*, tu*)). 5. Assert: Due to validation, externtype is some FUNC. -6. Let (FUNC dt) be externtype. -7. Return (FUNC $subst_deftype(dt, tv*, tu*)). +6. Let (FUNC tu') be externtype. +7. Return (FUNC $subst_typeuse(tu', tv*, tu*)). subst_moduletype xt_1* -> xt_2* tv* tu* 1. Return $subst_externtype(xt_1, tv*, tu*)* -> $subst_externtype(xt_2, tv*, tu*)*. From aaf9ffb788b1adfebd307d24e4e39306a68d4997 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Tue, 24 Mar 2026 11:40:00 +0100 Subject: [PATCH 103/235] [spectec] Make definition of state access nicer (#2036) --- specification/sync-wasm-latest.sh | 19 +- .../4.0-execution.configurations.spectec | 50 +++-- .../4.0-execution.configurations.spectec | 50 +++-- spectec/doc/example/output/NanoWasm.pdf | Bin 245508 -> 245508 bytes .../src/backend-interpreter/interpreter.ml | 4 + spectec/src/il2al/transpile.ml | 2 +- spectec/test-frontend/TEST.md | 54 +++-- spectec/test-latex/TEST.md | 56 +++-- spectec/test-middlend/TEST.md | 162 +++++++++------ spectec/test-prose/TEST.md | 196 ++++++++++-------- spectec/test-splice/TEST.md | 8 +- 11 files changed, 350 insertions(+), 251 deletions(-) diff --git a/specification/sync-wasm-latest.sh b/specification/sync-wasm-latest.sh index c7b5d4e4d..1e3790343 100644 --- a/specification/sync-wasm-latest.sh +++ b/specification/sync-wasm-latest.sh @@ -30,9 +30,14 @@ for FILE in $HIGHEST_FILES; do if [ ! -f "$LATEST/$FILE" ]; then echo "Added file $HIGHEST/$FILE" ((++HIGHEST_CHANGED)) - elif [ "$HIGHEST/$FILE" -nt "$LATEST/$FILE" ] && ! diff -q "$HIGHEST/$FILE" "$LATEST/$FILE" >/dev/null; then - echo "Modified file $HIGHEST/$FILE" - ((++HIGHEST_CHANGED)) + elif ! diff -q "$HIGHEST/$FILE" "$LATEST/$FILE" >/dev/null; then + if [ "$HIGHEST/$FILE" -nt "$LATEST/$FILE" ]; then + echo "Modified file $HIGHEST/$FILE" + ((++HIGHEST_CHANGED)) + elif ! [ "$HIGHEST/$FILE" -ot "$LATEST/$FILE" ]; then + echo "❌ Error: Changes in both $HIGHEST/$FILE and $LATEST/$FILE with same date." + exit 1 + fi fi done @@ -40,9 +45,11 @@ for FILE in $LATEST_FILES; do if [ ! -f "$HIGHEST/$FILE" ]; then echo "Added file $LATEST/$FILE" ((++LATEST_CHANGED)) - elif [ "$LATEST/$FILE" -nt "$HIGHEST/$FILE" ] && ! diff -q "$HIGHEST/$FILE" "$LATEST/$FILE" >/dev/null; then - echo "Modified file $LATEST/$FILE" - ((++LATEST_CHANGED)) + elif ! diff -q "$HIGHEST/$FILE" "$LATEST/$FILE" >/dev/null; then + if [ "$LATEST/$FILE" -nt "$HIGHEST/$FILE" ]; then + echo "Modified file $LATEST/$FILE" + ((++LATEST_CHANGED)) + fi fi done diff --git a/specification/wasm-3.0/4.0-execution.configurations.spectec b/specification/wasm-3.0/4.0-execution.configurations.spectec index 1a1a6b224..fe794ce21 100644 --- a/specification/wasm-3.0/4.0-execution.configurations.spectec +++ b/specification/wasm-3.0/4.0-execution.configurations.spectec @@ -260,15 +260,21 @@ def $data(state, dataidx) : datainst hint(show %.DATAS[%]) hint(macro " def $elem(state, tableidx) : eleminst hint(show %.ELEMS[%]) hint(macro "Z%") def $local(state, localidx) : val? hint(show %.LOCALS[%]) hint(macro "Z%") -def $type((s; f), x) = f.MODULE.TYPES[x] -def $tag((s; f), x) = s.TAGS[f.MODULE.TAGS[x]] -def $global((s; f), x) = s.GLOBALS[f.MODULE.GLOBALS[x]] -def $mem((s; f), x) = s.MEMS[f.MODULE.MEMS[x]] -def $table((s; f), x) = s.TABLES[f.MODULE.TABLES[x]] -def $func((s; f), x) = s.FUNCS[f.MODULE.FUNCS[x]] -def $data((s; f), x) = s.DATAS[f.MODULE.DATAS[x]] -def $elem((s; f), x) = s.ELEMS[f.MODULE.ELEMS[x]] -def $local((s; f), x) = f.LOCALS[x] +def $sof(state) : store hint(show s) +def $fof(state) : frame hint(show f) + +def $sof(z) = $store(z) +def $fof(z) = $frame(z) + +def $type(z, x) = $fof(z).MODULE.TYPES[x] +def $tag(z, x) = $sof(z).TAGS[$fof(z).MODULE.TAGS[x]] +def $global(z, x) = $sof(z).GLOBALS[$fof(z).MODULE.GLOBALS[x]] +def $mem(z, x) = $sof(z).MEMS[$fof(z).MODULE.MEMS[x]] +def $table(z, x) = $sof(z).TABLES[$fof(z).MODULE.TABLES[x]] +def $func(z, x) = $sof(z).FUNCS[$fof(z).MODULE.FUNCS[x]] +def $data(z, x) = $sof(z).DATAS[$fof(z).MODULE.DATAS[x]] +def $elem(z, x) = $sof(z).ELEMS[$fof(z).MODULE.ELEMS[x]] +def $local(z, x) = $fof(z).LOCALS[x] ;; State update @@ -284,25 +290,25 @@ def $with_data(state, dataidx, byte*) : state hint(show %[.DATAS[% def $with_struct(state, structaddr, nat, fieldval) : state hint(show %[.STRUCTS[%].FIELDS[%] = %]) hint(macro "ZS%") hint(prose "Replace" $structinst(%1)[%2].FIELDS[%3] "with" %4) def $with_array(state, arrayaddr, nat, fieldval) : state hint(show %[.ARRAYS[%].FIELDS[%] = %]) hint(macro "ZA%") hint(prose "Replace" $arrayinst(%1)[%2].FIELDS[%3] "with" %4) -def $with_local((s; f), x, v) = s; f[.LOCALS[x] = v] -def $with_global((s; f), x, v) = s[.GLOBALS[f.MODULE.GLOBALS[x]].VALUE = v]; f -def $with_table((s; f), x, i, r) = s[.TABLES[f.MODULE.TABLES[x]].REFS[i] = r]; f -def $with_tableinst((s; f), x, ti) = s[.TABLES[f.MODULE.TABLES[x]] = ti]; f -def $with_mem((s; f), x, i, j, b*) = s[.MEMS[f.MODULE.MEMS[x]].BYTES[i : j] = b*]; f -def $with_meminst((s; f), x, mi) = s[.MEMS[f.MODULE.MEMS[x]] = mi]; f -def $with_elem((s; f), x, r*) = s[.ELEMS[f.MODULE.ELEMS[x]].REFS = r*]; f -def $with_data((s; f), x, b*) = s[.DATAS[f.MODULE.DATAS[x]].BYTES = b*]; f -def $with_struct((s; f), a, i, fv) = s[.STRUCTS[a].FIELDS[i] = fv]; f -def $with_array((s; f), a, i, fv) = s[.ARRAYS[a].FIELDS[i] = fv]; f +def $with_local(z, x, v) = $sof(z); $fof(z)[.LOCALS[x] = v] +def $with_global(z, x, v) = $sof(z)[.GLOBALS[$fof(z).MODULE.GLOBALS[x]].VALUE = v]; $fof(z) +def $with_table(z, x, i, r) = $sof(z)[.TABLES[$fof(z).MODULE.TABLES[x]].REFS[i] = r]; $fof(z) +def $with_tableinst(z, x, ti) = $sof(z)[.TABLES[$fof(z).MODULE.TABLES[x]] = ti]; $fof(z) +def $with_mem(z, x, i, j, b*) = $sof(z)[.MEMS[$fof(z).MODULE.MEMS[x]].BYTES[i : j] = b*]; $fof(z) +def $with_meminst(z, x, mi) = $sof(z)[.MEMS[$fof(z).MODULE.MEMS[x]] = mi]; $fof(z) +def $with_elem(z, x, r*) = $sof(z)[.ELEMS[$fof(z).MODULE.ELEMS[x]].REFS = r*]; $fof(z) +def $with_data(z, x, b*) = $sof(z)[.DATAS[$fof(z).MODULE.DATAS[x]].BYTES = b*]; $fof(z) +def $with_struct(z, a, i, fv) = $sof(z)[.STRUCTS[a].FIELDS[i] = fv]; $fof(z) +def $with_array(z, a, i, fv) = $sof(z)[.ARRAYS[a].FIELDS[i] = fv]; $fof(z) def $add_structinst(state, structinst*) : state hint(show %[.STRUCTS =++ %]) hint(macro "Z%") hint(prose "Append" %2 "to" $structinst(%1)) def $add_arrayinst(state, arrayinst*) : state hint(show %[.ARRAYS =++ %]) hint(macro "Z%") hint(prose "Append" %2 "to" $arrayinst(%1)) def $add_exninst(state, exninst*) : state hint(show %[.EXNS =++ %]) hint(macro "Z%") hint(prose "Append" %2 "to" $exninst(%1)) -def $add_structinst((s; f), si*) = s[.STRUCTS =++ si*]; f -def $add_arrayinst((s; f), ai*) = s[.ARRAYS =++ ai*]; f -def $add_exninst((s; f), exn*) = s[.EXNS =++ exn*]; f +def $add_structinst(z, si*) = $sof(z)[.STRUCTS =++ si*]; $fof(z) +def $add_arrayinst(z, ai*) = $sof(z)[.ARRAYS =++ ai*]; $fof(z) +def $add_exninst(z, exn*) = $sof(z)[.EXNS =++ exn*]; $fof(z) ;; Growing diff --git a/specification/wasm-latest/4.0-execution.configurations.spectec b/specification/wasm-latest/4.0-execution.configurations.spectec index 1a1a6b224..fe794ce21 100644 --- a/specification/wasm-latest/4.0-execution.configurations.spectec +++ b/specification/wasm-latest/4.0-execution.configurations.spectec @@ -260,15 +260,21 @@ def $data(state, dataidx) : datainst hint(show %.DATAS[%]) hint(macro " def $elem(state, tableidx) : eleminst hint(show %.ELEMS[%]) hint(macro "Z%") def $local(state, localidx) : val? hint(show %.LOCALS[%]) hint(macro "Z%") -def $type((s; f), x) = f.MODULE.TYPES[x] -def $tag((s; f), x) = s.TAGS[f.MODULE.TAGS[x]] -def $global((s; f), x) = s.GLOBALS[f.MODULE.GLOBALS[x]] -def $mem((s; f), x) = s.MEMS[f.MODULE.MEMS[x]] -def $table((s; f), x) = s.TABLES[f.MODULE.TABLES[x]] -def $func((s; f), x) = s.FUNCS[f.MODULE.FUNCS[x]] -def $data((s; f), x) = s.DATAS[f.MODULE.DATAS[x]] -def $elem((s; f), x) = s.ELEMS[f.MODULE.ELEMS[x]] -def $local((s; f), x) = f.LOCALS[x] +def $sof(state) : store hint(show s) +def $fof(state) : frame hint(show f) + +def $sof(z) = $store(z) +def $fof(z) = $frame(z) + +def $type(z, x) = $fof(z).MODULE.TYPES[x] +def $tag(z, x) = $sof(z).TAGS[$fof(z).MODULE.TAGS[x]] +def $global(z, x) = $sof(z).GLOBALS[$fof(z).MODULE.GLOBALS[x]] +def $mem(z, x) = $sof(z).MEMS[$fof(z).MODULE.MEMS[x]] +def $table(z, x) = $sof(z).TABLES[$fof(z).MODULE.TABLES[x]] +def $func(z, x) = $sof(z).FUNCS[$fof(z).MODULE.FUNCS[x]] +def $data(z, x) = $sof(z).DATAS[$fof(z).MODULE.DATAS[x]] +def $elem(z, x) = $sof(z).ELEMS[$fof(z).MODULE.ELEMS[x]] +def $local(z, x) = $fof(z).LOCALS[x] ;; State update @@ -284,25 +290,25 @@ def $with_data(state, dataidx, byte*) : state hint(show %[.DATAS[% def $with_struct(state, structaddr, nat, fieldval) : state hint(show %[.STRUCTS[%].FIELDS[%] = %]) hint(macro "ZS%") hint(prose "Replace" $structinst(%1)[%2].FIELDS[%3] "with" %4) def $with_array(state, arrayaddr, nat, fieldval) : state hint(show %[.ARRAYS[%].FIELDS[%] = %]) hint(macro "ZA%") hint(prose "Replace" $arrayinst(%1)[%2].FIELDS[%3] "with" %4) -def $with_local((s; f), x, v) = s; f[.LOCALS[x] = v] -def $with_global((s; f), x, v) = s[.GLOBALS[f.MODULE.GLOBALS[x]].VALUE = v]; f -def $with_table((s; f), x, i, r) = s[.TABLES[f.MODULE.TABLES[x]].REFS[i] = r]; f -def $with_tableinst((s; f), x, ti) = s[.TABLES[f.MODULE.TABLES[x]] = ti]; f -def $with_mem((s; f), x, i, j, b*) = s[.MEMS[f.MODULE.MEMS[x]].BYTES[i : j] = b*]; f -def $with_meminst((s; f), x, mi) = s[.MEMS[f.MODULE.MEMS[x]] = mi]; f -def $with_elem((s; f), x, r*) = s[.ELEMS[f.MODULE.ELEMS[x]].REFS = r*]; f -def $with_data((s; f), x, b*) = s[.DATAS[f.MODULE.DATAS[x]].BYTES = b*]; f -def $with_struct((s; f), a, i, fv) = s[.STRUCTS[a].FIELDS[i] = fv]; f -def $with_array((s; f), a, i, fv) = s[.ARRAYS[a].FIELDS[i] = fv]; f +def $with_local(z, x, v) = $sof(z); $fof(z)[.LOCALS[x] = v] +def $with_global(z, x, v) = $sof(z)[.GLOBALS[$fof(z).MODULE.GLOBALS[x]].VALUE = v]; $fof(z) +def $with_table(z, x, i, r) = $sof(z)[.TABLES[$fof(z).MODULE.TABLES[x]].REFS[i] = r]; $fof(z) +def $with_tableinst(z, x, ti) = $sof(z)[.TABLES[$fof(z).MODULE.TABLES[x]] = ti]; $fof(z) +def $with_mem(z, x, i, j, b*) = $sof(z)[.MEMS[$fof(z).MODULE.MEMS[x]].BYTES[i : j] = b*]; $fof(z) +def $with_meminst(z, x, mi) = $sof(z)[.MEMS[$fof(z).MODULE.MEMS[x]] = mi]; $fof(z) +def $with_elem(z, x, r*) = $sof(z)[.ELEMS[$fof(z).MODULE.ELEMS[x]].REFS = r*]; $fof(z) +def $with_data(z, x, b*) = $sof(z)[.DATAS[$fof(z).MODULE.DATAS[x]].BYTES = b*]; $fof(z) +def $with_struct(z, a, i, fv) = $sof(z)[.STRUCTS[a].FIELDS[i] = fv]; $fof(z) +def $with_array(z, a, i, fv) = $sof(z)[.ARRAYS[a].FIELDS[i] = fv]; $fof(z) def $add_structinst(state, structinst*) : state hint(show %[.STRUCTS =++ %]) hint(macro "Z%") hint(prose "Append" %2 "to" $structinst(%1)) def $add_arrayinst(state, arrayinst*) : state hint(show %[.ARRAYS =++ %]) hint(macro "Z%") hint(prose "Append" %2 "to" $arrayinst(%1)) def $add_exninst(state, exninst*) : state hint(show %[.EXNS =++ %]) hint(macro "Z%") hint(prose "Append" %2 "to" $exninst(%1)) -def $add_structinst((s; f), si*) = s[.STRUCTS =++ si*]; f -def $add_arrayinst((s; f), ai*) = s[.ARRAYS =++ ai*]; f -def $add_exninst((s; f), exn*) = s[.EXNS =++ exn*]; f +def $add_structinst(z, si*) = $sof(z)[.STRUCTS =++ si*]; $fof(z) +def $add_arrayinst(z, ai*) = $sof(z)[.ARRAYS =++ ai*]; $fof(z) +def $add_exninst(z, exn*) = $sof(z)[.EXNS =++ exn*]; $fof(z) ;; Growing diff --git a/spectec/doc/example/output/NanoWasm.pdf b/spectec/doc/example/output/NanoWasm.pdf index 102857f978dd80286b7546e74712f2f8fa4a82d4..1341c39ec48ab868e1b9b70d1b46c7e647dcd88f 100644 GIT binary patch delta 145 zcmZqq$Jg?YZ-b_=;Kx@Y9A~mKH8fCPs#CM&^d*=59`=7M8|F&UOkm Ngp_Q5znfW<82}3cD>ncD diff --git a/spectec/src/backend-interpreter/interpreter.ml b/spectec/src/backend-interpreter/interpreter.ml index 945a05db0..532dd79a7 100644 --- a/spectec/src/backend-interpreter/interpreter.ml +++ b/spectec/src/backend-interpreter/interpreter.ml @@ -359,6 +359,7 @@ and eval_expr env expr = fail_expr expr (sprintf "cannot choose an element from %s because it's empty" (string_of_expr e)) else Array.get a 0 + (* HARDCODE: The variable s is always assumed to be the implicit store *) | VarE "s" -> Store.get () | VarE name -> lookup_env name env (* Optimized getter for simple IterE(VarE, ...) *) @@ -796,6 +797,9 @@ and create_context (name: string) (args: value list) : AlContext.mode = AlContext.al (name, params, body, env, 0) and call_func (name: string) (args: value list) : value option = + (* HARDCODE: Calling the function named `store` is always implicitly assumed to be the getting the global store, as if the variable named `s`. *) + if name = "store" then Some (Store.get ()) else + let builtin_name, is_builtin = match find_hint name "builtin" with | None -> name, false diff --git a/spectec/src/il2al/transpile.ml b/spectec/src/il2al/transpile.ml index 14c5dca0d..38dd5b72a 100644 --- a/spectec/src/il2al/transpile.ml +++ b/spectec/src/il2al/transpile.ml @@ -1025,7 +1025,7 @@ let hide_state instr = let access = { (mk_access ps s) with note } in [ appendI (access, e) ~at:at ] (* Return *) - | ReturnI (Some e) when is_state e || is_store e -> [ returnI None ~at:at ] + | ReturnI (Some ({it = VarE _; _} as e)) when is_state e || is_store e -> [ returnI None ~at:at ] | _ -> [ instr ] let remove_state algo = diff --git a/spectec/test-frontend/TEST.md b/spectec/test-frontend/TEST.md index 23ae1351f..5f4f7ee17 100644 --- a/spectec/test-frontend/TEST.md +++ b/spectec/test-frontend/TEST.md @@ -5696,115 +5696,125 @@ def $exninst(state : state) : exninst* ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $exninst{s : store, f : frame}(`%;%`_state(s, f)) = s.EXNS_store +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec +def $fof(state : state) : frame + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec + def $fof{z : state}(z) = $frame(z) + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $type(state : state, typeidx : typeidx) : deftype ;; ../../../../specification/wasm-latest/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] + def $type{z : state, x : idx}(z, x) = $fof(z).MODULE_frame.TYPES_moduleinst[x!`%`_idx.0] + +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec +def $sof(state : state) : store + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec + def $sof{z : state}(z) = $store(z) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $tag(state : state, tagidx : tagidx) : taginst ;; ../../../../specification/wasm-latest/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]] + def $tag{z : state, x : idx}(z, x) = $sof(z).TAGS_store[$fof(z).MODULE_frame.TAGS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $global(state : state, globalidx : globalidx) : globalinst ;; ../../../../specification/wasm-latest/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]] + def $global{z : state, x : idx}(z, x) = $sof(z).GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $mem(state : state, memidx : memidx) : meminst ;; ../../../../specification/wasm-latest/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]] + def $mem{z : state, x : idx}(z, x) = $sof(z).MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $table(state : state, tableidx : tableidx) : tableinst ;; ../../../../specification/wasm-latest/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]] + def $table{z : state, x : idx}(z, x) = $sof(z).TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $func(state : state, funcidx : funcidx) : funcinst ;; ../../../../specification/wasm-latest/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]] + def $func{z : state, x : idx}(z, x) = $sof(z).FUNCS_store[$fof(z).MODULE_frame.FUNCS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $data(state : state, dataidx : dataidx) : datainst ;; ../../../../specification/wasm-latest/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]] + def $data{z : state, x : idx}(z, x) = $sof(z).DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $elem(state : state, tableidx : tableidx) : eleminst ;; ../../../../specification/wasm-latest/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]] + def $elem{z : state, x : idx}(z, x) = $sof(z).ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $local(state : state, localidx : localidx) : val? ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec - def $local{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = f.LOCALS_frame[x!`%`_idx.0] + def $local{z : state, x : idx}(z, x) = $fof(z).LOCALS_frame[x!`%`_idx.0] ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_local(state : state, localidx : localidx, val : val) : state ;; ../../../../specification/wasm-latest/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)]) + def $with_local{z : state, x : idx, v : val}(z, x, v) = `%;%`_state($sof(z), $fof(z)[LOCALS_frame[x!`%`_idx.0] = ?(v)]) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_global(state : state, globalidx : globalidx, val : val) : state ;; ../../../../specification/wasm-latest/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) + def $with_global{z : state, x : idx, v : val}(z, x, v) = `%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[x!`%`_idx.0]].VALUE_globalinst = v], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state ;; ../../../../specification/wasm-latest/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) + def $with_table{z : state, x : idx, i : nat, r : ref}(z, x, i, r) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]].REFS_tableinst[i] = r], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state ;; ../../../../specification/wasm-latest/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) + def $with_tableinst{z : state, x : idx, ti : tableinst}(z, x, ti) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]] = ti], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state ;; ../../../../specification/wasm-latest/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) + def $with_mem{z : state, x : idx, i : nat, j : nat, `b*` : byte*}(z, x, i, j, b*{b <- `b*`}) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]].BYTES_meminst[i : j] = b*{b <- `b*`}], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state ;; ../../../../specification/wasm-latest/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) + def $with_meminst{z : state, x : idx, mi : meminst}(z, x, mi) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]] = mi], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_elem(state : state, elemidx : elemidx, ref*) : state ;; ../../../../specification/wasm-latest/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) + def $with_elem{z : state, x : idx, `r*` : ref*}(z, x, r*{r <- `r*`}) = `%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[x!`%`_idx.0]].REFS_eleminst = r*{r <- `r*`}], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_data(state : state, dataidx : dataidx, byte*) : state ;; ../../../../specification/wasm-latest/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) + def $with_data{z : state, x : idx, `b*` : byte*}(z, x, b*{b <- `b*`}) = `%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[x!`%`_idx.0]].BYTES_datainst = b*{b <- `b*`}], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-latest/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) + def $with_struct{z : state, a : addr, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-latest/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) + def $with_array{z : state, a : addr, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $add_structinst(state : state, structinst*) : state ;; ../../../../specification/wasm-latest/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) + def $add_structinst{z : state, `si*` : structinst*}(z, si*{si <- `si*`}) = `%;%`_state($sof(z)[STRUCTS_store =++ si*{si <- `si*`}], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $add_arrayinst(state : state, arrayinst*) : state ;; ../../../../specification/wasm-latest/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) + def $add_arrayinst{z : state, `ai*` : arrayinst*}(z, ai*{ai <- `ai*`}) = `%;%`_state($sof(z)[ARRAYS_store =++ ai*{ai <- `ai*`}], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $add_exninst(state : state, exninst*) : state ;; ../../../../specification/wasm-latest/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) + def $add_exninst{z : state, `exn*` : exninst*}(z, exn*{exn <- `exn*`}) = `%;%`_state($sof(z)[EXNS_store =++ exn*{exn <- `exn*`}], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst diff --git a/spectec/test-latex/TEST.md b/spectec/test-latex/TEST.md index 03f0af71a..cecc9e342 100644 --- a/spectec/test-latex/TEST.md +++ b/spectec/test-latex/TEST.md @@ -9159,55 +9159,67 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){.}\mathsf{types}{}[x] & = & f{.}\mathsf{module}{.}\mathsf{types}{}[x] \\ +s & = & z{.}\mathsf{store} \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){.}\mathsf{tags}{}[x] & = & s{.}\mathsf{tags}{}[f{.}\mathsf{module}{.}\mathsf{tags}{}[x]] \\ +f & = & z{.}\mathsf{frame} \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){.}\mathsf{globals}{}[x] & = & s{.}\mathsf{globals}{}[f{.}\mathsf{module}{.}\mathsf{globals}{}[x]] \\ +z{.}\mathsf{types}{}[x] & = & f{.}\mathsf{module}{.}\mathsf{types}{}[x] \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){.}\mathsf{mems}{}[x] & = & s{.}\mathsf{mems}{}[f{.}\mathsf{module}{.}\mathsf{mems}{}[x]] \\ +z{.}\mathsf{tags}{}[x] & = & s{.}\mathsf{tags}{}[f{.}\mathsf{module}{.}\mathsf{tags}{}[x]] \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){.}\mathsf{tables}{}[x] & = & s{.}\mathsf{tables}{}[f{.}\mathsf{module}{.}\mathsf{tables}{}[x]] \\ +z{.}\mathsf{globals}{}[x] & = & s{.}\mathsf{globals}{}[f{.}\mathsf{module}{.}\mathsf{globals}{}[x]] \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){.}\mathsf{funcs}{}[x] & = & s{.}\mathsf{funcs}{}[f{.}\mathsf{module}{.}\mathsf{funcs}{}[x]] \\ +z{.}\mathsf{mems}{}[x] & = & s{.}\mathsf{mems}{}[f{.}\mathsf{module}{.}\mathsf{mems}{}[x]] \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){.}\mathsf{datas}{}[x] & = & s{.}\mathsf{datas}{}[f{.}\mathsf{module}{.}\mathsf{datas}{}[x]] \\ +z{.}\mathsf{tables}{}[x] & = & s{.}\mathsf{tables}{}[f{.}\mathsf{module}{.}\mathsf{tables}{}[x]] \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){.}\mathsf{elems}{}[x] & = & s{.}\mathsf{elems}{}[f{.}\mathsf{module}{.}\mathsf{elems}{}[x]] \\ +z{.}\mathsf{funcs}{}[x] & = & s{.}\mathsf{funcs}{}[f{.}\mathsf{module}{.}\mathsf{funcs}{}[x]] \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){.}\mathsf{locals}{}[x] & = & f{.}\mathsf{locals}{}[x] \\ +z{.}\mathsf{datas}{}[x] & = & s{.}\mathsf{datas}{}[f{.}\mathsf{module}{.}\mathsf{datas}{}[x]] \\ +\end{array} +$$ + +$$ +\begin{array}[t]{@{}lcl@{}l@{}} +z{.}\mathsf{elems}{}[x] & = & s{.}\mathsf{elems}{}[f{.}\mathsf{module}{.}\mathsf{elems}{}[x]] \\ +\end{array} +$$ + +$$ +\begin{array}[t]{@{}lcl@{}l@{}} +z{.}\mathsf{locals}{}[x] & = & f{.}\mathsf{locals}{}[x] \\ \end{array} $$ @@ -9215,61 +9227,61 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){}[{.}\mathsf{locals}{}[x] = v] & = & s ; f{}[{.}\mathsf{locals}{}[x] = v] \\ +z{}[{.}\mathsf{locals}{}[x] = v] & = & s ; f{}[{.}\mathsf{locals}{}[x] = v] \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){}[{.}\mathsf{globals}{}[x]{.}\mathsf{value} = v] & = & s{}[{.}\mathsf{globals}{}[f{.}\mathsf{module}{.}\mathsf{globals}{}[x]]{.}\mathsf{value} = v] ; f \\ +z{}[{.}\mathsf{globals}{}[x]{.}\mathsf{value} = v] & = & s{}[{.}\mathsf{globals}{}[f{.}\mathsf{module}{.}\mathsf{globals}{}[x]]{.}\mathsf{value} = v] ; f \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){}[{.}\mathsf{tables}{}[x]{.}\mathsf{refs}{}[i] = r] & = & s{}[{.}\mathsf{tables}{}[f{.}\mathsf{module}{.}\mathsf{tables}{}[x]]{.}\mathsf{refs}{}[i] = r] ; f \\ +z{}[{.}\mathsf{tables}{}[x]{.}\mathsf{refs}{}[i] = r] & = & s{}[{.}\mathsf{tables}{}[f{.}\mathsf{module}{.}\mathsf{tables}{}[x]]{.}\mathsf{refs}{}[i] = r] ; f \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){}[{.}\mathsf{tables}{}[x] = {\mathit{ti}}] & = & s{}[{.}\mathsf{tables}{}[f{.}\mathsf{module}{.}\mathsf{tables}{}[x]] = {\mathit{ti}}] ; f \\ +z{}[{.}\mathsf{tables}{}[x] = {\mathit{ti}}] & = & s{}[{.}\mathsf{tables}{}[f{.}\mathsf{module}{.}\mathsf{tables}{}[x]] = {\mathit{ti}}] ; f \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){}[{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}{}[i : j] = {b^\ast}] & = & s{}[{.}\mathsf{mems}{}[f{.}\mathsf{module}{.}\mathsf{mems}{}[x]]{.}\mathsf{bytes}{}[i : j] = {b^\ast}] ; f \\ +z{}[{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}{}[i : j] = {b^\ast}] & = & s{}[{.}\mathsf{mems}{}[f{.}\mathsf{module}{.}\mathsf{mems}{}[x]]{.}\mathsf{bytes}{}[i : j] = {b^\ast}] ; f \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){}[{.}\mathsf{mems}{}[x] = {\mathit{mi}}] & = & s{}[{.}\mathsf{mems}{}[f{.}\mathsf{module}{.}\mathsf{mems}{}[x]] = {\mathit{mi}}] ; f \\ +z{}[{.}\mathsf{mems}{}[x] = {\mathit{mi}}] & = & s{}[{.}\mathsf{mems}{}[f{.}\mathsf{module}{.}\mathsf{mems}{}[x]] = {\mathit{mi}}] ; f \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){}[{.}\mathsf{elems}{}[x]{.}\mathsf{refs} = {r^\ast}] & = & s{}[{.}\mathsf{elems}{}[f{.}\mathsf{module}{.}\mathsf{elems}{}[x]]{.}\mathsf{refs} = {r^\ast}] ; f \\ +z{}[{.}\mathsf{elems}{}[x]{.}\mathsf{refs} = {r^\ast}] & = & s{}[{.}\mathsf{elems}{}[f{.}\mathsf{module}{.}\mathsf{elems}{}[x]]{.}\mathsf{refs} = {r^\ast}] ; f \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){}[{.}\mathsf{datas}{}[x]{.}\mathsf{bytes} = {b^\ast}] & = & s{}[{.}\mathsf{datas}{}[f{.}\mathsf{module}{.}\mathsf{datas}{}[x]]{.}\mathsf{bytes} = {b^\ast}] ; f \\ +z{}[{.}\mathsf{datas}{}[x]{.}\mathsf{bytes} = {b^\ast}] & = & s{}[{.}\mathsf{datas}{}[f{.}\mathsf{module}{.}\mathsf{datas}{}[x]]{.}\mathsf{bytes} = {b^\ast}] ; f \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){}[{.}\mathsf{structs}{}[a]{.}\mathsf{fields}{}[i] = {\mathit{fv}}] & = & s{}[{.}\mathsf{structs}{}[a]{.}\mathsf{fields}{}[i] = {\mathit{fv}}] ; f \\ +z{}[{.}\mathsf{structs}{}[a]{.}\mathsf{fields}{}[i] = {\mathit{fv}}] & = & s{}[{.}\mathsf{structs}{}[a]{.}\mathsf{fields}{}[i] = {\mathit{fv}}] ; f \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){}[{.}\mathsf{arrays}{}[a]{.}\mathsf{fields}{}[i] = {\mathit{fv}}] & = & s{}[{.}\mathsf{arrays}{}[a]{.}\mathsf{fields}{}[i] = {\mathit{fv}}] ; f \\ +z{}[{.}\mathsf{arrays}{}[a]{.}\mathsf{fields}{}[i] = {\mathit{fv}}] & = & s{}[{.}\mathsf{arrays}{}[a]{.}\mathsf{fields}{}[i] = {\mathit{fv}}] ; f \\ \end{array} $$ @@ -9277,19 +9289,19 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){}[{.}\mathsf{structs} \mathrel{{=}{\oplus}} {{\mathit{si}}^\ast}] & = & s{}[{.}\mathsf{structs} \mathrel{{=}{\oplus}} {{\mathit{si}}^\ast}] ; f \\ +z{}[{.}\mathsf{structs} \mathrel{{=}{\oplus}} {{\mathit{si}}^\ast}] & = & s{}[{.}\mathsf{structs} \mathrel{{=}{\oplus}} {{\mathit{si}}^\ast}] ; f \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){}[{.}\mathsf{arrays} \mathrel{{=}{\oplus}} {{\mathit{ai}}^\ast}] & = & s{}[{.}\mathsf{arrays} \mathrel{{=}{\oplus}} {{\mathit{ai}}^\ast}] ; f \\ +z{}[{.}\mathsf{arrays} \mathrel{{=}{\oplus}} {{\mathit{ai}}^\ast}] & = & s{}[{.}\mathsf{arrays} \mathrel{{=}{\oplus}} {{\mathit{ai}}^\ast}] ; f \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){}[{.}\mathsf{exns} \mathrel{{=}{\oplus}} {{\mathit{exn}}^\ast}] & = & s{}[{.}\mathsf{exns} \mathrel{{=}{\oplus}} {{\mathit{exn}}^\ast}] ; f \\ +z{}[{.}\mathsf{exns} \mathrel{{=}{\oplus}} {{\mathit{exn}}^\ast}] & = & s{}[{.}\mathsf{exns} \mathrel{{=}{\oplus}} {{\mathit{exn}}^\ast}] ; f \\ \end{array} $$ diff --git a/spectec/test-middlend/TEST.md b/spectec/test-middlend/TEST.md index dc5dd9de3..58b31cf99 100644 --- a/spectec/test-middlend/TEST.md +++ b/spectec/test-middlend/TEST.md @@ -5686,115 +5686,125 @@ def $exninst(state : state) : exninst* ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $exninst{s : store, f : frame}(`%;%`_state(s, f)) = s.EXNS_store +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec +def $fof(state : state) : frame + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec + def $fof{z : state}(z) = $frame(z) + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $type(state : state, typeidx : typeidx) : deftype ;; ../../../../specification/wasm-latest/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] + def $type{z : state, x : idx}(z, x) = $fof(z).MODULE_frame.TYPES_moduleinst[x!`%`_idx.0] + +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec +def $sof(state : state) : store + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec + def $sof{z : state}(z) = $store(z) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $tag(state : state, tagidx : tagidx) : taginst ;; ../../../../specification/wasm-latest/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]] + def $tag{z : state, x : idx}(z, x) = $sof(z).TAGS_store[$fof(z).MODULE_frame.TAGS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $global(state : state, globalidx : globalidx) : globalinst ;; ../../../../specification/wasm-latest/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]] + def $global{z : state, x : idx}(z, x) = $sof(z).GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $mem(state : state, memidx : memidx) : meminst ;; ../../../../specification/wasm-latest/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]] + def $mem{z : state, x : idx}(z, x) = $sof(z).MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $table(state : state, tableidx : tableidx) : tableinst ;; ../../../../specification/wasm-latest/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]] + def $table{z : state, x : idx}(z, x) = $sof(z).TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $func(state : state, funcidx : funcidx) : funcinst ;; ../../../../specification/wasm-latest/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]] + def $func{z : state, x : idx}(z, x) = $sof(z).FUNCS_store[$fof(z).MODULE_frame.FUNCS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $data(state : state, dataidx : dataidx) : datainst ;; ../../../../specification/wasm-latest/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]] + def $data{z : state, x : idx}(z, x) = $sof(z).DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $elem(state : state, tableidx : tableidx) : eleminst ;; ../../../../specification/wasm-latest/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]] + def $elem{z : state, x : idx}(z, x) = $sof(z).ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $local(state : state, localidx : localidx) : val? ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec - def $local{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = f.LOCALS_frame[x!`%`_idx.0] + def $local{z : state, x : idx}(z, x) = $fof(z).LOCALS_frame[x!`%`_idx.0] ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_local(state : state, localidx : localidx, val : val) : state ;; ../../../../specification/wasm-latest/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)]) + def $with_local{z : state, x : idx, v : val}(z, x, v) = `%;%`_state($sof(z), $fof(z)[LOCALS_frame[x!`%`_idx.0] = ?(v)]) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_global(state : state, globalidx : globalidx, val : val) : state ;; ../../../../specification/wasm-latest/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) + def $with_global{z : state, x : idx, v : val}(z, x, v) = `%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[x!`%`_idx.0]].VALUE_globalinst = v], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state ;; ../../../../specification/wasm-latest/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) + def $with_table{z : state, x : idx, i : nat, r : ref}(z, x, i, r) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]].REFS_tableinst[i] = r], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state ;; ../../../../specification/wasm-latest/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) + def $with_tableinst{z : state, x : idx, ti : tableinst}(z, x, ti) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]] = ti], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state ;; ../../../../specification/wasm-latest/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) + def $with_mem{z : state, x : idx, i : nat, j : nat, `b*` : byte*}(z, x, i, j, b*{b <- `b*`}) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]].BYTES_meminst[i : j] = b*{b <- `b*`}], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state ;; ../../../../specification/wasm-latest/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) + def $with_meminst{z : state, x : idx, mi : meminst}(z, x, mi) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]] = mi], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_elem(state : state, elemidx : elemidx, ref*) : state ;; ../../../../specification/wasm-latest/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) + def $with_elem{z : state, x : idx, `r*` : ref*}(z, x, r*{r <- `r*`}) = `%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[x!`%`_idx.0]].REFS_eleminst = r*{r <- `r*`}], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_data(state : state, dataidx : dataidx, byte*) : state ;; ../../../../specification/wasm-latest/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) + def $with_data{z : state, x : idx, `b*` : byte*}(z, x, b*{b <- `b*`}) = `%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[x!`%`_idx.0]].BYTES_datainst = b*{b <- `b*`}], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-latest/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) + def $with_struct{z : state, a : addr, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-latest/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) + def $with_array{z : state, a : addr, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $add_structinst(state : state, structinst*) : state ;; ../../../../specification/wasm-latest/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) + def $add_structinst{z : state, `si*` : structinst*}(z, si*{si <- `si*`}) = `%;%`_state($sof(z)[STRUCTS_store =++ si*{si <- `si*`}], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $add_arrayinst(state : state, arrayinst*) : state ;; ../../../../specification/wasm-latest/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) + def $add_arrayinst{z : state, `ai*` : arrayinst*}(z, ai*{ai <- `ai*`}) = `%;%`_state($sof(z)[ARRAYS_store =++ ai*{ai <- `ai*`}], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $add_exninst(state : state, exninst*) : state ;; ../../../../specification/wasm-latest/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) + def $add_exninst{z : state, `exn*` : exninst*}(z, exn*{exn <- `exn*`}) = `%;%`_state($sof(z)[EXNS_store =++ exn*{exn <- `exn*`}], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst @@ -17098,115 +17108,125 @@ def $exninst(state : state) : exninst* ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $exninst{s : store, f : frame}(`%;%`_state(s, f)) = s.EXNS_store +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec +def $fof(state : state) : frame + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec + def $fof{z : state}(z) = $frame(z) + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $type(state : state, typeidx : typeidx) : deftype ;; ../../../../specification/wasm-latest/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] + def $type{z : state, x : idx}(z, x) = $fof(z).MODULE_frame.TYPES_moduleinst[x!`%`_idx.0] + +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec +def $sof(state : state) : store + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec + def $sof{z : state}(z) = $store(z) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $tag(state : state, tagidx : tagidx) : taginst ;; ../../../../specification/wasm-latest/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]] + def $tag{z : state, x : idx}(z, x) = $sof(z).TAGS_store[$fof(z).MODULE_frame.TAGS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $global(state : state, globalidx : globalidx) : globalinst ;; ../../../../specification/wasm-latest/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]] + def $global{z : state, x : idx}(z, x) = $sof(z).GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $mem(state : state, memidx : memidx) : meminst ;; ../../../../specification/wasm-latest/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]] + def $mem{z : state, x : idx}(z, x) = $sof(z).MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $table(state : state, tableidx : tableidx) : tableinst ;; ../../../../specification/wasm-latest/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]] + def $table{z : state, x : idx}(z, x) = $sof(z).TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $func(state : state, funcidx : funcidx) : funcinst ;; ../../../../specification/wasm-latest/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]] + def $func{z : state, x : idx}(z, x) = $sof(z).FUNCS_store[$fof(z).MODULE_frame.FUNCS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $data(state : state, dataidx : dataidx) : datainst ;; ../../../../specification/wasm-latest/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]] + def $data{z : state, x : idx}(z, x) = $sof(z).DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $elem(state : state, tableidx : tableidx) : eleminst ;; ../../../../specification/wasm-latest/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]] + def $elem{z : state, x : idx}(z, x) = $sof(z).ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $local(state : state, localidx : localidx) : val? ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec - def $local{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = f.LOCALS_frame[x!`%`_idx.0] + def $local{z : state, x : idx}(z, x) = $fof(z).LOCALS_frame[x!`%`_idx.0] ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_local(state : state, localidx : localidx, val : val) : state ;; ../../../../specification/wasm-latest/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)]) + def $with_local{z : state, x : idx, v : val}(z, x, v) = `%;%`_state($sof(z), $fof(z)[LOCALS_frame[x!`%`_idx.0] = ?(v)]) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_global(state : state, globalidx : globalidx, val : val) : state ;; ../../../../specification/wasm-latest/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) + def $with_global{z : state, x : idx, v : val}(z, x, v) = `%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[x!`%`_idx.0]].VALUE_globalinst = v], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state ;; ../../../../specification/wasm-latest/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) + def $with_table{z : state, x : idx, i : nat, r : ref}(z, x, i, r) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]].REFS_tableinst[i] = r], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state ;; ../../../../specification/wasm-latest/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) + def $with_tableinst{z : state, x : idx, ti : tableinst}(z, x, ti) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]] = ti], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state ;; ../../../../specification/wasm-latest/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) + def $with_mem{z : state, x : idx, i : nat, j : nat, `b*` : byte*}(z, x, i, j, b*{b <- `b*`}) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]].BYTES_meminst[i : j] = b*{b <- `b*`}], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state ;; ../../../../specification/wasm-latest/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) + def $with_meminst{z : state, x : idx, mi : meminst}(z, x, mi) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]] = mi], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_elem(state : state, elemidx : elemidx, ref*) : state ;; ../../../../specification/wasm-latest/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) + def $with_elem{z : state, x : idx, `r*` : ref*}(z, x, r*{r <- `r*`}) = `%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[x!`%`_idx.0]].REFS_eleminst = r*{r <- `r*`}], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_data(state : state, dataidx : dataidx, byte*) : state ;; ../../../../specification/wasm-latest/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) + def $with_data{z : state, x : idx, `b*` : byte*}(z, x, b*{b <- `b*`}) = `%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[x!`%`_idx.0]].BYTES_datainst = b*{b <- `b*`}], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-latest/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) + def $with_struct{z : state, a : addr, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-latest/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) + def $with_array{z : state, a : addr, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $add_structinst(state : state, structinst*) : state ;; ../../../../specification/wasm-latest/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) + def $add_structinst{z : state, `si*` : structinst*}(z, si*{si <- `si*`}) = `%;%`_state($sof(z)[STRUCTS_store =++ si*{si <- `si*`}], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $add_arrayinst(state : state, arrayinst*) : state ;; ../../../../specification/wasm-latest/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) + def $add_arrayinst{z : state, `ai*` : arrayinst*}(z, ai*{ai <- `ai*`}) = `%;%`_state($sof(z)[ARRAYS_store =++ ai*{ai <- `ai*`}], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $add_exninst(state : state, exninst*) : state ;; ../../../../specification/wasm-latest/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) + def $add_exninst{z : state, `exn*` : exninst*}(z, exn*{exn <- `exn*`}) = `%;%`_state($sof(z)[EXNS_store =++ exn*{exn <- `exn*`}], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? @@ -28636,115 +28656,125 @@ def $exninst(state : state) : exninst* ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $exninst{s : store, f : frame}(`%;%`_state(s, f)) = s.EXNS_store +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec +def $fof(state : state) : frame + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec + def $fof{z : state}(z) = $frame(z) + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $type(state : state, typeidx : typeidx) : deftype ;; ../../../../specification/wasm-latest/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] + def $type{z : state, x : idx}(z, x) = $fof(z).MODULE_frame.TYPES_moduleinst[x!`%`_idx.0] + +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec +def $sof(state : state) : store + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec + def $sof{z : state}(z) = $store(z) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $tag(state : state, tagidx : tagidx) : taginst ;; ../../../../specification/wasm-latest/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]] + def $tag{z : state, x : idx}(z, x) = $sof(z).TAGS_store[$fof(z).MODULE_frame.TAGS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $global(state : state, globalidx : globalidx) : globalinst ;; ../../../../specification/wasm-latest/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]] + def $global{z : state, x : idx}(z, x) = $sof(z).GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $mem(state : state, memidx : memidx) : meminst ;; ../../../../specification/wasm-latest/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]] + def $mem{z : state, x : idx}(z, x) = $sof(z).MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $table(state : state, tableidx : tableidx) : tableinst ;; ../../../../specification/wasm-latest/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]] + def $table{z : state, x : idx}(z, x) = $sof(z).TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $func(state : state, funcidx : funcidx) : funcinst ;; ../../../../specification/wasm-latest/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]] + def $func{z : state, x : idx}(z, x) = $sof(z).FUNCS_store[$fof(z).MODULE_frame.FUNCS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $data(state : state, dataidx : dataidx) : datainst ;; ../../../../specification/wasm-latest/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]] + def $data{z : state, x : idx}(z, x) = $sof(z).DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $elem(state : state, tableidx : tableidx) : eleminst ;; ../../../../specification/wasm-latest/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]] + def $elem{z : state, x : idx}(z, x) = $sof(z).ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $local(state : state, localidx : localidx) : val? ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec - def $local{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = f.LOCALS_frame[x!`%`_idx.0] + def $local{z : state, x : idx}(z, x) = $fof(z).LOCALS_frame[x!`%`_idx.0] ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_local(state : state, localidx : localidx, val : val) : state ;; ../../../../specification/wasm-latest/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)]) + def $with_local{z : state, x : idx, v : val}(z, x, v) = `%;%`_state($sof(z), $fof(z)[LOCALS_frame[x!`%`_idx.0] = ?(v)]) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_global(state : state, globalidx : globalidx, val : val) : state ;; ../../../../specification/wasm-latest/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) + def $with_global{z : state, x : idx, v : val}(z, x, v) = `%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[x!`%`_idx.0]].VALUE_globalinst = v], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state ;; ../../../../specification/wasm-latest/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) + def $with_table{z : state, x : idx, i : nat, r : ref}(z, x, i, r) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]].REFS_tableinst[i] = r], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state ;; ../../../../specification/wasm-latest/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) + def $with_tableinst{z : state, x : idx, ti : tableinst}(z, x, ti) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]] = ti], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state ;; ../../../../specification/wasm-latest/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) + def $with_mem{z : state, x : idx, i : nat, j : nat, `b*` : byte*}(z, x, i, j, b*{b <- `b*`}) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]].BYTES_meminst[i : j] = b*{b <- `b*`}], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state ;; ../../../../specification/wasm-latest/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) + def $with_meminst{z : state, x : idx, mi : meminst}(z, x, mi) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]] = mi], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_elem(state : state, elemidx : elemidx, ref*) : state ;; ../../../../specification/wasm-latest/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) + def $with_elem{z : state, x : idx, `r*` : ref*}(z, x, r*{r <- `r*`}) = `%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[x!`%`_idx.0]].REFS_eleminst = r*{r <- `r*`}], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_data(state : state, dataidx : dataidx, byte*) : state ;; ../../../../specification/wasm-latest/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) + def $with_data{z : state, x : idx, `b*` : byte*}(z, x, b*{b <- `b*`}) = `%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[x!`%`_idx.0]].BYTES_datainst = b*{b <- `b*`}], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-latest/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) + def $with_struct{z : state, a : addr, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-latest/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) + def $with_array{z : state, a : addr, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $add_structinst(state : state, structinst*) : state ;; ../../../../specification/wasm-latest/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) + def $add_structinst{z : state, `si*` : structinst*}(z, si*{si <- `si*`}) = `%;%`_state($sof(z)[STRUCTS_store =++ si*{si <- `si*`}], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $add_arrayinst(state : state, arrayinst*) : state ;; ../../../../specification/wasm-latest/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) + def $add_arrayinst{z : state, `ai*` : arrayinst*}(z, ai*{ai <- `ai*`}) = `%;%`_state($sof(z)[ARRAYS_store =++ ai*{ai <- `ai*`}], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $add_exninst(state : state, exninst*) : state ;; ../../../../specification/wasm-latest/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) + def $add_exninst{z : state, `exn*` : exninst*}(z, exn*{exn <- `exn*`}) = `%;%`_state($sof(z)[EXNS_store =++ exn*{exn <- `exn*`}], $fof(z)) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? diff --git a/spectec/test-prose/TEST.md b/spectec/test-prose/TEST.md index 52adee8fc..b414d010c 100644 --- a/spectec/test-prose/TEST.md +++ b/spectec/test-prose/TEST.md @@ -25670,155 +25670,169 @@ The instruction sequence :math:`(\mathsf{block}~{\mathit{blocktype}}~{{\mathit{i 1. Return :math:`s{.}\mathsf{exns}`. -:math:`(s, f){.}\mathsf{types}{}[x]` -.................................... +:math:`f` +......... + + +1. Return :math:`z{.}\mathsf{frame}`. + + +:math:`z{.}\mathsf{types}{}[x]` +............................... 1. Return :math:`f{.}\mathsf{module}{.}\mathsf{types}{}[x]`. -:math:`(s, f){.}\mathsf{tags}{}[x]` -................................... +:math:`s` +......... + + +1. Return :math:`z{.}\mathsf{store}`. + + +:math:`z{.}\mathsf{tags}{}[x]` +.............................. 1. Return :math:`s{.}\mathsf{tags}{}[f{.}\mathsf{module}{.}\mathsf{tags}{}[x]]`. -:math:`(s, f){.}\mathsf{globals}{}[x]` -...................................... +:math:`z{.}\mathsf{globals}{}[x]` +................................. 1. Return :math:`s{.}\mathsf{globals}{}[f{.}\mathsf{module}{.}\mathsf{globals}{}[x]]`. -:math:`(s, f){.}\mathsf{mems}{}[x]` -................................... +:math:`z{.}\mathsf{mems}{}[x]` +.............................. 1. Return :math:`s{.}\mathsf{mems}{}[f{.}\mathsf{module}{.}\mathsf{mems}{}[x]]`. -:math:`(s, f){.}\mathsf{tables}{}[x]` -..................................... +:math:`z{.}\mathsf{tables}{}[x]` +................................ 1. Return :math:`s{.}\mathsf{tables}{}[f{.}\mathsf{module}{.}\mathsf{tables}{}[x]]`. -:math:`(s, f){.}\mathsf{funcs}{}[x]` -.................................... +:math:`z{.}\mathsf{funcs}{}[x]` +............................... 1. Return :math:`s{.}\mathsf{funcs}{}[f{.}\mathsf{module}{.}\mathsf{funcs}{}[x]]`. -:math:`(s, f){.}\mathsf{datas}{}[x]` -.................................... +:math:`z{.}\mathsf{datas}{}[x]` +............................... 1. Return :math:`s{.}\mathsf{datas}{}[f{.}\mathsf{module}{.}\mathsf{datas}{}[x]]`. -:math:`(s, f){.}\mathsf{elems}{}[x]` -.................................... +:math:`z{.}\mathsf{elems}{}[x]` +............................... 1. Return :math:`s{.}\mathsf{elems}{}[f{.}\mathsf{module}{.}\mathsf{elems}{}[x]]`. -:math:`(s, f){.}\mathsf{locals}{}[x]` -..................................... +:math:`z{.}\mathsf{locals}{}[x]` +................................ 1. Return :math:`f{.}\mathsf{locals}{}[x]`. -:math:`(s, f){}[{.}\mathsf{locals}{}[x] = v]` -............................................. +:math:`z{}[{.}\mathsf{locals}{}[x] = v]` +........................................ 1. Replace :math:`f{.}\mathsf{locals}{}[x]` with :math:`v`. -:math:`(s, f){}[{.}\mathsf{globals}{}[x]{.}\mathsf{value} = v]` -............................................................... +:math:`z{}[{.}\mathsf{globals}{}[x]{.}\mathsf{value} = v]` +.......................................................... 1. Replace :math:`s{.}\mathsf{globals}{}[f{.}\mathsf{module}{.}\mathsf{globals}{}[x]]{.}\mathsf{value}` with :math:`v`. -:math:`(s, f){}[{.}\mathsf{tables}{}[x]{.}\mathsf{refs}{}[i] = r]` -.................................................................. +:math:`z{}[{.}\mathsf{tables}{}[x]{.}\mathsf{refs}{}[i] = r]` +............................................................. 1. Replace :math:`s{.}\mathsf{tables}{}[f{.}\mathsf{module}{.}\mathsf{tables}{}[x]]{.}\mathsf{refs}{}[i]` with :math:`r`. -:math:`(s, f){}[{.}\mathsf{tables}{}[x] = {\mathit{ti}}]` -......................................................... +:math:`z{}[{.}\mathsf{tables}{}[x] = {\mathit{ti}}]` +.................................................... 1. Replace :math:`s{.}\mathsf{tables}{}[f{.}\mathsf{module}{.}\mathsf{tables}{}[x]]` with :math:`{\mathit{ti}}`. -:math:`(s, f){}[{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}{}[i : j] = {b^\ast}]` -............................................................................ +:math:`z{}[{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}{}[i : j] = {b^\ast}]` +....................................................................... 1. Replace :math:`s{.}\mathsf{mems}{}[f{.}\mathsf{module}{.}\mathsf{mems}{}[x]]{.}\mathsf{bytes}{}[i : j]` with :math:`{b^\ast}`. -:math:`(s, f){}[{.}\mathsf{mems}{}[x] = {\mathit{mi}}]` -....................................................... +:math:`z{}[{.}\mathsf{mems}{}[x] = {\mathit{mi}}]` +.................................................. 1. Replace :math:`s{.}\mathsf{mems}{}[f{.}\mathsf{module}{.}\mathsf{mems}{}[x]]` with :math:`{\mathit{mi}}`. -:math:`(s, f){}[{.}\mathsf{elems}{}[x]{.}\mathsf{refs} = {r^\ast}]` -................................................................... +:math:`z{}[{.}\mathsf{elems}{}[x]{.}\mathsf{refs} = {r^\ast}]` +.............................................................. 1. Replace :math:`s{.}\mathsf{elems}{}[f{.}\mathsf{module}{.}\mathsf{elems}{}[x]]{.}\mathsf{refs}` with :math:`{r^\ast}`. -:math:`(s, f){}[{.}\mathsf{datas}{}[x]{.}\mathsf{bytes} = {b^\ast}]` -.................................................................... +:math:`z{}[{.}\mathsf{datas}{}[x]{.}\mathsf{bytes} = {b^\ast}]` +............................................................... 1. Replace :math:`s{.}\mathsf{datas}{}[f{.}\mathsf{module}{.}\mathsf{datas}{}[x]]{.}\mathsf{bytes}` with :math:`{b^\ast}`. -:math:`(s, f){}[{.}\mathsf{structs}{}[a]{.}\mathsf{fields}{}[i] = {\mathit{fv}}]` -................................................................................. +:math:`z{}[{.}\mathsf{structs}{}[a]{.}\mathsf{fields}{}[i] = {\mathit{fv}}]` +............................................................................ 1. Replace :math:`s{.}\mathsf{structs}{}[a]{.}\mathsf{fields}{}[i]` with :math:`{\mathit{fv}}`. -:math:`(s, f){}[{.}\mathsf{arrays}{}[a]{.}\mathsf{fields}{}[i] = {\mathit{fv}}]` -................................................................................ +:math:`z{}[{.}\mathsf{arrays}{}[a]{.}\mathsf{fields}{}[i] = {\mathit{fv}}]` +........................................................................... 1. Replace :math:`s{.}\mathsf{arrays}{}[a]{.}\mathsf{fields}{}[i]` with :math:`{\mathit{fv}}`. -:math:`(s, f){}[{.}\mathsf{structs} \mathrel{{=}{\oplus}} {{\mathit{si}}^\ast}]` -................................................................................ +:math:`z{}[{.}\mathsf{structs} \mathrel{{=}{\oplus}} {{\mathit{si}}^\ast}]` +........................................................................... 1. Append :math:`{{\mathit{si}}^\ast}` to :math:`s{.}\mathsf{structs}`. -:math:`(s, f){}[{.}\mathsf{arrays} \mathrel{{=}{\oplus}} {{\mathit{ai}}^\ast}]` -............................................................................... +:math:`z{}[{.}\mathsf{arrays} \mathrel{{=}{\oplus}} {{\mathit{ai}}^\ast}]` +.......................................................................... 1. Append :math:`{{\mathit{ai}}^\ast}` to :math:`s{.}\mathsf{arrays}`. -:math:`(s, f){}[{.}\mathsf{exns} \mathrel{{=}{\oplus}} {{\mathit{exn}}^\ast}]` -.............................................................................. +:math:`z{}[{.}\mathsf{exns} \mathrel{{=}{\oplus}} {{\mathit{exn}}^\ast}]` +......................................................................... 1. Append :math:`{{\mathit{exn}}^\ast}` to :math:`s{.}\mathsf{exns}`. @@ -32647,71 +32661,77 @@ arrayinst (s, f) exninst (s, f) 1. Return s.EXNS. -type (s, f) x -1. Return f.MODULE.TYPES[x]. +fof z +1. Return $frame(z). -tag (s, f) x -1. Return s.TAGS[f.MODULE.TAGS[x]]. +type z x +1. Return $fof(z).MODULE.TYPES[x]. -global (s, f) x -1. Return s.GLOBALS[f.MODULE.GLOBALS[x]]. +sof z +1. Return $store(z). -mem (s, f) x -1. Return s.MEMS[f.MODULE.MEMS[x]]. +tag z x +1. Return $sof(z).TAGS[$fof(z).MODULE.TAGS[x]]. -table (s, f) x -1. Return s.TABLES[f.MODULE.TABLES[x]]. +global z x +1. Return $sof(z).GLOBALS[$fof(z).MODULE.GLOBALS[x]]. -func (s, f) x -1. Return s.FUNCS[f.MODULE.FUNCS[x]]. +mem z x +1. Return $sof(z).MEMS[$fof(z).MODULE.MEMS[x]]. -data (s, f) x -1. Return s.DATAS[f.MODULE.DATAS[x]]. +table z x +1. Return $sof(z).TABLES[$fof(z).MODULE.TABLES[x]]. -elem (s, f) x -1. Return s.ELEMS[f.MODULE.ELEMS[x]]. +func z x +1. Return $sof(z).FUNCS[$fof(z).MODULE.FUNCS[x]]. -local (s, f) x -1. Return f.LOCALS[x]. +data z x +1. Return $sof(z).DATAS[$fof(z).MODULE.DATAS[x]]. -with_local (s, f) x v -1. Replace f.LOCALS[x] with ?(v). +elem z x +1. Return $sof(z).ELEMS[$fof(z).MODULE.ELEMS[x]]. -with_global (s, f) x v -1. Replace s.GLOBALS[f.MODULE.GLOBALS[x]].VALUE with v. +local z x +1. Return $fof(z).LOCALS[x]. -with_table (s, f) x i r -1. Replace s.TABLES[f.MODULE.TABLES[x]].REFS[i] with r. +with_local z x v +1. Replace $fof(z).LOCALS[x] with ?(v). -with_tableinst (s, f) x ti -1. Replace s.TABLES[f.MODULE.TABLES[x]] with ti. +with_global z x v +1. Replace $sof(z).GLOBALS[$fof(z).MODULE.GLOBALS[x]].VALUE with v. -with_mem (s, f) x i j b* -1. Replace s.MEMS[f.MODULE.MEMS[x]].BYTES[i : j] with b*. +with_table z x i r +1. Replace $sof(z).TABLES[$fof(z).MODULE.TABLES[x]].REFS[i] with r. -with_meminst (s, f) x mi -1. Replace s.MEMS[f.MODULE.MEMS[x]] with mi. +with_tableinst z x ti +1. Replace $sof(z).TABLES[$fof(z).MODULE.TABLES[x]] with ti. -with_elem (s, f) x r* -1. Replace s.ELEMS[f.MODULE.ELEMS[x]].REFS with r*. +with_mem z x i j b* +1. Replace $sof(z).MEMS[$fof(z).MODULE.MEMS[x]].BYTES[i : j] with b*. -with_data (s, f) x b* -1. Replace s.DATAS[f.MODULE.DATAS[x]].BYTES with b*. +with_meminst z x mi +1. Replace $sof(z).MEMS[$fof(z).MODULE.MEMS[x]] with mi. + +with_elem z x r* +1. Replace $sof(z).ELEMS[$fof(z).MODULE.ELEMS[x]].REFS with r*. + +with_data z x b* +1. Replace $sof(z).DATAS[$fof(z).MODULE.DATAS[x]].BYTES with b*. -with_struct (s, f) a i fv -1. Replace s.STRUCTS[a].FIELDS[i] with fv. +with_struct z a i fv +1. Replace $sof(z).STRUCTS[a].FIELDS[i] with fv. -with_array (s, f) a i fv -1. Replace s.ARRAYS[a].FIELDS[i] with fv. +with_array z a i fv +1. Replace $sof(z).ARRAYS[a].FIELDS[i] with fv. -add_structinst (s, f) si* -1. Append si* to the s.STRUCTS. +add_structinst z si* +1. Append si* to the $sof(z).STRUCTS. -add_arrayinst (s, f) ai* -1. Append ai* to the s.ARRAYS. +add_arrayinst z ai* +1. Append ai* to the $sof(z).ARRAYS. -add_exninst (s, f) exn* -1. Append exn* to the s.EXNS. +add_exninst z exn* +1. Append exn* to the $sof(z).EXNS. growtable tableinst n r 1. Let { TYPE: (at ([ i .. j? ]) rt); REFS: r'* } be tableinst. diff --git a/spectec/test-splice/TEST.md b/spectec/test-splice/TEST.md index cc8249e9d..6f602b04e 100644 --- a/spectec/test-splice/TEST.md +++ b/spectec/test-splice/TEST.md @@ -237,8 +237,8 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} (s ; f){.}\mathsf{funcs} & = & s{.}\mathsf{funcs} \\[0.8ex] -(s ; f){.}\mathsf{funcs}{}[x] & = & s{.}\mathsf{funcs}{}[f{.}\mathsf{module}{.}\mathsf{funcs}{}[x]] \\ -(s ; f){.}\mathsf{tables}{}[x] & = & s{.}\mathsf{tables}{}[f{.}\mathsf{module}{.}\mathsf{tables}{}[x]] \\ +z{.}\mathsf{funcs}{}[x] & = & s{.}\mathsf{funcs}{}[f{.}\mathsf{module}{.}\mathsf{funcs}{}[x]] \\ +z{.}\mathsf{tables}{}[x] & = & s{.}\mathsf{tables}{}[f{.}\mathsf{module}{.}\mathsf{tables}{}[x]] \\ \end{array} $$ @@ -1558,6 +1558,7 @@ warning: definition `fnat` was never spliced warning: definition `fne_` was never spliced warning: definition `fnearest_` was never spliced warning: definition `fneg_` was never spliced +warning: definition `fof` was never spliced warning: definition `fone` was never spliced warning: definition `fpmax_` was never spliced warning: definition `fpmin_` was never spliced @@ -1797,6 +1798,7 @@ warning: definition `signif` was never spliced warning: definition `sizenn` was never spliced warning: definition `sizenn1` was never spliced warning: definition `sizenn2` was never spliced +warning: definition `sof` was never spliced warning: definition `startsd` was never spliced warning: definition `store` was never spliced warning: definition `structinst` was never spliced @@ -2415,6 +2417,7 @@ warning: definition prose `expanddt` was never spliced warning: definition prose `expon` was never spliced warning: definition prose `exportsd` was never spliced warning: definition prose `fnat` was never spliced +warning: definition prose `fof` was never spliced warning: definition prose `fone` was never spliced warning: definition prose `frame` was never spliced warning: definition prose `free_absheaptype` was never spliced @@ -2608,6 +2611,7 @@ warning: definition prose `size` was never spliced warning: definition prose `sizenn` was never spliced warning: definition prose `sizenn1` was never spliced warning: definition prose `sizenn2` was never spliced +warning: definition prose `sof` was never spliced warning: definition prose `startsd` was never spliced warning: definition prose `store` was never spliced warning: definition prose `structinst` was never spliced From 811f86acae8b825e3b0a34b0e884e692d7359635 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Tue, 24 Mar 2026 12:04:30 +0100 Subject: [PATCH 104/235] [spec] Add missing side condition on growtable/memory (#2108) --- .../4.0-execution.configurations.spectec | 2 ++ .../4.0-execution.configurations.spectec | 2 ++ spectec/doc/example/output/NanoWasm.pdf | Bin 245508 -> 245508 bytes .../src/backend-interpreter/interpreter.ml | 2 ++ spectec/test-frontend/TEST.md | 2 ++ spectec/test-latex/TEST.md | 2 ++ spectec/test-middlend/TEST.md | 6 +++++ spectec/test-prose/TEST.md | 24 +++++++++++++----- 8 files changed, 34 insertions(+), 6 deletions(-) diff --git a/specification/wasm-3.0/4.0-execution.configurations.spectec b/specification/wasm-3.0/4.0-execution.configurations.spectec index fe794ce21..f1a728435 100644 --- a/specification/wasm-3.0/4.0-execution.configurations.spectec +++ b/specification/wasm-3.0/4.0-execution.configurations.spectec @@ -321,9 +321,11 @@ def $growtable(tableinst, n, r) = tableinst' -- if tableinst' = { TYPE (at `[i' .. j?] rt), REFS r'* r^n } -- if $(i' = |r'*| + n) -- (if i' <= j)? + -- if i' <= $(2^$size(at) - 1) def $growmem(meminst, n) = meminst' -- if meminst = { TYPE (at `[i .. j?] PAGE), BYTES b* } -- if meminst' = { TYPE (at `[i' .. j?] PAGE), BYTES b* (0x00)^(n * $($(64 * $Ki))) } -- if $(i' = |b*| / (64 * $Ki) + n) -- (if i' <= j)? + -- if i' <= $(2^($size(at) - 16)) diff --git a/specification/wasm-latest/4.0-execution.configurations.spectec b/specification/wasm-latest/4.0-execution.configurations.spectec index fe794ce21..f1a728435 100644 --- a/specification/wasm-latest/4.0-execution.configurations.spectec +++ b/specification/wasm-latest/4.0-execution.configurations.spectec @@ -321,9 +321,11 @@ def $growtable(tableinst, n, r) = tableinst' -- if tableinst' = { TYPE (at `[i' .. j?] rt), REFS r'* r^n } -- if $(i' = |r'*| + n) -- (if i' <= j)? + -- if i' <= $(2^$size(at) - 1) def $growmem(meminst, n) = meminst' -- if meminst = { TYPE (at `[i .. j?] PAGE), BYTES b* } -- if meminst' = { TYPE (at `[i' .. j?] PAGE), BYTES b* (0x00)^(n * $($(64 * $Ki))) } -- if $(i' = |b*| / (64 * $Ki) + n) -- (if i' <= j)? + -- if i' <= $(2^($size(at) - 16)) diff --git a/spectec/doc/example/output/NanoWasm.pdf b/spectec/doc/example/output/NanoWasm.pdf index 1341c39ec48ab868e1b9b70d1b46c7e647dcd88f..e68ccc1d9c36f44322ea2f0feb7ff260902d8839 100644 GIT binary patch delta 108 zcmZqq$Jg?Yuc3vpg=q`3$W~?(Q=bMWDcSyhH?t@+0EVs{*Z=?k delta 108 zcmZqq$Jg?Yuc3vpg=q`3$W~?pGvn#vTbUI=jO|uinTyz*on6h0ja)2@&CHC=4U9}o gOiaxUTrJHFEZj_-44s@!>=bMWDcSyhH?t@+0CSxjZU6uP diff --git a/spectec/src/backend-interpreter/interpreter.ml b/spectec/src/backend-interpreter/interpreter.ml index 532dd79a7..b3b419ca4 100644 --- a/spectec/src/backend-interpreter/interpreter.ml +++ b/spectec/src/backend-interpreter/interpreter.ml @@ -214,6 +214,8 @@ and eval_expr env expr = let rec to_bool source = function | BoolV b -> b | ListV _ as v -> List.for_all (to_bool source) (unwrap_listv_to_list v) + | OptV None -> true + | OptV Some v -> to_bool source v | _ -> fail_expr source "type mismatch for boolean value" in diff --git a/spectec/test-frontend/TEST.md b/spectec/test-frontend/TEST.md index 5f4f7ee17..5aae8c847 100644 --- a/spectec/test-frontend/TEST.md +++ b/spectec/test-frontend/TEST.md @@ -5824,6 +5824,7 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst -- 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?`} + -- if ((i'!`%`_u64.0 : nat <:> int) <= (((2 ^ $size((at : addrtype <: numtype))) : nat <:> int) - (1 : nat <:> int))) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $growmem(meminst : meminst, nat : nat) : meminst @@ -5833,6 +5834,7 @@ def $growmem(meminst : meminst, nat : nat) : meminst -- 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?`} + -- if (i'!`%`_u64.0 <= (2 ^ ((($size((at : addrtype <: numtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec relation Num_ok: `%|-%:%`(store, num, numtype) diff --git a/spectec/test-latex/TEST.md b/spectec/test-latex/TEST.md index cecc9e342..07faa4f44 100644 --- a/spectec/test-latex/TEST.md +++ b/spectec/test-latex/TEST.md @@ -9315,6 +9315,7 @@ $$ {\land}~ {\mathit{tableinst}'} = \{ \mathsf{type}~({\mathit{at}}~{}[ {i'} .. {j^?} ]~{\mathit{rt}}),\; \mathsf{refs}~{{r'}^\ast}~{r^{n}} \} \\ {\land}~ {i'} = {|{{r'}^\ast}|} + n \\ {\land}~ ({i'} \leq j)^? \\ +{\land}~ {i'} \leq {2^{{|{\mathit{at}}|}}} - 1 \\ \end{array} \\ \end{array} $$ @@ -9327,6 +9328,7 @@ $$ {\land}~ {\mathit{meminst}'} = \{ \mathsf{type}~({\mathit{at}}~{}[ {i'} .. {j^?} ]~\mathsf{page}),\; \mathsf{bytes}~{b^\ast}~{(\mathtt{0x00})^{n \cdot 64 \, {\mathrm{Ki}}}} \} \\ {\land}~ {i'} = {|{b^\ast}|} / (64 \, {\mathrm{Ki}}) + n \\ {\land}~ ({i'} \leq j)^? \\ +{\land}~ {i'} \leq {2^{{|{\mathit{at}}|} - 16}} \\ \end{array} \\ \end{array} $$ diff --git a/spectec/test-middlend/TEST.md b/spectec/test-middlend/TEST.md index 58b31cf99..52de5c986 100644 --- a/spectec/test-middlend/TEST.md +++ b/spectec/test-middlend/TEST.md @@ -5814,6 +5814,7 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst -- 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?`} + -- if ((i'!`%`_u64.0 : nat <:> int) <= (((2 ^ $size((at : addrtype <: numtype))) : nat <:> int) - (1 : nat <:> int))) ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $growmem(meminst : meminst, nat : nat) : meminst @@ -5823,6 +5824,7 @@ def $growmem(meminst : meminst, nat : nat) : meminst -- 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?`} + -- if (i'!`%`_u64.0 <= (2 ^ ((($size((at : addrtype <: numtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec relation Num_ok: `%|-%:%`(store, num, numtype) @@ -17236,6 +17238,7 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? -- 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?`} + -- if ((i'!`%`_u64.0 : nat <:> int) <= (((2 ^ $size((at : addrtype <: numtype))) : nat <:> int) - (1 : nat <:> int))) def $growtable{x0 : tableinst, x1 : nat, x2 : ref}(x0, x1, x2) = ?() ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec @@ -17246,6 +17249,7 @@ def $growmem(meminst : meminst, nat : nat) : meminst? -- 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?`} + -- if (i'!`%`_u64.0 <= (2 ^ ((($size((at : addrtype <: numtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) def $growmem{x0 : meminst, x1 : nat}(x0, x1) = ?() ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec @@ -28784,6 +28788,7 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? -- 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?`} + -- if ((i'!`%`_u64.0 : nat <:> int) <= (((2 ^ $size((at : addrtype <: numtype))) : nat <:> int) - (1 : nat <:> int))) def $growtable{x0 : tableinst, x1 : nat, x2 : ref}(x0, x1, x2) = ?() ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec @@ -28794,6 +28799,7 @@ def $growmem(meminst : meminst, nat : nat) : meminst? -- 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?`} + -- if (i'!`%`_u64.0 <= (2 ^ ((($size((at : addrtype <: numtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) def $growmem{x0 : meminst, x1 : nat}(x0, x1) = ?() ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec diff --git a/spectec/test-prose/TEST.md b/spectec/test-prose/TEST.md index b414d010c..1671b3b18 100644 --- a/spectec/test-prose/TEST.md +++ b/spectec/test-prose/TEST.md @@ -25846,7 +25846,11 @@ The instruction sequence :math:`(\mathsf{block}~{\mathit{blocktype}}~{{\mathit{i #. Let :math:`{i'}` be :math:`{|{{r'}^\ast}|} + n`. -#. If :math:`{({i'} \leq j)^?}`, then: +#. If not :math:`{({i'} \leq j)^?}`, then: + + a. Fail. + +#. If :math:`{i'} \leq {2^{{|{\mathit{at}}|}}} - 1`, then: a. Let :math:`{\mathit{tableinst}'}` be the table instance :math:`\{ \mathsf{type}~({\mathit{at}}~{}[ {i'} .. {j^?} ]~{\mathit{rt}}),\;\allowbreak \mathsf{refs}~{{r'}^\ast}~{r^{n}} \}`. @@ -25863,7 +25867,11 @@ The instruction sequence :math:`(\mathsf{block}~{\mathit{blocktype}}~{{\mathit{i #. Let :math:`{i'}` be :math:`{|{b^\ast}|} / (64 \, {\mathrm{Ki}}) + n`. -#. If :math:`{({i'} \leq j)^?}`, then: +#. If not :math:`{({i'} \leq j)^?}`, then: + + a. Fail. + +#. If :math:`{i'} \leq {2^{{|{\mathit{at}}|} - 16}}`, then: a. Let :math:`{\mathit{meminst}'}` be the memory instance :math:`\{ \mathsf{type}~({\mathit{at}}~{}[ {i'} .. {j^?} ]~\mathsf{page}),\;\allowbreak \mathsf{bytes}~{b^\ast}~{\mathtt{0x00}^{n \cdot 64 \, {\mathrm{Ki}}}} \}`. @@ -32736,18 +32744,22 @@ add_exninst z exn* growtable tableinst n r 1. Let { TYPE: (at ([ i .. j? ]) rt); REFS: r'* } be tableinst. 2. Let i' be (|r'*| + n). -3. If (i' <= j)?, then: +3. If not (i' <= j)?, then: + a. Fail. +4. If (i' <= ((2 ^ $size(at)) - 1)), then: a. Let tableinst' be { TYPE: (at ([ i' .. j? ]) rt); REFS: r'* :: r^n }. b. Return tableinst'. -4. Fail. +5. Fail. growmem meminst n 1. Let { TYPE: at ([ i .. j? ]) PAGE; BYTES: b* } be meminst. 2. Let i' be ((|b*| / (64 * $Ki())) + n). -3. If (i' <= j)?, then: +3. If not (i' <= j)?, then: + a. Fail. +4. If (i' <= (2 ^ ($size(at) - 16))), then: a. Let meminst' be { TYPE: at ([ i' .. j? ]) PAGE; BYTES: b* :: 0^(n * (64 * $Ki())) }. b. Return meminst'. -4. Fail. +5. Fail. inst_valtype moduleinst t 1. Let dt* be moduleinst.TYPES. From 594c5348c56b882bf915782a2948e5cc03c34af0 Mon Sep 17 00:00:00 2001 From: Jaehyun Lee <99jaehyunlee@kaist.ac.kr> Date: Tue, 24 Mar 2026 21:49:18 +0900 Subject: [PATCH 105/235] [spectec] Add fail rule for str match in IL semantics (#2122) --- spectec/doc/semantics/il/1-syntax.spectec | 8 ++++---- spectec/doc/semantics/il/5-reduction.spectec | 3 +++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/spectec/doc/semantics/il/1-syntax.spectec b/spectec/doc/semantics/il/1-syntax.spectec index bb369461e..66e16b769 100644 --- a/spectec/doc/semantics/il/1-syntax.spectec +++ b/spectec/doc/semantics/il/1-syntax.spectec @@ -115,7 +115,7 @@ syntax exp = | LIST exp* ;; [ exp* ] | LIFT exp ;; exp : _? <: _* | STR expfield* ;; { expfield* } - | SEL exp nat ;; exp.i + | SEL exp nat ;; exp.n | LEN exp ;; | exp | | MEM exp exp ;; exp `<-` exp | CAT exp exp ;; exp `++` exp @@ -123,8 +123,8 @@ syntax exp = | UPD exp path exp ;; exp[ path = exp ] | EXT exp path exp ;; exp[ path =.. exp ] | CALL id arg* ;; defid( arg* ) - | ITER exp iter exppull* ;; exp iter{ expiter* } - | CVT exp numtyp numtyp ;; exp : typ1 <:> typ2 + | ITER exp iter exppull* ;; exp iter{ exppull* } + | CVT exp numtyp numtyp ;; exp : numtyp1 <:> numtyp2 | SUB exp typ typ ;; exp : typ1 <: typ2 | MATCH arg* WITH clause* ;; `match` arg* `with` clause* @@ -149,7 +149,7 @@ syntax sym = | SEQ sym* ;; sym* | ALT sym* ;; sym `|` sym | RANGE sym sym ;; sym `|` `...` `|` sym - | ITER sym iter exppull* ;; sym iter{ expiter* } + | ITER sym iter exppull* ;; sym iter{ exppull* } | ATTR exp sym ;; exp `:` sym diff --git a/spectec/doc/semantics/il/5-reduction.spectec b/spectec/doc/semantics/il/5-reduction.spectec index 91a55d66f..0dffbf67c 100644 --- a/spectec/doc/semantics/il/5-reduction.spectec +++ b/spectec/doc/semantics/il/5-reduction.spectec @@ -697,6 +697,9 @@ rule Step_expmatch_plain/STR: -- (if (l `= e') = ef')* -- (if (l `= e) <- ef*)* +rule Step_expmatch_plain/STR-fail: + S |- STR ef* / STR ef'* ~> FAIL + -- otherwise rule Step_expmatch_plain/ITER-PLUS: S |- LIST e* / ITER e' PLUS (x `: t `<- e_p)* ~> From ba0b44783946d91ec1f2476538f00397da199f30 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Wed, 25 Mar 2026 08:34:24 +0100 Subject: [PATCH 106/235] [spectec] Avoid variable capture in IL semantics --- spectec/doc/semantics/il/4-subst.spectec | 143 +++++++++++++++---- spectec/doc/semantics/il/5-reduction.spectec | 16 +-- 2 files changed, 127 insertions(+), 32 deletions(-) diff --git a/spectec/doc/semantics/il/4-subst.spectec b/spectec/doc/semantics/il/4-subst.spectec index 2b7f4f417..1b6b60d6f 100644 --- a/spectec/doc/semantics/il/4-subst.spectec +++ b/spectec/doc/semantics/il/4-subst.spectec @@ -1,5 +1,3 @@ -;; TODO: avoid capture - ;; Substitution syntax subst = @@ -44,6 +42,79 @@ def $bound_param(FUN x `: p* `-> t) = {FUN x} def $bound_param(GRAM x `: p* `-> t) = {GRAM x} +;; Freshness + +relation Fresh_id: id FRESH hint(builtin) + +def $refresh_expid(id) : (id, subst) hint(total) +def $refresh_typid(id) : (id, subst) hint(total) +def $refresh_funid(id) : (id, subst) hint(total) +def $refresh_gramid(id) : (id, subst) hint(total) + +def $refresh_expid(x) = (x', {EXP (x, VAR x')}) -- Fresh_id: x' FRESH +def $refresh_typid(x) = (x', {TYP (x, VAR x')}) -- Fresh_id: x' FRESH +def $refresh_funid(x) = (x', {FUN (x, x')}) -- Fresh_id: x' FRESH +def $refresh_gramid(x) = (x', {GRAM (x, VAR x')}) -- Fresh_id: x' FRESH + + +def $refresh_list(syntax X, def $refresh(X) : (X, subst), def $subst(subst, X) : X, X*) : (X*, subst) +def $refresh_list(syntax X, $refresh, $subst, eps) = (eps, {}) +def $refresh_list(syntax X, $refresh, $subst, x_1 x*) = (x'_1 x'*, s_1 ++ s) + -- if (x'_1, s_1) = $refresh(x_1) + -- if (x'*, s) = $refresh_list(X, $refresh, $subst, $subst(s_1, x)*) + + +def $refresh_param(param) : (param, subst) +def $refresh_params(param*) : (param*, subst) + +def $refresh_param(EXP x `: t) = (EXP x' `: t, s) + -- if (x', s) = $refresh_expid(x) +def $refresh_param(TYP x) = (TYP x', s) + -- if (x', s) = $refresh_typid(x) +def $refresh_param(FUN x `: p* `-> t) = (FUN x' `: p* `-> t, s) + -- if (x', s) = $refresh_funid(x) +def $refresh_param(GRAM x `: p* `-> t) = (GRAM x' `: p* `-> t, s) + -- if (x', s) = $refresh_gramid(x) + +def $refresh_params(p*) = + $refresh_list(param, $refresh_param, $subst_param, p*) + + +def $refresh_typbind(typbind) : (typbind, subst) +def $refresh_typbinds(typbind*) : (typbind*, subst) + +def $refresh_typbind(x `: t) = (x' `: t, s) + -- if (x', s) = $refresh_expid(x) + +def $refresh_typbinds(tb*) = + $refresh_list(typbind, $refresh_typbind, $subst_typbind, tb*) + + +def $refresh_exppull(exppull) : (exppull, subst) +def $refresh_exppulls(exppull*) : (exppull*, subst) + +def $refresh_exppull(x `: t `<- e) = (x' `: t `<- e, s) + -- if (x', s) = $refresh_expid(x) + +def $refresh_exppulls(tb*) = + $refresh_list(exppull, $refresh_exppull, $subst_exppull, tb*) + + +def $refresh_iter(iter) : (iter, subst) + +def $refresh_iter(QUEST) = (QUEST, {}) +def $refresh_iter(STAR) = (STAR, {}) +def $refresh_iter(PLUS) = (PLUS, {}) +def $refresh_iter(SUP x e) = (SUP x' e, s) -- if (x', s) = $refresh_expid(x) + + +;; Lists + +def $subst_binds(syntax X, def $subst_X(subst, X) : X, subst, X*) : X* +def $subst_binds(syntax X, def $subst_X, s, eps) = eps +def $subst_binds(syntax X, def $subst_X, s, x_1 x*) = eps + + ;; Identifiers def $subst_fun(subst, id) : id @@ -54,17 +125,29 @@ def $subst_fun(s, x) = x -- otherwise ;; Types def $subst_typ(subst, typ) : typ -def $subst_typ(s, VAR x a*) = t -- if (x,t) <- s.TYP /\ a* = eps -def $subst_typ(s, VAR x a*) = VAR x $subst_arg(s, a)* -- otherwise -def $subst_typ(s, optyp) = optyp -def $subst_typ(s, TUP (x `: t)*) = TUP (x `: $subst_typ(s, t))* ;; TODO: avoid capture -def $subst_typ(s, ITER t it) = ITER $subst_typ(s, t) $subst_iter(s, it) -def $subst_typ(s, MATCH x a* WITH inst*) = MATCH x $subst_arg(s, a)* WITH $subst_inst(s, inst)* +def $subst_typ(s, t) = t' -- if (t', s') = $subst_refresh_typ(s, t) + +def $subst_refresh_typ(subst, typ) : (typ, subst) +def $subst_refresh_typ(s, VAR x a*) = (t, {}) -- if (x,t) <- s.TYP /\ a* = eps +def $subst_refresh_typ(s, VAR x a*) = (VAR x $subst_arg(s, a)*, {}) -- otherwise +def $subst_refresh_typ(s, optyp) = (optyp, {}) +def $subst_refresh_typ(s, TUP tb*) = (TUP $subst_typbind(s, tb')*, s') + -- if (tb'*, s') = $refresh_typbinds(tb*) +def $subst_refresh_typ(s, ITER t it) = (ITER $subst_typ(s ++ s', t) $subst_iter(s, it'), {}) + -- if (it', s') = $refresh_iter(it) +def $subst_refresh_typ(s, MATCH x a* WITH inst*) = (MATCH x $subst_arg(s, a)* WITH $subst_inst(s, inst)*, {}) def $subst_deftyp(subst, deftyp) : deftyp def $subst_deftyp(s, ALIAS t) = ALIAS $subst_typ(s, t) -def $subst_deftyp(s, STRUCT (a `: t `- `{q*} pr*)*) = STRUCT (a `: $subst_typ(s, t) `- `{$subst_quant(s, q)*} $subst_prem(s, pr)*)* ;; TODO: avoid capture -def $subst_deftyp(s, VARIANT (m `: t `- `{q*} pr*)*) = VARIANT (m `: $subst_typ(s, t) `- `{$subst_quant(s, q)*} $subst_prem(s, pr)*)* ;; TODO: avoid capture +def $subst_deftyp(s, STRUCT (a `: t `- `{q*} pr*)*) = STRUCT (a `: t' `- `{$subst_param(s ++ s', q')*} $subst_prem(s ++ s' ++ s'', pr)*)* + -- if (t', s') = $subst_refresh_typ(s, t) + -- if (q'*, s'') = $refresh_params(q*) +def $subst_deftyp(s, VARIANT (m `: t `- `{q*} pr*)*) = VARIANT (m `: t' `- `{$subst_param(s ++ s', q')*} $subst_prem(s ++ s' ++ s'', pr)*)* + -- if (t', s') = $subst_refresh_typ(s, t) + -- if (q'*, s'') = $refresh_params(q*) + +def $subst_typbind(subst, typbind) : typbind +def $subst_typbind(s, x `: t) = x' `: $subst_typ(s, t) ;; Iterators @@ -73,7 +156,10 @@ def $subst_iter(subst, iter) : iter def $subst_iter(s, QUEST) = QUEST def $subst_iter(s, STAR) = STAR def $subst_iter(s, PLUS) = PLUS -def $subst_iter(s, SUP x e) = SUP x $subst_exp(s, e) ;; TODO: avoid capture +def $subst_iter(s, SUP x e) = SUP x $subst_exp(s, e) + +def $subst_exppull(subst, exppull) : exppull +def $subst_exppull(s, x `: t `<- e') = x `: $subst_typ(s, t) `<- $subst_exp(s, e') ;; Expressions @@ -101,7 +187,9 @@ def $subst_exp(s, ACC e_1 p) = ACC $subst_exp(s, e_1) $subst_path(s, p) def $subst_exp(s, UPD e_1 p e_2) = UPD $subst_exp(s, e_1) $subst_path(s, p) $subst_exp(s, e_2) def $subst_exp(s, EXT e_1 p e_2) = EXT $subst_exp(s, e_1) $subst_path(s, p) $subst_exp(s, e_2) def $subst_exp(s, CALL x a*) = CALL $subst_fun(s, x) $subst_arg(s, a)* -def $subst_exp(s, ITER e it (x `: t `<- e')*) = ITER $subst_exp(s, e) $subst_iter(s, it) (x `: $subst_typ(s, t) `<- $subst_exp(s, e'))* ;; TODO: avoid capture +def $subst_exp(s, ITER e it ep*) = ITER $subst_exp(s ++ s' ++ s'', e) $subst_iter(s, it') $subst_exppull(s, ep')* + -- if (it', s') = $refresh_iter(it) + -- if (ep'*, s'') = $refresh_exppulls(ep*) def $subst_exp(s, CVT e nt_1 nt_2) = CVT $subst_exp(s, e) nt_1 nt_2 def $subst_exp(s, SUB e t_1 t_2) = SUB $subst_exp(s, e) $subst_typ(s, t_1) $subst_typ(s, t_2) def $subst_exp(s, MATCH a* WITH clause*) = MATCH $subst_arg(s, a)* WITH $subst_clause(s, clause)* @@ -127,7 +215,9 @@ def $subst_sym(s, SEQ g*) = SEQ $subst_sym(s, g)* def $subst_sym(s, ALT g*) = ALT $subst_sym(s, g)* def $subst_sym(s, RANGE g_1 g_2) = RANGE $subst_sym(s, g_1) $subst_sym(s, g_2) def $subst_sym(s, ATTR e g) = ATTR $subst_exp(s, e) $subst_sym(s, g) -def $subst_sym(s, ITER g it (x `: t `<- e)*) = ITER $subst_sym(s, g) $subst_iter(s, it) (x `: $subst_typ(s, t) `<- $subst_exp(s, e))* ;; TODO: avoid capture +def $subst_sym(s, ITER g it ep*) = ITER $subst_sym(s ++ s' ++ s'', g) $subst_iter(s, it') $subst_exppull(s, ep')* + -- if (it', s') = $refresh_iter(it) + -- if (ep'*, s'') = $refresh_exppulls(ep*) ;; Definitions @@ -141,31 +231,36 @@ def $subst_arg(s, GRAM g) = GRAM $subst_sym(s, g) def $subst_param(subst, param) : param def $subst_param(s, TYP x) = TYP x def $subst_param(s, EXP x `: t) = EXP x `: $subst_typ(s, t) -def $subst_param(s, FUN x `: p* `-> t) = FUN x `: $subst_param(s, p)* `-> $subst_typ(s, t) ;; TODO: avoid capture -def $subst_param(s, GRAM x `: p* `-> t) = GRAM x `: $subst_param(s, p)* `-> $subst_typ(s, t) ;; TODO: avoid capture - -def $subst_quant(subst, quant) : quant -def $subst_quant(s, q) = $subst_param(s, q) +def $subst_param(s, FUN x `: p* `-> t) = FUN x `: $subst_param(s, p')* `-> $subst_typ(s ++ s', t) + -- if (p'*, s') = $refresh_params(p*) +def $subst_param(s, GRAM x `: p* `-> t) = GRAM x `: $subst_param(s, p')* `-> $subst_typ(s ++ s', t) + -- if (p'*, s') = $refresh_params(p*) def $subst_prem(subst, prem) : prem def $subst_prem(s, REL x a* `: e) = REL x $subst_arg(s, a)* `: $subst_exp(s, e) def $subst_prem(s, IF e) = IF $subst_exp(s, e) def $subst_prem(s, ELSE) = ELSE -def $subst_prem(s, LET e_1 `= e_2) = LET $subst_exp(s, e_1) `= $subst_exp(s, e_2) ;; TODO: avoid capture -def $subst_prem(s, ITER pr it (x `: t `<- e)*) = ITER $subst_prem(s, pr) $subst_iter(s, it) (x `: $subst_typ(s, t) `<- $subst_exp(s, e))* ;; TODO: avoid capture +def $subst_prem(s, LET e_1 `= e_2) = LET $subst_exp(s, e_1) `= $subst_exp(s, e_2) +def $subst_prem(s, ITER pr it ep*) = ITER $subst_prem(s ++ s' ++ s'', pr) $subst_iter(s, it') $subst_exppull(s, ep')* + -- if (it', s') = $refresh_iter(it) + -- if (ep'*, s'') = $refresh_exppulls(ep*) def $subst_inst(subst, inst) : inst -def $subst_inst(s, INST `{q*} a* `= dt) = INST `{$subst_param(s, q)*} $subst_arg(s, a)* `= $subst_deftyp(s, dt) ;; TODO: avoid capture +def $subst_inst(s, INST `{q*} a* `= dt) = INST `{$subst_param(s, q')*} $subst_arg(s ++ s', a)* `= $subst_deftyp(s ++ s', dt) + -- if (q'*, s') = $refresh_params(q*) def $subst_rule(subst, rul) : rul -def $subst_rule(s, RULE `{q*} e `- pr*) = RULE `{$subst_param(s, q)*} $subst_exp(s, e) `- $subst_prem(s, pr)* ;; TODO: avoid capture +def $subst_rule(s, RULE `{q*} e `- pr*) = RULE `{$subst_param(s, q')*} $subst_exp(s ++ s', e) `- $subst_prem(s ++ s', pr)* + -- if (q'*, s') = $refresh_params(q*) def $subst_clause(subst, clause) : clause -def $subst_clause(s, CLAUSE `{q*} a* `= e `- pr*) = CLAUSE `{$subst_param(s, q)*} $subst_arg(s, a)* `= $subst_exp(s, e) `- $subst_prem(s, pr)* ;; TODO: avoid capture +def $subst_clause(s, CLAUSE `{q*} a* `= e `- pr*) = CLAUSE `{$subst_param(s, q')*} $subst_arg(s ++ s', a)* `= $subst_exp(s ++ s', e) `- $subst_prem(s ++ s', pr)* + -- if (q'*, s') = $refresh_params(q*) def $subst_prod(subst, prod) : prod -def $subst_prod(s, PROD `{q*} g `=> e `- pr*) = PROD `{$subst_param(s, q)*} $subst_sym(s, g) `=> $subst_exp(s, e) `- $subst_prem(s, pr)* ;; TODO: avoid capture +def $subst_prod(s, PROD `{q*} g `=> e `- pr*) = PROD `{$subst_param(s, q')*} $subst_sym(s ++ s', g) `=> $subst_exp(s ++ s', e) `- $subst_prem(s ++ s', pr)* + -- if (q'*, s') = $refresh_params(q*) ;; Constructing substitutions for parameters diff --git a/spectec/doc/semantics/il/5-reduction.spectec b/spectec/doc/semantics/il/5-reduction.spectec index 0dffbf67c..62c5fc4a2 100644 --- a/spectec/doc/semantics/il/5-reduction.spectec +++ b/spectec/doc/semantics/il/5-reduction.spectec @@ -365,7 +365,7 @@ rule Step_exp/ITER-PLUS: rule Step_exp/ITER-STAR: S |- ITER e STAR (x `: t `<- LIST e'*)* ~> ITER e (SUP y (NAT n)) (x `: t `<- LIST e'*)* -- if |e'**[0]| = n - ;; TODO: y fresh + -- Fresh_id: y FRESH rule Step_exp/ITER-SUP: S |- ITER e (SUP y (NAT n)) (x `: t `<- LIST e'^n)* ~> LIST $subst_exp({EXP (x, e'')* (y, NAT i)}, e)^(i_s - `{q_1* q'* $subst_quant(s, q_2)*} am_1* am'* $subst_argmatch(s, am_2)* + `{q_1* q'* $subst_param(s, q_2)*} am_1* am'* $subst_argmatch(s, am_2)* -- Step_argmatch: S |- `{q*} am ~>_s `{q'*} am'* rule Step_argmatch/seq-fail: @@ -569,7 +569,7 @@ rule Step_argmatch_plain/ctx2: rule Step_argmatch_plain/eq: S |- a / a ~> eps -;; TODO: disjoint +;; TODO: disjointness ;;rule Step_argmatch_plain/neq: ;; S |- a / a' ~> FAIL ;; -- Disj_arg: S |- a =/= a' @@ -581,7 +581,7 @@ rule Step_expmatch/plain: rule Step_expmatch/seq: S |- `{q_1* q* q_2*} em_1* em em_2* ~>_s - `{q_1* q'* $subst_quant(s, q_2)*} em_1* em'* $subst_expmatch(s, em_2)* + `{q_1* q'* $subst_param(s, q_2)*} em_1* em'* $subst_expmatch(s, em_2)* -- Step_expmatch: S |- `{q*} em ~>_s `{q'*} em'* rule Step_expmatch/seq-fail: @@ -594,7 +594,7 @@ rule Step_expmatch/ITER-QUEST: (e / $subst_exp({EXP (x, VAR x')*}, e'))? (OPT (VAR x'')? / e_p)* -- if x''?* = $transposeq_(id, x'*?) - ;; TODO: x'*? fresh + -- (Fresh_id: x' FRESH)*? ;; Note: inner match can only instantiate iteration variables rule Step_expmatch/ITER-SUP: @@ -603,7 +603,7 @@ rule Step_expmatch/ITER-SUP: (e / $subst_exp({EXP (y, NAT i) (x, VAR x')*}, e'))^(i LIST e* / ITER e' (SUP y (NAT n)) (x `: t `<- e_p)* -- if |e*| = n - ;; TODO: y fresh + -- Fresh_id: y FRESH rule Step_expmatch_plain/SUB-SUB: @@ -870,7 +870,7 @@ rule Step_prems/ITER-PLUS: rule Step_prems/ITER-STAR: S |- ITER pr STAR (x `: t `<- LIST e*)* ~> ITER pr (SUP y (NAT n)) (x `: t `<- LIST e*)* -- if |e**[0]| = n - ;; TODO: y fresh + -- Fresh_id: y FRESH rule Step_prems/ITER-SUP: S |- ITER pr (SUP y (NAT n)) (x `: t `<- LIST e^n)* ~> $subst_prem({EXP (x, e')* (y, NAT i)}, pr)^(i Date: Wed, 25 Mar 2026 09:39:19 +0100 Subject: [PATCH 107/235] [spectec] Fix refresh_exppulls in IL semantics --- spectec/doc/semantics/il/4-subst.spectec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spectec/doc/semantics/il/4-subst.spectec b/spectec/doc/semantics/il/4-subst.spectec index 1b6b60d6f..4a4d8d253 100644 --- a/spectec/doc/semantics/il/4-subst.spectec +++ b/spectec/doc/semantics/il/4-subst.spectec @@ -96,8 +96,8 @@ def $refresh_exppulls(exppull*) : (exppull*, subst) def $refresh_exppull(x `: t `<- e) = (x' `: t `<- e, s) -- if (x', s) = $refresh_expid(x) -def $refresh_exppulls(tb*) = - $refresh_list(exppull, $refresh_exppull, $subst_exppull, tb*) +def $refresh_exppulls(ep*) = (ep', $composesubsts(s*)) + -- (if (ep', s) = $refresh_exppull(ep))* def $refresh_iter(iter) : (iter, subst) From d8fc833bfbcb72a2be6a0207cf0e4dfdd46ea396 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Wed, 25 Mar 2026 10:58:43 +0100 Subject: [PATCH 108/235] [spectec] Refactor refresh in IL semantics --- spectec/doc/semantics/il/4-subst.spectec | 32 +++++++++++++----------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/spectec/doc/semantics/il/4-subst.spectec b/spectec/doc/semantics/il/4-subst.spectec index 4a4d8d253..ca5728a1c 100644 --- a/spectec/doc/semantics/il/4-subst.spectec +++ b/spectec/doc/semantics/il/4-subst.spectec @@ -80,9 +80,16 @@ def $refresh_params(p*) = $refresh_list(param, $refresh_param, $subst_param, p*) +def $refresh_typ(typ) : (typ, subst) def $refresh_typbind(typbind) : (typbind, subst) def $refresh_typbinds(typbind*) : (typbind*, subst) +def $refresh_typ(VAR x a*) = (VAR x a*, {}) +def $refresh_typ(optyp) = (optyp, {}) +def $refresh_typ(TUP tb*) = (TUP tb'*, s') -- if (tb'*, s') = $refresh_typbinds(tb*) +def $refresh_typ(ITER t it) = (ITER t it, {}) +def $refresh_typ(MATCH x a* WITH inst*) = (MATCH x a* WITH inst*, {}) + def $refresh_typbind(x `: t) = (x' `: t, s) -- if (x', s) = $refresh_expid(x) @@ -125,25 +132,20 @@ def $subst_fun(s, x) = x -- otherwise ;; Types def $subst_typ(subst, typ) : typ -def $subst_typ(s, t) = t' -- if (t', s') = $subst_refresh_typ(s, t) - -def $subst_refresh_typ(subst, typ) : (typ, subst) -def $subst_refresh_typ(s, VAR x a*) = (t, {}) -- if (x,t) <- s.TYP /\ a* = eps -def $subst_refresh_typ(s, VAR x a*) = (VAR x $subst_arg(s, a)*, {}) -- otherwise -def $subst_refresh_typ(s, optyp) = (optyp, {}) -def $subst_refresh_typ(s, TUP tb*) = (TUP $subst_typbind(s, tb')*, s') - -- if (tb'*, s') = $refresh_typbinds(tb*) -def $subst_refresh_typ(s, ITER t it) = (ITER $subst_typ(s ++ s', t) $subst_iter(s, it'), {}) - -- if (it', s') = $refresh_iter(it) -def $subst_refresh_typ(s, MATCH x a* WITH inst*) = (MATCH x $subst_arg(s, a)* WITH $subst_inst(s, inst)*, {}) +def $subst_typ(s, VAR x a*) = t -- if (x,t) <- s.TYP /\ a* = eps +def $subst_typ(s, VAR x a*) = VAR x $subst_arg(s, a)* -- otherwise +def $subst_typ(s, optyp) = optyp +def $subst_typ(s, TUP tb*) = TUP $subst_typbind(s, tb)* +def $subst_typ(s, ITER t it) = ITER $subst_typ(s ++ s', t) $subst_iter(s, it') +def $subst_typ(s, MATCH x a* WITH inst*) = MATCH x $subst_arg(s, a)* WITH $subst_inst(s, inst)* def $subst_deftyp(subst, deftyp) : deftyp def $subst_deftyp(s, ALIAS t) = ALIAS $subst_typ(s, t) -def $subst_deftyp(s, STRUCT (a `: t `- `{q*} pr*)*) = STRUCT (a `: t' `- `{$subst_param(s ++ s', q')*} $subst_prem(s ++ s' ++ s'', pr)*)* - -- if (t', s') = $subst_refresh_typ(s, t) +def $subst_deftyp(s, STRUCT (a `: t `- `{q*} pr*)*) = STRUCT (a `: $subst_typ(s, t') `- `{$subst_param(s ++ s', q')*} $subst_prem(s ++ s' ++ s'', pr)*)* + -- if (t', s') = $refresh_typ(t) -- if (q'*, s'') = $refresh_params(q*) -def $subst_deftyp(s, VARIANT (m `: t `- `{q*} pr*)*) = VARIANT (m `: t' `- `{$subst_param(s ++ s', q')*} $subst_prem(s ++ s' ++ s'', pr)*)* - -- if (t', s') = $subst_refresh_typ(s, t) +def $subst_deftyp(s, VARIANT (m `: t `- `{q*} pr*)*) = VARIANT (m `: $subst_typ(s, t') `- `{$subst_param(s ++ s', q')*} $subst_prem(s ++ s' ++ s'', pr)*)* + -- if (t', s') = $refresh_typ(t) -- if (q'*, s'') = $refresh_params(q*) def $subst_typbind(subst, typbind) : typbind From cc90d82cb05410339cbff16f123837b8001fb4fc Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Wed, 25 Mar 2026 11:01:58 +0100 Subject: [PATCH 109/235] [spectec] Add missing side condition on --- spectec/doc/semantics/il/4-subst.spectec | 1 + 1 file changed, 1 insertion(+) diff --git a/spectec/doc/semantics/il/4-subst.spectec b/spectec/doc/semantics/il/4-subst.spectec index ca5728a1c..a73d15c51 100644 --- a/spectec/doc/semantics/il/4-subst.spectec +++ b/spectec/doc/semantics/il/4-subst.spectec @@ -137,6 +137,7 @@ def $subst_typ(s, VAR x a*) = VAR x $subst_arg(s, a)* -- otherwise def $subst_typ(s, optyp) = optyp def $subst_typ(s, TUP tb*) = TUP $subst_typbind(s, tb)* def $subst_typ(s, ITER t it) = ITER $subst_typ(s ++ s', t) $subst_iter(s, it') + -- if (it', s') = $refresh_iter(it) def $subst_typ(s, MATCH x a* WITH inst*) = MATCH x $subst_arg(s, a)* WITH $subst_inst(s, inst)* def $subst_deftyp(subst, deftyp) : deftyp From dd0d7a95b96a26f3303b61cae1188245f86cb141 Mon Sep 17 00:00:00 2001 From: Matthias Liedtke Date: Wed, 25 Mar 2026 18:20:37 +0100 Subject: [PATCH 110/235] [test][js-api] WebAssembly.Exception.length should be 2 (#2123) See https://webassembly.github.io/spec/js-api/#exceptions > constructor(Tag exceptionTag, sequence payload, > optional ExceptionOptions options = {}); --- test/js-api/exception/constructor.tentative.any.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/js-api/exception/constructor.tentative.any.js b/test/js-api/exception/constructor.tentative.any.js index a46d1816c..a84218cb9 100644 --- a/test/js-api/exception/constructor.tentative.any.js +++ b/test/js-api/exception/constructor.tentative.any.js @@ -10,7 +10,7 @@ test(() => { }, "name"); test(() => { - assert_function_length(WebAssembly.Exception, 1, "WebAssembly.Exception"); + assert_function_length(WebAssembly.Exception, 2, "WebAssembly.Exception"); }, "length"); test(() => { From 072bd0dc5c965120a111a67fa1849c0378f9a600 Mon Sep 17 00:00:00 2001 From: Ryan Hunt Date: Wed, 25 Mar 2026 12:58:26 -0500 Subject: [PATCH 111/235] [js-api] Add Ryan as an editor of js-api and web-api --- document/js-api/index.bs | 1 + document/web-api/index.bs | 1 + 2 files changed, 2 insertions(+) diff --git a/document/js-api/index.bs b/document/js-api/index.bs index 3f5803815..97bb29464 100644 --- a/document/js-api/index.bs +++ b/document/js-api/index.bs @@ -9,6 +9,7 @@ TR: https://www.w3.org/TR/wasm-js-api-2/ ED: https://webassembly.github.io/spec/js-api/ Implementation Report: https://webassembly.org/features/ Editor: Ms2ger, w3cid 46309, Igalia +Editor: Ryan Hunt, w3cid 112030, Mozilla Foundation Repository: WebAssembly/spec Markup Shorthands: css no, markdown yes Abstract: This document provides an explicit JavaScript API for interacting with WebAssembly. diff --git a/document/web-api/index.bs b/document/web-api/index.bs index 09c0d975b..57b421137 100644 --- a/document/web-api/index.bs +++ b/document/web-api/index.bs @@ -9,6 +9,7 @@ TR: https://www.w3.org/TR/wasm-web-api-2/ ED: https://webassembly.github.io/spec/web-api/ Implementation Report: https://webassembly.org/features/ Editor: Ms2ger, w3cid 46309, Igalia +Editor: Ryan Hunt, w3cid 112030, Mozilla Foundation Repository: WebAssembly/spec Abstract: This document describes the integration of WebAssembly with the broader web platform. Markup Shorthands: css no, markdown yes From 40490e361a5ef40e31be008db7970c3ac2817137 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Mon, 30 Mar 2026 16:41:40 +0200 Subject: [PATCH 112/235] [interpreter] Remove unused NullPat --- interpreter/script/js.ml | 6 ------ interpreter/script/runner.ml | 3 --- interpreter/script/script.ml | 1 - interpreter/text/arrange.ml | 1 - 4 files changed, 11 deletions(-) diff --git a/interpreter/script/js.ml b/interpreter/script/js.ml index 189cca9a6..b92d88525 100644 --- a/interpreter/script/js.ml +++ b/interpreter/script/js.ml @@ -435,7 +435,6 @@ let type_of_vec_pat = function let type_of_ref_pat = function | RefPat ref -> type_of_ref ref.it | RefTypePat ht -> (NoNull, ht) - | NullPat -> (Null, BotHT) let rec type_of_result res = match res.it with @@ -555,10 +554,6 @@ let assert_return ress ts at = [ RefTest (NoNull, t) @@ at; Test (I32 I32Op.Eqz) @@ at; BrIf (0l @@ at) @@ at ] - | RefResult NullPat -> - [ RefIsNull @@ at; - Test (I32 I32Op.Eqz) @@ at; - BrIf (0l @@ at) @@ at ] | EitherResult ress -> let idx = Lib.List32.length !locals in locals := !locals @ [Local t @@ res.at]; @@ -733,7 +728,6 @@ let of_vec_pat = function let of_ref_pat = function | RefPat r -> of_ref r.it | RefTypePat t -> "\"ref." ^ string_of_heaptype t ^ "\"" - | NullPat -> "\"ref.null\"" let rec of_result res = match res.it with diff --git a/interpreter/script/runner.ml b/interpreter/script/runner.ml index bc9fdb0c5..b55947214 100644 --- a/interpreter/script/runner.ml +++ b/interpreter/script/runner.ml @@ -265,7 +265,6 @@ let string_of_ref_pat (p : ref_pat) = match p with | RefPat r -> Value.string_of_ref r.it | RefTypePat t -> Types.string_of_heaptype t - | NullPat -> "null" let rec string_of_result r = match r.it with @@ -286,7 +285,6 @@ let rec type_of_result r = | VecResult (VecPat v) -> Types.VecT (Value.type_of_vec v) | RefResult (RefPat r) -> Types.RefT (Value.type_of_ref r.it) | RefResult (RefTypePat t) -> Types.(RefT (NoNull, t)) (* assume closed *) - | RefResult (NullPat) -> Types.(RefT (Null, ExternHT)) | EitherResult rs -> let ts = List.map type_of_result rs in List.fold_left (fun t1 t2 -> @@ -463,7 +461,6 @@ let assert_ref_pat r p = | RefTypePat Types.FuncHT, Instance.FuncRef _ | RefTypePat Types.ExnHT, Exn.ExnRef _ | RefTypePat Types.ExternHT, _ -> true - | NullPat, Value.NullRef -> true | _ -> false let rec assert_result v r = diff --git a/interpreter/script/script.ml b/interpreter/script/script.ml index 6761e5e35..f1379c024 100644 --- a/interpreter/script/script.ml +++ b/interpreter/script/script.ml @@ -30,7 +30,6 @@ type vec_pat = type ref_pat = | RefPat of ref_ | RefTypePat of Types.heaptype - | NullPat type result = result' Source.phrase and result' = diff --git a/interpreter/text/arrange.ml b/interpreter/text/arrange.ml index bcbb6979f..811f8b48e 100644 --- a/interpreter/text/arrange.ml +++ b/interpreter/text/arrange.ml @@ -851,7 +851,6 @@ let vec_pat mode = function let ref_pat = function | RefPat r -> ref_ r.it | RefTypePat t -> Node ("ref." ^ heaptype t, []) - | NullPat -> Node ("ref.null", []) let rec result mode res = match res.it with From 1b79b8843ac1a16059f536b08c2c38ba2b47e9e8 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Mon, 30 Mar 2026 18:30:29 +0200 Subject: [PATCH 113/235] [interpreter] Revive heaptype on ref.null script literals (#2129) --- interpreter/README.md | 2 +- interpreter/script/js.ml | 58 ++++++++++++++--------- interpreter/script/runner.ml | 27 ++++++++--- interpreter/script/script.ml | 7 ++- interpreter/text/arrange.ml | 14 ++++-- interpreter/text/parser.mly | 13 +++-- spectec/src/backend-interpreter/runner.ml | 13 +++-- 7 files changed, 91 insertions(+), 43 deletions(-) diff --git a/interpreter/README.md b/interpreter/README.md index 0693b445f..d631791bf 100644 --- a/interpreter/README.md +++ b/interpreter/README.md @@ -453,7 +453,7 @@ action: const: ( .const ) ;; number value ( + ) ;; vector value - ( ref.null ? ) ;; null reference + ( ref.null ) ;; null reference ( ref.host ) ;; host reference ( ref.extern ) ;; external host reference diff --git a/interpreter/script/js.ml b/interpreter/script/js.ml index b92d88525..b2a1aa1e1 100644 --- a/interpreter/script/js.ml +++ b/interpreter/script/js.ml @@ -390,30 +390,33 @@ let abs_mask_of = function | I32T | F32T -> I32 Int32.max_int | I64T | F64T -> I64 Int64.max_int -let value v t = - match v.it, t with - | Num n, _ -> [Const (n @@ v.at) @@ v.at] - | Vec s, _ -> [VecConst (s @@ v.at) @@ v.at] - | Ref NullRef, (RefT (_, ht)) -> - [ RefNull (Match.bot_of_heaptype [] ht) @@ v.at ] - | Ref (HostRef n), _ -> - [ Const (I32 n @@ v.at) @@ v.at; - Call (hostref_idx @@ v.at) @@ v.at; +let value v at = + match v with + | Num n -> [Const (n @@ at) @@ at] + | Vec s -> [VecConst (s @@ at) @@ at] + | Ref (HostRef n) -> + [ Const (I32 n @@ at) @@ at; + Call (hostref_idx @@ at) @@ at; ] - | Ref (Extern.ExternRef (HostRef n)), _ -> - [ Const (I32 n @@ v.at) @@ v.at; - Call (hostref_idx @@ v.at) @@ v.at; - ExternConvert Externalize @@ v.at; + | Ref (Extern.ExternRef (HostRef n)) -> + [ Const (I32 n @@ at) @@ at; + Call (hostref_idx @@ at) @@ at; + ExternConvert Externalize @@ at; ] - | Ref _, _ -> assert false + | Ref _ -> assert false + +let literal lit = + match lit.it with + | ValLit v -> value v lit.at + | NullLit ht -> [RefNull (Match.bot_of_heaptype [] ht) @@ lit.at] -let invoke dt vs ts at = +let invoke dt lits at = let dummy = RecT [SubT (Final, [], FuncT ([], []))] in let rts0 = Lib.List32.init subject_type_idx (fun i -> dummy, (dummy, i)) in let rts, i = statify_deftype rts0 dt in List.map (fun (_, (rt, _)) -> rt @@ at) (Lib.List32.drop subject_type_idx rts), ExternFuncT (Idx i), - List.concat (List.map2 value vs ts) @ [Call (subject_idx @@ at) @@ at] + List.concat (List.map literal lits) @ [Call (subject_idx @@ at) @@ at] let get t at = [], ExternGlobalT t, [GlobalGet (subject_idx @@ at) @@ at] @@ -435,6 +438,7 @@ let type_of_vec_pat = function let type_of_ref_pat = function | RefPat ref -> type_of_ref ref.it | RefTypePat ht -> (NoNull, ht) + | NullPat ht -> (Null, ht) let rec type_of_result res = match res.it with @@ -554,6 +558,10 @@ let assert_return ress ts at = [ RefTest (NoNull, t) @@ at; Test (I32 I32Op.Eqz) @@ at; BrIf (0l @@ at) @@ at ] + | RefResult (NullPat _) -> + [ RefIsNull @@ at; + Test (I32 I32Op.Eqz) @@ at; + BrIf (0l @@ at) @@ at ] | EitherResult ress -> let idx = Lib.List32.length !locals in locals := !locals @ [Local t @@ res.at]; @@ -704,12 +712,17 @@ let of_ref r = | HostRef n | Extern.ExternRef (HostRef n) -> "hostref(" ^ Int32.to_string n ^ ")" | _ -> assert false -let of_value v = - match v.it with +let of_val v = + match v with | Num n -> of_num n | Vec v -> of_vec v | Ref r -> of_ref r +let of_lit lit = + match lit.it with + | ValLit v -> of_val v + | NullLit _ -> "null" + let of_nan = function | CanonicalNan -> "\"nan:canonical\"" | ArithmeticNan -> "\"nan:arithmetic\"" @@ -728,6 +741,7 @@ let of_vec_pat = function let of_ref_pat = function | RefPat r -> of_ref r.it | RefTypePat t -> "\"ref." ^ string_of_heaptype t ^ "\"" + | NullPat t -> "\"ref.null\"" let rec of_result res = match res.it with @@ -753,16 +767,16 @@ let of_wrapper env x_opt name wrap_action wrap_assertion at = let of_action env act = match act.it with - | Invoke (x_opt, name, vs) -> + | Invoke (x_opt, name, lits) -> "call(" ^ of_inst_opt env x_opt ^ ", " ^ of_name name ^ ", " ^ - "[" ^ String.concat ", " (List.map of_value vs) ^ "])", + "[" ^ String.concat ", " (List.map of_lit lits) ^ "])", (match lookup_export env x_opt name act.at with | ExternFuncT (Def dt) -> - let (ins, out) as ft = functype_of_comptype (expand_deftype dt) in + let (_, ts) as ft = functype_of_comptype (expand_deftype dt) in if is_js_functype ft then None else - Some (of_wrapper env x_opt name (invoke dt vs ins), out) + Some (of_wrapper env x_opt name (invoke dt lits), ts) | _ -> None ) | Get (x_opt, name) -> diff --git a/interpreter/script/runner.ml b/interpreter/script/runner.ml index b55947214..0ff9fc0c0 100644 --- a/interpreter/script/runner.ml +++ b/interpreter/script/runner.ml @@ -265,6 +265,7 @@ let string_of_ref_pat (p : ref_pat) = match p with | RefPat r -> Value.string_of_ref r.it | RefTypePat t -> Types.string_of_heaptype t + | NullPat t -> "null" let rec string_of_result r = match r.it with @@ -285,6 +286,7 @@ let rec type_of_result r = | VecResult (VecPat v) -> Types.VecT (Value.type_of_vec v) | RefResult (RefPat r) -> Types.RefT (Value.type_of_ref r.it) | RefResult (RefTypePat t) -> Types.(RefT (NoNull, t)) (* assume closed *) + | RefResult (NullPat t) -> Types.(RefT (Null, t)) | EitherResult rs -> let ts = List.map type_of_result rs in List.fold_left (fun t1 t2 -> @@ -357,6 +359,16 @@ let register_instance name inst = (* Running *) +let value_of_lit lit = + match lit.it with + | ValLit v -> v + | NullLit ht -> Value.(Ref NullRef) + +let type_of_lit lit = + match lit.it with + | ValLit v -> Value.type_of_value v + | NullLit ht -> Types.RefT (Types.Null, ht) + let validity = function | Ok t -> () | Error (at, msg) -> Invalid.error at msg @@ -389,20 +401,20 @@ let run_instantiation m = let run_action act : Value.t list = match act.it with - | Invoke (x_opt, name, vs) -> + | Invoke (x_opt, name, lits) -> trace ("Invoking function \"" ^ Types.string_of_name name ^ "\"..."); let inst = lookup_instance x_opt act.at in (match Engine.module_export inst name with | Some (Engine.ExternFunc f) -> let (ts1, _ts2) = Types.(functype_of_comptype (expand_deftype (Engine.func_type f))) in - if List.length vs <> List.length ts1 then + if List.length lits <> List.length ts1 then Script.error act.at "wrong number of arguments"; - List.iter2 (fun v t -> - if not (Match.match_valtype [] (Value.type_of_value v.it) t) then - Script.error v.at "wrong type of argument" - ) vs ts1; - result (Engine.func_call f (List.map (fun v -> v.it) vs)) + List.iter2 (fun lit t -> + if not (Match.match_valtype [] (type_of_lit lit) t) then + Script.error lit.at "wrong type of argument" + ) lits ts1; + result (Engine.func_call f (List.map value_of_lit lits)) | Some _ -> Assert.error act.at "export is not a function" | None -> Assert.error act.at "undefined export" ) @@ -461,6 +473,7 @@ let assert_ref_pat r p = | RefTypePat Types.FuncHT, Instance.FuncRef _ | RefTypePat Types.ExnHT, Exn.ExnRef _ | RefTypePat Types.ExternHT, _ -> true + | NullPat _, Value.NullRef -> true | _ -> false let rec assert_result v r = diff --git a/interpreter/script/script.ml b/interpreter/script/script.ml index f1379c024..c2ece6ac8 100644 --- a/interpreter/script/script.ml +++ b/interpreter/script/script.ml @@ -3,7 +3,11 @@ type var = string Source.phrase type Value.ref_ += HostRef of int32 type num = Value.num Source.phrase type ref_ = Value.ref_ Source.phrase -type literal = Value.t Source.phrase + +type literal = literal' Source.phrase +and literal' = + | ValLit of Value.t + | NullLit of Types.heaptype type definition = definition' Source.phrase and definition' = @@ -30,6 +34,7 @@ type vec_pat = type ref_pat = | RefPat of ref_ | RefTypePat of Types.heaptype + | NullPat of Types.heaptype type result = result' Source.phrase and result' = diff --git a/interpreter/text/arrange.ml b/interpreter/text/arrange.ml index 811f8b48e..54d5c71fd 100644 --- a/interpreter/text/arrange.ml +++ b/interpreter/text/arrange.ml @@ -771,17 +771,22 @@ let num mode = if mode = `Binary then hex_string_of_num else string_of_num let vec mode = if mode = `Binary then hex_string_of_vec else string_of_vec let ref_ = function - | NullRef -> Node ("ref.null", []) + | Value.NullRef -> Node ("ref.null", []) | Script.HostRef n -> Node ("ref.host " ^ nat32 n, []) | Extern.ExternRef (Script.HostRef n) -> Node ("ref.extern " ^ nat32 n, []) | _ -> assert false -let literal mode lit = - match lit.it with +let value mode v = + match v with | Num n -> Node (constop n ^ " " ^ num mode n, []) | Vec v -> Node (vconstop v ^ " " ^ vec mode v, []) | Ref r -> ref_ r +let literal mode lit = + match lit.it with + | ValLit v -> value mode v + | NullLit t -> Node ("ref.null " ^ heaptype t, []) + let definition mode isdef x_opt def = try match mode with @@ -830,7 +835,7 @@ let nanop (n : nanop) = | _ -> . let num_pat mode = function - | NumPat n -> literal mode (Value.Num n.it @@ n.at) + | NumPat n -> literal mode (ValLit (Value.Num n.it) @@ n.at) | NanPat nan -> Node (constop nan.it ^ " " ^ nanop nan, []) let lane_pat mode pat shape = @@ -851,6 +856,7 @@ let vec_pat mode = function let ref_pat = function | RefPat r -> ref_ r.it | RefTypePat t -> Node ("ref." ^ heaptype t, []) + | NullPat t -> Node ("ref.null " ^ heaptype t, []) let rec result mode res = match res.it with diff --git a/interpreter/text/parser.mly b/interpreter/text/parser.mly index 1bcc33393..8d0cfdd1e 100644 --- a/interpreter/text/parser.mly +++ b/interpreter/text/parser.mly @@ -1500,14 +1500,17 @@ literal_vec : | LPAR VEC_CONST VECSHAPE list(num) RPAR { snd (vec $2 $3 $4 $sloc) } literal_ref : - | LPAR REF_NULL heaptype? RPAR { Value.NullRef } | LPAR REF_HOST NAT RPAR { Script.HostRef (nat32 $3 $loc($3)) } | LPAR REF_EXTERN NAT RPAR { Extern.ExternRef (Script.HostRef (nat32 $3 $loc($3))) } +literal_null : + | LPAR REF_NULL heaptype RPAR { $3 (empty_context ()) } + literal : - | literal_num { Value.Num $1 @@ $sloc } - | literal_vec { Value.Vec $1 @@ $sloc } - | literal_ref { Value.Ref $1 @@ $sloc } + | literal_num { ValLit (Value.Num $1) @@ $sloc } + | literal_vec { ValLit (Value.Vec $1) @@ $sloc } + | literal_ref { ValLit (Value.Ref $1) @@ $sloc } + | literal_null { NullLit $1 @@ $sloc } numpat : | num { fun sh -> vec_lane_lit sh $1.it $1.at } @@ -1517,6 +1520,8 @@ result : | literal_num { NumResult (NumPat ($1 @@ $sloc)) @@ $sloc } | LPAR CONST NAN RPAR { NumResult (NanPat (nanop $2 ($3 @@ $loc($3)))) @@ $sloc } | literal_ref { RefResult (RefPat ($1 @@ $sloc)) @@ $sloc } + | LPAR REF_NULL RPAR { RefResult (RefPat (Value.NullRef @@ $sloc)) @@ $sloc } + | LPAR REF_NULL heaptype RPAR { RefResult (NullPat ($3 (empty_context ()))) @@ $sloc } | LPAR REF RPAR { RefResult (RefTypePat AnyHT) @@ $sloc } | LPAR REF_EQ RPAR { RefResult (RefTypePat EqHT) @@ $sloc } | LPAR REF_I31 RPAR { RefResult (RefTypePat I31HT) @@ $sloc } diff --git a/spectec/src/backend-interpreter/runner.ml b/spectec/src/backend-interpreter/runner.ml index babfc26d4..e5a925b3e 100644 --- a/spectec/src/backend-interpreter/runner.ml +++ b/spectec/src/backend-interpreter/runner.ml @@ -128,11 +128,16 @@ let err_exit = ref true (** Main functions **) +let value_of_arg = function + | ValLit v -> v + | NullLit _ -> Value.(Ref NullRef) + let invoke module_name funcname args = - log "[Invoking %s %s...]\n" funcname (Value.string_of_values args); + let values = List.map value_of_arg args in + log "[Invoking %s %s...]\n" funcname (Value.string_of_values values); let funcaddr = get_export_addr funcname module_name in - Interpreter.invoke [funcaddr; al_of_list al_of_value args] + Interpreter.invoke [funcaddr; al_of_list al_of_value values] let get_global_value module_name globalname = @@ -296,10 +301,10 @@ let run_wasm' args module_ = (* TODO: Only Int32 arguments/results are acceptable *) match args with | funcname :: args' -> - let make_value s = Value.Num (I32 (Int32.of_string s)) in + let make_lit s = ValLit (Value.Num (I32 (Int32.of_string s))) in (* Invoke *) - invoke (Register.get_module_name None) funcname (List.map make_value args') + invoke (Register.get_module_name None) funcname (List.map make_lit args') (* Print invocation result *) |> al_to_list al_to_value |> Value.string_of_values From 8cb8dc91b5eb5253bf3e456e11e2da96e35bf80e Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Tue, 31 Mar 2026 13:00:37 +0200 Subject: [PATCH 114/235] [spectec] Restrict reduction of equality to values --- spectec/doc/semantics/il/5-reduction.spectec | 26 ++++++++------------ spectec/src/il/eval.ml | 9 +++---- 2 files changed, 14 insertions(+), 21 deletions(-) diff --git a/spectec/doc/semantics/il/5-reduction.spectec b/spectec/doc/semantics/il/5-reduction.spectec index 62c5fc4a2..2edb6d5a6 100644 --- a/spectec/doc/semantics/il/5-reduction.spectec +++ b/spectec/doc/semantics/il/5-reduction.spectec @@ -155,21 +155,21 @@ rule Step_exp/CMP-ctx2: -- Step_exp: S |- e_2 ~> e_2' rule Step_exp/CMP-EQ-true: - S |- CMP EQ e_1 e_2 ~> BOOL true - -- if e_1 = e_2 + S |- CMP EQ val_1 val_2 ~> BOOL true + -- if val_1 = val_2 rule Step_exp/CMP-EQ-false: S |- CMP EQ val_1 val_2 ~> BOOL false -- if val_1 =/= val_2 -rule Step_exp/CMP-NE-false: - S |- CMP NE e_1 e_2 ~> BOOL false - -- if e_1 = e_2 - rule Step_exp/CMP-NE-true: S |- CMP NE val_1 val_2 ~> BOOL true -- if val_1 =/= val_2 +rule Step_exp/CMP-NE-false: + S |- CMP NE val_1 val_2 ~> BOOL false + -- if val_1 = val_2 + rule Step_exp/CMP-NUM: S |- CMP numcmpop num_1 num_2 ~> BOOL $numcmp(numcmpop, num_1, num_2) @@ -557,6 +557,8 @@ rule Step_argmatch/EXP-fail: S |- `{q*} (EXP e / EXP e') ~>_s `{} FAIL -- Step_expmatch: S |- `{q*} (e / e') ~>_s `{} FAIL +;; TODO: EXP disjointness? + rule Step_argmatch_plain/ctx1: S |- a / a' ~> a'' / a' @@ -566,14 +568,6 @@ rule Step_argmatch_plain/ctx2: S |- a / a' ~> a / a'' -- Step_arg: S |- a' ~> a'' -rule Step_argmatch_plain/eq: - S |- a / a ~> eps - -;; TODO: disjointness -;;rule Step_argmatch_plain/neq: -;; S |- a / a' ~> FAIL -;; -- Disj_arg: S |- a =/= a' - rule Step_expmatch/plain: S |- `{q*} (e / e')* ~>_{} `{q*} (e'' / e''')* @@ -616,7 +610,7 @@ rule Step_expmatch_plain/ctx2: -- Step_exp: S |- e' ~> e'' rule Step_expmatch_plain/eq: - S |- e / e ~> eps + S |- val / val ~> eps rule Step_expmatch_plain/UN-PLUS: S |- num / UN PLUS e ~> num / e @@ -721,7 +715,7 @@ rule Step_expmatch_plain/SUB-SUB: SUB e t_1 t'_1 / e' -- Sub_typ: $storeenv(S) |- t_1 <: t'_1 -;; TODO: disjointness +;; TODO: disjointness? rule Step_expmatch_plain/SUB-TUP: S |- TUP e^n / SUB e' (TUP (x_1 `: t'_1)^n) (TUP (x_2 `: t'_2)^n) ~> diff --git a/spectec/src/il/eval.ml b/spectec/src/il/eval.ml index 7bbaddb15..8c9679a5b 100644 --- a/spectec/src/il/eval.ml +++ b/spectec/src/il/eval.ml @@ -179,10 +179,8 @@ and reduce_exp env e : exp = let e1' = reduce_exp env e1 in let e2' = reduce_exp env e2 in (match op, e1'.it, e2'.it with - | `EqOp, _, _ when Eq.eq_exp e1' e2' -> BoolE true - | `NeOp, _, _ when Eq.eq_exp e1' e2' -> BoolE false - | `EqOp, _, _ when is_normal_exp e1' && is_normal_exp e2' -> BoolE false - | `NeOp, _, _ when is_normal_exp e1' && is_normal_exp e2' -> BoolE true + | `EqOp, _, _ when is_normal_exp e1' && is_normal_exp e2' -> BoolE (Eq.eq_exp e1' e2') + | `NeOp, _, _ when is_normal_exp e1' && is_normal_exp e2' -> BoolE (not (Eq.eq_exp e1' e2')) | #Num.cmpop as op', NumE n1, NumE n2 -> (match Num.cmp op' n1 n2 with | Some b -> BoolE b @@ -686,7 +684,8 @@ and match_exp' env s e1 e2 : subst option = (fun r -> fmt "%s" (opt il_subst r)) ) @@ fun _ -> assert (Eq.eq_exp e1 (reduce_exp env e1)); - if Eq.eq_exp e1 e2 then Some s else (* HACK around subtype elim pass introducing calls on LHS's *) + (* HACK around subtype elim pass introducing calls on LHS's *) + if Eq.eq_exp e1 e2 && is_normal_exp e1 && is_normal_exp e2 then Some s else match e1.it, (reduce_exp env (Subst.subst_exp s e2)).it with | _, VarE id when Subst.mem_varid s id -> (* A pattern variable already in the substitution is non-linear *) From 80d3d19155feb54402908b41c96f54389c8b2d1f Mon Sep 17 00:00:00 2001 From: Ryan Hunt Date: Tue, 31 Mar 2026 11:15:27 -0500 Subject: [PATCH 115/235] [js-api] Editorial improvements (#2126) * [js-api] Fix Instance constructor variable shadowing |module| was overwritten with its [[Module]] slot before reading [[BuiltinSets]] and [[ImportedStringModule]], which are slots on the JS Module wrapper, not the internal module. * [js-api] Fix If/Else-if for objectkind in ToWebAssemblyValue * [js-api] Fix loop variable shadowing in Tag constructor * [js-api] Fix signed_31 variable in ToWebAssemblyValue i31ref conversion The condition used i31 on both sides of signed_31(), making it a circular tautology. Every other similar conversion in the algorithm uses the unsigned variable (e.g. signed_64(u64)). Change to u31. * [js-api] Fix create a builtin function: missing store and wrong variable name |store| was used without being retrieved first, and |functype| didn't match the parameter name |funcType|. * [js-api] Fix wrong index into maybeBuiltin in validate an import for builtins find a builtin returns (builtinSetName, builtin) where builtin is (name, funcType, steps). The funcType is at maybeBuiltin[1][1], not maybeBuiltin[0][1] which indexes into the string name. * [js-api] Use embedding spec tag_alloc instead of a local definition Remove the js-api's local tag_alloc(store, parameters) and replace all callers with the embedding spec's tag_alloc(store, tagtype), passing an inline functype as the tag type. * [js-api] Use ToJSValue to unwrap JSTag exception payload When re-throwing a JS exception that was caught by WebAssembly, the payload is a list of WebAssembly values from exn_read. For the JSTag, payload[0] is ref.extern (ref.host hostaddr), not a raw host address. Passing it directly to 'retrieving a host value' is wrong since that algorithm expects a host address integer. Use ToJSValue to correctly unwrap the value. * [js-api] Fix missing type argument to ToWebAssemblyValue in intoCharCodeArray ToWebAssemblyValue takes two arguments (value, type). The call was missing the element type. The array type is (array (mut i16)) whose elements are stored as i32. * [js-api] Fix Table.grow to return AddressValue via U64ToAddressValue table_size returns a raw u64. Table.grow's IDL signature returns AddressValue. The length getter and Memory.grow both use U64ToAddressValue for this conversion; Table.grow was missing it. * [js-api] Fix memory.grow hook to use instruction's memory index The hook previously hardcoded memaddrs[0], which is wrong for multi-memory modules where memory.grow x can target any memory index. Use the instruction's immediate x to index memaddrs. * [js-api] Fix memory.grow hook failure check for i64 memories For 64-bit memories, memory.grow pushes i64.const (-1) on failure, not i32.const (-1). The previous check only matched the i32 case, so for a failed i64 grow the hook incorrectly called Refresh the memory buffer, detaching the ArrayBuffer even though the memory size did not change. * [js-api] Fix exception check in call an Exported Function func_invoke returns (store, val* | exception | error) where exception is defined in the core embedding spec as EXCEPTION exnaddr. The check was using [=THROW=] [=ref.exn=] which is undefined notation. Use [=exception=] to match the core embedder spec's type. * [js-api] Read store before func_alloc in create a host function The outer algorithm used |store| in the func_alloc call without ever binding it. The |store| inside the hostfunc closure is a separate binding read at invocation time, not at definition time. * [js-api] Add missing ?/! on ToWebAssemblyValue calls * [js-api] Add missing ! to ToJSValue calls ToJSValue is infallible. Add ! to all call sites that are missing it for consistency with the existing pattern in run a host function and create a builtin function. * [js-api] Include [[ObjectKind]] in MakeBasicObject slot list Per ECMA-262, all internal slots must be declared in the MakeBasicObject call. [[ObjectKind]] was set immediately after but was missing from the initial slot list. * [js-api] Return after rejecting on compile error in asynchronously compile * [js-api] Fix read the imports assert to check qualified builtin set name The map is keyed by qualified names ("wasm:" prefix) but the assert checked for the unqualified name, which was never present and made the assert vacuously true. Compute the qualified name first and assert against that. * [js-api] Use HasProperty instead of map 'contains' for exports object The builtin/string exports object is a plain JS object, not an Infra ordered map. Use HasProperty to check for component name presence. * [js-api, web-api] Editorial fixes - Fix elementType case inconsistency in Table constructor - Fix "Let return" typo in ToJSValue - Fix missing "be" in ToWebAssemblyValue - Fix "fo" typo in instantiate a builtin set - Fix indentation of 'Return handled' in HostResizeArrayBuffer - Fix spurious space in get the JavaScript exception tag links - Fix 'a import' typo in validate builtins display text - Fix 'is' typo in Set [[ArrayBufferMaxByteLength]] step - Update WebIDL URL to webidl.spec.whatwg.org - Use [=/new=] consistently for Tag and Exception object creation - Use 'surrounding agent' consistently instead of 'current agent' - Update TC39 URL to tc39.es/ecma262 - Remove dead and duplicate ECMASCRIPT anchor entries - Fix 'appending' typo in embedding interface URL - Fix tag address pluralization in Tag object cache description - Use [=/new=] for Module object creation in construct a WebAssembly module object - Fix list item numbering in ToJSValue i32 branch - Remove unused 'instantiate a WebAssembly module' anchor - Rename Instance constructor parameter to moduleObject - Fix missing period in Exception constructor --- document/js-api/index.bs | 141 ++++++++++----------- document/legacy/exceptions/js-api/index.bs | 4 +- document/web-api/index.bs | 3 +- 3 files changed, 71 insertions(+), 77 deletions(-) diff --git a/document/js-api/index.bs b/document/js-api/index.bs index 97bb29464..a8374f279 100644 --- a/document/js-api/index.bs +++ b/document/js-api/index.bs @@ -35,7 +35,7 @@ Date: now
-urlPrefix: https://tc39.github.io/ecma262/; spec: ECMASCRIPT
+urlPrefix: https://tc39.es/ecma262/; spec: ECMASCRIPT
     type: interface; for: ECMAScript
         text: ArrayBuffer; url: sec-arraybuffer-objects
     type: exception; for: ECMAScript
@@ -68,14 +68,10 @@ urlPrefix: https://tc39.github.io/ecma262/; spec: ECMASCRIPT
             text: is an Object
             text: is not an Object
         text: current Realm; url: current-realm
-        text: ObjectCreate; url: sec-objectcreate
         text: CreateBuiltinFunction; url: sec-createbuiltinfunction
-        text: SetFunctionName; url: sec-setfunctionname
-        text: SetFunctionLength; url: sec-setfunctionlength
         text: the Number value; url: sec-ecmascript-language-types-number-type
         text: is a Number; url: sec-ecmascript-language-types-number-type
         text: is a BigInt; url: sec-ecmascript-language-types-bigint-type
-        text: NumberToRawBytes; url: sec-numbertorawbytes
         text: Built-in Function Objects; url: sec-built-in-function-objects
         text: NativeError Object Structure; url: sec-nativeerror-object-structure
         text: CreateArrayFromList; url: sec-createarrayfromlist
@@ -85,8 +81,6 @@ urlPrefix: https://tc39.github.io/ecma262/; spec: ECMASCRIPT
         text: BigInt; url: #sec-ecmascript-language-types-bigint-type
         text: MakeBasicObject; url: #sec-makebasicobject
         text: ℝ; url: #ℝ
-        text: Built-in Function Objects; url: sec-built-in-function-objects
-        text: NativeError Object Structure; url: sec-nativeerror-object-structure
         text: 𝔽; url: #𝔽
         text: ℤ; url: #ℤ
         text: mathematical value; url: #mathematical-value
@@ -102,7 +96,7 @@ urlPrefix: https://tc39.github.io/ecma262/; spec: ECMASCRIPT
         text: Array; url: sec-array-exotic-objects
         text: BigInt; url: sec-ecmascript-language-types-bigint-type
 urlPrefix: https://webassembly.github.io/spec/core/; spec: WebAssembly; type: dfn
-    text: embedding interface; url: appending/embedding.html
+    text: embedding interface; url: appendix/embedding.html
     text: scope; url: intro/introduction.html#scope
     url: valid/modules.html#valid-module
         text: valid
@@ -168,6 +162,7 @@ urlPrefix: https://webassembly.github.io/spec/core/; spec: WebAssembly; type: df
     text: match_valtype; url: appendix/embedding.html#embed-match-valtype
     text: match_externtype; url: appendix/embedding.html#embed-match-externtype
     text: error; url: appendix/embedding.html#embed-error
+    text: exception; url: appendix/embedding.html#embed-error
     text: store; url: exec/runtime.html#syntax-store
     text: address type; url: syntax/types.html#syntax-addrtype
     text: limits; url: syntax/types.html#syntax-limits
@@ -251,7 +246,7 @@ urlPrefix: https://webassembly.github.io/spec/core/; spec: WebAssembly; type: df
     text: signed_64; url: exec/numerics.html#aux-signed
     text: sequence; url: syntax/conventions.html#grammar-notation
     text: exception; for: tagtype/attribute; url: syntax/types.html#syntax-tagtype
-urlPrefix: https://heycam.github.io/webidl/; spec: WebIDL
+urlPrefix: https://webidl.spec.whatwg.org/; spec: WebIDL
     type: dfn
         text: create a namespace object; url: create-a-namespace-object
         text: [EnforceRange]; url: #EnforceRange
@@ -353,7 +348,7 @@ Each [=agent=] is associated with the following [=ordered map=]s:
     * The Exported Function cache, mapping [=function address=]es to [=Exported Function=] objects.
     * The Exported GC Object cache, mapping [=struct address=]es and [=array address=]es to [=Exported GC Object=] objects.
     * The Global object cache, mapping [=global address=]es to {{Global}} objects.
-    * The Tag object cache, mapping [=tag addresses=] to {{Tag}} objects.
+    * The Tag object cache, mapping [=tag address=]es to {{Tag}} objects.
     * The Exception object cache, mapping [=exception address=]es to {{Exception}} objects.
     * The Host value cache, mapping [=host address=]es to values.
 
@@ -413,7 +408,7 @@ To validate builtins and imported string for a WebAssembly module fro
         1. Let |stringExternType| be `global const (ref extern)`.
         1. If [=match_externtype=](|stringExternType|, |importExternType|) is false, return false
     1. Else,
-        1. If [=validate an import for builtins|validating a import for builtin=] with |import| and |builtinSetNames| is false, return false.
+        1. If [=validate an import for builtins|validating an import for builtins=] with |import| and |builtinSetNames| is false, return false.
 1. Return true.
 
 
@@ -439,7 +434,7 @@ A {{Module}} object represents a single WebAssembly module. Each {{Module}} obje
To construct a WebAssembly module object from a module |module|, source bytes |bytes|, enabled builtins |builtinSetNames|, and |importedStringModule|, perform the following steps: - 1. Let |moduleObject| be a new {{Module}} object. + 1. Let |moduleObject| be a [=/new=] {{Module}}. 1. Set |moduleObject|.\[[Module]] to |module|. 1. Set |moduleObject|.\[[Bytes]] to |bytes|. 1. Set |moduleObject|.\[[BuiltinSets]] to |builtinSetNames|. @@ -453,8 +448,8 @@ A {{Module}} object represents a single WebAssembly module. Each {{Module}} obje 1. Let |promise| be [=a new promise=]. 1. Run the following steps [=in parallel=]: 1. [=compile a WebAssembly module|Compile the WebAssembly module=] |bytes| and store the result as |module|. - 1. [=Queue a task=] to perform the following steps. If |taskSource| was provided, queue the task on that task source. - 1. If |module| is [=error=], reject |promise| with a {{CompileError}} exception. + 1. [=Queue a task=] on |taskSource|, if provided, to perform the following steps: + 1. If |module| is [=error=], reject |promise| with a {{CompileError}} exception and return. 1. Let |builtinSetNames| be |options|["builtins"]. 1. Let |importedStringModule| be |options|["importedStringConstants"]. 1. If [=validate builtins and imported string for a WebAssembly module|validating builtins and imported strings=] for |module| with |builtinSetNames| and |importedStringModule| is false, reject |promise| with a {{CompileError}} exception. @@ -490,10 +485,10 @@ To instantiate imported strings with module |module| and |importedStr 1. If |module|.[=imports=] [=list/is empty|is not empty=], and |importObject| is undefined, throw a {{TypeError}} exception. 1. Let |builtinOrStringImports| be the ordered map « ». 1. [=list/iterate|For each=] |builtinSetName| of |builtinSetNames|, - 1. Assert: |builtinOrStringImports| does not contain |builtinSetName| + 1. Let |builtinSetQualifiedName| be |builtinSetName| prefixed with "wasm:" + 1. Assert: |builtinOrStringImports| does not contain |builtinSetQualifiedName| 1. If |builtinSetName| does not refer to a builtin set, then [=iteration/continue=]. 1. Let |exportsObject| be the result of [=instantiate a builtin set=] with |builtinSetName| - 1. Let |builtinSetQualifiedName| be |builtinSetName| prefixed with "wasm:" 1. [=map/set|Set=] |builtinOrStringImports|[|builtinSetQualifiedName|] to |exportsObject| 1. If |importedStringModule| is not null, 1. Let |exportsObject| be the result of [=instantiate imported strings=] with |module| and |importedStringModule| @@ -502,7 +497,7 @@ To instantiate imported strings with module |module| and |importedStr 1. [=list/iterate|For each=] (|moduleName|, |componentName|, |externtype|) of [=module_imports=](|module|), 1. If |builtinOrStringImports| [=map/exist|contains=] |moduleName|, 1. Let |o| be |builtinOrStringImports|[|moduleName|]. - 1. If |o| [=is not an Object=] or if |o| [=map/exist|does not contain=] |componentName|, + 1. If |o| [=is not an Object=] or if [$HasProperty$](|o|, |componentName|) is false, 1. Set |o| to [=?=] [$Get$](|importObject|, |moduleName|). 1. Else, 1. Let |o| be [=?=] [$Get$](|importObject|, |moduleName|). @@ -787,10 +782,10 @@ interface Instance {
- The Instance(|module|, |importObject|) constructor, when invoked, runs the following steps: - 1. Let |module| be |module|.\[[Module]]. - 1. Let |builtinSetNames| be |module|.\[[BuiltinSets]]. - 1. Let |importedStringModule| be |module|.\[[ImportedStringModule]]. + The Instance(|moduleObject|, |importObject|) constructor, when invoked, runs the following steps: + 1. Let |builtinSetNames| be |moduleObject|.\[[BuiltinSets]]. + 1. Let |importedStringModule| be |moduleObject|.\[[ImportedStringModule]]. + 1. Let |module| be |moduleObject|.\[[Module]]. 1. [=Read the imports=] of |module| with imports |importObject|, |builtinSetNames|, and |importedStringModule|, and let |imports| be the result. 1. [=Instantiate the core of a WebAssembly module=] |module| with |imports|, and let |instance| be the result. 1. [=initialize an instance object|Initialize=] **this** from |module| and |instance|. @@ -847,7 +842,7 @@ which can be simultaneously referenced by multiple {{Instance}} objects. Each 1. Let |buffer| be a new {{ArrayBuffer}} with the internal slots \[[ArrayBufferData]], \[[ArrayBufferByteLength]], \[[ArrayBufferMaxByteLength]], and \[[ArrayBufferDetachKey]]. 1. Set |buffer|.\[[ArrayBufferData]] to |block|. 1. Set |buffer|.\[[ArrayBufferByteLength]] to |length|. - 1. Set |buffer|.\[[ArrayBufferMaxByteLength]] is |maxsize|. + 1. Set |buffer|.\[[ArrayBufferMaxByteLength]] to |maxsize|. 1. Set |buffer|.\[[ArrayBufferDetachKey]] to "WebAssembly.Memory". 1. Return |buffer|.
@@ -925,13 +920,13 @@ which can be simultaneously referenced by multiple {{Instance}} objects. Each 1. Return [=U64ToAddressValue=](|ret|, |addrtype|).
-Immediately after a WebAssembly [=memory.grow=] instruction executes, perform the following steps: +Immediately after a WebAssembly [=memory.grow=] |x| instruction executes, perform the following steps:
- 1. If the top of the stack is not [=i32.const=] (−1), + 1. If the top of the stack is not [=i32.const=] (−1) and the top of the stack is not [=i64.const=] (−1), 1. Let |frame| be the [=current frame=]. - 1. Assert: due to validation, |frame|.[=frame/module=].[=moduleinst/memaddrs=][0] exists. - 1. Let |memaddr| be the memory address |frame|.[=frame/module=].[=moduleinst/memaddrs=][0]. + 1. Assert: due to validation, |frame|.[=frame/module=].[=moduleinst/memaddrs=][|x|] exists. + 1. Let |memaddr| be the memory address |frame|.[=frame/module=].[=moduleinst/memaddrs=][|x|]. 1. [=Refresh the memory buffer=] of |memaddr|.
@@ -980,7 +975,7 @@ Immediately after a WebAssembly [=memory.grow=] instruction executes, perform th 1. Throw a {{RangeError}} exception. 1. Let |delta| be |lengthDelta| ÷ 65536. 1. [=Grow the memory buffer=] associated with |memaddr| by |delta|. - 1. Return handled. + 1. Return handled. 1. Otherwise, return unhandled. @@ -1045,13 +1040,13 @@ Each {{Table}} object has a \[[Table]] internal slot, which is a [=table address 1. If |descriptor|["address"] [=map/exists=], let |addrtype| be |descriptor|["address"]; otherwise, let |addrtype| be "i32". 1. Let |initial| be [=?=] [=AddressValueToU64=](|descriptor|["initial"], |addrtype|). 1. If |descriptor|["maximum"] [=map/exists=], let |maximum| be [=?=] [=AddressValueToU64=](|descriptor|["maximum"], |addrtype|); otherwise, let |maximum| be empty. - 1. Let |type| be the [=table type=] |addrtype| { [=limits|min=] |initial|, [=limits|max=] |maximum| } |elementType|. + 1. Let |type| be the [=table type=] |addrtype| { [=limits|min=] |initial|, [=limits|max=] |maximum| } |elementtype|. 1. If |type| is not [=valid tabletype|valid=], throw a {{RangeError}} exception. 1. If |value| is missing, 1. Let |ref| be [=DefaultValue=](|elementtype|). 1. Assert: |ref| is not [=error=]. 1. Otherwise, - 1. Let |ref| be [=?=] [=ToWebAssemblyValue=](|value|, |elementType|). + 1. Let |ref| be [=?=] [=ToWebAssemblyValue=](|value|, |elementtype|). 1. Let |store| be the [=surrounding agent=]'s [=associated store=]. 1. Let (|store|, |tableaddr|) be [=table_alloc=](|store|, |type|, |ref|). If allocation fails, throw a {{RangeError}} exception. 1. Set the [=surrounding agent=]'s [=associated store=] to |store|. @@ -1076,7 +1071,7 @@ Each {{Table}} object has a \[[Table]] internal slot, which is a [=table address Note: The above exception can happen due to either insufficient memory or an invalid size parameter. 1. Set the [=surrounding agent=]'s [=associated store=] to |result|. - 1. Return |initialSize|. + 1. Return [=U64ToAddressValue=](|initialSize|, |addrtype|).
@@ -1098,7 +1093,7 @@ Each {{Table}} object has a \[[Table]] internal slot, which is a [=table address 1. Let |index64| be [=?=] [=AddressValueToU64=](|index|, |addrtype|). 1. Let |result| be [=table_read=](|store|, |tableaddr|, |index64|). 1. If |result| is [=error=], throw a {{RangeError}} exception. - 1. Return [=ToJSValue=](|result|). + 1. Return [=!=] [=ToJSValue=](|result|).
@@ -1187,7 +1182,7 @@ which can be simultaneously referenced by multiple {{Instance}} objects. Each
The algorithm DefaultValue(|valuetype|) performs the following steps: - 1. If |valuetype| equals [=externref=], return [=ToWebAssemblyValue=](undefined, |valuetype|). + 1. If |valuetype| equals [=externref=], return [=!=] [=ToWebAssemblyValue=](undefined, |valuetype|). 1. Return [=val_default=](|valuetype|).
@@ -1201,22 +1196,22 @@ which can be simultaneously referenced by multiple {{Instance}} objects. Each 1. Let |value| be [=DefaultValue=](|valuetype|). 1. Assert: |value| is not [=error=]. 1. Otherwise, - 1. Let |value| be [=ToWebAssemblyValue=](|v|, |valuetype|). + 1. Let |value| be [=?=] [=ToWebAssemblyValue=](|v|, |valuetype|). 1. If |mutable| is true, let |globaltype| be [=var=] |valuetype|; otherwise, let |globaltype| be [=const=] |valuetype|. - 1. Let |store| be the current agent's [=associated store=]. + 1. Let |store| be the [=surrounding agent=]'s [=associated store=]. 1. Let (|store|, |globaladdr|) be [=global_alloc=](|store|, |globaltype|, |value|). - 1. Set the current agent's [=associated store=] to |store|. + 1. Set the [=surrounding agent=]'s [=associated store=] to |store|. 1. [=initialize a global object|Initialize=] **this** from |globaladdr|.
The algorithm GetGlobalValue({{Global}} |global|) performs the following steps: - 1. Let |store| be the current agent's [=associated store=]. + 1. Let |store| be the [=surrounding agent=]'s [=associated store=]. 1. Let |globaladdr| be |global|.\[[Global]]. 1. Let |globaltype| be [=global_type=](|store|, |globaladdr|). 1. If |globaltype| is of the form mut |valuetype| where |valuetype| [=matches/valtype|matches=] [=v128=] or [=exnref=], throw a {{TypeError}}. 1. Let |value| be [=global_read=](|store|, |globaladdr|). - 1. Return [=ToJSValue=](|value|). + 1. Return [=!=] [=ToJSValue=](|value|).
@@ -1224,15 +1219,15 @@ which can be simultaneously referenced by multiple {{Instance}} objects. Each 1. Return [=GetGlobalValue=](**this**). The setter of the value attribute of {{Global}}, when invoked, performs the following steps: - 1. Let |store| be the current agent's [=associated store=]. + 1. Let |store| be the [=surrounding agent=]'s [=associated store=]. 1. Let |globaladdr| be **this**.\[[Global]]. 1. Let |mut| |valuetype| be [=global_type=](|store|, |globaladdr|). 1. If |valuetype| [=matches/valtype|matches=] [=v128=] or [=exnref=], throw a {{TypeError}}. 1. If |mut| is [=const=], throw a {{TypeError}}. - 1. Let |value| be [=ToWebAssemblyValue=](**the given value**, |valuetype|). + 1. Let |value| be [=?=] [=ToWebAssemblyValue=](**the given value**, |valuetype|). 1. Let |store| be [=global_write=](|store|, |globaladdr|, |value|). 1. If |store| is [=error=], throw a {{RangeError}} exception. - 1. Set the current agent's [=associated store=] to |store|. + 1. Set the [=surrounding agent=]'s [=associated store=] to |store|.
@@ -1294,27 +1289,27 @@ This slot holds a [=function address=] relative to the [=surrounding agent=]'s [ 1. [=list/iterate|For each=] |t| of |parameters|, 1. If |argValues|'s [=list/size=] > |i|, let |arg| be |argValues|[|i|]. 1. Otherwise, let |arg| be undefined. - 1. [=list/Append=] [=ToWebAssemblyValue=](|arg|, |t|) to |args|. + 1. [=list/Append=] [=?=] [=ToWebAssemblyValue=](|arg|, |t|) to |args|. 1. Set |i| to |i| + 1. 1. Let (|store|, |ret|) be the result of [=func_invoke=](|store|, |funcaddr|, |args|). 1. Set the [=surrounding agent=]'s [=associated store=] to |store|. 1. If |ret| is [=error=], throw an exception. This exception should be a WebAssembly {{RuntimeError}} exception, unless otherwise indicated by the WebAssembly error mapping. - 1. If |ret| is [=THROW=] [=ref.exn=] |exnaddr|, then + 1. If |ret| is [=exception=] |exnaddr|, then 1. Let |tagaddr| be [=exn_tag=](|store|, |exnaddr|). 1. Let |payload| be [=exn_read=](|store|, |exnaddr|). - 1. Let |jsTagAddr| be the result of [=get the JavaScript exception tag |getting the JavaScript exception tag=]. + 1. Let |jsTagAddr| be the result of [=get the JavaScript exception tag|getting the JavaScript exception tag=]. 1. If |tagaddr| is equal to |jsTagAddr|, - 1. Throw the result of [=retrieving a host value=] from |payload|[0]. + 1. Throw [=!=] [=ToJSValue=](|payload|[0]). 1. Otherwise, 1. Let |exception| be [=create an Exception object|a new Exception=] created from |exnaddr|. 1. Throw |exception|. 1. Let |outArity| be the [=list/size=] of |ret|. 1. If |outArity| is 0, return undefined. - 1. Otherwise, if |outArity| is 1, return [=ToJSValue=](|ret|[0]). + 1. Otherwise, if |outArity| is 1, return [=!=] [=ToJSValue=](|ret|[0]). 1. Otherwise, 1. Let |values| be « ». 1. [=list/iterate|For each=] |r| of |ret|, - 1. [=list/Append=] [=ToJSValue=](|r|) to |values|. + 1. [=list/Append=] [=!=] [=ToJSValue=](|r|) to |values|. 1. Return [$CreateArrayFromList$](|values|).
@@ -1341,7 +1336,7 @@ Note: Exported Functions do not have a \[[Construct]] method and thus it is not 1. Let |wasmValues| be a new, empty [=list=]. 1. If |values|'s [=list/size=] is not |resultsSize|, throw a {{TypeError}} exception. 1. For each |value| and |resultType| in |values| and |results|, paired linearly, - 1. [=list/Append=] [=ToWebAssemblyValue=](|value|, |resultType|) to |wasmValues|. + 1. [=list/Append=] [=?=] [=ToWebAssemblyValue=](|value|, |resultType|) to |wasmValues|. 1. Return |wasmValues|. @@ -1365,12 +1360,13 @@ Note: Exported Functions do not have a \[[Construct]] method and thus it is not 1. If |v| [=implements=] {{Exception}}, 1. Let |address| be |v|.\[[Address]]. 1. Otherwise, - 1. Let |type| be the result of [=get the JavaScript exception tag |getting the JavaScript exception tag=]. + 1. Let |type| be the result of [=get the JavaScript exception tag|getting the JavaScript exception tag=]. 1. Let |payload| be [=!=] [=ToWebAssemblyValue=](|v|, [=externref=]). 1. Let (|store|, |address|) be [=exn_alloc=](|store|, |type|, « |payload| »). 1. Set the [=surrounding agent=]'s [=associated store=] to |store|. 1. Execute the WebAssembly instructions ([=ref.exn=] |address|) ([=throw_ref=]). 1. Otherwise, return |result|.\[[Value]]. + 1. Let |store| be the [=surrounding agent=]'s [=associated store=]. 1. Let (|store|, |funcaddr|) be [=func_alloc=](|store|, |functype|, |hostfunc|). 1. Set the [=surrounding agent=]'s [=associated store=] to |store|. 1. Return |funcaddr|. @@ -1386,7 +1382,7 @@ The algorithm ToJSValue(|w|) coerces a [=WebAssembly value=] to a Jav 1. Return [=ℤ=](|i64| interpreted as a [=mathematical value=]). 1. If |w| is of the form [=i32.const=] |u32|, 1. Let |i32| be [=signed_32=](|u32|). - 2. Return [=𝔽=](|i32| interpreted as a [=mathematical value=]). + 1. Return [=𝔽=](|i32| interpreted as a [=mathematical value=]). 1. If |w| is of the form [=f32.const=] |f32|, 1. If |f32| is [=+∞=] or [=−∞=], return **+∞**𝔽 or **-∞**𝔽, respectively. 1. If |f32| is [=nan=], return **NaN**. @@ -1398,7 +1394,7 @@ The algorithm ToJSValue(|w|) coerces a [=WebAssembly value=] to a Jav 1. If |w| is of the form [=ref.null=] t, return null. 1. If |w| is of the form [=ref.i31=] |u31|, 1. Let |i31| be [=signed_31=](|u31|). - 1. Let return [=𝔽=](|i31|). + 1. Return [=𝔽=](|i31|). 1. If |w| is of the form [=ref.struct=] |structaddr|, return the result of creating [=a new Exported GC Object=] from |structaddr| and "struct". 1. If |w| is of the form [=ref.array=] |arrayaddr|, return the result of creating [=a new Exported GC Object=] from |arrayaddr| and "array". 1. If |w| is of the form [=ref.func=] |funcaddr|, return the result of creating [=a new Exported Function=] from |funcaddr|. @@ -1452,21 +1448,21 @@ The algorithm ToWebAssemblyValue(|v|, |type|) coerces a JavaScript va 1. If |v| is null, 1. Let |r| be [=ref.null=] |heaptype|. 1. Else if [=match_valtype=](|type|, [=ref=] |null| [=heap-type/extern=]), - 1. Let |ref| be [=ToWebAssemblyValue=](|v|, [=ref=] [=heap-type/any=]). + 1. Let |ref| be [=!=] [=ToWebAssemblyValue=](|v|, [=ref=] [=heap-type/any=]). 1. Let |r| be [=ref.extern=] |ref|. 1. Else if |v| is an [=Exported Function=] and [=match_valtype=](|type|, [=ref=] |null| [=heap-type/func=]), 1. Let |funcaddr| be the value of |v|'s \[[FunctionAddress]] internal slot. 1. Let |r| be [=ref.func=] |funcaddr|. 1. Else if |v| [=is a Number=] and |v| is equal to [=?=] [$ToInt32$](|v|) and [=ℝ=](|v|) < 230 and [=ℝ=](|v|) ⩾ -230, - 1. Let |i31| [=?=] [$ToInt32$](|v|). - 1. Let |u31| be the unsigned integer such that |i31| is [=signed_31=](|i31|). + 1. Let |i31| be [=?=] [$ToInt32$](|v|). + 1. Let |u31| be the unsigned integer such that |i31| is [=signed_31=](|u31|). 1. Let |r| be [=ref.i31=] |u31|. 1. Else if |v| is an [=Exported GC Object=], 1. Let |objectaddr| be the value of |v|'s \[[ObjectAddress]] internal slot. 1. Let |objectkind| be the value of |v|'s \[[ObjectKind]] internal slot. 1. If |objectkind| is "array", 1. Let |r| be [=ref.array=] |objectaddr|. - 1. If |objectkind| is "struct", + 1. Else if |objectkind| is "struct", 1. Let |r| be [=ref.struct=] |objectaddr|. 1. Else, 1. Let |map| be the [=surrounding agent=]'s associated [=host value cache=]. @@ -1475,7 +1471,7 @@ The algorithm ToWebAssemblyValue(|v|, |type|) coerces a JavaScript va 1. Let [=host address=] |hostaddr| be the smallest address such that |map|[|hostaddr|] [=map/exists=] is false. 1. [=map/Set=] |map|[|hostaddr|] to |v|. 1. Let |r| be [=ref.host=] |hostaddr|. - 1. Let |store| be the current agent's [=associated store=]. + 1. Let |store| be the [=surrounding agent=]'s [=associated store=]. 1. Let |actualtype| be [=ref_type=](|store|, |r|). 1. If [=match_valtype=](|actualtype|, |type|) is false, 1. Throw a {{TypeError}}. @@ -1513,8 +1509,6 @@ The algorithm U64ToAddressValue(|v|, |addrtype|) converts a [=u64=] v

Tags

-The tag_alloc(|store|, |parameters|) algorithm creates a new [=tag address=] for |parameters| in |store| and returns the updated store and the [=tag address=]. -

Tag types

@@ -1547,7 +1541,7 @@ To create a Tag object from a [=tag address=] |tagAddress|, perform t
 1. Let |map| be the [=surrounding agent=]'s associated [=Tag object cache=].
 1. If |map|[|tagAddress|] [=map/exists=],
     1. Return |map|[|tagAddress|].
-1. Let |tag| be a [=new=] {{Tag}}.
+1. Let |tag| be a [=/new=] {{Tag}}.
 1. [=initialize a Tag object|Initialize=] |tag| from |tagAddress|.
 1. Return |tag|.
 
@@ -1559,11 +1553,11 @@ The new Tag(|type|) constructor
 
 1. Let |parameters| be |type|["parameters"].
 1. Let |wasmParameters| be «».
-1. [=list/iterate|For each=] |type| of |parameters|,
-    1. [=list/Append=] [=ToValueType=](|type|) to |wasmParameters|.
-1. Let |store| be the current agent's [=associated store=].
-1. Let (|store|, |tagAddress|) be [=tag_alloc=](|store|, |wasmParameters|).
-1. Set the current agent's [=associated store=] to |store|.
+1. [=list/iterate|For each=] |paramType| of |parameters|,
+    1. [=list/Append=] [=ToValueType=](|paramType|) to |wasmParameters|.
+1. Let |store| be the [=surrounding agent=]'s [=associated store=].
+1. Let (|store|, |tagAddress|) be [=tag_alloc=](|store|, |wasmParameters| → « »).
+1. Set the [=surrounding agent=]'s [=associated store=] to |store|.
 1. [=initialize a Tag object|Initialize=] **this** from |tagAddress|.
 
 
@@ -1656,7 +1650,7 @@ The internal methods of an [=Exported GC Object=] use the following implementati
     1. Let |map| be the [=surrounding agent=]'s associated [=exported GC object cache=].
     1. If |map|[|objectaddr|] [=map/exists=],
         1. Return |map|[|objectaddr|].
-    1. Let |object| be [=MakeBasicObject=](« \[[ObjectAddress]] »).
+    1. Let |object| be [=MakeBasicObject=](« \[[ObjectAddress]], \[[ObjectKind]] »).
     1. Set |object|.\[[ObjectAddress]] to |objectaddr|.
     1. Set |object|.\[[ObjectKind]] to |objectkind|.
     1. Set |object|.\[[GetPrototypeOf]] as specified in [=[[GetPrototypeOf]] internal method of an Exported GC Object=].
@@ -1716,7 +1710,7 @@ To create an Exception object from a [=exception address=] |exnAddres
 1. Let |map| be the [=surrounding agent=]'s associated [=Exception object cache=].
 1. If |map|[|exnAddress|] [=map/exists=],
     1. Return |map|[|exnAddress|].
-1. Let |exn| be a [=new=] {{Exception}}.
+1. Let |exn| be a [=/new=] {{Exception}}.
 1. [=initialize an Exception object|Initialize=] |exn| from |exnAddress|.
 1. Return |exn|.
 
@@ -1741,7 +1735,7 @@ constructor steps are:
     1. If |resultType| [=matches/valtype|matches=] [=v128=] or [=exnref=],
         1. Throw a {{TypeError}}.
     1. [=list/Append=] [=?=] [=ToWebAssemblyValue=](|value|, |resultType|) to |wasmPayload|.
-1. Let (|store|, |exceptionAddr|) be [=exn_alloc=](|store|, |exceptionTag|.\[[Address]], |wasmPayload|)
+1. Let (|store|, |exceptionAddr|) be [=exn_alloc=](|store|, |exceptionTag|.\[[Address]], |wasmPayload|).
 1. Set the [=surrounding agent=]'s [=associated store=] to |store|.
 1. [=initialize an Exception object|Initialize=] **this** from |exceptionAddr|.
 1. If |options|["traceStack"] is true,
@@ -1765,7 +1759,7 @@ The getArg(|exceptionTag|, |index|) method ste
 1. Let [|types|] → [] be [=tag_type=](|store|, |tagaddr|).
 1. If |types|[|index|] [=matches/valtype|matches=] [=v128=] or [=exnref=],
     1. Throw a {{TypeError}}.
-1. Return [=ToJSValue=](|payload|[|index|]).
+1. Return [=!=] [=ToJSValue=](|payload|[|index|]).
 
 
 
@@ -1802,8 +1796,8 @@ To get the JavaScript exception tag, perform the following steps:
         1. return the [=surrounding agent=]'s associated [=JavaScript exception tag=]
     1. Let |store| be the [=surrounding agent=]'s [=associated store=].
     1. Let (|store|, |tagAddress|) be [=tag_alloc=](|store|, « [=externref=] » → « »).
-    1. Set the current agent's [=associated store=] to |store|.
-    1. Set the current agent's associated [=JavaScript exception tag=] to |tagAddress|.
+    1. Set the [=surrounding agent=]'s [=associated store=] to |store|.
+    1. Set the [=surrounding agent=]'s associated [=JavaScript exception tag=] to |tagAddress|.
     1. return |tagAddress|.
 
 
@@ -1876,7 +1870,8 @@ To validate builtin set names with |builtinSetNames|, perform the fol
 To create a builtin function from type |funcType| and execution steps |steps|, perform the following steps:
 
 1. Let |hostfunc| be a [=host function=] which executes |steps| when called.
-1. Let (|store|, |funcaddr|) be [=func_alloc=](|store|, |functype|, |hostfunc|).
+1. Let |store| be the [=surrounding agent=]'s [=associated store=].
+1. Let (|store|, |funcaddr|) be [=func_alloc=](|store|, |funcType|, |hostfunc|).
 1. Set the [=surrounding agent=]'s [=associated store=] to |store|.
 1. Return |funcaddr|.
 
@@ -1889,7 +1884,7 @@ To instantiate a builtin set with name |builtinSetName|, perform the
 1. Let |builtins| be the result of [=get the builtins for a builtin set=] |builtinSetName|.
 1. Let |exportsObject| be [=!=] [$OrdinaryObjectCreate$](null).
 1. [=list/iterate|For each=] (|name|, |funcType|, |steps|) of |builtins|,
-    1. Let |funcaddr| be the result fo [=create a builtin function=] with |funcType| and |steps|.
+    1. Let |funcaddr| be the result of [=create a builtin function=] with |funcType| and |steps|.
     1. Let |func| be the result of creating [=a new Exported Function=] from |funcaddr|.
     1. Let |value| be |func|.
     1. Let |status| be [=!=] [$CreateDataProperty$](|exportsObject|, |name|, |value|).
@@ -1906,7 +1901,7 @@ To validate an import for builtins with |import|, enabled builtins |b
 1. Let |maybeBuiltin| be the result of [=find a builtin|finding a builtin=] for |import| and |builtinSetNames|.
 1. If |maybeBuiltin| is null, return true.
 1. Let |importExternType| be |import|[2].
-1. Let |builtinFuncType| be |maybeBuiltin|[0][1].
+1. Let |builtinFuncType| be |maybeBuiltin|[1][1].
 1. Let |builtinExternType| be `func |builtinFuncType|`.
 1. Return [=match_externtype=](|builtinExternType|, |importExternType|).
 
@@ -2021,7 +2016,7 @@ When this builtin is invoked with parameters |string|, |array|, and |start|, the
 1. Let |i| be 0.
 1. While |i| < |stringLength|:
     1. Let |charCode| be [$CharCodeAt$](|string|, |i|).
-    1. Set the element at index |start| + |i| in |array| to [=ToWebAssemblyValue=](|charCode|).
+    1. Set the element at index |start| + |i| in |array| to [=ToWebAssemblyValue=](|charCode|, [=i32=]).
     1. Set |i| to |i| + 1.
 1. Return |stringLength|.
 
diff --git a/document/legacy/exceptions/js-api/index.bs b/document/legacy/exceptions/js-api/index.bs
index e7db14074..6eaf8dac8 100644
--- a/document/legacy/exceptions/js-api/index.bs
+++ b/document/legacy/exceptions/js-api/index.bs
@@ -1213,8 +1213,8 @@ The new Tag(|type|) constructor
 
 1. Let |parameters| be |type|["parameters"].
 1. Let |wasmParameters| be «».
-1. [=list/iterate|For each=] |type| of |parameters|,
-    1. [=list/Append=] [=ToValueType=](|type|) to |wasmParameters|.
+1. [=list/iterate|For each=] |paramType| of |parameters|,
+    1. [=list/Append=] [=ToValueType=](|paramType|) to |wasmParameters|.
 1. Let |store| be the current agent's [=associated store=].
 1. Let (|store|, |tagAddress|) be [=tag_alloc=](|store|, |wasmParameters|).
 1. Set the current agent's [=associated store=] to |store|.
diff --git a/document/web-api/index.bs b/document/web-api/index.bs
index 57b421137..aa58250d5 100644
--- a/document/web-api/index.bs
+++ b/document/web-api/index.bs
@@ -41,7 +41,7 @@ Date: now
 
-urlPrefix: https://tc39.github.io/ecma262/; spec: ECMASCRIPT
+urlPrefix: https://tc39.es/ecma262/; spec: ECMASCRIPT
     type: exception; for: ECMAScript
         text: TypeError; url: sec-native-error-types-used-in-this-standard-typeerror
     type: interface
@@ -62,7 +62,6 @@ urlPrefix: https://webassembly.github.io/spec/js-api/; spec: WASMJS
         text: WebAssemblyInstantiatedSource; url: #dictdef-webassemblyinstantiatedsource
     type: dfn
         text: compile a WebAssembly module; url: #compile-a-webassembly-module
-        text: instantiate a WebAssembly module; url: #instantiate-a-webassembly-module
         text: instantiate; url: #dom-webassembly-instantiate
         text: asynchronously compile a webassembly module; url: #asynchronously-compile-a-webassembly-module
         text: instantiate a promise of a module; url: #instantiate-a-promise-of-a-module

From 468e5a1e95455ce8de5371220dd65103d138808b Mon Sep 17 00:00:00 2001
From: Andreas Rossberg 
Date: Thu, 2 Apr 2026 10:15:56 +0200
Subject: [PATCH 116/235] [spectec] Fix use of equality in IL MemE semantics

---
 spectec/doc/semantics/il/5-reduction.spectec | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/spectec/doc/semantics/il/5-reduction.spectec b/spectec/doc/semantics/il/5-reduction.spectec
index 2edb6d5a6..b5d8bba51 100644
--- a/spectec/doc/semantics/il/5-reduction.spectec
+++ b/spectec/doc/semantics/il/5-reduction.spectec
@@ -232,8 +232,8 @@ rule Step_exp/MEM-ctx2:
   -- Step_exp: S |- e_2 ~> e'_2
 
 rule Step_exp/MEM-true:
-  S |- MEM e_1 (LIST e_2*) ~> BOOL true
-  -- if e_1 = e_2*[n]
+  S |- MEM val_1 (LIST val_2*) ~> BOOL true
+  -- if val_1 = val_2*[n]
 
 rule Step_exp/MEM-false:
   S |- MEM val_1 (LIST val_2*) ~> BOOL false

From 9d12073c19a1f3587c463610705476cc6d974979 Mon Sep 17 00:00:00 2001
From: Andreas Rossberg 
Date: Thu, 2 Apr 2026 16:15:28 +0200
Subject: [PATCH 117/235] [interpreter] Remove redundant substitution in Invoke
 reduction (#2132)

---
 interpreter/exec/eval.ml                      |   3 +-
 .../wasm-3.0/4.2-execution.types.spectec      |  16 ++-----
 .../wasm-latest/4.2-execution.types.spectec   |  16 ++-----
 spectec/doc/example/output/NanoWasm.pdf       | Bin 245508 -> 245512 bytes
 spectec/test-frontend/TEST.md                 |  15 ++----
 spectec/test-latex/TEST.md                    |  10 ++--
 spectec/test-middlend/TEST.md                 |  45 ++++++------------
 spectec/test-prose/TEST.md                    |  35 ++++----------
 8 files changed, 46 insertions(+), 94 deletions(-)

diff --git a/interpreter/exec/eval.ml b/interpreter/exec/eval.ml
index 33ffa9a02..ab78027fe 100644
--- a/interpreter/exec/eval.ml
+++ b/interpreter/exec/eval.ml
@@ -1122,8 +1122,7 @@ let rec step (c : config) : config =
       | Func.AstFunc (_, inst', func) ->
         let Func (_x, ls, es) = func.it in
         let m = Lib.Promise.value inst' in
-        let s = subst_of m in
-        let ts = List.map (fun {it = Local t; _} -> subst_valtype s t) ls in
+        let ts = List.map (fun {it = Local t; _} -> t) ls in
         let lvs = List.(rev (map Option.some args) @ map default_value ts) in
         let frame' = {inst = m; locals = List.map ref lvs} in
         let instr' = [Label (n2, [], ([], List.map plain es)) @@ func.at] in
diff --git a/specification/wasm-3.0/4.2-execution.types.spectec b/specification/wasm-3.0/4.2-execution.types.spectec
index 5f9f9c881..2b29f4661 100644
--- a/specification/wasm-3.0/4.2-execution.types.spectec
+++ b/specification/wasm-3.0/4.2-execution.types.spectec
@@ -8,14 +8,8 @@ def $inst_globaltype(moduleinst, globaltype) : globaltype  hint(show $inst_(%,%)
 def $inst_memtype(moduleinst, memtype) : memtype  hint(show $inst_(%,%)) hint(macro "insttype")
 def $inst_tabletype(moduleinst, tabletype) : tabletype  hint(show $inst_(%,%)) hint(macro "insttype")
 
-;; TODO(3, rossberg): make inlining moduleinst.TYPES work
-def $inst_valtype(moduleinst, t) = $subst_all_valtype(t, dt*)
-  -- if dt* = moduleinst.TYPES
-def $inst_reftype(moduleinst, rt) = $subst_all_reftype(rt, dt*)
-  -- if dt* = moduleinst.TYPES
-def $inst_globaltype(moduleinst, gt) = $subst_all_globaltype(gt, dt*)
-  -- if dt* = moduleinst.TYPES
-def $inst_memtype(moduleinst, mt) = $subst_all_memtype(mt, dt*)
-  -- if dt* = moduleinst.TYPES
-def $inst_tabletype(moduleinst, tt) = $subst_all_tabletype(tt, dt*)
-  -- if dt* = moduleinst.TYPES
+def $inst_valtype(moduleinst, t) = $subst_all_valtype(t, moduleinst.TYPES)
+def $inst_reftype(moduleinst, rt) = $subst_all_reftype(rt, moduleinst.TYPES)
+def $inst_globaltype(moduleinst, gt) = $subst_all_globaltype(gt, moduleinst.TYPES)
+def $inst_memtype(moduleinst, mt) = $subst_all_memtype(mt, moduleinst.TYPES)
+def $inst_tabletype(moduleinst, tt) = $subst_all_tabletype(tt, moduleinst.TYPES)
diff --git a/specification/wasm-latest/4.2-execution.types.spectec b/specification/wasm-latest/4.2-execution.types.spectec
index 5f9f9c881..2b29f4661 100644
--- a/specification/wasm-latest/4.2-execution.types.spectec
+++ b/specification/wasm-latest/4.2-execution.types.spectec
@@ -8,14 +8,8 @@ def $inst_globaltype(moduleinst, globaltype) : globaltype  hint(show $inst_(%,%)
 def $inst_memtype(moduleinst, memtype) : memtype  hint(show $inst_(%,%)) hint(macro "insttype")
 def $inst_tabletype(moduleinst, tabletype) : tabletype  hint(show $inst_(%,%)) hint(macro "insttype")
 
-;; TODO(3, rossberg): make inlining moduleinst.TYPES work
-def $inst_valtype(moduleinst, t) = $subst_all_valtype(t, dt*)
-  -- if dt* = moduleinst.TYPES
-def $inst_reftype(moduleinst, rt) = $subst_all_reftype(rt, dt*)
-  -- if dt* = moduleinst.TYPES
-def $inst_globaltype(moduleinst, gt) = $subst_all_globaltype(gt, dt*)
-  -- if dt* = moduleinst.TYPES
-def $inst_memtype(moduleinst, mt) = $subst_all_memtype(mt, dt*)
-  -- if dt* = moduleinst.TYPES
-def $inst_tabletype(moduleinst, tt) = $subst_all_tabletype(tt, dt*)
-  -- if dt* = moduleinst.TYPES
+def $inst_valtype(moduleinst, t) = $subst_all_valtype(t, moduleinst.TYPES)
+def $inst_reftype(moduleinst, rt) = $subst_all_reftype(rt, moduleinst.TYPES)
+def $inst_globaltype(moduleinst, gt) = $subst_all_globaltype(gt, moduleinst.TYPES)
+def $inst_memtype(moduleinst, mt) = $subst_all_memtype(mt, moduleinst.TYPES)
+def $inst_tabletype(moduleinst, tt) = $subst_all_tabletype(tt, moduleinst.TYPES)
diff --git a/spectec/doc/example/output/NanoWasm.pdf b/spectec/doc/example/output/NanoWasm.pdf
index e68ccc1d9c36f44322ea2f0feb7ff260902d8839..6f82a5bffae705bd121d75b9fdcb2a07e308bc70 100644
GIT binary patch
delta 1109
zcmZqq$JgRIJ&GuvYiX>)vU`*)T9aI&gF$by+QQ(E#2Uh^hepPR05-$c@W
z`C3N9jpApM>yDqYiK{R_s`JjN!Dancqf^{2SJcBay3V(
z(;Z%0wyjRS|8}0{k#&FX$$rZVo~GV+m3z5Gp-k!-LDB3_3;%sS6hsQ)l_G$vFg$HT5;%!w{h_G(g?)&$|K67Vq`nWe+3AbAbGXgQw
zb}M1#s|)o_42%p-OiT<-wGE8a4Gh#Zx%7SWQ(O{DQWZ2@tc(nd%nXo~Y`5FWoW~Yu
zZt7}eVd!RIWNhN%^t0x9gQf-yIux&Jq8+_=Tm@M1<%&JQl<
zq@LE+t=@lFU&&uMcI?oM7dH8ypUf>kXIXr1?(@ExH|@<=Z|I3k%6nTs<(bj5rR<)3
zMi0zlWi=UD6I$OftP~Jw4BZtKWO$;yoQWj5cuRTzIQKwfU~*qJ}*A
z>7olJt(&l}>$GixeypIZ=0)B#7tOhC8G-Y}QcKoM%5Z*Ta_Z%lJ$#2X7f1$dyBsU4GJNqRiEr|25ZQKzKySVLm#1z{gw;t1prpl<~slY

delta 1105
zcmeD9$Jg?YZ-bc-qrv0@%$oJ7=Y6ve8}P6_*j<0LdP`!V>dn4MuM?z2%p^?TT=<%B
zDMwr9?Y@Nide2~uHR^kXE-@?ZX(~v65&zf3CXC6MHEMGIqzk-hdlhqz{}g(1d)u-1
zh1m{1Z(Ls+?oUpY)8F$tM{K*I!=meMl0R9MUI}YYIcj|MMD&`s&8sbLZnC%88SSvG
zhJT$iNeZtkYu|hO$e$+$}vyBwWWli?Rv_xik3nb)@W&ko+1
z@-Sy(e(XL)7NV>KfV(2c=htnquaA{{xM`m`}j6n3%6SfGXgQw
zc57kgs|)pwjZ6#;O-xOUwG9l_4Gh#Zx%7SWQ(O{DQWZ2@tc(nd%nXo~Y`5RaoW~Yu
z>1b$X>SAVS=3-`K=Hlw?Y-C|57Q{$2MftW?uIdT)Ge)R$Gx!u1Y3KE6j81Pwo_Iw|?6
z99z<9ukfeQ&xc1v=-cO6HkIFZUyrI@yLtZRvuFP8irkrcMyUApueB!g4fQR3iY73w
zE@}7RJi(k@!tVKV0mGWhS0`~f3f@?-T2ZuFXhXecxUUv#^#QTFj6sq&W-EPq@vS(L
zPwT~}m#cQ%Vb^-e^}?ew&p_Ghg^5e|r!5*wlc%~!CoK
zo7Pup#^z0ptY7N)EYCPRe<6Fx?$EO@^5iX;ejN-nVCZXn{D8%R)34F7K#Hf)_<@cE
z`?==C0>&7oy)Q4{dyy&b*tb{W!1Nug>xz?kdUk}?UwRN|z^S+Us!f17pV|!VvuOvW
zM8DO)JD06H;o94Pg}W@L-DfdBAQizb{XorGEW+O}j@3JlcX$1)YSxVG(+R8_ybf)-
zFyZ!tS<&DA?{{jCWIe6Z^=D!5rn?g!-_Fa`mz3#LKOa4Hf_B#(Hn-A~-hH|aT8f(m
z^)?u*7~E>x;(Beun!O9Iy)E%uosfRQZw`-TXJ=!T;#UDZ1DzBJFIV;nCU+Mc&$YN%
zwL`ErPkehxr^&&O$*qe&)tB>~;RM3YY=&AUG}t6AU?Bp69>SIdCv*R7m75n;v^^;E
z%G-w%F3q^T`ncCh{rl=ukKO&pqvgB9ye@E7$@#OIzB||751duDfB#~W$N#oCWL~Rv
zS35T6_q(=Bd(t=EpCV>cygoehqOrZ7mTsldUn`%NUF!aIv((?)FR%FRv`xH8DS-V|
z<37P&1@2i5`vi3th`#uIfzQf8{lfEwwzv(al

diff --git a/spectec/test-frontend/TEST.md b/spectec/test-frontend/TEST.md
index 5aae8c847..c801a4776 100644
--- a/spectec/test-frontend/TEST.md
+++ b/spectec/test-frontend/TEST.md
@@ -5955,32 +5955,27 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype)
 ;; ../../../../specification/wasm-latest/4.2-execution.types.spectec
 def $inst_valtype(moduleinst : moduleinst, valtype : valtype) : valtype
   ;; ../../../../specification/wasm-latest/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)
+  def $inst_valtype{moduleinst : moduleinst, t : valtype}(moduleinst, t) = $subst_all_valtype(t, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*))
 
 ;; ../../../../specification/wasm-latest/4.2-execution.types.spectec
 def $inst_reftype(moduleinst : moduleinst, reftype : reftype) : reftype
   ;; ../../../../specification/wasm-latest/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)
+  def $inst_reftype{moduleinst : moduleinst, rt : reftype}(moduleinst, rt) = $subst_all_reftype(rt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*))
 
 ;; ../../../../specification/wasm-latest/4.2-execution.types.spectec
 def $inst_globaltype(moduleinst : moduleinst, globaltype : globaltype) : globaltype
   ;; ../../../../specification/wasm-latest/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)
+  def $inst_globaltype{moduleinst : moduleinst, gt : globaltype}(moduleinst, gt) = $subst_all_globaltype(gt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*))
 
 ;; ../../../../specification/wasm-latest/4.2-execution.types.spectec
 def $inst_memtype(moduleinst : moduleinst, memtype : memtype) : memtype
   ;; ../../../../specification/wasm-latest/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)
+  def $inst_memtype{moduleinst : moduleinst, mt : memtype}(moduleinst, mt) = $subst_all_memtype(mt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*))
 
 ;; ../../../../specification/wasm-latest/4.2-execution.types.spectec
 def $inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype
   ;; ../../../../specification/wasm-latest/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)
+  def $inst_tabletype{moduleinst : moduleinst, tt : tabletype}(moduleinst, tt) = $subst_all_tabletype(tt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*))
 
 ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec
 relation Step_pure: `%~>%`(instr*, instr*)
diff --git a/spectec/test-latex/TEST.md b/spectec/test-latex/TEST.md
index 07faa4f44..d6d5e0903 100644
--- a/spectec/test-latex/TEST.md
+++ b/spectec/test-latex/TEST.md
@@ -9608,31 +9608,31 @@ $$
 
 $$
 \begin{array}[t]{@{}lcl@{}l@{}}
-{{\mathrm{inst}}}_{{\mathit{moduleinst}}}(t) & = & {t}{{}[ {:=}\, {{\mathit{dt}}^\ast} ]} & \quad \mbox{if}~ {{\mathit{dt}}^\ast} = {\mathit{moduleinst}}{.}\mathsf{types} \\
+{{\mathrm{inst}}}_{{\mathit{moduleinst}}}(t) & = & {t}{{}[ {:=}\, {\mathit{moduleinst}}{.}\mathsf{types} ]} \\
 \end{array}
 $$
 
 $$
 \begin{array}[t]{@{}lcl@{}l@{}}
-{{\mathrm{inst}}}_{{\mathit{moduleinst}}}({\mathit{rt}}) & = & {{\mathit{rt}}}{{}[ {:=}\, {{\mathit{dt}}^\ast} ]} & \quad \mbox{if}~ {{\mathit{dt}}^\ast} = {\mathit{moduleinst}}{.}\mathsf{types} \\
+{{\mathrm{inst}}}_{{\mathit{moduleinst}}}({\mathit{rt}}) & = & {{\mathit{rt}}}{{}[ {:=}\, {\mathit{moduleinst}}{.}\mathsf{types} ]} \\
 \end{array}
 $$
 
 $$
 \begin{array}[t]{@{}lcl@{}l@{}}
-{{\mathrm{inst}}}_{{\mathit{moduleinst}}}({\mathit{gt}}) & = & {{\mathit{gt}}}{{}[ {:=}\, {{\mathit{dt}}^\ast} ]} & \quad \mbox{if}~ {{\mathit{dt}}^\ast} = {\mathit{moduleinst}}{.}\mathsf{types} \\
+{{\mathrm{inst}}}_{{\mathit{moduleinst}}}({\mathit{gt}}) & = & {{\mathit{gt}}}{{}[ {:=}\, {\mathit{moduleinst}}{.}\mathsf{types} ]} \\
 \end{array}
 $$
 
 $$
 \begin{array}[t]{@{}lcl@{}l@{}}
-{{\mathrm{inst}}}_{{\mathit{moduleinst}}}({\mathit{mt}}) & = & {{\mathit{mt}}}{{}[ {:=}\, {{\mathit{dt}}^\ast} ]} & \quad \mbox{if}~ {{\mathit{dt}}^\ast} = {\mathit{moduleinst}}{.}\mathsf{types} \\
+{{\mathrm{inst}}}_{{\mathit{moduleinst}}}({\mathit{mt}}) & = & {{\mathit{mt}}}{{}[ {:=}\, {\mathit{moduleinst}}{.}\mathsf{types} ]} \\
 \end{array}
 $$
 
 $$
 \begin{array}[t]{@{}lcl@{}l@{}}
-{{\mathrm{inst}}}_{{\mathit{moduleinst}}}({\mathit{tt}}) & = & {{\mathit{tt}}}{{}[ {:=}\, {{\mathit{dt}}^\ast} ]} & \quad \mbox{if}~ {{\mathit{dt}}^\ast} = {\mathit{moduleinst}}{.}\mathsf{types} \\
+{{\mathrm{inst}}}_{{\mathit{moduleinst}}}({\mathit{tt}}) & = & {{\mathit{tt}}}{{}[ {:=}\, {\mathit{moduleinst}}{.}\mathsf{types} ]} \\
 \end{array}
 $$
 
diff --git a/spectec/test-middlend/TEST.md b/spectec/test-middlend/TEST.md
index 52de5c986..bb0a518af 100644
--- a/spectec/test-middlend/TEST.md
+++ b/spectec/test-middlend/TEST.md
@@ -5945,32 +5945,27 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype)
 ;; ../../../../specification/wasm-latest/4.2-execution.types.spectec
 def $inst_valtype(moduleinst : moduleinst, valtype : valtype) : valtype
   ;; ../../../../specification/wasm-latest/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)
+  def $inst_valtype{moduleinst : moduleinst, t : valtype}(moduleinst, t) = $subst_all_valtype(t, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*))
 
 ;; ../../../../specification/wasm-latest/4.2-execution.types.spectec
 def $inst_reftype(moduleinst : moduleinst, reftype : reftype) : reftype
   ;; ../../../../specification/wasm-latest/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)
+  def $inst_reftype{moduleinst : moduleinst, rt : reftype}(moduleinst, rt) = $subst_all_reftype(rt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*))
 
 ;; ../../../../specification/wasm-latest/4.2-execution.types.spectec
 def $inst_globaltype(moduleinst : moduleinst, globaltype : globaltype) : globaltype
   ;; ../../../../specification/wasm-latest/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)
+  def $inst_globaltype{moduleinst : moduleinst, gt : globaltype}(moduleinst, gt) = $subst_all_globaltype(gt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*))
 
 ;; ../../../../specification/wasm-latest/4.2-execution.types.spectec
 def $inst_memtype(moduleinst : moduleinst, memtype : memtype) : memtype
   ;; ../../../../specification/wasm-latest/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)
+  def $inst_memtype{moduleinst : moduleinst, mt : memtype}(moduleinst, mt) = $subst_all_memtype(mt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*))
 
 ;; ../../../../specification/wasm-latest/4.2-execution.types.spectec
 def $inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype
   ;; ../../../../specification/wasm-latest/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)
+  def $inst_tabletype{moduleinst : moduleinst, tt : tabletype}(moduleinst, tt) = $subst_all_tabletype(tt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*))
 
 ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec
 relation Step_pure: `%~>%`(instr*, instr*)
@@ -17371,32 +17366,27 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype)
 ;; ../../../../specification/wasm-latest/4.2-execution.types.spectec
 def $inst_valtype(moduleinst : moduleinst, valtype : valtype) : valtype
   ;; ../../../../specification/wasm-latest/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)
+  def $inst_valtype{moduleinst : moduleinst, t : valtype}(moduleinst, t) = $subst_all_valtype(t, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*))
 
 ;; ../../../../specification/wasm-latest/4.2-execution.types.spectec
 def $inst_reftype(moduleinst : moduleinst, reftype : reftype) : reftype
   ;; ../../../../specification/wasm-latest/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)
+  def $inst_reftype{moduleinst : moduleinst, rt : reftype}(moduleinst, rt) = $subst_all_reftype(rt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*))
 
 ;; ../../../../specification/wasm-latest/4.2-execution.types.spectec
 def $inst_globaltype(moduleinst : moduleinst, globaltype : globaltype) : globaltype
   ;; ../../../../specification/wasm-latest/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)
+  def $inst_globaltype{moduleinst : moduleinst, gt : globaltype}(moduleinst, gt) = $subst_all_globaltype(gt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*))
 
 ;; ../../../../specification/wasm-latest/4.2-execution.types.spectec
 def $inst_memtype(moduleinst : moduleinst, memtype : memtype) : memtype
   ;; ../../../../specification/wasm-latest/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)
+  def $inst_memtype{moduleinst : moduleinst, mt : memtype}(moduleinst, mt) = $subst_all_memtype(mt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*))
 
 ;; ../../../../specification/wasm-latest/4.2-execution.types.spectec
 def $inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype
   ;; ../../../../specification/wasm-latest/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)
+  def $inst_tabletype{moduleinst : moduleinst, tt : tabletype}(moduleinst, tt) = $subst_all_tabletype(tt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*))
 
 ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec
 relation Step_pure: `%~>%`(instr*, instr*)
@@ -28930,32 +28920,27 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype)
 ;; ../../../../specification/wasm-latest/4.2-execution.types.spectec
 def $inst_valtype(moduleinst : moduleinst, valtype : valtype) : valtype
   ;; ../../../../specification/wasm-latest/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)
+  def $inst_valtype{moduleinst : moduleinst, t : valtype}(moduleinst, t) = $subst_all_valtype(t, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*))
 
 ;; ../../../../specification/wasm-latest/4.2-execution.types.spectec
 def $inst_reftype(moduleinst : moduleinst, reftype : reftype) : reftype
   ;; ../../../../specification/wasm-latest/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)
+  def $inst_reftype{moduleinst : moduleinst, rt : reftype}(moduleinst, rt) = $subst_all_reftype(rt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*))
 
 ;; ../../../../specification/wasm-latest/4.2-execution.types.spectec
 def $inst_globaltype(moduleinst : moduleinst, globaltype : globaltype) : globaltype
   ;; ../../../../specification/wasm-latest/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)
+  def $inst_globaltype{moduleinst : moduleinst, gt : globaltype}(moduleinst, gt) = $subst_all_globaltype(gt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*))
 
 ;; ../../../../specification/wasm-latest/4.2-execution.types.spectec
 def $inst_memtype(moduleinst : moduleinst, memtype : memtype) : memtype
   ;; ../../../../specification/wasm-latest/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)
+  def $inst_memtype{moduleinst : moduleinst, mt : memtype}(moduleinst, mt) = $subst_all_memtype(mt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*))
 
 ;; ../../../../specification/wasm-latest/4.2-execution.types.spectec
 def $inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype
   ;; ../../../../specification/wasm-latest/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)
+  def $inst_tabletype{moduleinst : moduleinst, tt : tabletype}(moduleinst, tt) = $subst_all_tabletype(tt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*))
 
 ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec
 relation Step_pure: `%~>%`(instr*, instr*)
diff --git a/spectec/test-prose/TEST.md b/spectec/test-prose/TEST.md
index 1671b3b18..b7183fb06 100644
--- a/spectec/test-prose/TEST.md
+++ b/spectec/test-prose/TEST.md
@@ -25884,45 +25884,35 @@ The instruction sequence :math:`(\mathsf{block}~{\mathit{blocktype}}~{{\mathit{i
 ....................................................
 
 
-1. Let :math:`{{\mathit{dt}}^\ast}` be :math:`{\mathit{moduleinst}}{.}\mathsf{types}`.
-
-#. Return :math:`{t}{{}[ {:=}\, {{\mathit{dt}}^\ast} ]}`.
+1. Return :math:`{t}{{}[ {:=}\, {\mathit{moduleinst}}{.}\mathsf{types} ]}`.
 
 
 :math:`{{\mathrm{inst}}}_{{\mathit{moduleinst}}}({\mathit{rt}})`
 ................................................................
 
 
-1. Let :math:`{{\mathit{dt}}^\ast}` be :math:`{\mathit{moduleinst}}{.}\mathsf{types}`.
-
-#. Return :math:`{{\mathit{rt}}}{{}[ {:=}\, {{\mathit{dt}}^\ast} ]}`.
+1. Return :math:`{{\mathit{rt}}}{{}[ {:=}\, {\mathit{moduleinst}}{.}\mathsf{types} ]}`.
 
 
 :math:`{{\mathrm{inst}}}_{{\mathit{moduleinst}}}({\mathit{gt}})`
 ................................................................
 
 
-1. Let :math:`{{\mathit{dt}}^\ast}` be :math:`{\mathit{moduleinst}}{.}\mathsf{types}`.
-
-#. Return :math:`{{\mathit{gt}}}{{}[ {:=}\, {{\mathit{dt}}^\ast} ]}`.
+1. Return :math:`{{\mathit{gt}}}{{}[ {:=}\, {\mathit{moduleinst}}{.}\mathsf{types} ]}`.
 
 
 :math:`{{\mathrm{inst}}}_{{\mathit{moduleinst}}}({\mathit{mt}})`
 ................................................................
 
 
-1. Let :math:`{{\mathit{dt}}^\ast}` be :math:`{\mathit{moduleinst}}{.}\mathsf{types}`.
-
-#. Return :math:`{{\mathit{mt}}}{{}[ {:=}\, {{\mathit{dt}}^\ast} ]}`.
+1. Return :math:`{{\mathit{mt}}}{{}[ {:=}\, {\mathit{moduleinst}}{.}\mathsf{types} ]}`.
 
 
 :math:`{{\mathrm{inst}}}_{{\mathit{moduleinst}}}({\mathit{tt}})`
 ................................................................
 
 
-1. Let :math:`{{\mathit{dt}}^\ast}` be :math:`{\mathit{moduleinst}}{.}\mathsf{types}`.
-
-#. Return :math:`{{\mathit{tt}}}{{}[ {:=}\, {{\mathit{dt}}^\ast} ]}`.
+1. Return :math:`{{\mathit{tt}}}{{}[ {:=}\, {\mathit{moduleinst}}{.}\mathsf{types} ]}`.
 
 
 :math:`{{\mathrm{blocktype}}}_{z}({\mathit{blocktype}})`
@@ -32762,24 +32752,19 @@ growmem meminst n
 5. Fail.
 
 inst_valtype moduleinst t
-1. Let dt* be moduleinst.TYPES.
-2. Return $subst_all_valtype(t, dt*).
+1. Return $subst_all_valtype(t, moduleinst.TYPES).
 
 inst_reftype moduleinst rt
-1. Let dt* be moduleinst.TYPES.
-2. Return $subst_all_reftype(rt, dt*).
+1. Return $subst_all_reftype(rt, moduleinst.TYPES).
 
 inst_globaltype moduleinst gt
-1. Let dt* be moduleinst.TYPES.
-2. Return $subst_all_globaltype(gt, dt*).
+1. Return $subst_all_globaltype(gt, moduleinst.TYPES).
 
 inst_memtype moduleinst mt
-1. Let dt* be moduleinst.TYPES.
-2. Return $subst_all_memtype(mt, dt*).
+1. Return $subst_all_memtype(mt, moduleinst.TYPES).
 
 inst_tabletype moduleinst tt
-1. Let dt* be moduleinst.TYPES.
-2. Return $subst_all_tabletype(tt, dt*).
+1. Return $subst_all_tabletype(tt, moduleinst.TYPES).
 
 blocktype_ z blocktype
 1. If blocktype is some _IDX, then:

From 13444d05892a778f9bcde6424ef9503741909dac Mon Sep 17 00:00:00 2001
From: Ryan Hunt 
Date: Thu, 2 Apr 2026 12:49:54 -0500
Subject: [PATCH 118/235] [js-api] Use [AllowResizable] AllowSharedBufferSource
 for bytecode (#2084)

* [js-api] Use [AllowResizable] AllowSharedBufferSource for bytecode

Fixes #1907

* [test] Add tests for resizable and growable shared buffer sources
---
 document/js-api/index.bs                   |  8 +--
 test/js-api/constructor/compile.any.js     | 60 ++++++++++++++++++++-
 test/js-api/constructor/instantiate.any.js | 60 ++++++++++++++++++++-
 test/js-api/constructor/validate.any.js    | 57 ++++++++++++++++++++
 test/js-api/module/constructor.any.js      | 63 +++++++++++++++++++++-
 5 files changed, 238 insertions(+), 10 deletions(-)

diff --git a/document/js-api/index.bs b/document/js-api/index.bs
index a8374f279..a24dc3ea6 100644
--- a/document/js-api/index.bs
+++ b/document/js-api/index.bs
@@ -368,11 +368,11 @@ dictionary WebAssemblyCompileOptions {
 
 [Exposed=*]
 namespace WebAssembly {
-    boolean validate(BufferSource bytes, optional WebAssemblyCompileOptions options = {});
-    Promise<Module> compile(BufferSource bytes, optional WebAssemblyCompileOptions options = {});
+    boolean validate([AllowResizable] AllowSharedBufferSource bytes, optional WebAssemblyCompileOptions options = {});
+    Promise<Module> compile([AllowResizable] AllowSharedBufferSource bytes, optional WebAssemblyCompileOptions options = {});
 
     Promise<WebAssemblyInstantiatedSource> instantiate(
-        BufferSource bytes, optional object importObject, optional WebAssemblyCompileOptions options = {});
+        [AllowResizable] AllowSharedBufferSource bytes, optional object importObject, optional WebAssemblyCompileOptions options = {});
 
     Promise<Instance> instantiate(
         Module moduleObject, optional object importObject);
@@ -700,7 +700,7 @@ dictionary ModuleImportDescriptor {
 
 [LegacyNamespace=WebAssembly, Exposed=*]
 interface Module {
-  constructor(BufferSource bytes, optional WebAssemblyCompileOptions options = {});
+  constructor([AllowResizable] AllowSharedBufferSource bytes, optional WebAssemblyCompileOptions options = {});
   static sequence<ModuleExportDescriptor> exports(Module moduleObject);
   static sequence<ModuleImportDescriptor> imports(Module moduleObject);
   static sequence<ArrayBuffer> customSections(Module moduleObject, DOMString sectionName);
diff --git a/test/js-api/constructor/compile.any.js b/test/js-api/constructor/compile.any.js
index e94ce1171..9c83ddcfd 100644
--- a/test/js-api/constructor/compile.any.js
+++ b/test/js-api/constructor/compile.any.js
@@ -7,9 +7,42 @@ function assert_Module(module) {
   assert_true(Object.isExtensible(module), "Extensibility");
 }
 
+function copyToSharedBuffer(buffer) {
+  const sab = new SharedArrayBuffer(buffer.byteLength);
+  new Uint8Array(sab).set(buffer);
+  return new Uint8Array(sab);
+}
+
+function copyToResizableBuffer(buffer) {
+  const rab = new ArrayBuffer(buffer.byteLength, { maxByteLength: buffer.byteLength * 2 });
+  new Uint8Array(rab).set(buffer);
+  return new Uint8Array(rab);
+}
+
+function copyToGrowableSharedBuffer(buffer) {
+  const gsab = new SharedArrayBuffer(buffer.byteLength, { maxByteLength: buffer.byteLength * 2 });
+  new Uint8Array(gsab).set(buffer);
+  return new Uint8Array(gsab);
+}
+
 let emptyModuleBinary;
+let emptyModuleSharedBuffer;
+let emptyModuleResizableBuffer;
+let emptyModuleGrowableSharedBuffer;
+let invalidModuleBinary;
+let invalidModuleSharedBuffer;
+let invalidModuleResizableBuffer;
+let invalidModuleGrowableSharedBuffer;
 setup(() => {
   emptyModuleBinary = new WasmModuleBuilder().toBuffer();
+  emptyModuleSharedBuffer = copyToSharedBuffer(emptyModuleBinary);
+  emptyModuleResizableBuffer = copyToResizableBuffer(emptyModuleBinary);
+  emptyModuleGrowableSharedBuffer = copyToGrowableSharedBuffer(emptyModuleBinary);
+
+  invalidModuleBinary = new Uint8Array(Array.from(emptyModuleBinary).concat([0, 0]));
+  invalidModuleSharedBuffer = copyToSharedBuffer(invalidModuleBinary);
+  invalidModuleResizableBuffer = copyToResizableBuffer(invalidModuleBinary);
+  invalidModuleGrowableSharedBuffer = copyToGrowableSharedBuffer(invalidModuleBinary);
 });
 
 promise_test(t => {
@@ -64,8 +97,7 @@ promise_test(t => {
 }, "Empty buffer");
 
 promise_test(t => {
-  const buffer = new Uint8Array(Array.from(emptyModuleBinary).concat([0, 0]));
-  return promise_rejects_js(t, WebAssembly.CompileError, WebAssembly.compile(buffer));
+  return promise_rejects_js(t, WebAssembly.CompileError, WebAssembly.compile(invalidModuleBinary));
 }, "Invalid code");
 
 promise_test(() => {
@@ -83,3 +115,27 @@ promise_test(() => {
   buffer[0] = 1;
   return promise.then(assert_Module);
 }, "Changing the buffer");
+
+promise_test(() => {
+  return WebAssembly.compile(emptyModuleSharedBuffer).then(assert_Module);
+}, "SharedArrayBuffer-backed view");
+
+promise_test(t => {
+  return promise_rejects_js(t, WebAssembly.CompileError, WebAssembly.compile(invalidModuleSharedBuffer));
+}, "Invalid module in SharedArrayBuffer");
+
+promise_test(() => {
+  return WebAssembly.compile(emptyModuleResizableBuffer).then(assert_Module);
+}, "Resizable ArrayBuffer-backed view");
+
+promise_test(t => {
+  return promise_rejects_js(t, WebAssembly.CompileError, WebAssembly.compile(invalidModuleResizableBuffer));
+}, "Invalid module in resizable ArrayBuffer");
+
+promise_test(() => {
+  return WebAssembly.compile(emptyModuleGrowableSharedBuffer).then(assert_Module);
+}, "Growable SharedArrayBuffer-backed view");
+
+promise_test(t => {
+  return promise_rejects_js(t, WebAssembly.CompileError, WebAssembly.compile(invalidModuleGrowableSharedBuffer));
+}, "Invalid module in growable SharedArrayBuffer");
diff --git a/test/js-api/constructor/instantiate.any.js b/test/js-api/constructor/instantiate.any.js
index 8152f3a56..30f83efef 100644
--- a/test/js-api/constructor/instantiate.any.js
+++ b/test/js-api/constructor/instantiate.any.js
@@ -3,9 +3,42 @@
 // META: script=/wasm/jsapi/assertions.js
 // META: script=/wasm/jsapi/instanceTestFactory.js
 
+function copyToSharedBuffer(buffer) {
+  const sab = new SharedArrayBuffer(buffer.byteLength);
+  new Uint8Array(sab).set(buffer);
+  return new Uint8Array(sab);
+}
+
+function copyToResizableBuffer(buffer) {
+  const rab = new ArrayBuffer(buffer.byteLength, { maxByteLength: buffer.byteLength * 2 });
+  new Uint8Array(rab).set(buffer);
+  return new Uint8Array(rab);
+}
+
+function copyToGrowableSharedBuffer(buffer) {
+  const gsab = new SharedArrayBuffer(buffer.byteLength, { maxByteLength: buffer.byteLength * 2 });
+  new Uint8Array(gsab).set(buffer);
+  return new Uint8Array(gsab);
+}
+
 let emptyModuleBinary;
+let emptyModuleSharedBuffer;
+let emptyModuleResizableBuffer;
+let emptyModuleGrowableSharedBuffer;
+let invalidModuleBinary;
+let invalidModuleSharedBuffer;
+let invalidModuleResizableBuffer;
+let invalidModuleGrowableSharedBuffer;
 setup(() => {
   emptyModuleBinary = new WasmModuleBuilder().toBuffer();
+  emptyModuleSharedBuffer = copyToSharedBuffer(emptyModuleBinary);
+  emptyModuleResizableBuffer = copyToResizableBuffer(emptyModuleBinary);
+  emptyModuleGrowableSharedBuffer = copyToGrowableSharedBuffer(emptyModuleBinary);
+
+  invalidModuleBinary = new Uint8Array(Array.from(emptyModuleBinary).concat([0, 0]));
+  invalidModuleSharedBuffer = copyToSharedBuffer(invalidModuleBinary);
+  invalidModuleResizableBuffer = copyToResizableBuffer(invalidModuleBinary);
+  invalidModuleGrowableSharedBuffer = copyToGrowableSharedBuffer(invalidModuleBinary);
 });
 
 promise_test(t => {
@@ -139,8 +172,7 @@ promise_test(t => {
 }, "Empty buffer");
 
 promise_test(t => {
-  const buffer = new Uint8Array(Array.from(emptyModuleBinary).concat([0, 0]));
-  return promise_rejects_js(t, WebAssembly.CompileError, WebAssembly.instantiate(buffer));
+  return promise_rejects_js(t, WebAssembly.CompileError, WebAssembly.instantiate(invalidModuleBinary));
 }, "Invalid code");
 
 promise_test(() => {
@@ -150,3 +182,27 @@ promise_test(() => {
   buffer[0] = 1;
   return promise.then(assert_WebAssemblyInstantiatedSource);
 }, "Changing the buffer");
+
+promise_test(() => {
+  return WebAssembly.instantiate(emptyModuleSharedBuffer).then(assert_WebAssemblyInstantiatedSource);
+}, "SharedArrayBuffer-backed view");
+
+promise_test(t => {
+  return promise_rejects_js(t, WebAssembly.CompileError, WebAssembly.instantiate(invalidModuleSharedBuffer));
+}, "Invalid module in SharedArrayBuffer");
+
+promise_test(() => {
+  return WebAssembly.instantiate(emptyModuleResizableBuffer).then(assert_WebAssemblyInstantiatedSource);
+}, "Resizable ArrayBuffer-backed view");
+
+promise_test(t => {
+  return promise_rejects_js(t, WebAssembly.CompileError, WebAssembly.instantiate(invalidModuleResizableBuffer));
+}, "Invalid module in resizable ArrayBuffer");
+
+promise_test(() => {
+  return WebAssembly.instantiate(emptyModuleGrowableSharedBuffer).then(assert_WebAssemblyInstantiatedSource);
+}, "Growable SharedArrayBuffer-backed view");
+
+promise_test(t => {
+  return promise_rejects_js(t, WebAssembly.CompileError, WebAssembly.instantiate(invalidModuleGrowableSharedBuffer));
+}, "Invalid module in growable SharedArrayBuffer");
diff --git a/test/js-api/constructor/validate.any.js b/test/js-api/constructor/validate.any.js
index 8b4f4582a..005e13e38 100644
--- a/test/js-api/constructor/validate.any.js
+++ b/test/js-api/constructor/validate.any.js
@@ -1,9 +1,42 @@
 // META: global=window,dedicatedworker,jsshell
 // META: script=/wasm/jsapi/wasm-module-builder.js
 
+function copyToSharedBuffer(buffer) {
+  const sab = new SharedArrayBuffer(buffer.byteLength);
+  new Uint8Array(sab).set(buffer);
+  return new Uint8Array(sab);
+}
+
+function copyToResizableBuffer(buffer) {
+  const rab = new ArrayBuffer(buffer.byteLength, { maxByteLength: buffer.byteLength * 2 });
+  new Uint8Array(rab).set(buffer);
+  return new Uint8Array(rab);
+}
+
+function copyToGrowableSharedBuffer(buffer) {
+  const gsab = new SharedArrayBuffer(buffer.byteLength, { maxByteLength: buffer.byteLength * 2 });
+  new Uint8Array(gsab).set(buffer);
+  return new Uint8Array(gsab);
+}
+
 let emptyModuleBinary;
+let emptyModuleSharedBuffer;
+let emptyModuleResizableBuffer;
+let emptyModuleGrowableSharedBuffer;
+let invalidModuleBinary;
+let invalidModuleSharedBuffer;
+let invalidModuleResizableBuffer;
+let invalidModuleGrowableSharedBuffer;
 setup(() => {
   emptyModuleBinary = new WasmModuleBuilder().toBuffer();
+  emptyModuleSharedBuffer = copyToSharedBuffer(emptyModuleBinary);
+  emptyModuleResizableBuffer = copyToResizableBuffer(emptyModuleBinary);
+  emptyModuleGrowableSharedBuffer = copyToGrowableSharedBuffer(emptyModuleBinary);
+
+  invalidModuleBinary = new Uint8Array(Array.from(emptyModuleBinary).concat([0, 0]));
+  invalidModuleSharedBuffer = copyToSharedBuffer(invalidModuleBinary);
+  invalidModuleResizableBuffer = copyToResizableBuffer(invalidModuleBinary);
+  invalidModuleGrowableSharedBuffer = copyToGrowableSharedBuffer(invalidModuleBinary);
 });
 
 test(() => {
@@ -97,3 +130,27 @@ for (const [module, expected] of modules) {
 test(() => {
   assert_true(WebAssembly.validate(emptyModuleBinary, {}));
 }, "Stray argument");
+
+test(() => {
+  assert_true(WebAssembly.validate(emptyModuleSharedBuffer));
+}, "SharedArrayBuffer-backed view");
+
+test(() => {
+  assert_false(WebAssembly.validate(invalidModuleSharedBuffer));
+}, "Invalid module in SharedArrayBuffer");
+
+test(() => {
+  assert_true(WebAssembly.validate(emptyModuleResizableBuffer));
+}, "Resizable ArrayBuffer-backed view");
+
+test(() => {
+  assert_false(WebAssembly.validate(invalidModuleResizableBuffer));
+}, "Invalid module in resizable ArrayBuffer");
+
+test(() => {
+  assert_true(WebAssembly.validate(emptyModuleGrowableSharedBuffer));
+}, "Growable SharedArrayBuffer-backed view");
+
+test(() => {
+  assert_false(WebAssembly.validate(invalidModuleGrowableSharedBuffer));
+}, "Invalid module in growable SharedArrayBuffer");
diff --git a/test/js-api/module/constructor.any.js b/test/js-api/module/constructor.any.js
index 9978f7e6a..6e4247a23 100644
--- a/test/js-api/module/constructor.any.js
+++ b/test/js-api/module/constructor.any.js
@@ -2,9 +2,42 @@
 // META: script=/wasm/jsapi/wasm-module-builder.js
 // META: script=/wasm/jsapi/assertions.js
 
+function copyToSharedBuffer(buffer) {
+  const sab = new SharedArrayBuffer(buffer.byteLength);
+  new Uint8Array(sab).set(buffer);
+  return new Uint8Array(sab);
+}
+
+function copyToResizableBuffer(buffer) {
+  const rab = new ArrayBuffer(buffer.byteLength, { maxByteLength: buffer.byteLength * 2 });
+  new Uint8Array(rab).set(buffer);
+  return new Uint8Array(rab);
+}
+
+function copyToGrowableSharedBuffer(buffer) {
+  const gsab = new SharedArrayBuffer(buffer.byteLength, { maxByteLength: buffer.byteLength * 2 });
+  new Uint8Array(gsab).set(buffer);
+  return new Uint8Array(gsab);
+}
+
 let emptyModuleBinary;
+let emptyModuleSharedBuffer;
+let emptyModuleResizableBuffer;
+let emptyModuleGrowableSharedBuffer;
+let invalidModuleBinary;
+let invalidModuleSharedBuffer;
+let invalidModuleResizableBuffer;
+let invalidModuleGrowableSharedBuffer;
 setup(() => {
   emptyModuleBinary = new WasmModuleBuilder().toBuffer();
+  emptyModuleSharedBuffer = copyToSharedBuffer(emptyModuleBinary);
+  emptyModuleResizableBuffer = copyToResizableBuffer(emptyModuleBinary);
+  emptyModuleGrowableSharedBuffer = copyToGrowableSharedBuffer(emptyModuleBinary);
+
+  invalidModuleBinary = new Uint8Array(Array.from(emptyModuleBinary).concat([0, 0]));
+  invalidModuleSharedBuffer = copyToSharedBuffer(invalidModuleBinary);
+  invalidModuleResizableBuffer = copyToResizableBuffer(invalidModuleBinary);
+  invalidModuleGrowableSharedBuffer = copyToGrowableSharedBuffer(invalidModuleBinary);
 });
 
 test(() => {
@@ -49,8 +82,7 @@ test(() => {
 }, "Empty buffer");
 
 test(() => {
-  const buffer = new Uint8Array(Array.from(emptyModuleBinary).concat([0, 0]));
-  assert_throws_js(WebAssembly.CompileError, () => new WebAssembly.Module(buffer));
+  assert_throws_js(WebAssembly.CompileError, () => new WebAssembly.Module(invalidModuleBinary));
 }, "Invalid code");
 
 test(() => {
@@ -67,3 +99,30 @@ test(() => {
   const module = new WebAssembly.Module(emptyModuleBinary, {});
   assert_equals(Object.getPrototypeOf(module), WebAssembly.Module.prototype);
 }, "Stray argument");
+
+test(() => {
+  const module = new WebAssembly.Module(emptyModuleSharedBuffer);
+  assert_true(module instanceof WebAssembly.Module);
+}, "SharedArrayBuffer-backed view");
+
+test(() => {
+  assert_throws_js(WebAssembly.CompileError, () => new WebAssembly.Module(invalidModuleSharedBuffer));
+}, "Invalid module in SharedArrayBuffer");
+
+test(() => {
+  const module = new WebAssembly.Module(emptyModuleResizableBuffer);
+  assert_true(module instanceof WebAssembly.Module);
+}, "Resizable ArrayBuffer-backed view");
+
+test(() => {
+  assert_throws_js(WebAssembly.CompileError, () => new WebAssembly.Module(invalidModuleResizableBuffer));
+}, "Invalid module in resizable ArrayBuffer");
+
+test(() => {
+  const module = new WebAssembly.Module(emptyModuleGrowableSharedBuffer);
+  assert_true(module instanceof WebAssembly.Module);
+}, "Growable SharedArrayBuffer-backed view");
+
+test(() => {
+  assert_throws_js(WebAssembly.CompileError, () => new WebAssembly.Module(invalidModuleGrowableSharedBuffer));
+}, "Invalid module in growable SharedArrayBuffer");

From 55741de8e941e504fc86ee1f83496c913d719205 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Carl=20M=C3=A4sak?= 
Date: Fri, 3 Apr 2026 16:12:55 +0800
Subject: [PATCH 119/235] [spec] Fix typo in grammar notation (#2133)

---
 document/core/text/conventions.rst | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/document/core/text/conventions.rst b/document/core/text/conventions.rst
index 5aa3055bc..0b2222c99 100644
--- a/document/core/text/conventions.rst
+++ b/document/core/text/conventions.rst
@@ -42,8 +42,8 @@ In order to distinguish symbols of the textual syntax from symbols of the abstra
 * ${grammar-case: $(T)*} is a possibly empty sequence of iterations of ${:T}.
   (This is a shorthand for ${grammar-case: $(T)^n} used where ${:n} is not relevant.)
 
-* ${grammar-case: $(T)+} is a possibly empty sequence of iterations of ${:T}.
-  (This is a shorthand for ${grammar-case: $(T)^n} used where ${:n} is not relevant.)
+* ${grammar-case: $(T)+} is a non-empty sequence of iterations of ${:T}.
+  (This is a shorthand for ${grammar-case: $(T)^n} where ${:n >= 1}.)
 
 * ${grammar-case: $(T)?} is an optional occurrence of ${:T}.
   (This is a shorthand for ${grammar-case: $(T)^n} where ${:n<=1}.)

From d462f0aa0ee07540d9815ac2f322f1b0cd46d9f3 Mon Sep 17 00:00:00 2001
From: Andreas Rossberg 
Date: Tue, 7 Apr 2026 09:42:07 +0200
Subject: [PATCH 120/235] [interpreter] A few tweaks to README

---
 interpreter/README.md | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/interpreter/README.md b/interpreter/README.md
index d631791bf..2ede808da 100644
--- a/interpreter/README.md
+++ b/interpreter/README.md
@@ -431,14 +431,14 @@ script: *
 
 cmd:
                                      ;; define, validate, and possibly instantiate module
-  
+                                   ;; instantiate module
   ( register  ? )              ;; register module instance for imports
                                      ;; perform action and print results
                                   ;; assert result of an action
                                        ;; meta command
 
 module:
-  ...
+  ...                                        ;; ordinary module syntax (see above)
   ( module ? binary * )        ;; module in binary format (may be malformed)
   ( module ? quote * )         ;; module quoted in text (may be malformed)
   ( module definition ? binary ... )   ;; uninstantiated module
@@ -485,7 +485,7 @@ num_pat:
 meta:
   ( script ?